From 243411916b218395bf989f5a02e3afe966cf129c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 3 Jun 2024 14:50:59 +0200 Subject: [PATCH 001/252] Bump v14.1.0.1 --- CHANGELOG.md | 20 +++++++++++--- FIRMWARE.md | 2 +- README.md | 2 +- RELEASENOTES.md | 46 +++---------------------------- tasmota/include/tasmota_version.h | 2 +- 5 files changed, 23 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e527fcfac..26c4ae1f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,26 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [14.0.0.4] +## [14.1.0.1] ### Added -- SML FastExit for binary SML parsing (#21497) ### Breaking Changed +### Changed + +### Fixed + +### Removed + +## [Released] + +## [14.1.0] 20240603 +- Release Rachel + +## [14.0.0.4] 20240603 +### Added +- SML FastExit for binary SML parsing (#21497) + ### Changed - GPIOViewer from v1.5.3 to v1.5.4 (No functional change) - TCP bridge increased baudrate selection (#21528) @@ -76,8 +90,6 @@ All notable changes to this project will be documented in this file. ### Removed - Support of old insecure fingerprint algorithm. Deprecated since v8.4.0 (#21417) -## [Released] - ## [14.0.0] 20240515 - Release Rodney diff --git a/FIRMWARE.md b/FIRMWARE.md index 3e3bc594d..91fa97923 100644 --- a/FIRMWARE.md +++ b/FIRMWARE.md @@ -18,7 +18,7 @@ See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/tasmota/C ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v14.0.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v14.1.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22) [![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22) diff --git a/README.md b/README.md index 746d7c4f2..b33390c3b 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Firmware binaries can be downloaded from http://ota.tasmota.com/tasmota/release/ ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v14.0.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v14.1.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml) [![Build_development](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 030fa8183..01031a582 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -40,7 +40,7 @@ This release will be supported from ESP32/Arduino library Core version **3.0.0** Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 3.0.0 have been removed. -### Known issues with v14.0.0 +### Known issues with v14.1.0 Due to the change from ESP32 Arduino Core2/IDF4 to Arduino Core3/IDF5 not all functionality has been restored. The following features are known not to work on ESP32: - Wifi Range Extender [#21200](https://github.com/arendst/Tasmota/issues/21200) @@ -80,7 +80,7 @@ Latest released binaries can be downloaded from - http://ota.tasmota.com/tasmota/release Historical binaries can be downloaded from -- http://ota.tasmota.com/tasmota/release-14.0.0 +- http://ota.tasmota.com/tasmota/release-14.1.0 The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` @@ -109,7 +109,7 @@ Latest released binaries can be downloaded from - https://ota.tasmota.com/tasmota32/release Historical binaries can be downloaded from -- https://ota.tasmota.com/tasmota32/release-14.0.0 +- https://ota.tasmota.com/tasmota32/release-14.1.0 The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin`` @@ -119,49 +119,11 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v14.0.0.4 +## Changelog v14.1.0.1 ### Added -- Optional command ``WebRun`` (as WebQuery extension) [#21364](https://github.com/arendst/Tasmota/issues/21364) -- Support for Knx dimmer and color [#21434](https://github.com/arendst/Tasmota/issues/21434) -- SML FastExit for binary SML parsing [#21497](https://github.com/arendst/Tasmota/issues/21497) -- Berry add reuse of methods for interface-like code reuse [#21500](https://github.com/arendst/Tasmota/issues/21500) -- Support for Matter 1.3 Water leak detectors [#21456](https://github.com/arendst/Tasmota/issues/21456) - -### Breaking Changed ### Changed -- ESP32 Core3 platform update from 2024.05.11 to 2024.05.13 [#21524](https://github.com/arendst/Tasmota/issues/21524) -- GPIOViewer from v1.5.2 to v1.5.4 -- On universal display remove default backlight power if a PWM channel is used for backlight -- TCP bridge increased baudrate selection [#21528](https://github.com/arendst/Tasmota/issues/21528) -- Support W5500 SPI ethernet using four SPI GPIOs only without IRQ and RESET -- ESP32 compiler option from `target-align` to `no-target-align` [#21407](https://github.com/arendst/Tasmota/issues/21407) -- ESP32 I2S audio improvements [#21433](https://github.com/arendst/Tasmota/issues/21433) -- Berry binary compiled with gcc [#21426](https://github.com/arendst/Tasmota/issues/21426) -- Berry allow easy solidification of external Berry [#21430](https://github.com/arendst/Tasmota/issues/21430) -- Berry change internal storage of parent class for methods [#21490](https://github.com/arendst/Tasmota/issues/21490) -- Berry coc parser keeps order of variables [#21542](https://github.com/arendst/Tasmota/issues/21542) ### Fixed -- Domoticz re-subscribe on MQTT reconnect. Regression from v13.4.0.3 [#21281](https://github.com/arendst/Tasmota/issues/21281) -- Watchdog restart or freeze if ``displaytext`` is more than 128 characters [#21401](https://github.com/arendst/Tasmota/issues/21401) -- Wrong timeout in `WebQuery` and `webclient` since Core3 [#21442](https://github.com/arendst/Tasmota/issues/21442) -- uDisplay Parallel display on Core3 [#21529](https://github.com/arendst/Tasmota/issues/21529) -- UfsServe watchdog on large folder [#21486](https://github.com/arendst/Tasmota/issues/21486) -- SML compile error when median-filter is disabled [#21495](https://github.com/arendst/Tasmota/issues/21495) -- Hydreon RG15 malformed JSON string [#21508](https://github.com/arendst/Tasmota/issues/21508) -- Telegram TLS fingerprint, remove CA validation [#21514](https://github.com/arendst/Tasmota/issues/21514) -- Zigbee crash when removing `ZbName` [#21449](https://github.com/arendst/Tasmota/issues/21449) -- Avoid connection errors when switching to safeboot to upload OTA firmware [#21428](https://github.com/arendst/Tasmota/issues/21428) -- ESP32 slow response when using UDP as in emulation [#21470](https://github.com/arendst/Tasmota/issues/21470) -- ESP32 BLE fix scanning [#21451](https://github.com/arendst/Tasmota/issues/21451) -- ESP32 I2S multiple fixes [#21511](https://github.com/arendst/Tasmota/issues/21511) -- I2S APLL not supported on all SOCs [#21483](https://github.com/arendst/Tasmota/issues/21483) -- Webradio crash with invalid url [#21446](https://github.com/arendst/Tasmota/issues/21446) -- Berry Leds matrix alternate more and error about 'bri' attribute [#21431](https://github.com/arendst/Tasmota/issues/21431) -- LVGL exception when using tjpegd [#21544](https://github.com/arendst/Tasmota/issues/21544) -- Matter auto-fix IPv6 link-local zone id when network reconnects [#21494](https://github.com/arendst/Tasmota/issues/21494) ### Removed -- Support of old insecure fingerprint algorithm. Deprecated since v8.4.0 [#21417](https://github.com/arendst/Tasmota/issues/21417) -- Deprecated code from drivers, `USE_TTGO_WATCH` and `USE_M5STACK_CORE2` [#21533](https://github.com/arendst/Tasmota/issues/21533) diff --git a/tasmota/include/tasmota_version.h b/tasmota/include/tasmota_version.h index a46bf1d7d..31371855c 100644 --- a/tasmota/include/tasmota_version.h +++ b/tasmota/include/tasmota_version.h @@ -22,6 +22,6 @@ #define TASMOTA_SHA_SHORT // Filled by Github sed -const uint32_t TASMOTA_VERSION = 0x0E000004; // 14.0.0.4 +const uint32_t TASMOTA_VERSION = 0x0E010001; // 14.1.0.1 #endif // _TASMOTA_VERSION_H_ From a51c511d526acd4a1b78c71ec1502ba5f3702fdf Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 3 Jun 2024 21:14:44 +0200 Subject: [PATCH 002/252] Berry bytes solidification (#21558) * Berry prepare for bytes() solidification * Berry solidification of bytes objects * Berry solidification of `bytes` instances --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_byteslib.c | 105 ++++++++++++-------- lib/libesp32/berry/src/be_byteslib.h | 44 ++++++++ lib/libesp32/berry/src/be_class.h | 10 ++ lib/libesp32/berry/src/be_constobj.h | 45 +++++++++ lib/libesp32/berry/src/be_object.h | 1 + lib/libesp32/berry/src/be_solidifylib.c | 32 ++++-- lib/libesp32/berry/tools/coc/bytes_build.py | 41 ++++++++ lib/libesp32/berry/tools/coc/coc | 7 ++ lib/libesp32/berry/tools/coc/coc_parser.py | 14 +++ 10 files changed, 250 insertions(+), 50 deletions(-) create mode 100644 lib/libesp32/berry/src/be_byteslib.h create mode 100644 lib/libesp32/berry/tools/coc/bytes_build.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 26c4ae1f9..3bd18f5d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All notable changes to this project will be documented in this file. ## [14.1.0.1] ### Added +- Berry solidification of `bytes` instances ### Breaking Changed diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c index 1789dca94..5c50a36ba 100644 --- a/lib/libesp32/berry/src/be_byteslib.c +++ b/lib/libesp32/berry/src/be_byteslib.c @@ -16,28 +16,7 @@ #include "be_constobj.h" #include #include - -#define BYTES_DEFAULT_SIZE 28 // default pre-reserved size for buffer (keep 4 bytes for len/size) -#define BYTES_OVERHEAD 4 // bytes overhead to be added when allocating (used to store len and size) -#define BYTES_HEADROOM 8 // keep a natural headroom of 8 bytes when resizing - -#define BYTES_SIZE_FIXED -1 // if size is -1, then the bytes object cannot be reized -#define BYTES_SIZE_MAPPED -2 // if size is -2, then the bytes object is mapped to a fixed memory region, i.e. cannot be resized - -#define BYTES_RESIZE_ERROR "attribute_error" -#define BYTES_RESIZE_MESSAGE "bytes object size if fixed and cannot be resized" -/* be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); */ - -typedef struct buf_impl { - int32_t size; // size in bytes of the buffer - int32_t len; // current size of the data in buffer. Invariant: len <= size - uint8_t *bufptr; // the actual data - int32_t prev_size; // previous value read from the instance - int32_t prev_len; // previous value read from the instance - uint8_t *prev_bufptr; - bbool fixed; // is size fixed? (actually encoded as negative size) - bbool mapped; -} buf_impl; +#include "be_byteslib.h" /******************************************************************** ** Base64 lib from https://github.com/Densaugeo/base64_arduino @@ -481,7 +460,16 @@ static void buf_add_hex(buf_impl* attr, const char *hex, size_t len) ********************************************************************/ /* if the bufptr is null, don't try to dereference and raise an exception instead */ -static void check_ptr(bvm *vm, buf_impl* attr) { +static void check_ptr(bvm *vm, const buf_impl* attr) { + if (!attr->bufptr) { + be_raise(vm, "value_error", "operation not allowed on pointer"); + } +} + +static void check_ptr_modifiable(bvm *vm, const buf_impl* attr) { + if (attr->solidified) { + be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE); + } if (!attr->bufptr) { be_raise(vm, "value_error", "operation not allowed on pointer"); } @@ -504,10 +492,14 @@ buf_impl m_read_attributes(bvm *vm, int idx) int32_t signed_size = be_toint(vm, -1); attr.fixed = bfalse; attr.mapped = bfalse; + attr.solidified = bfalse; if (signed_size < 0) { if (signed_size == BYTES_SIZE_MAPPED) { attr.mapped = btrue; } + if (signed_size == BYTES_SIZE_SOLIDIFIED) { + attr.solidified = btrue; + } signed_size = attr.len; attr.fixed = btrue; } @@ -516,10 +508,18 @@ buf_impl m_read_attributes(bvm *vm, int idx) return attr; } +static void m_assert_not_readlonly(bvm *vm, const buf_impl* attr) +{ + if (attr->solidified) { + be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE); + } +} + /* Write back attributes to the bytes instance, only if values changed after loading */ /* stack item 1 must contain the instance */ void m_write_attributes(bvm *vm, int rel_idx, const buf_impl * attr) { + m_assert_not_readlonly(vm, attr); int idx = be_absindex(vm, rel_idx); if (attr->bufptr != attr->prev_bufptr) { be_pushcomptr(vm, attr->bufptr); @@ -549,6 +549,7 @@ void m_write_attributes(bvm *vm, int rel_idx, const buf_impl * attr) // buf_impl * bytes_realloc(bvm *vm, buf_impl *oldbuf, int32_t size) void bytes_realloc(bvm *vm, buf_impl * attr, int32_t size) { + m_assert_not_readlonly(vm, attr); if (!attr->fixed && size < 4) { size = 4; } if (size > vm->bytesmaxsize) { size = vm->bytesmaxsize; } size_t oldsize = attr->bufptr ? attr->size : 0; @@ -590,7 +591,7 @@ static void bytes_new_object(bvm *vm, size_t size) static int m_init(bvm *vm) { int argc = be_top(vm); - buf_impl attr = { 0, 0, NULL, 0, -1, NULL, bfalse, bfalse }; /* initialize prev_values to invalid to force a write at the end */ + buf_impl attr = { 0, 0, NULL, 0, -1, NULL, bfalse, bfalse, bfalse }; /* initialize prev_values to invalid to force a write at the end */ /* size cannot be 0, len cannot be negative */ const char * hex_in = NULL; @@ -713,7 +714,7 @@ buf_impl bytes_check_data(bvm *vm, size_t add_size) { return attr; } -static size_t tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) { +size_t be_bytes_tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) { static const char * hex = "0123456789ABCDEF"; const uint8_t * pin = in; char * pout = out; @@ -745,7 +746,7 @@ static int m_tostring(bvm *vm) char * hex_out = be_pushbuffer(vm, hex_len); size_t l = be_strlcpy(hex_out, "bytes('", hex_len); - l += tohex(&hex_out[l], hex_len - l, attr.bufptr, len); + l += be_bytes_tohex(&hex_out[l], hex_len - l, attr.bufptr, len); if (truncated) { l += be_strlcpy(&hex_out[l], "...", hex_len - l); } @@ -767,7 +768,7 @@ static int m_tohex(bvm *vm) size_t hex_len = len * 2 + 1; char * hex_out = be_pushbuffer(vm, hex_len); - size_t l = tohex(hex_out, hex_len, attr.bufptr, len); + size_t l = be_bytes_tohex(hex_out, hex_len, attr.bufptr, len); be_pushnstring(vm, hex_out, l); /* make escape string from buffer */ be_remove(vm, -2); /* remove buffer */ @@ -795,7 +796,7 @@ static int m_fromstring(bvm *vm) const char *s = be_tostring(vm, 2); int32_t len = be_strlen(vm, 2); /* calling be_strlen to support null chars in string */ buf_impl attr = bytes_check_data(vm, 0); - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (attr.fixed && attr.len != len) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } @@ -823,7 +824,7 @@ static int m_add(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } if (argc >= 2 && be_isint(vm, 2)) { int32_t v = be_toint(vm, 2); @@ -949,7 +950,7 @@ static int m_set(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) { int32_t idx = be_toint(vm, 2); int32_t value = be_toint(vm, 3); @@ -985,7 +986,7 @@ static int m_setfloat(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (argc >=3 && be_isint(vm, 2) && (be_isint(vm, 3) || be_isreal(vm, 3))) { int32_t idx = be_toint(vm, 2); float val_f = (float) be_toreal(vm, 3); @@ -1011,7 +1012,7 @@ static int m_addfloat(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } if (argc >=2 && (be_isint(vm, 2) || be_isreal(vm, 2))) { float val_f = (float) be_toreal(vm, 2); @@ -1040,7 +1041,7 @@ static int m_setbytes(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (argc >=3 && be_isint(vm, 2) && (be_isbytes(vm, 3))) { int32_t idx = be_toint(vm, 2); size_t from_len_total; @@ -1084,7 +1085,7 @@ static int m_reverse(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); int32_t idx = 0; /* start from index 0 */ int32_t len = attr.len; /* entire len */ @@ -1135,7 +1136,7 @@ static int m_setitem(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) { int index = be_toint(vm, 2); int val = be_toint(vm, 3); @@ -1153,7 +1154,7 @@ static int m_item(bvm *vm) { int argc = be_top(vm); buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (argc >=2 && be_isint(vm, 2)) { /* single byte */ int index = be_toint(vm,2); if (index < 0) { @@ -1215,6 +1216,7 @@ static int m_resize(bvm *vm) { int argc = be_top(vm); buf_impl attr = m_read_attributes(vm, 1); + check_ptr_modifiable(vm, &attr); if (argc <= 1 || !be_isint(vm, 2)) { be_raise(vm, "type_error", "size must be of type 'int'"); @@ -1237,6 +1239,7 @@ static int m_resize(bvm *vm) static int m_clear(bvm *vm) { buf_impl attr = m_read_attributes(vm, 1); + check_ptr_modifiable(vm, &attr); if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } attr.len = 0; m_write_attributes(vm, 1, &attr); /* update instance */ @@ -1293,7 +1296,7 @@ static int m_connect(bvm *vm) { int argc = be_top(vm); buf_impl attr = m_read_attributes(vm, 1); - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } if (argc >= 2 && (be_isbytes(vm, 2) || be_isint(vm, 2) || be_isstring(vm, 2))) { if (be_isint(vm, 2)) { @@ -1390,7 +1393,7 @@ static int m_fromb64(bvm *vm) int32_t bin_len = decode_base64_length((unsigned char*)s); /* do a first pass to calculate the buffer size */ buf_impl attr = m_read_attributes(vm, 1); - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (attr.fixed && attr.len != bin_len) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } @@ -1429,7 +1432,7 @@ static int m_fromhex(bvm *vm) int32_t bin_len = (s_len - from) / 2; buf_impl attr = m_read_attributes(vm, 1); - check_ptr(vm, &attr); + check_ptr_modifiable(vm, &attr); if (attr.fixed && attr.len != bin_len) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } @@ -1483,6 +1486,18 @@ static int m_is_mapped(bvm *vm) be_return(vm); } +/* + * Returns `btrue` if the buffer is solidified and read only + * + * `isreadonly() -> bool` + */ +static int m_is_readonly(bvm *vm) +{ + buf_impl attr = m_read_attributes(vm, 1); + be_pushbool(vm, attr.solidified); + be_return(vm); +} + /* * Change the pointer to a mapped buffer. * @@ -1497,6 +1512,9 @@ static int m_change_buffer(bvm *vm) int argc = be_top(vm); if (argc >= 2 && be_iscomptr(vm, 2)) { buf_impl attr = m_read_attributes(vm, 1); + if (attr.solidified) { + be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE); + } if (!attr.mapped) { be_raise(vm, "type_error", "bytes() object must be mapped"); } @@ -1764,11 +1782,12 @@ void be_load_byteslib(bvm *vm) { static const bnfuncinfo members[] = { { ".p", NULL }, - { ".size", NULL }, { ".len", NULL }, + { ".size", NULL }, { "_buffer", m_buffer }, { "_change_buffer", m_change_buffer }, { "ismapped", m_is_mapped }, + { "isreadonly", m_is_readonly }, { "init", m_init }, { "deinit", m_deinit }, { "tostring", m_tostring }, @@ -1810,14 +1829,18 @@ void be_load_byteslib(bvm *vm) be_regclass(vm, "bytes", members); } #else + +#include "../generate/be_const_bytes_def.h" + /* @const_object_info_begin class be_class_bytes (scope: global, name: bytes) { .p, var - .size, var .len, var + .size, var _buffer, func(m_buffer) _change_buffer, func(m_change_buffer) ismapped, func(m_is_mapped) + isreadonly, func(m_is_readonly) init, func(m_init) deinit, func(m_deinit) tostring, func(m_tostring) diff --git a/lib/libesp32/berry/src/be_byteslib.h b/lib/libesp32/berry/src/be_byteslib.h new file mode 100644 index 000000000..bcf98d125 --- /dev/null +++ b/lib/libesp32/berry/src/be_byteslib.h @@ -0,0 +1,44 @@ +/******************************************************************** +** Copyright (c) 2018-2020 Guan Wenliang - Stephan Hadinger +** This file is part of the Berry default interpreter. +** skiars@qq.com, https://github.com/Skiars/berry +** See Copyright Notice in the LICENSE file or at +** https://github.com/Skiars/berry/blob/master/LICENSE +********************************************************************/ +#ifndef __BE_BYTESLIB_H +#define __BE_BYTESLIB_H + +#include "be_object.h" + +#define BYTES_DEFAULT_SIZE 28 /* default pre-reserved size for buffer (keep 4 bytes for len/size) */ +#define BYTES_OVERHEAD 4 /* bytes overhead to be added when allocating (used to store len and size) */ +#define BYTES_HEADROOM 8 /* keep a natural headroom of 8 bytes when resizing */ + +#define BYTES_SIZE_FIXED -1 /* if size is -1, then the bytes object cannot be reized */ +#define BYTES_SIZE_MAPPED -2 /* if size is -2, then the bytes object is mapped to a fixed memory region, i.e. cannot be resized */ +#define BYTES_SIZE_SOLIDIFIED -3 /* is size is -3, then the bytes object is solidified and cannot be resized nor modified */ + +#define BYTES_RESIZE_ERROR "attribute_error" +#define BYTES_RESIZE_MESSAGE "bytes object size if fixed and cannot be resized" +#define BYTES_READ_ONLY_MESSAGE "bytes object is read only" +/* be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); */ + +typedef struct buf_impl { + int32_t size; // size in bytes of the buffer + int32_t len; // current size of the data in buffer. Invariant: len <= size + uint8_t *bufptr; // the actual data + int32_t prev_size; // previous value read from the instance + int32_t prev_len; // previous value read from the instance + uint8_t *prev_bufptr; + bbool fixed; // is size fixed? (actually encoded as negative size) + bbool mapped; + bbool solidified; +} buf_impl; + +size_t be_bytes_tohex(char * out, size_t outsz, const uint8_t * in, size_t insz); + +#if BE_USE_PRECOMPILED_OBJECT +#include "../generate/be_const_bytes.h" +#endif + +#endif diff --git a/lib/libesp32/berry/src/be_class.h b/lib/libesp32/berry/src/be_class.h index f80ca8799..12f317b5f 100644 --- a/lib/libesp32/berry/src/be_class.h +++ b/lib/libesp32/berry/src/be_class.h @@ -49,6 +49,16 @@ struct binstance { bvalue members[1]; /* members variable data field */ }; +/* special structure accepting 3 instance variables used only for bytes() solidification */ +struct binstance_arg3 { + bcommon_header; + struct binstance *super; + struct binstance *sub; + bclass *_class; + bgcobject *gray; /* for gc gray list */ + bvalue members[3]; /* members variable data field */ +}; + bclass* be_newclass(bvm *vm, bstring *name, bclass *super); void be_class_compress(bvm *vm, bclass *c); int be_class_attribute(bvm *vm, bclass *c, bstring *attr); diff --git a/lib/libesp32/berry/src/be_constobj.h b/lib/libesp32/berry/src/be_constobj.h index 34245050a..f478b3150 100644 --- a/lib/libesp32/berry/src/be_constobj.h +++ b/lib/libesp32/berry/src/be_constobj.h @@ -19,6 +19,7 @@ extern "C" { #include "be_class.h" #include "be_string.h" #include "be_module.h" +#include "be_byteslib.h" #ifndef __cplusplus @@ -27,6 +28,25 @@ extern "C" { .type = (_t), \ .marked = GC_CONST +#define be_define_const_bytes(_name, ...) \ + const uint8_t be_const_bin_##_name[] = { __VA_ARGS__ } + +#define be_const_bytes_instance(_bytes) { \ + .v.c = ( \ + & (const binstance_arg3) { \ + be_const_header(BE_INSTANCE), \ + .super = NULL, \ + .sub = NULL, \ + ._class = (bclass*) &be_class_bytes, \ + .members = { \ + be_const_comptr(&be_const_bin_##_bytes), \ + be_const_int(sizeof(#_bytes) / 2), \ + be_const_int(BYTES_SIZE_SOLIDIFIED) \ + } \ + }), \ + .type = BE_INSTANCE \ +} + #define be_define_const_str_weak(_name, _s, _len) \ const bcstring be_const_str_##_name = { \ .next = NULL, \ @@ -232,6 +252,27 @@ const bntvmodule_t be_native_module(_module) = { \ .members = _members \ } +#define be_nested_simple_instance_1_arg(_class_ptr, arg0) \ + & (const binstance) { \ + be_const_header(BE_INSTANCE), \ + .super = NULL, \ + .sub = NULL, \ + ._class = (bclass*) _class_ptr, \ + .members = { arg0 } \ + } + + +/* only instances with no super and no sub instance are supported */ +/* primarily for `list` and `map`*/ +#define be_nested_simple_instance_3_args(_class_ptr, arg0, arg1, arg2) \ + & (const binstance_arg3) { \ + be_const_header(BE_INSTANCE), \ + .super = NULL, \ + .sub = NULL, \ + ._class = (bclass*) _class_ptr, \ + .members = { arg0, arg1, arg2 } \ + } + #define be_nested_map(_size, _slots) \ & (const bmap) { \ be_const_header(BE_MAP), \ @@ -298,6 +339,9 @@ const bntvmodule_t be_native_module(_module) = { \ #else +#define be_define_const_bytes(_name, ...) \ + const uint8_t be_const_bin_##_name[] = { __VA_ARGS__ } + #define be_define_const_str_weak(_name, _s, _len) \ const bcstring be_const_str_##_name = { \ NULL, \ @@ -440,6 +484,7 @@ const bntvmodule_t be_native_module_##_module = { \ /* provide pointers to map and list classes for solidified code */ extern const bclass be_class_list; extern const bclass be_class_map; +extern const bclass be_class_bytes; #ifdef __cplusplus } diff --git a/lib/libesp32/berry/src/be_object.h b/lib/libesp32/berry/src/be_object.h index e386cfa25..d479f9b10 100644 --- a/lib/libesp32/berry/src/be_object.h +++ b/lib/libesp32/berry/src/be_object.h @@ -62,6 +62,7 @@ typedef struct bclosure bclosure; typedef struct bntvclos bntvclos; typedef struct bclass bclass; typedef struct binstance binstance; +typedef struct binstance_arg3 binstance_arg3; typedef struct blist blist; typedef struct bmap bmap; typedef struct bupval bupval; diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c index 78d5c6b41..5691dce5e 100644 --- a/lib/libesp32/berry/src/be_solidifylib.c +++ b/lib/libesp32/berry/src/be_solidifylib.c @@ -17,6 +17,7 @@ #include "be_decoder.h" #include "be_sys.h" #include "be_mem.h" +#include "be_byteslib.h" #include #include #include @@ -24,6 +25,7 @@ extern const bclass be_class_list; extern const bclass be_class_map; +extern const bclass be_class_bytes; #if BE_USE_SOLIDIFY_MODULE #include @@ -288,20 +290,32 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, bclass * cl = ins->_class; if (ins->super || ins->sub) { be_raise(vm, "internal_error", "instance must not have a super/sub class"); - } else if (cl->nvar != 1) { - be_raise(vm, "internal_error", "instance must have only one instance variable"); } else if ((cl != &be_class_map && cl != &be_class_list) || 1) { // TODO const char * cl_ptr = ""; if (cl == &be_class_map) { cl_ptr = "map"; } - if (cl == &be_class_list) { cl_ptr = "list"; } - logfmt("be_const_simple_instance(be_nested_simple_instance(&be_class_%s, {\n", cl_ptr); - if (cl == &be_class_map) { - logfmt(" be_const_map( * "); + else if (cl == &be_class_list) { cl_ptr = "list"; } + else if (cl == &be_class_bytes) { cl_ptr = "bytes"; } + else { be_raise(vm, "internal_error", "unsupported class"); } + + if (cl == &be_class_bytes) { + const void * bufptr = var_toobj(&ins->members[0]); + int32_t len = var_toint(&ins->members[1]); + size_t hex_len = len * 2 + 1; + + char * hex_out = be_pushbuffer(vm, hex_len); + be_bytes_tohex(hex_out, hex_len, bufptr, len); + logfmt("be_const_bytes_instance(%s)", hex_out); + be_pop(vm, 1); } else { - logfmt(" be_const_list( * "); + logfmt("be_const_simple_instance(be_nested_simple_instance(&be_class_%s, {\n", cl_ptr); + if (cl == &be_class_map) { + logfmt(" be_const_map( * "); + } else { + logfmt(" be_const_list( * "); + } + m_solidify_bvalue(vm, str_literal, &ins->members[0], prefixname, key, fout); + logfmt(" ) } ))"); } - m_solidify_bvalue(vm, str_literal, &ins->members[0], prefixname, key, fout); - logfmt(" ) } ))"); } } break; diff --git a/lib/libesp32/berry/tools/coc/bytes_build.py b/lib/libesp32/berry/tools/coc/bytes_build.py new file mode 100644 index 000000000..ab266f0af --- /dev/null +++ b/lib/libesp32/berry/tools/coc/bytes_build.py @@ -0,0 +1,41 @@ +import json + +class bytes_build: + def __init__(self, map): + self.map = map.copy() + + def build(self, path): + prefix = path + "/be_const_bytes" + self.writefile(prefix + "_def.h", self.build_bytes_def()) + self.writefile(prefix + ".h", self.build_bytes_ext()) + + def writefile(self, filename, text): + buf = "" + try: + with open(filename) as f: + buf = f.read() + except FileNotFoundError: + pass + if buf != text: + with open(filename, "w") as f: + f.write(text) + + def build_bytes_def(self): + ostr = "" + ostr += "/* binary arrays */\n" + ostr += "be_define_const_bytes(,);\n" + for k in self.map: + ostr += "be_define_const_bytes(" + ostr += k + ", " + ", ".join( [ "0x" + k[i:i+2] for i in range(0, len(k), 2)] ) + ostr += ");\n" + + return ostr + + def build_bytes_ext(self): + ostr = "" + ostr += "/* extern binary arrays */\n" + ostr += "extern const uint8_t be_const_bin_[];\n" + for k in self.map: + ostr += "extern const uint8_t be_const_bin_" + k + "[];\n" + + return ostr \ No newline at end of file diff --git a/lib/libesp32/berry/tools/coc/coc b/lib/libesp32/berry/tools/coc/coc index b80d0ac08..ffc833433 100755 --- a/lib/libesp32/berry/tools/coc/coc +++ b/lib/libesp32/berry/tools/coc/coc @@ -4,6 +4,7 @@ import re import os from coc_parser import * from str_build import * +from bytes_build import * from block_builder import * from macro_table import * @@ -20,6 +21,7 @@ class builder: self.strmap = {} self.strmap_weak = {} self.strmap_long = {} + self.bytesmap = {} self.macro = macro_table() for path in self.config: @@ -30,6 +32,9 @@ class builder: sb = str_build(self.strmap, self.strmap_weak, self.strmap_long) sb.build(self.output) + + sbytes = bytes_build(self.bytesmap) + sbytes.build(self.output) def parse_file(self, filename): if re.search(r"\.(h|c|cc|cpp)$", filename): @@ -45,6 +50,8 @@ class builder: self.strmap_weak[s] = 0 for s in parser.strtab_long: self.strmap_long[s] = 0 + for s in parser.bintab: + self.bytesmap[s] = 0 for obj in parser.objects: builder = block_builder(obj, self.macro) for s in builder.strtab: diff --git a/lib/libesp32/berry/tools/coc/coc_parser.py b/lib/libesp32/berry/tools/coc/coc_parser.py index 68c81a2ba..7319dc337 100644 --- a/lib/libesp32/berry/tools/coc/coc_parser.py +++ b/lib/libesp32/berry/tools/coc/coc_parser.py @@ -23,10 +23,12 @@ class coc_parser: self.strtab = set() self.strtab_weak = set() self.strtab_long = set() + self.bintab = set() self.text = text self.parsers = { "@const_object_info_begin": self.parse_object, "be_const_str_": self.parse_string, + "be_const_bytes_instance(": self.parse_bin, "be_const_key(": self.parse_string, "be_nested_str(": self.parse_string, "be_const_key_weak(": self.parse_string_weak, @@ -77,6 +79,7 @@ class coc_parser: def parse_word(self): self.skip_space() r = re.match(r"\w+", self.text) + if not r: return None self.text = self.text[r.end(0):] return r[0] @@ -120,6 +123,7 @@ class coc_parser: def parse_string(self): if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify ident = self.parse_word() + if not ident: return literal = unescape_operator(ident) if not literal in self.strtab: self.strtab.add(literal) @@ -128,6 +132,7 @@ class coc_parser: def parse_string_weak(self): if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify ident = self.parse_word() + if not ident: return literal = unescape_operator(ident) if not literal in self.strtab: self.strtab_weak.add(literal) @@ -136,10 +141,19 @@ class coc_parser: def parse_string_long(self): if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify ident = self.parse_word() + if not ident: return literal = unescape_operator(ident) if not literal in self.strtab: self.strtab_long.add(literal) + def parse_bin(self): + ident = self.parse_word() + if not ident: return + if not re.fullmatch(r"[0-9A-Za-z]*", ident): return + if not ident in self.bintab: + self.bintab.add(ident) + # print(f"str '{ident}' -> {literal}") + ################################################################################# # Parse a block of definition like module, class... ################################################################################# From 4f732477dd7f082ec187b673744021c5cb352e77 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 3 Jun 2024 21:46:58 +0200 Subject: [PATCH 003/252] Matter support for Air Quality sensors (#21559) --- CHANGELOG.md | 1 + .../berry_matter/src/be_matter_module.c | 3 + .../berry_matter/src/embedded/Matter_IM.be | 2 +- .../src/embedded/Matter_Plugin_0.be | 30 +- .../src/embedded/Matter_Plugin_1_Device.be | 37 + .../src/embedded/Matter_Plugin_2_Light1.be | 8 +- .../src/embedded/Matter_Plugin_2_OnOff.be | 6 +- .../src/embedded/Matter_Plugin_2_Sensor.be | 6 +- .../Matter_Plugin_2_Sensor_Air_Quality.be | 219 ++ .../Matter_Plugin_2_Sensor_Contact.be | 13 +- .../Matter_Plugin_2_Sensor_Occupancy.be | 13 +- ...tter_Plugin_3_Bridge_Sensor_Air_Quality.be | 112 + .../src/embedded/Matter_Plugin_3_Light2.be | 8 +- .../src/embedded/Matter_Plugin_3_Light3.be | 12 +- .../Matter_Plugin_4_Bridge_Sensor_Flow.be | 23 +- .../Matter_Plugin_4_Bridge_Sensor_Humidity.be | 23 +- ...tter_Plugin_4_Bridge_Sensor_Illuminance.be | 23 +- .../Matter_Plugin_4_Bridge_Sensor_Pressure.be | 23 +- .../Matter_Plugin_4_Bridge_Sensor_Temp.be | 23 +- .../embedded/Matter_Plugin_5_Bridge_Light2.be | 31 +- .../embedded/Matter_Plugin_5_Bridge_Light3.be | 40 +- ...Matter_Plugin_9_Virt_Sensor_Air_Quality.be | 34 + .../berry_matter/src/embedded/Matter_TLV.be | 14 + .../berry_matter/src/embedded/Matter_UI.be | 2 + .../src/solidify/solidified_Matter_IM.h | 52 +- .../src/solidify/solidified_Matter_Plugin_0.h | 1516 ++++++------ .../solidified_Matter_Plugin_1_Device.h | 118 +- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 816 +++++++ ...olidified_Matter_Plugin_2_Sensor_Contact.h | 58 +- ...idified_Matter_Plugin_2_Sensor_Occupancy.h | 58 +- ...atter_Plugin_3_Bridge_Sensor_Air_Quality.h | 404 ++++ .../solidified_Matter_Plugin_3_Light2.h | 39 +- .../solidified_Matter_Plugin_3_Light3.h | 27 +- ...ified_Matter_Plugin_4_Bridge_Sensor_Flow.h | 92 +- ...d_Matter_Plugin_4_Bridge_Sensor_Humidity.h | 92 +- ...atter_Plugin_4_Bridge_Sensor_Illuminance.h | 92 +- ...d_Matter_Plugin_4_Bridge_Sensor_Pressure.h | 92 +- ...ified_Matter_Plugin_4_Bridge_Sensor_Temp.h | 90 +- ...solidified_Matter_Plugin_5_Bridge_Light2.h | 125 +- ...solidified_Matter_Plugin_5_Bridge_Light3.h | 150 +- ..._Matter_Plugin_9_Virt_Sensor_Air_Quality.h | 27 + .../src/solidify/solidified_Matter_TLV.h | 2075 +++++++++-------- .../src/solidify/solidified_Matter_UI.h | 2 +- .../solidify/solidified_Matter_zz_Device.h | 87 +- 44 files changed, 3849 insertions(+), 2869 deletions(-) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Air_Quality.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bd18f5d1..7cbe99336 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [14.1.0.1] ### Added - Berry solidification of `bytes` instances +- Matter support for Air Quality sensors ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 3d7233f48..c87cb24ee 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -229,6 +229,8 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_1_Device.h" #include "solidify/solidified_Matter_Plugin_2_OnOff.h" #include "solidify/solidified_Matter_Plugin_9_Virt_OnOff.h" +#include "solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h" +#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h" #include "solidify/solidified_Matter_Plugin_3_Light0.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Light0.h" #include "solidify/solidified_Matter_Plugin_2_Light1.h" @@ -271,6 +273,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h" #include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h" +#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h" #include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h" #include "solidify/solidified_Matter_Plugin_z_All.h" #include "solidify/solidified_Matter_zz_Device.h" diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 1e4ca0a78..d0977b242 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -830,7 +830,7 @@ class Matter_IM tasmota.log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s", msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id, query.fabric_filtered), 3) if query.event_requests != nil && size(query.event_requests) > 0 - tasmota.log(f"MTR: >Subscribe (%6i) event_requests_size={size(query.event_requests)}", 3) + tasmota.log(f"MTR: >Subscribe ({msg.session.local_session_id:6i}) event_requests_size={size(query.event_requests)}", 3) end var ret = self._inner_process_read_request(msg.session, query, msg, true #-no_log-#) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index d8315c3ec..8f89f7d3f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -480,10 +480,38 @@ class Matter_Plugin # The map is pre-cleaned and contains only keys declared in # `self.UPDATE_COMMANDS` with the adequate case # (no need to handle case-insensitive) - def update_virtual(payload_json) + def update_virtual(payload) # pass end + ####################################################################### + # _parse_update_virtual: parse a single value out of MtrUpdate JSON + # + # Used internally by `update_virtual` + # + # Args + # payload: the native payload (converted from JSON) from MtrUpdate + # key: key name in the JSON payload to read from, do nothing if key does not exist or content is `null` + # old_val: previous value, used to detect a change or return the value unchanged + # type_func: type enforcer for value, typically `int`, `bool`, `str`, `number`, `real` + # cluster/attribute: in case the value has change, publish a change to cluster/attribute + # + # Returns: + # `old_val` if key does not exist, JSON value is `null`, or value is unchanged + # or new value from JSON (which is the new shadow value) + # + def _parse_update_virtual(payload, key, old_val, type_func, cluster, attribute) + var val = payload.find(key) + if (val != nil) + val = type_func(val) + if (val != old_val) + self.attribute_updated(cluster, attribute) + end + return val + end + return old_val + end + end matter.Plugin = Matter_Plugin diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be index 619646386..94d0145bf 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be @@ -200,9 +200,46 @@ class Matter_Plugin_Device : Matter_Plugin # sensors _stats_json_inner("shadow_contact", "Contact") _stats_json_inner("shadow_occupancy", "Occupancy") + + # air quality + _stats_json_inner("shadow_air_quality", "AirQuality") + _stats_json_inner("shadow_co2", "CO2") + _stats_json_inner("shadow_pm1", "PM1") + _stats_json_inner("shadow_pm2_5", "PM2.5") + _stats_json_inner("shadow_pm10", "PM10") + _stats_json_inner("shadow_tvoc", "TVOC") + # print(ret) return ret end + ####################################################################### + # _parse_sensor_entry: internal helper function + # + # Used internally by `update_virtual` + # + # Args + # payload: the native payload (converted from JSON) from MtrUpdate + # key: key name in the JSON payload to read from, do nothing if key does not exist or content is `null` + # type_func: type enforcer for value, typically `int`, `bool`, `str`, `number`, `real` + # old_val: previous value, used to detect a change or return the value unchanged + # cluster/attribute: in case the value has change, publish a change to cluster/attribute + # + # Returns: + # `old_val` if key does not exist, JSON value is `null`, or value is unchanged + # or new value from JSON (which is the new shadow value) + # + def _parse_sensor_entry(payload, key, old_val, type_func, cluster, attribute) + var val = payload.find(key) + if (val != nil) + val = type_func(val) + if val != old_val + self.attribute_updated(cluster, attribute) # CurrentPositionTiltPercent100ths + end + return val + end + return old_val + end + end matter.Plugin_Device = Matter_Plugin_Device diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be index ab6de67fe..2b0e42255 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be @@ -230,16 +230,16 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device # update_virtual # # Update internal state for virtual devices - def update_virtual(payload_json) - var val_onoff = payload_json.find("Power") - var val_bri = payload_json.find("Bri") + def update_virtual(payload) + var val_onoff = payload.find("Power") + var val_bri = payload.find("Bri") if val_bri != nil self.set_bri(int(val_bri), val_onoff) return # don't call super() because we already handeld 'Power' elif val_onoff != nil self.set_onoff(bool(val_onoff)) end - super(self).update_virtual(payload_json) + super(self).update_virtual(payload) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be index 89f3a5430..0c9dc1edb 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be @@ -149,12 +149,12 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device # update_virtual # # Update internal state for virtual devices - def update_virtual(payload_json) - var val_onoff = payload_json.find("Power") + def update_virtual(payload) + var val_onoff = payload.find("Power") if val_onoff != nil self.set_onoff(bool(val_onoff)) end - super(self).update_virtual(payload_json) + super(self).update_virtual(payload) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be index a702a11af..f2b2e7f3f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be @@ -93,8 +93,8 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device # update_virtual # # Update internal state for virtual devices - def update_virtual(payload_json) - var val = payload_json.find(self.JSON_NAME) + def update_virtual(payload) + var val = payload.find(self.JSON_NAME) if val != nil if type(val) == 'bool' val = int(val) end @@ -103,7 +103,7 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device self.shadow_value = val end end - super(self).update_virtual(payload_json) + super(self).update_virtual(payload) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be new file mode 100644 index 000000000..42af25401 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be @@ -0,0 +1,219 @@ +# +# Matter_Plugin_Sensor_Air_Quality.be - implements the behavior for a Air_Quality sensor +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Sensor_Air_Quality,weak + +class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device + static var TYPE = "airquality" # name of the plug-in in json + static var DISPLAY_NAME = "Air Quality" # display name of the plug-in + static var ARG = "airquality" # additional argument name (or empty if none) + static var ARG_HINT = "Device key (ex: SCD40)" +# static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var JSON_NAME = "AirQuality" # Name of the sensor attribute in JSON payloads + static var UPDATE_TIME = 30000 # update every 30 s + static var UPDATE_COMMANDS = matter.UC_LIST(_class, "AirQuality", "CO2", "PM1", "PM2.5", "PM10", "TVOC", "NO2") + static var CLUSTERS = matter.consolidate_clusters(_class, { + 0x005B: [0], # Air Quality - no writable + 0x040D: [0,1,2,8,9], # Carbon Dioxide Concentration Measurement + 0x042C: [0,1,2,8,9], # PM1 Concentration Measurement + 0x042A: [0,1,2,8,9], # PM2.5 Concentration Measurement + 0x042D: [0,1,2,8,9], # PM10 Concentration Measurement + 0x042E: [0,1,2,8,9], # TVOC Total Volatile Organic Compounds Concentration Measurement + 0x0413: [0,1,2,8,9], # Nitrogen Dioxide Concentration Measurement + }) + + static var TYPES = { 0x002C: 1 } # Air Quality, rev 1 + + var prefix # key prefix in JSON + var shadow_air_quality # Human readable air quality index + # 0: Unknown + # 1: Good + # 4: Poor + # var shadow_pb0_3 + # var shadow_pb0_5 + # var shadow_pb1 + # var shadow_pb2_5 + # var shadow_pb5 + # var shadow_pb10 + var shadow_pm1 + var shadow_pm2_5 + # var shadow_pm5 + var shadow_pm10 + var shadow_co2 + # var shadow_eco2 + var shadow_no2 + var shadow_tvoc + + ############################################################# + # Constructor + def init(device, endpoint, config) + super(self).init(device, endpoint, config) + self.shadow_air_quality = false + end + + ############################################################# + # parse_configuration + # + # Parse configuration map + def parse_configuration(config) + self.prefix = str(config.find(self.ARG)) + end + + + ############################################################# + # parse sensor + # + # parse the output from `ShutterPosition` + # Ex: `{"Shutter1":{"Position":50,"Direction":0,"Target":50,"Tilt":30}}` + def _parse_sensor_entry(v, key, old_val, cluster, attribute) + var val = v.find(key) + if (val != nil) + if val != old_val + self.attribute_updated(cluster, attribute) # CurrentPositionTiltPercent100ths + end + return val + end + return old_val + end + # + def parse_sensors(payload) + var v = payload.find(self.prefix) + if (v != nil) + # CO2 + self.shadow_co2 = self._parse_sensor_entry(v, "CarbonDioxide", self.shadow_co2, number, 0x040D, 0x0000) + # PM1 + self.shadow_pm1 = self._parse_sensor_entry(v, "PM1", self.shadow_pm1, number, 0x042C, 0x0000) + # PM2.5 + self.shadow_pm2_5 = self._parse_sensor_entry(v, "PM2.5", self.shadow_pm2_5, number, 0x042A, 0x0000) + # PM10 + self.shadow_pm10 = self._parse_sensor_entry(v, "PM10", self.shadow_pm10, number, 0x042D, 0x0000) + # TVOC + self.shadow_tvoc = self._parse_sensor_entry(v, "TVOC", self.shadow_tvoc, number, 0x042E, 0x0000) + # NO2 + self.shadow_no2 = self._parse_sensor_entry(v, "NO2", self.shadow_no2, number, 0x0413, 0x0000) + end + super(self).parse_sensors(payload) # parse other shutter values + end + + ############################################################# + # read an attribute + # + def read_attribute(session, ctx, tlv_solo) + var TLV = matter.TLV + var cluster = ctx.cluster + var attribute = ctx.attribute + var ret + + # mutualize code for all values + # Args + # shadow_value: value of the shadow for the type + # unit: unit of value, `0`=PPM if not specified + # + # Returns + # `nil`: no attribute match + # : TLV value + def handle_value(shadow_value, unit) + if (unit == nil) unit = 0 end # default unit is `0` = PPM + if attribute == 0x0000 # ---------- Measured­ Value / float ---------- + if shadow_value != nil + return tlv_solo.set(TLV.FLOAT, shadow_value) + else + return tlv_solo.set(TLV.NULL, nil) + end + elif attribute == 0x0001 # ---------- MinMeasured Value / float ---------- + return tlv_solo.set(TLV.NULL, nil) + elif attribute == 0x0002 # ---------- MaxMeasured Value / float ---------- + return tlv_solo.set(TLV.NULL, nil) + elif attribute == 0x0008 # ---------- MeasurementUnit / u8 ---------- + return tlv_solo.set(TLV.U1, unit) + elif attribute == 0x0009 # ---------- MeasurementMedium / u8 ---------- + return tlv_solo.set(TLV.U1, 0) # 0 = Air + elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- + return tlv_solo.set(TLV.U4, 1) # MEA = NumericMeasurement + end + return nil + end + + # ==================================================================================================== + if cluster == 0x005B # ========== Air Quality ========== + if attribute == 0x0000 # ---------- AirQuality / U8 ---------- + if self.shadow_air_quality != nil + return tlv_solo.set(TLV.U1, self.shadow_air_quality) + else + return tlv_solo.set(TLV.NULL, nil) + end + # elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- + # return tlv_solo.set(TLV.U4, 0) # + end + + # ==================================================================================================== + elif cluster == 0x040D # ========== Carbon Dioxide Concentration Measurement ========== + if (ret := handle_value(self.shadow_co2)) + return ret + end + # ==================================================================================================== + elif cluster == 0x042C # ========== PM1 Concentration Measurement ========== + if (ret := handle_value(self.shadow_pm1)) + return ret + end + # ==================================================================================================== + elif cluster == 0x042A # ========== PM2.5 Concentration Measurement ========== + if (ret := handle_value(self.shadow_pm2_5)) + return ret + end + # ==================================================================================================== + elif cluster == 0x042D # ========== PM10 Concentration Measurement ========== + if (ret := handle_value(self.shadow_pm10)) + return ret + end + # ==================================================================================================== + elif cluster == 0x042E # ========== TVOC ========== + if (ret := handle_value(self.shadow_tvoc)) + return ret + end + # ==================================================================================================== + elif cluster == 0x0413 # ========== NO2 ========== + if (ret := handle_value(self.shadow_no2)) + return ret + end + + end + return super(self).read_attribute(session, ctx, tlv_solo) + end + + ####################################################################### + # update_virtual + # + # Update internal state for virtual devices + def update_virtual(payload) + self.shadow_air_quality = self._parse_update_virtual(payload, "AirQuality", number, self.shadow_air_quality, 0x005B, 0x0000) + self.shadow_co2 = self._parse_update_virtual(payload, "CO2", self.shadow_co2, number, 0x040D, 0x0000) + self.shadow_pm1 = self._parse_update_virtual(payload, "PM1", self.shadow_pm1, number, 0x042C, 0x0000) + self.shadow_pm2_5 = self._parse_update_virtual(payload, "PM2.5", self.shadow_pm2_5, number, 0x042A, 0x0000) + self.shadow_pm10 = self._parse_update_virtual(payload, "PM10", self.shadow_pm10, number, 0x042D, 0x0000) + self.shadow_tvoc = self._parse_update_virtual(payload, "TVOC", self.shadow_tvoc, number, 0x042E, 0x0000) + super(self).update_virtual(payload) + end + +end +matter.Plugin_Sensor_Air_Quality = Matter_Plugin_Sensor_Air_Quality diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be index b7d683039..a6c2f7193 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be @@ -102,16 +102,9 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device # update_virtual # # Update internal state for virtual devices - def update_virtual(payload_json) - var val_onoff = payload_json.find("Contact") - if val_onoff != nil - val_onoff = bool(val_onoff) - if self.shadow_contact != val_onoff - self.attribute_updated(0x0045, 0x0000) - self.shadow_contact = val_onoff - end - end - super(self).update_virtual(payload_json) + def update_virtual(payload) + self.shadow_contact = self._parse_update_virtual(payload, "Contact", self.shadow_contact, bool, 0x0045, 0x0000) + super(self).update_virtual(payload) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be index 2d9f09323..fbc6bf84b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be @@ -106,16 +106,9 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device # update_virtual # # Update internal state for virtual devices - def update_virtual(payload_json) - var val_onoff = payload_json.find("Occupancy") - if val_onoff != nil - val_onoff = bool(val_onoff) - if self.shadow_occupancy != val_onoff - self.attribute_updated(0x0406, 0x0000) - self.shadow_occupancy = val_onoff - end - end - super(self).update_virtual(payload_json) + def update_virtual(payload) + self.val_onoff = self._parse_update_virtual(payload, "Occupancy", self.val_onoff, bool, 0x0406, 0x0000) + super(self).update_virtual(payload) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Air_Quality.be new file mode 100644 index 000000000..b0515eb9e --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Air_Quality.be @@ -0,0 +1,112 @@ +# +# Matter_Plugin_Bridge_Sensor_Contact.be - implements Air Quality Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Air_Quality,weak + +class Matter_Plugin_Bridge_Sensor_Air_Quality : Matter_Plugin_Bridge_HTTP + static var TYPE = "http_airquality" # name of the plug-in in json + static var DISPLAY_NAME = "Air Quality" # display name of the plug-in + static var ARG = "airquality" # additional argument name (or empty if none) + static var ARG_HINT = "Sensor Model" +# static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 5000 # update every 5s + static var UPDATE_CMD = "Status 8" # command to send for updates + + static var CLUSTERS = matter.consolidate_clusters(_class, { + 0x005B: [0], # Air Quality - no writable + 0x040D: [0,1,2,8,9], # Carbon Dioxide Concentration Measurement + 0x042C: [0,1,2,8,9], # PM1 Concentration Measurement + 0x042A: [0,1,2,8,9], # PM2.5 Concentration Measurement + 0x042D: [0,1,2,8,9], # PM10 Concentration Measurement + 0x042E: [0,1,2,8,9], # TVOC Total Volatile Organic Compounds Concentration Measurement + 0x0413: [0,1,2,8,9], # Nitrogen Dioxide Concentration Measurement + }) + + static var TYPES = { 0x002C: 1 } # Air Quality, rev 1 + + var prefix # key prefix in JSON + var shadow_air_quality # Human readable air quality index + # 0: Unknown + # 1: Good + # 4: Poor + # var shadow_pb0_3 + # var shadow_pb0_5 + # var shadow_pb1 + # var shadow_pb2_5 + # var shadow_pb5 + # var shadow_pb10 + var shadow_pm1 + var shadow_pm2_5 + # var shadow_pm5 + var shadow_pm10 + var shadow_co2 + # var shadow_eco2 + var shadow_no2 + var shadow_tvoc + + ############################################################# + # Constructor + def init(device, endpoint, arguments) + super(self).init(device, endpoint, arguments) + self.prefix = str(arguments.find(self.ARG)) + end + + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_update(data, index) + if index == 8 # Status 8 + var values = data.find(self.prefix) + end + end + + ############################################################# + # read an attribute + # + def read_attribute = matter.Plugin_Sensor_Air_Quality.read_attribute + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + def web_values_single(name, val) + if val != nil + import webserver + webserver.content_send(f"{name} {val:i} ") + end + end + + self.web_values_prefix() # display '| ' and name if present + web_values_single("Air", self.shadow_air_quality) + web_values_single("PM1", self.shadow_pm1) + web_values_single("PM2.5", self.shadow_pm2_5) + web_values_single("PM10", self.shadow_pm10) + web_values_single("CO2", self.shadow_co2) + web_values_single("NO2", self.shadow_no2) + web_values_single("TVOC", self.shadow_tvoc) + end + +end +matter.Plugin_Bridge_Sensor_Air_Quality = Matter_Plugin_Bridge_Sensor_Air_Quality diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be index 265514e29..066d0a850 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be @@ -120,7 +120,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== self.update_shadow_lazy() if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- - return tlv_solo.set(TLV.U1, self.shadow_ct) + return tlv_solo.set_or_nil(TLV.U1, self.shadow_ct) # if `nil` it is replaced with TLV.NULL elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds elif attribute == 0x000F # ---------- Options / u1 ---------- @@ -179,12 +179,12 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 # update_virtual # # Update internal state for virtual devices - def update_virtual(payload_json) - var val_ct = int(payload_json.find("CT")) # int or nil + def update_virtual(payload) + var val_ct = int(payload.find("CT")) # int or nil if (val_ct != nil) self.set_ct(val_ct) end - super(self).update_virtual(payload_json) + super(self).update_virtual(payload) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be index a0b77dd21..5f51f2bdc 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be @@ -127,9 +127,9 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- CurrentHue / u1 ---------- - return tlv_solo.set(TLV.U1, self.shadow_hue) + return tlv_solo.set_or_nil(TLV.U1, self.shadow_hue) elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ---------- - return tlv_solo.set(TLV.U1, self.shadow_sat) + return tlv_solo.set_or_nil(TLV.U1, self.shadow_sat) elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- return tlv_solo.set(TLV.U1, 0) elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- @@ -213,13 +213,13 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 # update_virtual # # Update internal state for virtual devices - def update_virtual(payload_json) - var val_hue = int(payload_json.find("Hue")) # int or nil - var val_sat = int(payload_json.find("Sat")) # int or nil + def update_virtual(payload) + var val_hue = int(payload.find("Hue")) # int or nil + var val_sat = int(payload.find("Sat")) # int or nil if (val_hue != nil) || (val_sat != nil) self.set_hue_sat(val_hue, val_sat) end - super(self).update_virtual(payload_json) + super(self).update_virtual(payload) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be index 24f765768..a3e236acd 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be @@ -53,28 +53,7 @@ class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0404 # ========== Flow Measurement 2.1.2 p.127 ========== - if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h. - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- - return tlv_solo.set(TLV.U2, 0) # 0 m3/h - elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- - return tlv_solo.set(TLV.U2, 65534) # 65534 m3/h - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end + static var read_attribute = matter.Plugin_Sensor_Flow.read_attribute ############################################################# # web_values diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be index 05e25437a..d6801ced4 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be @@ -53,28 +53,7 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ========== - if attribute == 0x0000 # ---------- Humidity / u16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.U2, int(self.shadow_value)) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ---------- - return tlv_solo.set(TLV.U2, 500) # 0% - elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ---------- - return tlv_solo.set(TLV.U2, 10000) # 100% - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end + def read_attribute = matter.Plugin_Sensor_Humidity.read_attribute ############################################################# # web_values diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be index 88e0e32ee..df31caec6 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be @@ -60,28 +60,7 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ========== - if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.U2, int(self.shadow_value)) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- - return tlv_solo.set(TLV.U2, 1) # 1 lux - elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- - return tlv_solo.set(TLV.U2, 0xFFFE) - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end + def read_attribute = matter.Plugin_Sensor_Illuminance.read_attribute ############################################################# # web_values diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be index 53b78393a..6b40a7b60 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be @@ -53,28 +53,7 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ========== - if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.I2, int(self.shadow_value)) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- - return tlv_solo.set(TLV.I2, 500) # 500 hPA - elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- - return tlv_solo.set(TLV.I2, 1500) # 1500 hPA - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end + def read_attribute = matter.Plugin_Sensor_Pressure.read_attribute ############################################################# # web_values diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be index 8ee8f73d1..daaaaa9f9 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be @@ -56,28 +56,7 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor ############################################################# # read an attribute # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ========== - if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.I2, self.shadow_value) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ---------- - return tlv_solo.set(TLV.I2, -5000) # -50 °C - elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ---------- - return tlv_solo.set(TLV.I2, 15000) # 150 °C - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end + def read_attribute = matter.Plugin_Sensor_Temp.read_attribute ############################################################# # web_values diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be index 0c8595885..8d5622315 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be @@ -92,36 +92,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1 ############################################################# # read an attribute # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== - self.update_shadow_lazy() - if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- - if self.shadow_ct != nil - return tlv_solo.set(TLV.U1, self.shadow_ct) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- - return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds - elif attribute == 0x000F # ---------- Options / u1 ---------- - return tlv_solo.set(TLV.U1, 0) - elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ---------- - return tlv_solo.set(TLV.U1, self.ct_min) - elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ---------- - return tlv_solo.set(TLV.U1, self.ct_max) - - elif attribute == 0x400A # ---------- ColorCapabilities / map32 ---------- - return tlv_solo.set(TLV.U4, 0x10) # CT - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end + def read_attribute = matter.Plugin_Light2.read_attribute ############################################################# # Invoke a command diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be index 5b4f0ab30..950048118 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be @@ -92,45 +92,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1 ############################################################# # read an attribute # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== - self.update_shadow_lazy() - if attribute == 0x0000 # ---------- CurrentHue / u1 ---------- - if self.shadow_hue != nil - return tlv_solo.set(TLV.U1, self.shadow_hue) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ---------- - if self.shadow_sat != nil - return tlv_solo.set(TLV.U1, self.shadow_sat) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ---------- - return tlv_solo.set(TLV.U1, 0) - elif attribute == 0x0008 # ---------- ColorMode / u1 ---------- - return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation - elif attribute == 0x000F # ---------- Options / u1 ---------- - return tlv_solo.set(TLV.U1, 0) - elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ---------- - return tlv_solo.set(TLV.U1, 0) - elif attribute == 0x400A # ---------- ColorCapabilities / map32 ---------- - return tlv_solo.set(TLV.U4, 0x01) # HS - - # Defined Primaries Information Attribute Set - elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ---------- - return tlv_solo.set(TLV.U1, 0) - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end + def read_attribute = matter.Plugin_Light3.read_attribute ############################################################# # Invoke a command diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be new file mode 100644 index 000000000..f969398c3 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be @@ -0,0 +1,34 @@ +# +# Matter_Plugin_9_Virt_Sensor_Air_Quality.be - implements the behavior for a Virtual Air Quality Sensor +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Virt_Sensor_Air_Quality,weak + +class Matter_Plugin_Virt_Sensor_Air_Quality : Matter_Plugin_Sensor_Air_Quality + static var TYPE = "v_airquality" # name of the plug-in in json + static var DISPLAY_NAME = "v.Air Quality" # display name of the plug-in + static var ARG = "" # no arg for virtual device + static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') + static var VIRTUAL = true # virtual device + +end +matter.Plugin_Virt_Sensor_Air_Quality = Matter_Plugin_Virt_Sensor_Air_Quality diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be index 74a10d25a..a48e4cbef 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be @@ -141,6 +141,20 @@ class Matter_TLV return self end end + + ############################################################# + # set value, equivalent to create_TLV() without allocation + # + # if value is `nil` replace with TLV.NULL + def set_or_nil(t, value) + self.reset() + if (value == nil) t = 0x14 end # force TLV.NULL + if value != nil || t == 0x14 #-t == matter.TLV.NULL-# # put the actual number for performance + self.typ = t + self.val = value + return self + end + end ############################################################# # neutral converter diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index d5f6d6e1b..a325ead88 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -34,8 +34,10 @@ import matter class Matter_UI static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt" "|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|waterleak" + "|airquality" "|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3" "|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow|v_waterleak" + "|v_airquality" static var _CLASSES_TYPES2= "|http_relay|http_light0|http_light1|http_light2|http_light3" "|http_temperature|http_pressure|http_illuminance|http_humidity" "|http_occupancy|http_contact|http_flow|http_waterleak" diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 463f9f498..8a8b3fe8d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -3484,13 +3484,13 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /* K27 */ be_nested_str_weak(fabric_filtered), /* K28 */ be_const_int(3), /* K29 */ be_nested_str_weak(event_requests), - /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X25_X256i_X29_X20event_requests_size_X3D_X25s), + /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20event_requests_size_X3D_X25s), /* K31 */ be_nested_str_weak(_inner_process_read_request), /* K32 */ be_nested_str_weak(send_subscribe_response), }), be_str_weak(subscribe_request), &be_const_str_solidified, - ( &(const binstruction[99]) { /* code */ + ( &(const binstruction[101]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 @@ -3559,37 +3559,39 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0x881C071D, // 0041 GETMBR R7 R3 K29 0x4C200000, // 0042 LDNIL R8 0x201C0E08, // 0043 NE R7 R7 R8 - 0x781E000E, // 0044 JMPF R7 #0054 + 0x781E0010, // 0044 JMPF R7 #0056 0x601C000C, // 0045 GETGBL R7 G12 0x8820071D, // 0046 GETMBR R8 R3 K29 0x7C1C0200, // 0047 CALL R7 1 0x241C0F19, // 0048 GT R7 R7 K25 - 0x781E0009, // 0049 JMPF R7 #0054 + 0x781E000B, // 0049 JMPF R7 #0056 0xB81E2000, // 004A GETNGBL R7 K16 0x8C1C0F11, // 004B GETMET R7 R7 K17 0x60240018, // 004C GETGBL R9 G24 0x5828001E, // 004D LDCONST R10 K30 - 0x602C000C, // 004E GETGBL R11 G12 - 0x8830071D, // 004F GETMBR R12 R3 K29 - 0x7C2C0200, // 0050 CALL R11 1 - 0x7C240400, // 0051 CALL R9 2 - 0x5828001C, // 0052 LDCONST R10 K28 - 0x7C1C0600, // 0053 CALL R7 3 - 0x8C1C011F, // 0054 GETMET R7 R0 K31 - 0x88240306, // 0055 GETMBR R9 R1 K6 - 0x5C280600, // 0056 MOVE R10 R3 - 0x5C2C0200, // 0057 MOVE R11 R1 - 0x50300200, // 0058 LDBOOL R12 1 0 - 0x7C1C0A00, // 0059 CALL R7 5 - 0x8820091A, // 005A GETMBR R8 R4 K26 - 0x901E3408, // 005B SETMBR R7 K26 R8 - 0x8C200120, // 005C GETMET R8 R0 K32 - 0x5C280200, // 005D MOVE R10 R1 - 0x5C2C0E00, // 005E MOVE R11 R7 - 0x5C300800, // 005F MOVE R12 R4 - 0x7C200800, // 0060 CALL R8 4 - 0x50200200, // 0061 LDBOOL R8 1 0 - 0x80041000, // 0062 RET 1 R8 + 0x882C0306, // 004E GETMBR R11 R1 K6 + 0x882C1713, // 004F GETMBR R11 R11 K19 + 0x6030000C, // 0050 GETGBL R12 G12 + 0x8834071D, // 0051 GETMBR R13 R3 K29 + 0x7C300200, // 0052 CALL R12 1 + 0x7C240600, // 0053 CALL R9 3 + 0x5828001C, // 0054 LDCONST R10 K28 + 0x7C1C0600, // 0055 CALL R7 3 + 0x8C1C011F, // 0056 GETMET R7 R0 K31 + 0x88240306, // 0057 GETMBR R9 R1 K6 + 0x5C280600, // 0058 MOVE R10 R3 + 0x5C2C0200, // 0059 MOVE R11 R1 + 0x50300200, // 005A LDBOOL R12 1 0 + 0x7C1C0A00, // 005B CALL R7 5 + 0x8820091A, // 005C GETMBR R8 R4 K26 + 0x901E3408, // 005D SETMBR R7 K26 R8 + 0x8C200120, // 005E GETMET R8 R0 K32 + 0x5C280200, // 005F MOVE R10 R1 + 0x5C2C0E00, // 0060 MOVE R11 R7 + 0x5C300800, // 0061 MOVE R12 R4 + 0x7C200800, // 0062 CALL R8 4 + 0x50200200, // 0063 LDBOOL R8 1 0 + 0x80041000, // 0064 RET 1 R8 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 544c53173..e22e8111a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -7,174 +7,12 @@ extern const bclass be_class_Matter_Plugin; /******************************************************************** -** Solidified function: every_250ms +** Solidified function: contains_cluster ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_every_250ms, /* name */ +be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(update_next), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(jitter), - /* K3 */ be_nested_str_weak(UPDATE_TIME), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - /* K6 */ be_nested_str_weak(tick), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(update_shadow), - /* K9 */ be_nested_str_weak(millis), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060005, // 0003 JMPF R1 #000A - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x90020001, // 0008 SETMBR R0 K0 R1 - 0x70020010, // 0009 JMP #001B - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x7C040400, // 000D CALL R1 2 - 0x7806000B, // 000E JMPF R1 #001B - 0x88040106, // 000F GETMBR R1 R0 K6 - 0x88080107, // 0010 GETMBR R2 R0 K7 - 0x88080506, // 0011 GETMBR R2 R2 K6 - 0x20040202, // 0012 NE R1 R1 R2 - 0x78060001, // 0013 JMPF R1 #0016 - 0x8C040108, // 0014 GETMET R1 R0 K8 - 0x7C040200, // 0015 CALL R1 1 - 0xB8060800, // 0016 GETNGBL R1 K4 - 0x8C040309, // 0017 GETMET R1 R1 K9 - 0x880C0103, // 0018 GETMBR R3 R0 K3 - 0x7C040400, // 0019 CALL R1 2 - 0x90020001, // 001A SETMBR R0 K0 R1 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(subscribe_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(clusters), - /* K3 */ be_nested_str_weak(consolidate_clusters), - /* K4 */ be_nested_str_weak(parse_configuration), - /* K5 */ be_nested_str_weak(node_label), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x8C100103, // 0002 GETMET R4 R0 K3 - 0x7C100200, // 0003 CALL R4 1 - 0x90020404, // 0004 SETMBR R0 K2 R4 - 0x8C100104, // 0005 GETMET R4 R0 K4 - 0x5C180600, // 0006 MOVE R6 R3 - 0x7C100400, // 0007 CALL R4 2 - 0x8C100706, // 0008 GETMET R4 R3 K6 - 0x58180007, // 0009 LDCONST R6 K7 - 0x581C0008, // 000A LDCONST R7 K8 - 0x7C100600, // 000B CALL R4 3 - 0x90020A04, // 000C SETMBR R0 K5 R4 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_name -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_set_name, /* name */ - be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -183,21 +21,17 @@ be_local_closure(class_Matter_Plugin_set_name, /* name */ &be_class_Matter_Plugin, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), - /* K1 */ be_nested_str_weak(attribute_updated), + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), }), - be_str_weak(set_name), + be_str_weak(contains_cluster), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ + ( &(const binstruction[ 5]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0003, // 0002 JMPF R2 #0007 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x54120038, // 0004 LDINT R4 57 - 0x54160004, // 0005 LDINT R5 5 - 0x7C080600, // 0006 CALL R2 3 - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0x80000000, // 0008 RET 0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -205,13 +39,98 @@ be_local_closure(class_Matter_Plugin_set_name, /* name */ /******************************************************************** -** Solidified function: subscribe_event +** Solidified function: append_state_json ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ +be_local_closure(class_Matter_Plugin_append_state_json, /* name */ be_nested_proto( - 6, /* nstack */ - 5, /* argc */ + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(), + }), + be_str_weak(append_state_json), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80060000, // 0000 RET 1 K0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: state_json +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_state_json, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(node_label), + /* K2 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s), + /* K3 */ be_nested_str_weak(dump), + /* K4 */ be_nested_str_weak(), + /* K5 */ be_nested_str_weak(append_state_json), + /* K6 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D), + /* K7 */ be_nested_str_weak(endpoint), + }), + be_str_weak(state_json), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x780A0006, // 0002 JMPF R2 #000A + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x8C100303, // 0005 GETMET R4 R1 K3 + 0x88180101, // 0006 GETMBR R6 R0 K1 + 0x7C100400, // 0007 CALL R4 2 + 0x7C080400, // 0008 CALL R2 2 + 0x70020000, // 0009 JMP #000B + 0x58080004, // 000A LDCONST R2 K4 + 0x8C0C0105, // 000B GETMET R3 R0 K5 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0007, // 000D JMPF R3 #0016 + 0x60100018, // 000E GETGBL R4 G24 + 0x58140006, // 000F LDCONST R5 K6 + 0x88180107, // 0010 GETMBR R6 R0 K7 + 0x5C1C0400, // 0011 MOVE R7 R2 + 0x5C200600, // 0012 MOVE R8 R3 + 0x7C100800, // 0013 CALL R4 4 + 0x80040800, // 0014 RET 1 R4 + 0x70020001, // 0015 JMP #0018 + 0x4C100000, // 0016 LDNIL R4 + 0x80040800, // 0017 RET 1 R4 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: timed_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_timed_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -219,11 +138,11 @@ be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ &be_class_Matter_Plugin, 0, /* has constants */ NULL, /* no const */ - be_str_weak(subscribe_event), + be_str_weak(timed_request), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 }) ) ); @@ -256,79 +175,68 @@ be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ /******************************************************************** -** Solidified function: publish_command +** Solidified function: has ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_publish_command, /* name */ +be_local_closure(class_Matter_Plugin_has, /* name */ be_nested_proto( - 16, /* nstack */ - 7, /* argc */ + 6, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K2 */ be_nested_str_weak(dump), - /* K3 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(publish_command), - /* K6 */ be_nested_str_weak(MtrReceived), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(node_label), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(endpoints), + /* K3 */ be_nested_str_weak(find), }), - be_str_weak(publish_command), + be_str_weak(has), &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ - 0xA41E0000, // 0000 IMPORT R7 K0 - 0x60200018, // 0001 GETGBL R8 G24 - 0x58240001, // 0002 LDCONST R9 K1 - 0x8C280F02, // 0003 GETMET R10 R7 K2 - 0x5C300200, // 0004 MOVE R12 R1 - 0x7C280400, // 0005 CALL R10 2 - 0x8C2C0F02, // 0006 GETMET R11 R7 K2 - 0x5C340400, // 0007 MOVE R13 R2 - 0x7C2C0400, // 0008 CALL R11 2 - 0x7C200600, // 0009 CALL R8 3 - 0x4C240000, // 000A LDNIL R9 - 0x20240609, // 000B NE R9 R3 R9 - 0x7826000A, // 000C JMPF R9 #0018 - 0x60240018, // 000D GETGBL R9 G24 - 0x58280003, // 000E LDCONST R10 K3 - 0x5C2C1000, // 000F MOVE R11 R8 - 0x8C300F02, // 0010 GETMET R12 R7 K2 - 0x5C380600, // 0011 MOVE R14 R3 - 0x7C300400, // 0012 CALL R12 2 - 0x8C340F02, // 0013 GETMET R13 R7 K2 - 0x5C3C0800, // 0014 MOVE R15 R4 - 0x7C340400, // 0015 CALL R13 2 - 0x7C240800, // 0016 CALL R9 4 - 0x5C201200, // 0017 MOVE R8 R9 - 0x4C240000, // 0018 LDNIL R9 - 0x20240A09, // 0019 NE R9 R5 R9 - 0x7826000A, // 001A JMPF R9 #0026 - 0x60240018, // 001B GETGBL R9 G24 - 0x58280003, // 001C LDCONST R10 K3 - 0x5C2C1000, // 001D MOVE R11 R8 - 0x8C300F02, // 001E GETMET R12 R7 K2 - 0x5C380A00, // 001F MOVE R14 R5 - 0x7C300400, // 0020 CALL R12 2 - 0x8C340F02, // 0021 GETMET R13 R7 K2 - 0x5C3C0C00, // 0022 MOVE R15 R6 - 0x7C340400, // 0023 CALL R13 2 - 0x7C240800, // 0024 CALL R9 4 - 0x5C201200, // 0025 MOVE R8 R9 - 0xB8260800, // 0026 GETNGBL R9 K4 - 0x8C241305, // 0027 GETMET R9 R9 K5 - 0x582C0006, // 0028 LDCONST R11 K6 - 0x88300107, // 0029 GETMBR R12 R0 K7 - 0x88340108, // 002A GETMBR R13 R0 K8 - 0x5C381000, // 002B MOVE R14 R8 - 0x7C240A00, // 002C CALL R9 5 - 0x80000000, // 002D RET 0 + ( &(const binstruction[15]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0006, // 0004 JMPF R3 #000C + 0x880C0102, // 0005 GETMBR R3 R0 K2 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x5C140400, // 0007 MOVE R5 R2 + 0x7C0C0400, // 0008 CALL R3 2 + 0x4C100000, // 0009 LDNIL R4 + 0x200C0604, // 000A NE R3 R3 R4 + 0x740E0000, // 000B JMPT R3 #000D + 0x500C0001, // 000C LDBOOL R3 0 1 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x80040600, // 000E RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_virtual, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 }) ) ); @@ -584,92 +492,6 @@ be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: write_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_write_attribute, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(write_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_attribute_list -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), - }), - be_str_weak(get_attribute_list), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140012, // 0003 GETGBL R5 G18 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_event -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_read_event, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(read_event), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: ack_request ********************************************************************/ @@ -713,6 +535,32 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: write_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_write_attribute, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(write_attribute), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_cluster_list_sorted ********************************************************************/ @@ -747,12 +595,12 @@ be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ /******************************************************************** -** Solidified function: attribute_updated +** Solidified function: init ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ +be_local_closure(class_Matter_Plugin_init, /* name */ be_nested_proto( - 10, /* nstack */ + 8, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -760,22 +608,34 @@ be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(attribute_updated), - /* K2 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(clusters), + /* K3 */ be_nested_str_weak(consolidate_clusters), + /* K4 */ be_nested_str_weak(parse_configuration), + /* K5 */ be_nested_str_weak(node_label), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(), }), - be_str_weak(attribute_updated), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80000000, // 0007 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x8C100103, // 0002 GETMET R4 R0 K3 + 0x7C100200, // 0003 CALL R4 1 + 0x90020404, // 0004 SETMBR R0 K2 R4 + 0x8C100104, // 0005 GETMET R4 R0 K4 + 0x5C180600, // 0006 MOVE R6 R3 + 0x7C100400, // 0007 CALL R4 2 + 0x8C100706, // 0008 GETMET R4 R3 K6 + 0x58180007, // 0009 LDCONST R6 K7 + 0x581C0008, // 000A LDCONST R7 K8 + 0x7C100600, // 000B CALL R4 3 + 0x90020A04, // 000C SETMBR R0 K5 R4 + 0x80000000, // 000D RET 0 }) ) ); @@ -783,13 +643,114 @@ be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ /******************************************************************** -** Solidified function: timed_request +** Solidified function: ui_string_to_conf ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_timed_request, /* name */ +be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ be_nested_proto( - 5, /* nstack */ - 4, /* argc */ + 8, /* nstack */ + 3, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(ARG_TYPE), + }), + be_str_weak(ui_string_to_conf), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x780A0004, // 0003 JMPF R2 #0009 + 0x78120003, // 0004 JMPF R4 #0009 + 0x5C180A00, // 0005 MOVE R6 R5 + 0x5C1C0400, // 0006 MOVE R7 R2 + 0x7C180200, // 0007 CALL R6 1 + 0x98040806, // 0008 SETIDX R1 R4 R6 + 0x80040200, // 0009 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_every_250ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(update_next), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(jitter), + /* K3 */ be_nested_str_weak(UPDATE_TIME), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(time_reached), + /* K6 */ be_nested_str_weak(tick), + /* K7 */ be_nested_str_weak(device), + /* K8 */ be_nested_str_weak(update_shadow), + /* K9 */ be_nested_str_weak(millis), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060005, // 0003 JMPF R1 #000A + 0xB8060200, // 0004 GETNGBL R1 K1 + 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x70020010, // 0009 JMP #001B + 0xB8060800, // 000A GETNGBL R1 K4 + 0x8C040305, // 000B GETMET R1 R1 K5 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x7C040400, // 000D CALL R1 2 + 0x7806000B, // 000E JMPF R1 #001B + 0x88040106, // 000F GETMBR R1 R0 K6 + 0x88080107, // 0010 GETMBR R2 R0 K7 + 0x88080506, // 0011 GETMBR R2 R2 K6 + 0x20040202, // 0012 NE R1 R1 R2 + 0x78060001, // 0013 JMPF R1 #0016 + 0x8C040108, // 0014 GETMET R1 R0 K8 + 0x7C040200, // 0015 CALL R1 1 + 0xB8060800, // 0016 GETNGBL R1 K4 + 0x8C040309, // 0017 GETMET R1 R1 K9 + 0x880C0103, // 0018 GETMBR R3 R0 K3 + 0x7C040400, // 0019 CALL R1 2 + 0x90020001, // 001A SETMBR R0 K0 R1 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -797,11 +758,115 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ &be_class_Matter_Plugin, 0, /* has constants */ NULL, /* no const */ - be_str_weak(timed_request), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_event +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(subscribe_event), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_attribute_list +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), + }), + be_str_weak(get_attribute_list), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140012, // 0003 GETGBL R5 G18 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _parse_update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ + be_nested_proto( + 12, /* nstack */ + 7, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(_parse_update_virtual), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x5C240400, // 0001 MOVE R9 R2 + 0x7C1C0400, // 0002 CALL R7 2 + 0x4C200000, // 0003 LDNIL R8 + 0x20200E08, // 0004 NE R8 R7 R8 + 0x7822000A, // 0005 JMPF R8 #0011 + 0x5C200800, // 0006 MOVE R8 R4 + 0x5C240E00, // 0007 MOVE R9 R7 + 0x7C200200, // 0008 CALL R8 1 + 0x5C1C1000, // 0009 MOVE R7 R8 + 0x20200E03, // 000A NE R8 R7 R3 + 0x78220003, // 000B JMPF R8 #0010 + 0x8C200101, // 000C GETMET R8 R0 K1 + 0x5C280A00, // 000D MOVE R10 R5 + 0x5C2C0C00, // 000E MOVE R11 R6 + 0x7C200600, // 000F CALL R8 3 + 0x80040E00, // 0010 RET 1 R7 + 0x80040600, // 0011 RET 1 R3 }) ) ); @@ -837,201 +902,13 @@ be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ /******************************************************************** -** Solidified function: update_shadow +** Solidified function: subscribe_attribute ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x88040300, // 0001 GETMBR R1 R1 K0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: consolidate_update_commands -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), - }), - be_str_weak(consolidate_update_commands), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: append_state_json -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_append_state_json, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(), - }), - be_str_weak(append_state_json), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80060000, // 0000 RET 1 K0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: state_json -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_state_json, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(node_label), - /* K2 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s), - /* K3 */ be_nested_str_weak(dump), - /* K4 */ be_nested_str_weak(), - /* K5 */ be_nested_str_weak(append_state_json), - /* K6 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D), - /* K7 */ be_nested_str_weak(endpoint), - }), - be_str_weak(state_json), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x780A0006, // 0002 JMPF R2 #000A - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x8C100303, // 0005 GETMET R4 R1 K3 - 0x88180101, // 0006 GETMBR R6 R0 K1 - 0x7C100400, // 0007 CALL R4 2 - 0x7C080400, // 0008 CALL R2 2 - 0x70020000, // 0009 JMP #000B - 0x58080004, // 000A LDCONST R2 K4 - 0x8C0C0105, // 000B GETMET R3 R0 K5 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0007, // 000D JMPF R3 #0016 - 0x60100018, // 000E GETGBL R4 G24 - 0x58140006, // 000F LDCONST R5 K6 - 0x88180107, // 0010 GETMBR R6 R0 K7 - 0x5C1C0400, // 0011 MOVE R7 R2 - 0x5C200600, // 0012 MOVE R8 R3 - 0x7C100800, // 0013 CALL R4 4 - 0x80040800, // 0014 RET 1 R4 - 0x70020001, // 0015 JMP #0018 - 0x4C100000, // 0016 LDNIL R4 - 0x80040800, // 0017 RET 1 R4 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: has -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_has, /* name */ +be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ be_nested_proto( 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(endpoints), - /* K3 */ be_nested_str_weak(find), - }), - be_str_weak(has), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0006, // 0004 JMPF R3 #000C - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x5C140400, // 0007 MOVE R5 R2 - 0x7C0C0400, // 0008 CALL R3 2 - 0x4C100000, // 0009 LDNIL R4 - 0x200C0604, // 000A NE R3 R3 R4 - 0x740E0000, // 000B JMPT R3 #000D - 0x500C0001, // 000C LDBOOL R3 0 1 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x80040600, // 000E RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_invoke_request, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1039,103 +916,11 @@ be_local_closure(class_Matter_Plugin_invoke_request, /* name */ &be_class_Matter_Plugin, 0, /* has constants */ NULL, /* no const */ - be_str_weak(invoke_request), + be_str_weak(subscribe_attribute), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow_lazy -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(update_shadow_lazy), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x88080500, // 0002 GETMBR R2 R2 K0 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060004, // 0004 JMPF R1 #000A - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x7C040200, // 0006 CALL R1 1 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88040300, // 0008 GETMBR R1 R1 K0 - 0x90020001, // 0009 SETMBR R0 K0 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_virtual, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: consolidate_clusters -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(CLUSTERS), - }), - be_str_weak(consolidate_clusters), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 }) ) ); @@ -1194,10 +979,10 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ /******************************************************************** -** Solidified function: get_name +** Solidified function: consolidate_update_commands ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_name, /* name */ +be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1208,9 +993,9 @@ be_local_closure(class_Matter_Plugin_get_name, /* name */ &be_class_Matter_Plugin, 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), + /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), }), - be_str_weak(get_name), + be_str_weak(consolidate_update_commands), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -1249,12 +1034,120 @@ be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ /******************************************************************** -** Solidified function: contains_cluster +** Solidified function: get_name ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ +be_local_closure(class_Matter_Plugin_get_name, /* name */ be_nested_proto( - 5, /* nstack */ + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(node_label), + }), + be_str_weak(get_name), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: publish_command +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_publish_command, /* name */ + be_nested_proto( + 16, /* nstack */ + 7, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K2 */ be_nested_str_weak(dump), + /* K3 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(publish_command), + /* K6 */ be_nested_str_weak(MtrReceived), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(node_label), + }), + be_str_weak(publish_command), + &be_const_str_solidified, + ( &(const binstruction[46]) { /* code */ + 0xA41E0000, // 0000 IMPORT R7 K0 + 0x60200018, // 0001 GETGBL R8 G24 + 0x58240001, // 0002 LDCONST R9 K1 + 0x8C280F02, // 0003 GETMET R10 R7 K2 + 0x5C300200, // 0004 MOVE R12 R1 + 0x7C280400, // 0005 CALL R10 2 + 0x8C2C0F02, // 0006 GETMET R11 R7 K2 + 0x5C340400, // 0007 MOVE R13 R2 + 0x7C2C0400, // 0008 CALL R11 2 + 0x7C200600, // 0009 CALL R8 3 + 0x4C240000, // 000A LDNIL R9 + 0x20240609, // 000B NE R9 R3 R9 + 0x7826000A, // 000C JMPF R9 #0018 + 0x60240018, // 000D GETGBL R9 G24 + 0x58280003, // 000E LDCONST R10 K3 + 0x5C2C1000, // 000F MOVE R11 R8 + 0x8C300F02, // 0010 GETMET R12 R7 K2 + 0x5C380600, // 0011 MOVE R14 R3 + 0x7C300400, // 0012 CALL R12 2 + 0x8C340F02, // 0013 GETMET R13 R7 K2 + 0x5C3C0800, // 0014 MOVE R15 R4 + 0x7C340400, // 0015 CALL R13 2 + 0x7C240800, // 0016 CALL R9 4 + 0x5C201200, // 0017 MOVE R8 R9 + 0x4C240000, // 0018 LDNIL R9 + 0x20240A09, // 0019 NE R9 R5 R9 + 0x7826000A, // 001A JMPF R9 #0026 + 0x60240018, // 001B GETGBL R9 G24 + 0x58280003, // 001C LDCONST R10 K3 + 0x5C2C1000, // 001D MOVE R11 R8 + 0x8C300F02, // 001E GETMET R12 R7 K2 + 0x5C380A00, // 001F MOVE R14 R5 + 0x7C300400, // 0020 CALL R12 2 + 0x8C340F02, // 0021 GETMET R13 R7 K2 + 0x5C3C0C00, // 0022 MOVE R15 R6 + 0x7C340400, // 0023 CALL R13 2 + 0x7C240800, // 0024 CALL R9 4 + 0x5C201200, // 0025 MOVE R8 R9 + 0xB8260800, // 0026 GETNGBL R9 K4 + 0x8C241305, // 0027 GETMET R9 R9 K5 + 0x582C0006, // 0028 LDCONST R11 K6 + 0x88300107, // 0029 GETMBR R12 R0 K7 + 0x88340108, // 002A GETMBR R13 R0 K8 + 0x5C381000, // 002B MOVE R14 R8 + 0x7C240A00, // 002C CALL R9 5 + 0x80000000, // 002D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_name +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_set_name, /* name */ + be_nested_proto( + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1263,17 +1156,153 @@ be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ &be_class_Matter_Plugin, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), + /* K0 */ be_nested_str_weak(node_label), + /* K1 */ be_nested_str_weak(attribute_updated), }), - be_str_weak(contains_cluster), + be_str_weak(set_name), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ + ( &(const binstruction[ 9]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x54120038, // 0004 LDINT R4 57 + 0x54160004, // 0005 LDINT R5 5 + 0x7C080600, // 0006 CALL R2 3 + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow_lazy +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(update_shadow_lazy), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88080500, // 0002 GETMBR R2 R2 K0 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060004, // 0004 JMPF R1 #000A + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x7C040200, // 0006 CALL R1 1 + 0x88040101, // 0007 GETMBR R1 R0 K1 + 0x88040300, // 0008 GETMBR R1 R1 K0 + 0x90020001, // 0009 SETMBR R0 K0 R1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_shadow, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x88040300, // 0001 GETMBR R1 R1 K0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_invoke_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(attribute_updated), + /* K2 */ be_nested_str_weak(endpoint), + }), + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80000000, // 0007 RET 0 }) ) ); @@ -1307,37 +1336,53 @@ be_local_closure(class_Matter_Plugin_is_local_device, /* name */ /******************************************************************** -** Solidified function: ui_string_to_conf +** Solidified function: consolidate_clusters ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ +be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 4, /* varg */ + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(ARG_TYPE), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(CLUSTERS), }), - be_str_weak(ui_string_to_conf), + be_str_weak(consolidate_clusters), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x780A0004, // 0003 JMPF R2 #0009 - 0x78120003, // 0004 JMPF R4 #0009 - 0x5C180A00, // 0005 MOVE R6 R5 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C180200, // 0007 CALL R6 1 - 0x98040806, // 0008 SETIDX R1 R4 R6 - 0x80040200, // 0009 RET 1 R1 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_event +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_read_event, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(read_event), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 }) ) ); @@ -1350,37 +1395,45 @@ be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ be_local_class(Matter_Plugin, 6, NULL, - be_nested_map(50, + be_nested_map(51, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak() }, - { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(258, -1), be_const_int(5) }, - { be_const_key_int(49, -1), be_const_int(4) }, - })) ) } )) }, { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, - { be_const_key_weak(subscribe_attribute, 33), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(COMMANDS, 21), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_nil() }, - })) ) } )) }, - { be_const_key_weak(endpoint, -1), be_const_var(2) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, + { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, + { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) }, + { be_const_key_weak(read_event, 38), be_const_closure(class_Matter_Plugin_read_event_closure) }, + { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, + { be_const_key_weak(consolidate_clusters, -1), be_const_closure(class_Matter_Plugin_consolidate_clusters_closure) }, + { be_const_key_weak(has, -1), be_const_closure(class_Matter_Plugin_has_closure) }, + { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, + { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, + { be_const_key_weak(UPDATE_TIME, 0), be_const_int(5000) }, + { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, + { be_const_key_weak(get_endpoint, 2), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, + { be_const_key_weak(ui_conf_to_string, 24), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, + { be_const_key_weak(UPDATE_COMMANDS, 48), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(0, ( (struct bvalue*) &(const bvalue[]) { })) ) } )) }, - { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) }, + { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, + { be_const_key_weak(every_250ms, 27), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, { be_const_key_weak(device, -1), be_const_var(1) }, - { be_const_key_weak(subscribe_event, 3), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, - { be_const_key_weak(clusters, -1), be_const_var(3) }, - { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, - { be_const_key_weak(is_local_device, 29), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, - { be_const_key_weak(CLUSTER_REVISIONS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(ARG, -1), be_nested_str_weak() }, + { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, + { be_const_key_weak(get_attribute_list, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_closure) }, + { be_const_key_weak(write_attribute, 39), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(contains_attribute, -1), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, + { be_const_key_weak(consolidate_update_commands, 12), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, + { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, + { be_const_key_weak(contains_cluster, 23), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, + { be_const_key_weak(update_next, -1), be_const_var(0) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) }, + { be_const_key_weak(get_name, 30), be_const_closure(class_Matter_Plugin_get_name_closure) }, + { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, + { be_const_key_weak(TYPE, 34), be_nested_str_weak() }, + { be_const_key_weak(tick, -1), be_const_var(4) }, + { be_const_key_weak(CLUSTER_REVISIONS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(25, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, -1), be_const_int(5) }, @@ -1409,14 +1462,20 @@ be_local_class(Matter_Plugin, { be_const_key_int(6, -1), be_const_int(5) }, { be_const_key_int(1024, -1), be_const_int(3) }, })) ) } )) }, - { be_const_key_weak(contains_cluster, -1), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, - { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, - { be_const_key_weak(parse_configuration, 34), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, - { be_const_key_weak(read_event, 28), be_const_closure(class_Matter_Plugin_read_event_closure) }, - { be_const_key_weak(get_name, 43), be_const_closure(class_Matter_Plugin_get_name_closure) }, - { be_const_key_weak(contains_attribute, 31), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, - { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(clusters, -1), be_const_var(3) }, + { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(29, -1), be_const_nil() }, + })) ) } )) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, + { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, + { be_const_key_weak(_parse_update_virtual, 47), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, + { be_const_key_weak(parse_sensors, 19), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, + { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -1434,31 +1493,18 @@ be_local_class(Matter_Plugin, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, - { be_const_key_weak(timed_request, 13), be_const_closure(class_Matter_Plugin_timed_request_closure) }, - { be_const_key_weak(get_endpoint, -1), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, - { be_const_key_weak(consolidate_clusters, -1), be_const_closure(class_Matter_Plugin_consolidate_clusters_closure) }, - { be_const_key_weak(append_state_json, 18), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, - { be_const_key_weak(ui_conf_to_string, 41), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, - { be_const_key_weak(TYPE, 32), be_nested_str_weak() }, - { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) }, - { be_const_key_weak(tick, -1), be_const_var(4) }, - { be_const_key_weak(ARG, 47), be_nested_str_weak() }, - { be_const_key_weak(write_attribute, 36), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, - { be_const_key_weak(has, -1), be_const_closure(class_Matter_Plugin_has_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, - { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, - { be_const_key_weak(update_shadow, 22), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, - { be_const_key_weak(node_label, 42), be_const_var(5) }, - { be_const_key_weak(update_next, -1), be_const_var(0) }, - { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, - { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) }, - { be_const_key_weak(ARG_HINT, 17), be_nested_str_weak(_Not_X20used_) }, - { be_const_key_weak(parse_sensors, 15), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, - { be_const_key_weak(get_attribute_list, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_closure) }, - { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, - { be_const_key_weak(consolidate_update_commands, 2), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, + { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) }, + { be_const_key_weak(DISPLAY_NAME, 10), be_nested_str_weak() }, + { be_const_key_weak(node_label, 9), be_const_var(5) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, + { be_const_key_weak(endpoint, -1), be_const_var(2) }, + { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(258, -1), be_const_int(5) }, + { be_const_key_int(49, -1), be_const_int(4) }, + })) ) } )) }, })), be_str_weak(Matter_Plugin) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index 83ab36871..0cb5a26f7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -328,7 +328,7 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ &be_class_Matter_Plugin_Device, }), 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ + ( &(const bvalue[42]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), /* K1 */ be_nested_str_weak(json), /* K2 */ be_nested_str_weak(), @@ -359,10 +359,22 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ /* K27 */ be_nested_str_weak(Contact), /* K28 */ be_nested_str_weak(shadow_occupancy), /* K29 */ be_nested_str_weak(Occupancy), + /* K30 */ be_nested_str_weak(shadow_air_quality), + /* K31 */ be_nested_str_weak(AirQuality), + /* K32 */ be_nested_str_weak(shadow_co2), + /* K33 */ be_nested_str_weak(CO2), + /* K34 */ be_nested_str_weak(shadow_pm1), + /* K35 */ be_nested_str_weak(PM1), + /* K36 */ be_nested_str_weak(shadow_pm2_5), + /* K37 */ be_nested_str_weak(PM2_X2E5), + /* K38 */ be_nested_str_weak(shadow_pm10), + /* K39 */ be_nested_str_weak(PM10), + /* K40 */ be_nested_str_weak(shadow_tvoc), + /* K41 */ be_nested_str_weak(TVOC), }), be_str_weak(append_state_json), &be_const_str_solidified, - ( &(const binstruction[71]) { /* code */ + ( &(const binstruction[95]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0xA40A0200, // 0001 IMPORT R2 K1 0x580C0002, // 0002 LDCONST R3 K2 @@ -432,8 +444,77 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ 0x581C001C, // 0042 LDCONST R7 K28 0x5820001D, // 0043 LDCONST R8 K29 0x7C180400, // 0044 CALL R6 2 - 0xA0000000, // 0045 CLOSE R0 - 0x80040600, // 0046 RET 1 R3 + 0x5C180800, // 0045 MOVE R6 R4 + 0x581C001E, // 0046 LDCONST R7 K30 + 0x5820001F, // 0047 LDCONST R8 K31 + 0x7C180400, // 0048 CALL R6 2 + 0x5C180800, // 0049 MOVE R6 R4 + 0x581C0020, // 004A LDCONST R7 K32 + 0x58200021, // 004B LDCONST R8 K33 + 0x7C180400, // 004C CALL R6 2 + 0x5C180800, // 004D MOVE R6 R4 + 0x581C0022, // 004E LDCONST R7 K34 + 0x58200023, // 004F LDCONST R8 K35 + 0x7C180400, // 0050 CALL R6 2 + 0x5C180800, // 0051 MOVE R6 R4 + 0x581C0024, // 0052 LDCONST R7 K36 + 0x58200025, // 0053 LDCONST R8 K37 + 0x7C180400, // 0054 CALL R6 2 + 0x5C180800, // 0055 MOVE R6 R4 + 0x581C0026, // 0056 LDCONST R7 K38 + 0x58200027, // 0057 LDCONST R8 K39 + 0x7C180400, // 0058 CALL R6 2 + 0x5C180800, // 0059 MOVE R6 R4 + 0x581C0028, // 005A LDCONST R7 K40 + 0x58200029, // 005B LDCONST R8 K41 + 0x7C180400, // 005C CALL R6 2 + 0xA0000000, // 005D CLOSE R0 + 0x80040600, // 005E RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _parse_sensor_entry +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ + be_nested_proto( + 12, /* nstack */ + 7, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(_parse_sensor_entry), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x5C240400, // 0001 MOVE R9 R2 + 0x7C1C0400, // 0002 CALL R7 2 + 0x4C200000, // 0003 LDNIL R8 + 0x20200E08, // 0004 NE R8 R7 R8 + 0x7822000A, // 0005 JMPF R8 #0011 + 0x5C200800, // 0006 MOVE R8 R4 + 0x5C240E00, // 0007 MOVE R9 R7 + 0x7C200200, // 0008 CALL R8 1 + 0x5C1C1000, // 0009 MOVE R7 R8 + 0x20200E03, // 000A NE R8 R7 R3 + 0x78220003, // 000B JMPF R8 #0010 + 0x8C200101, // 000C GETMET R8 R0 K1 + 0x5C280A00, // 000D MOVE R10 R5 + 0x5C2C0C00, // 000E MOVE R11 R6 + 0x7C200600, // 000F CALL R8 3 + 0x80040E00, // 0010 RET 1 R7 + 0x80040600, // 0011 RET 1 R3 }) ) ); @@ -534,17 +615,18 @@ extern const bclass be_class_Matter_Plugin; be_local_class(Matter_Plugin_Device, 0, &be_class_Matter_Plugin, - be_nested_map(6, + be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Device_read_attribute_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Device_invoke_request_closure) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(19, -1), be_const_int(1) }, - })) ) } )) }, + { be_const_key_weak(read_attribute, 1), be_const_closure(class_Matter_Plugin_Device_read_attribute_closure) }, + { be_const_key_weak(invoke_request, 4), be_const_closure(class_Matter_Plugin_Device_invoke_request_closure) }, { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_Device_append_state_json_closure) }, - { be_const_key_weak(CLUSTERS, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(NON_BRIDGE_VENDOR, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(4631), + be_const_int(4993), + })) ) } )) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -617,12 +699,12 @@ be_local_class(Matter_Plugin_Device, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(NON_BRIDGE_VENDOR, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(2, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(4631), - be_const_int(4993), + { be_const_key_weak(TYPES, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, + { be_const_key_weak(_parse_sensor_entry, -1), be_const_closure(class_Matter_Plugin_Device__parse_sensor_entry_closure) }, })), be_str_weak(Matter_Plugin_Device) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h new file mode 100644 index 000000000..179f66f25 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -0,0 +1,816 @@ +/* Solidification of Matter_Plugin_2_Sensor_Air_Quality.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; + +/******************************************************************** +** Solidified function: _parse_sensor_entry +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, /* name */ + be_nested_proto( + 11, /* nstack */ + 6, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(_parse_sensor_entry), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C180300, // 0000 GETMET R6 R1 K0 + 0x5C200400, // 0001 MOVE R8 R2 + 0x7C180400, // 0002 CALL R6 2 + 0x4C1C0000, // 0003 LDNIL R7 + 0x201C0C07, // 0004 NE R7 R6 R7 + 0x781E0006, // 0005 JMPF R7 #000D + 0x201C0C03, // 0006 NE R7 R6 R3 + 0x781E0003, // 0007 JMPF R7 #000C + 0x8C1C0101, // 0008 GETMET R7 R0 K1 + 0x5C240800, // 0009 MOVE R9 R4 + 0x5C280A00, // 000A MOVE R10 R5 + 0x7C1C0600, // 000B CALL R7 3 + 0x80040C00, // 000C RET 1 R6 + 0x80040600, // 000D RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_air_quality), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(AirQuality), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(shadow_co2), + /* K5 */ be_nested_str_weak(CO2), + /* K6 */ be_nested_str_weak(shadow_pm1), + /* K7 */ be_nested_str_weak(PM1), + /* K8 */ be_nested_str_weak(shadow_pm2_5), + /* K9 */ be_nested_str_weak(PM2_X2E5), + /* K10 */ be_nested_str_weak(shadow_pm10), + /* K11 */ be_nested_str_weak(PM10), + /* K12 */ be_nested_str_weak(shadow_tvoc), + /* K13 */ be_nested_str_weak(TVOC), + /* K14 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[61]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x60180007, // 0003 GETGBL R6 G7 + 0x881C0100, // 0004 GETMBR R7 R0 K0 + 0x5422005A, // 0005 LDINT R8 91 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x8C080101, // 0009 GETMET R2 R0 K1 + 0x5C100200, // 000A MOVE R4 R1 + 0x58140005, // 000B LDCONST R5 K5 + 0x88180104, // 000C GETMBR R6 R0 K4 + 0x601C0007, // 000D GETGBL R7 G7 + 0x5422040C, // 000E LDINT R8 1037 + 0x58240003, // 000F LDCONST R9 K3 + 0x7C080E00, // 0010 CALL R2 7 + 0x90020802, // 0011 SETMBR R0 K4 R2 + 0x8C080101, // 0012 GETMET R2 R0 K1 + 0x5C100200, // 0013 MOVE R4 R1 + 0x58140007, // 0014 LDCONST R5 K7 + 0x88180106, // 0015 GETMBR R6 R0 K6 + 0x601C0007, // 0016 GETGBL R7 G7 + 0x5422042B, // 0017 LDINT R8 1068 + 0x58240003, // 0018 LDCONST R9 K3 + 0x7C080E00, // 0019 CALL R2 7 + 0x90020C02, // 001A SETMBR R0 K6 R2 + 0x8C080101, // 001B GETMET R2 R0 K1 + 0x5C100200, // 001C MOVE R4 R1 + 0x58140009, // 001D LDCONST R5 K9 + 0x88180108, // 001E GETMBR R6 R0 K8 + 0x601C0007, // 001F GETGBL R7 G7 + 0x54220429, // 0020 LDINT R8 1066 + 0x58240003, // 0021 LDCONST R9 K3 + 0x7C080E00, // 0022 CALL R2 7 + 0x90021002, // 0023 SETMBR R0 K8 R2 + 0x8C080101, // 0024 GETMET R2 R0 K1 + 0x5C100200, // 0025 MOVE R4 R1 + 0x5814000B, // 0026 LDCONST R5 K11 + 0x8818010A, // 0027 GETMBR R6 R0 K10 + 0x601C0007, // 0028 GETGBL R7 G7 + 0x5422042C, // 0029 LDINT R8 1069 + 0x58240003, // 002A LDCONST R9 K3 + 0x7C080E00, // 002B CALL R2 7 + 0x90021402, // 002C SETMBR R0 K10 R2 + 0x8C080101, // 002D GETMET R2 R0 K1 + 0x5C100200, // 002E MOVE R4 R1 + 0x5814000D, // 002F LDCONST R5 K13 + 0x8818010C, // 0030 GETMBR R6 R0 K12 + 0x601C0007, // 0031 GETGBL R7 G7 + 0x5422042D, // 0032 LDINT R8 1070 + 0x58240003, // 0033 LDCONST R9 K3 + 0x7C080E00, // 0034 CALL R2 7 + 0x90021802, // 0035 SETMBR R0 K12 R2 + 0x60080003, // 0036 GETGBL R2 G3 + 0x5C0C0000, // 0037 MOVE R3 R0 + 0x7C080200, // 0038 CALL R2 1 + 0x8C08050E, // 0039 GETMET R2 R2 K14 + 0x5C100200, // 003A MOVE R4 R1 + 0x7C080400, // 003B CALL R2 2 + 0x80000000, // 003C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_sensors +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(prefix), + /* K2 */ be_nested_str_weak(shadow_co2), + /* K3 */ be_nested_str_weak(_parse_sensor_entry), + /* K4 */ be_nested_str_weak(CarbonDioxide), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(shadow_pm1), + /* K7 */ be_nested_str_weak(PM1), + /* K8 */ be_nested_str_weak(shadow_pm2_5), + /* K9 */ be_nested_str_weak(PM2_X2E5), + /* K10 */ be_nested_str_weak(shadow_pm10), + /* K11 */ be_nested_str_weak(PM10), + /* K12 */ be_nested_str_weak(shadow_tvoc), + /* K13 */ be_nested_str_weak(TVOC), + /* K14 */ be_nested_str_weak(shadow_no2), + /* K15 */ be_nested_str_weak(NO2), + /* K16 */ be_nested_str_weak(parse_sensors), + }), + be_str_weak(parse_sensors), + &be_const_str_solidified, + ( &(const binstruction[67]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0035, // 0005 JMPF R3 #003C + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x5C140400, // 0007 MOVE R5 R2 + 0x58180004, // 0008 LDCONST R6 K4 + 0x881C0102, // 0009 GETMBR R7 R0 K2 + 0x60200007, // 000A GETGBL R8 G7 + 0x5426040C, // 000B LDINT R9 1037 + 0x58280005, // 000C LDCONST R10 K5 + 0x7C0C0E00, // 000D CALL R3 7 + 0x90020403, // 000E SETMBR R0 K2 R3 + 0x8C0C0103, // 000F GETMET R3 R0 K3 + 0x5C140400, // 0010 MOVE R5 R2 + 0x58180007, // 0011 LDCONST R6 K7 + 0x881C0106, // 0012 GETMBR R7 R0 K6 + 0x60200007, // 0013 GETGBL R8 G7 + 0x5426042B, // 0014 LDINT R9 1068 + 0x58280005, // 0015 LDCONST R10 K5 + 0x7C0C0E00, // 0016 CALL R3 7 + 0x90020C03, // 0017 SETMBR R0 K6 R3 + 0x8C0C0103, // 0018 GETMET R3 R0 K3 + 0x5C140400, // 0019 MOVE R5 R2 + 0x58180009, // 001A LDCONST R6 K9 + 0x881C0108, // 001B GETMBR R7 R0 K8 + 0x60200007, // 001C GETGBL R8 G7 + 0x54260429, // 001D LDINT R9 1066 + 0x58280005, // 001E LDCONST R10 K5 + 0x7C0C0E00, // 001F CALL R3 7 + 0x90021003, // 0020 SETMBR R0 K8 R3 + 0x8C0C0103, // 0021 GETMET R3 R0 K3 + 0x5C140400, // 0022 MOVE R5 R2 + 0x5818000B, // 0023 LDCONST R6 K11 + 0x881C010A, // 0024 GETMBR R7 R0 K10 + 0x60200007, // 0025 GETGBL R8 G7 + 0x5426042C, // 0026 LDINT R9 1069 + 0x58280005, // 0027 LDCONST R10 K5 + 0x7C0C0E00, // 0028 CALL R3 7 + 0x90021403, // 0029 SETMBR R0 K10 R3 + 0x8C0C0103, // 002A GETMET R3 R0 K3 + 0x5C140400, // 002B MOVE R5 R2 + 0x5818000D, // 002C LDCONST R6 K13 + 0x881C010C, // 002D GETMBR R7 R0 K12 + 0x60200007, // 002E GETGBL R8 G7 + 0x5426042D, // 002F LDINT R9 1070 + 0x58280005, // 0030 LDCONST R10 K5 + 0x7C0C0E00, // 0031 CALL R3 7 + 0x90021803, // 0032 SETMBR R0 K12 R3 + 0x8C0C0103, // 0033 GETMET R3 R0 K3 + 0x5C140400, // 0034 MOVE R5 R2 + 0x5818000F, // 0035 LDCONST R6 K15 + 0x881C010E, // 0036 GETMBR R7 R0 K14 + 0x60200007, // 0037 GETGBL R8 G7 + 0x54260412, // 0038 LDINT R9 1043 + 0x58280005, // 0039 LDCONST R10 K5 + 0x7C0C0E00, // 003A CALL R3 7 + 0x90021C03, // 003B SETMBR R0 K14 R3 + 0x600C0003, // 003C GETGBL R3 G3 + 0x5C100000, // 003D MOVE R4 R0 + 0x7C0C0200, // 003E CALL R3 1 + 0x8C0C0710, // 003F GETMET R3 R3 K16 + 0x5C140200, // 0040 MOVE R5 R1 + 0x7C0C0400, // 0041 CALL R3 2 + 0x80000000, // 0042 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* name */ + be_nested_proto( + 14, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 3]) { /* upvals */ + be_local_const_upval(1, 6), + be_local_const_upval(1, 3), + be_local_const_upval(1, 4), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(set), + /* K2 */ be_nested_str_weak(FLOAT), + /* K3 */ be_nested_str_weak(NULL), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(U1), + /* K7 */ be_nested_str_weak(U4), + }), + be_str_weak(handle_value), + &be_const_str_solidified, + ( &(const binstruction[85]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x58040000, // 0003 LDCONST R1 K0 + 0x68080000, // 0004 GETUPV R2 U0 + 0x1C080500, // 0005 EQ R2 R2 K0 + 0x780A0012, // 0006 JMPF R2 #001A + 0x4C080000, // 0007 LDNIL R2 + 0x20080002, // 0008 NE R2 R0 R2 + 0x780A0007, // 0009 JMPF R2 #0012 + 0x68080001, // 000A GETUPV R2 U1 + 0x8C080501, // 000B GETMET R2 R2 K1 + 0x68100002, // 000C GETUPV R4 U2 + 0x88100902, // 000D GETMBR R4 R4 K2 + 0x5C140000, // 000E MOVE R5 R0 + 0x7C080600, // 000F CALL R2 3 + 0x80040400, // 0010 RET 1 R2 + 0x70020006, // 0011 JMP #0019 + 0x68080001, // 0012 GETUPV R2 U1 + 0x8C080501, // 0013 GETMET R2 R2 K1 + 0x68100002, // 0014 GETUPV R4 U2 + 0x88100903, // 0015 GETMBR R4 R4 K3 + 0x4C140000, // 0016 LDNIL R5 + 0x7C080600, // 0017 CALL R2 3 + 0x80040400, // 0018 RET 1 R2 + 0x70020038, // 0019 JMP #0053 + 0x68080000, // 001A GETUPV R2 U0 + 0x1C080504, // 001B EQ R2 R2 K4 + 0x780A0007, // 001C JMPF R2 #0025 + 0x68080001, // 001D GETUPV R2 U1 + 0x8C080501, // 001E GETMET R2 R2 K1 + 0x68100002, // 001F GETUPV R4 U2 + 0x88100903, // 0020 GETMBR R4 R4 K3 + 0x4C140000, // 0021 LDNIL R5 + 0x7C080600, // 0022 CALL R2 3 + 0x80040400, // 0023 RET 1 R2 + 0x7002002D, // 0024 JMP #0053 + 0x68080000, // 0025 GETUPV R2 U0 + 0x1C080505, // 0026 EQ R2 R2 K5 + 0x780A0007, // 0027 JMPF R2 #0030 + 0x68080001, // 0028 GETUPV R2 U1 + 0x8C080501, // 0029 GETMET R2 R2 K1 + 0x68100002, // 002A GETUPV R4 U2 + 0x88100903, // 002B GETMBR R4 R4 K3 + 0x4C140000, // 002C LDNIL R5 + 0x7C080600, // 002D CALL R2 3 + 0x80040400, // 002E RET 1 R2 + 0x70020022, // 002F JMP #0053 + 0x68080000, // 0030 GETUPV R2 U0 + 0x540E0007, // 0031 LDINT R3 8 + 0x1C080403, // 0032 EQ R2 R2 R3 + 0x780A0007, // 0033 JMPF R2 #003C + 0x68080001, // 0034 GETUPV R2 U1 + 0x8C080501, // 0035 GETMET R2 R2 K1 + 0x68100002, // 0036 GETUPV R4 U2 + 0x88100906, // 0037 GETMBR R4 R4 K6 + 0x5C140200, // 0038 MOVE R5 R1 + 0x7C080600, // 0039 CALL R2 3 + 0x80040400, // 003A RET 1 R2 + 0x70020016, // 003B JMP #0053 + 0x68080000, // 003C GETUPV R2 U0 + 0x540E0008, // 003D LDINT R3 9 + 0x1C080403, // 003E EQ R2 R2 R3 + 0x780A0007, // 003F JMPF R2 #0048 + 0x68080001, // 0040 GETUPV R2 U1 + 0x8C080501, // 0041 GETMET R2 R2 K1 + 0x68100002, // 0042 GETUPV R4 U2 + 0x88100906, // 0043 GETMBR R4 R4 K6 + 0x58140000, // 0044 LDCONST R5 K0 + 0x7C080600, // 0045 CALL R2 3 + 0x80040400, // 0046 RET 1 R2 + 0x7002000A, // 0047 JMP #0053 + 0x68080000, // 0048 GETUPV R2 U0 + 0x540EFFFB, // 0049 LDINT R3 65532 + 0x1C080403, // 004A EQ R2 R2 R3 + 0x780A0006, // 004B JMPF R2 #0053 + 0x68080001, // 004C GETUPV R2 U1 + 0x8C080501, // 004D GETMET R2 R2 K1 + 0x68100002, // 004E GETUPV R4 U2 + 0x88100907, // 004F GETMBR R4 R4 K7 + 0x58140004, // 0050 LDCONST R5 K4 + 0x7C080600, // 0051 CALL R2 3 + 0x80040400, // 0052 RET 1 R2 + 0x4C080000, // 0053 LDNIL R2 + 0x80040400, // 0054 RET 1 R2 + }) + ), + &be_class_Matter_Plugin_Sensor_Air_Quality, + }), + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(shadow_air_quality), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(U1), + /* K8 */ be_nested_str_weak(NULL), + /* K9 */ be_nested_str_weak(shadow_co2), + /* K10 */ be_nested_str_weak(shadow_pm1), + /* K11 */ be_nested_str_weak(shadow_pm2_5), + /* K12 */ be_nested_str_weak(shadow_pm10), + /* K13 */ be_nested_str_weak(shadow_tvoc), + /* K14 */ be_nested_str_weak(shadow_no2), + /* K15 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[104]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x4C1C0000, // 0004 LDNIL R7 + 0x84200000, // 0005 CLOSURE R8 P0 + 0x5426005A, // 0006 LDINT R9 91 + 0x1C240A09, // 0007 EQ R9 R5 R9 + 0x78260013, // 0008 JMPF R9 #001D + 0x1C240D04, // 0009 EQ R9 R6 K4 + 0x78260010, // 000A JMPF R9 #001C + 0x88240105, // 000B GETMBR R9 R0 K5 + 0x4C280000, // 000C LDNIL R10 + 0x2024120A, // 000D NE R9 R9 R10 + 0x78260006, // 000E JMPF R9 #0016 + 0x8C240706, // 000F GETMET R9 R3 K6 + 0x882C0907, // 0010 GETMBR R11 R4 K7 + 0x88300105, // 0011 GETMBR R12 R0 K5 + 0x7C240600, // 0012 CALL R9 3 + 0xA0000000, // 0013 CLOSE R0 + 0x80041200, // 0014 RET 1 R9 + 0x70020005, // 0015 JMP #001C + 0x8C240706, // 0016 GETMET R9 R3 K6 + 0x882C0908, // 0017 GETMBR R11 R4 K8 + 0x4C300000, // 0018 LDNIL R12 + 0x7C240600, // 0019 CALL R9 3 + 0xA0000000, // 001A CLOSE R0 + 0x80041200, // 001B RET 1 R9 + 0x70020040, // 001C JMP #005E + 0x5426040C, // 001D LDINT R9 1037 + 0x1C240A09, // 001E EQ R9 R5 R9 + 0x78260007, // 001F JMPF R9 #0028 + 0x5C241000, // 0020 MOVE R9 R8 + 0x88280109, // 0021 GETMBR R10 R0 K9 + 0x7C240200, // 0022 CALL R9 1 + 0x5C1C1200, // 0023 MOVE R7 R9 + 0x78260001, // 0024 JMPF R9 #0027 + 0xA0000000, // 0025 CLOSE R0 + 0x80040E00, // 0026 RET 1 R7 + 0x70020035, // 0027 JMP #005E + 0x5426042B, // 0028 LDINT R9 1068 + 0x1C240A09, // 0029 EQ R9 R5 R9 + 0x78260007, // 002A JMPF R9 #0033 + 0x5C241000, // 002B MOVE R9 R8 + 0x8828010A, // 002C GETMBR R10 R0 K10 + 0x7C240200, // 002D CALL R9 1 + 0x5C1C1200, // 002E MOVE R7 R9 + 0x78260001, // 002F JMPF R9 #0032 + 0xA0000000, // 0030 CLOSE R0 + 0x80040E00, // 0031 RET 1 R7 + 0x7002002A, // 0032 JMP #005E + 0x54260429, // 0033 LDINT R9 1066 + 0x1C240A09, // 0034 EQ R9 R5 R9 + 0x78260007, // 0035 JMPF R9 #003E + 0x5C241000, // 0036 MOVE R9 R8 + 0x8828010B, // 0037 GETMBR R10 R0 K11 + 0x7C240200, // 0038 CALL R9 1 + 0x5C1C1200, // 0039 MOVE R7 R9 + 0x78260001, // 003A JMPF R9 #003D + 0xA0000000, // 003B CLOSE R0 + 0x80040E00, // 003C RET 1 R7 + 0x7002001F, // 003D JMP #005E + 0x5426042C, // 003E LDINT R9 1069 + 0x1C240A09, // 003F EQ R9 R5 R9 + 0x78260007, // 0040 JMPF R9 #0049 + 0x5C241000, // 0041 MOVE R9 R8 + 0x8828010C, // 0042 GETMBR R10 R0 K12 + 0x7C240200, // 0043 CALL R9 1 + 0x5C1C1200, // 0044 MOVE R7 R9 + 0x78260001, // 0045 JMPF R9 #0048 + 0xA0000000, // 0046 CLOSE R0 + 0x80040E00, // 0047 RET 1 R7 + 0x70020014, // 0048 JMP #005E + 0x5426042D, // 0049 LDINT R9 1070 + 0x1C240A09, // 004A EQ R9 R5 R9 + 0x78260007, // 004B JMPF R9 #0054 + 0x5C241000, // 004C MOVE R9 R8 + 0x8828010D, // 004D GETMBR R10 R0 K13 + 0x7C240200, // 004E CALL R9 1 + 0x5C1C1200, // 004F MOVE R7 R9 + 0x78260001, // 0050 JMPF R9 #0053 + 0xA0000000, // 0051 CLOSE R0 + 0x80040E00, // 0052 RET 1 R7 + 0x70020009, // 0053 JMP #005E + 0x54260412, // 0054 LDINT R9 1043 + 0x1C240A09, // 0055 EQ R9 R5 R9 + 0x78260006, // 0056 JMPF R9 #005E + 0x5C241000, // 0057 MOVE R9 R8 + 0x8828010E, // 0058 GETMBR R10 R0 K14 + 0x7C240200, // 0059 CALL R9 1 + 0x5C1C1200, // 005A MOVE R7 R9 + 0x78260001, // 005B JMPF R9 #005E + 0xA0000000, // 005C CLOSE R0 + 0x80040E00, // 005D RET 1 R7 + 0x60240003, // 005E GETGBL R9 G3 + 0x5C280000, // 005F MOVE R10 R0 + 0x7C240200, // 0060 CALL R9 1 + 0x8C24130F, // 0061 GETMET R9 R9 K15 + 0x5C2C0200, // 0062 MOVE R11 R1 + 0x5C300400, // 0063 MOVE R12 R2 + 0x5C340600, // 0064 MOVE R13 R3 + 0x7C240800, // 0065 CALL R9 4 + 0xA0000000, // 0066 CLOSE R0 + 0x80041200, // 0067 RET 1 R9 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(prefix), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x60080008, // 0000 GETGBL R2 G8 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x7C0C0400, // 0003 CALL R3 2 + 0x7C080200, // 0004 CALL R2 1 + 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_air_quality), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x50100000, // 0008 LDBOOL R4 0 0 + 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Sensor_Air_Quality +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_class(Matter_Plugin_Sensor_Air_Quality, + 8, + &be_class_Matter_Plugin_Device, + be_nested_map(23, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual_closure) }, + { be_const_key_weak(shadow_pm10, 0), be_const_var(4) }, + { be_const_key_weak(ARG, 1), be_nested_str_weak(airquality) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(airquality) }, + { be_const_key_weak(parse_configuration, 21), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration_closure) }, + { be_const_key_weak(shadow_no2, -1), be_const_var(6) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(30000) }, + { be_const_key_weak(UPDATE_COMMANDS, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(AirQuality), + be_nested_str_weak(CO2), + be_nested_str_weak(PM1), + be_nested_str_weak(PM2_X2E5), + be_nested_str_weak(PM10), + be_nested_str_weak(TVOC), + be_nested_str_weak(NO2), + })) ) } )) }, + { be_const_key_weak(shadow_pm2_5, -1), be_const_var(3) }, + { be_const_key_weak(shadow_air_quality, -1), be_const_var(1) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute_closure) }, + { be_const_key_weak(shadow_tvoc, -1), be_const_var(7) }, + { be_const_key_weak(prefix, -1), be_const_var(0) }, + { be_const_key_weak(TYPES, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(44, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(_parse_sensor_entry, 19), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry_closure) }, + { be_const_key_weak(shadow_pm1, 9), be_const_var(2) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Air_X20Quality) }, + { be_const_key_weak(parse_sensors, 7), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors_closure) }, + { be_const_key_weak(shadow_co2, -1), be_const_var(5) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_init_closure) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Device_X20key_X20_X28ex_X3A_X20SCD40_X29) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(12, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(1068, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1069, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1070, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(8, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(5, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1037, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(91, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(29, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(5), + be_const_int(10), + be_const_int(15), + be_const_int(17), + be_const_int(18), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1066, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1043, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(AirQuality) }, + })), + be_str_weak(Matter_Plugin_Sensor_Air_Quality) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h index f4124fc0d..9882dd40f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h @@ -269,7 +269,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ extern const bclass be_class_Matter_Plugin_Sensor_Contact; be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ be_nested_proto( - 7, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -277,42 +277,32 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Contact, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Contact), - /* K2 */ be_nested_str_weak(shadow_contact), - /* K3 */ be_nested_str_weak(attribute_updated), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(update_virtual), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_contact), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Contact), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), }), be_str_weak(update_virtual), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0403, // 0004 NE R3 R2 R3 - 0x780E000B, // 0005 JMPF R3 #0012 - 0x600C0017, // 0006 GETGBL R3 G23 - 0x5C100400, // 0007 MOVE R4 R2 - 0x7C0C0200, // 0008 CALL R3 1 - 0x5C080600, // 0009 MOVE R2 R3 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x200C0602, // 000B NE R3 R3 R2 - 0x780E0004, // 000C JMPF R3 #0012 - 0x8C0C0103, // 000D GETMET R3 R0 K3 - 0x54160044, // 000E LDINT R5 69 - 0x58180004, // 000F LDCONST R6 K4 - 0x7C0C0600, // 0010 CALL R3 3 - 0x90020402, // 0011 SETMBR R0 K2 R2 - 0x600C0003, // 0012 GETGBL R3 G3 - 0x5C100000, // 0013 MOVE R4 R0 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0705, // 0015 GETMET R3 R3 K5 - 0x5C140200, // 0016 MOVE R5 R1 - 0x7C0C0400, // 0017 CALL R3 2 - 0x80000000, // 0018 RET 0 + ( &(const binstruction[16]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x88180100, // 0003 GETMBR R6 R0 K0 + 0x601C0017, // 0004 GETGBL R7 G23 + 0x54220044, // 0005 LDINT R8 69 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x60080003, // 0009 GETGBL R2 G3 + 0x5C0C0000, // 000A MOVE R3 R0 + 0x7C080200, // 000B CALL R2 1 + 0x8C080504, // 000C GETMET R2 R2 K4 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h index eb2704d72..d74be2a22 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h @@ -39,7 +39,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */ be_nested_proto( - 7, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -47,42 +47,32 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Occupancy, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Occupancy), - /* K2 */ be_nested_str_weak(shadow_occupancy), - /* K3 */ be_nested_str_weak(attribute_updated), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(update_virtual), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(val_onoff), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Occupancy), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), }), be_str_weak(update_virtual), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0403, // 0004 NE R3 R2 R3 - 0x780E000B, // 0005 JMPF R3 #0012 - 0x600C0017, // 0006 GETGBL R3 G23 - 0x5C100400, // 0007 MOVE R4 R2 - 0x7C0C0200, // 0008 CALL R3 1 - 0x5C080600, // 0009 MOVE R2 R3 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x200C0602, // 000B NE R3 R3 R2 - 0x780E0004, // 000C JMPF R3 #0012 - 0x8C0C0103, // 000D GETMET R3 R0 K3 - 0x54160405, // 000E LDINT R5 1030 - 0x58180004, // 000F LDCONST R6 K4 - 0x7C0C0600, // 0010 CALL R3 3 - 0x90020402, // 0011 SETMBR R0 K2 R2 - 0x600C0003, // 0012 GETGBL R3 G3 - 0x5C100000, // 0013 MOVE R4 R0 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0705, // 0015 GETMET R3 R3 K5 - 0x5C140200, // 0016 MOVE R5 R1 - 0x7C0C0400, // 0017 CALL R3 2 - 0x80000000, // 0018 RET 0 + ( &(const binstruction[16]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x88180100, // 0003 GETMBR R6 R0 K0 + 0x601C0017, // 0004 GETGBL R7 G23 + 0x54220405, // 0005 LDINT R8 1030 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x60080003, // 0009 GETGBL R2 G3 + 0x5C0C0000, // 000A MOVE R3 R0 + 0x7C080200, // 000B CALL R2 1 + 0x8C080504, // 000C GETMET R2 R2 K4 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h new file mode 100644 index 000000000..fa6b7f956 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h @@ -0,0 +1,404 @@ +/* Solidification of Matter_Plugin_3_Bridge_Sensor_Air_Quality.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Air_Quality' +extern bclosure *class_Matter_Plugin_Sensor_Air_Quality_read_attribute; + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(content_send), + /* K2 */ be_nested_str_weak(_X25s_X20_X25i_X20), + }), + be_str_weak(web_values_single), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0007, // 0002 JMPF R2 #000B + 0xA40A0000, // 0003 IMPORT R2 K0 + 0x8C0C0501, // 0004 GETMET R3 R2 K1 + 0x60140018, // 0005 GETGBL R5 G24 + 0x58180002, // 0006 LDCONST R6 K2 + 0x5C1C0000, // 0007 MOVE R7 R0 + 0x5C200200, // 0008 MOVE R8 R1 + 0x7C140600, // 0009 CALL R5 3 + 0x7C0C0400, // 000A CALL R3 2 + 0x80000000, // 000B RET 0 + }) + ), + &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, + }), + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(web_values_prefix), + /* K1 */ be_nested_str_weak(Air), + /* K2 */ be_nested_str_weak(shadow_air_quality), + /* K3 */ be_nested_str_weak(PM1), + /* K4 */ be_nested_str_weak(shadow_pm1), + /* K5 */ be_nested_str_weak(PM2_X2E5), + /* K6 */ be_nested_str_weak(shadow_pm2_5), + /* K7 */ be_nested_str_weak(PM10), + /* K8 */ be_nested_str_weak(shadow_pm10), + /* K9 */ be_nested_str_weak(CO2), + /* K10 */ be_nested_str_weak(shadow_co2), + /* K11 */ be_nested_str_weak(NO2), + /* K12 */ be_nested_str_weak(shadow_no2), + /* K13 */ be_nested_str_weak(TVOC), + /* K14 */ be_nested_str_weak(shadow_tvoc), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x84040000, // 0000 CLOSURE R1 P0 + 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x7C080200, // 0002 CALL R2 1 + 0x5C080200, // 0003 MOVE R2 R1 + 0x580C0001, // 0004 LDCONST R3 K1 + 0x88100102, // 0005 GETMBR R4 R0 K2 + 0x7C080400, // 0006 CALL R2 2 + 0x5C080200, // 0007 MOVE R2 R1 + 0x580C0003, // 0008 LDCONST R3 K3 + 0x88100104, // 0009 GETMBR R4 R0 K4 + 0x7C080400, // 000A CALL R2 2 + 0x5C080200, // 000B MOVE R2 R1 + 0x580C0005, // 000C LDCONST R3 K5 + 0x88100106, // 000D GETMBR R4 R0 K6 + 0x7C080400, // 000E CALL R2 2 + 0x5C080200, // 000F MOVE R2 R1 + 0x580C0007, // 0010 LDCONST R3 K7 + 0x88100108, // 0011 GETMBR R4 R0 K8 + 0x7C080400, // 0012 CALL R2 2 + 0x5C080200, // 0013 MOVE R2 R1 + 0x580C0009, // 0014 LDCONST R3 K9 + 0x8810010A, // 0015 GETMBR R4 R0 K10 + 0x7C080400, // 0016 CALL R2 2 + 0x5C080200, // 0017 MOVE R2 R1 + 0x580C000B, // 0018 LDCONST R3 K11 + 0x8810010C, // 0019 GETMBR R4 R0 K12 + 0x7C080400, // 001A CALL R2 2 + 0x5C080200, // 001B MOVE R2 R1 + 0x580C000D, // 001C LDCONST R3 K13 + 0x8810010E, // 001D GETMBR R4 R0 K14 + 0x7C080400, // 001E CALL R2 2 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(prefix), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(ARG), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x60100008, // 0008 GETGBL R4 G8 + 0x8C140702, // 0009 GETMET R5 R3 K2 + 0x881C0103, // 000A GETMBR R7 R0 K3 + 0x7C140400, // 000B CALL R5 2 + 0x7C100200, // 000C CALL R4 1 + 0x90020204, // 000D SETMBR R0 K1 R4 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_update +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_update, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(prefix), + }), + be_str_weak(parse_update), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x540E0007, // 0000 LDINT R3 8 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0002, // 0002 JMPF R3 #0006 + 0x8C0C0300, // 0003 GETMET R3 R1 K0 + 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x7C0C0400, // 0005 CALL R3 2 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Air_Quality +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Bridge_HTTP; +be_local_class(Matter_Plugin_Bridge_Sensor_Air_Quality, + 8, + &be_class_Matter_Plugin_Bridge_HTTP, + be_nested_map(20, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Air_X20Quality) }, + { be_const_key_weak(shadow_tvoc, 8), be_const_var(7) }, + { be_const_key_weak(shadow_pm10, 7), be_const_var(4) }, + { be_const_key_weak(shadow_pm2_5, -1), be_const_var(3) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Sensor_X20Model) }, + { be_const_key_weak(shadow_co2, -1), be_const_var(5) }, + { be_const_key_weak(parse_update, 18), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_update_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute_closure) }, + { be_const_key_weak(prefix, 13), be_const_var(0) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(44, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values_closure) }, + { be_const_key_weak(shadow_pm1, 11), be_const_var(2) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_airquality) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(12, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(1068, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1069, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1070, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(8, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(5, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1037, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(91, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(29, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(5), + be_const_int(10), + be_const_int(15), + be_const_int(17), + be_const_int(18), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1066, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(1043, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(11, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + be_const_int(9), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_init_closure) }, + { be_const_key_weak(UPDATE_TIME, 3), be_const_int(5000) }, + { be_const_key_weak(shadow_no2, 4), be_const_var(6) }, + { be_const_key_weak(shadow_air_quality, -1), be_const_var(1) }, + { be_const_key_weak(ARG, 0), be_nested_str_weak(airquality) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Air_Quality) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h index cdf9539d2..c69dec160 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h @@ -340,21 +340,22 @@ be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light2, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(set), + /* K5 */ be_nested_str_weak(set_or_nil), /* K6 */ be_nested_str_weak(U1), /* K7 */ be_nested_str_weak(shadow_ct), - /* K8 */ be_const_int(2), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(ct_min), - /* K11 */ be_nested_str_weak(ct_max), - /* K12 */ be_nested_str_weak(U4), - /* K13 */ be_nested_str_weak(read_attribute), + /* K8 */ be_nested_str_weak(set), + /* K9 */ be_const_int(2), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(ct_min), + /* K12 */ be_nested_str_weak(ct_max), + /* K13 */ be_nested_str_weak(U4), + /* K14 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, @@ -380,51 +381,51 @@ be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ 0x541E0007, // 0012 LDINT R7 8 0x1C1C0C07, // 0013 EQ R7 R6 R7 0x781E0005, // 0014 JMPF R7 #001B - 0x8C1C0705, // 0015 GETMET R7 R3 K5 + 0x8C1C0708, // 0015 GETMET R7 R3 K8 0x88240906, // 0016 GETMBR R9 R4 K6 - 0x58280008, // 0017 LDCONST R10 K8 + 0x58280009, // 0017 LDCONST R10 K9 0x7C1C0600, // 0018 CALL R7 3 0x80040E00, // 0019 RET 1 R7 0x70020022, // 001A JMP #003E 0x541E000E, // 001B LDINT R7 15 0x1C1C0C07, // 001C EQ R7 R6 R7 0x781E0005, // 001D JMPF R7 #0024 - 0x8C1C0705, // 001E GETMET R7 R3 K5 + 0x8C1C0708, // 001E GETMET R7 R3 K8 0x88240906, // 001F GETMBR R9 R4 K6 - 0x58280009, // 0020 LDCONST R10 K9 + 0x5828000A, // 0020 LDCONST R10 K10 0x7C1C0600, // 0021 CALL R7 3 0x80040E00, // 0022 RET 1 R7 0x70020019, // 0023 JMP #003E 0x541E400A, // 0024 LDINT R7 16395 0x1C1C0C07, // 0025 EQ R7 R6 R7 0x781E0005, // 0026 JMPF R7 #002D - 0x8C1C0705, // 0027 GETMET R7 R3 K5 + 0x8C1C0708, // 0027 GETMET R7 R3 K8 0x88240906, // 0028 GETMBR R9 R4 K6 - 0x8828010A, // 0029 GETMBR R10 R0 K10 + 0x8828010B, // 0029 GETMBR R10 R0 K11 0x7C1C0600, // 002A CALL R7 3 0x80040E00, // 002B RET 1 R7 0x70020010, // 002C JMP #003E 0x541E400B, // 002D LDINT R7 16396 0x1C1C0C07, // 002E EQ R7 R6 R7 0x781E0005, // 002F JMPF R7 #0036 - 0x8C1C0705, // 0030 GETMET R7 R3 K5 + 0x8C1C0708, // 0030 GETMET R7 R3 K8 0x88240906, // 0031 GETMBR R9 R4 K6 - 0x8828010B, // 0032 GETMBR R10 R0 K11 + 0x8828010C, // 0032 GETMBR R10 R0 K12 0x7C1C0600, // 0033 CALL R7 3 0x80040E00, // 0034 RET 1 R7 0x70020007, // 0035 JMP #003E 0x541EFFFB, // 0036 LDINT R7 65532 0x1C1C0C07, // 0037 EQ R7 R6 R7 0x781E0004, // 0038 JMPF R7 #003E - 0x8C1C0705, // 0039 GETMET R7 R3 K5 - 0x8824090C, // 003A GETMBR R9 R4 K12 + 0x8C1C0708, // 0039 GETMET R7 R3 K8 + 0x8824090D, // 003A GETMBR R9 R4 K13 0x542A000F, // 003B LDINT R10 16 0x7C1C0600, // 003C CALL R7 3 0x80040E00, // 003D RET 1 R7 0x601C0003, // 003E GETGBL R7 G3 0x5C200000, // 003F MOVE R8 R0 0x7C1C0200, // 0040 CALL R7 1 - 0x8C1C0F0D, // 0041 GETMET R7 R7 K13 + 0x8C1C0F0E, // 0041 GETMET R7 R7 K14 0x5C240200, // 0042 MOVE R9 R1 0x5C280400, // 0043 MOVE R10 R2 0x5C2C0600, // 0044 MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h index 2a4feefc7..8df599ab7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h @@ -531,20 +531,21 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light3, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ + ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(update_shadow_lazy), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), + /* K6 */ be_nested_str_weak(set_or_nil), /* K7 */ be_nested_str_weak(U1), /* K8 */ be_nested_str_weak(shadow_hue), /* K9 */ be_const_int(1), /* K10 */ be_nested_str_weak(shadow_sat), - /* K11 */ be_nested_str_weak(U4), - /* K12 */ be_nested_str_weak(read_attribute), + /* K11 */ be_nested_str_weak(set), + /* K12 */ be_nested_str_weak(U4), + /* K13 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, @@ -577,7 +578,7 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E0006, // 0019 LDINT R7 7 0x1C1C0C07, // 001A EQ R7 R6 R7 0x781E0005, // 001B JMPF R7 #0022 - 0x8C1C0706, // 001C GETMET R7 R3 K6 + 0x8C1C070B, // 001C GETMET R7 R3 K11 0x88240907, // 001D GETMBR R9 R4 K7 0x58280005, // 001E LDCONST R10 K5 0x7C1C0600, // 001F CALL R7 3 @@ -586,7 +587,7 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E0007, // 0022 LDINT R7 8 0x1C1C0C07, // 0023 EQ R7 R6 R7 0x781E0005, // 0024 JMPF R7 #002B - 0x8C1C0706, // 0025 GETMET R7 R3 K6 + 0x8C1C070B, // 0025 GETMET R7 R3 K11 0x88240907, // 0026 GETMBR R9 R4 K7 0x58280005, // 0027 LDCONST R10 K5 0x7C1C0600, // 0028 CALL R7 3 @@ -595,7 +596,7 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E000E, // 002B LDINT R7 15 0x1C1C0C07, // 002C EQ R7 R6 R7 0x781E0005, // 002D JMPF R7 #0034 - 0x8C1C0706, // 002E GETMET R7 R3 K6 + 0x8C1C070B, // 002E GETMET R7 R3 K11 0x88240907, // 002F GETMBR R9 R4 K7 0x58280005, // 0030 LDCONST R10 K5 0x7C1C0600, // 0031 CALL R7 3 @@ -604,7 +605,7 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E4000, // 0034 LDINT R7 16385 0x1C1C0C07, // 0035 EQ R7 R6 R7 0x781E0005, // 0036 JMPF R7 #003D - 0x8C1C0706, // 0037 GETMET R7 R3 K6 + 0x8C1C070B, // 0037 GETMET R7 R3 K11 0x88240907, // 0038 GETMBR R9 R4 K7 0x58280005, // 0039 LDCONST R10 K5 0x7C1C0600, // 003A CALL R7 3 @@ -613,7 +614,7 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E4009, // 003D LDINT R7 16394 0x1C1C0C07, // 003E EQ R7 R6 R7 0x781E0005, // 003F JMPF R7 #0046 - 0x8C1C0706, // 0040 GETMET R7 R3 K6 + 0x8C1C070B, // 0040 GETMET R7 R3 K11 0x88240907, // 0041 GETMBR R9 R4 K7 0x58280009, // 0042 LDCONST R10 K9 0x7C1C0600, // 0043 CALL R7 3 @@ -622,7 +623,7 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E000F, // 0046 LDINT R7 16 0x1C1C0C07, // 0047 EQ R7 R6 R7 0x781E0005, // 0048 JMPF R7 #004F - 0x8C1C0706, // 0049 GETMET R7 R3 K6 + 0x8C1C070B, // 0049 GETMET R7 R3 K11 0x88240907, // 004A GETMBR R9 R4 K7 0x58280005, // 004B LDCONST R10 K5 0x7C1C0600, // 004C CALL R7 3 @@ -631,15 +632,15 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541EFFFB, // 004F LDINT R7 65532 0x1C1C0C07, // 0050 EQ R7 R6 R7 0x781E0004, // 0051 JMPF R7 #0057 - 0x8C1C0706, // 0052 GETMET R7 R3 K6 - 0x8824090B, // 0053 GETMBR R9 R4 K11 + 0x8C1C070B, // 0052 GETMET R7 R3 K11 + 0x8824090C, // 0053 GETMBR R9 R4 K12 0x58280009, // 0054 LDCONST R10 K9 0x7C1C0600, // 0055 CALL R7 3 0x80040E00, // 0056 RET 1 R7 0x601C0003, // 0057 GETGBL R7 G3 0x5C200000, // 0058 MOVE R8 R0 0x7C1C0200, // 0059 CALL R7 1 - 0x8C1C0F0C, // 005A GETMET R7 R7 K12 + 0x8C1C0F0D, // 005A GETMET R7 R7 K13 0x5C240200, // 005B MOVE R9 R1 0x5C280400, // 005C MOVE R10 R2 0x5C2C0600, // 005D MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h index 2bd05cb2e..b8f7cb5b0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h @@ -71,94 +71,8 @@ be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_value_changed, /* name ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Flow, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0403, // 0004 LDINT R7 1028 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x58280004, // 001F LDCONST R10 K4 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542AFFFD, // 0027 LDINT R10 65534 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 - }) - ) -); -/*******************************************************************/ - +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Flow' +extern bclosure *class_Matter_Plugin_Sensor_Flow_read_attribute; /******************************************************************** ** Solidified function: web_values @@ -218,7 +132,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Flow, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(774, -1), be_const_int(1) }, })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_read_attribute_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_static_closure(class_Matter_Plugin_Sensor_Flow_read_attribute_closure) }, { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_value_changed_closure) }, { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Flow) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_flow) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h index 5805df777..0c1681ff3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h @@ -71,94 +71,8 @@ be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_value_changed, /* ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Humidity, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0404, // 0004 LDINT R7 1029 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x542A01F3, // 001F LDINT R10 500 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542A270F, // 0027 LDINT R10 10000 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 - }) - ) -); -/*******************************************************************/ - +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Humidity' +extern bclosure *class_Matter_Plugin_Sensor_Humidity_read_attribute; /******************************************************************** ** Solidified function: web_values @@ -226,7 +140,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Humidity, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(775, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_read_attribute_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute_closure) }, { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_value_changed_closure) }, { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Humidity) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_humidity) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h index e31c317b6..49558b390 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h @@ -83,94 +83,8 @@ be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_value_changed, ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Illuminance, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E03FF, // 0004 LDINT R7 1024 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x58280009, // 001F LDCONST R10 K9 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542AFFFD, // 0027 LDINT R10 65534 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 - }) - ) -); -/*******************************************************************/ - +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Illuminance' +extern bclosure *class_Matter_Plugin_Sensor_Illuminance_read_attribute; /******************************************************************** ** Solidified function: web_values @@ -230,7 +144,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(262, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute_closure) }, { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_value_changed_closure) }, { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Illuminance) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_illuminance) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h index 1e4078565..4a8cf45cd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h @@ -70,94 +70,8 @@ be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_value_changed, /* ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Pressure, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(I2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0402, // 0004 LDINT R7 1027 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x542A01F3, // 001F LDINT R10 500 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542A05DB, // 0027 LDINT R10 1500 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 - }) - ) -); -/*******************************************************************/ - +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Pressure' +extern bclosure *class_Matter_Plugin_Sensor_Pressure_read_attribute; /******************************************************************** ** Solidified function: web_values @@ -217,7 +131,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Pressure, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(773, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_read_attribute_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute_closure) }, { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_value_changed_closure) }, { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Pressure) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_pressure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h index 491a9e29c..001b3984d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h @@ -83,92 +83,8 @@ be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_value_changed, /* name ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Temp, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(I2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0401, // 0004 LDINT R7 1026 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0020, // 0006 JMPF R7 #0028 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000F, // 0008 JMPF R7 #0019 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x7002000E, // 0018 JMP #0028 - 0x1C1C0D09, // 0019 EQ R7 R6 K9 - 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C0706, // 001B GETMET R7 R3 K6 - 0x88240907, // 001C GETMBR R9 R4 K7 - 0x5429EC77, // 001D LDINT R10 -5000 - 0x7C1C0600, // 001E CALL R7 3 - 0x80040E00, // 001F RET 1 R7 - 0x70020006, // 0020 JMP #0028 - 0x1C1C0D0A, // 0021 EQ R7 R6 K10 - 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C0706, // 0023 GETMET R7 R3 K6 - 0x88240907, // 0024 GETMBR R9 R4 K7 - 0x542A3A97, // 0025 LDINT R10 15000 - 0x7C1C0600, // 0026 CALL R7 3 - 0x80040E00, // 0027 RET 1 R7 - 0x601C0003, // 0028 GETGBL R7 G3 - 0x5C200000, // 0029 MOVE R8 R0 - 0x7C1C0200, // 002A CALL R7 1 - 0x8C1C0F0B, // 002B GETMET R7 R7 K11 - 0x5C240200, // 002C MOVE R9 R1 - 0x5C280400, // 002D MOVE R10 R2 - 0x5C2C0600, // 002E MOVE R11 R3 - 0x7C1C0800, // 002F CALL R7 4 - 0x80040E00, // 0030 RET 1 R7 - }) - ) -); -/*******************************************************************/ - +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Temp' +extern bclosure *class_Matter_Plugin_Sensor_Temp_read_attribute; /******************************************************************** ** Solidified function: web_values @@ -236,7 +152,7 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Temp, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(770, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_read_attribute_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Temp_read_attribute_closure) }, { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_value_changed_closure) }, { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Temperature) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_temperature) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h index 8015c80ee..703f9b595 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h @@ -354,127 +354,8 @@ be_local_closure(class_Matter_Plugin_Bridge_Light2_invoke_request, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(shadow_ct), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(2), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(ct_min), - /* K12 */ be_nested_str_weak(ct_max), - /* K13 */ be_nested_str_weak(U4), - /* K14 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E02FF, // 0004 LDINT R7 768 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0040, // 0006 JMPF R7 #0048 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x541E0006, // 0009 LDINT R7 7 - 0x1C1C0C07, // 000A EQ R7 R6 R7 - 0x781E000F, // 000B JMPF R7 #001C - 0x881C0105, // 000C GETMBR R7 R0 K5 - 0x4C200000, // 000D LDNIL R8 - 0x201C0E08, // 000E NE R7 R7 R8 - 0x781E0005, // 000F JMPF R7 #0016 - 0x8C1C0706, // 0010 GETMET R7 R3 K6 - 0x88240907, // 0011 GETMBR R9 R4 K7 - 0x88280105, // 0012 GETMBR R10 R0 K5 - 0x7C1C0600, // 0013 CALL R7 3 - 0x80040E00, // 0014 RET 1 R7 - 0x70020004, // 0015 JMP #001B - 0x8C1C0706, // 0016 GETMET R7 R3 K6 - 0x88240908, // 0017 GETMBR R9 R4 K8 - 0x4C280000, // 0018 LDNIL R10 - 0x7C1C0600, // 0019 CALL R7 3 - 0x80040E00, // 001A RET 1 R7 - 0x7002002B, // 001B JMP #0048 - 0x541E0007, // 001C LDINT R7 8 - 0x1C1C0C07, // 001D EQ R7 R6 R7 - 0x781E0005, // 001E JMPF R7 #0025 - 0x8C1C0706, // 001F GETMET R7 R3 K6 - 0x88240907, // 0020 GETMBR R9 R4 K7 - 0x58280009, // 0021 LDCONST R10 K9 - 0x7C1C0600, // 0022 CALL R7 3 - 0x80040E00, // 0023 RET 1 R7 - 0x70020022, // 0024 JMP #0048 - 0x541E000E, // 0025 LDINT R7 15 - 0x1C1C0C07, // 0026 EQ R7 R6 R7 - 0x781E0005, // 0027 JMPF R7 #002E - 0x8C1C0706, // 0028 GETMET R7 R3 K6 - 0x88240907, // 0029 GETMBR R9 R4 K7 - 0x5828000A, // 002A LDCONST R10 K10 - 0x7C1C0600, // 002B CALL R7 3 - 0x80040E00, // 002C RET 1 R7 - 0x70020019, // 002D JMP #0048 - 0x541E400A, // 002E LDINT R7 16395 - 0x1C1C0C07, // 002F EQ R7 R6 R7 - 0x781E0005, // 0030 JMPF R7 #0037 - 0x8C1C0706, // 0031 GETMET R7 R3 K6 - 0x88240907, // 0032 GETMBR R9 R4 K7 - 0x8828010B, // 0033 GETMBR R10 R0 K11 - 0x7C1C0600, // 0034 CALL R7 3 - 0x80040E00, // 0035 RET 1 R7 - 0x70020010, // 0036 JMP #0048 - 0x541E400B, // 0037 LDINT R7 16396 - 0x1C1C0C07, // 0038 EQ R7 R6 R7 - 0x781E0005, // 0039 JMPF R7 #0040 - 0x8C1C0706, // 003A GETMET R7 R3 K6 - 0x88240907, // 003B GETMBR R9 R4 K7 - 0x8828010C, // 003C GETMBR R10 R0 K12 - 0x7C1C0600, // 003D CALL R7 3 - 0x80040E00, // 003E RET 1 R7 - 0x70020007, // 003F JMP #0048 - 0x541E4009, // 0040 LDINT R7 16394 - 0x1C1C0C07, // 0041 EQ R7 R6 R7 - 0x781E0004, // 0042 JMPF R7 #0048 - 0x8C1C0706, // 0043 GETMET R7 R3 K6 - 0x8824090D, // 0044 GETMBR R9 R4 K13 - 0x542A000F, // 0045 LDINT R10 16 - 0x7C1C0600, // 0046 CALL R7 3 - 0x80040E00, // 0047 RET 1 R7 - 0x601C0003, // 0048 GETGBL R7 G3 - 0x5C200000, // 0049 MOVE R8 R0 - 0x7C1C0200, // 004A CALL R7 1 - 0x8C1C0F0E, // 004B GETMET R7 R7 K14 - 0x5C240200, // 004C MOVE R9 R1 - 0x5C280400, // 004D MOVE R10 R2 - 0x5C2C0600, // 004E MOVE R11 R3 - 0x7C1C0800, // 004F CALL R7 4 - 0x80040E00, // 0050 RET 1 R7 - }) - ) -); -/*******************************************************************/ - +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Light2' +extern bclosure *class_Matter_Plugin_Light2_read_attribute; /******************************************************************** ** Solidified function: update_ct_minmax @@ -659,7 +540,7 @@ be_local_class(Matter_Plugin_Bridge_Light2, { be_const_key_weak(shadow_ct, -1), be_const_var(0) }, { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_update_ct_minmax_closure) }, { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_invoke_request_closure) }, - { be_const_key_weak(read_attribute, 10), be_const_closure(class_Matter_Plugin_Bridge_Light2_read_attribute_closure) }, + { be_const_key_weak(read_attribute, 10), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) }, { be_const_key_weak(ct_min, -1), be_const_var(1) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light2) }, })), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h index 303f3ecc7..31cbfdca5 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h @@ -298,152 +298,8 @@ be_local_closure(class_Matter_Plugin_Bridge_Light3_web_value_RGB, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(shadow_hue), - /* K7 */ be_nested_str_weak(set), - /* K8 */ be_nested_str_weak(U1), - /* K9 */ be_nested_str_weak(NULL), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_nested_str_weak(U4), - /* K13 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E02FF, // 0004 LDINT R7 768 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E005A, // 0006 JMPF R7 #0062 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 - 0x781E000F, // 000A JMPF R7 #001B - 0x881C0106, // 000B GETMBR R7 R0 K6 - 0x4C200000, // 000C LDNIL R8 - 0x201C0E08, // 000D NE R7 R7 R8 - 0x781E0005, // 000E JMPF R7 #0015 - 0x8C1C0707, // 000F GETMET R7 R3 K7 - 0x88240908, // 0010 GETMBR R9 R4 K8 - 0x88280106, // 0011 GETMBR R10 R0 K6 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0707, // 0015 GETMET R7 R3 K7 - 0x88240909, // 0016 GETMBR R9 R4 K9 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x70020046, // 001A JMP #0062 - 0x1C1C0D0A, // 001B EQ R7 R6 K10 - 0x781E000F, // 001C JMPF R7 #002D - 0x881C010B, // 001D GETMBR R7 R0 K11 - 0x4C200000, // 001E LDNIL R8 - 0x201C0E08, // 001F NE R7 R7 R8 - 0x781E0005, // 0020 JMPF R7 #0027 - 0x8C1C0707, // 0021 GETMET R7 R3 K7 - 0x88240908, // 0022 GETMBR R9 R4 K8 - 0x8828010B, // 0023 GETMBR R10 R0 K11 - 0x7C1C0600, // 0024 CALL R7 3 - 0x80040E00, // 0025 RET 1 R7 - 0x70020004, // 0026 JMP #002C - 0x8C1C0707, // 0027 GETMET R7 R3 K7 - 0x88240909, // 0028 GETMBR R9 R4 K9 - 0x4C280000, // 0029 LDNIL R10 - 0x7C1C0600, // 002A CALL R7 3 - 0x80040E00, // 002B RET 1 R7 - 0x70020034, // 002C JMP #0062 - 0x541E0006, // 002D LDINT R7 7 - 0x1C1C0C07, // 002E EQ R7 R6 R7 - 0x781E0005, // 002F JMPF R7 #0036 - 0x8C1C0707, // 0030 GETMET R7 R3 K7 - 0x88240908, // 0031 GETMBR R9 R4 K8 - 0x58280005, // 0032 LDCONST R10 K5 - 0x7C1C0600, // 0033 CALL R7 3 - 0x80040E00, // 0034 RET 1 R7 - 0x7002002B, // 0035 JMP #0062 - 0x541E0007, // 0036 LDINT R7 8 - 0x1C1C0C07, // 0037 EQ R7 R6 R7 - 0x781E0005, // 0038 JMPF R7 #003F - 0x8C1C0707, // 0039 GETMET R7 R3 K7 - 0x88240908, // 003A GETMBR R9 R4 K8 - 0x58280005, // 003B LDCONST R10 K5 - 0x7C1C0600, // 003C CALL R7 3 - 0x80040E00, // 003D RET 1 R7 - 0x70020022, // 003E JMP #0062 - 0x541E000E, // 003F LDINT R7 15 - 0x1C1C0C07, // 0040 EQ R7 R6 R7 - 0x781E0005, // 0041 JMPF R7 #0048 - 0x8C1C0707, // 0042 GETMET R7 R3 K7 - 0x88240908, // 0043 GETMBR R9 R4 K8 - 0x58280005, // 0044 LDCONST R10 K5 - 0x7C1C0600, // 0045 CALL R7 3 - 0x80040E00, // 0046 RET 1 R7 - 0x70020019, // 0047 JMP #0062 - 0x541E4000, // 0048 LDINT R7 16385 - 0x1C1C0C07, // 0049 EQ R7 R6 R7 - 0x781E0005, // 004A JMPF R7 #0051 - 0x8C1C0707, // 004B GETMET R7 R3 K7 - 0x88240908, // 004C GETMBR R9 R4 K8 - 0x58280005, // 004D LDCONST R10 K5 - 0x7C1C0600, // 004E CALL R7 3 - 0x80040E00, // 004F RET 1 R7 - 0x70020010, // 0050 JMP #0062 - 0x541E4009, // 0051 LDINT R7 16394 - 0x1C1C0C07, // 0052 EQ R7 R6 R7 - 0x781E0005, // 0053 JMPF R7 #005A - 0x8C1C0707, // 0054 GETMET R7 R3 K7 - 0x8824090C, // 0055 GETMBR R9 R4 K12 - 0x5828000A, // 0056 LDCONST R10 K10 - 0x7C1C0600, // 0057 CALL R7 3 - 0x80040E00, // 0058 RET 1 R7 - 0x70020007, // 0059 JMP #0062 - 0x541E000F, // 005A LDINT R7 16 - 0x1C1C0C07, // 005B EQ R7 R6 R7 - 0x781E0004, // 005C JMPF R7 #0062 - 0x8C1C0707, // 005D GETMET R7 R3 K7 - 0x88240908, // 005E GETMBR R9 R4 K8 - 0x58280005, // 005F LDCONST R10 K5 - 0x7C1C0600, // 0060 CALL R7 3 - 0x80040E00, // 0061 RET 1 R7 - 0x601C0003, // 0062 GETGBL R7 G3 - 0x5C200000, // 0063 MOVE R8 R0 - 0x7C1C0200, // 0064 CALL R7 1 - 0x8C1C0F0D, // 0065 GETMET R7 R7 K13 - 0x5C240200, // 0066 MOVE R9 R1 - 0x5C280400, // 0067 MOVE R10 R2 - 0x5C2C0600, // 0068 MOVE R11 R3 - 0x7C1C0800, // 0069 CALL R7 4 - 0x80040E00, // 006A RET 1 R7 - }) - ) -); -/*******************************************************************/ - +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Light3' +extern bclosure *class_Matter_Plugin_Light3_read_attribute; /******************************************************************** ** Solidified function: invoke_request @@ -835,7 +691,7 @@ be_local_class(Matter_Plugin_Bridge_Light3, { be_const_key_int(269, -1), be_const_int(2) }, })) ) } )) }, { be_const_key_weak(shadow_sat, -1), be_const_var(1) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_read_attribute_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) }, })), be_str_weak(Matter_Plugin_Bridge_Light3) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h new file mode 100644 index 000000000..74d87f05f --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h @@ -0,0 +1,27 @@ +/* Solidification of Matter_Plugin_9_Virt_Sensor_Air_Quality.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Virt_Sensor_Air_Quality; + +/******************************************************************** +** Solidified class: Matter_Plugin_Virt_Sensor_Air_Quality +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_class(Matter_Plugin_Virt_Sensor_Air_Quality, + 0, + &be_class_Matter_Plugin_Sensor_Air_Quality, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EAir_X20Quality) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_airquality) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(ARG, 2), be_nested_str_weak() }, + })), + be_str_weak(Matter_Plugin_Virt_Sensor_Air_Quality) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index 7df38a55c..d88b86b6b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -7,37 +7,12 @@ extern const bclass be_class_Matter_TLV_item; /******************************************************************** -** Solidified function: to_TLV +** Solidified function: reset ********************************************************************/ extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_to_TLV, /* name */ +be_local_closure(class_Matter_TLV_item_reset, /* name */ be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(to_TLV), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80040000, // 0000 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_parent -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_set_parent, /* name */ - be_nested_proto( - 2, /* nstack */ + 3, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -45,14 +20,29 @@ be_local_closure(class_Matter_TLV_item_set_parent, /* name */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(parent), + /* K1 */ be_nested_str_weak(next_idx), + /* K2 */ be_nested_str_weak(tag_vendor), + /* K3 */ be_nested_str_weak(tag_profile), + /* K4 */ be_nested_str_weak(tag_number), + /* K5 */ be_nested_str_weak(tag_sub), + /* K6 */ be_nested_str_weak(typ), + /* K7 */ be_nested_str_weak(val), }), - be_str_weak(set_parent), + be_str_weak(reset), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 + ( &(const binstruction[10]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90020202, // 0002 SETMBR R0 K1 R2 + 0x90020402, // 0003 SETMBR R0 K2 R2 + 0x90020602, // 0004 SETMBR R0 K3 R2 + 0x90020802, // 0005 SETMBR R0 K4 R2 + 0x90020A02, // 0006 SETMBR R0 K5 R2 + 0x90020C02, // 0007 SETMBR R0 K6 R2 + 0x90020E02, // 0008 SETMBR R0 K7 R2 + 0x80000000, // 0009 RET 0 }) ) ); @@ -60,279 +50,43 @@ be_local_closure(class_Matter_TLV_item_set_parent, /* name */ /******************************************************************** -** Solidified function: set_fulltag +** Solidified function: set_or_nil ********************************************************************/ extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */ +be_local_closure(class_Matter_TLV_item_set_or_nil, /* name */ be_nested_proto( - 6, /* nstack */ - 4, /* argc */ + 5, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_vendor), - /* K1 */ be_nested_str_weak(tag_profile), - /* K2 */ be_nested_str_weak(tag_number), - /* K3 */ be_nested_str_weak(tag_sub), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(typ), + /* K2 */ be_nested_str_weak(val), }), - be_str_weak(set_fulltag), + be_str_weak(set_or_nil), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60100009, // 0000 GETGBL R4 G9 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C100200, // 0002 CALL R4 1 - 0x90020004, // 0003 SETMBR R0 K0 R4 - 0x60100009, // 0004 GETGBL R4 G9 - 0x5C140400, // 0005 MOVE R5 R2 - 0x7C100200, // 0006 CALL R4 1 - 0x90020204, // 0007 SETMBR R0 K1 R4 - 0x60100009, // 0008 GETGBL R4 G9 - 0x5C140600, // 0009 MOVE R5 R3 - 0x7C100200, // 000A CALL R4 1 - 0x90020404, // 000B SETMBR R0 K2 R4 - 0x4C100000, // 000C LDNIL R4 - 0x90020604, // 000D SETMBR R0 K3 R4 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_contextspecific -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_fulltag), - /* K1 */ be_nested_str_weak(tag_sub), - }), - be_str_weak(set_contextspecific), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x60080009, // 0002 GETGBL R2 G9 - 0x5C0C0200, // 0003 MOVE R3 R1 - 0x7C080200, // 0004 CALL R2 1 - 0x90020202, // 0005 SETMBR R0 K1 R2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sort -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_sort, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV_item), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(_cmp_gt), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(sort), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020013, // 0008 EXBLK 0 #001D - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A000B, // 000E JMPF R6 #001B - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x8C180D03, // 0011 GETMET R6 R6 K3 - 0x5C200800, // 0012 MOVE R8 R4 - 0x7C180400, // 0013 CALL R6 2 - 0x24180D02, // 0014 GT R6 R6 K2 - 0x781A0004, // 0015 JMPF R6 #001B - 0x04180B01, // 0016 SUB R6 R5 K1 - 0x94180006, // 0017 GETIDX R6 R0 R6 - 0x98000A06, // 0018 SETIDX R0 R5 R6 - 0x04140B01, // 0019 SUB R5 R5 K1 - 0x7001FFF1, // 001A JMP #000D - 0x98000A04, // 001B SETIDX R0 R5 R4 - 0x7001FFEB, // 001C JMP #0009 - 0x58080004, // 001D LDCONST R2 K4 - 0xAC080200, // 001E CATCH R2 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0x80040000, // 0020 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: to_str_val -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(int), - /* K2 */ be_nested_str_weak(typ), - /* K3 */ be_nested_str_weak(TLV), - /* K4 */ be_nested_str_weak(U1), - /* K5 */ be_nested_str_weak(U8), - /* K6 */ be_nested_str_weak(U), - /* K7 */ be_nested_str_weak(bool), - /* K8 */ be_nested_str_weak(true), - /* K9 */ be_nested_str_weak(false), - /* K10 */ be_nested_str_weak(null), - /* K11 */ be_nested_str_weak(real), - /* K12 */ be_nested_str_weak(string), - /* K13 */ be_nested_str_weak(int64), - /* K14 */ be_nested_str_weak(tostring), - /* K15 */ be_nested_str_weak(instance), - }), - be_str_weak(to_str_val), - &be_const_str_solidified, - ( &(const binstruction[98]) { /* code */ - 0x60040004, // 0000 GETGBL R1 G4 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 - 0x78060014, // 0004 JMPF R1 #001A - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x88080103, // 0006 GETMBR R2 R0 K3 - 0x88080504, // 0007 GETMBR R2 R2 K4 - 0x28040202, // 0008 GE R1 R1 R2 - 0x7806000A, // 0009 JMPF R1 #0015 - 0x88040102, // 000A GETMBR R1 R0 K2 - 0x88080103, // 000B GETMBR R2 R0 K3 - 0x88080505, // 000C GETMBR R2 R2 K5 - 0x18040202, // 000D LE R1 R1 R2 - 0x78060005, // 000E JMPF R1 #0015 - 0x60040008, // 000F GETGBL R1 G8 - 0x88080100, // 0010 GETMBR R2 R0 K0 - 0x7C040200, // 0011 CALL R1 1 - 0x00040306, // 0012 ADD R1 R1 K6 - 0x80040200, // 0013 RET 1 R1 - 0x70020003, // 0014 JMP #0019 - 0x60040008, // 0015 GETGBL R1 G8 - 0x88080100, // 0016 GETMBR R2 R0 K0 - 0x7C040200, // 0017 CALL R1 1 - 0x80040200, // 0018 RET 1 R1 - 0x70020046, // 0019 JMP #0061 - 0x60040004, // 001A GETGBL R1 G4 - 0x88080100, // 001B GETMBR R2 R0 K0 - 0x7C040200, // 001C CALL R1 1 - 0x1C040307, // 001D EQ R1 R1 K7 - 0x78060006, // 001E JMPF R1 #0026 - 0x88040100, // 001F GETMBR R1 R0 K0 - 0x78060001, // 0020 JMPF R1 #0023 - 0x58040008, // 0021 LDCONST R1 K8 - 0x70020000, // 0022 JMP #0024 - 0x58040009, // 0023 LDCONST R1 K9 - 0x80040200, // 0024 RET 1 R1 - 0x7002003A, // 0025 JMP #0061 - 0x88040100, // 0026 GETMBR R1 R0 K0 - 0x4C080000, // 0027 LDNIL R2 - 0x1C040202, // 0028 EQ R1 R1 R2 - 0x78060001, // 0029 JMPF R1 #002C - 0x80061400, // 002A RET 1 K10 - 0x70020034, // 002B JMP #0061 - 0x60040004, // 002C GETGBL R1 G4 - 0x88080100, // 002D GETMBR R2 R0 K0 - 0x7C040200, // 002E CALL R1 1 - 0x1C04030B, // 002F EQ R1 R1 K11 - 0x78060004, // 0030 JMPF R1 #0036 - 0x60040008, // 0031 GETGBL R1 G8 - 0x88080100, // 0032 GETMBR R2 R0 K0 - 0x7C040200, // 0033 CALL R1 1 - 0x80040200, // 0034 RET 1 R1 - 0x7002002A, // 0035 JMP #0061 - 0x60040004, // 0036 GETGBL R1 G4 - 0x88080100, // 0037 GETMBR R2 R0 K0 - 0x7C040200, // 0038 CALL R1 1 - 0x1C04030C, // 0039 EQ R1 R1 K12 - 0x78060002, // 003A JMPF R1 #003E - 0x88040100, // 003B GETMBR R1 R0 K0 - 0x80040200, // 003C RET 1 R1 - 0x70020022, // 003D JMP #0061 - 0x6004000F, // 003E GETGBL R1 G15 - 0x88080100, // 003F GETMBR R2 R0 K0 - 0xB80E1A00, // 0040 GETNGBL R3 K13 - 0x7C040400, // 0041 CALL R1 2 - 0x78060014, // 0042 JMPF R1 #0058 - 0x88040102, // 0043 GETMBR R1 R0 K2 - 0x88080103, // 0044 GETMBR R2 R0 K3 - 0x88080504, // 0045 GETMBR R2 R2 K4 - 0x28040202, // 0046 GE R1 R1 R2 - 0x7806000A, // 0047 JMPF R1 #0053 - 0x88040102, // 0048 GETMBR R1 R0 K2 - 0x88080103, // 0049 GETMBR R2 R0 K3 - 0x88080505, // 004A GETMBR R2 R2 K5 - 0x18040202, // 004B LE R1 R1 R2 - 0x78060005, // 004C JMPF R1 #0053 - 0x88040100, // 004D GETMBR R1 R0 K0 - 0x8C04030E, // 004E GETMET R1 R1 K14 - 0x7C040200, // 004F CALL R1 1 - 0x00040306, // 0050 ADD R1 R1 K6 - 0x80040200, // 0051 RET 1 R1 - 0x70020003, // 0052 JMP #0057 - 0x88040100, // 0053 GETMBR R1 R0 K0 - 0x8C04030E, // 0054 GETMET R1 R1 K14 - 0x7C040200, // 0055 CALL R1 1 - 0x80040200, // 0056 RET 1 R1 - 0x70020008, // 0057 JMP #0061 - 0x60040004, // 0058 GETGBL R1 G4 - 0x88080100, // 0059 GETMBR R2 R0 K0 - 0x7C040200, // 005A CALL R1 1 - 0x1C04030F, // 005B EQ R1 R1 K15 - 0x78060003, // 005C JMPF R1 #0061 - 0x8C04010E, // 005D GETMET R1 R0 K14 - 0x500C0200, // 005E LDBOOL R3 1 0 - 0x7C040400, // 005F CALL R1 2 - 0x80040200, // 0060 RET 1 R1 - 0x80000000, // 0061 RET 0 + ( &(const binstruction[16]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0403, // 0003 EQ R3 R2 R3 + 0x780E0000, // 0004 JMPF R3 #0006 + 0x54060013, // 0005 LDINT R1 20 + 0x4C0C0000, // 0006 LDNIL R3 + 0x200C0403, // 0007 NE R3 R2 R3 + 0x740E0002, // 0008 JMPT R3 #000C + 0x540E0013, // 0009 LDINT R3 20 + 0x1C0C0203, // 000A EQ R3 R1 R3 + 0x780E0002, // 000B JMPF R3 #000F + 0x90020201, // 000C SETMBR R0 K1 R1 + 0x90020402, // 000D SETMBR R0 K2 R2 + 0x80040000, // 000E RET 1 R0 + 0x80000000, // 000F RET 0 }) ) ); @@ -655,42 +409,39 @@ be_local_closure(class_Matter_TLV_item_encode_len, /* name */ /******************************************************************** -** Solidified function: reset +** Solidified function: set ********************************************************************/ extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_reset, /* name */ +be_local_closure(class_Matter_TLV_item_set, /* name */ be_nested_proto( - 3, /* nstack */ - 2, /* argc */ + 5, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(parent), - /* K1 */ be_nested_str_weak(next_idx), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(tag_profile), - /* K4 */ be_nested_str_weak(tag_number), - /* K5 */ be_nested_str_weak(tag_sub), - /* K6 */ be_nested_str_weak(typ), - /* K7 */ be_nested_str_weak(val), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(typ), + /* K2 */ be_nested_str_weak(val), }), - be_str_weak(reset), + be_str_weak(set), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x90020202, // 0002 SETMBR R0 K1 R2 - 0x90020402, // 0003 SETMBR R0 K2 R2 - 0x90020602, // 0004 SETMBR R0 K3 R2 - 0x90020802, // 0005 SETMBR R0 K4 R2 - 0x90020A02, // 0006 SETMBR R0 K5 R2 - 0x90020C02, // 0007 SETMBR R0 K6 R2 - 0x90020E02, // 0008 SETMBR R0 K7 R2 - 0x80000000, // 0009 RET 0 + ( &(const binstruction[12]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x200C0403, // 0003 NE R3 R2 R3 + 0x740E0002, // 0004 JMPT R3 #0008 + 0x540E0013, // 0005 LDINT R3 20 + 0x1C0C0203, // 0006 EQ R3 R1 R3 + 0x780E0002, // 0007 JMPF R3 #000B + 0x90020201, // 0008 SETMBR R0 K1 R1 + 0x90020402, // 0009 SETMBR R0 K2 R2 + 0x80040000, // 000A RET 1 R0 + 0x80000000, // 000B RET 0 }) ) ); @@ -698,40 +449,433 @@ be_local_closure(class_Matter_TLV_item_reset, /* name */ /******************************************************************** -** Solidified function: create_TLV +** Solidified function: to_TLV ********************************************************************/ extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ +be_local_closure(class_Matter_TLV_item_to_TLV, /* name */ be_nested_proto( - 4, /* nstack */ + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(to_TLV), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80040000, // 0000 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_tostring, /* name */ + be_nested_proto( + 7, /* nstack */ 2, /* argc */ - 4, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV_item), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(val), + ( &(const bvalue[34]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(tag_profile), + /* K2 */ be_nested_str_weak(Matter_X3A_X3A), + /* K3 */ be_nested_str_weak(tag_number), + /* K4 */ be_nested_str_weak(0x_X2508X_X20), + /* K5 */ be_nested_str_weak(tag_vendor), + /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A), + /* K7 */ be_nested_str_weak(0x_X2504X_X3A), + /* K8 */ be_nested_str_weak(tag_sub), + /* K9 */ be_nested_str_weak(_X25i_X20), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(_X3D_X20), + /* K12 */ be_nested_str_weak(val), + /* K13 */ be_nested_str_weak(int), + /* K14 */ be_nested_str_weak(_X25i), + /* K15 */ be_nested_str_weak(typ), + /* K16 */ be_nested_str_weak(TLV), + /* K17 */ be_nested_str_weak(U1), + /* K18 */ be_nested_str_weak(U8), + /* K19 */ be_nested_str_weak(U), + /* K20 */ be_nested_str_weak(bool), + /* K21 */ be_nested_str_weak(true), + /* K22 */ be_nested_str_weak(false), + /* K23 */ be_nested_str_weak(null), + /* K24 */ be_nested_str_weak(real), + /* K25 */ be_nested_str_weak(_X25g), + /* K26 */ be_nested_str_weak(string), + /* K27 */ be_nested_str_weak(_X22_X25s_X22), + /* K28 */ be_nested_str_weak(int64), + /* K29 */ be_nested_str_weak(tostring), + /* K30 */ be_nested_str_weak(instance), + /* K31 */ be_nested_str_weak(_X25s), + /* K32 */ be_nested_str_weak(tohex), + /* K33 */ be_nested_str_weak(_X20), }), - be_str_weak(create_TLV), + be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ + ( &(const binstruction[167]) { /* code */ 0x58080000, // 0000 LDCONST R2 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x200C0203, // 0002 NE R3 R1 R3 - 0x740E0002, // 0003 JMPT R3 #0007 - 0x540E0013, // 0004 LDINT R3 20 - 0x1C0C0003, // 0005 EQ R3 R0 R3 - 0x780E0004, // 0006 JMPF R3 #000C - 0x5C0C0400, // 0007 MOVE R3 R2 - 0x7C0C0000, // 0008 CALL R3 0 - 0x900E0200, // 0009 SETMBR R3 K1 R0 - 0x900E0401, // 000A SETMBR R3 K2 R1 - 0x80040600, // 000B RET 1 R3 - 0x80000000, // 000C RET 0 + 0xA802009C, // 0001 EXBLK 0 #009F + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x200C0203, // 0003 NE R3 R1 R3 + 0x780E0038, // 0004 JMPF R3 #003E + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x5411FFFE, // 0006 LDINT R4 -1 + 0x1C0C0604, // 0007 EQ R3 R3 R4 + 0x780E000A, // 0008 JMPF R3 #0014 + 0x00080502, // 0009 ADD R2 R2 K2 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x4C100000, // 000B LDNIL R4 + 0x200C0604, // 000C NE R3 R3 R4 + 0x780E0004, // 000D JMPF R3 #0013 + 0x600C0018, // 000E GETGBL R3 G24 + 0x58100004, // 000F LDCONST R4 K4 + 0x88140103, // 0010 GETMBR R5 R0 K3 + 0x7C0C0400, // 0011 CALL R3 2 + 0x00080403, // 0012 ADD R2 R2 R3 + 0x70020023, // 0013 JMP #0038 + 0x880C0105, // 0014 GETMBR R3 R0 K5 + 0x4C100000, // 0015 LDNIL R4 + 0x200C0604, // 0016 NE R3 R3 R4 + 0x780E0004, // 0017 JMPF R3 #001D + 0x600C0018, // 0018 GETGBL R3 G24 + 0x58100006, // 0019 LDCONST R4 K6 + 0x88140105, // 001A GETMBR R5 R0 K5 + 0x7C0C0400, // 001B CALL R3 2 + 0x00080403, // 001C ADD R2 R2 R3 + 0x880C0101, // 001D GETMBR R3 R0 K1 + 0x4C100000, // 001E LDNIL R4 + 0x200C0604, // 001F NE R3 R3 R4 + 0x780E0004, // 0020 JMPF R3 #0026 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100007, // 0022 LDCONST R4 K7 + 0x88140101, // 0023 GETMBR R5 R0 K1 + 0x7C0C0400, // 0024 CALL R3 2 + 0x00080403, // 0025 ADD R2 R2 R3 + 0x880C0103, // 0026 GETMBR R3 R0 K3 + 0x4C100000, // 0027 LDNIL R4 + 0x200C0604, // 0028 NE R3 R3 R4 + 0x780E0004, // 0029 JMPF R3 #002F + 0x600C0018, // 002A GETGBL R3 G24 + 0x58100004, // 002B LDCONST R4 K4 + 0x88140103, // 002C GETMBR R5 R0 K3 + 0x7C0C0400, // 002D CALL R3 2 + 0x00080403, // 002E ADD R2 R2 R3 + 0x880C0108, // 002F GETMBR R3 R0 K8 + 0x4C100000, // 0030 LDNIL R4 + 0x200C0604, // 0031 NE R3 R3 R4 + 0x780E0004, // 0032 JMPF R3 #0038 + 0x600C0018, // 0033 GETGBL R3 G24 + 0x58100009, // 0034 LDCONST R4 K9 + 0x88140108, // 0035 GETMBR R5 R0 K8 + 0x7C0C0400, // 0036 CALL R3 2 + 0x00080403, // 0037 ADD R2 R2 R3 + 0x600C000C, // 0038 GETGBL R3 G12 + 0x5C100400, // 0039 MOVE R4 R2 + 0x7C0C0200, // 003A CALL R3 1 + 0x240C070A, // 003B GT R3 R3 K10 + 0x780E0000, // 003C JMPF R3 #003E + 0x0008050B, // 003D ADD R2 R2 K11 + 0x600C0004, // 003E GETGBL R3 G4 + 0x8810010C, // 003F GETMBR R4 R0 K12 + 0x7C0C0200, // 0040 CALL R3 1 + 0x1C0C070D, // 0041 EQ R3 R3 K13 + 0x780E0010, // 0042 JMPF R3 #0054 + 0x600C0018, // 0043 GETGBL R3 G24 + 0x5810000E, // 0044 LDCONST R4 K14 + 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x7C0C0400, // 0046 CALL R3 2 + 0x00080403, // 0047 ADD R2 R2 R3 + 0x880C010F, // 0048 GETMBR R3 R0 K15 + 0x88100110, // 0049 GETMBR R4 R0 K16 + 0x88100911, // 004A GETMBR R4 R4 K17 + 0x280C0604, // 004B GE R3 R3 R4 + 0x780E0005, // 004C JMPF R3 #0053 + 0x880C010F, // 004D GETMBR R3 R0 K15 + 0x88100110, // 004E GETMBR R4 R0 K16 + 0x88100912, // 004F GETMBR R4 R4 K18 + 0x180C0604, // 0050 LE R3 R3 R4 + 0x780E0000, // 0051 JMPF R3 #0053 + 0x00080513, // 0052 ADD R2 R2 K19 + 0x70020048, // 0053 JMP #009D + 0x600C0004, // 0054 GETGBL R3 G4 + 0x8810010C, // 0055 GETMBR R4 R0 K12 + 0x7C0C0200, // 0056 CALL R3 1 + 0x1C0C0714, // 0057 EQ R3 R3 K20 + 0x780E0006, // 0058 JMPF R3 #0060 + 0x880C010C, // 0059 GETMBR R3 R0 K12 + 0x780E0001, // 005A JMPF R3 #005D + 0x580C0015, // 005B LDCONST R3 K21 + 0x70020000, // 005C JMP #005E + 0x580C0016, // 005D LDCONST R3 K22 + 0x00080403, // 005E ADD R2 R2 R3 + 0x7002003C, // 005F JMP #009D + 0x880C010C, // 0060 GETMBR R3 R0 K12 + 0x4C100000, // 0061 LDNIL R4 + 0x1C0C0604, // 0062 EQ R3 R3 R4 + 0x780E0001, // 0063 JMPF R3 #0066 + 0x00080517, // 0064 ADD R2 R2 K23 + 0x70020036, // 0065 JMP #009D + 0x600C0004, // 0066 GETGBL R3 G4 + 0x8810010C, // 0067 GETMBR R4 R0 K12 + 0x7C0C0200, // 0068 CALL R3 1 + 0x1C0C0718, // 0069 EQ R3 R3 K24 + 0x780E0005, // 006A JMPF R3 #0071 + 0x600C0018, // 006B GETGBL R3 G24 + 0x58100019, // 006C LDCONST R4 K25 + 0x8814010C, // 006D GETMBR R5 R0 K12 + 0x7C0C0400, // 006E CALL R3 2 + 0x00080403, // 006F ADD R2 R2 R3 + 0x7002002B, // 0070 JMP #009D + 0x600C0004, // 0071 GETGBL R3 G4 + 0x8810010C, // 0072 GETMBR R4 R0 K12 + 0x7C0C0200, // 0073 CALL R3 1 + 0x1C0C071A, // 0074 EQ R3 R3 K26 + 0x780E0005, // 0075 JMPF R3 #007C + 0x600C0018, // 0076 GETGBL R3 G24 + 0x5810001B, // 0077 LDCONST R4 K27 + 0x8814010C, // 0078 GETMBR R5 R0 K12 + 0x7C0C0400, // 0079 CALL R3 2 + 0x00080403, // 007A ADD R2 R2 R3 + 0x70020020, // 007B JMP #009D + 0x600C000F, // 007C GETGBL R3 G15 + 0x8810010C, // 007D GETMBR R4 R0 K12 + 0xB8163800, // 007E GETNGBL R5 K28 + 0x7C0C0400, // 007F CALL R3 2 + 0x780E000F, // 0080 JMPF R3 #0091 + 0x880C010C, // 0081 GETMBR R3 R0 K12 + 0x8C0C071D, // 0082 GETMET R3 R3 K29 + 0x7C0C0200, // 0083 CALL R3 1 + 0x00080403, // 0084 ADD R2 R2 R3 + 0x880C010F, // 0085 GETMBR R3 R0 K15 + 0x88100110, // 0086 GETMBR R4 R0 K16 + 0x88100911, // 0087 GETMBR R4 R4 K17 + 0x280C0604, // 0088 GE R3 R3 R4 + 0x780E0005, // 0089 JMPF R3 #0090 + 0x880C010F, // 008A GETMBR R3 R0 K15 + 0x88100110, // 008B GETMBR R4 R0 K16 + 0x88100912, // 008C GETMBR R4 R4 K18 + 0x180C0604, // 008D LE R3 R3 R4 + 0x780E0000, // 008E JMPF R3 #0090 + 0x00080513, // 008F ADD R2 R2 K19 + 0x7002000B, // 0090 JMP #009D + 0x600C0004, // 0091 GETGBL R3 G4 + 0x8810010C, // 0092 GETMBR R4 R0 K12 + 0x7C0C0200, // 0093 CALL R3 1 + 0x1C0C071E, // 0094 EQ R3 R3 K30 + 0x780E0006, // 0095 JMPF R3 #009D + 0x600C0018, // 0096 GETGBL R3 G24 + 0x5810001F, // 0097 LDCONST R4 K31 + 0x8814010C, // 0098 GETMBR R5 R0 K12 + 0x8C140B20, // 0099 GETMET R5 R5 K32 + 0x7C140200, // 009A CALL R5 1 + 0x7C0C0400, // 009B CALL R3 2 + 0x00080403, // 009C ADD R2 R2 R3 + 0xA8040001, // 009D EXBLK 1 1 + 0x70020006, // 009E JMP #00A6 + 0xAC0C0002, // 009F CATCH R3 0 2 + 0x70020003, // 00A0 JMP #00A5 + 0x00140721, // 00A1 ADD R5 R3 K33 + 0x00140A04, // 00A2 ADD R5 R5 R4 + 0x80040A00, // 00A3 RET 1 R5 + 0x70020000, // 00A4 JMP #00A6 + 0xB0080000, // 00A5 RAISE 2 R0 R0 + 0x80040400, // 00A6 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: to_str_val +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + /* K1 */ be_nested_str_weak(int), + /* K2 */ be_nested_str_weak(typ), + /* K3 */ be_nested_str_weak(TLV), + /* K4 */ be_nested_str_weak(U1), + /* K5 */ be_nested_str_weak(U8), + /* K6 */ be_nested_str_weak(U), + /* K7 */ be_nested_str_weak(bool), + /* K8 */ be_nested_str_weak(true), + /* K9 */ be_nested_str_weak(false), + /* K10 */ be_nested_str_weak(null), + /* K11 */ be_nested_str_weak(real), + /* K12 */ be_nested_str_weak(string), + /* K13 */ be_nested_str_weak(int64), + /* K14 */ be_nested_str_weak(tostring), + /* K15 */ be_nested_str_weak(instance), + }), + be_str_weak(to_str_val), + &be_const_str_solidified, + ( &(const binstruction[98]) { /* code */ + 0x60040004, // 0000 GETGBL R1 G4 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060014, // 0004 JMPF R1 #001A + 0x88040102, // 0005 GETMBR R1 R0 K2 + 0x88080103, // 0006 GETMBR R2 R0 K3 + 0x88080504, // 0007 GETMBR R2 R2 K4 + 0x28040202, // 0008 GE R1 R1 R2 + 0x7806000A, // 0009 JMPF R1 #0015 + 0x88040102, // 000A GETMBR R1 R0 K2 + 0x88080103, // 000B GETMBR R2 R0 K3 + 0x88080505, // 000C GETMBR R2 R2 K5 + 0x18040202, // 000D LE R1 R1 R2 + 0x78060005, // 000E JMPF R1 #0015 + 0x60040008, // 000F GETGBL R1 G8 + 0x88080100, // 0010 GETMBR R2 R0 K0 + 0x7C040200, // 0011 CALL R1 1 + 0x00040306, // 0012 ADD R1 R1 K6 + 0x80040200, // 0013 RET 1 R1 + 0x70020003, // 0014 JMP #0019 + 0x60040008, // 0015 GETGBL R1 G8 + 0x88080100, // 0016 GETMBR R2 R0 K0 + 0x7C040200, // 0017 CALL R1 1 + 0x80040200, // 0018 RET 1 R1 + 0x70020046, // 0019 JMP #0061 + 0x60040004, // 001A GETGBL R1 G4 + 0x88080100, // 001B GETMBR R2 R0 K0 + 0x7C040200, // 001C CALL R1 1 + 0x1C040307, // 001D EQ R1 R1 K7 + 0x78060006, // 001E JMPF R1 #0026 + 0x88040100, // 001F GETMBR R1 R0 K0 + 0x78060001, // 0020 JMPF R1 #0023 + 0x58040008, // 0021 LDCONST R1 K8 + 0x70020000, // 0022 JMP #0024 + 0x58040009, // 0023 LDCONST R1 K9 + 0x80040200, // 0024 RET 1 R1 + 0x7002003A, // 0025 JMP #0061 + 0x88040100, // 0026 GETMBR R1 R0 K0 + 0x4C080000, // 0027 LDNIL R2 + 0x1C040202, // 0028 EQ R1 R1 R2 + 0x78060001, // 0029 JMPF R1 #002C + 0x80061400, // 002A RET 1 K10 + 0x70020034, // 002B JMP #0061 + 0x60040004, // 002C GETGBL R1 G4 + 0x88080100, // 002D GETMBR R2 R0 K0 + 0x7C040200, // 002E CALL R1 1 + 0x1C04030B, // 002F EQ R1 R1 K11 + 0x78060004, // 0030 JMPF R1 #0036 + 0x60040008, // 0031 GETGBL R1 G8 + 0x88080100, // 0032 GETMBR R2 R0 K0 + 0x7C040200, // 0033 CALL R1 1 + 0x80040200, // 0034 RET 1 R1 + 0x7002002A, // 0035 JMP #0061 + 0x60040004, // 0036 GETGBL R1 G4 + 0x88080100, // 0037 GETMBR R2 R0 K0 + 0x7C040200, // 0038 CALL R1 1 + 0x1C04030C, // 0039 EQ R1 R1 K12 + 0x78060002, // 003A JMPF R1 #003E + 0x88040100, // 003B GETMBR R1 R0 K0 + 0x80040200, // 003C RET 1 R1 + 0x70020022, // 003D JMP #0061 + 0x6004000F, // 003E GETGBL R1 G15 + 0x88080100, // 003F GETMBR R2 R0 K0 + 0xB80E1A00, // 0040 GETNGBL R3 K13 + 0x7C040400, // 0041 CALL R1 2 + 0x78060014, // 0042 JMPF R1 #0058 + 0x88040102, // 0043 GETMBR R1 R0 K2 + 0x88080103, // 0044 GETMBR R2 R0 K3 + 0x88080504, // 0045 GETMBR R2 R2 K4 + 0x28040202, // 0046 GE R1 R1 R2 + 0x7806000A, // 0047 JMPF R1 #0053 + 0x88040102, // 0048 GETMBR R1 R0 K2 + 0x88080103, // 0049 GETMBR R2 R0 K3 + 0x88080505, // 004A GETMBR R2 R2 K5 + 0x18040202, // 004B LE R1 R1 R2 + 0x78060005, // 004C JMPF R1 #0053 + 0x88040100, // 004D GETMBR R1 R0 K0 + 0x8C04030E, // 004E GETMET R1 R1 K14 + 0x7C040200, // 004F CALL R1 1 + 0x00040306, // 0050 ADD R1 R1 K6 + 0x80040200, // 0051 RET 1 R1 + 0x70020003, // 0052 JMP #0057 + 0x88040100, // 0053 GETMBR R1 R0 K0 + 0x8C04030E, // 0054 GETMET R1 R1 K14 + 0x7C040200, // 0055 CALL R1 1 + 0x80040200, // 0056 RET 1 R1 + 0x70020008, // 0057 JMP #0061 + 0x60040004, // 0058 GETGBL R1 G4 + 0x88080100, // 0059 GETMBR R2 R0 K0 + 0x7C040200, // 005A CALL R1 1 + 0x1C04030F, // 005B EQ R1 R1 K15 + 0x78060003, // 005C JMPF R1 #0061 + 0x8C04010E, // 005D GETMET R1 R0 K14 + 0x500C0200, // 005E LDBOOL R3 1 0 + 0x7C040400, // 005F CALL R1 2 + 0x80040200, // 0060 RET 1 R1 + 0x80000000, // 0061 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_fulltag +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */ + be_nested_proto( + 6, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tag_vendor), + /* K1 */ be_nested_str_weak(tag_profile), + /* K2 */ be_nested_str_weak(tag_number), + /* K3 */ be_nested_str_weak(tag_sub), + }), + be_str_weak(set_fulltag), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60100009, // 0000 GETGBL R4 G9 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C100200, // 0002 CALL R4 1 + 0x90020004, // 0003 SETMBR R0 K0 R4 + 0x60100009, // 0004 GETGBL R4 G9 + 0x5C140400, // 0005 MOVE R5 R2 + 0x7C100200, // 0006 CALL R4 1 + 0x90020204, // 0007 SETMBR R0 K1 R4 + 0x60100009, // 0008 GETGBL R4 G9 + 0x5C140600, // 0009 MOVE R5 R3 + 0x7C100200, // 000A CALL R4 1 + 0x90020404, // 000B SETMBR R0 K2 R4 + 0x4C100000, // 000C LDNIL R4 + 0x90020604, // 000D SETMBR R0 K3 R4 + 0x80000000, // 000E RET 0 }) ) ); @@ -892,10 +1036,10 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ /******************************************************************** -** Solidified function: _encode_tag_len +** Solidified function: set_commonprofile ********************************************************************/ extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ +be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ @@ -905,73 +1049,18 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_number), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(tag_profile), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(tag_sub), - /* K6 */ be_const_int(2), - /* K7 */ be_const_int(1), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(set_fulltag), }), - be_str_weak(_encode_tag_len), + be_str_weak(set_commonprofile), &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060001, // 0003 JMPF R1 #0006 - 0x88040100, // 0004 GETMBR R1 R0 K0 - 0x70020000, // 0005 JMP #0007 - 0x58040001, // 0006 LDCONST R1 K1 - 0x540AFFFF, // 0007 LDINT R2 65536 - 0x28080202, // 0008 GE R2 R1 R2 - 0x740A0002, // 0009 JMPT R2 #000D - 0x14080301, // 000A LT R2 R1 K1 - 0x740A0000, // 000B JMPT R2 #000D - 0x50080001, // 000C LDBOOL R2 0 1 - 0x50080200, // 000D LDBOOL R2 1 0 - 0x580C0001, // 000E LDCONST R3 K1 - 0x88100102, // 000F GETMBR R4 R0 K2 - 0x4C140000, // 0010 LDNIL R5 - 0x20100805, // 0011 NE R4 R4 R5 - 0x78120006, // 0012 JMPF R4 #001A - 0x780A0002, // 0013 JMPF R2 #0017 - 0x54120008, // 0014 LDINT R4 9 - 0x80040800, // 0015 RET 1 R4 - 0x70020001, // 0016 JMP #0019 - 0x54120006, // 0017 LDINT R4 7 - 0x80040800, // 0018 RET 1 R4 - 0x7002001A, // 0019 JMP #0035 - 0x88100103, // 001A GETMBR R4 R0 K3 - 0x5415FFFE, // 001B LDINT R5 -1 - 0x1C100805, // 001C EQ R4 R4 R5 - 0x78120005, // 001D JMPF R4 #0024 - 0x780A0002, // 001E JMPF R2 #0022 - 0x54120004, // 001F LDINT R4 5 - 0x80040800, // 0020 RET 1 R4 - 0x70020000, // 0021 JMP #0023 - 0x80060800, // 0022 RET 1 K4 - 0x70020010, // 0023 JMP #0035 - 0x88100103, // 0024 GETMBR R4 R0 K3 - 0x4C140000, // 0025 LDNIL R5 - 0x20100805, // 0026 NE R4 R4 R5 - 0x78120005, // 0027 JMPF R4 #002E - 0x780A0002, // 0028 JMPF R2 #002C - 0x54120004, // 0029 LDINT R4 5 - 0x80040800, // 002A RET 1 R4 - 0x70020000, // 002B JMP #002D - 0x80060800, // 002C RET 1 K4 - 0x70020006, // 002D JMP #0035 - 0x88100105, // 002E GETMBR R4 R0 K5 - 0x4C140000, // 002F LDNIL R5 - 0x20100805, // 0030 NE R4 R4 R5 - 0x78120001, // 0031 JMPF R4 #0034 - 0x80060C00, // 0032 RET 1 K6 - 0x70020000, // 0033 JMP #0035 - 0x80060E00, // 0034 RET 1 K7 - 0x80000000, // 0035 RET 0 + ( &(const binstruction[ 6]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x5411FFFE, // 0002 LDINT R4 -1 + 0x4C140000, // 0003 LDNIL R5 + 0x7C040800, // 0004 CALL R1 4 + 0x80000000, // 0005 RET 0 }) ) ); @@ -979,39 +1068,360 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ /******************************************************************** -** Solidified function: set +** Solidified function: _encode_tag ********************************************************************/ extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_set, /* name */ +be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ be_nested_proto( - 5, /* nstack */ - 3, /* argc */ + 9, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(val), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tag_number), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(tag_vendor), + /* K3 */ be_nested_str_weak(add), + /* K4 */ be_nested_str_weak(typ), + /* K5 */ be_const_int(1), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(tag_profile), + /* K8 */ be_nested_str_weak(tag_sub), }), - be_str_weak(set), + be_str_weak(_encode_tag), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x200C0403, // 0003 NE R3 R2 R3 - 0x740E0002, // 0004 JMPT R3 #0008 - 0x540E0013, // 0005 LDINT R3 20 - 0x1C0C0203, // 0006 EQ R3 R1 R3 - 0x780E0002, // 0007 JMPF R3 #000B - 0x90020201, // 0008 SETMBR R0 K1 R1 - 0x90020402, // 0009 SETMBR R0 K2 R2 - 0x80040000, // 000A RET 1 R0 - 0x80000000, // 000B RET 0 + ( &(const binstruction[133]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x20080403, // 0002 NE R2 R2 R3 + 0x780A0001, // 0003 JMPF R2 #0006 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x70020000, // 0005 JMP #0007 + 0x58080001, // 0006 LDCONST R2 K1 + 0x540EFFFF, // 0007 LDINT R3 65536 + 0x280C0403, // 0008 GE R3 R2 R3 + 0x740E0002, // 0009 JMPT R3 #000D + 0x140C0501, // 000A LT R3 R2 K1 + 0x740E0000, // 000B JMPT R3 #000D + 0x500C0001, // 000C LDBOOL R3 0 1 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x58100001, // 000E LDCONST R4 K1 + 0x88140102, // 000F GETMBR R5 R0 K2 + 0x4C180000, // 0010 LDNIL R6 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x78160026, // 0012 JMPF R5 #003A + 0x780E0012, // 0013 JMPF R3 #0027 + 0x8C140303, // 0014 GETMET R5 R1 K3 + 0x541E00DF, // 0015 LDINT R7 224 + 0x88200104, // 0016 GETMBR R8 R0 K4 + 0x001C0E08, // 0017 ADD R7 R7 R8 + 0x58200005, // 0018 LDCONST R8 K5 + 0x7C140600, // 0019 CALL R5 3 + 0x8C140303, // 001A GETMET R5 R1 K3 + 0x881C0102, // 001B GETMBR R7 R0 K2 + 0x58200006, // 001C LDCONST R8 K6 + 0x7C140600, // 001D CALL R5 3 + 0x8C140303, // 001E GETMET R5 R1 K3 + 0x881C0107, // 001F GETMBR R7 R0 K7 + 0x58200006, // 0020 LDCONST R8 K6 + 0x7C140600, // 0021 CALL R5 3 + 0x8C140303, // 0022 GETMET R5 R1 K3 + 0x881C0100, // 0023 GETMBR R7 R0 K0 + 0x54220003, // 0024 LDINT R8 4 + 0x7C140600, // 0025 CALL R5 3 + 0x70020011, // 0026 JMP #0039 + 0x8C140303, // 0027 GETMET R5 R1 K3 + 0x541E00BF, // 0028 LDINT R7 192 + 0x88200104, // 0029 GETMBR R8 R0 K4 + 0x001C0E08, // 002A ADD R7 R7 R8 + 0x58200005, // 002B LDCONST R8 K5 + 0x7C140600, // 002C CALL R5 3 + 0x8C140303, // 002D GETMET R5 R1 K3 + 0x881C0102, // 002E GETMBR R7 R0 K2 + 0x58200006, // 002F LDCONST R8 K6 + 0x7C140600, // 0030 CALL R5 3 + 0x8C140303, // 0031 GETMET R5 R1 K3 + 0x881C0107, // 0032 GETMBR R7 R0 K7 + 0x58200006, // 0033 LDCONST R8 K6 + 0x7C140600, // 0034 CALL R5 3 + 0x8C140303, // 0035 GETMET R5 R1 K3 + 0x881C0100, // 0036 GETMBR R7 R0 K0 + 0x58200006, // 0037 LDCONST R8 K6 + 0x7C140600, // 0038 CALL R5 3 + 0x70020049, // 0039 JMP #0084 + 0x88140107, // 003A GETMBR R5 R0 K7 + 0x5419FFFE, // 003B LDINT R6 -1 + 0x1C140A06, // 003C EQ R5 R5 R6 + 0x78160016, // 003D JMPF R5 #0055 + 0x780E000A, // 003E JMPF R3 #004A + 0x8C140303, // 003F GETMET R5 R1 K3 + 0x541E005F, // 0040 LDINT R7 96 + 0x88200104, // 0041 GETMBR R8 R0 K4 + 0x001C0E08, // 0042 ADD R7 R7 R8 + 0x58200005, // 0043 LDCONST R8 K5 + 0x7C140600, // 0044 CALL R5 3 + 0x8C140303, // 0045 GETMET R5 R1 K3 + 0x881C0100, // 0046 GETMBR R7 R0 K0 + 0x54220003, // 0047 LDINT R8 4 + 0x7C140600, // 0048 CALL R5 3 + 0x70020009, // 0049 JMP #0054 + 0x8C140303, // 004A GETMET R5 R1 K3 + 0x541E003F, // 004B LDINT R7 64 + 0x88200104, // 004C GETMBR R8 R0 K4 + 0x001C0E08, // 004D ADD R7 R7 R8 + 0x58200005, // 004E LDCONST R8 K5 + 0x7C140600, // 004F CALL R5 3 + 0x8C140303, // 0050 GETMET R5 R1 K3 + 0x881C0100, // 0051 GETMBR R7 R0 K0 + 0x58200006, // 0052 LDCONST R8 K6 + 0x7C140600, // 0053 CALL R5 3 + 0x7002002E, // 0054 JMP #0084 + 0x88140107, // 0055 GETMBR R5 R0 K7 + 0x4C180000, // 0056 LDNIL R6 + 0x20140A06, // 0057 NE R5 R5 R6 + 0x78160016, // 0058 JMPF R5 #0070 + 0x780E000A, // 0059 JMPF R3 #0065 + 0x8C140303, // 005A GETMET R5 R1 K3 + 0x541E009F, // 005B LDINT R7 160 + 0x88200104, // 005C GETMBR R8 R0 K4 + 0x001C0E08, // 005D ADD R7 R7 R8 + 0x58200005, // 005E LDCONST R8 K5 + 0x7C140600, // 005F CALL R5 3 + 0x8C140303, // 0060 GETMET R5 R1 K3 + 0x881C0100, // 0061 GETMBR R7 R0 K0 + 0x54220003, // 0062 LDINT R8 4 + 0x7C140600, // 0063 CALL R5 3 + 0x70020009, // 0064 JMP #006F + 0x8C140303, // 0065 GETMET R5 R1 K3 + 0x541E007F, // 0066 LDINT R7 128 + 0x88200104, // 0067 GETMBR R8 R0 K4 + 0x001C0E08, // 0068 ADD R7 R7 R8 + 0x58200005, // 0069 LDCONST R8 K5 + 0x7C140600, // 006A CALL R5 3 + 0x8C140303, // 006B GETMET R5 R1 K3 + 0x881C0100, // 006C GETMBR R7 R0 K0 + 0x58200006, // 006D LDCONST R8 K6 + 0x7C140600, // 006E CALL R5 3 + 0x70020013, // 006F JMP #0084 + 0x88140108, // 0070 GETMBR R5 R0 K8 + 0x4C180000, // 0071 LDNIL R6 + 0x20140A06, // 0072 NE R5 R5 R6 + 0x7816000A, // 0073 JMPF R5 #007F + 0x8C140303, // 0074 GETMET R5 R1 K3 + 0x541E001F, // 0075 LDINT R7 32 + 0x88200104, // 0076 GETMBR R8 R0 K4 + 0x001C0E08, // 0077 ADD R7 R7 R8 + 0x58200005, // 0078 LDCONST R8 K5 + 0x7C140600, // 0079 CALL R5 3 + 0x8C140303, // 007A GETMET R5 R1 K3 + 0x881C0108, // 007B GETMBR R7 R0 K8 + 0x58200005, // 007C LDCONST R8 K5 + 0x7C140600, // 007D CALL R5 3 + 0x70020004, // 007E JMP #0084 + 0x8C140303, // 007F GETMET R5 R1 K3 + 0x881C0104, // 0080 GETMBR R7 R0 K4 + 0x001E0207, // 0081 ADD R7 K1 R7 + 0x58200005, // 0082 LDCONST R8 K5 + 0x7C140600, // 0083 CALL R5 3 + 0x80000000, // 0084 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sort +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_sort, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_TLV_item), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(_cmp_gt), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(sort), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0701, // 0005 SUB R3 R3 K1 + 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020013, // 0008 EXBLK 0 #001D + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B02, // 000D GT R6 R5 K2 + 0x781A000B, // 000E JMPF R6 #001B + 0x04180B01, // 000F SUB R6 R5 K1 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x8C180D03, // 0011 GETMET R6 R6 K3 + 0x5C200800, // 0012 MOVE R8 R4 + 0x7C180400, // 0013 CALL R6 2 + 0x24180D02, // 0014 GT R6 R6 K2 + 0x781A0004, // 0015 JMPF R6 #001B + 0x04180B01, // 0016 SUB R6 R5 K1 + 0x94180006, // 0017 GETIDX R6 R0 R6 + 0x98000A06, // 0018 SETIDX R0 R5 R6 + 0x04140B01, // 0019 SUB R5 R5 K1 + 0x7001FFF1, // 001A JMP #000D + 0x98000A04, // 001B SETIDX R0 R5 R4 + 0x7001FFEB, // 001C JMP #0009 + 0x58080004, // 001D LDCONST R2 K4 + 0xAC080200, // 001E CATCH R2 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0x80040000, // 0020 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_init, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(parent), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _cmp_gt +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(tag_vendor), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(tag_profile), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(tag_number), + /* K5 */ be_nested_str_weak(tag_sub), + }), + be_str_weak(_cmp_gt), + &be_const_str_solidified, + ( &(const binstruction[72]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x20080403, // 0002 NE R2 R2 R3 + 0x780A0012, // 0003 JMPF R2 #0017 + 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x4C0C0000, // 0005 LDNIL R3 + 0x1C080403, // 0006 EQ R2 R2 R3 + 0x780A0000, // 0007 JMPF R2 #0009 + 0x80060200, // 0008 RET 1 K1 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x880C0300, // 000A GETMBR R3 R1 K0 + 0x24080403, // 000B GT R2 R2 R3 + 0x780A0000, // 000C JMPF R2 #000E + 0x80060200, // 000D RET 1 K1 + 0x88080100, // 000E GETMBR R2 R0 K0 + 0x880C0300, // 000F GETMBR R3 R1 K0 + 0x1C080403, // 0010 EQ R2 R2 R3 + 0x780A0004, // 0011 JMPF R2 #0017 + 0x88080102, // 0012 GETMBR R2 R0 K2 + 0x880C0302, // 0013 GETMBR R3 R1 K2 + 0x24080403, // 0014 GT R2 R2 R3 + 0x780A0000, // 0015 JMPF R2 #0017 + 0x80060200, // 0016 RET 1 K1 + 0x88080102, // 0017 GETMBR R2 R0 K2 + 0x540DFFFE, // 0018 LDINT R3 -1 + 0x1C080403, // 0019 EQ R2 R2 R3 + 0x780A0005, // 001A JMPF R2 #0021 + 0x88080302, // 001B GETMBR R2 R1 K2 + 0x4C0C0000, // 001C LDNIL R3 + 0x1C080403, // 001D EQ R2 R2 R3 + 0x780A0000, // 001E JMPF R2 #0020 + 0x80060200, // 001F RET 1 K1 + 0x70020008, // 0020 JMP #002A + 0x88080102, // 0021 GETMBR R2 R0 K2 + 0x4C0C0000, // 0022 LDNIL R3 + 0x1C080403, // 0023 EQ R2 R2 R3 + 0x780A0004, // 0024 JMPF R2 #002A + 0x88080302, // 0025 GETMBR R2 R1 K2 + 0x540DFFFE, // 0026 LDINT R3 -1 + 0x1C080403, // 0027 EQ R2 R2 R3 + 0x780A0000, // 0028 JMPF R2 #002A + 0x80060600, // 0029 RET 1 K3 + 0x88080104, // 002A GETMBR R2 R0 K4 + 0x4C0C0000, // 002B LDNIL R3 + 0x20080403, // 002C NE R2 R2 R3 + 0x780A000A, // 002D JMPF R2 #0039 + 0x88080304, // 002E GETMBR R2 R1 K4 + 0x4C0C0000, // 002F LDNIL R3 + 0x1C080403, // 0030 EQ R2 R2 R3 + 0x780A0000, // 0031 JMPF R2 #0033 + 0x80060200, // 0032 RET 1 K1 + 0x88080104, // 0033 GETMBR R2 R0 K4 + 0x880C0304, // 0034 GETMBR R3 R1 K4 + 0x24080403, // 0035 GT R2 R2 R3 + 0x780A0000, // 0036 JMPF R2 #0038 + 0x80060200, // 0037 RET 1 K1 + 0x80060600, // 0038 RET 1 K3 + 0x88080105, // 0039 GETMBR R2 R0 K5 + 0x4C0C0000, // 003A LDNIL R3 + 0x20080403, // 003B NE R2 R2 R3 + 0x780A0009, // 003C JMPF R2 #0047 + 0x88080305, // 003D GETMBR R2 R1 K5 + 0x4C0C0000, // 003E LDNIL R3 + 0x1C080403, // 003F EQ R2 R2 R3 + 0x780A0000, // 0040 JMPF R2 #0042 + 0x80060200, // 0041 RET 1 K1 + 0x88080105, // 0042 GETMBR R2 R0 K5 + 0x880C0305, // 0043 GETMBR R3 R1 K5 + 0x24080403, // 0044 GT R2 R2 R3 + 0x780A0000, // 0045 JMPF R2 #0047 + 0x80060200, // 0046 RET 1 K1 + 0x80060600, // 0047 RET 1 K3 }) ) ); @@ -1453,6 +1863,196 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: _encode_tag_len +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(tag_number), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(tag_vendor), + /* K3 */ be_nested_str_weak(tag_profile), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(tag_sub), + /* K6 */ be_const_int(2), + /* K7 */ be_const_int(1), + }), + be_str_weak(_encode_tag_len), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060001, // 0003 JMPF R1 #0006 + 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x70020000, // 0005 JMP #0007 + 0x58040001, // 0006 LDCONST R1 K1 + 0x540AFFFF, // 0007 LDINT R2 65536 + 0x28080202, // 0008 GE R2 R1 R2 + 0x740A0002, // 0009 JMPT R2 #000D + 0x14080301, // 000A LT R2 R1 K1 + 0x740A0000, // 000B JMPT R2 #000D + 0x50080001, // 000C LDBOOL R2 0 1 + 0x50080200, // 000D LDBOOL R2 1 0 + 0x580C0001, // 000E LDCONST R3 K1 + 0x88100102, // 000F GETMBR R4 R0 K2 + 0x4C140000, // 0010 LDNIL R5 + 0x20100805, // 0011 NE R4 R4 R5 + 0x78120006, // 0012 JMPF R4 #001A + 0x780A0002, // 0013 JMPF R2 #0017 + 0x54120008, // 0014 LDINT R4 9 + 0x80040800, // 0015 RET 1 R4 + 0x70020001, // 0016 JMP #0019 + 0x54120006, // 0017 LDINT R4 7 + 0x80040800, // 0018 RET 1 R4 + 0x7002001A, // 0019 JMP #0035 + 0x88100103, // 001A GETMBR R4 R0 K3 + 0x5415FFFE, // 001B LDINT R5 -1 + 0x1C100805, // 001C EQ R4 R4 R5 + 0x78120005, // 001D JMPF R4 #0024 + 0x780A0002, // 001E JMPF R2 #0022 + 0x54120004, // 001F LDINT R4 5 + 0x80040800, // 0020 RET 1 R4 + 0x70020000, // 0021 JMP #0023 + 0x80060800, // 0022 RET 1 K4 + 0x70020010, // 0023 JMP #0035 + 0x88100103, // 0024 GETMBR R4 R0 K3 + 0x4C140000, // 0025 LDNIL R5 + 0x20100805, // 0026 NE R4 R4 R5 + 0x78120005, // 0027 JMPF R4 #002E + 0x780A0002, // 0028 JMPF R2 #002C + 0x54120004, // 0029 LDINT R4 5 + 0x80040800, // 002A RET 1 R4 + 0x70020000, // 002B JMP #002D + 0x80060800, // 002C RET 1 K4 + 0x70020006, // 002D JMP #0035 + 0x88100105, // 002E GETMBR R4 R0 K5 + 0x4C140000, // 002F LDNIL R5 + 0x20100805, // 0030 NE R4 R4 R5 + 0x78120001, // 0031 JMPF R4 #0034 + 0x80060C00, // 0032 RET 1 K6 + 0x70020000, // 0033 JMP #0035 + 0x80060E00, // 0034 RET 1 K7 + 0x80000000, // 0035 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_contextspecific +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(set_fulltag), + /* K1 */ be_nested_str_weak(tag_sub), + }), + be_str_weak(set_contextspecific), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x60080009, // 0002 GETGBL R2 G9 + 0x5C0C0200, // 0003 MOVE R3 R1 + 0x7C080200, // 0004 CALL R2 1 + 0x90020202, // 0005 SETMBR R0 K1 R2 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_parent +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_set_parent, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(parent), + }), + be_str_weak(set_parent), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_TLV +********************************************************************/ +extern const bclass be_class_Matter_TLV_item; +be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_TLV_item, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_TLV_item), + /* K1 */ be_nested_str_weak(typ), + /* K2 */ be_nested_str_weak(val), + }), + be_str_weak(create_TLV), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x200C0203, // 0002 NE R3 R1 R3 + 0x740E0002, // 0003 JMPT R3 #0007 + 0x540E0013, // 0004 LDINT R3 20 + 0x1C0C0003, // 0005 EQ R3 R0 R3 + 0x780E0004, // 0006 JMPF R3 #000C + 0x5C0C0400, // 0007 MOVE R3 R2 + 0x7C0C0000, // 0008 CALL R3 0 + 0x900E0200, // 0009 SETMBR R3 K1 R0 + 0x900E0401, // 000A SETMBR R3 K2 R1 + 0x80040600, // 000B RET 1 R3 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: set_anonymoustag ********************************************************************/ @@ -1482,601 +2082,46 @@ be_local_closure(class_Matter_TLV_item_set_anonymoustag, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: _cmp_gt -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_vendor), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(tag_profile), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(tag_number), - /* K5 */ be_nested_str_weak(tag_sub), - }), - be_str_weak(_cmp_gt), - &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x20080403, // 0002 NE R2 R2 R3 - 0x780A0012, // 0003 JMPF R2 #0017 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x4C0C0000, // 0005 LDNIL R3 - 0x1C080403, // 0006 EQ R2 R2 R3 - 0x780A0000, // 0007 JMPF R2 #0009 - 0x80060200, // 0008 RET 1 K1 - 0x88080100, // 0009 GETMBR R2 R0 K0 - 0x880C0300, // 000A GETMBR R3 R1 K0 - 0x24080403, // 000B GT R2 R2 R3 - 0x780A0000, // 000C JMPF R2 #000E - 0x80060200, // 000D RET 1 K1 - 0x88080100, // 000E GETMBR R2 R0 K0 - 0x880C0300, // 000F GETMBR R3 R1 K0 - 0x1C080403, // 0010 EQ R2 R2 R3 - 0x780A0004, // 0011 JMPF R2 #0017 - 0x88080102, // 0012 GETMBR R2 R0 K2 - 0x880C0302, // 0013 GETMBR R3 R1 K2 - 0x24080403, // 0014 GT R2 R2 R3 - 0x780A0000, // 0015 JMPF R2 #0017 - 0x80060200, // 0016 RET 1 K1 - 0x88080102, // 0017 GETMBR R2 R0 K2 - 0x540DFFFE, // 0018 LDINT R3 -1 - 0x1C080403, // 0019 EQ R2 R2 R3 - 0x780A0005, // 001A JMPF R2 #0021 - 0x88080302, // 001B GETMBR R2 R1 K2 - 0x4C0C0000, // 001C LDNIL R3 - 0x1C080403, // 001D EQ R2 R2 R3 - 0x780A0000, // 001E JMPF R2 #0020 - 0x80060200, // 001F RET 1 K1 - 0x70020008, // 0020 JMP #002A - 0x88080102, // 0021 GETMBR R2 R0 K2 - 0x4C0C0000, // 0022 LDNIL R3 - 0x1C080403, // 0023 EQ R2 R2 R3 - 0x780A0004, // 0024 JMPF R2 #002A - 0x88080302, // 0025 GETMBR R2 R1 K2 - 0x540DFFFE, // 0026 LDINT R3 -1 - 0x1C080403, // 0027 EQ R2 R2 R3 - 0x780A0000, // 0028 JMPF R2 #002A - 0x80060600, // 0029 RET 1 K3 - 0x88080104, // 002A GETMBR R2 R0 K4 - 0x4C0C0000, // 002B LDNIL R3 - 0x20080403, // 002C NE R2 R2 R3 - 0x780A000A, // 002D JMPF R2 #0039 - 0x88080304, // 002E GETMBR R2 R1 K4 - 0x4C0C0000, // 002F LDNIL R3 - 0x1C080403, // 0030 EQ R2 R2 R3 - 0x780A0000, // 0031 JMPF R2 #0033 - 0x80060200, // 0032 RET 1 K1 - 0x88080104, // 0033 GETMBR R2 R0 K4 - 0x880C0304, // 0034 GETMBR R3 R1 K4 - 0x24080403, // 0035 GT R2 R2 R3 - 0x780A0000, // 0036 JMPF R2 #0038 - 0x80060200, // 0037 RET 1 K1 - 0x80060600, // 0038 RET 1 K3 - 0x88080105, // 0039 GETMBR R2 R0 K5 - 0x4C0C0000, // 003A LDNIL R3 - 0x20080403, // 003B NE R2 R2 R3 - 0x780A0009, // 003C JMPF R2 #0047 - 0x88080305, // 003D GETMBR R2 R1 K5 - 0x4C0C0000, // 003E LDNIL R3 - 0x1C080403, // 003F EQ R2 R2 R3 - 0x780A0000, // 0040 JMPF R2 #0042 - 0x80060200, // 0041 RET 1 K1 - 0x88080105, // 0042 GETMBR R2 R0 K5 - 0x880C0305, // 0043 GETMBR R3 R1 K5 - 0x24080403, // 0044 GT R2 R2 R3 - 0x780A0000, // 0045 JMPF R2 #0047 - 0x80060200, // 0046 RET 1 K1 - 0x80060600, // 0047 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _encode_tag -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_number), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(typ), - /* K5 */ be_const_int(1), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(tag_profile), - /* K8 */ be_nested_str_weak(tag_sub), - }), - be_str_weak(_encode_tag), - &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x20080403, // 0002 NE R2 R2 R3 - 0x780A0001, // 0003 JMPF R2 #0006 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x70020000, // 0005 JMP #0007 - 0x58080001, // 0006 LDCONST R2 K1 - 0x540EFFFF, // 0007 LDINT R3 65536 - 0x280C0403, // 0008 GE R3 R2 R3 - 0x740E0002, // 0009 JMPT R3 #000D - 0x140C0501, // 000A LT R3 R2 K1 - 0x740E0000, // 000B JMPT R3 #000D - 0x500C0001, // 000C LDBOOL R3 0 1 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x58100001, // 000E LDCONST R4 K1 - 0x88140102, // 000F GETMBR R5 R0 K2 - 0x4C180000, // 0010 LDNIL R6 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x78160026, // 0012 JMPF R5 #003A - 0x780E0012, // 0013 JMPF R3 #0027 - 0x8C140303, // 0014 GETMET R5 R1 K3 - 0x541E00DF, // 0015 LDINT R7 224 - 0x88200104, // 0016 GETMBR R8 R0 K4 - 0x001C0E08, // 0017 ADD R7 R7 R8 - 0x58200005, // 0018 LDCONST R8 K5 - 0x7C140600, // 0019 CALL R5 3 - 0x8C140303, // 001A GETMET R5 R1 K3 - 0x881C0102, // 001B GETMBR R7 R0 K2 - 0x58200006, // 001C LDCONST R8 K6 - 0x7C140600, // 001D CALL R5 3 - 0x8C140303, // 001E GETMET R5 R1 K3 - 0x881C0107, // 001F GETMBR R7 R0 K7 - 0x58200006, // 0020 LDCONST R8 K6 - 0x7C140600, // 0021 CALL R5 3 - 0x8C140303, // 0022 GETMET R5 R1 K3 - 0x881C0100, // 0023 GETMBR R7 R0 K0 - 0x54220003, // 0024 LDINT R8 4 - 0x7C140600, // 0025 CALL R5 3 - 0x70020011, // 0026 JMP #0039 - 0x8C140303, // 0027 GETMET R5 R1 K3 - 0x541E00BF, // 0028 LDINT R7 192 - 0x88200104, // 0029 GETMBR R8 R0 K4 - 0x001C0E08, // 002A ADD R7 R7 R8 - 0x58200005, // 002B LDCONST R8 K5 - 0x7C140600, // 002C CALL R5 3 - 0x8C140303, // 002D GETMET R5 R1 K3 - 0x881C0102, // 002E GETMBR R7 R0 K2 - 0x58200006, // 002F LDCONST R8 K6 - 0x7C140600, // 0030 CALL R5 3 - 0x8C140303, // 0031 GETMET R5 R1 K3 - 0x881C0107, // 0032 GETMBR R7 R0 K7 - 0x58200006, // 0033 LDCONST R8 K6 - 0x7C140600, // 0034 CALL R5 3 - 0x8C140303, // 0035 GETMET R5 R1 K3 - 0x881C0100, // 0036 GETMBR R7 R0 K0 - 0x58200006, // 0037 LDCONST R8 K6 - 0x7C140600, // 0038 CALL R5 3 - 0x70020049, // 0039 JMP #0084 - 0x88140107, // 003A GETMBR R5 R0 K7 - 0x5419FFFE, // 003B LDINT R6 -1 - 0x1C140A06, // 003C EQ R5 R5 R6 - 0x78160016, // 003D JMPF R5 #0055 - 0x780E000A, // 003E JMPF R3 #004A - 0x8C140303, // 003F GETMET R5 R1 K3 - 0x541E005F, // 0040 LDINT R7 96 - 0x88200104, // 0041 GETMBR R8 R0 K4 - 0x001C0E08, // 0042 ADD R7 R7 R8 - 0x58200005, // 0043 LDCONST R8 K5 - 0x7C140600, // 0044 CALL R5 3 - 0x8C140303, // 0045 GETMET R5 R1 K3 - 0x881C0100, // 0046 GETMBR R7 R0 K0 - 0x54220003, // 0047 LDINT R8 4 - 0x7C140600, // 0048 CALL R5 3 - 0x70020009, // 0049 JMP #0054 - 0x8C140303, // 004A GETMET R5 R1 K3 - 0x541E003F, // 004B LDINT R7 64 - 0x88200104, // 004C GETMBR R8 R0 K4 - 0x001C0E08, // 004D ADD R7 R7 R8 - 0x58200005, // 004E LDCONST R8 K5 - 0x7C140600, // 004F CALL R5 3 - 0x8C140303, // 0050 GETMET R5 R1 K3 - 0x881C0100, // 0051 GETMBR R7 R0 K0 - 0x58200006, // 0052 LDCONST R8 K6 - 0x7C140600, // 0053 CALL R5 3 - 0x7002002E, // 0054 JMP #0084 - 0x88140107, // 0055 GETMBR R5 R0 K7 - 0x4C180000, // 0056 LDNIL R6 - 0x20140A06, // 0057 NE R5 R5 R6 - 0x78160016, // 0058 JMPF R5 #0070 - 0x780E000A, // 0059 JMPF R3 #0065 - 0x8C140303, // 005A GETMET R5 R1 K3 - 0x541E009F, // 005B LDINT R7 160 - 0x88200104, // 005C GETMBR R8 R0 K4 - 0x001C0E08, // 005D ADD R7 R7 R8 - 0x58200005, // 005E LDCONST R8 K5 - 0x7C140600, // 005F CALL R5 3 - 0x8C140303, // 0060 GETMET R5 R1 K3 - 0x881C0100, // 0061 GETMBR R7 R0 K0 - 0x54220003, // 0062 LDINT R8 4 - 0x7C140600, // 0063 CALL R5 3 - 0x70020009, // 0064 JMP #006F - 0x8C140303, // 0065 GETMET R5 R1 K3 - 0x541E007F, // 0066 LDINT R7 128 - 0x88200104, // 0067 GETMBR R8 R0 K4 - 0x001C0E08, // 0068 ADD R7 R7 R8 - 0x58200005, // 0069 LDCONST R8 K5 - 0x7C140600, // 006A CALL R5 3 - 0x8C140303, // 006B GETMET R5 R1 K3 - 0x881C0100, // 006C GETMBR R7 R0 K0 - 0x58200006, // 006D LDCONST R8 K6 - 0x7C140600, // 006E CALL R5 3 - 0x70020013, // 006F JMP #0084 - 0x88140108, // 0070 GETMBR R5 R0 K8 - 0x4C180000, // 0071 LDNIL R6 - 0x20140A06, // 0072 NE R5 R5 R6 - 0x7816000A, // 0073 JMPF R5 #007F - 0x8C140303, // 0074 GETMET R5 R1 K3 - 0x541E001F, // 0075 LDINT R7 32 - 0x88200104, // 0076 GETMBR R8 R0 K4 - 0x001C0E08, // 0077 ADD R7 R7 R8 - 0x58200005, // 0078 LDCONST R8 K5 - 0x7C140600, // 0079 CALL R5 3 - 0x8C140303, // 007A GETMET R5 R1 K3 - 0x881C0108, // 007B GETMBR R7 R0 K8 - 0x58200005, // 007C LDCONST R8 K5 - 0x7C140600, // 007D CALL R5 3 - 0x70020004, // 007E JMP #0084 - 0x8C140303, // 007F GETMET R5 R1 K3 - 0x881C0104, // 0080 GETMBR R7 R0 K4 - 0x001E0207, // 0081 ADD R7 K1 R7 - 0x58200005, // 0082 LDCONST R8 K5 - 0x7C140600, // 0083 CALL R5 3 - 0x80000000, // 0084 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_tostring, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(tag_profile), - /* K2 */ be_nested_str_weak(Matter_X3A_X3A), - /* K3 */ be_nested_str_weak(tag_number), - /* K4 */ be_nested_str_weak(0x_X2508X_X20), - /* K5 */ be_nested_str_weak(tag_vendor), - /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A), - /* K7 */ be_nested_str_weak(0x_X2504X_X3A), - /* K8 */ be_nested_str_weak(tag_sub), - /* K9 */ be_nested_str_weak(_X25i_X20), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(_X3D_X20), - /* K12 */ be_nested_str_weak(val), - /* K13 */ be_nested_str_weak(int), - /* K14 */ be_nested_str_weak(_X25i), - /* K15 */ be_nested_str_weak(typ), - /* K16 */ be_nested_str_weak(TLV), - /* K17 */ be_nested_str_weak(U1), - /* K18 */ be_nested_str_weak(U8), - /* K19 */ be_nested_str_weak(U), - /* K20 */ be_nested_str_weak(bool), - /* K21 */ be_nested_str_weak(true), - /* K22 */ be_nested_str_weak(false), - /* K23 */ be_nested_str_weak(null), - /* K24 */ be_nested_str_weak(real), - /* K25 */ be_nested_str_weak(_X25g), - /* K26 */ be_nested_str_weak(string), - /* K27 */ be_nested_str_weak(_X22_X25s_X22), - /* K28 */ be_nested_str_weak(int64), - /* K29 */ be_nested_str_weak(tostring), - /* K30 */ be_nested_str_weak(instance), - /* K31 */ be_nested_str_weak(_X25s), - /* K32 */ be_nested_str_weak(tohex), - /* K33 */ be_nested_str_weak(_X20), - }), - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[167]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0xA802009C, // 0001 EXBLK 0 #009F - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x200C0203, // 0003 NE R3 R1 R3 - 0x780E0038, // 0004 JMPF R3 #003E - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x5411FFFE, // 0006 LDINT R4 -1 - 0x1C0C0604, // 0007 EQ R3 R3 R4 - 0x780E000A, // 0008 JMPF R3 #0014 - 0x00080502, // 0009 ADD R2 R2 K2 - 0x880C0103, // 000A GETMBR R3 R0 K3 - 0x4C100000, // 000B LDNIL R4 - 0x200C0604, // 000C NE R3 R3 R4 - 0x780E0004, // 000D JMPF R3 #0013 - 0x600C0018, // 000E GETGBL R3 G24 - 0x58100004, // 000F LDCONST R4 K4 - 0x88140103, // 0010 GETMBR R5 R0 K3 - 0x7C0C0400, // 0011 CALL R3 2 - 0x00080403, // 0012 ADD R2 R2 R3 - 0x70020023, // 0013 JMP #0038 - 0x880C0105, // 0014 GETMBR R3 R0 K5 - 0x4C100000, // 0015 LDNIL R4 - 0x200C0604, // 0016 NE R3 R3 R4 - 0x780E0004, // 0017 JMPF R3 #001D - 0x600C0018, // 0018 GETGBL R3 G24 - 0x58100006, // 0019 LDCONST R4 K6 - 0x88140105, // 001A GETMBR R5 R0 K5 - 0x7C0C0400, // 001B CALL R3 2 - 0x00080403, // 001C ADD R2 R2 R3 - 0x880C0101, // 001D GETMBR R3 R0 K1 - 0x4C100000, // 001E LDNIL R4 - 0x200C0604, // 001F NE R3 R3 R4 - 0x780E0004, // 0020 JMPF R3 #0026 - 0x600C0018, // 0021 GETGBL R3 G24 - 0x58100007, // 0022 LDCONST R4 K7 - 0x88140101, // 0023 GETMBR R5 R0 K1 - 0x7C0C0400, // 0024 CALL R3 2 - 0x00080403, // 0025 ADD R2 R2 R3 - 0x880C0103, // 0026 GETMBR R3 R0 K3 - 0x4C100000, // 0027 LDNIL R4 - 0x200C0604, // 0028 NE R3 R3 R4 - 0x780E0004, // 0029 JMPF R3 #002F - 0x600C0018, // 002A GETGBL R3 G24 - 0x58100004, // 002B LDCONST R4 K4 - 0x88140103, // 002C GETMBR R5 R0 K3 - 0x7C0C0400, // 002D CALL R3 2 - 0x00080403, // 002E ADD R2 R2 R3 - 0x880C0108, // 002F GETMBR R3 R0 K8 - 0x4C100000, // 0030 LDNIL R4 - 0x200C0604, // 0031 NE R3 R3 R4 - 0x780E0004, // 0032 JMPF R3 #0038 - 0x600C0018, // 0033 GETGBL R3 G24 - 0x58100009, // 0034 LDCONST R4 K9 - 0x88140108, // 0035 GETMBR R5 R0 K8 - 0x7C0C0400, // 0036 CALL R3 2 - 0x00080403, // 0037 ADD R2 R2 R3 - 0x600C000C, // 0038 GETGBL R3 G12 - 0x5C100400, // 0039 MOVE R4 R2 - 0x7C0C0200, // 003A CALL R3 1 - 0x240C070A, // 003B GT R3 R3 K10 - 0x780E0000, // 003C JMPF R3 #003E - 0x0008050B, // 003D ADD R2 R2 K11 - 0x600C0004, // 003E GETGBL R3 G4 - 0x8810010C, // 003F GETMBR R4 R0 K12 - 0x7C0C0200, // 0040 CALL R3 1 - 0x1C0C070D, // 0041 EQ R3 R3 K13 - 0x780E0010, // 0042 JMPF R3 #0054 - 0x600C0018, // 0043 GETGBL R3 G24 - 0x5810000E, // 0044 LDCONST R4 K14 - 0x8814010C, // 0045 GETMBR R5 R0 K12 - 0x7C0C0400, // 0046 CALL R3 2 - 0x00080403, // 0047 ADD R2 R2 R3 - 0x880C010F, // 0048 GETMBR R3 R0 K15 - 0x88100110, // 0049 GETMBR R4 R0 K16 - 0x88100911, // 004A GETMBR R4 R4 K17 - 0x280C0604, // 004B GE R3 R3 R4 - 0x780E0005, // 004C JMPF R3 #0053 - 0x880C010F, // 004D GETMBR R3 R0 K15 - 0x88100110, // 004E GETMBR R4 R0 K16 - 0x88100912, // 004F GETMBR R4 R4 K18 - 0x180C0604, // 0050 LE R3 R3 R4 - 0x780E0000, // 0051 JMPF R3 #0053 - 0x00080513, // 0052 ADD R2 R2 K19 - 0x70020048, // 0053 JMP #009D - 0x600C0004, // 0054 GETGBL R3 G4 - 0x8810010C, // 0055 GETMBR R4 R0 K12 - 0x7C0C0200, // 0056 CALL R3 1 - 0x1C0C0714, // 0057 EQ R3 R3 K20 - 0x780E0006, // 0058 JMPF R3 #0060 - 0x880C010C, // 0059 GETMBR R3 R0 K12 - 0x780E0001, // 005A JMPF R3 #005D - 0x580C0015, // 005B LDCONST R3 K21 - 0x70020000, // 005C JMP #005E - 0x580C0016, // 005D LDCONST R3 K22 - 0x00080403, // 005E ADD R2 R2 R3 - 0x7002003C, // 005F JMP #009D - 0x880C010C, // 0060 GETMBR R3 R0 K12 - 0x4C100000, // 0061 LDNIL R4 - 0x1C0C0604, // 0062 EQ R3 R3 R4 - 0x780E0001, // 0063 JMPF R3 #0066 - 0x00080517, // 0064 ADD R2 R2 K23 - 0x70020036, // 0065 JMP #009D - 0x600C0004, // 0066 GETGBL R3 G4 - 0x8810010C, // 0067 GETMBR R4 R0 K12 - 0x7C0C0200, // 0068 CALL R3 1 - 0x1C0C0718, // 0069 EQ R3 R3 K24 - 0x780E0005, // 006A JMPF R3 #0071 - 0x600C0018, // 006B GETGBL R3 G24 - 0x58100019, // 006C LDCONST R4 K25 - 0x8814010C, // 006D GETMBR R5 R0 K12 - 0x7C0C0400, // 006E CALL R3 2 - 0x00080403, // 006F ADD R2 R2 R3 - 0x7002002B, // 0070 JMP #009D - 0x600C0004, // 0071 GETGBL R3 G4 - 0x8810010C, // 0072 GETMBR R4 R0 K12 - 0x7C0C0200, // 0073 CALL R3 1 - 0x1C0C071A, // 0074 EQ R3 R3 K26 - 0x780E0005, // 0075 JMPF R3 #007C - 0x600C0018, // 0076 GETGBL R3 G24 - 0x5810001B, // 0077 LDCONST R4 K27 - 0x8814010C, // 0078 GETMBR R5 R0 K12 - 0x7C0C0400, // 0079 CALL R3 2 - 0x00080403, // 007A ADD R2 R2 R3 - 0x70020020, // 007B JMP #009D - 0x600C000F, // 007C GETGBL R3 G15 - 0x8810010C, // 007D GETMBR R4 R0 K12 - 0xB8163800, // 007E GETNGBL R5 K28 - 0x7C0C0400, // 007F CALL R3 2 - 0x780E000F, // 0080 JMPF R3 #0091 - 0x880C010C, // 0081 GETMBR R3 R0 K12 - 0x8C0C071D, // 0082 GETMET R3 R3 K29 - 0x7C0C0200, // 0083 CALL R3 1 - 0x00080403, // 0084 ADD R2 R2 R3 - 0x880C010F, // 0085 GETMBR R3 R0 K15 - 0x88100110, // 0086 GETMBR R4 R0 K16 - 0x88100911, // 0087 GETMBR R4 R4 K17 - 0x280C0604, // 0088 GE R3 R3 R4 - 0x780E0005, // 0089 JMPF R3 #0090 - 0x880C010F, // 008A GETMBR R3 R0 K15 - 0x88100110, // 008B GETMBR R4 R0 K16 - 0x88100912, // 008C GETMBR R4 R4 K18 - 0x180C0604, // 008D LE R3 R3 R4 - 0x780E0000, // 008E JMPF R3 #0090 - 0x00080513, // 008F ADD R2 R2 K19 - 0x7002000B, // 0090 JMP #009D - 0x600C0004, // 0091 GETGBL R3 G4 - 0x8810010C, // 0092 GETMBR R4 R0 K12 - 0x7C0C0200, // 0093 CALL R3 1 - 0x1C0C071E, // 0094 EQ R3 R3 K30 - 0x780E0006, // 0095 JMPF R3 #009D - 0x600C0018, // 0096 GETGBL R3 G24 - 0x5810001F, // 0097 LDCONST R4 K31 - 0x8814010C, // 0098 GETMBR R5 R0 K12 - 0x8C140B20, // 0099 GETMET R5 R5 K32 - 0x7C140200, // 009A CALL R5 1 - 0x7C0C0400, // 009B CALL R3 2 - 0x00080403, // 009C ADD R2 R2 R3 - 0xA8040001, // 009D EXBLK 1 1 - 0x70020006, // 009E JMP #00A6 - 0xAC0C0002, // 009F CATCH R3 0 2 - 0x70020003, // 00A0 JMP #00A5 - 0x00140721, // 00A1 ADD R5 R3 K33 - 0x00140A04, // 00A2 ADD R5 R5 R4 - 0x80040A00, // 00A3 RET 1 R5 - 0x70020000, // 00A4 JMP #00A6 - 0xB0080000, // 00A5 RAISE 2 R0 R0 - 0x80040400, // 00A6 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_commonprofile -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_fulltag), - }), - be_str_weak(set_commonprofile), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x5411FFFE, // 0002 LDINT R4 -1 - 0x4C140000, // 0003 LDNIL R5 - 0x7C040800, // 0004 CALL R1 4 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_TLV_item; -be_local_closure(class_Matter_TLV_item_init, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TLV_item, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parent), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_TLV_item ********************************************************************/ be_local_class(Matter_TLV_item, 8, NULL, - be_nested_map(31, + be_nested_map(32, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(is_array, 17), be_const_bool(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_TLV_item_init_closure) }, - { be_const_key_weak(set_parent, -1), be_const_closure(class_Matter_TLV_item_set_parent_closure) }, - { be_const_key_weak(set_fulltag, -1), be_const_closure(class_Matter_TLV_item_set_fulltag_closure) }, - { be_const_key_weak(typ, -1), be_const_var(6) }, - { be_const_key_weak(parse, 30), be_const_closure(class_Matter_TLV_item_parse_closure) }, - { be_const_key_weak(parent, 22), be_const_var(0) }, - { be_const_key_weak(to_str_val, -1), be_const_closure(class_Matter_TLV_item_to_str_val_closure) }, - { be_const_key_weak(encode_len, 4), be_const_closure(class_Matter_TLV_item_encode_len_closure) }, - { be_const_key_weak(TLV, 20), be_const_class(be_class_Matter_TLV) }, - { be_const_key_weak(reset, 0), be_const_closure(class_Matter_TLV_item_reset_closure) }, - { be_const_key_weak(tag_profile, -1), be_const_var(3) }, - { be_const_key_weak(create_TLV, -1), be_const_static_closure(class_Matter_TLV_item_create_TLV_closure) }, - { be_const_key_weak(tag_sub, -1), be_const_var(5) }, - { be_const_key_weak(tag_vendor, -1), be_const_var(2) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_Matter_TLV_item_tostring_closure) }, - { be_const_key_weak(val, 5), be_const_var(7) }, - { be_const_key_weak(_encode_tag, -1), be_const_closure(class_Matter_TLV_item__encode_tag_closure) }, - { be_const_key_weak(_cmp_gt, -1), be_const_closure(class_Matter_TLV_item__cmp_gt_closure) }, - { be_const_key_weak(_encode_tag_len, 25), be_const_closure(class_Matter_TLV_item__encode_tag_len_closure) }, - { be_const_key_weak(is_struct, -1), be_const_bool(0) }, - { be_const_key_weak(tlv2raw, -1), be_const_closure(class_Matter_TLV_item_tlv2raw_closure) }, - { be_const_key_weak(sort, -1), be_const_static_closure(class_Matter_TLV_item_sort_closure) }, - { be_const_key_weak(is_list, -1), be_const_bool(0) }, - { be_const_key_weak(to_TLV, 18), be_const_closure(class_Matter_TLV_item_to_TLV_closure) }, + { be_const_key_weak(reset, -1), be_const_closure(class_Matter_TLV_item_reset_closure) }, + { be_const_key_weak(set_or_nil, -1), be_const_closure(class_Matter_TLV_item_set_or_nil_closure) }, + { be_const_key_weak(set_anonymoustag, 30), be_const_closure(class_Matter_TLV_item_set_anonymoustag_closure) }, { be_const_key_weak(set, -1), be_const_closure(class_Matter_TLV_item_set_closure) }, - { be_const_key_weak(set_anonymoustag, 15), be_const_closure(class_Matter_TLV_item_set_anonymoustag_closure) }, + { be_const_key_weak(create_TLV, -1), be_const_static_closure(class_Matter_TLV_item_create_TLV_closure) }, + { be_const_key_weak(tostring, 22), be_const_closure(class_Matter_TLV_item_tostring_closure) }, + { be_const_key_weak(tag_sub, -1), be_const_var(5) }, + { be_const_key_weak(is_array, -1), be_const_bool(0) }, + { be_const_key_weak(to_str_val, 4), be_const_closure(class_Matter_TLV_item_to_str_val_closure) }, + { be_const_key_weak(parent, -1), be_const_var(0) }, + { be_const_key_weak(is_list, -1), be_const_bool(0) }, + { be_const_key_weak(is_struct, -1), be_const_bool(0) }, + { be_const_key_weak(parse, -1), be_const_closure(class_Matter_TLV_item_parse_closure) }, + { be_const_key_weak(set_parent, -1), be_const_closure(class_Matter_TLV_item_set_parent_closure) }, { be_const_key_weak(set_commonprofile, -1), be_const_closure(class_Matter_TLV_item_set_commonprofile_closure) }, + { be_const_key_weak(_encode_tag, -1), be_const_closure(class_Matter_TLV_item__encode_tag_closure) }, + { be_const_key_weak(TLV, -1), be_const_class(be_class_Matter_TLV) }, + { be_const_key_weak(sort, 25), be_const_static_closure(class_Matter_TLV_item_sort_closure) }, + { be_const_key_weak(tag_vendor, -1), be_const_var(2) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_TLV_item_init_closure) }, + { be_const_key_weak(_cmp_gt, -1), be_const_closure(class_Matter_TLV_item__cmp_gt_closure) }, { be_const_key_weak(tag_number, -1), be_const_var(4) }, - { be_const_key_weak(next_idx, 1), be_const_var(1) }, + { be_const_key_weak(tlv2raw, -1), be_const_closure(class_Matter_TLV_item_tlv2raw_closure) }, + { be_const_key_weak(_encode_tag_len, -1), be_const_closure(class_Matter_TLV_item__encode_tag_len_closure) }, + { be_const_key_weak(next_idx, -1), be_const_var(1) }, + { be_const_key_weak(tag_profile, 16), be_const_var(3) }, + { be_const_key_weak(typ, -1), be_const_var(6) }, { be_const_key_weak(set_contextspecific, -1), be_const_closure(class_Matter_TLV_item_set_contextspecific_closure) }, + { be_const_key_weak(val, 13), be_const_var(7) }, + { be_const_key_weak(to_TLV, 9), be_const_closure(class_Matter_TLV_item_to_TLV_closure) }, + { be_const_key_weak(set_fulltag, -1), be_const_closure(class_Matter_TLV_item_set_fulltag_closure) }, + { be_const_key_weak(encode_len, 2), be_const_closure(class_Matter_TLV_item_encode_len_closure) }, })), be_str_weak(Matter_TLV_item) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 8bae5ab68..4ed01b4c6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -3419,7 +3419,7 @@ be_local_class(Matter_UI, { be_const_key_weak(show_commissioning_info, -1), be_const_closure(class_Matter_UI_show_commissioning_info_closure) }, { be_const_key_weak(page_part_ctl, 18), be_const_closure(class_Matter_UI_page_part_ctl_closure) }, { be_const_key_weak(show_fabric_info, -1), be_const_closure(class_Matter_UI_show_fabric_info_closure) }, - { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Cwaterleak_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_waterleak) }, + { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_waterleak_X7Cv_airquality) }, { be_const_key_weak(web_get_arg, -1), be_const_closure(class_Matter_UI_web_get_arg_closure) }, { be_const_key_weak(plugin_option, 5), be_const_closure(class_Matter_UI_plugin_option_closure) }, { be_const_key_weak(web_add_config_button, -1), be_const_closure(class_Matter_UI_web_add_config_button_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index 3a49183ff..b1ad4546f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -6284,52 +6284,55 @@ be_local_class(Matter_Device, { be_const_key_weak(stop, 14), be_const_closure(class_Matter_Device_stop_closure) }, { be_const_key_weak(stop_basic_commissioning, 13), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, { be_const_key_weak(plugins_classes, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(44, + be_const_map( * be_nested_map(47, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(humidity, 37), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, - { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, - { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, - { be_const_key_weak(http_flow, 25), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, - { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, - { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, - { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, - { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, - { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, - { be_const_key_weak(illuminance, 22), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(v_light3, 33), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, - { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(v_light1, 14), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, - { be_const_key_weak(http_occupancy, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(http_illuminance, 12), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, - { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, - { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, - { be_const_key_weak(light2, -1), be_const_class(be_class_Matter_Plugin_Light2) }, - { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) }, + { be_const_key_weak(v_waterleak, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, - { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, + { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, + { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, + { be_const_key_weak(humidity, 17), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, + { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, - { be_const_key_weak(shutter, 28), be_const_class(be_class_Matter_Plugin_Shutter) }, - { be_const_key_weak(http_light0, 24), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, - { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, - { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, - { be_const_key_weak(v_contact, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, - { be_const_key_weak(root, 7), be_const_class(be_class_Matter_Plugin_Root) }, - { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, - { be_const_key_weak(v_illuminance, 8), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, - { be_const_key_weak(v_light2, 26), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, - { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(v_light0, 4), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, - { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, - { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, - { be_const_key_weak(shutter_X2Btilt, 43), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, - { be_const_key_weak(http_waterleak, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(http_relay, 16), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, - { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, - { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, + { be_const_key_weak(airquality, -1), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, + { be_const_key_weak(http_flow, 36), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, + { be_const_key_weak(v_illuminance, 24), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, + { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(http_light1, 26), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, + { be_const_key_weak(http_light0, 6), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, + { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, + { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, + { be_const_key_weak(contact, 10), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, + { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, + { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, + { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, + { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, + { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, + { be_const_key_weak(http_illuminance, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, + { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, + { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) }, + { be_const_key_weak(v_contact, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, + { be_const_key_weak(flow, 34), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, + { be_const_key_weak(shutter, 5), be_const_class(be_class_Matter_Plugin_Shutter) }, + { be_const_key_weak(v_pressure, 2), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, + { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, + { be_const_key_weak(v_light2, 39), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, + { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, + { be_const_key_weak(v_airquality, 42), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(light2, 3), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, + { be_const_key_weak(illuminance, 40), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, + { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, + { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, + { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(http_waterleak, 14), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, + { be_const_key_weak(http_occupancy, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, + { be_const_key_weak(root, 29), be_const_class(be_class_Matter_Plugin_Root) }, })) ) } )) }, { be_const_key_weak(tick, 9), be_const_var(10) }, { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(17) }, From 01f9097acb08ae5b051321905e7cc3790984adaa Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 3 Jun 2024 22:53:13 +0200 Subject: [PATCH 004/252] Add default value for `SetOption151` (#21560) --- tasmota/my_user_config.h | 7 +++++++ tasmota/tasmota_support/settings.ino | 3 +++ 2 files changed, 10 insertions(+) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 8bc62baae..3692c6715 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -1014,6 +1014,9 @@ #define USE_ZIGBEE_MAXTIME_LIGHT 60*60 // 1h #define USE_ZIGBEE_MAXTIME_LIFT 4*60*60 // 4h +// -- Matter support (ESP32 and variants) ---------------------------- +#define MATTER_ENABLED false // Is Matter enabled by default (ie `SO151 1`) + // -- Other sensors/drivers ----------------------- //#define USE_SHIFT595 // Add support for 74xx595 8-bit shift registers (+0k7 code) @@ -1239,6 +1242,10 @@ // #define BE_LV_WIDGET_TABVIEW // #define BE_LV_WIDGET_TILEVIEW +// -- Matter protocol --------------------------------- + // #define USE_MATTER_DEVICE // Enable Matter device support (+420KB) + // Enabled by default in standard ESP32 binary + #endif // ESP32 /*********************************************************************************************\ diff --git a/tasmota/tasmota_support/settings.ino b/tasmota/tasmota_support/settings.ino index 24dc0d636..ca13e46a1 100644 --- a/tasmota/tasmota_support/settings.ino +++ b/tasmota/tasmota_support/settings.ino @@ -1425,6 +1425,9 @@ void SettingsDefaultSet2(void) { #endif #endif // FIRMWARE_MINIMAL + // Matter + flag6.matter_enabled |= MATTER_ENABLED; + Settings->flag = flag; Settings->flag2 = flag2; Settings->flag3 = flag3; From 7d87bf0dcc261ca4194b8e5103a7dbbfe38bb93a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 4 Jun 2024 09:37:02 +0200 Subject: [PATCH 005/252] Update changelogs --- CHANGELOG.md | 4 ++-- RELEASENOTES.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cbe99336..7517f6d26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,8 @@ All notable changes to this project will be documented in this file. ## [14.1.0.1] ### Added -- Berry solidification of `bytes` instances -- Matter support for Air Quality sensors +- Berry solidification of `bytes` instances (#21558) +- Matter support for Air Quality sensors (#21559) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 01031a582..0a917c20e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -121,6 +121,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ## Changelog v14.1.0.1 ### Added +- Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) +- Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) ### Changed From dcc70213842e67efa8dadaed96dbdc9036055bb4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 4 Jun 2024 14:19:11 +0200 Subject: [PATCH 006/252] Remove GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN --- tasmota/include/tasmota_template.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index 78343eb5a..b1a9ee913 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -166,8 +166,8 @@ enum UserSelectablePins { #ifdef ESP32 GPIO_KEY1_PD, GPIO_KEY1_INV_PD, GPIO_SWT1_PD, #endif - GPIO_I2S_DOUT, GPIO_I2S_BCLK, GPIO_I2S_WS, - GPIO_I2S_DIN, GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN, + GPIO_I2S_DOUT, GPIO_I2S_BCLK, GPIO_I2S_WS, GPIO_I2S_DIN, + GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN, // Spare since 20240603 GPIO_INTERRUPT, GPIO_MCP2515_CS, // MCP2515 Chip Select GPIO_HRG15_TX, GPIO_HRG15_RX, // Hydreon RG-15 rain sensor serial interface @@ -429,8 +429,8 @@ const char kSensorNames[] PROGMEM = #ifdef ESP32 D_SENSOR_BUTTON "_d|" D_SENSOR_BUTTON "_id|" D_SENSOR_SWITCH "_d|" #endif - D_SENSOR_I2S_DOUT "|" D_SENSOR_I2S_BCLK "|" D_SENSOR_I2S_WS "|" - D_SENSOR_I2S_DIN "|" D_SENSOR_I2S_BCLK_IN "|" D_SENSOR_I2S_WS_IN "|" + D_SENSOR_I2S_DOUT "|" D_SENSOR_I2S_BCLK "|" D_SENSOR_I2S_WS "|" D_SENSOR_I2S_DIN "|" + D_SENSOR_I2S_BCLK_IN "|" D_SENSOR_I2S_WS_IN "|" D_SENSOR_INTERRUPT "|" D_SENSOR_MCP2515_CS "|" D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX "|" @@ -600,10 +600,6 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_I2S_WS) + MAX_I2S, // I2S word select AGPIO(GPIO_I2S_DIN) + MAX_I2S, // I2S IN Data #endif -#ifdef USE_I2S - AGPIO(GPIO_I2S_BCLK_IN) + MAX_I2S, // I2S bit clock in - AGPIO(GPIO_I2S_WS_IN) + MAX_I2S, // I2S word select in -#endif #ifdef USE_SPI AGPIO(GPIO_SPI_MISO) + MAX_SPI, // SPI MISO From 7ae86d336b63493e76f5e31e3670cecf13771a02 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:45:08 +0200 Subject: [PATCH 007/252] add uTouch settings --- tasmota/displaydesc/Lanbon_L8_display.ini | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tasmota/displaydesc/Lanbon_L8_display.ini b/tasmota/displaydesc/Lanbon_L8_display.ini index 23ffc0f07..b1f66f350 100644 --- a/tasmota/displaydesc/Lanbon_L8_display.ini +++ b/tasmota/displaydesc/Lanbon_L8_display.ini @@ -18,5 +18,19 @@ :2,00,00,00,02 :3,60,00,00,03 :i,20,21 -:TI1,38,0,4 +:UTI,FT6336U,I1,38,*,* +RD A0 +CP 02 +RTF +RT +:UTT +RDM 00 16 +MV 2 1 +RT +:UTX +MV 3 2 +RT +:UTY +MV 5 2 +RT # From 89b4376e3160b304924802de76cd057827f15a64 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:03:05 +0200 Subject: [PATCH 008/252] uTouch for m5core2 --- tasmota/displaydesc/M5stack_core2_display.ini | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tasmota/displaydesc/M5stack_core2_display.ini b/tasmota/displaydesc/M5stack_core2_display.ini index 9426de46b..216e8b76d 100644 --- a/tasmota/displaydesc/M5stack_core2_display.ini +++ b/tasmota/displaydesc/M5stack_core2_display.ini @@ -34,5 +34,19 @@ E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F :2,C8,00,00,02 :3,68,00,00,85 :i,21,20 -:TI2,38,22,21 +:UTI,FT6336U,I2,38,22,21 +RD A0 +CP 02 +RTF +RT +:UTT +RDM 00 16 +MV 2 1 +RT +:UTX +MV 3 2 +RT +:UTY +MV 5 2 +RT # From 9e168d84d7e172f5f4b6d0497f4f12ad8c63ff28 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 4 Jun 2024 23:30:01 +0200 Subject: [PATCH 009/252] Berry `input()` returns empty string and does not crash (#21565) --- CHANGELOG.md | 1 + lib/libesp32/berry_tasmota/src/be_port.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7517f6d26..88c52a8ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. ### Changed ### Fixed +- Berry `input()` returns empty string and does not crash ### Removed diff --git a/lib/libesp32/berry_tasmota/src/be_port.cpp b/lib/libesp32/berry_tasmota/src/be_port.cpp index 0c70bf61c..db40e153f 100644 --- a/lib/libesp32/berry_tasmota/src/be_port.cpp +++ b/lib/libesp32/berry_tasmota/src/be_port.cpp @@ -216,7 +216,10 @@ extern "C" { BERRY_API char* be_readstring(char *buffer, size_t size) { - return be_fgets(stdin, buffer, (int)size); + if ((size > 0) && (buffer != NULL)) { + *buffer = 0; + } + return buffer; } /* use the standard library implementation file API. */ From f3fa9dfd9bb175414e42bc1148f9210c1b25d6b2 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:53:13 +0200 Subject: [PATCH 010/252] Update M5stack_core2_display.ini --- tasmota/displaydesc/M5stack_core2_display.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/displaydesc/M5stack_core2_display.ini b/tasmota/displaydesc/M5stack_core2_display.ini index 216e8b76d..b0b0b82d2 100644 --- a/tasmota/displaydesc/M5stack_core2_display.ini +++ b/tasmota/displaydesc/M5stack_core2_display.ini @@ -34,7 +34,7 @@ E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F :2,C8,00,00,02 :3,68,00,00,85 :i,21,20 -:UTI,FT6336U,I2,38,22,21 +:UTI,FT6336U,I2,38,-1,-1 RD A0 CP 02 RTF From e198ffb22df695c4bcdc948b81133ccb7fe4ea88 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:07:38 +0200 Subject: [PATCH 011/252] Tasmota esp32 platform 2024.06.10 (#21569) --- platformio_tasmota32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index b90c3aaa8..23eed748f 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -81,7 +81,7 @@ lib_ignore = ${esp32_defaults.lib_ignore} ccronexpr [core32] -platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.05.13/platform-espressif32.zip +platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.06.10/platform-espressif32.zip platform_packages = build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From 0bcb9815566edd0e9848bdf1bc7f5771d9942c98 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 5 Jun 2024 23:13:48 +0200 Subject: [PATCH 012/252] Matter refactoring of bridged devices (#21575) --- CHANGELOG.md | 1 + .../berry_matter/src/be_matter_module.c | 36 +- .../src/embedded/Matter_HTTP_remote.be | 77 +- .../src/embedded/Matter_Plugin_0.be | 5 +- .../src/embedded/Matter_Plugin_1_Device.be | 227 +- .../embedded/Matter_Plugin_2_Bridge_HTTP.be | 296 --- ...n_2_OnOff.be => Matter_Plugin_2_Light0.be} | 101 +- .../src/embedded/Matter_Plugin_2_Light1.be | 136 +- .../src/embedded/Matter_Plugin_2_Sensor.be | 59 + .../Matter_Plugin_2_Sensor_Contact.be | 43 +- .../Matter_Plugin_2_Sensor_Occupancy.be | 44 +- .../embedded/Matter_Plugin_2_Sensor_OnOff.be | 2 +- .../Matter_Plugin_2_Sensor_Waterleak.be | 50 +- .../embedded/Matter_Plugin_3_Bridge_Light0.be | 156 -- .../embedded/Matter_Plugin_3_Bridge_Sensor.be | 122 - .../Matter_Plugin_3_Bridge_Sensor_Contact.be | 110 - ...Matter_Plugin_3_Bridge_Sensor_Occupancy.be | 114 - ...Matter_Plugin_3_Bridge_Sensor_Waterleak.be | 110 - .../src/embedded/Matter_Plugin_3_Light2.be | 72 +- .../src/embedded/Matter_Plugin_3_Light3.be | 91 +- ...n_3_Light0.be => Matter_Plugin_3_OnOff.be} | 18 +- .../embedded/Matter_Plugin_3_Sensor_Flow.be | 15 + .../Matter_Plugin_3_Sensor_Humidity.be | 16 + .../Matter_Plugin_3_Sensor_Illuminance.be | 16 + .../Matter_Plugin_3_Sensor_Pressure.be | 16 + .../embedded/Matter_Plugin_3_Sensor_Temp.be | 30 +- .../embedded/Matter_Plugin_4_Bridge_Light1.be | 184 -- .../Matter_Plugin_4_Bridge_Sensor_Flow.be | 70 - .../Matter_Plugin_4_Bridge_Sensor_Humidity.be | 70 - ...tter_Plugin_4_Bridge_Sensor_Illuminance.be | 77 - .../Matter_Plugin_4_Bridge_Sensor_Pressure.be | 70 - .../Matter_Plugin_4_Bridge_Sensor_Temp.be | 73 - .../embedded/Matter_Plugin_5_Bridge_Light2.be | 155 -- .../embedded/Matter_Plugin_5_Bridge_Light3.be | 176 -- .../embedded/Matter_Plugin_8_Bridge_Light0.be | 32 + .../embedded/Matter_Plugin_8_Bridge_Light1.be | 34 + .../embedded/Matter_Plugin_8_Bridge_Light2.be | 34 + .../embedded/Matter_Plugin_8_Bridge_Light3.be | 34 + ...Off.be => Matter_Plugin_8_Bridge_OnOff.be} | 0 ...ter_Plugin_8_Bridge_Sensor_Air_Quality.be} | 79 +- .../Matter_Plugin_8_Bridge_Sensor_Contact.be | 36 + .../Matter_Plugin_8_Bridge_Sensor_Flow.be | 30 + .../Matter_Plugin_8_Bridge_Sensor_Humidity.be | 30 + ...tter_Plugin_8_Bridge_Sensor_Illuminance.be | 30 + ...Matter_Plugin_8_Bridge_Sensor_Occupancy.be | 36 + .../Matter_Plugin_8_Bridge_Sensor_Pressure.be | 30 + .../Matter_Plugin_8_Bridge_Sensor_Temp.be | 30 + ...Matter_Plugin_8_Bridge_Sensor_Waterleak.be | 32 + .../embedded/Matter_Plugin_9_Virt_Light0.be | 1 - .../embedded/Matter_Plugin_9_Virt_Light1.be | 1 - .../embedded/Matter_Plugin_9_Virt_Light2.be | 1 - .../embedded/Matter_Plugin_9_Virt_Light3.be | 1 - .../embedded/Matter_Plugin_9_Virt_OnOff.be | 1 - ...Matter_Plugin_9_Virt_Sensor_Air_Quality.be | 1 - .../Matter_Plugin_9_Virt_Sensor_Contact.be | 1 - .../Matter_Plugin_9_Virt_Sensor_Flow.be | 1 - .../Matter_Plugin_9_Virt_Sensor_Humidity.be | 1 - ...Matter_Plugin_9_Virt_Sensor_Illuminance.be | 1 - .../Matter_Plugin_9_Virt_Sensor_Occupancy.be | 1 - .../Matter_Plugin_9_Virt_Sensor_Pressure.be | 1 - .../Matter_Plugin_9_Virt_Sensor_Temp.be | 1 - .../Matter_Plugin_9_Virt_Sensor_Waterleak.be | 1 - .../berry_matter/src/embedded/Matter_UI.be | 26 +- .../solidify/solidified_Matter_HTTP_remote.h | 1538 ++++++------ .../src/solidify/solidified_Matter_Plugin_0.h | 2068 +++++++++-------- .../solidified_Matter_Plugin_1_Device.h | 1237 ++++++++-- .../solidified_Matter_Plugin_2_Bridge_HTTP.h | 934 -------- ....h => solidified_Matter_Plugin_2_Light0.h} | 855 ++++--- .../solidified_Matter_Plugin_2_Light1.h | 1332 ++++++----- .../solidified_Matter_Plugin_2_Sensor.h | 591 +++-- ...olidified_Matter_Plugin_2_Sensor_Contact.h | 581 +++-- ...idified_Matter_Plugin_2_Sensor_Occupancy.h | 681 +++--- .../solidified_Matter_Plugin_2_Sensor_OnOff.h | 2 +- ...idified_Matter_Plugin_2_Sensor_Waterleak.h | 450 ++-- ...solidified_Matter_Plugin_3_Bridge_Light0.h | 574 ----- ...solidified_Matter_Plugin_3_Bridge_Sensor.h | 315 --- ...atter_Plugin_3_Bridge_Sensor_Air_Quality.h | 404 ---- ...ed_Matter_Plugin_3_Bridge_Sensor_Contact.h | 431 ---- ..._Matter_Plugin_3_Bridge_Sensor_Occupancy.h | 452 ---- ..._Matter_Plugin_3_Bridge_Sensor_Waterleak.h | 431 ---- .../solidified_Matter_Plugin_3_Light2.h | 789 ++++--- .../solidified_Matter_Plugin_3_Light3.h | 790 +++++-- ...0.h => solidified_Matter_Plugin_3_OnOff.h} | 20 +- .../solidified_Matter_Plugin_3_Sensor_Flow.h | 57 +- ...lidified_Matter_Plugin_3_Sensor_Humidity.h | 65 +- ...ified_Matter_Plugin_3_Sensor_Illuminance.h | 57 +- ...lidified_Matter_Plugin_3_Sensor_Pressure.h | 57 +- .../solidified_Matter_Plugin_3_Sensor_Temp.h | 110 +- ...solidified_Matter_Plugin_4_Bridge_Light1.h | 648 ------ ...ified_Matter_Plugin_4_Bridge_Sensor_Flow.h | 229 -- ...d_Matter_Plugin_4_Bridge_Sensor_Humidity.h | 237 -- ...atter_Plugin_4_Bridge_Sensor_Illuminance.h | 241 -- ...d_Matter_Plugin_4_Bridge_Sensor_Pressure.h | 228 -- ...ified_Matter_Plugin_4_Bridge_Sensor_Temp.h | 249 -- ...solidified_Matter_Plugin_5_Bridge_Light2.h | 550 ----- ...solidified_Matter_Plugin_5_Bridge_Light3.h | 699 ------ ...solidified_Matter_Plugin_8_Bridge_Light0.h | 25 + ...solidified_Matter_Plugin_8_Bridge_Light1.h | 54 + ...solidified_Matter_Plugin_8_Bridge_Light2.h | 54 + ...solidified_Matter_Plugin_8_Bridge_Light3.h | 54 + ...solidified_Matter_Plugin_8_Bridge_OnOff.h} | 2 +- ...atter_Plugin_8_Bridge_Sensor_Air_Quality.h | 167 ++ ...ed_Matter_Plugin_8_Bridge_Sensor_Contact.h | 26 + ...ified_Matter_Plugin_8_Bridge_Sensor_Flow.h | 24 + ...d_Matter_Plugin_8_Bridge_Sensor_Humidity.h | 24 + ...atter_Plugin_8_Bridge_Sensor_Illuminance.h | 24 + ..._Matter_Plugin_8_Bridge_Sensor_Occupancy.h | 26 + ...d_Matter_Plugin_8_Bridge_Sensor_Pressure.h | 24 + ...ified_Matter_Plugin_8_Bridge_Sensor_Temp.h | 24 + ..._Matter_Plugin_8_Bridge_Sensor_Waterleak.h | 26 + .../src/solidify/solidified_Matter_UI.h | 230 +- .../solidify/solidified_Matter_zz_Device.h | 22 +- 112 files changed, 8951 insertions(+), 13102 deletions(-) delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_2_OnOff.be => Matter_Plugin_2_Light0.be} (61%) delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Waterleak.be rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_3_Light0.be => Matter_Plugin_3_OnOff.be} (69%) delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light0.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_4_Bridge_OnOff.be => Matter_Plugin_8_Bridge_OnOff.be} (100%) rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_3_Bridge_Sensor_Air_Quality.be => Matter_Plugin_8_Bridge_Sensor_Air_Quality.be} (55%) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Contact.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Flow.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Humidity.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Illuminance.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Occupancy.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Pressure.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Temp.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Waterleak.be delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_2_OnOff.h => solidified_Matter_Plugin_2_Light0.h} (54%) delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_3_Light0.h => solidified_Matter_Plugin_3_OnOff.h} (73%) delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light0.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_4_Bridge_OnOff.h => solidified_Matter_Plugin_8_Bridge_OnOff.h} (98%) create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 88c52a8ba..e1561c8fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. ### Breaking Changed ### Changed +- Matter refactoring of bridged devices ### Fixed - Berry `input()` returns empty string and does not crash diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index c87cb24ee..38659c774 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -227,11 +227,11 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_1_Root.h" #include "solidify/solidified_Matter_Plugin_1_Aggregator.h" #include "solidify/solidified_Matter_Plugin_1_Device.h" -#include "solidify/solidified_Matter_Plugin_2_OnOff.h" +#include "solidify/solidified_Matter_Plugin_3_OnOff.h" #include "solidify/solidified_Matter_Plugin_9_Virt_OnOff.h" #include "solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h" -#include "solidify/solidified_Matter_Plugin_3_Light0.h" +#include "solidify/solidified_Matter_Plugin_2_Light0.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Light0.h" #include "solidify/solidified_Matter_Plugin_2_Light1.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Light1.h" @@ -259,22 +259,20 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h" -#include "solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h" -#include "solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h" -#include "solidify/solidified_Matter_Plugin_3_Bridge_Light0.h" -#include "solidify/solidified_Matter_Plugin_4_Bridge_Light1.h" -#include "solidify/solidified_Matter_Plugin_5_Bridge_Light2.h" -#include "solidify/solidified_Matter_Plugin_5_Bridge_Light3.h" -#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h" -#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h" -#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h" -#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h" -#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h" -#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h" -#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h" -#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h" -#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h" -#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Light0.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Light1.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Light2.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Light3.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h" #include "solidify/solidified_Matter_Plugin_z_All.h" #include "solidify/solidified_Matter_zz_Device.h" @@ -462,7 +460,7 @@ module matter (scope: global, strings: weak) { // Plugins - only the core classes, all others are taken from `matter_device.plugins_classes` Plugin_Root, class(be_class_Matter_Plugin_Root) // Generic behavior common to all devices Plugin_Aggregator, class(be_class_Matter_Plugin_Aggregator) // Aggregator - Plugin_Bridge_HTTP, class(be_class_Matter_Plugin_Bridge_HTTP) // HTTP bridge superclass + Plugin_Device, class(be_class_Matter_Plugin_Device) // Device } @const_object_info_end */ diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be index b466dc83d..854fb820a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be @@ -49,6 +49,23 @@ class Matter_HTTP_remote : Matter_HTTP_async # `nil` if current request is synchronous var reachable # is the device reachable var reachable_utc # last tick when the reachability was seen (avoids sending superfluous ping commands) + + static var STATUS_PREFIX = [ + "Status", # 0 + "StatusPRM", # 1 + "StatusFWR", # 2 + "StatusLOG", # 3 + "StatusMEM", # 4 + "StatusNET", # 5 + "StatusMQT", # 6 + "StatusTIM", # 7 + nil, # 8 is deprecated and synonym of 10 + "StatusPTH", # 9 + "StatusSNS", # 10 + "StatusSTS", # 11 + "StatusSTK", # 12 + "StatusSHT" # 13 + ] # information gathered about the remote device (name, version...) static var UPDATE_TIME = 5000 # update every 5s until first response @@ -73,9 +90,9 @@ class Matter_HTTP_remote : Matter_HTTP_async self.info = {} if self.device # we need different callbacks per command (don't create a single one for both calls) - self.add_schedule(self.UPDATE_CMD0, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response(status,payload,cmd)) - self.add_schedule(self.UPDATE_CMD2, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response(status,payload,cmd)) - self.add_schedule(self.UPDATE_CMD5, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response(status,payload,cmd)) + self.add_schedule(self.UPDATE_CMD0, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response_and_call_method(status,payload,cmd,self,self.parse_status_http)) + self.add_schedule(self.UPDATE_CMD2, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response_and_call_method(status,payload,cmd,self,self.parse_status_http)) + self.add_schedule(self.UPDATE_CMD5, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response_and_call_method(status,payload,cmd,self,self.parse_status_http)) end end @@ -87,28 +104,40 @@ class Matter_HTTP_remote : Matter_HTTP_async ############################################################# # parse response for `Status` and `Status 2` - def parse_status_response(status, payload, cmd) + # + # Payload can be a string (unparsed) or a map + def parse_status_response_and_call_method(status, payload, cmd, obj, method) if status != nil && status > 0 # device is known to be reachable self.device_is_alive(true) - import json - var j = json.load(payload) - var code = nil # index of Status - if j - # filter - if j.contains("Status") # Status 0 (actually `Status` wihtout any number) - j = j["Status"] - code = 0 - elif j.contains("StatusFWR") # Status 2 - j = j["StatusFWR"] - code = 2 - elif j.contains("StatusNET") # Status 5 - j = j["StatusNET"] - code = 5 + var j = payload + if type(j) == 'string' + import json + j = json.load(j) + end + var code = nil # index of Status, nil of none + if j != nil + + # detect any Status prefix and compute Status + var i = 0 + var prefix_tab = self.STATUS_PREFIX # move to local variable to avoid many dereferencing + while i < size(prefix_tab) + var status_prefix = prefix_tab[i] + if status_prefix != nil + if j.contains(status_prefix) + j = j[status_prefix] + code = i + break + end + end + i = i + 1 end - # convert to shadow values - self.parse_update(j, code) # call parser + + # dispatch to method in charge of converting to shadow values + method(obj, j, code) + else + tasmota.log(f"MTR: *** failed to parse JSON response {payload=}", 3) end end end @@ -116,8 +145,8 @@ class Matter_HTTP_remote : Matter_HTTP_async ############################################################# # Stub for updating shadow values (local copies of what we published to the Matter gateway) # - # This call is synnchronous and blocking. - def parse_update(data, index) + # This call is synchronous and blocking. + def parse_status_http(data, index) var changed = false if index == 0 # Status var device_name = data.find("DeviceName") # we consider 'Tasmota' as the non-information default @@ -254,7 +283,7 @@ class Matter_HTTP_remote : Matter_HTTP_async self.current_cmd = cmd var cmd_url = "/cm?cmnd=" + string.tr(cmd, ' ', '+') - tasmota.log(format("MTR: HTTP async request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 3) + tasmota.log(format("MTR: HTTP async request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4) var ret = self.begin(cmd_url) end @@ -273,7 +302,7 @@ class Matter_HTTP_remote : Matter_HTTP_async self.current_cmd = nil var cmd_url = "/cm?cmnd=" + string.tr(cmd, ' ', '+') - tasmota.log(format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 3) + tasmota.log(format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4) var ret = super(self).begin_sync(cmd_url, timeout) var payload_short = (ret) ? ret : 'nil' if size(payload_short) > 30 payload_short = payload_short[0..29] + '...' end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 8f89f7d3f..28716b38a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -34,6 +34,7 @@ class Matter_Plugin # Behavior of the plugin, frequency at which `update_shadow()` is called static var UPDATE_TIME = 5000 # default is every 5 seconds static var VIRTUAL = false # set to true only for virtual devices + static var BRIDGE = false # set to true only for bridged devices (ESP8266 or OpenBK) var update_next # next timestamp for update # Configuration of the plugin: clusters and type static var CLUSTERS = matter.consolidate_clusters(_class, { @@ -143,14 +144,14 @@ class Matter_Plugin # Returns true if it's a local device, or false for a # remotely device controlled via HTTP def is_local_device() - return true + return !(self.BRIDGE) end ############################################################# # Stub for updating shadow values (local copies of what we published to the Matter gateway) # # This method should collect the data from the local or remote device - # and call `parse_update()` when data is available. + # and call `parse_status()` when data is available. # # TO BE OVERRIDDEN # This call is synnchronous and blocking. diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be index 94d0145bf..8efaad8b7 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be @@ -19,9 +19,23 @@ import matter +#@ solidify:Matter_Plugin_Device.GetOptionReader,weak #@ solidify:Matter_Plugin_Device,weak class Matter_Plugin_Device : Matter_Plugin + # Following arguments are specific to bridge devices + # static var TYPE = "" # name of the plug-in in json + # static var DISPLAY_NAME = "" # display name of the plug-in + # static var ARG = "" # additional argument name (or empty if none) + static var ARG_HTTP = "url" # domain name + # static var UPDATE_TIME = 3000 # update every 3s + static var UPDATE_CMD = "Status 11" # command to send for updates + static var PROBE_TIMEOUT = 1700 # timeout of 1800 ms for probing, which gives at least 1s for TCP recovery + static var SYNC_TIMEOUT = 500 # timeout of 700 ms for probing + + var http_remote # instance of Matter_HTTP_remote + + # clusters for general devices static var CLUSTERS = matter.consolidate_clusters(_class, { # 0x001D: inherited # Descriptor Cluster 9.5 p.453 0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485 @@ -38,6 +52,18 @@ class Matter_Plugin_Device : Matter_Plugin # var tick # tick value when it was last updated # var node_label # name of the endpoint, used only in bridge mode, "" if none + ############################################################# + # Constructor + def init(device, endpoint, arguments) + super(self).init(device, endpoint, arguments) + + if self.BRIDGE + var addr = arguments.find(self.ARG_HTTP) + self.http_remote = self.device.register_http_remote(addr, self.PROBE_TIMEOUT) + self.register_cmd_cb() + end + end + ############################################################# # read an attribute # @@ -86,24 +112,55 @@ class Matter_Plugin_Device : Matter_Plugin end # ==================================================================================================== - elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ========== + elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ========== import string if attribute == 0x0003 # ---------- ProductName / string ---------- - return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) + if self.BRIDGE + var name = self.http_remote.get_info().find("name") + if name + return tlv_solo.set(TLV.UTF1, name) + else + return tlv_solo.set(TLV.NULL, nil) + end + else + return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) + end elif attribute == 0x0005 # ---------- NodeLabel / string ---------- return tlv_solo.set(TLV.UTF1, self.get_name()) elif attribute == 0x000A # ---------- SoftwareVersionString / string ---------- - var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version'] - var version_end = string.find(version_full, '(') - if version_end > 0 version_full = version_full[0..version_end - 1] end - return tlv_solo.set(TLV.UTF1, version_full) - elif attribute == 0x000F # ---------- SerialNumber / string ---------- - return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) + if self.BRIDGE + var version_full = self.http_remote.get_info().find("version") + if version_full + var version_end = string.find(version_full, '(') + if version_end > 0 version_full = version_full[0..version_end - 1] end + return tlv_solo.set(TLV.UTF1, version_full) + else + return tlv_solo.set(TLV.NULL, nil) + end + else + var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version'] + var version_end = string.find(version_full, '(') + if version_end > 0 version_full = version_full[0..version_end - 1] end + return tlv_solo.set(TLV.UTF1, version_full) + end + elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber / string ---------- + if self.BRIDGE + var mac = self.http_remote.get_info().find("mac") + if mac + return tlv_solo.set(TLV.UTF1, mac) + else + return tlv_solo.set(TLV.NULL, nil) + end + else + return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) + end elif attribute == 0x0011 # ---------- Reachable / bool ---------- - return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable - elif attribute == 0x0012 # ---------- UniqueID / string 32 max ---------- - return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) + if self.BRIDGE + return tlv_solo.set(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping + else + return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable + end end end @@ -213,6 +270,154 @@ class Matter_Plugin_Device : Matter_Plugin return ret end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # register_cmd_cb + # + # Register recurrent command and callback + # Defined as a separate method to allow override + def register_cmd_cb() + self.http_remote.add_schedule(self.UPDATE_CMD, self.UPDATE_TIME, + / status,payload,cmd -> self.parse_http_response(status,payload,cmd)) + end + + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This method should collect the data from the local or remote device + # and call `parse_status(, )` when data is available. + def update_shadow() + if self.BRIDGE && self.tick != self.device.tick # don't force an update if we just received it + var ret = self.call_remote_sync(self.UPDATE_CMD) + if ret + self.parse_http_response(1, ret, self.UPDATE_CMD) + end + end + self.tick = self.device.tick + end + + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # TO BE OVERRIDDEN + def parse_status(data, index) + end + + ############################################################# + # call_remote_sync + # + # Call a remote Tasmota device, returns Berry native map or nil + # arg can be nil, in this case `cmd` has it all + def call_remote_sync(cmd, arg) + if self.BRIDGE + # if !self.http_remote return nil end + import json + + var retry = 2 # try 2 times if first failed + if arg != nil cmd = cmd + ' ' + str(arg) end + while retry > 0 + var ret = self.http_remote.call_sync(cmd, self.SYNC_TIMEOUT) + if ret != nil + self.http_remote.device_is_alive(true) + var j = json.load(ret) + return j + end + retry -= 1 + tasmota.log("MTR: HTTP GET retrying", 3) + end + self.http_remote.device_is_alive(false) + return nil + end + end + + ############################################################# + # parse_http_response + # + # Parse response from HTTP API and update shadows + # We support: + # `Status 8`: {"StatusSNS":{ [...] }} + # `Status 11`: {"StatusSTS":{ [...] }} + # `Status 13`: {"StatusSHT":{ [...] }} + def parse_http_response(status, payload, cmd) + if self.BRIDGE + self.tick = self.device.tick # avoid new force update in same tick + self.http_remote.parse_status_response_and_call_method(status, payload, cmd, self, self.parse_status) + end + end + + ############################################################# + # every_250ms + # + # check if the timer expired and update_shadow() needs to be called + def every_250ms() + if self.BRIDGE + self.http_remote.scheduler() # defer to HTTP scheduler + # avoid calling update_shadow() since it's not applicable for HTTP remote + else + super(self).every_250ms() + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + static var PREFIX = "| %s " + def web_values() + import webserver + self.web_values_prefix() + webserver.content_send("<-- (" + self.DISPLAY_NAME + ") -->") + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + + # Show on/off value as html + def web_value_onoff(onoff) + var onoff_html = (onoff != nil ? (onoff ? "On" : "Off") : "") + return onoff_html + end + + ############################################################# + # GetOption reader to decode `SetOption` values from `Status 3` + static class GetOptionReader + var flag, flag2, flag3, flag4, flag5, flag6 + + def init(j) + if j == nil raise "value_error", "invalid json" end + var so = j['SetOption'] + self.flag = bytes().fromhex(so[0]).reverse() + self.flag2 = bytes().fromhex(so[1]) + self.flag3 = bytes().fromhex(so[2]).reverse() + self.flag4 = bytes().fromhex(so[3]).reverse() + self.flag5 = bytes().fromhex(so[4]).reverse() + self.flag6 = bytes().fromhex(so[5]).reverse() + end + def getoption(x) + if x < 32 # SetOption0 .. 31 = Settings->flag + return self.flag.getbits(x, 1) + elif x < 50 # SetOption32 .. 49 = Settings->param + return self.flag2.get(x - 32, 1) + elif x < 82 # SetOption50 .. 81 = Settings->flag3 + return self.flag3.getbits(x - 50, 1) + elif x < 114 # SetOption82 .. 113 = Settings->flag4 + return self.flag4.getbits(x - 82, 1) + elif x < 146 # SetOption114 .. 145 = Settings->flag5 + return self.flag5.getbits(x - 114, 1) + elif x < 178 # SetOption146 .. 177 = Settings->flag6 + return self.flag6.getbits(x - 146, 1) + end + end + end + ############################################################# + ############################################################# + ####################################################################### # _parse_sensor_entry: internal helper function # diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be deleted file mode 100644 index 75b2316df..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be +++ /dev/null @@ -1,296 +0,0 @@ -# -# Matter_Plugin_Bridge_HTTP.be - implements base class for a Bridge via HTTP -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_HTTP.GetOptionReader,weak -#@ solidify:Matter_Plugin_Bridge_HTTP,weak - -class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device - static var TYPE = "" # name of the plug-in in json - static var DISPLAY_NAME = "" # display name of the plug-in - static var ARG = "" # additional argument name (or empty if none) - static var ARG_HTTP = "url" # domain name - static var UPDATE_TIME = 3000 # update every 3s - static var UPDATE_CMD = "Status 11" # command to send for updates - static var PROBE_TIMEOUT = 1700 # timeout of 1800 ms for probing, which gives at least 1s for TCP recovery - static var SYNC_TIMEOUT = 500 # timeout of 700 ms for probing - # static var CLUSTERS = { - # # 0x001D: inherited # Descriptor Cluster 9.5 p.453 - # # 0x0003: inherited # Identify 1.2 p.16 - # # 0x0004: inherited # Groups 1.3 p.21 - # # 0x0005: inherited # Scenes 1.4 p.30 - no writable - # # 0x0006: [0], # On/Off 1.5 p.48 - - # # 0x0028: [0,1,2,3,4,5,6,7,8,9,0x0A,0x0F,0x12,0x13],# Basic Information Cluster cluster 11.1 p.565 - # # 0x0039: [0x11] # Bridged Device Basic Information 9.13 p.485 - - # } - - var http_remote # instance of Matter_HTTP_remote - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - - var addr = arguments.find(self.ARG_HTTP) - self.http_remote = self.device.register_http_remote(addr, self.PROBE_TIMEOUT) - self.register_cmd_cb() - end - - ############################################################# - # is_local_device - # - # Returns true if it's a local device, or false for a - # remotely device controlled via HTTP - def is_local_device() - return false - end - - ############################################################# - # register_cmd_cb - # - # Register recurrent command and callback - # Defined as a separate method to allow override - def register_cmd_cb() - self.http_remote.add_schedule(self.UPDATE_CMD, self.UPDATE_TIME, - / status,payload,cmd -> self.parse_http_response(status,payload,cmd)) - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This method should collect the data from the local or remote device - # and call `parse_update()` when data is available. - def update_shadow() - self.tick = self.device.tick - var ret = self.call_remote_sync(self.UPDATE_CMD) - if ret - self.parse_http_response(1, ret, self.UPDATE_CMD) - end - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # TO BE OVERRIDDEN - def parse_update(data, index) - end - - ############################################################# - # call_remote_sync - # - # Call a remote Tasmota device, returns Berry native map or nil - # arg can be nil, in this case `cmd` has it all - def call_remote_sync(cmd, arg) - # if !self.http_remote return nil end - import json - - var retry = 2 # try 2 times if first failed - if arg != nil cmd = cmd + ' ' + str(arg) end - while retry > 0 - var ret = self.http_remote.call_sync(cmd, self.SYNC_TIMEOUT) - if ret != nil - self.http_remote.device_is_alive(true) - var j = json.load(ret) - return j - end - retry -= 1 - tasmota.log("MTR: HTTP GET retrying", 3) - end - self.http_remote.device_is_alive(false) - return nil - end - - ############################################################# - # parse_http_response - # - # Parse response from HTTP API and update shadows - # We support: - # `Status 8`: {"StatusSNS":{ [...] }} - # `Status 11`: {"StatusSTS":{ [...] }} - # `Status 13`: {"StatusSHT":{ [...] }} - def parse_http_response(status, payload, cmd) - if status > 0 - # device is known to be reachable - self.http_remote.device_is_alive(true) - var tick = self.device.tick - - import json - var j = json.load(payload) - var code = nil # index of Status - if j - # filter - if j.contains("StatusSNS") # Status 8 - j = j["StatusSNS"] - code = 8 - elif j.contains("StatusSTS") # Status 11 - j = j["StatusSTS"] - code = 11 - elif j.contains("StatusSHT") # Status 13 - j = j["StatusSTS"] - code = 13 - end - # convert to shadow values - self.parse_update(j, code) # call parser - end - end - end - - # ############################################################# - # # is_reachable() - # # - # # Pings the device and checks if it's reachable - # def is_reachable_lazy_sync() - # var cur_tick = self.device.tick - # if cur_tick != self.tick - # var ret = self.call_remote_sync("", "") # empty command works as a ping - # self.http_remote.device_is_alive(ret != nil) - # end - # return self.http_remote.reachable - # end - - ############################################################# - # read attribute - # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ========== - import string - - if attribute == 0x0003 # ---------- ProductName / string ---------- - var name = self.http_remote.get_info().find("name") - if name - return tlv_solo.set(TLV.UTF1, name) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x000A # ---------- SoftwareVersionString / string ---------- - var version_full = self.http_remote.get_info().find("version") - if version_full - var version_end = string.find(version_full, '(') - if version_end > 0 version_full = version_full[0..version_end - 1] end - return tlv_solo.set(TLV.UTF1, version_full) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber || UniqueID / string ---------- - var mac = self.http_remote.get_info().find("mac") - if mac - return tlv_solo.set(TLV.UTF1, mac) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0011 # ---------- Reachable / bool ---------- - # self.is_reachable_lazy_sync() # Not needed anymore - return tlv_solo.set(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end - - ############################################################# - # every_250ms - # - # check if the timer expired and update_shadow() needs to be called - def every_250ms() - self.http_remote.scheduler() # defer to HTTP scheduler - # avoid calling update_shadow() since it's not applicable for HTTP remote - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - static var PREFIX = "| %s " - def web_values() - import webserver - self.web_values_prefix() - webserver.content_send("<-- (" + self.DISPLAY_NAME + ") -->") - end - - # Show prefix before web value - def web_values_prefix() - import webserver - var name = self.get_name() - webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) - end - - # Show on/off value as html - def web_value_onoff(onoff) - var onoff_html = (onoff != nil ? (onoff ? "On" : "Off") : "") - return onoff_html - end - - ############################################################# - # GetOption reader to decode `SetOption` values from `Status 3` - static class GetOptionReader - var flag, flag2, flag3, flag4, flag5, flag6 - - def init(j) - if j == nil raise "value_error", "invalid json" end - var so = j['SetOption'] - self.flag = bytes().fromhex(so[0]).reverse() - self.flag2 = bytes().fromhex(so[1]) - self.flag3 = bytes().fromhex(so[2]).reverse() - self.flag4 = bytes().fromhex(so[3]).reverse() - self.flag5 = bytes().fromhex(so[4]).reverse() - self.flag6 = bytes().fromhex(so[5]).reverse() - end - def getoption(x) - if x < 32 # SetOption0 .. 31 = Settings->flag - return self.flag.getbits(x, 1) - elif x < 50 # SetOption32 .. 49 = Settings->param - return self.flag2.get(x - 32, 1) - elif x < 82 # SetOption50 .. 81 = Settings->flag3 - return self.flag3.getbits(x - 50, 1) - elif x < 114 # SetOption82 .. 113 = Settings->flag4 - return self.flag4.getbits(x - 82, 1) - elif x < 146 # SetOption114 .. 145 = Settings->flag5 - return self.flag5.getbits(x - 114, 1) - elif x < 178 # SetOption146 .. 177 = Settings->flag6 - return self.flag6.getbits(x - 146, 1) - end - end - end - - #- Examples - - import json - - var p = '{"SerialLog":2,"WebLog":3,"MqttLog":0,"SysLog":0,"LogHost":"","LogPort":514,"SSId":["Livebox-781A",""],"TelePeriod":300,"Resolution":"558180C0","SetOption":["00008009","2805C80001800600003C5A0A192800000000","00000080","00006000","00006000","00000020"]}' - var j = json.load(p) - - var gor = matter.Plugin_Bridge_HTTP.GetOptionReader(j) - assert(gor.getoption(151) == 1) - assert(gor.getoption(150) == 0) - assert(gor.getoption(32) == 40) - assert(gor.getoption(37) == 128) - - -# -end -matter.Plugin_Bridge_HTTP = Matter_Plugin_Bridge_HTTP diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be similarity index 61% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be index 0c9dc1edb..348bbc090 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_OnOff.be - implements the behavior for a Relay (OnOff) +# Matter_Plugin_Light0.be - implements the behavior for a generic Lighting (OnOff only) # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -21,11 +21,11 @@ import matter # Matter plug-in for core behavior -#@ solidify:Matter_Plugin_OnOff,weak +#@ solidify:Matter_Plugin_Light0,weak -class Matter_Plugin_OnOff : Matter_Plugin_Device - static var TYPE = "relay" # name of the plug-in in json - static var DISPLAY_NAME = "Relay" # display name of the plug-in +class Matter_Plugin_Light0 : Matter_Plugin_Device + static var TYPE = "light0" # name of the plug-in in json + static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in static var ARG = "relay" # additional argument name (or empty if none) static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var ARG_HINT = "Relay number" @@ -38,7 +38,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device 0x0006: [0], # On/Off 1.5 p.48 }) static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power") - static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit + static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff # Inherited # var device # reference to the `device` global object @@ -46,8 +46,8 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device # var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy # var tick # tick value when it was last updated # var node_label # name of the endpoint, used only in bridge mode, "" if none + var tasmota_relay_index # Relay number in Tasmota (1 based), may be nil for Lights 1/2/3 internal var shadow_onoff # (bool) status of the light power on/off - var tasmota_relay_index # Relay number in Tasmota (zero based) ############################################################# # Constructor @@ -61,21 +61,24 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device # # Parse configuration map def parse_configuration(config) - self.tasmota_relay_index = int(config.find(self.ARG #-'relay'-#, 1)) - if self.tasmota_relay_index <= 0 self.tasmota_relay_index = 1 end + # with Light0 we always need relay number but we don't for Light1/2/3 so self.tasmota_relay_index may be `nil` + self.tasmota_relay_index = int(config.find(self.ARG #-'relay'-#, nil)) + if (self.tasmota_relay_index != nil && self.tasmota_relay_index <= 0) self.tasmota_relay_index = 1 end end ############################################################# # Update shadow # def update_shadow() - if !self.VIRTUAL - var pow = tasmota.get_power(self.tasmota_relay_index - 1) - if pow != nil - if self.shadow_onoff != bool(pow) - self.attribute_updated(0x0006, 0x0000) + if !self.VIRTUAL && !self.BRIDGE + if (self.tasmota_relay_index != nil) + var pow = tasmota.get_power(self.tasmota_relay_index - 1) + if pow != nil + if self.shadow_onoff != bool(pow) + self.attribute_updated(0x0006, 0x0000) + end + self.shadow_onoff = pow end - self.shadow_onoff = pow end end super(self).update_shadow() @@ -85,14 +88,26 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device # Model # def set_onoff(pow) - if !self.VIRTUAL - tasmota.set_power(self.tasmota_relay_index - 1, bool(pow)) - self.update_shadow() - else + if self.BRIDGE + var ret = self.call_remote_sync("Power" + str(self.tasmota_relay_index), pow ? "1" : "0") + if ret != nil + self.parse_status(ret, 11) # update shadow from return value + # self.tick = self.device.tick # prevent an explicit Status11 for as it is not needed if the subscription update is sent in same tick + end + elif self.VIRTUAL if pow != self.shadow_onoff self.attribute_updated(0x0006, 0x0000) self.shadow_onoff = pow end + else + if (self.tasmota_relay_index != nil) + tasmota.set_power(self.tasmota_relay_index - 1, bool(pow)) + self.update_shadow() + else + import light + light.set({'power':pow}) + self.update_shadow() + end end end @@ -157,5 +172,51 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + if index == 11 # Status 11 + var state = false + + if self.tasmota_relay_index == 1 && data.contains("POWER") # special case, can be `POWER` or `POWER1` + state = (data.find("POWER") == "ON") + else + state = (data.find("POWER" + str(self.tasmota_relay_index)) == "ON") + end + + if self.shadow_onoff != bool(state) + self.attribute_updated(0x0006, 0x0000) + self.shadow_onoff = state + end + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("%s", self.web_value_onoff(self.shadow_onoff))) + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + if !name + name = "Power" + str(self.tasmota_relay_index) + end + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + ############################################################# + ############################################################# + end -matter.Plugin_OnOff = Matter_Plugin_OnOff +matter.Plugin_Light0 = Matter_Plugin_Light0 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be index 2b0e42255..c88ec645f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be @@ -23,19 +23,19 @@ import matter #@ solidify:Matter_Plugin_Light1,weak -class Matter_Plugin_Light1 : Matter_Plugin_Device +class Matter_Plugin_Light1 : Matter_Plugin_Light0 static var TYPE = "light1" # name of the plug-in in json static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in - static var UPDATE_TIME = 250 # update every 250ms + # static var UPDATE_TIME = 250 # update every 250ms static var CLUSTERS = matter.consolidate_clusters(_class, { # 0x001D: inherited # Descriptor Cluster 9.5 p.453 # 0x0003: inherited # Identify 1.2 p.16 # 0x0004: inherited # Groups 1.3 p.21 # 0x0005: inherited # Scenes 1.4 p.30 - no writable - 0x0006: [0], # On/Off 1.5 p.48 + # 0x0006: [0], # On/Off 1.5 p.48 0x0008: [0,2,3,0x0F,0x11], # Level Control 1.6 p.57 }) - static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power", "Bri") + static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Bri") static var TYPES = { 0x0101: 2 } # Dimmable Light # Inherited @@ -44,22 +44,34 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device # var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy # var tick # tick value when it was last updated # var node_label # name of the endpoint, used only in bridge mode, "" if none - var shadow_onoff # (bool) status of the light power on/off + # var tasmota_relay_index # Relay number in Tasmota (1 based), nil for internal light + # var shadow_onoff # (bool) status of the light power on/off var shadow_bri # (int 0..254) brightness before Gamma correction - as per Matter 255 is not allowed ############################################################# # Constructor def init(device, endpoint, arguments) super(self).init(device, endpoint, arguments) - self.shadow_onoff = false self.shadow_bri = 0 end + ############################################################# + # parse_configuration + # + # Parse configuration map + def parse_configuration(config) + # with Light0 we always need relay number but we don't for Light1/2/3 so self.tasmota_relay_index may be `nil` + if self.BRIDGE + self.tasmota_relay_index = int(config.find(self.ARG #-'relay'-#, nil)) + if (self.tasmota_relay_index != nil && self.tasmota_relay_index <= 0) self.tasmota_relay_index = 1 end + end + end + ############################################################# # Update shadow # def update_shadow() - if !self.VIRTUAL + if !self.VIRTUAL && !self.BRIDGE import light var light_status = light.get() if light_status != nil @@ -81,19 +93,6 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device super(self).update_shadow() # superclass manages 'power' end - def set_onoff(pow) - if !self.VIRTUAL - import light - light.set({'power':pow}) - self.update_shadow() - else - if pow != self.shadow_onoff - self.attribute_updated(0x0006, 0x0000) - self.shadow_onoff = pow - end - end - end - ############################################################# # Set Bri # @@ -103,16 +102,13 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device if (bri_254 < 0) bri_254 = 0 end if (bri_254 > 254) bri_254 = 254 end pow = (pow != nil) ? bool(pow) : nil # nil or bool - if !self.VIRTUAL - import light - var bri_255 = tasmota.scale_uint(bri_254, 0, 254, 0, 255) - if pow == nil - light.set({'bri': bri_255}) - else - light.set({'bri': bri_255, 'power': pow}) + if self.BRIDGE + var dimmer = tasmota.scale_uint(bri_254, 0, 254, 0, 100) + var ret = self.call_remote_sync("Dimmer", str(dimmer)) + if ret != nil + self.parse_status(ret, 11) # update shadow from return value end - self.update_shadow() - else + elif self.VIRTUAL if (pow != nil) && (pow != self.shadow_onoff) self.attribute_updated(0x0006, 0x0000) self.shadow_onoff = pow @@ -121,6 +117,15 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device self.attribute_updated(0x0008, 0x0000) self.shadow_bri = bri_254 end + else + import light + var bri_255 = tasmota.scale_uint(bri_254, 0, 254, 0, 255) + if pow == nil + light.set({'bri': bri_255}) + else + light.set({'bri': bri_255, 'power': pow}) + end + self.update_shadow() end end @@ -133,14 +138,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device var attribute = ctx.attribute # ==================================================================================================== - if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== - self.update_shadow_lazy() - if attribute == 0x0000 # ---------- OnOff / bool ---------- - return tlv_solo.set(TLV.BOOL, self.shadow_onoff) - end - - # ==================================================================================================== - elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ========== + if cluster == 0x0008 # ========== Level Control 1.6 p.57 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- CurrentLevel / u1 ---------- return tlv_solo.set(TLV.U1, self.shadow_bri) @@ -170,23 +168,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device var command = ctx.command # ==================================================================================================== - if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== - self.update_shadow_lazy() - if command == 0x0000 # ---------- Off ---------- - self.set_onoff(false) - self.publish_command('Power', 0) - return true - elif command == 0x0001 # ---------- On ---------- - self.set_onoff(true) - self.publish_command('Power', 1) - return true - elif command == 0x0002 # ---------- Toggle ---------- - self.set_onoff(!self.shadow_onoff) - self.publish_command('Power', self.shadow_onoff ? 1 : 0) - return true - end - # ==================================================================================================== - elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ========== + if cluster == 0x0008 # ========== Level Control 1.6 p.57 ========== self.update_shadow_lazy() if command == 0x0000 # ---------- MoveToLevel ---------- var bri_254 = val.findsubval(0) # Hue 0..254 @@ -236,11 +218,53 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device if val_bri != nil self.set_bri(int(val_bri), val_onoff) return # don't call super() because we already handeld 'Power' - elif val_onoff != nil - self.set_onoff(bool(val_onoff)) end super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + super(self).parse_status(data, index) + + if index == 11 # Status 11 + var dimmer = int(data.find("Dimmer")) # 0..100 + if dimmer != nil + var bri = tasmota.scale_uint(dimmer, 0, 100, 0, 254) + if bri != self.shadow_bri + self.attribute_updated(0x0008, 0x0000) + self.shadow_bri = bri + end + end + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("%s %s", self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer())) + end + + # Show on/off value as html + def web_value_dimmer() + var bri_html = "" + if self.shadow_bri != nil + var bri = tasmota.scale_uint(self.shadow_bri, 0, 254, 0, 100) + bri_html = format("%i%%", bri) + end + return "🔅 " + bri_html; + end + ############################################################# + ############################################################# + end matter.Plugin_Light1 = Matter_Plugin_Light1 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be index f2b2e7f3f..2e3f7c18a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be @@ -26,11 +26,20 @@ import matter class Matter_Plugin_Sensor : Matter_Plugin_Device static var ARG = "filter" # additional argument name (or empty if none) static var ARG_HINT = "Filter pattern" + static var UPDATE_CMD = "Status 10" # command to send for updates static var UPDATE_TIME = 5000 # update sensor every 5s static var JSON_NAME = "" # Name of the sensor attribute in JSON payloads var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature" var tasmota_sensor_matcher # Actual matcher object var shadow_value # Last known value + + var temp_unit # temperature unit, "C" or "F" + static var TEMP_C = "C" + static var TEMP_F = "F" + var pressure_unit # pressure unit, "hPa" or "mmHg" or "inHg" + static var PRESSURE_HPA = "hPa" + static var PRESSURE_MMHG = "mmHg" + static var PRESSURE_INHG = "inHg" ############################################################# # Constructor @@ -52,6 +61,8 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device if self.tasmota_sensor_filter self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(self.tasmota_sensor_filter) end + self.temp_unit = self.TEMP_C + self.pressure_unit = self.PRESSURE_HPA end ############################################################# @@ -106,5 +117,53 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # TO BE OVERRIDDEN + def parse_status(data, index) + if index == 10 # Status 10 + if data.contains("TempUnit") + self.temp_unit = data["TempUnit"] + end + if data.contains("PressureUnit") + self.pressure_unit = data["PressureUnit"] + end + if self.tasmota_sensor_matcher + var val = self.pre_value(real(self.tasmota_sensor_matcher.match(data))) + if val != nil + if val != self.shadow_value + self.value_changed() + self.shadow_value = val + end + end + end + end + end + + ############################################################# + # Return the first item in the filter + def filter_name_html() + if self.tasmota_sensor_filter + import string + import webserver + return webserver.html_escape(string.split(self.tasmota_sensor_filter, '#')[0]) + end + return "" + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + if (!name) name = self.filter_name_html() end + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + ############################################################# + ############################################################# + end matter.Plugin_Sensor = Matter_Plugin_Sensor diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be index a6c2f7193..026104263 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be @@ -63,7 +63,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device if !self.VIRTUAL var switch_str = "Switch" + str(self.tasmota_switch_index) - var j = tasmota.cmd("Status 8", true) + var j = tasmota.cmd("Status 10", true) if j != nil j = j.find("StatusSNS") end if j != nil && j.contains(switch_str) var state = (j.find(switch_str) == "ON") @@ -107,5 +107,46 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + if index == 10 # Status 10 + var state = false + + state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") + + if self.shadow_contact != nil && self.shadow_contact != bool(state) + self.attribute_updated(0x0045, 0x0000) + end + self.shadow_contact = state + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_contact))) + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + if !name + name = "Switch" + str(self.tasmota_switch_index) + end + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + ############################################################# + ############################################################# end matter.Plugin_Sensor_Contact = Matter_Plugin_Sensor_Contact diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be index fbc6bf84b..1a48ba716 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be @@ -63,7 +63,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device if !self.VIRTUAL var switch_str = "Switch" + str(self.tasmota_switch_index) - var j = tasmota.cmd("Status 8", true) + var j = tasmota.cmd("Status 10", true) if j != nil j = j.find("StatusSNS") end if j != nil && j.contains(switch_str) var state = (j.find(switch_str) == "ON") @@ -111,5 +111,47 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + if index == 10 # Status 10 + var state = false + + state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") + + if self.shadow_occupancy != nil && self.shadow_occupancy != bool(state) + self.attribute_updated(0x0406, 0x0000) + end + self.shadow_occupancy = state + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("Occupancy%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_occupancy))) + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + if !name + name = "Switch" + str(self.tasmota_switch_index) + end + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + ############################################################# + ############################################################# + end matter.Plugin_Sensor_Occupancy = Matter_Plugin_Sensor_Occupancy diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be index a2d2af9e6..21e0c779b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be @@ -53,7 +53,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device if !self.VIRTUAL var switch_str = "Switch" + str(self.tasmota_switch_index) - var j = tasmota.cmd("Status 8", true) + var j = tasmota.cmd("Status 10", true) if j != nil j = j.find("StatusSNS") end if j != nil && j.contains(switch_str) var state = (j.find(switch_str) == "ON") diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be index 04e8a4644..680ad5b91 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be @@ -64,7 +64,7 @@ class Matter_Plugin_Sensor_Waterleak : Matter_Plugin_Device if !self.VIRTUAL var switch_str = "Switch" + str(self.tasmota_switch_index) - var j = tasmota.cmd("Status 8", true) + var j = tasmota.cmd("Status 10", true) if j != nil j = j.find("StatusSNS") end if j != nil && j.contains(switch_str) var state = (j.find(switch_str) == "ON") @@ -88,11 +88,7 @@ class Matter_Plugin_Sensor_Waterleak : Matter_Plugin_Device # ==================================================================================================== if cluster == 0x0045 # ========== Boolean State ========== if attribute == 0x0000 # ---------- StateValue / bool ---------- - if self.shadow_leak != nil - return tlv_solo.set(TLV.BOOL, self.shadow_leak) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set(TLV.BOOL, self.shadow_leak) end end @@ -115,5 +111,47 @@ class Matter_Plugin_Sensor_Waterleak : Matter_Plugin_Device super(self).update_virtual(payload_json) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + if index == 10 # Status 10 + var state = false + + state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") + + if self.shadow_leak != nil && self.shadow_leak != bool(state) + self.attribute_updated(0x0045, 0x0000) + end + self.shadow_leak = state + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("Waterleak%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_leak))) + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + if !name + name = "Switch" + str(self.tasmota_switch_index) + end + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + ############################################################# + ############################################################# + end matter.Plugin_Sensor_Waterleak = Matter_Plugin_Sensor_Waterleak diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be deleted file mode 100644 index 87c0e22f9..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be +++ /dev/null @@ -1,156 +0,0 @@ -# -# Matter_Plugin_Bridge_Light0.be - implements the behavior for a remote generic Lighting (OnOff only) via HTTP -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Light0,weak - -class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP - static var TYPE = "http_light0" # name of the plug-in in json - static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in - static var ARG = "relay" # additional argument name (or empty if none) - static var ARG_HINT = "Power number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - # static var UPDATE_TIME = 3000 # update every 3s - # static var UPDATE_CMD = "Status 11" # command to send for updates - static var CLUSTERS = matter.consolidate_clusters(_class, { - # 0x001D: inherited # Descriptor Cluster 9.5 p.453 - # 0x0003: inherited # Identify 1.2 p.16 - # 0x0004: inherited # Groups 1.3 p.21 - # 0x0005: inherited # Scenes 1.4 p.30 - no writable - 0x0006: [0], # On/Off 1.5 p.48 - }) - static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff - - var tasmota_relay_index # Relay number in Tasmota (one based) - var shadow_onoff # fake status for now # TODO - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - self.shadow_onoff = false - self.tasmota_relay_index = int(arguments.find(self.ARG #-'relay'-#, 1)) - if self.tasmota_relay_index <= 0 self.tasmota_relay_index = 1 end - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_update(data, index) - if index == 11 # Status 11 - var state = false - - if self.tasmota_relay_index == 1 && data.contains("POWER") # special case, can be `POWER` or `POWER1` - state = (data.find("POWER") == "ON") - else - state = (data.find("POWER" + str(self.tasmota_relay_index)) == "ON") - end - - if self.shadow_onoff != nil && self.shadow_onoff != bool(state) - self.attribute_updated(0x0006, 0x0000) - end - self.shadow_onoff = state - end - end - - ############################################################# - # Model - # - def set_onoff(v) - var ret = self.call_remote_sync("Power" + str(self.tasmota_relay_index), v ? "1" : "0") - if ret != nil - self.parse_update(ret, 11) # update shadow from return value - # self.tick = self.device.tick # prevent an explicit Status11 for as it is not needed if the subscription update is sent in same tick - end - end - - ############################################################# - # read an attribute - # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== - self.update_shadow_lazy() - if attribute == 0x0000 # ---------- OnOff / bool ---------- - return tlv_solo.set(TLV.BOOL, self.shadow_onoff) - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end - - ############################################################# - # Invoke a command - # - # returns a TLV object if successful, contains the response - # or an `int` to indicate a status - def invoke_request(session, val, ctx) - var TLV = matter.TLV - var cluster = ctx.cluster - var command = ctx.command - - # ==================================================================================================== - if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== - if command == 0x0000 # ---------- Off ---------- - self.set_onoff(false) - self.publish_command('Power', 0) - return true - elif command == 0x0001 # ---------- On ---------- - self.set_onoff(true) - self.publish_command('Power', 1) - return true - elif command == 0x0002 # ---------- Toggle ---------- - self.set_onoff(!self.shadow_onoff) - self.publish_command('Power', self.shadow_onoff ? 1 : 0) - return true - end - end - - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("%s", self.web_value_onoff(self.shadow_onoff))) - end - - # Show prefix before web value - def web_values_prefix() - import webserver - var name = self.get_name() - if !name - name = "Power" + str(self.tasmota_relay_index) - end - webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) - end - -end -matter.Plugin_Bridge_Light0 = Matter_Plugin_Bridge_Light0 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor.be deleted file mode 100644 index 301c1c02a..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor.be +++ /dev/null @@ -1,122 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor.be - implements base class for a Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor,weak - -class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP - # static var TYPE = "" # name of the plug-in in json - # static var DISPLAY_NAME = "" # display name of the plug-in - static var ARG = "filter" # additional argument name (or empty if none) - static var ARG_HTTP = "url" # domain name - static var ARG_HINT = "Filter pattern" - static var UPDATE_TIME = 5000 # update every 5s - static var UPDATE_CMD = "Status 8" # command to send for updates - static var PROBE_TIMEOUT = 1700 # timeout of 1700 ms for probing, which gives at least 1s for TCP recovery - # static var SYNC_TIMEOUT = 500 # timeout of 700 ms for probing - var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature" - var tasmota_sensor_matcher # Actual matcher object - var shadow_value # Last known value - var temp_unit # temperature unit, "C" or "F" - static var TEMP_C = "C" - static var TEMP_F = "F" - var pressure_unit # pressure unit, "hPa" or "mmHg" or "inHg" - static var PRESSURE_HPA = "hPa" - static var PRESSURE_MMHG = "mmHg" - static var PRESSURE_INHG = "inHg" - - ############################################################# - # parse_configuration - # - # Parse configuration map - def parse_configuration(config) - self.tasmota_sensor_filter = config.find(self.ARG#-'filter'-#) - if self.tasmota_sensor_filter - self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(self.tasmota_sensor_filter) - end - self.temp_unit = self.TEMP_C - self.pressure_unit = self.PRESSURE_HPA - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # TO BE OVERRIDDEN - def parse_update(data, index) - if index == 8 # Status 8 - if data.contains("TempUnit") - self.temp_unit = data["TempUnit"] - end - if data.contains("PressureUnit") - self.pressure_unit = data["PressureUnit"] - end - if self.tasmota_sensor_matcher - var val = self.pre_value(real(self.tasmota_sensor_matcher.match(data))) - if val != nil - if val != self.shadow_value - self.value_changed() - self.shadow_value = val - end - end - end - end - end - - ############################################################# - # Called when the value changed compared to shadow value - # - # This must be overriden. - # This is where you call `self.attribute_updated(, )` - def value_changed() - # self.attribute_updated(0x0402, 0x0000) - end - - ############################################################# - # Pre-process value - # - # This must be overriden. - # This allows to convert the raw sensor value to the target one, typically int - def pre_value(val) - return val - end - - ############################################################# - # Return the first item in the filter - def filter_name_html() - if self.tasmota_sensor_filter - import string - import webserver - return webserver.html_escape(string.split(self.tasmota_sensor_filter, '#')[0]) - end - return "" - end - - # Show prefix before web value - def web_values_prefix() - import webserver - var name = self.get_name() - if (!name) name = self.filter_name_html() end - webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) - end - -end -matter.Plugin_Bridge_Sensor = Matter_Plugin_Bridge_Sensor diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be deleted file mode 100644 index fe8373987..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be +++ /dev/null @@ -1,110 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Contact.be - implements Contact Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Contact,weak - -class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP - static var TYPE = "http_contact" # name of the plug-in in json - static var DISPLAY_NAME = "Contact" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) - static var ARG_HINT = "Switch number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var UPDATE_TIME = 5000 # update every 5s - static var UPDATE_CMD = "Status 8" # command to send for updates - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0045: [0], # Boolean State p.70 - no writable - }) - static var TYPES = { 0x0015: 1 } # Contact Sensor, rev 1 - - var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_contact - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - self.tasmota_switch_index = int(arguments.find(self.ARG #-'switch'-#, 1)) - if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_update(data, index) - if index == 8 # Status 8 - var state = false - - state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") - - if self.shadow_contact != nil && self.shadow_contact != bool(state) - self.attribute_updated(0x0045, 0x0000) - end - self.shadow_contact = state - end - end - - ############################################################# - # read an attribute - # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0045 # ========== Boolean State ========== - if attribute == 0x0000 # ---------- StateValue / bool ---------- - if self.shadow_contact != nil - return tlv_solo.set(TLV.BOOL, self.shadow_contact) - else - return tlv_solo.set(TLV.NULL, nil) - end - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_contact))) - end - - # Show prefix before web value - def web_values_prefix() - import webserver - var name = self.get_name() - if !name - name = "Switch" + str(self.tasmota_switch_index) - end - webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) - end -end -matter.Plugin_Bridge_Sensor_Contact = Matter_Plugin_Bridge_Sensor_Contact diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be deleted file mode 100644 index 1ed2c5c59..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be +++ /dev/null @@ -1,114 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Occupancy.be - implements base class for a Occupancy Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Occupancy,weak - -class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP - static var TYPE = "http_occupancy" # name of the plug-in in json - static var DISPLAY_NAME = "Occupancy" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) - static var ARG_HINT = "Switch number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var UPDATE_TIME = 5000 # update every 5s - static var UPDATE_CMD = "Status 8" # command to send for updates - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0406: [0,1,2], # Occupancy Sensing p.105 - no writable - }) - static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2 - - var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_occupancy - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - self.tasmota_switch_index = int(arguments.find(self.ARG #-'relay'-#, 1)) - if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_update(data, index) - if index == 8 # Status 8 - var state = false - - state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") - - if self.shadow_occupancy != nil && self.shadow_occupancy != bool(state) - self.attribute_updated(0x0406, 0x0000) - end - self.shadow_occupancy = state - end - end - - ############################################################# - # read an attribute - # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0406 # ========== Occupancy Sensing ========== - if attribute == 0x0000 # ---------- Occupancy / U8 ---------- - if self.shadow_occupancy != nil - return tlv_solo.set(TLV.U1, self.shadow_occupancy) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ---------- - return tlv_solo.set(TLV.U1, 3) # physical contact - elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ---------- - return tlv_solo.set(TLV.U1, 0) # unknown - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("Occupancy%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_occupancy))) - end - - # Show prefix before web value - def web_values_prefix() - import webserver - var name = self.get_name() - if !name - name = "Switch" + str(self.tasmota_switch_index) - end - webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) - end -end -matter.Plugin_Bridge_Sensor_Occupancy = Matter_Plugin_Bridge_Sensor_Occupancy diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Waterleak.be deleted file mode 100644 index aa7c7c7d1..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Waterleak.be +++ /dev/null @@ -1,110 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Waterleak.be - implements Waterleak Sensor via HTTP to Tasmota -# -# Copyright (C) 2024 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Waterleak,weak - -class Matter_Plugin_Bridge_Sensor_Waterleak : Matter_Plugin_Bridge_HTTP - static var TYPE = "http_waterleak" # name of the plug-in in json - static var DISPLAY_NAME = "Waterleak" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) - static var ARG_HINT = "Switch number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var UPDATE_TIME = 5000 # update every 5s - static var UPDATE_CMD = "Status 8" # command to send for updates - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0045: [0], # Boolean State p.70 - no writable - }) - static var TYPES = { 0x0043: 1 } # Waterleak Sensor, rev 1 - - var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_Waterleak - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - self.tasmota_switch_index = int(arguments.find(self.ARG #-'switch'-#, 1)) - if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_update(data, index) - if index == 8 # Status 8 - var state = false - - state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") - - if self.shadow_Waterleak != nil && self.shadow_Waterleak != bool(state) - self.attribute_updated(0x0045, 0x0000) - end - self.shadow_Waterleak = state - end - end - - ############################################################# - # read an attribute - # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0045 # ========== Boolean State ========== - if attribute == 0x0000 # ---------- StateValue / bool ---------- - if self.shadow_Waterleak != nil - return tlv_solo.set(TLV.BOOL, self.shadow_Waterleak) - else - return tlv_solo.set(TLV.NULL, nil) - end - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("Waterleak%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_Waterleak))) - end - - # Show prefix before web value - def web_values_prefix() - import webserver - var name = self.get_name() - if !name - name = "Switch" + str(self.tasmota_switch_index) - end - webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) - end -end -matter.Plugin_Bridge_Sensor_Waterleak = Matter_Plugin_Bridge_Sensor_Waterleak diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be index 066d0a850..2458484c4 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be @@ -53,7 +53,9 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 # Constructor def init(device, endpoint, arguments) super(self).init(device, endpoint, arguments) - self.shadow_ct = 325 + if !self.BRIDGE # in BRIDGE mode keep default to nil + self.shadow_ct = 325 + end self.update_ct_minmax() # read SetOption to adjust ct min/max end @@ -61,7 +63,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 # Update shadow # def update_shadow() - if !self.VIRTUAL + if !self.VIRTUAL && !self.BRIDGE import light self.update_ct_minmax() super(self).update_shadow() @@ -96,15 +98,20 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 def set_ct(ct) if ct < self.ct_min ct = self.ct_min end if ct > self.ct_max ct = self.ct_max end - if !self.VIRTUAL - import light - light.set({'ct': ct}) - self.update_shadow() - else + if self.BRIDGE + var ret = self.call_remote_sync("CT", str(ct)) + if ret != nil + self.parse_status(ret, 11) # update shadow from return value + end + elif self.VIRTUAL if ct != self.shadow_ct self.attribute_updated(0x0300, 0x0007) self.shadow_ct = ct end + else + import light + light.set({'ct': ct}) + self.update_shadow() end end @@ -144,7 +151,6 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 # returns a TLV object if successful, contains the response # or an `int` to indicate a status def invoke_request(session, val, ctx) - import light var TLV = matter.TLV var cluster = ctx.cluster var command = ctx.command @@ -154,6 +160,8 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 self.update_shadow_lazy() if command == 0x000A # ---------- MoveToColorTemperature ---------- var ct_in = val.findsubval(0) # CT + if ct_in < self.ct_min ct_in = self.ct_min end + if ct_in > self.ct_max ct_in = self.ct_max end self.set_ct(ct_in) ctx.log = "ct:"+str(ct_in) self.publish_command('CT', ct_in) @@ -187,5 +195,53 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # TO BE OVERRIDDEN + # This call is synnchronous and blocking. + def parse_status(data, index) + super(self).parse_status(data, index) + + if index == 11 # Status 11 + var ct = int(data.find("CT")) # 153..500 + if ct != nil + if ct != self.shadow_ct + if ct < self.ct_min ct = self.ct_min end + if ct > self.ct_max ct = self.ct_max end + self.attribute_updated(0x0300, 0x0007) + self.shadow_ct = ct + end + end + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("%s %s %s", + self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(), + self.web_value_ct())) + end + + # Show on/off value as html + def web_value_ct() + var ct_html = "" + if self.shadow_ct != nil + var ct_k = (((1000000 / self.shadow_ct) + 25) / 50) * 50 # convert in Kelvin + ct_html = format("%iK", ct_k) + end + return "⚪ " + ct_html; + end + ############################################################# + ############################################################# + end matter.Plugin_Light2 = Matter_Plugin_Light2 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be index 5f51f2bdc..bbc4e447a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be @@ -62,9 +62,9 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 # Update shadow # def update_shadow() - super(self).update_shadow() - if !self.VIRTUAL + if !self.VIRTUAL && !self.BRIDGE import light + super(self).update_shadow() var light_status = light.get() if light_status != nil var hue = light_status.find('hue', nil) @@ -74,6 +74,8 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 if hue != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue end if sat != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat end end + else + super(self).update_shadow() end end @@ -93,7 +95,29 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 if sat_254 > 254 sat_254 = 254 end end - if !self.VIRTUAL + if self.BRIDGE + if hue_254 != nil + var hue_360 = tasmota.scale_uint(hue_254, 0, 254, 0, 360) + var ret = self.call_remote_sync("HSBColor1", hue_360) + if ret != nil + self.parse_status(ret, 11) # update shadow from return value + end + end + if sat_254 != nil + var sat_100 = tasmota.scale_uint(sat_254, 0, 254, 0, 100) + var ret = self.call_remote_sync("HSBColor2", sat_100) + if ret != nil + self.parse_status(ret, 11) # update shadow from return value + end + end + elif self.VIRTUAL + if hue_254 != nil + if hue_254 != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue_254 end + end + if sat_254 != nil + if sat_254 != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat_254 end + end + else var hue_360 = (hue_254 != nil) ? tasmota.scale_uint(hue_254, 0, 254, 0, 360) : nil var sat_255 = (sat_254 != nil) ? tasmota.scale_uint(sat_254, 0, 254, 0, 255) : nil @@ -105,13 +129,6 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 light.set({'sat': sat_255}) end self.update_shadow() - else - if hue_254 != nil - if hue_254 != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue_254 end - end - if sat_254 != nil - if sat_254 != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat_254 end - end end end @@ -222,5 +239,59 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + super(self).parse_status(data, index) + + if index == 11 # Status 11 + var hsb = data.find("HSBColor") + if hsb + import string + var hsb_list = string.split(hsb, ",") + var hue = int(hsb_list[0]) + var sat = int(hsb_list[1]) + # dimmer is already available + + if hue != nil hue = tasmota.scale_uint(hue, 0, 360, 0, 254) else hue = self.shadow_hue end + if sat != nil sat = tasmota.scale_uint(sat, 0, 100, 0, 254) else sat = self.shadow_sat end + if hue != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue end + if sat != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat end + end + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("%s %s %s", + self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(), + self.web_value_RGB())) + end + + # Show on/off value as html + def web_value_RGB() + if self.shadow_hue != nil && self.shadow_sat != nil + var l = light_state(3) # RGB virtual light state object + l.set_bri(255) # set full brightness to get full range RGB + l.set_huesat(tasmota.scale_uint(self.shadow_hue, 0, 254, 0, 360), tasmota.scale_uint(self.shadow_sat, 0, 254, 0, 255)) + var rgb_hex = format("#%02X%02X%02X", l.r, l.g, l.b) + var rgb_html = format('%s', rgb_hex, rgb_hex) + return rgb_html + end + return "" + end + ############################################################# + ############################################################# + end matter.Plugin_Light3 = Matter_Plugin_Light3 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_OnOff.be similarity index 69% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light0.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_OnOff.be index 9c2108ebf..806bfa875 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_OnOff.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Light0.be - implements the behavior for a generic Lighting (OnOff only) +# Matter_Plugin_OnOff.be - implements the behavior for a Relay (OnOff) # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -21,12 +21,13 @@ import matter # Matter plug-in for core behavior -#@ solidify:Matter_Plugin_Light0,weak +#@ solidify:Matter_Plugin_OnOff,weak -class Matter_Plugin_Light0 : Matter_Plugin_OnOff - static var TYPE = "light0" # name of the plug-in in json - static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in - static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff +class Matter_Plugin_OnOff : Matter_Plugin_Light0 + static var TYPE = "relay" # name of the plug-in in json + static var DISPLAY_NAME = "Relay" # display name of the plug-in + + static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit # Inherited # var device # reference to the `device` global object @@ -34,7 +35,8 @@ class Matter_Plugin_Light0 : Matter_Plugin_OnOff # var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy # var tick # tick value when it was last updated # var node_label # name of the endpoint, used only in bridge mode, "" if none - # var shadow_onoff # (bool) status of the light power on/off + # var shadow_onoff # (bool) status of the light power on/off + # var tasmota_relay_index # Relay number in Tasmota (zero based) end -matter.Plugin_Light0 = Matter_Plugin_Light0 +matter.Plugin_OnOff = Matter_Plugin_OnOff diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be index 9e418d453..cadf46b2b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be @@ -77,5 +77,20 @@ class Matter_Plugin_Sensor_Flow : Matter_Plugin_Sensor return super(self).read_attribute(session, ctx, tlv_solo) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("⛅ %i m³/h", + int(self.shadow_value))) + end + ############################################################# + ############################################################# end matter.Plugin_Sensor_Flow = Matter_Plugin_Sensor_Flow diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be index 94c7d4a90..089a780ef 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be @@ -77,5 +77,21 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor return super(self).read_attribute(session, ctx, tlv_solo) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("💧 %2.0f%%", + self.shadow_value != nil ? real(self.shadow_value) / 100 : nil)) + end + ############################################################# + ############################################################# + end matter.Plugin_Sensor_Humidity = Matter_Plugin_Sensor_Humidity diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be index ac6144b30..943e7ade2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be @@ -84,5 +84,21 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor return super(self).read_attribute(session, ctx, tlv_solo) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("🔅 %i lux", + int(self.shadow_value))) + end + ############################################################# + ############################################################# + end matter.Plugin_Sensor_Illuminance = Matter_Plugin_Sensor_Illuminance diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be index b41f21a97..4eb020eb0 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be @@ -77,5 +77,21 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor return super(self).read_attribute(session, ctx, tlv_solo) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("⛅ %i hPa", + int(self.shadow_value))) + end + ############################################################# + ############################################################# + end matter.Plugin_Sensor_Pressure = Matter_Plugin_Sensor_Pressure diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be index a6a540595..aa114a25e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be @@ -39,10 +39,18 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor # This must be overriden. # This allows to convert the raw sensor value to the target one, typically int def pre_value(val) - if tasmota.get_option(8) == 1 # Fahrenheit - val = (val - 32) / 1.8 + # TODO simplify + if self.BRIDGE + if self.temp_unit == self.TEMP_F # Fahrenheit + val = (val - 32) / 1.8 + end + return val != nil ? int(val * 100) : nil + else + if tasmota.get_option(8) == 1 # Fahrenheit + val = (val - 32) / 1.8 + end + return val != nil ? int(val * 100) : nil end - return val != nil ? int(val * 100) : nil end ############################################################# @@ -80,5 +88,21 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor return super(self).read_attribute(session, ctx, tlv_solo) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("☀️ %.1f °C", + self.shadow_value != nil ? real(self.shadow_value) / 100 : nil)) + end + ############################################################# + ############################################################# + end matter.Plugin_Sensor_Temp = Matter_Plugin_Sensor_Temp diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be deleted file mode 100644 index e2ada8078..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be +++ /dev/null @@ -1,184 +0,0 @@ -# -# Matter_Plugin_Bridge_Light1.be - implements the behavior for a remote generic Lighting (Dimmer) via HTTP -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Light1,weak - -class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0 - static var TYPE = "http_light1" # name of the plug-in in json - static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in - # static var ARG = "relay" # additional argument name (or empty if none) - # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var CLUSTERS = matter.consolidate_clusters(_class, { - # 0x001D: inherited # Descriptor Cluster 9.5 p.453 - # 0x0003: inherited # Identify 1.2 p.16 - # 0x0004: inherited # Groups 1.3 p.21 - # 0x0005: inherited # Scenes 1.4 p.30 - no writable - # 0x0006: inherited # On/Off 1.5 p.48 - 0x0008: [0,2,3,0x0F,0x11], # Level Control 1.6 p.57 - }) - static var TYPES = { 0x0101: 2 } # Dimmable Light - - var shadow_bri - # var tasmota_relay_index # ingerited - # var shadow_onoff # inherited - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_update(data, index) - super(self).parse_update(data, index) - - if index == 11 # Status 11 - var dimmer = int(data.find("Dimmer")) # 0..100 - if dimmer != nil - var bri = tasmota.scale_uint(dimmer, 0, 100, 0, 254) - if bri != self.shadow_bri - self.attribute_updated(0x0008, 0x0000) - self.shadow_bri = bri - end - end - end - end - - ############################################################# - # Model - # - def set_bri(v) - var dimmer = tasmota.scale_uint(v, 0, 254, 0, 100) - var ret = self.call_remote_sync("Dimmer", str(dimmer)) - if ret != nil - self.parse_update(ret, 11) # update shadow from return value - end - end - - ############################################################# - # read an attribute - # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0008 # ========== Level Control 1.6 p.57 ========== - self.update_shadow_lazy() - if attribute == 0x0000 # ---------- CurrentLevel / u1 ---------- - if self.shadow_bri != nil - return tlv_solo.set(TLV.U1, self.shadow_bri) - else - return tlv_solo.set(TLV.NULL, nil) - end - elif attribute == 0x0002 # ---------- MinLevel / u1 ---------- - return tlv_solo.set(TLV.U1, 0) - elif attribute == 0x0003 # ---------- MaxLevel / u1 ---------- - return tlv_solo.set(TLV.U1, 254) - elif attribute == 0x000F # ---------- Options / map8 ---------- - return tlv_solo.set(TLV.U1, 0) # - elif attribute == 0x0011 # ---------- OnLevel / u1 ---------- - if self.shadow_bri != nil - return tlv_solo.set(TLV.U1, self.shadow_bri) - else - return tlv_solo.set(TLV.NULL, nil) - end - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end - - ############################################################# - # Invoke a command - # - # returns a TLV object if successful, contains the response - # or an `int` to indicate a status - def invoke_request(session, val, ctx) - var TLV = matter.TLV - var cluster = ctx.cluster - var command = ctx.command - - # ==================================================================================================== - if cluster == 0x0008 # ========== Level Control 1.6 p.57 ========== - if command == 0x0000 # ---------- MoveToLevel ---------- - var bri_in = val.findsubval(0) # Hue 0..254 - self.set_bri(bri_in) - ctx.log = "bri:"+str(bri_in) - self.publish_command('Bri', tasmota.scale_uint(bri_in, 0, 254, 0, 255), - 'Dimmer', tasmota.scale_uint(bri_in, 0, 254, 0, 100)) - return true - elif command == 0x0001 # ---------- Move ---------- - # TODO, we don't really support it - return true - elif command == 0x0002 # ---------- Step ---------- - # TODO, we don't really support it - return true - elif command == 0x0003 # ---------- Stop ---------- - # TODO, we don't really support it - return true - elif command == 0x0004 # ---------- MoveToLevelWithOnOff ---------- - var bri_in = val.findsubval(0) # Hue 0..254 - self.set_bri(bri_in) - var onoff = bri_in > 0 - self.set_onoff(onoff) - ctx.log = "bri:"+str(bri_in) - self.publish_command('Bri', tasmota.scale_uint(bri_in, 0, 254, 0, 255), - 'Dimmer', tasmota.scale_uint(bri_in, 0, 254, 0, 100), - 'Power', onoff ? 1 : 0) - return true - elif command == 0x0005 # ---------- MoveWithOnOff ---------- - # TODO, we don't really support it - return true - elif command == 0x0006 # ---------- StepWithOnOff ---------- - # TODO, we don't really support it - return true - elif command == 0x0007 # ---------- StopWithOnOff ---------- - # TODO, we don't really support it - return true - end - - else - return super(self).invoke_request(session, val, ctx) - end - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("%s %s", self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer())) - end - - # Show on/off value as html - def web_value_dimmer() - var bri_html = "" - if self.shadow_bri != nil - var bri = tasmota.scale_uint(self.shadow_bri, 0, 254, 0, 100) - bri_html = format("%i%%", bri) - end - return "🔅 " + bri_html; - end -end -matter.Plugin_Bridge_Light1 = Matter_Plugin_Bridge_Light1 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be deleted file mode 100644 index a3e236acd..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be +++ /dev/null @@ -1,70 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Flow.be - implements base class for a Flow Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Flow,weak - -class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Bridge_Sensor - static var TYPE = "http_flow" # name of the plug-in in json - static var DISPLAY_NAME = "Flow" # display name of the plug-in - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0404: [0,1,2], # Flow Measurement - }) - static var TYPES = { 0x0306: 1 } # Flow Sensor, rev 1 - - ############################################################# - # Called when the value changed compared to shadow value - # - # This must be overriden. - # This is where you call `self.attribute_updated(, )` - def value_changed() - self.attribute_updated(0x0404, 0x0000) - end - - ############################################################# - # Pre-process value - # - # This must be overriden. - # This allows to convert the raw sensor value to the target one, typically int - def pre_value(val) - return val != nil ? int(val * 10) : nil # MeasuredValue represents 10 x flow in m3/h - end - - ############################################################# - # read an attribute - # - static var read_attribute = matter.Plugin_Sensor_Flow.read_attribute - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("⛅ %i m3/h", - int(self.shadow_value))) - end - -end -matter.Plugin_Bridge_Sensor_Flow = Matter_Plugin_Bridge_Sensor_Flow diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be deleted file mode 100644 index d6801ced4..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be +++ /dev/null @@ -1,70 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Humidity.be - implements base class for a Humidity Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Humidity,weak - -class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor - static var TYPE = "http_humidity" # name of the plug-in in json - static var DISPLAY_NAME = "Humidity" # display name of the plug-in - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0405: [0,1,2], # Humidity Measurement p.102 - no writable - }) - static var TYPES = { 0x0307: 2 } # Humidity Sensor, rev 2 - - ############################################################# - # Called when the value changed compared to shadow value - # - # This must be overriden. - # This is where you call `self.attribute_updated(, )` - def value_changed() - self.attribute_updated(0x0405, 0x0000) - end - - ############################################################# - # Pre-process value - # - # This must be overriden. - # This allows to convert the raw sensor value to the target one, typically int - def pre_value(val) - return val != nil ? int(val * 100) : nil # 1/100th of percentage - end - - ############################################################# - # read an attribute - # - def read_attribute = matter.Plugin_Sensor_Humidity.read_attribute - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("💧 %2.0f%%", - self.shadow_value != nil ? real(self.shadow_value) / 100 : nil)) - end - -end -matter.Plugin_Bridge_Sensor_Humidity = Matter_Plugin_Bridge_Sensor_Humidity diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be deleted file mode 100644 index df31caec6..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be +++ /dev/null @@ -1,77 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Illuminance.be - implements base class for a Light/Illuminance Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Illuminance,weak - -class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor - static var TYPE = "http_illuminance" # name of the plug-in in json - static var DISPLAY_NAME = "Illuminance" # display name of the plug-in - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0400: [0,1,2], # Illuminance Measurement p.95 - no writable - }) - static var TYPES = { 0x0106: 2 } # Illuminance Sensor, rev 2 - - ############################################################# - # Called when the value changed compared to shadow value - # - # This must be overriden. - # This is where you call `self.attribute_updated(, )` - def value_changed() - self.attribute_updated(0x0400, 0x0000) - end - - ############################################################# - # Pre-process value - # - # This must be overriden. - # This allows to convert the raw sensor value to the target one, typically int - def pre_value(val) - if val == nil return nil end - import math - - if val < 0 - return 0 - else - return math.log10(val + 1) * 10000 - end - end - - ############################################################# - # read an attribute - # - def read_attribute = matter.Plugin_Sensor_Illuminance.read_attribute - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("🔅 %ilux", - int(self.shadow_value))) - end - -end -matter.Plugin_Bridge_Sensor_Illuminance = Matter_Plugin_Bridge_Sensor_Illuminance diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be deleted file mode 100644 index 6b40a7b60..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be +++ /dev/null @@ -1,70 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Pressure Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Pressure,weak - -class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor - static var TYPE = "http_pressure" # name of the plug-in in json - static var DISPLAY_NAME = "Pressure" # display name of the plug-in - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0403: [0,1,2], # Pressure Measurement - }) - static var TYPES = { 0x0305: 2 } # Temperature Sensor, rev 2 - - ############################################################# - # Called when the value changed compared to shadow value - # - # This must be overriden. - # This is where you call `self.attribute_updated(, )` - def value_changed() - self.attribute_updated(0x0403, 0x0000) - end - - ############################################################# - # Pre-process value - # - # This must be overriden. - # This allows to convert the raw sensor value to the target one, typically int - def pre_value(val) - return val != nil ? int(val) : nil - end - - ############################################################# - # read an attribute - # - def read_attribute = matter.Plugin_Sensor_Pressure.read_attribute - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("⛅ %i hPa", - int(self.shadow_value))) - end - -end -matter.Plugin_Bridge_Sensor_Pressure = Matter_Plugin_Bridge_Sensor_Pressure diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be deleted file mode 100644 index daaaaa9f9..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be +++ /dev/null @@ -1,73 +0,0 @@ -# -# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Temperature Sensor via HTTP to Tasmota -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Sensor_Temp,weak - -class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor - static var TYPE = "http_temperature" # name of the plug-in in json - static var DISPLAY_NAME = "Temperature" # display name of the plug-in - - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0402: [0,1,2], # Temperature Measurement p.97 - no writable - }) - static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2 - - ############################################################# - # Called when the value changed compared to shadow value - # - # This must be overriden. - # This is where you call `self.attribute_updated(, )` - def value_changed() - self.attribute_updated(0x0402, 0x0000) - end - - ############################################################# - # Pre-process value - # - # This must be overriden. - # This allows to convert the raw sensor value to the target one, typically int - def pre_value(val) - if self.temp_unit == self.TEMP_F # Fahrenheit - val = (val - 32) / 1.8 - end - return val != nil ? int(val * 100) : nil - end - - ############################################################# - # read an attribute - # - def read_attribute = matter.Plugin_Sensor_Temp.read_attribute - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("☀️ %.1f °C", - self.shadow_value != nil ? real(self.shadow_value) / 100 : nil)) - end - -end -matter.Plugin_Bridge_Sensor_Temp = Matter_Plugin_Bridge_Sensor_Temp diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be deleted file mode 100644 index 8d5622315..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be +++ /dev/null @@ -1,155 +0,0 @@ -# -# Matter_Plugin_Bridge_Light2.be - implements the behavior for a remote generic Lighting (CT) via HTTP -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Light2,weak - -class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1 - static var TYPE = "http_light2" # name of the plug-in in json - static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in - # static var ARG = "relay" # additional argument name (or empty if none) - # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var CLUSTERS = matter.consolidate_clusters(_class, { - # 0x001D: inherited # Descriptor Cluster 9.5 p.453 - # 0x0003: inherited # Identify 1.2 p.16 - # 0x0004: inherited # Groups 1.3 p.21 - # 0x0005: inherited # Scenes 1.4 p.30 - no writable - # 0x0006: inherited # On/Off 1.5 p.48 - # 0x0008: inherited # Level Control 1.6 p.57 - 0x0300: [7,8,0xF,0x400A,0x400B,0x400C], # Color Control 3.2 p.111 - }) - static var TYPES = { 0x010C: 2 } # Dimmable Light - - var shadow_ct - var ct_min, ct_max - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - self.update_ct_minmax() - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # TO BE OVERRIDDEN - # This call is synnchronous and blocking. - def parse_update(data, index) - super(self).parse_update(data, index) - - if index == 11 # Status 11 - var ct = int(data.find("CT")) # 153..500 - if ct != nil - if ct != self.shadow_ct - if ct < self.ct_min ct = self.ct_min end - if ct > self.ct_max ct = self.ct_max end - self.attribute_updated(0x0300, 0x0007) - self.shadow_ct = ct - end - end - end - end - - ############################################################# - # Update ct_min/max - # - def update_ct_minmax() - var ct_alexa_mode = tasmota.get_option(82) # if set, range is 200..380 instead of 153...500 - self.ct_min = ct_alexa_mode ? 200 : 153 - self.ct_max = ct_alexa_mode ? 380 : 500 - end - - ############################################################# - # Model - # - def set_ct(v) - var ret = self.call_remote_sync("CT", str(v)) - if ret != nil - self.parse_update(ret, 11) # update shadow from return value - end - end - - ############################################################# - # read an attribute - # - def read_attribute = matter.Plugin_Light2.read_attribute - - ############################################################# - # Invoke a command - # - # returns a TLV object if successful, contains the response - # or an `int` to indicate a status - def invoke_request(session, val, ctx) - var TLV = matter.TLV - var cluster = ctx.cluster - var command = ctx.command - - # ==================================================================================================== - if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== - if command == 0x000A # ---------- MoveToColorTemperature ---------- - var ct_in = val.findsubval(0) # CT - if ct_in < self.ct_min ct_in = self.ct_min end - if ct_in > self.ct_max ct_in = self.ct_max end - self.set_ct(ct_in) - ctx.log = "ct:"+str(ct_in) - self.publish_command('CT', ct_in) - return true - elif command == 0x0047 # ---------- StopMoveStep ---------- - # TODO, we don't really support it - return true - elif command == 0x004B # ---------- MoveColorTemperature ---------- - # TODO, we don't really support it - return true - elif command == 0x004C # ---------- StepColorTemperature ---------- - # TODO, we don't really support it - return true - end - - else - return super(self).invoke_request(session, val, ctx) - end - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("%s %s %s", - self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(), - self.web_value_ct())) - end - - # Show on/off value as html - def web_value_ct() - var ct_html = "" - if self.shadow_ct != nil - var ct_k = (((1000000 / self.shadow_ct) + 25) / 50) * 50 # convert in Kelvin - ct_html = format("%iK", ct_k) - end - return "⚪ " + ct_html; - end -end -matter.Plugin_Bridge_Light2 = Matter_Plugin_Bridge_Light2 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be deleted file mode 100644 index 950048118..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be +++ /dev/null @@ -1,176 +0,0 @@ -# -# Matter_Plugin_Bridge_Light3.be - implements the behavior for a remote generic Lighting (RGB) via HTTP -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Bridge_Light3,weak - -class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1 - static var TYPE = "http_light3" # name of the plug-in in json - static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in - # static var ARG = "relay" # additional argument name (or empty if none) - # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var CLUSTERS = matter.consolidate_clusters(_class, { - # 0x001D: inherited # Descriptor Cluster 9.5 p.453 - # 0x0003: inherited # Identify 1.2 p.16 - # 0x0004: inherited # Groups 1.3 p.21 - # 0x0005: inherited # Scenes 1.4 p.30 - no writable - # 0x0006: inherited # On/Off 1.5 p.48 - # 0x0008: inherited # Level Control 1.6 p.57 - 0x0300: [0,1,7,8,0xF,0x4001,0x400A], # Color Control 3.2 p.111 - }) - static var TYPES = { 0x010D: 2 } # Extended Color Light - - var shadow_hue, shadow_sat # 0..254 - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - end - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_update(data, index) - super(self).parse_update(data, index) - - if index == 11 # Status 11 - var hsb = data.find("HSBColor") - if hsb - import string - var hsb_list = string.split(hsb, ",") - var hue = int(hsb_list[0]) - var sat = int(hsb_list[1]) - # dimmer is already available - - if hue != nil hue = tasmota.scale_uint(hue, 0, 360, 0, 254) else hue = self.shadow_hue end - if sat != nil sat = tasmota.scale_uint(sat, 0, 100, 0, 254) else sat = self.shadow_sat end - if hue != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue end - if sat != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat end - end - end - end - - ############################################################# - # Model - # - def set_hue(v) - var hue_360 = tasmota.scale_uint(v, 0, 254, 0, 360) - var ret = self.call_remote_sync("HSBColor1", hue_360) - if ret != nil - self.parse_update(ret, 11) # update shadow from return value - end - end - def set_sat(v) - var sat_100 = tasmota.scale_uint(v, 0, 254, 0, 100) - var ret = self.call_remote_sync("HSBColor2", sat_100) - if ret != nil - self.parse_update(ret, 11) # update shadow from return value - end - end - - ############################################################# - # read an attribute - # - def read_attribute = matter.Plugin_Light3.read_attribute - - ############################################################# - # Invoke a command - # - # returns a TLV object if successful, contains the response - # or an `int` to indicate a status - def invoke_request(session, val, ctx) - var TLV = matter.TLV - var cluster = ctx.cluster - var command = ctx.command - - # ==================================================================================================== - if cluster == 0x0300 # ========== Color Control 3.2 p.111 ========== - if command == 0x0000 # ---------- MoveToHue ---------- - var hue_in = val.findsubval(0) # Hue 0..254 - self.set_hue(hue_in) - ctx.log = "hue:"+str(hue_in) - self.publish_command('Hue', hue_in) - return true - elif command == 0x0001 # ---------- MoveHue ---------- - # TODO, we don't really support it - return true - elif command == 0x0002 # ---------- StepHue ---------- - # TODO, we don't really support it - return true - elif command == 0x0003 # ---------- MoveToSaturation ---------- - var sat_in = val.findsubval(0) # Sat 0..254 - self.set_sat(sat_in) - ctx.log = "sat:"+str(sat_in) - self.publish_command('Sat', sat_in) - return true - elif command == 0x0004 # ---------- MoveSaturation ---------- - # TODO, we don't really support it - return true - elif command == 0x0005 # ---------- StepSaturation ---------- - # TODO, we don't really support it - return true - elif command == 0x0006 # ---------- MoveToHueAndSaturation ---------- - var hue_in = val.findsubval(0) # Hue 0..254 - var sat_in = val.findsubval(1) # Sat 0..254 - self.set_hue(hue_in) - self.set_sat(sat_in) - ctx.log = "hue:"+str(hue_in)+" sat:"+str(sat_in) - self.publish_command('Hue', hue_in, 'Sat', sat_in) - return true - elif command == 0x0047 # ---------- StopMoveStep ---------- - # TODO, we don't really support it - return true - end - - else - return super(self).invoke_request(session, val, ctx) - end - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("%s %s %s", - self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(), - self.web_value_RGB())) - end - - # Show on/off value as html - def web_value_RGB() - if self.shadow_hue != nil && self.shadow_sat != nil - var l = light_state(3) # RGB virtual light state object - l.set_bri(255) # set full brightness to get full range RGB - l.set_huesat(tasmota.scale_uint(self.shadow_hue, 0, 254, 0, 360), tasmota.scale_uint(self.shadow_sat, 0, 254, 0, 255)) - var rgb_hex = format("#%02X%02X%02X", l.r, l.g, l.b) - var rgb_html = format('%s', rgb_hex, rgb_hex) - return rgb_html - end - return "" - end -end -matter.Plugin_Bridge_Light3 = Matter_Plugin_Bridge_Light3 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light0.be new file mode 100644 index 000000000..e8c444908 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light0.be @@ -0,0 +1,32 @@ +# +# Matter_Plugin_Bridge_Light0.be - implements the behavior for a remote generic Lighting (OnOff only) via HTTP +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Light0,weak + +class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Light0 + static var BRIDGE = true # flag as bridged device + static var TYPE = "http_light0" # name of the plug-in in json + # static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in + static var UPDATE_TIME = 3000 # update every 3s +end +matter.Plugin_Bridge_Light0 = Matter_Plugin_Bridge_Light0 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be new file mode 100644 index 000000000..36df0c048 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be @@ -0,0 +1,34 @@ +# +# Matter_Plugin_Bridge_Light1.be - implements the behavior for a remote generic Lighting (Dimmer) via HTTP +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Light1,weak + +class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Light1 + static var BRIDGE = true + static var TYPE = "http_light1" # name of the plug-in in json + # static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in + static var ARG = "relay" # additional argument name (or empty if none) + static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 3000 # update every 3s +end +matter.Plugin_Bridge_Light1 = Matter_Plugin_Bridge_Light1 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be new file mode 100644 index 000000000..85c6ca91d --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be @@ -0,0 +1,34 @@ +# +# Matter_Plugin_Bridge_Light2.be - implements the behavior for a remote generic Lighting (CT) via HTTP +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Light2,weak + +class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Light2 + static var BRIDGE = true + static var TYPE = "http_light2" # name of the plug-in in json + # static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in + static var ARG = "relay" # additional argument name (or empty if none) + static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 3000 # update every 3s +end +matter.Plugin_Bridge_Light2 = Matter_Plugin_Bridge_Light2 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be new file mode 100644 index 000000000..0d41d6721 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be @@ -0,0 +1,34 @@ +# +# Matter_Plugin_Bridge_Light3.be - implements the behavior for a remote generic Lighting (RGB) via HTTP +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Light3,weak + +class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Light3 + static var BRIDGE = true + static var TYPE = "http_light3" # name of the plug-in in json + # static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in + static var ARG = "relay" # additional argument name (or empty if none) + static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 3000 # update every 3s +end +matter.Plugin_Bridge_Light3 = Matter_Plugin_Bridge_Light3 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_OnOff.be similarity index 100% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_OnOff.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_OnOff.be diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be similarity index 55% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Air_Quality.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be index b0515eb9e..c7a3571f0 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Air_Quality.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be @@ -23,69 +23,58 @@ import matter #@ solidify:Matter_Plugin_Bridge_Sensor_Air_Quality,weak -class Matter_Plugin_Bridge_Sensor_Air_Quality : Matter_Plugin_Bridge_HTTP +class Matter_Plugin_Bridge_Sensor_Air_Quality : Matter_Plugin_Sensor_Air_Quality + static var BRIDGE = true static var TYPE = "http_airquality" # name of the plug-in in json - static var DISPLAY_NAME = "Air Quality" # display name of the plug-in - static var ARG = "airquality" # additional argument name (or empty if none) - static var ARG_HINT = "Sensor Model" + # static var DISPLAY_NAME = "Air Quality" # display name of the plug-in + # static var ARG = "airquality" # additional argument name (or empty if none) + # static var ARG_HINT = "Sensor Model" # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var UPDATE_TIME = 5000 # update every 5s - static var UPDATE_CMD = "Status 8" # command to send for updates + static var UPDATE_CMD = "Status 10" # command to send for updates - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x005B: [0], # Air Quality - no writable - 0x040D: [0,1,2,8,9], # Carbon Dioxide Concentration Measurement - 0x042C: [0,1,2,8,9], # PM1 Concentration Measurement - 0x042A: [0,1,2,8,9], # PM2.5 Concentration Measurement - 0x042D: [0,1,2,8,9], # PM10 Concentration Measurement - 0x042E: [0,1,2,8,9], # TVOC Total Volatile Organic Compounds Concentration Measurement - 0x0413: [0,1,2,8,9], # Nitrogen Dioxide Concentration Measurement - }) + # static var CLUSTERS = matter.consolidate_clusters(_class, { + # 0x005B: [0], # Air Quality - no writable + # 0x040D: [0,1,2,8,9], # Carbon Dioxide Concentration Measurement + # 0x042C: [0,1,2,8,9], # PM1 Concentration Measurement + # 0x042A: [0,1,2,8,9], # PM2.5 Concentration Measurement + # 0x042D: [0,1,2,8,9], # PM10 Concentration Measurement + # 0x042E: [0,1,2,8,9], # TVOC Total Volatile Organic Compounds Concentration Measurement + # 0x0413: [0,1,2,8,9], # Nitrogen Dioxide Concentration Measurement + # }) - static var TYPES = { 0x002C: 1 } # Air Quality, rev 1 + # static var TYPES = { 0x002C: 1 } # Air Quality, rev 1 - var prefix # key prefix in JSON - var shadow_air_quality # Human readable air quality index + # var prefix # key prefix in JSON + # var shadow_air_quality # Human readable air quality index # 0: Unknown # 1: Good # 4: Poor - # var shadow_pb0_3 - # var shadow_pb0_5 - # var shadow_pb1 - # var shadow_pb2_5 - # var shadow_pb5 - # var shadow_pb10 - var shadow_pm1 - var shadow_pm2_5 - # var shadow_pm5 - var shadow_pm10 - var shadow_co2 - # var shadow_eco2 - var shadow_no2 - var shadow_tvoc - - ############################################################# - # Constructor - def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) - self.prefix = str(arguments.find(self.ARG)) - end + # # var shadow_pb0_3 + # # var shadow_pb0_5 + # # var shadow_pb1 + # # var shadow_pb2_5 + # # var shadow_pb5 + # # var shadow_pb10 + # var shadow_pm1 + # var shadow_pm2_5 + # # var shadow_pm5 + # var shadow_pm10 + # var shadow_co2 + # # var shadow_eco2 + # var shadow_no2 + # var shadow_tvoc ############################################################# # Stub for updating shadow values (local copies of what we published to the Matter gateway) # # This call is synnchronous and blocking. - def parse_update(data, index) - if index == 8 # Status 8 + def parse_status(data, index) + if index == 10 # Status 10 var values = data.find(self.prefix) end end - ############################################################# - # read an attribute - # - def read_attribute = matter.Plugin_Sensor_Air_Quality.read_attribute - ############################################################# # web_values # diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Contact.be new file mode 100644 index 000000000..4175ddf53 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Contact.be @@ -0,0 +1,36 @@ +# +# Matter_Plugin_Bridge_Sensor_Contact.be - implements Contact Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Contact,weak + +class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Sensor_Contact + static var BRIDGE = true + static var TYPE = "http_contact" # name of the plug-in in json + # static var DISPLAY_NAME = "Contact" # display name of the plug-in + # static var ARG = "switch" # additional argument name (or empty if none) + # static var ARG_HINT = "Switch number" + # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 5000 # update every 5s + static var UPDATE_CMD = "Status 10" # command to send for updates +end +matter.Plugin_Bridge_Sensor_Contact = Matter_Plugin_Bridge_Sensor_Contact diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Flow.be new file mode 100644 index 000000000..5dfc2309c --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Flow.be @@ -0,0 +1,30 @@ +# +# Matter_Plugin_Bridge_Sensor_Flow.be - implements base class for a Flow Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Flow,weak + +class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Sensor_Flow + static var BRIDGE = true # flag as bridged device + static var TYPE = "http_flow" # name of the plug-in in json +end +matter.Plugin_Bridge_Sensor_Flow = Matter_Plugin_Bridge_Sensor_Flow diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Humidity.be new file mode 100644 index 000000000..17a79f087 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Humidity.be @@ -0,0 +1,30 @@ +# +# Matter_Plugin_Bridge_Sensor_Humidity.be - implements base class for a Humidity Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Humidity,weak + +class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Sensor_Humidity + static var BRIDGE = true # flag as bridged device + static var TYPE = "http_humidity" # name of the plug-in in json +end +matter.Plugin_Bridge_Sensor_Humidity = Matter_Plugin_Bridge_Sensor_Humidity diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Illuminance.be new file mode 100644 index 000000000..4e1df74c5 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Illuminance.be @@ -0,0 +1,30 @@ +# +# Matter_Plugin_Bridge_Sensor_Illuminance.be - implements base class for a Light/Illuminance Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Illuminance,weak + +class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Sensor_Illuminance + static var BRIDGE = true # flag as bridged device + static var TYPE = "http_illuminance" # name of the plug-in in json +end +matter.Plugin_Bridge_Sensor_Illuminance = Matter_Plugin_Bridge_Sensor_Illuminance diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Occupancy.be new file mode 100644 index 000000000..06cfe2fb5 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Occupancy.be @@ -0,0 +1,36 @@ +# +# Matter_Plugin_Bridge_Sensor_Occupancy.be - implements base class for a Occupancy Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Occupancy,weak + +class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Sensor_Occupancy + static var BRIDGE = true + static var TYPE = "http_occupancy" # name of the plug-in in json + # static var DISPLAY_NAME = "Occupancy" # display name of the plug-in + # static var ARG = "switch" # additional argument name (or empty if none) + # static var ARG_HINT = "Switch number" + # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 5000 # update every 5s + static var UPDATE_CMD = "Status 10" # command to send for updates +end +matter.Plugin_Bridge_Sensor_Occupancy = Matter_Plugin_Bridge_Sensor_Occupancy diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Pressure.be new file mode 100644 index 000000000..978a21dd8 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Pressure.be @@ -0,0 +1,30 @@ +# +# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Pressure Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Pressure,weak + +class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Sensor_Pressure + static var BRIDGE = true # flag as bridged device + static var TYPE = "http_pressure" # name of the plug-in in json +end +matter.Plugin_Bridge_Sensor_Pressure = Matter_Plugin_Bridge_Sensor_Pressure diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Temp.be new file mode 100644 index 000000000..a30e6d56f --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Temp.be @@ -0,0 +1,30 @@ +# +# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Temperature Sensor via HTTP to Tasmota +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Temp,weak + +class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Sensor_Temp + static var BRIDGE = true # flag as bridged device + static var TYPE = "http_temperature" # name of the plug-in in json +end +matter.Plugin_Bridge_Sensor_Temp = Matter_Plugin_Bridge_Sensor_Temp diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Waterleak.be new file mode 100644 index 000000000..352c61995 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Waterleak.be @@ -0,0 +1,32 @@ +# +# Matter_Plugin_Bridge_Sensor_Waterleak.be - implements Waterleak Sensor via HTTP to Tasmota +# +# Copyright (C) 2024 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Waterleak,weak + +class Matter_Plugin_Bridge_Sensor_Waterleak : Matter_Plugin_Sensor_Waterleak + static var BRIDGE = true + static var TYPE = "http_waterleak" # name of the plug-in in json + static var UPDATE_TIME = 5000 # update every 5s + static var UPDATE_CMD = "Status 10" # command to send for updates +end +matter.Plugin_Bridge_Sensor_Waterleak = Matter_Plugin_Bridge_Sensor_Waterleak diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be index cbe90af7d..65eb8988b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light0 : Matter_Plugin_Light0 static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Light0 = Matter_Plugin_Virt_Light0 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be index 8697bf2df..be198d422 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light1 : Matter_Plugin_Light1 static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Light1 = Matter_Plugin_Virt_Light1 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be index 20876b842..1a57172fd 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light2 : Matter_Plugin_Light2 static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Light2 = Matter_Plugin_Virt_Light2 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be index 15e7e2ae1..7889545e7 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light3 : Matter_Plugin_Light3 static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Light3 = Matter_Plugin_Virt_Light3 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be index d9bb5403b..fa501b373 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_OnOff : Matter_Plugin_OnOff static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_OnOff = Matter_Plugin_Virt_OnOff diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be index f969398c3..23218b55d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Air_Quality : Matter_Plugin_Sensor_Air_Quality static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Air_Quality = Matter_Plugin_Virt_Sensor_Air_Quality diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be index 0cf722866..af7b4aff1 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Contact : Matter_Plugin_Sensor_Contact static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Contact = Matter_Plugin_Virt_Sensor_Contact diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be index e915ab77e..e79d85071 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Flow : Matter_Plugin_Sensor_Flow static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Flow = Matter_Plugin_Virt_Sensor_Flow diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be index 0fb033a55..e5644cd57 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Humidity : Matter_Plugin_Sensor_Humidity static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Humidity = Matter_Plugin_Virt_Sensor_Humidity diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be index 76090f41a..1e44ac7f7 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Illuminance : Matter_Plugin_Sensor_Illuminance static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Illuminance = Matter_Plugin_Virt_Sensor_Illuminance diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be index 9b4f82004..876db5536 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Occupancy : Matter_Plugin_Sensor_Occupancy static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Occupancy = Matter_Plugin_Virt_Sensor_Occupancy diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be index c661b2b0d..a610f09db 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Pressure : Matter_Plugin_Sensor_Pressure static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Pressure = Matter_Plugin_Virt_Sensor_Pressure diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be index 8ad2b11e3..2b835a4be 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be @@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Temp : Matter_Plugin_Sensor_Temp static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Temp = Matter_Plugin_Virt_Sensor_Temp diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be index a2bde6498..63573b214 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be @@ -30,6 +30,5 @@ class Matter_Plugin_Virt_Sensor_Waterleak : Matter_Plugin_Virt_Sensor_Waterleak static var ARG = "" # no arg for virtual device static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var VIRTUAL = true # virtual device - end matter.Plugin_Virt_Sensor_Waterleak = Matter_Plugin_Virt_Sensor_Waterleak diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index a325ead88..0b31305b9 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -559,11 +559,11 @@ class Matter_UI end #---------------------------------------------------------------------- -# - # Generate configuration map from Status 8 and Status 11 + # Generate configuration map from Status 10 and Status 11 # # Returns a list of maps: [ {"type":"temperature", "filter":"ESP32#Temperature"} ] #---------------------------------------------------------------------- -# - def generate_config_from_status(status8, status11) + def generate_config_from_status(status10, status11) var config_list = [] # count `Power` and `Power` @@ -614,7 +614,7 @@ class Matter_UI # detect sensors - config_list += self.device.autoconf_sensors_list(status8) + config_list += self.device.autoconf_sensors_list(status10) return config_list end @@ -627,24 +627,24 @@ class Matter_UI import json if url == '' return end - var timeout = matter.Plugin_Bridge_HTTP.PROBE_TIMEOUT + var timeout = matter.Plugin_Device.PROBE_TIMEOUT var http_remote = matter.HTTP_remote(nil, url, timeout) - # Status 8 - var status8 = http_remote.call_sync('Status 8', timeout) - if status8 != nil status8 = json.load(status8) end - if status8 != nil status8 = status8.find('StatusSNS') end + # Status 10 + var status10 = http_remote.call_sync('Status 10', timeout) + if status10 != nil status10 = json.load(status10) end + if status10 != nil status10 = status10.find('StatusSNS') end # Status 11 var status11 - if status8 != nil + if status10 != nil status11 = http_remote.call_sync('Status 11', timeout) if status11 != nil status11 = json.load(status11) end if status11 != nil status11 = status11.find('StatusSTS') end end - if status8 != nil && status11 != nil - tasmota.log(format("MTR: probed '%s' status8=%s satus11=%s", url, str(status8), str(status11)), 3) + if status10 != nil && status11 != nil + tasmota.log(format("MTR: probed '%s' status10=%s satus11=%s", url, str(status10), str(status11)), 3) - var config_list = self.generate_config_from_status(status8, status11) + var config_list = self.generate_config_from_status(status10, status11) self.show_plugins_hints_js(self._CLASSES_TYPES2) @@ -1028,7 +1028,7 @@ class Matter_UI while idx < size(self.device.plugins) var plg = self.device.plugins[idx] - if isinstance(plg, matter.Plugin_Bridge_HTTP) + if plg.BRIDGE if bridge_plugin_by_host == nil bridge_plugin_by_host = {} end var host = plg.http_remote.addr diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h index 8e516d7ac..3328ff109 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h @@ -7,39 +7,55 @@ extern const bclass be_class_Matter_HTTP_remote; /******************************************************************** -** Solidified function: device_is_alive +** Solidified function: add_schedule ********************************************************************/ extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ +be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */ be_nested_proto( - 4, /* nstack */ - 2, /* argc */ + 8, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(reachable), - /* K1 */ be_nested_str_weak(reachable_utc), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(rtc_utc), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_update_time_map), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(probe_next_timestamp_map), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(jitter), + /* K5 */ be_nested_str_weak(add_async_cb), }), - be_str_weak(device_is_alive), + be_str_weak(add_schedule), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x78060006, // 0000 JMPF R1 #0008 - 0x50080200, // 0001 LDBOOL R2 1 0 - 0x90020002, // 0002 SETMBR R0 K0 R2 - 0xB80A0400, // 0003 GETNGBL R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020202, // 0006 SETMBR R0 K1 R2 - 0x70020001, // 0007 JMP #000A - 0x50080000, // 0008 LDBOOL R2 0 0 - 0x90020002, // 0009 SETMBR R0 K0 R2 - 0x80000000, // 000A RET 0 + ( &(const binstruction[25]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x5C180200, // 0002 MOVE R6 R1 + 0x7C100400, // 0003 CALL R4 2 + 0x78120003, // 0004 JMPF R4 #0009 + 0x88100100, // 0005 GETMBR R4 R0 K0 + 0x94100801, // 0006 GETIDX R4 R4 R1 + 0x14100404, // 0007 LT R4 R2 R4 + 0x78120007, // 0008 JMPF R4 #0011 + 0x88100100, // 0009 GETMBR R4 R0 K0 + 0x98100202, // 000A SETIDX R4 R1 R2 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0xB8160600, // 000C GETNGBL R5 K3 + 0x8C140B04, // 000D GETMET R5 R5 K4 + 0x5C1C0400, // 000E MOVE R7 R2 + 0x7C140400, // 000F CALL R5 2 + 0x98100205, // 0010 SETIDX R4 R1 R5 + 0x4C100000, // 0011 LDNIL R4 + 0x20100604, // 0012 NE R4 R3 R4 + 0x78120003, // 0013 JMPF R4 #0018 + 0x8C100105, // 0014 GETMET R4 R0 K5 + 0x5C180600, // 0015 MOVE R6 R3 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x7C100600, // 0017 CALL R4 3 + 0x80000000, // 0018 RET 0 }) ) ); @@ -47,10 +63,95 @@ be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ /******************************************************************** -** Solidified function: parse_update +** Solidified function: dispatch_cb ********************************************************************/ extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_parse_update, /* name */ +be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_HTTP_remote, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(async_cb_map), + /* K2 */ be_nested_str_weak(keys), + /* K3 */ be_nested_str_weak(current_cmd), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(dispatch_cb), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x60100010, // 0001 GETGBL R4 G16 + 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x8C140B02, // 0003 GETMET R5 R5 K2 + 0x7C140200, // 0004 CALL R5 1 + 0x7C100200, // 0005 CALL R4 1 + 0xA802000F, // 0006 EXBLK 0 #0017 + 0x5C140800, // 0007 MOVE R5 R4 + 0x7C140000, // 0008 CALL R5 0 + 0x88180101, // 0009 GETMBR R6 R0 K1 + 0x94180C05, // 000A GETIDX R6 R6 R5 + 0x881C0103, // 000B GETMBR R7 R0 K3 + 0x1C1C0C07, // 000C EQ R7 R6 R7 + 0x741E0002, // 000D JMPT R7 #0011 + 0x4C1C0000, // 000E LDNIL R7 + 0x1C1C0C07, // 000F EQ R7 R6 R7 + 0x781E0004, // 0010 JMPF R7 #0016 + 0x5C1C0A00, // 0011 MOVE R7 R5 + 0x5C200200, // 0012 MOVE R8 R1 + 0x5C240400, // 0013 MOVE R9 R2 + 0x88280103, // 0014 GETMBR R10 R0 K3 + 0x7C1C0600, // 0015 CALL R7 3 + 0x7001FFEF, // 0016 JMP #0007 + 0x58100004, // 0017 LDCONST R4 K4 + 0xAC100200, // 0018 CATCH R4 1 0 + 0xB0080000, // 0019 RAISE 2 R0 R0 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_info +********************************************************************/ +extern const bclass be_class_Matter_HTTP_remote; +be_local_closure(class_Matter_HTTP_remote_get_info, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_HTTP_remote, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(info), + }), + be_str_weak(get_info), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status_http +********************************************************************/ +extern const bclass be_class_Matter_HTTP_remote; +be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ be_nested_proto( 12, /* nstack */ 3, /* argc */ @@ -90,7 +191,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_update, /* name */ /* K26 */ be_nested_str_weak(UPDATE_CMD5), /* K27 */ be_nested_str_weak(info_changed), }), - be_str_weak(parse_update), + be_str_weak(parse_status_http), &be_const_str_solidified, ( &(const binstruction[145]) { /* code */ 0x500C0000, // 0000 LDBOOL R3 0 0 @@ -245,120 +346,67 @@ be_local_closure(class_Matter_HTTP_remote_parse_update, /* name */ /******************************************************************** -** Solidified function: call_sync +** Solidified function: set_info ********************************************************************/ extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ +be_local_closure(class_Matter_HTTP_remote_set_info, /* name */ be_nested_proto( - 16, /* nstack */ - 3, /* argc */ + 2, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(webserver), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(wifi), - /* K4 */ be_nested_str_weak(up), - /* K5 */ be_nested_str_weak(eth), - /* K6 */ be_nested_str_weak(current_cmd), - /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), - /* K8 */ be_nested_str_weak(tr), - /* K9 */ be_nested_str_weak(_X20), - /* K10 */ be_nested_str_weak(_X2B), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_nested_str_weak(port), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(begin_sync), - /* K17 */ be_nested_str_weak(nil), - /* K18 */ be_const_int(0), - /* K19 */ be_nested_str_weak(_X2E_X2E_X2E), - /* K20 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), - /* K21 */ be_nested_str_weak(millis), - /* K22 */ be_nested_str_weak(time_start), - /* K23 */ be_nested_str_weak(payload), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(info), }), - be_str_weak(call_sync), + be_str_weak(set_info), &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x7C140200, // 0004 CALL R5 1 - 0x94140B04, // 0005 GETIDX R5 R5 K4 - 0x74160006, // 0006 JMPT R5 #000E - 0xB8160400, // 0007 GETNGBL R5 K2 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x7C140200, // 0009 CALL R5 1 - 0x94140B04, // 000A GETIDX R5 R5 K4 - 0x74160001, // 000B JMPT R5 #000E - 0x4C140000, // 000C LDNIL R5 - 0x80040A00, // 000D RET 1 R5 - 0x4C140000, // 000E LDNIL R5 - 0x90020C05, // 000F SETMBR R0 K6 R5 - 0x8C140708, // 0010 GETMET R5 R3 K8 - 0x5C1C0200, // 0011 MOVE R7 R1 - 0x58200009, // 0012 LDCONST R8 K9 - 0x5824000A, // 0013 LDCONST R9 K10 - 0x7C140800, // 0014 CALL R5 4 - 0x00160E05, // 0015 ADD R5 K7 R5 - 0xB81A0400, // 0016 GETNGBL R6 K2 - 0x8C180D0B, // 0017 GETMET R6 R6 K11 - 0x60200018, // 0018 GETGBL R8 G24 - 0x5824000C, // 0019 LDCONST R9 K12 - 0x8828010D, // 001A GETMBR R10 R0 K13 - 0x882C010E, // 001B GETMBR R11 R0 K14 - 0x5C300A00, // 001C MOVE R12 R5 - 0x7C200800, // 001D CALL R8 4 - 0x5824000F, // 001E LDCONST R9 K15 - 0x7C180600, // 001F CALL R6 3 - 0x60180003, // 0020 GETGBL R6 G3 - 0x5C1C0000, // 0021 MOVE R7 R0 - 0x7C180200, // 0022 CALL R6 1 - 0x8C180D10, // 0023 GETMET R6 R6 K16 - 0x5C200A00, // 0024 MOVE R8 R5 - 0x5C240400, // 0025 MOVE R9 R2 - 0x7C180600, // 0026 CALL R6 3 - 0x781A0001, // 0027 JMPF R6 #002A - 0x5C1C0C00, // 0028 MOVE R7 R6 - 0x70020000, // 0029 JMP #002B - 0x581C0011, // 002A LDCONST R7 K17 - 0x6020000C, // 002B GETGBL R8 G12 - 0x5C240E00, // 002C MOVE R9 R7 - 0x7C200200, // 002D CALL R8 1 - 0x5426001D, // 002E LDINT R9 30 - 0x24201009, // 002F GT R8 R8 R9 - 0x78220004, // 0030 JMPF R8 #0036 - 0x5422001C, // 0031 LDINT R8 29 - 0x40222408, // 0032 CONNECT R8 K18 R8 - 0x94200E08, // 0033 GETIDX R8 R7 R8 - 0x00201113, // 0034 ADD R8 R8 K19 - 0x5C1C1000, // 0035 MOVE R7 R8 - 0xB8220400, // 0036 GETNGBL R8 K2 - 0x8C20110B, // 0037 GETMET R8 R8 K11 - 0x60280018, // 0038 GETGBL R10 G24 - 0x582C0014, // 0039 LDCONST R11 K20 - 0xB8320400, // 003A GETNGBL R12 K2 - 0x8C301915, // 003B GETMET R12 R12 K21 - 0x7C300200, // 003C CALL R12 1 - 0x88340116, // 003D GETMBR R13 R0 K22 - 0x0430180D, // 003E SUB R12 R12 R13 - 0x8834010D, // 003F GETMBR R13 R0 K13 - 0x6038000C, // 0040 GETGBL R14 G12 - 0x883C0117, // 0041 GETMBR R15 R0 K23 - 0x7C380200, // 0042 CALL R14 1 - 0x5C3C0E00, // 0043 MOVE R15 R7 - 0x7C280A00, // 0044 CALL R10 5 - 0x582C000F, // 0045 LDCONST R11 K15 - 0x7C200600, // 0046 CALL R8 3 - 0x80040C00, // 0047 RET 1 R6 + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: device_is_alive +********************************************************************/ +extern const bclass be_class_Matter_HTTP_remote; +be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_HTTP_remote, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(reachable), + /* K1 */ be_nested_str_weak(reachable_utc), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(rtc_utc), + }), + be_str_weak(device_is_alive), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x78060006, // 0000 JMPF R1 #0008 + 0x50080200, // 0001 LDBOOL R2 1 0 + 0x90020002, // 0002 SETMBR R0 K0 R2 + 0xB80A0400, // 0003 GETNGBL R2 K2 + 0x8C080503, // 0004 GETMET R2 R2 K3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020202, // 0006 SETMBR R0 K1 R2 + 0x70020001, // 0007 JMP #000A + 0x50080000, // 0008 LDBOOL R2 0 0 + 0x90020002, // 0009 SETMBR R0 K0 R2 + 0x80000000, // 000A RET 0 }) ) ); @@ -449,6 +497,113 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: probe_async +********************************************************************/ +extern const bclass be_class_Matter_HTTP_remote; +be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ + be_nested_proto( + 12, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_HTTP_remote, + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(webserver), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(wifi), + /* K4 */ be_nested_str_weak(up), + /* K5 */ be_nested_str_weak(eth), + /* K6 */ be_nested_str_weak(current_cmd), + /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), + /* K8 */ be_nested_str_weak(tr), + /* K9 */ be_nested_str_weak(_X20), + /* K10 */ be_nested_str_weak(_X2B), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K13 */ be_nested_str_weak(addr), + /* K14 */ be_nested_str_weak(port), + /* K15 */ be_nested_str_weak(begin), + }), + be_str_weak(probe_async), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0xB8120400, // 0002 GETNGBL R4 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 + 0x7C100200, // 0004 CALL R4 1 + 0x94100904, // 0005 GETIDX R4 R4 K4 + 0x74120006, // 0006 JMPT R4 #000E + 0xB8120400, // 0007 GETNGBL R4 K2 + 0x8C100905, // 0008 GETMET R4 R4 K5 + 0x7C100200, // 0009 CALL R4 1 + 0x94100904, // 000A GETIDX R4 R4 K4 + 0x74120001, // 000B JMPT R4 #000E + 0x4C100000, // 000C LDNIL R4 + 0x80040800, // 000D RET 1 R4 + 0x90020C01, // 000E SETMBR R0 K6 R1 + 0x8C100508, // 000F GETMET R4 R2 K8 + 0x5C180200, // 0010 MOVE R6 R1 + 0x581C0009, // 0011 LDCONST R7 K9 + 0x5820000A, // 0012 LDCONST R8 K10 + 0x7C100800, // 0013 CALL R4 4 + 0x00120E04, // 0014 ADD R4 K7 R4 + 0xB8160400, // 0015 GETNGBL R5 K2 + 0x8C140B0B, // 0016 GETMET R5 R5 K11 + 0x601C0018, // 0017 GETGBL R7 G24 + 0x5820000C, // 0018 LDCONST R8 K12 + 0x8824010D, // 0019 GETMBR R9 R0 K13 + 0x8828010E, // 001A GETMBR R10 R0 K14 + 0x5C2C0800, // 001B MOVE R11 R4 + 0x7C1C0800, // 001C CALL R7 4 + 0x54220003, // 001D LDINT R8 4 + 0x7C140600, // 001E CALL R5 3 + 0x8C14010F, // 001F GETMET R5 R0 K15 + 0x5C1C0800, // 0020 MOVE R7 R4 + 0x7C140400, // 0021 CALL R5 2 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: info_changed +********************************************************************/ +extern const bclass be_class_Matter_HTTP_remote; +be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_HTTP_remote, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(save_param), + }), + be_str_weak(info_changed), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: web_last_seen ********************************************************************/ @@ -498,120 +653,313 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ /******************************************************************** -** Solidified function: event_http_failed +** Solidified function: init ********************************************************************/ extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(current_cmd), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(dispatch_cb), - /* K6 */ be_nested_str_weak(http_status), - }), - be_str_weak(event_http_failed), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x58100004, // 0008 LDCONST R4 K4 - 0x7C040600, // 0009 CALL R1 3 - 0x8C040105, // 000A GETMET R1 R0 K5 - 0x880C0106, // 000B GETMBR R3 R0 K6 - 0x4C100000, // 000C LDNIL R4 - 0x7C040600, // 000D CALL R1 3 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_status_response -********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_parse_status_response, /* name */ +be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_nested_proto( 11, /* nstack */ - 4, /* argc */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 4]) { + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status_response_and_call_method), + /* K1 */ be_nested_str_weak(parse_status_http), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x68200000, // 0005 GETUPV R8 U0 + 0x68240000, // 0006 GETUPV R9 U0 + 0x88241301, // 0007 GETMBR R9 R9 K1 + 0x7C0C0C00, // 0008 CALL R3 6 + 0x80040600, // 0009 RET 1 R3 + }) + ), + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status_response_and_call_method), + /* K1 */ be_nested_str_weak(parse_status_http), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x68200000, // 0005 GETUPV R8 U0 + 0x68240000, // 0006 GETUPV R9 U0 + 0x88241301, // 0007 GETMBR R9 R9 K1 + 0x7C0C0C00, // 0008 CALL R3 6 + 0x80040600, // 0009 RET 1 R3 + }) + ), + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status_response_and_call_method), + /* K1 */ be_nested_str_weak(parse_status_http), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x68200000, // 0005 GETUPV R8 U0 + 0x68240000, // 0006 GETUPV R9 U0 + 0x88241301, // 0007 GETMBR R9 R9 K1 + 0x7C0C0C00, // 0008 CALL R3 6 + 0x80040600, // 0009 RET 1 R3 + }) + ), + &be_class_Matter_HTTP_remote, + }), + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(probe_update_time_map), + /* K2 */ be_nested_str_weak(probe_next_timestamp_map), + /* K3 */ be_nested_str_weak(async_cb_map), + /* K4 */ be_nested_str_weak(current_cmd), + /* K5 */ be_nested_str_weak(reachable), + /* K6 */ be_nested_str_weak(init), + /* K7 */ be_nested_str_weak(info), + /* K8 */ be_nested_str_weak(add_schedule), + /* K9 */ be_nested_str_weak(UPDATE_CMD0), + /* K10 */ be_nested_str_weak(UPDATE_TIME), + /* K11 */ be_nested_str_weak(UPDATE_CMD2), + /* K12 */ be_nested_str_weak(UPDATE_CMD5), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60140013, // 0001 GETGBL R5 G19 + 0x7C140000, // 0002 CALL R5 0 + 0x90020205, // 0003 SETMBR R0 K1 R5 + 0x60140013, // 0004 GETGBL R5 G19 + 0x7C140000, // 0005 CALL R5 0 + 0x90020405, // 0006 SETMBR R0 K2 R5 + 0x60140013, // 0007 GETGBL R5 G19 + 0x7C140000, // 0008 CALL R5 0 + 0x90020605, // 0009 SETMBR R0 K3 R5 + 0x4C140000, // 000A LDNIL R5 + 0x90020805, // 000B SETMBR R0 K4 R5 + 0x50140000, // 000C LDBOOL R5 0 0 + 0x90020A05, // 000D SETMBR R0 K5 R5 + 0x60140003, // 000E GETGBL R5 G3 + 0x5C180000, // 000F MOVE R6 R0 + 0x7C140200, // 0010 CALL R5 1 + 0x8C140B06, // 0011 GETMET R5 R5 K6 + 0x5C1C0400, // 0012 MOVE R7 R2 + 0x5422004F, // 0013 LDINT R8 80 + 0x5C240600, // 0014 MOVE R9 R3 + 0x5C280800, // 0015 MOVE R10 R4 + 0x7C140A00, // 0016 CALL R5 5 + 0x60140013, // 0017 GETGBL R5 G19 + 0x7C140000, // 0018 CALL R5 0 + 0x90020E05, // 0019 SETMBR R0 K7 R5 + 0x88140100, // 001A GETMBR R5 R0 K0 + 0x7816000E, // 001B JMPF R5 #002B + 0x8C140108, // 001C GETMET R5 R0 K8 + 0x881C0109, // 001D GETMBR R7 R0 K9 + 0x8820010A, // 001E GETMBR R8 R0 K10 + 0x84240000, // 001F CLOSURE R9 P0 + 0x7C140800, // 0020 CALL R5 4 + 0x8C140108, // 0021 GETMET R5 R0 K8 + 0x881C010B, // 0022 GETMBR R7 R0 K11 + 0x8820010A, // 0023 GETMBR R8 R0 K10 + 0x84240001, // 0024 CLOSURE R9 P1 + 0x7C140800, // 0025 CALL R5 4 + 0x8C140108, // 0026 GETMET R5 R0 K8 + 0x881C010C, // 0027 GETMBR R7 R0 K12 + 0x8820010A, // 0028 GETMBR R8 R0 K10 + 0x84240002, // 0029 CLOSURE R9 P2 + 0x7C140800, // 002A CALL R5 4 + 0xA0000000, // 002B CLOSE R0 + 0x80000000, // 002C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: change_schedule +********************************************************************/ +extern const bclass be_class_Matter_HTTP_remote; +be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_update_time_map), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(probe_next_timestamp_map), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(jitter), + }), + be_str_weak(change_schedule), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0007, // 0004 JMPF R3 #000D + 0x880C0100, // 0005 GETMBR R3 R0 K0 + 0x980C0202, // 0006 SETIDX R3 R1 R2 + 0x880C0102, // 0007 GETMBR R3 R0 K2 + 0xB8120600, // 0008 GETNGBL R4 K3 + 0x8C100904, // 0009 GETMET R4 R4 K4 + 0x5C180400, // 000A MOVE R6 R2 + 0x7C100400, // 000B CALL R4 2 + 0x980C0204, // 000C SETIDX R3 R1 R4 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status_response_and_call_method +********************************************************************/ +extern const bclass be_class_Matter_HTTP_remote; +be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, /* name */ + be_nested_proto( + 14, /* nstack */ + 6, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_HTTP_remote, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(device_is_alive), - /* K2 */ be_nested_str_weak(json), - /* K3 */ be_nested_str_weak(load), - /* K4 */ be_nested_str_weak(contains), - /* K5 */ be_nested_str_weak(Status), - /* K6 */ be_nested_str_weak(StatusFWR), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(StatusNET), - /* K9 */ be_nested_str_weak(parse_update), + /* K2 */ be_nested_str_weak(string), + /* K3 */ be_nested_str_weak(json), + /* K4 */ be_nested_str_weak(load), + /* K5 */ be_nested_str_weak(STATUS_PREFIX), + /* K6 */ be_nested_str_weak(contains), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(log), + /* K10 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), + /* K11 */ be_const_int(3), }), - be_str_weak(parse_status_response), + be_str_weak(parse_status_response_and_call_method), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x20100204, // 0001 NE R4 R1 R4 - 0x78120022, // 0002 JMPF R4 #0026 - 0x24100300, // 0003 GT R4 R1 K0 - 0x78120020, // 0004 JMPF R4 #0026 - 0x8C100101, // 0005 GETMET R4 R0 K1 - 0x50180200, // 0006 LDBOOL R6 1 0 - 0x7C100400, // 0007 CALL R4 2 - 0xA4120400, // 0008 IMPORT R4 K2 - 0x8C140903, // 0009 GETMET R5 R4 K3 - 0x5C1C0400, // 000A MOVE R7 R2 - 0x7C140400, // 000B CALL R5 2 - 0x4C180000, // 000C LDNIL R6 - 0x78160017, // 000D JMPF R5 #0026 - 0x8C1C0B04, // 000E GETMET R7 R5 K4 - 0x58240005, // 000F LDCONST R9 K5 - 0x7C1C0400, // 0010 CALL R7 2 - 0x781E0002, // 0011 JMPF R7 #0015 - 0x94140B05, // 0012 GETIDX R5 R5 K5 - 0x58180000, // 0013 LDCONST R6 K0 - 0x7002000C, // 0014 JMP #0022 - 0x8C1C0B04, // 0015 GETMET R7 R5 K4 - 0x58240006, // 0016 LDCONST R9 K6 - 0x7C1C0400, // 0017 CALL R7 2 - 0x781E0002, // 0018 JMPF R7 #001C - 0x94140B06, // 0019 GETIDX R5 R5 K6 - 0x58180007, // 001A LDCONST R6 K7 - 0x70020005, // 001B JMP #0022 - 0x8C1C0B04, // 001C GETMET R7 R5 K4 - 0x58240008, // 001D LDCONST R9 K8 - 0x7C1C0400, // 001E CALL R7 2 - 0x781E0001, // 001F JMPF R7 #0022 - 0x94140B08, // 0020 GETIDX R5 R5 K8 - 0x541A0004, // 0021 LDINT R6 5 - 0x8C1C0109, // 0022 GETMET R7 R0 K9 - 0x5C240A00, // 0023 MOVE R9 R5 - 0x5C280C00, // 0024 MOVE R10 R6 - 0x7C1C0600, // 0025 CALL R7 3 - 0x80000000, // 0026 RET 0 + ( &(const binstruction[58]) { /* code */ + 0x4C180000, // 0000 LDNIL R6 + 0x20180206, // 0001 NE R6 R1 R6 + 0x781A0035, // 0002 JMPF R6 #0039 + 0x24180300, // 0003 GT R6 R1 K0 + 0x781A0033, // 0004 JMPF R6 #0039 + 0x8C180101, // 0005 GETMET R6 R0 K1 + 0x50200200, // 0006 LDBOOL R8 1 0 + 0x7C180400, // 0007 CALL R6 2 + 0x5C180400, // 0008 MOVE R6 R2 + 0x601C0004, // 0009 GETGBL R7 G4 + 0x5C200C00, // 000A MOVE R8 R6 + 0x7C1C0200, // 000B CALL R7 1 + 0x1C1C0F02, // 000C EQ R7 R7 K2 + 0x781E0004, // 000D JMPF R7 #0013 + 0xA41E0600, // 000E IMPORT R7 K3 + 0x8C200F04, // 000F GETMET R8 R7 K4 + 0x5C280C00, // 0010 MOVE R10 R6 + 0x7C200400, // 0011 CALL R8 2 + 0x5C181000, // 0012 MOVE R6 R8 + 0x4C1C0000, // 0013 LDNIL R7 + 0x4C200000, // 0014 LDNIL R8 + 0x20200C08, // 0015 NE R8 R6 R8 + 0x78220019, // 0016 JMPF R8 #0031 + 0x58200000, // 0017 LDCONST R8 K0 + 0x88240105, // 0018 GETMBR R9 R0 K5 + 0x6028000C, // 0019 GETGBL R10 G12 + 0x5C2C1200, // 001A MOVE R11 R9 + 0x7C280200, // 001B CALL R10 1 + 0x1428100A, // 001C LT R10 R8 R10 + 0x782A000C, // 001D JMPF R10 #002B + 0x94281208, // 001E GETIDX R10 R9 R8 + 0x4C2C0000, // 001F LDNIL R11 + 0x202C140B, // 0020 NE R11 R10 R11 + 0x782E0006, // 0021 JMPF R11 #0029 + 0x8C2C0D06, // 0022 GETMET R11 R6 K6 + 0x5C341400, // 0023 MOVE R13 R10 + 0x7C2C0400, // 0024 CALL R11 2 + 0x782E0002, // 0025 JMPF R11 #0029 + 0x94180C0A, // 0026 GETIDX R6 R6 R10 + 0x5C1C1000, // 0027 MOVE R7 R8 + 0x70020001, // 0028 JMP #002B + 0x00201107, // 0029 ADD R8 R8 K7 + 0x7001FFED, // 002A JMP #0019 + 0x5C280A00, // 002B MOVE R10 R5 + 0x5C2C0800, // 002C MOVE R11 R4 + 0x5C300C00, // 002D MOVE R12 R6 + 0x5C340E00, // 002E MOVE R13 R7 + 0x7C280600, // 002F CALL R10 3 + 0x70020007, // 0030 JMP #0039 + 0xB8221000, // 0031 GETNGBL R8 K8 + 0x8C201109, // 0032 GETMET R8 R8 K9 + 0x60280018, // 0033 GETGBL R10 G24 + 0x582C000A, // 0034 LDCONST R11 K10 + 0x5C300400, // 0035 MOVE R12 R2 + 0x7C280400, // 0036 CALL R10 2 + 0x582C000B, // 0037 LDCONST R11 K11 + 0x7C200600, // 0038 CALL R8 3 + 0x80000000, // 0039 RET 0 }) ) ); @@ -619,116 +967,120 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response, /* name */ /******************************************************************** -** Solidified function: get_info +** Solidified function: call_sync ********************************************************************/ extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_get_info, /* name */ +be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 16, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(info), + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(webserver), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(wifi), + /* K4 */ be_nested_str_weak(up), + /* K5 */ be_nested_str_weak(eth), + /* K6 */ be_nested_str_weak(current_cmd), + /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), + /* K8 */ be_nested_str_weak(tr), + /* K9 */ be_nested_str_weak(_X20), + /* K10 */ be_nested_str_weak(_X2B), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K13 */ be_nested_str_weak(addr), + /* K14 */ be_nested_str_weak(port), + /* K15 */ be_nested_str_weak(begin_sync), + /* K16 */ be_nested_str_weak(nil), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(_X2E_X2E_X2E), + /* K19 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K20 */ be_nested_str_weak(millis), + /* K21 */ be_nested_str_weak(time_start), + /* K22 */ be_nested_str_weak(payload), + /* K23 */ be_const_int(3), }), - be_str_weak(get_info), + be_str_weak(call_sync), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: event_http_timeout -********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(current_cmd), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), - /* K4 */ be_nested_str_weak(http_status), - /* K5 */ be_nested_str_weak(phase), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(payload), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(dispatch_cb), - }), - be_str_weak(event_http_timeout), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x600C0018, // 0007 GETGBL R3 G24 - 0x58100003, // 0008 LDCONST R4 K3 - 0x88140104, // 0009 GETMBR R5 R0 K4 - 0x88180105, // 000A GETMBR R6 R0 K5 - 0x881C0106, // 000B GETMBR R7 R0 K6 - 0x6020000C, // 000C GETGBL R8 G12 - 0x88240107, // 000D GETMBR R9 R0 K7 - 0x7C200200, // 000E CALL R8 1 - 0x7C0C0A00, // 000F CALL R3 5 - 0x58100008, // 0010 LDCONST R4 K8 - 0x7C040600, // 0011 CALL R1 3 - 0x8C040109, // 0012 GETMET R1 R0 K9 - 0x880C0104, // 0013 GETMBR R3 R0 K4 - 0x4C100000, // 0014 LDNIL R4 - 0x7C040600, // 0015 CALL R1 3 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: info_changed -********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(save_param), - }), - be_str_weak(info_changed), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 + ( &(const binstruction[72]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xA4120200, // 0001 IMPORT R4 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x7C140200, // 0004 CALL R5 1 + 0x94140B04, // 0005 GETIDX R5 R5 K4 + 0x74160006, // 0006 JMPT R5 #000E + 0xB8160400, // 0007 GETNGBL R5 K2 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x7C140200, // 0009 CALL R5 1 + 0x94140B04, // 000A GETIDX R5 R5 K4 + 0x74160001, // 000B JMPT R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x4C140000, // 000E LDNIL R5 + 0x90020C05, // 000F SETMBR R0 K6 R5 + 0x8C140708, // 0010 GETMET R5 R3 K8 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x58200009, // 0012 LDCONST R8 K9 + 0x5824000A, // 0013 LDCONST R9 K10 + 0x7C140800, // 0014 CALL R5 4 + 0x00160E05, // 0015 ADD R5 K7 R5 + 0xB81A0400, // 0016 GETNGBL R6 K2 + 0x8C180D0B, // 0017 GETMET R6 R6 K11 + 0x60200018, // 0018 GETGBL R8 G24 + 0x5824000C, // 0019 LDCONST R9 K12 + 0x8828010D, // 001A GETMBR R10 R0 K13 + 0x882C010E, // 001B GETMBR R11 R0 K14 + 0x5C300A00, // 001C MOVE R12 R5 + 0x7C200800, // 001D CALL R8 4 + 0x54260003, // 001E LDINT R9 4 + 0x7C180600, // 001F CALL R6 3 + 0x60180003, // 0020 GETGBL R6 G3 + 0x5C1C0000, // 0021 MOVE R7 R0 + 0x7C180200, // 0022 CALL R6 1 + 0x8C180D0F, // 0023 GETMET R6 R6 K15 + 0x5C200A00, // 0024 MOVE R8 R5 + 0x5C240400, // 0025 MOVE R9 R2 + 0x7C180600, // 0026 CALL R6 3 + 0x781A0001, // 0027 JMPF R6 #002A + 0x5C1C0C00, // 0028 MOVE R7 R6 + 0x70020000, // 0029 JMP #002B + 0x581C0010, // 002A LDCONST R7 K16 + 0x6020000C, // 002B GETGBL R8 G12 + 0x5C240E00, // 002C MOVE R9 R7 + 0x7C200200, // 002D CALL R8 1 + 0x5426001D, // 002E LDINT R9 30 + 0x24201009, // 002F GT R8 R8 R9 + 0x78220004, // 0030 JMPF R8 #0036 + 0x5422001C, // 0031 LDINT R8 29 + 0x40222208, // 0032 CONNECT R8 K17 R8 + 0x94200E08, // 0033 GETIDX R8 R7 R8 + 0x00201112, // 0034 ADD R8 R8 K18 + 0x5C1C1000, // 0035 MOVE R7 R8 + 0xB8220400, // 0036 GETNGBL R8 K2 + 0x8C20110B, // 0037 GETMET R8 R8 K11 + 0x60280018, // 0038 GETGBL R10 G24 + 0x582C0013, // 0039 LDCONST R11 K19 + 0xB8320400, // 003A GETNGBL R12 K2 + 0x8C301914, // 003B GETMET R12 R12 K20 + 0x7C300200, // 003C CALL R12 1 + 0x88340115, // 003D GETMBR R13 R0 K21 + 0x0430180D, // 003E SUB R12 R12 R13 + 0x8834010D, // 003F GETMBR R13 R0 K13 + 0x6038000C, // 0040 GETGBL R14 G12 + 0x883C0116, // 0041 GETMBR R15 R0 K22 + 0x7C380200, // 0042 CALL R14 1 + 0x5C3C0E00, // 0043 MOVE R15 R7 + 0x7C280A00, // 0044 CALL R10 5 + 0x582C0017, // 0045 LDCONST R11 K23 + 0x7C200600, // 0046 CALL R8 3 + 0x80040C00, // 0047 RET 1 R6 }) ) ); @@ -837,132 +1189,46 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ /******************************************************************** -** Solidified function: add_schedule +** Solidified function: event_http_failed ********************************************************************/ extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */ +be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ be_nested_proto( - 8, /* nstack */ - 4, /* argc */ + 5, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_update_time_map), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(probe_next_timestamp_map), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(jitter), - /* K5 */ be_nested_str_weak(add_async_cb), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(current_cmd), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(dispatch_cb), + /* K6 */ be_nested_str_weak(http_status), }), - be_str_weak(add_schedule), + be_str_weak(event_http_failed), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x7C100400, // 0003 CALL R4 2 - 0x78120003, // 0004 JMPF R4 #0009 - 0x88100100, // 0005 GETMBR R4 R0 K0 - 0x94100801, // 0006 GETIDX R4 R4 R1 - 0x14100404, // 0007 LT R4 R2 R4 - 0x78120007, // 0008 JMPF R4 #0011 - 0x88100100, // 0009 GETMBR R4 R0 K0 - 0x98100202, // 000A SETIDX R4 R1 R2 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0xB8160600, // 000C GETNGBL R5 K3 - 0x8C140B04, // 000D GETMET R5 R5 K4 - 0x5C1C0400, // 000E MOVE R7 R2 - 0x7C140400, // 000F CALL R5 2 - 0x98100205, // 0010 SETIDX R4 R1 R5 - 0x4C100000, // 0011 LDNIL R4 - 0x20100604, // 0012 NE R4 R3 R4 - 0x78120003, // 0013 JMPF R4 #0018 - 0x8C100105, // 0014 GETMET R4 R0 K5 - 0x5C180600, // 0015 MOVE R6 R3 - 0x5C1C0200, // 0016 MOVE R7 R1 - 0x7C100600, // 0017 CALL R4 3 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: probe_async -********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(webserver), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(wifi), - /* K4 */ be_nested_str_weak(up), - /* K5 */ be_nested_str_weak(eth), - /* K6 */ be_nested_str_weak(current_cmd), - /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), - /* K8 */ be_nested_str_weak(tr), - /* K9 */ be_nested_str_weak(_X20), - /* K10 */ be_nested_str_weak(_X2B), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_nested_str_weak(port), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(begin), - }), - be_str_weak(probe_async), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x94100904, // 0005 GETIDX R4 R4 K4 - 0x74120006, // 0006 JMPT R4 #000E - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x8C100905, // 0008 GETMET R4 R4 K5 - 0x7C100200, // 0009 CALL R4 1 - 0x94100904, // 000A GETIDX R4 R4 K4 - 0x74120001, // 000B JMPT R4 #000E + ( &(const binstruction[15]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060000, // 0003 JMPF R1 #0005 + 0x80000200, // 0004 RET 0 + 0xB8060200, // 0005 GETNGBL R1 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x58100004, // 0008 LDCONST R4 K4 + 0x7C040600, // 0009 CALL R1 3 + 0x8C040105, // 000A GETMET R1 R0 K5 + 0x880C0106, // 000B GETMBR R3 R0 K6 0x4C100000, // 000C LDNIL R4 - 0x80040800, // 000D RET 1 R4 - 0x90020C01, // 000E SETMBR R0 K6 R1 - 0x8C100508, // 000F GETMET R4 R2 K8 - 0x5C180200, // 0010 MOVE R6 R1 - 0x581C0009, // 0011 LDCONST R7 K9 - 0x5820000A, // 0012 LDCONST R8 K10 - 0x7C100800, // 0013 CALL R4 4 - 0x00120E04, // 0014 ADD R4 K7 R4 - 0xB8160400, // 0015 GETNGBL R5 K2 - 0x8C140B0B, // 0016 GETMET R5 R5 K11 - 0x601C0018, // 0017 GETGBL R7 G24 - 0x5820000C, // 0018 LDCONST R8 K12 - 0x8824010D, // 0019 GETMBR R9 R0 K13 - 0x8828010E, // 001A GETMBR R10 R0 K14 - 0x5C2C0800, // 001B MOVE R11 R4 - 0x7C1C0800, // 001C CALL R7 4 - 0x5820000F, // 001D LDCONST R8 K15 - 0x7C140600, // 001E CALL R5 3 - 0x8C140110, // 001F GETMET R5 R0 K16 - 0x5C1C0800, // 0020 MOVE R7 R4 - 0x7C140400, // 0021 CALL R5 2 - 0x80000000, // 0022 RET 0 + 0x7C040600, // 000D CALL R1 3 + 0x80000000, // 000E RET 0 }) ) ); @@ -999,291 +1265,57 @@ be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */ /******************************************************************** -** Solidified function: set_info +** Solidified function: event_http_timeout ********************************************************************/ extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_set_info, /* name */ +be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ be_nested_proto( - 2, /* nstack */ - 2, /* argc */ + 10, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(info), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(current_cmd), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), + /* K4 */ be_nested_str_weak(http_status), + /* K5 */ be_nested_str_weak(phase), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_nested_str_weak(payload), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(dispatch_cb), }), - be_str_weak(set_info), + be_str_weak(event_http_timeout), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: dispatch_cb -********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(async_cb_map), - /* K2 */ be_nested_str_weak(keys), - /* K3 */ be_nested_str_weak(current_cmd), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(dispatch_cb), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x60100010, // 0001 GETGBL R4 G16 - 0x88140101, // 0002 GETMBR R5 R0 K1 - 0x8C140B02, // 0003 GETMET R5 R5 K2 - 0x7C140200, // 0004 CALL R5 1 - 0x7C100200, // 0005 CALL R4 1 - 0xA802000F, // 0006 EXBLK 0 #0017 - 0x5C140800, // 0007 MOVE R5 R4 - 0x7C140000, // 0008 CALL R5 0 - 0x88180101, // 0009 GETMBR R6 R0 K1 - 0x94180C05, // 000A GETIDX R6 R6 R5 - 0x881C0103, // 000B GETMBR R7 R0 K3 - 0x1C1C0C07, // 000C EQ R7 R6 R7 - 0x741E0002, // 000D JMPT R7 #0011 - 0x4C1C0000, // 000E LDNIL R7 - 0x1C1C0C07, // 000F EQ R7 R6 R7 - 0x781E0004, // 0010 JMPF R7 #0016 - 0x5C1C0A00, // 0011 MOVE R7 R5 - 0x5C200200, // 0012 MOVE R8 R1 - 0x5C240400, // 0013 MOVE R9 R2 - 0x88280103, // 0014 GETMBR R10 R0 K3 - 0x7C1C0600, // 0015 CALL R7 3 - 0x7001FFEF, // 0016 JMP #0007 - 0x58100004, // 0017 LDCONST R4 K4 - 0xAC100200, // 0018 CATCH R4 1 0 - 0xB0080000, // 0019 RAISE 2 R0 R0 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: change_schedule -********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_update_time_map), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(probe_next_timestamp_map), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(jitter), - }), - be_str_weak(change_schedule), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0007, // 0004 JMPF R3 #000D - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x980C0202, // 0006 SETIDX R3 R1 R2 - 0x880C0102, // 0007 GETMBR R3 R0 K2 - 0xB8120600, // 0008 GETNGBL R4 K3 - 0x8C100904, // 0009 GETMET R4 R4 K4 - 0x5C180400, // 000A MOVE R6 R2 - 0x7C100400, // 000B CALL R4 2 - 0x980C0204, // 000C SETIDX R3 R1 R4 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; -be_local_closure(class_Matter_HTTP_remote_init, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 4]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status_response), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status_response), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status_response), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - &be_class_Matter_HTTP_remote, - }), - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(probe_update_time_map), - /* K2 */ be_nested_str_weak(probe_next_timestamp_map), - /* K3 */ be_nested_str_weak(async_cb_map), - /* K4 */ be_nested_str_weak(current_cmd), - /* K5 */ be_nested_str_weak(reachable), - /* K6 */ be_nested_str_weak(init), - /* K7 */ be_nested_str_weak(info), - /* K8 */ be_nested_str_weak(add_schedule), - /* K9 */ be_nested_str_weak(UPDATE_CMD0), - /* K10 */ be_nested_str_weak(UPDATE_TIME), - /* K11 */ be_nested_str_weak(UPDATE_CMD2), - /* K12 */ be_nested_str_weak(UPDATE_CMD5), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60140013, // 0001 GETGBL R5 G19 - 0x7C140000, // 0002 CALL R5 0 - 0x90020205, // 0003 SETMBR R0 K1 R5 - 0x60140013, // 0004 GETGBL R5 G19 - 0x7C140000, // 0005 CALL R5 0 - 0x90020405, // 0006 SETMBR R0 K2 R5 - 0x60140013, // 0007 GETGBL R5 G19 - 0x7C140000, // 0008 CALL R5 0 - 0x90020605, // 0009 SETMBR R0 K3 R5 - 0x4C140000, // 000A LDNIL R5 - 0x90020805, // 000B SETMBR R0 K4 R5 - 0x50140000, // 000C LDBOOL R5 0 0 - 0x90020A05, // 000D SETMBR R0 K5 R5 - 0x60140003, // 000E GETGBL R5 G3 - 0x5C180000, // 000F MOVE R6 R0 - 0x7C140200, // 0010 CALL R5 1 - 0x8C140B06, // 0011 GETMET R5 R5 K6 - 0x5C1C0400, // 0012 MOVE R7 R2 - 0x5422004F, // 0013 LDINT R8 80 - 0x5C240600, // 0014 MOVE R9 R3 - 0x5C280800, // 0015 MOVE R10 R4 - 0x7C140A00, // 0016 CALL R5 5 - 0x60140013, // 0017 GETGBL R5 G19 - 0x7C140000, // 0018 CALL R5 0 - 0x90020E05, // 0019 SETMBR R0 K7 R5 - 0x88140100, // 001A GETMBR R5 R0 K0 - 0x7816000E, // 001B JMPF R5 #002B - 0x8C140108, // 001C GETMET R5 R0 K8 - 0x881C0109, // 001D GETMBR R7 R0 K9 - 0x8820010A, // 001E GETMBR R8 R0 K10 - 0x84240000, // 001F CLOSURE R9 P0 - 0x7C140800, // 0020 CALL R5 4 - 0x8C140108, // 0021 GETMET R5 R0 K8 - 0x881C010B, // 0022 GETMBR R7 R0 K11 - 0x8820010A, // 0023 GETMBR R8 R0 K10 - 0x84240001, // 0024 CLOSURE R9 P1 - 0x7C140800, // 0025 CALL R5 4 - 0x8C140108, // 0026 GETMET R5 R0 K8 - 0x881C010C, // 0027 GETMBR R7 R0 K12 - 0x8820010A, // 0028 GETMBR R8 R0 K10 - 0x84240002, // 0029 CLOSURE R9 P2 - 0x7C140800, // 002A CALL R5 4 - 0xA0000000, // 002B CLOSE R0 - 0x80000000, // 002C RET 0 + ( &(const binstruction[23]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060000, // 0003 JMPF R1 #0005 + 0x80000200, // 0004 RET 0 + 0xB8060200, // 0005 GETNGBL R1 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x600C0018, // 0007 GETGBL R3 G24 + 0x58100003, // 0008 LDCONST R4 K3 + 0x88140104, // 0009 GETMBR R5 R0 K4 + 0x88180105, // 000A GETMBR R6 R0 K5 + 0x881C0106, // 000B GETMBR R7 R0 K6 + 0x6020000C, // 000C GETGBL R8 G12 + 0x88240107, // 000D GETMBR R9 R0 K7 + 0x7C200200, // 000E CALL R8 1 + 0x7C0C0A00, // 000F CALL R3 5 + 0x58100008, // 0010 LDCONST R4 K8 + 0x7C040600, // 0011 CALL R1 3 + 0x8C040109, // 0012 GETMET R1 R0 K9 + 0x880C0104, // 0013 GETMBR R3 R0 K4 + 0x4C100000, // 0014 LDNIL R4 + 0x7C040600, // 0015 CALL R1 3 + 0x80000000, // 0016 RET 0 }) ) ); @@ -1297,39 +1329,57 @@ extern const bclass be_class_Matter_HTTP_async; be_local_class(Matter_HTTP_remote, 8, &be_class_Matter_HTTP_async, - be_nested_map(31, + be_nested_map(32, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(device_is_alive, -1), be_const_closure(class_Matter_HTTP_remote_device_is_alive_closure) }, - { be_const_key_weak(reachable, 21), be_const_var(5) }, - { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_HTTP_remote_parse_update_closure) }, - { be_const_key_weak(UPDATE_TIME, 7), be_const_int(5000) }, - { be_const_key_weak(web_last_seen, 30), be_const_closure(class_Matter_HTTP_remote_web_last_seen_closure) }, - { be_const_key_weak(call_sync, 4), be_const_closure(class_Matter_HTTP_remote_call_sync_closure) }, - { be_const_key_weak(change_schedule, 19), be_const_closure(class_Matter_HTTP_remote_change_schedule_closure) }, - { be_const_key_weak(device, -1), be_const_var(0) }, - { be_const_key_weak(UPDATE_CMD5, -1), be_nested_str_weak(Status_X205) }, - { be_const_key_weak(get_info, 17), be_const_closure(class_Matter_HTTP_remote_get_info_closure) }, - { be_const_key_weak(info, -1), be_const_var(7) }, - { be_const_key_weak(event_http_timeout, -1), be_const_closure(class_Matter_HTTP_remote_event_http_timeout_closure) }, - { be_const_key_weak(info_changed, -1), be_const_closure(class_Matter_HTTP_remote_info_changed_closure) }, { be_const_key_weak(add_schedule, -1), be_const_closure(class_Matter_HTTP_remote_add_schedule_closure) }, + { be_const_key_weak(event_http_timeout, 10), be_const_closure(class_Matter_HTTP_remote_event_http_timeout_closure) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(add_async_cb, 31), be_const_closure(class_Matter_HTTP_remote_add_async_cb_closure) }, + { be_const_key_weak(get_info, -1), be_const_closure(class_Matter_HTTP_remote_get_info_closure) }, + { be_const_key_weak(info, 21), be_const_var(7) }, + { be_const_key_weak(event_http_failed, -1), be_const_closure(class_Matter_HTTP_remote_event_http_failed_closure) }, { be_const_key_weak(UPDATE_TIME2, -1), be_const_int(300000) }, - { be_const_key_weak(scheduler, -1), be_const_closure(class_Matter_HTTP_remote_scheduler_closure) }, - { be_const_key_weak(parse_status_response, 13), be_const_closure(class_Matter_HTTP_remote_parse_status_response_closure) }, - { be_const_key_weak(probe_async, 18), be_const_closure(class_Matter_HTTP_remote_probe_async_closure) }, - { be_const_key_weak(probe_update_time_map, -1), be_const_var(1) }, - { be_const_key_weak(reachable_utc, -1), be_const_var(6) }, - { be_const_key_weak(probe_next_timestamp_map, -1), be_const_var(2) }, - { be_const_key_weak(async_cb_map, -1), be_const_var(3) }, - { be_const_key_weak(current_cmd, -1), be_const_var(4) }, - { be_const_key_weak(set_info, -1), be_const_closure(class_Matter_HTTP_remote_set_info_closure) }, - { be_const_key_weak(dispatch_cb, -1), be_const_closure(class_Matter_HTTP_remote_dispatch_cb_closure) }, - { be_const_key_weak(UPDATE_CMD2, -1), be_nested_str_weak(Status_X202) }, - { be_const_key_weak(UPDATE_CMD0, -1), be_nested_str_weak(Status) }, - { be_const_key_weak(event_http_failed, 3), be_const_closure(class_Matter_HTTP_remote_event_http_failed_closure) }, - { be_const_key_weak(add_async_cb, 6), be_const_closure(class_Matter_HTTP_remote_add_async_cb_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_HTTP_remote_init_closure) }, + { be_const_key_weak(set_info, 2), be_const_closure(class_Matter_HTTP_remote_set_info_closure) }, + { be_const_key_weak(scheduler, 27), be_const_closure(class_Matter_HTTP_remote_scheduler_closure) }, + { be_const_key_weak(web_last_seen, -1), be_const_closure(class_Matter_HTTP_remote_web_last_seen_closure) }, { be_const_key_weak(event_http_finished, -1), be_const_closure(class_Matter_HTTP_remote_event_http_finished_closure) }, + { be_const_key_weak(STATUS_PREFIX, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(14, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Status), + be_nested_str_weak(StatusPRM), + be_nested_str_weak(StatusFWR), + be_nested_str_weak(StatusLOG), + be_nested_str_weak(StatusMEM), + be_nested_str_weak(StatusNET), + be_nested_str_weak(StatusMQT), + be_nested_str_weak(StatusTIM), + be_const_nil(), + be_nested_str_weak(StatusPTH), + be_nested_str_weak(StatusSNS), + be_nested_str_weak(StatusSTS), + be_nested_str_weak(StatusSTK), + be_nested_str_weak(StatusSHT), + })) ) } )) }, + { be_const_key_weak(current_cmd, -1), be_const_var(4) }, + { be_const_key_weak(probe_async, 7), be_const_closure(class_Matter_HTTP_remote_probe_async_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_HTTP_remote_init_closure) }, + { be_const_key_weak(reachable, 1), be_const_var(5) }, + { be_const_key_weak(probe_next_timestamp_map, -1), be_const_var(2) }, + { be_const_key_weak(change_schedule, 15), be_const_closure(class_Matter_HTTP_remote_change_schedule_closure) }, + { be_const_key_weak(device, 18), be_const_var(0) }, + { be_const_key_weak(async_cb_map, -1), be_const_var(3) }, + { be_const_key_weak(reachable_utc, -1), be_const_var(6) }, + { be_const_key_weak(parse_status_response_and_call_method, -1), be_const_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method_closure) }, + { be_const_key_weak(UPDATE_CMD2, -1), be_nested_str_weak(Status_X202) }, + { be_const_key_weak(probe_update_time_map, -1), be_const_var(1) }, + { be_const_key_weak(call_sync, -1), be_const_closure(class_Matter_HTTP_remote_call_sync_closure) }, + { be_const_key_weak(device_is_alive, 9), be_const_closure(class_Matter_HTTP_remote_device_is_alive_closure) }, + { be_const_key_weak(info_changed, -1), be_const_closure(class_Matter_HTTP_remote_info_changed_closure) }, + { be_const_key_weak(parse_status_http, 6), be_const_closure(class_Matter_HTTP_remote_parse_status_http_closure) }, + { be_const_key_weak(dispatch_cb, 3), be_const_closure(class_Matter_HTTP_remote_dispatch_cb_closure) }, + { be_const_key_weak(UPDATE_CMD5, -1), be_nested_str_weak(Status_X205) }, + { be_const_key_weak(UPDATE_CMD0, -1), be_nested_str_weak(Status) }, })), be_str_weak(Matter_HTTP_remote) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index e22e8111a..4321835ea 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -7,58 +7,25 @@ extern const bclass be_class_Matter_Plugin; /******************************************************************** -** Solidified function: contains_cluster +** Solidified function: invoke_request ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ +be_local_closure(class_Matter_Plugin_invoke_request, /* name */ be_nested_proto( 5, /* nstack */ - 2, /* argc */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), - }), - be_str_weak(contains_cluster), + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: append_state_json -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_append_state_json, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(), - }), - be_str_weak(append_state_json), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80060000, // 0000 RET 1 K0 + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 }) ) ); @@ -124,10 +91,53 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ /******************************************************************** -** Solidified function: timed_request +** Solidified function: ack_request ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_timed_request, /* name */ +be_local_closure(class_Matter_Plugin_ack_request, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(msg), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(im), + /* K4 */ be_nested_str_weak(send_ack_now), + }), + be_str_weak(ack_request), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x200C0403, // 0002 NE R3 R2 R3 + 0x780E0005, // 0003 JMPF R3 #000A + 0x880C0101, // 0004 GETMBR R3 R0 K1 + 0x880C0702, // 0005 GETMBR R3 R3 K2 + 0x880C0703, // 0006 GETMBR R3 R3 K3 + 0x8C0C0704, // 0007 GETMET R3 R3 K4 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x4C0C0000, // 000A LDNIL R3 + 0x90060003, // 000B SETMBR R1 K0 R3 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_write_attribute, /* name */ be_nested_proto( 5, /* nstack */ 4, /* argc */ @@ -138,7 +148,7 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ &be_class_Matter_Plugin, 0, /* has constants */ NULL, /* no const */ - be_str_weak(timed_request), + be_str_weak(write_attribute), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x4C100000, // 0000 LDNIL R4 @@ -150,24 +160,117 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ /******************************************************************** -** Solidified function: parse_sensors +** Solidified function: consolidate_update_commands ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ +be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ be_nested_proto( 2, /* nstack */ - 2, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_sensors), + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), + }), + be_str_weak(consolidate_update_commands), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: append_state_json +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_append_state_json, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(), + }), + be_str_weak(append_state_json), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + 0x80060000, // 0000 RET 1 K0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_every_250ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(update_next), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(jitter), + /* K3 */ be_nested_str_weak(UPDATE_TIME), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(time_reached), + /* K6 */ be_nested_str_weak(tick), + /* K7 */ be_nested_str_weak(device), + /* K8 */ be_nested_str_weak(update_shadow), + /* K9 */ be_nested_str_weak(millis), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060005, // 0003 JMPF R1 #000A + 0xB8060200, // 0004 GETNGBL R1 K1 + 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x70020010, // 0009 JMP #001B + 0xB8060800, // 000A GETNGBL R1 K4 + 0x8C040305, // 000B GETMET R1 R1 K5 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x7C040400, // 000D CALL R1 2 + 0x7806000B, // 000E JMPF R1 #001B + 0x88040106, // 000F GETMBR R1 R0 K6 + 0x88080107, // 0010 GETMBR R2 R0 K7 + 0x88080506, // 0011 GETMBR R2 R2 K6 + 0x20040202, // 0012 NE R1 R1 R2 + 0x78060001, // 0013 JMPF R1 #0016 + 0x8C040108, // 0014 GETMET R1 R0 K8 + 0x7C040200, // 0015 CALL R1 1 + 0xB8060800, // 0016 GETNGBL R1 K4 + 0x8C040309, // 0017 GETMET R1 R1 K9 + 0x880C0103, // 0018 GETMBR R3 R0 K3 + 0x7C040400, // 0019 CALL R1 2 + 0x90020001, // 001A SETMBR R0 K0 R1 + 0x80000000, // 001B RET 0 }) ) ); @@ -218,6 +321,392 @@ be_local_closure(class_Matter_Plugin_has, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: update_shadow_lazy +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(update_shadow_lazy), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88080500, // 0002 GETMBR R2 R2 K0 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060004, // 0004 JMPF R1 #000A + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x7C040200, // 0006 CALL R1 1 + 0x88040101, // 0007 GETMBR R1 R0 K1 + 0x88040300, // 0008 GETMBR R1 R1 K0 + 0x90020001, // 0009 SETMBR R0 K0 R1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_name +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_set_name, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(node_label), + /* K1 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(set_name), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x54120038, // 0004 LDINT R4 57 + 0x54160004, // 0005 LDINT R5 5 + 0x7C080600, // 0006 CALL R2 3 + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040008, // 0000 GETGBL R1 G8 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_shadow, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x88040300, // 0001 GETMBR R1 R1 K0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: timed_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_timed_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(timed_request), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(clusters), + /* K3 */ be_nested_str_weak(consolidate_clusters), + /* K4 */ be_nested_str_weak(parse_configuration), + /* K5 */ be_nested_str_weak(node_label), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x8C100103, // 0002 GETMET R4 R0 K3 + 0x7C100200, // 0003 CALL R4 1 + 0x90020404, // 0004 SETMBR R0 K2 R4 + 0x8C100104, // 0005 GETMET R4 R0 K4 + 0x5C180600, // 0006 MOVE R6 R3 + 0x7C100400, // 0007 CALL R4 2 + 0x8C100706, // 0008 GETMET R4 R3 K6 + 0x58180007, // 0009 LDCONST R6 K7 + 0x581C0008, // 000A LDCONST R7 K8 + 0x7C100600, // 000B CALL R4 3 + 0x90020A04, // 000C SETMBR R0 K5 R4 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_local_device +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_is_local_device, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + }), + be_str_weak(is_local_device), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x50040001, // 0002 LDBOOL R1 0 1 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_string_to_conf +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(ARG_TYPE), + }), + be_str_weak(ui_string_to_conf), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x780A0004, // 0003 JMPF R2 #0009 + 0x78120003, // 0004 JMPF R4 #0009 + 0x5C180A00, // 0005 MOVE R6 R5 + 0x5C1C0400, // 0006 MOVE R7 R2 + 0x7C180200, // 0007 CALL R6 1 + 0x98040806, // 0008 SETIDX R1 R4 R6 + 0x80040200, // 0009 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_cluster_list_sorted +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(k2l), + /* K2 */ be_nested_str_weak(clusters), + }), + be_str_weak(get_cluster_list_sorted), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_conf_to_string +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(ui_conf_to_string), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x780E0006, // 0002 JMPF R3 #000A + 0x60100008, // 0003 GETGBL R4 G8 + 0x8C140302, // 0004 GETMET R5 R1 K2 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200003, // 0006 LDCONST R8 K3 + 0x7C140600, // 0007 CALL R5 3 + 0x7C100200, // 0008 CALL R4 1 + 0x70020000, // 0009 JMP #000B + 0x58100003, // 000A LDCONST R4 K3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(attribute_updated), + /* K2 */ be_nested_str_weak(endpoint), + }), + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ @@ -243,6 +732,434 @@ be_local_closure(class_Matter_Plugin_update_virtual, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: _parse_update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ + be_nested_proto( + 12, /* nstack */ + 7, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(_parse_update_virtual), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x5C240400, // 0001 MOVE R9 R2 + 0x7C1C0400, // 0002 CALL R7 2 + 0x4C200000, // 0003 LDNIL R8 + 0x20200E08, // 0004 NE R8 R7 R8 + 0x7822000A, // 0005 JMPF R8 #0011 + 0x5C200800, // 0006 MOVE R8 R4 + 0x5C240E00, // 0007 MOVE R9 R7 + 0x7C200200, // 0008 CALL R8 1 + 0x5C1C1000, // 0009 MOVE R7 R8 + 0x20200E03, // 000A NE R8 R7 R3 + 0x78220003, // 000B JMPF R8 #0010 + 0x8C200101, // 000C GETMET R8 R0 K1 + 0x5C280A00, // 000D MOVE R10 R5 + 0x5C2C0C00, // 000E MOVE R11 R6 + 0x7C200600, // 000F CALL R8 3 + 0x80040E00, // 0010 RET 1 R7 + 0x80040600, // 0011 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: consolidate_clusters +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(CLUSTERS), + }), + be_str_weak(consolidate_clusters), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_name +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_name, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(node_label), + }), + be_str_weak(get_name), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + }), + be_str_weak(get_endpoint), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_event +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(subscribe_event), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_event +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_read_event, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(read_event), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_sensors +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(parse_sensors), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_attribute_list +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), + }), + be_str_weak(get_attribute_list), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140012, // 0003 GETGBL R5 G18 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: publish_command +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_publish_command, /* name */ + be_nested_proto( + 16, /* nstack */ + 7, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K2 */ be_nested_str_weak(dump), + /* K3 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(publish_command), + /* K6 */ be_nested_str_weak(MtrReceived), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(node_label), + }), + be_str_weak(publish_command), + &be_const_str_solidified, + ( &(const binstruction[46]) { /* code */ + 0xA41E0000, // 0000 IMPORT R7 K0 + 0x60200018, // 0001 GETGBL R8 G24 + 0x58240001, // 0002 LDCONST R9 K1 + 0x8C280F02, // 0003 GETMET R10 R7 K2 + 0x5C300200, // 0004 MOVE R12 R1 + 0x7C280400, // 0005 CALL R10 2 + 0x8C2C0F02, // 0006 GETMET R11 R7 K2 + 0x5C340400, // 0007 MOVE R13 R2 + 0x7C2C0400, // 0008 CALL R11 2 + 0x7C200600, // 0009 CALL R8 3 + 0x4C240000, // 000A LDNIL R9 + 0x20240609, // 000B NE R9 R3 R9 + 0x7826000A, // 000C JMPF R9 #0018 + 0x60240018, // 000D GETGBL R9 G24 + 0x58280003, // 000E LDCONST R10 K3 + 0x5C2C1000, // 000F MOVE R11 R8 + 0x8C300F02, // 0010 GETMET R12 R7 K2 + 0x5C380600, // 0011 MOVE R14 R3 + 0x7C300400, // 0012 CALL R12 2 + 0x8C340F02, // 0013 GETMET R13 R7 K2 + 0x5C3C0800, // 0014 MOVE R15 R4 + 0x7C340400, // 0015 CALL R13 2 + 0x7C240800, // 0016 CALL R9 4 + 0x5C201200, // 0017 MOVE R8 R9 + 0x4C240000, // 0018 LDNIL R9 + 0x20240A09, // 0019 NE R9 R5 R9 + 0x7826000A, // 001A JMPF R9 #0026 + 0x60240018, // 001B GETGBL R9 G24 + 0x58280003, // 001C LDCONST R10 K3 + 0x5C2C1000, // 001D MOVE R11 R8 + 0x8C300F02, // 001E GETMET R12 R7 K2 + 0x5C380A00, // 001F MOVE R14 R5 + 0x7C300400, // 0020 CALL R12 2 + 0x8C340F02, // 0021 GETMET R13 R7 K2 + 0x5C3C0C00, // 0022 MOVE R15 R6 + 0x7C340400, // 0023 CALL R13 2 + 0x7C240800, // 0024 CALL R9 4 + 0x5C201200, // 0025 MOVE R8 R9 + 0xB8260800, // 0026 GETNGBL R9 K4 + 0x8C241305, // 0027 GETMET R9 R9 K5 + 0x582C0006, // 0028 LDCONST R11 K6 + 0x88300107, // 0029 GETMBR R12 R0 K7 + 0x88340108, // 002A GETMBR R13 R0 K8 + 0x5C381000, // 002B MOVE R14 R8 + 0x7C240A00, // 002C CALL R9 5 + 0x80000000, // 002D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), + }), + be_str_weak(contains_attribute), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x7812000C, // 0006 JMPF R4 #0014 + 0x58100002, // 0007 LDCONST R4 K2 + 0x6014000C, // 0008 GETGBL R5 G12 + 0x5C180600, // 0009 MOVE R6 R3 + 0x7C140200, // 000A CALL R5 1 + 0x14140805, // 000B LT R5 R4 R5 + 0x78160006, // 000C JMPF R5 #0014 + 0x94140604, // 000D GETIDX R5 R3 R4 + 0x1C140A02, // 000E EQ R5 R5 R2 + 0x78160001, // 000F JMPF R5 #0012 + 0x50140200, // 0010 LDBOOL R5 1 0 + 0x80040A00, // 0011 RET 1 R5 + 0x00100903, // 0012 ADD R4 R4 K3 + 0x7001FFF3, // 0013 JMP #0008 + 0x50100000, // 0014 LDBOOL R4 0 0 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains_cluster +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), + }), + be_str_weak(contains_cluster), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -451,456 +1368,6 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: ui_conf_to_string -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(ui_conf_to_string), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x780E0006, // 0002 JMPF R3 #000A - 0x60100008, // 0003 GETGBL R4 G8 - 0x8C140302, // 0004 GETMET R5 R1 K2 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200003, // 0006 LDCONST R8 K3 - 0x7C140600, // 0007 CALL R5 3 - 0x7C100200, // 0008 CALL R4 1 - 0x70020000, // 0009 JMP #000B - 0x58100003, // 000A LDCONST R4 K3 - 0x80040800, // 000B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ack_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ack_request, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(msg), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(im), - /* K4 */ be_nested_str_weak(send_ack_now), - }), - be_str_weak(ack_request), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x200C0403, // 0002 NE R3 R2 R3 - 0x780E0005, // 0003 JMPF R3 #000A - 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x880C0702, // 0005 GETMBR R3 R3 K2 - 0x880C0703, // 0006 GETMBR R3 R3 K3 - 0x8C0C0704, // 0007 GETMET R3 R3 K4 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x4C0C0000, // 000A LDNIL R3 - 0x90060003, // 000B SETMBR R1 K0 R3 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: write_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_write_attribute, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(write_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_cluster_list_sorted -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(k2l), - /* K2 */ be_nested_str_weak(clusters), - }), - be_str_weak(get_cluster_list_sorted), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(clusters), - /* K3 */ be_nested_str_weak(consolidate_clusters), - /* K4 */ be_nested_str_weak(parse_configuration), - /* K5 */ be_nested_str_weak(node_label), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x8C100103, // 0002 GETMET R4 R0 K3 - 0x7C100200, // 0003 CALL R4 1 - 0x90020404, // 0004 SETMBR R0 K2 R4 - 0x8C100104, // 0005 GETMET R4 R0 K4 - 0x5C180600, // 0006 MOVE R6 R3 - 0x7C100400, // 0007 CALL R4 2 - 0x8C100706, // 0008 GETMET R4 R3 K6 - 0x58180007, // 0009 LDCONST R6 K7 - 0x581C0008, // 000A LDCONST R7 K8 - 0x7C100600, // 000B CALL R4 3 - 0x90020A04, // 000C SETMBR R0 K5 R4 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ui_string_to_conf -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(ARG_TYPE), - }), - be_str_weak(ui_string_to_conf), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x780A0004, // 0003 JMPF R2 #0009 - 0x78120003, // 0004 JMPF R4 #0009 - 0x5C180A00, // 0005 MOVE R6 R5 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C180200, // 0007 CALL R6 1 - 0x98040806, // 0008 SETIDX R1 R4 R6 - 0x80040200, // 0009 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_every_250ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(update_next), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(jitter), - /* K3 */ be_nested_str_weak(UPDATE_TIME), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - /* K6 */ be_nested_str_weak(tick), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(update_shadow), - /* K9 */ be_nested_str_weak(millis), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060005, // 0003 JMPF R1 #000A - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x90020001, // 0008 SETMBR R0 K0 R1 - 0x70020010, // 0009 JMP #001B - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x7C040400, // 000D CALL R1 2 - 0x7806000B, // 000E JMPF R1 #001B - 0x88040106, // 000F GETMBR R1 R0 K6 - 0x88080107, // 0010 GETMBR R2 R0 K7 - 0x88080506, // 0011 GETMBR R2 R2 K6 - 0x20040202, // 0012 NE R1 R1 R2 - 0x78060001, // 0013 JMPF R1 #0016 - 0x8C040108, // 0014 GETMET R1 R0 K8 - 0x7C040200, // 0015 CALL R1 1 - 0xB8060800, // 0016 GETNGBL R1 K4 - 0x8C040309, // 0017 GETMET R1 R1 K9 - 0x880C0103, // 0018 GETMBR R3 R0 K3 - 0x7C040400, // 0019 CALL R1 2 - 0x90020001, // 001A SETMBR R0 K0 R1 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_event -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(subscribe_event), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_attribute_list -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), - }), - be_str_weak(get_attribute_list), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140012, // 0003 GETGBL R5 G18 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _parse_update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ - be_nested_proto( - 12, /* nstack */ - 7, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(_parse_update_virtual), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C1C0300, // 0000 GETMET R7 R1 K0 - 0x5C240400, // 0001 MOVE R9 R2 - 0x7C1C0400, // 0002 CALL R7 2 - 0x4C200000, // 0003 LDNIL R8 - 0x20200E08, // 0004 NE R8 R7 R8 - 0x7822000A, // 0005 JMPF R8 #0011 - 0x5C200800, // 0006 MOVE R8 R4 - 0x5C240E00, // 0007 MOVE R9 R7 - 0x7C200200, // 0008 CALL R8 1 - 0x5C1C1000, // 0009 MOVE R7 R8 - 0x20200E03, // 000A NE R8 R7 R3 - 0x78220003, // 000B JMPF R8 #0010 - 0x8C200101, // 000C GETMET R8 R0 K1 - 0x5C280A00, // 000D MOVE R10 R5 - 0x5C2C0C00, // 000E MOVE R11 R6 - 0x7C200600, // 000F CALL R8 3 - 0x80040E00, // 0010 RET 1 R7 - 0x80040600, // 0011 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - }), - be_str_weak(get_endpoint), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: subscribe_attribute ********************************************************************/ @@ -927,513 +1394,59 @@ be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: contains_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - }), - be_str_weak(contains_attribute), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x20100604, // 0005 NE R4 R3 R4 - 0x7812000C, // 0006 JMPF R4 #0014 - 0x58100002, // 0007 LDCONST R4 K2 - 0x6014000C, // 0008 GETGBL R5 G12 - 0x5C180600, // 0009 MOVE R6 R3 - 0x7C140200, // 000A CALL R5 1 - 0x14140805, // 000B LT R5 R4 R5 - 0x78160006, // 000C JMPF R5 #0014 - 0x94140604, // 000D GETIDX R5 R3 R4 - 0x1C140A02, // 000E EQ R5 R5 R2 - 0x78160001, // 000F JMPF R5 #0012 - 0x50140200, // 0010 LDBOOL R5 1 0 - 0x80040A00, // 0011 RET 1 R5 - 0x00100903, // 0012 ADD R4 R4 K3 - 0x7001FFF3, // 0013 JMP #0008 - 0x50100000, // 0014 LDBOOL R4 0 0 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: consolidate_update_commands -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), - }), - be_str_weak(consolidate_update_commands), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040008, // 0000 GETGBL R1 G8 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_name -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_name, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), - }), - be_str_weak(get_name), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: publish_command -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_publish_command, /* name */ - be_nested_proto( - 16, /* nstack */ - 7, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K2 */ be_nested_str_weak(dump), - /* K3 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(publish_command), - /* K6 */ be_nested_str_weak(MtrReceived), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(node_label), - }), - be_str_weak(publish_command), - &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ - 0xA41E0000, // 0000 IMPORT R7 K0 - 0x60200018, // 0001 GETGBL R8 G24 - 0x58240001, // 0002 LDCONST R9 K1 - 0x8C280F02, // 0003 GETMET R10 R7 K2 - 0x5C300200, // 0004 MOVE R12 R1 - 0x7C280400, // 0005 CALL R10 2 - 0x8C2C0F02, // 0006 GETMET R11 R7 K2 - 0x5C340400, // 0007 MOVE R13 R2 - 0x7C2C0400, // 0008 CALL R11 2 - 0x7C200600, // 0009 CALL R8 3 - 0x4C240000, // 000A LDNIL R9 - 0x20240609, // 000B NE R9 R3 R9 - 0x7826000A, // 000C JMPF R9 #0018 - 0x60240018, // 000D GETGBL R9 G24 - 0x58280003, // 000E LDCONST R10 K3 - 0x5C2C1000, // 000F MOVE R11 R8 - 0x8C300F02, // 0010 GETMET R12 R7 K2 - 0x5C380600, // 0011 MOVE R14 R3 - 0x7C300400, // 0012 CALL R12 2 - 0x8C340F02, // 0013 GETMET R13 R7 K2 - 0x5C3C0800, // 0014 MOVE R15 R4 - 0x7C340400, // 0015 CALL R13 2 - 0x7C240800, // 0016 CALL R9 4 - 0x5C201200, // 0017 MOVE R8 R9 - 0x4C240000, // 0018 LDNIL R9 - 0x20240A09, // 0019 NE R9 R5 R9 - 0x7826000A, // 001A JMPF R9 #0026 - 0x60240018, // 001B GETGBL R9 G24 - 0x58280003, // 001C LDCONST R10 K3 - 0x5C2C1000, // 001D MOVE R11 R8 - 0x8C300F02, // 001E GETMET R12 R7 K2 - 0x5C380A00, // 001F MOVE R14 R5 - 0x7C300400, // 0020 CALL R12 2 - 0x8C340F02, // 0021 GETMET R13 R7 K2 - 0x5C3C0C00, // 0022 MOVE R15 R6 - 0x7C340400, // 0023 CALL R13 2 - 0x7C240800, // 0024 CALL R9 4 - 0x5C201200, // 0025 MOVE R8 R9 - 0xB8260800, // 0026 GETNGBL R9 K4 - 0x8C241305, // 0027 GETMET R9 R9 K5 - 0x582C0006, // 0028 LDCONST R11 K6 - 0x88300107, // 0029 GETMBR R12 R0 K7 - 0x88340108, // 002A GETMBR R13 R0 K8 - 0x5C381000, // 002B MOVE R14 R8 - 0x7C240A00, // 002C CALL R9 5 - 0x80000000, // 002D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_name -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_set_name, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), - /* K1 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(set_name), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0003, // 0002 JMPF R2 #0007 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x54120038, // 0004 LDINT R4 57 - 0x54160004, // 0005 LDINT R5 5 - 0x7C080600, // 0006 CALL R2 3 - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow_lazy -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(update_shadow_lazy), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x88080500, // 0002 GETMBR R2 R2 K0 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060004, // 0004 JMPF R1 #000A - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x7C040200, // 0006 CALL R1 1 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88040300, // 0008 GETMBR R1 R1 K0 - 0x90020001, // 0009 SETMBR R0 K0 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x88040300, // 0001 GETMBR R1 R1 K0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_invoke_request, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attribute_updated -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(attribute_updated), - /* K2 */ be_nested_str_weak(endpoint), - }), - be_str_weak(attribute_updated), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_local_device -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_is_local_device, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(is_local_device), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x50040200, // 0000 LDBOOL R1 1 0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: consolidate_clusters -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(CLUSTERS), - }), - be_str_weak(consolidate_clusters), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_event -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_read_event, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(read_event), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Plugin ********************************************************************/ be_local_class(Matter_Plugin, 6, NULL, - be_nested_map(51, + be_nested_map(52, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, - { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, - { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, - { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) }, - { be_const_key_weak(read_event, 38), be_const_closure(class_Matter_Plugin_read_event_closure) }, - { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, - { be_const_key_weak(consolidate_clusters, -1), be_const_closure(class_Matter_Plugin_consolidate_clusters_closure) }, - { be_const_key_weak(has, -1), be_const_closure(class_Matter_Plugin_has_closure) }, - { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, - { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, - { be_const_key_weak(UPDATE_TIME, 0), be_const_int(5000) }, + { be_const_key_weak(subscribe_attribute, 34), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, + { be_const_key_weak(state_json, 38), be_const_closure(class_Matter_Plugin_state_json_closure) }, + { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, + { be_const_key_weak(device, -1), be_const_var(1) }, { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, - { be_const_key_weak(get_endpoint, 2), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, - { be_const_key_weak(ui_conf_to_string, 24), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, - { be_const_key_weak(UPDATE_COMMANDS, 48), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, + { be_const_key_weak(is_local_device, 2), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, + { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(BRIDGE, -1), be_const_bool(0) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(CLUSTERS, 51), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(0, ( (struct bvalue*) &(const bvalue[]) { })) ) } )) }, - { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, - { be_const_key_weak(every_250ms, 27), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, - { be_const_key_weak(device, -1), be_const_var(1) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak() }, - { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, + { be_const_key_weak(every_250ms, 0), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, + { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, { be_const_key_weak(get_attribute_list, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_closure) }, - { be_const_key_weak(write_attribute, 39), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, - { be_const_key_weak(contains_attribute, -1), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, - { be_const_key_weak(consolidate_update_commands, 12), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, - { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, - { be_const_key_weak(contains_cluster, 23), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, - { be_const_key_weak(update_next, -1), be_const_var(0) }, + { be_const_key_weak(has, 5), be_const_closure(class_Matter_Plugin_has_closure) }, { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) }, - { be_const_key_weak(get_name, 30), be_const_closure(class_Matter_Plugin_get_name_closure) }, - { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, - { be_const_key_weak(TYPE, 34), be_nested_str_weak() }, - { be_const_key_weak(tick, -1), be_const_var(4) }, - { be_const_key_weak(CLUSTER_REVISIONS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, + { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, + { be_const_key_weak(endpoint, 6), be_const_var(2) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, + { be_const_key_weak(clusters, -1), be_const_var(3) }, + { be_const_key_weak(VIRTUAL, 9), be_const_bool(0) }, + { be_const_key_weak(CLUSTER_REVISIONS, 23), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(25, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, -1), be_const_int(5) }, @@ -1462,49 +1475,42 @@ be_local_class(Matter_Plugin, { be_const_key_int(6, -1), be_const_int(5) }, { be_const_key_int(1024, -1), be_const_int(3) }, })) ) } )) }, - { be_const_key_weak(clusters, -1), be_const_var(3) }, - { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_nil() }, - })) ) } )) }, + { be_const_key_weak(consolidate_update_commands, 17), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, + { be_const_key_weak(ui_conf_to_string, -1), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, + { be_const_key_weak(_parse_update_virtual, 21), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, + { be_const_key_weak(update_virtual, 36), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, - { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, - { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, - { be_const_key_weak(_parse_update_virtual, 47), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, - { be_const_key_weak(parse_sensors, 19), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, - { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) }, - { be_const_key_weak(DISPLAY_NAME, 10), be_nested_str_weak() }, - { be_const_key_weak(node_label, 9), be_const_var(5) }, { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, - { be_const_key_weak(endpoint, -1), be_const_var(2) }, + { be_const_key_weak(invoke_request, 27), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, + { be_const_key_weak(node_label, -1), be_const_var(5) }, + { be_const_key_weak(update_shadow, 30), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, + { be_const_key_weak(consolidate_clusters, -1), be_const_closure(class_Matter_Plugin_consolidate_clusters_closure) }, + { be_const_key_weak(get_name, -1), be_const_closure(class_Matter_Plugin_get_name_closure) }, + { be_const_key_weak(update_next, -1), be_const_var(0) }, + { be_const_key_weak(get_endpoint, -1), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(258, -1), be_const_int(5) }, { be_const_key_int(49, -1), be_const_int(4) }, })) ) } )) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak() }, + { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak() }, + { be_const_key_weak(read_event, -1), be_const_closure(class_Matter_Plugin_read_event_closure) }, + { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(29, -1), be_const_nil() }, + })) ) } )) }, + { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, + { be_const_key_weak(DISPLAY_NAME, 14), be_nested_str_weak() }, + { be_const_key_weak(ui_string_to_conf, 13), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, + { be_const_key_weak(contains_attribute, -1), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, + { be_const_key_weak(tick, -1), be_const_var(4) }, + { be_const_key_weak(contains_cluster, -1), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, + { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, })), be_str_weak(Matter_Plugin) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index 0cb5a26f7..7c40c1080 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -4,8 +4,747 @@ \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_GetOptionReader; + +/******************************************************************** +** Solidified function: getoption +********************************************************************/ +extern const bclass be_class_GetOptionReader; +be_local_closure(class_GetOptionReader_getoption, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_GetOptionReader, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(flag), + /* K1 */ be_nested_str_weak(getbits), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(flag2), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(flag3), + /* K6 */ be_nested_str_weak(flag4), + /* K7 */ be_nested_str_weak(flag5), + /* K8 */ be_nested_str_weak(flag6), + }), + be_str_weak(getoption), + &be_const_str_solidified, + ( &(const binstruction[65]) { /* code */ + 0x540A001F, // 0000 LDINT R2 32 + 0x14080202, // 0001 LT R2 R1 R2 + 0x780A0006, // 0002 JMPF R2 #000A + 0x88080100, // 0003 GETMBR R2 R0 K0 + 0x8C080501, // 0004 GETMET R2 R2 K1 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140002, // 0006 LDCONST R5 K2 + 0x7C080600, // 0007 CALL R2 3 + 0x80040400, // 0008 RET 1 R2 + 0x70020035, // 0009 JMP #0040 + 0x540A0031, // 000A LDINT R2 50 + 0x14080202, // 000B LT R2 R1 R2 + 0x780A0007, // 000C JMPF R2 #0015 + 0x88080103, // 000D GETMBR R2 R0 K3 + 0x8C080504, // 000E GETMET R2 R2 K4 + 0x5412001F, // 000F LDINT R4 32 + 0x04100204, // 0010 SUB R4 R1 R4 + 0x58140002, // 0011 LDCONST R5 K2 + 0x7C080600, // 0012 CALL R2 3 + 0x80040400, // 0013 RET 1 R2 + 0x7002002A, // 0014 JMP #0040 + 0x540A0051, // 0015 LDINT R2 82 + 0x14080202, // 0016 LT R2 R1 R2 + 0x780A0007, // 0017 JMPF R2 #0020 + 0x88080105, // 0018 GETMBR R2 R0 K5 + 0x8C080501, // 0019 GETMET R2 R2 K1 + 0x54120031, // 001A LDINT R4 50 + 0x04100204, // 001B SUB R4 R1 R4 + 0x58140002, // 001C LDCONST R5 K2 + 0x7C080600, // 001D CALL R2 3 + 0x80040400, // 001E RET 1 R2 + 0x7002001F, // 001F JMP #0040 + 0x540A0071, // 0020 LDINT R2 114 + 0x14080202, // 0021 LT R2 R1 R2 + 0x780A0007, // 0022 JMPF R2 #002B + 0x88080106, // 0023 GETMBR R2 R0 K6 + 0x8C080501, // 0024 GETMET R2 R2 K1 + 0x54120051, // 0025 LDINT R4 82 + 0x04100204, // 0026 SUB R4 R1 R4 + 0x58140002, // 0027 LDCONST R5 K2 + 0x7C080600, // 0028 CALL R2 3 + 0x80040400, // 0029 RET 1 R2 + 0x70020014, // 002A JMP #0040 + 0x540A0091, // 002B LDINT R2 146 + 0x14080202, // 002C LT R2 R1 R2 + 0x780A0007, // 002D JMPF R2 #0036 + 0x88080107, // 002E GETMBR R2 R0 K7 + 0x8C080501, // 002F GETMET R2 R2 K1 + 0x54120071, // 0030 LDINT R4 114 + 0x04100204, // 0031 SUB R4 R1 R4 + 0x58140002, // 0032 LDCONST R5 K2 + 0x7C080600, // 0033 CALL R2 3 + 0x80040400, // 0034 RET 1 R2 + 0x70020009, // 0035 JMP #0040 + 0x540A00B1, // 0036 LDINT R2 178 + 0x14080202, // 0037 LT R2 R1 R2 + 0x780A0006, // 0038 JMPF R2 #0040 + 0x88080108, // 0039 GETMBR R2 R0 K8 + 0x8C080501, // 003A GETMET R2 R2 K1 + 0x54120091, // 003B LDINT R4 146 + 0x04100204, // 003C SUB R4 R1 R4 + 0x58140002, // 003D LDCONST R5 K2 + 0x7C080600, // 003E CALL R2 3 + 0x80040400, // 003F RET 1 R2 + 0x80000000, // 0040 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_GetOptionReader; +be_local_closure(class_GetOptionReader_init, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_GetOptionReader, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(value_error), + /* K1 */ be_nested_str_weak(invalid_X20json), + /* K2 */ be_nested_str_weak(SetOption), + /* K3 */ be_nested_str_weak(flag), + /* K4 */ be_nested_str_weak(fromhex), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(reverse), + /* K7 */ be_nested_str_weak(flag2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(flag3), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(flag4), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str_weak(flag5), + /* K14 */ be_nested_str_weak(flag6), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0xB0060101, // 0003 RAISE 1 K0 K1 + 0x94080302, // 0004 GETIDX R2 R1 K2 + 0x600C0015, // 0005 GETGBL R3 G21 + 0x7C0C0000, // 0006 CALL R3 0 + 0x8C0C0704, // 0007 GETMET R3 R3 K4 + 0x94140505, // 0008 GETIDX R5 R2 K5 + 0x7C0C0400, // 0009 CALL R3 2 + 0x8C0C0706, // 000A GETMET R3 R3 K6 + 0x7C0C0200, // 000B CALL R3 1 + 0x90020603, // 000C SETMBR R0 K3 R3 + 0x600C0015, // 000D GETGBL R3 G21 + 0x7C0C0000, // 000E CALL R3 0 + 0x8C0C0704, // 000F GETMET R3 R3 K4 + 0x94140508, // 0010 GETIDX R5 R2 K8 + 0x7C0C0400, // 0011 CALL R3 2 + 0x90020E03, // 0012 SETMBR R0 K7 R3 + 0x600C0015, // 0013 GETGBL R3 G21 + 0x7C0C0000, // 0014 CALL R3 0 + 0x8C0C0704, // 0015 GETMET R3 R3 K4 + 0x9414050A, // 0016 GETIDX R5 R2 K10 + 0x7C0C0400, // 0017 CALL R3 2 + 0x8C0C0706, // 0018 GETMET R3 R3 K6 + 0x7C0C0200, // 0019 CALL R3 1 + 0x90021203, // 001A SETMBR R0 K9 R3 + 0x600C0015, // 001B GETGBL R3 G21 + 0x7C0C0000, // 001C CALL R3 0 + 0x8C0C0704, // 001D GETMET R3 R3 K4 + 0x9414050C, // 001E GETIDX R5 R2 K12 + 0x7C0C0400, // 001F CALL R3 2 + 0x8C0C0706, // 0020 GETMET R3 R3 K6 + 0x7C0C0200, // 0021 CALL R3 1 + 0x90021603, // 0022 SETMBR R0 K11 R3 + 0x600C0015, // 0023 GETGBL R3 G21 + 0x7C0C0000, // 0024 CALL R3 0 + 0x8C0C0704, // 0025 GETMET R3 R3 K4 + 0x54160003, // 0026 LDINT R5 4 + 0x94140405, // 0027 GETIDX R5 R2 R5 + 0x7C0C0400, // 0028 CALL R3 2 + 0x8C0C0706, // 0029 GETMET R3 R3 K6 + 0x7C0C0200, // 002A CALL R3 1 + 0x90021A03, // 002B SETMBR R0 K13 R3 + 0x600C0015, // 002C GETGBL R3 G21 + 0x7C0C0000, // 002D CALL R3 0 + 0x8C0C0704, // 002E GETMET R3 R3 K4 + 0x54160004, // 002F LDINT R5 5 + 0x94140405, // 0030 GETIDX R5 R2 R5 + 0x7C0C0400, // 0031 CALL R3 2 + 0x8C0C0706, // 0032 GETMET R3 R3 K6 + 0x7C0C0200, // 0033 CALL R3 1 + 0x90021C03, // 0034 SETMBR R0 K14 R3 + 0x80000000, // 0035 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: GetOptionReader +********************************************************************/ +be_local_class(GetOptionReader, + 6, + NULL, + be_nested_map(8, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(flag2, -1), be_const_var(1) }, + { be_const_key_weak(flag4, -1), be_const_var(3) }, + { be_const_key_weak(getoption, -1), be_const_closure(class_GetOptionReader_getoption_closure) }, + { be_const_key_weak(init, 5), be_const_closure(class_GetOptionReader_init_closure) }, + { be_const_key_weak(flag3, -1), be_const_var(2) }, + { be_const_key_weak(flag6, -1), be_const_var(5) }, + { be_const_key_weak(flag5, -1), be_const_var(4) }, + { be_const_key_weak(flag, 0), be_const_var(0) }, + })), + be_str_weak(GetOptionReader) +); + extern const bclass be_class_Matter_Plugin_Device; +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_parse_status, /* name */ + be_nested_proto( + 3, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_cmd_cb +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_http_response), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + &be_class_Matter_Plugin_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remote), + /* K1 */ be_nested_str_weak(add_schedule), + /* K2 */ be_nested_str_weak(UPDATE_CMD), + /* K3 */ be_nested_str_weak(UPDATE_TIME), + }), + be_str_weak(register_cmd_cb), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x84140000, // 0004 CLOSURE R5 P0 + 0x7C040800, // 0005 CALL R1 4 + 0xA0000000, // 0006 CLOSE R0 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_web_values, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X26lt_X3B_X2D_X2D_X20_X28), + /* K4 */ be_nested_str_weak(DISPLAY_NAME), + /* K5 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x88100104, // 0004 GETMBR R4 R0 K4 + 0x00120604, // 0005 ADD R4 K3 R4 + 0x00100905, // 0006 ADD R4 R4 K5 + 0x7C080400, // 0007 CALL R2 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_every_250ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(http_remote), + /* K2 */ be_nested_str_weak(scheduler), + /* K3 */ be_nested_str_weak(every_250ms), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060003, // 0001 JMPF R1 #0006 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x7C040200, // 0004 CALL R1 1 + 0x70020004, // 0005 JMP #000B + 0x60040003, // 0006 GETGBL R1 G3 + 0x5C080000, // 0007 MOVE R2 R0 + 0x7C040200, // 0008 CALL R1 1 + 0x8C040303, // 0009 GETMET R1 R1 K3 + 0x7C040200, // 000A CALL R1 1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_value_onoff +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_web_value_onoff, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_X3Cb_X3EOn_X3C_X2Fb_X3E), + /* K1 */ be_nested_str_weak(Off), + /* K2 */ be_nested_str_weak(), + }), + be_str_weak(web_value_onoff), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0004, // 0002 JMPF R2 #0008 + 0x78060001, // 0003 JMPF R1 #0006 + 0x58080000, // 0004 LDCONST R2 K0 + 0x70020000, // 0005 JMP #0007 + 0x58080001, // 0006 LDCONST R2 K1 + 0x70020000, // 0007 JMP #0009 + 0x58080002, // 0008 LDCONST R2 K2 + 0x80040400, // 0009 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(command), + /* K4 */ be_const_int(3), + /* K5 */ be_const_int(0), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(Matter_TLV_struct), + /* K8 */ be_nested_str_weak(add_TLV), + /* K9 */ be_nested_str_weak(U2), + /* K10 */ be_nested_str_weak(invoke_request), + }), + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[51]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140702, // 0002 GETMBR R5 R3 K2 + 0x88180703, // 0003 GETMBR R6 R3 K3 + 0x1C1C0B04, // 0004 EQ R7 R5 K4 + 0x781E0016, // 0005 JMPF R7 #001D + 0x1C1C0D05, // 0006 EQ R7 R6 K5 + 0x781E0002, // 0007 JMPF R7 #000B + 0x501C0200, // 0008 LDBOOL R7 1 0 + 0x80040E00, // 0009 RET 1 R7 + 0x70020010, // 000A JMP #001C + 0x1C1C0D06, // 000B EQ R7 R6 K6 + 0x781E0009, // 000C JMPF R7 #0017 + 0x8C1C0907, // 000D GETMET R7 R4 K7 + 0x7C1C0200, // 000E CALL R7 1 + 0x8C200F08, // 000F GETMET R8 R7 K8 + 0x58280005, // 0010 LDCONST R10 K5 + 0x882C0909, // 0011 GETMBR R11 R4 K9 + 0x58300005, // 0012 LDCONST R12 K5 + 0x7C200800, // 0013 CALL R8 4 + 0x900E0705, // 0014 SETMBR R3 K3 K5 + 0x80040E00, // 0015 RET 1 R7 + 0x70020004, // 0016 JMP #001C + 0x541E003F, // 0017 LDINT R7 64 + 0x1C1C0C07, // 0018 EQ R7 R6 R7 + 0x781E0001, // 0019 JMPF R7 #001C + 0x501C0200, // 001A LDBOOL R7 1 0 + 0x80040E00, // 001B RET 1 R7 + 0x70020014, // 001C JMP #0032 + 0x541E0003, // 001D LDINT R7 4 + 0x1C1C0A07, // 001E EQ R7 R5 R7 + 0x781E0002, // 001F JMPF R7 #0023 + 0x501C0200, // 0020 LDBOOL R7 1 0 + 0x80040E00, // 0021 RET 1 R7 + 0x7002000E, // 0022 JMP #0032 + 0x541E0004, // 0023 LDINT R7 5 + 0x1C1C0A07, // 0024 EQ R7 R5 R7 + 0x781E0002, // 0025 JMPF R7 #0029 + 0x501C0200, // 0026 LDBOOL R7 1 0 + 0x80040E00, // 0027 RET 1 R7 + 0x70020008, // 0028 JMP #0032 + 0x601C0003, // 0029 GETGBL R7 G3 + 0x5C200000, // 002A MOVE R8 R0 + 0x7C1C0200, // 002B CALL R7 1 + 0x8C1C0F0A, // 002C GETMET R7 R7 K10 + 0x5C240200, // 002D MOVE R9 R1 + 0x5C280400, // 002E MOVE R10 R2 + 0x5C2C0600, // 002F MOVE R11 R3 + 0x7C1C0800, // 0030 CALL R7 4 + 0x80040E00, // 0031 RET 1 R7 + 0x80000000, // 0032 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(tick), + /* K2 */ be_nested_str_weak(device), + /* K3 */ be_nested_str_weak(call_remote_sync), + /* K4 */ be_nested_str_weak(UPDATE_CMD), + /* K5 */ be_nested_str_weak(parse_http_response), + /* K6 */ be_const_int(1), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x7806000D, // 0001 JMPF R1 #0010 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x88080102, // 0003 GETMBR R2 R0 K2 + 0x88080501, // 0004 GETMBR R2 R2 K1 + 0x20040202, // 0005 NE R1 R1 R2 + 0x78060008, // 0006 JMPF R1 #0010 + 0x8C040103, // 0007 GETMET R1 R0 K3 + 0x880C0104, // 0008 GETMBR R3 R0 K4 + 0x7C040400, // 0009 CALL R1 2 + 0x78060004, // 000A JMPF R1 #0010 + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x58100006, // 000C LDCONST R4 K6 + 0x5C140200, // 000D MOVE R5 R1 + 0x88180104, // 000E GETMBR R6 R0 K4 + 0x7C080800, // 000F CALL R2 4 + 0x88040102, // 0010 GETMBR R1 R0 K2 + 0x88040301, // 0011 GETMBR R1 R1 K1 + 0x90020201, // 0012 SETMBR R0 K1 R1 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: call_remote_sync +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(json), + /* K2 */ be_const_int(2), + /* K3 */ be_nested_str_weak(_X20), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(http_remote), + /* K6 */ be_nested_str_weak(call_sync), + /* K7 */ be_nested_str_weak(SYNC_TIMEOUT), + /* K8 */ be_nested_str_weak(device_is_alive), + /* K9 */ be_nested_str_weak(load), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), + /* K14 */ be_const_int(3), + }), + be_str_weak(call_remote_sync), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x780E0029, // 0001 JMPF R3 #002C + 0xA40E0200, // 0002 IMPORT R3 K1 + 0x58100002, // 0003 LDCONST R4 K2 + 0x4C140000, // 0004 LDNIL R5 + 0x20140405, // 0005 NE R5 R2 R5 + 0x78160005, // 0006 JMPF R5 #000D + 0x00140303, // 0007 ADD R5 R1 K3 + 0x60180008, // 0008 GETGBL R6 G8 + 0x5C1C0400, // 0009 MOVE R7 R2 + 0x7C180200, // 000A CALL R6 1 + 0x00140A06, // 000B ADD R5 R5 R6 + 0x5C040A00, // 000C MOVE R1 R5 + 0x24140904, // 000D GT R5 R4 K4 + 0x78160016, // 000E JMPF R5 #0026 + 0x88140105, // 000F GETMBR R5 R0 K5 + 0x8C140B06, // 0010 GETMET R5 R5 K6 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x88200107, // 0012 GETMBR R8 R0 K7 + 0x7C140600, // 0013 CALL R5 3 + 0x4C180000, // 0014 LDNIL R6 + 0x20180A06, // 0015 NE R6 R5 R6 + 0x781A0007, // 0016 JMPF R6 #001F + 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x50200200, // 0019 LDBOOL R8 1 0 + 0x7C180400, // 001A CALL R6 2 + 0x8C180709, // 001B GETMET R6 R3 K9 + 0x5C200A00, // 001C MOVE R8 R5 + 0x7C180400, // 001D CALL R6 2 + 0x80040C00, // 001E RET 1 R6 + 0x0410090A, // 001F SUB R4 R4 K10 + 0xB81A1600, // 0020 GETNGBL R6 K11 + 0x8C180D0C, // 0021 GETMET R6 R6 K12 + 0x5820000D, // 0022 LDCONST R8 K13 + 0x5824000E, // 0023 LDCONST R9 K14 + 0x7C180600, // 0024 CALL R6 3 + 0x7001FFE6, // 0025 JMP #000D + 0x88140105, // 0026 GETMBR R5 R0 K5 + 0x8C140B08, // 0027 GETMET R5 R5 K8 + 0x501C0000, // 0028 LDBOOL R7 0 0 + 0x7C140400, // 0029 CALL R5 2 + 0x4C140000, // 002A LDNIL R5 + 0x80040A00, // 002B RET 1 R5 + 0x80000000, // 002C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_http_response +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(tick), + /* K2 */ be_nested_str_weak(device), + /* K3 */ be_nested_str_weak(http_remote), + /* K4 */ be_nested_str_weak(parse_status_response_and_call_method), + /* K5 */ be_nested_str_weak(parse_status), + }), + be_str_weak(parse_http_response), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x7812000A, // 0001 JMPF R4 #000D + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88100901, // 0003 GETMBR R4 R4 K1 + 0x90020204, // 0004 SETMBR R0 K1 R4 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x8C100904, // 0006 GETMET R4 R4 K4 + 0x5C180200, // 0007 MOVE R6 R1 + 0x5C1C0400, // 0008 MOVE R7 R2 + 0x5C200600, // 0009 MOVE R8 R3 + 0x5C240000, // 000A MOVE R9 R0 + 0x88280105, // 000B GETMBR R10 R0 K5 + 0x7C100C00, // 000C CALL R4 6 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values_prefix +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(PREFIX), + /* K4 */ be_nested_str_weak(html_escape), + /* K5 */ be_nested_str_weak(), + }), + be_str_weak(web_values_prefix), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C0C0302, // 0003 GETMET R3 R1 K2 + 0x60140018, // 0004 GETGBL R5 G24 + 0x88180103, // 0005 GETMBR R6 R0 K3 + 0x780A0003, // 0006 JMPF R2 #000B + 0x8C1C0304, // 0007 GETMET R7 R1 K4 + 0x5C240400, // 0008 MOVE R9 R2 + 0x7C1C0400, // 0009 CALL R7 2 + 0x70020000, // 000A JMP #000C + 0x581C0005, // 000B LDCONST R7 K5 + 0x7C140400, // 000C CALL R5 2 + 0x7C0C0400, // 000D CALL R3 2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -20,7 +759,7 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Device, 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ + ( &(const bvalue[43]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -43,24 +782,31 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ /* K19 */ be_nested_str_weak(device), /* K20 */ be_nested_str_weak(disable_bridge_mode), /* K21 */ be_nested_str_weak(string), - /* K22 */ be_nested_str_weak(UTF1), - /* K23 */ be_nested_str_weak(tasmota), - /* K24 */ be_nested_str_weak(cmd), - /* K25 */ be_nested_str_weak(DeviceName), - /* K26 */ be_nested_str_weak(get_name), - /* K27 */ be_nested_str_weak(Status_X202), - /* K28 */ be_nested_str_weak(StatusFWR), - /* K29 */ be_nested_str_weak(Version), - /* K30 */ be_nested_str_weak(_X28), - /* K31 */ be_nested_str_weak(wifi), - /* K32 */ be_nested_str_weak(mac), - /* K33 */ be_nested_str_weak(), - /* K34 */ be_nested_str_weak(BOOL), - /* K35 */ be_nested_str_weak(read_attribute), + /* K22 */ be_nested_str_weak(BRIDGE), + /* K23 */ be_nested_str_weak(http_remote), + /* K24 */ be_nested_str_weak(get_info), + /* K25 */ be_nested_str_weak(name), + /* K26 */ be_nested_str_weak(UTF1), + /* K27 */ be_nested_str_weak(NULL), + /* K28 */ be_nested_str_weak(tasmota), + /* K29 */ be_nested_str_weak(cmd), + /* K30 */ be_nested_str_weak(DeviceName), + /* K31 */ be_nested_str_weak(get_name), + /* K32 */ be_nested_str_weak(version), + /* K33 */ be_nested_str_weak(_X28), + /* K34 */ be_nested_str_weak(Status_X202), + /* K35 */ be_nested_str_weak(StatusFWR), + /* K36 */ be_nested_str_weak(Version), + /* K37 */ be_nested_str_weak(mac), + /* K38 */ be_nested_str_weak(wifi), + /* K39 */ be_nested_str_weak(), + /* K40 */ be_nested_str_weak(BOOL), + /* K41 */ be_nested_str_weak(reachable), + /* K42 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[189]) { /* code */ + ( &(const binstruction[258]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 @@ -82,7 +828,7 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x58280005, // 0012 LDCONST R10 K5 0x7C1C0600, // 0013 CALL R7 3 0x80040E00, // 0014 RET 1 R7 - 0x7002009D, // 0015 JMP #00B4 + 0x700200E2, // 0015 JMP #00F9 0x541E0003, // 0016 LDINT R7 4 0x1C1C0A07, // 0017 EQ R7 R5 R7 0x781E0004, // 0018 JMPF R7 #001E @@ -90,11 +836,11 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x781E0001, // 001A JMPF R7 #001D 0x4C1C0000, // 001B LDNIL R7 0x80040E00, // 001C RET 1 R7 - 0x70020095, // 001D JMP #00B4 + 0x700200DA, // 001D JMP #00F9 0x541E0004, // 001E LDINT R7 5 0x1C1C0A07, // 001F EQ R7 R5 R7 0x781E0000, // 0020 JMPF R7 #0022 - 0x70020091, // 0021 JMP #00B4 + 0x700200D6, // 0021 JMP #00F9 0x541E001C, // 0022 LDINT R7 29 0x1C1C0A07, // 0023 EQ R7 R5 R7 0x781E0034, // 0024 JMPF R7 #005A @@ -150,106 +896,231 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x58380008, // 0056 LDCONST R14 K8 0x7C280800, // 0057 CALL R10 4 0x80040E00, // 0058 RET 1 R7 - 0x70020059, // 0059 JMP #00B4 + 0x7002009E, // 0059 JMP #00F9 0x541E0038, // 005A LDINT R7 57 0x1C1C0A07, // 005B EQ R7 R5 R7 - 0x781E0056, // 005C JMPF R7 #00B4 + 0x781E009B, // 005C JMPF R7 #00F9 0xA41E2A00, // 005D IMPORT R7 K21 0x1C200D04, // 005E EQ R8 R6 K4 - 0x7822000A, // 005F JMPF R8 #006B - 0x8C200706, // 0060 GETMET R8 R3 K6 - 0x88280916, // 0061 GETMBR R10 R4 K22 - 0xB82E2E00, // 0062 GETNGBL R11 K23 - 0x8C2C1718, // 0063 GETMET R11 R11 K24 - 0x58340019, // 0064 LDCONST R13 K25 - 0x50380200, // 0065 LDBOOL R14 1 0 - 0x7C2C0600, // 0066 CALL R11 3 - 0x942C1719, // 0067 GETIDX R11 R11 K25 - 0x7C200600, // 0068 CALL R8 3 - 0x80041000, // 0069 RET 1 R8 - 0x70020048, // 006A JMP #00B4 - 0x54220004, // 006B LDINT R8 5 - 0x1C200C08, // 006C EQ R8 R6 R8 - 0x78220006, // 006D JMPF R8 #0075 - 0x8C200706, // 006E GETMET R8 R3 K6 - 0x88280916, // 006F GETMBR R10 R4 K22 - 0x8C2C011A, // 0070 GETMET R11 R0 K26 - 0x7C2C0200, // 0071 CALL R11 1 - 0x7C200600, // 0072 CALL R8 3 - 0x80041000, // 0073 RET 1 R8 - 0x7002003E, // 0074 JMP #00B4 - 0x54220009, // 0075 LDINT R8 10 - 0x1C200C08, // 0076 EQ R8 R6 R8 - 0x78220015, // 0077 JMPF R8 #008E - 0xB8222E00, // 0078 GETNGBL R8 K23 - 0x8C201118, // 0079 GETMET R8 R8 K24 - 0x5828001B, // 007A LDCONST R10 K27 - 0x502C0200, // 007B LDBOOL R11 1 0 - 0x7C200600, // 007C CALL R8 3 - 0x9420111C, // 007D GETIDX R8 R8 K28 - 0x9420111D, // 007E GETIDX R8 R8 K29 - 0x8C240F11, // 007F GETMET R9 R7 K17 - 0x5C2C1000, // 0080 MOVE R11 R8 - 0x5830001E, // 0081 LDCONST R12 K30 - 0x7C240600, // 0082 CALL R9 3 - 0x24281305, // 0083 GT R10 R9 K5 - 0x782A0002, // 0084 JMPF R10 #0088 - 0x04281308, // 0085 SUB R10 R9 K8 - 0x402A0A0A, // 0086 CONNECT R10 K5 R10 - 0x9420100A, // 0087 GETIDX R8 R8 R10 - 0x8C280706, // 0088 GETMET R10 R3 K6 - 0x88300916, // 0089 GETMBR R12 R4 K22 - 0x5C341000, // 008A MOVE R13 R8 - 0x7C280600, // 008B CALL R10 3 - 0x80041400, // 008C RET 1 R10 - 0x70020025, // 008D JMP #00B4 - 0x5422000E, // 008E LDINT R8 15 - 0x1C200C08, // 008F EQ R8 R6 R8 - 0x7822000B, // 0090 JMPF R8 #009D - 0x8C200706, // 0091 GETMET R8 R3 K6 - 0x88280916, // 0092 GETMBR R10 R4 K22 - 0xB82E2E00, // 0093 GETNGBL R11 K23 - 0x8C2C171F, // 0094 GETMET R11 R11 K31 - 0x7C2C0200, // 0095 CALL R11 1 - 0x8C2C1711, // 0096 GETMET R11 R11 K17 - 0x58340020, // 0097 LDCONST R13 K32 - 0x58380021, // 0098 LDCONST R14 K33 - 0x7C2C0600, // 0099 CALL R11 3 - 0x7C200600, // 009A CALL R8 3 - 0x80041000, // 009B RET 1 R8 - 0x70020016, // 009C JMP #00B4 - 0x54220010, // 009D LDINT R8 17 - 0x1C200C08, // 009E EQ R8 R6 R8 - 0x78220005, // 009F JMPF R8 #00A6 - 0x8C200706, // 00A0 GETMET R8 R3 K6 - 0x88280922, // 00A1 GETMBR R10 R4 K34 - 0x582C0008, // 00A2 LDCONST R11 K8 - 0x7C200600, // 00A3 CALL R8 3 - 0x80041000, // 00A4 RET 1 R8 - 0x7002000D, // 00A5 JMP #00B4 - 0x54220011, // 00A6 LDINT R8 18 - 0x1C200C08, // 00A7 EQ R8 R6 R8 - 0x7822000A, // 00A8 JMPF R8 #00B4 - 0x8C200706, // 00A9 GETMET R8 R3 K6 - 0x88280916, // 00AA GETMBR R10 R4 K22 - 0xB82E2E00, // 00AB GETNGBL R11 K23 - 0x8C2C171F, // 00AC GETMET R11 R11 K31 - 0x7C2C0200, // 00AD CALL R11 1 - 0x8C2C1711, // 00AE GETMET R11 R11 K17 - 0x58340020, // 00AF LDCONST R13 K32 - 0x58380021, // 00B0 LDCONST R14 K33 - 0x7C2C0600, // 00B1 CALL R11 3 - 0x7C200600, // 00B2 CALL R8 3 - 0x80041000, // 00B3 RET 1 R8 - 0x601C0003, // 00B4 GETGBL R7 G3 - 0x5C200000, // 00B5 MOVE R8 R0 - 0x7C1C0200, // 00B6 CALL R7 1 - 0x8C1C0F23, // 00B7 GETMET R7 R7 K35 - 0x5C240200, // 00B8 MOVE R9 R1 - 0x5C280400, // 00B9 MOVE R10 R2 - 0x5C2C0600, // 00BA MOVE R11 R3 - 0x7C1C0800, // 00BB CALL R7 4 - 0x80040E00, // 00BC RET 1 R7 + 0x7822001F, // 005F JMPF R8 #0080 + 0x88200116, // 0060 GETMBR R8 R0 K22 + 0x78220012, // 0061 JMPF R8 #0075 + 0x88200117, // 0062 GETMBR R8 R0 K23 + 0x8C201118, // 0063 GETMET R8 R8 K24 + 0x7C200200, // 0064 CALL R8 1 + 0x8C201111, // 0065 GETMET R8 R8 K17 + 0x58280019, // 0066 LDCONST R10 K25 + 0x7C200400, // 0067 CALL R8 2 + 0x78220005, // 0068 JMPF R8 #006F + 0x8C240706, // 0069 GETMET R9 R3 K6 + 0x882C091A, // 006A GETMBR R11 R4 K26 + 0x5C301000, // 006B MOVE R12 R8 + 0x7C240600, // 006C CALL R9 3 + 0x80041200, // 006D RET 1 R9 + 0x70020004, // 006E JMP #0074 + 0x8C240706, // 006F GETMET R9 R3 K6 + 0x882C091B, // 0070 GETMBR R11 R4 K27 + 0x4C300000, // 0071 LDNIL R12 + 0x7C240600, // 0072 CALL R9 3 + 0x80041200, // 0073 RET 1 R9 + 0x70020009, // 0074 JMP #007F + 0x8C200706, // 0075 GETMET R8 R3 K6 + 0x8828091A, // 0076 GETMBR R10 R4 K26 + 0xB82E3800, // 0077 GETNGBL R11 K28 + 0x8C2C171D, // 0078 GETMET R11 R11 K29 + 0x5834001E, // 0079 LDCONST R13 K30 + 0x50380200, // 007A LDBOOL R14 1 0 + 0x7C2C0600, // 007B CALL R11 3 + 0x942C171E, // 007C GETIDX R11 R11 K30 + 0x7C200600, // 007D CALL R8 3 + 0x80041000, // 007E RET 1 R8 + 0x70020078, // 007F JMP #00F9 + 0x54220004, // 0080 LDINT R8 5 + 0x1C200C08, // 0081 EQ R8 R6 R8 + 0x78220006, // 0082 JMPF R8 #008A + 0x8C200706, // 0083 GETMET R8 R3 K6 + 0x8828091A, // 0084 GETMBR R10 R4 K26 + 0x8C2C011F, // 0085 GETMET R11 R0 K31 + 0x7C2C0200, // 0086 CALL R11 1 + 0x7C200600, // 0087 CALL R8 3 + 0x80041000, // 0088 RET 1 R8 + 0x7002006E, // 0089 JMP #00F9 + 0x54220009, // 008A LDINT R8 10 + 0x1C200C08, // 008B EQ R8 R6 R8 + 0x78220033, // 008C JMPF R8 #00C1 + 0x88200116, // 008D GETMBR R8 R0 K22 + 0x7822001B, // 008E JMPF R8 #00AB + 0x88200117, // 008F GETMBR R8 R0 K23 + 0x8C201118, // 0090 GETMET R8 R8 K24 + 0x7C200200, // 0091 CALL R8 1 + 0x8C201111, // 0092 GETMET R8 R8 K17 + 0x58280020, // 0093 LDCONST R10 K32 + 0x7C200400, // 0094 CALL R8 2 + 0x7822000E, // 0095 JMPF R8 #00A5 + 0x8C240F11, // 0096 GETMET R9 R7 K17 + 0x5C2C1000, // 0097 MOVE R11 R8 + 0x58300021, // 0098 LDCONST R12 K33 + 0x7C240600, // 0099 CALL R9 3 + 0x24281305, // 009A GT R10 R9 K5 + 0x782A0002, // 009B JMPF R10 #009F + 0x04281308, // 009C SUB R10 R9 K8 + 0x402A0A0A, // 009D CONNECT R10 K5 R10 + 0x9420100A, // 009E GETIDX R8 R8 R10 + 0x8C280706, // 009F GETMET R10 R3 K6 + 0x8830091A, // 00A0 GETMBR R12 R4 K26 + 0x5C341000, // 00A1 MOVE R13 R8 + 0x7C280600, // 00A2 CALL R10 3 + 0x80041400, // 00A3 RET 1 R10 + 0x70020004, // 00A4 JMP #00AA + 0x8C240706, // 00A5 GETMET R9 R3 K6 + 0x882C091B, // 00A6 GETMBR R11 R4 K27 + 0x4C300000, // 00A7 LDNIL R12 + 0x7C240600, // 00A8 CALL R9 3 + 0x80041200, // 00A9 RET 1 R9 + 0x70020014, // 00AA JMP #00C0 + 0xB8223800, // 00AB GETNGBL R8 K28 + 0x8C20111D, // 00AC GETMET R8 R8 K29 + 0x58280022, // 00AD LDCONST R10 K34 + 0x502C0200, // 00AE LDBOOL R11 1 0 + 0x7C200600, // 00AF CALL R8 3 + 0x94201123, // 00B0 GETIDX R8 R8 K35 + 0x94201124, // 00B1 GETIDX R8 R8 K36 + 0x8C240F11, // 00B2 GETMET R9 R7 K17 + 0x5C2C1000, // 00B3 MOVE R11 R8 + 0x58300021, // 00B4 LDCONST R12 K33 + 0x7C240600, // 00B5 CALL R9 3 + 0x24281305, // 00B6 GT R10 R9 K5 + 0x782A0002, // 00B7 JMPF R10 #00BB + 0x04281308, // 00B8 SUB R10 R9 K8 + 0x402A0A0A, // 00B9 CONNECT R10 K5 R10 + 0x9420100A, // 00BA GETIDX R8 R8 R10 + 0x8C280706, // 00BB GETMET R10 R3 K6 + 0x8830091A, // 00BC GETMBR R12 R4 K26 + 0x5C341000, // 00BD MOVE R13 R8 + 0x7C280600, // 00BE CALL R10 3 + 0x80041400, // 00BF RET 1 R10 + 0x70020037, // 00C0 JMP #00F9 + 0x5422000E, // 00C1 LDINT R8 15 + 0x1C200C08, // 00C2 EQ R8 R6 R8 + 0x74220002, // 00C3 JMPT R8 #00C7 + 0x54220011, // 00C4 LDINT R8 18 + 0x1C200C08, // 00C5 EQ R8 R6 R8 + 0x78220020, // 00C6 JMPF R8 #00E8 + 0x88200116, // 00C7 GETMBR R8 R0 K22 + 0x78220012, // 00C8 JMPF R8 #00DC + 0x88200117, // 00C9 GETMBR R8 R0 K23 + 0x8C201118, // 00CA GETMET R8 R8 K24 + 0x7C200200, // 00CB CALL R8 1 + 0x8C201111, // 00CC GETMET R8 R8 K17 + 0x58280025, // 00CD LDCONST R10 K37 + 0x7C200400, // 00CE CALL R8 2 + 0x78220005, // 00CF JMPF R8 #00D6 + 0x8C240706, // 00D0 GETMET R9 R3 K6 + 0x882C091A, // 00D1 GETMBR R11 R4 K26 + 0x5C301000, // 00D2 MOVE R12 R8 + 0x7C240600, // 00D3 CALL R9 3 + 0x80041200, // 00D4 RET 1 R9 + 0x70020004, // 00D5 JMP #00DB + 0x8C240706, // 00D6 GETMET R9 R3 K6 + 0x882C091B, // 00D7 GETMBR R11 R4 K27 + 0x4C300000, // 00D8 LDNIL R12 + 0x7C240600, // 00D9 CALL R9 3 + 0x80041200, // 00DA RET 1 R9 + 0x7002000A, // 00DB JMP #00E7 + 0x8C200706, // 00DC GETMET R8 R3 K6 + 0x8828091A, // 00DD GETMBR R10 R4 K26 + 0xB82E3800, // 00DE GETNGBL R11 K28 + 0x8C2C1726, // 00DF GETMET R11 R11 K38 + 0x7C2C0200, // 00E0 CALL R11 1 + 0x8C2C1711, // 00E1 GETMET R11 R11 K17 + 0x58340025, // 00E2 LDCONST R13 K37 + 0x58380027, // 00E3 LDCONST R14 K39 + 0x7C2C0600, // 00E4 CALL R11 3 + 0x7C200600, // 00E5 CALL R8 3 + 0x80041000, // 00E6 RET 1 R8 + 0x70020010, // 00E7 JMP #00F9 + 0x54220010, // 00E8 LDINT R8 17 + 0x1C200C08, // 00E9 EQ R8 R6 R8 + 0x7822000D, // 00EA JMPF R8 #00F9 + 0x88200116, // 00EB GETMBR R8 R0 K22 + 0x78220006, // 00EC JMPF R8 #00F4 + 0x8C200706, // 00ED GETMET R8 R3 K6 + 0x88280928, // 00EE GETMBR R10 R4 K40 + 0x882C0117, // 00EF GETMBR R11 R0 K23 + 0x882C1729, // 00F0 GETMBR R11 R11 K41 + 0x7C200600, // 00F1 CALL R8 3 + 0x80041000, // 00F2 RET 1 R8 + 0x70020004, // 00F3 JMP #00F9 + 0x8C200706, // 00F4 GETMET R8 R3 K6 + 0x88280928, // 00F5 GETMBR R10 R4 K40 + 0x582C0008, // 00F6 LDCONST R11 K8 + 0x7C200600, // 00F7 CALL R8 3 + 0x80041000, // 00F8 RET 1 R8 + 0x601C0003, // 00F9 GETGBL R7 G3 + 0x5C200000, // 00FA MOVE R8 R0 + 0x7C1C0200, // 00FB CALL R7 1 + 0x8C1C0F2A, // 00FC GETMET R7 R7 K42 + 0x5C240200, // 00FD MOVE R9 R1 + 0x5C280400, // 00FE MOVE R10 R2 + 0x5C2C0600, // 00FF MOVE R11 R3 + 0x7C1C0800, // 0100 CALL R7 4 + 0x80040E00, // 0101 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_closure(class_Matter_Plugin_Device_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(ARG_HTTP), + /* K4 */ be_nested_str_weak(http_remote), + /* K5 */ be_nested_str_weak(device), + /* K6 */ be_nested_str_weak(register_http_remote), + /* K7 */ be_nested_str_weak(PROBE_TIMEOUT), + /* K8 */ be_nested_str_weak(register_cmd_cb), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x7812000A, // 0009 JMPF R4 #0015 + 0x8C100702, // 000A GETMET R4 R3 K2 + 0x88180103, // 000B GETMBR R6 R0 K3 + 0x7C100400, // 000C CALL R4 2 + 0x88140105, // 000D GETMBR R5 R0 K5 + 0x8C140B06, // 000E GETMET R5 R5 K6 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x88200107, // 0010 GETMBR R8 R0 K7 + 0x7C140600, // 0011 CALL R5 3 + 0x90020805, // 0012 SETMBR R0 K4 R5 + 0x8C140108, // 0013 GETMET R5 R0 K8 + 0x7C140200, // 0014 CALL R5 1 + 0x80000000, // 0015 RET 0 }) ) ); @@ -521,112 +1392,30 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; -be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_const_int(3), - /* K5 */ be_const_int(0), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(Matter_TLV_struct), - /* K8 */ be_nested_str_weak(add_TLV), - /* K9 */ be_nested_str_weak(U2), - /* K10 */ be_nested_str_weak(invoke_request), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x1C1C0B04, // 0004 EQ R7 R5 K4 - 0x781E0016, // 0005 JMPF R7 #001D - 0x1C1C0D05, // 0006 EQ R7 R6 K5 - 0x781E0002, // 0007 JMPF R7 #000B - 0x501C0200, // 0008 LDBOOL R7 1 0 - 0x80040E00, // 0009 RET 1 R7 - 0x70020010, // 000A JMP #001C - 0x1C1C0D06, // 000B EQ R7 R6 K6 - 0x781E0009, // 000C JMPF R7 #0017 - 0x8C1C0907, // 000D GETMET R7 R4 K7 - 0x7C1C0200, // 000E CALL R7 1 - 0x8C200F08, // 000F GETMET R8 R7 K8 - 0x58280005, // 0010 LDCONST R10 K5 - 0x882C0909, // 0011 GETMBR R11 R4 K9 - 0x58300005, // 0012 LDCONST R12 K5 - 0x7C200800, // 0013 CALL R8 4 - 0x900E0705, // 0014 SETMBR R3 K3 K5 - 0x80040E00, // 0015 RET 1 R7 - 0x70020004, // 0016 JMP #001C - 0x541E003F, // 0017 LDINT R7 64 - 0x1C1C0C07, // 0018 EQ R7 R6 R7 - 0x781E0001, // 0019 JMPF R7 #001C - 0x501C0200, // 001A LDBOOL R7 1 0 - 0x80040E00, // 001B RET 1 R7 - 0x70020014, // 001C JMP #0032 - 0x541E0003, // 001D LDINT R7 4 - 0x1C1C0A07, // 001E EQ R7 R5 R7 - 0x781E0002, // 001F JMPF R7 #0023 - 0x501C0200, // 0020 LDBOOL R7 1 0 - 0x80040E00, // 0021 RET 1 R7 - 0x7002000E, // 0022 JMP #0032 - 0x541E0004, // 0023 LDINT R7 5 - 0x1C1C0A07, // 0024 EQ R7 R5 R7 - 0x781E0002, // 0025 JMPF R7 #0029 - 0x501C0200, // 0026 LDBOOL R7 1 0 - 0x80040E00, // 0027 RET 1 R7 - 0x70020008, // 0028 JMP #0032 - 0x601C0003, // 0029 GETGBL R7 G3 - 0x5C200000, // 002A MOVE R8 R0 - 0x7C1C0200, // 002B CALL R7 1 - 0x8C1C0F0A, // 002C GETMET R7 R7 K10 - 0x5C240200, // 002D MOVE R9 R1 - 0x5C280400, // 002E MOVE R10 R2 - 0x5C2C0600, // 002F MOVE R11 R3 - 0x7C1C0800, // 0030 CALL R7 4 - 0x80040E00, // 0031 RET 1 R7 - 0x80000000, // 0032 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Plugin_Device ********************************************************************/ extern const bclass be_class_Matter_Plugin; be_local_class(Matter_Plugin_Device, - 0, + 1, &be_class_Matter_Plugin, - be_nested_map(7, + be_nested_map(24, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, 1), be_const_closure(class_Matter_Plugin_Device_read_attribute_closure) }, - { be_const_key_weak(invoke_request, 4), be_const_closure(class_Matter_Plugin_Device_invoke_request_closure) }, - { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_Device_append_state_json_closure) }, - { be_const_key_weak(NON_BRIDGE_VENDOR, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(2, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(4631), - be_const_int(4993), + { be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) }, + { be_const_key_weak(_parse_sensor_entry, -1), be_const_closure(class_Matter_Plugin_Device__parse_sensor_entry_closure) }, + { be_const_key_weak(TYPES, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(19, -1), be_const_int(1) }, })) ) } )) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(parse_status, 12), be_const_closure(class_Matter_Plugin_Device_parse_status_closure) }, + { be_const_key_weak(http_remote, -1), be_const_var(0) }, + { be_const_key_weak(register_cmd_cb, 6), be_const_closure(class_Matter_Plugin_Device_register_cmd_cb_closure) }, + { be_const_key_weak(GetOptionReader, 16), be_const_class(be_class_GetOptionReader) }, + { be_const_key_weak(append_state_json, 19), be_const_closure(class_Matter_Plugin_Device_append_state_json_closure) }, + { be_const_key_weak(web_values, 22), be_const_closure(class_Matter_Plugin_Device_web_values_closure) }, + { be_const_key_weak(PREFIX, -1), be_nested_str_weak(_X7C_X20_X3Ci_X3E_X25s_X3C_X2Fi_X3E_X20) }, + { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -699,12 +1488,24 @@ be_local_class(Matter_Plugin_Device, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(TYPES, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(19, -1), be_const_int(1) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Device_invoke_request_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Device_init_closure) }, + { be_const_key_weak(PROBE_TIMEOUT, 20), be_const_int(1700) }, + { be_const_key_weak(SYNC_TIMEOUT, -1), be_const_int(500) }, + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2011) }, + { be_const_key_weak(parse_http_response, -1), be_const_closure(class_Matter_Plugin_Device_parse_http_response_closure) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Device_web_values_prefix_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Device_read_attribute_closure) }, + { be_const_key_weak(call_remote_sync, 21), be_const_closure(class_Matter_Plugin_Device_call_remote_sync_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Device_update_shadow_closure) }, + { be_const_key_weak(web_value_onoff, -1), be_const_closure(class_Matter_Plugin_Device_web_value_onoff_closure) }, + { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_Device_every_250ms_closure) }, + { be_const_key_weak(NON_BRIDGE_VENDOR, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(4631), + be_const_int(4993), })) ) } )) }, - { be_const_key_weak(_parse_sensor_entry, -1), be_const_closure(class_Matter_Plugin_Device__parse_sensor_entry_closure) }, })), be_str_weak(Matter_Plugin_Device) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h deleted file mode 100644 index bdbd6be1f..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h +++ /dev/null @@ -1,934 +0,0 @@ -/* Solidification of Matter_Plugin_2_Bridge_HTTP.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_GetOptionReader; - -/******************************************************************** -** Solidified function: getoption -********************************************************************/ -extern const bclass be_class_GetOptionReader; -be_local_closure(class_GetOptionReader_getoption, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_GetOptionReader, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(flag), - /* K1 */ be_nested_str_weak(getbits), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(flag2), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(flag3), - /* K6 */ be_nested_str_weak(flag4), - /* K7 */ be_nested_str_weak(flag5), - /* K8 */ be_nested_str_weak(flag6), - }), - be_str_weak(getoption), - &be_const_str_solidified, - ( &(const binstruction[65]) { /* code */ - 0x540A001F, // 0000 LDINT R2 32 - 0x14080202, // 0001 LT R2 R1 R2 - 0x780A0006, // 0002 JMPF R2 #000A - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x8C080501, // 0004 GETMET R2 R2 K1 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140002, // 0006 LDCONST R5 K2 - 0x7C080600, // 0007 CALL R2 3 - 0x80040400, // 0008 RET 1 R2 - 0x70020035, // 0009 JMP #0040 - 0x540A0031, // 000A LDINT R2 50 - 0x14080202, // 000B LT R2 R1 R2 - 0x780A0007, // 000C JMPF R2 #0015 - 0x88080103, // 000D GETMBR R2 R0 K3 - 0x8C080504, // 000E GETMET R2 R2 K4 - 0x5412001F, // 000F LDINT R4 32 - 0x04100204, // 0010 SUB R4 R1 R4 - 0x58140002, // 0011 LDCONST R5 K2 - 0x7C080600, // 0012 CALL R2 3 - 0x80040400, // 0013 RET 1 R2 - 0x7002002A, // 0014 JMP #0040 - 0x540A0051, // 0015 LDINT R2 82 - 0x14080202, // 0016 LT R2 R1 R2 - 0x780A0007, // 0017 JMPF R2 #0020 - 0x88080105, // 0018 GETMBR R2 R0 K5 - 0x8C080501, // 0019 GETMET R2 R2 K1 - 0x54120031, // 001A LDINT R4 50 - 0x04100204, // 001B SUB R4 R1 R4 - 0x58140002, // 001C LDCONST R5 K2 - 0x7C080600, // 001D CALL R2 3 - 0x80040400, // 001E RET 1 R2 - 0x7002001F, // 001F JMP #0040 - 0x540A0071, // 0020 LDINT R2 114 - 0x14080202, // 0021 LT R2 R1 R2 - 0x780A0007, // 0022 JMPF R2 #002B - 0x88080106, // 0023 GETMBR R2 R0 K6 - 0x8C080501, // 0024 GETMET R2 R2 K1 - 0x54120051, // 0025 LDINT R4 82 - 0x04100204, // 0026 SUB R4 R1 R4 - 0x58140002, // 0027 LDCONST R5 K2 - 0x7C080600, // 0028 CALL R2 3 - 0x80040400, // 0029 RET 1 R2 - 0x70020014, // 002A JMP #0040 - 0x540A0091, // 002B LDINT R2 146 - 0x14080202, // 002C LT R2 R1 R2 - 0x780A0007, // 002D JMPF R2 #0036 - 0x88080107, // 002E GETMBR R2 R0 K7 - 0x8C080501, // 002F GETMET R2 R2 K1 - 0x54120071, // 0030 LDINT R4 114 - 0x04100204, // 0031 SUB R4 R1 R4 - 0x58140002, // 0032 LDCONST R5 K2 - 0x7C080600, // 0033 CALL R2 3 - 0x80040400, // 0034 RET 1 R2 - 0x70020009, // 0035 JMP #0040 - 0x540A00B1, // 0036 LDINT R2 178 - 0x14080202, // 0037 LT R2 R1 R2 - 0x780A0006, // 0038 JMPF R2 #0040 - 0x88080108, // 0039 GETMBR R2 R0 K8 - 0x8C080501, // 003A GETMET R2 R2 K1 - 0x54120091, // 003B LDINT R4 146 - 0x04100204, // 003C SUB R4 R1 R4 - 0x58140002, // 003D LDCONST R5 K2 - 0x7C080600, // 003E CALL R2 3 - 0x80040400, // 003F RET 1 R2 - 0x80000000, // 0040 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_GetOptionReader; -be_local_closure(class_GetOptionReader_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_GetOptionReader, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(value_error), - /* K1 */ be_nested_str_weak(invalid_X20json), - /* K2 */ be_nested_str_weak(SetOption), - /* K3 */ be_nested_str_weak(flag), - /* K4 */ be_nested_str_weak(fromhex), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(reverse), - /* K7 */ be_nested_str_weak(flag2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(flag3), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(flag4), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(flag5), - /* K14 */ be_nested_str_weak(flag6), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0xB0060101, // 0003 RAISE 1 K0 K1 - 0x94080302, // 0004 GETIDX R2 R1 K2 - 0x600C0015, // 0005 GETGBL R3 G21 - 0x7C0C0000, // 0006 CALL R3 0 - 0x8C0C0704, // 0007 GETMET R3 R3 K4 - 0x94140505, // 0008 GETIDX R5 R2 K5 - 0x7C0C0400, // 0009 CALL R3 2 - 0x8C0C0706, // 000A GETMET R3 R3 K6 - 0x7C0C0200, // 000B CALL R3 1 - 0x90020603, // 000C SETMBR R0 K3 R3 - 0x600C0015, // 000D GETGBL R3 G21 - 0x7C0C0000, // 000E CALL R3 0 - 0x8C0C0704, // 000F GETMET R3 R3 K4 - 0x94140508, // 0010 GETIDX R5 R2 K8 - 0x7C0C0400, // 0011 CALL R3 2 - 0x90020E03, // 0012 SETMBR R0 K7 R3 - 0x600C0015, // 0013 GETGBL R3 G21 - 0x7C0C0000, // 0014 CALL R3 0 - 0x8C0C0704, // 0015 GETMET R3 R3 K4 - 0x9414050A, // 0016 GETIDX R5 R2 K10 - 0x7C0C0400, // 0017 CALL R3 2 - 0x8C0C0706, // 0018 GETMET R3 R3 K6 - 0x7C0C0200, // 0019 CALL R3 1 - 0x90021203, // 001A SETMBR R0 K9 R3 - 0x600C0015, // 001B GETGBL R3 G21 - 0x7C0C0000, // 001C CALL R3 0 - 0x8C0C0704, // 001D GETMET R3 R3 K4 - 0x9414050C, // 001E GETIDX R5 R2 K12 - 0x7C0C0400, // 001F CALL R3 2 - 0x8C0C0706, // 0020 GETMET R3 R3 K6 - 0x7C0C0200, // 0021 CALL R3 1 - 0x90021603, // 0022 SETMBR R0 K11 R3 - 0x600C0015, // 0023 GETGBL R3 G21 - 0x7C0C0000, // 0024 CALL R3 0 - 0x8C0C0704, // 0025 GETMET R3 R3 K4 - 0x54160003, // 0026 LDINT R5 4 - 0x94140405, // 0027 GETIDX R5 R2 R5 - 0x7C0C0400, // 0028 CALL R3 2 - 0x8C0C0706, // 0029 GETMET R3 R3 K6 - 0x7C0C0200, // 002A CALL R3 1 - 0x90021A03, // 002B SETMBR R0 K13 R3 - 0x600C0015, // 002C GETGBL R3 G21 - 0x7C0C0000, // 002D CALL R3 0 - 0x8C0C0704, // 002E GETMET R3 R3 K4 - 0x54160004, // 002F LDINT R5 5 - 0x94140405, // 0030 GETIDX R5 R2 R5 - 0x7C0C0400, // 0031 CALL R3 2 - 0x8C0C0706, // 0032 GETMET R3 R3 K6 - 0x7C0C0200, // 0033 CALL R3 1 - 0x90021C03, // 0034 SETMBR R0 K14 R3 - 0x80000000, // 0035 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: GetOptionReader -********************************************************************/ -be_local_class(GetOptionReader, - 6, - NULL, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(flag2, -1), be_const_var(1) }, - { be_const_key_weak(flag4, -1), be_const_var(3) }, - { be_const_key_weak(getoption, -1), be_const_closure(class_GetOptionReader_getoption_closure) }, - { be_const_key_weak(init, 5), be_const_closure(class_GetOptionReader_init_closure) }, - { be_const_key_weak(flag3, -1), be_const_var(2) }, - { be_const_key_weak(flag6, -1), be_const_var(5) }, - { be_const_key_weak(flag5, -1), be_const_var(4) }, - { be_const_key_weak(flag, 0), be_const_var(0) }, - })), - be_str_weak(GetOptionReader) -); - -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; - -/******************************************************************** -** Solidified function: call_remote_sync -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_call_remote_sync, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str_weak(_X20), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(http_remote), - /* K5 */ be_nested_str_weak(call_sync), - /* K6 */ be_nested_str_weak(SYNC_TIMEOUT), - /* K7 */ be_nested_str_weak(device_is_alive), - /* K8 */ be_nested_str_weak(load), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), - /* K13 */ be_const_int(3), - }), - be_str_weak(call_remote_sync), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x4C140000, // 0002 LDNIL R5 - 0x20140405, // 0003 NE R5 R2 R5 - 0x78160005, // 0004 JMPF R5 #000B - 0x00140302, // 0005 ADD R5 R1 K2 - 0x60180008, // 0006 GETGBL R6 G8 - 0x5C1C0400, // 0007 MOVE R7 R2 - 0x7C180200, // 0008 CALL R6 1 - 0x00140A06, // 0009 ADD R5 R5 R6 - 0x5C040A00, // 000A MOVE R1 R5 - 0x24140903, // 000B GT R5 R4 K3 - 0x78160016, // 000C JMPF R5 #0024 - 0x88140104, // 000D GETMBR R5 R0 K4 - 0x8C140B05, // 000E GETMET R5 R5 K5 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x88200106, // 0010 GETMBR R8 R0 K6 - 0x7C140600, // 0011 CALL R5 3 - 0x4C180000, // 0012 LDNIL R6 - 0x20180A06, // 0013 NE R6 R5 R6 - 0x781A0007, // 0014 JMPF R6 #001D - 0x88180104, // 0015 GETMBR R6 R0 K4 - 0x8C180D07, // 0016 GETMET R6 R6 K7 - 0x50200200, // 0017 LDBOOL R8 1 0 - 0x7C180400, // 0018 CALL R6 2 - 0x8C180708, // 0019 GETMET R6 R3 K8 - 0x5C200A00, // 001A MOVE R8 R5 - 0x7C180400, // 001B CALL R6 2 - 0x80040C00, // 001C RET 1 R6 - 0x04100909, // 001D SUB R4 R4 K9 - 0xB81A1400, // 001E GETNGBL R6 K10 - 0x8C180D0B, // 001F GETMET R6 R6 K11 - 0x5820000C, // 0020 LDCONST R8 K12 - 0x5824000D, // 0021 LDCONST R9 K13 - 0x7C180600, // 0022 CALL R6 3 - 0x7001FFE6, // 0023 JMP #000B - 0x88140104, // 0024 GETMBR R5 R0 K4 - 0x8C140B07, // 0025 GETMET R5 R5 K7 - 0x501C0000, // 0026 LDBOOL R7 0 0 - 0x7C140400, // 0027 CALL R5 2 - 0x4C140000, // 0028 LDNIL R5 - 0x80040A00, // 0029 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_value_onoff -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_web_value_onoff, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_X3Cb_X3EOn_X3C_X2Fb_X3E), - /* K1 */ be_nested_str_weak(Off), - /* K2 */ be_nested_str_weak(), - }), - be_str_weak(web_value_onoff), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0004, // 0002 JMPF R2 #0008 - 0x78060001, // 0003 JMPF R1 #0006 - 0x58080000, // 0004 LDCONST R2 K0 - 0x70020000, // 0005 JMP #0007 - 0x58080001, // 0006 LDCONST R2 K1 - 0x70020000, // 0007 JMP #0009 - 0x58080002, // 0008 LDCONST R2 K2 - 0x80040400, // 0009 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_http_response -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_parse_http_response, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(http_remote), - /* K2 */ be_nested_str_weak(device_is_alive), - /* K3 */ be_nested_str_weak(device), - /* K4 */ be_nested_str_weak(tick), - /* K5 */ be_nested_str_weak(json), - /* K6 */ be_nested_str_weak(load), - /* K7 */ be_nested_str_weak(contains), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(StatusSTS), - /* K10 */ be_nested_str_weak(StatusSHT), - /* K11 */ be_nested_str_weak(parse_update), - }), - be_str_weak(parse_http_response), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x24100300, // 0000 GT R4 R1 K0 - 0x78120023, // 0001 JMPF R4 #0026 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x8C100902, // 0003 GETMET R4 R4 K2 - 0x50180200, // 0004 LDBOOL R6 1 0 - 0x7C100400, // 0005 CALL R4 2 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x88100904, // 0007 GETMBR R4 R4 K4 - 0xA4160A00, // 0008 IMPORT R5 K5 - 0x8C180B06, // 0009 GETMET R6 R5 K6 - 0x5C200400, // 000A MOVE R8 R2 - 0x7C180400, // 000B CALL R6 2 - 0x4C1C0000, // 000C LDNIL R7 - 0x781A0017, // 000D JMPF R6 #0026 - 0x8C200D07, // 000E GETMET R8 R6 K7 - 0x58280008, // 000F LDCONST R10 K8 - 0x7C200400, // 0010 CALL R8 2 - 0x78220002, // 0011 JMPF R8 #0015 - 0x94180D08, // 0012 GETIDX R6 R6 K8 - 0x541E0007, // 0013 LDINT R7 8 - 0x7002000C, // 0014 JMP #0022 - 0x8C200D07, // 0015 GETMET R8 R6 K7 - 0x58280009, // 0016 LDCONST R10 K9 - 0x7C200400, // 0017 CALL R8 2 - 0x78220002, // 0018 JMPF R8 #001C - 0x94180D09, // 0019 GETIDX R6 R6 K9 - 0x541E000A, // 001A LDINT R7 11 - 0x70020005, // 001B JMP #0022 - 0x8C200D07, // 001C GETMET R8 R6 K7 - 0x5828000A, // 001D LDCONST R10 K10 - 0x7C200400, // 001E CALL R8 2 - 0x78220001, // 001F JMPF R8 #0022 - 0x94180D09, // 0020 GETIDX R6 R6 K9 - 0x541E000C, // 0021 LDINT R7 13 - 0x8C20010B, // 0022 GETMET R8 R0 K11 - 0x5C280C00, // 0023 MOVE R10 R6 - 0x5C2C0E00, // 0024 MOVE R11 R7 - 0x7C200600, // 0025 CALL R8 3 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_web_values, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26lt_X3B_X2D_X2D_X20_X28), - /* K4 */ be_nested_str_weak(DISPLAY_NAME), - /* K5 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x88100104, // 0004 GETMBR R4 R0 K4 - 0x00120604, // 0005 ADD R4 K3 R4 - 0x00100905, // 0006 ADD R4 R4 K5 - 0x7C080400, // 0007 CALL R2 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_local_device -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_is_local_device, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(is_local_device), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG_HTTP), - /* K3 */ be_nested_str_weak(http_remote), - /* K4 */ be_nested_str_weak(device), - /* K5 */ be_nested_str_weak(register_http_remote), - /* K6 */ be_nested_str_weak(PROBE_TIMEOUT), - /* K7 */ be_nested_str_weak(register_cmd_cb), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x8C100701, // 0008 GETMET R4 R3 K1 - 0x88180102, // 0009 GETMBR R6 R0 K2 - 0x7C100400, // 000A CALL R4 2 - 0x88140104, // 000B GETMBR R5 R0 K4 - 0x8C140B05, // 000C GETMET R5 R5 K5 - 0x5C1C0800, // 000D MOVE R7 R4 - 0x88200106, // 000E GETMBR R8 R0 K6 - 0x7C140600, // 000F CALL R5 3 - 0x90020605, // 0010 SETMBR R0 K3 R5 - 0x8C140107, // 0011 GETMET R5 R0 K7 - 0x7C140200, // 0012 CALL R5 1 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_parse_update, /* name */ - be_nested_proto( - 3, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_read_attribute, /* name */ - be_nested_proto( - 14, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(string), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(http_remote), - /* K7 */ be_nested_str_weak(get_info), - /* K8 */ be_nested_str_weak(find), - /* K9 */ be_nested_str_weak(name), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_nested_str_weak(UTF1), - /* K12 */ be_nested_str_weak(NULL), - /* K13 */ be_nested_str_weak(version), - /* K14 */ be_nested_str_weak(_X28), - /* K15 */ be_const_int(0), - /* K16 */ be_const_int(1), - /* K17 */ be_nested_str_weak(mac), - /* K18 */ be_nested_str_weak(BOOL), - /* K19 */ be_nested_str_weak(reachable), - /* K20 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[103]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0038, // 0004 LDINT R7 57 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0056, // 0006 JMPF R7 #005E - 0xA41E0800, // 0007 IMPORT R7 K4 - 0x1C200D05, // 0008 EQ R8 R6 K5 - 0x78220012, // 0009 JMPF R8 #001D - 0x88200106, // 000A GETMBR R8 R0 K6 - 0x8C201107, // 000B GETMET R8 R8 K7 - 0x7C200200, // 000C CALL R8 1 - 0x8C201108, // 000D GETMET R8 R8 K8 - 0x58280009, // 000E LDCONST R10 K9 - 0x7C200400, // 000F CALL R8 2 - 0x78220005, // 0010 JMPF R8 #0017 - 0x8C24070A, // 0011 GETMET R9 R3 K10 - 0x882C090B, // 0012 GETMBR R11 R4 K11 - 0x5C301000, // 0013 MOVE R12 R8 - 0x7C240600, // 0014 CALL R9 3 - 0x80041200, // 0015 RET 1 R9 - 0x70020004, // 0016 JMP #001C - 0x8C24070A, // 0017 GETMET R9 R3 K10 - 0x882C090C, // 0018 GETMBR R11 R4 K12 - 0x4C300000, // 0019 LDNIL R12 - 0x7C240600, // 001A CALL R9 3 - 0x80041200, // 001B RET 1 R9 - 0x70020040, // 001C JMP #005E - 0x54220009, // 001D LDINT R8 10 - 0x1C200C08, // 001E EQ R8 R6 R8 - 0x7822001B, // 001F JMPF R8 #003C - 0x88200106, // 0020 GETMBR R8 R0 K6 - 0x8C201107, // 0021 GETMET R8 R8 K7 - 0x7C200200, // 0022 CALL R8 1 - 0x8C201108, // 0023 GETMET R8 R8 K8 - 0x5828000D, // 0024 LDCONST R10 K13 - 0x7C200400, // 0025 CALL R8 2 - 0x7822000E, // 0026 JMPF R8 #0036 - 0x8C240F08, // 0027 GETMET R9 R7 K8 - 0x5C2C1000, // 0028 MOVE R11 R8 - 0x5830000E, // 0029 LDCONST R12 K14 - 0x7C240600, // 002A CALL R9 3 - 0x2428130F, // 002B GT R10 R9 K15 - 0x782A0002, // 002C JMPF R10 #0030 - 0x04281310, // 002D SUB R10 R9 K16 - 0x402A1E0A, // 002E CONNECT R10 K15 R10 - 0x9420100A, // 002F GETIDX R8 R8 R10 - 0x8C28070A, // 0030 GETMET R10 R3 K10 - 0x8830090B, // 0031 GETMBR R12 R4 K11 - 0x5C341000, // 0032 MOVE R13 R8 - 0x7C280600, // 0033 CALL R10 3 - 0x80041400, // 0034 RET 1 R10 - 0x70020004, // 0035 JMP #003B - 0x8C24070A, // 0036 GETMET R9 R3 K10 - 0x882C090C, // 0037 GETMBR R11 R4 K12 - 0x4C300000, // 0038 LDNIL R12 - 0x7C240600, // 0039 CALL R9 3 - 0x80041200, // 003A RET 1 R9 - 0x70020021, // 003B JMP #005E - 0x5422000E, // 003C LDINT R8 15 - 0x1C200C08, // 003D EQ R8 R6 R8 - 0x74220002, // 003E JMPT R8 #0042 - 0x54220011, // 003F LDINT R8 18 - 0x1C200C08, // 0040 EQ R8 R6 R8 - 0x78220012, // 0041 JMPF R8 #0055 - 0x88200106, // 0042 GETMBR R8 R0 K6 - 0x8C201107, // 0043 GETMET R8 R8 K7 - 0x7C200200, // 0044 CALL R8 1 - 0x8C201108, // 0045 GETMET R8 R8 K8 - 0x58280011, // 0046 LDCONST R10 K17 - 0x7C200400, // 0047 CALL R8 2 - 0x78220005, // 0048 JMPF R8 #004F - 0x8C24070A, // 0049 GETMET R9 R3 K10 - 0x882C090B, // 004A GETMBR R11 R4 K11 - 0x5C301000, // 004B MOVE R12 R8 - 0x7C240600, // 004C CALL R9 3 - 0x80041200, // 004D RET 1 R9 - 0x70020004, // 004E JMP #0054 - 0x8C24070A, // 004F GETMET R9 R3 K10 - 0x882C090C, // 0050 GETMBR R11 R4 K12 - 0x4C300000, // 0051 LDNIL R12 - 0x7C240600, // 0052 CALL R9 3 - 0x80041200, // 0053 RET 1 R9 - 0x70020008, // 0054 JMP #005E - 0x54220010, // 0055 LDINT R8 17 - 0x1C200C08, // 0056 EQ R8 R6 R8 - 0x78220005, // 0057 JMPF R8 #005E - 0x8C20070A, // 0058 GETMET R8 R3 K10 - 0x88280912, // 0059 GETMBR R10 R4 K18 - 0x882C0106, // 005A GETMBR R11 R0 K6 - 0x882C1713, // 005B GETMBR R11 R11 K19 - 0x7C200600, // 005C CALL R8 3 - 0x80041000, // 005D RET 1 R8 - 0x601C0003, // 005E GETGBL R7 G3 - 0x5C200000, // 005F MOVE R8 R0 - 0x7C1C0200, // 0060 CALL R7 1 - 0x8C1C0F14, // 0061 GETMET R7 R7 K20 - 0x5C240200, // 0062 MOVE R9 R1 - 0x5C280400, // 0063 MOVE R10 R2 - 0x5C2C0600, // 0064 MOVE R11 R3 - 0x7C1C0800, // 0065 CALL R7 4 - 0x80040E00, // 0066 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_web_values_prefix, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(PREFIX), - /* K4 */ be_nested_str_weak(html_escape), - /* K5 */ be_nested_str_weak(), - }), - be_str_weak(web_values_prefix), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C0C0302, // 0003 GETMET R3 R1 K2 - 0x60140018, // 0004 GETGBL R5 G24 - 0x88180103, // 0005 GETMBR R6 R0 K3 - 0x780A0003, // 0006 JMPF R2 #000B - 0x8C1C0304, // 0007 GETMET R7 R1 K4 - 0x5C240400, // 0008 MOVE R9 R2 - 0x7C1C0400, // 0009 CALL R7 2 - 0x70020000, // 000A JMP #000C - 0x581C0005, // 000B LDCONST R7 K5 - 0x7C140400, // 000C CALL R5 2 - 0x7C0C0400, // 000D CALL R3 2 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_cmd_cb -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_register_cmd_cb, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_http_response), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - &be_class_Matter_Plugin_Bridge_HTTP, - }), - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remote), - /* K1 */ be_nested_str_weak(add_schedule), - /* K2 */ be_nested_str_weak(UPDATE_CMD), - /* K3 */ be_nested_str_weak(UPDATE_TIME), - }), - be_str_weak(register_cmd_cb), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x88100103, // 0003 GETMBR R4 R0 K3 - 0x84140000, // 0004 CLOSURE R5 P0 - 0x7C040800, // 0005 CALL R1 4 - 0xA0000000, // 0006 CLOSE R0 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_update_shadow, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(call_remote_sync), - /* K3 */ be_nested_str_weak(UPDATE_CMD), - /* K4 */ be_nested_str_weak(parse_http_response), - /* K5 */ be_const_int(1), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x88040300, // 0001 GETMBR R1 R1 K0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x880C0103, // 0004 GETMBR R3 R0 K3 - 0x7C040400, // 0005 CALL R1 2 - 0x78060004, // 0006 JMPF R1 #000C - 0x8C080104, // 0007 GETMET R2 R0 K4 - 0x58100005, // 0008 LDCONST R4 K5 - 0x5C140200, // 0009 MOVE R5 R1 - 0x88180103, // 000A GETMBR R6 R0 K3 - 0x7C080800, // 000B CALL R2 4 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_closure(class_Matter_Plugin_Bridge_HTTP_every_250ms, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_HTTP, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remote), - /* K1 */ be_nested_str_weak(scheduler), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_HTTP -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; -be_local_class(Matter_Plugin_Bridge_HTTP, - 1, - &be_class_Matter_Plugin_Device, - be_nested_map(23, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2011) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_every_250ms_closure) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak() }, - { be_const_key_weak(call_remote_sync, 22), be_const_closure(class_Matter_Plugin_Bridge_HTTP_call_remote_sync_closure) }, - { be_const_key_weak(web_value_onoff, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_web_value_onoff_closure) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_update_shadow_closure) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) }, - { be_const_key_weak(GetOptionReader, 5), be_const_class(be_class_GetOptionReader) }, - { be_const_key_weak(parse_http_response, 21), be_const_closure(class_Matter_Plugin_Bridge_HTTP_parse_http_response_closure) }, - { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_parse_update_closure) }, - { be_const_key_weak(SYNC_TIMEOUT, 18), be_const_int(500) }, - { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_is_local_device_closure) }, - { be_const_key_weak(PREFIX, 17), be_nested_str_weak(_X7C_X20_X3Ci_X3E_X25s_X3C_X2Fi_X3E_X20) }, - { be_const_key_weak(http_remote, 1), be_const_var(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_init_closure) }, - { be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) }, - { be_const_key_weak(DISPLAY_NAME, 9), be_nested_str_weak() }, - { be_const_key_weak(web_values_prefix, 19), be_const_closure(class_Matter_Plugin_Bridge_HTTP_web_values_prefix_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_read_attribute_closure) }, - { be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) }, - { be_const_key_weak(register_cmd_cb, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_register_cmd_cb_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_web_values_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak() }, - })), - be_str_weak(Matter_Plugin_Bridge_HTTP) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h similarity index 54% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h index 3933c1c2f..71079d66b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h @@ -1,16 +1,487 @@ -/* Solidification of Matter_Plugin_2_OnOff.h */ +/* Solidification of Matter_Plugin_2_Light0.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -extern const bclass be_class_Matter_Plugin_OnOff; +extern const bclass be_class_Matter_Plugin_Light0; + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(BOOL), + /* K8 */ be_nested_str_weak(shadow_onoff), + /* K9 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0005, // 0004 LDINT R7 6 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0008, // 0006 JMPF R7 #0010 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0004, // 000A JMPF R7 #0010 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x601C0003, // 0010 GETGBL R7 G3 + 0x5C200000, // 0011 MOVE R8 R0 + 0x7C1C0200, // 0012 CALL R7 1 + 0x8C1C0F09, // 0013 GETMET R7 R7 K9 + 0x5C240200, // 0014 MOVE R9 R1 + 0x5C280400, // 0015 MOVE R10 R2 + 0x5C2C0600, // 0016 MOVE R11 R3 + 0x7C1C0800, // 0017 CALL R7 4 + 0x80040E00, // 0018 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Power), + /* K2 */ be_nested_str_weak(set_onoff), + /* K3 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x58100001, // 0001 LDCONST R4 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0004, // 0005 JMPF R3 #000B + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x60140017, // 0007 GETGBL R5 G23 + 0x5C180400, // 0008 MOVE R6 R2 + 0x7C140200, // 0009 CALL R5 1 + 0x7C0C0400, // 000A CALL R3 2 + 0x600C0003, // 000B GETGBL R3 G3 + 0x5C100000, // 000C MOVE R4 R0 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C0703, // 000E GETMET R3 R3 K3 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_relay_index), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(POWER), + /* K4 */ be_nested_str_weak(find), + /* K5 */ be_nested_str_weak(ON), + /* K6 */ be_nested_str_weak(shadow_onoff), + /* K7 */ be_nested_str_weak(attribute_updated), + /* K8 */ be_const_int(0), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x540E000A, // 0000 LDINT R3 11 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0020, // 0002 JMPF R3 #0024 + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x88100100, // 0004 GETMBR R4 R0 K0 + 0x1C100901, // 0005 EQ R4 R4 K1 + 0x78120009, // 0006 JMPF R4 #0011 + 0x8C100302, // 0007 GETMET R4 R1 K2 + 0x58180003, // 0008 LDCONST R6 K3 + 0x7C100400, // 0009 CALL R4 2 + 0x78120005, // 000A JMPF R4 #0011 + 0x8C100304, // 000B GETMET R4 R1 K4 + 0x58180003, // 000C LDCONST R6 K3 + 0x7C100400, // 000D CALL R4 2 + 0x1C100905, // 000E EQ R4 R4 K5 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x70020007, // 0010 JMP #0019 + 0x8C100304, // 0011 GETMET R4 R1 K4 + 0x60180008, // 0012 GETGBL R6 G8 + 0x881C0100, // 0013 GETMBR R7 R0 K0 + 0x7C180200, // 0014 CALL R6 1 + 0x001A0606, // 0015 ADD R6 K3 R6 + 0x7C100400, // 0016 CALL R4 2 + 0x1C100905, // 0017 EQ R4 R4 K5 + 0x5C0C0800, // 0018 MOVE R3 R4 + 0x88100106, // 0019 GETMBR R4 R0 K6 + 0x60140017, // 001A GETGBL R5 G23 + 0x5C180600, // 001B MOVE R6 R3 + 0x7C140200, // 001C CALL R5 1 + 0x20100805, // 001D NE R4 R4 R5 + 0x78120004, // 001E JMPF R4 #0024 + 0x8C100107, // 001F GETMET R4 R0 K7 + 0x541A0005, // 0020 LDINT R6 6 + 0x581C0008, // 0021 LDCONST R7 K8 + 0x7C100600, // 0022 CALL R4 3 + 0x90020C03, // 0023 SETMBR R0 K6 R3 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_relay_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x4C180000, // 0003 LDNIL R6 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x4C0C0000, // 0008 LDNIL R3 + 0x20080403, // 0009 NE R2 R2 R3 + 0x780A0003, // 000A JMPF R2 #000F + 0x88080100, // 000B GETMBR R2 R0 K0 + 0x18080503, // 000C LE R2 R2 K3 + 0x780A0000, // 000D JMPF R2 #000F + 0x90020104, // 000E SETMBR R0 K0 K4 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_onoff +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(call_remote_sync), + /* K2 */ be_nested_str_weak(Power), + /* K3 */ be_nested_str_weak(tasmota_relay_index), + /* K4 */ be_nested_str_weak(1), + /* K5 */ be_nested_str_weak(0), + /* K6 */ be_nested_str_weak(parse_status), + /* K7 */ be_nested_str_weak(VIRTUAL), + /* K8 */ be_nested_str_weak(shadow_onoff), + /* K9 */ be_nested_str_weak(attribute_updated), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(set_power), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(update_shadow), + /* K15 */ be_nested_str_weak(light), + /* K16 */ be_nested_str_weak(set), + /* K17 */ be_nested_str_weak(power), + }), + be_str_weak(set_onoff), + &be_const_str_solidified, + ( &(const binstruction[55]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0011, // 0001 JMPF R2 #0014 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x60100008, // 0003 GETGBL R4 G8 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x7C100200, // 0005 CALL R4 1 + 0x00120404, // 0006 ADD R4 K2 R4 + 0x78060001, // 0007 JMPF R1 #000A + 0x58140004, // 0008 LDCONST R5 K4 + 0x70020000, // 0009 JMP #000B + 0x58140005, // 000A LDCONST R5 K5 + 0x7C080600, // 000B CALL R2 3 + 0x4C0C0000, // 000C LDNIL R3 + 0x200C0403, // 000D NE R3 R2 R3 + 0x780E0003, // 000E JMPF R3 #0013 + 0x8C0C0106, // 000F GETMET R3 R0 K6 + 0x5C140400, // 0010 MOVE R5 R2 + 0x541A000A, // 0011 LDINT R6 11 + 0x7C0C0600, // 0012 CALL R3 3 + 0x70020021, // 0013 JMP #0036 + 0x88080107, // 0014 GETMBR R2 R0 K7 + 0x780A0008, // 0015 JMPF R2 #001F + 0x88080108, // 0016 GETMBR R2 R0 K8 + 0x20080202, // 0017 NE R2 R1 R2 + 0x780A0004, // 0018 JMPF R2 #001E + 0x8C080109, // 0019 GETMET R2 R0 K9 + 0x54120005, // 001A LDINT R4 6 + 0x5814000A, // 001B LDCONST R5 K10 + 0x7C080600, // 001C CALL R2 3 + 0x90021001, // 001D SETMBR R0 K8 R1 + 0x70020016, // 001E JMP #0036 + 0x88080103, // 001F GETMBR R2 R0 K3 + 0x4C0C0000, // 0020 LDNIL R3 + 0x20080403, // 0021 NE R2 R2 R3 + 0x780A000A, // 0022 JMPF R2 #002E + 0xB80A1600, // 0023 GETNGBL R2 K11 + 0x8C08050C, // 0024 GETMET R2 R2 K12 + 0x88100103, // 0025 GETMBR R4 R0 K3 + 0x0410090D, // 0026 SUB R4 R4 K13 + 0x60140017, // 0027 GETGBL R5 G23 + 0x5C180200, // 0028 MOVE R6 R1 + 0x7C140200, // 0029 CALL R5 1 + 0x7C080600, // 002A CALL R2 3 + 0x8C08010E, // 002B GETMET R2 R0 K14 + 0x7C080200, // 002C CALL R2 1 + 0x70020007, // 002D JMP #0036 + 0xA40A1E00, // 002E IMPORT R2 K15 + 0x8C0C0510, // 002F GETMET R3 R2 K16 + 0x60140013, // 0030 GETGBL R5 G19 + 0x7C140000, // 0031 CALL R5 0 + 0x98162201, // 0032 SETIDX R5 K17 R1 + 0x7C0C0400, // 0033 CALL R3 2 + 0x8C0C010E, // 0034 GETMET R3 R0 K14 + 0x7C0C0200, // 0035 CALL R3 1 + 0x80000000, // 0036 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(tasmota_relay_index), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(get_power), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(shadow_onoff), + /* K7 */ be_nested_str_weak(attribute_updated), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060018, // 0001 JMPT R1 #001B + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x74060016, // 0003 JMPT R1 #001B + 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060012, // 0007 JMPF R1 #001B + 0xB8060600, // 0008 GETNGBL R1 K3 + 0x8C040304, // 0009 GETMET R1 R1 K4 + 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x040C0705, // 000B SUB R3 R3 K5 + 0x7C040400, // 000C CALL R1 2 + 0x4C080000, // 000D LDNIL R2 + 0x20080202, // 000E NE R2 R1 R2 + 0x780A000A, // 000F JMPF R2 #001B + 0x88080106, // 0010 GETMBR R2 R0 K6 + 0x600C0017, // 0011 GETGBL R3 G23 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C0C0200, // 0013 CALL R3 1 + 0x20080403, // 0014 NE R2 R2 R3 + 0x780A0003, // 0015 JMPF R2 #001A + 0x8C080107, // 0016 GETMET R2 R0 K7 + 0x54120005, // 0017 LDINT R4 6 + 0x58140008, // 0018 LDCONST R5 K8 + 0x7C080600, // 0019 CALL R2 3 + 0x90020C01, // 001A SETMBR R0 K6 R1 + 0x60040003, // 001B GETGBL R1 G3 + 0x5C080000, // 001C MOVE R2 R0 + 0x7C040200, // 001D CALL R1 1 + 0x8C040309, // 001E GETMET R1 R1 K9 + 0x7C040200, // 001F CALL R1 1 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X25s), + /* K4 */ be_nested_str_weak(web_value_onoff), + /* K5 */ be_nested_str_weak(shadow_onoff), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x8C180104, // 0006 GETMET R6 R0 K4 + 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x7C180400, // 0008 CALL R6 2 + 0x7C100400, // 0009 CALL R4 2 + 0x7C080400, // 000A CALL R2 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_onoff), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x50100000, // 0008 LDBOOL R4 0 0 + 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_closure(class_Matter_Plugin_OnOff_invoke_request, /* name */ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ @@ -18,7 +489,7 @@ be_local_closure(class_Matter_Plugin_OnOff_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_OnOff, + &be_class_Matter_Plugin_Light0, 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -95,159 +566,10 @@ be_local_closure(class_Matter_Plugin_OnOff_invoke_request, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_closure(class_Matter_Plugin_OnOff_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_OnOff, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(shadow_onoff), - /* K9 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0005, // 0004 LDINT R7 6 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0008, // 0006 JMPF R7 #0010 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 - 0x781E0004, // 000A JMPF R7 #0010 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 - 0x88280108, // 000D GETMBR R10 R0 K8 - 0x7C1C0600, // 000E CALL R7 3 - 0x80040E00, // 000F RET 1 R7 - 0x601C0003, // 0010 GETGBL R7 G3 - 0x5C200000, // 0011 MOVE R8 R0 - 0x7C1C0200, // 0012 CALL R7 1 - 0x8C1C0F09, // 0013 GETMET R7 R7 K9 - 0x5C240200, // 0014 MOVE R9 R1 - 0x5C280400, // 0015 MOVE R10 R2 - 0x5C2C0600, // 0016 MOVE R11 R3 - 0x7C1C0800, // 0017 CALL R7 4 - 0x80040E00, // 0018 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_closure(class_Matter_Plugin_OnOff_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_OnOff, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_relay_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_closure(class_Matter_Plugin_OnOff_update_virtual, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_OnOff, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Power), - /* K2 */ be_nested_str_weak(set_onoff), - /* K3 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0403, // 0004 NE R3 R2 R3 - 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x60140017, // 0007 GETGBL R5 G23 - 0x5C180400, // 0008 MOVE R6 R2 - 0x7C140200, // 0009 CALL R5 1 - 0x7C0C0400, // 000A CALL R3 2 - 0x600C0003, // 000B GETGBL R3 G3 - 0x5C100000, // 000C MOVE R4 R0 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0703, // 000E GETMET R3 R3 K3 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: ********************************************************************/ -be_local_closure(class_Matter_Plugin_OnOff__X3Clambda_X3E, /* name */ +be_local_closure(class_Matter_Plugin_Light0__X3Clambda_X3E, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -272,54 +594,53 @@ be_local_closure(class_Matter_Plugin_OnOff__X3Clambda_X3E, /* name */ /******************************************************************** -** Solidified function: set_onoff +** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_closure(class_Matter_Plugin_OnOff_set_onoff, /* name */ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ + 10, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_OnOff, + &be_class_Matter_Plugin_Light0, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(set_power), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(Power), /* K3 */ be_nested_str_weak(tasmota_relay_index), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(update_shadow), - /* K6 */ be_nested_str_weak(shadow_onoff), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_const_int(0), + /* K4 */ be_nested_str_weak(content_send), + /* K5 */ be_nested_str_weak(PREFIX), + /* K6 */ be_nested_str_weak(html_escape), + /* K7 */ be_nested_str_weak(), }), - be_str_weak(set_onoff), + be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A000A, // 0001 JMPT R2 #000D - 0xB80A0200, // 0002 GETNGBL R2 K1 - 0x8C080502, // 0003 GETMET R2 R2 K2 - 0x88100103, // 0004 GETMBR R4 R0 K3 - 0x04100904, // 0005 SUB R4 R4 K4 - 0x60140017, // 0006 GETGBL R5 G23 - 0x5C180200, // 0007 MOVE R6 R1 - 0x7C140200, // 0008 CALL R5 1 - 0x7C080600, // 0009 CALL R2 3 - 0x8C080105, // 000A GETMET R2 R0 K5 - 0x7C080200, // 000B CALL R2 1 - 0x70020007, // 000C JMP #0015 - 0x88080106, // 000D GETMBR R2 R0 K6 - 0x20080202, // 000E NE R2 R1 R2 - 0x780A0004, // 000F JMPF R2 #0015 - 0x8C080107, // 0010 GETMET R2 R0 K7 - 0x54120005, // 0011 LDINT R4 6 - 0x58140008, // 0012 LDCONST R5 K8 - 0x7C080600, // 0013 CALL R2 3 - 0x90020C01, // 0014 SETMBR R0 K6 R1 + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x600C0008, // 0005 GETGBL R3 G8 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x000E0403, // 0008 ADD R3 K2 R3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x60140018, // 000B GETGBL R5 G24 + 0x88180105, // 000C GETMBR R6 R0 K5 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x5C240400, // 000F MOVE R9 R2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020000, // 0011 JMP #0013 + 0x581C0007, // 0012 LDCONST R7 K7 + 0x7C140400, // 0013 CALL R5 2 + 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 }) ) @@ -328,126 +649,26 @@ be_local_closure(class_Matter_Plugin_OnOff_set_onoff, /* name */ /******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_closure(class_Matter_Plugin_OnOff_update_shadow, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_OnOff, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(get_power), - /* K3 */ be_nested_str_weak(tasmota_relay_index), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(attribute_updated), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x74060012, // 0001 JMPT R1 #0015 - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x880C0103, // 0004 GETMBR R3 R0 K3 - 0x040C0704, // 0005 SUB R3 R3 K4 - 0x7C040400, // 0006 CALL R1 2 - 0x4C080000, // 0007 LDNIL R2 - 0x20080202, // 0008 NE R2 R1 R2 - 0x780A000A, // 0009 JMPF R2 #0015 - 0x88080105, // 000A GETMBR R2 R0 K5 - 0x600C0017, // 000B GETGBL R3 G23 - 0x5C100200, // 000C MOVE R4 R1 - 0x7C0C0200, // 000D CALL R3 1 - 0x20080403, // 000E NE R2 R2 R3 - 0x780A0003, // 000F JMPF R2 #0014 - 0x8C080106, // 0010 GETMET R2 R0 K6 - 0x54120005, // 0011 LDINT R4 6 - 0x58140007, // 0012 LDCONST R5 K7 - 0x7C080600, // 0013 CALL R2 3 - 0x90020A01, // 0014 SETMBR R0 K5 R1 - 0x60040003, // 0015 GETGBL R1 G3 - 0x5C080000, // 0016 MOVE R2 R0 - 0x7C040200, // 0017 CALL R1 1 - 0x8C040308, // 0018 GETMET R1 R1 K8 - 0x7C040200, // 0019 CALL R1 1 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_closure(class_Matter_Plugin_OnOff_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_OnOff, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_onoff), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_OnOff +** Solidified class: Matter_Plugin_Light0 ********************************************************************/ extern const bclass be_class_Matter_Plugin_Device; -be_local_class(Matter_Plugin_OnOff, +be_local_class(Matter_Plugin_Light0, 2, &be_class_Matter_Plugin_Device, - be_nested_map(18, + be_nested_map(21, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(250) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(relay) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(266, -1), be_const_int(2) }, - })) ) } )) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light0_read_attribute_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light0_update_virtual_closure) }, + { be_const_key_weak(tasmota_relay_index, 1), be_const_var(0) }, + { be_const_key_weak(parse_status, 5), be_const_closure(class_Matter_Plugin_Light0_parse_status_closure) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Light0_parse_configuration_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Power), })) ) } )) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_Light0_set_onoff_closure) }, + { be_const_key_weak(CLUSTERS, 19), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -531,21 +752,25 @@ be_local_class(Matter_Plugin_OnOff, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_OnOff_invoke_request_closure) }, - { be_const_key_weak(read_attribute, 16), be_const_closure(class_Matter_Plugin_OnOff_read_attribute_closure) }, - { be_const_key_weak(parse_configuration, 13), be_const_closure(class_Matter_Plugin_OnOff_parse_configuration_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_OnOff_update_virtual_closure) }, - { be_const_key_weak(DISPLAY_NAME, 14), be_nested_str_weak(Relay) }, - { be_const_key_weak(ARG_TYPE, 12), be_const_static_closure(class_Matter_Plugin_OnOff__X3Clambda_X3E_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light0_init_closure) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(250) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(light0) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light0_web_values_closure) }, + { be_const_key_weak(DISPLAY_NAME, 8), be_nested_str_weak(Light_X200_X20On) }, + { be_const_key_weak(shadow_onoff, -1), be_const_var(1) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light0_invoke_request_closure) }, { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, - { be_const_key_weak(shadow_onoff, -1), be_const_var(0) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_OnOff_update_shadow_closure) }, - { be_const_key_weak(ARG_HINT, 11), be_nested_str_weak(Relay_X3Cx_X3E_X20number) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_OnOff_init_closure) }, - { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_OnOff_set_onoff_closure) }, - { be_const_key_weak(tasmota_relay_index, -1), be_const_var(1) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Light0__X3Clambda_X3E_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(256, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Relay_X3Cx_X3E_X20number) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light0_update_shadow_closure) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Light0_web_values_prefix_closure) }, })), - be_str_weak(Matter_Plugin_OnOff) + be_str_weak(Matter_Plugin_Light0) ); /********************************************************************/ /* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h index 0eba3d7fe..9ca95cf99 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h @@ -6,403 +6,6 @@ extern const bclass be_class_Matter_Plugin_Light1; -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_onoff), - /* K2 */ be_nested_str_weak(shadow_bri), - /* K3 */ be_const_int(0), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x90020503, // 000A SETMBR R0 K2 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ - be_nested_proto( - 22, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(light), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(update_shadow_lazy), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(set_onoff), - /* K8 */ be_nested_str_weak(publish_command), - /* K9 */ be_nested_str_weak(Power), - /* K10 */ be_const_int(1), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(shadow_onoff), - /* K13 */ be_nested_str_weak(findsubval), - /* K14 */ be_nested_str_weak(set_bri), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(bri_X3A), - /* K17 */ be_nested_str_weak(Bri), - /* K18 */ be_nested_str_weak(Dimmer), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(scale_uint), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(invoke_request), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[167]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0xB8160200, // 0001 GETNGBL R5 K1 - 0x88140B02, // 0002 GETMBR R5 R5 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C0704, // 0004 GETMBR R7 R3 K4 - 0x54220005, // 0005 LDINT R8 6 - 0x1C200C08, // 0006 EQ R8 R6 R8 - 0x7822002C, // 0007 JMPF R8 #0035 - 0x8C200105, // 0008 GETMET R8 R0 K5 - 0x7C200200, // 0009 CALL R8 1 - 0x1C200F06, // 000A EQ R8 R7 K6 - 0x78220009, // 000B JMPF R8 #0016 - 0x8C200107, // 000C GETMET R8 R0 K7 - 0x50280000, // 000D LDBOOL R10 0 0 - 0x7C200400, // 000E CALL R8 2 - 0x8C200108, // 000F GETMET R8 R0 K8 - 0x58280009, // 0010 LDCONST R10 K9 - 0x582C0006, // 0011 LDCONST R11 K6 - 0x7C200600, // 0012 CALL R8 3 - 0x50200200, // 0013 LDBOOL R8 1 0 - 0x80041000, // 0014 RET 1 R8 - 0x7002001D, // 0015 JMP #0034 - 0x1C200F0A, // 0016 EQ R8 R7 K10 - 0x78220009, // 0017 JMPF R8 #0022 - 0x8C200107, // 0018 GETMET R8 R0 K7 - 0x50280200, // 0019 LDBOOL R10 1 0 - 0x7C200400, // 001A CALL R8 2 - 0x8C200108, // 001B GETMET R8 R0 K8 - 0x58280009, // 001C LDCONST R10 K9 - 0x582C000A, // 001D LDCONST R11 K10 - 0x7C200600, // 001E CALL R8 3 - 0x50200200, // 001F LDBOOL R8 1 0 - 0x80041000, // 0020 RET 1 R8 - 0x70020011, // 0021 JMP #0034 - 0x1C200F0B, // 0022 EQ R8 R7 K11 - 0x7822000F, // 0023 JMPF R8 #0034 - 0x8C200107, // 0024 GETMET R8 R0 K7 - 0x8828010C, // 0025 GETMBR R10 R0 K12 - 0x782A0000, // 0026 JMPF R10 #0028 - 0x50280001, // 0027 LDBOOL R10 0 1 - 0x50280200, // 0028 LDBOOL R10 1 0 - 0x7C200400, // 0029 CALL R8 2 - 0x8C200108, // 002A GETMET R8 R0 K8 - 0x58280009, // 002B LDCONST R10 K9 - 0x882C010C, // 002C GETMBR R11 R0 K12 - 0x782E0001, // 002D JMPF R11 #0030 - 0x582C000A, // 002E LDCONST R11 K10 - 0x70020000, // 002F JMP #0031 - 0x582C0006, // 0030 LDCONST R11 K6 - 0x7C200600, // 0031 CALL R8 3 - 0x50200200, // 0032 LDBOOL R8 1 0 - 0x80041000, // 0033 RET 1 R8 - 0x70020070, // 0034 JMP #00A6 - 0x54220007, // 0035 LDINT R8 8 - 0x1C200C08, // 0036 EQ R8 R6 R8 - 0x78220064, // 0037 JMPF R8 #009D - 0x8C200105, // 0038 GETMET R8 R0 K5 - 0x7C200200, // 0039 CALL R8 1 - 0x1C200F06, // 003A EQ R8 R7 K6 - 0x7822001A, // 003B JMPF R8 #0057 - 0x8C20050D, // 003C GETMET R8 R2 K13 - 0x58280006, // 003D LDCONST R10 K6 - 0x7C200400, // 003E CALL R8 2 - 0x8C24010E, // 003F GETMET R9 R0 K14 - 0x5C2C1000, // 0040 MOVE R11 R8 - 0x7C240400, // 0041 CALL R9 2 - 0x60240008, // 0042 GETGBL R9 G8 - 0x5C281000, // 0043 MOVE R10 R8 - 0x7C240200, // 0044 CALL R9 1 - 0x00262009, // 0045 ADD R9 K16 R9 - 0x900E1E09, // 0046 SETMBR R3 K15 R9 - 0x8C240108, // 0047 GETMET R9 R0 K8 - 0x582C0011, // 0048 LDCONST R11 K17 - 0x5C301000, // 0049 MOVE R12 R8 - 0x58340012, // 004A LDCONST R13 K18 - 0xB83A2600, // 004B GETNGBL R14 K19 - 0x8C381D14, // 004C GETMET R14 R14 K20 - 0x5C401000, // 004D MOVE R16 R8 - 0x58440006, // 004E LDCONST R17 K6 - 0x544A00FD, // 004F LDINT R18 254 - 0x584C0006, // 0050 LDCONST R19 K6 - 0x54520063, // 0051 LDINT R20 100 - 0x7C380C00, // 0052 CALL R14 6 - 0x7C240A00, // 0053 CALL R9 5 - 0x50240200, // 0054 LDBOOL R9 1 0 - 0x80041200, // 0055 RET 1 R9 - 0x70020044, // 0056 JMP #009C - 0x1C200F0A, // 0057 EQ R8 R7 K10 - 0x78220002, // 0058 JMPF R8 #005C - 0x50200200, // 0059 LDBOOL R8 1 0 - 0x80041000, // 005A RET 1 R8 - 0x7002003F, // 005B JMP #009C - 0x1C200F0B, // 005C EQ R8 R7 K11 - 0x78220002, // 005D JMPF R8 #0061 - 0x50200200, // 005E LDBOOL R8 1 0 - 0x80041000, // 005F RET 1 R8 - 0x7002003A, // 0060 JMP #009C - 0x1C200F15, // 0061 EQ R8 R7 K21 - 0x78220002, // 0062 JMPF R8 #0066 - 0x50200200, // 0063 LDBOOL R8 1 0 - 0x80041000, // 0064 RET 1 R8 - 0x70020035, // 0065 JMP #009C - 0x54220003, // 0066 LDINT R8 4 - 0x1C200E08, // 0067 EQ R8 R7 R8 - 0x78220021, // 0068 JMPF R8 #008B - 0x8C20050D, // 0069 GETMET R8 R2 K13 - 0x58280006, // 006A LDCONST R10 K6 - 0x7C200400, // 006B CALL R8 2 - 0x24241106, // 006C GT R9 R8 K6 - 0x8C28010E, // 006D GETMET R10 R0 K14 - 0x5C301000, // 006E MOVE R12 R8 - 0x5C341200, // 006F MOVE R13 R9 - 0x7C280600, // 0070 CALL R10 3 - 0x60280008, // 0071 GETGBL R10 G8 - 0x5C2C1000, // 0072 MOVE R11 R8 - 0x7C280200, // 0073 CALL R10 1 - 0x002A200A, // 0074 ADD R10 K16 R10 - 0x900E1E0A, // 0075 SETMBR R3 K15 R10 - 0x8C280108, // 0076 GETMET R10 R0 K8 - 0x58300011, // 0077 LDCONST R12 K17 - 0x5C341000, // 0078 MOVE R13 R8 - 0x58380012, // 0079 LDCONST R14 K18 - 0xB83E2600, // 007A GETNGBL R15 K19 - 0x8C3C1F14, // 007B GETMET R15 R15 K20 - 0x5C441000, // 007C MOVE R17 R8 - 0x58480006, // 007D LDCONST R18 K6 - 0x544E00FD, // 007E LDINT R19 254 - 0x58500006, // 007F LDCONST R20 K6 - 0x54560063, // 0080 LDINT R21 100 - 0x7C3C0C00, // 0081 CALL R15 6 - 0x58400009, // 0082 LDCONST R16 K9 - 0x78260001, // 0083 JMPF R9 #0086 - 0x5844000A, // 0084 LDCONST R17 K10 - 0x70020000, // 0085 JMP #0087 - 0x58440006, // 0086 LDCONST R17 K6 - 0x7C280E00, // 0087 CALL R10 7 - 0x50280200, // 0088 LDBOOL R10 1 0 - 0x80041400, // 0089 RET 1 R10 - 0x70020010, // 008A JMP #009C - 0x54220004, // 008B LDINT R8 5 - 0x1C200E08, // 008C EQ R8 R7 R8 - 0x78220002, // 008D JMPF R8 #0091 - 0x50200200, // 008E LDBOOL R8 1 0 - 0x80041000, // 008F RET 1 R8 - 0x7002000A, // 0090 JMP #009C - 0x54220005, // 0091 LDINT R8 6 - 0x1C200E08, // 0092 EQ R8 R7 R8 - 0x78220002, // 0093 JMPF R8 #0097 - 0x50200200, // 0094 LDBOOL R8 1 0 - 0x80041000, // 0095 RET 1 R8 - 0x70020004, // 0096 JMP #009C - 0x54220006, // 0097 LDINT R8 7 - 0x1C200E08, // 0098 EQ R8 R7 R8 - 0x78220001, // 0099 JMPF R8 #009C - 0x50200200, // 009A LDBOOL R8 1 0 - 0x80041000, // 009B RET 1 R8 - 0x70020008, // 009C JMP #00A6 - 0x60200003, // 009D GETGBL R8 G3 - 0x5C240000, // 009E MOVE R9 R0 - 0x7C200200, // 009F CALL R8 1 - 0x8C201116, // 00A0 GETMET R8 R8 K22 - 0x5C280200, // 00A1 MOVE R10 R1 - 0x5C2C0400, // 00A2 MOVE R11 R2 - 0x5C300600, // 00A3 MOVE R12 R3 - 0x7C200800, // 00A4 CALL R8 4 - 0x80041000, // 00A5 RET 1 R8 - 0x80000000, // 00A6 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_onoff -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_set_onoff, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(light), - /* K2 */ be_nested_str_weak(set), - /* K3 */ be_nested_str_weak(power), - /* K4 */ be_nested_str_weak(update_shadow), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(attribute_updated), - /* K7 */ be_const_int(0), - }), - be_str_weak(set_onoff), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0008, // 0001 JMPT R2 #000B - 0xA40A0200, // 0002 IMPORT R2 K1 - 0x8C0C0502, // 0003 GETMET R3 R2 K2 - 0x60140013, // 0004 GETGBL R5 G19 - 0x7C140000, // 0005 CALL R5 0 - 0x98160601, // 0006 SETIDX R5 K3 R1 - 0x7C0C0400, // 0007 CALL R3 2 - 0x8C0C0104, // 0008 GETMET R3 R0 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x70020007, // 000A JMP #0013 - 0x88080105, // 000B GETMBR R2 R0 K5 - 0x20080202, // 000C NE R2 R1 R2 - 0x780A0004, // 000D JMPF R2 #0013 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x54120005, // 000F LDINT R4 6 - 0x58140007, // 0010 LDCONST R5 K7 - 0x7C080600, // 0011 CALL R2 3 - 0x90020A01, // 0012 SETMBR R0 K5 R1 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(light), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(power), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(attribute_updated), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(bri), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(scale_uint), - /* K11 */ be_nested_str_weak(shadow_bri), - /* K12 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x74060029, // 0001 JMPT R1 #002C - 0xA4060200, // 0002 IMPORT R1 K1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x4C0C0000, // 0005 LDNIL R3 - 0x200C0403, // 0006 NE R3 R2 R3 - 0x780E0023, // 0007 JMPF R3 #002C - 0x8C0C0503, // 0008 GETMET R3 R2 K3 - 0x58140004, // 0009 LDCONST R5 K4 - 0x4C180000, // 000A LDNIL R6 - 0x7C0C0600, // 000B CALL R3 3 - 0x88100105, // 000C GETMBR R4 R0 K5 - 0x20100604, // 000D NE R4 R3 R4 - 0x78120004, // 000E JMPF R4 #0014 - 0x8C100106, // 000F GETMET R4 R0 K6 - 0x541A0005, // 0010 LDINT R6 6 - 0x581C0007, // 0011 LDCONST R7 K7 - 0x7C100600, // 0012 CALL R4 3 - 0x90020A03, // 0013 SETMBR R0 K5 R3 - 0x8C100503, // 0014 GETMET R4 R2 K3 - 0x58180008, // 0015 LDCONST R6 K8 - 0x4C1C0000, // 0016 LDNIL R7 - 0x7C100600, // 0017 CALL R4 3 - 0x4C140000, // 0018 LDNIL R5 - 0x20140805, // 0019 NE R5 R4 R5 - 0x78160010, // 001A JMPF R5 #002C - 0xB8161200, // 001B GETNGBL R5 K9 - 0x8C140B0A, // 001C GETMET R5 R5 K10 - 0x5C1C0800, // 001D MOVE R7 R4 - 0x58200007, // 001E LDCONST R8 K7 - 0x542600FE, // 001F LDINT R9 255 - 0x58280007, // 0020 LDCONST R10 K7 - 0x542E00FD, // 0021 LDINT R11 254 - 0x7C140C00, // 0022 CALL R5 6 - 0x5C100A00, // 0023 MOVE R4 R5 - 0x8814010B, // 0024 GETMBR R5 R0 K11 - 0x20140805, // 0025 NE R5 R4 R5 - 0x78160004, // 0026 JMPF R5 #002C - 0x8C140106, // 0027 GETMET R5 R0 K6 - 0x541E0007, // 0028 LDINT R7 8 - 0x58200007, // 0029 LDCONST R8 K7 - 0x7C140600, // 002A CALL R5 3 - 0x90021604, // 002B SETMBR R0 K11 R4 - 0x60040003, // 002C GETGBL R1 G3 - 0x5C080000, // 002D MOVE R2 R0 - 0x7C040200, // 002E CALL R1 1 - 0x8C04030C, // 002F GETMET R1 R1 K12 - 0x7C040200, // 0030 CALL R1 1 - 0x80000000, // 0031 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ @@ -417,17 +20,16 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light1, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(find), /* K1 */ be_nested_str_weak(Power), /* K2 */ be_nested_str_weak(Bri), /* K3 */ be_nested_str_weak(set_bri), - /* K4 */ be_nested_str_weak(set_onoff), - /* K5 */ be_nested_str_weak(update_virtual), + /* K4 */ be_nested_str_weak(update_virtual), }), be_str_weak(update_virtual), &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ + ( &(const binstruction[23]) { /* code */ 0x8C080300, // 0000 GETMET R2 R1 K0 0x58100001, // 0001 LDCONST R4 K1 0x7C080400, // 0002 CALL R2 2 @@ -436,7 +38,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ 0x7C0C0400, // 0005 CALL R3 2 0x4C100000, // 0006 LDNIL R4 0x20100604, // 0007 NE R4 R3 R4 - 0x78120007, // 0008 JMPF R4 #0011 + 0x78120006, // 0008 JMPF R4 #0010 0x8C100103, // 0009 GETMET R4 R0 K3 0x60180009, // 000A GETGBL R6 G9 0x5C1C0600, // 000B MOVE R7 R3 @@ -444,133 +46,13 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ 0x5C1C0400, // 000D MOVE R7 R2 0x7C100600, // 000E CALL R4 3 0x80000800, // 000F RET 0 - 0x70020007, // 0010 JMP #0019 - 0x4C100000, // 0011 LDNIL R4 - 0x20100404, // 0012 NE R4 R2 R4 - 0x78120004, // 0013 JMPF R4 #0019 - 0x8C100104, // 0014 GETMET R4 R0 K4 - 0x60180017, // 0015 GETGBL R6 G23 - 0x5C1C0400, // 0016 MOVE R7 R2 - 0x7C180200, // 0017 CALL R6 1 - 0x7C100400, // 0018 CALL R4 2 - 0x60100003, // 0019 GETGBL R4 G3 - 0x5C140000, // 001A MOVE R5 R0 - 0x7C100200, // 001B CALL R4 1 - 0x8C100905, // 001C GETMET R4 R4 K5 - 0x5C180200, // 001D MOVE R6 R1 - 0x7C100400, // 001E CALL R4 2 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(shadow_onoff), - /* K9 */ be_nested_str_weak(U1), - /* K10 */ be_nested_str_weak(shadow_bri), - /* K11 */ be_const_int(2), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0005, // 0004 LDINT R7 6 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0009, // 0006 JMPF R7 #0011 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 - 0x781E0004, // 000A JMPF R7 #0010 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 - 0x88280108, // 000D GETMBR R10 R0 K8 - 0x7C1C0600, // 000E CALL R7 3 - 0x80040E00, // 000F RET 1 R7 - 0x7002002D, // 0010 JMP #003F - 0x541E0007, // 0011 LDINT R7 8 - 0x1C1C0A07, // 0012 EQ R7 R5 R7 - 0x781E002A, // 0013 JMPF R7 #003F - 0x8C1C0104, // 0014 GETMET R7 R0 K4 - 0x7C1C0200, // 0015 CALL R7 1 - 0x1C1C0D05, // 0016 EQ R7 R6 K5 - 0x781E0005, // 0017 JMPF R7 #001E - 0x8C1C0706, // 0018 GETMET R7 R3 K6 - 0x88240909, // 0019 GETMBR R9 R4 K9 - 0x8828010A, // 001A GETMBR R10 R0 K10 - 0x7C1C0600, // 001B CALL R7 3 - 0x80040E00, // 001C RET 1 R7 - 0x70020020, // 001D JMP #003F - 0x1C1C0D0B, // 001E EQ R7 R6 K11 - 0x781E0005, // 001F JMPF R7 #0026 - 0x8C1C0706, // 0020 GETMET R7 R3 K6 - 0x88240909, // 0021 GETMBR R9 R4 K9 - 0x58280005, // 0022 LDCONST R10 K5 - 0x7C1C0600, // 0023 CALL R7 3 - 0x80040E00, // 0024 RET 1 R7 - 0x70020018, // 0025 JMP #003F - 0x1C1C0D0C, // 0026 EQ R7 R6 K12 - 0x781E0005, // 0027 JMPF R7 #002E - 0x8C1C0706, // 0028 GETMET R7 R3 K6 - 0x88240909, // 0029 GETMBR R9 R4 K9 - 0x542A00FD, // 002A LDINT R10 254 - 0x7C1C0600, // 002B CALL R7 3 - 0x80040E00, // 002C RET 1 R7 - 0x70020010, // 002D JMP #003F - 0x541E000E, // 002E LDINT R7 15 - 0x1C1C0C07, // 002F EQ R7 R6 R7 - 0x781E0005, // 0030 JMPF R7 #0037 - 0x8C1C0706, // 0031 GETMET R7 R3 K6 - 0x88240909, // 0032 GETMBR R9 R4 K9 - 0x58280005, // 0033 LDCONST R10 K5 - 0x7C1C0600, // 0034 CALL R7 3 - 0x80040E00, // 0035 RET 1 R7 - 0x70020007, // 0036 JMP #003F - 0x541E0010, // 0037 LDINT R7 17 - 0x1C1C0C07, // 0038 EQ R7 R6 R7 - 0x781E0004, // 0039 JMPF R7 #003F - 0x8C1C0706, // 003A GETMET R7 R3 K6 - 0x88240909, // 003B GETMBR R9 R4 K9 - 0x8828010A, // 003C GETMBR R10 R0 K10 - 0x7C1C0600, // 003D CALL R7 3 - 0x80040E00, // 003E RET 1 R7 - 0x601C0003, // 003F GETGBL R7 G3 - 0x5C200000, // 0040 MOVE R8 R0 - 0x7C1C0200, // 0041 CALL R7 1 - 0x8C1C0F0D, // 0042 GETMET R7 R7 K13 - 0x5C240200, // 0043 MOVE R9 R1 - 0x5C280400, // 0044 MOVE R10 R2 - 0x5C2C0600, // 0045 MOVE R11 R3 - 0x7C1C0800, // 0046 CALL R7 4 - 0x80040E00, // 0047 RET 1 R7 + 0x60100003, // 0010 GETGBL R4 G3 + 0x5C140000, // 0011 MOVE R5 R0 + 0x7C100200, // 0012 CALL R4 1 + 0x8C100904, // 0013 GETMET R4 R4 K4 + 0x5C180200, // 0014 MOVE R6 R1 + 0x7C100400, // 0015 CALL R4 2 + 0x80000000, // 0016 RET 0 }) ) ); @@ -591,23 +73,27 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light1, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ + ( &(const bvalue[16]) { /* constants */ /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(scale_uint), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(bri), - /* K7 */ be_nested_str_weak(power), - /* K8 */ be_nested_str_weak(update_shadow), - /* K9 */ be_nested_str_weak(shadow_onoff), - /* K10 */ be_nested_str_weak(attribute_updated), - /* K11 */ be_nested_str_weak(shadow_bri), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), + /* K4 */ be_nested_str_weak(call_remote_sync), + /* K5 */ be_nested_str_weak(Dimmer), + /* K6 */ be_nested_str_weak(parse_status), + /* K7 */ be_nested_str_weak(VIRTUAL), + /* K8 */ be_nested_str_weak(shadow_onoff), + /* K9 */ be_nested_str_weak(attribute_updated), + /* K10 */ be_nested_str_weak(shadow_bri), + /* K11 */ be_nested_str_weak(light), + /* K12 */ be_nested_str_weak(set), + /* K13 */ be_nested_str_weak(bri), + /* K14 */ be_nested_str_weak(power), + /* K15 */ be_nested_str_weak(update_shadow), }), be_str_weak(set_bri), &be_const_str_solidified, - ( &(const binstruction[65]) { /* code */ + ( &(const binstruction[89]) { /* code */ 0x140C0300, // 0000 LT R3 R1 K0 0x780E0000, // 0001 JMPF R3 #0003 0x58040000, // 0002 LDCONST R1 K0 @@ -625,54 +111,683 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ 0x4C0C0000, // 000E LDNIL R3 0x5C080600, // 000F MOVE R2 R3 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x740E001A, // 0011 JMPT R3 #002D - 0xA40E0400, // 0012 IMPORT R3 K2 - 0xB8120600, // 0013 GETNGBL R4 K3 - 0x8C100904, // 0014 GETMET R4 R4 K4 - 0x5C180200, // 0015 MOVE R6 R1 - 0x581C0000, // 0016 LDCONST R7 K0 - 0x542200FD, // 0017 LDINT R8 254 - 0x58240000, // 0018 LDCONST R9 K0 - 0x542A00FE, // 0019 LDINT R10 255 - 0x7C100C00, // 001A CALL R4 6 - 0x4C140000, // 001B LDNIL R5 - 0x1C140405, // 001C EQ R5 R2 R5 - 0x78160005, // 001D JMPF R5 #0024 - 0x8C140705, // 001E GETMET R5 R3 K5 - 0x601C0013, // 001F GETGBL R7 G19 - 0x7C1C0000, // 0020 CALL R7 0 - 0x981E0C04, // 0021 SETIDX R7 K6 R4 - 0x7C140400, // 0022 CALL R5 2 - 0x70020005, // 0023 JMP #002A - 0x8C140705, // 0024 GETMET R5 R3 K5 - 0x601C0013, // 0025 GETGBL R7 G19 - 0x7C1C0000, // 0026 CALL R7 0 - 0x981E0C04, // 0027 SETIDX R7 K6 R4 - 0x981E0E02, // 0028 SETIDX R7 K7 R2 - 0x7C140400, // 0029 CALL R5 2 - 0x8C140108, // 002A GETMET R5 R0 K8 - 0x7C140200, // 002B CALL R5 1 - 0x70020012, // 002C JMP #0040 - 0x4C0C0000, // 002D LDNIL R3 + 0x780E0015, // 0011 JMPF R3 #0028 + 0xB80E0400, // 0012 GETNGBL R3 K2 + 0x8C0C0703, // 0013 GETMET R3 R3 K3 + 0x5C140200, // 0014 MOVE R5 R1 + 0x58180000, // 0015 LDCONST R6 K0 + 0x541E00FD, // 0016 LDINT R7 254 + 0x58200000, // 0017 LDCONST R8 K0 + 0x54260063, // 0018 LDINT R9 100 + 0x7C0C0C00, // 0019 CALL R3 6 + 0x8C100104, // 001A GETMET R4 R0 K4 + 0x58180005, // 001B LDCONST R6 K5 + 0x601C0008, // 001C GETGBL R7 G8 + 0x5C200600, // 001D MOVE R8 R3 + 0x7C1C0200, // 001E CALL R7 1 + 0x7C100600, // 001F CALL R4 3 + 0x4C140000, // 0020 LDNIL R5 + 0x20140805, // 0021 NE R5 R4 R5 + 0x78160003, // 0022 JMPF R5 #0027 + 0x8C140106, // 0023 GETMET R5 R0 K6 + 0x5C1C0800, // 0024 MOVE R7 R4 + 0x5422000A, // 0025 LDINT R8 11 + 0x7C140600, // 0026 CALL R5 3 + 0x7002002F, // 0027 JMP #0058 + 0x880C0107, // 0028 GETMBR R3 R0 K7 + 0x780E0013, // 0029 JMPF R3 #003E + 0x4C0C0000, // 002A LDNIL R3 + 0x200C0403, // 002B NE R3 R2 R3 + 0x780E0007, // 002C JMPF R3 #0035 + 0x880C0108, // 002D GETMBR R3 R0 K8 0x200C0403, // 002E NE R3 R2 R3 - 0x780E0007, // 002F JMPF R3 #0038 - 0x880C0109, // 0030 GETMBR R3 R0 K9 - 0x200C0403, // 0031 NE R3 R2 R3 - 0x780E0004, // 0032 JMPF R3 #0038 - 0x8C0C010A, // 0033 GETMET R3 R0 K10 - 0x54160005, // 0034 LDINT R5 6 - 0x58180000, // 0035 LDCONST R6 K0 - 0x7C0C0600, // 0036 CALL R3 3 - 0x90021202, // 0037 SETMBR R0 K9 R2 - 0x880C010B, // 0038 GETMBR R3 R0 K11 - 0x200C0203, // 0039 NE R3 R1 R3 - 0x780E0004, // 003A JMPF R3 #0040 - 0x8C0C010A, // 003B GETMET R3 R0 K10 - 0x54160007, // 003C LDINT R5 8 - 0x58180000, // 003D LDCONST R6 K0 - 0x7C0C0600, // 003E CALL R3 3 - 0x90021601, // 003F SETMBR R0 K11 R1 - 0x80000000, // 0040 RET 0 + 0x780E0004, // 002F JMPF R3 #0035 + 0x8C0C0109, // 0030 GETMET R3 R0 K9 + 0x54160005, // 0031 LDINT R5 6 + 0x58180000, // 0032 LDCONST R6 K0 + 0x7C0C0600, // 0033 CALL R3 3 + 0x90021002, // 0034 SETMBR R0 K8 R2 + 0x880C010A, // 0035 GETMBR R3 R0 K10 + 0x200C0203, // 0036 NE R3 R1 R3 + 0x780E0004, // 0037 JMPF R3 #003D + 0x8C0C0109, // 0038 GETMET R3 R0 K9 + 0x54160007, // 0039 LDINT R5 8 + 0x58180000, // 003A LDCONST R6 K0 + 0x7C0C0600, // 003B CALL R3 3 + 0x90021401, // 003C SETMBR R0 K10 R1 + 0x70020019, // 003D JMP #0058 + 0xA40E1600, // 003E IMPORT R3 K11 + 0xB8120400, // 003F GETNGBL R4 K2 + 0x8C100903, // 0040 GETMET R4 R4 K3 + 0x5C180200, // 0041 MOVE R6 R1 + 0x581C0000, // 0042 LDCONST R7 K0 + 0x542200FD, // 0043 LDINT R8 254 + 0x58240000, // 0044 LDCONST R9 K0 + 0x542A00FE, // 0045 LDINT R10 255 + 0x7C100C00, // 0046 CALL R4 6 + 0x4C140000, // 0047 LDNIL R5 + 0x1C140405, // 0048 EQ R5 R2 R5 + 0x78160005, // 0049 JMPF R5 #0050 + 0x8C14070C, // 004A GETMET R5 R3 K12 + 0x601C0013, // 004B GETGBL R7 G19 + 0x7C1C0000, // 004C CALL R7 0 + 0x981E1A04, // 004D SETIDX R7 K13 R4 + 0x7C140400, // 004E CALL R5 2 + 0x70020005, // 004F JMP #0056 + 0x8C14070C, // 0050 GETMET R5 R3 K12 + 0x601C0013, // 0051 GETGBL R7 G19 + 0x7C1C0000, // 0052 CALL R7 0 + 0x981E1A04, // 0053 SETIDX R7 K13 R4 + 0x981E1C02, // 0054 SETIDX R7 K14 R2 + 0x7C140400, // 0055 CALL R5 2 + 0x8C14010F, // 0056 GETMET R5 R0 K15 + 0x7C140200, // 0057 CALL R5 1 + 0x80000000, // 0058 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_bri), + /* K2 */ be_const_int(0), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x90020302, // 0008 SETMBR R0 K1 K2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(light), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_nested_str_weak(find), + /* K5 */ be_nested_str_weak(power), + /* K6 */ be_nested_str_weak(shadow_onoff), + /* K7 */ be_nested_str_weak(attribute_updated), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(bri), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(scale_uint), + /* K12 */ be_nested_str_weak(shadow_bri), + /* K13 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x7406002B, // 0001 JMPT R1 #002E + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x74060029, // 0003 JMPT R1 #002E + 0xA4060400, // 0004 IMPORT R1 K2 + 0x8C080303, // 0005 GETMET R2 R1 K3 + 0x7C080200, // 0006 CALL R2 1 + 0x4C0C0000, // 0007 LDNIL R3 + 0x200C0403, // 0008 NE R3 R2 R3 + 0x780E0023, // 0009 JMPF R3 #002E + 0x8C0C0504, // 000A GETMET R3 R2 K4 + 0x58140005, // 000B LDCONST R5 K5 + 0x4C180000, // 000C LDNIL R6 + 0x7C0C0600, // 000D CALL R3 3 + 0x88100106, // 000E GETMBR R4 R0 K6 + 0x20100604, // 000F NE R4 R3 R4 + 0x78120004, // 0010 JMPF R4 #0016 + 0x8C100107, // 0011 GETMET R4 R0 K7 + 0x541A0005, // 0012 LDINT R6 6 + 0x581C0008, // 0013 LDCONST R7 K8 + 0x7C100600, // 0014 CALL R4 3 + 0x90020C03, // 0015 SETMBR R0 K6 R3 + 0x8C100504, // 0016 GETMET R4 R2 K4 + 0x58180009, // 0017 LDCONST R6 K9 + 0x4C1C0000, // 0018 LDNIL R7 + 0x7C100600, // 0019 CALL R4 3 + 0x4C140000, // 001A LDNIL R5 + 0x20140805, // 001B NE R5 R4 R5 + 0x78160010, // 001C JMPF R5 #002E + 0xB8161400, // 001D GETNGBL R5 K10 + 0x8C140B0B, // 001E GETMET R5 R5 K11 + 0x5C1C0800, // 001F MOVE R7 R4 + 0x58200008, // 0020 LDCONST R8 K8 + 0x542600FE, // 0021 LDINT R9 255 + 0x58280008, // 0022 LDCONST R10 K8 + 0x542E00FD, // 0023 LDINT R11 254 + 0x7C140C00, // 0024 CALL R5 6 + 0x5C100A00, // 0025 MOVE R4 R5 + 0x8814010C, // 0026 GETMBR R5 R0 K12 + 0x20140805, // 0027 NE R5 R4 R5 + 0x78160004, // 0028 JMPF R5 #002E + 0x8C140107, // 0029 GETMET R5 R0 K7 + 0x541E0007, // 002A LDINT R7 8 + 0x58200008, // 002B LDCONST R8 K8 + 0x7C140600, // 002C CALL R5 3 + 0x90021804, // 002D SETMBR R0 K12 R4 + 0x60040003, // 002E GETGBL R1 G3 + 0x5C080000, // 002F MOVE R2 R0 + 0x7C040200, // 0030 CALL R1 1 + 0x8C04030D, // 0031 GETMET R1 R1 K13 + 0x7C040200, // 0032 CALL R1 1 + 0x80000000, // 0033 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(tasmota_relay_index), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(ARG), + /* K4 */ be_const_int(0), + /* K5 */ be_const_int(1), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A000E, // 0001 JMPF R2 #0011 + 0x60080009, // 0002 GETGBL R2 G9 + 0x8C0C0302, // 0003 GETMET R3 R1 K2 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x4C180000, // 0005 LDNIL R6 + 0x7C0C0600, // 0006 CALL R3 3 + 0x7C080200, // 0007 CALL R2 1 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x88080101, // 0009 GETMBR R2 R0 K1 + 0x4C0C0000, // 000A LDNIL R3 + 0x20080403, // 000B NE R2 R2 R3 + 0x780A0003, // 000C JMPF R2 #0011 + 0x88080101, // 000D GETMBR R2 R0 K1 + 0x18080504, // 000E LE R2 R2 K4 + 0x780A0000, // 000F JMPF R2 #0011 + 0x90020305, // 0010 SETMBR R0 K1 K5 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(Dimmer), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(scale_uint), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(shadow_bri), + /* K7 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x540E000A, // 0007 LDINT R3 11 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E0017, // 0009 JMPF R3 #0022 + 0x600C0009, // 000A GETGBL R3 G9 + 0x8C100301, // 000B GETMET R4 R1 K1 + 0x58180002, // 000C LDCONST R6 K2 + 0x7C100400, // 000D CALL R4 2 + 0x7C0C0200, // 000E CALL R3 1 + 0x4C100000, // 000F LDNIL R4 + 0x20100604, // 0010 NE R4 R3 R4 + 0x7812000F, // 0011 JMPF R4 #0022 + 0xB8120600, // 0012 GETNGBL R4 K3 + 0x8C100904, // 0013 GETMET R4 R4 K4 + 0x5C180600, // 0014 MOVE R6 R3 + 0x581C0005, // 0015 LDCONST R7 K5 + 0x54220063, // 0016 LDINT R8 100 + 0x58240005, // 0017 LDCONST R9 K5 + 0x542A00FD, // 0018 LDINT R10 254 + 0x7C100C00, // 0019 CALL R4 6 + 0x88140106, // 001A GETMBR R5 R0 K6 + 0x20140805, // 001B NE R5 R4 R5 + 0x78160004, // 001C JMPF R5 #0022 + 0x8C140107, // 001D GETMET R5 R0 K7 + 0x541E0007, // 001E LDINT R7 8 + 0x58200005, // 001F LDCONST R8 K5 + 0x7C140600, // 0020 CALL R5 3 + 0x90020C04, // 0021 SETMBR R0 K6 R4 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(U1), + /* K8 */ be_nested_str_weak(shadow_bri), + /* K9 */ be_const_int(2), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[59]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0007, // 0004 LDINT R7 8 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E002A, // 0006 JMPF R7 #0032 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x70020020, // 0010 JMP #0032 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x58280005, // 0015 LDCONST R10 K5 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 + 0x70020018, // 0018 JMP #0032 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x542A00FD, // 001D LDINT R10 254 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 + 0x70020010, // 0020 JMP #0032 + 0x541E000E, // 0021 LDINT R7 15 + 0x1C1C0C07, // 0022 EQ R7 R6 R7 + 0x781E0005, // 0023 JMPF R7 #002A + 0x8C1C0706, // 0024 GETMET R7 R3 K6 + 0x88240907, // 0025 GETMBR R9 R4 K7 + 0x58280005, // 0026 LDCONST R10 K5 + 0x7C1C0600, // 0027 CALL R7 3 + 0x80040E00, // 0028 RET 1 R7 + 0x70020007, // 0029 JMP #0032 + 0x541E0010, // 002A LDINT R7 17 + 0x1C1C0C07, // 002B EQ R7 R6 R7 + 0x781E0004, // 002C JMPF R7 #0032 + 0x8C1C0706, // 002D GETMET R7 R3 K6 + 0x88240907, // 002E GETMBR R9 R4 K7 + 0x88280108, // 002F GETMBR R10 R0 K8 + 0x7C1C0600, // 0030 CALL R7 3 + 0x80040E00, // 0031 RET 1 R7 + 0x601C0003, // 0032 GETGBL R7 G3 + 0x5C200000, // 0033 MOVE R8 R0 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0F0B, // 0035 GETMET R7 R7 K11 + 0x5C240200, // 0036 MOVE R9 R1 + 0x5C280400, // 0037 MOVE R10 R2 + 0x5C2C0600, // 0038 MOVE R11 R3 + 0x7C1C0800, // 0039 CALL R7 4 + 0x80040E00, // 003A RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ + be_nested_proto( + 22, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(light), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(command), + /* K5 */ be_nested_str_weak(update_shadow_lazy), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(findsubval), + /* K8 */ be_nested_str_weak(set_bri), + /* K9 */ be_nested_str_weak(log), + /* K10 */ be_nested_str_weak(bri_X3A), + /* K11 */ be_nested_str_weak(publish_command), + /* K12 */ be_nested_str_weak(Bri), + /* K13 */ be_nested_str_weak(Dimmer), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(scale_uint), + /* K16 */ be_const_int(1), + /* K17 */ be_const_int(2), + /* K18 */ be_const_int(3), + /* K19 */ be_nested_str_weak(Power), + /* K20 */ be_nested_str_weak(invoke_request), + }), + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[119]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0xB8160200, // 0001 GETNGBL R5 K1 + 0x88140B02, // 0002 GETMBR R5 R5 K2 + 0x88180703, // 0003 GETMBR R6 R3 K3 + 0x881C0704, // 0004 GETMBR R7 R3 K4 + 0x54220007, // 0005 LDINT R8 8 + 0x1C200C08, // 0006 EQ R8 R6 R8 + 0x78220064, // 0007 JMPF R8 #006D + 0x8C200105, // 0008 GETMET R8 R0 K5 + 0x7C200200, // 0009 CALL R8 1 + 0x1C200F06, // 000A EQ R8 R7 K6 + 0x7822001A, // 000B JMPF R8 #0027 + 0x8C200507, // 000C GETMET R8 R2 K7 + 0x58280006, // 000D LDCONST R10 K6 + 0x7C200400, // 000E CALL R8 2 + 0x8C240108, // 000F GETMET R9 R0 K8 + 0x5C2C1000, // 0010 MOVE R11 R8 + 0x7C240400, // 0011 CALL R9 2 + 0x60240008, // 0012 GETGBL R9 G8 + 0x5C281000, // 0013 MOVE R10 R8 + 0x7C240200, // 0014 CALL R9 1 + 0x00261409, // 0015 ADD R9 K10 R9 + 0x900E1209, // 0016 SETMBR R3 K9 R9 + 0x8C24010B, // 0017 GETMET R9 R0 K11 + 0x582C000C, // 0018 LDCONST R11 K12 + 0x5C301000, // 0019 MOVE R12 R8 + 0x5834000D, // 001A LDCONST R13 K13 + 0xB83A1C00, // 001B GETNGBL R14 K14 + 0x8C381D0F, // 001C GETMET R14 R14 K15 + 0x5C401000, // 001D MOVE R16 R8 + 0x58440006, // 001E LDCONST R17 K6 + 0x544A00FD, // 001F LDINT R18 254 + 0x584C0006, // 0020 LDCONST R19 K6 + 0x54520063, // 0021 LDINT R20 100 + 0x7C380C00, // 0022 CALL R14 6 + 0x7C240A00, // 0023 CALL R9 5 + 0x50240200, // 0024 LDBOOL R9 1 0 + 0x80041200, // 0025 RET 1 R9 + 0x70020044, // 0026 JMP #006C + 0x1C200F10, // 0027 EQ R8 R7 K16 + 0x78220002, // 0028 JMPF R8 #002C + 0x50200200, // 0029 LDBOOL R8 1 0 + 0x80041000, // 002A RET 1 R8 + 0x7002003F, // 002B JMP #006C + 0x1C200F11, // 002C EQ R8 R7 K17 + 0x78220002, // 002D JMPF R8 #0031 + 0x50200200, // 002E LDBOOL R8 1 0 + 0x80041000, // 002F RET 1 R8 + 0x7002003A, // 0030 JMP #006C + 0x1C200F12, // 0031 EQ R8 R7 K18 + 0x78220002, // 0032 JMPF R8 #0036 + 0x50200200, // 0033 LDBOOL R8 1 0 + 0x80041000, // 0034 RET 1 R8 + 0x70020035, // 0035 JMP #006C + 0x54220003, // 0036 LDINT R8 4 + 0x1C200E08, // 0037 EQ R8 R7 R8 + 0x78220021, // 0038 JMPF R8 #005B + 0x8C200507, // 0039 GETMET R8 R2 K7 + 0x58280006, // 003A LDCONST R10 K6 + 0x7C200400, // 003B CALL R8 2 + 0x24241106, // 003C GT R9 R8 K6 + 0x8C280108, // 003D GETMET R10 R0 K8 + 0x5C301000, // 003E MOVE R12 R8 + 0x5C341200, // 003F MOVE R13 R9 + 0x7C280600, // 0040 CALL R10 3 + 0x60280008, // 0041 GETGBL R10 G8 + 0x5C2C1000, // 0042 MOVE R11 R8 + 0x7C280200, // 0043 CALL R10 1 + 0x002A140A, // 0044 ADD R10 K10 R10 + 0x900E120A, // 0045 SETMBR R3 K9 R10 + 0x8C28010B, // 0046 GETMET R10 R0 K11 + 0x5830000C, // 0047 LDCONST R12 K12 + 0x5C341000, // 0048 MOVE R13 R8 + 0x5838000D, // 0049 LDCONST R14 K13 + 0xB83E1C00, // 004A GETNGBL R15 K14 + 0x8C3C1F0F, // 004B GETMET R15 R15 K15 + 0x5C441000, // 004C MOVE R17 R8 + 0x58480006, // 004D LDCONST R18 K6 + 0x544E00FD, // 004E LDINT R19 254 + 0x58500006, // 004F LDCONST R20 K6 + 0x54560063, // 0050 LDINT R21 100 + 0x7C3C0C00, // 0051 CALL R15 6 + 0x58400013, // 0052 LDCONST R16 K19 + 0x78260001, // 0053 JMPF R9 #0056 + 0x58440010, // 0054 LDCONST R17 K16 + 0x70020000, // 0055 JMP #0057 + 0x58440006, // 0056 LDCONST R17 K6 + 0x7C280E00, // 0057 CALL R10 7 + 0x50280200, // 0058 LDBOOL R10 1 0 + 0x80041400, // 0059 RET 1 R10 + 0x70020010, // 005A JMP #006C + 0x54220004, // 005B LDINT R8 5 + 0x1C200E08, // 005C EQ R8 R7 R8 + 0x78220002, // 005D JMPF R8 #0061 + 0x50200200, // 005E LDBOOL R8 1 0 + 0x80041000, // 005F RET 1 R8 + 0x7002000A, // 0060 JMP #006C + 0x54220005, // 0061 LDINT R8 6 + 0x1C200E08, // 0062 EQ R8 R7 R8 + 0x78220002, // 0063 JMPF R8 #0067 + 0x50200200, // 0064 LDBOOL R8 1 0 + 0x80041000, // 0065 RET 1 R8 + 0x70020004, // 0066 JMP #006C + 0x54220006, // 0067 LDINT R8 7 + 0x1C200E08, // 0068 EQ R8 R7 R8 + 0x78220001, // 0069 JMPF R8 #006C + 0x50200200, // 006A LDBOOL R8 1 0 + 0x80041000, // 006B RET 1 R8 + 0x70020008, // 006C JMP #0076 + 0x60200003, // 006D GETGBL R8 G3 + 0x5C240000, // 006E MOVE R9 R0 + 0x7C200200, // 006F CALL R8 1 + 0x8C201114, // 0070 GETMET R8 R8 K20 + 0x5C280200, // 0071 MOVE R10 R1 + 0x5C2C0400, // 0072 MOVE R11 R2 + 0x5C300600, // 0073 MOVE R12 R3 + 0x7C200800, // 0074 CALL R8 4 + 0x80041000, // 0075 RET 1 R8 + 0x80000000, // 0076 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_value_dimmer +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(shadow_bri), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(_X25i_X25_X25), + /* K6 */ be_nested_str_weak(_X26_X23128261_X3B_X20), + }), + be_str_weak(web_value_dimmer), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A000C, // 0004 JMPF R2 #0012 + 0xB80A0400, // 0005 GETNGBL R2 K2 + 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x58140004, // 0008 LDCONST R5 K4 + 0x541A00FD, // 0009 LDINT R6 254 + 0x581C0004, // 000A LDCONST R7 K4 + 0x54220063, // 000B LDINT R8 100 + 0x7C080C00, // 000C CALL R2 6 + 0x600C0018, // 000D GETGBL R3 G24 + 0x58100005, // 000E LDCONST R4 K5 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x5C040600, // 0011 MOVE R1 R3 + 0x000A0C01, // 0012 ADD R2 K6 R1 + 0x80040400, // 0013 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X25s_X20_X25s), + /* K4 */ be_nested_str_weak(web_value_onoff), + /* K5 */ be_nested_str_weak(shadow_onoff), + /* K6 */ be_nested_str_weak(web_value_dimmer), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x8C180104, // 0006 GETMET R6 R0 K4 + 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x7C180400, // 0008 CALL R6 2 + 0x8C1C0106, // 0009 GETMET R7 R0 K6 + 0x7C1C0200, // 000A CALL R7 1 + 0x7C100600, // 000B CALL R4 3 + 0x7C080400, // 000C CALL R2 2 + 0x80000000, // 000D RET 0 }) ) ); @@ -682,28 +797,32 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ /******************************************************************** ** Solidified class: Matter_Plugin_Light1 ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; +extern const bclass be_class_Matter_Plugin_Light0; be_local_class(Matter_Plugin_Light1, - 2, - &be_class_Matter_Plugin_Device, - be_nested_map(15, + 1, + &be_class_Matter_Plugin_Light0, + be_nested_map(16, ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update_virtual, 1), be_const_closure(class_Matter_Plugin_Light1_update_virtual_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light1_web_values_closure) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light1_parse_status_closure) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light1_init_closure) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light1_update_shadow_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light1_invoke_request_closure) }, - { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_Light1_set_onoff_closure) }, - { be_const_key_weak(TYPE, 10), be_nested_str_weak(light1) }, - { be_const_key_weak(update_virtual, 11), be_const_closure(class_Matter_Plugin_Light1_update_virtual_closure) }, - { be_const_key_weak(UPDATE_TIME, 8), be_const_int(250) }, - { be_const_key_weak(shadow_bri, 1), be_const_var(1) }, { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X201_X20Dimmer) }, + { be_const_key_weak(update_shadow, 6), be_const_closure(class_Matter_Plugin_Light1_update_shadow_closure) }, + { be_const_key_weak(shadow_bri, 15), be_const_var(0) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(2, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Power), be_nested_str_weak(Bri), })) ) } )) }, - { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(invoke_request, 2), be_const_closure(class_Matter_Plugin_Light1_invoke_request_closure) }, + { be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(257, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(CLUSTERS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -802,14 +921,11 @@ be_local_class(Matter_Plugin_Light1, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(257, -1), be_const_int(2) }, - })) ) } )) }, + { be_const_key_weak(set_bri, 8), be_const_closure(class_Matter_Plugin_Light1_set_bri_closure) }, { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light1_read_attribute_closure) }, - { be_const_key_weak(shadow_onoff, -1), be_const_var(0) }, - { be_const_key_weak(set_bri, -1), be_const_closure(class_Matter_Plugin_Light1_set_bri_closure) }, + { be_const_key_weak(TYPE, 4), be_nested_str_weak(light1) }, + { be_const_key_weak(web_value_dimmer, -1), be_const_closure(class_Matter_Plugin_Light1_web_value_dimmer_closure) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Light1_parse_configuration_closure) }, })), be_str_weak(Matter_Plugin_Light1) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h index 82087ee1d..efe206a1c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h @@ -6,6 +6,370 @@ extern const bclass be_class_Matter_Plugin_Sensor; +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_parse_status, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(contains), + /* K1 */ be_nested_str_weak(TempUnit), + /* K2 */ be_nested_str_weak(temp_unit), + /* K3 */ be_nested_str_weak(PressureUnit), + /* K4 */ be_nested_str_weak(pressure_unit), + /* K5 */ be_nested_str_weak(tasmota_sensor_matcher), + /* K6 */ be_nested_str_weak(pre_value), + /* K7 */ be_nested_str_weak(match), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_nested_str_weak(value_changed), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x540E0009, // 0000 LDINT R3 10 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E001E, // 0002 JMPF R3 #0022 + 0x8C0C0300, // 0003 GETMET R3 R1 K0 + 0x58140001, // 0004 LDCONST R5 K1 + 0x7C0C0400, // 0005 CALL R3 2 + 0x780E0001, // 0006 JMPF R3 #0009 + 0x940C0301, // 0007 GETIDX R3 R1 K1 + 0x90020403, // 0008 SETMBR R0 K2 R3 + 0x8C0C0300, // 0009 GETMET R3 R1 K0 + 0x58140003, // 000A LDCONST R5 K3 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E0001, // 000C JMPF R3 #000F + 0x940C0303, // 000D GETIDX R3 R1 K3 + 0x90020803, // 000E SETMBR R0 K4 R3 + 0x880C0105, // 000F GETMBR R3 R0 K5 + 0x780E0010, // 0010 JMPF R3 #0022 + 0x8C0C0106, // 0011 GETMET R3 R0 K6 + 0x6014000A, // 0012 GETGBL R5 G10 + 0x88180105, // 0013 GETMBR R6 R0 K5 + 0x8C180D07, // 0014 GETMET R6 R6 K7 + 0x5C200200, // 0015 MOVE R8 R1 + 0x7C180400, // 0016 CALL R6 2 + 0x7C140200, // 0017 CALL R5 1 + 0x7C0C0400, // 0018 CALL R3 2 + 0x4C100000, // 0019 LDNIL R4 + 0x20100604, // 001A NE R4 R3 R4 + 0x78120005, // 001B JMPF R4 #0022 + 0x88100108, // 001C GETMBR R4 R0 K8 + 0x20100604, // 001D NE R4 R3 R4 + 0x78120002, // 001E JMPF R4 #0022 + 0x8C100109, // 001F GETMET R4 R0 K9 + 0x7C100200, // 0020 CALL R4 1 + 0x90021003, // 0021 SETMBR R0 K8 R3 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_parse_configuration, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_sensor_filter), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_nested_str_weak(tasmota_sensor_matcher), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(Rule_Matcher), + /* K6 */ be_nested_str_weak(parse), + /* K7 */ be_nested_str_weak(temp_unit), + /* K8 */ be_nested_str_weak(TEMP_C), + /* K9 */ be_nested_str_weak(pressure_unit), + /* K10 */ be_nested_str_weak(PRESSURE_HPA), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x8C080301, // 0000 GETMET R2 R1 K1 + 0x88100102, // 0001 GETMBR R4 R0 K2 + 0x7C080400, // 0002 CALL R2 2 + 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x780A0005, // 0005 JMPF R2 #000C + 0xB80A0800, // 0006 GETNGBL R2 K4 + 0x88080505, // 0007 GETMBR R2 R2 K5 + 0x8C080506, // 0008 GETMET R2 R2 K6 + 0x88100100, // 0009 GETMBR R4 R0 K0 + 0x7C080400, // 000A CALL R2 2 + 0x90020602, // 000B SETMBR R0 K3 R2 + 0x88080108, // 000C GETMBR R2 R0 K8 + 0x90020E02, // 000D SETMBR R0 K7 R2 + 0x8808010A, // 000E GETMBR R2 R0 K10 + 0x90021202, // 000F SETMBR R0 K9 R2 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: pre_value +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(pre_value), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80040200, // 0000 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_sensors +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(tasmota_sensor_matcher), + /* K2 */ be_nested_str_weak(pre_value), + /* K3 */ be_nested_str_weak(match), + /* K4 */ be_nested_str_weak(shadow_value), + /* K5 */ be_nested_str_weak(value_changed), + }), + be_str_weak(parse_sensors), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x740A0012, // 0001 JMPT R2 #0015 + 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x780A0010, // 0003 JMPF R2 #0015 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x6010000A, // 0005 GETGBL R4 G10 + 0x88140101, // 0006 GETMBR R5 R0 K1 + 0x8C140B03, // 0007 GETMET R5 R5 K3 + 0x5C1C0200, // 0008 MOVE R7 R1 + 0x7C140400, // 0009 CALL R5 2 + 0x7C100200, // 000A CALL R4 1 + 0x7C080400, // 000B CALL R2 2 + 0x4C0C0000, // 000C LDNIL R3 + 0x200C0403, // 000D NE R3 R2 R3 + 0x780E0005, // 000E JMPF R3 #0015 + 0x880C0104, // 000F GETMBR R3 R0 K4 + 0x200C0403, // 0010 NE R3 R2 R3 + 0x780E0002, // 0011 JMPF R3 #0015 + 0x8C0C0105, // 0012 GETMET R3 R0 K5 + 0x7C0C0200, // 0013 CALL R3 1 + 0x90020802, // 0014 SETMBR R0 K4 R2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: value_changed +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(value_changed), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(add_read_sensors_schedule), + /* K2 */ be_nested_str_weak(UPDATE_TIME), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x8C100301, // 0008 GETMET R4 R1 K1 + 0x88180102, // 0009 GETMBR R6 R0 K2 + 0x7C100400, // 000A CALL R4 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: filter_name_html +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_filter_name_html, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_sensor_filter), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(webserver), + /* K3 */ be_nested_str_weak(html_escape), + /* K4 */ be_nested_str_weak(split), + /* K5 */ be_nested_str_weak(_X23), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(), + }), + be_str_weak(filter_name_html), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060009, // 0001 JMPF R1 #000C + 0xA4060200, // 0002 IMPORT R1 K1 + 0xA40A0400, // 0003 IMPORT R2 K2 + 0x8C0C0503, // 0004 GETMET R3 R2 K3 + 0x8C140304, // 0005 GETMET R5 R1 K4 + 0x881C0100, // 0006 GETMBR R7 R0 K0 + 0x58200005, // 0007 LDCONST R8 K5 + 0x7C140600, // 0008 CALL R5 3 + 0x94140B06, // 0009 GETIDX R5 R5 K6 + 0x7C0C0400, // 000A CALL R3 2 + 0x80040600, // 000B RET 1 R3 + 0x80060E00, // 000C RET 1 K7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values_prefix +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor; +be_local_closure(class_Matter_Plugin_Sensor_web_values_prefix, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(filter_name_html), + /* K3 */ be_nested_str_weak(content_send), + /* K4 */ be_nested_str_weak(PREFIX), + /* K5 */ be_nested_str_weak(html_escape), + /* K6 */ be_nested_str_weak(), + }), + be_str_weak(web_values_prefix), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0002, // 0004 JMPT R3 #0008 + 0x8C0C0102, // 0005 GETMET R3 R0 K2 + 0x7C0C0200, // 0006 CALL R3 1 + 0x5C080600, // 0007 MOVE R2 R3 + 0x8C0C0303, // 0008 GETMET R3 R1 K3 + 0x60140018, // 0009 GETGBL R5 G24 + 0x88180104, // 000A GETMBR R6 R0 K4 + 0x780A0003, // 000B JMPF R2 #0010 + 0x8C1C0305, // 000C GETMET R7 R1 K5 + 0x5C240400, // 000D MOVE R9 R2 + 0x7C1C0400, // 000E CALL R7 2 + 0x70020000, // 000F JMP #0011 + 0x581C0006, // 0010 LDCONST R7 K6 + 0x7C140400, // 0011 CALL R5 2 + 0x7C0C0400, // 0012 CALL R3 2 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ @@ -65,216 +429,39 @@ be_local_closure(class_Matter_Plugin_Sensor_update_virtual, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: parse_sensors -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; -be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K2 */ be_nested_str_weak(pre_value), - /* K3 */ be_nested_str_weak(match), - /* K4 */ be_nested_str_weak(shadow_value), - /* K5 */ be_nested_str_weak(value_changed), - }), - be_str_weak(parse_sensors), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0012, // 0001 JMPT R2 #0015 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A0010, // 0003 JMPF R2 #0015 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x6010000A, // 0005 GETGBL R4 G10 - 0x88140101, // 0006 GETMBR R5 R0 K1 - 0x8C140B03, // 0007 GETMET R5 R5 K3 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x7C140400, // 0009 CALL R5 2 - 0x7C100200, // 000A CALL R4 1 - 0x7C080400, // 000B CALL R2 2 - 0x4C0C0000, // 000C LDNIL R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0005, // 000E JMPF R3 #0015 - 0x880C0104, // 000F GETMBR R3 R0 K4 - 0x200C0403, // 0010 NE R3 R2 R3 - 0x780E0002, // 0011 JMPF R3 #0015 - 0x8C0C0105, // 0012 GETMET R3 R0 K5 - 0x7C0C0200, // 0013 CALL R3 1 - 0x90020802, // 0014 SETMBR R0 K4 R2 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; -be_local_closure(class_Matter_Plugin_Sensor_parse_configuration, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_sensor_filter), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(Rule_Matcher), - /* K6 */ be_nested_str_weak(parse), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x8C080301, // 0000 GETMET R2 R1 K1 - 0x88100102, // 0001 GETMBR R4 R0 K2 - 0x7C080400, // 0002 CALL R2 2 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x780A0005, // 0005 JMPF R2 #000C - 0xB80A0800, // 0006 GETNGBL R2 K4 - 0x88080505, // 0007 GETMBR R2 R2 K5 - 0x8C080506, // 0008 GETMET R2 R2 K6 - 0x88100100, // 0009 GETMBR R4 R0 K0 - 0x7C080400, // 000A CALL R2 2 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; -be_local_closure(class_Matter_Plugin_Sensor_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(add_read_sensors_schedule), - /* K2 */ be_nested_str_weak(UPDATE_TIME), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x8C100301, // 0008 GETMET R4 R1 K1 - 0x88180102, // 0009 GETMBR R6 R0 K2 - 0x7C100400, // 000A CALL R4 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pre_value -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; -be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(pre_value), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80040200, // 0000 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: value_changed -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; -be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(value_changed), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Plugin_Sensor ********************************************************************/ extern const bclass be_class_Matter_Plugin_Device; be_local_class(Matter_Plugin_Sensor, - 3, + 5, &be_class_Matter_Plugin_Device, - be_nested_map(13, + be_nested_map(24, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ARG, 1), be_nested_str_weak(filter) }, - { be_const_key_weak(value_changed, -1), be_const_closure(class_Matter_Plugin_Sensor_value_changed_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_update_virtual_closure) }, - { be_const_key_weak(ARG_HINT, 9), be_nested_str_weak(Filter_X20pattern) }, - { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) }, - { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_sensors_closure) }, - { be_const_key_weak(JSON_NAME, 8), be_nested_str_weak() }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_configuration_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_init_closure) }, - { be_const_key_weak(pre_value, 12), be_const_closure(class_Matter_Plugin_Sensor_pre_value_closure) }, - { be_const_key_weak(shadow_value, -1), be_const_var(2) }, { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) }, + { be_const_key_weak(TEMP_C, -1), be_nested_str_weak(C) }, + { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) }, + { be_const_key_weak(shadow_value, 19), be_const_var(2) }, + { be_const_key_weak(PRESSURE_MMHG, -1), be_nested_str_weak(mmHg) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_status_closure) }, + { be_const_key_weak(TEMP_F, -1), be_nested_str_weak(F) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_update_virtual_closure) }, + { be_const_key_weak(pre_value, 7), be_const_closure(class_Matter_Plugin_Sensor_pre_value_closure) }, + { be_const_key_weak(ARG_HINT, 14), be_nested_str_weak(Filter_X20pattern) }, + { be_const_key_weak(tasmota_sensor_filter, 6), be_const_var(0) }, + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) }, + { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_sensors_closure) }, + { be_const_key_weak(parse_configuration, 20), be_const_closure(class_Matter_Plugin_Sensor_parse_configuration_closure) }, + { be_const_key_weak(PRESSURE_INHG, -1), be_nested_str_weak(inHg) }, + { be_const_key_weak(ARG, 11), be_nested_str_weak(filter) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_web_values_prefix_closure) }, + { be_const_key_weak(filter_name_html, 16), be_const_closure(class_Matter_Plugin_Sensor_filter_name_html_closure) }, + { be_const_key_weak(PRESSURE_HPA, -1), be_nested_str_weak(hPa) }, + { be_const_key_weak(init, 5), be_const_closure(class_Matter_Plugin_Sensor_init_closure) }, + { be_const_key_weak(value_changed, 21), be_const_closure(class_Matter_Plugin_Sensor_value_changed_closure) }, + { be_const_key_weak(pressure_unit, -1), be_const_var(4) }, + { be_const_key_weak(temp_unit, -1), be_const_var(3) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak() }, })), be_str_weak(Matter_Plugin_Sensor) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h index 9882dd40f..b0f63d3c8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h @@ -6,195 +6,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Contact; -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_contact), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_update_shadow, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X208), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(contains), - /* K10 */ be_nested_str_weak(ON), - /* K11 */ be_nested_str_weak(shadow_contact), - /* K12 */ be_nested_str_weak(attribute_updated), - /* K13 */ be_const_int(0), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x74060022, // 0006 JMPT R1 #002A - 0x60040008, // 0007 GETGBL R1 G8 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x7C040200, // 0009 CALL R1 1 - 0x00060401, // 000A ADD R1 K2 R1 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x50140200, // 000E LDBOOL R5 1 0 - 0x7C080600, // 000F CALL R2 3 - 0x4C0C0000, // 0010 LDNIL R3 - 0x200C0403, // 0011 NE R3 R2 R3 - 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0507, // 0013 GETMET R3 R2 K7 - 0x58140008, // 0014 LDCONST R5 K8 - 0x7C0C0400, // 0015 CALL R3 2 - 0x5C080600, // 0016 MOVE R2 R3 - 0x4C0C0000, // 0017 LDNIL R3 - 0x200C0403, // 0018 NE R3 R2 R3 - 0x780E000F, // 0019 JMPF R3 #002A - 0x8C0C0509, // 001A GETMET R3 R2 K9 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E000B, // 001D JMPF R3 #002A - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x1C0C070A, // 0021 EQ R3 R3 K10 - 0x8810010B, // 0022 GETMBR R4 R0 K11 - 0x20100803, // 0023 NE R4 R4 R3 - 0x78120003, // 0024 JMPF R4 #0029 - 0x8C10010C, // 0025 GETMET R4 R0 K12 - 0x541A0044, // 0026 LDINT R6 69 - 0x581C000D, // 0027 LDCONST R7 K13 - 0x7C100600, // 0028 CALL R4 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -263,6 +74,181 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_closure(class_Matter_Plugin_Sensor_Contact_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Contact, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_contact), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x50100000, // 0008 LDBOOL R4 0 0 + 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values_prefix +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Contact, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(content_send), + /* K5 */ be_nested_str_weak(PREFIX), + /* K6 */ be_nested_str_weak(html_escape), + /* K7 */ be_nested_str_weak(), + }), + be_str_weak(web_values_prefix), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x600C0008, // 0005 GETGBL R3 G8 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x000E0403, // 0008 ADD R3 K2 R3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x60140018, // 000B GETGBL R5 G24 + 0x88180105, // 000C GETMBR R6 R0 K5 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x5C240400, // 000F MOVE R9 R2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020000, // 0011 JMP #0013 + 0x581C0007, // 0012 LDCONST R7 K7 + 0x7C140400, // 0013 CALL R5 2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_closure(class_Matter_Plugin_Sensor_Contact_update_shadow, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Contact, + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(update_shadow), + /* K1 */ be_nested_str_weak(VIRTUAL), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(cmd), + /* K6 */ be_nested_str_weak(Status_X2010), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(StatusSNS), + /* K9 */ be_nested_str_weak(contains), + /* K10 */ be_nested_str_weak(ON), + /* K11 */ be_nested_str_weak(shadow_contact), + /* K12 */ be_nested_str_weak(attribute_updated), + /* K13 */ be_const_int(0), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0x60040003, // 0000 GETGBL R1 G3 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x7C040200, // 0004 CALL R1 1 + 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x74060022, // 0006 JMPT R1 #002A + 0x60040008, // 0007 GETGBL R1 G8 + 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x7C040200, // 0009 CALL R1 1 + 0x00060401, // 000A ADD R1 K2 R1 + 0xB80A0800, // 000B GETNGBL R2 K4 + 0x8C080505, // 000C GETMET R2 R2 K5 + 0x58100006, // 000D LDCONST R4 K6 + 0x50140200, // 000E LDBOOL R5 1 0 + 0x7C080600, // 000F CALL R2 3 + 0x4C0C0000, // 0010 LDNIL R3 + 0x200C0403, // 0011 NE R3 R2 R3 + 0x780E0003, // 0012 JMPF R3 #0017 + 0x8C0C0507, // 0013 GETMET R3 R2 K7 + 0x58140008, // 0014 LDCONST R5 K8 + 0x7C0C0400, // 0015 CALL R3 2 + 0x5C080600, // 0016 MOVE R2 R3 + 0x4C0C0000, // 0017 LDNIL R3 + 0x200C0403, // 0018 NE R3 R2 R3 + 0x780E000F, // 0019 JMPF R3 #002A + 0x8C0C0509, // 001A GETMET R3 R2 K9 + 0x5C140200, // 001B MOVE R5 R1 + 0x7C0C0400, // 001C CALL R3 2 + 0x780E000B, // 001D JMPF R3 #002A + 0x8C0C0507, // 001E GETMET R3 R2 K7 + 0x5C140200, // 001F MOVE R5 R1 + 0x7C0C0400, // 0020 CALL R3 2 + 0x1C0C070A, // 0021 EQ R3 R3 K10 + 0x8810010B, // 0022 GETMBR R4 R0 K11 + 0x20100803, // 0023 NE R4 R4 R3 + 0x78120003, // 0024 JMPF R4 #0029 + 0x8C10010C, // 0025 GETMET R4 R0 K12 + 0x541A0044, // 0026 LDINT R6 69 + 0x581C000D, // 0027 LDCONST R7 K13 + 0x7C100600, // 0028 CALL R4 3 + 0x90021603, // 0029 SETMBR R0 K11 R3 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ @@ -309,6 +295,180 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_closure(class_Matter_Plugin_Sensor_Contact_parse_status, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Contact, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Switch), + /* K2 */ be_nested_str_weak(tasmota_switch_index), + /* K3 */ be_nested_str_weak(ON), + /* K4 */ be_nested_str_weak(shadow_contact), + /* K5 */ be_nested_str_weak(attribute_updated), + /* K6 */ be_const_int(0), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x540E0009, // 0000 LDINT R3 10 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0017, // 0002 JMPF R3 #001B + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x60180008, // 0005 GETGBL R6 G8 + 0x881C0102, // 0006 GETMBR R7 R0 K2 + 0x7C180200, // 0007 CALL R6 1 + 0x001A0206, // 0008 ADD R6 K1 R6 + 0x7C100400, // 0009 CALL R4 2 + 0x1C100903, // 000A EQ R4 R4 K3 + 0x5C0C0800, // 000B MOVE R3 R4 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x4C140000, // 000D LDNIL R5 + 0x20100805, // 000E NE R4 R4 R5 + 0x78120009, // 000F JMPF R4 #001A + 0x88100104, // 0010 GETMBR R4 R0 K4 + 0x60140017, // 0011 GETGBL R5 G23 + 0x5C180600, // 0012 MOVE R6 R3 + 0x7C140200, // 0013 CALL R5 1 + 0x20100805, // 0014 NE R4 R4 R5 + 0x78120003, // 0015 JMPF R4 #001A + 0x8C100105, // 0016 GETMET R4 R0 K5 + 0x541A0044, // 0017 LDINT R6 69 + 0x581C0006, // 0018 LDCONST R7 K6 + 0x7C100600, // 0019 CALL R4 3 + 0x90020803, // 001A SETMBR R0 K4 R3 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Contact, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(Contact_X25i_X20_X25s), + /* K4 */ be_nested_str_weak(tasmota_switch_index), + /* K5 */ be_nested_str_weak(web_value_onoff), + /* K6 */ be_nested_str_weak(shadow_contact), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x8C1C0105, // 0007 GETMET R7 R0 K5 + 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C100600, // 000A CALL R4 3 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Contact, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_switch_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x18080504, // 0008 LE R2 R2 K4 + 0x780A0000, // 0009 JMPF R2 #000B + 0x90020103, // 000A SETMBR R0 K0 K3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Contact ********************************************************************/ @@ -316,29 +476,31 @@ extern const bclass be_class_Matter_Plugin_Device; be_local_class(Matter_Plugin_Sensor_Contact, 2, &be_class_Matter_Plugin_Device, - be_nested_map(16, + be_nested_map(19, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E_closure) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(shadow_contact, -1), be_const_var(1) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_init_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_virtual_closure) }, - { be_const_key_weak(update_shadow, 15), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_shadow_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_read_attribute_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(21, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(parse_configuration, 7), be_const_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Contact), })) ) } )) }, - { be_const_key_weak(ARG, 6), be_nested_str_weak(switch) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Contact) }, - { be_const_key_weak(tasmota_switch_index, 11), be_const_var(0) }, - { be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(21, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_shadow_closure) }, + { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Contact) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_closure) }, + { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix_closure) }, + { be_const_key_weak(shadow_contact, 4), be_const_var(1) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_virtual_closure) }, + { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Sensor_Contact_parse_status_closure) }, + { be_const_key_weak(ARG_HINT, 18), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, + { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -422,9 +584,10 @@ be_local_class(Matter_Plugin_Sensor_Contact, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(TYPE, 9), be_nested_str_weak(contact) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_read_attribute_closure) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration_closure) }, + { be_const_key_weak(UPDATE_TIME, 2), be_const_int(750) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(contact) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_init_closure) }, })), be_str_weak(Matter_Plugin_Sensor_Contact) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h index d74be2a22..9d3fe0e4d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h @@ -6,241 +6,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(val_onoff), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(Occupancy), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C080101, // 0000 GETMET R2 R0 K1 - 0x5C100200, // 0001 MOVE R4 R1 - 0x58140002, // 0002 LDCONST R5 K2 - 0x88180100, // 0003 GETMBR R6 R0 K0 - 0x601C0017, // 0004 GETGBL R7 G23 - 0x54220405, // 0005 LDINT R8 1030 - 0x58240003, // 0006 LDCONST R9 K3 - 0x7C080E00, // 0007 CALL R2 7 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x60080003, // 0009 GETGBL R2 G3 - 0x5C0C0000, // 000A MOVE R3 R0 - 0x7C080200, // 000B CALL R2 1 - 0x8C080504, // 000C GETMET R2 R2 K4 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_occupancy), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X208), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(contains), - /* K10 */ be_nested_str_weak(ON), - /* K11 */ be_nested_str_weak(shadow_occupancy), - /* K12 */ be_nested_str_weak(attribute_updated), - /* K13 */ be_const_int(0), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x74060022, // 0006 JMPT R1 #002A - 0x60040008, // 0007 GETGBL R1 G8 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x7C040200, // 0009 CALL R1 1 - 0x00060401, // 000A ADD R1 K2 R1 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x50140200, // 000E LDBOOL R5 1 0 - 0x7C080600, // 000F CALL R2 3 - 0x4C0C0000, // 0010 LDNIL R3 - 0x200C0403, // 0011 NE R3 R2 R3 - 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0507, // 0013 GETMET R3 R2 K7 - 0x58140008, // 0014 LDCONST R5 K8 - 0x7C0C0400, // 0015 CALL R3 2 - 0x5C080600, // 0016 MOVE R2 R3 - 0x4C0C0000, // 0017 LDNIL R3 - 0x200C0403, // 0018 NE R3 R2 R3 - 0x780E000F, // 0019 JMPF R3 #002A - 0x8C0C0509, // 001A GETMET R3 R2 K9 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E000B, // 001D JMPF R3 #002A - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x1C0C070A, // 0021 EQ R3 R3 K10 - 0x8810010B, // 0022 GETMBR R4 R0 K11 - 0x20100803, // 0023 NE R4 R4 R3 - 0x78120003, // 0024 JMPF R4 #0029 - 0x8C10010C, // 0025 GETMET R4 R0 K12 - 0x541A0405, // 0026 LDINT R6 1030 - 0x581C000D, // 0027 LDCONST R7 K13 - 0x7C100600, // 0028 CALL R4 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -328,6 +93,401 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_occupancy), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x50100000, // 0008 LDBOOL R4 0 0 + 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values_prefix +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(content_send), + /* K5 */ be_nested_str_weak(PREFIX), + /* K6 */ be_nested_str_weak(html_escape), + /* K7 */ be_nested_str_weak(), + }), + be_str_weak(web_values_prefix), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x600C0008, // 0005 GETGBL R3 G8 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x000E0403, // 0008 ADD R3 K2 R3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x60140018, // 000B GETGBL R5 G24 + 0x88180105, // 000C GETMBR R6 R0 K5 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x5C240400, // 000F MOVE R9 R2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020000, // 0011 JMP #0013 + 0x581C0007, // 0012 LDCONST R7 K7 + 0x7C140400, // 0013 CALL R5 2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(update_shadow), + /* K1 */ be_nested_str_weak(VIRTUAL), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(cmd), + /* K6 */ be_nested_str_weak(Status_X2010), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(StatusSNS), + /* K9 */ be_nested_str_weak(contains), + /* K10 */ be_nested_str_weak(ON), + /* K11 */ be_nested_str_weak(shadow_occupancy), + /* K12 */ be_nested_str_weak(attribute_updated), + /* K13 */ be_const_int(0), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0x60040003, // 0000 GETGBL R1 G3 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x7C040200, // 0004 CALL R1 1 + 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x74060022, // 0006 JMPT R1 #002A + 0x60040008, // 0007 GETGBL R1 G8 + 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x7C040200, // 0009 CALL R1 1 + 0x00060401, // 000A ADD R1 K2 R1 + 0xB80A0800, // 000B GETNGBL R2 K4 + 0x8C080505, // 000C GETMET R2 R2 K5 + 0x58100006, // 000D LDCONST R4 K6 + 0x50140200, // 000E LDBOOL R5 1 0 + 0x7C080600, // 000F CALL R2 3 + 0x4C0C0000, // 0010 LDNIL R3 + 0x200C0403, // 0011 NE R3 R2 R3 + 0x780E0003, // 0012 JMPF R3 #0017 + 0x8C0C0507, // 0013 GETMET R3 R2 K7 + 0x58140008, // 0014 LDCONST R5 K8 + 0x7C0C0400, // 0015 CALL R3 2 + 0x5C080600, // 0016 MOVE R2 R3 + 0x4C0C0000, // 0017 LDNIL R3 + 0x200C0403, // 0018 NE R3 R2 R3 + 0x780E000F, // 0019 JMPF R3 #002A + 0x8C0C0509, // 001A GETMET R3 R2 K9 + 0x5C140200, // 001B MOVE R5 R1 + 0x7C0C0400, // 001C CALL R3 2 + 0x780E000B, // 001D JMPF R3 #002A + 0x8C0C0507, // 001E GETMET R3 R2 K7 + 0x5C140200, // 001F MOVE R5 R1 + 0x7C0C0400, // 0020 CALL R3 2 + 0x1C0C070A, // 0021 EQ R3 R3 K10 + 0x8810010B, // 0022 GETMBR R4 R0 K11 + 0x20100803, // 0023 NE R4 R4 R3 + 0x78120003, // 0024 JMPF R4 #0029 + 0x8C10010C, // 0025 GETMET R4 R0 K12 + 0x541A0405, // 0026 LDINT R6 1030 + 0x581C000D, // 0027 LDCONST R7 K13 + 0x7C100600, // 0028 CALL R4 3 + 0x90021603, // 0029 SETMBR R0 K11 R3 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(val_onoff), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Occupancy), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x88180100, // 0003 GETMBR R6 R0 K0 + 0x601C0017, // 0004 GETGBL R7 G23 + 0x54220405, // 0005 LDINT R8 1030 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x60080003, // 0009 GETGBL R2 G3 + 0x5C0C0000, // 000A MOVE R3 R0 + 0x7C080200, // 000B CALL R2 1 + 0x8C080504, // 000C GETMET R2 R2 K4 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_parse_status, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Switch), + /* K2 */ be_nested_str_weak(tasmota_switch_index), + /* K3 */ be_nested_str_weak(ON), + /* K4 */ be_nested_str_weak(shadow_occupancy), + /* K5 */ be_nested_str_weak(attribute_updated), + /* K6 */ be_const_int(0), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x540E0009, // 0000 LDINT R3 10 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0017, // 0002 JMPF R3 #001B + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x60180008, // 0005 GETGBL R6 G8 + 0x881C0102, // 0006 GETMBR R7 R0 K2 + 0x7C180200, // 0007 CALL R6 1 + 0x001A0206, // 0008 ADD R6 K1 R6 + 0x7C100400, // 0009 CALL R4 2 + 0x1C100903, // 000A EQ R4 R4 K3 + 0x5C0C0800, // 000B MOVE R3 R4 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x4C140000, // 000D LDNIL R5 + 0x20100805, // 000E NE R4 R4 R5 + 0x78120009, // 000F JMPF R4 #001A + 0x88100104, // 0010 GETMBR R4 R0 K4 + 0x60140017, // 0011 GETGBL R5 G23 + 0x5C180600, // 0012 MOVE R6 R3 + 0x7C140200, // 0013 CALL R5 1 + 0x20100805, // 0014 NE R4 R4 R5 + 0x78120003, // 0015 JMPF R4 #001A + 0x8C100105, // 0016 GETMET R4 R0 K5 + 0x541A0405, // 0017 LDINT R6 1030 + 0x581C0006, // 0018 LDCONST R7 K6 + 0x7C100600, // 0019 CALL R4 3 + 0x90020803, // 001A SETMBR R0 K4 R3 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_switch_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x18080504, // 0008 LE R2 R2 K4 + 0x780A0000, // 0009 JMPF R2 #000B + 0x90020103, // 000A SETMBR R0 K0 K3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), + /* K4 */ be_nested_str_weak(tasmota_switch_index), + /* K5 */ be_nested_str_weak(web_value_onoff), + /* K6 */ be_nested_str_weak(shadow_occupancy), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x8C1C0105, // 0007 GETMET R7 R0 K5 + 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C100600, // 000A CALL R4 3 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Occupancy ********************************************************************/ @@ -335,18 +495,31 @@ extern const bclass be_class_Matter_Plugin_Device; be_local_class(Matter_Plugin_Sensor_Occupancy, 2, &be_class_Matter_Plugin_Device, - be_nested_map(16, + be_nested_map(19, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ARG_TYPE, 2), be_const_static_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E_closure) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_init_closure) }, - { be_const_key_weak(tasmota_switch_index, 9), be_const_var(0) }, - { be_const_key_weak(update_shadow, 14), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Occupancy) }, - { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(263, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(shadow_occupancy, -1), be_const_var(1) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Occupancy), + })) ) } )) }, { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) }, - { be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Occupancy) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_closure) }, + { be_const_key_weak(parse_configuration, 4), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual_closure) }, + { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_parse_status_closure) }, + { be_const_key_weak(ARG_HINT, 18), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, + { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -432,20 +605,10 @@ be_local_class(Matter_Plugin_Sensor_Occupancy, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(read_attribute, 4), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute_closure) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(263, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(1, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(Occupancy), - })) ) } )) }, - { be_const_key_weak(TYPE, 6), be_nested_str_weak(occupancy) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) }, - { be_const_key_weak(shadow_occupancy, -1), be_const_var(1) }, + { be_const_key_weak(tasmota_switch_index, 7), be_const_var(0) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(occupancy) }, + { be_const_key_weak(ARG_TYPE, 2), be_const_static_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_init_closure) }, })), be_str_weak(Matter_Plugin_Sensor_Occupancy) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h index 8934ec9f9..1d82ec3fa 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h @@ -54,7 +54,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_update_shadow, /* name */ /* K3 */ be_nested_str_weak(tasmota_switch_index), /* K4 */ be_nested_str_weak(tasmota), /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X208), + /* K6 */ be_nested_str_weak(Status_X2010), /* K7 */ be_nested_str_weak(find), /* K8 */ be_nested_str_weak(StatusSNS), /* K9 */ be_nested_str_weak(contains), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h index a69548646..2973b20d5 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h @@ -7,26 +7,56 @@ extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; /******************************************************************** -** Solidified function: +** Solidified function: read_attribute ********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E, /* name */ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(set), + /* K6 */ be_nested_str_weak(BOOL), + /* K7 */ be_nested_str_weak(shadow_leak), + /* K8 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[23]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0044, // 0004 LDINT R7 69 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0006, // 0006 JMPF R7 #000E + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0004, // 0008 JMPF R7 #000E + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x88280107, // 000B GETMBR R10 R0 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x601C0003, // 000E GETGBL R7 G3 + 0x5C200000, // 000F MOVE R8 R0 + 0x7C1C0200, // 0010 CALL R7 1 + 0x8C1C0F08, // 0011 GETMET R7 R7 K8 + 0x5C240200, // 0012 MOVE R9 R1 + 0x5C280400, // 0013 MOVE R10 R2 + 0x5C2C0600, // 0014 MOVE R11 R3 + 0x7C1C0800, // 0015 CALL R7 4 + 0x80040E00, // 0016 RET 1 R7 }) ) ); @@ -71,6 +101,61 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_init, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: web_values_prefix +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(content_send), + /* K5 */ be_nested_str_weak(PREFIX), + /* K6 */ be_nested_str_weak(html_escape), + /* K7 */ be_nested_str_weak(), + }), + be_str_weak(web_values_prefix), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x600C0008, // 0005 GETGBL R3 G8 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x000E0403, // 0008 ADD R3 K2 R3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x60140018, // 000B GETGBL R5 G24 + 0x88180105, // 000C GETMBR R6 R0 K5 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x5C240400, // 000F MOVE R9 R2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020000, // 0011 JMP #0013 + 0x581C0007, // 0012 LDCONST R7 K7 + 0x7C140400, // 0013 CALL R5 2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ @@ -92,7 +177,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow, /* name * /* K3 */ be_nested_str_weak(tasmota_switch_index), /* K4 */ be_nested_str_weak(tasmota), /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X208), + /* K6 */ be_nested_str_weak(Status_X2010), /* K7 */ be_nested_str_weak(find), /* K8 */ be_nested_str_weak(StatusSNS), /* K9 */ be_nested_str_weak(contains), @@ -153,116 +238,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow, /* name * /*******************************************************************/ -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_leak), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0044, // 0004 LDINT R7 69 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0010, // 0006 JMPF R7 #0018 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000E, // 0008 JMPF R7 #0018 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x601C0003, // 0018 GETGBL R7 G3 - 0x5C200000, // 0019 MOVE R8 R0 - 0x7C1C0200, // 001A CALL R7 1 - 0x8C1C0F09, // 001B GETMET R7 R7 K9 - 0x5C240200, // 001C MOVE R9 R1 - 0x5C280400, // 001D MOVE R10 R2 - 0x5C2C0600, // 001E MOVE R11 R3 - 0x7C1C0800, // 001F CALL R7 4 - 0x80040E00, // 0020 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ @@ -319,6 +294,180 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name /*******************************************************************/ +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_parse_status, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Switch), + /* K2 */ be_nested_str_weak(tasmota_switch_index), + /* K3 */ be_nested_str_weak(ON), + /* K4 */ be_nested_str_weak(shadow_leak), + /* K5 */ be_nested_str_weak(attribute_updated), + /* K6 */ be_const_int(0), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x540E0009, // 0000 LDINT R3 10 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0017, // 0002 JMPF R3 #001B + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x60180008, // 0005 GETGBL R6 G8 + 0x881C0102, // 0006 GETMBR R7 R0 K2 + 0x7C180200, // 0007 CALL R6 1 + 0x001A0206, // 0008 ADD R6 K1 R6 + 0x7C100400, // 0009 CALL R4 2 + 0x1C100903, // 000A EQ R4 R4 K3 + 0x5C0C0800, // 000B MOVE R3 R4 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x4C140000, // 000D LDNIL R5 + 0x20100805, // 000E NE R4 R4 R5 + 0x78120009, // 000F JMPF R4 #001A + 0x88100104, // 0010 GETMBR R4 R0 K4 + 0x60140017, // 0011 GETGBL R5 G23 + 0x5C180600, // 0012 MOVE R6 R3 + 0x7C140200, // 0013 CALL R5 1 + 0x20100805, // 0014 NE R4 R4 R5 + 0x78120003, // 0015 JMPF R4 #001A + 0x8C100105, // 0016 GETMET R4 R0 K5 + 0x541A0044, // 0017 LDINT R6 69 + 0x581C0006, // 0018 LDCONST R7 K6 + 0x7C100600, // 0019 CALL R4 3 + 0x90020803, // 001A SETMBR R0 K4 R3 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_switch_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x18080504, // 0008 LE R2 R2 K4 + 0x780A0000, // 0009 JMPF R2 #000B + 0x90020103, // 000A SETMBR R0 K0 K3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(Waterleak_X25i_X20_X25s), + /* K4 */ be_nested_str_weak(tasmota_switch_index), + /* K5 */ be_nested_str_weak(web_value_onoff), + /* K6 */ be_nested_str_weak(shadow_leak), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x8C1C0105, // 0007 GETMET R7 R0 K5 + 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C100600, // 000A CALL R4 3 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Waterleak ********************************************************************/ @@ -326,18 +475,31 @@ extern const bclass be_class_Matter_Plugin_Device; be_local_class(Matter_Plugin_Sensor_Waterleak, 2, &be_class_Matter_Plugin_Device, - be_nested_map(16, + be_nested_map(19, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ARG_TYPE, 2), be_const_static_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E_closure) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(67, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(tasmota_switch_index, 7), be_const_var(0) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Waterleak), + })) ) } )) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_init_closure) }, - { be_const_key_weak(shadow_leak, 15), be_const_var(1) }, - { be_const_key_weak(update_shadow, 4), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) }, - { be_const_key_weak(ARG, 11), be_nested_str_weak(switch) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) }, - { be_const_key_weak(CLUSTERS, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(shadow_leak, 6), be_const_var(1) }, + { be_const_key_weak(web_values, 18), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_closure) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration_closure) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual_closure) }, + { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_parse_status_closure) }, + { be_const_key_weak(ARG_HINT, 4), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, + { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -421,20 +583,10 @@ be_local_class(Matter_Plugin_Sensor_Waterleak, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(tasmota_switch_index, 9), be_const_var(0) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(1, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(Waterleak), - })) ) } )) }, - { be_const_key_weak(read_attribute, 14), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute_closure) }, - { be_const_key_weak(TYPE, 6), be_nested_str_weak(waterleak) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(67, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration_closure) }, + { be_const_key_weak(UPDATE_TIME, 2), be_const_int(750) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(waterleak) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) }, })), be_str_weak(Matter_Plugin_Sensor_Waterleak) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h deleted file mode 100644 index fb95b30e9..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h +++ /dev/null @@ -1,574 +0,0 @@ -/* Solidification of Matter_Plugin_3_Bridge_Light0.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Light0; - -/******************************************************************** -** Solidified function: set_onoff -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_closure(class_Matter_Plugin_Bridge_Light0_set_onoff, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light0, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(call_remote_sync), - /* K1 */ be_nested_str_weak(Power), - /* K2 */ be_nested_str_weak(tasmota_relay_index), - /* K3 */ be_nested_str_weak(1), - /* K4 */ be_nested_str_weak(0), - /* K5 */ be_nested_str_weak(parse_update), - }), - be_str_weak(set_onoff), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x60100008, // 0001 GETGBL R4 G8 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x00120204, // 0004 ADD R4 K1 R4 - 0x78060001, // 0005 JMPF R1 #0008 - 0x58140003, // 0006 LDCONST R5 K3 - 0x70020000, // 0007 JMP #0009 - 0x58140004, // 0008 LDCONST R5 K4 - 0x7C080600, // 0009 CALL R2 3 - 0x4C0C0000, // 000A LDNIL R3 - 0x200C0403, // 000B NE R3 R2 R3 - 0x780E0003, // 000C JMPF R3 #0011 - 0x8C0C0105, // 000D GETMET R3 R0 K5 - 0x5C140400, // 000E MOVE R5 R2 - 0x541A000A, // 000F LDINT R6 11 - 0x7C0C0600, // 0010 CALL R3 3 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_closure(class_Matter_Plugin_Bridge_Light0_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light0, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_onoff), - /* K2 */ be_nested_str_weak(tasmota_relay_index), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(ARG), - /* K5 */ be_const_int(1), - /* K6 */ be_const_int(0), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x60100009, // 000A GETGBL R4 G9 - 0x8C140703, // 000B GETMET R5 R3 K3 - 0x881C0104, // 000C GETMBR R7 R0 K4 - 0x58200005, // 000D LDCONST R8 K5 - 0x7C140600, // 000E CALL R5 3 - 0x7C100200, // 000F CALL R4 1 - 0x90020404, // 0010 SETMBR R0 K2 R4 - 0x88100102, // 0011 GETMBR R4 R0 K2 - 0x18100906, // 0012 LE R4 R4 K6 - 0x78120000, // 0013 JMPF R4 #0015 - 0x90020505, // 0014 SETMBR R0 K2 K5 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_closure(class_Matter_Plugin_Bridge_Light0_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light0, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(shadow_onoff), - /* K9 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0005, // 0004 LDINT R7 6 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0008, // 0006 JMPF R7 #0010 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 - 0x781E0004, // 000A JMPF R7 #0010 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 - 0x88280108, // 000D GETMBR R10 R0 K8 - 0x7C1C0600, // 000E CALL R7 3 - 0x80040E00, // 000F RET 1 R7 - 0x601C0003, // 0010 GETGBL R7 G3 - 0x5C200000, // 0011 MOVE R8 R0 - 0x7C1C0200, // 0012 CALL R7 1 - 0x8C1C0F09, // 0013 GETMET R7 R7 K9 - 0x5C240200, // 0014 MOVE R9 R1 - 0x5C280400, // 0015 MOVE R10 R2 - 0x5C2C0600, // 0016 MOVE R11 R3 - 0x7C1C0800, // 0017 CALL R7 4 - 0x80040E00, // 0018 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Bridge_Light0__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_closure(class_Matter_Plugin_Bridge_Light0_parse_update, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light0, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_relay_index), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(POWER), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(ON), - /* K6 */ be_nested_str_weak(shadow_onoff), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_const_int(0), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0x540E000A, // 0000 LDINT R3 11 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0024, // 0002 JMPF R3 #0028 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x1C100901, // 0005 EQ R4 R4 K1 - 0x78120009, // 0006 JMPF R4 #0011 - 0x8C100302, // 0007 GETMET R4 R1 K2 - 0x58180003, // 0008 LDCONST R6 K3 - 0x7C100400, // 0009 CALL R4 2 - 0x78120005, // 000A JMPF R4 #0011 - 0x8C100304, // 000B GETMET R4 R1 K4 - 0x58180003, // 000C LDCONST R6 K3 - 0x7C100400, // 000D CALL R4 2 - 0x1C100905, // 000E EQ R4 R4 K5 - 0x5C0C0800, // 000F MOVE R3 R4 - 0x70020007, // 0010 JMP #0019 - 0x8C100304, // 0011 GETMET R4 R1 K4 - 0x60180008, // 0012 GETGBL R6 G8 - 0x881C0100, // 0013 GETMBR R7 R0 K0 - 0x7C180200, // 0014 CALL R6 1 - 0x001A0606, // 0015 ADD R6 K3 R6 - 0x7C100400, // 0016 CALL R4 2 - 0x1C100905, // 0017 EQ R4 R4 K5 - 0x5C0C0800, // 0018 MOVE R3 R4 - 0x88100106, // 0019 GETMBR R4 R0 K6 - 0x4C140000, // 001A LDNIL R5 - 0x20100805, // 001B NE R4 R4 R5 - 0x78120009, // 001C JMPF R4 #0027 - 0x88100106, // 001D GETMBR R4 R0 K6 - 0x60140017, // 001E GETGBL R5 G23 - 0x5C180600, // 001F MOVE R6 R3 - 0x7C140200, // 0020 CALL R5 1 - 0x20100805, // 0021 NE R4 R4 R5 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100107, // 0023 GETMET R4 R0 K7 - 0x541A0005, // 0024 LDINT R6 6 - 0x581C0008, // 0025 LDCONST R7 K8 - 0x7C100600, // 0026 CALL R4 3 - 0x90020C03, // 0027 SETMBR R0 K6 R3 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_closure(class_Matter_Plugin_Bridge_Light0_invoke_request, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light0, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_onoff), - /* K6 */ be_nested_str_weak(publish_command), - /* K7 */ be_nested_str_weak(Power), - /* K8 */ be_const_int(1), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(shadow_onoff), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x541E0005, // 0004 LDINT R7 6 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0029, // 0006 JMPF R7 #0031 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0009, // 0008 JMPF R7 #0013 - 0x8C1C0105, // 0009 GETMET R7 R0 K5 - 0x50240000, // 000A LDBOOL R9 0 0 - 0x7C1C0400, // 000B CALL R7 2 - 0x8C1C0106, // 000C GETMET R7 R0 K6 - 0x58240007, // 000D LDCONST R9 K7 - 0x58280004, // 000E LDCONST R10 K4 - 0x7C1C0600, // 000F CALL R7 3 - 0x501C0200, // 0010 LDBOOL R7 1 0 - 0x80040E00, // 0011 RET 1 R7 - 0x7002001D, // 0012 JMP #0031 - 0x1C1C0D08, // 0013 EQ R7 R6 K8 - 0x781E0009, // 0014 JMPF R7 #001F - 0x8C1C0105, // 0015 GETMET R7 R0 K5 - 0x50240200, // 0016 LDBOOL R9 1 0 - 0x7C1C0400, // 0017 CALL R7 2 - 0x8C1C0106, // 0018 GETMET R7 R0 K6 - 0x58240007, // 0019 LDCONST R9 K7 - 0x58280008, // 001A LDCONST R10 K8 - 0x7C1C0600, // 001B CALL R7 3 - 0x501C0200, // 001C LDBOOL R7 1 0 - 0x80040E00, // 001D RET 1 R7 - 0x70020011, // 001E JMP #0031 - 0x1C1C0D09, // 001F EQ R7 R6 K9 - 0x781E000F, // 0020 JMPF R7 #0031 - 0x8C1C0105, // 0021 GETMET R7 R0 K5 - 0x8824010A, // 0022 GETMBR R9 R0 K10 - 0x78260000, // 0023 JMPF R9 #0025 - 0x50240001, // 0024 LDBOOL R9 0 1 - 0x50240200, // 0025 LDBOOL R9 1 0 - 0x7C1C0400, // 0026 CALL R7 2 - 0x8C1C0106, // 0027 GETMET R7 R0 K6 - 0x58240007, // 0028 LDCONST R9 K7 - 0x8828010A, // 0029 GETMBR R10 R0 K10 - 0x782A0001, // 002A JMPF R10 #002D - 0x58280008, // 002B LDCONST R10 K8 - 0x70020000, // 002C JMP #002E - 0x58280004, // 002D LDCONST R10 K4 - 0x7C1C0600, // 002E CALL R7 3 - 0x501C0200, // 002F LDBOOL R7 1 0 - 0x80040E00, // 0030 RET 1 R7 - 0x80000000, // 0031 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_closure(class_Matter_Plugin_Bridge_Light0_web_values, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light0, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 - 0x7C180400, // 0008 CALL R6 2 - 0x7C100400, // 0009 CALL R4 2 - 0x7C080400, // 000A CALL R2 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_closure(class_Matter_Plugin_Bridge_Light0_web_values_prefix, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light0, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Power), - /* K3 */ be_nested_str_weak(tasmota_relay_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), - be_str_weak(web_values_prefix), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 - 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 - 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 - 0x5C240400, // 000F MOVE R9 R2 - 0x7C1C0400, // 0010 CALL R7 2 - 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 - 0x7C140400, // 0013 CALL R5 2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Light0 -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_class(Matter_Plugin_Bridge_Light0, - 2, - &be_class_Matter_Plugin_Bridge_HTTP, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(shadow_onoff, 5), be_const_var(1) }, - { be_const_key_weak(tasmota_relay_index, 4), be_const_var(0) }, - { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_set_onoff_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_init_closure) }, - { be_const_key_weak(web_values_prefix, 9), be_const_closure(class_Matter_Plugin_Bridge_Light0_web_values_prefix_closure) }, - { be_const_key_weak(web_values, 15), be_const_closure(class_Matter_Plugin_Bridge_Light0_web_values_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light0) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, - { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_parse_update_closure) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Power_X3Cx_X3E_X20number) }, - { be_const_key_weak(read_attribute, 12), be_const_closure(class_Matter_Plugin_Bridge_Light0_read_attribute_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_invoke_request_closure) }, - { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Light_X200_X20On) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(256, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light0__X3Clambda_X3E_closure) }, - })), - be_str_weak(Matter_Plugin_Bridge_Light0) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h deleted file mode 100644 index 3263e3908..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h +++ /dev/null @@ -1,315 +0,0 @@ -/* Solidification of Matter_Plugin_3_Bridge_Sensor.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_parse_configuration, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_sensor_filter), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(Rule_Matcher), - /* K6 */ be_nested_str_weak(parse), - /* K7 */ be_nested_str_weak(temp_unit), - /* K8 */ be_nested_str_weak(TEMP_C), - /* K9 */ be_nested_str_weak(pressure_unit), - /* K10 */ be_nested_str_weak(PRESSURE_HPA), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x8C080301, // 0000 GETMET R2 R1 K1 - 0x88100102, // 0001 GETMBR R4 R0 K2 - 0x7C080400, // 0002 CALL R2 2 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x780A0005, // 0005 JMPF R2 #000C - 0xB80A0800, // 0006 GETNGBL R2 K4 - 0x88080505, // 0007 GETMBR R2 R2 K5 - 0x8C080506, // 0008 GETMET R2 R2 K6 - 0x88100100, // 0009 GETMBR R4 R0 K0 - 0x7C080400, // 000A CALL R2 2 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x88080108, // 000C GETMBR R2 R0 K8 - 0x90020E02, // 000D SETMBR R0 K7 R2 - 0x8808010A, // 000E GETMBR R2 R0 K10 - 0x90021202, // 000F SETMBR R0 K9 R2 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: value_changed -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_value_changed, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(value_changed), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_web_values_prefix, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(filter_name_html), - /* K3 */ be_nested_str_weak(content_send), - /* K4 */ be_nested_str_weak(PREFIX), - /* K5 */ be_nested_str_weak(html_escape), - /* K6 */ be_nested_str_weak(), - }), - be_str_weak(web_values_prefix), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x740E0002, // 0004 JMPT R3 #0008 - 0x8C0C0102, // 0005 GETMET R3 R0 K2 - 0x7C0C0200, // 0006 CALL R3 1 - 0x5C080600, // 0007 MOVE R2 R3 - 0x8C0C0303, // 0008 GETMET R3 R1 K3 - 0x60140018, // 0009 GETGBL R5 G24 - 0x88180104, // 000A GETMBR R6 R0 K4 - 0x780A0003, // 000B JMPF R2 #0010 - 0x8C1C0305, // 000C GETMET R7 R1 K5 - 0x5C240400, // 000D MOVE R9 R2 - 0x7C1C0400, // 000E CALL R7 2 - 0x70020000, // 000F JMP #0011 - 0x581C0006, // 0010 LDCONST R7 K6 - 0x7C140400, // 0011 CALL R5 2 - 0x7C0C0400, // 0012 CALL R3 2 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_parse_update, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(contains), - /* K1 */ be_nested_str_weak(TempUnit), - /* K2 */ be_nested_str_weak(temp_unit), - /* K3 */ be_nested_str_weak(PressureUnit), - /* K4 */ be_nested_str_weak(pressure_unit), - /* K5 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K6 */ be_nested_str_weak(pre_value), - /* K7 */ be_nested_str_weak(match), - /* K8 */ be_nested_str_weak(shadow_value), - /* K9 */ be_nested_str_weak(value_changed), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x540E0007, // 0000 LDINT R3 8 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E001E, // 0002 JMPF R3 #0022 - 0x8C0C0300, // 0003 GETMET R3 R1 K0 - 0x58140001, // 0004 LDCONST R5 K1 - 0x7C0C0400, // 0005 CALL R3 2 - 0x780E0001, // 0006 JMPF R3 #0009 - 0x940C0301, // 0007 GETIDX R3 R1 K1 - 0x90020403, // 0008 SETMBR R0 K2 R3 - 0x8C0C0300, // 0009 GETMET R3 R1 K0 - 0x58140003, // 000A LDCONST R5 K3 - 0x7C0C0400, // 000B CALL R3 2 - 0x780E0001, // 000C JMPF R3 #000F - 0x940C0303, // 000D GETIDX R3 R1 K3 - 0x90020803, // 000E SETMBR R0 K4 R3 - 0x880C0105, // 000F GETMBR R3 R0 K5 - 0x780E0010, // 0010 JMPF R3 #0022 - 0x8C0C0106, // 0011 GETMET R3 R0 K6 - 0x6014000A, // 0012 GETGBL R5 G10 - 0x88180105, // 0013 GETMBR R6 R0 K5 - 0x8C180D07, // 0014 GETMET R6 R6 K7 - 0x5C200200, // 0015 MOVE R8 R1 - 0x7C180400, // 0016 CALL R6 2 - 0x7C140200, // 0017 CALL R5 1 - 0x7C0C0400, // 0018 CALL R3 2 - 0x4C100000, // 0019 LDNIL R4 - 0x20100604, // 001A NE R4 R3 R4 - 0x78120005, // 001B JMPF R4 #0022 - 0x88100108, // 001C GETMBR R4 R0 K8 - 0x20100604, // 001D NE R4 R3 R4 - 0x78120002, // 001E JMPF R4 #0022 - 0x8C100109, // 001F GETMET R4 R0 K9 - 0x7C100200, // 0020 CALL R4 1 - 0x90021003, // 0021 SETMBR R0 K8 R3 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: filter_name_html -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_filter_name_html, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_sensor_filter), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(webserver), - /* K3 */ be_nested_str_weak(html_escape), - /* K4 */ be_nested_str_weak(split), - /* K5 */ be_nested_str_weak(_X23), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(), - }), - be_str_weak(filter_name_html), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060009, // 0001 JMPF R1 #000C - 0xA4060200, // 0002 IMPORT R1 K1 - 0xA40A0400, // 0003 IMPORT R2 K2 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x8C140304, // 0005 GETMET R5 R1 K4 - 0x881C0100, // 0006 GETMBR R7 R0 K0 - 0x58200005, // 0007 LDCONST R8 K5 - 0x7C140600, // 0008 CALL R5 3 - 0x94140B06, // 0009 GETIDX R5 R5 K6 - 0x7C0C0400, // 000A CALL R3 2 - 0x80040600, // 000B RET 1 R3 - 0x80060E00, // 000C RET 1 K7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pre_value -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_pre_value, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(pre_value), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80040200, // 0000 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_class(Matter_Plugin_Bridge_Sensor, - 5, - &be_class_Matter_Plugin_Bridge_HTTP, - be_nested_map(22, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Filter_X20pattern) }, - { be_const_key_weak(shadow_value, -1), be_const_var(2) }, - { be_const_key_weak(pre_value, 10), be_const_closure(class_Matter_Plugin_Bridge_Sensor_pre_value_closure) }, - { be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) }, - { be_const_key_weak(pressure_unit, -1), be_const_var(4) }, - { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak(filter) }, - { be_const_key_weak(PRESSURE_MMHG, -1), be_nested_str_weak(mmHg) }, - { be_const_key_weak(value_changed, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_value_changed_closure) }, - { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_parse_update_closure) }, - { be_const_key_weak(TEMP_C, -1), be_nested_str_weak(C) }, - { be_const_key_weak(temp_unit, 4), be_const_var(3) }, - { be_const_key_weak(PRESSURE_INHG, -1), be_nested_str_weak(inHg) }, - { be_const_key_weak(PRESSURE_HPA, 18), be_nested_str_weak(hPa) }, - { be_const_key_weak(PROBE_TIMEOUT, 16), be_const_int(1700) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_web_values_prefix_closure) }, - { be_const_key_weak(UPDATE_CMD, 13), be_nested_str_weak(Status_X208) }, - { be_const_key_weak(TEMP_F, -1), be_nested_str_weak(F) }, - { be_const_key_weak(filter_name_html, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_filter_name_html_closure) }, - { be_const_key_weak(UPDATE_TIME, 3), be_const_int(5000) }, - { be_const_key_weak(parse_configuration, 2), be_const_closure(class_Matter_Plugin_Bridge_Sensor_parse_configuration_closure) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h deleted file mode 100644 index fa6b7f956..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Air_Quality.h +++ /dev/null @@ -1,404 +0,0 @@ -/* Solidification of Matter_Plugin_3_Bridge_Sensor_Air_Quality.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Air_Quality' -extern bclosure *class_Matter_Plugin_Sensor_Air_Quality_read_attribute; - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(content_send), - /* K2 */ be_nested_str_weak(_X25s_X20_X25i_X20), - }), - be_str_weak(web_values_single), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0007, // 0002 JMPF R2 #000B - 0xA40A0000, // 0003 IMPORT R2 K0 - 0x8C0C0501, // 0004 GETMET R3 R2 K1 - 0x60140018, // 0005 GETGBL R5 G24 - 0x58180002, // 0006 LDCONST R6 K2 - 0x5C1C0000, // 0007 MOVE R7 R0 - 0x5C200200, // 0008 MOVE R8 R1 - 0x7C140600, // 0009 CALL R5 3 - 0x7C0C0400, // 000A CALL R3 2 - 0x80000000, // 000B RET 0 - }) - ), - &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, - }), - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(web_values_prefix), - /* K1 */ be_nested_str_weak(Air), - /* K2 */ be_nested_str_weak(shadow_air_quality), - /* K3 */ be_nested_str_weak(PM1), - /* K4 */ be_nested_str_weak(shadow_pm1), - /* K5 */ be_nested_str_weak(PM2_X2E5), - /* K6 */ be_nested_str_weak(shadow_pm2_5), - /* K7 */ be_nested_str_weak(PM10), - /* K8 */ be_nested_str_weak(shadow_pm10), - /* K9 */ be_nested_str_weak(CO2), - /* K10 */ be_nested_str_weak(shadow_co2), - /* K11 */ be_nested_str_weak(NO2), - /* K12 */ be_nested_str_weak(shadow_no2), - /* K13 */ be_nested_str_weak(TVOC), - /* K14 */ be_nested_str_weak(shadow_tvoc), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x84040000, // 0000 CLOSURE R1 P0 - 0x8C080100, // 0001 GETMET R2 R0 K0 - 0x7C080200, // 0002 CALL R2 1 - 0x5C080200, // 0003 MOVE R2 R1 - 0x580C0001, // 0004 LDCONST R3 K1 - 0x88100102, // 0005 GETMBR R4 R0 K2 - 0x7C080400, // 0006 CALL R2 2 - 0x5C080200, // 0007 MOVE R2 R1 - 0x580C0003, // 0008 LDCONST R3 K3 - 0x88100104, // 0009 GETMBR R4 R0 K4 - 0x7C080400, // 000A CALL R2 2 - 0x5C080200, // 000B MOVE R2 R1 - 0x580C0005, // 000C LDCONST R3 K5 - 0x88100106, // 000D GETMBR R4 R0 K6 - 0x7C080400, // 000E CALL R2 2 - 0x5C080200, // 000F MOVE R2 R1 - 0x580C0007, // 0010 LDCONST R3 K7 - 0x88100108, // 0011 GETMBR R4 R0 K8 - 0x7C080400, // 0012 CALL R2 2 - 0x5C080200, // 0013 MOVE R2 R1 - 0x580C0009, // 0014 LDCONST R3 K9 - 0x8810010A, // 0015 GETMBR R4 R0 K10 - 0x7C080400, // 0016 CALL R2 2 - 0x5C080200, // 0017 MOVE R2 R1 - 0x580C000B, // 0018 LDCONST R3 K11 - 0x8810010C, // 0019 GETMBR R4 R0 K12 - 0x7C080400, // 001A CALL R2 2 - 0x5C080200, // 001B MOVE R2 R1 - 0x580C000D, // 001C LDCONST R3 K13 - 0x8810010E, // 001D GETMBR R4 R0 K14 - 0x7C080400, // 001E CALL R2 2 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(prefix), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(ARG), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x60100008, // 0008 GETGBL R4 G8 - 0x8C140702, // 0009 GETMET R5 R3 K2 - 0x881C0103, // 000A GETMBR R7 R0 K3 - 0x7C140400, // 000B CALL R5 2 - 0x7C100200, // 000C CALL R4 1 - 0x90020204, // 000D SETMBR R0 K1 R4 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_update, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(prefix), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x540E0007, // 0000 LDINT R3 8 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C0300, // 0003 GETMET R3 R1 K0 - 0x88140101, // 0004 GETMBR R5 R0 K1 - 0x7C0C0400, // 0005 CALL R3 2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Air_Quality -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_class(Matter_Plugin_Bridge_Sensor_Air_Quality, - 8, - &be_class_Matter_Plugin_Bridge_HTTP, - be_nested_map(20, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Air_X20Quality) }, - { be_const_key_weak(shadow_tvoc, 8), be_const_var(7) }, - { be_const_key_weak(shadow_pm10, 7), be_const_var(4) }, - { be_const_key_weak(shadow_pm2_5, -1), be_const_var(3) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Sensor_X20Model) }, - { be_const_key_weak(shadow_co2, -1), be_const_var(5) }, - { be_const_key_weak(parse_update, 18), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_update_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute_closure) }, - { be_const_key_weak(prefix, 13), be_const_var(0) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(44, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values_closure) }, - { be_const_key_weak(shadow_pm1, 11), be_const_var(2) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_airquality) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(12, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(1068, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1069, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1070, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1037, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(91, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1066, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1043, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_init_closure) }, - { be_const_key_weak(UPDATE_TIME, 3), be_const_int(5000) }, - { be_const_key_weak(shadow_no2, 4), be_const_var(6) }, - { be_const_key_weak(shadow_air_quality, -1), be_const_var(1) }, - { be_const_key_weak(ARG, 0), be_nested_str_weak(airquality) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Air_Quality) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h deleted file mode 100644 index 5f27166aa..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h +++ /dev/null @@ -1,431 +0,0 @@ -/* Solidification of Matter_Plugin_3_Bridge_Sensor_Contact.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact; - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(tasmota_switch_index), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(ARG), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x60100009, // 0008 GETGBL R4 G9 - 0x8C140702, // 0009 GETMET R5 R3 K2 - 0x881C0103, // 000A GETMBR R7 R0 K3 - 0x58200004, // 000B LDCONST R8 K4 - 0x7C140600, // 000C CALL R5 3 - 0x7C100200, // 000D CALL R4 1 - 0x90020204, // 000E SETMBR R0 K1 R4 - 0x88100101, // 000F GETMBR R4 R0 K1 - 0x18100905, // 0010 LE R4 R4 K5 - 0x78120000, // 0011 JMPF R4 #0013 - 0x90020304, // 0012 SETMBR R0 K1 K4 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values_prefix, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), - be_str_weak(web_values_prefix), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 - 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 - 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 - 0x5C240400, // 000F MOVE R9 R2 - 0x7C1C0400, // 0010 CALL R7 2 - 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 - 0x7C140400, // 0013 CALL R5 2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_parse_update, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Switch), - /* K2 */ be_nested_str_weak(tasmota_switch_index), - /* K3 */ be_nested_str_weak(ON), - /* K4 */ be_nested_str_weak(shadow_contact), - /* K5 */ be_nested_str_weak(attribute_updated), - /* K6 */ be_const_int(0), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E0007, // 0000 LDINT R3 8 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0017, // 0002 JMPF R3 #001B - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x60180008, // 0005 GETGBL R6 G8 - 0x881C0102, // 0006 GETMBR R7 R0 K2 - 0x7C180200, // 0007 CALL R6 1 - 0x001A0206, // 0008 ADD R6 K1 R6 - 0x7C100400, // 0009 CALL R4 2 - 0x1C100903, // 000A EQ R4 R4 K3 - 0x5C0C0800, // 000B MOVE R3 R4 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120009, // 000F JMPF R4 #001A - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x60140017, // 0011 GETGBL R5 G23 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C140200, // 0013 CALL R5 1 - 0x20100805, // 0014 NE R4 R4 R5 - 0x78120003, // 0015 JMPF R4 #001A - 0x8C100105, // 0016 GETMET R4 R0 K5 - 0x541A0044, // 0017 LDINT R6 69 - 0x581C0006, // 0018 LDCONST R7 K6 - 0x7C100600, // 0019 CALL R4 3 - 0x90020803, // 001A SETMBR R0 K4 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_contact), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0044, // 0004 LDINT R7 69 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0010, // 0006 JMPF R7 #0018 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000E, // 0008 JMPF R7 #0018 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x601C0003, // 0018 GETGBL R7 G3 - 0x5C200000, // 0019 MOVE R8 R0 - 0x7C1C0200, // 001A CALL R7 1 - 0x8C1C0F09, // 001B GETMET R7 R7 K9 - 0x5C240200, // 001C MOVE R9 R1 - 0x5C280400, // 001D MOVE R10 R2 - 0x5C2C0600, // 001E MOVE R11 R3 - 0x7C1C0800, // 001F CALL R7 4 - 0x80040E00, // 0020 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Contact_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_contact), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 - 0x7C1C0400, // 0009 CALL R7 2 - 0x7C100600, // 000A CALL R4 3 - 0x7C080400, // 000B CALL R2 2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Contact -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_class(Matter_Plugin_Bridge_Sensor_Contact, - 2, - &be_class_Matter_Plugin_Bridge_HTTP, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ARG_TYPE, 5), be_const_static_closure(class_Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E_closure) }, - { be_const_key_weak(ARG_HINT, 4), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(shadow_contact, -1), be_const_var(1) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_init_closure) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values_prefix_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Contact) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) }, - { be_const_key_weak(parse_update, 11), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_parse_update_closure) }, - { be_const_key_weak(read_attribute, 12), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_read_attribute_closure) }, - { be_const_key_weak(CLUSTERS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(TYPES, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(21, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(TYPE, 6), be_nested_str_weak(http_contact) }, - { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) }, - { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Contact) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h deleted file mode 100644 index d4ff1c804..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h +++ /dev/null @@ -1,452 +0,0 @@ -/* Solidification of Matter_Plugin_3_Bridge_Sensor_Occupancy.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy; - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(tasmota_switch_index), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(ARG), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x60100009, // 0008 GETGBL R4 G9 - 0x8C140702, // 0009 GETMET R5 R3 K2 - 0x881C0103, // 000A GETMBR R7 R0 K3 - 0x58200004, // 000B LDCONST R8 K4 - 0x7C140600, // 000C CALL R5 3 - 0x7C100200, // 000D CALL R4 1 - 0x90020204, // 000E SETMBR R0 K1 R4 - 0x88100101, // 000F GETMBR R4 R0 K1 - 0x18100905, // 0010 LE R4 R4 K5 - 0x78120000, // 0011 JMPF R4 #0013 - 0x90020304, // 0012 SETMBR R0 K1 K4 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_parse_update, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Switch), - /* K2 */ be_nested_str_weak(tasmota_switch_index), - /* K3 */ be_nested_str_weak(ON), - /* K4 */ be_nested_str_weak(shadow_occupancy), - /* K5 */ be_nested_str_weak(attribute_updated), - /* K6 */ be_const_int(0), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E0007, // 0000 LDINT R3 8 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0017, // 0002 JMPF R3 #001B - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x60180008, // 0005 GETGBL R6 G8 - 0x881C0102, // 0006 GETMBR R7 R0 K2 - 0x7C180200, // 0007 CALL R6 1 - 0x001A0206, // 0008 ADD R6 K1 R6 - 0x7C100400, // 0009 CALL R4 2 - 0x1C100903, // 000A EQ R4 R4 K3 - 0x5C0C0800, // 000B MOVE R3 R4 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120009, // 000F JMPF R4 #001A - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x60140017, // 0011 GETGBL R5 G23 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C140200, // 0013 CALL R5 1 - 0x20100805, // 0014 NE R4 R4 R5 - 0x78120003, // 0015 JMPF R4 #001A - 0x8C100105, // 0016 GETMET R4 R0 K5 - 0x541A0405, // 0017 LDINT R6 1030 - 0x581C0006, // 0018 LDCONST R7 K6 - 0x7C100600, // 0019 CALL R4 3 - 0x90020803, // 001A SETMBR R0 K4 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), - be_str_weak(web_values_prefix), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 - 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 - 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 - 0x5C240400, // 000F MOVE R9 R2 - 0x7C1C0400, // 0010 CALL R7 2 - 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 - 0x7C140400, // 0013 CALL R5 2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_occupancy), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(3), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0405, // 0004 LDINT R7 1030 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0020, // 0006 JMPF R7 #0028 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000F, // 0008 JMPF R7 #0019 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x7002000E, // 0018 JMP #0028 - 0x1C1C0D09, // 0019 EQ R7 R6 K9 - 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C0706, // 001B GETMET R7 R3 K6 - 0x88240907, // 001C GETMBR R9 R4 K7 - 0x5828000A, // 001D LDCONST R10 K10 - 0x7C1C0600, // 001E CALL R7 3 - 0x80040E00, // 001F RET 1 R7 - 0x70020006, // 0020 JMP #0028 - 0x1C1C0D0B, // 0021 EQ R7 R6 K11 - 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C0706, // 0023 GETMET R7 R3 K6 - 0x88240907, // 0024 GETMBR R9 R4 K7 - 0x58280004, // 0025 LDCONST R10 K4 - 0x7C1C0600, // 0026 CALL R7 3 - 0x80040E00, // 0027 RET 1 R7 - 0x601C0003, // 0028 GETGBL R7 G3 - 0x5C200000, // 0029 MOVE R8 R0 - 0x7C1C0200, // 002A CALL R7 1 - 0x8C1C0F0C, // 002B GETMET R7 R7 K12 - 0x5C240200, // 002C MOVE R9 R1 - 0x5C280400, // 002D MOVE R10 R2 - 0x5C2C0600, // 002E MOVE R11 R3 - 0x7C1C0800, // 002F CALL R7 4 - 0x80040E00, // 0030 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_occupancy), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 - 0x7C1C0400, // 0009 CALL R7 2 - 0x7C100600, // 000A CALL R4 3 - 0x7C080400, // 000B CALL R2 2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Occupancy -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy, - 2, - &be_class_Matter_Plugin_Bridge_HTTP, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) }, - { be_const_key_weak(ARG_HINT, 12), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(shadow_occupancy, -1), be_const_var(1) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Occupancy) }, - { be_const_key_weak(TYPES, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(263, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) }, - { be_const_key_weak(parse_update, 14), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) }, - { be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1030, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(tasmota_switch_index, 6), be_const_var(0) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute_closure) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix_closure) }, - { be_const_key_weak(TYPE, 5), be_nested_str_weak(http_occupancy) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(UPDATE_CMD, 2), be_nested_str_weak(Status_X208) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Occupancy) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h deleted file mode 100644 index 48d9a153b..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h +++ /dev/null @@ -1,431 +0,0 @@ -/* Solidification of Matter_Plugin_3_Bridge_Sensor_Waterleak.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak; - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values_prefix, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), - be_str_weak(web_values_prefix), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 - 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 - 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 - 0x5C240400, // 000F MOVE R9 R2 - 0x7C1C0400, // 0010 CALL R7 2 - 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 - 0x7C140400, // 0013 CALL R5 2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(tasmota_switch_index), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(ARG), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x60100009, // 0008 GETGBL R4 G9 - 0x8C140702, // 0009 GETMET R5 R3 K2 - 0x881C0103, // 000A GETMBR R7 R0 K3 - 0x58200004, // 000B LDCONST R8 K4 - 0x7C140600, // 000C CALL R5 3 - 0x7C100200, // 000D CALL R4 1 - 0x90020204, // 000E SETMBR R0 K1 R4 - 0x88100101, // 000F GETMBR R4 R0 K1 - 0x18100905, // 0010 LE R4 R4 K5 - 0x78120000, // 0011 JMPF R4 #0013 - 0x90020304, // 0012 SETMBR R0 K1 K4 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Waterleak_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_Waterleak), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 - 0x7C1C0400, // 0009 CALL R7 2 - 0x7C100600, // 000A CALL R4 3 - 0x7C080400, // 000B CALL R2 2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_parse_update, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Switch), - /* K2 */ be_nested_str_weak(tasmota_switch_index), - /* K3 */ be_nested_str_weak(ON), - /* K4 */ be_nested_str_weak(shadow_Waterleak), - /* K5 */ be_nested_str_weak(attribute_updated), - /* K6 */ be_const_int(0), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E0007, // 0000 LDINT R3 8 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0017, // 0002 JMPF R3 #001B - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x60180008, // 0005 GETGBL R6 G8 - 0x881C0102, // 0006 GETMBR R7 R0 K2 - 0x7C180200, // 0007 CALL R6 1 - 0x001A0206, // 0008 ADD R6 K1 R6 - 0x7C100400, // 0009 CALL R4 2 - 0x1C100903, // 000A EQ R4 R4 K3 - 0x5C0C0800, // 000B MOVE R3 R4 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120009, // 000F JMPF R4 #001A - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x60140017, // 0011 GETGBL R5 G23 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C140200, // 0013 CALL R5 1 - 0x20100805, // 0014 NE R4 R4 R5 - 0x78120003, // 0015 JMPF R4 #001A - 0x8C100105, // 0016 GETMET R4 R0 K5 - 0x541A0044, // 0017 LDINT R6 69 - 0x581C0006, // 0018 LDCONST R7 K6 - 0x7C100600, // 0019 CALL R4 3 - 0x90020803, // 001A SETMBR R0 K4 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_Waterleak), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0044, // 0004 LDINT R7 69 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0010, // 0006 JMPF R7 #0018 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000E, // 0008 JMPF R7 #0018 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x601C0003, // 0018 GETGBL R7 G3 - 0x5C200000, // 0019 MOVE R8 R0 - 0x7C1C0200, // 001A CALL R7 1 - 0x8C1C0F09, // 001B GETMET R7 R7 K9 - 0x5C240200, // 001C MOVE R9 R1 - 0x5C280400, // 001D MOVE R10 R2 - 0x5C2C0600, // 001E MOVE R11 R3 - 0x7C1C0800, // 001F CALL R7 4 - 0x80040E00, // 0020 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Waterleak -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_HTTP; -be_local_class(Matter_Plugin_Bridge_Sensor_Waterleak, - 2, - &be_class_Matter_Plugin_Bridge_HTTP, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak__X3Clambda_X3E_closure) }, - { be_const_key_weak(ARG_HINT, 2), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values_prefix_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_init_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) }, - { be_const_key_weak(TYPES, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(67, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) }, - { be_const_key_weak(parse_update, 12), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_parse_update_closure) }, - { be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(tasmota_switch_index, 6), be_const_var(0) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_read_attribute_closure) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(TYPE, 5), be_nested_str_weak(http_waterleak) }, - { be_const_key_weak(shadow_Waterleak, -1), be_const_var(1) }, - { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Waterleak) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h index c69dec160..c6db3cd7e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h @@ -7,40 +7,81 @@ extern const bclass be_class_Matter_Plugin_Light2; /******************************************************************** -** Solidified function: init +** Solidified function: set_ct ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_init, /* name */ +be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 7, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light2, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_ct), - /* K2 */ be_nested_str_weak(update_ct_minmax), + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(ct_min), + /* K1 */ be_nested_str_weak(ct_max), + /* K2 */ be_nested_str_weak(BRIDGE), + /* K3 */ be_nested_str_weak(call_remote_sync), + /* K4 */ be_nested_str_weak(CT), + /* K5 */ be_nested_str_weak(parse_status), + /* K6 */ be_nested_str_weak(VIRTUAL), + /* K7 */ be_nested_str_weak(shadow_ct), + /* K8 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_nested_str_weak(light), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_nested_str_weak(ct), + /* K12 */ be_nested_str_weak(update_shadow), }), - be_str_weak(init), + be_str_weak(set_ct), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x54120144, // 0008 LDINT R4 325 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x8C100102, // 000A GETMET R4 R0 K2 - 0x7C100200, // 000B CALL R4 1 - 0x80000000, // 000C RET 0 + ( &(const binstruction[44]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x14080202, // 0001 LT R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040100, // 0003 GETMBR R1 R0 K0 + 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x24080202, // 0005 GT R2 R1 R2 + 0x780A0000, // 0006 JMPF R2 #0008 + 0x88040101, // 0007 GETMBR R1 R0 K1 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x780A000D, // 0009 JMPF R2 #0018 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x58100004, // 000B LDCONST R4 K4 + 0x60140008, // 000C GETGBL R5 G8 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C140200, // 000E CALL R5 1 + 0x7C080600, // 000F CALL R2 3 + 0x4C0C0000, // 0010 LDNIL R3 + 0x200C0403, // 0011 NE R3 R2 R3 + 0x780E0003, // 0012 JMPF R3 #0017 + 0x8C0C0105, // 0013 GETMET R3 R0 K5 + 0x5C140400, // 0014 MOVE R5 R2 + 0x541A000A, // 0015 LDINT R6 11 + 0x7C0C0600, // 0016 CALL R3 3 + 0x70020012, // 0017 JMP #002B + 0x88080106, // 0018 GETMBR R2 R0 K6 + 0x780A0008, // 0019 JMPF R2 #0023 + 0x88080107, // 001A GETMBR R2 R0 K7 + 0x20080202, // 001B NE R2 R1 R2 + 0x780A0004, // 001C JMPF R2 #0022 + 0x8C080108, // 001D GETMET R2 R0 K8 + 0x541202FF, // 001E LDINT R4 768 + 0x54160006, // 001F LDINT R5 7 + 0x7C080600, // 0020 CALL R2 3 + 0x90020E01, // 0021 SETMBR R0 K7 R1 + 0x70020007, // 0022 JMP #002B + 0xA40A1200, // 0023 IMPORT R2 K9 + 0x8C0C050A, // 0024 GETMET R3 R2 K10 + 0x60140013, // 0025 GETGBL R5 G19 + 0x7C140000, // 0026 CALL R5 0 + 0x98161601, // 0027 SETIDX R5 K11 R1 + 0x7C0C0400, // 0028 CALL R3 2 + 0x8C0C010C, // 0029 GETMET R3 R0 K12 + 0x7C0C0200, // 002A CALL R3 1 + 0x80000000, // 002B RET 0 }) ) ); @@ -53,7 +94,7 @@ be_local_closure(class_Matter_Plugin_Light2_init, /* name */ extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ be_nested_proto( - 13, /* nstack */ + 12, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -61,265 +102,92 @@ be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light2, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(light), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(update_shadow_lazy), - /* K6 */ be_nested_str_weak(findsubval), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(set_ct), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(ct_X3A), - /* K11 */ be_nested_str_weak(publish_command), - /* K12 */ be_nested_str_weak(CT), - /* K13 */ be_nested_str_weak(invoke_request), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(command), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_nested_str_weak(findsubval), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(ct_min), + /* K8 */ be_nested_str_weak(ct_max), + /* K9 */ be_nested_str_weak(set_ct), + /* K10 */ be_nested_str_weak(log), + /* K11 */ be_nested_str_weak(ct_X3A), + /* K12 */ be_nested_str_weak(publish_command), + /* K13 */ be_nested_str_weak(CT), + /* K14 */ be_nested_str_weak(invoke_request), }), be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[59]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0xB8160200, // 0001 GETNGBL R5 K1 - 0x88140B02, // 0002 GETMBR R5 R5 K2 + ( &(const binstruction[66]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140702, // 0002 GETMBR R5 R3 K2 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C0704, // 0004 GETMBR R7 R3 K4 - 0x542202FF, // 0005 LDINT R8 768 - 0x1C200C08, // 0006 EQ R8 R6 R8 - 0x78220028, // 0007 JMPF R8 #0031 - 0x8C200105, // 0008 GETMET R8 R0 K5 - 0x7C200200, // 0009 CALL R8 1 - 0x54220009, // 000A LDINT R8 10 - 0x1C200E08, // 000B EQ R8 R7 R8 - 0x78220011, // 000C JMPF R8 #001F - 0x8C200506, // 000D GETMET R8 R2 K6 - 0x58280007, // 000E LDCONST R10 K7 - 0x7C200400, // 000F CALL R8 2 - 0x8C240108, // 0010 GETMET R9 R0 K8 - 0x5C2C1000, // 0011 MOVE R11 R8 - 0x7C240400, // 0012 CALL R9 2 - 0x60240008, // 0013 GETGBL R9 G8 - 0x5C281000, // 0014 MOVE R10 R8 - 0x7C240200, // 0015 CALL R9 1 - 0x00261409, // 0016 ADD R9 K10 R9 - 0x900E1209, // 0017 SETMBR R3 K9 R9 - 0x8C24010B, // 0018 GETMET R9 R0 K11 - 0x582C000C, // 0019 LDCONST R11 K12 - 0x5C301000, // 001A MOVE R12 R8 - 0x7C240600, // 001B CALL R9 3 - 0x50240200, // 001C LDBOOL R9 1 0 - 0x80041200, // 001D RET 1 R9 - 0x70020010, // 001E JMP #0030 - 0x54220046, // 001F LDINT R8 71 - 0x1C200E08, // 0020 EQ R8 R7 R8 - 0x78220002, // 0021 JMPF R8 #0025 - 0x50200200, // 0022 LDBOOL R8 1 0 - 0x80041000, // 0023 RET 1 R8 - 0x7002000A, // 0024 JMP #0030 - 0x5422004A, // 0025 LDINT R8 75 - 0x1C200E08, // 0026 EQ R8 R7 R8 - 0x78220002, // 0027 JMPF R8 #002B - 0x50200200, // 0028 LDBOOL R8 1 0 - 0x80041000, // 0029 RET 1 R8 - 0x70020004, // 002A JMP #0030 - 0x5422004B, // 002B LDINT R8 76 - 0x1C200E08, // 002C EQ R8 R7 R8 - 0x78220001, // 002D JMPF R8 #0030 - 0x50200200, // 002E LDBOOL R8 1 0 - 0x80041000, // 002F RET 1 R8 - 0x70020008, // 0030 JMP #003A - 0x60200003, // 0031 GETGBL R8 G3 - 0x5C240000, // 0032 MOVE R9 R0 - 0x7C200200, // 0033 CALL R8 1 - 0x8C20110D, // 0034 GETMET R8 R8 K13 - 0x5C280200, // 0035 MOVE R10 R1 - 0x5C2C0400, // 0036 MOVE R11 R2 - 0x5C300600, // 0037 MOVE R12 R3 - 0x7C200800, // 0038 CALL R8 4 - 0x80041000, // 0039 RET 1 R8 - 0x80000000, // 003A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(light), - /* K2 */ be_nested_str_weak(update_ct_minmax), - /* K3 */ be_nested_str_weak(update_shadow), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(ct), - /* K7 */ be_nested_str_weak(shadow_ct), - /* K8 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x7406001D, // 0001 JMPT R1 #0020 - 0xA4060200, // 0002 IMPORT R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x60080003, // 0005 GETGBL R2 G3 - 0x5C0C0000, // 0006 MOVE R3 R0 - 0x7C080200, // 0007 CALL R2 1 - 0x8C080503, // 0008 GETMET R2 R2 K3 - 0x7C080200, // 0009 CALL R2 1 - 0x8C080304, // 000A GETMET R2 R1 K4 - 0x7C080200, // 000B CALL R2 1 - 0x4C0C0000, // 000C LDNIL R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E000F, // 000E JMPF R3 #001F - 0x8C0C0505, // 000F GETMET R3 R2 K5 - 0x58140006, // 0010 LDCONST R5 K6 - 0x4C180000, // 0011 LDNIL R6 - 0x7C0C0600, // 0012 CALL R3 3 - 0x4C100000, // 0013 LDNIL R4 - 0x1C100604, // 0014 EQ R4 R3 R4 - 0x78120000, // 0015 JMPF R4 #0017 - 0x880C0107, // 0016 GETMBR R3 R0 K7 - 0x88100107, // 0017 GETMBR R4 R0 K7 - 0x20100604, // 0018 NE R4 R3 R4 - 0x78120004, // 0019 JMPF R4 #001F - 0x8C100108, // 001A GETMET R4 R0 K8 - 0x541A02FF, // 001B LDINT R6 768 - 0x541E0006, // 001C LDINT R7 7 - 0x7C100600, // 001D CALL R4 3 - 0x90020E03, // 001E SETMBR R0 K7 R3 - 0x70020004, // 001F JMP #0025 - 0x60040003, // 0020 GETGBL R1 G3 - 0x5C080000, // 0021 MOVE R2 R0 - 0x7C040200, // 0022 CALL R1 1 - 0x8C040303, // 0023 GETMET R1 R1 K3 - 0x7C040200, // 0024 CALL R1 1 - 0x80000000, // 0025 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(CT), - /* K2 */ be_nested_str_weak(set_ct), - /* K3 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0300, // 0001 GETMET R3 R1 K0 - 0x58140001, // 0002 LDCONST R5 K1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x7C080200, // 0004 CALL R2 1 - 0x4C0C0000, // 0005 LDNIL R3 - 0x200C0403, // 0006 NE R3 R2 R3 - 0x780E0002, // 0007 JMPF R3 #000B - 0x8C0C0102, // 0008 GETMET R3 R0 K2 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x600C0003, // 000B GETGBL R3 G3 - 0x5C100000, // 000C MOVE R4 R0 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0703, // 000E GETMET R3 R3 K3 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_ct -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(ct_min), - /* K1 */ be_nested_str_weak(ct_max), - /* K2 */ be_nested_str_weak(VIRTUAL), - /* K3 */ be_nested_str_weak(light), - /* K4 */ be_nested_str_weak(set), - /* K5 */ be_nested_str_weak(ct), - /* K6 */ be_nested_str_weak(update_shadow), - /* K7 */ be_nested_str_weak(shadow_ct), - /* K8 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(set_ct), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x14080202, // 0001 LT R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x24080202, // 0005 GT R2 R1 R2 - 0x780A0000, // 0006 JMPF R2 #0008 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x740A0008, // 0009 JMPT R2 #0013 - 0xA40A0600, // 000A IMPORT R2 K3 - 0x8C0C0504, // 000B GETMET R3 R2 K4 - 0x60140013, // 000C GETGBL R5 G19 - 0x7C140000, // 000D CALL R5 0 - 0x98160A01, // 000E SETIDX R5 K5 R1 - 0x7C0C0400, // 000F CALL R3 2 - 0x8C0C0106, // 0010 GETMET R3 R0 K6 - 0x7C0C0200, // 0011 CALL R3 1 - 0x70020007, // 0012 JMP #001B - 0x88080107, // 0013 GETMBR R2 R0 K7 - 0x20080202, // 0014 NE R2 R1 R2 - 0x780A0004, // 0015 JMPF R2 #001B - 0x8C080108, // 0016 GETMET R2 R0 K8 - 0x541202FF, // 0017 LDINT R4 768 - 0x54160006, // 0018 LDINT R5 7 - 0x7C080600, // 0019 CALL R2 3 - 0x90020E01, // 001A SETMBR R0 K7 R1 - 0x80000000, // 001B RET 0 + 0x541E02FF, // 0004 LDINT R7 768 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0030, // 0006 JMPF R7 #0038 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x541E0009, // 0009 LDINT R7 10 + 0x1C1C0C07, // 000A EQ R7 R6 R7 + 0x781E0019, // 000B JMPF R7 #0026 + 0x8C1C0505, // 000C GETMET R7 R2 K5 + 0x58240006, // 000D LDCONST R9 K6 + 0x7C1C0400, // 000E CALL R7 2 + 0x88200107, // 000F GETMBR R8 R0 K7 + 0x14200E08, // 0010 LT R8 R7 R8 + 0x78220000, // 0011 JMPF R8 #0013 + 0x881C0107, // 0012 GETMBR R7 R0 K7 + 0x88200108, // 0013 GETMBR R8 R0 K8 + 0x24200E08, // 0014 GT R8 R7 R8 + 0x78220000, // 0015 JMPF R8 #0017 + 0x881C0108, // 0016 GETMBR R7 R0 K8 + 0x8C200109, // 0017 GETMET R8 R0 K9 + 0x5C280E00, // 0018 MOVE R10 R7 + 0x7C200400, // 0019 CALL R8 2 + 0x60200008, // 001A GETGBL R8 G8 + 0x5C240E00, // 001B MOVE R9 R7 + 0x7C200200, // 001C CALL R8 1 + 0x00221608, // 001D ADD R8 K11 R8 + 0x900E1408, // 001E SETMBR R3 K10 R8 + 0x8C20010C, // 001F GETMET R8 R0 K12 + 0x5828000D, // 0020 LDCONST R10 K13 + 0x5C2C0E00, // 0021 MOVE R11 R7 + 0x7C200600, // 0022 CALL R8 3 + 0x50200200, // 0023 LDBOOL R8 1 0 + 0x80041000, // 0024 RET 1 R8 + 0x70020010, // 0025 JMP #0037 + 0x541E0046, // 0026 LDINT R7 71 + 0x1C1C0C07, // 0027 EQ R7 R6 R7 + 0x781E0002, // 0028 JMPF R7 #002C + 0x501C0200, // 0029 LDBOOL R7 1 0 + 0x80040E00, // 002A RET 1 R7 + 0x7002000A, // 002B JMP #0037 + 0x541E004A, // 002C LDINT R7 75 + 0x1C1C0C07, // 002D EQ R7 R6 R7 + 0x781E0002, // 002E JMPF R7 #0032 + 0x501C0200, // 002F LDBOOL R7 1 0 + 0x80040E00, // 0030 RET 1 R7 + 0x70020004, // 0031 JMP #0037 + 0x541E004B, // 0032 LDINT R7 76 + 0x1C1C0C07, // 0033 EQ R7 R6 R7 + 0x781E0001, // 0034 JMPF R7 #0037 + 0x501C0200, // 0035 LDBOOL R7 1 0 + 0x80040E00, // 0036 RET 1 R7 + 0x70020008, // 0037 JMP #0041 + 0x601C0003, // 0038 GETGBL R7 G3 + 0x5C200000, // 0039 MOVE R8 R0 + 0x7C1C0200, // 003A CALL R7 1 + 0x8C1C0F0E, // 003B GETMET R7 R7 K14 + 0x5C240200, // 003C MOVE R9 R1 + 0x5C280400, // 003D MOVE R10 R2 + 0x5C2C0600, // 003E MOVE R11 R3 + 0x7C1C0800, // 003F CALL R7 4 + 0x80040E00, // 0040 RET 1 R7 + 0x80000000, // 0041 RET 0 }) ) ); @@ -437,6 +305,53 @@ be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(CT), + /* K2 */ be_nested_str_weak(set_ct), + /* K3 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0300, // 0001 GETMET R3 R1 K0 + 0x58140001, // 0002 LDCONST R5 K1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x7C080200, // 0004 CALL R2 1 + 0x4C0C0000, // 0005 LDNIL R3 + 0x200C0403, // 0006 NE R3 R2 R3 + 0x780E0002, // 0007 JMPF R3 #000B + 0x8C0C0102, // 0008 GETMET R3 R0 K2 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x600C0003, // 000B GETGBL R3 G3 + 0x5C100000, // 000C MOVE R4 R0 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C0703, // 000E GETMET R3 R3 K3 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: update_ct_minmax ********************************************************************/ @@ -481,6 +396,291 @@ be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(shadow_ct), + /* K3 */ be_nested_str_weak(update_ct_minmax), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x74120001, // 0009 JMPT R4 #000C + 0x54120144, // 000A LDINT R4 325 + 0x90020404, // 000B SETMBR R0 K2 R4 + 0x8C100103, // 000C GETMET R4 R0 K3 + 0x7C100200, // 000D CALL R4 1 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K4 */ be_nested_str_weak(web_value_onoff), + /* K5 */ be_nested_str_weak(shadow_onoff), + /* K6 */ be_nested_str_weak(web_value_dimmer), + /* K7 */ be_nested_str_weak(web_value_ct), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x8C180104, // 0006 GETMET R6 R0 K4 + 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x7C180400, // 0008 CALL R6 2 + 0x8C1C0106, // 0009 GETMET R7 R0 K6 + 0x7C1C0200, // 000A CALL R7 1 + 0x8C200107, // 000B GETMET R8 R0 K7 + 0x7C200200, // 000C CALL R8 1 + 0x7C100800, // 000D CALL R4 4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_parse_status, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(CT), + /* K3 */ be_nested_str_weak(shadow_ct), + /* K4 */ be_nested_str_weak(ct_min), + /* K5 */ be_nested_str_weak(ct_max), + /* K6 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x540E000A, // 0007 LDINT R3 11 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E0017, // 0009 JMPF R3 #0022 + 0x600C0009, // 000A GETGBL R3 G9 + 0x8C100301, // 000B GETMET R4 R1 K1 + 0x58180002, // 000C LDCONST R6 K2 + 0x7C100400, // 000D CALL R4 2 + 0x7C0C0200, // 000E CALL R3 1 + 0x4C100000, // 000F LDNIL R4 + 0x20100604, // 0010 NE R4 R3 R4 + 0x7812000F, // 0011 JMPF R4 #0022 + 0x88100103, // 0012 GETMBR R4 R0 K3 + 0x20100604, // 0013 NE R4 R3 R4 + 0x7812000C, // 0014 JMPF R4 #0022 + 0x88100104, // 0015 GETMBR R4 R0 K4 + 0x14100604, // 0016 LT R4 R3 R4 + 0x78120000, // 0017 JMPF R4 #0019 + 0x880C0104, // 0018 GETMBR R3 R0 K4 + 0x88100105, // 0019 GETMBR R4 R0 K5 + 0x24100604, // 001A GT R4 R3 R4 + 0x78120000, // 001B JMPF R4 #001D + 0x880C0105, // 001C GETMBR R3 R0 K5 + 0x8C100106, // 001D GETMET R4 R0 K6 + 0x541A02FF, // 001E LDINT R6 768 + 0x541E0006, // 001F LDINT R7 7 + 0x7C100600, // 0020 CALL R4 3 + 0x90020603, // 0021 SETMBR R0 K3 R3 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_value_ct +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(shadow_ct), + /* K2 */ be_const_int(1000000), + /* K3 */ be_nested_str_weak(_X25iK), + /* K4 */ be_nested_str_weak(_X26_X239898_X3B_X20), + }), + be_str_weak(web_value_ct), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A000C, // 0004 JMPF R2 #0012 + 0x88080101, // 0005 GETMBR R2 R0 K1 + 0x0C0A0402, // 0006 DIV R2 K2 R2 + 0x540E0018, // 0007 LDINT R3 25 + 0x00080403, // 0008 ADD R2 R2 R3 + 0x540E0031, // 0009 LDINT R3 50 + 0x0C080403, // 000A DIV R2 R2 R3 + 0x540E0031, // 000B LDINT R3 50 + 0x08080403, // 000C MUL R2 R2 R3 + 0x600C0018, // 000D GETGBL R3 G24 + 0x58100003, // 000E LDCONST R4 K3 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x5C040600, // 0011 MOVE R1 R3 + 0x000A0801, // 0012 ADD R2 K4 R1 + 0x80040400, // 0013 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(light), + /* K3 */ be_nested_str_weak(update_ct_minmax), + /* K4 */ be_nested_str_weak(update_shadow), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(ct), + /* K8 */ be_nested_str_weak(shadow_ct), + /* K9 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x7406001F, // 0001 JMPT R1 #0022 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x7406001D, // 0003 JMPT R1 #0022 + 0xA4060400, // 0004 IMPORT R1 K2 + 0x8C080103, // 0005 GETMET R2 R0 K3 + 0x7C080200, // 0006 CALL R2 1 + 0x60080003, // 0007 GETGBL R2 G3 + 0x5C0C0000, // 0008 MOVE R3 R0 + 0x7C080200, // 0009 CALL R2 1 + 0x8C080504, // 000A GETMET R2 R2 K4 + 0x7C080200, // 000B CALL R2 1 + 0x8C080305, // 000C GETMET R2 R1 K5 + 0x7C080200, // 000D CALL R2 1 + 0x4C0C0000, // 000E LDNIL R3 + 0x200C0403, // 000F NE R3 R2 R3 + 0x780E000F, // 0010 JMPF R3 #0021 + 0x8C0C0506, // 0011 GETMET R3 R2 K6 + 0x58140007, // 0012 LDCONST R5 K7 + 0x4C180000, // 0013 LDNIL R6 + 0x7C0C0600, // 0014 CALL R3 3 + 0x4C100000, // 0015 LDNIL R4 + 0x1C100604, // 0016 EQ R4 R3 R4 + 0x78120000, // 0017 JMPF R4 #0019 + 0x880C0108, // 0018 GETMBR R3 R0 K8 + 0x88100108, // 0019 GETMBR R4 R0 K8 + 0x20100604, // 001A NE R4 R3 R4 + 0x78120004, // 001B JMPF R4 #0021 + 0x8C100109, // 001C GETMET R4 R0 K9 + 0x541A02FF, // 001D LDINT R6 768 + 0x541E0006, // 001E LDINT R7 7 + 0x7C100600, // 001F CALL R4 3 + 0x90021003, // 0020 SETMBR R0 K8 R3 + 0x70020004, // 0021 JMP #0027 + 0x60040003, // 0022 GETGBL R1 G3 + 0x5C080000, // 0023 MOVE R2 R0 + 0x7C040200, // 0024 CALL R1 1 + 0x8C040304, // 0025 GETMET R1 R1 K4 + 0x7C040200, // 0026 CALL R1 1 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Light2 ********************************************************************/ @@ -488,29 +688,23 @@ extern const bclass be_class_Matter_Plugin_Light1; be_local_class(Matter_Plugin_Light2, 3, &be_class_Matter_Plugin_Light1, - be_nested_map(15, + be_nested_map(18, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light2_init_closure) }, - { be_const_key_weak(shadow_ct, -1), be_const_var(0) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light2_invoke_request_closure) }, - { be_const_key_weak(ct_max, -1), be_const_var(2) }, - { be_const_key_weak(update_shadow, 10), be_const_closure(class_Matter_Plugin_Light2_update_shadow_closure) }, - { be_const_key_weak(update_virtual, 8), be_const_closure(class_Matter_Plugin_Light2_update_virtual_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X202_X20CT) }, - { be_const_key_weak(set_ct, -1), be_const_closure(class_Matter_Plugin_Light2_set_ct_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light2_update_shadow_closure) }, + { be_const_key_weak(set_ct, 13), be_const_closure(class_Matter_Plugin_Light2_set_ct_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(268, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(UPDATE_COMMANDS, 17), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(3, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Power), be_nested_str_weak(Bri), be_nested_str_weak(CT), })) ) } )) }, - { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -624,10 +818,19 @@ be_local_class(Matter_Plugin_Light2, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Light2_update_ct_minmax_closure) }, - { be_const_key_weak(read_attribute, 11), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) }, - { be_const_key_weak(ct_min, -1), be_const_var(1) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light2_invoke_request_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) }, + { be_const_key_weak(shadow_ct, 0), be_const_var(0) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light2_update_virtual_closure) }, + { be_const_key_weak(DISPLAY_NAME, 16), be_nested_str_weak(Light_X202_X20CT) }, + { be_const_key_weak(web_value_ct, 11), be_const_closure(class_Matter_Plugin_Light2_web_value_ct_closure) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light2_parse_status_closure) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(light2) }, + { be_const_key_weak(ct_min, 12), be_const_var(1) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light2_web_values_closure) }, + { be_const_key_weak(init, 10), be_const_closure(class_Matter_Plugin_Light2_init_closure) }, + { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Light2_update_ct_minmax_closure) }, + { be_const_key_weak(ct_max, -1), be_const_var(2) }, })), be_str_weak(Matter_Plugin_Light2) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h index 8df599ab7..254d280dc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h @@ -63,148 +63,6 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: set_hue_sat -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; -be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_nested_str_weak(light), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(hue), - /* K7 */ be_nested_str_weak(sat), - /* K8 */ be_nested_str_weak(update_shadow), - /* K9 */ be_nested_str_weak(shadow_hue), - /* K10 */ be_nested_str_weak(attribute_updated), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_const_int(1), - }), - be_str_weak(set_hue_sat), - &be_const_str_solidified, - ( &(const binstruction[104]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x200C0203, // 0001 NE R3 R1 R3 - 0x780E0006, // 0002 JMPF R3 #000A - 0x140C0300, // 0003 LT R3 R1 K0 - 0x780E0000, // 0004 JMPF R3 #0006 - 0x58040000, // 0005 LDCONST R1 K0 - 0x540E00FD, // 0006 LDINT R3 254 - 0x240C0203, // 0007 GT R3 R1 R3 - 0x780E0000, // 0008 JMPF R3 #000A - 0x540600FD, // 0009 LDINT R1 254 - 0x4C0C0000, // 000A LDNIL R3 - 0x200C0403, // 000B NE R3 R2 R3 - 0x780E0006, // 000C JMPF R3 #0014 - 0x140C0500, // 000D LT R3 R2 K0 - 0x780E0000, // 000E JMPF R3 #0010 - 0x58080000, // 000F LDCONST R2 K0 - 0x540E00FD, // 0010 LDINT R3 254 - 0x240C0403, // 0011 GT R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x540A00FD, // 0013 LDINT R2 254 - 0x880C0101, // 0014 GETMBR R3 R0 K1 - 0x740E003A, // 0015 JMPT R3 #0051 - 0x4C0C0000, // 0016 LDNIL R3 - 0x200C0203, // 0017 NE R3 R1 R3 - 0x780E0008, // 0018 JMPF R3 #0022 - 0xB80E0400, // 0019 GETNGBL R3 K2 - 0x8C0C0703, // 001A GETMET R3 R3 K3 - 0x5C140200, // 001B MOVE R5 R1 - 0x58180000, // 001C LDCONST R6 K0 - 0x541E00FD, // 001D LDINT R7 254 - 0x58200000, // 001E LDCONST R8 K0 - 0x54260167, // 001F LDINT R9 360 - 0x7C0C0C00, // 0020 CALL R3 6 - 0x70020000, // 0021 JMP #0023 - 0x4C0C0000, // 0022 LDNIL R3 - 0x4C100000, // 0023 LDNIL R4 - 0x20100404, // 0024 NE R4 R2 R4 - 0x78120008, // 0025 JMPF R4 #002F - 0xB8120400, // 0026 GETNGBL R4 K2 - 0x8C100903, // 0027 GETMET R4 R4 K3 - 0x5C180400, // 0028 MOVE R6 R2 - 0x581C0000, // 0029 LDCONST R7 K0 - 0x542200FD, // 002A LDINT R8 254 - 0x58240000, // 002B LDCONST R9 K0 - 0x542A00FE, // 002C LDINT R10 255 - 0x7C100C00, // 002D CALL R4 6 - 0x70020000, // 002E JMP #0030 - 0x4C100000, // 002F LDNIL R4 - 0x4C140000, // 0030 LDNIL R5 - 0x20140605, // 0031 NE R5 R3 R5 - 0x7816000A, // 0032 JMPF R5 #003E - 0x4C140000, // 0033 LDNIL R5 - 0x20140805, // 0034 NE R5 R4 R5 - 0x78160007, // 0035 JMPF R5 #003E - 0xB8160800, // 0036 GETNGBL R5 K4 - 0x8C140B05, // 0037 GETMET R5 R5 K5 - 0x601C0013, // 0038 GETGBL R7 G19 - 0x7C1C0000, // 0039 CALL R7 0 - 0x981E0C03, // 003A SETIDX R7 K6 R3 - 0x981E0E04, // 003B SETIDX R7 K7 R4 - 0x7C140400, // 003C CALL R5 2 - 0x7002000F, // 003D JMP #004E - 0x4C140000, // 003E LDNIL R5 - 0x20140605, // 003F NE R5 R3 R5 - 0x78160006, // 0040 JMPF R5 #0048 - 0xB8160800, // 0041 GETNGBL R5 K4 - 0x8C140B05, // 0042 GETMET R5 R5 K5 - 0x601C0013, // 0043 GETGBL R7 G19 - 0x7C1C0000, // 0044 CALL R7 0 - 0x981E0C03, // 0045 SETIDX R7 K6 R3 - 0x7C140400, // 0046 CALL R5 2 - 0x70020005, // 0047 JMP #004E - 0xB8160800, // 0048 GETNGBL R5 K4 - 0x8C140B05, // 0049 GETMET R5 R5 K5 - 0x601C0013, // 004A GETGBL R7 G19 - 0x7C1C0000, // 004B CALL R7 0 - 0x981E0E04, // 004C SETIDX R7 K7 R4 - 0x7C140400, // 004D CALL R5 2 - 0x8C140108, // 004E GETMET R5 R0 K8 - 0x7C140200, // 004F CALL R5 1 - 0x70020015, // 0050 JMP #0067 - 0x4C0C0000, // 0051 LDNIL R3 - 0x200C0203, // 0052 NE R3 R1 R3 - 0x780E0007, // 0053 JMPF R3 #005C - 0x880C0109, // 0054 GETMBR R3 R0 K9 - 0x200C0203, // 0055 NE R3 R1 R3 - 0x780E0004, // 0056 JMPF R3 #005C - 0x8C0C010A, // 0057 GETMET R3 R0 K10 - 0x541602FF, // 0058 LDINT R5 768 - 0x58180000, // 0059 LDCONST R6 K0 - 0x7C0C0600, // 005A CALL R3 3 - 0x90021201, // 005B SETMBR R0 K9 R1 - 0x4C0C0000, // 005C LDNIL R3 - 0x200C0403, // 005D NE R3 R2 R3 - 0x780E0007, // 005E JMPF R3 #0067 - 0x880C010B, // 005F GETMBR R3 R0 K11 - 0x200C0403, // 0060 NE R3 R2 R3 - 0x780E0004, // 0061 JMPF R3 #0067 - 0x8C0C010A, // 0062 GETMET R3 R0 K10 - 0x541602FF, // 0063 LDINT R5 768 - 0x5818000C, // 0064 LDCONST R6 K12 - 0x7C0C0600, // 0065 CALL R3 3 - 0x90021602, // 0066 SETMBR R0 K11 R2 - 0x80000000, // 0067 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ @@ -426,91 +284,487 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light3, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(BRIDGE), /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(hue), - /* K6 */ be_nested_str_weak(sat), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(scale_uint), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(shadow_hue), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_nested_str_weak(attribute_updated), - /* K13 */ be_const_int(1), + /* K3 */ be_nested_str_weak(update_shadow), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(hue), + /* K7 */ be_nested_str_weak(sat), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(shadow_hue), + /* K12 */ be_nested_str_weak(shadow_sat), + /* K13 */ be_nested_str_weak(attribute_updated), + /* K14 */ be_const_int(1), }), be_str_weak(update_shadow), &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x74060039, // 0006 JMPT R1 #0041 - 0xA4060400, // 0007 IMPORT R1 K2 - 0x8C080303, // 0008 GETMET R2 R1 K3 + ( &(const binstruction[74]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060041, // 0001 JMPT R1 #0044 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x7406003F, // 0003 JMPT R1 #0044 + 0xA4060400, // 0004 IMPORT R1 K2 + 0x60080003, // 0005 GETGBL R2 G3 + 0x5C0C0000, // 0006 MOVE R3 R0 + 0x7C080200, // 0007 CALL R2 1 + 0x8C080503, // 0008 GETMET R2 R2 K3 0x7C080200, // 0009 CALL R2 1 + 0x8C080304, // 000A GETMET R2 R1 K4 + 0x7C080200, // 000B CALL R2 1 + 0x4C0C0000, // 000C LDNIL R3 + 0x200C0403, // 000D NE R3 R2 R3 + 0x780E0033, // 000E JMPF R3 #0043 + 0x8C0C0505, // 000F GETMET R3 R2 K5 + 0x58140006, // 0010 LDCONST R5 K6 + 0x4C180000, // 0011 LDNIL R6 + 0x7C0C0600, // 0012 CALL R3 3 + 0x8C100505, // 0013 GETMET R4 R2 K5 + 0x58180007, // 0014 LDCONST R6 K7 + 0x4C1C0000, // 0015 LDNIL R7 + 0x7C100600, // 0016 CALL R4 3 + 0x4C140000, // 0017 LDNIL R5 + 0x20140605, // 0018 NE R5 R3 R5 + 0x78160009, // 0019 JMPF R5 #0024 + 0xB8161000, // 001A GETNGBL R5 K8 + 0x8C140B09, // 001B GETMET R5 R5 K9 + 0x5C1C0600, // 001C MOVE R7 R3 + 0x5820000A, // 001D LDCONST R8 K10 + 0x54260167, // 001E LDINT R9 360 + 0x5828000A, // 001F LDCONST R10 K10 + 0x542E00FD, // 0020 LDINT R11 254 + 0x7C140C00, // 0021 CALL R5 6 + 0x5C0C0A00, // 0022 MOVE R3 R5 + 0x70020000, // 0023 JMP #0025 + 0x880C010B, // 0024 GETMBR R3 R0 K11 + 0x4C140000, // 0025 LDNIL R5 + 0x20140805, // 0026 NE R5 R4 R5 + 0x78160009, // 0027 JMPF R5 #0032 + 0xB8161000, // 0028 GETNGBL R5 K8 + 0x8C140B09, // 0029 GETMET R5 R5 K9 + 0x5C1C0800, // 002A MOVE R7 R4 + 0x5820000A, // 002B LDCONST R8 K10 + 0x542600FE, // 002C LDINT R9 255 + 0x5828000A, // 002D LDCONST R10 K10 + 0x542E00FD, // 002E LDINT R11 254 + 0x7C140C00, // 002F CALL R5 6 + 0x5C100A00, // 0030 MOVE R4 R5 + 0x70020000, // 0031 JMP #0033 + 0x8810010C, // 0032 GETMBR R4 R0 K12 + 0x8814010B, // 0033 GETMBR R5 R0 K11 + 0x20140605, // 0034 NE R5 R3 R5 + 0x78160004, // 0035 JMPF R5 #003B + 0x8C14010D, // 0036 GETMET R5 R0 K13 + 0x541E02FF, // 0037 LDINT R7 768 + 0x5820000A, // 0038 LDCONST R8 K10 + 0x7C140600, // 0039 CALL R5 3 + 0x90021603, // 003A SETMBR R0 K11 R3 + 0x8814010C, // 003B GETMBR R5 R0 K12 + 0x20140805, // 003C NE R5 R4 R5 + 0x78160004, // 003D JMPF R5 #0043 + 0x8C14010D, // 003E GETMET R5 R0 K13 + 0x541E02FF, // 003F LDINT R7 768 + 0x5820000E, // 0040 LDCONST R8 K14 + 0x7C140600, // 0041 CALL R5 3 + 0x90021804, // 0042 SETMBR R0 K12 R4 + 0x70020004, // 0043 JMP #0049 + 0x60040003, // 0044 GETGBL R1 G3 + 0x5C080000, // 0045 MOVE R2 R0 + 0x7C040200, // 0046 CALL R1 1 + 0x8C040303, // 0047 GETMET R1 R1 K3 + 0x7C040200, // 0048 CALL R1 1 + 0x80000000, // 0049 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_value_RGB +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_hue), + /* K1 */ be_nested_str_weak(shadow_sat), + /* K2 */ be_nested_str_weak(light_state), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(set_bri), + /* K5 */ be_nested_str_weak(set_huesat), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(scale_uint), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), + /* K10 */ be_nested_str_weak(r), + /* K11 */ be_nested_str_weak(g), + /* K12 */ be_nested_str_weak(b), + /* K13 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), + /* K14 */ be_nested_str_weak(), + }), + be_str_weak(web_value_RGB), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060027, // 0003 JMPF R1 #002C + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060023, // 0007 JMPF R1 #002C + 0xB8060400, // 0008 GETNGBL R1 K2 + 0x58080003, // 0009 LDCONST R2 K3 + 0x7C040200, // 000A CALL R1 1 + 0x8C080304, // 000B GETMET R2 R1 K4 + 0x541200FE, // 000C LDINT R4 255 + 0x7C080400, // 000D CALL R2 2 + 0x8C080305, // 000E GETMET R2 R1 K5 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x8C100907, // 0010 GETMET R4 R4 K7 + 0x88180100, // 0011 GETMBR R6 R0 K0 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x542200FD, // 0013 LDINT R8 254 + 0x58240008, // 0014 LDCONST R9 K8 + 0x542A0167, // 0015 LDINT R10 360 + 0x7C100C00, // 0016 CALL R4 6 + 0xB8160C00, // 0017 GETNGBL R5 K6 + 0x8C140B07, // 0018 GETMET R5 R5 K7 + 0x881C0101, // 0019 GETMBR R7 R0 K1 + 0x58200008, // 001A LDCONST R8 K8 + 0x542600FD, // 001B LDINT R9 254 + 0x58280008, // 001C LDCONST R10 K8 + 0x542E00FE, // 001D LDINT R11 255 + 0x7C140C00, // 001E CALL R5 6 + 0x7C080600, // 001F CALL R2 3 + 0x60080018, // 0020 GETGBL R2 G24 + 0x580C0009, // 0021 LDCONST R3 K9 + 0x8810030A, // 0022 GETMBR R4 R1 K10 + 0x8814030B, // 0023 GETMBR R5 R1 K11 + 0x8818030C, // 0024 GETMBR R6 R1 K12 + 0x7C080800, // 0025 CALL R2 4 + 0x600C0018, // 0026 GETGBL R3 G24 + 0x5810000D, // 0027 LDCONST R4 K13 + 0x5C140400, // 0028 MOVE R5 R2 + 0x5C180400, // 0029 MOVE R6 R2 + 0x7C0C0600, // 002A CALL R3 3 + 0x80040600, // 002B RET 1 R3 + 0x80061C00, // 002C RET 1 K14 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_hue_sat +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), + /* K4 */ be_nested_str_weak(call_remote_sync), + /* K5 */ be_nested_str_weak(HSBColor1), + /* K6 */ be_nested_str_weak(parse_status), + /* K7 */ be_nested_str_weak(HSBColor2), + /* K8 */ be_nested_str_weak(VIRTUAL), + /* K9 */ be_nested_str_weak(shadow_hue), + /* K10 */ be_nested_str_weak(attribute_updated), + /* K11 */ be_nested_str_weak(shadow_sat), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(light), + /* K14 */ be_nested_str_weak(set), + /* K15 */ be_nested_str_weak(hue), + /* K16 */ be_nested_str_weak(sat), + /* K17 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(set_hue_sat), + &be_const_str_solidified, + ( &(const binstruction[151]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x200C0203, // 0001 NE R3 R1 R3 + 0x780E0006, // 0002 JMPF R3 #000A + 0x140C0300, // 0003 LT R3 R1 K0 + 0x780E0000, // 0004 JMPF R3 #0006 + 0x58040000, // 0005 LDCONST R1 K0 + 0x540E00FD, // 0006 LDINT R3 254 + 0x240C0203, // 0007 GT R3 R1 R3 + 0x780E0000, // 0008 JMPF R3 #000A + 0x540600FD, // 0009 LDINT R1 254 0x4C0C0000, // 000A LDNIL R3 0x200C0403, // 000B NE R3 R2 R3 - 0x780E0033, // 000C JMPF R3 #0041 - 0x8C0C0504, // 000D GETMET R3 R2 K4 - 0x58140005, // 000E LDCONST R5 K5 - 0x4C180000, // 000F LDNIL R6 - 0x7C0C0600, // 0010 CALL R3 3 - 0x8C100504, // 0011 GETMET R4 R2 K4 - 0x58180006, // 0012 LDCONST R6 K6 - 0x4C1C0000, // 0013 LDNIL R7 - 0x7C100600, // 0014 CALL R4 3 - 0x4C140000, // 0015 LDNIL R5 - 0x20140605, // 0016 NE R5 R3 R5 - 0x78160009, // 0017 JMPF R5 #0022 - 0xB8160E00, // 0018 GETNGBL R5 K7 - 0x8C140B08, // 0019 GETMET R5 R5 K8 - 0x5C1C0600, // 001A MOVE R7 R3 - 0x58200009, // 001B LDCONST R8 K9 - 0x54260167, // 001C LDINT R9 360 - 0x58280009, // 001D LDCONST R10 K9 - 0x542E00FD, // 001E LDINT R11 254 - 0x7C140C00, // 001F CALL R5 6 - 0x5C0C0A00, // 0020 MOVE R3 R5 - 0x70020000, // 0021 JMP #0023 - 0x880C010A, // 0022 GETMBR R3 R0 K10 - 0x4C140000, // 0023 LDNIL R5 - 0x20140805, // 0024 NE R5 R4 R5 - 0x78160009, // 0025 JMPF R5 #0030 - 0xB8160E00, // 0026 GETNGBL R5 K7 - 0x8C140B08, // 0027 GETMET R5 R5 K8 - 0x5C1C0800, // 0028 MOVE R7 R4 - 0x58200009, // 0029 LDCONST R8 K9 - 0x542600FE, // 002A LDINT R9 255 - 0x58280009, // 002B LDCONST R10 K9 - 0x542E00FD, // 002C LDINT R11 254 - 0x7C140C00, // 002D CALL R5 6 - 0x5C100A00, // 002E MOVE R4 R5 - 0x70020000, // 002F JMP #0031 - 0x8810010B, // 0030 GETMBR R4 R0 K11 - 0x8814010A, // 0031 GETMBR R5 R0 K10 - 0x20140605, // 0032 NE R5 R3 R5 - 0x78160004, // 0033 JMPF R5 #0039 - 0x8C14010C, // 0034 GETMET R5 R0 K12 - 0x541E02FF, // 0035 LDINT R7 768 - 0x58200009, // 0036 LDCONST R8 K9 - 0x7C140600, // 0037 CALL R5 3 - 0x90021403, // 0038 SETMBR R0 K10 R3 - 0x8814010B, // 0039 GETMBR R5 R0 K11 - 0x20140805, // 003A NE R5 R4 R5 - 0x78160004, // 003B JMPF R5 #0041 - 0x8C14010C, // 003C GETMET R5 R0 K12 - 0x541E02FF, // 003D LDINT R7 768 - 0x5820000D, // 003E LDCONST R8 K13 - 0x7C140600, // 003F CALL R5 3 - 0x90021604, // 0040 SETMBR R0 K11 R4 - 0x80000000, // 0041 RET 0 + 0x780E0006, // 000C JMPF R3 #0014 + 0x140C0500, // 000D LT R3 R2 K0 + 0x780E0000, // 000E JMPF R3 #0010 + 0x58080000, // 000F LDCONST R2 K0 + 0x540E00FD, // 0010 LDINT R3 254 + 0x240C0403, // 0011 GT R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x540A00FD, // 0013 LDINT R2 254 + 0x880C0101, // 0014 GETMBR R3 R0 K1 + 0x780E002C, // 0015 JMPF R3 #0043 + 0x4C0C0000, // 0016 LDNIL R3 + 0x200C0203, // 0017 NE R3 R1 R3 + 0x780E0012, // 0018 JMPF R3 #002C + 0xB80E0400, // 0019 GETNGBL R3 K2 + 0x8C0C0703, // 001A GETMET R3 R3 K3 + 0x5C140200, // 001B MOVE R5 R1 + 0x58180000, // 001C LDCONST R6 K0 + 0x541E00FD, // 001D LDINT R7 254 + 0x58200000, // 001E LDCONST R8 K0 + 0x54260167, // 001F LDINT R9 360 + 0x7C0C0C00, // 0020 CALL R3 6 + 0x8C100104, // 0021 GETMET R4 R0 K4 + 0x58180005, // 0022 LDCONST R6 K5 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C100600, // 0024 CALL R4 3 + 0x4C140000, // 0025 LDNIL R5 + 0x20140805, // 0026 NE R5 R4 R5 + 0x78160003, // 0027 JMPF R5 #002C + 0x8C140106, // 0028 GETMET R5 R0 K6 + 0x5C1C0800, // 0029 MOVE R7 R4 + 0x5422000A, // 002A LDINT R8 11 + 0x7C140600, // 002B CALL R5 3 + 0x4C0C0000, // 002C LDNIL R3 + 0x200C0403, // 002D NE R3 R2 R3 + 0x780E0012, // 002E JMPF R3 #0042 + 0xB80E0400, // 002F GETNGBL R3 K2 + 0x8C0C0703, // 0030 GETMET R3 R3 K3 + 0x5C140400, // 0031 MOVE R5 R2 + 0x58180000, // 0032 LDCONST R6 K0 + 0x541E00FD, // 0033 LDINT R7 254 + 0x58200000, // 0034 LDCONST R8 K0 + 0x54260063, // 0035 LDINT R9 100 + 0x7C0C0C00, // 0036 CALL R3 6 + 0x8C100104, // 0037 GETMET R4 R0 K4 + 0x58180007, // 0038 LDCONST R6 K7 + 0x5C1C0600, // 0039 MOVE R7 R3 + 0x7C100600, // 003A CALL R4 3 + 0x4C140000, // 003B LDNIL R5 + 0x20140805, // 003C NE R5 R4 R5 + 0x78160003, // 003D JMPF R5 #0042 + 0x8C140106, // 003E GETMET R5 R0 K6 + 0x5C1C0800, // 003F MOVE R7 R4 + 0x5422000A, // 0040 LDINT R8 11 + 0x7C140600, // 0041 CALL R5 3 + 0x70020052, // 0042 JMP #0096 + 0x880C0108, // 0043 GETMBR R3 R0 K8 + 0x780E0016, // 0044 JMPF R3 #005C + 0x4C0C0000, // 0045 LDNIL R3 + 0x200C0203, // 0046 NE R3 R1 R3 + 0x780E0007, // 0047 JMPF R3 #0050 + 0x880C0109, // 0048 GETMBR R3 R0 K9 + 0x200C0203, // 0049 NE R3 R1 R3 + 0x780E0004, // 004A JMPF R3 #0050 + 0x8C0C010A, // 004B GETMET R3 R0 K10 + 0x541602FF, // 004C LDINT R5 768 + 0x58180000, // 004D LDCONST R6 K0 + 0x7C0C0600, // 004E CALL R3 3 + 0x90021201, // 004F SETMBR R0 K9 R1 + 0x4C0C0000, // 0050 LDNIL R3 + 0x200C0403, // 0051 NE R3 R2 R3 + 0x780E0007, // 0052 JMPF R3 #005B + 0x880C010B, // 0053 GETMBR R3 R0 K11 + 0x200C0403, // 0054 NE R3 R2 R3 + 0x780E0004, // 0055 JMPF R3 #005B + 0x8C0C010A, // 0056 GETMET R3 R0 K10 + 0x541602FF, // 0057 LDINT R5 768 + 0x5818000C, // 0058 LDCONST R6 K12 + 0x7C0C0600, // 0059 CALL R3 3 + 0x90021602, // 005A SETMBR R0 K11 R2 + 0x70020039, // 005B JMP #0096 + 0x4C0C0000, // 005C LDNIL R3 + 0x200C0203, // 005D NE R3 R1 R3 + 0x780E0008, // 005E JMPF R3 #0068 + 0xB80E0400, // 005F GETNGBL R3 K2 + 0x8C0C0703, // 0060 GETMET R3 R3 K3 + 0x5C140200, // 0061 MOVE R5 R1 + 0x58180000, // 0062 LDCONST R6 K0 + 0x541E00FD, // 0063 LDINT R7 254 + 0x58200000, // 0064 LDCONST R8 K0 + 0x54260167, // 0065 LDINT R9 360 + 0x7C0C0C00, // 0066 CALL R3 6 + 0x70020000, // 0067 JMP #0069 + 0x4C0C0000, // 0068 LDNIL R3 + 0x4C100000, // 0069 LDNIL R4 + 0x20100404, // 006A NE R4 R2 R4 + 0x78120008, // 006B JMPF R4 #0075 + 0xB8120400, // 006C GETNGBL R4 K2 + 0x8C100903, // 006D GETMET R4 R4 K3 + 0x5C180400, // 006E MOVE R6 R2 + 0x581C0000, // 006F LDCONST R7 K0 + 0x542200FD, // 0070 LDINT R8 254 + 0x58240000, // 0071 LDCONST R9 K0 + 0x542A00FE, // 0072 LDINT R10 255 + 0x7C100C00, // 0073 CALL R4 6 + 0x70020000, // 0074 JMP #0076 + 0x4C100000, // 0075 LDNIL R4 + 0x4C140000, // 0076 LDNIL R5 + 0x20140605, // 0077 NE R5 R3 R5 + 0x7816000A, // 0078 JMPF R5 #0084 + 0x4C140000, // 0079 LDNIL R5 + 0x20140805, // 007A NE R5 R4 R5 + 0x78160007, // 007B JMPF R5 #0084 + 0xB8161A00, // 007C GETNGBL R5 K13 + 0x8C140B0E, // 007D GETMET R5 R5 K14 + 0x601C0013, // 007E GETGBL R7 G19 + 0x7C1C0000, // 007F CALL R7 0 + 0x981E1E03, // 0080 SETIDX R7 K15 R3 + 0x981E2004, // 0081 SETIDX R7 K16 R4 + 0x7C140400, // 0082 CALL R5 2 + 0x7002000F, // 0083 JMP #0094 + 0x4C140000, // 0084 LDNIL R5 + 0x20140605, // 0085 NE R5 R3 R5 + 0x78160006, // 0086 JMPF R5 #008E + 0xB8161A00, // 0087 GETNGBL R5 K13 + 0x8C140B0E, // 0088 GETMET R5 R5 K14 + 0x601C0013, // 0089 GETGBL R7 G19 + 0x7C1C0000, // 008A CALL R7 0 + 0x981E1E03, // 008B SETIDX R7 K15 R3 + 0x7C140400, // 008C CALL R5 2 + 0x70020005, // 008D JMP #0094 + 0xB8161A00, // 008E GETNGBL R5 K13 + 0x8C140B0E, // 008F GETMET R5 R5 K14 + 0x601C0013, // 0090 GETGBL R7 G19 + 0x7C1C0000, // 0091 CALL R7 0 + 0x981E2004, // 0092 SETIDX R7 K16 R4 + 0x7C140400, // 0093 CALL R5 2 + 0x8C140111, // 0094 GETMET R5 R0 K17 + 0x7C140200, // 0095 CALL R5 1 + 0x80000000, // 0096 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ + be_nested_proto( + 15, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(HSBColor), + /* K3 */ be_nested_str_weak(string), + /* K4 */ be_nested_str_weak(split), + /* K5 */ be_nested_str_weak(_X2C), + /* K6 */ be_const_int(0), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_nested_str_weak(shadow_hue), + /* K11 */ be_nested_str_weak(shadow_sat), + /* K12 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[70]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x540E000A, // 0007 LDINT R3 11 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E003A, // 0009 JMPF R3 #0045 + 0x8C0C0301, // 000A GETMET R3 R1 K1 + 0x58140002, // 000B LDCONST R5 K2 + 0x7C0C0400, // 000C CALL R3 2 + 0x780E0036, // 000D JMPF R3 #0045 + 0xA4120600, // 000E IMPORT R4 K3 + 0x8C140904, // 000F GETMET R5 R4 K4 + 0x5C1C0600, // 0010 MOVE R7 R3 + 0x58200005, // 0011 LDCONST R8 K5 + 0x7C140600, // 0012 CALL R5 3 + 0x60180009, // 0013 GETGBL R6 G9 + 0x941C0B06, // 0014 GETIDX R7 R5 K6 + 0x7C180200, // 0015 CALL R6 1 + 0x601C0009, // 0016 GETGBL R7 G9 + 0x94200B07, // 0017 GETIDX R8 R5 K7 + 0x7C1C0200, // 0018 CALL R7 1 + 0x4C200000, // 0019 LDNIL R8 + 0x20200C08, // 001A NE R8 R6 R8 + 0x78220009, // 001B JMPF R8 #0026 + 0xB8221000, // 001C GETNGBL R8 K8 + 0x8C201109, // 001D GETMET R8 R8 K9 + 0x5C280C00, // 001E MOVE R10 R6 + 0x582C0006, // 001F LDCONST R11 K6 + 0x54320167, // 0020 LDINT R12 360 + 0x58340006, // 0021 LDCONST R13 K6 + 0x543A00FD, // 0022 LDINT R14 254 + 0x7C200C00, // 0023 CALL R8 6 + 0x5C181000, // 0024 MOVE R6 R8 + 0x70020000, // 0025 JMP #0027 + 0x8818010A, // 0026 GETMBR R6 R0 K10 + 0x4C200000, // 0027 LDNIL R8 + 0x20200E08, // 0028 NE R8 R7 R8 + 0x78220009, // 0029 JMPF R8 #0034 + 0xB8221000, // 002A GETNGBL R8 K8 + 0x8C201109, // 002B GETMET R8 R8 K9 + 0x5C280E00, // 002C MOVE R10 R7 + 0x582C0006, // 002D LDCONST R11 K6 + 0x54320063, // 002E LDINT R12 100 + 0x58340006, // 002F LDCONST R13 K6 + 0x543A00FD, // 0030 LDINT R14 254 + 0x7C200C00, // 0031 CALL R8 6 + 0x5C1C1000, // 0032 MOVE R7 R8 + 0x70020000, // 0033 JMP #0035 + 0x881C010B, // 0034 GETMBR R7 R0 K11 + 0x8820010A, // 0035 GETMBR R8 R0 K10 + 0x20200C08, // 0036 NE R8 R6 R8 + 0x78220004, // 0037 JMPF R8 #003D + 0x8C20010C, // 0038 GETMET R8 R0 K12 + 0x542A02FF, // 0039 LDINT R10 768 + 0x582C0006, // 003A LDCONST R11 K6 + 0x7C200600, // 003B CALL R8 3 + 0x90021406, // 003C SETMBR R0 K10 R6 + 0x8820010B, // 003D GETMBR R8 R0 K11 + 0x20200E08, // 003E NE R8 R7 R8 + 0x78220004, // 003F JMPF R8 #0045 + 0x8C20010C, // 0040 GETMET R8 R0 K12 + 0x542A02FF, // 0041 LDINT R10 768 + 0x582C0007, // 0042 LDCONST R11 K7 + 0x7C200600, // 0043 CALL R8 3 + 0x90021607, // 0044 SETMBR R0 K11 R7 + 0x80000000, // 0045 RET 0 }) ) ); @@ -652,6 +906,55 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K4 */ be_nested_str_weak(web_value_onoff), + /* K5 */ be_nested_str_weak(shadow_onoff), + /* K6 */ be_nested_str_weak(web_value_dimmer), + /* K7 */ be_nested_str_weak(web_value_RGB), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x8C180104, // 0006 GETMET R6 R0 K4 + 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x7C180400, // 0008 CALL R6 2 + 0x8C1C0106, // 0009 GETMET R7 R0 K6 + 0x7C1C0200, // 000A CALL R7 1 + 0x8C200107, // 000B GETMET R8 R0 K7 + 0x7C200200, // 000C CALL R8 1 + 0x7C100800, // 000D CALL R4 4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Light3 ********************************************************************/ @@ -659,19 +962,30 @@ extern const bclass be_class_Matter_Plugin_Light1; be_local_class(Matter_Plugin_Light3, 2, &be_class_Matter_Plugin_Light1, - be_nested_map(13, + be_nested_map(16, ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update_virtual, 1), be_const_closure(class_Matter_Plugin_Light3_update_virtual_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light3_web_values_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(269, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light3_init_closure) }, { be_const_key_weak(shadow_hue, -1), be_const_var(0) }, - { be_const_key_weak(shadow_sat, -1), be_const_var(1) }, - { be_const_key_weak(update_virtual, 8), be_const_closure(class_Matter_Plugin_Light3_update_virtual_closure) }, { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light3_update_shadow_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light3_invoke_request_closure) }, - { be_const_key_weak(init, 9), be_const_closure(class_Matter_Plugin_Light3_init_closure) }, - { be_const_key_weak(set_hue_sat, 3), be_const_closure(class_Matter_Plugin_Light3_set_hue_sat_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(light3) }, { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X203_X20RGB) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(UPDATE_COMMANDS, 15), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(4, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Power), + be_nested_str_weak(Bri), + be_nested_str_weak(Hue), + be_nested_str_weak(Sat), + })) ) } )) }, + { be_const_key_weak(read_attribute, 2), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) }, + { be_const_key_weak(set_hue_sat, -1), be_const_closure(class_Matter_Plugin_Light3_set_hue_sat_closure) }, + { be_const_key_weak(CLUSTERS, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -787,19 +1101,11 @@ be_local_class(Matter_Plugin_Light3, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(UPDATE_COMMANDS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(4, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(Power), - be_nested_str_weak(Bri), - be_nested_str_weak(Hue), - be_nested_str_weak(Sat), - })) ) } )) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(269, -1), be_const_int(2) }, - })) ) } )) }, + { be_const_key_weak(invoke_request, 12), be_const_closure(class_Matter_Plugin_Light3_invoke_request_closure) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light3_parse_status_closure) }, + { be_const_key_weak(TYPE, 6), be_nested_str_weak(light3) }, + { be_const_key_weak(shadow_sat, -1), be_const_var(1) }, + { be_const_key_weak(web_value_RGB, -1), be_const_closure(class_Matter_Plugin_Light3_web_value_RGB_closure) }, })), be_str_weak(Matter_Plugin_Light3) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_OnOff.h similarity index 73% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light0.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_OnOff.h index 4ede0e4d9..17b0381a3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_OnOff.h @@ -1,29 +1,29 @@ -/* Solidification of Matter_Plugin_3_Light0.h */ +/* Solidification of Matter_Plugin_3_OnOff.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -extern const bclass be_class_Matter_Plugin_Light0; +extern const bclass be_class_Matter_Plugin_OnOff; /******************************************************************** -** Solidified class: Matter_Plugin_Light0 +** Solidified class: Matter_Plugin_OnOff ********************************************************************/ -extern const bclass be_class_Matter_Plugin_OnOff; -be_local_class(Matter_Plugin_Light0, +extern const bclass be_class_Matter_Plugin_Light0; +be_local_class(Matter_Plugin_OnOff, 0, - &be_class_Matter_Plugin_OnOff, + &be_class_Matter_Plugin_Light0, be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X200_X20On) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(light0) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Relay) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(relay) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(256, -1), be_const_int(2) }, + { be_const_key_int(266, -1), be_const_int(2) }, })) ) } )) }, })), - be_str_weak(Matter_Plugin_Light0) + be_str_weak(Matter_Plugin_OnOff) ); /********************************************************************/ /* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h index 97cae5f0b..dafda9e24 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h @@ -160,6 +160,48 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_pre_value, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Flow; +be_local_closure(class_Matter_Plugin_Sensor_Flow_web_values, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Flow, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20m_X26sup3_X3B_X2Fh), + /* K4 */ be_nested_str_weak(shadow_value), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x60180009, // 0006 GETGBL R6 G9 + 0x881C0104, // 0007 GETMBR R7 R0 K4 + 0x7C180200, // 0008 CALL R6 1 + 0x7C100400, // 0009 CALL R4 2 + 0x7C080400, // 000A CALL R2 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Flow ********************************************************************/ @@ -167,23 +209,20 @@ extern const bclass be_class_Matter_Plugin_Sensor; be_local_class(Matter_Plugin_Sensor_Flow, 0, &be_class_Matter_Plugin_Sensor, - be_nested_map(9, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Flow) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(flow) }, - { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(774, -1), be_const_int(1) }, })) ) } )) }, + { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Flow_value_changed_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Flow_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Flow), })) ) } )) }, - { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Flow_value_changed_closure) }, - { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Flow) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Flow_read_attribute_closure) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { @@ -270,7 +309,11 @@ be_local_class(Matter_Plugin_Sensor_Flow, be_const_int(65533), })) ) } )) }, })) ) } )) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Flow) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Flow_pre_value_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Flow_web_values_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Flow) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(flow) }, })), be_str_weak(Matter_Plugin_Sensor_Flow) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h index c2d3fc521..fde45bb62 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h @@ -160,6 +160,56 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_pre_value, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Humidity; +be_local_closure(class_Matter_Plugin_Sensor_Humidity_web_values, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Humidity, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25), + /* K4 */ be_nested_str_weak(shadow_value), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x4C1C0000, // 0007 LDNIL R7 + 0x20180C07, // 0008 NE R6 R6 R7 + 0x781A0005, // 0009 JMPF R6 #0010 + 0x6018000A, // 000A GETGBL R6 G10 + 0x881C0104, // 000B GETMBR R7 R0 K4 + 0x7C180200, // 000C CALL R6 1 + 0x541E0063, // 000D LDINT R7 100 + 0x0C180C07, // 000E DIV R6 R6 R7 + 0x70020000, // 000F JMP #0011 + 0x4C180000, // 0010 LDNIL R6 + 0x7C100400, // 0011 CALL R4 2 + 0x7C080400, // 0012 CALL R2 2 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Humidity ********************************************************************/ @@ -167,23 +217,20 @@ extern const bclass be_class_Matter_Plugin_Sensor; be_local_class(Matter_Plugin_Sensor_Humidity, 0, &be_class_Matter_Plugin_Sensor, - be_nested_map(9, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Humidity) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(humidity) }, - { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(775, -1), be_const_int(2) }, })) ) } )) }, + { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Humidity_value_changed_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Humidity), })) ) } )) }, - { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Humidity_value_changed_closure) }, - { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Humidity) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute_closure) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { @@ -270,7 +317,11 @@ be_local_class(Matter_Plugin_Sensor_Humidity, be_const_int(65533), })) ) } )) }, })) ) } )) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Humidity) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Humidity_pre_value_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Humidity_web_values_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Humidity) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(humidity) }, })), be_str_weak(Matter_Plugin_Sensor_Humidity) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h index aea99a7cb..147369bde 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h @@ -172,6 +172,48 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; +be_local_closure(class_Matter_Plugin_Sensor_Illuminance_web_values, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Illuminance, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux), + /* K4 */ be_nested_str_weak(shadow_value), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x60180009, // 0006 GETGBL R6 G9 + 0x881C0104, // 0007 GETMBR R7 R0 K4 + 0x7C180200, // 0008 CALL R6 1 + 0x7C100400, // 0009 CALL R4 2 + 0x7C080400, // 000A CALL R2 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Illuminance ********************************************************************/ @@ -179,23 +221,20 @@ extern const bclass be_class_Matter_Plugin_Sensor; be_local_class(Matter_Plugin_Sensor_Illuminance, 0, &be_class_Matter_Plugin_Sensor, - be_nested_map(9, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Illuminance) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(illuminance) }, - { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(262, -1), be_const_int(2) }, })) ) } )) }, + { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Illuminance), })) ) } )) }, - { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed_closure) }, - { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Illuminance) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute_closure) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { @@ -282,7 +321,11 @@ be_local_class(Matter_Plugin_Sensor_Illuminance, be_const_int(65533), })) ) } )) }, })) ) } )) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Illuminance) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_web_values_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Illuminance) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(illuminance) }, })), be_str_weak(Matter_Plugin_Sensor_Illuminance) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h index 245a4b5f1..a14b2f339 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h @@ -159,6 +159,48 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_pre_value, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Pressure; +be_local_closure(class_Matter_Plugin_Sensor_Pressure_web_values, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Pressure, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20hPa), + /* K4 */ be_nested_str_weak(shadow_value), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x60180009, // 0006 GETGBL R6 G9 + 0x881C0104, // 0007 GETMBR R7 R0 K4 + 0x7C180200, // 0008 CALL R6 1 + 0x7C100400, // 0009 CALL R4 2 + 0x7C080400, // 000A CALL R2 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Pressure ********************************************************************/ @@ -166,23 +208,20 @@ extern const bclass be_class_Matter_Plugin_Sensor; be_local_class(Matter_Plugin_Sensor_Pressure, 0, &be_class_Matter_Plugin_Sensor, - be_nested_map(9, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Pressure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(pressure) }, - { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(773, -1), be_const_int(2) }, })) ) } )) }, + { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Pressure_value_changed_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Pressure), })) ) } )) }, - { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Pressure_value_changed_closure) }, - { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Pressure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute_closure) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { @@ -269,7 +308,11 @@ be_local_class(Matter_Plugin_Sensor_Pressure, be_const_int(65533), })) ) } )) }, })) ) } )) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Pressure) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Pressure_pre_value_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Pressure_web_values_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Pressure) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(pressure) }, })), be_str_weak(Matter_Plugin_Sensor_Pressure) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h index 785235cd0..d0b9e7473 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h @@ -138,20 +138,23 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Temp, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(get_option), - /* K2 */ be_const_int(1), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(temp_unit), + /* K2 */ be_nested_str_weak(TEMP_F), /* K3 */ be_const_real_hex(0x3FE66666), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(get_option), + /* K6 */ be_const_int(1), }), be_str_weak(pre_value), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x54120007, // 0002 LDINT R4 8 - 0x7C080400, // 0003 CALL R2 2 - 0x1C080502, // 0004 EQ R2 R2 K2 + ( &(const binstruction[42]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0012, // 0001 JMPF R2 #0015 + 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x1C080403, // 0004 EQ R2 R2 R3 0x780A0003, // 0005 JMPF R2 #000A 0x540A001F, // 0006 LDINT R2 32 0x04080202, // 0007 SUB R2 R1 R2 @@ -167,6 +170,78 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ 0x70020000, // 0011 JMP #0013 0x4C080000, // 0012 LDNIL R2 0x80040400, // 0013 RET 1 R2 + 0x70020013, // 0014 JMP #0029 + 0xB80A0800, // 0015 GETNGBL R2 K4 + 0x8C080505, // 0016 GETMET R2 R2 K5 + 0x54120007, // 0017 LDINT R4 8 + 0x7C080400, // 0018 CALL R2 2 + 0x1C080506, // 0019 EQ R2 R2 K6 + 0x780A0003, // 001A JMPF R2 #001F + 0x540A001F, // 001B LDINT R2 32 + 0x04080202, // 001C SUB R2 R1 R2 + 0x0C080503, // 001D DIV R2 R2 K3 + 0x5C040400, // 001E MOVE R1 R2 + 0x4C080000, // 001F LDNIL R2 + 0x20080202, // 0020 NE R2 R1 R2 + 0x780A0004, // 0021 JMPF R2 #0027 + 0x60080009, // 0022 GETGBL R2 G9 + 0x540E0063, // 0023 LDINT R3 100 + 0x080C0203, // 0024 MUL R3 R1 R3 + 0x7C080200, // 0025 CALL R2 1 + 0x70020000, // 0026 JMP #0028 + 0x4C080000, // 0027 LDNIL R2 + 0x80040400, // 0028 RET 1 R2 + 0x80000000, // 0029 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Temp; +be_local_closure(class_Matter_Plugin_Sensor_Temp_web_values, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Temp, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), + /* K4 */ be_nested_str_weak(shadow_value), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x4C1C0000, // 0007 LDNIL R7 + 0x20180C07, // 0008 NE R6 R6 R7 + 0x781A0005, // 0009 JMPF R6 #0010 + 0x6018000A, // 000A GETGBL R6 G10 + 0x881C0104, // 000B GETMBR R7 R0 K4 + 0x7C180200, // 000C CALL R6 1 + 0x541E0063, // 000D LDINT R7 100 + 0x0C180C07, // 000E DIV R6 R6 R7 + 0x70020000, // 000F JMP #0011 + 0x4C180000, // 0010 LDNIL R6 + 0x7C100400, // 0011 CALL R4 2 + 0x7C080400, // 0012 CALL R2 2 + 0x80000000, // 0013 RET 0 }) ) ); @@ -180,23 +255,20 @@ extern const bclass be_class_Matter_Plugin_Sensor; be_local_class(Matter_Plugin_Sensor_Temp, 0, &be_class_Matter_Plugin_Sensor, - be_nested_map(9, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Temperature) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(temperature) }, - { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(770, -1), be_const_int(2) }, })) ) } )) }, + { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Temp_value_changed_closure) }, + { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Temp_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Temperature), })) ) } )) }, - { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Temp_value_changed_closure) }, - { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Temperature) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Temp_read_attribute_closure) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { @@ -283,7 +355,11 @@ be_local_class(Matter_Plugin_Sensor_Temp, be_const_int(65533), })) ) } )) }, })) ) } )) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Temperature) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Temp_pre_value_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Temp_web_values_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Temperature) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(temperature) }, })), be_str_weak(Matter_Plugin_Sensor_Temp) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h deleted file mode 100644 index ce56fbb49..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h +++ /dev/null @@ -1,648 +0,0 @@ -/* Solidification of Matter_Plugin_4_Bridge_Light1.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Light1; - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_closure(class_Matter_Plugin_Bridge_Light1_invoke_request, /* name */ - be_nested_proto( - 21, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light1, - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(findsubval), - /* K6 */ be_nested_str_weak(set_bri), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(bri_X3A), - /* K9 */ be_nested_str_weak(publish_command), - /* K10 */ be_nested_str_weak(Bri), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_uint), - /* K13 */ be_nested_str_weak(Dimmer), - /* K14 */ be_const_int(1), - /* K15 */ be_const_int(2), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(set_onoff), - /* K18 */ be_nested_str_weak(Power), - /* K19 */ be_nested_str_weak(invoke_request), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[132]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x541E0007, // 0004 LDINT R7 8 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0072, // 0006 JMPF R7 #007A - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0021, // 0008 JMPF R7 #002B - 0x8C1C0505, // 0009 GETMET R7 R2 K5 - 0x58240004, // 000A LDCONST R9 K4 - 0x7C1C0400, // 000B CALL R7 2 - 0x8C200106, // 000C GETMET R8 R0 K6 - 0x5C280E00, // 000D MOVE R10 R7 - 0x7C200400, // 000E CALL R8 2 - 0x60200008, // 000F GETGBL R8 G8 - 0x5C240E00, // 0010 MOVE R9 R7 - 0x7C200200, // 0011 CALL R8 1 - 0x00221008, // 0012 ADD R8 K8 R8 - 0x900E0E08, // 0013 SETMBR R3 K7 R8 - 0x8C200109, // 0014 GETMET R8 R0 K9 - 0x5828000A, // 0015 LDCONST R10 K10 - 0xB82E1600, // 0016 GETNGBL R11 K11 - 0x8C2C170C, // 0017 GETMET R11 R11 K12 - 0x5C340E00, // 0018 MOVE R13 R7 - 0x58380004, // 0019 LDCONST R14 K4 - 0x543E00FD, // 001A LDINT R15 254 - 0x58400004, // 001B LDCONST R16 K4 - 0x544600FE, // 001C LDINT R17 255 - 0x7C2C0C00, // 001D CALL R11 6 - 0x5830000D, // 001E LDCONST R12 K13 - 0xB8361600, // 001F GETNGBL R13 K11 - 0x8C341B0C, // 0020 GETMET R13 R13 K12 - 0x5C3C0E00, // 0021 MOVE R15 R7 - 0x58400004, // 0022 LDCONST R16 K4 - 0x544600FD, // 0023 LDINT R17 254 - 0x58480004, // 0024 LDCONST R18 K4 - 0x544E0063, // 0025 LDINT R19 100 - 0x7C340C00, // 0026 CALL R13 6 - 0x7C200A00, // 0027 CALL R8 5 - 0x50200200, // 0028 LDBOOL R8 1 0 - 0x80041000, // 0029 RET 1 R8 - 0x7002004D, // 002A JMP #0079 - 0x1C1C0D0E, // 002B EQ R7 R6 K14 - 0x781E0002, // 002C JMPF R7 #0030 - 0x501C0200, // 002D LDBOOL R7 1 0 - 0x80040E00, // 002E RET 1 R7 - 0x70020048, // 002F JMP #0079 - 0x1C1C0D0F, // 0030 EQ R7 R6 K15 - 0x781E0002, // 0031 JMPF R7 #0035 - 0x501C0200, // 0032 LDBOOL R7 1 0 - 0x80040E00, // 0033 RET 1 R7 - 0x70020043, // 0034 JMP #0079 - 0x1C1C0D10, // 0035 EQ R7 R6 K16 - 0x781E0002, // 0036 JMPF R7 #003A - 0x501C0200, // 0037 LDBOOL R7 1 0 - 0x80040E00, // 0038 RET 1 R7 - 0x7002003E, // 0039 JMP #0079 - 0x541E0003, // 003A LDINT R7 4 - 0x1C1C0C07, // 003B EQ R7 R6 R7 - 0x781E002A, // 003C JMPF R7 #0068 - 0x8C1C0505, // 003D GETMET R7 R2 K5 - 0x58240004, // 003E LDCONST R9 K4 - 0x7C1C0400, // 003F CALL R7 2 - 0x8C200106, // 0040 GETMET R8 R0 K6 - 0x5C280E00, // 0041 MOVE R10 R7 - 0x7C200400, // 0042 CALL R8 2 - 0x24200F04, // 0043 GT R8 R7 K4 - 0x8C240111, // 0044 GETMET R9 R0 K17 - 0x5C2C1000, // 0045 MOVE R11 R8 - 0x7C240400, // 0046 CALL R9 2 - 0x60240008, // 0047 GETGBL R9 G8 - 0x5C280E00, // 0048 MOVE R10 R7 - 0x7C240200, // 0049 CALL R9 1 - 0x00261009, // 004A ADD R9 K8 R9 - 0x900E0E09, // 004B SETMBR R3 K7 R9 - 0x8C240109, // 004C GETMET R9 R0 K9 - 0x582C000A, // 004D LDCONST R11 K10 - 0xB8321600, // 004E GETNGBL R12 K11 - 0x8C30190C, // 004F GETMET R12 R12 K12 - 0x5C380E00, // 0050 MOVE R14 R7 - 0x583C0004, // 0051 LDCONST R15 K4 - 0x544200FD, // 0052 LDINT R16 254 - 0x58440004, // 0053 LDCONST R17 K4 - 0x544A00FE, // 0054 LDINT R18 255 - 0x7C300C00, // 0055 CALL R12 6 - 0x5834000D, // 0056 LDCONST R13 K13 - 0xB83A1600, // 0057 GETNGBL R14 K11 - 0x8C381D0C, // 0058 GETMET R14 R14 K12 - 0x5C400E00, // 0059 MOVE R16 R7 - 0x58440004, // 005A LDCONST R17 K4 - 0x544A00FD, // 005B LDINT R18 254 - 0x584C0004, // 005C LDCONST R19 K4 - 0x54520063, // 005D LDINT R20 100 - 0x7C380C00, // 005E CALL R14 6 - 0x583C0012, // 005F LDCONST R15 K18 - 0x78220001, // 0060 JMPF R8 #0063 - 0x5840000E, // 0061 LDCONST R16 K14 - 0x70020000, // 0062 JMP #0064 - 0x58400004, // 0063 LDCONST R16 K4 - 0x7C240E00, // 0064 CALL R9 7 - 0x50240200, // 0065 LDBOOL R9 1 0 - 0x80041200, // 0066 RET 1 R9 - 0x70020010, // 0067 JMP #0079 - 0x541E0004, // 0068 LDINT R7 5 - 0x1C1C0C07, // 0069 EQ R7 R6 R7 - 0x781E0002, // 006A JMPF R7 #006E - 0x501C0200, // 006B LDBOOL R7 1 0 - 0x80040E00, // 006C RET 1 R7 - 0x7002000A, // 006D JMP #0079 - 0x541E0005, // 006E LDINT R7 6 - 0x1C1C0C07, // 006F EQ R7 R6 R7 - 0x781E0002, // 0070 JMPF R7 #0074 - 0x501C0200, // 0071 LDBOOL R7 1 0 - 0x80040E00, // 0072 RET 1 R7 - 0x70020004, // 0073 JMP #0079 - 0x541E0006, // 0074 LDINT R7 7 - 0x1C1C0C07, // 0075 EQ R7 R6 R7 - 0x781E0001, // 0076 JMPF R7 #0079 - 0x501C0200, // 0077 LDBOOL R7 1 0 - 0x80040E00, // 0078 RET 1 R7 - 0x70020008, // 0079 JMP #0083 - 0x601C0003, // 007A GETGBL R7 G3 - 0x5C200000, // 007B MOVE R8 R0 - 0x7C1C0200, // 007C CALL R7 1 - 0x8C1C0F13, // 007D GETMET R7 R7 K19 - 0x5C240200, // 007E MOVE R9 R1 - 0x5C280400, // 007F MOVE R10 R2 - 0x5C2C0600, // 0080 MOVE R11 R3 - 0x7C1C0800, // 0081 CALL R7 4 - 0x80040E00, // 0082 RET 1 R7 - 0x80000000, // 0083 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_closure(class_Matter_Plugin_Bridge_Light1_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light1, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(shadow_bri), - /* K7 */ be_nested_str_weak(set), - /* K8 */ be_nested_str_weak(U1), - /* K9 */ be_nested_str_weak(NULL), - /* K10 */ be_const_int(2), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[79]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0007, // 0004 LDINT R7 8 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E003E, // 0006 JMPF R7 #0046 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 - 0x781E000F, // 000A JMPF R7 #001B - 0x881C0106, // 000B GETMBR R7 R0 K6 - 0x4C200000, // 000C LDNIL R8 - 0x201C0E08, // 000D NE R7 R7 R8 - 0x781E0005, // 000E JMPF R7 #0015 - 0x8C1C0707, // 000F GETMET R7 R3 K7 - 0x88240908, // 0010 GETMBR R9 R4 K8 - 0x88280106, // 0011 GETMBR R10 R0 K6 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0707, // 0015 GETMET R7 R3 K7 - 0x88240909, // 0016 GETMBR R9 R4 K9 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002002A, // 001A JMP #0046 - 0x1C1C0D0A, // 001B EQ R7 R6 K10 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0707, // 001D GETMET R7 R3 K7 - 0x88240908, // 001E GETMBR R9 R4 K8 - 0x58280005, // 001F LDCONST R10 K5 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020022, // 0022 JMP #0046 - 0x1C1C0D0B, // 0023 EQ R7 R6 K11 - 0x781E0005, // 0024 JMPF R7 #002B - 0x8C1C0707, // 0025 GETMET R7 R3 K7 - 0x88240908, // 0026 GETMBR R9 R4 K8 - 0x542A00FD, // 0027 LDINT R10 254 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x7002001A, // 002A JMP #0046 - 0x541E000E, // 002B LDINT R7 15 - 0x1C1C0C07, // 002C EQ R7 R6 R7 - 0x781E0005, // 002D JMPF R7 #0034 - 0x8C1C0707, // 002E GETMET R7 R3 K7 - 0x88240908, // 002F GETMBR R9 R4 K8 - 0x58280005, // 0030 LDCONST R10 K5 - 0x7C1C0600, // 0031 CALL R7 3 - 0x80040E00, // 0032 RET 1 R7 - 0x70020011, // 0033 JMP #0046 - 0x541E0010, // 0034 LDINT R7 17 - 0x1C1C0C07, // 0035 EQ R7 R6 R7 - 0x781E000E, // 0036 JMPF R7 #0046 - 0x881C0106, // 0037 GETMBR R7 R0 K6 - 0x4C200000, // 0038 LDNIL R8 - 0x201C0E08, // 0039 NE R7 R7 R8 - 0x781E0005, // 003A JMPF R7 #0041 - 0x8C1C0707, // 003B GETMET R7 R3 K7 - 0x88240908, // 003C GETMBR R9 R4 K8 - 0x88280106, // 003D GETMBR R10 R0 K6 - 0x7C1C0600, // 003E CALL R7 3 - 0x80040E00, // 003F RET 1 R7 - 0x70020004, // 0040 JMP #0046 - 0x8C1C0707, // 0041 GETMET R7 R3 K7 - 0x88240909, // 0042 GETMBR R9 R4 K9 - 0x4C280000, // 0043 LDNIL R10 - 0x7C1C0600, // 0044 CALL R7 3 - 0x80040E00, // 0045 RET 1 R7 - 0x601C0003, // 0046 GETGBL R7 G3 - 0x5C200000, // 0047 MOVE R8 R0 - 0x7C1C0200, // 0048 CALL R7 1 - 0x8C1C0F0C, // 0049 GETMET R7 R7 K12 - 0x5C240200, // 004A MOVE R9 R1 - 0x5C280400, // 004B MOVE R10 R2 - 0x5C2C0600, // 004C MOVE R11 R3 - 0x7C1C0800, // 004D CALL R7 4 - 0x80040E00, // 004E RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_closure(class_Matter_Plugin_Bridge_Light1_web_values, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light1, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s_X20_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(web_value_dimmer), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 - 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0106, // 0009 GETMET R7 R0 K6 - 0x7C1C0200, // 000A CALL R7 1 - 0x7C100600, // 000B CALL R4 3 - 0x7C080400, // 000C CALL R2 2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_bri -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_closure(class_Matter_Plugin_Bridge_Light1_set_bri, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light1, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(scale_uint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(call_remote_sync), - /* K4 */ be_nested_str_weak(Dimmer), - /* K5 */ be_nested_str_weak(parse_update), - }), - be_str_weak(set_bri), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x58140002, // 0003 LDCONST R5 K2 - 0x541A00FD, // 0004 LDINT R6 254 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x54220063, // 0006 LDINT R8 100 - 0x7C080C00, // 0007 CALL R2 6 - 0x8C0C0103, // 0008 GETMET R3 R0 K3 - 0x58140004, // 0009 LDCONST R5 K4 - 0x60180008, // 000A GETGBL R6 G8 - 0x5C1C0400, // 000B MOVE R7 R2 - 0x7C180200, // 000C CALL R6 1 - 0x7C0C0600, // 000D CALL R3 3 - 0x4C100000, // 000E LDNIL R4 - 0x20100604, // 000F NE R4 R3 R4 - 0x78120003, // 0010 JMPF R4 #0015 - 0x8C100105, // 0011 GETMET R4 R0 K5 - 0x5C180600, // 0012 MOVE R6 R3 - 0x541E000A, // 0013 LDINT R7 11 - 0x7C100600, // 0014 CALL R4 3 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_closure(class_Matter_Plugin_Bridge_Light1_parse_update, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light1, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_update), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(Dimmer), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(scale_uint), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(shadow_bri), - /* K7 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x540E000A, // 0007 LDINT R3 11 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0017, // 0009 JMPF R3 #0022 - 0x600C0009, // 000A GETGBL R3 G9 - 0x8C100301, // 000B GETMET R4 R1 K1 - 0x58180002, // 000C LDCONST R6 K2 - 0x7C100400, // 000D CALL R4 2 - 0x7C0C0200, // 000E CALL R3 1 - 0x4C100000, // 000F LDNIL R4 - 0x20100604, // 0010 NE R4 R3 R4 - 0x7812000F, // 0011 JMPF R4 #0022 - 0xB8120600, // 0012 GETNGBL R4 K3 - 0x8C100904, // 0013 GETMET R4 R4 K4 - 0x5C180600, // 0014 MOVE R6 R3 - 0x581C0005, // 0015 LDCONST R7 K5 - 0x54220063, // 0016 LDINT R8 100 - 0x58240005, // 0017 LDCONST R9 K5 - 0x542A00FD, // 0018 LDINT R10 254 - 0x7C100C00, // 0019 CALL R4 6 - 0x88140106, // 001A GETMBR R5 R0 K6 - 0x20140805, // 001B NE R5 R4 R5 - 0x78160004, // 001C JMPF R5 #0022 - 0x8C140107, // 001D GETMET R5 R0 K7 - 0x541E0007, // 001E LDINT R7 8 - 0x58200005, // 001F LDCONST R8 K5 - 0x7C140600, // 0020 CALL R5 3 - 0x90020C04, // 0021 SETMBR R0 K6 R4 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_value_dimmer -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_closure(class_Matter_Plugin_Bridge_Light1_web_value_dimmer, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light1, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(shadow_bri), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(_X25i_X25_X25), - /* K6 */ be_nested_str_weak(_X26_X23128261_X3B_X20), - }), - be_str_weak(web_value_dimmer), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A000C, // 0004 JMPF R2 #0012 - 0xB80A0400, // 0005 GETNGBL R2 K2 - 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x88100101, // 0007 GETMBR R4 R0 K1 - 0x58140004, // 0008 LDCONST R5 K4 - 0x541A00FD, // 0009 LDINT R6 254 - 0x581C0004, // 000A LDCONST R7 K4 - 0x54220063, // 000B LDINT R8 100 - 0x7C080C00, // 000C CALL R2 6 - 0x600C0018, // 000D GETGBL R3 G24 - 0x58100005, // 000E LDCONST R4 K5 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x5C040600, // 0011 MOVE R1 R3 - 0x000A0C01, // 0012 ADD R2 K6 R1 - 0x80040400, // 0013 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Light1 -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light0; -be_local_class(Matter_Plugin_Bridge_Light1, - 1, - &be_class_Matter_Plugin_Bridge_Light0, - be_nested_map(11, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(web_value_dimmer, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_web_value_dimmer_closure) }, - { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_parse_update_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light1) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_read_attribute_closure) }, - { be_const_key_weak(TYPES, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(257, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(shadow_bri, -1), be_const_var(0) }, - { be_const_key_weak(CLUSTERS, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(2), - be_const_int(3), - be_const_int(15), - be_const_int(17), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(set_bri, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_set_bri_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X201_X20Dimmer) }, - { be_const_key_weak(web_values, 1), be_const_closure(class_Matter_Plugin_Bridge_Light1_web_values_closure) }, - { be_const_key_weak(invoke_request, 0), be_const_closure(class_Matter_Plugin_Bridge_Light1_invoke_request_closure) }, - })), - be_str_weak(Matter_Plugin_Bridge_Light1) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h deleted file mode 100644 index b8f7cb5b0..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h +++ /dev/null @@ -1,229 +0,0 @@ -/* Solidification of Matter_Plugin_4_Bridge_Sensor_Flow.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow; - -/******************************************************************** -** Solidified function: pre_value -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_pre_value, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Flow, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(pre_value), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0004, // 0002 JMPF R2 #0008 - 0x60080009, // 0003 GETGBL R2 G9 - 0x540E0009, // 0004 LDINT R3 10 - 0x080C0203, // 0005 MUL R3 R1 R3 - 0x7C080200, // 0006 CALL R2 1 - 0x70020000, // 0007 JMP #0009 - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: value_changed -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_value_changed, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Flow, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), - be_str_weak(value_changed), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0403, // 0001 LDINT R3 1028 - 0x58100001, // 0002 LDCONST R4 K1 - 0x7C040600, // 0003 CALL R1 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Flow' -extern bclosure *class_Matter_Plugin_Sensor_Flow_read_attribute; - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_web_values, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Flow, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20m3_X2Fh), - /* K4 */ be_nested_str_weak(shadow_value), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0104, // 0007 GETMBR R7 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x7C100400, // 0009 CALL R4 2 - 0x7C080400, // 000A CALL R2 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Flow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_class(Matter_Plugin_Bridge_Sensor_Flow, - 0, - &be_class_Matter_Plugin_Bridge_Sensor, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_pre_value_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_web_values_closure) }, - { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(774, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_static_closure(class_Matter_Plugin_Sensor_Flow_read_attribute_closure) }, - { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_value_changed_closure) }, - { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Flow) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_flow) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Flow) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h deleted file mode 100644 index 0c1681ff3..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h +++ /dev/null @@ -1,237 +0,0 @@ -/* Solidification of Matter_Plugin_4_Bridge_Sensor_Humidity.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity; - -/******************************************************************** -** Solidified function: pre_value -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_pre_value, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Humidity, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(pre_value), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0004, // 0002 JMPF R2 #0008 - 0x60080009, // 0003 GETGBL R2 G9 - 0x540E0063, // 0004 LDINT R3 100 - 0x080C0203, // 0005 MUL R3 R1 R3 - 0x7C080200, // 0006 CALL R2 1 - 0x70020000, // 0007 JMP #0009 - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: value_changed -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_value_changed, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Humidity, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), - be_str_weak(value_changed), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0404, // 0001 LDINT R3 1029 - 0x58100001, // 0002 LDCONST R4 K1 - 0x7C040600, // 0003 CALL R1 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Humidity' -extern bclosure *class_Matter_Plugin_Sensor_Humidity_read_attribute; - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_web_values, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Humidity, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25), - /* K4 */ be_nested_str_weak(shadow_value), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x4C1C0000, // 0007 LDNIL R7 - 0x20180C07, // 0008 NE R6 R6 R7 - 0x781A0005, // 0009 JMPF R6 #0010 - 0x6018000A, // 000A GETGBL R6 G10 - 0x881C0104, // 000B GETMBR R7 R0 K4 - 0x7C180200, // 000C CALL R6 1 - 0x541E0063, // 000D LDINT R7 100 - 0x0C180C07, // 000E DIV R6 R6 R7 - 0x70020000, // 000F JMP #0011 - 0x4C180000, // 0010 LDNIL R6 - 0x7C100400, // 0011 CALL R4 2 - 0x7C080400, // 0012 CALL R2 2 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Humidity -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_class(Matter_Plugin_Bridge_Sensor_Humidity, - 0, - &be_class_Matter_Plugin_Bridge_Sensor, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_pre_value_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_web_values_closure) }, - { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(775, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute_closure) }, - { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_value_changed_closure) }, - { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Humidity) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_humidity) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1029, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Humidity) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h deleted file mode 100644 index 49558b390..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h +++ /dev/null @@ -1,241 +0,0 @@ -/* Solidification of Matter_Plugin_4_Bridge_Sensor_Illuminance.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance; - -/******************************************************************** -** Solidified function: pre_value -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_pre_value, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Illuminance, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(math), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(log10), - /* K3 */ be_const_int(1), - }), - be_str_weak(pre_value), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0xA40A0000, // 0005 IMPORT R2 K0 - 0x140C0301, // 0006 LT R3 R1 K1 - 0x780E0001, // 0007 JMPF R3 #000A - 0x80060200, // 0008 RET 1 K1 - 0x70020005, // 0009 JMP #0010 - 0x8C0C0502, // 000A GETMET R3 R2 K2 - 0x00140303, // 000B ADD R5 R1 K3 - 0x7C0C0400, // 000C CALL R3 2 - 0x5412270F, // 000D LDINT R4 10000 - 0x080C0604, // 000E MUL R3 R3 R4 - 0x80040600, // 000F RET 1 R3 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: value_changed -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_value_changed, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Illuminance, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), - be_str_weak(value_changed), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E03FF, // 0001 LDINT R3 1024 - 0x58100001, // 0002 LDCONST R4 K1 - 0x7C040600, // 0003 CALL R1 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Illuminance' -extern bclosure *class_Matter_Plugin_Sensor_Illuminance_read_attribute; - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_web_values, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Illuminance, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25ilux), - /* K4 */ be_nested_str_weak(shadow_value), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0104, // 0007 GETMBR R7 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x7C100400, // 0009 CALL R4 2 - 0x7C080400, // 000A CALL R2 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Illuminance -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance, - 0, - &be_class_Matter_Plugin_Bridge_Sensor, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_pre_value_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_web_values_closure) }, - { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(262, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute_closure) }, - { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_value_changed_closure) }, - { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Illuminance) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_illuminance) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1024, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Illuminance) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h deleted file mode 100644 index 4a8cf45cd..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h +++ /dev/null @@ -1,228 +0,0 @@ -/* Solidification of Matter_Plugin_4_Bridge_Sensor_Pressure.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure; - -/******************************************************************** -** Solidified function: pre_value -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_pre_value, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Pressure, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(pre_value), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0003, // 0002 JMPF R2 #0007 - 0x60080009, // 0003 GETGBL R2 G9 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x70020000, // 0006 JMP #0008 - 0x4C080000, // 0007 LDNIL R2 - 0x80040400, // 0008 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: value_changed -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_value_changed, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Pressure, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), - be_str_weak(value_changed), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0402, // 0001 LDINT R3 1027 - 0x58100001, // 0002 LDCONST R4 K1 - 0x7C040600, // 0003 CALL R1 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Pressure' -extern bclosure *class_Matter_Plugin_Sensor_Pressure_read_attribute; - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_web_values, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Pressure, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20hPa), - /* K4 */ be_nested_str_weak(shadow_value), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0104, // 0007 GETMBR R7 R0 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x7C100400, // 0009 CALL R4 2 - 0x7C080400, // 000A CALL R2 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Pressure -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_class(Matter_Plugin_Bridge_Sensor_Pressure, - 0, - &be_class_Matter_Plugin_Bridge_Sensor, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_pre_value_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_web_values_closure) }, - { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(773, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute_closure) }, - { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_value_changed_closure) }, - { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Pressure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_pressure) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1027, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Pressure) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h deleted file mode 100644 index 001b3984d..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h +++ /dev/null @@ -1,249 +0,0 @@ -/* Solidification of Matter_Plugin_4_Bridge_Sensor_Temp.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp; - -/******************************************************************** -** Solidified function: pre_value -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_pre_value, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Temp, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(temp_unit), - /* K1 */ be_nested_str_weak(TEMP_F), - /* K2 */ be_const_real_hex(0x3FE66666), - }), - be_str_weak(pre_value), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x780A0003, // 0003 JMPF R2 #0008 - 0x540A001F, // 0004 LDINT R2 32 - 0x04080202, // 0005 SUB R2 R1 R2 - 0x0C080502, // 0006 DIV R2 R2 K2 - 0x5C040400, // 0007 MOVE R1 R2 - 0x4C080000, // 0008 LDNIL R2 - 0x20080202, // 0009 NE R2 R1 R2 - 0x780A0004, // 000A JMPF R2 #0010 - 0x60080009, // 000B GETGBL R2 G9 - 0x540E0063, // 000C LDINT R3 100 - 0x080C0203, // 000D MUL R3 R1 R3 - 0x7C080200, // 000E CALL R2 1 - 0x70020000, // 000F JMP #0011 - 0x4C080000, // 0010 LDNIL R2 - 0x80040400, // 0011 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: value_changed -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_value_changed, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Temp, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), - be_str_weak(value_changed), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0401, // 0001 LDINT R3 1026 - 0x58100001, // 0002 LDCONST R4 K1 - 0x7C040600, // 0003 CALL R1 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Temp' -extern bclosure *class_Matter_Plugin_Sensor_Temp_read_attribute; - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_web_values, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Temp, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), - /* K4 */ be_nested_str_weak(shadow_value), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x4C1C0000, // 0007 LDNIL R7 - 0x20180C07, // 0008 NE R6 R6 R7 - 0x781A0005, // 0009 JMPF R6 #0010 - 0x6018000A, // 000A GETGBL R6 G10 - 0x881C0104, // 000B GETMBR R7 R0 K4 - 0x7C180200, // 000C CALL R6 1 - 0x541E0063, // 000D LDINT R7 100 - 0x0C180C07, // 000E DIV R6 R6 R7 - 0x70020000, // 000F JMP #0011 - 0x4C180000, // 0010 LDNIL R6 - 0x7C100400, // 0011 CALL R4 2 - 0x7C080400, // 0012 CALL R2 2 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Sensor_Temp -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor; -be_local_class(Matter_Plugin_Bridge_Sensor_Temp, - 0, - &be_class_Matter_Plugin_Bridge_Sensor, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_pre_value_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_web_values_closure) }, - { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(770, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Temp_read_attribute_closure) }, - { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_value_changed_closure) }, - { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Temperature) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_temperature) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(1026, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - })), - be_str_weak(Matter_Plugin_Bridge_Sensor_Temp) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h deleted file mode 100644 index 703f9b595..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h +++ /dev/null @@ -1,550 +0,0 @@ -/* Solidification of Matter_Plugin_5_Bridge_Light2.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Light2; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(update_ct_minmax), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_parse_update, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_update), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(CT), - /* K3 */ be_nested_str_weak(shadow_ct), - /* K4 */ be_nested_str_weak(ct_min), - /* K5 */ be_nested_str_weak(ct_max), - /* K6 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x540E000A, // 0007 LDINT R3 11 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0017, // 0009 JMPF R3 #0022 - 0x600C0009, // 000A GETGBL R3 G9 - 0x8C100301, // 000B GETMET R4 R1 K1 - 0x58180002, // 000C LDCONST R6 K2 - 0x7C100400, // 000D CALL R4 2 - 0x7C0C0200, // 000E CALL R3 1 - 0x4C100000, // 000F LDNIL R4 - 0x20100604, // 0010 NE R4 R3 R4 - 0x7812000F, // 0011 JMPF R4 #0022 - 0x88100103, // 0012 GETMBR R4 R0 K3 - 0x20100604, // 0013 NE R4 R3 R4 - 0x7812000C, // 0014 JMPF R4 #0022 - 0x88100104, // 0015 GETMBR R4 R0 K4 - 0x14100604, // 0016 LT R4 R3 R4 - 0x78120000, // 0017 JMPF R4 #0019 - 0x880C0104, // 0018 GETMBR R3 R0 K4 - 0x88100105, // 0019 GETMBR R4 R0 K5 - 0x24100604, // 001A GT R4 R3 R4 - 0x78120000, // 001B JMPF R4 #001D - 0x880C0105, // 001C GETMBR R3 R0 K5 - 0x8C100106, // 001D GETMET R4 R0 K6 - 0x541A02FF, // 001E LDINT R6 768 - 0x541E0006, // 001F LDINT R7 7 - 0x7C100600, // 0020 CALL R4 3 - 0x90020603, // 0021 SETMBR R0 K3 R3 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(web_value_dimmer), - /* K7 */ be_nested_str_weak(web_value_ct), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 - 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0106, // 0009 GETMET R7 R0 K6 - 0x7C1C0200, // 000A CALL R7 1 - 0x8C200107, // 000B GETMET R8 R0 K7 - 0x7C200200, // 000C CALL R8 1 - 0x7C100800, // 000D CALL R4 4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_value_ct -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_web_value_ct, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(shadow_ct), - /* K2 */ be_const_int(1000000), - /* K3 */ be_nested_str_weak(_X25iK), - /* K4 */ be_nested_str_weak(_X26_X239898_X3B_X20), - }), - be_str_weak(web_value_ct), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A000C, // 0004 JMPF R2 #0012 - 0x88080101, // 0005 GETMBR R2 R0 K1 - 0x0C0A0402, // 0006 DIV R2 K2 R2 - 0x540E0018, // 0007 LDINT R3 25 - 0x00080403, // 0008 ADD R2 R2 R3 - 0x540E0031, // 0009 LDINT R3 50 - 0x0C080403, // 000A DIV R2 R2 R3 - 0x540E0031, // 000B LDINT R3 50 - 0x08080403, // 000C MUL R2 R2 R3 - 0x600C0018, // 000D GETGBL R3 G24 - 0x58100003, // 000E LDCONST R4 K3 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x5C040600, // 0011 MOVE R1 R3 - 0x000A0801, // 0012 ADD R2 K4 R1 - 0x80040400, // 0013 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_ct -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_set_ct, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(call_remote_sync), - /* K1 */ be_nested_str_weak(CT), - /* K2 */ be_nested_str_weak(parse_update), - }), - be_str_weak(set_ct), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x60140008, // 0002 GETGBL R5 G8 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C140200, // 0004 CALL R5 1 - 0x7C080600, // 0005 CALL R2 3 - 0x4C0C0000, // 0006 LDNIL R3 - 0x200C0403, // 0007 NE R3 R2 R3 - 0x780E0003, // 0008 JMPF R3 #000D - 0x8C0C0102, // 0009 GETMET R3 R0 K2 - 0x5C140400, // 000A MOVE R5 R2 - 0x541A000A, // 000B LDINT R6 11 - 0x7C0C0600, // 000C CALL R3 3 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_invoke_request, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_nested_str_weak(findsubval), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(ct_min), - /* K7 */ be_nested_str_weak(ct_max), - /* K8 */ be_nested_str_weak(set_ct), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(ct_X3A), - /* K11 */ be_nested_str_weak(publish_command), - /* K12 */ be_nested_str_weak(CT), - /* K13 */ be_nested_str_weak(invoke_request), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x541E02FF, // 0004 LDINT R7 768 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E002E, // 0006 JMPF R7 #0036 - 0x541E0009, // 0007 LDINT R7 10 - 0x1C1C0C07, // 0008 EQ R7 R6 R7 - 0x781E0019, // 0009 JMPF R7 #0024 - 0x8C1C0504, // 000A GETMET R7 R2 K4 - 0x58240005, // 000B LDCONST R9 K5 - 0x7C1C0400, // 000C CALL R7 2 - 0x88200106, // 000D GETMBR R8 R0 K6 - 0x14200E08, // 000E LT R8 R7 R8 - 0x78220000, // 000F JMPF R8 #0011 - 0x881C0106, // 0010 GETMBR R7 R0 K6 - 0x88200107, // 0011 GETMBR R8 R0 K7 - 0x24200E08, // 0012 GT R8 R7 R8 - 0x78220000, // 0013 JMPF R8 #0015 - 0x881C0107, // 0014 GETMBR R7 R0 K7 - 0x8C200108, // 0015 GETMET R8 R0 K8 - 0x5C280E00, // 0016 MOVE R10 R7 - 0x7C200400, // 0017 CALL R8 2 - 0x60200008, // 0018 GETGBL R8 G8 - 0x5C240E00, // 0019 MOVE R9 R7 - 0x7C200200, // 001A CALL R8 1 - 0x00221408, // 001B ADD R8 K10 R8 - 0x900E1208, // 001C SETMBR R3 K9 R8 - 0x8C20010B, // 001D GETMET R8 R0 K11 - 0x5828000C, // 001E LDCONST R10 K12 - 0x5C2C0E00, // 001F MOVE R11 R7 - 0x7C200600, // 0020 CALL R8 3 - 0x50200200, // 0021 LDBOOL R8 1 0 - 0x80041000, // 0022 RET 1 R8 - 0x70020010, // 0023 JMP #0035 - 0x541E0046, // 0024 LDINT R7 71 - 0x1C1C0C07, // 0025 EQ R7 R6 R7 - 0x781E0002, // 0026 JMPF R7 #002A - 0x501C0200, // 0027 LDBOOL R7 1 0 - 0x80040E00, // 0028 RET 1 R7 - 0x7002000A, // 0029 JMP #0035 - 0x541E004A, // 002A LDINT R7 75 - 0x1C1C0C07, // 002B EQ R7 R6 R7 - 0x781E0002, // 002C JMPF R7 #0030 - 0x501C0200, // 002D LDBOOL R7 1 0 - 0x80040E00, // 002E RET 1 R7 - 0x70020004, // 002F JMP #0035 - 0x541E004B, // 0030 LDINT R7 76 - 0x1C1C0C07, // 0031 EQ R7 R6 R7 - 0x781E0001, // 0032 JMPF R7 #0035 - 0x501C0200, // 0033 LDBOOL R7 1 0 - 0x80040E00, // 0034 RET 1 R7 - 0x70020008, // 0035 JMP #003F - 0x601C0003, // 0036 GETGBL R7 G3 - 0x5C200000, // 0037 MOVE R8 R0 - 0x7C1C0200, // 0038 CALL R7 1 - 0x8C1C0F0D, // 0039 GETMET R7 R7 K13 - 0x5C240200, // 003A MOVE R9 R1 - 0x5C280400, // 003B MOVE R10 R2 - 0x5C2C0600, // 003C MOVE R11 R3 - 0x7C1C0800, // 003D CALL R7 4 - 0x80040E00, // 003E RET 1 R7 - 0x80000000, // 003F RET 0 - }) - ) -); -/*******************************************************************/ - -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Light2' -extern bclosure *class_Matter_Plugin_Light2_read_attribute; - -/******************************************************************** -** Solidified function: update_ct_minmax -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light2; -be_local_closure(class_Matter_Plugin_Bridge_Light2_update_ct_minmax, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light2, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(get_option), - /* K2 */ be_nested_str_weak(ct_min), - /* K3 */ be_nested_str_weak(ct_max), - }), - be_str_weak(update_ct_minmax), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x540E0051, // 0002 LDINT R3 82 - 0x7C040400, // 0003 CALL R1 2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x540A00C7, // 0005 LDINT R2 200 - 0x70020000, // 0006 JMP #0008 - 0x540A0098, // 0007 LDINT R2 153 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0x78060001, // 0009 JMPF R1 #000C - 0x540A017B, // 000A LDINT R2 380 - 0x70020000, // 000B JMP #000D - 0x540A01F3, // 000C LDINT R2 500 - 0x90020602, // 000D SETMBR R0 K3 R2 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Light2 -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_class(Matter_Plugin_Bridge_Light2, - 3, - &be_class_Matter_Plugin_Bridge_Light1, - be_nested_map(15, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_init_closure) }, - { be_const_key_weak(parse_update, 9), be_const_closure(class_Matter_Plugin_Bridge_Light2_parse_update_closure) }, - { be_const_key_weak(web_values, 11), be_const_closure(class_Matter_Plugin_Bridge_Light2_web_values_closure) }, - { be_const_key_weak(ct_max, -1), be_const_var(2) }, - { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(2), - be_const_int(3), - be_const_int(15), - be_const_int(17), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(7), - be_const_int(8), - be_const_int(15), - be_const_int(16394), - be_const_int(16395), - be_const_int(16396), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(268, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(web_value_ct, 8), be_const_closure(class_Matter_Plugin_Bridge_Light2_web_value_ct_closure) }, - { be_const_key_weak(set_ct, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_set_ct_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X202_X20CT) }, - { be_const_key_weak(shadow_ct, -1), be_const_var(0) }, - { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_update_ct_minmax_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_invoke_request_closure) }, - { be_const_key_weak(read_attribute, 10), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) }, - { be_const_key_weak(ct_min, -1), be_const_var(1) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light2) }, - })), - be_str_weak(Matter_Plugin_Bridge_Light2) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h deleted file mode 100644 index 31cbfdca5..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h +++ /dev/null @@ -1,699 +0,0 @@ -/* Solidification of Matter_Plugin_5_Bridge_Light3.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Bridge_Light3; - -/******************************************************************** -** Solidified function: set_sat -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_set_sat, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(scale_uint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(call_remote_sync), - /* K4 */ be_nested_str_weak(HSBColor2), - /* K5 */ be_nested_str_weak(parse_update), - }), - be_str_weak(set_sat), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x58140002, // 0003 LDCONST R5 K2 - 0x541A00FD, // 0004 LDINT R6 254 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x54220063, // 0006 LDINT R8 100 - 0x7C080C00, // 0007 CALL R2 6 - 0x8C0C0103, // 0008 GETMET R3 R0 K3 - 0x58140004, // 0009 LDCONST R5 K4 - 0x5C180400, // 000A MOVE R6 R2 - 0x7C0C0600, // 000B CALL R3 3 - 0x4C100000, // 000C LDNIL R4 - 0x20100604, // 000D NE R4 R3 R4 - 0x78120003, // 000E JMPF R4 #0013 - 0x8C100105, // 000F GETMET R4 R0 K5 - 0x5C180600, // 0010 MOVE R6 R3 - 0x541E000A, // 0011 LDINT R7 11 - 0x7C100600, // 0012 CALL R4 3 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_update -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_parse_update, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_update), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(HSBColor), - /* K3 */ be_nested_str_weak(string), - /* K4 */ be_nested_str_weak(split), - /* K5 */ be_nested_str_weak(_X2C), - /* K6 */ be_const_int(0), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_nested_str_weak(shadow_hue), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(parse_update), - &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x540E000A, // 0007 LDINT R3 11 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E003A, // 0009 JMPF R3 #0045 - 0x8C0C0301, // 000A GETMET R3 R1 K1 - 0x58140002, // 000B LDCONST R5 K2 - 0x7C0C0400, // 000C CALL R3 2 - 0x780E0036, // 000D JMPF R3 #0045 - 0xA4120600, // 000E IMPORT R4 K3 - 0x8C140904, // 000F GETMET R5 R4 K4 - 0x5C1C0600, // 0010 MOVE R7 R3 - 0x58200005, // 0011 LDCONST R8 K5 - 0x7C140600, // 0012 CALL R5 3 - 0x60180009, // 0013 GETGBL R6 G9 - 0x941C0B06, // 0014 GETIDX R7 R5 K6 - 0x7C180200, // 0015 CALL R6 1 - 0x601C0009, // 0016 GETGBL R7 G9 - 0x94200B07, // 0017 GETIDX R8 R5 K7 - 0x7C1C0200, // 0018 CALL R7 1 - 0x4C200000, // 0019 LDNIL R8 - 0x20200C08, // 001A NE R8 R6 R8 - 0x78220009, // 001B JMPF R8 #0026 - 0xB8221000, // 001C GETNGBL R8 K8 - 0x8C201109, // 001D GETMET R8 R8 K9 - 0x5C280C00, // 001E MOVE R10 R6 - 0x582C0006, // 001F LDCONST R11 K6 - 0x54320167, // 0020 LDINT R12 360 - 0x58340006, // 0021 LDCONST R13 K6 - 0x543A00FD, // 0022 LDINT R14 254 - 0x7C200C00, // 0023 CALL R8 6 - 0x5C181000, // 0024 MOVE R6 R8 - 0x70020000, // 0025 JMP #0027 - 0x8818010A, // 0026 GETMBR R6 R0 K10 - 0x4C200000, // 0027 LDNIL R8 - 0x20200E08, // 0028 NE R8 R7 R8 - 0x78220009, // 0029 JMPF R8 #0034 - 0xB8221000, // 002A GETNGBL R8 K8 - 0x8C201109, // 002B GETMET R8 R8 K9 - 0x5C280E00, // 002C MOVE R10 R7 - 0x582C0006, // 002D LDCONST R11 K6 - 0x54320063, // 002E LDINT R12 100 - 0x58340006, // 002F LDCONST R13 K6 - 0x543A00FD, // 0030 LDINT R14 254 - 0x7C200C00, // 0031 CALL R8 6 - 0x5C1C1000, // 0032 MOVE R7 R8 - 0x70020000, // 0033 JMP #0035 - 0x881C010B, // 0034 GETMBR R7 R0 K11 - 0x8820010A, // 0035 GETMBR R8 R0 K10 - 0x20200C08, // 0036 NE R8 R6 R8 - 0x78220004, // 0037 JMPF R8 #003D - 0x8C20010C, // 0038 GETMET R8 R0 K12 - 0x542A02FF, // 0039 LDINT R10 768 - 0x582C0006, // 003A LDCONST R11 K6 - 0x7C200600, // 003B CALL R8 3 - 0x90021406, // 003C SETMBR R0 K10 R6 - 0x8820010B, // 003D GETMBR R8 R0 K11 - 0x20200E08, // 003E NE R8 R7 R8 - 0x78220004, // 003F JMPF R8 #0045 - 0x8C20010C, // 0040 GETMET R8 R0 K12 - 0x542A02FF, // 0041 LDINT R10 768 - 0x582C0007, // 0042 LDCONST R11 K7 - 0x7C200600, // 0043 CALL R8 3 - 0x90021607, // 0044 SETMBR R0 K11 R7 - 0x80000000, // 0045 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(web_value_dimmer), - /* K7 */ be_nested_str_weak(web_value_RGB), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 - 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0106, // 0009 GETMET R7 R0 K6 - 0x7C1C0200, // 000A CALL R7 1 - 0x8C200107, // 000B GETMET R8 R0 K7 - 0x7C200200, // 000C CALL R8 1 - 0x7C100800, // 000D CALL R4 4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_value_RGB -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_web_value_RGB, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_hue), - /* K1 */ be_nested_str_weak(shadow_sat), - /* K2 */ be_nested_str_weak(light_state), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(set_bri), - /* K5 */ be_nested_str_weak(set_huesat), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_uint), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), - /* K10 */ be_nested_str_weak(r), - /* K11 */ be_nested_str_weak(g), - /* K12 */ be_nested_str_weak(b), - /* K13 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), - /* K14 */ be_nested_str_weak(), - }), - be_str_weak(web_value_RGB), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060027, // 0003 JMPF R1 #002C - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x20040202, // 0006 NE R1 R1 R2 - 0x78060023, // 0007 JMPF R1 #002C - 0xB8060400, // 0008 GETNGBL R1 K2 - 0x58080003, // 0009 LDCONST R2 K3 - 0x7C040200, // 000A CALL R1 1 - 0x8C080304, // 000B GETMET R2 R1 K4 - 0x541200FE, // 000C LDINT R4 255 - 0x7C080400, // 000D CALL R2 2 - 0x8C080305, // 000E GETMET R2 R1 K5 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x8C100907, // 0010 GETMET R4 R4 K7 - 0x88180100, // 0011 GETMBR R6 R0 K0 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x542200FD, // 0013 LDINT R8 254 - 0x58240008, // 0014 LDCONST R9 K8 - 0x542A0167, // 0015 LDINT R10 360 - 0x7C100C00, // 0016 CALL R4 6 - 0xB8160C00, // 0017 GETNGBL R5 K6 - 0x8C140B07, // 0018 GETMET R5 R5 K7 - 0x881C0101, // 0019 GETMBR R7 R0 K1 - 0x58200008, // 001A LDCONST R8 K8 - 0x542600FD, // 001B LDINT R9 254 - 0x58280008, // 001C LDCONST R10 K8 - 0x542E00FE, // 001D LDINT R11 255 - 0x7C140C00, // 001E CALL R5 6 - 0x7C080600, // 001F CALL R2 3 - 0x60080018, // 0020 GETGBL R2 G24 - 0x580C0009, // 0021 LDCONST R3 K9 - 0x8810030A, // 0022 GETMBR R4 R1 K10 - 0x8814030B, // 0023 GETMBR R5 R1 K11 - 0x8818030C, // 0024 GETMBR R6 R1 K12 - 0x7C080800, // 0025 CALL R2 4 - 0x600C0018, // 0026 GETGBL R3 G24 - 0x5810000D, // 0027 LDCONST R4 K13 - 0x5C140400, // 0028 MOVE R5 R2 - 0x5C180400, // 0029 MOVE R6 R2 - 0x7C0C0600, // 002A CALL R3 3 - 0x80040600, // 002B RET 1 R3 - 0x80061C00, // 002C RET 1 K14 - }) - ) -); -/*******************************************************************/ - -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Light3' -extern bclosure *class_Matter_Plugin_Light3_read_attribute; - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_invoke_request, /* name */ - be_nested_proto( - 15, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(findsubval), - /* K6 */ be_nested_str_weak(set_hue), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(hue_X3A), - /* K9 */ be_nested_str_weak(publish_command), - /* K10 */ be_nested_str_weak(Hue), - /* K11 */ be_const_int(1), - /* K12 */ be_const_int(2), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(set_sat), - /* K15 */ be_nested_str_weak(sat_X3A), - /* K16 */ be_nested_str_weak(Sat), - /* K17 */ be_nested_str_weak(_X20sat_X3A), - /* K18 */ be_nested_str_weak(invoke_request), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[119]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x541E02FF, // 0004 LDINT R7 768 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0065, // 0006 JMPF R7 #006D - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x8C1C0505, // 0009 GETMET R7 R2 K5 - 0x58240004, // 000A LDCONST R9 K4 - 0x7C1C0400, // 000B CALL R7 2 - 0x8C200106, // 000C GETMET R8 R0 K6 - 0x5C280E00, // 000D MOVE R10 R7 - 0x7C200400, // 000E CALL R8 2 - 0x60200008, // 000F GETGBL R8 G8 - 0x5C240E00, // 0010 MOVE R9 R7 - 0x7C200200, // 0011 CALL R8 1 - 0x00221008, // 0012 ADD R8 K8 R8 - 0x900E0E08, // 0013 SETMBR R3 K7 R8 - 0x8C200109, // 0014 GETMET R8 R0 K9 - 0x5828000A, // 0015 LDCONST R10 K10 - 0x5C2C0E00, // 0016 MOVE R11 R7 - 0x7C200600, // 0017 CALL R8 3 - 0x50200200, // 0018 LDBOOL R8 1 0 - 0x80041000, // 0019 RET 1 R8 - 0x70020050, // 001A JMP #006C - 0x1C1C0D0B, // 001B EQ R7 R6 K11 - 0x781E0002, // 001C JMPF R7 #0020 - 0x501C0200, // 001D LDBOOL R7 1 0 - 0x80040E00, // 001E RET 1 R7 - 0x7002004B, // 001F JMP #006C - 0x1C1C0D0C, // 0020 EQ R7 R6 K12 - 0x781E0002, // 0021 JMPF R7 #0025 - 0x501C0200, // 0022 LDBOOL R7 1 0 - 0x80040E00, // 0023 RET 1 R7 - 0x70020046, // 0024 JMP #006C - 0x1C1C0D0D, // 0025 EQ R7 R6 K13 - 0x781E0011, // 0026 JMPF R7 #0039 - 0x8C1C0505, // 0027 GETMET R7 R2 K5 - 0x58240004, // 0028 LDCONST R9 K4 - 0x7C1C0400, // 0029 CALL R7 2 - 0x8C20010E, // 002A GETMET R8 R0 K14 - 0x5C280E00, // 002B MOVE R10 R7 - 0x7C200400, // 002C CALL R8 2 - 0x60200008, // 002D GETGBL R8 G8 - 0x5C240E00, // 002E MOVE R9 R7 - 0x7C200200, // 002F CALL R8 1 - 0x00221E08, // 0030 ADD R8 K15 R8 - 0x900E0E08, // 0031 SETMBR R3 K7 R8 - 0x8C200109, // 0032 GETMET R8 R0 K9 - 0x58280010, // 0033 LDCONST R10 K16 - 0x5C2C0E00, // 0034 MOVE R11 R7 - 0x7C200600, // 0035 CALL R8 3 - 0x50200200, // 0036 LDBOOL R8 1 0 - 0x80041000, // 0037 RET 1 R8 - 0x70020032, // 0038 JMP #006C - 0x541E0003, // 0039 LDINT R7 4 - 0x1C1C0C07, // 003A EQ R7 R6 R7 - 0x781E0002, // 003B JMPF R7 #003F - 0x501C0200, // 003C LDBOOL R7 1 0 - 0x80040E00, // 003D RET 1 R7 - 0x7002002C, // 003E JMP #006C - 0x541E0004, // 003F LDINT R7 5 - 0x1C1C0C07, // 0040 EQ R7 R6 R7 - 0x781E0002, // 0041 JMPF R7 #0045 - 0x501C0200, // 0042 LDBOOL R7 1 0 - 0x80040E00, // 0043 RET 1 R7 - 0x70020026, // 0044 JMP #006C - 0x541E0005, // 0045 LDINT R7 6 - 0x1C1C0C07, // 0046 EQ R7 R6 R7 - 0x781E001E, // 0047 JMPF R7 #0067 - 0x8C1C0505, // 0048 GETMET R7 R2 K5 - 0x58240004, // 0049 LDCONST R9 K4 - 0x7C1C0400, // 004A CALL R7 2 - 0x8C200505, // 004B GETMET R8 R2 K5 - 0x5828000B, // 004C LDCONST R10 K11 - 0x7C200400, // 004D CALL R8 2 - 0x8C240106, // 004E GETMET R9 R0 K6 - 0x5C2C0E00, // 004F MOVE R11 R7 - 0x7C240400, // 0050 CALL R9 2 - 0x8C24010E, // 0051 GETMET R9 R0 K14 - 0x5C2C1000, // 0052 MOVE R11 R8 - 0x7C240400, // 0053 CALL R9 2 - 0x60240008, // 0054 GETGBL R9 G8 - 0x5C280E00, // 0055 MOVE R10 R7 - 0x7C240200, // 0056 CALL R9 1 - 0x00261009, // 0057 ADD R9 K8 R9 - 0x00241311, // 0058 ADD R9 R9 K17 - 0x60280008, // 0059 GETGBL R10 G8 - 0x5C2C1000, // 005A MOVE R11 R8 - 0x7C280200, // 005B CALL R10 1 - 0x0024120A, // 005C ADD R9 R9 R10 - 0x900E0E09, // 005D SETMBR R3 K7 R9 - 0x8C240109, // 005E GETMET R9 R0 K9 - 0x582C000A, // 005F LDCONST R11 K10 - 0x5C300E00, // 0060 MOVE R12 R7 - 0x58340010, // 0061 LDCONST R13 K16 - 0x5C381000, // 0062 MOVE R14 R8 - 0x7C240A00, // 0063 CALL R9 5 - 0x50240200, // 0064 LDBOOL R9 1 0 - 0x80041200, // 0065 RET 1 R9 - 0x70020004, // 0066 JMP #006C - 0x541E0046, // 0067 LDINT R7 71 - 0x1C1C0C07, // 0068 EQ R7 R6 R7 - 0x781E0001, // 0069 JMPF R7 #006C - 0x501C0200, // 006A LDBOOL R7 1 0 - 0x80040E00, // 006B RET 1 R7 - 0x70020008, // 006C JMP #0076 - 0x601C0003, // 006D GETGBL R7 G3 - 0x5C200000, // 006E MOVE R8 R0 - 0x7C1C0200, // 006F CALL R7 1 - 0x8C1C0F12, // 0070 GETMET R7 R7 K18 - 0x5C240200, // 0071 MOVE R9 R1 - 0x5C280400, // 0072 MOVE R10 R2 - 0x5C2C0600, // 0073 MOVE R11 R3 - 0x7C1C0800, // 0074 CALL R7 4 - 0x80040E00, // 0075 RET 1 R7 - 0x80000000, // 0076 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_hue -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_set_hue, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(scale_uint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(call_remote_sync), - /* K4 */ be_nested_str_weak(HSBColor1), - /* K5 */ be_nested_str_weak(parse_update), - }), - be_str_weak(set_hue), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x58140002, // 0003 LDCONST R5 K2 - 0x541A00FD, // 0004 LDINT R6 254 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x54220167, // 0006 LDINT R8 360 - 0x7C080C00, // 0007 CALL R2 6 - 0x8C0C0103, // 0008 GETMET R3 R0 K3 - 0x58140004, // 0009 LDCONST R5 K4 - 0x5C180400, // 000A MOVE R6 R2 - 0x7C0C0600, // 000B CALL R3 3 - 0x4C100000, // 000C LDNIL R4 - 0x20100604, // 000D NE R4 R3 R4 - 0x78120003, // 000E JMPF R4 #0013 - 0x8C100105, // 000F GETMET R4 R0 K5 - 0x5C180600, // 0010 MOVE R6 R3 - 0x541E000A, // 0011 LDINT R7 11 - 0x7C100600, // 0012 CALL R4 3 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light3; -be_local_closure(class_Matter_Plugin_Bridge_Light3_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Light3, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Bridge_Light3 -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Light1; -be_local_class(Matter_Plugin_Bridge_Light3, - 2, - &be_class_Matter_Plugin_Bridge_Light1, - be_nested_map(14, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(set_sat, 6), be_const_closure(class_Matter_Plugin_Bridge_Light3_set_sat_closure) }, - { be_const_key_weak(init, 8), be_const_closure(class_Matter_Plugin_Bridge_Light3_init_closure) }, - { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_parse_update_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light3) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_web_values_closure) }, - { be_const_key_weak(web_value_RGB, 1), be_const_closure(class_Matter_Plugin_Bridge_Light3_web_value_RGB_closure) }, - { be_const_key_weak(CLUSTERS, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(2), - be_const_int(3), - be_const_int(15), - be_const_int(17), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(13, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(7), - be_const_int(8), - be_const_int(15), - be_const_int(16385), - be_const_int(16394), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_invoke_request_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X203_X20RGB) }, - { be_const_key_weak(set_hue, 11), be_const_closure(class_Matter_Plugin_Bridge_Light3_set_hue_closure) }, - { be_const_key_weak(shadow_hue, 9), be_const_var(0) }, - { be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(269, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(shadow_sat, -1), be_const_var(1) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) }, - })), - be_str_weak(Matter_Plugin_Bridge_Light3) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light0.h new file mode 100644 index 000000000..de83054ba --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light0.h @@ -0,0 +1,25 @@ +/* Solidification of Matter_Plugin_8_Bridge_Light0.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Light0; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Light0 +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_class(Matter_Plugin_Bridge_Light0, + 0, + &be_class_Matter_Plugin_Light0, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light0) }, + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + })), + be_str_weak(Matter_Plugin_Bridge_Light0) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h new file mode 100644 index 000000000..cd50b370a --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h @@ -0,0 +1,54 @@ +/* Solidification of Matter_Plugin_8_Bridge_Light1.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Light1; + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Bridge_Light1__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Light1 +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_class(Matter_Plugin_Bridge_Light1, + 0, + &be_class_Matter_Plugin_Light1, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(TYPE, 3), be_nested_str_weak(http_light1) }, + { be_const_key_weak(UPDATE_TIME, 2), be_const_int(3000) }, + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, + { be_const_key_weak(ARG_TYPE, 0), be_const_static_closure(class_Matter_Plugin_Bridge_Light1__X3Clambda_X3E_closure) }, + })), + be_str_weak(Matter_Plugin_Bridge_Light1) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h new file mode 100644 index 000000000..e21b658e0 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h @@ -0,0 +1,54 @@ +/* Solidification of Matter_Plugin_8_Bridge_Light2.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Light2; + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Bridge_Light2__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Light2 +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_class(Matter_Plugin_Bridge_Light2, + 0, + &be_class_Matter_Plugin_Light2, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(TYPE, 3), be_nested_str_weak(http_light2) }, + { be_const_key_weak(UPDATE_TIME, 2), be_const_int(3000) }, + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, + { be_const_key_weak(ARG_TYPE, 0), be_const_static_closure(class_Matter_Plugin_Bridge_Light2__X3Clambda_X3E_closure) }, + })), + be_str_weak(Matter_Plugin_Bridge_Light2) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h new file mode 100644 index 000000000..ef62d3a68 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h @@ -0,0 +1,54 @@ +/* Solidification of Matter_Plugin_8_Bridge_Light3.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Light3; + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Bridge_Light3__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Light3 +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_class(Matter_Plugin_Bridge_Light3, + 0, + &be_class_Matter_Plugin_Light3, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(TYPE, 3), be_nested_str_weak(http_light3) }, + { be_const_key_weak(UPDATE_TIME, 2), be_const_int(3000) }, + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, + { be_const_key_weak(ARG_TYPE, 0), be_const_static_closure(class_Matter_Plugin_Bridge_Light3__X3Clambda_X3E_closure) }, + })), + be_str_weak(Matter_Plugin_Bridge_Light3) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h similarity index 98% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h index 7e53d6f4c..7ac5d5852 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Plugin_4_Bridge_OnOff.h */ +/* Solidification of Matter_Plugin_8_Bridge_OnOff.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h new file mode 100644 index 000000000..70f535d0f --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h @@ -0,0 +1,167 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Air_Quality.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_status, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(prefix), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x540E0009, // 0000 LDINT R3 10 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0002, // 0002 JMPF R3 #0006 + 0x8C0C0300, // 0003 GETMET R3 R1 K0 + 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x7C0C0400, // 0005 CALL R3 2 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(content_send), + /* K2 */ be_nested_str_weak(_X25s_X20_X25i_X20), + }), + be_str_weak(web_values_single), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0007, // 0002 JMPF R2 #000B + 0xA40A0000, // 0003 IMPORT R2 K0 + 0x8C0C0501, // 0004 GETMET R3 R2 K1 + 0x60140018, // 0005 GETGBL R5 G24 + 0x58180002, // 0006 LDCONST R6 K2 + 0x5C1C0000, // 0007 MOVE R7 R0 + 0x5C200200, // 0008 MOVE R8 R1 + 0x7C140600, // 0009 CALL R5 3 + 0x7C0C0400, // 000A CALL R3 2 + 0x80000000, // 000B RET 0 + }) + ), + &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, + }), + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(web_values_prefix), + /* K1 */ be_nested_str_weak(Air), + /* K2 */ be_nested_str_weak(shadow_air_quality), + /* K3 */ be_nested_str_weak(PM1), + /* K4 */ be_nested_str_weak(shadow_pm1), + /* K5 */ be_nested_str_weak(PM2_X2E5), + /* K6 */ be_nested_str_weak(shadow_pm2_5), + /* K7 */ be_nested_str_weak(PM10), + /* K8 */ be_nested_str_weak(shadow_pm10), + /* K9 */ be_nested_str_weak(CO2), + /* K10 */ be_nested_str_weak(shadow_co2), + /* K11 */ be_nested_str_weak(NO2), + /* K12 */ be_nested_str_weak(shadow_no2), + /* K13 */ be_nested_str_weak(TVOC), + /* K14 */ be_nested_str_weak(shadow_tvoc), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x84040000, // 0000 CLOSURE R1 P0 + 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x7C080200, // 0002 CALL R2 1 + 0x5C080200, // 0003 MOVE R2 R1 + 0x580C0001, // 0004 LDCONST R3 K1 + 0x88100102, // 0005 GETMBR R4 R0 K2 + 0x7C080400, // 0006 CALL R2 2 + 0x5C080200, // 0007 MOVE R2 R1 + 0x580C0003, // 0008 LDCONST R3 K3 + 0x88100104, // 0009 GETMBR R4 R0 K4 + 0x7C080400, // 000A CALL R2 2 + 0x5C080200, // 000B MOVE R2 R1 + 0x580C0005, // 000C LDCONST R3 K5 + 0x88100106, // 000D GETMBR R4 R0 K6 + 0x7C080400, // 000E CALL R2 2 + 0x5C080200, // 000F MOVE R2 R1 + 0x580C0007, // 0010 LDCONST R3 K7 + 0x88100108, // 0011 GETMBR R4 R0 K8 + 0x7C080400, // 0012 CALL R2 2 + 0x5C080200, // 0013 MOVE R2 R1 + 0x580C0009, // 0014 LDCONST R3 K9 + 0x8810010A, // 0015 GETMBR R4 R0 K10 + 0x7C080400, // 0016 CALL R2 2 + 0x5C080200, // 0017 MOVE R2 R1 + 0x580C000B, // 0018 LDCONST R3 K11 + 0x8810010C, // 0019 GETMBR R4 R0 K12 + 0x7C080400, // 001A CALL R2 2 + 0x5C080200, // 001B MOVE R2 R1 + 0x580C000D, // 001C LDCONST R3 K13 + 0x8810010E, // 001D GETMBR R4 R0 K14 + 0x7C080400, // 001E CALL R2 2 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Air_Quality +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_class(Matter_Plugin_Bridge_Sensor_Air_Quality, + 0, + &be_class_Matter_Plugin_Sensor_Air_Quality, + be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_airquality) }, + { be_const_key_weak(BRIDGE, 4), be_const_bool(1) }, + { be_const_key_weak(UPDATE_CMD, 5), be_nested_str_weak(Status_X2010) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values_closure) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_status_closure) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Air_Quality) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h new file mode 100644 index 000000000..170284b74 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h @@ -0,0 +1,26 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Contact.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Contact +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_class(Matter_Plugin_Bridge_Sensor_Contact, + 0, + &be_class_Matter_Plugin_Sensor_Contact, + be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, 2), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_contact) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Contact) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h new file mode 100644 index 000000000..08ef3a345 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h @@ -0,0 +1,24 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Flow.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Flow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Flow; +be_local_class(Matter_Plugin_Bridge_Sensor_Flow, + 0, + &be_class_Matter_Plugin_Sensor_Flow, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_flow) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Flow) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h new file mode 100644 index 000000000..878f9629c --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h @@ -0,0 +1,24 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Humidity.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Humidity +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Humidity; +be_local_class(Matter_Plugin_Bridge_Sensor_Humidity, + 0, + &be_class_Matter_Plugin_Sensor_Humidity, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_humidity) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Humidity) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h new file mode 100644 index 000000000..6ef7a803f --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h @@ -0,0 +1,24 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Illuminance.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Illuminance +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; +be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance, + 0, + &be_class_Matter_Plugin_Sensor_Illuminance, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_illuminance) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Illuminance) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h new file mode 100644 index 000000000..a72539571 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h @@ -0,0 +1,26 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Occupancy.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Occupancy +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy, + 0, + &be_class_Matter_Plugin_Sensor_Occupancy, + be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, 2), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_occupancy) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Occupancy) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h new file mode 100644 index 000000000..e6d246669 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h @@ -0,0 +1,24 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Pressure.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Pressure +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Pressure; +be_local_class(Matter_Plugin_Bridge_Sensor_Pressure, + 0, + &be_class_Matter_Plugin_Sensor_Pressure, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_pressure) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Pressure) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h new file mode 100644 index 000000000..04a2b8f81 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h @@ -0,0 +1,24 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Temp.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Temp +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Temp; +be_local_class(Matter_Plugin_Bridge_Sensor_Temp, + 0, + &be_class_Matter_Plugin_Sensor_Temp, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_temperature) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Temp) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h new file mode 100644 index 000000000..40ceb74e5 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h @@ -0,0 +1,26 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Waterleak.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Waterleak +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_class(Matter_Plugin_Bridge_Sensor_Waterleak, + 0, + &be_class_Matter_Plugin_Sensor_Waterleak, + be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, 2), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_waterleak) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Waterleak) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 4ed01b4c6..d53f5099f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -1148,11 +1148,11 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ /* K1 */ be_nested_str_weak(json), /* K2 */ be_nested_str_weak(), /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Plugin_Bridge_HTTP), + /* K4 */ be_nested_str_weak(Plugin_Device), /* K5 */ be_nested_str_weak(PROBE_TIMEOUT), /* K6 */ be_nested_str_weak(HTTP_remote), /* K7 */ be_nested_str_weak(call_sync), - /* K8 */ be_nested_str_weak(Status_X208), + /* K8 */ be_nested_str_weak(Status_X2010), /* K9 */ be_nested_str_weak(load), /* K10 */ be_nested_str_weak(find), /* K11 */ be_nested_str_weak(StatusSNS), @@ -1160,7 +1160,7 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ /* K13 */ be_nested_str_weak(StatusSTS), /* K14 */ be_nested_str_weak(tasmota), /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status8_X3D_X25s_X20satus11_X3D_X25s), + /* K16 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status10_X3D_X25s_X20satus11_X3D_X25s), /* K17 */ be_const_int(3), /* K18 */ be_nested_str_weak(generate_config_from_status), /* K19 */ be_nested_str_weak(show_plugins_hints_js), @@ -1827,16 +1827,16 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ /* K1 */ be_nested_str_weak(plugins), /* K2 */ be_nested_str_weak(webserver), /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(Plugin_Bridge_HTTP), - /* K6 */ be_nested_str_weak(http_remote), - /* K7 */ be_nested_str_weak(addr), - /* K8 */ be_nested_str_weak(contains), - /* K9 */ be_nested_str_weak(push), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(content_send), - /* K12 */ be_nested_str_weak(_X3Chr_X3E), - /* K13 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), + /* K4 */ be_nested_str_weak(BRIDGE), + /* K5 */ be_nested_str_weak(http_remote), + /* K6 */ be_nested_str_weak(addr), + /* K7 */ be_nested_str_weak(contains), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(content_send), + /* K11 */ be_nested_str_weak(_X3Chr_X3E), + /* K12 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), + /* K13 */ be_nested_str_weak(matter), /* K14 */ be_nested_str_weak(_STYLESHEET), /* K15 */ be_nested_str_weak(k2l), /* K16 */ be_nested_str_weak(html_escape), @@ -1853,7 +1853,7 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ }), be_str_weak(show_bridge_status), &be_const_str_solidified, - ( &(const binstruction[122]) { /* code */ + ( &(const binstruction[118]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x88040301, // 0001 GETMBR R1 R1 K1 0x4C080000, // 0002 LDNIL R2 @@ -1868,114 +1868,110 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ 0x88140B01, // 000B GETMBR R5 R5 K1 0x7C100200, // 000C CALL R4 1 0x14100604, // 000D LT R4 R3 R4 - 0x7812001D, // 000E JMPF R4 #002D + 0x78120019, // 000E JMPF R4 #0029 0x88100100, // 000F GETMBR R4 R0 K0 0x88100901, // 0010 GETMBR R4 R4 K1 0x94100803, // 0011 GETIDX R4 R4 R3 - 0x6014000F, // 0012 GETGBL R5 G15 - 0x5C180800, // 0013 MOVE R6 R4 - 0xB81E0800, // 0014 GETNGBL R7 K4 - 0x881C0F05, // 0015 GETMBR R7 R7 K5 - 0x7C140400, // 0016 CALL R5 2 - 0x78160012, // 0017 JMPF R5 #002B - 0x4C140000, // 0018 LDNIL R5 - 0x1C140405, // 0019 EQ R5 R2 R5 - 0x78160002, // 001A JMPF R5 #001E - 0x60140013, // 001B GETGBL R5 G19 - 0x7C140000, // 001C CALL R5 0 - 0x5C080A00, // 001D MOVE R2 R5 - 0x88140906, // 001E GETMBR R5 R4 K6 - 0x88140B07, // 001F GETMBR R5 R5 K7 - 0x8C180508, // 0020 GETMET R6 R2 K8 - 0x5C200A00, // 0021 MOVE R8 R5 - 0x7C180400, // 0022 CALL R6 2 - 0x741A0002, // 0023 JMPT R6 #0027 - 0x60180012, // 0024 GETGBL R6 G18 - 0x7C180000, // 0025 CALL R6 0 - 0x98080A06, // 0026 SETIDX R2 R5 R6 - 0x94180405, // 0027 GETIDX R6 R2 R5 - 0x8C180D09, // 0028 GETMET R6 R6 K9 - 0x5C200800, // 0029 MOVE R8 R4 - 0x7C180400, // 002A CALL R6 2 - 0x000C070A, // 002B ADD R3 R3 K10 - 0x7001FFDB, // 002C JMP #0009 - 0x4C100000, // 002D LDNIL R4 - 0x1C100404, // 002E EQ R4 R2 R4 - 0x78120000, // 002F JMPF R4 #0031 - 0x80000800, // 0030 RET 0 - 0x8C10030B, // 0031 GETMET R4 R1 K11 - 0x5818000C, // 0032 LDCONST R6 K12 - 0x7C100400, // 0033 CALL R4 2 - 0x8C10030B, // 0034 GETMET R4 R1 K11 - 0x5818000D, // 0035 LDCONST R6 K13 + 0x88140904, // 0012 GETMBR R5 R4 K4 + 0x78160012, // 0013 JMPF R5 #0027 + 0x4C140000, // 0014 LDNIL R5 + 0x1C140405, // 0015 EQ R5 R2 R5 + 0x78160002, // 0016 JMPF R5 #001A + 0x60140013, // 0017 GETGBL R5 G19 + 0x7C140000, // 0018 CALL R5 0 + 0x5C080A00, // 0019 MOVE R2 R5 + 0x88140905, // 001A GETMBR R5 R4 K5 + 0x88140B06, // 001B GETMBR R5 R5 K6 + 0x8C180507, // 001C GETMET R6 R2 K7 + 0x5C200A00, // 001D MOVE R8 R5 + 0x7C180400, // 001E CALL R6 2 + 0x741A0002, // 001F JMPT R6 #0023 + 0x60180012, // 0020 GETGBL R6 G18 + 0x7C180000, // 0021 CALL R6 0 + 0x98080A06, // 0022 SETIDX R2 R5 R6 + 0x94180405, // 0023 GETIDX R6 R2 R5 + 0x8C180D08, // 0024 GETMET R6 R6 K8 + 0x5C200800, // 0025 MOVE R8 R4 + 0x7C180400, // 0026 CALL R6 2 + 0x000C0709, // 0027 ADD R3 R3 K9 + 0x7001FFDF, // 0028 JMP #0009 + 0x4C100000, // 0029 LDNIL R4 + 0x1C100404, // 002A EQ R4 R2 R4 + 0x78120000, // 002B JMPF R4 #002D + 0x80000800, // 002C RET 0 + 0x8C10030A, // 002D GETMET R4 R1 K10 + 0x5818000B, // 002E LDCONST R6 K11 + 0x7C100400, // 002F CALL R4 2 + 0x8C10030A, // 0030 GETMET R4 R1 K10 + 0x5818000C, // 0031 LDCONST R6 K12 + 0x7C100400, // 0032 CALL R4 2 + 0x8C10030A, // 0033 GETMET R4 R1 K10 + 0xB81A1A00, // 0034 GETNGBL R6 K13 + 0x88180D0E, // 0035 GETMBR R6 R6 K14 0x7C100400, // 0036 CALL R4 2 - 0x8C10030B, // 0037 GETMET R4 R1 K11 - 0xB81A0800, // 0038 GETNGBL R6 K4 - 0x88180D0E, // 0039 GETMBR R6 R6 K14 - 0x7C100400, // 003A CALL R4 2 - 0x60100010, // 003B GETGBL R4 G16 - 0x88140100, // 003C GETMBR R5 R0 K0 - 0x8C140B0F, // 003D GETMET R5 R5 K15 - 0x5C1C0400, // 003E MOVE R7 R2 - 0x7C140400, // 003F CALL R5 2 - 0x7C100200, // 0040 CALL R4 1 - 0xA8020030, // 0041 EXBLK 0 #0073 - 0x5C140800, // 0042 MOVE R5 R4 - 0x7C140000, // 0043 CALL R5 0 - 0x8C180310, // 0044 GETMET R6 R1 K16 - 0x5C200A00, // 0045 MOVE R8 R5 - 0x7C180400, // 0046 CALL R6 2 - 0x8C1C0310, // 0047 GETMET R7 R1 K16 - 0x88240100, // 0048 GETMBR R9 R0 K0 - 0x8C241311, // 0049 GETMET R9 R9 K17 - 0x5C2C0A00, // 004A MOVE R11 R5 - 0x7C240400, // 004B CALL R9 2 - 0x8C241312, // 004C GETMET R9 R9 K18 - 0x582C0013, // 004D LDCONST R11 K19 - 0x5C300A00, // 004E MOVE R12 R5 - 0x7C240600, // 004F CALL R9 3 - 0x7C1C0400, // 0050 CALL R7 2 - 0x8C20030B, // 0051 GETMET R8 R1 K11 - 0x60280018, // 0052 GETGBL R10 G24 - 0x582C0014, // 0053 LDCONST R11 K20 - 0x5C300C00, // 0054 MOVE R12 R6 - 0x5C340C00, // 0055 MOVE R13 R6 - 0x5C380E00, // 0056 MOVE R14 R7 - 0x7C280800, // 0057 CALL R10 4 - 0x7C200400, // 0058 CALL R8 2 - 0x94200405, // 0059 GETIDX R8 R2 R5 - 0x94201103, // 005A GETIDX R8 R8 K3 - 0x88201106, // 005B GETMBR R8 R8 K6 - 0x8C24030B, // 005C GETMET R9 R1 K11 - 0x8C2C1115, // 005D GETMET R11 R8 K21 - 0x7C2C0200, // 005E CALL R11 1 - 0x7C240400, // 005F CALL R9 2 - 0x60240010, // 0060 GETGBL R9 G16 - 0x94280405, // 0061 GETIDX R10 R2 R5 - 0x7C240200, // 0062 CALL R9 1 - 0xA802000A, // 0063 EXBLK 0 #006F - 0x5C281200, // 0064 MOVE R10 R9 - 0x7C280000, // 0065 CALL R10 0 - 0x8C2C030B, // 0066 GETMET R11 R1 K11 - 0x58340016, // 0067 LDCONST R13 K22 - 0x7C2C0400, // 0068 CALL R11 2 - 0x8C2C1517, // 0069 GETMET R11 R10 K23 - 0x7C2C0200, // 006A CALL R11 1 - 0x8C2C030B, // 006B GETMET R11 R1 K11 - 0x58340018, // 006C LDCONST R13 K24 - 0x7C2C0400, // 006D CALL R11 2 - 0x7001FFF4, // 006E JMP #0064 - 0x58240019, // 006F LDCONST R9 K25 - 0xAC240200, // 0070 CATCH R9 1 0 + 0x60100010, // 0037 GETGBL R4 G16 + 0x88140100, // 0038 GETMBR R5 R0 K0 + 0x8C140B0F, // 0039 GETMET R5 R5 K15 + 0x5C1C0400, // 003A MOVE R7 R2 + 0x7C140400, // 003B CALL R5 2 + 0x7C100200, // 003C CALL R4 1 + 0xA8020030, // 003D EXBLK 0 #006F + 0x5C140800, // 003E MOVE R5 R4 + 0x7C140000, // 003F CALL R5 0 + 0x8C180310, // 0040 GETMET R6 R1 K16 + 0x5C200A00, // 0041 MOVE R8 R5 + 0x7C180400, // 0042 CALL R6 2 + 0x8C1C0310, // 0043 GETMET R7 R1 K16 + 0x88240100, // 0044 GETMBR R9 R0 K0 + 0x8C241311, // 0045 GETMET R9 R9 K17 + 0x5C2C0A00, // 0046 MOVE R11 R5 + 0x7C240400, // 0047 CALL R9 2 + 0x8C241312, // 0048 GETMET R9 R9 K18 + 0x582C0013, // 0049 LDCONST R11 K19 + 0x5C300A00, // 004A MOVE R12 R5 + 0x7C240600, // 004B CALL R9 3 + 0x7C1C0400, // 004C CALL R7 2 + 0x8C20030A, // 004D GETMET R8 R1 K10 + 0x60280018, // 004E GETGBL R10 G24 + 0x582C0014, // 004F LDCONST R11 K20 + 0x5C300C00, // 0050 MOVE R12 R6 + 0x5C340C00, // 0051 MOVE R13 R6 + 0x5C380E00, // 0052 MOVE R14 R7 + 0x7C280800, // 0053 CALL R10 4 + 0x7C200400, // 0054 CALL R8 2 + 0x94200405, // 0055 GETIDX R8 R2 R5 + 0x94201103, // 0056 GETIDX R8 R8 K3 + 0x88201105, // 0057 GETMBR R8 R8 K5 + 0x8C24030A, // 0058 GETMET R9 R1 K10 + 0x8C2C1115, // 0059 GETMET R11 R8 K21 + 0x7C2C0200, // 005A CALL R11 1 + 0x7C240400, // 005B CALL R9 2 + 0x60240010, // 005C GETGBL R9 G16 + 0x94280405, // 005D GETIDX R10 R2 R5 + 0x7C240200, // 005E CALL R9 1 + 0xA802000A, // 005F EXBLK 0 #006B + 0x5C281200, // 0060 MOVE R10 R9 + 0x7C280000, // 0061 CALL R10 0 + 0x8C2C030A, // 0062 GETMET R11 R1 K10 + 0x58340016, // 0063 LDCONST R13 K22 + 0x7C2C0400, // 0064 CALL R11 2 + 0x8C2C1517, // 0065 GETMET R11 R10 K23 + 0x7C2C0200, // 0066 CALL R11 1 + 0x8C2C030A, // 0067 GETMET R11 R1 K10 + 0x58340018, // 0068 LDCONST R13 K24 + 0x7C2C0400, // 0069 CALL R11 2 + 0x7001FFF4, // 006A JMP #0060 + 0x58240019, // 006B LDCONST R9 K25 + 0xAC240200, // 006C CATCH R9 1 0 + 0xB0080000, // 006D RAISE 2 R0 R0 + 0x7001FFCE, // 006E JMP #003E + 0x58100019, // 006F LDCONST R4 K25 + 0xAC100200, // 0070 CATCH R4 1 0 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x7001FFCE, // 0072 JMP #0042 - 0x58100019, // 0073 LDCONST R4 K25 - 0xAC100200, // 0074 CATCH R4 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x8C10030B, // 0076 GETMET R4 R1 K11 - 0x5818001A, // 0077 LDCONST R6 K26 - 0x7C100400, // 0078 CALL R4 2 - 0x80000000, // 0079 RET 0 + 0x8C10030A, // 0072 GETMET R4 R1 K10 + 0x5818001A, // 0073 LDCONST R6 K26 + 0x7C100400, // 0074 CALL R4 2 + 0x80000000, // 0075 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index b1ad4546f..28b846893 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -6286,7 +6286,7 @@ be_local_class(Matter_Device, { be_const_key_weak(plugins_classes, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(47, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(v_waterleak, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, + { be_const_key_weak(v_waterleak, 26), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, @@ -6300,36 +6300,36 @@ be_local_class(Matter_Device, { be_const_key_weak(v_illuminance, 24), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(http_light1, 26), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, + { be_const_key_weak(http_light1, 39), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, { be_const_key_weak(http_light0, 6), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, - { be_const_key_weak(contact, 10), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, + { be_const_key_weak(light1, 10), be_const_class(be_class_Matter_Plugin_Light1) }, { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, - { be_const_key_weak(http_illuminance, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) }, { be_const_key_weak(v_contact, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, - { be_const_key_weak(flow, 34), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, + { be_const_key_weak(illuminance, 34), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, { be_const_key_weak(shutter, 5), be_const_class(be_class_Matter_Plugin_Shutter) }, { be_const_key_weak(v_pressure, 2), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(v_light2, 39), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, + { be_const_key_weak(v_light2, 40), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, - { be_const_key_weak(v_airquality, 42), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(v_airquality, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, { be_const_key_weak(light2, 3), be_const_class(be_class_Matter_Plugin_Light2) }, { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, - { be_const_key_weak(illuminance, 40), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, + { be_const_key_weak(http_illuminance, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, + { be_const_key_weak(relay, 42), be_const_class(be_class_Matter_Plugin_OnOff) }, { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, - { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, + { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, { be_const_key_weak(http_waterleak, 14), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, { be_const_key_weak(http_occupancy, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, { be_const_key_weak(root, 29), be_const_class(be_class_Matter_Plugin_Root) }, From f68e2285e8aca8f4820962c619120a2c0b7cc4f0 Mon Sep 17 00:00:00 2001 From: Marius Bezuidenhout Date: Thu, 6 Jun 2024 09:39:23 +0200 Subject: [PATCH 013/252] Fixed incorrect output size clamping (#21568) --- tasmota/tasmota_support/support.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index 0552a30d1..57f207c67 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -646,7 +646,7 @@ int32_t HexToBytes(const char* hex, uint8_t* out, size_t out_len) { } size_t bytes_out = len / 2; - if (bytes_out < out_len) { + if (bytes_out > out_len) { bytes_out = out_len; } From c7083629e15a6e5ac46a2cb248c642441dd4a74b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:29:20 +0200 Subject: [PATCH 014/252] update changelogs --- CHANGELOG.md | 5 +++-- RELEASENOTES.md | 9 ++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1561c8fc..88bbfbb1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,10 +11,11 @@ All notable changes to this project will be documented in this file. ### Breaking Changed ### Changed -- Matter refactoring of bridged devices +- Matter refactoring of bridged devices (#21575) +- ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 (#21569) ### Fixed -- Berry `input()` returns empty string and does not crash +- Berry `input()` returns empty string and does not crash (#21565) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 0a917c20e..5e2f81d1e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -36,9 +36,9 @@ While fallback or downgrading is common practice it was never supported due to S This release will be supported from ESP8266/Arduino library Core version **2.7.6** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. -This release will be supported from ESP32/Arduino library Core version **3.0.0**. +This release will be supported from ESP32/Arduino library Core version **3.0.1**. -Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 3.0.0 have been removed. +Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 3.0.1 have been removed. ### Known issues with v14.1.0 @@ -85,7 +85,7 @@ Historical binaries can be downloaded from The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` ### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based -The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.0**. +The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.1**. - **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY** - **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash. @@ -125,7 +125,10 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) ### Changed +- ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) +- Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) ### Fixed +- Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) ### Removed From a99c6d67bb2d89a3f571f1d63c1ae8c962e8ad93 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 6 Jun 2024 18:14:30 +0200 Subject: [PATCH 015/252] Add XIAO ESP32S3 Sense camera pins --- lib/default/headers/camera_pins.h | 41 ++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/default/headers/camera_pins.h b/lib/default/headers/camera_pins.h index 6640b0905..d274e664c 100644 --- a/lib/default/headers/camera_pins.h +++ b/lib/default/headers/camera_pins.h @@ -1,4 +1,3 @@ - #if defined(CAMERA_MODEL_WROVER_KIT) #define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM -1 @@ -14,6 +13,7 @@ #define Y4_GPIO_NUM 18 #define Y3_GPIO_NUM 5 #define Y2_GPIO_NUM 4 + #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 23 #define PCLK_GPIO_NUM 22 @@ -33,12 +33,12 @@ #define Y4_GPIO_NUM 14 #define Y3_GPIO_NUM 13 #define Y2_GPIO_NUM 34 + #define VSYNC_GPIO_NUM 5 #define HREF_GPIO_NUM 27 #define PCLK_GPIO_NUM 25 #elif defined(CAMERA_MODEL_ESP32S3_EYE) - #define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM -1 #define XCLK_GPIO_NUM 15 @@ -73,6 +73,7 @@ #define Y4_GPIO_NUM 34 #define Y3_GPIO_NUM 35 #define Y2_GPIO_NUM 32 + #define VSYNC_GPIO_NUM 22 #define HREF_GPIO_NUM 26 #define PCLK_GPIO_NUM 21 @@ -92,6 +93,7 @@ #define Y4_GPIO_NUM 34 #define Y3_GPIO_NUM 35 #define Y2_GPIO_NUM 32 + #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 26 #define PCLK_GPIO_NUM 21 @@ -111,6 +113,7 @@ #define Y4_GPIO_NUM 34 #define Y3_GPIO_NUM 35 #define Y2_GPIO_NUM 32 + #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 26 #define PCLK_GPIO_NUM 21 @@ -130,6 +133,7 @@ #define Y4_GPIO_NUM 34 #define Y3_GPIO_NUM 35 #define Y2_GPIO_NUM 17 + #define VSYNC_GPIO_NUM 22 #define HREF_GPIO_NUM 26 #define PCLK_GPIO_NUM 21 @@ -149,6 +153,7 @@ #define Y4_GPIO_NUM 34 #define Y3_GPIO_NUM 35 #define Y2_GPIO_NUM 32 + #define VSYNC_GPIO_NUM 22 #define HREF_GPIO_NUM 26 #define PCLK_GPIO_NUM 21 @@ -168,6 +173,7 @@ #define Y4_GPIO_NUM 19 #define Y3_GPIO_NUM 18 #define Y2_GPIO_NUM 5 + #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 23 #define PCLK_GPIO_NUM 22 @@ -187,6 +193,7 @@ #define Y4_GPIO_NUM 4 #define Y3_GPIO_NUM 14 #define Y2_GPIO_NUM 5 + #define VSYNC_GPIO_NUM 27 #define HREF_GPIO_NUM 25 #define PCLK_GPIO_NUM 19 @@ -206,6 +213,7 @@ #define Y4_GPIO_NUM 14 #define Y3_GPIO_NUM 13 #define Y2_GPIO_NUM 34 + #define VSYNC_GPIO_NUM 5 #define HREF_GPIO_NUM 27 #define PCLK_GPIO_NUM 25 @@ -225,6 +233,7 @@ #define Y4_GPIO_NUM 14 #define Y3_GPIO_NUM 13 #define Y2_GPIO_NUM 34 + #define VSYNC_GPIO_NUM 5 #define HREF_GPIO_NUM 27 #define PCLK_GPIO_NUM 25 @@ -244,6 +253,7 @@ #define Y4_GPIO_NUM 4 #define Y3_GPIO_NUM 14 #define Y2_GPIO_NUM 5 + #define VSYNC_GPIO_NUM 27 #define HREF_GPIO_NUM 25 #define PCLK_GPIO_NUM 19 @@ -263,6 +273,7 @@ #define Y4_GPIO_NUM 4 #define Y3_GPIO_NUM 14 #define Y2_GPIO_NUM 5 + #define VSYNC_GPIO_NUM 27 #define HREF_GPIO_NUM 25 #define PCLK_GPIO_NUM 19 @@ -282,6 +293,7 @@ #define Y4_GPIO_NUM 26 #define Y3_GPIO_NUM 13 #define Y2_GPIO_NUM 34 + #define VSYNC_GPIO_NUM 5 #define HREF_GPIO_NUM 27 #define PCLK_GPIO_NUM 25 @@ -302,12 +314,12 @@ #define Y4_GPIO_NUM 8 #define Y3_GPIO_NUM 9 #define Y2_GPIO_NUM 11 + #define VSYNC_GPIO_NUM 6 #define HREF_GPIO_NUM 7 #define PCLK_GPIO_NUM 13 #elif defined(CAMERA_MODEL_TTGO_T_CAM_SIM) - #define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM 18 #define XCLK_GPIO_NUM 14 @@ -322,6 +334,7 @@ #define Y4_GPIO_NUM 8 #define Y3_GPIO_NUM 9 #define Y2_GPIO_NUM 11 + #define VSYNC_GPIO_NUM 6 #define HREF_GPIO_NUM 7 #define PCLK_GPIO_NUM 13 @@ -332,6 +345,27 @@ #define PCIE_TX_PIN 45 #define PCIE_RX_PIN 46 #define PCIE_LED_PIN 21 + +#elif defined(CAMERA_MODEL_XIAO_ESP32S3_SENSE) +#define PWDN_GPIO_NUM -1 +#define RESET_GPIO_NUM -1 +#define XCLK_GPIO_NUM 10 +#define SIOD_GPIO_NUM 40 +#define SIOC_GPIO_NUM 39 + +#define Y9_GPIO_NUM 48 +#define Y8_GPIO_NUM 11 +#define Y7_GPIO_NUM 12 +#define Y6_GPIO_NUM 14 +#define Y5_GPIO_NUM 16 +#define Y4_GPIO_NUM 18 +#define Y3_GPIO_NUM 17 +#define Y2_GPIO_NUM 15 + +#define VSYNC_GPIO_NUM 38 +#define HREF_GPIO_NUM 47 +#define PCLK_GPIO_NUM 13 + #else #define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM -1 @@ -347,6 +381,7 @@ #define Y4_GPIO_NUM -1 #define Y3_GPIO_NUM -1 #define Y2_GPIO_NUM -1 + #define VSYNC_GPIO_NUM -1 #define HREF_GPIO_NUM -1 #define PCLK_GPIO_NUM -1 From d16a502f36b1840cbc5c5a48f098c366009a2098 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 6 Jun 2024 22:11:52 +0200 Subject: [PATCH 016/252] Berry fix potential crash when solidifying loaded bytecode (#21583) --- lib/libesp32/berry/src/be_bytecode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libesp32/berry/src/be_bytecode.c b/lib/libesp32/berry/src/be_bytecode.c index a636567fa..8db2f90da 100644 --- a/lib/libesp32/berry/src/be_bytecode.c +++ b/lib/libesp32/berry/src/be_bytecode.c @@ -524,8 +524,8 @@ static void load_proto_table(bvm *vm, void *fp, bproto *proto, int info, int ver { int size = (int)load_long(fp); /* proto count */ if (size) { - bproto **p = be_malloc(vm, sizeof(bproto *) * size); - memset(p, 0, sizeof(bproto *) * size); + bproto **p = be_malloc(vm, sizeof(bproto *) * (size + 1)); + memset(p, 0, sizeof(bproto *) * (size + 1)); proto->ptab = p; proto->nproto = size; while (size--) { From 9350f68ac509f022ad3877c27e79485ee4038214 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 7 Jun 2024 11:48:52 +0200 Subject: [PATCH 017/252] Replace optional MQTT_TELE_RETAIN to Energy Margins message by ``SensorRetain`` --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino | 12 +++++++++--- tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino | 6 +----- tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino | 6 +----- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88bbfbb1b..5825555a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. ### Changed - Matter refactoring of bridged devices (#21575) - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 (#21569) +- Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` ### Fixed - Berry `input()` returns empty string and does not crash (#21565) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 5e2f81d1e..33fce959a 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -125,6 +125,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) ### Changed +- Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino index 9a793f8d1..6cde49eb3 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino @@ -861,13 +861,19 @@ void MqttPublishPrefixTopicRulesProcess_P(uint32_t prefix, const char* subtopic) MqttPublishPrefixTopicRulesProcess_P(prefix, subtopic, false); } -void MqttPublishTeleSensor(void) { - // Publish tele//SENSOR default ResponseData string with optional retained +void MqttPublishTele(const char* subtopic) { + // Publish tele// default ResponseData string with optional retained // then process rules #ifdef USE_INFLUXDB InfluxDbProcess(1); // Use a copy of ResponseData #endif - MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_SENSOR), Settings->flag.mqtt_sensor_retain); // CMND_SENSORRETAIN + MqttPublishPrefixTopicRulesProcess_P(TELE, subtopic, Settings->flag.mqtt_sensor_retain); // CMND_SENSORRETAIN +} + +void MqttPublishTeleSensor(void) { + // Publish tele//SENSOR default ResponseData string with optional retained + // then process rules + MqttPublishTele(PSTR(D_RSLT_SENSOR)); } void MqttPublishPowerState(uint32_t device) { diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino index 0d15ffd4f..7f1498278 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino @@ -29,10 +29,6 @@ //#define USE_ENERGY_MARGIN_DETECTION // #define USE_ENERGY_POWER_LIMIT -#ifndef MQTT_TELE_RETAIN -#define MQTT_TELE_RETAIN 0 -#endif - #define ENERGY_NONE 0 #define ENERGY_WATCHDOG 4 // Allow up to 4 seconds before deciding no valid data present @@ -564,7 +560,7 @@ void EnergyMarginCheck(void) { } if (jsonflg) { ResponseJsonEndEnd(); - MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_MARGINS), MQTT_TELE_RETAIN); + MqttPublishTele(PSTR(D_RSLT_MARGINS)); EnergyMqttShow(); Energy->margin_stable = 3; // Allow 2 seconds to stabilize before reporting } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 64f4f271a..790fc79a6 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -26,10 +26,6 @@ #define XDRV_03 3 #define XSNS_03 3 -#ifndef MQTT_TELE_RETAIN -#define MQTT_TELE_RETAIN 0 -#endif - #define ENERGY_NONE 0 #define ENERGY_WATCHDOG 4 // Allow up to 4 seconds before deciding no valid data present @@ -787,7 +783,7 @@ void EnergyMarginCheck(void) { } if (jsonflg) { ResponseJsonEndEnd(); - MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_MARGINS), MQTT_TELE_RETAIN); + MqttPublishTele(PSTR(D_RSLT_MARGINS)); EnergyMqttShow(); Energy->margin_stable = 3; // Allow 2 seconds to stabilize before reporting } From 8479da0afb7f514ef86ac5c7baaa602fcc6ecd25 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 7 Jun 2024 13:04:44 +0200 Subject: [PATCH 018/252] Remove obsolete comment in my_user_config.h --- tasmota/my_user_config.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 3692c6715..3b5e334a8 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -446,8 +446,7 @@ // #define USE_MQTT_TLS_CA_CERT // [DEPRECATED] Now TLS supports dual mode using SetOption132 - this flag is now ignored // #define USE_MQTT_AWS_IOT_LIGHT // Enable MQTT for AWS IoT in light mode, with user/password instead of private certificate // #define USE_MQTT_AWS_IOT // [Deprecated] Enable MQTT for AWS IoT - requires a private key (+11.9k code, +0.4k mem) - // Note: you need to generate a private key + certificate per device and update 'tasmota/tasmota_aws_iot.cpp' - // Full documentation here: https://github.com/arendst/Tasmota/wiki/AWS-IoT + // Full documentation here: https://github.com/arendst/Tasmota/wiki/AWS-IoT // for USE_4K_RSA (support for 4096 bits certificates, instead of 2048), you need to uncommend `-DUSE_4K_RSA` in `build_flags` from `platform.ini` or `platform_override.ini` // -- MQTT - TLS - Azure IoT & IoT Central --------- From 5a1ae70549dd8935426b17586f06e98687e89017 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 7 Jun 2024 19:48:03 +0200 Subject: [PATCH 019/252] Matter filter suffix automatically added for sensors (#21589) --- CHANGELOG.md | 1 + .../src/embedded/Matter_Plugin_2_Sensor.be | 14 ++-- .../solidified_Matter_Plugin_2_Sensor.h | 67 +++++++++++-------- 3 files changed, 49 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5825555a2..f6caafd66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. - Matter refactoring of bridged devices (#21575) - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 (#21569) - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` +- Matter filter suffix automatically added for sensors ### Fixed - Berry `input()` returns empty string and does not crash (#21565) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be index 2e3f7c18a..7ea57693e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be @@ -72,12 +72,14 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device # it to json. def parse_sensors(payload) if !self.VIRTUAL && self.tasmota_sensor_matcher - var val = self.pre_value(real(self.tasmota_sensor_matcher.match(payload))) - if val != nil - if val != self.shadow_value - self.value_changed() - self.shadow_value = val - end + var val = self.tasmota_sensor_matcher.match(payload) + if isinstance(val, map) # if the filter returns a map, we use the default JSON_NAME like "Temperature" + val = val.find(self.JSON_NAME) + end + val = self.pre_value(real(val)) + if (val != nil) && (val != self.shadow_value) + self.value_changed() + self.shadow_value = val end end end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h index efe206a1c..19c189e9e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h @@ -160,7 +160,7 @@ be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */ extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ be_nested_proto( - 8, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -168,39 +168,52 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(VIRTUAL), /* K1 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K2 */ be_nested_str_weak(pre_value), - /* K3 */ be_nested_str_weak(match), - /* K4 */ be_nested_str_weak(shadow_value), - /* K5 */ be_nested_str_weak(value_changed), + /* K2 */ be_nested_str_weak(match), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(JSON_NAME), + /* K5 */ be_nested_str_weak(pre_value), + /* K6 */ be_nested_str_weak(shadow_value), + /* K7 */ be_nested_str_weak(value_changed), }), be_str_weak(parse_sensors), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[33]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0012, // 0001 JMPT R2 #0015 + 0x740A001D, // 0001 JMPT R2 #0020 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A0010, // 0003 JMPF R2 #0015 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x6010000A, // 0005 GETGBL R4 G10 - 0x88140101, // 0006 GETMBR R5 R0 K1 - 0x8C140B03, // 0007 GETMET R5 R5 K3 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x7C140400, // 0009 CALL R5 2 - 0x7C100200, // 000A CALL R4 1 - 0x7C080400, // 000B CALL R2 2 - 0x4C0C0000, // 000C LDNIL R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0005, // 000E JMPF R3 #0015 - 0x880C0104, // 000F GETMBR R3 R0 K4 - 0x200C0403, // 0010 NE R3 R2 R3 - 0x780E0002, // 0011 JMPF R3 #0015 - 0x8C0C0105, // 0012 GETMET R3 R0 K5 - 0x7C0C0200, // 0013 CALL R3 1 - 0x90020802, // 0014 SETMBR R0 K4 R2 - 0x80000000, // 0015 RET 0 + 0x780A001B, // 0003 JMPF R2 #0020 + 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x600C000F, // 0008 GETGBL R3 G15 + 0x5C100400, // 0009 MOVE R4 R2 + 0x60140013, // 000A GETGBL R5 G19 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E0003, // 000C JMPF R3 #0011 + 0x8C0C0503, // 000D GETMET R3 R2 K3 + 0x88140104, // 000E GETMBR R5 R0 K4 + 0x7C0C0400, // 000F CALL R3 2 + 0x5C080600, // 0010 MOVE R2 R3 + 0x8C0C0105, // 0011 GETMET R3 R0 K5 + 0x6014000A, // 0012 GETGBL R5 G10 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C140200, // 0014 CALL R5 1 + 0x7C0C0400, // 0015 CALL R3 2 + 0x5C080600, // 0016 MOVE R2 R3 + 0x4C0C0000, // 0017 LDNIL R3 + 0x200C0403, // 0018 NE R3 R2 R3 + 0x780E0005, // 0019 JMPF R3 #0020 + 0x880C0106, // 001A GETMBR R3 R0 K6 + 0x200C0403, // 001B NE R3 R2 R3 + 0x780E0002, // 001C JMPF R3 #0020 + 0x8C0C0107, // 001D GETMET R3 R0 K7 + 0x7C0C0200, // 001E CALL R3 1 + 0x90020C02, // 001F SETMBR R0 K6 R2 + 0x80000000, // 0020 RET 0 }) ) ); From 02cd72403dd9e50cf0e027c29aebd93745757b93 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 7 Jun 2024 20:44:17 +0200 Subject: [PATCH 020/252] Matter size optimization (#21590) --- lib/libesp32/berry_matter/solidify_all.be | 2 +- .../src/embedded/Matter_Commissioning.be | 304 +- .../src/embedded/Matter_Commissioning_Data.be | 63 +- .../src/embedded/Matter_Control_Message.be | 8 +- .../src/embedded/Matter_Fabric.be | 8 +- .../src/embedded/Matter_HTTP_remote.be | 22 +- .../berry_matter/src/embedded/Matter_IM.be | 126 +- .../src/embedded/Matter_IM_Message.be | 54 +- .../src/embedded/Matter_IM_Subscription.be | 6 +- .../src/embedded/Matter_Message.be | 22 +- .../src/embedded/Matter_MessageHandler.be | 42 +- .../src/embedded/Matter_Plugin_1_Device.be | 14 +- .../src/embedded/Matter_Plugin_1_Root.be | 84 +- .../Matter_Plugin_2_Sensor_Air_Quality.be | 12 +- .../Matter_Plugin_2_Sensor_Contact.be | 6 +- .../Matter_Plugin_2_Sensor_Occupancy.be | 6 +- .../src/embedded/Matter_Plugin_2_Shutter.be | 8 +- .../embedded/Matter_Plugin_3_Sensor_Flow.be | 6 +- .../Matter_Plugin_3_Sensor_Humidity.be | 6 +- .../Matter_Plugin_3_Sensor_Illuminance.be | 6 +- .../Matter_Plugin_3_Sensor_Pressure.be | 6 +- .../embedded/Matter_Plugin_3_Sensor_Temp.be | 6 +- .../src/embedded/Matter_Profiler.be | 6 +- .../src/embedded/Matter_Session.be | 4 +- .../src/embedded/Matter_Session_Store.be | 14 +- .../src/embedded/Matter_TCP_async.be | 2 +- .../berry_matter/src/embedded/Matter_TLV.be | 4 +- .../src/embedded/Matter_UDPServer.be | 16 +- .../berry_matter/src/embedded/Matter_UI.be | 40 +- .../src/embedded/Matter_zz_Device.be | 148 +- .../solidified_Matter_Commissioning.h | 2876 ++++++++-------- .../solidified_Matter_Commissioning_Data.h | 464 ++- .../solidified_Matter_Control_Message.h | 193 +- .../src/solidify/solidified_Matter_Fabric.h | 250 +- .../solidify/solidified_Matter_HTTP_remote.h | 581 ++-- .../src/solidify/solidified_Matter_IM.h | 2225 ++++++------- .../solidify/solidified_Matter_IM_Message.h | 161 +- .../solidified_Matter_IM_Subscription.h | 65 +- .../src/solidify/solidified_Matter_Message.h | 297 +- .../solidified_Matter_MessageHandler.h | 697 ++-- .../solidified_Matter_Plugin_1_Device.h | 373 +-- .../solidified_Matter_Plugin_1_Root.h | 1727 +++++----- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 252 +- ...olidified_Matter_Plugin_2_Sensor_Contact.h | 55 +- ...idified_Matter_Plugin_2_Sensor_Occupancy.h | 86 +- .../solidified_Matter_Plugin_2_Shutter.h | 121 +- .../solidified_Matter_Plugin_3_Sensor_Flow.h | 90 +- ...lidified_Matter_Plugin_3_Sensor_Humidity.h | 90 +- ...ified_Matter_Plugin_3_Sensor_Illuminance.h | 90 +- ...lidified_Matter_Plugin_3_Sensor_Pressure.h | 90 +- .../solidified_Matter_Plugin_3_Sensor_Temp.h | 86 +- .../src/solidify/solidified_Matter_Profiler.h | 89 +- .../src/solidify/solidified_Matter_Session.h | 30 +- .../solidified_Matter_Session_Store.h | 238 +- .../solidify/solidified_Matter_TCP_async.h | 45 +- .../src/solidify/solidified_Matter_TLV.h | 55 +- .../solidify/solidified_Matter_UDPServer.h | 262 +- .../src/solidify/solidified_Matter_UI.h | 1748 +++++----- .../solidify/solidified_Matter_zz_Device.h | 2941 ++++++++--------- 59 files changed, 8439 insertions(+), 8889 deletions(-) diff --git a/lib/libesp32/berry_matter/solidify_all.be b/lib/libesp32/berry_matter/solidify_all.be index 026d07cfc..d5b357707 100755 --- a/lib/libesp32/berry_matter/solidify_all.be +++ b/lib/libesp32/berry_matter/solidify_all.be @@ -12,7 +12,7 @@ import sys sys.path().push('src/embedded') # allow to import from src/embedded # globals that need to exist to make compilation succeed -var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,tcpclientasync," +var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,tcpclientasync,log," "lv_clock,lv_clock_icon,lv_signal_arcs,lv_signal_bars,lv_wifi_arcs_icon,lv_wifi_arcs," "lv_wifi_bars_icon,lv_wifi_bars," "_lvgl," diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be index d2427a2ce..024b1bb53 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be @@ -45,7 +45,7 @@ class Matter_Commisioning_Context ############################################################# def add_session(local_session_id, initiator_session_id, i2r, r2i, ac) # create session object - tasmota.log(format("MTR: add_session local_session_id=%i initiator_session_id=%i", local_session_id, initiator_session_id), 4) + log(format("MTR: add_session local_session_id=%i initiator_session_id=%i", local_session_id, initiator_session_id), 4) var session = self.device.sessions.create_session(local_session_id, initiator_session_id) session.set_keys(i2r, r2i, ac) @@ -54,11 +54,11 @@ class Matter_Commisioning_Context def process_incoming(msg) # if !self.device.is_commissioning_open() && msg.opcode >= 0x20 && msg.opcode <= 0x24 - tasmota.log("MTR: commissioning not open", 2) + log("MTR: commissioning not open", 2) return false end - # tasmota.log("MTR: received message " + matter.inspect(msg), 4) + # log("MTR: received message " + matter.inspect(msg), 4) if msg.opcode == 0x10 # don't need to do anything, the message is acked already before this call elif msg.opcode == 0x20 @@ -74,7 +74,7 @@ class Matter_Commisioning_Context elif msg.opcode == 0x40 return self.parse_StatusReport(msg) else - tasmota.log(format("MTR: >????????? Unknown OpCode (secure channel) %02X", msg.opcode), 2) + log(format("MTR: >????????? Unknown OpCode (secure channel) %02X", msg.opcode), 2) return false end @@ -109,8 +109,8 @@ class Matter_Commisioning_Context var session = msg.session # sanity checks if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0 - tasmota.log("MTR: invalid PBKDFParamRequest message", 2) - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + log("MTR: invalid PBKDFParamRequest message", 2) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end @@ -121,8 +121,8 @@ class Matter_Commisioning_Context # sanity check for PBKDFParamRequest if pbkdfparamreq.passcodeId != 0 - tasmota.log("MTR: non-zero passcode id", 2) - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + log("MTR: non-zero passcode id", 2) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end @@ -130,7 +130,7 @@ class Matter_Commisioning_Context # record the initiator_session_id session.__future_initiator_session_id = pbkdfparamreq.initiator_session_id session.__future_local_session_id = self.device.sessions.gen_local_session_id() - tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3) + log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3) # prepare response var pbkdfparamresp = matter.PBKDFParamResponse() @@ -141,9 +141,9 @@ class Matter_Commisioning_Context pbkdfparamresp.responderSessionId = session.__future_local_session_id pbkdfparamresp.pbkdf_parameters_salt = self.device.commissioning_salt pbkdfparamresp.pbkdf_parameters_iterations = self.device.commissioning_iterations - # tasmota.log("MTR: pbkdfparamresp: " + str(matter.inspect(pbkdfparamresp)), 4) + # log("MTR: pbkdfparamresp: " + str(matter.inspect(pbkdfparamresp)), 4) var pbkdfparamresp_raw = pbkdfparamresp.tlv2raw() - # tasmota.log("MTR: pbkdfparamresp_raw: " + pbkdfparamresp_raw.tohex(), 4) + # log("MTR: pbkdfparamresp_raw: " + pbkdfparamresp_raw.tohex(), 4) session.__Msg2 = pbkdfparamresp_raw @@ -160,15 +160,15 @@ class Matter_Commisioning_Context var session = msg.session # sanity checks if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0 - tasmota.log("MTR: invalid Pake1 message", 3) - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + log("MTR: invalid Pake1 message", 3) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end var pake1 = matter.Pake1().parse(msg.raw, msg.app_payload_idx) var pA = pake1.pA - # tasmota.log("MTR: received pA=" + pA.tohex(), 4) + # log("MTR: received pA=" + pA.tohex(), 4) # instanciate SPAKE # for testing purpose, we don't send `w1` to make sure @@ -179,13 +179,13 @@ class Matter_Commisioning_Context # compute pB spake.compute_pB(y) - # tasmota.log("MTR: y=" + y.tohex(), 4) - # tasmota.log("MTR: pb=" + spake.pB.tohex(), 4) + # log("MTR: y=" + y.tohex(), 4) + # log("MTR: pb=" + spake.pB.tohex(), 4) # compute ZV spake.compute_ZV_verifier(pA) - # tasmota.log("MTR: Z=" + spake.Z.tohex(), 4) - # tasmota.log("MTR: V=" + spake.V.tohex(), 4) + # log("MTR: Z=" + spake.Z.tohex(), 4) + # log("MTR: V=" + spake.V.tohex(), 4) var context = crypto.SHA256() context.update(bytes().fromstring(self.Matter_Context_Prefix)) @@ -193,7 +193,7 @@ class Matter_Commisioning_Context context.update(session.__Msg2) var context_hash = context.out() - # tasmota.log("MTR: Context=" + context_hash.tohex(), 4) + # log("MTR: Context=" + context_hash.tohex(), 4) # add pA spake.pA = pA @@ -201,31 +201,31 @@ class Matter_Commisioning_Context spake.set_context(context_hash) spake.compute_TT_hash(true) # `true` to indicate it's Matter variant to SPAKE2+ - # tasmota.log("MTR: ------------------------------", 4) - # tasmota.log("MTR: Context = " + spake.Context.tohex(), 4) - # tasmota.log("MTR: M = " + spake.M.tohex(), 4) - # tasmota.log("MTR: N = " + spake.N.tohex(), 4) - # tasmota.log("MTR: pA = " + spake.pA.tohex(), 4) - # tasmota.log("MTR: pB = " + spake.pB.tohex(), 4) - # tasmota.log("MTR: Z = " + spake.Z.tohex(), 4) - # tasmota.log("MTR: V = " + spake.V.tohex(), 4) - # tasmota.log("MTR: w0 = " + spake.w0.tohex(), 4) - # tasmota.log("MTR: ------------------------------", 4) + # log("MTR: ------------------------------", 4) + # log("MTR: Context = " + spake.Context.tohex(), 4) + # log("MTR: M = " + spake.M.tohex(), 4) + # log("MTR: N = " + spake.N.tohex(), 4) + # log("MTR: pA = " + spake.pA.tohex(), 4) + # log("MTR: pB = " + spake.pB.tohex(), 4) + # log("MTR: Z = " + spake.Z.tohex(), 4) + # log("MTR: V = " + spake.V.tohex(), 4) + # log("MTR: w0 = " + spake.w0.tohex(), 4) + # log("MTR: ------------------------------", 4) - # tasmota.log("MTR: Kmain =" + spake.Kmain.tohex(), 4) + # log("MTR: Kmain =" + spake.Kmain.tohex(), 4) - # tasmota.log("MTR: KcA =" + spake.KcA.tohex(), 4) - # tasmota.log("MTR: KcB =" + spake.KcB.tohex(), 4) - # tasmota.log("MTR: K_shared=" + spake.K_shared.tohex(), 4) - # tasmota.log("MTR: Ke =" + spake.Ke.tohex(), 4) - # tasmota.log("MTR: cB=" + spake.cB.tohex(), 4) + # log("MTR: KcA =" + spake.KcA.tohex(), 4) + # log("MTR: KcB =" + spake.KcB.tohex(), 4) + # log("MTR: K_shared=" + spake.K_shared.tohex(), 4) + # log("MTR: Ke =" + spake.Ke.tohex(), 4) + # log("MTR: cB=" + spake.cB.tohex(), 4) var pake2 = matter.Pake2() pake2.pB = spake.pB pake2.cB = spake.cB - # tasmota.log("MTR: pake2: " + matter.inspect(pake2), 4) + # log("MTR: pake2: " + matter.inspect(pake2), 4) var pake2_raw = pake2.tlv2raw() - # tasmota.log("MTR: pake2_raw: " + pake2_raw.tohex(), 4) + # log("MTR: pake2_raw: " + pake2_raw.tohex(), 4) session.__spake_cA = spake.cA session.__spake_Ke = spake.Ke @@ -235,7 +235,7 @@ class Matter_Commisioning_Context var raw = resp.encode_frame(pake2_raw) # log the fact that a new commissioning is starting - tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2) + log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2) self.responder.send_response_frame(resp) return true @@ -246,20 +246,20 @@ class Matter_Commisioning_Context var session = msg.session # sanity checks if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0 - tasmota.log("MTR: invalid Pake3 message", 3) - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + log("MTR: invalid Pake3 message", 3) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end var pake3 = matter.Pake3().parse(msg.raw, msg.app_payload_idx) var cA = pake3.cA - # tasmota.log("MTR: received cA=" + cA.tohex(), 4) + # log("MTR: received cA=" + cA.tohex(), 4) # check the value against computed if cA != session.__spake_cA - tasmota.log("MTR: invalid cA received", 3) - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + log("MTR: invalid cA received", 3) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end @@ -271,12 +271,12 @@ class Matter_Commisioning_Context var R2IKey = session_keys[16..31] var AttestationChallenge = session_keys[32..47] - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: session_keys=" + session_keys.tohex(), 4) - # tasmota.log("MTR: I2RKey =" + I2RKey.tohex(), 4) - # tasmota.log("MTR: R2IKey =" + R2IKey.tohex(), 4) - # tasmota.log("MTR: AC =" + AttestationChallenge.tohex(), 4) - # tasmota.log("MTR: ******************************", 4) + # log("MTR: ******************************", 4) + # log("MTR: session_keys=" + session_keys.tohex(), 4) + # log("MTR: I2RKey =" + I2RKey.tohex(), 4) + # log("MTR: R2IKey =" + R2IKey.tohex(), 4) + # log("MTR: AC =" + AttestationChallenge.tohex(), 4) + # log("MTR: ******************************", 4) # StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS) self.send_status_report(msg, 0x00, 0x0000, 0x0000, false) @@ -290,20 +290,20 @@ class Matter_Commisioning_Context # Validate Sigma1 Destination ID, p.162 # traverse all existing fabrics if tasmota.loglevel(4) - tasmota.log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 4) + log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 4) end for fabric : self.device.sessions.fabrics if fabric.noc == nil || fabric.fabric_id == nil || fabric.device_id == nil continue end # compute candidateDestinationId, Section 4.13.2.4.1, "Destination Identifier" var destinationMessage = initiatorRandom + fabric.get_ca_pub() + fabric.fabric_id + fabric.device_id var key = fabric.get_ipk_group_key() - # tasmota.log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 4) - # tasmota.log("MTR: SIGMA1: key_ipk=" + key.tohex(), 4) + # log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 4) + # log("MTR: SIGMA1: key_ipk=" + key.tohex(), 4) var h = crypto.HMAC_SHA256(key) h.update(destinationMessage) var candidateDestinationId = h.out() if tasmota.loglevel(4) - tasmota.log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 4) + log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 4) end if candidateDestinationId == destinationId return fabric @@ -311,7 +311,7 @@ class Matter_Commisioning_Context end # TODO if there is only 1 fabric, we can try to use it anyways # if size(self.device.sessions.fabrics) == 1 - # tasmota.log("MTR: *** Could not find fabric, trying only fabric in store", 2) + # log("MTR: *** Could not find fabric, trying only fabric in store", 2) # return self.device.sessions.fabrics[0] # end return nil @@ -322,19 +322,19 @@ class Matter_Commisioning_Context var session = msg.session # sanity checks if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0 - # tasmota.log("MTR: invalid Sigma1 message", 3) - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + # log("MTR: invalid Sigma1 message", 3) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx) - # tasmota.log(format("MTR: sigma1=%s", matter.inspect(sigma1)), 4) + # log(format("MTR: sigma1=%s", matter.inspect(sigma1)), 4) session.__initiator_pub = sigma1.initiatorEphPubKey # find session var is_resumption = (sigma1.resumptionID != nil && sigma1.initiatorResumeMIC != nil) - # tasmota.log(format("MTR: is_resumption=%i", is_resumption ? 1 : 0), 4) + # log(format("MTR: is_resumption=%i", is_resumption ? 1 : 0), 4) # TODO disable resumption until fixed is_resumption = false @@ -342,7 +342,7 @@ class Matter_Commisioning_Context var session_resumption if is_resumption session_resumption = self.device.sessions.find_session_by_resumption_id(sigma1.resumptionID) - # tasmota.log(format("MTR: session_resumption found session=%s session_resumption=%s", matter.inspect(session), matter.inspect(session_resumption)), 4) + # log(format("MTR: session_resumption found session=%s session_resumption=%s", matter.inspect(session), matter.inspect(session_resumption)), 4) if session_resumption == nil || session_resumption._fabric == nil is_resumption = false end @@ -362,19 +362,19 @@ class Matter_Commisioning_Context var Resume1MICPayload = ec.decrypt(encrypted) var decrypted_tag = ec.tag() - # tasmota.log("****************************************", 4) - # tasmota.log("MTR: * s1rk = " + s1rk.tohex(), 4) - # tasmota.log("MTR: * tag = " + tag.tohex(), 4) - # tasmota.log("MTR: * Resume1MICPayload = " + Resume1MICPayload.tohex(), 4) - # tasmota.log("MTR: * decrypted_tag = " + decrypted_tag.tohex(), 4) - # tasmota.log("****************************************", 4) + # log("****************************************", 4) + # log("MTR: * s1rk = " + s1rk.tohex(), 4) + # log("MTR: * tag = " + tag.tohex(), 4) + # log("MTR: * Resume1MICPayload = " + Resume1MICPayload.tohex(), 4) + # log("MTR: * decrypted_tag = " + decrypted_tag.tohex(), 4) + # log("****************************************", 4) if tag == decrypted_tag session._fabric = session_resumption._fabric session._source_node_id = msg.source_node_id session.set_mode_CASE() session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id session.__future_local_session_id = self.device.sessions.gen_local_session_id() - tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3) + log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3) # Generate and Send Sigma2_Resume session.shared_secret = session_resumption.shared_secret @@ -395,13 +395,13 @@ class Matter_Commisioning_Context sigma2resume.responderSessionID = session.__future_local_session_id sigma2resume.sigma2ResumeMIC = Resume2MIC - # tasmota.log("****************************************", 4) - # tasmota.log("MTR: * s2rk = " + s2rk.tohex(), 4) - # tasmota.log("MTR: * s2rk_salt = " + s2rk_salt.tohex(), 4) - # tasmota.log("MTR: * new_resumption_id = " + session.resumption_id.tohex(), 4) - # tasmota.log("MTR: * responderSessionID= " + str(session.__future_local_session_id), 4) - # tasmota.log("MTR: * sigma2ResumeMIC = " + Resume2MIC.tohex(), 4) - # tasmota.log("****************************************", 4) + # log("****************************************", 4) + # log("MTR: * s2rk = " + s2rk.tohex(), 4) + # log("MTR: * s2rk_salt = " + s2rk_salt.tohex(), 4) + # log("MTR: * new_resumption_id = " + session.resumption_id.tohex(), 4) + # log("MTR: * responderSessionID= " + str(session.__future_local_session_id), 4) + # log("MTR: * sigma2ResumeMIC = " + Resume2MIC.tohex(), 4) + # log("****************************************", 4) # # compute session key, p.178 var session_keys = crypto.HKDF_SHA256().derive(session.shared_secret #- input key -#, sigma1.initiatorRandom + session.resumption_id #- salt -#, @@ -412,16 +412,16 @@ class Matter_Commisioning_Context var ac = session_keys[32..47] var created = tasmota.rtc_utc() - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4) - # tasmota.log("MTR: R2IKey =" + r2i.tohex(), 4) - # tasmota.log("MTR: AC =" + ac.tohex(), 4) - # tasmota.log("MTR: ******************************", 4) + # log("MTR: ******************************", 4) + # log("MTR: I2RKey =" + i2r.tohex(), 4) + # log("MTR: R2IKey =" + r2i.tohex(), 4) + # log("MTR: AC =" + ac.tohex(), 4) + # log("MTR: ******************************", 4) var sigma2resume_raw = sigma2resume.tlv2raw() session.__Msg1 = nil - # tasmota.log("MTR: sigma2resume: " + matter.inspect(sigma2resume), 4) - # tasmota.log("MTR: sigma2resume_raw: " + sigma2resume_raw.tohex(), 4) + # log("MTR: sigma2resume: " + matter.inspect(sigma2resume), 4) + # log("MTR: sigma2resume_raw: " + sigma2resume_raw.tohex(), 4) # now package the response message var resp = msg.build_response(0x33 #-sigma-2-resume-#, true) @@ -453,7 +453,7 @@ class Matter_Commisioning_Context session._fabric = fabric if session == nil || session._fabric == nil - tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 3) + log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0001, false) return false end @@ -462,26 +462,26 @@ class Matter_Commisioning_Context session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id session.__future_local_session_id = self.device.sessions.gen_local_session_id() - tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3) + log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3) - # tasmota.log("MTR: fabric="+matter.inspect(session._fabric), 4) - # tasmota.log("MTR: no_private_key="+session.get_pk().tohex(), 4) - # tasmota.log("MTR: noc ="+session.get_noc().tohex(), 4) + # log("MTR: fabric="+matter.inspect(session._fabric), 4) + # log("MTR: no_private_key="+session.get_pk().tohex(), 4) + # log("MTR: noc ="+session.get_noc().tohex(), 4) # if fabric.get_icac() - # tasmota.log("MTR: icac ="+fabric.get_icac().tohex(), 4) + # log("MTR: icac ="+fabric.get_icac().tohex(), 4) # end - # tasmota.log("MTR: root_ca_cert ="+fabric.get_ca().tohex(), 4) + # log("MTR: root_ca_cert ="+fabric.get_ca().tohex(), 4) # Compute Sigma2, p.162 session.resumption_id = crypto.random(16) # generate a new resumption id session.__responder_priv = crypto.random(32) session.__responder_pub = crypto.EC_P256().public_key(session.__responder_priv) - # tasmota.log("MTR: ResponderEph_priv ="+session.__responder_priv.tohex(), 4) - # tasmota.log("MTR: ResponderEph_pub ="+session.__responder_pub.tohex(), 4) + # log("MTR: ResponderEph_priv ="+session.__responder_priv.tohex(), 4) + # log("MTR: ResponderEph_pub ="+session.__responder_pub.tohex(), 4) var responderRandom = crypto.random(32) session.shared_secret = crypto.EC_P256().shared_key(session.__responder_priv, sigma1.initiatorEphPubKey) - # tasmota.log("MTR: * shared_secret = " + session.shared_secret.tohex(), 4) + # log("MTR: * shared_secret = " + session.shared_secret.tohex(), 4) var sigma2_tbsdata = matter.TLV.Matter_TLV_struct() sigma2_tbsdata.add_TLV(1, matter.TLV.B2, fabric.get_noc()) @@ -490,10 +490,10 @@ class Matter_Commisioning_Context sigma2_tbsdata.add_TLV(4, matter.TLV.B2, sigma1.initiatorEphPubKey) var TBSData2Signature = crypto.EC_P256().ecdsa_sign_sha256(fabric.get_pk(), sigma2_tbsdata.tlv2raw()) - # tasmota.log("****************************************", 4) - # tasmota.log("MTR: * fabric.get_pk = " + str(fabric.get_pk()), 4) - # tasmota.log("MTR: * sigma2_tbsdata = " + str(sigma2_tbsdata), 4) - # tasmota.log("MTR: * TBSData2Signature = " + TBSData2Signature.tohex(), 4) + # log("****************************************", 4) + # log("MTR: * fabric.get_pk = " + str(fabric.get_pk()), 4) + # log("MTR: * sigma2_tbsdata = " + str(sigma2_tbsdata), 4) + # log("MTR: * TBSData2Signature = " + TBSData2Signature.tohex(), 4) var sigma2_tbedata = matter.TLV.Matter_TLV_struct() sigma2_tbedata.add_TLV(1, matter.TLV.B2, fabric.get_noc()) @@ -502,47 +502,47 @@ class Matter_Commisioning_Context sigma2_tbedata.add_TLV(4, matter.TLV.B2, session.resumption_id) # compute TranscriptHash = Crypto_Hash(message = Msg1) - # tasmota.log("****************************************", 4) + # log("****************************************", 4) session.__Msg1 = sigma1.Msg1 - # tasmota.log("MTR: * resumptionid = " + session.resumption_id.tohex(), 4) - # tasmota.log("MTR: * MSG1 = " + session.__Msg1.tohex(), 4) + # log("MTR: * resumptionid = " + session.resumption_id.tohex(), 4) + # log("MTR: * MSG1 = " + session.__Msg1.tohex(), 4) var TranscriptHash = crypto.SHA256().update(session.__Msg1).out() - # tasmota.log("MTR: TranscriptHash =" + TranscriptHash.tohex(), 4) + # log("MTR: TranscriptHash =" + TranscriptHash.tohex(), 4) # Compute S2K, p.175 var s2k_info = bytes().fromstring(self.S2K_Info) var s2k_salt = fabric.get_ipk_group_key() + responderRandom + session.__responder_pub + TranscriptHash var s2k = crypto.HKDF_SHA256().derive(session.shared_secret, s2k_salt, s2k_info, 16) - # tasmota.log("MTR: * SharedSecret = " + session.shared_secret.tohex(), 4) - # tasmota.log("MTR: * s2k_salt = " + s2k_salt.tohex(), 4) - # tasmota.log("MTR: * s2k = " + s2k.tohex(), 4) + # log("MTR: * SharedSecret = " + session.shared_secret.tohex(), 4) + # log("MTR: * s2k_salt = " + s2k_salt.tohex(), 4) + # log("MTR: * s2k = " + s2k.tohex(), 4) var sigma2_tbedata_raw = sigma2_tbedata.tlv2raw() - # tasmota.log("MTR: * TBEData2Raw = " + sigma2_tbedata_raw.tohex(), 4) + # log("MTR: * TBEData2Raw = " + sigma2_tbedata_raw.tohex(), 4) # // `AES_CCM.init(secret_key:bytes(16 or 32), iv:bytes(7..13), aad:bytes(), data_len:int, tag_len:int) -> instance` var aes = crypto.AES_CCM(s2k, bytes().fromstring(self.TBEData2_Nonce), bytes(), size(sigma2_tbedata_raw), 16) var TBEData2Encrypted = aes.encrypt(sigma2_tbedata_raw) + aes.tag() - # tasmota.log("MTR: * TBEData2Enc = " + TBEData2Encrypted.tohex(), 4) - # tasmota.log("****************************************", 4) + # log("MTR: * TBEData2Enc = " + TBEData2Encrypted.tohex(), 4) + # log("****************************************", 4) var sigma2 = matter.Sigma2() sigma2.responderRandom = responderRandom sigma2.responderSessionId = session.__future_local_session_id sigma2.responderEphPubKey = session.__responder_pub sigma2.encrypted2 = TBEData2Encrypted - # tasmota.log("MTR: sigma2: " + matter.inspect(sigma2), 4) + # log("MTR: sigma2: " + matter.inspect(sigma2), 4) var sigma2_raw = sigma2.tlv2raw() session.__Msg2 = sigma2_raw - # tasmota.log("MTR: sigma2_raw: " + sigma2_raw.tohex(), 4) + # log("MTR: sigma2_raw: " + sigma2_raw.tohex(), 4) # now package the response message var resp = msg.build_response(0x31 #-sigma-2-#, true) # no reliable flag var raw = resp.encode_frame(sigma2_raw) # log the fact that a new connection is starting - tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2) + log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2) self.responder.send_response_frame(resp) return true @@ -555,29 +555,29 @@ class Matter_Commisioning_Context import crypto # sanity checks if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0 - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end var session = msg.session var sigma3 = matter.Sigma3().parse(msg.raw, msg.app_payload_idx) - # tasmota.log("****************************************", 4) + # log("****************************************", 4) # compute TranscriptHash = Crypto_Hash(message = Msg1 || Msg2) var TranscriptHash = crypto.SHA256().update(session.__Msg1).update(session.__Msg2).out() - # tasmota.log("MTR: * session = " + str(session), 4) - # tasmota.log("MTR: .ipk_epoch_key=" + str(session.get_ipk_epoch_key()), 4) - # tasmota.log("MTR: .fabric_compr = " + str(session.get_fabric_compressed()), 4) - # tasmota.log("MTR: * ipk_group_key = " + session.get_ipk_group_key().tohex(), 4) - # tasmota.log("MTR: * TranscriptHash= " + TranscriptHash.tohex(), 4) + # log("MTR: * session = " + str(session), 4) + # log("MTR: .ipk_epoch_key=" + str(session.get_ipk_epoch_key()), 4) + # log("MTR: .fabric_compr = " + str(session.get_fabric_compressed()), 4) + # log("MTR: * ipk_group_key = " + session.get_ipk_group_key().tohex(), 4) + # log("MTR: * TranscriptHash= " + TranscriptHash.tohex(), 4) var s3k_info = bytes().fromstring(self.S3K_Info) var s3k = crypto.HKDF_SHA256().derive(session.shared_secret, session.get_ipk_group_key() + TranscriptHash, s3k_info, 16) - # tasmota.log("****************************************", 4) - # tasmota.log("MTR: * s3k_salt = " + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4) - # tasmota.log("MTR: * s3k = " + s3k.tohex(), 4) - # tasmota.log("****************************************", 4) + # log("****************************************", 4) + # log("MTR: * s3k_salt = " + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4) + # log("MTR: * s3k = " + s3k.tohex(), 4) + # log("****************************************", 4) # decrypt var encrypted = sigma3.TBEData3Encrypted[0..-17] @@ -585,75 +585,75 @@ class Matter_Commisioning_Context var ec = crypto.AES_CCM(s3k, bytes().fromstring(self.TBEData3_Nonce), bytes(), size(encrypted), 16) var TBEData3 = ec.decrypt(encrypted) var TBETag3 = ec.tag() - # tasmota.log("MTR: * TBEData3 = " + TBEData3.tohex(), 4) - # tasmota.log("MTR: * TBETag3 = " + TBETag3.tohex(), 4) - # tasmota.log("MTR: * tag_sent = " + tag.tohex(), 4) - # tasmota.log("****************************************", 4) + # log("MTR: * TBEData3 = " + TBEData3.tohex(), 4) + # log("MTR: * TBETag3 = " + TBETag3.tohex(), 4) + # log("MTR: * tag_sent = " + tag.tohex(), 4) + # log("****************************************", 4) if TBETag3 != tag - tasmota.log("MTR: Tag don't match", 3) - tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) + log("MTR: Tag don't match", 3) + log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) return false end var TBEData3TLV = matter.TLV.parse(TBEData3) - # tasmota.log("MTR: * TBEData3TLV = " + str(TBEData3TLV), 4) + # log("MTR: * TBEData3TLV = " + str(TBEData3TLV), 4) var initiatorNOC = TBEData3TLV.findsubval(1) var initiatorICAC = TBEData3TLV.findsubval(2) var ec_signature = TBEData3TLV.findsubval(3) - # tasmota.log("MTR: * initiatorNOC = " + str(initiatorNOC), 4) - # tasmota.log("MTR: * initiatorICAC = " + str(initiatorICAC), 4) - # tasmota.log("MTR: * ec_signature = " + str(ec_signature), 4) + # log("MTR: * initiatorNOC = " + str(initiatorNOC), 4) + # log("MTR: * initiatorICAC = " + str(initiatorICAC), 4) + # log("MTR: * ec_signature = " + str(ec_signature), 4) # Success = Crypto_VerifyChain(certificates = [TBEData3.initiatorNOC, TBEData3.initiatorICAC, TrustedRCAC]), when TBEData3.initiatorICAC is present # TODO var initiatorNOCTLV = matter.TLV.parse(initiatorNOC) - # tasmota.log("MTR: initiatorNOCTLV = " + str(initiatorNOCTLV), 4) + # log("MTR: initiatorNOCTLV = " + str(initiatorNOCTLV), 4) var initiatorNOCPubKey = initiatorNOCTLV.findsubval(9) var initiatorNOCListDN = initiatorNOCTLV.findsub(6) var initiatorFabricId = initiatorNOCListDN.findsubval(17) if type(initiatorFabricId) == 'int' session.peer_node_id = int64.fromu32(initiatorFabricId).tobytes() else session.peer_node_id = initiatorFabricId.tobytes() end - # tasmota.log("MTR: initiatorFabricId="+str(session.peer_node_id), 4) + # log("MTR: initiatorFabricId="+str(session.peer_node_id), 4) var sigma3_tbs = matter.TLV.Matter_TLV_struct() sigma3_tbs.add_TLV(1, matter.TLV.B1, initiatorNOC) sigma3_tbs.add_TLV(2, matter.TLV.B1, initiatorICAC) sigma3_tbs.add_TLV(3, matter.TLV.B1, session.__initiator_pub) sigma3_tbs.add_TLV(4, matter.TLV.B1, session.__responder_pub) - # tasmota.log("MTR: * sigma3_tbs = " + str(sigma3_tbs), 4) + # log("MTR: * sigma3_tbs = " + str(sigma3_tbs), 4) var sigma3_tbs_raw = sigma3_tbs.tlv2raw() - # tasmota.log("MTR: * sigma3_tbs_raw= " + sigma3_tbs_raw.tohex(), 4) + # log("MTR: * sigma3_tbs_raw= " + sigma3_tbs_raw.tohex(), 4) - # tasmota.log("MTR: * initiatorNOCPubKey= " + initiatorNOCPubKey.tohex(), 4) - # tasmota.log("MTR: * ec_signature = " + ec_signature.tohex(), 4) - # tasmota.log("****************************************", 4) + # log("MTR: * initiatorNOCPubKey= " + initiatorNOCPubKey.tohex(), 4) + # log("MTR: * ec_signature = " + ec_signature.tohex(), 4) + # log("****************************************", 4) # `crypto.EC_P256().ecdsa_verify_sha256(public_key:bytes(65), message:bytes(), hash:bytes()) -> bool` var sigma3_tbs_valid = crypto.EC_P256().ecdsa_verify_sha256(initiatorNOCPubKey, sigma3_tbs_raw, ec_signature) if !sigma3_tbs_valid - tasmota.log("MTR: sigma3_tbs does not have a valid signature", 2) - tasmota.log("MTR: ******************* Invalid signature, trying anyways", 2) - # tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) + log("MTR: sigma3_tbs does not have a valid signature", 2) + log("MTR: ******************* Invalid signature, trying anyways", 2) + # log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) # self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) # return false else # All good, compute new keys - tasmota.log("MTR: Sigma3 verified, computing new keys", 3) + log("MTR: Sigma3 verified, computing new keys", 3) end TranscriptHash = crypto.SHA256().update(session.__Msg1).update(session.__Msg2).update(sigma3.Msg3).out() - # tasmota.log("MTR: * __Msg1 = " + session.__Msg1.tohex(), 4) - # tasmota.log("MTR: * __Msg2 = " + session.__Msg2.tohex(), 4) - # tasmota.log("MTR: * __Msg3 = " + sigma3.Msg3.tohex(), 4) - # tasmota.log("MTR: * TranscriptHash = " + TranscriptHash.tohex(), 4) + # log("MTR: * __Msg1 = " + session.__Msg1.tohex(), 4) + # log("MTR: * __Msg2 = " + session.__Msg2.tohex(), 4) + # log("MTR: * __Msg3 = " + sigma3.Msg3.tohex(), 4) + # log("MTR: * TranscriptHash = " + TranscriptHash.tohex(), 4) # we can now free __Msg1 and __Msg2 session.__Msg1 = nil session.__Msg2 = nil - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: shared_secret =" + session.shared_secret.tohex(), 4) - # tasmota.log("MTR: ipk + hash =" + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4) + # log("MTR: ******************************", 4) + # log("MTR: shared_secret =" + session.shared_secret.tohex(), 4) + # log("MTR: ipk + hash =" + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4) # compute session key var session_keys = crypto.HKDF_SHA256().derive(session.shared_secret #- input key -#, session.get_ipk_group_key() + TranscriptHash #- salt -#, @@ -664,11 +664,11 @@ class Matter_Commisioning_Context var ac = session_keys[32..47] var created = tasmota.rtc_utc() - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4) - # tasmota.log("MTR: R2IKey =" + r2i.tohex(), 4) - # tasmota.log("MTR: AC =" + ac.tohex(), 4) - # tasmota.log("MTR: ******************************", 4) + # log("MTR: ******************************", 4) + # log("MTR: I2RKey =" + i2r.tohex(), 4) + # log("MTR: R2IKey =" + r2i.tohex(), 4) + # log("MTR: AC =" + ac.tohex(), 4) + # log("MTR: ******************************", 4) # StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS) self.send_status_report(msg, 0x00, 0x0000, 0x0000, true) @@ -691,7 +691,7 @@ class Matter_Commisioning_Context # placeholder, nothing to run for now def parse_StatusReport(msg) var session = msg.session - tasmota.log("MTR: >Status "+msg.raw[msg.app_payload_idx..].tohex(), 3) + log("MTR: >Status "+msg.raw[msg.app_payload_idx..].tohex(), 3) return false # we don't explicitly ack the message end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be index 6103b71f7..8f2fa8aed 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be @@ -41,8 +41,9 @@ class Matter_PBKDFParamRequest var SLEEPY_ACTIVE_INTERVAL def parse(b, idx) + var TLV = matter.TLV if idx == nil idx = 0 end - var val = matter.TLV.parse(b, idx) + var val = TLV.parse(b, idx) self.initiatorRandom = val.getsubval(1) self.initiator_session_id = val.getsubval(2) @@ -71,18 +72,19 @@ class Matter_PBKDFParamResponse var SLEEPY_ACTIVE_INTERVAL def tlv2raw(b) - var s = matter.TLV.Matter_TLV_struct() + var TLV = matter.TLV + var s = TLV.Matter_TLV_struct() # initiatorRandom - s.add_TLV(1, matter.TLV.B1, self.initiatorRandom) - s.add_TLV(2, matter.TLV.B1, self.responderRandom) - s.add_TLV(3, matter.TLV.U2, self.responderSessionId) + s.add_TLV(1, TLV.B1, self.initiatorRandom) + s.add_TLV(2, TLV.B1, self.responderRandom) + s.add_TLV(3, TLV.U2, self.responderSessionId) var s_pbkdf = s.add_struct(4) - s_pbkdf.add_TLV(1, matter.TLV.U4, self.pbkdf_parameters_iterations) - s_pbkdf.add_TLV(2, matter.TLV.B1, self.pbkdf_parameters_salt) + s_pbkdf.add_TLV(1, TLV.U4, self.pbkdf_parameters_iterations) + s_pbkdf.add_TLV(2, TLV.B1, self.pbkdf_parameters_salt) if self.SLEEPY_IDLE_INTERVAL != nil || self.SLEEPY_ACTIVE_INTERVAL != nil var s2 = s.add_struct(5) - s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL) - s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL) + s2.add_TLV(1, TLV.U4, self.SLEEPY_IDLE_INTERVAL) + s2.add_TLV(2, TLV.U4, self.SLEEPY_ACTIVE_INTERVAL) end return s.tlv2raw(b) end @@ -98,7 +100,7 @@ class Matter_Pake1 def parse(b, idx) if idx == nil idx = 0 end var val = matter.TLV.parse(b, idx) - # tasmota.log("MTR: parsed TLV: " + str(val), 4) + # log("MTR: parsed TLV: " + str(val), 4) self.pA = val.getsubval(1) return self @@ -114,10 +116,11 @@ class Matter_Pake2 var cB # 32 bytes def tlv2raw(b) - var s = matter.TLV.Matter_TLV_struct() + var TLV = matter.TLV + var s = TLV.Matter_TLV_struct() # - s.add_TLV(1, matter.TLV.B1, self.pB) - s.add_TLV(2, matter.TLV.B1, self.cB) + s.add_TLV(1, TLV.B1, self.pB) + s.add_TLV(2, TLV.B1, self.cB) return s.tlv2raw(b) end end @@ -130,7 +133,7 @@ class Matter_Pake3 def parse(b, idx) if idx == nil idx = 0 end var val = matter.TLV.parse(b, idx) - # tasmota.log("MTR: parsed TLV: " + str(val), 4) + # log("MTR: parsed TLV: " + str(val), 4) self.cA = val.getsubval(1) return self @@ -157,7 +160,7 @@ class Matter_Sigma1 if idx == nil idx = 0 end var val = matter.TLV.parse(b, idx) self.Msg1 = b[idx..] - # tasmota.log("MTR: Sigma1 TLV=" + str(val), 4) + # log("MTR: Sigma1 TLV=" + str(val), 4) self.initiatorRandom = val.getsubval(1) self.initiator_session_id = val.getsubval(2) @@ -187,16 +190,17 @@ class Matter_Sigma2 var SLEEPY_ACTIVE_INTERVAL def tlv2raw(b) - var s = matter.TLV.Matter_TLV_struct() + var TLV = matter.TLV + var s = TLV.Matter_TLV_struct() # initiatorRandom - s.add_TLV(1, matter.TLV.B1, self.responderRandom) - s.add_TLV(2, matter.TLV.U2, self.responderSessionId) - s.add_TLV(3, matter.TLV.B1, self.responderEphPubKey) - s.add_TLV(4, matter.TLV.B1, self.encrypted2) + s.add_TLV(1, TLV.B1, self.responderRandom) + s.add_TLV(2, TLV.U2, self.responderSessionId) + s.add_TLV(3, TLV.B1, self.responderEphPubKey) + s.add_TLV(4, TLV.B1, self.encrypted2) if self.SLEEPY_IDLE_INTERVAL != nil || self.SLEEPY_ACTIVE_INTERVAL != nil var s2 = s.add_struct(5) - s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL) - s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL) + s2.add_TLV(1, TLV.U4, self.SLEEPY_IDLE_INTERVAL) + s2.add_TLV(2, TLV.U4, self.SLEEPY_ACTIVE_INTERVAL) end return s.tlv2raw(b) end @@ -214,15 +218,16 @@ class Matter_Sigma2Resume var SLEEPY_ACTIVE_INTERVAL def tlv2raw(b) - var s = matter.TLV.Matter_TLV_struct() + var TLV = matter.TLV + var s = TLV.Matter_TLV_struct() # initiatorRandom - s.add_TLV(1, matter.TLV.B1, self.resumptionID) - s.add_TLV(2, matter.TLV.B1, self.sigma2ResumeMIC) - s.add_TLV(3, matter.TLV.U2, self.responderSessionID) + s.add_TLV(1, TLV.B1, self.resumptionID) + s.add_TLV(2, TLV.B1, self.sigma2ResumeMIC) + s.add_TLV(3, TLV.U2, self.responderSessionID) if self.SLEEPY_IDLE_INTERVAL != nil || self.SLEEPY_ACTIVE_INTERVAL != nil var s2 = s.add_struct(4) - s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL) - s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL) + s2.add_TLV(1, TLV.U4, self.SLEEPY_IDLE_INTERVAL) + s2.add_TLV(2, TLV.U4, self.SLEEPY_ACTIVE_INTERVAL) end return s.tlv2raw(b) end @@ -240,7 +245,7 @@ class Matter_Sigma3 if idx == nil idx = 0 end var val = matter.TLV.parse(b, idx) self.Msg3 = b[idx..] - # tasmota.log("MTR: Sigma3 TLV=" + str(val), 4) + # log("MTR: Sigma3 TLV=" + str(val), 4) self.TBEData3Encrypted = val.getsubval(1) return self diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be index d00c0cd53..0d640253a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be @@ -39,13 +39,13 @@ class Matter_Control_Message def process_incoming_control_message(msg) - tasmota.log("MTR: received control message " + matter.inspect(msg), 3) + log("MTR: received control message " + matter.inspect(msg), 3) if msg.opcode == 0x00 return self.parse_MsgCounterSyncReq(msg) elif msg.opcode == 0x01 return self.parse_MsgCounterSyncRsp(msg) else - tasmota.log(format("MTR: >????????? Unknown OpCode (control message) %02X", msg.opcode), 2) + log(format("MTR: >????????? Unknown OpCode (control message) %02X", msg.opcode), 2) return false end @@ -58,7 +58,7 @@ class Matter_Control_Message # Not yet implemented def parse_MsgCounterSyncReq(msg) var session = msg.session - tasmota.log(format("MTR: >MCSyncReq * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) + log(format("MTR: >MCSyncReq * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) return false # we don't explicitly ack the message end @@ -68,7 +68,7 @@ class Matter_Control_Message # Not yet implemented def parse_MsgCounterSyncRsp(msg) var session = msg.session - tasmota.log(format("MTR: >MCSyncRsp * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) + log(format("MTR: >MCSyncRsp * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2) return false # we don't explicitly ack the message end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be index b77f1bd1a..a6f6ed3ed 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be @@ -193,7 +193,7 @@ class Matter_Fabric : Matter_Expirable # def counter_group_data_snd_next() var next = self._counter_group_data_snd_impl.next() - tasmota.log(f"MTR: . Counter_group_data_snd={next:i}", 3) + log(f"MTR: . Counter_group_data_snd={next:i}", 3) if matter.Counter.is_greater(next, self.counter_group_data_snd) self.counter_group_data_snd = next + self._GROUP_SND_INCR if self.does_persist() @@ -208,7 +208,7 @@ class Matter_Fabric : Matter_Expirable # def counter_group_ctrl_snd_next() var next = self._counter_group_ctrl_snd_impl.next() - tasmota.log(f"MTR: . Counter_group_ctrl_snd={next:i}", 3) + log(f"MTR: . Counter_group_ctrl_snd={next:i}", 3) if matter.Counter.is_greater(next, self.counter_group_ctrl_snd) self.counter_group_ctrl_snd = next + self._GROUP_SND_INCR if self.does_persist() @@ -222,13 +222,13 @@ class Matter_Fabric : Matter_Expirable ############################################################# # Called before removal def log_new_fabric() - tasmota.log(format("MTR: +Fabric fab='%s' vendorid=%s", self.get_fabric_id().copy().reverse().tohex(), self.get_admin_vendor_name()), 3) + log(format("MTR: +Fabric fab='%s' vendorid=%s", self.get_fabric_id().copy().reverse().tohex(), self.get_admin_vendor_name()), 3) end ############################################################# # Called before removal def before_remove() - tasmota.log(format("MTR: -Fabric fab='%s' (removed)", self.get_fabric_id().copy().reverse().tohex()), 3) + log(format("MTR: -Fabric fab='%s' (removed)", self.get_fabric_id().copy().reverse().tohex()), 3) end ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be index 854fb820a..ee9620a6b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be @@ -137,7 +137,7 @@ class Matter_HTTP_remote : Matter_HTTP_async # dispatch to method in charge of converting to shadow values method(obj, j, code) else - tasmota.log(f"MTR: *** failed to parse JSON response {payload=}", 3) + log(f"MTR: *** failed to parse JSON response {payload=}", 3) end end end @@ -159,7 +159,7 @@ class Matter_HTTP_remote : Matter_HTTP_async else self.info.remove("name") end - tasmota.log(f"MTR: update '{self.addr}' name='{device_name}'", 3) + log(f"MTR: update '{self.addr}' name='{device_name}'", 3) changed = true end @@ -175,7 +175,7 @@ class Matter_HTTP_remote : Matter_HTTP_async else self.info.remove('version') end - tasmota.log(f"MTR: update '{self.addr}' version='{version}'", 3) + log(f"MTR: update '{self.addr}' version='{version}'", 3) changed = true end @@ -185,7 +185,7 @@ class Matter_HTTP_remote : Matter_HTTP_async else self.info.remove('hardware') end - tasmota.log(f"MTR: update '{self.addr}' hardware='{hardware}'", 3) + log(f"MTR: update '{self.addr}' hardware='{hardware}'", 3) changed = true end @@ -201,7 +201,7 @@ class Matter_HTTP_remote : Matter_HTTP_async else self.info.remove("mac") end - tasmota.log(f"MTR: update '{self.addr}' mac='{mac}'", 3) + log(f"MTR: update '{self.addr}' mac='{mac}'", 3) changed = true end @@ -283,7 +283,7 @@ class Matter_HTTP_remote : Matter_HTTP_async self.current_cmd = cmd var cmd_url = "/cm?cmnd=" + string.tr(cmd, ' ', '+') - tasmota.log(format("MTR: HTTP async request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4) + log(format("MTR: HTTP async request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4) var ret = self.begin(cmd_url) end @@ -302,11 +302,11 @@ class Matter_HTTP_remote : Matter_HTTP_async self.current_cmd = nil var cmd_url = "/cm?cmnd=" + string.tr(cmd, ' ', '+') - tasmota.log(format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4) + log(format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4) var ret = super(self).begin_sync(cmd_url, timeout) var payload_short = (ret) ? ret : 'nil' if size(payload_short) > 30 payload_short = payload_short[0..29] + '...' end - tasmota.log(format("MTR: HTTP sync-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3) + log(format("MTR: HTTP sync-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3) return ret end @@ -314,17 +314,17 @@ class Matter_HTTP_remote : Matter_HTTP_async if self.current_cmd == nil return end # do nothing if sync request var payload_short = (self.payload != nil) ? self.payload : 'nil' if size(payload_short) > 30 payload_short = payload_short[0..29] + '...' end - tasmota.log(format("MTR: HTTP async-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3) + log(format("MTR: HTTP async-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3) self.dispatch_cb(self.http_status, self.payload) end def event_http_failed() if self.current_cmd == nil return end # do nothing if sync request - tasmota.log("MTR: HTTP failed", 3) + log("MTR: HTTP failed", 3) self.dispatch_cb(self.http_status, nil) end def event_http_timeout() if self.current_cmd == nil return end # do nothing if sync request - tasmota.log(format("MTR: HTTP timeout http_status=%i phase=%i tcp_status=%i size_payload=%i", self.http_status, self.phase, self.status, size(self.payload)), 3) + log(format("MTR: HTTP timeout http_status=%i phase=%i tcp_status=%i size_payload=%i", self.http_status, self.phase, self.status, size(self.payload)), 3) self.dispatch_cb(self.http_status, nil) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index d0977b242..5126757a4 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -52,24 +52,24 @@ class Matter_IM if opcode == 0x02 # Read Request var read_request_solo = self.read_request_solo.from_raw(msg.raw, msg.app_payload_idx) if read_request_solo != nil - # tasmota.log(f"MTR: process_incoming {read_request_solo=}") + # log(f"MTR: process_incoming {read_request_solo=}") return self.process_read_request_solo(msg, read_request_solo) end elif opcode == 0x08 # Invoke Request var invoke_request_solo = self.invoke_request_solo.from_raw(msg.raw, msg.app_payload_idx) - # tasmota.log(f"MTR: {invoke_request_solo=} {msg.raw[msg.app_payload_idx .. ].tohex()} {msg.app_payload_idx=} {msg.raw.tohex()}") + # log(f"MTR: {invoke_request_solo=} {msg.raw[msg.app_payload_idx .. ].tohex()} {msg.app_payload_idx=} {msg.raw.tohex()}") if invoke_request_solo != nil return self.process_invoke_request_solo(msg, invoke_request_solo) end end - # tasmota.log("MTR: received IM message " + matter.inspect(msg), 3) + # log("MTR: received IM message " + matter.inspect(msg), 3) var val = matter.TLV.parse(msg.raw, msg.app_payload_idx) - # tasmota.log("MTR: IM TLV: " + str(val), 3) + # log("MTR: IM TLV: " + str(val), 3) # var InteractionModelRevision = val.findsubval(0xFF) - # tasmota.log("MTR: InteractionModelRevision=" + (InteractionModelRevision != nil ? str(InteractionModelRevision) : "nil"), 4) + # log("MTR: InteractionModelRevision=" + (InteractionModelRevision != nil ? str(InteractionModelRevision) : "nil"), 4) if opcode == 0x01 # Status Response return self.process_status_response(msg, val) @@ -108,7 +108,7 @@ class Matter_IM def process_incoming_ack(msg) # check if there is an exchange_id interested in receiving this var message = self.find_sendqueue_by_exchangeid(msg.exchange_id) - # tasmota.log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 4) + # log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 4) if message return message.ack_received(msg) # dispatch to IM_Message end @@ -139,7 +139,7 @@ class Matter_IM end if message.finish - tasmota.log("MTR: remove IM message exch="+str(message.resp.exchange_id), 4) + log("MTR: remove IM message exch="+str(message.resp.exchange_id), 4) self.send_queue.remove(idx) else idx += 1 @@ -208,11 +208,11 @@ class Matter_IM if message return message.status_ok_received(msg) # re-arm the sending of next packets for the same exchange else - tasmota.log(format("MTR: >OK (%6i) exch=%i not found", msg.session.local_session_id, msg.exchange_id), 4) # don't show 'SUCCESS' to not overflow logs with non-information + log(format("MTR: >OK (%6i) exch=%i not found", msg.session.local_session_id, msg.exchange_id), 4) # don't show 'SUCCESS' to not overflow logs with non-information end else # error - tasmota.log(format("MTR: >Status ERROR = 0x%02X", status), 3) + log(format("MTR: >Status ERROR = 0x%02X", status), 3) if message message.status_error_received(msg) self.remove_sendqueue_by_exchangeid(msg.exchange_id) @@ -253,23 +253,23 @@ class Matter_IM # check if too big to encode as a single packet if (res.is_list || res.is_array) && res.encode_len() > matter.IM_ReportData.MAX_MESSAGE - # tasmota.log(f"MTR: >>>>>> long response", 3) + # log(f"MTR: >>>>>> long response", 3) a1_raw_or_list = [] # we return a list of block var a1_raw = bytes(48) var empty_list = TLV.Matter_TLV_array() self.attributedata2raw(a1_raw, ctx, empty_list, false) a1_raw_or_list.push(a1_raw) - # tasmota.log(f"MTR: >>>>>> long response global DELETE {a1_raw.tohex()}", 3) + # log(f"MTR: >>>>>> long response global DELETE {a1_raw.tohex()}", 3) for elt:res.val a1_raw = bytes(48) # var list_item = TLV.Matter_TLV_array() # list_item.val.push(elt) self.attributedata2raw(a1_raw, ctx, elt, true #- add ListIndex:null -#) - # tasmota.log(f"MTR: >>>>>> long response global ADD {a1_raw.tohex()}", 3) + # log(f"MTR: >>>>>> long response global ADD {a1_raw.tohex()}", 3) a1_raw_or_list.push(a1_raw) end - # tasmota.log(f"MTR: >>>>>> long response global {a1_raw_or_list}", 3) + # log(f"MTR: >>>>>> long response global {a1_raw_or_list}", 3) else # normal encoding # encode directly raw bytes() @@ -278,7 +278,7 @@ class Matter_IM end if !no_log - tasmota.log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) + log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) end elif ctx.status != nil if direct # we report an error only if a concrete direct read, not with wildcards @@ -287,12 +287,12 @@ class Matter_IM self.attributestatus2raw(a1_raw_or_list, ctx, ctx.status) if tasmota.loglevel(3) - tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3) + log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3) end end else if !no_log - tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3) + log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3) end # ignore if content is nil and status is undefined if direct @@ -368,9 +368,9 @@ class Matter_IM # we need expansion, log first if ctx.cluster != nil && ctx.attribute != nil var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - tasmota.log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 3) + log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 3) else - tasmota.log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 3) + log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 3) end end @@ -381,8 +381,8 @@ class Matter_IM ) end - # tasmota.log("MTR: ReportDataMessage=" + str(ret), 3) - # tasmota.log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3) + # log("MTR: ReportDataMessage=" + str(ret), 3) + # log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3) return ret end @@ -705,7 +705,7 @@ class Matter_IM var pi = self.device.process_attribute_read_solo(ctx) var res = nil # matter.profiler.log("read_request_solo pi ok") - # tasmota.log(f"MTR: process_read_request_solo {pi=}") + # log(f"MTR: process_read_request_solo {pi=}") var raw # this is the bytes() block we need to add to response (or nil) if pi != nil @@ -721,7 +721,7 @@ class Matter_IM # revert to standard # the attribute will be read again, but it's hard to avoid it res = nil # indicated to GC that we don't need it again - tasmota.log(f"MTR: Response to big, revert to non-solo", 3) + log(f"MTR: Response to big, revert to non-solo", 3) var val = matter.TLV.parse(msg.raw, msg.app_payload_idx) return self.process_read_request(msg, val) end @@ -752,7 +752,7 @@ class Matter_IM raw.add(0x18, 1) # add 18 else - tasmota.log(f"MTR: >Read_Attr ({msg.session.local_session_id:6i}) {ctx} - IGNORED", 3) + log(f"MTR: >Read_Attr ({msg.session.local_session_id:6i}) {ctx} - IGNORED", 3) return false end @@ -765,7 +765,7 @@ class Matter_IM resp.encode_frame(raw, msg_raw) # payload in cleartext resp.encrypt() if tasmota.loglevel(4) - tasmota.log(format("MTR: Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) - # tasmota.log(f"MTR: {res.tlv2raw().tohex()}", 3) + log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) + # log(f"MTR: {res.tlv2raw().tohex()}", 3) end # if matter.profiler.active && tasmota.loglevel(3) - # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight + # log(f"MTR: {raw=}", 3) # TODO remove before flight # end elif ctx.status != nil var unsupported_attribute = (ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : "") if tasmota.loglevel(3) - tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - STATUS: 0x{ctx.status:02X} {unsupported_attribute}", 3) + log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - STATUS: 0x{ctx.status:02X} {unsupported_attribute}", 3) end # if matter.profiler.active && tasmota.loglevel(3) - # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight + # log(f"MTR: {raw=}", 3) # TODO remove before flight # end else if tasmota.loglevel(3) - tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - IGNORED", 3) + log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - IGNORED", 3) end end @@ -813,7 +813,7 @@ class Matter_IM self.subs_shop.remove_by_session(msg.session) # if `keep_subscriptions`, kill all subscriptions from current session end - # tasmota.log("MTR: received SubscribeRequestMessage=" + str(query), 3) + # log("MTR: received SubscribeRequestMessage=" + str(query), 3) var sub = self.subs_shop.new_subscription(msg.session, query) @@ -827,10 +827,10 @@ class Matter_IM ctx.attribute = q.attribute attr_req.push(str(ctx)) end - tasmota.log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s", + log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s", msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id, query.fabric_filtered), 3) if query.event_requests != nil && size(query.event_requests) > 0 - tasmota.log(f"MTR: >Subscribe ({msg.session.local_session_id:6i}) event_requests_size={size(query.event_requests)}", 3) + log(f"MTR: >Subscribe ({msg.session.local_session_id:6i}) event_requests_size={size(query.event_requests)}", 3) end var ret = self._inner_process_read_request(msg.session, query, msg, true #-no_log-#) @@ -849,7 +849,7 @@ class Matter_IM def process_invoke_request(msg, val) # import debug # structure is `ReadRequestMessage` 10.6.2 p.558 - # tasmota.log("MTR: IM:invoke_request processing start", 4) + # log("MTR: IM:invoke_request processing start", 4) matter.profiler.log("invoke_request_start") var ctx = matter.Path() ctx.msg = msg @@ -872,8 +872,8 @@ class Matter_IM var res = self.device.invoke_request(msg.session, q.command_fields, ctx) matter.profiler.log("COMMAND DONE") var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : "" - tasmota.log(format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3) - # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4) + log(format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3) + # log("MTR: Perf/Command = " + str(debug.counters()), 4) ctx.log = nil var raw = bytes(32) # var a1 = matter.InvokeResponseIB() @@ -882,7 +882,7 @@ class Matter_IM self.invokeresponse2raw(raw, ctx, nil) ret.invoke_responses.push(raw) if tasmota.loglevel(3) - tasmota.log(f"MTR: Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3) + log(format("MTR: >Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3) end - # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4) + # log("MTR: Perf/Command = " + str(debug.counters()), 4) ctx.log = nil var raw = bytes(48) @@ -948,24 +948,24 @@ class Matter_IM self.invokeresponse2raw(raw, ctx, nil) if tasmota.loglevel(3) - tasmota.log(f"MTR: Command (%6i) TimedRequest=%i", msg.session.local_session_id, query.timeout), 3) + log(format("MTR: >Command (%6i) TimedRequest=%i", msg.session.local_session_id, query.timeout), 3) # Send success status report self.send_status(msg, matter.SUCCESS) @@ -1159,7 +1159,7 @@ class Matter_IM fake_read.attributes_requests.push(p1) end - tasmota.log(format("MTR: >>>> send elements before encode") @@ -213,13 +213,13 @@ class Matter_IM_ReportData : Matter_IM_Message # print(">>>>> send elements after encode") resp.encrypt() # print(">>>>> send elements after encrypt") - # tasmota.log(format("MTR: 0 data.attribute_reports = next_elemnts - # tasmota.log(format("MTR: to_be_sent_later size=%i exch=%i", size(data.attribute_reports), resp.exchange_id), 4) + # log(format("MTR: to_be_sent_later size=%i exch=%i", size(data.attribute_reports), resp.exchange_id), 4) self.ready = false # wait for Status Report before continuing sending # keep alive else @@ -256,7 +256,7 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData # ack received, confirm the heartbeat def ack_received(msg) - # tasmota.log(format("MTR: IM_ReportDataSubscribed ack_received sub=%i", self.sub.subscription_id), 3) + # log(format("MTR: IM_ReportDataSubscribed ack_received sub=%i", self.sub.subscription_id), 3) super(self).ack_received(msg) if !self.report_data_phase # if ack is received while all data is sent, means that it finished without error @@ -271,14 +271,14 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData # we received an ACK error, remove subscription def status_error_received(msg) - # tasmota.log(format("MTR: IM_ReportDataSubscribed status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_ReportDataSubscribed status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) self.sub.remove_self() end # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # tasmota.log(format("MTR: IM_ReportDataSubscribed status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_ReportDataSubscribed status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) if self.report_data_phase return super(self).status_ok_received(msg) else @@ -291,13 +291,13 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData # returns true if transaction is complete (remove object from queue) # default responder for data def send_im(responder) - # tasmota.log(format("MTR: IM_ReportDataSubscribed send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) - # tasmota.log(format("MTR: ReportDataSubscribed::send_im size(self.data.attribute_reports)=%i ready=%s report_data_phase=%s", size(self.data.attribute_reports), str(self.ready), str(self.report_data_phase)), 3) + # log(format("MTR: IM_ReportDataSubscribed send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) + # log(format("MTR: ReportDataSubscribed::send_im size(self.data.attribute_reports)=%i ready=%s report_data_phase=%s", size(self.data.attribute_reports), str(self.ready), str(self.report_data_phase)), 3) if !self.ready return false end if size(self.data.attribute_reports) > 0 # do we have still attributes to send if self.report_data_phase super(self).send_im(responder) - # tasmota.log(format("MTR: ReportDataSubscribed::send_im called super finish=%i", self.finish), 3) + # log(format("MTR: ReportDataSubscribed::send_im called super finish=%i", self.finish), 3) if !self.finish return end # ReportData needs to continue # ReportData is finished self.report_data_phase = false @@ -309,7 +309,7 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData resp.encode_frame() resp.encrypt() if tasmota.loglevel(4) - tasmota.log(format("MTR: Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3) + log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3) end return super(self).status_ok_received(msg) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be index b9c67ae09..9181b3b02 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be @@ -81,12 +81,12 @@ class Matter_IM_Subscription self.clear_before_arm() self.is_keep_alive = false - # tasmota.log("MTR: new subsctiption " + matter.inspect(self), 3) + # log("MTR: new subsctiption " + matter.inspect(self), 3) end # remove self from subs_shop list def remove_self() - tasmota.log("MTR: -Sub_Del ( ) sub=" + str(self.subscription_id), 3) + log("MTR: -Sub_Del ( ) sub=" + str(self.subscription_id), 3) self.subs_shop.remove_sub(self) end @@ -103,7 +103,7 @@ class Matter_IM_Subscription self.expiration = now + (self.max_interval - self.MAX_INTERVAL_MARGIN) * 1000 self.not_before = now + self.min_interval * 1000 - 1 if !self.is_keep_alive - tasmota.log(format("MTR: .Sub_Done ( ) sub=%i", self.subscription_id), 3) + log(format("MTR: .Sub_Done ( ) sub=%i", self.subscription_id), 3) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be index f70d2f2b0..5a45b779f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be @@ -304,7 +304,7 @@ class Matter_Frame if resp.local_session_id == 0 var op_name = matter.get_opcode_name(resp.opcode) if !op_name op_name = format("0x%02X", resp.opcode) end - tasmota.log(format("MTR: >>>>>>>>>>>>>>>>>>> Compute Privacy TODO", 2) + log("MTR: >>>>>>>>>>>>>>>>>>>> Compute Privacy TODO", 2) var k = session.get_i2r_privacy() var mic = raw[-16..] # take last 16 bytes as signature var n = bytes().add(self.local_session_id, -2) + mic[5..15] # session in Big Endian @@ -387,13 +387,13 @@ class Matter_Frame n.resize(13) # add zeros end - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: raw =" + raw.tohex(), 4) - # tasmota.log("MTR: i2r =" + i2r.tohex(), 4) - # tasmota.log("MTR: p =" + raw[payload_idx .. -17].tohex(), 4) - # tasmota.log("MTR: a =" + raw[0 .. payload_idx - 1].tohex(), 4) - # tasmota.log("MTR: n =" + n.tohex(), 4) - # tasmota.log("MTR: mic =" + raw[-16..].tohex(), 4) + # log("MTR: ******************************", 4) + # log("MTR: raw =" + raw.tohex(), 4) + # log("MTR: i2r =" + i2r.tohex(), 4) + # log("MTR: p =" + raw[payload_idx .. -17].tohex(), 4) + # log("MTR: a =" + raw[0 .. payload_idx - 1].tohex(), 4) + # log("MTR: n =" + n.tohex(), 4) + # log("MTR: mic =" + raw[-16..].tohex(), 4) # decrypt var ret = crypto.AES_CCM.decrypt1(i2r, # secret key @@ -405,7 +405,7 @@ class Matter_Frame # succcess raw.resize(size(raw) - tag_len) # remove MIC else - tasmota.log("MTR: rejected packet due to invalid MIC", 3) + log("MTR: rejected packet due to invalid MIC", 3) end return ret end @@ -451,7 +451,7 @@ class Matter_Frame var r = matter.Frame(self.message_handler, raw) r.decode_header() r.decode_payload() - # tasmota.log("MTR: sending decode: " + matter.inspect(r), 4) + # log("MTR: sending decode: " + matter.inspect(r), 4) end end matter.Frame = Matter_Frame diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be index 63336e4f7..adff5a375 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be @@ -52,7 +52,7 @@ class Matter_MessageHandler var resp = frame.build_standalone_ack(reliable) resp.encode_frame() if tasmota.loglevel(4) - tasmota.log(format("MTR: Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3) + log(format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3) end else if tasmota.loglevel(4) - tasmota.log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4) + log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4) end end ret = self.commissioning.process_incoming(frame) @@ -141,14 +141,14 @@ class Matter_MessageHandler # encrypted message # matter.profiler.log("msg_received_header_encrypted_message_received") if tasmota.loglevel(4) - tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4) + log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4) end var session = self.device.sessions.get_session_by_local_session_id(frame.local_session_id) # matter.profiler.log("msg_received_header_session_retrieved") if session == nil - tasmota.log("MTR: unknown local_session_id="+str(frame.local_session_id), 3) - # tasmota.log("MTR: frame="+matter.inspect(frame), 3) + log("MTR: unknown local_session_id="+str(frame.local_session_id), 3) + # log("MTR: frame="+matter.inspect(frame), 3) return false end # matter.profiler.log("msg_received_session_found") @@ -160,7 +160,7 @@ class Matter_MessageHandler # check if it's a duplicate if !session.counter_rcv_validate(frame.message_counter, true) if tasmota.loglevel(3) - tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3) + log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3) end self.send_encrypted_ack(frame, false #-not reliable-#) return false @@ -173,14 +173,14 @@ class Matter_MessageHandler # matter.profiler.log("msg_received_payload_undecoded") # continue decoding - # tasmota.log(format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4) + # log(format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4) frame.decode_payload() # matter.profiler.log("msg_received_payload_decoded") if tasmota.loglevel(4) - tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4) + log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4) end - # tasmota.log(format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3) + # log(format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3) self.device.received_ack(frame) # remove acknowledge packet from sending list @@ -188,7 +188,7 @@ class Matter_MessageHandler var protocol_id = frame.protocol_id if protocol_id == 0x0000 # PROTOCOL_ID_SECURE_CHANNEL # it should not be encrypted - # tasmota.log("MTR: PROTOCOL_ID_SECURE_CHANNEL " + matter.inspect(frame), 3) + # log("MTR: PROTOCOL_ID_SECURE_CHANNEL " + matter.inspect(frame), 3) if frame.opcode == 0x10 # MRPStandaloneAcknowledgement ret = self.im.process_incoming_ack(frame) if ret @@ -212,21 +212,21 @@ class Matter_MessageHandler # -- PROTOCOL_ID_BDX is used for file transfer between devices, not used in Tasmota # elif protocol_id == 0x0002 # PROTOCOL_ID_BDX -- BDX not handled at all in Tasmota - # tasmota.log("MTR: PROTOCOL_ID_BDX not yet handled", 2) + # log("MTR: PROTOCOL_ID_BDX not yet handled", 2) # return false # ignore for now TODO # -- PROTOCOL_ID_USER_DIRECTED_COMMISSIONING is only used by devices, as a device we will not receive any # elif protocol_id == 0x0003 # PROTOCOL_ID_USER_DIRECTED_COMMISSIONING - # tasmota.log("MTR: PROTOCOL_ID_USER_DIRECTED_COMMISSIONING not yet handled", 2) + # log("MTR: PROTOCOL_ID_USER_DIRECTED_COMMISSIONING not yet handled", 2) # return false # ignore for now TODO else - tasmota.log("MTR: ignoring unhandled protocol_id:"+str(protocol_id), 3) + log("MTR: ignoring unhandled protocol_id:"+str(protocol_id), 3) end end return ret except .. as e, m - tasmota.log("MTR: MessageHandler::msg_received exception: "+str(e)+";"+str(m), 2) + log("MTR: MessageHandler::msg_received exception: "+str(e)+";"+str(m), 2) if tasmota._debug_present import debug debug.traceback() diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be index 8efaad8b7..e9834cff5 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be @@ -118,11 +118,7 @@ class Matter_Plugin_Device : Matter_Plugin if attribute == 0x0003 # ---------- ProductName / string ---------- if self.BRIDGE var name = self.http_remote.get_info().find("name") - if name - return tlv_solo.set(TLV.UTF1, name) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.UTF1, name) else return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) end @@ -147,11 +143,7 @@ class Matter_Plugin_Device : Matter_Plugin elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber / string ---------- if self.BRIDGE var mac = self.http_remote.get_info().find("mac") - if mac - return tlv_solo.set(TLV.UTF1, mac) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.UTF1, mac) else return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", "")) end @@ -325,7 +317,7 @@ class Matter_Plugin_Device : Matter_Plugin return j end retry -= 1 - tasmota.log("MTR: HTTP GET retrying", 3) + log("MTR: HTTP GET retrying", 3) end self.http_remote.device_is_alive(false) return nil diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index 086d335aa..d58b6436f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -94,13 +94,13 @@ class Matter_Plugin_Root : Matter_Plugin eth.add_TLV(2, TLV.BOOL, 1) # OffPremiseServicesReachableIPv4 eth.add_TLV(3, TLV.NULL, nil) # OffPremiseServicesReachableIPv6 var mac = bytes().fromhex(string.replace(tas_eth.find("mac", ""), ":", "")) - eth.add_TLV(4, TLV.B1, mac) # HardwareAddress - var ip4 = eth.add_array(5) # IPv4Addresses + eth.add_TLV(4, TLV.B1, mac) # HardwareAddress + var ip4 = eth.add_array(5) # IPv4Addresses ip4.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_eth.find("ip", ""))) - var ip6 = eth.add_array(6) # IPv6Addresses + var ip6 = eth.add_array(6) # IPv6Addresses ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_eth.find("ip6local", ""))) ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_eth.find("ip6", ""))) - eth.add_TLV(7, TLV.U1, 2) # InterfaceType, p646 + eth.add_TLV(7, TLV.U1, 2) # InterfaceType, p646 end var tas_wif = tasmota.wifi() @@ -111,13 +111,13 @@ class Matter_Plugin_Root : Matter_Plugin wif.add_TLV(2, TLV.BOOL, 1) # OffPremiseServicesReachableIPv4 wif.add_TLV(3, TLV.NULL, nil) # OffPremiseServicesReachableIPv6 var mac = bytes().fromhex(string.replace(tas_wif.find("mac", ""), ":", "")) - wif.add_TLV(4, TLV.B1, mac) # HardwareAddress - var ip4 = wif.add_array(5) # IPv4Addresses + wif.add_TLV(4, TLV.B1, mac) # HardwareAddress + var ip4 = wif.add_array(5) # IPv4Addresses ip4.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_wif.find("ip", ""))) - var ip6 = wif.add_array(6) # IPv6Addresses + var ip6 = wif.add_array(6) # IPv6Addresses ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_wif.find("ip6local", ""))) ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_wif.find("ip6", ""))) - wif.add_TLV(7, TLV.U1, 1) # InterfaceType, p646 + wif.add_TLV(7, TLV.U1, 1) # InterfaceType, p646 end return nwi elif attribute == 0x0001 # ---------- RebootCount u16 ---------- @@ -142,7 +142,7 @@ class Matter_Plugin_Root : Matter_Plugin return tlv_solo.set(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift) # TODO add some missing args elif attribute == 0x0007 # ---------- LocalTime / epoch_us ---------- - var epoch_us = int64(tasmota.rtc()['local']) * int64(1000000) + var epoch_us = int64(tasmota.rtc('local')) * int64(1000000) return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64() end @@ -201,16 +201,12 @@ class Matter_Plugin_Root : Matter_Plugin elif attribute == 0x0001 # ---------- AdminFabricIndex / u16 ---------- var admin_fabric = self.device.commissioning_admin_fabric if admin_fabric != nil - return tlv_solo.set(TLV.U2, admin_fabric.get_fabric_index()) - else - return tlv_solo.set(TLV.NULL, nil) + return tlv_solo.set_or_nil(TLV.U2, admin_fabric.get_fabric_index()) end elif attribute == 0x0002 # ---------- AdminVendorId / u16 ---------- var admin_fabric = self.device.commissioning_admin_fabric if admin_fabric != nil - return tlv_solo.set(TLV.U2, admin_fabric.get_admin_vendor()) - else - return tlv_solo.set(TLV.NULL, nil) + return tlv_solo.set_or_nil(TLV.U2, admin_fabric.get_admin_vendor()) end end @@ -426,7 +422,7 @@ class Matter_Plugin_Root : Matter_Plugin var ac = session.get_ac() var attestation_tbs = attestation_message + ac - # tasmota.log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 4) + # log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 4) var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), attestation_tbs) @@ -444,7 +440,7 @@ class Matter_Plugin_Root : Matter_Plugin var CSRNonce = val.findsubval(0) # octstr 32 if size(CSRNonce) != 32 return nil end # check size on nonce var IsForUpdateNOC = val.findsubval(1, false) # bool - # tasmota.log(format("MTR: CSRRequest CSRNonce=%s IsForUpdateNOC=%s", str(CSRNonce), str(IsForUpdateNOC)), 4) + # log(format("MTR: CSRRequest CSRNonce=%s IsForUpdateNOC=%s", str(CSRNonce), str(IsForUpdateNOC)), 4) var csr = session.gen_CSR() @@ -454,7 +450,7 @@ class Matter_Plugin_Root : Matter_Plugin var nocsr_elements_message = nocsr_elements.tlv2raw() # sign with attestation challenge var nocsr_tbs = nocsr_elements_message + session.get_ac() - # tasmota.log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 4) + # log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 4) var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), nocsr_tbs) # create CSRResponse @@ -470,12 +466,12 @@ class Matter_Plugin_Root : Matter_Plugin var RootCACertificate = val.findsubval(0) # octstr 400 max # TODO - additional tests are expected according to 11.17.7.13. AddTrustedRootCertificate Command session.set_temp_ca(RootCACertificate) - # tasmota.log("MTR: received ca_root="+RootCACertificate.tohex(), 4) + # log("MTR: received ca_root="+RootCACertificate.tohex(), 4) ctx.status = matter.SUCCESS # OK return nil # trigger a standalone ack elif command == 0x0006 # ---------- AddNOC ---------- - tasmota.log("MTR: AddNoc Args=" + str(val), 4) + log("MTR: AddNoc Args=" + str(val), 4) var NOCValue = val.findsubval(0) # octstr max 400 var ICACValue = val.findsubval(1) # octstr max 400 # Apple sends an empty ICAC instead of a missing attribute, fix this @@ -483,14 +479,14 @@ class Matter_Plugin_Root : Matter_Plugin var IpkValue = val.findsubval(2) # octstr max 16 var CaseAdminSubject = val.findsubval(3) var AdminVendorId = val.findsubval(4) - # tasmota.log("MTR: AddNoc NOCValue=" + (NOCValue ? NOCValue.tohex() : ""), 3) - # tasmota.log("MTR: AddNoc ICACValue=" + (ICACValue ? ICACValue.tohex() : ""), 3) - # tasmota.log("MTR: AddNoc IpkValue=" + str(IpkValue), 3) - # tasmota.log("MTR: AddNoc CaseAdminSubject=" + str(CaseAdminSubject), 3) - # tasmota.log("MTR: AddNoc AdminVendorId=" + str(AdminVendorId), 3) + # log("MTR: AddNoc NOCValue=" + (NOCValue ? NOCValue.tohex() : ""), 3) + # log("MTR: AddNoc ICACValue=" + (ICACValue ? ICACValue.tohex() : ""), 3) + # log("MTR: AddNoc IpkValue=" + str(IpkValue), 3) + # log("MTR: AddNoc CaseAdminSubject=" + str(CaseAdminSubject), 3) + # log("MTR: AddNoc AdminVendorId=" + str(AdminVendorId), 3) if session.get_temp_ca() == nil - tasmota.log("MTR: Error: AdNOC without CA", 2) + log("MTR: Error: AdNOC without CA", 2) return nil end @@ -506,23 +502,23 @@ class Matter_Plugin_Root : Matter_Plugin var dnlist = noc_cert.findsub(6) var fabric_id = dnlist.findsubval(21) var deviceid = dnlist.findsubval(17) - # tasmota.log("MTR: AddNoc noc_cert=" + str(noc_cert), 3) - # tasmota.log("MTR: AddNoc dnlist=" + str(dnlist), 3) + # log("MTR: AddNoc noc_cert=" + str(noc_cert), 3) + # log("MTR: AddNoc dnlist=" + str(dnlist), 3) if !fabric_id || !deviceid - tasmota.log("MTR: Error: no fabricid nor deviceid in NOC certificate", 2) + log("MTR: Error: no fabricid nor deviceid in NOC certificate", 2) return false end # convert fo bytes(8) if type(fabric_id) == 'int' fabric_id = int64.fromu32(fabric_id).tobytes() else fabric_id = fabric_id.tobytes() end if type(deviceid) == 'int' deviceid = int64.fromu32(deviceid).tobytes() else deviceid = deviceid.tobytes() end - # tasmota.log("MTR: AddNoc fabric_id=" + str(fabric_id), 3) - # tasmota.log("MTR: AddNoc deviceid=" + str(deviceid), 3) + # log("MTR: AddNoc fabric_id=" + str(fabric_id), 3) + # log("MTR: AddNoc deviceid=" + str(deviceid), 3) var root_ca_pub = session.get_temp_ca_pub() - # tasmota.log("MTR: AddNoc root_ca_pub=" + str(root_ca_pub), 3) - # tasmota.log("MTR: AddNoc root_ca_pub=" + root_ca_pub.tohex(), 3) + # log("MTR: AddNoc root_ca_pub=" + str(root_ca_pub), 3) + # log("MTR: AddNoc root_ca_pub=" + root_ca_pub.tohex(), 3) root_ca_pub = root_ca_pub[1..] # remove first byte as per Matter specification var info = bytes().fromstring("CompressedFabric") # as per spec, 4.3.2.2 p.99 var hk = crypto.HKDF_SHA256() @@ -531,7 +527,7 @@ class Matter_Plugin_Root : Matter_Plugin var parent_fabric = session._fabric ? session._fabric : self.device.commissioning_admin_fabric # get parent fabric whether CASE or PASE new_fabric.set_fabric_device(fabric_id, deviceid, k_fabric, parent_fabric) - # tasmota.log("MTR: AddNoc k_fabric=" + str(k_fabric), 3) + # log("MTR: AddNoc k_fabric=" + str(k_fabric), 3) # We have a candidate fabric, add it as expirable for 2 minutes new_fabric.fabric_candidate() @@ -543,10 +539,10 @@ class Matter_Plugin_Root : Matter_Plugin session.set_expire_in_seconds(60) end - # tasmota.log("MTR: ------------------------------------------", 3) - # tasmota.log("MTR: session=" + matter.inspect(session), 3) - # tasmota.log("MTR: fabric=" + matter.inspect(session._fabric), 3) - # tasmota.log("MTR: ------------------------------------------", 3) + # log("MTR: ------------------------------------------", 3) + # log("MTR: session=" + matter.inspect(session), 3) + # log("MTR: fabric=" + matter.inspect(session._fabric), 3) + # log("MTR: ------------------------------------------", 3) new_fabric.log_new_fabric() # log that we registered a new fabric new_fabric.assign_fabric_index() # create NOCResponse @@ -562,7 +558,7 @@ class Matter_Plugin_Root : Matter_Plugin elif command == 0x0009 # ---------- UpdateFabricLabel ---------- var label = val.findsubval(0) # Label string max 32 session.set_fabric_label(label) - tasmota.log(format("MTR: . Update fabric '%s' label='%s'", session._fabric.get_fabric_id().copy().reverse().tohex(), str(label)), 3) + log(format("MTR: . Update fabric '%s' label='%s'", session._fabric.get_fabric_id().copy().reverse().tohex(), str(label)), 3) # create NOCResponse # 0=StatusCode @@ -580,7 +576,7 @@ class Matter_Plugin_Root : Matter_Plugin for fab: self.device.sessions.active_fabrics() if fab.get_fabric_index() == index - # tasmota.log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2) + # log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2) # defer actual removal to send a response fab.mark_for_deletion() # this should not appear anymore in the list tasmota.set_timer(2000, def () self.device.remove_fabric(fab) end) @@ -596,7 +592,7 @@ class Matter_Plugin_Root : Matter_Plugin return nocr end end - tasmota.log("MTR: RemoveFabric fabric("+str(index)+") not found", 2) + log("MTR: RemoveFabric fabric("+str(index)+") not found", 2) ctx.status = matter.INVALID_ACTION return nil # trigger a standalone ack @@ -612,7 +608,7 @@ class Matter_Plugin_Root : Matter_Plugin var iterations = val.findsubval(3) # Iterations u4 var salt = val.findsubval(4) # Salt octstr - tasmota.log(format("MTR: OpenCommissioningWindow(timeout=%i, passcode=%s, discriminator=%i, iterations=%i, salt=%s)", + log(format("MTR: OpenCommissioningWindow(timeout=%i, passcode=%s, discriminator=%i, iterations=%i, salt=%s)", timeout, passcode_verifier.tohex(), discriminator, iterations, salt.tohex()), 4) # check values @@ -621,7 +617,7 @@ class Matter_Plugin_Root : Matter_Plugin return nil # trigger a standalone ack end if size(passcode_verifier) != 32+65 || size(salt) < 16 || size(salt) > 32 - tasmota.log("MTR: wrong size for PAKE parameters", 2) + log("MTR: wrong size for PAKE parameters", 2) ctx.status = matter.CONSTRAINT_ERROR return nil # trigger a standalone ack end @@ -634,7 +630,7 @@ class Matter_Plugin_Root : Matter_Plugin return true # OK elif command == 0x0001 # ---------- OpenBasicCommissioningWindow ---------- var commissioning_timeout = val.findsubval(0) # CommissioningTimeout - tasmota.log("MTR: OpenBasicCommissioningWindow commissioning_timeout="+str(commissioning_timeout), 3) + log("MTR: OpenBasicCommissioningWindow commissioning_timeout="+str(commissioning_timeout), 3) self.device.start_root_basic_commissioning(commissioning_timeout) return true elif command == 0x0002 # ---------- RevokeCommissioning ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be index 42af25401..b4f2e8371 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be @@ -135,11 +135,7 @@ class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device def handle_value(shadow_value, unit) if (unit == nil) unit = 0 end # default unit is `0` = PPM if attribute == 0x0000 # ---------- Measured­ Value / float ---------- - if shadow_value != nil - return tlv_solo.set(TLV.FLOAT, shadow_value) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.FLOAT, shadow_value) elif attribute == 0x0001 # ---------- MinMeasured Value / float ---------- return tlv_solo.set(TLV.NULL, nil) elif attribute == 0x0002 # ---------- MaxMeasured Value / float ---------- @@ -157,11 +153,7 @@ class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device # ==================================================================================================== if cluster == 0x005B # ========== Air Quality ========== if attribute == 0x0000 # ---------- AirQuality / U8 ---------- - if self.shadow_air_quality != nil - return tlv_solo.set(TLV.U1, self.shadow_air_quality) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.U1, self.shadow_air_quality) # elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- # return tlv_solo.set(TLV.U4, 0) # end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be index 026104263..9057ace50 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be @@ -87,11 +87,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device # ==================================================================================================== if cluster == 0x0045 # ========== Boolean State ========== if attribute == 0x0000 # ---------- StateValue / bool ---------- - if self.shadow_contact != nil - return tlv_solo.set(TLV.BOOL, self.shadow_contact) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.BOOL, self.shadow_contact) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be index 1a48ba716..f786bc82c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be @@ -87,11 +87,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device # ==================================================================================================== if cluster == 0x0406 # ========== Occupancy Sensing ========== if attribute == 0x0000 # ---------- Occupancy / U8 ---------- - if self.shadow_occupancy != nil - return tlv_solo.set(TLV.U1, self.shadow_occupancy) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.U1, self.shadow_occupancy) elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ---------- return tlv_solo.set(TLV.U1, 3) # physical contact elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be index 704b2a7b9..d0fadc4a2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be @@ -65,10 +65,10 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device if r_st13.contains('StatusSHT') r_st13 = r_st13['StatusSHT'] # skip root var d = r_st13.find("SHT"+str(self.tasmota_shutter_index), {}).find('Opt') - # tasmota.log("MTR: opt: "+str(d)) + # log("MTR: opt: "+str(d)) if d != nil self.shadow_shutter_inverted = int(d[size(d)-1]) # inverted is at the most right character - # tasmota.log("MTR: Inverted flag: "+str(self.shadow_shutter_inverted)) + # log("MTR: Inverted flag: "+str(self.shadow_shutter_inverted)) end end end @@ -162,7 +162,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device self.update_shadow() return true elif command == 0x0005 # ---------- GoToLiftPercentage ---------- - tasmota.log("MTR: Tilt = "+str(val), 2) + log("MTR: Tilt = "+str(val), 2) var pos_100 = val.findsubval(0) if pos_100 != nil pos_100 = pos_100 / 100 @@ -191,7 +191,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device var k = "Shutter" + str(self.tasmota_shutter_index + 1) if payload.contains(k) var v = payload[k] - # tasmota.log(format("MTR: getting shutter values(%i): %s", self.endpoint, str(v)), 2) + # log(format("MTR: getting shutter values(%i): %s", self.endpoint, str(v)), 2) # Position var val_pos = v.find("Position") if val_pos != nil diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be index cadf46b2b..1650cc7b2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be @@ -62,11 +62,7 @@ class Matter_Plugin_Sensor_Flow : Matter_Plugin_Sensor # ==================================================================================================== if cluster == 0x0404 # ========== Flow Measurement 2.4 p.98 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h. - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h. elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- return tlv_solo.set(TLV.U2, 0) # 0 m3/h elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be index 089a780ef..2dd873f11 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be @@ -62,11 +62,7 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor # ==================================================================================================== if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ========== if attribute == 0x0000 # ---------- Humidity / u16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.U2, int(self.shadow_value)) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.U2, int(self.shadow_value)) elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ---------- return tlv_solo.set(TLV.U2, 500) # 0% elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be index 943e7ade2..0c19a2a4e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be @@ -69,11 +69,7 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor # ==================================================================================================== if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.U2, int(self.shadow_value)) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.U2, int(self.shadow_value)) elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- return tlv_solo.set(TLV.U2, 1) # 1 lux elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be index 4eb020eb0..e3918d1d4 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be @@ -62,11 +62,7 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor # ==================================================================================================== if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.I2, int(self.shadow_value)) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.I2, int(self.shadow_value)) elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ---------- return tlv_solo.set(TLV.I2, 500) # 500 hPA elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be index aa114a25e..6a9ba5e4c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be @@ -73,11 +73,7 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor # ==================================================================================================== if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ========== if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ---------- - if self.shadow_value != nil - return tlv_solo.set(TLV.I2, self.shadow_value) - else - return tlv_solo.set(TLV.NULL, nil) - end + return tlv_solo.set_or_nil(TLV.I2, self.shadow_value) elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ---------- return tlv_solo.set(TLV.I2, -5000) # -50 °C elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be index fb9f1dd56..501458d55 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be @@ -80,14 +80,14 @@ class Matter_Profiler def dump(loglevel) if !self.active return end self.log("<--end-->") - tasmota.log("MTR: Profiler dump:", loglevel) + log("MTR: Profiler dump:", loglevel) var origin = self.millis[0] var allocs0 = self.allocs[0] var reallocs0 = self.reallocs[0] var idx = 1 while idx < self.len - # tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}|{self.reallocs[idx] - reallocs0:4i}]'{self.names[idx]}'", loglevel) - tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}]'{self.names[idx]}'", loglevel) + # log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}|{self.reallocs[idx] - reallocs0:4i}]'{self.names[idx]}'", loglevel) + log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}]'{self.names[idx]}'", loglevel) idx += 1 end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be index 2696d753a..db2d700e3 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be @@ -118,7 +118,7 @@ class Matter_Session : Matter_Expirable ############################################################# # Called before removal def before_remove() - tasmota.log(format("MTR: -Session (%6i) (removed)", self.local_session_id), 3) + log(format("MTR: -Session (%6i) (removed)", self.local_session_id), 3) end ############################################################# @@ -128,7 +128,7 @@ class Matter_Session : Matter_Expirable # def counter_snd_next() var next = self._counter_snd_impl.next() - # tasmota.log(format("MTR: . Counter_snd=%i", next), 4) + # log(format("MTR: . Counter_snd=%i", next), 4) if matter.Counter.is_greater(next, self.counter_snd) self.counter_snd = next + self._COUNTER_SND_INCR if self.does_persist() diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be index fb60595cb..473dc0dec 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be @@ -286,9 +286,9 @@ class Matter_Session_Store var sessions = self.sessions while i < size(sessions) var session = sessions[i] - tasmota.log(format("MTR: session.resumption_id=%s vs %s", str(session.resumption_id), str(resumption_id)), 4) + log(format("MTR: session.resumption_id=%s vs %s", str(session.resumption_id), str(resumption_id)), 4) if session.resumption_id == resumption_id && session.shared_secret != nil - # tasmota.log(format("MTR: session.shared_secret=%s", str(session.shared_secret)), 4) + # log(format("MTR: session.shared_secret=%s", str(session.shared_secret)), 4) session.update() return session end @@ -339,13 +339,13 @@ class Matter_Session_Store # saving went well, now remove previous version and rename path.remove(self._FABRICS) if (path.rename(self._FABRICS_TEMP, self._FABRICS)) - tasmota.log(f"MTR: =Saved {fabrics_saved} fabric(s) and {sessions_saved} session(s)", 2) + log(f"MTR: =Saved {fabrics_saved} fabric(s) and {sessions_saved} session(s)", 2) self.device.event_fabrics_saved() # signal event else - tasmota.log(f"MTR: Saving Fabrics failed", 2) + log(f"MTR: Saving Fabrics failed", 2) end except .. as e, m - tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2) + log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2) end end @@ -386,10 +386,10 @@ class Matter_Session_Store self.fabrics.push(fabric) end - tasmota.log(format("MTR: Loaded %i fabric(s)", size(self.fabrics)), 2) + log(format("MTR: Loaded %i fabric(s)", size(self.fabrics)), 2) except .. as e, m if e != "io_error" - tasmota.log("MTR: Session_Store::load Exception:" + str(e) + "|" + str(m), 2) + log("MTR: Session_Store::load Exception:" + str(e) + "|" + str(m), 2) end end # persistables are normally not expiring diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be b/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be index ed13b725c..b46fd4653 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be @@ -81,7 +81,7 @@ class Matter_TCP_async end return true else - tasmota.log(format("BRY: failed to resolve [%s]:%i", self.addr, self.port), 3) + log(format("BRY: failed to resolve [%s]:%i", self.addr, self.port), 3) self.close() self.status = -1 self.tcp_connected = false diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be index a48e4cbef..ab14e4a0e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be @@ -275,9 +275,9 @@ class Matter_TLV elif item_type == TLV.NULL # null # do nothing elif item_type == TLV.EOC - tasmota.log("MTR: unexpected eoc", 3) + log("MTR: unexpected eoc", 3) else - tasmota.log("MTR: unexpected type: " + str(item_type), 3) + log("MTR: unexpected type: " + str(item_type), 3) end self.next_idx = idx return idx diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be index 62bc065c8..63d95004c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be @@ -135,9 +135,9 @@ class Matter_UDPServer var from_addr = self.udp_socket.remote_ip var from_port = self.udp_socket.remote_port if tasmota.loglevel(4) - tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4) + log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4) end - # tasmota.log("MTR: Perf/UDP_received = " + str(debug.counters()), 4) + # log("MTR: Perf/UDP_received = " + str(debug.counters()), 4) if self.dispatch_cb profiler.log("udp_loop_dispatch") self.dispatch_cb(packet, from_addr, from_port) @@ -165,11 +165,11 @@ class Matter_UDPServer if ok if tasmota.loglevel(4) - tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4) + log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4) end else if tasmota.loglevel(3) - tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3) + log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3) end end return ok @@ -190,14 +190,14 @@ class Matter_UDPServer var packet = self.packets_sent[idx] if tasmota.time_reached(packet.next_try) if packet.retries <= self.RETRIES - tasmota.log("MTR: . Resending packet id=" + str(packet.msg_id), 4) + log("MTR: . Resending packet id=" + str(packet.msg_id), 4) self.send(packet) packet.next_try = tasmota.millis() + self._backoff_time(packet.retries) packet.retries += 1 idx += 1 else self.packets_sent.remove(idx) - tasmota.log(format("MTR: . (%6i) Unacked packet '[%s]:%i' msg_id=%i", packet.session_id, packet.addr, packet.port, packet.msg_id), 3) + log(format("MTR: . (%6i) Unacked packet '[%s]:%i' msg_id=%i", packet.session_id, packet.addr, packet.port, packet.msg_id), 3) end else idx += 1 @@ -211,14 +211,14 @@ class Matter_UDPServer var id = msg.ack_message_counter var exch = msg.exchange_id if id == nil return end - # tasmota.log("MTR: receveived ACK id="+str(id), 4) + # log("MTR: receveived ACK id="+str(id), 4) var idx = 0 while idx < size(self.packets_sent) var packet = self.packets_sent[idx] if packet.msg_id == id && packet.exchange_id == exch self.packets_sent.remove(idx) if tasmota.loglevel(4) - tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4) + log("MTR: . Removed packet from sending list id=" + str(id), 4) end else idx += 1 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index 0b31305b9..b0c291de1 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -368,7 +368,7 @@ class Matter_UI end end self.device.sort_distinct(remotes) - # tasmota.log("MTR: remotes: "+str(remotes), 4) + # log("MTR: remotes: "+str(remotes), 4) for remote: remotes @@ -642,7 +642,7 @@ class Matter_UI end if status10 != nil && status11 != nil - tasmota.log(format("MTR: probed '%s' status10=%s satus11=%s", url, str(status10), str(status11)), 3) + log(format("MTR: probed '%s' status10=%s satus11=%s", url, str(status10), str(status11)), 3) var config_list = self.generate_config_from_status(status10, status11) @@ -752,14 +752,14 @@ class Matter_UI # debug information about parameters # for i:0..webserver.arg_size()-1 - # tasmota.log(format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i))) + # log(format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i))) # end #---------------------------------------------------------------------# # Change Passcode and/or Passcode #---------------------------------------------------------------------# if webserver.has_arg("passcode") || webserver.has_arg("discriminator") - tasmota.log(format("MTR: /matterc received '%s' command", 'passcode'), 3) + log(format("MTR: /matterc received '%s' command", 'passcode'), 3) if webserver.has_arg("passcode") self.device.root_passcode = int(webserver.arg("passcode")) end @@ -783,10 +783,10 @@ class Matter_UI if matter_enabled_requested != self.matter_enabled() if matter_enabled_requested - tasmota.log(format("MTR: /matterc received '%s' command", 'enable'), 3) + log(format("MTR: /matterc received '%s' command", 'enable'), 3) tasmota.cmd("SetOption" + str(matter.MATTER_OPTION) + " 1") else - tasmota.log(format("MTR: /matterc received '%s' command", 'disable'), 3) + log(format("MTR: /matterc received '%s' command", 'disable'), 3) tasmota.cmd("SetOption" + str(matter.MATTER_OPTION) + " 0") end #- and force restart -# @@ -808,7 +808,7 @@ class Matter_UI # Delete Fabric #---------------------------------------------------------------------# elif webserver.has_arg("del_fabric") - tasmota.log(format("MTR: /matterc received '%s' command", 'del_fabric'), 3) + log(format("MTR: /matterc received '%s' command", 'del_fabric'), 3) var del_fabric = int(webserver.arg("del_fabric")) var idx = 0 var fabrics = self.device.sessions.fabrics @@ -827,7 +827,7 @@ class Matter_UI # Reset to default auto-configuration #---------------------------------------------------------------------# elif webserver.has_arg("auto") - tasmota.log(format("MTR: /matterc received '%s' command", 'auto'), 3) + log(format("MTR: /matterc received '%s' command", 'auto'), 3) self.device.plugins_persist = false self.device.save_param() #- and force restart -# @@ -837,7 +837,7 @@ class Matter_UI # Apply new configuration template #---------------------------------------------------------------------# elif webserver.has_arg("config") - tasmota.log(format("MTR: /matterc received '%s' command", 'config'), 3) + log(format("MTR: /matterc received '%s' command", 'config'), 3) var needs_saving = false # iterate by endpoint number for i:0..webserver.arg_size()-1 @@ -851,25 +851,25 @@ class Matter_UI if conf_ep != nil # found var typ_class = self.device.plugins_classes.find(conf_ep.find('type', '')) if typ_class != nil - tasmota.log(format("MTR: ep=%i arg=%s", arg_ep, arg), 3) + log(format("MTR: ep=%i arg=%s", arg_ep, arg), 3) # compute the actual value var prev_arg = typ_class.ui_conf_to_string(typ_class, conf_ep) var changed = (prev_arg != arg) - tasmota.log(format("MTR: ep=%i prev_arg='%s' arg='%s' %s", arg_ep, prev_arg, arg, prev_arg != arg ? "changed" : ""), 3) + log(format("MTR: ep=%i prev_arg='%s' arg='%s' %s", arg_ep, prev_arg, arg, prev_arg != arg ? "changed" : ""), 3) if changed needs_saving = true typ_class.ui_string_to_conf(typ_class, conf_ep, arg) var pl = self.device.find_plugin_by_endpoint(arg_ep) if pl - tasmota.log(format("MTR: apply conf '%s' (%i) to %s", conf_ep, arg_ep, pl), 3) + log(format("MTR: apply conf '%s' (%i) to %s", conf_ep, arg_ep, pl), 3) pl.parse_configuration(conf_ep) end end end else - tasmota.log(format("MTR: ep=%i not found", arg_ep), 3) + log(format("MTR: ep=%i not found", arg_ep), 3) end elif string.find(arg_name, "nam") == 0 # 'nam' with i being the endpoint var nam_ep = int(arg_name[3..]) # target endpoint as int @@ -891,7 +891,7 @@ class Matter_UI else conf_ep.remove('name') end - tasmota.log(format("MTR: apply name '%s' (%i) to %s", conf_ep, nam_ep, pl), 3) + log(format("MTR: apply name '%s' (%i) to %s", conf_ep, nam_ep, pl), 3) pl.parse_configuration(conf_ep) end end @@ -899,10 +899,10 @@ class Matter_UI end end - tasmota.log(format("MTR: config = %s", str(self.device.plugins_config)), 3) + log(format("MTR: config = %s", str(self.device.plugins_config)), 3) if error - tasmota.log(format("MTR: config error = %s", error), 3) + log(format("MTR: config error = %s", error), 3) else if needs_saving || !self.device.plugins_persist self.device.plugins_persist = true @@ -918,7 +918,7 @@ class Matter_UI var typ = webserver.arg('pi') var arg = webserver.arg('arg') var nam = webserver.arg('nam') - tasmota.log(format("MTR: add endpoint typ='%s' arg='%s'", typ, arg), 3) + log(format("MTR: add endpoint typ='%s' arg='%s'", typ, arg), 3) # check if type exists var typ_class = self.device.plugins_classes.find(typ) @@ -958,12 +958,12 @@ class Matter_UI # check if configuration is already present var duplicate = false for c: self.device.plugins_config # iterate on values, not on keys() - # tasmota.log(format("MTR: map_compare '%s' ?= '%s' -> %s", str(c), str(config), str(self.equal_map(c,config))), 3) + # log(format("MTR: map_compare '%s' ?= '%s' -> %s", str(c), str(config), str(self.equal_map(c,config))), 3) if self.equal_map(c,config) duplicate = true break end end # not a duplicate, add it if !duplicate - tasmota.log(format("MTR: remote add url='%s' type='%s' arg='%s'", url, typ, arg), 3) + log(format("MTR: remote add url='%s' type='%s' arg='%s'", url, typ, arg), 3) self.device.bridge_add_endpoint(typ, config) end end @@ -1004,7 +1004,7 @@ class Matter_UI end except .. as e, m - tasmota.log(format("BRY: Exception> '%s' - %s", e, m), 2) + log(format("BRY: Exception> '%s' - %s", e, m), 2) #- display error page -# webserver.content_start("Parameter error") #- title of the web page -# webserver.content_send_style() #- send standard Tasmota styles -# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 799d75e8e..7ef4ded6a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -162,7 +162,7 @@ class Matter_Device # show Manual pairing code in logs var pairing_code = self.compute_manual_pairing_code() - tasmota.log(format("MTR: Manual pairing code: %s", pairing_code), 2) + log(format("MTR: Manual pairing code: %s", pairing_code), 2) # output MQTT var qr_code = self.compute_qrcode_content() @@ -177,7 +177,7 @@ class Matter_Device # Remove a fabric and clean all corresponding values and mDNS entries def remove_fabric(fabric) if fabric != nil - tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2) + log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2) self.message_handler.im.subs_shop.remove_by_fabric(fabric) self.mdns_remove_op_discovery(fabric) self.sessions.remove_fabric(fabric) @@ -187,7 +187,7 @@ class Matter_Device # for fabric_index : sub_fabrics # var fabric = self.sessions.find_fabric_by_index(fabric_index) # if fabric != nil - # tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2) + # log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2) # self.message_handler.im.subs_shop.remove_by_fabric(fabric) # self.mdns_remove_op_discovery(fabric) # self.sessions.remove_fabric(fabric) @@ -266,12 +266,12 @@ class Matter_Device # self.root_w1 = crypto.EC_P256().mod(w1s) self.root_L = crypto.EC_P256().public_key(w1) - # tasmota.log("MTR: ******************************", 4) - # tasmota.log("MTR: salt = " + self.root_salt.tohex(), 4) - # tasmota.log("MTR: passcode_hex = " + passcode.tohex(), 4) - # tasmota.log("MTR: w0 = " + self.root_w0.tohex(), 4) - # tasmota.log("MTR: L = " + self.root_L.tohex(), 4) - # tasmota.log("MTR: ******************************", 4) + # log("MTR: ******************************", 4) + # log("MTR: salt = " + self.root_salt.tohex(), 4) + # log("MTR: passcode_hex = " + passcode.tohex(), 4) + # log("MTR: w0 = " + self.root_w0.tohex(), 4) + # log("MTR: L = " + self.root_L.tohex(), 4) + # log("MTR: ******************************", 4) end ############################################################# @@ -356,7 +356,7 @@ class Matter_Device import json var rs_json = tasmota.read_sensors() if tasmota.loglevel(3) - tasmota.log("MTR: read_sensors: "+str(rs_json), 3) + log("MTR: read_sensors: "+str(rs_json), 3) end if rs_json == nil return end var rs = json.load(rs_json) @@ -370,7 +370,7 @@ class Matter_Device end else - tasmota.log("MTR: unable to parse read_sensors: "+str(rs_json), 3) + log("MTR: unable to parse read_sensors: "+str(rs_json), 3) end end @@ -413,7 +413,7 @@ class Matter_Device def _start_udp(port) if self.udp_server return end # already started if port == nil port = 5540 end - tasmota.log("MTR: Starting UDP server on port: " + str(port), 2) + log("MTR: Starting UDP server on port: " + str(port), 2) self.udp_server = matter.UDPServer(self, "", port) self.udp_server.start(/ raw, addr, port -> self.msg_received(raw, addr, port)) end @@ -462,7 +462,7 @@ class Matter_Device var fabric = session.get_fabric() var fabric_id = fabric.get_fabric_id().copy().reverse().tohex() var vendor_name = fabric.get_admin_vendor_name() - tasmota.log(f"MTR: --- Commissioning complete for Fabric '{fabric_id}' (Vendor {vendor_name}) ---", 2) + log(f"MTR: --- Commissioning complete for Fabric '{fabric_id}' (Vendor {vendor_name}) ---", 2) self.stop_basic_commissioning() # by default close commissioning when it's complete end @@ -532,7 +532,7 @@ class Matter_Device var direct = (ctx.endpoint != nil) && (ctx.cluster != nil) && (ctx.attribute != nil) # true if the target is a precise attribute, false if it results from an expansion and error are ignored - # tasmota.log(f"MTR: process_attribute_expansion {str(ctx))}", 4) + # log(f"MTR: process_attribute_expansion {str(ctx))}", 4) # build the generator for all endpoint/cluster/attributes candidates var path_generator = matter.PathGenerator(self) @@ -662,10 +662,10 @@ class Matter_Device var f = open(self.FILENAME, "w") f.write(j) f.close() - tasmota.log(format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 2) + log(format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 2) return j except .. as e, m - tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2) + log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2) return j end end @@ -718,18 +718,18 @@ class Matter_Device self.next_ep = j.find("nextep", self.next_ep) self.plugins_config = j.find("config") if self.plugins_config != nil - tasmota.log(f"MTR: Load_config = {self.plugins_config}", 3) + log(f"MTR: Load_config = {self.plugins_config}", 3) self.adjust_next_ep() dirty = self.check_config_ep() self.plugins_persist = true end self.plugins_config_remotes = j.find("remotes", {}) if self.plugins_config_remotes - tasmota.log("MTR: load_remotes = " + str(self.plugins_config_remotes), 3) + log("MTR: load_remotes = " + str(self.plugins_config_remotes), 3) end except .. as e, m if e != "io_error" - tasmota.log("MTR: load_param Exception:" + str(e) + "|" + str(m), 2) + log("MTR: load_param Exception:" + str(e) + "|" + str(m), 2) end end @@ -763,35 +763,35 @@ class Matter_Device # {'32': {'filter': 'AXP192#Temperature', 'type': 'temperature'}, '40': {'filter': 'BMP280#Pressure', 'type': 'pressure'}, '34': {'filter': 'SHT3X#Temperature', 'type': 'temperature'}, '33': {'filter': 'BMP280#Temperature', 'type': 'temperature'}, '1': {'relay': 0, 'type': 'relay'}, '56': {'filter': 'SHT3X#Humidity', 'type': 'humidity'}, '0': {'type': 'root'}} def _instantiate_plugins_from_config(config) var endpoints = self.k2l_num(config) - # tasmota.log("MTR: endpoints to be configured "+str(endpoints), 4) - tasmota.log("MTR: Configuring endpoints", 2) + # log("MTR: endpoints to be configured "+str(endpoints), 4) + log("MTR: Configuring endpoints", 2) # start with mandatory endpoint 0 for root node self.plugins.push(matter.Plugin_Root(self, 0, {})) - tasmota.log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2) + log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2) # always include an aggregator for dynamic endpoints self.plugins.push(matter.Plugin_Aggregator(self, matter.AGGREGATOR_ENDPOINT, {})) - tasmota.log(format("MTR: endpoint = %5i type:%s%s", matter.AGGREGATOR_ENDPOINT, 'aggregator', ''), 2) + log(format("MTR: endpoint = %5i type:%s%s", matter.AGGREGATOR_ENDPOINT, 'aggregator', ''), 2) for ep: endpoints if ep == 0 continue end # skip endpoint 0 try var plugin_conf = config[str(ep)] - # tasmota.log(format("MTR: endpoint %i config %s", ep, plugin_conf), 3) + # log(format("MTR: endpoint %i config %s", ep, plugin_conf), 3) var pi_class_name = plugin_conf.find('type') - if pi_class_name == nil tasmota.log("MTR: no class name, skipping", 3) continue end - if pi_class_name == 'root' tasmota.log("MTR: only one root node allowed", 3) continue end + if pi_class_name == nil log("MTR: no class name, skipping", 3) continue end + if pi_class_name == 'root' log("MTR: only one root node allowed", 3) continue end var pi_class = self.plugins_classes.find(pi_class_name) - if pi_class == nil tasmota.log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 2) continue end + if pi_class == nil log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 2) continue end var pi = pi_class(self, ep, plugin_conf) self.plugins.push(pi) - tasmota.log(format("MTR: endpoint = %5i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2) + log(format("MTR: endpoint = %5i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2) except .. as e, m - tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2) + log("MTR: Exception" + str(e) + "|" + str(m), 2) end end @@ -863,26 +863,26 @@ class Matter_Device var eth = tasmota.eth() self.hostname_eth = string.replace(eth.find("mac"), ':', '') if !self.ipv4only || !eth.contains('ip6local') - # tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 4) + # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 4) mdns.add_hostname(self.hostname_eth, eth.find('ip6local',''), eth.find('ip',''), eth.find('ip6','')) else - tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, eth.find('ip','')), 3) + log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, eth.find('ip','')), 3) mdns.add_hostname(self.hostname_eth, eth.find('ip','')) end else var wifi = tasmota.wifi() self.hostname_wifi = string.replace(wifi.find("mac"), ':', '') if !self.ipv4only || !wifi.contains('ip6local') - # tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 4) + # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 4) mdns.add_hostname(self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip',''), wifi.find('ip6','')) else - tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_wifi, wifi.find('ip','')), 3) + log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_wifi, wifi.find('ip','')), 3) mdns.add_hostname(self.hostname_wifi, wifi.find('ip','')) end end - tasmota.log(format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 3) + log(format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 3) except .. as e, m - tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2) + log("MTR: Exception" + str(e) + "|" + str(m), 2) end self.mdns_announce_op_discovery_all_fabrics() @@ -908,50 +908,50 @@ class Matter_Device try if self.hostname_eth # Add Matter `_matterc._udp` service - # tasmota.log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 4) + # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 4) mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_eth, self.hostname_eth) self.mdns_pase_eth = true - tasmota.log(format("MTR: announce mDNS on %s '%s' ptr to `%s.local`", "eth", self.commissioning_instance_eth, self.hostname_eth), 2) + log(format("MTR: announce mDNS on %s '%s' ptr to `%s.local`", "eth", self.commissioning_instance_eth, self.hostname_eth), 2) # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil` var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF) - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) subtype = "_V" + str(self.vendorid) - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) subtype = "_CM1" - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) end if self.hostname_wifi - # tasmota.log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 4) + # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 4) mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_wifi, self.hostname_wifi) self.mdns_pase_wifi = true - tasmota.log(format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 3) + log(format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 3) # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil` var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF) - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) subtype = "_V" + str(self.vendorid) - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) subtype = "_CM1" - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) end except .. as e, m - tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2) + log("MTR: Exception" + str(e) + "|" + str(m), 2) end end @@ -963,19 +963,19 @@ class Matter_Device try if self.mdns_pase_eth - tasmota.log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth), 3) - tasmota.log(format("MTR: remove mDNS on %s '%s'", "eth", self.commissioning_instance_eth), 3) + log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth), 3) + log(format("MTR: remove mDNS on %s '%s'", "eth", self.commissioning_instance_eth), 3) self.mdns_pase_eth = false mdns.remove_service("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth) end if self.mdns_pase_wifi - tasmota.log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi), 3) - tasmota.log(format("MTR: remove mDNS on %s '%s'", "wifi", self.commissioning_instance_wifi), 3) + log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi), 3) + log(format("MTR: remove mDNS on %s '%s'", "wifi", self.commissioning_instance_wifi), 3) self.mdns_pase_wifi = false mdns.remove_service("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi) end except .. as e, m - tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2) + log("MTR: Exception" + str(e) + "|" + str(m), 2) end end @@ -997,25 +997,25 @@ class Matter_Device var device_id = fabric.get_device_id().copy().reverse() var k_fabric = fabric.get_fabric_compressed() var op_node = k_fabric.tohex() + "-" + device_id.tohex() - tasmota.log("MTR: Operational Discovery node = " + op_node, 3) + log("MTR: Operational Discovery node = " + op_node, 3) # mdns if (tasmota.eth().find("up")) - tasmota.log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "eth", op_node, self.hostname_eth), 3) + log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "eth", op_node, self.hostname_eth), 3) mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_eth) var subtype = "_I" + k_fabric.tohex() - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_eth, subtype) end if (tasmota.wifi().find("up")) - tasmota.log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "wifi", op_node, self.hostname_wifi), 3) + log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "wifi", op_node, self.hostname_wifi), 3) mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_wifi) var subtype = "_I" + k_fabric.tohex() - tasmota.log("MTR: adding subtype: "+subtype, 3) + log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_wifi, subtype) end except .. as e, m - tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2) + log("MTR: Exception" + str(e) + "|" + str(m), 2) end end @@ -1040,15 +1040,15 @@ class Matter_Device # mdns if (tasmota.eth().find("up")) - tasmota.log(format("MTR: remove mDNS on %s '%s'", "eth", op_node), 3) + log(format("MTR: remove mDNS on %s '%s'", "eth", op_node), 3) mdns.remove_service("_matter", "_tcp", op_node, self.hostname_eth) end if (tasmota.wifi().find("up")) - tasmota.log(format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 3) + log(format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 3) mdns.remove_service("_matter", "_tcp", op_node, self.hostname_wifi) end except .. as e, m - tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2) + log("MTR: Exception" + str(e) + "|" + str(m), 2) end end @@ -1075,7 +1075,7 @@ class Matter_Device self.plugins_config = self.autoconf_device_map() self.plugins_config_remotes = {} self.adjust_next_ep() - tasmota.log("MTR: autoconfig = " + str(self.plugins_config), 3) + log("MTR: autoconfig = " + str(self.plugins_config), 3) end self._instantiate_plugins_from_config(self.plugins_config) @@ -1117,7 +1117,7 @@ class Matter_Device # handle shutters before relays (as we steal relays for shutters) var r_st13 = tasmota.cmd("Status 13", true) # issue `Status 13` var relays_reserved = [] # list of relays that are used for non-relay (shutters) - tasmota.log("MTR: Status 13 = "+str(r_st13), 3) + log("MTR: Status 13 = "+str(r_st13), 3) if r_st13 != nil && r_st13.contains('StatusSHT') r_st13 = r_st13['StatusSHT'] # skip root @@ -1127,14 +1127,14 @@ class Matter_Device var k = 'SHT' + str(idx) # SHT is zero based if !r_st13.contains(k) break end # no more SHTxxx var d = r_st13[k] - tasmota.log(format("MTR: '%s' = %s", k, str(d)), 3) + log(format("MTR: '%s' = %s", k, str(d)), 3) var relay1 = d.find('Relay1', -1) # relay base 1 or -1 if none var relay2 = d.find('Relay2', -1) # relay base 1 or -1 if none if relay1 > 0 relays_reserved.push(relay1 - 1) end # mark relay1/2 as non-relays if relay2 > 0 relays_reserved.push(relay2 - 1) end - tasmota.log(f"MTR: {relay1=} {relay2=}", 3) + log(f"MTR: {relay1=} {relay2=}", 3) # is there tilt support var tilt_array = d.find('TiltConfig') var tilt_config = tilt_array && (tilt_array[2] > 0) @@ -1258,7 +1258,7 @@ class Matter_Device # returns endpoint number newly allocated, or `nil` if failed def bridge_add_endpoint(pi_class_name, plugin_conf) var pi_class = self.plugins_classes.find(pi_class_name) - if pi_class == nil tasmota.log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 3) return end + if pi_class == nil log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 3) return end # get the next allocated endpoint number var ep = self.next_ep @@ -1275,7 +1275,7 @@ class Matter_Device pi_conf[k] = plugin_conf[k] end # add to main - tasmota.log(format("MTR: adding endpoint = %i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2) + log(format("MTR: adding endpoint = %i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2) self.plugins_config[ep_str] = pi_conf self.plugins_persist = true self.next_ep += 1 # increment next allocated endpoint before saving @@ -1298,10 +1298,10 @@ class Matter_Device var f_in if !self.plugins_config.contains(ep_str) - tasmota.log("MTR: Cannot remove an enpoint not configured: " + ep_str, 3) + log("MTR: Cannot remove an enpoint not configured: " + ep_str, 3) return end - tasmota.log(format("MTR: deleting endpoint = %i", ep), 2) + log(format("MTR: deleting endpoint = %i", ep), 2) self.plugins_config.remove(ep_str) self.plugins_persist = true @@ -1344,12 +1344,12 @@ class Matter_Device for k: self.plugins_config.keys() keys.push(int(k)) end for ep: keys if ep == 0 - tasmota.log("MTR: invalid entry with ep '0'", 2) + log("MTR: invalid entry with ep '0'", 2) self.plugins_config.remove(str(ep)) dirty = true elif ep == matter.AGGREGATOR_ENDPOINT dirty = true - tasmota.log(f"MTR: endpoint {ep} collides wit aggregator, relocating to {self.next_ep}", 2) + log(f"MTR: endpoint {ep} collides wit aggregator, relocating to {self.next_ep}", 2) self.plugins_config[str(self.next_ep)] = self.plugins_config[str(ep)] self.plugins_config.remove(str(ep)) self.next_ep += 1 @@ -1450,7 +1450,7 @@ class Matter_Device # print("remotes_map2", remotes_map) - # tasmota.log("MTR: remotes references: " + str(remotes_map), 3) + # log("MTR: remotes references: " + str(remotes_map), 3) var remote_to_remove = [] # we first get the list of remotes to remove, to not interfere with map iterator for remote:remotes_map.keys() @@ -1460,7 +1460,7 @@ class Matter_Device end for remote: remote_to_remove - tasmota.log("MTR: remove unused remote: " + remote.addr, 3) + log("MTR: remove unused remote: " + remote.addr, 3) remote.close() self.http_remotes.remove(remote.addr) end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index 7223b049f..2582429b2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -12,7 +12,7 @@ extern const bclass be_class_Matter_Commisioning_Context; extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -20,34 +20,32 @@ be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_const_int(2147483647), - /* K7 */ be_nested_str_weak(tohex), - /* K8 */ be_const_int(3), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20), + /* K3 */ be_nested_str_weak(raw), + /* K4 */ be_nested_str_weak(app_payload_idx), + /* K5 */ be_const_int(2147483647), + /* K6 */ be_nested_str_weak(tohex), + /* K7 */ be_const_int(3), }), be_str_weak(parse_StatusReport), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ + ( &(const binstruction[13]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x88140305, // 0003 GETMBR R5 R1 K5 - 0x40140B06, // 0004 CONNECT R5 R5 K6 - 0x88180304, // 0005 GETMBR R6 R1 K4 - 0x94140C05, // 0006 GETIDX R5 R6 R5 - 0x8C140B07, // 0007 GETMET R5 R5 K7 - 0x7C140200, // 0008 CALL R5 1 - 0x00160605, // 0009 ADD R5 K3 R5 - 0x58180008, // 000A LDCONST R6 K8 - 0x7C0C0600, // 000B CALL R3 3 - 0x500C0000, // 000C LDBOOL R3 0 0 - 0x80040600, // 000D RET 1 R3 + 0x88100304, // 0002 GETMBR R4 R1 K4 + 0x40100905, // 0003 CONNECT R4 R4 K5 + 0x88140303, // 0004 GETMBR R5 R1 K3 + 0x94100A04, // 0005 GETIDX R4 R5 R4 + 0x8C100906, // 0006 GETMET R4 R4 K6 + 0x7C100200, // 0007 CALL R4 1 + 0x00120404, // 0008 ADD R4 K2 R4 + 0x58140007, // 0009 LDCONST R5 K7 + 0x7C0C0400, // 000A CALL R3 2 + 0x500C0000, // 000B LDBOOL R3 0 0 + 0x80040600, // 000C RET 1 R3 }) ) ); @@ -60,7 +58,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id, /* name */ be_nested_proto( - 14, /* nstack */ + 13, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -91,80 +89,78 @@ be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id }), be_str_weak(find_fabric_by_destination_id), &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ + ( &(const binstruction[71]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xB8120200, // 0001 GETNGBL R4 K1 0x8C100902, // 0002 GETMET R4 R4 K2 0x541A0003, // 0003 LDINT R6 4 0x7C100400, // 0004 CALL R4 2 - 0x78120006, // 0005 JMPF R4 #000D - 0xB8120200, // 0006 GETNGBL R4 K1 - 0x8C100903, // 0007 GETMET R4 R4 K3 - 0x8C180305, // 0008 GETMET R6 R1 K5 - 0x7C180200, // 0009 CALL R6 1 - 0x001A0806, // 000A ADD R6 K4 R6 - 0x541E0003, // 000B LDINT R7 4 - 0x7C100600, // 000C CALL R4 3 - 0x60100010, // 000D GETGBL R4 G16 - 0x88140106, // 000E GETMBR R5 R0 K6 - 0x88140B07, // 000F GETMBR R5 R5 K7 - 0x88140B08, // 0010 GETMBR R5 R5 K8 - 0x7C100200, // 0011 CALL R4 1 - 0xA8020030, // 0012 EXBLK 0 #0044 - 0x5C140800, // 0013 MOVE R5 R4 - 0x7C140000, // 0014 CALL R5 0 - 0x88180B09, // 0015 GETMBR R6 R5 K9 - 0x4C1C0000, // 0016 LDNIL R7 - 0x1C180C07, // 0017 EQ R6 R6 R7 - 0x741A0007, // 0018 JMPT R6 #0021 - 0x88180B0A, // 0019 GETMBR R6 R5 K10 - 0x4C1C0000, // 001A LDNIL R7 - 0x1C180C07, // 001B EQ R6 R6 R7 - 0x741A0003, // 001C JMPT R6 #0021 - 0x88180B0B, // 001D GETMBR R6 R5 K11 - 0x4C1C0000, // 001E LDNIL R7 - 0x1C180C07, // 001F EQ R6 R6 R7 - 0x781A0000, // 0020 JMPF R6 #0022 - 0x7001FFF0, // 0021 JMP #0013 - 0x8C180B0C, // 0022 GETMET R6 R5 K12 - 0x7C180200, // 0023 CALL R6 1 - 0x00180406, // 0024 ADD R6 R2 R6 - 0x881C0B0A, // 0025 GETMBR R7 R5 K10 - 0x00180C07, // 0026 ADD R6 R6 R7 - 0x881C0B0B, // 0027 GETMBR R7 R5 K11 - 0x00180C07, // 0028 ADD R6 R6 R7 - 0x8C1C0B0D, // 0029 GETMET R7 R5 K13 - 0x7C1C0200, // 002A CALL R7 1 - 0x8C20070E, // 002B GETMET R8 R3 K14 - 0x5C280E00, // 002C MOVE R10 R7 - 0x7C200400, // 002D CALL R8 2 - 0x8C24110F, // 002E GETMET R9 R8 K15 - 0x5C2C0C00, // 002F MOVE R11 R6 - 0x7C240400, // 0030 CALL R9 2 - 0x8C241110, // 0031 GETMET R9 R8 K16 - 0x7C240200, // 0032 CALL R9 1 - 0xB82A0200, // 0033 GETNGBL R10 K1 - 0x8C281502, // 0034 GETMET R10 R10 K2 - 0x54320003, // 0035 LDINT R12 4 - 0x7C280400, // 0036 CALL R10 2 - 0x782A0006, // 0037 JMPF R10 #003F - 0xB82A0200, // 0038 GETNGBL R10 K1 - 0x8C281503, // 0039 GETMET R10 R10 K3 - 0x8C301305, // 003A GETMET R12 R9 K5 - 0x7C300200, // 003B CALL R12 1 - 0x0032220C, // 003C ADD R12 K17 R12 - 0x54360003, // 003D LDINT R13 4 - 0x7C280600, // 003E CALL R10 3 - 0x1C281201, // 003F EQ R10 R9 R1 - 0x782A0001, // 0040 JMPF R10 #0043 - 0xA8040001, // 0041 EXBLK 1 1 - 0x80040A00, // 0042 RET 1 R5 - 0x7001FFCE, // 0043 JMP #0013 - 0x58100012, // 0044 LDCONST R4 K18 - 0xAC100200, // 0045 CATCH R4 1 0 - 0xB0080000, // 0046 RAISE 2 R0 R0 - 0x4C100000, // 0047 LDNIL R4 - 0x80040800, // 0048 RET 1 R4 + 0x78120005, // 0005 JMPF R4 #000C + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x8C140305, // 0007 GETMET R5 R1 K5 + 0x7C140200, // 0008 CALL R5 1 + 0x00160805, // 0009 ADD R5 K4 R5 + 0x541A0003, // 000A LDINT R6 4 + 0x7C100400, // 000B CALL R4 2 + 0x60100010, // 000C GETGBL R4 G16 + 0x88140106, // 000D GETMBR R5 R0 K6 + 0x88140B07, // 000E GETMBR R5 R5 K7 + 0x88140B08, // 000F GETMBR R5 R5 K8 + 0x7C100200, // 0010 CALL R4 1 + 0xA802002F, // 0011 EXBLK 0 #0042 + 0x5C140800, // 0012 MOVE R5 R4 + 0x7C140000, // 0013 CALL R5 0 + 0x88180B09, // 0014 GETMBR R6 R5 K9 + 0x4C1C0000, // 0015 LDNIL R7 + 0x1C180C07, // 0016 EQ R6 R6 R7 + 0x741A0007, // 0017 JMPT R6 #0020 + 0x88180B0A, // 0018 GETMBR R6 R5 K10 + 0x4C1C0000, // 0019 LDNIL R7 + 0x1C180C07, // 001A EQ R6 R6 R7 + 0x741A0003, // 001B JMPT R6 #0020 + 0x88180B0B, // 001C GETMBR R6 R5 K11 + 0x4C1C0000, // 001D LDNIL R7 + 0x1C180C07, // 001E EQ R6 R6 R7 + 0x781A0000, // 001F JMPF R6 #0021 + 0x7001FFF0, // 0020 JMP #0012 + 0x8C180B0C, // 0021 GETMET R6 R5 K12 + 0x7C180200, // 0022 CALL R6 1 + 0x00180406, // 0023 ADD R6 R2 R6 + 0x881C0B0A, // 0024 GETMBR R7 R5 K10 + 0x00180C07, // 0025 ADD R6 R6 R7 + 0x881C0B0B, // 0026 GETMBR R7 R5 K11 + 0x00180C07, // 0027 ADD R6 R6 R7 + 0x8C1C0B0D, // 0028 GETMET R7 R5 K13 + 0x7C1C0200, // 0029 CALL R7 1 + 0x8C20070E, // 002A GETMET R8 R3 K14 + 0x5C280E00, // 002B MOVE R10 R7 + 0x7C200400, // 002C CALL R8 2 + 0x8C24110F, // 002D GETMET R9 R8 K15 + 0x5C2C0C00, // 002E MOVE R11 R6 + 0x7C240400, // 002F CALL R9 2 + 0x8C241110, // 0030 GETMET R9 R8 K16 + 0x7C240200, // 0031 CALL R9 1 + 0xB82A0200, // 0032 GETNGBL R10 K1 + 0x8C281502, // 0033 GETMET R10 R10 K2 + 0x54320003, // 0034 LDINT R12 4 + 0x7C280400, // 0035 CALL R10 2 + 0x782A0005, // 0036 JMPF R10 #003D + 0xB82A0600, // 0037 GETNGBL R10 K3 + 0x8C2C1305, // 0038 GETMET R11 R9 K5 + 0x7C2C0200, // 0039 CALL R11 1 + 0x002E220B, // 003A ADD R11 K17 R11 + 0x54320003, // 003B LDINT R12 4 + 0x7C280400, // 003C CALL R10 2 + 0x1C281201, // 003D EQ R10 R9 R1 + 0x782A0001, // 003E JMPF R10 #0041 + 0xA8040001, // 003F EXBLK 1 1 + 0x80040A00, // 0040 RET 1 R5 + 0x7001FFCF, // 0041 JMP #0012 + 0x58100012, // 0042 LDCONST R4 K18 + 0xAC100200, // 0043 CATCH R4 1 0 + 0xB0080000, // 0044 RAISE 2 R0 R0 + 0x4C100000, // 0045 LDNIL R4 + 0x80040800, // 0046 RET 1 R4 }) ) ); @@ -210,39 +206,37 @@ be_local_closure(class_Matter_Commisioning_Context_add_session, /* name */ 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i), - /* K3 */ be_nested_str_weak(device), - /* K4 */ be_nested_str_weak(sessions), - /* K5 */ be_nested_str_weak(create_session), - /* K6 */ be_nested_str_weak(set_keys), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i), + /* K2 */ be_nested_str_weak(device), + /* K3 */ be_nested_str_weak(sessions), + /* K4 */ be_nested_str_weak(create_session), + /* K5 */ be_nested_str_weak(set_keys), }), be_str_weak(add_session), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ + ( &(const binstruction[20]) { /* code */ 0xB81A0000, // 0000 GETNGBL R6 K0 - 0x8C180D01, // 0001 GETMET R6 R6 K1 - 0x60200018, // 0002 GETGBL R8 G24 - 0x58240002, // 0003 LDCONST R9 K2 - 0x5C280200, // 0004 MOVE R10 R1 - 0x5C2C0400, // 0005 MOVE R11 R2 - 0x7C200600, // 0006 CALL R8 3 - 0x54260003, // 0007 LDINT R9 4 - 0x7C180600, // 0008 CALL R6 3 - 0x88180103, // 0009 GETMBR R6 R0 K3 - 0x88180D04, // 000A GETMBR R6 R6 K4 - 0x8C180D05, // 000B GETMET R6 R6 K5 - 0x5C200200, // 000C MOVE R8 R1 - 0x5C240400, // 000D MOVE R9 R2 - 0x7C180600, // 000E CALL R6 3 - 0x8C1C0D06, // 000F GETMET R7 R6 K6 - 0x5C240600, // 0010 MOVE R9 R3 - 0x5C280800, // 0011 MOVE R10 R4 - 0x5C2C0A00, // 0012 MOVE R11 R5 - 0x7C1C0800, // 0013 CALL R7 4 - 0x80000000, // 0014 RET 0 + 0x601C0018, // 0001 GETGBL R7 G24 + 0x58200001, // 0002 LDCONST R8 K1 + 0x5C240200, // 0003 MOVE R9 R1 + 0x5C280400, // 0004 MOVE R10 R2 + 0x7C1C0600, // 0005 CALL R7 3 + 0x54220003, // 0006 LDINT R8 4 + 0x7C180400, // 0007 CALL R6 2 + 0x88180102, // 0008 GETMBR R6 R0 K2 + 0x88180D03, // 0009 GETMBR R6 R6 K3 + 0x8C180D04, // 000A GETMET R6 R6 K4 + 0x5C200200, // 000B MOVE R8 R1 + 0x5C240400, // 000C MOVE R9 R2 + 0x7C180600, // 000D CALL R6 3 + 0x8C1C0D05, // 000E GETMET R7 R6 K5 + 0x5C240600, // 000F MOVE R9 R3 + 0x5C280800, // 0010 MOVE R10 R4 + 0x5C2C0A00, // 0011 MOVE R11 R5 + 0x7C1C0800, // 0012 CALL R7 4 + 0x80000000, // 0013 RET 0 }) ) ); @@ -263,59 +257,58 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[48]) { /* constants */ + ( &(const bvalue[47]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(opcode), /* K3 */ be_nested_str_weak(local_session_id), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(send_status_report), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(matter), - /* K15 */ be_nested_str_weak(PBKDFParamRequest), - /* K16 */ be_nested_str_weak(parse), - /* K17 */ be_nested_str_weak(raw), - /* K18 */ be_nested_str_weak(app_payload_idx), - /* K19 */ be_nested_str_weak(set_mode_PASE), - /* K20 */ be_nested_str_weak(__Msg1), - /* K21 */ be_const_int(2147483647), - /* K22 */ be_nested_str_weak(passcodeId), - /* K23 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id), - /* K24 */ be_nested_str_weak(__future_initiator_session_id), - /* K25 */ be_nested_str_weak(initiator_session_id), - /* K26 */ be_nested_str_weak(__future_local_session_id), - /* K27 */ be_nested_str_weak(device), - /* K28 */ be_nested_str_weak(sessions), - /* K29 */ be_nested_str_weak(gen_local_session_id), - /* K30 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K31 */ be_nested_str_weak(remote_ip), - /* K32 */ be_nested_str_weak(remote_port), - /* K33 */ be_nested_str_weak(PBKDFParamResponse), - /* K34 */ be_nested_str_weak(initiatorRandom), - /* K35 */ be_nested_str_weak(responderRandom), - /* K36 */ be_nested_str_weak(random), - /* K37 */ be_nested_str_weak(responderSessionId), - /* K38 */ be_nested_str_weak(pbkdf_parameters_salt), - /* K39 */ be_nested_str_weak(commissioning_salt), - /* K40 */ be_nested_str_weak(pbkdf_parameters_iterations), - /* K41 */ be_nested_str_weak(commissioning_iterations), - /* K42 */ be_nested_str_weak(tlv2raw), - /* K43 */ be_nested_str_weak(__Msg2), - /* K44 */ be_nested_str_weak(build_response), - /* K45 */ be_nested_str_weak(encode_frame), - /* K46 */ be_nested_str_weak(responder), - /* K47 */ be_nested_str_weak(send_response_frame), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(send_status_report), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(matter), + /* K14 */ be_nested_str_weak(PBKDFParamRequest), + /* K15 */ be_nested_str_weak(parse), + /* K16 */ be_nested_str_weak(raw), + /* K17 */ be_nested_str_weak(app_payload_idx), + /* K18 */ be_nested_str_weak(set_mode_PASE), + /* K19 */ be_nested_str_weak(__Msg1), + /* K20 */ be_const_int(2147483647), + /* K21 */ be_nested_str_weak(passcodeId), + /* K22 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id), + /* K23 */ be_nested_str_weak(__future_initiator_session_id), + /* K24 */ be_nested_str_weak(initiator_session_id), + /* K25 */ be_nested_str_weak(__future_local_session_id), + /* K26 */ be_nested_str_weak(device), + /* K27 */ be_nested_str_weak(sessions), + /* K28 */ be_nested_str_weak(gen_local_session_id), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K30 */ be_nested_str_weak(remote_ip), + /* K31 */ be_nested_str_weak(remote_port), + /* K32 */ be_nested_str_weak(PBKDFParamResponse), + /* K33 */ be_nested_str_weak(initiatorRandom), + /* K34 */ be_nested_str_weak(responderRandom), + /* K35 */ be_nested_str_weak(random), + /* K36 */ be_nested_str_weak(responderSessionId), + /* K37 */ be_nested_str_weak(pbkdf_parameters_salt), + /* K38 */ be_nested_str_weak(commissioning_salt), + /* K39 */ be_nested_str_weak(pbkdf_parameters_iterations), + /* K40 */ be_nested_str_weak(commissioning_iterations), + /* K41 */ be_nested_str_weak(tlv2raw), + /* K42 */ be_nested_str_weak(__Msg2), + /* K43 */ be_nested_str_weak(build_response), + /* K44 */ be_nested_str_weak(encode_frame), + /* K45 */ be_nested_str_weak(responder), + /* K46 */ be_nested_str_weak(send_response_frame), }), be_str_weak(parse_PBKDFParamRequest), &be_const_str_solidified, - ( &(const binstruction[118]) { /* code */ + ( &(const binstruction[113]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -327,113 +320,108 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* 0x74120002, // 0008 JMPT R4 #000C 0x88100305, // 0009 GETMBR R4 R1 K5 0x20100904, // 000A NE R4 R4 K4 - 0x78120012, // 000B JMPF R4 #001F + 0x78120010, // 000B JMPF R4 #001D 0xB8120C00, // 000C GETNGBL R4 K6 - 0x8C100907, // 000D GETMET R4 R4 K7 + 0x58140007, // 000D LDCONST R5 K7 0x58180008, // 000E LDCONST R6 K8 - 0x581C0009, // 000F LDCONST R7 K9 - 0x7C100600, // 0010 CALL R4 3 - 0xB8120C00, // 0011 GETNGBL R4 K6 - 0x8C100907, // 0012 GETMET R4 R4 K7 - 0x5818000A, // 0013 LDCONST R6 K10 - 0x581C000B, // 0014 LDCONST R7 K11 - 0x7C100600, // 0015 CALL R4 3 - 0x8C10010C, // 0016 GETMET R4 R0 K12 - 0x5C180200, // 0017 MOVE R6 R1 - 0x581C000D, // 0018 LDCONST R7 K13 - 0x58200004, // 0019 LDCONST R8 K4 - 0x58240009, // 001A LDCONST R9 K9 - 0x50280000, // 001B LDBOOL R10 0 0 - 0x7C100C00, // 001C CALL R4 6 - 0x50100000, // 001D LDBOOL R4 0 0 - 0x80040800, // 001E RET 1 R4 - 0xB8121C00, // 001F GETNGBL R4 K14 + 0x7C100400, // 000F CALL R4 2 + 0xB8120C00, // 0010 GETNGBL R4 K6 + 0x58140009, // 0011 LDCONST R5 K9 + 0x5818000A, // 0012 LDCONST R6 K10 + 0x7C100400, // 0013 CALL R4 2 + 0x8C10010B, // 0014 GETMET R4 R0 K11 + 0x5C180200, // 0015 MOVE R6 R1 + 0x581C000C, // 0016 LDCONST R7 K12 + 0x58200004, // 0017 LDCONST R8 K4 + 0x58240008, // 0018 LDCONST R9 K8 + 0x50280000, // 0019 LDBOOL R10 0 0 + 0x7C100C00, // 001A CALL R4 6 + 0x50100000, // 001B LDBOOL R4 0 0 + 0x80040800, // 001C RET 1 R4 + 0xB8121A00, // 001D GETNGBL R4 K13 + 0x8C10090E, // 001E GETMET R4 R4 K14 + 0x7C100200, // 001F CALL R4 1 0x8C10090F, // 0020 GETMET R4 R4 K15 - 0x7C100200, // 0021 CALL R4 1 - 0x8C100910, // 0022 GETMET R4 R4 K16 - 0x88180311, // 0023 GETMBR R6 R1 K17 - 0x881C0312, // 0024 GETMBR R7 R1 K18 - 0x7C100600, // 0025 CALL R4 3 - 0x88140301, // 0026 GETMBR R5 R1 K1 - 0x8C140B13, // 0027 GETMET R5 R5 K19 - 0x7C140200, // 0028 CALL R5 1 - 0x88140312, // 0029 GETMBR R5 R1 K18 - 0x40140B15, // 002A CONNECT R5 R5 K21 - 0x88180311, // 002B GETMBR R6 R1 K17 - 0x94140C05, // 002C GETIDX R5 R6 R5 - 0x900E2805, // 002D SETMBR R3 K20 R5 - 0x88140916, // 002E GETMBR R5 R4 K22 - 0x20140B04, // 002F NE R5 R5 K4 - 0x78160012, // 0030 JMPF R5 #0044 - 0xB8160C00, // 0031 GETNGBL R5 K6 - 0x8C140B07, // 0032 GETMET R5 R5 K7 - 0x581C0017, // 0033 LDCONST R7 K23 - 0x58200009, // 0034 LDCONST R8 K9 - 0x7C140600, // 0035 CALL R5 3 - 0xB8160C00, // 0036 GETNGBL R5 K6 - 0x8C140B07, // 0037 GETMET R5 R5 K7 - 0x581C000A, // 0038 LDCONST R7 K10 - 0x5820000B, // 0039 LDCONST R8 K11 - 0x7C140600, // 003A CALL R5 3 - 0x8C14010C, // 003B GETMET R5 R0 K12 - 0x5C1C0200, // 003C MOVE R7 R1 - 0x5820000D, // 003D LDCONST R8 K13 - 0x58240004, // 003E LDCONST R9 K4 - 0x58280009, // 003F LDCONST R10 K9 - 0x502C0000, // 0040 LDBOOL R11 0 0 - 0x7C140C00, // 0041 CALL R5 6 - 0x50140000, // 0042 LDBOOL R5 0 0 - 0x80040A00, // 0043 RET 1 R5 - 0x88140919, // 0044 GETMBR R5 R4 K25 - 0x900E3005, // 0045 SETMBR R3 K24 R5 - 0x8814011B, // 0046 GETMBR R5 R0 K27 - 0x88140B1C, // 0047 GETMBR R5 R5 K28 - 0x8C140B1D, // 0048 GETMET R5 R5 K29 - 0x7C140200, // 0049 CALL R5 1 - 0x900E3405, // 004A SETMBR R3 K26 R5 - 0xB8160C00, // 004B GETNGBL R5 K6 - 0x8C140B07, // 004C GETMET R5 R5 K7 - 0x601C0018, // 004D GETGBL R7 G24 - 0x5820001E, // 004E LDCONST R8 K30 - 0x8824071A, // 004F GETMBR R9 R3 K26 - 0x8828031F, // 0050 GETMBR R10 R1 K31 - 0x882C0320, // 0051 GETMBR R11 R1 K32 - 0x7C1C0800, // 0052 CALL R7 4 - 0x5820000B, // 0053 LDCONST R8 K11 - 0x7C140600, // 0054 CALL R5 3 - 0xB8161C00, // 0055 GETNGBL R5 K14 - 0x8C140B21, // 0056 GETMET R5 R5 K33 - 0x7C140200, // 0057 CALL R5 1 - 0x88180922, // 0058 GETMBR R6 R4 K34 - 0x90164406, // 0059 SETMBR R5 K34 R6 - 0x8C180524, // 005A GETMET R6 R2 K36 - 0x5422001F, // 005B LDINT R8 32 - 0x7C180400, // 005C CALL R6 2 - 0x90164606, // 005D SETMBR R5 K35 R6 - 0x8818071A, // 005E GETMBR R6 R3 K26 - 0x90164A06, // 005F SETMBR R5 K37 R6 - 0x8818011B, // 0060 GETMBR R6 R0 K27 - 0x88180D27, // 0061 GETMBR R6 R6 K39 - 0x90164C06, // 0062 SETMBR R5 K38 R6 - 0x8818011B, // 0063 GETMBR R6 R0 K27 - 0x88180D29, // 0064 GETMBR R6 R6 K41 - 0x90165006, // 0065 SETMBR R5 K40 R6 - 0x8C180B2A, // 0066 GETMET R6 R5 K42 - 0x7C180200, // 0067 CALL R6 1 - 0x900E5606, // 0068 SETMBR R3 K43 R6 - 0x8C1C032C, // 0069 GETMET R7 R1 K44 - 0x54260020, // 006A LDINT R9 33 - 0x50280200, // 006B LDBOOL R10 1 0 - 0x7C1C0600, // 006C CALL R7 3 - 0x8C200F2D, // 006D GETMET R8 R7 K45 - 0x5C280C00, // 006E MOVE R10 R6 - 0x7C200400, // 006F CALL R8 2 - 0x8824012E, // 0070 GETMBR R9 R0 K46 - 0x8C24132F, // 0071 GETMET R9 R9 K47 - 0x5C2C0E00, // 0072 MOVE R11 R7 - 0x7C240400, // 0073 CALL R9 2 - 0x50240200, // 0074 LDBOOL R9 1 0 - 0x80041200, // 0075 RET 1 R9 + 0x88180310, // 0021 GETMBR R6 R1 K16 + 0x881C0311, // 0022 GETMBR R7 R1 K17 + 0x7C100600, // 0023 CALL R4 3 + 0x88140301, // 0024 GETMBR R5 R1 K1 + 0x8C140B12, // 0025 GETMET R5 R5 K18 + 0x7C140200, // 0026 CALL R5 1 + 0x88140311, // 0027 GETMBR R5 R1 K17 + 0x40140B14, // 0028 CONNECT R5 R5 K20 + 0x88180310, // 0029 GETMBR R6 R1 K16 + 0x94140C05, // 002A GETIDX R5 R6 R5 + 0x900E2605, // 002B SETMBR R3 K19 R5 + 0x88140915, // 002C GETMBR R5 R4 K21 + 0x20140B04, // 002D NE R5 R5 K4 + 0x78160010, // 002E JMPF R5 #0040 + 0xB8160C00, // 002F GETNGBL R5 K6 + 0x58180016, // 0030 LDCONST R6 K22 + 0x581C0008, // 0031 LDCONST R7 K8 + 0x7C140400, // 0032 CALL R5 2 + 0xB8160C00, // 0033 GETNGBL R5 K6 + 0x58180009, // 0034 LDCONST R6 K9 + 0x581C000A, // 0035 LDCONST R7 K10 + 0x7C140400, // 0036 CALL R5 2 + 0x8C14010B, // 0037 GETMET R5 R0 K11 + 0x5C1C0200, // 0038 MOVE R7 R1 + 0x5820000C, // 0039 LDCONST R8 K12 + 0x58240004, // 003A LDCONST R9 K4 + 0x58280008, // 003B LDCONST R10 K8 + 0x502C0000, // 003C LDBOOL R11 0 0 + 0x7C140C00, // 003D CALL R5 6 + 0x50140000, // 003E LDBOOL R5 0 0 + 0x80040A00, // 003F RET 1 R5 + 0x88140918, // 0040 GETMBR R5 R4 K24 + 0x900E2E05, // 0041 SETMBR R3 K23 R5 + 0x8814011A, // 0042 GETMBR R5 R0 K26 + 0x88140B1B, // 0043 GETMBR R5 R5 K27 + 0x8C140B1C, // 0044 GETMET R5 R5 K28 + 0x7C140200, // 0045 CALL R5 1 + 0x900E3205, // 0046 SETMBR R3 K25 R5 + 0xB8160C00, // 0047 GETNGBL R5 K6 + 0x60180018, // 0048 GETGBL R6 G24 + 0x581C001D, // 0049 LDCONST R7 K29 + 0x88200719, // 004A GETMBR R8 R3 K25 + 0x8824031E, // 004B GETMBR R9 R1 K30 + 0x8828031F, // 004C GETMBR R10 R1 K31 + 0x7C180800, // 004D CALL R6 4 + 0x581C000A, // 004E LDCONST R7 K10 + 0x7C140400, // 004F CALL R5 2 + 0xB8161A00, // 0050 GETNGBL R5 K13 + 0x8C140B20, // 0051 GETMET R5 R5 K32 + 0x7C140200, // 0052 CALL R5 1 + 0x88180921, // 0053 GETMBR R6 R4 K33 + 0x90164206, // 0054 SETMBR R5 K33 R6 + 0x8C180523, // 0055 GETMET R6 R2 K35 + 0x5422001F, // 0056 LDINT R8 32 + 0x7C180400, // 0057 CALL R6 2 + 0x90164406, // 0058 SETMBR R5 K34 R6 + 0x88180719, // 0059 GETMBR R6 R3 K25 + 0x90164806, // 005A SETMBR R5 K36 R6 + 0x8818011A, // 005B GETMBR R6 R0 K26 + 0x88180D26, // 005C GETMBR R6 R6 K38 + 0x90164A06, // 005D SETMBR R5 K37 R6 + 0x8818011A, // 005E GETMBR R6 R0 K26 + 0x88180D28, // 005F GETMBR R6 R6 K40 + 0x90164E06, // 0060 SETMBR R5 K39 R6 + 0x8C180B29, // 0061 GETMET R6 R5 K41 + 0x7C180200, // 0062 CALL R6 1 + 0x900E5406, // 0063 SETMBR R3 K42 R6 + 0x8C1C032B, // 0064 GETMET R7 R1 K43 + 0x54260020, // 0065 LDINT R9 33 + 0x50280200, // 0066 LDBOOL R10 1 0 + 0x7C1C0600, // 0067 CALL R7 3 + 0x8C200F2C, // 0068 GETMET R8 R7 K44 + 0x5C280C00, // 0069 MOVE R10 R6 + 0x7C200400, // 006A CALL R8 2 + 0x8824012D, // 006B GETMBR R9 R0 K45 + 0x8C24132E, // 006C GETMET R9 R9 K46 + 0x5C2C0E00, // 006D MOVE R11 R7 + 0x7C240400, // 006E CALL R9 2 + 0x50240200, // 006F LDBOOL R9 1 0 + 0x80041200, // 0070 RET 1 R9 }) ) ); @@ -503,7 +491,7 @@ be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ be_nested_proto( - 21, /* nstack */ + 20, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -511,63 +499,62 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[52]) { /* constants */ + ( &(const bvalue[51]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(opcode), /* K3 */ be_nested_str_weak(local_session_id), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K11 */ be_nested_str_weak(send_status_report), - /* K12 */ be_const_int(1), - /* K13 */ be_const_int(2), - /* K14 */ be_nested_str_weak(matter), - /* K15 */ be_nested_str_weak(Pake1), - /* K16 */ be_nested_str_weak(parse), - /* K17 */ be_nested_str_weak(raw), - /* K18 */ be_nested_str_weak(app_payload_idx), - /* K19 */ be_nested_str_weak(pA), - /* K20 */ be_nested_str_weak(SPAKE2P_Matter), - /* K21 */ be_nested_str_weak(device), - /* K22 */ be_nested_str_weak(commissioning_w0), - /* K23 */ be_nested_str_weak(commissioning_L), - /* K24 */ be_nested_str_weak(random), - /* K25 */ be_nested_str_weak(compute_pB), - /* K26 */ be_nested_str_weak(compute_ZV_verifier), - /* K27 */ be_nested_str_weak(SHA256), - /* K28 */ be_nested_str_weak(update), - /* K29 */ be_nested_str_weak(fromstring), - /* K30 */ be_nested_str_weak(Matter_Context_Prefix), - /* K31 */ be_nested_str_weak(__Msg1), - /* K32 */ be_nested_str_weak(__Msg2), - /* K33 */ be_nested_str_weak(out), - /* K34 */ be_nested_str_weak(set_context), - /* K35 */ be_nested_str_weak(compute_TT_hash), - /* K36 */ be_nested_str_weak(Pake2), - /* K37 */ be_nested_str_weak(pB), - /* K38 */ be_nested_str_weak(cB), - /* K39 */ be_nested_str_weak(tlv2raw), - /* K40 */ be_nested_str_weak(__spake_cA), - /* K41 */ be_nested_str_weak(cA), - /* K42 */ be_nested_str_weak(__spake_Ke), - /* K43 */ be_nested_str_weak(Ke), - /* K44 */ be_nested_str_weak(build_response), - /* K45 */ be_nested_str_weak(encode_frame), - /* K46 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K47 */ be_nested_str_weak(__future_local_session_id), - /* K48 */ be_nested_str_weak(_ip), - /* K49 */ be_nested_str_weak(_port), - /* K50 */ be_nested_str_weak(responder), - /* K51 */ be_nested_str_weak(send_response_frame), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), + /* K10 */ be_nested_str_weak(send_status_report), + /* K11 */ be_const_int(1), + /* K12 */ be_const_int(2), + /* K13 */ be_nested_str_weak(matter), + /* K14 */ be_nested_str_weak(Pake1), + /* K15 */ be_nested_str_weak(parse), + /* K16 */ be_nested_str_weak(raw), + /* K17 */ be_nested_str_weak(app_payload_idx), + /* K18 */ be_nested_str_weak(pA), + /* K19 */ be_nested_str_weak(SPAKE2P_Matter), + /* K20 */ be_nested_str_weak(device), + /* K21 */ be_nested_str_weak(commissioning_w0), + /* K22 */ be_nested_str_weak(commissioning_L), + /* K23 */ be_nested_str_weak(random), + /* K24 */ be_nested_str_weak(compute_pB), + /* K25 */ be_nested_str_weak(compute_ZV_verifier), + /* K26 */ be_nested_str_weak(SHA256), + /* K27 */ be_nested_str_weak(update), + /* K28 */ be_nested_str_weak(fromstring), + /* K29 */ be_nested_str_weak(Matter_Context_Prefix), + /* K30 */ be_nested_str_weak(__Msg1), + /* K31 */ be_nested_str_weak(__Msg2), + /* K32 */ be_nested_str_weak(out), + /* K33 */ be_nested_str_weak(set_context), + /* K34 */ be_nested_str_weak(compute_TT_hash), + /* K35 */ be_nested_str_weak(Pake2), + /* K36 */ be_nested_str_weak(pB), + /* K37 */ be_nested_str_weak(cB), + /* K38 */ be_nested_str_weak(tlv2raw), + /* K39 */ be_nested_str_weak(__spake_cA), + /* K40 */ be_nested_str_weak(cA), + /* K41 */ be_nested_str_weak(__spake_Ke), + /* K42 */ be_nested_str_weak(Ke), + /* K43 */ be_nested_str_weak(build_response), + /* K44 */ be_nested_str_weak(encode_frame), + /* K45 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K46 */ be_nested_str_weak(__future_local_session_id), + /* K47 */ be_nested_str_weak(_ip), + /* K48 */ be_nested_str_weak(_port), + /* K49 */ be_nested_str_weak(responder), + /* K50 */ be_nested_str_weak(send_response_frame), }), be_str_weak(parse_Pake1), &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ + ( &(const binstruction[112]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -579,110 +566,107 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ 0x74120002, // 0008 JMPT R4 #000C 0x88100305, // 0009 GETMBR R4 R1 K5 0x20100904, // 000A NE R4 R4 K4 - 0x78120012, // 000B JMPF R4 #001F + 0x78120010, // 000B JMPF R4 #001D 0xB8120C00, // 000C GETNGBL R4 K6 - 0x8C100907, // 000D GETMET R4 R4 K7 + 0x58140007, // 000D LDCONST R5 K7 0x58180008, // 000E LDCONST R6 K8 - 0x581C0009, // 000F LDCONST R7 K9 - 0x7C100600, // 0010 CALL R4 3 - 0xB8120C00, // 0011 GETNGBL R4 K6 - 0x8C100907, // 0012 GETMET R4 R4 K7 - 0x5818000A, // 0013 LDCONST R6 K10 - 0x581C0009, // 0014 LDCONST R7 K9 - 0x7C100600, // 0015 CALL R4 3 - 0x8C10010B, // 0016 GETMET R4 R0 K11 - 0x5C180200, // 0017 MOVE R6 R1 - 0x581C000C, // 0018 LDCONST R7 K12 - 0x58200004, // 0019 LDCONST R8 K4 - 0x5824000D, // 001A LDCONST R9 K13 - 0x50280000, // 001B LDBOOL R10 0 0 - 0x7C100C00, // 001C CALL R4 6 - 0x50100000, // 001D LDBOOL R4 0 0 - 0x80040800, // 001E RET 1 R4 - 0xB8121C00, // 001F GETNGBL R4 K14 + 0x7C100400, // 000F CALL R4 2 + 0xB8120C00, // 0010 GETNGBL R4 K6 + 0x58140009, // 0011 LDCONST R5 K9 + 0x58180008, // 0012 LDCONST R6 K8 + 0x7C100400, // 0013 CALL R4 2 + 0x8C10010A, // 0014 GETMET R4 R0 K10 + 0x5C180200, // 0015 MOVE R6 R1 + 0x581C000B, // 0016 LDCONST R7 K11 + 0x58200004, // 0017 LDCONST R8 K4 + 0x5824000C, // 0018 LDCONST R9 K12 + 0x50280000, // 0019 LDBOOL R10 0 0 + 0x7C100C00, // 001A CALL R4 6 + 0x50100000, // 001B LDBOOL R4 0 0 + 0x80040800, // 001C RET 1 R4 + 0xB8121A00, // 001D GETNGBL R4 K13 + 0x8C10090E, // 001E GETMET R4 R4 K14 + 0x7C100200, // 001F CALL R4 1 0x8C10090F, // 0020 GETMET R4 R4 K15 - 0x7C100200, // 0021 CALL R4 1 - 0x8C100910, // 0022 GETMET R4 R4 K16 - 0x88180311, // 0023 GETMBR R6 R1 K17 - 0x881C0312, // 0024 GETMBR R7 R1 K18 - 0x7C100600, // 0025 CALL R4 3 - 0x88140913, // 0026 GETMBR R5 R4 K19 - 0x8C180514, // 0027 GETMET R6 R2 K20 - 0x88200115, // 0028 GETMBR R8 R0 K21 - 0x88201116, // 0029 GETMBR R8 R8 K22 - 0x4C240000, // 002A LDNIL R9 - 0x88280115, // 002B GETMBR R10 R0 K21 - 0x88281517, // 002C GETMBR R10 R10 K23 - 0x7C180800, // 002D CALL R6 4 - 0x8C1C0518, // 002E GETMET R7 R2 K24 - 0x5426001F, // 002F LDINT R9 32 - 0x7C1C0400, // 0030 CALL R7 2 - 0x8C200D19, // 0031 GETMET R8 R6 K25 - 0x5C280E00, // 0032 MOVE R10 R7 - 0x7C200400, // 0033 CALL R8 2 - 0x8C200D1A, // 0034 GETMET R8 R6 K26 - 0x5C280A00, // 0035 MOVE R10 R5 - 0x7C200400, // 0036 CALL R8 2 - 0x8C20051B, // 0037 GETMET R8 R2 K27 - 0x7C200200, // 0038 CALL R8 1 - 0x8C24111C, // 0039 GETMET R9 R8 K28 - 0x602C0015, // 003A GETGBL R11 G21 - 0x7C2C0000, // 003B CALL R11 0 - 0x8C2C171D, // 003C GETMET R11 R11 K29 - 0x8834011E, // 003D GETMBR R13 R0 K30 - 0x7C2C0400, // 003E CALL R11 2 - 0x7C240400, // 003F CALL R9 2 - 0x8C24111C, // 0040 GETMET R9 R8 K28 - 0x882C071F, // 0041 GETMBR R11 R3 K31 - 0x7C240400, // 0042 CALL R9 2 - 0x8C24111C, // 0043 GETMET R9 R8 K28 - 0x882C0720, // 0044 GETMBR R11 R3 K32 - 0x7C240400, // 0045 CALL R9 2 - 0x8C241121, // 0046 GETMET R9 R8 K33 - 0x7C240200, // 0047 CALL R9 1 - 0x901A2605, // 0048 SETMBR R6 K19 R5 - 0x8C280D22, // 0049 GETMET R10 R6 K34 - 0x5C301200, // 004A MOVE R12 R9 - 0x7C280400, // 004B CALL R10 2 - 0x8C280D23, // 004C GETMET R10 R6 K35 - 0x50300200, // 004D LDBOOL R12 1 0 - 0x7C280400, // 004E CALL R10 2 - 0xB82A1C00, // 004F GETNGBL R10 K14 - 0x8C281524, // 0050 GETMET R10 R10 K36 - 0x7C280200, // 0051 CALL R10 1 + 0x88180310, // 0021 GETMBR R6 R1 K16 + 0x881C0311, // 0022 GETMBR R7 R1 K17 + 0x7C100600, // 0023 CALL R4 3 + 0x88140912, // 0024 GETMBR R5 R4 K18 + 0x8C180513, // 0025 GETMET R6 R2 K19 + 0x88200114, // 0026 GETMBR R8 R0 K20 + 0x88201115, // 0027 GETMBR R8 R8 K21 + 0x4C240000, // 0028 LDNIL R9 + 0x88280114, // 0029 GETMBR R10 R0 K20 + 0x88281516, // 002A GETMBR R10 R10 K22 + 0x7C180800, // 002B CALL R6 4 + 0x8C1C0517, // 002C GETMET R7 R2 K23 + 0x5426001F, // 002D LDINT R9 32 + 0x7C1C0400, // 002E CALL R7 2 + 0x8C200D18, // 002F GETMET R8 R6 K24 + 0x5C280E00, // 0030 MOVE R10 R7 + 0x7C200400, // 0031 CALL R8 2 + 0x8C200D19, // 0032 GETMET R8 R6 K25 + 0x5C280A00, // 0033 MOVE R10 R5 + 0x7C200400, // 0034 CALL R8 2 + 0x8C20051A, // 0035 GETMET R8 R2 K26 + 0x7C200200, // 0036 CALL R8 1 + 0x8C24111B, // 0037 GETMET R9 R8 K27 + 0x602C0015, // 0038 GETGBL R11 G21 + 0x7C2C0000, // 0039 CALL R11 0 + 0x8C2C171C, // 003A GETMET R11 R11 K28 + 0x8834011D, // 003B GETMBR R13 R0 K29 + 0x7C2C0400, // 003C CALL R11 2 + 0x7C240400, // 003D CALL R9 2 + 0x8C24111B, // 003E GETMET R9 R8 K27 + 0x882C071E, // 003F GETMBR R11 R3 K30 + 0x7C240400, // 0040 CALL R9 2 + 0x8C24111B, // 0041 GETMET R9 R8 K27 + 0x882C071F, // 0042 GETMBR R11 R3 K31 + 0x7C240400, // 0043 CALL R9 2 + 0x8C241120, // 0044 GETMET R9 R8 K32 + 0x7C240200, // 0045 CALL R9 1 + 0x901A2405, // 0046 SETMBR R6 K18 R5 + 0x8C280D21, // 0047 GETMET R10 R6 K33 + 0x5C301200, // 0048 MOVE R12 R9 + 0x7C280400, // 0049 CALL R10 2 + 0x8C280D22, // 004A GETMET R10 R6 K34 + 0x50300200, // 004B LDBOOL R12 1 0 + 0x7C280400, // 004C CALL R10 2 + 0xB82A1A00, // 004D GETNGBL R10 K13 + 0x8C281523, // 004E GETMET R10 R10 K35 + 0x7C280200, // 004F CALL R10 1 + 0x882C0D24, // 0050 GETMBR R11 R6 K36 + 0x902A480B, // 0051 SETMBR R10 K36 R11 0x882C0D25, // 0052 GETMBR R11 R6 K37 0x902A4A0B, // 0053 SETMBR R10 K37 R11 - 0x882C0D26, // 0054 GETMBR R11 R6 K38 - 0x902A4C0B, // 0055 SETMBR R10 K38 R11 - 0x8C2C1527, // 0056 GETMET R11 R10 K39 - 0x7C2C0200, // 0057 CALL R11 1 - 0x88300D29, // 0058 GETMBR R12 R6 K41 - 0x900E500C, // 0059 SETMBR R3 K40 R12 - 0x88300D2B, // 005A GETMBR R12 R6 K43 - 0x900E540C, // 005B SETMBR R3 K42 R12 - 0x8C30032C, // 005C GETMET R12 R1 K44 - 0x543A0022, // 005D LDINT R14 35 - 0x503C0200, // 005E LDBOOL R15 1 0 - 0x7C300600, // 005F CALL R12 3 - 0x8C34192D, // 0060 GETMET R13 R12 K45 - 0x5C3C1600, // 0061 MOVE R15 R11 - 0x7C340400, // 0062 CALL R13 2 - 0xB83A0C00, // 0063 GETNGBL R14 K6 - 0x8C381D07, // 0064 GETMET R14 R14 K7 - 0x60400018, // 0065 GETGBL R16 G24 - 0x5844002E, // 0066 LDCONST R17 K46 - 0x8848072F, // 0067 GETMBR R18 R3 K47 - 0x884C0730, // 0068 GETMBR R19 R3 K48 - 0x88500731, // 0069 GETMBR R20 R3 K49 - 0x7C400800, // 006A CALL R16 4 - 0x5844000D, // 006B LDCONST R17 K13 - 0x7C380600, // 006C CALL R14 3 - 0x88380132, // 006D GETMBR R14 R0 K50 - 0x8C381D33, // 006E GETMET R14 R14 K51 - 0x5C401800, // 006F MOVE R16 R12 - 0x7C380400, // 0070 CALL R14 2 - 0x50380200, // 0071 LDBOOL R14 1 0 - 0x80041C00, // 0072 RET 1 R14 + 0x8C2C1526, // 0054 GETMET R11 R10 K38 + 0x7C2C0200, // 0055 CALL R11 1 + 0x88300D28, // 0056 GETMBR R12 R6 K40 + 0x900E4E0C, // 0057 SETMBR R3 K39 R12 + 0x88300D2A, // 0058 GETMBR R12 R6 K42 + 0x900E520C, // 0059 SETMBR R3 K41 R12 + 0x8C30032B, // 005A GETMET R12 R1 K43 + 0x543A0022, // 005B LDINT R14 35 + 0x503C0200, // 005C LDBOOL R15 1 0 + 0x7C300600, // 005D CALL R12 3 + 0x8C34192C, // 005E GETMET R13 R12 K44 + 0x5C3C1600, // 005F MOVE R15 R11 + 0x7C340400, // 0060 CALL R13 2 + 0xB83A0C00, // 0061 GETNGBL R14 K6 + 0x603C0018, // 0062 GETGBL R15 G24 + 0x5840002D, // 0063 LDCONST R16 K45 + 0x8844072E, // 0064 GETMBR R17 R3 K46 + 0x8848072F, // 0065 GETMBR R18 R3 K47 + 0x884C0730, // 0066 GETMBR R19 R3 K48 + 0x7C3C0800, // 0067 CALL R15 4 + 0x5840000C, // 0068 LDCONST R16 K12 + 0x7C380400, // 0069 CALL R14 2 + 0x88380131, // 006A GETMBR R14 R0 K49 + 0x8C381D32, // 006B GETMET R14 R14 K50 + 0x5C401800, // 006C MOVE R16 R12 + 0x7C380400, // 006D CALL R14 2 + 0x50380200, // 006E LDBOOL R14 1 0 + 0x80041C00, // 006F RET 1 R14 }) ) ); @@ -743,22 +727,22 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ /* K3 */ be_nested_str_weak(local_session_id), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K11 */ be_nested_str_weak(send_status_report), - /* K12 */ be_const_int(1), - /* K13 */ be_const_int(2), - /* K14 */ be_nested_str_weak(matter), - /* K15 */ be_nested_str_weak(Pake3), - /* K16 */ be_nested_str_weak(parse), - /* K17 */ be_nested_str_weak(raw), - /* K18 */ be_nested_str_weak(app_payload_idx), - /* K19 */ be_nested_str_weak(cA), - /* K20 */ be_nested_str_weak(__spake_cA), - /* K21 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), + /* K10 */ be_nested_str_weak(send_status_report), + /* K11 */ be_const_int(1), + /* K12 */ be_const_int(2), + /* K13 */ be_nested_str_weak(matter), + /* K14 */ be_nested_str_weak(Pake3), + /* K15 */ be_nested_str_weak(parse), + /* K16 */ be_nested_str_weak(raw), + /* K17 */ be_nested_str_weak(app_payload_idx), + /* K18 */ be_nested_str_weak(cA), + /* K19 */ be_nested_str_weak(__spake_cA), + /* K20 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), + /* K21 */ be_nested_str_weak(tasmota), /* K22 */ be_nested_str_weak(rtc_utc), /* K23 */ be_nested_str_weak(HKDF_SHA256), /* K24 */ be_nested_str_weak(derive), @@ -771,7 +755,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ }), be_str_weak(parse_Pake3), &be_const_str_solidified, - ( &(const binstruction[105]) { /* code */ + ( &(const binstruction[101]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -783,100 +767,96 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x74120002, // 0008 JMPT R4 #000C 0x88100305, // 0009 GETMBR R4 R1 K5 0x20100904, // 000A NE R4 R4 K4 - 0x78120012, // 000B JMPF R4 #001F + 0x78120010, // 000B JMPF R4 #001D 0xB8120C00, // 000C GETNGBL R4 K6 - 0x8C100907, // 000D GETMET R4 R4 K7 + 0x58140007, // 000D LDCONST R5 K7 0x58180008, // 000E LDCONST R6 K8 - 0x581C0009, // 000F LDCONST R7 K9 - 0x7C100600, // 0010 CALL R4 3 - 0xB8120C00, // 0011 GETNGBL R4 K6 - 0x8C100907, // 0012 GETMET R4 R4 K7 - 0x5818000A, // 0013 LDCONST R6 K10 - 0x581C0009, // 0014 LDCONST R7 K9 - 0x7C100600, // 0015 CALL R4 3 - 0x8C10010B, // 0016 GETMET R4 R0 K11 - 0x5C180200, // 0017 MOVE R6 R1 - 0x581C000C, // 0018 LDCONST R7 K12 - 0x58200004, // 0019 LDCONST R8 K4 - 0x5824000D, // 001A LDCONST R9 K13 - 0x50280000, // 001B LDBOOL R10 0 0 - 0x7C100C00, // 001C CALL R4 6 - 0x50100000, // 001D LDBOOL R4 0 0 - 0x80040800, // 001E RET 1 R4 - 0xB8121C00, // 001F GETNGBL R4 K14 + 0x7C100400, // 000F CALL R4 2 + 0xB8120C00, // 0010 GETNGBL R4 K6 + 0x58140009, // 0011 LDCONST R5 K9 + 0x58180008, // 0012 LDCONST R6 K8 + 0x7C100400, // 0013 CALL R4 2 + 0x8C10010A, // 0014 GETMET R4 R0 K10 + 0x5C180200, // 0015 MOVE R6 R1 + 0x581C000B, // 0016 LDCONST R7 K11 + 0x58200004, // 0017 LDCONST R8 K4 + 0x5824000C, // 0018 LDCONST R9 K12 + 0x50280000, // 0019 LDBOOL R10 0 0 + 0x7C100C00, // 001A CALL R4 6 + 0x50100000, // 001B LDBOOL R4 0 0 + 0x80040800, // 001C RET 1 R4 + 0xB8121A00, // 001D GETNGBL R4 K13 + 0x8C10090E, // 001E GETMET R4 R4 K14 + 0x7C100200, // 001F CALL R4 1 0x8C10090F, // 0020 GETMET R4 R4 K15 - 0x7C100200, // 0021 CALL R4 1 - 0x8C100910, // 0022 GETMET R4 R4 K16 - 0x88180311, // 0023 GETMBR R6 R1 K17 - 0x881C0312, // 0024 GETMBR R7 R1 K18 - 0x7C100600, // 0025 CALL R4 3 - 0x88140913, // 0026 GETMBR R5 R4 K19 - 0x88180714, // 0027 GETMBR R6 R3 K20 - 0x20180A06, // 0028 NE R6 R5 R6 - 0x781A0012, // 0029 JMPF R6 #003D - 0xB81A0C00, // 002A GETNGBL R6 K6 - 0x8C180D07, // 002B GETMET R6 R6 K7 - 0x58200015, // 002C LDCONST R8 K21 - 0x58240009, // 002D LDCONST R9 K9 - 0x7C180600, // 002E CALL R6 3 - 0xB81A0C00, // 002F GETNGBL R6 K6 - 0x8C180D07, // 0030 GETMET R6 R6 K7 - 0x5820000A, // 0031 LDCONST R8 K10 - 0x58240009, // 0032 LDCONST R9 K9 - 0x7C180600, // 0033 CALL R6 3 - 0x8C18010B, // 0034 GETMET R6 R0 K11 - 0x5C200200, // 0035 MOVE R8 R1 - 0x5824000C, // 0036 LDCONST R9 K12 - 0x58280004, // 0037 LDCONST R10 K4 - 0x582C000D, // 0038 LDCONST R11 K13 - 0x50300000, // 0039 LDBOOL R12 0 0 - 0x7C180C00, // 003A CALL R6 6 - 0x50180000, // 003B LDBOOL R6 0 0 - 0x80040C00, // 003C RET 1 R6 - 0xB81A0C00, // 003D GETNGBL R6 K6 - 0x8C180D16, // 003E GETMET R6 R6 K22 - 0x7C180200, // 003F CALL R6 1 - 0x8C1C0517, // 0040 GETMET R7 R2 K23 - 0x7C1C0200, // 0041 CALL R7 1 - 0x8C1C0F18, // 0042 GETMET R7 R7 K24 - 0x88240719, // 0043 GETMBR R9 R3 K25 - 0x60280015, // 0044 GETGBL R10 G21 - 0x7C280000, // 0045 CALL R10 0 - 0x602C0015, // 0046 GETGBL R11 G21 - 0x7C2C0000, // 0047 CALL R11 0 - 0x8C2C171A, // 0048 GETMET R11 R11 K26 - 0x8834011B, // 0049 GETMBR R13 R0 K27 - 0x7C2C0400, // 004A CALL R11 2 - 0x5432002F, // 004B LDINT R12 48 - 0x7C1C0A00, // 004C CALL R7 5 - 0x5422000E, // 004D LDINT R8 15 - 0x40220808, // 004E CONNECT R8 K4 R8 - 0x94200E08, // 004F GETIDX R8 R7 R8 - 0x5426000F, // 0050 LDINT R9 16 - 0x542A001E, // 0051 LDINT R10 31 - 0x4024120A, // 0052 CONNECT R9 R9 R10 - 0x94240E09, // 0053 GETIDX R9 R7 R9 - 0x542A001F, // 0054 LDINT R10 32 - 0x542E002E, // 0055 LDINT R11 47 - 0x4028140B, // 0056 CONNECT R10 R10 R11 - 0x94280E0A, // 0057 GETIDX R10 R7 R10 - 0x8C2C010B, // 0058 GETMET R11 R0 K11 - 0x5C340200, // 0059 MOVE R13 R1 - 0x58380004, // 005A LDCONST R14 K4 - 0x583C0004, // 005B LDCONST R15 K4 - 0x58400004, // 005C LDCONST R16 K4 - 0x50440000, // 005D LDBOOL R17 0 0 - 0x7C2C0C00, // 005E CALL R11 6 - 0x8C2C011C, // 005F GETMET R11 R0 K28 - 0x8834071D, // 0060 GETMBR R13 R3 K29 - 0x8838071E, // 0061 GETMBR R14 R3 K30 - 0x5C3C1000, // 0062 MOVE R15 R8 - 0x5C401200, // 0063 MOVE R16 R9 - 0x5C441400, // 0064 MOVE R17 R10 - 0x5C480C00, // 0065 MOVE R18 R6 - 0x7C2C0E00, // 0066 CALL R11 7 - 0x502C0200, // 0067 LDBOOL R11 1 0 - 0x80041600, // 0068 RET 1 R11 + 0x88180310, // 0021 GETMBR R6 R1 K16 + 0x881C0311, // 0022 GETMBR R7 R1 K17 + 0x7C100600, // 0023 CALL R4 3 + 0x88140912, // 0024 GETMBR R5 R4 K18 + 0x88180713, // 0025 GETMBR R6 R3 K19 + 0x20180A06, // 0026 NE R6 R5 R6 + 0x781A0010, // 0027 JMPF R6 #0039 + 0xB81A0C00, // 0028 GETNGBL R6 K6 + 0x581C0014, // 0029 LDCONST R7 K20 + 0x58200008, // 002A LDCONST R8 K8 + 0x7C180400, // 002B CALL R6 2 + 0xB81A0C00, // 002C GETNGBL R6 K6 + 0x581C0009, // 002D LDCONST R7 K9 + 0x58200008, // 002E LDCONST R8 K8 + 0x7C180400, // 002F CALL R6 2 + 0x8C18010A, // 0030 GETMET R6 R0 K10 + 0x5C200200, // 0031 MOVE R8 R1 + 0x5824000B, // 0032 LDCONST R9 K11 + 0x58280004, // 0033 LDCONST R10 K4 + 0x582C000C, // 0034 LDCONST R11 K12 + 0x50300000, // 0035 LDBOOL R12 0 0 + 0x7C180C00, // 0036 CALL R6 6 + 0x50180000, // 0037 LDBOOL R6 0 0 + 0x80040C00, // 0038 RET 1 R6 + 0xB81A2A00, // 0039 GETNGBL R6 K21 + 0x8C180D16, // 003A GETMET R6 R6 K22 + 0x7C180200, // 003B CALL R6 1 + 0x8C1C0517, // 003C GETMET R7 R2 K23 + 0x7C1C0200, // 003D CALL R7 1 + 0x8C1C0F18, // 003E GETMET R7 R7 K24 + 0x88240719, // 003F GETMBR R9 R3 K25 + 0x60280015, // 0040 GETGBL R10 G21 + 0x7C280000, // 0041 CALL R10 0 + 0x602C0015, // 0042 GETGBL R11 G21 + 0x7C2C0000, // 0043 CALL R11 0 + 0x8C2C171A, // 0044 GETMET R11 R11 K26 + 0x8834011B, // 0045 GETMBR R13 R0 K27 + 0x7C2C0400, // 0046 CALL R11 2 + 0x5432002F, // 0047 LDINT R12 48 + 0x7C1C0A00, // 0048 CALL R7 5 + 0x5422000E, // 0049 LDINT R8 15 + 0x40220808, // 004A CONNECT R8 K4 R8 + 0x94200E08, // 004B GETIDX R8 R7 R8 + 0x5426000F, // 004C LDINT R9 16 + 0x542A001E, // 004D LDINT R10 31 + 0x4024120A, // 004E CONNECT R9 R9 R10 + 0x94240E09, // 004F GETIDX R9 R7 R9 + 0x542A001F, // 0050 LDINT R10 32 + 0x542E002E, // 0051 LDINT R11 47 + 0x4028140B, // 0052 CONNECT R10 R10 R11 + 0x94280E0A, // 0053 GETIDX R10 R7 R10 + 0x8C2C010A, // 0054 GETMET R11 R0 K10 + 0x5C340200, // 0055 MOVE R13 R1 + 0x58380004, // 0056 LDCONST R14 K4 + 0x583C0004, // 0057 LDCONST R15 K4 + 0x58400004, // 0058 LDCONST R16 K4 + 0x50440000, // 0059 LDBOOL R17 0 0 + 0x7C2C0C00, // 005A CALL R11 6 + 0x8C2C011C, // 005B GETMET R11 R0 K28 + 0x8834071D, // 005C GETMBR R13 R3 K29 + 0x8838071E, // 005D GETMBR R14 R3 K30 + 0x5C3C1000, // 005E MOVE R15 R8 + 0x5C401200, // 005F MOVE R16 R9 + 0x5C441400, // 0060 MOVE R17 R10 + 0x5C480C00, // 0061 MOVE R18 R6 + 0x7C2C0E00, // 0062 CALL R11 7 + 0x502C0200, // 0063 LDBOOL R11 1 0 + 0x80041600, // 0064 RET 1 R11 }) ) ); @@ -903,58 +883,58 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ /* K2 */ be_nested_str_weak(local_session_id), /* K3 */ be_const_int(0), /* K4 */ be_nested_str_weak(protocol_id), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(send_status_report), - /* K10 */ be_const_int(1), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(session), - /* K13 */ be_nested_str_weak(matter), - /* K14 */ be_nested_str_weak(Sigma3), - /* K15 */ be_nested_str_weak(parse), - /* K16 */ be_nested_str_weak(raw), - /* K17 */ be_nested_str_weak(app_payload_idx), - /* K18 */ be_nested_str_weak(SHA256), - /* K19 */ be_nested_str_weak(update), - /* K20 */ be_nested_str_weak(__Msg1), - /* K21 */ be_nested_str_weak(__Msg2), - /* K22 */ be_nested_str_weak(out), - /* K23 */ be_nested_str_weak(fromstring), - /* K24 */ be_nested_str_weak(S3K_Info), - /* K25 */ be_nested_str_weak(HKDF_SHA256), - /* K26 */ be_nested_str_weak(derive), - /* K27 */ be_nested_str_weak(shared_secret), - /* K28 */ be_nested_str_weak(get_ipk_group_key), - /* K29 */ be_nested_str_weak(TBEData3Encrypted), - /* K30 */ be_const_int(2147483647), - /* K31 */ be_nested_str_weak(AES_CCM), - /* K32 */ be_nested_str_weak(TBEData3_Nonce), - /* K33 */ be_nested_str_weak(decrypt), - /* K34 */ be_nested_str_weak(tag), - /* K35 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), - /* K36 */ be_nested_str_weak(TLV), - /* K37 */ be_nested_str_weak(findsubval), - /* K38 */ be_nested_str_weak(findsub), - /* K39 */ be_nested_str_weak(int), - /* K40 */ be_nested_str_weak(peer_node_id), - /* K41 */ be_nested_str_weak(int64), - /* K42 */ be_nested_str_weak(fromu32), - /* K43 */ be_nested_str_weak(tobytes), - /* K44 */ be_nested_str_weak(Matter_TLV_struct), - /* K45 */ be_nested_str_weak(add_TLV), - /* K46 */ be_nested_str_weak(B1), - /* K47 */ be_nested_str_weak(__initiator_pub), - /* K48 */ be_nested_str_weak(__responder_pub), - /* K49 */ be_nested_str_weak(tlv2raw), - /* K50 */ be_nested_str_weak(EC_P256), - /* K51 */ be_nested_str_weak(ecdsa_verify_sha256), - /* K52 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), - /* K53 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), - /* K54 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), - /* K55 */ be_nested_str_weak(Msg3), - /* K56 */ be_nested_str_weak(SEKeys_Info), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(send_status_report), + /* K9 */ be_const_int(1), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(session), + /* K12 */ be_nested_str_weak(matter), + /* K13 */ be_nested_str_weak(Sigma3), + /* K14 */ be_nested_str_weak(parse), + /* K15 */ be_nested_str_weak(raw), + /* K16 */ be_nested_str_weak(app_payload_idx), + /* K17 */ be_nested_str_weak(SHA256), + /* K18 */ be_nested_str_weak(update), + /* K19 */ be_nested_str_weak(__Msg1), + /* K20 */ be_nested_str_weak(__Msg2), + /* K21 */ be_nested_str_weak(out), + /* K22 */ be_nested_str_weak(fromstring), + /* K23 */ be_nested_str_weak(S3K_Info), + /* K24 */ be_nested_str_weak(HKDF_SHA256), + /* K25 */ be_nested_str_weak(derive), + /* K26 */ be_nested_str_weak(shared_secret), + /* K27 */ be_nested_str_weak(get_ipk_group_key), + /* K28 */ be_nested_str_weak(TBEData3Encrypted), + /* K29 */ be_const_int(2147483647), + /* K30 */ be_nested_str_weak(AES_CCM), + /* K31 */ be_nested_str_weak(TBEData3_Nonce), + /* K32 */ be_nested_str_weak(decrypt), + /* K33 */ be_nested_str_weak(tag), + /* K34 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), + /* K35 */ be_nested_str_weak(TLV), + /* K36 */ be_nested_str_weak(findsubval), + /* K37 */ be_nested_str_weak(findsub), + /* K38 */ be_nested_str_weak(int), + /* K39 */ be_nested_str_weak(peer_node_id), + /* K40 */ be_nested_str_weak(int64), + /* K41 */ be_nested_str_weak(fromu32), + /* K42 */ be_nested_str_weak(tobytes), + /* K43 */ be_nested_str_weak(Matter_TLV_struct), + /* K44 */ be_nested_str_weak(add_TLV), + /* K45 */ be_nested_str_weak(B1), + /* K46 */ be_nested_str_weak(__initiator_pub), + /* K47 */ be_nested_str_weak(__responder_pub), + /* K48 */ be_nested_str_weak(tlv2raw), + /* K49 */ be_nested_str_weak(EC_P256), + /* K50 */ be_nested_str_weak(ecdsa_verify_sha256), + /* K51 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), + /* K52 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), + /* K53 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), + /* K54 */ be_nested_str_weak(Msg3), + /* K55 */ be_nested_str_weak(SEKeys_Info), + /* K56 */ be_nested_str_weak(tasmota), /* K57 */ be_nested_str_weak(rtc_utc), /* K58 */ be_nested_str_weak(close), /* K59 */ be_nested_str_weak(set_keys), @@ -967,7 +947,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ }), be_str_weak(parse_Sigma3), &be_const_str_solidified, - ( &(const binstruction[286]) { /* code */ + ( &(const binstruction[280]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x54120031, // 0002 LDINT R4 50 @@ -978,282 +958,276 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x740E0002, // 0007 JMPT R3 #000B 0x880C0304, // 0008 GETMBR R3 R1 K4 0x200C0703, // 0009 NE R3 R3 K3 - 0x780E000D, // 000A JMPF R3 #0019 + 0x780E000C, // 000A JMPF R3 #0018 0xB80E0A00, // 000B GETNGBL R3 K5 - 0x8C0C0706, // 000C GETMET R3 R3 K6 + 0x58100006, // 000C LDCONST R4 K6 0x58140007, // 000D LDCONST R5 K7 - 0x58180008, // 000E LDCONST R6 K8 - 0x7C0C0600, // 000F CALL R3 3 - 0x8C0C0109, // 0010 GETMET R3 R0 K9 - 0x5C140200, // 0011 MOVE R5 R1 - 0x5818000A, // 0012 LDCONST R6 K10 - 0x581C0003, // 0013 LDCONST R7 K3 - 0x5820000B, // 0014 LDCONST R8 K11 - 0x50240000, // 0015 LDBOOL R9 0 0 - 0x7C0C0C00, // 0016 CALL R3 6 - 0x500C0000, // 0017 LDBOOL R3 0 0 - 0x80040600, // 0018 RET 1 R3 - 0x880C030C, // 0019 GETMBR R3 R1 K12 - 0xB8121A00, // 001A GETNGBL R4 K13 - 0x8C10090E, // 001B GETMET R4 R4 K14 - 0x7C100200, // 001C CALL R4 1 - 0x8C10090F, // 001D GETMET R4 R4 K15 - 0x88180310, // 001E GETMBR R6 R1 K16 - 0x881C0311, // 001F GETMBR R7 R1 K17 - 0x7C100600, // 0020 CALL R4 3 - 0x8C140512, // 0021 GETMET R5 R2 K18 - 0x7C140200, // 0022 CALL R5 1 - 0x8C140B13, // 0023 GETMET R5 R5 K19 - 0x881C0714, // 0024 GETMBR R7 R3 K20 - 0x7C140400, // 0025 CALL R5 2 - 0x8C140B13, // 0026 GETMET R5 R5 K19 - 0x881C0715, // 0027 GETMBR R7 R3 K21 - 0x7C140400, // 0028 CALL R5 2 - 0x8C140B16, // 0029 GETMET R5 R5 K22 - 0x7C140200, // 002A CALL R5 1 - 0x60180015, // 002B GETGBL R6 G21 - 0x7C180000, // 002C CALL R6 0 - 0x8C180D17, // 002D GETMET R6 R6 K23 - 0x88200118, // 002E GETMBR R8 R0 K24 - 0x7C180400, // 002F CALL R6 2 - 0x8C1C0519, // 0030 GETMET R7 R2 K25 - 0x7C1C0200, // 0031 CALL R7 1 - 0x8C1C0F1A, // 0032 GETMET R7 R7 K26 - 0x8824071B, // 0033 GETMBR R9 R3 K27 - 0x8C28071C, // 0034 GETMET R10 R3 K28 - 0x7C280200, // 0035 CALL R10 1 - 0x00281405, // 0036 ADD R10 R10 R5 - 0x5C2C0C00, // 0037 MOVE R11 R6 - 0x5432000F, // 0038 LDINT R12 16 - 0x7C1C0A00, // 0039 CALL R7 5 - 0x5421FFEE, // 003A LDINT R8 -17 - 0x40220608, // 003B CONNECT R8 K3 R8 - 0x8824091D, // 003C GETMBR R9 R4 K29 - 0x94201208, // 003D GETIDX R8 R9 R8 - 0x5429FFEF, // 003E LDINT R10 -16 - 0x4028151E, // 003F CONNECT R10 R10 K30 - 0x882C091D, // 0040 GETMBR R11 R4 K29 - 0x9424160A, // 0041 GETIDX R9 R11 R10 - 0x8C30051F, // 0042 GETMET R12 R2 K31 - 0x5C380E00, // 0043 MOVE R14 R7 - 0x603C0015, // 0044 GETGBL R15 G21 - 0x7C3C0000, // 0045 CALL R15 0 - 0x8C3C1F17, // 0046 GETMET R15 R15 K23 - 0x88440120, // 0047 GETMBR R17 R0 K32 - 0x7C3C0400, // 0048 CALL R15 2 - 0x60400015, // 0049 GETGBL R16 G21 - 0x7C400000, // 004A CALL R16 0 - 0x6044000C, // 004B GETGBL R17 G12 - 0x5C481000, // 004C MOVE R18 R8 - 0x7C440200, // 004D CALL R17 1 - 0x544A000F, // 004E LDINT R18 16 - 0x7C300C00, // 004F CALL R12 6 - 0x5C281800, // 0050 MOVE R10 R12 - 0x8C301521, // 0051 GETMET R12 R10 K33 - 0x5C381000, // 0052 MOVE R14 R8 - 0x7C300400, // 0053 CALL R12 2 - 0x5C2C1800, // 0054 MOVE R11 R12 - 0x8C301522, // 0055 GETMET R12 R10 K34 - 0x7C300200, // 0056 CALL R12 1 - 0x20341809, // 0057 NE R13 R12 R9 - 0x78360012, // 0058 JMPF R13 #006C - 0xB8360A00, // 0059 GETNGBL R13 K5 - 0x8C341B06, // 005A GETMET R13 R13 K6 - 0x583C0023, // 005B LDCONST R15 K35 - 0x58400008, // 005C LDCONST R16 K8 - 0x7C340600, // 005D CALL R13 3 - 0xB8360A00, // 005E GETNGBL R13 K5 - 0x8C341B06, // 005F GETMET R13 R13 K6 - 0x583C0007, // 0060 LDCONST R15 K7 - 0x58400008, // 0061 LDCONST R16 K8 - 0x7C340600, // 0062 CALL R13 3 - 0x8C340109, // 0063 GETMET R13 R0 K9 - 0x5C3C0200, // 0064 MOVE R15 R1 - 0x5840000A, // 0065 LDCONST R16 K10 - 0x58440003, // 0066 LDCONST R17 K3 - 0x5848000B, // 0067 LDCONST R18 K11 - 0x504C0000, // 0068 LDBOOL R19 0 0 - 0x7C340C00, // 0069 CALL R13 6 - 0x50340000, // 006A LDBOOL R13 0 0 - 0x80041A00, // 006B RET 1 R13 - 0xB8361A00, // 006C GETNGBL R13 K13 - 0x88341B24, // 006D GETMBR R13 R13 K36 - 0x8C341B0F, // 006E GETMET R13 R13 K15 - 0x5C3C1600, // 006F MOVE R15 R11 - 0x7C340400, // 0070 CALL R13 2 - 0x8C381B25, // 0071 GETMET R14 R13 K37 - 0x5840000A, // 0072 LDCONST R16 K10 - 0x7C380400, // 0073 CALL R14 2 - 0x8C3C1B25, // 0074 GETMET R15 R13 K37 - 0x5844000B, // 0075 LDCONST R17 K11 - 0x7C3C0400, // 0076 CALL R15 2 - 0x8C401B25, // 0077 GETMET R16 R13 K37 - 0x58480008, // 0078 LDCONST R18 K8 - 0x7C400400, // 0079 CALL R16 2 - 0xB8461A00, // 007A GETNGBL R17 K13 - 0x88442324, // 007B GETMBR R17 R17 K36 - 0x8C44230F, // 007C GETMET R17 R17 K15 - 0x5C4C1C00, // 007D MOVE R19 R14 - 0x7C440400, // 007E CALL R17 2 - 0x8C482325, // 007F GETMET R18 R17 K37 - 0x54520008, // 0080 LDINT R20 9 - 0x7C480400, // 0081 CALL R18 2 - 0x8C4C2326, // 0082 GETMET R19 R17 K38 - 0x54560005, // 0083 LDINT R21 6 - 0x7C4C0400, // 0084 CALL R19 2 - 0x8C502725, // 0085 GETMET R20 R19 K37 - 0x545A0010, // 0086 LDINT R22 17 - 0x7C500400, // 0087 CALL R20 2 - 0x60540004, // 0088 GETGBL R21 G4 - 0x5C582800, // 0089 MOVE R22 R20 - 0x7C540200, // 008A CALL R21 1 - 0x1C542B27, // 008B EQ R21 R21 K39 - 0x78560007, // 008C JMPF R21 #0095 - 0xB8565200, // 008D GETNGBL R21 K41 + 0x7C0C0400, // 000E CALL R3 2 + 0x8C0C0108, // 000F GETMET R3 R0 K8 + 0x5C140200, // 0010 MOVE R5 R1 + 0x58180009, // 0011 LDCONST R6 K9 + 0x581C0003, // 0012 LDCONST R7 K3 + 0x5820000A, // 0013 LDCONST R8 K10 + 0x50240000, // 0014 LDBOOL R9 0 0 + 0x7C0C0C00, // 0015 CALL R3 6 + 0x500C0000, // 0016 LDBOOL R3 0 0 + 0x80040600, // 0017 RET 1 R3 + 0x880C030B, // 0018 GETMBR R3 R1 K11 + 0xB8121800, // 0019 GETNGBL R4 K12 + 0x8C10090D, // 001A GETMET R4 R4 K13 + 0x7C100200, // 001B CALL R4 1 + 0x8C10090E, // 001C GETMET R4 R4 K14 + 0x8818030F, // 001D GETMBR R6 R1 K15 + 0x881C0310, // 001E GETMBR R7 R1 K16 + 0x7C100600, // 001F CALL R4 3 + 0x8C140511, // 0020 GETMET R5 R2 K17 + 0x7C140200, // 0021 CALL R5 1 + 0x8C140B12, // 0022 GETMET R5 R5 K18 + 0x881C0713, // 0023 GETMBR R7 R3 K19 + 0x7C140400, // 0024 CALL R5 2 + 0x8C140B12, // 0025 GETMET R5 R5 K18 + 0x881C0714, // 0026 GETMBR R7 R3 K20 + 0x7C140400, // 0027 CALL R5 2 + 0x8C140B15, // 0028 GETMET R5 R5 K21 + 0x7C140200, // 0029 CALL R5 1 + 0x60180015, // 002A GETGBL R6 G21 + 0x7C180000, // 002B CALL R6 0 + 0x8C180D16, // 002C GETMET R6 R6 K22 + 0x88200117, // 002D GETMBR R8 R0 K23 + 0x7C180400, // 002E CALL R6 2 + 0x8C1C0518, // 002F GETMET R7 R2 K24 + 0x7C1C0200, // 0030 CALL R7 1 + 0x8C1C0F19, // 0031 GETMET R7 R7 K25 + 0x8824071A, // 0032 GETMBR R9 R3 K26 + 0x8C28071B, // 0033 GETMET R10 R3 K27 + 0x7C280200, // 0034 CALL R10 1 + 0x00281405, // 0035 ADD R10 R10 R5 + 0x5C2C0C00, // 0036 MOVE R11 R6 + 0x5432000F, // 0037 LDINT R12 16 + 0x7C1C0A00, // 0038 CALL R7 5 + 0x5421FFEE, // 0039 LDINT R8 -17 + 0x40220608, // 003A CONNECT R8 K3 R8 + 0x8824091C, // 003B GETMBR R9 R4 K28 + 0x94201208, // 003C GETIDX R8 R9 R8 + 0x5429FFEF, // 003D LDINT R10 -16 + 0x4028151D, // 003E CONNECT R10 R10 K29 + 0x882C091C, // 003F GETMBR R11 R4 K28 + 0x9424160A, // 0040 GETIDX R9 R11 R10 + 0x8C30051E, // 0041 GETMET R12 R2 K30 + 0x5C380E00, // 0042 MOVE R14 R7 + 0x603C0015, // 0043 GETGBL R15 G21 + 0x7C3C0000, // 0044 CALL R15 0 + 0x8C3C1F16, // 0045 GETMET R15 R15 K22 + 0x8844011F, // 0046 GETMBR R17 R0 K31 + 0x7C3C0400, // 0047 CALL R15 2 + 0x60400015, // 0048 GETGBL R16 G21 + 0x7C400000, // 0049 CALL R16 0 + 0x6044000C, // 004A GETGBL R17 G12 + 0x5C481000, // 004B MOVE R18 R8 + 0x7C440200, // 004C CALL R17 1 + 0x544A000F, // 004D LDINT R18 16 + 0x7C300C00, // 004E CALL R12 6 + 0x5C281800, // 004F MOVE R10 R12 + 0x8C301520, // 0050 GETMET R12 R10 K32 + 0x5C381000, // 0051 MOVE R14 R8 + 0x7C300400, // 0052 CALL R12 2 + 0x5C2C1800, // 0053 MOVE R11 R12 + 0x8C301521, // 0054 GETMET R12 R10 K33 + 0x7C300200, // 0055 CALL R12 1 + 0x20341809, // 0056 NE R13 R12 R9 + 0x78360010, // 0057 JMPF R13 #0069 + 0xB8360A00, // 0058 GETNGBL R13 K5 + 0x58380022, // 0059 LDCONST R14 K34 + 0x583C0007, // 005A LDCONST R15 K7 + 0x7C340400, // 005B CALL R13 2 + 0xB8360A00, // 005C GETNGBL R13 K5 + 0x58380006, // 005D LDCONST R14 K6 + 0x583C0007, // 005E LDCONST R15 K7 + 0x7C340400, // 005F CALL R13 2 + 0x8C340108, // 0060 GETMET R13 R0 K8 + 0x5C3C0200, // 0061 MOVE R15 R1 + 0x58400009, // 0062 LDCONST R16 K9 + 0x58440003, // 0063 LDCONST R17 K3 + 0x5848000A, // 0064 LDCONST R18 K10 + 0x504C0000, // 0065 LDBOOL R19 0 0 + 0x7C340C00, // 0066 CALL R13 6 + 0x50340000, // 0067 LDBOOL R13 0 0 + 0x80041A00, // 0068 RET 1 R13 + 0xB8361800, // 0069 GETNGBL R13 K12 + 0x88341B23, // 006A GETMBR R13 R13 K35 + 0x8C341B0E, // 006B GETMET R13 R13 K14 + 0x5C3C1600, // 006C MOVE R15 R11 + 0x7C340400, // 006D CALL R13 2 + 0x8C381B24, // 006E GETMET R14 R13 K36 + 0x58400009, // 006F LDCONST R16 K9 + 0x7C380400, // 0070 CALL R14 2 + 0x8C3C1B24, // 0071 GETMET R15 R13 K36 + 0x5844000A, // 0072 LDCONST R17 K10 + 0x7C3C0400, // 0073 CALL R15 2 + 0x8C401B24, // 0074 GETMET R16 R13 K36 + 0x58480007, // 0075 LDCONST R18 K7 + 0x7C400400, // 0076 CALL R16 2 + 0xB8461800, // 0077 GETNGBL R17 K12 + 0x88442323, // 0078 GETMBR R17 R17 K35 + 0x8C44230E, // 0079 GETMET R17 R17 K14 + 0x5C4C1C00, // 007A MOVE R19 R14 + 0x7C440400, // 007B CALL R17 2 + 0x8C482324, // 007C GETMET R18 R17 K36 + 0x54520008, // 007D LDINT R20 9 + 0x7C480400, // 007E CALL R18 2 + 0x8C4C2325, // 007F GETMET R19 R17 K37 + 0x54560005, // 0080 LDINT R21 6 + 0x7C4C0400, // 0081 CALL R19 2 + 0x8C502724, // 0082 GETMET R20 R19 K36 + 0x545A0010, // 0083 LDINT R22 17 + 0x7C500400, // 0084 CALL R20 2 + 0x60540004, // 0085 GETGBL R21 G4 + 0x5C582800, // 0086 MOVE R22 R20 + 0x7C540200, // 0087 CALL R21 1 + 0x1C542B26, // 0088 EQ R21 R21 K38 + 0x78560007, // 0089 JMPF R21 #0092 + 0xB8565000, // 008A GETNGBL R21 K40 + 0x8C542B29, // 008B GETMET R21 R21 K41 + 0x5C5C2800, // 008C MOVE R23 R20 + 0x7C540400, // 008D CALL R21 2 0x8C542B2A, // 008E GETMET R21 R21 K42 - 0x5C5C2800, // 008F MOVE R23 R20 - 0x7C540400, // 0090 CALL R21 2 - 0x8C542B2B, // 0091 GETMET R21 R21 K43 - 0x7C540200, // 0092 CALL R21 1 - 0x900E5015, // 0093 SETMBR R3 K40 R21 - 0x70020002, // 0094 JMP #0098 - 0x8C54292B, // 0095 GETMET R21 R20 K43 - 0x7C540200, // 0096 CALL R21 1 - 0x900E5015, // 0097 SETMBR R3 K40 R21 - 0xB8561A00, // 0098 GETNGBL R21 K13 - 0x88542B24, // 0099 GETMBR R21 R21 K36 - 0x8C542B2C, // 009A GETMET R21 R21 K44 - 0x7C540200, // 009B CALL R21 1 - 0x8C582B2D, // 009C GETMET R22 R21 K45 - 0x5860000A, // 009D LDCONST R24 K10 - 0xB8661A00, // 009E GETNGBL R25 K13 - 0x88643324, // 009F GETMBR R25 R25 K36 - 0x8864332E, // 00A0 GETMBR R25 R25 K46 - 0x5C681C00, // 00A1 MOVE R26 R14 - 0x7C580800, // 00A2 CALL R22 4 - 0x8C582B2D, // 00A3 GETMET R22 R21 K45 - 0x5860000B, // 00A4 LDCONST R24 K11 - 0xB8661A00, // 00A5 GETNGBL R25 K13 - 0x88643324, // 00A6 GETMBR R25 R25 K36 - 0x8864332E, // 00A7 GETMBR R25 R25 K46 - 0x5C681E00, // 00A8 MOVE R26 R15 - 0x7C580800, // 00A9 CALL R22 4 - 0x8C582B2D, // 00AA GETMET R22 R21 K45 - 0x58600008, // 00AB LDCONST R24 K8 - 0xB8661A00, // 00AC GETNGBL R25 K13 - 0x88643324, // 00AD GETMBR R25 R25 K36 - 0x8864332E, // 00AE GETMBR R25 R25 K46 - 0x8868072F, // 00AF GETMBR R26 R3 K47 - 0x7C580800, // 00B0 CALL R22 4 - 0x8C582B2D, // 00B1 GETMET R22 R21 K45 - 0x54620003, // 00B2 LDINT R24 4 - 0xB8661A00, // 00B3 GETNGBL R25 K13 - 0x88643324, // 00B4 GETMBR R25 R25 K36 - 0x8864332E, // 00B5 GETMBR R25 R25 K46 - 0x88680730, // 00B6 GETMBR R26 R3 K48 - 0x7C580800, // 00B7 CALL R22 4 - 0x8C582B31, // 00B8 GETMET R22 R21 K49 - 0x7C580200, // 00B9 CALL R22 1 - 0x8C5C0532, // 00BA GETMET R23 R2 K50 - 0x7C5C0200, // 00BB CALL R23 1 - 0x8C5C2F33, // 00BC GETMET R23 R23 K51 - 0x5C642400, // 00BD MOVE R25 R18 - 0x5C682C00, // 00BE MOVE R26 R22 - 0x5C6C2000, // 00BF MOVE R27 R16 - 0x7C5C0800, // 00C0 CALL R23 4 - 0x5C602E00, // 00C1 MOVE R24 R23 - 0x7462000A, // 00C2 JMPT R24 #00CE - 0xB8620A00, // 00C3 GETNGBL R24 K5 - 0x8C603106, // 00C4 GETMET R24 R24 K6 - 0x58680034, // 00C5 LDCONST R26 K52 - 0x586C000B, // 00C6 LDCONST R27 K11 - 0x7C600600, // 00C7 CALL R24 3 - 0xB8620A00, // 00C8 GETNGBL R24 K5 - 0x8C603106, // 00C9 GETMET R24 R24 K6 - 0x58680035, // 00CA LDCONST R26 K53 - 0x586C000B, // 00CB LDCONST R27 K11 - 0x7C600600, // 00CC CALL R24 3 - 0x70020004, // 00CD JMP #00D3 - 0xB8620A00, // 00CE GETNGBL R24 K5 - 0x8C603106, // 00CF GETMET R24 R24 K6 - 0x58680036, // 00D0 LDCONST R26 K54 - 0x586C0008, // 00D1 LDCONST R27 K8 - 0x7C600600, // 00D2 CALL R24 3 - 0x8C600512, // 00D3 GETMET R24 R2 K18 - 0x7C600200, // 00D4 CALL R24 1 - 0x8C603113, // 00D5 GETMET R24 R24 K19 - 0x88680714, // 00D6 GETMBR R26 R3 K20 + 0x7C540200, // 008F CALL R21 1 + 0x900E4E15, // 0090 SETMBR R3 K39 R21 + 0x70020002, // 0091 JMP #0095 + 0x8C54292A, // 0092 GETMET R21 R20 K42 + 0x7C540200, // 0093 CALL R21 1 + 0x900E4E15, // 0094 SETMBR R3 K39 R21 + 0xB8561800, // 0095 GETNGBL R21 K12 + 0x88542B23, // 0096 GETMBR R21 R21 K35 + 0x8C542B2B, // 0097 GETMET R21 R21 K43 + 0x7C540200, // 0098 CALL R21 1 + 0x8C582B2C, // 0099 GETMET R22 R21 K44 + 0x58600009, // 009A LDCONST R24 K9 + 0xB8661800, // 009B GETNGBL R25 K12 + 0x88643323, // 009C GETMBR R25 R25 K35 + 0x8864332D, // 009D GETMBR R25 R25 K45 + 0x5C681C00, // 009E MOVE R26 R14 + 0x7C580800, // 009F CALL R22 4 + 0x8C582B2C, // 00A0 GETMET R22 R21 K44 + 0x5860000A, // 00A1 LDCONST R24 K10 + 0xB8661800, // 00A2 GETNGBL R25 K12 + 0x88643323, // 00A3 GETMBR R25 R25 K35 + 0x8864332D, // 00A4 GETMBR R25 R25 K45 + 0x5C681E00, // 00A5 MOVE R26 R15 + 0x7C580800, // 00A6 CALL R22 4 + 0x8C582B2C, // 00A7 GETMET R22 R21 K44 + 0x58600007, // 00A8 LDCONST R24 K7 + 0xB8661800, // 00A9 GETNGBL R25 K12 + 0x88643323, // 00AA GETMBR R25 R25 K35 + 0x8864332D, // 00AB GETMBR R25 R25 K45 + 0x8868072E, // 00AC GETMBR R26 R3 K46 + 0x7C580800, // 00AD CALL R22 4 + 0x8C582B2C, // 00AE GETMET R22 R21 K44 + 0x54620003, // 00AF LDINT R24 4 + 0xB8661800, // 00B0 GETNGBL R25 K12 + 0x88643323, // 00B1 GETMBR R25 R25 K35 + 0x8864332D, // 00B2 GETMBR R25 R25 K45 + 0x8868072F, // 00B3 GETMBR R26 R3 K47 + 0x7C580800, // 00B4 CALL R22 4 + 0x8C582B30, // 00B5 GETMET R22 R21 K48 + 0x7C580200, // 00B6 CALL R22 1 + 0x8C5C0531, // 00B7 GETMET R23 R2 K49 + 0x7C5C0200, // 00B8 CALL R23 1 + 0x8C5C2F32, // 00B9 GETMET R23 R23 K50 + 0x5C642400, // 00BA MOVE R25 R18 + 0x5C682C00, // 00BB MOVE R26 R22 + 0x5C6C2000, // 00BC MOVE R27 R16 + 0x7C5C0800, // 00BD CALL R23 4 + 0x5C602E00, // 00BE MOVE R24 R23 + 0x74620008, // 00BF JMPT R24 #00C9 + 0xB8620A00, // 00C0 GETNGBL R24 K5 + 0x58640033, // 00C1 LDCONST R25 K51 + 0x5868000A, // 00C2 LDCONST R26 K10 + 0x7C600400, // 00C3 CALL R24 2 + 0xB8620A00, // 00C4 GETNGBL R24 K5 + 0x58640034, // 00C5 LDCONST R25 K52 + 0x5868000A, // 00C6 LDCONST R26 K10 + 0x7C600400, // 00C7 CALL R24 2 + 0x70020003, // 00C8 JMP #00CD + 0xB8620A00, // 00C9 GETNGBL R24 K5 + 0x58640035, // 00CA LDCONST R25 K53 + 0x58680007, // 00CB LDCONST R26 K7 + 0x7C600400, // 00CC CALL R24 2 + 0x8C600511, // 00CD GETMET R24 R2 K17 + 0x7C600200, // 00CE CALL R24 1 + 0x8C603112, // 00CF GETMET R24 R24 K18 + 0x88680713, // 00D0 GETMBR R26 R3 K19 + 0x7C600400, // 00D1 CALL R24 2 + 0x8C603112, // 00D2 GETMET R24 R24 K18 + 0x88680714, // 00D3 GETMBR R26 R3 K20 + 0x7C600400, // 00D4 CALL R24 2 + 0x8C603112, // 00D5 GETMET R24 R24 K18 + 0x88680936, // 00D6 GETMBR R26 R4 K54 0x7C600400, // 00D7 CALL R24 2 - 0x8C603113, // 00D8 GETMET R24 R24 K19 - 0x88680715, // 00D9 GETMBR R26 R3 K21 - 0x7C600400, // 00DA CALL R24 2 - 0x8C603113, // 00DB GETMET R24 R24 K19 - 0x88680937, // 00DC GETMBR R26 R4 K55 - 0x7C600400, // 00DD CALL R24 2 - 0x8C603116, // 00DE GETMET R24 R24 K22 - 0x7C600200, // 00DF CALL R24 1 - 0x5C143000, // 00E0 MOVE R5 R24 - 0x4C600000, // 00E1 LDNIL R24 - 0x900E2818, // 00E2 SETMBR R3 K20 R24 - 0x4C600000, // 00E3 LDNIL R24 - 0x900E2A18, // 00E4 SETMBR R3 K21 R24 - 0x8C600519, // 00E5 GETMET R24 R2 K25 - 0x7C600200, // 00E6 CALL R24 1 - 0x8C60311A, // 00E7 GETMET R24 R24 K26 - 0x8868071B, // 00E8 GETMBR R26 R3 K27 - 0x8C6C071C, // 00E9 GETMET R27 R3 K28 - 0x7C6C0200, // 00EA CALL R27 1 - 0x006C3605, // 00EB ADD R27 R27 R5 - 0x60700015, // 00EC GETGBL R28 G21 - 0x7C700000, // 00ED CALL R28 0 - 0x8C703917, // 00EE GETMET R28 R28 K23 - 0x88780138, // 00EF GETMBR R30 R0 K56 - 0x7C700400, // 00F0 CALL R28 2 - 0x5476002F, // 00F1 LDINT R29 48 - 0x7C600A00, // 00F2 CALL R24 5 - 0x5466000E, // 00F3 LDINT R25 15 - 0x40660619, // 00F4 CONNECT R25 K3 R25 - 0x94643019, // 00F5 GETIDX R25 R24 R25 - 0x546A000F, // 00F6 LDINT R26 16 - 0x546E001E, // 00F7 LDINT R27 31 - 0x4068341B, // 00F8 CONNECT R26 R26 R27 - 0x9468301A, // 00F9 GETIDX R26 R24 R26 - 0x546E001F, // 00FA LDINT R27 32 - 0x5472002E, // 00FB LDINT R28 47 - 0x406C361C, // 00FC CONNECT R27 R27 R28 - 0x946C301B, // 00FD GETIDX R27 R24 R27 - 0xB8720A00, // 00FE GETNGBL R28 K5 - 0x8C703939, // 00FF GETMET R28 R28 K57 - 0x7C700200, // 0100 CALL R28 1 - 0x8C740109, // 0101 GETMET R29 R0 K9 - 0x5C7C0200, // 0102 MOVE R31 R1 - 0x58800003, // 0103 LDCONST R32 K3 - 0x58840003, // 0104 LDCONST R33 K3 - 0x58880003, // 0105 LDCONST R34 K3 - 0x508C0200, // 0106 LDBOOL R35 1 0 - 0x7C740C00, // 0107 CALL R29 6 - 0x8C74073A, // 0108 GETMET R29 R3 K58 - 0x7C740200, // 0109 CALL R29 1 - 0x8C74073B, // 010A GETMET R29 R3 K59 - 0x5C7C3200, // 010B MOVE R31 R25 - 0x5C803400, // 010C MOVE R32 R26 - 0x5C843600, // 010D MOVE R33 R27 - 0x5C883800, // 010E MOVE R34 R28 - 0x7C740A00, // 010F CALL R29 5 - 0x900E7903, // 0110 SETMBR R3 K60 K3 - 0x8C74073D, // 0111 GETMET R29 R3 K61 - 0x7C740200, // 0112 CALL R29 1 - 0x8C74073E, // 0113 GETMET R29 R3 K62 - 0x507C0200, // 0114 LDBOOL R31 1 0 - 0x7C740400, // 0115 CALL R29 2 - 0x8C74073F, // 0116 GETMET R29 R3 K63 - 0x7C740200, // 0117 CALL R29 1 - 0x8C740740, // 0118 GETMET R29 R3 K64 - 0x7C740200, // 0119 CALL R29 1 - 0x8C740741, // 011A GETMET R29 R3 K65 - 0x7C740200, // 011B CALL R29 1 - 0x50740200, // 011C LDBOOL R29 1 0 - 0x80043A00, // 011D RET 1 R29 + 0x8C603115, // 00D8 GETMET R24 R24 K21 + 0x7C600200, // 00D9 CALL R24 1 + 0x5C143000, // 00DA MOVE R5 R24 + 0x4C600000, // 00DB LDNIL R24 + 0x900E2618, // 00DC SETMBR R3 K19 R24 + 0x4C600000, // 00DD LDNIL R24 + 0x900E2818, // 00DE SETMBR R3 K20 R24 + 0x8C600518, // 00DF GETMET R24 R2 K24 + 0x7C600200, // 00E0 CALL R24 1 + 0x8C603119, // 00E1 GETMET R24 R24 K25 + 0x8868071A, // 00E2 GETMBR R26 R3 K26 + 0x8C6C071B, // 00E3 GETMET R27 R3 K27 + 0x7C6C0200, // 00E4 CALL R27 1 + 0x006C3605, // 00E5 ADD R27 R27 R5 + 0x60700015, // 00E6 GETGBL R28 G21 + 0x7C700000, // 00E7 CALL R28 0 + 0x8C703916, // 00E8 GETMET R28 R28 K22 + 0x88780137, // 00E9 GETMBR R30 R0 K55 + 0x7C700400, // 00EA CALL R28 2 + 0x5476002F, // 00EB LDINT R29 48 + 0x7C600A00, // 00EC CALL R24 5 + 0x5466000E, // 00ED LDINT R25 15 + 0x40660619, // 00EE CONNECT R25 K3 R25 + 0x94643019, // 00EF GETIDX R25 R24 R25 + 0x546A000F, // 00F0 LDINT R26 16 + 0x546E001E, // 00F1 LDINT R27 31 + 0x4068341B, // 00F2 CONNECT R26 R26 R27 + 0x9468301A, // 00F3 GETIDX R26 R24 R26 + 0x546E001F, // 00F4 LDINT R27 32 + 0x5472002E, // 00F5 LDINT R28 47 + 0x406C361C, // 00F6 CONNECT R27 R27 R28 + 0x946C301B, // 00F7 GETIDX R27 R24 R27 + 0xB8727000, // 00F8 GETNGBL R28 K56 + 0x8C703939, // 00F9 GETMET R28 R28 K57 + 0x7C700200, // 00FA CALL R28 1 + 0x8C740108, // 00FB GETMET R29 R0 K8 + 0x5C7C0200, // 00FC MOVE R31 R1 + 0x58800003, // 00FD LDCONST R32 K3 + 0x58840003, // 00FE LDCONST R33 K3 + 0x58880003, // 00FF LDCONST R34 K3 + 0x508C0200, // 0100 LDBOOL R35 1 0 + 0x7C740C00, // 0101 CALL R29 6 + 0x8C74073A, // 0102 GETMET R29 R3 K58 + 0x7C740200, // 0103 CALL R29 1 + 0x8C74073B, // 0104 GETMET R29 R3 K59 + 0x5C7C3200, // 0105 MOVE R31 R25 + 0x5C803400, // 0106 MOVE R32 R26 + 0x5C843600, // 0107 MOVE R33 R27 + 0x5C883800, // 0108 MOVE R34 R28 + 0x7C740A00, // 0109 CALL R29 5 + 0x900E7903, // 010A SETMBR R3 K60 K3 + 0x8C74073D, // 010B GETMET R29 R3 K61 + 0x7C740200, // 010C CALL R29 1 + 0x8C74073E, // 010D GETMET R29 R3 K62 + 0x507C0200, // 010E LDBOOL R31 1 0 + 0x7C740400, // 010F CALL R29 2 + 0x8C74073F, // 0110 GETMET R29 R3 K63 + 0x7C740200, // 0111 CALL R29 1 + 0x8C740740, // 0112 GETMET R29 R3 K64 + 0x7C740200, // 0113 CALL R29 1 + 0x8C740741, // 0114 GETMET R29 R3 K65 + 0x7C740200, // 0115 CALL R29 1 + 0x50740200, // 0116 LDBOOL R29 1 0 + 0x80043A00, // 0117 RET 1 R29 }) ) ); @@ -1266,7 +1240,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1274,115 +1248,112 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ + ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(device), /* K1 */ be_nested_str_weak(is_commissioning_open), /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(parse_PBKDFParamRequest), - /* K8 */ be_nested_str_weak(parse_Pake1), - /* K9 */ be_nested_str_weak(parse_Pake3), - /* K10 */ be_nested_str_weak(parse_Sigma1), - /* K11 */ be_nested_str_weak(parse_Sigma3), - /* K12 */ be_nested_str_weak(parse_StatusReport), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(parse_PBKDFParamRequest), + /* K7 */ be_nested_str_weak(parse_Pake1), + /* K8 */ be_nested_str_weak(parse_Pake3), + /* K9 */ be_nested_str_weak(parse_Sigma1), + /* K10 */ be_nested_str_weak(parse_Sigma3), + /* K11 */ be_nested_str_weak(parse_StatusReport), + /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), }), be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[90]) { /* code */ + ( &(const binstruction[88]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x7C080200, // 0002 CALL R2 1 - 0x740A000E, // 0003 JMPT R2 #0013 + 0x740A000D, // 0003 JMPT R2 #0012 0x88080302, // 0004 GETMBR R2 R1 K2 0x540E001F, // 0005 LDINT R3 32 0x28080403, // 0006 GE R2 R2 R3 - 0x780A000A, // 0007 JMPF R2 #0013 + 0x780A0009, // 0007 JMPF R2 #0012 0x88080302, // 0008 GETMBR R2 R1 K2 0x540E0023, // 0009 LDINT R3 36 0x18080403, // 000A LE R2 R2 R3 - 0x780A0006, // 000B JMPF R2 #0013 + 0x780A0005, // 000B JMPF R2 #0012 0xB80A0600, // 000C GETNGBL R2 K3 - 0x8C080504, // 000D GETMET R2 R2 K4 + 0x580C0004, // 000D LDCONST R3 K4 0x58100005, // 000E LDCONST R4 K5 - 0x58140006, // 000F LDCONST R5 K6 - 0x7C080600, // 0010 CALL R2 3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x80040400, // 0012 RET 1 R2 - 0x88080302, // 0013 GETMBR R2 R1 K2 - 0x540E000F, // 0014 LDINT R3 16 - 0x1C080403, // 0015 EQ R2 R2 R3 - 0x780A0000, // 0016 JMPF R2 #0018 - 0x7002003F, // 0017 JMP #0058 - 0x88080302, // 0018 GETMBR R2 R1 K2 - 0x540E001F, // 0019 LDINT R3 32 - 0x1C080403, // 001A EQ R2 R2 R3 - 0x780A0004, // 001B JMPF R2 #0021 - 0x8C080107, // 001C GETMET R2 R0 K7 - 0x5C100200, // 001D MOVE R4 R1 - 0x7C080400, // 001E CALL R2 2 - 0x80040400, // 001F RET 1 R2 - 0x70020036, // 0020 JMP #0058 - 0x88080302, // 0021 GETMBR R2 R1 K2 - 0x540E0021, // 0022 LDINT R3 34 - 0x1C080403, // 0023 EQ R2 R2 R3 - 0x780A0004, // 0024 JMPF R2 #002A - 0x8C080108, // 0025 GETMET R2 R0 K8 - 0x5C100200, // 0026 MOVE R4 R1 - 0x7C080400, // 0027 CALL R2 2 - 0x80040400, // 0028 RET 1 R2 - 0x7002002D, // 0029 JMP #0058 - 0x88080302, // 002A GETMBR R2 R1 K2 - 0x540E0023, // 002B LDINT R3 36 - 0x1C080403, // 002C EQ R2 R2 R3 - 0x780A0004, // 002D JMPF R2 #0033 - 0x8C080109, // 002E GETMET R2 R0 K9 - 0x5C100200, // 002F MOVE R4 R1 - 0x7C080400, // 0030 CALL R2 2 - 0x80040400, // 0031 RET 1 R2 - 0x70020024, // 0032 JMP #0058 - 0x88080302, // 0033 GETMBR R2 R1 K2 - 0x540E002F, // 0034 LDINT R3 48 - 0x1C080403, // 0035 EQ R2 R2 R3 - 0x780A0004, // 0036 JMPF R2 #003C - 0x8C08010A, // 0037 GETMET R2 R0 K10 - 0x5C100200, // 0038 MOVE R4 R1 - 0x7C080400, // 0039 CALL R2 2 - 0x80040400, // 003A RET 1 R2 - 0x7002001B, // 003B JMP #0058 - 0x88080302, // 003C GETMBR R2 R1 K2 - 0x540E0031, // 003D LDINT R3 50 - 0x1C080403, // 003E EQ R2 R2 R3 - 0x780A0004, // 003F JMPF R2 #0045 - 0x8C08010B, // 0040 GETMET R2 R0 K11 - 0x5C100200, // 0041 MOVE R4 R1 - 0x7C080400, // 0042 CALL R2 2 - 0x80040400, // 0043 RET 1 R2 - 0x70020012, // 0044 JMP #0058 - 0x88080302, // 0045 GETMBR R2 R1 K2 - 0x540E003F, // 0046 LDINT R3 64 - 0x1C080403, // 0047 EQ R2 R2 R3 - 0x780A0004, // 0048 JMPF R2 #004E - 0x8C08010C, // 0049 GETMET R2 R0 K12 - 0x5C100200, // 004A MOVE R4 R1 - 0x7C080400, // 004B CALL R2 2 - 0x80040400, // 004C RET 1 R2 - 0x70020009, // 004D JMP #0058 - 0xB80A0600, // 004E GETNGBL R2 K3 - 0x8C080504, // 004F GETMET R2 R2 K4 - 0x60100018, // 0050 GETGBL R4 G24 - 0x5814000D, // 0051 LDCONST R5 K13 - 0x88180302, // 0052 GETMBR R6 R1 K2 - 0x7C100400, // 0053 CALL R4 2 - 0x58140006, // 0054 LDCONST R5 K6 - 0x7C080600, // 0055 CALL R2 3 + 0x7C080400, // 000F CALL R2 2 + 0x50080000, // 0010 LDBOOL R2 0 0 + 0x80040400, // 0011 RET 1 R2 + 0x88080302, // 0012 GETMBR R2 R1 K2 + 0x540E000F, // 0013 LDINT R3 16 + 0x1C080403, // 0014 EQ R2 R2 R3 + 0x780A0000, // 0015 JMPF R2 #0017 + 0x7002003E, // 0016 JMP #0056 + 0x88080302, // 0017 GETMBR R2 R1 K2 + 0x540E001F, // 0018 LDINT R3 32 + 0x1C080403, // 0019 EQ R2 R2 R3 + 0x780A0004, // 001A JMPF R2 #0020 + 0x8C080106, // 001B GETMET R2 R0 K6 + 0x5C100200, // 001C MOVE R4 R1 + 0x7C080400, // 001D CALL R2 2 + 0x80040400, // 001E RET 1 R2 + 0x70020035, // 001F JMP #0056 + 0x88080302, // 0020 GETMBR R2 R1 K2 + 0x540E0021, // 0021 LDINT R3 34 + 0x1C080403, // 0022 EQ R2 R2 R3 + 0x780A0004, // 0023 JMPF R2 #0029 + 0x8C080107, // 0024 GETMET R2 R0 K7 + 0x5C100200, // 0025 MOVE R4 R1 + 0x7C080400, // 0026 CALL R2 2 + 0x80040400, // 0027 RET 1 R2 + 0x7002002C, // 0028 JMP #0056 + 0x88080302, // 0029 GETMBR R2 R1 K2 + 0x540E0023, // 002A LDINT R3 36 + 0x1C080403, // 002B EQ R2 R2 R3 + 0x780A0004, // 002C JMPF R2 #0032 + 0x8C080108, // 002D GETMET R2 R0 K8 + 0x5C100200, // 002E MOVE R4 R1 + 0x7C080400, // 002F CALL R2 2 + 0x80040400, // 0030 RET 1 R2 + 0x70020023, // 0031 JMP #0056 + 0x88080302, // 0032 GETMBR R2 R1 K2 + 0x540E002F, // 0033 LDINT R3 48 + 0x1C080403, // 0034 EQ R2 R2 R3 + 0x780A0004, // 0035 JMPF R2 #003B + 0x8C080109, // 0036 GETMET R2 R0 K9 + 0x5C100200, // 0037 MOVE R4 R1 + 0x7C080400, // 0038 CALL R2 2 + 0x80040400, // 0039 RET 1 R2 + 0x7002001A, // 003A JMP #0056 + 0x88080302, // 003B GETMBR R2 R1 K2 + 0x540E0031, // 003C LDINT R3 50 + 0x1C080403, // 003D EQ R2 R2 R3 + 0x780A0004, // 003E JMPF R2 #0044 + 0x8C08010A, // 003F GETMET R2 R0 K10 + 0x5C100200, // 0040 MOVE R4 R1 + 0x7C080400, // 0041 CALL R2 2 + 0x80040400, // 0042 RET 1 R2 + 0x70020011, // 0043 JMP #0056 + 0x88080302, // 0044 GETMBR R2 R1 K2 + 0x540E003F, // 0045 LDINT R3 64 + 0x1C080403, // 0046 EQ R2 R2 R3 + 0x780A0004, // 0047 JMPF R2 #004D + 0x8C08010B, // 0048 GETMET R2 R0 K11 + 0x5C100200, // 0049 MOVE R4 R1 + 0x7C080400, // 004A CALL R2 2 + 0x80040400, // 004B RET 1 R2 + 0x70020008, // 004C JMP #0056 + 0xB80A0600, // 004D GETNGBL R2 K3 + 0x600C0018, // 004E GETGBL R3 G24 + 0x5810000C, // 004F LDCONST R4 K12 + 0x88140302, // 0050 GETMBR R5 R1 K2 + 0x7C0C0400, // 0051 CALL R3 2 + 0x58100005, // 0052 LDCONST R4 K5 + 0x7C080400, // 0053 CALL R2 2 + 0x50080000, // 0054 LDBOOL R2 0 0 + 0x80040400, // 0055 RET 1 R2 0x50080000, // 0056 LDBOOL R2 0 0 0x80040400, // 0057 RET 1 R2 - 0x50080000, // 0058 LDBOOL R2 0 0 - 0x80040400, // 0059 RET 1 R2 }) ) ); @@ -1410,55 +1381,55 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ /* K3 */ be_nested_str_weak(local_session_id), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(send_status_report), - /* K11 */ be_const_int(1), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(matter), - /* K14 */ be_nested_str_weak(Sigma1), - /* K15 */ be_nested_str_weak(parse), - /* K16 */ be_nested_str_weak(raw), - /* K17 */ be_nested_str_weak(app_payload_idx), - /* K18 */ be_nested_str_weak(__initiator_pub), - /* K19 */ be_nested_str_weak(initiatorEphPubKey), - /* K20 */ be_nested_str_weak(resumptionID), - /* K21 */ be_nested_str_weak(initiatorResumeMIC), - /* K22 */ be_nested_str_weak(device), - /* K23 */ be_nested_str_weak(sessions), - /* K24 */ be_nested_str_weak(find_session_by_resumption_id), - /* K25 */ be_nested_str_weak(_fabric), - /* K26 */ be_nested_str_weak(initiatorRandom), - /* K27 */ be_nested_str_weak(fromstring), - /* K28 */ be_nested_str_weak(Sigma1_Resume), - /* K29 */ be_nested_str_weak(HKDF_SHA256), - /* K30 */ be_nested_str_weak(derive), - /* K31 */ be_nested_str_weak(shared_secret), - /* K32 */ be_nested_str_weak(NCASE_SigmaS1), - /* K33 */ be_const_int(2147483647), - /* K34 */ be_nested_str_weak(AES_CCM), - /* K35 */ be_nested_str_weak(decrypt), - /* K36 */ be_nested_str_weak(tag), - /* K37 */ be_nested_str_weak(_source_node_id), - /* K38 */ be_nested_str_weak(source_node_id), - /* K39 */ be_nested_str_weak(set_mode_CASE), - /* K40 */ be_nested_str_weak(__future_initiator_session_id), - /* K41 */ be_nested_str_weak(initiator_session_id), - /* K42 */ be_nested_str_weak(__future_local_session_id), - /* K43 */ be_nested_str_weak(gen_local_session_id), - /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K45 */ be_nested_str_weak(remote_ip), - /* K46 */ be_nested_str_weak(remote_port), - /* K47 */ be_nested_str_weak(resumption_id), - /* K48 */ be_nested_str_weak(random), - /* K49 */ be_nested_str_weak(Sigma2_Resume), - /* K50 */ be_nested_str_weak(NCASE_SigmaS2), - /* K51 */ be_nested_str_weak(Sigma2Resume), - /* K52 */ be_nested_str_weak(responderSessionID), - /* K53 */ be_nested_str_weak(sigma2ResumeMIC), - /* K54 */ be_nested_str_weak(SessionResumptionKeys), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(send_status_report), + /* K10 */ be_const_int(1), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(matter), + /* K13 */ be_nested_str_weak(Sigma1), + /* K14 */ be_nested_str_weak(parse), + /* K15 */ be_nested_str_weak(raw), + /* K16 */ be_nested_str_weak(app_payload_idx), + /* K17 */ be_nested_str_weak(__initiator_pub), + /* K18 */ be_nested_str_weak(initiatorEphPubKey), + /* K19 */ be_nested_str_weak(resumptionID), + /* K20 */ be_nested_str_weak(initiatorResumeMIC), + /* K21 */ be_nested_str_weak(device), + /* K22 */ be_nested_str_weak(sessions), + /* K23 */ be_nested_str_weak(find_session_by_resumption_id), + /* K24 */ be_nested_str_weak(_fabric), + /* K25 */ be_nested_str_weak(initiatorRandom), + /* K26 */ be_nested_str_weak(fromstring), + /* K27 */ be_nested_str_weak(Sigma1_Resume), + /* K28 */ be_nested_str_weak(HKDF_SHA256), + /* K29 */ be_nested_str_weak(derive), + /* K30 */ be_nested_str_weak(shared_secret), + /* K31 */ be_nested_str_weak(NCASE_SigmaS1), + /* K32 */ be_const_int(2147483647), + /* K33 */ be_nested_str_weak(AES_CCM), + /* K34 */ be_nested_str_weak(decrypt), + /* K35 */ be_nested_str_weak(tag), + /* K36 */ be_nested_str_weak(_source_node_id), + /* K37 */ be_nested_str_weak(source_node_id), + /* K38 */ be_nested_str_weak(set_mode_CASE), + /* K39 */ be_nested_str_weak(__future_initiator_session_id), + /* K40 */ be_nested_str_weak(initiator_session_id), + /* K41 */ be_nested_str_weak(__future_local_session_id), + /* K42 */ be_nested_str_weak(gen_local_session_id), + /* K43 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K44 */ be_nested_str_weak(remote_ip), + /* K45 */ be_nested_str_weak(remote_port), + /* K46 */ be_nested_str_weak(resumption_id), + /* K47 */ be_nested_str_weak(random), + /* K48 */ be_nested_str_weak(Sigma2_Resume), + /* K49 */ be_nested_str_weak(NCASE_SigmaS2), + /* K50 */ be_nested_str_weak(Sigma2Resume), + /* K51 */ be_nested_str_weak(responderSessionID), + /* K52 */ be_nested_str_weak(sigma2ResumeMIC), + /* K53 */ be_nested_str_weak(SessionResumptionKeys), + /* K54 */ be_nested_str_weak(tasmota), /* K55 */ be_nested_str_weak(rtc_utc), /* K56 */ be_nested_str_weak(tlv2raw), /* K57 */ be_nested_str_weak(__Msg1), @@ -1510,7 +1481,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ }), be_str_weak(parse_Sigma1), &be_const_str_solidified, - ( &(const binstruction[481]) { /* code */ + ( &(const binstruction[476]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -1522,476 +1493,471 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x74120002, // 0008 JMPT R4 #000C 0x88100305, // 0009 GETMBR R4 R1 K5 0x20100904, // 000A NE R4 R4 K4 - 0x7812000D, // 000B JMPF R4 #001A + 0x7812000C, // 000B JMPF R4 #0019 0xB8120C00, // 000C GETNGBL R4 K6 - 0x8C100907, // 000D GETMET R4 R4 K7 + 0x58140007, // 000D LDCONST R5 K7 0x58180008, // 000E LDCONST R6 K8 - 0x581C0009, // 000F LDCONST R7 K9 - 0x7C100600, // 0010 CALL R4 3 - 0x8C10010A, // 0011 GETMET R4 R0 K10 - 0x5C180200, // 0012 MOVE R6 R1 - 0x581C000B, // 0013 LDCONST R7 K11 - 0x58200004, // 0014 LDCONST R8 K4 - 0x5824000C, // 0015 LDCONST R9 K12 - 0x50280000, // 0016 LDBOOL R10 0 0 - 0x7C100C00, // 0017 CALL R4 6 - 0x50100000, // 0018 LDBOOL R4 0 0 - 0x80040800, // 0019 RET 1 R4 - 0xB8121A00, // 001A GETNGBL R4 K13 - 0x8C10090E, // 001B GETMET R4 R4 K14 - 0x7C100200, // 001C CALL R4 1 - 0x8C10090F, // 001D GETMET R4 R4 K15 - 0x88180310, // 001E GETMBR R6 R1 K16 - 0x881C0311, // 001F GETMBR R7 R1 K17 - 0x7C100600, // 0020 CALL R4 3 - 0x88140913, // 0021 GETMBR R5 R4 K19 - 0x900E2405, // 0022 SETMBR R3 K18 R5 - 0x88140914, // 0023 GETMBR R5 R4 K20 - 0x4C180000, // 0024 LDNIL R6 - 0x20140A06, // 0025 NE R5 R5 R6 - 0x78160003, // 0026 JMPF R5 #002B - 0x88140915, // 0027 GETMBR R5 R4 K21 - 0x4C180000, // 0028 LDNIL R6 - 0x20140A06, // 0029 NE R5 R5 R6 - 0x74160000, // 002A JMPT R5 #002C - 0x50140001, // 002B LDBOOL R5 0 1 - 0x50140200, // 002C LDBOOL R5 1 0 - 0x50140000, // 002D LDBOOL R5 0 0 - 0x4C180000, // 002E LDNIL R6 - 0x7816000D, // 002F JMPF R5 #003E - 0x881C0116, // 0030 GETMBR R7 R0 K22 - 0x881C0F17, // 0031 GETMBR R7 R7 K23 - 0x8C1C0F18, // 0032 GETMET R7 R7 K24 - 0x88240914, // 0033 GETMBR R9 R4 K20 - 0x7C1C0400, // 0034 CALL R7 2 - 0x5C180E00, // 0035 MOVE R6 R7 - 0x4C1C0000, // 0036 LDNIL R7 - 0x1C1C0C07, // 0037 EQ R7 R6 R7 - 0x741E0003, // 0038 JMPT R7 #003D - 0x881C0D19, // 0039 GETMBR R7 R6 K25 - 0x4C200000, // 003A LDNIL R8 - 0x1C1C0E08, // 003B EQ R7 R7 R8 - 0x781E0000, // 003C JMPF R7 #003E - 0x50140000, // 003D LDBOOL R5 0 0 - 0x781600B5, // 003E JMPF R5 #00F5 - 0x881C091A, // 003F GETMBR R7 R4 K26 - 0x88200914, // 0040 GETMBR R8 R4 K20 - 0x001C0E08, // 0041 ADD R7 R7 R8 - 0x60200015, // 0042 GETGBL R8 G21 - 0x7C200000, // 0043 CALL R8 0 - 0x8C20111B, // 0044 GETMET R8 R8 K27 - 0x5828001C, // 0045 LDCONST R10 K28 - 0x7C200400, // 0046 CALL R8 2 - 0x8C24051D, // 0047 GETMET R9 R2 K29 - 0x7C240200, // 0048 CALL R9 1 - 0x8C24131E, // 0049 GETMET R9 R9 K30 - 0x882C0D1F, // 004A GETMBR R11 R6 K31 - 0x5C300E00, // 004B MOVE R12 R7 - 0x5C341000, // 004C MOVE R13 R8 - 0x543A000F, // 004D LDINT R14 16 - 0x7C240A00, // 004E CALL R9 5 - 0x60280015, // 004F GETGBL R10 G21 - 0x7C280000, // 0050 CALL R10 0 - 0x8C28151B, // 0051 GETMET R10 R10 K27 - 0x58300020, // 0052 LDCONST R12 K32 - 0x7C280400, // 0053 CALL R10 2 - 0x542DFFEE, // 0054 LDINT R11 -17 - 0x402E080B, // 0055 CONNECT R11 K4 R11 - 0x88300915, // 0056 GETMBR R12 R4 K21 - 0x942C180B, // 0057 GETIDX R11 R12 R11 - 0x5435FFEF, // 0058 LDINT R13 -16 - 0x40341B21, // 0059 CONNECT R13 R13 K33 - 0x88380915, // 005A GETMBR R14 R4 K21 - 0x94301C0D, // 005B GETIDX R12 R14 R13 - 0x8C3C0522, // 005C GETMET R15 R2 K34 - 0x5C441200, // 005D MOVE R17 R9 - 0x5C481400, // 005E MOVE R18 R10 - 0x604C0015, // 005F GETGBL R19 G21 - 0x7C4C0000, // 0060 CALL R19 0 - 0x6050000C, // 0061 GETGBL R20 G12 - 0x5C541600, // 0062 MOVE R21 R11 - 0x7C500200, // 0063 CALL R20 1 - 0x5456000F, // 0064 LDINT R21 16 - 0x7C3C0C00, // 0065 CALL R15 6 - 0x5C341E00, // 0066 MOVE R13 R15 - 0x8C3C1B23, // 0067 GETMET R15 R13 K35 - 0x5C441600, // 0068 MOVE R17 R11 - 0x7C3C0400, // 0069 CALL R15 2 - 0x5C381E00, // 006A MOVE R14 R15 - 0x8C3C1B24, // 006B GETMET R15 R13 K36 - 0x7C3C0200, // 006C CALL R15 1 - 0x1C40180F, // 006D EQ R16 R12 R15 - 0x78420084, // 006E JMPF R16 #00F4 - 0x88400D19, // 006F GETMBR R16 R6 K25 - 0x900E3210, // 0070 SETMBR R3 K25 R16 - 0x88400326, // 0071 GETMBR R16 R1 K38 - 0x900E4A10, // 0072 SETMBR R3 K37 R16 - 0x8C400727, // 0073 GETMET R16 R3 K39 - 0x7C400200, // 0074 CALL R16 1 - 0x88400929, // 0075 GETMBR R16 R4 K41 - 0x900E5010, // 0076 SETMBR R3 K40 R16 - 0x88400116, // 0077 GETMBR R16 R0 K22 - 0x88402117, // 0078 GETMBR R16 R16 K23 - 0x8C40212B, // 0079 GETMET R16 R16 K43 - 0x7C400200, // 007A CALL R16 1 - 0x900E5410, // 007B SETMBR R3 K42 R16 - 0xB8420C00, // 007C GETNGBL R16 K6 - 0x8C402107, // 007D GETMET R16 R16 K7 - 0x60480018, // 007E GETGBL R18 G24 - 0x584C002C, // 007F LDCONST R19 K44 - 0x8850072A, // 0080 GETMBR R20 R3 K42 - 0x8854032D, // 0081 GETMBR R21 R1 K45 - 0x8858032E, // 0082 GETMBR R22 R1 K46 - 0x7C480800, // 0083 CALL R18 4 - 0x584C0009, // 0084 LDCONST R19 K9 - 0x7C400600, // 0085 CALL R16 3 - 0x88400D1F, // 0086 GETMBR R16 R6 K31 - 0x900E3E10, // 0087 SETMBR R3 K31 R16 - 0x8C400530, // 0088 GETMET R16 R2 K48 - 0x544A000F, // 0089 LDINT R18 16 - 0x7C400400, // 008A CALL R16 2 - 0x900E5E10, // 008B SETMBR R3 K47 R16 - 0x60400015, // 008C GETGBL R16 G21 - 0x7C400000, // 008D CALL R16 0 - 0x8C40211B, // 008E GETMET R16 R16 K27 - 0x58480031, // 008F LDCONST R18 K49 - 0x7C400400, // 0090 CALL R16 2 - 0x8844091A, // 0091 GETMBR R17 R4 K26 - 0x8848072F, // 0092 GETMBR R18 R3 K47 - 0x00442212, // 0093 ADD R17 R17 R18 - 0x8C48051D, // 0094 GETMET R18 R2 K29 - 0x7C480200, // 0095 CALL R18 1 - 0x8C48251E, // 0096 GETMET R18 R18 K30 - 0x8850071F, // 0097 GETMBR R20 R3 K31 - 0x5C542200, // 0098 MOVE R21 R17 - 0x5C582000, // 0099 MOVE R22 R16 - 0x545E000F, // 009A LDINT R23 16 - 0x7C480A00, // 009B CALL R18 5 - 0x8C4C0522, // 009C GETMET R19 R2 K34 - 0x5C542400, // 009D MOVE R21 R18 - 0x60580015, // 009E GETGBL R22 G21 - 0x7C580000, // 009F CALL R22 0 - 0x8C582D1B, // 00A0 GETMET R22 R22 K27 - 0x58600032, // 00A1 LDCONST R24 K50 - 0x7C580400, // 00A2 CALL R22 2 - 0x605C0015, // 00A3 GETGBL R23 G21 - 0x7C5C0000, // 00A4 CALL R23 0 - 0x58600004, // 00A5 LDCONST R24 K4 - 0x5466000F, // 00A6 LDINT R25 16 - 0x7C4C0C00, // 00A7 CALL R19 6 - 0x8C502724, // 00A8 GETMET R20 R19 K36 - 0x7C500200, // 00A9 CALL R20 1 - 0xB8561A00, // 00AA GETNGBL R21 K13 - 0x8C542B33, // 00AB GETMET R21 R21 K51 - 0x7C540200, // 00AC CALL R21 1 - 0x8858072F, // 00AD GETMBR R22 R3 K47 - 0x90562816, // 00AE SETMBR R21 K20 R22 - 0x8858072A, // 00AF GETMBR R22 R3 K42 - 0x90566816, // 00B0 SETMBR R21 K52 R22 - 0x90566A14, // 00B1 SETMBR R21 K53 R20 - 0x8C58051D, // 00B2 GETMET R22 R2 K29 - 0x7C580200, // 00B3 CALL R22 1 - 0x8C582D1E, // 00B4 GETMET R22 R22 K30 - 0x8860071F, // 00B5 GETMBR R24 R3 K31 - 0x8864091A, // 00B6 GETMBR R25 R4 K26 - 0x8868072F, // 00B7 GETMBR R26 R3 K47 - 0x0064321A, // 00B8 ADD R25 R25 R26 - 0x60680015, // 00B9 GETGBL R26 G21 - 0x7C680000, // 00BA CALL R26 0 - 0x8C68351B, // 00BB GETMET R26 R26 K27 - 0x58700036, // 00BC LDCONST R28 K54 - 0x7C680400, // 00BD CALL R26 2 - 0x546E002F, // 00BE LDINT R27 48 - 0x7C580A00, // 00BF CALL R22 5 - 0x545E000E, // 00C0 LDINT R23 15 - 0x405E0817, // 00C1 CONNECT R23 K4 R23 - 0x945C2C17, // 00C2 GETIDX R23 R22 R23 - 0x5462000F, // 00C3 LDINT R24 16 - 0x5466001E, // 00C4 LDINT R25 31 - 0x40603019, // 00C5 CONNECT R24 R24 R25 - 0x94602C18, // 00C6 GETIDX R24 R22 R24 - 0x5466001F, // 00C7 LDINT R25 32 - 0x546A002E, // 00C8 LDINT R26 47 - 0x4064321A, // 00C9 CONNECT R25 R25 R26 - 0x94642C19, // 00CA GETIDX R25 R22 R25 - 0xB86A0C00, // 00CB GETNGBL R26 K6 - 0x8C683537, // 00CC GETMET R26 R26 K55 - 0x7C680200, // 00CD CALL R26 1 - 0x8C6C2B38, // 00CE GETMET R27 R21 K56 - 0x7C6C0200, // 00CF CALL R27 1 - 0x4C700000, // 00D0 LDNIL R28 - 0x900E721C, // 00D1 SETMBR R3 K57 R28 - 0x8C70033A, // 00D2 GETMET R28 R1 K58 - 0x547A0032, // 00D3 LDINT R30 51 - 0x507C0200, // 00D4 LDBOOL R31 1 0 - 0x7C700600, // 00D5 CALL R28 3 - 0x8C74393B, // 00D6 GETMET R29 R28 K59 - 0x5C7C3600, // 00D7 MOVE R31 R27 - 0x7C740400, // 00D8 CALL R29 2 - 0x8878013C, // 00D9 GETMBR R30 R0 K60 - 0x8C783D3D, // 00DA GETMET R30 R30 K61 - 0x5C803800, // 00DB MOVE R32 R28 - 0x7C780400, // 00DC CALL R30 2 - 0x8C78073E, // 00DD GETMET R30 R3 K62 - 0x7C780200, // 00DE CALL R30 1 - 0x8C78073F, // 00DF GETMET R30 R3 K63 - 0x5C802E00, // 00E0 MOVE R32 R23 - 0x5C843000, // 00E1 MOVE R33 R24 - 0x5C883200, // 00E2 MOVE R34 R25 - 0x5C8C3400, // 00E3 MOVE R35 R26 - 0x7C780A00, // 00E4 CALL R30 5 - 0x900E8104, // 00E5 SETMBR R3 K64 K4 - 0x8C780741, // 00E6 GETMET R30 R3 K65 - 0x7C780200, // 00E7 CALL R30 1 - 0x8C780742, // 00E8 GETMET R30 R3 K66 - 0x50800200, // 00E9 LDBOOL R32 1 0 - 0x7C780400, // 00EA CALL R30 2 - 0x8C780743, // 00EB GETMET R30 R3 K67 + 0x7C100400, // 000F CALL R4 2 + 0x8C100109, // 0010 GETMET R4 R0 K9 + 0x5C180200, // 0011 MOVE R6 R1 + 0x581C000A, // 0012 LDCONST R7 K10 + 0x58200004, // 0013 LDCONST R8 K4 + 0x5824000B, // 0014 LDCONST R9 K11 + 0x50280000, // 0015 LDBOOL R10 0 0 + 0x7C100C00, // 0016 CALL R4 6 + 0x50100000, // 0017 LDBOOL R4 0 0 + 0x80040800, // 0018 RET 1 R4 + 0xB8121800, // 0019 GETNGBL R4 K12 + 0x8C10090D, // 001A GETMET R4 R4 K13 + 0x7C100200, // 001B CALL R4 1 + 0x8C10090E, // 001C GETMET R4 R4 K14 + 0x8818030F, // 001D GETMBR R6 R1 K15 + 0x881C0310, // 001E GETMBR R7 R1 K16 + 0x7C100600, // 001F CALL R4 3 + 0x88140912, // 0020 GETMBR R5 R4 K18 + 0x900E2205, // 0021 SETMBR R3 K17 R5 + 0x88140913, // 0022 GETMBR R5 R4 K19 + 0x4C180000, // 0023 LDNIL R6 + 0x20140A06, // 0024 NE R5 R5 R6 + 0x78160003, // 0025 JMPF R5 #002A + 0x88140914, // 0026 GETMBR R5 R4 K20 + 0x4C180000, // 0027 LDNIL R6 + 0x20140A06, // 0028 NE R5 R5 R6 + 0x74160000, // 0029 JMPT R5 #002B + 0x50140001, // 002A LDBOOL R5 0 1 + 0x50140200, // 002B LDBOOL R5 1 0 + 0x50140000, // 002C LDBOOL R5 0 0 + 0x4C180000, // 002D LDNIL R6 + 0x7816000D, // 002E JMPF R5 #003D + 0x881C0115, // 002F GETMBR R7 R0 K21 + 0x881C0F16, // 0030 GETMBR R7 R7 K22 + 0x8C1C0F17, // 0031 GETMET R7 R7 K23 + 0x88240913, // 0032 GETMBR R9 R4 K19 + 0x7C1C0400, // 0033 CALL R7 2 + 0x5C180E00, // 0034 MOVE R6 R7 + 0x4C1C0000, // 0035 LDNIL R7 + 0x1C1C0C07, // 0036 EQ R7 R6 R7 + 0x741E0003, // 0037 JMPT R7 #003C + 0x881C0D18, // 0038 GETMBR R7 R6 K24 + 0x4C200000, // 0039 LDNIL R8 + 0x1C1C0E08, // 003A EQ R7 R7 R8 + 0x781E0000, // 003B JMPF R7 #003D + 0x50140000, // 003C LDBOOL R5 0 0 + 0x781600B4, // 003D JMPF R5 #00F3 + 0x881C0919, // 003E GETMBR R7 R4 K25 + 0x88200913, // 003F GETMBR R8 R4 K19 + 0x001C0E08, // 0040 ADD R7 R7 R8 + 0x60200015, // 0041 GETGBL R8 G21 + 0x7C200000, // 0042 CALL R8 0 + 0x8C20111A, // 0043 GETMET R8 R8 K26 + 0x5828001B, // 0044 LDCONST R10 K27 + 0x7C200400, // 0045 CALL R8 2 + 0x8C24051C, // 0046 GETMET R9 R2 K28 + 0x7C240200, // 0047 CALL R9 1 + 0x8C24131D, // 0048 GETMET R9 R9 K29 + 0x882C0D1E, // 0049 GETMBR R11 R6 K30 + 0x5C300E00, // 004A MOVE R12 R7 + 0x5C341000, // 004B MOVE R13 R8 + 0x543A000F, // 004C LDINT R14 16 + 0x7C240A00, // 004D CALL R9 5 + 0x60280015, // 004E GETGBL R10 G21 + 0x7C280000, // 004F CALL R10 0 + 0x8C28151A, // 0050 GETMET R10 R10 K26 + 0x5830001F, // 0051 LDCONST R12 K31 + 0x7C280400, // 0052 CALL R10 2 + 0x542DFFEE, // 0053 LDINT R11 -17 + 0x402E080B, // 0054 CONNECT R11 K4 R11 + 0x88300914, // 0055 GETMBR R12 R4 K20 + 0x942C180B, // 0056 GETIDX R11 R12 R11 + 0x5435FFEF, // 0057 LDINT R13 -16 + 0x40341B20, // 0058 CONNECT R13 R13 K32 + 0x88380914, // 0059 GETMBR R14 R4 K20 + 0x94301C0D, // 005A GETIDX R12 R14 R13 + 0x8C3C0521, // 005B GETMET R15 R2 K33 + 0x5C441200, // 005C MOVE R17 R9 + 0x5C481400, // 005D MOVE R18 R10 + 0x604C0015, // 005E GETGBL R19 G21 + 0x7C4C0000, // 005F CALL R19 0 + 0x6050000C, // 0060 GETGBL R20 G12 + 0x5C541600, // 0061 MOVE R21 R11 + 0x7C500200, // 0062 CALL R20 1 + 0x5456000F, // 0063 LDINT R21 16 + 0x7C3C0C00, // 0064 CALL R15 6 + 0x5C341E00, // 0065 MOVE R13 R15 + 0x8C3C1B22, // 0066 GETMET R15 R13 K34 + 0x5C441600, // 0067 MOVE R17 R11 + 0x7C3C0400, // 0068 CALL R15 2 + 0x5C381E00, // 0069 MOVE R14 R15 + 0x8C3C1B23, // 006A GETMET R15 R13 K35 + 0x7C3C0200, // 006B CALL R15 1 + 0x1C40180F, // 006C EQ R16 R12 R15 + 0x78420083, // 006D JMPF R16 #00F2 + 0x88400D18, // 006E GETMBR R16 R6 K24 + 0x900E3010, // 006F SETMBR R3 K24 R16 + 0x88400325, // 0070 GETMBR R16 R1 K37 + 0x900E4810, // 0071 SETMBR R3 K36 R16 + 0x8C400726, // 0072 GETMET R16 R3 K38 + 0x7C400200, // 0073 CALL R16 1 + 0x88400928, // 0074 GETMBR R16 R4 K40 + 0x900E4E10, // 0075 SETMBR R3 K39 R16 + 0x88400115, // 0076 GETMBR R16 R0 K21 + 0x88402116, // 0077 GETMBR R16 R16 K22 + 0x8C40212A, // 0078 GETMET R16 R16 K42 + 0x7C400200, // 0079 CALL R16 1 + 0x900E5210, // 007A SETMBR R3 K41 R16 + 0xB8420C00, // 007B GETNGBL R16 K6 + 0x60440018, // 007C GETGBL R17 G24 + 0x5848002B, // 007D LDCONST R18 K43 + 0x884C0729, // 007E GETMBR R19 R3 K41 + 0x8850032C, // 007F GETMBR R20 R1 K44 + 0x8854032D, // 0080 GETMBR R21 R1 K45 + 0x7C440800, // 0081 CALL R17 4 + 0x58480008, // 0082 LDCONST R18 K8 + 0x7C400400, // 0083 CALL R16 2 + 0x88400D1E, // 0084 GETMBR R16 R6 K30 + 0x900E3C10, // 0085 SETMBR R3 K30 R16 + 0x8C40052F, // 0086 GETMET R16 R2 K47 + 0x544A000F, // 0087 LDINT R18 16 + 0x7C400400, // 0088 CALL R16 2 + 0x900E5C10, // 0089 SETMBR R3 K46 R16 + 0x60400015, // 008A GETGBL R16 G21 + 0x7C400000, // 008B CALL R16 0 + 0x8C40211A, // 008C GETMET R16 R16 K26 + 0x58480030, // 008D LDCONST R18 K48 + 0x7C400400, // 008E CALL R16 2 + 0x88440919, // 008F GETMBR R17 R4 K25 + 0x8848072E, // 0090 GETMBR R18 R3 K46 + 0x00442212, // 0091 ADD R17 R17 R18 + 0x8C48051C, // 0092 GETMET R18 R2 K28 + 0x7C480200, // 0093 CALL R18 1 + 0x8C48251D, // 0094 GETMET R18 R18 K29 + 0x8850071E, // 0095 GETMBR R20 R3 K30 + 0x5C542200, // 0096 MOVE R21 R17 + 0x5C582000, // 0097 MOVE R22 R16 + 0x545E000F, // 0098 LDINT R23 16 + 0x7C480A00, // 0099 CALL R18 5 + 0x8C4C0521, // 009A GETMET R19 R2 K33 + 0x5C542400, // 009B MOVE R21 R18 + 0x60580015, // 009C GETGBL R22 G21 + 0x7C580000, // 009D CALL R22 0 + 0x8C582D1A, // 009E GETMET R22 R22 K26 + 0x58600031, // 009F LDCONST R24 K49 + 0x7C580400, // 00A0 CALL R22 2 + 0x605C0015, // 00A1 GETGBL R23 G21 + 0x7C5C0000, // 00A2 CALL R23 0 + 0x58600004, // 00A3 LDCONST R24 K4 + 0x5466000F, // 00A4 LDINT R25 16 + 0x7C4C0C00, // 00A5 CALL R19 6 + 0x8C502723, // 00A6 GETMET R20 R19 K35 + 0x7C500200, // 00A7 CALL R20 1 + 0xB8561800, // 00A8 GETNGBL R21 K12 + 0x8C542B32, // 00A9 GETMET R21 R21 K50 + 0x7C540200, // 00AA CALL R21 1 + 0x8858072E, // 00AB GETMBR R22 R3 K46 + 0x90562616, // 00AC SETMBR R21 K19 R22 + 0x88580729, // 00AD GETMBR R22 R3 K41 + 0x90566616, // 00AE SETMBR R21 K51 R22 + 0x90566814, // 00AF SETMBR R21 K52 R20 + 0x8C58051C, // 00B0 GETMET R22 R2 K28 + 0x7C580200, // 00B1 CALL R22 1 + 0x8C582D1D, // 00B2 GETMET R22 R22 K29 + 0x8860071E, // 00B3 GETMBR R24 R3 K30 + 0x88640919, // 00B4 GETMBR R25 R4 K25 + 0x8868072E, // 00B5 GETMBR R26 R3 K46 + 0x0064321A, // 00B6 ADD R25 R25 R26 + 0x60680015, // 00B7 GETGBL R26 G21 + 0x7C680000, // 00B8 CALL R26 0 + 0x8C68351A, // 00B9 GETMET R26 R26 K26 + 0x58700035, // 00BA LDCONST R28 K53 + 0x7C680400, // 00BB CALL R26 2 + 0x546E002F, // 00BC LDINT R27 48 + 0x7C580A00, // 00BD CALL R22 5 + 0x545E000E, // 00BE LDINT R23 15 + 0x405E0817, // 00BF CONNECT R23 K4 R23 + 0x945C2C17, // 00C0 GETIDX R23 R22 R23 + 0x5462000F, // 00C1 LDINT R24 16 + 0x5466001E, // 00C2 LDINT R25 31 + 0x40603019, // 00C3 CONNECT R24 R24 R25 + 0x94602C18, // 00C4 GETIDX R24 R22 R24 + 0x5466001F, // 00C5 LDINT R25 32 + 0x546A002E, // 00C6 LDINT R26 47 + 0x4064321A, // 00C7 CONNECT R25 R25 R26 + 0x94642C19, // 00C8 GETIDX R25 R22 R25 + 0xB86A6C00, // 00C9 GETNGBL R26 K54 + 0x8C683537, // 00CA GETMET R26 R26 K55 + 0x7C680200, // 00CB CALL R26 1 + 0x8C6C2B38, // 00CC GETMET R27 R21 K56 + 0x7C6C0200, // 00CD CALL R27 1 + 0x4C700000, // 00CE LDNIL R28 + 0x900E721C, // 00CF SETMBR R3 K57 R28 + 0x8C70033A, // 00D0 GETMET R28 R1 K58 + 0x547A0032, // 00D1 LDINT R30 51 + 0x507C0200, // 00D2 LDBOOL R31 1 0 + 0x7C700600, // 00D3 CALL R28 3 + 0x8C74393B, // 00D4 GETMET R29 R28 K59 + 0x5C7C3600, // 00D5 MOVE R31 R27 + 0x7C740400, // 00D6 CALL R29 2 + 0x8878013C, // 00D7 GETMBR R30 R0 K60 + 0x8C783D3D, // 00D8 GETMET R30 R30 K61 + 0x5C803800, // 00D9 MOVE R32 R28 + 0x7C780400, // 00DA CALL R30 2 + 0x8C78073E, // 00DB GETMET R30 R3 K62 + 0x7C780200, // 00DC CALL R30 1 + 0x8C78073F, // 00DD GETMET R30 R3 K63 + 0x5C802E00, // 00DE MOVE R32 R23 + 0x5C843000, // 00DF MOVE R33 R24 + 0x5C883200, // 00E0 MOVE R34 R25 + 0x5C8C3400, // 00E1 MOVE R35 R26 + 0x7C780A00, // 00E2 CALL R30 5 + 0x900E8104, // 00E3 SETMBR R3 K64 K4 + 0x8C780741, // 00E4 GETMET R30 R3 K65 + 0x7C780200, // 00E5 CALL R30 1 + 0x8C780742, // 00E6 GETMET R30 R3 K66 + 0x50800200, // 00E7 LDBOOL R32 1 0 + 0x7C780400, // 00E8 CALL R30 2 + 0x8C780743, // 00E9 GETMET R30 R3 K67 + 0x7C780200, // 00EA CALL R30 1 + 0x8C780744, // 00EB GETMET R30 R3 K68 0x7C780200, // 00EC CALL R30 1 - 0x8C780744, // 00ED GETMET R30 R3 K68 + 0x8C780745, // 00ED GETMET R30 R3 K69 0x7C780200, // 00EE CALL R30 1 - 0x8C780745, // 00EF GETMET R30 R3 K69 - 0x7C780200, // 00F0 CALL R30 1 - 0x50780200, // 00F1 LDBOOL R30 1 0 - 0x80043C00, // 00F2 RET 1 R30 - 0x70020000, // 00F3 JMP #00F5 - 0x50140000, // 00F4 LDBOOL R5 0 0 - 0x5C1C0A00, // 00F5 MOVE R7 R5 - 0x741E00E7, // 00F6 JMPT R7 #01DF - 0x8C1C0146, // 00F7 GETMET R7 R0 K70 - 0x88240947, // 00F8 GETMBR R9 R4 K71 - 0x8828091A, // 00F9 GETMBR R10 R4 K26 - 0x7C1C0600, // 00FA CALL R7 3 - 0x900E3207, // 00FB SETMBR R3 K25 R7 - 0x4C200000, // 00FC LDNIL R8 - 0x1C200608, // 00FD EQ R8 R3 R8 - 0x74220003, // 00FE JMPT R8 #0103 - 0x88200719, // 00FF GETMBR R8 R3 K25 - 0x4C240000, // 0100 LDNIL R9 - 0x1C201009, // 0101 EQ R8 R8 R9 - 0x7822000D, // 0102 JMPF R8 #0111 - 0xB8220C00, // 0103 GETNGBL R8 K6 - 0x8C201107, // 0104 GETMET R8 R8 K7 - 0x58280048, // 0105 LDCONST R10 K72 - 0x582C0009, // 0106 LDCONST R11 K9 - 0x7C200600, // 0107 CALL R8 3 - 0x8C20010A, // 0108 GETMET R8 R0 K10 - 0x5C280200, // 0109 MOVE R10 R1 - 0x582C000B, // 010A LDCONST R11 K11 - 0x58300004, // 010B LDCONST R12 K4 - 0x5834000B, // 010C LDCONST R13 K11 - 0x50380000, // 010D LDBOOL R14 0 0 - 0x7C200C00, // 010E CALL R8 6 - 0x50200000, // 010F LDBOOL R8 0 0 - 0x80041000, // 0110 RET 1 R8 - 0x88200326, // 0111 GETMBR R8 R1 K38 - 0x900E4A08, // 0112 SETMBR R3 K37 R8 - 0x8C200727, // 0113 GETMET R8 R3 K39 - 0x7C200200, // 0114 CALL R8 1 - 0x88200929, // 0115 GETMBR R8 R4 K41 - 0x900E5008, // 0116 SETMBR R3 K40 R8 - 0x88200116, // 0117 GETMBR R8 R0 K22 - 0x88201117, // 0118 GETMBR R8 R8 K23 - 0x8C20112B, // 0119 GETMET R8 R8 K43 - 0x7C200200, // 011A CALL R8 1 - 0x900E5408, // 011B SETMBR R3 K42 R8 - 0xB8220C00, // 011C GETNGBL R8 K6 - 0x8C201107, // 011D GETMET R8 R8 K7 - 0x60280018, // 011E GETGBL R10 G24 - 0x582C002C, // 011F LDCONST R11 K44 - 0x8830072A, // 0120 GETMBR R12 R3 K42 - 0x8834032D, // 0121 GETMBR R13 R1 K45 - 0x8838032E, // 0122 GETMBR R14 R1 K46 - 0x7C280800, // 0123 CALL R10 4 - 0x582C0009, // 0124 LDCONST R11 K9 - 0x7C200600, // 0125 CALL R8 3 - 0x8C200530, // 0126 GETMET R8 R2 K48 - 0x542A000F, // 0127 LDINT R10 16 + 0x50780200, // 00EF LDBOOL R30 1 0 + 0x80043C00, // 00F0 RET 1 R30 + 0x70020000, // 00F1 JMP #00F3 + 0x50140000, // 00F2 LDBOOL R5 0 0 + 0x5C1C0A00, // 00F3 MOVE R7 R5 + 0x741E00E4, // 00F4 JMPT R7 #01DA + 0x8C1C0146, // 00F5 GETMET R7 R0 K70 + 0x88240947, // 00F6 GETMBR R9 R4 K71 + 0x88280919, // 00F7 GETMBR R10 R4 K25 + 0x7C1C0600, // 00F8 CALL R7 3 + 0x900E3007, // 00F9 SETMBR R3 K24 R7 + 0x4C200000, // 00FA LDNIL R8 + 0x1C200608, // 00FB EQ R8 R3 R8 + 0x74220003, // 00FC JMPT R8 #0101 + 0x88200718, // 00FD GETMBR R8 R3 K24 + 0x4C240000, // 00FE LDNIL R9 + 0x1C201009, // 00FF EQ R8 R8 R9 + 0x7822000C, // 0100 JMPF R8 #010E + 0xB8220C00, // 0101 GETNGBL R8 K6 + 0x58240048, // 0102 LDCONST R9 K72 + 0x58280008, // 0103 LDCONST R10 K8 + 0x7C200400, // 0104 CALL R8 2 + 0x8C200109, // 0105 GETMET R8 R0 K9 + 0x5C280200, // 0106 MOVE R10 R1 + 0x582C000A, // 0107 LDCONST R11 K10 + 0x58300004, // 0108 LDCONST R12 K4 + 0x5834000A, // 0109 LDCONST R13 K10 + 0x50380000, // 010A LDBOOL R14 0 0 + 0x7C200C00, // 010B CALL R8 6 + 0x50200000, // 010C LDBOOL R8 0 0 + 0x80041000, // 010D RET 1 R8 + 0x88200325, // 010E GETMBR R8 R1 K37 + 0x900E4808, // 010F SETMBR R3 K36 R8 + 0x8C200726, // 0110 GETMET R8 R3 K38 + 0x7C200200, // 0111 CALL R8 1 + 0x88200928, // 0112 GETMBR R8 R4 K40 + 0x900E4E08, // 0113 SETMBR R3 K39 R8 + 0x88200115, // 0114 GETMBR R8 R0 K21 + 0x88201116, // 0115 GETMBR R8 R8 K22 + 0x8C20112A, // 0116 GETMET R8 R8 K42 + 0x7C200200, // 0117 CALL R8 1 + 0x900E5208, // 0118 SETMBR R3 K41 R8 + 0xB8220C00, // 0119 GETNGBL R8 K6 + 0x60240018, // 011A GETGBL R9 G24 + 0x5828002B, // 011B LDCONST R10 K43 + 0x882C0729, // 011C GETMBR R11 R3 K41 + 0x8830032C, // 011D GETMBR R12 R1 K44 + 0x8834032D, // 011E GETMBR R13 R1 K45 + 0x7C240800, // 011F CALL R9 4 + 0x58280008, // 0120 LDCONST R10 K8 + 0x7C200400, // 0121 CALL R8 2 + 0x8C20052F, // 0122 GETMET R8 R2 K47 + 0x542A000F, // 0123 LDINT R10 16 + 0x7C200400, // 0124 CALL R8 2 + 0x900E5C08, // 0125 SETMBR R3 K46 R8 + 0x8C20052F, // 0126 GETMET R8 R2 K47 + 0x542A001F, // 0127 LDINT R10 32 0x7C200400, // 0128 CALL R8 2 - 0x900E5E08, // 0129 SETMBR R3 K47 R8 - 0x8C200530, // 012A GETMET R8 R2 K48 - 0x542A001F, // 012B LDINT R10 32 - 0x7C200400, // 012C CALL R8 2 - 0x900E9208, // 012D SETMBR R3 K73 R8 - 0x8C20054B, // 012E GETMET R8 R2 K75 - 0x7C200200, // 012F CALL R8 1 - 0x8C20114C, // 0130 GETMET R8 R8 K76 - 0x88280749, // 0131 GETMBR R10 R3 K73 + 0x900E9208, // 0129 SETMBR R3 K73 R8 + 0x8C20054B, // 012A GETMET R8 R2 K75 + 0x7C200200, // 012B CALL R8 1 + 0x8C20114C, // 012C GETMET R8 R8 K76 + 0x88280749, // 012D GETMBR R10 R3 K73 + 0x7C200400, // 012E CALL R8 2 + 0x900E9408, // 012F SETMBR R3 K74 R8 + 0x8C20052F, // 0130 GETMET R8 R2 K47 + 0x542A001F, // 0131 LDINT R10 32 0x7C200400, // 0132 CALL R8 2 - 0x900E9408, // 0133 SETMBR R3 K74 R8 - 0x8C200530, // 0134 GETMET R8 R2 K48 - 0x542A001F, // 0135 LDINT R10 32 - 0x7C200400, // 0136 CALL R8 2 - 0x8C24054B, // 0137 GETMET R9 R2 K75 - 0x7C240200, // 0138 CALL R9 1 - 0x8C24134D, // 0139 GETMET R9 R9 K77 - 0x882C0749, // 013A GETMBR R11 R3 K73 - 0x88300913, // 013B GETMBR R12 R4 K19 - 0x7C240600, // 013C CALL R9 3 - 0x900E3E09, // 013D SETMBR R3 K31 R9 - 0xB8261A00, // 013E GETNGBL R9 K13 - 0x8824134E, // 013F GETMBR R9 R9 K78 - 0x8C24134F, // 0140 GETMET R9 R9 K79 - 0x7C240200, // 0141 CALL R9 1 - 0x8C281350, // 0142 GETMET R10 R9 K80 - 0x5830000B, // 0143 LDCONST R12 K11 - 0xB8361A00, // 0144 GETNGBL R13 K13 - 0x88341B4E, // 0145 GETMBR R13 R13 K78 - 0x88341B51, // 0146 GETMBR R13 R13 K81 - 0x8C380F52, // 0147 GETMET R14 R7 K82 - 0x7C380200, // 0148 CALL R14 1 - 0x7C280800, // 0149 CALL R10 4 - 0x8C281350, // 014A GETMET R10 R9 K80 - 0x5830000C, // 014B LDCONST R12 K12 - 0xB8361A00, // 014C GETNGBL R13 K13 - 0x88341B4E, // 014D GETMBR R13 R13 K78 - 0x88341B51, // 014E GETMBR R13 R13 K81 - 0x8C380F53, // 014F GETMET R14 R7 K83 - 0x7C380200, // 0150 CALL R14 1 - 0x7C280800, // 0151 CALL R10 4 - 0x8C281350, // 0152 GETMET R10 R9 K80 - 0x58300009, // 0153 LDCONST R12 K9 - 0xB8361A00, // 0154 GETNGBL R13 K13 - 0x88341B4E, // 0155 GETMBR R13 R13 K78 - 0x88341B51, // 0156 GETMBR R13 R13 K81 - 0x8838074A, // 0157 GETMBR R14 R3 K74 - 0x7C280800, // 0158 CALL R10 4 - 0x8C281350, // 0159 GETMET R10 R9 K80 - 0x54320003, // 015A LDINT R12 4 - 0xB8361A00, // 015B GETNGBL R13 K13 - 0x88341B4E, // 015C GETMBR R13 R13 K78 - 0x88341B51, // 015D GETMBR R13 R13 K81 - 0x88380913, // 015E GETMBR R14 R4 K19 - 0x7C280800, // 015F CALL R10 4 - 0x8C28054B, // 0160 GETMET R10 R2 K75 - 0x7C280200, // 0161 CALL R10 1 - 0x8C281554, // 0162 GETMET R10 R10 K84 - 0x8C300F55, // 0163 GETMET R12 R7 K85 - 0x7C300200, // 0164 CALL R12 1 - 0x8C341338, // 0165 GETMET R13 R9 K56 - 0x7C340200, // 0166 CALL R13 1 - 0x7C280600, // 0167 CALL R10 3 - 0xB82E1A00, // 0168 GETNGBL R11 K13 - 0x882C174E, // 0169 GETMBR R11 R11 K78 - 0x8C2C174F, // 016A GETMET R11 R11 K79 - 0x7C2C0200, // 016B CALL R11 1 - 0x8C301750, // 016C GETMET R12 R11 K80 - 0x5838000B, // 016D LDCONST R14 K11 - 0xB83E1A00, // 016E GETNGBL R15 K13 - 0x883C1F4E, // 016F GETMBR R15 R15 K78 - 0x883C1F51, // 0170 GETMBR R15 R15 K81 - 0x8C400F52, // 0171 GETMET R16 R7 K82 - 0x7C400200, // 0172 CALL R16 1 - 0x7C300800, // 0173 CALL R12 4 - 0x8C301750, // 0174 GETMET R12 R11 K80 - 0x5838000C, // 0175 LDCONST R14 K12 - 0xB83E1A00, // 0176 GETNGBL R15 K13 - 0x883C1F4E, // 0177 GETMBR R15 R15 K78 - 0x883C1F51, // 0178 GETMBR R15 R15 K81 - 0x8C400F53, // 0179 GETMET R16 R7 K83 - 0x7C400200, // 017A CALL R16 1 - 0x7C300800, // 017B CALL R12 4 - 0x8C301750, // 017C GETMET R12 R11 K80 - 0x58380009, // 017D LDCONST R14 K9 - 0xB83E1A00, // 017E GETNGBL R15 K13 - 0x883C1F4E, // 017F GETMBR R15 R15 K78 - 0x883C1F51, // 0180 GETMBR R15 R15 K81 - 0x5C401400, // 0181 MOVE R16 R10 - 0x7C300800, // 0182 CALL R12 4 - 0x8C301750, // 0183 GETMET R12 R11 K80 - 0x543A0003, // 0184 LDINT R14 4 - 0xB83E1A00, // 0185 GETNGBL R15 K13 - 0x883C1F4E, // 0186 GETMBR R15 R15 K78 - 0x883C1F51, // 0187 GETMBR R15 R15 K81 - 0x8840072F, // 0188 GETMBR R16 R3 K47 - 0x7C300800, // 0189 CALL R12 4 - 0x88300956, // 018A GETMBR R12 R4 K86 - 0x900E720C, // 018B SETMBR R3 K57 R12 - 0x8C300557, // 018C GETMET R12 R2 K87 - 0x7C300200, // 018D CALL R12 1 - 0x8C301958, // 018E GETMET R12 R12 K88 - 0x88380739, // 018F GETMBR R14 R3 K57 - 0x7C300400, // 0190 CALL R12 2 - 0x8C301959, // 0191 GETMET R12 R12 K89 - 0x7C300200, // 0192 CALL R12 1 - 0x60340015, // 0193 GETGBL R13 G21 - 0x7C340000, // 0194 CALL R13 0 - 0x8C341B1B, // 0195 GETMET R13 R13 K27 - 0x883C015A, // 0196 GETMBR R15 R0 K90 - 0x7C340400, // 0197 CALL R13 2 - 0x8C380F5B, // 0198 GETMET R14 R7 K91 - 0x7C380200, // 0199 CALL R14 1 - 0x00381C08, // 019A ADD R14 R14 R8 - 0x883C074A, // 019B GETMBR R15 R3 K74 - 0x00381C0F, // 019C ADD R14 R14 R15 - 0x00381C0C, // 019D ADD R14 R14 R12 - 0x8C3C051D, // 019E GETMET R15 R2 K29 - 0x7C3C0200, // 019F CALL R15 1 - 0x8C3C1F1E, // 01A0 GETMET R15 R15 K30 - 0x8844071F, // 01A1 GETMBR R17 R3 K31 - 0x5C481C00, // 01A2 MOVE R18 R14 - 0x5C4C1A00, // 01A3 MOVE R19 R13 - 0x5452000F, // 01A4 LDINT R20 16 - 0x7C3C0A00, // 01A5 CALL R15 5 - 0x8C401738, // 01A6 GETMET R16 R11 K56 - 0x7C400200, // 01A7 CALL R16 1 - 0x8C440522, // 01A8 GETMET R17 R2 K34 - 0x5C4C1E00, // 01A9 MOVE R19 R15 - 0x60500015, // 01AA GETGBL R20 G21 - 0x7C500000, // 01AB CALL R20 0 - 0x8C50291B, // 01AC GETMET R20 R20 K27 - 0x8858015C, // 01AD GETMBR R22 R0 K92 - 0x7C500400, // 01AE CALL R20 2 - 0x60540015, // 01AF GETGBL R21 G21 - 0x7C540000, // 01B0 CALL R21 0 - 0x6058000C, // 01B1 GETGBL R22 G12 - 0x5C5C2000, // 01B2 MOVE R23 R16 - 0x7C580200, // 01B3 CALL R22 1 - 0x545E000F, // 01B4 LDINT R23 16 - 0x7C440C00, // 01B5 CALL R17 6 - 0x8C48235D, // 01B6 GETMET R18 R17 K93 - 0x5C502000, // 01B7 MOVE R20 R16 - 0x7C480400, // 01B8 CALL R18 2 - 0x8C4C2324, // 01B9 GETMET R19 R17 K36 + 0x8C24054B, // 0133 GETMET R9 R2 K75 + 0x7C240200, // 0134 CALL R9 1 + 0x8C24134D, // 0135 GETMET R9 R9 K77 + 0x882C0749, // 0136 GETMBR R11 R3 K73 + 0x88300912, // 0137 GETMBR R12 R4 K18 + 0x7C240600, // 0138 CALL R9 3 + 0x900E3C09, // 0139 SETMBR R3 K30 R9 + 0xB8261800, // 013A GETNGBL R9 K12 + 0x8824134E, // 013B GETMBR R9 R9 K78 + 0x8C24134F, // 013C GETMET R9 R9 K79 + 0x7C240200, // 013D CALL R9 1 + 0x8C281350, // 013E GETMET R10 R9 K80 + 0x5830000A, // 013F LDCONST R12 K10 + 0xB8361800, // 0140 GETNGBL R13 K12 + 0x88341B4E, // 0141 GETMBR R13 R13 K78 + 0x88341B51, // 0142 GETMBR R13 R13 K81 + 0x8C380F52, // 0143 GETMET R14 R7 K82 + 0x7C380200, // 0144 CALL R14 1 + 0x7C280800, // 0145 CALL R10 4 + 0x8C281350, // 0146 GETMET R10 R9 K80 + 0x5830000B, // 0147 LDCONST R12 K11 + 0xB8361800, // 0148 GETNGBL R13 K12 + 0x88341B4E, // 0149 GETMBR R13 R13 K78 + 0x88341B51, // 014A GETMBR R13 R13 K81 + 0x8C380F53, // 014B GETMET R14 R7 K83 + 0x7C380200, // 014C CALL R14 1 + 0x7C280800, // 014D CALL R10 4 + 0x8C281350, // 014E GETMET R10 R9 K80 + 0x58300008, // 014F LDCONST R12 K8 + 0xB8361800, // 0150 GETNGBL R13 K12 + 0x88341B4E, // 0151 GETMBR R13 R13 K78 + 0x88341B51, // 0152 GETMBR R13 R13 K81 + 0x8838074A, // 0153 GETMBR R14 R3 K74 + 0x7C280800, // 0154 CALL R10 4 + 0x8C281350, // 0155 GETMET R10 R9 K80 + 0x54320003, // 0156 LDINT R12 4 + 0xB8361800, // 0157 GETNGBL R13 K12 + 0x88341B4E, // 0158 GETMBR R13 R13 K78 + 0x88341B51, // 0159 GETMBR R13 R13 K81 + 0x88380912, // 015A GETMBR R14 R4 K18 + 0x7C280800, // 015B CALL R10 4 + 0x8C28054B, // 015C GETMET R10 R2 K75 + 0x7C280200, // 015D CALL R10 1 + 0x8C281554, // 015E GETMET R10 R10 K84 + 0x8C300F55, // 015F GETMET R12 R7 K85 + 0x7C300200, // 0160 CALL R12 1 + 0x8C341338, // 0161 GETMET R13 R9 K56 + 0x7C340200, // 0162 CALL R13 1 + 0x7C280600, // 0163 CALL R10 3 + 0xB82E1800, // 0164 GETNGBL R11 K12 + 0x882C174E, // 0165 GETMBR R11 R11 K78 + 0x8C2C174F, // 0166 GETMET R11 R11 K79 + 0x7C2C0200, // 0167 CALL R11 1 + 0x8C301750, // 0168 GETMET R12 R11 K80 + 0x5838000A, // 0169 LDCONST R14 K10 + 0xB83E1800, // 016A GETNGBL R15 K12 + 0x883C1F4E, // 016B GETMBR R15 R15 K78 + 0x883C1F51, // 016C GETMBR R15 R15 K81 + 0x8C400F52, // 016D GETMET R16 R7 K82 + 0x7C400200, // 016E CALL R16 1 + 0x7C300800, // 016F CALL R12 4 + 0x8C301750, // 0170 GETMET R12 R11 K80 + 0x5838000B, // 0171 LDCONST R14 K11 + 0xB83E1800, // 0172 GETNGBL R15 K12 + 0x883C1F4E, // 0173 GETMBR R15 R15 K78 + 0x883C1F51, // 0174 GETMBR R15 R15 K81 + 0x8C400F53, // 0175 GETMET R16 R7 K83 + 0x7C400200, // 0176 CALL R16 1 + 0x7C300800, // 0177 CALL R12 4 + 0x8C301750, // 0178 GETMET R12 R11 K80 + 0x58380008, // 0179 LDCONST R14 K8 + 0xB83E1800, // 017A GETNGBL R15 K12 + 0x883C1F4E, // 017B GETMBR R15 R15 K78 + 0x883C1F51, // 017C GETMBR R15 R15 K81 + 0x5C401400, // 017D MOVE R16 R10 + 0x7C300800, // 017E CALL R12 4 + 0x8C301750, // 017F GETMET R12 R11 K80 + 0x543A0003, // 0180 LDINT R14 4 + 0xB83E1800, // 0181 GETNGBL R15 K12 + 0x883C1F4E, // 0182 GETMBR R15 R15 K78 + 0x883C1F51, // 0183 GETMBR R15 R15 K81 + 0x8840072E, // 0184 GETMBR R16 R3 K46 + 0x7C300800, // 0185 CALL R12 4 + 0x88300956, // 0186 GETMBR R12 R4 K86 + 0x900E720C, // 0187 SETMBR R3 K57 R12 + 0x8C300557, // 0188 GETMET R12 R2 K87 + 0x7C300200, // 0189 CALL R12 1 + 0x8C301958, // 018A GETMET R12 R12 K88 + 0x88380739, // 018B GETMBR R14 R3 K57 + 0x7C300400, // 018C CALL R12 2 + 0x8C301959, // 018D GETMET R12 R12 K89 + 0x7C300200, // 018E CALL R12 1 + 0x60340015, // 018F GETGBL R13 G21 + 0x7C340000, // 0190 CALL R13 0 + 0x8C341B1A, // 0191 GETMET R13 R13 K26 + 0x883C015A, // 0192 GETMBR R15 R0 K90 + 0x7C340400, // 0193 CALL R13 2 + 0x8C380F5B, // 0194 GETMET R14 R7 K91 + 0x7C380200, // 0195 CALL R14 1 + 0x00381C08, // 0196 ADD R14 R14 R8 + 0x883C074A, // 0197 GETMBR R15 R3 K74 + 0x00381C0F, // 0198 ADD R14 R14 R15 + 0x00381C0C, // 0199 ADD R14 R14 R12 + 0x8C3C051C, // 019A GETMET R15 R2 K28 + 0x7C3C0200, // 019B CALL R15 1 + 0x8C3C1F1D, // 019C GETMET R15 R15 K29 + 0x8844071E, // 019D GETMBR R17 R3 K30 + 0x5C481C00, // 019E MOVE R18 R14 + 0x5C4C1A00, // 019F MOVE R19 R13 + 0x5452000F, // 01A0 LDINT R20 16 + 0x7C3C0A00, // 01A1 CALL R15 5 + 0x8C401738, // 01A2 GETMET R16 R11 K56 + 0x7C400200, // 01A3 CALL R16 1 + 0x8C440521, // 01A4 GETMET R17 R2 K33 + 0x5C4C1E00, // 01A5 MOVE R19 R15 + 0x60500015, // 01A6 GETGBL R20 G21 + 0x7C500000, // 01A7 CALL R20 0 + 0x8C50291A, // 01A8 GETMET R20 R20 K26 + 0x8858015C, // 01A9 GETMBR R22 R0 K92 + 0x7C500400, // 01AA CALL R20 2 + 0x60540015, // 01AB GETGBL R21 G21 + 0x7C540000, // 01AC CALL R21 0 + 0x6058000C, // 01AD GETGBL R22 G12 + 0x5C5C2000, // 01AE MOVE R23 R16 + 0x7C580200, // 01AF CALL R22 1 + 0x545E000F, // 01B0 LDINT R23 16 + 0x7C440C00, // 01B1 CALL R17 6 + 0x8C48235D, // 01B2 GETMET R18 R17 K93 + 0x5C502000, // 01B3 MOVE R20 R16 + 0x7C480400, // 01B4 CALL R18 2 + 0x8C4C2323, // 01B5 GETMET R19 R17 K35 + 0x7C4C0200, // 01B6 CALL R19 1 + 0x00482413, // 01B7 ADD R18 R18 R19 + 0xB84E1800, // 01B8 GETNGBL R19 K12 + 0x8C4C275E, // 01B9 GETMET R19 R19 K94 0x7C4C0200, // 01BA CALL R19 1 - 0x00482413, // 01BB ADD R18 R18 R19 - 0xB84E1A00, // 01BC GETNGBL R19 K13 - 0x8C4C275E, // 01BD GETMET R19 R19 K94 - 0x7C4C0200, // 01BE CALL R19 1 - 0x904EBE08, // 01BF SETMBR R19 K95 R8 - 0x8850072A, // 01C0 GETMBR R20 R3 K42 - 0x904EC014, // 01C1 SETMBR R19 K96 R20 - 0x8850074A, // 01C2 GETMBR R20 R3 K74 - 0x904EC214, // 01C3 SETMBR R19 K97 R20 - 0x904EC412, // 01C4 SETMBR R19 K98 R18 - 0x8C502738, // 01C5 GETMET R20 R19 K56 - 0x7C500200, // 01C6 CALL R20 1 - 0x900EC614, // 01C7 SETMBR R3 K99 R20 - 0x8C54033A, // 01C8 GETMET R21 R1 K58 - 0x545E0030, // 01C9 LDINT R23 49 - 0x50600200, // 01CA LDBOOL R24 1 0 - 0x7C540600, // 01CB CALL R21 3 - 0x8C582B3B, // 01CC GETMET R22 R21 K59 - 0x5C602800, // 01CD MOVE R24 R20 - 0x7C580400, // 01CE CALL R22 2 - 0xB85E0C00, // 01CF GETNGBL R23 K6 - 0x8C5C2F07, // 01D0 GETMET R23 R23 K7 - 0x60640018, // 01D1 GETGBL R25 G24 - 0x58680064, // 01D2 LDCONST R26 K100 - 0x886C072A, // 01D3 GETMBR R27 R3 K42 - 0x88700765, // 01D4 GETMBR R28 R3 K101 - 0x88740766, // 01D5 GETMBR R29 R3 K102 - 0x7C640800, // 01D6 CALL R25 4 - 0x5868000C, // 01D7 LDCONST R26 K12 - 0x7C5C0600, // 01D8 CALL R23 3 - 0x885C013C, // 01D9 GETMBR R23 R0 K60 - 0x8C5C2F3D, // 01DA GETMET R23 R23 K61 - 0x5C642A00, // 01DB MOVE R25 R21 - 0x7C5C0400, // 01DC CALL R23 2 - 0x505C0200, // 01DD LDBOOL R23 1 0 - 0x80042E00, // 01DE RET 1 R23 - 0x501C0200, // 01DF LDBOOL R7 1 0 - 0x80040E00, // 01E0 RET 1 R7 + 0x904EBE08, // 01BB SETMBR R19 K95 R8 + 0x88500729, // 01BC GETMBR R20 R3 K41 + 0x904EC014, // 01BD SETMBR R19 K96 R20 + 0x8850074A, // 01BE GETMBR R20 R3 K74 + 0x904EC214, // 01BF SETMBR R19 K97 R20 + 0x904EC412, // 01C0 SETMBR R19 K98 R18 + 0x8C502738, // 01C1 GETMET R20 R19 K56 + 0x7C500200, // 01C2 CALL R20 1 + 0x900EC614, // 01C3 SETMBR R3 K99 R20 + 0x8C54033A, // 01C4 GETMET R21 R1 K58 + 0x545E0030, // 01C5 LDINT R23 49 + 0x50600200, // 01C6 LDBOOL R24 1 0 + 0x7C540600, // 01C7 CALL R21 3 + 0x8C582B3B, // 01C8 GETMET R22 R21 K59 + 0x5C602800, // 01C9 MOVE R24 R20 + 0x7C580400, // 01CA CALL R22 2 + 0xB85E0C00, // 01CB GETNGBL R23 K6 + 0x60600018, // 01CC GETGBL R24 G24 + 0x58640064, // 01CD LDCONST R25 K100 + 0x88680729, // 01CE GETMBR R26 R3 K41 + 0x886C0765, // 01CF GETMBR R27 R3 K101 + 0x88700766, // 01D0 GETMBR R28 R3 K102 + 0x7C600800, // 01D1 CALL R24 4 + 0x5864000B, // 01D2 LDCONST R25 K11 + 0x7C5C0400, // 01D3 CALL R23 2 + 0x885C013C, // 01D4 GETMBR R23 R0 K60 + 0x8C5C2F3D, // 01D5 GETMET R23 R23 K61 + 0x5C642A00, // 01D6 MOVE R25 R21 + 0x7C5C0400, // 01D7 CALL R23 2 + 0x505C0200, // 01D8 LDBOOL R23 1 0 + 0x80042E00, // 01D9 RET 1 R23 + 0x501C0200, // 01DA LDBOOL R7 1 0 + 0x80040E00, // 01DB RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h index 89b84b3fa..caf7aa635 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h @@ -12,7 +12,7 @@ extern const bclass be_class_Matter_PBKDFParamRequest; extern const bclass be_class_Matter_PBKDFParamRequest; be_local_closure(class_Matter_PBKDFParamRequest_parse, /* name */ be_nested_proto( - 8, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -21,9 +21,9 @@ be_local_closure(class_Matter_PBKDFParamRequest_parse, /* name */ &be_class_Matter_PBKDFParamRequest, 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_const_int(0), /* K3 */ be_nested_str_weak(parse), /* K4 */ be_nested_str_weak(initiatorRandom), /* K5 */ be_nested_str_weak(getsubval), @@ -41,46 +41,46 @@ be_local_closure(class_Matter_PBKDFParamRequest_parse, /* name */ be_str_weak(parse), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0000, // 0002 JMPF R3 #0004 - 0x58080000, // 0003 LDCONST R2 K0 - 0xB80E0200, // 0004 GETNGBL R3 K1 - 0x880C0702, // 0005 GETMBR R3 R3 K2 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x5C140200, // 0007 MOVE R5 R1 - 0x5C180400, // 0008 MOVE R6 R2 - 0x7C0C0600, // 0009 CALL R3 3 - 0x8C100705, // 000A GETMET R4 R3 K5 - 0x58180006, // 000B LDCONST R6 K6 - 0x7C100400, // 000C CALL R4 2 - 0x90020804, // 000D SETMBR R0 K4 R4 - 0x8C100705, // 000E GETMET R4 R3 K5 - 0x58180008, // 000F LDCONST R6 K8 - 0x7C100400, // 0010 CALL R4 2 - 0x90020E04, // 0011 SETMBR R0 K7 R4 - 0x8C100705, // 0012 GETMET R4 R3 K5 - 0x5818000A, // 0013 LDCONST R6 K10 - 0x7C100400, // 0014 CALL R4 2 - 0x90021204, // 0015 SETMBR R0 K9 R4 - 0x8C100705, // 0016 GETMET R4 R3 K5 - 0x541A0003, // 0017 LDINT R6 4 - 0x7C100400, // 0018 CALL R4 2 - 0x90021604, // 0019 SETMBR R0 K11 R4 - 0x8C10070C, // 001A GETMET R4 R3 K12 - 0x541A0004, // 001B LDINT R6 5 - 0x7C100400, // 001C CALL R4 2 - 0x4C140000, // 001D LDNIL R5 - 0x20140805, // 001E NE R5 R4 R5 - 0x78160007, // 001F JMPF R5 #0028 - 0x8C14090E, // 0020 GETMET R5 R4 K14 - 0x581C0006, // 0021 LDCONST R7 K6 - 0x7C140400, // 0022 CALL R5 2 - 0x90021A05, // 0023 SETMBR R0 K13 R5 - 0x8C14090E, // 0024 GETMET R5 R4 K14 - 0x581C0008, // 0025 LDCONST R7 K8 - 0x7C140400, // 0026 CALL R5 2 - 0x90021E05, // 0027 SETMBR R0 K15 R5 + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x880C0701, // 0001 GETMBR R3 R3 K1 + 0x4C100000, // 0002 LDNIL R4 + 0x1C100404, // 0003 EQ R4 R2 R4 + 0x78120000, // 0004 JMPF R4 #0006 + 0x58080002, // 0005 LDCONST R2 K2 + 0x8C100703, // 0006 GETMET R4 R3 K3 + 0x5C180200, // 0007 MOVE R6 R1 + 0x5C1C0400, // 0008 MOVE R7 R2 + 0x7C100600, // 0009 CALL R4 3 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x581C0006, // 000B LDCONST R7 K6 + 0x7C140400, // 000C CALL R5 2 + 0x90020805, // 000D SETMBR R0 K4 R5 + 0x8C140905, // 000E GETMET R5 R4 K5 + 0x581C0008, // 000F LDCONST R7 K8 + 0x7C140400, // 0010 CALL R5 2 + 0x90020E05, // 0011 SETMBR R0 K7 R5 + 0x8C140905, // 0012 GETMET R5 R4 K5 + 0x581C000A, // 0013 LDCONST R7 K10 + 0x7C140400, // 0014 CALL R5 2 + 0x90021205, // 0015 SETMBR R0 K9 R5 + 0x8C140905, // 0016 GETMET R5 R4 K5 + 0x541E0003, // 0017 LDINT R7 4 + 0x7C140400, // 0018 CALL R5 2 + 0x90021605, // 0019 SETMBR R0 K11 R5 + 0x8C14090C, // 001A GETMET R5 R4 K12 + 0x541E0004, // 001B LDINT R7 5 + 0x7C140400, // 001C CALL R5 2 + 0x4C180000, // 001D LDNIL R6 + 0x20180A06, // 001E NE R6 R5 R6 + 0x781A0007, // 001F JMPF R6 #0028 + 0x8C180B0E, // 0020 GETMET R6 R5 K14 + 0x58200006, // 0021 LDCONST R8 K6 + 0x7C180400, // 0022 CALL R6 2 + 0x90021A06, // 0023 SETMBR R0 K13 R6 + 0x8C180B0E, // 0024 GETMET R6 R5 K14 + 0x58200008, // 0025 LDCONST R8 K8 + 0x7C180400, // 0026 CALL R6 2 + 0x90021E06, // 0027 SETMBR R0 K15 R6 0x80040000, // 0028 RET 1 R0 }) ) @@ -115,7 +115,7 @@ extern const bclass be_class_Matter_PBKDFParamResponse; extern const bclass be_class_Matter_PBKDFParamResponse; be_local_closure(class_Matter_PBKDFParamResponse_tlv2raw, /* name */ be_nested_proto( - 10, /* nstack */ + 11, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -146,78 +146,64 @@ be_local_closure(class_Matter_PBKDFParamResponse_tlv2raw, /* name */ }), be_str_weak(tlv2raw), &be_const_str_solidified, - ( &(const binstruction[71]) { /* code */ + ( &(const binstruction[57]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0xB81A0000, // 0006 GETNGBL R6 K0 - 0x88180D01, // 0007 GETMBR R6 R6 K1 - 0x88180D05, // 0008 GETMBR R6 R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x7C0C0800, // 000A CALL R3 4 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x58140007, // 000C LDCONST R5 K7 - 0xB81A0000, // 000D GETNGBL R6 K0 - 0x88180D01, // 000E GETMBR R6 R6 K1 - 0x88180D05, // 000F GETMBR R6 R6 K5 - 0x881C0108, // 0010 GETMBR R7 R0 K8 - 0x7C0C0800, // 0011 CALL R3 4 - 0x8C0C0503, // 0012 GETMET R3 R2 K3 - 0x58140009, // 0013 LDCONST R5 K9 - 0xB81A0000, // 0014 GETNGBL R6 K0 - 0x88180D01, // 0015 GETMBR R6 R6 K1 - 0x88180D0A, // 0016 GETMBR R6 R6 K10 - 0x881C010B, // 0017 GETMBR R7 R0 K11 - 0x7C0C0800, // 0018 CALL R3 4 - 0x8C0C050C, // 0019 GETMET R3 R2 K12 - 0x54160003, // 001A LDINT R5 4 - 0x7C0C0400, // 001B CALL R3 2 - 0x8C100703, // 001C GETMET R4 R3 K3 - 0x58180004, // 001D LDCONST R6 K4 - 0xB81E0000, // 001E GETNGBL R7 K0 - 0x881C0F01, // 001F GETMBR R7 R7 K1 - 0x881C0F0D, // 0020 GETMBR R7 R7 K13 - 0x8820010E, // 0021 GETMBR R8 R0 K14 - 0x7C100800, // 0022 CALL R4 4 - 0x8C100703, // 0023 GETMET R4 R3 K3 - 0x58180007, // 0024 LDCONST R6 K7 - 0xB81E0000, // 0025 GETNGBL R7 K0 - 0x881C0F01, // 0026 GETMBR R7 R7 K1 - 0x881C0F05, // 0027 GETMBR R7 R7 K5 - 0x8820010F, // 0028 GETMBR R8 R0 K15 - 0x7C100800, // 0029 CALL R4 4 - 0x88100110, // 002A GETMBR R4 R0 K16 - 0x4C140000, // 002B LDNIL R5 - 0x20100805, // 002C NE R4 R4 R5 - 0x74120003, // 002D JMPT R4 #0032 - 0x88100111, // 002E GETMBR R4 R0 K17 - 0x4C140000, // 002F LDNIL R5 - 0x20100805, // 0030 NE R4 R4 R5 - 0x78120010, // 0031 JMPF R4 #0043 - 0x8C10050C, // 0032 GETMET R4 R2 K12 - 0x541A0004, // 0033 LDINT R6 5 - 0x7C100400, // 0034 CALL R4 2 - 0x8C140903, // 0035 GETMET R5 R4 K3 - 0x581C0004, // 0036 LDCONST R7 K4 - 0xB8220000, // 0037 GETNGBL R8 K0 - 0x88201101, // 0038 GETMBR R8 R8 K1 - 0x8820110D, // 0039 GETMBR R8 R8 K13 - 0x88240110, // 003A GETMBR R9 R0 K16 - 0x7C140800, // 003B CALL R5 4 - 0x8C140903, // 003C GETMET R5 R4 K3 - 0x581C0007, // 003D LDCONST R7 K7 - 0xB8220000, // 003E GETNGBL R8 K0 - 0x88201101, // 003F GETMBR R8 R8 K1 - 0x8820110D, // 0040 GETMBR R8 R8 K13 - 0x88240111, // 0041 GETMBR R9 R0 K17 - 0x7C140800, // 0042 CALL R5 4 - 0x8C100512, // 0043 GETMET R4 R2 K18 - 0x5C180200, // 0044 MOVE R6 R1 - 0x7C100400, // 0045 CALL R4 2 - 0x80040800, // 0046 RET 1 R4 + 0x8C0C0502, // 0002 GETMET R3 R2 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C100703, // 0004 GETMET R4 R3 K3 + 0x58180004, // 0005 LDCONST R6 K4 + 0x881C0505, // 0006 GETMBR R7 R2 K5 + 0x88200106, // 0007 GETMBR R8 R0 K6 + 0x7C100800, // 0008 CALL R4 4 + 0x8C100703, // 0009 GETMET R4 R3 K3 + 0x58180007, // 000A LDCONST R6 K7 + 0x881C0505, // 000B GETMBR R7 R2 K5 + 0x88200108, // 000C GETMBR R8 R0 K8 + 0x7C100800, // 000D CALL R4 4 + 0x8C100703, // 000E GETMET R4 R3 K3 + 0x58180009, // 000F LDCONST R6 K9 + 0x881C050A, // 0010 GETMBR R7 R2 K10 + 0x8820010B, // 0011 GETMBR R8 R0 K11 + 0x7C100800, // 0012 CALL R4 4 + 0x8C10070C, // 0013 GETMET R4 R3 K12 + 0x541A0003, // 0014 LDINT R6 4 + 0x7C100400, // 0015 CALL R4 2 + 0x8C140903, // 0016 GETMET R5 R4 K3 + 0x581C0004, // 0017 LDCONST R7 K4 + 0x8820050D, // 0018 GETMBR R8 R2 K13 + 0x8824010E, // 0019 GETMBR R9 R0 K14 + 0x7C140800, // 001A CALL R5 4 + 0x8C140903, // 001B GETMET R5 R4 K3 + 0x581C0007, // 001C LDCONST R7 K7 + 0x88200505, // 001D GETMBR R8 R2 K5 + 0x8824010F, // 001E GETMBR R9 R0 K15 + 0x7C140800, // 001F CALL R5 4 + 0x88140110, // 0020 GETMBR R5 R0 K16 + 0x4C180000, // 0021 LDNIL R6 + 0x20140A06, // 0022 NE R5 R5 R6 + 0x74160003, // 0023 JMPT R5 #0028 + 0x88140111, // 0024 GETMBR R5 R0 K17 + 0x4C180000, // 0025 LDNIL R6 + 0x20140A06, // 0026 NE R5 R5 R6 + 0x7816000C, // 0027 JMPF R5 #0035 + 0x8C14070C, // 0028 GETMET R5 R3 K12 + 0x541E0004, // 0029 LDINT R7 5 + 0x7C140400, // 002A CALL R5 2 + 0x8C180B03, // 002B GETMET R6 R5 K3 + 0x58200004, // 002C LDCONST R8 K4 + 0x8824050D, // 002D GETMBR R9 R2 K13 + 0x88280110, // 002E GETMBR R10 R0 K16 + 0x7C180800, // 002F CALL R6 4 + 0x8C180B03, // 0030 GETMET R6 R5 K3 + 0x58200007, // 0031 LDCONST R8 K7 + 0x8824050D, // 0032 GETMBR R9 R2 K13 + 0x88280111, // 0033 GETMBR R10 R0 K17 + 0x7C180800, // 0034 CALL R6 4 + 0x8C140712, // 0035 GETMET R5 R3 K18 + 0x5C1C0200, // 0036 MOVE R7 R1 + 0x7C140400, // 0037 CALL R5 2 + 0x80040A00, // 0038 RET 1 R5 }) ) ); @@ -315,7 +301,7 @@ extern const bclass be_class_Matter_Pake2; extern const bclass be_class_Matter_Pake2; be_local_closure(class_Matter_Pake2_tlv2raw, /* name */ be_nested_proto( - 8, /* nstack */ + 9, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -337,29 +323,25 @@ be_local_closure(class_Matter_Pake2_tlv2raw, /* name */ }), be_str_weak(tlv2raw), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[18]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0xB81A0000, // 0006 GETNGBL R6 K0 - 0x88180D01, // 0007 GETMBR R6 R6 K1 - 0x88180D05, // 0008 GETMBR R6 R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x7C0C0800, // 000A CALL R3 4 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x58140007, // 000C LDCONST R5 K7 - 0xB81A0000, // 000D GETNGBL R6 K0 - 0x88180D01, // 000E GETMBR R6 R6 K1 - 0x88180D05, // 000F GETMBR R6 R6 K5 - 0x881C0108, // 0010 GETMBR R7 R0 K8 - 0x7C0C0800, // 0011 CALL R3 4 - 0x8C0C0509, // 0012 GETMET R3 R2 K9 - 0x5C140200, // 0013 MOVE R5 R1 - 0x7C0C0400, // 0014 CALL R3 2 - 0x80040600, // 0015 RET 1 R3 + 0x8C0C0502, // 0002 GETMET R3 R2 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C100703, // 0004 GETMET R4 R3 K3 + 0x58180004, // 0005 LDCONST R6 K4 + 0x881C0505, // 0006 GETMBR R7 R2 K5 + 0x88200106, // 0007 GETMBR R8 R0 K6 + 0x7C100800, // 0008 CALL R4 4 + 0x8C100703, // 0009 GETMET R4 R3 K3 + 0x58180007, // 000A LDCONST R6 K7 + 0x881C0505, // 000B GETMBR R7 R2 K5 + 0x88200108, // 000C GETMBR R8 R0 K8 + 0x7C100800, // 000D CALL R4 4 + 0x8C100709, // 000E GETMET R4 R3 K9 + 0x5C180200, // 000F MOVE R6 R1 + 0x7C100400, // 0010 CALL R4 2 + 0x80040800, // 0011 RET 1 R4 }) ) ); @@ -573,7 +555,7 @@ extern const bclass be_class_Matter_Sigma2; extern const bclass be_class_Matter_Sigma2; be_local_closure(class_Matter_Sigma2_tlv2raw, /* name */ be_nested_proto( - 9, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -603,68 +585,56 @@ be_local_closure(class_Matter_Sigma2_tlv2raw, /* name */ }), be_str_weak(tlv2raw), &be_const_str_solidified, - ( &(const binstruction[61]) { /* code */ + ( &(const binstruction[49]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0xB81A0000, // 0006 GETNGBL R6 K0 - 0x88180D01, // 0007 GETMBR R6 R6 K1 - 0x88180D05, // 0008 GETMBR R6 R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x7C0C0800, // 000A CALL R3 4 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x58140007, // 000C LDCONST R5 K7 - 0xB81A0000, // 000D GETNGBL R6 K0 - 0x88180D01, // 000E GETMBR R6 R6 K1 - 0x88180D08, // 000F GETMBR R6 R6 K8 - 0x881C0109, // 0010 GETMBR R7 R0 K9 - 0x7C0C0800, // 0011 CALL R3 4 - 0x8C0C0503, // 0012 GETMET R3 R2 K3 - 0x5814000A, // 0013 LDCONST R5 K10 - 0xB81A0000, // 0014 GETNGBL R6 K0 - 0x88180D01, // 0015 GETMBR R6 R6 K1 - 0x88180D05, // 0016 GETMBR R6 R6 K5 - 0x881C010B, // 0017 GETMBR R7 R0 K11 - 0x7C0C0800, // 0018 CALL R3 4 - 0x8C0C0503, // 0019 GETMET R3 R2 K3 - 0x54160003, // 001A LDINT R5 4 - 0xB81A0000, // 001B GETNGBL R6 K0 - 0x88180D01, // 001C GETMBR R6 R6 K1 - 0x88180D05, // 001D GETMBR R6 R6 K5 - 0x881C010C, // 001E GETMBR R7 R0 K12 - 0x7C0C0800, // 001F CALL R3 4 - 0x880C010D, // 0020 GETMBR R3 R0 K13 - 0x4C100000, // 0021 LDNIL R4 - 0x200C0604, // 0022 NE R3 R3 R4 - 0x740E0003, // 0023 JMPT R3 #0028 - 0x880C010E, // 0024 GETMBR R3 R0 K14 - 0x4C100000, // 0025 LDNIL R4 - 0x200C0604, // 0026 NE R3 R3 R4 - 0x780E0010, // 0027 JMPF R3 #0039 - 0x8C0C050F, // 0028 GETMET R3 R2 K15 - 0x54160004, // 0029 LDINT R5 5 - 0x7C0C0400, // 002A CALL R3 2 - 0x8C100703, // 002B GETMET R4 R3 K3 - 0x58180004, // 002C LDCONST R6 K4 - 0xB81E0000, // 002D GETNGBL R7 K0 - 0x881C0F01, // 002E GETMBR R7 R7 K1 - 0x881C0F10, // 002F GETMBR R7 R7 K16 - 0x8820010D, // 0030 GETMBR R8 R0 K13 - 0x7C100800, // 0031 CALL R4 4 - 0x8C100703, // 0032 GETMET R4 R3 K3 - 0x58180007, // 0033 LDCONST R6 K7 - 0xB81E0000, // 0034 GETNGBL R7 K0 - 0x881C0F01, // 0035 GETMBR R7 R7 K1 - 0x881C0F10, // 0036 GETMBR R7 R7 K16 - 0x8820010E, // 0037 GETMBR R8 R0 K14 - 0x7C100800, // 0038 CALL R4 4 - 0x8C0C0511, // 0039 GETMET R3 R2 K17 - 0x5C140200, // 003A MOVE R5 R1 - 0x7C0C0400, // 003B CALL R3 2 - 0x80040600, // 003C RET 1 R3 + 0x8C0C0502, // 0002 GETMET R3 R2 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C100703, // 0004 GETMET R4 R3 K3 + 0x58180004, // 0005 LDCONST R6 K4 + 0x881C0505, // 0006 GETMBR R7 R2 K5 + 0x88200106, // 0007 GETMBR R8 R0 K6 + 0x7C100800, // 0008 CALL R4 4 + 0x8C100703, // 0009 GETMET R4 R3 K3 + 0x58180007, // 000A LDCONST R6 K7 + 0x881C0508, // 000B GETMBR R7 R2 K8 + 0x88200109, // 000C GETMBR R8 R0 K9 + 0x7C100800, // 000D CALL R4 4 + 0x8C100703, // 000E GETMET R4 R3 K3 + 0x5818000A, // 000F LDCONST R6 K10 + 0x881C0505, // 0010 GETMBR R7 R2 K5 + 0x8820010B, // 0011 GETMBR R8 R0 K11 + 0x7C100800, // 0012 CALL R4 4 + 0x8C100703, // 0013 GETMET R4 R3 K3 + 0x541A0003, // 0014 LDINT R6 4 + 0x881C0505, // 0015 GETMBR R7 R2 K5 + 0x8820010C, // 0016 GETMBR R8 R0 K12 + 0x7C100800, // 0017 CALL R4 4 + 0x8810010D, // 0018 GETMBR R4 R0 K13 + 0x4C140000, // 0019 LDNIL R5 + 0x20100805, // 001A NE R4 R4 R5 + 0x74120003, // 001B JMPT R4 #0020 + 0x8810010E, // 001C GETMBR R4 R0 K14 + 0x4C140000, // 001D LDNIL R5 + 0x20100805, // 001E NE R4 R4 R5 + 0x7812000C, // 001F JMPF R4 #002D + 0x8C10070F, // 0020 GETMET R4 R3 K15 + 0x541A0004, // 0021 LDINT R6 5 + 0x7C100400, // 0022 CALL R4 2 + 0x8C140903, // 0023 GETMET R5 R4 K3 + 0x581C0004, // 0024 LDCONST R7 K4 + 0x88200510, // 0025 GETMBR R8 R2 K16 + 0x8824010D, // 0026 GETMBR R9 R0 K13 + 0x7C140800, // 0027 CALL R5 4 + 0x8C140903, // 0028 GETMET R5 R4 K3 + 0x581C0007, // 0029 LDCONST R7 K7 + 0x88200510, // 002A GETMBR R8 R2 K16 + 0x8824010E, // 002B GETMBR R9 R0 K14 + 0x7C140800, // 002C CALL R5 4 + 0x8C100711, // 002D GETMET R4 R3 K17 + 0x5C180200, // 002E MOVE R6 R1 + 0x7C100400, // 002F CALL R4 2 + 0x80040800, // 0030 RET 1 R4 }) ) ); @@ -698,7 +668,7 @@ extern const bclass be_class_Matter_Sigma2Resume; extern const bclass be_class_Matter_Sigma2Resume; be_local_closure(class_Matter_Sigma2Resume_tlv2raw, /* name */ be_nested_proto( - 9, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -727,61 +697,51 @@ be_local_closure(class_Matter_Sigma2Resume_tlv2raw, /* name */ }), be_str_weak(tlv2raw), &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ + ( &(const binstruction[44]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0xB81A0000, // 0006 GETNGBL R6 K0 - 0x88180D01, // 0007 GETMBR R6 R6 K1 - 0x88180D05, // 0008 GETMBR R6 R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x7C0C0800, // 000A CALL R3 4 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x58140007, // 000C LDCONST R5 K7 - 0xB81A0000, // 000D GETNGBL R6 K0 - 0x88180D01, // 000E GETMBR R6 R6 K1 - 0x88180D05, // 000F GETMBR R6 R6 K5 - 0x881C0108, // 0010 GETMBR R7 R0 K8 - 0x7C0C0800, // 0011 CALL R3 4 - 0x8C0C0503, // 0012 GETMET R3 R2 K3 - 0x58140009, // 0013 LDCONST R5 K9 - 0xB81A0000, // 0014 GETNGBL R6 K0 - 0x88180D01, // 0015 GETMBR R6 R6 K1 - 0x88180D0A, // 0016 GETMBR R6 R6 K10 - 0x881C010B, // 0017 GETMBR R7 R0 K11 - 0x7C0C0800, // 0018 CALL R3 4 - 0x880C010C, // 0019 GETMBR R3 R0 K12 - 0x4C100000, // 001A LDNIL R4 - 0x200C0604, // 001B NE R3 R3 R4 - 0x740E0003, // 001C JMPT R3 #0021 - 0x880C010D, // 001D GETMBR R3 R0 K13 - 0x4C100000, // 001E LDNIL R4 - 0x200C0604, // 001F NE R3 R3 R4 - 0x780E0010, // 0020 JMPF R3 #0032 - 0x8C0C050E, // 0021 GETMET R3 R2 K14 - 0x54160003, // 0022 LDINT R5 4 - 0x7C0C0400, // 0023 CALL R3 2 - 0x8C100703, // 0024 GETMET R4 R3 K3 - 0x58180004, // 0025 LDCONST R6 K4 - 0xB81E0000, // 0026 GETNGBL R7 K0 - 0x881C0F01, // 0027 GETMBR R7 R7 K1 - 0x881C0F0F, // 0028 GETMBR R7 R7 K15 - 0x8820010C, // 0029 GETMBR R8 R0 K12 - 0x7C100800, // 002A CALL R4 4 - 0x8C100703, // 002B GETMET R4 R3 K3 - 0x58180007, // 002C LDCONST R6 K7 - 0xB81E0000, // 002D GETNGBL R7 K0 - 0x881C0F01, // 002E GETMBR R7 R7 K1 - 0x881C0F0F, // 002F GETMBR R7 R7 K15 - 0x8820010D, // 0030 GETMBR R8 R0 K13 - 0x7C100800, // 0031 CALL R4 4 - 0x8C0C0510, // 0032 GETMET R3 R2 K16 - 0x5C140200, // 0033 MOVE R5 R1 - 0x7C0C0400, // 0034 CALL R3 2 - 0x80040600, // 0035 RET 1 R3 + 0x8C0C0502, // 0002 GETMET R3 R2 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C100703, // 0004 GETMET R4 R3 K3 + 0x58180004, // 0005 LDCONST R6 K4 + 0x881C0505, // 0006 GETMBR R7 R2 K5 + 0x88200106, // 0007 GETMBR R8 R0 K6 + 0x7C100800, // 0008 CALL R4 4 + 0x8C100703, // 0009 GETMET R4 R3 K3 + 0x58180007, // 000A LDCONST R6 K7 + 0x881C0505, // 000B GETMBR R7 R2 K5 + 0x88200108, // 000C GETMBR R8 R0 K8 + 0x7C100800, // 000D CALL R4 4 + 0x8C100703, // 000E GETMET R4 R3 K3 + 0x58180009, // 000F LDCONST R6 K9 + 0x881C050A, // 0010 GETMBR R7 R2 K10 + 0x8820010B, // 0011 GETMBR R8 R0 K11 + 0x7C100800, // 0012 CALL R4 4 + 0x8810010C, // 0013 GETMBR R4 R0 K12 + 0x4C140000, // 0014 LDNIL R5 + 0x20100805, // 0015 NE R4 R4 R5 + 0x74120003, // 0016 JMPT R4 #001B + 0x8810010D, // 0017 GETMBR R4 R0 K13 + 0x4C140000, // 0018 LDNIL R5 + 0x20100805, // 0019 NE R4 R4 R5 + 0x7812000C, // 001A JMPF R4 #0028 + 0x8C10070E, // 001B GETMET R4 R3 K14 + 0x541A0003, // 001C LDINT R6 4 + 0x7C100400, // 001D CALL R4 2 + 0x8C140903, // 001E GETMET R5 R4 K3 + 0x581C0004, // 001F LDCONST R7 K4 + 0x8820050F, // 0020 GETMBR R8 R2 K15 + 0x8824010C, // 0021 GETMBR R9 R0 K12 + 0x7C140800, // 0022 CALL R5 4 + 0x8C140903, // 0023 GETMET R5 R4 K3 + 0x581C0007, // 0024 LDCONST R7 K7 + 0x8820050F, // 0025 GETMBR R8 R2 K15 + 0x8824010D, // 0026 GETMBR R9 R0 K13 + 0x7C140800, // 0027 CALL R5 4 + 0x8C100710, // 0028 GETMET R4 R3 K16 + 0x5C180200, // 0029 MOVE R6 R1 + 0x7C100400, // 002A CALL R4 2 + 0x80040800, // 002B RET 1 R4 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h index 385ab8d33..85fec0872 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h @@ -12,7 +12,7 @@ extern const bclass be_class_Matter_Control_Message; extern const bclass be_class_Matter_Control_Message; be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name */ be_nested_proto( - 9, /* nstack */ + 8, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -20,36 +20,34 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name 0, /* has sup protos */ &be_class_Matter_Control_Message, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_const_int(2147483647), - /* K7 */ be_nested_str_weak(tohex), - /* K8 */ be_const_int(2), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s), + /* K3 */ be_nested_str_weak(raw), + /* K4 */ be_nested_str_weak(app_payload_idx), + /* K5 */ be_const_int(2147483647), + /* K6 */ be_nested_str_weak(tohex), + /* K7 */ be_const_int(2), }), be_str_weak(parse_MsgCounterSyncRsp), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ + ( &(const binstruction[15]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x60140018, // 0003 GETGBL R5 G24 - 0x58180003, // 0004 LDCONST R6 K3 - 0x881C0305, // 0005 GETMBR R7 R1 K5 - 0x401C0F06, // 0006 CONNECT R7 R7 K6 - 0x88200304, // 0007 GETMBR R8 R1 K4 - 0x941C1007, // 0008 GETIDX R7 R8 R7 - 0x8C1C0F07, // 0009 GETMET R7 R7 K7 - 0x7C1C0200, // 000A CALL R7 1 - 0x7C140400, // 000B CALL R5 2 - 0x58180008, // 000C LDCONST R6 K8 - 0x7C0C0600, // 000D CALL R3 3 - 0x500C0000, // 000E LDBOOL R3 0 0 - 0x80040600, // 000F RET 1 R3 + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140002, // 0003 LDCONST R5 K2 + 0x88180304, // 0004 GETMBR R6 R1 K4 + 0x40180D05, // 0005 CONNECT R6 R6 K5 + 0x881C0303, // 0006 GETMBR R7 R1 K3 + 0x94180E06, // 0007 GETIDX R6 R7 R6 + 0x8C180D06, // 0008 GETMET R6 R6 K6 + 0x7C180200, // 0009 CALL R6 1 + 0x7C100400, // 000A CALL R4 2 + 0x58140007, // 000B LDCONST R5 K7 + 0x7C0C0400, // 000C CALL R3 2 + 0x500C0000, // 000D LDBOOL R3 0 0 + 0x80040600, // 000E RET 1 R3 }) ) ); @@ -62,7 +60,7 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name extern const bclass be_class_Matter_Control_Message; be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name */ be_nested_proto( - 9, /* nstack */ + 8, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -70,36 +68,34 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name 0, /* has sup protos */ &be_class_Matter_Control_Message, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncReq_X20_X2A_X20Not_X20implemented_X20_X25s), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_const_int(2147483647), - /* K7 */ be_nested_str_weak(tohex), - /* K8 */ be_const_int(2), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncReq_X20_X2A_X20Not_X20implemented_X20_X25s), + /* K3 */ be_nested_str_weak(raw), + /* K4 */ be_nested_str_weak(app_payload_idx), + /* K5 */ be_const_int(2147483647), + /* K6 */ be_nested_str_weak(tohex), + /* K7 */ be_const_int(2), }), be_str_weak(parse_MsgCounterSyncReq), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ + ( &(const binstruction[15]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x60140018, // 0003 GETGBL R5 G24 - 0x58180003, // 0004 LDCONST R6 K3 - 0x881C0305, // 0005 GETMBR R7 R1 K5 - 0x401C0F06, // 0006 CONNECT R7 R7 K6 - 0x88200304, // 0007 GETMBR R8 R1 K4 - 0x941C1007, // 0008 GETIDX R7 R8 R7 - 0x8C1C0F07, // 0009 GETMET R7 R7 K7 - 0x7C1C0200, // 000A CALL R7 1 - 0x7C140400, // 000B CALL R5 2 - 0x58180008, // 000C LDCONST R6 K8 - 0x7C0C0600, // 000D CALL R3 3 - 0x500C0000, // 000E LDBOOL R3 0 0 - 0x80040600, // 000F RET 1 R3 + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140002, // 0003 LDCONST R5 K2 + 0x88180304, // 0004 GETMBR R6 R1 K4 + 0x40180D05, // 0005 CONNECT R6 R6 K5 + 0x881C0303, // 0006 GETMBR R7 R1 K3 + 0x94180E06, // 0007 GETIDX R6 R7 R6 + 0x8C180D06, // 0008 GETMET R6 R6 K6 + 0x7C180200, // 0009 CALL R6 1 + 0x7C100400, // 000A CALL R4 2 + 0x58140007, // 000B LDCONST R5 K7 + 0x7C0C0400, // 000C CALL R3 2 + 0x500C0000, // 000D LDBOOL R3 0 0 + 0x80040600, // 000E RET 1 R3 }) ) ); @@ -145,7 +141,7 @@ be_local_closure(class_Matter_Control_Message_init, /* name */ extern const bclass be_class_Matter_Control_Message; be_local_closure(class_Matter_Control_Message_process_incoming_control_message, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -153,61 +149,58 @@ be_local_closure(class_Matter_Control_Message_process_incoming_control_message, 0, /* has sup protos */ &be_class_Matter_Control_Message, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(inspect), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(opcode), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(parse_MsgCounterSyncReq), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(parse_MsgCounterSyncRsp), - /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X), - /* K12 */ be_const_int(2), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(inspect), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(opcode), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(parse_MsgCounterSyncReq), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(parse_MsgCounterSyncRsp), + /* K10 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X), + /* K11 */ be_const_int(2), }), be_str_weak(process_incoming_control_message), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ + ( &(const binstruction[35]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0xB8120600, // 0002 GETNGBL R4 K3 - 0x8C100904, // 0003 GETMET R4 R4 K4 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x00120404, // 0006 ADD R4 K2 R4 - 0x58140005, // 0007 LDCONST R5 K5 - 0x7C080600, // 0008 CALL R2 3 - 0x88080306, // 0009 GETMBR R2 R1 K6 - 0x1C080507, // 000A EQ R2 R2 K7 - 0x780A0004, // 000B JMPF R2 #0011 - 0x8C080108, // 000C GETMET R2 R0 K8 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x80040400, // 000F RET 1 R2 - 0x70020011, // 0010 JMP #0023 - 0x88080306, // 0011 GETMBR R2 R1 K6 - 0x1C080509, // 0012 EQ R2 R2 K9 - 0x780A0004, // 0013 JMPF R2 #0019 - 0x8C08010A, // 0014 GETMET R2 R0 K10 - 0x5C100200, // 0015 MOVE R4 R1 - 0x7C080400, // 0016 CALL R2 2 - 0x80040400, // 0017 RET 1 R2 - 0x70020009, // 0018 JMP #0023 - 0xB80A0000, // 0019 GETNGBL R2 K0 - 0x8C080501, // 001A GETMET R2 R2 K1 - 0x60100018, // 001B GETGBL R4 G24 - 0x5814000B, // 001C LDCONST R5 K11 - 0x88180306, // 001D GETMBR R6 R1 K6 - 0x7C100400, // 001E CALL R4 2 - 0x5814000C, // 001F LDCONST R5 K12 - 0x7C080600, // 0020 CALL R2 3 + 0xB80E0400, // 0001 GETNGBL R3 K2 + 0x8C0C0703, // 0002 GETMET R3 R3 K3 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x000E0203, // 0005 ADD R3 K1 R3 + 0x58100004, // 0006 LDCONST R4 K4 + 0x7C080400, // 0007 CALL R2 2 + 0x88080305, // 0008 GETMBR R2 R1 K5 + 0x1C080506, // 0009 EQ R2 R2 K6 + 0x780A0004, // 000A JMPF R2 #0010 + 0x8C080107, // 000B GETMET R2 R0 K7 + 0x5C100200, // 000C MOVE R4 R1 + 0x7C080400, // 000D CALL R2 2 + 0x80040400, // 000E RET 1 R2 + 0x70020010, // 000F JMP #0021 + 0x88080305, // 0010 GETMBR R2 R1 K5 + 0x1C080508, // 0011 EQ R2 R2 K8 + 0x780A0004, // 0012 JMPF R2 #0018 + 0x8C080109, // 0013 GETMET R2 R0 K9 + 0x5C100200, // 0014 MOVE R4 R1 + 0x7C080400, // 0015 CALL R2 2 + 0x80040400, // 0016 RET 1 R2 + 0x70020008, // 0017 JMP #0021 + 0xB80A0000, // 0018 GETNGBL R2 K0 + 0x600C0018, // 0019 GETGBL R3 G24 + 0x5810000A, // 001A LDCONST R4 K10 + 0x88140305, // 001B GETMBR R5 R1 K5 + 0x7C0C0400, // 001C CALL R3 2 + 0x5810000B, // 001D LDCONST R4 K11 + 0x7C080400, // 001E CALL R2 2 + 0x50080000, // 001F LDBOOL R2 0 0 + 0x80040400, // 0020 RET 1 R2 0x50080000, // 0021 LDBOOL R2 0 0 0x80040400, // 0022 RET 1 R2 - 0x50080000, // 0023 LDBOOL R2 0 0 - 0x80040400, // 0024 RET 1 R2 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h index 26dd17f72..267c4eb50 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h @@ -40,7 +40,7 @@ be_local_closure(class_Matter_Fabric_get_icac, /* name */ extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_before_remove, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -48,35 +48,33 @@ be_local_closure(class_Matter_Fabric_before_remove, /* name */ 0, /* has sup protos */ &be_class_Matter_Fabric, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(copy), - /* K5 */ be_nested_str_weak(reverse), - /* K6 */ be_nested_str_weak(tohex), - /* K7 */ be_const_int(3), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), + /* K2 */ be_nested_str_weak(get_fabric_id), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(reverse), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_const_int(3), }), be_str_weak(before_remove), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ + ( &(const binstruction[15]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x600C0018, // 0002 GETGBL R3 G24 - 0x58100002, // 0003 LDCONST R4 K2 - 0x8C140103, // 0004 GETMET R5 R0 K3 - 0x7C140200, // 0005 CALL R5 1 - 0x8C140B04, // 0006 GETMET R5 R5 K4 - 0x7C140200, // 0007 CALL R5 1 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x7C140200, // 0009 CALL R5 1 - 0x8C140B06, // 000A GETMET R5 R5 K6 - 0x7C140200, // 000B CALL R5 1 - 0x7C0C0400, // 000C CALL R3 2 - 0x58100007, // 000D LDCONST R4 K7 - 0x7C040600, // 000E CALL R1 3 - 0x80000000, // 000F RET 0 + 0x60080018, // 0001 GETGBL R2 G24 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x8C100102, // 0003 GETMET R4 R0 K2 + 0x7C100200, // 0004 CALL R4 1 + 0x8C100903, // 0005 GETMET R4 R4 K3 + 0x7C100200, // 0006 CALL R4 1 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x7C100200, // 0008 CALL R4 1 + 0x8C100905, // 0009 GETMET R4 R4 K5 + 0x7C100200, // 000A CALL R4 1 + 0x7C080400, // 000B CALL R2 2 + 0x580C0006, // 000C LDCONST R3 K6 + 0x7C040400, // 000D CALL R1 2 + 0x80000000, // 000E RET 0 }) ) ); @@ -914,7 +912,7 @@ be_local_closure(class_Matter_Fabric_fabric_completed, /* name */ extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -922,51 +920,49 @@ be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */ 0, /* has sup protos */ &be_class_Matter_Fabric, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl), /* K1 */ be_nested_str_weak(next), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(Counter), - /* K8 */ be_nested_str_weak(is_greater), - /* K9 */ be_nested_str_weak(counter_group_data_snd), - /* K10 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K11 */ be_nested_str_weak(does_persist), - /* K12 */ be_nested_str_weak(save), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(Counter), + /* K7 */ be_nested_str_weak(is_greater), + /* K8 */ be_nested_str_weak(counter_group_data_snd), + /* K9 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K10 */ be_nested_str_weak(does_persist), + /* K11 */ be_nested_str_weak(save), }), be_str_weak(counter_group_data_snd_next), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ + ( &(const binstruction[26]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x7C040200, // 0002 CALL R1 1 0xB80A0400, // 0003 GETNGBL R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 - 0x60100018, // 0005 GETGBL R4 G24 - 0x58140004, // 0006 LDCONST R5 K4 - 0x5C180200, // 0007 MOVE R6 R1 - 0x7C100400, // 0008 CALL R4 2 - 0x58140005, // 0009 LDCONST R5 K5 - 0x7C080600, // 000A CALL R2 3 - 0xB80A0C00, // 000B GETNGBL R2 K6 - 0x88080507, // 000C GETMBR R2 R2 K7 - 0x8C080508, // 000D GETMET R2 R2 K8 - 0x5C100200, // 000E MOVE R4 R1 - 0x88140109, // 000F GETMBR R5 R0 K9 - 0x7C080600, // 0010 CALL R2 3 - 0x780A0007, // 0011 JMPF R2 #001A - 0x8808010A, // 0012 GETMBR R2 R0 K10 - 0x00080202, // 0013 ADD R2 R1 R2 - 0x90021202, // 0014 SETMBR R0 K9 R2 - 0x8C08010B, // 0015 GETMET R2 R0 K11 - 0x7C080200, // 0016 CALL R2 1 - 0x780A0001, // 0017 JMPF R2 #001A - 0x8C08010C, // 0018 GETMET R2 R0 K12 - 0x7C080200, // 0019 CALL R2 1 - 0x80040200, // 001A RET 1 R1 + 0x600C0018, // 0004 GETGBL R3 G24 + 0x58100003, // 0005 LDCONST R4 K3 + 0x5C140200, // 0006 MOVE R5 R1 + 0x7C0C0400, // 0007 CALL R3 2 + 0x58100004, // 0008 LDCONST R4 K4 + 0x7C080400, // 0009 CALL R2 2 + 0xB80A0A00, // 000A GETNGBL R2 K5 + 0x88080506, // 000B GETMBR R2 R2 K6 + 0x8C080507, // 000C GETMET R2 R2 K7 + 0x5C100200, // 000D MOVE R4 R1 + 0x88140108, // 000E GETMBR R5 R0 K8 + 0x7C080600, // 000F CALL R2 3 + 0x780A0007, // 0010 JMPF R2 #0019 + 0x88080109, // 0011 GETMBR R2 R0 K9 + 0x00080202, // 0012 ADD R2 R1 R2 + 0x90021002, // 0013 SETMBR R0 K8 R2 + 0x8C08010A, // 0014 GETMET R2 R0 K10 + 0x7C080200, // 0015 CALL R2 1 + 0x780A0001, // 0016 JMPF R2 #0019 + 0x8C08010B, // 0017 GETMET R2 R0 K11 + 0x7C080200, // 0018 CALL R2 1 + 0x80040200, // 0019 RET 1 R1 }) ) ); @@ -1067,7 +1063,7 @@ be_local_closure(class_Matter_Fabric_get_newest_session, /* name */ extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ be_nested_proto( - 8, /* nstack */ + 7, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1075,38 +1071,36 @@ be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ 0, /* has sup protos */ &be_class_Matter_Fabric, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(copy), - /* K5 */ be_nested_str_weak(reverse), - /* K6 */ be_nested_str_weak(tohex), - /* K7 */ be_nested_str_weak(get_admin_vendor_name), - /* K8 */ be_const_int(3), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s), + /* K2 */ be_nested_str_weak(get_fabric_id), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(reverse), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(get_admin_vendor_name), + /* K7 */ be_const_int(3), }), be_str_weak(log_new_fabric), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x600C0018, // 0002 GETGBL R3 G24 - 0x58100002, // 0003 LDCONST R4 K2 - 0x8C140103, // 0004 GETMET R5 R0 K3 - 0x7C140200, // 0005 CALL R5 1 - 0x8C140B04, // 0006 GETMET R5 R5 K4 - 0x7C140200, // 0007 CALL R5 1 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x7C140200, // 0009 CALL R5 1 - 0x8C140B06, // 000A GETMET R5 R5 K6 - 0x7C140200, // 000B CALL R5 1 - 0x8C180107, // 000C GETMET R6 R0 K7 - 0x7C180200, // 000D CALL R6 1 - 0x7C0C0600, // 000E CALL R3 3 - 0x58100008, // 000F LDCONST R4 K8 - 0x7C040600, // 0010 CALL R1 3 - 0x80000000, // 0011 RET 0 + 0x60080018, // 0001 GETGBL R2 G24 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x8C100102, // 0003 GETMET R4 R0 K2 + 0x7C100200, // 0004 CALL R4 1 + 0x8C100903, // 0005 GETMET R4 R4 K3 + 0x7C100200, // 0006 CALL R4 1 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x7C100200, // 0008 CALL R4 1 + 0x8C100905, // 0009 GETMET R4 R4 K5 + 0x7C100200, // 000A CALL R4 1 + 0x8C140106, // 000B GETMET R5 R0 K6 + 0x7C140200, // 000C CALL R5 1 + 0x7C080600, // 000D CALL R2 3 + 0x580C0007, // 000E LDCONST R3 K7 + 0x7C040400, // 000F CALL R1 2 + 0x80000000, // 0010 RET 0 }) ) ); @@ -1365,7 +1359,7 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1373,51 +1367,49 @@ be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */ 0, /* has sup protos */ &be_class_Matter_Fabric, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), /* K1 */ be_nested_str_weak(next), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(Counter), - /* K8 */ be_nested_str_weak(is_greater), - /* K9 */ be_nested_str_weak(counter_group_ctrl_snd), - /* K10 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K11 */ be_nested_str_weak(does_persist), - /* K12 */ be_nested_str_weak(save), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(Counter), + /* K7 */ be_nested_str_weak(is_greater), + /* K8 */ be_nested_str_weak(counter_group_ctrl_snd), + /* K9 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K10 */ be_nested_str_weak(does_persist), + /* K11 */ be_nested_str_weak(save), }), be_str_weak(counter_group_ctrl_snd_next), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ + ( &(const binstruction[26]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x7C040200, // 0002 CALL R1 1 0xB80A0400, // 0003 GETNGBL R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 - 0x60100018, // 0005 GETGBL R4 G24 - 0x58140004, // 0006 LDCONST R5 K4 - 0x5C180200, // 0007 MOVE R6 R1 - 0x7C100400, // 0008 CALL R4 2 - 0x58140005, // 0009 LDCONST R5 K5 - 0x7C080600, // 000A CALL R2 3 - 0xB80A0C00, // 000B GETNGBL R2 K6 - 0x88080507, // 000C GETMBR R2 R2 K7 - 0x8C080508, // 000D GETMET R2 R2 K8 - 0x5C100200, // 000E MOVE R4 R1 - 0x88140109, // 000F GETMBR R5 R0 K9 - 0x7C080600, // 0010 CALL R2 3 - 0x780A0007, // 0011 JMPF R2 #001A - 0x8808010A, // 0012 GETMBR R2 R0 K10 - 0x00080202, // 0013 ADD R2 R1 R2 - 0x90021202, // 0014 SETMBR R0 K9 R2 - 0x8C08010B, // 0015 GETMET R2 R0 K11 - 0x7C080200, // 0016 CALL R2 1 - 0x780A0001, // 0017 JMPF R2 #001A - 0x8C08010C, // 0018 GETMET R2 R0 K12 - 0x7C080200, // 0019 CALL R2 1 - 0x80040200, // 001A RET 1 R1 + 0x600C0018, // 0004 GETGBL R3 G24 + 0x58100003, // 0005 LDCONST R4 K3 + 0x5C140200, // 0006 MOVE R5 R1 + 0x7C0C0400, // 0007 CALL R3 2 + 0x58100004, // 0008 LDCONST R4 K4 + 0x7C080400, // 0009 CALL R2 2 + 0xB80A0A00, // 000A GETNGBL R2 K5 + 0x88080506, // 000B GETMBR R2 R2 K6 + 0x8C080507, // 000C GETMET R2 R2 K7 + 0x5C100200, // 000D MOVE R4 R1 + 0x88140108, // 000E GETMBR R5 R0 K8 + 0x7C080600, // 000F CALL R2 3 + 0x780A0007, // 0010 JMPF R2 #0019 + 0x88080109, // 0011 GETMBR R2 R0 K9 + 0x00080202, // 0012 ADD R2 R1 R2 + 0x90021002, // 0013 SETMBR R0 K8 R2 + 0x8C08010A, // 0014 GETMET R2 R0 K10 + 0x7C080200, // 0015 CALL R2 1 + 0x780A0001, // 0016 JMPF R2 #0019 + 0x8C08010B, // 0017 GETMET R2 R0 K11 + 0x7C080200, // 0018 CALL R2 1 + 0x80040200, // 0019 RET 1 R1 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h index 3328ff109..812dbda25 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h @@ -153,7 +153,7 @@ be_local_closure(class_Matter_HTTP_remote_get_info, /* name */ extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -161,7 +161,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ + ( &(const bvalue[27]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(find), /* K2 */ be_nested_str_weak(DeviceName), @@ -169,34 +169,33 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ /* K4 */ be_nested_str_weak(info), /* K5 */ be_nested_str_weak(name), /* K6 */ be_nested_str_weak(remove), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20name_X3D_X27_X25s_X27), - /* K10 */ be_nested_str_weak(addr), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(change_schedule), - /* K13 */ be_nested_str_weak(UPDATE_CMD0), - /* K14 */ be_nested_str_weak(UPDATE_TIME2), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(Version), - /* K17 */ be_nested_str_weak(Hardware), - /* K18 */ be_nested_str_weak(version), - /* K19 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20version_X3D_X27_X25s_X27), - /* K20 */ be_nested_str_weak(hardware), - /* K21 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20hardware_X3D_X27_X25s_X27), - /* K22 */ be_nested_str_weak(UPDATE_CMD2), - /* K23 */ be_nested_str_weak(Mac), - /* K24 */ be_nested_str_weak(mac), - /* K25 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20mac_X3D_X27_X25s_X27), - /* K26 */ be_nested_str_weak(UPDATE_CMD5), - /* K27 */ be_nested_str_weak(info_changed), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20name_X3D_X27_X25s_X27), + /* K9 */ be_nested_str_weak(addr), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(change_schedule), + /* K12 */ be_nested_str_weak(UPDATE_CMD0), + /* K13 */ be_nested_str_weak(UPDATE_TIME2), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(Version), + /* K16 */ be_nested_str_weak(Hardware), + /* K17 */ be_nested_str_weak(version), + /* K18 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20version_X3D_X27_X25s_X27), + /* K19 */ be_nested_str_weak(hardware), + /* K20 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20hardware_X3D_X27_X25s_X27), + /* K21 */ be_nested_str_weak(UPDATE_CMD2), + /* K22 */ be_nested_str_weak(Mac), + /* K23 */ be_nested_str_weak(mac), + /* K24 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20mac_X3D_X27_X25s_X27), + /* K25 */ be_nested_str_weak(UPDATE_CMD5), + /* K26 */ be_nested_str_weak(info_changed), }), be_str_weak(parse_status_http), &be_const_str_solidified, - ( &(const binstruction[145]) { /* code */ + ( &(const binstruction[141]) { /* code */ 0x500C0000, // 0000 LDBOOL R3 0 0 0x1C100500, // 0001 EQ R4 R2 K0 - 0x78120024, // 0002 JMPF R4 #0028 + 0x78120023, // 0002 JMPF R4 #0027 0x8C100301, // 0003 GETMET R4 R1 K1 0x58180002, // 0004 LDCONST R6 K2 0x7C100400, // 0005 CALL R4 2 @@ -208,7 +207,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ 0x581C0005, // 000B LDCONST R7 K5 0x7C140400, // 000C CALL R5 2 0x20140A04, // 000D NE R5 R5 R4 - 0x78160013, // 000E JMPF R5 #0023 + 0x78160012, // 000E JMPF R5 #0022 0x4C140000, // 000F LDNIL R5 0x20140805, // 0010 NE R5 R4 R5 0x78160002, // 0011 JMPF R5 #0015 @@ -220,125 +219,121 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ 0x581C0005, // 0017 LDCONST R7 K5 0x7C140400, // 0018 CALL R5 2 0xB8160E00, // 0019 GETNGBL R5 K7 - 0x8C140B08, // 001A GETMET R5 R5 K8 - 0x601C0018, // 001B GETGBL R7 G24 - 0x58200009, // 001C LDCONST R8 K9 - 0x8824010A, // 001D GETMBR R9 R0 K10 - 0x5C280800, // 001E MOVE R10 R4 - 0x7C1C0600, // 001F CALL R7 3 - 0x5820000B, // 0020 LDCONST R8 K11 - 0x7C140600, // 0021 CALL R5 3 - 0x500C0200, // 0022 LDBOOL R3 1 0 - 0x8C14010C, // 0023 GETMET R5 R0 K12 - 0x881C010D, // 0024 GETMBR R7 R0 K13 - 0x8820010E, // 0025 GETMBR R8 R0 K14 - 0x7C140600, // 0026 CALL R5 3 - 0x70020064, // 0027 JMP #008D - 0x1C10050F, // 0028 EQ R4 R2 K15 - 0x7812003E, // 0029 JMPF R4 #0069 - 0x8C100301, // 002A GETMET R4 R1 K1 - 0x58180010, // 002B LDCONST R6 K16 - 0x7C100400, // 002C CALL R4 2 - 0x8C140301, // 002D GETMET R5 R1 K1 - 0x581C0011, // 002E LDCONST R7 K17 - 0x7C140400, // 002F CALL R5 2 - 0x88180104, // 0030 GETMBR R6 R0 K4 - 0x8C180D01, // 0031 GETMET R6 R6 K1 - 0x58200012, // 0032 LDCONST R8 K18 - 0x7C180400, // 0033 CALL R6 2 - 0x20180C04, // 0034 NE R6 R6 R4 - 0x781A0013, // 0035 JMPF R6 #004A - 0x4C180000, // 0036 LDNIL R6 - 0x20180806, // 0037 NE R6 R4 R6 - 0x781A0002, // 0038 JMPF R6 #003C - 0x88180104, // 0039 GETMBR R6 R0 K4 - 0x981A2404, // 003A SETIDX R6 K18 R4 - 0x70020003, // 003B JMP #0040 - 0x88180104, // 003C GETMBR R6 R0 K4 - 0x8C180D06, // 003D GETMET R6 R6 K6 - 0x58200012, // 003E LDCONST R8 K18 - 0x7C180400, // 003F CALL R6 2 - 0xB81A0E00, // 0040 GETNGBL R6 K7 - 0x8C180D08, // 0041 GETMET R6 R6 K8 - 0x60200018, // 0042 GETGBL R8 G24 - 0x58240013, // 0043 LDCONST R9 K19 - 0x8828010A, // 0044 GETMBR R10 R0 K10 - 0x5C2C0800, // 0045 MOVE R11 R4 - 0x7C200600, // 0046 CALL R8 3 - 0x5824000B, // 0047 LDCONST R9 K11 - 0x7C180600, // 0048 CALL R6 3 - 0x500C0200, // 0049 LDBOOL R3 1 0 - 0x88180104, // 004A GETMBR R6 R0 K4 - 0x8C180D01, // 004B GETMET R6 R6 K1 - 0x58200014, // 004C LDCONST R8 K20 - 0x7C180400, // 004D CALL R6 2 - 0x20180C05, // 004E NE R6 R6 R5 - 0x781A0013, // 004F JMPF R6 #0064 - 0x4C180000, // 0050 LDNIL R6 - 0x20180A06, // 0051 NE R6 R5 R6 - 0x781A0002, // 0052 JMPF R6 #0056 - 0x88180104, // 0053 GETMBR R6 R0 K4 - 0x981A2805, // 0054 SETIDX R6 K20 R5 - 0x70020003, // 0055 JMP #005A - 0x88180104, // 0056 GETMBR R6 R0 K4 - 0x8C180D06, // 0057 GETMET R6 R6 K6 - 0x58200014, // 0058 LDCONST R8 K20 - 0x7C180400, // 0059 CALL R6 2 - 0xB81A0E00, // 005A GETNGBL R6 K7 - 0x8C180D08, // 005B GETMET R6 R6 K8 - 0x60200018, // 005C GETGBL R8 G24 - 0x58240015, // 005D LDCONST R9 K21 - 0x8828010A, // 005E GETMBR R10 R0 K10 - 0x5C2C0A00, // 005F MOVE R11 R5 - 0x7C200600, // 0060 CALL R8 3 - 0x5824000B, // 0061 LDCONST R9 K11 - 0x7C180600, // 0062 CALL R6 3 - 0x500C0200, // 0063 LDBOOL R3 1 0 - 0x8C18010C, // 0064 GETMET R6 R0 K12 - 0x88200116, // 0065 GETMBR R8 R0 K22 - 0x8824010E, // 0066 GETMBR R9 R0 K14 - 0x7C180600, // 0067 CALL R6 3 - 0x70020023, // 0068 JMP #008D - 0x54120004, // 0069 LDINT R4 5 - 0x1C100404, // 006A EQ R4 R2 R4 - 0x78120020, // 006B JMPF R4 #008D - 0x8C100301, // 006C GETMET R4 R1 K1 - 0x58180017, // 006D LDCONST R6 K23 - 0x7C100400, // 006E CALL R4 2 - 0x88140104, // 006F GETMBR R5 R0 K4 - 0x8C140B01, // 0070 GETMET R5 R5 K1 - 0x581C0018, // 0071 LDCONST R7 K24 - 0x7C140400, // 0072 CALL R5 2 - 0x20140A04, // 0073 NE R5 R5 R4 - 0x78160013, // 0074 JMPF R5 #0089 - 0x4C140000, // 0075 LDNIL R5 - 0x20140805, // 0076 NE R5 R4 R5 - 0x78160002, // 0077 JMPF R5 #007B + 0x60180018, // 001A GETGBL R6 G24 + 0x581C0008, // 001B LDCONST R7 K8 + 0x88200109, // 001C GETMBR R8 R0 K9 + 0x5C240800, // 001D MOVE R9 R4 + 0x7C180600, // 001E CALL R6 3 + 0x581C000A, // 001F LDCONST R7 K10 + 0x7C140400, // 0020 CALL R5 2 + 0x500C0200, // 0021 LDBOOL R3 1 0 + 0x8C14010B, // 0022 GETMET R5 R0 K11 + 0x881C010C, // 0023 GETMBR R7 R0 K12 + 0x8820010D, // 0024 GETMBR R8 R0 K13 + 0x7C140600, // 0025 CALL R5 3 + 0x70020061, // 0026 JMP #0089 + 0x1C10050E, // 0027 EQ R4 R2 K14 + 0x7812003C, // 0028 JMPF R4 #0066 + 0x8C100301, // 0029 GETMET R4 R1 K1 + 0x5818000F, // 002A LDCONST R6 K15 + 0x7C100400, // 002B CALL R4 2 + 0x8C140301, // 002C GETMET R5 R1 K1 + 0x581C0010, // 002D LDCONST R7 K16 + 0x7C140400, // 002E CALL R5 2 + 0x88180104, // 002F GETMBR R6 R0 K4 + 0x8C180D01, // 0030 GETMET R6 R6 K1 + 0x58200011, // 0031 LDCONST R8 K17 + 0x7C180400, // 0032 CALL R6 2 + 0x20180C04, // 0033 NE R6 R6 R4 + 0x781A0012, // 0034 JMPF R6 #0048 + 0x4C180000, // 0035 LDNIL R6 + 0x20180806, // 0036 NE R6 R4 R6 + 0x781A0002, // 0037 JMPF R6 #003B + 0x88180104, // 0038 GETMBR R6 R0 K4 + 0x981A2204, // 0039 SETIDX R6 K17 R4 + 0x70020003, // 003A JMP #003F + 0x88180104, // 003B GETMBR R6 R0 K4 + 0x8C180D06, // 003C GETMET R6 R6 K6 + 0x58200011, // 003D LDCONST R8 K17 + 0x7C180400, // 003E CALL R6 2 + 0xB81A0E00, // 003F GETNGBL R6 K7 + 0x601C0018, // 0040 GETGBL R7 G24 + 0x58200012, // 0041 LDCONST R8 K18 + 0x88240109, // 0042 GETMBR R9 R0 K9 + 0x5C280800, // 0043 MOVE R10 R4 + 0x7C1C0600, // 0044 CALL R7 3 + 0x5820000A, // 0045 LDCONST R8 K10 + 0x7C180400, // 0046 CALL R6 2 + 0x500C0200, // 0047 LDBOOL R3 1 0 + 0x88180104, // 0048 GETMBR R6 R0 K4 + 0x8C180D01, // 0049 GETMET R6 R6 K1 + 0x58200013, // 004A LDCONST R8 K19 + 0x7C180400, // 004B CALL R6 2 + 0x20180C05, // 004C NE R6 R6 R5 + 0x781A0012, // 004D JMPF R6 #0061 + 0x4C180000, // 004E LDNIL R6 + 0x20180A06, // 004F NE R6 R5 R6 + 0x781A0002, // 0050 JMPF R6 #0054 + 0x88180104, // 0051 GETMBR R6 R0 K4 + 0x981A2605, // 0052 SETIDX R6 K19 R5 + 0x70020003, // 0053 JMP #0058 + 0x88180104, // 0054 GETMBR R6 R0 K4 + 0x8C180D06, // 0055 GETMET R6 R6 K6 + 0x58200013, // 0056 LDCONST R8 K19 + 0x7C180400, // 0057 CALL R6 2 + 0xB81A0E00, // 0058 GETNGBL R6 K7 + 0x601C0018, // 0059 GETGBL R7 G24 + 0x58200014, // 005A LDCONST R8 K20 + 0x88240109, // 005B GETMBR R9 R0 K9 + 0x5C280A00, // 005C MOVE R10 R5 + 0x7C1C0600, // 005D CALL R7 3 + 0x5820000A, // 005E LDCONST R8 K10 + 0x7C180400, // 005F CALL R6 2 + 0x500C0200, // 0060 LDBOOL R3 1 0 + 0x8C18010B, // 0061 GETMET R6 R0 K11 + 0x88200115, // 0062 GETMBR R8 R0 K21 + 0x8824010D, // 0063 GETMBR R9 R0 K13 + 0x7C180600, // 0064 CALL R6 3 + 0x70020022, // 0065 JMP #0089 + 0x54120004, // 0066 LDINT R4 5 + 0x1C100404, // 0067 EQ R4 R2 R4 + 0x7812001F, // 0068 JMPF R4 #0089 + 0x8C100301, // 0069 GETMET R4 R1 K1 + 0x58180016, // 006A LDCONST R6 K22 + 0x7C100400, // 006B CALL R4 2 + 0x88140104, // 006C GETMBR R5 R0 K4 + 0x8C140B01, // 006D GETMET R5 R5 K1 + 0x581C0017, // 006E LDCONST R7 K23 + 0x7C140400, // 006F CALL R5 2 + 0x20140A04, // 0070 NE R5 R5 R4 + 0x78160012, // 0071 JMPF R5 #0085 + 0x4C140000, // 0072 LDNIL R5 + 0x20140805, // 0073 NE R5 R4 R5 + 0x78160002, // 0074 JMPF R5 #0078 + 0x88140104, // 0075 GETMBR R5 R0 K4 + 0x98162E04, // 0076 SETIDX R5 K23 R4 + 0x70020003, // 0077 JMP #007C 0x88140104, // 0078 GETMBR R5 R0 K4 - 0x98163004, // 0079 SETIDX R5 K24 R4 - 0x70020003, // 007A JMP #007F - 0x88140104, // 007B GETMBR R5 R0 K4 - 0x8C140B06, // 007C GETMET R5 R5 K6 - 0x581C0018, // 007D LDCONST R7 K24 - 0x7C140400, // 007E CALL R5 2 - 0xB8160E00, // 007F GETNGBL R5 K7 - 0x8C140B08, // 0080 GETMET R5 R5 K8 - 0x601C0018, // 0081 GETGBL R7 G24 - 0x58200019, // 0082 LDCONST R8 K25 - 0x8824010A, // 0083 GETMBR R9 R0 K10 - 0x5C280800, // 0084 MOVE R10 R4 - 0x7C1C0600, // 0085 CALL R7 3 - 0x5820000B, // 0086 LDCONST R8 K11 - 0x7C140600, // 0087 CALL R5 3 - 0x500C0200, // 0088 LDBOOL R3 1 0 - 0x8C14010C, // 0089 GETMET R5 R0 K12 - 0x881C011A, // 008A GETMBR R7 R0 K26 - 0x8820010E, // 008B GETMBR R8 R0 K14 - 0x7C140600, // 008C CALL R5 3 - 0x780E0001, // 008D JMPF R3 #0090 - 0x8C10011B, // 008E GETMET R4 R0 K27 - 0x7C100200, // 008F CALL R4 1 - 0x80000000, // 0090 RET 0 + 0x8C140B06, // 0079 GETMET R5 R5 K6 + 0x581C0017, // 007A LDCONST R7 K23 + 0x7C140400, // 007B CALL R5 2 + 0xB8160E00, // 007C GETNGBL R5 K7 + 0x60180018, // 007D GETGBL R6 G24 + 0x581C0018, // 007E LDCONST R7 K24 + 0x88200109, // 007F GETMBR R8 R0 K9 + 0x5C240800, // 0080 MOVE R9 R4 + 0x7C180600, // 0081 CALL R6 3 + 0x581C000A, // 0082 LDCONST R7 K10 + 0x7C140400, // 0083 CALL R5 2 + 0x500C0200, // 0084 LDBOOL R3 1 0 + 0x8C14010B, // 0085 GETMET R5 R0 K11 + 0x881C0119, // 0086 GETMBR R7 R0 K25 + 0x8820010D, // 0087 GETMBR R8 R0 K13 + 0x7C140600, // 0088 CALL R5 3 + 0x780E0001, // 0089 JMPF R3 #008C + 0x8C10011A, // 008A GETMET R4 R0 K26 + 0x7C100200, // 008B CALL R4 1 + 0x80000000, // 008C RET 0 }) ) ); @@ -419,7 +414,7 @@ be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -433,9 +428,9 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ /* K2 */ be_nested_str_weak(nil), /* K3 */ be_const_int(0), /* K4 */ be_nested_str_weak(_X2E_X2E_X2E), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K7 */ be_nested_str_weak(tasmota), /* K8 */ be_nested_str_weak(millis), /* K9 */ be_nested_str_weak(time_start), /* K10 */ be_nested_str_weak(addr), @@ -445,7 +440,7 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ }), be_str_weak(event_http_finished), &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ + ( &(const binstruction[44]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 @@ -470,27 +465,26 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ 0x00080504, // 0015 ADD R2 R2 K4 0x5C040400, // 0016 MOVE R1 R2 0xB80A0A00, // 0017 GETNGBL R2 K5 - 0x8C080506, // 0018 GETMET R2 R2 K6 - 0x60100018, // 0019 GETGBL R4 G24 - 0x58140007, // 001A LDCONST R5 K7 - 0xB81A0A00, // 001B GETNGBL R6 K5 - 0x8C180D08, // 001C GETMET R6 R6 K8 - 0x7C180200, // 001D CALL R6 1 - 0x881C0109, // 001E GETMBR R7 R0 K9 - 0x04180C07, // 001F SUB R6 R6 R7 - 0x881C010A, // 0020 GETMBR R7 R0 K10 - 0x6020000C, // 0021 GETGBL R8 G12 - 0x88240101, // 0022 GETMBR R9 R0 K1 - 0x7C200200, // 0023 CALL R8 1 - 0x5C240200, // 0024 MOVE R9 R1 - 0x7C100A00, // 0025 CALL R4 5 - 0x5814000B, // 0026 LDCONST R5 K11 - 0x7C080600, // 0027 CALL R2 3 - 0x8C08010C, // 0028 GETMET R2 R0 K12 - 0x8810010D, // 0029 GETMBR R4 R0 K13 - 0x88140101, // 002A GETMBR R5 R0 K1 - 0x7C080600, // 002B CALL R2 3 - 0x80000000, // 002C RET 0 + 0x600C0018, // 0018 GETGBL R3 G24 + 0x58100006, // 0019 LDCONST R4 K6 + 0xB8160E00, // 001A GETNGBL R5 K7 + 0x8C140B08, // 001B GETMET R5 R5 K8 + 0x7C140200, // 001C CALL R5 1 + 0x88180109, // 001D GETMBR R6 R0 K9 + 0x04140A06, // 001E SUB R5 R5 R6 + 0x8818010A, // 001F GETMBR R6 R0 K10 + 0x601C000C, // 0020 GETGBL R7 G12 + 0x88200101, // 0021 GETMBR R8 R0 K1 + 0x7C1C0200, // 0022 CALL R7 1 + 0x5C200200, // 0023 MOVE R8 R1 + 0x7C0C0A00, // 0024 CALL R3 5 + 0x5810000B, // 0025 LDCONST R4 K11 + 0x7C080400, // 0026 CALL R2 2 + 0x8C08010C, // 0027 GETMET R2 R0 K12 + 0x8810010D, // 0028 GETMBR R4 R0 K13 + 0x88140101, // 0029 GETMBR R5 R0 K1 + 0x7C080600, // 002A CALL R2 3 + 0x80000000, // 002B RET 0 }) ) ); @@ -503,7 +497,7 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -531,7 +525,7 @@ be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ }), be_str_weak(probe_async), &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ + ( &(const binstruction[34]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0xA40E0200, // 0001 IMPORT R3 K1 0xB8120400, // 0002 GETNGBL R4 K2 @@ -553,20 +547,19 @@ be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ 0x5820000A, // 0012 LDCONST R8 K10 0x7C100800, // 0013 CALL R4 4 0x00120E04, // 0014 ADD R4 K7 R4 - 0xB8160400, // 0015 GETNGBL R5 K2 - 0x8C140B0B, // 0016 GETMET R5 R5 K11 - 0x601C0018, // 0017 GETGBL R7 G24 - 0x5820000C, // 0018 LDCONST R8 K12 - 0x8824010D, // 0019 GETMBR R9 R0 K13 - 0x8828010E, // 001A GETMBR R10 R0 K14 - 0x5C2C0800, // 001B MOVE R11 R4 - 0x7C1C0800, // 001C CALL R7 4 - 0x54220003, // 001D LDINT R8 4 - 0x7C140600, // 001E CALL R5 3 - 0x8C14010F, // 001F GETMET R5 R0 K15 - 0x5C1C0800, // 0020 MOVE R7 R4 - 0x7C140400, // 0021 CALL R5 2 - 0x80000000, // 0022 RET 0 + 0xB8161600, // 0015 GETNGBL R5 K11 + 0x60180018, // 0016 GETGBL R6 G24 + 0x581C000C, // 0017 LDCONST R7 K12 + 0x8820010D, // 0018 GETMBR R8 R0 K13 + 0x8824010E, // 0019 GETMBR R9 R0 K14 + 0x5C280800, // 001A MOVE R10 R4 + 0x7C180800, // 001B CALL R6 4 + 0x541E0003, // 001C LDINT R7 4 + 0x7C140400, // 001D CALL R5 2 + 0x8C14010F, // 001E GETMET R5 R0 K15 + 0x5C1C0800, // 001F MOVE R7 R4 + 0x7C140400, // 0020 CALL R5 2 + 0x80000000, // 0021 RET 0 }) ) ); @@ -885,7 +878,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ + ( &(const bvalue[11]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(device_is_alive), /* K2 */ be_nested_str_weak(string), @@ -894,19 +887,18 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, /* K5 */ be_nested_str_weak(STATUS_PREFIX), /* K6 */ be_nested_str_weak(contains), /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), - /* K11 */ be_const_int(3), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), + /* K10 */ be_const_int(3), }), be_str_weak(parse_status_response_and_call_method), &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ + ( &(const binstruction[57]) { /* code */ 0x4C180000, // 0000 LDNIL R6 0x20180206, // 0001 NE R6 R1 R6 - 0x781A0035, // 0002 JMPF R6 #0039 + 0x781A0034, // 0002 JMPF R6 #0038 0x24180300, // 0003 GT R6 R1 K0 - 0x781A0033, // 0004 JMPF R6 #0039 + 0x781A0032, // 0004 JMPF R6 #0038 0x8C180101, // 0005 GETMET R6 R0 K1 0x50200200, // 0006 LDBOOL R8 1 0 0x7C180400, // 0007 CALL R6 2 @@ -950,16 +942,15 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x5C300C00, // 002D MOVE R12 R6 0x5C340E00, // 002E MOVE R13 R7 0x7C280600, // 002F CALL R10 3 - 0x70020007, // 0030 JMP #0039 + 0x70020006, // 0030 JMP #0038 0xB8221000, // 0031 GETNGBL R8 K8 - 0x8C201109, // 0032 GETMET R8 R8 K9 - 0x60280018, // 0033 GETGBL R10 G24 - 0x582C000A, // 0034 LDCONST R11 K10 - 0x5C300400, // 0035 MOVE R12 R2 - 0x7C280400, // 0036 CALL R10 2 - 0x582C000B, // 0037 LDCONST R11 K11 - 0x7C200600, // 0038 CALL R8 3 - 0x80000000, // 0039 RET 0 + 0x60240018, // 0032 GETGBL R9 G24 + 0x58280009, // 0033 LDCONST R10 K9 + 0x5C2C0400, // 0034 MOVE R11 R2 + 0x7C240400, // 0035 CALL R9 2 + 0x5828000A, // 0036 LDCONST R10 K10 + 0x7C200400, // 0037 CALL R8 2 + 0x80000000, // 0038 RET 0 }) ) ); @@ -972,7 +963,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ be_nested_proto( - 16, /* nstack */ + 15, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1008,7 +999,7 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ }), be_str_weak(call_sync), &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ + ( &(const binstruction[70]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xA4120200, // 0001 IMPORT R4 K1 0xB8160400, // 0002 GETNGBL R5 K2 @@ -1031,56 +1022,54 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0x5824000A, // 0013 LDCONST R9 K10 0x7C140800, // 0014 CALL R5 4 0x00160E05, // 0015 ADD R5 K7 R5 - 0xB81A0400, // 0016 GETNGBL R6 K2 - 0x8C180D0B, // 0017 GETMET R6 R6 K11 - 0x60200018, // 0018 GETGBL R8 G24 - 0x5824000C, // 0019 LDCONST R9 K12 - 0x8828010D, // 001A GETMBR R10 R0 K13 - 0x882C010E, // 001B GETMBR R11 R0 K14 - 0x5C300A00, // 001C MOVE R12 R5 - 0x7C200800, // 001D CALL R8 4 - 0x54260003, // 001E LDINT R9 4 - 0x7C180600, // 001F CALL R6 3 - 0x60180003, // 0020 GETGBL R6 G3 - 0x5C1C0000, // 0021 MOVE R7 R0 - 0x7C180200, // 0022 CALL R6 1 - 0x8C180D0F, // 0023 GETMET R6 R6 K15 - 0x5C200A00, // 0024 MOVE R8 R5 - 0x5C240400, // 0025 MOVE R9 R2 - 0x7C180600, // 0026 CALL R6 3 - 0x781A0001, // 0027 JMPF R6 #002A - 0x5C1C0C00, // 0028 MOVE R7 R6 - 0x70020000, // 0029 JMP #002B - 0x581C0010, // 002A LDCONST R7 K16 - 0x6020000C, // 002B GETGBL R8 G12 - 0x5C240E00, // 002C MOVE R9 R7 - 0x7C200200, // 002D CALL R8 1 - 0x5426001D, // 002E LDINT R9 30 - 0x24201009, // 002F GT R8 R8 R9 - 0x78220004, // 0030 JMPF R8 #0036 - 0x5422001C, // 0031 LDINT R8 29 - 0x40222208, // 0032 CONNECT R8 K17 R8 - 0x94200E08, // 0033 GETIDX R8 R7 R8 - 0x00201112, // 0034 ADD R8 R8 K18 - 0x5C1C1000, // 0035 MOVE R7 R8 - 0xB8220400, // 0036 GETNGBL R8 K2 - 0x8C20110B, // 0037 GETMET R8 R8 K11 - 0x60280018, // 0038 GETGBL R10 G24 - 0x582C0013, // 0039 LDCONST R11 K19 - 0xB8320400, // 003A GETNGBL R12 K2 - 0x8C301914, // 003B GETMET R12 R12 K20 - 0x7C300200, // 003C CALL R12 1 - 0x88340115, // 003D GETMBR R13 R0 K21 - 0x0430180D, // 003E SUB R12 R12 R13 - 0x8834010D, // 003F GETMBR R13 R0 K13 - 0x6038000C, // 0040 GETGBL R14 G12 - 0x883C0116, // 0041 GETMBR R15 R0 K22 - 0x7C380200, // 0042 CALL R14 1 - 0x5C3C0E00, // 0043 MOVE R15 R7 - 0x7C280A00, // 0044 CALL R10 5 - 0x582C0017, // 0045 LDCONST R11 K23 - 0x7C200600, // 0046 CALL R8 3 - 0x80040C00, // 0047 RET 1 R6 + 0xB81A1600, // 0016 GETNGBL R6 K11 + 0x601C0018, // 0017 GETGBL R7 G24 + 0x5820000C, // 0018 LDCONST R8 K12 + 0x8824010D, // 0019 GETMBR R9 R0 K13 + 0x8828010E, // 001A GETMBR R10 R0 K14 + 0x5C2C0A00, // 001B MOVE R11 R5 + 0x7C1C0800, // 001C CALL R7 4 + 0x54220003, // 001D LDINT R8 4 + 0x7C180400, // 001E CALL R6 2 + 0x60180003, // 001F GETGBL R6 G3 + 0x5C1C0000, // 0020 MOVE R7 R0 + 0x7C180200, // 0021 CALL R6 1 + 0x8C180D0F, // 0022 GETMET R6 R6 K15 + 0x5C200A00, // 0023 MOVE R8 R5 + 0x5C240400, // 0024 MOVE R9 R2 + 0x7C180600, // 0025 CALL R6 3 + 0x781A0001, // 0026 JMPF R6 #0029 + 0x5C1C0C00, // 0027 MOVE R7 R6 + 0x70020000, // 0028 JMP #002A + 0x581C0010, // 0029 LDCONST R7 K16 + 0x6020000C, // 002A GETGBL R8 G12 + 0x5C240E00, // 002B MOVE R9 R7 + 0x7C200200, // 002C CALL R8 1 + 0x5426001D, // 002D LDINT R9 30 + 0x24201009, // 002E GT R8 R8 R9 + 0x78220004, // 002F JMPF R8 #0035 + 0x5422001C, // 0030 LDINT R8 29 + 0x40222208, // 0031 CONNECT R8 K17 R8 + 0x94200E08, // 0032 GETIDX R8 R7 R8 + 0x00201112, // 0033 ADD R8 R8 K18 + 0x5C1C1000, // 0034 MOVE R7 R8 + 0xB8221600, // 0035 GETNGBL R8 K11 + 0x60240018, // 0036 GETGBL R9 G24 + 0x58280013, // 0037 LDCONST R10 K19 + 0xB82E0400, // 0038 GETNGBL R11 K2 + 0x8C2C1714, // 0039 GETMET R11 R11 K20 + 0x7C2C0200, // 003A CALL R11 1 + 0x88300115, // 003B GETMBR R12 R0 K21 + 0x042C160C, // 003C SUB R11 R11 R12 + 0x8830010D, // 003D GETMBR R12 R0 K13 + 0x6034000C, // 003E GETGBL R13 G12 + 0x88380116, // 003F GETMBR R14 R0 K22 + 0x7C340200, // 0040 CALL R13 1 + 0x5C380E00, // 0041 MOVE R14 R7 + 0x7C240A00, // 0042 CALL R9 5 + 0x58280017, // 0043 LDCONST R10 K23 + 0x7C200400, // 0044 CALL R8 2 + 0x80040C00, // 0045 RET 1 R6 }) ) ); @@ -1202,33 +1191,31 @@ be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ + ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(current_cmd), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(dispatch_cb), - /* K6 */ be_nested_str_weak(http_status), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(dispatch_cb), + /* K5 */ be_nested_str_weak(http_status), }), be_str_weak(event_http_failed), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ + ( &(const binstruction[14]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x58080002, // 0006 LDCONST R2 K2 0x580C0003, // 0007 LDCONST R3 K3 - 0x58100004, // 0008 LDCONST R4 K4 - 0x7C040600, // 0009 CALL R1 3 - 0x8C040105, // 000A GETMET R1 R0 K5 - 0x880C0106, // 000B GETMBR R3 R0 K6 - 0x4C100000, // 000C LDNIL R4 - 0x7C040600, // 000D CALL R1 3 - 0x80000000, // 000E RET 0 + 0x7C040400, // 0008 CALL R1 2 + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x880C0105, // 000A GETMBR R3 R0 K5 + 0x4C100000, // 000B LDNIL R4 + 0x7C040600, // 000C CALL R1 3 + 0x80000000, // 000D RET 0 }) ) ); @@ -1270,7 +1257,7 @@ be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */ extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1278,44 +1265,42 @@ be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ 0, /* has sup protos */ &be_class_Matter_HTTP_remote, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(current_cmd), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), - /* K4 */ be_nested_str_weak(http_status), - /* K5 */ be_nested_str_weak(phase), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(payload), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(dispatch_cb), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), + /* K3 */ be_nested_str_weak(http_status), + /* K4 */ be_nested_str_weak(phase), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(payload), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(dispatch_cb), }), be_str_weak(event_http_timeout), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ + ( &(const binstruction[22]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x600C0018, // 0007 GETGBL R3 G24 - 0x58100003, // 0008 LDCONST R4 K3 + 0x60080018, // 0006 GETGBL R2 G24 + 0x580C0002, // 0007 LDCONST R3 K2 + 0x88100103, // 0008 GETMBR R4 R0 K3 0x88140104, // 0009 GETMBR R5 R0 K4 0x88180105, // 000A GETMBR R6 R0 K5 - 0x881C0106, // 000B GETMBR R7 R0 K6 - 0x6020000C, // 000C GETGBL R8 G12 - 0x88240107, // 000D GETMBR R9 R0 K7 - 0x7C200200, // 000E CALL R8 1 - 0x7C0C0A00, // 000F CALL R3 5 - 0x58100008, // 0010 LDCONST R4 K8 - 0x7C040600, // 0011 CALL R1 3 - 0x8C040109, // 0012 GETMET R1 R0 K9 - 0x880C0104, // 0013 GETMBR R3 R0 K4 - 0x4C100000, // 0014 LDNIL R4 - 0x7C040600, // 0015 CALL R1 3 - 0x80000000, // 0016 RET 0 + 0x601C000C, // 000B GETGBL R7 G12 + 0x88200106, // 000C GETMBR R8 R0 K6 + 0x7C1C0200, // 000D CALL R7 1 + 0x7C080A00, // 000E CALL R2 5 + 0x580C0007, // 000F LDCONST R3 K7 + 0x7C040400, // 0010 CALL R1 2 + 0x8C040108, // 0011 GETMET R1 R0 K8 + 0x880C0103, // 0012 GETMBR R3 R0 K3 + 0x4C100000, // 0013 LDNIL R4 + 0x7C040600, // 0014 CALL R1 3 + 0x80000000, // 0015 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 8a8b3fe8d..fba6d4892 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -153,7 +153,7 @@ be_local_closure(class_Matter_IM_process_write_response, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_status_response, /* name */ be_nested_proto( - 11, /* nstack */ + 10, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -161,7 +161,7 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(findsubval), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), @@ -169,19 +169,18 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ /* K4 */ be_nested_str_weak(matter), /* K5 */ be_nested_str_weak(SUCCESS), /* K6 */ be_nested_str_weak(status_ok_received), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K10 */ be_nested_str_weak(session), - /* K11 */ be_nested_str_weak(local_session_id), - /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(status_error_received), - /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(local_session_id), + /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str_weak(status_error_received), + /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), }), be_str_weak(process_status_response), &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ + ( &(const binstruction[43]) { /* code */ 0x8C0C0500, // 0000 GETMET R3 R2 K0 0x58140001, // 0001 LDCONST R5 K1 0x541A00FE, // 0002 LDINT R6 255 @@ -192,41 +191,39 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ 0xB8160800, // 0007 GETNGBL R5 K4 0x88140B05, // 0008 GETMBR R5 R5 K5 0x1C140605, // 0009 EQ R5 R3 R5 - 0x78160010, // 000A JMPF R5 #001C + 0x7816000F, // 000A JMPF R5 #001B 0x78120004, // 000B JMPF R4 #0011 0x8C140906, // 000C GETMET R5 R4 K6 0x5C1C0200, // 000D MOVE R7 R1 0x7C140400, // 000E CALL R5 2 0x80040A00, // 000F RET 1 R5 - 0x70020009, // 0010 JMP #001B + 0x70020008, // 0010 JMP #001A 0xB8160E00, // 0011 GETNGBL R5 K7 - 0x8C140B08, // 0012 GETMET R5 R5 K8 - 0x601C0018, // 0013 GETGBL R7 G24 - 0x58200009, // 0014 LDCONST R8 K9 - 0x8824030A, // 0015 GETMBR R9 R1 K10 - 0x8824130B, // 0016 GETMBR R9 R9 K11 - 0x88280303, // 0017 GETMBR R10 R1 K3 - 0x7C1C0600, // 0018 CALL R7 3 - 0x54220003, // 0019 LDINT R8 4 - 0x7C140600, // 001A CALL R5 3 - 0x7002000E, // 001B JMP #002B - 0xB8160E00, // 001C GETNGBL R5 K7 - 0x8C140B08, // 001D GETMET R5 R5 K8 - 0x601C0018, // 001E GETGBL R7 G24 - 0x5820000C, // 001F LDCONST R8 K12 - 0x5C240600, // 0020 MOVE R9 R3 - 0x7C1C0400, // 0021 CALL R7 2 - 0x5820000D, // 0022 LDCONST R8 K13 - 0x7C140600, // 0023 CALL R5 3 - 0x78120005, // 0024 JMPF R4 #002B - 0x8C14090E, // 0025 GETMET R5 R4 K14 - 0x5C1C0200, // 0026 MOVE R7 R1 - 0x7C140400, // 0027 CALL R5 2 - 0x8C14010F, // 0028 GETMET R5 R0 K15 - 0x881C0303, // 0029 GETMBR R7 R1 K3 - 0x7C140400, // 002A CALL R5 2 - 0x50140000, // 002B LDBOOL R5 0 0 - 0x80040A00, // 002C RET 1 R5 + 0x60180018, // 0012 GETGBL R6 G24 + 0x581C0008, // 0013 LDCONST R7 K8 + 0x88200309, // 0014 GETMBR R8 R1 K9 + 0x8820110A, // 0015 GETMBR R8 R8 K10 + 0x88240303, // 0016 GETMBR R9 R1 K3 + 0x7C180600, // 0017 CALL R6 3 + 0x541E0003, // 0018 LDINT R7 4 + 0x7C140400, // 0019 CALL R5 2 + 0x7002000D, // 001A JMP #0029 + 0xB8160E00, // 001B GETNGBL R5 K7 + 0x60180018, // 001C GETGBL R6 G24 + 0x581C000B, // 001D LDCONST R7 K11 + 0x5C200600, // 001E MOVE R8 R3 + 0x7C180400, // 001F CALL R6 2 + 0x581C000C, // 0020 LDCONST R7 K12 + 0x7C140400, // 0021 CALL R5 2 + 0x78120005, // 0022 JMPF R4 #0029 + 0x8C14090D, // 0023 GETMET R5 R4 K13 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x7C140400, // 0025 CALL R5 2 + 0x8C14010E, // 0026 GETMET R5 R0 K14 + 0x881C0303, // 0027 GETMBR R7 R1 K3 + 0x7C140400, // 0028 CALL R5 2 + 0x50140000, // 0029 LDBOOL R5 0 0 + 0x80040A00, // 002A RET 1 R5 }) ) ); @@ -239,7 +236,7 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_timed_request, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -247,23 +244,22 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ + ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TimedRequestMessage), /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(local_session_id), - /* K8 */ be_nested_str_weak(timeout), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(send_status), - /* K11 */ be_nested_str_weak(SUCCESS), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(timeout), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(send_status), + /* K10 */ be_nested_str_weak(SUCCESS), }), be_str_weak(process_timed_request), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ + ( &(const binstruction[22]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 @@ -271,22 +267,21 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */ 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x60180018, // 0008 GETGBL R6 G24 - 0x581C0005, // 0009 LDCONST R7 K5 - 0x88200306, // 000A GETMBR R8 R1 K6 - 0x88201107, // 000B GETMBR R8 R8 K7 - 0x88240708, // 000C GETMBR R9 R3 K8 - 0x7C180600, // 000D CALL R6 3 - 0x581C0009, // 000E LDCONST R7 K9 - 0x7C100600, // 000F CALL R4 3 - 0x8C10010A, // 0010 GETMET R4 R0 K10 - 0x5C180200, // 0011 MOVE R6 R1 - 0xB81E0000, // 0012 GETNGBL R7 K0 - 0x881C0F0B, // 0013 GETMBR R7 R7 K11 - 0x7C100600, // 0014 CALL R4 3 - 0x50100200, // 0015 LDBOOL R4 1 0 - 0x80040800, // 0016 RET 1 R4 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x881C0305, // 0009 GETMBR R7 R1 K5 + 0x881C0F06, // 000A GETMBR R7 R7 K6 + 0x88200707, // 000B GETMBR R8 R3 K7 + 0x7C140600, // 000C CALL R5 3 + 0x58180008, // 000D LDCONST R6 K8 + 0x7C100400, // 000E CALL R4 2 + 0x8C100109, // 000F GETMET R4 R0 K9 + 0x5C180200, // 0010 MOVE R6 R1 + 0xB81E0000, // 0011 GETNGBL R7 K0 + 0x881C0F0A, // 0012 GETMBR R7 R7 K10 + 0x7C100600, // 0013 CALL R4 3 + 0x50100200, // 0014 LDBOOL R4 1 0 + 0x80040800, // 0015 RET 1 R4 }) ) ); @@ -408,7 +403,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ }), be_str_weak(process_invoke_request_solo), &be_const_str_solidified, - ( &(const binstruction[208]) { /* code */ + ( &(const binstruction[203]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x880C0701, // 0001 GETMBR R3 R3 K1 0x8C0C0702, // 0002 GETMET R3 R3 K2 @@ -452,171 +447,166 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x8C1C0F13, // 0028 GETMET R7 R7 K19 0x58240014, // 0029 LDCONST R9 K20 0x7C1C0400, // 002A CALL R7 2 - 0x781E000E, // 002B JMPF R7 #003B - 0xB81E2400, // 002C GETNGBL R7 K18 - 0x8C1C0F02, // 002D GETMET R7 R7 K2 - 0x60240018, // 002E GETGBL R9 G24 - 0x58280015, // 002F LDCONST R10 K21 - 0x882C030C, // 0030 GETMBR R11 R1 K12 - 0x882C1716, // 0031 GETMBR R11 R11 K22 - 0x5C300800, // 0032 MOVE R12 R4 - 0x780E0001, // 0033 JMPF R3 #0036 - 0x5C340600, // 0034 MOVE R13 R3 - 0x70020000, // 0035 JMP #0037 - 0x58340011, // 0036 LDCONST R13 K17 - 0x5C380C00, // 0037 MOVE R14 R6 - 0x7C240A00, // 0038 CALL R9 5 - 0x58280014, // 0039 LDCONST R10 K20 - 0x7C1C0600, // 003A CALL R7 3 - 0x4C1C0000, // 003B LDNIL R7 - 0x900A0407, // 003C SETMBR R2 K2 R7 - 0x601C0015, // 003D GETGBL R7 G21 - 0x5422002F, // 003E LDINT R8 48 - 0x7C1C0200, // 003F CALL R7 1 - 0x8C200F17, // 0040 GETMET R8 R7 K23 - 0x58280018, // 0041 LDCONST R10 K24 - 0x542DFFFB, // 0042 LDINT R11 -4 - 0x7C200600, // 0043 CALL R8 3 - 0x8C200F17, // 0044 GETMET R8 R7 K23 - 0x58280019, // 0045 LDCONST R10 K25 - 0x582C0019, // 0046 LDCONST R11 K25 - 0x7C200600, // 0047 CALL R8 3 - 0x50200200, // 0048 LDBOOL R8 1 0 - 0x1C200A08, // 0049 EQ R8 R5 R8 - 0x74220004, // 004A JMPT R8 #0050 - 0x88200505, // 004B GETMBR R8 R2 K5 - 0xB8260000, // 004C GETNGBL R9 K0 - 0x8824131A, // 004D GETMBR R9 R9 K26 - 0x1C201009, // 004E EQ R8 R8 R9 - 0x78220017, // 004F JMPF R8 #0068 - 0xB8220000, // 0050 GETNGBL R8 K0 - 0x8820111A, // 0051 GETMBR R8 R8 K26 - 0x900A0A08, // 0052 SETMBR R2 K5 R8 - 0x8C20011B, // 0053 GETMET R8 R0 K27 - 0x5C280E00, // 0054 MOVE R10 R7 - 0x5C2C0400, // 0055 MOVE R11 R2 - 0x4C300000, // 0056 LDNIL R12 - 0x7C200800, // 0057 CALL R8 4 - 0xB8222400, // 0058 GETNGBL R8 K18 - 0x8C201113, // 0059 GETMET R8 R8 K19 - 0x58280014, // 005A LDCONST R10 K20 - 0x7C200400, // 005B CALL R8 2 - 0x78220009, // 005C JMPF R8 #0067 - 0xB8222400, // 005D GETNGBL R8 K18 - 0x8C201102, // 005E GETMET R8 R8 K2 - 0x60280018, // 005F GETGBL R10 G24 - 0x582C001C, // 0060 LDCONST R11 K28 - 0x8830030C, // 0061 GETMBR R12 R1 K12 - 0x88301916, // 0062 GETMBR R12 R12 K22 - 0x8834031D, // 0063 GETMBR R13 R1 K29 - 0x7C280600, // 0064 CALL R10 3 - 0x582C0014, // 0065 LDCONST R11 K20 - 0x7C200600, // 0066 CALL R8 3 - 0x70020046, // 0067 JMP #00AF - 0x4C200000, // 0068 LDNIL R8 - 0x20200A08, // 0069 NE R8 R5 R8 - 0x78220018, // 006A JMPF R8 #0084 - 0x8C20011B, // 006B GETMET R8 R0 K27 - 0x5C280E00, // 006C MOVE R10 R7 - 0x5C2C0400, // 006D MOVE R11 R2 - 0x5C300A00, // 006E MOVE R12 R5 - 0x7C200800, // 006F CALL R8 4 - 0x5C200600, // 0070 MOVE R8 R3 - 0x74220000, // 0071 JMPT R8 #0073 - 0x580C0011, // 0072 LDCONST R3 K17 - 0xB8222400, // 0073 GETNGBL R8 K18 - 0x8C201113, // 0074 GETMET R8 R8 K19 - 0x58280014, // 0075 LDCONST R10 K20 - 0x7C200400, // 0076 CALL R8 2 - 0x7822000A, // 0077 JMPF R8 #0083 - 0xB8222400, // 0078 GETNGBL R8 K18 - 0x8C201102, // 0079 GETMET R8 R8 K2 - 0x60280018, // 007A GETGBL R10 G24 - 0x582C001E, // 007B LDCONST R11 K30 - 0x8830030C, // 007C GETMBR R12 R1 K12 - 0x88301916, // 007D GETMBR R12 R12 K22 - 0x5C340400, // 007E MOVE R13 R2 - 0x5C380600, // 007F MOVE R14 R3 - 0x7C280800, // 0080 CALL R10 4 - 0x582C0014, // 0081 LDCONST R11 K20 - 0x7C200600, // 0082 CALL R8 3 - 0x7002002A, // 0083 JMP #00AF - 0x88200505, // 0084 GETMBR R8 R2 K5 - 0x4C240000, // 0085 LDNIL R9 - 0x20201009, // 0086 NE R8 R8 R9 - 0x78220015, // 0087 JMPF R8 #009E - 0x8C20011B, // 0088 GETMET R8 R0 K27 - 0x5C280E00, // 0089 MOVE R10 R7 - 0x5C2C0400, // 008A MOVE R11 R2 - 0x4C300000, // 008B LDNIL R12 - 0x7C200800, // 008C CALL R8 4 - 0xB8222400, // 008D GETNGBL R8 K18 - 0x8C201113, // 008E GETMET R8 R8 K19 - 0x58280014, // 008F LDCONST R10 K20 - 0x7C200400, // 0090 CALL R8 2 - 0x7822000A, // 0091 JMPF R8 #009D - 0xB8222400, // 0092 GETNGBL R8 K18 - 0x8C201102, // 0093 GETMET R8 R8 K2 - 0x60280018, // 0094 GETGBL R10 G24 - 0x582C001F, // 0095 LDCONST R11 K31 - 0x8830030C, // 0096 GETMBR R12 R1 K12 - 0x88301916, // 0097 GETMBR R12 R12 K22 - 0x88340505, // 0098 GETMBR R13 R2 K5 - 0x8838031D, // 0099 GETMBR R14 R1 K29 - 0x7C280800, // 009A CALL R10 4 - 0x582C0014, // 009B LDCONST R11 K20 - 0x7C200600, // 009C CALL R8 3 - 0x70020010, // 009D JMP #00AF - 0xB8222400, // 009E GETNGBL R8 K18 - 0x8C201113, // 009F GETMET R8 R8 K19 - 0x58280014, // 00A0 LDCONST R10 K20 - 0x7C200400, // 00A1 CALL R8 2 - 0x78220009, // 00A2 JMPF R8 #00AD - 0xB8222400, // 00A3 GETNGBL R8 K18 - 0x8C201102, // 00A4 GETMET R8 R8 K2 - 0x60280018, // 00A5 GETGBL R10 G24 - 0x582C0020, // 00A6 LDCONST R11 K32 - 0x8830030C, // 00A7 GETMBR R12 R1 K12 - 0x88301916, // 00A8 GETMBR R12 R12 K22 - 0x8834031D, // 00A9 GETMBR R13 R1 K29 - 0x7C280600, // 00AA CALL R10 3 - 0x582C0014, // 00AB LDCONST R11 K20 - 0x7C200600, // 00AC CALL R8 3 - 0x50200000, // 00AD LDBOOL R8 0 0 - 0x80041000, // 00AE RET 1 R8 - 0x8C200F17, // 00AF GETMET R8 R7 K23 - 0x58280021, // 00B0 LDCONST R10 K33 - 0x542DFFFB, // 00B1 LDINT R11 -4 - 0x7C200600, // 00B2 CALL R8 3 - 0x8C200F17, // 00B3 GETMET R8 R7 K23 - 0x542A0017, // 00B4 LDINT R10 24 - 0x582C0019, // 00B5 LDCONST R11 K25 - 0x7C200600, // 00B6 CALL R8 3 - 0x8C200322, // 00B7 GETMET R8 R1 K34 - 0x542A0008, // 00B8 LDINT R10 9 - 0x502C0200, // 00B9 LDBOOL R11 1 0 - 0x7C200600, // 00BA CALL R8 3 - 0x8824010A, // 00BB GETMBR R9 R0 K10 - 0x88241323, // 00BC GETMBR R9 R9 K35 - 0x88280324, // 00BD GETMBR R10 R1 K36 - 0x8C2C1525, // 00BE GETMET R11 R10 K37 - 0x7C2C0200, // 00BF CALL R11 1 - 0x8C2C1126, // 00C0 GETMET R11 R8 K38 - 0x5C340E00, // 00C1 MOVE R13 R7 - 0x5C381400, // 00C2 MOVE R14 R10 - 0x7C2C0600, // 00C3 CALL R11 3 - 0x8C2C1127, // 00C4 GETMET R11 R8 K39 - 0x7C2C0200, // 00C5 CALL R11 1 - 0x8C2C1328, // 00C6 GETMET R11 R9 K40 - 0x5C341000, // 00C7 MOVE R13 R8 + 0x781E000D, // 002B JMPF R7 #003A + 0xB81E0400, // 002C GETNGBL R7 K2 + 0x60200018, // 002D GETGBL R8 G24 + 0x58240015, // 002E LDCONST R9 K21 + 0x8828030C, // 002F GETMBR R10 R1 K12 + 0x88281516, // 0030 GETMBR R10 R10 K22 + 0x5C2C0800, // 0031 MOVE R11 R4 + 0x780E0001, // 0032 JMPF R3 #0035 + 0x5C300600, // 0033 MOVE R12 R3 + 0x70020000, // 0034 JMP #0036 + 0x58300011, // 0035 LDCONST R12 K17 + 0x5C340C00, // 0036 MOVE R13 R6 + 0x7C200A00, // 0037 CALL R8 5 + 0x58240014, // 0038 LDCONST R9 K20 + 0x7C1C0400, // 0039 CALL R7 2 + 0x4C1C0000, // 003A LDNIL R7 + 0x900A0407, // 003B SETMBR R2 K2 R7 + 0x601C0015, // 003C GETGBL R7 G21 + 0x5422002F, // 003D LDINT R8 48 + 0x7C1C0200, // 003E CALL R7 1 + 0x8C200F17, // 003F GETMET R8 R7 K23 + 0x58280018, // 0040 LDCONST R10 K24 + 0x542DFFFB, // 0041 LDINT R11 -4 + 0x7C200600, // 0042 CALL R8 3 + 0x8C200F17, // 0043 GETMET R8 R7 K23 + 0x58280019, // 0044 LDCONST R10 K25 + 0x582C0019, // 0045 LDCONST R11 K25 + 0x7C200600, // 0046 CALL R8 3 + 0x50200200, // 0047 LDBOOL R8 1 0 + 0x1C200A08, // 0048 EQ R8 R5 R8 + 0x74220004, // 0049 JMPT R8 #004F + 0x88200505, // 004A GETMBR R8 R2 K5 + 0xB8260000, // 004B GETNGBL R9 K0 + 0x8824131A, // 004C GETMBR R9 R9 K26 + 0x1C201009, // 004D EQ R8 R8 R9 + 0x78220016, // 004E JMPF R8 #0066 + 0xB8220000, // 004F GETNGBL R8 K0 + 0x8820111A, // 0050 GETMBR R8 R8 K26 + 0x900A0A08, // 0051 SETMBR R2 K5 R8 + 0x8C20011B, // 0052 GETMET R8 R0 K27 + 0x5C280E00, // 0053 MOVE R10 R7 + 0x5C2C0400, // 0054 MOVE R11 R2 + 0x4C300000, // 0055 LDNIL R12 + 0x7C200800, // 0056 CALL R8 4 + 0xB8222400, // 0057 GETNGBL R8 K18 + 0x8C201113, // 0058 GETMET R8 R8 K19 + 0x58280014, // 0059 LDCONST R10 K20 + 0x7C200400, // 005A CALL R8 2 + 0x78220008, // 005B JMPF R8 #0065 + 0xB8220400, // 005C GETNGBL R8 K2 + 0x60240018, // 005D GETGBL R9 G24 + 0x5828001C, // 005E LDCONST R10 K28 + 0x882C030C, // 005F GETMBR R11 R1 K12 + 0x882C1716, // 0060 GETMBR R11 R11 K22 + 0x8830031D, // 0061 GETMBR R12 R1 K29 + 0x7C240600, // 0062 CALL R9 3 + 0x58280014, // 0063 LDCONST R10 K20 + 0x7C200400, // 0064 CALL R8 2 + 0x70020043, // 0065 JMP #00AA + 0x4C200000, // 0066 LDNIL R8 + 0x20200A08, // 0067 NE R8 R5 R8 + 0x78220017, // 0068 JMPF R8 #0081 + 0x8C20011B, // 0069 GETMET R8 R0 K27 + 0x5C280E00, // 006A MOVE R10 R7 + 0x5C2C0400, // 006B MOVE R11 R2 + 0x5C300A00, // 006C MOVE R12 R5 + 0x7C200800, // 006D CALL R8 4 + 0x5C200600, // 006E MOVE R8 R3 + 0x74220000, // 006F JMPT R8 #0071 + 0x580C0011, // 0070 LDCONST R3 K17 + 0xB8222400, // 0071 GETNGBL R8 K18 + 0x8C201113, // 0072 GETMET R8 R8 K19 + 0x58280014, // 0073 LDCONST R10 K20 + 0x7C200400, // 0074 CALL R8 2 + 0x78220009, // 0075 JMPF R8 #0080 + 0xB8220400, // 0076 GETNGBL R8 K2 + 0x60240018, // 0077 GETGBL R9 G24 + 0x5828001E, // 0078 LDCONST R10 K30 + 0x882C030C, // 0079 GETMBR R11 R1 K12 + 0x882C1716, // 007A GETMBR R11 R11 K22 + 0x5C300400, // 007B MOVE R12 R2 + 0x5C340600, // 007C MOVE R13 R3 + 0x7C240800, // 007D CALL R9 4 + 0x58280014, // 007E LDCONST R10 K20 + 0x7C200400, // 007F CALL R8 2 + 0x70020028, // 0080 JMP #00AA + 0x88200505, // 0081 GETMBR R8 R2 K5 + 0x4C240000, // 0082 LDNIL R9 + 0x20201009, // 0083 NE R8 R8 R9 + 0x78220014, // 0084 JMPF R8 #009A + 0x8C20011B, // 0085 GETMET R8 R0 K27 + 0x5C280E00, // 0086 MOVE R10 R7 + 0x5C2C0400, // 0087 MOVE R11 R2 + 0x4C300000, // 0088 LDNIL R12 + 0x7C200800, // 0089 CALL R8 4 + 0xB8222400, // 008A GETNGBL R8 K18 + 0x8C201113, // 008B GETMET R8 R8 K19 + 0x58280014, // 008C LDCONST R10 K20 + 0x7C200400, // 008D CALL R8 2 + 0x78220009, // 008E JMPF R8 #0099 + 0xB8220400, // 008F GETNGBL R8 K2 + 0x60240018, // 0090 GETGBL R9 G24 + 0x5828001F, // 0091 LDCONST R10 K31 + 0x882C030C, // 0092 GETMBR R11 R1 K12 + 0x882C1716, // 0093 GETMBR R11 R11 K22 + 0x88300505, // 0094 GETMBR R12 R2 K5 + 0x8834031D, // 0095 GETMBR R13 R1 K29 + 0x7C240800, // 0096 CALL R9 4 + 0x58280014, // 0097 LDCONST R10 K20 + 0x7C200400, // 0098 CALL R8 2 + 0x7002000F, // 0099 JMP #00AA + 0xB8222400, // 009A GETNGBL R8 K18 + 0x8C201113, // 009B GETMET R8 R8 K19 + 0x58280014, // 009C LDCONST R10 K20 + 0x7C200400, // 009D CALL R8 2 + 0x78220008, // 009E JMPF R8 #00A8 + 0xB8220400, // 009F GETNGBL R8 K2 + 0x60240018, // 00A0 GETGBL R9 G24 + 0x58280020, // 00A1 LDCONST R10 K32 + 0x882C030C, // 00A2 GETMBR R11 R1 K12 + 0x882C1716, // 00A3 GETMBR R11 R11 K22 + 0x8830031D, // 00A4 GETMBR R12 R1 K29 + 0x7C240600, // 00A5 CALL R9 3 + 0x58280014, // 00A6 LDCONST R10 K20 + 0x7C200400, // 00A7 CALL R8 2 + 0x50200000, // 00A8 LDBOOL R8 0 0 + 0x80041000, // 00A9 RET 1 R8 + 0x8C200F17, // 00AA GETMET R8 R7 K23 + 0x58280021, // 00AB LDCONST R10 K33 + 0x542DFFFB, // 00AC LDINT R11 -4 + 0x7C200600, // 00AD CALL R8 3 + 0x8C200F17, // 00AE GETMET R8 R7 K23 + 0x542A0017, // 00AF LDINT R10 24 + 0x582C0019, // 00B0 LDCONST R11 K25 + 0x7C200600, // 00B1 CALL R8 3 + 0x8C200322, // 00B2 GETMET R8 R1 K34 + 0x542A0008, // 00B3 LDINT R10 9 + 0x502C0200, // 00B4 LDBOOL R11 1 0 + 0x7C200600, // 00B5 CALL R8 3 + 0x8824010A, // 00B6 GETMBR R9 R0 K10 + 0x88241323, // 00B7 GETMBR R9 R9 K35 + 0x88280324, // 00B8 GETMBR R10 R1 K36 + 0x8C2C1525, // 00B9 GETMET R11 R10 K37 + 0x7C2C0200, // 00BA CALL R11 1 + 0x8C2C1126, // 00BB GETMET R11 R8 K38 + 0x5C340E00, // 00BC MOVE R13 R7 + 0x5C381400, // 00BD MOVE R14 R10 + 0x7C2C0600, // 00BE CALL R11 3 + 0x8C2C1127, // 00BF GETMET R11 R8 K39 + 0x7C2C0200, // 00C0 CALL R11 1 + 0x8C2C1328, // 00C1 GETMET R11 R9 K40 + 0x5C341000, // 00C2 MOVE R13 R8 + 0x7C2C0400, // 00C3 CALL R11 2 + 0xB82E0000, // 00C4 GETNGBL R11 K0 + 0x882C1701, // 00C5 GETMBR R11 R11 K1 + 0x8C2C1702, // 00C6 GETMET R11 R11 K2 + 0x58340029, // 00C7 LDCONST R13 K41 0x7C2C0400, // 00C8 CALL R11 2 - 0xB82E0000, // 00C9 GETNGBL R11 K0 - 0x882C1701, // 00CA GETMBR R11 R11 K1 - 0x8C2C1702, // 00CB GETMET R11 R11 K2 - 0x58340029, // 00CC LDCONST R13 K41 - 0x7C2C0400, // 00CD CALL R11 2 - 0x502C0200, // 00CE LDBOOL R11 1 0 - 0x80041600, // 00CF RET 1 R11 + 0x502C0200, // 00C9 LDBOOL R11 1 0 + 0x80041600, // 00CA RET 1 R11 }) ) ); @@ -852,7 +842,7 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_invoke_request, /* name */ be_nested_proto( - 20, /* nstack */ + 19, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -888,13 +878,13 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ /* K24 */ be_nested_str_weak(_X28), /* K25 */ be_nested_str_weak(_X29_X20), /* K26 */ be_nested_str_weak(), - /* K27 */ be_nested_str_weak(tasmota), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K29 */ be_nested_str_weak(local_session_id), - /* K30 */ be_const_int(3), - /* K31 */ be_nested_str_weak(SUCCESS), - /* K32 */ be_nested_str_weak(invokeresponse2raw), - /* K33 */ be_nested_str_weak(push), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K28 */ be_nested_str_weak(local_session_id), + /* K29 */ be_const_int(3), + /* K30 */ be_nested_str_weak(SUCCESS), + /* K31 */ be_nested_str_weak(invokeresponse2raw), + /* K32 */ be_nested_str_weak(push), + /* K33 */ be_nested_str_weak(tasmota), /* K34 */ be_nested_str_weak(loglevel), /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), /* K36 */ be_nested_str_weak(exchange_id), @@ -907,7 +897,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ }), be_str_weak(process_invoke_request), &be_const_str_solidified, - ( &(const binstruction[233]) { /* code */ + ( &(const binstruction[228]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x880C0701, // 0001 GETMBR R3 R3 K1 0x8C0C0702, // 0002 GETMET R3 R3 K2 @@ -926,7 +916,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x88140908, // 000F GETMBR R5 R4 K8 0x4C180000, // 0010 LDNIL R6 0x20140A06, // 0011 NE R5 R5 R6 - 0x781600D4, // 0012 JMPF R5 #00E8 + 0x781600CF, // 0012 JMPF R5 #00E3 0xB8160000, // 0013 GETNGBL R5 K0 0x8C140B09, // 0014 GETMET R5 R5 K9 0x7C140200, // 0015 CALL R5 1 @@ -938,7 +928,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x60180010, // 001B GETGBL R6 G16 0x881C0908, // 001C GETMBR R7 R4 K8 0x7C180200, // 001D CALL R6 1 - 0xA80200B7, // 001E EXBLK 0 #00D7 + 0xA80200B2, // 001E EXBLK 0 #00D2 0x5C1C0C00, // 001F MOVE R7 R6 0x7C1C0000, // 0020 CALL R7 0 0x88200F0D, // 0021 GETMBR R8 R7 K13 @@ -983,164 +973,159 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x002C1719, // 0048 ADD R11 R11 K25 0x70020000, // 0049 JMP #004B 0x582C001A, // 004A LDCONST R11 K26 - 0xB8323600, // 004B GETNGBL R12 K27 - 0x8C301902, // 004C GETMET R12 R12 K2 - 0x60380018, // 004D GETGBL R14 G24 - 0x583C001C, // 004E LDCONST R15 K28 - 0x88400315, // 004F GETMBR R16 R1 K21 - 0x8840211D, // 0050 GETMBR R16 R16 K29 - 0x5C441200, // 0051 MOVE R17 R9 - 0x78220001, // 0052 JMPF R8 #0055 - 0x5C481000, // 0053 MOVE R18 R8 - 0x70020000, // 0054 JMP #0056 - 0x5848001A, // 0055 LDCONST R18 K26 - 0x5C4C1600, // 0056 MOVE R19 R11 - 0x7C380A00, // 0057 CALL R14 5 - 0x583C001E, // 0058 LDCONST R15 K30 - 0x7C300600, // 0059 CALL R12 3 - 0x4C300000, // 005A LDNIL R12 - 0x900E040C, // 005B SETMBR R3 K2 R12 - 0x60300015, // 005C GETGBL R12 G21 - 0x5436001F, // 005D LDINT R13 32 - 0x7C300200, // 005E CALL R12 1 - 0x50340200, // 005F LDBOOL R13 1 0 - 0x1C34140D, // 0060 EQ R13 R10 R13 - 0x74360004, // 0061 JMPT R13 #0067 - 0x88340710, // 0062 GETMBR R13 R3 K16 - 0xB83A0000, // 0063 GETNGBL R14 K0 - 0x88381D1F, // 0064 GETMBR R14 R14 K31 - 0x1C341A0E, // 0065 EQ R13 R13 R14 - 0x7836001B, // 0066 JMPF R13 #0083 - 0xB8360000, // 0067 GETNGBL R13 K0 - 0x88341B1F, // 0068 GETMBR R13 R13 K31 - 0x900E200D, // 0069 SETMBR R3 K16 R13 - 0x8C340120, // 006A GETMET R13 R0 K32 - 0x5C3C1800, // 006B MOVE R15 R12 - 0x5C400600, // 006C MOVE R16 R3 - 0x4C440000, // 006D LDNIL R17 - 0x7C340800, // 006E CALL R13 4 - 0x88340B0B, // 006F GETMBR R13 R5 K11 - 0x8C341B21, // 0070 GETMET R13 R13 K33 - 0x5C3C1800, // 0071 MOVE R15 R12 - 0x7C340400, // 0072 CALL R13 2 - 0xB8363600, // 0073 GETNGBL R13 K27 - 0x8C341B22, // 0074 GETMET R13 R13 K34 - 0x583C001E, // 0075 LDCONST R15 K30 - 0x7C340400, // 0076 CALL R13 2 - 0x78360009, // 0077 JMPF R13 #0082 - 0xB8363600, // 0078 GETNGBL R13 K27 - 0x8C341B02, // 0079 GETMET R13 R13 K2 - 0x603C0018, // 007A GETGBL R15 G24 - 0x58400023, // 007B LDCONST R16 K35 - 0x88440315, // 007C GETMBR R17 R1 K21 - 0x8844231D, // 007D GETMBR R17 R17 K29 - 0x88480324, // 007E GETMBR R18 R1 K36 - 0x7C3C0600, // 007F CALL R15 3 - 0x5840001E, // 0080 LDCONST R16 K30 - 0x7C340600, // 0081 CALL R13 3 - 0x70020052, // 0082 JMP #00D6 - 0x4C340000, // 0083 LDNIL R13 - 0x2034140D, // 0084 NE R13 R10 R13 - 0x78360022, // 0085 JMPF R13 #00A9 - 0x8C340120, // 0086 GETMET R13 R0 K32 - 0x5C3C1800, // 0087 MOVE R15 R12 - 0x5C400600, // 0088 MOVE R16 R3 - 0x5C441400, // 0089 MOVE R17 R10 - 0x7C340800, // 008A CALL R13 4 - 0x88340B0B, // 008B GETMBR R13 R5 K11 - 0x8C341B21, // 008C GETMET R13 R13 K33 - 0x5C3C1800, // 008D MOVE R15 R12 - 0x7C340400, // 008E CALL R13 2 - 0xB8360000, // 008F GETNGBL R13 K0 - 0x8C341B12, // 0090 GETMET R13 R13 K18 - 0x883C070E, // 0091 GETMBR R15 R3 K14 - 0x8840070F, // 0092 GETMBR R16 R3 K15 - 0x7C340600, // 0093 CALL R13 3 - 0x5C201A00, // 0094 MOVE R8 R13 - 0x5C341000, // 0095 MOVE R13 R8 - 0x74360000, // 0096 JMPT R13 #0098 - 0x5820001A, // 0097 LDCONST R8 K26 - 0xB8363600, // 0098 GETNGBL R13 K27 - 0x8C341B22, // 0099 GETMET R13 R13 K34 - 0x583C001E, // 009A LDCONST R15 K30 - 0x7C340400, // 009B CALL R13 2 - 0x7836000A, // 009C JMPF R13 #00A8 - 0xB8363600, // 009D GETNGBL R13 K27 - 0x8C341B02, // 009E GETMET R13 R13 K2 - 0x603C0018, // 009F GETGBL R15 G24 - 0x58400025, // 00A0 LDCONST R16 K37 - 0x88440315, // 00A1 GETMBR R17 R1 K21 - 0x8844231D, // 00A2 GETMBR R17 R17 K29 - 0x5C480600, // 00A3 MOVE R18 R3 - 0x5C4C1000, // 00A4 MOVE R19 R8 - 0x7C3C0800, // 00A5 CALL R15 4 - 0x5840001E, // 00A6 LDCONST R16 K30 - 0x7C340600, // 00A7 CALL R13 3 - 0x7002002C, // 00A8 JMP #00D6 - 0x88340710, // 00A9 GETMBR R13 R3 K16 - 0x4C380000, // 00AA LDNIL R14 - 0x20341A0E, // 00AB NE R13 R13 R14 - 0x78360019, // 00AC JMPF R13 #00C7 - 0x8C340120, // 00AD GETMET R13 R0 K32 - 0x5C3C1800, // 00AE MOVE R15 R12 - 0x5C400600, // 00AF MOVE R16 R3 - 0x4C440000, // 00B0 LDNIL R17 - 0x7C340800, // 00B1 CALL R13 4 - 0x88340B0B, // 00B2 GETMBR R13 R5 K11 - 0x8C341B21, // 00B3 GETMET R13 R13 K33 - 0x5C3C1800, // 00B4 MOVE R15 R12 - 0x7C340400, // 00B5 CALL R13 2 - 0xB8363600, // 00B6 GETNGBL R13 K27 - 0x8C341B22, // 00B7 GETMET R13 R13 K34 - 0x583C001E, // 00B8 LDCONST R15 K30 - 0x7C340400, // 00B9 CALL R13 2 - 0x7836000A, // 00BA JMPF R13 #00C6 - 0xB8363600, // 00BB GETNGBL R13 K27 - 0x8C341B02, // 00BC GETMET R13 R13 K2 - 0x603C0018, // 00BD GETGBL R15 G24 - 0x58400026, // 00BE LDCONST R16 K38 - 0x88440315, // 00BF GETMBR R17 R1 K21 - 0x8844231D, // 00C0 GETMBR R17 R17 K29 - 0x88480710, // 00C1 GETMBR R18 R3 K16 - 0x884C0324, // 00C2 GETMBR R19 R1 K36 - 0x7C3C0800, // 00C3 CALL R15 4 - 0x5840001E, // 00C4 LDCONST R16 K30 - 0x7C340600, // 00C5 CALL R13 3 - 0x7002000E, // 00C6 JMP #00D6 - 0xB8363600, // 00C7 GETNGBL R13 K27 - 0x8C341B22, // 00C8 GETMET R13 R13 K34 - 0x583C001E, // 00C9 LDCONST R15 K30 - 0x7C340400, // 00CA CALL R13 2 - 0x78360009, // 00CB JMPF R13 #00D6 - 0xB8363600, // 00CC GETNGBL R13 K27 - 0x8C341B02, // 00CD GETMET R13 R13 K2 - 0x603C0018, // 00CE GETGBL R15 G24 - 0x58400027, // 00CF LDCONST R16 K39 - 0x88440315, // 00D0 GETMBR R17 R1 K21 - 0x8844231D, // 00D1 GETMBR R17 R17 K29 - 0x88480324, // 00D2 GETMBR R18 R1 K36 - 0x7C3C0600, // 00D3 CALL R15 3 - 0x5840001E, // 00D4 LDCONST R16 K30 - 0x7C340600, // 00D5 CALL R13 3 - 0x7001FF47, // 00D6 JMP #001F - 0x58180028, // 00D7 LDCONST R6 K40 - 0xAC180200, // 00D8 CATCH R6 1 0 - 0xB0080000, // 00D9 RAISE 2 R0 R0 - 0x6018000C, // 00DA GETGBL R6 G12 - 0x881C0B0B, // 00DB GETMBR R7 R5 K11 - 0x7C180200, // 00DC CALL R6 1 - 0x24180D29, // 00DD GT R6 R6 K41 - 0x781A0004, // 00DE JMPF R6 #00E4 - 0x8C18012A, // 00DF GETMET R6 R0 K42 - 0x5C200200, // 00E0 MOVE R8 R1 - 0x5C240A00, // 00E1 MOVE R9 R5 - 0x7C180600, // 00E2 CALL R6 3 - 0x70020001, // 00E3 JMP #00E6 - 0x50180000, // 00E4 LDBOOL R6 0 0 - 0x80040C00, // 00E5 RET 1 R6 - 0x50180200, // 00E6 LDBOOL R6 1 0 - 0x80040C00, // 00E7 RET 1 R6 - 0x80000000, // 00E8 RET 0 + 0xB8320400, // 004B GETNGBL R12 K2 + 0x60340018, // 004C GETGBL R13 G24 + 0x5838001B, // 004D LDCONST R14 K27 + 0x883C0315, // 004E GETMBR R15 R1 K21 + 0x883C1F1C, // 004F GETMBR R15 R15 K28 + 0x5C401200, // 0050 MOVE R16 R9 + 0x78220001, // 0051 JMPF R8 #0054 + 0x5C441000, // 0052 MOVE R17 R8 + 0x70020000, // 0053 JMP #0055 + 0x5844001A, // 0054 LDCONST R17 K26 + 0x5C481600, // 0055 MOVE R18 R11 + 0x7C340A00, // 0056 CALL R13 5 + 0x5838001D, // 0057 LDCONST R14 K29 + 0x7C300400, // 0058 CALL R12 2 + 0x4C300000, // 0059 LDNIL R12 + 0x900E040C, // 005A SETMBR R3 K2 R12 + 0x60300015, // 005B GETGBL R12 G21 + 0x5436001F, // 005C LDINT R13 32 + 0x7C300200, // 005D CALL R12 1 + 0x50340200, // 005E LDBOOL R13 1 0 + 0x1C34140D, // 005F EQ R13 R10 R13 + 0x74360004, // 0060 JMPT R13 #0066 + 0x88340710, // 0061 GETMBR R13 R3 K16 + 0xB83A0000, // 0062 GETNGBL R14 K0 + 0x88381D1E, // 0063 GETMBR R14 R14 K30 + 0x1C341A0E, // 0064 EQ R13 R13 R14 + 0x7836001A, // 0065 JMPF R13 #0081 + 0xB8360000, // 0066 GETNGBL R13 K0 + 0x88341B1E, // 0067 GETMBR R13 R13 K30 + 0x900E200D, // 0068 SETMBR R3 K16 R13 + 0x8C34011F, // 0069 GETMET R13 R0 K31 + 0x5C3C1800, // 006A MOVE R15 R12 + 0x5C400600, // 006B MOVE R16 R3 + 0x4C440000, // 006C LDNIL R17 + 0x7C340800, // 006D CALL R13 4 + 0x88340B0B, // 006E GETMBR R13 R5 K11 + 0x8C341B20, // 006F GETMET R13 R13 K32 + 0x5C3C1800, // 0070 MOVE R15 R12 + 0x7C340400, // 0071 CALL R13 2 + 0xB8364200, // 0072 GETNGBL R13 K33 + 0x8C341B22, // 0073 GETMET R13 R13 K34 + 0x583C001D, // 0074 LDCONST R15 K29 + 0x7C340400, // 0075 CALL R13 2 + 0x78360008, // 0076 JMPF R13 #0080 + 0xB8360400, // 0077 GETNGBL R13 K2 + 0x60380018, // 0078 GETGBL R14 G24 + 0x583C0023, // 0079 LDCONST R15 K35 + 0x88400315, // 007A GETMBR R16 R1 K21 + 0x8840211C, // 007B GETMBR R16 R16 K28 + 0x88440324, // 007C GETMBR R17 R1 K36 + 0x7C380600, // 007D CALL R14 3 + 0x583C001D, // 007E LDCONST R15 K29 + 0x7C340400, // 007F CALL R13 2 + 0x7002004F, // 0080 JMP #00D1 + 0x4C340000, // 0081 LDNIL R13 + 0x2034140D, // 0082 NE R13 R10 R13 + 0x78360021, // 0083 JMPF R13 #00A6 + 0x8C34011F, // 0084 GETMET R13 R0 K31 + 0x5C3C1800, // 0085 MOVE R15 R12 + 0x5C400600, // 0086 MOVE R16 R3 + 0x5C441400, // 0087 MOVE R17 R10 + 0x7C340800, // 0088 CALL R13 4 + 0x88340B0B, // 0089 GETMBR R13 R5 K11 + 0x8C341B20, // 008A GETMET R13 R13 K32 + 0x5C3C1800, // 008B MOVE R15 R12 + 0x7C340400, // 008C CALL R13 2 + 0xB8360000, // 008D GETNGBL R13 K0 + 0x8C341B12, // 008E GETMET R13 R13 K18 + 0x883C070E, // 008F GETMBR R15 R3 K14 + 0x8840070F, // 0090 GETMBR R16 R3 K15 + 0x7C340600, // 0091 CALL R13 3 + 0x5C201A00, // 0092 MOVE R8 R13 + 0x5C341000, // 0093 MOVE R13 R8 + 0x74360000, // 0094 JMPT R13 #0096 + 0x5820001A, // 0095 LDCONST R8 K26 + 0xB8364200, // 0096 GETNGBL R13 K33 + 0x8C341B22, // 0097 GETMET R13 R13 K34 + 0x583C001D, // 0098 LDCONST R15 K29 + 0x7C340400, // 0099 CALL R13 2 + 0x78360009, // 009A JMPF R13 #00A5 + 0xB8360400, // 009B GETNGBL R13 K2 + 0x60380018, // 009C GETGBL R14 G24 + 0x583C0025, // 009D LDCONST R15 K37 + 0x88400315, // 009E GETMBR R16 R1 K21 + 0x8840211C, // 009F GETMBR R16 R16 K28 + 0x5C440600, // 00A0 MOVE R17 R3 + 0x5C481000, // 00A1 MOVE R18 R8 + 0x7C380800, // 00A2 CALL R14 4 + 0x583C001D, // 00A3 LDCONST R15 K29 + 0x7C340400, // 00A4 CALL R13 2 + 0x7002002A, // 00A5 JMP #00D1 + 0x88340710, // 00A6 GETMBR R13 R3 K16 + 0x4C380000, // 00A7 LDNIL R14 + 0x20341A0E, // 00A8 NE R13 R13 R14 + 0x78360018, // 00A9 JMPF R13 #00C3 + 0x8C34011F, // 00AA GETMET R13 R0 K31 + 0x5C3C1800, // 00AB MOVE R15 R12 + 0x5C400600, // 00AC MOVE R16 R3 + 0x4C440000, // 00AD LDNIL R17 + 0x7C340800, // 00AE CALL R13 4 + 0x88340B0B, // 00AF GETMBR R13 R5 K11 + 0x8C341B20, // 00B0 GETMET R13 R13 K32 + 0x5C3C1800, // 00B1 MOVE R15 R12 + 0x7C340400, // 00B2 CALL R13 2 + 0xB8364200, // 00B3 GETNGBL R13 K33 + 0x8C341B22, // 00B4 GETMET R13 R13 K34 + 0x583C001D, // 00B5 LDCONST R15 K29 + 0x7C340400, // 00B6 CALL R13 2 + 0x78360009, // 00B7 JMPF R13 #00C2 + 0xB8360400, // 00B8 GETNGBL R13 K2 + 0x60380018, // 00B9 GETGBL R14 G24 + 0x583C0026, // 00BA LDCONST R15 K38 + 0x88400315, // 00BB GETMBR R16 R1 K21 + 0x8840211C, // 00BC GETMBR R16 R16 K28 + 0x88440710, // 00BD GETMBR R17 R3 K16 + 0x88480324, // 00BE GETMBR R18 R1 K36 + 0x7C380800, // 00BF CALL R14 4 + 0x583C001D, // 00C0 LDCONST R15 K29 + 0x7C340400, // 00C1 CALL R13 2 + 0x7002000D, // 00C2 JMP #00D1 + 0xB8364200, // 00C3 GETNGBL R13 K33 + 0x8C341B22, // 00C4 GETMET R13 R13 K34 + 0x583C001D, // 00C5 LDCONST R15 K29 + 0x7C340400, // 00C6 CALL R13 2 + 0x78360008, // 00C7 JMPF R13 #00D1 + 0xB8360400, // 00C8 GETNGBL R13 K2 + 0x60380018, // 00C9 GETGBL R14 G24 + 0x583C0027, // 00CA LDCONST R15 K39 + 0x88400315, // 00CB GETMBR R16 R1 K21 + 0x8840211C, // 00CC GETMBR R16 R16 K28 + 0x88440324, // 00CD GETMBR R17 R1 K36 + 0x7C380600, // 00CE CALL R14 3 + 0x583C001D, // 00CF LDCONST R15 K29 + 0x7C340400, // 00D0 CALL R13 2 + 0x7001FF4C, // 00D1 JMP #001F + 0x58180028, // 00D2 LDCONST R6 K40 + 0xAC180200, // 00D3 CATCH R6 1 0 + 0xB0080000, // 00D4 RAISE 2 R0 R0 + 0x6018000C, // 00D5 GETGBL R6 G12 + 0x881C0B0B, // 00D6 GETMBR R7 R5 K11 + 0x7C180200, // 00D7 CALL R6 1 + 0x24180D29, // 00D8 GT R6 R6 K41 + 0x781A0004, // 00D9 JMPF R6 #00DF + 0x8C18012A, // 00DA GETMET R6 R0 K42 + 0x5C200200, // 00DB MOVE R8 R1 + 0x5C240A00, // 00DC MOVE R9 R5 + 0x7C180600, // 00DD CALL R6 3 + 0x70020001, // 00DE JMP #00E1 + 0x50180000, // 00DF LDBOOL R6 0 0 + 0x80040C00, // 00E0 RET 1 R6 + 0x50180200, // 00E1 LDBOOL R6 1 0 + 0x80040C00, // 00E2 RET 1 R6 + 0x80000000, // 00E3 RET 0 }) ) ); @@ -1298,7 +1283,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 1, /* has sup protos */ ( &(const struct bproto*[ 3]) { be_nested_proto( - 17, /* nstack */ + 16, /* nstack */ 5, /* argc */ 0, /* varg */ 1, /* has upvals */ @@ -1308,7 +1293,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0, /* has sup protos */ NULL, 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ + ( &(const bvalue[25]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(get_attribute_name), /* K2 */ be_nested_str_weak(cluster), @@ -1328,17 +1313,16 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ /* K16 */ be_nested_str_weak(endpoint), /* K17 */ be_nested_str_weak(write_responses), /* K18 */ be_nested_str_weak(push), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(log), - /* K21 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K22 */ be_const_int(0), - /* K23 */ be_const_int(2), - /* K24 */ be_const_int(3), - /* K25 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K21 */ be_const_int(0), + /* K22 */ be_const_int(2), + /* K23 */ be_const_int(3), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED), }), be_str_weak(write_single_attribute), &be_const_str_solidified, - ( &(const binstruction[101]) { /* code */ + ( &(const binstruction[99]) { /* code */ 0xB8160000, // 0000 GETNGBL R5 K0 0x8C140B01, // 0001 GETMET R5 R5 K1 0x881C0502, // 0002 GETMBR R7 R2 K2 @@ -1371,8 +1355,8 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x881C0507, // 001D GETMBR R7 R2 K7 0x4C200000, // 001E LDNIL R8 0x201C0E08, // 001F NE R7 R7 R8 - 0x781E0037, // 0020 JMPF R7 #0059 - 0x78120035, // 0021 JMPF R4 #0058 + 0x781E0036, // 0020 JMPF R7 #0058 + 0x78120034, // 0021 JMPF R4 #0057 0xB81E0000, // 0022 GETNGBL R7 K0 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 0x7C1C0200, // 0024 CALL R7 1 @@ -1401,45 +1385,43 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x5C280E00, // 003B MOVE R10 R7 0x7C200400, // 003C CALL R8 2 0xB8222600, // 003D GETNGBL R8 K19 - 0x8C201114, // 003E GETMET R8 R8 K20 - 0x60280018, // 003F GETGBL R10 G24 - 0x582C0015, // 0040 LDCONST R11 K21 - 0x60300008, // 0041 GETGBL R12 G8 - 0x5C340400, // 0042 MOVE R13 R2 - 0x7C300200, // 0043 CALL R12 1 - 0x5C340A00, // 0044 MOVE R13 R5 + 0x60240018, // 003E GETGBL R9 G24 + 0x58280014, // 003F LDCONST R10 K20 + 0x602C0008, // 0040 GETGBL R11 G8 + 0x5C300400, // 0041 MOVE R12 R2 + 0x7C2C0200, // 0042 CALL R11 1 + 0x5C300A00, // 0043 MOVE R12 R5 + 0x88340507, // 0044 GETMBR R13 R2 K7 0x88380507, // 0045 GETMBR R14 R2 K7 - 0x883C0507, // 0046 GETMBR R15 R2 K7 - 0xB8420000, // 0047 GETNGBL R16 K0 - 0x8840210B, // 0048 GETMBR R16 R16 K11 - 0x1C3C1E10, // 0049 EQ R15 R15 R16 - 0x783E0001, // 004A JMPF R15 #004D - 0x583C000B, // 004B LDCONST R15 K11 - 0x70020000, // 004C JMP #004E - 0x583C0006, // 004D LDCONST R15 K6 - 0x7C280A00, // 004E CALL R10 5 - 0x882C0510, // 004F GETMBR R11 R2 K16 - 0x202C1716, // 0050 NE R11 R11 K22 - 0x782E0001, // 0051 JMPF R11 #0054 - 0x582C0017, // 0052 LDCONST R11 K23 - 0x70020000, // 0053 JMP #0055 - 0x582C0018, // 0054 LDCONST R11 K24 - 0x7C200600, // 0055 CALL R8 3 - 0x50200200, // 0056 LDBOOL R8 1 0 - 0x80041000, // 0057 RET 1 R8 - 0x7002000A, // 0058 JMP #0064 - 0xB81E2600, // 0059 GETNGBL R7 K19 - 0x8C1C0F14, // 005A GETMET R7 R7 K20 - 0x60240018, // 005B GETGBL R9 G24 - 0x58280019, // 005C LDCONST R10 K25 - 0x602C0008, // 005D GETGBL R11 G8 - 0x5C300400, // 005E MOVE R12 R2 - 0x7C2C0200, // 005F CALL R11 1 - 0x5C300A00, // 0060 MOVE R12 R5 - 0x7C240600, // 0061 CALL R9 3 - 0x58280018, // 0062 LDCONST R10 K24 - 0x7C1C0600, // 0063 CALL R7 3 - 0x80000000, // 0064 RET 0 + 0xB83E0000, // 0046 GETNGBL R15 K0 + 0x883C1F0B, // 0047 GETMBR R15 R15 K11 + 0x1C381C0F, // 0048 EQ R14 R14 R15 + 0x783A0001, // 0049 JMPF R14 #004C + 0x5838000B, // 004A LDCONST R14 K11 + 0x70020000, // 004B JMP #004D + 0x58380006, // 004C LDCONST R14 K6 + 0x7C240A00, // 004D CALL R9 5 + 0x88280510, // 004E GETMBR R10 R2 K16 + 0x20281515, // 004F NE R10 R10 K21 + 0x782A0001, // 0050 JMPF R10 #0053 + 0x58280016, // 0051 LDCONST R10 K22 + 0x70020000, // 0052 JMP #0054 + 0x58280017, // 0053 LDCONST R10 K23 + 0x7C200400, // 0054 CALL R8 2 + 0x50200200, // 0055 LDBOOL R8 1 0 + 0x80041000, // 0056 RET 1 R8 + 0x70020009, // 0057 JMP #0062 + 0xB81E2600, // 0058 GETNGBL R7 K19 + 0x60200018, // 0059 GETGBL R8 G24 + 0x58240018, // 005A LDCONST R9 K24 + 0x60280008, // 005B GETGBL R10 G8 + 0x5C2C0400, // 005C MOVE R11 R2 + 0x7C280200, // 005D CALL R10 1 + 0x5C2C0A00, // 005E MOVE R11 R5 + 0x7C200600, // 005F CALL R8 3 + 0x58240017, // 0060 LDCONST R9 K23 + 0x7C1C0400, // 0061 CALL R7 2 + 0x80000000, // 0062 RET 0 }) ), be_nested_proto( @@ -1472,7 +1454,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ &be_class_Matter_IM, }), 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ + ( &(const bvalue[29]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(WriteRequestMessage), /* K2 */ be_nested_str_weak(from_TLV), @@ -1493,20 +1475,19 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ /* K17 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K18 */ be_nested_str_weak(INVALID_ACTION), /* K19 */ be_nested_str_weak(get_attribute_name), - /* K20 */ be_nested_str_weak(tasmota), - /* K21 */ be_nested_str_weak(log), - /* K22 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K23 */ be_nested_str_weak(_X20_X28), - /* K24 */ be_nested_str_weak(_X29), - /* K25 */ be_nested_str_weak(), - /* K26 */ be_const_int(3), - /* K27 */ be_nested_str_weak(process_attribute_expansion), - /* K28 */ be_nested_str_weak(stop_iteration), - /* K29 */ be_nested_str_weak(send_write_response), + /* K20 */ be_nested_str_weak(log), + /* K21 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K22 */ be_nested_str_weak(_X20_X28), + /* K23 */ be_nested_str_weak(_X29), + /* K24 */ be_nested_str_weak(), + /* K25 */ be_const_int(3), + /* K26 */ be_nested_str_weak(process_attribute_expansion), + /* K27 */ be_nested_str_weak(stop_iteration), + /* K28 */ be_nested_str_weak(send_write_response), }), be_str_weak(process_write_request), &be_const_str_solidified, - ( &(const binstruction[104]) { /* code */ + ( &(const binstruction[103]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 @@ -1525,7 +1506,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x88200708, // 000F GETMBR R8 R3 K8 0x4C240000, // 0010 LDNIL R9 0x20201009, // 0011 NE R8 R8 R9 - 0x78220051, // 0012 JMPF R8 #0065 + 0x78220050, // 0012 JMPF R8 #0064 0xB8220000, // 0013 GETNGBL R8 K0 0x8C201109, // 0014 GETMET R8 R8 K9 0x7C200200, // 0015 CALL R8 1 @@ -1535,7 +1516,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x60240010, // 0019 GETGBL R9 G16 0x88280708, // 001A GETMBR R10 R3 K8 0x7C240200, // 001B CALL R9 1 - 0xA802003D, // 001C EXBLK 0 #005B + 0xA802003C, // 001C EXBLK 0 #005A 0x5C281200, // 001D MOVE R10 R9 0x7C280000, // 001E CALL R10 0 0x882C150B, // 001F GETMBR R11 R10 K11 @@ -1571,46 +1552,45 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x88340F0D, // 003D GETMBR R13 R7 K13 0x4C380000, // 003E LDNIL R14 0x1C341A0E, // 003F EQ R13 R13 R14 - 0x78360012, // 0040 JMPF R13 #0054 + 0x78360011, // 0040 JMPF R13 #0053 0xB8360000, // 0041 GETNGBL R13 K0 0x8C341B13, // 0042 GETMET R13 R13 K19 0x883C0F0E, // 0043 GETMBR R15 R7 K14 0x88400F0F, // 0044 GETMBR R16 R7 K15 0x7C340600, // 0045 CALL R13 3 0xB83A2800, // 0046 GETNGBL R14 K20 - 0x8C381D15, // 0047 GETMET R14 R14 K21 - 0x60400008, // 0048 GETGBL R16 G8 - 0x5C440E00, // 0049 MOVE R17 R7 - 0x7C400200, // 004A CALL R16 1 - 0x00422C10, // 004B ADD R16 K22 R16 - 0x78360002, // 004C JMPF R13 #0050 - 0x00462E0D, // 004D ADD R17 K23 R13 - 0x00442318, // 004E ADD R17 R17 K24 - 0x70020000, // 004F JMP #0051 - 0x58440019, // 0050 LDCONST R17 K25 - 0x00402011, // 0051 ADD R16 R16 R17 - 0x5844001A, // 0052 LDCONST R17 K26 - 0x7C380600, // 0053 CALL R14 3 - 0x88340104, // 0054 GETMBR R13 R0 K4 - 0x8C341B1B, // 0055 GETMET R13 R13 K27 - 0x5C3C0E00, // 0056 MOVE R15 R7 - 0x84400001, // 0057 CLOSURE R16 P1 - 0x7C340600, // 0058 CALL R13 3 - 0xA0240000, // 0059 CLOSE R9 - 0x7001FFC1, // 005A JMP #001D - 0x5824001C, // 005B LDCONST R9 K28 - 0xAC240200, // 005C CATCH R9 1 0 - 0xB0080000, // 005D RAISE 2 R0 R0 - 0x5C240800, // 005E MOVE R9 R4 - 0x74260003, // 005F JMPT R9 #0064 - 0x8C24011D, // 0060 GETMET R9 R0 K29 - 0x5C2C0200, // 0061 MOVE R11 R1 - 0x5C301000, // 0062 MOVE R12 R8 - 0x7C240600, // 0063 CALL R9 3 - 0xA0200000, // 0064 CLOSE R8 - 0x50200200, // 0065 LDBOOL R8 1 0 - 0xA0000000, // 0066 CLOSE R0 - 0x80041000, // 0067 RET 1 R8 + 0x603C0008, // 0047 GETGBL R15 G8 + 0x5C400E00, // 0048 MOVE R16 R7 + 0x7C3C0200, // 0049 CALL R15 1 + 0x003E2A0F, // 004A ADD R15 K21 R15 + 0x78360002, // 004B JMPF R13 #004F + 0x00422C0D, // 004C ADD R16 K22 R13 + 0x00402117, // 004D ADD R16 R16 K23 + 0x70020000, // 004E JMP #0050 + 0x58400018, // 004F LDCONST R16 K24 + 0x003C1E10, // 0050 ADD R15 R15 R16 + 0x58400019, // 0051 LDCONST R16 K25 + 0x7C380400, // 0052 CALL R14 2 + 0x88340104, // 0053 GETMBR R13 R0 K4 + 0x8C341B1A, // 0054 GETMET R13 R13 K26 + 0x5C3C0E00, // 0055 MOVE R15 R7 + 0x84400001, // 0056 CLOSURE R16 P1 + 0x7C340600, // 0057 CALL R13 3 + 0xA0240000, // 0058 CLOSE R9 + 0x7001FFC2, // 0059 JMP #001D + 0x5824001B, // 005A LDCONST R9 K27 + 0xAC240200, // 005B CATCH R9 1 0 + 0xB0080000, // 005C RAISE 2 R0 R0 + 0x5C240800, // 005D MOVE R9 R4 + 0x74260003, // 005E JMPT R9 #0063 + 0x8C24011C, // 005F GETMET R9 R0 K28 + 0x5C2C0200, // 0060 MOVE R11 R1 + 0x5C301000, // 0061 MOVE R12 R8 + 0x7C240600, // 0062 CALL R9 3 + 0xA0200000, // 0063 CLOSE R8 + 0x50200200, // 0064 LDBOOL R8 1 0 + 0xA0000000, // 0065 CLOSE R0 + 0x80041000, // 0066 RET 1 R8 }) ) ); @@ -1769,7 +1749,7 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ + ( &(const bvalue[24]) { /* constants */ /* K0 */ be_nested_str_weak(session), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(ReadRequestMessage), @@ -1782,23 +1762,22 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ /* K9 */ be_nested_str_weak(attribute), /* K10 */ be_nested_str_weak(push), /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(log), - /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K15 */ be_nested_str_weak(local_session_id), - /* K16 */ be_nested_str_weak(subscription_id), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(is_keep_alive), - /* K19 */ be_nested_str_weak(_inner_process_read_request), - /* K20 */ be_nested_str_weak(suppress_response), - /* K21 */ be_nested_str_weak(IM_ReportDataSubscribed), - /* K22 */ be_nested_str_weak(_message_handler), - /* K23 */ be_nested_str_weak(send_queue), - /* K24 */ be_nested_str_weak(send_enqueued), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K14 */ be_nested_str_weak(local_session_id), + /* K15 */ be_nested_str_weak(subscription_id), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(is_keep_alive), + /* K18 */ be_nested_str_weak(_inner_process_read_request), + /* K19 */ be_nested_str_weak(suppress_response), + /* K20 */ be_nested_str_weak(IM_ReportDataSubscribed), + /* K21 */ be_nested_str_weak(_message_handler), + /* K22 */ be_nested_str_weak(send_queue), + /* K23 */ be_nested_str_weak(send_enqueued), }), be_str_weak(send_subscribe_update), &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ + ( &(const binstruction[66]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0xB80E0200, // 0001 GETNGBL R3 K1 0x8C0C0702, // 0002 GETMET R3 R3 K2 @@ -1832,40 +1811,39 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0xAC100200, // 001E CATCH R4 1 0 0xB0080000, // 001F RAISE 2 R0 R0 0xB8121800, // 0020 GETNGBL R4 K12 - 0x8C10090D, // 0021 GETMET R4 R4 K13 - 0x60180018, // 0022 GETGBL R6 G24 - 0x581C000E, // 0023 LDCONST R7 K14 - 0x8820050F, // 0024 GETMBR R8 R2 K15 - 0x88240310, // 0025 GETMBR R9 R1 K16 - 0x7C180600, // 0026 CALL R6 3 - 0x581C0011, // 0027 LDCONST R7 K17 - 0x7C100600, // 0028 CALL R4 3 - 0x50100000, // 0029 LDBOOL R4 0 0 - 0x90062404, // 002A SETMBR R1 K18 R4 - 0x8C100113, // 002B GETMET R4 R0 K19 - 0x5C180400, // 002C MOVE R6 R2 - 0x5C1C0600, // 002D MOVE R7 R3 - 0x4C200000, // 002E LDNIL R8 - 0x7C100800, // 002F CALL R4 4 - 0x50140000, // 0030 LDBOOL R5 0 0 - 0x90122805, // 0031 SETMBR R4 K20 R5 - 0x88140310, // 0032 GETMBR R5 R1 K16 - 0x90122005, // 0033 SETMBR R4 K16 R5 - 0xB8160200, // 0034 GETNGBL R5 K1 - 0x8C140B15, // 0035 GETMET R5 R5 K21 - 0x881C0516, // 0036 GETMBR R7 R2 K22 - 0x5C200400, // 0037 MOVE R8 R2 - 0x5C240800, // 0038 MOVE R9 R4 - 0x5C280200, // 0039 MOVE R10 R1 - 0x7C140A00, // 003A CALL R5 5 - 0x88180117, // 003B GETMBR R6 R0 K23 - 0x8C180D0A, // 003C GETMET R6 R6 K10 - 0x5C200A00, // 003D MOVE R8 R5 - 0x7C180400, // 003E CALL R6 2 - 0x8C180118, // 003F GETMET R6 R0 K24 - 0x88200516, // 0040 GETMBR R8 R2 K22 - 0x7C180400, // 0041 CALL R6 2 - 0x80000000, // 0042 RET 0 + 0x60140018, // 0021 GETGBL R5 G24 + 0x5818000D, // 0022 LDCONST R6 K13 + 0x881C050E, // 0023 GETMBR R7 R2 K14 + 0x8820030F, // 0024 GETMBR R8 R1 K15 + 0x7C140600, // 0025 CALL R5 3 + 0x58180010, // 0026 LDCONST R6 K16 + 0x7C100400, // 0027 CALL R4 2 + 0x50100000, // 0028 LDBOOL R4 0 0 + 0x90062204, // 0029 SETMBR R1 K17 R4 + 0x8C100112, // 002A GETMET R4 R0 K18 + 0x5C180400, // 002B MOVE R6 R2 + 0x5C1C0600, // 002C MOVE R7 R3 + 0x4C200000, // 002D LDNIL R8 + 0x7C100800, // 002E CALL R4 4 + 0x50140000, // 002F LDBOOL R5 0 0 + 0x90122605, // 0030 SETMBR R4 K19 R5 + 0x8814030F, // 0031 GETMBR R5 R1 K15 + 0x90121E05, // 0032 SETMBR R4 K15 R5 + 0xB8160200, // 0033 GETNGBL R5 K1 + 0x8C140B14, // 0034 GETMET R5 R5 K20 + 0x881C0515, // 0035 GETMBR R7 R2 K21 + 0x5C200400, // 0036 MOVE R8 R2 + 0x5C240800, // 0037 MOVE R9 R4 + 0x5C280200, // 0038 MOVE R10 R1 + 0x7C140A00, // 0039 CALL R5 5 + 0x88180116, // 003A GETMBR R6 R0 K22 + 0x8C180D0A, // 003B GETMET R6 R6 K10 + 0x5C200A00, // 003C MOVE R8 R5 + 0x7C180400, // 003D CALL R6 2 + 0x8C180117, // 003E GETMET R6 R0 K23 + 0x88200515, // 003F GETMBR R8 R2 K21 + 0x7C180400, // 0040 CALL R6 2 + 0x80000000, // 0041 RET 0 }) ) ); @@ -2218,7 +2196,7 @@ be_local_closure(class_Matter_IM_send_status, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ be_nested_proto( - 19, /* nstack */ + 18, /* nstack */ 5, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2261,12 +2239,12 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ /* K19 */ be_nested_str_weak(push), /* K20 */ be_nested_str_weak(val), /* K21 */ be_nested_str_weak(stop_iteration), - /* K22 */ be_nested_str_weak(tasmota), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K25 */ be_nested_str_weak(local_session_id), - /* K26 */ be_const_int(3), - /* K27 */ be_nested_str_weak(attributestatus2raw), + /* K22 */ be_nested_str_weak(log), + /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K24 */ be_nested_str_weak(local_session_id), + /* K25 */ be_const_int(3), + /* K26 */ be_nested_str_weak(attributestatus2raw), + /* K27 */ be_nested_str_weak(tasmota), /* K28 */ be_nested_str_weak(loglevel), /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), @@ -2277,7 +2255,7 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ }), be_str_weak(read_single_attribute), &be_const_str_solidified, - ( &(const binstruction[238]) { /* code */ + ( &(const binstruction[235]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0xB8160000, // 0002 GETNGBL R5 K0 @@ -2308,7 +2286,7 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ 0x4C200000, // 001B LDNIL R8 0x4C240000, // 001C LDNIL R9 0x20240C09, // 001D NE R9 R6 R9 - 0x78260054, // 001E JMPF R9 #0074 + 0x78260053, // 001E JMPF R9 #0073 0x58240007, // 001F LDCONST R9 K7 0x68280002, // 0020 GETUPV R10 U2 0x742A0002, // 0021 JMPT R10 #0025 @@ -2380,142 +2358,139 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ 0x5C380C00, // 0063 MOVE R14 R6 0x7C280800, // 0064 CALL R10 4 0x68280002, // 0065 GETUPV R10 U2 - 0x742A000B, // 0066 JMPT R10 #0073 + 0x742A000A, // 0066 JMPT R10 #0072 0xB82A2C00, // 0067 GETNGBL R10 K22 - 0x8C281517, // 0068 GETMET R10 R10 K23 - 0x60300018, // 0069 GETGBL R12 G24 - 0x58340018, // 006A LDCONST R13 K24 - 0x68380000, // 006B GETUPV R14 U0 - 0x88381D19, // 006C GETMBR R14 R14 K25 - 0x5C3C0400, // 006D MOVE R15 R2 - 0x5C400A00, // 006E MOVE R16 R5 - 0x5C441200, // 006F MOVE R17 R9 - 0x7C300A00, // 0070 CALL R12 5 - 0x5834001A, // 0071 LDCONST R13 K26 - 0x7C280600, // 0072 CALL R10 3 - 0x7002003B, // 0073 JMP #00B0 - 0x88240508, // 0074 GETMBR R9 R2 K8 - 0x4C280000, // 0075 LDNIL R10 - 0x2024120A, // 0076 NE R9 R9 R10 - 0x78260026, // 0077 JMPF R9 #009F - 0x780E0024, // 0078 JMPF R3 #009E - 0x60240015, // 0079 GETGBL R9 G21 - 0x542A002F, // 007A LDINT R10 48 - 0x7C240200, // 007B CALL R9 1 - 0x5C201200, // 007C MOVE R8 R9 - 0x68240001, // 007D GETUPV R9 U1 - 0x8C24131B, // 007E GETMET R9 R9 K27 - 0x5C2C1000, // 007F MOVE R11 R8 - 0x5C300400, // 0080 MOVE R12 R2 - 0x88340508, // 0081 GETMBR R13 R2 K8 - 0x7C240800, // 0082 CALL R9 4 - 0xB8262C00, // 0083 GETNGBL R9 K22 - 0x8C24131C, // 0084 GETMET R9 R9 K28 - 0x582C001A, // 0085 LDCONST R11 K26 - 0x7C240400, // 0086 CALL R9 2 - 0x78260015, // 0087 JMPF R9 #009E - 0xB8262C00, // 0088 GETNGBL R9 K22 - 0x8C241317, // 0089 GETMET R9 R9 K23 - 0x602C0018, // 008A GETGBL R11 G24 - 0x5830001D, // 008B LDCONST R12 K29 - 0x68340000, // 008C GETUPV R13 U0 - 0x88341B19, // 008D GETMBR R13 R13 K25 - 0x60380008, // 008E GETGBL R14 G8 - 0x5C3C0400, // 008F MOVE R15 R2 - 0x7C380200, // 0090 CALL R14 1 - 0x5C3C0A00, // 0091 MOVE R15 R5 - 0x88400508, // 0092 GETMBR R16 R2 K8 - 0x88440508, // 0093 GETMBR R17 R2 K8 - 0xB84A0000, // 0094 GETNGBL R18 K0 - 0x8848251E, // 0095 GETMBR R18 R18 K30 - 0x1C442212, // 0096 EQ R17 R17 R18 - 0x78460001, // 0097 JMPF R17 #009A - 0x5844001E, // 0098 LDCONST R17 K30 - 0x70020000, // 0099 JMP #009B - 0x58440007, // 009A LDCONST R17 K7 - 0x7C2C0C00, // 009B CALL R11 6 - 0x5830001A, // 009C LDCONST R12 K26 - 0x7C240600, // 009D CALL R9 3 - 0x70020010, // 009E JMP #00B0 - 0x68240002, // 009F GETUPV R9 U2 - 0x7426000C, // 00A0 JMPT R9 #00AE - 0xB8262C00, // 00A1 GETNGBL R9 K22 - 0x8C241317, // 00A2 GETMET R9 R9 K23 - 0x602C0018, // 00A3 GETGBL R11 G24 - 0x5830001F, // 00A4 LDCONST R12 K31 - 0x68340000, // 00A5 GETUPV R13 U0 - 0x88341B19, // 00A6 GETMBR R13 R13 K25 - 0x60380008, // 00A7 GETGBL R14 G8 - 0x5C3C0400, // 00A8 MOVE R15 R2 - 0x7C380200, // 00A9 CALL R14 1 - 0x5C3C0A00, // 00AA MOVE R15 R5 - 0x7C2C0800, // 00AB CALL R11 4 - 0x5830001A, // 00AC LDCONST R12 K26 - 0x7C240600, // 00AD CALL R9 3 - 0x780E0000, // 00AE JMPF R3 #00B0 - 0x501C0000, // 00AF LDBOOL R7 0 0 - 0x6024000F, // 00B0 GETGBL R9 G15 - 0x5C281000, // 00B1 MOVE R10 R8 - 0x602C0012, // 00B2 GETGBL R11 G18 - 0x7C240400, // 00B3 CALL R9 2 - 0x78260001, // 00B4 JMPF R9 #00B7 - 0x58240020, // 00B5 LDCONST R9 K32 - 0x70020000, // 00B6 JMP #00B8 - 0x4C240000, // 00B7 LDNIL R9 + 0x602C0018, // 0068 GETGBL R11 G24 + 0x58300017, // 0069 LDCONST R12 K23 + 0x68340000, // 006A GETUPV R13 U0 + 0x88341B18, // 006B GETMBR R13 R13 K24 + 0x5C380400, // 006C MOVE R14 R2 + 0x5C3C0A00, // 006D MOVE R15 R5 + 0x5C401200, // 006E MOVE R16 R9 + 0x7C2C0A00, // 006F CALL R11 5 + 0x58300019, // 0070 LDCONST R12 K25 + 0x7C280400, // 0071 CALL R10 2 + 0x70020039, // 0072 JMP #00AD + 0x88240508, // 0073 GETMBR R9 R2 K8 + 0x4C280000, // 0074 LDNIL R10 + 0x2024120A, // 0075 NE R9 R9 R10 + 0x78260025, // 0076 JMPF R9 #009D + 0x780E0023, // 0077 JMPF R3 #009C + 0x60240015, // 0078 GETGBL R9 G21 + 0x542A002F, // 0079 LDINT R10 48 + 0x7C240200, // 007A CALL R9 1 + 0x5C201200, // 007B MOVE R8 R9 + 0x68240001, // 007C GETUPV R9 U1 + 0x8C24131A, // 007D GETMET R9 R9 K26 + 0x5C2C1000, // 007E MOVE R11 R8 + 0x5C300400, // 007F MOVE R12 R2 + 0x88340508, // 0080 GETMBR R13 R2 K8 + 0x7C240800, // 0081 CALL R9 4 + 0xB8263600, // 0082 GETNGBL R9 K27 + 0x8C24131C, // 0083 GETMET R9 R9 K28 + 0x582C0019, // 0084 LDCONST R11 K25 + 0x7C240400, // 0085 CALL R9 2 + 0x78260014, // 0086 JMPF R9 #009C + 0xB8262C00, // 0087 GETNGBL R9 K22 + 0x60280018, // 0088 GETGBL R10 G24 + 0x582C001D, // 0089 LDCONST R11 K29 + 0x68300000, // 008A GETUPV R12 U0 + 0x88301918, // 008B GETMBR R12 R12 K24 + 0x60340008, // 008C GETGBL R13 G8 + 0x5C380400, // 008D MOVE R14 R2 + 0x7C340200, // 008E CALL R13 1 + 0x5C380A00, // 008F MOVE R14 R5 + 0x883C0508, // 0090 GETMBR R15 R2 K8 + 0x88400508, // 0091 GETMBR R16 R2 K8 + 0xB8460000, // 0092 GETNGBL R17 K0 + 0x8844231E, // 0093 GETMBR R17 R17 K30 + 0x1C402011, // 0094 EQ R16 R16 R17 + 0x78420001, // 0095 JMPF R16 #0098 + 0x5840001E, // 0096 LDCONST R16 K30 + 0x70020000, // 0097 JMP #0099 + 0x58400007, // 0098 LDCONST R16 K7 + 0x7C280C00, // 0099 CALL R10 6 + 0x582C0019, // 009A LDCONST R11 K25 + 0x7C240400, // 009B CALL R9 2 + 0x7002000F, // 009C JMP #00AD + 0x68240002, // 009D GETUPV R9 U2 + 0x7426000B, // 009E JMPT R9 #00AB + 0xB8262C00, // 009F GETNGBL R9 K22 + 0x60280018, // 00A0 GETGBL R10 G24 + 0x582C001F, // 00A1 LDCONST R11 K31 + 0x68300000, // 00A2 GETUPV R12 U0 + 0x88301918, // 00A3 GETMBR R12 R12 K24 + 0x60340008, // 00A4 GETGBL R13 G8 + 0x5C380400, // 00A5 MOVE R14 R2 + 0x7C340200, // 00A6 CALL R13 1 + 0x5C380A00, // 00A7 MOVE R14 R5 + 0x7C280800, // 00A8 CALL R10 4 + 0x582C0019, // 00A9 LDCONST R11 K25 + 0x7C240400, // 00AA CALL R9 2 + 0x780E0000, // 00AB JMPF R3 #00AD + 0x501C0000, // 00AC LDBOOL R7 0 0 + 0x6024000F, // 00AD GETGBL R9 G15 + 0x5C281000, // 00AE MOVE R10 R8 + 0x602C0012, // 00AF GETGBL R11 G18 + 0x7C240400, // 00B0 CALL R9 2 + 0x78260001, // 00B1 JMPF R9 #00B4 + 0x58240020, // 00B2 LDCONST R9 K32 + 0x70020000, // 00B3 JMP #00B5 + 0x4C240000, // 00B4 LDNIL R9 + 0x4C280000, // 00B5 LDNIL R10 + 0x2028100A, // 00B6 NE R10 R8 R10 + 0x782A0031, // 00B7 JMPF R10 #00EA 0x4C280000, // 00B8 LDNIL R10 - 0x2028100A, // 00B9 NE R10 R8 R10 - 0x782A0031, // 00BA JMPF R10 #00ED - 0x4C280000, // 00BB LDNIL R10 - 0x1C28120A, // 00BC EQ R10 R9 R10 - 0x782A0001, // 00BD JMPF R10 #00C0 - 0x5C281000, // 00BE MOVE R10 R8 - 0x70020000, // 00BF JMP #00C1 - 0x94281009, // 00C0 GETIDX R10 R8 R9 - 0x602C000C, // 00C1 GETGBL R11 G12 - 0x88300121, // 00C2 GETMBR R12 R0 K33 - 0x7C2C0200, // 00C3 CALL R11 1 - 0x1C2C1720, // 00C4 EQ R11 R11 K32 - 0x782E0004, // 00C5 JMPF R11 #00CB - 0x882C0121, // 00C6 GETMBR R11 R0 K33 - 0x8C2C1713, // 00C7 GETMET R11 R11 K19 - 0x5C341400, // 00C8 MOVE R13 R10 - 0x7C2C0400, // 00C9 CALL R11 2 - 0x70020014, // 00CA JMP #00E0 - 0x882C0121, // 00CB GETMBR R11 R0 K33 - 0x5431FFFE, // 00CC LDINT R12 -1 - 0x942C160C, // 00CD GETIDX R11 R11 R12 - 0x6030000C, // 00CE GETGBL R12 G12 - 0x5C341600, // 00CF MOVE R13 R11 - 0x7C300200, // 00D0 CALL R12 1 - 0x6034000C, // 00D1 GETGBL R13 G12 - 0x5C381400, // 00D2 MOVE R14 R10 - 0x7C340200, // 00D3 CALL R13 1 - 0x0030180D, // 00D4 ADD R12 R12 R13 - 0xB8360000, // 00D5 GETNGBL R13 K0 - 0x88341B0F, // 00D6 GETMBR R13 R13 K15 - 0x88341B10, // 00D7 GETMBR R13 R13 K16 - 0x1830180D, // 00D8 LE R12 R12 R13 - 0x78320001, // 00D9 JMPF R12 #00DC - 0x4030160A, // 00DA CONNECT R12 R11 R10 - 0x70020003, // 00DB JMP #00E0 - 0x88300121, // 00DC GETMBR R12 R0 K33 - 0x8C301913, // 00DD GETMET R12 R12 K19 - 0x5C381400, // 00DE MOVE R14 R10 - 0x7C300400, // 00DF CALL R12 2 - 0x4C2C0000, // 00E0 LDNIL R11 - 0x1C2C120B, // 00E1 EQ R11 R9 R11 - 0x782E0001, // 00E2 JMPF R11 #00E5 - 0x4C200000, // 00E3 LDNIL R8 - 0x70020006, // 00E4 JMP #00EC - 0x00241322, // 00E5 ADD R9 R9 K34 - 0x602C000C, // 00E6 GETGBL R11 G12 - 0x5C301000, // 00E7 MOVE R12 R8 - 0x7C2C0200, // 00E8 CALL R11 1 - 0x282C120B, // 00E9 GE R11 R9 R11 - 0x782E0000, // 00EA JMPF R11 #00EC - 0x4C200000, // 00EB LDNIL R8 - 0x7001FFCA, // 00EC JMP #00B8 - 0x80040E00, // 00ED RET 1 R7 + 0x1C28120A, // 00B9 EQ R10 R9 R10 + 0x782A0001, // 00BA JMPF R10 #00BD + 0x5C281000, // 00BB MOVE R10 R8 + 0x70020000, // 00BC JMP #00BE + 0x94281009, // 00BD GETIDX R10 R8 R9 + 0x602C000C, // 00BE GETGBL R11 G12 + 0x88300121, // 00BF GETMBR R12 R0 K33 + 0x7C2C0200, // 00C0 CALL R11 1 + 0x1C2C1720, // 00C1 EQ R11 R11 K32 + 0x782E0004, // 00C2 JMPF R11 #00C8 + 0x882C0121, // 00C3 GETMBR R11 R0 K33 + 0x8C2C1713, // 00C4 GETMET R11 R11 K19 + 0x5C341400, // 00C5 MOVE R13 R10 + 0x7C2C0400, // 00C6 CALL R11 2 + 0x70020014, // 00C7 JMP #00DD + 0x882C0121, // 00C8 GETMBR R11 R0 K33 + 0x5431FFFE, // 00C9 LDINT R12 -1 + 0x942C160C, // 00CA GETIDX R11 R11 R12 + 0x6030000C, // 00CB GETGBL R12 G12 + 0x5C341600, // 00CC MOVE R13 R11 + 0x7C300200, // 00CD CALL R12 1 + 0x6034000C, // 00CE GETGBL R13 G12 + 0x5C381400, // 00CF MOVE R14 R10 + 0x7C340200, // 00D0 CALL R13 1 + 0x0030180D, // 00D1 ADD R12 R12 R13 + 0xB8360000, // 00D2 GETNGBL R13 K0 + 0x88341B0F, // 00D3 GETMBR R13 R13 K15 + 0x88341B10, // 00D4 GETMBR R13 R13 K16 + 0x1830180D, // 00D5 LE R12 R12 R13 + 0x78320001, // 00D6 JMPF R12 #00D9 + 0x4030160A, // 00D7 CONNECT R12 R11 R10 + 0x70020003, // 00D8 JMP #00DD + 0x88300121, // 00D9 GETMBR R12 R0 K33 + 0x8C301913, // 00DA GETMET R12 R12 K19 + 0x5C381400, // 00DB MOVE R14 R10 + 0x7C300400, // 00DC CALL R12 2 + 0x4C2C0000, // 00DD LDNIL R11 + 0x1C2C120B, // 00DE EQ R11 R9 R11 + 0x782E0001, // 00DF JMPF R11 #00E2 + 0x4C200000, // 00E0 LDNIL R8 + 0x70020006, // 00E1 JMP #00E9 + 0x00241322, // 00E2 ADD R9 R9 K34 + 0x602C000C, // 00E3 GETGBL R11 G12 + 0x5C301000, // 00E4 MOVE R12 R8 + 0x7C2C0200, // 00E5 CALL R11 1 + 0x282C120B, // 00E6 GE R11 R9 R11 + 0x782E0000, // 00E7 JMPF R11 #00E9 + 0x4C200000, // 00E8 LDNIL R8 + 0x7001FFCA, // 00E9 JMP #00B5 + 0x80040E00, // 00EA RET 1 R7 }) ), be_nested_proto( @@ -2546,7 +2521,7 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ &be_class_Matter_IM, }), 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ + ( &(const bvalue[24]) { /* constants */ /* K0 */ be_nested_str_weak(device), /* K1 */ be_nested_str_weak(get_active_endpoints), /* K2 */ be_nested_str_weak(matter), @@ -2562,20 +2537,19 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ /* K12 */ be_nested_str_weak(status), /* K13 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K14 */ be_nested_str_weak(get_attribute_name), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K18 */ be_nested_str_weak(local_session_id), - /* K19 */ be_nested_str_weak(_X20_X28), - /* K20 */ be_nested_str_weak(_X29), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_const_int(3), - /* K23 */ be_nested_str_weak(process_attribute_expansion), - /* K24 */ be_nested_str_weak(stop_iteration), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K17 */ be_nested_str_weak(local_session_id), + /* K18 */ be_nested_str_weak(_X20_X28), + /* K19 */ be_nested_str_weak(_X29), + /* K20 */ be_nested_str_weak(), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(process_attribute_expansion), + /* K23 */ be_nested_str_weak(stop_iteration), }), be_str_weak(_inner_process_read_request), &be_const_str_solidified, - ( &(const binstruction[96]) { /* code */ + ( &(const binstruction[94]) { /* code */ 0x84140000, // 0000 CLOSURE R5 P0 0x88180100, // 0001 GETMBR R6 R0 K0 0x8C180D01, // 0002 GETMET R6 R6 K1 @@ -2593,7 +2567,7 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ 0x60240010, // 000E GETGBL R9 G16 0x88280507, // 000F GETMBR R10 R2 K7 0x7C240200, // 0010 CALL R9 1 - 0xA8020048, // 0011 EXBLK 0 #005B + 0xA8020046, // 0011 EXBLK 0 #0059 0x5C281200, // 0012 MOVE R10 R9 0x7C280000, // 0013 CALL R10 0 0x882C1508, // 0014 GETMBR R11 R10 K8 @@ -2618,60 +2592,58 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ 0x882C0F0A, // 0027 GETMBR R11 R7 K10 0x4C300000, // 0028 LDNIL R12 0x1C2C160C, // 0029 EQ R11 R11 R12 - 0x782E0029, // 002A JMPF R11 #0055 + 0x782E0027, // 002A JMPF R11 #0053 0x882C0F09, // 002B GETMBR R11 R7 K9 0x4C300000, // 002C LDNIL R12 0x202C160C, // 002D NE R11 R11 R12 - 0x782E001A, // 002E JMPF R11 #004A + 0x782E0019, // 002E JMPF R11 #0049 0x882C0F0A, // 002F GETMBR R11 R7 K10 0x4C300000, // 0030 LDNIL R12 0x202C160C, // 0031 NE R11 R11 R12 - 0x782E0016, // 0032 JMPF R11 #004A + 0x782E0015, // 0032 JMPF R11 #0049 0xB82E0400, // 0033 GETNGBL R11 K2 0x8C2C170E, // 0034 GETMET R11 R11 K14 0x88340F09, // 0035 GETMBR R13 R7 K9 0x88380F0A, // 0036 GETMBR R14 R7 K10 0x7C2C0600, // 0037 CALL R11 3 0xB8321E00, // 0038 GETNGBL R12 K15 - 0x8C301910, // 0039 GETMET R12 R12 K16 - 0x60380018, // 003A GETGBL R14 G24 - 0x583C0011, // 003B LDCONST R15 K17 - 0x88400312, // 003C GETMBR R16 R1 K18 - 0x60440008, // 003D GETGBL R17 G8 - 0x5C480E00, // 003E MOVE R18 R7 - 0x7C440200, // 003F CALL R17 1 - 0x782E0002, // 0040 JMPF R11 #0044 - 0x004A260B, // 0041 ADD R18 K19 R11 - 0x00482514, // 0042 ADD R18 R18 K20 - 0x70020000, // 0043 JMP #0045 - 0x58480015, // 0044 LDCONST R18 K21 - 0x00442212, // 0045 ADD R17 R17 R18 - 0x7C380600, // 0046 CALL R14 3 - 0x583C0016, // 0047 LDCONST R15 K22 - 0x7C300600, // 0048 CALL R12 3 - 0x7002000A, // 0049 JMP #0055 - 0xB82E1E00, // 004A GETNGBL R11 K15 - 0x8C2C1710, // 004B GETMET R11 R11 K16 - 0x60340018, // 004C GETGBL R13 G24 - 0x58380011, // 004D LDCONST R14 K17 - 0x883C0312, // 004E GETMBR R15 R1 K18 - 0x60400008, // 004F GETGBL R16 G8 - 0x5C440E00, // 0050 MOVE R17 R7 - 0x7C400200, // 0051 CALL R16 1 - 0x7C340600, // 0052 CALL R13 3 - 0x58380016, // 0053 LDCONST R14 K22 - 0x7C2C0600, // 0054 CALL R11 3 - 0x882C0100, // 0055 GETMBR R11 R0 K0 - 0x8C2C1717, // 0056 GETMET R11 R11 K23 - 0x5C340E00, // 0057 MOVE R13 R7 - 0x84380001, // 0058 CLOSURE R14 P1 - 0x7C2C0600, // 0059 CALL R11 3 - 0x7001FFB6, // 005A JMP #0012 - 0x58240018, // 005B LDCONST R9 K24 - 0xAC240200, // 005C CATCH R9 1 0 - 0xB0080000, // 005D RAISE 2 R0 R0 - 0xA0000000, // 005E CLOSE R0 - 0x80041000, // 005F RET 1 R8 + 0x60340018, // 0039 GETGBL R13 G24 + 0x58380010, // 003A LDCONST R14 K16 + 0x883C0311, // 003B GETMBR R15 R1 K17 + 0x60400008, // 003C GETGBL R16 G8 + 0x5C440E00, // 003D MOVE R17 R7 + 0x7C400200, // 003E CALL R16 1 + 0x782E0002, // 003F JMPF R11 #0043 + 0x0046240B, // 0040 ADD R17 K18 R11 + 0x00442313, // 0041 ADD R17 R17 K19 + 0x70020000, // 0042 JMP #0044 + 0x58440014, // 0043 LDCONST R17 K20 + 0x00402011, // 0044 ADD R16 R16 R17 + 0x7C340600, // 0045 CALL R13 3 + 0x58380015, // 0046 LDCONST R14 K21 + 0x7C300400, // 0047 CALL R12 2 + 0x70020009, // 0048 JMP #0053 + 0xB82E1E00, // 0049 GETNGBL R11 K15 + 0x60300018, // 004A GETGBL R12 G24 + 0x58340010, // 004B LDCONST R13 K16 + 0x88380311, // 004C GETMBR R14 R1 K17 + 0x603C0008, // 004D GETGBL R15 G8 + 0x5C400E00, // 004E MOVE R16 R7 + 0x7C3C0200, // 004F CALL R15 1 + 0x7C300600, // 0050 CALL R12 3 + 0x58340015, // 0051 LDCONST R13 K21 + 0x7C2C0400, // 0052 CALL R11 2 + 0x882C0100, // 0053 GETMBR R11 R0 K0 + 0x8C2C1716, // 0054 GETMET R11 R11 K22 + 0x5C340E00, // 0055 MOVE R13 R7 + 0x84380001, // 0056 CLOSURE R14 P1 + 0x7C2C0600, // 0057 CALL R11 3 + 0x7001FFB8, // 0058 JMP #0012 + 0x58240017, // 0059 LDCONST R9 K23 + 0xAC240200, // 005A CATCH R9 1 0 + 0xB0080000, // 005B RAISE 2 R0 R0 + 0xA0000000, // 005C CLOSE R0 + 0x80041000, // 005D RET 1 R8 }) ) ); @@ -2926,7 +2898,7 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ be_nested_proto( - 20, /* nstack */ + 19, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2953,26 +2925,26 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /* K15 */ be_nested_str_weak(encode_len), /* K16 */ be_nested_str_weak(IM_ReportData), /* K17 */ be_nested_str_weak(MAX_MESSAGE), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(TLV), - /* K22 */ be_nested_str_weak(parse), - /* K23 */ be_nested_str_weak(raw), - /* K24 */ be_nested_str_weak(app_payload_idx), - /* K25 */ be_nested_str_weak(process_read_request), - /* K26 */ be_nested_str_weak(add), - /* K27 */ be_const_int(1), - /* K28 */ be_nested_str_weak(attributedata2raw), - /* K29 */ be_const_int(405077761), - /* K30 */ be_nested_str_weak(attributestatus2raw), - /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), - /* K32 */ be_nested_str_weak(local_session_id), - /* K33 */ be_nested_str_weak(build_response), - /* K34 */ be_nested_str_weak(message_handler), - /* K35 */ be_nested_str_weak(clear), - /* K36 */ be_nested_str_weak(encode_frame), - /* K37 */ be_nested_str_weak(encrypt), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str_weak(TLV), + /* K21 */ be_nested_str_weak(parse), + /* K22 */ be_nested_str_weak(raw), + /* K23 */ be_nested_str_weak(app_payload_idx), + /* K24 */ be_nested_str_weak(process_read_request), + /* K25 */ be_nested_str_weak(add), + /* K26 */ be_const_int(1), + /* K27 */ be_nested_str_weak(attributedata2raw), + /* K28 */ be_const_int(405077761), + /* K29 */ be_nested_str_weak(attributestatus2raw), + /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), + /* K31 */ be_nested_str_weak(local_session_id), + /* K32 */ be_nested_str_weak(build_response), + /* K33 */ be_nested_str_weak(message_handler), + /* K34 */ be_nested_str_weak(clear), + /* K35 */ be_nested_str_weak(encode_frame), + /* K36 */ be_nested_str_weak(encrypt), + /* K37 */ be_nested_str_weak(tasmota), /* K38 */ be_nested_str_weak(loglevel), /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), /* K40 */ be_nested_str_weak(message_counter), @@ -2993,7 +2965,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ }), be_str_weak(process_read_request_solo), &be_const_str_solidified, - ( &(const binstruction[251]) { /* code */ + ( &(const binstruction[245]) { /* code */ 0xB80E0200, // 0000 GETNGBL R3 K1 0x880C0702, // 0001 GETMBR R3 R3 K2 0x900A0003, // 0002 SETMBR R2 K0 R3 @@ -3023,228 +2995,222 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x7C180400, // 001A CALL R6 2 0x4C180000, // 001B LDNIL R6 0x20180806, // 001C NE R6 R4 R6 - 0x781A0037, // 001D JMPF R6 #0056 + 0x781A0036, // 001D JMPF R6 #0055 0x8818090D, // 001E GETMBR R6 R4 K13 0x741A0001, // 001F JMPT R6 #0022 0x8818090E, // 0020 GETMBR R6 R4 K14 - 0x781A0019, // 0021 JMPF R6 #003C + 0x781A0018, // 0021 JMPF R6 #003B 0x8C18090F, // 0022 GETMET R6 R4 K15 0x7C180200, // 0023 CALL R6 1 0xB81E0200, // 0024 GETNGBL R7 K1 0x881C0F10, // 0025 GETMBR R7 R7 K16 0x881C0F11, // 0026 GETMBR R7 R7 K17 0x24180C07, // 0027 GT R6 R6 R7 - 0x781A0012, // 0028 JMPF R6 #003C + 0x781A0011, // 0028 JMPF R6 #003B 0x4C100000, // 0029 LDNIL R4 - 0xB81A2400, // 002A GETNGBL R6 K18 - 0x8C180D0B, // 002B GETMET R6 R6 K11 - 0x60200018, // 002C GETGBL R8 G24 - 0x58240013, // 002D LDCONST R9 K19 - 0x7C200200, // 002E CALL R8 1 - 0x58240014, // 002F LDCONST R9 K20 - 0x7C180600, // 0030 CALL R6 3 - 0xB81A0200, // 0031 GETNGBL R6 K1 - 0x88180D15, // 0032 GETMBR R6 R6 K21 - 0x8C180D16, // 0033 GETMET R6 R6 K22 - 0x88200317, // 0034 GETMBR R8 R1 K23 - 0x88240318, // 0035 GETMBR R9 R1 K24 - 0x7C180600, // 0036 CALL R6 3 - 0x8C1C0119, // 0037 GETMET R7 R0 K25 - 0x5C240200, // 0038 MOVE R9 R1 - 0x5C280C00, // 0039 MOVE R10 R6 - 0x7C1C0600, // 003A CALL R7 3 - 0x80040E00, // 003B RET 1 R7 - 0x60180015, // 003C GETGBL R6 G21 - 0x541E002F, // 003D LDINT R7 48 - 0x7C180200, // 003E CALL R6 1 - 0x5C140C00, // 003F MOVE R5 R6 - 0x8C180B1A, // 0040 GETMET R6 R5 K26 - 0x54220014, // 0041 LDINT R8 21 - 0x5824001B, // 0042 LDCONST R9 K27 - 0x7C180600, // 0043 CALL R6 3 - 0x8C180B1A, // 0044 GETMET R6 R5 K26 - 0x54223600, // 0045 LDINT R8 13825 - 0x5425FFFD, // 0046 LDINT R9 -2 - 0x7C180600, // 0047 CALL R6 3 - 0x8C18011C, // 0048 GETMET R6 R0 K28 - 0x5C200A00, // 0049 MOVE R8 R5 - 0x5C240400, // 004A MOVE R9 R2 - 0x5C280800, // 004B MOVE R10 R4 - 0x7C180800, // 004C CALL R6 4 - 0x8C180B1A, // 004D GETMET R6 R5 K26 - 0x5820001D, // 004E LDCONST R8 K29 - 0x5425FFFB, // 004F LDINT R9 -4 - 0x7C180600, // 0050 CALL R6 3 - 0x8C180B1A, // 0051 GETMET R6 R5 K26 - 0x54220017, // 0052 LDINT R8 24 - 0x5824001B, // 0053 LDCONST R9 K27 - 0x7C180600, // 0054 CALL R6 3 - 0x70020029, // 0055 JMP #0080 - 0x88180500, // 0056 GETMBR R6 R2 K0 - 0x4C1C0000, // 0057 LDNIL R7 - 0x20180C07, // 0058 NE R6 R6 R7 - 0x781A0019, // 0059 JMPF R6 #0074 - 0x60180015, // 005A GETGBL R6 G21 - 0x541E002F, // 005B LDINT R7 48 - 0x7C180200, // 005C CALL R6 1 - 0x5C140C00, // 005D MOVE R5 R6 - 0x8C180B1A, // 005E GETMET R6 R5 K26 - 0x54220014, // 005F LDINT R8 21 - 0x5824001B, // 0060 LDCONST R9 K27 - 0x7C180600, // 0061 CALL R6 3 - 0x8C180B1A, // 0062 GETMET R6 R5 K26 - 0x54223600, // 0063 LDINT R8 13825 - 0x5425FFFD, // 0064 LDINT R9 -2 - 0x7C180600, // 0065 CALL R6 3 - 0x8C18011E, // 0066 GETMET R6 R0 K30 - 0x5C200A00, // 0067 MOVE R8 R5 - 0x5C240400, // 0068 MOVE R9 R2 - 0x88280500, // 0069 GETMBR R10 R2 K0 - 0x7C180800, // 006A CALL R6 4 - 0x8C180B1A, // 006B GETMET R6 R5 K26 - 0x5820001D, // 006C LDCONST R8 K29 - 0x5425FFFB, // 006D LDINT R9 -4 - 0x7C180600, // 006E CALL R6 3 - 0x8C180B1A, // 006F GETMET R6 R5 K26 - 0x54220017, // 0070 LDINT R8 24 - 0x5824001B, // 0071 LDCONST R9 K27 - 0x7C180600, // 0072 CALL R6 3 - 0x7002000B, // 0073 JMP #0080 - 0xB81A2400, // 0074 GETNGBL R6 K18 - 0x8C180D0B, // 0075 GETMET R6 R6 K11 - 0x60200018, // 0076 GETGBL R8 G24 - 0x5824001F, // 0077 LDCONST R9 K31 - 0x88280308, // 0078 GETMBR R10 R1 K8 - 0x88281520, // 0079 GETMBR R10 R10 K32 - 0x5C2C0400, // 007A MOVE R11 R2 - 0x7C200600, // 007B CALL R8 3 - 0x58240014, // 007C LDCONST R9 K20 - 0x7C180600, // 007D CALL R6 3 - 0x50180000, // 007E LDBOOL R6 0 0 - 0x80040C00, // 007F RET 1 R6 - 0x8C180321, // 0080 GETMET R6 R1 K33 - 0x54220004, // 0081 LDINT R8 5 - 0x50240200, // 0082 LDBOOL R9 1 0 - 0x7C180600, // 0083 CALL R6 3 - 0x881C0104, // 0084 GETMBR R7 R0 K4 - 0x881C0F22, // 0085 GETMBR R7 R7 K34 - 0x88200317, // 0086 GETMBR R8 R1 K23 - 0x8C241123, // 0087 GETMET R9 R8 K35 - 0x7C240200, // 0088 CALL R9 1 - 0x8C240D24, // 0089 GETMET R9 R6 K36 - 0x5C2C0A00, // 008A MOVE R11 R5 - 0x5C301000, // 008B MOVE R12 R8 - 0x7C240600, // 008C CALL R9 3 - 0x8C240D25, // 008D GETMET R9 R6 K37 - 0x7C240200, // 008E CALL R9 1 - 0xB8262400, // 008F GETNGBL R9 K18 - 0x8C241326, // 0090 GETMET R9 R9 K38 - 0x542E0003, // 0091 LDINT R11 4 - 0x7C240400, // 0092 CALL R9 2 - 0x7826000B, // 0093 JMPF R9 #00A0 - 0xB8262400, // 0094 GETNGBL R9 K18 - 0x8C24130B, // 0095 GETMET R9 R9 K11 - 0x602C0018, // 0096 GETGBL R11 G24 - 0x58300027, // 0097 LDCONST R12 K39 - 0x88340D08, // 0098 GETMBR R13 R6 K8 - 0x88341B20, // 0099 GETMBR R13 R13 K32 - 0x88380D28, // 009A GETMBR R14 R6 K40 - 0x883C0D29, // 009B GETMBR R15 R6 K41 - 0x88400D2A, // 009C GETMBR R16 R6 K42 - 0x7C2C0A00, // 009D CALL R11 5 - 0x54320003, // 009E LDINT R12 4 - 0x7C240600, // 009F CALL R9 3 - 0x8C240F2B, // 00A0 GETMET R9 R7 K43 - 0x5C2C0C00, // 00A1 MOVE R11 R6 - 0x7C240400, // 00A2 CALL R9 2 - 0xB8260200, // 00A3 GETNGBL R9 K1 - 0x8824130A, // 00A4 GETMBR R9 R9 K10 - 0x8C24130B, // 00A5 GETMET R9 R9 K11 - 0x582C002C, // 00A6 LDCONST R11 K44 - 0x7C240400, // 00A7 CALL R9 2 - 0xB8260200, // 00A8 GETNGBL R9 K1 - 0x8C24132D, // 00A9 GETMET R9 R9 K45 - 0x882C052E, // 00AA GETMBR R11 R2 K46 - 0x8830052F, // 00AB GETMBR R12 R2 K47 - 0x7C240600, // 00AC CALL R9 3 - 0x78260002, // 00AD JMPF R9 #00B1 - 0x002A6009, // 00AE ADD R10 K48 R9 - 0x00281531, // 00AF ADD R10 R10 K49 - 0x70020000, // 00B0 JMP #00B2 - 0x58280032, // 00B1 LDCONST R10 K50 - 0x5C241400, // 00B2 MOVE R9 R10 - 0x4C280000, // 00B3 LDNIL R10 - 0x2028080A, // 00B4 NE R10 R4 R10 - 0x782A0013, // 00B5 JMPF R10 #00CA - 0xB82A2400, // 00B6 GETNGBL R10 K18 - 0x8C281526, // 00B7 GETMET R10 R10 K38 - 0x58300014, // 00B8 LDCONST R12 K20 - 0x7C280400, // 00B9 CALL R10 2 - 0x782A000D, // 00BA JMPF R10 #00C9 - 0x8C280933, // 00BB GETMET R10 R4 K51 - 0x7C280200, // 00BC CALL R10 1 - 0xB82E2400, // 00BD GETNGBL R11 K18 - 0x8C2C170B, // 00BE GETMET R11 R11 K11 - 0x60340018, // 00BF GETGBL R13 G24 - 0x58380034, // 00C0 LDCONST R14 K52 - 0x883C0308, // 00C1 GETMBR R15 R1 K8 - 0x883C1F20, // 00C2 GETMBR R15 R15 K32 - 0x5C400400, // 00C3 MOVE R16 R2 - 0x5C441200, // 00C4 MOVE R17 R9 - 0x5C481400, // 00C5 MOVE R18 R10 - 0x7C340A00, // 00C6 CALL R13 5 - 0x58380014, // 00C7 LDCONST R14 K20 - 0x7C2C0600, // 00C8 CALL R11 3 - 0x7002002E, // 00C9 JMP #00F9 + 0xB81A1600, // 002A GETNGBL R6 K11 + 0x601C0018, // 002B GETGBL R7 G24 + 0x58200012, // 002C LDCONST R8 K18 + 0x7C1C0200, // 002D CALL R7 1 + 0x58200013, // 002E LDCONST R8 K19 + 0x7C180400, // 002F CALL R6 2 + 0xB81A0200, // 0030 GETNGBL R6 K1 + 0x88180D14, // 0031 GETMBR R6 R6 K20 + 0x8C180D15, // 0032 GETMET R6 R6 K21 + 0x88200316, // 0033 GETMBR R8 R1 K22 + 0x88240317, // 0034 GETMBR R9 R1 K23 + 0x7C180600, // 0035 CALL R6 3 + 0x8C1C0118, // 0036 GETMET R7 R0 K24 + 0x5C240200, // 0037 MOVE R9 R1 + 0x5C280C00, // 0038 MOVE R10 R6 + 0x7C1C0600, // 0039 CALL R7 3 + 0x80040E00, // 003A RET 1 R7 + 0x60180015, // 003B GETGBL R6 G21 + 0x541E002F, // 003C LDINT R7 48 + 0x7C180200, // 003D CALL R6 1 + 0x5C140C00, // 003E MOVE R5 R6 + 0x8C180B19, // 003F GETMET R6 R5 K25 + 0x54220014, // 0040 LDINT R8 21 + 0x5824001A, // 0041 LDCONST R9 K26 + 0x7C180600, // 0042 CALL R6 3 + 0x8C180B19, // 0043 GETMET R6 R5 K25 + 0x54223600, // 0044 LDINT R8 13825 + 0x5425FFFD, // 0045 LDINT R9 -2 + 0x7C180600, // 0046 CALL R6 3 + 0x8C18011B, // 0047 GETMET R6 R0 K27 + 0x5C200A00, // 0048 MOVE R8 R5 + 0x5C240400, // 0049 MOVE R9 R2 + 0x5C280800, // 004A MOVE R10 R4 + 0x7C180800, // 004B CALL R6 4 + 0x8C180B19, // 004C GETMET R6 R5 K25 + 0x5820001C, // 004D LDCONST R8 K28 + 0x5425FFFB, // 004E LDINT R9 -4 + 0x7C180600, // 004F CALL R6 3 + 0x8C180B19, // 0050 GETMET R6 R5 K25 + 0x54220017, // 0051 LDINT R8 24 + 0x5824001A, // 0052 LDCONST R9 K26 + 0x7C180600, // 0053 CALL R6 3 + 0x70020028, // 0054 JMP #007E + 0x88180500, // 0055 GETMBR R6 R2 K0 + 0x4C1C0000, // 0056 LDNIL R7 + 0x20180C07, // 0057 NE R6 R6 R7 + 0x781A0019, // 0058 JMPF R6 #0073 + 0x60180015, // 0059 GETGBL R6 G21 + 0x541E002F, // 005A LDINT R7 48 + 0x7C180200, // 005B CALL R6 1 + 0x5C140C00, // 005C MOVE R5 R6 + 0x8C180B19, // 005D GETMET R6 R5 K25 + 0x54220014, // 005E LDINT R8 21 + 0x5824001A, // 005F LDCONST R9 K26 + 0x7C180600, // 0060 CALL R6 3 + 0x8C180B19, // 0061 GETMET R6 R5 K25 + 0x54223600, // 0062 LDINT R8 13825 + 0x5425FFFD, // 0063 LDINT R9 -2 + 0x7C180600, // 0064 CALL R6 3 + 0x8C18011D, // 0065 GETMET R6 R0 K29 + 0x5C200A00, // 0066 MOVE R8 R5 + 0x5C240400, // 0067 MOVE R9 R2 + 0x88280500, // 0068 GETMBR R10 R2 K0 + 0x7C180800, // 0069 CALL R6 4 + 0x8C180B19, // 006A GETMET R6 R5 K25 + 0x5820001C, // 006B LDCONST R8 K28 + 0x5425FFFB, // 006C LDINT R9 -4 + 0x7C180600, // 006D CALL R6 3 + 0x8C180B19, // 006E GETMET R6 R5 K25 + 0x54220017, // 006F LDINT R8 24 + 0x5824001A, // 0070 LDCONST R9 K26 + 0x7C180600, // 0071 CALL R6 3 + 0x7002000A, // 0072 JMP #007E + 0xB81A1600, // 0073 GETNGBL R6 K11 + 0x601C0018, // 0074 GETGBL R7 G24 + 0x5820001E, // 0075 LDCONST R8 K30 + 0x88240308, // 0076 GETMBR R9 R1 K8 + 0x8824131F, // 0077 GETMBR R9 R9 K31 + 0x5C280400, // 0078 MOVE R10 R2 + 0x7C1C0600, // 0079 CALL R7 3 + 0x58200013, // 007A LDCONST R8 K19 + 0x7C180400, // 007B CALL R6 2 + 0x50180000, // 007C LDBOOL R6 0 0 + 0x80040C00, // 007D RET 1 R6 + 0x8C180320, // 007E GETMET R6 R1 K32 + 0x54220004, // 007F LDINT R8 5 + 0x50240200, // 0080 LDBOOL R9 1 0 + 0x7C180600, // 0081 CALL R6 3 + 0x881C0104, // 0082 GETMBR R7 R0 K4 + 0x881C0F21, // 0083 GETMBR R7 R7 K33 + 0x88200316, // 0084 GETMBR R8 R1 K22 + 0x8C241122, // 0085 GETMET R9 R8 K34 + 0x7C240200, // 0086 CALL R9 1 + 0x8C240D23, // 0087 GETMET R9 R6 K35 + 0x5C2C0A00, // 0088 MOVE R11 R5 + 0x5C301000, // 0089 MOVE R12 R8 + 0x7C240600, // 008A CALL R9 3 + 0x8C240D24, // 008B GETMET R9 R6 K36 + 0x7C240200, // 008C CALL R9 1 + 0xB8264A00, // 008D GETNGBL R9 K37 + 0x8C241326, // 008E GETMET R9 R9 K38 + 0x542E0003, // 008F LDINT R11 4 + 0x7C240400, // 0090 CALL R9 2 + 0x7826000A, // 0091 JMPF R9 #009D + 0xB8261600, // 0092 GETNGBL R9 K11 + 0x60280018, // 0093 GETGBL R10 G24 + 0x582C0027, // 0094 LDCONST R11 K39 + 0x88300D08, // 0095 GETMBR R12 R6 K8 + 0x8830191F, // 0096 GETMBR R12 R12 K31 + 0x88340D28, // 0097 GETMBR R13 R6 K40 + 0x88380D29, // 0098 GETMBR R14 R6 K41 + 0x883C0D2A, // 0099 GETMBR R15 R6 K42 + 0x7C280A00, // 009A CALL R10 5 + 0x542E0003, // 009B LDINT R11 4 + 0x7C240400, // 009C CALL R9 2 + 0x8C240F2B, // 009D GETMET R9 R7 K43 + 0x5C2C0C00, // 009E MOVE R11 R6 + 0x7C240400, // 009F CALL R9 2 + 0xB8260200, // 00A0 GETNGBL R9 K1 + 0x8824130A, // 00A1 GETMBR R9 R9 K10 + 0x8C24130B, // 00A2 GETMET R9 R9 K11 + 0x582C002C, // 00A3 LDCONST R11 K44 + 0x7C240400, // 00A4 CALL R9 2 + 0xB8260200, // 00A5 GETNGBL R9 K1 + 0x8C24132D, // 00A6 GETMET R9 R9 K45 + 0x882C052E, // 00A7 GETMBR R11 R2 K46 + 0x8830052F, // 00A8 GETMBR R12 R2 K47 + 0x7C240600, // 00A9 CALL R9 3 + 0x78260002, // 00AA JMPF R9 #00AE + 0x002A6009, // 00AB ADD R10 K48 R9 + 0x00281531, // 00AC ADD R10 R10 K49 + 0x70020000, // 00AD JMP #00AF + 0x58280032, // 00AE LDCONST R10 K50 + 0x5C241400, // 00AF MOVE R9 R10 + 0x4C280000, // 00B0 LDNIL R10 + 0x2028080A, // 00B1 NE R10 R4 R10 + 0x782A0012, // 00B2 JMPF R10 #00C6 + 0xB82A4A00, // 00B3 GETNGBL R10 K37 + 0x8C281526, // 00B4 GETMET R10 R10 K38 + 0x58300013, // 00B5 LDCONST R12 K19 + 0x7C280400, // 00B6 CALL R10 2 + 0x782A000C, // 00B7 JMPF R10 #00C5 + 0x8C280933, // 00B8 GETMET R10 R4 K51 + 0x7C280200, // 00B9 CALL R10 1 + 0xB82E1600, // 00BA GETNGBL R11 K11 + 0x60300018, // 00BB GETGBL R12 G24 + 0x58340034, // 00BC LDCONST R13 K52 + 0x88380308, // 00BD GETMBR R14 R1 K8 + 0x88381D1F, // 00BE GETMBR R14 R14 K31 + 0x5C3C0400, // 00BF MOVE R15 R2 + 0x5C401200, // 00C0 MOVE R16 R9 + 0x5C441400, // 00C1 MOVE R17 R10 + 0x7C300A00, // 00C2 CALL R12 5 + 0x58340013, // 00C3 LDCONST R13 K19 + 0x7C2C0400, // 00C4 CALL R11 2 + 0x7002002C, // 00C5 JMP #00F3 + 0x88280500, // 00C6 GETMBR R10 R2 K0 + 0x4C2C0000, // 00C7 LDNIL R11 + 0x2028140B, // 00C8 NE R10 R10 R11 + 0x782A0019, // 00C9 JMPF R10 #00E4 0x88280500, // 00CA GETMBR R10 R2 K0 - 0x4C2C0000, // 00CB LDNIL R11 - 0x2028140B, // 00CC NE R10 R10 R11 - 0x782A001A, // 00CD JMPF R10 #00E9 - 0x88280500, // 00CE GETMBR R10 R2 K0 - 0xB82E0200, // 00CF GETNGBL R11 K1 - 0x882C1706, // 00D0 GETMBR R11 R11 K6 - 0x1C28140B, // 00D1 EQ R10 R10 R11 - 0x782A0001, // 00D2 JMPF R10 #00D5 - 0x58280006, // 00D3 LDCONST R10 K6 - 0x70020000, // 00D4 JMP #00D6 - 0x58280032, // 00D5 LDCONST R10 K50 - 0xB82E2400, // 00D6 GETNGBL R11 K18 - 0x8C2C1726, // 00D7 GETMET R11 R11 K38 - 0x58340014, // 00D8 LDCONST R13 K20 - 0x7C2C0400, // 00D9 CALL R11 2 - 0x782E000C, // 00DA JMPF R11 #00E8 - 0xB82E2400, // 00DB GETNGBL R11 K18 - 0x8C2C170B, // 00DC GETMET R11 R11 K11 - 0x60340018, // 00DD GETGBL R13 G24 - 0x58380035, // 00DE LDCONST R14 K53 - 0x883C0308, // 00DF GETMBR R15 R1 K8 - 0x883C1F20, // 00E0 GETMBR R15 R15 K32 - 0x5C400400, // 00E1 MOVE R16 R2 - 0x5C441200, // 00E2 MOVE R17 R9 - 0x88480500, // 00E3 GETMBR R18 R2 K0 - 0x5C4C1400, // 00E4 MOVE R19 R10 - 0x7C340C00, // 00E5 CALL R13 6 - 0x58380014, // 00E6 LDCONST R14 K20 - 0x7C2C0600, // 00E7 CALL R11 3 - 0x7002000F, // 00E8 JMP #00F9 - 0xB82A2400, // 00E9 GETNGBL R10 K18 - 0x8C281526, // 00EA GETMET R10 R10 K38 - 0x58300014, // 00EB LDCONST R12 K20 - 0x7C280400, // 00EC CALL R10 2 - 0x782A000A, // 00ED JMPF R10 #00F9 - 0xB82A2400, // 00EE GETNGBL R10 K18 - 0x8C28150B, // 00EF GETMET R10 R10 K11 - 0x60300018, // 00F0 GETGBL R12 G24 - 0x58340036, // 00F1 LDCONST R13 K54 - 0x88380308, // 00F2 GETMBR R14 R1 K8 - 0x88381D20, // 00F3 GETMBR R14 R14 K32 - 0x5C3C0400, // 00F4 MOVE R15 R2 - 0x5C401200, // 00F5 MOVE R16 R9 - 0x7C300800, // 00F6 CALL R12 4 - 0x58340014, // 00F7 LDCONST R13 K20 - 0x7C280600, // 00F8 CALL R10 3 - 0x50280200, // 00F9 LDBOOL R10 1 0 - 0x80041400, // 00FA RET 1 R10 + 0xB82E0200, // 00CB GETNGBL R11 K1 + 0x882C1706, // 00CC GETMBR R11 R11 K6 + 0x1C28140B, // 00CD EQ R10 R10 R11 + 0x782A0001, // 00CE JMPF R10 #00D1 + 0x58280006, // 00CF LDCONST R10 K6 + 0x70020000, // 00D0 JMP #00D2 + 0x58280032, // 00D1 LDCONST R10 K50 + 0xB82E4A00, // 00D2 GETNGBL R11 K37 + 0x8C2C1726, // 00D3 GETMET R11 R11 K38 + 0x58340013, // 00D4 LDCONST R13 K19 + 0x7C2C0400, // 00D5 CALL R11 2 + 0x782E000B, // 00D6 JMPF R11 #00E3 + 0xB82E1600, // 00D7 GETNGBL R11 K11 + 0x60300018, // 00D8 GETGBL R12 G24 + 0x58340035, // 00D9 LDCONST R13 K53 + 0x88380308, // 00DA GETMBR R14 R1 K8 + 0x88381D1F, // 00DB GETMBR R14 R14 K31 + 0x5C3C0400, // 00DC MOVE R15 R2 + 0x5C401200, // 00DD MOVE R16 R9 + 0x88440500, // 00DE GETMBR R17 R2 K0 + 0x5C481400, // 00DF MOVE R18 R10 + 0x7C300C00, // 00E0 CALL R12 6 + 0x58340013, // 00E1 LDCONST R13 K19 + 0x7C2C0400, // 00E2 CALL R11 2 + 0x7002000E, // 00E3 JMP #00F3 + 0xB82A4A00, // 00E4 GETNGBL R10 K37 + 0x8C281526, // 00E5 GETMET R10 R10 K38 + 0x58300013, // 00E6 LDCONST R12 K19 + 0x7C280400, // 00E7 CALL R10 2 + 0x782A0009, // 00E8 JMPF R10 #00F3 + 0xB82A1600, // 00E9 GETNGBL R10 K11 + 0x602C0018, // 00EA GETGBL R11 G24 + 0x58300036, // 00EB LDCONST R12 K54 + 0x88340308, // 00EC GETMBR R13 R1 K8 + 0x88341B1F, // 00ED GETMBR R13 R13 K31 + 0x5C380400, // 00EE MOVE R14 R2 + 0x5C3C1200, // 00EF MOVE R15 R9 + 0x7C2C0800, // 00F0 CALL R11 4 + 0x58300013, // 00F1 LDCONST R12 K19 + 0x7C280400, // 00F2 CALL R10 2 + 0x50280200, // 00F3 LDBOOL R10 1 0 + 0x80041400, // 00F4 RET 1 R10 }) ) ); @@ -3257,7 +3223,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_send_enqueued, /* name */ be_nested_proto( - 8, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3265,29 +3231,28 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ + ( &(const bvalue[11]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(send_queue), /* K2 */ be_nested_str_weak(finish), /* K3 */ be_nested_str_weak(ready), /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), - /* K8 */ be_nested_str_weak(resp), - /* K9 */ be_nested_str_weak(exchange_id), - /* K10 */ be_nested_str_weak(remove), - /* K11 */ be_const_int(1), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), + /* K7 */ be_nested_str_weak(resp), + /* K8 */ be_nested_str_weak(exchange_id), + /* K9 */ be_nested_str_weak(remove), + /* K10 */ be_const_int(1), }), be_str_weak(send_enqueued), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ + ( &(const binstruction[33]) { /* code */ 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E001A, // 0005 JMPF R3 #0021 + 0x780E0019, // 0005 JMPF R3 #0020 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 0x88100702, // 0008 GETMBR R4 R3 K2 @@ -3298,24 +3263,23 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0x5C180200, // 000D MOVE R6 R1 0x7C100400, // 000E CALL R4 2 0x88100702, // 000F GETMBR R4 R3 K2 - 0x7812000D, // 0010 JMPF R4 #001F + 0x7812000C, // 0010 JMPF R4 #001E 0xB8120A00, // 0011 GETNGBL R4 K5 - 0x8C100906, // 0012 GETMET R4 R4 K6 - 0x60180008, // 0013 GETGBL R6 G8 - 0x881C0708, // 0014 GETMBR R7 R3 K8 - 0x881C0F09, // 0015 GETMBR R7 R7 K9 - 0x7C180200, // 0016 CALL R6 1 - 0x001A0E06, // 0017 ADD R6 K7 R6 - 0x541E0003, // 0018 LDINT R7 4 - 0x7C100600, // 0019 CALL R4 3 - 0x88100101, // 001A GETMBR R4 R0 K1 - 0x8C10090A, // 001B GETMET R4 R4 K10 - 0x5C180400, // 001C MOVE R6 R2 - 0x7C100400, // 001D CALL R4 2 - 0x70020000, // 001E JMP #0020 - 0x0008050B, // 001F ADD R2 R2 K11 - 0x7001FFDF, // 0020 JMP #0001 - 0x80000000, // 0021 RET 0 + 0x60140008, // 0012 GETGBL R5 G8 + 0x88180707, // 0013 GETMBR R6 R3 K7 + 0x88180D08, // 0014 GETMBR R6 R6 K8 + 0x7C140200, // 0015 CALL R5 1 + 0x00160C05, // 0016 ADD R5 K6 R5 + 0x541A0003, // 0017 LDINT R6 4 + 0x7C100400, // 0018 CALL R4 2 + 0x88100101, // 0019 GETMBR R4 R0 K1 + 0x8C100909, // 001A GETMET R4 R4 K9 + 0x5C180400, // 001B MOVE R6 R2 + 0x7C100400, // 001C CALL R4 2 + 0x70020000, // 001D JMP #001F + 0x0008050A, // 001E ADD R2 R2 K10 + 0x7001FFE0, // 001F JMP #0001 + 0x80000000, // 0020 RET 0 }) ) ); @@ -3445,7 +3409,7 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_subscribe_request, /* name */ be_nested_proto( - 18, /* nstack */ + 17, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3453,7 +3417,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ + ( &(const bvalue[32]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(SubscribeRequestMessage), /* K2 */ be_nested_str_weak(from_TLV), @@ -3470,27 +3434,26 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /* K13 */ be_nested_str_weak(attribute), /* K14 */ be_nested_str_weak(push), /* K15 */ be_nested_str_weak(stop_iteration), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), - /* K19 */ be_nested_str_weak(local_session_id), - /* K20 */ be_nested_str_weak(concat), - /* K21 */ be_nested_str_weak(_X20), - /* K22 */ be_nested_str_weak(min_interval), - /* K23 */ be_nested_str_weak(max_interval), - /* K24 */ be_const_int(1), - /* K25 */ be_const_int(0), - /* K26 */ be_nested_str_weak(subscription_id), - /* K27 */ be_nested_str_weak(fabric_filtered), - /* K28 */ be_const_int(3), - /* K29 */ be_nested_str_weak(event_requests), - /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20event_requests_size_X3D_X25s), - /* K31 */ be_nested_str_weak(_inner_process_read_request), - /* K32 */ be_nested_str_weak(send_subscribe_response), + /* K16 */ be_nested_str_weak(log), + /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), + /* K18 */ be_nested_str_weak(local_session_id), + /* K19 */ be_nested_str_weak(concat), + /* K20 */ be_nested_str_weak(_X20), + /* K21 */ be_nested_str_weak(min_interval), + /* K22 */ be_nested_str_weak(max_interval), + /* K23 */ be_const_int(1), + /* K24 */ be_const_int(0), + /* K25 */ be_nested_str_weak(subscription_id), + /* K26 */ be_nested_str_weak(fabric_filtered), + /* K27 */ be_const_int(3), + /* K28 */ be_nested_str_weak(event_requests), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20event_requests_size_X3D_X25s), + /* K30 */ be_nested_str_weak(_inner_process_read_request), + /* K31 */ be_nested_str_weak(send_subscribe_response), }), be_str_weak(subscribe_request), &be_const_str_solidified, - ( &(const binstruction[101]) { /* code */ + ( &(const binstruction[99]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 @@ -3536,62 +3499,60 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0xAC1C0200, // 002A CATCH R7 1 0 0xB0080000, // 002B RAISE 2 R0 R0 0xB81E2000, // 002C GETNGBL R7 K16 - 0x8C1C0F11, // 002D GETMET R7 R7 K17 - 0x60240018, // 002E GETGBL R9 G24 - 0x58280012, // 002F LDCONST R10 K18 - 0x882C0306, // 0030 GETMBR R11 R1 K6 - 0x882C1713, // 0031 GETMBR R11 R11 K19 - 0x8C300B14, // 0032 GETMET R12 R5 K20 - 0x58380015, // 0033 LDCONST R14 K21 - 0x7C300400, // 0034 CALL R12 2 + 0x60200018, // 002D GETGBL R8 G24 + 0x58240011, // 002E LDCONST R9 K17 + 0x88280306, // 002F GETMBR R10 R1 K6 + 0x88281512, // 0030 GETMBR R10 R10 K18 + 0x8C2C0B13, // 0031 GETMET R11 R5 K19 + 0x58340014, // 0032 LDCONST R13 K20 + 0x7C2C0400, // 0033 CALL R11 2 + 0x88300915, // 0034 GETMBR R12 R4 K21 0x88340916, // 0035 GETMBR R13 R4 K22 - 0x88380917, // 0036 GETMBR R14 R4 K23 - 0x883C0703, // 0037 GETMBR R15 R3 K3 - 0x783E0001, // 0038 JMPF R15 #003B - 0x583C0018, // 0039 LDCONST R15 K24 - 0x70020000, // 003A JMP #003C - 0x583C0019, // 003B LDCONST R15 K25 - 0x8840091A, // 003C GETMBR R16 R4 K26 - 0x8844071B, // 003D GETMBR R17 R3 K27 - 0x7C241000, // 003E CALL R9 8 - 0x5828001C, // 003F LDCONST R10 K28 - 0x7C1C0600, // 0040 CALL R7 3 - 0x881C071D, // 0041 GETMBR R7 R3 K29 - 0x4C200000, // 0042 LDNIL R8 - 0x201C0E08, // 0043 NE R7 R7 R8 - 0x781E0010, // 0044 JMPF R7 #0056 - 0x601C000C, // 0045 GETGBL R7 G12 - 0x8820071D, // 0046 GETMBR R8 R3 K29 - 0x7C1C0200, // 0047 CALL R7 1 - 0x241C0F19, // 0048 GT R7 R7 K25 - 0x781E000B, // 0049 JMPF R7 #0056 - 0xB81E2000, // 004A GETNGBL R7 K16 - 0x8C1C0F11, // 004B GETMET R7 R7 K17 - 0x60240018, // 004C GETGBL R9 G24 - 0x5828001E, // 004D LDCONST R10 K30 - 0x882C0306, // 004E GETMBR R11 R1 K6 - 0x882C1713, // 004F GETMBR R11 R11 K19 - 0x6030000C, // 0050 GETGBL R12 G12 - 0x8834071D, // 0051 GETMBR R13 R3 K29 - 0x7C300200, // 0052 CALL R12 1 - 0x7C240600, // 0053 CALL R9 3 - 0x5828001C, // 0054 LDCONST R10 K28 - 0x7C1C0600, // 0055 CALL R7 3 - 0x8C1C011F, // 0056 GETMET R7 R0 K31 - 0x88240306, // 0057 GETMBR R9 R1 K6 - 0x5C280600, // 0058 MOVE R10 R3 - 0x5C2C0200, // 0059 MOVE R11 R1 - 0x50300200, // 005A LDBOOL R12 1 0 - 0x7C1C0A00, // 005B CALL R7 5 - 0x8820091A, // 005C GETMBR R8 R4 K26 - 0x901E3408, // 005D SETMBR R7 K26 R8 - 0x8C200120, // 005E GETMET R8 R0 K32 - 0x5C280200, // 005F MOVE R10 R1 - 0x5C2C0E00, // 0060 MOVE R11 R7 - 0x5C300800, // 0061 MOVE R12 R4 - 0x7C200800, // 0062 CALL R8 4 - 0x50200200, // 0063 LDBOOL R8 1 0 - 0x80041000, // 0064 RET 1 R8 + 0x88380703, // 0036 GETMBR R14 R3 K3 + 0x783A0001, // 0037 JMPF R14 #003A + 0x58380017, // 0038 LDCONST R14 K23 + 0x70020000, // 0039 JMP #003B + 0x58380018, // 003A LDCONST R14 K24 + 0x883C0919, // 003B GETMBR R15 R4 K25 + 0x8840071A, // 003C GETMBR R16 R3 K26 + 0x7C201000, // 003D CALL R8 8 + 0x5824001B, // 003E LDCONST R9 K27 + 0x7C1C0400, // 003F CALL R7 2 + 0x881C071C, // 0040 GETMBR R7 R3 K28 + 0x4C200000, // 0041 LDNIL R8 + 0x201C0E08, // 0042 NE R7 R7 R8 + 0x781E000F, // 0043 JMPF R7 #0054 + 0x601C000C, // 0044 GETGBL R7 G12 + 0x8820071C, // 0045 GETMBR R8 R3 K28 + 0x7C1C0200, // 0046 CALL R7 1 + 0x241C0F18, // 0047 GT R7 R7 K24 + 0x781E000A, // 0048 JMPF R7 #0054 + 0xB81E2000, // 0049 GETNGBL R7 K16 + 0x60200018, // 004A GETGBL R8 G24 + 0x5824001D, // 004B LDCONST R9 K29 + 0x88280306, // 004C GETMBR R10 R1 K6 + 0x88281512, // 004D GETMBR R10 R10 K18 + 0x602C000C, // 004E GETGBL R11 G12 + 0x8830071C, // 004F GETMBR R12 R3 K28 + 0x7C2C0200, // 0050 CALL R11 1 + 0x7C200600, // 0051 CALL R8 3 + 0x5824001B, // 0052 LDCONST R9 K27 + 0x7C1C0400, // 0053 CALL R7 2 + 0x8C1C011E, // 0054 GETMET R7 R0 K30 + 0x88240306, // 0055 GETMBR R9 R1 K6 + 0x5C280600, // 0056 MOVE R10 R3 + 0x5C2C0200, // 0057 MOVE R11 R1 + 0x50300200, // 0058 LDBOOL R12 1 0 + 0x7C1C0A00, // 0059 CALL R7 5 + 0x88200919, // 005A GETMBR R8 R4 K25 + 0x901E3208, // 005B SETMBR R7 K25 R8 + 0x8C20011F, // 005C GETMET R8 R0 K31 + 0x5C280200, // 005D MOVE R10 R1 + 0x5C2C0E00, // 005E MOVE R11 R7 + 0x5C300800, // 005F MOVE R12 R4 + 0x7C200800, // 0060 CALL R8 4 + 0x50200200, // 0061 LDBOOL R8 1 0 + 0x80041000, // 0062 RET 1 R8 }) ) ); @@ -3612,61 +3573,59 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K4 */ be_nested_str_weak(local_session_id), - /* K5 */ be_nested_str_weak(subscription_id), - /* K6 */ be_const_int(3), - /* K7 */ be_nested_str_weak(is_keep_alive), - /* K8 */ be_nested_str_weak(matter), - /* K9 */ be_nested_str_weak(ReportDataMessage), - /* K10 */ be_nested_str_weak(suppress_response), - /* K11 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K12 */ be_nested_str_weak(_message_handler), - /* K13 */ be_nested_str_weak(send_queue), - /* K14 */ be_nested_str_weak(push), - /* K15 */ be_nested_str_weak(send_enqueued), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K3 */ be_nested_str_weak(local_session_id), + /* K4 */ be_nested_str_weak(subscription_id), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(is_keep_alive), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(ReportDataMessage), + /* K9 */ be_nested_str_weak(suppress_response), + /* K10 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K11 */ be_nested_str_weak(_message_handler), + /* K12 */ be_nested_str_weak(send_queue), + /* K13 */ be_nested_str_weak(push), + /* K14 */ be_nested_str_weak(send_enqueued), }), be_str_weak(send_subscribe_heartbeat), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ + ( &(const binstruction[33]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x60140018, // 0003 GETGBL R5 G24 - 0x58180003, // 0004 LDCONST R6 K3 - 0x881C0504, // 0005 GETMBR R7 R2 K4 - 0x88200305, // 0006 GETMBR R8 R1 K5 - 0x7C140600, // 0007 CALL R5 3 - 0x58180006, // 0008 LDCONST R6 K6 - 0x7C0C0600, // 0009 CALL R3 3 - 0x500C0200, // 000A LDBOOL R3 1 0 - 0x90060E03, // 000B SETMBR R1 K7 R3 - 0xB80E1000, // 000C GETNGBL R3 K8 - 0x8C0C0709, // 000D GETMET R3 R3 K9 - 0x7C0C0200, // 000E CALL R3 1 - 0x50100200, // 000F LDBOOL R4 1 0 - 0x900E1404, // 0010 SETMBR R3 K10 R4 - 0x88100305, // 0011 GETMBR R4 R1 K5 - 0x900E0A04, // 0012 SETMBR R3 K5 R4 - 0xB8121000, // 0013 GETNGBL R4 K8 - 0x8C10090B, // 0014 GETMET R4 R4 K11 - 0x8818050C, // 0015 GETMBR R6 R2 K12 - 0x5C1C0400, // 0016 MOVE R7 R2 - 0x5C200600, // 0017 MOVE R8 R3 - 0x5C240200, // 0018 MOVE R9 R1 - 0x7C100A00, // 0019 CALL R4 5 - 0x8814010D, // 001A GETMBR R5 R0 K13 - 0x8C140B0E, // 001B GETMET R5 R5 K14 - 0x5C1C0800, // 001C MOVE R7 R4 - 0x7C140400, // 001D CALL R5 2 - 0x8C14010F, // 001E GETMET R5 R0 K15 - 0x881C050C, // 001F GETMBR R7 R2 K12 - 0x7C140400, // 0020 CALL R5 2 - 0x80000000, // 0021 RET 0 + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140002, // 0003 LDCONST R5 K2 + 0x88180503, // 0004 GETMBR R6 R2 K3 + 0x881C0304, // 0005 GETMBR R7 R1 K4 + 0x7C100600, // 0006 CALL R4 3 + 0x58140005, // 0007 LDCONST R5 K5 + 0x7C0C0400, // 0008 CALL R3 2 + 0x500C0200, // 0009 LDBOOL R3 1 0 + 0x90060C03, // 000A SETMBR R1 K6 R3 + 0xB80E0E00, // 000B GETNGBL R3 K7 + 0x8C0C0708, // 000C GETMET R3 R3 K8 + 0x7C0C0200, // 000D CALL R3 1 + 0x50100200, // 000E LDBOOL R4 1 0 + 0x900E1204, // 000F SETMBR R3 K9 R4 + 0x88100304, // 0010 GETMBR R4 R1 K4 + 0x900E0804, // 0011 SETMBR R3 K4 R4 + 0xB8120E00, // 0012 GETNGBL R4 K7 + 0x8C10090A, // 0013 GETMET R4 R4 K10 + 0x8818050B, // 0014 GETMBR R6 R2 K11 + 0x5C1C0400, // 0015 MOVE R7 R2 + 0x5C200600, // 0016 MOVE R8 R3 + 0x5C240200, // 0017 MOVE R9 R1 + 0x7C100A00, // 0018 CALL R4 5 + 0x8814010C, // 0019 GETMBR R5 R0 K12 + 0x8C140B0D, // 001A GETMET R5 R5 K13 + 0x5C1C0800, // 001B MOVE R7 R4 + 0x7C140400, // 001C CALL R5 2 + 0x8C14010E, // 001D GETMET R5 R0 K14 + 0x881C050B, // 001E GETMBR R7 R2 K11 + 0x7C140400, // 001F CALL R5 2 + 0x80000000, // 0020 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 95e1edc55..0daab0c27 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -74,7 +74,7 @@ be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_send_im, /* name */ be_nested_proto( - 13, /* nstack */ + 12, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -105,7 +105,7 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */ }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ + ( &(const binstruction[39]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -125,27 +125,26 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */ 0x8C140B08, // 0010 GETMET R5 R5 K8 0x541E0003, // 0011 LDINT R7 4 0x7C140400, // 0012 CALL R5 2 - 0x7816000B, // 0013 JMPF R5 #0020 - 0xB8160E00, // 0014 GETNGBL R5 K7 - 0x8C140B09, // 0015 GETMET R5 R5 K9 - 0x601C0018, // 0016 GETGBL R7 G24 - 0x5820000A, // 0017 LDCONST R8 K10 - 0x8824050B, // 0018 GETMBR R9 R2 K11 - 0x8824130C, // 0019 GETMBR R9 R9 K12 - 0x8828050D, // 001A GETMBR R10 R2 K13 - 0x882C050E, // 001B GETMBR R11 R2 K14 - 0x8830050F, // 001C GETMBR R12 R2 K15 - 0x7C1C0A00, // 001D CALL R7 5 - 0x54220003, // 001E LDINT R8 4 - 0x7C140600, // 001F CALL R5 3 - 0x8C140310, // 0020 GETMET R5 R1 K16 - 0x5C1C0400, // 0021 MOVE R7 R2 - 0x7C140400, // 0022 CALL R5 2 - 0x8814050D, // 0023 GETMBR R5 R2 K13 - 0x90022205, // 0024 SETMBR R0 K17 R5 - 0x50140200, // 0025 LDBOOL R5 1 0 - 0x90022405, // 0026 SETMBR R0 K18 R5 - 0x80000000, // 0027 RET 0 + 0x7816000A, // 0013 JMPF R5 #001F + 0xB8161200, // 0014 GETNGBL R5 K9 + 0x60180018, // 0015 GETGBL R6 G24 + 0x581C000A, // 0016 LDCONST R7 K10 + 0x8820050B, // 0017 GETMBR R8 R2 K11 + 0x8820110C, // 0018 GETMBR R8 R8 K12 + 0x8824050D, // 0019 GETMBR R9 R2 K13 + 0x8828050E, // 001A GETMBR R10 R2 K14 + 0x882C050F, // 001B GETMBR R11 R2 K15 + 0x7C180A00, // 001C CALL R6 5 + 0x541E0003, // 001D LDINT R7 4 + 0x7C140400, // 001E CALL R5 2 + 0x8C140310, // 001F GETMET R5 R1 K16 + 0x5C1C0400, // 0020 MOVE R7 R2 + 0x7C140400, // 0021 CALL R5 2 + 0x8814050D, // 0022 GETMBR R5 R2 K13 + 0x90022205, // 0023 SETMBR R0 K17 R5 + 0x50140200, // 0024 LDBOOL R5 1 0 + 0x90022405, // 0025 SETMBR R0 K18 R5 + 0x80000000, // 0026 RET 0 }) ) ); @@ -763,7 +762,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_ack_received, /* name */ extern const bclass be_class_Matter_IM_ReportDataSubscribed; be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -796,7 +795,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[74]) { /* code */ + ( &(const binstruction[73]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -806,7 +805,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ 0x880C0702, // 0006 GETMBR R3 R3 K2 0x7C080200, // 0007 CALL R2 1 0x24080503, // 0008 GT R2 R2 K3 - 0x780A0031, // 0009 JMPF R2 #003C + 0x780A0030, // 0009 JMPF R2 #003B 0x88080104, // 000A GETMBR R2 R0 K4 0x780A000F, // 000B JMPF R2 #001C 0x60080003, // 000C GETGBL R2 G3 @@ -824,7 +823,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ 0x90020002, // 0018 SETMBR R0 K0 R2 0x50080000, // 0019 LDBOOL R2 0 0 0x90020C02, // 001A SETMBR R0 K6 R2 - 0x7002001E, // 001B JMP #003B + 0x7002001D, // 001B JMP #003A 0x88080107, // 001C GETMBR R2 R0 K7 0x8C080508, // 001D GETMET R2 R2 K8 0x50100000, // 001E LDBOOL R4 0 0 @@ -837,40 +836,39 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ 0x8C0C070C, // 0025 GETMET R3 R3 K12 0x54160003, // 0026 LDINT R5 4 0x7C0C0400, // 0027 CALL R3 2 - 0x780E000A, // 0028 JMPF R3 #0034 - 0xB80E1600, // 0029 GETNGBL R3 K11 - 0x8C0C070D, // 002A GETMET R3 R3 K13 - 0x60140018, // 002B GETGBL R5 G24 - 0x5818000E, // 002C LDCONST R6 K14 - 0x881C050F, // 002D GETMBR R7 R2 K15 - 0x881C0F10, // 002E GETMBR R7 R7 K16 - 0x88200511, // 002F GETMBR R8 R2 K17 - 0x88240512, // 0030 GETMBR R9 R2 K18 - 0x7C140800, // 0031 CALL R5 4 - 0x541A0003, // 0032 LDINT R6 4 - 0x7C0C0600, // 0033 CALL R3 3 - 0x8C0C0313, // 0034 GETMET R3 R1 K19 - 0x5C140400, // 0035 MOVE R5 R2 - 0x7C0C0400, // 0036 CALL R3 2 - 0x880C0512, // 0037 GETMBR R3 R2 K18 - 0x90022803, // 0038 SETMBR R0 K20 R3 - 0x500C0200, // 0039 LDBOOL R3 1 0 - 0x90020C03, // 003A SETMBR R0 K6 R3 - 0x7002000C, // 003B JMP #0049 - 0x88080104, // 003C GETMBR R2 R0 K4 - 0x780A0008, // 003D JMPF R2 #0047 - 0x60080003, // 003E GETGBL R2 G3 - 0x5C0C0000, // 003F MOVE R3 R0 - 0x7C080200, // 0040 CALL R2 1 - 0x8C080505, // 0041 GETMET R2 R2 K5 - 0x5C100200, // 0042 MOVE R4 R1 - 0x7C080400, // 0043 CALL R2 2 - 0x50080000, // 0044 LDBOOL R2 0 0 - 0x90020802, // 0045 SETMBR R0 K4 R2 - 0x70020001, // 0046 JMP #0049 - 0x50080200, // 0047 LDBOOL R2 1 0 - 0x90020C02, // 0048 SETMBR R0 K6 R2 - 0x80000000, // 0049 RET 0 + 0x780E0009, // 0028 JMPF R3 #0033 + 0xB80E1A00, // 0029 GETNGBL R3 K13 + 0x60100018, // 002A GETGBL R4 G24 + 0x5814000E, // 002B LDCONST R5 K14 + 0x8818050F, // 002C GETMBR R6 R2 K15 + 0x88180D10, // 002D GETMBR R6 R6 K16 + 0x881C0511, // 002E GETMBR R7 R2 K17 + 0x88200512, // 002F GETMBR R8 R2 K18 + 0x7C100800, // 0030 CALL R4 4 + 0x54160003, // 0031 LDINT R5 4 + 0x7C0C0400, // 0032 CALL R3 2 + 0x8C0C0313, // 0033 GETMET R3 R1 K19 + 0x5C140400, // 0034 MOVE R5 R2 + 0x7C0C0400, // 0035 CALL R3 2 + 0x880C0512, // 0036 GETMBR R3 R2 K18 + 0x90022803, // 0037 SETMBR R0 K20 R3 + 0x500C0200, // 0038 LDBOOL R3 1 0 + 0x90020C03, // 0039 SETMBR R0 K6 R3 + 0x7002000C, // 003A JMP #0048 + 0x88080104, // 003B GETMBR R2 R0 K4 + 0x780A0008, // 003C JMPF R2 #0046 + 0x60080003, // 003D GETGBL R2 G3 + 0x5C0C0000, // 003E MOVE R3 R0 + 0x7C080200, // 003F CALL R2 1 + 0x8C080505, // 0040 GETMET R2 R2 K5 + 0x5C100200, // 0041 MOVE R4 R1 + 0x7C080400, // 0042 CALL R2 2 + 0x50080000, // 0043 LDBOOL R2 0 0 + 0x90020802, // 0044 SETMBR R0 K4 R2 + 0x70020001, // 0045 JMP #0048 + 0x50080200, // 0046 LDBOOL R2 1 0 + 0x90020C02, // 0047 SETMBR R0 K6 R2 + 0x80000000, // 0048 RET 0 }) ) ); @@ -1361,7 +1359,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_init, /* name */ extern const bclass be_class_Matter_IM_SubscribeResponse; be_local_closure(class_Matter_IM_SubscribeResponse_status_ok_received, /* name */ be_nested_proto( - 8, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1383,30 +1381,29 @@ be_local_closure(class_Matter_IM_SubscribeResponse_status_ok_received, /* name }), be_str_weak(status_ok_received), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ + ( &(const binstruction[22]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x58100002, // 0002 LDCONST R4 K2 0x7C080400, // 0003 CALL R2 2 - 0x780A000A, // 0004 JMPF R2 #0010 - 0xB80A0000, // 0005 GETNGBL R2 K0 - 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x60100018, // 0007 GETGBL R4 G24 - 0x58140004, // 0008 LDCONST R5 K4 - 0x88180305, // 0009 GETMBR R6 R1 K5 - 0x88180D06, // 000A GETMBR R6 R6 K6 - 0x881C0107, // 000B GETMBR R7 R0 K7 - 0x881C0F08, // 000C GETMBR R7 R7 K8 - 0x7C100600, // 000D CALL R4 3 - 0x58140002, // 000E LDCONST R5 K2 - 0x7C080600, // 000F CALL R2 3 - 0x60080003, // 0010 GETGBL R2 G3 - 0x5C0C0000, // 0011 MOVE R3 R0 - 0x7C080200, // 0012 CALL R2 1 - 0x8C080509, // 0013 GETMET R2 R2 K9 - 0x5C100200, // 0014 MOVE R4 R1 - 0x7C080400, // 0015 CALL R2 2 - 0x80040400, // 0016 RET 1 R2 + 0x780A0009, // 0004 JMPF R2 #000F + 0xB80A0600, // 0005 GETNGBL R2 K3 + 0x600C0018, // 0006 GETGBL R3 G24 + 0x58100004, // 0007 LDCONST R4 K4 + 0x88140305, // 0008 GETMBR R5 R1 K5 + 0x88140B06, // 0009 GETMBR R5 R5 K6 + 0x88180107, // 000A GETMBR R6 R0 K7 + 0x88180D08, // 000B GETMBR R6 R6 K8 + 0x7C0C0600, // 000C CALL R3 3 + 0x58100002, // 000D LDCONST R4 K2 + 0x7C080400, // 000E CALL R2 2 + 0x60080003, // 000F GETGBL R2 G3 + 0x5C0C0000, // 0010 MOVE R3 R0 + 0x7C080200, // 0011 CALL R2 1 + 0x8C080509, // 0012 GETMET R2 R2 K9 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x80040400, // 0015 RET 1 R2 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h index 0f715f024..e10ec8aee 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h @@ -180,7 +180,7 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -188,31 +188,29 @@ be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Subscription, 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), - /* K3 */ be_nested_str_weak(subscription_id), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(subs_shop), - /* K6 */ be_nested_str_weak(remove_sub), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), + /* K2 */ be_nested_str_weak(subscription_id), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(subs_shop), + /* K5 */ be_nested_str_weak(remove_sub), }), be_str_weak(remove_self), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ + ( &(const binstruction[12]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x600C0008, // 0002 GETGBL R3 G8 - 0x88100103, // 0003 GETMBR R4 R0 K3 - 0x7C0C0200, // 0004 CALL R3 1 - 0x000E0403, // 0005 ADD R3 K2 R3 - 0x58100004, // 0006 LDCONST R4 K4 - 0x7C040600, // 0007 CALL R1 3 - 0x88040105, // 0008 GETMBR R1 R0 K5 - 0x8C040306, // 0009 GETMET R1 R1 K6 - 0x5C0C0000, // 000A MOVE R3 R0 - 0x7C040400, // 000B CALL R1 2 - 0x80000000, // 000C RET 0 + 0x60080008, // 0001 GETGBL R2 G8 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C080200, // 0003 CALL R2 1 + 0x000A0202, // 0004 ADD R2 K1 R2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x7C040400, // 0006 CALL R1 2 + 0x88040104, // 0007 GETMBR R1 R0 K4 + 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x5C0C0000, // 0009 MOVE R3 R0 + 0x7C040400, // 000A CALL R1 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -329,7 +327,7 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name * extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -355,7 +353,7 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ }), be_str_weak(re_arm), &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ + ( &(const binstruction[28]) { /* code */ 0x50040000, // 0000 LDBOOL R1 0 0 0x90020001, // 0001 SETMBR R0 K0 R1 0xB8060200, // 0002 GETNGBL R1 K1 @@ -375,16 +373,15 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ 0x04080508, // 0010 SUB R2 R2 K8 0x90020C02, // 0011 SETMBR R0 K6 R2 0x88080109, // 0012 GETMBR R2 R0 K9 - 0x740A0007, // 0013 JMPT R2 #001C - 0xB80A0200, // 0014 GETNGBL R2 K1 - 0x8C08050A, // 0015 GETMET R2 R2 K10 - 0x60100018, // 0016 GETGBL R4 G24 - 0x5814000B, // 0017 LDCONST R5 K11 - 0x8818010C, // 0018 GETMBR R6 R0 K12 - 0x7C100400, // 0019 CALL R4 2 - 0x5814000D, // 001A LDCONST R5 K13 - 0x7C080600, // 001B CALL R2 3 - 0x80000000, // 001C RET 0 + 0x740A0006, // 0013 JMPT R2 #001B + 0xB80A1400, // 0014 GETNGBL R2 K10 + 0x600C0018, // 0015 GETGBL R3 G24 + 0x5810000B, // 0016 LDCONST R4 K11 + 0x8814010C, // 0017 GETMBR R5 R0 K12 + 0x7C0C0400, // 0018 CALL R3 2 + 0x5810000D, // 0019 LDCONST R4 K13 + 0x7C080400, // 001A CALL R2 2 + 0x80000000, // 001B RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index fdbb70859..22bb7bc99 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -458,7 +458,7 @@ be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_build_response, /* name */ be_nested_proto( - 11, /* nstack */ + 10, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -466,7 +466,7 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0, /* has sup protos */ &be_class_Matter_Frame, 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ + ( &(const bvalue[29]) { /* constants */ /* K0 */ be_nested_str_weak(message_handler), /* K1 */ be_nested_str_weak(remote_ip), /* K2 */ be_nested_str_weak(remote_port), @@ -493,14 +493,13 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ /* K23 */ be_nested_str_weak(matter), /* K24 */ be_nested_str_weak(get_opcode_name), /* K25 */ be_nested_str_weak(0x_X2502X), - /* K26 */ be_nested_str_weak(tasmota), - /* K27 */ be_nested_str_weak(log), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), - /* K29 */ be_const_int(3), + /* K26 */ be_nested_str_weak(log), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), + /* K28 */ be_const_int(3), }), be_str_weak(build_response), &be_const_str_solidified, - ( &(const binstruction[91]) { /* code */ + ( &(const binstruction[90]) { /* code */ 0x4C100000, // 0000 LDNIL R4 0x1C100604, // 0001 EQ R4 R3 R4 0x78120005, // 0002 JMPF R4 #0009 @@ -569,7 +568,7 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x900E2804, // 0041 SETMBR R3 K20 R4 0x8810070A, // 0042 GETMBR R4 R3 K10 0x1C100908, // 0043 EQ R4 R4 K8 - 0x78120014, // 0044 JMPF R4 #005A + 0x78120013, // 0044 JMPF R4 #0059 0xB8122E00, // 0045 GETNGBL R4 K23 0x8C100918, // 0046 GETMET R4 R4 K24 0x88180711, // 0047 GETMBR R6 R3 K17 @@ -582,16 +581,15 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x7C140400, // 004E CALL R5 2 0x5C100A00, // 004F MOVE R4 R5 0xB8163400, // 0050 GETNGBL R5 K26 - 0x8C140B1B, // 0051 GETMET R5 R5 K27 - 0x601C0018, // 0052 GETGBL R7 G24 - 0x5820001C, // 0053 LDCONST R8 K28 - 0x88240709, // 0054 GETMBR R9 R3 K9 - 0x8824130A, // 0055 GETMBR R9 R9 K10 - 0x5C280800, // 0056 MOVE R10 R4 - 0x7C1C0600, // 0057 CALL R7 3 - 0x5820001D, // 0058 LDCONST R8 K29 - 0x7C140600, // 0059 CALL R5 3 - 0x80040600, // 005A RET 1 R3 + 0x60180018, // 0051 GETGBL R6 G24 + 0x581C001B, // 0052 LDCONST R7 K27 + 0x88200709, // 0053 GETMBR R8 R3 K9 + 0x8820110A, // 0054 GETMBR R8 R8 K10 + 0x5C240800, // 0055 MOVE R9 R4 + 0x7C180600, // 0056 CALL R6 3 + 0x581C001C, // 0057 LDCONST R7 K28 + 0x7C140400, // 0058 CALL R5 2 + 0x80040600, // 0059 RET 1 R3 }) ) ); @@ -1044,41 +1042,40 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0, /* has sup protos */ &be_class_Matter_Frame, 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ + ( &(const bvalue[29]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(raw), /* K3 */ be_nested_str_weak(payload_idx), /* K4 */ be_nested_str_weak(get_i2r), /* K5 */ be_nested_str_weak(sec_p), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(get_i2r_privacy), - /* K11 */ be_const_int(2147483647), - /* K12 */ be_nested_str_weak(add), - /* K13 */ be_nested_str_weak(local_session_id), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(AES_CTR), - /* K16 */ be_nested_str_weak(decrypt), - /* K17 */ be_const_int(0), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(message_handler), - /* K20 */ be_nested_str_weak(_n_bytes), - /* K21 */ be_nested_str_weak(clear), - /* K22 */ be_nested_str_weak(flags), - /* K23 */ be_nested_str_weak(message_counter), - /* K24 */ be_nested_str_weak(source_node_id), - /* K25 */ be_nested_str_weak(peer_node_id), - /* K26 */ be_nested_str_weak(resize), - /* K27 */ be_nested_str_weak(AES_CCM), - /* K28 */ be_nested_str_weak(decrypt1), - /* K29 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(get_i2r_privacy), + /* K10 */ be_const_int(2147483647), + /* K11 */ be_nested_str_weak(add), + /* K12 */ be_nested_str_weak(local_session_id), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(AES_CTR), + /* K15 */ be_nested_str_weak(decrypt), + /* K16 */ be_const_int(0), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(message_handler), + /* K19 */ be_nested_str_weak(_n_bytes), + /* K20 */ be_nested_str_weak(clear), + /* K21 */ be_nested_str_weak(flags), + /* K22 */ be_nested_str_weak(message_counter), + /* K23 */ be_nested_str_weak(source_node_id), + /* K24 */ be_nested_str_weak(peer_node_id), + /* K25 */ be_nested_str_weak(resize), + /* K26 */ be_nested_str_weak(AES_CCM), + /* K27 */ be_nested_str_weak(decrypt1), + /* K28 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), }), be_str_weak(decrypt), &be_const_str_solidified, - ( &(const binstruction[117]) { /* code */ + ( &(const binstruction[115]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x88080101, // 0001 GETMBR R2 R0 K1 0x880C0102, // 0002 GETMBR R3 R0 K2 @@ -1087,115 +1084,113 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x8C180504, // 0005 GETMET R6 R2 K4 0x7C180200, // 0006 CALL R6 1 0x881C0105, // 0007 GETMBR R7 R0 K5 - 0x781E002C, // 0008 JMPF R7 #0036 + 0x781E002B, // 0008 JMPF R7 #0035 0xB81E0C00, // 0009 GETNGBL R7 K6 - 0x8C1C0F07, // 000A GETMET R7 R7 K7 + 0x58200007, // 000A LDCONST R8 K7 0x58240008, // 000B LDCONST R9 K8 - 0x58280009, // 000C LDCONST R10 K9 - 0x7C1C0600, // 000D CALL R7 3 - 0x8C1C050A, // 000E GETMET R7 R2 K10 - 0x7C1C0200, // 000F CALL R7 1 - 0x5421FFEF, // 0010 LDINT R8 -16 - 0x4020110B, // 0011 CONNECT R8 R8 K11 - 0x94200608, // 0012 GETIDX R8 R3 R8 - 0x60240015, // 0013 GETGBL R9 G21 - 0x7C240000, // 0014 CALL R9 0 - 0x8C24130C, // 0015 GETMET R9 R9 K12 - 0x882C010D, // 0016 GETMBR R11 R0 K13 - 0x5431FFFD, // 0017 LDINT R12 -2 - 0x7C240600, // 0018 CALL R9 3 - 0x542A0004, // 0019 LDINT R10 5 - 0x542E000E, // 001A LDINT R11 15 - 0x4028140B, // 001B CONNECT R10 R10 R11 - 0x9428100A, // 001C GETIDX R10 R8 R10 - 0x0024120A, // 001D ADD R9 R9 R10 - 0x542A0003, // 001E LDINT R10 4 - 0x882C0103, // 001F GETMBR R11 R0 K3 - 0x042C170E, // 0020 SUB R11 R11 K14 - 0x4028140B, // 0021 CONNECT R10 R10 R11 - 0x882C0102, // 0022 GETMBR R11 R0 K2 - 0x9428160A, // 0023 GETIDX R10 R11 R10 - 0x8C30030F, // 0024 GETMET R12 R1 K15 - 0x5C380E00, // 0025 MOVE R14 R7 - 0x7C300400, // 0026 CALL R12 2 - 0x8C301910, // 0027 GETMET R12 R12 K16 - 0x5C381400, // 0028 MOVE R14 R10 - 0x5C3C1200, // 0029 MOVE R15 R9 - 0x58400009, // 002A LDCONST R16 K9 - 0x7C300800, // 002B CALL R12 4 - 0x5C2C1800, // 002C MOVE R11 R12 - 0x40322312, // 002D CONNECT R12 K17 K18 - 0x88340102, // 002E GETMBR R13 R0 K2 - 0x94301A0C, // 002F GETIDX R12 R13 R12 - 0x0030180B, // 0030 ADD R12 R12 R11 - 0x88340103, // 0031 GETMBR R13 R0 K3 - 0x40341B0B, // 0032 CONNECT R13 R13 K11 - 0x9434140D, // 0033 GETIDX R13 R10 R13 - 0x0030180D, // 0034 ADD R12 R12 R13 - 0x9002040C, // 0035 SETMBR R0 K2 R12 - 0x881C0113, // 0036 GETMBR R7 R0 K19 - 0x881C0F14, // 0037 GETMBR R7 R7 K20 - 0x8C200F15, // 0038 GETMET R8 R7 K21 - 0x7C200200, // 0039 CALL R8 1 - 0x8C200F0C, // 003A GETMET R8 R7 K12 - 0x88280116, // 003B GETMBR R10 R0 K22 - 0x582C000E, // 003C LDCONST R11 K14 - 0x7C200600, // 003D CALL R8 3 - 0x8C200F0C, // 003E GETMET R8 R7 K12 - 0x88280117, // 003F GETMBR R10 R0 K23 - 0x542E0003, // 0040 LDINT R11 4 - 0x7C200600, // 0041 CALL R8 3 - 0x88200118, // 0042 GETMBR R8 R0 K24 - 0x78220002, // 0043 JMPF R8 #0047 - 0x88200118, // 0044 GETMBR R8 R0 K24 - 0x40200E08, // 0045 CONNECT R8 R7 R8 - 0x70020006, // 0046 JMP #004E - 0x88200519, // 0047 GETMBR R8 R2 K25 - 0x78220001, // 0048 JMPF R8 #004B - 0x88200519, // 0049 GETMBR R8 R2 K25 - 0x40200E08, // 004A CONNECT R8 R7 R8 - 0x8C200F1A, // 004B GETMET R8 R7 K26 - 0x542A000C, // 004C LDINT R10 13 - 0x7C200400, // 004D CALL R8 2 - 0x8820031B, // 004E GETMBR R8 R1 K27 - 0x8C20111C, // 004F GETMET R8 R8 K28 - 0x5C280C00, // 0050 MOVE R10 R6 - 0x5C2C0E00, // 0051 MOVE R11 R7 - 0x58300011, // 0052 LDCONST R12 K17 - 0x6034000C, // 0053 GETGBL R13 G12 - 0x5C380E00, // 0054 MOVE R14 R7 - 0x7C340200, // 0055 CALL R13 1 - 0x5C380600, // 0056 MOVE R14 R3 - 0x583C0011, // 0057 LDCONST R15 K17 - 0x5C400800, // 0058 MOVE R16 R4 - 0x5C440600, // 0059 MOVE R17 R3 - 0x5C480800, // 005A MOVE R18 R4 - 0x604C000C, // 005B GETGBL R19 G12 - 0x5C500600, // 005C MOVE R20 R3 - 0x7C4C0200, // 005D CALL R19 1 - 0x044C2604, // 005E SUB R19 R19 R4 - 0x044C2605, // 005F SUB R19 R19 R5 - 0x5C500600, // 0060 MOVE R20 R3 - 0x6054000C, // 0061 GETGBL R21 G12 - 0x5C580600, // 0062 MOVE R22 R3 - 0x7C540200, // 0063 CALL R21 1 - 0x04542A05, // 0064 SUB R21 R21 R5 - 0x5C580A00, // 0065 MOVE R22 R5 - 0x7C201C00, // 0066 CALL R8 14 - 0x78220006, // 0067 JMPF R8 #006F - 0x8C24071A, // 0068 GETMET R9 R3 K26 - 0x602C000C, // 0069 GETGBL R11 G12 - 0x5C300600, // 006A MOVE R12 R3 - 0x7C2C0200, // 006B CALL R11 1 - 0x042C1605, // 006C SUB R11 R11 R5 - 0x7C240400, // 006D CALL R9 2 - 0x70020004, // 006E JMP #0074 - 0xB8260C00, // 006F GETNGBL R9 K6 - 0x8C241307, // 0070 GETMET R9 R9 K7 - 0x582C001D, // 0071 LDCONST R11 K29 - 0x58300012, // 0072 LDCONST R12 K18 - 0x7C240600, // 0073 CALL R9 3 - 0x80041000, // 0074 RET 1 R8 + 0x7C1C0400, // 000C CALL R7 2 + 0x8C1C0509, // 000D GETMET R7 R2 K9 + 0x7C1C0200, // 000E CALL R7 1 + 0x5421FFEF, // 000F LDINT R8 -16 + 0x4020110A, // 0010 CONNECT R8 R8 K10 + 0x94200608, // 0011 GETIDX R8 R3 R8 + 0x60240015, // 0012 GETGBL R9 G21 + 0x7C240000, // 0013 CALL R9 0 + 0x8C24130B, // 0014 GETMET R9 R9 K11 + 0x882C010C, // 0015 GETMBR R11 R0 K12 + 0x5431FFFD, // 0016 LDINT R12 -2 + 0x7C240600, // 0017 CALL R9 3 + 0x542A0004, // 0018 LDINT R10 5 + 0x542E000E, // 0019 LDINT R11 15 + 0x4028140B, // 001A CONNECT R10 R10 R11 + 0x9428100A, // 001B GETIDX R10 R8 R10 + 0x0024120A, // 001C ADD R9 R9 R10 + 0x542A0003, // 001D LDINT R10 4 + 0x882C0103, // 001E GETMBR R11 R0 K3 + 0x042C170D, // 001F SUB R11 R11 K13 + 0x4028140B, // 0020 CONNECT R10 R10 R11 + 0x882C0102, // 0021 GETMBR R11 R0 K2 + 0x9428160A, // 0022 GETIDX R10 R11 R10 + 0x8C30030E, // 0023 GETMET R12 R1 K14 + 0x5C380E00, // 0024 MOVE R14 R7 + 0x7C300400, // 0025 CALL R12 2 + 0x8C30190F, // 0026 GETMET R12 R12 K15 + 0x5C381400, // 0027 MOVE R14 R10 + 0x5C3C1200, // 0028 MOVE R15 R9 + 0x58400008, // 0029 LDCONST R16 K8 + 0x7C300800, // 002A CALL R12 4 + 0x5C2C1800, // 002B MOVE R11 R12 + 0x40322111, // 002C CONNECT R12 K16 K17 + 0x88340102, // 002D GETMBR R13 R0 K2 + 0x94301A0C, // 002E GETIDX R12 R13 R12 + 0x0030180B, // 002F ADD R12 R12 R11 + 0x88340103, // 0030 GETMBR R13 R0 K3 + 0x40341B0A, // 0031 CONNECT R13 R13 K10 + 0x9434140D, // 0032 GETIDX R13 R10 R13 + 0x0030180D, // 0033 ADD R12 R12 R13 + 0x9002040C, // 0034 SETMBR R0 K2 R12 + 0x881C0112, // 0035 GETMBR R7 R0 K18 + 0x881C0F13, // 0036 GETMBR R7 R7 K19 + 0x8C200F14, // 0037 GETMET R8 R7 K20 + 0x7C200200, // 0038 CALL R8 1 + 0x8C200F0B, // 0039 GETMET R8 R7 K11 + 0x88280115, // 003A GETMBR R10 R0 K21 + 0x582C000D, // 003B LDCONST R11 K13 + 0x7C200600, // 003C CALL R8 3 + 0x8C200F0B, // 003D GETMET R8 R7 K11 + 0x88280116, // 003E GETMBR R10 R0 K22 + 0x542E0003, // 003F LDINT R11 4 + 0x7C200600, // 0040 CALL R8 3 + 0x88200117, // 0041 GETMBR R8 R0 K23 + 0x78220002, // 0042 JMPF R8 #0046 + 0x88200117, // 0043 GETMBR R8 R0 K23 + 0x40200E08, // 0044 CONNECT R8 R7 R8 + 0x70020006, // 0045 JMP #004D + 0x88200518, // 0046 GETMBR R8 R2 K24 + 0x78220001, // 0047 JMPF R8 #004A + 0x88200518, // 0048 GETMBR R8 R2 K24 + 0x40200E08, // 0049 CONNECT R8 R7 R8 + 0x8C200F19, // 004A GETMET R8 R7 K25 + 0x542A000C, // 004B LDINT R10 13 + 0x7C200400, // 004C CALL R8 2 + 0x8820031A, // 004D GETMBR R8 R1 K26 + 0x8C20111B, // 004E GETMET R8 R8 K27 + 0x5C280C00, // 004F MOVE R10 R6 + 0x5C2C0E00, // 0050 MOVE R11 R7 + 0x58300010, // 0051 LDCONST R12 K16 + 0x6034000C, // 0052 GETGBL R13 G12 + 0x5C380E00, // 0053 MOVE R14 R7 + 0x7C340200, // 0054 CALL R13 1 + 0x5C380600, // 0055 MOVE R14 R3 + 0x583C0010, // 0056 LDCONST R15 K16 + 0x5C400800, // 0057 MOVE R16 R4 + 0x5C440600, // 0058 MOVE R17 R3 + 0x5C480800, // 0059 MOVE R18 R4 + 0x604C000C, // 005A GETGBL R19 G12 + 0x5C500600, // 005B MOVE R20 R3 + 0x7C4C0200, // 005C CALL R19 1 + 0x044C2604, // 005D SUB R19 R19 R4 + 0x044C2605, // 005E SUB R19 R19 R5 + 0x5C500600, // 005F MOVE R20 R3 + 0x6054000C, // 0060 GETGBL R21 G12 + 0x5C580600, // 0061 MOVE R22 R3 + 0x7C540200, // 0062 CALL R21 1 + 0x04542A05, // 0063 SUB R21 R21 R5 + 0x5C580A00, // 0064 MOVE R22 R5 + 0x7C201C00, // 0065 CALL R8 14 + 0x78220006, // 0066 JMPF R8 #006E + 0x8C240719, // 0067 GETMET R9 R3 K25 + 0x602C000C, // 0068 GETGBL R11 G12 + 0x5C300600, // 0069 MOVE R12 R3 + 0x7C2C0200, // 006A CALL R11 1 + 0x042C1605, // 006B SUB R11 R11 R5 + 0x7C240400, // 006C CALL R9 2 + 0x70020003, // 006D JMP #0072 + 0xB8260C00, // 006E GETNGBL R9 K6 + 0x5828001C, // 006F LDCONST R10 K28 + 0x582C0011, // 0070 LDCONST R11 K17 + 0x7C240400, // 0071 CALL R9 2 + 0x80041000, // 0072 RET 1 R8 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index cbec77d91..6eb6dc0e8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -67,7 +67,7 @@ be_local_closure(class_Matter_MessageHandler_init, /* name */ extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -94,9 +94,9 @@ be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ }), be_str_weak(send_encrypted_ack), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ + ( &(const binstruction[32]) { /* code */ 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x780E001D, // 0001 JMPF R3 #0020 + 0x780E001C, // 0001 JMPF R3 #001F 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x5C140400, // 0003 MOVE R5 R2 0x7C0C0400, // 0004 CALL R3 2 @@ -108,26 +108,25 @@ be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ 0x8C100905, // 000A GETMET R4 R4 K5 0x541A0003, // 000B LDINT R6 4 0x7C100400, // 000C CALL R4 2 - 0x7812000E, // 000D JMPF R4 #001D - 0xB8120800, // 000E GETNGBL R4 K4 - 0x8C100906, // 000F GETMET R4 R4 K6 - 0x60180018, // 0010 GETGBL R6 G24 - 0x581C0007, // 0011 LDCONST R7 K7 - 0x88200708, // 0012 GETMBR R8 R3 K8 - 0x88201109, // 0013 GETMBR R8 R8 K9 - 0x8824070A, // 0014 GETMBR R9 R3 K10 - 0x8828070B, // 0015 GETMBR R10 R3 K11 - 0x780A0001, // 0016 JMPF R2 #0019 - 0x582C000C, // 0017 LDCONST R11 K12 - 0x70020000, // 0018 JMP #001A - 0x582C000D, // 0019 LDCONST R11 K13 - 0x7C180A00, // 001A CALL R6 5 - 0x541E0003, // 001B LDINT R7 4 - 0x7C100600, // 001C CALL R4 3 - 0x8C10010E, // 001D GETMET R4 R0 K14 - 0x5C180600, // 001E MOVE R6 R3 - 0x7C100400, // 001F CALL R4 2 - 0x80000000, // 0020 RET 0 + 0x7812000D, // 000D JMPF R4 #001C + 0xB8120C00, // 000E GETNGBL R4 K6 + 0x60140018, // 000F GETGBL R5 G24 + 0x58180007, // 0010 LDCONST R6 K7 + 0x881C0708, // 0011 GETMBR R7 R3 K8 + 0x881C0F09, // 0012 GETMBR R7 R7 K9 + 0x8820070A, // 0013 GETMBR R8 R3 K10 + 0x8824070B, // 0014 GETMBR R9 R3 K11 + 0x780A0001, // 0015 JMPF R2 #0018 + 0x5828000C, // 0016 LDCONST R10 K12 + 0x70020000, // 0017 JMP #0019 + 0x5828000D, // 0018 LDCONST R10 K13 + 0x7C140A00, // 0019 CALL R5 5 + 0x541A0003, // 001A LDINT R6 4 + 0x7C100400, // 001B CALL R4 2 + 0x8C10010E, // 001C GETMET R4 R0 K14 + 0x5C180600, // 001D MOVE R6 R3 + 0x7C100400, // 001E CALL R4 2 + 0x80000000, // 001F RET 0 }) ) ); @@ -140,7 +139,7 @@ be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ be_nested_proto( - 19, /* nstack */ + 18, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -222,14 +221,14 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ }), be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[365]) { /* code */ + ( &(const binstruction[356]) { /* code */ 0x50100000, // 0000 LDBOOL R4 0 0 0xB8160000, // 0001 GETNGBL R5 K0 0x88140B01, // 0002 GETMBR R5 R5 K1 0x8C140B02, // 0003 GETMET R5 R5 K2 0x581C0003, // 0004 LDCONST R7 K3 0x7C140400, // 0005 CALL R5 2 - 0xA802014B, // 0006 EXBLK 0 #0153 + 0xA8020143, // 0006 EXBLK 0 #014B 0xB8160000, // 0007 GETNGBL R5 K0 0x8C140B04, // 0008 GETMET R5 R5 K4 0x5C1C0000, // 0009 MOVE R7 R0 @@ -258,13 +257,13 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0x7C200400, // 0020 CALL R8 2 0xA8040001, // 0021 EXBLK 1 1 0x80041000, // 0022 RET 1 R8 - 0x7002012A, // 0023 JMP #014F + 0x70020122, // 0023 JMP #0147 0x881C0B0D, // 0024 GETMBR R7 R5 K13 0x1C1C0F0E, // 0025 EQ R7 R7 K14 - 0x781E007F, // 0026 JMPF R7 #00A7 + 0x781E007C, // 0026 JMPF R7 #00A4 0x881C0B0F, // 0027 GETMBR R7 R5 K15 0x1C1C0F0E, // 0028 EQ R7 R7 K14 - 0x781E007C, // 0029 JMPF R7 #00A7 + 0x781E0079, // 0029 JMPF R7 #00A4 0x881C0107, // 002A GETMBR R7 R0 K7 0x881C0F08, // 002B GETMBR R7 R7 K8 0x8C1C0F09, // 002C GETMET R7 R7 K9 @@ -282,312 +281,303 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0x88280B16, // 0038 GETMBR R10 R5 K22 0x502C0000, // 0039 LDBOOL R11 0 0 0x7C200600, // 003A CALL R8 3 - 0x74220016, // 003B JMPT R8 #0053 + 0x74220015, // 003B JMPT R8 #0052 0xB8222E00, // 003C GETNGBL R8 K23 0x8C201118, // 003D GETMET R8 R8 K24 0x542A0003, // 003E LDINT R10 4 0x7C200400, // 003F CALL R8 2 - 0x7822000A, // 0040 JMPF R8 #004C - 0xB8222E00, // 0041 GETNGBL R8 K23 - 0x8C201102, // 0042 GETMET R8 R8 K2 - 0x60280018, // 0043 GETGBL R10 G24 - 0x582C0019, // 0044 LDCONST R11 K25 - 0x88300B16, // 0045 GETMBR R12 R5 K22 - 0x88340F14, // 0046 GETMBR R13 R7 K20 - 0x8C341B1A, // 0047 GETMET R13 R13 K26 - 0x7C340200, // 0048 CALL R13 1 - 0x7C280600, // 0049 CALL R10 3 - 0x542E0003, // 004A LDINT R11 4 - 0x7C200600, // 004B CALL R8 3 - 0x8C20011B, // 004C GETMET R8 R0 K27 - 0x5C280A00, // 004D MOVE R10 R5 - 0x502C0000, // 004E LDBOOL R11 0 0 - 0x7C200600, // 004F CALL R8 3 - 0x50200000, // 0050 LDBOOL R8 0 0 - 0xA8040001, // 0051 EXBLK 1 1 - 0x80041000, // 0052 RET 1 R8 - 0x8C200B1C, // 0053 GETMET R8 R5 K28 - 0x7C200200, // 0054 CALL R8 1 - 0x74220002, // 0055 JMPT R8 #0059 - 0x50200000, // 0056 LDBOOL R8 0 0 - 0xA8040001, // 0057 EXBLK 1 1 - 0x80041000, // 0058 RET 1 R8 - 0x88200107, // 0059 GETMBR R8 R0 K7 - 0x8C20111D, // 005A GETMET R8 R8 K29 - 0x5C280A00, // 005B MOVE R10 R5 - 0x7C200400, // 005C CALL R8 2 - 0x88200B1E, // 005D GETMBR R8 R5 K30 - 0x5426000F, // 005E LDINT R9 16 - 0x20201009, // 005F NE R8 R8 R9 - 0x7822001D, // 0060 JMPF R8 #007F - 0xB8220000, // 0061 GETNGBL R8 K0 - 0x8C20111F, // 0062 GETMET R8 R8 K31 - 0x88280B1E, // 0063 GETMBR R10 R5 K30 - 0x7C200400, // 0064 CALL R8 2 - 0x5C241000, // 0065 MOVE R9 R8 - 0x74260004, // 0066 JMPT R9 #006C - 0x60240018, // 0067 GETGBL R9 G24 - 0x58280020, // 0068 LDCONST R10 K32 - 0x882C0B1E, // 0069 GETMBR R11 R5 K30 - 0x7C240400, // 006A CALL R9 2 - 0x5C201200, // 006B MOVE R8 R9 - 0xB8262E00, // 006C GETNGBL R9 K23 - 0x8C241318, // 006D GETMET R9 R9 K24 - 0x582C0021, // 006E LDCONST R11 K33 - 0x7C240400, // 006F CALL R9 2 - 0x7826000C, // 0070 JMPF R9 #007E - 0xB8262E00, // 0071 GETNGBL R9 K23 - 0x8C241302, // 0072 GETMET R9 R9 K2 - 0x602C0018, // 0073 GETGBL R11 G24 - 0x58300022, // 0074 LDCONST R12 K34 - 0x88340F0D, // 0075 GETMBR R13 R7 K13 - 0x5C381000, // 0076 MOVE R14 R8 - 0x883C0B16, // 0077 GETMBR R15 R5 K22 - 0x88400B23, // 0078 GETMBR R16 R5 K35 - 0x5C440400, // 0079 MOVE R17 R2 - 0x5C480600, // 007A MOVE R18 R3 - 0x7C2C0E00, // 007B CALL R11 7 - 0x58300021, // 007C LDCONST R12 K33 - 0x7C240600, // 007D CALL R9 3 - 0x70020018, // 007E JMP #0098 - 0xB8222E00, // 007F GETNGBL R8 K23 - 0x8C201118, // 0080 GETMET R8 R8 K24 - 0x542A0003, // 0081 LDINT R10 4 - 0x7C200400, // 0082 CALL R8 2 - 0x78220013, // 0083 JMPF R8 #0098 - 0xB8222E00, // 0084 GETNGBL R8 K23 - 0x8C201102, // 0085 GETMET R8 R8 K2 - 0x60280018, // 0086 GETGBL R10 G24 - 0x582C0024, // 0087 LDCONST R11 K36 - 0x88300F0D, // 0088 GETMBR R12 R7 K13 - 0x88340B16, // 0089 GETMBR R13 R5 K22 - 0x88380B25, // 008A GETMBR R14 R5 K37 - 0x783A0001, // 008B JMPF R14 #008E - 0x58380026, // 008C LDCONST R14 K38 - 0x70020000, // 008D JMP #008F - 0x58380027, // 008E LDCONST R14 K39 - 0x883C0B23, // 008F GETMBR R15 R5 K35 - 0x60400008, // 0090 GETGBL R16 G8 - 0x88440B28, // 0091 GETMBR R17 R5 K40 - 0x7C400200, // 0092 CALL R16 1 - 0x5C440400, // 0093 MOVE R17 R2 - 0x5C480600, // 0094 MOVE R18 R3 - 0x7C281000, // 0095 CALL R10 8 - 0x542E0003, // 0096 LDINT R11 4 - 0x7C200600, // 0097 CALL R8 3 - 0x88200129, // 0098 GETMBR R8 R0 K41 - 0x8C20112A, // 0099 GETMET R8 R8 K42 - 0x5C280A00, // 009A MOVE R10 R5 - 0x7C200400, // 009B CALL R8 2 - 0x5C101000, // 009C MOVE R4 R8 - 0x5C200800, // 009D MOVE R8 R4 - 0x74220003, // 009E JMPT R8 #00A3 - 0x8C20011B, // 009F GETMET R8 R0 K27 - 0x5C280A00, // 00A0 MOVE R10 R5 - 0x502C0000, // 00A1 LDBOOL R11 0 0 - 0x7C200600, // 00A2 CALL R8 3 - 0x50200200, // 00A3 LDBOOL R8 1 0 - 0xA8040001, // 00A4 EXBLK 1 1 - 0x80041000, // 00A5 RET 1 R8 - 0x700200A7, // 00A6 JMP #014F - 0xB81E2E00, // 00A7 GETNGBL R7 K23 - 0x8C1C0F18, // 00A8 GETMET R7 R7 K24 - 0x54260003, // 00A9 LDINT R9 4 - 0x7C1C0400, // 00AA CALL R7 2 - 0x781E0008, // 00AB JMPF R7 #00B5 - 0xB81E2E00, // 00AC GETNGBL R7 K23 - 0x8C1C0F02, // 00AD GETMET R7 R7 K2 - 0x60240018, // 00AE GETGBL R9 G24 - 0x5828002B, // 00AF LDCONST R10 K43 - 0x882C0B0D, // 00B0 GETMBR R11 R5 K13 - 0x88300B16, // 00B1 GETMBR R12 R5 K22 - 0x7C240600, // 00B2 CALL R9 3 - 0x542A0003, // 00B3 LDINT R10 4 - 0x7C1C0600, // 00B4 CALL R7 3 - 0x881C0107, // 00B5 GETMBR R7 R0 K7 - 0x881C0F08, // 00B6 GETMBR R7 R7 K8 - 0x8C1C0F2C, // 00B7 GETMET R7 R7 K44 - 0x88240B0D, // 00B8 GETMBR R9 R5 K13 - 0x7C1C0400, // 00B9 CALL R7 2 - 0x4C200000, // 00BA LDNIL R8 - 0x1C200E08, // 00BB EQ R8 R7 R8 - 0x7822000A, // 00BC JMPF R8 #00C8 - 0xB8222E00, // 00BD GETNGBL R8 K23 - 0x8C201102, // 00BE GETMET R8 R8 K2 - 0x60280008, // 00BF GETGBL R10 G8 - 0x882C0B0D, // 00C0 GETMBR R11 R5 K13 - 0x7C280200, // 00C1 CALL R10 1 - 0x002A5A0A, // 00C2 ADD R10 K45 R10 - 0x582C0021, // 00C3 LDCONST R11 K33 - 0x7C200600, // 00C4 CALL R8 3 - 0x50200000, // 00C5 LDBOOL R8 0 0 - 0xA8040001, // 00C6 EXBLK 1 1 - 0x80041000, // 00C7 RET 1 R8 - 0x780A0000, // 00C8 JMPF R2 #00CA - 0x901E2002, // 00C9 SETMBR R7 K16 R2 - 0x780E0000, // 00CA JMPF R3 #00CC - 0x901E2203, // 00CB SETMBR R7 K17 R3 - 0x901E2400, // 00CC SETMBR R7 K18 R0 - 0x90162607, // 00CD SETMBR R5 K19 R7 - 0x8C200F2E, // 00CE GETMET R8 R7 K46 - 0x88280B16, // 00CF GETMBR R10 R5 K22 - 0x502C0200, // 00D0 LDBOOL R11 1 0 - 0x7C200600, // 00D1 CALL R8 3 - 0x74220018, // 00D2 JMPT R8 #00EC - 0xB8222E00, // 00D3 GETNGBL R8 K23 - 0x8C201118, // 00D4 GETMET R8 R8 K24 - 0x58280021, // 00D5 LDCONST R10 K33 - 0x7C200400, // 00D6 CALL R8 2 - 0x7822000C, // 00D7 JMPF R8 #00E5 - 0xB8222E00, // 00D8 GETNGBL R8 K23 - 0x8C201102, // 00D9 GETMET R8 R8 K2 - 0x60280008, // 00DA GETGBL R10 G8 - 0x882C0B16, // 00DB GETMBR R11 R5 K22 - 0x7C280200, // 00DC CALL R10 1 - 0x002A5E0A, // 00DD ADD R10 K47 R10 - 0x00281530, // 00DE ADD R10 R10 K48 - 0x602C0008, // 00DF GETGBL R11 G8 - 0x88300F31, // 00E0 GETMBR R12 R7 K49 - 0x7C2C0200, // 00E1 CALL R11 1 - 0x0028140B, // 00E2 ADD R10 R10 R11 - 0x582C0021, // 00E3 LDCONST R11 K33 - 0x7C200600, // 00E4 CALL R8 3 - 0x8C200132, // 00E5 GETMET R8 R0 K50 - 0x5C280A00, // 00E6 MOVE R10 R5 - 0x502C0000, // 00E7 LDBOOL R11 0 0 - 0x7C200600, // 00E8 CALL R8 3 - 0x50200000, // 00E9 LDBOOL R8 0 0 - 0xA8040001, // 00EA EXBLK 1 1 - 0x80041000, // 00EB RET 1 R8 - 0x8C200B33, // 00EC GETMET R8 R5 K51 - 0x7C200200, // 00ED CALL R8 1 - 0xB8260000, // 00EE GETNGBL R9 K0 - 0x88241301, // 00EF GETMBR R9 R9 K1 - 0x8C241302, // 00F0 GETMET R9 R9 K2 - 0x582C0034, // 00F1 LDCONST R11 K52 - 0x7C240400, // 00F2 CALL R9 2 - 0x5C241000, // 00F3 MOVE R9 R8 - 0x74260002, // 00F4 JMPT R9 #00F8 - 0x50240000, // 00F5 LDBOOL R9 0 0 - 0xA8040001, // 00F6 EXBLK 1 1 - 0x80041200, // 00F7 RET 1 R9 - 0x8C240B1C, // 00F8 GETMET R9 R5 K28 - 0x7C240200, // 00F9 CALL R9 1 - 0xB8262E00, // 00FA GETNGBL R9 K23 - 0x8C241318, // 00FB GETMET R9 R9 K24 - 0x542E0003, // 00FC LDINT R11 4 - 0x7C240400, // 00FD CALL R9 2 - 0x78260013, // 00FE JMPF R9 #0113 - 0xB8262E00, // 00FF GETNGBL R9 K23 - 0x8C241302, // 0100 GETMET R9 R9 K2 - 0x602C0008, // 0101 GETGBL R11 G8 - 0x88300B36, // 0102 GETMBR R12 R5 K54 - 0x7C2C0200, // 0103 CALL R11 1 - 0x002E6A0B, // 0104 ADD R11 K53 R11 - 0x002C1737, // 0105 ADD R11 R11 K55 - 0x60300008, // 0106 GETGBL R12 G8 - 0x88340B1E, // 0107 GETMBR R13 R5 K30 - 0x7C300200, // 0108 CALL R12 1 - 0x002C160C, // 0109 ADD R11 R11 R12 - 0x002C1738, // 010A ADD R11 R11 K56 - 0x60300008, // 010B GETGBL R12 G8 - 0x88340B23, // 010C GETMBR R13 R5 K35 - 0x543AFFFE, // 010D LDINT R14 65535 - 0x2C341A0E, // 010E AND R13 R13 R14 - 0x7C300200, // 010F CALL R12 1 - 0x002C160C, // 0110 ADD R11 R11 R12 - 0x54320003, // 0111 LDINT R12 4 - 0x7C240600, // 0112 CALL R9 3 - 0x88240107, // 0113 GETMBR R9 R0 K7 - 0x8C24131D, // 0114 GETMET R9 R9 K29 - 0x5C2C0A00, // 0115 MOVE R11 R5 - 0x7C240400, // 0116 CALL R9 2 - 0x88240B36, // 0117 GETMBR R9 R5 K54 - 0x1C28130E, // 0118 EQ R10 R9 K14 - 0x782A000F, // 0119 JMPF R10 #012A - 0x88280B1E, // 011A GETMBR R10 R5 K30 - 0x542E000F, // 011B LDINT R11 16 - 0x1C28140B, // 011C EQ R10 R10 R11 - 0x782A0009, // 011D JMPF R10 #0128 - 0x88280139, // 011E GETMBR R10 R0 K57 - 0x8C28153A, // 011F GETMET R10 R10 K58 - 0x5C300A00, // 0120 MOVE R12 R5 - 0x7C280400, // 0121 CALL R10 2 - 0x5C101400, // 0122 MOVE R4 R10 - 0x78120003, // 0123 JMPF R4 #0128 - 0x88280139, // 0124 GETMBR R10 R0 K57 - 0x8C28153B, // 0125 GETMET R10 R10 K59 - 0x5C300000, // 0126 MOVE R12 R0 - 0x7C280400, // 0127 CALL R10 2 - 0x50100200, // 0128 LDBOOL R4 1 0 - 0x70020024, // 0129 JMP #014F - 0x1C28133C, // 012A EQ R10 R9 K60 - 0x782A001A, // 012B JMPF R10 #0147 - 0xB82A0000, // 012C GETNGBL R10 K0 - 0x88281501, // 012D GETMBR R10 R10 K1 - 0x8C281502, // 012E GETMET R10 R10 K2 - 0x5830003D, // 012F LDCONST R12 K61 - 0x7C280400, // 0130 CALL R10 2 - 0x88280139, // 0131 GETMBR R10 R0 K57 - 0x8C28152A, // 0132 GETMET R10 R10 K42 - 0x5C300A00, // 0133 MOVE R12 R5 - 0x7C280400, // 0134 CALL R10 2 - 0x5C101400, // 0135 MOVE R4 R10 - 0xB82A0000, // 0136 GETNGBL R10 K0 - 0x88281501, // 0137 GETMBR R10 R10 K1 - 0x8C281502, // 0138 GETMET R10 R10 K2 - 0x5830003E, // 0139 LDCONST R12 K62 - 0x7C280400, // 013A CALL R10 2 - 0x78120004, // 013B JMPF R4 #0141 - 0x88280139, // 013C GETMBR R10 R0 K57 - 0x8C28153B, // 013D GETMET R10 R10 K59 - 0x5C300000, // 013E MOVE R12 R0 - 0x7C280400, // 013F CALL R10 2 - 0x70020003, // 0140 JMP #0145 - 0x8C280132, // 0141 GETMET R10 R0 K50 - 0x5C300A00, // 0142 MOVE R12 R5 - 0x50340200, // 0143 LDBOOL R13 1 0 - 0x7C280600, // 0144 CALL R10 3 - 0x50100200, // 0145 LDBOOL R4 1 0 - 0x70020007, // 0146 JMP #014F - 0xB82A2E00, // 0147 GETNGBL R10 K23 - 0x8C281502, // 0148 GETMET R10 R10 K2 - 0x60300008, // 0149 GETGBL R12 G8 - 0x5C341200, // 014A MOVE R13 R9 - 0x7C300200, // 014B CALL R12 1 - 0x00327E0C, // 014C ADD R12 K63 R12 - 0x58340021, // 014D LDCONST R13 K33 - 0x7C280600, // 014E CALL R10 3 - 0xA8040001, // 014F EXBLK 1 1 - 0x80040800, // 0150 RET 1 R4 - 0xA8040001, // 0151 EXBLK 1 1 - 0x70020018, // 0152 JMP #016C - 0xAC140002, // 0153 CATCH R5 0 2 - 0x70020015, // 0154 JMP #016B - 0xB81E2E00, // 0155 GETNGBL R7 K23 - 0x8C1C0F02, // 0156 GETMET R7 R7 K2 - 0x60240008, // 0157 GETGBL R9 G8 - 0x5C280A00, // 0158 MOVE R10 R5 - 0x7C240200, // 0159 CALL R9 1 - 0x00268009, // 015A ADD R9 K64 R9 - 0x00241341, // 015B ADD R9 R9 K65 - 0x60280008, // 015C GETGBL R10 G8 - 0x5C2C0C00, // 015D MOVE R11 R6 - 0x7C280200, // 015E CALL R10 1 - 0x0024120A, // 015F ADD R9 R9 R10 - 0x58280042, // 0160 LDCONST R10 K66 - 0x7C1C0600, // 0161 CALL R7 3 - 0xB81E2E00, // 0162 GETNGBL R7 K23 - 0x881C0F43, // 0163 GETMBR R7 R7 K67 - 0x781E0002, // 0164 JMPF R7 #0168 - 0xA41E8800, // 0165 IMPORT R7 K68 - 0x8C200F45, // 0166 GETMET R8 R7 K69 - 0x7C200200, // 0167 CALL R8 1 - 0x501C0000, // 0168 LDBOOL R7 0 0 - 0x80040E00, // 0169 RET 1 R7 - 0x70020000, // 016A JMP #016C - 0xB0080000, // 016B RAISE 2 R0 R0 - 0x80000000, // 016C RET 0 + 0x78220009, // 0040 JMPF R8 #004B + 0xB8220400, // 0041 GETNGBL R8 K2 + 0x60240018, // 0042 GETGBL R9 G24 + 0x58280019, // 0043 LDCONST R10 K25 + 0x882C0B16, // 0044 GETMBR R11 R5 K22 + 0x88300F14, // 0045 GETMBR R12 R7 K20 + 0x8C30191A, // 0046 GETMET R12 R12 K26 + 0x7C300200, // 0047 CALL R12 1 + 0x7C240600, // 0048 CALL R9 3 + 0x542A0003, // 0049 LDINT R10 4 + 0x7C200400, // 004A CALL R8 2 + 0x8C20011B, // 004B GETMET R8 R0 K27 + 0x5C280A00, // 004C MOVE R10 R5 + 0x502C0000, // 004D LDBOOL R11 0 0 + 0x7C200600, // 004E CALL R8 3 + 0x50200000, // 004F LDBOOL R8 0 0 + 0xA8040001, // 0050 EXBLK 1 1 + 0x80041000, // 0051 RET 1 R8 + 0x8C200B1C, // 0052 GETMET R8 R5 K28 + 0x7C200200, // 0053 CALL R8 1 + 0x74220002, // 0054 JMPT R8 #0058 + 0x50200000, // 0055 LDBOOL R8 0 0 + 0xA8040001, // 0056 EXBLK 1 1 + 0x80041000, // 0057 RET 1 R8 + 0x88200107, // 0058 GETMBR R8 R0 K7 + 0x8C20111D, // 0059 GETMET R8 R8 K29 + 0x5C280A00, // 005A MOVE R10 R5 + 0x7C200400, // 005B CALL R8 2 + 0x88200B1E, // 005C GETMBR R8 R5 K30 + 0x5426000F, // 005D LDINT R9 16 + 0x20201009, // 005E NE R8 R8 R9 + 0x7822001C, // 005F JMPF R8 #007D + 0xB8220000, // 0060 GETNGBL R8 K0 + 0x8C20111F, // 0061 GETMET R8 R8 K31 + 0x88280B1E, // 0062 GETMBR R10 R5 K30 + 0x7C200400, // 0063 CALL R8 2 + 0x5C241000, // 0064 MOVE R9 R8 + 0x74260004, // 0065 JMPT R9 #006B + 0x60240018, // 0066 GETGBL R9 G24 + 0x58280020, // 0067 LDCONST R10 K32 + 0x882C0B1E, // 0068 GETMBR R11 R5 K30 + 0x7C240400, // 0069 CALL R9 2 + 0x5C201200, // 006A MOVE R8 R9 + 0xB8262E00, // 006B GETNGBL R9 K23 + 0x8C241318, // 006C GETMET R9 R9 K24 + 0x582C0021, // 006D LDCONST R11 K33 + 0x7C240400, // 006E CALL R9 2 + 0x7826000B, // 006F JMPF R9 #007C + 0xB8260400, // 0070 GETNGBL R9 K2 + 0x60280018, // 0071 GETGBL R10 G24 + 0x582C0022, // 0072 LDCONST R11 K34 + 0x88300F0D, // 0073 GETMBR R12 R7 K13 + 0x5C341000, // 0074 MOVE R13 R8 + 0x88380B16, // 0075 GETMBR R14 R5 K22 + 0x883C0B23, // 0076 GETMBR R15 R5 K35 + 0x5C400400, // 0077 MOVE R16 R2 + 0x5C440600, // 0078 MOVE R17 R3 + 0x7C280E00, // 0079 CALL R10 7 + 0x582C0021, // 007A LDCONST R11 K33 + 0x7C240400, // 007B CALL R9 2 + 0x70020017, // 007C JMP #0095 + 0xB8222E00, // 007D GETNGBL R8 K23 + 0x8C201118, // 007E GETMET R8 R8 K24 + 0x542A0003, // 007F LDINT R10 4 + 0x7C200400, // 0080 CALL R8 2 + 0x78220012, // 0081 JMPF R8 #0095 + 0xB8220400, // 0082 GETNGBL R8 K2 + 0x60240018, // 0083 GETGBL R9 G24 + 0x58280024, // 0084 LDCONST R10 K36 + 0x882C0F0D, // 0085 GETMBR R11 R7 K13 + 0x88300B16, // 0086 GETMBR R12 R5 K22 + 0x88340B25, // 0087 GETMBR R13 R5 K37 + 0x78360001, // 0088 JMPF R13 #008B + 0x58340026, // 0089 LDCONST R13 K38 + 0x70020000, // 008A JMP #008C + 0x58340027, // 008B LDCONST R13 K39 + 0x88380B23, // 008C GETMBR R14 R5 K35 + 0x603C0008, // 008D GETGBL R15 G8 + 0x88400B28, // 008E GETMBR R16 R5 K40 + 0x7C3C0200, // 008F CALL R15 1 + 0x5C400400, // 0090 MOVE R16 R2 + 0x5C440600, // 0091 MOVE R17 R3 + 0x7C241000, // 0092 CALL R9 8 + 0x542A0003, // 0093 LDINT R10 4 + 0x7C200400, // 0094 CALL R8 2 + 0x88200129, // 0095 GETMBR R8 R0 K41 + 0x8C20112A, // 0096 GETMET R8 R8 K42 + 0x5C280A00, // 0097 MOVE R10 R5 + 0x7C200400, // 0098 CALL R8 2 + 0x5C101000, // 0099 MOVE R4 R8 + 0x5C200800, // 009A MOVE R8 R4 + 0x74220003, // 009B JMPT R8 #00A0 + 0x8C20011B, // 009C GETMET R8 R0 K27 + 0x5C280A00, // 009D MOVE R10 R5 + 0x502C0000, // 009E LDBOOL R11 0 0 + 0x7C200600, // 009F CALL R8 3 + 0x50200200, // 00A0 LDBOOL R8 1 0 + 0xA8040001, // 00A1 EXBLK 1 1 + 0x80041000, // 00A2 RET 1 R8 + 0x700200A2, // 00A3 JMP #0147 + 0xB81E2E00, // 00A4 GETNGBL R7 K23 + 0x8C1C0F18, // 00A5 GETMET R7 R7 K24 + 0x54260003, // 00A6 LDINT R9 4 + 0x7C1C0400, // 00A7 CALL R7 2 + 0x781E0007, // 00A8 JMPF R7 #00B1 + 0xB81E0400, // 00A9 GETNGBL R7 K2 + 0x60200018, // 00AA GETGBL R8 G24 + 0x5824002B, // 00AB LDCONST R9 K43 + 0x88280B0D, // 00AC GETMBR R10 R5 K13 + 0x882C0B16, // 00AD GETMBR R11 R5 K22 + 0x7C200600, // 00AE CALL R8 3 + 0x54260003, // 00AF LDINT R9 4 + 0x7C1C0400, // 00B0 CALL R7 2 + 0x881C0107, // 00B1 GETMBR R7 R0 K7 + 0x881C0F08, // 00B2 GETMBR R7 R7 K8 + 0x8C1C0F2C, // 00B3 GETMET R7 R7 K44 + 0x88240B0D, // 00B4 GETMBR R9 R5 K13 + 0x7C1C0400, // 00B5 CALL R7 2 + 0x4C200000, // 00B6 LDNIL R8 + 0x1C200E08, // 00B7 EQ R8 R7 R8 + 0x78220009, // 00B8 JMPF R8 #00C3 + 0xB8220400, // 00B9 GETNGBL R8 K2 + 0x60240008, // 00BA GETGBL R9 G8 + 0x88280B0D, // 00BB GETMBR R10 R5 K13 + 0x7C240200, // 00BC CALL R9 1 + 0x00265A09, // 00BD ADD R9 K45 R9 + 0x58280021, // 00BE LDCONST R10 K33 + 0x7C200400, // 00BF CALL R8 2 + 0x50200000, // 00C0 LDBOOL R8 0 0 + 0xA8040001, // 00C1 EXBLK 1 1 + 0x80041000, // 00C2 RET 1 R8 + 0x780A0000, // 00C3 JMPF R2 #00C5 + 0x901E2002, // 00C4 SETMBR R7 K16 R2 + 0x780E0000, // 00C5 JMPF R3 #00C7 + 0x901E2203, // 00C6 SETMBR R7 K17 R3 + 0x901E2400, // 00C7 SETMBR R7 K18 R0 + 0x90162607, // 00C8 SETMBR R5 K19 R7 + 0x8C200F2E, // 00C9 GETMET R8 R7 K46 + 0x88280B16, // 00CA GETMBR R10 R5 K22 + 0x502C0200, // 00CB LDBOOL R11 1 0 + 0x7C200600, // 00CC CALL R8 3 + 0x74220017, // 00CD JMPT R8 #00E6 + 0xB8222E00, // 00CE GETNGBL R8 K23 + 0x8C201118, // 00CF GETMET R8 R8 K24 + 0x58280021, // 00D0 LDCONST R10 K33 + 0x7C200400, // 00D1 CALL R8 2 + 0x7822000B, // 00D2 JMPF R8 #00DF + 0xB8220400, // 00D3 GETNGBL R8 K2 + 0x60240008, // 00D4 GETGBL R9 G8 + 0x88280B16, // 00D5 GETMBR R10 R5 K22 + 0x7C240200, // 00D6 CALL R9 1 + 0x00265E09, // 00D7 ADD R9 K47 R9 + 0x00241330, // 00D8 ADD R9 R9 K48 + 0x60280008, // 00D9 GETGBL R10 G8 + 0x882C0F31, // 00DA GETMBR R11 R7 K49 + 0x7C280200, // 00DB CALL R10 1 + 0x0024120A, // 00DC ADD R9 R9 R10 + 0x58280021, // 00DD LDCONST R10 K33 + 0x7C200400, // 00DE CALL R8 2 + 0x8C200132, // 00DF GETMET R8 R0 K50 + 0x5C280A00, // 00E0 MOVE R10 R5 + 0x502C0000, // 00E1 LDBOOL R11 0 0 + 0x7C200600, // 00E2 CALL R8 3 + 0x50200000, // 00E3 LDBOOL R8 0 0 + 0xA8040001, // 00E4 EXBLK 1 1 + 0x80041000, // 00E5 RET 1 R8 + 0x8C200B33, // 00E6 GETMET R8 R5 K51 + 0x7C200200, // 00E7 CALL R8 1 + 0xB8260000, // 00E8 GETNGBL R9 K0 + 0x88241301, // 00E9 GETMBR R9 R9 K1 + 0x8C241302, // 00EA GETMET R9 R9 K2 + 0x582C0034, // 00EB LDCONST R11 K52 + 0x7C240400, // 00EC CALL R9 2 + 0x5C241000, // 00ED MOVE R9 R8 + 0x74260002, // 00EE JMPT R9 #00F2 + 0x50240000, // 00EF LDBOOL R9 0 0 + 0xA8040001, // 00F0 EXBLK 1 1 + 0x80041200, // 00F1 RET 1 R9 + 0x8C240B1C, // 00F2 GETMET R9 R5 K28 + 0x7C240200, // 00F3 CALL R9 1 + 0xB8262E00, // 00F4 GETNGBL R9 K23 + 0x8C241318, // 00F5 GETMET R9 R9 K24 + 0x542E0003, // 00F6 LDINT R11 4 + 0x7C240400, // 00F7 CALL R9 2 + 0x78260012, // 00F8 JMPF R9 #010C + 0xB8260400, // 00F9 GETNGBL R9 K2 + 0x60280008, // 00FA GETGBL R10 G8 + 0x882C0B36, // 00FB GETMBR R11 R5 K54 + 0x7C280200, // 00FC CALL R10 1 + 0x002A6A0A, // 00FD ADD R10 K53 R10 + 0x00281537, // 00FE ADD R10 R10 K55 + 0x602C0008, // 00FF GETGBL R11 G8 + 0x88300B1E, // 0100 GETMBR R12 R5 K30 + 0x7C2C0200, // 0101 CALL R11 1 + 0x0028140B, // 0102 ADD R10 R10 R11 + 0x00281538, // 0103 ADD R10 R10 K56 + 0x602C0008, // 0104 GETGBL R11 G8 + 0x88300B23, // 0105 GETMBR R12 R5 K35 + 0x5436FFFE, // 0106 LDINT R13 65535 + 0x2C30180D, // 0107 AND R12 R12 R13 + 0x7C2C0200, // 0108 CALL R11 1 + 0x0028140B, // 0109 ADD R10 R10 R11 + 0x542E0003, // 010A LDINT R11 4 + 0x7C240400, // 010B CALL R9 2 + 0x88240107, // 010C GETMBR R9 R0 K7 + 0x8C24131D, // 010D GETMET R9 R9 K29 + 0x5C2C0A00, // 010E MOVE R11 R5 + 0x7C240400, // 010F CALL R9 2 + 0x88240B36, // 0110 GETMBR R9 R5 K54 + 0x1C28130E, // 0111 EQ R10 R9 K14 + 0x782A000F, // 0112 JMPF R10 #0123 + 0x88280B1E, // 0113 GETMBR R10 R5 K30 + 0x542E000F, // 0114 LDINT R11 16 + 0x1C28140B, // 0115 EQ R10 R10 R11 + 0x782A0009, // 0116 JMPF R10 #0121 + 0x88280139, // 0117 GETMBR R10 R0 K57 + 0x8C28153A, // 0118 GETMET R10 R10 K58 + 0x5C300A00, // 0119 MOVE R12 R5 + 0x7C280400, // 011A CALL R10 2 + 0x5C101400, // 011B MOVE R4 R10 + 0x78120003, // 011C JMPF R4 #0121 + 0x88280139, // 011D GETMBR R10 R0 K57 + 0x8C28153B, // 011E GETMET R10 R10 K59 + 0x5C300000, // 011F MOVE R12 R0 + 0x7C280400, // 0120 CALL R10 2 + 0x50100200, // 0121 LDBOOL R4 1 0 + 0x70020023, // 0122 JMP #0147 + 0x1C28133C, // 0123 EQ R10 R9 K60 + 0x782A001A, // 0124 JMPF R10 #0140 + 0xB82A0000, // 0125 GETNGBL R10 K0 + 0x88281501, // 0126 GETMBR R10 R10 K1 + 0x8C281502, // 0127 GETMET R10 R10 K2 + 0x5830003D, // 0128 LDCONST R12 K61 + 0x7C280400, // 0129 CALL R10 2 + 0x88280139, // 012A GETMBR R10 R0 K57 + 0x8C28152A, // 012B GETMET R10 R10 K42 + 0x5C300A00, // 012C MOVE R12 R5 + 0x7C280400, // 012D CALL R10 2 + 0x5C101400, // 012E MOVE R4 R10 + 0xB82A0000, // 012F GETNGBL R10 K0 + 0x88281501, // 0130 GETMBR R10 R10 K1 + 0x8C281502, // 0131 GETMET R10 R10 K2 + 0x5830003E, // 0132 LDCONST R12 K62 + 0x7C280400, // 0133 CALL R10 2 + 0x78120004, // 0134 JMPF R4 #013A + 0x88280139, // 0135 GETMBR R10 R0 K57 + 0x8C28153B, // 0136 GETMET R10 R10 K59 + 0x5C300000, // 0137 MOVE R12 R0 + 0x7C280400, // 0138 CALL R10 2 + 0x70020003, // 0139 JMP #013E + 0x8C280132, // 013A GETMET R10 R0 K50 + 0x5C300A00, // 013B MOVE R12 R5 + 0x50340200, // 013C LDBOOL R13 1 0 + 0x7C280600, // 013D CALL R10 3 + 0x50100200, // 013E LDBOOL R4 1 0 + 0x70020006, // 013F JMP #0147 + 0xB82A0400, // 0140 GETNGBL R10 K2 + 0x602C0008, // 0141 GETGBL R11 G8 + 0x5C301200, // 0142 MOVE R12 R9 + 0x7C2C0200, // 0143 CALL R11 1 + 0x002E7E0B, // 0144 ADD R11 K63 R11 + 0x58300021, // 0145 LDCONST R12 K33 + 0x7C280400, // 0146 CALL R10 2 + 0xA8040001, // 0147 EXBLK 1 1 + 0x80040800, // 0148 RET 1 R4 + 0xA8040001, // 0149 EXBLK 1 1 + 0x70020017, // 014A JMP #0163 + 0xAC140002, // 014B CATCH R5 0 2 + 0x70020014, // 014C JMP #0162 + 0xB81E0400, // 014D GETNGBL R7 K2 + 0x60200008, // 014E GETGBL R8 G8 + 0x5C240A00, // 014F MOVE R9 R5 + 0x7C200200, // 0150 CALL R8 1 + 0x00228008, // 0151 ADD R8 K64 R8 + 0x00201141, // 0152 ADD R8 R8 K65 + 0x60240008, // 0153 GETGBL R9 G8 + 0x5C280C00, // 0154 MOVE R10 R6 + 0x7C240200, // 0155 CALL R9 1 + 0x00201009, // 0156 ADD R8 R8 R9 + 0x58240042, // 0157 LDCONST R9 K66 + 0x7C1C0400, // 0158 CALL R7 2 + 0xB81E2E00, // 0159 GETNGBL R7 K23 + 0x881C0F43, // 015A GETMBR R7 R7 K67 + 0x781E0002, // 015B JMPF R7 #015F + 0xA41E8800, // 015C IMPORT R7 K68 + 0x8C200F45, // 015D GETMET R8 R7 K69 + 0x7C200200, // 015E CALL R8 1 + 0x501C0000, // 015F LDBOOL R7 0 0 + 0x80040E00, // 0160 RET 1 R7 + 0x70020000, // 0161 JMP #0163 + 0xB0080000, // 0162 RAISE 2 R0 R0 + 0x80000000, // 0163 RET 0 }) ) ); @@ -641,7 +631,7 @@ be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */ extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -667,9 +657,9 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ }), be_str_weak(send_simple_ack), &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ + ( &(const binstruction[30]) { /* code */ 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x780E001B, // 0001 JMPF R3 #001E + 0x780E001A, // 0001 JMPF R3 #001D 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x5C140400, // 0003 MOVE R5 R2 0x7C0C0400, // 0004 CALL R3 2 @@ -679,26 +669,25 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ 0x8C100904, // 0008 GETMET R4 R4 K4 0x541A0003, // 0009 LDINT R6 4 0x7C100400, // 000A CALL R4 2 - 0x7812000E, // 000B JMPF R4 #001B - 0xB8120600, // 000C GETNGBL R4 K3 - 0x8C100905, // 000D GETMET R4 R4 K5 - 0x60180018, // 000E GETGBL R6 G24 - 0x581C0006, // 000F LDCONST R7 K6 - 0x88200707, // 0010 GETMBR R8 R3 K7 - 0x88201108, // 0011 GETMBR R8 R8 K8 - 0x88240709, // 0012 GETMBR R9 R3 K9 - 0x8828070A, // 0013 GETMBR R10 R3 K10 - 0x780A0001, // 0014 JMPF R2 #0017 - 0x582C000B, // 0015 LDCONST R11 K11 - 0x70020000, // 0016 JMP #0018 - 0x582C000C, // 0017 LDCONST R11 K12 - 0x7C180A00, // 0018 CALL R6 5 - 0x541E0003, // 0019 LDINT R7 4 - 0x7C100600, // 001A CALL R4 3 - 0x8C10010D, // 001B GETMET R4 R0 K13 - 0x5C180600, // 001C MOVE R6 R3 - 0x7C100400, // 001D CALL R4 2 - 0x80000000, // 001E RET 0 + 0x7812000D, // 000B JMPF R4 #001A + 0xB8120A00, // 000C GETNGBL R4 K5 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180006, // 000E LDCONST R6 K6 + 0x881C0707, // 000F GETMBR R7 R3 K7 + 0x881C0F08, // 0010 GETMBR R7 R7 K8 + 0x88200709, // 0011 GETMBR R8 R3 K9 + 0x8824070A, // 0012 GETMBR R9 R3 K10 + 0x780A0001, // 0013 JMPF R2 #0016 + 0x5828000B, // 0014 LDCONST R10 K11 + 0x70020000, // 0015 JMP #0017 + 0x5828000C, // 0016 LDCONST R10 K12 + 0x7C140A00, // 0017 CALL R5 5 + 0x541A0003, // 0018 LDINT R6 4 + 0x7C100400, // 0019 CALL R4 2 + 0x8C10010D, // 001A GETMET R4 R0 K13 + 0x5C180600, // 001B MOVE R6 R3 + 0x7C100400, // 001C CALL R4 2 + 0x80000000, // 001D RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index 7c40c1080..fcba237f4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -575,7 +575,7 @@ be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */ extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -583,7 +583,7 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Device, 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ + ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), /* K1 */ be_nested_str_weak(json), /* K2 */ be_const_int(2), @@ -595,16 +595,15 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ /* K8 */ be_nested_str_weak(device_is_alive), /* K9 */ be_nested_str_weak(load), /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), - /* K14 */ be_const_int(3), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), + /* K13 */ be_const_int(3), }), be_str_weak(call_remote_sync), &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ + ( &(const binstruction[44]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x780E0029, // 0001 JMPF R3 #002C + 0x780E0028, // 0001 JMPF R3 #002B 0xA40E0200, // 0002 IMPORT R3 K1 0x58100002, // 0003 LDCONST R4 K2 0x4C140000, // 0004 LDNIL R5 @@ -617,7 +616,7 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ 0x00140A06, // 000B ADD R5 R5 R6 0x5C040A00, // 000C MOVE R1 R5 0x24140904, // 000D GT R5 R4 K4 - 0x78160016, // 000E JMPF R5 #0026 + 0x78160015, // 000E JMPF R5 #0025 0x88140105, // 000F GETMBR R5 R0 K5 0x8C140B06, // 0010 GETMET R5 R5 K6 0x5C1C0200, // 0011 MOVE R7 R1 @@ -636,18 +635,17 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ 0x80040C00, // 001E RET 1 R6 0x0410090A, // 001F SUB R4 R4 K10 0xB81A1600, // 0020 GETNGBL R6 K11 - 0x8C180D0C, // 0021 GETMET R6 R6 K12 + 0x581C000C, // 0021 LDCONST R7 K12 0x5820000D, // 0022 LDCONST R8 K13 - 0x5824000E, // 0023 LDCONST R9 K14 - 0x7C180600, // 0024 CALL R6 3 - 0x7001FFE6, // 0025 JMP #000D - 0x88140105, // 0026 GETMBR R5 R0 K5 - 0x8C140B08, // 0027 GETMET R5 R5 K8 - 0x501C0000, // 0028 LDBOOL R7 0 0 - 0x7C140400, // 0029 CALL R5 2 - 0x4C140000, // 002A LDNIL R5 - 0x80040A00, // 002B RET 1 R5 - 0x80000000, // 002C RET 0 + 0x7C180400, // 0023 CALL R6 2 + 0x7001FFE7, // 0024 JMP #000D + 0x88140105, // 0025 GETMBR R5 R0 K5 + 0x8C140B08, // 0026 GETMET R5 R5 K8 + 0x501C0000, // 0027 LDBOOL R7 0 0 + 0x7C140400, // 0028 CALL R5 2 + 0x4C140000, // 0029 LDNIL R5 + 0x80040A00, // 002A RET 1 R5 + 0x80000000, // 002B RET 0 }) ) ); @@ -759,7 +757,7 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Device, 1, /* has constants */ - ( &(const bvalue[43]) { /* constants */ + ( &(const bvalue[44]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -786,27 +784,28 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ /* K23 */ be_nested_str_weak(http_remote), /* K24 */ be_nested_str_weak(get_info), /* K25 */ be_nested_str_weak(name), - /* K26 */ be_nested_str_weak(UTF1), - /* K27 */ be_nested_str_weak(NULL), + /* K26 */ be_nested_str_weak(set_or_nil), + /* K27 */ be_nested_str_weak(UTF1), /* K28 */ be_nested_str_weak(tasmota), /* K29 */ be_nested_str_weak(cmd), /* K30 */ be_nested_str_weak(DeviceName), /* K31 */ be_nested_str_weak(get_name), /* K32 */ be_nested_str_weak(version), /* K33 */ be_nested_str_weak(_X28), - /* K34 */ be_nested_str_weak(Status_X202), - /* K35 */ be_nested_str_weak(StatusFWR), - /* K36 */ be_nested_str_weak(Version), - /* K37 */ be_nested_str_weak(mac), - /* K38 */ be_nested_str_weak(wifi), - /* K39 */ be_nested_str_weak(), - /* K40 */ be_nested_str_weak(BOOL), - /* K41 */ be_nested_str_weak(reachable), - /* K42 */ be_nested_str_weak(read_attribute), + /* K34 */ be_nested_str_weak(NULL), + /* K35 */ be_nested_str_weak(Status_X202), + /* K36 */ be_nested_str_weak(StatusFWR), + /* K37 */ be_nested_str_weak(Version), + /* K38 */ be_nested_str_weak(mac), + /* K39 */ be_nested_str_weak(wifi), + /* K40 */ be_nested_str_weak(), + /* K41 */ be_nested_str_weak(BOOL), + /* K42 */ be_nested_str_weak(reachable), + /* K43 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[258]) { /* code */ + ( &(const binstruction[244]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 @@ -828,7 +827,7 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x58280005, // 0012 LDCONST R10 K5 0x7C1C0600, // 0013 CALL R7 3 0x80040E00, // 0014 RET 1 R7 - 0x700200E2, // 0015 JMP #00F9 + 0x700200D4, // 0015 JMP #00EB 0x541E0003, // 0016 LDINT R7 4 0x1C1C0A07, // 0017 EQ R7 R5 R7 0x781E0004, // 0018 JMPF R7 #001E @@ -836,11 +835,11 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x781E0001, // 001A JMPF R7 #001D 0x4C1C0000, // 001B LDNIL R7 0x80040E00, // 001C RET 1 R7 - 0x700200DA, // 001D JMP #00F9 + 0x700200CC, // 001D JMP #00EB 0x541E0004, // 001E LDINT R7 5 0x1C1C0A07, // 001F EQ R7 R5 R7 0x781E0000, // 0020 JMPF R7 #0022 - 0x700200D6, // 0021 JMP #00F9 + 0x700200C8, // 0021 JMP #00EB 0x541E001C, // 0022 LDINT R7 29 0x1C1C0A07, // 0023 EQ R7 R5 R7 0x781E0034, // 0024 JMPF R7 #005A @@ -896,175 +895,161 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x58380008, // 0056 LDCONST R14 K8 0x7C280800, // 0057 CALL R10 4 0x80040E00, // 0058 RET 1 R7 - 0x7002009E, // 0059 JMP #00F9 + 0x70020090, // 0059 JMP #00EB 0x541E0038, // 005A LDINT R7 57 0x1C1C0A07, // 005B EQ R7 R5 R7 - 0x781E009B, // 005C JMPF R7 #00F9 + 0x781E008D, // 005C JMPF R7 #00EB 0xA41E2A00, // 005D IMPORT R7 K21 0x1C200D04, // 005E EQ R8 R6 K4 - 0x7822001F, // 005F JMPF R8 #0080 + 0x78220018, // 005F JMPF R8 #0079 0x88200116, // 0060 GETMBR R8 R0 K22 - 0x78220012, // 0061 JMPF R8 #0075 + 0x7822000B, // 0061 JMPF R8 #006E 0x88200117, // 0062 GETMBR R8 R0 K23 0x8C201118, // 0063 GETMET R8 R8 K24 0x7C200200, // 0064 CALL R8 1 0x8C201111, // 0065 GETMET R8 R8 K17 0x58280019, // 0066 LDCONST R10 K25 0x7C200400, // 0067 CALL R8 2 - 0x78220005, // 0068 JMPF R8 #006F - 0x8C240706, // 0069 GETMET R9 R3 K6 - 0x882C091A, // 006A GETMBR R11 R4 K26 - 0x5C301000, // 006B MOVE R12 R8 - 0x7C240600, // 006C CALL R9 3 - 0x80041200, // 006D RET 1 R9 - 0x70020004, // 006E JMP #0074 - 0x8C240706, // 006F GETMET R9 R3 K6 - 0x882C091B, // 0070 GETMBR R11 R4 K27 - 0x4C300000, // 0071 LDNIL R12 - 0x7C240600, // 0072 CALL R9 3 - 0x80041200, // 0073 RET 1 R9 - 0x70020009, // 0074 JMP #007F - 0x8C200706, // 0075 GETMET R8 R3 K6 - 0x8828091A, // 0076 GETMBR R10 R4 K26 - 0xB82E3800, // 0077 GETNGBL R11 K28 - 0x8C2C171D, // 0078 GETMET R11 R11 K29 - 0x5834001E, // 0079 LDCONST R13 K30 - 0x50380200, // 007A LDBOOL R14 1 0 - 0x7C2C0600, // 007B CALL R11 3 - 0x942C171E, // 007C GETIDX R11 R11 K30 - 0x7C200600, // 007D CALL R8 3 - 0x80041000, // 007E RET 1 R8 - 0x70020078, // 007F JMP #00F9 - 0x54220004, // 0080 LDINT R8 5 - 0x1C200C08, // 0081 EQ R8 R6 R8 - 0x78220006, // 0082 JMPF R8 #008A - 0x8C200706, // 0083 GETMET R8 R3 K6 - 0x8828091A, // 0084 GETMBR R10 R4 K26 - 0x8C2C011F, // 0085 GETMET R11 R0 K31 - 0x7C2C0200, // 0086 CALL R11 1 - 0x7C200600, // 0087 CALL R8 3 - 0x80041000, // 0088 RET 1 R8 - 0x7002006E, // 0089 JMP #00F9 - 0x54220009, // 008A LDINT R8 10 - 0x1C200C08, // 008B EQ R8 R6 R8 - 0x78220033, // 008C JMPF R8 #00C1 - 0x88200116, // 008D GETMBR R8 R0 K22 - 0x7822001B, // 008E JMPF R8 #00AB - 0x88200117, // 008F GETMBR R8 R0 K23 - 0x8C201118, // 0090 GETMET R8 R8 K24 - 0x7C200200, // 0091 CALL R8 1 - 0x8C201111, // 0092 GETMET R8 R8 K17 - 0x58280020, // 0093 LDCONST R10 K32 - 0x7C200400, // 0094 CALL R8 2 - 0x7822000E, // 0095 JMPF R8 #00A5 - 0x8C240F11, // 0096 GETMET R9 R7 K17 - 0x5C2C1000, // 0097 MOVE R11 R8 - 0x58300021, // 0098 LDCONST R12 K33 - 0x7C240600, // 0099 CALL R9 3 - 0x24281305, // 009A GT R10 R9 K5 - 0x782A0002, // 009B JMPF R10 #009F - 0x04281308, // 009C SUB R10 R9 K8 - 0x402A0A0A, // 009D CONNECT R10 K5 R10 - 0x9420100A, // 009E GETIDX R8 R8 R10 - 0x8C280706, // 009F GETMET R10 R3 K6 - 0x8830091A, // 00A0 GETMBR R12 R4 K26 - 0x5C341000, // 00A1 MOVE R13 R8 - 0x7C280600, // 00A2 CALL R10 3 - 0x80041400, // 00A3 RET 1 R10 - 0x70020004, // 00A4 JMP #00AA - 0x8C240706, // 00A5 GETMET R9 R3 K6 - 0x882C091B, // 00A6 GETMBR R11 R4 K27 - 0x4C300000, // 00A7 LDNIL R12 - 0x7C240600, // 00A8 CALL R9 3 - 0x80041200, // 00A9 RET 1 R9 - 0x70020014, // 00AA JMP #00C0 - 0xB8223800, // 00AB GETNGBL R8 K28 - 0x8C20111D, // 00AC GETMET R8 R8 K29 - 0x58280022, // 00AD LDCONST R10 K34 - 0x502C0200, // 00AE LDBOOL R11 1 0 - 0x7C200600, // 00AF CALL R8 3 - 0x94201123, // 00B0 GETIDX R8 R8 K35 - 0x94201124, // 00B1 GETIDX R8 R8 K36 - 0x8C240F11, // 00B2 GETMET R9 R7 K17 - 0x5C2C1000, // 00B3 MOVE R11 R8 - 0x58300021, // 00B4 LDCONST R12 K33 - 0x7C240600, // 00B5 CALL R9 3 - 0x24281305, // 00B6 GT R10 R9 K5 - 0x782A0002, // 00B7 JMPF R10 #00BB - 0x04281308, // 00B8 SUB R10 R9 K8 - 0x402A0A0A, // 00B9 CONNECT R10 K5 R10 - 0x9420100A, // 00BA GETIDX R8 R8 R10 - 0x8C280706, // 00BB GETMET R10 R3 K6 - 0x8830091A, // 00BC GETMBR R12 R4 K26 - 0x5C341000, // 00BD MOVE R13 R8 - 0x7C280600, // 00BE CALL R10 3 - 0x80041400, // 00BF RET 1 R10 - 0x70020037, // 00C0 JMP #00F9 - 0x5422000E, // 00C1 LDINT R8 15 - 0x1C200C08, // 00C2 EQ R8 R6 R8 - 0x74220002, // 00C3 JMPT R8 #00C7 - 0x54220011, // 00C4 LDINT R8 18 - 0x1C200C08, // 00C5 EQ R8 R6 R8 - 0x78220020, // 00C6 JMPF R8 #00E8 - 0x88200116, // 00C7 GETMBR R8 R0 K22 - 0x78220012, // 00C8 JMPF R8 #00DC - 0x88200117, // 00C9 GETMBR R8 R0 K23 - 0x8C201118, // 00CA GETMET R8 R8 K24 - 0x7C200200, // 00CB CALL R8 1 - 0x8C201111, // 00CC GETMET R8 R8 K17 - 0x58280025, // 00CD LDCONST R10 K37 - 0x7C200400, // 00CE CALL R8 2 - 0x78220005, // 00CF JMPF R8 #00D6 - 0x8C240706, // 00D0 GETMET R9 R3 K6 - 0x882C091A, // 00D1 GETMBR R11 R4 K26 - 0x5C301000, // 00D2 MOVE R12 R8 - 0x7C240600, // 00D3 CALL R9 3 - 0x80041200, // 00D4 RET 1 R9 - 0x70020004, // 00D5 JMP #00DB - 0x8C240706, // 00D6 GETMET R9 R3 K6 - 0x882C091B, // 00D7 GETMBR R11 R4 K27 - 0x4C300000, // 00D8 LDNIL R12 - 0x7C240600, // 00D9 CALL R9 3 - 0x80041200, // 00DA RET 1 R9 - 0x7002000A, // 00DB JMP #00E7 - 0x8C200706, // 00DC GETMET R8 R3 K6 - 0x8828091A, // 00DD GETMBR R10 R4 K26 - 0xB82E3800, // 00DE GETNGBL R11 K28 - 0x8C2C1726, // 00DF GETMET R11 R11 K38 - 0x7C2C0200, // 00E0 CALL R11 1 - 0x8C2C1711, // 00E1 GETMET R11 R11 K17 - 0x58340025, // 00E2 LDCONST R13 K37 - 0x58380027, // 00E3 LDCONST R14 K39 - 0x7C2C0600, // 00E4 CALL R11 3 - 0x7C200600, // 00E5 CALL R8 3 - 0x80041000, // 00E6 RET 1 R8 - 0x70020010, // 00E7 JMP #00F9 - 0x54220010, // 00E8 LDINT R8 17 - 0x1C200C08, // 00E9 EQ R8 R6 R8 - 0x7822000D, // 00EA JMPF R8 #00F9 - 0x88200116, // 00EB GETMBR R8 R0 K22 - 0x78220006, // 00EC JMPF R8 #00F4 - 0x8C200706, // 00ED GETMET R8 R3 K6 - 0x88280928, // 00EE GETMBR R10 R4 K40 - 0x882C0117, // 00EF GETMBR R11 R0 K23 - 0x882C1729, // 00F0 GETMBR R11 R11 K41 - 0x7C200600, // 00F1 CALL R8 3 - 0x80041000, // 00F2 RET 1 R8 - 0x70020004, // 00F3 JMP #00F9 - 0x8C200706, // 00F4 GETMET R8 R3 K6 - 0x88280928, // 00F5 GETMBR R10 R4 K40 - 0x582C0008, // 00F6 LDCONST R11 K8 - 0x7C200600, // 00F7 CALL R8 3 - 0x80041000, // 00F8 RET 1 R8 - 0x601C0003, // 00F9 GETGBL R7 G3 - 0x5C200000, // 00FA MOVE R8 R0 - 0x7C1C0200, // 00FB CALL R7 1 - 0x8C1C0F2A, // 00FC GETMET R7 R7 K42 - 0x5C240200, // 00FD MOVE R9 R1 - 0x5C280400, // 00FE MOVE R10 R2 - 0x5C2C0600, // 00FF MOVE R11 R3 - 0x7C1C0800, // 0100 CALL R7 4 - 0x80040E00, // 0101 RET 1 R7 + 0x8C24071A, // 0068 GETMET R9 R3 K26 + 0x882C091B, // 0069 GETMBR R11 R4 K27 + 0x5C301000, // 006A MOVE R12 R8 + 0x7C240600, // 006B CALL R9 3 + 0x80041200, // 006C RET 1 R9 + 0x70020009, // 006D JMP #0078 + 0x8C200706, // 006E GETMET R8 R3 K6 + 0x8828091B, // 006F GETMBR R10 R4 K27 + 0xB82E3800, // 0070 GETNGBL R11 K28 + 0x8C2C171D, // 0071 GETMET R11 R11 K29 + 0x5834001E, // 0072 LDCONST R13 K30 + 0x50380200, // 0073 LDBOOL R14 1 0 + 0x7C2C0600, // 0074 CALL R11 3 + 0x942C171E, // 0075 GETIDX R11 R11 K30 + 0x7C200600, // 0076 CALL R8 3 + 0x80041000, // 0077 RET 1 R8 + 0x70020071, // 0078 JMP #00EB + 0x54220004, // 0079 LDINT R8 5 + 0x1C200C08, // 007A EQ R8 R6 R8 + 0x78220006, // 007B JMPF R8 #0083 + 0x8C200706, // 007C GETMET R8 R3 K6 + 0x8828091B, // 007D GETMBR R10 R4 K27 + 0x8C2C011F, // 007E GETMET R11 R0 K31 + 0x7C2C0200, // 007F CALL R11 1 + 0x7C200600, // 0080 CALL R8 3 + 0x80041000, // 0081 RET 1 R8 + 0x70020067, // 0082 JMP #00EB + 0x54220009, // 0083 LDINT R8 10 + 0x1C200C08, // 0084 EQ R8 R6 R8 + 0x78220033, // 0085 JMPF R8 #00BA + 0x88200116, // 0086 GETMBR R8 R0 K22 + 0x7822001B, // 0087 JMPF R8 #00A4 + 0x88200117, // 0088 GETMBR R8 R0 K23 + 0x8C201118, // 0089 GETMET R8 R8 K24 + 0x7C200200, // 008A CALL R8 1 + 0x8C201111, // 008B GETMET R8 R8 K17 + 0x58280020, // 008C LDCONST R10 K32 + 0x7C200400, // 008D CALL R8 2 + 0x7822000E, // 008E JMPF R8 #009E + 0x8C240F11, // 008F GETMET R9 R7 K17 + 0x5C2C1000, // 0090 MOVE R11 R8 + 0x58300021, // 0091 LDCONST R12 K33 + 0x7C240600, // 0092 CALL R9 3 + 0x24281305, // 0093 GT R10 R9 K5 + 0x782A0002, // 0094 JMPF R10 #0098 + 0x04281308, // 0095 SUB R10 R9 K8 + 0x402A0A0A, // 0096 CONNECT R10 K5 R10 + 0x9420100A, // 0097 GETIDX R8 R8 R10 + 0x8C280706, // 0098 GETMET R10 R3 K6 + 0x8830091B, // 0099 GETMBR R12 R4 K27 + 0x5C341000, // 009A MOVE R13 R8 + 0x7C280600, // 009B CALL R10 3 + 0x80041400, // 009C RET 1 R10 + 0x70020004, // 009D JMP #00A3 + 0x8C240706, // 009E GETMET R9 R3 K6 + 0x882C0922, // 009F GETMBR R11 R4 K34 + 0x4C300000, // 00A0 LDNIL R12 + 0x7C240600, // 00A1 CALL R9 3 + 0x80041200, // 00A2 RET 1 R9 + 0x70020014, // 00A3 JMP #00B9 + 0xB8223800, // 00A4 GETNGBL R8 K28 + 0x8C20111D, // 00A5 GETMET R8 R8 K29 + 0x58280023, // 00A6 LDCONST R10 K35 + 0x502C0200, // 00A7 LDBOOL R11 1 0 + 0x7C200600, // 00A8 CALL R8 3 + 0x94201124, // 00A9 GETIDX R8 R8 K36 + 0x94201125, // 00AA GETIDX R8 R8 K37 + 0x8C240F11, // 00AB GETMET R9 R7 K17 + 0x5C2C1000, // 00AC MOVE R11 R8 + 0x58300021, // 00AD LDCONST R12 K33 + 0x7C240600, // 00AE CALL R9 3 + 0x24281305, // 00AF GT R10 R9 K5 + 0x782A0002, // 00B0 JMPF R10 #00B4 + 0x04281308, // 00B1 SUB R10 R9 K8 + 0x402A0A0A, // 00B2 CONNECT R10 K5 R10 + 0x9420100A, // 00B3 GETIDX R8 R8 R10 + 0x8C280706, // 00B4 GETMET R10 R3 K6 + 0x8830091B, // 00B5 GETMBR R12 R4 K27 + 0x5C341000, // 00B6 MOVE R13 R8 + 0x7C280600, // 00B7 CALL R10 3 + 0x80041400, // 00B8 RET 1 R10 + 0x70020030, // 00B9 JMP #00EB + 0x5422000E, // 00BA LDINT R8 15 + 0x1C200C08, // 00BB EQ R8 R6 R8 + 0x74220002, // 00BC JMPT R8 #00C0 + 0x54220011, // 00BD LDINT R8 18 + 0x1C200C08, // 00BE EQ R8 R6 R8 + 0x78220019, // 00BF JMPF R8 #00DA + 0x88200116, // 00C0 GETMBR R8 R0 K22 + 0x7822000B, // 00C1 JMPF R8 #00CE + 0x88200117, // 00C2 GETMBR R8 R0 K23 + 0x8C201118, // 00C3 GETMET R8 R8 K24 + 0x7C200200, // 00C4 CALL R8 1 + 0x8C201111, // 00C5 GETMET R8 R8 K17 + 0x58280026, // 00C6 LDCONST R10 K38 + 0x7C200400, // 00C7 CALL R8 2 + 0x8C24071A, // 00C8 GETMET R9 R3 K26 + 0x882C091B, // 00C9 GETMBR R11 R4 K27 + 0x5C301000, // 00CA MOVE R12 R8 + 0x7C240600, // 00CB CALL R9 3 + 0x80041200, // 00CC RET 1 R9 + 0x7002000A, // 00CD JMP #00D9 + 0x8C200706, // 00CE GETMET R8 R3 K6 + 0x8828091B, // 00CF GETMBR R10 R4 K27 + 0xB82E3800, // 00D0 GETNGBL R11 K28 + 0x8C2C1727, // 00D1 GETMET R11 R11 K39 + 0x7C2C0200, // 00D2 CALL R11 1 + 0x8C2C1711, // 00D3 GETMET R11 R11 K17 + 0x58340026, // 00D4 LDCONST R13 K38 + 0x58380028, // 00D5 LDCONST R14 K40 + 0x7C2C0600, // 00D6 CALL R11 3 + 0x7C200600, // 00D7 CALL R8 3 + 0x80041000, // 00D8 RET 1 R8 + 0x70020010, // 00D9 JMP #00EB + 0x54220010, // 00DA LDINT R8 17 + 0x1C200C08, // 00DB EQ R8 R6 R8 + 0x7822000D, // 00DC JMPF R8 #00EB + 0x88200116, // 00DD GETMBR R8 R0 K22 + 0x78220006, // 00DE JMPF R8 #00E6 + 0x8C200706, // 00DF GETMET R8 R3 K6 + 0x88280929, // 00E0 GETMBR R10 R4 K41 + 0x882C0117, // 00E1 GETMBR R11 R0 K23 + 0x882C172A, // 00E2 GETMBR R11 R11 K42 + 0x7C200600, // 00E3 CALL R8 3 + 0x80041000, // 00E4 RET 1 R8 + 0x70020004, // 00E5 JMP #00EB + 0x8C200706, // 00E6 GETMET R8 R3 K6 + 0x88280929, // 00E7 GETMBR R10 R4 K41 + 0x582C0008, // 00E8 LDCONST R11 K8 + 0x7C200600, // 00E9 CALL R8 3 + 0x80041000, // 00EA RET 1 R8 + 0x601C0003, // 00EB GETGBL R7 G3 + 0x5C200000, // 00EC MOVE R8 R0 + 0x7C1C0200, // 00ED CALL R7 1 + 0x8C1C0F2B, // 00EE GETMET R7 R7 K43 + 0x5C240200, // 00EF MOVE R9 R1 + 0x5C280400, // 00F0 MOVE R10 R2 + 0x5C2C0600, // 00F1 MOVE R11 R3 + 0x7C1C0800, // 00F2 CALL R7 4 + 0x80040E00, // 00F3 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index 98b17f5ea..aebdbd01e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -20,7 +20,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Root, 1, /* has constants */ - ( &(const bvalue[94]) { /* constants */ + ( &(const bvalue[95]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -98,27 +98,28 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ /* K74 */ be_nested_str_weak(is_commissioning_open), /* K75 */ be_nested_str_weak(is_root_commissioning_open), /* K76 */ be_nested_str_weak(commissioning_admin_fabric), - /* K77 */ be_nested_str_weak(Tasmota), - /* K78 */ be_nested_str_weak(vendorid), - /* K79 */ be_nested_str_weak(DeviceName), - /* K80 */ be_nested_str_weak(FriendlyName), - /* K81 */ be_nested_str_weak(FriendlyName1), - /* K82 */ be_nested_str_weak(XX), - /* K83 */ be_nested_str_weak(Status_X202), - /* K84 */ be_nested_str_weak(StatusFWR), - /* K85 */ be_nested_str_weak(Hardware), - /* K86 */ be_nested_str_weak(Version), - /* K87 */ be_nested_str_weak(_X28), - /* K88 */ be_nested_str_weak(locale), - /* K89 */ be_nested_str_weak(create_TLV), - /* K90 */ be_nested_str_weak(get_active_endpoints), - /* K91 */ be_nested_str_weak(disable_bridge_mode), - /* K92 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K93 */ be_nested_str_weak(read_attribute), + /* K77 */ be_nested_str_weak(set_or_nil), + /* K78 */ be_nested_str_weak(Tasmota), + /* K79 */ be_nested_str_weak(vendorid), + /* K80 */ be_nested_str_weak(DeviceName), + /* K81 */ be_nested_str_weak(FriendlyName), + /* K82 */ be_nested_str_weak(FriendlyName1), + /* K83 */ be_nested_str_weak(XX), + /* K84 */ be_nested_str_weak(Status_X202), + /* K85 */ be_nested_str_weak(StatusFWR), + /* K86 */ be_nested_str_weak(Hardware), + /* K87 */ be_nested_str_weak(Version), + /* K88 */ be_nested_str_weak(_X28), + /* K89 */ be_nested_str_weak(locale), + /* K90 */ be_nested_str_weak(create_TLV), + /* K91 */ be_nested_str_weak(get_active_endpoints), + /* K92 */ be_nested_str_weak(disable_bridge_mode), + /* K93 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K94 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[936]) { /* code */ + ( &(const binstruction[924]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -175,11 +176,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x502C0000, // 0035 LDBOOL R11 0 0 0x7C200600, // 0036 CALL R8 3 0x80041000, // 0037 RET 1 R8 - 0x70020365, // 0038 JMP #039F + 0x70020359, // 0038 JMP #0393 0x54220031, // 0039 LDINT R8 50 0x1C200C08, // 003A EQ R8 R6 R8 0x78220000, // 003B JMPF R8 #003D - 0x70020361, // 003C JMP #039F + 0x70020355, // 003C JMP #0393 0x54220032, // 003D LDINT R8 51 0x1C200C08, // 003E EQ R8 R6 R8 0x782200DC, // 003F JMPF R8 #011D @@ -403,11 +404,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x502C0000, // 0119 LDBOOL R11 0 0 0x7C200600, // 011A CALL R8 3 0x80041000, // 011B RET 1 R8 - 0x70020281, // 011C JMP #039F + 0x70020275, // 011C JMP #0393 0x54220033, // 011D LDINT R8 52 0x1C200C08, // 011E EQ R8 R6 R8 0x78220000, // 011F JMPF R8 #0121 - 0x7002027D, // 0120 JMP #039F + 0x70020271, // 0120 JMP #0393 0x54220037, // 0121 LDINT R8 56 0x1C200C08, // 0122 EQ R8 R6 R8 0x7822002B, // 0123 JMPF R8 #0150 @@ -442,8 +443,8 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0xB8225C00, // 0140 GETNGBL R8 K46 0xB8262400, // 0141 GETNGBL R9 K18 0x8C241331, // 0142 GETMET R9 R9 K49 - 0x7C240200, // 0143 CALL R9 1 - 0x94241332, // 0144 GETIDX R9 R9 K50 + 0x582C0032, // 0143 LDCONST R11 K50 + 0x7C240400, // 0144 CALL R9 2 0x7C200200, // 0145 CALL R8 1 0xB8265C00, // 0146 GETNGBL R9 K46 0x58280030, // 0147 LDCONST R10 K48 @@ -454,7 +455,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x5C301000, // 014C MOVE R12 R8 0x7C240600, // 014D CALL R9 3 0x80041200, // 014E RET 1 R9 - 0x7002024E, // 014F JMP #039F + 0x70020242, // 014F JMP #0393 0x5422003D, // 0150 LDINT R8 62 0x1C200C08, // 0151 EQ R8 R6 R8 0x782200B5, // 0152 JMPF R8 #0209 @@ -639,10 +640,10 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x5C301000, // 0205 MOVE R12 R8 0x7C240600, // 0206 CALL R9 3 0x80041200, // 0207 RET 1 R9 - 0x70020195, // 0208 JMP #039F + 0x70020189, // 0208 JMP #0393 0x5422003B, // 0209 LDINT R8 60 0x1C200C08, // 020A EQ R8 R6 R8 - 0x7822003C, // 020B JMPF R8 #0249 + 0x78220030, // 020B JMPF R8 #023D 0x1C200F05, // 020C EQ R8 R7 K5 0x78220012, // 020D JMPF R8 #0221 0x88200136, // 020E GETMBR R8 R0 K54 @@ -663,398 +664,386 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x5C381400, // 021D MOVE R14 R10 0x7C2C0600, // 021E CALL R11 3 0x80041600, // 021F RET 1 R11 - 0x70020026, // 0220 JMP #0248 + 0x7002001A, // 0220 JMP #023C 0x1C200F09, // 0221 EQ R8 R7 K9 - 0x78220011, // 0222 JMPF R8 #0235 + 0x7822000B, // 0222 JMPF R8 #022F 0x88200136, // 0223 GETMBR R8 R0 K54 0x8820114C, // 0224 GETMBR R8 R8 K76 0x4C240000, // 0225 LDNIL R9 0x20241009, // 0226 NE R9 R8 R9 - 0x78260006, // 0227 JMPF R9 #022F - 0x8C240706, // 0228 GETMET R9 R3 K6 + 0x78260005, // 0227 JMPF R9 #022E + 0x8C24074D, // 0228 GETMET R9 R3 K77 0x882C0B0C, // 0229 GETMBR R11 R5 K12 0x8C30113D, // 022A GETMET R12 R8 K61 0x7C300200, // 022B CALL R12 1 0x7C240600, // 022C CALL R9 3 0x80041200, // 022D RET 1 R9 - 0x70020004, // 022E JMP #0234 - 0x8C240706, // 022F GETMET R9 R3 K6 - 0x882C0B18, // 0230 GETMBR R11 R5 K24 - 0x4C300000, // 0231 LDNIL R12 - 0x7C240600, // 0232 CALL R9 3 - 0x80041200, // 0233 RET 1 R9 - 0x70020012, // 0234 JMP #0248 - 0x1C200F0D, // 0235 EQ R8 R7 K13 - 0x78220010, // 0236 JMPF R8 #0248 - 0x88200136, // 0237 GETMBR R8 R0 K54 - 0x8820114C, // 0238 GETMBR R8 R8 K76 - 0x4C240000, // 0239 LDNIL R9 - 0x20241009, // 023A NE R9 R8 R9 - 0x78260006, // 023B JMPF R9 #0243 - 0x8C240706, // 023C GETMET R9 R3 K6 - 0x882C0B0C, // 023D GETMBR R11 R5 K12 - 0x8C301142, // 023E GETMET R12 R8 K66 - 0x7C300200, // 023F CALL R12 1 - 0x7C240600, // 0240 CALL R9 3 - 0x80041200, // 0241 RET 1 R9 - 0x70020004, // 0242 JMP #0248 - 0x8C240706, // 0243 GETMET R9 R3 K6 - 0x882C0B18, // 0244 GETMBR R11 R5 K24 - 0x4C300000, // 0245 LDNIL R12 - 0x7C240600, // 0246 CALL R9 3 - 0x80041200, // 0247 RET 1 R9 - 0x70020155, // 0248 JMP #039F - 0x54220027, // 0249 LDINT R8 40 - 0x1C200C08, // 024A EQ R8 R6 R8 - 0x782200BA, // 024B JMPF R8 #0307 - 0x8C200133, // 024C GETMET R8 R0 K51 - 0x5C280400, // 024D MOVE R10 R2 - 0x7C200400, // 024E CALL R8 2 - 0x1C200F05, // 024F EQ R8 R7 K5 - 0x78220005, // 0250 JMPF R8 #0257 - 0x8C200706, // 0251 GETMET R8 R3 K6 - 0x88280B0C, // 0252 GETMBR R10 R5 K12 - 0x582C0009, // 0253 LDCONST R11 K9 - 0x7C200600, // 0254 CALL R8 3 - 0x80041000, // 0255 RET 1 R8 - 0x700200AE, // 0256 JMP #0306 - 0x1C200F09, // 0257 EQ R8 R7 K9 - 0x78220005, // 0258 JMPF R8 #025F - 0x8C200706, // 0259 GETMET R8 R3 K6 - 0x88280B16, // 025A GETMBR R10 R5 K22 - 0x582C004D, // 025B LDCONST R11 K77 - 0x7C200600, // 025C CALL R8 3 - 0x80041000, // 025D RET 1 R8 - 0x700200A6, // 025E JMP #0306 - 0x1C200F0D, // 025F EQ R8 R7 K13 - 0x78220006, // 0260 JMPF R8 #0268 - 0x8C200706, // 0261 GETMET R8 R3 K6 - 0x88280B0C, // 0262 GETMBR R10 R5 K12 - 0x882C0136, // 0263 GETMBR R11 R0 K54 - 0x882C174E, // 0264 GETMBR R11 R11 K78 - 0x7C200600, // 0265 CALL R8 3 - 0x80041000, // 0266 RET 1 R8 - 0x7002009D, // 0267 JMP #0306 - 0x1C200F0F, // 0268 EQ R8 R7 K15 - 0x7822000A, // 0269 JMPF R8 #0275 - 0x8C200706, // 026A GETMET R8 R3 K6 - 0x88280B16, // 026B GETMBR R10 R5 K22 - 0xB82E2400, // 026C GETNGBL R11 K18 - 0x8C2C1726, // 026D GETMET R11 R11 K38 - 0x5834004F, // 026E LDCONST R13 K79 - 0x50380200, // 026F LDBOOL R14 1 0 - 0x7C2C0600, // 0270 CALL R11 3 - 0x942C174F, // 0271 GETIDX R11 R11 K79 - 0x7C200600, // 0272 CALL R8 3 - 0x80041000, // 0273 RET 1 R8 - 0x70020090, // 0274 JMP #0306 - 0x54220003, // 0275 LDINT R8 4 - 0x1C200E08, // 0276 EQ R8 R7 R8 - 0x78220005, // 0277 JMPF R8 #027E - 0x8C200706, // 0278 GETMET R8 R3 K6 - 0x88280B0C, // 0279 GETMBR R10 R5 K12 - 0x542E7FFF, // 027A LDINT R11 32768 - 0x7C200600, // 027B CALL R8 3 - 0x80041000, // 027C RET 1 R8 - 0x70020087, // 027D JMP #0306 - 0x54220004, // 027E LDINT R8 5 - 0x1C200E08, // 027F EQ R8 R7 R8 - 0x7822000A, // 0280 JMPF R8 #028C - 0x8C200706, // 0281 GETMET R8 R3 K6 - 0x88280B16, // 0282 GETMBR R10 R5 K22 - 0xB82E2400, // 0283 GETNGBL R11 K18 - 0x8C2C1726, // 0284 GETMET R11 R11 K38 - 0x58340050, // 0285 LDCONST R13 K80 - 0x50380200, // 0286 LDBOOL R14 1 0 - 0x7C2C0600, // 0287 CALL R11 3 - 0x942C1751, // 0288 GETIDX R11 R11 K81 - 0x7C200600, // 0289 CALL R8 3 - 0x80041000, // 028A RET 1 R8 - 0x70020079, // 028B JMP #0306 - 0x54220005, // 028C LDINT R8 6 - 0x1C200E08, // 028D EQ R8 R7 R8 - 0x78220005, // 028E JMPF R8 #0295 - 0x8C200706, // 028F GETMET R8 R3 K6 - 0x88280B16, // 0290 GETMBR R10 R5 K22 - 0x582C0052, // 0291 LDCONST R11 K82 - 0x7C200600, // 0292 CALL R8 3 - 0x80041000, // 0293 RET 1 R8 - 0x70020070, // 0294 JMP #0306 - 0x54220006, // 0295 LDINT R8 7 - 0x1C200E08, // 0296 EQ R8 R7 R8 - 0x78220005, // 0297 JMPF R8 #029E - 0x8C200706, // 0298 GETMET R8 R3 K6 - 0x88280B0C, // 0299 GETMBR R10 R5 K12 - 0x582C0005, // 029A LDCONST R11 K5 - 0x7C200600, // 029B CALL R8 3 - 0x80041000, // 029C RET 1 R8 - 0x70020067, // 029D JMP #0306 - 0x54220007, // 029E LDINT R8 8 - 0x1C200E08, // 029F EQ R8 R7 R8 - 0x7822000B, // 02A0 JMPF R8 #02AD - 0x8C200706, // 02A1 GETMET R8 R3 K6 - 0x88280B16, // 02A2 GETMBR R10 R5 K22 - 0xB82E2400, // 02A3 GETNGBL R11 K18 - 0x8C2C1726, // 02A4 GETMET R11 R11 K38 - 0x58340053, // 02A5 LDCONST R13 K83 - 0x50380200, // 02A6 LDBOOL R14 1 0 - 0x7C2C0600, // 02A7 CALL R11 3 - 0x942C1754, // 02A8 GETIDX R11 R11 K84 - 0x942C1755, // 02A9 GETIDX R11 R11 K85 - 0x7C200600, // 02AA CALL R8 3 - 0x80041000, // 02AB RET 1 R8 - 0x70020058, // 02AC JMP #0306 - 0x54220008, // 02AD LDINT R8 9 - 0x1C200E08, // 02AE EQ R8 R7 R8 - 0x78220005, // 02AF JMPF R8 #02B6 - 0x8C200706, // 02B0 GETMET R8 R3 K6 - 0x88280B0C, // 02B1 GETMBR R10 R5 K12 - 0x582C0009, // 02B2 LDCONST R11 K9 - 0x7C200600, // 02B3 CALL R8 3 - 0x80041000, // 02B4 RET 1 R8 - 0x7002004F, // 02B5 JMP #0306 - 0x54220009, // 02B6 LDINT R8 10 - 0x1C200E08, // 02B7 EQ R8 R7 R8 - 0x78220015, // 02B8 JMPF R8 #02CF - 0xB8222400, // 02B9 GETNGBL R8 K18 - 0x8C201126, // 02BA GETMET R8 R8 K38 - 0x58280053, // 02BB LDCONST R10 K83 - 0x502C0200, // 02BC LDBOOL R11 1 0 - 0x7C200600, // 02BD CALL R8 3 - 0x94201154, // 02BE GETIDX R8 R8 K84 - 0x94201156, // 02BF GETIDX R8 R8 K86 - 0x8C24091B, // 02C0 GETMET R9 R4 K27 - 0x5C2C1000, // 02C1 MOVE R11 R8 - 0x58300057, // 02C2 LDCONST R12 K87 - 0x7C240600, // 02C3 CALL R9 3 - 0x24281305, // 02C4 GT R10 R9 K5 - 0x782A0002, // 02C5 JMPF R10 #02C9 - 0x04281309, // 02C6 SUB R10 R9 K9 - 0x402A0A0A, // 02C7 CONNECT R10 K5 R10 - 0x9420100A, // 02C8 GETIDX R8 R8 R10 - 0x8C280706, // 02C9 GETMET R10 R3 K6 - 0x88300B16, // 02CA GETMBR R12 R5 K22 - 0x5C341000, // 02CB MOVE R13 R8 - 0x7C280600, // 02CC CALL R10 3 - 0x80041400, // 02CD RET 1 R10 - 0x70020036, // 02CE JMP #0306 - 0x5422000E, // 02CF LDINT R8 15 - 0x1C200E08, // 02D0 EQ R8 R7 R8 - 0x7822000B, // 02D1 JMPF R8 #02DE - 0x8C200706, // 02D2 GETMET R8 R3 K6 - 0x88280B16, // 02D3 GETMBR R10 R5 K22 - 0xB82E2400, // 02D4 GETNGBL R11 K18 - 0x8C2C1725, // 02D5 GETMET R11 R11 K37 - 0x7C2C0200, // 02D6 CALL R11 1 - 0x8C2C171B, // 02D7 GETMET R11 R11 K27 - 0x5834001C, // 02D8 LDCONST R13 K28 - 0x5838001D, // 02D9 LDCONST R14 K29 - 0x7C2C0600, // 02DA CALL R11 3 - 0x7C200600, // 02DB CALL R8 3 - 0x80041000, // 02DC RET 1 R8 - 0x70020027, // 02DD JMP #0306 - 0x54220010, // 02DE LDINT R8 17 - 0x1C200E08, // 02DF EQ R8 R7 R8 - 0x78220005, // 02E0 JMPF R8 #02E7 - 0x8C200706, // 02E1 GETMET R8 R3 K6 - 0x88280B10, // 02E2 GETMBR R10 R5 K16 - 0x582C0009, // 02E3 LDCONST R11 K9 - 0x7C200600, // 02E4 CALL R8 3 - 0x80041000, // 02E5 RET 1 R8 - 0x7002001E, // 02E6 JMP #0306 - 0x54220011, // 02E7 LDINT R8 18 - 0x1C200E08, // 02E8 EQ R8 R7 R8 - 0x7822000B, // 02E9 JMPF R8 #02F6 - 0x8C200706, // 02EA GETMET R8 R3 K6 - 0x88280B16, // 02EB GETMBR R10 R5 K22 - 0xB82E2400, // 02EC GETNGBL R11 K18 - 0x8C2C1725, // 02ED GETMET R11 R11 K37 - 0x7C2C0200, // 02EE CALL R11 1 - 0x8C2C171B, // 02EF GETMET R11 R11 K27 - 0x5834001C, // 02F0 LDCONST R13 K28 - 0x5838001D, // 02F1 LDCONST R14 K29 - 0x7C2C0600, // 02F2 CALL R11 3 - 0x7C200600, // 02F3 CALL R8 3 - 0x80041000, // 02F4 RET 1 R8 - 0x7002000F, // 02F5 JMP #0306 - 0x54220012, // 02F6 LDINT R8 19 - 0x1C200E08, // 02F7 EQ R8 R7 R8 - 0x7822000C, // 02F8 JMPF R8 #0306 - 0x8C200B0A, // 02F9 GETMET R8 R5 K10 - 0x7C200200, // 02FA CALL R8 1 - 0x8C24110B, // 02FB GETMET R9 R8 K11 - 0x582C0005, // 02FC LDCONST R11 K5 - 0x88300B0C, // 02FD GETMBR R12 R5 K12 - 0x5834000F, // 02FE LDCONST R13 K15 - 0x7C240800, // 02FF CALL R9 4 - 0x8C24110B, // 0300 GETMET R9 R8 K11 - 0x582C0009, // 0301 LDCONST R11 K9 - 0x88300B0C, // 0302 GETMBR R12 R5 K12 - 0x5834000F, // 0303 LDCONST R13 K15 - 0x7C240800, // 0304 CALL R9 4 - 0x80041000, // 0305 RET 1 R8 - 0x70020097, // 0306 JMP #039F - 0x5422003E, // 0307 LDINT R8 63 - 0x1C200C08, // 0308 EQ R8 R6 R8 - 0x78220000, // 0309 JMPF R8 #030B - 0x70020093, // 030A JMP #039F - 0x54220029, // 030B LDINT R8 42 - 0x1C200C08, // 030C EQ R8 R6 R8 - 0x7822001D, // 030D JMPF R8 #032C - 0x1C200F05, // 030E EQ R8 R7 K5 - 0x78220003, // 030F JMPF R8 #0314 - 0x8C200B11, // 0310 GETMET R8 R5 K17 - 0x7C200200, // 0311 CALL R8 1 - 0x80041000, // 0312 RET 1 R8 - 0x70020016, // 0313 JMP #032B - 0x1C200F09, // 0314 EQ R8 R7 K9 - 0x78220005, // 0315 JMPF R8 #031C - 0x8C200706, // 0316 GETMET R8 R3 K6 - 0x88280B10, // 0317 GETMBR R10 R5 K16 - 0x582C0005, // 0318 LDCONST R11 K5 - 0x7C200600, // 0319 CALL R8 3 - 0x80041000, // 031A RET 1 R8 - 0x7002000E, // 031B JMP #032B - 0x1C200F0D, // 031C EQ R8 R7 K13 - 0x78220005, // 031D JMPF R8 #0324 - 0x8C200706, // 031E GETMET R8 R3 K6 - 0x88280B0E, // 031F GETMBR R10 R5 K14 - 0x582C0009, // 0320 LDCONST R11 K9 - 0x7C200600, // 0321 CALL R8 3 - 0x80041000, // 0322 RET 1 R8 - 0x70020006, // 0323 JMP #032B - 0x1C200F0F, // 0324 EQ R8 R7 K15 - 0x78220004, // 0325 JMPF R8 #032B - 0x8C200706, // 0326 GETMET R8 R3 K6 - 0x88280B18, // 0327 GETMBR R10 R5 K24 - 0x4C2C0000, // 0328 LDNIL R11 - 0x7C200600, // 0329 CALL R8 3 - 0x80041000, // 032A RET 1 R8 - 0x70020072, // 032B JMP #039F - 0x5422002A, // 032C LDINT R8 43 - 0x1C200C08, // 032D EQ R8 R6 R8 - 0x78220016, // 032E JMPF R8 #0346 - 0x1C200F05, // 032F EQ R8 R7 K5 - 0x78220007, // 0330 JMPF R8 #0339 - 0x8C200706, // 0331 GETMET R8 R3 K6 - 0x88280B16, // 0332 GETMBR R10 R5 K22 - 0xB82E2400, // 0333 GETNGBL R11 K18 - 0x8C2C1758, // 0334 GETMET R11 R11 K88 - 0x7C2C0200, // 0335 CALL R11 1 - 0x7C200600, // 0336 CALL R8 3 - 0x80041000, // 0337 RET 1 R8 - 0x7002000B, // 0338 JMP #0345 - 0x1C200F09, // 0339 EQ R8 R7 K9 - 0x78220009, // 033A JMPF R8 #0345 - 0x8C200B11, // 033B GETMET R8 R5 K17 - 0x7C200200, // 033C CALL R8 1 - 0x8C24110B, // 033D GETMET R9 R8 K11 - 0x4C2C0000, // 033E LDNIL R11 - 0x88300B16, // 033F GETMBR R12 R5 K22 - 0xB8362400, // 0340 GETNGBL R13 K18 - 0x8C341B58, // 0341 GETMET R13 R13 K88 - 0x7C340200, // 0342 CALL R13 1 - 0x7C240800, // 0343 CALL R9 4 - 0x80041000, // 0344 RET 1 R8 - 0x70020058, // 0345 JMP #039F - 0x5422002B, // 0346 LDINT R8 44 - 0x1C200C08, // 0347 EQ R8 R6 R8 - 0x7822001C, // 0348 JMPF R8 #0366 - 0x1C200F05, // 0349 EQ R8 R7 K5 - 0x78220005, // 034A JMPF R8 #0351 - 0x8C200706, // 034B GETMET R8 R3 K6 - 0x88280B0E, // 034C GETMBR R10 R5 K14 - 0x582C0009, // 034D LDCONST R11 K9 - 0x7C200600, // 034E CALL R8 3 - 0x80041000, // 034F RET 1 R8 - 0x70020013, // 0350 JMP #0365 - 0x1C200F09, // 0351 EQ R8 R7 K9 - 0x78220005, // 0352 JMPF R8 #0359 - 0x8C200706, // 0353 GETMET R8 R3 K6 - 0x88280B0E, // 0354 GETMBR R10 R5 K14 - 0x542E0003, // 0355 LDINT R11 4 - 0x7C200600, // 0356 CALL R8 3 - 0x80041000, // 0357 RET 1 R8 - 0x7002000B, // 0358 JMP #0365 - 0x1C200F0D, // 0359 EQ R8 R7 K13 - 0x78220009, // 035A JMPF R8 #0365 - 0x8C200B11, // 035B GETMET R8 R5 K17 - 0x7C200200, // 035C CALL R8 1 - 0x8C24110B, // 035D GETMET R9 R8 K11 - 0x4C2C0000, // 035E LDNIL R11 - 0x8C300B59, // 035F GETMET R12 R5 K89 - 0x88380B0E, // 0360 GETMBR R14 R5 K14 - 0x543E0003, // 0361 LDINT R15 4 - 0x7C300600, // 0362 CALL R12 3 - 0x7C240600, // 0363 CALL R9 3 - 0x80041000, // 0364 RET 1 R8 - 0x70020038, // 0365 JMP #039F - 0x54220030, // 0366 LDINT R8 49 - 0x1C200C08, // 0367 EQ R8 R6 R8 - 0x78220007, // 0368 JMPF R8 #0371 - 0x1C200F0F, // 0369 EQ R8 R7 K15 - 0x78220004, // 036A JMPF R8 #0370 - 0x8C200706, // 036B GETMET R8 R3 K6 - 0x88280B0E, // 036C GETMBR R10 R5 K14 - 0x542E001D, // 036D LDINT R11 30 - 0x7C200600, // 036E CALL R8 3 - 0x80041000, // 036F RET 1 R8 - 0x7002002D, // 0370 JMP #039F - 0x5422001C, // 0371 LDINT R8 29 - 0x1C200C08, // 0372 EQ R8 R6 R8 - 0x7822002A, // 0373 JMPF R8 #039F - 0x1C200F0D, // 0374 EQ R8 R7 K13 - 0x78220008, // 0375 JMPF R8 #037F - 0x8C200B11, // 0376 GETMET R8 R5 K17 - 0x7C200200, // 0377 CALL R8 1 - 0x8C24110B, // 0378 GETMET R9 R8 K11 - 0x4C2C0000, // 0379 LDNIL R11 - 0x88300B0C, // 037A GETMBR R12 R5 K12 - 0x5436001E, // 037B LDINT R13 31 - 0x7C240800, // 037C CALL R9 4 - 0x80041000, // 037D RET 1 R8 - 0x7002001F, // 037E JMP #039F - 0x1C200F0F, // 037F EQ R8 R7 K15 - 0x7822001D, // 0380 JMPF R8 #039F - 0x8C200B11, // 0381 GETMET R8 R5 K17 - 0x7C200200, // 0382 CALL R8 1 - 0x88240136, // 0383 GETMBR R9 R0 K54 - 0x8C24135A, // 0384 GETMET R9 R9 K90 - 0x502C0200, // 0385 LDBOOL R11 1 0 - 0x7C240400, // 0386 CALL R9 2 - 0x88280136, // 0387 GETMBR R10 R0 K54 - 0x8828155B, // 0388 GETMBR R10 R10 K91 - 0x602C0010, // 0389 GETGBL R11 G16 - 0x5C301200, // 038A MOVE R12 R9 - 0x7C2C0200, // 038B CALL R11 1 - 0xA802000D, // 038C EXBLK 0 #039B - 0x5C301600, // 038D MOVE R12 R11 - 0x7C300000, // 038E CALL R12 0 - 0x5C341400, // 038F MOVE R13 R10 - 0x78360003, // 0390 JMPF R13 #0395 - 0xB8360200, // 0391 GETNGBL R13 K1 - 0x88341B5C, // 0392 GETMBR R13 R13 K92 - 0x2034180D, // 0393 NE R13 R12 R13 - 0x78360004, // 0394 JMPF R13 #039A - 0x8C34110B, // 0395 GETMET R13 R8 K11 - 0x4C3C0000, // 0396 LDNIL R15 - 0x88400B0C, // 0397 GETMBR R16 R5 K12 - 0x5C441800, // 0398 MOVE R17 R12 - 0x7C340800, // 0399 CALL R13 4 - 0x7001FFF1, // 039A JMP #038D - 0x582C003E, // 039B LDCONST R11 K62 - 0xAC2C0200, // 039C CATCH R11 1 0 - 0xB0080000, // 039D RAISE 2 R0 R0 - 0x80041000, // 039E RET 1 R8 - 0x60200003, // 039F GETGBL R8 G3 - 0x5C240000, // 03A0 MOVE R9 R0 - 0x7C200200, // 03A1 CALL R8 1 - 0x8C20115D, // 03A2 GETMET R8 R8 K93 - 0x5C280200, // 03A3 MOVE R10 R1 - 0x5C2C0400, // 03A4 MOVE R11 R2 - 0x5C300600, // 03A5 MOVE R12 R3 - 0x7C200800, // 03A6 CALL R8 4 - 0x80041000, // 03A7 RET 1 R8 + 0x7002000C, // 022E JMP #023C + 0x1C200F0D, // 022F EQ R8 R7 K13 + 0x7822000A, // 0230 JMPF R8 #023C + 0x88200136, // 0231 GETMBR R8 R0 K54 + 0x8820114C, // 0232 GETMBR R8 R8 K76 + 0x4C240000, // 0233 LDNIL R9 + 0x20241009, // 0234 NE R9 R8 R9 + 0x78260005, // 0235 JMPF R9 #023C + 0x8C24074D, // 0236 GETMET R9 R3 K77 + 0x882C0B0C, // 0237 GETMBR R11 R5 K12 + 0x8C301142, // 0238 GETMET R12 R8 K66 + 0x7C300200, // 0239 CALL R12 1 + 0x7C240600, // 023A CALL R9 3 + 0x80041200, // 023B RET 1 R9 + 0x70020155, // 023C JMP #0393 + 0x54220027, // 023D LDINT R8 40 + 0x1C200C08, // 023E EQ R8 R6 R8 + 0x782200BA, // 023F JMPF R8 #02FB + 0x8C200133, // 0240 GETMET R8 R0 K51 + 0x5C280400, // 0241 MOVE R10 R2 + 0x7C200400, // 0242 CALL R8 2 + 0x1C200F05, // 0243 EQ R8 R7 K5 + 0x78220005, // 0244 JMPF R8 #024B + 0x8C200706, // 0245 GETMET R8 R3 K6 + 0x88280B0C, // 0246 GETMBR R10 R5 K12 + 0x582C0009, // 0247 LDCONST R11 K9 + 0x7C200600, // 0248 CALL R8 3 + 0x80041000, // 0249 RET 1 R8 + 0x700200AE, // 024A JMP #02FA + 0x1C200F09, // 024B EQ R8 R7 K9 + 0x78220005, // 024C JMPF R8 #0253 + 0x8C200706, // 024D GETMET R8 R3 K6 + 0x88280B16, // 024E GETMBR R10 R5 K22 + 0x582C004E, // 024F LDCONST R11 K78 + 0x7C200600, // 0250 CALL R8 3 + 0x80041000, // 0251 RET 1 R8 + 0x700200A6, // 0252 JMP #02FA + 0x1C200F0D, // 0253 EQ R8 R7 K13 + 0x78220006, // 0254 JMPF R8 #025C + 0x8C200706, // 0255 GETMET R8 R3 K6 + 0x88280B0C, // 0256 GETMBR R10 R5 K12 + 0x882C0136, // 0257 GETMBR R11 R0 K54 + 0x882C174F, // 0258 GETMBR R11 R11 K79 + 0x7C200600, // 0259 CALL R8 3 + 0x80041000, // 025A RET 1 R8 + 0x7002009D, // 025B JMP #02FA + 0x1C200F0F, // 025C EQ R8 R7 K15 + 0x7822000A, // 025D JMPF R8 #0269 + 0x8C200706, // 025E GETMET R8 R3 K6 + 0x88280B16, // 025F GETMBR R10 R5 K22 + 0xB82E2400, // 0260 GETNGBL R11 K18 + 0x8C2C1726, // 0261 GETMET R11 R11 K38 + 0x58340050, // 0262 LDCONST R13 K80 + 0x50380200, // 0263 LDBOOL R14 1 0 + 0x7C2C0600, // 0264 CALL R11 3 + 0x942C1750, // 0265 GETIDX R11 R11 K80 + 0x7C200600, // 0266 CALL R8 3 + 0x80041000, // 0267 RET 1 R8 + 0x70020090, // 0268 JMP #02FA + 0x54220003, // 0269 LDINT R8 4 + 0x1C200E08, // 026A EQ R8 R7 R8 + 0x78220005, // 026B JMPF R8 #0272 + 0x8C200706, // 026C GETMET R8 R3 K6 + 0x88280B0C, // 026D GETMBR R10 R5 K12 + 0x542E7FFF, // 026E LDINT R11 32768 + 0x7C200600, // 026F CALL R8 3 + 0x80041000, // 0270 RET 1 R8 + 0x70020087, // 0271 JMP #02FA + 0x54220004, // 0272 LDINT R8 5 + 0x1C200E08, // 0273 EQ R8 R7 R8 + 0x7822000A, // 0274 JMPF R8 #0280 + 0x8C200706, // 0275 GETMET R8 R3 K6 + 0x88280B16, // 0276 GETMBR R10 R5 K22 + 0xB82E2400, // 0277 GETNGBL R11 K18 + 0x8C2C1726, // 0278 GETMET R11 R11 K38 + 0x58340051, // 0279 LDCONST R13 K81 + 0x50380200, // 027A LDBOOL R14 1 0 + 0x7C2C0600, // 027B CALL R11 3 + 0x942C1752, // 027C GETIDX R11 R11 K82 + 0x7C200600, // 027D CALL R8 3 + 0x80041000, // 027E RET 1 R8 + 0x70020079, // 027F JMP #02FA + 0x54220005, // 0280 LDINT R8 6 + 0x1C200E08, // 0281 EQ R8 R7 R8 + 0x78220005, // 0282 JMPF R8 #0289 + 0x8C200706, // 0283 GETMET R8 R3 K6 + 0x88280B16, // 0284 GETMBR R10 R5 K22 + 0x582C0053, // 0285 LDCONST R11 K83 + 0x7C200600, // 0286 CALL R8 3 + 0x80041000, // 0287 RET 1 R8 + 0x70020070, // 0288 JMP #02FA + 0x54220006, // 0289 LDINT R8 7 + 0x1C200E08, // 028A EQ R8 R7 R8 + 0x78220005, // 028B JMPF R8 #0292 + 0x8C200706, // 028C GETMET R8 R3 K6 + 0x88280B0C, // 028D GETMBR R10 R5 K12 + 0x582C0005, // 028E LDCONST R11 K5 + 0x7C200600, // 028F CALL R8 3 + 0x80041000, // 0290 RET 1 R8 + 0x70020067, // 0291 JMP #02FA + 0x54220007, // 0292 LDINT R8 8 + 0x1C200E08, // 0293 EQ R8 R7 R8 + 0x7822000B, // 0294 JMPF R8 #02A1 + 0x8C200706, // 0295 GETMET R8 R3 K6 + 0x88280B16, // 0296 GETMBR R10 R5 K22 + 0xB82E2400, // 0297 GETNGBL R11 K18 + 0x8C2C1726, // 0298 GETMET R11 R11 K38 + 0x58340054, // 0299 LDCONST R13 K84 + 0x50380200, // 029A LDBOOL R14 1 0 + 0x7C2C0600, // 029B CALL R11 3 + 0x942C1755, // 029C GETIDX R11 R11 K85 + 0x942C1756, // 029D GETIDX R11 R11 K86 + 0x7C200600, // 029E CALL R8 3 + 0x80041000, // 029F RET 1 R8 + 0x70020058, // 02A0 JMP #02FA + 0x54220008, // 02A1 LDINT R8 9 + 0x1C200E08, // 02A2 EQ R8 R7 R8 + 0x78220005, // 02A3 JMPF R8 #02AA + 0x8C200706, // 02A4 GETMET R8 R3 K6 + 0x88280B0C, // 02A5 GETMBR R10 R5 K12 + 0x582C0009, // 02A6 LDCONST R11 K9 + 0x7C200600, // 02A7 CALL R8 3 + 0x80041000, // 02A8 RET 1 R8 + 0x7002004F, // 02A9 JMP #02FA + 0x54220009, // 02AA LDINT R8 10 + 0x1C200E08, // 02AB EQ R8 R7 R8 + 0x78220015, // 02AC JMPF R8 #02C3 + 0xB8222400, // 02AD GETNGBL R8 K18 + 0x8C201126, // 02AE GETMET R8 R8 K38 + 0x58280054, // 02AF LDCONST R10 K84 + 0x502C0200, // 02B0 LDBOOL R11 1 0 + 0x7C200600, // 02B1 CALL R8 3 + 0x94201155, // 02B2 GETIDX R8 R8 K85 + 0x94201157, // 02B3 GETIDX R8 R8 K87 + 0x8C24091B, // 02B4 GETMET R9 R4 K27 + 0x5C2C1000, // 02B5 MOVE R11 R8 + 0x58300058, // 02B6 LDCONST R12 K88 + 0x7C240600, // 02B7 CALL R9 3 + 0x24281305, // 02B8 GT R10 R9 K5 + 0x782A0002, // 02B9 JMPF R10 #02BD + 0x04281309, // 02BA SUB R10 R9 K9 + 0x402A0A0A, // 02BB CONNECT R10 K5 R10 + 0x9420100A, // 02BC GETIDX R8 R8 R10 + 0x8C280706, // 02BD GETMET R10 R3 K6 + 0x88300B16, // 02BE GETMBR R12 R5 K22 + 0x5C341000, // 02BF MOVE R13 R8 + 0x7C280600, // 02C0 CALL R10 3 + 0x80041400, // 02C1 RET 1 R10 + 0x70020036, // 02C2 JMP #02FA + 0x5422000E, // 02C3 LDINT R8 15 + 0x1C200E08, // 02C4 EQ R8 R7 R8 + 0x7822000B, // 02C5 JMPF R8 #02D2 + 0x8C200706, // 02C6 GETMET R8 R3 K6 + 0x88280B16, // 02C7 GETMBR R10 R5 K22 + 0xB82E2400, // 02C8 GETNGBL R11 K18 + 0x8C2C1725, // 02C9 GETMET R11 R11 K37 + 0x7C2C0200, // 02CA CALL R11 1 + 0x8C2C171B, // 02CB GETMET R11 R11 K27 + 0x5834001C, // 02CC LDCONST R13 K28 + 0x5838001D, // 02CD LDCONST R14 K29 + 0x7C2C0600, // 02CE CALL R11 3 + 0x7C200600, // 02CF CALL R8 3 + 0x80041000, // 02D0 RET 1 R8 + 0x70020027, // 02D1 JMP #02FA + 0x54220010, // 02D2 LDINT R8 17 + 0x1C200E08, // 02D3 EQ R8 R7 R8 + 0x78220005, // 02D4 JMPF R8 #02DB + 0x8C200706, // 02D5 GETMET R8 R3 K6 + 0x88280B10, // 02D6 GETMBR R10 R5 K16 + 0x582C0009, // 02D7 LDCONST R11 K9 + 0x7C200600, // 02D8 CALL R8 3 + 0x80041000, // 02D9 RET 1 R8 + 0x7002001E, // 02DA JMP #02FA + 0x54220011, // 02DB LDINT R8 18 + 0x1C200E08, // 02DC EQ R8 R7 R8 + 0x7822000B, // 02DD JMPF R8 #02EA + 0x8C200706, // 02DE GETMET R8 R3 K6 + 0x88280B16, // 02DF GETMBR R10 R5 K22 + 0xB82E2400, // 02E0 GETNGBL R11 K18 + 0x8C2C1725, // 02E1 GETMET R11 R11 K37 + 0x7C2C0200, // 02E2 CALL R11 1 + 0x8C2C171B, // 02E3 GETMET R11 R11 K27 + 0x5834001C, // 02E4 LDCONST R13 K28 + 0x5838001D, // 02E5 LDCONST R14 K29 + 0x7C2C0600, // 02E6 CALL R11 3 + 0x7C200600, // 02E7 CALL R8 3 + 0x80041000, // 02E8 RET 1 R8 + 0x7002000F, // 02E9 JMP #02FA + 0x54220012, // 02EA LDINT R8 19 + 0x1C200E08, // 02EB EQ R8 R7 R8 + 0x7822000C, // 02EC JMPF R8 #02FA + 0x8C200B0A, // 02ED GETMET R8 R5 K10 + 0x7C200200, // 02EE CALL R8 1 + 0x8C24110B, // 02EF GETMET R9 R8 K11 + 0x582C0005, // 02F0 LDCONST R11 K5 + 0x88300B0C, // 02F1 GETMBR R12 R5 K12 + 0x5834000F, // 02F2 LDCONST R13 K15 + 0x7C240800, // 02F3 CALL R9 4 + 0x8C24110B, // 02F4 GETMET R9 R8 K11 + 0x582C0009, // 02F5 LDCONST R11 K9 + 0x88300B0C, // 02F6 GETMBR R12 R5 K12 + 0x5834000F, // 02F7 LDCONST R13 K15 + 0x7C240800, // 02F8 CALL R9 4 + 0x80041000, // 02F9 RET 1 R8 + 0x70020097, // 02FA JMP #0393 + 0x5422003E, // 02FB LDINT R8 63 + 0x1C200C08, // 02FC EQ R8 R6 R8 + 0x78220000, // 02FD JMPF R8 #02FF + 0x70020093, // 02FE JMP #0393 + 0x54220029, // 02FF LDINT R8 42 + 0x1C200C08, // 0300 EQ R8 R6 R8 + 0x7822001D, // 0301 JMPF R8 #0320 + 0x1C200F05, // 0302 EQ R8 R7 K5 + 0x78220003, // 0303 JMPF R8 #0308 + 0x8C200B11, // 0304 GETMET R8 R5 K17 + 0x7C200200, // 0305 CALL R8 1 + 0x80041000, // 0306 RET 1 R8 + 0x70020016, // 0307 JMP #031F + 0x1C200F09, // 0308 EQ R8 R7 K9 + 0x78220005, // 0309 JMPF R8 #0310 + 0x8C200706, // 030A GETMET R8 R3 K6 + 0x88280B10, // 030B GETMBR R10 R5 K16 + 0x582C0005, // 030C LDCONST R11 K5 + 0x7C200600, // 030D CALL R8 3 + 0x80041000, // 030E RET 1 R8 + 0x7002000E, // 030F JMP #031F + 0x1C200F0D, // 0310 EQ R8 R7 K13 + 0x78220005, // 0311 JMPF R8 #0318 + 0x8C200706, // 0312 GETMET R8 R3 K6 + 0x88280B0E, // 0313 GETMBR R10 R5 K14 + 0x582C0009, // 0314 LDCONST R11 K9 + 0x7C200600, // 0315 CALL R8 3 + 0x80041000, // 0316 RET 1 R8 + 0x70020006, // 0317 JMP #031F + 0x1C200F0F, // 0318 EQ R8 R7 K15 + 0x78220004, // 0319 JMPF R8 #031F + 0x8C200706, // 031A GETMET R8 R3 K6 + 0x88280B18, // 031B GETMBR R10 R5 K24 + 0x4C2C0000, // 031C LDNIL R11 + 0x7C200600, // 031D CALL R8 3 + 0x80041000, // 031E RET 1 R8 + 0x70020072, // 031F JMP #0393 + 0x5422002A, // 0320 LDINT R8 43 + 0x1C200C08, // 0321 EQ R8 R6 R8 + 0x78220016, // 0322 JMPF R8 #033A + 0x1C200F05, // 0323 EQ R8 R7 K5 + 0x78220007, // 0324 JMPF R8 #032D + 0x8C200706, // 0325 GETMET R8 R3 K6 + 0x88280B16, // 0326 GETMBR R10 R5 K22 + 0xB82E2400, // 0327 GETNGBL R11 K18 + 0x8C2C1759, // 0328 GETMET R11 R11 K89 + 0x7C2C0200, // 0329 CALL R11 1 + 0x7C200600, // 032A CALL R8 3 + 0x80041000, // 032B RET 1 R8 + 0x7002000B, // 032C JMP #0339 + 0x1C200F09, // 032D EQ R8 R7 K9 + 0x78220009, // 032E JMPF R8 #0339 + 0x8C200B11, // 032F GETMET R8 R5 K17 + 0x7C200200, // 0330 CALL R8 1 + 0x8C24110B, // 0331 GETMET R9 R8 K11 + 0x4C2C0000, // 0332 LDNIL R11 + 0x88300B16, // 0333 GETMBR R12 R5 K22 + 0xB8362400, // 0334 GETNGBL R13 K18 + 0x8C341B59, // 0335 GETMET R13 R13 K89 + 0x7C340200, // 0336 CALL R13 1 + 0x7C240800, // 0337 CALL R9 4 + 0x80041000, // 0338 RET 1 R8 + 0x70020058, // 0339 JMP #0393 + 0x5422002B, // 033A LDINT R8 44 + 0x1C200C08, // 033B EQ R8 R6 R8 + 0x7822001C, // 033C JMPF R8 #035A + 0x1C200F05, // 033D EQ R8 R7 K5 + 0x78220005, // 033E JMPF R8 #0345 + 0x8C200706, // 033F GETMET R8 R3 K6 + 0x88280B0E, // 0340 GETMBR R10 R5 K14 + 0x582C0009, // 0341 LDCONST R11 K9 + 0x7C200600, // 0342 CALL R8 3 + 0x80041000, // 0343 RET 1 R8 + 0x70020013, // 0344 JMP #0359 + 0x1C200F09, // 0345 EQ R8 R7 K9 + 0x78220005, // 0346 JMPF R8 #034D + 0x8C200706, // 0347 GETMET R8 R3 K6 + 0x88280B0E, // 0348 GETMBR R10 R5 K14 + 0x542E0003, // 0349 LDINT R11 4 + 0x7C200600, // 034A CALL R8 3 + 0x80041000, // 034B RET 1 R8 + 0x7002000B, // 034C JMP #0359 + 0x1C200F0D, // 034D EQ R8 R7 K13 + 0x78220009, // 034E JMPF R8 #0359 + 0x8C200B11, // 034F GETMET R8 R5 K17 + 0x7C200200, // 0350 CALL R8 1 + 0x8C24110B, // 0351 GETMET R9 R8 K11 + 0x4C2C0000, // 0352 LDNIL R11 + 0x8C300B5A, // 0353 GETMET R12 R5 K90 + 0x88380B0E, // 0354 GETMBR R14 R5 K14 + 0x543E0003, // 0355 LDINT R15 4 + 0x7C300600, // 0356 CALL R12 3 + 0x7C240600, // 0357 CALL R9 3 + 0x80041000, // 0358 RET 1 R8 + 0x70020038, // 0359 JMP #0393 + 0x54220030, // 035A LDINT R8 49 + 0x1C200C08, // 035B EQ R8 R6 R8 + 0x78220007, // 035C JMPF R8 #0365 + 0x1C200F0F, // 035D EQ R8 R7 K15 + 0x78220004, // 035E JMPF R8 #0364 + 0x8C200706, // 035F GETMET R8 R3 K6 + 0x88280B0E, // 0360 GETMBR R10 R5 K14 + 0x542E001D, // 0361 LDINT R11 30 + 0x7C200600, // 0362 CALL R8 3 + 0x80041000, // 0363 RET 1 R8 + 0x7002002D, // 0364 JMP #0393 + 0x5422001C, // 0365 LDINT R8 29 + 0x1C200C08, // 0366 EQ R8 R6 R8 + 0x7822002A, // 0367 JMPF R8 #0393 + 0x1C200F0D, // 0368 EQ R8 R7 K13 + 0x78220008, // 0369 JMPF R8 #0373 + 0x8C200B11, // 036A GETMET R8 R5 K17 + 0x7C200200, // 036B CALL R8 1 + 0x8C24110B, // 036C GETMET R9 R8 K11 + 0x4C2C0000, // 036D LDNIL R11 + 0x88300B0C, // 036E GETMBR R12 R5 K12 + 0x5436001E, // 036F LDINT R13 31 + 0x7C240800, // 0370 CALL R9 4 + 0x80041000, // 0371 RET 1 R8 + 0x7002001F, // 0372 JMP #0393 + 0x1C200F0F, // 0373 EQ R8 R7 K15 + 0x7822001D, // 0374 JMPF R8 #0393 + 0x8C200B11, // 0375 GETMET R8 R5 K17 + 0x7C200200, // 0376 CALL R8 1 + 0x88240136, // 0377 GETMBR R9 R0 K54 + 0x8C24135B, // 0378 GETMET R9 R9 K91 + 0x502C0200, // 0379 LDBOOL R11 1 0 + 0x7C240400, // 037A CALL R9 2 + 0x88280136, // 037B GETMBR R10 R0 K54 + 0x8828155C, // 037C GETMBR R10 R10 K92 + 0x602C0010, // 037D GETGBL R11 G16 + 0x5C301200, // 037E MOVE R12 R9 + 0x7C2C0200, // 037F CALL R11 1 + 0xA802000D, // 0380 EXBLK 0 #038F + 0x5C301600, // 0381 MOVE R12 R11 + 0x7C300000, // 0382 CALL R12 0 + 0x5C341400, // 0383 MOVE R13 R10 + 0x78360003, // 0384 JMPF R13 #0389 + 0xB8360200, // 0385 GETNGBL R13 K1 + 0x88341B5D, // 0386 GETMBR R13 R13 K93 + 0x2034180D, // 0387 NE R13 R12 R13 + 0x78360004, // 0388 JMPF R13 #038E + 0x8C34110B, // 0389 GETMET R13 R8 K11 + 0x4C3C0000, // 038A LDNIL R15 + 0x88400B0C, // 038B GETMBR R16 R5 K12 + 0x5C441800, // 038C MOVE R17 R12 + 0x7C340800, // 038D CALL R13 4 + 0x7001FFF1, // 038E JMP #0381 + 0x582C003E, // 038F LDCONST R11 K62 + 0xAC2C0200, // 0390 CATCH R11 1 0 + 0xB0080000, // 0391 RAISE 2 R0 R0 + 0x80041000, // 0392 RET 1 R8 + 0x60200003, // 0393 GETGBL R8 G3 + 0x5C240000, // 0394 MOVE R9 R0 + 0x7C200200, // 0395 CALL R8 1 + 0x8C20115E, // 0396 GETMET R8 R8 K94 + 0x5C280200, // 0397 MOVE R10 R1 + 0x5C2C0400, // 0398 MOVE R11 R2 + 0x5C300600, // 0399 MOVE R12 R3 + 0x7C200800, // 039A CALL R8 4 + 0x80041000, // 039B RET 1 R8 }) ) ); @@ -1348,7 +1337,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ }), be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[745]) { /* code */ + ( &(const binstruction[737]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -1449,10 +1438,10 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x80041000, // 0061 RET 1 R8 0x70020000, // 0062 JMP #0064 0xB0063119, // 0063 RAISE 1 K24 K25 - 0x70020281, // 0064 JMP #02E7 + 0x70020279, // 0064 JMP #02DF 0x5422003D, // 0065 LDINT R8 62 0x1C200C08, // 0066 EQ R8 R6 R8 - 0x782201E2, // 0067 JMPF R8 #024B + 0x782201DD, // 0067 JMPF R8 #0246 0x1C200F0E, // 0068 EQ R8 R7 K14 0x7822001D, // 0069 JMPF R8 #0088 0x8C200506, // 006A GETMET R8 R2 K6 @@ -1484,7 +1473,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C280800, // 0084 CALL R10 4 0x900E0910, // 0085 SETMBR R3 K4 K16 0x80041200, // 0086 RET 1 R9 - 0x700201C1, // 0087 JMP #024A + 0x700201BC, // 0087 JMP #0245 0x1C200F05, // 0088 EQ R8 R7 K5 0x7822003C, // 0089 JMPF R8 #00C7 0x8C200506, // 008A GETMET R8 R2 K6 @@ -1547,7 +1536,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C3C0800, // 00C3 CALL R15 4 0x900E0907, // 00C4 SETMBR R3 K4 K7 0x80041C00, // 00C5 RET 1 R14 - 0x70020182, // 00C6 JMP #024A + 0x7002017D, // 00C6 JMP #0245 0x54220003, // 00C7 LDINT R8 4 0x1C200E08, // 00C8 EQ R8 R7 R8 0x7822003C, // 00C9 JMPF R8 #0107 @@ -1611,7 +1600,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x54420004, // 0103 LDINT R16 5 0x900E0810, // 0104 SETMBR R3 K4 R16 0x80041E00, // 0105 RET 1 R15 - 0x70020142, // 0106 JMP #024A + 0x7002013D, // 0106 JMP #0245 0x5422000A, // 0107 LDINT R8 11 0x1C200E08, // 0108 EQ R8 R7 R8 0x7822000B, // 0109 JMPF R8 #0116 @@ -1626,474 +1615,466 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x900E3409, // 0112 SETMBR R3 K26 R9 0x4C240000, // 0113 LDNIL R9 0x80041200, // 0114 RET 1 R9 - 0x70020133, // 0115 JMP #024A + 0x7002012E, // 0115 JMP #0245 0x54220005, // 0116 LDINT R8 6 0x1C200E08, // 0117 EQ R8 R7 R8 - 0x782200BB, // 0118 JMPF R8 #01D5 - 0xB8224400, // 0119 GETNGBL R8 K34 - 0x8C20112C, // 011A GETMET R8 R8 K44 - 0x60280008, // 011B GETGBL R10 G8 - 0x5C2C0400, // 011C MOVE R11 R2 - 0x7C280200, // 011D CALL R10 1 - 0x002A5A0A, // 011E ADD R10 K45 R10 - 0x542E0003, // 011F LDINT R11 4 - 0x7C200600, // 0120 CALL R8 3 - 0x8C200506, // 0121 GETMET R8 R2 K6 - 0x58280005, // 0122 LDCONST R10 K5 - 0x7C200400, // 0123 CALL R8 2 - 0x8C240506, // 0124 GETMET R9 R2 K6 - 0x582C0007, // 0125 LDCONST R11 K7 - 0x7C240400, // 0126 CALL R9 2 - 0x6028000C, // 0127 GETGBL R10 G12 - 0x5C2C1200, // 0128 MOVE R11 R9 - 0x7C280200, // 0129 CALL R10 1 - 0x1C281505, // 012A EQ R10 R10 K5 - 0x782A0000, // 012B JMPF R10 #012D - 0x4C240000, // 012C LDNIL R9 - 0x8C280506, // 012D GETMET R10 R2 K6 - 0x5830000E, // 012E LDCONST R12 K14 - 0x7C280400, // 012F CALL R10 2 - 0x8C2C0506, // 0130 GETMET R11 R2 K6 - 0x58340010, // 0131 LDCONST R13 K16 - 0x7C2C0400, // 0132 CALL R11 2 - 0x8C300506, // 0133 GETMET R12 R2 K6 - 0x543A0003, // 0134 LDINT R14 4 - 0x7C300400, // 0135 CALL R12 2 - 0x8C34032E, // 0136 GETMET R13 R1 K46 - 0x7C340200, // 0137 CALL R13 1 - 0x4C380000, // 0138 LDNIL R14 - 0x1C341A0E, // 0139 EQ R13 R13 R14 - 0x78360006, // 013A JMPF R13 #0142 - 0xB8364400, // 013B GETNGBL R13 K34 - 0x8C341B2C, // 013C GETMET R13 R13 K44 - 0x583C002F, // 013D LDCONST R15 K47 - 0x5840000E, // 013E LDCONST R16 K14 - 0x7C340600, // 013F CALL R13 3 - 0x4C340000, // 0140 LDNIL R13 - 0x80041A00, // 0141 RET 1 R13 - 0x88340116, // 0142 GETMBR R13 R0 K22 - 0x88341B30, // 0143 GETMBR R13 R13 K48 - 0x8C341B31, // 0144 GETMET R13 R13 K49 - 0x7C340200, // 0145 CALL R13 1 - 0x8C381B32, // 0146 GETMET R14 R13 K50 - 0x8C40032E, // 0147 GETMET R16 R1 K46 - 0x7C400200, // 0148 CALL R16 1 - 0x7C380400, // 0149 CALL R14 2 - 0x8C381B33, // 014A GETMET R14 R13 K51 - 0x5C401000, // 014B MOVE R16 R8 - 0x5C441200, // 014C MOVE R17 R9 - 0x7C380600, // 014D CALL R14 3 - 0x8C381B34, // 014E GETMET R14 R13 K52 - 0x5C401400, // 014F MOVE R16 R10 - 0x7C380400, // 0150 CALL R14 2 - 0x8C381B35, // 0151 GETMET R14 R13 K53 - 0x5C401600, // 0152 MOVE R16 R11 - 0x5C441800, // 0153 MOVE R17 R12 - 0x7C380600, // 0154 CALL R14 3 - 0x8C381B36, // 0155 GETMET R14 R13 K54 - 0x8C400337, // 0156 GETMET R16 R1 K55 - 0x7C400200, // 0157 CALL R16 1 - 0x7C380400, // 0158 CALL R14 2 - 0xB83A0200, // 0159 GETNGBL R14 K1 - 0x88381D02, // 015A GETMBR R14 R14 K2 - 0x8C381D38, // 015B GETMET R14 R14 K56 - 0x5C401000, // 015C MOVE R16 R8 - 0x7C380400, // 015D CALL R14 2 - 0x8C3C1D39, // 015E GETMET R15 R14 K57 - 0x54460005, // 015F LDINT R17 6 - 0x7C3C0400, // 0160 CALL R15 2 - 0x8C401F06, // 0161 GETMET R16 R15 K6 - 0x544A0014, // 0162 LDINT R18 21 - 0x7C400400, // 0163 CALL R16 2 - 0x8C441F06, // 0164 GETMET R17 R15 K6 - 0x544E0010, // 0165 LDINT R19 17 - 0x7C440400, // 0166 CALL R17 2 - 0x5C482000, // 0167 MOVE R18 R16 - 0x784A0001, // 0168 JMPF R18 #016B - 0x5C482200, // 0169 MOVE R18 R17 - 0x744A0006, // 016A JMPT R18 #0172 - 0xB84A4400, // 016B GETNGBL R18 K34 - 0x8C48252C, // 016C GETMET R18 R18 K44 - 0x5850003A, // 016D LDCONST R20 K58 - 0x5854000E, // 016E LDCONST R21 K14 - 0x7C480600, // 016F CALL R18 3 - 0x50480000, // 0170 LDBOOL R18 0 0 - 0x80042400, // 0171 RET 1 R18 - 0x60480004, // 0172 GETGBL R18 G4 - 0x5C4C2000, // 0173 MOVE R19 R16 - 0x7C480200, // 0174 CALL R18 1 - 0x1C48253B, // 0175 EQ R18 R18 K59 - 0x784A0007, // 0176 JMPF R18 #017F - 0xB84A7800, // 0177 GETNGBL R18 K60 - 0x8C48253D, // 0178 GETMET R18 R18 K61 - 0x5C502000, // 0179 MOVE R20 R16 - 0x7C480400, // 017A CALL R18 2 - 0x8C48253E, // 017B GETMET R18 R18 K62 - 0x7C480200, // 017C CALL R18 1 - 0x5C402400, // 017D MOVE R16 R18 - 0x70020002, // 017E JMP #0182 - 0x8C48213E, // 017F GETMET R18 R16 K62 - 0x7C480200, // 0180 CALL R18 1 - 0x5C402400, // 0181 MOVE R16 R18 - 0x60480004, // 0182 GETGBL R18 G4 - 0x5C4C2200, // 0183 MOVE R19 R17 - 0x7C480200, // 0184 CALL R18 1 - 0x1C48253B, // 0185 EQ R18 R18 K59 - 0x784A0007, // 0186 JMPF R18 #018F - 0xB84A7800, // 0187 GETNGBL R18 K60 - 0x8C48253D, // 0188 GETMET R18 R18 K61 - 0x5C502200, // 0189 MOVE R20 R17 - 0x7C480400, // 018A CALL R18 2 - 0x8C48253E, // 018B GETMET R18 R18 K62 - 0x7C480200, // 018C CALL R18 1 - 0x5C442400, // 018D MOVE R17 R18 - 0x70020002, // 018E JMP #0192 - 0x8C48233E, // 018F GETMET R18 R17 K62 + 0x782200B8, // 0118 JMPF R8 #01D2 + 0xB8225800, // 0119 GETNGBL R8 K44 + 0x60240008, // 011A GETGBL R9 G8 + 0x5C280400, // 011B MOVE R10 R2 + 0x7C240200, // 011C CALL R9 1 + 0x00265A09, // 011D ADD R9 K45 R9 + 0x542A0003, // 011E LDINT R10 4 + 0x7C200400, // 011F CALL R8 2 + 0x8C200506, // 0120 GETMET R8 R2 K6 + 0x58280005, // 0121 LDCONST R10 K5 + 0x7C200400, // 0122 CALL R8 2 + 0x8C240506, // 0123 GETMET R9 R2 K6 + 0x582C0007, // 0124 LDCONST R11 K7 + 0x7C240400, // 0125 CALL R9 2 + 0x6028000C, // 0126 GETGBL R10 G12 + 0x5C2C1200, // 0127 MOVE R11 R9 + 0x7C280200, // 0128 CALL R10 1 + 0x1C281505, // 0129 EQ R10 R10 K5 + 0x782A0000, // 012A JMPF R10 #012C + 0x4C240000, // 012B LDNIL R9 + 0x8C280506, // 012C GETMET R10 R2 K6 + 0x5830000E, // 012D LDCONST R12 K14 + 0x7C280400, // 012E CALL R10 2 + 0x8C2C0506, // 012F GETMET R11 R2 K6 + 0x58340010, // 0130 LDCONST R13 K16 + 0x7C2C0400, // 0131 CALL R11 2 + 0x8C300506, // 0132 GETMET R12 R2 K6 + 0x543A0003, // 0133 LDINT R14 4 + 0x7C300400, // 0134 CALL R12 2 + 0x8C34032E, // 0135 GETMET R13 R1 K46 + 0x7C340200, // 0136 CALL R13 1 + 0x4C380000, // 0137 LDNIL R14 + 0x1C341A0E, // 0138 EQ R13 R13 R14 + 0x78360005, // 0139 JMPF R13 #0140 + 0xB8365800, // 013A GETNGBL R13 K44 + 0x5838002F, // 013B LDCONST R14 K47 + 0x583C000E, // 013C LDCONST R15 K14 + 0x7C340400, // 013D CALL R13 2 + 0x4C340000, // 013E LDNIL R13 + 0x80041A00, // 013F RET 1 R13 + 0x88340116, // 0140 GETMBR R13 R0 K22 + 0x88341B30, // 0141 GETMBR R13 R13 K48 + 0x8C341B31, // 0142 GETMET R13 R13 K49 + 0x7C340200, // 0143 CALL R13 1 + 0x8C381B32, // 0144 GETMET R14 R13 K50 + 0x8C40032E, // 0145 GETMET R16 R1 K46 + 0x7C400200, // 0146 CALL R16 1 + 0x7C380400, // 0147 CALL R14 2 + 0x8C381B33, // 0148 GETMET R14 R13 K51 + 0x5C401000, // 0149 MOVE R16 R8 + 0x5C441200, // 014A MOVE R17 R9 + 0x7C380600, // 014B CALL R14 3 + 0x8C381B34, // 014C GETMET R14 R13 K52 + 0x5C401400, // 014D MOVE R16 R10 + 0x7C380400, // 014E CALL R14 2 + 0x8C381B35, // 014F GETMET R14 R13 K53 + 0x5C401600, // 0150 MOVE R16 R11 + 0x5C441800, // 0151 MOVE R17 R12 + 0x7C380600, // 0152 CALL R14 3 + 0x8C381B36, // 0153 GETMET R14 R13 K54 + 0x8C400337, // 0154 GETMET R16 R1 K55 + 0x7C400200, // 0155 CALL R16 1 + 0x7C380400, // 0156 CALL R14 2 + 0xB83A0200, // 0157 GETNGBL R14 K1 + 0x88381D02, // 0158 GETMBR R14 R14 K2 + 0x8C381D38, // 0159 GETMET R14 R14 K56 + 0x5C401000, // 015A MOVE R16 R8 + 0x7C380400, // 015B CALL R14 2 + 0x8C3C1D39, // 015C GETMET R15 R14 K57 + 0x54460005, // 015D LDINT R17 6 + 0x7C3C0400, // 015E CALL R15 2 + 0x8C401F06, // 015F GETMET R16 R15 K6 + 0x544A0014, // 0160 LDINT R18 21 + 0x7C400400, // 0161 CALL R16 2 + 0x8C441F06, // 0162 GETMET R17 R15 K6 + 0x544E0010, // 0163 LDINT R19 17 + 0x7C440400, // 0164 CALL R17 2 + 0x5C482000, // 0165 MOVE R18 R16 + 0x784A0001, // 0166 JMPF R18 #0169 + 0x5C482200, // 0167 MOVE R18 R17 + 0x744A0005, // 0168 JMPT R18 #016F + 0xB84A5800, // 0169 GETNGBL R18 K44 + 0x584C003A, // 016A LDCONST R19 K58 + 0x5850000E, // 016B LDCONST R20 K14 + 0x7C480400, // 016C CALL R18 2 + 0x50480000, // 016D LDBOOL R18 0 0 + 0x80042400, // 016E RET 1 R18 + 0x60480004, // 016F GETGBL R18 G4 + 0x5C4C2000, // 0170 MOVE R19 R16 + 0x7C480200, // 0171 CALL R18 1 + 0x1C48253B, // 0172 EQ R18 R18 K59 + 0x784A0007, // 0173 JMPF R18 #017C + 0xB84A7800, // 0174 GETNGBL R18 K60 + 0x8C48253D, // 0175 GETMET R18 R18 K61 + 0x5C502000, // 0176 MOVE R20 R16 + 0x7C480400, // 0177 CALL R18 2 + 0x8C48253E, // 0178 GETMET R18 R18 K62 + 0x7C480200, // 0179 CALL R18 1 + 0x5C402400, // 017A MOVE R16 R18 + 0x70020002, // 017B JMP #017F + 0x8C48213E, // 017C GETMET R18 R16 K62 + 0x7C480200, // 017D CALL R18 1 + 0x5C402400, // 017E MOVE R16 R18 + 0x60480004, // 017F GETGBL R18 G4 + 0x5C4C2200, // 0180 MOVE R19 R17 + 0x7C480200, // 0181 CALL R18 1 + 0x1C48253B, // 0182 EQ R18 R18 K59 + 0x784A0007, // 0183 JMPF R18 #018C + 0xB84A7800, // 0184 GETNGBL R18 K60 + 0x8C48253D, // 0185 GETMET R18 R18 K61 + 0x5C502200, // 0186 MOVE R20 R17 + 0x7C480400, // 0187 CALL R18 2 + 0x8C48253E, // 0188 GETMET R18 R18 K62 + 0x7C480200, // 0189 CALL R18 1 + 0x5C442400, // 018A MOVE R17 R18 + 0x70020002, // 018B JMP #018F + 0x8C48233E, // 018C GETMET R18 R17 K62 + 0x7C480200, // 018D CALL R18 1 + 0x5C442400, // 018E MOVE R17 R18 + 0x8C48033F, // 018F GETMET R18 R1 K63 0x7C480200, // 0190 CALL R18 1 - 0x5C442400, // 0191 MOVE R17 R18 - 0x8C48033F, // 0192 GETMET R18 R1 K63 - 0x7C480200, // 0193 CALL R18 1 - 0x404E0F40, // 0194 CONNECT R19 K7 K64 - 0x94482413, // 0195 GETIDX R18 R18 R19 - 0x604C0015, // 0196 GETGBL R19 G21 - 0x7C4C0000, // 0197 CALL R19 0 - 0x8C4C2741, // 0198 GETMET R19 R19 K65 - 0x58540042, // 0199 LDCONST R21 K66 - 0x7C4C0400, // 019A CALL R19 2 - 0x8C500943, // 019B GETMET R20 R4 K67 - 0x7C500200, // 019C CALL R20 1 - 0x8C542144, // 019D GETMET R21 R16 K68 - 0x7C540200, // 019E CALL R21 1 - 0x8C542B45, // 019F GETMET R21 R21 K69 - 0x7C540200, // 01A0 CALL R21 1 - 0x8C582946, // 01A1 GETMET R22 R20 K70 - 0x5C602400, // 01A2 MOVE R24 R18 - 0x5C642A00, // 01A3 MOVE R25 R21 - 0x5C682600, // 01A4 MOVE R26 R19 - 0x546E0007, // 01A5 LDINT R27 8 - 0x7C580A00, // 01A6 CALL R22 5 - 0x885C0312, // 01A7 GETMBR R23 R1 K18 - 0x785E0001, // 01A8 JMPF R23 #01AB - 0x885C0312, // 01A9 GETMBR R23 R1 K18 - 0x70020001, // 01AA JMP #01AD - 0x885C0116, // 01AB GETMBR R23 R0 K22 - 0x885C2F47, // 01AC GETMBR R23 R23 K71 - 0x8C601B48, // 01AD GETMET R24 R13 K72 - 0x5C682000, // 01AE MOVE R26 R16 - 0x5C6C2200, // 01AF MOVE R27 R17 - 0x5C702C00, // 01B0 MOVE R28 R22 - 0x5C742E00, // 01B1 MOVE R29 R23 - 0x7C600A00, // 01B2 CALL R24 5 - 0x8C601B49, // 01B3 GETMET R24 R13 K73 - 0x7C600200, // 01B4 CALL R24 1 - 0x88600116, // 01B5 GETMBR R24 R0 K22 - 0x8C60314A, // 01B6 GETMET R24 R24 K74 - 0x5C681A00, // 01B7 MOVE R26 R13 - 0x7C600400, // 01B8 CALL R24 2 - 0x8C60034B, // 01B9 GETMET R24 R1 K75 - 0x7C600200, // 01BA CALL R24 1 - 0x78620002, // 01BB JMPF R24 #01BF - 0x8C60034C, // 01BC GETMET R24 R1 K76 - 0x546A003B, // 01BD LDINT R26 60 - 0x7C600400, // 01BE CALL R24 2 - 0x8C601B4D, // 01BF GETMET R24 R13 K77 - 0x7C600200, // 01C0 CALL R24 1 - 0x8C601B4E, // 01C1 GETMET R24 R13 K78 - 0x7C600200, // 01C2 CALL R24 1 - 0x8C600B09, // 01C3 GETMET R24 R5 K9 - 0x7C600200, // 01C4 CALL R24 1 - 0x8C64310A, // 01C5 GETMET R25 R24 K10 - 0x586C0005, // 01C6 LDCONST R27 K5 - 0x88700B0B, // 01C7 GETMBR R28 R5 K11 - 0xB8760200, // 01C8 GETNGBL R29 K1 - 0x88743B2B, // 01C9 GETMBR R29 R29 K43 - 0x7C640800, // 01CA CALL R25 4 - 0x8C64310A, // 01CB GETMET R25 R24 K10 - 0x586C0007, // 01CC LDCONST R27 K7 - 0x88700B0B, // 01CD GETMBR R28 R5 K11 - 0x8C741B4F, // 01CE GETMET R29 R13 K79 - 0x7C740200, // 01CF CALL R29 1 - 0x7C640800, // 01D0 CALL R25 4 - 0x54660007, // 01D1 LDINT R25 8 - 0x900E0819, // 01D2 SETMBR R3 K4 R25 - 0x80043000, // 01D3 RET 1 R24 - 0x70020074, // 01D4 JMP #024A - 0x54220008, // 01D5 LDINT R8 9 - 0x1C200E08, // 01D6 EQ R8 R7 R8 - 0x7822002C, // 01D7 JMPF R8 #0205 - 0x8C200506, // 01D8 GETMET R8 R2 K6 - 0x58280005, // 01D9 LDCONST R10 K5 - 0x7C200400, // 01DA CALL R8 2 - 0x8C240350, // 01DB GETMET R9 R1 K80 - 0x5C2C1000, // 01DC MOVE R11 R8 - 0x7C240400, // 01DD CALL R9 2 - 0xB8264400, // 01DE GETNGBL R9 K34 - 0x8C24132C, // 01DF GETMET R9 R9 K44 - 0x602C0018, // 01E0 GETGBL R11 G24 - 0x58300051, // 01E1 LDCONST R12 K81 - 0x88340312, // 01E2 GETMBR R13 R1 K18 - 0x8C341B52, // 01E3 GETMET R13 R13 K82 - 0x7C340200, // 01E4 CALL R13 1 - 0x8C341B44, // 01E5 GETMET R13 R13 K68 - 0x7C340200, // 01E6 CALL R13 1 - 0x8C341B45, // 01E7 GETMET R13 R13 K69 - 0x7C340200, // 01E8 CALL R13 1 - 0x8C341B53, // 01E9 GETMET R13 R13 K83 - 0x7C340200, // 01EA CALL R13 1 - 0x60380008, // 01EB GETGBL R14 G8 - 0x5C3C1000, // 01EC MOVE R15 R8 - 0x7C380200, // 01ED CALL R14 1 - 0x7C2C0600, // 01EE CALL R11 3 - 0x58300010, // 01EF LDCONST R12 K16 - 0x7C240600, // 01F0 CALL R9 3 - 0x8C240B09, // 01F1 GETMET R9 R5 K9 - 0x7C240200, // 01F2 CALL R9 1 - 0x8C28130A, // 01F3 GETMET R10 R9 K10 - 0x58300005, // 01F4 LDCONST R12 K5 - 0x88340B0B, // 01F5 GETMBR R13 R5 K11 - 0xB83A0200, // 01F6 GETNGBL R14 K1 - 0x88381D2B, // 01F7 GETMBR R14 R14 K43 - 0x7C280800, // 01F8 CALL R10 4 - 0x8C28130A, // 01F9 GETMET R10 R9 K10 - 0x58300007, // 01FA LDCONST R12 K7 - 0x88340B0B, // 01FB GETMBR R13 R5 K11 - 0x8C380354, // 01FC GETMET R14 R1 K84 - 0x7C380200, // 01FD CALL R14 1 - 0x8C381D4F, // 01FE GETMET R14 R14 K79 - 0x7C380200, // 01FF CALL R14 1 - 0x7C280800, // 0200 CALL R10 4 - 0x542A0007, // 0201 LDINT R10 8 - 0x900E080A, // 0202 SETMBR R3 K4 R10 - 0x80041200, // 0203 RET 1 R9 - 0x70020044, // 0204 JMP #024A - 0x54220009, // 0205 LDINT R8 10 - 0x1C200E08, // 0206 EQ R8 R7 R8 - 0x78220041, // 0207 JMPF R8 #024A - 0x8C200506, // 0208 GETMET R8 R2 K6 - 0x58280005, // 0209 LDCONST R10 K5 - 0x7C200400, // 020A CALL R8 2 - 0x60240008, // 020B GETGBL R9 G8 - 0x5C281000, // 020C MOVE R10 R8 - 0x7C240200, // 020D CALL R9 1 - 0x0026AA09, // 020E ADD R9 K85 R9 - 0x900E5809, // 020F SETMBR R3 K44 R9 - 0x60240010, // 0210 GETGBL R9 G16 - 0x88280116, // 0211 GETMBR R10 R0 K22 - 0x88281530, // 0212 GETMBR R10 R10 K48 - 0x8C281556, // 0213 GETMET R10 R10 K86 - 0x7C280200, // 0214 CALL R10 1 - 0x7C240200, // 0215 CALL R9 1 - 0xA8020020, // 0216 EXBLK 0 #0238 - 0x5C281200, // 0217 MOVE R10 R9 - 0x7C280000, // 0218 CALL R10 0 - 0x8C2C154F, // 0219 GETMET R11 R10 K79 + 0x404E0F40, // 0191 CONNECT R19 K7 K64 + 0x94482413, // 0192 GETIDX R18 R18 R19 + 0x604C0015, // 0193 GETGBL R19 G21 + 0x7C4C0000, // 0194 CALL R19 0 + 0x8C4C2741, // 0195 GETMET R19 R19 K65 + 0x58540042, // 0196 LDCONST R21 K66 + 0x7C4C0400, // 0197 CALL R19 2 + 0x8C500943, // 0198 GETMET R20 R4 K67 + 0x7C500200, // 0199 CALL R20 1 + 0x8C542144, // 019A GETMET R21 R16 K68 + 0x7C540200, // 019B CALL R21 1 + 0x8C542B45, // 019C GETMET R21 R21 K69 + 0x7C540200, // 019D CALL R21 1 + 0x8C582946, // 019E GETMET R22 R20 K70 + 0x5C602400, // 019F MOVE R24 R18 + 0x5C642A00, // 01A0 MOVE R25 R21 + 0x5C682600, // 01A1 MOVE R26 R19 + 0x546E0007, // 01A2 LDINT R27 8 + 0x7C580A00, // 01A3 CALL R22 5 + 0x885C0312, // 01A4 GETMBR R23 R1 K18 + 0x785E0001, // 01A5 JMPF R23 #01A8 + 0x885C0312, // 01A6 GETMBR R23 R1 K18 + 0x70020001, // 01A7 JMP #01AA + 0x885C0116, // 01A8 GETMBR R23 R0 K22 + 0x885C2F47, // 01A9 GETMBR R23 R23 K71 + 0x8C601B48, // 01AA GETMET R24 R13 K72 + 0x5C682000, // 01AB MOVE R26 R16 + 0x5C6C2200, // 01AC MOVE R27 R17 + 0x5C702C00, // 01AD MOVE R28 R22 + 0x5C742E00, // 01AE MOVE R29 R23 + 0x7C600A00, // 01AF CALL R24 5 + 0x8C601B49, // 01B0 GETMET R24 R13 K73 + 0x7C600200, // 01B1 CALL R24 1 + 0x88600116, // 01B2 GETMBR R24 R0 K22 + 0x8C60314A, // 01B3 GETMET R24 R24 K74 + 0x5C681A00, // 01B4 MOVE R26 R13 + 0x7C600400, // 01B5 CALL R24 2 + 0x8C60034B, // 01B6 GETMET R24 R1 K75 + 0x7C600200, // 01B7 CALL R24 1 + 0x78620002, // 01B8 JMPF R24 #01BC + 0x8C60034C, // 01B9 GETMET R24 R1 K76 + 0x546A003B, // 01BA LDINT R26 60 + 0x7C600400, // 01BB CALL R24 2 + 0x8C601B4D, // 01BC GETMET R24 R13 K77 + 0x7C600200, // 01BD CALL R24 1 + 0x8C601B4E, // 01BE GETMET R24 R13 K78 + 0x7C600200, // 01BF CALL R24 1 + 0x8C600B09, // 01C0 GETMET R24 R5 K9 + 0x7C600200, // 01C1 CALL R24 1 + 0x8C64310A, // 01C2 GETMET R25 R24 K10 + 0x586C0005, // 01C3 LDCONST R27 K5 + 0x88700B0B, // 01C4 GETMBR R28 R5 K11 + 0xB8760200, // 01C5 GETNGBL R29 K1 + 0x88743B2B, // 01C6 GETMBR R29 R29 K43 + 0x7C640800, // 01C7 CALL R25 4 + 0x8C64310A, // 01C8 GETMET R25 R24 K10 + 0x586C0007, // 01C9 LDCONST R27 K7 + 0x88700B0B, // 01CA GETMBR R28 R5 K11 + 0x8C741B4F, // 01CB GETMET R29 R13 K79 + 0x7C740200, // 01CC CALL R29 1 + 0x7C640800, // 01CD CALL R25 4 + 0x54660007, // 01CE LDINT R25 8 + 0x900E0819, // 01CF SETMBR R3 K4 R25 + 0x80043000, // 01D0 RET 1 R24 + 0x70020072, // 01D1 JMP #0245 + 0x54220008, // 01D2 LDINT R8 9 + 0x1C200E08, // 01D3 EQ R8 R7 R8 + 0x7822002B, // 01D4 JMPF R8 #0201 + 0x8C200506, // 01D5 GETMET R8 R2 K6 + 0x58280005, // 01D6 LDCONST R10 K5 + 0x7C200400, // 01D7 CALL R8 2 + 0x8C240350, // 01D8 GETMET R9 R1 K80 + 0x5C2C1000, // 01D9 MOVE R11 R8 + 0x7C240400, // 01DA CALL R9 2 + 0xB8265800, // 01DB GETNGBL R9 K44 + 0x60280018, // 01DC GETGBL R10 G24 + 0x582C0051, // 01DD LDCONST R11 K81 + 0x88300312, // 01DE GETMBR R12 R1 K18 + 0x8C301952, // 01DF GETMET R12 R12 K82 + 0x7C300200, // 01E0 CALL R12 1 + 0x8C301944, // 01E1 GETMET R12 R12 K68 + 0x7C300200, // 01E2 CALL R12 1 + 0x8C301945, // 01E3 GETMET R12 R12 K69 + 0x7C300200, // 01E4 CALL R12 1 + 0x8C301953, // 01E5 GETMET R12 R12 K83 + 0x7C300200, // 01E6 CALL R12 1 + 0x60340008, // 01E7 GETGBL R13 G8 + 0x5C381000, // 01E8 MOVE R14 R8 + 0x7C340200, // 01E9 CALL R13 1 + 0x7C280600, // 01EA CALL R10 3 + 0x582C0010, // 01EB LDCONST R11 K16 + 0x7C240400, // 01EC CALL R9 2 + 0x8C240B09, // 01ED GETMET R9 R5 K9 + 0x7C240200, // 01EE CALL R9 1 + 0x8C28130A, // 01EF GETMET R10 R9 K10 + 0x58300005, // 01F0 LDCONST R12 K5 + 0x88340B0B, // 01F1 GETMBR R13 R5 K11 + 0xB83A0200, // 01F2 GETNGBL R14 K1 + 0x88381D2B, // 01F3 GETMBR R14 R14 K43 + 0x7C280800, // 01F4 CALL R10 4 + 0x8C28130A, // 01F5 GETMET R10 R9 K10 + 0x58300007, // 01F6 LDCONST R12 K7 + 0x88340B0B, // 01F7 GETMBR R13 R5 K11 + 0x8C380354, // 01F8 GETMET R14 R1 K84 + 0x7C380200, // 01F9 CALL R14 1 + 0x8C381D4F, // 01FA GETMET R14 R14 K79 + 0x7C380200, // 01FB CALL R14 1 + 0x7C280800, // 01FC CALL R10 4 + 0x542A0007, // 01FD LDINT R10 8 + 0x900E080A, // 01FE SETMBR R3 K4 R10 + 0x80041200, // 01FF RET 1 R9 + 0x70020043, // 0200 JMP #0245 + 0x54220009, // 0201 LDINT R8 10 + 0x1C200E08, // 0202 EQ R8 R7 R8 + 0x78220040, // 0203 JMPF R8 #0245 + 0x8C200506, // 0204 GETMET R8 R2 K6 + 0x58280005, // 0205 LDCONST R10 K5 + 0x7C200400, // 0206 CALL R8 2 + 0x60240008, // 0207 GETGBL R9 G8 + 0x5C281000, // 0208 MOVE R10 R8 + 0x7C240200, // 0209 CALL R9 1 + 0x0026AA09, // 020A ADD R9 K85 R9 + 0x900E5809, // 020B SETMBR R3 K44 R9 + 0x60240010, // 020C GETGBL R9 G16 + 0x88280116, // 020D GETMBR R10 R0 K22 + 0x88281530, // 020E GETMBR R10 R10 K48 + 0x8C281556, // 020F GETMET R10 R10 K86 + 0x7C280200, // 0210 CALL R10 1 + 0x7C240200, // 0211 CALL R9 1 + 0xA8020020, // 0212 EXBLK 0 #0234 + 0x5C281200, // 0213 MOVE R10 R9 + 0x7C280000, // 0214 CALL R10 0 + 0x8C2C154F, // 0215 GETMET R11 R10 K79 + 0x7C2C0200, // 0216 CALL R11 1 + 0x1C2C1608, // 0217 EQ R11 R11 R8 + 0x782E0018, // 0218 JMPF R11 #0232 + 0x8C2C1557, // 0219 GETMET R11 R10 K87 0x7C2C0200, // 021A CALL R11 1 - 0x1C2C1608, // 021B EQ R11 R11 R8 - 0x782E0018, // 021C JMPF R11 #0236 - 0x8C2C1557, // 021D GETMET R11 R10 K87 - 0x7C2C0200, // 021E CALL R11 1 - 0xB82E4400, // 021F GETNGBL R11 K34 - 0x8C2C1758, // 0220 GETMET R11 R11 K88 - 0x543607CF, // 0221 LDINT R13 2000 - 0x84380000, // 0222 CLOSURE R14 P0 - 0x7C2C0600, // 0223 CALL R11 3 - 0x8C2C0B09, // 0224 GETMET R11 R5 K9 - 0x7C2C0200, // 0225 CALL R11 1 - 0x8C30170A, // 0226 GETMET R12 R11 K10 - 0x58380005, // 0227 LDCONST R14 K5 - 0x883C0B0B, // 0228 GETMBR R15 R5 K11 - 0xB8420200, // 0229 GETNGBL R16 K1 - 0x8840212B, // 022A GETMBR R16 R16 K43 - 0x7C300800, // 022B CALL R12 4 - 0x8C30170A, // 022C GETMET R12 R11 K10 - 0x58380007, // 022D LDCONST R14 K7 - 0x883C0B0B, // 022E GETMBR R15 R5 K11 - 0x5C401000, // 022F MOVE R16 R8 - 0x7C300800, // 0230 CALL R12 4 - 0x54320007, // 0231 LDINT R12 8 - 0x900E080C, // 0232 SETMBR R3 K4 R12 - 0xA0000000, // 0233 CLOSE R0 - 0xA8040001, // 0234 EXBLK 1 1 - 0x80041600, // 0235 RET 1 R11 - 0xA0240000, // 0236 CLOSE R9 - 0x7001FFDE, // 0237 JMP #0217 - 0x58240059, // 0238 LDCONST R9 K89 - 0xAC240200, // 0239 CATCH R9 1 0 - 0xB0080000, // 023A RAISE 2 R0 R0 - 0xB8264400, // 023B GETNGBL R9 K34 - 0x8C24132C, // 023C GETMET R9 R9 K44 - 0x602C0008, // 023D GETGBL R11 G8 - 0x5C301000, // 023E MOVE R12 R8 - 0x7C2C0200, // 023F CALL R11 1 - 0x002EB40B, // 0240 ADD R11 K90 R11 - 0x002C175B, // 0241 ADD R11 R11 K91 - 0x5830000E, // 0242 LDCONST R12 K14 - 0x7C240600, // 0243 CALL R9 3 - 0xB8260200, // 0244 GETNGBL R9 K1 - 0x8824135C, // 0245 GETMBR R9 R9 K92 - 0x900E3409, // 0246 SETMBR R3 K26 R9 - 0x4C240000, // 0247 LDNIL R9 - 0xA0000000, // 0248 CLOSE R0 - 0x80041200, // 0249 RET 1 R9 - 0x7002009B, // 024A JMP #02E7 - 0x5422003B, // 024B LDINT R8 60 - 0x1C200C08, // 024C EQ R8 R6 R8 - 0x78220085, // 024D JMPF R8 #02D4 - 0x1C200F05, // 024E EQ R8 R7 K5 - 0x78220065, // 024F JMPF R8 #02B6 - 0x8C200506, // 0250 GETMET R8 R2 K6 - 0x58280005, // 0251 LDCONST R10 K5 - 0x7C200400, // 0252 CALL R8 2 - 0x8C240506, // 0253 GETMET R9 R2 K6 - 0x582C0007, // 0254 LDCONST R11 K7 - 0x7C240400, // 0255 CALL R9 2 - 0x8C280506, // 0256 GETMET R10 R2 K6 - 0x5830000E, // 0257 LDCONST R12 K14 - 0x7C280400, // 0258 CALL R10 2 - 0x8C2C0506, // 0259 GETMET R11 R2 K6 - 0x58340010, // 025A LDCONST R13 K16 - 0x7C2C0400, // 025B CALL R11 2 - 0x8C300506, // 025C GETMET R12 R2 K6 - 0x543A0003, // 025D LDINT R14 4 - 0x7C300400, // 025E CALL R12 2 - 0xB8364400, // 025F GETNGBL R13 K34 - 0x8C341B2C, // 0260 GETMET R13 R13 K44 - 0x603C0018, // 0261 GETGBL R15 G24 - 0x5840005D, // 0262 LDCONST R16 K93 - 0x5C441000, // 0263 MOVE R17 R8 - 0x8C481353, // 0264 GETMET R18 R9 K83 - 0x7C480200, // 0265 CALL R18 1 - 0x5C4C1400, // 0266 MOVE R19 R10 - 0x5C501600, // 0267 MOVE R20 R11 - 0x8C541953, // 0268 GETMET R21 R12 K83 - 0x7C540200, // 0269 CALL R21 1 - 0x7C3C0C00, // 026A CALL R15 6 - 0x54420003, // 026B LDINT R16 4 - 0x7C340600, // 026C CALL R13 3 + 0xB82E4400, // 021B GETNGBL R11 K34 + 0x8C2C1758, // 021C GETMET R11 R11 K88 + 0x543607CF, // 021D LDINT R13 2000 + 0x84380000, // 021E CLOSURE R14 P0 + 0x7C2C0600, // 021F CALL R11 3 + 0x8C2C0B09, // 0220 GETMET R11 R5 K9 + 0x7C2C0200, // 0221 CALL R11 1 + 0x8C30170A, // 0222 GETMET R12 R11 K10 + 0x58380005, // 0223 LDCONST R14 K5 + 0x883C0B0B, // 0224 GETMBR R15 R5 K11 + 0xB8420200, // 0225 GETNGBL R16 K1 + 0x8840212B, // 0226 GETMBR R16 R16 K43 + 0x7C300800, // 0227 CALL R12 4 + 0x8C30170A, // 0228 GETMET R12 R11 K10 + 0x58380007, // 0229 LDCONST R14 K7 + 0x883C0B0B, // 022A GETMBR R15 R5 K11 + 0x5C401000, // 022B MOVE R16 R8 + 0x7C300800, // 022C CALL R12 4 + 0x54320007, // 022D LDINT R12 8 + 0x900E080C, // 022E SETMBR R3 K4 R12 + 0xA0000000, // 022F CLOSE R0 + 0xA8040001, // 0230 EXBLK 1 1 + 0x80041600, // 0231 RET 1 R11 + 0xA0240000, // 0232 CLOSE R9 + 0x7001FFDE, // 0233 JMP #0213 + 0x58240059, // 0234 LDCONST R9 K89 + 0xAC240200, // 0235 CATCH R9 1 0 + 0xB0080000, // 0236 RAISE 2 R0 R0 + 0xB8265800, // 0237 GETNGBL R9 K44 + 0x60280008, // 0238 GETGBL R10 G8 + 0x5C2C1000, // 0239 MOVE R11 R8 + 0x7C280200, // 023A CALL R10 1 + 0x002AB40A, // 023B ADD R10 K90 R10 + 0x0028155B, // 023C ADD R10 R10 K91 + 0x582C000E, // 023D LDCONST R11 K14 + 0x7C240400, // 023E CALL R9 2 + 0xB8260200, // 023F GETNGBL R9 K1 + 0x8824135C, // 0240 GETMBR R9 R9 K92 + 0x900E3409, // 0241 SETMBR R3 K26 R9 + 0x4C240000, // 0242 LDNIL R9 + 0xA0000000, // 0243 CLOSE R0 + 0x80041200, // 0244 RET 1 R9 + 0x70020098, // 0245 JMP #02DF + 0x5422003B, // 0246 LDINT R8 60 + 0x1C200C08, // 0247 EQ R8 R6 R8 + 0x78220082, // 0248 JMPF R8 #02CC + 0x1C200F05, // 0249 EQ R8 R7 K5 + 0x78220063, // 024A JMPF R8 #02AF + 0x8C200506, // 024B GETMET R8 R2 K6 + 0x58280005, // 024C LDCONST R10 K5 + 0x7C200400, // 024D CALL R8 2 + 0x8C240506, // 024E GETMET R9 R2 K6 + 0x582C0007, // 024F LDCONST R11 K7 + 0x7C240400, // 0250 CALL R9 2 + 0x8C280506, // 0251 GETMET R10 R2 K6 + 0x5830000E, // 0252 LDCONST R12 K14 + 0x7C280400, // 0253 CALL R10 2 + 0x8C2C0506, // 0254 GETMET R11 R2 K6 + 0x58340010, // 0255 LDCONST R13 K16 + 0x7C2C0400, // 0256 CALL R11 2 + 0x8C300506, // 0257 GETMET R12 R2 K6 + 0x543A0003, // 0258 LDINT R14 4 + 0x7C300400, // 0259 CALL R12 2 + 0xB8365800, // 025A GETNGBL R13 K44 + 0x60380018, // 025B GETGBL R14 G24 + 0x583C005D, // 025C LDCONST R15 K93 + 0x5C401000, // 025D MOVE R16 R8 + 0x8C441353, // 025E GETMET R17 R9 K83 + 0x7C440200, // 025F CALL R17 1 + 0x5C481400, // 0260 MOVE R18 R10 + 0x5C4C1600, // 0261 MOVE R19 R11 + 0x8C501953, // 0262 GETMET R20 R12 K83 + 0x7C500200, // 0263 CALL R20 1 + 0x7C380C00, // 0264 CALL R14 6 + 0x543E0003, // 0265 LDINT R15 4 + 0x7C340400, // 0266 CALL R13 2 + 0x4C340000, // 0267 LDNIL R13 + 0x1C34100D, // 0268 EQ R13 R8 R13 + 0x7436000B, // 0269 JMPT R13 #0276 + 0x4C340000, // 026A LDNIL R13 + 0x1C34120D, // 026B EQ R13 R9 R13 + 0x74360008, // 026C JMPT R13 #0276 0x4C340000, // 026D LDNIL R13 - 0x1C34100D, // 026E EQ R13 R8 R13 - 0x7436000B, // 026F JMPT R13 #027C + 0x1C34140D, // 026E EQ R13 R10 R13 + 0x74360005, // 026F JMPT R13 #0276 0x4C340000, // 0270 LDNIL R13 - 0x1C34120D, // 0271 EQ R13 R9 R13 - 0x74360008, // 0272 JMPT R13 #027C + 0x1C34160D, // 0271 EQ R13 R11 R13 + 0x74360002, // 0272 JMPT R13 #0276 0x4C340000, // 0273 LDNIL R13 - 0x1C34140D, // 0274 EQ R13 R10 R13 - 0x74360005, // 0275 JMPT R13 #027C - 0x4C340000, // 0276 LDNIL R13 - 0x1C34160D, // 0277 EQ R13 R11 R13 - 0x74360002, // 0278 JMPT R13 #027C + 0x1C34180D, // 0274 EQ R13 R12 R13 + 0x78360005, // 0275 JMPF R13 #027C + 0xB8360200, // 0276 GETNGBL R13 K1 + 0x88341B5E, // 0277 GETMBR R13 R13 K94 + 0x900E340D, // 0278 SETMBR R3 K26 R13 0x4C340000, // 0279 LDNIL R13 - 0x1C34180D, // 027A EQ R13 R12 R13 - 0x78360005, // 027B JMPF R13 #0282 - 0xB8360200, // 027C GETNGBL R13 K1 - 0x88341B5E, // 027D GETMBR R13 R13 K94 - 0x900E340D, // 027E SETMBR R3 K26 R13 - 0x4C340000, // 027F LDNIL R13 - 0xA0000000, // 0280 CLOSE R0 - 0x80041A00, // 0281 RET 1 R13 - 0x6034000C, // 0282 GETGBL R13 G12 - 0x5C381200, // 0283 MOVE R14 R9 - 0x7C340200, // 0284 CALL R13 1 - 0x543A001F, // 0285 LDINT R14 32 - 0x543E0040, // 0286 LDINT R15 65 - 0x00381C0F, // 0287 ADD R14 R14 R15 - 0x20341A0E, // 0288 NE R13 R13 R14 - 0x7436000B, // 0289 JMPT R13 #0296 + 0xA0000000, // 027A CLOSE R0 + 0x80041A00, // 027B RET 1 R13 + 0x6034000C, // 027C GETGBL R13 G12 + 0x5C381200, // 027D MOVE R14 R9 + 0x7C340200, // 027E CALL R13 1 + 0x543A001F, // 027F LDINT R14 32 + 0x543E0040, // 0280 LDINT R15 65 + 0x00381C0F, // 0281 ADD R14 R14 R15 + 0x20341A0E, // 0282 NE R13 R13 R14 + 0x7436000B, // 0283 JMPT R13 #0290 + 0x6034000C, // 0284 GETGBL R13 G12 + 0x5C381800, // 0285 MOVE R14 R12 + 0x7C340200, // 0286 CALL R13 1 + 0x543A000F, // 0287 LDINT R14 16 + 0x14341A0E, // 0288 LT R13 R13 R14 + 0x74360005, // 0289 JMPT R13 #0290 0x6034000C, // 028A GETGBL R13 G12 0x5C381800, // 028B MOVE R14 R12 0x7C340200, // 028C CALL R13 1 - 0x543A000F, // 028D LDINT R14 16 - 0x14341A0E, // 028E LT R13 R13 R14 - 0x74360005, // 028F JMPT R13 #0296 - 0x6034000C, // 0290 GETGBL R13 G12 - 0x5C381800, // 0291 MOVE R14 R12 - 0x7C340200, // 0292 CALL R13 1 - 0x543A001F, // 0293 LDINT R14 32 - 0x24341A0E, // 0294 GT R13 R13 R14 - 0x7836000A, // 0295 JMPF R13 #02A1 - 0xB8364400, // 0296 GETNGBL R13 K34 - 0x8C341B2C, // 0297 GETMET R13 R13 K44 - 0x583C005F, // 0298 LDCONST R15 K95 - 0x5840000E, // 0299 LDCONST R16 K14 - 0x7C340600, // 029A CALL R13 3 - 0xB8360200, // 029B GETNGBL R13 K1 - 0x88341B60, // 029C GETMBR R13 R13 K96 - 0x900E340D, // 029D SETMBR R3 K26 R13 - 0x4C340000, // 029E LDNIL R13 - 0xA0000000, // 029F CLOSE R0 - 0x80041A00, // 02A0 RET 1 R13 - 0x5436001E, // 02A1 LDINT R13 31 - 0x40360A0D, // 02A2 CONNECT R13 K5 R13 - 0x9434120D, // 02A3 GETIDX R13 R9 R13 - 0x543A001F, // 02A4 LDINT R14 32 - 0x40381D40, // 02A5 CONNECT R14 R14 K64 - 0x9438120E, // 02A6 GETIDX R14 R9 R14 - 0x883C0116, // 02A7 GETMBR R15 R0 K22 - 0x8C3C1F61, // 02A8 GETMET R15 R15 K97 - 0x5C441000, // 02A9 MOVE R17 R8 - 0x5C481600, // 02AA MOVE R18 R11 - 0x5C4C1400, // 02AB MOVE R19 R10 - 0x5C501800, // 02AC MOVE R20 R12 - 0x5C541A00, // 02AD MOVE R21 R13 - 0x5C581C00, // 02AE MOVE R22 R14 - 0x8C5C0354, // 02AF GETMET R23 R1 K84 - 0x7C5C0200, // 02B0 CALL R23 1 - 0x7C3C1000, // 02B1 CALL R15 8 - 0x503C0200, // 02B2 LDBOOL R15 1 0 - 0xA0000000, // 02B3 CLOSE R0 - 0x80041E00, // 02B4 RET 1 R15 - 0x7002001C, // 02B5 JMP #02D3 - 0x1C200F07, // 02B6 EQ R8 R7 K7 - 0x78220012, // 02B7 JMPF R8 #02CB - 0x8C200506, // 02B8 GETMET R8 R2 K6 - 0x58280005, // 02B9 LDCONST R10 K5 - 0x7C200400, // 02BA CALL R8 2 - 0xB8264400, // 02BB GETNGBL R9 K34 - 0x8C24132C, // 02BC GETMET R9 R9 K44 - 0x602C0008, // 02BD GETGBL R11 G8 - 0x5C301000, // 02BE MOVE R12 R8 - 0x7C2C0200, // 02BF CALL R11 1 - 0x002EC40B, // 02C0 ADD R11 K98 R11 - 0x58300010, // 02C1 LDCONST R12 K16 - 0x7C240600, // 02C2 CALL R9 3 - 0x88240116, // 02C3 GETMBR R9 R0 K22 - 0x8C241363, // 02C4 GETMET R9 R9 K99 - 0x5C2C1000, // 02C5 MOVE R11 R8 - 0x7C240400, // 02C6 CALL R9 2 - 0x50240200, // 02C7 LDBOOL R9 1 0 - 0xA0000000, // 02C8 CLOSE R0 - 0x80041200, // 02C9 RET 1 R9 - 0x70020007, // 02CA JMP #02D3 - 0x1C200F0E, // 02CB EQ R8 R7 K14 - 0x78220005, // 02CC JMPF R8 #02D3 - 0x88200116, // 02CD GETMBR R8 R0 K22 - 0x8C201164, // 02CE GETMET R8 R8 K100 - 0x7C200200, // 02CF CALL R8 1 - 0x50200200, // 02D0 LDBOOL R8 1 0 - 0xA0000000, // 02D1 CLOSE R0 - 0x80041000, // 02D2 RET 1 R8 - 0x70020012, // 02D3 JMP #02E7 - 0x54220029, // 02D4 LDINT R8 42 - 0x1C200C08, // 02D5 EQ R8 R6 R8 - 0x78220005, // 02D6 JMPF R8 #02DD - 0x1C200F05, // 02D7 EQ R8 R7 K5 - 0x78220002, // 02D8 JMPF R8 #02DC - 0x50200200, // 02D9 LDBOOL R8 1 0 - 0xA0000000, // 02DA CLOSE R0 - 0x80041000, // 02DB RET 1 R8 - 0x70020009, // 02DC JMP #02E7 - 0x60200003, // 02DD GETGBL R8 G3 - 0x5C240000, // 02DE MOVE R9 R0 - 0x7C200200, // 02DF CALL R8 1 - 0x8C201165, // 02E0 GETMET R8 R8 K101 - 0x5C280200, // 02E1 MOVE R10 R1 - 0x5C2C0400, // 02E2 MOVE R11 R2 - 0x5C300600, // 02E3 MOVE R12 R3 - 0x7C200800, // 02E4 CALL R8 4 - 0xA0000000, // 02E5 CLOSE R0 - 0x80041000, // 02E6 RET 1 R8 - 0xA0000000, // 02E7 CLOSE R0 - 0x80000000, // 02E8 RET 0 + 0x543A001F, // 028D LDINT R14 32 + 0x24341A0E, // 028E GT R13 R13 R14 + 0x78360009, // 028F JMPF R13 #029A + 0xB8365800, // 0290 GETNGBL R13 K44 + 0x5838005F, // 0291 LDCONST R14 K95 + 0x583C000E, // 0292 LDCONST R15 K14 + 0x7C340400, // 0293 CALL R13 2 + 0xB8360200, // 0294 GETNGBL R13 K1 + 0x88341B60, // 0295 GETMBR R13 R13 K96 + 0x900E340D, // 0296 SETMBR R3 K26 R13 + 0x4C340000, // 0297 LDNIL R13 + 0xA0000000, // 0298 CLOSE R0 + 0x80041A00, // 0299 RET 1 R13 + 0x5436001E, // 029A LDINT R13 31 + 0x40360A0D, // 029B CONNECT R13 K5 R13 + 0x9434120D, // 029C GETIDX R13 R9 R13 + 0x543A001F, // 029D LDINT R14 32 + 0x40381D40, // 029E CONNECT R14 R14 K64 + 0x9438120E, // 029F GETIDX R14 R9 R14 + 0x883C0116, // 02A0 GETMBR R15 R0 K22 + 0x8C3C1F61, // 02A1 GETMET R15 R15 K97 + 0x5C441000, // 02A2 MOVE R17 R8 + 0x5C481600, // 02A3 MOVE R18 R11 + 0x5C4C1400, // 02A4 MOVE R19 R10 + 0x5C501800, // 02A5 MOVE R20 R12 + 0x5C541A00, // 02A6 MOVE R21 R13 + 0x5C581C00, // 02A7 MOVE R22 R14 + 0x8C5C0354, // 02A8 GETMET R23 R1 K84 + 0x7C5C0200, // 02A9 CALL R23 1 + 0x7C3C1000, // 02AA CALL R15 8 + 0x503C0200, // 02AB LDBOOL R15 1 0 + 0xA0000000, // 02AC CLOSE R0 + 0x80041E00, // 02AD RET 1 R15 + 0x7002001B, // 02AE JMP #02CB + 0x1C200F07, // 02AF EQ R8 R7 K7 + 0x78220011, // 02B0 JMPF R8 #02C3 + 0x8C200506, // 02B1 GETMET R8 R2 K6 + 0x58280005, // 02B2 LDCONST R10 K5 + 0x7C200400, // 02B3 CALL R8 2 + 0xB8265800, // 02B4 GETNGBL R9 K44 + 0x60280008, // 02B5 GETGBL R10 G8 + 0x5C2C1000, // 02B6 MOVE R11 R8 + 0x7C280200, // 02B7 CALL R10 1 + 0x002AC40A, // 02B8 ADD R10 K98 R10 + 0x582C0010, // 02B9 LDCONST R11 K16 + 0x7C240400, // 02BA CALL R9 2 + 0x88240116, // 02BB GETMBR R9 R0 K22 + 0x8C241363, // 02BC GETMET R9 R9 K99 + 0x5C2C1000, // 02BD MOVE R11 R8 + 0x7C240400, // 02BE CALL R9 2 + 0x50240200, // 02BF LDBOOL R9 1 0 + 0xA0000000, // 02C0 CLOSE R0 + 0x80041200, // 02C1 RET 1 R9 + 0x70020007, // 02C2 JMP #02CB + 0x1C200F0E, // 02C3 EQ R8 R7 K14 + 0x78220005, // 02C4 JMPF R8 #02CB + 0x88200116, // 02C5 GETMBR R8 R0 K22 + 0x8C201164, // 02C6 GETMET R8 R8 K100 + 0x7C200200, // 02C7 CALL R8 1 + 0x50200200, // 02C8 LDBOOL R8 1 0 + 0xA0000000, // 02C9 CLOSE R0 + 0x80041000, // 02CA RET 1 R8 + 0x70020012, // 02CB JMP #02DF + 0x54220029, // 02CC LDINT R8 42 + 0x1C200C08, // 02CD EQ R8 R6 R8 + 0x78220005, // 02CE JMPF R8 #02D5 + 0x1C200F05, // 02CF EQ R8 R7 K5 + 0x78220002, // 02D0 JMPF R8 #02D4 + 0x50200200, // 02D1 LDBOOL R8 1 0 + 0xA0000000, // 02D2 CLOSE R0 + 0x80041000, // 02D3 RET 1 R8 + 0x70020009, // 02D4 JMP #02DF + 0x60200003, // 02D5 GETGBL R8 G3 + 0x5C240000, // 02D6 MOVE R9 R0 + 0x7C200200, // 02D7 CALL R8 1 + 0x8C201165, // 02D8 GETMET R8 R8 K101 + 0x5C280200, // 02D9 MOVE R10 R1 + 0x5C2C0400, // 02DA MOVE R11 R2 + 0x5C300600, // 02DB MOVE R12 R3 + 0x7C200800, // 02DC CALL R8 4 + 0xA0000000, // 02DD CLOSE R0 + 0x80041000, // 02DE RET 1 R8 + 0xA0000000, // 02DF CLOSE R0 + 0x80000000, // 02E0 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index 179f66f25..1b636ca22 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -283,130 +283,119 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0, /* has sup protos */ NULL, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(set), + /* K1 */ be_nested_str_weak(set_or_nil), /* K2 */ be_nested_str_weak(FLOAT), - /* K3 */ be_nested_str_weak(NULL), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_nested_str_weak(U4), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(set), + /* K5 */ be_nested_str_weak(NULL), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(U1), + /* K8 */ be_nested_str_weak(U4), }), be_str_weak(handle_value), &be_const_str_solidified, - ( &(const binstruction[85]) { /* code */ + ( &(const binstruction[74]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x58040000, // 0003 LDCONST R1 K0 0x68080000, // 0004 GETUPV R2 U0 0x1C080500, // 0005 EQ R2 R2 K0 - 0x780A0012, // 0006 JMPF R2 #001A - 0x4C080000, // 0007 LDNIL R2 - 0x20080002, // 0008 NE R2 R0 R2 - 0x780A0007, // 0009 JMPF R2 #0012 - 0x68080001, // 000A GETUPV R2 U1 - 0x8C080501, // 000B GETMET R2 R2 K1 - 0x68100002, // 000C GETUPV R4 U2 - 0x88100902, // 000D GETMBR R4 R4 K2 - 0x5C140000, // 000E MOVE R5 R0 - 0x7C080600, // 000F CALL R2 3 - 0x80040400, // 0010 RET 1 R2 - 0x70020006, // 0011 JMP #0019 + 0x780A0007, // 0006 JMPF R2 #000F + 0x68080001, // 0007 GETUPV R2 U1 + 0x8C080501, // 0008 GETMET R2 R2 K1 + 0x68100002, // 0009 GETUPV R4 U2 + 0x88100902, // 000A GETMBR R4 R4 K2 + 0x5C140000, // 000B MOVE R5 R0 + 0x7C080600, // 000C CALL R2 3 + 0x80040400, // 000D RET 1 R2 + 0x70020038, // 000E JMP #0048 + 0x68080000, // 000F GETUPV R2 U0 + 0x1C080503, // 0010 EQ R2 R2 K3 + 0x780A0007, // 0011 JMPF R2 #001A 0x68080001, // 0012 GETUPV R2 U1 - 0x8C080501, // 0013 GETMET R2 R2 K1 + 0x8C080504, // 0013 GETMET R2 R2 K4 0x68100002, // 0014 GETUPV R4 U2 - 0x88100903, // 0015 GETMBR R4 R4 K3 + 0x88100905, // 0015 GETMBR R4 R4 K5 0x4C140000, // 0016 LDNIL R5 0x7C080600, // 0017 CALL R2 3 0x80040400, // 0018 RET 1 R2 - 0x70020038, // 0019 JMP #0053 + 0x7002002D, // 0019 JMP #0048 0x68080000, // 001A GETUPV R2 U0 - 0x1C080504, // 001B EQ R2 R2 K4 + 0x1C080506, // 001B EQ R2 R2 K6 0x780A0007, // 001C JMPF R2 #0025 0x68080001, // 001D GETUPV R2 U1 - 0x8C080501, // 001E GETMET R2 R2 K1 + 0x8C080504, // 001E GETMET R2 R2 K4 0x68100002, // 001F GETUPV R4 U2 - 0x88100903, // 0020 GETMBR R4 R4 K3 + 0x88100905, // 0020 GETMBR R4 R4 K5 0x4C140000, // 0021 LDNIL R5 0x7C080600, // 0022 CALL R2 3 0x80040400, // 0023 RET 1 R2 - 0x7002002D, // 0024 JMP #0053 + 0x70020022, // 0024 JMP #0048 0x68080000, // 0025 GETUPV R2 U0 - 0x1C080505, // 0026 EQ R2 R2 K5 - 0x780A0007, // 0027 JMPF R2 #0030 - 0x68080001, // 0028 GETUPV R2 U1 - 0x8C080501, // 0029 GETMET R2 R2 K1 - 0x68100002, // 002A GETUPV R4 U2 - 0x88100903, // 002B GETMBR R4 R4 K3 - 0x4C140000, // 002C LDNIL R5 - 0x7C080600, // 002D CALL R2 3 - 0x80040400, // 002E RET 1 R2 - 0x70020022, // 002F JMP #0053 - 0x68080000, // 0030 GETUPV R2 U0 - 0x540E0007, // 0031 LDINT R3 8 - 0x1C080403, // 0032 EQ R2 R2 R3 - 0x780A0007, // 0033 JMPF R2 #003C - 0x68080001, // 0034 GETUPV R2 U1 - 0x8C080501, // 0035 GETMET R2 R2 K1 - 0x68100002, // 0036 GETUPV R4 U2 - 0x88100906, // 0037 GETMBR R4 R4 K6 - 0x5C140200, // 0038 MOVE R5 R1 - 0x7C080600, // 0039 CALL R2 3 - 0x80040400, // 003A RET 1 R2 - 0x70020016, // 003B JMP #0053 - 0x68080000, // 003C GETUPV R2 U0 - 0x540E0008, // 003D LDINT R3 9 - 0x1C080403, // 003E EQ R2 R2 R3 - 0x780A0007, // 003F JMPF R2 #0048 - 0x68080001, // 0040 GETUPV R2 U1 - 0x8C080501, // 0041 GETMET R2 R2 K1 - 0x68100002, // 0042 GETUPV R4 U2 - 0x88100906, // 0043 GETMBR R4 R4 K6 - 0x58140000, // 0044 LDCONST R5 K0 - 0x7C080600, // 0045 CALL R2 3 - 0x80040400, // 0046 RET 1 R2 - 0x7002000A, // 0047 JMP #0053 - 0x68080000, // 0048 GETUPV R2 U0 - 0x540EFFFB, // 0049 LDINT R3 65532 - 0x1C080403, // 004A EQ R2 R2 R3 - 0x780A0006, // 004B JMPF R2 #0053 - 0x68080001, // 004C GETUPV R2 U1 - 0x8C080501, // 004D GETMET R2 R2 K1 - 0x68100002, // 004E GETUPV R4 U2 - 0x88100907, // 004F GETMBR R4 R4 K7 - 0x58140004, // 0050 LDCONST R5 K4 - 0x7C080600, // 0051 CALL R2 3 - 0x80040400, // 0052 RET 1 R2 - 0x4C080000, // 0053 LDNIL R2 - 0x80040400, // 0054 RET 1 R2 + 0x540E0007, // 0026 LDINT R3 8 + 0x1C080403, // 0027 EQ R2 R2 R3 + 0x780A0007, // 0028 JMPF R2 #0031 + 0x68080001, // 0029 GETUPV R2 U1 + 0x8C080504, // 002A GETMET R2 R2 K4 + 0x68100002, // 002B GETUPV R4 U2 + 0x88100907, // 002C GETMBR R4 R4 K7 + 0x5C140200, // 002D MOVE R5 R1 + 0x7C080600, // 002E CALL R2 3 + 0x80040400, // 002F RET 1 R2 + 0x70020016, // 0030 JMP #0048 + 0x68080000, // 0031 GETUPV R2 U0 + 0x540E0008, // 0032 LDINT R3 9 + 0x1C080403, // 0033 EQ R2 R2 R3 + 0x780A0007, // 0034 JMPF R2 #003D + 0x68080001, // 0035 GETUPV R2 U1 + 0x8C080504, // 0036 GETMET R2 R2 K4 + 0x68100002, // 0037 GETUPV R4 U2 + 0x88100907, // 0038 GETMBR R4 R4 K7 + 0x58140000, // 0039 LDCONST R5 K0 + 0x7C080600, // 003A CALL R2 3 + 0x80040400, // 003B RET 1 R2 + 0x7002000A, // 003C JMP #0048 + 0x68080000, // 003D GETUPV R2 U0 + 0x540EFFFB, // 003E LDINT R3 65532 + 0x1C080403, // 003F EQ R2 R2 R3 + 0x780A0006, // 0040 JMPF R2 #0048 + 0x68080001, // 0041 GETUPV R2 U1 + 0x8C080504, // 0042 GETMET R2 R2 K4 + 0x68100002, // 0043 GETUPV R4 U2 + 0x88100908, // 0044 GETMBR R4 R4 K8 + 0x58140003, // 0045 LDCONST R5 K3 + 0x7C080600, // 0046 CALL R2 3 + 0x80040400, // 0047 RET 1 R2 + 0x4C080000, // 0048 LDNIL R2 + 0x80040400, // 0049 RET 1 R2 }) ), &be_class_Matter_Plugin_Sensor_Air_Quality, }), 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_air_quality), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_nested_str_weak(shadow_co2), - /* K10 */ be_nested_str_weak(shadow_pm1), - /* K11 */ be_nested_str_weak(shadow_pm2_5), - /* K12 */ be_nested_str_weak(shadow_pm10), - /* K13 */ be_nested_str_weak(shadow_tvoc), - /* K14 */ be_nested_str_weak(shadow_no2), - /* K15 */ be_nested_str_weak(read_attribute), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(U1), + /* K7 */ be_nested_str_weak(shadow_air_quality), + /* K8 */ be_nested_str_weak(shadow_co2), + /* K9 */ be_nested_str_weak(shadow_pm1), + /* K10 */ be_nested_str_weak(shadow_pm2_5), + /* K11 */ be_nested_str_weak(shadow_pm10), + /* K12 */ be_nested_str_weak(shadow_tvoc), + /* K13 */ be_nested_str_weak(shadow_no2), + /* K14 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[104]) { /* code */ + ( &(const binstruction[93]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 @@ -415,28 +404,28 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x84200000, // 0005 CLOSURE R8 P0 0x5426005A, // 0006 LDINT R9 91 0x1C240A09, // 0007 EQ R9 R5 R9 - 0x78260013, // 0008 JMPF R9 #001D + 0x78260008, // 0008 JMPF R9 #0012 0x1C240D04, // 0009 EQ R9 R6 K4 - 0x78260010, // 000A JMPF R9 #001C - 0x88240105, // 000B GETMBR R9 R0 K5 - 0x4C280000, // 000C LDNIL R10 - 0x2024120A, // 000D NE R9 R9 R10 - 0x78260006, // 000E JMPF R9 #0016 - 0x8C240706, // 000F GETMET R9 R3 K6 - 0x882C0907, // 0010 GETMBR R11 R4 K7 - 0x88300105, // 0011 GETMBR R12 R0 K5 - 0x7C240600, // 0012 CALL R9 3 - 0xA0000000, // 0013 CLOSE R0 - 0x80041200, // 0014 RET 1 R9 - 0x70020005, // 0015 JMP #001C - 0x8C240706, // 0016 GETMET R9 R3 K6 - 0x882C0908, // 0017 GETMBR R11 R4 K8 - 0x4C300000, // 0018 LDNIL R12 - 0x7C240600, // 0019 CALL R9 3 + 0x78260005, // 000A JMPF R9 #0011 + 0x8C240705, // 000B GETMET R9 R3 K5 + 0x882C0906, // 000C GETMBR R11 R4 K6 + 0x88300107, // 000D GETMBR R12 R0 K7 + 0x7C240600, // 000E CALL R9 3 + 0xA0000000, // 000F CLOSE R0 + 0x80041200, // 0010 RET 1 R9 + 0x70020040, // 0011 JMP #0053 + 0x5426040C, // 0012 LDINT R9 1037 + 0x1C240A09, // 0013 EQ R9 R5 R9 + 0x78260007, // 0014 JMPF R9 #001D + 0x5C241000, // 0015 MOVE R9 R8 + 0x88280108, // 0016 GETMBR R10 R0 K8 + 0x7C240200, // 0017 CALL R9 1 + 0x5C1C1200, // 0018 MOVE R7 R9 + 0x78260001, // 0019 JMPF R9 #001C 0xA0000000, // 001A CLOSE R0 - 0x80041200, // 001B RET 1 R9 - 0x70020040, // 001C JMP #005E - 0x5426040C, // 001D LDINT R9 1037 + 0x80040E00, // 001B RET 1 R7 + 0x70020035, // 001C JMP #0053 + 0x5426042B, // 001D LDINT R9 1068 0x1C240A09, // 001E EQ R9 R5 R9 0x78260007, // 001F JMPF R9 #0028 0x5C241000, // 0020 MOVE R9 R8 @@ -446,8 +435,8 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x78260001, // 0024 JMPF R9 #0027 0xA0000000, // 0025 CLOSE R0 0x80040E00, // 0026 RET 1 R7 - 0x70020035, // 0027 JMP #005E - 0x5426042B, // 0028 LDINT R9 1068 + 0x7002002A, // 0027 JMP #0053 + 0x54260429, // 0028 LDINT R9 1066 0x1C240A09, // 0029 EQ R9 R5 R9 0x78260007, // 002A JMPF R9 #0033 0x5C241000, // 002B MOVE R9 R8 @@ -457,8 +446,8 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x78260001, // 002F JMPF R9 #0032 0xA0000000, // 0030 CLOSE R0 0x80040E00, // 0031 RET 1 R7 - 0x7002002A, // 0032 JMP #005E - 0x54260429, // 0033 LDINT R9 1066 + 0x7002001F, // 0032 JMP #0053 + 0x5426042C, // 0033 LDINT R9 1069 0x1C240A09, // 0034 EQ R9 R5 R9 0x78260007, // 0035 JMPF R9 #003E 0x5C241000, // 0036 MOVE R9 R8 @@ -468,8 +457,8 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x78260001, // 003A JMPF R9 #003D 0xA0000000, // 003B CLOSE R0 0x80040E00, // 003C RET 1 R7 - 0x7002001F, // 003D JMP #005E - 0x5426042C, // 003E LDINT R9 1069 + 0x70020014, // 003D JMP #0053 + 0x5426042D, // 003E LDINT R9 1070 0x1C240A09, // 003F EQ R9 R5 R9 0x78260007, // 0040 JMPF R9 #0049 0x5C241000, // 0041 MOVE R9 R8 @@ -479,10 +468,10 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x78260001, // 0045 JMPF R9 #0048 0xA0000000, // 0046 CLOSE R0 0x80040E00, // 0047 RET 1 R7 - 0x70020014, // 0048 JMP #005E - 0x5426042D, // 0049 LDINT R9 1070 + 0x70020009, // 0048 JMP #0053 + 0x54260412, // 0049 LDINT R9 1043 0x1C240A09, // 004A EQ R9 R5 R9 - 0x78260007, // 004B JMPF R9 #0054 + 0x78260006, // 004B JMPF R9 #0053 0x5C241000, // 004C MOVE R9 R8 0x8828010D, // 004D GETMBR R10 R0 K13 0x7C240200, // 004E CALL R9 1 @@ -490,27 +479,16 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x78260001, // 0050 JMPF R9 #0053 0xA0000000, // 0051 CLOSE R0 0x80040E00, // 0052 RET 1 R7 - 0x70020009, // 0053 JMP #005E - 0x54260412, // 0054 LDINT R9 1043 - 0x1C240A09, // 0055 EQ R9 R5 R9 - 0x78260006, // 0056 JMPF R9 #005E - 0x5C241000, // 0057 MOVE R9 R8 - 0x8828010E, // 0058 GETMBR R10 R0 K14 - 0x7C240200, // 0059 CALL R9 1 - 0x5C1C1200, // 005A MOVE R7 R9 - 0x78260001, // 005B JMPF R9 #005E - 0xA0000000, // 005C CLOSE R0 - 0x80040E00, // 005D RET 1 R7 - 0x60240003, // 005E GETGBL R9 G3 - 0x5C280000, // 005F MOVE R10 R0 - 0x7C240200, // 0060 CALL R9 1 - 0x8C24130F, // 0061 GETMET R9 R9 K15 - 0x5C2C0200, // 0062 MOVE R11 R1 - 0x5C300400, // 0063 MOVE R12 R2 - 0x5C340600, // 0064 MOVE R13 R3 - 0x7C240800, // 0065 CALL R9 4 - 0xA0000000, // 0066 CLOSE R0 - 0x80041200, // 0067 RET 1 R9 + 0x60240003, // 0053 GETGBL R9 G3 + 0x5C280000, // 0054 MOVE R10 R0 + 0x7C240200, // 0055 CALL R9 1 + 0x8C24130E, // 0056 GETMET R9 R9 K14 + 0x5C2C0200, // 0057 MOVE R11 R1 + 0x5C300400, // 0058 MOVE R12 R2 + 0x5C340600, // 0059 MOVE R13 R3 + 0x7C240800, // 005A CALL R9 4 + 0xA0000000, // 005B CLOSE R0 + 0x80041200, // 005C RET 1 R9 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h index b0f63d3c8..3f24a0ffe 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h @@ -20,54 +20,43 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Contact, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_contact), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_nested_str_weak(read_attribute), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(BOOL), + /* K7 */ be_nested_str_weak(shadow_contact), + /* K8 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ + ( &(const binstruction[23]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0010, // 0006 JMPF R7 #0018 + 0x781E0006, // 0006 JMPF R7 #000E 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000E, // 0008 JMPF R7 #0018 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x601C0003, // 0018 GETGBL R7 G3 - 0x5C200000, // 0019 MOVE R8 R0 - 0x7C1C0200, // 001A CALL R7 1 - 0x8C1C0F09, // 001B GETMET R7 R7 K9 - 0x5C240200, // 001C MOVE R9 R1 - 0x5C280400, // 001D MOVE R10 R2 - 0x5C2C0600, // 001E MOVE R11 R3 - 0x7C1C0800, // 001F CALL R7 4 - 0x80040E00, // 0020 RET 1 R7 + 0x781E0004, // 0008 JMPF R7 #000E + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x88280107, // 000B GETMBR R10 R0 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x601C0003, // 000E GETGBL R7 G3 + 0x5C200000, // 000F MOVE R8 R0 + 0x7C1C0200, // 0010 CALL R7 1 + 0x8C1C0F08, // 0011 GETMET R7 R7 K8 + 0x5C240200, // 0012 MOVE R9 R1 + 0x5C280400, // 0013 MOVE R10 R2 + 0x5C2C0600, // 0014 MOVE R11 R3 + 0x7C1C0800, // 0015 CALL R7 4 + 0x80040E00, // 0016 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h index 9d3fe0e4d..3ba19f96e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h @@ -26,67 +26,57 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_occupancy), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(U1), + /* K7 */ be_nested_str_weak(shadow_occupancy), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set), /* K10 */ be_const_int(3), /* K11 */ be_const_int(2), /* K12 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ + ( &(const binstruction[39]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E0405, // 0004 LDINT R7 1030 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0020, // 0006 JMPF R7 #0028 + 0x781E0016, // 0006 JMPF R7 #001E 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000F, // 0008 JMPF R7 #0019 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x7002000E, // 0018 JMP #0028 - 0x1C1C0D09, // 0019 EQ R7 R6 K9 - 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C0706, // 001B GETMET R7 R3 K6 - 0x88240907, // 001C GETMBR R9 R4 K7 - 0x5828000A, // 001D LDCONST R10 K10 - 0x7C1C0600, // 001E CALL R7 3 - 0x80040E00, // 001F RET 1 R7 - 0x70020006, // 0020 JMP #0028 - 0x1C1C0D0B, // 0021 EQ R7 R6 K11 - 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C0706, // 0023 GETMET R7 R3 K6 - 0x88240907, // 0024 GETMBR R9 R4 K7 - 0x58280004, // 0025 LDCONST R10 K4 - 0x7C1C0600, // 0026 CALL R7 3 - 0x80040E00, // 0027 RET 1 R7 - 0x601C0003, // 0028 GETGBL R7 G3 - 0x5C200000, // 0029 MOVE R8 R0 - 0x7C1C0200, // 002A CALL R7 1 - 0x8C1C0F0C, // 002B GETMET R7 R7 K12 - 0x5C240200, // 002C MOVE R9 R1 - 0x5C280400, // 002D MOVE R10 R2 - 0x5C2C0600, // 002E MOVE R11 R3 - 0x7C1C0800, // 002F CALL R7 4 - 0x80040E00, // 0030 RET 1 R7 + 0x781E0005, // 0008 JMPF R7 #000F + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x88280107, // 000B GETMBR R10 R0 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x7002000E, // 000E JMP #001E + 0x1C1C0D08, // 000F EQ R7 R6 K8 + 0x781E0005, // 0010 JMPF R7 #0017 + 0x8C1C0709, // 0011 GETMET R7 R3 K9 + 0x88240906, // 0012 GETMBR R9 R4 K6 + 0x5828000A, // 0013 LDCONST R10 K10 + 0x7C1C0600, // 0014 CALL R7 3 + 0x80040E00, // 0015 RET 1 R7 + 0x70020006, // 0016 JMP #001E + 0x1C1C0D0B, // 0017 EQ R7 R6 K11 + 0x781E0004, // 0018 JMPF R7 #001E + 0x8C1C0709, // 0019 GETMET R7 R3 K9 + 0x88240906, // 001A GETMBR R9 R4 K6 + 0x58280004, // 001B LDCONST R10 K4 + 0x7C1C0600, // 001C CALL R7 3 + 0x80040E00, // 001D RET 1 R7 + 0x601C0003, // 001E GETGBL R7 G3 + 0x5C200000, // 001F MOVE R8 R0 + 0x7C1C0200, // 0020 CALL R7 1 + 0x8C1C0F0C, // 0021 GETMET R7 R7 K12 + 0x5C240200, // 0022 MOVE R9 R1 + 0x5C280400, // 0023 MOVE R10 R2 + 0x5C2C0600, // 0024 MOVE R11 R3 + 0x7C1C0800, // 0025 CALL R7 4 + 0x80040E00, // 0026 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h index 618604665..bc4d53a53 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h @@ -90,7 +90,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ }), be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[116]) { /* code */ + ( &(const binstruction[115]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -98,7 +98,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x881C0704, // 0004 GETMBR R7 R3 K4 0x54220101, // 0005 LDINT R8 258 0x1C200C08, // 0006 EQ R8 R6 R8 - 0x78220061, // 0007 JMPF R8 #006A + 0x78220060, // 0007 JMPF R8 #0069 0x8C200105, // 0008 GETMET R8 R0 K5 0x7C200200, // 0009 CALL R8 1 0x1C200F06, // 000A EQ R8 R7 K6 @@ -116,7 +116,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x7C200200, // 0016 CALL R8 1 0x50200200, // 0017 LDBOOL R8 1 0 0x80041000, // 0018 RET 1 R8 - 0x7002004E, // 0019 JMP #0069 + 0x7002004D, // 0019 JMP #0068 0x1C200F0B, // 001A EQ R8 R7 K11 0x7822000D, // 001B JMPF R8 #002A 0xB8220E00, // 001C GETNGBL R8 K7 @@ -132,7 +132,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x7C200200, // 0026 CALL R8 1 0x50200200, // 0027 LDBOOL R8 1 0 0x80041000, // 0028 RET 1 R8 - 0x7002003E, // 0029 JMP #0069 + 0x7002003D, // 0029 JMP #0068 0x1C200F0E, // 002A EQ R8 R7 K14 0x7822000D, // 002B JMPF R8 #003A 0xB8220E00, // 002C GETNGBL R8 K7 @@ -148,65 +148,64 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x7C200200, // 0036 CALL R8 1 0x50200200, // 0037 LDBOOL R8 1 0 0x80041000, // 0038 RET 1 R8 - 0x7002002E, // 0039 JMP #0069 + 0x7002002D, // 0039 JMP #0068 0x54220004, // 003A LDINT R8 5 0x1C200E08, // 003B EQ R8 R7 R8 - 0x7822002B, // 003C JMPF R8 #0069 - 0xB8220E00, // 003D GETNGBL R8 K7 - 0x8C201110, // 003E GETMET R8 R8 K16 - 0x60280008, // 003F GETGBL R10 G8 - 0x5C2C0400, // 0040 MOVE R11 R2 - 0x7C280200, // 0041 CALL R10 1 - 0x002A220A, // 0042 ADD R10 K17 R10 - 0x582C000E, // 0043 LDCONST R11 K14 - 0x7C200600, // 0044 CALL R8 3 - 0x8C200512, // 0045 GETMET R8 R2 K18 - 0x58280006, // 0046 LDCONST R10 K6 - 0x7C200400, // 0047 CALL R8 2 - 0x4C240000, // 0048 LDNIL R9 - 0x20241009, // 0049 NE R9 R8 R9 - 0x7826001B, // 004A JMPF R9 #0067 - 0x54260063, // 004B LDINT R9 100 - 0x0C201009, // 004C DIV R8 R8 R9 - 0x88240113, // 004D GETMBR R9 R0 K19 - 0x1C241306, // 004E EQ R9 R9 K6 - 0x78260001, // 004F JMPF R9 #0052 - 0x54260063, // 0050 LDINT R9 100 - 0x04201208, // 0051 SUB R8 R9 R8 - 0xB8260E00, // 0052 GETNGBL R9 K7 - 0x8C241308, // 0053 GETMET R9 R9 K8 - 0x602C0008, // 0054 GETGBL R11 G8 - 0x8830010A, // 0055 GETMBR R12 R0 K10 - 0x0030190B, // 0056 ADD R12 R12 K11 - 0x7C2C0200, // 0057 CALL R11 1 - 0x002E280B, // 0058 ADD R11 K20 R11 - 0x002C1715, // 0059 ADD R11 R11 K21 - 0x60300008, // 005A GETGBL R12 G8 - 0x5C341000, // 005B MOVE R13 R8 - 0x7C300200, // 005C CALL R12 1 - 0x002C160C, // 005D ADD R11 R11 R12 - 0x50300200, // 005E LDBOOL R12 1 0 - 0x7C240600, // 005F CALL R9 3 - 0x60240008, // 0060 GETGBL R9 G8 - 0x5C281000, // 0061 MOVE R10 R8 - 0x7C240200, // 0062 CALL R9 1 - 0x00262C09, // 0063 ADD R9 K22 R9 - 0x900E2009, // 0064 SETMBR R3 K16 R9 - 0x8C24010C, // 0065 GETMET R9 R0 K12 - 0x7C240200, // 0066 CALL R9 1 - 0x50240200, // 0067 LDBOOL R9 1 0 - 0x80041200, // 0068 RET 1 R9 - 0x70020008, // 0069 JMP #0073 - 0x60200003, // 006A GETGBL R8 G3 - 0x5C240000, // 006B MOVE R9 R0 - 0x7C200200, // 006C CALL R8 1 - 0x8C201117, // 006D GETMET R8 R8 K23 - 0x5C280200, // 006E MOVE R10 R1 - 0x5C2C0400, // 006F MOVE R11 R2 - 0x5C300600, // 0070 MOVE R12 R3 - 0x7C200800, // 0071 CALL R8 4 - 0x80041000, // 0072 RET 1 R8 - 0x80000000, // 0073 RET 0 + 0x7822002A, // 003C JMPF R8 #0068 + 0xB8222000, // 003D GETNGBL R8 K16 + 0x60240008, // 003E GETGBL R9 G8 + 0x5C280400, // 003F MOVE R10 R2 + 0x7C240200, // 0040 CALL R9 1 + 0x00262209, // 0041 ADD R9 K17 R9 + 0x5828000E, // 0042 LDCONST R10 K14 + 0x7C200400, // 0043 CALL R8 2 + 0x8C200512, // 0044 GETMET R8 R2 K18 + 0x58280006, // 0045 LDCONST R10 K6 + 0x7C200400, // 0046 CALL R8 2 + 0x4C240000, // 0047 LDNIL R9 + 0x20241009, // 0048 NE R9 R8 R9 + 0x7826001B, // 0049 JMPF R9 #0066 + 0x54260063, // 004A LDINT R9 100 + 0x0C201009, // 004B DIV R8 R8 R9 + 0x88240113, // 004C GETMBR R9 R0 K19 + 0x1C241306, // 004D EQ R9 R9 K6 + 0x78260001, // 004E JMPF R9 #0051 + 0x54260063, // 004F LDINT R9 100 + 0x04201208, // 0050 SUB R8 R9 R8 + 0xB8260E00, // 0051 GETNGBL R9 K7 + 0x8C241308, // 0052 GETMET R9 R9 K8 + 0x602C0008, // 0053 GETGBL R11 G8 + 0x8830010A, // 0054 GETMBR R12 R0 K10 + 0x0030190B, // 0055 ADD R12 R12 K11 + 0x7C2C0200, // 0056 CALL R11 1 + 0x002E280B, // 0057 ADD R11 K20 R11 + 0x002C1715, // 0058 ADD R11 R11 K21 + 0x60300008, // 0059 GETGBL R12 G8 + 0x5C341000, // 005A MOVE R13 R8 + 0x7C300200, // 005B CALL R12 1 + 0x002C160C, // 005C ADD R11 R11 R12 + 0x50300200, // 005D LDBOOL R12 1 0 + 0x7C240600, // 005E CALL R9 3 + 0x60240008, // 005F GETGBL R9 G8 + 0x5C281000, // 0060 MOVE R10 R8 + 0x7C240200, // 0061 CALL R9 1 + 0x00262C09, // 0062 ADD R9 K22 R9 + 0x900E2009, // 0063 SETMBR R3 K16 R9 + 0x8C24010C, // 0064 GETMET R9 R0 K12 + 0x7C240200, // 0065 CALL R9 1 + 0x50240200, // 0066 LDBOOL R9 1 0 + 0x80041200, // 0067 RET 1 R9 + 0x70020008, // 0068 JMP #0072 + 0x60200003, // 0069 GETGBL R8 G3 + 0x5C240000, // 006A MOVE R9 R0 + 0x7C200200, // 006B CALL R8 1 + 0x8C201117, // 006C GETMET R8 R8 K23 + 0x5C280200, // 006D MOVE R10 R1 + 0x5C2C0400, // 006E MOVE R11 R2 + 0x5C300600, // 006F MOVE R12 R3 + 0x7C200800, // 0070 CALL R8 4 + 0x80041000, // 0071 RET 1 R8 + 0x80000000, // 0072 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h index dafda9e24..060902807 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h @@ -58,68 +58,58 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_read_attribute, /* name */ /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(U2), + /* K7 */ be_nested_str_weak(shadow_value), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set), /* K10 */ be_const_int(2), /* K11 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ + ( &(const binstruction[41]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E0403, // 0004 LDINT R7 1028 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A + 0x781E0018, // 0006 JMPF R7 #0020 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x58280004, // 001F LDCONST R10 K4 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542AFFFD, // 0027 LDINT R10 65534 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 + 0x781E0007, // 0008 JMPF R7 #0011 + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x60280009, // 000B GETGBL R10 G9 + 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x7C280200, // 000D CALL R10 1 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x7002000E, // 0010 JMP #0020 + 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0709, // 0013 GETMET R7 R3 K9 + 0x88240906, // 0014 GETMBR R9 R4 K6 + 0x58280004, // 0015 LDCONST R10 K4 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 + 0x70020006, // 0018 JMP #0020 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0004, // 001A JMPF R7 #0020 + 0x8C1C0709, // 001B GETMET R7 R3 K9 + 0x88240906, // 001C GETMBR R9 R4 K6 + 0x542AFFFD, // 001D LDINT R10 65534 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 + 0x601C0003, // 0020 GETGBL R7 G3 + 0x5C200000, // 0021 MOVE R8 R0 + 0x7C1C0200, // 0022 CALL R7 1 + 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x5C240200, // 0024 MOVE R9 R1 + 0x5C280400, // 0025 MOVE R10 R2 + 0x5C2C0600, // 0026 MOVE R11 R3 + 0x7C1C0800, // 0027 CALL R7 4 + 0x80040E00, // 0028 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h index fde45bb62..978d17ca9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h @@ -58,68 +58,58 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute, /* name * /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(U2), + /* K7 */ be_nested_str_weak(shadow_value), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set), /* K10 */ be_const_int(2), /* K11 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ + ( &(const binstruction[41]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E0404, // 0004 LDINT R7 1029 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A + 0x781E0018, // 0006 JMPF R7 #0020 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x542A01F3, // 001F LDINT R10 500 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542A270F, // 0027 LDINT R10 10000 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 + 0x781E0007, // 0008 JMPF R7 #0011 + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x60280009, // 000B GETGBL R10 G9 + 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x7C280200, // 000D CALL R10 1 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x7002000E, // 0010 JMP #0020 + 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0709, // 0013 GETMET R7 R3 K9 + 0x88240906, // 0014 GETMBR R9 R4 K6 + 0x542A01F3, // 0015 LDINT R10 500 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 + 0x70020006, // 0018 JMP #0020 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0004, // 001A JMPF R7 #0020 + 0x8C1C0709, // 001B GETMET R7 R3 K9 + 0x88240906, // 001C GETMBR R9 R4 K6 + 0x542A270F, // 001D LDINT R10 10000 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 + 0x601C0003, // 0020 GETGBL R7 G3 + 0x5C200000, // 0021 MOVE R8 R0 + 0x7C1C0200, // 0022 CALL R7 1 + 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x5C240200, // 0024 MOVE R9 R1 + 0x5C280400, // 0025 MOVE R10 R2 + 0x5C2C0600, // 0026 MOVE R11 R3 + 0x7C1C0800, // 0027 CALL R7 4 + 0x80040E00, // 0028 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h index 147369bde..23f7928ec 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h @@ -58,68 +58,58 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* nam /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(U2), + /* K7 */ be_nested_str_weak(shadow_value), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set), /* K10 */ be_const_int(2), /* K11 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ + ( &(const binstruction[41]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E03FF, // 0004 LDINT R7 1024 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A + 0x781E0018, // 0006 JMPF R7 #0020 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x58280009, // 001F LDCONST R10 K9 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542AFFFD, // 0027 LDINT R10 65534 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 + 0x781E0007, // 0008 JMPF R7 #0011 + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x60280009, // 000B GETGBL R10 G9 + 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x7C280200, // 000D CALL R10 1 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x7002000E, // 0010 JMP #0020 + 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0709, // 0013 GETMET R7 R3 K9 + 0x88240906, // 0014 GETMBR R9 R4 K6 + 0x58280008, // 0015 LDCONST R10 K8 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 + 0x70020006, // 0018 JMP #0020 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0004, // 001A JMPF R7 #0020 + 0x8C1C0709, // 001B GETMET R7 R3 K9 + 0x88240906, // 001C GETMBR R9 R4 K6 + 0x542AFFFD, // 001D LDINT R10 65534 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 + 0x601C0003, // 0020 GETGBL R7 G3 + 0x5C200000, // 0021 MOVE R8 R0 + 0x7C1C0200, // 0022 CALL R7 1 + 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x5C240200, // 0024 MOVE R9 R1 + 0x5C280400, // 0025 MOVE R10 R2 + 0x5C2C0600, // 0026 MOVE R11 R3 + 0x7C1C0800, // 0027 CALL R7 4 + 0x80040E00, // 0028 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h index a14b2f339..c8a6e3198 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h @@ -58,68 +58,58 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute, /* name * /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(I2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(I2), + /* K7 */ be_nested_str_weak(shadow_value), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set), /* K10 */ be_const_int(2), /* K11 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ + ( &(const binstruction[41]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E0402, // 0004 LDINT R7 1027 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A + 0x781E0018, // 0006 JMPF R7 #0020 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0011, // 0008 JMPF R7 #001B - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0007, // 000C JMPF R7 #0015 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x60280009, // 000F GETGBL R10 G9 - 0x882C0105, // 0010 GETMBR R11 R0 K5 - 0x7C280200, // 0011 CALL R10 1 - 0x7C1C0600, // 0012 CALL R7 3 - 0x80040E00, // 0013 RET 1 R7 - 0x70020004, // 0014 JMP #001A - 0x8C1C0706, // 0015 GETMET R7 R3 K6 - 0x88240908, // 0016 GETMBR R9 R4 K8 - 0x4C280000, // 0017 LDNIL R10 - 0x7C1C0600, // 0018 CALL R7 3 - 0x80040E00, // 0019 RET 1 R7 - 0x7002000E, // 001A JMP #002A - 0x1C1C0D09, // 001B EQ R7 R6 K9 - 0x781E0005, // 001C JMPF R7 #0023 - 0x8C1C0706, // 001D GETMET R7 R3 K6 - 0x88240907, // 001E GETMBR R9 R4 K7 - 0x542A01F3, // 001F LDINT R10 500 - 0x7C1C0600, // 0020 CALL R7 3 - 0x80040E00, // 0021 RET 1 R7 - 0x70020006, // 0022 JMP #002A - 0x1C1C0D0A, // 0023 EQ R7 R6 K10 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C0706, // 0025 GETMET R7 R3 K6 - 0x88240907, // 0026 GETMBR R9 R4 K7 - 0x542A05DB, // 0027 LDINT R10 1500 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0B, // 002D GETMET R7 R7 K11 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 + 0x781E0007, // 0008 JMPF R7 #0011 + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x60280009, // 000B GETGBL R10 G9 + 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x7C280200, // 000D CALL R10 1 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x7002000E, // 0010 JMP #0020 + 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0709, // 0013 GETMET R7 R3 K9 + 0x88240906, // 0014 GETMBR R9 R4 K6 + 0x542A01F3, // 0015 LDINT R10 500 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 + 0x70020006, // 0018 JMP #0020 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0004, // 001A JMPF R7 #0020 + 0x8C1C0709, // 001B GETMET R7 R3 K9 + 0x88240906, // 001C GETMBR R9 R4 K6 + 0x542A05DB, // 001D LDINT R10 1500 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 + 0x601C0003, // 0020 GETGBL R7 G3 + 0x5C200000, // 0021 MOVE R8 R0 + 0x7C1C0200, // 0022 CALL R7 1 + 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x5C240200, // 0024 MOVE R9 R1 + 0x5C280400, // 0025 MOVE R10 R2 + 0x5C2C0600, // 0026 MOVE R11 R3 + 0x7C1C0800, // 0027 CALL R7 4 + 0x80040E00, // 0028 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h index d0b9e7473..4e1663584 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h @@ -58,66 +58,56 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */ /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(attribute), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(shadow_value), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(I2), - /* K8 */ be_nested_str_weak(NULL), - /* K9 */ be_const_int(1), + /* K5 */ be_nested_str_weak(set_or_nil), + /* K6 */ be_nested_str_weak(I2), + /* K7 */ be_nested_str_weak(shadow_value), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set), /* K10 */ be_const_int(2), /* K11 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ + ( &(const binstruction[39]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E0401, // 0004 LDINT R7 1026 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0020, // 0006 JMPF R7 #0028 + 0x781E0016, // 0006 JMPF R7 #001E 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E000F, // 0008 JMPF R7 #0019 - 0x881C0105, // 0009 GETMBR R7 R0 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E0005, // 000C JMPF R7 #0013 - 0x8C1C0706, // 000D GETMET R7 R3 K6 - 0x88240907, // 000E GETMBR R9 R4 K7 - 0x88280105, // 000F GETMBR R10 R0 K5 - 0x7C1C0600, // 0010 CALL R7 3 - 0x80040E00, // 0011 RET 1 R7 - 0x70020004, // 0012 JMP #0018 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x4C280000, // 0015 LDNIL R10 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x7002000E, // 0018 JMP #0028 - 0x1C1C0D09, // 0019 EQ R7 R6 K9 - 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C0706, // 001B GETMET R7 R3 K6 - 0x88240907, // 001C GETMBR R9 R4 K7 - 0x5429EC77, // 001D LDINT R10 -5000 - 0x7C1C0600, // 001E CALL R7 3 - 0x80040E00, // 001F RET 1 R7 - 0x70020006, // 0020 JMP #0028 - 0x1C1C0D0A, // 0021 EQ R7 R6 K10 - 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C0706, // 0023 GETMET R7 R3 K6 - 0x88240907, // 0024 GETMBR R9 R4 K7 - 0x542A3A97, // 0025 LDINT R10 15000 - 0x7C1C0600, // 0026 CALL R7 3 - 0x80040E00, // 0027 RET 1 R7 - 0x601C0003, // 0028 GETGBL R7 G3 - 0x5C200000, // 0029 MOVE R8 R0 - 0x7C1C0200, // 002A CALL R7 1 - 0x8C1C0F0B, // 002B GETMET R7 R7 K11 - 0x5C240200, // 002C MOVE R9 R1 - 0x5C280400, // 002D MOVE R10 R2 - 0x5C2C0600, // 002E MOVE R11 R3 - 0x7C1C0800, // 002F CALL R7 4 - 0x80040E00, // 0030 RET 1 R7 + 0x781E0005, // 0008 JMPF R7 #000F + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x88280107, // 000B GETMBR R10 R0 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x7002000E, // 000E JMP #001E + 0x1C1C0D08, // 000F EQ R7 R6 K8 + 0x781E0005, // 0010 JMPF R7 #0017 + 0x8C1C0709, // 0011 GETMET R7 R3 K9 + 0x88240906, // 0012 GETMBR R9 R4 K6 + 0x5429EC77, // 0013 LDINT R10 -5000 + 0x7C1C0600, // 0014 CALL R7 3 + 0x80040E00, // 0015 RET 1 R7 + 0x70020006, // 0016 JMP #001E + 0x1C1C0D0A, // 0017 EQ R7 R6 K10 + 0x781E0004, // 0018 JMPF R7 #001E + 0x8C1C0709, // 0019 GETMET R7 R3 K9 + 0x88240906, // 001A GETMBR R9 R4 K6 + 0x542A3A97, // 001B LDINT R10 15000 + 0x7C1C0600, // 001C CALL R7 3 + 0x80040E00, // 001D RET 1 R7 + 0x601C0003, // 001E GETGBL R7 G3 + 0x5C200000, // 001F MOVE R8 R0 + 0x7C1C0200, // 0020 CALL R7 1 + 0x8C1C0F0B, // 0021 GETMET R7 R7 K11 + 0x5C240200, // 0022 MOVE R9 R1 + 0x5C280400, // 0023 MOVE R10 R2 + 0x5C2C0600, // 0024 MOVE R11 R3 + 0x7C1C0800, // 0025 CALL R7 4 + 0x80040E00, // 0026 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h index ae5321625..a87dec5fc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h @@ -231,7 +231,7 @@ be_local_closure(class_Matter_Profiler_log, /* name */ extern const bclass be_class_Matter_Profiler; be_local_closure(class_Matter_Profiler_dump, /* name */ be_nested_proto( - 13, /* nstack */ + 12, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -239,63 +239,60 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ 0, /* has sup protos */ &be_class_Matter_Profiler, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(active), /* K1 */ be_nested_str_weak(log), /* K2 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), - /* K5 */ be_nested_str_weak(millis), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(allocs), - /* K8 */ be_nested_str_weak(reallocs), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(len), - /* K11 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), - /* K12 */ be_nested_str_weak(names), + /* K3 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), + /* K4 */ be_nested_str_weak(millis), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(allocs), + /* K7 */ be_nested_str_weak(reallocs), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(len), + /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), + /* K11 */ be_nested_str_weak(names), }), be_str_weak(dump), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ + ( &(const binstruction[37]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 0x8C080101, // 0003 GETMET R2 R0 K1 0x58100002, // 0004 LDCONST R4 K2 0x7C080400, // 0005 CALL R2 2 - 0xB80A0600, // 0006 GETNGBL R2 K3 - 0x8C080501, // 0007 GETMET R2 R2 K1 - 0x58100004, // 0008 LDCONST R4 K4 - 0x5C140200, // 0009 MOVE R5 R1 - 0x7C080600, // 000A CALL R2 3 - 0x88080105, // 000B GETMBR R2 R0 K5 - 0x94080506, // 000C GETIDX R2 R2 K6 - 0x880C0107, // 000D GETMBR R3 R0 K7 - 0x940C0706, // 000E GETIDX R3 R3 K6 - 0x88100108, // 000F GETMBR R4 R0 K8 - 0x94100906, // 0010 GETIDX R4 R4 K6 - 0x58140009, // 0011 LDCONST R5 K9 - 0x8818010A, // 0012 GETMBR R6 R0 K10 - 0x14180A06, // 0013 LT R6 R5 R6 - 0x781A0010, // 0014 JMPF R6 #0026 - 0xB81A0600, // 0015 GETNGBL R6 K3 - 0x8C180D01, // 0016 GETMET R6 R6 K1 - 0x60200018, // 0017 GETGBL R8 G24 - 0x5824000B, // 0018 LDCONST R9 K11 - 0x88280105, // 0019 GETMBR R10 R0 K5 - 0x94281405, // 001A GETIDX R10 R10 R5 - 0x04281402, // 001B SUB R10 R10 R2 - 0x882C0107, // 001C GETMBR R11 R0 K7 - 0x942C1605, // 001D GETIDX R11 R11 R5 - 0x042C1603, // 001E SUB R11 R11 R3 - 0x8830010C, // 001F GETMBR R12 R0 K12 - 0x94301805, // 0020 GETIDX R12 R12 R5 - 0x7C200800, // 0021 CALL R8 4 - 0x5C240200, // 0022 MOVE R9 R1 - 0x7C180600, // 0023 CALL R6 3 - 0x00140B09, // 0024 ADD R5 R5 K9 - 0x7001FFEB, // 0025 JMP #0012 - 0x80000000, // 0026 RET 0 + 0xB80A0200, // 0006 GETNGBL R2 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x88080104, // 000A GETMBR R2 R0 K4 + 0x94080505, // 000B GETIDX R2 R2 K5 + 0x880C0106, // 000C GETMBR R3 R0 K6 + 0x940C0705, // 000D GETIDX R3 R3 K5 + 0x88100107, // 000E GETMBR R4 R0 K7 + 0x94100905, // 000F GETIDX R4 R4 K5 + 0x58140008, // 0010 LDCONST R5 K8 + 0x88180109, // 0011 GETMBR R6 R0 K9 + 0x14180A06, // 0012 LT R6 R5 R6 + 0x781A000F, // 0013 JMPF R6 #0024 + 0xB81A0200, // 0014 GETNGBL R6 K1 + 0x601C0018, // 0015 GETGBL R7 G24 + 0x5820000A, // 0016 LDCONST R8 K10 + 0x88240104, // 0017 GETMBR R9 R0 K4 + 0x94241205, // 0018 GETIDX R9 R9 R5 + 0x04241202, // 0019 SUB R9 R9 R2 + 0x88280106, // 001A GETMBR R10 R0 K6 + 0x94281405, // 001B GETIDX R10 R10 R5 + 0x04281403, // 001C SUB R10 R10 R3 + 0x882C010B, // 001D GETMBR R11 R0 K11 + 0x942C1605, // 001E GETIDX R11 R11 R5 + 0x7C1C0800, // 001F CALL R7 4 + 0x5C200200, // 0020 MOVE R8 R1 + 0x7C180400, // 0021 CALL R6 2 + 0x00140B08, // 0022 ADD R5 R5 K8 + 0x7001FFEC, // 0023 JMP #0011 + 0x80000000, // 0024 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index 35cfe8059..146803b6b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -1004,7 +1004,7 @@ be_local_closure(class_Matter_Session_is_CASE, /* name */ extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_before_remove, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1012,25 +1012,23 @@ be_local_closure(class_Matter_Session_before_remove, /* name */ 0, /* has sup protos */ &be_class_Matter_Session, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_const_int(3), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29), + /* K2 */ be_nested_str_weak(local_session_id), + /* K3 */ be_const_int(3), }), be_str_weak(before_remove), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x600C0018, // 0002 GETGBL R3 G24 - 0x58100002, // 0003 LDCONST R4 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x7C0C0400, // 0005 CALL R3 2 - 0x58100004, // 0006 LDCONST R4 K4 - 0x7C040600, // 0007 CALL R1 3 - 0x80000000, // 0008 RET 0 + 0x60080018, // 0001 GETGBL R2 G24 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x7C080400, // 0004 CALL R2 2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x7C040400, // 0006 CALL R1 2 + 0x80000000, // 0007 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h index 6b86aa097..52966ff73 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h @@ -147,8 +147,8 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ }), be_str_weak(load_fabrics), &be_const_str_solidified, - ( &(const binstruction[117]) { /* code */ - 0xA802005F, // 0000 EXBLK 0 #0061 + ( &(const binstruction[115]) { /* code */ + 0xA802005E, // 0000 EXBLK 0 #0060 0xB8060200, // 0001 GETNGBL R1 K1 0x8C040302, // 0002 GETMET R1 R1 K2 0x7C040200, // 0003 CALL R1 1 @@ -233,38 +233,36 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0x58140013, // 0052 LDCONST R5 K19 0xAC140200, // 0053 CATCH R5 1 0 0xB0080000, // 0054 RAISE 2 R0 R0 - 0xB8161200, // 0055 GETNGBL R5 K9 - 0x8C140B15, // 0056 GETMET R5 R5 K21 - 0x601C0018, // 0057 GETGBL R7 G24 - 0x58200016, // 0058 LDCONST R8 K22 - 0x6024000C, // 0059 GETGBL R9 G12 - 0x88280103, // 005A GETMBR R10 R0 K3 - 0x7C240200, // 005B CALL R9 1 - 0x7C1C0400, // 005C CALL R7 2 - 0x58200017, // 005D LDCONST R8 K23 - 0x7C140600, // 005E CALL R5 3 - 0xA8040001, // 005F EXBLK 1 1 - 0x70020012, // 0060 JMP #0074 - 0xAC040002, // 0061 CATCH R1 0 2 - 0x7002000F, // 0062 JMP #0073 - 0x200C0318, // 0063 NE R3 R1 K24 - 0x780E000C, // 0064 JMPF R3 #0072 - 0xB80E1200, // 0065 GETNGBL R3 K9 - 0x8C0C0715, // 0066 GETMET R3 R3 K21 - 0x60140008, // 0067 GETGBL R5 G8 - 0x5C180200, // 0068 MOVE R6 R1 - 0x7C140200, // 0069 CALL R5 1 - 0x00163205, // 006A ADD R5 K25 R5 - 0x00140B1A, // 006B ADD R5 R5 K26 - 0x60180008, // 006C GETGBL R6 G8 - 0x5C1C0400, // 006D MOVE R7 R2 - 0x7C180200, // 006E CALL R6 1 - 0x00140A06, // 006F ADD R5 R5 R6 - 0x58180017, // 0070 LDCONST R6 K23 - 0x7C0C0600, // 0071 CALL R3 3 - 0x70020000, // 0072 JMP #0074 - 0xB0080000, // 0073 RAISE 2 R0 R0 - 0x80000000, // 0074 RET 0 + 0xB8162A00, // 0055 GETNGBL R5 K21 + 0x60180018, // 0056 GETGBL R6 G24 + 0x581C0016, // 0057 LDCONST R7 K22 + 0x6020000C, // 0058 GETGBL R8 G12 + 0x88240103, // 0059 GETMBR R9 R0 K3 + 0x7C200200, // 005A CALL R8 1 + 0x7C180400, // 005B CALL R6 2 + 0x581C0017, // 005C LDCONST R7 K23 + 0x7C140400, // 005D CALL R5 2 + 0xA8040001, // 005E EXBLK 1 1 + 0x70020011, // 005F JMP #0072 + 0xAC040002, // 0060 CATCH R1 0 2 + 0x7002000E, // 0061 JMP #0071 + 0x200C0318, // 0062 NE R3 R1 K24 + 0x780E000B, // 0063 JMPF R3 #0070 + 0xB80E2A00, // 0064 GETNGBL R3 K21 + 0x60100008, // 0065 GETGBL R4 G8 + 0x5C140200, // 0066 MOVE R5 R1 + 0x7C100200, // 0067 CALL R4 1 + 0x00123204, // 0068 ADD R4 K25 R4 + 0x0010091A, // 0069 ADD R4 R4 K26 + 0x60140008, // 006A GETGBL R5 G8 + 0x5C180400, // 006B MOVE R6 R2 + 0x7C140200, // 006C CALL R5 1 + 0x00100805, // 006D ADD R4 R4 R5 + 0x58140017, // 006E LDCONST R5 K23 + 0x7C0C0400, // 006F CALL R3 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 }) ) ); @@ -582,7 +580,7 @@ be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */ extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -590,20 +588,19 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0, /* has sup protos */ &be_class_Matter_Session_Store, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s), - /* K5 */ be_nested_str_weak(resumption_id), - /* K6 */ be_nested_str_weak(shared_secret), - /* K7 */ be_nested_str_weak(update), - /* K8 */ be_const_int(1), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s), + /* K4 */ be_nested_str_weak(resumption_id), + /* K5 */ be_nested_str_weak(shared_secret), + /* K6 */ be_nested_str_weak(update), + /* K7 */ be_const_int(1), }), be_str_weak(find_session_by_resumption_id), &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ + ( &(const binstruction[37]) { /* code */ 0x5C080200, // 0000 MOVE R2 R1 0x740A0001, // 0001 JMPT R2 #0004 0x4C080000, // 0002 LDNIL R2 @@ -614,34 +611,33 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0x5C140600, // 0007 MOVE R5 R3 0x7C100200, // 0008 CALL R4 1 0x14100404, // 0009 LT R4 R2 R4 - 0x78120019, // 000A JMPF R4 #0025 + 0x78120018, // 000A JMPF R4 #0024 0x94100602, // 000B GETIDX R4 R3 R2 0xB8160400, // 000C GETNGBL R5 K2 - 0x8C140B03, // 000D GETMET R5 R5 K3 - 0x601C0018, // 000E GETGBL R7 G24 - 0x58200004, // 000F LDCONST R8 K4 - 0x60240008, // 0010 GETGBL R9 G8 - 0x88280905, // 0011 GETMBR R10 R4 K5 - 0x7C240200, // 0012 CALL R9 1 - 0x60280008, // 0013 GETGBL R10 G8 - 0x5C2C0200, // 0014 MOVE R11 R1 - 0x7C280200, // 0015 CALL R10 1 - 0x7C1C0600, // 0016 CALL R7 3 - 0x54220003, // 0017 LDINT R8 4 - 0x7C140600, // 0018 CALL R5 3 - 0x88140905, // 0019 GETMBR R5 R4 K5 - 0x1C140A01, // 001A EQ R5 R5 R1 - 0x78160006, // 001B JMPF R5 #0023 - 0x88140906, // 001C GETMBR R5 R4 K6 - 0x4C180000, // 001D LDNIL R6 - 0x20140A06, // 001E NE R5 R5 R6 - 0x78160002, // 001F JMPF R5 #0023 - 0x8C140907, // 0020 GETMET R5 R4 K7 - 0x7C140200, // 0021 CALL R5 1 - 0x80040800, // 0022 RET 1 R4 - 0x00080508, // 0023 ADD R2 R2 K8 - 0x7001FFE0, // 0024 JMP #0006 - 0x80000000, // 0025 RET 0 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C0003, // 000E LDCONST R7 K3 + 0x60200008, // 000F GETGBL R8 G8 + 0x88240904, // 0010 GETMBR R9 R4 K4 + 0x7C200200, // 0011 CALL R8 1 + 0x60240008, // 0012 GETGBL R9 G8 + 0x5C280200, // 0013 MOVE R10 R1 + 0x7C240200, // 0014 CALL R9 1 + 0x7C180600, // 0015 CALL R6 3 + 0x541E0003, // 0016 LDINT R7 4 + 0x7C140400, // 0017 CALL R5 2 + 0x88140904, // 0018 GETMBR R5 R4 K4 + 0x1C140A01, // 0019 EQ R5 R5 R1 + 0x78160006, // 001A JMPF R5 #0022 + 0x88140905, // 001B GETMBR R5 R4 K5 + 0x4C180000, // 001C LDNIL R6 + 0x20140A06, // 001D NE R5 R5 R6 + 0x78160002, // 001E JMPF R5 #0022 + 0x8C140906, // 001F GETMET R5 R4 K6 + 0x7C140200, // 0020 CALL R5 1 + 0x80040800, // 0021 RET 1 R4 + 0x00080507, // 0022 ADD R2 R2 K7 + 0x7001FFE1, // 0023 JMP #0006 + 0x80000000, // 0024 RET 0 }) ) ); @@ -1127,7 +1123,7 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1135,7 +1131,7 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0, /* has sup protos */ &be_class_Matter_Session_Store, 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ + ( &(const bvalue[28]) { /* constants */ /* K0 */ be_nested_str_weak(json), /* K1 */ be_nested_str_weak(path), /* K2 */ be_nested_str_weak(remove_expired), @@ -1156,22 +1152,21 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ /* K17 */ be_nested_str_weak(remove), /* K18 */ be_nested_str_weak(_FABRICS), /* K19 */ be_nested_str_weak(rename), - /* K20 */ be_nested_str_weak(tasmota), - /* K21 */ be_nested_str_weak(log), - /* K22 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), - /* K23 */ be_const_int(2), - /* K24 */ be_nested_str_weak(device), - /* K25 */ be_nested_str_weak(event_fabrics_saved), - /* K26 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), - /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K28 */ be_nested_str_weak(_X7C), + /* K20 */ be_nested_str_weak(log), + /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), + /* K22 */ be_const_int(2), + /* K23 */ be_nested_str_weak(device), + /* K24 */ be_nested_str_weak(event_fabrics_saved), + /* K25 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), + /* K26 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K27 */ be_nested_str_weak(_X7C), }), be_str_weak(save_fabrics), &be_const_str_solidified, - ( &(const binstruction[101]) { /* code */ + ( &(const binstruction[98]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0xA40A0200, // 0001 IMPORT R2 K1 - 0xA802004F, // 0002 EXBLK 0 #0053 + 0xA802004D, // 0002 EXBLK 0 #0051 0x8C0C0102, // 0003 GETMET R3 R0 K2 0x7C0C0200, // 0004 CALL R3 1 0x580C0003, // 0005 LDCONST R3 K3 @@ -1229,47 +1224,44 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0x88200104, // 0039 GETMBR R8 R0 K4 0x88240112, // 003A GETMBR R9 R0 K18 0x7C180600, // 003B CALL R6 3 - 0x781A000C, // 003C JMPF R6 #004A + 0x781A000B, // 003C JMPF R6 #0049 0xB81A2800, // 003D GETNGBL R6 K20 - 0x8C180D15, // 003E GETMET R6 R6 K21 - 0x60200018, // 003F GETGBL R8 G24 - 0x58240016, // 0040 LDCONST R9 K22 - 0x5C280800, // 0041 MOVE R10 R4 - 0x5C2C0600, // 0042 MOVE R11 R3 - 0x7C200600, // 0043 CALL R8 3 - 0x58240017, // 0044 LDCONST R9 K23 - 0x7C180600, // 0045 CALL R6 3 - 0x88180118, // 0046 GETMBR R6 R0 K24 - 0x8C180D19, // 0047 GETMET R6 R6 K25 - 0x7C180200, // 0048 CALL R6 1 - 0x70020006, // 0049 JMP #0051 - 0xB81A2800, // 004A GETNGBL R6 K20 - 0x8C180D15, // 004B GETMET R6 R6 K21 - 0x60200018, // 004C GETGBL R8 G24 - 0x5824001A, // 004D LDCONST R9 K26 - 0x7C200200, // 004E CALL R8 1 - 0x58240017, // 004F LDCONST R9 K23 - 0x7C180600, // 0050 CALL R6 3 - 0xA8040001, // 0051 EXBLK 1 1 - 0x70020010, // 0052 JMP #0064 - 0xAC0C0002, // 0053 CATCH R3 0 2 - 0x7002000D, // 0054 JMP #0063 - 0xB8162800, // 0055 GETNGBL R5 K20 - 0x8C140B15, // 0056 GETMET R5 R5 K21 - 0x601C0008, // 0057 GETGBL R7 G8 - 0x5C200600, // 0058 MOVE R8 R3 - 0x7C1C0200, // 0059 CALL R7 1 - 0x001E3607, // 005A ADD R7 K27 R7 - 0x001C0F1C, // 005B ADD R7 R7 K28 - 0x60200008, // 005C GETGBL R8 G8 - 0x5C240800, // 005D MOVE R9 R4 - 0x7C200200, // 005E CALL R8 1 - 0x001C0E08, // 005F ADD R7 R7 R8 - 0x58200017, // 0060 LDCONST R8 K23 - 0x7C140600, // 0061 CALL R5 3 - 0x70020000, // 0062 JMP #0064 - 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x80000000, // 0064 RET 0 + 0x601C0018, // 003E GETGBL R7 G24 + 0x58200015, // 003F LDCONST R8 K21 + 0x5C240800, // 0040 MOVE R9 R4 + 0x5C280600, // 0041 MOVE R10 R3 + 0x7C1C0600, // 0042 CALL R7 3 + 0x58200016, // 0043 LDCONST R8 K22 + 0x7C180400, // 0044 CALL R6 2 + 0x88180117, // 0045 GETMBR R6 R0 K23 + 0x8C180D18, // 0046 GETMET R6 R6 K24 + 0x7C180200, // 0047 CALL R6 1 + 0x70020005, // 0048 JMP #004F + 0xB81A2800, // 0049 GETNGBL R6 K20 + 0x601C0018, // 004A GETGBL R7 G24 + 0x58200019, // 004B LDCONST R8 K25 + 0x7C1C0200, // 004C CALL R7 1 + 0x58200016, // 004D LDCONST R8 K22 + 0x7C180400, // 004E CALL R6 2 + 0xA8040001, // 004F EXBLK 1 1 + 0x7002000F, // 0050 JMP #0061 + 0xAC0C0002, // 0051 CATCH R3 0 2 + 0x7002000C, // 0052 JMP #0060 + 0xB8162800, // 0053 GETNGBL R5 K20 + 0x60180008, // 0054 GETGBL R6 G8 + 0x5C1C0600, // 0055 MOVE R7 R3 + 0x7C180200, // 0056 CALL R6 1 + 0x001A3406, // 0057 ADD R6 K26 R6 + 0x00180D1B, // 0058 ADD R6 R6 K27 + 0x601C0008, // 0059 GETGBL R7 G8 + 0x5C200800, // 005A MOVE R8 R4 + 0x7C1C0200, // 005B CALL R7 1 + 0x00180C07, // 005C ADD R6 R6 R7 + 0x581C0016, // 005D LDCONST R7 K22 + 0x7C140400, // 005E CALL R5 2 + 0x70020000, // 005F JMP #0061 + 0xB0080000, // 0060 RAISE 2 R0 R0 + 0x80000000, // 0061 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h index 405f2510e..b2d5f55e7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h @@ -48,7 +48,7 @@ be_local_closure(class_Matter_TCP_async_read, /* name */ extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_begin, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -83,7 +83,7 @@ be_local_closure(class_Matter_TCP_async_begin, /* name */ }), be_str_weak(begin), &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ + ( &(const binstruction[62]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 0xB8060200, // 0002 GETNGBL R1 K1 @@ -126,27 +126,26 @@ be_local_closure(class_Matter_TCP_async_begin, /* name */ 0x7C040400, // 0027 CALL R1 2 0x50040200, // 0028 LDBOOL R1 1 0 0x80040200, // 0029 RET 1 R1 - 0x70020012, // 002A JMP #003E - 0xB8060200, // 002B GETNGBL R1 K1 - 0x8C040311, // 002C GETMET R1 R1 K17 - 0x600C0018, // 002D GETGBL R3 G24 - 0x58100012, // 002E LDCONST R4 K18 - 0x8814010B, // 002F GETMBR R5 R0 K11 - 0x8818010C, // 0030 GETMBR R6 R0 K12 - 0x7C0C0600, // 0031 CALL R3 3 - 0x58100013, // 0032 LDCONST R4 K19 - 0x7C040600, // 0033 CALL R1 3 - 0x8C040114, // 0034 GETMET R1 R0 K20 - 0x7C040200, // 0035 CALL R1 1 - 0x5405FFFE, // 0036 LDINT R1 -1 - 0x90020E01, // 0037 SETMBR R0 K7 R1 - 0x50040000, // 0038 LDBOOL R1 0 0 - 0x90022A01, // 0039 SETMBR R0 K21 R1 - 0x8C040116, // 003A GETMET R1 R0 K22 - 0x7C040200, // 003B CALL R1 1 - 0x50040000, // 003C LDBOOL R1 0 0 - 0x80040200, // 003D RET 1 R1 - 0x80000000, // 003E RET 0 + 0x70020011, // 002A JMP #003D + 0xB8062200, // 002B GETNGBL R1 K17 + 0x60080018, // 002C GETGBL R2 G24 + 0x580C0012, // 002D LDCONST R3 K18 + 0x8810010B, // 002E GETMBR R4 R0 K11 + 0x8814010C, // 002F GETMBR R5 R0 K12 + 0x7C080600, // 0030 CALL R2 3 + 0x580C0013, // 0031 LDCONST R3 K19 + 0x7C040400, // 0032 CALL R1 2 + 0x8C040114, // 0033 GETMET R1 R0 K20 + 0x7C040200, // 0034 CALL R1 1 + 0x5405FFFE, // 0035 LDINT R1 -1 + 0x90020E01, // 0036 SETMBR R0 K7 R1 + 0x50040000, // 0037 LDBOOL R1 0 0 + 0x90022A01, // 0038 SETMBR R0 K21 R1 + 0x8C040116, // 0039 GETMET R1 R0 K22 + 0x7C040200, // 003A CALL R1 1 + 0x50040000, // 003B LDBOOL R1 0 0 + 0x80040200, // 003C RET 1 R1 + 0x80000000, // 003D RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index d88b86b6b..78ba7508d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -896,7 +896,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ + ( &(const bvalue[24]) { /* constants */ /* K0 */ be_nested_str_weak(typ), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(_len), @@ -916,16 +916,15 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ /* K16 */ be_nested_str_weak(asstring), /* K17 */ be_nested_str_weak(NULL), /* K18 */ be_nested_str_weak(EOC), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(log), - /* K21 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), - /* K22 */ be_const_int(3), - /* K23 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), - /* K24 */ be_nested_str_weak(next_idx), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), + /* K23 */ be_nested_str_weak(next_idx), }), be_str_weak(parse), &be_const_str_solidified, - ( &(const binstruction[103]) { /* code */ + ( &(const binstruction[101]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 0x88100101, // 0001 GETMBR R4 R0 K1 0x88140902, // 0002 GETMBR R5 R4 K2 @@ -941,7 +940,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x90020606, // 000C SETMBR R0 K3 R6 0x541A0007, // 000D LDINT R6 8 0x00080406, // 000E ADD R2 R2 R6 - 0x70020054, // 000F JMP #0065 + 0x70020052, // 000F JMP #0063 0x88180906, // 0010 GETMBR R6 R4 K6 0x1C180606, // 0011 EQ R6 R3 R6 0x741A0002, // 0012 JMPT R6 #0016 @@ -951,7 +950,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x88180907, // 0016 GETMBR R6 R4 K7 0x1C180606, // 0017 EQ R6 R3 R6 0x90020606, // 0018 SETMBR R0 K3 R6 - 0x7002004A, // 0019 JMP #0065 + 0x70020048, // 0019 JMP #0063 0x88180908, // 001A GETMBR R6 R4 K8 0x14180606, // 001B LT R6 R3 R6 0x781A000E, // 001C JMPF R6 #002C @@ -969,7 +968,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x7C180600, // 0028 CALL R6 3 0x90020606, // 0029 SETMBR R0 K3 R6 0x00080405, // 002A ADD R2 R2 R5 - 0x70020038, // 002B JMP #0065 + 0x70020036, // 002B JMP #0063 0x8818090C, // 002C GETMBR R6 R4 K12 0x1C180606, // 002D EQ R6 R3 R6 0x781A0006, // 002E JMPF R6 #0036 @@ -979,7 +978,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x90020606, // 0032 SETMBR R0 K3 R6 0x541A0003, // 0033 LDINT R6 4 0x00080406, // 0034 ADD R2 R2 R6 - 0x7002002E, // 0035 JMP #0065 + 0x7002002C, // 0035 JMP #0063 0x5419FFF7, // 0036 LDINT R6 -8 0x28180A06, // 0037 GE R6 R5 R6 0x781A0016, // 0038 JMPF R6 #0050 @@ -1005,30 +1004,28 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x8C1C0F10, // 004C GETMET R7 R7 K16 0x7C1C0200, // 004D CALL R7 1 0x90020607, // 004E SETMBR R0 K3 R7 - 0x70020014, // 004F JMP #0065 + 0x70020012, // 004F JMP #0063 0x88180911, // 0050 GETMBR R6 R4 K17 0x1C180606, // 0051 EQ R6 R3 R6 0x781A0000, // 0052 JMPF R6 #0054 - 0x70020010, // 0053 JMP #0065 + 0x7002000E, // 0053 JMP #0063 0x88180912, // 0054 GETMBR R6 R4 K18 0x1C180606, // 0055 EQ R6 R3 R6 - 0x781A0005, // 0056 JMPF R6 #005D + 0x781A0004, // 0056 JMPF R6 #005C 0xB81A2600, // 0057 GETNGBL R6 K19 - 0x8C180D14, // 0058 GETMET R6 R6 K20 + 0x581C0014, // 0058 LDCONST R7 K20 0x58200015, // 0059 LDCONST R8 K21 - 0x58240016, // 005A LDCONST R9 K22 - 0x7C180600, // 005B CALL R6 3 - 0x70020007, // 005C JMP #0065 - 0xB81A2600, // 005D GETNGBL R6 K19 - 0x8C180D14, // 005E GETMET R6 R6 K20 - 0x60200008, // 005F GETGBL R8 G8 - 0x5C240600, // 0060 MOVE R9 R3 - 0x7C200200, // 0061 CALL R8 1 - 0x00222E08, // 0062 ADD R8 K23 R8 - 0x58240016, // 0063 LDCONST R9 K22 - 0x7C180600, // 0064 CALL R6 3 - 0x90023002, // 0065 SETMBR R0 K24 R2 - 0x80040400, // 0066 RET 1 R2 + 0x7C180400, // 005A CALL R6 2 + 0x70020006, // 005B JMP #0063 + 0xB81A2600, // 005C GETNGBL R6 K19 + 0x601C0008, // 005D GETGBL R7 G8 + 0x5C200600, // 005E MOVE R8 R3 + 0x7C1C0200, // 005F CALL R7 1 + 0x001E2C07, // 0060 ADD R7 K22 R7 + 0x58200015, // 0061 LDCONST R8 K21 + 0x7C180400, // 0062 CALL R6 2 + 0x90022E02, // 0063 SETMBR R0 K23 R2 + 0x80040400, // 0064 RET 1 R2 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index 180150805..1a1d559c0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -193,7 +193,7 @@ be_local_closure(class_Matter_UDPServer_send_UDP, /* name */ extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_received_ack, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -216,7 +216,7 @@ be_local_closure(class_Matter_UDPServer_received_ack, /* name */ }), be_str_weak(received_ack), &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ + ( &(const binstruction[40]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x4C100000, // 0002 LDNIL R4 @@ -228,15 +228,15 @@ be_local_closure(class_Matter_UDPServer_received_ack, /* name */ 0x88180103, // 0008 GETMBR R6 R0 K3 0x7C140200, // 0009 CALL R5 1 0x14140805, // 000A LT R5 R4 R5 - 0x7816001B, // 000B JMPF R5 #0028 + 0x7816001A, // 000B JMPF R5 #0027 0x88140103, // 000C GETMBR R5 R0 K3 0x94140A04, // 000D GETIDX R5 R5 R4 0x88180B04, // 000E GETMBR R6 R5 K4 0x1C180C02, // 000F EQ R6 R6 R2 - 0x781A0014, // 0010 JMPF R6 #0026 + 0x781A0013, // 0010 JMPF R6 #0025 0x88180B01, // 0011 GETMBR R6 R5 K1 0x1C180C03, // 0012 EQ R6 R6 R3 - 0x781A0011, // 0013 JMPF R6 #0026 + 0x781A0010, // 0013 JMPF R6 #0025 0x88180103, // 0014 GETMBR R6 R0 K3 0x8C180D05, // 0015 GETMET R6 R6 K5 0x5C200800, // 0016 MOVE R8 R4 @@ -245,19 +245,18 @@ be_local_closure(class_Matter_UDPServer_received_ack, /* name */ 0x8C180D07, // 0019 GETMET R6 R6 K7 0x54220003, // 001A LDINT R8 4 0x7C180400, // 001B CALL R6 2 - 0x781A0007, // 001C JMPF R6 #0025 - 0xB81A0C00, // 001D GETNGBL R6 K6 - 0x8C180D08, // 001E GETMET R6 R6 K8 - 0x60200008, // 001F GETGBL R8 G8 - 0x5C240400, // 0020 MOVE R9 R2 - 0x7C200200, // 0021 CALL R8 1 - 0x00221208, // 0022 ADD R8 K9 R8 - 0x54260003, // 0023 LDINT R9 4 - 0x7C180600, // 0024 CALL R6 3 - 0x70020000, // 0025 JMP #0027 - 0x0010090A, // 0026 ADD R4 R4 K10 - 0x7001FFDE, // 0027 JMP #0007 - 0x80000000, // 0028 RET 0 + 0x781A0006, // 001C JMPF R6 #0024 + 0xB81A1000, // 001D GETNGBL R6 K8 + 0x601C0008, // 001E GETGBL R7 G8 + 0x5C200400, // 001F MOVE R8 R2 + 0x7C1C0200, // 0020 CALL R7 1 + 0x001E1207, // 0021 ADD R7 K9 R7 + 0x54220003, // 0022 LDINT R8 4 + 0x7C180400, // 0023 CALL R6 2 + 0x70020000, // 0024 JMP #0026 + 0x0010090A, // 0025 ADD R4 R4 K10 + 0x7001FFDF, // 0026 JMP #0007 + 0x80000000, // 0027 RET 0 }) ) ); @@ -328,7 +327,7 @@ be_local_closure(class_Matter_UDPServer_start, /* name */ extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_send, /* name */ be_nested_proto( - 9, /* nstack */ + 8, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -353,7 +352,7 @@ be_local_closure(class_Matter_UDPServer_send, /* name */ }), be_str_weak(send), &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ + ( &(const binstruction[45]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -370,37 +369,35 @@ be_local_closure(class_Matter_UDPServer_send, /* name */ 0x88140B05, // 000D GETMBR R5 R5 K5 0x88180306, // 000E GETMBR R6 R1 K6 0x7C080800, // 000F CALL R2 4 - 0x780A000E, // 0010 JMPF R2 #0020 + 0x780A000D, // 0010 JMPF R2 #001F 0xB80E0E00, // 0011 GETNGBL R3 K7 0x8C0C0708, // 0012 GETMET R3 R3 K8 0x54160003, // 0013 LDINT R5 4 0x7C0C0400, // 0014 CALL R3 2 - 0x780E0008, // 0015 JMPF R3 #001F - 0xB80E0E00, // 0016 GETNGBL R3 K7 - 0x8C0C0709, // 0017 GETMET R3 R3 K9 - 0x60140018, // 0018 GETGBL R5 G24 - 0x5818000A, // 0019 LDCONST R6 K10 - 0x881C0302, // 001A GETMBR R7 R1 K2 - 0x88200304, // 001B GETMBR R8 R1 K4 - 0x7C140600, // 001C CALL R5 3 - 0x541A0003, // 001D LDINT R6 4 - 0x7C0C0600, // 001E CALL R3 3 - 0x7002000D, // 001F JMP #002E - 0xB80E0E00, // 0020 GETNGBL R3 K7 - 0x8C0C0708, // 0021 GETMET R3 R3 K8 - 0x5814000B, // 0022 LDCONST R5 K11 - 0x7C0C0400, // 0023 CALL R3 2 - 0x780E0008, // 0024 JMPF R3 #002E - 0xB80E0E00, // 0025 GETNGBL R3 K7 - 0x8C0C0709, // 0026 GETMET R3 R3 K9 - 0x60140018, // 0027 GETGBL R5 G24 - 0x5818000C, // 0028 LDCONST R6 K12 - 0x881C0302, // 0029 GETMBR R7 R1 K2 - 0x88200304, // 002A GETMBR R8 R1 K4 - 0x7C140600, // 002B CALL R5 3 - 0x5818000B, // 002C LDCONST R6 K11 - 0x7C0C0600, // 002D CALL R3 3 - 0x80040400, // 002E RET 1 R2 + 0x780E0007, // 0015 JMPF R3 #001E + 0xB80E1200, // 0016 GETNGBL R3 K9 + 0x60100018, // 0017 GETGBL R4 G24 + 0x5814000A, // 0018 LDCONST R5 K10 + 0x88180302, // 0019 GETMBR R6 R1 K2 + 0x881C0304, // 001A GETMBR R7 R1 K4 + 0x7C100600, // 001B CALL R4 3 + 0x54160003, // 001C LDINT R5 4 + 0x7C0C0400, // 001D CALL R3 2 + 0x7002000C, // 001E JMP #002C + 0xB80E0E00, // 001F GETNGBL R3 K7 + 0x8C0C0708, // 0020 GETMET R3 R3 K8 + 0x5814000B, // 0021 LDCONST R5 K11 + 0x7C0C0400, // 0022 CALL R3 2 + 0x780E0007, // 0023 JMPF R3 #002C + 0xB80E1200, // 0024 GETNGBL R3 K9 + 0x60100018, // 0025 GETGBL R4 G24 + 0x5814000C, // 0026 LDCONST R5 K12 + 0x88180302, // 0027 GETMBR R6 R1 K2 + 0x881C0304, // 0028 GETMBR R7 R1 K4 + 0x7C100600, // 0029 CALL R4 3 + 0x5814000B, // 002A LDCONST R5 K11 + 0x7C0C0400, // 002B CALL R3 2 + 0x80040400, // 002C RET 1 R2 }) ) ); @@ -533,7 +530,7 @@ be_local_closure(class_Matter_UDPServer_init, /* name */ extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ be_nested_proto( - 11, /* nstack */ + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -565,67 +562,65 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ }), be_str_weak(_resend_packets), &be_const_str_solidified, - ( &(const binstruction[60]) { /* code */ + ( &(const binstruction[58]) { /* code */ 0x58040000, // 0000 LDCONST R1 K0 0x6008000C, // 0001 GETGBL R2 G12 0x880C0101, // 0002 GETMBR R3 R0 K1 0x7C080200, // 0003 CALL R2 1 0x14080202, // 0004 LT R2 R1 R2 - 0x780A0034, // 0005 JMPF R2 #003B + 0x780A0032, // 0005 JMPF R2 #0039 0x88080101, // 0006 GETMBR R2 R0 K1 0x94080401, // 0007 GETIDX R2 R2 R1 0xB80E0400, // 0008 GETNGBL R3 K2 0x8C0C0703, // 0009 GETMET R3 R3 K3 0x88140504, // 000A GETMBR R5 R2 K4 0x7C0C0400, // 000B CALL R3 2 - 0x780E002B, // 000C JMPF R3 #0039 + 0x780E0029, // 000C JMPF R3 #0037 0x880C0505, // 000D GETMBR R3 R2 K5 0x88100106, // 000E GETMBR R4 R0 K6 0x180C0604, // 000F LE R3 R3 R4 - 0x780E0017, // 0010 JMPF R3 #0029 - 0xB80E0400, // 0011 GETNGBL R3 K2 - 0x8C0C0707, // 0012 GETMET R3 R3 K7 - 0x60140008, // 0013 GETGBL R5 G8 - 0x88180509, // 0014 GETMBR R6 R2 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x00161005, // 0016 ADD R5 K8 R5 - 0x541A0003, // 0017 LDINT R6 4 - 0x7C0C0600, // 0018 CALL R3 3 - 0x8C0C010A, // 0019 GETMET R3 R0 K10 - 0x5C140400, // 001A MOVE R5 R2 - 0x7C0C0400, // 001B CALL R3 2 - 0xB80E0400, // 001C GETNGBL R3 K2 - 0x8C0C070B, // 001D GETMET R3 R3 K11 - 0x7C0C0200, // 001E CALL R3 1 - 0x8C10010C, // 001F GETMET R4 R0 K12 - 0x88180505, // 0020 GETMBR R6 R2 K5 - 0x7C100400, // 0021 CALL R4 2 - 0x000C0604, // 0022 ADD R3 R3 R4 - 0x900A0803, // 0023 SETMBR R2 K4 R3 - 0x880C0505, // 0024 GETMBR R3 R2 K5 - 0x000C070D, // 0025 ADD R3 R3 K13 - 0x900A0A03, // 0026 SETMBR R2 K5 R3 - 0x0004030D, // 0027 ADD R1 R1 K13 - 0x7002000E, // 0028 JMP #0038 - 0x880C0101, // 0029 GETMBR R3 R0 K1 - 0x8C0C070E, // 002A GETMET R3 R3 K14 - 0x5C140200, // 002B MOVE R5 R1 - 0x7C0C0400, // 002C CALL R3 2 - 0xB80E0400, // 002D GETNGBL R3 K2 - 0x8C0C0707, // 002E GETMET R3 R3 K7 - 0x60140018, // 002F GETGBL R5 G24 - 0x5818000F, // 0030 LDCONST R6 K15 - 0x881C0510, // 0031 GETMBR R7 R2 K16 - 0x88200511, // 0032 GETMBR R8 R2 K17 - 0x88240512, // 0033 GETMBR R9 R2 K18 - 0x88280509, // 0034 GETMBR R10 R2 K9 - 0x7C140A00, // 0035 CALL R5 5 - 0x58180013, // 0036 LDCONST R6 K19 - 0x7C0C0600, // 0037 CALL R3 3 - 0x70020000, // 0038 JMP #003A - 0x0004030D, // 0039 ADD R1 R1 K13 - 0x7001FFC5, // 003A JMP #0001 - 0x80000000, // 003B RET 0 + 0x780E0016, // 0010 JMPF R3 #0028 + 0xB80E0E00, // 0011 GETNGBL R3 K7 + 0x60100008, // 0012 GETGBL R4 G8 + 0x88140509, // 0013 GETMBR R5 R2 K9 + 0x7C100200, // 0014 CALL R4 1 + 0x00121004, // 0015 ADD R4 K8 R4 + 0x54160003, // 0016 LDINT R5 4 + 0x7C0C0400, // 0017 CALL R3 2 + 0x8C0C010A, // 0018 GETMET R3 R0 K10 + 0x5C140400, // 0019 MOVE R5 R2 + 0x7C0C0400, // 001A CALL R3 2 + 0xB80E0400, // 001B GETNGBL R3 K2 + 0x8C0C070B, // 001C GETMET R3 R3 K11 + 0x7C0C0200, // 001D CALL R3 1 + 0x8C10010C, // 001E GETMET R4 R0 K12 + 0x88180505, // 001F GETMBR R6 R2 K5 + 0x7C100400, // 0020 CALL R4 2 + 0x000C0604, // 0021 ADD R3 R3 R4 + 0x900A0803, // 0022 SETMBR R2 K4 R3 + 0x880C0505, // 0023 GETMBR R3 R2 K5 + 0x000C070D, // 0024 ADD R3 R3 K13 + 0x900A0A03, // 0025 SETMBR R2 K5 R3 + 0x0004030D, // 0026 ADD R1 R1 K13 + 0x7002000D, // 0027 JMP #0036 + 0x880C0101, // 0028 GETMBR R3 R0 K1 + 0x8C0C070E, // 0029 GETMET R3 R3 K14 + 0x5C140200, // 002A MOVE R5 R1 + 0x7C0C0400, // 002B CALL R3 2 + 0xB80E0E00, // 002C GETNGBL R3 K7 + 0x60100018, // 002D GETGBL R4 G24 + 0x5814000F, // 002E LDCONST R5 K15 + 0x88180510, // 002F GETMBR R6 R2 K16 + 0x881C0511, // 0030 GETMBR R7 R2 K17 + 0x88200512, // 0031 GETMBR R8 R2 K18 + 0x88240509, // 0032 GETMBR R9 R2 K9 + 0x7C100A00, // 0033 CALL R4 5 + 0x58140013, // 0034 LDCONST R5 K19 + 0x7C0C0400, // 0035 CALL R3 2 + 0x70020000, // 0036 JMP #0038 + 0x0004030D, // 0037 ADD R1 R1 K13 + 0x7001FFC7, // 0038 JMP #0001 + 0x80000000, // 0039 RET 0 }) ) ); @@ -727,7 +722,7 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_loop, /* name */ be_nested_proto( - 12, /* nstack */ + 11, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -759,7 +754,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ }), be_str_weak(loop), &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ + ( &(const binstruction[62]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x88040301, // 0001 GETMBR R1 R1 K1 0x58080002, // 0002 LDCONST R2 K2 @@ -774,7 +769,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x7C0C0400, // 000B CALL R3 2 0x4C100000, // 000C LDNIL R4 0x20100604, // 000D NE R4 R3 R4 - 0x7812002C, // 000E JMPF R4 #003C + 0x7812002B, // 000E JMPF R4 #003B 0x8C100306, // 000F GETMET R4 R1 K6 0x7C100200, // 0010 CALL R4 1 0x90020A03, // 0011 SETMBR R0 K5 R3 @@ -787,42 +782,41 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x8C180D0B, // 0018 GETMET R6 R6 K11 0x54220003, // 0019 LDINT R8 4 0x7C180400, // 001A CALL R6 2 - 0x781A0008, // 001B JMPF R6 #0025 - 0xB81A1400, // 001C GETNGBL R6 K10 - 0x8C180D0C, // 001D GETMET R6 R6 K12 - 0x60200018, // 001E GETGBL R8 G24 - 0x5824000D, // 001F LDCONST R9 K13 - 0x5C280800, // 0020 MOVE R10 R4 - 0x5C2C0A00, // 0021 MOVE R11 R5 - 0x7C200600, // 0022 CALL R8 3 - 0x54260003, // 0023 LDINT R9 4 - 0x7C180600, // 0024 CALL R6 3 - 0x8818010E, // 0025 GETMBR R6 R0 K14 - 0x781A0007, // 0026 JMPF R6 #002F - 0x8C18030C, // 0027 GETMET R6 R1 K12 - 0x5820000F, // 0028 LDCONST R8 K15 - 0x7C180400, // 0029 CALL R6 2 - 0x8C18010E, // 002A GETMET R6 R0 K14 - 0x5C200600, // 002B MOVE R8 R3 - 0x5C240800, // 002C MOVE R9 R4 - 0x5C280A00, // 002D MOVE R10 R5 - 0x7C180800, // 002E CALL R6 4 - 0x8C180310, // 002F GETMET R6 R1 K16 - 0x58200011, // 0030 LDCONST R8 K17 - 0x7C180400, // 0031 CALL R6 2 - 0x88180112, // 0032 GETMBR R6 R0 K18 - 0x14180406, // 0033 LT R6 R2 R6 - 0x781A0004, // 0034 JMPF R6 #003A - 0x88180103, // 0035 GETMBR R6 R0 K3 - 0x8C180D04, // 0036 GETMET R6 R6 K4 - 0x7C180200, // 0037 CALL R6 1 - 0x5C0C0C00, // 0038 MOVE R3 R6 - 0x70020000, // 0039 JMP #003B - 0x4C0C0000, // 003A LDNIL R3 - 0x7001FFCF, // 003B JMP #000C - 0x8C100113, // 003C GETMET R4 R0 K19 - 0x7C100200, // 003D CALL R4 1 - 0x80000000, // 003E RET 0 + 0x781A0007, // 001B JMPF R6 #0024 + 0xB81A1800, // 001C GETNGBL R6 K12 + 0x601C0018, // 001D GETGBL R7 G24 + 0x5820000D, // 001E LDCONST R8 K13 + 0x5C240800, // 001F MOVE R9 R4 + 0x5C280A00, // 0020 MOVE R10 R5 + 0x7C1C0600, // 0021 CALL R7 3 + 0x54220003, // 0022 LDINT R8 4 + 0x7C180400, // 0023 CALL R6 2 + 0x8818010E, // 0024 GETMBR R6 R0 K14 + 0x781A0007, // 0025 JMPF R6 #002E + 0x8C18030C, // 0026 GETMET R6 R1 K12 + 0x5820000F, // 0027 LDCONST R8 K15 + 0x7C180400, // 0028 CALL R6 2 + 0x8C18010E, // 0029 GETMET R6 R0 K14 + 0x5C200600, // 002A MOVE R8 R3 + 0x5C240800, // 002B MOVE R9 R4 + 0x5C280A00, // 002C MOVE R10 R5 + 0x7C180800, // 002D CALL R6 4 + 0x8C180310, // 002E GETMET R6 R1 K16 + 0x58200011, // 002F LDCONST R8 K17 + 0x7C180400, // 0030 CALL R6 2 + 0x88180112, // 0031 GETMBR R6 R0 K18 + 0x14180406, // 0032 LT R6 R2 R6 + 0x781A0004, // 0033 JMPF R6 #0039 + 0x88180103, // 0034 GETMBR R6 R0 K3 + 0x8C180D04, // 0035 GETMET R6 R6 K4 + 0x7C180200, // 0036 CALL R6 1 + 0x5C0C0C00, // 0037 MOVE R3 R6 + 0x70020000, // 0038 JMP #003A + 0x4C0C0000, // 0039 LDNIL R3 + 0x7001FFD0, // 003A JMP #000C + 0x8C100113, // 003B GETMET R4 R0 K19 + 0x7C100200, // 003C CALL R4 1 + 0x80000000, // 003D RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index d53f5099f..781223807 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -1143,7 +1143,7 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0, /* has sup protos */ &be_class_Matter_UI, 1, /* has constants */ - ( &(const bvalue[47]) { /* constants */ + ( &(const bvalue[46]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(json), /* K2 */ be_nested_str_weak(), @@ -1158,43 +1158,42 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ /* K11 */ be_nested_str_weak(StatusSNS), /* K12 */ be_nested_str_weak(Status_X2011), /* K13 */ be_nested_str_weak(StatusSTS), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status10_X3D_X25s_X20satus11_X3D_X25s), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(generate_config_from_status), - /* K19 */ be_nested_str_weak(show_plugins_hints_js), - /* K20 */ be_nested_str_weak(_CLASSES_TYPES2), - /* K21 */ be_nested_str_weak(content_send), - /* K22 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Remote_X20Device_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E), - /* K23 */ be_nested_str_weak(html_escape), - /* K24 */ be_nested_str_weak(_X3Cp_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Fp_X3E), - /* K25 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K26 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27url_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25s_X27_X3E), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str_weak(type), - /* K29 */ be_nested_str_weak(http_), - /* K30 */ be_nested_str_weak(device), - /* K31 */ be_nested_str_weak(plugins_classes), - /* K32 */ be_nested_str_weak(ui_conf_to_string), - /* K33 */ be_nested_str_weak(ARG_HINT), - /* K34 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), - /* K35 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20name_X3D_X27pi_X25i_X27_X20onchange_X3D_X27otm_X28_X22arg_X25i_X22_X2Cthis_X2Evalue_X29_X27_X3E), - /* K36 */ be_nested_str_weak(plugin_option), - /* K37 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E), - /* K38 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E), - /* K39 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K40 */ be_const_int(1), - /* K41 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E), - /* K42 */ be_nested_str_weak(_X3C_X2Ftable_X3E), - /* K43 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E), - /* K44 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), - /* K45 */ be_nested_str_weak(_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E), - /* K46 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K14 */ be_nested_str_weak(log), + /* K15 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status10_X3D_X25s_X20satus11_X3D_X25s), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(generate_config_from_status), + /* K18 */ be_nested_str_weak(show_plugins_hints_js), + /* K19 */ be_nested_str_weak(_CLASSES_TYPES2), + /* K20 */ be_nested_str_weak(content_send), + /* K21 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Remote_X20Device_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K22 */ be_nested_str_weak(html_escape), + /* K23 */ be_nested_str_weak(_X3Cp_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Fp_X3E), + /* K24 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K25 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27url_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25s_X27_X3E), + /* K26 */ be_const_int(0), + /* K27 */ be_nested_str_weak(type), + /* K28 */ be_nested_str_weak(http_), + /* K29 */ be_nested_str_weak(device), + /* K30 */ be_nested_str_weak(plugins_classes), + /* K31 */ be_nested_str_weak(ui_conf_to_string), + /* K32 */ be_nested_str_weak(ARG_HINT), + /* K33 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), + /* K34 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20name_X3D_X27pi_X25i_X27_X20onchange_X3D_X27otm_X28_X22arg_X25i_X22_X2Cthis_X2Evalue_X29_X27_X3E), + /* K35 */ be_nested_str_weak(plugin_option), + /* K36 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E), + /* K37 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E), + /* K38 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K39 */ be_const_int(1), + /* K40 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E), + /* K41 */ be_nested_str_weak(_X3C_X2Ftable_X3E), + /* K42 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E), + /* K43 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), + /* K44 */ be_nested_str_weak(_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E), + /* K45 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E), }), be_str_weak(show_remote_autoconf), &be_const_str_solidified, - ( &(const binstruction[230]) { /* code */ + ( &(const binstruction[229]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0xA40E0200, // 0001 IMPORT R3 K1 0x1C100302, // 0002 EQ R4 R1 K2 @@ -1252,179 +1251,178 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0x5C1C1000, // 0036 MOVE R7 R8 0x4C200000, // 0037 LDNIL R8 0x20200C08, // 0038 NE R8 R6 R8 - 0x782200A2, // 0039 JMPF R8 #00DD + 0x782200A1, // 0039 JMPF R8 #00DC 0x4C200000, // 003A LDNIL R8 0x20200E08, // 003B NE R8 R7 R8 - 0x7822009F, // 003C JMPF R8 #00DD + 0x7822009E, // 003C JMPF R8 #00DC 0xB8221C00, // 003D GETNGBL R8 K14 - 0x8C20110F, // 003E GETMET R8 R8 K15 - 0x60280018, // 003F GETGBL R10 G24 - 0x582C0010, // 0040 LDCONST R11 K16 - 0x5C300200, // 0041 MOVE R12 R1 - 0x60340008, // 0042 GETGBL R13 G8 - 0x5C380C00, // 0043 MOVE R14 R6 - 0x7C340200, // 0044 CALL R13 1 - 0x60380008, // 0045 GETGBL R14 G8 - 0x5C3C0E00, // 0046 MOVE R15 R7 - 0x7C380200, // 0047 CALL R14 1 - 0x7C280800, // 0048 CALL R10 4 - 0x582C0011, // 0049 LDCONST R11 K17 - 0x7C200600, // 004A CALL R8 3 - 0x8C200112, // 004B GETMET R8 R0 K18 - 0x5C280C00, // 004C MOVE R10 R6 - 0x5C2C0E00, // 004D MOVE R11 R7 - 0x7C200600, // 004E CALL R8 3 - 0x8C240113, // 004F GETMET R9 R0 K19 - 0x882C0114, // 0050 GETMBR R11 R0 K20 - 0x7C240400, // 0051 CALL R9 2 - 0x8C240515, // 0052 GETMET R9 R2 K21 - 0x582C0016, // 0053 LDCONST R11 K22 - 0x7C240400, // 0054 CALL R9 2 - 0x8C240517, // 0055 GETMET R9 R2 K23 - 0x5C2C0200, // 0056 MOVE R11 R1 - 0x7C240400, // 0057 CALL R9 2 - 0x8C280515, // 0058 GETMET R10 R2 K21 - 0x60300018, // 0059 GETGBL R12 G24 - 0x58340018, // 005A LDCONST R13 K24 - 0x5C381200, // 005B MOVE R14 R9 - 0x5C3C1200, // 005C MOVE R15 R9 - 0x7C300600, // 005D CALL R12 3 - 0x7C280400, // 005E CALL R10 2 - 0x8C280515, // 005F GETMET R10 R2 K21 - 0x58300019, // 0060 LDCONST R12 K25 - 0x7C280400, // 0061 CALL R10 2 - 0x8C280515, // 0062 GETMET R10 R2 K21 - 0x60300018, // 0063 GETGBL R12 G24 - 0x5834001A, // 0064 LDCONST R13 K26 - 0x8C380517, // 0065 GETMET R14 R2 K23 - 0x5C400200, // 0066 MOVE R16 R1 - 0x7C380400, // 0067 CALL R14 2 - 0x7C300400, // 0068 CALL R12 2 - 0x7C280400, // 0069 CALL R10 2 - 0x5828001B, // 006A LDCONST R10 K27 - 0x602C000C, // 006B GETGBL R11 G12 - 0x5C301000, // 006C MOVE R12 R8 - 0x7C2C0200, // 006D CALL R11 1 - 0x142C140B, // 006E LT R11 R10 R11 - 0x782E0040, // 006F JMPF R11 #00B1 - 0x942C100A, // 0070 GETIDX R11 R8 R10 - 0x8C30170A, // 0071 GETMET R12 R11 K10 - 0x5838001C, // 0072 LDCONST R14 K28 - 0x583C0002, // 0073 LDCONST R15 K2 - 0x7C300600, // 0074 CALL R12 3 - 0x20341902, // 0075 NE R13 R12 K2 - 0x78360000, // 0076 JMPF R13 #0078 - 0x00323A0C, // 0077 ADD R12 K29 R12 - 0x8834011E, // 0078 GETMBR R13 R0 K30 - 0x88341B1F, // 0079 GETMBR R13 R13 K31 - 0x8C341B0A, // 007A GETMET R13 R13 K10 - 0x5C3C1800, // 007B MOVE R15 R12 - 0x7C340400, // 007C CALL R13 2 - 0x58380002, // 007D LDCONST R14 K2 - 0x583C0002, // 007E LDCONST R15 K2 - 0x4C400000, // 007F LDNIL R16 - 0x20401A10, // 0080 NE R16 R13 R16 - 0x78420005, // 0081 JMPF R16 #0088 - 0x8C401B20, // 0082 GETMET R16 R13 K32 - 0x5C481A00, // 0083 MOVE R18 R13 - 0x5C4C1600, // 0084 MOVE R19 R11 - 0x7C400600, // 0085 CALL R16 3 - 0x5C382000, // 0086 MOVE R14 R16 - 0x883C1B21, // 0087 GETMBR R15 R13 K33 - 0x8C400515, // 0088 GETMET R16 R2 K21 - 0x60480018, // 0089 GETGBL R18 G24 - 0x584C0022, // 008A LDCONST R19 K34 - 0x5C501400, // 008B MOVE R20 R10 - 0x7C480400, // 008C CALL R18 2 - 0x7C400400, // 008D CALL R16 2 - 0x8C400515, // 008E GETMET R16 R2 K21 - 0x60480018, // 008F GETGBL R18 G24 - 0x584C0023, // 0090 LDCONST R19 K35 - 0x5C501400, // 0091 MOVE R20 R10 - 0x5C541400, // 0092 MOVE R21 R10 - 0x7C480600, // 0093 CALL R18 3 - 0x7C400400, // 0094 CALL R16 2 - 0x8C400124, // 0095 GETMET R16 R0 K36 - 0x5C481800, // 0096 MOVE R18 R12 - 0x884C0114, // 0097 GETMBR R19 R0 K20 - 0x7C400600, // 0098 CALL R16 3 - 0x8C400515, // 0099 GETMET R16 R2 K21 - 0x58480025, // 009A LDCONST R18 K37 - 0x7C400400, // 009B CALL R16 2 - 0x8C400515, // 009C GETMET R16 R2 K21 - 0x60480018, // 009D GETGBL R18 G24 - 0x584C0026, // 009E LDCONST R19 K38 - 0x5C501400, // 009F MOVE R20 R10 - 0x5C541400, // 00A0 MOVE R21 R10 - 0x8C580517, // 00A1 GETMET R22 R2 K23 - 0x5C601C00, // 00A2 MOVE R24 R14 - 0x7C580400, // 00A3 CALL R22 2 - 0x8C5C0517, // 00A4 GETMET R23 R2 K23 - 0x5C641E00, // 00A5 MOVE R25 R15 - 0x7C5C0400, // 00A6 CALL R23 2 - 0x8C600517, // 00A7 GETMET R24 R2 K23 - 0x5C681E00, // 00A8 MOVE R26 R15 - 0x7C600400, // 00A9 CALL R24 2 - 0x7C480C00, // 00AA CALL R18 6 - 0x7C400400, // 00AB CALL R16 2 - 0x8C400515, // 00AC GETMET R16 R2 K21 - 0x58480027, // 00AD LDCONST R18 K39 - 0x7C400400, // 00AE CALL R16 2 - 0x00281528, // 00AF ADD R10 R10 K40 - 0x7001FFB9, // 00B0 JMP #006B - 0x8C2C0515, // 00B1 GETMET R11 R2 K21 - 0x60340018, // 00B2 GETGBL R13 G24 - 0x58380022, // 00B3 LDCONST R14 K34 - 0x5C3C1400, // 00B4 MOVE R15 R10 - 0x7C340400, // 00B5 CALL R13 2 - 0x7C2C0400, // 00B6 CALL R11 2 - 0x8C2C0515, // 00B7 GETMET R11 R2 K21 - 0x60340018, // 00B8 GETGBL R13 G24 - 0x58380023, // 00B9 LDCONST R14 K35 - 0x5C3C1400, // 00BA MOVE R15 R10 - 0x5C401400, // 00BB MOVE R16 R10 - 0x7C340600, // 00BC CALL R13 3 - 0x7C2C0400, // 00BD CALL R11 2 - 0x8C2C0124, // 00BE GETMET R11 R0 K36 - 0x58340002, // 00BF LDCONST R13 K2 - 0x88380114, // 00C0 GETMBR R14 R0 K20 - 0x7C2C0600, // 00C1 CALL R11 3 - 0x8C2C0515, // 00C2 GETMET R11 R2 K21 - 0x58340025, // 00C3 LDCONST R13 K37 - 0x7C2C0400, // 00C4 CALL R11 2 - 0x8C2C0515, // 00C5 GETMET R11 R2 K21 - 0x60340018, // 00C6 GETGBL R13 G24 - 0x58380029, // 00C7 LDCONST R14 K41 - 0x5C3C1400, // 00C8 MOVE R15 R10 - 0x5C401400, // 00C9 MOVE R16 R10 - 0x58440002, // 00CA LDCONST R17 K2 - 0x7C340800, // 00CB CALL R13 4 - 0x7C2C0400, // 00CC CALL R11 2 - 0x8C2C0515, // 00CD GETMET R11 R2 K21 - 0x58340027, // 00CE LDCONST R13 K39 - 0x7C2C0400, // 00CF CALL R11 2 - 0x8C2C0515, // 00D0 GETMET R11 R2 K21 - 0x5834002A, // 00D1 LDCONST R13 K42 - 0x7C2C0400, // 00D2 CALL R11 2 - 0x8C2C0515, // 00D3 GETMET R11 R2 K21 - 0x5834002B, // 00D4 LDCONST R13 K43 - 0x7C2C0400, // 00D5 CALL R11 2 - 0x8C2C0515, // 00D6 GETMET R11 R2 K21 - 0x5834002C, // 00D7 LDCONST R13 K44 - 0x7C2C0400, // 00D8 CALL R11 2 - 0x8C2C0515, // 00D9 GETMET R11 R2 K21 - 0x5834002D, // 00DA LDCONST R13 K45 - 0x7C2C0400, // 00DB CALL R11 2 - 0x70020007, // 00DC JMP #00E5 - 0x8C200515, // 00DD GETMET R8 R2 K21 - 0x60280018, // 00DE GETGBL R10 G24 - 0x582C002E, // 00DF LDCONST R11 K46 - 0x8C300517, // 00E0 GETMET R12 R2 K23 - 0x5C380200, // 00E1 MOVE R14 R1 - 0x7C300400, // 00E2 CALL R12 2 - 0x7C280400, // 00E3 CALL R10 2 - 0x7C200400, // 00E4 CALL R8 2 - 0x80000000, // 00E5 RET 0 + 0x60240018, // 003E GETGBL R9 G24 + 0x5828000F, // 003F LDCONST R10 K15 + 0x5C2C0200, // 0040 MOVE R11 R1 + 0x60300008, // 0041 GETGBL R12 G8 + 0x5C340C00, // 0042 MOVE R13 R6 + 0x7C300200, // 0043 CALL R12 1 + 0x60340008, // 0044 GETGBL R13 G8 + 0x5C380E00, // 0045 MOVE R14 R7 + 0x7C340200, // 0046 CALL R13 1 + 0x7C240800, // 0047 CALL R9 4 + 0x58280010, // 0048 LDCONST R10 K16 + 0x7C200400, // 0049 CALL R8 2 + 0x8C200111, // 004A GETMET R8 R0 K17 + 0x5C280C00, // 004B MOVE R10 R6 + 0x5C2C0E00, // 004C MOVE R11 R7 + 0x7C200600, // 004D CALL R8 3 + 0x8C240112, // 004E GETMET R9 R0 K18 + 0x882C0113, // 004F GETMBR R11 R0 K19 + 0x7C240400, // 0050 CALL R9 2 + 0x8C240514, // 0051 GETMET R9 R2 K20 + 0x582C0015, // 0052 LDCONST R11 K21 + 0x7C240400, // 0053 CALL R9 2 + 0x8C240516, // 0054 GETMET R9 R2 K22 + 0x5C2C0200, // 0055 MOVE R11 R1 + 0x7C240400, // 0056 CALL R9 2 + 0x8C280514, // 0057 GETMET R10 R2 K20 + 0x60300018, // 0058 GETGBL R12 G24 + 0x58340017, // 0059 LDCONST R13 K23 + 0x5C381200, // 005A MOVE R14 R9 + 0x5C3C1200, // 005B MOVE R15 R9 + 0x7C300600, // 005C CALL R12 3 + 0x7C280400, // 005D CALL R10 2 + 0x8C280514, // 005E GETMET R10 R2 K20 + 0x58300018, // 005F LDCONST R12 K24 + 0x7C280400, // 0060 CALL R10 2 + 0x8C280514, // 0061 GETMET R10 R2 K20 + 0x60300018, // 0062 GETGBL R12 G24 + 0x58340019, // 0063 LDCONST R13 K25 + 0x8C380516, // 0064 GETMET R14 R2 K22 + 0x5C400200, // 0065 MOVE R16 R1 + 0x7C380400, // 0066 CALL R14 2 + 0x7C300400, // 0067 CALL R12 2 + 0x7C280400, // 0068 CALL R10 2 + 0x5828001A, // 0069 LDCONST R10 K26 + 0x602C000C, // 006A GETGBL R11 G12 + 0x5C301000, // 006B MOVE R12 R8 + 0x7C2C0200, // 006C CALL R11 1 + 0x142C140B, // 006D LT R11 R10 R11 + 0x782E0040, // 006E JMPF R11 #00B0 + 0x942C100A, // 006F GETIDX R11 R8 R10 + 0x8C30170A, // 0070 GETMET R12 R11 K10 + 0x5838001B, // 0071 LDCONST R14 K27 + 0x583C0002, // 0072 LDCONST R15 K2 + 0x7C300600, // 0073 CALL R12 3 + 0x20341902, // 0074 NE R13 R12 K2 + 0x78360000, // 0075 JMPF R13 #0077 + 0x0032380C, // 0076 ADD R12 K28 R12 + 0x8834011D, // 0077 GETMBR R13 R0 K29 + 0x88341B1E, // 0078 GETMBR R13 R13 K30 + 0x8C341B0A, // 0079 GETMET R13 R13 K10 + 0x5C3C1800, // 007A MOVE R15 R12 + 0x7C340400, // 007B CALL R13 2 + 0x58380002, // 007C LDCONST R14 K2 + 0x583C0002, // 007D LDCONST R15 K2 + 0x4C400000, // 007E LDNIL R16 + 0x20401A10, // 007F NE R16 R13 R16 + 0x78420005, // 0080 JMPF R16 #0087 + 0x8C401B1F, // 0081 GETMET R16 R13 K31 + 0x5C481A00, // 0082 MOVE R18 R13 + 0x5C4C1600, // 0083 MOVE R19 R11 + 0x7C400600, // 0084 CALL R16 3 + 0x5C382000, // 0085 MOVE R14 R16 + 0x883C1B20, // 0086 GETMBR R15 R13 K32 + 0x8C400514, // 0087 GETMET R16 R2 K20 + 0x60480018, // 0088 GETGBL R18 G24 + 0x584C0021, // 0089 LDCONST R19 K33 + 0x5C501400, // 008A MOVE R20 R10 + 0x7C480400, // 008B CALL R18 2 + 0x7C400400, // 008C CALL R16 2 + 0x8C400514, // 008D GETMET R16 R2 K20 + 0x60480018, // 008E GETGBL R18 G24 + 0x584C0022, // 008F LDCONST R19 K34 + 0x5C501400, // 0090 MOVE R20 R10 + 0x5C541400, // 0091 MOVE R21 R10 + 0x7C480600, // 0092 CALL R18 3 + 0x7C400400, // 0093 CALL R16 2 + 0x8C400123, // 0094 GETMET R16 R0 K35 + 0x5C481800, // 0095 MOVE R18 R12 + 0x884C0113, // 0096 GETMBR R19 R0 K19 + 0x7C400600, // 0097 CALL R16 3 + 0x8C400514, // 0098 GETMET R16 R2 K20 + 0x58480024, // 0099 LDCONST R18 K36 + 0x7C400400, // 009A CALL R16 2 + 0x8C400514, // 009B GETMET R16 R2 K20 + 0x60480018, // 009C GETGBL R18 G24 + 0x584C0025, // 009D LDCONST R19 K37 + 0x5C501400, // 009E MOVE R20 R10 + 0x5C541400, // 009F MOVE R21 R10 + 0x8C580516, // 00A0 GETMET R22 R2 K22 + 0x5C601C00, // 00A1 MOVE R24 R14 + 0x7C580400, // 00A2 CALL R22 2 + 0x8C5C0516, // 00A3 GETMET R23 R2 K22 + 0x5C641E00, // 00A4 MOVE R25 R15 + 0x7C5C0400, // 00A5 CALL R23 2 + 0x8C600516, // 00A6 GETMET R24 R2 K22 + 0x5C681E00, // 00A7 MOVE R26 R15 + 0x7C600400, // 00A8 CALL R24 2 + 0x7C480C00, // 00A9 CALL R18 6 + 0x7C400400, // 00AA CALL R16 2 + 0x8C400514, // 00AB GETMET R16 R2 K20 + 0x58480026, // 00AC LDCONST R18 K38 + 0x7C400400, // 00AD CALL R16 2 + 0x00281527, // 00AE ADD R10 R10 K39 + 0x7001FFB9, // 00AF JMP #006A + 0x8C2C0514, // 00B0 GETMET R11 R2 K20 + 0x60340018, // 00B1 GETGBL R13 G24 + 0x58380021, // 00B2 LDCONST R14 K33 + 0x5C3C1400, // 00B3 MOVE R15 R10 + 0x7C340400, // 00B4 CALL R13 2 + 0x7C2C0400, // 00B5 CALL R11 2 + 0x8C2C0514, // 00B6 GETMET R11 R2 K20 + 0x60340018, // 00B7 GETGBL R13 G24 + 0x58380022, // 00B8 LDCONST R14 K34 + 0x5C3C1400, // 00B9 MOVE R15 R10 + 0x5C401400, // 00BA MOVE R16 R10 + 0x7C340600, // 00BB CALL R13 3 + 0x7C2C0400, // 00BC CALL R11 2 + 0x8C2C0123, // 00BD GETMET R11 R0 K35 + 0x58340002, // 00BE LDCONST R13 K2 + 0x88380113, // 00BF GETMBR R14 R0 K19 + 0x7C2C0600, // 00C0 CALL R11 3 + 0x8C2C0514, // 00C1 GETMET R11 R2 K20 + 0x58340024, // 00C2 LDCONST R13 K36 + 0x7C2C0400, // 00C3 CALL R11 2 + 0x8C2C0514, // 00C4 GETMET R11 R2 K20 + 0x60340018, // 00C5 GETGBL R13 G24 + 0x58380028, // 00C6 LDCONST R14 K40 + 0x5C3C1400, // 00C7 MOVE R15 R10 + 0x5C401400, // 00C8 MOVE R16 R10 + 0x58440002, // 00C9 LDCONST R17 K2 + 0x7C340800, // 00CA CALL R13 4 + 0x7C2C0400, // 00CB CALL R11 2 + 0x8C2C0514, // 00CC GETMET R11 R2 K20 + 0x58340026, // 00CD LDCONST R13 K38 + 0x7C2C0400, // 00CE CALL R11 2 + 0x8C2C0514, // 00CF GETMET R11 R2 K20 + 0x58340029, // 00D0 LDCONST R13 K41 + 0x7C2C0400, // 00D1 CALL R11 2 + 0x8C2C0514, // 00D2 GETMET R11 R2 K20 + 0x5834002A, // 00D3 LDCONST R13 K42 + 0x7C2C0400, // 00D4 CALL R11 2 + 0x8C2C0514, // 00D5 GETMET R11 R2 K20 + 0x5834002B, // 00D6 LDCONST R13 K43 + 0x7C2C0400, // 00D7 CALL R11 2 + 0x8C2C0514, // 00D8 GETMET R11 R2 K20 + 0x5834002C, // 00D9 LDCONST R13 K44 + 0x7C2C0400, // 00DA CALL R11 2 + 0x70020007, // 00DB JMP #00E4 + 0x8C200514, // 00DC GETMET R8 R2 K20 + 0x60280018, // 00DD GETGBL R10 G24 + 0x582C002D, // 00DE LDCONST R11 K45 + 0x8C300516, // 00DF GETMET R12 R2 K22 + 0x5C380200, // 00E0 MOVE R14 R1 + 0x7C300400, // 00E1 CALL R12 2 + 0x7C280400, // 00E2 CALL R10 2 + 0x7C200400, // 00E3 CALL R8 2 + 0x80000000, // 00E4 RET 0 }) ) ); @@ -2213,7 +2211,7 @@ be_local_closure(class_Matter_UI_show_passcode_form, /* name */ extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_page_part_ctl, /* name */ be_nested_proto( - 24, /* nstack */ + 23, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2230,27 +2228,27 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ /* K5 */ be_nested_str_weak(has_arg), /* K6 */ be_nested_str_weak(passcode), /* K7 */ be_nested_str_weak(discriminator), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X2Fmatterc_X20received_X20_X27_X25s_X27_X20command), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(device), - /* K13 */ be_nested_str_weak(root_passcode), - /* K14 */ be_nested_str_weak(arg), - /* K15 */ be_nested_str_weak(root_discriminator), - /* K16 */ be_nested_str_weak(ipv4only), - /* K17 */ be_nested_str_weak(ipv4), - /* K18 */ be_nested_str_weak(on), - /* K19 */ be_nested_str_weak(save_param), - /* K20 */ be_nested_str_weak(redirect), - /* K21 */ be_nested_str_weak(_X2F_X3Frst_X3D), - /* K22 */ be_nested_str_weak(save), - /* K23 */ be_nested_str_weak(menable), - /* K24 */ be_nested_str_weak(comm), - /* K25 */ be_nested_str_weak(nobridge), - /* K26 */ be_nested_str_weak(disable_bridge_mode), - /* K27 */ be_nested_str_weak(matter_enabled), - /* K28 */ be_nested_str_weak(enable), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2Fmatterc_X20received_X20_X27_X25s_X27_X20command), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(device), + /* K12 */ be_nested_str_weak(root_passcode), + /* K13 */ be_nested_str_weak(arg), + /* K14 */ be_nested_str_weak(root_discriminator), + /* K15 */ be_nested_str_weak(ipv4only), + /* K16 */ be_nested_str_weak(ipv4), + /* K17 */ be_nested_str_weak(on), + /* K18 */ be_nested_str_weak(save_param), + /* K19 */ be_nested_str_weak(redirect), + /* K20 */ be_nested_str_weak(_X2F_X3Frst_X3D), + /* K21 */ be_nested_str_weak(save), + /* K22 */ be_nested_str_weak(menable), + /* K23 */ be_nested_str_weak(comm), + /* K24 */ be_nested_str_weak(nobridge), + /* K25 */ be_nested_str_weak(disable_bridge_mode), + /* K26 */ be_nested_str_weak(matter_enabled), + /* K27 */ be_nested_str_weak(enable), + /* K28 */ be_nested_str_weak(tasmota), /* K29 */ be_nested_str_weak(cmd), /* K30 */ be_nested_str_weak(SetOption), /* K31 */ be_nested_str_weak(matter), @@ -2326,7 +2324,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ }), be_str_weak(page_part_ctl), &be_const_str_solidified, - ( &(const binstruction[675]) { /* code */ + ( &(const binstruction[659]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x7C080200, // 0002 CALL R2 1 @@ -2337,7 +2335,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0xA40E0600, // 0007 IMPORT R3 K3 0xA4120800, // 0008 IMPORT R4 K4 0x4C140000, // 0009 LDNIL R5 - 0xA8020278, // 000A EXBLK 0 #0284 + 0xA8020269, // 000A EXBLK 0 #0275 0x8C180305, // 000B GETMET R6 R1 K5 0x58200006, // 000C LDCONST R8 K6 0x7C180400, // 000D CALL R6 2 @@ -2345,663 +2343,647 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C180305, // 000F GETMET R6 R1 K5 0x58200007, // 0010 LDCONST R8 K7 0x7C180400, // 0011 CALL R6 2 - 0x781A002A, // 0012 JMPF R6 #003E + 0x781A0029, // 0012 JMPF R6 #003D 0xB81A1000, // 0013 GETNGBL R6 K8 - 0x8C180D09, // 0014 GETMET R6 R6 K9 - 0x60200018, // 0015 GETGBL R8 G24 - 0x5824000A, // 0016 LDCONST R9 K10 - 0x58280006, // 0017 LDCONST R10 K6 - 0x7C200400, // 0018 CALL R8 2 - 0x5824000B, // 0019 LDCONST R9 K11 - 0x7C180600, // 001A CALL R6 3 - 0x8C180305, // 001B GETMET R6 R1 K5 - 0x58200006, // 001C LDCONST R8 K6 - 0x7C180400, // 001D CALL R6 2 - 0x781A0006, // 001E JMPF R6 #0026 - 0x8818010C, // 001F GETMBR R6 R0 K12 - 0x601C0009, // 0020 GETGBL R7 G9 - 0x8C20030E, // 0021 GETMET R8 R1 K14 - 0x58280006, // 0022 LDCONST R10 K6 - 0x7C200400, // 0023 CALL R8 2 - 0x7C1C0200, // 0024 CALL R7 1 - 0x901A1A07, // 0025 SETMBR R6 K13 R7 - 0x8C180305, // 0026 GETMET R6 R1 K5 - 0x58200007, // 0027 LDCONST R8 K7 - 0x7C180400, // 0028 CALL R6 2 - 0x781A0006, // 0029 JMPF R6 #0031 - 0x8818010C, // 002A GETMBR R6 R0 K12 - 0x601C0009, // 002B GETGBL R7 G9 - 0x8C20030E, // 002C GETMET R8 R1 K14 - 0x58280007, // 002D LDCONST R10 K7 - 0x7C200400, // 002E CALL R8 2 - 0x7C1C0200, // 002F CALL R7 1 - 0x901A1E07, // 0030 SETMBR R6 K15 R7 - 0x8818010C, // 0031 GETMBR R6 R0 K12 - 0x8C1C030E, // 0032 GETMET R7 R1 K14 - 0x58240011, // 0033 LDCONST R9 K17 - 0x7C1C0400, // 0034 CALL R7 2 - 0x1C1C0F12, // 0035 EQ R7 R7 K18 - 0x901A2007, // 0036 SETMBR R6 K16 R7 - 0x8818010C, // 0037 GETMBR R6 R0 K12 - 0x8C180D13, // 0038 GETMET R6 R6 K19 - 0x7C180200, // 0039 CALL R6 1 - 0x8C180314, // 003A GETMET R6 R1 K20 - 0x58200015, // 003B LDCONST R8 K21 - 0x7C180400, // 003C CALL R6 2 - 0x70020230, // 003D JMP #026F - 0x8C180305, // 003E GETMET R6 R1 K5 - 0x58200016, // 003F LDCONST R8 K22 - 0x7C180400, // 0040 CALL R6 2 - 0x781A0054, // 0041 JMPF R6 #0097 - 0x8C180305, // 0042 GETMET R6 R1 K5 - 0x58200017, // 0043 LDCONST R8 K23 - 0x7C180400, // 0044 CALL R6 2 - 0x8C1C0305, // 0045 GETMET R7 R1 K5 - 0x58240018, // 0046 LDCONST R9 K24 - 0x7C1C0400, // 0047 CALL R7 2 - 0x8C20030E, // 0048 GETMET R8 R1 K14 - 0x58280019, // 0049 LDCONST R10 K25 - 0x7C200400, // 004A CALL R8 2 - 0x1C201112, // 004B EQ R8 R8 K18 - 0x8824010C, // 004C GETMBR R9 R0 K12 - 0x8824131A, // 004D GETMBR R9 R9 K26 - 0x20241208, // 004E NE R9 R9 R8 - 0x78260004, // 004F JMPF R9 #0055 - 0x8824010C, // 0050 GETMBR R9 R0 K12 - 0x90263408, // 0051 SETMBR R9 K26 R8 - 0x8824010C, // 0052 GETMBR R9 R0 K12 - 0x8C241313, // 0053 GETMET R9 R9 K19 - 0x7C240200, // 0054 CALL R9 1 - 0x8C24011B, // 0055 GETMET R9 R0 K27 - 0x7C240200, // 0056 CALL R9 1 - 0x20240C09, // 0057 NE R9 R6 R9 - 0x78260027, // 0058 JMPF R9 #0081 - 0x781A0011, // 0059 JMPF R6 #006C - 0xB8261000, // 005A GETNGBL R9 K8 - 0x8C241309, // 005B GETMET R9 R9 K9 - 0x602C0018, // 005C GETGBL R11 G24 - 0x5830000A, // 005D LDCONST R12 K10 - 0x5834001C, // 005E LDCONST R13 K28 - 0x7C2C0400, // 005F CALL R11 2 - 0x5830000B, // 0060 LDCONST R12 K11 - 0x7C240600, // 0061 CALL R9 3 - 0xB8261000, // 0062 GETNGBL R9 K8 - 0x8C24131D, // 0063 GETMET R9 R9 K29 - 0x602C0008, // 0064 GETGBL R11 G8 - 0xB8323E00, // 0065 GETNGBL R12 K31 - 0x88301920, // 0066 GETMBR R12 R12 K32 - 0x7C2C0200, // 0067 CALL R11 1 - 0x002E3C0B, // 0068 ADD R11 K30 R11 - 0x002C1721, // 0069 ADD R11 R11 K33 - 0x7C240400, // 006A CALL R9 2 - 0x70020010, // 006B JMP #007D - 0xB8261000, // 006C GETNGBL R9 K8 - 0x8C241309, // 006D GETMET R9 R9 K9 - 0x602C0018, // 006E GETGBL R11 G24 - 0x5830000A, // 006F LDCONST R12 K10 - 0x58340022, // 0070 LDCONST R13 K34 - 0x7C2C0400, // 0071 CALL R11 2 - 0x5830000B, // 0072 LDCONST R12 K11 - 0x7C240600, // 0073 CALL R9 3 - 0xB8261000, // 0074 GETNGBL R9 K8 - 0x8C24131D, // 0075 GETMET R9 R9 K29 - 0x602C0008, // 0076 GETGBL R11 G8 - 0xB8323E00, // 0077 GETNGBL R12 K31 - 0x88301920, // 0078 GETMBR R12 R12 K32 - 0x7C2C0200, // 0079 CALL R11 1 - 0x002E3C0B, // 007A ADD R11 K30 R11 - 0x002C1723, // 007B ADD R11 R11 K35 + 0x601C0018, // 0014 GETGBL R7 G24 + 0x58200009, // 0015 LDCONST R8 K9 + 0x58240006, // 0016 LDCONST R9 K6 + 0x7C1C0400, // 0017 CALL R7 2 + 0x5820000A, // 0018 LDCONST R8 K10 + 0x7C180400, // 0019 CALL R6 2 + 0x8C180305, // 001A GETMET R6 R1 K5 + 0x58200006, // 001B LDCONST R8 K6 + 0x7C180400, // 001C CALL R6 2 + 0x781A0006, // 001D JMPF R6 #0025 + 0x8818010B, // 001E GETMBR R6 R0 K11 + 0x601C0009, // 001F GETGBL R7 G9 + 0x8C20030D, // 0020 GETMET R8 R1 K13 + 0x58280006, // 0021 LDCONST R10 K6 + 0x7C200400, // 0022 CALL R8 2 + 0x7C1C0200, // 0023 CALL R7 1 + 0x901A1807, // 0024 SETMBR R6 K12 R7 + 0x8C180305, // 0025 GETMET R6 R1 K5 + 0x58200007, // 0026 LDCONST R8 K7 + 0x7C180400, // 0027 CALL R6 2 + 0x781A0006, // 0028 JMPF R6 #0030 + 0x8818010B, // 0029 GETMBR R6 R0 K11 + 0x601C0009, // 002A GETGBL R7 G9 + 0x8C20030D, // 002B GETMET R8 R1 K13 + 0x58280007, // 002C LDCONST R10 K7 + 0x7C200400, // 002D CALL R8 2 + 0x7C1C0200, // 002E CALL R7 1 + 0x901A1C07, // 002F SETMBR R6 K14 R7 + 0x8818010B, // 0030 GETMBR R6 R0 K11 + 0x8C1C030D, // 0031 GETMET R7 R1 K13 + 0x58240010, // 0032 LDCONST R9 K16 + 0x7C1C0400, // 0033 CALL R7 2 + 0x1C1C0F11, // 0034 EQ R7 R7 K17 + 0x901A1E07, // 0035 SETMBR R6 K15 R7 + 0x8818010B, // 0036 GETMBR R6 R0 K11 + 0x8C180D12, // 0037 GETMET R6 R6 K18 + 0x7C180200, // 0038 CALL R6 1 + 0x8C180313, // 0039 GETMET R6 R1 K19 + 0x58200014, // 003A LDCONST R8 K20 + 0x7C180400, // 003B CALL R6 2 + 0x70020222, // 003C JMP #0260 + 0x8C180305, // 003D GETMET R6 R1 K5 + 0x58200015, // 003E LDCONST R8 K21 + 0x7C180400, // 003F CALL R6 2 + 0x781A0052, // 0040 JMPF R6 #0094 + 0x8C180305, // 0041 GETMET R6 R1 K5 + 0x58200016, // 0042 LDCONST R8 K22 + 0x7C180400, // 0043 CALL R6 2 + 0x8C1C0305, // 0044 GETMET R7 R1 K5 + 0x58240017, // 0045 LDCONST R9 K23 + 0x7C1C0400, // 0046 CALL R7 2 + 0x8C20030D, // 0047 GETMET R8 R1 K13 + 0x58280018, // 0048 LDCONST R10 K24 + 0x7C200400, // 0049 CALL R8 2 + 0x1C201111, // 004A EQ R8 R8 K17 + 0x8824010B, // 004B GETMBR R9 R0 K11 + 0x88241319, // 004C GETMBR R9 R9 K25 + 0x20241208, // 004D NE R9 R9 R8 + 0x78260004, // 004E JMPF R9 #0054 + 0x8824010B, // 004F GETMBR R9 R0 K11 + 0x90263208, // 0050 SETMBR R9 K25 R8 + 0x8824010B, // 0051 GETMBR R9 R0 K11 + 0x8C241312, // 0052 GETMET R9 R9 K18 + 0x7C240200, // 0053 CALL R9 1 + 0x8C24011A, // 0054 GETMET R9 R0 K26 + 0x7C240200, // 0055 CALL R9 1 + 0x20240C09, // 0056 NE R9 R6 R9 + 0x78260025, // 0057 JMPF R9 #007E + 0x781A0010, // 0058 JMPF R6 #006A + 0xB8261000, // 0059 GETNGBL R9 K8 + 0x60280018, // 005A GETGBL R10 G24 + 0x582C0009, // 005B LDCONST R11 K9 + 0x5830001B, // 005C LDCONST R12 K27 + 0x7C280400, // 005D CALL R10 2 + 0x582C000A, // 005E LDCONST R11 K10 + 0x7C240400, // 005F CALL R9 2 + 0xB8263800, // 0060 GETNGBL R9 K28 + 0x8C24131D, // 0061 GETMET R9 R9 K29 + 0x602C0008, // 0062 GETGBL R11 G8 + 0xB8323E00, // 0063 GETNGBL R12 K31 + 0x88301920, // 0064 GETMBR R12 R12 K32 + 0x7C2C0200, // 0065 CALL R11 1 + 0x002E3C0B, // 0066 ADD R11 K30 R11 + 0x002C1721, // 0067 ADD R11 R11 K33 + 0x7C240400, // 0068 CALL R9 2 + 0x7002000F, // 0069 JMP #007A + 0xB8261000, // 006A GETNGBL R9 K8 + 0x60280018, // 006B GETGBL R10 G24 + 0x582C0009, // 006C LDCONST R11 K9 + 0x58300022, // 006D LDCONST R12 K34 + 0x7C280400, // 006E CALL R10 2 + 0x582C000A, // 006F LDCONST R11 K10 + 0x7C240400, // 0070 CALL R9 2 + 0xB8263800, // 0071 GETNGBL R9 K28 + 0x8C24131D, // 0072 GETMET R9 R9 K29 + 0x602C0008, // 0073 GETGBL R11 G8 + 0xB8323E00, // 0074 GETNGBL R12 K31 + 0x88301920, // 0075 GETMBR R12 R12 K32 + 0x7C2C0200, // 0076 CALL R11 1 + 0x002E3C0B, // 0077 ADD R11 K30 R11 + 0x002C1723, // 0078 ADD R11 R11 K35 + 0x7C240400, // 0079 CALL R9 2 + 0x8C240313, // 007A GETMET R9 R1 K19 + 0x582C0014, // 007B LDCONST R11 K20 0x7C240400, // 007C CALL R9 2 - 0x8C240314, // 007D GETMET R9 R1 K20 - 0x582C0015, // 007E LDCONST R11 K21 - 0x7C240400, // 007F CALL R9 2 - 0x70020014, // 0080 JMP #0096 - 0x8824010C, // 0081 GETMBR R9 R0 K12 - 0x88241324, // 0082 GETMBR R9 R9 K36 - 0x4C280000, // 0083 LDNIL R10 - 0x2024120A, // 0084 NE R9 R9 R10 - 0x20240E09, // 0085 NE R9 R7 R9 - 0x7826000B, // 0086 JMPF R9 #0093 - 0x781E0003, // 0087 JMPF R7 #008C - 0x8824010C, // 0088 GETMBR R9 R0 K12 - 0x8C241325, // 0089 GETMET R9 R9 K37 - 0x7C240200, // 008A CALL R9 1 - 0x70020002, // 008B JMP #008F - 0x8824010C, // 008C GETMBR R9 R0 K12 - 0x8C241326, // 008D GETMET R9 R9 K38 - 0x7C240200, // 008E CALL R9 1 - 0x8C240314, // 008F GETMET R9 R1 K20 - 0x582C0027, // 0090 LDCONST R11 K39 - 0x7C240400, // 0091 CALL R9 2 - 0x70020002, // 0092 JMP #0096 - 0x8C240314, // 0093 GETMET R9 R1 K20 - 0x582C0027, // 0094 LDCONST R11 K39 - 0x7C240400, // 0095 CALL R9 2 - 0x700201D7, // 0096 JMP #026F - 0x8C180305, // 0097 GETMET R6 R1 K5 - 0x58200028, // 0098 LDCONST R8 K40 - 0x7C180400, // 0099 CALL R6 2 - 0x781A0026, // 009A JMPF R6 #00C2 - 0xB81A1000, // 009B GETNGBL R6 K8 - 0x8C180D09, // 009C GETMET R6 R6 K9 - 0x60200018, // 009D GETGBL R8 G24 - 0x5824000A, // 009E LDCONST R9 K10 - 0x58280028, // 009F LDCONST R10 K40 - 0x7C200400, // 00A0 CALL R8 2 - 0x5824000B, // 00A1 LDCONST R9 K11 - 0x7C180600, // 00A2 CALL R6 3 - 0x60180009, // 00A3 GETGBL R6 G9 - 0x8C1C030E, // 00A4 GETMET R7 R1 K14 - 0x58240028, // 00A5 LDCONST R9 K40 - 0x7C1C0400, // 00A6 CALL R7 2 - 0x7C180200, // 00A7 CALL R6 1 - 0x581C0029, // 00A8 LDCONST R7 K41 - 0x8820010C, // 00A9 GETMBR R8 R0 K12 - 0x8820112A, // 00AA GETMBR R8 R8 K42 - 0x8820112B, // 00AB GETMBR R8 R8 K43 - 0x6024000C, // 00AC GETGBL R9 G12 - 0x5C281000, // 00AD MOVE R10 R8 - 0x7C240200, // 00AE CALL R9 1 - 0x14240E09, // 00AF LT R9 R7 R9 - 0x7826000C, // 00B0 JMPF R9 #00BE - 0x94241007, // 00B1 GETIDX R9 R8 R7 - 0x8C24132C, // 00B2 GETMET R9 R9 K44 - 0x7C240200, // 00B3 CALL R9 1 - 0x1C241206, // 00B4 EQ R9 R9 R6 - 0x78260005, // 00B5 JMPF R9 #00BC - 0x8824010C, // 00B6 GETMBR R9 R0 K12 - 0x8C24132D, // 00B7 GETMET R9 R9 K45 - 0x942C1007, // 00B8 GETIDX R11 R8 R7 - 0x7C240400, // 00B9 CALL R9 2 - 0x70020002, // 00BA JMP #00BE - 0x70020000, // 00BB JMP #00BD - 0x001C0F2E, // 00BC ADD R7 R7 K46 - 0x7001FFED, // 00BD JMP #00AC - 0x8C240314, // 00BE GETMET R9 R1 K20 - 0x582C002F, // 00BF LDCONST R11 K47 - 0x7C240400, // 00C0 CALL R9 2 - 0x700201AC, // 00C1 JMP #026F - 0x8C180305, // 00C2 GETMET R6 R1 K5 - 0x58200030, // 00C3 LDCONST R8 K48 - 0x7C180400, // 00C4 CALL R6 2 - 0x781A0011, // 00C5 JMPF R6 #00D8 - 0xB81A1000, // 00C6 GETNGBL R6 K8 - 0x8C180D09, // 00C7 GETMET R6 R6 K9 - 0x60200018, // 00C8 GETGBL R8 G24 - 0x5824000A, // 00C9 LDCONST R9 K10 - 0x58280030, // 00CA LDCONST R10 K48 - 0x7C200400, // 00CB CALL R8 2 - 0x5824000B, // 00CC LDCONST R9 K11 - 0x7C180600, // 00CD CALL R6 3 - 0x8818010C, // 00CE GETMBR R6 R0 K12 - 0x501C0000, // 00CF LDBOOL R7 0 0 - 0x901A6207, // 00D0 SETMBR R6 K49 R7 - 0x8818010C, // 00D1 GETMBR R6 R0 K12 - 0x8C180D13, // 00D2 GETMET R6 R6 K19 - 0x7C180200, // 00D3 CALL R6 1 - 0x8C180314, // 00D4 GETMET R6 R1 K20 - 0x58200015, // 00D5 LDCONST R8 K21 - 0x7C180400, // 00D6 CALL R6 2 - 0x70020196, // 00D7 JMP #026F - 0x8C180305, // 00D8 GETMET R6 R1 K5 - 0x58200032, // 00D9 LDCONST R8 K50 - 0x7C180400, // 00DA CALL R6 2 - 0x781A00D6, // 00DB JMPF R6 #01B3 - 0xB81A1000, // 00DC GETNGBL R6 K8 - 0x8C180D09, // 00DD GETMET R6 R6 K9 - 0x60200018, // 00DE GETGBL R8 G24 - 0x5824000A, // 00DF LDCONST R9 K10 - 0x58280032, // 00E0 LDCONST R10 K50 - 0x7C200400, // 00E1 CALL R8 2 - 0x5824000B, // 00E2 LDCONST R9 K11 - 0x7C180600, // 00E3 CALL R6 3 - 0x50180000, // 00E4 LDBOOL R6 0 0 - 0x601C0010, // 00E5 GETGBL R7 G16 - 0x8C200333, // 00E6 GETMET R8 R1 K51 - 0x7C200200, // 00E7 CALL R8 1 - 0x0420112E, // 00E8 SUB R8 R8 K46 - 0x40225208, // 00E9 CONNECT R8 K41 R8 - 0x7C1C0200, // 00EA CALL R7 1 - 0xA80200A0, // 00EB EXBLK 0 #018D - 0x5C200E00, // 00EC MOVE R8 R7 - 0x7C200000, // 00ED CALL R8 0 - 0x8C240334, // 00EE GETMET R9 R1 K52 - 0x5C2C1000, // 00EF MOVE R11 R8 - 0x7C240400, // 00F0 CALL R9 2 - 0x8C280535, // 00F1 GETMET R10 R2 K53 - 0x5C301200, // 00F2 MOVE R12 R9 - 0x5834000E, // 00F3 LDCONST R13 K14 - 0x7C280600, // 00F4 CALL R10 3 - 0x1C281529, // 00F5 EQ R10 R10 K41 - 0x782A005B, // 00F6 JMPF R10 #0153 - 0x60280009, // 00F7 GETGBL R10 G9 - 0x402E1736, // 00F8 CONNECT R11 K11 K54 - 0x942C120B, // 00F9 GETIDX R11 R9 R11 - 0x7C280200, // 00FA CALL R10 1 - 0x8C2C030E, // 00FB GETMET R11 R1 K14 - 0x5C341000, // 00FC MOVE R13 R8 - 0x7C2C0400, // 00FD CALL R11 2 - 0x8830010C, // 00FE GETMBR R12 R0 K12 - 0x88301937, // 00FF GETMBR R12 R12 K55 - 0x8C301935, // 0100 GETMET R12 R12 K53 - 0x60380008, // 0101 GETGBL R14 G8 - 0x5C3C1400, // 0102 MOVE R15 R10 - 0x7C380200, // 0103 CALL R14 1 - 0x7C300400, // 0104 CALL R12 2 - 0x4C340000, // 0105 LDNIL R13 - 0x2034180D, // 0106 NE R13 R12 R13 - 0x78360041, // 0107 JMPF R13 #014A - 0x8834010C, // 0108 GETMBR R13 R0 K12 - 0x88341B38, // 0109 GETMBR R13 R13 K56 - 0x8C341B35, // 010A GETMET R13 R13 K53 - 0x8C3C1935, // 010B GETMET R15 R12 K53 - 0x58440039, // 010C LDCONST R17 K57 - 0x5848003A, // 010D LDCONST R18 K58 - 0x7C3C0600, // 010E CALL R15 3 - 0x7C340400, // 010F CALL R13 2 - 0x4C380000, // 0110 LDNIL R14 - 0x20381A0E, // 0111 NE R14 R13 R14 - 0x783A0035, // 0112 JMPF R14 #0149 - 0xB83A1000, // 0113 GETNGBL R14 K8 - 0x8C381D09, // 0114 GETMET R14 R14 K9 - 0x60400018, // 0115 GETGBL R16 G24 - 0x5844003B, // 0116 LDCONST R17 K59 - 0x5C481400, // 0117 MOVE R18 R10 - 0x5C4C1600, // 0118 MOVE R19 R11 - 0x7C400600, // 0119 CALL R16 3 - 0x5844000B, // 011A LDCONST R17 K11 - 0x7C380600, // 011B CALL R14 3 - 0x8C381B3C, // 011C GETMET R14 R13 K60 - 0x5C401A00, // 011D MOVE R16 R13 - 0x5C441800, // 011E MOVE R17 R12 - 0x7C380600, // 011F CALL R14 3 - 0x203C1C0B, // 0120 NE R15 R14 R11 - 0xB8421000, // 0121 GETNGBL R16 K8 - 0x8C402109, // 0122 GETMET R16 R16 K9 - 0x60480018, // 0123 GETGBL R18 G24 - 0x584C003D, // 0124 LDCONST R19 K61 - 0x5C501400, // 0125 MOVE R20 R10 - 0x5C541C00, // 0126 MOVE R21 R14 - 0x5C581600, // 0127 MOVE R22 R11 - 0x205C1C0B, // 0128 NE R23 R14 R11 - 0x785E0001, // 0129 JMPF R23 #012C - 0x585C003E, // 012A LDCONST R23 K62 - 0x70020000, // 012B JMP #012D - 0x585C003A, // 012C LDCONST R23 K58 - 0x7C480A00, // 012D CALL R18 5 - 0x584C000B, // 012E LDCONST R19 K11 - 0x7C400600, // 012F CALL R16 3 - 0x783E0017, // 0130 JMPF R15 #0149 - 0x50180200, // 0131 LDBOOL R6 1 0 - 0x8C401B3F, // 0132 GETMET R16 R13 K63 - 0x5C481A00, // 0133 MOVE R18 R13 - 0x5C4C1800, // 0134 MOVE R19 R12 - 0x5C501600, // 0135 MOVE R20 R11 - 0x7C400800, // 0136 CALL R16 4 - 0x8840010C, // 0137 GETMBR R16 R0 K12 - 0x8C402140, // 0138 GETMET R16 R16 K64 - 0x5C481400, // 0139 MOVE R18 R10 - 0x7C400400, // 013A CALL R16 2 - 0x7842000C, // 013B JMPF R16 #0149 - 0xB8461000, // 013C GETNGBL R17 K8 - 0x8C442309, // 013D GETMET R17 R17 K9 - 0x604C0018, // 013E GETGBL R19 G24 - 0x58500041, // 013F LDCONST R20 K65 - 0x5C541800, // 0140 MOVE R21 R12 - 0x5C581400, // 0141 MOVE R22 R10 - 0x5C5C2000, // 0142 MOVE R23 R16 - 0x7C4C0800, // 0143 CALL R19 4 - 0x5850000B, // 0144 LDCONST R20 K11 - 0x7C440600, // 0145 CALL R17 3 - 0x8C442142, // 0146 GETMET R17 R16 K66 - 0x5C4C1800, // 0147 MOVE R19 R12 - 0x7C440400, // 0148 CALL R17 2 - 0x70020007, // 0149 JMP #0152 - 0xB8361000, // 014A GETNGBL R13 K8 - 0x8C341B09, // 014B GETMET R13 R13 K9 - 0x603C0018, // 014C GETGBL R15 G24 - 0x58400043, // 014D LDCONST R16 K67 - 0x5C441400, // 014E MOVE R17 R10 - 0x7C3C0400, // 014F CALL R15 2 - 0x5840000B, // 0150 LDCONST R16 K11 - 0x7C340600, // 0151 CALL R13 3 - 0x70020038, // 0152 JMP #018C - 0x8C280535, // 0153 GETMET R10 R2 K53 - 0x5C301200, // 0154 MOVE R12 R9 - 0x58340044, // 0155 LDCONST R13 K68 - 0x7C280600, // 0156 CALL R10 3 - 0x1C281529, // 0157 EQ R10 R10 K41 - 0x782A0032, // 0158 JMPF R10 #018C - 0x60280009, // 0159 GETGBL R10 G9 - 0x402E1736, // 015A CONNECT R11 K11 K54 - 0x942C120B, // 015B GETIDX R11 R9 R11 - 0x7C280200, // 015C CALL R10 1 - 0x8C2C030E, // 015D GETMET R11 R1 K14 - 0x5C341000, // 015E MOVE R13 R8 - 0x7C2C0400, // 015F CALL R11 2 - 0x8830010C, // 0160 GETMBR R12 R0 K12 - 0x88301937, // 0161 GETMBR R12 R12 K55 - 0x8C301935, // 0162 GETMET R12 R12 K53 - 0x60380008, // 0163 GETGBL R14 G8 - 0x5C3C1400, // 0164 MOVE R15 R10 - 0x7C380200, // 0165 CALL R14 1 - 0x7C300400, // 0166 CALL R12 2 - 0x4C340000, // 0167 LDNIL R13 - 0x2034180D, // 0168 NE R13 R12 R13 - 0x78360021, // 0169 JMPF R13 #018C - 0x8C341935, // 016A GETMET R13 R12 K53 - 0x583C0045, // 016B LDCONST R15 K69 - 0x5840003A, // 016C LDCONST R16 K58 - 0x7C340600, // 016D CALL R13 3 - 0x20381A0B, // 016E NE R14 R13 R11 - 0x783A001B, // 016F JMPF R14 #018C - 0x50180200, // 0170 LDBOOL R6 1 0 - 0x883C010C, // 0171 GETMBR R15 R0 K12 - 0x8C3C1F40, // 0172 GETMET R15 R15 K64 - 0x5C441400, // 0173 MOVE R17 R10 - 0x7C3C0400, // 0174 CALL R15 2 - 0x783E0015, // 0175 JMPF R15 #018C - 0x8C401F46, // 0176 GETMET R16 R15 K70 - 0x5C481600, // 0177 MOVE R18 R11 - 0x7C400400, // 0178 CALL R16 2 - 0x782E0001, // 0179 JMPF R11 #017C - 0x98328A0B, // 017A SETIDX R12 K69 R11 - 0x70020002, // 017B JMP #017F - 0x8C401947, // 017C GETMET R16 R12 K71 - 0x58480045, // 017D LDCONST R18 K69 - 0x7C400400, // 017E CALL R16 2 - 0xB8421000, // 017F GETNGBL R16 K8 - 0x8C402109, // 0180 GETMET R16 R16 K9 - 0x60480018, // 0181 GETGBL R18 G24 - 0x584C0048, // 0182 LDCONST R19 K72 - 0x5C501800, // 0183 MOVE R20 R12 - 0x5C541400, // 0184 MOVE R21 R10 - 0x5C581E00, // 0185 MOVE R22 R15 - 0x7C480800, // 0186 CALL R18 4 - 0x584C000B, // 0187 LDCONST R19 K11 - 0x7C400600, // 0188 CALL R16 3 - 0x8C401F42, // 0189 GETMET R16 R15 K66 - 0x5C481800, // 018A MOVE R18 R12 - 0x7C400400, // 018B CALL R16 2 - 0x7001FF5E, // 018C JMP #00EC - 0x581C0049, // 018D LDCONST R7 K73 - 0xAC1C0200, // 018E CATCH R7 1 0 - 0xB0080000, // 018F RAISE 2 R0 R0 + 0x70020014, // 007D JMP #0093 + 0x8824010B, // 007E GETMBR R9 R0 K11 + 0x88241324, // 007F GETMBR R9 R9 K36 + 0x4C280000, // 0080 LDNIL R10 + 0x2024120A, // 0081 NE R9 R9 R10 + 0x20240E09, // 0082 NE R9 R7 R9 + 0x7826000B, // 0083 JMPF R9 #0090 + 0x781E0003, // 0084 JMPF R7 #0089 + 0x8824010B, // 0085 GETMBR R9 R0 K11 + 0x8C241325, // 0086 GETMET R9 R9 K37 + 0x7C240200, // 0087 CALL R9 1 + 0x70020002, // 0088 JMP #008C + 0x8824010B, // 0089 GETMBR R9 R0 K11 + 0x8C241326, // 008A GETMET R9 R9 K38 + 0x7C240200, // 008B CALL R9 1 + 0x8C240313, // 008C GETMET R9 R1 K19 + 0x582C0027, // 008D LDCONST R11 K39 + 0x7C240400, // 008E CALL R9 2 + 0x70020002, // 008F JMP #0093 + 0x8C240313, // 0090 GETMET R9 R1 K19 + 0x582C0027, // 0091 LDCONST R11 K39 + 0x7C240400, // 0092 CALL R9 2 + 0x700201CB, // 0093 JMP #0260 + 0x8C180305, // 0094 GETMET R6 R1 K5 + 0x58200028, // 0095 LDCONST R8 K40 + 0x7C180400, // 0096 CALL R6 2 + 0x781A0025, // 0097 JMPF R6 #00BE + 0xB81A1000, // 0098 GETNGBL R6 K8 + 0x601C0018, // 0099 GETGBL R7 G24 + 0x58200009, // 009A LDCONST R8 K9 + 0x58240028, // 009B LDCONST R9 K40 + 0x7C1C0400, // 009C CALL R7 2 + 0x5820000A, // 009D LDCONST R8 K10 + 0x7C180400, // 009E CALL R6 2 + 0x60180009, // 009F GETGBL R6 G9 + 0x8C1C030D, // 00A0 GETMET R7 R1 K13 + 0x58240028, // 00A1 LDCONST R9 K40 + 0x7C1C0400, // 00A2 CALL R7 2 + 0x7C180200, // 00A3 CALL R6 1 + 0x581C0029, // 00A4 LDCONST R7 K41 + 0x8820010B, // 00A5 GETMBR R8 R0 K11 + 0x8820112A, // 00A6 GETMBR R8 R8 K42 + 0x8820112B, // 00A7 GETMBR R8 R8 K43 + 0x6024000C, // 00A8 GETGBL R9 G12 + 0x5C281000, // 00A9 MOVE R10 R8 + 0x7C240200, // 00AA CALL R9 1 + 0x14240E09, // 00AB LT R9 R7 R9 + 0x7826000C, // 00AC JMPF R9 #00BA + 0x94241007, // 00AD GETIDX R9 R8 R7 + 0x8C24132C, // 00AE GETMET R9 R9 K44 + 0x7C240200, // 00AF CALL R9 1 + 0x1C241206, // 00B0 EQ R9 R9 R6 + 0x78260005, // 00B1 JMPF R9 #00B8 + 0x8824010B, // 00B2 GETMBR R9 R0 K11 + 0x8C24132D, // 00B3 GETMET R9 R9 K45 + 0x942C1007, // 00B4 GETIDX R11 R8 R7 + 0x7C240400, // 00B5 CALL R9 2 + 0x70020002, // 00B6 JMP #00BA + 0x70020000, // 00B7 JMP #00B9 + 0x001C0F2E, // 00B8 ADD R7 R7 K46 + 0x7001FFED, // 00B9 JMP #00A8 + 0x8C240313, // 00BA GETMET R9 R1 K19 + 0x582C002F, // 00BB LDCONST R11 K47 + 0x7C240400, // 00BC CALL R9 2 + 0x700201A1, // 00BD JMP #0260 + 0x8C180305, // 00BE GETMET R6 R1 K5 + 0x58200030, // 00BF LDCONST R8 K48 + 0x7C180400, // 00C0 CALL R6 2 + 0x781A0010, // 00C1 JMPF R6 #00D3 + 0xB81A1000, // 00C2 GETNGBL R6 K8 + 0x601C0018, // 00C3 GETGBL R7 G24 + 0x58200009, // 00C4 LDCONST R8 K9 + 0x58240030, // 00C5 LDCONST R9 K48 + 0x7C1C0400, // 00C6 CALL R7 2 + 0x5820000A, // 00C7 LDCONST R8 K10 + 0x7C180400, // 00C8 CALL R6 2 + 0x8818010B, // 00C9 GETMBR R6 R0 K11 + 0x501C0000, // 00CA LDBOOL R7 0 0 + 0x901A6207, // 00CB SETMBR R6 K49 R7 + 0x8818010B, // 00CC GETMBR R6 R0 K11 + 0x8C180D12, // 00CD GETMET R6 R6 K18 + 0x7C180200, // 00CE CALL R6 1 + 0x8C180313, // 00CF GETMET R6 R1 K19 + 0x58200014, // 00D0 LDCONST R8 K20 + 0x7C180400, // 00D1 CALL R6 2 + 0x7002018C, // 00D2 JMP #0260 + 0x8C180305, // 00D3 GETMET R6 R1 K5 + 0x58200032, // 00D4 LDCONST R8 K50 + 0x7C180400, // 00D5 CALL R6 2 + 0x781A00CE, // 00D6 JMPF R6 #01A6 + 0xB81A1000, // 00D7 GETNGBL R6 K8 + 0x601C0018, // 00D8 GETGBL R7 G24 + 0x58200009, // 00D9 LDCONST R8 K9 + 0x58240032, // 00DA LDCONST R9 K50 + 0x7C1C0400, // 00DB CALL R7 2 + 0x5820000A, // 00DC LDCONST R8 K10 + 0x7C180400, // 00DD CALL R6 2 + 0x50180000, // 00DE LDBOOL R6 0 0 + 0x601C0010, // 00DF GETGBL R7 G16 + 0x8C200333, // 00E0 GETMET R8 R1 K51 + 0x7C200200, // 00E1 CALL R8 1 + 0x0420112E, // 00E2 SUB R8 R8 K46 + 0x40225208, // 00E3 CONNECT R8 K41 R8 + 0x7C1C0200, // 00E4 CALL R7 1 + 0xA802009B, // 00E5 EXBLK 0 #0182 + 0x5C200E00, // 00E6 MOVE R8 R7 + 0x7C200000, // 00E7 CALL R8 0 + 0x8C240334, // 00E8 GETMET R9 R1 K52 + 0x5C2C1000, // 00E9 MOVE R11 R8 + 0x7C240400, // 00EA CALL R9 2 + 0x8C280535, // 00EB GETMET R10 R2 K53 + 0x5C301200, // 00EC MOVE R12 R9 + 0x5834000D, // 00ED LDCONST R13 K13 + 0x7C280600, // 00EE CALL R10 3 + 0x1C281529, // 00EF EQ R10 R10 K41 + 0x782A0057, // 00F0 JMPF R10 #0149 + 0x60280009, // 00F1 GETGBL R10 G9 + 0x402E1536, // 00F2 CONNECT R11 K10 K54 + 0x942C120B, // 00F3 GETIDX R11 R9 R11 + 0x7C280200, // 00F4 CALL R10 1 + 0x8C2C030D, // 00F5 GETMET R11 R1 K13 + 0x5C341000, // 00F6 MOVE R13 R8 + 0x7C2C0400, // 00F7 CALL R11 2 + 0x8830010B, // 00F8 GETMBR R12 R0 K11 + 0x88301937, // 00F9 GETMBR R12 R12 K55 + 0x8C301935, // 00FA GETMET R12 R12 K53 + 0x60380008, // 00FB GETGBL R14 G8 + 0x5C3C1400, // 00FC MOVE R15 R10 + 0x7C380200, // 00FD CALL R14 1 + 0x7C300400, // 00FE CALL R12 2 + 0x4C340000, // 00FF LDNIL R13 + 0x2034180D, // 0100 NE R13 R12 R13 + 0x7836003E, // 0101 JMPF R13 #0141 + 0x8834010B, // 0102 GETMBR R13 R0 K11 + 0x88341B38, // 0103 GETMBR R13 R13 K56 + 0x8C341B35, // 0104 GETMET R13 R13 K53 + 0x8C3C1935, // 0105 GETMET R15 R12 K53 + 0x58440039, // 0106 LDCONST R17 K57 + 0x5848003A, // 0107 LDCONST R18 K58 + 0x7C3C0600, // 0108 CALL R15 3 + 0x7C340400, // 0109 CALL R13 2 + 0x4C380000, // 010A LDNIL R14 + 0x20381A0E, // 010B NE R14 R13 R14 + 0x783A0032, // 010C JMPF R14 #0140 + 0xB83A1000, // 010D GETNGBL R14 K8 + 0x603C0018, // 010E GETGBL R15 G24 + 0x5840003B, // 010F LDCONST R16 K59 + 0x5C441400, // 0110 MOVE R17 R10 + 0x5C481600, // 0111 MOVE R18 R11 + 0x7C3C0600, // 0112 CALL R15 3 + 0x5840000A, // 0113 LDCONST R16 K10 + 0x7C380400, // 0114 CALL R14 2 + 0x8C381B3C, // 0115 GETMET R14 R13 K60 + 0x5C401A00, // 0116 MOVE R16 R13 + 0x5C441800, // 0117 MOVE R17 R12 + 0x7C380600, // 0118 CALL R14 3 + 0x203C1C0B, // 0119 NE R15 R14 R11 + 0xB8421000, // 011A GETNGBL R16 K8 + 0x60440018, // 011B GETGBL R17 G24 + 0x5848003D, // 011C LDCONST R18 K61 + 0x5C4C1400, // 011D MOVE R19 R10 + 0x5C501C00, // 011E MOVE R20 R14 + 0x5C541600, // 011F MOVE R21 R11 + 0x20581C0B, // 0120 NE R22 R14 R11 + 0x785A0001, // 0121 JMPF R22 #0124 + 0x5858003E, // 0122 LDCONST R22 K62 + 0x70020000, // 0123 JMP #0125 + 0x5858003A, // 0124 LDCONST R22 K58 + 0x7C440A00, // 0125 CALL R17 5 + 0x5848000A, // 0126 LDCONST R18 K10 + 0x7C400400, // 0127 CALL R16 2 + 0x783E0016, // 0128 JMPF R15 #0140 + 0x50180200, // 0129 LDBOOL R6 1 0 + 0x8C401B3F, // 012A GETMET R16 R13 K63 + 0x5C481A00, // 012B MOVE R18 R13 + 0x5C4C1800, // 012C MOVE R19 R12 + 0x5C501600, // 012D MOVE R20 R11 + 0x7C400800, // 012E CALL R16 4 + 0x8840010B, // 012F GETMBR R16 R0 K11 + 0x8C402140, // 0130 GETMET R16 R16 K64 + 0x5C481400, // 0131 MOVE R18 R10 + 0x7C400400, // 0132 CALL R16 2 + 0x7842000B, // 0133 JMPF R16 #0140 + 0xB8461000, // 0134 GETNGBL R17 K8 + 0x60480018, // 0135 GETGBL R18 G24 + 0x584C0041, // 0136 LDCONST R19 K65 + 0x5C501800, // 0137 MOVE R20 R12 + 0x5C541400, // 0138 MOVE R21 R10 + 0x5C582000, // 0139 MOVE R22 R16 + 0x7C480800, // 013A CALL R18 4 + 0x584C000A, // 013B LDCONST R19 K10 + 0x7C440400, // 013C CALL R17 2 + 0x8C442142, // 013D GETMET R17 R16 K66 + 0x5C4C1800, // 013E MOVE R19 R12 + 0x7C440400, // 013F CALL R17 2 + 0x70020006, // 0140 JMP #0148 + 0xB8361000, // 0141 GETNGBL R13 K8 + 0x60380018, // 0142 GETGBL R14 G24 + 0x583C0043, // 0143 LDCONST R15 K67 + 0x5C401400, // 0144 MOVE R16 R10 + 0x7C380400, // 0145 CALL R14 2 + 0x583C000A, // 0146 LDCONST R15 K10 + 0x7C340400, // 0147 CALL R13 2 + 0x70020037, // 0148 JMP #0181 + 0x8C280535, // 0149 GETMET R10 R2 K53 + 0x5C301200, // 014A MOVE R12 R9 + 0x58340044, // 014B LDCONST R13 K68 + 0x7C280600, // 014C CALL R10 3 + 0x1C281529, // 014D EQ R10 R10 K41 + 0x782A0031, // 014E JMPF R10 #0181 + 0x60280009, // 014F GETGBL R10 G9 + 0x402E1536, // 0150 CONNECT R11 K10 K54 + 0x942C120B, // 0151 GETIDX R11 R9 R11 + 0x7C280200, // 0152 CALL R10 1 + 0x8C2C030D, // 0153 GETMET R11 R1 K13 + 0x5C341000, // 0154 MOVE R13 R8 + 0x7C2C0400, // 0155 CALL R11 2 + 0x8830010B, // 0156 GETMBR R12 R0 K11 + 0x88301937, // 0157 GETMBR R12 R12 K55 + 0x8C301935, // 0158 GETMET R12 R12 K53 + 0x60380008, // 0159 GETGBL R14 G8 + 0x5C3C1400, // 015A MOVE R15 R10 + 0x7C380200, // 015B CALL R14 1 + 0x7C300400, // 015C CALL R12 2 + 0x4C340000, // 015D LDNIL R13 + 0x2034180D, // 015E NE R13 R12 R13 + 0x78360020, // 015F JMPF R13 #0181 + 0x8C341935, // 0160 GETMET R13 R12 K53 + 0x583C0045, // 0161 LDCONST R15 K69 + 0x5840003A, // 0162 LDCONST R16 K58 + 0x7C340600, // 0163 CALL R13 3 + 0x20381A0B, // 0164 NE R14 R13 R11 + 0x783A001A, // 0165 JMPF R14 #0181 + 0x50180200, // 0166 LDBOOL R6 1 0 + 0x883C010B, // 0167 GETMBR R15 R0 K11 + 0x8C3C1F40, // 0168 GETMET R15 R15 K64 + 0x5C441400, // 0169 MOVE R17 R10 + 0x7C3C0400, // 016A CALL R15 2 + 0x783E0014, // 016B JMPF R15 #0181 + 0x8C401F46, // 016C GETMET R16 R15 K70 + 0x5C481600, // 016D MOVE R18 R11 + 0x7C400400, // 016E CALL R16 2 + 0x782E0001, // 016F JMPF R11 #0172 + 0x98328A0B, // 0170 SETIDX R12 K69 R11 + 0x70020002, // 0171 JMP #0175 + 0x8C401947, // 0172 GETMET R16 R12 K71 + 0x58480045, // 0173 LDCONST R18 K69 + 0x7C400400, // 0174 CALL R16 2 + 0xB8421000, // 0175 GETNGBL R16 K8 + 0x60440018, // 0176 GETGBL R17 G24 + 0x58480048, // 0177 LDCONST R18 K72 + 0x5C4C1800, // 0178 MOVE R19 R12 + 0x5C501400, // 0179 MOVE R20 R10 + 0x5C541E00, // 017A MOVE R21 R15 + 0x7C440800, // 017B CALL R17 4 + 0x5848000A, // 017C LDCONST R18 K10 + 0x7C400400, // 017D CALL R16 2 + 0x8C401F42, // 017E GETMET R16 R15 K66 + 0x5C481800, // 017F MOVE R18 R12 + 0x7C400400, // 0180 CALL R16 2 + 0x7001FF63, // 0181 JMP #00E6 + 0x581C0049, // 0182 LDCONST R7 K73 + 0xAC1C0200, // 0183 CATCH R7 1 0 + 0xB0080000, // 0184 RAISE 2 R0 R0 + 0xB81E1000, // 0185 GETNGBL R7 K8 + 0x60200018, // 0186 GETGBL R8 G24 + 0x5824004A, // 0187 LDCONST R9 K74 + 0x60280008, // 0188 GETGBL R10 G8 + 0x882C010B, // 0189 GETMBR R11 R0 K11 + 0x882C1737, // 018A GETMBR R11 R11 K55 + 0x7C280200, // 018B CALL R10 1 + 0x7C200400, // 018C CALL R8 2 + 0x5824000A, // 018D LDCONST R9 K10 + 0x7C1C0400, // 018E CALL R7 2 + 0x78160007, // 018F JMPF R5 #0198 0xB81E1000, // 0190 GETNGBL R7 K8 - 0x8C1C0F09, // 0191 GETMET R7 R7 K9 - 0x60240018, // 0192 GETGBL R9 G24 - 0x5828004A, // 0193 LDCONST R10 K74 - 0x602C0008, // 0194 GETGBL R11 G8 - 0x8830010C, // 0195 GETMBR R12 R0 K12 - 0x88301937, // 0196 GETMBR R12 R12 K55 - 0x7C2C0200, // 0197 CALL R11 1 - 0x7C240400, // 0198 CALL R9 2 - 0x5828000B, // 0199 LDCONST R10 K11 - 0x7C1C0600, // 019A CALL R7 3 - 0x78160008, // 019B JMPF R5 #01A5 - 0xB81E1000, // 019C GETNGBL R7 K8 - 0x8C1C0F09, // 019D GETMET R7 R7 K9 - 0x60240018, // 019E GETGBL R9 G24 - 0x5828004B, // 019F LDCONST R10 K75 - 0x5C2C0A00, // 01A0 MOVE R11 R5 - 0x7C240400, // 01A1 CALL R9 2 - 0x5828000B, // 01A2 LDCONST R10 K11 - 0x7C1C0600, // 01A3 CALL R7 3 - 0x7002000C, // 01A4 JMP #01B2 - 0x741A0002, // 01A5 JMPT R6 #01A9 - 0x881C010C, // 01A6 GETMBR R7 R0 K12 - 0x881C0F31, // 01A7 GETMBR R7 R7 K49 - 0x741E0005, // 01A8 JMPT R7 #01AF - 0x881C010C, // 01A9 GETMBR R7 R0 K12 - 0x50200200, // 01AA LDBOOL R8 1 0 - 0x901E6208, // 01AB SETMBR R7 K49 R8 - 0x881C010C, // 01AC GETMBR R7 R0 K12 - 0x8C1C0F13, // 01AD GETMET R7 R7 K19 - 0x7C1C0200, // 01AE CALL R7 1 - 0x8C1C0314, // 01AF GETMET R7 R1 K20 - 0x5824004C, // 01B0 LDCONST R9 K76 - 0x7C1C0400, // 01B1 CALL R7 2 - 0x700200BB, // 01B2 JMP #026F - 0x8C180305, // 01B3 GETMET R6 R1 K5 - 0x5820004D, // 01B4 LDCONST R8 K77 - 0x7C180400, // 01B5 CALL R6 2 - 0x781A002B, // 01B6 JMPF R6 #01E3 - 0x8C18030E, // 01B7 GETMET R6 R1 K14 - 0x5820004E, // 01B8 LDCONST R8 K78 - 0x7C180400, // 01B9 CALL R6 2 - 0x8C1C030E, // 01BA GETMET R7 R1 K14 - 0x5824000E, // 01BB LDCONST R9 K14 - 0x7C1C0400, // 01BC CALL R7 2 - 0x8C20030E, // 01BD GETMET R8 R1 K14 - 0x58280044, // 01BE LDCONST R10 K68 - 0x7C200400, // 01BF CALL R8 2 - 0xB8261000, // 01C0 GETNGBL R9 K8 - 0x8C241309, // 01C1 GETMET R9 R9 K9 - 0x602C0018, // 01C2 GETGBL R11 G24 - 0x5830004F, // 01C3 LDCONST R12 K79 - 0x5C340C00, // 01C4 MOVE R13 R6 - 0x5C380E00, // 01C5 MOVE R14 R7 - 0x7C2C0600, // 01C6 CALL R11 3 - 0x5830000B, // 01C7 LDCONST R12 K11 - 0x7C240600, // 01C8 CALL R9 3 - 0x8824010C, // 01C9 GETMBR R9 R0 K12 - 0x88241338, // 01CA GETMBR R9 R9 K56 - 0x8C241335, // 01CB GETMET R9 R9 K53 - 0x5C2C0C00, // 01CC MOVE R11 R6 - 0x7C240400, // 01CD CALL R9 2 - 0x4C280000, // 01CE LDNIL R10 - 0x2028120A, // 01CF NE R10 R9 R10 - 0x782A000D, // 01D0 JMPF R10 #01DF - 0x60280013, // 01D1 GETGBL R10 G19 - 0x7C280000, // 01D2 CALL R10 0 - 0x78220000, // 01D3 JMPF R8 #01D5 - 0x982A8A08, // 01D4 SETIDX R10 K69 R8 - 0x8C2C133F, // 01D5 GETMET R11 R9 K63 - 0x5C341200, // 01D6 MOVE R13 R9 - 0x5C381400, // 01D7 MOVE R14 R10 - 0x5C3C0E00, // 01D8 MOVE R15 R7 - 0x7C2C0800, // 01D9 CALL R11 4 - 0x882C010C, // 01DA GETMBR R11 R0 K12 - 0x8C2C1750, // 01DB GETMET R11 R11 K80 - 0x5C340C00, // 01DC MOVE R13 R6 - 0x5C381400, // 01DD MOVE R14 R10 - 0x7C2C0600, // 01DE CALL R11 3 - 0x8C280314, // 01DF GETMET R10 R1 K20 - 0x5830004C, // 01E0 LDCONST R12 K76 - 0x7C280400, // 01E1 CALL R10 2 - 0x7002008B, // 01E2 JMP #026F - 0x8C180305, // 01E3 GETMET R6 R1 K5 - 0x58200051, // 01E4 LDCONST R8 K81 - 0x7C180400, // 01E5 CALL R6 2 - 0x781A005E, // 01E6 JMPF R6 #0246 - 0x8C18030E, // 01E7 GETMET R6 R1 K14 - 0x58200052, // 01E8 LDCONST R8 K82 - 0x7C180400, // 01E9 CALL R6 2 - 0x4C1C0000, // 01EA LDNIL R7 - 0x1C1C0C07, // 01EB EQ R7 R6 R7 - 0x741E0001, // 01EC JMPT R7 #01EF - 0x1C1C0D3A, // 01ED EQ R7 R6 K58 - 0x781E0000, // 01EE JMPF R7 #01F0 - 0xB006A754, // 01EF RAISE 1 K83 K84 - 0x581C0029, // 01F0 LDCONST R7 K41 - 0x60200008, // 01F1 GETGBL R8 G8 - 0x5C240E00, // 01F2 MOVE R9 R7 - 0x7C200200, // 01F3 CALL R8 1 - 0x8C240305, // 01F4 GETMET R9 R1 K5 - 0x002E9C08, // 01F5 ADD R11 K78 R8 - 0x7C240400, // 01F6 CALL R9 2 - 0x78260049, // 01F7 JMPF R9 #0242 - 0x8C24030E, // 01F8 GETMET R9 R1 K14 - 0x002E9C08, // 01F9 ADD R11 K78 R8 - 0x7C240400, // 01FA CALL R9 2 - 0x8C28030E, // 01FB GETMET R10 R1 K14 - 0x00321C08, // 01FC ADD R12 K14 R8 - 0x7C280400, // 01FD CALL R10 2 - 0x8C2C030E, // 01FE GETMET R11 R1 K14 - 0x00368808, // 01FF ADD R13 K68 R8 - 0x7C2C0400, // 0200 CALL R11 2 - 0x2030133A, // 0201 NE R12 R9 K58 - 0x78320038, // 0202 JMPF R12 #023C - 0x8830010C, // 0203 GETMBR R12 R0 K12 - 0x88301938, // 0204 GETMBR R12 R12 K56 - 0x8C301935, // 0205 GETMET R12 R12 K53 - 0x5C381200, // 0206 MOVE R14 R9 - 0x7C300400, // 0207 CALL R12 2 - 0x4C340000, // 0208 LDNIL R13 - 0x2034180D, // 0209 NE R13 R12 R13 - 0x78360030, // 020A JMPF R13 #023C - 0x60340013, // 020B GETGBL R13 G19 - 0x7C340000, // 020C CALL R13 0 - 0x9836A406, // 020D SETIDX R13 K82 R6 - 0x98367209, // 020E SETIDX R13 K57 R9 - 0x782E0000, // 020F JMPF R11 #0211 - 0x98368A0B, // 0210 SETIDX R13 K69 R11 - 0x8C38193F, // 0211 GETMET R14 R12 K63 - 0x5C401800, // 0212 MOVE R16 R12 - 0x5C441A00, // 0213 MOVE R17 R13 - 0x5C481400, // 0214 MOVE R18 R10 - 0x7C380800, // 0215 CALL R14 4 - 0x50380000, // 0216 LDBOOL R14 0 0 - 0x603C0010, // 0217 GETGBL R15 G16 - 0x8840010C, // 0218 GETMBR R16 R0 K12 - 0x88402137, // 0219 GETMBR R16 R16 K55 - 0x7C3C0200, // 021A CALL R15 1 - 0xA802000B, // 021B EXBLK 0 #0228 - 0x5C401E00, // 021C MOVE R16 R15 - 0x7C400000, // 021D CALL R16 0 - 0x8C440155, // 021E GETMET R17 R0 K85 - 0x5C4C2000, // 021F MOVE R19 R16 - 0x5C501A00, // 0220 MOVE R20 R13 - 0x7C440600, // 0221 CALL R17 3 - 0x78460001, // 0222 JMPF R17 #0225 - 0x50380200, // 0223 LDBOOL R14 1 0 - 0x70020000, // 0224 JMP #0226 - 0x7001FFF5, // 0225 JMP #021C - 0xA8040001, // 0226 EXBLK 1 1 - 0x70020002, // 0227 JMP #022B - 0x583C0049, // 0228 LDCONST R15 K73 - 0xAC3C0200, // 0229 CATCH R15 1 0 - 0xB0080000, // 022A RAISE 2 R0 R0 - 0x5C3C1C00, // 022B MOVE R15 R14 - 0x743E000E, // 022C JMPT R15 #023C - 0xB83E1000, // 022D GETNGBL R15 K8 - 0x8C3C1F09, // 022E GETMET R15 R15 K9 - 0x60440018, // 022F GETGBL R17 G24 - 0x58480056, // 0230 LDCONST R18 K86 - 0x5C4C0C00, // 0231 MOVE R19 R6 - 0x5C501200, // 0232 MOVE R20 R9 - 0x5C541400, // 0233 MOVE R21 R10 - 0x7C440800, // 0234 CALL R17 4 - 0x5848000B, // 0235 LDCONST R18 K11 - 0x7C3C0600, // 0236 CALL R15 3 - 0x883C010C, // 0237 GETMBR R15 R0 K12 - 0x8C3C1F50, // 0238 GETMET R15 R15 K80 - 0x5C441200, // 0239 MOVE R17 R9 - 0x5C481A00, // 023A MOVE R18 R13 - 0x7C3C0600, // 023B CALL R15 3 - 0x001C0F2E, // 023C ADD R7 R7 K46 - 0x60300008, // 023D GETGBL R12 G8 - 0x5C340E00, // 023E MOVE R13 R7 - 0x7C300200, // 023F CALL R12 1 - 0x5C201800, // 0240 MOVE R8 R12 - 0x7001FFB1, // 0241 JMP #01F4 - 0x8C240314, // 0242 GETMET R9 R1 K20 - 0x582C004C, // 0243 LDCONST R11 K76 - 0x7C240400, // 0244 CALL R9 2 - 0x70020028, // 0245 JMP #026F - 0x4C180000, // 0246 LDNIL R6 - 0x601C0010, // 0247 GETGBL R7 G16 - 0x8C200333, // 0248 GETMET R8 R1 K51 - 0x7C200200, // 0249 CALL R8 1 - 0x0420112E, // 024A SUB R8 R8 K46 - 0x40225208, // 024B CONNECT R8 K41 R8 - 0x7C1C0200, // 024C CALL R7 1 - 0xA8020013, // 024D EXBLK 0 #0262 - 0x5C200E00, // 024E MOVE R8 R7 - 0x7C200000, // 024F CALL R8 0 - 0x8C240334, // 0250 GETMET R9 R1 K52 - 0x5C2C1000, // 0251 MOVE R11 R8 - 0x7C240400, // 0252 CALL R9 2 - 0x8C280535, // 0253 GETMET R10 R2 K53 - 0x5C301200, // 0254 MOVE R12 R9 - 0x58340057, // 0255 LDCONST R13 K87 - 0x7C280600, // 0256 CALL R10 3 - 0x1C281529, // 0257 EQ R10 R10 K41 - 0x782A0005, // 0258 JMPF R10 #025F - 0x60280009, // 0259 GETGBL R10 G9 - 0x402E1736, // 025A CONNECT R11 K11 K54 - 0x942C120B, // 025B GETIDX R11 R9 R11 - 0x7C280200, // 025C CALL R10 1 - 0x5C181400, // 025D MOVE R6 R10 - 0x70020000, // 025E JMP #0260 - 0x7001FFED, // 025F JMP #024E - 0xA8040001, // 0260 EXBLK 1 1 - 0x70020002, // 0261 JMP #0265 - 0x581C0049, // 0262 LDCONST R7 K73 - 0xAC1C0200, // 0263 CATCH R7 1 0 - 0xB0080000, // 0264 RAISE 2 R0 R0 - 0x4C1C0000, // 0265 LDNIL R7 - 0x201C0C07, // 0266 NE R7 R6 R7 - 0x781E0006, // 0267 JMPF R7 #026F - 0x881C010C, // 0268 GETMBR R7 R0 K12 - 0x8C1C0F58, // 0269 GETMET R7 R7 K88 - 0x5C240C00, // 026A MOVE R9 R6 - 0x7C1C0400, // 026B CALL R7 2 - 0x8C1C0314, // 026C GETMET R7 R1 K20 - 0x5824004C, // 026D LDCONST R9 K76 - 0x7C1C0400, // 026E CALL R7 2 - 0x78160011, // 026F JMPF R5 #0282 - 0x8C180359, // 0270 GETMET R6 R1 K89 - 0x5820005A, // 0271 LDCONST R8 K90 - 0x7C180400, // 0272 CALL R6 2 - 0x8C18035B, // 0273 GETMET R6 R1 K91 - 0x7C180200, // 0274 CALL R6 1 - 0x8C18035C, // 0275 GETMET R6 R1 K92 - 0x60200018, // 0276 GETGBL R8 G24 - 0x5824005D, // 0277 LDCONST R9 K93 - 0x8C28035E, // 0278 GETMET R10 R1 K94 - 0x5C300A00, // 0279 MOVE R12 R5 - 0x7C280400, // 027A CALL R10 2 - 0x7C200400, // 027B CALL R8 2 - 0x7C180400, // 027C CALL R6 2 - 0x8C18035F, // 027D GETMET R6 R1 K95 - 0x88200360, // 027E GETMBR R8 R1 K96 - 0x7C180400, // 027F CALL R6 2 - 0x8C180361, // 0280 GETMET R6 R1 K97 - 0x7C180200, // 0281 CALL R6 1 - 0xA8040001, // 0282 EXBLK 1 1 - 0x7002001D, // 0283 JMP #02A2 - 0xAC180002, // 0284 CATCH R6 0 2 - 0x7002001A, // 0285 JMP #02A1 - 0xB8221000, // 0286 GETNGBL R8 K8 - 0x8C201109, // 0287 GETMET R8 R8 K9 - 0x60280018, // 0288 GETGBL R10 G24 - 0x582C0062, // 0289 LDCONST R11 K98 - 0x5C300C00, // 028A MOVE R12 R6 - 0x5C340E00, // 028B MOVE R13 R7 - 0x7C280600, // 028C CALL R10 3 - 0x582C0063, // 028D LDCONST R11 K99 - 0x7C200600, // 028E CALL R8 3 - 0x8C200359, // 028F GETMET R8 R1 K89 - 0x5828005A, // 0290 LDCONST R10 K90 - 0x7C200400, // 0291 CALL R8 2 - 0x8C20035B, // 0292 GETMET R8 R1 K91 - 0x7C200200, // 0293 CALL R8 1 - 0x8C20035C, // 0294 GETMET R8 R1 K92 - 0x60280018, // 0295 GETGBL R10 G24 - 0x582C0064, // 0296 LDCONST R11 K100 - 0x5C300C00, // 0297 MOVE R12 R6 - 0x5C340E00, // 0298 MOVE R13 R7 - 0x7C280600, // 0299 CALL R10 3 - 0x7C200400, // 029A CALL R8 2 - 0x8C20035F, // 029B GETMET R8 R1 K95 - 0x88280360, // 029C GETMBR R10 R1 K96 - 0x7C200400, // 029D CALL R8 2 - 0x8C200361, // 029E GETMET R8 R1 K97 - 0x7C200200, // 029F CALL R8 1 - 0x70020000, // 02A0 JMP #02A2 - 0xB0080000, // 02A1 RAISE 2 R0 R0 - 0x80000000, // 02A2 RET 0 + 0x60200018, // 0191 GETGBL R8 G24 + 0x5824004B, // 0192 LDCONST R9 K75 + 0x5C280A00, // 0193 MOVE R10 R5 + 0x7C200400, // 0194 CALL R8 2 + 0x5824000A, // 0195 LDCONST R9 K10 + 0x7C1C0400, // 0196 CALL R7 2 + 0x7002000C, // 0197 JMP #01A5 + 0x741A0002, // 0198 JMPT R6 #019C + 0x881C010B, // 0199 GETMBR R7 R0 K11 + 0x881C0F31, // 019A GETMBR R7 R7 K49 + 0x741E0005, // 019B JMPT R7 #01A2 + 0x881C010B, // 019C GETMBR R7 R0 K11 + 0x50200200, // 019D LDBOOL R8 1 0 + 0x901E6208, // 019E SETMBR R7 K49 R8 + 0x881C010B, // 019F GETMBR R7 R0 K11 + 0x8C1C0F12, // 01A0 GETMET R7 R7 K18 + 0x7C1C0200, // 01A1 CALL R7 1 + 0x8C1C0313, // 01A2 GETMET R7 R1 K19 + 0x5824004C, // 01A3 LDCONST R9 K76 + 0x7C1C0400, // 01A4 CALL R7 2 + 0x700200B9, // 01A5 JMP #0260 + 0x8C180305, // 01A6 GETMET R6 R1 K5 + 0x5820004D, // 01A7 LDCONST R8 K77 + 0x7C180400, // 01A8 CALL R6 2 + 0x781A002A, // 01A9 JMPF R6 #01D5 + 0x8C18030D, // 01AA GETMET R6 R1 K13 + 0x5820004E, // 01AB LDCONST R8 K78 + 0x7C180400, // 01AC CALL R6 2 + 0x8C1C030D, // 01AD GETMET R7 R1 K13 + 0x5824000D, // 01AE LDCONST R9 K13 + 0x7C1C0400, // 01AF CALL R7 2 + 0x8C20030D, // 01B0 GETMET R8 R1 K13 + 0x58280044, // 01B1 LDCONST R10 K68 + 0x7C200400, // 01B2 CALL R8 2 + 0xB8261000, // 01B3 GETNGBL R9 K8 + 0x60280018, // 01B4 GETGBL R10 G24 + 0x582C004F, // 01B5 LDCONST R11 K79 + 0x5C300C00, // 01B6 MOVE R12 R6 + 0x5C340E00, // 01B7 MOVE R13 R7 + 0x7C280600, // 01B8 CALL R10 3 + 0x582C000A, // 01B9 LDCONST R11 K10 + 0x7C240400, // 01BA CALL R9 2 + 0x8824010B, // 01BB GETMBR R9 R0 K11 + 0x88241338, // 01BC GETMBR R9 R9 K56 + 0x8C241335, // 01BD GETMET R9 R9 K53 + 0x5C2C0C00, // 01BE MOVE R11 R6 + 0x7C240400, // 01BF CALL R9 2 + 0x4C280000, // 01C0 LDNIL R10 + 0x2028120A, // 01C1 NE R10 R9 R10 + 0x782A000D, // 01C2 JMPF R10 #01D1 + 0x60280013, // 01C3 GETGBL R10 G19 + 0x7C280000, // 01C4 CALL R10 0 + 0x78220000, // 01C5 JMPF R8 #01C7 + 0x982A8A08, // 01C6 SETIDX R10 K69 R8 + 0x8C2C133F, // 01C7 GETMET R11 R9 K63 + 0x5C341200, // 01C8 MOVE R13 R9 + 0x5C381400, // 01C9 MOVE R14 R10 + 0x5C3C0E00, // 01CA MOVE R15 R7 + 0x7C2C0800, // 01CB CALL R11 4 + 0x882C010B, // 01CC GETMBR R11 R0 K11 + 0x8C2C1750, // 01CD GETMET R11 R11 K80 + 0x5C340C00, // 01CE MOVE R13 R6 + 0x5C381400, // 01CF MOVE R14 R10 + 0x7C2C0600, // 01D0 CALL R11 3 + 0x8C280313, // 01D1 GETMET R10 R1 K19 + 0x5830004C, // 01D2 LDCONST R12 K76 + 0x7C280400, // 01D3 CALL R10 2 + 0x7002008A, // 01D4 JMP #0260 + 0x8C180305, // 01D5 GETMET R6 R1 K5 + 0x58200051, // 01D6 LDCONST R8 K81 + 0x7C180400, // 01D7 CALL R6 2 + 0x781A005D, // 01D8 JMPF R6 #0237 + 0x8C18030D, // 01D9 GETMET R6 R1 K13 + 0x58200052, // 01DA LDCONST R8 K82 + 0x7C180400, // 01DB CALL R6 2 + 0x4C1C0000, // 01DC LDNIL R7 + 0x1C1C0C07, // 01DD EQ R7 R6 R7 + 0x741E0001, // 01DE JMPT R7 #01E1 + 0x1C1C0D3A, // 01DF EQ R7 R6 K58 + 0x781E0000, // 01E0 JMPF R7 #01E2 + 0xB006A754, // 01E1 RAISE 1 K83 K84 + 0x581C0029, // 01E2 LDCONST R7 K41 + 0x60200008, // 01E3 GETGBL R8 G8 + 0x5C240E00, // 01E4 MOVE R9 R7 + 0x7C200200, // 01E5 CALL R8 1 + 0x8C240305, // 01E6 GETMET R9 R1 K5 + 0x002E9C08, // 01E7 ADD R11 K78 R8 + 0x7C240400, // 01E8 CALL R9 2 + 0x78260048, // 01E9 JMPF R9 #0233 + 0x8C24030D, // 01EA GETMET R9 R1 K13 + 0x002E9C08, // 01EB ADD R11 K78 R8 + 0x7C240400, // 01EC CALL R9 2 + 0x8C28030D, // 01ED GETMET R10 R1 K13 + 0x00321A08, // 01EE ADD R12 K13 R8 + 0x7C280400, // 01EF CALL R10 2 + 0x8C2C030D, // 01F0 GETMET R11 R1 K13 + 0x00368808, // 01F1 ADD R13 K68 R8 + 0x7C2C0400, // 01F2 CALL R11 2 + 0x2030133A, // 01F3 NE R12 R9 K58 + 0x78320037, // 01F4 JMPF R12 #022D + 0x8830010B, // 01F5 GETMBR R12 R0 K11 + 0x88301938, // 01F6 GETMBR R12 R12 K56 + 0x8C301935, // 01F7 GETMET R12 R12 K53 + 0x5C381200, // 01F8 MOVE R14 R9 + 0x7C300400, // 01F9 CALL R12 2 + 0x4C340000, // 01FA LDNIL R13 + 0x2034180D, // 01FB NE R13 R12 R13 + 0x7836002F, // 01FC JMPF R13 #022D + 0x60340013, // 01FD GETGBL R13 G19 + 0x7C340000, // 01FE CALL R13 0 + 0x9836A406, // 01FF SETIDX R13 K82 R6 + 0x98367209, // 0200 SETIDX R13 K57 R9 + 0x782E0000, // 0201 JMPF R11 #0203 + 0x98368A0B, // 0202 SETIDX R13 K69 R11 + 0x8C38193F, // 0203 GETMET R14 R12 K63 + 0x5C401800, // 0204 MOVE R16 R12 + 0x5C441A00, // 0205 MOVE R17 R13 + 0x5C481400, // 0206 MOVE R18 R10 + 0x7C380800, // 0207 CALL R14 4 + 0x50380000, // 0208 LDBOOL R14 0 0 + 0x603C0010, // 0209 GETGBL R15 G16 + 0x8840010B, // 020A GETMBR R16 R0 K11 + 0x88402137, // 020B GETMBR R16 R16 K55 + 0x7C3C0200, // 020C CALL R15 1 + 0xA802000B, // 020D EXBLK 0 #021A + 0x5C401E00, // 020E MOVE R16 R15 + 0x7C400000, // 020F CALL R16 0 + 0x8C440155, // 0210 GETMET R17 R0 K85 + 0x5C4C2000, // 0211 MOVE R19 R16 + 0x5C501A00, // 0212 MOVE R20 R13 + 0x7C440600, // 0213 CALL R17 3 + 0x78460001, // 0214 JMPF R17 #0217 + 0x50380200, // 0215 LDBOOL R14 1 0 + 0x70020000, // 0216 JMP #0218 + 0x7001FFF5, // 0217 JMP #020E + 0xA8040001, // 0218 EXBLK 1 1 + 0x70020002, // 0219 JMP #021D + 0x583C0049, // 021A LDCONST R15 K73 + 0xAC3C0200, // 021B CATCH R15 1 0 + 0xB0080000, // 021C RAISE 2 R0 R0 + 0x5C3C1C00, // 021D MOVE R15 R14 + 0x743E000D, // 021E JMPT R15 #022D + 0xB83E1000, // 021F GETNGBL R15 K8 + 0x60400018, // 0220 GETGBL R16 G24 + 0x58440056, // 0221 LDCONST R17 K86 + 0x5C480C00, // 0222 MOVE R18 R6 + 0x5C4C1200, // 0223 MOVE R19 R9 + 0x5C501400, // 0224 MOVE R20 R10 + 0x7C400800, // 0225 CALL R16 4 + 0x5844000A, // 0226 LDCONST R17 K10 + 0x7C3C0400, // 0227 CALL R15 2 + 0x883C010B, // 0228 GETMBR R15 R0 K11 + 0x8C3C1F50, // 0229 GETMET R15 R15 K80 + 0x5C441200, // 022A MOVE R17 R9 + 0x5C481A00, // 022B MOVE R18 R13 + 0x7C3C0600, // 022C CALL R15 3 + 0x001C0F2E, // 022D ADD R7 R7 K46 + 0x60300008, // 022E GETGBL R12 G8 + 0x5C340E00, // 022F MOVE R13 R7 + 0x7C300200, // 0230 CALL R12 1 + 0x5C201800, // 0231 MOVE R8 R12 + 0x7001FFB2, // 0232 JMP #01E6 + 0x8C240313, // 0233 GETMET R9 R1 K19 + 0x582C004C, // 0234 LDCONST R11 K76 + 0x7C240400, // 0235 CALL R9 2 + 0x70020028, // 0236 JMP #0260 + 0x4C180000, // 0237 LDNIL R6 + 0x601C0010, // 0238 GETGBL R7 G16 + 0x8C200333, // 0239 GETMET R8 R1 K51 + 0x7C200200, // 023A CALL R8 1 + 0x0420112E, // 023B SUB R8 R8 K46 + 0x40225208, // 023C CONNECT R8 K41 R8 + 0x7C1C0200, // 023D CALL R7 1 + 0xA8020013, // 023E EXBLK 0 #0253 + 0x5C200E00, // 023F MOVE R8 R7 + 0x7C200000, // 0240 CALL R8 0 + 0x8C240334, // 0241 GETMET R9 R1 K52 + 0x5C2C1000, // 0242 MOVE R11 R8 + 0x7C240400, // 0243 CALL R9 2 + 0x8C280535, // 0244 GETMET R10 R2 K53 + 0x5C301200, // 0245 MOVE R12 R9 + 0x58340057, // 0246 LDCONST R13 K87 + 0x7C280600, // 0247 CALL R10 3 + 0x1C281529, // 0248 EQ R10 R10 K41 + 0x782A0005, // 0249 JMPF R10 #0250 + 0x60280009, // 024A GETGBL R10 G9 + 0x402E1536, // 024B CONNECT R11 K10 K54 + 0x942C120B, // 024C GETIDX R11 R9 R11 + 0x7C280200, // 024D CALL R10 1 + 0x5C181400, // 024E MOVE R6 R10 + 0x70020000, // 024F JMP #0251 + 0x7001FFED, // 0250 JMP #023F + 0xA8040001, // 0251 EXBLK 1 1 + 0x70020002, // 0252 JMP #0256 + 0x581C0049, // 0253 LDCONST R7 K73 + 0xAC1C0200, // 0254 CATCH R7 1 0 + 0xB0080000, // 0255 RAISE 2 R0 R0 + 0x4C1C0000, // 0256 LDNIL R7 + 0x201C0C07, // 0257 NE R7 R6 R7 + 0x781E0006, // 0258 JMPF R7 #0260 + 0x881C010B, // 0259 GETMBR R7 R0 K11 + 0x8C1C0F58, // 025A GETMET R7 R7 K88 + 0x5C240C00, // 025B MOVE R9 R6 + 0x7C1C0400, // 025C CALL R7 2 + 0x8C1C0313, // 025D GETMET R7 R1 K19 + 0x5824004C, // 025E LDCONST R9 K76 + 0x7C1C0400, // 025F CALL R7 2 + 0x78160011, // 0260 JMPF R5 #0273 + 0x8C180359, // 0261 GETMET R6 R1 K89 + 0x5820005A, // 0262 LDCONST R8 K90 + 0x7C180400, // 0263 CALL R6 2 + 0x8C18035B, // 0264 GETMET R6 R1 K91 + 0x7C180200, // 0265 CALL R6 1 + 0x8C18035C, // 0266 GETMET R6 R1 K92 + 0x60200018, // 0267 GETGBL R8 G24 + 0x5824005D, // 0268 LDCONST R9 K93 + 0x8C28035E, // 0269 GETMET R10 R1 K94 + 0x5C300A00, // 026A MOVE R12 R5 + 0x7C280400, // 026B CALL R10 2 + 0x7C200400, // 026C CALL R8 2 + 0x7C180400, // 026D CALL R6 2 + 0x8C18035F, // 026E GETMET R6 R1 K95 + 0x88200360, // 026F GETMBR R8 R1 K96 + 0x7C180400, // 0270 CALL R6 2 + 0x8C180361, // 0271 GETMET R6 R1 K97 + 0x7C180200, // 0272 CALL R6 1 + 0xA8040001, // 0273 EXBLK 1 1 + 0x7002001C, // 0274 JMP #0292 + 0xAC180002, // 0275 CATCH R6 0 2 + 0x70020019, // 0276 JMP #0291 + 0xB8221000, // 0277 GETNGBL R8 K8 + 0x60240018, // 0278 GETGBL R9 G24 + 0x58280062, // 0279 LDCONST R10 K98 + 0x5C2C0C00, // 027A MOVE R11 R6 + 0x5C300E00, // 027B MOVE R12 R7 + 0x7C240600, // 027C CALL R9 3 + 0x58280063, // 027D LDCONST R10 K99 + 0x7C200400, // 027E CALL R8 2 + 0x8C200359, // 027F GETMET R8 R1 K89 + 0x5828005A, // 0280 LDCONST R10 K90 + 0x7C200400, // 0281 CALL R8 2 + 0x8C20035B, // 0282 GETMET R8 R1 K91 + 0x7C200200, // 0283 CALL R8 1 + 0x8C20035C, // 0284 GETMET R8 R1 K92 + 0x60280018, // 0285 GETGBL R10 G24 + 0x582C0064, // 0286 LDCONST R11 K100 + 0x5C300C00, // 0287 MOVE R12 R6 + 0x5C340E00, // 0288 MOVE R13 R7 + 0x7C280600, // 0289 CALL R10 3 + 0x7C200400, // 028A CALL R8 2 + 0x8C20035F, // 028B GETMET R8 R1 K95 + 0x88280360, // 028C GETMBR R10 R1 K96 + 0x7C200400, // 028D CALL R8 2 + 0x8C200361, // 028E GETMET R8 R1 K97 + 0x7C200200, // 028F CALL R8 1 + 0x70020000, // 0290 JMP #0292 + 0xB0080000, // 0291 RAISE 2 R0 R0 + 0x80000000, // 0292 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index 28b846893..d180fd809 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -135,7 +135,7 @@ be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ be_nested_proto( - 11, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -143,22 +143,21 @@ be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(get_fabric), /* K1 */ be_nested_str_weak(get_fabric_id), /* K2 */ be_nested_str_weak(copy), /* K3 */ be_nested_str_weak(reverse), /* K4 */ be_nested_str_weak(tohex), /* K5 */ be_nested_str_weak(get_admin_vendor_name), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(stop_basic_commissioning), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(stop_basic_commissioning), }), be_str_weak(start_commissioning_complete), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ + ( &(const binstruction[23]) { /* code */ 0x8C080300, // 0000 GETMET R2 R1 K0 0x7C080200, // 0001 CALL R2 1 0x8C0C0501, // 0002 GETMET R3 R2 K1 @@ -172,17 +171,16 @@ be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ 0x8C100505, // 000A GETMET R4 R2 K5 0x7C100200, // 000B CALL R4 1 0xB8160C00, // 000C GETNGBL R5 K6 - 0x8C140B07, // 000D GETMET R5 R5 K7 - 0x601C0018, // 000E GETGBL R7 G24 - 0x58200008, // 000F LDCONST R8 K8 - 0x5C240600, // 0010 MOVE R9 R3 - 0x5C280800, // 0011 MOVE R10 R4 - 0x7C1C0600, // 0012 CALL R7 3 - 0x58200009, // 0013 LDCONST R8 K9 - 0x7C140600, // 0014 CALL R5 3 - 0x8C14010A, // 0015 GETMET R5 R0 K10 - 0x7C140200, // 0016 CALL R5 1 - 0x80000000, // 0017 RET 0 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C0007, // 000E LDCONST R7 K7 + 0x5C200600, // 000F MOVE R8 R3 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C180600, // 0011 CALL R6 3 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x7C140400, // 0013 CALL R5 2 + 0x8C140109, // 0014 GETMET R5 R0 K9 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 }) ) ); @@ -195,7 +193,7 @@ be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ be_nested_proto( - 11, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -203,29 +201,28 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ + ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(json), /* K1 */ be_nested_str_weak(plugins_config), /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), - /* K6 */ be_const_int(3), - /* K7 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_nested_str_weak(plugins_persist), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(plugins), - /* K13 */ be_nested_str_weak(get_endpoint), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(clean_remotes), - /* K16 */ be_nested_str_weak(save_param), - /* K17 */ be_nested_str_weak(signal_endpoints_changed), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(plugins_persist), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(get_endpoint), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(clean_remotes), + /* K15 */ be_nested_str_weak(save_param), + /* K16 */ be_nested_str_weak(signal_endpoints_changed), }), be_str_weak(bridge_remove_endpoint), &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ + ( &(const binstruction[56]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x600C0008, // 0001 GETGBL R3 G8 0x5C100200, // 0002 MOVE R4 R1 @@ -236,54 +233,52 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ 0x8C180D02, // 0007 GETMET R6 R6 K2 0x5C200600, // 0008 MOVE R8 R3 0x7C180400, // 0009 CALL R6 2 - 0x741A0005, // 000A JMPT R6 #0011 + 0x741A0004, // 000A JMPT R6 #0010 0xB81A0600, // 000B GETNGBL R6 K3 - 0x8C180D04, // 000C GETMET R6 R6 K4 - 0x00220A03, // 000D ADD R8 K5 R3 - 0x58240006, // 000E LDCONST R9 K6 - 0x7C180600, // 000F CALL R6 3 - 0x80000C00, // 0010 RET 0 - 0xB81A0600, // 0011 GETNGBL R6 K3 - 0x8C180D04, // 0012 GETMET R6 R6 K4 - 0x60200018, // 0013 GETGBL R8 G24 - 0x58240007, // 0014 LDCONST R9 K7 - 0x5C280200, // 0015 MOVE R10 R1 - 0x7C200400, // 0016 CALL R8 2 - 0x58240008, // 0017 LDCONST R9 K8 - 0x7C180600, // 0018 CALL R6 3 - 0x88180101, // 0019 GETMBR R6 R0 K1 - 0x8C180D09, // 001A GETMET R6 R6 K9 - 0x5C200600, // 001B MOVE R8 R3 - 0x7C180400, // 001C CALL R6 2 - 0x50180200, // 001D LDBOOL R6 1 0 - 0x90021406, // 001E SETMBR R0 K10 R6 - 0x5818000B, // 001F LDCONST R6 K11 - 0x601C000C, // 0020 GETGBL R7 G12 - 0x8820010C, // 0021 GETMBR R8 R0 K12 - 0x7C1C0200, // 0022 CALL R7 1 - 0x141C0C07, // 0023 LT R7 R6 R7 - 0x781E000D, // 0024 JMPF R7 #0033 - 0x881C010C, // 0025 GETMBR R7 R0 K12 - 0x941C0E06, // 0026 GETIDX R7 R7 R6 - 0x8C1C0F0D, // 0027 GETMET R7 R7 K13 - 0x7C1C0200, // 0028 CALL R7 1 - 0x1C1C0207, // 0029 EQ R7 R1 R7 - 0x781E0005, // 002A JMPF R7 #0031 - 0x881C010C, // 002B GETMBR R7 R0 K12 - 0x8C1C0F09, // 002C GETMET R7 R7 K9 - 0x5C240C00, // 002D MOVE R9 R6 - 0x7C1C0400, // 002E CALL R7 2 - 0x70020002, // 002F JMP #0033 - 0x70020000, // 0030 JMP #0032 - 0x00180D0E, // 0031 ADD R6 R6 K14 - 0x7001FFEC, // 0032 JMP #0020 + 0x001E0803, // 000C ADD R7 K4 R3 + 0x58200005, // 000D LDCONST R8 K5 + 0x7C180400, // 000E CALL R6 2 + 0x80000C00, // 000F RET 0 + 0xB81A0600, // 0010 GETNGBL R6 K3 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x58200006, // 0012 LDCONST R8 K6 + 0x5C240200, // 0013 MOVE R9 R1 + 0x7C1C0400, // 0014 CALL R7 2 + 0x58200007, // 0015 LDCONST R8 K7 + 0x7C180400, // 0016 CALL R6 2 + 0x88180101, // 0017 GETMBR R6 R0 K1 + 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C180400, // 001A CALL R6 2 + 0x50180200, // 001B LDBOOL R6 1 0 + 0x90021206, // 001C SETMBR R0 K9 R6 + 0x5818000A, // 001D LDCONST R6 K10 + 0x601C000C, // 001E GETGBL R7 G12 + 0x8820010B, // 001F GETMBR R8 R0 K11 + 0x7C1C0200, // 0020 CALL R7 1 + 0x141C0C07, // 0021 LT R7 R6 R7 + 0x781E000D, // 0022 JMPF R7 #0031 + 0x881C010B, // 0023 GETMBR R7 R0 K11 + 0x941C0E06, // 0024 GETIDX R7 R7 R6 + 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 + 0x7C1C0200, // 0026 CALL R7 1 + 0x1C1C0207, // 0027 EQ R7 R1 R7 + 0x781E0005, // 0028 JMPF R7 #002F + 0x881C010B, // 0029 GETMBR R7 R0 K11 + 0x8C1C0F08, // 002A GETMET R7 R7 K8 + 0x5C240C00, // 002B MOVE R9 R6 + 0x7C1C0400, // 002C CALL R7 2 + 0x70020002, // 002D JMP #0031 + 0x70020000, // 002E JMP #0030 + 0x00180D0D, // 002F ADD R6 R6 K13 + 0x7001FFEC, // 0030 JMP #001E + 0x8C1C010E, // 0031 GETMET R7 R0 K14 + 0x7C1C0200, // 0032 CALL R7 1 0x8C1C010F, // 0033 GETMET R7 R0 K15 0x7C1C0200, // 0034 CALL R7 1 0x8C1C0110, // 0035 GETMET R7 R0 K16 0x7C1C0200, // 0036 CALL R7 1 - 0x8C1C0111, // 0037 GETMET R7 R0 K17 - 0x7C1C0200, // 0038 CALL R7 1 - 0x80000000, // 0039 RET 0 + 0x80000000, // 0037 RET 0 }) ) ); @@ -296,7 +291,7 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -304,113 +299,107 @@ be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ + ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), /* K1 */ be_nested_str_weak(mdns_pase_eth), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K5 */ be_nested_str_weak(_matterc), - /* K6 */ be_nested_str_weak(_udp), - /* K7 */ be_nested_str_weak(commissioning_instance_eth), - /* K8 */ be_nested_str_weak(hostname_eth), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(remove_service), - /* K13 */ be_nested_str_weak(mdns_pase_wifi), - /* K14 */ be_nested_str_weak(commissioning_instance_wifi), - /* K15 */ be_nested_str_weak(hostname_wifi), - /* K16 */ be_nested_str_weak(wifi), - /* K17 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K18 */ be_nested_str_weak(_X7C), - /* K19 */ be_const_int(2), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K4 */ be_nested_str_weak(_matterc), + /* K5 */ be_nested_str_weak(_udp), + /* K6 */ be_nested_str_weak(commissioning_instance_eth), + /* K7 */ be_nested_str_weak(hostname_eth), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K10 */ be_nested_str_weak(eth), + /* K11 */ be_nested_str_weak(remove_service), + /* K12 */ be_nested_str_weak(mdns_pase_wifi), + /* K13 */ be_nested_str_weak(commissioning_instance_wifi), + /* K14 */ be_nested_str_weak(hostname_wifi), + /* K15 */ be_nested_str_weak(wifi), + /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K17 */ be_nested_str_weak(_X7C), + /* K18 */ be_const_int(2), }), be_str_weak(mdns_remove_PASE), &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ + ( &(const binstruction[77]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xA802003D, // 0001 EXBLK 0 #0040 + 0xA8020039, // 0001 EXBLK 0 #003C 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A001B, // 0003 JMPF R2 #0020 + 0x780A0019, // 0003 JMPF R2 #001E 0xB80A0400, // 0004 GETNGBL R2 K2 - 0x8C080503, // 0005 GETMET R2 R2 K3 - 0x60100018, // 0006 GETGBL R4 G24 + 0x600C0018, // 0005 GETGBL R3 G24 + 0x58100003, // 0006 LDCONST R4 K3 0x58140004, // 0007 LDCONST R5 K4 0x58180005, // 0008 LDCONST R6 K5 - 0x581C0006, // 0009 LDCONST R7 K6 + 0x881C0106, // 0009 GETMBR R7 R0 K6 0x88200107, // 000A GETMBR R8 R0 K7 - 0x88240108, // 000B GETMBR R9 R0 K8 - 0x7C100A00, // 000C CALL R4 5 - 0x58140009, // 000D LDCONST R5 K9 - 0x7C080600, // 000E CALL R2 3 - 0xB80A0400, // 000F GETNGBL R2 K2 - 0x8C080503, // 0010 GETMET R2 R2 K3 - 0x60100018, // 0011 GETGBL R4 G24 - 0x5814000A, // 0012 LDCONST R5 K10 - 0x5818000B, // 0013 LDCONST R6 K11 - 0x881C0107, // 0014 GETMBR R7 R0 K7 - 0x7C100600, // 0015 CALL R4 3 - 0x58140009, // 0016 LDCONST R5 K9 - 0x7C080600, // 0017 CALL R2 3 - 0x50080000, // 0018 LDBOOL R2 0 0 - 0x90020202, // 0019 SETMBR R0 K1 R2 - 0x8C08030C, // 001A GETMET R2 R1 K12 - 0x58100005, // 001B LDCONST R4 K5 - 0x58140006, // 001C LDCONST R5 K6 - 0x88180107, // 001D GETMBR R6 R0 K7 - 0x881C0108, // 001E GETMBR R7 R0 K8 - 0x7C080A00, // 001F CALL R2 5 - 0x8808010D, // 0020 GETMBR R2 R0 K13 - 0x780A001B, // 0021 JMPF R2 #003E - 0xB80A0400, // 0022 GETNGBL R2 K2 - 0x8C080503, // 0023 GETMET R2 R2 K3 - 0x60100018, // 0024 GETGBL R4 G24 - 0x58140004, // 0025 LDCONST R5 K4 - 0x58180005, // 0026 LDCONST R6 K5 - 0x581C0006, // 0027 LDCONST R7 K6 - 0x8820010E, // 0028 GETMBR R8 R0 K14 - 0x8824010F, // 0029 GETMBR R9 R0 K15 - 0x7C100A00, // 002A CALL R4 5 - 0x58140009, // 002B LDCONST R5 K9 - 0x7C080600, // 002C CALL R2 3 - 0xB80A0400, // 002D GETNGBL R2 K2 - 0x8C080503, // 002E GETMET R2 R2 K3 - 0x60100018, // 002F GETGBL R4 G24 - 0x5814000A, // 0030 LDCONST R5 K10 - 0x58180010, // 0031 LDCONST R6 K16 - 0x881C010E, // 0032 GETMBR R7 R0 K14 - 0x7C100600, // 0033 CALL R4 3 - 0x58140009, // 0034 LDCONST R5 K9 - 0x7C080600, // 0035 CALL R2 3 - 0x50080000, // 0036 LDBOOL R2 0 0 - 0x90021A02, // 0037 SETMBR R0 K13 R2 - 0x8C08030C, // 0038 GETMET R2 R1 K12 - 0x58100005, // 0039 LDCONST R4 K5 - 0x58140006, // 003A LDCONST R5 K6 - 0x8818010E, // 003B GETMBR R6 R0 K14 - 0x881C010F, // 003C GETMBR R7 R0 K15 - 0x7C080A00, // 003D CALL R2 5 - 0xA8040001, // 003E EXBLK 1 1 - 0x70020010, // 003F JMP #0051 - 0xAC080002, // 0040 CATCH R2 0 2 - 0x7002000D, // 0041 JMP #0050 - 0xB8120400, // 0042 GETNGBL R4 K2 - 0x8C100903, // 0043 GETMET R4 R4 K3 + 0x7C0C0A00, // 000B CALL R3 5 + 0x58100008, // 000C LDCONST R4 K8 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0400, // 000E GETNGBL R2 K2 + 0x600C0018, // 000F GETGBL R3 G24 + 0x58100009, // 0010 LDCONST R4 K9 + 0x5814000A, // 0011 LDCONST R5 K10 + 0x88180106, // 0012 GETMBR R6 R0 K6 + 0x7C0C0600, // 0013 CALL R3 3 + 0x58100008, // 0014 LDCONST R4 K8 + 0x7C080400, // 0015 CALL R2 2 + 0x50080000, // 0016 LDBOOL R2 0 0 + 0x90020202, // 0017 SETMBR R0 K1 R2 + 0x8C08030B, // 0018 GETMET R2 R1 K11 + 0x58100004, // 0019 LDCONST R4 K4 + 0x58140005, // 001A LDCONST R5 K5 + 0x88180106, // 001B GETMBR R6 R0 K6 + 0x881C0107, // 001C GETMBR R7 R0 K7 + 0x7C080A00, // 001D CALL R2 5 + 0x8808010C, // 001E GETMBR R2 R0 K12 + 0x780A0019, // 001F JMPF R2 #003A + 0xB80A0400, // 0020 GETNGBL R2 K2 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100003, // 0022 LDCONST R4 K3 + 0x58140004, // 0023 LDCONST R5 K4 + 0x58180005, // 0024 LDCONST R6 K5 + 0x881C010D, // 0025 GETMBR R7 R0 K13 + 0x8820010E, // 0026 GETMBR R8 R0 K14 + 0x7C0C0A00, // 0027 CALL R3 5 + 0x58100008, // 0028 LDCONST R4 K8 + 0x7C080400, // 0029 CALL R2 2 + 0xB80A0400, // 002A GETNGBL R2 K2 + 0x600C0018, // 002B GETGBL R3 G24 + 0x58100009, // 002C LDCONST R4 K9 + 0x5814000F, // 002D LDCONST R5 K15 + 0x8818010D, // 002E GETMBR R6 R0 K13 + 0x7C0C0600, // 002F CALL R3 3 + 0x58100008, // 0030 LDCONST R4 K8 + 0x7C080400, // 0031 CALL R2 2 + 0x50080000, // 0032 LDBOOL R2 0 0 + 0x90021802, // 0033 SETMBR R0 K12 R2 + 0x8C08030B, // 0034 GETMET R2 R1 K11 + 0x58100004, // 0035 LDCONST R4 K4 + 0x58140005, // 0036 LDCONST R5 K5 + 0x8818010D, // 0037 GETMBR R6 R0 K13 + 0x881C010E, // 0038 GETMBR R7 R0 K14 + 0x7C080A00, // 0039 CALL R2 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC080002, // 003C CATCH R2 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8120400, // 003E GETNGBL R4 K2 + 0x60140008, // 003F GETGBL R5 G8 + 0x5C180400, // 0040 MOVE R6 R2 + 0x7C140200, // 0041 CALL R5 1 + 0x00162005, // 0042 ADD R5 K16 R5 + 0x00140B11, // 0043 ADD R5 R5 K17 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0400, // 0045 MOVE R7 R2 + 0x5C1C0600, // 0045 MOVE R7 R3 0x7C180200, // 0046 CALL R6 1 - 0x001A2206, // 0047 ADD R6 K17 R6 - 0x00180D12, // 0048 ADD R6 R6 K18 - 0x601C0008, // 0049 GETGBL R7 G8 - 0x5C200600, // 004A MOVE R8 R3 - 0x7C1C0200, // 004B CALL R7 1 - 0x00180C07, // 004C ADD R6 R6 R7 - 0x581C0013, // 004D LDCONST R7 K19 - 0x7C100600, // 004E CALL R4 3 - 0x70020000, // 004F JMP #0051 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x80000000, // 0051 RET 0 + 0x00140A06, // 0047 ADD R5 R5 R6 + 0x58180012, // 0048 LDCONST R6 K18 + 0x7C100400, // 0049 CALL R4 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 }) ) ); @@ -462,13 +451,13 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ }), be_str_weak(_mdns_announce_hostname), &be_const_str_solidified, - ( &(const binstruction[148]) { /* code */ + ( &(const binstruction[144]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0xA40E0200, // 0001 IMPORT R3 K1 0x8C100502, // 0002 GETMET R4 R2 K2 0x7C100200, // 0003 CALL R4 1 - 0xA802007A, // 0004 EXBLK 0 #0080 - 0x78060034, // 0005 JMPF R1 #003B + 0xA8020077, // 0004 EXBLK 0 #007D + 0x78060033, // 0005 JMPF R1 #003A 0xB8120600, // 0006 GETNGBL R4 K3 0x8C100904, // 0007 GETMET R4 R4 K4 0x7C100200, // 0008 CALL R4 1 @@ -501,116 +490,112 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ 0x5834000A, // 0023 LDCONST R13 K10 0x7C280600, // 0024 CALL R10 3 0x7C140A00, // 0025 CALL R5 5 - 0x70020012, // 0026 JMP #003A - 0xB8160600, // 0027 GETNGBL R5 K3 - 0x8C140B11, // 0028 GETMET R5 R5 K17 - 0x601C0018, // 0029 GETGBL R7 G24 - 0x58200012, // 002A LDCONST R8 K18 - 0x88240105, // 002B GETMBR R9 R0 K5 - 0x8C280907, // 002C GETMET R10 R4 K7 - 0x5830000F, // 002D LDCONST R12 K15 - 0x5834000A, // 002E LDCONST R13 K10 - 0x7C280600, // 002F CALL R10 3 - 0x7C1C0600, // 0030 CALL R7 3 - 0x58200013, // 0031 LDCONST R8 K19 - 0x7C140600, // 0032 CALL R5 3 - 0x8C14050E, // 0033 GETMET R5 R2 K14 - 0x881C0105, // 0034 GETMBR R7 R0 K5 - 0x8C200907, // 0035 GETMET R8 R4 K7 - 0x5828000F, // 0036 LDCONST R10 K15 - 0x582C000A, // 0037 LDCONST R11 K10 - 0x7C200600, // 0038 CALL R8 3 - 0x7C140600, // 0039 CALL R5 3 - 0x70020033, // 003A JMP #006F - 0xB8120600, // 003B GETNGBL R4 K3 - 0x8C100914, // 003C GETMET R4 R4 K20 - 0x7C100200, // 003D CALL R4 1 - 0x8C140706, // 003E GETMET R5 R3 K6 - 0x8C1C0907, // 003F GETMET R7 R4 K7 - 0x58240008, // 0040 LDCONST R9 K8 - 0x7C1C0400, // 0041 CALL R7 2 - 0x58200009, // 0042 LDCONST R8 K9 - 0x5824000A, // 0043 LDCONST R9 K10 - 0x7C140800, // 0044 CALL R5 4 - 0x90022A05, // 0045 SETMBR R0 K21 R5 - 0x8814010B, // 0046 GETMBR R5 R0 K11 - 0x78160003, // 0047 JMPF R5 #004C - 0x8C14090C, // 0048 GETMET R5 R4 K12 - 0x581C000D, // 0049 LDCONST R7 K13 - 0x7C140400, // 004A CALL R5 2 - 0x7416000F, // 004B JMPT R5 #005C - 0x8C14050E, // 004C GETMET R5 R2 K14 - 0x881C0115, // 004D GETMBR R7 R0 K21 - 0x8C200907, // 004E GETMET R8 R4 K7 - 0x5828000D, // 004F LDCONST R10 K13 - 0x582C000A, // 0050 LDCONST R11 K10 - 0x7C200600, // 0051 CALL R8 3 - 0x8C240907, // 0052 GETMET R9 R4 K7 - 0x582C000F, // 0053 LDCONST R11 K15 - 0x5830000A, // 0054 LDCONST R12 K10 - 0x7C240600, // 0055 CALL R9 3 - 0x8C280907, // 0056 GETMET R10 R4 K7 - 0x58300010, // 0057 LDCONST R12 K16 - 0x5834000A, // 0058 LDCONST R13 K10 - 0x7C280600, // 0059 CALL R10 3 - 0x7C140A00, // 005A CALL R5 5 - 0x70020012, // 005B JMP #006F - 0xB8160600, // 005C GETNGBL R5 K3 - 0x8C140B11, // 005D GETMET R5 R5 K17 - 0x601C0018, // 005E GETGBL R7 G24 - 0x58200012, // 005F LDCONST R8 K18 - 0x88240115, // 0060 GETMBR R9 R0 K21 - 0x8C280907, // 0061 GETMET R10 R4 K7 - 0x5830000F, // 0062 LDCONST R12 K15 - 0x5834000A, // 0063 LDCONST R13 K10 - 0x7C280600, // 0064 CALL R10 3 - 0x7C1C0600, // 0065 CALL R7 3 - 0x58200013, // 0066 LDCONST R8 K19 - 0x7C140600, // 0067 CALL R5 3 - 0x8C14050E, // 0068 GETMET R5 R2 K14 - 0x881C0115, // 0069 GETMBR R7 R0 K21 - 0x8C200907, // 006A GETMET R8 R4 K7 - 0x5828000F, // 006B LDCONST R10 K15 - 0x582C000A, // 006C LDCONST R11 K10 - 0x7C200600, // 006D CALL R8 3 - 0x7C140600, // 006E CALL R5 3 - 0xB8120600, // 006F GETNGBL R4 K3 - 0x8C100911, // 0070 GETMET R4 R4 K17 - 0x60180018, // 0071 GETGBL R6 G24 - 0x581C0016, // 0072 LDCONST R7 K22 - 0x78060001, // 0073 JMPF R1 #0076 - 0x58200004, // 0074 LDCONST R8 K4 - 0x70020000, // 0075 JMP #0077 - 0x58200014, // 0076 LDCONST R8 K20 - 0x78060001, // 0077 JMPF R1 #007A - 0x88240105, // 0078 GETMBR R9 R0 K5 - 0x70020000, // 0079 JMP #007B - 0x88240115, // 007A GETMBR R9 R0 K21 - 0x7C180600, // 007B CALL R6 3 - 0x581C0013, // 007C LDCONST R7 K19 - 0x7C100600, // 007D CALL R4 3 - 0xA8040001, // 007E EXBLK 1 1 - 0x70020010, // 007F JMP #0091 - 0xAC100002, // 0080 CATCH R4 0 2 - 0x7002000D, // 0081 JMP #0090 - 0xB81A0600, // 0082 GETNGBL R6 K3 - 0x8C180D11, // 0083 GETMET R6 R6 K17 - 0x60200008, // 0084 GETGBL R8 G8 - 0x5C240800, // 0085 MOVE R9 R4 - 0x7C200200, // 0086 CALL R8 1 - 0x00222E08, // 0087 ADD R8 K23 R8 - 0x00201118, // 0088 ADD R8 R8 K24 - 0x60240008, // 0089 GETGBL R9 G8 - 0x5C280A00, // 008A MOVE R10 R5 - 0x7C240200, // 008B CALL R9 1 - 0x00201009, // 008C ADD R8 R8 R9 - 0x58240019, // 008D LDCONST R9 K25 - 0x7C180600, // 008E CALL R6 3 - 0x70020000, // 008F JMP #0091 - 0xB0080000, // 0090 RAISE 2 R0 R0 - 0x8C10011A, // 0091 GETMET R4 R0 K26 - 0x7C100200, // 0092 CALL R4 1 - 0x80000000, // 0093 RET 0 + 0x70020011, // 0026 JMP #0039 + 0xB8162200, // 0027 GETNGBL R5 K17 + 0x60180018, // 0028 GETGBL R6 G24 + 0x581C0012, // 0029 LDCONST R7 K18 + 0x88200105, // 002A GETMBR R8 R0 K5 + 0x8C240907, // 002B GETMET R9 R4 K7 + 0x582C000F, // 002C LDCONST R11 K15 + 0x5830000A, // 002D LDCONST R12 K10 + 0x7C240600, // 002E CALL R9 3 + 0x7C180600, // 002F CALL R6 3 + 0x581C0013, // 0030 LDCONST R7 K19 + 0x7C140400, // 0031 CALL R5 2 + 0x8C14050E, // 0032 GETMET R5 R2 K14 + 0x881C0105, // 0033 GETMBR R7 R0 K5 + 0x8C200907, // 0034 GETMET R8 R4 K7 + 0x5828000F, // 0035 LDCONST R10 K15 + 0x582C000A, // 0036 LDCONST R11 K10 + 0x7C200600, // 0037 CALL R8 3 + 0x7C140600, // 0038 CALL R5 3 + 0x70020032, // 0039 JMP #006D + 0xB8120600, // 003A GETNGBL R4 K3 + 0x8C100914, // 003B GETMET R4 R4 K20 + 0x7C100200, // 003C CALL R4 1 + 0x8C140706, // 003D GETMET R5 R3 K6 + 0x8C1C0907, // 003E GETMET R7 R4 K7 + 0x58240008, // 003F LDCONST R9 K8 + 0x7C1C0400, // 0040 CALL R7 2 + 0x58200009, // 0041 LDCONST R8 K9 + 0x5824000A, // 0042 LDCONST R9 K10 + 0x7C140800, // 0043 CALL R5 4 + 0x90022A05, // 0044 SETMBR R0 K21 R5 + 0x8814010B, // 0045 GETMBR R5 R0 K11 + 0x78160003, // 0046 JMPF R5 #004B + 0x8C14090C, // 0047 GETMET R5 R4 K12 + 0x581C000D, // 0048 LDCONST R7 K13 + 0x7C140400, // 0049 CALL R5 2 + 0x7416000F, // 004A JMPT R5 #005B + 0x8C14050E, // 004B GETMET R5 R2 K14 + 0x881C0115, // 004C GETMBR R7 R0 K21 + 0x8C200907, // 004D GETMET R8 R4 K7 + 0x5828000D, // 004E LDCONST R10 K13 + 0x582C000A, // 004F LDCONST R11 K10 + 0x7C200600, // 0050 CALL R8 3 + 0x8C240907, // 0051 GETMET R9 R4 K7 + 0x582C000F, // 0052 LDCONST R11 K15 + 0x5830000A, // 0053 LDCONST R12 K10 + 0x7C240600, // 0054 CALL R9 3 + 0x8C280907, // 0055 GETMET R10 R4 K7 + 0x58300010, // 0056 LDCONST R12 K16 + 0x5834000A, // 0057 LDCONST R13 K10 + 0x7C280600, // 0058 CALL R10 3 + 0x7C140A00, // 0059 CALL R5 5 + 0x70020011, // 005A JMP #006D + 0xB8162200, // 005B GETNGBL R5 K17 + 0x60180018, // 005C GETGBL R6 G24 + 0x581C0012, // 005D LDCONST R7 K18 + 0x88200115, // 005E GETMBR R8 R0 K21 + 0x8C240907, // 005F GETMET R9 R4 K7 + 0x582C000F, // 0060 LDCONST R11 K15 + 0x5830000A, // 0061 LDCONST R12 K10 + 0x7C240600, // 0062 CALL R9 3 + 0x7C180600, // 0063 CALL R6 3 + 0x581C0013, // 0064 LDCONST R7 K19 + 0x7C140400, // 0065 CALL R5 2 + 0x8C14050E, // 0066 GETMET R5 R2 K14 + 0x881C0115, // 0067 GETMBR R7 R0 K21 + 0x8C200907, // 0068 GETMET R8 R4 K7 + 0x5828000F, // 0069 LDCONST R10 K15 + 0x582C000A, // 006A LDCONST R11 K10 + 0x7C200600, // 006B CALL R8 3 + 0x7C140600, // 006C CALL R5 3 + 0xB8122200, // 006D GETNGBL R4 K17 + 0x60140018, // 006E GETGBL R5 G24 + 0x58180016, // 006F LDCONST R6 K22 + 0x78060001, // 0070 JMPF R1 #0073 + 0x581C0004, // 0071 LDCONST R7 K4 + 0x70020000, // 0072 JMP #0074 + 0x581C0014, // 0073 LDCONST R7 K20 + 0x78060001, // 0074 JMPF R1 #0077 + 0x88200105, // 0075 GETMBR R8 R0 K5 + 0x70020000, // 0076 JMP #0078 + 0x88200115, // 0077 GETMBR R8 R0 K21 + 0x7C140600, // 0078 CALL R5 3 + 0x58180013, // 0079 LDCONST R6 K19 + 0x7C100400, // 007A CALL R4 2 + 0xA8040001, // 007B EXBLK 1 1 + 0x7002000F, // 007C JMP #008D + 0xAC100002, // 007D CATCH R4 0 2 + 0x7002000C, // 007E JMP #008C + 0xB81A2200, // 007F GETNGBL R6 K17 + 0x601C0008, // 0080 GETGBL R7 G8 + 0x5C200800, // 0081 MOVE R8 R4 + 0x7C1C0200, // 0082 CALL R7 1 + 0x001E2E07, // 0083 ADD R7 K23 R7 + 0x001C0F18, // 0084 ADD R7 R7 K24 + 0x60200008, // 0085 GETGBL R8 G8 + 0x5C240A00, // 0086 MOVE R9 R5 + 0x7C200200, // 0087 CALL R8 1 + 0x001C0E08, // 0088 ADD R7 R7 R8 + 0x58200019, // 0089 LDCONST R8 K25 + 0x7C180400, // 008A CALL R6 2 + 0x70020000, // 008B JMP #008D + 0xB0080000, // 008C RAISE 2 R0 R0 + 0x8C10011A, // 008D GETMET R4 R0 K26 + 0x7C100200, // 008E CALL R4 1 + 0x80000000, // 008F RET 0 }) ) ); @@ -847,7 +832,7 @@ be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ be_nested_proto( - 17, /* nstack */ + 16, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -855,102 +840,99 @@ be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ + ( &(const bvalue[20]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_classes), /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K5 */ be_nested_str_weak(_X27_X20skipping), - /* K6 */ be_const_int(3), - /* K7 */ be_nested_str_weak(next_ep), - /* K8 */ be_nested_str_weak(plugins), - /* K9 */ be_nested_str_weak(push), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(keys), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K14 */ be_nested_str_weak(conf_to_log), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(plugins_config), - /* K17 */ be_nested_str_weak(plugins_persist), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(save_param), - /* K20 */ be_nested_str_weak(signal_endpoints_changed), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K4 */ be_nested_str_weak(_X27_X20skipping), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(next_ep), + /* K7 */ be_nested_str_weak(plugins), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(type), + /* K10 */ be_nested_str_weak(keys), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K13 */ be_nested_str_weak(conf_to_log), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_persist), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(save_param), + /* K19 */ be_nested_str_weak(signal_endpoints_changed), }), be_str_weak(bridge_add_endpoint), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ + ( &(const binstruction[68]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x4C100000, // 0004 LDNIL R4 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120009, // 0006 JMPF R4 #0011 + 0x78120008, // 0006 JMPF R4 #0010 0xB8120400, // 0007 GETNGBL R4 K2 - 0x8C100903, // 0008 GETMET R4 R4 K3 - 0x60180008, // 0009 GETGBL R6 G8 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x7C180200, // 000B CALL R6 1 - 0x001A0806, // 000C ADD R6 K4 R6 - 0x00180D05, // 000D ADD R6 R6 K5 - 0x581C0006, // 000E LDCONST R7 K6 - 0x7C100600, // 000F CALL R4 3 - 0x80000800, // 0010 RET 0 - 0x88100107, // 0011 GETMBR R4 R0 K7 - 0x60140008, // 0012 GETGBL R5 G8 - 0x5C180800, // 0013 MOVE R6 R4 - 0x7C140200, // 0014 CALL R5 1 - 0x5C180600, // 0015 MOVE R6 R3 - 0x5C1C0000, // 0016 MOVE R7 R0 - 0x5C200800, // 0017 MOVE R8 R4 - 0x5C240400, // 0018 MOVE R9 R2 - 0x7C180600, // 0019 CALL R6 3 - 0x881C0108, // 001A GETMBR R7 R0 K8 - 0x8C1C0F09, // 001B GETMET R7 R7 K9 - 0x5C240C00, // 001C MOVE R9 R6 - 0x7C1C0400, // 001D CALL R7 2 - 0x601C0013, // 001E GETGBL R7 G19 - 0x7C1C0000, // 001F CALL R7 0 - 0x981E1401, // 0020 SETIDX R7 K10 R1 - 0x60200010, // 0021 GETGBL R8 G16 - 0x8C24050B, // 0022 GETMET R9 R2 K11 - 0x7C240200, // 0023 CALL R9 1 - 0x7C200200, // 0024 CALL R8 1 - 0xA8020004, // 0025 EXBLK 0 #002B - 0x5C241000, // 0026 MOVE R9 R8 - 0x7C240000, // 0027 CALL R9 0 - 0x94280409, // 0028 GETIDX R10 R2 R9 - 0x981C120A, // 0029 SETIDX R7 R9 R10 - 0x7001FFFA, // 002A JMP #0026 - 0x5820000C, // 002B LDCONST R8 K12 - 0xAC200200, // 002C CATCH R8 1 0 - 0xB0080000, // 002D RAISE 2 R0 R0 - 0xB8220400, // 002E GETNGBL R8 K2 - 0x8C201103, // 002F GETMET R8 R8 K3 - 0x60280018, // 0030 GETGBL R10 G24 - 0x582C000D, // 0031 LDCONST R11 K13 - 0x5C300800, // 0032 MOVE R12 R4 - 0x5C340200, // 0033 MOVE R13 R1 - 0x8C38010E, // 0034 GETMET R14 R0 K14 - 0x5C400400, // 0035 MOVE R16 R2 - 0x7C380400, // 0036 CALL R14 2 - 0x7C280800, // 0037 CALL R10 4 - 0x582C000F, // 0038 LDCONST R11 K15 - 0x7C200600, // 0039 CALL R8 3 - 0x88200110, // 003A GETMBR R8 R0 K16 - 0x98200A07, // 003B SETIDX R8 R5 R7 - 0x50200200, // 003C LDBOOL R8 1 0 - 0x90022208, // 003D SETMBR R0 K17 R8 - 0x88200107, // 003E GETMBR R8 R0 K7 - 0x00201112, // 003F ADD R8 R8 K18 - 0x90020E08, // 0040 SETMBR R0 K7 R8 + 0x60140008, // 0008 GETGBL R5 G8 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C140200, // 000A CALL R5 1 + 0x00160605, // 000B ADD R5 K3 R5 + 0x00140B04, // 000C ADD R5 R5 K4 + 0x58180005, // 000D LDCONST R6 K5 + 0x7C100400, // 000E CALL R4 2 + 0x80000800, // 000F RET 0 + 0x88100106, // 0010 GETMBR R4 R0 K6 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x5C180600, // 0014 MOVE R6 R3 + 0x5C1C0000, // 0015 MOVE R7 R0 + 0x5C200800, // 0016 MOVE R8 R4 + 0x5C240400, // 0017 MOVE R9 R2 + 0x7C180600, // 0018 CALL R6 3 + 0x881C0107, // 0019 GETMBR R7 R0 K7 + 0x8C1C0F08, // 001A GETMET R7 R7 K8 + 0x5C240C00, // 001B MOVE R9 R6 + 0x7C1C0400, // 001C CALL R7 2 + 0x601C0013, // 001D GETGBL R7 G19 + 0x7C1C0000, // 001E CALL R7 0 + 0x981E1201, // 001F SETIDX R7 K9 R1 + 0x60200010, // 0020 GETGBL R8 G16 + 0x8C24050A, // 0021 GETMET R9 R2 K10 + 0x7C240200, // 0022 CALL R9 1 + 0x7C200200, // 0023 CALL R8 1 + 0xA8020004, // 0024 EXBLK 0 #002A + 0x5C241000, // 0025 MOVE R9 R8 + 0x7C240000, // 0026 CALL R9 0 + 0x94280409, // 0027 GETIDX R10 R2 R9 + 0x981C120A, // 0028 SETIDX R7 R9 R10 + 0x7001FFFA, // 0029 JMP #0025 + 0x5820000B, // 002A LDCONST R8 K11 + 0xAC200200, // 002B CATCH R8 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0xB8220400, // 002D GETNGBL R8 K2 + 0x60240018, // 002E GETGBL R9 G24 + 0x5828000C, // 002F LDCONST R10 K12 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300200, // 0031 MOVE R12 R1 + 0x8C34010D, // 0032 GETMET R13 R0 K13 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C340400, // 0034 CALL R13 2 + 0x7C240800, // 0035 CALL R9 4 + 0x5828000E, // 0036 LDCONST R10 K14 + 0x7C200400, // 0037 CALL R8 2 + 0x8820010F, // 0038 GETMBR R8 R0 K15 + 0x98200A07, // 0039 SETIDX R8 R5 R7 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x90022008, // 003B SETMBR R0 K16 R8 + 0x88200106, // 003C GETMBR R8 R0 K6 + 0x00201111, // 003D ADD R8 R8 K17 + 0x90020C08, // 003E SETMBR R0 K6 R8 + 0x8C200112, // 003F GETMET R8 R0 K18 + 0x7C200200, // 0040 CALL R8 1 0x8C200113, // 0041 GETMET R8 R0 K19 0x7C200200, // 0042 CALL R8 1 - 0x8C200114, // 0043 GETMET R8 R0 K20 - 0x7C200200, // 0044 CALL R8 1 - 0x80040800, // 0045 RET 1 R4 + 0x80040800, // 0043 RET 1 R4 }) ) ); @@ -1192,7 +1174,7 @@ be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ be_nested_proto( - 20, /* nstack */ + 19, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1242,7 +1224,7 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ }), be_str_weak(autoconf_device_map), &be_const_str_solidified, - ( &(const binstruction[199]) { /* code */ + ( &(const binstruction[196]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x60080013, // 0001 GETGBL R2 G19 0x7C080000, // 0002 CALL R2 0 @@ -1299,149 +1281,146 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ 0x7C1C0600, // 0035 CALL R7 3 0x60200012, // 0036 GETGBL R8 G18 0x7C200000, // 0037 CALL R8 0 - 0xB8261E00, // 0038 GETNGBL R9 K15 - 0x8C241312, // 0039 GETMET R9 R9 K18 - 0x602C0008, // 003A GETGBL R11 G8 - 0x5C300E00, // 003B MOVE R12 R7 - 0x7C2C0200, // 003C CALL R11 1 - 0x002E260B, // 003D ADD R11 K19 R11 - 0x58300014, // 003E LDCONST R12 K20 - 0x7C240600, // 003F CALL R9 3 - 0x4C240000, // 0040 LDNIL R9 - 0x20240E09, // 0041 NE R9 R7 R9 - 0x7826004F, // 0042 JMPF R9 #0093 - 0x8C240F15, // 0043 GETMET R9 R7 K21 - 0x582C0016, // 0044 LDCONST R11 K22 - 0x7C240400, // 0045 CALL R9 2 - 0x7826004B, // 0046 JMPF R9 #0093 - 0x941C0F16, // 0047 GETIDX R7 R7 K22 - 0x58240008, // 0048 LDCONST R9 K8 - 0x50280200, // 0049 LDBOOL R10 1 0 - 0x782A0047, // 004A JMPF R10 #0093 - 0x60280008, // 004B GETGBL R10 G8 - 0x5C2C1200, // 004C MOVE R11 R9 - 0x7C280200, // 004D CALL R10 1 - 0x002A2E0A, // 004E ADD R10 K23 R10 - 0x8C2C0F15, // 004F GETMET R11 R7 K21 - 0x5C341400, // 0050 MOVE R13 R10 - 0x7C2C0400, // 0051 CALL R11 2 - 0x742E0000, // 0052 JMPT R11 #0054 - 0x7002003E, // 0053 JMP #0093 - 0x942C0E0A, // 0054 GETIDX R11 R7 R10 - 0xB8321E00, // 0055 GETNGBL R12 K15 - 0x8C301912, // 0056 GETMET R12 R12 K18 - 0x60380018, // 0057 GETGBL R14 G24 - 0x583C0018, // 0058 LDCONST R15 K24 - 0x5C401400, // 0059 MOVE R16 R10 - 0x60440008, // 005A GETGBL R17 G8 - 0x5C481600, // 005B MOVE R18 R11 - 0x7C440200, // 005C CALL R17 1 - 0x7C380600, // 005D CALL R14 3 - 0x583C0014, // 005E LDCONST R15 K20 - 0x7C300600, // 005F CALL R12 3 - 0x8C301705, // 0060 GETMET R12 R11 K5 - 0x58380019, // 0061 LDCONST R14 K25 - 0x543DFFFE, // 0062 LDINT R15 -1 - 0x7C300600, // 0063 CALL R12 3 - 0x8C341705, // 0064 GETMET R13 R11 K5 - 0x583C001A, // 0065 LDCONST R15 K26 - 0x5441FFFE, // 0066 LDINT R16 -1 - 0x7C340600, // 0067 CALL R13 3 - 0x24381908, // 0068 GT R14 R12 K8 - 0x783A0002, // 0069 JMPF R14 #006D - 0x8C38111B, // 006A GETMET R14 R8 K27 - 0x04401909, // 006B SUB R16 R12 K9 - 0x7C380400, // 006C CALL R14 2 - 0x24381B08, // 006D GT R14 R13 K8 - 0x783A0002, // 006E JMPF R14 #0072 - 0x8C38111B, // 006F GETMET R14 R8 K27 - 0x04401B09, // 0070 SUB R16 R13 K9 - 0x7C380400, // 0071 CALL R14 2 - 0xB83A1E00, // 0072 GETNGBL R14 K15 - 0x8C381D12, // 0073 GETMET R14 R14 K18 - 0x60400018, // 0074 GETGBL R16 G24 - 0x5844001C, // 0075 LDCONST R17 K28 - 0x5C481800, // 0076 MOVE R18 R12 - 0x5C4C1A00, // 0077 MOVE R19 R13 - 0x7C400600, // 0078 CALL R16 3 - 0x58440014, // 0079 LDCONST R17 K20 - 0x7C380600, // 007A CALL R14 3 - 0x8C381705, // 007B GETMET R14 R11 K5 - 0x5840001D, // 007C LDCONST R16 K29 - 0x7C380400, // 007D CALL R14 2 - 0x783A0002, // 007E JMPF R14 #0082 - 0x943C1D0C, // 007F GETIDX R15 R14 K12 - 0x243C1F08, // 0080 GT R15 R15 K8 - 0x743E0000, // 0081 JMPT R15 #0083 - 0x503C0001, // 0082 LDBOOL R15 0 1 - 0x503C0200, // 0083 LDBOOL R15 1 0 - 0x60400008, // 0084 GETGBL R16 G8 - 0x5C440600, // 0085 MOVE R17 R3 - 0x7C400200, // 0086 CALL R16 1 - 0x60440013, // 0087 GETGBL R17 G19 - 0x7C440000, // 0088 CALL R17 0 - 0x783E0001, // 0089 JMPF R15 #008C - 0x5848001E, // 008A LDCONST R18 K30 - 0x70020000, // 008B JMP #008D - 0x5848001F, // 008C LDCONST R18 K31 - 0x98461412, // 008D SETIDX R17 K10 R18 - 0x98463E09, // 008E SETIDX R17 K31 R9 - 0x98082011, // 008F SETIDX R2 R16 R17 - 0x000C0709, // 0090 ADD R3 R3 K9 - 0x00241309, // 0091 ADD R9 R9 K9 - 0x7001FFB5, // 0092 JMP #0049 - 0x6024000C, // 0093 GETGBL R9 G12 - 0xB82A1E00, // 0094 GETNGBL R10 K15 - 0x8C281520, // 0095 GETMET R10 R10 K32 - 0x7C280200, // 0096 CALL R10 1 - 0x7C240200, // 0097 CALL R9 1 - 0x58280008, // 0098 LDCONST R10 K8 - 0x78120000, // 0099 JMPF R4 #009B - 0x04241309, // 009A SUB R9 R9 K9 - 0x142C1409, // 009B LT R11 R10 R9 - 0x782E0011, // 009C JMPF R11 #00AF - 0x8C2C1105, // 009D GETMET R11 R8 K5 - 0x5C341400, // 009E MOVE R13 R10 - 0x7C2C0400, // 009F CALL R11 2 - 0x4C300000, // 00A0 LDNIL R12 - 0x1C2C160C, // 00A1 EQ R11 R11 R12 - 0x782E0009, // 00A2 JMPF R11 #00AD - 0x602C0008, // 00A3 GETGBL R11 G8 - 0x5C300600, // 00A4 MOVE R12 R3 - 0x7C2C0200, // 00A5 CALL R11 1 - 0x60300013, // 00A6 GETGBL R12 G19 - 0x7C300000, // 00A7 CALL R12 0 - 0x98321521, // 00A8 SETIDX R12 K10 K33 - 0x00341509, // 00A9 ADD R13 R10 K9 - 0x9832420D, // 00AA SETIDX R12 K33 R13 - 0x9808160C, // 00AB SETIDX R2 R11 R12 - 0x000C0709, // 00AC ADD R3 R3 K9 - 0x00281509, // 00AD ADD R10 R10 K9 - 0x7001FFEB, // 00AE JMP #009B - 0x8C2C0322, // 00AF GETMET R11 R1 K34 - 0xB8361E00, // 00B0 GETNGBL R13 K15 - 0x8C341B23, // 00B1 GETMET R13 R13 K35 - 0x7C340200, // 00B2 CALL R13 1 - 0x7C2C0400, // 00B3 CALL R11 2 - 0x8C300124, // 00B4 GETMET R12 R0 K36 - 0x5C381600, // 00B5 MOVE R14 R11 - 0x7C300400, // 00B6 CALL R12 2 - 0x60340010, // 00B7 GETGBL R13 G16 - 0x5C381800, // 00B8 MOVE R14 R12 - 0x7C340200, // 00B9 CALL R13 1 - 0xA8020007, // 00BA EXBLK 0 #00C3 - 0x5C381A00, // 00BB MOVE R14 R13 - 0x7C380000, // 00BC CALL R14 0 - 0x603C0008, // 00BD GETGBL R15 G8 - 0x5C400600, // 00BE MOVE R16 R3 - 0x7C3C0200, // 00BF CALL R15 1 - 0x98081E0E, // 00C0 SETIDX R2 R15 R14 - 0x000C0709, // 00C1 ADD R3 R3 K9 - 0x7001FFF7, // 00C2 JMP #00BB - 0x58340025, // 00C3 LDCONST R13 K37 - 0xAC340200, // 00C4 CATCH R13 1 0 - 0xB0080000, // 00C5 RAISE 2 R0 R0 - 0x80040400, // 00C6 RET 1 R2 + 0xB8262400, // 0038 GETNGBL R9 K18 + 0x60280008, // 0039 GETGBL R10 G8 + 0x5C2C0E00, // 003A MOVE R11 R7 + 0x7C280200, // 003B CALL R10 1 + 0x002A260A, // 003C ADD R10 K19 R10 + 0x582C0014, // 003D LDCONST R11 K20 + 0x7C240400, // 003E CALL R9 2 + 0x4C240000, // 003F LDNIL R9 + 0x20240E09, // 0040 NE R9 R7 R9 + 0x7826004D, // 0041 JMPF R9 #0090 + 0x8C240F15, // 0042 GETMET R9 R7 K21 + 0x582C0016, // 0043 LDCONST R11 K22 + 0x7C240400, // 0044 CALL R9 2 + 0x78260049, // 0045 JMPF R9 #0090 + 0x941C0F16, // 0046 GETIDX R7 R7 K22 + 0x58240008, // 0047 LDCONST R9 K8 + 0x50280200, // 0048 LDBOOL R10 1 0 + 0x782A0045, // 0049 JMPF R10 #0090 + 0x60280008, // 004A GETGBL R10 G8 + 0x5C2C1200, // 004B MOVE R11 R9 + 0x7C280200, // 004C CALL R10 1 + 0x002A2E0A, // 004D ADD R10 K23 R10 + 0x8C2C0F15, // 004E GETMET R11 R7 K21 + 0x5C341400, // 004F MOVE R13 R10 + 0x7C2C0400, // 0050 CALL R11 2 + 0x742E0000, // 0051 JMPT R11 #0053 + 0x7002003C, // 0052 JMP #0090 + 0x942C0E0A, // 0053 GETIDX R11 R7 R10 + 0xB8322400, // 0054 GETNGBL R12 K18 + 0x60340018, // 0055 GETGBL R13 G24 + 0x58380018, // 0056 LDCONST R14 K24 + 0x5C3C1400, // 0057 MOVE R15 R10 + 0x60400008, // 0058 GETGBL R16 G8 + 0x5C441600, // 0059 MOVE R17 R11 + 0x7C400200, // 005A CALL R16 1 + 0x7C340600, // 005B CALL R13 3 + 0x58380014, // 005C LDCONST R14 K20 + 0x7C300400, // 005D CALL R12 2 + 0x8C301705, // 005E GETMET R12 R11 K5 + 0x58380019, // 005F LDCONST R14 K25 + 0x543DFFFE, // 0060 LDINT R15 -1 + 0x7C300600, // 0061 CALL R12 3 + 0x8C341705, // 0062 GETMET R13 R11 K5 + 0x583C001A, // 0063 LDCONST R15 K26 + 0x5441FFFE, // 0064 LDINT R16 -1 + 0x7C340600, // 0065 CALL R13 3 + 0x24381908, // 0066 GT R14 R12 K8 + 0x783A0002, // 0067 JMPF R14 #006B + 0x8C38111B, // 0068 GETMET R14 R8 K27 + 0x04401909, // 0069 SUB R16 R12 K9 + 0x7C380400, // 006A CALL R14 2 + 0x24381B08, // 006B GT R14 R13 K8 + 0x783A0002, // 006C JMPF R14 #0070 + 0x8C38111B, // 006D GETMET R14 R8 K27 + 0x04401B09, // 006E SUB R16 R13 K9 + 0x7C380400, // 006F CALL R14 2 + 0xB83A2400, // 0070 GETNGBL R14 K18 + 0x603C0018, // 0071 GETGBL R15 G24 + 0x5840001C, // 0072 LDCONST R16 K28 + 0x5C441800, // 0073 MOVE R17 R12 + 0x5C481A00, // 0074 MOVE R18 R13 + 0x7C3C0600, // 0075 CALL R15 3 + 0x58400014, // 0076 LDCONST R16 K20 + 0x7C380400, // 0077 CALL R14 2 + 0x8C381705, // 0078 GETMET R14 R11 K5 + 0x5840001D, // 0079 LDCONST R16 K29 + 0x7C380400, // 007A CALL R14 2 + 0x783A0002, // 007B JMPF R14 #007F + 0x943C1D0C, // 007C GETIDX R15 R14 K12 + 0x243C1F08, // 007D GT R15 R15 K8 + 0x743E0000, // 007E JMPT R15 #0080 + 0x503C0001, // 007F LDBOOL R15 0 1 + 0x503C0200, // 0080 LDBOOL R15 1 0 + 0x60400008, // 0081 GETGBL R16 G8 + 0x5C440600, // 0082 MOVE R17 R3 + 0x7C400200, // 0083 CALL R16 1 + 0x60440013, // 0084 GETGBL R17 G19 + 0x7C440000, // 0085 CALL R17 0 + 0x783E0001, // 0086 JMPF R15 #0089 + 0x5848001E, // 0087 LDCONST R18 K30 + 0x70020000, // 0088 JMP #008A + 0x5848001F, // 0089 LDCONST R18 K31 + 0x98461412, // 008A SETIDX R17 K10 R18 + 0x98463E09, // 008B SETIDX R17 K31 R9 + 0x98082011, // 008C SETIDX R2 R16 R17 + 0x000C0709, // 008D ADD R3 R3 K9 + 0x00241309, // 008E ADD R9 R9 K9 + 0x7001FFB7, // 008F JMP #0048 + 0x6024000C, // 0090 GETGBL R9 G12 + 0xB82A1E00, // 0091 GETNGBL R10 K15 + 0x8C281520, // 0092 GETMET R10 R10 K32 + 0x7C280200, // 0093 CALL R10 1 + 0x7C240200, // 0094 CALL R9 1 + 0x58280008, // 0095 LDCONST R10 K8 + 0x78120000, // 0096 JMPF R4 #0098 + 0x04241309, // 0097 SUB R9 R9 K9 + 0x142C1409, // 0098 LT R11 R10 R9 + 0x782E0011, // 0099 JMPF R11 #00AC + 0x8C2C1105, // 009A GETMET R11 R8 K5 + 0x5C341400, // 009B MOVE R13 R10 + 0x7C2C0400, // 009C CALL R11 2 + 0x4C300000, // 009D LDNIL R12 + 0x1C2C160C, // 009E EQ R11 R11 R12 + 0x782E0009, // 009F JMPF R11 #00AA + 0x602C0008, // 00A0 GETGBL R11 G8 + 0x5C300600, // 00A1 MOVE R12 R3 + 0x7C2C0200, // 00A2 CALL R11 1 + 0x60300013, // 00A3 GETGBL R12 G19 + 0x7C300000, // 00A4 CALL R12 0 + 0x98321521, // 00A5 SETIDX R12 K10 K33 + 0x00341509, // 00A6 ADD R13 R10 K9 + 0x9832420D, // 00A7 SETIDX R12 K33 R13 + 0x9808160C, // 00A8 SETIDX R2 R11 R12 + 0x000C0709, // 00A9 ADD R3 R3 K9 + 0x00281509, // 00AA ADD R10 R10 K9 + 0x7001FFEB, // 00AB JMP #0098 + 0x8C2C0322, // 00AC GETMET R11 R1 K34 + 0xB8361E00, // 00AD GETNGBL R13 K15 + 0x8C341B23, // 00AE GETMET R13 R13 K35 + 0x7C340200, // 00AF CALL R13 1 + 0x7C2C0400, // 00B0 CALL R11 2 + 0x8C300124, // 00B1 GETMET R12 R0 K36 + 0x5C381600, // 00B2 MOVE R14 R11 + 0x7C300400, // 00B3 CALL R12 2 + 0x60340010, // 00B4 GETGBL R13 G16 + 0x5C381800, // 00B5 MOVE R14 R12 + 0x7C340200, // 00B6 CALL R13 1 + 0xA8020007, // 00B7 EXBLK 0 #00C0 + 0x5C381A00, // 00B8 MOVE R14 R13 + 0x7C380000, // 00B9 CALL R14 0 + 0x603C0008, // 00BA GETGBL R15 G8 + 0x5C400600, // 00BB MOVE R16 R3 + 0x7C3C0200, // 00BC CALL R15 1 + 0x98081E0E, // 00BD SETIDX R2 R15 R14 + 0x000C0709, // 00BE ADD R3 R3 K9 + 0x7001FFF7, // 00BF JMP #00B8 + 0x58340025, // 00C0 LDCONST R13 K37 + 0xAC340200, // 00C1 CATCH R13 1 0 + 0xB0080000, // 00C2 RAISE 2 R0 R0 + 0x80040400, // 00C3 RET 1 R2 }) ) ); @@ -1962,7 +1941,7 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ + ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), /* K1 */ be_nested_str_weak(http_remotes), /* K2 */ be_const_int(0), @@ -1974,20 +1953,19 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ /* K8 */ be_const_int(1), /* K9 */ be_nested_str_weak(keys), /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), - /* K14 */ be_nested_str_weak(addr), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(close), - /* K17 */ be_nested_str_weak(remove), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), + /* K13 */ be_nested_str_weak(addr), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(close), + /* K16 */ be_nested_str_weak(remove), }), be_str_weak(clean_remotes), &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ + ( &(const binstruction[80]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x780A004C, // 0002 JMPF R2 #0050 + 0x780A004B, // 0002 JMPF R2 #004F 0x60080013, // 0003 GETGBL R2 G19 0x7C080000, // 0004 CALL R2 0 0x600C0010, // 0005 GETGBL R3 G16 @@ -2046,26 +2024,25 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ 0x60100010, // 003A GETGBL R4 G16 0x5C140600, // 003B MOVE R5 R3 0x7C100200, // 003C CALL R4 1 - 0xA802000E, // 003D EXBLK 0 #004D + 0xA802000D, // 003D EXBLK 0 #004C 0x5C140800, // 003E MOVE R5 R4 0x7C140000, // 003F CALL R5 0 0xB81A1600, // 0040 GETNGBL R6 K11 - 0x8C180D0C, // 0041 GETMET R6 R6 K12 - 0x88200B0E, // 0042 GETMBR R8 R5 K14 - 0x00221A08, // 0043 ADD R8 K13 R8 - 0x5824000F, // 0044 LDCONST R9 K15 - 0x7C180600, // 0045 CALL R6 3 - 0x8C180B10, // 0046 GETMET R6 R5 K16 - 0x7C180200, // 0047 CALL R6 1 - 0x88180101, // 0048 GETMBR R6 R0 K1 - 0x8C180D11, // 0049 GETMET R6 R6 K17 - 0x88200B0E, // 004A GETMBR R8 R5 K14 - 0x7C180400, // 004B CALL R6 2 - 0x7001FFF0, // 004C JMP #003E - 0x58100003, // 004D LDCONST R4 K3 - 0xAC100200, // 004E CATCH R4 1 0 - 0xB0080000, // 004F RAISE 2 R0 R0 - 0x80000000, // 0050 RET 0 + 0x881C0B0D, // 0041 GETMBR R7 R5 K13 + 0x001E1807, // 0042 ADD R7 K12 R7 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x7C180400, // 0044 CALL R6 2 + 0x8C180B0F, // 0045 GETMET R6 R5 K15 + 0x7C180200, // 0046 CALL R6 1 + 0x88180101, // 0047 GETMBR R6 R0 K1 + 0x8C180D10, // 0048 GETMET R6 R6 K16 + 0x88200B0D, // 0049 GETMBR R8 R5 K13 + 0x7C180400, // 004A CALL R6 2 + 0x7001FFF1, // 004B JMP #003E + 0x58100003, // 004C LDCONST R4 K3 + 0xAC100200, // 004D CATCH R4 1 0 + 0xB0080000, // 004E RAISE 2 R0 R0 + 0x80000000, // 004F RET 0 }) ) ); @@ -2139,7 +2116,7 @@ be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_autoconf_device, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2147,7 +2124,7 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(json), /* K1 */ be_nested_str_weak(plugins), /* K2 */ be_const_int(0), @@ -2156,18 +2133,17 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ /* K5 */ be_nested_str_weak(autoconf_device_map), /* K6 */ be_nested_str_weak(plugins_config_remotes), /* K7 */ be_nested_str_weak(adjust_next_ep), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(_instantiate_plugins_from_config), - /* K13 */ be_nested_str_weak(sessions), - /* K14 */ be_nested_str_weak(count_active_fabrics), - /* K15 */ be_nested_str_weak(save_param), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(count_active_fabrics), + /* K14 */ be_nested_str_weak(save_param), }), be_str_weak(autoconf_device), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ + ( &(const binstruction[39]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x6008000C, // 0001 GETGBL R2 G12 0x880C0101, // 0002 GETMBR R3 R0 K1 @@ -2176,7 +2152,7 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ 0x780A0000, // 0005 JMPF R2 #0007 0x80000400, // 0006 RET 0 0x88080103, // 0007 GETMBR R2 R0 K3 - 0x740A000F, // 0008 JMPT R2 #0019 + 0x740A000E, // 0008 JMPT R2 #0018 0x8C080105, // 0009 GETMET R2 R0 K5 0x7C080200, // 000A CALL R2 1 0x90020802, // 000B SETMBR R0 K4 R2 @@ -2186,28 +2162,27 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ 0x8C080107, // 000F GETMET R2 R0 K7 0x7C080200, // 0010 CALL R2 1 0xB80A1000, // 0011 GETNGBL R2 K8 - 0x8C080509, // 0012 GETMET R2 R2 K9 - 0x60100008, // 0013 GETGBL R4 G8 - 0x88140104, // 0014 GETMBR R5 R0 K4 - 0x7C100200, // 0015 CALL R4 1 - 0x00121404, // 0016 ADD R4 K10 R4 - 0x5814000B, // 0017 LDCONST R5 K11 - 0x7C080600, // 0018 CALL R2 3 - 0x8C08010C, // 0019 GETMET R2 R0 K12 - 0x88100104, // 001A GETMBR R4 R0 K4 - 0x7C080400, // 001B CALL R2 2 - 0x88080103, // 001C GETMBR R2 R0 K3 - 0x740A0008, // 001D JMPT R2 #0027 - 0x8808010D, // 001E GETMBR R2 R0 K13 - 0x8C08050E, // 001F GETMET R2 R2 K14 - 0x7C080200, // 0020 CALL R2 1 - 0x24080502, // 0021 GT R2 R2 K2 - 0x780A0003, // 0022 JMPF R2 #0027 - 0x50080200, // 0023 LDBOOL R2 1 0 - 0x90020602, // 0024 SETMBR R0 K3 R2 - 0x8C08010F, // 0025 GETMET R2 R0 K15 - 0x7C080200, // 0026 CALL R2 1 - 0x80000000, // 0027 RET 0 + 0x600C0008, // 0012 GETGBL R3 G8 + 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x7C0C0200, // 0014 CALL R3 1 + 0x000E1203, // 0015 ADD R3 K9 R3 + 0x5810000A, // 0016 LDCONST R4 K10 + 0x7C080400, // 0017 CALL R2 2 + 0x8C08010B, // 0018 GETMET R2 R0 K11 + 0x88100104, // 0019 GETMBR R4 R0 K4 + 0x7C080400, // 001A CALL R2 2 + 0x88080103, // 001B GETMBR R2 R0 K3 + 0x740A0008, // 001C JMPT R2 #0026 + 0x8808010C, // 001D GETMBR R2 R0 K12 + 0x8C08050D, // 001E GETMET R2 R2 K13 + 0x7C080200, // 001F CALL R2 1 + 0x24080502, // 0020 GT R2 R2 K2 + 0x780A0003, // 0021 JMPF R2 #0026 + 0x50080200, // 0022 LDBOOL R2 1 0 + 0x90020602, // 0023 SETMBR R0 K3 R2 + 0x8C08010E, // 0024 GETMET R2 R0 K14 + 0x7C080200, // 0025 CALL R2 1 + 0x80000000, // 0026 RET 0 }) ) ); @@ -2547,7 +2522,7 @@ be_local_closure(class_Matter_Device_every_second, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_remove_fabric, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2555,60 +2530,58 @@ be_local_closure(class_Matter_Device_remove_fabric, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(copy), - /* K5 */ be_nested_str_weak(reverse), - /* K6 */ be_nested_str_weak(tohex), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(message_handler), - /* K9 */ be_nested_str_weak(im), - /* K10 */ be_nested_str_weak(subs_shop), - /* K11 */ be_nested_str_weak(remove_by_fabric), - /* K12 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K13 */ be_nested_str_weak(sessions), - /* K14 */ be_nested_str_weak(remove_fabric), - /* K15 */ be_nested_str_weak(save_fabrics), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), + /* K2 */ be_nested_str_weak(get_fabric_id), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(reverse), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(message_handler), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(subs_shop), + /* K10 */ be_nested_str_weak(remove_by_fabric), + /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(remove_fabric), + /* K14 */ be_nested_str_weak(save_fabrics), }), be_str_weak(remove_fabric), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ + ( &(const binstruction[32]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0019, // 0002 JMPF R2 #001D + 0x780A0018, // 0002 JMPF R2 #001C 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C080501, // 0004 GETMET R2 R2 K1 - 0x8C100303, // 0005 GETMET R4 R1 K3 - 0x7C100200, // 0006 CALL R4 1 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x7C100200, // 0008 CALL R4 1 - 0x8C100905, // 0009 GETMET R4 R4 K5 - 0x7C100200, // 000A CALL R4 1 - 0x8C100906, // 000B GETMET R4 R4 K6 - 0x7C100200, // 000C CALL R4 1 - 0x00120404, // 000D ADD R4 K2 R4 - 0x58140007, // 000E LDCONST R5 K7 - 0x7C080600, // 000F CALL R2 3 - 0x88080108, // 0010 GETMBR R2 R0 K8 + 0x8C0C0302, // 0004 GETMET R3 R1 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x7C0C0200, // 000B CALL R3 1 + 0x000E0203, // 000C ADD R3 K1 R3 + 0x58100006, // 000D LDCONST R4 K6 + 0x7C080400, // 000E CALL R2 2 + 0x88080107, // 000F GETMBR R2 R0 K7 + 0x88080508, // 0010 GETMBR R2 R2 K8 0x88080509, // 0011 GETMBR R2 R2 K9 - 0x8808050A, // 0012 GETMBR R2 R2 K10 - 0x8C08050B, // 0013 GETMET R2 R2 K11 - 0x5C100200, // 0014 MOVE R4 R1 - 0x7C080400, // 0015 CALL R2 2 - 0x8C08010C, // 0016 GETMET R2 R0 K12 - 0x5C100200, // 0017 MOVE R4 R1 - 0x7C080400, // 0018 CALL R2 2 - 0x8808010D, // 0019 GETMBR R2 R0 K13 - 0x8C08050E, // 001A GETMET R2 R2 K14 - 0x5C100200, // 001B MOVE R4 R1 - 0x7C080400, // 001C CALL R2 2 - 0x8808010D, // 001D GETMBR R2 R0 K13 - 0x8C08050F, // 001E GETMET R2 R2 K15 - 0x7C080200, // 001F CALL R2 1 - 0x80000000, // 0020 RET 0 + 0x8C08050A, // 0012 GETMET R2 R2 K10 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x8C08010B, // 0015 GETMET R2 R0 K11 + 0x5C100200, // 0016 MOVE R4 R1 + 0x7C080400, // 0017 CALL R2 2 + 0x8808010C, // 0018 GETMBR R2 R0 K12 + 0x8C08050D, // 0019 GETMET R2 R2 K13 + 0x5C100200, // 001A MOVE R4 R1 + 0x7C080400, // 001B CALL R2 2 + 0x8808010C, // 001C GETMBR R2 R0 K12 + 0x8C08050E, // 001D GETMET R2 R2 K14 + 0x7C080200, // 001E CALL R2 1 + 0x80000000, // 001F RET 0 }) ) ); @@ -2805,7 +2778,7 @@ be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ }), be_str_weak(_trigger_read_sensors), &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ + ( &(const binstruction[48]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0xB80A0200, // 0001 GETNGBL R2 K1 0x8C080502, // 0002 GETMET R2 R2 K2 @@ -2814,48 +2787,46 @@ be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ 0x8C0C0703, // 0005 GETMET R3 R3 K3 0x58140004, // 0006 LDCONST R5 K4 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0007, // 0008 JMPF R3 #0011 - 0xB80E0200, // 0009 GETNGBL R3 K1 - 0x8C0C0705, // 000A GETMET R3 R3 K5 - 0x60140008, // 000B GETGBL R5 G8 - 0x5C180400, // 000C MOVE R6 R2 - 0x7C140200, // 000D CALL R5 1 - 0x00160C05, // 000E ADD R5 K6 R5 - 0x58180004, // 000F LDCONST R6 K4 - 0x7C0C0600, // 0010 CALL R3 3 - 0x4C0C0000, // 0011 LDNIL R3 - 0x1C0C0403, // 0012 EQ R3 R2 R3 - 0x780E0000, // 0013 JMPF R3 #0015 - 0x80000600, // 0014 RET 0 - 0x8C0C0307, // 0015 GETMET R3 R1 K7 - 0x5C140400, // 0016 MOVE R5 R2 - 0x7C0C0400, // 0017 CALL R3 2 - 0x4C100000, // 0018 LDNIL R4 - 0x20100604, // 0019 NE R4 R3 R4 - 0x7812000D, // 001A JMPF R4 #0029 - 0x58100008, // 001B LDCONST R4 K8 - 0x6014000C, // 001C GETGBL R5 G12 - 0x88180109, // 001D GETMBR R6 R0 K9 - 0x7C140200, // 001E CALL R5 1 - 0x14140805, // 001F LT R5 R4 R5 - 0x78160006, // 0020 JMPF R5 #0028 - 0x88140109, // 0021 GETMBR R5 R0 K9 - 0x94140A04, // 0022 GETIDX R5 R5 R4 - 0x8C140B0A, // 0023 GETMET R5 R5 K10 - 0x5C1C0600, // 0024 MOVE R7 R3 - 0x7C140400, // 0025 CALL R5 2 - 0x0010090B, // 0026 ADD R4 R4 K11 - 0x7001FFF3, // 0027 JMP #001C - 0x70020007, // 0028 JMP #0031 - 0xB8120200, // 0029 GETNGBL R4 K1 - 0x8C100905, // 002A GETMET R4 R4 K5 - 0x60180008, // 002B GETGBL R6 G8 - 0x5C1C0400, // 002C MOVE R7 R2 - 0x7C180200, // 002D CALL R6 1 - 0x001A1806, // 002E ADD R6 K12 R6 - 0x581C0004, // 002F LDCONST R7 K4 - 0x7C100600, // 0030 CALL R4 3 - 0x80000000, // 0031 RET 0 + 0x780E0006, // 0008 JMPF R3 #0010 + 0xB80E0A00, // 0009 GETNGBL R3 K5 + 0x60100008, // 000A GETGBL R4 G8 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C100200, // 000C CALL R4 1 + 0x00120C04, // 000D ADD R4 K6 R4 + 0x58140004, // 000E LDCONST R5 K4 + 0x7C0C0400, // 000F CALL R3 2 + 0x4C0C0000, // 0010 LDNIL R3 + 0x1C0C0403, // 0011 EQ R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x80000600, // 0013 RET 0 + 0x8C0C0307, // 0014 GETMET R3 R1 K7 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x4C100000, // 0017 LDNIL R4 + 0x20100604, // 0018 NE R4 R3 R4 + 0x7812000D, // 0019 JMPF R4 #0028 + 0x58100008, // 001A LDCONST R4 K8 + 0x6014000C, // 001B GETGBL R5 G12 + 0x88180109, // 001C GETMBR R6 R0 K9 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160006, // 001F JMPF R5 #0027 + 0x88140109, // 0020 GETMBR R5 R0 K9 + 0x94140A04, // 0021 GETIDX R5 R5 R4 + 0x8C140B0A, // 0022 GETMET R5 R5 K10 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C140400, // 0024 CALL R5 2 + 0x0010090B, // 0025 ADD R4 R4 K11 + 0x7001FFF3, // 0026 JMP #001B + 0x70020006, // 0027 JMP #002F + 0xB8120A00, // 0028 GETNGBL R4 K5 + 0x60140008, // 0029 GETGBL R5 G8 + 0x5C180400, // 002A MOVE R6 R2 + 0x7C140200, // 002B CALL R5 1 + 0x00161805, // 002C ADD R5 K12 R5 + 0x58180004, // 002D LDCONST R6 K4 + 0x7C100400, // 002E CALL R4 2 + 0x80000000, // 002F RET 0 }) ) ); @@ -2868,7 +2839,7 @@ be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ be_nested_proto( - 18, /* nstack */ + 17, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2878,194 +2849,186 @@ be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(k2l_num), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(plugins), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(Plugin_Root), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), - /* K11 */ be_nested_str_weak(root), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(Plugin_Aggregator), - /* K14 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K15 */ be_nested_str_weak(aggregator), - /* K16 */ be_nested_str_weak(find), - /* K17 */ be_nested_str_weak(type), - /* K18 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), - /* K21 */ be_nested_str_weak(plugins_classes), - /* K22 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K23 */ be_nested_str_weak(_X27_X20skipping), - /* K24 */ be_nested_str_weak(conf_to_log), - /* K25 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K26 */ be_nested_str_weak(_X7C), - /* K27 */ be_nested_str_weak(stop_iteration), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(plugins), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(Plugin_Root), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), + /* K10 */ be_nested_str_weak(root), + /* K11 */ be_nested_str_weak(), + /* K12 */ be_nested_str_weak(Plugin_Aggregator), + /* K13 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K14 */ be_nested_str_weak(aggregator), + /* K15 */ be_nested_str_weak(find), + /* K16 */ be_nested_str_weak(type), + /* K17 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), + /* K18 */ be_const_int(3), + /* K19 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), + /* K20 */ be_nested_str_weak(plugins_classes), + /* K21 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K22 */ be_nested_str_weak(_X27_X20skipping), + /* K23 */ be_nested_str_weak(conf_to_log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_nested_str_weak(stop_iteration), + /* K27 */ be_nested_str_weak(tasmota), /* K28 */ be_nested_str_weak(publish_result), /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), /* K30 */ be_nested_str_weak(Matter), }), be_str_weak(_instantiate_plugins_from_config), &be_const_str_solidified, - ( &(const binstruction[154]) { /* code */ + ( &(const binstruction[146]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0xB80E0200, // 0003 GETNGBL R3 K1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x58100002, // 0004 LDCONST R4 K2 0x58140003, // 0005 LDCONST R5 K3 - 0x58180004, // 0006 LDCONST R6 K4 - 0x7C0C0600, // 0007 CALL R3 3 - 0x880C0105, // 0008 GETMBR R3 R0 K5 - 0x8C0C0706, // 0009 GETMET R3 R3 K6 - 0xB8160E00, // 000A GETNGBL R5 K7 - 0x8C140B08, // 000B GETMET R5 R5 K8 - 0x5C1C0000, // 000C MOVE R7 R0 - 0x58200009, // 000D LDCONST R8 K9 - 0x60240013, // 000E GETGBL R9 G19 - 0x7C240000, // 000F CALL R9 0 - 0x7C140800, // 0010 CALL R5 4 - 0x7C0C0400, // 0011 CALL R3 2 - 0xB80E0200, // 0012 GETNGBL R3 K1 - 0x8C0C0702, // 0013 GETMET R3 R3 K2 - 0x60140018, // 0014 GETGBL R5 G24 - 0x5818000A, // 0015 LDCONST R6 K10 - 0x581C0009, // 0016 LDCONST R7 K9 - 0x5820000B, // 0017 LDCONST R8 K11 - 0x5824000C, // 0018 LDCONST R9 K12 - 0x7C140800, // 0019 CALL R5 4 - 0x58180004, // 001A LDCONST R6 K4 - 0x7C0C0600, // 001B CALL R3 3 - 0x880C0105, // 001C GETMBR R3 R0 K5 - 0x8C0C0706, // 001D GETMET R3 R3 K6 - 0xB8160E00, // 001E GETNGBL R5 K7 - 0x8C140B0D, // 001F GETMET R5 R5 K13 - 0x5C1C0000, // 0020 MOVE R7 R0 - 0xB8220E00, // 0021 GETNGBL R8 K7 - 0x8820110E, // 0022 GETMBR R8 R8 K14 - 0x60240013, // 0023 GETGBL R9 G19 - 0x7C240000, // 0024 CALL R9 0 - 0x7C140800, // 0025 CALL R5 4 - 0x7C0C0400, // 0026 CALL R3 2 - 0xB80E0200, // 0027 GETNGBL R3 K1 - 0x8C0C0702, // 0028 GETMET R3 R3 K2 - 0x60140018, // 0029 GETGBL R5 G24 - 0x5818000A, // 002A LDCONST R6 K10 - 0xB81E0E00, // 002B GETNGBL R7 K7 - 0x881C0F0E, // 002C GETMBR R7 R7 K14 - 0x5820000F, // 002D LDCONST R8 K15 - 0x5824000C, // 002E LDCONST R9 K12 - 0x7C140800, // 002F CALL R5 4 - 0x58180004, // 0030 LDCONST R6 K4 - 0x7C0C0600, // 0031 CALL R3 3 - 0x600C0010, // 0032 GETGBL R3 G16 - 0x5C100400, // 0033 MOVE R4 R2 - 0x7C0C0200, // 0034 CALL R3 1 - 0xA802005A, // 0035 EXBLK 0 #0091 - 0x5C100600, // 0036 MOVE R4 R3 - 0x7C100000, // 0037 CALL R4 0 - 0x1C140909, // 0038 EQ R5 R4 K9 - 0x78160000, // 0039 JMPF R5 #003B - 0x7001FFFA, // 003A JMP #0036 - 0xA8020042, // 003B EXBLK 0 #007F - 0x60140008, // 003C GETGBL R5 G8 - 0x5C180800, // 003D MOVE R6 R4 - 0x7C140200, // 003E CALL R5 1 - 0x94140205, // 003F GETIDX R5 R1 R5 - 0x8C180B10, // 0040 GETMET R6 R5 K16 - 0x58200011, // 0041 LDCONST R8 K17 - 0x7C180400, // 0042 CALL R6 2 - 0x4C1C0000, // 0043 LDNIL R7 - 0x1C1C0C07, // 0044 EQ R7 R6 R7 - 0x781E0006, // 0045 JMPF R7 #004D - 0xB81E0200, // 0046 GETNGBL R7 K1 - 0x8C1C0F02, // 0047 GETMET R7 R7 K2 - 0x58240012, // 0048 LDCONST R9 K18 - 0x58280013, // 0049 LDCONST R10 K19 - 0x7C1C0600, // 004A CALL R7 3 - 0xA8040001, // 004B EXBLK 1 1 - 0x7001FFE8, // 004C JMP #0036 - 0x1C1C0D0B, // 004D EQ R7 R6 K11 - 0x781E0006, // 004E JMPF R7 #0056 - 0xB81E0200, // 004F GETNGBL R7 K1 - 0x8C1C0F02, // 0050 GETMET R7 R7 K2 - 0x58240014, // 0051 LDCONST R9 K20 - 0x58280013, // 0052 LDCONST R10 K19 - 0x7C1C0600, // 0053 CALL R7 3 - 0xA8040001, // 0054 EXBLK 1 1 - 0x7001FFDF, // 0055 JMP #0036 - 0x881C0115, // 0056 GETMBR R7 R0 K21 - 0x8C1C0F10, // 0057 GETMET R7 R7 K16 - 0x5C240C00, // 0058 MOVE R9 R6 - 0x7C1C0400, // 0059 CALL R7 2 - 0x4C200000, // 005A LDNIL R8 - 0x1C200E08, // 005B EQ R8 R7 R8 - 0x7822000A, // 005C JMPF R8 #0068 - 0xB8220200, // 005D GETNGBL R8 K1 - 0x8C201102, // 005E GETMET R8 R8 K2 - 0x60280008, // 005F GETGBL R10 G8 - 0x5C2C0C00, // 0060 MOVE R11 R6 - 0x7C280200, // 0061 CALL R10 1 - 0x002A2C0A, // 0062 ADD R10 K22 R10 - 0x00281517, // 0063 ADD R10 R10 K23 - 0x582C0004, // 0064 LDCONST R11 K4 - 0x7C200600, // 0065 CALL R8 3 - 0xA8040001, // 0066 EXBLK 1 1 - 0x7001FFCD, // 0067 JMP #0036 - 0x5C200E00, // 0068 MOVE R8 R7 - 0x5C240000, // 0069 MOVE R9 R0 - 0x5C280800, // 006A MOVE R10 R4 - 0x5C2C0A00, // 006B MOVE R11 R5 - 0x7C200600, // 006C CALL R8 3 - 0x88240105, // 006D GETMBR R9 R0 K5 - 0x8C241306, // 006E GETMET R9 R9 K6 - 0x5C2C1000, // 006F MOVE R11 R8 - 0x7C240400, // 0070 CALL R9 2 - 0xB8260200, // 0071 GETNGBL R9 K1 - 0x8C241302, // 0072 GETMET R9 R9 K2 - 0x602C0018, // 0073 GETGBL R11 G24 - 0x5830000A, // 0074 LDCONST R12 K10 - 0x5C340800, // 0075 MOVE R13 R4 - 0x5C380C00, // 0076 MOVE R14 R6 - 0x8C3C0118, // 0077 GETMET R15 R0 K24 - 0x5C440A00, // 0078 MOVE R17 R5 - 0x7C3C0400, // 0079 CALL R15 2 - 0x7C2C0800, // 007A CALL R11 4 - 0x58300004, // 007B LDCONST R12 K4 - 0x7C240600, // 007C CALL R9 3 - 0xA8040001, // 007D EXBLK 1 1 - 0x70020010, // 007E JMP #0090 - 0xAC140002, // 007F CATCH R5 0 2 - 0x7002000D, // 0080 JMP #008F - 0xB81E0200, // 0081 GETNGBL R7 K1 - 0x8C1C0F02, // 0082 GETMET R7 R7 K2 - 0x60240008, // 0083 GETGBL R9 G8 - 0x5C280A00, // 0084 MOVE R10 R5 - 0x7C240200, // 0085 CALL R9 1 - 0x00263209, // 0086 ADD R9 K25 R9 - 0x0024131A, // 0087 ADD R9 R9 K26 - 0x60280008, // 0088 GETGBL R10 G8 - 0x5C2C0C00, // 0089 MOVE R11 R6 - 0x7C280200, // 008A CALL R10 1 - 0x0024120A, // 008B ADD R9 R9 R10 - 0x58280004, // 008C LDCONST R10 K4 - 0x7C1C0600, // 008D CALL R7 3 - 0x70020000, // 008E JMP #0090 - 0xB0080000, // 008F RAISE 2 R0 R0 - 0x7001FFA4, // 0090 JMP #0036 - 0x580C001B, // 0091 LDCONST R3 K27 - 0xAC0C0200, // 0092 CATCH R3 1 0 - 0xB0080000, // 0093 RAISE 2 R0 R0 - 0xB80E0200, // 0094 GETNGBL R3 K1 - 0x8C0C071C, // 0095 GETMET R3 R3 K28 - 0x5814001D, // 0096 LDCONST R5 K29 - 0x5818001E, // 0097 LDCONST R6 K30 - 0x7C0C0600, // 0098 CALL R3 3 - 0x80000000, // 0099 RET 0 + 0x7C0C0400, // 0006 CALL R3 2 + 0x880C0104, // 0007 GETMBR R3 R0 K4 + 0x8C0C0705, // 0008 GETMET R3 R3 K5 + 0xB8160C00, // 0009 GETNGBL R5 K6 + 0x8C140B07, // 000A GETMET R5 R5 K7 + 0x5C1C0000, // 000B MOVE R7 R0 + 0x58200008, // 000C LDCONST R8 K8 + 0x60240013, // 000D GETGBL R9 G19 + 0x7C240000, // 000E CALL R9 0 + 0x7C140800, // 000F CALL R5 4 + 0x7C0C0400, // 0010 CALL R3 2 + 0xB80E0200, // 0011 GETNGBL R3 K1 + 0x60100018, // 0012 GETGBL R4 G24 + 0x58140009, // 0013 LDCONST R5 K9 + 0x58180008, // 0014 LDCONST R6 K8 + 0x581C000A, // 0015 LDCONST R7 K10 + 0x5820000B, // 0016 LDCONST R8 K11 + 0x7C100800, // 0017 CALL R4 4 + 0x58140003, // 0018 LDCONST R5 K3 + 0x7C0C0400, // 0019 CALL R3 2 + 0x880C0104, // 001A GETMBR R3 R0 K4 + 0x8C0C0705, // 001B GETMET R3 R3 K5 + 0xB8160C00, // 001C GETNGBL R5 K6 + 0x8C140B0C, // 001D GETMET R5 R5 K12 + 0x5C1C0000, // 001E MOVE R7 R0 + 0xB8220C00, // 001F GETNGBL R8 K6 + 0x8820110D, // 0020 GETMBR R8 R8 K13 + 0x60240013, // 0021 GETGBL R9 G19 + 0x7C240000, // 0022 CALL R9 0 + 0x7C140800, // 0023 CALL R5 4 + 0x7C0C0400, // 0024 CALL R3 2 + 0xB80E0200, // 0025 GETNGBL R3 K1 + 0x60100018, // 0026 GETGBL R4 G24 + 0x58140009, // 0027 LDCONST R5 K9 + 0xB81A0C00, // 0028 GETNGBL R6 K6 + 0x88180D0D, // 0029 GETMBR R6 R6 K13 + 0x581C000E, // 002A LDCONST R7 K14 + 0x5820000B, // 002B LDCONST R8 K11 + 0x7C100800, // 002C CALL R4 4 + 0x58140003, // 002D LDCONST R5 K3 + 0x7C0C0400, // 002E CALL R3 2 + 0x600C0010, // 002F GETGBL R3 G16 + 0x5C100400, // 0030 MOVE R4 R2 + 0x7C0C0200, // 0031 CALL R3 1 + 0xA8020055, // 0032 EXBLK 0 #0089 + 0x5C100600, // 0033 MOVE R4 R3 + 0x7C100000, // 0034 CALL R4 0 + 0x1C140908, // 0035 EQ R5 R4 K8 + 0x78160000, // 0036 JMPF R5 #0038 + 0x7001FFFA, // 0037 JMP #0033 + 0xA802003E, // 0038 EXBLK 0 #0078 + 0x60140008, // 0039 GETGBL R5 G8 + 0x5C180800, // 003A MOVE R6 R4 + 0x7C140200, // 003B CALL R5 1 + 0x94140205, // 003C GETIDX R5 R1 R5 + 0x8C180B0F, // 003D GETMET R6 R5 K15 + 0x58200010, // 003E LDCONST R8 K16 + 0x7C180400, // 003F CALL R6 2 + 0x4C1C0000, // 0040 LDNIL R7 + 0x1C1C0C07, // 0041 EQ R7 R6 R7 + 0x781E0005, // 0042 JMPF R7 #0049 + 0xB81E0200, // 0043 GETNGBL R7 K1 + 0x58200011, // 0044 LDCONST R8 K17 + 0x58240012, // 0045 LDCONST R9 K18 + 0x7C1C0400, // 0046 CALL R7 2 + 0xA8040001, // 0047 EXBLK 1 1 + 0x7001FFE9, // 0048 JMP #0033 + 0x1C1C0D0A, // 0049 EQ R7 R6 K10 + 0x781E0005, // 004A JMPF R7 #0051 + 0xB81E0200, // 004B GETNGBL R7 K1 + 0x58200013, // 004C LDCONST R8 K19 + 0x58240012, // 004D LDCONST R9 K18 + 0x7C1C0400, // 004E CALL R7 2 + 0xA8040001, // 004F EXBLK 1 1 + 0x7001FFE1, // 0050 JMP #0033 + 0x881C0114, // 0051 GETMBR R7 R0 K20 + 0x8C1C0F0F, // 0052 GETMET R7 R7 K15 + 0x5C240C00, // 0053 MOVE R9 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x4C200000, // 0055 LDNIL R8 + 0x1C200E08, // 0056 EQ R8 R7 R8 + 0x78220009, // 0057 JMPF R8 #0062 + 0xB8220200, // 0058 GETNGBL R8 K1 + 0x60240008, // 0059 GETGBL R9 G8 + 0x5C280C00, // 005A MOVE R10 R6 + 0x7C240200, // 005B CALL R9 1 + 0x00262A09, // 005C ADD R9 K21 R9 + 0x00241316, // 005D ADD R9 R9 K22 + 0x58280003, // 005E LDCONST R10 K3 + 0x7C200400, // 005F CALL R8 2 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7001FFD0, // 0061 JMP #0033 + 0x5C200E00, // 0062 MOVE R8 R7 + 0x5C240000, // 0063 MOVE R9 R0 + 0x5C280800, // 0064 MOVE R10 R4 + 0x5C2C0A00, // 0065 MOVE R11 R5 + 0x7C200600, // 0066 CALL R8 3 + 0x88240104, // 0067 GETMBR R9 R0 K4 + 0x8C241305, // 0068 GETMET R9 R9 K5 + 0x5C2C1000, // 0069 MOVE R11 R8 + 0x7C240400, // 006A CALL R9 2 + 0xB8260200, // 006B GETNGBL R9 K1 + 0x60280018, // 006C GETGBL R10 G24 + 0x582C0009, // 006D LDCONST R11 K9 + 0x5C300800, // 006E MOVE R12 R4 + 0x5C340C00, // 006F MOVE R13 R6 + 0x8C380117, // 0070 GETMET R14 R0 K23 + 0x5C400A00, // 0071 MOVE R16 R5 + 0x7C380400, // 0072 CALL R14 2 + 0x7C280800, // 0073 CALL R10 4 + 0x582C0003, // 0074 LDCONST R11 K3 + 0x7C240400, // 0075 CALL R9 2 + 0xA8040001, // 0076 EXBLK 1 1 + 0x7002000F, // 0077 JMP #0088 + 0xAC140002, // 0078 CATCH R5 0 2 + 0x7002000C, // 0079 JMP #0087 + 0xB81E0200, // 007A GETNGBL R7 K1 + 0x60200008, // 007B GETGBL R8 G8 + 0x5C240A00, // 007C MOVE R9 R5 + 0x7C200200, // 007D CALL R8 1 + 0x00223008, // 007E ADD R8 K24 R8 + 0x00201119, // 007F ADD R8 R8 K25 + 0x60240008, // 0080 GETGBL R9 G8 + 0x5C280C00, // 0081 MOVE R10 R6 + 0x7C240200, // 0082 CALL R9 1 + 0x00201009, // 0083 ADD R8 R8 R9 + 0x58240003, // 0084 LDCONST R9 K3 + 0x7C1C0400, // 0085 CALL R7 2 + 0x70020000, // 0086 JMP #0088 + 0xB0080000, // 0087 RAISE 2 R0 R0 + 0x7001FFA9, // 0088 JMP #0033 + 0x580C001A, // 0089 LDCONST R3 K26 + 0xAC0C0200, // 008A CATCH R3 1 0 + 0xB0080000, // 008B RAISE 2 R0 R0 + 0xB80E3600, // 008C GETNGBL R3 K27 + 0x8C0C071C, // 008D GETMET R3 R3 K28 + 0x5814001D, // 008E LDCONST R5 K29 + 0x5818001E, // 008F LDCONST R6 K30 + 0x7C0C0600, // 0090 CALL R3 3 + 0x80000000, // 0091 RET 0 }) ) ); @@ -3094,10 +3057,10 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ /* K4 */ be_nested_str_weak(get_fabric_compressed), /* K5 */ be_nested_str_weak(tohex), /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K10 */ be_const_int(3), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(tasmota), /* K11 */ be_nested_str_weak(eth), /* K12 */ be_nested_str_weak(find), /* K13 */ be_nested_str_weak(up), @@ -3117,9 +3080,9 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ }), be_str_weak(mdns_announce_op_discovery), &be_const_str_solidified, - ( &(const binstruction[121]) { /* code */ + ( &(const binstruction[115]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA8020064, // 0001 EXBLK 0 #0067 + 0xA802005F, // 0001 EXBLK 0 #0062 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x7C0C0200, // 0003 CALL R3 1 0x8C0C0702, // 0004 GETMET R3 R3 K2 @@ -3135,110 +3098,104 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ 0x7C180200, // 000E CALL R6 1 0x00140A06, // 000F ADD R5 R5 R6 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x8C180D08, // 0011 GETMET R6 R6 K8 - 0x00221205, // 0012 ADD R8 K9 R5 - 0x5824000A, // 0013 LDCONST R9 K10 - 0x7C180600, // 0014 CALL R6 3 - 0xB81A0E00, // 0015 GETNGBL R6 K7 - 0x8C180D0B, // 0016 GETMET R6 R6 K11 - 0x7C180200, // 0017 CALL R6 1 - 0x8C180D0C, // 0018 GETMET R6 R6 K12 - 0x5820000D, // 0019 LDCONST R8 K13 - 0x7C180400, // 001A CALL R6 2 - 0x781A0020, // 001B JMPF R6 #003D - 0xB81A0E00, // 001C GETNGBL R6 K7 - 0x8C180D08, // 001D GETMET R6 R6 K8 - 0x60200018, // 001E GETGBL R8 G24 - 0x5824000E, // 001F LDCONST R9 K14 - 0x5828000B, // 0020 LDCONST R10 K11 - 0x5C2C0A00, // 0021 MOVE R11 R5 - 0x8830010F, // 0022 GETMBR R12 R0 K15 - 0x7C200800, // 0023 CALL R8 4 - 0x5824000A, // 0024 LDCONST R9 K10 - 0x7C180600, // 0025 CALL R6 3 - 0x8C180510, // 0026 GETMET R6 R2 K16 - 0x58200011, // 0027 LDCONST R8 K17 - 0x58240012, // 0028 LDCONST R9 K18 - 0x542A15A3, // 0029 LDINT R10 5540 - 0x4C2C0000, // 002A LDNIL R11 - 0x5C300A00, // 002B MOVE R12 R5 - 0x8834010F, // 002C GETMBR R13 R0 K15 - 0x7C180E00, // 002D CALL R6 7 - 0x8C180905, // 002E GETMET R6 R4 K5 - 0x7C180200, // 002F CALL R6 1 - 0x001A2606, // 0030 ADD R6 K19 R6 - 0xB81E0E00, // 0031 GETNGBL R7 K7 - 0x8C1C0F08, // 0032 GETMET R7 R7 K8 - 0x00262806, // 0033 ADD R9 K20 R6 - 0x5828000A, // 0034 LDCONST R10 K10 - 0x7C1C0600, // 0035 CALL R7 3 - 0x8C1C0515, // 0036 GETMET R7 R2 K21 - 0x58240011, // 0037 LDCONST R9 K17 - 0x58280012, // 0038 LDCONST R10 K18 - 0x5C2C0A00, // 0039 MOVE R11 R5 - 0x8830010F, // 003A GETMBR R12 R0 K15 - 0x5C340C00, // 003B MOVE R13 R6 - 0x7C1C0C00, // 003C CALL R7 6 - 0xB81A0E00, // 003D GETNGBL R6 K7 - 0x8C180D16, // 003E GETMET R6 R6 K22 - 0x7C180200, // 003F CALL R6 1 - 0x8C180D0C, // 0040 GETMET R6 R6 K12 - 0x5820000D, // 0041 LDCONST R8 K13 - 0x7C180400, // 0042 CALL R6 2 - 0x781A0020, // 0043 JMPF R6 #0065 - 0xB81A0E00, // 0044 GETNGBL R6 K7 - 0x8C180D08, // 0045 GETMET R6 R6 K8 - 0x60200018, // 0046 GETGBL R8 G24 - 0x5824000E, // 0047 LDCONST R9 K14 - 0x58280016, // 0048 LDCONST R10 K22 - 0x5C2C0A00, // 0049 MOVE R11 R5 - 0x88300117, // 004A GETMBR R12 R0 K23 - 0x7C200800, // 004B CALL R8 4 - 0x5824000A, // 004C LDCONST R9 K10 - 0x7C180600, // 004D CALL R6 3 - 0x8C180510, // 004E GETMET R6 R2 K16 - 0x58200011, // 004F LDCONST R8 K17 - 0x58240012, // 0050 LDCONST R9 K18 - 0x542A15A3, // 0051 LDINT R10 5540 - 0x4C2C0000, // 0052 LDNIL R11 - 0x5C300A00, // 0053 MOVE R12 R5 - 0x88340117, // 0054 GETMBR R13 R0 K23 - 0x7C180E00, // 0055 CALL R6 7 - 0x8C180905, // 0056 GETMET R6 R4 K5 - 0x7C180200, // 0057 CALL R6 1 - 0x001A2606, // 0058 ADD R6 K19 R6 - 0xB81E0E00, // 0059 GETNGBL R7 K7 - 0x8C1C0F08, // 005A GETMET R7 R7 K8 - 0x00262806, // 005B ADD R9 K20 R6 - 0x5828000A, // 005C LDCONST R10 K10 - 0x7C1C0600, // 005D CALL R7 3 - 0x8C1C0515, // 005E GETMET R7 R2 K21 - 0x58240011, // 005F LDCONST R9 K17 - 0x58280012, // 0060 LDCONST R10 K18 - 0x5C2C0A00, // 0061 MOVE R11 R5 - 0x88300117, // 0062 GETMBR R12 R0 K23 - 0x5C340C00, // 0063 MOVE R13 R6 - 0x7C1C0C00, // 0064 CALL R7 6 - 0xA8040001, // 0065 EXBLK 1 1 - 0x70020010, // 0066 JMP #0078 - 0xAC0C0002, // 0067 CATCH R3 0 2 - 0x7002000D, // 0068 JMP #0077 - 0xB8160E00, // 0069 GETNGBL R5 K7 - 0x8C140B08, // 006A GETMET R5 R5 K8 - 0x601C0008, // 006B GETGBL R7 G8 - 0x5C200600, // 006C MOVE R8 R3 - 0x7C1C0200, // 006D CALL R7 1 - 0x001E3007, // 006E ADD R7 K24 R7 - 0x001C0F19, // 006F ADD R7 R7 K25 - 0x60200008, // 0070 GETGBL R8 G8 - 0x5C240800, // 0071 MOVE R9 R4 - 0x7C200200, // 0072 CALL R8 1 - 0x001C0E08, // 0073 ADD R7 R7 R8 - 0x5820001A, // 0074 LDCONST R8 K26 - 0x7C140600, // 0075 CALL R5 3 - 0x70020000, // 0076 JMP #0078 - 0xB0080000, // 0077 RAISE 2 R0 R0 - 0x80000000, // 0078 RET 0 + 0x001E1005, // 0011 ADD R7 K8 R5 + 0x58200009, // 0012 LDCONST R8 K9 + 0x7C180400, // 0013 CALL R6 2 + 0xB81A1400, // 0014 GETNGBL R6 K10 + 0x8C180D0B, // 0015 GETMET R6 R6 K11 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180D0C, // 0017 GETMET R6 R6 K12 + 0x5820000D, // 0018 LDCONST R8 K13 + 0x7C180400, // 0019 CALL R6 2 + 0x781A001E, // 001A JMPF R6 #003A + 0xB81A0E00, // 001B GETNGBL R6 K7 + 0x601C0018, // 001C GETGBL R7 G24 + 0x5820000E, // 001D LDCONST R8 K14 + 0x5824000B, // 001E LDCONST R9 K11 + 0x5C280A00, // 001F MOVE R10 R5 + 0x882C010F, // 0020 GETMBR R11 R0 K15 + 0x7C1C0800, // 0021 CALL R7 4 + 0x58200009, // 0022 LDCONST R8 K9 + 0x7C180400, // 0023 CALL R6 2 + 0x8C180510, // 0024 GETMET R6 R2 K16 + 0x58200011, // 0025 LDCONST R8 K17 + 0x58240012, // 0026 LDCONST R9 K18 + 0x542A15A3, // 0027 LDINT R10 5540 + 0x4C2C0000, // 0028 LDNIL R11 + 0x5C300A00, // 0029 MOVE R12 R5 + 0x8834010F, // 002A GETMBR R13 R0 K15 + 0x7C180E00, // 002B CALL R6 7 + 0x8C180905, // 002C GETMET R6 R4 K5 + 0x7C180200, // 002D CALL R6 1 + 0x001A2606, // 002E ADD R6 K19 R6 + 0xB81E0E00, // 002F GETNGBL R7 K7 + 0x00222806, // 0030 ADD R8 K20 R6 + 0x58240009, // 0031 LDCONST R9 K9 + 0x7C1C0400, // 0032 CALL R7 2 + 0x8C1C0515, // 0033 GETMET R7 R2 K21 + 0x58240011, // 0034 LDCONST R9 K17 + 0x58280012, // 0035 LDCONST R10 K18 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x8830010F, // 0037 GETMBR R12 R0 K15 + 0x5C340C00, // 0038 MOVE R13 R6 + 0x7C1C0C00, // 0039 CALL R7 6 + 0xB81A1400, // 003A GETNGBL R6 K10 + 0x8C180D16, // 003B GETMET R6 R6 K22 + 0x7C180200, // 003C CALL R6 1 + 0x8C180D0C, // 003D GETMET R6 R6 K12 + 0x5820000D, // 003E LDCONST R8 K13 + 0x7C180400, // 003F CALL R6 2 + 0x781A001E, // 0040 JMPF R6 #0060 + 0xB81A0E00, // 0041 GETNGBL R6 K7 + 0x601C0018, // 0042 GETGBL R7 G24 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x58240016, // 0044 LDCONST R9 K22 + 0x5C280A00, // 0045 MOVE R10 R5 + 0x882C0117, // 0046 GETMBR R11 R0 K23 + 0x7C1C0800, // 0047 CALL R7 4 + 0x58200009, // 0048 LDCONST R8 K9 + 0x7C180400, // 0049 CALL R6 2 + 0x8C180510, // 004A GETMET R6 R2 K16 + 0x58200011, // 004B LDCONST R8 K17 + 0x58240012, // 004C LDCONST R9 K18 + 0x542A15A3, // 004D LDINT R10 5540 + 0x4C2C0000, // 004E LDNIL R11 + 0x5C300A00, // 004F MOVE R12 R5 + 0x88340117, // 0050 GETMBR R13 R0 K23 + 0x7C180E00, // 0051 CALL R6 7 + 0x8C180905, // 0052 GETMET R6 R4 K5 + 0x7C180200, // 0053 CALL R6 1 + 0x001A2606, // 0054 ADD R6 K19 R6 + 0xB81E0E00, // 0055 GETNGBL R7 K7 + 0x00222806, // 0056 ADD R8 K20 R6 + 0x58240009, // 0057 LDCONST R9 K9 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C1C0515, // 0059 GETMET R7 R2 K21 + 0x58240011, // 005A LDCONST R9 K17 + 0x58280012, // 005B LDCONST R10 K18 + 0x5C2C0A00, // 005C MOVE R11 R5 + 0x88300117, // 005D GETMBR R12 R0 K23 + 0x5C340C00, // 005E MOVE R13 R6 + 0x7C1C0C00, // 005F CALL R7 6 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7002000F, // 0061 JMP #0072 + 0xAC0C0002, // 0062 CATCH R3 0 2 + 0x7002000C, // 0063 JMP #0071 + 0xB8160E00, // 0064 GETNGBL R5 K7 + 0x60180008, // 0065 GETGBL R6 G8 + 0x5C1C0600, // 0066 MOVE R7 R3 + 0x7C180200, // 0067 CALL R6 1 + 0x001A3006, // 0068 ADD R6 K24 R6 + 0x00180D19, // 0069 ADD R6 R6 K25 + 0x601C0008, // 006A GETGBL R7 G8 + 0x5C200800, // 006B MOVE R8 R4 + 0x7C1C0200, // 006C CALL R7 1 + 0x00180C07, // 006D ADD R6 R6 R7 + 0x581C001A, // 006E LDCONST R7 K26 + 0x7C140400, // 006F CALL R5 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 }) ) ); @@ -3518,20 +3475,19 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ &be_class_Matter_Device, }), 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UDPServer), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(UDPServer), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(start), }), be_str_weak(_start_udp), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ + ( &(const binstruction[27]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x780A0000, // 0001 JMPF R2 #0003 0x80000400, // 0002 RET 0 @@ -3540,26 +3496,25 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ 0x780A0000, // 0005 JMPF R2 #0007 0x540615A3, // 0006 LDINT R1 5540 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x8C080502, // 0008 GETMET R2 R2 K2 - 0x60100008, // 0009 GETGBL R4 G8 - 0x5C140200, // 000A MOVE R5 R1 - 0x7C100200, // 000B CALL R4 1 - 0x00120604, // 000C ADD R4 K3 R4 - 0x58140004, // 000D LDCONST R5 K4 - 0x7C080600, // 000E CALL R2 3 - 0xB80A0A00, // 000F GETNGBL R2 K5 - 0x8C080506, // 0010 GETMET R2 R2 K6 - 0x5C100000, // 0011 MOVE R4 R0 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180200, // 0013 MOVE R6 R1 - 0x7C080800, // 0014 CALL R2 4 - 0x90020002, // 0015 SETMBR R0 K0 R2 - 0x88080100, // 0016 GETMBR R2 R0 K0 - 0x8C080508, // 0017 GETMET R2 R2 K8 - 0x84100000, // 0018 CLOSURE R4 P0 - 0x7C080400, // 0019 CALL R2 2 - 0xA0000000, // 001A CLOSE R0 - 0x80000000, // 001B RET 0 + 0x600C0008, // 0008 GETGBL R3 G8 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C0C0200, // 000A CALL R3 1 + 0x000E0403, // 000B ADD R3 K2 R3 + 0x58100003, // 000C LDCONST R4 K3 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x8C080505, // 000F GETMET R2 R2 K5 + 0x5C100000, // 0010 MOVE R4 R0 + 0x58140006, // 0011 LDCONST R5 K6 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C080800, // 0013 CALL R2 4 + 0x90020002, // 0014 SETMBR R0 K0 R2 + 0x88080100, // 0015 GETMBR R2 R0 K0 + 0x8C080507, // 0016 GETMET R2 R2 K7 + 0x84100000, // 0017 CLOSURE R4 P0 + 0x7C080400, // 0018 CALL R2 2 + 0xA0000000, // 0019 CLOSE R0 + 0x80000000, // 001A RET 0 }) ) ); @@ -3714,7 +3669,7 @@ be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_check_config_ep, /* name */ be_nested_proto( - 11, /* nstack */ + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3722,26 +3677,25 @@ be_local_closure(class_Matter_Device_check_config_ep, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ + ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_config), /* K1 */ be_nested_str_weak(keys), /* K2 */ be_nested_str_weak(push), /* K3 */ be_nested_str_weak(stop_iteration), /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_nested_str_weak(matter), - /* K11 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K12 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), - /* K13 */ be_nested_str_weak(next_ep), - /* K14 */ be_const_int(1), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), + /* K12 */ be_nested_str_weak(next_ep), + /* K13 */ be_const_int(1), }), be_str_weak(check_config_ep), &be_const_str_solidified, - ( &(const binstruction[79]) { /* code */ + ( &(const binstruction[77]) { /* code */ 0x50040000, // 0000 LDBOOL R1 0 0 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 @@ -3765,62 +3719,60 @@ be_local_closure(class_Matter_Device_check_config_ep, /* name */ 0x600C0010, // 0014 GETGBL R3 G16 0x5C100400, // 0015 MOVE R4 R2 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020032, // 0017 EXBLK 0 #004B + 0xA8020030, // 0017 EXBLK 0 #0049 0x5C100600, // 0018 MOVE R4 R3 0x7C100000, // 0019 CALL R4 0 0x1C140904, // 001A EQ R5 R4 K4 - 0x7816000C, // 001B JMPF R5 #0029 + 0x7816000B, // 001B JMPF R5 #0028 0xB8160A00, // 001C GETNGBL R5 K5 - 0x8C140B06, // 001D GETMET R5 R5 K6 + 0x58180006, // 001D LDCONST R6 K6 0x581C0007, // 001E LDCONST R7 K7 - 0x58200008, // 001F LDCONST R8 K8 - 0x7C140600, // 0020 CALL R5 3 - 0x88140100, // 0021 GETMBR R5 R0 K0 - 0x8C140B09, // 0022 GETMET R5 R5 K9 - 0x601C0008, // 0023 GETGBL R7 G8 - 0x5C200800, // 0024 MOVE R8 R4 - 0x7C1C0200, // 0025 CALL R7 1 - 0x7C140400, // 0026 CALL R5 2 - 0x50040200, // 0027 LDBOOL R1 1 0 - 0x70020020, // 0028 JMP #004A - 0xB8161400, // 0029 GETNGBL R5 K10 - 0x88140B0B, // 002A GETMBR R5 R5 K11 - 0x1C140805, // 002B EQ R5 R4 R5 - 0x7816001C, // 002C JMPF R5 #004A - 0x50040200, // 002D LDBOOL R1 1 0 - 0xB8160A00, // 002E GETNGBL R5 K5 - 0x8C140B06, // 002F GETMET R5 R5 K6 - 0x601C0018, // 0030 GETGBL R7 G24 - 0x5820000C, // 0031 LDCONST R8 K12 - 0x5C240800, // 0032 MOVE R9 R4 - 0x8828010D, // 0033 GETMBR R10 R0 K13 - 0x7C1C0600, // 0034 CALL R7 3 - 0x58200008, // 0035 LDCONST R8 K8 - 0x7C140600, // 0036 CALL R5 3 - 0x60140008, // 0037 GETGBL R5 G8 - 0x8818010D, // 0038 GETMBR R6 R0 K13 - 0x7C140200, // 0039 CALL R5 1 - 0x88180100, // 003A GETMBR R6 R0 K0 - 0x601C0008, // 003B GETGBL R7 G8 - 0x5C200800, // 003C MOVE R8 R4 - 0x7C1C0200, // 003D CALL R7 1 - 0x88200100, // 003E GETMBR R8 R0 K0 - 0x941C1007, // 003F GETIDX R7 R8 R7 - 0x98180A07, // 0040 SETIDX R6 R5 R7 - 0x88140100, // 0041 GETMBR R5 R0 K0 - 0x8C140B09, // 0042 GETMET R5 R5 K9 - 0x601C0008, // 0043 GETGBL R7 G8 - 0x5C200800, // 0044 MOVE R8 R4 - 0x7C1C0200, // 0045 CALL R7 1 - 0x7C140400, // 0046 CALL R5 2 - 0x8814010D, // 0047 GETMBR R5 R0 K13 - 0x00140B0E, // 0048 ADD R5 R5 K14 - 0x90021A05, // 0049 SETMBR R0 K13 R5 - 0x7001FFCC, // 004A JMP #0018 - 0x580C0003, // 004B LDCONST R3 K3 - 0xAC0C0200, // 004C CATCH R3 1 0 - 0xB0080000, // 004D RAISE 2 R0 R0 - 0x80040200, // 004E RET 1 R1 + 0x7C140400, // 001F CALL R5 2 + 0x88140100, // 0020 GETMBR R5 R0 K0 + 0x8C140B08, // 0021 GETMET R5 R5 K8 + 0x601C0008, // 0022 GETGBL R7 G8 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C1C0200, // 0024 CALL R7 1 + 0x7C140400, // 0025 CALL R5 2 + 0x50040200, // 0026 LDBOOL R1 1 0 + 0x7002001F, // 0027 JMP #0048 + 0xB8161200, // 0028 GETNGBL R5 K9 + 0x88140B0A, // 0029 GETMBR R5 R5 K10 + 0x1C140805, // 002A EQ R5 R4 R5 + 0x7816001B, // 002B JMPF R5 #0048 + 0x50040200, // 002C LDBOOL R1 1 0 + 0xB8160A00, // 002D GETNGBL R5 K5 + 0x60180018, // 002E GETGBL R6 G24 + 0x581C000B, // 002F LDCONST R7 K11 + 0x5C200800, // 0030 MOVE R8 R4 + 0x8824010C, // 0031 GETMBR R9 R0 K12 + 0x7C180600, // 0032 CALL R6 3 + 0x581C0007, // 0033 LDCONST R7 K7 + 0x7C140400, // 0034 CALL R5 2 + 0x60140008, // 0035 GETGBL R5 G8 + 0x8818010C, // 0036 GETMBR R6 R0 K12 + 0x7C140200, // 0037 CALL R5 1 + 0x88180100, // 0038 GETMBR R6 R0 K0 + 0x601C0008, // 0039 GETGBL R7 G8 + 0x5C200800, // 003A MOVE R8 R4 + 0x7C1C0200, // 003B CALL R7 1 + 0x88200100, // 003C GETMBR R8 R0 K0 + 0x941C1007, // 003D GETIDX R7 R8 R7 + 0x98180A07, // 003E SETIDX R6 R5 R7 + 0x88140100, // 003F GETMBR R5 R0 K0 + 0x8C140B08, // 0040 GETMET R5 R5 K8 + 0x601C0008, // 0041 GETGBL R7 G8 + 0x5C200800, // 0042 MOVE R8 R4 + 0x7C1C0200, // 0043 CALL R7 1 + 0x7C140400, // 0044 CALL R5 2 + 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x00140B0D, // 0046 ADD R5 R5 K13 + 0x90021805, // 0047 SETMBR R0 K12 R5 + 0x7001FFCE, // 0048 JMP #0018 + 0x580C0003, // 0049 LDCONST R3 K3 + 0xAC0C0200, // 004A CATCH R3 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80040200, // 004C RET 1 R1 }) ) ); @@ -4084,11 +4036,11 @@ be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name * ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(PASE_TIMEOUT), /* K1 */ be_nested_str_weak(compute_manual_pairing_code), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(compute_qrcode_content), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(compute_qrcode_content), + /* K6 */ be_nested_str_weak(tasmota), /* K7 */ be_nested_str_weak(publish_result), /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), /* K9 */ be_nested_str_weak(Matter), @@ -4103,7 +4055,7 @@ be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name * }), be_str_weak(start_root_basic_commissioning), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ + ( &(const binstruction[39]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 @@ -4111,39 +4063,38 @@ be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name * 0x8C080101, // 0004 GETMET R2 R0 K1 0x7C080200, // 0005 CALL R2 1 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x8C0C0703, // 0007 GETMET R3 R3 K3 - 0x60140018, // 0008 GETGBL R5 G24 - 0x58180004, // 0009 LDCONST R6 K4 - 0x5C1C0400, // 000A MOVE R7 R2 - 0x7C140400, // 000B CALL R5 2 - 0x58180005, // 000C LDCONST R6 K5 - 0x7C0C0600, // 000D CALL R3 3 - 0x8C0C0106, // 000E GETMET R3 R0 K6 - 0x7C0C0200, // 000F CALL R3 1 - 0xB8120400, // 0010 GETNGBL R4 K2 - 0x8C100907, // 0011 GETMET R4 R4 K7 - 0x60180018, // 0012 GETGBL R6 G24 - 0x581C0008, // 0013 LDCONST R7 K8 - 0x5C200400, // 0014 MOVE R8 R2 - 0x5C240600, // 0015 MOVE R9 R3 - 0x7C180600, // 0016 CALL R6 3 - 0x581C0009, // 0017 LDCONST R7 K9 - 0x7C100600, // 0018 CALL R4 3 - 0x8C10010A, // 0019 GETMET R4 R0 K10 - 0x8818010B, // 001A GETMBR R6 R0 K11 - 0x881C010C, // 001B GETMBR R7 R0 K12 - 0x8820010D, // 001C GETMBR R8 R0 K13 - 0x7C100800, // 001D CALL R4 4 - 0x8C10010E, // 001E GETMET R4 R0 K14 - 0x5C180200, // 001F MOVE R6 R1 - 0x881C010C, // 0020 GETMBR R7 R0 K12 - 0x8820010F, // 0021 GETMBR R8 R0 K15 - 0x8824010D, // 0022 GETMBR R9 R0 K13 - 0x88280110, // 0023 GETMBR R10 R0 K16 - 0x882C0111, // 0024 GETMBR R11 R0 K17 - 0x4C300000, // 0025 LDNIL R12 - 0x7C101000, // 0026 CALL R4 8 - 0x80000000, // 0027 RET 0 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140003, // 0008 LDCONST R5 K3 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C100400, // 000A CALL R4 2 + 0x58140004, // 000B LDCONST R5 K4 + 0x7C0C0400, // 000C CALL R3 2 + 0x8C0C0105, // 000D GETMET R3 R0 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x8C100907, // 0010 GETMET R4 R4 K7 + 0x60180018, // 0011 GETGBL R6 G24 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x5C200400, // 0013 MOVE R8 R2 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C180600, // 0015 CALL R6 3 + 0x581C0009, // 0016 LDCONST R7 K9 + 0x7C100600, // 0017 CALL R4 3 + 0x8C10010A, // 0018 GETMET R4 R0 K10 + 0x8818010B, // 0019 GETMBR R6 R0 K11 + 0x881C010C, // 001A GETMBR R7 R0 K12 + 0x8820010D, // 001B GETMBR R8 R0 K13 + 0x7C100800, // 001C CALL R4 4 + 0x8C10010E, // 001D GETMET R4 R0 K14 + 0x5C180200, // 001E MOVE R6 R1 + 0x881C010C, // 001F GETMBR R7 R0 K12 + 0x8820010F, // 0020 GETMBR R8 R0 K15 + 0x8824010D, // 0021 GETMBR R9 R0 K13 + 0x88280110, // 0022 GETMBR R10 R0 K16 + 0x882C0111, // 0023 GETMBR R11 R0 K17 + 0x4C300000, // 0024 LDNIL R12 + 0x7C101000, // 0025 CALL R4 8 + 0x80000000, // 0026 RET 0 }) ) ); @@ -4288,7 +4239,7 @@ be_local_closure(class_Matter_Device_load_param, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ + ( &(const bvalue[35]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(FILENAME), /* K2 */ be_nested_str_weak(read), @@ -4306,32 +4257,31 @@ be_local_closure(class_Matter_Device_load_param, /* name */ /* K14 */ be_nested_str_weak(nextep), /* K15 */ be_nested_str_weak(plugins_config), /* K16 */ be_nested_str_weak(config), - /* K17 */ be_nested_str_weak(tasmota), - /* K18 */ be_nested_str_weak(log), - /* K19 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(adjust_next_ep), - /* K22 */ be_nested_str_weak(check_config_ep), - /* K23 */ be_nested_str_weak(plugins_persist), - /* K24 */ be_nested_str_weak(plugins_config_remotes), - /* K25 */ be_nested_str_weak(remotes), - /* K26 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), - /* K27 */ be_nested_str_weak(io_error), - /* K28 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), - /* K29 */ be_nested_str_weak(_X7C), - /* K30 */ be_const_int(2), - /* K31 */ be_nested_str_weak(random), - /* K32 */ be_nested_str_weak(get), - /* K33 */ be_const_int(0), - /* K34 */ be_nested_str_weak(generate_random_passcode), - /* K35 */ be_nested_str_weak(save_param), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str_weak(adjust_next_ep), + /* K21 */ be_nested_str_weak(check_config_ep), + /* K22 */ be_nested_str_weak(plugins_persist), + /* K23 */ be_nested_str_weak(plugins_config_remotes), + /* K24 */ be_nested_str_weak(remotes), + /* K25 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), + /* K26 */ be_nested_str_weak(io_error), + /* K27 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), + /* K28 */ be_nested_str_weak(_X7C), + /* K29 */ be_const_int(2), + /* K30 */ be_nested_str_weak(random), + /* K31 */ be_nested_str_weak(get), + /* K32 */ be_const_int(0), + /* K33 */ be_nested_str_weak(generate_random_passcode), + /* K34 */ be_nested_str_weak(save_param), }), be_str_weak(load_param), &be_const_str_solidified, - ( &(const binstruction[130]) { /* code */ + ( &(const binstruction[127]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x50080000, // 0001 LDBOOL R2 0 0 - 0xA8020050, // 0002 EXBLK 0 #0054 + 0xA802004E, // 0002 EXBLK 0 #0052 0x600C0011, // 0003 GETGBL R3 G17 0x88100101, // 0004 GETMBR R4 R0 K1 0x7C0C0200, // 0005 CALL R3 1 @@ -4379,86 +4329,83 @@ be_local_closure(class_Matter_Device_load_param, /* name */ 0x881C010F, // 002F GETMBR R7 R0 K15 0x4C200000, // 0030 LDNIL R8 0x201C0E08, // 0031 NE R7 R7 R8 - 0x781E000E, // 0032 JMPF R7 #0042 + 0x781E000D, // 0032 JMPF R7 #0041 0xB81E2200, // 0033 GETNGBL R7 K17 - 0x8C1C0F12, // 0034 GETMET R7 R7 K18 - 0x60240018, // 0035 GETGBL R9 G24 - 0x58280013, // 0036 LDCONST R10 K19 - 0x882C010F, // 0037 GETMBR R11 R0 K15 - 0x7C240400, // 0038 CALL R9 2 - 0x58280014, // 0039 LDCONST R10 K20 - 0x7C1C0600, // 003A CALL R7 3 - 0x8C1C0115, // 003B GETMET R7 R0 K21 - 0x7C1C0200, // 003C CALL R7 1 - 0x8C1C0116, // 003D GETMET R7 R0 K22 - 0x7C1C0200, // 003E CALL R7 1 - 0x5C080E00, // 003F MOVE R2 R7 - 0x501C0200, // 0040 LDBOOL R7 1 0 - 0x90022E07, // 0041 SETMBR R0 K23 R7 - 0x8C1C0D07, // 0042 GETMET R7 R6 K7 - 0x58240019, // 0043 LDCONST R9 K25 - 0x60280013, // 0044 GETGBL R10 G19 - 0x7C280000, // 0045 CALL R10 0 - 0x7C1C0600, // 0046 CALL R7 3 - 0x90023007, // 0047 SETMBR R0 K24 R7 - 0x881C0118, // 0048 GETMBR R7 R0 K24 - 0x781E0007, // 0049 JMPF R7 #0052 - 0xB81E2200, // 004A GETNGBL R7 K17 - 0x8C1C0F12, // 004B GETMET R7 R7 K18 - 0x60240008, // 004C GETGBL R9 G8 - 0x88280118, // 004D GETMBR R10 R0 K24 - 0x7C240200, // 004E CALL R9 1 - 0x00263409, // 004F ADD R9 K26 R9 - 0x58280014, // 0050 LDCONST R10 K20 - 0x7C1C0600, // 0051 CALL R7 3 - 0xA8040001, // 0052 EXBLK 1 1 - 0x70020012, // 0053 JMP #0067 - 0xAC0C0002, // 0054 CATCH R3 0 2 - 0x7002000F, // 0055 JMP #0066 - 0x2014071B, // 0056 NE R5 R3 K27 - 0x7816000C, // 0057 JMPF R5 #0065 - 0xB8162200, // 0058 GETNGBL R5 K17 - 0x8C140B12, // 0059 GETMET R5 R5 K18 - 0x601C0008, // 005A GETGBL R7 G8 - 0x5C200600, // 005B MOVE R8 R3 - 0x7C1C0200, // 005C CALL R7 1 - 0x001E3807, // 005D ADD R7 K28 R7 - 0x001C0F1D, // 005E ADD R7 R7 K29 - 0x60200008, // 005F GETGBL R8 G8 - 0x5C240800, // 0060 MOVE R9 R4 - 0x7C200200, // 0061 CALL R8 1 - 0x001C0E08, // 0062 ADD R7 R7 R8 - 0x5820001E, // 0063 LDCONST R8 K30 - 0x7C140600, // 0064 CALL R5 3 - 0x70020000, // 0065 JMP #0067 - 0xB0080000, // 0066 RAISE 2 R0 R0 - 0x880C0106, // 0067 GETMBR R3 R0 K6 - 0x4C100000, // 0068 LDNIL R4 - 0x1C0C0604, // 0069 EQ R3 R3 R4 - 0x780E000A, // 006A JMPF R3 #0076 - 0x8C0C031F, // 006B GETMET R3 R1 K31 - 0x5814001E, // 006C LDCONST R5 K30 - 0x7C0C0400, // 006D CALL R3 2 - 0x8C0C0720, // 006E GETMET R3 R3 K32 - 0x58140021, // 006F LDCONST R5 K33 - 0x5818001E, // 0070 LDCONST R6 K30 - 0x7C0C0600, // 0071 CALL R3 3 - 0x54120FFE, // 0072 LDINT R4 4095 - 0x2C0C0604, // 0073 AND R3 R3 R4 - 0x90020C03, // 0074 SETMBR R0 K6 R3 - 0x50080200, // 0075 LDBOOL R2 1 0 - 0x880C0109, // 0076 GETMBR R3 R0 K9 - 0x4C100000, // 0077 LDNIL R4 - 0x1C0C0604, // 0078 EQ R3 R3 R4 - 0x780E0003, // 0079 JMPF R3 #007E - 0x8C0C0122, // 007A GETMET R3 R0 K34 - 0x7C0C0200, // 007B CALL R3 1 - 0x90021203, // 007C SETMBR R0 K9 R3 - 0x50080200, // 007D LDBOOL R2 1 0 - 0x780A0001, // 007E JMPF R2 #0081 - 0x8C0C0123, // 007F GETMET R3 R0 K35 - 0x7C0C0200, // 0080 CALL R3 1 - 0x80000000, // 0081 RET 0 + 0x60200018, // 0034 GETGBL R8 G24 + 0x58240012, // 0035 LDCONST R9 K18 + 0x8828010F, // 0036 GETMBR R10 R0 K15 + 0x7C200400, // 0037 CALL R8 2 + 0x58240013, // 0038 LDCONST R9 K19 + 0x7C1C0400, // 0039 CALL R7 2 + 0x8C1C0114, // 003A GETMET R7 R0 K20 + 0x7C1C0200, // 003B CALL R7 1 + 0x8C1C0115, // 003C GETMET R7 R0 K21 + 0x7C1C0200, // 003D CALL R7 1 + 0x5C080E00, // 003E MOVE R2 R7 + 0x501C0200, // 003F LDBOOL R7 1 0 + 0x90022C07, // 0040 SETMBR R0 K22 R7 + 0x8C1C0D07, // 0041 GETMET R7 R6 K7 + 0x58240018, // 0042 LDCONST R9 K24 + 0x60280013, // 0043 GETGBL R10 G19 + 0x7C280000, // 0044 CALL R10 0 + 0x7C1C0600, // 0045 CALL R7 3 + 0x90022E07, // 0046 SETMBR R0 K23 R7 + 0x881C0117, // 0047 GETMBR R7 R0 K23 + 0x781E0006, // 0048 JMPF R7 #0050 + 0xB81E2200, // 0049 GETNGBL R7 K17 + 0x60200008, // 004A GETGBL R8 G8 + 0x88240117, // 004B GETMBR R9 R0 K23 + 0x7C200200, // 004C CALL R8 1 + 0x00223208, // 004D ADD R8 K25 R8 + 0x58240013, // 004E LDCONST R9 K19 + 0x7C1C0400, // 004F CALL R7 2 + 0xA8040001, // 0050 EXBLK 1 1 + 0x70020011, // 0051 JMP #0064 + 0xAC0C0002, // 0052 CATCH R3 0 2 + 0x7002000E, // 0053 JMP #0063 + 0x2014071A, // 0054 NE R5 R3 K26 + 0x7816000B, // 0055 JMPF R5 #0062 + 0xB8162200, // 0056 GETNGBL R5 K17 + 0x60180008, // 0057 GETGBL R6 G8 + 0x5C1C0600, // 0058 MOVE R7 R3 + 0x7C180200, // 0059 CALL R6 1 + 0x001A3606, // 005A ADD R6 K27 R6 + 0x00180D1C, // 005B ADD R6 R6 K28 + 0x601C0008, // 005C GETGBL R7 G8 + 0x5C200800, // 005D MOVE R8 R4 + 0x7C1C0200, // 005E CALL R7 1 + 0x00180C07, // 005F ADD R6 R6 R7 + 0x581C001D, // 0060 LDCONST R7 K29 + 0x7C140400, // 0061 CALL R5 2 + 0x70020000, // 0062 JMP #0064 + 0xB0080000, // 0063 RAISE 2 R0 R0 + 0x880C0106, // 0064 GETMBR R3 R0 K6 + 0x4C100000, // 0065 LDNIL R4 + 0x1C0C0604, // 0066 EQ R3 R3 R4 + 0x780E000A, // 0067 JMPF R3 #0073 + 0x8C0C031E, // 0068 GETMET R3 R1 K30 + 0x5814001D, // 0069 LDCONST R5 K29 + 0x7C0C0400, // 006A CALL R3 2 + 0x8C0C071F, // 006B GETMET R3 R3 K31 + 0x58140020, // 006C LDCONST R5 K32 + 0x5818001D, // 006D LDCONST R6 K29 + 0x7C0C0600, // 006E CALL R3 3 + 0x54120FFE, // 006F LDINT R4 4095 + 0x2C0C0604, // 0070 AND R3 R3 R4 + 0x90020C03, // 0071 SETMBR R0 K6 R3 + 0x50080200, // 0072 LDBOOL R2 1 0 + 0x880C0109, // 0073 GETMBR R3 R0 K9 + 0x4C100000, // 0074 LDNIL R4 + 0x1C0C0604, // 0075 EQ R3 R3 R4 + 0x780E0003, // 0076 JMPF R3 #007B + 0x8C0C0121, // 0077 GETMET R3 R0 K33 + 0x7C0C0200, // 0078 CALL R3 1 + 0x90021203, // 0079 SETMBR R0 K9 R3 + 0x50080200, // 007A LDBOOL R2 1 0 + 0x780A0001, // 007B JMPF R2 #007E + 0x8C0C0122, // 007C GETMET R3 R0 K34 + 0x7C0C0200, // 007D CALL R3 1 + 0x80000000, // 007E RET 0 }) ) ); @@ -4859,9 +4806,9 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ }), be_str_weak(mdns_remove_op_discovery), &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ + ( &(const binstruction[77]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802003B, // 0001 EXBLK 0 #003E + 0xA8020039, // 0001 EXBLK 0 #003C 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x7C0C0200, // 0003 CALL R3 1 0x8C0C0702, // 0004 GETMET R3 R3 K2 @@ -4882,64 +4829,61 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ 0x8C180D09, // 0013 GETMET R6 R6 K9 0x5820000A, // 0014 LDCONST R8 K10 0x7C180400, // 0015 CALL R6 2 - 0x781A000E, // 0016 JMPF R6 #0026 - 0xB81A0E00, // 0017 GETNGBL R6 K7 - 0x8C180D0B, // 0018 GETMET R6 R6 K11 - 0x60200018, // 0019 GETGBL R8 G24 - 0x5824000C, // 001A LDCONST R9 K12 - 0x58280008, // 001B LDCONST R10 K8 - 0x5C2C0A00, // 001C MOVE R11 R5 - 0x7C200600, // 001D CALL R8 3 - 0x5824000D, // 001E LDCONST R9 K13 - 0x7C180600, // 001F CALL R6 3 - 0x8C18050E, // 0020 GETMET R6 R2 K14 - 0x5820000F, // 0021 LDCONST R8 K15 - 0x58240010, // 0022 LDCONST R9 K16 - 0x5C280A00, // 0023 MOVE R10 R5 - 0x882C0111, // 0024 GETMBR R11 R0 K17 - 0x7C180A00, // 0025 CALL R6 5 - 0xB81A0E00, // 0026 GETNGBL R6 K7 - 0x8C180D12, // 0027 GETMET R6 R6 K18 - 0x7C180200, // 0028 CALL R6 1 - 0x8C180D09, // 0029 GETMET R6 R6 K9 - 0x5820000A, // 002A LDCONST R8 K10 - 0x7C180400, // 002B CALL R6 2 - 0x781A000E, // 002C JMPF R6 #003C - 0xB81A0E00, // 002D GETNGBL R6 K7 - 0x8C180D0B, // 002E GETMET R6 R6 K11 - 0x60200018, // 002F GETGBL R8 G24 - 0x5824000C, // 0030 LDCONST R9 K12 - 0x58280012, // 0031 LDCONST R10 K18 - 0x5C2C0A00, // 0032 MOVE R11 R5 - 0x7C200600, // 0033 CALL R8 3 - 0x5824000D, // 0034 LDCONST R9 K13 - 0x7C180600, // 0035 CALL R6 3 - 0x8C18050E, // 0036 GETMET R6 R2 K14 - 0x5820000F, // 0037 LDCONST R8 K15 - 0x58240010, // 0038 LDCONST R9 K16 - 0x5C280A00, // 0039 MOVE R10 R5 - 0x882C0113, // 003A GETMBR R11 R0 K19 - 0x7C180A00, // 003B CALL R6 5 - 0xA8040001, // 003C EXBLK 1 1 - 0x70020010, // 003D JMP #004F - 0xAC0C0002, // 003E CATCH R3 0 2 - 0x7002000D, // 003F JMP #004E - 0xB8160E00, // 0040 GETNGBL R5 K7 - 0x8C140B0B, // 0041 GETMET R5 R5 K11 - 0x601C0008, // 0042 GETGBL R7 G8 - 0x5C200600, // 0043 MOVE R8 R3 - 0x7C1C0200, // 0044 CALL R7 1 - 0x001E2807, // 0045 ADD R7 K20 R7 - 0x001C0F15, // 0046 ADD R7 R7 K21 - 0x60200008, // 0047 GETGBL R8 G8 - 0x5C240800, // 0048 MOVE R9 R4 - 0x7C200200, // 0049 CALL R8 1 - 0x001C0E08, // 004A ADD R7 R7 R8 - 0x58200016, // 004B LDCONST R8 K22 - 0x7C140600, // 004C CALL R5 3 - 0x70020000, // 004D JMP #004F - 0xB0080000, // 004E RAISE 2 R0 R0 - 0x80000000, // 004F RET 0 + 0x781A000D, // 0016 JMPF R6 #0025 + 0xB81A1600, // 0017 GETNGBL R6 K11 + 0x601C0018, // 0018 GETGBL R7 G24 + 0x5820000C, // 0019 LDCONST R8 K12 + 0x58240008, // 001A LDCONST R9 K8 + 0x5C280A00, // 001B MOVE R10 R5 + 0x7C1C0600, // 001C CALL R7 3 + 0x5820000D, // 001D LDCONST R8 K13 + 0x7C180400, // 001E CALL R6 2 + 0x8C18050E, // 001F GETMET R6 R2 K14 + 0x5820000F, // 0020 LDCONST R8 K15 + 0x58240010, // 0021 LDCONST R9 K16 + 0x5C280A00, // 0022 MOVE R10 R5 + 0x882C0111, // 0023 GETMBR R11 R0 K17 + 0x7C180A00, // 0024 CALL R6 5 + 0xB81A0E00, // 0025 GETNGBL R6 K7 + 0x8C180D12, // 0026 GETMET R6 R6 K18 + 0x7C180200, // 0027 CALL R6 1 + 0x8C180D09, // 0028 GETMET R6 R6 K9 + 0x5820000A, // 0029 LDCONST R8 K10 + 0x7C180400, // 002A CALL R6 2 + 0x781A000D, // 002B JMPF R6 #003A + 0xB81A1600, // 002C GETNGBL R6 K11 + 0x601C0018, // 002D GETGBL R7 G24 + 0x5820000C, // 002E LDCONST R8 K12 + 0x58240012, // 002F LDCONST R9 K18 + 0x5C280A00, // 0030 MOVE R10 R5 + 0x7C1C0600, // 0031 CALL R7 3 + 0x5820000D, // 0032 LDCONST R8 K13 + 0x7C180400, // 0033 CALL R6 2 + 0x8C18050E, // 0034 GETMET R6 R2 K14 + 0x5820000F, // 0035 LDCONST R8 K15 + 0x58240010, // 0036 LDCONST R9 K16 + 0x5C280A00, // 0037 MOVE R10 R5 + 0x882C0113, // 0038 GETMBR R11 R0 K19 + 0x7C180A00, // 0039 CALL R6 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC0C0002, // 003C CATCH R3 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8161600, // 003E GETNGBL R5 K11 + 0x60180008, // 003F GETGBL R6 G8 + 0x5C1C0600, // 0040 MOVE R7 R3 + 0x7C180200, // 0041 CALL R6 1 + 0x001A2806, // 0042 ADD R6 K20 R6 + 0x00180D15, // 0043 ADD R6 R6 K21 + 0x601C0008, // 0044 GETGBL R7 G8 + 0x5C200800, // 0045 MOVE R8 R4 + 0x7C1C0200, // 0046 CALL R7 1 + 0x00180C07, // 0047 ADD R6 R6 R7 + 0x581C0016, // 0048 LDCONST R7 K22 + 0x7C140400, // 0049 CALL R5 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 }) ) ); @@ -5177,7 +5121,7 @@ be_local_closure(class_Matter_Device_MtrJoin, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_save_param, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5185,7 +5129,7 @@ be_local_closure(class_Matter_Device_save_param, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ + ( &(const bvalue[29]) { /* constants */ /* K0 */ be_nested_str_weak(json), /* K1 */ be_nested_str_weak(update_remotes_info), /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), @@ -5208,18 +5152,17 @@ be_local_closure(class_Matter_Device_save_param, /* name */ /* K19 */ be_nested_str_weak(w), /* K20 */ be_nested_str_weak(write), /* K21 */ be_nested_str_weak(close), - /* K22 */ be_nested_str_weak(tasmota), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K25 */ be_nested_str_weak(_X20and_X20configuration), - /* K26 */ be_nested_str_weak(), - /* K27 */ be_const_int(2), - /* K28 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K29 */ be_nested_str_weak(_X7C), + /* K22 */ be_nested_str_weak(log), + /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K24 */ be_nested_str_weak(_X20and_X20configuration), + /* K25 */ be_nested_str_weak(), + /* K26 */ be_const_int(2), + /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K28 */ be_nested_str_weak(_X7C), }), be_str_weak(save_param), &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ + ( &(const binstruction[80]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080101, // 0001 GETMET R2 R0 K1 0x7C080200, // 0002 CALL R2 1 @@ -5257,7 +5200,7 @@ be_local_closure(class_Matter_Device_save_param, /* name */ 0x7C0C0400, // 0022 CALL R3 2 0x00080403, // 0023 ADD R2 R2 R3 0x00080511, // 0024 ADD R2 R2 K17 - 0xA8020018, // 0025 EXBLK 0 #003F + 0xA8020017, // 0025 EXBLK 0 #003E 0x600C0011, // 0026 GETGBL R3 G17 0x88100112, // 0027 GETMBR R4 R0 K18 0x58140013, // 0028 LDCONST R5 K19 @@ -5268,40 +5211,38 @@ be_local_closure(class_Matter_Device_save_param, /* name */ 0x8C100715, // 002D GETMET R4 R3 K21 0x7C100200, // 002E CALL R4 1 0xB8122C00, // 002F GETNGBL R4 K22 - 0x8C100917, // 0030 GETMET R4 R4 K23 - 0x60180018, // 0031 GETGBL R6 G24 - 0x581C0018, // 0032 LDCONST R7 K24 - 0x8820010A, // 0033 GETMBR R8 R0 K10 - 0x78220001, // 0034 JMPF R8 #0037 - 0x58200019, // 0035 LDCONST R8 K25 - 0x70020000, // 0036 JMP #0038 - 0x5820001A, // 0037 LDCONST R8 K26 - 0x7C180400, // 0038 CALL R6 2 - 0x581C001B, // 0039 LDCONST R7 K27 - 0x7C100600, // 003A CALL R4 3 - 0xA8040001, // 003B EXBLK 1 1 - 0x80040400, // 003C RET 1 R2 - 0xA8040001, // 003D EXBLK 1 1 - 0x70020011, // 003E JMP #0051 - 0xAC0C0002, // 003F CATCH R3 0 2 - 0x7002000E, // 0040 JMP #0050 - 0xB8162C00, // 0041 GETNGBL R5 K22 - 0x8C140B17, // 0042 GETMET R5 R5 K23 - 0x601C0008, // 0043 GETGBL R7 G8 - 0x5C200600, // 0044 MOVE R8 R3 - 0x7C1C0200, // 0045 CALL R7 1 - 0x001E3807, // 0046 ADD R7 K28 R7 - 0x001C0F1D, // 0047 ADD R7 R7 K29 - 0x60200008, // 0048 GETGBL R8 G8 - 0x5C240800, // 0049 MOVE R9 R4 - 0x7C200200, // 004A CALL R8 1 - 0x001C0E08, // 004B ADD R7 R7 R8 - 0x5820001B, // 004C LDCONST R8 K27 - 0x7C140600, // 004D CALL R5 3 - 0x80040400, // 004E RET 1 R2 - 0x70020000, // 004F JMP #0051 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x80000000, // 0051 RET 0 + 0x60140018, // 0030 GETGBL R5 G24 + 0x58180017, // 0031 LDCONST R6 K23 + 0x881C010A, // 0032 GETMBR R7 R0 K10 + 0x781E0001, // 0033 JMPF R7 #0036 + 0x581C0018, // 0034 LDCONST R7 K24 + 0x70020000, // 0035 JMP #0037 + 0x581C0019, // 0036 LDCONST R7 K25 + 0x7C140400, // 0037 CALL R5 2 + 0x5818001A, // 0038 LDCONST R6 K26 + 0x7C100400, // 0039 CALL R4 2 + 0xA8040001, // 003A EXBLK 1 1 + 0x80040400, // 003B RET 1 R2 + 0xA8040001, // 003C EXBLK 1 1 + 0x70020010, // 003D JMP #004F + 0xAC0C0002, // 003E CATCH R3 0 2 + 0x7002000D, // 003F JMP #004E + 0xB8162C00, // 0040 GETNGBL R5 K22 + 0x60180008, // 0041 GETGBL R6 G8 + 0x5C1C0600, // 0042 MOVE R7 R3 + 0x7C180200, // 0043 CALL R6 1 + 0x001A3606, // 0044 ADD R6 K27 R6 + 0x00180D1C, // 0045 ADD R6 R6 K28 + 0x601C0008, // 0046 GETGBL R7 G8 + 0x5C200800, // 0047 MOVE R8 R4 + 0x7C1C0200, // 0048 CALL R7 1 + 0x00180C07, // 0049 ADD R6 R6 R7 + 0x581C001A, // 004A LDCONST R7 K26 + 0x7C140400, // 004B CALL R5 2 + 0x80040400, // 004C RET 1 R2 + 0x70020000, // 004D JMP #004F + 0xB0080000, // 004E RAISE 2 R0 R0 + 0x80000000, // 004F RET 0 }) ) ); @@ -5795,7 +5736,7 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[41]) { /* constants */ + ( &(const bvalue[40]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), /* K1 */ be_nested_str_weak(crypto), /* K2 */ be_nested_str_weak(VP), @@ -5819,28 +5760,27 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ /* K20 */ be_nested_str_weak(_matterc), /* K21 */ be_nested_str_weak(_udp), /* K22 */ be_nested_str_weak(mdns_pase_eth), - /* K23 */ be_nested_str_weak(tasmota), - /* K24 */ be_nested_str_weak(log), - /* K25 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K26 */ be_nested_str_weak(eth), - /* K27 */ be_const_int(2), - /* K28 */ be_nested_str_weak(_L), - /* K29 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K30 */ be_const_int(3), - /* K31 */ be_nested_str_weak(add_subtype), - /* K32 */ be_nested_str_weak(_S), - /* K33 */ be_nested_str_weak(_V), - /* K34 */ be_nested_str_weak(_CM1), - /* K35 */ be_nested_str_weak(hostname_wifi), - /* K36 */ be_nested_str_weak(mdns_pase_wifi), - /* K37 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K38 */ be_nested_str_weak(wifi), - /* K39 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K40 */ be_nested_str_weak(_X7C), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K25 */ be_nested_str_weak(eth), + /* K26 */ be_const_int(2), + /* K27 */ be_nested_str_weak(_L), + /* K28 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K29 */ be_const_int(3), + /* K30 */ be_nested_str_weak(add_subtype), + /* K31 */ be_nested_str_weak(_S), + /* K32 */ be_nested_str_weak(_V), + /* K33 */ be_nested_str_weak(_CM1), + /* K34 */ be_nested_str_weak(hostname_wifi), + /* K35 */ be_nested_str_weak(mdns_pase_wifi), + /* K36 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K37 */ be_nested_str_weak(wifi), + /* K38 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K39 */ be_nested_str_weak(_X7C), }), be_str_weak(mdns_announce_PASE), &be_const_str_solidified, - ( &(const binstruction[236]) { /* code */ + ( &(const binstruction[225]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0xA40A0200, // 0001 IMPORT R2 K1 0x600C0013, // 0002 GETGBL R3 G19 @@ -5874,9 +5814,9 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ 0x8C100910, // 001E GETMET R4 R4 K16 0x7C100200, // 001F CALL R4 1 0x90022204, // 0020 SETMBR R0 K17 R4 - 0xA80200B7, // 0021 EXBLK 0 #00DA + 0xA80200AD, // 0021 EXBLK 0 #00D0 0x88100112, // 0022 GETMBR R4 R0 K18 - 0x78120058, // 0023 JMPF R4 #007D + 0x78120053, // 0023 JMPF R4 #0078 0x8C100313, // 0024 GETMET R4 R1 K19 0x58180014, // 0025 LDCONST R6 K20 0x581C0015, // 0026 LDCONST R7 K21 @@ -5888,195 +5828,184 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ 0x50100200, // 002C LDBOOL R4 1 0 0x90022C04, // 002D SETMBR R0 K22 R4 0xB8122E00, // 002E GETNGBL R4 K23 - 0x8C100918, // 002F GETMET R4 R4 K24 - 0x60180018, // 0030 GETGBL R6 G24 + 0x60140018, // 002F GETGBL R5 G24 + 0x58180018, // 0030 LDCONST R6 K24 0x581C0019, // 0031 LDCONST R7 K25 - 0x5820001A, // 0032 LDCONST R8 K26 - 0x88240111, // 0033 GETMBR R9 R0 K17 - 0x88280112, // 0034 GETMBR R10 R0 K18 - 0x7C180800, // 0035 CALL R6 4 - 0x581C001B, // 0036 LDCONST R7 K27 - 0x7C100600, // 0037 CALL R4 3 - 0x60100008, // 0038 GETGBL R4 G8 - 0x88140107, // 0039 GETMBR R5 R0 K7 - 0x541A0FFE, // 003A LDINT R6 4095 - 0x2C140A06, // 003B AND R5 R5 R6 - 0x7C100200, // 003C CALL R4 1 - 0x00123804, // 003D ADD R4 K28 R4 - 0xB8162E00, // 003E GETNGBL R5 K23 - 0x8C140B18, // 003F GETMET R5 R5 K24 - 0x001E3A04, // 0040 ADD R7 K29 R4 - 0x5820001E, // 0041 LDCONST R8 K30 - 0x7C140600, // 0042 CALL R5 3 - 0x8C14031F, // 0043 GETMET R5 R1 K31 - 0x581C0014, // 0044 LDCONST R7 K20 - 0x58200015, // 0045 LDCONST R8 K21 - 0x88240111, // 0046 GETMBR R9 R0 K17 - 0x88280112, // 0047 GETMBR R10 R0 K18 - 0x5C2C0800, // 0048 MOVE R11 R4 - 0x7C140C00, // 0049 CALL R5 6 - 0x60140008, // 004A GETGBL R5 G8 - 0x88180107, // 004B GETMBR R6 R0 K7 - 0x541E0EFF, // 004C LDINT R7 3840 - 0x2C180C07, // 004D AND R6 R6 R7 - 0x541E0007, // 004E LDINT R7 8 - 0x3C180C07, // 004F SHR R6 R6 R7 - 0x7C140200, // 0050 CALL R5 1 - 0x00164005, // 0051 ADD R5 K32 R5 - 0x5C100A00, // 0052 MOVE R4 R5 - 0xB8162E00, // 0053 GETNGBL R5 K23 - 0x8C140B18, // 0054 GETMET R5 R5 K24 - 0x001E3A04, // 0055 ADD R7 K29 R4 - 0x5820001E, // 0056 LDCONST R8 K30 - 0x7C140600, // 0057 CALL R5 3 - 0x8C14031F, // 0058 GETMET R5 R1 K31 - 0x581C0014, // 0059 LDCONST R7 K20 - 0x58200015, // 005A LDCONST R8 K21 - 0x88240111, // 005B GETMBR R9 R0 K17 - 0x88280112, // 005C GETMBR R10 R0 K18 - 0x5C2C0800, // 005D MOVE R11 R4 - 0x7C140C00, // 005E CALL R5 6 - 0x60140008, // 005F GETGBL R5 G8 - 0x88180103, // 0060 GETMBR R6 R0 K3 - 0x7C140200, // 0061 CALL R5 1 - 0x00164205, // 0062 ADD R5 K33 R5 - 0x5C100A00, // 0063 MOVE R4 R5 - 0xB8162E00, // 0064 GETNGBL R5 K23 - 0x8C140B18, // 0065 GETMET R5 R5 K24 - 0x001E3A04, // 0066 ADD R7 K29 R4 - 0x5820001E, // 0067 LDCONST R8 K30 - 0x7C140600, // 0068 CALL R5 3 - 0x8C14031F, // 0069 GETMET R5 R1 K31 - 0x581C0014, // 006A LDCONST R7 K20 - 0x58200015, // 006B LDCONST R8 K21 - 0x88240111, // 006C GETMBR R9 R0 K17 - 0x88280112, // 006D GETMBR R10 R0 K18 - 0x5C2C0800, // 006E MOVE R11 R4 - 0x7C140C00, // 006F CALL R5 6 - 0x58100022, // 0070 LDCONST R4 K34 - 0xB8162E00, // 0071 GETNGBL R5 K23 - 0x8C140B18, // 0072 GETMET R5 R5 K24 - 0x001E3A04, // 0073 ADD R7 K29 R4 - 0x5820001E, // 0074 LDCONST R8 K30 - 0x7C140600, // 0075 CALL R5 3 - 0x8C14031F, // 0076 GETMET R5 R1 K31 - 0x581C0014, // 0077 LDCONST R7 K20 - 0x58200015, // 0078 LDCONST R8 K21 - 0x88240111, // 0079 GETMBR R9 R0 K17 - 0x88280112, // 007A GETMBR R10 R0 K18 - 0x5C2C0800, // 007B MOVE R11 R4 - 0x7C140C00, // 007C CALL R5 6 - 0x88100123, // 007D GETMBR R4 R0 K35 - 0x78120058, // 007E JMPF R4 #00D8 - 0x8C100313, // 007F GETMET R4 R1 K19 - 0x58180014, // 0080 LDCONST R6 K20 - 0x581C0015, // 0081 LDCONST R7 K21 - 0x542215A3, // 0082 LDINT R8 5540 - 0x5C240600, // 0083 MOVE R9 R3 - 0x8828010E, // 0084 GETMBR R10 R0 K14 - 0x882C0123, // 0085 GETMBR R11 R0 K35 - 0x7C100E00, // 0086 CALL R4 7 - 0x50100200, // 0087 LDBOOL R4 1 0 - 0x90024804, // 0088 SETMBR R0 K36 R4 - 0xB8122E00, // 0089 GETNGBL R4 K23 - 0x8C100918, // 008A GETMET R4 R4 K24 - 0x60180018, // 008B GETGBL R6 G24 - 0x581C0025, // 008C LDCONST R7 K37 - 0x58200026, // 008D LDCONST R8 K38 - 0x8824010E, // 008E GETMBR R9 R0 K14 - 0x88280123, // 008F GETMBR R10 R0 K35 - 0x7C180800, // 0090 CALL R6 4 - 0x581C001E, // 0091 LDCONST R7 K30 - 0x7C100600, // 0092 CALL R4 3 - 0x60100008, // 0093 GETGBL R4 G8 - 0x88140107, // 0094 GETMBR R5 R0 K7 - 0x541A0FFE, // 0095 LDINT R6 4095 - 0x2C140A06, // 0096 AND R5 R5 R6 - 0x7C100200, // 0097 CALL R4 1 - 0x00123804, // 0098 ADD R4 K28 R4 - 0xB8162E00, // 0099 GETNGBL R5 K23 - 0x8C140B18, // 009A GETMET R5 R5 K24 - 0x001E3A04, // 009B ADD R7 K29 R4 - 0x5820001E, // 009C LDCONST R8 K30 - 0x7C140600, // 009D CALL R5 3 - 0x8C14031F, // 009E GETMET R5 R1 K31 - 0x581C0014, // 009F LDCONST R7 K20 - 0x58200015, // 00A0 LDCONST R8 K21 - 0x8824010E, // 00A1 GETMBR R9 R0 K14 - 0x88280123, // 00A2 GETMBR R10 R0 K35 - 0x5C2C0800, // 00A3 MOVE R11 R4 - 0x7C140C00, // 00A4 CALL R5 6 - 0x60140008, // 00A5 GETGBL R5 G8 - 0x88180107, // 00A6 GETMBR R6 R0 K7 - 0x541E0EFF, // 00A7 LDINT R7 3840 - 0x2C180C07, // 00A8 AND R6 R6 R7 - 0x541E0007, // 00A9 LDINT R7 8 - 0x3C180C07, // 00AA SHR R6 R6 R7 - 0x7C140200, // 00AB CALL R5 1 - 0x00164005, // 00AC ADD R5 K32 R5 - 0x5C100A00, // 00AD MOVE R4 R5 - 0xB8162E00, // 00AE GETNGBL R5 K23 - 0x8C140B18, // 00AF GETMET R5 R5 K24 - 0x001E3A04, // 00B0 ADD R7 K29 R4 - 0x5820001E, // 00B1 LDCONST R8 K30 - 0x7C140600, // 00B2 CALL R5 3 - 0x8C14031F, // 00B3 GETMET R5 R1 K31 - 0x581C0014, // 00B4 LDCONST R7 K20 - 0x58200015, // 00B5 LDCONST R8 K21 - 0x8824010E, // 00B6 GETMBR R9 R0 K14 - 0x88280123, // 00B7 GETMBR R10 R0 K35 - 0x5C2C0800, // 00B8 MOVE R11 R4 - 0x7C140C00, // 00B9 CALL R5 6 - 0x60140008, // 00BA GETGBL R5 G8 - 0x88180103, // 00BB GETMBR R6 R0 K3 - 0x7C140200, // 00BC CALL R5 1 - 0x00164205, // 00BD ADD R5 K33 R5 - 0x5C100A00, // 00BE MOVE R4 R5 - 0xB8162E00, // 00BF GETNGBL R5 K23 - 0x8C140B18, // 00C0 GETMET R5 R5 K24 - 0x001E3A04, // 00C1 ADD R7 K29 R4 - 0x5820001E, // 00C2 LDCONST R8 K30 - 0x7C140600, // 00C3 CALL R5 3 - 0x8C14031F, // 00C4 GETMET R5 R1 K31 - 0x581C0014, // 00C5 LDCONST R7 K20 - 0x58200015, // 00C6 LDCONST R8 K21 - 0x8824010E, // 00C7 GETMBR R9 R0 K14 - 0x88280123, // 00C8 GETMBR R10 R0 K35 - 0x5C2C0800, // 00C9 MOVE R11 R4 - 0x7C140C00, // 00CA CALL R5 6 - 0x58100022, // 00CB LDCONST R4 K34 - 0xB8162E00, // 00CC GETNGBL R5 K23 - 0x8C140B18, // 00CD GETMET R5 R5 K24 - 0x001E3A04, // 00CE ADD R7 K29 R4 - 0x5820001E, // 00CF LDCONST R8 K30 - 0x7C140600, // 00D0 CALL R5 3 - 0x8C14031F, // 00D1 GETMET R5 R1 K31 - 0x581C0014, // 00D2 LDCONST R7 K20 - 0x58200015, // 00D3 LDCONST R8 K21 - 0x8824010E, // 00D4 GETMBR R9 R0 K14 - 0x88280123, // 00D5 GETMBR R10 R0 K35 - 0x5C2C0800, // 00D6 MOVE R11 R4 - 0x7C140C00, // 00D7 CALL R5 6 - 0xA8040001, // 00D8 EXBLK 1 1 - 0x70020010, // 00D9 JMP #00EB - 0xAC100002, // 00DA CATCH R4 0 2 - 0x7002000D, // 00DB JMP #00EA - 0xB81A2E00, // 00DC GETNGBL R6 K23 - 0x8C180D18, // 00DD GETMET R6 R6 K24 - 0x60200008, // 00DE GETGBL R8 G8 - 0x5C240800, // 00DF MOVE R9 R4 - 0x7C200200, // 00E0 CALL R8 1 - 0x00224E08, // 00E1 ADD R8 K39 R8 - 0x00201128, // 00E2 ADD R8 R8 K40 - 0x60240008, // 00E3 GETGBL R9 G8 - 0x5C280A00, // 00E4 MOVE R10 R5 - 0x7C240200, // 00E5 CALL R9 1 - 0x00201009, // 00E6 ADD R8 R8 R9 - 0x5824001B, // 00E7 LDCONST R9 K27 - 0x7C180600, // 00E8 CALL R6 3 - 0x70020000, // 00E9 JMP #00EB - 0xB0080000, // 00EA RAISE 2 R0 R0 - 0x80000000, // 00EB RET 0 + 0x88200111, // 0032 GETMBR R8 R0 K17 + 0x88240112, // 0033 GETMBR R9 R0 K18 + 0x7C140800, // 0034 CALL R5 4 + 0x5818001A, // 0035 LDCONST R6 K26 + 0x7C100400, // 0036 CALL R4 2 + 0x60100008, // 0037 GETGBL R4 G8 + 0x88140107, // 0038 GETMBR R5 R0 K7 + 0x541A0FFE, // 0039 LDINT R6 4095 + 0x2C140A06, // 003A AND R5 R5 R6 + 0x7C100200, // 003B CALL R4 1 + 0x00123604, // 003C ADD R4 K27 R4 + 0xB8162E00, // 003D GETNGBL R5 K23 + 0x001A3804, // 003E ADD R6 K28 R4 + 0x581C001D, // 003F LDCONST R7 K29 + 0x7C140400, // 0040 CALL R5 2 + 0x8C14031E, // 0041 GETMET R5 R1 K30 + 0x581C0014, // 0042 LDCONST R7 K20 + 0x58200015, // 0043 LDCONST R8 K21 + 0x88240111, // 0044 GETMBR R9 R0 K17 + 0x88280112, // 0045 GETMBR R10 R0 K18 + 0x5C2C0800, // 0046 MOVE R11 R4 + 0x7C140C00, // 0047 CALL R5 6 + 0x60140008, // 0048 GETGBL R5 G8 + 0x88180107, // 0049 GETMBR R6 R0 K7 + 0x541E0EFF, // 004A LDINT R7 3840 + 0x2C180C07, // 004B AND R6 R6 R7 + 0x541E0007, // 004C LDINT R7 8 + 0x3C180C07, // 004D SHR R6 R6 R7 + 0x7C140200, // 004E CALL R5 1 + 0x00163E05, // 004F ADD R5 K31 R5 + 0x5C100A00, // 0050 MOVE R4 R5 + 0xB8162E00, // 0051 GETNGBL R5 K23 + 0x001A3804, // 0052 ADD R6 K28 R4 + 0x581C001D, // 0053 LDCONST R7 K29 + 0x7C140400, // 0054 CALL R5 2 + 0x8C14031E, // 0055 GETMET R5 R1 K30 + 0x581C0014, // 0056 LDCONST R7 K20 + 0x58200015, // 0057 LDCONST R8 K21 + 0x88240111, // 0058 GETMBR R9 R0 K17 + 0x88280112, // 0059 GETMBR R10 R0 K18 + 0x5C2C0800, // 005A MOVE R11 R4 + 0x7C140C00, // 005B CALL R5 6 + 0x60140008, // 005C GETGBL R5 G8 + 0x88180103, // 005D GETMBR R6 R0 K3 + 0x7C140200, // 005E CALL R5 1 + 0x00164005, // 005F ADD R5 K32 R5 + 0x5C100A00, // 0060 MOVE R4 R5 + 0xB8162E00, // 0061 GETNGBL R5 K23 + 0x001A3804, // 0062 ADD R6 K28 R4 + 0x581C001D, // 0063 LDCONST R7 K29 + 0x7C140400, // 0064 CALL R5 2 + 0x8C14031E, // 0065 GETMET R5 R1 K30 + 0x581C0014, // 0066 LDCONST R7 K20 + 0x58200015, // 0067 LDCONST R8 K21 + 0x88240111, // 0068 GETMBR R9 R0 K17 + 0x88280112, // 0069 GETMBR R10 R0 K18 + 0x5C2C0800, // 006A MOVE R11 R4 + 0x7C140C00, // 006B CALL R5 6 + 0x58100021, // 006C LDCONST R4 K33 + 0xB8162E00, // 006D GETNGBL R5 K23 + 0x001A3804, // 006E ADD R6 K28 R4 + 0x581C001D, // 006F LDCONST R7 K29 + 0x7C140400, // 0070 CALL R5 2 + 0x8C14031E, // 0071 GETMET R5 R1 K30 + 0x581C0014, // 0072 LDCONST R7 K20 + 0x58200015, // 0073 LDCONST R8 K21 + 0x88240111, // 0074 GETMBR R9 R0 K17 + 0x88280112, // 0075 GETMBR R10 R0 K18 + 0x5C2C0800, // 0076 MOVE R11 R4 + 0x7C140C00, // 0077 CALL R5 6 + 0x88100122, // 0078 GETMBR R4 R0 K34 + 0x78120053, // 0079 JMPF R4 #00CE + 0x8C100313, // 007A GETMET R4 R1 K19 + 0x58180014, // 007B LDCONST R6 K20 + 0x581C0015, // 007C LDCONST R7 K21 + 0x542215A3, // 007D LDINT R8 5540 + 0x5C240600, // 007E MOVE R9 R3 + 0x8828010E, // 007F GETMBR R10 R0 K14 + 0x882C0122, // 0080 GETMBR R11 R0 K34 + 0x7C100E00, // 0081 CALL R4 7 + 0x50100200, // 0082 LDBOOL R4 1 0 + 0x90024604, // 0083 SETMBR R0 K35 R4 + 0xB8122E00, // 0084 GETNGBL R4 K23 + 0x60140018, // 0085 GETGBL R5 G24 + 0x58180024, // 0086 LDCONST R6 K36 + 0x581C0025, // 0087 LDCONST R7 K37 + 0x8820010E, // 0088 GETMBR R8 R0 K14 + 0x88240122, // 0089 GETMBR R9 R0 K34 + 0x7C140800, // 008A CALL R5 4 + 0x5818001D, // 008B LDCONST R6 K29 + 0x7C100400, // 008C CALL R4 2 + 0x60100008, // 008D GETGBL R4 G8 + 0x88140107, // 008E GETMBR R5 R0 K7 + 0x541A0FFE, // 008F LDINT R6 4095 + 0x2C140A06, // 0090 AND R5 R5 R6 + 0x7C100200, // 0091 CALL R4 1 + 0x00123604, // 0092 ADD R4 K27 R4 + 0xB8162E00, // 0093 GETNGBL R5 K23 + 0x001A3804, // 0094 ADD R6 K28 R4 + 0x581C001D, // 0095 LDCONST R7 K29 + 0x7C140400, // 0096 CALL R5 2 + 0x8C14031E, // 0097 GETMET R5 R1 K30 + 0x581C0014, // 0098 LDCONST R7 K20 + 0x58200015, // 0099 LDCONST R8 K21 + 0x8824010E, // 009A GETMBR R9 R0 K14 + 0x88280122, // 009B GETMBR R10 R0 K34 + 0x5C2C0800, // 009C MOVE R11 R4 + 0x7C140C00, // 009D CALL R5 6 + 0x60140008, // 009E GETGBL R5 G8 + 0x88180107, // 009F GETMBR R6 R0 K7 + 0x541E0EFF, // 00A0 LDINT R7 3840 + 0x2C180C07, // 00A1 AND R6 R6 R7 + 0x541E0007, // 00A2 LDINT R7 8 + 0x3C180C07, // 00A3 SHR R6 R6 R7 + 0x7C140200, // 00A4 CALL R5 1 + 0x00163E05, // 00A5 ADD R5 K31 R5 + 0x5C100A00, // 00A6 MOVE R4 R5 + 0xB8162E00, // 00A7 GETNGBL R5 K23 + 0x001A3804, // 00A8 ADD R6 K28 R4 + 0x581C001D, // 00A9 LDCONST R7 K29 + 0x7C140400, // 00AA CALL R5 2 + 0x8C14031E, // 00AB GETMET R5 R1 K30 + 0x581C0014, // 00AC LDCONST R7 K20 + 0x58200015, // 00AD LDCONST R8 K21 + 0x8824010E, // 00AE GETMBR R9 R0 K14 + 0x88280122, // 00AF GETMBR R10 R0 K34 + 0x5C2C0800, // 00B0 MOVE R11 R4 + 0x7C140C00, // 00B1 CALL R5 6 + 0x60140008, // 00B2 GETGBL R5 G8 + 0x88180103, // 00B3 GETMBR R6 R0 K3 + 0x7C140200, // 00B4 CALL R5 1 + 0x00164005, // 00B5 ADD R5 K32 R5 + 0x5C100A00, // 00B6 MOVE R4 R5 + 0xB8162E00, // 00B7 GETNGBL R5 K23 + 0x001A3804, // 00B8 ADD R6 K28 R4 + 0x581C001D, // 00B9 LDCONST R7 K29 + 0x7C140400, // 00BA CALL R5 2 + 0x8C14031E, // 00BB GETMET R5 R1 K30 + 0x581C0014, // 00BC LDCONST R7 K20 + 0x58200015, // 00BD LDCONST R8 K21 + 0x8824010E, // 00BE GETMBR R9 R0 K14 + 0x88280122, // 00BF GETMBR R10 R0 K34 + 0x5C2C0800, // 00C0 MOVE R11 R4 + 0x7C140C00, // 00C1 CALL R5 6 + 0x58100021, // 00C2 LDCONST R4 K33 + 0xB8162E00, // 00C3 GETNGBL R5 K23 + 0x001A3804, // 00C4 ADD R6 K28 R4 + 0x581C001D, // 00C5 LDCONST R7 K29 + 0x7C140400, // 00C6 CALL R5 2 + 0x8C14031E, // 00C7 GETMET R5 R1 K30 + 0x581C0014, // 00C8 LDCONST R7 K20 + 0x58200015, // 00C9 LDCONST R8 K21 + 0x8824010E, // 00CA GETMBR R9 R0 K14 + 0x88280122, // 00CB GETMBR R10 R0 K34 + 0x5C2C0800, // 00CC MOVE R11 R4 + 0x7C140C00, // 00CD CALL R5 6 + 0xA8040001, // 00CE EXBLK 1 1 + 0x7002000F, // 00CF JMP #00E0 + 0xAC100002, // 00D0 CATCH R4 0 2 + 0x7002000C, // 00D1 JMP #00DF + 0xB81A2E00, // 00D2 GETNGBL R6 K23 + 0x601C0008, // 00D3 GETGBL R7 G8 + 0x5C200800, // 00D4 MOVE R8 R4 + 0x7C1C0200, // 00D5 CALL R7 1 + 0x001E4C07, // 00D6 ADD R7 K38 R7 + 0x001C0F27, // 00D7 ADD R7 R7 K39 + 0x60200008, // 00D8 GETGBL R8 G8 + 0x5C240A00, // 00D9 MOVE R9 R5 + 0x7C200200, // 00DA CALL R8 1 + 0x001C0E08, // 00DB ADD R7 R7 R8 + 0x5820001A, // 00DC LDCONST R8 K26 + 0x7C180400, // 00DD CALL R6 2 + 0x70020000, // 00DE JMP #00E0 + 0xB0080000, // 00DF RAISE 2 R0 R0 + 0x80000000, // 00E0 RET 0 }) ) ); From 7c48ab710ac98e53beabbc20b50e0fd903e2d6aa Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 8 Jun 2024 09:49:39 +0200 Subject: [PATCH 021/252] Matter fix Air Quality sensors (#21592) --- .../Matter_Plugin_2_Sensor_Air_Quality.be | 8 +-- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 54 +++++++++++-------- 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be index b4f2e8371..97b67ed32 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be @@ -30,7 +30,7 @@ class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device static var ARG_HINT = "Device key (ex: SCD40)" # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var JSON_NAME = "AirQuality" # Name of the sensor attribute in JSON payloads - static var UPDATE_TIME = 30000 # update every 30 s + static var UPDATE_TIME = 10000 # update every 10 s static var UPDATE_COMMANDS = matter.UC_LIST(_class, "AirQuality", "CO2", "PM1", "PM2.5", "PM10", "TVOC", "NO2") static var CLUSTERS = matter.consolidate_clusters(_class, { 0x005B: [0], # Air Quality - no writable @@ -69,6 +69,7 @@ class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device def init(device, endpoint, config) super(self).init(device, endpoint, config) self.shadow_air_quality = false + device.add_read_sensors_schedule(self.UPDATE_TIME) end ############################################################# @@ -85,10 +86,11 @@ class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device # # parse the output from `ShutterPosition` # Ex: `{"Shutter1":{"Position":50,"Direction":0,"Target":50,"Tilt":30}}` - def _parse_sensor_entry(v, key, old_val, cluster, attribute) + def _parse_sensor_entry(v, key, old_val, func, cluster, attribute) var val = v.find(key) if (val != nil) - if val != old_val + val = func(val) + if (val != nil) && (val != old_val) self.attribute_updated(cluster, attribute) # CurrentPositionTiltPercent100ths end return val diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index 1b636ca22..4432048d7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -12,8 +12,8 @@ extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, /* name */ be_nested_proto( - 11, /* nstack */ - 6, /* argc */ + 12, /* nstack */ + 7, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -26,21 +26,28 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, / }), be_str_weak(_parse_sensor_entry), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C180300, // 0000 GETMET R6 R1 K0 - 0x5C200400, // 0001 MOVE R8 R2 - 0x7C180400, // 0002 CALL R6 2 - 0x4C1C0000, // 0003 LDNIL R7 - 0x201C0C07, // 0004 NE R7 R6 R7 - 0x781E0006, // 0005 JMPF R7 #000D - 0x201C0C03, // 0006 NE R7 R6 R3 - 0x781E0003, // 0007 JMPF R7 #000C - 0x8C1C0101, // 0008 GETMET R7 R0 K1 - 0x5C240800, // 0009 MOVE R9 R4 - 0x5C280A00, // 000A MOVE R10 R5 - 0x7C1C0600, // 000B CALL R7 3 - 0x80040C00, // 000C RET 1 R6 - 0x80040600, // 000D RET 1 R3 + ( &(const binstruction[21]) { /* code */ + 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x5C240400, // 0001 MOVE R9 R2 + 0x7C1C0400, // 0002 CALL R7 2 + 0x4C200000, // 0003 LDNIL R8 + 0x20200E08, // 0004 NE R8 R7 R8 + 0x7822000D, // 0005 JMPF R8 #0014 + 0x5C200800, // 0006 MOVE R8 R4 + 0x5C240E00, // 0007 MOVE R9 R7 + 0x7C200200, // 0008 CALL R8 1 + 0x5C1C1000, // 0009 MOVE R7 R8 + 0x4C200000, // 000A LDNIL R8 + 0x20200E08, // 000B NE R8 R7 R8 + 0x78220005, // 000C JMPF R8 #0013 + 0x20200E03, // 000D NE R8 R7 R3 + 0x78220003, // 000E JMPF R8 #0013 + 0x8C200101, // 000F GETMET R8 R0 K1 + 0x5C280A00, // 0010 MOVE R10 R5 + 0x5C2C0C00, // 0011 MOVE R11 R6 + 0x7C200600, // 0012 CALL R8 3 + 0x80040E00, // 0013 RET 1 R7 + 0x80040600, // 0014 RET 1 R3 }) ) ); @@ -544,13 +551,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Air_Quality, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(shadow_air_quality), + /* K2 */ be_nested_str_weak(add_read_sensors_schedule), + /* K3 */ be_nested_str_weak(UPDATE_TIME), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ + ( &(const binstruction[14]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 @@ -561,7 +570,10 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ 0x7C100800, // 0007 CALL R4 4 0x50100000, // 0008 LDBOOL R4 0 0 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 + 0x8C100302, // 000A GETMET R4 R1 K2 + 0x88180103, // 000B GETMBR R6 R0 K3 + 0x7C100400, // 000C CALL R4 2 + 0x80000000, // 000D RET 0 }) ) ); @@ -583,7 +595,7 @@ be_local_class(Matter_Plugin_Sensor_Air_Quality, { be_const_key_weak(TYPE, -1), be_nested_str_weak(airquality) }, { be_const_key_weak(parse_configuration, 21), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration_closure) }, { be_const_key_weak(shadow_no2, -1), be_const_var(6) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(30000) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(10000) }, { be_const_key_weak(UPDATE_COMMANDS, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(7, ( (struct bvalue*) &(const bvalue[]) { From ff961df33635641363b8e26437c394c9a95dfb72 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 8 Jun 2024 15:33:44 +0200 Subject: [PATCH 022/252] Change display timing splash screen with display modes 1 to 5 --- CHANGELOG.md | 3 ++- RELEASENOTES.md | 2 ++ lib/lib_display/UDisplay/uDisplay.cpp | 8 +++--- .../tasmota_xdrv_driver/xdrv_13_display.ino | 26 ++++++++++++------- .../xdsp_17_universal.ino | 3 ++- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6caafd66..3208282e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,8 @@ All notable changes to this project will be documented in this file. - Matter refactoring of bridged devices (#21575) - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 (#21569) - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` -- Matter filter suffix automatically added for sensors +- Matter filter suffix automatically added for sensors (#21589) +- Display timing splash screen with display modes 1 to 5 ### Fixed - Berry `input()` returns empty string and does not crash (#21565) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 33fce959a..ed8cdc01e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -126,8 +126,10 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Changed - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` +- Display timing splash screen with display modes 1 to 5 - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) +- Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) ### Fixed - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index e24b0ab42..890c2157f 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -290,6 +290,10 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { col_type = uCOLOR_BW; } else { col_type = uCOLOR_COLOR; + if (bpp == 16) { + fg_col = GetColorFromIndex(fg_col); + bg_col = GetColorFromIndex(bg_col); + } } str2c(&lp1, ibuff, sizeof(ibuff)); if (!strncmp(ibuff, "I2C", 3)) { @@ -368,11 +372,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { splash_font = next_val(&lp1); splash_size = next_val(&lp1); fg_col = next_val(&lp1); - if (bpp == 16) { - fg_col = GetColorFromIndex(fg_col); - } bg_col = next_val(&lp1); if (bpp == 16) { + fg_col = GetColorFromIndex(fg_col); bg_col = GetColorFromIndex(bg_col); } splash_xp = next_val(&lp1); diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino index 2f963237e..7bfaecc78 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino @@ -2943,8 +2943,7 @@ void AddValue(uint8_t num,float fval) { * Interface \*********************************************************************************************/ -bool Xdrv13(uint32_t function) -{ +bool Xdrv13(uint32_t function) { bool result = false; if (XdspPresent()) { @@ -2958,7 +2957,9 @@ bool Xdrv13(uint32_t function) } break; case FUNC_EVERY_50_MSECOND: - if (Settings->display_model) { XdspCall(FUNC_DISPLAY_EVERY_50_MSECOND); } + if (Settings->display_model) { + XdspCall(FUNC_DISPLAY_EVERY_50_MSECOND); + } break; case FUNC_SET_POWER: DisplaySetPower(); @@ -2966,20 +2967,27 @@ bool Xdrv13(uint32_t function) case FUNC_EVERY_SECOND: #ifdef USE_GRAPH DisplayCheckGraph(); -#endif +#endif // USE_GRAPH #ifdef USE_DT_VARS get_dt_mqtt(); draw_dt_vars(); -#endif // USE_DT_VARS - +#endif // USE_DT_VARS #ifdef USE_DISPLAY_MODES1TO5 - if (Settings->display_model && Settings->display_mode) { XdspCall(FUNC_DISPLAY_EVERY_SECOND); } -#endif + if (Settings->display_model && Settings->display_mode) { + uint32_t wait = 0; + if (!Settings->flag5.display_no_splash) { // SetOption135 - (Display & LVGL) force disabling default 5 second splash screen + wait = 6; + } + if (TasmotaGlobal.uptime > wait) { // Allow time to display splash screen + XdspCall(FUNC_DISPLAY_EVERY_SECOND); + } + } +#endif // USE_DISPLAY_MODES1TO5 break; case FUNC_AFTER_TELEPERIOD: #ifdef USE_DT_VARS DisplayDTVarsTeleperiod(); -#endif // USE_DT_VARS +#endif // USE_DT_VARS break; #ifdef USE_DISPLAY_MODES1TO5 case FUNC_MQTT_SUBSCRIBE: diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index e1845ccea..2f9c8edf7 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -483,6 +483,7 @@ int8_t cs; color_type = renderer->color_type(); renderer->DisplayInit(DISPLAY_INIT_MODE, Settings->display_size, inirot, Settings->display_font); + renderer->clearDisplay(); Settings->display_width = renderer->width(); Settings->display_height = renderer->height(); @@ -504,7 +505,7 @@ int8_t cs; ApplyDisplayDimmer(); #ifdef SHOW_SPLASH - if (!Settings->flag5.display_no_splash) { + if (!Settings->flag5.display_no_splash) { // SetOption135 - (Display & LVGL) force disabling default splash screen renderer->Splash(); } #endif // SHOW_SPLASH From 1e33b45ea80ef7d7a03aad6488a797f93bc25b4e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 8 Jun 2024 17:22:19 +0200 Subject: [PATCH 023/252] Add partial DisplayText features to modes1 to 5 --- .../tasmota_xdrv_driver/xdrv_13_display.ino | 95 ++++++++++--------- .../xdsp_17_universal.ino | 4 +- 2 files changed, 52 insertions(+), 47 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino index 7bfaecc78..4a9cd73c3 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino @@ -268,30 +268,35 @@ bool disp_subscribed = false; /*********************************************************************************************/ -void DisplayInit(uint8_t mode) -{ - if (renderer) { - renderer->DisplayInit(mode, Settings->display_size, Settings->display_rotate, Settings->display_font); +void DisplayClear(void) { + if (renderer) { + renderer->fillScreen(bg_color); + } else { + XdspCall(FUNC_DISPLAY_CLEAR); } - else { +} + +void DisplayInit(uint8_t mode) { + if (renderer) { + renderer->DisplayInit(mode, Settings->display_size, Settings->display_rotate, Settings->display_font); + } else { dsp_init = mode; XdspCall(FUNC_DISPLAY_INIT); } + DisplayClear(); } -void DisplayClear(void) -{ - XdspCall(FUNC_DISPLAY_CLEAR); -} - -void DisplayDrawStringAt(uint16_t x, uint16_t y, char *str, uint16_t color, uint8_t flag) -{ - dsp_x = x; - dsp_y = y; - dsp_str = str; - dsp_color = color; - dsp_flag = flag; - XdspCall(FUNC_DISPLAY_DRAW_STRING); +void DisplayDrawStringAt(uint16_t x, uint16_t y, char *str, uint16_t color, uint8_t flag) { + if (renderer) { + renderer->DrawStringAt(x, y, str, color, flag); + } else { + dsp_x = x; + dsp_y = y; + dsp_str = str; + dsp_color = color; + dsp_flag = flag; + XdspCall(FUNC_DISPLAY_DRAW_STRING); + } } void DisplayOnOff(uint8_t on) { @@ -482,15 +487,21 @@ void DisplayText(void) dp -= decode_te(linebuf); if ((uint32_t)dp - (uint32_t)linebuf) { if (!fill) { *dp = 0; } +#ifdef USE_DISPLAY_MODES1TO5 + if (!Settings->display_mode) { +#endif // USE_DISPLAY_MODES1TO5 if (col > 0 && lin > 0) { // use col and lin - if (!renderer) DisplayDrawStringAt(col, lin, linebuf, fg_color, 1); - else renderer->DrawStringAt(col, lin, linebuf, fg_color, 1); + DisplayDrawStringAt(col, lin, linebuf, fg_color, 1); } else { // use disp_xpos, disp_ypos - if (!renderer) DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); - else renderer->DrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); + DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); } +#ifdef USE_DISPLAY_MODES1TO5 + } else { + DisplayLogBufferAdd(linebuf); + } +#endif // USE_DISPLAY_MODES1TO5 memset(linebuf, ' ', sizeof(linebuf)); linebuf[sizeof(linebuf)-1] = 0; dp = linebuf; @@ -513,8 +524,7 @@ void DisplayText(void) switch (*cp++) { case 'z': // clear display - if (!renderer) DisplayClear(); - else renderer->fillScreen(bg_color); + DisplayClear(); disp_xpos = 0; disp_ypos = 0; col = 0; @@ -1225,15 +1235,21 @@ extern FS *ffsp; // right align alignright(linebuf); } +#ifdef USE_DISPLAY_MODES1TO5 + if (!Settings->display_mode) { +#endif // USE_DISPLAY_MODES1TO5 if (col > 0 && lin > 0) { // use col and lin - if (!renderer) DisplayDrawStringAt(col, lin, linebuf, fg_color, 1); - else renderer->DrawStringAt(col, lin, linebuf, fg_color, 1); + DisplayDrawStringAt(col, lin, linebuf, fg_color, 1); } else { // use disp_xpos, disp_ypos - if (!renderer) DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); - else renderer->DrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); + DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); } +#ifdef USE_DISPLAY_MODES1TO5 + } else { + DisplayLogBufferAdd(linebuf); + } +#endif // USE_DISPLAY_MODES1TO5 } // draw buffer if (auto_draw&1) { @@ -1242,8 +1258,6 @@ extern FS *ffsp; } } - - #ifdef USE_UFILESYS void Display_Text_From_File(const char *file) { File fp; @@ -2016,14 +2030,10 @@ void CmndDisplayMode(void) { if (disp_subscribed != (Settings->display_mode &0x04)) { TasmotaGlobal.restart_flag = 2; // Restart to Add/Remove MQTT subscribe } else { - if (last_display_mode && !Settings->display_mode) { // Switch to mode 0 - DisplayInit(DISPLAY_INIT_MODE); - if (renderer) renderer->fillScreen(bg_color); - else DisplayClear(); - } else { + if (Settings->display_mode) { // Switch to non mode 0 DisplayLogBufferInit(); - DisplayInit(DISPLAY_INIT_MODE); } + DisplayInit(DISPLAY_INIT_MODE); } } #endif // USE_DISPLAY_MODES1TO5 @@ -2068,6 +2078,7 @@ void CmndDisplayDimmer(void) { void CmndDisplaySize(void) { if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= TXT_MAX_SFAC)) { Settings->display_size = XdrvMailbox.payload; + DisplayClear(); if (renderer) renderer->setTextSize(Settings->display_size); //else DisplaySetSize(Settings->display_size); } @@ -2077,6 +2088,7 @@ void CmndDisplaySize(void) { void CmndDisplayFont(void) { if ((XdrvMailbox.payload >=0) && (XdrvMailbox.payload <= 4)) { Settings->display_font = XdrvMailbox.payload; + DisplayClear(); if (renderer) renderer->setTextFont(Settings->display_font); //else DisplaySetFont(Settings->display_font); } @@ -2179,17 +2191,11 @@ void CmndDisplayBatch(void) { void CmndDisplayText(void) { if (disp_device && XdrvMailbox.data_len > 0) { -#ifndef USE_DISPLAY_MODES1TO5 - DisplayText(); -#else if(Settings->display_model == 15 || Settings->display_model == 20) { XdspCall(FUNC_DISPLAY_SEVENSEG_TEXT); - } else if (!Settings->display_mode) { - DisplayText(); } else { - DisplayLogBufferAdd(XdrvMailbox.data); + DisplayText(); } -#endif // USE_DISPLAY_MODES1TO5 ResponseCmndChar(XdrvMailbox.data); } } @@ -2199,8 +2205,7 @@ void CmndDisplayText(void) { \*********************************************************************************************/ void CmndDisplayClear(void) { - if (!renderer) - XdspCall(FUNC_DISPLAY_CLEAR); + DisplayClear(); ResponseCmndChar(XdrvMailbox.data); } diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index 2f9c8edf7..ac5599dea 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -553,7 +553,7 @@ void UDISP_PrintLog(void) if (txt != NULL) { uint8_t last_row = Settings->display_rows -1; - renderer->clearDisplay(); +// renderer->clearDisplay(); renderer->setTextSize(Settings->display_size); renderer->setCursor(0,0); for (byte i = 0; i < last_row; i++) { @@ -575,7 +575,7 @@ void UDISP_Time(void) { char line[12]; - renderer->clearDisplay(); +// renderer->clearDisplay(); renderer->setTextSize(Settings->display_size); renderer->setTextFont(Settings->display_font); renderer->setCursor(0, 0); From 4c5c6f726f21b7f748e2f0441d7b4cb1abd2b527 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 8 Jun 2024 18:33:06 +0200 Subject: [PATCH 024/252] Matter align names of endpoint classes with hierarchy (#21596) --- .../berry_matter/src/be_matter_module.c | 6 +-- ..._2_Light1.be => Matter_Plugin_3_Light1.be} | 0 ..._3_Light2.be => Matter_Plugin_4_Light2.be} | 0 ..._3_Light3.be => Matter_Plugin_4_Light3.be} | 0 ....h => solidified_Matter_Plugin_3_Light1.h} | 2 +- ....h => solidified_Matter_Plugin_4_Light2.h} | 2 +- ....h => solidified_Matter_Plugin_4_Light3.h} | 2 +- .../solidify/solidified_Matter_zz_Device.h | 44 +++++++++---------- 8 files changed, 28 insertions(+), 28 deletions(-) rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_2_Light1.be => Matter_Plugin_3_Light1.be} (100%) rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_3_Light2.be => Matter_Plugin_4_Light2.be} (100%) rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_3_Light3.be => Matter_Plugin_4_Light3.be} (100%) rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_2_Light1.h => solidified_Matter_Plugin_3_Light1.h} (99%) rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_3_Light2.h => solidified_Matter_Plugin_4_Light2.h} (99%) rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_3_Light3.h => solidified_Matter_Plugin_4_Light3.h} (99%) diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 38659c774..e7f3f4404 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -233,11 +233,11 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h" #include "solidify/solidified_Matter_Plugin_2_Light0.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Light0.h" -#include "solidify/solidified_Matter_Plugin_2_Light1.h" +#include "solidify/solidified_Matter_Plugin_3_Light1.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Light1.h" -#include "solidify/solidified_Matter_Plugin_3_Light2.h" +#include "solidify/solidified_Matter_Plugin_4_Light2.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Light2.h" -#include "solidify/solidified_Matter_Plugin_3_Light3.h" +#include "solidify/solidified_Matter_Plugin_4_Light3.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Light3.h" #include "solidify/solidified_Matter_Plugin_2_Shutter.h" #include "solidify/solidified_Matter_Plugin_3_ShutterTilt.h" diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be similarity index 100% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be similarity index 100% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be similarity index 100% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h similarity index 99% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h index 9ca95cf99..9090db17f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Plugin_2_Light1.h */ +/* Solidification of Matter_Plugin_3_Light1.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h similarity index 99% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h index c6db3cd7e..8bbffdf79 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Plugin_3_Light2.h */ +/* Solidification of Matter_Plugin_4_Light2.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h similarity index 99% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h index 254d280dc..dd07df607 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Plugin_3_Light3.h */ +/* Solidification of Matter_Plugin_4_Light3.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index d180fd809..bcf0a1b9a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -6215,53 +6215,53 @@ be_local_class(Matter_Device, { be_const_key_weak(plugins_classes, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(47, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(v_waterleak, 26), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, + { be_const_key_weak(v_waterleak, 40), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, - { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, + { be_const_key_weak(http_illuminance, 14), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, - { be_const_key_weak(humidity, 17), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, + { be_const_key_weak(humidity, 24), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, + { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, { be_const_key_weak(airquality, -1), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, - { be_const_key_weak(http_flow, 36), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, - { be_const_key_weak(v_illuminance, 24), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(light1, 17), be_const_class(be_class_Matter_Plugin_Light1) }, + { be_const_key_weak(v_illuminance, 26), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(http_light1, 39), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, + { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, { be_const_key_weak(http_light0, 6), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, - { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, + { be_const_key_weak(contact, 29), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, - { be_const_key_weak(light1, 10), be_const_class(be_class_Matter_Plugin_Light1) }, + { be_const_key_weak(http_flow, 10), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) }, - { be_const_key_weak(v_contact, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, - { be_const_key_weak(illuminance, 34), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(shutter, 5), be_const_class(be_class_Matter_Plugin_Shutter) }, - { be_const_key_weak(v_pressure, 2), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, + { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(illuminance, 36), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, + { be_const_key_weak(shutter, 34), be_const_class(be_class_Matter_Plugin_Shutter) }, + { be_const_key_weak(waterleak, 5), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(v_light2, 40), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, + { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, - { be_const_key_weak(v_airquality, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(v_light2, 42), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, { be_const_key_weak(light2, 3), be_const_class(be_class_Matter_Plugin_Light2) }, { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, - { be_const_key_weak(http_illuminance, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, - { be_const_key_weak(relay, 42), be_const_class(be_class_Matter_Plugin_OnOff) }, + { be_const_key_weak(v_contact, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, + { be_const_key_weak(relay, 43), be_const_class(be_class_Matter_Plugin_OnOff) }, { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, - { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(http_waterleak, 14), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, + { be_const_key_weak(http_waterleak, 2), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, { be_const_key_weak(http_occupancy, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(root, 29), be_const_class(be_class_Matter_Plugin_Root) }, + { be_const_key_weak(root, 39), be_const_class(be_class_Matter_Plugin_Root) }, })) ) } )) }, { be_const_key_weak(tick, 9), be_const_var(10) }, { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(17) }, From c909aecd9306352288f62c370ea7277be3233d75 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 8 Jun 2024 18:53:10 +0200 Subject: [PATCH 025/252] Matter support for bridged Air Quality (#21597) --- .../Matter_Plugin_2_Sensor_Air_Quality.be | 36 ++ ...tter_Plugin_8_Bridge_Sensor_Air_Quality.be | 69 --- .../berry_matter/src/embedded/Matter_UI.be | 1 + ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 473 ++++++++++++------ ...atter_Plugin_8_Bridge_Sensor_Air_Quality.h | 149 +----- .../src/solidify/solidified_Matter_UI.h | 2 +- 6 files changed, 349 insertions(+), 381 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be index 97b67ed32..35ad21d85 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be @@ -209,5 +209,41 @@ class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device super(self).update_virtual(payload) end + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + if index == 10 # Status 10 + var values = data.find(self.prefix) + end + end + + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + def web_values_single(name, val) + if val != nil + import webserver + webserver.content_send(f"{name}:{val:i} ") + end + end + + self.web_values_prefix() # display '| ' and name if present + web_values_single("Air", self.shadow_air_quality) + web_values_single("PM1", self.shadow_pm1) + web_values_single("PM2.5", self.shadow_pm2_5) + web_values_single("PM10", self.shadow_pm10) + web_values_single("CO2", self.shadow_co2) + web_values_single("NO2", self.shadow_no2) + web_values_single("TVOC", self.shadow_tvoc) + end + ############################################################# + ############################################################# end matter.Plugin_Sensor_Air_Quality = Matter_Plugin_Sensor_Air_Quality diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be index c7a3571f0..1d4f6c6fa 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be @@ -26,76 +26,7 @@ import matter class Matter_Plugin_Bridge_Sensor_Air_Quality : Matter_Plugin_Sensor_Air_Quality static var BRIDGE = true static var TYPE = "http_airquality" # name of the plug-in in json - # static var DISPLAY_NAME = "Air Quality" # display name of the plug-in - # static var ARG = "airquality" # additional argument name (or empty if none) - # static var ARG_HINT = "Sensor Model" -# static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var UPDATE_TIME = 5000 # update every 5s static var UPDATE_CMD = "Status 10" # command to send for updates - - # static var CLUSTERS = matter.consolidate_clusters(_class, { - # 0x005B: [0], # Air Quality - no writable - # 0x040D: [0,1,2,8,9], # Carbon Dioxide Concentration Measurement - # 0x042C: [0,1,2,8,9], # PM1 Concentration Measurement - # 0x042A: [0,1,2,8,9], # PM2.5 Concentration Measurement - # 0x042D: [0,1,2,8,9], # PM10 Concentration Measurement - # 0x042E: [0,1,2,8,9], # TVOC Total Volatile Organic Compounds Concentration Measurement - # 0x0413: [0,1,2,8,9], # Nitrogen Dioxide Concentration Measurement - # }) - - # static var TYPES = { 0x002C: 1 } # Air Quality, rev 1 - - # var prefix # key prefix in JSON - # var shadow_air_quality # Human readable air quality index - # 0: Unknown - # 1: Good - # 4: Poor - # # var shadow_pb0_3 - # # var shadow_pb0_5 - # # var shadow_pb1 - # # var shadow_pb2_5 - # # var shadow_pb5 - # # var shadow_pb10 - # var shadow_pm1 - # var shadow_pm2_5 - # # var shadow_pm5 - # var shadow_pm10 - # var shadow_co2 - # # var shadow_eco2 - # var shadow_no2 - # var shadow_tvoc - - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_status(data, index) - if index == 10 # Status 10 - var values = data.find(self.prefix) - end - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - def web_values_single(name, val) - if val != nil - import webserver - webserver.content_send(f"{name} {val:i} ") - end - end - - self.web_values_prefix() # display '| ' and name if present - web_values_single("Air", self.shadow_air_quality) - web_values_single("PM1", self.shadow_pm1) - web_values_single("PM2.5", self.shadow_pm2_5) - web_values_single("PM10", self.shadow_pm10) - web_values_single("CO2", self.shadow_co2) - web_values_single("NO2", self.shadow_no2) - web_values_single("TVOC", self.shadow_tvoc) - end - end matter.Plugin_Bridge_Sensor_Air_Quality = Matter_Plugin_Bridge_Sensor_Air_Quality diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index b0c291de1..5a80aeba9 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -41,6 +41,7 @@ class Matter_UI static var _CLASSES_TYPES2= "|http_relay|http_light0|http_light1|http_light2|http_light3" "|http_temperature|http_pressure|http_illuminance|http_humidity" "|http_occupancy|http_contact|http_flow|http_waterleak" + "|http_airquality" var device # #################################################################################################### diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index 4432048d7..0265dc8bc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -7,13 +7,118 @@ extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; /******************************************************************** -** Solidified function: _parse_sensor_entry +** Solidified function: web_values ********************************************************************/ extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, /* name */ +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ be_nested_proto( - 12, /* nstack */ - 7, /* argc */ + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(content_send), + /* K2 */ be_nested_str_weak(_X25s_X3A_X25i_X20), + }), + be_str_weak(web_values_single), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0007, // 0002 JMPF R2 #000B + 0xA40A0000, // 0003 IMPORT R2 K0 + 0x8C0C0501, // 0004 GETMET R3 R2 K1 + 0x60140018, // 0005 GETGBL R5 G24 + 0x58180002, // 0006 LDCONST R6 K2 + 0x5C1C0000, // 0007 MOVE R7 R0 + 0x5C200200, // 0008 MOVE R8 R1 + 0x7C140600, // 0009 CALL R5 3 + 0x7C0C0400, // 000A CALL R3 2 + 0x80000000, // 000B RET 0 + }) + ), + &be_class_Matter_Plugin_Sensor_Air_Quality, + }), + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(web_values_prefix), + /* K1 */ be_nested_str_weak(Air), + /* K2 */ be_nested_str_weak(shadow_air_quality), + /* K3 */ be_nested_str_weak(PM1), + /* K4 */ be_nested_str_weak(shadow_pm1), + /* K5 */ be_nested_str_weak(PM2_X2E5), + /* K6 */ be_nested_str_weak(shadow_pm2_5), + /* K7 */ be_nested_str_weak(PM10), + /* K8 */ be_nested_str_weak(shadow_pm10), + /* K9 */ be_nested_str_weak(CO2), + /* K10 */ be_nested_str_weak(shadow_co2), + /* K11 */ be_nested_str_weak(NO2), + /* K12 */ be_nested_str_weak(shadow_no2), + /* K13 */ be_nested_str_weak(TVOC), + /* K14 */ be_nested_str_weak(shadow_tvoc), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x84040000, // 0000 CLOSURE R1 P0 + 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x7C080200, // 0002 CALL R2 1 + 0x5C080200, // 0003 MOVE R2 R1 + 0x580C0001, // 0004 LDCONST R3 K1 + 0x88100102, // 0005 GETMBR R4 R0 K2 + 0x7C080400, // 0006 CALL R2 2 + 0x5C080200, // 0007 MOVE R2 R1 + 0x580C0003, // 0008 LDCONST R3 K3 + 0x88100104, // 0009 GETMBR R4 R0 K4 + 0x7C080400, // 000A CALL R2 2 + 0x5C080200, // 000B MOVE R2 R1 + 0x580C0005, // 000C LDCONST R3 K5 + 0x88100106, // 000D GETMBR R4 R0 K6 + 0x7C080400, // 000E CALL R2 2 + 0x5C080200, // 000F MOVE R2 R1 + 0x580C0007, // 0010 LDCONST R3 K7 + 0x88100108, // 0011 GETMBR R4 R0 K8 + 0x7C080400, // 0012 CALL R2 2 + 0x5C080200, // 0013 MOVE R2 R1 + 0x580C0009, // 0014 LDCONST R3 K9 + 0x8810010A, // 0015 GETMBR R4 R0 K10 + 0x7C080400, // 0016 CALL R2 2 + 0x5C080200, // 0017 MOVE R2 R1 + 0x580C000B, // 0018 LDCONST R3 K11 + 0x8810010C, // 0019 GETMBR R4 R0 K12 + 0x7C080400, // 001A CALL R2 2 + 0x5C080200, // 001B MOVE R2 R1 + 0x580C000D, // 001C LDCONST R3 K13 + 0x8810010E, // 001D GETMBR R4 R0 K14 + 0x7C080400, // 001E CALL R2 2 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -22,32 +127,18 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, / 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_nested_str_weak(prefix), }), - be_str_weak(_parse_sensor_entry), + be_str_weak(parse_status), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x8C1C0300, // 0000 GETMET R7 R1 K0 - 0x5C240400, // 0001 MOVE R9 R2 - 0x7C1C0400, // 0002 CALL R7 2 - 0x4C200000, // 0003 LDNIL R8 - 0x20200E08, // 0004 NE R8 R7 R8 - 0x7822000D, // 0005 JMPF R8 #0014 - 0x5C200800, // 0006 MOVE R8 R4 - 0x5C240E00, // 0007 MOVE R9 R7 - 0x7C200200, // 0008 CALL R8 1 - 0x5C1C1000, // 0009 MOVE R7 R8 - 0x4C200000, // 000A LDNIL R8 - 0x20200E08, // 000B NE R8 R7 R8 - 0x78220005, // 000C JMPF R8 #0013 - 0x20200E03, // 000D NE R8 R7 R3 - 0x78220003, // 000E JMPF R8 #0013 - 0x8C200101, // 000F GETMET R8 R0 K1 - 0x5C280A00, // 0010 MOVE R10 R5 - 0x5C2C0C00, // 0011 MOVE R11 R6 - 0x7C200600, // 0012 CALL R8 3 - 0x80040E00, // 0013 RET 1 R7 - 0x80040600, // 0014 RET 1 R3 + ( &(const binstruction[ 7]) { /* code */ + 0x540E0009, // 0000 LDINT R3 10 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0002, // 0002 JMPF R3 #0006 + 0x8C0C0300, // 0003 GETMET R3 R1 K0 + 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x7C0C0400, // 0005 CALL R3 2 + 0x80000000, // 0006 RET 0 }) ) ); @@ -156,108 +247,42 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual, /* nam /******************************************************************** -** Solidified function: parse_sensors +** Solidified function: init ********************************************************************/ extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name */ +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ be_nested_proto( - 11, /* nstack */ - 2, /* argc */ + 9, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Air_Quality, 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(prefix), - /* K2 */ be_nested_str_weak(shadow_co2), - /* K3 */ be_nested_str_weak(_parse_sensor_entry), - /* K4 */ be_nested_str_weak(CarbonDioxide), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(shadow_pm1), - /* K7 */ be_nested_str_weak(PM1), - /* K8 */ be_nested_str_weak(shadow_pm2_5), - /* K9 */ be_nested_str_weak(PM2_X2E5), - /* K10 */ be_nested_str_weak(shadow_pm10), - /* K11 */ be_nested_str_weak(PM10), - /* K12 */ be_nested_str_weak(shadow_tvoc), - /* K13 */ be_nested_str_weak(TVOC), - /* K14 */ be_nested_str_weak(shadow_no2), - /* K15 */ be_nested_str_weak(NO2), - /* K16 */ be_nested_str_weak(parse_sensors), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_air_quality), + /* K2 */ be_nested_str_weak(add_read_sensors_schedule), + /* K3 */ be_nested_str_weak(UPDATE_TIME), }), - be_str_weak(parse_sensors), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0403, // 0004 NE R3 R2 R3 - 0x780E0035, // 0005 JMPF R3 #003C - 0x8C0C0103, // 0006 GETMET R3 R0 K3 - 0x5C140400, // 0007 MOVE R5 R2 - 0x58180004, // 0008 LDCONST R6 K4 - 0x881C0102, // 0009 GETMBR R7 R0 K2 - 0x60200007, // 000A GETGBL R8 G7 - 0x5426040C, // 000B LDINT R9 1037 - 0x58280005, // 000C LDCONST R10 K5 - 0x7C0C0E00, // 000D CALL R3 7 - 0x90020403, // 000E SETMBR R0 K2 R3 - 0x8C0C0103, // 000F GETMET R3 R0 K3 - 0x5C140400, // 0010 MOVE R5 R2 - 0x58180007, // 0011 LDCONST R6 K7 - 0x881C0106, // 0012 GETMBR R7 R0 K6 - 0x60200007, // 0013 GETGBL R8 G7 - 0x5426042B, // 0014 LDINT R9 1068 - 0x58280005, // 0015 LDCONST R10 K5 - 0x7C0C0E00, // 0016 CALL R3 7 - 0x90020C03, // 0017 SETMBR R0 K6 R3 - 0x8C0C0103, // 0018 GETMET R3 R0 K3 - 0x5C140400, // 0019 MOVE R5 R2 - 0x58180009, // 001A LDCONST R6 K9 - 0x881C0108, // 001B GETMBR R7 R0 K8 - 0x60200007, // 001C GETGBL R8 G7 - 0x54260429, // 001D LDINT R9 1066 - 0x58280005, // 001E LDCONST R10 K5 - 0x7C0C0E00, // 001F CALL R3 7 - 0x90021003, // 0020 SETMBR R0 K8 R3 - 0x8C0C0103, // 0021 GETMET R3 R0 K3 - 0x5C140400, // 0022 MOVE R5 R2 - 0x5818000B, // 0023 LDCONST R6 K11 - 0x881C010A, // 0024 GETMBR R7 R0 K10 - 0x60200007, // 0025 GETGBL R8 G7 - 0x5426042C, // 0026 LDINT R9 1069 - 0x58280005, // 0027 LDCONST R10 K5 - 0x7C0C0E00, // 0028 CALL R3 7 - 0x90021403, // 0029 SETMBR R0 K10 R3 - 0x8C0C0103, // 002A GETMET R3 R0 K3 - 0x5C140400, // 002B MOVE R5 R2 - 0x5818000D, // 002C LDCONST R6 K13 - 0x881C010C, // 002D GETMBR R7 R0 K12 - 0x60200007, // 002E GETGBL R8 G7 - 0x5426042D, // 002F LDINT R9 1070 - 0x58280005, // 0030 LDCONST R10 K5 - 0x7C0C0E00, // 0031 CALL R3 7 - 0x90021803, // 0032 SETMBR R0 K12 R3 - 0x8C0C0103, // 0033 GETMET R3 R0 K3 - 0x5C140400, // 0034 MOVE R5 R2 - 0x5818000F, // 0035 LDCONST R6 K15 - 0x881C010E, // 0036 GETMBR R7 R0 K14 - 0x60200007, // 0037 GETGBL R8 G7 - 0x54260412, // 0038 LDINT R9 1043 - 0x58280005, // 0039 LDCONST R10 K5 - 0x7C0C0E00, // 003A CALL R3 7 - 0x90021C03, // 003B SETMBR R0 K14 R3 - 0x600C0003, // 003C GETGBL R3 G3 - 0x5C100000, // 003D MOVE R4 R0 - 0x7C0C0200, // 003E CALL R3 1 - 0x8C0C0710, // 003F GETMET R3 R3 K16 - 0x5C140200, // 0040 MOVE R5 R1 - 0x7C0C0400, // 0041 CALL R3 2 - 0x80000000, // 0042 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x50100000, // 0008 LDBOOL R4 0 0 + 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x8C100302, // 000A GETMET R4 R1 K2 + 0x88180103, // 000B GETMBR R6 R0 K3 + 0x7C100400, // 000C CALL R4 2 + 0x80000000, // 000D RET 0 }) ) ); @@ -538,42 +563,156 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, / /******************************************************************** -** Solidified function: init +** Solidified function: parse_sensors ********************************************************************/ extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 11, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Air_Quality, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_air_quality), - /* K2 */ be_nested_str_weak(add_read_sensors_schedule), - /* K3 */ be_nested_str_weak(UPDATE_TIME), + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(prefix), + /* K2 */ be_nested_str_weak(shadow_co2), + /* K3 */ be_nested_str_weak(_parse_sensor_entry), + /* K4 */ be_nested_str_weak(CarbonDioxide), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(shadow_pm1), + /* K7 */ be_nested_str_weak(PM1), + /* K8 */ be_nested_str_weak(shadow_pm2_5), + /* K9 */ be_nested_str_weak(PM2_X2E5), + /* K10 */ be_nested_str_weak(shadow_pm10), + /* K11 */ be_nested_str_weak(PM10), + /* K12 */ be_nested_str_weak(shadow_tvoc), + /* K13 */ be_nested_str_weak(TVOC), + /* K14 */ be_nested_str_weak(shadow_no2), + /* K15 */ be_nested_str_weak(NO2), + /* K16 */ be_nested_str_weak(parse_sensors), }), - be_str_weak(init), + be_str_weak(parse_sensors), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x8C100302, // 000A GETMET R4 R1 K2 - 0x88180103, // 000B GETMBR R6 R0 K3 - 0x7C100400, // 000C CALL R4 2 - 0x80000000, // 000D RET 0 + ( &(const binstruction[67]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0035, // 0005 JMPF R3 #003C + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x5C140400, // 0007 MOVE R5 R2 + 0x58180004, // 0008 LDCONST R6 K4 + 0x881C0102, // 0009 GETMBR R7 R0 K2 + 0x60200007, // 000A GETGBL R8 G7 + 0x5426040C, // 000B LDINT R9 1037 + 0x58280005, // 000C LDCONST R10 K5 + 0x7C0C0E00, // 000D CALL R3 7 + 0x90020403, // 000E SETMBR R0 K2 R3 + 0x8C0C0103, // 000F GETMET R3 R0 K3 + 0x5C140400, // 0010 MOVE R5 R2 + 0x58180007, // 0011 LDCONST R6 K7 + 0x881C0106, // 0012 GETMBR R7 R0 K6 + 0x60200007, // 0013 GETGBL R8 G7 + 0x5426042B, // 0014 LDINT R9 1068 + 0x58280005, // 0015 LDCONST R10 K5 + 0x7C0C0E00, // 0016 CALL R3 7 + 0x90020C03, // 0017 SETMBR R0 K6 R3 + 0x8C0C0103, // 0018 GETMET R3 R0 K3 + 0x5C140400, // 0019 MOVE R5 R2 + 0x58180009, // 001A LDCONST R6 K9 + 0x881C0108, // 001B GETMBR R7 R0 K8 + 0x60200007, // 001C GETGBL R8 G7 + 0x54260429, // 001D LDINT R9 1066 + 0x58280005, // 001E LDCONST R10 K5 + 0x7C0C0E00, // 001F CALL R3 7 + 0x90021003, // 0020 SETMBR R0 K8 R3 + 0x8C0C0103, // 0021 GETMET R3 R0 K3 + 0x5C140400, // 0022 MOVE R5 R2 + 0x5818000B, // 0023 LDCONST R6 K11 + 0x881C010A, // 0024 GETMBR R7 R0 K10 + 0x60200007, // 0025 GETGBL R8 G7 + 0x5426042C, // 0026 LDINT R9 1069 + 0x58280005, // 0027 LDCONST R10 K5 + 0x7C0C0E00, // 0028 CALL R3 7 + 0x90021403, // 0029 SETMBR R0 K10 R3 + 0x8C0C0103, // 002A GETMET R3 R0 K3 + 0x5C140400, // 002B MOVE R5 R2 + 0x5818000D, // 002C LDCONST R6 K13 + 0x881C010C, // 002D GETMBR R7 R0 K12 + 0x60200007, // 002E GETGBL R8 G7 + 0x5426042D, // 002F LDINT R9 1070 + 0x58280005, // 0030 LDCONST R10 K5 + 0x7C0C0E00, // 0031 CALL R3 7 + 0x90021803, // 0032 SETMBR R0 K12 R3 + 0x8C0C0103, // 0033 GETMET R3 R0 K3 + 0x5C140400, // 0034 MOVE R5 R2 + 0x5818000F, // 0035 LDCONST R6 K15 + 0x881C010E, // 0036 GETMBR R7 R0 K14 + 0x60200007, // 0037 GETGBL R8 G7 + 0x54260412, // 0038 LDINT R9 1043 + 0x58280005, // 0039 LDCONST R10 K5 + 0x7C0C0E00, // 003A CALL R3 7 + 0x90021C03, // 003B SETMBR R0 K14 R3 + 0x600C0003, // 003C GETGBL R3 G3 + 0x5C100000, // 003D MOVE R4 R0 + 0x7C0C0200, // 003E CALL R3 1 + 0x8C0C0710, // 003F GETMET R3 R3 K16 + 0x5C140200, // 0040 MOVE R5 R1 + 0x7C0C0400, // 0041 CALL R3 2 + 0x80000000, // 0042 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _parse_sensor_entry +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; +be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, /* name */ + be_nested_proto( + 12, /* nstack */ + 7, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Air_Quality, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(_parse_sensor_entry), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x5C240400, // 0001 MOVE R9 R2 + 0x7C1C0400, // 0002 CALL R7 2 + 0x4C200000, // 0003 LDNIL R8 + 0x20200E08, // 0004 NE R8 R7 R8 + 0x7822000D, // 0005 JMPF R8 #0014 + 0x5C200800, // 0006 MOVE R8 R4 + 0x5C240E00, // 0007 MOVE R9 R7 + 0x7C200200, // 0008 CALL R8 1 + 0x5C1C1000, // 0009 MOVE R7 R8 + 0x4C200000, // 000A LDNIL R8 + 0x20200E08, // 000B NE R8 R7 R8 + 0x78220005, // 000C JMPF R8 #0013 + 0x20200E03, // 000D NE R8 R7 R3 + 0x78220003, // 000E JMPF R8 #0013 + 0x8C200101, // 000F GETMET R8 R0 K1 + 0x5C280A00, // 0010 MOVE R10 R5 + 0x5C2C0C00, // 0011 MOVE R11 R6 + 0x7C200600, // 0012 CALL R8 3 + 0x80040E00, // 0013 RET 1 R7 + 0x80040600, // 0014 RET 1 R3 }) ) ); @@ -587,16 +726,18 @@ extern const bclass be_class_Matter_Plugin_Device; be_local_class(Matter_Plugin_Sensor_Air_Quality, 8, &be_class_Matter_Plugin_Device, - be_nested_map(23, + be_nested_map(25, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual_closure) }, - { be_const_key_weak(shadow_pm10, 0), be_const_var(4) }, - { be_const_key_weak(ARG, 1), be_nested_str_weak(airquality) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(airquality) }, - { be_const_key_weak(parse_configuration, 21), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration_closure) }, - { be_const_key_weak(shadow_no2, -1), be_const_var(6) }, + { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(AirQuality) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Air_X20Quality) }, + { be_const_key_weak(web_values, 16), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values_closure) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status_closure) }, + { be_const_key_weak(_parse_sensor_entry, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_init_closure) }, { be_const_key_weak(UPDATE_TIME, -1), be_const_int(10000) }, - { be_const_key_weak(UPDATE_COMMANDS, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(shadow_no2, -1), be_const_var(6) }, + { be_const_key_weak(shadow_air_quality, 13), be_const_var(1) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(7, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(AirQuality), @@ -607,24 +748,25 @@ be_local_class(Matter_Plugin_Sensor_Air_Quality, be_nested_str_weak(TVOC), be_nested_str_weak(NO2), })) ) } )) }, - { be_const_key_weak(shadow_pm2_5, -1), be_const_var(3) }, - { be_const_key_weak(shadow_air_quality, -1), be_const_var(1) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute_closure) }, - { be_const_key_weak(shadow_tvoc, -1), be_const_var(7) }, { be_const_key_weak(prefix, -1), be_const_var(0) }, - { be_const_key_weak(TYPES, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(shadow_pm10, -1), be_const_var(4) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute_closure) }, + { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors_closure) }, + { be_const_key_weak(TYPE, 10), be_nested_str_weak(airquality) }, + { be_const_key_weak(update_virtual, 23), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual_closure) }, + { be_const_key_weak(shadow_tvoc, -1), be_const_var(7) }, + { be_const_key_weak(shadow_pm1, -1), be_const_var(2) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(airquality) }, + { be_const_key_weak(parse_configuration, 18), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration_closure) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Device_X20key_X20_X28ex_X3A_X20SCD40_X29) }, + { be_const_key_weak(shadow_co2, 8), be_const_var(5) }, + { be_const_key_weak(shadow_pm2_5, -1), be_const_var(3) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(44, -1), be_const_int(1) }, })) ) } )) }, - { be_const_key_weak(_parse_sensor_entry, 19), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry_closure) }, - { be_const_key_weak(shadow_pm1, 9), be_const_var(2) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Air_X20Quality) }, - { be_const_key_weak(parse_sensors, 7), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors_closure) }, - { be_const_key_weak(shadow_co2, -1), be_const_var(5) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_init_closure) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Device_X20key_X20_X28ex_X3A_X20SCD40_X29) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(CLUSTERS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(1068, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -798,7 +940,6 @@ be_local_class(Matter_Plugin_Sensor_Air_Quality, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(AirQuality) }, })), be_str_weak(Matter_Plugin_Sensor_Air_Quality) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h index 70f535d0f..ef1f3949f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h @@ -6,145 +6,6 @@ extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; -/******************************************************************** -** Solidified function: parse_status -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_status, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(prefix), - }), - be_str_weak(parse_status), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x540E0009, // 0000 LDINT R3 10 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C0300, // 0003 GETMET R3 R1 K0 - 0x88140101, // 0004 GETMBR R5 R0 K1 - 0x7C0C0400, // 0005 CALL R3 2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality; -be_local_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(content_send), - /* K2 */ be_nested_str_weak(_X25s_X20_X25i_X20), - }), - be_str_weak(web_values_single), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0007, // 0002 JMPF R2 #000B - 0xA40A0000, // 0003 IMPORT R2 K0 - 0x8C0C0501, // 0004 GETMET R3 R2 K1 - 0x60140018, // 0005 GETGBL R5 G24 - 0x58180002, // 0006 LDCONST R6 K2 - 0x5C1C0000, // 0007 MOVE R7 R0 - 0x5C200200, // 0008 MOVE R8 R1 - 0x7C140600, // 0009 CALL R5 3 - 0x7C0C0400, // 000A CALL R3 2 - 0x80000000, // 000B RET 0 - }) - ), - &be_class_Matter_Plugin_Bridge_Sensor_Air_Quality, - }), - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(web_values_prefix), - /* K1 */ be_nested_str_weak(Air), - /* K2 */ be_nested_str_weak(shadow_air_quality), - /* K3 */ be_nested_str_weak(PM1), - /* K4 */ be_nested_str_weak(shadow_pm1), - /* K5 */ be_nested_str_weak(PM2_X2E5), - /* K6 */ be_nested_str_weak(shadow_pm2_5), - /* K7 */ be_nested_str_weak(PM10), - /* K8 */ be_nested_str_weak(shadow_pm10), - /* K9 */ be_nested_str_weak(CO2), - /* K10 */ be_nested_str_weak(shadow_co2), - /* K11 */ be_nested_str_weak(NO2), - /* K12 */ be_nested_str_weak(shadow_no2), - /* K13 */ be_nested_str_weak(TVOC), - /* K14 */ be_nested_str_weak(shadow_tvoc), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x84040000, // 0000 CLOSURE R1 P0 - 0x8C080100, // 0001 GETMET R2 R0 K0 - 0x7C080200, // 0002 CALL R2 1 - 0x5C080200, // 0003 MOVE R2 R1 - 0x580C0001, // 0004 LDCONST R3 K1 - 0x88100102, // 0005 GETMBR R4 R0 K2 - 0x7C080400, // 0006 CALL R2 2 - 0x5C080200, // 0007 MOVE R2 R1 - 0x580C0003, // 0008 LDCONST R3 K3 - 0x88100104, // 0009 GETMBR R4 R0 K4 - 0x7C080400, // 000A CALL R2 2 - 0x5C080200, // 000B MOVE R2 R1 - 0x580C0005, // 000C LDCONST R3 K5 - 0x88100106, // 000D GETMBR R4 R0 K6 - 0x7C080400, // 000E CALL R2 2 - 0x5C080200, // 000F MOVE R2 R1 - 0x580C0007, // 0010 LDCONST R3 K7 - 0x88100108, // 0011 GETMBR R4 R0 K8 - 0x7C080400, // 0012 CALL R2 2 - 0x5C080200, // 0013 MOVE R2 R1 - 0x580C0009, // 0014 LDCONST R3 K9 - 0x8810010A, // 0015 GETMBR R4 R0 K10 - 0x7C080400, // 0016 CALL R2 2 - 0x5C080200, // 0017 MOVE R2 R1 - 0x580C000B, // 0018 LDCONST R3 K11 - 0x8810010C, // 0019 GETMBR R4 R0 K12 - 0x7C080400, // 001A CALL R2 2 - 0x5C080200, // 001B MOVE R2 R1 - 0x580C000D, // 001C LDCONST R3 K13 - 0x8810010E, // 001D GETMBR R4 R0 K14 - 0x7C080400, // 001E CALL R2 2 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Plugin_Bridge_Sensor_Air_Quality ********************************************************************/ @@ -152,14 +13,12 @@ extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_class(Matter_Plugin_Bridge_Sensor_Air_Quality, 0, &be_class_Matter_Plugin_Sensor_Air_Quality, - be_nested_map(6, + be_nested_map(4, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(BRIDGE, 2), be_const_bool(1) }, { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_airquality) }, - { be_const_key_weak(BRIDGE, 4), be_const_bool(1) }, - { be_const_key_weak(UPDATE_CMD, 5), be_nested_str_weak(Status_X2010) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_web_values_closure) }, - { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Air_Quality_parse_status_closure) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) }, })), be_str_weak(Matter_Plugin_Bridge_Sensor_Air_Quality) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 781223807..a92be66c2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -3385,7 +3385,7 @@ be_local_class(Matter_UI, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(equal_map, -1), be_const_static_closure(class_Matter_UI_equal_map_closure) }, { be_const_key_weak(page_part_mgr_adv, -1), be_const_closure(class_Matter_UI_page_part_mgr_adv_closure) }, - { be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact_X7Chttp_flow_X7Chttp_waterleak) }, + { be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact_X7Chttp_flow_X7Chttp_waterleak_X7Chttp_airquality) }, { be_const_key_weak(page_part_mgr, 25), be_const_closure(class_Matter_UI_page_part_mgr_closure) }, { be_const_key_weak(show_plugins_hints_js, -1), be_const_closure(class_Matter_UI_show_plugins_hints_js_closure) }, { be_const_key_weak(show_enable, -1), be_const_closure(class_Matter_UI_show_enable_closure) }, From 01140d3013345d185b5bd519b62c3fc343d202b5 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 8 Jun 2024 22:10:43 +0200 Subject: [PATCH 026/252] HASPmota rounds to nearest int values passed as 'real' (#21599) --- CHANGELOG.md | 1 + .../lv_haspmota/src/embedded/lv_haspmota.be | 6 + .../src/solidify/solidified_lv_haspmota.h | 334 +++++++++--------- 3 files changed, 181 insertions(+), 160 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3208282e2..f5ccea709 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Berry solidification of `bytes` instances (#21558) - Matter support for Air Quality sensors (#21559) +- HASPmota rounds to nearest int values passed as 'real' ### Breaking Changed diff --git a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be index a6da27b03..e6601d46c 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be +++ b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be @@ -1018,6 +1018,12 @@ class lvh_obj : lvh_root if string.startswith(k, "set_") || string.startswith(k, "get_") return end + # if value is 'real', round to nearest int + if type(v) == 'real' + import math + v = math.floor(v + 0.5) + end + # parse value in percentage if string.endswith(k, "%") k = k[0..-2] diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h index db8b25d01..9ac95c7de 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h +++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h @@ -3372,35 +3372,39 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0, /* has sup protos */ &be_class_lvh_obj, 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ + ( &(const bvalue[28]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(introspect), /* K2 */ be_nested_str_weak(startswith), /* K3 */ be_nested_str_weak(set_), /* K4 */ be_nested_str_weak(get_), - /* K5 */ be_nested_str_weak(endswith), - /* K6 */ be_nested_str_weak(_X25), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(lv), - /* K9 */ be_nested_str_weak(pct), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(byte), - /* K12 */ be_const_int(2147483647), - /* K13 */ be_nested_str_weak(digits_to_style), - /* K14 */ be_nested_str_weak(_attr_ignore), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(get), - /* K17 */ be_nested_str_weak(function), - /* K18 */ be_nested_str_weak(_attr_map), - /* K19 */ be_nested_str_weak(is_color_attribute), - /* K20 */ be_nested_str_weak(parse_color), - /* K21 */ be_nested_str_weak(_lv_obj), - /* K22 */ be_nested_str_weak(set_style_), - /* K23 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), + /* K5 */ be_nested_str_weak(real), + /* K6 */ be_nested_str_weak(math), + /* K7 */ be_nested_str_weak(floor), + /* K8 */ be_const_real_hex(0x3F000000), + /* K9 */ be_nested_str_weak(endswith), + /* K10 */ be_nested_str_weak(_X25), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(lv), + /* K13 */ be_nested_str_weak(pct), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(byte), + /* K16 */ be_const_int(2147483647), + /* K17 */ be_nested_str_weak(digits_to_style), + /* K18 */ be_nested_str_weak(_attr_ignore), + /* K19 */ be_nested_str_weak(find), + /* K20 */ be_nested_str_weak(get), + /* K21 */ be_nested_str_weak(function), + /* K22 */ be_nested_str_weak(_attr_map), + /* K23 */ be_nested_str_weak(is_color_attribute), + /* K24 */ be_nested_str_weak(parse_color), + /* K25 */ be_nested_str_weak(_lv_obj), + /* K26 */ be_nested_str_weak(set_style_), + /* K27 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), }), be_str_weak(setmember), &be_const_str_solidified, - ( &(const binstruction[152]) { /* code */ + ( &(const binstruction[162]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xA4120200, // 0001 IMPORT R4 K1 0x8C140702, // 0002 GETMET R5 R3 K2 @@ -3414,145 +3418,155 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x7C140600, // 000A CALL R5 3 0x78160000, // 000B JMPF R5 #000D 0x80000A00, // 000C RET 0 - 0x8C140705, // 000D GETMET R5 R3 K5 - 0x5C1C0200, // 000E MOVE R7 R1 - 0x58200006, // 000F LDCONST R8 K6 - 0x7C140600, // 0010 CALL R5 3 - 0x78160009, // 0011 JMPF R5 #001C - 0x5415FFFD, // 0012 LDINT R5 -2 - 0x40160E05, // 0013 CONNECT R5 K7 R5 - 0x94040205, // 0014 GETIDX R1 R1 R5 - 0xB8161000, // 0015 GETNGBL R5 K8 - 0x8C140B09, // 0016 GETMET R5 R5 K9 - 0x601C0009, // 0017 GETGBL R7 G9 - 0x5C200400, // 0018 MOVE R8 R2 - 0x7C1C0200, // 0019 CALL R7 1 - 0x7C140400, // 001A CALL R5 2 - 0x5C080A00, // 001B MOVE R2 R5 - 0x4C140000, // 001C LDNIL R5 - 0x6018000C, // 001D GETGBL R6 G12 - 0x5C1C0200, // 001E MOVE R7 R1 - 0x7C180200, // 001F CALL R6 1 - 0x28180D0A, // 0020 GE R6 R6 K10 - 0x781A001F, // 0021 JMPF R6 #0042 - 0x8C18070B, // 0022 GETMET R6 R3 K11 - 0x5421FFFE, // 0023 LDINT R8 -1 - 0x94200208, // 0024 GETIDX R8 R1 R8 - 0x7C180400, // 0025 CALL R6 2 - 0x8C1C070B, // 0026 GETMET R7 R3 K11 - 0x5425FFFD, // 0027 LDINT R9 -2 - 0x94240209, // 0028 GETIDX R9 R1 R9 - 0x7C1C0400, // 0029 CALL R7 2 - 0x5422002F, // 002A LDINT R8 48 - 0x28200C08, // 002B GE R8 R6 R8 - 0x78220014, // 002C JMPF R8 #0042 - 0x54220038, // 002D LDINT R8 57 - 0x18200C08, // 002E LE R8 R6 R8 - 0x78220011, // 002F JMPF R8 #0042 - 0x5422002F, // 0030 LDINT R8 48 - 0x28200E08, // 0031 GE R8 R7 R8 - 0x7822000E, // 0032 JMPF R8 #0042 - 0x54220038, // 0033 LDINT R8 57 - 0x18200E08, // 0034 LE R8 R7 R8 - 0x7822000B, // 0035 JMPF R8 #0042 - 0x60200009, // 0036 GETGBL R8 G9 - 0x5425FFFD, // 0037 LDINT R9 -2 - 0x4024130C, // 0038 CONNECT R9 R9 K12 - 0x94240209, // 0039 GETIDX R9 R1 R9 - 0x7C200200, // 003A CALL R8 1 - 0x5425FFFC, // 003B LDINT R9 -3 - 0x40260E09, // 003C CONNECT R9 K7 R9 - 0x94040209, // 003D GETIDX R1 R1 R9 - 0x8C24010D, // 003E GETMET R9 R0 K13 - 0x5C2C1000, // 003F MOVE R11 R8 - 0x7C240400, // 0040 CALL R9 2 - 0x5C141200, // 0041 MOVE R5 R9 - 0x8818010E, // 0042 GETMBR R6 R0 K14 - 0x8C180D0F, // 0043 GETMET R6 R6 K15 - 0x5C200200, // 0044 MOVE R8 R1 - 0x7C180400, // 0045 CALL R6 2 - 0x4C1C0000, // 0046 LDNIL R7 - 0x20180C07, // 0047 NE R6 R6 R7 - 0x781A0000, // 0048 JMPF R6 #004A - 0x80000C00, // 0049 RET 0 - 0x8C180910, // 004A GETMET R6 R4 K16 - 0x5C200000, // 004B MOVE R8 R0 - 0x00260601, // 004C ADD R9 K3 R1 - 0x7C180600, // 004D CALL R6 3 - 0x601C0004, // 004E GETGBL R7 G4 - 0x5C200C00, // 004F MOVE R8 R6 - 0x7C1C0200, // 0050 CALL R7 1 - 0x1C1C0F11, // 0051 EQ R7 R7 K17 - 0x781E000A, // 0052 JMPF R7 #005E - 0x5C1C0C00, // 0053 MOVE R7 R6 - 0x5C200000, // 0054 MOVE R8 R0 - 0x5C240400, // 0055 MOVE R9 R2 - 0x4C280000, // 0056 LDNIL R10 - 0x20280A0A, // 0057 NE R10 R5 R10 - 0x782A0001, // 0058 JMPF R10 #005B - 0x5C280A00, // 0059 MOVE R10 R5 - 0x70020000, // 005A JMP #005C - 0x58280007, // 005B LDCONST R10 K7 - 0x7C1C0600, // 005C CALL R7 3 - 0x80000E00, // 005D RET 0 - 0x881C0112, // 005E GETMBR R7 R0 K18 - 0x8C1C0F0F, // 005F GETMET R7 R7 K15 - 0x5C240200, // 0060 MOVE R9 R1 - 0x5C280200, // 0061 MOVE R10 R1 - 0x7C1C0600, // 0062 CALL R7 3 - 0x5C040E00, // 0063 MOVE R1 R7 - 0x8C1C0113, // 0064 GETMET R7 R0 K19 - 0x5C240200, // 0065 MOVE R9 R1 - 0x7C1C0400, // 0066 CALL R7 2 - 0x781E0003, // 0067 JMPF R7 #006C - 0x8C1C0114, // 0068 GETMET R7 R0 K20 - 0x5C240400, // 0069 MOVE R9 R2 - 0x7C1C0400, // 006A CALL R7 2 - 0x5C080E00, // 006B MOVE R2 R7 - 0x4C1C0000, // 006C LDNIL R7 - 0x1C1C0A07, // 006D EQ R7 R5 R7 - 0x781E000E, // 006E JMPF R7 #007E - 0x8C1C0910, // 006F GETMET R7 R4 K16 - 0x88240115, // 0070 GETMBR R9 R0 K21 - 0x002A0601, // 0071 ADD R10 K3 R1 - 0x7C1C0600, // 0072 CALL R7 3 - 0x5C180E00, // 0073 MOVE R6 R7 - 0x601C0004, // 0074 GETGBL R7 G4 - 0x5C200C00, // 0075 MOVE R8 R6 - 0x7C1C0200, // 0076 CALL R7 1 - 0x1C1C0F11, // 0077 EQ R7 R7 K17 - 0x781E0004, // 0078 JMPF R7 #007E - 0x5C1C0C00, // 0079 MOVE R7 R6 - 0x88200115, // 007A GETMBR R8 R0 K21 - 0x5C240400, // 007B MOVE R9 R2 - 0x7C1C0400, // 007C CALL R7 2 - 0x80040E00, // 007D RET 1 R7 - 0x8C1C0910, // 007E GETMET R7 R4 K16 - 0x88240115, // 007F GETMBR R9 R0 K21 - 0x002A2C01, // 0080 ADD R10 K22 R1 - 0x7C1C0600, // 0081 CALL R7 3 - 0x5C180E00, // 0082 MOVE R6 R7 - 0x601C0004, // 0083 GETGBL R7 G4 - 0x5C200C00, // 0084 MOVE R8 R6 - 0x7C1C0200, // 0085 CALL R7 1 - 0x1C1C0F11, // 0086 EQ R7 R7 K17 - 0x781E000A, // 0087 JMPF R7 #0093 - 0x5C1C0C00, // 0088 MOVE R7 R6 - 0x88200115, // 0089 GETMBR R8 R0 K21 - 0x5C240400, // 008A MOVE R9 R2 - 0x4C280000, // 008B LDNIL R10 - 0x20280A0A, // 008C NE R10 R5 R10 - 0x782A0001, // 008D JMPF R10 #0090 - 0x5C280A00, // 008E MOVE R10 R5 - 0x70020000, // 008F JMP #0091 - 0x58280007, // 0090 LDCONST R10 K7 - 0x7C1C0600, // 0091 CALL R7 3 - 0x80040E00, // 0092 RET 1 R7 - 0x601C0001, // 0093 GETGBL R7 G1 - 0x58200017, // 0094 LDCONST R8 K23 - 0x5C240200, // 0095 MOVE R9 R1 - 0x7C1C0400, // 0096 CALL R7 2 - 0x80000000, // 0097 RET 0 + 0x60140004, // 000D GETGBL R5 G4 + 0x5C180400, // 000E MOVE R6 R2 + 0x7C140200, // 000F CALL R5 1 + 0x1C140B05, // 0010 EQ R5 R5 K5 + 0x78160004, // 0011 JMPF R5 #0017 + 0xA4160C00, // 0012 IMPORT R5 K6 + 0x8C180B07, // 0013 GETMET R6 R5 K7 + 0x00200508, // 0014 ADD R8 R2 K8 + 0x7C180400, // 0015 CALL R6 2 + 0x5C080C00, // 0016 MOVE R2 R6 + 0x8C140709, // 0017 GETMET R5 R3 K9 + 0x5C1C0200, // 0018 MOVE R7 R1 + 0x5820000A, // 0019 LDCONST R8 K10 + 0x7C140600, // 001A CALL R5 3 + 0x78160009, // 001B JMPF R5 #0026 + 0x5415FFFD, // 001C LDINT R5 -2 + 0x40161605, // 001D CONNECT R5 K11 R5 + 0x94040205, // 001E GETIDX R1 R1 R5 + 0xB8161800, // 001F GETNGBL R5 K12 + 0x8C140B0D, // 0020 GETMET R5 R5 K13 + 0x601C0009, // 0021 GETGBL R7 G9 + 0x5C200400, // 0022 MOVE R8 R2 + 0x7C1C0200, // 0023 CALL R7 1 + 0x7C140400, // 0024 CALL R5 2 + 0x5C080A00, // 0025 MOVE R2 R5 + 0x4C140000, // 0026 LDNIL R5 + 0x6018000C, // 0027 GETGBL R6 G12 + 0x5C1C0200, // 0028 MOVE R7 R1 + 0x7C180200, // 0029 CALL R6 1 + 0x28180D0E, // 002A GE R6 R6 K14 + 0x781A001F, // 002B JMPF R6 #004C + 0x8C18070F, // 002C GETMET R6 R3 K15 + 0x5421FFFE, // 002D LDINT R8 -1 + 0x94200208, // 002E GETIDX R8 R1 R8 + 0x7C180400, // 002F CALL R6 2 + 0x8C1C070F, // 0030 GETMET R7 R3 K15 + 0x5425FFFD, // 0031 LDINT R9 -2 + 0x94240209, // 0032 GETIDX R9 R1 R9 + 0x7C1C0400, // 0033 CALL R7 2 + 0x5422002F, // 0034 LDINT R8 48 + 0x28200C08, // 0035 GE R8 R6 R8 + 0x78220014, // 0036 JMPF R8 #004C + 0x54220038, // 0037 LDINT R8 57 + 0x18200C08, // 0038 LE R8 R6 R8 + 0x78220011, // 0039 JMPF R8 #004C + 0x5422002F, // 003A LDINT R8 48 + 0x28200E08, // 003B GE R8 R7 R8 + 0x7822000E, // 003C JMPF R8 #004C + 0x54220038, // 003D LDINT R8 57 + 0x18200E08, // 003E LE R8 R7 R8 + 0x7822000B, // 003F JMPF R8 #004C + 0x60200009, // 0040 GETGBL R8 G9 + 0x5425FFFD, // 0041 LDINT R9 -2 + 0x40241310, // 0042 CONNECT R9 R9 K16 + 0x94240209, // 0043 GETIDX R9 R1 R9 + 0x7C200200, // 0044 CALL R8 1 + 0x5425FFFC, // 0045 LDINT R9 -3 + 0x40261609, // 0046 CONNECT R9 K11 R9 + 0x94040209, // 0047 GETIDX R1 R1 R9 + 0x8C240111, // 0048 GETMET R9 R0 K17 + 0x5C2C1000, // 0049 MOVE R11 R8 + 0x7C240400, // 004A CALL R9 2 + 0x5C141200, // 004B MOVE R5 R9 + 0x88180112, // 004C GETMBR R6 R0 K18 + 0x8C180D13, // 004D GETMET R6 R6 K19 + 0x5C200200, // 004E MOVE R8 R1 + 0x7C180400, // 004F CALL R6 2 + 0x4C1C0000, // 0050 LDNIL R7 + 0x20180C07, // 0051 NE R6 R6 R7 + 0x781A0000, // 0052 JMPF R6 #0054 + 0x80000C00, // 0053 RET 0 + 0x8C180914, // 0054 GETMET R6 R4 K20 + 0x5C200000, // 0055 MOVE R8 R0 + 0x00260601, // 0056 ADD R9 K3 R1 + 0x7C180600, // 0057 CALL R6 3 + 0x601C0004, // 0058 GETGBL R7 G4 + 0x5C200C00, // 0059 MOVE R8 R6 + 0x7C1C0200, // 005A CALL R7 1 + 0x1C1C0F15, // 005B EQ R7 R7 K21 + 0x781E000A, // 005C JMPF R7 #0068 + 0x5C1C0C00, // 005D MOVE R7 R6 + 0x5C200000, // 005E MOVE R8 R0 + 0x5C240400, // 005F MOVE R9 R2 + 0x4C280000, // 0060 LDNIL R10 + 0x20280A0A, // 0061 NE R10 R5 R10 + 0x782A0001, // 0062 JMPF R10 #0065 + 0x5C280A00, // 0063 MOVE R10 R5 + 0x70020000, // 0064 JMP #0066 + 0x5828000B, // 0065 LDCONST R10 K11 + 0x7C1C0600, // 0066 CALL R7 3 + 0x80000E00, // 0067 RET 0 + 0x881C0116, // 0068 GETMBR R7 R0 K22 + 0x8C1C0F13, // 0069 GETMET R7 R7 K19 + 0x5C240200, // 006A MOVE R9 R1 + 0x5C280200, // 006B MOVE R10 R1 + 0x7C1C0600, // 006C CALL R7 3 + 0x5C040E00, // 006D MOVE R1 R7 + 0x8C1C0117, // 006E GETMET R7 R0 K23 + 0x5C240200, // 006F MOVE R9 R1 + 0x7C1C0400, // 0070 CALL R7 2 + 0x781E0003, // 0071 JMPF R7 #0076 + 0x8C1C0118, // 0072 GETMET R7 R0 K24 + 0x5C240400, // 0073 MOVE R9 R2 + 0x7C1C0400, // 0074 CALL R7 2 + 0x5C080E00, // 0075 MOVE R2 R7 + 0x4C1C0000, // 0076 LDNIL R7 + 0x1C1C0A07, // 0077 EQ R7 R5 R7 + 0x781E000E, // 0078 JMPF R7 #0088 + 0x8C1C0914, // 0079 GETMET R7 R4 K20 + 0x88240119, // 007A GETMBR R9 R0 K25 + 0x002A0601, // 007B ADD R10 K3 R1 + 0x7C1C0600, // 007C CALL R7 3 + 0x5C180E00, // 007D MOVE R6 R7 + 0x601C0004, // 007E GETGBL R7 G4 + 0x5C200C00, // 007F MOVE R8 R6 + 0x7C1C0200, // 0080 CALL R7 1 + 0x1C1C0F15, // 0081 EQ R7 R7 K21 + 0x781E0004, // 0082 JMPF R7 #0088 + 0x5C1C0C00, // 0083 MOVE R7 R6 + 0x88200119, // 0084 GETMBR R8 R0 K25 + 0x5C240400, // 0085 MOVE R9 R2 + 0x7C1C0400, // 0086 CALL R7 2 + 0x80040E00, // 0087 RET 1 R7 + 0x8C1C0914, // 0088 GETMET R7 R4 K20 + 0x88240119, // 0089 GETMBR R9 R0 K25 + 0x002A3401, // 008A ADD R10 K26 R1 + 0x7C1C0600, // 008B CALL R7 3 + 0x5C180E00, // 008C MOVE R6 R7 + 0x601C0004, // 008D GETGBL R7 G4 + 0x5C200C00, // 008E MOVE R8 R6 + 0x7C1C0200, // 008F CALL R7 1 + 0x1C1C0F15, // 0090 EQ R7 R7 K21 + 0x781E000A, // 0091 JMPF R7 #009D + 0x5C1C0C00, // 0092 MOVE R7 R6 + 0x88200119, // 0093 GETMBR R8 R0 K25 + 0x5C240400, // 0094 MOVE R9 R2 + 0x4C280000, // 0095 LDNIL R10 + 0x20280A0A, // 0096 NE R10 R5 R10 + 0x782A0001, // 0097 JMPF R10 #009A + 0x5C280A00, // 0098 MOVE R10 R5 + 0x70020000, // 0099 JMP #009B + 0x5828000B, // 009A LDCONST R10 K11 + 0x7C1C0600, // 009B CALL R7 3 + 0x80040E00, // 009C RET 1 R7 + 0x601C0001, // 009D GETGBL R7 G1 + 0x5820001B, // 009E LDCONST R8 K27 + 0x5C240200, // 009F MOVE R9 R1 + 0x7C1C0400, // 00A0 CALL R7 2 + 0x80000000, // 00A1 RET 0 }) ) ); From c556c06413b7e7495fd81190def7b651d4e8f9e8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 9 Jun 2024 10:25:32 +0200 Subject: [PATCH 027/252] remove dead code (#21595) --- tasmota/tasmota_support/support_wifi.ino | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/tasmota/tasmota_support/support_wifi.ino b/tasmota/tasmota_support/support_wifi.ino index 852664ad4..eee250d8e 100644 --- a/tasmota/tasmota_support/support_wifi.ino +++ b/tasmota/tasmota_support/support_wifi.ino @@ -923,22 +923,6 @@ void WifiCheck(uint8_t param) if (Wifi.config_counter) { Wifi.config_counter--; Wifi.counter = Wifi.config_counter +5; - if (Wifi.config_counter) { - if (!Wifi.config_counter) { - if (strlen(WiFi.SSID().c_str())) { - SettingsUpdateText(SET_STASSID1, WiFi.SSID().c_str()); - } - if (strlen(WiFi.psk().c_str())) { - SettingsUpdateText(SET_STAPWD1, WiFi.psk().c_str()); - } - Settings->sta_active = 0; - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_2_WIFIMANAGER D_CMND_SSID "1 %s"), SettingsText(SET_STASSID1)); - } - } - if (!Wifi.config_counter) { -// SettingsSdkErase(); // Disabled v6.1.0b due to possible bad wifi connects - TasmotaGlobal.restart_flag = 2; - } } else { if (Wifi.counter <= 0) { WifiCheckIp(); From 3cae94d710b4bbd3bfba74148d8a546bf5bb49b6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Jun 2024 10:35:03 +0200 Subject: [PATCH 028/252] Update changelogs --- CHANGELOG.md | 3 ++- RELEASENOTES.md | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5ccea709..85f5e0232 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ All notable changes to this project will be documented in this file. ### Added - Berry solidification of `bytes` instances (#21558) - Matter support for Air Quality sensors (#21559) -- HASPmota rounds to nearest int values passed as 'real' +- Matter support for bridged Air Quality (#21597) +- HASPmota rounds to nearest int values passed as 'real' (#21599) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ed8cdc01e..bf213708a 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -122,7 +122,9 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ## Changelog v14.1.0.1 ### Added - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) +- HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) +- Matter support for bridged Air Quality (#21597)[#21597](https://github.com/arendst/Tasmota/issues/21597) ### Changed - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` From 8cfa6f28ea0c9ee2b9a07b152d98a5dcbb046385 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Jun 2024 10:40:01 +0200 Subject: [PATCH 029/252] Fix restart on wifimanager timeout --- tasmota/tasmota_support/support_wifi.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasmota/tasmota_support/support_wifi.ino b/tasmota/tasmota_support/support_wifi.ino index eee250d8e..35b07046e 100644 --- a/tasmota/tasmota_support/support_wifi.ino +++ b/tasmota/tasmota_support/support_wifi.ino @@ -923,6 +923,10 @@ void WifiCheck(uint8_t param) if (Wifi.config_counter) { Wifi.config_counter--; Wifi.counter = Wifi.config_counter +5; + if (!Wifi.config_counter) { +// SettingsSdkErase(); // Disabled v6.1.0b due to possible bad wifi connects + TasmotaGlobal.restart_flag = 2; + } } else { if (Wifi.counter <= 0) { WifiCheckIp(); From ea5c9bc9b61ac12a574c8eb04f2a4a9a9ada666e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Jun 2024 13:46:54 +0200 Subject: [PATCH 030/252] Fix DisplayMode MQTT (Un)Subscribe without restart --- .../tasmota_xdrv_driver/xdrv_13_display.ino | 79 ++++++++++--------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino index 4a9cd73c3..bbeea3be0 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino @@ -497,14 +497,12 @@ void DisplayText(void) // use disp_xpos, disp_ypos DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); } -#ifdef USE_DISPLAY_MODES1TO5 - } else { - DisplayLogBufferAdd(linebuf); - } -#endif // USE_DISPLAY_MODES1TO5 memset(linebuf, ' ', sizeof(linebuf)); linebuf[sizeof(linebuf)-1] = 0; dp = linebuf; +#ifdef USE_DISPLAY_MODES1TO5 + } +#endif // USE_DISPLAY_MODES1TO5 } } else { // copy chars @@ -1236,7 +1234,9 @@ extern FS *ffsp; alignright(linebuf); } #ifdef USE_DISPLAY_MODES1TO5 - if (!Settings->display_mode) { + if (Settings->display_mode) { + DisplayLogBufferAdd(linebuf); + } else #endif // USE_DISPLAY_MODES1TO5 if (col > 0 && lin > 0) { // use col and lin @@ -1245,11 +1245,6 @@ extern FS *ffsp; // use disp_xpos, disp_ypos DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0); } -#ifdef USE_DISPLAY_MODES1TO5 - } else { - DisplayLogBufferAdd(linebuf); - } -#endif // USE_DISPLAY_MODES1TO5 } // draw buffer if (auto_draw&1) { @@ -1597,6 +1592,8 @@ void DisplayAllocLogBuffer(void) if (disp_log_buffer != nullptr) { disp_log_buffer_cols = Settings->display_cols[0] +1; DisplayClearLogBuffer(); + DisplayClearScreenBuffer(); + DisplayClear(); } } } @@ -1818,35 +1815,37 @@ void DisplayAnalyzeJson(char *topic, const char *json) } } -void DisplayMqttSubscribe(void) -{ +void DisplayMqttSubscribe(void) { /* Subscribe to tele messages only * Supports the following FullTopic formats * - %prefix%/%topic% * - home/%prefix%/%topic% * - home/level2/%prefix%/%topic% etc. */ - if (Settings->display_model && (Settings->display_mode &0x04)) { - - char stopic[TOPSZ]; - char ntopic[TOPSZ]; - - ntopic[0] = '\0'; - strlcpy(stopic, SettingsText(SET_MQTT_FULLTOPIC), sizeof(stopic)); - char *tp = strtok(stopic, "/"); - while (tp != nullptr) { - if (!strcmp_P(tp, MQTT_TOKEN_PREFIX)) { - break; - } - strncat_P(ntopic, PSTR("+/"), sizeof(ntopic) - strlen(ntopic) -1); // Add single-level wildcards - tp = strtok(nullptr, "/"); + char stopic[TOPSZ]; + strlcpy(stopic, SettingsText(SET_MQTT_FULLTOPIC), sizeof(stopic)); + char *tp = strtok(stopic, "/"); + char ntopic[TOPSZ]; + ntopic[0] = '\0'; + while (tp != nullptr) { + if (!strcmp_P(tp, MQTT_TOKEN_PREFIX)) { + break; + } + strncat_P(ntopic, PSTR("+/"), sizeof(ntopic) - strlen(ntopic) -1); // Add single-level wildcards + tp = strtok(nullptr, "/"); + } + strncat(ntopic, SettingsText(SET_MQTTPREFIX3), sizeof(ntopic) - strlen(ntopic) -1); // Subscribe to tele messages + strncat_P(ntopic, PSTR("/#"), sizeof(ntopic) - strlen(ntopic) -1); // Add multi-level wildcard + if (Settings->display_model && (Settings->display_mode &0x04)) { + if (!disp_subscribed) { + disp_subscribed = true; + MqttSubscribe(ntopic); } - strncat(ntopic, SettingsText(SET_MQTTPREFIX3), sizeof(ntopic) - strlen(ntopic) -1); // Subscribe to tele messages - strncat_P(ntopic, PSTR("/#"), sizeof(ntopic) - strlen(ntopic) -1); // Add multi-level wildcard - MqttSubscribe(ntopic); - disp_subscribed = true; } else { - disp_subscribed = false; + if (disp_subscribed) { + disp_subscribed = false; + MqttUnsubscribe(ntopic); + } } } @@ -2026,14 +2025,18 @@ void CmndDisplayMode(void) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 5)) { uint32_t last_display_mode = Settings->display_mode; Settings->display_mode = XdrvMailbox.payload; - - if (disp_subscribed != (Settings->display_mode &0x04)) { - TasmotaGlobal.restart_flag = 2; // Restart to Add/Remove MQTT subscribe - } else { - if (Settings->display_mode) { // Switch to non mode 0 + if (last_display_mode != Settings->display_mode) { // Switch to different mode + if ((!last_display_mode && Settings->display_mode) || // Switch to mode 1, 2, 3 or 4 + (last_display_mode && !Settings->display_mode)) { // Switch to mode 0 + DisplayInit(DISPLAY_INIT_MODE); + } + if (1 == Settings->display_mode) { // Switch to mode 1 + DisplayClear(); + } + else if (Settings->display_mode > 1) { // Switch to mode 2, 3 or 4 DisplayLogBufferInit(); } - DisplayInit(DISPLAY_INIT_MODE); + DisplayMqttSubscribe(); } } #endif // USE_DISPLAY_MODES1TO5 From bdc15960ad48292d0f907f51c5abe4ea7cd2310d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Jun 2024 16:25:04 +0200 Subject: [PATCH 031/252] Refactor display show sensors --- .../tasmota_xdrv_driver/xdrv_13_display.ino | 99 ++++++++----------- 1 file changed, 40 insertions(+), 59 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino index bbeea3be0..cdb9faded 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino @@ -1667,91 +1667,73 @@ void DisplayLogBufferInit(void) \*********************************************************************************************/ enum SensorQuantity { - JSON_TEMPERATURE, - JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY, + JSON_TEMPERATURE, JSON_DEWPOINT, JSON_HEATINDEX, JSON_PRESSURE, JSON_PRESSUREATSEALEVEL, + JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL, + JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY, JSON_ILLUMINANCE, JSON_GAS, JSON_YESTERDAY, JSON_TOTAL, JSON_TODAY, JSON_PERIOD, - JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL, JSON_CURRENT, JSON_VOLTAGE, JSON_POWERUSAGE, JSON_CO2, JSON_FREQUENCY }; const char kSensorQuantity[] PROGMEM = - D_JSON_TEMPERATURE "|" // degrees - D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage + D_JSON_TEMPERATURE "|" D_JSON_DEWPOINT "|" D_JSON_HEATINDEX "|" // degrees D_JSON_PRESSURE "|" D_JSON_PRESSUREATSEALEVEL "|" // hPa + D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit + D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage D_JSON_ILLUMINANCE "|" // lx D_JSON_GAS "|" // kOhm D_JSON_YESTERDAY "|" D_JSON_TOTAL "|" D_JSON_TODAY "|" // kWh D_JSON_PERIOD "|" // Wh - D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit D_JSON_CURRENT "|" // Ampere D_JSON_VOLTAGE "|" // Volt D_JSON_POWERUSAGE "|" // Watt D_JSON_CO2 "|" // ppm - D_JSON_FREQUENCY ; // Hz - -void DisplayJsonValue(const char* topic, const char* device, const char* mkey, const char* value) -{ - char quantity[TOPSZ]; - char buffer[Settings->display_cols[0] +1]; - char spaces[Settings->display_cols[0]]; - char source[Settings->display_cols[0] - Settings->display_cols[1]]; - char svalue[Settings->display_cols[1] +1]; + D_JSON_FREQUENCY; // Hz +const char kSensorUnit[] PROGMEM = + "|||" // degrees Celsius or Fahrenheit + "||" // pressure hPa or mmHg + "||||" // No unit + "%|%|%|%|" // percentage + D_UNIT_LUX "|" // lx + D_UNIT_KILOOHM "|" // kOhm + D_UNIT_KILOWATTHOUR "|" D_UNIT_KILOWATTHOUR "|" D_UNIT_KILOWATTHOUR "|" // kWh + D_UNIT_WATTHOUR "|" // Wh + D_UNIT_AMPERE "|" // A + D_UNIT_VOLT "|" // V + D_UNIT_WATT "|" // W + D_UNIT_PARTS_PER_MILLION "|" // ppm + D_UNIT_HERTZ; // Hz +void DisplayJsonValue(const char* topic, const char* device, const char* mkey, const char* value) { SHOW_FREE_MEM(PSTR("DisplayJsonValue")); - memset(spaces, 0x20, sizeof(spaces)); - spaces[sizeof(spaces) -1] = '\0'; - snprintf_P(source, sizeof(source), PSTR("%s%s%s%s"), topic, (strlen(topic))?"/":"", mkey, spaces); // pow1/Voltage or Voltage if topic is empty (local sensor) + char temp[TOPSZ]; + int quantity_code = GetCommandCode(temp, sizeof(temp), mkey, kSensorQuantity); + if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER + return; // Display value not supported + } - int quantity_code = GetCommandCode(quantity, sizeof(quantity), mkey, kSensorQuantity); - if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER - return; + char svalue[Settings->display_cols[1] +1]; // Max sized unit string + if (quantity_code <= JSON_HEATINDEX) { // Temperature + snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp); // Used by DisplayLogBuffer replace degrees character (276 octal) } - if (JSON_TEMPERATURE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp); + else if (quantity_code <= JSON_PRESSUREATSEALEVEL) { // Pressure + snprintf_P(svalue, sizeof(svalue), PSTR("%s%s"), value, disp_pres); // hPa or mmHg } - else if ((quantity_code >= JSON_HUMIDITY) && (quantity_code <= JSON_AIRQUALITY)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s%%"), value); - } - else if ((quantity_code >= JSON_PRESSURE) && (quantity_code <= JSON_PRESSUREATSEALEVEL)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s%s"), value, disp_pres); - } - else if (JSON_ILLUMINANCE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_LUX), value); - } - else if (JSON_GAS == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOOHM), value); - } - else if ((quantity_code >= JSON_YESTERDAY) && (quantity_code <= JSON_TODAY)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOWATTHOUR), value); - } - else if (JSON_PERIOD == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATTHOUR), value); - } - else if ((quantity_code >= JSON_POWERFACTOR) && (quantity_code <= JSON_UV_LEVEL)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s"), value); - } - else if (JSON_CURRENT == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_AMPERE), value); - } - else if (JSON_VOLTAGE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_VOLT), value); - } - else if (JSON_POWERUSAGE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATT), value); - } - else if (JSON_CO2 == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PARTS_PER_MILLION), value); - } - else if (JSON_FREQUENCY == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_HERTZ), value); + else { + snprintf_P(svalue, sizeof(svalue), PSTR("%s%s"), value, GetTextIndexed(temp, sizeof(temp), quantity_code, kSensorUnit)); } + + char buffer[Settings->display_cols[0] +1]; // Max sized buffer string + memset(buffer, 0x20, sizeof(buffer)); // Temporarily use for spaces + buffer[sizeof(buffer) -1] = '\0'; + char source[Settings->display_cols[0] - Settings->display_cols[1]]; // Max sized source string + snprintf_P(source, sizeof(source), PSTR("%s%s%s%s"), topic, (strlen(topic))?"/":"", mkey, buffer); // pow1/Voltage or Voltage if topic is empty (local sensor) snprintf_P(buffer, sizeof(buffer), PSTR("%s %s"), source, svalue); // AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, buffer); @@ -1879,7 +1861,6 @@ void DisplayLocalSensor(void) #endif // USE_DISPLAY_MODES1TO5 - /*********************************************************************************************\ * Public \*********************************************************************************************/ From c86e4db3a955cfc9068bced4eae71506f1163ec2 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 9 Jun 2024 17:49:29 +0200 Subject: [PATCH 032/252] Berry automatic rounding of float to int when calling C mapped functions (#21601) --- CHANGELOG.md | 1 + .../berry_mapping/src/be_class_wrapper.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85f5e0232..e85c1ab4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Matter support for Air Quality sensors (#21559) - Matter support for bridged Air Quality (#21597) - HASPmota rounds to nearest int values passed as 'real' (#21599) +- Berry automatic rounding of float to int when calling C mapped functions ### Breaking Changed diff --git a/lib/libesp32/berry_mapping/src/be_class_wrapper.c b/lib/libesp32/berry_mapping/src/be_class_wrapper.c index 1c567306b..0e06ec1de 100644 --- a/lib/libesp32/berry_mapping/src/be_class_wrapper.c +++ b/lib/libesp32/berry_mapping/src/be_class_wrapper.c @@ -13,6 +13,13 @@ #include "be_exec.h" #include #include +#include + +#if BE_USE_SINGLE_FLOAT + #define mathfunc(func) func##f +#else + #define mathfunc(func) func +#endif /* Ubuntu 22.04 LTS seems to have an invalid or missing signature for strtok_r, forcing a correct one */ extern char *strtok_r(char *str, const char *delim, char **saveptr); @@ -227,7 +234,15 @@ intptr_t be_convert_single_elt(bvm *vm, int idx, const char * arg_type, int *buf type_ok = type_ok || (arg_type[0] == provided_type && arg_type[1] == 0); // or type is a match (single char only) type_ok = type_ok || (ret == 0 && arg_type_len != 1); // or NULL is accepted for an instance type_ok = type_ok || (ret == 0 && arg_type[0] == 's' && arg_type[1] == 0); // accept nil for string, can be dangerous - + if (!type_ok) { + if ((provided_type == 'f') && (arg_type[0] == 'i') && (arg_type[1] == 0)) { + // special case: float is accepted as int + breal v_real = be_toreal(vm, idx); + ret = mathfunc(round)(v_real); + provided_type = 'i'; + type_ok = btrue; + } + } if (!type_ok) { be_raisef(vm, "type_error", "Unexpected argument type '%c', expected '%s'", provided_type, arg_type); } From e4bf2a5c275998cae88b5427bd8f5303dd6b9e9d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Jun 2024 18:33:47 +0200 Subject: [PATCH 033/252] Update changelogs --- CHANGELOG.md | 2 +- RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e85c1ab4e..560a7ec2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ All notable changes to this project will be documented in this file. - Matter support for Air Quality sensors (#21559) - Matter support for bridged Air Quality (#21597) - HASPmota rounds to nearest int values passed as 'real' (#21599) -- Berry automatic rounding of float to int when calling C mapped functions +- Berry automatic rounding of float to int when calling C mapped functions (#21601) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index bf213708a..304f01bcc 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -122,6 +122,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ## Changelog v14.1.0.1 ### Added - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) +- Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality (#21597)[#21597](https://github.com/arendst/Tasmota/issues/21597) From 9546390a1f574a8f7b8b7191f76a5de45578256a Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 9 Jun 2024 19:01:15 +0200 Subject: [PATCH 034/252] Berry add `math.round` (#21602) * Berry add `math.round` * add unit tests * math.roung() returns real --- CHANGELOG.md | 3 ++- lib/libesp32/berry/src/be_mathlib.c | 13 +++++++++++++ lib/libesp32/berry/tests/math.be | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 560a7ec2d..e7c3baa91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,8 @@ All notable changes to this project will be documented in this file. - Matter support for Air Quality sensors (#21559) - Matter support for bridged Air Quality (#21597) - HASPmota rounds to nearest int values passed as 'real' (#21599) -- Berry automatic rounding of float to int when calling C mapped functions (#21601) +- Berry automatic rounding of float to int when calling C mapped functions +- Berry add `math.round` ### Breaking Changed diff --git a/lib/libesp32/berry/src/be_mathlib.c b/lib/libesp32/berry/src/be_mathlib.c index 52abeffd7..17fbfe159 100644 --- a/lib/libesp32/berry/src/be_mathlib.c +++ b/lib/libesp32/berry/src/be_mathlib.c @@ -89,6 +89,17 @@ static int m_floor(bvm *vm) be_return(vm); } +static int m_round(bvm *vm) +{ + if (be_top(vm) >= 1 && be_isnumber(vm, 1)) { + breal x = be_toreal(vm, 1); + be_pushreal(vm, mathfunc(round)(x)); + } else { + be_pushreal(vm, (breal)0.0); + } + be_return(vm); +} + static int m_sin(bvm *vm) { if (be_top(vm) >= 1 && be_isnumber(vm, 1)) { @@ -299,6 +310,7 @@ be_native_module_attr_table(math) { be_native_module_function("abs", m_abs), be_native_module_function("ceil", m_ceil), be_native_module_function("floor", m_floor), + be_native_module_function("round", m_round), be_native_module_function("sin", m_sin), be_native_module_function("cos", m_cos), be_native_module_function("tan", m_tan), @@ -334,6 +346,7 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) { abs, func(m_abs) ceil, func(m_ceil) floor, func(m_floor) + round, func(m_round) sin, func(m_sin) cos, func(m_cos) tan, func(m_tan) diff --git a/lib/libesp32/berry/tests/math.be b/lib/libesp32/berry/tests/math.be index 232ffa285..6ad8b01c1 100644 --- a/lib/libesp32/berry/tests/math.be +++ b/lib/libesp32/berry/tests/math.be @@ -44,3 +44,17 @@ m_inf2 = {"v": -math.inf} assert(json.dump(m_inf2) == '{"v":null}') m_v = {"v": 3.5} assert(json.dump(m_v) == '{"v":3.5}') + +# math.round +assert(math.round(3) == 3) +assert(math.round(3.2) == 3) +assert(math.round(3.5) == 4) +assert(math.round(3.6) == 4) + +assert(math.round(-3) == -3) +assert(math.round(-3.2) == -3) +assert(math.round(-3.5) == -4) +assert(math.round(-3.6) == -4) + +assert(math.round() == 0) + From a53e057d54af0a01676a2b65d498861dc727030a Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 9 Jun 2024 19:39:15 +0200 Subject: [PATCH 035/252] HASPmota fix float rounding (#21604) --- .../lv_haspmota/src/embedded/lv_haspmota.be | 2 +- .../src/solidify/solidified_lv_haspmota.h | 335 +++++++++--------- 2 files changed, 169 insertions(+), 168 deletions(-) diff --git a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be index e6601d46c..d0822dbeb 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be +++ b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be @@ -1021,7 +1021,7 @@ class lvh_obj : lvh_root # if value is 'real', round to nearest int if type(v) == 'real' import math - v = math.floor(v + 0.5) + v = int(math.round(v)) end # parse value in percentage diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h index 9ac95c7de..83bad6778 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h +++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h @@ -3372,7 +3372,7 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0, /* has sup protos */ &be_class_lvh_obj, 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ + ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(introspect), /* K2 */ be_nested_str_weak(startswith), @@ -3380,31 +3380,30 @@ be_local_closure(class_lvh_obj_setmember, /* name */ /* K4 */ be_nested_str_weak(get_), /* K5 */ be_nested_str_weak(real), /* K6 */ be_nested_str_weak(math), - /* K7 */ be_nested_str_weak(floor), - /* K8 */ be_const_real_hex(0x3F000000), - /* K9 */ be_nested_str_weak(endswith), - /* K10 */ be_nested_str_weak(_X25), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(lv), - /* K13 */ be_nested_str_weak(pct), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(byte), - /* K16 */ be_const_int(2147483647), - /* K17 */ be_nested_str_weak(digits_to_style), - /* K18 */ be_nested_str_weak(_attr_ignore), - /* K19 */ be_nested_str_weak(find), - /* K20 */ be_nested_str_weak(get), - /* K21 */ be_nested_str_weak(function), - /* K22 */ be_nested_str_weak(_attr_map), - /* K23 */ be_nested_str_weak(is_color_attribute), - /* K24 */ be_nested_str_weak(parse_color), - /* K25 */ be_nested_str_weak(_lv_obj), - /* K26 */ be_nested_str_weak(set_style_), - /* K27 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), + /* K7 */ be_nested_str_weak(round), + /* K8 */ be_nested_str_weak(endswith), + /* K9 */ be_nested_str_weak(_X25), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(lv), + /* K12 */ be_nested_str_weak(pct), + /* K13 */ be_const_int(3), + /* K14 */ be_nested_str_weak(byte), + /* K15 */ be_const_int(2147483647), + /* K16 */ be_nested_str_weak(digits_to_style), + /* K17 */ be_nested_str_weak(_attr_ignore), + /* K18 */ be_nested_str_weak(find), + /* K19 */ be_nested_str_weak(get), + /* K20 */ be_nested_str_weak(function), + /* K21 */ be_nested_str_weak(_attr_map), + /* K22 */ be_nested_str_weak(is_color_attribute), + /* K23 */ be_nested_str_weak(parse_color), + /* K24 */ be_nested_str_weak(_lv_obj), + /* K25 */ be_nested_str_weak(set_style_), + /* K26 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), }), be_str_weak(setmember), &be_const_str_solidified, - ( &(const binstruction[162]) { /* code */ + ( &(const binstruction[164]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0xA4120200, // 0001 IMPORT R4 K1 0x8C140702, // 0002 GETMET R5 R3 K2 @@ -3422,151 +3421,153 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x5C180400, // 000E MOVE R6 R2 0x7C140200, // 000F CALL R5 1 0x1C140B05, // 0010 EQ R5 R5 K5 - 0x78160004, // 0011 JMPF R5 #0017 + 0x78160006, // 0011 JMPF R5 #0019 0xA4160C00, // 0012 IMPORT R5 K6 - 0x8C180B07, // 0013 GETMET R6 R5 K7 - 0x00200508, // 0014 ADD R8 R2 K8 - 0x7C180400, // 0015 CALL R6 2 - 0x5C080C00, // 0016 MOVE R2 R6 - 0x8C140709, // 0017 GETMET R5 R3 K9 - 0x5C1C0200, // 0018 MOVE R7 R1 - 0x5820000A, // 0019 LDCONST R8 K10 - 0x7C140600, // 001A CALL R5 3 - 0x78160009, // 001B JMPF R5 #0026 - 0x5415FFFD, // 001C LDINT R5 -2 - 0x40161605, // 001D CONNECT R5 K11 R5 - 0x94040205, // 001E GETIDX R1 R1 R5 - 0xB8161800, // 001F GETNGBL R5 K12 - 0x8C140B0D, // 0020 GETMET R5 R5 K13 - 0x601C0009, // 0021 GETGBL R7 G9 - 0x5C200400, // 0022 MOVE R8 R2 - 0x7C1C0200, // 0023 CALL R7 1 - 0x7C140400, // 0024 CALL R5 2 - 0x5C080A00, // 0025 MOVE R2 R5 - 0x4C140000, // 0026 LDNIL R5 - 0x6018000C, // 0027 GETGBL R6 G12 - 0x5C1C0200, // 0028 MOVE R7 R1 - 0x7C180200, // 0029 CALL R6 1 - 0x28180D0E, // 002A GE R6 R6 K14 - 0x781A001F, // 002B JMPF R6 #004C - 0x8C18070F, // 002C GETMET R6 R3 K15 - 0x5421FFFE, // 002D LDINT R8 -1 - 0x94200208, // 002E GETIDX R8 R1 R8 - 0x7C180400, // 002F CALL R6 2 - 0x8C1C070F, // 0030 GETMET R7 R3 K15 - 0x5425FFFD, // 0031 LDINT R9 -2 - 0x94240209, // 0032 GETIDX R9 R1 R9 - 0x7C1C0400, // 0033 CALL R7 2 - 0x5422002F, // 0034 LDINT R8 48 - 0x28200C08, // 0035 GE R8 R6 R8 - 0x78220014, // 0036 JMPF R8 #004C - 0x54220038, // 0037 LDINT R8 57 - 0x18200C08, // 0038 LE R8 R6 R8 - 0x78220011, // 0039 JMPF R8 #004C - 0x5422002F, // 003A LDINT R8 48 - 0x28200E08, // 003B GE R8 R7 R8 - 0x7822000E, // 003C JMPF R8 #004C - 0x54220038, // 003D LDINT R8 57 - 0x18200E08, // 003E LE R8 R7 R8 - 0x7822000B, // 003F JMPF R8 #004C - 0x60200009, // 0040 GETGBL R8 G9 - 0x5425FFFD, // 0041 LDINT R9 -2 - 0x40241310, // 0042 CONNECT R9 R9 K16 - 0x94240209, // 0043 GETIDX R9 R1 R9 - 0x7C200200, // 0044 CALL R8 1 - 0x5425FFFC, // 0045 LDINT R9 -3 - 0x40261609, // 0046 CONNECT R9 K11 R9 - 0x94040209, // 0047 GETIDX R1 R1 R9 - 0x8C240111, // 0048 GETMET R9 R0 K17 - 0x5C2C1000, // 0049 MOVE R11 R8 - 0x7C240400, // 004A CALL R9 2 - 0x5C141200, // 004B MOVE R5 R9 - 0x88180112, // 004C GETMBR R6 R0 K18 - 0x8C180D13, // 004D GETMET R6 R6 K19 - 0x5C200200, // 004E MOVE R8 R1 - 0x7C180400, // 004F CALL R6 2 - 0x4C1C0000, // 0050 LDNIL R7 - 0x20180C07, // 0051 NE R6 R6 R7 - 0x781A0000, // 0052 JMPF R6 #0054 - 0x80000C00, // 0053 RET 0 - 0x8C180914, // 0054 GETMET R6 R4 K20 - 0x5C200000, // 0055 MOVE R8 R0 - 0x00260601, // 0056 ADD R9 K3 R1 - 0x7C180600, // 0057 CALL R6 3 - 0x601C0004, // 0058 GETGBL R7 G4 - 0x5C200C00, // 0059 MOVE R8 R6 - 0x7C1C0200, // 005A CALL R7 1 - 0x1C1C0F15, // 005B EQ R7 R7 K21 - 0x781E000A, // 005C JMPF R7 #0068 - 0x5C1C0C00, // 005D MOVE R7 R6 - 0x5C200000, // 005E MOVE R8 R0 - 0x5C240400, // 005F MOVE R9 R2 - 0x4C280000, // 0060 LDNIL R10 - 0x20280A0A, // 0061 NE R10 R5 R10 - 0x782A0001, // 0062 JMPF R10 #0065 - 0x5C280A00, // 0063 MOVE R10 R5 - 0x70020000, // 0064 JMP #0066 - 0x5828000B, // 0065 LDCONST R10 K11 - 0x7C1C0600, // 0066 CALL R7 3 - 0x80000E00, // 0067 RET 0 - 0x881C0116, // 0068 GETMBR R7 R0 K22 - 0x8C1C0F13, // 0069 GETMET R7 R7 K19 - 0x5C240200, // 006A MOVE R9 R1 - 0x5C280200, // 006B MOVE R10 R1 - 0x7C1C0600, // 006C CALL R7 3 - 0x5C040E00, // 006D MOVE R1 R7 - 0x8C1C0117, // 006E GETMET R7 R0 K23 - 0x5C240200, // 006F MOVE R9 R1 - 0x7C1C0400, // 0070 CALL R7 2 - 0x781E0003, // 0071 JMPF R7 #0076 - 0x8C1C0118, // 0072 GETMET R7 R0 K24 - 0x5C240400, // 0073 MOVE R9 R2 - 0x7C1C0400, // 0074 CALL R7 2 - 0x5C080E00, // 0075 MOVE R2 R7 - 0x4C1C0000, // 0076 LDNIL R7 - 0x1C1C0A07, // 0077 EQ R7 R5 R7 - 0x781E000E, // 0078 JMPF R7 #0088 - 0x8C1C0914, // 0079 GETMET R7 R4 K20 - 0x88240119, // 007A GETMBR R9 R0 K25 - 0x002A0601, // 007B ADD R10 K3 R1 - 0x7C1C0600, // 007C CALL R7 3 - 0x5C180E00, // 007D MOVE R6 R7 - 0x601C0004, // 007E GETGBL R7 G4 - 0x5C200C00, // 007F MOVE R8 R6 - 0x7C1C0200, // 0080 CALL R7 1 - 0x1C1C0F15, // 0081 EQ R7 R7 K21 - 0x781E0004, // 0082 JMPF R7 #0088 - 0x5C1C0C00, // 0083 MOVE R7 R6 - 0x88200119, // 0084 GETMBR R8 R0 K25 - 0x5C240400, // 0085 MOVE R9 R2 - 0x7C1C0400, // 0086 CALL R7 2 - 0x80040E00, // 0087 RET 1 R7 - 0x8C1C0914, // 0088 GETMET R7 R4 K20 - 0x88240119, // 0089 GETMBR R9 R0 K25 - 0x002A3401, // 008A ADD R10 K26 R1 - 0x7C1C0600, // 008B CALL R7 3 - 0x5C180E00, // 008C MOVE R6 R7 - 0x601C0004, // 008D GETGBL R7 G4 - 0x5C200C00, // 008E MOVE R8 R6 - 0x7C1C0200, // 008F CALL R7 1 - 0x1C1C0F15, // 0090 EQ R7 R7 K21 - 0x781E000A, // 0091 JMPF R7 #009D - 0x5C1C0C00, // 0092 MOVE R7 R6 - 0x88200119, // 0093 GETMBR R8 R0 K25 - 0x5C240400, // 0094 MOVE R9 R2 - 0x4C280000, // 0095 LDNIL R10 - 0x20280A0A, // 0096 NE R10 R5 R10 - 0x782A0001, // 0097 JMPF R10 #009A - 0x5C280A00, // 0098 MOVE R10 R5 - 0x70020000, // 0099 JMP #009B - 0x5828000B, // 009A LDCONST R10 K11 - 0x7C1C0600, // 009B CALL R7 3 - 0x80040E00, // 009C RET 1 R7 - 0x601C0001, // 009D GETGBL R7 G1 - 0x5820001B, // 009E LDCONST R8 K27 - 0x5C240200, // 009F MOVE R9 R1 - 0x7C1C0400, // 00A0 CALL R7 2 - 0x80000000, // 00A1 RET 0 + 0x60180009, // 0013 GETGBL R6 G9 + 0x8C1C0B07, // 0014 GETMET R7 R5 K7 + 0x5C240400, // 0015 MOVE R9 R2 + 0x7C1C0400, // 0016 CALL R7 2 + 0x7C180200, // 0017 CALL R6 1 + 0x5C080C00, // 0018 MOVE R2 R6 + 0x8C140708, // 0019 GETMET R5 R3 K8 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x58200009, // 001B LDCONST R8 K9 + 0x7C140600, // 001C CALL R5 3 + 0x78160009, // 001D JMPF R5 #0028 + 0x5415FFFD, // 001E LDINT R5 -2 + 0x40161405, // 001F CONNECT R5 K10 R5 + 0x94040205, // 0020 GETIDX R1 R1 R5 + 0xB8161600, // 0021 GETNGBL R5 K11 + 0x8C140B0C, // 0022 GETMET R5 R5 K12 + 0x601C0009, // 0023 GETGBL R7 G9 + 0x5C200400, // 0024 MOVE R8 R2 + 0x7C1C0200, // 0025 CALL R7 1 + 0x7C140400, // 0026 CALL R5 2 + 0x5C080A00, // 0027 MOVE R2 R5 + 0x4C140000, // 0028 LDNIL R5 + 0x6018000C, // 0029 GETGBL R6 G12 + 0x5C1C0200, // 002A MOVE R7 R1 + 0x7C180200, // 002B CALL R6 1 + 0x28180D0D, // 002C GE R6 R6 K13 + 0x781A001F, // 002D JMPF R6 #004E + 0x8C18070E, // 002E GETMET R6 R3 K14 + 0x5421FFFE, // 002F LDINT R8 -1 + 0x94200208, // 0030 GETIDX R8 R1 R8 + 0x7C180400, // 0031 CALL R6 2 + 0x8C1C070E, // 0032 GETMET R7 R3 K14 + 0x5425FFFD, // 0033 LDINT R9 -2 + 0x94240209, // 0034 GETIDX R9 R1 R9 + 0x7C1C0400, // 0035 CALL R7 2 + 0x5422002F, // 0036 LDINT R8 48 + 0x28200C08, // 0037 GE R8 R6 R8 + 0x78220014, // 0038 JMPF R8 #004E + 0x54220038, // 0039 LDINT R8 57 + 0x18200C08, // 003A LE R8 R6 R8 + 0x78220011, // 003B JMPF R8 #004E + 0x5422002F, // 003C LDINT R8 48 + 0x28200E08, // 003D GE R8 R7 R8 + 0x7822000E, // 003E JMPF R8 #004E + 0x54220038, // 003F LDINT R8 57 + 0x18200E08, // 0040 LE R8 R7 R8 + 0x7822000B, // 0041 JMPF R8 #004E + 0x60200009, // 0042 GETGBL R8 G9 + 0x5425FFFD, // 0043 LDINT R9 -2 + 0x4024130F, // 0044 CONNECT R9 R9 K15 + 0x94240209, // 0045 GETIDX R9 R1 R9 + 0x7C200200, // 0046 CALL R8 1 + 0x5425FFFC, // 0047 LDINT R9 -3 + 0x40261409, // 0048 CONNECT R9 K10 R9 + 0x94040209, // 0049 GETIDX R1 R1 R9 + 0x8C240110, // 004A GETMET R9 R0 K16 + 0x5C2C1000, // 004B MOVE R11 R8 + 0x7C240400, // 004C CALL R9 2 + 0x5C141200, // 004D MOVE R5 R9 + 0x88180111, // 004E GETMBR R6 R0 K17 + 0x8C180D12, // 004F GETMET R6 R6 K18 + 0x5C200200, // 0050 MOVE R8 R1 + 0x7C180400, // 0051 CALL R6 2 + 0x4C1C0000, // 0052 LDNIL R7 + 0x20180C07, // 0053 NE R6 R6 R7 + 0x781A0000, // 0054 JMPF R6 #0056 + 0x80000C00, // 0055 RET 0 + 0x8C180913, // 0056 GETMET R6 R4 K19 + 0x5C200000, // 0057 MOVE R8 R0 + 0x00260601, // 0058 ADD R9 K3 R1 + 0x7C180600, // 0059 CALL R6 3 + 0x601C0004, // 005A GETGBL R7 G4 + 0x5C200C00, // 005B MOVE R8 R6 + 0x7C1C0200, // 005C CALL R7 1 + 0x1C1C0F14, // 005D EQ R7 R7 K20 + 0x781E000A, // 005E JMPF R7 #006A + 0x5C1C0C00, // 005F MOVE R7 R6 + 0x5C200000, // 0060 MOVE R8 R0 + 0x5C240400, // 0061 MOVE R9 R2 + 0x4C280000, // 0062 LDNIL R10 + 0x20280A0A, // 0063 NE R10 R5 R10 + 0x782A0001, // 0064 JMPF R10 #0067 + 0x5C280A00, // 0065 MOVE R10 R5 + 0x70020000, // 0066 JMP #0068 + 0x5828000A, // 0067 LDCONST R10 K10 + 0x7C1C0600, // 0068 CALL R7 3 + 0x80000E00, // 0069 RET 0 + 0x881C0115, // 006A GETMBR R7 R0 K21 + 0x8C1C0F12, // 006B GETMET R7 R7 K18 + 0x5C240200, // 006C MOVE R9 R1 + 0x5C280200, // 006D MOVE R10 R1 + 0x7C1C0600, // 006E CALL R7 3 + 0x5C040E00, // 006F MOVE R1 R7 + 0x8C1C0116, // 0070 GETMET R7 R0 K22 + 0x5C240200, // 0071 MOVE R9 R1 + 0x7C1C0400, // 0072 CALL R7 2 + 0x781E0003, // 0073 JMPF R7 #0078 + 0x8C1C0117, // 0074 GETMET R7 R0 K23 + 0x5C240400, // 0075 MOVE R9 R2 + 0x7C1C0400, // 0076 CALL R7 2 + 0x5C080E00, // 0077 MOVE R2 R7 + 0x4C1C0000, // 0078 LDNIL R7 + 0x1C1C0A07, // 0079 EQ R7 R5 R7 + 0x781E000E, // 007A JMPF R7 #008A + 0x8C1C0913, // 007B GETMET R7 R4 K19 + 0x88240118, // 007C GETMBR R9 R0 K24 + 0x002A0601, // 007D ADD R10 K3 R1 + 0x7C1C0600, // 007E CALL R7 3 + 0x5C180E00, // 007F MOVE R6 R7 + 0x601C0004, // 0080 GETGBL R7 G4 + 0x5C200C00, // 0081 MOVE R8 R6 + 0x7C1C0200, // 0082 CALL R7 1 + 0x1C1C0F14, // 0083 EQ R7 R7 K20 + 0x781E0004, // 0084 JMPF R7 #008A + 0x5C1C0C00, // 0085 MOVE R7 R6 + 0x88200118, // 0086 GETMBR R8 R0 K24 + 0x5C240400, // 0087 MOVE R9 R2 + 0x7C1C0400, // 0088 CALL R7 2 + 0x80040E00, // 0089 RET 1 R7 + 0x8C1C0913, // 008A GETMET R7 R4 K19 + 0x88240118, // 008B GETMBR R9 R0 K24 + 0x002A3201, // 008C ADD R10 K25 R1 + 0x7C1C0600, // 008D CALL R7 3 + 0x5C180E00, // 008E MOVE R6 R7 + 0x601C0004, // 008F GETGBL R7 G4 + 0x5C200C00, // 0090 MOVE R8 R6 + 0x7C1C0200, // 0091 CALL R7 1 + 0x1C1C0F14, // 0092 EQ R7 R7 K20 + 0x781E000A, // 0093 JMPF R7 #009F + 0x5C1C0C00, // 0094 MOVE R7 R6 + 0x88200118, // 0095 GETMBR R8 R0 K24 + 0x5C240400, // 0096 MOVE R9 R2 + 0x4C280000, // 0097 LDNIL R10 + 0x20280A0A, // 0098 NE R10 R5 R10 + 0x782A0001, // 0099 JMPF R10 #009C + 0x5C280A00, // 009A MOVE R10 R5 + 0x70020000, // 009B JMP #009D + 0x5828000A, // 009C LDCONST R10 K10 + 0x7C1C0600, // 009D CALL R7 3 + 0x80040E00, // 009E RET 1 R7 + 0x601C0001, // 009F GETGBL R7 G1 + 0x5820001A, // 00A0 LDCONST R8 K26 + 0x5C240200, // 00A1 MOVE R9 R1 + 0x7C1C0400, // 00A2 CALL R7 2 + 0x80000000, // 00A3 RET 0 }) ) ); From ae499eb73a5685a17eafec359309ae4abb28eb54 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Mon, 10 Jun 2024 10:42:02 +0200 Subject: [PATCH 036/252] MQTT is not reporting the correct LastChange (#21605) I assume this is just missing. I got some side effects on shutters where on MQTT commands the source is still the LAST one before the MQTT --- tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino index 6cde49eb3..298c0719c 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino @@ -639,7 +639,8 @@ void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len if (XdrvCall(FUNC_MQTT_DATA)) { return; } ShowSource(SRC_MQTT); - + TasmotaGlobal.last_source = SRC_MQTT; + CommandHandler(topic, (char*)mqtt_data, data_len); if (Mqtt.disable_logging) { From d046f9c25fd43dd1c9a031b4603b3db4841fdc35 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:50:19 +0200 Subject: [PATCH 037/252] Update changelogs --- CHANGELOG.md | 4 ++-- RELEASENOTES.md | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7c3baa91..01e227e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,8 @@ All notable changes to this project will be documented in this file. - Matter support for Air Quality sensors (#21559) - Matter support for bridged Air Quality (#21597) - HASPmota rounds to nearest int values passed as 'real' (#21599) -- Berry automatic rounding of float to int when calling C mapped functions -- Berry add `math.round` +- Berry automatic rounding of float to int when calling C mapped functions (#21601) +- Berry add `math.round` (#21602) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 304f01bcc..2c8f856c9 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -123,6 +123,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Added - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) +- Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality (#21597)[#21597](https://github.com/arendst/Tasmota/issues/21597) From aa217e13b9f8616cd806d8c200f6d511378be9e7 Mon Sep 17 00:00:00 2001 From: Christian Baars Date: Mon, 10 Jun 2024 10:50:50 +0200 Subject: [PATCH 038/252] refactoring, bugfixes, generic device scanning (#21603) --- tasmota/include/xsns_62_esp32_mi.h | 18 ++- .../tasmota_xsns_sensor/xsns_62_esp32_mi.ino | 143 ++++++++++++++---- 2 files changed, 125 insertions(+), 36 deletions(-) diff --git a/tasmota/include/xsns_62_esp32_mi.h b/tasmota/include/xsns_62_esp32_mi.h index 004d9413a..787c32fc2 100644 --- a/tasmota/include/xsns_62_esp32_mi.h +++ b/tasmota/include/xsns_62_esp32_mi.h @@ -199,6 +199,7 @@ struct { uint32_t updateScan:1; uint32_t deleteScanTask:1; + uint32_t canConnect:1; uint32_t willConnect:1; uint32_t readingDone:1; @@ -230,7 +231,7 @@ struct { uint32_t directBridgeMode:1; // send every received BLE-packet as a MQTT-message in real-time uint32_t activeScan:1; uint32_t ignoreBogusBattery:1; - uint32_t minimalSummary:1; // DEPRECATED!! + uint32_t handleEveryDevice:1; } option; #ifdef USE_MI_EXT_GUI uint32_t widgetSlot; @@ -271,6 +272,7 @@ struct mi_sensor_t{ uint32_t knob:1; uint32_t door:1; uint32_t leak:1; + uint32_t payload:1; }; uint32_t raw; } feature; @@ -291,6 +293,7 @@ struct mi_sensor_t{ uint32_t longpress:1; //needs no extra feature bit, because knob is sufficient uint32_t door:1; uint32_t leak:1; + uint32_t payload:1; }; uint32_t raw; } eventType; @@ -331,10 +334,15 @@ struct mi_sensor_t{ uint8_t longpress; // dimmer knob pressed without rotating }; uint8_t door; + }; union { uint8_t bat; // many values seem to be hard-coded garbage (LYWSD0x, GCD1) }; + struct { + uint8_t * payload = nullptr; + uint8_t payload_len; + }; }; /*********************************************************************************************\ @@ -475,8 +483,9 @@ enum MI32_BLEInfoMsg { const char HTTP_BTN_MENU_MI32[] PROGMEM = "

"; const char HTTP_MI32_SCRIPT_1[] PROGMEM = - "function setUp(){setInterval(countUp,1000); setInterval(update,1000);}" - "function countUp(){let ti=document.querySelectorAll('.Ti');" + "function setUp(){setInterval(countUp,1000); setInterval(update,200);}" + "function countUp(){let ti=document.querySelectorAll('.Ti');eb('clock').innerText=Date().slice(4,24);" + "eb('numDev').innerText=eb('pr').childElementCount-1;" "for(const el of ti){var t=parseInt(el.innerText);el.innerText=t+1;}}" "function update(){" "fetch('/m32?wi=1').then(r=>r.text())" @@ -499,7 +508,7 @@ const char HTTP_MI32_STYLE[] PROGMEM = ".parent{display:grid;grid-template-columns:repeat(auto-fill,350px);grid-template-rows:repeat(auto-fill,220px);" "grid-auto-rows:220px;grid-auto-columns:350px;gap:1rem;justify-content:center;}" "svg{float:inline-end;}" - ".box{padding:10px;border-radius:0.8rem;background-color:rgba(221, 221, 221, 0.2);}" + ".box{padding:10px;border-radius:0.8rem;background-color:rgba(221, 221, 221, 0.2);overflow-y:auto;}" "@media screen and (min-width: 720px){.wide{grid-column:span 2;grid-row:span 1;}.big {grid-column:span 2;grid-row:span 2;}}" ".tall {grid-column:span 1;grid-row:span 2;}" ""; @@ -515,6 +524,7 @@ const char HTTP_MI32_PARENT_BLE_ROLE[] PROGMEM = "None|Observer|Peripheral|Centr const char HTTP_MI32_PARENT_START[] PROGMEM = "
" "

MI32 Bridge

" + "

" "Observing %u devices

" "Uptime: %u seconds

" "Free Heap: %u kB

" diff --git a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino index 924267e55..e4249095e 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino @@ -69,6 +69,7 @@ void MI32notifyCB(NimBLERemoteCharacteristic* pRemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify); void MI32AddKey(mi_bindKey_t keyMAC); +void MI32HandleEveryDevice(NimBLEAdvertisedDevice* advertisedDevice, uint8_t addr[6], int RSSI); std::vector MIBLEsensors; RingbufHandle_t BLERingBufferQueue = nullptr; @@ -128,6 +129,9 @@ class MI32AdvCallbacks: public NimBLEScanCallbacks { } if (advertisedDevice->getServiceDataCount() == 0) { + if(MI32.option.handleEveryDevice == 1) { + MI32HandleEveryDevice(advertisedDevice, addr, RSSI); + } _mutex = false; return; } @@ -148,6 +152,9 @@ class MI32AdvCallbacks: public NimBLEScanCallbacks { else if(UUID==0x181a) { //ATC and PVVX - deprecated, change FW setting of these devices to BTHome V2 MI32ParseATCPacket((char*)advertisedDevice->getServiceData(0).data(),ServiceDataLength, addr, RSSI); } + else if(MI32.option.handleEveryDevice == 1) { + MI32HandleEveryDevice(advertisedDevice, addr, RSSI); + } _mutex = false; }; }; @@ -451,6 +458,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t * _MAC, uint16_t _type, uint8_t counter){ for(uint32_t i=0; i 31){ // web UI is currently limited to 32 DEBUG_SENSOR_LOG(PSTR("M32: ignore new sensor, because of loaded config")); return 0xff; //discard the data } DEBUG_SENSOR_LOG(PSTR("%s: found new sensor"),D_CMND_MI32); - mi_sensor_t _newSensor; + mi_sensor_t _newSensor{}; memcpy(_newSensor.MAC,_MAC, 6); _newSensor.PID = _pid; _newSensor.type = _type; @@ -478,6 +486,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t * _MAC, uint16_t _type, uint8_t counter){ _newSensor.RSSI=0; _newSensor.lux = 0x00ffffff; _newSensor.key = nullptr; + _newSensor.lastTime = Rtc.local_time; switch (_type) { case UNKNOWN_MI: case BTHOME: @@ -548,16 +557,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t * _MAC, uint16_t _type, uint8_t counter){ */ void MI32triggerTele(void){ MI32.mode.triggeredTele = 1; - MqttPublishTeleperiodSensor(); -} - -/** - * @brief Is called after every finding of new BLE sensor - * - */ -void MI32StatusInfo() { - MI32.mode.shallShowStatusInfo = 0; - Response_P(PSTR("{\"M32\":{\"found\":%u}}"), MIBLEsensors.size()); + MqttPublishSensor(); XdrvRulesProcess(0); } @@ -584,6 +584,13 @@ void MI32addHistory(uint8_t history[24], float value, const uint32_t type){ history[_hour] = (((value/5.0f) + 1) + 0b10000000); //lux // AddLog(LOG_LEVEL_DEBUG,PSTR("M32: history lux: %u in hour:%u"),history[_hour], _hour); break; + case 3: //BLE device sighting + uint16_t sightings = history[_hour] & 0b01111111; + if(sightings<20){ + history[_hour] = (sightings | 0b10000000) + 1; + // AddLog(LOG_LEVEL_DEBUG,PSTR("M32: history sighting: %u in hour:%u"),history[_hour], _hour); + } + break; #ifdef USE_MI_ESP32_ENERGY case 100: // energy if(value == 0.0f) value = 1.0f; @@ -620,7 +627,7 @@ void Mi32invalidateOldHistory(){ return; } uint32_t _nextHour = (_hour>22)?0:_hour+1; - for(auto _sensor:MIBLEsensors){ + for(auto &_sensor:MIBLEsensors){ if(_sensor.feature.temp == 1){ bitClear(_sensor.temp_history[_nextHour],7); } @@ -630,6 +637,9 @@ void Mi32invalidateOldHistory(){ if(_sensor.feature.lux == 1){ bitClear(_sensor.lux_history[_nextHour],7); } + if(_sensor.feature.payload == 1){ + bitClear(_sensor.temp_history[_nextHour],7); + } } _lastInvalidatedHour = _hour; } @@ -646,9 +656,9 @@ void MI32PreInit(void) { //test section for options MI32.option.allwaysAggregate = 1; MI32.option.noSummary = 0; - MI32.option.minimalSummary = 0; MI32.option.directBridgeMode = 0; MI32.option.ignoreBogusBattery = 1; // from advertisements + MI32.option.handleEveryDevice = 0; // scan for every BLE device with a public address MI32loadCfg(); if(MIBLEsensors.size()>0){ @@ -878,7 +888,11 @@ extern "C" { } static char _name[12]; if( MIBLEsensors[slot].type == UNKNOWN_MI){ - snprintf_P(_name,8,PSTR("MI_%04X"),MIBLEsensors[slot].PID); + if(MIBLEsensors[slot].PID == 0){ + snprintf_P(_name,8,PSTR("BLE_%02u"),slot); + } else { + snprintf_P(_name,8,PSTR("MI_%04X"),MIBLEsensors[slot].PID); + } } else{ GetTextIndexed(_name, sizeof(_name), MIBLEsensors[slot].type-1, kMI32DeviceType); @@ -994,7 +1008,7 @@ void MI32saveConfig(){ else{ _name_feat[0] = 0; } - uint32_t _inc = snprintf_P(_filebuf+_pos,200,PSTR("{\"MAC\":\"%s\",\"PID\":\"%04x\",\"key\":\"%s\"%s},"),_MAC,kMI32DeviceID[_sensor.type - 1],_key,_name_feat); + uint32_t _inc = snprintf_P(_filebuf+_pos,200,PSTR("{\"MAC\":\"%s\",\"PID\":\"%04x\",\"key\":\"%s\"%s},"),_MAC,_sensor.PID,_key,_name_feat); _pos += _inc; } _filebuf[_pos-1] = ']'; @@ -1668,7 +1682,6 @@ if(decryptRet!=0){ } // AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u with payload type: %02x"), MI32getDeviceName(_slot),_slot,_payload.type); - MIBLEsensors[_slot].lastTime = millis(); switch(_payload.type){ case 0x01: MIBLEsensors[_slot].feature.Btn = 1; @@ -1836,7 +1849,7 @@ if(decryptRet!=0){ } if(MIBLEsensors[_slot].eventType.raw == 0) return; MIBLEsensors[_slot].shallSendMQTT = 1; - if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1; + if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1; } void MI32parseBTHomePacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI, const char* optionalName){ @@ -1848,7 +1861,7 @@ void MI32parseBTHomePacket(char * _buf, uint32_t length, uint8_t addr[6], int RS } const auto _sensor = &MIBLEsensors[_slot]; _sensor->RSSI = RSSI; - _sensor->lastTime = millis(); + // _sensor->lastTime = Rtc.local_time; BTHome_info_t info; info.byte_value = _buf[0]; @@ -1907,7 +1920,7 @@ void MI32parseBTHomePacket(char * _buf, uint32_t length, uint8_t addr[6], int RS bitSet(MI32.widgetSlot,_slot); #endif //USE_MI_EXT_GUI _sensor->shallSendMQTT = 1; - if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1; + if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1; } void MI32ParseATCPacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI){ @@ -1923,7 +1936,7 @@ void MI32ParseATCPacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI) // AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), MI32getDeviceName(_slot),_slot); MIBLEsensors[_slot].RSSI=RSSI; - MIBLEsensors[_slot].lastTime = millis(); + // MIBLEsensors[_slot].lastTime = Rtc.local_time; if(isATC){ MIBLEsensors[_slot].temp = (float)(int16_t(__builtin_bswap16(_packet->A.temp)))/10.0f; MIBLEsensors[_slot].hum = (float)_packet->A.hum; @@ -1943,7 +1956,7 @@ void MI32ParseATCPacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI) MI32addHistory(MIBLEsensors[_slot].hum_history, (float)MIBLEsensors[_slot].hum, 1); #endif //USE_MI_EXT_GUI MIBLEsensors[_slot].shallSendMQTT = 1; - if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1; + if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1; } void MI32parseCGD1Packet(char * _buf, uint32_t length, uint8_t addr[6], int RSSI){ // no MiBeacon @@ -1953,7 +1966,7 @@ void MI32parseCGD1Packet(char * _buf, uint32_t length, uint8_t addr[6], int RSSI if(_slot==0xff) return; // AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), MI32getDeviceName(_slot),_slot); MIBLEsensors[_slot].RSSI=RSSI; - MIBLEsensors[_slot].lastTime = millis(); + // MIBLEsensors[_slot].lastTime = Rtc.local_time; cg_packet_t _packet; memcpy((char*)&_packet,_buf,sizeof(_packet)); switch (_packet.mode){ @@ -1991,7 +2004,7 @@ void MI32parseCGD1Packet(char * _buf, uint32_t length, uint8_t addr[6], int RSSI } if(MIBLEsensors[_slot].eventType.raw == 0) return; MIBLEsensors[_slot].shallSendMQTT = 1; - if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1; + if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1; #ifdef USE_MI_EXT_GUI bitSet(MI32.widgetSlot,_slot); #endif //USE_MI_EXT_GUI @@ -2003,15 +2016,47 @@ void MI32ParseResponse(char *buf, uint16_t bufsize, uint8_t addr[6], int RSSI) { } uint16_t _type= buf[3]*256 + buf[2]; // AddLog(LOG_LEVEL_INFO, PSTR("%02x %02x %02x %02x"),(uint8_t)buf[0], (uint8_t)buf[1],(uint8_t)buf[2],(uint8_t)buf[3]); - uint8_t _addr[6]; - memcpy(_addr,addr,6); - uint16_t _slot = MIBLEgetSensorSlot(_addr, _type, buf[4]); + uint16_t _slot = MIBLEgetSensorSlot(addr, _type, buf[4]); if(_slot!=0xff) { MIBLEsensors[_slot].RSSI=RSSI; MI32parseMiBeacon(buf,_slot,bufsize); } } +void MI32HandleEveryDevice(NimBLEAdvertisedDevice* advertisedDevice, uint8_t addr[6], int RSSI) { + if(advertisedDevice->getAddressType() != BLE_ADDR_PUBLIC) { + return; + } + uint16_t _slot = MIBLEgetSensorSlot(addr, 0, 0); + if(_slot==0xff) { + return; + } + auto &_sensor = MIBLEsensors[_slot]; + if (advertisedDevice->haveName()){ + if(_sensor.name == nullptr){ + std::string name = advertisedDevice->getName(); + _sensor.name = new char[name.length() + 1]; + strcpy(_sensor.name, name.c_str()); + } + } + if(_sensor.payload == nullptr) { + _sensor.payload = new uint8_t[64](); + } + if(_sensor.payload != nullptr) { + memcpy(_sensor.payload, advertisedDevice->getPayload(), advertisedDevice->getPayloadLength()); + _sensor.payload_len = advertisedDevice->getPayloadLength(); + bitSet(MI32.widgetSlot,_slot); + MI32addHistory(_sensor.temp_history, 0.0f, 3); // reuse temp_history as sighting history + _sensor.RSSI=RSSI; + _sensor.feature.payload = 1; + _sensor.eventType.payload = 1; + if(MI32.option.directBridgeMode == 1){ + MI32.mode.shallTriggerTele = 1; + _sensor.shallSendMQTT = 1; + } + } +} + /** * Called automatically every 50 milliseconds or can be triggered from Berry with BLE.loop() - useful from fast_loop */ @@ -2106,7 +2151,7 @@ void MI32BLELoop() */ void MI32Every50mSecond(){ - if(MI32.mode.shallTriggerTele){ + if(MI32.mode.shallTriggerTele == 1){ MI32.mode.shallTriggerTele = 0; MI32triggerTele(); } @@ -2128,7 +2173,7 @@ void MI32EverySecond(bool restart){ // should not be needed with a stable BLE stack if(MI32.role == 1 && MI32.mode.runningScan == 0){ - AddLog(LOG_LEVEL_INFO,PSTR("BLE: probably controller error ... restart scan")); + AddLog(LOG_LEVEL_INFO,PSTR("BLE: restart scan")); MI32StartTask(MI32_TASK_SCAN); } } @@ -2226,6 +2271,14 @@ void CmndMi32Option(void){ onOff = MI32.option.activeScan; } break; + case 5: + if(XdrvMailbox.data_len>0){ + MI32.option.handleEveryDevice = onOff; + } + else{ + onOff = MI32.option.handleEveryDevice; + } + break; #ifdef CONFIG_BT_NIMBLE_NVS_PERSIST case 99: // TODO: should be moved to some reset command, i.e. "reset 6" NimBLEDevice::deleteAllBonds(); @@ -2423,6 +2476,18 @@ void MI32sendWidget(uint32_t slot){ WSContentSend_P(PSTR("

No leak

")); } } + if(_sensor.feature.payload == 1){ + if(_sensor.payload != nullptr){ + char _payload[128]; + char _polyline[176]; + ToHex_P((const unsigned char*)_sensor.payload,_sensor.payload_len,_payload, (_sensor.payload_len * 2) + 1); + MI32createPolyline(_polyline,_sensor.temp_history); + WSContentSend_P(PSTR("

Payload:")); + WSContentSend_P(HTTP_MI32_GRAPH,_polyline,60,240,176,_polyline,4); + WSContentSend_P(PSTR("

%s"),_payload); + } + } + WSContentSend_P(PSTR("

Timestamp: %s

"),GetDT(_sensor.lastTime).c_str()); WSContentSend_P(PSTR("
")); } @@ -2435,6 +2500,7 @@ void MI32InitGUI(void){ WSContentSend_P(HTTP_MI32_STYLE_SVG,1,185,124,124,185,124,124); WSContentSend_P(HTTP_MI32_STYLE_SVG,2,151,190,216,151,190,216); WSContentSend_P(HTTP_MI32_STYLE_SVG,3,242,240,176,242,240,176); + WSContentSend_P(HTTP_MI32_STYLE_SVG,4,60,240,176,60,240,176); char _role[16]; GetTextIndexed(_role, sizeof(_role), MI32.role, HTTP_MI32_PARENT_BLE_ROLE); @@ -2508,7 +2574,7 @@ void MI32Show(bool json) MI32getDeviceName(i)); } - if((MI32.mode.triggeredTele == 1 && MI32.option.minimalSummary == 0)||MI32.mode.triggeredTele == 1){ + if(MI32.mode.triggeredTele == 1){ bool tempHumSended = false; if(MIBLEsensors[i].feature.tempHum){ if(MIBLEsensors[i].eventType.tempHum || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ @@ -2622,16 +2688,29 @@ void MI32Show(bool json) ResponseAppend_P(PSTR("\"NMT\":%u"), MIBLEsensors[i].NMT); } } - if (MIBLEsensors[i].feature.bat){ - if(MIBLEsensors[i].eventType.bat || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ + if (MIBLEsensors[i].feature.bat == 1){ + if(MIBLEsensors[i].eventType.bat == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ if ((MIBLEsensors[i].bat != 0x00)) { MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"Battery\":%u"), MIBLEsensors[i].bat); } } } + if (MIBLEsensors[i].feature.payload == 1){ + if(MIBLEsensors[i].eventType.payload == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ + if ((MIBLEsensors[i].payload != nullptr)) { + MI32ShowContinuation(&commaflg); + char _payload[128]; + ToHex_P((const unsigned char*)MIBLEsensors[i].payload,MIBLEsensors[i].payload_len,_payload, (MIBLEsensors[i].payload_len * 2) + 1); + ResponseAppend_P(PSTR("\"Payload\":\"%s\""),_payload); + } + } + } MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"RSSI\":%d,"), MIBLEsensors[i].RSSI); + if(MI32.mode.triggeredTele == 0){ + ResponseAppend_P(PSTR("\"Time\":%d,"), MIBLEsensors[i].lastTime); + } ResponseAppend_P(PSTR("\"MAC\":\"%02X%02X%02X%02X%02X%02X\""),MIBLEsensors[i].MAC[0],MIBLEsensors[i].MAC[1],MIBLEsensors[i].MAC[2],MIBLEsensors[i].MAC[3],MIBLEsensors[i].MAC[4],MIBLEsensors[i].MAC[5]); ResponseJsonEnd(); From 7471d754f79413b32726b0ae5aa5bfefe04e4168 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 10 Jun 2024 11:54:22 +0200 Subject: [PATCH 039/252] Update changelogs --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01e227e11..8a2485667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file. - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Matter filter suffix automatically added for sensors (#21589) - Display timing splash screen with display modes 1 to 5 +- ESP32 MI32 refactoring, bugfixes, generic device scanning (#21603) ### Fixed - Berry `input()` returns empty string and does not crash (#21565) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 2c8f856c9..cfbac49f3 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -132,6 +132,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) +- ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) From 0471ba24c1f4687205daed9cfd3d4695c5be3003 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:05:25 +0200 Subject: [PATCH 040/252] Add support for QMP6988 temperature and pressure sensor --- BUILDS.md | 18 +- CHANGELOG.md | 1 + CODE_OWNERS.md | 2 +- I2CDEVICES.md | 4 +- RELEASENOTES.md | 1 + tasmota/my_user_config.h | 5 +- tasmota/tasmota_support/support_features.ino | 4 +- .../tasmota_xsns_sensor/xsns_28_qmp6988.ino | 443 ++++++++++++++++++ tools/decode-status.py | 4 +- 9 files changed, 470 insertions(+), 12 deletions(-) create mode 100644 tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino diff --git a/BUILDS.md b/BUILDS.md index 4ba198ea5..bd2b96049 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -8,7 +8,7 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the | ------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | --------------------------- | | MY_LANGUAGE en_GB | x | x / x | x | x | x | x | | USE_IMPROV | x | x / x | x | x | x | x | -| USE_UFILESYS | - | - / x | - | - | - | - | +| USE_UFILESYS | - | - / x | - | - | - | - | Every ESP8266 > 1MB | | USE_ARDUINO_OTA | - | - / - | - | - | - | - | | USE_DOMOTICZ | - | x / x | x | x | x | - | | USE_HOME_ASSISTANT | - | - / - | - | - | - | - | @@ -30,11 +30,14 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the | USE_SUNRISE | x | x / x | x | x | x | x | | USE_RULES | x | x / x | x | x | x | x | | USE_SCRIPT | - | - / - | - | - | - | - | -| USE_EXPRESSION | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB | -| SUPPORT_IF_STATEMENT | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB | +| USE_EXPRESSION | - | x / x | - | - | - | - | +| SUPPORT_IF_STATEMENT | - | x / x | - | - | - | - | | USE_HOTPLUG | - | - / - | - | - | - | - | | USE_PROMETHEUS | - | - / - | - | - | - | - | | USE_PING | - | - / - | - | - | - | - | +| USE_HDMI_CEC | - | - / - | - | - | - | - | +| USE_MAGIC_SWITCH | - | - / x | - | - | - | - | +| USE_GPIO_VIEWER | - | - / x | - | - | - | - | | | | | | | | | | **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** | | ROTARY_V1 | - | x / x | - | x | - | - | @@ -105,6 +108,9 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the | USE_HTU | - | - / x | - | x | - | - | | USE_BMP | - | - / x | - | x | - | - | | USE_BME68X | - | - / x | - | x | - | - | +| USE_AMSX915 | - | - / - | - | - | - | - | +| USE_SPL06_007 | - | - / - | - | - | - | - | +| USE_QMP6988 | - | - / - | - | - | - | - | | USE_BH1750 | - | - / x | - | x | - | - | | USE_VEML6070 | - | - / x | - | x | - | - | | USE_ADS1115 | - | - / x | - | x | - | - | @@ -192,11 +198,13 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the | USE_LUXV30B | - | - / - | - | - | - | - | | USE_HMC5883L | - | - / - | - | - | - | - | | USE_QMC5883L | - | - / - | - | - | - | - | +| USE_MAX17043 | - | - / - | - | - | - | - | | | | | | | | | | **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** | -| USE_SPI | - | - / - | - | - | - | x | +| USE_SPI | - | - / x | - | - | - | x | | USE_RC522 | - | - / - | - | - | - | - | | USE_CANSNIFFER | - | - / - | - | - | - | - | +| USE_SPI_LORA | - | - / x | - | - | - | - | | USE_MHZ19 | - | - / x | - | x | - | - | | USE_SENSEAIR | - | - / x | - | x | - | - | | USE_PMS5003 | - | - / x | - | x | - | - | @@ -220,6 +228,8 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the | USE_LD2410 | - | - / - | - | - | - | - | | USE_GM861 | - | - / - | - | - | - | - | | USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro | +| USE_HC8 | - | - / - | - | - | - | - | +| USE_PIPSOLAR | - | - / - | - | - | - | - | | | | | | | | | | USE_NRF24 | - | - / - | - | - | - | - | | USE_MIBLE | - | - / - | - | - | - | - | diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a2485667..524bb3a34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - HASPmota rounds to nearest int values passed as 'real' (#21599) - Berry automatic rounding of float to int when calling C mapped functions (#21601) - Berry add `math.round` (#21602) +- Support for QMP6988 temperature and pressure sensor ### Breaking Changed diff --git a/CODE_OWNERS.md b/CODE_OWNERS.md index 98bb523aa..49fa17a4b 100644 --- a/CODE_OWNERS.md +++ b/CODE_OWNERS.md @@ -139,7 +139,7 @@ In addition to @arendst the following code is mainly owned by: | xsns_25_spl06-007_sensor | @rai68 | xsns_26_lm75ad | Andre Thomas | xsns_27_apds9960 | Shawn Hymel -| xsns_28 | +| xsns_28_qmp6988 | @arendst | xsns_29_mcp230xx | Andre Thomas | xsns_30_mpr121 | Rene 'Renne' Bartsch | xsns_31_ccs811 | Gerhard Mutz diff --git a/I2CDEVICES.md b/I2CDEVICES.md index afd853929..8e7ffea64 100644 --- a/I2CDEVICES.md +++ b/I2CDEVICES.md @@ -123,7 +123,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip 83 | USE_MAX17043 | xsns_110 | MAX17043 | 0x36 | | Fuel-gauge for 3.7 Volt Lipo battery 84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | | Gas (TVOC, eCO2) and air quality sensor 85 | USE_ENS210 | xsns_112 | ENS210 | 0x43 - 0x44 | | Temperature and humidity sensor - 86 | USE_AMSX915 | xsns_114 | AMS5915 | 0x28 | | Pressure (absolute/differential) and temperature sensor 86 | USE_AMSX915 | xsns_114 | AMS6915 | 0x28 | | Pressure (absolute/differential) and temperature sensor - 87 | USE_SPL06_007 | xsns_25 | SPL06-007 | 0x76 | | Pressure and temperature sensor + 87 | USE_SPL06_007 | xsns_25 | SPL06-007 | 0x76 | | Pressure and temperature sensor + 88 | USE_QMP6988 | xsns_28 | QMP6988 | 0x56, 0x70 | Yes | Pressure and temperature sensor NOTE: Bus2 supported on ESP32 only. diff --git a/RELEASENOTES.md b/RELEASENOTES.md index cfbac49f3..2d8d2e622 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -121,6 +121,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ## Changelog v14.1.0.1 ### Added +- Support for QMP6988 temperature and pressure sensor - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) - Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 3b5e334a8..d2a13c280 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -421,7 +421,6 @@ #define MQTT_LWT_OFFLINE "Offline" // MQTT LWT offline topic message #define MQTT_LWT_ONLINE "Online" // MQTT LWT online topic message -#define MQTT_TELE_RETAIN 0 // Tele messages may send retain flag (0 = off, 1 = on) #define MQTT_CLEAN_SESSION 1 // Mqtt clean session connection (0 = No clean session, 1 = Clean session (default)) #define MQTT_DISABLE_SSERIALRECEIVED 0 // 1 = Disable sserialreceived mqtt messages, 0 = Enable sserialreceived mqtt messages (default) #define MQTT_DISABLE_MODBUSRECEIVED 0 // 1 = Disable ModbusReceived mqtt messages, 0 = Enable ModbusReceived mqtt messages (default) @@ -446,7 +445,8 @@ // #define USE_MQTT_TLS_CA_CERT // [DEPRECATED] Now TLS supports dual mode using SetOption132 - this flag is now ignored // #define USE_MQTT_AWS_IOT_LIGHT // Enable MQTT for AWS IoT in light mode, with user/password instead of private certificate // #define USE_MQTT_AWS_IOT // [Deprecated] Enable MQTT for AWS IoT - requires a private key (+11.9k code, +0.4k mem) - // Full documentation here: https://github.com/arendst/Tasmota/wiki/AWS-IoT + // Note: you need to generate a private key + certificate per device and update 'tasmota/tasmota_aws_iot.cpp' + // Full documentation here: https://github.com/arendst/Tasmota/wiki/AWS-IoT // for USE_4K_RSA (support for 4096 bits certificates, instead of 2048), you need to uncommend `-DUSE_4K_RSA` in `build_flags` from `platform.ini` or `platform_override.ini` // -- MQTT - TLS - Azure IoT & IoT Central --------- @@ -738,6 +738,7 @@ // #define MAX17043_ALERT_THRESHOLD 32 // [I2cDriver83] Define the alert threshold for low battery level percentage 1-32 // #define USE_AMSX915 // [I2CDriver86] Enable AMS5915/AMS6915 pressure/temperature sensor (+1k2 code) // #define USE_SPL06_007 // [I2cDriver87] Enable SPL06_007 pressure and temperature sensor (I2C addresses 0x76) (+2k5 code) +// #define USE_QMP6988 // [I2cDriver88] Enable QMP6988 pressure and temperature sensor (I2C address 0x56 or 0x70) (+2k9 code) // #define USE_RTC_CHIPS // Enable RTC chip support and NTP server - Select only one // #define USE_DS3231 // [I2cDriver26] Enable DS3231 RTC (I2C address 0x68) (+1k2 code) diff --git a/tasmota/tasmota_support/support_features.ino b/tasmota/tasmota_support/support_features.ino index 457150896..fd5e2c5a8 100644 --- a/tasmota/tasmota_support/support_features.ino +++ b/tasmota/tasmota_support/support_features.ino @@ -919,7 +919,9 @@ constexpr uint32_t feature[] = { #if defined(USE_I2C) && defined(USE_SPL06_007) 0x00000020 | // xsns_25_spl006-7_sensor.ino #endif -// 0x00000040 | // +#if defined(USE_I2C) && defined(USE_QMP6988) + 0x00000040 | // xsns_28_qmp6988.ino +#endif // 0x00000080 | // // 0x00000100 | // // 0x00000200 | // diff --git a/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino b/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino new file mode 100644 index 000000000..ff39f5964 --- /dev/null +++ b/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino @@ -0,0 +1,443 @@ +/* + xsns_28_qmp6988->ino - QMP6988 temperature and pressure sensor support for Tasmota + + SPDX-FileCopyrightText: 2024 Theo Arends + + SPDX-License-Identifier: GPL-3.0-only +*/ + +#ifdef USE_I2C +#ifdef USE_QMP6988 +/*********************************************************************************************\ + * QMP6988 Temperature and Pressure sensor + * + * Source: M5Stack lib M5Unit-ENV, file QMP6988.cpp + * + * I2C Address: 0x56 or 0x70 +\*********************************************************************************************/ + +#define XSNS_28 28 +#define XI2C_88 88 // See I2CDEVICES.md + +#define QMP6988_ADDRESS_L 0x70 +#define QMP6988_ADDRESS_H 0x56 + +#define QMP6988_CHIP_ID 0x5C + +#define QMP6988_CHIP_ID_REG 0xD1 +#define QMP6988_RESET_REG 0xE0 // Device reset register +#define QMP6988_DEVICE_STAT_REG 0xF3 // Device state register +#define QMP6988_CTRLMEAS_REG 0xF4 // Measurement Condition Control Register +// Data +#define QMP6988_PRESSURE_MSB_REG 0xF7 // Pressure MSB Register + +// Compensation calculation +#define QMP6988_CALIBRATION_DATA_START 0xA0 // QMP6988 compensation coefficients +#define QMP6988_CALIBRATION_DATA_LENGTH 25 + +// Power mode +#define QMP6988_SLEEP_MODE 0x00 +#define QMP6988_FORCED_MODE 0x01 +#define QMP6988_NORMAL_MODE 0x03 + +#define QMP6988_CTRLMEAS_REG_MODE__POS 0 +#define QMP6988_CTRLMEAS_REG_MODE__MSK 0x03 +#define QMP6988_CTRLMEAS_REG_MODE__LEN 2 + +// Oversampling +#define QMP6988_OVERSAMPLING_SKIPPED 0x00 +#define QMP6988_OVERSAMPLING_1X 0x01 +#define QMP6988_OVERSAMPLING_2X 0x02 +#define QMP6988_OVERSAMPLING_4X 0x03 +#define QMP6988_OVERSAMPLING_8X 0x04 +#define QMP6988_OVERSAMPLING_16X 0x05 +#define QMP6988_OVERSAMPLING_32X 0x06 +#define QMP6988_OVERSAMPLING_64X 0x07 + +#define QMP6988_CTRLMEAS_REG_OSRST__POS 5 +#define QMP6988_CTRLMEAS_REG_OSRST__MSK 0xE0 +#define QMP6988_CTRLMEAS_REG_OSRST__LEN 3 + +#define QMP6988_CTRLMEAS_REG_OSRSP__POS 2 +#define QMP6988_CTRLMEAS_REG_OSRSP__MSK 0x1C +#define QMP6988_CTRLMEAS_REG_OSRSP__LEN 3 + +// filter +#define QMP6988_FILTERCOEFF_OFF 0x00 +#define QMP6988_FILTERCOEFF_2 0x01 +#define QMP6988_FILTERCOEFF_4 0x02 +#define QMP6988_FILTERCOEFF_8 0x03 +#define QMP6988_FILTERCOEFF_16 0x04 +#define QMP6988_FILTERCOEFF_32 0x05 + +#define QMP6988_CONFIG_REG 0xF1 // IIR filter co-efficient setting Register +#define QMP6988_CONFIG_REG_FILTER__POS 0 +#define QMP6988_CONFIG_REG_FILTER__MSK 0x07 +#define QMP6988_CONFIG_REG_FILTER__LEN 3 + +#define SUBTRACTOR 8388608 // pow(2,23) + +typedef struct qmp6988_cali_data_t { + int COE_a0; + int16_t COE_a1; + int16_t COE_a2; + int COE_b00; + int16_t COE_bt1; + int16_t COE_bt2; + int16_t COE_bp1; + int16_t COE_b11; + int16_t COE_bp2; + int16_t COE_b12; + int16_t COE_b21; + int16_t COE_bp3; +} qmp6988_cali_data_t; + +typedef struct qmp6988_ik_data_t { + int a0; + int b00; + int a1; + int a2; + int64_t bt1; + int64_t bt2; + int64_t bp1; + int64_t b11; + int64_t bp2; + int64_t b12; + int64_t b21; + int64_t bp3; +} qmp6988_ik_data_t; + +typedef struct qmp6988_data_t { + qmp6988_cali_data_t qmp6988_cali; + qmp6988_ik_data_t ik; + float temperature; + float pressure; + float altitude; + uint8_t slave; + uint8_t chip_id; + uint8_t power_mode; + uint8_t address; + uint8_t bus; +} qmp6988_data_t; + +qmp6988_data_t *Qmp6988 = nullptr; + +/*********************************************************************************************/ + +bool QMP6988I2cReadBuffer(uint8_t reg, uint8_t *reg_data, uint16_t len) { + return I2cReadBuffer(Qmp6988->address, reg, reg_data, len, Qmp6988->bus); +} + +uint8_t QMP6988I2cWrite(uint8_t reg, uint32_t val) { + uint8_t ret = I2cWrite8(Qmp6988->address, reg, val, Qmp6988->bus); + delay(20); + return ret; +} + +/*********************************************************************************************/ + +// DISABLE LOG +#define QMP6988_LOG(format...) +#define QMP6988_ERR(format...) + +// ENABLE LOG +// #define QMP6988_LOG Serial.printf +// #define QMP6988_ERR Serial.printf + +int QMP6988GetCalibrationData(void) { + int status = 0; + // BITFIELDS temp_COE; + uint8_t a_data_uint8_tr[QMP6988_CALIBRATION_DATA_LENGTH] = {0}; + int len; + + for (len = 0; len < QMP6988_CALIBRATION_DATA_LENGTH; len += 1) { + status = QMP6988I2cReadBuffer(QMP6988_CALIBRATION_DATA_START + len, &a_data_uint8_tr[len], 1); + if (status == 0) { + QMP6988_LOG("qmp6988 read 0xA0 error!"); + return status; + } + } + + Qmp6988->qmp6988_cali.COE_a0 = (int)(((a_data_uint8_tr[18] << 12) | (a_data_uint8_tr[19] << 4) | (a_data_uint8_tr[24] & 0x0f)) << 12); + Qmp6988->qmp6988_cali.COE_a0 = Qmp6988->qmp6988_cali.COE_a0 >> 12; + + Qmp6988->qmp6988_cali.COE_a1 = (int16_t)(((a_data_uint8_tr[20]) << 8) | a_data_uint8_tr[21]); + Qmp6988->qmp6988_cali.COE_a2 = (int16_t)(((a_data_uint8_tr[22]) << 8) | a_data_uint8_tr[23]); + + Qmp6988->qmp6988_cali.COE_b00 = (int)(((a_data_uint8_tr[0] << 12) | (a_data_uint8_tr[1] << 4) | ((a_data_uint8_tr[24] & 0xf0) >> 4)) << 12); + Qmp6988->qmp6988_cali.COE_b00 = Qmp6988->qmp6988_cali.COE_b00 >> 12; + + Qmp6988->qmp6988_cali.COE_bt1 = (int16_t)(((a_data_uint8_tr[2]) << 8) | a_data_uint8_tr[3]); + Qmp6988->qmp6988_cali.COE_bt2 = (int16_t)(((a_data_uint8_tr[4]) << 8) | a_data_uint8_tr[5]); + Qmp6988->qmp6988_cali.COE_bp1 = (int16_t)(((a_data_uint8_tr[6]) << 8) | a_data_uint8_tr[7]); + Qmp6988->qmp6988_cali.COE_b11 = (int16_t)(((a_data_uint8_tr[8]) << 8) | a_data_uint8_tr[9]); + Qmp6988->qmp6988_cali.COE_bp2 = (int16_t)(((a_data_uint8_tr[10]) << 8) | a_data_uint8_tr[11]); + Qmp6988->qmp6988_cali.COE_b12 = (int16_t)(((a_data_uint8_tr[12]) << 8) | a_data_uint8_tr[13]); + Qmp6988->qmp6988_cali.COE_b21 = (int16_t)(((a_data_uint8_tr[14]) << 8) | a_data_uint8_tr[15]); + Qmp6988->qmp6988_cali.COE_bp3 = (int16_t)(((a_data_uint8_tr[16]) << 8) | a_data_uint8_tr[17]); + + QMP6988_LOG("<-----------calibration data-------------->\r\n"); + QMP6988_LOG("COE_a0[%d] COE_a1[%d] COE_a2[%d] COE_b00[%d]\r\n", + Qmp6988->qmp6988_cali.COE_a0, Qmp6988->qmp6988_cali.COE_a1, + Qmp6988->qmp6988_cali.COE_a2, Qmp6988->qmp6988_cali.COE_b00); + QMP6988_LOG("COE_bt1[%d] COE_bt2[%d] COE_bp1[%d] COE_b11[%d]\r\n", + Qmp6988->qmp6988_cali.COE_bt1, Qmp6988->qmp6988_cali.COE_bt2, + Qmp6988->qmp6988_cali.COE_bp1, Qmp6988->qmp6988_cali.COE_b11); + QMP6988_LOG("COE_bp2[%d] COE_b12[%d] COE_b21[%d] COE_bp3[%d]\r\n", + Qmp6988->qmp6988_cali.COE_bp2, Qmp6988->qmp6988_cali.COE_b12, + Qmp6988->qmp6988_cali.COE_b21, Qmp6988->qmp6988_cali.COE_bp3); + QMP6988_LOG("<-----------calibration data-------------->\r\n"); + + Qmp6988->ik.a0 = Qmp6988->qmp6988_cali.COE_a0; // 20Q4 + Qmp6988->ik.b00 = Qmp6988->qmp6988_cali.COE_b00; // 20Q4 + + Qmp6988->ik.a1 = 3608L * (int)Qmp6988->qmp6988_cali.COE_a1 - 1731677965L; // 31Q23 + Qmp6988->ik.a2 = 16889L * (int)Qmp6988->qmp6988_cali.COE_a2 - 87619360L; // 30Q47 + + Qmp6988->ik.bt1 = 2982L * (int64_t)Qmp6988->qmp6988_cali.COE_bt1 + 107370906L; // 28Q15 + Qmp6988->ik.bt2 = 329854L * (int64_t)Qmp6988->qmp6988_cali.COE_bt2 + 108083093L; // 34Q38 + Qmp6988->ik.bp1 = 19923L * (int64_t)Qmp6988->qmp6988_cali.COE_bp1 + 1133836764L; // 31Q20 + Qmp6988->ik.b11 = 2406L * (int64_t)Qmp6988->qmp6988_cali.COE_b11 + 118215883L; // 28Q34 + Qmp6988->ik.bp2 = 3079L * (int64_t)Qmp6988->qmp6988_cali.COE_bp2 - 181579595L; // 29Q43 + Qmp6988->ik.b12 = 6846L * (int64_t)Qmp6988->qmp6988_cali.COE_b12 + 85590281L; // 29Q53 + Qmp6988->ik.b21 = 13836L * (int64_t)Qmp6988->qmp6988_cali.COE_b21 + 79333336L; // 29Q60 + Qmp6988->ik.bp3 = 2915L * (int64_t)Qmp6988->qmp6988_cali.COE_bp3 + 157155561L; // 28Q65 + + QMP6988_LOG("<----------- int calibration data -------------->\r\n"); + QMP6988_LOG("a0[%d] a1[%d] a2[%d] b00[%d]\r\n", Qmp6988->ik.a0, + Qmp6988->ik.a1, Qmp6988->ik.a2, Qmp6988->ik.b00); + QMP6988_LOG("bt1[%lld] bt2[%lld] bp1[%lld] b11[%lld]\r\n", + Qmp6988->ik.bt1, Qmp6988->ik.bt2, Qmp6988->ik.bp1, Qmp6988->ik.b11); + QMP6988_LOG("bp2[%lld] b12[%lld] b21[%lld] bp3[%lld]\r\n", + Qmp6988->ik.bp2, Qmp6988->ik.b12, Qmp6988->ik.b21, Qmp6988->ik.bp3); + QMP6988_LOG("<----------- int calibration data -------------->\r\n"); + + return 1; +} + +int16_t QMP6988ConvTx02e(qmp6988_ik_data_t* ik, int dt); +int16_t QMP6988ConvTx02e(qmp6988_ik_data_t* ik, int dt) { + int16_t ret; + int64_t wk1, wk2; + + // wk1: 60Q4 // bit size + wk1 = ((int64_t)ik->a1 * (int64_t)dt); // 31Q23+24-1=54 (54Q23) + wk2 = ((int64_t)ik->a2 * (int64_t)dt) >> 14; // 30Q47+24-1=53 (39Q33) + wk2 = (wk2 * (int64_t)dt) >> 10; // 39Q33+24-1=62 (52Q23) + wk2 = ((wk1 + wk2) / 32767) >> 19; // 54,52->55Q23 (20Q04) + ret = (int16_t)((ik->a0 + wk2) >> 4); // 21Q4 -> 17Q0 + return ret; +} + +int QMP6988GetPressure02e(qmp6988_ik_data_t* ik, int dp, int16_t tx); +int QMP6988GetPressure02e(qmp6988_ik_data_t* ik, int dp, int16_t tx) { + int ret; + int64_t wk1, wk2, wk3; + + // wk1 = 48Q16 // bit size + wk1 = ((int64_t)ik->bt1 * (int64_t)tx); // 28Q15+16-1=43 (43Q15) + wk2 = ((int64_t)ik->bp1 * (int64_t)dp) >> 5; // 31Q20+24-1=54 (49Q15) + wk1 += wk2; // 43,49->50Q15 + wk2 = ((int64_t)ik->bt2 * (int64_t)tx) >> 1; // 34Q38+16-1=49 (48Q37) + wk2 = (wk2 * (int64_t)tx) >> 8; // 48Q37+16-1=63 (55Q29) + wk3 = wk2; // 55Q29 + wk2 = ((int64_t)ik->b11 * (int64_t)tx) >> 4; // 28Q34+16-1=43 (39Q30) + wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q30+24-1=62 (61Q29) + wk3 += wk2; // 55,61->62Q29 + wk2 = ((int64_t)ik->bp2 * (int64_t)dp) >> 13; // 29Q43+24-1=52 (39Q30) + wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q30+24-1=62 (61Q29) + wk3 += wk2; // 62,61->63Q29 + wk1 += wk3 >> 14; // Q29 >> 14 -> Q15 + wk2 = ((int64_t)ik->b12 * (int64_t)tx); // 29Q53+16-1=45 (45Q53) + wk2 = (wk2 * (int64_t)tx) >> 22; // 45Q53+16-1=61 (39Q31) + wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q31+24-1=62 (61Q30) + wk3 = wk2; // 61Q30 + wk2 = ((int64_t)ik->b21 * (int64_t)tx) >> 6; // 29Q60+16-1=45 (39Q54) + wk2 = (wk2 * (int64_t)dp) >> 23; // 39Q54+24-1=62 (39Q31) + wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q31+24-1=62 (61Q20) + wk3 += wk2; // 61,61->62Q30 + wk2 = ((int64_t)ik->bp3 * (int64_t)dp) >> 12; // 28Q65+24-1=51 (39Q53) + wk2 = (wk2 * (int64_t)dp) >> 23; // 39Q53+24-1=62 (39Q30) + wk2 = (wk2 * (int64_t)dp); // 39Q30+24-1=62 (62Q30) + wk3 += wk2; // 62,62->63Q30 + wk1 += wk3 >> 15; // Q30 >> 15 = Q15 + wk1 /= 32767L; + wk1 >>= 11; // Q15 >> 7 = Q4 + wk1 += ik->b00; // Q4 + 20Q4 + // wk1 >>= 4; // 28Q4 -> 24Q0 + ret = (int)wk1; + return ret; +} + +void QMP6988Reset(void) { + uint8_t ret = QMP6988I2cWrite(QMP6988_RESET_REG, 0xe6); + if (0 == ret) { + AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Reset fail")); + } + QMP6988I2cWrite(QMP6988_RESET_REG, 0x00); +} + +void QMP6988SetpPowermode(int power_mode) { + + QMP6988_LOG("qmp_set_powermode %d \r\n", power_mode); + + Qmp6988->power_mode = power_mode; + uint8_t data; + QMP6988I2cReadBuffer(QMP6988_CTRLMEAS_REG, &data, 1); + data = data & 0xfc; + if (power_mode == QMP6988_SLEEP_MODE) { + data |= 0x00; + } else if (power_mode == QMP6988_FORCED_MODE) { + data |= 0x01; + } else if (power_mode == QMP6988_NORMAL_MODE) { + data |= 0x03; + } + QMP6988I2cWrite(QMP6988_CTRLMEAS_REG, data); + + QMP6988_LOG("qmp_set_powermode 0xf4=0x%x \r\n", data); +} + +void QMP6988SetFilter(unsigned char filter) { + uint8_t data = (filter & 0x03); + QMP6988I2cWrite(QMP6988_CONFIG_REG, data); +} + +void QMP6988SetOversamplingP(unsigned char oversampling_p) { + uint8_t data; + QMP6988I2cReadBuffer(QMP6988_CTRLMEAS_REG, &data, 1); + data &= 0xe3; + data |= (oversampling_p << 2); + QMP6988I2cWrite(QMP6988_CTRLMEAS_REG, data); +} + +void QMP6988SetOversamplingT(unsigned char oversampling_t) { + uint8_t data; + QMP6988I2cReadBuffer(QMP6988_CTRLMEAS_REG, &data, 1); + data &= 0x1f; + data |= (oversampling_t << 5); + QMP6988I2cWrite(QMP6988_CTRLMEAS_REG, data); +} + +bool QMP6988ValidChip(void) { + uint8_t data; + QMP6988I2cReadBuffer(QMP6988_CHIP_ID_REG, &data, 1); + + AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Chip Id 0x%02X"), data); + + return (QMP6988_CHIP_ID == data); +} + +/*********************************************************************************************/ + +void QMP6988CalcPressureAndTemperature(void) { + uint8_t a_data_uint8_tr[6] = {0}; + uint8_t err = QMP6988I2cReadBuffer(QMP6988_PRESSURE_MSB_REG, a_data_uint8_tr, 6); + if (err == 0) { + QMP6988_LOG("qmp6988 read press raw error! \r\n"); + return; + } + uint32_t T_read = (uint32_t)((((uint32_t)(a_data_uint8_tr[3])) << 16) | (((uint16_t)(a_data_uint8_tr[4])) << 8) | (a_data_uint8_tr[5])); + int T_raw = (int)(T_read - SUBTRACTOR); + int T_int = QMP6988ConvTx02e(&(Qmp6988->ik), T_raw); + + uint32_t P_read = (uint32_t)((((uint32_t)(a_data_uint8_tr[0])) << 16) | (((uint16_t)(a_data_uint8_tr[1])) << 8) | (a_data_uint8_tr[2])); + int P_raw = (int)(P_read - SUBTRACTOR); + int P_int = QMP6988GetPressure02e(&(Qmp6988->ik), P_raw, T_int); + + Qmp6988->temperature = (float)T_int / 256.0f; + Qmp6988->pressure = (float)P_int / 16.0f; +} + +void Qmp6988Detect(void) { + Qmp6988 = (qmp6988_data_t*)calloc(sizeof(qmp6988_data_t), 1); // Need calloc to reset registers to 0/false + if (nullptr == Qmp6988) { return; } + + const uint8_t addresses[2] = { QMP6988_ADDRESS_L, QMP6988_ADDRESS_H }; + for (uint32_t bus = 0; bus < 2; bus++) { + for (uint32_t i = 0; i < sizeof(addresses); i++) { + if (!I2cSetDevice(addresses[i], bus)) { continue; } + Qmp6988->address = addresses[i]; + Qmp6988->bus = bus; + if (QMP6988ValidChip()) { + QMP6988Reset(); + QMP6988GetCalibrationData(); + QMP6988SetpPowermode(QMP6988_NORMAL_MODE); + QMP6988SetFilter(QMP6988_FILTERCOEFF_4); + QMP6988SetOversamplingP(QMP6988_OVERSAMPLING_8X); + QMP6988SetOversamplingT(QMP6988_OVERSAMPLING_1X); + I2cSetActiveFound(Qmp6988->address, "QMP6988", Qmp6988->bus); + return; + } + } + } + + free(Qmp6988); + Qmp6988 = nullptr; +} + +void Qmp6988Show(bool json) { + float qmp_temperature = ConvertTemp(Qmp6988->temperature); + float qmp_pressure = ConvertPressure(Qmp6988->pressure); + float qmp_sealevel = ConvertPressureForSeaLevel(Qmp6988->pressure); + + char pressure[33]; + dtostrfd(qmp_pressure, Settings->flag2.pressure_resolution, pressure); + char sea_pressure[33]; + dtostrfd(qmp_sealevel, Settings->flag2.pressure_resolution, sea_pressure); + + if (json) { + ResponseAppend_P(PSTR(",\"QMP6988\":{\"" D_JSON_TEMPERATURE "\":%*_f,\"" D_JSON_PRESSURE "\":%s"), + Settings->flag2.temperature_resolution, &qmp_temperature, pressure); + if (Settings->altitude != 0) { + ResponseAppend_P(PSTR(",\"" D_JSON_PRESSUREATSEALEVEL "\":%s"), sea_pressure); + } + ResponseJsonEnd(); +#ifdef USE_DOMOTICZ + // Domoticz and knx only support one temp sensor + if ((0 == TasmotaGlobal.tele_period)) { + DomoticzFloatSensor(DZ_TEMP, qmp_temperature); + } +#endif // USE_DOMOTICZ +#ifdef USE_WEBSERVER + } else { + WSContentSend_Temp("QMP6988", qmp_temperature); + WSContentSend_PD(HTTP_SNS_PRESSURE, "QMP6988", pressure, PressureUnit().c_str()); + if (Settings->altitude != 0) { + WSContentSend_PD(HTTP_SNS_SEAPRESSURE, "QMP6988", sea_pressure, PressureUnit().c_str()); + } +#endif // USE_WEBSERVER + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns28(uint32_t function) { + if (!I2cEnabled(XI2C_88)) { return false; } + + bool result = false; + + if (FUNC_INIT == function) { + Qmp6988Detect(); + } + else if (Qmp6988) { + switch (function) { + case FUNC_EVERY_SECOND: + QMP6988CalcPressureAndTemperature(); + break; + case FUNC_JSON_APPEND: + Qmp6988Show(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + Qmp6988Show(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_QMP6988 +#endif // USE_I2C diff --git a/tools/decode-status.py b/tools/decode-status.py index 2b000d999..7147268e6 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -305,7 +305,7 @@ a_features = [[ "USE_HC8","USE_HDMI_CEC","USE_BLE_ESP32","USE_MATTER_DEVICE" ],[ "USE_MAGIC_SWITCH","USE_PIPSOLAR","USE_GPIO_VIEWER","USE_AMSX915", - "USE_SPI_LORA","USE_SPL06_007","","", + "USE_SPI_LORA","USE_SPL06_007","USE_QMP6988","", "","","","", "","","","", "","","","", @@ -339,7 +339,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v13.4.0.1 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v14.1.0.1 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From ae9d2a2c857aedeb5a4f10390f3f248acf672dfa Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 11 Jun 2024 11:07:30 +0200 Subject: [PATCH 041/252] Refactor display modes1 to 4 --- .../tasmota_xdrv_driver/xdrv_13_display.ino | 92 +++++++++---------- tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino | 3 - .../tasmota_xdsp_display/xdsp_03_matrix.ino | 3 - .../xdsp_05_epaper_29.ino | 2 - .../tasmota_xdsp_display/xdsp_15_tm1637.ino | 3 - .../xdsp_17_universal.ino | 5 +- 6 files changed, 42 insertions(+), 66 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino index cdb9faded..b0350afef 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino @@ -256,6 +256,7 @@ char **disp_log_buffer; char **disp_screen_buffer; char disp_temp[2]; // C or F char disp_pres[5]; // hPa or mmHg +char disp_topic[TOPSZ]; uint8_t disp_log_buffer_cols = 0; uint8_t disp_log_buffer_idx = 0; @@ -1497,8 +1498,7 @@ void free_dt_vars(void) { #ifdef USE_DISPLAY_MODES1TO5 -void DisplayClearScreenBuffer(void) -{ +void DisplayClearScreenBuffer(void) { if (disp_screen_buffer_cols) { for (uint32_t i = 0; i < disp_screen_buffer_rows; i++) { memset(disp_screen_buffer[i], 0, disp_screen_buffer_cols); @@ -1506,8 +1506,7 @@ void DisplayClearScreenBuffer(void) } } -void DisplayFreeScreenBuffer(void) -{ +void DisplayFreeScreenBuffer(void) { if (disp_screen_buffer != nullptr) { for (uint32_t i = 0; i < disp_screen_buffer_rows; i++) { if (disp_screen_buffer[i] != nullptr) { free(disp_screen_buffer[i]); } @@ -1518,14 +1517,13 @@ void DisplayFreeScreenBuffer(void) } } -void DisplayAllocScreenBuffer(void) -{ +void DisplayAllocScreenBuffer(void) { if (!disp_screen_buffer_cols) { disp_screen_buffer_rows = Settings->display_rows; - disp_screen_buffer = (char**)malloc(sizeof(*disp_screen_buffer) * disp_screen_buffer_rows); + disp_screen_buffer = (char**)calloc(sizeof(*disp_screen_buffer) * disp_screen_buffer_rows, 1); if (disp_screen_buffer != nullptr) { for (uint32_t i = 0; i < disp_screen_buffer_rows; i++) { - disp_screen_buffer[i] = (char*)malloc(sizeof(*disp_screen_buffer[i]) * (Settings->display_cols[0] +1)); + disp_screen_buffer[i] = (char*)calloc(sizeof(*disp_screen_buffer[i]) * (Settings->display_cols[0] +1), 1); if (disp_screen_buffer[i] == nullptr) { DisplayFreeScreenBuffer(); break; @@ -1539,14 +1537,12 @@ void DisplayAllocScreenBuffer(void) } } -void DisplayReAllocScreenBuffer(void) -{ +void DisplayReAllocScreenBuffer(void) { DisplayFreeScreenBuffer(); DisplayAllocScreenBuffer(); } -void DisplayFillScreen(uint32_t line) -{ +void DisplayFillScreen(uint32_t line) { uint32_t len = disp_screen_buffer_cols - strlen(disp_screen_buffer[line]); if (len) { memset(disp_screen_buffer[line] + strlen(disp_screen_buffer[line]), 0x20, len); @@ -1556,17 +1552,7 @@ void DisplayFillScreen(uint32_t line) /*-------------------------------------------------------------------------------------------*/ -void DisplayClearLogBuffer(void) -{ - if (disp_log_buffer_cols) { - for (uint32_t i = 0; i < DISPLAY_LOG_ROWS; i++) { - memset(disp_log_buffer[i], 0, disp_log_buffer_cols); - } - } -} - -void DisplayFreeLogBuffer(void) -{ +void DisplayFreeLogBuffer(void) { if (disp_log_buffer != nullptr) { for (uint32_t i = 0; i < DISPLAY_LOG_ROWS; i++) { if (disp_log_buffer[i] != nullptr) { free(disp_log_buffer[i]); } @@ -1576,13 +1562,12 @@ void DisplayFreeLogBuffer(void) } } -void DisplayAllocLogBuffer(void) -{ +void DisplayAllocLogBuffer(void) { if (!disp_log_buffer_cols) { - disp_log_buffer = (char**)malloc(sizeof(*disp_log_buffer) * DISPLAY_LOG_ROWS); + disp_log_buffer = (char**)calloc(sizeof(*disp_log_buffer) * DISPLAY_LOG_ROWS, 1); if (disp_log_buffer != nullptr) { for (uint32_t i = 0; i < DISPLAY_LOG_ROWS; i++) { - disp_log_buffer[i] = (char*)malloc(sizeof(*disp_log_buffer[i]) * (Settings->display_cols[0] +1)); + disp_log_buffer[i] = (char*)calloc(sizeof(*disp_log_buffer[i]) * (Settings->display_cols[0] +1), 1); if (disp_log_buffer[i] == nullptr) { DisplayFreeLogBuffer(); break; @@ -1591,46 +1576,42 @@ void DisplayAllocLogBuffer(void) } if (disp_log_buffer != nullptr) { disp_log_buffer_cols = Settings->display_cols[0] +1; - DisplayClearLogBuffer(); DisplayClearScreenBuffer(); DisplayClear(); } } } -void DisplayReAllocLogBuffer(void) -{ +void DisplayReAllocLogBuffer(void) { DisplayFreeLogBuffer(); DisplayAllocLogBuffer(); } -void DisplayLogBufferAdd(char* txt) -{ +void DisplayLogBufferAdd(char* txt) { if (disp_log_buffer_cols) { - strlcpy(disp_log_buffer[disp_log_buffer_idx], txt, disp_log_buffer_cols); // This preserves the % sign where printf won't - disp_log_buffer_idx++; + strlcpy(disp_log_buffer[disp_log_buffer_idx++], txt, disp_log_buffer_cols); // This preserves the % sign where printf won't if (DISPLAY_LOG_ROWS == disp_log_buffer_idx) { disp_log_buffer_idx = 0; } } } -char* DisplayLogBuffer(char temp_code) -{ +char* DisplayLogBuffer(char temp_code) { char* result = nullptr; if (disp_log_buffer_cols) { if (disp_log_buffer_idx != disp_log_buffer_ptr) { - result = disp_log_buffer[disp_log_buffer_ptr]; - disp_log_buffer_ptr++; + uint32_t log_buffer_ptr = disp_log_buffer_ptr; + result = disp_log_buffer[disp_log_buffer_ptr++]; if (DISPLAY_LOG_ROWS == disp_log_buffer_ptr) { disp_log_buffer_ptr = 0; } char *pch = strchr(result, '~'); // = 0x7E (~) Replace degrees character (276 octal) if (pch != nullptr) { result[pch - result] = temp_code; } + + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("DSP: %02d %s"), log_buffer_ptr, result); } } return result; } -void DisplayLogBufferInit(void) -{ +void DisplayLogBufferInit(void) { if (Settings->display_mode) { disp_log_buffer_idx = 0; disp_log_buffer_ptr = 0; @@ -1730,19 +1711,31 @@ void DisplayJsonValue(const char* topic, const char* device, const char* mkey, c } char buffer[Settings->display_cols[0] +1]; // Max sized buffer string - memset(buffer, 0x20, sizeof(buffer)); // Temporarily use for spaces + uint32_t size = strlen(topic); + if ((Settings->display_rows > 4) && size) { // Skip header if less than five rows + if (strcmp(topic, disp_topic)) { // Show topic header only once + strcpy(disp_topic, topic); + char buffer2[Settings->display_cols[0] +1]; // Max sized buffer string + memset(buffer2, '-', sizeof(buffer2)); // Set to - + buffer2[sizeof(buffer2) -1] = '\0'; + snprintf_P(buffer, sizeof(buffer), PSTR("- %s %s"), topic, buffer2); // - pow1 ------------- + DisplayLogBufferAdd(buffer); + } + size = 0; // Remove topic from source + } + memset(buffer, ' ', sizeof(buffer)); // Temporarily use for spaces buffer[sizeof(buffer) -1] = '\0'; char source[Settings->display_cols[0] - Settings->display_cols[1]]; // Max sized source string - snprintf_P(source, sizeof(source), PSTR("%s%s%s%s"), topic, (strlen(topic))?"/":"", mkey, buffer); // pow1/Voltage or Voltage if topic is empty (local sensor) + snprintf_P(source, sizeof(source), PSTR("%s%s%s%s"), (size)?topic:"", (size)?"/":"", mkey, buffer); // pow1/Voltage or Voltage if topic is empty (local sensor or header) snprintf_P(buffer, sizeof(buffer), PSTR("%s %s"), source, svalue); -// AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, buffer); +// AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "topic [%s], device [%s], mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), +// topic, device, mkey, source, value, quantity_code, buffer); DisplayLogBufferAdd(buffer); } -void DisplayAnalyzeJson(char *topic, const char *json) -{ +void DisplayAnalyzeJson(char *topic, const char *json) { // //tele/pow2/STATE {"Time":"2017-09-20T11:53:03", "Uptime":10, "Vcc":3.123, "POWER":"ON", "Wifi":{"AP":2, "SSId":"indebuurt2", "RSSI":68, "APMac":"00:22:6B:FE:8E:20"}} // //tele/pow2/ENERGY {"Time":"2017-09-20T11:53:03", "Total":6.522, "Yesterday":0.150, "Today":0.073, "Period":0.5, "Power":12.1, "Factor":0.56, "Voltage":210.1, "Current":0.102} @@ -1819,10 +1812,8 @@ void DisplayMqttSubscribe(void) { strncat(ntopic, SettingsText(SET_MQTTPREFIX3), sizeof(ntopic) - strlen(ntopic) -1); // Subscribe to tele messages strncat_P(ntopic, PSTR("/#"), sizeof(ntopic) - strlen(ntopic) -1); // Add multi-level wildcard if (Settings->display_model && (Settings->display_mode &0x04)) { - if (!disp_subscribed) { - disp_subscribed = true; - MqttSubscribe(ntopic); - } + disp_subscribed = true; + MqttSubscribe(ntopic); } else { if (disp_subscribed) { disp_subscribed = false; @@ -1831,8 +1822,7 @@ void DisplayMqttSubscribe(void) { } } -bool DisplayMqttData(void) -{ +bool DisplayMqttData(void) { if (disp_subscribed) { char stopic[TOPSZ]; diff --git a/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino b/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino index 2dff946f2..c70ac4bb3 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino @@ -149,9 +149,6 @@ bool LcdPrintLog(void) } strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); DisplayFillScreen(last_row); - - AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); - lcd->setCursor(0, last_row); lcd->print(disp_screen_buffer[last_row]); diff --git a/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino b/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino index c314d4982..d8a6d5fa4 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino @@ -267,9 +267,6 @@ void MatrixPrintLog(uint8_t direction) } i++; } - - AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), mtx_buffer); - mtx_done = 1; } diff --git a/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino b/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino index 4c18e219b..959c4c48f 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino @@ -130,8 +130,6 @@ void EpdPrintLog29(void) DisplayFillScreen(last_row); renderer->DrawStringAt(0, epd_scroll, disp_screen_buffer[last_row], COLORED, 0); // EpdDisplayFrame(); - - AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), txt); } } } diff --git a/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino b/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino index 4d43d23ff..62b48632f 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino @@ -1203,9 +1203,6 @@ bool TM1637PrintLog(void) { strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); DisplayFillScreen(last_row); - - AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); - TM1637Print(disp_screen_buffer[last_row]); result = true; diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index ac5599dea..8c07b1d56 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -550,7 +550,7 @@ void UDISP_PrintLog(void) if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); } char* txt = DisplayLogBuffer('\370'); - if (txt != NULL) { + if (txt != nullptr) { uint8_t last_row = Settings->display_rows -1; // renderer->clearDisplay(); @@ -562,9 +562,6 @@ void UDISP_PrintLog(void) } strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); DisplayFillScreen(last_row); - - AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); - renderer->println(disp_screen_buffer[last_row]); renderer->Updateframe(); } From a02e3aa6511245c3a852c1809ffc8f61aff688ca Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 11 Jun 2024 11:25:45 +0200 Subject: [PATCH 042/252] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 991ac37df..167baad82 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR and the code change compiles without warnings - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.6 - - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.0 + - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.1 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). _NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_ From 4858ec0aefc9ce978589e8f49aefd61a40003c97 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:41:19 +0200 Subject: [PATCH 043/252] Allow receive or send using SerialBridge --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + .../xdrv_08_serial_bridge.ino | 32 +++++++++++++++---- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 524bb3a34..c0fde9652 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ All notable changes to this project will be documented in this file. - Matter filter suffix automatically added for sensors (#21589) - Display timing splash screen with display modes 1 to 5 - ESP32 MI32 refactoring, bugfixes, generic device scanning (#21603) +- Allow receive or send using SerialBridge ### Fixed - Berry `input()` returns empty string and does not crash (#21565) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 2d8d2e622..b3a877d30 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -132,6 +132,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Changed - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 +- Allow receive or send using SerialBridge - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino index fdce70e4a..62cb40a9d 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino @@ -20,6 +20,24 @@ #ifdef USE_SERIAL_BRIDGE /*********************************************************************************************\ * Serial Bridge using Software Serial library (TasmotaSerial) + * + * SBaudrate - Set baudrate + * SBaudrate 9600 + * SSerialConfig - Set serial config + * SSerialConfig 8N1 + * SSerialBuffer - Set serial receive buffer + * SSerialSend "Hello Tiger" - Send "Hello Tiger\n" + * SSerialSend - Set to text decoding + * SSerialSend1 "Hello Tiger" - Send "Hello Tiger\n" + * SSerialSend2 "Hello Tiger" - Send "Hello Tiger" + * SSerialSend3 "Hello Tiger" - Send "Hello Tiger\f" + * SSerialSend4 - Set to binary decoding + * SSerialSend4 "Hello Tiger" - Send "Hello Tiger" and set to binary decoding + * SSerialSend5 "AA004566" - Send "AA004566" as hex values + * SSerialSend6 "72,101,108,108" - Send decimals as hex values + * SerialDelimiter 255 - Receive data between 32 and 127 only + * SerialDelimiter 254 - Receive hexadecimal data + * SerialDelimiter 128 - Receive no data between 32 and 127 \*********************************************************************************************/ #define XDRV_08 8 @@ -91,7 +109,7 @@ void SerialBridgeInput(void) { uint8_t serial_in_byte = SerialBridgeSerial->read(); #ifdef USE_SERIAL_BRIDGE_TEE - if (Settings->sbflag1.serbridge_console) { + if (Settings->sbflag1.serbridge_console) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge static bool serial_bridge_overrun = false; if (isprint(serial_in_byte)) { // Any char between 32 and 127 @@ -117,7 +135,7 @@ void SerialBridgeInput(void) { } } else { #endif // USE_SERIAL_BRIDGE_TEE - serial_bridge_raw = (254 == Settings->serial_delimiter); + serial_bridge_raw = (254 == Settings->serial_delimiter); // SerialDelimiter if ((serial_in_byte > 127) && !serial_bridge_raw) { // Discard binary data above 127 if no raw reception allowed serial_bridge_in_byte_counter = 0; SerialBridgeSerial->flush(); @@ -147,17 +165,17 @@ void SerialBridgeInput(void) { } #ifdef USE_SERIAL_BRIDGE_TEE - if (Settings->sbflag1.serbridge_console) { + if (Settings->sbflag1.serbridge_console) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge return; } #endif // USE_SERIAL_BRIDGE_TEE if (serial_bridge_in_byte_counter && (millis() > (serial_bridge_polling_window + SERIAL_POLLING))) { - serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed + serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed bool assume_json = (!serial_bridge_raw && (serial_bridge_buffer[0] == '{')); - TasmotaGlobal.serial_skip++; // SetOption35 Skip number of serial messages received (default 0) - if (TasmotaGlobal.serial_skip > Settings->param[P_SERIAL_SKIP]) { // Handle intermediate changes to SetOption35 + TasmotaGlobal.serial_skip++; // SetOption35 Skip number of serial messages received (default 0) + if (TasmotaGlobal.serial_skip > Settings->param[P_SERIAL_SKIP]) { // Handle intermediate changes to SetOption35 TasmotaGlobal.serial_skip = 0; Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":")); @@ -188,7 +206,7 @@ void SerialBridgeInput(void) { /********************************************************************************************/ void SerialBridgeInit(void) { - if (PinUsed(GPIO_SBR_RX) && PinUsed(GPIO_SBR_TX)) { + if (PinUsed(GPIO_SBR_RX) || PinUsed(GPIO_SBR_TX)) { // SerialBridgeSerial = new TasmotaSerial(Pin(GPIO_SBR_RX), Pin(GPIO_SBR_TX), HARDWARE_FALLBACK); // Default TM_SERIAL_BUFFER_SIZE (=64) size SerialBridgeSerial = new TasmotaSerial(Pin(GPIO_SBR_RX), Pin(GPIO_SBR_TX), HARDWARE_FALLBACK, 0, MIN_INPUT_BUFFER_SIZE); // 256 if (SetSSerialBegin()) { From 7e8bcd896a29860d9feec9957aae81df56ec055c Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:25:47 +0200 Subject: [PATCH 044/252] include `SD_MMC.h` only when supported (#21611) --- tasmota/tasmota.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index fb8416f68..e466ad9b5 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -83,7 +83,9 @@ #include #ifdef USE_SDCARD #include +#ifdef SOC_SDMMC_HOST_SUPPORTED #include +#endif // SOC_SDMMC_HOST_SUPPORTED #endif // USE_SDCARD #include "FFat.h" #include "FS.h" From 87148ae0c11458819f67930833c658356a645bf8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:27:39 +0200 Subject: [PATCH 045/252] Change SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - Bump version v14.1.0.2 --- CHANGELOG.md | 18 +- RELEASENOTES.md | 3 +- tasmota/include/i18n.h | 1 + tasmota/include/tasmota_types.h | 7 +- tasmota/include/tasmota_version.h | 2 +- tasmota/tasmota_support/settings.ino | 5 +- .../xdrv_08_serial_bridge.ino | 204 +++++++++++++----- 7 files changed, 173 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0fde9652..da6372512 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,19 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [14.1.0.1] +## [14.1.0.2] +### Added + +### Breaking Changed + +### Changed +- SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` + +### Fixed + +### Removed + +## [14.1.0.1] 20240611 ### Added - Berry solidification of `bytes` instances (#21558) - Matter support for Air Quality sensors (#21559) @@ -13,8 +25,6 @@ All notable changes to this project will be documented in this file. - Berry add `math.round` (#21602) - Support for QMP6988 temperature and pressure sensor -### Breaking Changed - ### Changed - Matter refactoring of bridged devices (#21575) - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 (#21569) @@ -27,8 +37,6 @@ All notable changes to this project will be documented in this file. ### Fixed - Berry `input()` returns empty string and does not crash (#21565) -### Removed - ## [Released] ## [14.1.0] 20240603 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b3a877d30..e07fb7294 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -119,7 +119,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v14.1.0.1 +## Changelog v14.1.0.2 ### Added - Support for QMP6988 temperature and pressure sensor - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) @@ -133,6 +133,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 - Allow receive or send using SerialBridge +- SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) diff --git a/tasmota/include/i18n.h b/tasmota/include/i18n.h index 6b17b534a..d0ed3e128 100644 --- a/tasmota/include/i18n.h +++ b/tasmota/include/i18n.h @@ -609,6 +609,7 @@ // Commands xdrv_08_serial_bridge.ino #define D_CMND_SSERIALSEND "SSerialSend" #define D_CMND_SBAUDRATE "SBaudrate" +#define D_CMND_SSERIALMODE "SSerialMode" #define D_CMND_SSERIALBUFFER "SSerialBuffer" #define D_CMND_SSERIALCONFIG "SSerialConfig" #define D_JSON_SSERIALRECEIVED "SSerialReceived" diff --git a/tasmota/include/tasmota_types.h b/tasmota/include/tasmota_types.h index 97f0a2c9d..df628c1d4 100755 --- a/tasmota/include/tasmota_types.h +++ b/tasmota/include/tasmota_types.h @@ -286,7 +286,7 @@ typedef union { uint32_t sspm_display : 1; // bit 8 (v10.0.0.4) - CMND_SSPMDISPLAY - Enable gui display of powered on relays only uint32_t local_ntp_server : 1; // bit 9 (v11.0.0.4) - CMND_RTCNTPSERVER - Enable local NTP server uint32_t influxdb_sensor : 1; // bit 10 (v11.0.0.5) - CMND_IFXSENSOR - Enable sensor support in addition to teleperiod support - uint32_t serbridge_console : 1; // bit 11 (v11.1.0.4) - CMND_SSERIALSEND9 - Enable logging tee to serialbridge + uint32_t ex_serbridge_console : 1; // bit 11 (v11.1.0.4) - (v14.1.0.2) Replaced by CMND_SSERIALMODE uint32_t telegram_disable_af : 1; // bit 12 (v14.0.0.2) - CMND_TMSTATE 6/7 - Disable Telegram auto-fingerprint fix uint32_t spare13 : 1; // bit 13 uint32_t spare14 : 1; // bit 14 @@ -515,6 +515,7 @@ typedef struct { uint8_t text_pool_290[66]; // 290 // End of single char array of 698 chars max **************** + uint8_t display_model; // 2D2 uint8_t display_mode; // 2D3 uint8_t display_refresh; // 2D4 @@ -832,9 +833,7 @@ typedef struct { uint8_t windmeter_tele_pchange; // F3E uint8_t ledpwm_on; // F3F uint8_t ledpwm_off; // F40 - - uint8_t ex_tcp_baudrate; // F41 ex_tcp_baudrate, free since v14.0.0.4 - + uint8_t sserial_mode; // F41 uint8_t fallback_module; // F42 uint8_t shutter_mode; // F43 uint16_t energy_power_delta[3]; // F44 diff --git a/tasmota/include/tasmota_version.h b/tasmota/include/tasmota_version.h index 31371855c..ecd3f1dfe 100644 --- a/tasmota/include/tasmota_version.h +++ b/tasmota/include/tasmota_version.h @@ -22,6 +22,6 @@ #define TASMOTA_SHA_SHORT // Filled by Github sed -const uint32_t TASMOTA_VERSION = 0x0E010001; // 14.1.0.1 +const uint32_t TASMOTA_VERSION = 0x0E010002; // 14.1.0.2 #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/tasmota_support/settings.ino b/tasmota/tasmota_support/settings.ino index ca13e46a1..e3b2e144c 100644 --- a/tasmota/tasmota_support/settings.ino +++ b/tasmota/tasmota_support/settings.ino @@ -1817,7 +1817,10 @@ void SettingsDelta(void) { Settings->power_lock = 0; } if (Settings->version < 0x0E000004) { // 14.0.0.4 - Settings->tcp_baudrate = (uint16_t)Settings->ex_tcp_baudrate * 4; + Settings->tcp_baudrate = (uint16_t)Settings->sserial_mode * 4; + } + if (Settings->version < 0x0E010002) { // 14.1.0.2 + Settings->sserial_mode = Settings->sbflag1.ex_serbridge_console; } Settings->version = TASMOTA_VERSION; diff --git a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino index 62cb40a9d..b4462e174 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino @@ -35,6 +35,10 @@ * SSerialSend4 "Hello Tiger" - Send "Hello Tiger" and set to binary decoding * SSerialSend5 "AA004566" - Send "AA004566" as hex values * SSerialSend6 "72,101,108,108" - Send decimals as hex values + * SSerialMode 0 - Default mode (Console tee off, 115200bps, 8N1) + * SSerialMode 1 - Enable console tee + * SSerialMode 2 - Enable dump of serial data in log level 4 + * SSerialMode 3 - Enable Sonoff WTS01 sensor decoding (ESP32 only) * SerialDelimiter 255 - Receive data between 32 and 127 only * SerialDelimiter 254 - Receive hexadecimal data * SerialDelimiter 128 - Receive no data between 32 and 127 @@ -45,6 +49,10 @@ #define USE_SERIAL_BRIDGE_TEE +#ifdef ESP32 +#define USE_SERIAL_BRIDGE_WTS01 +#endif // ESP32 + #ifdef SERIAL_BRIDGE_BUFFER_SIZE const uint16_t SERIAL_BRIDGE_BUFSIZE = SERIAL_BRIDGE_BUFFER_SIZE; #else @@ -55,19 +63,25 @@ const uint16_t SERIAL_BRIDGE_BUFSIZE = INPUT_BUFFER_SIZE; // 800 #endif // ESP32 #endif // SERIAL_BRIDGE_BUFFER_SIZE +enum SerialBridgeModes { SB_NONE, SB_TEE, SB_DUMP, SB_WTS01 }; + const char kSerialBridgeCommands[] PROGMEM = "|" // No prefix - D_CMND_SSERIALSEND "|" D_CMND_SBAUDRATE "|" D_CMND_SSERIALBUFFER "|" D_CMND_SSERIALCONFIG; + D_CMND_SSERIALSEND "|" D_CMND_SBAUDRATE "|" D_CMND_SSERIALBUFFER "|" D_CMND_SSERIALCONFIG "|" D_CMND_SSERIALMODE; void (* const SerialBridgeCommand[])(void) PROGMEM = { - &CmndSSerialSend, &CmndSBaudrate, &CmndSSerialBuffer, &CmndSSerialConfig }; + &CmndSSerialSend, &CmndSBaudrate, &CmndSSerialBuffer, &CmndSSerialConfig, &CmndSSerialMode }; #include TasmotaSerial *SerialBridgeSerial = nullptr; -unsigned long serial_bridge_polling_window = 0; char *serial_bridge_buffer = nullptr; -int serial_bridge_in_byte_counter = 0; -bool serial_bridge_raw = false; + +struct { + uint32_t polling_window; + int in_byte_counter = 0; + float temperature; + bool raw = false; +} SBridge; /********************************************************************************************/ @@ -87,7 +101,7 @@ void SetSSerialConfig(uint32_t serial_config) { void SerialBridgePrintf(PGM_P formatP, ...) { #ifdef USE_SERIAL_BRIDGE_TEE - if (Settings->sbflag1.serbridge_console && serial_bridge_buffer) { + if ((SB_TEE == Settings->sserial_mode) && serial_bridge_buffer) { va_list arg; va_start(arg, formatP); char* data = ext_vsnprintf_malloc_P(formatP, arg); @@ -109,18 +123,18 @@ void SerialBridgeInput(void) { uint8_t serial_in_byte = SerialBridgeSerial->read(); #ifdef USE_SERIAL_BRIDGE_TEE - if (Settings->sbflag1.serbridge_console) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge + if (SB_TEE == Settings->sserial_mode) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge static bool serial_bridge_overrun = false; if (isprint(serial_in_byte)) { // Any char between 32 and 127 - if (serial_bridge_in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) { // Add char to string if it still fits - serial_bridge_buffer[serial_bridge_in_byte_counter++] = serial_in_byte; + if (SBridge.in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) { // Add char to string if it still fits + serial_bridge_buffer[SBridge.in_byte_counter++] = serial_in_byte; } else { serial_bridge_overrun = true; // Signal overrun but continue reading input to flush until '\n' (EOL) } } else if (serial_in_byte == '\n') { - serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed + serial_bridge_buffer[SBridge.in_byte_counter] = 0; // Serial data completed TasmotaGlobal.seriallog_level = (Settings->seriallog_level < LOG_LEVEL_INFO) ? (uint8_t)LOG_LEVEL_INFO : Settings->seriallog_level; if (serial_bridge_overrun) { AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "SSerial buffer overrun")); @@ -128,78 +142,98 @@ void SerialBridgeInput(void) { AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "%s"), serial_bridge_buffer); ExecuteCommand(serial_bridge_buffer, SRC_SSERIAL); } - serial_bridge_in_byte_counter = 0; + SBridge.in_byte_counter = 0; serial_bridge_overrun = false; SerialBridgeSerial->flush(); return; } } else { #endif // USE_SERIAL_BRIDGE_TEE - serial_bridge_raw = (254 == Settings->serial_delimiter); // SerialDelimiter - if ((serial_in_byte > 127) && !serial_bridge_raw) { // Discard binary data above 127 if no raw reception allowed - serial_bridge_in_byte_counter = 0; + SBridge.raw = (Settings->sserial_mode > SB_TEE) ? true : (254 == Settings->serial_delimiter); // SerialDelimiter + if ((serial_in_byte > 127) && !SBridge.raw) { // Discard binary data above 127 if no raw reception allowed + SBridge.in_byte_counter = 0; SerialBridgeSerial->flush(); return; } - if (serial_in_byte || serial_bridge_raw) { // Any char between 1 and 127 or any char (0 - 255) + if (serial_in_byte || SBridge.raw) { // Any char between 1 and 127 or any char (0 - 255) bool in_byte_is_delimiter = // Char is delimiter when... (((Settings->serial_delimiter < 128) && (serial_in_byte == Settings->serial_delimiter)) || // Any char between 1 and 127 and being delimiter ((Settings->serial_delimiter == 128) && !isprint(serial_in_byte))) && // Any char not between 32 and 127 - !serial_bridge_raw; // In raw mode (CMND_SERIALSEND3) there is never a delimiter + !SBridge.raw; // In raw mode (CMND_SERIALSEND3) there is never a delimiter - if ((serial_bridge_in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) && // Add char to string if it still fits and ... + if ((SBridge.in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) && // Add char to string if it still fits and ... !in_byte_is_delimiter) { // Char is not a delimiter - serial_bridge_buffer[serial_bridge_in_byte_counter++] = serial_in_byte; + serial_bridge_buffer[SBridge.in_byte_counter++] = serial_in_byte; } - if ((serial_bridge_in_byte_counter >= SERIAL_BRIDGE_BUFSIZE -1) || // Send message when buffer is full or ... + if ((SBridge.in_byte_counter >= SERIAL_BRIDGE_BUFSIZE -1) || // Send message when buffer is full or ... in_byte_is_delimiter) { // Char is delimiter - serial_bridge_polling_window = 0; // Publish now + SBridge.polling_window = 0; // Publish now break; } } - serial_bridge_polling_window = millis(); // Wait for more data + SBridge.polling_window = millis(); // Wait for more data #ifdef USE_SERIAL_BRIDGE_TEE } #endif // USE_SERIAL_BRIDGE_TEE } #ifdef USE_SERIAL_BRIDGE_TEE - if (Settings->sbflag1.serbridge_console) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge + if (SB_TEE == Settings->sserial_mode) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge return; } #endif // USE_SERIAL_BRIDGE_TEE - if (serial_bridge_in_byte_counter && (millis() > (serial_bridge_polling_window + SERIAL_POLLING))) { - serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed - bool assume_json = (!serial_bridge_raw && (serial_bridge_buffer[0] == '{')); + if (SBridge.in_byte_counter && (millis() > (SBridge.polling_window + SERIAL_POLLING))) { + serial_bridge_buffer[SBridge.in_byte_counter] = 0; // Serial data completed - TasmotaGlobal.serial_skip++; // SetOption35 Skip number of serial messages received (default 0) - if (TasmotaGlobal.serial_skip > Settings->param[P_SERIAL_SKIP]) { // Handle intermediate changes to SetOption35 - TasmotaGlobal.serial_skip = 0; - - Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":")); - if (assume_json) { - ResponseAppend_P(serial_bridge_buffer); - } else { - ResponseAppend_P(PSTR("\"")); - if (serial_bridge_raw) { - ResponseAppend_P(PSTR("%*_H"), serial_bridge_in_byte_counter, serial_bridge_buffer); + if (SB_NONE == Settings->sserial_mode) { + bool assume_json = (!SBridge.raw && (serial_bridge_buffer[0] == '{')); + TasmotaGlobal.serial_skip++; // SetOption35 Skip number of serial messages received (default 0) + if (TasmotaGlobal.serial_skip > Settings->param[P_SERIAL_SKIP]) { // Handle intermediate changes to SetOption35 + TasmotaGlobal.serial_skip = 0; + Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":")); + if (assume_json) { + ResponseAppend_P(serial_bridge_buffer); } else { - ResponseAppend_P(EscapeJSONString(serial_bridge_buffer).c_str()); + ResponseAppend_P(PSTR("\"")); + if (SBridge.raw) { + ResponseAppend_P(PSTR("%*_H"), SBridge.in_byte_counter, serial_bridge_buffer); + } else { + ResponseAppend_P(EscapeJSONString(serial_bridge_buffer).c_str()); + } + ResponseAppend_P(PSTR("\"")); } - ResponseAppend_P(PSTR("\"")); - } - ResponseJsonEnd(); + ResponseJsonEnd(); - if (Settings->flag6.mqtt_disable_sserialrec ) { // SetOption147 If it is activated, Tasmota will not publish SSerialReceived MQTT messages, but it will proccess event trigger rules - XdrvRulesProcess(0); - } else { - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED)); + if (Settings->flag6.mqtt_disable_sserialrec ) { // SetOption147 If it is activated, Tasmota will not publish SSerialReceived MQTT messages, but it will proccess event trigger rules + XdrvRulesProcess(0); + } else { + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED)); + } } } - serial_bridge_in_byte_counter = 0; + if (Settings->sserial_mode > SB_TEE) { + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SBR: Rcvd '%*_H'"), SBridge.in_byte_counter, serial_bridge_buffer); + } + +#ifdef USE_SERIAL_BRIDGE_WTS01 + // Sonoff WTS01 9600bps, 8N1 datagram every second + // 0 1 2 3 4 5 6 7 8 + // 55 01 01 04 01 11 16 12 95 + // header T Td Ck - T = Temperature, Td = Temperature decimal, Ck = Checksum + if (SB_WTS01 == Settings->sserial_mode) { + if (9 == SBridge.in_byte_counter) { + uint32_t *header = (uint32_t*)serial_bridge_buffer; + if (0x04010155 == *header) { + SBridge.temperature = (float)serial_bridge_buffer[6] + ((float)serial_bridge_buffer[7] / 100.0f); + } + } + } +#endif // USE_SERIAL_BRIDGE_WTS01 + + SBridge.in_byte_counter = 0; } } @@ -230,10 +264,10 @@ void SerialBridgeInit(void) { \*********************************************************************************************/ void CmndSSerialSend(void) { + if (Settings->sserial_mode > SB_DUMP) { return; } // Not supported in receive only mode if (XdrvMailbox.index > 9) { XdrvMailbox.index -= 10; } if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= 6)) { - serial_bridge_raw = (XdrvMailbox.index > 3); - Settings->sbflag1.serbridge_console = 0; // Disable console Tee + SBridge.raw = (XdrvMailbox.index > 3); if (XdrvMailbox.data_len > 0) { if (1 == XdrvMailbox.index) { SerialBridgeSerial->write(XdrvMailbox.data, XdrvMailbox.data_len); // "Hello Tiger" @@ -273,14 +307,6 @@ void CmndSSerialSend(void) { ResponseCmndDone(); } } -#ifdef USE_SERIAL_BRIDGE_TEE - if (9 == XdrvMailbox.index) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) { - Settings->sbflag1.serbridge_console = XdrvMailbox.payload; - } - ResponseCmndStateText(Settings->sbflag1.serbridge_console); - } -#endif // USE_SERIAL_BRIDGE_TEE } void CmndSBaudrate(void) { @@ -335,6 +361,66 @@ void CmndSSerialConfig(void) { ResponseCmndChar(GetSerialConfig(Settings->sserial_config).c_str()); } +void CmndSSerialMode(void) { + // SSerialMode 0 - Default mode (Tee off, 115200bps, 8N1) + // SSerialMode 1 - Toggle console tee + // SSerialMode 2 - Dump hex data to log level 4 for analysis + // SSerialMode 3 - Sonoff WTS01 decode + if (XdrvMailbox.payload >= 0) { + switch (XdrvMailbox.payload) { + case SB_NONE: + Settings->sserial_mode = XdrvMailbox.payload; + // Settings->serial_delimiter = 255; + Settings->sbaudrate = 115200 / 300; // 115200bps + SetSSerialConfig(3); // 8N1 + break; +#ifdef USE_SERIAL_BRIDGE_TEE + case SB_TEE: + Settings->sserial_mode = XdrvMailbox.payload; + break; +#endif // USE_SERIAL_BRIDGE_TEE + case SB_DUMP: + Settings->sserial_mode = XdrvMailbox.payload; + break; +#ifdef USE_SERIAL_BRIDGE_WTS01 + case SB_WTS01: + Settings->sserial_mode = XdrvMailbox.payload; + Settings->sbaudrate = 9600 / 300; // 9600bps + SetSSerialConfig(3); // 8N1 + break; +#endif // USE_SERIAL_BRIDGE_WTS01 + default: + return; // Not supported + } + } + ResponseCmndNumber(Settings->sserial_mode); +} + +/*********************************************************************************************\ + * Presentation +\*********************************************************************************************/ + +void SerialBridgeShow(bool json) { +#ifdef USE_SERIAL_BRIDGE_WTS01 + if (SB_WTS01 == Settings->sserial_mode) { + float temperature = ConvertTemp(SBridge.temperature); + if (json) { + ResponseAppend_P(PSTR(",\"WTS01\":{\"" D_JSON_TEMPERATURE "\":%*_f}"), Settings->flag2.temperature_resolution, &temperature); + #ifdef USE_DOMOTICZ + if (0 == TasmotaGlobal.tele_period) { DomoticzFloatSensor(DZ_TEMP, temperature); } + #endif // USE_DOMOTICZ + #ifdef USE_KNX + if (0 == TasmotaGlobal.tele_period) { KnxSensor(KNX_TEMPERATURE, temperature); } + #endif // USE_KNX + #ifdef USE_WEBSERVER + } else { + WSContentSend_Temp("WTS01", temperature); + #endif // USE_WEBSERVER + } + } +#endif // USE_SERIAL_BRIDGE_WTS01 +} + /*********************************************************************************************\ * Interface \*********************************************************************************************/ @@ -351,6 +437,14 @@ bool Xdrv08(uint32_t function) { case FUNC_SLEEP_LOOP: SerialBridgeInput(); break; + case FUNC_JSON_APPEND: + SerialBridgeShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + SerialBridgeShow(0); + break; +#endif // USE_WEBSERVER case FUNC_COMMAND: result = DecodeCommand(kSerialBridgeCommands, SerialBridgeCommand); break; From bd47d99ceb1046e2bef6a26f830a76ae8f06da43 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:48:38 +0200 Subject: [PATCH 046/252] Berry `classof` extended to class methods (#21615) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_api.c | 16 ++++++++++++++++ lib/libesp32/berry/tests/class.be | 17 ++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da6372512..393947757 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All notable changes to this project will be documented in this file. ## [14.1.0.2] ### Added +- Berry `classof` extended to class methods ### Breaking Changed diff --git a/lib/libesp32/berry/src/be_api.c b/lib/libesp32/berry/src/be_api.c index 6ccb65c5a..f3851b5c6 100644 --- a/lib/libesp32/berry/src/be_api.c +++ b/lib/libesp32/berry/src/be_api.c @@ -544,6 +544,22 @@ BERRY_API bbool be_classof(bvm *vm, int index) binstance *ins = var_toobj(v); var_setclass(top, be_instance_class(ins)); return btrue; + } else if (var_isclosure(v)) { + bclosure *cl = var_toobj(v); + bproto *pr = cl->proto; + if (pr != NULL) { + bclass *cla; + if (pr->nproto > 0) { + cla = (bclass*) pr->ptab[pr->nproto]; + } else { + cla = (bclass*) pr->ptab; + } + if (cla && var_basetype(cla) == BE_CLASS) { + bvalue *top = be_incrtop(vm); + var_setclass(top, cla); + return btrue; + } + } } return bfalse; } diff --git a/lib/libesp32/berry/tests/class.be b/lib/libesp32/berry/tests/class.be index e175fcdca..0bbc6be56 100644 --- a/lib/libesp32/berry/tests/class.be +++ b/lib/libesp32/berry/tests/class.be @@ -57,4 +57,19 @@ c4 = Test_class() assert(type(c4.c) == 'class') c5 = c4.c() assert(type(c5) == 'instance') -assert(classname(c5) == 'map') \ No newline at end of file +assert(classname(c5) == 'map') + +#- classof now gets back the class of Berry methods -# +class A + def f() end + static def g() end +end +class B : A + def h() end +end +assert(classof(A.f) == A) +assert(classof(A.g) == A) +assert(classof(B.h) == B) +#- returns nil if native function of not in class -# +assert(classof(int) == nil) +assert(classof(def () end) == nil) From 7bde0b89d12c9be1aedfd647273a197ade5385a5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:50:29 +0200 Subject: [PATCH 047/252] Fix QMP6988 --- tasmota/tasmota_support/support_a_i2c.ino | 42 ++++++++++++------- .../tasmota_xsns_sensor/xsns_28_qmp6988.ino | 19 ++++++--- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/tasmota/tasmota_support/support_a_i2c.ino b/tasmota/tasmota_support/support_a_i2c.ino index 5912bbfc9..364cd1fe5 100644 --- a/tasmota/tasmota_support/support_a_i2c.ino +++ b/tasmota/tasmota_support/support_a_i2c.ino @@ -58,6 +58,10 @@ TwoWire& I2cGetWire(uint8_t bus = 0) { } } +/*-------------------------------------------------------------------------------------------*\ + * Return code: 0 = Error, 1 = OK +\*-------------------------------------------------------------------------------------------*/ + bool I2cValidRead(uint8_t addr, uint8_t reg, uint8_t size, uint8_t bus = 0) { i2c_buffer = 0; @@ -75,51 +79,51 @@ bool I2cValidRead(uint8_t addr, uint8_t reg, uint8_t size, uint8_t bus = 0) { for (uint32_t i = 0; i < size; i++) { i2c_buffer = i2c_buffer << 8 | myWire.read(); // receive DATA } - status = true; + status = true; // 1 = OK } } retry--; } if (!retry) myWire.endTransmission(); - return status; + return status; // 0 = Error, 1 = OK } bool I2cValidRead8(uint8_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) { bool status = I2cValidRead(addr, reg, 1, bus); *data = (uint8_t)i2c_buffer; - return status; + return status; // 0 = Error, 1 = OK } bool I2cValidRead16(uint16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) { bool status = I2cValidRead(addr, reg, 2, bus); *data = (uint16_t)i2c_buffer; - return status; + return status; // 0 = Error, 1 = OK } bool I2cValidReadS16(int16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) { bool status = I2cValidRead(addr, reg, 2, bus); *data = (int16_t)i2c_buffer; - return status; + return status; // 0 = Error, 1 = OK } bool I2cValidRead16LE(uint16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) { uint16_t ldata; bool status = I2cValidRead16(&ldata, addr, reg, bus); *data = (ldata >> 8) | (ldata << 8); - return status; + return status; // 0 = Error, 1 = OK } bool I2cValidReadS16_LE(int16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) { uint16_t ldata; bool status = I2cValidRead16LE(&ldata, addr, reg, bus); *data = (int16_t)ldata; - return status; + return status; // 0 = Error, 1 = OK } bool I2cValidRead24(int32_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) { bool status = I2cValidRead(addr, reg, 3, bus); *data = i2c_buffer; - return status; + return status; // 0 = Error, 1 = OK } uint8_t I2cRead8(uint8_t addr, uint8_t reg, uint8_t bus = 0) { @@ -166,37 +170,41 @@ bool I2cWrite(uint8_t addr, uint8_t reg, uint32_t val, uint8_t size, uint8_t bus } x--; } while (myWire.endTransmission(true) != 0 && x != 0); // end transmission - return (x); + return (x); // 0 = Error, 1 = OK } bool I2cWrite8(uint8_t addr, uint8_t reg, uint32_t val, uint8_t bus = 0) { - return I2cWrite(addr, reg, val, 1, bus); + return I2cWrite(addr, reg, val, 1, bus); // 0 = Error, 1 = OK } bool I2cWrite16(uint8_t addr, uint8_t reg, uint32_t val, uint8_t bus = 0) { - return I2cWrite(addr, reg, val, 2, bus); + return I2cWrite(addr, reg, val, 2, bus); // 0 = Error, 1 = OK } +/*-------------------------------------------------------------------------------------------*\ + * Return code: 0 = OK, 1 = Error +\*-------------------------------------------------------------------------------------------*/ + bool I2cReadBuffer(uint8_t addr, uint8_t reg, uint8_t *reg_data, uint16_t len, uint8_t bus = 0) { TwoWire& myWire = I2cGetWire(bus); - if (&myWire == nullptr) { return true; } // No valid I2c bus + if (&myWire == nullptr) { return true; } // No valid I2c bus myWire.beginTransmission((uint8_t)addr); myWire.write((uint8_t)reg); myWire.endTransmission(); if (len != myWire.requestFrom((uint8_t)addr, (uint8_t)len)) { - return true; // Error + return true; // 1 = Error } while (len--) { *reg_data = (uint8_t)myWire.read(); reg_data++; } - return false; // OK + return false; // 0 = OK } int8_t I2cWriteBuffer(uint8_t addr, uint8_t reg, uint8_t *reg_data, uint16_t len, uint8_t bus = 0) { TwoWire& myWire = I2cGetWire(bus); - if (&myWire == nullptr) { return 1; } // No valid I2c bus + if (&myWire == nullptr) { return 1; } // 1 = Error, No valid I2c bus myWire.beginTransmission((uint8_t)addr); myWire.write((uint8_t)reg); @@ -205,9 +213,11 @@ int8_t I2cWriteBuffer(uint8_t addr, uint8_t reg, uint8_t *reg_data, uint16_t len reg_data++; } myWire.endTransmission(); - return 0; // OK + return 0; // 0 = OK } +/*-------------------------------------------------------------------------------------------*/ + void I2cScan(uint8_t bus = 0) { // Return error codes defined in twi.h and core_esp8266_si2c.c // I2C_OK 0 diff --git a/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino b/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino index ff39f5964..c4e0fdddc 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino @@ -125,11 +125,18 @@ qmp6988_data_t *Qmp6988 = nullptr; /*********************************************************************************************/ bool QMP6988I2cReadBuffer(uint8_t reg, uint8_t *reg_data, uint16_t len) { - return I2cReadBuffer(Qmp6988->address, reg, reg_data, len, Qmp6988->bus); + bool ret = !I2cReadBuffer(Qmp6988->address, reg, reg_data, len, Qmp6988->bus); + +// AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Rd %02X '%*_H', Rslt %d"), reg, len, reg_data, ret); + + return ret; } -uint8_t QMP6988I2cWrite(uint8_t reg, uint32_t val) { - uint8_t ret = I2cWrite8(Qmp6988->address, reg, val, Qmp6988->bus); +bool QMP6988I2cWrite(uint8_t reg, uint32_t val) { + bool ret = I2cWrite8(Qmp6988->address, reg, val, Qmp6988->bus); + +// AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Wr %02X '%02X', Rslt %d"), reg, val, ret); + delay(20); return ret; } @@ -272,7 +279,7 @@ int QMP6988GetPressure02e(qmp6988_ik_data_t* ik, int dp, int16_t tx) { void QMP6988Reset(void) { uint8_t ret = QMP6988I2cWrite(QMP6988_RESET_REG, 0xe6); if (0 == ret) { - AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Reset fail")); + QMP6988_LOG("reset fail!!! \r\n"); } QMP6988I2cWrite(QMP6988_RESET_REG, 0x00); } @@ -322,7 +329,7 @@ bool QMP6988ValidChip(void) { uint8_t data; QMP6988I2cReadBuffer(QMP6988_CHIP_ID_REG, &data, 1); - AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Chip Id 0x%02X"), data); + QMP6988_LOG("chip id=0x%x \r\n", data); return (QMP6988_CHIP_ID == data); } @@ -345,7 +352,7 @@ void QMP6988CalcPressureAndTemperature(void) { int P_int = QMP6988GetPressure02e(&(Qmp6988->ik), P_raw, T_int); Qmp6988->temperature = (float)T_int / 256.0f; - Qmp6988->pressure = (float)P_int / 16.0f; + Qmp6988->pressure = (float)P_int / 1600.0f; } void Qmp6988Detect(void) { From 6e8e3cc740a222fc71c6e218bc8b1b8b0046a57c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:54:17 +0200 Subject: [PATCH 048/252] Update changelogs --- CHANGELOG.md | 3 ++- RELEASENOTES.md | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 393947757..c1223e961 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,8 @@ All notable changes to this project will be documented in this file. ## [14.1.0.2] ### Added -- Berry `classof` extended to class methods +- Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` +- Berry `classof` extended to class methods (#21615) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index e07fb7294..d39dc5be3 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -122,9 +122,11 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ## Changelog v14.1.0.2 ### Added - Support for QMP6988 temperature and pressure sensor +- Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) - Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) +- Berry `classof` extended to class methods [#21615](https://github.com/arendst/Tasmota/issues/21615) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality (#21597)[#21597](https://github.com/arendst/Tasmota/issues/21597) From 4fbe3590bea16b3d43fc870bda13807e5d223534 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 12 Jun 2024 20:23:43 +0200 Subject: [PATCH 049/252] add TM1638 switches to display build (#21617) --- tasmota/include/tasmota_configurations.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/include/tasmota_configurations.h b/tasmota/include/tasmota_configurations.h index 80401756f..2cecc2d46 100644 --- a/tasmota/include/tasmota_configurations.h +++ b/tasmota/include/tasmota_configurations.h @@ -356,6 +356,8 @@ #define USE_DISPLAY_TM1637 // [DisplayModel 15] Enable TM1637 module #define USE_DISPLAY_MAX7219 // [DisplayModel 19] Enable MAX7219 7-segment module +#define USE_TM1638 // Add support for TM1638 switches copying Switch1 .. Switch8 (+1k code) + #define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram) #define USE_DISPLAY_MODES1TO5 // Enable display mode 1 to 5 in addition to mode 0 #define USE_DISPLAY_LCD // [DisplayModel 1] Enable Lcd display (I2C addresses 0x27 and 0x3F) (+6k code) From fe31d84ac6d801ed3b7686deb3bf3a5df3936b72 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:29:24 +0200 Subject: [PATCH 050/252] add lib_ignore for rtsp lib to env which does not support webcam --- platformio_tasmota_env32.ini | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 8876956d2..ce888463c 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -192,6 +192,8 @@ build_unflags = ${env:tasmota32_base.build_unflags} build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c2.bin"' +lib_ignore = ${env:tasmota32_base.lib_ignore} + Micro-RTSP [env:tasmota32c3] extends = env:tasmota32_base @@ -201,6 +203,8 @@ build_unflags = ${env:tasmota32_base.build_unflags} build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3.bin"' +lib_ignore = ${env:tasmota32_base.lib_ignore} + Micro-RTSP [env:tasmota32c6] extends = env:tasmota32_base @@ -210,6 +214,8 @@ build_unflags = ${env:tasmota32_base.build_unflags} build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c6.bin"' +lib_ignore = ${env:tasmota32_base.lib_ignore} + Micro-RTSP [env:tasmota32s3] extends = env:tasmota32_base @@ -237,6 +243,8 @@ build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_BLUETOOTH -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32-bluetooth.bin"' lib_extra_dirs = lib/libesp32, lib/libesp32_div, lib/lib_basic, lib/lib_i2c, lib/lib_ssl +lib_ignore = ${env:tasmota32_base.lib_ignore} + Micro-RTSP [env:tasmota32-display] extends = env:tasmota32_base @@ -244,6 +252,8 @@ build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_DISPLAYS -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32-display.bin"' lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_display, lib/lib_ssl +lib_ignore = ${env:tasmota32_base.lib_ignore} + Micro-RTSP [env:tasmota32-lvgl] extends = env:tasmota32_base @@ -252,6 +262,8 @@ build_flags = ${env:tasmota32_base.build_flags} -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32-lvgl.bin"' board_build.f_cpu = 240000000L lib_extra_dirs = lib/libesp32, lib/libesp32_lvgl, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl, lib/lib_display +lib_ignore = ${env:tasmota32_base.lib_ignore} + Micro-RTSP [env:tasmota32-ir] extends = env:tasmota32_base From 95f6032d863513c9de6ee6c85fb9e71623600f24 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Fri, 14 Jun 2024 10:14:13 +0200 Subject: [PATCH 051/252] Change NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) --- CHANGELOG.md | 1 + tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1223e961..8be3b269e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. ### Changed - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` +- NeoPool using temperature as only frequently changing value for NPTeleperiod ### Fixed diff --git a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino index 88e1d00f3..01718d201 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino @@ -632,15 +632,15 @@ const uint16_t NeoPoolRegCheck[] PROGMEM = { // MBF_CELL_RUNTIME_POL_CHANGES_HIGH, // measured values delayed (set bit 15 to indicate often value changes) - MBF_ION_CURRENT | 0x8000, - MBF_MEASURE_CL | 0x8000, - MBF_MEASURE_CONDUCTIVITY | 0x8000, - MBF_MEASURE_PH | 0x8000, - MBF_MEASURE_RX | 0x8000, MBF_MEASURE_TEMPERATURE | 0x8000, - MBF_HIDRO_CURRENT | 0x8000, // undelayed measured values + MBF_MEASURE_CL, + MBF_MEASURE_CONDUCTIVITY, + MBF_MEASURE_PH, + MBF_MEASURE_RX, + MBF_ION_CURRENT, + MBF_HIDRO_CURRENT, MBF_HIDRO_STATUS, MBF_PH_STATUS, MBF_RELAY_STATE, From cbff86695f13be11c885bfa77e4c0c7478a3a335 Mon Sep 17 00:00:00 2001 From: gemu Date: Fri, 14 Jun 2024 10:14:44 +0200 Subject: [PATCH 052/252] replace vars in descriptor + line (#21622) --- tasmota/tasmota_xsns_sensor/xsns_53_sml.ino | 116 +++++++++++--------- 1 file changed, 63 insertions(+), 53 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino b/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino index af3120d62..ec73da332 100755 --- a/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino @@ -3156,28 +3156,38 @@ void SML_Init(void) { // add descriptor +1,1,c,0,10,H20 //toLogEOL(">>",lp); lp++; - index = *lp & 7; - lp += 2; + char *lp1; +#ifdef SML_REPLACE_VARS + char dstbuf[SML_SRCBSIZE*2]; + Replace_Cmd_Vars(lp, 1, dstbuf, sizeof(dstbuf)); + lp += SML_getlinelen(lp); + lp1 = dstbuf; +#else + lp1 = lp; + lp += SML_getlinelen(lp); +#endif + index = *lp1 & 7; + lp1 += 2; if (index < 1 || index > sml_globs.meters_used) { AddLog(LOG_LEVEL_INFO, PSTR("illegal meter number!")); goto next_line; } index--; mmp = &meter_desc[index]; - if (*lp == '[') { + if (*lp1 == '[') { // sign TCP mode srcpin = TCP_MODE_FLG; - lp++; + lp1++; char str[32]; uint8_t cnt; for (cnt = 0; cnt < sizeof(str) - 1; cnt++) { - if (!*lp || *lp == '\n' || *lp == ']') { + if (!*lp1 || *lp1 == '\n' || *lp1 == ']') { break; } - str[cnt] = *lp++; + str[cnt] = *lp1++; } str[cnt] = 0; - lp++; + lp1++; #ifdef USE_SML_TCP #ifdef USE_SML_TCP_IP_STR strcpy(mmp->ip_addr, str); @@ -3186,7 +3196,7 @@ void SML_Init(void) { #endif #endif } else { - srcpin = strtol(lp, &lp, 10); + srcpin = strtol(lp1, &lp1, 10); if (Gpio_used(abs(srcpin))) { AddLog(LOG_LEVEL_INFO, PSTR("SML: Error: Duplicate GPIO %d defined. Not usable for RX in meter number %d"), abs(srcpin), index + 1); dddef_exit: @@ -3196,53 +3206,53 @@ dddef_exit: } } mmp->srcpin = srcpin; - if (*lp != ',') goto next_line; - lp++; - mmp->type = *lp; - lp++; - if (*lp != ',') { - switch (*lp) { + if (*lp1 != ',') goto next_line; + lp1++; + mmp->type = *lp1; + lp1++; + if (*lp1 != ',') { + switch (*lp1) { case 'N': - lp++; - mmp->sopt = 0x10 | (*lp & 3); - lp++; + lp1++; + mmp->sopt = 0x10 | (*lp1 & 3); + lp1++; break; case 'E': - lp++; - mmp->sopt = 0x20 | (*lp & 3); - lp++; + lp1++; + mmp->sopt = 0x20 | (*lp1 & 3); + lp1++; break; case 'O': - lp++; - mmp->sopt = 0x30 | (*lp & 3); - lp++; + lp1++; + mmp->sopt = 0x30 | (*lp1 & 3); + lp1++; break; default: - mmp->sopt = *lp&7; - lp++; + mmp->sopt = *lp1&7; + lp1++; } } else { mmp->sopt = 0; } - lp++; - mmp->flag = strtol(lp, &lp, 10); - if (*lp != ',') goto next_line; - lp++; - mmp->params = strtol(lp, &lp, 10); - if (*lp != ',') goto next_line; - lp++; + lp1++; + mmp->flag = strtol(lp1, &lp1, 10); + if (*lp1 != ',') goto next_line; + lp1++; + mmp->params = strtol(lp1, &lp1, 10); + if (*lp1 != ',') goto next_line; + lp1++; mmp->prefix[SML_PREFIX_SIZE - 1] = 0; for (uint32_t cnt = 0; cnt < SML_PREFIX_SIZE; cnt++) { - if (*lp == SCRIPT_EOL || *lp == ',') { + if (*lp1 == SCRIPT_EOL || *lp1 == ',') { mmp->prefix[cnt] = 0; break; } - mmp->prefix[cnt] = *lp++; + mmp->prefix[cnt] = *lp1++; } - if (*lp == ',') { - lp++; + if (*lp1 == ',') { + lp1++; // get TRX pin - mmp->trxpin = strtol(lp, &lp, 10); + mmp->trxpin = strtol(lp1, &lp1, 10); if (mmp->srcpin != TCP_MODE_FLG) { if (Gpio_used(mmp->trxpin)) { AddLog(LOG_LEVEL_INFO, PSTR("SML: Error: Duplicate GPIO %d defined. Not usable for TX in meter number %d"), meter_desc[index].trxpin, index + 1); @@ -3250,19 +3260,19 @@ dddef_exit: } } // optional transmit enable pin - if (*lp == '(') { - lp++; - if (*lp == 'i') { - lp++; + if (*lp1 == '(') { + lp1++; + if (*lp1 == 'i') { + lp1++; mmp->trx_en.trxenpol = 1; } else { mmp->trx_en.trxenpol = 0; } - mmp->trx_en.trxenpin = strtol(lp, &lp, 10); - if (*lp != ')') { + mmp->trx_en.trxenpin = strtol(lp1, &lp1, 10); + if (*lp1 != ')') { goto dddef_exit; } - lp++; + lp1++; if (Gpio_used(mmp->trx_en.trxenpin)) { AddLog(LOG_LEVEL_INFO, PSTR("SML: Error: Duplicate GPIO %d defined. Not usable for TX enable in meter number %d"), meter_desc[index].trx_en.trxenpin, index + 1); goto dddef_exit; @@ -3273,15 +3283,15 @@ dddef_exit: } else { mmp->trx_en.trxen = 0; } - if (*lp != ',') goto next_line; - lp++; - mmp->tsecs = strtol(lp, &lp, 10); - if (*lp == ',') { - lp++; + if (*lp1 != ',') goto next_line; + lp1++; + mmp->tsecs = strtol(lp1, &lp1, 10); + if (*lp1 == ',') { + lp1++; // look ahead uint16_t txlen = 0; uint16_t tx_entries = 1; - char *txp = lp; + char *txp = lp1; while (*txp) { if (*txp == ',') tx_entries++; if (*txp == SCRIPT_EOL) { @@ -3303,7 +3313,7 @@ dddef_exit: memory += txlen + 2; if (mmp->txmem) { // now copy send blocks - char *txp = lp; + char *txp = lp1; uint16_t tind = 0; for (uint32_t cnt = 0; cnt < txlen; cnt++) { if (*txp == SCRIPT_EOL) { @@ -3318,11 +3328,11 @@ dddef_exit: mmp->index = 0; mmp->max_index = tx_entries; sml_globs.sml_send_blocks++; - lp += txlen; + lp1 += txlen; } } } - if (*lp == SCRIPT_EOL) lp--; + if (*lp1 == SCRIPT_EOL) lp1--; goto next_line; } char *lp1; From 9451f20b43e4a7c153cb8ad31ab1abbc31f4db33 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:46:14 +0200 Subject: [PATCH 053/252] Update changelogs --- CHANGELOG.md | 3 ++- RELEASENOTES.md | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8be3b269e..cf6c3f32e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,8 @@ All notable changes to this project will be documented in this file. ### Changed - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` -- NeoPool using temperature as only frequently changing value for NPTeleperiod +- SML replace vars in descriptor and line (#21622) +- NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) ### Fixed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d39dc5be3..8053c289e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -129,13 +129,15 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry `classof` extended to class methods [#21615](https://github.com/arendst/Tasmota/issues/21615) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) -- Matter support for bridged Air Quality (#21597)[#21597](https://github.com/arendst/Tasmota/issues/21597) +- Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) ### Changed - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 - Allow receive or send using SerialBridge - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` +- SML replace vars in descriptor and line [#21622](https://github.com/arendst/Tasmota/issues/21622) +- NeoPool using temperature as only frequently changing value for NPTeleperiod [#21628](https://github.com/arendst/Tasmota/issues/21628) - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) From 75c47b6948bc8028a9bd661a7eaafdc3d6675000 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 14 Jun 2024 11:23:03 +0200 Subject: [PATCH 054/252] Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/include/tasmota_types.h | 2 +- tasmota/tasmota_support/settings.ino | 2 +- tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino | 6 +++++- tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino | 6 +++++- tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino | 3 +-- 7 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf6c3f32e..c614b47cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Berry `classof` extended to class methods (#21615) +- Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 8053c289e..6d2fd35b1 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -123,6 +123,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Added - Support for QMP6988 temperature and pressure sensor - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` +- Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) - Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) diff --git a/tasmota/include/tasmota_types.h b/tasmota/include/tasmota_types.h index df628c1d4..cd5325aff 100755 --- a/tasmota/include/tasmota_types.h +++ b/tasmota/include/tasmota_types.h @@ -180,7 +180,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption146 .. SetOption177 uint32_t use_esp32_temperature : 1; // bit 0 (v12.1.1.1) - SetOption146 - (ESP32) Show ESP32 internal temperature sensor - uint32_t mqtt_disable_sserialrec : 1; // bit 1 (v12.1.1.2) - SetOption147 - (MQTT) Disable publish SSerialReceived MQTT messages, you must use event trigger rules instead. + uint32_t mqtt_disable_publish : 1; // bit 1 (v12.1.1.2) - SetOption147 - (MQTT) Disable publish SSerialReceived/IRReceived MQTT messages, you must use event trigger rules instead. uint32_t artnet_autorun : 1; // bit 2 (v12.2.0.4) - SetOption148 - (Light) start DMX ArtNet at boot, listen to UDP port as soon as network is up uint32_t dns_ipv6_priority : 1; // bit 3 (v12.2.0.6) - SetOption149 - (Wifi) prefer IPv6 DNS resolution to IPv4 address when available. Requires `#define USE_IPV6` uint32_t no_voltage_common : 1; // bit 4 (v12.3.1.5) - SetOption150 - (Energy) Force no voltage/frequency common diff --git a/tasmota/tasmota_support/settings.ino b/tasmota/tasmota_support/settings.ino index e3b2e144c..3a77bfda0 100644 --- a/tasmota/tasmota_support/settings.ino +++ b/tasmota/tasmota_support/settings.ino @@ -1137,7 +1137,7 @@ void SettingsDefaultSet2(void) { flag5.mqtt_status_retain |= MQTT_STATUS_RETAIN; flag5.mqtt_switches |= MQTT_SWITCHES; flag5.mqtt_persistent |= ~MQTT_CLEAN_SESSION; - flag6.mqtt_disable_sserialrec |= MQTT_DISABLE_SSERIALRECEIVED; + flag6.mqtt_disable_publish |= MQTT_DISABLE_SSERIALRECEIVED; flag6.mqtt_disable_modbus |= MQTT_DISABLE_MODBUSRECEIVED; // flag.mqtt_serial |= 0; flag.device_index_enable |= MQTT_POWER_FORMAT; diff --git a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino index 271a34b9d..c64cfa5e9 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino @@ -296,7 +296,11 @@ void IrReceiveCheck(void) } ResponseJsonEndEnd(); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED)); + if (Settings->flag6.mqtt_disable_publish ) { // SetOption147 - If it is activated, Tasmota will not publish IRReceived MQTT messages, but it will proccess event trigger rules + XdrvRulesProcess(0); + } else { + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED)); + } #ifdef USE_DOMOTICZ if (iridx) { diff --git a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino index e0f6da521..5b761eb73 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino @@ -375,7 +375,11 @@ void IrReceiveCheck(void) { } ResponseJsonEndEnd(); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED)); + if (Settings->flag6.mqtt_disable_publish ) { // SetOption147 - If it is activated, Tasmota will not publish IRReceived MQTT messages, but it will proccess event trigger rules + XdrvRulesProcess(0); + } else { + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED)); + } } irrecv->resume(); diff --git a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino index b4462e174..938194fc2 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino @@ -205,8 +205,7 @@ void SerialBridgeInput(void) { ResponseAppend_P(PSTR("\"")); } ResponseJsonEnd(); - - if (Settings->flag6.mqtt_disable_sserialrec ) { // SetOption147 If it is activated, Tasmota will not publish SSerialReceived MQTT messages, but it will proccess event trigger rules + if (Settings->flag6.mqtt_disable_publish ) { // SetOption147 - If it is activated, Tasmota will not publish SSerialReceived MQTT messages, but it will proccess event trigger rules XdrvRulesProcess(0); } else { MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED)); From 7cb8c0259dcb56d3233a3b786e4ffbc3d167775b Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 14 Jun 2024 18:54:27 +0200 Subject: [PATCH 055/252] Matter support for Rain sensor (#21633) --- CHANGELOG.md | 1 + .../berry_matter/src/be_matter_module.c | 12 +- .../src/embedded/Matter_Plugin_0.be | 12 +- .../Matter_Plugin_2_Sensor_Boolean.be | 104 ++ .../Matter_Plugin_2_Sensor_Waterleak.be | 157 -- ...t.be => Matter_Plugin_3_Sensor_Contact.be} | 77 +- ...be => Matter_Plugin_3_Sensor_Occupancy.be} | 79 +- ...Off.be => Matter_Plugin_3_Sensor_OnOff.be} | 51 +- .../embedded/Matter_Plugin_3_Sensor_Rain.be | 105 ++ .../Matter_Plugin_3_Sensor_Waterleak.be | 90 + .../Matter_Plugin_8_Bridge_Sensor_Rain.be | 32 + .../Matter_Plugin_9_Virt_Sensor_Rain.be | 34 + .../Matter_Plugin_9_Virt_Sensor_Waterleak.be | 4 +- .../berry_matter/src/embedded/Matter_UI.be | 6 +- .../src/solidify/solidified_Matter_Plugin_0.h | 1505 ++++++++--------- ...olidified_Matter_Plugin_2_Sensor_Boolean.h | 301 ++++ ...idified_Matter_Plugin_2_Sensor_Waterleak.h | 594 ------- ...lidified_Matter_Plugin_3_Sensor_Contact.h} | 434 ++--- ...dified_Matter_Plugin_3_Sensor_Occupancy.h} | 436 ++--- ...solidified_Matter_Plugin_3_Sensor_OnOff.h} | 218 +-- .../solidified_Matter_Plugin_3_Sensor_Rain.h | 358 ++++ ...idified_Matter_Plugin_3_Sensor_Waterleak.h | 273 +++ ...ified_Matter_Plugin_8_Bridge_Sensor_Rain.h | 26 + ...idified_Matter_Plugin_9_Virt_Sensor_Rain.h | 27 + ...ed_Matter_Plugin_9_Virt_Sensor_Waterleak.h | 12 +- .../src/solidify/solidified_Matter_UI.h | 4 +- .../solidify/solidified_Matter_zz_Device.h | 91 +- 27 files changed, 2455 insertions(+), 2588 deletions(-) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Boolean.be delete mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_2_Sensor_Contact.be => Matter_Plugin_3_Sensor_Contact.be} (56%) rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_2_Sensor_Occupancy.be => Matter_Plugin_3_Sensor_Occupancy.be} (56%) rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_2_Sensor_OnOff.be => Matter_Plugin_3_Sensor_OnOff.be} (60%) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Rain.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_2_Sensor_Contact.h => solidified_Matter_Plugin_3_Sensor_Contact.h} (55%) rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_2_Sensor_Occupancy.h => solidified_Matter_Plugin_3_Sensor_Occupancy.h} (56%) rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Plugin_2_Sensor_OnOff.h => solidified_Matter_Plugin_3_Sensor_OnOff.h} (55%) create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h diff --git a/CHANGELOG.md b/CHANGELOG.md index c614b47cc..4052438f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Berry `classof` extended to class methods (#21615) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) +- Matter support for Rain sensor ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index e7f3f4404..a641cad33 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -252,12 +252,15 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Illuminance.h" #include "solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Humidity.h" -#include "solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h" -#include "solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h" -#include "solidify/solidified_Matter_Plugin_2_Sensor_Contact.h" -#include "solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h" +#include "solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h" +#include "solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h" +#include "solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h" +#include "solidify/solidified_Matter_Plugin_3_Sensor_Contact.h" +#include "solidify/solidified_Matter_Plugin_3_Sensor_Rain.h" +#include "solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h" +#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h" #include "solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h" #include "solidify/solidified_Matter_Plugin_8_Bridge_Light0.h" @@ -272,6 +275,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h" #include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h" +#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h" #include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h" #include "solidify/solidified_Matter_Plugin_z_All.h" #include "solidify/solidified_Matter_zz_Device.h" diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 28716b38a..748eb2d96 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -116,7 +116,7 @@ class Matter_Plugin def init(device, endpoint, config) self.device = device self.endpoint = endpoint - self.clusters = self.consolidate_clusters() + self.clusters = self.get_clusters() self.parse_configuration(config) self.node_label = config.find("name", "") end @@ -179,11 +179,11 @@ class Matter_Plugin end ############################################################# - # consolidate_clusters + # get_clusters # # Build a consolidated map of all the `CLUSTERS` static vars # from the inheritance hierarchy - def consolidate_clusters() + def get_clusters() return self.CLUSTERS # def real_super(o) return super(o) end # enclose `super()` in a static function to disable special behavior for super in instances # var ret = {} @@ -257,12 +257,6 @@ class Matter_Plugin return false end - ############################################################# - # Does it handle this endpoint and this cluster - def has(cluster, endpoint) - return self.clusters.contains(cluster) && self.endpoints.find(endpoint) != nil - end - def set_name(n) if n != self.node_label self.attribute_updated(0x0039, 0x0005) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Boolean.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Boolean.be new file mode 100644 index 000000000..06d65baa8 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Boolean.be @@ -0,0 +1,104 @@ +# +# Matter_Plugin_Sensor_Boolean.be - implements the behavior for an abstract boolean sensor - to be inherited +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Sensor_Boolean,weak + +class Matter_Plugin_Sensor_Boolean : Matter_Plugin_Device + # static var TYPE = "" # name of the plug-in in json + # static var DISPLAY_NAME = "" # display name of the plug-in + static var ARG = "switch" # additional argument name (or empty if none) + static var ARG_HINT = "Switch number" + static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 750 # update every 750ms + + var tasmota_switch_index # Switch number in Tasmota (one based) + var shadow_bool_value + + ############################################################# + # Constructor + def init(device, endpoint, config) + super(self).init(device, endpoint, config) + self.shadow_bool_value = false + end + + ############################################################# + # parse_configuration + # + # Parse configuration map + def parse_configuration(config) + self.tasmota_switch_index = int(config.find(self.ARG #-'switch'-#, 1)) + if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end + end + + ############################################################# + # Update shadow + # + def update_shadow() + super(self).update_shadow() + if !self.VIRTUAL + var switch_str = "Switch" + str(self.tasmota_switch_index) + + var j = tasmota.cmd("Status 10", true) + if j != nil j = j.find("StatusSNS") end + if j != nil && j.contains(switch_str) + var state = (j.find(switch_str) == "ON") + + if (self.shadow_bool_value != state) + self.value_updated() + end + self.shadow_bool_value = state + end + end + end + + ############################################################# + # value_updated + # + # This is triggered when a new value is changed, for subscription + # This method is meant to be overloaded and maximize shared code + def value_updated() + end + + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # Stub for updating shadow values (local copies of what we published to the Matter gateway) + # + # This call is synnchronous and blocking. + def parse_status(data, index) + if index == 10 # Status 10 + var state = false + + state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") + + if self.shadow_bool_value != nil && self.shadow_bool_value != bool(state) + self.value_updated() + end + self.shadow_bool_value = state + end + end + ############################################################# + ############################################################# +end +matter.Plugin_Sensor_Boolean = Matter_Plugin_Sensor_Boolean diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be deleted file mode 100644 index 680ad5b91..000000000 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be +++ /dev/null @@ -1,157 +0,0 @@ -# -# Matter_Plugin_2_Sensor_Waterleak.be - implements the behavior for a Water leak Sensor -# -# Copyright (C) 2024 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import matter - -# Matter plug-in for core behavior - -#@ solidify:Matter_Plugin_Sensor_Waterleak,weak - -class Matter_Plugin_Sensor_Waterleak : Matter_Plugin_Device - static var TYPE = "waterleak" # name of the plug-in in json - static var DISPLAY_NAME = "Waterleak" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) - static var ARG_HINT = "Switch number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var UPDATE_TIME = 750 # update every 750ms - static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Waterleak") - static var CLUSTERS = matter.consolidate_clusters(_class, { - 0x0045: [0], # Boolean State p.70 - no writable - }) - # MATTER_WATER_LEAK_DETECTOR_DEVICE_TYPE_ID 0x0043 - static var TYPES = { 0x0043: 1 } # Waterleak Sensor, rev 1 - - var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_leak - - ############################################################# - # Constructor - def init(device, endpoint, config) - super(self).init(device, endpoint, config) - self.shadow_leak = false - end - - ############################################################# - # parse_configuration - # - # Parse configuration map - def parse_configuration(config) - self.tasmota_switch_index = int(config.find(self.ARG #-'switch'-#, 1)) - if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end - end - - ############################################################# - # Update shadow - # - def update_shadow() - super(self).update_shadow() - if !self.VIRTUAL - var switch_str = "Switch" + str(self.tasmota_switch_index) - - var j = tasmota.cmd("Status 10", true) - if j != nil j = j.find("StatusSNS") end - if j != nil && j.contains(switch_str) - var state = (j.find(switch_str) == "ON") - - if (self.shadow_leak != state) - self.attribute_updated(0x0045, 0x0000) - end - self.shadow_leak = state - end - end - end - - ############################################################# - # read an attribute - # - def read_attribute(session, ctx, tlv_solo) - var TLV = matter.TLV - var cluster = ctx.cluster - var attribute = ctx.attribute - - # ==================================================================================================== - if cluster == 0x0045 # ========== Boolean State ========== - if attribute == 0x0000 # ---------- StateValue / bool ---------- - return tlv_solo.set(TLV.BOOL, self.shadow_leak) - end - - end - return super(self).read_attribute(session, ctx, tlv_solo) - end - - ############################################################# - # update_virtual - # - # Update internal state for virtual devices - def update_virtual(payload_json) - var val_onoff = payload_json.find("Waterleak") - if val_onoff != nil - val_onoff = bool(val_onoff) - if self.shadow_leak != val_onoff - self.attribute_updated(0x0045, 0x0000) - self.shadow_leak = val_onoff - end - end - super(self).update_virtual(payload_json) - end - - ############################################################# - # For Bridge devices - ############################################################# - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_status(data, index) - if index == 10 # Status 10 - var state = false - - state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") - - if self.shadow_leak != nil && self.shadow_leak != bool(state) - self.attribute_updated(0x0045, 0x0000) - end - self.shadow_leak = state - end - end - - ############################################################# - # web_values - # - # Show values of the remote device as HTML - def web_values() - import webserver - self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("Waterleak%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_leak))) - end - - # Show prefix before web value - def web_values_prefix() - import webserver - var name = self.get_name() - if !name - name = "Switch" + str(self.tasmota_switch_index) - end - webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) - end - ############################################################# - ############################################################# - -end -matter.Plugin_Sensor_Waterleak = Matter_Plugin_Sensor_Waterleak diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Contact.be similarity index 56% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Contact.be index 9057ace50..abb2fa7f7 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Contact.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Sensor_Contact.be - implements the behavior for a Contact Sensor +# Matter_Plugin_3_Sensor_Contact.be - implements the behavior for a Contact Sensor # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -23,57 +23,29 @@ import matter #@ solidify:Matter_Plugin_Sensor_Contact,weak -class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device +class Matter_Plugin_Sensor_Contact : Matter_Plugin_Sensor_Boolean static var TYPE = "contact" # name of the plug-in in json static var DISPLAY_NAME = "Contact" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) - static var ARG_HINT = "Switch number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var UPDATE_TIME = 750 # update every 750ms + # static var ARG = "switch" # additional argument name (or empty if none) + # static var ARG_HINT = "Switch number" + # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + # static var UPDATE_TIME = 750 # update every 750ms static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Contact") static var CLUSTERS = matter.consolidate_clusters(_class, { 0x0045: [0], # Boolean State p.70 - no writable }) static var TYPES = { 0x0015: 1 } # Contact Sensor, rev 1 - var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_contact + # var tasmota_switch_index # Switch number in Tasmota (one based) + # var shadow_bool_value ############################################################# - # Constructor - def init(device, endpoint, config) - super(self).init(device, endpoint, config) - self.shadow_contact = false - end - - ############################################################# - # parse_configuration + # value_updated # - # Parse configuration map - def parse_configuration(config) - self.tasmota_switch_index = int(config.find(self.ARG #-'switch'-#, 1)) - if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end - end - - ############################################################# - # Update shadow - # - def update_shadow() - super(self).update_shadow() - if !self.VIRTUAL - var switch_str = "Switch" + str(self.tasmota_switch_index) - - var j = tasmota.cmd("Status 10", true) - if j != nil j = j.find("StatusSNS") end - if j != nil && j.contains(switch_str) - var state = (j.find(switch_str) == "ON") - - if (self.shadow_contact != state) - self.attribute_updated(0x0045, 0x0000) - end - self.shadow_contact = state - end - end + # This is triggered when a new value is changed, for subscription + # This method is meant to be overloaded and maximize shared code + def value_updated() + self.attribute_updated(0x0045, 0x0000) end ############################################################# @@ -87,7 +59,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device # ==================================================================================================== if cluster == 0x0045 # ========== Boolean State ========== if attribute == 0x0000 # ---------- StateValue / bool ---------- - return tlv_solo.set_or_nil(TLV.BOOL, self.shadow_contact) + return tlv_solo.set_or_nil(TLV.BOOL, self.shadow_bool_value) end end @@ -99,30 +71,13 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device # # Update internal state for virtual devices def update_virtual(payload) - self.shadow_contact = self._parse_update_virtual(payload, "Contact", self.shadow_contact, bool, 0x0045, 0x0000) + self.shadow_bool_value = self._parse_update_virtual(payload, "Contact", self.shadow_bool_value, bool, 0x0045, 0x0000) super(self).update_virtual(payload) end ############################################################# # For Bridge devices ############################################################# - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_status(data, index) - if index == 10 # Status 10 - var state = false - - state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") - - if self.shadow_contact != nil && self.shadow_contact != bool(state) - self.attribute_updated(0x0045, 0x0000) - end - self.shadow_contact = state - end - end - ############################################################# # web_values # @@ -130,7 +85,7 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device def web_values() import webserver self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_contact))) + webserver.content_send(format("Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_bool_value))) end # Show prefix before web value diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Occupancy.be similarity index 56% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Occupancy.be index f786bc82c..c30193c9e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Occupancy.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Sensor_Occupancy.be - implements the behavior for a Occupany Switch +# Matter_Plugin_3_Sensor_Occupancy.be - implements the behavior for a Occupany Switch # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -23,57 +23,29 @@ import matter #@ solidify:Matter_Plugin_Sensor_Occupancy,weak -class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device +class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Sensor_Boolean static var TYPE = "occupancy" # name of the plug-in in json static var DISPLAY_NAME = "Occupancy" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) - static var ARG_HINT = "Switch number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var UPDATE_TIME = 750 # update every 750ms + # static var ARG = "switch" # additional argument name (or empty if none) + # static var ARG_HINT = "Switch number" + # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + # static var UPDATE_TIME = 750 # update every 750ms static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Occupancy") static var CLUSTERS = matter.consolidate_clusters(_class, { 0x0406: [0,1,2], # Occupancy Sensing p.105 - no writable }) static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2 - var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_occupancy + # var tasmota_switch_index # Switch number in Tasmota (one based) + # var shadow_bool_value ############################################################# - # Constructor - def init(device, endpoint, config) - super(self).init(device, endpoint, config) - self.shadow_occupancy = false - end - - ############################################################# - # parse_configuration + # value_updated # - # Parse configuration map - def parse_configuration(config) - self.tasmota_switch_index = int(config.find(self.ARG #-'relay'-#, 1)) - if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end - end - - ############################################################# - # Update shadow - # - def update_shadow() - super(self).update_shadow() - if !self.VIRTUAL - var switch_str = "Switch" + str(self.tasmota_switch_index) - - var j = tasmota.cmd("Status 10", true) - if j != nil j = j.find("StatusSNS") end - if j != nil && j.contains(switch_str) - var state = (j.find(switch_str) == "ON") - - if (self.shadow_occupancy != state) - self.attribute_updated(0x0406, 0x0000) - end - self.shadow_occupancy = state - end - end + # This is triggered when a new value is changed, for subscription + # This method is meant to be overloaded and maximize shared code + def value_updated() + self.attribute_updated(0x0406, 0x0000) end ############################################################# @@ -87,7 +59,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device # ==================================================================================================== if cluster == 0x0406 # ========== Occupancy Sensing ========== if attribute == 0x0000 # ---------- Occupancy / U8 ---------- - return tlv_solo.set_or_nil(TLV.U1, self.shadow_occupancy) + return tlv_solo.set_or_nil(TLV.U1, self.shadow_bool_value) elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ---------- return tlv_solo.set(TLV.U1, 3) # physical contact elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ---------- @@ -103,30 +75,13 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device # # Update internal state for virtual devices def update_virtual(payload) - self.val_onoff = self._parse_update_virtual(payload, "Occupancy", self.val_onoff, bool, 0x0406, 0x0000) + self.shadow_bool_value = self._parse_update_virtual(payload, "Occupancy", self.shadow_bool_value, bool, 0x0406, 0x0000) super(self).update_virtual(payload) end ############################################################# # For Bridge devices ############################################################# - ############################################################# - # Stub for updating shadow values (local copies of what we published to the Matter gateway) - # - # This call is synnchronous and blocking. - def parse_status(data, index) - if index == 10 # Status 10 - var state = false - - state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON") - - if self.shadow_occupancy != nil && self.shadow_occupancy != bool(state) - self.attribute_updated(0x0406, 0x0000) - end - self.shadow_occupancy = state - end - end - ############################################################# # web_values # @@ -134,7 +89,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device def web_values() import webserver self.web_values_prefix() # display '| ' and name if present - webserver.content_send(format("Occupancy%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_occupancy))) + webserver.content_send(format("Occupancy%i %s", self.shadow_bool_value, self.web_value_onoff(self.shadow_occupancy))) end # Show prefix before web value @@ -142,7 +97,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device import webserver var name = self.get_name() if !name - name = "Switch" + str(self.tasmota_switch_index) + name = "Switch" + str(self.shadow_bool_value) end webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_OnOff.be similarity index 60% rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_OnOff.be index 21e0c779b..ae736e5bd 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_OnOff.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Sensor_OnOff.be - implements the behavior for a Occupany Switch +# Matter_Plugin_3_Sensor_OnOff.be - implements the behavior for a Occupany Switch # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -21,49 +21,28 @@ #@ solidify:Matter_Plugin_Sensor_OnOff,weak -class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device +class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Sensor_Boolean static var TYPE = "onoff" # name of the plug-in in json static var DISPLAY_NAME = "OnOff Sensor" # display name of the plug-in - static var ARG = "switch" # additional argument name (or empty if none) - static var ARG_HINT = "Switch number" - static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type - static var UPDATE_TIME = 750 # update every 750ms + # static var ARG = "switch" # additional argument name (or empty if none) + # static var ARG_HINT = "Switch number" + # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + # static var UPDATE_TIME = 750 # update every 750ms static var CLUSTERS = matter.consolidate_clusters(_class, { 0x0006: [0], # On/Off 1.5 p.48 }) static var TYPES = { 0x0850: 2 } # OnOff Sensor, rev 2 - var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_onoff + # var tasmota_switch_index # Switch number in Tasmota (one based) + # var shadow_bool_value ############################################################# - # parse_configuration + # value_updated # - # Parse configuration map - def parse_configuration(config) - self.tasmota_switch_index = int(config.find(self.ARG #-'relay'-#, 1)) - if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end - end - - ############################################################# - # Update shadow - # - def update_shadow() - super(self).update_shadow() - if !self.VIRTUAL - var switch_str = "Switch" + str(self.tasmota_switch_index) - - var j = tasmota.cmd("Status 10", true) - if j != nil j = j.find("StatusSNS") end - if j != nil && j.contains(switch_str) - var state = (j.find(switch_str) == "ON") - - if (self.shadow_onoff != state) - self.attribute_updated(0x0006, 0x0000) - end - self.shadow_onoff = state - end - end + # This is triggered when a new value is changed, for subscription + # This method is meant to be overloaded and maximize shared code + def value_updated() + self.attribute_updated(0x0006, 0x0000) end ############################################################# @@ -78,7 +57,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device if cluster == 0x0006 # ========== On/Off 1.5 p.48 ========== self.update_shadow_lazy() if attribute == 0x0000 # ---------- OnOff / bool ---------- - return tlv_solo.set(TLV.BOOL, self.shadow_onoff) + return tlv_solo.set(TLV.BOOL, self.shadow_bool_value) end end @@ -93,7 +72,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device # # Override the default behavior to use the key `OnOff` instead of `Power` def append_state_json() - return f',"OnOff":{int(self.shadow_onoff)}' + return f',"OnOff":{int(self.shadow_bool_value)}' end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Rain.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Rain.be new file mode 100644 index 000000000..970be52b8 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Rain.be @@ -0,0 +1,105 @@ +# +# Matter_Plugin_3_Sensor_Rain.be - implements the behavior for a Rain Sensor +# +# Copyright (C) 2024 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Sensor_Rain,weak + +class Matter_Plugin_Sensor_Rain : Matter_Plugin_Sensor_Boolean + static var TYPE = "rain" # name of the plug-in in json + static var DISPLAY_NAME = "Rain" # display name of the plug-in + # static var ARG = "switch" # additional argument name (or empty if none) + # static var ARG_HINT = "Switch number" + # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + # static var UPDATE_TIME = 750 # update every 750ms + static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Rain") + static var CLUSTERS = matter.consolidate_clusters(_class, { + 0x0045: [0], # Boolean State p.70 - no writable + }) + # MATTER_WATER_LEAK_DETECTOR_DEVICE_TYPE_ID 0x0043 + static var TYPES = { 0x0044: 1 } # Rain Sensor, rev 1 + + # var tasmota_switch_index # Switch number in Tasmota (one based) + # var shadow_bool_value + + ############################################################# + # value_updated + # + # This is triggered when a new value is changed, for subscription + # This method is meant to be overloaded and maximize shared code + def value_updated() + self.attribute_updated(0x0045, 0x0000) + end + + ############################################################# + # read an attribute + # + def read_attribute(session, ctx, tlv_solo) + var TLV = matter.TLV + var cluster = ctx.cluster + var attribute = ctx.attribute + + # ==================================================================================================== + if cluster == 0x0045 # ========== Boolean State ========== + if attribute == 0x0000 # ---------- StateValue / bool ---------- + return tlv_solo.set(TLV.BOOL, self.shadow_bool_value) + end + + end + return super(self).read_attribute(session, ctx, tlv_solo) + end + + ############################################################# + # update_virtual + # + # Update internal state for virtual devices + def update_virtual(payload) + self.shadow_bool_value = self._parse_update_virtual(payload, "Rain", self.shadow_bool_value, bool, 0x0045, 0x0000) + super(self).update_virtual(payload) + end + + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("Rain%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_bool_value))) + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + if !name + name = "Switch" + str(self.tasmota_switch_index) + end + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + ############################################################# + ############################################################# + +end +matter.Plugin_Sensor_Rain = Matter_Plugin_Sensor_Rain diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be new file mode 100644 index 000000000..3b8242756 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be @@ -0,0 +1,90 @@ +# +# Matter_Plugin_3_Sensor_Waterleak.be - implements the behavior for a Water leak Sensor +# +# Copyright (C) 2024 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Sensor_Waterleak,weak + +class Matter_Plugin_Sensor_Waterleak : Matter_Plugin_Sensor_Boolean + static var TYPE = "waterleak" # name of the plug-in in json + static var DISPLAY_NAME = "Waterleak" # display name of the plug-in + # static var ARG = "switch" # additional argument name (or empty if none) + # static var ARG_HINT = "Switch number" + # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + # static var UPDATE_TIME = 750 # update every 750ms + static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Waterleak") + static var CLUSTERS = matter.consolidate_clusters(_class, { + 0x0045: [0], # Boolean State p.70 - no writable + }) + # MATTER_WATER_LEAK_DETECTOR_DEVICE_TYPE_ID 0x0043 + static var TYPES = { 0x0043: 1 } # Waterleak Sensor, rev 1 + + # var tasmota_switch_index # Switch number in Tasmota (one based) + # var shadow_bool_value + + ############################################################# + # value_updated + # + # This is triggered when a new value is changed, for subscription + # This method is meant to be overloaded and maximize shared code + def value_updated = Matter_Plugin_Sensor_Rain.value_updated + + ############################################################# + # read an attribute + # + def read_attribute = Matter_Plugin_Sensor_Rain.read_attribute + + ############################################################# + # update_virtual + # + # Update internal state for virtual devices + def update_virtual(payload) + self.shadow_bool_value = self._parse_update_virtual(payload, "Waterleak", self.shadow_bool_value, bool, 0x0045, 0x0000) + super(self).update_virtual(payload) + end + + ############################################################# + # For Bridge devices + ############################################################# + ############################################################# + # web_values + # + # Show values of the remote device as HTML + def web_values() + import webserver + self.web_values_prefix() # display '| ' and name if present + webserver.content_send(format("Waterleak%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_bool_value))) + end + + # Show prefix before web value + def web_values_prefix() + import webserver + var name = self.get_name() + if !name + name = "Switch" + str(self.tasmota_switch_index) + end + webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : "")) + end + ############################################################# + ############################################################# + +end +matter.Plugin_Sensor_Waterleak = Matter_Plugin_Sensor_Waterleak diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be new file mode 100644 index 000000000..b9a275eb1 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be @@ -0,0 +1,32 @@ +# +# Matter_Plugin_Bridge_8_Sensor_Rain.be - implements Rain Sensor via HTTP to Tasmota +# +# Copyright (C) 2024 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Bridge_Sensor_Rain,weak + +class Matter_Plugin_Bridge_Sensor_Rain : Matter_Plugin_Sensor_Rain + static var BRIDGE = true + static var TYPE = "http_rain" # name of the plug-in in json + static var UPDATE_TIME = 5000 # update every 5s + static var UPDATE_CMD = "Status 10" # command to send for updates +end +matter.Plugin_Bridge_Sensor_Rain = Matter_Plugin_Bridge_Sensor_Rain diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be new file mode 100644 index 000000000..5e811fae0 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be @@ -0,0 +1,34 @@ + +# +# Matter_Plugin_9_Virt_Sensor_Rain.be - implements the behavior for a Virtual Rain Sensor +# +# Copyright (C) 2024 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Virt_Sensor_Rain,weak + +class Matter_Plugin_Virt_Sensor_Rain : Matter_Plugin_Virt_Sensor_Rain + static var TYPE = "v_rain" # name of the plug-in in json + static var DISPLAY_NAME = "v.Rain" # display name of the plug-in + static var ARG = "" # no arg for virtual device + static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') + static var VIRTUAL = true # virtual device +end +matter.Plugin_Virt_Sensor_Rain = Matter_Plugin_Virt_Sensor_Rain diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be index 63573b214..264435193 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be @@ -22,9 +22,9 @@ import matter # Matter plug-in for core behavior -#@ solidify:Matter_Plugin_Virt_Sensor_Waterleak ,weak +#@ solidify:Matter_Plugin_Virt_Sensor_Waterleak,weak -class Matter_Plugin_Virt_Sensor_Waterleak : Matter_Plugin_Virt_Sensor_Waterleak +class Matter_Plugin_Virt_Sensor_Waterleak : Matter_Plugin_Virt_Sensor_Waterleak static var TYPE = "v_waterleak" # name of the plug-in in json static var DISPLAY_NAME = "v.Waterleak" # display name of the plug-in static var ARG = "" # no arg for virtual device diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index 5a80aeba9..29bf665fa 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -33,14 +33,14 @@ import matter ################################################################################# class Matter_UI static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt" - "|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|waterleak" + "|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|rain|waterleak" "|airquality" "|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3" - "|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow|v_waterleak" + "|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow|v_rain|v_waterleak" "|v_airquality" static var _CLASSES_TYPES2= "|http_relay|http_light0|http_light1|http_light2|http_light3" "|http_temperature|http_pressure|http_illuminance|http_humidity" - "|http_occupancy|http_contact|http_flow|http_waterleak" + "|http_occupancy|http_contact|http_flow|http_rain|http_waterleak" "|http_airquality" var device diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 4321835ea..6fed7984d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -7,10 +7,10 @@ extern const bclass be_class_Matter_Plugin; /******************************************************************** -** Solidified function: invoke_request +** Solidified function: write_attribute ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_invoke_request, /* name */ +be_local_closure(class_Matter_Plugin_write_attribute, /* name */ be_nested_proto( 5, /* nstack */ 4, /* argc */ @@ -21,7 +21,7 @@ be_local_closure(class_Matter_Plugin_invoke_request, /* name */ &be_class_Matter_Plugin, 0, /* has constants */ NULL, /* no const */ - be_str_weak(invoke_request), + be_str_weak(write_attribute), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x4C100000, // 0000 LDNIL R4 @@ -32,6 +32,33 @@ be_local_closure(class_Matter_Plugin_invoke_request, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: append_state_json +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_append_state_json, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(), + }), + be_str_weak(append_state_json), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80060000, // 0000 RET 1 K0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: state_json ********************************************************************/ @@ -90,6 +117,176 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: timed_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_timed_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(timed_request), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_sensors +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(parse_sensors), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + }), + be_str_weak(get_endpoint), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_virtual, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_conf_to_string +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(ui_conf_to_string), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x780E0006, // 0002 JMPF R3 #000A + 0x60100008, // 0003 GETGBL R4 G8 + 0x8C140302, // 0004 GETMET R5 R1 K2 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200003, // 0006 LDCONST R8 K3 + 0x7C140600, // 0007 CALL R5 3 + 0x7C100200, // 0008 CALL R4 1 + 0x70020000, // 0009 JMP #000B + 0x58100003, // 000A LDCONST R4 K3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: ack_request ********************************************************************/ @@ -134,25 +331,112 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ /******************************************************************** -** Solidified function: write_attribute +** Solidified function: get_cluster_list_sorted ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_write_attribute, /* name */ +be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(k2l), + /* K2 */ be_nested_str_weak(clusters), + }), + be_str_weak(get_cluster_list_sorted), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains_cluster +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ be_nested_proto( 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), + }), + be_str_weak(contains_cluster), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_init, /* name */ + be_nested_proto( + 8, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(write_attribute), + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(clusters), + /* K3 */ be_nested_str_weak(get_clusters), + /* K4 */ be_nested_str_weak(parse_configuration), + /* K5 */ be_nested_str_weak(node_label), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(), + }), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 + ( &(const binstruction[14]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x8C100103, // 0002 GETMET R4 R0 K3 + 0x7C100200, // 0003 CALL R4 1 + 0x90020404, // 0004 SETMBR R0 K2 R4 + 0x8C100104, // 0005 GETMET R4 R0 K4 + 0x5C180600, // 0006 MOVE R6 R3 + 0x7C100400, // 0007 CALL R4 2 + 0x8C100706, // 0008 GETMET R4 R3 K6 + 0x58180007, // 0009 LDCONST R6 K7 + 0x581C0008, // 000A LDCONST R7 K8 + 0x7C100600, // 000B CALL R4 3 + 0x90020A04, // 000C SETMBR R0 K5 R4 + 0x80000000, // 000D RET 0 }) ) ); @@ -160,54 +444,37 @@ be_local_closure(class_Matter_Plugin_write_attribute, /* name */ /******************************************************************** -** Solidified function: consolidate_update_commands +** Solidified function: ui_string_to_conf ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ +be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ + 8, /* nstack */ + 3, /* argc */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(ARG_TYPE), }), - be_str_weak(consolidate_update_commands), + be_str_weak(ui_string_to_conf), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: append_state_json -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_append_state_json, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(), - }), - be_str_weak(append_state_json), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80060000, // 0000 RET 1 K0 + ( &(const binstruction[10]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x780A0004, // 0003 JMPF R2 #0009 + 0x78120003, // 0004 JMPF R4 #0009 + 0x5C180A00, // 0005 MOVE R6 R5 + 0x5C1C0400, // 0006 MOVE R7 R2 + 0x7C180200, // 0007 CALL R6 1 + 0x98040806, // 0008 SETIDX R1 R4 R6 + 0x80040200, // 0009 RET 1 R1 }) ) ); @@ -278,190 +545,13 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ /******************************************************************** -** Solidified function: has +** Solidified function: subscribe_event ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_has, /* name */ +be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ be_nested_proto( 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(endpoints), - /* K3 */ be_nested_str_weak(find), - }), - be_str_weak(has), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0006, // 0004 JMPF R3 #000C - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x5C140400, // 0007 MOVE R5 R2 - 0x7C0C0400, // 0008 CALL R3 2 - 0x4C100000, // 0009 LDNIL R4 - 0x200C0604, // 000A NE R3 R3 R4 - 0x740E0000, // 000B JMPT R3 #000D - 0x500C0001, // 000C LDBOOL R3 0 1 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x80040600, // 000E RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow_lazy -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(update_shadow_lazy), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x88080500, // 0002 GETMBR R2 R2 K0 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060004, // 0004 JMPF R1 #000A - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x7C040200, // 0006 CALL R1 1 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88040300, // 0008 GETMBR R1 R1 K0 - 0x90020001, // 0009 SETMBR R0 K0 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_name -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_set_name, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), - /* K1 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(set_name), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0003, // 0002 JMPF R2 #0007 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x54120038, // 0004 LDINT R4 57 - 0x54160004, // 0005 LDINT R5 5 - 0x7C080600, // 0006 CALL R2 3 - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040008, // 0000 GETGBL R1 G8 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x88040300, // 0001 GETMBR R1 R1 K0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: timed_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_timed_request, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -469,11 +559,11 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ &be_class_Matter_Plugin, 0, /* has constants */ NULL, /* no const */ - be_str_weak(timed_request), + be_str_weak(subscribe_event), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 }) ) ); @@ -481,251 +571,33 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: get_attribute_list ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_init, /* name */ +be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(clusters), - /* K3 */ be_nested_str_weak(consolidate_clusters), - /* K4 */ be_nested_str_weak(parse_configuration), - /* K5 */ be_nested_str_weak(node_label), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x8C100103, // 0002 GETMET R4 R0 K3 - 0x7C100200, // 0003 CALL R4 1 - 0x90020404, // 0004 SETMBR R0 K2 R4 - 0x8C100104, // 0005 GETMET R4 R0 K4 - 0x5C180600, // 0006 MOVE R6 R3 - 0x7C100400, // 0007 CALL R4 2 - 0x8C100706, // 0008 GETMET R4 R3 K6 - 0x58180007, // 0009 LDCONST R6 K7 - 0x581C0008, // 000A LDCONST R7 K8 - 0x7C100600, // 000B CALL R4 3 - 0x90020A04, // 000C SETMBR R0 K5 R4 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_local_device -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_is_local_device, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - }), - be_str_weak(is_local_device), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x50040001, // 0002 LDBOOL R1 0 1 - 0x50040200, // 0003 LDBOOL R1 1 0 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ui_string_to_conf -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(ARG_TYPE), - }), - be_str_weak(ui_string_to_conf), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x780A0004, // 0003 JMPF R2 #0009 - 0x78120003, // 0004 JMPF R4 #0009 - 0x5C180A00, // 0005 MOVE R6 R5 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C180200, // 0007 CALL R6 1 - 0x98040806, // 0008 SETIDX R1 R4 R6 - 0x80040200, // 0009 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_cluster_list_sorted -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(k2l), - /* K2 */ be_nested_str_weak(clusters), - }), - be_str_weak(get_cluster_list_sorted), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ui_conf_to_string -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(ui_conf_to_string), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x780E0006, // 0002 JMPF R3 #000A - 0x60100008, // 0003 GETGBL R4 G8 - 0x8C140302, // 0004 GETMET R5 R1 K2 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200003, // 0006 LDCONST R8 K3 - 0x7C140600, // 0007 CALL R5 3 - 0x7C100200, // 0008 CALL R4 1 - 0x70020000, // 0009 JMP #000B - 0x58100003, // 000A LDCONST R4 K3 - 0x80040800, // 000B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attribute_updated -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(attribute_updated), - /* K2 */ be_nested_str_weak(endpoint), - }), - be_str_weak(attribute_updated), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_virtual, /* name */ - be_nested_proto( - 2, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(update_virtual), + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), + }), + be_str_weak(get_attribute_list), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140012, // 0003 GETGBL R5 G18 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -778,24 +650,27 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ /******************************************************************** -** Solidified function: parse_configuration +** Solidified function: consolidate_update_commands ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ +be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ be_nested_proto( 2, /* nstack */ - 2, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_configuration), + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), + }), + be_str_weak(consolidate_update_commands), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -803,10 +678,87 @@ be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ /******************************************************************** -** Solidified function: consolidate_clusters +** Solidified function: subscribe_attribute ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */ +be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(subscribe_attribute), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), + }), + be_str_weak(contains_attribute), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x7812000C, // 0006 JMPF R4 #0014 + 0x58100002, // 0007 LDCONST R4 K2 + 0x6014000C, // 0008 GETGBL R5 G12 + 0x5C180600, // 0009 MOVE R6 R3 + 0x7C140200, // 000A CALL R5 1 + 0x14140805, // 000B LT R5 R4 R5 + 0x78160006, // 000C JMPF R5 #0014 + 0x94140604, // 000D GETIDX R5 R3 R4 + 0x1C140A02, // 000E EQ R5 R5 R2 + 0x78160001, // 000F JMPF R5 #0012 + 0x50140200, // 0010 LDBOOL R5 1 0 + 0x80040A00, // 0011 RET 1 R5 + 0x00100903, // 0012 ADD R4 R4 K3 + 0x7001FFF3, // 0013 JMP #0008 + 0x50100000, // 0014 LDBOOL R4 0 0 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_clusters +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_clusters, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -819,7 +771,7 @@ be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(CLUSTERS), }), - be_str_weak(consolidate_clusters), + be_str_weak(get_clusters), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -830,6 +782,33 @@ be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040008, // 0000 GETGBL R1 G8 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_name ********************************************************************/ @@ -858,145 +837,6 @@ be_local_closure(class_Matter_Plugin_get_name, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - }), - be_str_weak(get_endpoint), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_event -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(subscribe_event), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_event -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_read_event, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(read_event), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_sensors -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_sensors), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_attribute_list -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), - }), - be_str_weak(get_attribute_list), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140012, // 0003 GETGBL R5 G18 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: publish_command ********************************************************************/ @@ -1078,63 +918,12 @@ be_local_closure(class_Matter_Plugin_publish_command, /* name */ /******************************************************************** -** Solidified function: contains_attribute +** Solidified function: set_name ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ +be_local_closure(class_Matter_Plugin_set_name, /* name */ be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - }), - be_str_weak(contains_attribute), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x20100604, // 0005 NE R4 R3 R4 - 0x7812000C, // 0006 JMPF R4 #0014 - 0x58100002, // 0007 LDCONST R4 K2 - 0x6014000C, // 0008 GETGBL R5 G12 - 0x5C180600, // 0009 MOVE R6 R3 - 0x7C140200, // 000A CALL R5 1 - 0x14140805, // 000B LT R5 R4 R5 - 0x78160006, // 000C JMPF R5 #0014 - 0x94140604, // 000D GETIDX R5 R3 R4 - 0x1C140A02, // 000E EQ R5 R5 R2 - 0x78160001, // 000F JMPF R5 #0012 - 0x50140200, // 0010 LDBOOL R5 1 0 - 0x80040A00, // 0011 RET 1 R5 - 0x00100903, // 0012 ADD R4 R4 K3 - 0x7001FFF3, // 0013 JMP #0008 - 0x50100000, // 0014 LDBOOL R4 0 0 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: contains_cluster -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ - be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1143,17 +932,210 @@ be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ &be_class_Matter_Plugin, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), + /* K0 */ be_nested_str_weak(node_label), + /* K1 */ be_nested_str_weak(attribute_updated), }), - be_str_weak(contains_cluster), + be_str_weak(set_name), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x54120038, // 0004 LDINT R4 57 + 0x54160004, // 0005 LDINT R5 5 + 0x7C080600, // 0006 CALL R2 3 + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow_lazy +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(update_shadow_lazy), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88080500, // 0002 GETMBR R2 R2 K0 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060004, // 0004 JMPF R1 #000A + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x7C040200, // 0006 CALL R1 1 + 0x88040101, // 0007 GETMBR R1 R0 K1 + 0x88040300, // 0008 GETMBR R1 R1 K0 + 0x90020001, // 0009 SETMBR R0 K0 R1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_event +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_read_event, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(read_event), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_shadow, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x88040300, // 0001 GETMBR R1 R1 K0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_invoke_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(attribute_updated), + /* K2 */ be_nested_str_weak(endpoint), + }), + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_local_device +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_is_local_device, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + }), + be_str_weak(is_local_device), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x50040001, // 0002 LDBOOL R1 0 1 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x80040200, // 0004 RET 1 R1 }) ) ); @@ -1368,85 +1350,56 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: subscribe_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(subscribe_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Plugin ********************************************************************/ be_local_class(Matter_Plugin, 6, NULL, - be_nested_map(52, + be_nested_map(51, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(subscribe_attribute, 34), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, - { be_const_key_weak(state_json, 38), be_const_closure(class_Matter_Plugin_state_json_closure) }, - { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, - { be_const_key_weak(device, -1), be_const_var(1) }, - { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, - { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, - { be_const_key_weak(is_local_device, 2), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, - { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, - { be_const_key_weak(BRIDGE, -1), be_const_bool(0) }, + { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(258, -1), be_const_int(5) }, + { be_const_key_int(49, -1), be_const_int(4) }, + })) ) } )) }, + { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, + { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) }, + { be_const_key_weak(read_attribute, 9), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, + { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, + { be_const_key_weak(clusters, -1), be_const_var(3) }, + { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(CLUSTERS, 51), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(_parse_update_virtual, 2), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, + { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, + { be_const_key_weak(get_endpoint, 19), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak() }, + { be_const_key_weak(UPDATE_COMMANDS, 47), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(0, ( (struct bvalue*) &(const bvalue[]) { })) ) } )) }, - { be_const_key_weak(every_250ms, 0), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, - { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, + { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, + { be_const_key_weak(every_250ms, 34), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, + { be_const_key_weak(device, -1), be_const_var(1) }, + { be_const_key_weak(consolidate_update_commands, 48), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, + { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, { be_const_key_weak(get_attribute_list, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_closure) }, - { be_const_key_weak(has, 5), be_const_closure(class_Matter_Plugin_has_closure) }, + { be_const_key_weak(write_attribute, 10), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(contains_attribute, -1), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, + { be_const_key_weak(read_event, 38), be_const_closure(class_Matter_Plugin_read_event_closure) }, + { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, + { be_const_key_weak(contains_cluster, 23), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, + { be_const_key_weak(get_clusters, -1), be_const_closure(class_Matter_Plugin_get_clusters_closure) }, { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) }, - { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, - { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, - { be_const_key_weak(endpoint, 6), be_const_var(2) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, - { be_const_key_weak(clusters, -1), be_const_var(3) }, - { be_const_key_weak(VIRTUAL, 9), be_const_bool(0) }, - { be_const_key_weak(CLUSTER_REVISIONS, 23), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(get_name, 30), be_const_closure(class_Matter_Plugin_get_name_closure) }, + { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, + { be_const_key_weak(TYPE, 6), be_nested_str_weak() }, + { be_const_key_weak(tick, -1), be_const_var(4) }, + { be_const_key_weak(CLUSTER_REVISIONS, 24), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(25, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, -1), be_const_int(5) }, @@ -1475,42 +1428,44 @@ be_local_class(Matter_Plugin, { be_const_key_int(6, -1), be_const_int(5) }, { be_const_key_int(1024, -1), be_const_int(3) }, })) ) } )) }, - { be_const_key_weak(consolidate_update_commands, 17), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, - { be_const_key_weak(ui_conf_to_string, -1), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, - { be_const_key_weak(_parse_update_virtual, 21), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, - { be_const_key_weak(update_virtual, 36), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, - { be_const_key_weak(invoke_request, 27), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, - { be_const_key_weak(node_label, -1), be_const_var(5) }, - { be_const_key_weak(update_shadow, 30), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, - { be_const_key_weak(consolidate_clusters, -1), be_const_closure(class_Matter_Plugin_consolidate_clusters_closure) }, - { be_const_key_weak(get_name, -1), be_const_closure(class_Matter_Plugin_get_name_closure) }, { be_const_key_weak(update_next, -1), be_const_var(0) }, - { be_const_key_weak(get_endpoint, -1), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, - { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(258, -1), be_const_int(5) }, - { be_const_key_int(49, -1), be_const_int(4) }, - })) ) } )) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak() }, - { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak() }, - { be_const_key_weak(read_event, -1), be_const_closure(class_Matter_Plugin_read_event_closure) }, { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(29, -1), be_const_nil() }, })) ) } )) }, - { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, - { be_const_key_weak(DISPLAY_NAME, 14), be_nested_str_weak() }, - { be_const_key_weak(ui_string_to_conf, 13), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, - { be_const_key_weak(contains_attribute, -1), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, - { be_const_key_weak(tick, -1), be_const_var(4) }, - { be_const_key_weak(contains_cluster, -1), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, - { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, + { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, + { be_const_key_weak(ui_conf_to_string, -1), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, + { be_const_key_weak(parse_sensors, 14), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, + { be_const_key_weak(CLUSTERS, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) }, + { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak() }, + { be_const_key_weak(node_label, 7), be_const_var(5) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, + { be_const_key_weak(get_cluster_list_sorted, 39), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, + { be_const_key_weak(endpoint, -1), be_const_var(2) }, + { be_const_key_weak(BRIDGE, 0), be_const_bool(0) }, })), be_str_weak(Matter_Plugin) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h new file mode 100644 index 000000000..81f010d5b --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h @@ -0,0 +1,301 @@ +/* Solidification of Matter_Plugin_2_Sensor_Boolean.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; +be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Boolean, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_switch_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x18080504, // 0008 LE R2 R2 K4 + 0x780A0000, // 0009 JMPF R2 #000B + 0x90020103, // 000A SETMBR R0 K0 K3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: value_updated +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; +be_local_closure(class_Matter_Plugin_Sensor_Boolean_value_updated, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Boolean, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(value_updated), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_Boolean__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; +be_local_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Boolean, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(update_shadow), + /* K1 */ be_nested_str_weak(VIRTUAL), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(cmd), + /* K6 */ be_nested_str_weak(Status_X2010), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(StatusSNS), + /* K9 */ be_nested_str_weak(contains), + /* K10 */ be_nested_str_weak(ON), + /* K11 */ be_nested_str_weak(shadow_bool_value), + /* K12 */ be_nested_str_weak(value_updated), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0x60040003, // 0000 GETGBL R1 G3 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x7C040200, // 0004 CALL R1 1 + 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x74060020, // 0006 JMPT R1 #0028 + 0x60040008, // 0007 GETGBL R1 G8 + 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x7C040200, // 0009 CALL R1 1 + 0x00060401, // 000A ADD R1 K2 R1 + 0xB80A0800, // 000B GETNGBL R2 K4 + 0x8C080505, // 000C GETMET R2 R2 K5 + 0x58100006, // 000D LDCONST R4 K6 + 0x50140200, // 000E LDBOOL R5 1 0 + 0x7C080600, // 000F CALL R2 3 + 0x4C0C0000, // 0010 LDNIL R3 + 0x200C0403, // 0011 NE R3 R2 R3 + 0x780E0003, // 0012 JMPF R3 #0017 + 0x8C0C0507, // 0013 GETMET R3 R2 K7 + 0x58140008, // 0014 LDCONST R5 K8 + 0x7C0C0400, // 0015 CALL R3 2 + 0x5C080600, // 0016 MOVE R2 R3 + 0x4C0C0000, // 0017 LDNIL R3 + 0x200C0403, // 0018 NE R3 R2 R3 + 0x780E000D, // 0019 JMPF R3 #0028 + 0x8C0C0509, // 001A GETMET R3 R2 K9 + 0x5C140200, // 001B MOVE R5 R1 + 0x7C0C0400, // 001C CALL R3 2 + 0x780E0009, // 001D JMPF R3 #0028 + 0x8C0C0507, // 001E GETMET R3 R2 K7 + 0x5C140200, // 001F MOVE R5 R1 + 0x7C0C0400, // 0020 CALL R3 2 + 0x1C0C070A, // 0021 EQ R3 R3 K10 + 0x8810010B, // 0022 GETMBR R4 R0 K11 + 0x20100803, // 0023 NE R4 R4 R3 + 0x78120001, // 0024 JMPF R4 #0027 + 0x8C10010C, // 0025 GETMET R4 R0 K12 + 0x7C100200, // 0026 CALL R4 1 + 0x90021603, // 0027 SETMBR R0 K11 R3 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; +be_local_closure(class_Matter_Plugin_Sensor_Boolean_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Boolean, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_bool_value), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x50100000, // 0008 LDBOOL R4 0 0 + 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; +be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_status, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Boolean, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Switch), + /* K2 */ be_nested_str_weak(tasmota_switch_index), + /* K3 */ be_nested_str_weak(ON), + /* K4 */ be_nested_str_weak(shadow_bool_value), + /* K5 */ be_nested_str_weak(value_updated), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x540E0009, // 0000 LDINT R3 10 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0015, // 0002 JMPF R3 #0019 + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x60180008, // 0005 GETGBL R6 G8 + 0x881C0102, // 0006 GETMBR R7 R0 K2 + 0x7C180200, // 0007 CALL R6 1 + 0x001A0206, // 0008 ADD R6 K1 R6 + 0x7C100400, // 0009 CALL R4 2 + 0x1C100903, // 000A EQ R4 R4 K3 + 0x5C0C0800, // 000B MOVE R3 R4 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x4C140000, // 000D LDNIL R5 + 0x20100805, // 000E NE R4 R4 R5 + 0x78120007, // 000F JMPF R4 #0018 + 0x88100104, // 0010 GETMBR R4 R0 K4 + 0x60140017, // 0011 GETGBL R5 G23 + 0x5C180600, // 0012 MOVE R6 R3 + 0x7C140200, // 0013 CALL R5 1 + 0x20100805, // 0014 NE R4 R4 R5 + 0x78120001, // 0015 JMPF R4 #0018 + 0x8C100105, // 0016 GETMET R4 R0 K5 + 0x7C100200, // 0017 CALL R4 1 + 0x90020803, // 0018 SETMBR R0 K4 R3 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Sensor_Boolean +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_class(Matter_Plugin_Sensor_Boolean, + 2, + &be_class_Matter_Plugin_Device, + be_nested_map(11, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(shadow_bool_value, -1), be_const_var(1) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Sensor_Boolean_parse_status_closure) }, + { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Boolean_value_updated_closure) }, + { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_Boolean__X3Clambda_X3E_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow_closure) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) }, + { be_const_key_weak(init, 8), be_const_closure(class_Matter_Plugin_Sensor_Boolean_init_closure) }, + { be_const_key_weak(parse_configuration, 2), be_const_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration_closure) }, + })), + be_str_weak(Matter_Plugin_Sensor_Boolean) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h deleted file mode 100644 index 2973b20d5..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h +++ /dev/null @@ -1,594 +0,0 @@ -/* Solidification of Matter_Plugin_2_Sensor_Waterleak.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(BOOL), - /* K7 */ be_nested_str_weak(shadow_leak), - /* K8 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0044, // 0004 LDINT R7 69 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 - 0x88280107, // 000B GETMBR R10 R0 K7 - 0x7C1C0600, // 000C CALL R7 3 - 0x80040E00, // 000D RET 1 R7 - 0x601C0003, // 000E GETGBL R7 G3 - 0x5C200000, // 000F MOVE R8 R0 - 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F08, // 0011 GETMET R7 R7 K8 - 0x5C240200, // 0012 MOVE R9 R1 - 0x5C280400, // 0013 MOVE R10 R2 - 0x5C2C0600, // 0014 MOVE R11 R3 - 0x7C1C0800, // 0015 CALL R7 4 - 0x80040E00, // 0016 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_leak), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), - be_str_weak(web_values_prefix), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 - 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 - 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 - 0x5C240400, // 000F MOVE R9 R2 - 0x7C1C0400, // 0010 CALL R7 2 - 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 - 0x7C140400, // 0013 CALL R5 2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X2010), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(contains), - /* K10 */ be_nested_str_weak(ON), - /* K11 */ be_nested_str_weak(shadow_leak), - /* K12 */ be_nested_str_weak(attribute_updated), - /* K13 */ be_const_int(0), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x74060022, // 0006 JMPT R1 #002A - 0x60040008, // 0007 GETGBL R1 G8 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x7C040200, // 0009 CALL R1 1 - 0x00060401, // 000A ADD R1 K2 R1 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x50140200, // 000E LDBOOL R5 1 0 - 0x7C080600, // 000F CALL R2 3 - 0x4C0C0000, // 0010 LDNIL R3 - 0x200C0403, // 0011 NE R3 R2 R3 - 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0507, // 0013 GETMET R3 R2 K7 - 0x58140008, // 0014 LDCONST R5 K8 - 0x7C0C0400, // 0015 CALL R3 2 - 0x5C080600, // 0016 MOVE R2 R3 - 0x4C0C0000, // 0017 LDNIL R3 - 0x200C0403, // 0018 NE R3 R2 R3 - 0x780E000F, // 0019 JMPF R3 #002A - 0x8C0C0509, // 001A GETMET R3 R2 K9 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E000B, // 001D JMPF R3 #002A - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x1C0C070A, // 0021 EQ R3 R3 K10 - 0x8810010B, // 0022 GETMBR R4 R0 K11 - 0x20100803, // 0023 NE R4 R4 R3 - 0x78120003, // 0024 JMPF R4 #0029 - 0x8C10010C, // 0025 GETMET R4 R0 K12 - 0x541A0044, // 0026 LDINT R6 69 - 0x581C000D, // 0027 LDCONST R7 K13 - 0x7C100600, // 0028 CALL R4 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Waterleak), - /* K2 */ be_nested_str_weak(shadow_leak), - /* K3 */ be_nested_str_weak(attribute_updated), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0403, // 0004 NE R3 R2 R3 - 0x780E000B, // 0005 JMPF R3 #0012 - 0x600C0017, // 0006 GETGBL R3 G23 - 0x5C100400, // 0007 MOVE R4 R2 - 0x7C0C0200, // 0008 CALL R3 1 - 0x5C080600, // 0009 MOVE R2 R3 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x200C0602, // 000B NE R3 R3 R2 - 0x780E0004, // 000C JMPF R3 #0012 - 0x8C0C0103, // 000D GETMET R3 R0 K3 - 0x54160044, // 000E LDINT R5 69 - 0x58180004, // 000F LDCONST R6 K4 - 0x7C0C0600, // 0010 CALL R3 3 - 0x90020402, // 0011 SETMBR R0 K2 R2 - 0x600C0003, // 0012 GETGBL R3 G3 - 0x5C100000, // 0013 MOVE R4 R0 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0705, // 0015 GETMET R3 R3 K5 - 0x5C140200, // 0016 MOVE R5 R1 - 0x7C0C0400, // 0017 CALL R3 2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_status -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_parse_status, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Switch), - /* K2 */ be_nested_str_weak(tasmota_switch_index), - /* K3 */ be_nested_str_weak(ON), - /* K4 */ be_nested_str_weak(shadow_leak), - /* K5 */ be_nested_str_weak(attribute_updated), - /* K6 */ be_const_int(0), - }), - be_str_weak(parse_status), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E0009, // 0000 LDINT R3 10 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0017, // 0002 JMPF R3 #001B - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x60180008, // 0005 GETGBL R6 G8 - 0x881C0102, // 0006 GETMBR R7 R0 K2 - 0x7C180200, // 0007 CALL R6 1 - 0x001A0206, // 0008 ADD R6 K1 R6 - 0x7C100400, // 0009 CALL R4 2 - 0x1C100903, // 000A EQ R4 R4 K3 - 0x5C0C0800, // 000B MOVE R3 R4 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120009, // 000F JMPF R4 #001A - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x60140017, // 0011 GETGBL R5 G23 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C140200, // 0013 CALL R5 1 - 0x20100805, // 0014 NE R4 R4 R5 - 0x78120003, // 0015 JMPF R4 #001A - 0x8C100105, // 0016 GETMET R4 R0 K5 - 0x541A0044, // 0017 LDINT R6 69 - 0x581C0006, // 0018 LDCONST R7 K6 - 0x7C100600, // 0019 CALL R4 3 - 0x90020803, // 001A SETMBR R0 K4 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; -be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Waterleak_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_leak), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 - 0x7C1C0400, // 0009 CALL R7 2 - 0x7C100600, // 000A CALL R4 3 - 0x7C080400, // 000B CALL R2 2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Sensor_Waterleak -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; -be_local_class(Matter_Plugin_Sensor_Waterleak, - 2, - &be_class_Matter_Plugin_Device, - be_nested_map(19, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute_closure) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(67, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(tasmota_switch_index, 7), be_const_var(0) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(1, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(Waterleak), - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_init_closure) }, - { be_const_key_weak(shadow_leak, 6), be_const_var(1) }, - { be_const_key_weak(web_values, 18), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_closure) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration_closure) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix_closure) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual_closure) }, - { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_parse_status_closure) }, - { be_const_key_weak(ARG_HINT, 4), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(UPDATE_TIME, 2), be_const_int(750) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(waterleak) }, - { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) }, - })), - be_str_weak(Matter_Plugin_Sensor_Waterleak) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h similarity index 55% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h index 3f24a0ffe..4d5232838 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Plugin_2_Sensor_Contact.h */ +/* Solidification of Matter_Plugin_3_Sensor_Contact.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ @@ -6,6 +6,52 @@ extern const bclass be_class_Matter_Plugin_Sensor_Contact; +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Contact; +be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Contact, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Contact), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x88180100, // 0003 GETMBR R6 R0 K0 + 0x601C0017, // 0004 GETGBL R7 G23 + 0x54220044, // 0005 LDINT R8 69 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x60080003, // 0009 GETGBL R2 G3 + 0x5C0C0000, // 000A MOVE R3 R0 + 0x7C080200, // 000B CALL R2 1 + 0x8C080504, // 000C GETMET R2 R2 K4 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -28,7 +74,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(set_or_nil), /* K6 */ be_nested_str_weak(BOOL), - /* K7 */ be_nested_str_weak(shadow_contact), + /* K7 */ be_nested_str_weak(shadow_bool_value), /* K8 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), @@ -64,37 +110,44 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: web_values ********************************************************************/ extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_init, /* name */ +be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 10, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Contact, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_contact), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(Contact_X25i_X20_X25s), + /* K4 */ be_nested_str_weak(tasmota_switch_index), + /* K5 */ be_nested_str_weak(web_value_onoff), + /* K6 */ be_nested_str_weak(shadow_bool_value), }), - be_str_weak(init), + be_str_weak(web_values), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 + ( &(const binstruction[13]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x8C1C0105, // 0007 GETMET R7 R0 K5 + 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C100600, // 000A CALL R4 3 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 }) ) ); @@ -157,12 +210,12 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name /******************************************************************** -** Solidified function: update_shadow +** Solidified function: value_updated ********************************************************************/ extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_update_shadow, /* name */ +be_local_closure(class_Matter_Plugin_Sensor_Contact_value_updated, /* name */ be_nested_proto( - 8, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -170,288 +223,18 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_update_shadow, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Contact, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X2010), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(contains), - /* K10 */ be_nested_str_weak(ON), - /* K11 */ be_nested_str_weak(shadow_contact), - /* K12 */ be_nested_str_weak(attribute_updated), - /* K13 */ be_const_int(0), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), }), - be_str_weak(update_shadow), + be_str_weak(value_updated), &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x74060022, // 0006 JMPT R1 #002A - 0x60040008, // 0007 GETGBL R1 G8 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x7C040200, // 0009 CALL R1 1 - 0x00060401, // 000A ADD R1 K2 R1 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x50140200, // 000E LDBOOL R5 1 0 - 0x7C080600, // 000F CALL R2 3 - 0x4C0C0000, // 0010 LDNIL R3 - 0x200C0403, // 0011 NE R3 R2 R3 - 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0507, // 0013 GETMET R3 R2 K7 - 0x58140008, // 0014 LDCONST R5 K8 - 0x7C0C0400, // 0015 CALL R3 2 - 0x5C080600, // 0016 MOVE R2 R3 - 0x4C0C0000, // 0017 LDNIL R3 - 0x200C0403, // 0018 NE R3 R2 R3 - 0x780E000F, // 0019 JMPF R3 #002A - 0x8C0C0509, // 001A GETMET R3 R2 K9 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E000B, // 001D JMPF R3 #002A - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x1C0C070A, // 0021 EQ R3 R3 K10 - 0x8810010B, // 0022 GETMBR R4 R0 K11 - 0x20100803, // 0023 NE R4 R4 R3 - 0x78120003, // 0024 JMPF R4 #0029 - 0x8C10010C, // 0025 GETMET R4 R0 K12 - 0x541A0044, // 0026 LDINT R6 69 - 0x581C000D, // 0027 LDCONST R7 K13 - 0x7C100600, // 0028 CALL R4 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_contact), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(Contact), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C080101, // 0000 GETMET R2 R0 K1 - 0x5C100200, // 0001 MOVE R4 R1 - 0x58140002, // 0002 LDCONST R5 K2 - 0x88180100, // 0003 GETMBR R6 R0 K0 - 0x601C0017, // 0004 GETGBL R7 G23 - 0x54220044, // 0005 LDINT R8 69 - 0x58240003, // 0006 LDCONST R9 K3 - 0x7C080E00, // 0007 CALL R2 7 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x60080003, // 0009 GETGBL R2 G3 - 0x5C0C0000, // 000A MOVE R3 R0 - 0x7C080200, // 000B CALL R2 1 - 0x8C080504, // 000C GETMET R2 R2 K4 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_status -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_parse_status, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Switch), - /* K2 */ be_nested_str_weak(tasmota_switch_index), - /* K3 */ be_nested_str_weak(ON), - /* K4 */ be_nested_str_weak(shadow_contact), - /* K5 */ be_nested_str_weak(attribute_updated), - /* K6 */ be_const_int(0), - }), - be_str_weak(parse_status), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E0009, // 0000 LDINT R3 10 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0017, // 0002 JMPF R3 #001B - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x60180008, // 0005 GETGBL R6 G8 - 0x881C0102, // 0006 GETMBR R7 R0 K2 - 0x7C180200, // 0007 CALL R6 1 - 0x001A0206, // 0008 ADD R6 K1 R6 - 0x7C100400, // 0009 CALL R4 2 - 0x1C100903, // 000A EQ R4 R4 K3 - 0x5C0C0800, // 000B MOVE R3 R4 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120009, // 000F JMPF R4 #001A - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x60140017, // 0011 GETGBL R5 G23 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C140200, // 0013 CALL R5 1 - 0x20100805, // 0014 NE R4 R4 R5 - 0x78120003, // 0015 JMPF R4 #001A - 0x8C100105, // 0016 GETMET R4 R0 K5 - 0x541A0044, // 0017 LDINT R6 69 - 0x581C0006, // 0018 LDCONST R7 K6 - 0x7C100600, // 0019 CALL R4 3 - 0x90020803, // 001A SETMBR R0 K4 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Contact_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_contact), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 - 0x7C1C0400, // 0009 CALL R7 2 - 0x7C100600, // 000A CALL R4 3 - 0x7C080400, // 000B CALL R2 2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; -be_local_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0044, // 0001 LDINT R3 69 + 0x58100001, // 0002 LDCONST R4 K1 + 0x7C040600, // 0003 CALL R1 3 + 0x80000000, // 0004 RET 0 }) ) ); @@ -461,34 +244,20 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration, /* na /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Contact ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_class(Matter_Plugin_Sensor_Contact, - 2, - &be_class_Matter_Plugin_Device, - be_nested_map(19, + 0, + &be_class_Matter_Plugin_Sensor_Boolean, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_read_attribute_closure) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(21, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(parse_configuration, 7), be_const_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration_closure) }, + { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_virtual_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Contact) }, + { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Contact_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Contact), })) ) } )) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_shadow_closure) }, - { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Contact) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_closure) }, - { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix_closure) }, - { be_const_key_weak(shadow_contact, 4), be_const_var(1) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_virtual_closure) }, - { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Sensor_Contact_parse_status_closure) }, - { be_const_key_weak(ARG_HINT, 18), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { @@ -573,10 +342,15 @@ be_local_class(Matter_Plugin_Sensor_Contact, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(UPDATE_TIME, 2), be_const_int(750) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(contact) }, - { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_init_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(21, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix_closure) }, + { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_value_updated_closure) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(contact) }, })), be_str_weak(Matter_Plugin_Sensor_Contact) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h similarity index 56% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h index 3ba19f96e..2071c7b95 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Plugin_2_Sensor_Occupancy.h */ +/* Solidification of Matter_Plugin_3_Sensor_Occupancy.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ @@ -6,6 +6,52 @@ extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Occupancy, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Occupancy), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x88180100, // 0003 GETMBR R6 R0 K0 + 0x601C0017, // 0004 GETGBL R7 G23 + 0x54220405, // 0005 LDINT R8 1030 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x60080003, // 0009 GETGBL R2 G3 + 0x5C0C0000, // 000A MOVE R3 R0 + 0x7C080200, // 000B CALL R2 1 + 0x8C080504, // 000C GETMET R2 R2 K4 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -28,7 +74,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(set_or_nil), /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_nested_str_weak(shadow_occupancy), + /* K7 */ be_nested_str_weak(shadow_bool_value), /* K8 */ be_const_int(1), /* K9 */ be_nested_str_weak(set), /* K10 */ be_const_int(3), @@ -84,37 +130,44 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name /******************************************************************** -** Solidified function: init +** Solidified function: web_values ********************************************************************/ extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_init, /* name */ +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 10, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Occupancy, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_occupancy), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), + /* K4 */ be_nested_str_weak(shadow_bool_value), + /* K5 */ be_nested_str_weak(web_value_onoff), + /* K6 */ be_nested_str_weak(shadow_occupancy), }), - be_str_weak(init), + be_str_weak(web_values), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 + ( &(const binstruction[13]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x8C1C0105, // 0007 GETMET R7 R0 K5 + 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C100600, // 000A CALL R4 3 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 }) ) ); @@ -139,7 +192,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* na /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(get_name), /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K3 */ be_nested_str_weak(shadow_bool_value), /* K4 */ be_nested_str_weak(content_send), /* K5 */ be_nested_str_weak(PREFIX), /* K6 */ be_nested_str_weak(html_escape), @@ -177,12 +230,12 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* na /******************************************************************** -** Solidified function: update_shadow +** Solidified function: value_updated ********************************************************************/ extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow, /* name */ +be_local_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated, /* name */ be_nested_proto( - 8, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -190,288 +243,18 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow, /* name * 0, /* has sup protos */ &be_class_Matter_Plugin_Sensor_Occupancy, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X2010), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(contains), - /* K10 */ be_nested_str_weak(ON), - /* K11 */ be_nested_str_weak(shadow_occupancy), - /* K12 */ be_nested_str_weak(attribute_updated), - /* K13 */ be_const_int(0), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), }), - be_str_weak(update_shadow), + be_str_weak(value_updated), &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x74060022, // 0006 JMPT R1 #002A - 0x60040008, // 0007 GETGBL R1 G8 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x7C040200, // 0009 CALL R1 1 - 0x00060401, // 000A ADD R1 K2 R1 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x50140200, // 000E LDBOOL R5 1 0 - 0x7C080600, // 000F CALL R2 3 - 0x4C0C0000, // 0010 LDNIL R3 - 0x200C0403, // 0011 NE R3 R2 R3 - 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0507, // 0013 GETMET R3 R2 K7 - 0x58140008, // 0014 LDCONST R5 K8 - 0x7C0C0400, // 0015 CALL R3 2 - 0x5C080600, // 0016 MOVE R2 R3 - 0x4C0C0000, // 0017 LDNIL R3 - 0x200C0403, // 0018 NE R3 R2 R3 - 0x780E000F, // 0019 JMPF R3 #002A - 0x8C0C0509, // 001A GETMET R3 R2 K9 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E000B, // 001D JMPF R3 #002A - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x1C0C070A, // 0021 EQ R3 R3 K10 - 0x8810010B, // 0022 GETMBR R4 R0 K11 - 0x20100803, // 0023 NE R4 R4 R3 - 0x78120003, // 0024 JMPF R4 #0029 - 0x8C10010C, // 0025 GETMET R4 R0 K12 - 0x541A0405, // 0026 LDINT R6 1030 - 0x581C000D, // 0027 LDCONST R7 K13 - 0x7C100600, // 0028 CALL R4 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(val_onoff), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(Occupancy), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C080101, // 0000 GETMET R2 R0 K1 - 0x5C100200, // 0001 MOVE R4 R1 - 0x58140002, // 0002 LDCONST R5 K2 - 0x88180100, // 0003 GETMBR R6 R0 K0 - 0x601C0017, // 0004 GETGBL R7 G23 - 0x54220405, // 0005 LDINT R8 1030 - 0x58240003, // 0006 LDCONST R9 K3 - 0x7C080E00, // 0007 CALL R2 7 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x60080003, // 0009 GETGBL R2 G3 - 0x5C0C0000, // 000A MOVE R3 R0 - 0x7C080200, // 000B CALL R2 1 - 0x8C080504, // 000C GETMET R2 R2 K4 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_status -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_parse_status, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Switch), - /* K2 */ be_nested_str_weak(tasmota_switch_index), - /* K3 */ be_nested_str_weak(ON), - /* K4 */ be_nested_str_weak(shadow_occupancy), - /* K5 */ be_nested_str_weak(attribute_updated), - /* K6 */ be_const_int(0), - }), - be_str_weak(parse_status), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E0009, // 0000 LDINT R3 10 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0017, // 0002 JMPF R3 #001B - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x60180008, // 0005 GETGBL R6 G8 - 0x881C0102, // 0006 GETMBR R7 R0 K2 - 0x7C180200, // 0007 CALL R6 1 - 0x001A0206, // 0008 ADD R6 K1 R6 - 0x7C100400, // 0009 CALL R4 2 - 0x1C100903, // 000A EQ R4 R4 K3 - 0x5C0C0800, // 000B MOVE R3 R4 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120009, // 000F JMPF R4 #001A - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x60140017, // 0011 GETGBL R5 G23 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C140200, // 0013 CALL R5 1 - 0x20100805, // 0014 NE R4 R4 R5 - 0x78120003, // 0015 JMPF R4 #001A - 0x8C100105, // 0016 GETMET R4 R0 K5 - 0x541A0405, // 0017 LDINT R6 1030 - 0x581C0006, // 0018 LDCONST R7 K6 - 0x7C100600, // 0019 CALL R4 3 - 0x90020803, // 001A SETMBR R0 K4 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; -be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_occupancy), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 - 0x7C1C0400, // 0009 CALL R7 2 - 0x7C100600, // 000A CALL R4 3 - 0x7C080400, // 000B CALL R2 2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0405, // 0001 LDINT R3 1030 + 0x58100001, // 0002 LDCONST R4 K1 + 0x7C040600, // 0003 CALL R1 3 + 0x80000000, // 0004 RET 0 }) ) ); @@ -481,34 +264,20 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Occupancy ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_class(Matter_Plugin_Sensor_Occupancy, - 2, - &be_class_Matter_Plugin_Device, - be_nested_map(19, + 0, + &be_class_Matter_Plugin_Sensor_Boolean, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute_closure) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(263, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(shadow_occupancy, -1), be_const_var(1) }, + { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Occupancy) }, + { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Occupancy), })) ) } )) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) }, - { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Occupancy) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_closure) }, - { be_const_key_weak(parse_configuration, 4), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix_closure) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual_closure) }, - { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_parse_status_closure) }, - { be_const_key_weak(ARG_HINT, 18), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { @@ -595,10 +364,15 @@ be_local_class(Matter_Plugin_Sensor_Occupancy, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(tasmota_switch_index, 7), be_const_var(0) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(occupancy) }, - { be_const_key_weak(ARG_TYPE, 2), be_const_static_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_init_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(263, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix_closure) }, + { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated_closure) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(occupancy) }, })), be_str_weak(Matter_Plugin_Sensor_Occupancy) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h similarity index 55% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h index 1d82ec3fa..b436d5fbd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Plugin_2_Sensor_OnOff.h */ +/* Solidification of Matter_Plugin_3_Sensor_OnOff.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ @@ -6,157 +6,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_OnOff; -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_OnOff__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_OnOff; -be_local_closure(class_Matter_Plugin_Sensor_OnOff_update_shadow, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_OnOff, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X2010), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(contains), - /* K10 */ be_nested_str_weak(ON), - /* K11 */ be_nested_str_weak(shadow_onoff), - /* K12 */ be_nested_str_weak(attribute_updated), - /* K13 */ be_const_int(0), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x74060022, // 0006 JMPT R1 #002A - 0x60040008, // 0007 GETGBL R1 G8 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x7C040200, // 0009 CALL R1 1 - 0x00060401, // 000A ADD R1 K2 R1 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x50140200, // 000E LDBOOL R5 1 0 - 0x7C080600, // 000F CALL R2 3 - 0x4C0C0000, // 0010 LDNIL R3 - 0x200C0403, // 0011 NE R3 R2 R3 - 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0507, // 0013 GETMET R3 R2 K7 - 0x58140008, // 0014 LDCONST R5 K8 - 0x7C0C0400, // 0015 CALL R3 2 - 0x5C080600, // 0016 MOVE R2 R3 - 0x4C0C0000, // 0017 LDNIL R3 - 0x200C0403, // 0018 NE R3 R2 R3 - 0x780E000F, // 0019 JMPF R3 #002A - 0x8C0C0509, // 001A GETMET R3 R2 K9 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E000B, // 001D JMPF R3 #002A - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x1C0C070A, // 0021 EQ R3 R3 K10 - 0x8810010B, // 0022 GETMBR R4 R0 K11 - 0x20100803, // 0023 NE R4 R4 R3 - 0x78120003, // 0024 JMPF R4 #0029 - 0x8C10010C, // 0025 GETMET R4 R0 K12 - 0x541A0005, // 0026 LDINT R6 6 - 0x581C000D, // 0027 LDCONST R7 K13 - 0x7C100600, // 0028 CALL R4 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_OnOff; -be_local_closure(class_Matter_Plugin_Sensor_OnOff_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_OnOff, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -180,7 +29,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ /* K5 */ be_const_int(0), /* K6 */ be_nested_str_weak(set), /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(shadow_onoff), + /* K8 */ be_nested_str_weak(shadow_bool_value), /* K9 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), @@ -233,7 +82,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name * 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s), - /* K1 */ be_nested_str_weak(shadow_onoff), + /* K1 */ be_nested_str_weak(shadow_bool_value), }), be_str_weak(append_state_json), &be_const_str_solidified, @@ -251,16 +100,49 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name * /*******************************************************************/ +/******************************************************************** +** Solidified function: value_updated +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_OnOff; +be_local_closure(class_Matter_Plugin_Sensor_OnOff_value_updated, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_OnOff, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + }), + be_str_weak(value_updated), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0005, // 0001 LDINT R3 6 + 0x58100001, // 0002 LDCONST R4 K1 + 0x7C040600, // 0003 CALL R1 3 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_OnOff ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_class(Matter_Plugin_Sensor_OnOff, - 2, - &be_class_Matter_Plugin_Device, - be_nested_map(14, + 0, + &be_class_Matter_Plugin_Sensor_Boolean, + be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(CLUSTERS, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(read_attribute, 1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute_closure) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -344,23 +226,15 @@ be_local_class(Matter_Plugin_Sensor_OnOff, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) }, - { be_const_key_weak(UPDATE_TIME, 4), be_const_int(750) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(onoff) }, - { be_const_key_weak(append_state_json, 12), be_const_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(OnOff_X20Sensor) }, - { be_const_key_weak(shadow_onoff, -1), be_const_var(1) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_update_shadow_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute_closure) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_parse_configuration_closure) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json_closure) }, + { be_const_key_weak(TYPES, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(2128, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(ARG_HINT, 9), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(tasmota_switch_index, 13), be_const_var(0) }, - { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_OnOff__X3Clambda_X3E_closure) }, + { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_value_updated_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(OnOff_X20Sensor) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(onoff) }, })), be_str_weak(Matter_Plugin_Sensor_OnOff) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h new file mode 100644 index 000000000..f40e86794 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h @@ -0,0 +1,358 @@ +/* Solidification of Matter_Plugin_3_Sensor_Rain.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Sensor_Rain; + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Rain; +be_local_closure(class_Matter_Plugin_Sensor_Rain_update_virtual, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Rain, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Rain), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x88180100, // 0003 GETMBR R6 R0 K0 + 0x601C0017, // 0004 GETGBL R7 G23 + 0x54220044, // 0005 LDINT R8 69 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x60080003, // 0009 GETGBL R2 G3 + 0x5C0C0000, // 000A MOVE R3 R0 + 0x7C080200, // 000B CALL R2 1 + 0x8C080504, // 000C GETMET R2 R2 K4 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Rain; +be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Rain, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(set), + /* K6 */ be_nested_str_weak(BOOL), + /* K7 */ be_nested_str_weak(shadow_bool_value), + /* K8 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0044, // 0004 LDINT R7 69 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0006, // 0006 JMPF R7 #000E + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0004, // 0008 JMPF R7 #000E + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x88280107, // 000B GETMBR R10 R0 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x601C0003, // 000E GETGBL R7 G3 + 0x5C200000, // 000F MOVE R8 R0 + 0x7C1C0200, // 0010 CALL R7 1 + 0x8C1C0F08, // 0011 GETMET R7 R7 K8 + 0x5C240200, // 0012 MOVE R9 R1 + 0x5C280400, // 0013 MOVE R10 R2 + 0x5C2C0600, // 0014 MOVE R11 R3 + 0x7C1C0800, // 0015 CALL R7 4 + 0x80040E00, // 0016 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Rain; +be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Rain, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(Rain_X25i_X20_X25s), + /* K4 */ be_nested_str_weak(tasmota_switch_index), + /* K5 */ be_nested_str_weak(web_value_onoff), + /* K6 */ be_nested_str_weak(shadow_bool_value), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x8C1C0105, // 0007 GETMET R7 R0 K5 + 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C100600, // 000A CALL R4 3 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values_prefix +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Rain; +be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Rain, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(content_send), + /* K5 */ be_nested_str_weak(PREFIX), + /* K6 */ be_nested_str_weak(html_escape), + /* K7 */ be_nested_str_weak(), + }), + be_str_weak(web_values_prefix), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x600C0008, // 0005 GETGBL R3 G8 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x000E0403, // 0008 ADD R3 K2 R3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x60140018, // 000B GETGBL R5 G24 + 0x88180105, // 000C GETMBR R6 R0 K5 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x5C240400, // 000F MOVE R9 R2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020000, // 0011 JMP #0013 + 0x581C0007, // 0012 LDCONST R7 K7 + 0x7C140400, // 0013 CALL R5 2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: value_updated +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Rain; +be_local_closure(class_Matter_Plugin_Sensor_Rain_value_updated, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Rain, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + }), + be_str_weak(value_updated), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0044, // 0001 LDINT R3 69 + 0x58100001, // 0002 LDCONST R4 K1 + 0x7C040600, // 0003 CALL R1 3 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Sensor_Rain +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; +be_local_class(Matter_Plugin_Sensor_Rain, + 0, + &be_class_Matter_Plugin_Sensor_Boolean, + be_nested_map(10, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Rain_update_virtual_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Rain) }, + { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Rain_read_attribute_closure) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Rain), + })) ) } )) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(8, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(5), + be_const_int(10), + be_const_int(15), + be_const_int(17), + be_const_int(18), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_web_values_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(68, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix_closure) }, + { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_value_updated_closure) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(rain) }, + })), + be_str_weak(Matter_Plugin_Sensor_Rain) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h new file mode 100644 index 000000000..a25021d9a --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h @@ -0,0 +1,273 @@ +/* Solidification of Matter_Plugin_3_Sensor_Waterleak.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Waterleak), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140002, // 0002 LDCONST R5 K2 + 0x88180100, // 0003 GETMBR R6 R0 K0 + 0x601C0017, // 0004 GETGBL R7 G23 + 0x54220044, // 0005 LDINT R8 69 + 0x58240003, // 0006 LDCONST R9 K3 + 0x7C080E00, // 0007 CALL R2 7 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x60080003, // 0009 GETGBL R2 G3 + 0x5C0C0000, // 000A MOVE R3 R0 + 0x7C080200, // 000B CALL R2 1 + 0x8C080504, // 000C GETMET R2 R2 K4 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + +// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Rain' +extern bclosure *class_Matter_Plugin_Sensor_Rain_read_attribute; + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(Waterleak_X25i_X20_X25s), + /* K4 */ be_nested_str_weak(tasmota_switch_index), + /* K5 */ be_nested_str_weak(web_value_onoff), + /* K6 */ be_nested_str_weak(shadow_bool_value), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x8C1C0105, // 0007 GETMET R7 R0 K5 + 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C100600, // 000A CALL R4 3 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values_prefix +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_Waterleak, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), + /* K2 */ be_nested_str_weak(Switch), + /* K3 */ be_nested_str_weak(tasmota_switch_index), + /* K4 */ be_nested_str_weak(content_send), + /* K5 */ be_nested_str_weak(PREFIX), + /* K6 */ be_nested_str_weak(html_escape), + /* K7 */ be_nested_str_weak(), + }), + be_str_weak(web_values_prefix), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x600C0008, // 0005 GETGBL R3 G8 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x000E0403, // 0008 ADD R3 K2 R3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x60140018, // 000B GETGBL R5 G24 + 0x88180105, // 000C GETMBR R6 R0 K5 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x5C240400, // 000F MOVE R9 R2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020000, // 0011 JMP #0013 + 0x581C0007, // 0012 LDCONST R7 K7 + 0x7C140400, // 0013 CALL R5 2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + +// Borrowed method 'value_updated' from class 'class_Matter_Plugin_Sensor_Rain' +extern bclosure *class_Matter_Plugin_Sensor_Rain_value_updated; + +/******************************************************************** +** Solidified class: Matter_Plugin_Sensor_Waterleak +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Boolean; +be_local_class(Matter_Plugin_Sensor_Waterleak, + 0, + &be_class_Matter_Plugin_Sensor_Boolean, + be_nested_map(10, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) }, + { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Rain_read_attribute_closure) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Waterleak), + })) ) } )) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(8, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(5), + be_const_int(10), + be_const_int(15), + be_const_int(17), + be_const_int(18), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(67, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix_closure) }, + { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_value_updated_closure) }, + { be_const_key_weak(TYPE, 3), be_nested_str_weak(waterleak) }, + })), + be_str_weak(Matter_Plugin_Sensor_Waterleak) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h new file mode 100644 index 000000000..61311846b --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h @@ -0,0 +1,26 @@ +/* Solidification of Matter_Plugin_8_Bridge_Sensor_Rain.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Rain; + +/******************************************************************** +** Solidified class: Matter_Plugin_Bridge_Sensor_Rain +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_Rain; +be_local_class(Matter_Plugin_Bridge_Sensor_Rain, + 0, + &be_class_Matter_Plugin_Sensor_Rain, + be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(BRIDGE, 2), be_const_bool(1) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_rain) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) }, + })), + be_str_weak(Matter_Plugin_Bridge_Sensor_Rain) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h new file mode 100644 index 000000000..66881e1b5 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h @@ -0,0 +1,27 @@ +/* Solidification of Matter_Plugin_9_Virt_Sensor_Rain.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Virt_Sensor_Rain; + +/******************************************************************** +** Solidified class: Matter_Plugin_Virt_Sensor_Rain +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Virt_Sensor_Rain; +be_local_class(Matter_Plugin_Virt_Sensor_Rain, + 0, + &be_class_Matter_Plugin_Virt_Sensor_Rain, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2ERain) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_rain) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(ARG, 2), be_nested_str_weak() }, + })), + be_str_weak(Matter_Plugin_Virt_Sensor_Rain) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h index 8b90cdfe9..f33b2921e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h @@ -15,13 +15,13 @@ be_local_class(Matter_Plugin_Virt_Sensor_Waterleak, &be_class_Matter_Plugin_Virt_Sensor_Waterleak, be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(VIRTUAL, 3), be_const_bool(1) }, - { be_const_key(DISPLAY_NAME, -1), be_nested_str(v_X2EWaterleak) }, - { be_const_key(TYPE, -1), be_nested_str(v_waterleak) }, - { be_const_key(ARG_HINT, -1), be_nested_str(_Not_X20used_) }, - { be_const_key(ARG, 2), be_nested_str() }, + { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EWaterleak) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_waterleak) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(ARG, 2), be_nested_str_weak() }, })), - (bstring*) &be_const_str_Matter_Plugin_Virt_Sensor_Waterleak + be_str_weak(Matter_Plugin_Virt_Sensor_Waterleak) ); /********************************************************************/ /* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index a92be66c2..93f389557 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -3385,7 +3385,7 @@ be_local_class(Matter_UI, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(equal_map, -1), be_const_static_closure(class_Matter_UI_equal_map_closure) }, { be_const_key_weak(page_part_mgr_adv, -1), be_const_closure(class_Matter_UI_page_part_mgr_adv_closure) }, - { be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact_X7Chttp_flow_X7Chttp_waterleak_X7Chttp_airquality) }, + { be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact_X7Chttp_flow_X7Chttp_rain_X7Chttp_waterleak_X7Chttp_airquality) }, { be_const_key_weak(page_part_mgr, 25), be_const_closure(class_Matter_UI_page_part_mgr_closure) }, { be_const_key_weak(show_plugins_hints_js, -1), be_const_closure(class_Matter_UI_show_plugins_hints_js_closure) }, { be_const_key_weak(show_enable, -1), be_const_closure(class_Matter_UI_show_enable_closure) }, @@ -3397,7 +3397,7 @@ be_local_class(Matter_UI, { be_const_key_weak(show_commissioning_info, -1), be_const_closure(class_Matter_UI_show_commissioning_info_closure) }, { be_const_key_weak(page_part_ctl, 18), be_const_closure(class_Matter_UI_page_part_ctl_closure) }, { be_const_key_weak(show_fabric_info, -1), be_const_closure(class_Matter_UI_show_fabric_info_closure) }, - { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_waterleak_X7Cv_airquality) }, + { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) }, { be_const_key_weak(web_get_arg, -1), be_const_closure(class_Matter_UI_web_get_arg_closure) }, { be_const_key_weak(plugin_option, 5), be_const_closure(class_Matter_UI_plugin_option_closure) }, { be_const_key_weak(web_add_config_button, -1), be_const_closure(class_Matter_UI_web_add_config_button_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index bcf0a1b9a..a36e124cc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -6213,55 +6213,58 @@ be_local_class(Matter_Device, { be_const_key_weak(stop, 14), be_const_closure(class_Matter_Device_stop_closure) }, { be_const_key_weak(stop_basic_commissioning, 13), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, { be_const_key_weak(plugins_classes, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(47, + be_const_map( * be_nested_map(50, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(v_waterleak, 40), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, - { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, - { be_const_key_weak(http_illuminance, 14), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, - { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, - { be_const_key_weak(humidity, 24), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, - { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, - { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, - { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, - { be_const_key_weak(airquality, -1), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, - { be_const_key_weak(light1, 17), be_const_class(be_class_Matter_Plugin_Light1) }, - { be_const_key_weak(v_illuminance, 26), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, - { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, - { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, - { be_const_key_weak(http_light0, 6), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, - { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, - { be_const_key_weak(contact, 29), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, - { be_const_key_weak(http_flow, 10), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, - { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, - { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, - { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, - { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, - { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, - { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, - { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, - { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) }, - { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, - { be_const_key_weak(illuminance, 36), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(shutter, 34), be_const_class(be_class_Matter_Plugin_Shutter) }, - { be_const_key_weak(waterleak, 5), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, + { be_const_key_weak(relay, 29), be_const_class(be_class_Matter_Plugin_OnOff) }, { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, - { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, - { be_const_key_weak(v_light2, 42), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, - { be_const_key_weak(light2, 3), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, + { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, + { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, + { be_const_key_weak(http_occupancy, 31), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, + { be_const_key_weak(http_contact, 14), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, + { be_const_key_weak(light0, 16), be_const_class(be_class_Matter_Plugin_Light0) }, + { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, + { be_const_key_weak(v_light1, 10), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, + { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, - { be_const_key_weak(v_contact, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, + { be_const_key_weak(v_contact, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, + { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(http_illuminance, 33), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, + { be_const_key_weak(rain, 22), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, + { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, + { be_const_key_weak(shutter, 6), be_const_class(be_class_Matter_Plugin_Shutter) }, + { be_const_key_weak(light2, -1), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, + { be_const_key_weak(v_illuminance, 49), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(root, 27), be_const_class(be_class_Matter_Plugin_Root) }, + { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, + { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, + { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) }, + { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) }, + { be_const_key_weak(pressure, 43), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, + { be_const_key_weak(shutter_X2Btilt, 24), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(v_humidity, 46), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, + { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, + { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, + { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, + { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(http_waterleak, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, + { be_const_key_weak(waterleak, 8), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, + { be_const_key_weak(light1, 3), be_const_class(be_class_Matter_Plugin_Light1) }, + { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, + { be_const_key_weak(v_flow, 13), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, - { be_const_key_weak(relay, 43), be_const_class(be_class_Matter_Plugin_OnOff) }, + { be_const_key_weak(occupancy, 48), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, + { be_const_key_weak(airquality, 34), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, + { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, - { be_const_key_weak(http_waterleak, 2), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(http_occupancy, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(root, 39), be_const_class(be_class_Matter_Plugin_Root) }, + { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, + { be_const_key_weak(v_rain, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, + { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, })) ) } )) }, { be_const_key_weak(tick, 9), be_const_var(10) }, { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(17) }, From 0c49262d54e0aac4f89dec49bbffb172544e4cba Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 14 Jun 2024 22:40:27 +0200 Subject: [PATCH 056/252] Update changelogs --- CHANGELOG.md | 2 +- RELEASENOTES.md | 1 + tasmota/language/af_AF.h | 1 + tasmota/language/bg_BG.h | 1 + tasmota/language/ca_AD.h | 1 + tasmota/language/cs_CZ.h | 1 + tasmota/language/de_DE.h | 1 + tasmota/language/el_GR.h | 1 + tasmota/language/en_GB.h | 1 + tasmota/language/es_ES.h | 1 + tasmota/language/fr_FR.h | 1 + tasmota/language/fy_NL.h | 1 + tasmota/language/he_HE.h | 1 + tasmota/language/hu_HU.h | 1 + tasmota/language/it_IT.h | 1 + tasmota/language/ko_KO.h | 1 + tasmota/language/nl_NL.h | 1 + tasmota/language/pl_PL.h | 1 + tasmota/language/pt_BR.h | 1 + tasmota/language/pt_PT.h | 1 + tasmota/language/ro_RO.h | 1 + tasmota/language/ru_RU.h | 1 + tasmota/language/sk_SK.h | 1 + tasmota/language/sv_SE.h | 1 + tasmota/language/tr_TR.h | 1 + tasmota/language/uk_UA.h | 1 + tasmota/language/vi_VN.h | 1 + tasmota/language/zh_CN.h | 1 + tasmota/language/zh_TW.h | 1 + 29 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4052438f5..d3f5e2db1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file. - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Berry `classof` extended to class methods (#21615) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) -- Matter support for Rain sensor +- Matter support for Rain sensor (#21633) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 6d2fd35b1..7b4b2cdf3 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -143,6 +143,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) +- Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633) ### Fixed - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index fabaec1e1..a10ae1b76 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 834009096..4c5d5af53 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "л" #define D_UNIT_LITERS_PER_MIN "л/м" #define D_UNIT_LUX "лукс" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µг/м³" #define D_UNIT_MICROMETER "µм" #define D_UNIT_MICROSECOND "µс" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index 75151988a..b04a2f452 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index d0838a0a6..8c83fbf7b 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 43d5a5535..6cfe0dcd0 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 1c47c5560..433f54218 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 2187a6871..f0641cfd1 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 82ba7a2d6..5d980ade0 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index d7ac06abf..174800ced 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -1007,6 +1007,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/min" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index bf1b2cdbe..d828fe94c 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index e7422821a..1115824ed 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index a037e28a5..ceadce58b 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -1009,6 +1009,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 080799eda..9b9e8d118 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -1009,6 +1009,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index dae42e67d..f118ce486 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "마이크로미터" #define D_UNIT_MICROSECOND "마이크로초" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 7a2466dc5..237d17627 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index d16a56c72..02f5ee566 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index c26076964..34827df60 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 4daa0a48b..c1b8ac284 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index bcbdbb23a..9560fcfe4 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 18b0d438d..d7807d77c 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -1007,6 +1007,7 @@ #define D_UNIT_LITERS "л" #define D_UNIT_LITERS_PER_MIN "л/мин" #define D_UNIT_LUX "лк" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "мкг/м³" #define D_UNIT_MICROMETER "мкм" #define D_UNIT_MICROSECOND "мкс" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index f273cae32..6094ef0e4 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index c968ef2ca..ecd2a84ac 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index a570fc57e..c30440d34 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 490328438..d02250694 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "лк" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µг/м³" #define D_UNIT_MICROMETER "µм" #define D_UNIT_MICROSECOND "µС" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 6c279b59d..e62e015d2 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 5542facae..438ec7166 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lx" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index d285af57f..42c64aaf7 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -1006,6 +1006,7 @@ #define D_UNIT_LITERS "L" #define D_UNIT_LITERS_PER_MIN "L/m" #define D_UNIT_LUX "lux" +#define D_UNIT_METER "m" #define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方公尺" #define D_UNIT_MICROMETER "微米" #define D_UNIT_MICROSECOND "微秒" From 2c1f6b24d39c96d69839012aa2daa756dbddfaf3 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 15 Jun 2024 10:56:48 +0200 Subject: [PATCH 057/252] Matter add internal debug option (#21634) --- CHANGELOG.md | 1 + .../berry_matter/src/embedded/Matter_IM.be | 2 +- .../src/embedded/Matter_zz_Device.be | 9 +- .../src/solidify/solidified_Matter_IM.h | 34 +- .../solidify/solidified_Matter_zz_Device.h | 9109 +++++++++-------- 5 files changed, 4590 insertions(+), 4565 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3f5e2db1..5f68729d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Berry `classof` extended to class methods (#21615) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) - Matter support for Rain sensor (#21633) +- Matter add internal debug option ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 5126757a4..32c19152d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -833,7 +833,7 @@ class Matter_IM log(f"MTR: >Subscribe ({msg.session.local_session_id:6i}) event_requests_size={size(query.event_requests)}", 3) end - var ret = self._inner_process_read_request(msg.session, query, msg, true #-no_log-#) + var ret = self._inner_process_read_request(msg.session, query, msg, !self.device.debug #-log only if debug enabled-#) # ret is of type `Matter_ReportDataMessage` ret.subscription_id = sub.subscription_id # enrich with subscription id TODO self.send_subscribe_response(msg, ret, sub) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 7ef4ded6a..5f0c2fe04 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -66,6 +66,7 @@ class Matter_Device var ipv4only # advertize only IPv4 addresses (no IPv6) var disable_bridge_mode # default is bridge mode, this flag disables this mode for some non-compliant controllers var next_ep # next endpoint to be allocated for bridge, start at 1 + var debug # debug mode, output all values when responding to read request with wildcard # context for PBKDF var root_iterations # PBKDF number of iterations # PBKDF information used only during PASE (freed afterwards) @@ -649,11 +650,14 @@ class Matter_Device self.update_remotes_info() # update self.plugins_config_remotes var j = format('{"distinguish":%i,"passcode":%i,"ipv4only":%s,"disable_bridge_mode":%s,"nextep":%i', self.root_discriminator, self.root_passcode, self.ipv4only ? 'true':'false', self.disable_bridge_mode ? 'true':'false', self.next_ep) + if self.debug + j += ',"debug":true' + end if self.plugins_persist - j += ',"config":' + j += ',\n"config":' j += json.dump(self.plugins_config) if size(self.plugins_config_remotes) > 0 - j += ',"remotes":' + j += ',\n"remotes":' j += json.dump(self.plugins_config_remotes) end end @@ -717,6 +721,7 @@ class Matter_Device self.disable_bridge_mode = bool(j.find("disable_bridge_mode", false)) self.next_ep = j.find("nextep", self.next_ep) self.plugins_config = j.find("config") + self.debug = bool(j.find("debug")) # bool converts nil to false if self.plugins_config != nil log(f"MTR: Load_config = {self.plugins_config}", 3) self.adjust_next_ep() diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index fba6d4892..1df1d46ab 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -3417,7 +3417,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[32]) { /* constants */ + ( &(const bvalue[34]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(SubscribeRequestMessage), /* K2 */ be_nested_str_weak(from_TLV), @@ -3449,11 +3449,13 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /* K28 */ be_nested_str_weak(event_requests), /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20event_requests_size_X3D_X25s), /* K30 */ be_nested_str_weak(_inner_process_read_request), - /* K31 */ be_nested_str_weak(send_subscribe_response), + /* K31 */ be_nested_str_weak(device), + /* K32 */ be_nested_str_weak(debug), + /* K33 */ be_nested_str_weak(send_subscribe_response), }), be_str_weak(subscribe_request), &be_const_str_solidified, - ( &(const binstruction[99]) { /* code */ + ( &(const binstruction[103]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 @@ -3542,17 +3544,21 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0x88240306, // 0055 GETMBR R9 R1 K6 0x5C280600, // 0056 MOVE R10 R3 0x5C2C0200, // 0057 MOVE R11 R1 - 0x50300200, // 0058 LDBOOL R12 1 0 - 0x7C1C0A00, // 0059 CALL R7 5 - 0x88200919, // 005A GETMBR R8 R4 K25 - 0x901E3208, // 005B SETMBR R7 K25 R8 - 0x8C20011F, // 005C GETMET R8 R0 K31 - 0x5C280200, // 005D MOVE R10 R1 - 0x5C2C0E00, // 005E MOVE R11 R7 - 0x5C300800, // 005F MOVE R12 R4 - 0x7C200800, // 0060 CALL R8 4 - 0x50200200, // 0061 LDBOOL R8 1 0 - 0x80041000, // 0062 RET 1 R8 + 0x8830011F, // 0058 GETMBR R12 R0 K31 + 0x88301920, // 0059 GETMBR R12 R12 K32 + 0x78320000, // 005A JMPF R12 #005C + 0x50300001, // 005B LDBOOL R12 0 1 + 0x50300200, // 005C LDBOOL R12 1 0 + 0x7C1C0A00, // 005D CALL R7 5 + 0x88200919, // 005E GETMBR R8 R4 K25 + 0x901E3208, // 005F SETMBR R7 K25 R8 + 0x8C200121, // 0060 GETMET R8 R0 K33 + 0x5C280200, // 0061 MOVE R10 R1 + 0x5C2C0E00, // 0062 MOVE R11 R7 + 0x5C300800, // 0063 MOVE R12 R4 + 0x7C200800, // 0064 CALL R8 4 + 0x50200200, // 0065 LDBOOL R8 1 0 + 0x80041000, // 0066 RET 1 R8 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index a36e124cc..d5787e6c3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -7,42 +7,12 @@ extern const bclass be_class_Matter_Device; /******************************************************************** -** Solidified function: is_commissioning_open +** Solidified function: mdns_remove_op_discovery ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ +be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - }), - be_str_weak(is_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo_one -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ - be_nested_proto( - 9, /* nstack */ + 12, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -50,37 +20,111 @@ be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K1 */ be_nested_str_weak(state_json), - /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(publish_result), - /* K5 */ be_nested_str_weak(), + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(eth), + /* K9 */ be_nested_str_weak(find), + /* K10 */ be_nested_str_weak(up), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K13 */ be_const_int(3), + /* K14 */ be_nested_str_weak(remove_service), + /* K15 */ be_nested_str_weak(_matter), + /* K16 */ be_nested_str_weak(_tcp), + /* K17 */ be_nested_str_weak(hostname_eth), + /* K18 */ be_nested_str_weak(wifi), + /* K19 */ be_nested_str_weak(hostname_wifi), + /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K21 */ be_nested_str_weak(_X7C), + /* K22 */ be_const_int(2), }), - be_str_weak(MtrInfo_one), + be_str_weak(mdns_remove_op_discovery), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0403, // 0004 EQ R3 R2 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80000600, // 0006 RET 0 - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x780E0008, // 0009 JMPF R3 #0013 - 0x60100018, // 000A GETGBL R4 G24 - 0x58140002, // 000B LDCONST R5 K2 - 0x5C180600, // 000C MOVE R6 R3 - 0x7C100400, // 000D CALL R4 2 - 0xB8160600, // 000E GETNGBL R5 K3 - 0x8C140B04, // 000F GETMET R5 R5 K4 - 0x5C1C0800, // 0010 MOVE R7 R4 - 0x58200005, // 0011 LDCONST R8 K5 - 0x7C140600, // 0012 CALL R5 3 - 0x80000000, // 0013 RET 0 + ( &(const binstruction[77]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x8C180D08, // 0011 GETMET R6 R6 K8 + 0x7C180200, // 0012 CALL R6 1 + 0x8C180D09, // 0013 GETMET R6 R6 K9 + 0x5820000A, // 0014 LDCONST R8 K10 + 0x7C180400, // 0015 CALL R6 2 + 0x781A000D, // 0016 JMPF R6 #0025 + 0xB81A1600, // 0017 GETNGBL R6 K11 + 0x601C0018, // 0018 GETGBL R7 G24 + 0x5820000C, // 0019 LDCONST R8 K12 + 0x58240008, // 001A LDCONST R9 K8 + 0x5C280A00, // 001B MOVE R10 R5 + 0x7C1C0600, // 001C CALL R7 3 + 0x5820000D, // 001D LDCONST R8 K13 + 0x7C180400, // 001E CALL R6 2 + 0x8C18050E, // 001F GETMET R6 R2 K14 + 0x5820000F, // 0020 LDCONST R8 K15 + 0x58240010, // 0021 LDCONST R9 K16 + 0x5C280A00, // 0022 MOVE R10 R5 + 0x882C0111, // 0023 GETMBR R11 R0 K17 + 0x7C180A00, // 0024 CALL R6 5 + 0xB81A0E00, // 0025 GETNGBL R6 K7 + 0x8C180D12, // 0026 GETMET R6 R6 K18 + 0x7C180200, // 0027 CALL R6 1 + 0x8C180D09, // 0028 GETMET R6 R6 K9 + 0x5820000A, // 0029 LDCONST R8 K10 + 0x7C180400, // 002A CALL R6 2 + 0x781A000D, // 002B JMPF R6 #003A + 0xB81A1600, // 002C GETNGBL R6 K11 + 0x601C0018, // 002D GETGBL R7 G24 + 0x5820000C, // 002E LDCONST R8 K12 + 0x58240012, // 002F LDCONST R9 K18 + 0x5C280A00, // 0030 MOVE R10 R5 + 0x7C1C0600, // 0031 CALL R7 3 + 0x5820000D, // 0032 LDCONST R8 K13 + 0x7C180400, // 0033 CALL R6 2 + 0x8C18050E, // 0034 GETMET R6 R2 K14 + 0x5820000F, // 0035 LDCONST R8 K15 + 0x58240010, // 0036 LDCONST R9 K16 + 0x5C280A00, // 0037 MOVE R10 R5 + 0x882C0113, // 0038 GETMBR R11 R0 K19 + 0x7C180A00, // 0039 CALL R6 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC0C0002, // 003C CATCH R3 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8161600, // 003E GETNGBL R5 K11 + 0x60180008, // 003F GETGBL R6 G8 + 0x5C1C0600, // 0040 MOVE R7 R3 + 0x7C180200, // 0041 CALL R6 1 + 0x001A2806, // 0042 ADD R6 K20 R6 + 0x00180D15, // 0043 ADD R6 R6 K21 + 0x601C0008, // 0044 GETGBL R7 G8 + 0x5C200800, // 0045 MOVE R8 R4 + 0x7C1C0200, // 0046 CALL R7 1 + 0x00180C07, // 0047 ADD R6 R6 R7 + 0x581C0016, // 0048 LDCONST R7 K22 + 0x7C140400, // 0049 CALL R5 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 }) ) ); @@ -88,12 +132,12 @@ be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ /******************************************************************** -** Solidified function: event_fabrics_saved +** Solidified function: start ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ +be_local_closure(class_Matter_Device_start, /* name */ be_nested_proto( - 3, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -102,183 +146,28 @@ be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(save_param), + /* K0 */ be_nested_str_weak(started), + /* K1 */ be_nested_str_weak(autoconf_device), + /* K2 */ be_nested_str_weak(_start_udp), + /* K3 */ be_nested_str_weak(UDP_PORT), + /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), }), - be_str_weak(event_fabrics_saved), + be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ + ( &(const binstruction[13]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x24040302, // 0003 GT R1 R1 K2 - 0x78060005, // 0004 JMPF R1 #000B - 0x88040103, // 0005 GETMBR R1 R0 K3 - 0x74060003, // 0006 JMPT R1 #000B - 0x50040200, // 0007 LDBOOL R1 1 0 - 0x90020601, // 0008 SETMBR R0 K3 R1 - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric), - /* K1 */ be_nested_str_weak(get_fabric_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(get_admin_vendor_name), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(stop_basic_commissioning), - }), - be_str_weak(start_commissioning_complete), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x8C0C0501, // 0002 GETMET R3 R2 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x7C100200, // 000B CALL R4 1 - 0xB8160C00, // 000C GETNGBL R5 K6 - 0x60180018, // 000D GETGBL R6 G24 - 0x581C0007, // 000E LDCONST R7 K7 - 0x5C200600, // 000F MOVE R8 R3 - 0x5C240800, // 0010 MOVE R9 R4 - 0x7C180600, // 0011 CALL R6 3 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x7C140400, // 0013 CALL R5 2 - 0x8C140109, // 0014 GETMET R5 R0 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_remove_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins_config), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(plugins_persist), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(get_endpoint), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(clean_remotes), - /* K15 */ be_nested_str_weak(save_param), - /* K16 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_remove_endpoint), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C0008, // 0001 GETGBL R3 G8 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x4C140000, // 0005 LDNIL R5 - 0x88180101, // 0006 GETMBR R6 R0 K1 - 0x8C180D02, // 0007 GETMET R6 R6 K2 - 0x5C200600, // 0008 MOVE R8 R3 - 0x7C180400, // 0009 CALL R6 2 - 0x741A0004, // 000A JMPT R6 #0010 - 0xB81A0600, // 000B GETNGBL R6 K3 - 0x001E0803, // 000C ADD R7 K4 R3 - 0x58200005, // 000D LDCONST R8 K5 - 0x7C180400, // 000E CALL R6 2 - 0x80000C00, // 000F RET 0 - 0xB81A0600, // 0010 GETNGBL R6 K3 - 0x601C0018, // 0011 GETGBL R7 G24 - 0x58200006, // 0012 LDCONST R8 K6 - 0x5C240200, // 0013 MOVE R9 R1 - 0x7C1C0400, // 0014 CALL R7 2 - 0x58200007, // 0015 LDCONST R8 K7 - 0x7C180400, // 0016 CALL R6 2 - 0x88180101, // 0017 GETMBR R6 R0 K1 - 0x8C180D08, // 0018 GETMET R6 R6 K8 - 0x5C200600, // 0019 MOVE R8 R3 - 0x7C180400, // 001A CALL R6 2 - 0x50180200, // 001B LDBOOL R6 1 0 - 0x90021206, // 001C SETMBR R0 K9 R6 - 0x5818000A, // 001D LDCONST R6 K10 - 0x601C000C, // 001E GETGBL R7 G12 - 0x8820010B, // 001F GETMBR R8 R0 K11 - 0x7C1C0200, // 0020 CALL R7 1 - 0x141C0C07, // 0021 LT R7 R6 R7 - 0x781E000D, // 0022 JMPF R7 #0031 - 0x881C010B, // 0023 GETMBR R7 R0 K11 - 0x941C0E06, // 0024 GETIDX R7 R7 R6 - 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 - 0x7C1C0200, // 0026 CALL R7 1 - 0x1C1C0207, // 0027 EQ R7 R1 R7 - 0x781E0005, // 0028 JMPF R7 #002F - 0x881C010B, // 0029 GETMBR R7 R0 K11 - 0x8C1C0F08, // 002A GETMET R7 R7 K8 - 0x5C240C00, // 002B MOVE R9 R6 - 0x7C1C0400, // 002C CALL R7 2 - 0x70020002, // 002D JMP #0031 - 0x70020000, // 002E JMP #0030 - 0x00180D0D, // 002F ADD R6 R6 K13 - 0x7001FFEC, // 0030 JMP #001E - 0x8C1C010E, // 0031 GETMET R7 R0 K14 - 0x7C1C0200, // 0032 CALL R7 1 - 0x8C1C010F, // 0033 GETMET R7 R0 K15 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0110, // 0035 GETMET R7 R0 K16 - 0x7C1C0200, // 0036 CALL R7 1 - 0x80000000, // 0037 RET 0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x8C040104, // 0008 GETMET R1 R0 K4 + 0x7C040200, // 0009 CALL R1 1 + 0x50040200, // 000A LDBOOL R1 1 0 + 0x90020001, // 000B SETMBR R0 K0 R1 + 0x80000000, // 000C RET 0 }) ) ); @@ -407,12 +296,80 @@ be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ /******************************************************************** -** Solidified function: _mdns_announce_hostname +** Solidified function: generate_random_passcode ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ +be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ be_nested_proto( - 14, /* nstack */ + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_nested_str_weak(get), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(134217727), + /* K5 */ be_const_int(99999998), + /* K6 */ be_nested_str_weak(PASSCODE_INVALID), + /* K7 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(generate_random_passcode), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x780E001D, // 0003 JMPF R3 #0022 + 0x8C0C0301, // 0004 GETMET R3 R1 K1 + 0x54160003, // 0005 LDINT R5 4 + 0x7C0C0400, // 0006 CALL R3 2 + 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x58140003, // 0008 LDCONST R5 K3 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C0C0600, // 000A CALL R3 3 + 0x2C0C0704, // 000B AND R3 R3 K4 + 0x5C080600, // 000C MOVE R2 R3 + 0x240C0505, // 000D GT R3 R2 K5 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7001FFF1, // 000F JMP #0002 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100106, // 0011 GETMBR R4 R0 K6 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x1C140404, // 0016 EQ R5 R2 R4 + 0x78160000, // 0017 JMPF R5 #0019 + 0x4C080000, // 0018 LDNIL R2 + 0x7001FFF9, // 0019 JMP #0014 + 0x580C0007, // 001A LDCONST R3 K7 + 0xAC0C0200, // 001B CATCH R3 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x4C0C0000, // 001D LDNIL R3 + 0x200C0403, // 001E NE R3 R2 R3 + 0x780E0000, // 001F JMPF R3 #0021 + 0x80040400, // 0020 RET 1 R2 + 0x7001FFDF, // 0021 JMP #0002 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_operational_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ + be_nested_proto( + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -420,182 +377,29 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(start), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(eth), - /* K5 */ be_nested_str_weak(hostname_eth), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(mac), - /* K9 */ be_nested_str_weak(_X3A), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(contains), - /* K13 */ be_nested_str_weak(ip6local), - /* K14 */ be_nested_str_weak(add_hostname), - /* K15 */ be_nested_str_weak(ip), - /* K16 */ be_nested_str_weak(ip6), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(wifi), - /* K21 */ be_nested_str_weak(hostname_wifi), - /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), - /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K24 */ be_nested_str_weak(_X7C), - /* K25 */ be_const_int(2), - /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(mdns), + /* K2 */ be_nested_str_weak(stop_basic_commissioning), + /* K3 */ be_nested_str_weak(root_w0), + /* K4 */ be_nested_str_weak(root_L), + /* K5 */ be_nested_str_weak(mdns_announce_op_discovery), }), - be_str_weak(_mdns_announce_hostname), + be_str_weak(start_operational_discovery), &be_const_str_solidified, - ( &(const binstruction[144]) { /* code */ + ( &(const binstruction[12]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100502, // 0002 GETMET R4 R2 K2 + 0x8C100102, // 0002 GETMET R4 R0 K2 0x7C100200, // 0003 CALL R4 1 - 0xA8020077, // 0004 EXBLK 0 #007D - 0x78060033, // 0005 JMPF R1 #003A - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x7C100200, // 0008 CALL R4 1 - 0x8C140706, // 0009 GETMET R5 R3 K6 - 0x8C1C0907, // 000A GETMET R7 R4 K7 - 0x58240008, // 000B LDCONST R9 K8 - 0x7C1C0400, // 000C CALL R7 2 - 0x58200009, // 000D LDCONST R8 K9 - 0x5824000A, // 000E LDCONST R9 K10 - 0x7C140800, // 000F CALL R5 4 - 0x90020A05, // 0010 SETMBR R0 K5 R5 - 0x8814010B, // 0011 GETMBR R5 R0 K11 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C14090C, // 0013 GETMET R5 R4 K12 - 0x581C000D, // 0014 LDCONST R7 K13 - 0x7C140400, // 0015 CALL R5 2 - 0x7416000F, // 0016 JMPT R5 #0027 - 0x8C14050E, // 0017 GETMET R5 R2 K14 - 0x881C0105, // 0018 GETMBR R7 R0 K5 - 0x8C200907, // 0019 GETMET R8 R4 K7 - 0x5828000D, // 001A LDCONST R10 K13 - 0x582C000A, // 001B LDCONST R11 K10 - 0x7C200600, // 001C CALL R8 3 - 0x8C240907, // 001D GETMET R9 R4 K7 - 0x582C000F, // 001E LDCONST R11 K15 - 0x5830000A, // 001F LDCONST R12 K10 - 0x7C240600, // 0020 CALL R9 3 - 0x8C280907, // 0021 GETMET R10 R4 K7 - 0x58300010, // 0022 LDCONST R12 K16 - 0x5834000A, // 0023 LDCONST R13 K10 - 0x7C280600, // 0024 CALL R10 3 - 0x7C140A00, // 0025 CALL R5 5 - 0x70020011, // 0026 JMP #0039 - 0xB8162200, // 0027 GETNGBL R5 K17 - 0x60180018, // 0028 GETGBL R6 G24 - 0x581C0012, // 0029 LDCONST R7 K18 - 0x88200105, // 002A GETMBR R8 R0 K5 - 0x8C240907, // 002B GETMET R9 R4 K7 - 0x582C000F, // 002C LDCONST R11 K15 - 0x5830000A, // 002D LDCONST R12 K10 - 0x7C240600, // 002E CALL R9 3 - 0x7C180600, // 002F CALL R6 3 - 0x581C0013, // 0030 LDCONST R7 K19 - 0x7C140400, // 0031 CALL R5 2 - 0x8C14050E, // 0032 GETMET R5 R2 K14 - 0x881C0105, // 0033 GETMBR R7 R0 K5 - 0x8C200907, // 0034 GETMET R8 R4 K7 - 0x5828000F, // 0035 LDCONST R10 K15 - 0x582C000A, // 0036 LDCONST R11 K10 - 0x7C200600, // 0037 CALL R8 3 - 0x7C140600, // 0038 CALL R5 3 - 0x70020032, // 0039 JMP #006D - 0xB8120600, // 003A GETNGBL R4 K3 - 0x8C100914, // 003B GETMET R4 R4 K20 - 0x7C100200, // 003C CALL R4 1 - 0x8C140706, // 003D GETMET R5 R3 K6 - 0x8C1C0907, // 003E GETMET R7 R4 K7 - 0x58240008, // 003F LDCONST R9 K8 - 0x7C1C0400, // 0040 CALL R7 2 - 0x58200009, // 0041 LDCONST R8 K9 - 0x5824000A, // 0042 LDCONST R9 K10 - 0x7C140800, // 0043 CALL R5 4 - 0x90022A05, // 0044 SETMBR R0 K21 R5 - 0x8814010B, // 0045 GETMBR R5 R0 K11 - 0x78160003, // 0046 JMPF R5 #004B - 0x8C14090C, // 0047 GETMET R5 R4 K12 - 0x581C000D, // 0048 LDCONST R7 K13 - 0x7C140400, // 0049 CALL R5 2 - 0x7416000F, // 004A JMPT R5 #005B - 0x8C14050E, // 004B GETMET R5 R2 K14 - 0x881C0115, // 004C GETMBR R7 R0 K21 - 0x8C200907, // 004D GETMET R8 R4 K7 - 0x5828000D, // 004E LDCONST R10 K13 - 0x582C000A, // 004F LDCONST R11 K10 - 0x7C200600, // 0050 CALL R8 3 - 0x8C240907, // 0051 GETMET R9 R4 K7 - 0x582C000F, // 0052 LDCONST R11 K15 - 0x5830000A, // 0053 LDCONST R12 K10 - 0x7C240600, // 0054 CALL R9 3 - 0x8C280907, // 0055 GETMET R10 R4 K7 - 0x58300010, // 0056 LDCONST R12 K16 - 0x5834000A, // 0057 LDCONST R13 K10 - 0x7C280600, // 0058 CALL R10 3 - 0x7C140A00, // 0059 CALL R5 5 - 0x70020011, // 005A JMP #006D - 0xB8162200, // 005B GETNGBL R5 K17 - 0x60180018, // 005C GETGBL R6 G24 - 0x581C0012, // 005D LDCONST R7 K18 - 0x88200115, // 005E GETMBR R8 R0 K21 - 0x8C240907, // 005F GETMET R9 R4 K7 - 0x582C000F, // 0060 LDCONST R11 K15 - 0x5830000A, // 0061 LDCONST R12 K10 - 0x7C240600, // 0062 CALL R9 3 - 0x7C180600, // 0063 CALL R6 3 - 0x581C0013, // 0064 LDCONST R7 K19 - 0x7C140400, // 0065 CALL R5 2 - 0x8C14050E, // 0066 GETMET R5 R2 K14 - 0x881C0115, // 0067 GETMBR R7 R0 K21 - 0x8C200907, // 0068 GETMET R8 R4 K7 - 0x5828000F, // 0069 LDCONST R10 K15 - 0x582C000A, // 006A LDCONST R11 K10 - 0x7C200600, // 006B CALL R8 3 - 0x7C140600, // 006C CALL R5 3 - 0xB8122200, // 006D GETNGBL R4 K17 - 0x60140018, // 006E GETGBL R5 G24 - 0x58180016, // 006F LDCONST R6 K22 - 0x78060001, // 0070 JMPF R1 #0073 - 0x581C0004, // 0071 LDCONST R7 K4 - 0x70020000, // 0072 JMP #0074 - 0x581C0014, // 0073 LDCONST R7 K20 - 0x78060001, // 0074 JMPF R1 #0077 - 0x88200105, // 0075 GETMBR R8 R0 K5 - 0x70020000, // 0076 JMP #0078 - 0x88200115, // 0077 GETMBR R8 R0 K21 - 0x7C140600, // 0078 CALL R5 3 - 0x58180013, // 0079 LDCONST R6 K19 - 0x7C100400, // 007A CALL R4 2 - 0xA8040001, // 007B EXBLK 1 1 - 0x7002000F, // 007C JMP #008D - 0xAC100002, // 007D CATCH R4 0 2 - 0x7002000C, // 007E JMP #008C - 0xB81A2200, // 007F GETNGBL R6 K17 - 0x601C0008, // 0080 GETGBL R7 G8 - 0x5C200800, // 0081 MOVE R8 R4 - 0x7C1C0200, // 0082 CALL R7 1 - 0x001E2E07, // 0083 ADD R7 K23 R7 - 0x001C0F18, // 0084 ADD R7 R7 K24 - 0x60200008, // 0085 GETGBL R8 G8 - 0x5C240A00, // 0086 MOVE R9 R5 - 0x7C200200, // 0087 CALL R8 1 - 0x001C0E08, // 0088 ADD R7 R7 R8 - 0x58200019, // 0089 LDCONST R8 K25 - 0x7C180400, // 008A CALL R6 2 - 0x70020000, // 008B JMP #008D - 0xB0080000, // 008C RAISE 2 R0 R0 - 0x8C10011A, // 008D GETMET R4 R0 K26 - 0x7C100200, // 008E CALL R4 1 - 0x80000000, // 008F RET 0 + 0x4C100000, // 0004 LDNIL R4 + 0x90020604, // 0005 SETMBR R0 K3 R4 + 0x4C100000, // 0006 LDNIL R4 + 0x90020804, // 0007 SETMBR R0 K4 R4 + 0x8C100105, // 0008 GETMET R4 R0 K5 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C100400, // 000A CALL R4 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -714,2125 +518,6 @@ be_local_closure(class_Matter_Device_invoke_request, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: MtrInfo -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrInfo, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(MtrInfo_one), - /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(int), - /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrInfo), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x1C140700, // 0000 EQ R5 R3 K0 - 0x7815FFFF, // 0001 JMPF R5 #0002 - 0x1C140700, // 0002 EQ R5 R3 K0 - 0x7816000D, // 0003 JMPF R5 #0012 - 0x60140010, // 0004 GETGBL R5 G16 - 0x88180101, // 0005 GETMBR R6 R0 K1 - 0x7C140200, // 0006 CALL R5 1 - 0xA8020005, // 0007 EXBLK 0 #000E - 0x5C180A00, // 0008 MOVE R6 R5 - 0x7C180000, // 0009 CALL R6 0 - 0x8C1C0102, // 000A GETMET R7 R0 K2 - 0x88240D03, // 000B GETMBR R9 R6 K3 - 0x7C1C0400, // 000C CALL R7 2 - 0x7001FFF9, // 000D JMP #0008 - 0x58140004, // 000E LDCONST R5 K4 - 0xAC140200, // 000F CATCH R5 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x70020011, // 0011 JMP #0024 - 0x60140004, // 0012 GETGBL R5 G4 - 0x5C180800, // 0013 MOVE R6 R4 - 0x7C140200, // 0014 CALL R5 1 - 0x1C140B05, // 0015 EQ R5 R5 K5 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C140102, // 0017 GETMET R5 R0 K2 - 0x5C1C0800, // 0018 MOVE R7 R4 - 0x7C140400, // 0019 CALL R5 2 - 0x70020008, // 001A JMP #0024 - 0x8C140106, // 001B GETMET R5 R0 K6 - 0x5C1C0600, // 001C MOVE R7 R3 - 0x7C140400, // 001D CALL R5 2 - 0x4C180000, // 001E LDNIL R6 - 0x20180A06, // 001F NE R6 R5 R6 - 0x781A0002, // 0020 JMPF R6 #0024 - 0x8C180102, // 0021 GETMET R6 R0 K2 - 0x88200B03, // 0022 GETMBR R8 R5 K3 - 0x7C180400, // 0023 CALL R6 2 - 0xB8160E00, // 0024 GETNGBL R5 K7 - 0x8C140B08, // 0025 GETMET R5 R5 K8 - 0x7C140200, // 0026 CALL R5 1 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_displayname -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(DISPLAY_NAME), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_displayname), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_add_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K4 */ be_nested_str_weak(_X27_X20skipping), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(next_ep), - /* K7 */ be_nested_str_weak(plugins), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(type), - /* K10 */ be_nested_str_weak(keys), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K13 */ be_nested_str_weak(conf_to_log), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_persist), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(save_param), - /* K19 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_add_endpoint), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120008, // 0006 JMPF R4 #0010 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x60140008, // 0008 GETGBL R5 G8 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C140200, // 000A CALL R5 1 - 0x00160605, // 000B ADD R5 K3 R5 - 0x00140B04, // 000C ADD R5 R5 K4 - 0x58180005, // 000D LDCONST R6 K5 - 0x7C100400, // 000E CALL R4 2 - 0x80000800, // 000F RET 0 - 0x88100106, // 0010 GETMBR R4 R0 K6 - 0x60140008, // 0011 GETGBL R5 G8 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x5C180600, // 0014 MOVE R6 R3 - 0x5C1C0000, // 0015 MOVE R7 R0 - 0x5C200800, // 0016 MOVE R8 R4 - 0x5C240400, // 0017 MOVE R9 R2 - 0x7C180600, // 0018 CALL R6 3 - 0x881C0107, // 0019 GETMBR R7 R0 K7 - 0x8C1C0F08, // 001A GETMET R7 R7 K8 - 0x5C240C00, // 001B MOVE R9 R6 - 0x7C1C0400, // 001C CALL R7 2 - 0x601C0013, // 001D GETGBL R7 G19 - 0x7C1C0000, // 001E CALL R7 0 - 0x981E1201, // 001F SETIDX R7 K9 R1 - 0x60200010, // 0020 GETGBL R8 G16 - 0x8C24050A, // 0021 GETMET R9 R2 K10 - 0x7C240200, // 0022 CALL R9 1 - 0x7C200200, // 0023 CALL R8 1 - 0xA8020004, // 0024 EXBLK 0 #002A - 0x5C241000, // 0025 MOVE R9 R8 - 0x7C240000, // 0026 CALL R9 0 - 0x94280409, // 0027 GETIDX R10 R2 R9 - 0x981C120A, // 0028 SETIDX R7 R9 R10 - 0x7001FFFA, // 0029 JMP #0025 - 0x5820000B, // 002A LDCONST R8 K11 - 0xAC200200, // 002B CATCH R8 1 0 - 0xB0080000, // 002C RAISE 2 R0 R0 - 0xB8220400, // 002D GETNGBL R8 K2 - 0x60240018, // 002E GETGBL R9 G24 - 0x5828000C, // 002F LDCONST R10 K12 - 0x5C2C0800, // 0030 MOVE R11 R4 - 0x5C300200, // 0031 MOVE R12 R1 - 0x8C34010D, // 0032 GETMET R13 R0 K13 - 0x5C3C0400, // 0033 MOVE R15 R2 - 0x7C340400, // 0034 CALL R13 2 - 0x7C240800, // 0035 CALL R9 4 - 0x5828000E, // 0036 LDCONST R10 K14 - 0x7C200400, // 0037 CALL R8 2 - 0x8820010F, // 0038 GETMBR R8 R0 K15 - 0x98200A07, // 0039 SETIDX R8 R5 R7 - 0x50200200, // 003A LDBOOL R8 1 0 - 0x90022008, // 003B SETMBR R0 K16 R8 - 0x88200106, // 003C GETMBR R8 R0 K6 - 0x00201111, // 003D ADD R8 R8 K17 - 0x90020C08, // 003E SETMBR R0 K6 R8 - 0x8C200112, // 003F GETMET R8 R0 K18 - 0x7C200200, // 0040 CALL R8 1 - 0x8C200113, // 0041 GETMET R8 R0 K19 - 0x7C200200, // 0042 CALL R8 1 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_http_remote -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_register_http_remote, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(get_timeout), - /* K3 */ be_nested_str_weak(set_timeout), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(HTTP_remote), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(set_info), - }), - be_str_weak(register_http_remote), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x600C0013, // 0004 GETGBL R3 G19 - 0x7C0C0000, // 0005 CALL R3 0 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x8C100901, // 0009 GETMET R4 R4 K1 - 0x5C180200, // 000A MOVE R6 R1 - 0x7C100400, // 000B CALL R4 2 - 0x78120009, // 000C JMPF R4 #0017 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x940C0801, // 000E GETIDX R3 R4 R1 - 0x8C140702, // 000F GETMET R5 R3 K2 - 0x7C140200, // 0010 CALL R5 1 - 0x14140405, // 0011 LT R5 R2 R5 - 0x78160002, // 0012 JMPF R5 #0016 - 0x8C140703, // 0013 GETMET R5 R3 K3 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C140400, // 0015 CALL R5 2 - 0x70020011, // 0016 JMP #0029 - 0xB8120800, // 0017 GETNGBL R4 K4 - 0x8C100905, // 0018 GETMET R4 R4 K5 - 0x5C180000, // 0019 MOVE R6 R0 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x5C200400, // 001B MOVE R8 R2 - 0x7C100800, // 001C CALL R4 4 - 0x5C0C0800, // 001D MOVE R3 R4 - 0x88100106, // 001E GETMBR R4 R0 K6 - 0x8C100901, // 001F GETMET R4 R4 K1 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100707, // 0023 GETMET R4 R3 K7 - 0x88180106, // 0024 GETMBR R6 R0 K6 - 0x94180C01, // 0025 GETIDX R6 R6 R1 - 0x7C100400, // 0026 CALL R4 2 - 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x98100203, // 0028 SETIDX R4 R1 R3 - 0x80040600, // 0029 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_read_sensors_schedule -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(jitter), - }), - be_str_weak(add_read_sensors_schedule), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x740A0002, // 0003 JMPT R2 #0007 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x24080401, // 0005 GT R2 R2 R1 - 0x780A0005, // 0006 JMPF R2 #000D - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x8C080503, // 0009 GETMET R2 R2 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x90020202, // 000C SETMBR R0 K1 R2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_received -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_received, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(msg_received), - }), - be_str_weak(msg_received), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_qrcode_content -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(setbits), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(vendorid), - /* K4 */ be_nested_str_weak(productid), - /* K5 */ be_nested_str_weak(root_discriminator), - /* K6 */ be_nested_str_weak(root_passcode), - /* K7 */ be_const_int(134217727), - /* K8 */ be_nested_str_weak(MT_X3A), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(Base38), - /* K11 */ be_nested_str_weak(encode), - }), - be_str_weak(compute_qrcode_content), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 - 0x540E000A, // 0003 LDINT R3 11 - 0x7C040400, // 0004 CALL R1 2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x5416000F, // 0007 LDINT R5 16 - 0x88180103, // 0008 GETMBR R6 R0 K3 - 0x7C080800, // 0009 CALL R2 4 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x54120012, // 000B LDINT R4 19 - 0x5416000F, // 000C LDINT R5 16 - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x7C080800, // 000E CALL R2 4 - 0x8C080301, // 000F GETMET R2 R1 K1 - 0x54120024, // 0010 LDINT R4 37 - 0x54160007, // 0011 LDINT R5 8 - 0x541A0003, // 0012 LDINT R6 4 - 0x7C080800, // 0013 CALL R2 4 - 0x8C080301, // 0014 GETMET R2 R1 K1 - 0x5412002C, // 0015 LDINT R4 45 - 0x5416000B, // 0016 LDINT R5 12 - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x541E0FFE, // 0018 LDINT R7 4095 - 0x2C180C07, // 0019 AND R6 R6 R7 - 0x7C080800, // 001A CALL R2 4 - 0x8C080301, // 001B GETMET R2 R1 K1 - 0x54120038, // 001C LDINT R4 57 - 0x5416001A, // 001D LDINT R5 27 - 0x88180106, // 001E GETMBR R6 R0 K6 - 0x2C180D07, // 001F AND R6 R6 K7 - 0x7C080800, // 0020 CALL R2 4 - 0xB80A1200, // 0021 GETNGBL R2 K9 - 0x8808050A, // 0022 GETMBR R2 R2 K10 - 0x8C08050B, // 0023 GETMET R2 R2 K11 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x000A1002, // 0026 ADD R2 K8 R2 - 0x80040400, // 0027 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device_map -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ - be_nested_proto( - 19, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(START_ENDPOINT), - /* K3 */ be_nested_str_weak(light), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(channels), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_const_int(0), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(light1), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(light2), - /* K14 */ be_nested_str_weak(light3), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(cmd), - /* K17 */ be_nested_str_weak(Status_X2013), - /* K18 */ be_nested_str_weak(log), - /* K19 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(contains), - /* K22 */ be_nested_str_weak(StatusSHT), - /* K23 */ be_nested_str_weak(SHT), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), - /* K25 */ be_nested_str_weak(Relay1), - /* K26 */ be_nested_str_weak(Relay2), - /* K27 */ be_nested_str_weak(push), - /* K28 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), - /* K29 */ be_nested_str_weak(TiltConfig), - /* K30 */ be_nested_str_weak(shutter_X2Btilt), - /* K31 */ be_nested_str_weak(shutter), - /* K32 */ be_nested_str_weak(get_power), - /* K33 */ be_nested_str_weak(relay), - /* K34 */ be_nested_str_weak(load), - /* K35 */ be_nested_str_weak(read_sensors), - /* K36 */ be_nested_str_weak(autoconf_sensors_list), - /* K37 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(autoconf_device_map), - &be_const_str_solidified, - ( &(const binstruction[196]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x60080013, // 0001 GETGBL R2 G19 - 0x7C080000, // 0002 CALL R2 0 - 0xB80E0200, // 0003 GETNGBL R3 K1 - 0x880C0702, // 0004 GETMBR R3 R3 K2 - 0x50100000, // 0005 LDBOOL R4 0 0 - 0xA4160600, // 0006 IMPORT R5 K3 - 0x8C180B04, // 0007 GETMET R6 R5 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x4C1C0000, // 0009 LDNIL R7 - 0x201C0C07, // 000A NE R7 R6 R7 - 0x781E0024, // 000B JMPF R7 #0031 - 0x601C000C, // 000C GETGBL R7 G12 - 0x8C200D05, // 000D GETMET R8 R6 K5 - 0x58280006, // 000E LDCONST R10 K6 - 0x582C0007, // 000F LDCONST R11 K7 - 0x7C200600, // 0010 CALL R8 3 - 0x7C1C0200, // 0011 CALL R7 1 - 0x24200F08, // 0012 GT R8 R7 K8 - 0x7822001C, // 0013 JMPF R8 #0031 - 0x1C200F09, // 0014 EQ R8 R7 K9 - 0x78220007, // 0015 JMPF R8 #001E - 0x60200008, // 0016 GETGBL R8 G8 - 0x5C240600, // 0017 MOVE R9 R3 - 0x7C200200, // 0018 CALL R8 1 - 0x60240013, // 0019 GETGBL R9 G19 - 0x7C240000, // 001A CALL R9 0 - 0x9826150B, // 001B SETIDX R9 K10 K11 - 0x98081009, // 001C SETIDX R2 R8 R9 - 0x70020010, // 001D JMP #002F - 0x1C200F0C, // 001E EQ R8 R7 K12 - 0x78220007, // 001F JMPF R8 #0028 - 0x60200008, // 0020 GETGBL R8 G8 - 0x5C240600, // 0021 MOVE R9 R3 - 0x7C200200, // 0022 CALL R8 1 - 0x60240013, // 0023 GETGBL R9 G19 - 0x7C240000, // 0024 CALL R9 0 - 0x9826150D, // 0025 SETIDX R9 K10 K13 - 0x98081009, // 0026 SETIDX R2 R8 R9 - 0x70020006, // 0027 JMP #002F - 0x60200008, // 0028 GETGBL R8 G8 - 0x5C240600, // 0029 MOVE R9 R3 - 0x7C200200, // 002A CALL R8 1 - 0x60240013, // 002B GETGBL R9 G19 - 0x7C240000, // 002C CALL R9 0 - 0x9826150E, // 002D SETIDX R9 K10 K14 - 0x98081009, // 002E SETIDX R2 R8 R9 - 0x50100200, // 002F LDBOOL R4 1 0 - 0x000C0709, // 0030 ADD R3 R3 K9 - 0xB81E1E00, // 0031 GETNGBL R7 K15 - 0x8C1C0F10, // 0032 GETMET R7 R7 K16 - 0x58240011, // 0033 LDCONST R9 K17 - 0x50280200, // 0034 LDBOOL R10 1 0 - 0x7C1C0600, // 0035 CALL R7 3 - 0x60200012, // 0036 GETGBL R8 G18 - 0x7C200000, // 0037 CALL R8 0 - 0xB8262400, // 0038 GETNGBL R9 K18 - 0x60280008, // 0039 GETGBL R10 G8 - 0x5C2C0E00, // 003A MOVE R11 R7 - 0x7C280200, // 003B CALL R10 1 - 0x002A260A, // 003C ADD R10 K19 R10 - 0x582C0014, // 003D LDCONST R11 K20 - 0x7C240400, // 003E CALL R9 2 - 0x4C240000, // 003F LDNIL R9 - 0x20240E09, // 0040 NE R9 R7 R9 - 0x7826004D, // 0041 JMPF R9 #0090 - 0x8C240F15, // 0042 GETMET R9 R7 K21 - 0x582C0016, // 0043 LDCONST R11 K22 - 0x7C240400, // 0044 CALL R9 2 - 0x78260049, // 0045 JMPF R9 #0090 - 0x941C0F16, // 0046 GETIDX R7 R7 K22 - 0x58240008, // 0047 LDCONST R9 K8 - 0x50280200, // 0048 LDBOOL R10 1 0 - 0x782A0045, // 0049 JMPF R10 #0090 - 0x60280008, // 004A GETGBL R10 G8 - 0x5C2C1200, // 004B MOVE R11 R9 - 0x7C280200, // 004C CALL R10 1 - 0x002A2E0A, // 004D ADD R10 K23 R10 - 0x8C2C0F15, // 004E GETMET R11 R7 K21 - 0x5C341400, // 004F MOVE R13 R10 - 0x7C2C0400, // 0050 CALL R11 2 - 0x742E0000, // 0051 JMPT R11 #0053 - 0x7002003C, // 0052 JMP #0090 - 0x942C0E0A, // 0053 GETIDX R11 R7 R10 - 0xB8322400, // 0054 GETNGBL R12 K18 - 0x60340018, // 0055 GETGBL R13 G24 - 0x58380018, // 0056 LDCONST R14 K24 - 0x5C3C1400, // 0057 MOVE R15 R10 - 0x60400008, // 0058 GETGBL R16 G8 - 0x5C441600, // 0059 MOVE R17 R11 - 0x7C400200, // 005A CALL R16 1 - 0x7C340600, // 005B CALL R13 3 - 0x58380014, // 005C LDCONST R14 K20 - 0x7C300400, // 005D CALL R12 2 - 0x8C301705, // 005E GETMET R12 R11 K5 - 0x58380019, // 005F LDCONST R14 K25 - 0x543DFFFE, // 0060 LDINT R15 -1 - 0x7C300600, // 0061 CALL R12 3 - 0x8C341705, // 0062 GETMET R13 R11 K5 - 0x583C001A, // 0063 LDCONST R15 K26 - 0x5441FFFE, // 0064 LDINT R16 -1 - 0x7C340600, // 0065 CALL R13 3 - 0x24381908, // 0066 GT R14 R12 K8 - 0x783A0002, // 0067 JMPF R14 #006B - 0x8C38111B, // 0068 GETMET R14 R8 K27 - 0x04401909, // 0069 SUB R16 R12 K9 - 0x7C380400, // 006A CALL R14 2 - 0x24381B08, // 006B GT R14 R13 K8 - 0x783A0002, // 006C JMPF R14 #0070 - 0x8C38111B, // 006D GETMET R14 R8 K27 - 0x04401B09, // 006E SUB R16 R13 K9 - 0x7C380400, // 006F CALL R14 2 - 0xB83A2400, // 0070 GETNGBL R14 K18 - 0x603C0018, // 0071 GETGBL R15 G24 - 0x5840001C, // 0072 LDCONST R16 K28 - 0x5C441800, // 0073 MOVE R17 R12 - 0x5C481A00, // 0074 MOVE R18 R13 - 0x7C3C0600, // 0075 CALL R15 3 - 0x58400014, // 0076 LDCONST R16 K20 - 0x7C380400, // 0077 CALL R14 2 - 0x8C381705, // 0078 GETMET R14 R11 K5 - 0x5840001D, // 0079 LDCONST R16 K29 - 0x7C380400, // 007A CALL R14 2 - 0x783A0002, // 007B JMPF R14 #007F - 0x943C1D0C, // 007C GETIDX R15 R14 K12 - 0x243C1F08, // 007D GT R15 R15 K8 - 0x743E0000, // 007E JMPT R15 #0080 - 0x503C0001, // 007F LDBOOL R15 0 1 - 0x503C0200, // 0080 LDBOOL R15 1 0 - 0x60400008, // 0081 GETGBL R16 G8 - 0x5C440600, // 0082 MOVE R17 R3 - 0x7C400200, // 0083 CALL R16 1 - 0x60440013, // 0084 GETGBL R17 G19 - 0x7C440000, // 0085 CALL R17 0 - 0x783E0001, // 0086 JMPF R15 #0089 - 0x5848001E, // 0087 LDCONST R18 K30 - 0x70020000, // 0088 JMP #008A - 0x5848001F, // 0089 LDCONST R18 K31 - 0x98461412, // 008A SETIDX R17 K10 R18 - 0x98463E09, // 008B SETIDX R17 K31 R9 - 0x98082011, // 008C SETIDX R2 R16 R17 - 0x000C0709, // 008D ADD R3 R3 K9 - 0x00241309, // 008E ADD R9 R9 K9 - 0x7001FFB7, // 008F JMP #0048 - 0x6024000C, // 0090 GETGBL R9 G12 - 0xB82A1E00, // 0091 GETNGBL R10 K15 - 0x8C281520, // 0092 GETMET R10 R10 K32 - 0x7C280200, // 0093 CALL R10 1 - 0x7C240200, // 0094 CALL R9 1 - 0x58280008, // 0095 LDCONST R10 K8 - 0x78120000, // 0096 JMPF R4 #0098 - 0x04241309, // 0097 SUB R9 R9 K9 - 0x142C1409, // 0098 LT R11 R10 R9 - 0x782E0011, // 0099 JMPF R11 #00AC - 0x8C2C1105, // 009A GETMET R11 R8 K5 - 0x5C341400, // 009B MOVE R13 R10 - 0x7C2C0400, // 009C CALL R11 2 - 0x4C300000, // 009D LDNIL R12 - 0x1C2C160C, // 009E EQ R11 R11 R12 - 0x782E0009, // 009F JMPF R11 #00AA - 0x602C0008, // 00A0 GETGBL R11 G8 - 0x5C300600, // 00A1 MOVE R12 R3 - 0x7C2C0200, // 00A2 CALL R11 1 - 0x60300013, // 00A3 GETGBL R12 G19 - 0x7C300000, // 00A4 CALL R12 0 - 0x98321521, // 00A5 SETIDX R12 K10 K33 - 0x00341509, // 00A6 ADD R13 R10 K9 - 0x9832420D, // 00A7 SETIDX R12 K33 R13 - 0x9808160C, // 00A8 SETIDX R2 R11 R12 - 0x000C0709, // 00A9 ADD R3 R3 K9 - 0x00281509, // 00AA ADD R10 R10 K9 - 0x7001FFEB, // 00AB JMP #0098 - 0x8C2C0322, // 00AC GETMET R11 R1 K34 - 0xB8361E00, // 00AD GETNGBL R13 K15 - 0x8C341B23, // 00AE GETMET R13 R13 K35 - 0x7C340200, // 00AF CALL R13 1 - 0x7C2C0400, // 00B0 CALL R11 2 - 0x8C300124, // 00B1 GETMET R12 R0 K36 - 0x5C381600, // 00B2 MOVE R14 R11 - 0x7C300400, // 00B3 CALL R12 2 - 0x60340010, // 00B4 GETGBL R13 G16 - 0x5C381800, // 00B5 MOVE R14 R12 - 0x7C340200, // 00B6 CALL R13 1 - 0xA8020007, // 00B7 EXBLK 0 #00C0 - 0x5C381A00, // 00B8 MOVE R14 R13 - 0x7C380000, // 00B9 CALL R14 0 - 0x603C0008, // 00BA GETGBL R15 G8 - 0x5C400600, // 00BB MOVE R16 R3 - 0x7C3C0200, // 00BC CALL R15 1 - 0x98081E0E, // 00BD SETIDX R2 R15 R14 - 0x000C0709, // 00BE ADD R3 R3 K9 - 0x7001FFF7, // 00BF JMP #00B8 - 0x58340025, // 00C0 LDCONST R13 K37 - 0xAC340200, // 00C1 CATCH R13 1 0 - 0xB0080000, // 00C2 RAISE 2 R0 R0 - 0x80040400, // 00C3 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_fabrics -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_announce_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_expansion -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(start), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(get_pi), - /* K8 */ be_nested_str_weak(endpoint_found), - /* K9 */ be_nested_str_weak(status), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K11 */ be_nested_str_weak(cluster_found), - /* K12 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K13 */ be_nested_str_weak(attribute_found), - /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), - }), - be_str_weak(process_attribute_expansion), - &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x88140302, // 0002 GETMBR R5 R1 K2 - 0x50180000, // 0003 LDBOOL R6 0 0 - 0x501C0000, // 0004 LDBOOL R7 0 0 - 0x50200000, // 0005 LDBOOL R8 0 0 - 0x88240300, // 0006 GETMBR R9 R1 K0 - 0x4C280000, // 0007 LDNIL R10 - 0x2024120A, // 0008 NE R9 R9 R10 - 0x78260007, // 0009 JMPF R9 #0012 - 0x88240301, // 000A GETMBR R9 R1 K1 - 0x4C280000, // 000B LDNIL R10 - 0x2024120A, // 000C NE R9 R9 R10 - 0x78260003, // 000D JMPF R9 #0012 - 0x88240302, // 000E GETMBR R9 R1 K2 - 0x4C280000, // 000F LDNIL R10 - 0x2024120A, // 0010 NE R9 R9 R10 - 0x74260000, // 0011 JMPT R9 #0013 - 0x50240001, // 0012 LDBOOL R9 0 1 - 0x50240200, // 0013 LDBOOL R9 1 0 - 0xB82A0600, // 0014 GETNGBL R10 K3 - 0x8C281504, // 0015 GETMET R10 R10 K4 - 0x5C300000, // 0016 MOVE R12 R0 - 0x7C280400, // 0017 CALL R10 2 - 0x8C2C1505, // 0018 GETMET R11 R10 K5 - 0x5C340200, // 0019 MOVE R13 R1 - 0x4C380000, // 001A LDNIL R14 - 0x7C2C0600, // 001B CALL R11 3 - 0x4C2C0000, // 001C LDNIL R11 - 0x8C301506, // 001D GETMET R12 R10 K6 - 0x7C300200, // 001E CALL R12 1 - 0x5C2C1800, // 001F MOVE R11 R12 - 0x4C340000, // 0020 LDNIL R13 - 0x2030180D, // 0021 NE R12 R12 R13 - 0x78320009, // 0022 JMPF R12 #002D - 0x5C300400, // 0023 MOVE R12 R2 - 0x8C341507, // 0024 GETMET R13 R10 K7 - 0x7C340200, // 0025 CALL R13 1 - 0x5C381600, // 0026 MOVE R14 R11 - 0x5C3C1200, // 0027 MOVE R15 R9 - 0x7C300600, // 0028 CALL R12 3 - 0x78260001, // 0029 JMPF R9 #002C - 0x78320000, // 002A JMPF R12 #002C - 0x80001A00, // 002B RET 0 - 0x7001FFEF, // 002C JMP #001D - 0x78260019, // 002D JMPF R9 #0048 - 0x88301508, // 002E GETMBR R12 R10 K8 - 0x74320003, // 002F JMPT R12 #0034 - 0xB8320600, // 0030 GETNGBL R12 K3 - 0x8830190A, // 0031 GETMBR R12 R12 K10 - 0x9006120C, // 0032 SETMBR R1 K9 R12 - 0x7002000E, // 0033 JMP #0043 - 0x8830150B, // 0034 GETMBR R12 R10 K11 - 0x74320003, // 0035 JMPT R12 #003A - 0xB8320600, // 0036 GETNGBL R12 K3 - 0x8830190C, // 0037 GETMBR R12 R12 K12 - 0x9006120C, // 0038 SETMBR R1 K9 R12 - 0x70020008, // 0039 JMP #0043 - 0x8830150D, // 003A GETMBR R12 R10 K13 - 0x74320003, // 003B JMPT R12 #0040 - 0xB8320600, // 003C GETNGBL R12 K3 - 0x8830190E, // 003D GETMBR R12 R12 K14 - 0x9006120C, // 003E SETMBR R1 K9 R12 - 0x70020002, // 003F JMP #0043 - 0xB8320600, // 0040 GETNGBL R12 K3 - 0x8830190F, // 0041 GETMBR R12 R12 K15 - 0x9006120C, // 0042 SETMBR R1 K9 R12 - 0x5C300400, // 0043 MOVE R12 R2 - 0x4C340000, // 0044 LDNIL R13 - 0x5C380200, // 0045 MOVE R14 R1 - 0x503C0200, // 0046 LDBOOL R15 1 0 - 0x7C300600, // 0047 CALL R12 3 - 0x80000000, // 0048 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_commands -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_register_commands, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 4]) { - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrJoin), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrUpdate), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrInfo), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(add_cmd), - /* K2 */ be_nested_str_weak(MtrJoin), - /* K3 */ be_nested_str_weak(MtrUpdate), - /* K4 */ be_nested_str_weak(MtrInfo), - }), - be_str_weak(register_commands), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x84100000, // 0003 CLOSURE R4 P0 - 0x7C040600, // 0004 CALL R1 3 - 0xB8060000, // 0005 GETNGBL R1 K0 - 0x8C040301, // 0006 GETMET R1 R1 K1 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x84100001, // 0008 CLOSURE R4 P1 - 0x7C040600, // 0009 CALL R1 3 - 0xB8060000, // 000A GETNGBL R1 K0 - 0x8C040301, // 000B GETMET R1 R1 K1 - 0x580C0004, // 000C LDCONST R3 K4 - 0x84100002, // 000D CLOSURE R4 P2 - 0x7C040600, // 000E CALL R1 3 - 0xA0000000, // 000F CLOSE R0 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_remotes_info -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_update_remotes_info, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(get_info), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(plugins_config_remotes), - }), - be_str_weak(update_remotes_info), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x20080403, // 0004 NE R2 R2 R3 - 0x780A0018, // 0005 JMPF R2 #001F - 0x60080010, // 0006 GETGBL R2 G16 - 0x880C0100, // 0007 GETMBR R3 R0 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7C080200, // 000A CALL R2 1 - 0xA802000F, // 000B EXBLK 0 #001C - 0x5C0C0400, // 000C MOVE R3 R2 - 0x7C0C0000, // 000D CALL R3 0 - 0x88100100, // 000E GETMBR R4 R0 K0 - 0x94100803, // 000F GETIDX R4 R4 R3 - 0x8C100902, // 0010 GETMET R4 R4 K2 - 0x7C100200, // 0011 CALL R4 1 - 0x4C140000, // 0012 LDNIL R5 - 0x20140805, // 0013 NE R5 R4 R5 - 0x78160005, // 0014 JMPF R5 #001B - 0x6014000C, // 0015 GETGBL R5 G12 - 0x5C180800, // 0016 MOVE R6 R4 - 0x7C140200, // 0017 CALL R5 1 - 0x24140B03, // 0018 GT R5 R5 K3 - 0x78160000, // 0019 JMPF R5 #001B - 0x98040604, // 001A SETIDX R1 R3 R4 - 0x7001FFEF, // 001B JMP #000C - 0x58080004, // 001C LDCONST R2 K4 - 0xAC080200, // 001D CATCH R2 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x90020A01, // 001F SETMBR R0 K5 R1 - 0x80040200, // 0020 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _compute_pbkdf -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__compute_pbkdf, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), - /* K3 */ be_nested_str_weak(derive), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(root_w0), - /* K6 */ be_nested_str_weak(EC_P256), - /* K7 */ be_nested_str_weak(mod), - /* K8 */ be_nested_str_weak(root_L), - /* K9 */ be_nested_str_weak(public_key), - }), - be_str_weak(_compute_pbkdf), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x60140015, // 0001 GETGBL R5 G21 - 0x7C140000, // 0002 CALL R5 0 - 0x8C140B01, // 0003 GETMET R5 R5 K1 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x54220003, // 0005 LDINT R8 4 - 0x7C140600, // 0006 CALL R5 3 - 0x8C180902, // 0007 GETMET R6 R4 K2 - 0x7C180200, // 0008 CALL R6 1 - 0x8C180D03, // 0009 GETMET R6 R6 K3 - 0x5C200A00, // 000A MOVE R8 R5 - 0x5C240600, // 000B MOVE R9 R3 - 0x5C280400, // 000C MOVE R10 R2 - 0x542E004F, // 000D LDINT R11 80 - 0x7C180A00, // 000E CALL R6 5 - 0x541E0026, // 000F LDINT R7 39 - 0x401E0807, // 0010 CONNECT R7 K4 R7 - 0x941C0C07, // 0011 GETIDX R7 R6 R7 - 0x54220027, // 0012 LDINT R8 40 - 0x5426004E, // 0013 LDINT R9 79 - 0x40201009, // 0014 CONNECT R8 R8 R9 - 0x94200C08, // 0015 GETIDX R8 R6 R8 - 0x8C240906, // 0016 GETMET R9 R4 K6 - 0x7C240200, // 0017 CALL R9 1 - 0x8C241307, // 0018 GETMET R9 R9 K7 - 0x5C2C0E00, // 0019 MOVE R11 R7 - 0x7C240400, // 001A CALL R9 2 - 0x90020A09, // 001B SETMBR R0 K5 R9 - 0x8C240906, // 001C GETMET R9 R4 K6 - 0x7C240200, // 001D CALL R9 1 - 0x8C241307, // 001E GETMET R9 R9 K7 - 0x5C2C1000, // 001F MOVE R11 R8 - 0x7C240400, // 0020 CALL R9 2 - 0x8C280906, // 0021 GETMET R10 R4 K6 - 0x7C280200, // 0022 CALL R10 1 - 0x8C281509, // 0023 GETMET R10 R10 K9 - 0x5C301200, // 0024 MOVE R12 R9 - 0x7C280400, // 0025 CALL R10 2 - 0x9002100A, // 0026 SETMBR R0 K8 R10 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_friendly_name -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_name), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_plugin_by_friendly_name), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x1C080500, // 0006 EQ R2 R2 K0 - 0x780A0001, // 0007 JMPF R2 #000A - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - 0x58080000, // 000A LDCONST R2 K0 - 0x600C000C, // 000B GETGBL R3 G12 - 0x88100101, // 000C GETMBR R4 R0 K1 - 0x7C0C0200, // 000D CALL R3 1 - 0x140C0403, // 000E LT R3 R2 R3 - 0x780E0010, // 000F JMPF R3 #0021 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x940C0602, // 0011 GETIDX R3 R3 R2 - 0x8C100702, // 0012 GETMET R4 R3 K2 - 0x7C100200, // 0013 CALL R4 1 - 0x4C140000, // 0014 LDNIL R5 - 0x20140805, // 0015 NE R5 R4 R5 - 0x78160007, // 0016 JMPF R5 #001F - 0x6014000C, // 0017 GETGBL R5 G12 - 0x5C180800, // 0018 MOVE R6 R4 - 0x7C140200, // 0019 CALL R5 1 - 0x24140B00, // 001A GT R5 R5 K0 - 0x78160002, // 001B JMPF R5 #001F - 0x1C140801, // 001C EQ R5 R4 R1 - 0x78160000, // 001D JMPF R5 #001F - 0x80040600, // 001E RET 1 R3 - 0x00080503, // 001F ADD R2 R2 K3 - 0x7001FFE9, // 0020 JMP #000B - 0x4C0C0000, // 0021 LDNIL R3 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clean_remotes -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_clean_remotes, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(http_remotes), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(http_remote), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(keys), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(close), - /* K16 */ be_nested_str_weak(remove), - }), - be_str_weak(clean_remotes), - &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x780A004B, // 0002 JMPF R2 #004F - 0x60080013, // 0003 GETGBL R2 G19 - 0x7C080000, // 0004 CALL R2 0 - 0x600C0010, // 0005 GETGBL R3 G16 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020003, // 0008 EXBLK 0 #000D - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x98080902, // 000B SETIDX R2 R4 K2 - 0x7001FFFB, // 000C JMP #0009 - 0x580C0003, // 000D LDCONST R3 K3 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100104, // 0011 GETMBR R4 R0 K4 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA802000F, // 0013 EXBLK 0 #0024 - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x8C140305, // 0016 GETMET R5 R1 K5 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200006, // 0018 LDCONST R8 K6 - 0x7C140600, // 0019 CALL R5 3 - 0x4C180000, // 001A LDNIL R6 - 0x20180A06, // 001B NE R6 R5 R6 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180507, // 001D GETMET R6 R2 K7 - 0x5C200A00, // 001E MOVE R8 R5 - 0x58240002, // 001F LDCONST R9 K2 - 0x7C180600, // 0020 CALL R6 3 - 0x00180D08, // 0021 ADD R6 R6 K8 - 0x98080A06, // 0022 SETIDX R2 R5 R6 - 0x7001FFEF, // 0023 JMP #0014 - 0x580C0003, // 0024 LDCONST R3 K3 - 0xAC0C0200, // 0025 CATCH R3 1 0 - 0xB0080000, // 0026 RAISE 2 R0 R0 - 0x600C0012, // 0027 GETGBL R3 G18 - 0x7C0C0000, // 0028 CALL R3 0 - 0x60100010, // 0029 GETGBL R4 G16 - 0x8C140509, // 002A GETMET R5 R2 K9 - 0x7C140200, // 002B CALL R5 1 - 0x7C100200, // 002C CALL R4 1 - 0xA8020008, // 002D EXBLK 0 #0037 - 0x5C140800, // 002E MOVE R5 R4 - 0x7C140000, // 002F CALL R5 0 - 0x94180405, // 0030 GETIDX R6 R2 R5 - 0x1C180D02, // 0031 EQ R6 R6 K2 - 0x781A0002, // 0032 JMPF R6 #0036 - 0x8C18070A, // 0033 GETMET R6 R3 K10 - 0x5C200A00, // 0034 MOVE R8 R5 - 0x7C180400, // 0035 CALL R6 2 - 0x7001FFF6, // 0036 JMP #002E - 0x58100003, // 0037 LDCONST R4 K3 - 0xAC100200, // 0038 CATCH R4 1 0 - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x60100010, // 003A GETGBL R4 G16 - 0x5C140600, // 003B MOVE R5 R3 - 0x7C100200, // 003C CALL R4 1 - 0xA802000D, // 003D EXBLK 0 #004C - 0x5C140800, // 003E MOVE R5 R4 - 0x7C140000, // 003F CALL R5 0 - 0xB81A1600, // 0040 GETNGBL R6 K11 - 0x881C0B0D, // 0041 GETMBR R7 R5 K13 - 0x001E1807, // 0042 ADD R7 K12 R7 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x7C180400, // 0044 CALL R6 2 - 0x8C180B0F, // 0045 GETMET R6 R5 K15 - 0x7C180200, // 0046 CALL R6 1 - 0x88180101, // 0047 GETMBR R6 R0 K1 - 0x8C180D10, // 0048 GETMET R6 R6 K16 - 0x88200B0D, // 0049 GETMBR R8 R5 K13 - 0x7C180400, // 004A CALL R6 2 - 0x7001FFF1, // 004B JMP #003E - 0x58100003, // 004C LDCONST R4 K3 - 0xAC100200, // 004D CATCH R4 1 0 - 0xB0080000, // 004E RAISE 2 R0 R0 - 0x80000000, // 004F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_manual_pairing_code -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(root_discriminator), - /* K1 */ be_nested_str_weak(root_passcode), - /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Verhoeff), - /* K5 */ be_nested_str_weak(checksum), - }), - be_str_weak(compute_manual_pairing_code), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x540A0FFE, // 0001 LDINT R2 4095 - 0x2C040202, // 0002 AND R1 R1 R2 - 0x540A0009, // 0003 LDINT R2 10 - 0x3C040202, // 0004 SHR R1 R1 R2 - 0x88080100, // 0005 GETMBR R2 R0 K0 - 0x540E02FF, // 0006 LDINT R3 768 - 0x2C080403, // 0007 AND R2 R2 R3 - 0x540E0005, // 0008 LDINT R3 6 - 0x38080403, // 0009 SHL R2 R2 R3 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x54123FFE, // 000B LDINT R4 16383 - 0x2C0C0604, // 000C AND R3 R3 R4 - 0x30080403, // 000D OR R2 R2 R3 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x5412000D, // 000F LDINT R4 14 - 0x3C0C0604, // 0010 SHR R3 R3 R4 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140002, // 0012 LDCONST R5 K2 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x5C200600, // 0015 MOVE R8 R3 - 0x7C100800, // 0016 CALL R4 4 - 0xB8160600, // 0017 GETNGBL R5 K3 - 0x88140B04, // 0018 GETMBR R5 R5 K4 - 0x8C140B05, // 0019 GETMET R5 R5 K5 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x00100805, // 001C ADD R4 R4 R5 - 0x80040800, // 001D RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_device, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(plugins_config), - /* K5 */ be_nested_str_weak(autoconf_device_map), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(adjust_next_ep), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(count_active_fabrics), - /* K14 */ be_nested_str_weak(save_param), - }), - be_str_weak(autoconf_device), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x24080502, // 0004 GT R2 R2 K2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x80000400, // 0006 RET 0 - 0x88080103, // 0007 GETMBR R2 R0 K3 - 0x740A000E, // 0008 JMPT R2 #0018 - 0x8C080105, // 0009 GETMET R2 R0 K5 - 0x7C080200, // 000A CALL R2 1 - 0x90020802, // 000B SETMBR R0 K4 R2 - 0x60080013, // 000C GETGBL R2 G19 - 0x7C080000, // 000D CALL R2 0 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x7C080200, // 0010 CALL R2 1 - 0xB80A1000, // 0011 GETNGBL R2 K8 - 0x600C0008, // 0012 GETGBL R3 G8 - 0x88100104, // 0013 GETMBR R4 R0 K4 - 0x7C0C0200, // 0014 CALL R3 1 - 0x000E1203, // 0015 ADD R3 K9 R3 - 0x5810000A, // 0016 LDCONST R4 K10 - 0x7C080400, // 0017 CALL R2 2 - 0x8C08010B, // 0018 GETMET R2 R0 K11 - 0x88100104, // 0019 GETMBR R4 R0 K4 - 0x7C080400, // 001A CALL R2 2 - 0x88080103, // 001B GETMBR R2 R0 K3 - 0x740A0008, // 001C JMPT R2 #0026 - 0x8808010C, // 001D GETMBR R2 R0 K12 - 0x8C08050D, // 001E GETMET R2 R2 K13 - 0x7C080200, // 001F CALL R2 1 - 0x24080502, // 0020 GT R2 R2 K2 - 0x780A0003, // 0021 JMPF R2 #0026 - 0x50080200, // 0022 LDBOOL R2 1 0 - 0x90020602, // 0023 SETMBR R0 K3 R2 - 0x8C08010E, // 0024 GETMET R2 R0 K14 - 0x7C080200, // 0025 CALL R2 1 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attribute_updated -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_attribute_updated, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Path), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(message_handler), - /* K6 */ be_nested_str_weak(im), - /* K7 */ be_nested_str_weak(subs_shop), - /* K8 */ be_nested_str_weak(attribute_updated_ctx), - }), - be_str_weak(attribute_updated), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160000, // 0002 JMPF R5 #0004 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0xB8160000, // 0004 GETNGBL R5 K0 - 0x8C140B01, // 0005 GETMET R5 R5 K1 - 0x7C140200, // 0006 CALL R5 1 - 0x90160401, // 0007 SETMBR R5 K2 R1 - 0x90160602, // 0008 SETMBR R5 K3 R2 - 0x90160803, // 0009 SETMBR R5 K4 R3 - 0x88180105, // 000A GETMBR R6 R0 K5 - 0x88180D06, // 000B GETMBR R6 R6 K6 - 0x88180D07, // 000C GETMBR R6 R6 K7 - 0x8C180D08, // 000D GETMET R6 R6 K8 - 0x5C200A00, // 000E MOVE R8 R5 - 0x5C240800, // 000F MOVE R9 R4 - 0x7C180600, // 0010 CALL R6 3 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save_before_restart -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_save_before_restart, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(stop_basic_commissioning), - /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), - }), - be_str_weak(save_before_restart), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_root_commissioning_open -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(commissioning_admin_fabric), - }), - be_str_weak(is_root_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060003, // 0003 JMPF R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x74060000, // 0007 JMPT R1 #0009 - 0x50040001, // 0008 LDBOOL R1 0 1 - 0x50040200, // 0009 LDBOOL R1 1 0 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete_deferred -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_commissioning_complete_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: adjust_next_ep -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(next_ep), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(adjust_next_ep), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000A, // 0005 EXBLK 0 #0011 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x600C0009, // 0008 GETGBL R3 G9 - 0x5C100400, // 0009 MOVE R4 R2 - 0x7C0C0200, // 000A CALL R3 1 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x28100604, // 000C GE R4 R3 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x00100703, // 000E ADD R4 R3 K3 - 0x90020404, // 000F SETMBR R0 K2 R4 - 0x7001FFF4, // 0010 JMP #0006 - 0x58040004, // 0011 LDCONST R1 K4 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(started), - /* K1 */ be_nested_str_weak(autoconf_device), - /* K2 */ be_nested_str_weak(_start_udp), - /* K3 */ be_nested_str_weak(UDP_PORT), - /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), - }), - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x8C040104, // 0008 GETMET R1 R0 K4 - 0x7C040200, // 0009 CALL R1 1 - 0x50040200, // 000A LDBOOL R1 1 0 - 0x90020001, // 000B SETMBR R0 K0 R1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_second, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(commissioning_open), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x4C080000, // 0007 LDNIL R2 - 0x20040202, // 0008 NE R1 R1 R2 - 0x78060006, // 0009 JMPF R1 #0011 - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0103, // 000C GETMBR R3 R0 K3 - 0x7C040400, // 000D CALL R1 2 - 0x78060001, // 000E JMPF R1 #0011 - 0x4C040000, // 000F LDNIL R1 - 0x90020601, // 0010 SETMBR R0 K3 R1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_fabric -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_remove_fabric, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), - /* K2 */ be_nested_str_weak(get_fabric_id), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(reverse), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(message_handler), - /* K8 */ be_nested_str_weak(im), - /* K9 */ be_nested_str_weak(subs_shop), - /* K10 */ be_nested_str_weak(remove_by_fabric), - /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(remove_fabric), - /* K14 */ be_nested_str_weak(save_fabrics), - }), - be_str_weak(remove_fabric), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0018, // 0002 JMPF R2 #001C - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C0C0302, // 0004 GETMET R3 R1 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0705, // 000A GETMET R3 R3 K5 - 0x7C0C0200, // 000B CALL R3 1 - 0x000E0203, // 000C ADD R3 K1 R3 - 0x58100006, // 000D LDCONST R4 K6 - 0x7C080400, // 000E CALL R2 2 - 0x88080107, // 000F GETMBR R2 R0 K7 - 0x88080508, // 0010 GETMBR R2 R2 K8 - 0x88080509, // 0011 GETMBR R2 R2 K9 - 0x8C08050A, // 0012 GETMET R2 R2 K10 - 0x5C100200, // 0013 MOVE R4 R1 - 0x7C080400, // 0014 CALL R2 2 - 0x8C08010B, // 0015 GETMET R2 R0 K11 - 0x5C100200, // 0016 MOVE R4 R1 - 0x7C080400, // 0017 CALL R2 2 - 0x8808010C, // 0018 GETMBR R2 R0 K12 - 0x8C08050D, // 0019 GETMET R2 R2 K13 - 0x5C100200, // 001A MOVE R4 R1 - 0x7C080400, // 001B CALL R2 2 - 0x8808010C, // 001C GETMBR R2 R0 K12 - 0x8C08050E, // 001D GETMET R2 R2 K14 - 0x7C080200, // 001E CALL R2 1 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sort_distinct -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_sort_distinct, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(remove), - }), - be_str_weak(sort_distinct), - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020010, // 0008 EXBLK 0 #001A - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x24180C04, // 0011 GT R6 R6 R4 - 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B01, // 0013 SUB R6 R5 K1 - 0x94180006, // 0014 GETIDX R6 R0 R6 - 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B01, // 0016 SUB R5 R5 K1 - 0x7001FFF4, // 0017 JMP #000D - 0x98000A04, // 0018 SETIDX R0 R5 R4 - 0x7001FFEE, // 0019 JMP #0009 - 0x58080003, // 001A LDCONST R2 K3 - 0xAC080200, // 001B CATCH R2 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x58080001, // 001D LDCONST R2 K1 - 0x600C000C, // 001E GETGBL R3 G12 - 0x5C100000, // 001F MOVE R4 R0 - 0x7C0C0200, // 0020 CALL R3 1 - 0x180C0701, // 0021 LE R3 R3 K1 - 0x780E0000, // 0022 JMPF R3 #0024 - 0x80040000, // 0023 RET 1 R0 - 0x940C0102, // 0024 GETIDX R3 R0 K2 - 0x6010000C, // 0025 GETGBL R4 G12 - 0x5C140000, // 0026 MOVE R5 R0 - 0x7C100200, // 0027 CALL R4 1 - 0x14100404, // 0028 LT R4 R2 R4 - 0x78120009, // 0029 JMPF R4 #0034 - 0x94100002, // 002A GETIDX R4 R0 R2 - 0x1C100803, // 002B EQ R4 R4 R3 - 0x78120003, // 002C JMPF R4 #0031 - 0x8C100104, // 002D GETMET R4 R0 K4 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x70020001, // 0030 JMP #0033 - 0x940C0002, // 0031 GETIDX R3 R0 R2 - 0x00080501, // 0032 ADD R2 R2 K1 - 0x7001FFF0, // 0033 JMP #0025 - 0x80040000, // 0034 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_root_basic_commissioning), - }), - be_str_weak(_init_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040302, // 0003 EQ R1 R1 K2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x7C040200, // 0006 CALL R1 1 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - /* K2 */ be_nested_str_weak(udp_server), - /* K3 */ be_nested_str_weak(stop), - }), - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x88040102, // 0004 GETMBR R1 R0 K2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040102, // 0006 GETMBR R1 R0 K2 - 0x8C040303, // 0007 GETMET R1 R1 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _trigger_read_sensors -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(read_sensors), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), - /* K7 */ be_nested_str_weak(load), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(plugins), - /* K10 */ be_nested_str_weak(parse_sensors), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), - }), - be_str_weak(_trigger_read_sensors), - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0xB80E0200, // 0004 GETNGBL R3 K1 - 0x8C0C0703, // 0005 GETMET R3 R3 K3 - 0x58140004, // 0006 LDCONST R5 K4 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0006, // 0008 JMPF R3 #0010 - 0xB80E0A00, // 0009 GETNGBL R3 K5 - 0x60100008, // 000A GETGBL R4 G8 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C100200, // 000C CALL R4 1 - 0x00120C04, // 000D ADD R4 K6 R4 - 0x58140004, // 000E LDCONST R5 K4 - 0x7C0C0400, // 000F CALL R3 2 - 0x4C0C0000, // 0010 LDNIL R3 - 0x1C0C0403, // 0011 EQ R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x80000600, // 0013 RET 0 - 0x8C0C0307, // 0014 GETMET R3 R1 K7 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x4C100000, // 0017 LDNIL R4 - 0x20100604, // 0018 NE R4 R3 R4 - 0x7812000D, // 0019 JMPF R4 #0028 - 0x58100008, // 001A LDCONST R4 K8 - 0x6014000C, // 001B GETGBL R5 G12 - 0x88180109, // 001C GETMBR R6 R0 K9 - 0x7C140200, // 001D CALL R5 1 - 0x14140805, // 001E LT R5 R4 R5 - 0x78160006, // 001F JMPF R5 #0027 - 0x88140109, // 0020 GETMBR R5 R0 K9 - 0x94140A04, // 0021 GETIDX R5 R5 R4 - 0x8C140B0A, // 0022 GETMET R5 R5 K10 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C140400, // 0024 CALL R5 2 - 0x0010090B, // 0025 ADD R4 R4 K11 - 0x7001FFF3, // 0026 JMP #001B - 0x70020006, // 0027 JMP #002F - 0xB8120A00, // 0028 GETNGBL R4 K5 - 0x60140008, // 0029 GETGBL R5 G8 - 0x5C180400, // 002A MOVE R6 R2 - 0x7C140200, // 002B CALL R5 1 - 0x00161805, // 002C ADD R5 K12 R5 - 0x58180004, // 002D LDCONST R6 K4 - 0x7C100400, // 002E CALL R4 2 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _instantiate_plugins_from_config ********************************************************************/ @@ -3036,12 +721,61 @@ be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name /******************************************************************** -** Solidified function: mdns_announce_op_discovery +** Solidified function: every_250ms ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ +be_local_closure(class_Matter_Device_every_250ms, /* name */ be_nested_proto( - 14, /* nstack */ + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(every_250ms), + /* K2 */ be_nested_str_weak(read_sensors_scheduler), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(plugins), + /* K5 */ be_const_int(1), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040102, // 0003 GETMET R1 R0 K2 + 0x7C040200, // 0004 CALL R1 1 + 0x58040003, // 0005 LDCONST R1 K3 + 0x6008000C, // 0006 GETGBL R2 G12 + 0x880C0104, // 0007 GETMBR R3 R0 K4 + 0x7C080200, // 0008 CALL R2 1 + 0x14080202, // 0009 LT R2 R1 R2 + 0x780A0005, // 000A JMPF R2 #0011 + 0x88080104, // 000B GETMBR R2 R0 K4 + 0x94080401, // 000C GETIDX R2 R2 R1 + 0x8C080501, // 000D GETMET R2 R2 K1 + 0x7C080200, // 000E CALL R2 1 + 0x00040305, // 000F ADD R1 R1 K5 + 0x7001FFF4, // 0010 JMP #0006 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_read_sensors_schedule +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ + be_nested_proto( + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3049,153 +783,145 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(find), - /* K13 */ be_nested_str_weak(up), - /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K15 */ be_nested_str_weak(hostname_eth), - /* K16 */ be_nested_str_weak(add_service), - /* K17 */ be_nested_str_weak(_matter), - /* K18 */ be_nested_str_weak(_tcp), - /* K19 */ be_nested_str_weak(_I), - /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K21 */ be_nested_str_weak(add_subtype), - /* K22 */ be_nested_str_weak(wifi), - /* K23 */ be_nested_str_weak(hostname_wifi), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_const_int(2), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_sensor_time), + /* K1 */ be_nested_str_weak(probe_sensor_timestamp), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(jitter), }), - be_str_weak(mdns_announce_op_discovery), + be_str_weak(add_read_sensors_schedule), &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802005F, // 0001 EXBLK 0 #0062 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x001E1005, // 0011 ADD R7 K8 R5 - 0x58200009, // 0012 LDCONST R8 K9 - 0x7C180400, // 0013 CALL R6 2 - 0xB81A1400, // 0014 GETNGBL R6 K10 - 0x8C180D0B, // 0015 GETMET R6 R6 K11 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180D0C, // 0017 GETMET R6 R6 K12 - 0x5820000D, // 0018 LDCONST R8 K13 - 0x7C180400, // 0019 CALL R6 2 - 0x781A001E, // 001A JMPF R6 #003A - 0xB81A0E00, // 001B GETNGBL R6 K7 - 0x601C0018, // 001C GETGBL R7 G24 - 0x5820000E, // 001D LDCONST R8 K14 - 0x5824000B, // 001E LDCONST R9 K11 - 0x5C280A00, // 001F MOVE R10 R5 - 0x882C010F, // 0020 GETMBR R11 R0 K15 - 0x7C1C0800, // 0021 CALL R7 4 - 0x58200009, // 0022 LDCONST R8 K9 - 0x7C180400, // 0023 CALL R6 2 - 0x8C180510, // 0024 GETMET R6 R2 K16 - 0x58200011, // 0025 LDCONST R8 K17 - 0x58240012, // 0026 LDCONST R9 K18 - 0x542A15A3, // 0027 LDINT R10 5540 - 0x4C2C0000, // 0028 LDNIL R11 - 0x5C300A00, // 0029 MOVE R12 R5 - 0x8834010F, // 002A GETMBR R13 R0 K15 - 0x7C180E00, // 002B CALL R6 7 - 0x8C180905, // 002C GETMET R6 R4 K5 - 0x7C180200, // 002D CALL R6 1 - 0x001A2606, // 002E ADD R6 K19 R6 - 0xB81E0E00, // 002F GETNGBL R7 K7 - 0x00222806, // 0030 ADD R8 K20 R6 - 0x58240009, // 0031 LDCONST R9 K9 - 0x7C1C0400, // 0032 CALL R7 2 - 0x8C1C0515, // 0033 GETMET R7 R2 K21 - 0x58240011, // 0034 LDCONST R9 K17 - 0x58280012, // 0035 LDCONST R10 K18 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x8830010F, // 0037 GETMBR R12 R0 K15 - 0x5C340C00, // 0038 MOVE R13 R6 - 0x7C1C0C00, // 0039 CALL R7 6 - 0xB81A1400, // 003A GETNGBL R6 K10 - 0x8C180D16, // 003B GETMET R6 R6 K22 - 0x7C180200, // 003C CALL R6 1 - 0x8C180D0C, // 003D GETMET R6 R6 K12 - 0x5820000D, // 003E LDCONST R8 K13 - 0x7C180400, // 003F CALL R6 2 - 0x781A001E, // 0040 JMPF R6 #0060 - 0xB81A0E00, // 0041 GETNGBL R6 K7 - 0x601C0018, // 0042 GETGBL R7 G24 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x58240016, // 0044 LDCONST R9 K22 - 0x5C280A00, // 0045 MOVE R10 R5 - 0x882C0117, // 0046 GETMBR R11 R0 K23 - 0x7C1C0800, // 0047 CALL R7 4 - 0x58200009, // 0048 LDCONST R8 K9 - 0x7C180400, // 0049 CALL R6 2 - 0x8C180510, // 004A GETMET R6 R2 K16 - 0x58200011, // 004B LDCONST R8 K17 - 0x58240012, // 004C LDCONST R9 K18 - 0x542A15A3, // 004D LDINT R10 5540 - 0x4C2C0000, // 004E LDNIL R11 - 0x5C300A00, // 004F MOVE R12 R5 - 0x88340117, // 0050 GETMBR R13 R0 K23 - 0x7C180E00, // 0051 CALL R6 7 - 0x8C180905, // 0052 GETMET R6 R4 K5 - 0x7C180200, // 0053 CALL R6 1 - 0x001A2606, // 0054 ADD R6 K19 R6 - 0xB81E0E00, // 0055 GETNGBL R7 K7 - 0x00222806, // 0056 ADD R8 K20 R6 - 0x58240009, // 0057 LDCONST R9 K9 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C1C0515, // 0059 GETMET R7 R2 K21 - 0x58240011, // 005A LDCONST R9 K17 - 0x58280012, // 005B LDCONST R10 K18 - 0x5C2C0A00, // 005C MOVE R11 R5 - 0x88300117, // 005D GETMBR R12 R0 K23 - 0x5C340C00, // 005E MOVE R13 R6 - 0x7C1C0C00, // 005F CALL R7 6 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7002000F, // 0061 JMP #0072 - 0xAC0C0002, // 0062 CATCH R3 0 2 - 0x7002000C, // 0063 JMP #0071 - 0xB8160E00, // 0064 GETNGBL R5 K7 - 0x60180008, // 0065 GETGBL R6 G8 - 0x5C1C0600, // 0066 MOVE R7 R3 - 0x7C180200, // 0067 CALL R6 1 - 0x001A3006, // 0068 ADD R6 K24 R6 - 0x00180D19, // 0069 ADD R6 R6 K25 - 0x601C0008, // 006A GETGBL R7 G8 - 0x5C200800, // 006B MOVE R8 R4 - 0x7C1C0200, // 006C CALL R7 1 - 0x00180C07, // 006D ADD R6 R6 R7 - 0x581C001A, // 006E LDCONST R7 K26 - 0x7C140400, // 006F CALL R5 2 - 0x70020000, // 0070 JMP #0072 - 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x80000000, // 0072 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x740A0002, // 0003 JMPT R2 #0007 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x24080401, // 0005 GT R2 R2 R1 + 0x780A0005, // 0006 JMPF R2 #000D + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0xB80A0400, // 0008 GETNGBL R2 K2 + 0x8C080503, // 0009 GETMET R2 R2 K3 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x90020202, // 000C SETMBR R0 K1 R2 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(remove_driver), + /* K2 */ be_nested_str_weak(udp_server), + /* K3 */ be_nested_str_weak(stop), + }), + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040102, // 0006 GETMBR R1 R0 K2 + 0x8C040303, // 0007 GETMET R1 R1 K3 + 0x7C040200, // 0008 CALL R1 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_qrcode_content +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resize), + /* K1 */ be_nested_str_weak(setbits), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(vendorid), + /* K4 */ be_nested_str_weak(productid), + /* K5 */ be_nested_str_weak(root_discriminator), + /* K6 */ be_nested_str_weak(root_passcode), + /* K7 */ be_const_int(134217727), + /* K8 */ be_nested_str_weak(MT_X3A), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(Base38), + /* K11 */ be_nested_str_weak(encode), + }), + be_str_weak(compute_qrcode_content), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x7C040000, // 0001 CALL R1 0 + 0x8C040300, // 0002 GETMET R1 R1 K0 + 0x540E000A, // 0003 LDINT R3 11 + 0x7C040400, // 0004 CALL R1 2 + 0x8C080301, // 0005 GETMET R2 R1 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x5416000F, // 0007 LDINT R5 16 + 0x88180103, // 0008 GETMBR R6 R0 K3 + 0x7C080800, // 0009 CALL R2 4 + 0x8C080301, // 000A GETMET R2 R1 K1 + 0x54120012, // 000B LDINT R4 19 + 0x5416000F, // 000C LDINT R5 16 + 0x88180104, // 000D GETMBR R6 R0 K4 + 0x7C080800, // 000E CALL R2 4 + 0x8C080301, // 000F GETMET R2 R1 K1 + 0x54120024, // 0010 LDINT R4 37 + 0x54160007, // 0011 LDINT R5 8 + 0x541A0003, // 0012 LDINT R6 4 + 0x7C080800, // 0013 CALL R2 4 + 0x8C080301, // 0014 GETMET R2 R1 K1 + 0x5412002C, // 0015 LDINT R4 45 + 0x5416000B, // 0016 LDINT R5 12 + 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x541E0FFE, // 0018 LDINT R7 4095 + 0x2C180C07, // 0019 AND R6 R6 R7 + 0x7C080800, // 001A CALL R2 4 + 0x8C080301, // 001B GETMET R2 R1 K1 + 0x54120038, // 001C LDINT R4 57 + 0x5416001A, // 001D LDINT R5 27 + 0x88180106, // 001E GETMBR R6 R0 K6 + 0x2C180D07, // 001F AND R6 R6 K7 + 0x7C080800, // 0020 CALL R2 4 + 0xB80A1200, // 0021 GETNGBL R2 K9 + 0x8808050A, // 0022 GETMBR R2 R2 K10 + 0x8C08050B, // 0023 GETMET R2 R2 K11 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x000A1002, // 0026 ADD R2 K8 R2 + 0x80040400, // 0027 RET 1 R2 }) ) ); @@ -3283,44 +1009,6 @@ be_local_closure(class_Matter_Device_k2l, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_plugin_class_arg -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_arg), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: stop_basic_commissioning ********************************************************************/ @@ -3384,1034 +1072,6 @@ be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_250ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(every_250ms), - /* K2 */ be_nested_str_weak(read_sensors_scheduler), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_const_int(1), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x58040003, // 0005 LDCONST R1 K3 - 0x6008000C, // 0006 GETGBL R2 G12 - 0x880C0104, // 0007 GETMBR R3 R0 K4 - 0x7C080200, // 0008 CALL R2 1 - 0x14080202, // 0009 LT R2 R1 R2 - 0x780A0005, // 000A JMPF R2 #0011 - 0x88080104, // 000B GETMBR R2 R0 K4 - 0x94080401, // 000C GETIDX R2 R2 R1 - 0x8C080501, // 000D GETMET R2 R2 K1 - 0x7C080200, // 000E CALL R2 1 - 0x00040305, // 000F ADD R1 R1 K5 - 0x7001FFF4, // 0010 JMP #0006 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _start_udp -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__start_udp, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_received), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(UDPServer), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(start), - }), - be_str_weak(_start_udp), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x600C0008, // 0008 GETGBL R3 G8 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C0C0200, // 000A CALL R3 1 - 0x000E0403, // 000B ADD R3 K2 R3 - 0x58100003, // 000C LDCONST R4 K3 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x8C080505, // 000F GETMET R2 R2 K5 - 0x5C100000, // 0010 MOVE R4 R0 - 0x58140006, // 0011 LDCONST R5 K6 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C080800, // 0013 CALL R2 4 - 0x90020002, // 0014 SETMBR R0 K0 R2 - 0x88080100, // 0015 GETMBR R2 R0 K0 - 0x8C080507, // 0016 GETMET R2 R2 K7 - 0x84100000, // 0017 CLOSURE R4 P0 - 0x7C080400, // 0018 CALL R2 2 - 0xA0000000, // 0019 CLOSE R0 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: k2l_num -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_k2l_num, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(k2l_num), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020007, // 000B EXBLK 0 #0014 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x601C0009, // 000F GETGBL R7 G9 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C1C0200, // 0011 CALL R7 1 - 0x7C140400, // 0012 CALL R5 2 - 0x7001FFF7, // 0013 JMP #000C - 0x580C0003, // 0014 LDCONST R3 K3 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x600C0010, // 0017 GETGBL R3 G16 - 0x6010000C, // 0018 GETGBL R4 G12 - 0x5C140400, // 0019 MOVE R5 R2 - 0x7C100200, // 001A CALL R4 1 - 0x04100904, // 001B SUB R4 R4 K4 - 0x40120804, // 001C CONNECT R4 K4 R4 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x94140404, // 0021 GETIDX R5 R2 R4 - 0x5C180800, // 0022 MOVE R6 R4 - 0x241C0D05, // 0023 GT R7 R6 K5 - 0x781E0008, // 0024 JMPF R7 #002E - 0x041C0D04, // 0025 SUB R7 R6 K4 - 0x941C0407, // 0026 GETIDX R7 R2 R7 - 0x241C0E05, // 0027 GT R7 R7 R5 - 0x781E0004, // 0028 JMPF R7 #002E - 0x041C0D04, // 0029 SUB R7 R6 K4 - 0x941C0407, // 002A GETIDX R7 R2 R7 - 0x98080C07, // 002B SETIDX R2 R6 R7 - 0x04180D04, // 002C SUB R6 R6 K4 - 0x7001FFF4, // 002D JMP #0023 - 0x98080C05, // 002E SETIDX R2 R6 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0003, // 0030 LDCONST R3 K3 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x80040400, // 0033 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_active_endpoints -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins), - /* K1 */ be_nested_str_weak(get_endpoint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_active_endpoints), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020011, // 0005 EXBLK 0 #0018 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140901, // 0008 GETMET R5 R4 K1 - 0x7C140200, // 0009 CALL R5 1 - 0x78060002, // 000A JMPF R1 #000E - 0x1C180B02, // 000B EQ R6 R5 K2 - 0x781A0000, // 000C JMPF R6 #000E - 0x7001FFF7, // 000D JMP #0006 - 0x8C180503, // 000E GETMET R6 R2 K3 - 0x5C200A00, // 000F MOVE R8 R5 - 0x7C180400, // 0010 CALL R6 2 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x781A0002, // 0013 JMPF R6 #0017 - 0x8C180504, // 0014 GETMET R6 R2 K4 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x7C180400, // 0016 CALL R6 2 - 0x7001FFED, // 0017 JMP #0006 - 0x580C0005, // 0018 LDCONST R3 K5 - 0xAC0C0200, // 0019 CATCH R3 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x80040400, // 001B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_config_ep -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_check_config_ep, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), - /* K12 */ be_nested_str_weak(next_ep), - /* K13 */ be_const_int(1), - }), - be_str_weak(check_config_ep), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x600C0010, // 0003 GETGBL R3 G16 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x8C100901, // 0005 GETMET R4 R4 K1 - 0x7C100200, // 0006 CALL R4 1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020007, // 0008 EXBLK 0 #0011 - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x8C140502, // 000B GETMET R5 R2 K2 - 0x601C0009, // 000C GETGBL R7 G9 - 0x5C200800, // 000D MOVE R8 R4 - 0x7C1C0200, // 000E CALL R7 1 - 0x7C140400, // 000F CALL R5 2 - 0x7001FFF7, // 0010 JMP #0009 - 0x580C0003, // 0011 LDCONST R3 K3 - 0xAC0C0200, // 0012 CATCH R3 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x600C0010, // 0014 GETGBL R3 G16 - 0x5C100400, // 0015 MOVE R4 R2 - 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020030, // 0017 EXBLK 0 #0049 - 0x5C100600, // 0018 MOVE R4 R3 - 0x7C100000, // 0019 CALL R4 0 - 0x1C140904, // 001A EQ R5 R4 K4 - 0x7816000B, // 001B JMPF R5 #0028 - 0xB8160A00, // 001C GETNGBL R5 K5 - 0x58180006, // 001D LDCONST R6 K6 - 0x581C0007, // 001E LDCONST R7 K7 - 0x7C140400, // 001F CALL R5 2 - 0x88140100, // 0020 GETMBR R5 R0 K0 - 0x8C140B08, // 0021 GETMET R5 R5 K8 - 0x601C0008, // 0022 GETGBL R7 G8 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C1C0200, // 0024 CALL R7 1 - 0x7C140400, // 0025 CALL R5 2 - 0x50040200, // 0026 LDBOOL R1 1 0 - 0x7002001F, // 0027 JMP #0048 - 0xB8161200, // 0028 GETNGBL R5 K9 - 0x88140B0A, // 0029 GETMBR R5 R5 K10 - 0x1C140805, // 002A EQ R5 R4 R5 - 0x7816001B, // 002B JMPF R5 #0048 - 0x50040200, // 002C LDBOOL R1 1 0 - 0xB8160A00, // 002D GETNGBL R5 K5 - 0x60180018, // 002E GETGBL R6 G24 - 0x581C000B, // 002F LDCONST R7 K11 - 0x5C200800, // 0030 MOVE R8 R4 - 0x8824010C, // 0031 GETMBR R9 R0 K12 - 0x7C180600, // 0032 CALL R6 3 - 0x581C0007, // 0033 LDCONST R7 K7 - 0x7C140400, // 0034 CALL R5 2 - 0x60140008, // 0035 GETGBL R5 G8 - 0x8818010C, // 0036 GETMBR R6 R0 K12 - 0x7C140200, // 0037 CALL R5 1 - 0x88180100, // 0038 GETMBR R6 R0 K0 - 0x601C0008, // 0039 GETGBL R7 G8 - 0x5C200800, // 003A MOVE R8 R4 - 0x7C1C0200, // 003B CALL R7 1 - 0x88200100, // 003C GETMBR R8 R0 K0 - 0x941C1007, // 003D GETIDX R7 R8 R7 - 0x98180A07, // 003E SETIDX R6 R5 R7 - 0x88140100, // 003F GETMBR R5 R0 K0 - 0x8C140B08, // 0040 GETMET R5 R5 K8 - 0x601C0008, // 0041 GETGBL R7 G8 - 0x5C200800, // 0042 MOVE R8 R4 - 0x7C1C0200, // 0043 CALL R7 1 - 0x7C140400, // 0044 CALL R5 2 - 0x8814010C, // 0045 GETMBR R5 R0 K12 - 0x00140B0D, // 0046 ADD R5 R5 K13 - 0x90021805, // 0047 SETMBR R0 K12 R5 - 0x7001FFCE, // 0048 JMP #0018 - 0x580C0003, // 0049 LDCONST R3 K3 - 0xAC0C0200, // 004A CATCH R3 1 0 - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80040200, // 004C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_send -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_send, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(send_UDP), - }), - be_str_weak(msg_send), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_sensors_list -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(Temperature), - /* K3 */ be_nested_str_weak(_X23Temperature), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(temperature), - /* K7 */ be_nested_str_weak(filter), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(Pressure), - /* K10 */ be_nested_str_weak(_X23Pressure), - /* K11 */ be_nested_str_weak(pressure), - /* K12 */ be_nested_str_weak(Illuminance), - /* K13 */ be_nested_str_weak(_X23Illuminance), - /* K14 */ be_nested_str_weak(illuminance), - /* K15 */ be_nested_str_weak(Humidity), - /* K16 */ be_nested_str_weak(_X23Humidity), - /* K17 */ be_nested_str_weak(humidity), - }), - be_str_weak(autoconf_sensors_list), - &be_const_str_solidified, - ( &(const binstruction[119]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100100, // 0003 GETMET R4 R0 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020013, // 0007 EXBLK 0 #001C - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x94140204, // 000A GETIDX R5 R1 R4 - 0x6018000F, // 000B GETGBL R6 G15 - 0x5C1C0A00, // 000C MOVE R7 R5 - 0x60200013, // 000D GETGBL R8 G19 - 0x7C180400, // 000E CALL R6 2 - 0x781A000A, // 000F JMPF R6 #001B - 0x8C180B01, // 0010 GETMET R6 R5 K1 - 0x58200002, // 0011 LDCONST R8 K2 - 0x7C180400, // 0012 CALL R6 2 - 0x781A0006, // 0013 JMPF R6 #001B - 0x00180903, // 0014 ADD R6 R4 K3 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x60240013, // 0016 GETGBL R9 G19 - 0x7C240000, // 0017 CALL R9 0 - 0x98260B06, // 0018 SETIDX R9 K5 K6 - 0x98260E06, // 0019 SETIDX R9 K7 R6 - 0x7C1C0400, // 001A CALL R7 2 - 0x7001FFEB, // 001B JMP #0008 - 0x580C0008, // 001C LDCONST R3 K8 - 0xAC0C0200, // 001D CATCH R3 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x600C0010, // 001F GETGBL R3 G16 - 0x8C100100, // 0020 GETMET R4 R0 K0 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x7C0C0200, // 0023 CALL R3 1 - 0xA8020013, // 0024 EXBLK 0 #0039 - 0x5C100600, // 0025 MOVE R4 R3 - 0x7C100000, // 0026 CALL R4 0 - 0x94140204, // 0027 GETIDX R5 R1 R4 - 0x6018000F, // 0028 GETGBL R6 G15 - 0x5C1C0A00, // 0029 MOVE R7 R5 - 0x60200013, // 002A GETGBL R8 G19 - 0x7C180400, // 002B CALL R6 2 - 0x781A000A, // 002C JMPF R6 #0038 - 0x8C180B01, // 002D GETMET R6 R5 K1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C180400, // 002F CALL R6 2 - 0x781A0006, // 0030 JMPF R6 #0038 - 0x0018090A, // 0031 ADD R6 R4 K10 - 0x8C1C0504, // 0032 GETMET R7 R2 K4 - 0x60240013, // 0033 GETGBL R9 G19 - 0x7C240000, // 0034 CALL R9 0 - 0x98260B0B, // 0035 SETIDX R9 K5 K11 - 0x98260E06, // 0036 SETIDX R9 K7 R6 - 0x7C1C0400, // 0037 CALL R7 2 - 0x7001FFEB, // 0038 JMP #0025 - 0x580C0008, // 0039 LDCONST R3 K8 - 0xAC0C0200, // 003A CATCH R3 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x600C0010, // 003C GETGBL R3 G16 - 0x8C100100, // 003D GETMET R4 R0 K0 - 0x5C180200, // 003E MOVE R6 R1 - 0x7C100400, // 003F CALL R4 2 - 0x7C0C0200, // 0040 CALL R3 1 - 0xA8020013, // 0041 EXBLK 0 #0056 - 0x5C100600, // 0042 MOVE R4 R3 - 0x7C100000, // 0043 CALL R4 0 - 0x94140204, // 0044 GETIDX R5 R1 R4 - 0x6018000F, // 0045 GETGBL R6 G15 - 0x5C1C0A00, // 0046 MOVE R7 R5 - 0x60200013, // 0047 GETGBL R8 G19 - 0x7C180400, // 0048 CALL R6 2 - 0x781A000A, // 0049 JMPF R6 #0055 - 0x8C180B01, // 004A GETMET R6 R5 K1 - 0x5820000C, // 004B LDCONST R8 K12 - 0x7C180400, // 004C CALL R6 2 - 0x781A0006, // 004D JMPF R6 #0055 - 0x0018090D, // 004E ADD R6 R4 K13 - 0x8C1C0504, // 004F GETMET R7 R2 K4 - 0x60240013, // 0050 GETGBL R9 G19 - 0x7C240000, // 0051 CALL R9 0 - 0x98260B0E, // 0052 SETIDX R9 K5 K14 - 0x98260E06, // 0053 SETIDX R9 K7 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x7001FFEB, // 0055 JMP #0042 - 0x580C0008, // 0056 LDCONST R3 K8 - 0xAC0C0200, // 0057 CATCH R3 1 0 - 0xB0080000, // 0058 RAISE 2 R0 R0 - 0x600C0010, // 0059 GETGBL R3 G16 - 0x8C100100, // 005A GETMET R4 R0 K0 - 0x5C180200, // 005B MOVE R6 R1 - 0x7C100400, // 005C CALL R4 2 - 0x7C0C0200, // 005D CALL R3 1 - 0xA8020013, // 005E EXBLK 0 #0073 - 0x5C100600, // 005F MOVE R4 R3 - 0x7C100000, // 0060 CALL R4 0 - 0x94140204, // 0061 GETIDX R5 R1 R4 - 0x6018000F, // 0062 GETGBL R6 G15 - 0x5C1C0A00, // 0063 MOVE R7 R5 - 0x60200013, // 0064 GETGBL R8 G19 - 0x7C180400, // 0065 CALL R6 2 - 0x781A000A, // 0066 JMPF R6 #0072 - 0x8C180B01, // 0067 GETMET R6 R5 K1 - 0x5820000F, // 0068 LDCONST R8 K15 - 0x7C180400, // 0069 CALL R6 2 - 0x781A0006, // 006A JMPF R6 #0072 - 0x00180910, // 006B ADD R6 R4 K16 - 0x8C1C0504, // 006C GETMET R7 R2 K4 - 0x60240013, // 006D GETGBL R9 G19 - 0x7C240000, // 006E CALL R9 0 - 0x98260B11, // 006F SETIDX R9 K5 K17 - 0x98260E06, // 0070 SETIDX R9 K7 R6 - 0x7C1C0400, // 0071 CALL R7 2 - 0x7001FFEB, // 0072 JMP #005F - 0x580C0008, // 0073 LDCONST R3 K8 - 0xAC0C0200, // 0074 CATCH R3 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040400, // 0076 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_endpoint), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_plugin_by_endpoint), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C100702, // 0008 GETMET R4 R3 K2 - 0x7C100200, // 0009 CALL R4 1 - 0x1C100801, // 000A EQ R4 R4 R1 - 0x78120000, // 000B JMPF R4 #000D - 0x80040600, // 000C RET 1 R3 - 0x00080503, // 000D ADD R2 R2 K3 - 0x7001FFF1, // 000E JMP #0001 - 0x4C0C0000, // 000F LDNIL R3 - 0x80040600, // 0010 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_root_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ - be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(PASE_TIMEOUT), - /* K1 */ be_nested_str_weak(compute_manual_pairing_code), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(compute_qrcode_content), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(publish_result), - /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), - /* K9 */ be_nested_str_weak(Matter), - /* K10 */ be_nested_str_weak(_compute_pbkdf), - /* K11 */ be_nested_str_weak(root_passcode), - /* K12 */ be_nested_str_weak(root_iterations), - /* K13 */ be_nested_str_weak(root_salt), - /* K14 */ be_nested_str_weak(start_basic_commissioning), - /* K15 */ be_nested_str_weak(root_discriminator), - /* K16 */ be_nested_str_weak(root_w0), - /* K17 */ be_nested_str_weak(root_L), - }), - be_str_weak(start_root_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x60100018, // 0007 GETGBL R4 G24 - 0x58140003, // 0008 LDCONST R5 K3 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C100400, // 000A CALL R4 2 - 0x58140004, // 000B LDCONST R5 K4 - 0x7C0C0400, // 000C CALL R3 2 - 0x8C0C0105, // 000D GETMET R3 R0 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x8C100907, // 0010 GETMET R4 R4 K7 - 0x60180018, // 0011 GETGBL R6 G24 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x5C200400, // 0013 MOVE R8 R2 - 0x5C240600, // 0014 MOVE R9 R3 - 0x7C180600, // 0015 CALL R6 3 - 0x581C0009, // 0016 LDCONST R7 K9 - 0x7C100600, // 0017 CALL R4 3 - 0x8C10010A, // 0018 GETMET R4 R0 K10 - 0x8818010B, // 0019 GETMBR R6 R0 K11 - 0x881C010C, // 001A GETMBR R7 R0 K12 - 0x8820010D, // 001B GETMBR R8 R0 K13 - 0x7C100800, // 001C CALL R4 4 - 0x8C10010E, // 001D GETMET R4 R0 K14 - 0x5C180200, // 001E MOVE R6 R1 - 0x881C010C, // 001F GETMBR R7 R0 K12 - 0x8820010F, // 0020 GETMBR R8 R0 K15 - 0x8824010D, // 0021 GETMBR R9 R0 K13 - 0x88280110, // 0022 GETMBR R10 R0 K16 - 0x882C0111, // 0023 GETMBR R11 R0 K17 - 0x4C300000, // 0024 LDNIL R12 - 0x7C101000, // 0025 CALL R4 8 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_read_solo -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_process_attribute_read_solo, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K7 */ be_nested_str_weak(contains_cluster), - /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K9 */ be_nested_str_weak(contains_attribute), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), - be_str_weak(process_attribute_read_solo), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 - 0x4C140000, // 0003 LDNIL R5 - 0x1C140405, // 0004 EQ R5 R2 R5 - 0x74160005, // 0005 JMPT R5 #000C - 0x4C140000, // 0006 LDNIL R5 - 0x1C140605, // 0007 EQ R5 R3 R5 - 0x74160002, // 0008 JMPT R5 #000C - 0x4C140000, // 0009 LDNIL R5 - 0x1C140805, // 000A EQ R5 R4 R5 - 0x78160001, // 000B JMPF R5 #000E - 0x4C140000, // 000C LDNIL R5 - 0x80040A00, // 000D RET 1 R5 - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x5C1C0400, // 000F MOVE R7 R2 - 0x7C140400, // 0010 CALL R5 2 - 0x4C180000, // 0011 LDNIL R6 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0004, // 0013 JMPF R6 #0019 - 0xB81A0A00, // 0014 GETNGBL R6 K5 - 0x88180D06, // 0015 GETMBR R6 R6 K6 - 0x90060806, // 0016 SETMBR R1 K4 R6 - 0x4C180000, // 0017 LDNIL R6 - 0x80040C00, // 0018 RET 1 R6 - 0x8C180B07, // 0019 GETMET R6 R5 K7 - 0x5C200600, // 001A MOVE R8 R3 - 0x7C180400, // 001B CALL R6 2 - 0x741A0004, // 001C JMPT R6 #0022 - 0xB81A0A00, // 001D GETNGBL R6 K5 - 0x88180D08, // 001E GETMBR R6 R6 K8 - 0x90060806, // 001F SETMBR R1 K4 R6 - 0x4C180000, // 0020 LDNIL R6 - 0x80040C00, // 0021 RET 1 R6 - 0x8C180B09, // 0022 GETMET R6 R5 K9 - 0x5C200600, // 0023 MOVE R8 R3 - 0x5C240800, // 0024 MOVE R9 R4 - 0x7C180600, // 0025 CALL R6 3 - 0x741A0004, // 0026 JMPT R6 #002C - 0xB81A0A00, // 0027 GETNGBL R6 K5 - 0x88180D0A, // 0028 GETMBR R6 R6 K10 - 0x90060806, // 0029 SETMBR R1 K4 R6 - 0x4C180000, // 002A LDNIL R6 - 0x80040C00, // 002B RET 1 R6 - 0x80040A00, // 002C RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(mdns), - /* K2 */ be_nested_str_weak(stop_basic_commissioning), - /* K3 */ be_nested_str_weak(root_w0), - /* K4 */ be_nested_str_weak(root_L), - /* K5 */ be_nested_str_weak(mdns_announce_op_discovery), - }), - be_str_weak(start_operational_discovery), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x4C100000, // 0004 LDNIL R4 - 0x90020604, // 0005 SETMBR R0 K3 R4 - 0x4C100000, // 0006 LDNIL R4 - 0x90020804, // 0007 SETMBR R0 K4 R4 - 0x8C100105, // 0008 GETMET R4 R0 K5 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C100400, // 000A CALL R4 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: load_param -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_load_param, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(FILENAME), - /* K2 */ be_nested_str_weak(read), - /* K3 */ be_nested_str_weak(close), - /* K4 */ be_nested_str_weak(json), - /* K5 */ be_nested_str_weak(load), - /* K6 */ be_nested_str_weak(root_discriminator), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(distinguish), - /* K9 */ be_nested_str_weak(root_passcode), - /* K10 */ be_nested_str_weak(passcode), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(disable_bridge_mode), - /* K13 */ be_nested_str_weak(next_ep), - /* K14 */ be_nested_str_weak(nextep), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(config), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(adjust_next_ep), - /* K21 */ be_nested_str_weak(check_config_ep), - /* K22 */ be_nested_str_weak(plugins_persist), - /* K23 */ be_nested_str_weak(plugins_config_remotes), - /* K24 */ be_nested_str_weak(remotes), - /* K25 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), - /* K26 */ be_nested_str_weak(io_error), - /* K27 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), - /* K28 */ be_nested_str_weak(_X7C), - /* K29 */ be_const_int(2), - /* K30 */ be_nested_str_weak(random), - /* K31 */ be_nested_str_weak(get), - /* K32 */ be_const_int(0), - /* K33 */ be_nested_str_weak(generate_random_passcode), - /* K34 */ be_nested_str_weak(save_param), - }), - be_str_weak(load_param), - &be_const_str_solidified, - ( &(const binstruction[127]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x50080000, // 0001 LDBOOL R2 0 0 - 0xA802004E, // 0002 EXBLK 0 #0052 - 0x600C0011, // 0003 GETGBL R3 G17 - 0x88100101, // 0004 GETMBR R4 R0 K1 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C100702, // 0006 GETMET R4 R3 K2 - 0x7C100200, // 0007 CALL R4 1 - 0x8C140703, // 0008 GETMET R5 R3 K3 - 0x7C140200, // 0009 CALL R5 1 - 0xA4160800, // 000A IMPORT R5 K4 - 0x8C180B05, // 000B GETMET R6 R5 K5 - 0x5C200800, // 000C MOVE R8 R4 - 0x7C180400, // 000D CALL R6 2 - 0x8C1C0D07, // 000E GETMET R7 R6 K7 - 0x58240008, // 000F LDCONST R9 K8 - 0x88280106, // 0010 GETMBR R10 R0 K6 - 0x7C1C0600, // 0011 CALL R7 3 - 0x90020C07, // 0012 SETMBR R0 K6 R7 - 0x8C1C0D07, // 0013 GETMET R7 R6 K7 - 0x5824000A, // 0014 LDCONST R9 K10 - 0x88280109, // 0015 GETMBR R10 R0 K9 - 0x7C1C0600, // 0016 CALL R7 3 - 0x90021207, // 0017 SETMBR R0 K9 R7 - 0x601C0017, // 0018 GETGBL R7 G23 - 0x8C200D07, // 0019 GETMET R8 R6 K7 - 0x5828000B, // 001A LDCONST R10 K11 - 0x502C0000, // 001B LDBOOL R11 0 0 - 0x7C200600, // 001C CALL R8 3 - 0x7C1C0200, // 001D CALL R7 1 - 0x90021607, // 001E SETMBR R0 K11 R7 - 0x601C0017, // 001F GETGBL R7 G23 - 0x8C200D07, // 0020 GETMET R8 R6 K7 - 0x5828000C, // 0021 LDCONST R10 K12 - 0x502C0000, // 0022 LDBOOL R11 0 0 - 0x7C200600, // 0023 CALL R8 3 - 0x7C1C0200, // 0024 CALL R7 1 - 0x90021807, // 0025 SETMBR R0 K12 R7 - 0x8C1C0D07, // 0026 GETMET R7 R6 K7 - 0x5824000E, // 0027 LDCONST R9 K14 - 0x8828010D, // 0028 GETMBR R10 R0 K13 - 0x7C1C0600, // 0029 CALL R7 3 - 0x90021A07, // 002A SETMBR R0 K13 R7 - 0x8C1C0D07, // 002B GETMET R7 R6 K7 - 0x58240010, // 002C LDCONST R9 K16 - 0x7C1C0400, // 002D CALL R7 2 - 0x90021E07, // 002E SETMBR R0 K15 R7 - 0x881C010F, // 002F GETMBR R7 R0 K15 - 0x4C200000, // 0030 LDNIL R8 - 0x201C0E08, // 0031 NE R7 R7 R8 - 0x781E000D, // 0032 JMPF R7 #0041 - 0xB81E2200, // 0033 GETNGBL R7 K17 - 0x60200018, // 0034 GETGBL R8 G24 - 0x58240012, // 0035 LDCONST R9 K18 - 0x8828010F, // 0036 GETMBR R10 R0 K15 - 0x7C200400, // 0037 CALL R8 2 - 0x58240013, // 0038 LDCONST R9 K19 - 0x7C1C0400, // 0039 CALL R7 2 - 0x8C1C0114, // 003A GETMET R7 R0 K20 - 0x7C1C0200, // 003B CALL R7 1 - 0x8C1C0115, // 003C GETMET R7 R0 K21 - 0x7C1C0200, // 003D CALL R7 1 - 0x5C080E00, // 003E MOVE R2 R7 - 0x501C0200, // 003F LDBOOL R7 1 0 - 0x90022C07, // 0040 SETMBR R0 K22 R7 - 0x8C1C0D07, // 0041 GETMET R7 R6 K7 - 0x58240018, // 0042 LDCONST R9 K24 - 0x60280013, // 0043 GETGBL R10 G19 - 0x7C280000, // 0044 CALL R10 0 - 0x7C1C0600, // 0045 CALL R7 3 - 0x90022E07, // 0046 SETMBR R0 K23 R7 - 0x881C0117, // 0047 GETMBR R7 R0 K23 - 0x781E0006, // 0048 JMPF R7 #0050 - 0xB81E2200, // 0049 GETNGBL R7 K17 - 0x60200008, // 004A GETGBL R8 G8 - 0x88240117, // 004B GETMBR R9 R0 K23 - 0x7C200200, // 004C CALL R8 1 - 0x00223208, // 004D ADD R8 K25 R8 - 0x58240013, // 004E LDCONST R9 K19 - 0x7C1C0400, // 004F CALL R7 2 - 0xA8040001, // 0050 EXBLK 1 1 - 0x70020011, // 0051 JMP #0064 - 0xAC0C0002, // 0052 CATCH R3 0 2 - 0x7002000E, // 0053 JMP #0063 - 0x2014071A, // 0054 NE R5 R3 K26 - 0x7816000B, // 0055 JMPF R5 #0062 - 0xB8162200, // 0056 GETNGBL R5 K17 - 0x60180008, // 0057 GETGBL R6 G8 - 0x5C1C0600, // 0058 MOVE R7 R3 - 0x7C180200, // 0059 CALL R6 1 - 0x001A3606, // 005A ADD R6 K27 R6 - 0x00180D1C, // 005B ADD R6 R6 K28 - 0x601C0008, // 005C GETGBL R7 G8 - 0x5C200800, // 005D MOVE R8 R4 - 0x7C1C0200, // 005E CALL R7 1 - 0x00180C07, // 005F ADD R6 R6 R7 - 0x581C001D, // 0060 LDCONST R7 K29 - 0x7C140400, // 0061 CALL R5 2 - 0x70020000, // 0062 JMP #0064 - 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x880C0106, // 0064 GETMBR R3 R0 K6 - 0x4C100000, // 0065 LDNIL R4 - 0x1C0C0604, // 0066 EQ R3 R3 R4 - 0x780E000A, // 0067 JMPF R3 #0073 - 0x8C0C031E, // 0068 GETMET R3 R1 K30 - 0x5814001D, // 0069 LDCONST R5 K29 - 0x7C0C0400, // 006A CALL R3 2 - 0x8C0C071F, // 006B GETMET R3 R3 K31 - 0x58140020, // 006C LDCONST R5 K32 - 0x5818001D, // 006D LDCONST R6 K29 - 0x7C0C0600, // 006E CALL R3 3 - 0x54120FFE, // 006F LDINT R4 4095 - 0x2C0C0604, // 0070 AND R3 R3 R4 - 0x90020C03, // 0071 SETMBR R0 K6 R3 - 0x50080200, // 0072 LDBOOL R2 1 0 - 0x880C0109, // 0073 GETMBR R3 R0 K9 - 0x4C100000, // 0074 LDNIL R4 - 0x1C0C0604, // 0075 EQ R3 R3 R4 - 0x780E0003, // 0076 JMPF R3 #007B - 0x8C0C0121, // 0077 GETMET R3 R0 K33 - 0x7C0C0200, // 0078 CALL R3 1 - 0x90021203, // 0079 SETMBR R0 K9 R3 - 0x50080200, // 007A LDBOOL R2 1 0 - 0x780A0001, // 007B JMPF R2 #007E - 0x8C0C0122, // 007C GETMET R3 R0 K34 - 0x7C0C0200, // 007D CALL R3 1 - 0x80000000, // 007E RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: MtrUpdate ********************************************************************/ @@ -4588,6 +1248,120 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: MtrJoin +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrJoin, /* name */ + be_nested_proto( + 8, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(start_root_basic_commissioning), + /* K1 */ be_nested_str_weak(stop_basic_commissioning), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrJoin), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x60140009, // 0000 GETGBL R5 G9 + 0x5C180600, // 0001 MOVE R6 R3 + 0x7C140200, // 0002 CALL R5 1 + 0x78160002, // 0003 JMPF R5 #0007 + 0x8C180100, // 0004 GETMET R6 R0 K0 + 0x7C180200, // 0005 CALL R6 1 + 0x70020001, // 0006 JMP #0009 + 0x8C180101, // 0007 GETMET R6 R0 K1 + 0x7C180200, // 0008 CALL R6 1 + 0xB81A0400, // 0009 GETNGBL R6 K2 + 0x8C180D03, // 000A GETMET R6 R6 K3 + 0x7C180200, // 000B CALL R6 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_fabric +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_remove_fabric, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), + /* K2 */ be_nested_str_weak(get_fabric_id), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(reverse), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(message_handler), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(subs_shop), + /* K10 */ be_nested_str_weak(remove_by_fabric), + /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(remove_fabric), + /* K14 */ be_nested_str_weak(save_fabrics), + }), + be_str_weak(remove_fabric), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0018, // 0002 JMPF R2 #001C + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x8C0C0302, // 0004 GETMET R3 R1 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x7C0C0200, // 000B CALL R3 1 + 0x000E0203, // 000C ADD R3 K1 R3 + 0x58100006, // 000D LDCONST R4 K6 + 0x7C080400, // 000E CALL R2 2 + 0x88080107, // 000F GETMBR R2 R0 K7 + 0x88080508, // 0010 GETMBR R2 R2 K8 + 0x88080509, // 0011 GETMBR R2 R2 K9 + 0x8C08050A, // 0012 GETMET R2 R2 K10 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x8C08010B, // 0015 GETMET R2 R0 K11 + 0x5C100200, // 0016 MOVE R4 R1 + 0x7C080400, // 0017 CALL R2 2 + 0x8808010C, // 0018 GETMBR R2 R0 K12 + 0x8C08050D, // 0019 GETMET R2 R2 K13 + 0x5C100200, // 001A MOVE R4 R1 + 0x7C080400, // 001B CALL R2 2 + 0x8808010C, // 001C GETMBR R2 R0 K12 + 0x8C08050E, // 001D GETMET R2 R2 K14 + 0x7C080200, // 001E CALL R2 1 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: start_basic_commissioning ********************************************************************/ @@ -4734,526 +1508,10 @@ be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ /******************************************************************** -** Solidified function: received_ack +** Solidified function: mdns_announce_op_discovery_all_fabrics ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_received_ack, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(received_ack), - }), - be_str_weak(received_ack), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(eth), - /* K9 */ be_nested_str_weak(find), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(remove_service), - /* K15 */ be_nested_str_weak(_matter), - /* K16 */ be_nested_str_weak(_tcp), - /* K17 */ be_nested_str_weak(hostname_eth), - /* K18 */ be_nested_str_weak(wifi), - /* K19 */ be_nested_str_weak(hostname_wifi), - /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K21 */ be_nested_str_weak(_X7C), - /* K22 */ be_const_int(2), - }), - be_str_weak(mdns_remove_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x8C180D08, // 0011 GETMET R6 R6 K8 - 0x7C180200, // 0012 CALL R6 1 - 0x8C180D09, // 0013 GETMET R6 R6 K9 - 0x5820000A, // 0014 LDCONST R8 K10 - 0x7C180400, // 0015 CALL R6 2 - 0x781A000D, // 0016 JMPF R6 #0025 - 0xB81A1600, // 0017 GETNGBL R6 K11 - 0x601C0018, // 0018 GETGBL R7 G24 - 0x5820000C, // 0019 LDCONST R8 K12 - 0x58240008, // 001A LDCONST R9 K8 - 0x5C280A00, // 001B MOVE R10 R5 - 0x7C1C0600, // 001C CALL R7 3 - 0x5820000D, // 001D LDCONST R8 K13 - 0x7C180400, // 001E CALL R6 2 - 0x8C18050E, // 001F GETMET R6 R2 K14 - 0x5820000F, // 0020 LDCONST R8 K15 - 0x58240010, // 0021 LDCONST R9 K16 - 0x5C280A00, // 0022 MOVE R10 R5 - 0x882C0111, // 0023 GETMBR R11 R0 K17 - 0x7C180A00, // 0024 CALL R6 5 - 0xB81A0E00, // 0025 GETNGBL R6 K7 - 0x8C180D12, // 0026 GETMET R6 R6 K18 - 0x7C180200, // 0027 CALL R6 1 - 0x8C180D09, // 0028 GETMET R6 R6 K9 - 0x5820000A, // 0029 LDCONST R8 K10 - 0x7C180400, // 002A CALL R6 2 - 0x781A000D, // 002B JMPF R6 #003A - 0xB81A1600, // 002C GETNGBL R6 K11 - 0x601C0018, // 002D GETGBL R7 G24 - 0x5820000C, // 002E LDCONST R8 K12 - 0x58240012, // 002F LDCONST R9 K18 - 0x5C280A00, // 0030 MOVE R10 R5 - 0x7C1C0600, // 0031 CALL R7 3 - 0x5820000D, // 0032 LDCONST R8 K13 - 0x7C180400, // 0033 CALL R6 2 - 0x8C18050E, // 0034 GETMET R6 R2 K14 - 0x5820000F, // 0035 LDCONST R8 K15 - 0x58240010, // 0036 LDCONST R9 K16 - 0x5C280A00, // 0037 MOVE R10 R5 - 0x882C0113, // 0038 GETMBR R11 R0 K19 - 0x7C180A00, // 0039 CALL R6 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC0C0002, // 003C CATCH R3 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8161600, // 003E GETNGBL R5 K11 - 0x60180008, // 003F GETGBL R6 G8 - 0x5C1C0600, // 0040 MOVE R7 R3 - 0x7C180200, // 0041 CALL R6 1 - 0x001A2806, // 0042 ADD R6 K20 R6 - 0x00180D15, // 0043 ADD R6 R6 K21 - 0x601C0008, // 0044 GETGBL R7 G8 - 0x5C200800, // 0045 MOVE R8 R4 - 0x7C1C0200, // 0046 CALL R7 1 - 0x00180C07, // 0047 ADD R6 R6 R7 - 0x581C0016, // 0048 LDCONST R7 K22 - 0x7C140400, // 0049 CALL R5 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_sensors_scheduler -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(time_reached), - /* K5 */ be_nested_str_weak(_trigger_read_sensors), - /* K6 */ be_nested_str_weak(millis), - }), - be_str_weak(read_sensors_scheduler), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x1C040302, // 0006 EQ R1 R1 K2 - 0x74060004, // 0007 JMPT R1 #000D - 0xB8060600, // 0008 GETNGBL R1 K3 - 0x8C040304, // 0009 GETMET R1 R1 K4 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x7C040400, // 000B CALL R1 2 - 0x78060006, // 000C JMPF R1 #0014 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0xB8060600, // 000F GETNGBL R1 K3 - 0x8C040306, // 0010 GETMET R1 R1 K6 - 0x880C0100, // 0011 GETMBR R3 R0 K0 - 0x7C040400, // 0012 CALL R1 2 - 0x90020201, // 0013 SETMBR R0 K1 R1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery_deferred -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_discovery), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_operational_discovery_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_random_passcode -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(134217727), - /* K5 */ be_const_int(99999998), - /* K6 */ be_nested_str_weak(PASSCODE_INVALID), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(generate_random_passcode), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x780E001D, // 0003 JMPF R3 #0022 - 0x8C0C0301, // 0004 GETMET R3 R1 K1 - 0x54160003, // 0005 LDINT R5 4 - 0x7C0C0400, // 0006 CALL R3 2 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 - 0x58140003, // 0008 LDCONST R5 K3 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x2C0C0704, // 000B AND R3 R3 K4 - 0x5C080600, // 000C MOVE R2 R3 - 0x240C0505, // 000D GT R3 R2 K5 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7001FFF1, // 000F JMP #0002 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x1C140404, // 0016 EQ R5 R2 R4 - 0x78160000, // 0017 JMPF R5 #0019 - 0x4C080000, // 0018 LDNIL R2 - 0x7001FFF9, // 0019 JMP #0014 - 0x580C0007, // 001A LDCONST R3 K7 - 0xAC0C0200, // 001B CATCH R3 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x4C0C0000, // 001D LDNIL R3 - 0x200C0403, // 001E NE R3 R2 R3 - 0x780E0000, // 001F JMPF R3 #0021 - 0x80040400, // 0020 RET 1 R2 - 0x7001FFDF, // 0021 JMP #0002 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrJoin -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrJoin, /* name */ - be_nested_proto( - 8, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(start_root_basic_commissioning), - /* K1 */ be_nested_str_weak(stop_basic_commissioning), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrJoin), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60140009, // 0000 GETGBL R5 G9 - 0x5C180600, // 0001 MOVE R6 R3 - 0x7C140200, // 0002 CALL R5 1 - 0x78160002, // 0003 JMPF R5 #0007 - 0x8C180100, // 0004 GETMET R6 R0 K0 - 0x7C180200, // 0005 CALL R6 1 - 0x70020001, // 0006 JMP #0009 - 0x8C180101, // 0007 GETMET R6 R0 K1 - 0x7C180200, // 0008 CALL R6 1 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x8C180D03, // 000A GETMET R6 R6 K3 - 0x7C180200, // 000B CALL R6 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save_param -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_save_param, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(update_remotes_info), - /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), - /* K3 */ be_nested_str_weak(root_discriminator), - /* K4 */ be_nested_str_weak(root_passcode), - /* K5 */ be_nested_str_weak(ipv4only), - /* K6 */ be_nested_str_weak(true), - /* K7 */ be_nested_str_weak(false), - /* K8 */ be_nested_str_weak(disable_bridge_mode), - /* K9 */ be_nested_str_weak(next_ep), - /* K10 */ be_nested_str_weak(plugins_persist), - /* K11 */ be_nested_str_weak(_X2C_X22config_X22_X3A), - /* K12 */ be_nested_str_weak(dump), - /* K13 */ be_nested_str_weak(plugins_config), - /* K14 */ be_nested_str_weak(plugins_config_remotes), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(_X2C_X22remotes_X22_X3A), - /* K17 */ be_nested_str_weak(_X7D), - /* K18 */ be_nested_str_weak(FILENAME), - /* K19 */ be_nested_str_weak(w), - /* K20 */ be_nested_str_weak(write), - /* K21 */ be_nested_str_weak(close), - /* K22 */ be_nested_str_weak(log), - /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K24 */ be_nested_str_weak(_X20and_X20configuration), - /* K25 */ be_nested_str_weak(), - /* K26 */ be_const_int(2), - /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K28 */ be_nested_str_weak(_X7C), - }), - be_str_weak(save_param), - &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x88140104, // 0006 GETMBR R5 R0 K4 - 0x88180105, // 0007 GETMBR R6 R0 K5 - 0x781A0001, // 0008 JMPF R6 #000B - 0x58180006, // 0009 LDCONST R6 K6 - 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x781E0001, // 000D JMPF R7 #0010 - 0x581C0006, // 000E LDCONST R7 K6 - 0x70020000, // 000F JMP #0011 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x88200109, // 0011 GETMBR R8 R0 K9 - 0x7C080C00, // 0012 CALL R2 6 - 0x880C010A, // 0013 GETMBR R3 R0 K10 - 0x780E000E, // 0014 JMPF R3 #0024 - 0x0008050B, // 0015 ADD R2 R2 K11 - 0x8C0C030C, // 0016 GETMET R3 R1 K12 - 0x8814010D, // 0017 GETMBR R5 R0 K13 - 0x7C0C0400, // 0018 CALL R3 2 - 0x00080403, // 0019 ADD R2 R2 R3 - 0x600C000C, // 001A GETGBL R3 G12 - 0x8810010E, // 001B GETMBR R4 R0 K14 - 0x7C0C0200, // 001C CALL R3 1 - 0x240C070F, // 001D GT R3 R3 K15 - 0x780E0004, // 001E JMPF R3 #0024 - 0x00080510, // 001F ADD R2 R2 K16 - 0x8C0C030C, // 0020 GETMET R3 R1 K12 - 0x8814010E, // 0021 GETMBR R5 R0 K14 - 0x7C0C0400, // 0022 CALL R3 2 - 0x00080403, // 0023 ADD R2 R2 R3 - 0x00080511, // 0024 ADD R2 R2 K17 - 0xA8020017, // 0025 EXBLK 0 #003E - 0x600C0011, // 0026 GETGBL R3 G17 - 0x88100112, // 0027 GETMBR R4 R0 K18 - 0x58140013, // 0028 LDCONST R5 K19 - 0x7C0C0400, // 0029 CALL R3 2 - 0x8C100714, // 002A GETMET R4 R3 K20 - 0x5C180400, // 002B MOVE R6 R2 - 0x7C100400, // 002C CALL R4 2 - 0x8C100715, // 002D GETMET R4 R3 K21 - 0x7C100200, // 002E CALL R4 1 - 0xB8122C00, // 002F GETNGBL R4 K22 - 0x60140018, // 0030 GETGBL R5 G24 - 0x58180017, // 0031 LDCONST R6 K23 - 0x881C010A, // 0032 GETMBR R7 R0 K10 - 0x781E0001, // 0033 JMPF R7 #0036 - 0x581C0018, // 0034 LDCONST R7 K24 - 0x70020000, // 0035 JMP #0037 - 0x581C0019, // 0036 LDCONST R7 K25 - 0x7C140400, // 0037 CALL R5 2 - 0x5818001A, // 0038 LDCONST R6 K26 - 0x7C100400, // 0039 CALL R4 2 - 0xA8040001, // 003A EXBLK 1 1 - 0x80040400, // 003B RET 1 R2 - 0xA8040001, // 003C EXBLK 1 1 - 0x70020010, // 003D JMP #004F - 0xAC0C0002, // 003E CATCH R3 0 2 - 0x7002000D, // 003F JMP #004E - 0xB8162C00, // 0040 GETNGBL R5 K22 - 0x60180008, // 0041 GETGBL R6 G8 - 0x5C1C0600, // 0042 MOVE R7 R3 - 0x7C180200, // 0043 CALL R6 1 - 0x001A3606, // 0044 ADD R6 K27 R6 - 0x00180D1C, // 0045 ADD R6 R6 K28 - 0x601C0008, // 0046 GETGBL R7 G8 - 0x5C200800, // 0047 MOVE R8 R4 - 0x7C1C0200, // 0048 CALL R7 1 - 0x00180C07, // 0049 ADD R6 R6 R7 - 0x581C001A, // 004A LDCONST R7 K26 - 0x7C140400, // 004B CALL R5 2 - 0x80040400, // 004C RET 1 R2 - 0x70020000, // 004D JMP #004F - 0xB0080000, // 004E RAISE 2 R0 R0 - 0x80000000, // 004F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery_all_fabrics -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ +be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ @@ -5268,10 +1526,10 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* /* K1 */ be_nested_str_weak(active_fabrics), /* K2 */ be_nested_str_weak(get_device_id), /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), /* K5 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(mdns_remove_op_discovery_all_fabrics), + be_str_weak(mdns_announce_op_discovery_all_fabrics), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0x60040010, // 0000 GETGBL R1 G16 @@ -5302,6 +1560,82 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* /*******************************************************************/ +/******************************************************************** +** Solidified function: get_plugin_class_arg +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(get_plugin_class_arg), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_class_displayname +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(DISPLAY_NAME), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(get_plugin_class_displayname), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: init ********************************************************************/ @@ -5545,133 +1879,80 @@ be_local_closure(class_Matter_Device_init, /* name */ /******************************************************************** -** Solidified function: start_mdns_announce_hostnames +** Solidified function: process_attribute_read_solo ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ +be_local_closure(class_Matter_Device_process_attribute_read_solo, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 10, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080200, // 0002 LDBOOL R2 1 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), + 0, /* has sup protos */ &be_class_Matter_Device, - }), 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(wifi), - /* K2 */ be_nested_str_weak(up), - /* K3 */ be_nested_str_weak(_mdns_announce_hostname), - /* K4 */ be_nested_str_weak(add_rule), - /* K5 */ be_nested_str_weak(Wifi_X23Connected), - /* K6 */ be_nested_str_weak(matter_mdns_host), - /* K7 */ be_nested_str_weak(eth), - /* K8 */ be_nested_str_weak(Eth_X23Connected), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K7 */ be_nested_str_weak(contains_cluster), + /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K9 */ be_nested_str_weak(contains_attribute), + /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), }), - be_str_weak(start_mdns_announce_hostnames), + be_str_weak(process_attribute_read_solo), &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x94040302, // 0003 GETIDX R1 R1 K2 - 0x78060003, // 0004 JMPF R1 #0009 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x7C040400, // 0007 CALL R1 2 - 0x70020005, // 0008 JMP #000F - 0xB8060000, // 0009 GETNGBL R1 K0 - 0x8C040304, // 000A GETMET R1 R1 K4 - 0x580C0005, // 000B LDCONST R3 K5 - 0x84100000, // 000C CLOSURE R4 P0 - 0x58140006, // 000D LDCONST R5 K6 - 0x7C040800, // 000E CALL R1 4 - 0xB8060000, // 000F GETNGBL R1 K0 - 0x8C040307, // 0010 GETMET R1 R1 K7 - 0x7C040200, // 0011 CALL R1 1 - 0x94040302, // 0012 GETIDX R1 R1 K2 - 0x78060003, // 0013 JMPF R1 #0018 - 0x8C040103, // 0014 GETMET R1 R0 K3 - 0x500C0200, // 0015 LDBOOL R3 1 0 - 0x7C040400, // 0016 CALL R1 2 - 0x70020005, // 0017 JMP #001E - 0xB8060000, // 0018 GETNGBL R1 K0 - 0x8C040304, // 0019 GETMET R1 R1 K4 - 0x580C0008, // 001A LDCONST R3 K8 - 0x84100001, // 001B CLOSURE R4 P1 - 0x58140006, // 001C LDCONST R5 K6 - 0x7C040800, // 001D CALL R1 4 - 0xA0000000, // 001E CLOSE R0 - 0x80000000, // 001F RET 0 + ( &(const binstruction[45]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x88100302, // 0002 GETMBR R4 R1 K2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140405, // 0004 EQ R5 R2 R5 + 0x74160005, // 0005 JMPT R5 #000C + 0x4C140000, // 0006 LDNIL R5 + 0x1C140605, // 0007 EQ R5 R3 R5 + 0x74160002, // 0008 JMPT R5 #000C + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x5C1C0400, // 000F MOVE R7 R2 + 0x7C140400, // 0010 CALL R5 2 + 0x4C180000, // 0011 LDNIL R6 + 0x1C180A06, // 0012 EQ R6 R5 R6 + 0x781A0004, // 0013 JMPF R6 #0019 + 0xB81A0A00, // 0014 GETNGBL R6 K5 + 0x88180D06, // 0015 GETMBR R6 R6 K6 + 0x90060806, // 0016 SETMBR R1 K4 R6 + 0x4C180000, // 0017 LDNIL R6 + 0x80040C00, // 0018 RET 1 R6 + 0x8C180B07, // 0019 GETMET R6 R5 K7 + 0x5C200600, // 001A MOVE R8 R3 + 0x7C180400, // 001B CALL R6 2 + 0x741A0004, // 001C JMPT R6 #0022 + 0xB81A0A00, // 001D GETNGBL R6 K5 + 0x88180D08, // 001E GETMBR R6 R6 K8 + 0x90060806, // 001F SETMBR R1 K4 R6 + 0x4C180000, // 0020 LDNIL R6 + 0x80040C00, // 0021 RET 1 R6 + 0x8C180B09, // 0022 GETMET R6 R5 K9 + 0x5C200600, // 0023 MOVE R8 R3 + 0x5C240800, // 0024 MOVE R9 R4 + 0x7C180600, // 0025 CALL R6 3 + 0x741A0004, // 0026 JMPT R6 #002C + 0xB81A0A00, // 0027 GETNGBL R6 K5 + 0x88180D0A, // 0028 GETMBR R6 R6 K10 + 0x90060806, // 0029 SETMBR R1 K4 R6 + 0x4C180000, // 002A LDNIL R6 + 0x80040C00, // 002B RET 1 R6 + 0x80040A00, // 002C RET 1 R5 }) ) ); @@ -5679,12 +1960,218 @@ be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ /******************************************************************** -** Solidified function: signal_endpoints_changed +** Solidified function: start_operational_discovery_deferred ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ +be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_operational_discovery), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_operational_discovery_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(get_fabric), + /* K1 */ be_nested_str_weak(get_fabric_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(get_admin_vendor_name), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(stop_basic_commissioning), + }), + be_str_weak(start_commissioning_complete), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x8C0C0501, // 0002 GETMET R3 R2 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x7C100200, // 000B CALL R4 1 + 0xB8160C00, // 000C GETNGBL R5 K6 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C0007, // 000E LDCONST R7 K7 + 0x5C200600, // 000F MOVE R8 R3 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C180600, // 0011 CALL R6 3 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x7C140400, // 0013 CALL R5 2 + 0x8C140109, // 0014 GETMET R5 R0 K9 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_received +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_msg_received, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(msg_received), + }), + be_str_weak(msg_received), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(Path), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(message_handler), + /* K6 */ be_nested_str_weak(im), + /* K7 */ be_nested_str_weak(subs_shop), + /* K8 */ be_nested_str_weak(attribute_updated_ctx), + }), + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160000, // 0002 JMPF R5 #0004 + 0x50100000, // 0003 LDBOOL R4 0 0 + 0xB8160000, // 0004 GETNGBL R5 K0 + 0x8C140B01, // 0005 GETMET R5 R5 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x90160401, // 0007 SETMBR R5 K2 R1 + 0x90160602, // 0008 SETMBR R5 K3 R2 + 0x90160803, // 0009 SETMBR R5 K4 R3 + 0x88180105, // 000A GETMBR R6 R0 K5 + 0x88180D06, // 000B GETMBR R6 R6 K6 + 0x88180D07, // 000C GETMBR R6 R6 K7 + 0x8C180D08, // 000D GETMET R6 R6 K8 + 0x5C200A00, // 000E MOVE R8 R5 + 0x5C240800, // 000F MOVE R9 R4 + 0x7C180600, // 0010 CALL R6 3 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_fabrics_saved +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ + be_nested_proto( + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5693,29 +2180,1334 @@ be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(save_param), }), - be_str_weak(signal_endpoints_changed), + be_str_weak(event_fabrics_saved), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x24040302, // 0003 GT R1 R1 K2 + 0x78060005, // 0004 JMPF R1 #000B + 0x88040103, // 0005 GETMBR R1 R0 K3 + 0x74060003, // 0006 JMPT R1 #000B + 0x50040200, // 0007 LDBOOL R1 1 0 + 0x90020601, // 0008 SETMBR R0 K3 R1 + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete_deferred +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_commissioning_complete_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: save_before_restart +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_save_before_restart, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(stop_basic_commissioning), + /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), + }), + be_str_weak(save_before_restart), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x5412001C, // 0002 LDINT R4 29 - 0x58140002, // 0003 LDCONST R5 K2 - 0x50180000, // 0004 LDBOOL R6 0 0 - 0x7C040A00, // 0005 CALL R1 5 - 0x8C040100, // 0006 GETMET R1 R0 K0 - 0xB80E0600, // 0007 GETNGBL R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x5412001C, // 0009 LDINT R4 29 - 0x58140002, // 000A LDCONST R5 K2 - 0x50180000, // 000B LDBOOL R6 0 0 - 0x7C040A00, // 000C CALL R1 5 - 0x80000000, // 000D RET 0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_add_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K4 */ be_nested_str_weak(_X27_X20skipping), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(next_ep), + /* K7 */ be_nested_str_weak(plugins), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(type), + /* K10 */ be_nested_str_weak(keys), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K13 */ be_nested_str_weak(conf_to_log), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_persist), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(save_param), + /* K19 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_add_endpoint), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120008, // 0006 JMPF R4 #0010 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0x60140008, // 0008 GETGBL R5 G8 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C140200, // 000A CALL R5 1 + 0x00160605, // 000B ADD R5 K3 R5 + 0x00140B04, // 000C ADD R5 R5 K4 + 0x58180005, // 000D LDCONST R6 K5 + 0x7C100400, // 000E CALL R4 2 + 0x80000800, // 000F RET 0 + 0x88100106, // 0010 GETMBR R4 R0 K6 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x5C180600, // 0014 MOVE R6 R3 + 0x5C1C0000, // 0015 MOVE R7 R0 + 0x5C200800, // 0016 MOVE R8 R4 + 0x5C240400, // 0017 MOVE R9 R2 + 0x7C180600, // 0018 CALL R6 3 + 0x881C0107, // 0019 GETMBR R7 R0 K7 + 0x8C1C0F08, // 001A GETMET R7 R7 K8 + 0x5C240C00, // 001B MOVE R9 R6 + 0x7C1C0400, // 001C CALL R7 2 + 0x601C0013, // 001D GETGBL R7 G19 + 0x7C1C0000, // 001E CALL R7 0 + 0x981E1201, // 001F SETIDX R7 K9 R1 + 0x60200010, // 0020 GETGBL R8 G16 + 0x8C24050A, // 0021 GETMET R9 R2 K10 + 0x7C240200, // 0022 CALL R9 1 + 0x7C200200, // 0023 CALL R8 1 + 0xA8020004, // 0024 EXBLK 0 #002A + 0x5C241000, // 0025 MOVE R9 R8 + 0x7C240000, // 0026 CALL R9 0 + 0x94280409, // 0027 GETIDX R10 R2 R9 + 0x981C120A, // 0028 SETIDX R7 R9 R10 + 0x7001FFFA, // 0029 JMP #0025 + 0x5820000B, // 002A LDCONST R8 K11 + 0xAC200200, // 002B CATCH R8 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0xB8220400, // 002D GETNGBL R8 K2 + 0x60240018, // 002E GETGBL R9 G24 + 0x5828000C, // 002F LDCONST R10 K12 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300200, // 0031 MOVE R12 R1 + 0x8C34010D, // 0032 GETMET R13 R0 K13 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C340400, // 0034 CALL R13 2 + 0x7C240800, // 0035 CALL R9 4 + 0x5828000E, // 0036 LDCONST R10 K14 + 0x7C200400, // 0037 CALL R8 2 + 0x8820010F, // 0038 GETMBR R8 R0 K15 + 0x98200A07, // 0039 SETIDX R8 R5 R7 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x90022008, // 003B SETMBR R0 K16 R8 + 0x88200106, // 003C GETMBR R8 R0 K6 + 0x00201111, // 003D ADD R8 R8 K17 + 0x90020C08, // 003E SETMBR R0 K6 R8 + 0x8C200112, // 003F GETMET R8 R0 K18 + 0x7C200200, // 0040 CALL R8 1 + 0x8C200113, // 0041 GETMET R8 R0 K19 + 0x7C200200, // 0042 CALL R8 1 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrInfo +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrInfo, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(MtrInfo_one), + /* K3 */ be_nested_str_weak(endpoint), + /* K4 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(int), + /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrInfo), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x1C140700, // 0000 EQ R5 R3 K0 + 0x7815FFFF, // 0001 JMPF R5 #0002 + 0x1C140700, // 0002 EQ R5 R3 K0 + 0x7816000D, // 0003 JMPF R5 #0012 + 0x60140010, // 0004 GETGBL R5 G16 + 0x88180101, // 0005 GETMBR R6 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C180A00, // 0008 MOVE R6 R5 + 0x7C180000, // 0009 CALL R6 0 + 0x8C1C0102, // 000A GETMET R7 R0 K2 + 0x88240D03, // 000B GETMBR R9 R6 K3 + 0x7C1C0400, // 000C CALL R7 2 + 0x7001FFF9, // 000D JMP #0008 + 0x58140004, // 000E LDCONST R5 K4 + 0xAC140200, // 000F CATCH R5 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x70020011, // 0011 JMP #0024 + 0x60140004, // 0012 GETGBL R5 G4 + 0x5C180800, // 0013 MOVE R6 R4 + 0x7C140200, // 0014 CALL R5 1 + 0x1C140B05, // 0015 EQ R5 R5 K5 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C140102, // 0017 GETMET R5 R0 K2 + 0x5C1C0800, // 0018 MOVE R7 R4 + 0x7C140400, // 0019 CALL R5 2 + 0x70020008, // 001A JMP #0024 + 0x8C140106, // 001B GETMET R5 R0 K6 + 0x5C1C0600, // 001C MOVE R7 R3 + 0x7C140400, // 001D CALL R5 2 + 0x4C180000, // 001E LDNIL R6 + 0x20180A06, // 001F NE R6 R5 R6 + 0x781A0002, // 0020 JMPF R6 #0024 + 0x8C180102, // 0021 GETMET R6 R0 K2 + 0x88200B03, // 0022 GETMBR R8 R5 K3 + 0x7C180400, // 0023 CALL R6 2 + 0xB8160E00, // 0024 GETNGBL R5 K7 + 0x8C140B08, // 0025 GETMET R5 R5 K8 + 0x7C140200, // 0026 CALL R5 1 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _start_udp +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__start_udp, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_received), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(UDPServer), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(start), + }), + be_str_weak(_start_udp), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x4C080000, // 0003 LDNIL R2 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540615A3, // 0006 LDINT R1 5540 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x600C0008, // 0008 GETGBL R3 G8 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C0C0200, // 000A CALL R3 1 + 0x000E0403, // 000B ADD R3 K2 R3 + 0x58100003, // 000C LDCONST R4 K3 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x8C080505, // 000F GETMET R2 R2 K5 + 0x5C100000, // 0010 MOVE R4 R0 + 0x58140006, // 0011 LDCONST R5 K6 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C080800, // 0013 CALL R2 4 + 0x90020002, // 0014 SETMBR R0 K0 R2 + 0x88080100, // 0015 GETMBR R2 R0 K0 + 0x8C080507, // 0016 GETMET R2 R2 K7 + 0x84100000, // 0017 CLOSURE R4 P0 + 0x7C080400, // 0018 CALL R2 2 + 0xA0000000, // 0019 CLOSE R0 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_50ms, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_const_int(1), + }), + be_str_weak(every_50ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x00040301, // 0001 ADD R1 R1 K1 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_root_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(commissioning_admin_fabric), + }), + be_str_weak(is_root_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060003, // 0003 JMPF R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x74060000, // 0007 JMPT R1 #0009 + 0x50040001, // 0008 LDBOOL R1 0 1 + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: k2l_num +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_k2l_num, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), + }), + be_str_weak(k2l_num), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020007, // 000B EXBLK 0 #0014 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x601C0009, // 000F GETGBL R7 G9 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C1C0200, // 0011 CALL R7 1 + 0x7C140400, // 0012 CALL R5 2 + 0x7001FFF7, // 0013 JMP #000C + 0x580C0003, // 0014 LDCONST R3 K3 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x600C0010, // 0017 GETGBL R3 G16 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x5C140400, // 0019 MOVE R5 R2 + 0x7C100200, // 001A CALL R4 1 + 0x04100904, // 001B SUB R4 R4 K4 + 0x40120804, // 001C CONNECT R4 K4 R4 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x94140404, // 0021 GETIDX R5 R2 R4 + 0x5C180800, // 0022 MOVE R6 R4 + 0x241C0D05, // 0023 GT R7 R6 K5 + 0x781E0008, // 0024 JMPF R7 #002E + 0x041C0D04, // 0025 SUB R7 R6 K4 + 0x941C0407, // 0026 GETIDX R7 R2 R7 + 0x241C0E05, // 0027 GT R7 R7 R5 + 0x781E0004, // 0028 JMPF R7 #002E + 0x041C0D04, // 0029 SUB R7 R6 K4 + 0x941C0407, // 002A GETIDX R7 R2 R7 + 0x98080C07, // 002B SETIDX R2 R6 R7 + 0x04180D04, // 002C SUB R6 R6 K4 + 0x7001FFF4, // 002D JMP #0023 + 0x98080C05, // 002E SETIDX R2 R6 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0003, // 0030 LDCONST R3 K3 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x80040400, // 0033 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_commands +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_register_commands, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 4]) { + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrJoin), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrUpdate), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrInfo), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(add_cmd), + /* K2 */ be_nested_str_weak(MtrJoin), + /* K3 */ be_nested_str_weak(MtrUpdate), + /* K4 */ be_nested_str_weak(MtrInfo), + }), + be_str_weak(register_commands), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x84100000, // 0003 CLOSURE R4 P0 + 0x7C040600, // 0004 CALL R1 3 + 0xB8060000, // 0005 GETNGBL R1 K0 + 0x8C040301, // 0006 GETMET R1 R1 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x84100001, // 0008 CLOSURE R4 P1 + 0x7C040600, // 0009 CALL R1 3 + 0xB8060000, // 000A GETNGBL R1 K0 + 0x8C040301, // 000B GETMET R1 R1 K1 + 0x580C0004, // 000C LDCONST R3 K4 + 0x84100002, // 000D CLOSURE R4 P2 + 0x7C040600, // 000E CALL R1 3 + 0xA0000000, // 000F CLOSE R0 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sort_distinct +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_sort_distinct, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(remove), + }), + be_str_weak(sort_distinct), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0701, // 0005 SUB R3 R3 K1 + 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020010, // 0008 EXBLK 0 #001A + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B02, // 000D GT R6 R5 K2 + 0x781A0008, // 000E JMPF R6 #0018 + 0x04180B01, // 000F SUB R6 R5 K1 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x24180C04, // 0011 GT R6 R6 R4 + 0x781A0004, // 0012 JMPF R6 #0018 + 0x04180B01, // 0013 SUB R6 R5 K1 + 0x94180006, // 0014 GETIDX R6 R0 R6 + 0x98000A06, // 0015 SETIDX R0 R5 R6 + 0x04140B01, // 0016 SUB R5 R5 K1 + 0x7001FFF4, // 0017 JMP #000D + 0x98000A04, // 0018 SETIDX R0 R5 R4 + 0x7001FFEE, // 0019 JMP #0009 + 0x58080003, // 001A LDCONST R2 K3 + 0xAC080200, // 001B CATCH R2 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x58080001, // 001D LDCONST R2 K1 + 0x600C000C, // 001E GETGBL R3 G12 + 0x5C100000, // 001F MOVE R4 R0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x180C0701, // 0021 LE R3 R3 K1 + 0x780E0000, // 0022 JMPF R3 #0024 + 0x80040000, // 0023 RET 1 R0 + 0x940C0102, // 0024 GETIDX R3 R0 K2 + 0x6010000C, // 0025 GETGBL R4 G12 + 0x5C140000, // 0026 MOVE R5 R0 + 0x7C100200, // 0027 CALL R4 1 + 0x14100404, // 0028 LT R4 R2 R4 + 0x78120009, // 0029 JMPF R4 #0034 + 0x94100002, // 002A GETIDX R4 R0 R2 + 0x1C100803, // 002B EQ R4 R4 R3 + 0x78120003, // 002C JMPF R4 #0031 + 0x8C100104, // 002D GETMET R4 R0 K4 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x70020001, // 0030 JMP #0033 + 0x940C0002, // 0031 GETIDX R3 R0 R2 + 0x00080501, // 0032 ADD R2 R2 K1 + 0x7001FFF0, // 0033 JMP #0025 + 0x80040000, // 0034 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_config_ep +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_check_config_ep, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), + /* K12 */ be_nested_str_weak(next_ep), + /* K13 */ be_const_int(1), + }), + be_str_weak(check_config_ep), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x600C0010, // 0003 GETGBL R3 G16 + 0x88100100, // 0004 GETMBR R4 R0 K0 + 0x8C100901, // 0005 GETMET R4 R4 K1 + 0x7C100200, // 0006 CALL R4 1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020007, // 0008 EXBLK 0 #0011 + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x8C140502, // 000B GETMET R5 R2 K2 + 0x601C0009, // 000C GETGBL R7 G9 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C1C0200, // 000E CALL R7 1 + 0x7C140400, // 000F CALL R5 2 + 0x7001FFF7, // 0010 JMP #0009 + 0x580C0003, // 0011 LDCONST R3 K3 + 0xAC0C0200, // 0012 CATCH R3 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x600C0010, // 0014 GETGBL R3 G16 + 0x5C100400, // 0015 MOVE R4 R2 + 0x7C0C0200, // 0016 CALL R3 1 + 0xA8020030, // 0017 EXBLK 0 #0049 + 0x5C100600, // 0018 MOVE R4 R3 + 0x7C100000, // 0019 CALL R4 0 + 0x1C140904, // 001A EQ R5 R4 K4 + 0x7816000B, // 001B JMPF R5 #0028 + 0xB8160A00, // 001C GETNGBL R5 K5 + 0x58180006, // 001D LDCONST R6 K6 + 0x581C0007, // 001E LDCONST R7 K7 + 0x7C140400, // 001F CALL R5 2 + 0x88140100, // 0020 GETMBR R5 R0 K0 + 0x8C140B08, // 0021 GETMET R5 R5 K8 + 0x601C0008, // 0022 GETGBL R7 G8 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C1C0200, // 0024 CALL R7 1 + 0x7C140400, // 0025 CALL R5 2 + 0x50040200, // 0026 LDBOOL R1 1 0 + 0x7002001F, // 0027 JMP #0048 + 0xB8161200, // 0028 GETNGBL R5 K9 + 0x88140B0A, // 0029 GETMBR R5 R5 K10 + 0x1C140805, // 002A EQ R5 R4 R5 + 0x7816001B, // 002B JMPF R5 #0048 + 0x50040200, // 002C LDBOOL R1 1 0 + 0xB8160A00, // 002D GETNGBL R5 K5 + 0x60180018, // 002E GETGBL R6 G24 + 0x581C000B, // 002F LDCONST R7 K11 + 0x5C200800, // 0030 MOVE R8 R4 + 0x8824010C, // 0031 GETMBR R9 R0 K12 + 0x7C180600, // 0032 CALL R6 3 + 0x581C0007, // 0033 LDCONST R7 K7 + 0x7C140400, // 0034 CALL R5 2 + 0x60140008, // 0035 GETGBL R5 G8 + 0x8818010C, // 0036 GETMBR R6 R0 K12 + 0x7C140200, // 0037 CALL R5 1 + 0x88180100, // 0038 GETMBR R6 R0 K0 + 0x601C0008, // 0039 GETGBL R7 G8 + 0x5C200800, // 003A MOVE R8 R4 + 0x7C1C0200, // 003B CALL R7 1 + 0x88200100, // 003C GETMBR R8 R0 K0 + 0x941C1007, // 003D GETIDX R7 R8 R7 + 0x98180A07, // 003E SETIDX R6 R5 R7 + 0x88140100, // 003F GETMBR R5 R0 K0 + 0x8C140B08, // 0040 GETMET R5 R5 K8 + 0x601C0008, // 0041 GETGBL R7 G8 + 0x5C200800, // 0042 MOVE R8 R4 + 0x7C1C0200, // 0043 CALL R7 1 + 0x7C140400, // 0044 CALL R5 2 + 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x00140B0D, // 0046 ADD R5 R5 K13 + 0x90021805, // 0047 SETMBR R0 K12 R5 + 0x7001FFCE, // 0048 JMP #0018 + 0x580C0003, // 0049 LDCONST R3 K3 + 0xAC0C0200, // 004A CATCH R3 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80040200, // 004C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_attribute_expansion +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(start), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(get_pi), + /* K8 */ be_nested_str_weak(endpoint_found), + /* K9 */ be_nested_str_weak(status), + /* K10 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K11 */ be_nested_str_weak(cluster_found), + /* K12 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K13 */ be_nested_str_weak(attribute_found), + /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + }), + be_str_weak(process_attribute_expansion), + &be_const_str_solidified, + ( &(const binstruction[73]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x88140302, // 0002 GETMBR R5 R1 K2 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x88240300, // 0006 GETMBR R9 R1 K0 + 0x4C280000, // 0007 LDNIL R10 + 0x2024120A, // 0008 NE R9 R9 R10 + 0x78260007, // 0009 JMPF R9 #0012 + 0x88240301, // 000A GETMBR R9 R1 K1 + 0x4C280000, // 000B LDNIL R10 + 0x2024120A, // 000C NE R9 R9 R10 + 0x78260003, // 000D JMPF R9 #0012 + 0x88240302, // 000E GETMBR R9 R1 K2 + 0x4C280000, // 000F LDNIL R10 + 0x2024120A, // 0010 NE R9 R9 R10 + 0x74260000, // 0011 JMPT R9 #0013 + 0x50240001, // 0012 LDBOOL R9 0 1 + 0x50240200, // 0013 LDBOOL R9 1 0 + 0xB82A0600, // 0014 GETNGBL R10 K3 + 0x8C281504, // 0015 GETMET R10 R10 K4 + 0x5C300000, // 0016 MOVE R12 R0 + 0x7C280400, // 0017 CALL R10 2 + 0x8C2C1505, // 0018 GETMET R11 R10 K5 + 0x5C340200, // 0019 MOVE R13 R1 + 0x4C380000, // 001A LDNIL R14 + 0x7C2C0600, // 001B CALL R11 3 + 0x4C2C0000, // 001C LDNIL R11 + 0x8C301506, // 001D GETMET R12 R10 K6 + 0x7C300200, // 001E CALL R12 1 + 0x5C2C1800, // 001F MOVE R11 R12 + 0x4C340000, // 0020 LDNIL R13 + 0x2030180D, // 0021 NE R12 R12 R13 + 0x78320009, // 0022 JMPF R12 #002D + 0x5C300400, // 0023 MOVE R12 R2 + 0x8C341507, // 0024 GETMET R13 R10 K7 + 0x7C340200, // 0025 CALL R13 1 + 0x5C381600, // 0026 MOVE R14 R11 + 0x5C3C1200, // 0027 MOVE R15 R9 + 0x7C300600, // 0028 CALL R12 3 + 0x78260001, // 0029 JMPF R9 #002C + 0x78320000, // 002A JMPF R12 #002C + 0x80001A00, // 002B RET 0 + 0x7001FFEF, // 002C JMP #001D + 0x78260019, // 002D JMPF R9 #0048 + 0x88301508, // 002E GETMBR R12 R10 K8 + 0x74320003, // 002F JMPT R12 #0034 + 0xB8320600, // 0030 GETNGBL R12 K3 + 0x8830190A, // 0031 GETMBR R12 R12 K10 + 0x9006120C, // 0032 SETMBR R1 K9 R12 + 0x7002000E, // 0033 JMP #0043 + 0x8830150B, // 0034 GETMBR R12 R10 K11 + 0x74320003, // 0035 JMPT R12 #003A + 0xB8320600, // 0036 GETNGBL R12 K3 + 0x8830190C, // 0037 GETMBR R12 R12 K12 + 0x9006120C, // 0038 SETMBR R1 K9 R12 + 0x70020008, // 0039 JMP #0043 + 0x8830150D, // 003A GETMBR R12 R10 K13 + 0x74320003, // 003B JMPT R12 #0040 + 0xB8320600, // 003C GETNGBL R12 K3 + 0x8830190E, // 003D GETMBR R12 R12 K14 + 0x9006120C, // 003E SETMBR R1 K9 R12 + 0x70020002, // 003F JMP #0043 + 0xB8320600, // 0040 GETNGBL R12 K3 + 0x8830190F, // 0041 GETMBR R12 R12 K15 + 0x9006120C, // 0042 SETMBR R1 K9 R12 + 0x5C300400, // 0043 MOVE R12 R2 + 0x4C340000, // 0044 LDNIL R13 + 0x5C380200, // 0045 MOVE R14 R1 + 0x503C0200, // 0046 LDBOOL R15 1 0 + 0x7C300600, // 0047 CALL R12 3 + 0x80000000, // 0048 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(find), + /* K13 */ be_nested_str_weak(up), + /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K15 */ be_nested_str_weak(hostname_eth), + /* K16 */ be_nested_str_weak(add_service), + /* K17 */ be_nested_str_weak(_matter), + /* K18 */ be_nested_str_weak(_tcp), + /* K19 */ be_nested_str_weak(_I), + /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K21 */ be_nested_str_weak(add_subtype), + /* K22 */ be_nested_str_weak(wifi), + /* K23 */ be_nested_str_weak(hostname_wifi), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_const_int(2), + }), + be_str_weak(mdns_announce_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[115]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA802005F, // 0001 EXBLK 0 #0062 + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x001E1005, // 0011 ADD R7 K8 R5 + 0x58200009, // 0012 LDCONST R8 K9 + 0x7C180400, // 0013 CALL R6 2 + 0xB81A1400, // 0014 GETNGBL R6 K10 + 0x8C180D0B, // 0015 GETMET R6 R6 K11 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180D0C, // 0017 GETMET R6 R6 K12 + 0x5820000D, // 0018 LDCONST R8 K13 + 0x7C180400, // 0019 CALL R6 2 + 0x781A001E, // 001A JMPF R6 #003A + 0xB81A0E00, // 001B GETNGBL R6 K7 + 0x601C0018, // 001C GETGBL R7 G24 + 0x5820000E, // 001D LDCONST R8 K14 + 0x5824000B, // 001E LDCONST R9 K11 + 0x5C280A00, // 001F MOVE R10 R5 + 0x882C010F, // 0020 GETMBR R11 R0 K15 + 0x7C1C0800, // 0021 CALL R7 4 + 0x58200009, // 0022 LDCONST R8 K9 + 0x7C180400, // 0023 CALL R6 2 + 0x8C180510, // 0024 GETMET R6 R2 K16 + 0x58200011, // 0025 LDCONST R8 K17 + 0x58240012, // 0026 LDCONST R9 K18 + 0x542A15A3, // 0027 LDINT R10 5540 + 0x4C2C0000, // 0028 LDNIL R11 + 0x5C300A00, // 0029 MOVE R12 R5 + 0x8834010F, // 002A GETMBR R13 R0 K15 + 0x7C180E00, // 002B CALL R6 7 + 0x8C180905, // 002C GETMET R6 R4 K5 + 0x7C180200, // 002D CALL R6 1 + 0x001A2606, // 002E ADD R6 K19 R6 + 0xB81E0E00, // 002F GETNGBL R7 K7 + 0x00222806, // 0030 ADD R8 K20 R6 + 0x58240009, // 0031 LDCONST R9 K9 + 0x7C1C0400, // 0032 CALL R7 2 + 0x8C1C0515, // 0033 GETMET R7 R2 K21 + 0x58240011, // 0034 LDCONST R9 K17 + 0x58280012, // 0035 LDCONST R10 K18 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x8830010F, // 0037 GETMBR R12 R0 K15 + 0x5C340C00, // 0038 MOVE R13 R6 + 0x7C1C0C00, // 0039 CALL R7 6 + 0xB81A1400, // 003A GETNGBL R6 K10 + 0x8C180D16, // 003B GETMET R6 R6 K22 + 0x7C180200, // 003C CALL R6 1 + 0x8C180D0C, // 003D GETMET R6 R6 K12 + 0x5820000D, // 003E LDCONST R8 K13 + 0x7C180400, // 003F CALL R6 2 + 0x781A001E, // 0040 JMPF R6 #0060 + 0xB81A0E00, // 0041 GETNGBL R6 K7 + 0x601C0018, // 0042 GETGBL R7 G24 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x58240016, // 0044 LDCONST R9 K22 + 0x5C280A00, // 0045 MOVE R10 R5 + 0x882C0117, // 0046 GETMBR R11 R0 K23 + 0x7C1C0800, // 0047 CALL R7 4 + 0x58200009, // 0048 LDCONST R8 K9 + 0x7C180400, // 0049 CALL R6 2 + 0x8C180510, // 004A GETMET R6 R2 K16 + 0x58200011, // 004B LDCONST R8 K17 + 0x58240012, // 004C LDCONST R9 K18 + 0x542A15A3, // 004D LDINT R10 5540 + 0x4C2C0000, // 004E LDNIL R11 + 0x5C300A00, // 004F MOVE R12 R5 + 0x88340117, // 0050 GETMBR R13 R0 K23 + 0x7C180E00, // 0051 CALL R6 7 + 0x8C180905, // 0052 GETMET R6 R4 K5 + 0x7C180200, // 0053 CALL R6 1 + 0x001A2606, // 0054 ADD R6 K19 R6 + 0xB81E0E00, // 0055 GETNGBL R7 K7 + 0x00222806, // 0056 ADD R8 K20 R6 + 0x58240009, // 0057 LDCONST R9 K9 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C1C0515, // 0059 GETMET R7 R2 K21 + 0x58240011, // 005A LDCONST R9 K17 + 0x58280012, // 005B LDCONST R10 K18 + 0x5C2C0A00, // 005C MOVE R11 R5 + 0x88300117, // 005D GETMBR R12 R0 K23 + 0x5C340C00, // 005E MOVE R13 R6 + 0x7C1C0C00, // 005F CALL R7 6 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7002000F, // 0061 JMP #0072 + 0xAC0C0002, // 0062 CATCH R3 0 2 + 0x7002000C, // 0063 JMP #0071 + 0xB8160E00, // 0064 GETNGBL R5 K7 + 0x60180008, // 0065 GETGBL R6 G8 + 0x5C1C0600, // 0066 MOVE R7 R3 + 0x7C180200, // 0067 CALL R6 1 + 0x001A3006, // 0068 ADD R6 K24 R6 + 0x00180D19, // 0069 ADD R6 R6 K25 + 0x601C0008, // 006A GETGBL R7 G8 + 0x5C200800, // 006B MOVE R8 R4 + 0x7C1C0200, // 006C CALL R7 1 + 0x00180C07, // 006D ADD R6 R6 R7 + 0x581C001A, // 006E LDCONST R7 K26 + 0x7C140400, // 006F CALL R5 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: save_param +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_save_param, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(update_remotes_info), + /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), + /* K3 */ be_nested_str_weak(root_discriminator), + /* K4 */ be_nested_str_weak(root_passcode), + /* K5 */ be_nested_str_weak(ipv4only), + /* K6 */ be_nested_str_weak(true), + /* K7 */ be_nested_str_weak(false), + /* K8 */ be_nested_str_weak(disable_bridge_mode), + /* K9 */ be_nested_str_weak(next_ep), + /* K10 */ be_nested_str_weak(debug), + /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), + /* K14 */ be_nested_str_weak(dump), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_config_remotes), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), + /* K19 */ be_nested_str_weak(_X7D), + /* K20 */ be_nested_str_weak(FILENAME), + /* K21 */ be_nested_str_weak(w), + /* K22 */ be_nested_str_weak(write), + /* K23 */ be_nested_str_weak(close), + /* K24 */ be_nested_str_weak(log), + /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K26 */ be_nested_str_weak(_X20and_X20configuration), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_const_int(2), + /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K30 */ be_nested_str_weak(_X7C), + }), + be_str_weak(save_param), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x88140104, // 0006 GETMBR R5 R0 K4 + 0x88180105, // 0007 GETMBR R6 R0 K5 + 0x781A0001, // 0008 JMPF R6 #000B + 0x58180006, // 0009 LDCONST R6 K6 + 0x70020000, // 000A JMP #000C + 0x58180007, // 000B LDCONST R6 K7 + 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x781E0001, // 000D JMPF R7 #0010 + 0x581C0006, // 000E LDCONST R7 K6 + 0x70020000, // 000F JMP #0011 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x88200109, // 0011 GETMBR R8 R0 K9 + 0x7C080C00, // 0012 CALL R2 6 + 0x880C010A, // 0013 GETMBR R3 R0 K10 + 0x780E0000, // 0014 JMPF R3 #0016 + 0x0008050B, // 0015 ADD R2 R2 K11 + 0x880C010C, // 0016 GETMBR R3 R0 K12 + 0x780E000E, // 0017 JMPF R3 #0027 + 0x0008050D, // 0018 ADD R2 R2 K13 + 0x8C0C030E, // 0019 GETMET R3 R1 K14 + 0x8814010F, // 001A GETMBR R5 R0 K15 + 0x7C0C0400, // 001B CALL R3 2 + 0x00080403, // 001C ADD R2 R2 R3 + 0x600C000C, // 001D GETGBL R3 G12 + 0x88100110, // 001E GETMBR R4 R0 K16 + 0x7C0C0200, // 001F CALL R3 1 + 0x240C0711, // 0020 GT R3 R3 K17 + 0x780E0004, // 0021 JMPF R3 #0027 + 0x00080512, // 0022 ADD R2 R2 K18 + 0x8C0C030E, // 0023 GETMET R3 R1 K14 + 0x88140110, // 0024 GETMBR R5 R0 K16 + 0x7C0C0400, // 0025 CALL R3 2 + 0x00080403, // 0026 ADD R2 R2 R3 + 0x00080513, // 0027 ADD R2 R2 K19 + 0xA8020017, // 0028 EXBLK 0 #0041 + 0x600C0011, // 0029 GETGBL R3 G17 + 0x88100114, // 002A GETMBR R4 R0 K20 + 0x58140015, // 002B LDCONST R5 K21 + 0x7C0C0400, // 002C CALL R3 2 + 0x8C100716, // 002D GETMET R4 R3 K22 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x8C100717, // 0030 GETMET R4 R3 K23 + 0x7C100200, // 0031 CALL R4 1 + 0xB8123000, // 0032 GETNGBL R4 K24 + 0x60140018, // 0033 GETGBL R5 G24 + 0x58180019, // 0034 LDCONST R6 K25 + 0x881C010C, // 0035 GETMBR R7 R0 K12 + 0x781E0001, // 0036 JMPF R7 #0039 + 0x581C001A, // 0037 LDCONST R7 K26 + 0x70020000, // 0038 JMP #003A + 0x581C001B, // 0039 LDCONST R7 K27 + 0x7C140400, // 003A CALL R5 2 + 0x5818001C, // 003B LDCONST R6 K28 + 0x7C100400, // 003C CALL R4 2 + 0xA8040001, // 003D EXBLK 1 1 + 0x80040400, // 003E RET 1 R2 + 0xA8040001, // 003F EXBLK 1 1 + 0x70020010, // 0040 JMP #0052 + 0xAC0C0002, // 0041 CATCH R3 0 2 + 0x7002000D, // 0042 JMP #0051 + 0xB8163000, // 0043 GETNGBL R5 K24 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x001A3A06, // 0047 ADD R6 K29 R6 + 0x00180D1E, // 0048 ADD R6 R6 K30 + 0x601C0008, // 0049 GETGBL R7 G8 + 0x5C200800, // 004A MOVE R8 R4 + 0x7C1C0200, // 004B CALL R7 1 + 0x00180C07, // 004C ADD R6 R6 R7 + 0x581C001C, // 004D LDCONST R7 K28 + 0x7C140400, // 004E CALL R5 2 + 0x80040400, // 004F RET 1 R2 + 0x70020000, // 0050 JMP #0052 + 0xB0080000, // 0051 RAISE 2 R0 R0 + 0x80000000, // 0052 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start_root_basic_commissioning), + }), + be_str_weak(_init_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040302, // 0003 EQ R1 R1 K2 + 0x78060001, // 0004 JMPF R1 #0007 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x7C040200, // 0006 CALL R1 1 + 0x80000000, // 0007 RET 0 }) ) ); @@ -6012,6 +3804,201 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: start_mdns_announce_hostnames +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(wifi), + /* K2 */ be_nested_str_weak(up), + /* K3 */ be_nested_str_weak(_mdns_announce_hostname), + /* K4 */ be_nested_str_weak(add_rule), + /* K5 */ be_nested_str_weak(Wifi_X23Connected), + /* K6 */ be_nested_str_weak(matter_mdns_host), + /* K7 */ be_nested_str_weak(eth), + /* K8 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_mdns_announce_hostnames), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x94040302, // 0003 GETIDX R1 R1 K2 + 0x78060003, // 0004 JMPF R1 #0009 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x500C0000, // 0006 LDBOOL R3 0 0 + 0x7C040400, // 0007 CALL R1 2 + 0x70020005, // 0008 JMP #000F + 0xB8060000, // 0009 GETNGBL R1 K0 + 0x8C040304, // 000A GETMET R1 R1 K4 + 0x580C0005, // 000B LDCONST R3 K5 + 0x84100000, // 000C CLOSURE R4 P0 + 0x58140006, // 000D LDCONST R5 K6 + 0x7C040800, // 000E CALL R1 4 + 0xB8060000, // 000F GETNGBL R1 K0 + 0x8C040307, // 0010 GETMET R1 R1 K7 + 0x7C040200, // 0011 CALL R1 1 + 0x94040302, // 0012 GETIDX R1 R1 K2 + 0x78060003, // 0013 JMPF R1 #0018 + 0x8C040103, // 0014 GETMET R1 R0 K3 + 0x500C0200, // 0015 LDBOOL R3 1 0 + 0x7C040400, // 0016 CALL R1 2 + 0x70020005, // 0017 JMP #001E + 0xB8060000, // 0018 GETNGBL R1 K0 + 0x8C040304, // 0019 GETMET R1 R1 K4 + 0x580C0008, // 001A LDCONST R3 K8 + 0x84100001, // 001B CLOSURE R4 P1 + 0x58140006, // 001C LDCONST R5 K6 + 0x7C040800, // 001D CALL R1 4 + 0xA0000000, // 001E CLOSE R0 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_manual_pairing_code +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(root_discriminator), + /* K1 */ be_nested_str_weak(root_passcode), + /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Verhoeff), + /* K5 */ be_nested_str_weak(checksum), + }), + be_str_weak(compute_manual_pairing_code), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x540A0FFE, // 0001 LDINT R2 4095 + 0x2C040202, // 0002 AND R1 R1 R2 + 0x540A0009, // 0003 LDINT R2 10 + 0x3C040202, // 0004 SHR R1 R1 R2 + 0x88080100, // 0005 GETMBR R2 R0 K0 + 0x540E02FF, // 0006 LDINT R3 768 + 0x2C080403, // 0007 AND R2 R2 R3 + 0x540E0005, // 0008 LDINT R3 6 + 0x38080403, // 0009 SHL R2 R2 R3 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x54123FFE, // 000B LDINT R4 16383 + 0x2C0C0604, // 000C AND R3 R3 R4 + 0x30080403, // 000D OR R2 R2 R3 + 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x5412000D, // 000F LDINT R4 14 + 0x3C0C0604, // 0010 SHR R3 R3 R4 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140002, // 0012 LDCONST R5 K2 + 0x5C180200, // 0013 MOVE R6 R1 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x5C200600, // 0015 MOVE R8 R3 + 0x7C100800, // 0016 CALL R4 4 + 0xB8160600, // 0017 GETNGBL R5 K3 + 0x88140B04, // 0018 GETMBR R5 R5 K4 + 0x8C140B05, // 0019 GETMET R5 R5 K5 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x7C140400, // 001B CALL R5 2 + 0x00100805, // 001C ADD R4 R4 R5 + 0x80040800, // 001D RET 1 R4 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_plugin_remote_info ********************************************************************/ @@ -6047,12 +4034,76 @@ be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ /******************************************************************** -** Solidified function: every_50ms +** Solidified function: find_plugin_by_friendly_name ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_50ms, /* name */ +be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ be_nested_proto( - 2, /* nstack */ + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(get_name), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_plugin_by_friendly_name), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x1C080500, // 0006 EQ R2 R2 K0 + 0x780A0001, // 0007 JMPF R2 #000A + 0x4C080000, // 0008 LDNIL R2 + 0x80040400, // 0009 RET 1 R2 + 0x58080000, // 000A LDCONST R2 K0 + 0x600C000C, // 000B GETGBL R3 G12 + 0x88100101, // 000C GETMBR R4 R0 K1 + 0x7C0C0200, // 000D CALL R3 1 + 0x140C0403, // 000E LT R3 R2 R3 + 0x780E0010, // 000F JMPF R3 #0021 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x940C0602, // 0011 GETIDX R3 R3 R2 + 0x8C100702, // 0012 GETMET R4 R3 K2 + 0x7C100200, // 0013 CALL R4 1 + 0x4C140000, // 0014 LDNIL R5 + 0x20140805, // 0015 NE R5 R4 R5 + 0x78160007, // 0016 JMPF R5 #001F + 0x6014000C, // 0017 GETGBL R5 G12 + 0x5C180800, // 0018 MOVE R6 R4 + 0x7C140200, // 0019 CALL R5 1 + 0x24140B00, // 001A GT R5 R5 K0 + 0x78160002, // 001B JMPF R5 #001F + 0x1C140801, // 001C EQ R5 R4 R1 + 0x78160000, // 001D JMPF R5 #001F + 0x80040600, // 001E RET 1 R3 + 0x00080503, // 001F ADD R2 R2 K3 + 0x7001FFE9, // 0020 JMP #000B + 0x4C0C0000, // 0021 LDNIL R3 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _trigger_read_sensors +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -6060,17 +4111,1978 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_const_int(1), + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(read_sensors), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), + /* K7 */ be_nested_str_weak(load), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(plugins), + /* K10 */ be_nested_str_weak(parse_sensors), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), }), - be_str_weak(every_50ms), + be_str_weak(_trigger_read_sensors), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E0200, // 0004 GETNGBL R3 K1 + 0x8C0C0703, // 0005 GETMET R3 R3 K3 + 0x58140004, // 0006 LDCONST R5 K4 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0006, // 0008 JMPF R3 #0010 + 0xB80E0A00, // 0009 GETNGBL R3 K5 + 0x60100008, // 000A GETGBL R4 G8 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C100200, // 000C CALL R4 1 + 0x00120C04, // 000D ADD R4 K6 R4 + 0x58140004, // 000E LDCONST R5 K4 + 0x7C0C0400, // 000F CALL R3 2 + 0x4C0C0000, // 0010 LDNIL R3 + 0x1C0C0403, // 0011 EQ R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x80000600, // 0013 RET 0 + 0x8C0C0307, // 0014 GETMET R3 R1 K7 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x4C100000, // 0017 LDNIL R4 + 0x20100604, // 0018 NE R4 R3 R4 + 0x7812000D, // 0019 JMPF R4 #0028 + 0x58100008, // 001A LDCONST R4 K8 + 0x6014000C, // 001B GETGBL R5 G12 + 0x88180109, // 001C GETMBR R6 R0 K9 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160006, // 001F JMPF R5 #0027 + 0x88140109, // 0020 GETMBR R5 R0 K9 + 0x94140A04, // 0021 GETIDX R5 R5 R4 + 0x8C140B0A, // 0022 GETMET R5 R5 K10 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C140400, // 0024 CALL R5 2 + 0x0010090B, // 0025 ADD R4 R4 K11 + 0x7001FFF3, // 0026 JMP #001B + 0x70020006, // 0027 JMP #002F + 0xB8120A00, // 0028 GETNGBL R4 K5 + 0x60140008, // 0029 GETGBL R5 G8 + 0x5C180400, // 002A MOVE R6 R2 + 0x7C140200, // 002B CALL R5 1 + 0x00161805, // 002C ADD R5 K12 R5 + 0x58180004, // 002D LDCONST R6 K4 + 0x7C100400, // 002E CALL R4 2 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: adjust_next_ep +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(next_ep), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(adjust_next_ep), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000A, // 0005 EXBLK 0 #0011 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x600C0009, // 0008 GETGBL R3 G9 + 0x5C100400, // 0009 MOVE R4 R2 + 0x7C0C0200, // 000A CALL R3 1 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0x28100604, // 000C GE R4 R3 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x00100703, // 000E ADD R4 R3 K3 + 0x90020404, // 000F SETMBR R0 K2 R4 + 0x7001FFF4, // 0010 JMP #0006 + 0x58040004, // 0011 LDCONST R1 K4 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery_all_fabrics +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_remove_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_active_endpoints +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins), + /* K1 */ be_nested_str_weak(get_endpoint), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_active_endpoints), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020011, // 0005 EXBLK 0 #0018 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140901, // 0008 GETMET R5 R4 K1 + 0x7C140200, // 0009 CALL R5 1 + 0x78060002, // 000A JMPF R1 #000E + 0x1C180B02, // 000B EQ R6 R5 K2 + 0x781A0000, // 000C JMPF R6 #000E + 0x7001FFF7, // 000D JMP #0006 + 0x8C180503, // 000E GETMET R6 R2 K3 + 0x5C200A00, // 000F MOVE R8 R5 + 0x7C180400, // 0010 CALL R6 2 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C180504, // 0014 GETMET R6 R2 K4 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x7C180400, // 0016 CALL R6 2 + 0x7001FFED, // 0017 JMP #0006 + 0x580C0005, // 0018 LDCONST R3 K5 + 0xAC0C0200, // 0019 CATCH R3 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x80040400, // 001B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_second, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(every_second), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(commissioning_open), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(time_reached), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x88040103, // 0006 GETMBR R1 R0 K3 + 0x4C080000, // 0007 LDNIL R2 + 0x20040202, // 0008 NE R1 R1 R2 + 0x78060006, // 0009 JMPF R1 #0011 + 0xB8060800, // 000A GETNGBL R1 K4 + 0x8C040305, // 000B GETMET R1 R1 K5 + 0x880C0103, // 000C GETMBR R3 R0 K3 + 0x7C040400, // 000D CALL R1 2 + 0x78060001, // 000E JMPF R1 #0011 + 0x4C040000, // 000F LDNIL R1 + 0x90020601, // 0010 SETMBR R0 K3 R1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clean_remotes +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_clean_remotes, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(http_remotes), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(plugins), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_nested_str_weak(http_remote), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(keys), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), + /* K13 */ be_nested_str_weak(addr), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(close), + /* K16 */ be_nested_str_weak(remove), + }), + be_str_weak(clean_remotes), + &be_const_str_solidified, + ( &(const binstruction[80]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x780A004B, // 0002 JMPF R2 #004F + 0x60080013, // 0003 GETGBL R2 G19 + 0x7C080000, // 0004 CALL R2 0 + 0x600C0010, // 0005 GETGBL R3 G16 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020003, // 0008 EXBLK 0 #000D + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x98080902, // 000B SETIDX R2 R4 K2 + 0x7001FFFB, // 000C JMP #0009 + 0x580C0003, // 000D LDCONST R3 K3 + 0xAC0C0200, // 000E CATCH R3 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100104, // 0011 GETMBR R4 R0 K4 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA802000F, // 0013 EXBLK 0 #0024 + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x8C140305, // 0016 GETMET R5 R1 K5 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200006, // 0018 LDCONST R8 K6 + 0x7C140600, // 0019 CALL R5 3 + 0x4C180000, // 001A LDNIL R6 + 0x20180A06, // 001B NE R6 R5 R6 + 0x781A0005, // 001C JMPF R6 #0023 + 0x8C180507, // 001D GETMET R6 R2 K7 + 0x5C200A00, // 001E MOVE R8 R5 + 0x58240002, // 001F LDCONST R9 K2 + 0x7C180600, // 0020 CALL R6 3 + 0x00180D08, // 0021 ADD R6 R6 K8 + 0x98080A06, // 0022 SETIDX R2 R5 R6 + 0x7001FFEF, // 0023 JMP #0014 + 0x580C0003, // 0024 LDCONST R3 K3 + 0xAC0C0200, // 0025 CATCH R3 1 0 + 0xB0080000, // 0026 RAISE 2 R0 R0 + 0x600C0012, // 0027 GETGBL R3 G18 + 0x7C0C0000, // 0028 CALL R3 0 + 0x60100010, // 0029 GETGBL R4 G16 + 0x8C140509, // 002A GETMET R5 R2 K9 + 0x7C140200, // 002B CALL R5 1 + 0x7C100200, // 002C CALL R4 1 + 0xA8020008, // 002D EXBLK 0 #0037 + 0x5C140800, // 002E MOVE R5 R4 + 0x7C140000, // 002F CALL R5 0 + 0x94180405, // 0030 GETIDX R6 R2 R5 + 0x1C180D02, // 0031 EQ R6 R6 K2 + 0x781A0002, // 0032 JMPF R6 #0036 + 0x8C18070A, // 0033 GETMET R6 R3 K10 + 0x5C200A00, // 0034 MOVE R8 R5 + 0x7C180400, // 0035 CALL R6 2 + 0x7001FFF6, // 0036 JMP #002E + 0x58100003, // 0037 LDCONST R4 K3 + 0xAC100200, // 0038 CATCH R4 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x60100010, // 003A GETGBL R4 G16 + 0x5C140600, // 003B MOVE R5 R3 + 0x7C100200, // 003C CALL R4 1 + 0xA802000D, // 003D EXBLK 0 #004C + 0x5C140800, // 003E MOVE R5 R4 + 0x7C140000, // 003F CALL R5 0 + 0xB81A1600, // 0040 GETNGBL R6 K11 + 0x881C0B0D, // 0041 GETMBR R7 R5 K13 + 0x001E1807, // 0042 ADD R7 K12 R7 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x7C180400, // 0044 CALL R6 2 + 0x8C180B0F, // 0045 GETMET R6 R5 K15 + 0x7C180200, // 0046 CALL R6 1 + 0x88180101, // 0047 GETMBR R6 R0 K1 + 0x8C180D10, // 0048 GETMET R6 R6 K16 + 0x88200B0D, // 0049 GETMBR R8 R5 K13 + 0x7C180400, // 004A CALL R6 2 + 0x7001FFF1, // 004B JMP #003E + 0x58100003, // 004C LDCONST R4 K3 + 0xAC100200, // 004D CATCH R4 1 0 + 0xB0080000, // 004E RAISE 2 R0 R0 + 0x80000000, // 004F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: load_param +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_load_param, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[36]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(FILENAME), + /* K2 */ be_nested_str_weak(read), + /* K3 */ be_nested_str_weak(close), + /* K4 */ be_nested_str_weak(json), + /* K5 */ be_nested_str_weak(load), + /* K6 */ be_nested_str_weak(root_discriminator), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(distinguish), + /* K9 */ be_nested_str_weak(root_passcode), + /* K10 */ be_nested_str_weak(passcode), + /* K11 */ be_nested_str_weak(ipv4only), + /* K12 */ be_nested_str_weak(disable_bridge_mode), + /* K13 */ be_nested_str_weak(next_ep), + /* K14 */ be_nested_str_weak(nextep), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(config), + /* K17 */ be_nested_str_weak(debug), + /* K18 */ be_nested_str_weak(log), + /* K19 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(adjust_next_ep), + /* K22 */ be_nested_str_weak(check_config_ep), + /* K23 */ be_nested_str_weak(plugins_persist), + /* K24 */ be_nested_str_weak(plugins_config_remotes), + /* K25 */ be_nested_str_weak(remotes), + /* K26 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), + /* K27 */ be_nested_str_weak(io_error), + /* K28 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), + /* K29 */ be_nested_str_weak(_X7C), + /* K30 */ be_const_int(2), + /* K31 */ be_nested_str_weak(random), + /* K32 */ be_nested_str_weak(get), + /* K33 */ be_const_int(0), + /* K34 */ be_nested_str_weak(generate_random_passcode), + /* K35 */ be_nested_str_weak(save_param), + }), + be_str_weak(load_param), + &be_const_str_solidified, + ( &(const binstruction[133]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0xA8020054, // 0002 EXBLK 0 #0058 + 0x600C0011, // 0003 GETGBL R3 G17 + 0x88100101, // 0004 GETMBR R4 R0 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C100702, // 0006 GETMET R4 R3 K2 + 0x7C100200, // 0007 CALL R4 1 + 0x8C140703, // 0008 GETMET R5 R3 K3 + 0x7C140200, // 0009 CALL R5 1 + 0xA4160800, // 000A IMPORT R5 K4 + 0x8C180B05, // 000B GETMET R6 R5 K5 + 0x5C200800, // 000C MOVE R8 R4 + 0x7C180400, // 000D CALL R6 2 + 0x8C1C0D07, // 000E GETMET R7 R6 K7 + 0x58240008, // 000F LDCONST R9 K8 + 0x88280106, // 0010 GETMBR R10 R0 K6 + 0x7C1C0600, // 0011 CALL R7 3 + 0x90020C07, // 0012 SETMBR R0 K6 R7 + 0x8C1C0D07, // 0013 GETMET R7 R6 K7 + 0x5824000A, // 0014 LDCONST R9 K10 + 0x88280109, // 0015 GETMBR R10 R0 K9 + 0x7C1C0600, // 0016 CALL R7 3 + 0x90021207, // 0017 SETMBR R0 K9 R7 + 0x601C0017, // 0018 GETGBL R7 G23 + 0x8C200D07, // 0019 GETMET R8 R6 K7 + 0x5828000B, // 001A LDCONST R10 K11 + 0x502C0000, // 001B LDBOOL R11 0 0 + 0x7C200600, // 001C CALL R8 3 + 0x7C1C0200, // 001D CALL R7 1 + 0x90021607, // 001E SETMBR R0 K11 R7 + 0x601C0017, // 001F GETGBL R7 G23 + 0x8C200D07, // 0020 GETMET R8 R6 K7 + 0x5828000C, // 0021 LDCONST R10 K12 + 0x502C0000, // 0022 LDBOOL R11 0 0 + 0x7C200600, // 0023 CALL R8 3 + 0x7C1C0200, // 0024 CALL R7 1 + 0x90021807, // 0025 SETMBR R0 K12 R7 + 0x8C1C0D07, // 0026 GETMET R7 R6 K7 + 0x5824000E, // 0027 LDCONST R9 K14 + 0x8828010D, // 0028 GETMBR R10 R0 K13 + 0x7C1C0600, // 0029 CALL R7 3 + 0x90021A07, // 002A SETMBR R0 K13 R7 + 0x8C1C0D07, // 002B GETMET R7 R6 K7 + 0x58240010, // 002C LDCONST R9 K16 + 0x7C1C0400, // 002D CALL R7 2 + 0x90021E07, // 002E SETMBR R0 K15 R7 + 0x601C0017, // 002F GETGBL R7 G23 + 0x8C200D07, // 0030 GETMET R8 R6 K7 + 0x58280011, // 0031 LDCONST R10 K17 + 0x7C200400, // 0032 CALL R8 2 + 0x7C1C0200, // 0033 CALL R7 1 + 0x90022207, // 0034 SETMBR R0 K17 R7 + 0x881C010F, // 0035 GETMBR R7 R0 K15 + 0x4C200000, // 0036 LDNIL R8 + 0x201C0E08, // 0037 NE R7 R7 R8 + 0x781E000D, // 0038 JMPF R7 #0047 + 0xB81E2400, // 0039 GETNGBL R7 K18 + 0x60200018, // 003A GETGBL R8 G24 + 0x58240013, // 003B LDCONST R9 K19 + 0x8828010F, // 003C GETMBR R10 R0 K15 + 0x7C200400, // 003D CALL R8 2 + 0x58240014, // 003E LDCONST R9 K20 + 0x7C1C0400, // 003F CALL R7 2 + 0x8C1C0115, // 0040 GETMET R7 R0 K21 + 0x7C1C0200, // 0041 CALL R7 1 + 0x8C1C0116, // 0042 GETMET R7 R0 K22 + 0x7C1C0200, // 0043 CALL R7 1 + 0x5C080E00, // 0044 MOVE R2 R7 + 0x501C0200, // 0045 LDBOOL R7 1 0 + 0x90022E07, // 0046 SETMBR R0 K23 R7 + 0x8C1C0D07, // 0047 GETMET R7 R6 K7 + 0x58240019, // 0048 LDCONST R9 K25 + 0x60280013, // 0049 GETGBL R10 G19 + 0x7C280000, // 004A CALL R10 0 + 0x7C1C0600, // 004B CALL R7 3 + 0x90023007, // 004C SETMBR R0 K24 R7 + 0x881C0118, // 004D GETMBR R7 R0 K24 + 0x781E0006, // 004E JMPF R7 #0056 + 0xB81E2400, // 004F GETNGBL R7 K18 + 0x60200008, // 0050 GETGBL R8 G8 + 0x88240118, // 0051 GETMBR R9 R0 K24 + 0x7C200200, // 0052 CALL R8 1 + 0x00223408, // 0053 ADD R8 K26 R8 + 0x58240014, // 0054 LDCONST R9 K20 + 0x7C1C0400, // 0055 CALL R7 2 + 0xA8040001, // 0056 EXBLK 1 1 + 0x70020011, // 0057 JMP #006A + 0xAC0C0002, // 0058 CATCH R3 0 2 + 0x7002000E, // 0059 JMP #0069 + 0x2014071B, // 005A NE R5 R3 K27 + 0x7816000B, // 005B JMPF R5 #0068 + 0xB8162400, // 005C GETNGBL R5 K18 + 0x60180008, // 005D GETGBL R6 G8 + 0x5C1C0600, // 005E MOVE R7 R3 + 0x7C180200, // 005F CALL R6 1 + 0x001A3806, // 0060 ADD R6 K28 R6 + 0x00180D1D, // 0061 ADD R6 R6 K29 + 0x601C0008, // 0062 GETGBL R7 G8 + 0x5C200800, // 0063 MOVE R8 R4 + 0x7C1C0200, // 0064 CALL R7 1 + 0x00180C07, // 0065 ADD R6 R6 R7 + 0x581C001E, // 0066 LDCONST R7 K30 + 0x7C140400, // 0067 CALL R5 2 + 0x70020000, // 0068 JMP #006A + 0xB0080000, // 0069 RAISE 2 R0 R0 + 0x880C0106, // 006A GETMBR R3 R0 K6 + 0x4C100000, // 006B LDNIL R4 + 0x1C0C0604, // 006C EQ R3 R3 R4 + 0x780E000A, // 006D JMPF R3 #0079 + 0x8C0C031F, // 006E GETMET R3 R1 K31 + 0x5814001E, // 006F LDCONST R5 K30 + 0x7C0C0400, // 0070 CALL R3 2 + 0x8C0C0720, // 0071 GETMET R3 R3 K32 + 0x58140021, // 0072 LDCONST R5 K33 + 0x5818001E, // 0073 LDCONST R6 K30 + 0x7C0C0600, // 0074 CALL R3 3 + 0x54120FFE, // 0075 LDINT R4 4095 + 0x2C0C0604, // 0076 AND R3 R3 R4 + 0x90020C03, // 0077 SETMBR R0 K6 R3 + 0x50080200, // 0078 LDBOOL R2 1 0 + 0x880C0109, // 0079 GETMBR R3 R0 K9 + 0x4C100000, // 007A LDNIL R4 + 0x1C0C0604, // 007B EQ R3 R3 R4 + 0x780E0003, // 007C JMPF R3 #0081 + 0x8C0C0122, // 007D GETMET R3 R0 K34 + 0x7C0C0200, // 007E CALL R3 1 + 0x90021203, // 007F SETMBR R0 K9 R3 + 0x50080200, // 0080 LDBOOL R2 1 0 + 0x780A0001, // 0081 JMPF R2 #0084 + 0x8C0C0123, // 0082 GETMET R3 R0 K35 + 0x7C0C0200, // 0083 CALL R3 1 + 0x80000000, // 0084 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: received_ack +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_received_ack, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(received_ack), + }), + be_str_weak(received_ack), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_root_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ + be_nested_proto( + 13, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(PASE_TIMEOUT), + /* K1 */ be_nested_str_weak(compute_manual_pairing_code), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(compute_qrcode_content), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(publish_result), + /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), + /* K9 */ be_nested_str_weak(Matter), + /* K10 */ be_nested_str_weak(_compute_pbkdf), + /* K11 */ be_nested_str_weak(root_passcode), + /* K12 */ be_nested_str_weak(root_iterations), + /* K13 */ be_nested_str_weak(root_salt), + /* K14 */ be_nested_str_weak(start_basic_commissioning), + /* K15 */ be_nested_str_weak(root_discriminator), + /* K16 */ be_nested_str_weak(root_w0), + /* K17 */ be_nested_str_weak(root_L), + }), + be_str_weak(start_root_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040100, // 0003 GETMBR R1 R0 K0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140003, // 0008 LDCONST R5 K3 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C100400, // 000A CALL R4 2 + 0x58140004, // 000B LDCONST R5 K4 + 0x7C0C0400, // 000C CALL R3 2 + 0x8C0C0105, // 000D GETMET R3 R0 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x8C100907, // 0010 GETMET R4 R4 K7 + 0x60180018, // 0011 GETGBL R6 G24 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x5C200400, // 0013 MOVE R8 R2 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C180600, // 0015 CALL R6 3 + 0x581C0009, // 0016 LDCONST R7 K9 + 0x7C100600, // 0017 CALL R4 3 + 0x8C10010A, // 0018 GETMET R4 R0 K10 + 0x8818010B, // 0019 GETMBR R6 R0 K11 + 0x881C010C, // 001A GETMBR R7 R0 K12 + 0x8820010D, // 001B GETMBR R8 R0 K13 + 0x7C100800, // 001C CALL R4 4 + 0x8C10010E, // 001D GETMET R4 R0 K14 + 0x5C180200, // 001E MOVE R6 R1 + 0x881C010C, // 001F GETMBR R7 R0 K12 + 0x8820010F, // 0020 GETMBR R8 R0 K15 + 0x8824010D, // 0021 GETMBR R9 R0 K13 + 0x88280110, // 0022 GETMBR R10 R0 K16 + 0x882C0111, // 0023 GETMBR R11 R0 K17 + 0x4C300000, // 0024 LDNIL R12 + 0x7C101000, // 0025 CALL R4 8 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_remove_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(plugins_config), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(plugins_persist), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(get_endpoint), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(clean_remotes), + /* K15 */ be_nested_str_weak(save_param), + /* K16 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_remove_endpoint), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0008, // 0001 GETGBL R3 G8 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x4C140000, // 0005 LDNIL R5 + 0x88180101, // 0006 GETMBR R6 R0 K1 + 0x8C180D02, // 0007 GETMET R6 R6 K2 + 0x5C200600, // 0008 MOVE R8 R3 + 0x7C180400, // 0009 CALL R6 2 + 0x741A0004, // 000A JMPT R6 #0010 + 0xB81A0600, // 000B GETNGBL R6 K3 + 0x001E0803, // 000C ADD R7 K4 R3 + 0x58200005, // 000D LDCONST R8 K5 + 0x7C180400, // 000E CALL R6 2 + 0x80000C00, // 000F RET 0 + 0xB81A0600, // 0010 GETNGBL R6 K3 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x58200006, // 0012 LDCONST R8 K6 + 0x5C240200, // 0013 MOVE R9 R1 + 0x7C1C0400, // 0014 CALL R7 2 + 0x58200007, // 0015 LDCONST R8 K7 + 0x7C180400, // 0016 CALL R6 2 + 0x88180101, // 0017 GETMBR R6 R0 K1 + 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C180400, // 001A CALL R6 2 + 0x50180200, // 001B LDBOOL R6 1 0 + 0x90021206, // 001C SETMBR R0 K9 R6 + 0x5818000A, // 001D LDCONST R6 K10 + 0x601C000C, // 001E GETGBL R7 G12 + 0x8820010B, // 001F GETMBR R8 R0 K11 + 0x7C1C0200, // 0020 CALL R7 1 + 0x141C0C07, // 0021 LT R7 R6 R7 + 0x781E000D, // 0022 JMPF R7 #0031 + 0x881C010B, // 0023 GETMBR R7 R0 K11 + 0x941C0E06, // 0024 GETIDX R7 R7 R6 + 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 + 0x7C1C0200, // 0026 CALL R7 1 + 0x1C1C0207, // 0027 EQ R7 R1 R7 + 0x781E0005, // 0028 JMPF R7 #002F + 0x881C010B, // 0029 GETMBR R7 R0 K11 + 0x8C1C0F08, // 002A GETMET R7 R7 K8 + 0x5C240C00, // 002B MOVE R9 R6 + 0x7C1C0400, // 002C CALL R7 2 + 0x70020002, // 002D JMP #0031 + 0x70020000, // 002E JMP #0030 + 0x00180D0D, // 002F ADD R6 R6 K13 + 0x7001FFEC, // 0030 JMP #001E + 0x8C1C010E, // 0031 GETMET R7 R0 K14 + 0x7C1C0200, // 0032 CALL R7 1 + 0x8C1C010F, // 0033 GETMET R7 R0 K15 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0110, // 0035 GETMET R7 R0 K16 + 0x7C1C0200, // 0036 CALL R7 1 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_plugin_by_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(get_endpoint), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_plugin_by_endpoint), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C100702, // 0008 GETMET R4 R3 K2 + 0x7C100200, // 0009 CALL R4 1 + 0x1C100801, // 000A EQ R4 R4 R1 + 0x78120000, // 000B JMPF R4 #000D + 0x80040600, // 000C RET 1 R3 + 0x00080503, // 000D ADD R2 R2 K3 + 0x7001FFF1, // 000E JMP #0001 + 0x4C0C0000, // 000F LDNIL R3 + 0x80040600, // 0010 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_remotes_info +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_update_remotes_info, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(get_info), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(plugins_config_remotes), + }), + be_str_weak(update_remotes_info), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x20080403, // 0004 NE R2 R2 R3 + 0x780A0018, // 0005 JMPF R2 #001F + 0x60080010, // 0006 GETGBL R2 G16 + 0x880C0100, // 0007 GETMBR R3 R0 K0 + 0x8C0C0701, // 0008 GETMET R3 R3 K1 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7C080200, // 000A CALL R2 1 + 0xA802000F, // 000B EXBLK 0 #001C + 0x5C0C0400, // 000C MOVE R3 R2 + 0x7C0C0000, // 000D CALL R3 0 + 0x88100100, // 000E GETMBR R4 R0 K0 + 0x94100803, // 000F GETIDX R4 R4 R3 + 0x8C100902, // 0010 GETMET R4 R4 K2 + 0x7C100200, // 0011 CALL R4 1 + 0x4C140000, // 0012 LDNIL R5 + 0x20140805, // 0013 NE R5 R4 R5 + 0x78160005, // 0014 JMPF R5 #001B + 0x6014000C, // 0015 GETGBL R5 G12 + 0x5C180800, // 0016 MOVE R6 R4 + 0x7C140200, // 0017 CALL R5 1 + 0x24140B03, // 0018 GT R5 R5 K3 + 0x78160000, // 0019 JMPF R5 #001B + 0x98040604, // 001A SETIDX R1 R3 R4 + 0x7001FFEF, // 001B JMP #000C + 0x58080004, // 001C LDCONST R2 K4 + 0xAC080200, // 001D CATCH R2 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x90020A01, // 001F SETMBR R0 K5 R1 + 0x80040200, // 0020 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_device, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(plugins_config), + /* K5 */ be_nested_str_weak(autoconf_device_map), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(adjust_next_ep), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(count_active_fabrics), + /* K14 */ be_nested_str_weak(save_param), + }), + be_str_weak(autoconf_device), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x24080502, // 0004 GT R2 R2 K2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x80000400, // 0006 RET 0 + 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x740A000E, // 0008 JMPT R2 #0018 + 0x8C080105, // 0009 GETMET R2 R0 K5 + 0x7C080200, // 000A CALL R2 1 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0x60080013, // 000C GETGBL R2 G19 + 0x7C080000, // 000D CALL R2 0 + 0x90020C02, // 000E SETMBR R0 K6 R2 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x7C080200, // 0010 CALL R2 1 + 0xB80A1000, // 0011 GETNGBL R2 K8 + 0x600C0008, // 0012 GETGBL R3 G8 + 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x7C0C0200, // 0014 CALL R3 1 + 0x000E1203, // 0015 ADD R3 K9 R3 + 0x5810000A, // 0016 LDCONST R4 K10 + 0x7C080400, // 0017 CALL R2 2 + 0x8C08010B, // 0018 GETMET R2 R0 K11 + 0x88100104, // 0019 GETMBR R4 R0 K4 + 0x7C080400, // 001A CALL R2 2 + 0x88080103, // 001B GETMBR R2 R0 K3 + 0x740A0008, // 001C JMPT R2 #0026 + 0x8808010C, // 001D GETMBR R2 R0 K12 + 0x8C08050D, // 001E GETMET R2 R2 K13 + 0x7C080200, // 001F CALL R2 1 + 0x24080502, // 0020 GT R2 R2 K2 + 0x780A0003, // 0021 JMPF R2 #0026 + 0x50080200, // 0022 LDBOOL R2 1 0 + 0x90020602, // 0023 SETMBR R0 K3 R2 + 0x8C08010E, // 0024 GETMET R2 R0 K14 + 0x7C080200, // 0025 CALL R2 1 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_sensors_scheduler +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_sensor_time), + /* K1 */ be_nested_str_weak(probe_sensor_timestamp), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(time_reached), + /* K5 */ be_nested_str_weak(_trigger_read_sensors), + /* K6 */ be_nested_str_weak(millis), + }), + be_str_weak(read_sensors_scheduler), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060000, // 0003 JMPF R1 #0005 + 0x80000200, // 0004 RET 0 + 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x1C040302, // 0006 EQ R1 R1 K2 + 0x74060004, // 0007 JMPT R1 #000D + 0xB8060600, // 0008 GETNGBL R1 K3 + 0x8C040304, // 0009 GETMET R1 R1 K4 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x7C040400, // 000B CALL R1 2 + 0x78060006, // 000C JMPF R1 #0014 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0xB8060600, // 000F GETNGBL R1 K3 + 0x8C040306, // 0010 GETMET R1 R1 K6 + 0x880C0100, // 0011 GETMBR R3 R0 K0 + 0x7C040400, // 0012 CALL R1 2 + 0x90020201, // 0013 SETMBR R0 K1 R1 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _mdns_announce_hostname +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(start), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(eth), + /* K5 */ be_nested_str_weak(hostname_eth), + /* K6 */ be_nested_str_weak(replace), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(mac), + /* K9 */ be_nested_str_weak(_X3A), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(ipv4only), + /* K12 */ be_nested_str_weak(contains), + /* K13 */ be_nested_str_weak(ip6local), + /* K14 */ be_nested_str_weak(add_hostname), + /* K15 */ be_nested_str_weak(ip), + /* K16 */ be_nested_str_weak(ip6), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str_weak(wifi), + /* K21 */ be_nested_str_weak(hostname_wifi), + /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), + /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K24 */ be_nested_str_weak(_X7C), + /* K25 */ be_const_int(2), + /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), + }), + be_str_weak(_mdns_announce_hostname), + &be_const_str_solidified, + ( &(const binstruction[144]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100502, // 0002 GETMET R4 R2 K2 + 0x7C100200, // 0003 CALL R4 1 + 0xA8020077, // 0004 EXBLK 0 #007D + 0x78060033, // 0005 JMPF R1 #003A + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x7C100200, // 0008 CALL R4 1 + 0x8C140706, // 0009 GETMET R5 R3 K6 + 0x8C1C0907, // 000A GETMET R7 R4 K7 + 0x58240008, // 000B LDCONST R9 K8 + 0x7C1C0400, // 000C CALL R7 2 + 0x58200009, // 000D LDCONST R8 K9 + 0x5824000A, // 000E LDCONST R9 K10 + 0x7C140800, // 000F CALL R5 4 + 0x90020A05, // 0010 SETMBR R0 K5 R5 + 0x8814010B, // 0011 GETMBR R5 R0 K11 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C14090C, // 0013 GETMET R5 R4 K12 + 0x581C000D, // 0014 LDCONST R7 K13 + 0x7C140400, // 0015 CALL R5 2 + 0x7416000F, // 0016 JMPT R5 #0027 + 0x8C14050E, // 0017 GETMET R5 R2 K14 + 0x881C0105, // 0018 GETMBR R7 R0 K5 + 0x8C200907, // 0019 GETMET R8 R4 K7 + 0x5828000D, // 001A LDCONST R10 K13 + 0x582C000A, // 001B LDCONST R11 K10 + 0x7C200600, // 001C CALL R8 3 + 0x8C240907, // 001D GETMET R9 R4 K7 + 0x582C000F, // 001E LDCONST R11 K15 + 0x5830000A, // 001F LDCONST R12 K10 + 0x7C240600, // 0020 CALL R9 3 + 0x8C280907, // 0021 GETMET R10 R4 K7 + 0x58300010, // 0022 LDCONST R12 K16 + 0x5834000A, // 0023 LDCONST R13 K10 + 0x7C280600, // 0024 CALL R10 3 + 0x7C140A00, // 0025 CALL R5 5 + 0x70020011, // 0026 JMP #0039 + 0xB8162200, // 0027 GETNGBL R5 K17 + 0x60180018, // 0028 GETGBL R6 G24 + 0x581C0012, // 0029 LDCONST R7 K18 + 0x88200105, // 002A GETMBR R8 R0 K5 + 0x8C240907, // 002B GETMET R9 R4 K7 + 0x582C000F, // 002C LDCONST R11 K15 + 0x5830000A, // 002D LDCONST R12 K10 + 0x7C240600, // 002E CALL R9 3 + 0x7C180600, // 002F CALL R6 3 + 0x581C0013, // 0030 LDCONST R7 K19 + 0x7C140400, // 0031 CALL R5 2 + 0x8C14050E, // 0032 GETMET R5 R2 K14 + 0x881C0105, // 0033 GETMBR R7 R0 K5 + 0x8C200907, // 0034 GETMET R8 R4 K7 + 0x5828000F, // 0035 LDCONST R10 K15 + 0x582C000A, // 0036 LDCONST R11 K10 + 0x7C200600, // 0037 CALL R8 3 + 0x7C140600, // 0038 CALL R5 3 + 0x70020032, // 0039 JMP #006D + 0xB8120600, // 003A GETNGBL R4 K3 + 0x8C100914, // 003B GETMET R4 R4 K20 + 0x7C100200, // 003C CALL R4 1 + 0x8C140706, // 003D GETMET R5 R3 K6 + 0x8C1C0907, // 003E GETMET R7 R4 K7 + 0x58240008, // 003F LDCONST R9 K8 + 0x7C1C0400, // 0040 CALL R7 2 + 0x58200009, // 0041 LDCONST R8 K9 + 0x5824000A, // 0042 LDCONST R9 K10 + 0x7C140800, // 0043 CALL R5 4 + 0x90022A05, // 0044 SETMBR R0 K21 R5 + 0x8814010B, // 0045 GETMBR R5 R0 K11 + 0x78160003, // 0046 JMPF R5 #004B + 0x8C14090C, // 0047 GETMET R5 R4 K12 + 0x581C000D, // 0048 LDCONST R7 K13 + 0x7C140400, // 0049 CALL R5 2 + 0x7416000F, // 004A JMPT R5 #005B + 0x8C14050E, // 004B GETMET R5 R2 K14 + 0x881C0115, // 004C GETMBR R7 R0 K21 + 0x8C200907, // 004D GETMET R8 R4 K7 + 0x5828000D, // 004E LDCONST R10 K13 + 0x582C000A, // 004F LDCONST R11 K10 + 0x7C200600, // 0050 CALL R8 3 + 0x8C240907, // 0051 GETMET R9 R4 K7 + 0x582C000F, // 0052 LDCONST R11 K15 + 0x5830000A, // 0053 LDCONST R12 K10 + 0x7C240600, // 0054 CALL R9 3 + 0x8C280907, // 0055 GETMET R10 R4 K7 + 0x58300010, // 0056 LDCONST R12 K16 + 0x5834000A, // 0057 LDCONST R13 K10 + 0x7C280600, // 0058 CALL R10 3 + 0x7C140A00, // 0059 CALL R5 5 + 0x70020011, // 005A JMP #006D + 0xB8162200, // 005B GETNGBL R5 K17 + 0x60180018, // 005C GETGBL R6 G24 + 0x581C0012, // 005D LDCONST R7 K18 + 0x88200115, // 005E GETMBR R8 R0 K21 + 0x8C240907, // 005F GETMET R9 R4 K7 + 0x582C000F, // 0060 LDCONST R11 K15 + 0x5830000A, // 0061 LDCONST R12 K10 + 0x7C240600, // 0062 CALL R9 3 + 0x7C180600, // 0063 CALL R6 3 + 0x581C0013, // 0064 LDCONST R7 K19 + 0x7C140400, // 0065 CALL R5 2 + 0x8C14050E, // 0066 GETMET R5 R2 K14 + 0x881C0115, // 0067 GETMBR R7 R0 K21 + 0x8C200907, // 0068 GETMET R8 R4 K7 + 0x5828000F, // 0069 LDCONST R10 K15 + 0x582C000A, // 006A LDCONST R11 K10 + 0x7C200600, // 006B CALL R8 3 + 0x7C140600, // 006C CALL R5 3 + 0xB8122200, // 006D GETNGBL R4 K17 + 0x60140018, // 006E GETGBL R5 G24 + 0x58180016, // 006F LDCONST R6 K22 + 0x78060001, // 0070 JMPF R1 #0073 + 0x581C0004, // 0071 LDCONST R7 K4 + 0x70020000, // 0072 JMP #0074 + 0x581C0014, // 0073 LDCONST R7 K20 + 0x78060001, // 0074 JMPF R1 #0077 + 0x88200105, // 0075 GETMBR R8 R0 K5 + 0x70020000, // 0076 JMP #0078 + 0x88200115, // 0077 GETMBR R8 R0 K21 + 0x7C140600, // 0078 CALL R5 3 + 0x58180013, // 0079 LDCONST R6 K19 + 0x7C100400, // 007A CALL R4 2 + 0xA8040001, // 007B EXBLK 1 1 + 0x7002000F, // 007C JMP #008D + 0xAC100002, // 007D CATCH R4 0 2 + 0x7002000C, // 007E JMP #008C + 0xB81A2200, // 007F GETNGBL R6 K17 + 0x601C0008, // 0080 GETGBL R7 G8 + 0x5C200800, // 0081 MOVE R8 R4 + 0x7C1C0200, // 0082 CALL R7 1 + 0x001E2E07, // 0083 ADD R7 K23 R7 + 0x001C0F18, // 0084 ADD R7 R7 K24 + 0x60200008, // 0085 GETGBL R8 G8 + 0x5C240A00, // 0086 MOVE R9 R5 + 0x7C200200, // 0087 CALL R8 1 + 0x001C0E08, // 0088 ADD R7 R7 R8 + 0x58200019, // 0089 LDCONST R8 K25 + 0x7C180400, // 008A CALL R6 2 + 0x70020000, // 008B JMP #008D + 0xB0080000, // 008C RAISE 2 R0 R0 + 0x8C10011A, // 008D GETMET R4 R0 K26 + 0x7C100200, // 008E CALL R4 1 + 0x80000000, // 008F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_send +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_msg_send, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(send_UDP), + }), + be_str_weak(msg_send), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_http_remote +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_register_http_remote, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(get_timeout), + /* K3 */ be_nested_str_weak(set_timeout), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(HTTP_remote), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(set_info), + }), + be_str_weak(register_http_remote), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x600C0013, // 0004 GETGBL R3 G19 + 0x7C0C0000, // 0005 CALL R3 0 + 0x90020003, // 0006 SETMBR R0 K0 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x8C100901, // 0009 GETMET R4 R4 K1 + 0x5C180200, // 000A MOVE R6 R1 + 0x7C100400, // 000B CALL R4 2 + 0x78120009, // 000C JMPF R4 #0017 + 0x88100100, // 000D GETMBR R4 R0 K0 + 0x940C0801, // 000E GETIDX R3 R4 R1 + 0x8C140702, // 000F GETMET R5 R3 K2 + 0x7C140200, // 0010 CALL R5 1 + 0x14140405, // 0011 LT R5 R2 R5 + 0x78160002, // 0012 JMPF R5 #0016 + 0x8C140703, // 0013 GETMET R5 R3 K3 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C140400, // 0015 CALL R5 2 + 0x70020011, // 0016 JMP #0029 + 0xB8120800, // 0017 GETNGBL R4 K4 + 0x8C100905, // 0018 GETMET R4 R4 K5 + 0x5C180000, // 0019 MOVE R6 R0 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x5C200400, // 001B MOVE R8 R2 + 0x7C100800, // 001C CALL R4 4 + 0x5C0C0800, // 001D MOVE R3 R4 + 0x88100106, // 001E GETMBR R4 R0 K6 + 0x8C100901, // 001F GETMET R4 R4 K1 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x78120003, // 0022 JMPF R4 #0027 + 0x8C100707, // 0023 GETMET R4 R3 K7 + 0x88180106, // 0024 GETMBR R6 R0 K6 + 0x94180C01, // 0025 GETIDX R6 R6 R1 + 0x7C100400, // 0026 CALL R4 2 + 0x88100100, // 0027 GETMBR R4 R0 K0 + 0x98100203, // 0028 SETIDX R4 R1 R3 + 0x80040600, // 0029 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrInfo_one +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K1 */ be_nested_str_weak(state_json), + /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(publish_result), + /* K5 */ be_nested_str_weak(), + }), + be_str_weak(MtrInfo_one), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0403, // 0004 EQ R3 R2 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80000600, // 0006 RET 0 + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x780E0008, // 0009 JMPF R3 #0013 + 0x60100018, // 000A GETGBL R4 G24 + 0x58140002, // 000B LDCONST R5 K2 + 0x5C180600, // 000C MOVE R6 R3 + 0x7C100400, // 000D CALL R4 2 + 0xB8160600, // 000E GETNGBL R5 K3 + 0x8C140B04, // 000F GETMET R5 R5 K4 + 0x5C1C0800, // 0010 MOVE R7 R4 + 0x58200005, // 0011 LDCONST R8 K5 + 0x7C140600, // 0012 CALL R5 3 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _compute_pbkdf +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__compute_pbkdf, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), + /* K3 */ be_nested_str_weak(derive), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(root_w0), + /* K6 */ be_nested_str_weak(EC_P256), + /* K7 */ be_nested_str_weak(mod), + /* K8 */ be_nested_str_weak(root_L), + /* K9 */ be_nested_str_weak(public_key), + }), + be_str_weak(_compute_pbkdf), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x60140015, // 0001 GETGBL R5 G21 + 0x7C140000, // 0002 CALL R5 0 + 0x8C140B01, // 0003 GETMET R5 R5 K1 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x54220003, // 0005 LDINT R8 4 + 0x7C140600, // 0006 CALL R5 3 + 0x8C180902, // 0007 GETMET R6 R4 K2 + 0x7C180200, // 0008 CALL R6 1 + 0x8C180D03, // 0009 GETMET R6 R6 K3 + 0x5C200A00, // 000A MOVE R8 R5 + 0x5C240600, // 000B MOVE R9 R3 + 0x5C280400, // 000C MOVE R10 R2 + 0x542E004F, // 000D LDINT R11 80 + 0x7C180A00, // 000E CALL R6 5 + 0x541E0026, // 000F LDINT R7 39 + 0x401E0807, // 0010 CONNECT R7 K4 R7 + 0x941C0C07, // 0011 GETIDX R7 R6 R7 + 0x54220027, // 0012 LDINT R8 40 + 0x5426004E, // 0013 LDINT R9 79 + 0x40201009, // 0014 CONNECT R8 R8 R9 + 0x94200C08, // 0015 GETIDX R8 R6 R8 + 0x8C240906, // 0016 GETMET R9 R4 K6 + 0x7C240200, // 0017 CALL R9 1 + 0x8C241307, // 0018 GETMET R9 R9 K7 + 0x5C2C0E00, // 0019 MOVE R11 R7 + 0x7C240400, // 001A CALL R9 2 + 0x90020A09, // 001B SETMBR R0 K5 R9 + 0x8C240906, // 001C GETMET R9 R4 K6 + 0x7C240200, // 001D CALL R9 1 + 0x8C241307, // 001E GETMET R9 R9 K7 + 0x5C2C1000, // 001F MOVE R11 R8 + 0x7C240400, // 0020 CALL R9 2 + 0x8C280906, // 0021 GETMET R10 R4 K6 + 0x7C280200, // 0022 CALL R10 1 + 0x8C281509, // 0023 GETMET R10 R10 K9 + 0x5C301200, // 0024 MOVE R12 R9 + 0x7C280400, // 0025 CALL R10 2 + 0x9002100A, // 0026 SETMBR R0 K8 R10 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: signal_endpoints_changed +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + }), + be_str_weak(signal_endpoints_changed), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x580C0001, // 0001 LDCONST R3 K1 + 0x5412001C, // 0002 LDINT R4 29 + 0x58140002, // 0003 LDCONST R5 K2 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C040A00, // 0005 CALL R1 5 + 0x8C040100, // 0006 GETMET R1 R0 K0 + 0xB80E0600, // 0007 GETNGBL R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x5412001C, // 0009 LDINT R4 29 + 0x58140002, // 000A LDCONST R5 K2 + 0x50180000, // 000B LDBOOL R6 0 0 + 0x7C040A00, // 000C CALL R1 5 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device_map +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ + be_nested_proto( + 19, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(START_ENDPOINT), + /* K3 */ be_nested_str_weak(light), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(channels), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_const_int(0), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_nested_str_weak(light1), + /* K12 */ be_const_int(2), + /* K13 */ be_nested_str_weak(light2), + /* K14 */ be_nested_str_weak(light3), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(cmd), + /* K17 */ be_nested_str_weak(Status_X2013), + /* K18 */ be_nested_str_weak(log), + /* K19 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(contains), + /* K22 */ be_nested_str_weak(StatusSHT), + /* K23 */ be_nested_str_weak(SHT), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), + /* K25 */ be_nested_str_weak(Relay1), + /* K26 */ be_nested_str_weak(Relay2), + /* K27 */ be_nested_str_weak(push), + /* K28 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), + /* K29 */ be_nested_str_weak(TiltConfig), + /* K30 */ be_nested_str_weak(shutter_X2Btilt), + /* K31 */ be_nested_str_weak(shutter), + /* K32 */ be_nested_str_weak(get_power), + /* K33 */ be_nested_str_weak(relay), + /* K34 */ be_nested_str_weak(load), + /* K35 */ be_nested_str_weak(read_sensors), + /* K36 */ be_nested_str_weak(autoconf_sensors_list), + /* K37 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(autoconf_device_map), + &be_const_str_solidified, + ( &(const binstruction[196]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x60080013, // 0001 GETGBL R2 G19 + 0x7C080000, // 0002 CALL R2 0 + 0xB80E0200, // 0003 GETNGBL R3 K1 + 0x880C0702, // 0004 GETMBR R3 R3 K2 + 0x50100000, // 0005 LDBOOL R4 0 0 + 0xA4160600, // 0006 IMPORT R5 K3 + 0x8C180B04, // 0007 GETMET R6 R5 K4 + 0x7C180200, // 0008 CALL R6 1 + 0x4C1C0000, // 0009 LDNIL R7 + 0x201C0C07, // 000A NE R7 R6 R7 + 0x781E0024, // 000B JMPF R7 #0031 + 0x601C000C, // 000C GETGBL R7 G12 + 0x8C200D05, // 000D GETMET R8 R6 K5 + 0x58280006, // 000E LDCONST R10 K6 + 0x582C0007, // 000F LDCONST R11 K7 + 0x7C200600, // 0010 CALL R8 3 + 0x7C1C0200, // 0011 CALL R7 1 + 0x24200F08, // 0012 GT R8 R7 K8 + 0x7822001C, // 0013 JMPF R8 #0031 + 0x1C200F09, // 0014 EQ R8 R7 K9 + 0x78220007, // 0015 JMPF R8 #001E + 0x60200008, // 0016 GETGBL R8 G8 + 0x5C240600, // 0017 MOVE R9 R3 + 0x7C200200, // 0018 CALL R8 1 + 0x60240013, // 0019 GETGBL R9 G19 + 0x7C240000, // 001A CALL R9 0 + 0x9826150B, // 001B SETIDX R9 K10 K11 + 0x98081009, // 001C SETIDX R2 R8 R9 + 0x70020010, // 001D JMP #002F + 0x1C200F0C, // 001E EQ R8 R7 K12 + 0x78220007, // 001F JMPF R8 #0028 + 0x60200008, // 0020 GETGBL R8 G8 + 0x5C240600, // 0021 MOVE R9 R3 + 0x7C200200, // 0022 CALL R8 1 + 0x60240013, // 0023 GETGBL R9 G19 + 0x7C240000, // 0024 CALL R9 0 + 0x9826150D, // 0025 SETIDX R9 K10 K13 + 0x98081009, // 0026 SETIDX R2 R8 R9 + 0x70020006, // 0027 JMP #002F + 0x60200008, // 0028 GETGBL R8 G8 + 0x5C240600, // 0029 MOVE R9 R3 + 0x7C200200, // 002A CALL R8 1 + 0x60240013, // 002B GETGBL R9 G19 + 0x7C240000, // 002C CALL R9 0 + 0x9826150E, // 002D SETIDX R9 K10 K14 + 0x98081009, // 002E SETIDX R2 R8 R9 + 0x50100200, // 002F LDBOOL R4 1 0 + 0x000C0709, // 0030 ADD R3 R3 K9 + 0xB81E1E00, // 0031 GETNGBL R7 K15 + 0x8C1C0F10, // 0032 GETMET R7 R7 K16 + 0x58240011, // 0033 LDCONST R9 K17 + 0x50280200, // 0034 LDBOOL R10 1 0 + 0x7C1C0600, // 0035 CALL R7 3 + 0x60200012, // 0036 GETGBL R8 G18 + 0x7C200000, // 0037 CALL R8 0 + 0xB8262400, // 0038 GETNGBL R9 K18 + 0x60280008, // 0039 GETGBL R10 G8 + 0x5C2C0E00, // 003A MOVE R11 R7 + 0x7C280200, // 003B CALL R10 1 + 0x002A260A, // 003C ADD R10 K19 R10 + 0x582C0014, // 003D LDCONST R11 K20 + 0x7C240400, // 003E CALL R9 2 + 0x4C240000, // 003F LDNIL R9 + 0x20240E09, // 0040 NE R9 R7 R9 + 0x7826004D, // 0041 JMPF R9 #0090 + 0x8C240F15, // 0042 GETMET R9 R7 K21 + 0x582C0016, // 0043 LDCONST R11 K22 + 0x7C240400, // 0044 CALL R9 2 + 0x78260049, // 0045 JMPF R9 #0090 + 0x941C0F16, // 0046 GETIDX R7 R7 K22 + 0x58240008, // 0047 LDCONST R9 K8 + 0x50280200, // 0048 LDBOOL R10 1 0 + 0x782A0045, // 0049 JMPF R10 #0090 + 0x60280008, // 004A GETGBL R10 G8 + 0x5C2C1200, // 004B MOVE R11 R9 + 0x7C280200, // 004C CALL R10 1 + 0x002A2E0A, // 004D ADD R10 K23 R10 + 0x8C2C0F15, // 004E GETMET R11 R7 K21 + 0x5C341400, // 004F MOVE R13 R10 + 0x7C2C0400, // 0050 CALL R11 2 + 0x742E0000, // 0051 JMPT R11 #0053 + 0x7002003C, // 0052 JMP #0090 + 0x942C0E0A, // 0053 GETIDX R11 R7 R10 + 0xB8322400, // 0054 GETNGBL R12 K18 + 0x60340018, // 0055 GETGBL R13 G24 + 0x58380018, // 0056 LDCONST R14 K24 + 0x5C3C1400, // 0057 MOVE R15 R10 + 0x60400008, // 0058 GETGBL R16 G8 + 0x5C441600, // 0059 MOVE R17 R11 + 0x7C400200, // 005A CALL R16 1 + 0x7C340600, // 005B CALL R13 3 + 0x58380014, // 005C LDCONST R14 K20 + 0x7C300400, // 005D CALL R12 2 + 0x8C301705, // 005E GETMET R12 R11 K5 + 0x58380019, // 005F LDCONST R14 K25 + 0x543DFFFE, // 0060 LDINT R15 -1 + 0x7C300600, // 0061 CALL R12 3 + 0x8C341705, // 0062 GETMET R13 R11 K5 + 0x583C001A, // 0063 LDCONST R15 K26 + 0x5441FFFE, // 0064 LDINT R16 -1 + 0x7C340600, // 0065 CALL R13 3 + 0x24381908, // 0066 GT R14 R12 K8 + 0x783A0002, // 0067 JMPF R14 #006B + 0x8C38111B, // 0068 GETMET R14 R8 K27 + 0x04401909, // 0069 SUB R16 R12 K9 + 0x7C380400, // 006A CALL R14 2 + 0x24381B08, // 006B GT R14 R13 K8 + 0x783A0002, // 006C JMPF R14 #0070 + 0x8C38111B, // 006D GETMET R14 R8 K27 + 0x04401B09, // 006E SUB R16 R13 K9 + 0x7C380400, // 006F CALL R14 2 + 0xB83A2400, // 0070 GETNGBL R14 K18 + 0x603C0018, // 0071 GETGBL R15 G24 + 0x5840001C, // 0072 LDCONST R16 K28 + 0x5C441800, // 0073 MOVE R17 R12 + 0x5C481A00, // 0074 MOVE R18 R13 + 0x7C3C0600, // 0075 CALL R15 3 + 0x58400014, // 0076 LDCONST R16 K20 + 0x7C380400, // 0077 CALL R14 2 + 0x8C381705, // 0078 GETMET R14 R11 K5 + 0x5840001D, // 0079 LDCONST R16 K29 + 0x7C380400, // 007A CALL R14 2 + 0x783A0002, // 007B JMPF R14 #007F + 0x943C1D0C, // 007C GETIDX R15 R14 K12 + 0x243C1F08, // 007D GT R15 R15 K8 + 0x743E0000, // 007E JMPT R15 #0080 + 0x503C0001, // 007F LDBOOL R15 0 1 + 0x503C0200, // 0080 LDBOOL R15 1 0 + 0x60400008, // 0081 GETGBL R16 G8 + 0x5C440600, // 0082 MOVE R17 R3 + 0x7C400200, // 0083 CALL R16 1 + 0x60440013, // 0084 GETGBL R17 G19 + 0x7C440000, // 0085 CALL R17 0 + 0x783E0001, // 0086 JMPF R15 #0089 + 0x5848001E, // 0087 LDCONST R18 K30 + 0x70020000, // 0088 JMP #008A + 0x5848001F, // 0089 LDCONST R18 K31 + 0x98461412, // 008A SETIDX R17 K10 R18 + 0x98463E09, // 008B SETIDX R17 K31 R9 + 0x98082011, // 008C SETIDX R2 R16 R17 + 0x000C0709, // 008D ADD R3 R3 K9 + 0x00241309, // 008E ADD R9 R9 K9 + 0x7001FFB7, // 008F JMP #0048 + 0x6024000C, // 0090 GETGBL R9 G12 + 0xB82A1E00, // 0091 GETNGBL R10 K15 + 0x8C281520, // 0092 GETMET R10 R10 K32 + 0x7C280200, // 0093 CALL R10 1 + 0x7C240200, // 0094 CALL R9 1 + 0x58280008, // 0095 LDCONST R10 K8 + 0x78120000, // 0096 JMPF R4 #0098 + 0x04241309, // 0097 SUB R9 R9 K9 + 0x142C1409, // 0098 LT R11 R10 R9 + 0x782E0011, // 0099 JMPF R11 #00AC + 0x8C2C1105, // 009A GETMET R11 R8 K5 + 0x5C341400, // 009B MOVE R13 R10 + 0x7C2C0400, // 009C CALL R11 2 + 0x4C300000, // 009D LDNIL R12 + 0x1C2C160C, // 009E EQ R11 R11 R12 + 0x782E0009, // 009F JMPF R11 #00AA + 0x602C0008, // 00A0 GETGBL R11 G8 + 0x5C300600, // 00A1 MOVE R12 R3 + 0x7C2C0200, // 00A2 CALL R11 1 + 0x60300013, // 00A3 GETGBL R12 G19 + 0x7C300000, // 00A4 CALL R12 0 + 0x98321521, // 00A5 SETIDX R12 K10 K33 + 0x00341509, // 00A6 ADD R13 R10 K9 + 0x9832420D, // 00A7 SETIDX R12 K33 R13 + 0x9808160C, // 00A8 SETIDX R2 R11 R12 + 0x000C0709, // 00A9 ADD R3 R3 K9 + 0x00281509, // 00AA ADD R10 R10 K9 + 0x7001FFEB, // 00AB JMP #0098 + 0x8C2C0322, // 00AC GETMET R11 R1 K34 + 0xB8361E00, // 00AD GETNGBL R13 K15 + 0x8C341B23, // 00AE GETMET R13 R13 K35 + 0x7C340200, // 00AF CALL R13 1 + 0x7C2C0400, // 00B0 CALL R11 2 + 0x8C300124, // 00B1 GETMET R12 R0 K36 + 0x5C381600, // 00B2 MOVE R14 R11 + 0x7C300400, // 00B3 CALL R12 2 + 0x60340010, // 00B4 GETGBL R13 G16 + 0x5C381800, // 00B5 MOVE R14 R12 + 0x7C340200, // 00B6 CALL R13 1 + 0xA8020007, // 00B7 EXBLK 0 #00C0 + 0x5C381A00, // 00B8 MOVE R14 R13 + 0x7C380000, // 00B9 CALL R14 0 + 0x603C0008, // 00BA GETGBL R15 G8 + 0x5C400600, // 00BB MOVE R16 R3 + 0x7C3C0200, // 00BC CALL R15 1 + 0x98081E0E, // 00BD SETIDX R2 R15 R14 + 0x000C0709, // 00BE ADD R3 R3 K9 + 0x7001FFF7, // 00BF JMP #00B8 + 0x58340025, // 00C0 LDCONST R13 K37 + 0xAC340200, // 00C1 CATCH R13 1 0 + 0xB0080000, // 00C2 RAISE 2 R0 R0 + 0x80040400, // 00C3 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_sensors_list +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(k2l), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(Temperature), + /* K3 */ be_nested_str_weak(_X23Temperature), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(temperature), + /* K7 */ be_nested_str_weak(filter), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(Pressure), + /* K10 */ be_nested_str_weak(_X23Pressure), + /* K11 */ be_nested_str_weak(pressure), + /* K12 */ be_nested_str_weak(Illuminance), + /* K13 */ be_nested_str_weak(_X23Illuminance), + /* K14 */ be_nested_str_weak(illuminance), + /* K15 */ be_nested_str_weak(Humidity), + /* K16 */ be_nested_str_weak(_X23Humidity), + /* K17 */ be_nested_str_weak(humidity), + }), + be_str_weak(autoconf_sensors_list), + &be_const_str_solidified, + ( &(const binstruction[119]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100100, // 0003 GETMET R4 R0 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020013, // 0007 EXBLK 0 #001C + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x94140204, // 000A GETIDX R5 R1 R4 + 0x6018000F, // 000B GETGBL R6 G15 + 0x5C1C0A00, // 000C MOVE R7 R5 + 0x60200013, // 000D GETGBL R8 G19 + 0x7C180400, // 000E CALL R6 2 + 0x781A000A, // 000F JMPF R6 #001B + 0x8C180B01, // 0010 GETMET R6 R5 K1 + 0x58200002, // 0011 LDCONST R8 K2 + 0x7C180400, // 0012 CALL R6 2 + 0x781A0006, // 0013 JMPF R6 #001B + 0x00180903, // 0014 ADD R6 R4 K3 + 0x8C1C0504, // 0015 GETMET R7 R2 K4 + 0x60240013, // 0016 GETGBL R9 G19 + 0x7C240000, // 0017 CALL R9 0 + 0x98260B06, // 0018 SETIDX R9 K5 K6 + 0x98260E06, // 0019 SETIDX R9 K7 R6 + 0x7C1C0400, // 001A CALL R7 2 + 0x7001FFEB, // 001B JMP #0008 + 0x580C0008, // 001C LDCONST R3 K8 + 0xAC0C0200, // 001D CATCH R3 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x600C0010, // 001F GETGBL R3 G16 + 0x8C100100, // 0020 GETMET R4 R0 K0 + 0x5C180200, // 0021 MOVE R6 R1 + 0x7C100400, // 0022 CALL R4 2 + 0x7C0C0200, // 0023 CALL R3 1 + 0xA8020013, // 0024 EXBLK 0 #0039 + 0x5C100600, // 0025 MOVE R4 R3 + 0x7C100000, // 0026 CALL R4 0 + 0x94140204, // 0027 GETIDX R5 R1 R4 + 0x6018000F, // 0028 GETGBL R6 G15 + 0x5C1C0A00, // 0029 MOVE R7 R5 + 0x60200013, // 002A GETGBL R8 G19 + 0x7C180400, // 002B CALL R6 2 + 0x781A000A, // 002C JMPF R6 #0038 + 0x8C180B01, // 002D GETMET R6 R5 K1 + 0x58200009, // 002E LDCONST R8 K9 + 0x7C180400, // 002F CALL R6 2 + 0x781A0006, // 0030 JMPF R6 #0038 + 0x0018090A, // 0031 ADD R6 R4 K10 + 0x8C1C0504, // 0032 GETMET R7 R2 K4 + 0x60240013, // 0033 GETGBL R9 G19 + 0x7C240000, // 0034 CALL R9 0 + 0x98260B0B, // 0035 SETIDX R9 K5 K11 + 0x98260E06, // 0036 SETIDX R9 K7 R6 + 0x7C1C0400, // 0037 CALL R7 2 + 0x7001FFEB, // 0038 JMP #0025 + 0x580C0008, // 0039 LDCONST R3 K8 + 0xAC0C0200, // 003A CATCH R3 1 0 + 0xB0080000, // 003B RAISE 2 R0 R0 + 0x600C0010, // 003C GETGBL R3 G16 + 0x8C100100, // 003D GETMET R4 R0 K0 + 0x5C180200, // 003E MOVE R6 R1 + 0x7C100400, // 003F CALL R4 2 + 0x7C0C0200, // 0040 CALL R3 1 + 0xA8020013, // 0041 EXBLK 0 #0056 + 0x5C100600, // 0042 MOVE R4 R3 + 0x7C100000, // 0043 CALL R4 0 + 0x94140204, // 0044 GETIDX R5 R1 R4 + 0x6018000F, // 0045 GETGBL R6 G15 + 0x5C1C0A00, // 0046 MOVE R7 R5 + 0x60200013, // 0047 GETGBL R8 G19 + 0x7C180400, // 0048 CALL R6 2 + 0x781A000A, // 0049 JMPF R6 #0055 + 0x8C180B01, // 004A GETMET R6 R5 K1 + 0x5820000C, // 004B LDCONST R8 K12 + 0x7C180400, // 004C CALL R6 2 + 0x781A0006, // 004D JMPF R6 #0055 + 0x0018090D, // 004E ADD R6 R4 K13 + 0x8C1C0504, // 004F GETMET R7 R2 K4 + 0x60240013, // 0050 GETGBL R9 G19 + 0x7C240000, // 0051 CALL R9 0 + 0x98260B0E, // 0052 SETIDX R9 K5 K14 + 0x98260E06, // 0053 SETIDX R9 K7 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x7001FFEB, // 0055 JMP #0042 + 0x580C0008, // 0056 LDCONST R3 K8 + 0xAC0C0200, // 0057 CATCH R3 1 0 + 0xB0080000, // 0058 RAISE 2 R0 R0 + 0x600C0010, // 0059 GETGBL R3 G16 + 0x8C100100, // 005A GETMET R4 R0 K0 + 0x5C180200, // 005B MOVE R6 R1 + 0x7C100400, // 005C CALL R4 2 + 0x7C0C0200, // 005D CALL R3 1 + 0xA8020013, // 005E EXBLK 0 #0073 + 0x5C100600, // 005F MOVE R4 R3 + 0x7C100000, // 0060 CALL R4 0 + 0x94140204, // 0061 GETIDX R5 R1 R4 + 0x6018000F, // 0062 GETGBL R6 G15 + 0x5C1C0A00, // 0063 MOVE R7 R5 + 0x60200013, // 0064 GETGBL R8 G19 + 0x7C180400, // 0065 CALL R6 2 + 0x781A000A, // 0066 JMPF R6 #0072 + 0x8C180B01, // 0067 GETMET R6 R5 K1 + 0x5820000F, // 0068 LDCONST R8 K15 + 0x7C180400, // 0069 CALL R6 2 + 0x781A0006, // 006A JMPF R6 #0072 + 0x00180910, // 006B ADD R6 R4 K16 + 0x8C1C0504, // 006C GETMET R7 R2 K4 + 0x60240013, // 006D GETGBL R9 G19 + 0x7C240000, // 006E CALL R9 0 + 0x98260B11, // 006F SETIDX R9 K5 K17 + 0x98260E06, // 0070 SETIDX R9 K7 R6 + 0x7C1C0400, // 0071 CALL R7 2 + 0x7001FFEB, // 0072 JMP #005F + 0x580C0008, // 0073 LDCONST R3 K8 + 0xAC0C0200, // 0074 CATCH R3 1 0 + 0xB0080000, // 0075 RAISE 2 R0 R0 + 0x80040400, // 0076 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + }), + be_str_weak(is_commissioning_open), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -6081,138 +6093,17 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ ** Solidified class: Matter_Device ********************************************************************/ be_local_class(Matter_Device, - 38, + 39, NULL, - be_nested_map(117, + be_nested_map(118, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(udp_server, -1), be_const_var(5) }, - { be_const_key_weak(next_ep, 108), be_const_var(31) }, - { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, - { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Device_invoke_request_closure) }, - { be_const_key_weak(start_commissioning_complete, 4), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, - { be_const_key_weak(bridge_remove_endpoint, 23), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, - { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, - { be_const_key_weak(probe_sensor_time, 43), be_const_var(36) }, { be_const_key_weak(vendorid, -1), be_const_var(22) }, - { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, - { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(19) }, - { be_const_key_weak(MtrInfo, 17), be_const_closure(class_Matter_Device_MtrInfo_closure) }, - { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, - { be_const_key_weak(productid, 44), be_const_var(23) }, - { be_const_key_weak(bridge_add_endpoint, 20), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, - { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) }, - { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, - { be_const_key_weak(disable_bridge_mode, -1), be_const_var(30) }, - { be_const_key_weak(get_plugin_class_displayname, 89), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, - { be_const_key_weak(start_mdns_announce_hostnames, 69), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, - { be_const_key_weak(commissioning_instance_wifi, 114), be_const_var(18) }, - { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, - { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, 8), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(sessions, 98), be_const_var(8) }, - { be_const_key_weak(_mdns_announce_hostname, 55), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, - { be_const_key_weak(commissioning_discriminator, -1), be_const_var(13) }, - { be_const_key_weak(register_commands, 100), be_const_closure(class_Matter_Device_register_commands_closure) }, - { be_const_key_weak(start, 109), be_const_closure(class_Matter_Device_start_closure) }, - { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(class_Matter_Device__compute_pbkdf_closure) }, - { be_const_key_weak(find_plugin_by_friendly_name, 95), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, - { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, - { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, - { be_const_key_weak(MtrJoin, 58), be_const_closure(class_Matter_Device_MtrJoin_closure) }, - { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) }, - { be_const_key_weak(hostname_wifi, 68), be_const_var(20) }, - { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, - { be_const_key_weak(root_passcode, 63), be_const_var(28) }, - { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) }, - { be_const_key_weak(generate_random_passcode, 64), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, - { be_const_key_weak(is_root_commissioning_open, 90), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, - { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, - { be_const_key_weak(root_iterations, -1), be_const_var(32) }, - { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, - { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(37) }, - { be_const_key_weak(ipv4only, 34), be_const_var(29) }, - { be_const_key_weak(mdns_remove_PASE, 29), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, - { be_const_key_weak(plugins_config_remotes, 103), be_const_var(4) }, - { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) }, - { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, - { be_const_key_weak(commissioning_iterations, -1), be_const_var(12) }, - { be_const_key_weak(plugins_config, 40), be_const_var(3) }, - { be_const_key_weak(_init_basic_commissioning, 37), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, - { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, - { be_const_key_weak(hostname_eth, -1), be_const_var(21) }, - { be_const_key_weak(mdns_remove_op_discovery, 77), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) }, - { be_const_key_weak(received_ack, 76), be_const_closure(class_Matter_Device_received_ack_closure) }, - { be_const_key_weak(PASE_TIMEOUT, 27), be_const_int(600) }, - { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, - { be_const_key_weak(mdns_pase_eth, -1), be_const_var(24) }, - { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(25) }, - { be_const_key_weak(commissioning_salt, -1), be_const_var(14) }, - { be_const_key_weak(start_basic_commissioning, 94), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, - { be_const_key_weak(commissioning_L, -1), be_const_var(16) }, - { be_const_key_weak(message_handler, 36), be_const_var(7) }, - { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, - { be_const_key_weak(process_attribute_expansion, 54), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, - { be_const_key_weak(k2l, -1), be_const_static_closure(class_Matter_Device_k2l_closure) }, - { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, - { be_const_key_weak(root_discriminator, 93), be_const_var(27) }, - { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, - { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, - { be_const_key_weak(commissioning_open, -1), be_const_var(11) }, - { be_const_key_weak(add_read_sensors_schedule, 91), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, - { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, - { be_const_key_weak(PASSCODE_INVALID, 107), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(11111111), - be_const_int(22222222), - be_const_int(33333333), - be_const_int(44444444), - be_const_int(55555555), - be_const_int(66666666), - be_const_int(77777777), - be_const_int(88888888), - be_const_int(99999999), - be_const_int(12345678), - be_const_int(87654321), - })) ) } )) }, - { be_const_key_weak(started, -1), be_const_var(0) }, - { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, - { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, - { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, - { be_const_key_weak(plugins, -1), be_const_var(1) }, - { be_const_key_weak(event_fabrics_saved, 88), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, - { be_const_key_weak(commissioning_w0, 73), be_const_var(15) }, - { be_const_key_weak(compute_qrcode_content, 57), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, - { be_const_key_weak(conf_to_log, 56), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, - { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, - { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, - { be_const_key_weak(process_attribute_read_solo, -1), be_const_closure(class_Matter_Device_process_attribute_read_solo_closure) }, - { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_Device_msg_received_closure) }, - { be_const_key_weak(root_w0, -1), be_const_var(34) }, - { be_const_key_weak(get_active_endpoints, -1), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, - { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Device_every_250ms_closure) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) }, - { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, - { be_const_key_weak(MtrUpdate, 45), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, - { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(http_remotes, -1), be_const_var(26) }, - { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, - { be_const_key_weak(root_salt, -1), be_const_var(33) }, - { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, - { be_const_key_weak(update_remotes_info, 32), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, - { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(profiler, -1), be_const_var(6) }, - { be_const_key_weak(root_L, 102), be_const_var(35) }, - { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, - { be_const_key_weak(ui, -1), be_const_var(9) }, - { be_const_key_weak(stop, 14), be_const_closure(class_Matter_Device_stop_closure) }, - { be_const_key_weak(stop_basic_commissioning, 13), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, - { be_const_key_weak(plugins_classes, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) }, + { be_const_key_weak(commissioning_discriminator, 11), be_const_var(13) }, + { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, + { be_const_key_weak(probe_sensor_time, -1), be_const_var(37) }, + { be_const_key_weak(generate_random_passcode, 94), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, + { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(50, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(relay, 29), be_const_class(be_class_Matter_Plugin_OnOff) }, @@ -6266,10 +6157,132 @@ be_local_class(Matter_Device, { be_const_key_weak(v_rain, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, })) ) } )) }, - { be_const_key_weak(tick, 9), be_const_var(10) }, - { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(17) }, - { be_const_key_weak(msg_send, 7), be_const_closure(class_Matter_Device_msg_send_closure) }, + { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, + { be_const_key_weak(tick, -1), be_const_var(10) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Device_invoke_request_closure) }, + { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, + { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, + { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Device_every_250ms_closure) }, + { be_const_key_weak(root_passcode, 16), be_const_var(28) }, + { be_const_key_weak(hostname_eth, -1), be_const_var(21) }, + { be_const_key_weak(add_read_sensors_schedule, 117), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, + { be_const_key_weak(udp_server, -1), be_const_var(5) }, + { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) }, + { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, + { be_const_key_weak(MtrUpdate, -1), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, + { be_const_key_weak(root_discriminator, -1), be_const_var(27) }, + { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, + { be_const_key_weak(conf_to_log, 32), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, + { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) }, + { be_const_key_weak(k2l, 70), be_const_static_closure(class_Matter_Device_k2l_closure) }, + { be_const_key_weak(http_remotes, -1), be_const_var(26) }, { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, + { be_const_key_weak(commissioning_open, 114), be_const_var(11) }, + { be_const_key_weak(root_iterations, -1), be_const_var(33) }, + { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, + { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, + { be_const_key_weak(root_L, 3), be_const_var(36) }, + { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, + { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, + { be_const_key_weak(_compute_pbkdf, 49), be_const_closure(class_Matter_Device__compute_pbkdf_closure) }, + { be_const_key_weak(msg_received, 78), be_const_closure(class_Matter_Device_msg_received_closure) }, + { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, + { be_const_key_weak(ipv4only, -1), be_const_var(29) }, + { be_const_key_weak(start_commissioning_complete, 77), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, + { be_const_key_weak(root_salt, 21), be_const_var(34) }, + { be_const_key_weak(start_commissioning_complete_deferred, 67), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, + { be_const_key_weak(plugins_config, 17), be_const_var(3) }, + { be_const_key_weak(commissioning_admin_fabric, 26), be_const_var(17) }, + { be_const_key_weak(profiler, -1), be_const_var(6) }, + { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, + { be_const_key_weak(MtrInfo, -1), be_const_closure(class_Matter_Device_MtrInfo_closure) }, + { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, + { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, + { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, + { be_const_key_weak(started, 34), be_const_var(0) }, + { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, + { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) }, + { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, + { be_const_key_weak(find_plugin_by_endpoint, 96), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(register_commands, -1), be_const_closure(class_Matter_Device_register_commands_closure) }, + { be_const_key_weak(commissioning_instance_wifi, 104), be_const_var(18) }, + { be_const_key_weak(bridge_remove_endpoint, -1), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, + { be_const_key_weak(mdns_remove_PASE, 38), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, + { be_const_key_weak(root_w0, 45), be_const_var(35) }, + { be_const_key_weak(plugins_persist, 40), be_const_var(2) }, + { be_const_key_weak(message_handler, -1), be_const_var(7) }, + { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, + { be_const_key_weak(disable_bridge_mode, 2), be_const_var(30) }, + { be_const_key_weak(debug, 8), be_const_var(32) }, + { be_const_key_weak(commissioning_instance_eth, 72), be_const_var(19) }, + { be_const_key_weak(commissioning_w0, -1), be_const_var(15) }, + { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(11111111), + be_const_int(22222222), + be_const_int(33333333), + be_const_int(44444444), + be_const_int(55555555), + be_const_int(66666666), + be_const_int(77777777), + be_const_int(88888888), + be_const_int(99999999), + be_const_int(12345678), + be_const_int(87654321), + })) ) } )) }, + { be_const_key_weak(bridge_add_endpoint, 54), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, + { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(25) }, + { be_const_key_weak(received_ack, 4), be_const_closure(class_Matter_Device_received_ack_closure) }, + { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(38) }, + { be_const_key_weak(compute_manual_pairing_code, 111), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, + { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, + { be_const_key_weak(hostname_wifi, -1), be_const_var(20) }, + { be_const_key_weak(PBKDF_ITERATIONS, 90), be_const_int(1000) }, + { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, + { be_const_key_weak(get_plugin_remote_info, 112), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, + { be_const_key_weak(sessions, 47), be_const_var(8) }, + { be_const_key_weak(mdns_pase_eth, -1), be_const_var(24) }, + { be_const_key_weak(find_plugin_by_friendly_name, -1), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, + { be_const_key_weak(_trigger_read_sensors, 52), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, + { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, + { be_const_key_weak(get_active_endpoints, 10), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(_instantiate_plugins_from_config, 83), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, + { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, + { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, + { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, + { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, + { be_const_key_weak(process_attribute_read_solo, 65), be_const_closure(class_Matter_Device_process_attribute_read_solo_closure) }, + { be_const_key_weak(start, 57), be_const_closure(class_Matter_Device_start_closure) }, + { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, + { be_const_key_weak(attribute_updated, 53), be_const_closure(class_Matter_Device_attribute_updated_closure) }, + { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, + { be_const_key_weak(compute_qrcode_content, 35), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, + { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, + { be_const_key_weak(commissioning_salt, -1), be_const_var(14) }, + { be_const_key_weak(PRODUCT_ID, 43), be_const_int(32768) }, + { be_const_key_weak(msg_send, -1), be_const_closure(class_Matter_Device_msg_send_closure) }, + { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) }, + { be_const_key_weak(k2l_num, 37), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, + { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, + { be_const_key_weak(next_ep, -1), be_const_var(31) }, + { be_const_key_weak(commissioning_iterations, -1), be_const_var(12) }, + { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, + { be_const_key_weak(ui, -1), be_const_var(9) }, + { be_const_key_weak(start_basic_commissioning, 13), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, + { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, + { be_const_key_weak(productid, -1), be_const_var(23) }, + { be_const_key_weak(plugins, -1), be_const_var(1) }, + { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(commissioning_L, -1), be_const_var(16) }, + { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, + { be_const_key_weak(stop, -1), be_const_closure(class_Matter_Device_stop_closure) }, })), be_str_weak(Matter_Device) ); From 342ba2bd4414fe50e47e1cb0a9f376c3012dc977 Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Sat, 15 Jun 2024 11:11:42 +0200 Subject: [PATCH 058/252] Update Italian language (#21635) --- tasmota/language/it_IT.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 9b9e8d118..3e7c648ca 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v9.4.0.1 - Last update 19.05.2024 + * Updated until v9.4.0.1 - Last update 15.06.2024 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -76,7 +76,6 @@ #define D_COMMAND "Comando" #define D_CONNECTED "Connesso" #define D_CORS_DOMAIN "Dominio CORS" - #define D_COLOR "Colore" #define D_COUNT "Conteggio" #define D_COUNTER "Contatore" @@ -794,8 +793,6 @@ #define D_GPIO_ASR650X_TX "ASR650X - Tx" #define D_GPIO_ASR650X_RX "ASR650X - Rx" #define D_GPIO_LORA_CS "LoRa - CS" -#define D_GPIO_ASR650X_TX "ASR650x - TX" -#define D_GPIO_ASR650X_RX "ASR650x - RX" #define D_GPIO_LORA_RST "LoRa - Rst" #define D_GPIO_LORA_BUSY "LoRa - Busy" #define D_GPIO_LORA_DI "LoRa - DIO" // Suffix "0","1","2" @@ -810,6 +807,8 @@ #define D_SENSOR_CSE7761_RX "CSE7761 - RX" #define D_SENSOR_CSE7766_TX "CSE7766 - TX" #define D_SENSOR_CSE7766_RX "CSE7766 - RX" +#define D_SENSOR_BL0939_RX "BL0939 - RX" +#define D_SENSOR_BL0942_RX "BL0942 - RX" #define D_SENSOR_HM330X_SET "HM330X - SET" #define D_SENSOR_PN532_TX "PN532 - TX" #define D_SENSOR_PN532_RX "PN532 - RX" @@ -877,8 +876,6 @@ #define D_SENSOR_LE01MR_RX "LE-01MR - RX" #define D_SENSOR_LE01MR_TX "LE-01MR - TX" #define D_SENSOR_BL0940_RX "BL0940 - RX" -#define D_SENSOR_BL0939_RX "BL0939 - RX" -#define D_SENSOR_BL0942_RX "BL0942 - RX" #define D_SENSOR_CC1101_GDO0 "CC1101 - GDO0" #define D_SENSOR_CC1101_GDO2 "CC1101 - GDO2" #define D_SENSOR_HRXL_RX "HRXL - RX" From 767ac60266f1d41f5cbe08d898a432c64017b8b6 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 15 Jun 2024 12:20:52 +0200 Subject: [PATCH 059/252] Fix Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) --- CHANGELOG.md | 1 + lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be | 4 ++-- .../berry_matter/src/solidify/solidified_Matter_Plugin_0.h | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f68729d3..e942a6dd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. - NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) ### Fixed +- Matter interverted attributes 0xFFF9 and 0xFFFB ### Removed diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 748eb2d96..56b6eba63 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -315,7 +315,7 @@ class Matter_Plugin if attribute == 0xFFF8 # GeneratedCommandList var gcl = TLV.Matter_TLV_array() return gcl # return empty list - elif attribute == 0xFFF9 # AcceptedCommandList + elif attribute == 0xFFFB # AttributeList var acli = TLV.Matter_TLV_array() var attr_list = self.get_attribute_list(cluster) var idx = 0 @@ -327,7 +327,7 @@ class Matter_Plugin elif attribute == 0xFFFA # EventList var el = TLV.Matter_TLV_array() return el # return empty list - elif attribute == 0xFFFB # AttributeList + elif attribute == 0xFFF9 # AcceptedCommandList var al = TLV.Matter_TLV_array() return al # TODO elif attribute == 0xFFFC # FeatureMap diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 6fed7984d..27ec87093 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -1278,7 +1278,7 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x7C1C0200, // 005C CALL R7 1 0x80040E00, // 005D RET 1 R7 0x7002003F, // 005E JMP #009F - 0x541EFFF8, // 005F LDINT R7 65529 + 0x541EFFFA, // 005F LDINT R7 65531 0x1C1C0C07, // 0060 EQ R7 R6 R7 0x781E0013, // 0061 JMPF R7 #0076 0x8C1C0905, // 0062 GETMET R7 R4 K5 @@ -1308,7 +1308,7 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x7C1C0200, // 007A CALL R7 1 0x80040E00, // 007B RET 1 R7 0x70020021, // 007C JMP #009F - 0x541EFFFA, // 007D LDINT R7 65531 + 0x541EFFF8, // 007D LDINT R7 65529 0x1C1C0C07, // 007E EQ R7 R6 R7 0x781E0003, // 007F JMPF R7 #0084 0x8C1C0905, // 0080 GETMET R7 R4 K5 From 2cf0eda87056cc4c030dba251709fd2e82aef82b Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 15 Jun 2024 12:51:08 +0200 Subject: [PATCH 060/252] Matter add Fan support (virtual only) (#21637) * Matter add Fan support (virtual only) * Add MtrReceived event --- CHANGELOG.md | 1 + .../berry_matter/src/be_matter_module.c | 2 + .../src/embedded/Matter_Plugin_0.be | 3 +- .../embedded/Matter_Plugin_1_Aggregator.be | 2 +- .../src/embedded/Matter_Plugin_1_Device.be | 2 +- .../src/embedded/Matter_Plugin_1_Root.be | 2 +- .../src/embedded/Matter_Plugin_2_Fan.be | 198 ++++++ .../Matter_Plugin_3_Sensor_Waterleak.be | 2 +- .../Matter_Plugin_8_Bridge_Sensor_Rain.be | 2 +- .../src/embedded/Matter_Plugin_9_Virt_Fan.be | 33 + .../berry_matter/src/embedded/Matter_UI.be | 1 + .../src/solidify/solidified_Matter_Plugin_0.h | 5 +- .../solidify/solidified_Matter_Plugin_2_Fan.h | 570 ++++++++++++++++++ .../solidified_Matter_Plugin_9_Virt_Fan.h | 27 + .../src/solidify/solidified_Matter_UI.h | 2 +- .../solidify/solidified_Matter_zz_Device.h | 100 +-- 16 files changed, 894 insertions(+), 58 deletions(-) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Fan.be create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Fan.h diff --git a/CHANGELOG.md b/CHANGELOG.md index e942a6dd8..008adf3e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) - Matter support for Rain sensor (#21633) - Matter add internal debug option +- Matter add Fan support (virtual only) ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index a641cad33..8e8f5d36c 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -258,6 +258,8 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_3_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_3_Sensor_Rain.h" #include "solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h" +#include "solidify/solidified_Matter_Plugin_2_Fan.h" +#include "solidify/solidified_Matter_Plugin_9_Virt_Fan.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h" diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 56b6eba63..42e436513 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -1,5 +1,5 @@ # -# Matter_Plugin.be - generic superclass for all Matter plugins, used to define specific behaviors (light, switch, media...) +# Matter_Plugin_0.be - generic superclass for all Matter plugins, used to define specific behaviors (light, switch, media...) # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -48,6 +48,7 @@ class Matter_Plugin static var FEATURE_MAPS = { # feature map per cluster 0x0031: 0x04, # Put Eth for now which should work for any on-network 0x0102: 1 + 4, # Lift + PA_LF + 0x0202: 2, # Fan: Auto } # `CLUSTER_REVISIONS` contains revision numbers for each cluster, or `1` if not present static var CLUSTER_REVISIONS = { diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be index 6e8771736..2e45e036e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Aggregator.be - implements the Aggregator endpoint +# Matter_Plugin_1_Aggregator.be - implements the Aggregator endpoint # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be index e9834cff5..edae4f064 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Device.be - implements the behavior for a standard Device +# Matter_Plugin_1_Device.be - implements the behavior for a standard Device # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index d58b6436f..c6abb638b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Root.be - implements the core features that a Matter device must implemment +# Matter_Plugin_1_Root.be - implements the core features that a Matter device must implemment # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be new file mode 100644 index 000000000..dbdc97797 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be @@ -0,0 +1,198 @@ +# +# Matter_Plugin_2_Fan.be - implements the behavior for a generic Fan +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Fan,weak + +class Matter_Plugin_Fan : Matter_Plugin_Device + static var TYPE = "fan" # name of the plug-in in json + static var DISPLAY_NAME = "Fan" # display name of the plug-in + # static var ARG = "" # additional argument name (or empty if none) + static var CLUSTERS = matter.consolidate_clusters(_class, { + # 0x001D: inherited # Descriptor Cluster 9.5 p.453 + # 0x0003: inherited # Identify 1.2 p.16 + # 0x0004: inherited # Groups 1.3 p.21 + # 0x0005: inherited # Scenes 1.4 p.30 - no writable + 0x0202: [0,1,2,3], # Fan + }) + static var UPDATE_COMMANDS = matter.UC_LIST(_class, "FanMode", "FanSpeed") + static var TYPES = { 0x002B: 2 } # Fan + + # Inherited + # var device # reference to the `device` global object + # var endpoint # current endpoint + # var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy + # var tick # tick value when it was last updated + # var node_label # name of the endpoint, used only in bridge mode, "" if none + var shadow_fan_mode + var shadow_fan_speed_pct + ############################################################# + # FanMode: + # 0: Off + # 1: Low + # 2: Medium + # 3: High + # 4: On -- deprecated + # 5: Auto -- not declared as supported + # 6: Smart -- deprecated + + ############################################################# + # Constructor + def init(device, endpoint, config) + super(self).init(device, endpoint, config) + self.shadow_fan_mode = 0 # Off by default + self.shadow_fan_speed_pct = 0 + end + + ############################################################# + # Model + # + def set_fan_mode(fan_mode) + fan_mode = int(fan_mode) + if (fan_mode < 0) fan_mode = 0 end # force positive + if fan_mode != self.shadow_fan_mode + self.attribute_updated(0x0202, 0x0000) + self.shadow_fan_mode = int(fan_mode) + # compute new speed + var new_speed_pct = self.shadow_fan_speed_pct + if self.shadow_fan_mode == 0 # set to Off, we need to adjust speed to 0 (4.4.6.1.1) + new_speed_pct = 0 + elif self.shadow_fan_mode > 3 # Auto mode or unsupported modes, since we don't support AUTO, set speed to max + self.shadow_fan_mode = 3 # HIGH + new_speed_pct = 100 + else # set to value + new_speed_pct = tasmota.scale_uint(fan_mode, 0, 3, 0, 100) + end + # adjust and advertize if speed changed + if self.shadow_fan_speed_pct != new_speed_pct + self.shadow_fan_speed_pct = new_speed_pct + self.attribute_updated(0x0202, 0x0002) + end + end + end + + def set_fan_speed_pct(fan_speed_pct) + # guard value + fan_speed_pct = int(fan_speed_pct) + if (fan_speed_pct < 0) fan_speed_pct = 0 end + if (fan_speed_pct > 100) fan_speed_pct = 100 end + if fan_speed_pct != self.shadow_fan_speed_pct + self.attribute_updated(0x0202, 0x0002) + self.shadow_fan_speed_pct = fan_speed_pct + # adjust mode if needed + var new_mode = self.shadow_fan_mode + if (fan_speed_pct == 0) + new_mode = 0 + else + new_mode = tasmota.scale_uint(fan_speed_pct, 1, 100, 1, 3) + end + # adjust and advertize if mode changed + if (new_mode != self.shadow_fan_mode) + self.shadow_fan_mode = new_mode + self.attribute_updated(0x0202, 0x0000) + end + end + end + + ############################################################# + # read an attribute + # + def read_attribute(session, ctx, tlv_solo) + var TLV = matter.TLV + var cluster = ctx.cluster + var attribute = ctx.attribute + + # ==================================================================================================== + if cluster == 0x0202 # ========== Fan ========== + self.update_shadow_lazy() + if attribute == 0x0000 # ---------- FanMode / enum8 ---------- + return tlv_solo.set(TLV.U1, self.shadow_fan_mode) + elif attribute == 0x0001 # ---------- FanModeSequence / enum8 ---------- + return tlv_solo.set(TLV.U1, 2) # Off/Low/Med/High/Auto + elif attribute == 0x0002 # ---------- PercentSetting / enum8 ---------- + return tlv_solo.set(TLV.U1, self.shadow_fan_speed_pct) + elif attribute == 0x0003 # ---------- PercentSetting / enum8 ---------- + return tlv_solo.set(TLV.U1, self.shadow_fan_speed_pct) + end + + end + return super(self).read_attribute(session, ctx, tlv_solo) + end + + ############################################################# + # MVC Model + # + # Controller write attributes + ############################################################# + ############################################################# + # write attribute + def write_attribute(session, ctx, write_data) + var TLV = matter.TLV + var cluster = ctx.cluster + var attribute = ctx.attribute + + # ==================================================================================================== + if cluster == 0x0202 # ========== Fan ========== + self.update_shadow_lazy() + if attribute == 0x0000 # ---------- FanMode / enum8 ---------- + if type(write_data) == 'int' + self.set_fan_mode(write_data) + self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct) + return true + else + ctx.status = matter.CONSTRAINT_ERROR + return false + end + elif attribute == 0x0002 # ---------- PercentSetting / enum8 ---------- + if type(write_data) == 'int' + self.set_fan_speed_pct(write_data) + self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct) + return true + else + ctx.status = matter.CONSTRAINT_ERROR + return false + end + end + + end + # return super(self).read_attribute(session, ctx, tlv_solo) # not useful as there is nothing in superclass + return nil + end + + ############################################################# + # update_virtual + # + # Update internal state for virtual devices + def update_virtual(payload) + var val_fan_mode = payload.find("FanMode") + if val_fan_mode != nil + self.set_fan_mode(int(val_fan_mode)) + end + var val_fan_speed = payload.find("FanSpeed") + if val_fan_speed != nil + self.set_fan_speed_pct(int(val_fan_speed)) + end + # super(self).update_virtual(payload) # not useful as there is nothing in superclass + end + +end +matter.Plugin_Fan = Matter_Plugin_Fan diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be index 3b8242756..4a140e27e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_3_Sensor_Waterleak.be - implements the behavior for a Water leak Sensor +# Matter_Plugin_2_Sensor_Waterleak.be - implements the behavior for a Water leak Sensor # # Copyright (C) 2024 Stephan Hadinger & Theo Arends # diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be index b9a275eb1..2c024d38a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be @@ -1,5 +1,5 @@ # -# Matter_Plugin_Bridge_8_Sensor_Rain.be - implements Rain Sensor via HTTP to Tasmota +# Matter_Plugin_Bridge_Sensor_Rain.be - implements Rain Sensor via HTTP to Tasmota # # Copyright (C) 2024 Stephan Hadinger & Theo Arends # diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Fan.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Fan.be new file mode 100644 index 000000000..0e7f4341a --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Fan.be @@ -0,0 +1,33 @@ +# +# Matter_Plugin_Virt_Fan.be - implements the behavior for a Virtual Fan +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Virt_Fan,weak + +class Matter_Plugin_Virt_Fan : Matter_Plugin_Fan + static var TYPE = "v_fan" # name of the plug-in in json + static var DISPLAY_NAME = "v.Fan" # display name of the plug-in + static var ARG = "" # no arg for virtual device + static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') + static var VIRTUAL = true # virtual device +end +matter.Plugin_Virt_Fan = Matter_Plugin_Virt_Fan diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index 29bf665fa..6f917ed6b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -36,6 +36,7 @@ class Matter_UI "|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|rain|waterleak" "|airquality" "|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3" + "|v_fan" "|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow|v_rain|v_waterleak" "|v_airquality" static var _CLASSES_TYPES2= "|http_relay|http_light0|http_light1|http_light2|http_light3" diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 27ec87093..401fd4429 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -1359,10 +1359,11 @@ be_local_class(Matter_Plugin, be_nested_map(51, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, + be_const_map( * be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(258, -1), be_const_int(5) }, - { be_const_key_int(49, -1), be_const_int(4) }, + { be_const_key_int(49, 2), be_const_int(4) }, + { be_const_key_int(514, -1), be_const_int(2) }, })) ) } )) }, { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h new file mode 100644 index 000000000..739c5d9f4 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h @@ -0,0 +1,570 @@ +/* Solidification of Matter_Plugin_2_Fan.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Fan; + +/******************************************************************** +** Solidified function: set_fan_mode +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Fan; +be_local_closure(class_Matter_Plugin_Fan_set_fan_mode, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Fan, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(shadow_fan_mode), + /* K2 */ be_nested_str_weak(attribute_updated), + /* K3 */ be_nested_str_weak(shadow_fan_speed_pct), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(scale_uint), + /* K7 */ be_const_int(2), + }), + be_str_weak(set_fan_mode), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C040400, // 0003 MOVE R1 R2 + 0x14080300, // 0004 LT R2 R1 K0 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x58040000, // 0006 LDCONST R1 K0 + 0x88080101, // 0007 GETMBR R2 R0 K1 + 0x20080202, // 0008 NE R2 R1 R2 + 0x780A0024, // 0009 JMPF R2 #002F + 0x8C080102, // 000A GETMET R2 R0 K2 + 0x54120201, // 000B LDINT R4 514 + 0x58140000, // 000C LDCONST R5 K0 + 0x7C080600, // 000D CALL R2 3 + 0x60080009, // 000E GETGBL R2 G9 + 0x5C0C0200, // 000F MOVE R3 R1 + 0x7C080200, // 0010 CALL R2 1 + 0x90020202, // 0011 SETMBR R0 K1 R2 + 0x88080103, // 0012 GETMBR R2 R0 K3 + 0x880C0101, // 0013 GETMBR R3 R0 K1 + 0x1C0C0700, // 0014 EQ R3 R3 K0 + 0x780E0001, // 0015 JMPF R3 #0018 + 0x58080000, // 0016 LDCONST R2 K0 + 0x7002000E, // 0017 JMP #0027 + 0x880C0101, // 0018 GETMBR R3 R0 K1 + 0x240C0704, // 0019 GT R3 R3 K4 + 0x780E0002, // 001A JMPF R3 #001E + 0x90020304, // 001B SETMBR R0 K1 K4 + 0x540A0063, // 001C LDINT R2 100 + 0x70020008, // 001D JMP #0027 + 0xB80E0A00, // 001E GETNGBL R3 K5 + 0x8C0C0706, // 001F GETMET R3 R3 K6 + 0x5C140200, // 0020 MOVE R5 R1 + 0x58180000, // 0021 LDCONST R6 K0 + 0x581C0004, // 0022 LDCONST R7 K4 + 0x58200000, // 0023 LDCONST R8 K0 + 0x54260063, // 0024 LDINT R9 100 + 0x7C0C0C00, // 0025 CALL R3 6 + 0x5C080600, // 0026 MOVE R2 R3 + 0x880C0103, // 0027 GETMBR R3 R0 K3 + 0x200C0602, // 0028 NE R3 R3 R2 + 0x780E0004, // 0029 JMPF R3 #002F + 0x90020602, // 002A SETMBR R0 K3 R2 + 0x8C0C0102, // 002B GETMET R3 R0 K2 + 0x54160201, // 002C LDINT R5 514 + 0x58180007, // 002D LDCONST R6 K7 + 0x7C0C0600, // 002E CALL R3 3 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Fan; +be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Fan, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(FanMode), + /* K2 */ be_nested_str_weak(set_fan_mode), + /* K3 */ be_nested_str_weak(FanSpeed), + /* K4 */ be_nested_str_weak(set_fan_speed_pct), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x58100001, // 0001 LDCONST R4 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0004, // 0005 JMPF R3 #000B + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x60140009, // 0007 GETGBL R5 G9 + 0x5C180400, // 0008 MOVE R6 R2 + 0x7C140200, // 0009 CALL R5 1 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C0C0300, // 000B GETMET R3 R1 K0 + 0x58140003, // 000C LDCONST R5 K3 + 0x7C0C0400, // 000D CALL R3 2 + 0x4C100000, // 000E LDNIL R4 + 0x20100604, // 000F NE R4 R3 R4 + 0x78120004, // 0010 JMPF R4 #0016 + 0x8C100104, // 0011 GETMET R4 R0 K4 + 0x60180009, // 0012 GETGBL R6 G9 + 0x5C1C0600, // 0013 MOVE R7 R3 + 0x7C180200, // 0014 CALL R6 1 + 0x7C100400, // 0015 CALL R4 2 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_fan_speed_pct +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Fan; +be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Fan, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(shadow_fan_speed_pct), + /* K2 */ be_nested_str_weak(attribute_updated), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(shadow_fan_mode), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(scale_uint), + /* K7 */ be_const_int(1), + /* K8 */ be_const_int(3), + }), + be_str_weak(set_fan_speed_pct), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C040400, // 0003 MOVE R1 R2 + 0x14080300, // 0004 LT R2 R1 K0 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x58040000, // 0006 LDCONST R1 K0 + 0x540A0063, // 0007 LDINT R2 100 + 0x24080202, // 0008 GT R2 R1 R2 + 0x780A0000, // 0009 JMPF R2 #000B + 0x54060063, // 000A LDINT R1 100 + 0x88080101, // 000B GETMBR R2 R0 K1 + 0x20080202, // 000C NE R2 R1 R2 + 0x780A001A, // 000D JMPF R2 #0029 + 0x8C080102, // 000E GETMET R2 R0 K2 + 0x54120201, // 000F LDINT R4 514 + 0x58140003, // 0010 LDCONST R5 K3 + 0x7C080600, // 0011 CALL R2 3 + 0x90020201, // 0012 SETMBR R0 K1 R1 + 0x88080104, // 0013 GETMBR R2 R0 K4 + 0x1C0C0300, // 0014 EQ R3 R1 K0 + 0x780E0001, // 0015 JMPF R3 #0018 + 0x58080000, // 0016 LDCONST R2 K0 + 0x70020008, // 0017 JMP #0021 + 0xB80E0A00, // 0018 GETNGBL R3 K5 + 0x8C0C0706, // 0019 GETMET R3 R3 K6 + 0x5C140200, // 001A MOVE R5 R1 + 0x58180007, // 001B LDCONST R6 K7 + 0x541E0063, // 001C LDINT R7 100 + 0x58200007, // 001D LDCONST R8 K7 + 0x58240008, // 001E LDCONST R9 K8 + 0x7C0C0C00, // 001F CALL R3 6 + 0x5C080600, // 0020 MOVE R2 R3 + 0x880C0104, // 0021 GETMBR R3 R0 K4 + 0x200C0403, // 0022 NE R3 R2 R3 + 0x780E0004, // 0023 JMPF R3 #0029 + 0x90020802, // 0024 SETMBR R0 K4 R2 + 0x8C0C0102, // 0025 GETMET R3 R0 K2 + 0x54160201, // 0026 LDINT R5 514 + 0x58180000, // 0027 LDCONST R6 K0 + 0x7C0C0600, // 0028 CALL R3 3 + 0x80000000, // 0029 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Fan; +be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Fan, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(int), + /* K7 */ be_nested_str_weak(set_fan_mode), + /* K8 */ be_nested_str_weak(publish_command), + /* K9 */ be_nested_str_weak(FanMode), + /* K10 */ be_nested_str_weak(shadow_fan_mode), + /* K11 */ be_nested_str_weak(FanSpeed), + /* K12 */ be_nested_str_weak(shadow_fan_speed_pct), + /* K13 */ be_nested_str_weak(status), + /* K14 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K15 */ be_const_int(2), + /* K16 */ be_nested_str_weak(set_fan_speed_pct), + }), + be_str_weak(write_attribute), + &be_const_str_solidified, + ( &(const binstruction[60]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0201, // 0004 LDINT R7 514 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0032, // 0006 JMPF R7 #003A + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0016, // 000A JMPF R7 #0022 + 0x601C0004, // 000B GETGBL R7 G4 + 0x5C200600, // 000C MOVE R8 R3 + 0x7C1C0200, // 000D CALL R7 1 + 0x1C1C0F06, // 000E EQ R7 R7 K6 + 0x781E000B, // 000F JMPF R7 #001C + 0x8C1C0107, // 0010 GETMET R7 R0 K7 + 0x5C240600, // 0011 MOVE R9 R3 + 0x7C1C0400, // 0012 CALL R7 2 + 0x8C1C0108, // 0013 GETMET R7 R0 K8 + 0x58240009, // 0014 LDCONST R9 K9 + 0x8828010A, // 0015 GETMBR R10 R0 K10 + 0x582C000B, // 0016 LDCONST R11 K11 + 0x8830010C, // 0017 GETMBR R12 R0 K12 + 0x7C1C0A00, // 0018 CALL R7 5 + 0x501C0200, // 0019 LDBOOL R7 1 0 + 0x80040E00, // 001A RET 1 R7 + 0x70020004, // 001B JMP #0021 + 0xB81E0000, // 001C GETNGBL R7 K0 + 0x881C0F0E, // 001D GETMBR R7 R7 K14 + 0x900A1A07, // 001E SETMBR R2 K13 R7 + 0x501C0000, // 001F LDBOOL R7 0 0 + 0x80040E00, // 0020 RET 1 R7 + 0x70020017, // 0021 JMP #003A + 0x1C1C0D0F, // 0022 EQ R7 R6 K15 + 0x781E0015, // 0023 JMPF R7 #003A + 0x601C0004, // 0024 GETGBL R7 G4 + 0x5C200600, // 0025 MOVE R8 R3 + 0x7C1C0200, // 0026 CALL R7 1 + 0x1C1C0F06, // 0027 EQ R7 R7 K6 + 0x781E000B, // 0028 JMPF R7 #0035 + 0x8C1C0110, // 0029 GETMET R7 R0 K16 + 0x5C240600, // 002A MOVE R9 R3 + 0x7C1C0400, // 002B CALL R7 2 + 0x8C1C0108, // 002C GETMET R7 R0 K8 + 0x58240009, // 002D LDCONST R9 K9 + 0x8828010A, // 002E GETMBR R10 R0 K10 + 0x582C000B, // 002F LDCONST R11 K11 + 0x8830010C, // 0030 GETMBR R12 R0 K12 + 0x7C1C0A00, // 0031 CALL R7 5 + 0x501C0200, // 0032 LDBOOL R7 1 0 + 0x80040E00, // 0033 RET 1 R7 + 0x70020004, // 0034 JMP #003A + 0xB81E0000, // 0035 GETNGBL R7 K0 + 0x881C0F0E, // 0036 GETMBR R7 R7 K14 + 0x900A1A07, // 0037 SETMBR R2 K13 R7 + 0x501C0000, // 0038 LDBOOL R7 0 0 + 0x80040E00, // 0039 RET 1 R7 + 0x4C1C0000, // 003A LDNIL R7 + 0x80040E00, // 003B RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Fan; +be_local_closure(class_Matter_Plugin_Fan_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Fan, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_fan_mode), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(shadow_fan_speed_pct), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x90020302, // 0008 SETMBR R0 K1 K2 + 0x90020702, // 0009 SETMBR R0 K3 K2 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Fan; +be_local_closure(class_Matter_Plugin_Fan_read_attribute, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Fan, + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(U1), + /* K8 */ be_nested_str_weak(shadow_fan_mode), + /* K9 */ be_const_int(1), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(shadow_fan_speed_pct), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[49]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0201, // 0004 LDINT R7 514 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0020, // 0006 JMPF R7 #0028 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x70020016, // 0010 JMP #0028 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x5828000A, // 0015 LDCONST R10 K10 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 + 0x7002000E, // 0018 JMP #0028 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x8828010B, // 001D GETMBR R10 R0 K11 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 + 0x70020006, // 0020 JMP #0028 + 0x1C1C0D0C, // 0021 EQ R7 R6 K12 + 0x781E0004, // 0022 JMPF R7 #0028 + 0x8C1C0706, // 0023 GETMET R7 R3 K6 + 0x88240907, // 0024 GETMBR R9 R4 K7 + 0x8828010B, // 0025 GETMBR R10 R0 K11 + 0x7C1C0600, // 0026 CALL R7 3 + 0x80040E00, // 0027 RET 1 R7 + 0x601C0003, // 0028 GETGBL R7 G3 + 0x5C200000, // 0029 MOVE R8 R0 + 0x7C1C0200, // 002A CALL R7 1 + 0x8C1C0F0D, // 002B GETMET R7 R7 K13 + 0x5C240200, // 002C MOVE R9 R1 + 0x5C280400, // 002D MOVE R10 R2 + 0x5C2C0600, // 002E MOVE R11 R3 + 0x7C1C0800, // 002F CALL R7 4 + 0x80040E00, // 0030 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Fan +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_class(Matter_Plugin_Fan, + 2, + &be_class_Matter_Plugin_Device, + be_nested_map(13, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Fan_update_virtual_closure) }, + { be_const_key_weak(read_attribute, 3), be_const_closure(class_Matter_Plugin_Fan_read_attribute_closure) }, + { be_const_key_weak(TYPE, 0), be_nested_str_weak(fan) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(FanMode), + be_nested_str_weak(FanSpeed), + })) ) } )) }, + { be_const_key_weak(shadow_fan_speed_pct, -1), be_const_var(1) }, + { be_const_key_weak(set_fan_speed_pct, -1), be_const_closure(class_Matter_Plugin_Fan_set_fan_speed_pct_closure) }, + { be_const_key_weak(shadow_fan_mode, 8), be_const_var(0) }, + { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_Fan_write_attribute_closure) }, + { be_const_key_weak(init, 9), be_const_closure(class_Matter_Plugin_Fan_init_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Fan) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(5), + be_const_int(10), + be_const_int(15), + be_const_int(17), + be_const_int(18), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(8, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(514, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(set_fan_mode, 1), be_const_closure(class_Matter_Plugin_Fan_set_fan_mode_closure) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(43, -1), be_const_int(2) }, + })) ) } )) }, + })), + be_str_weak(Matter_Plugin_Fan) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Fan.h new file mode 100644 index 000000000..be063b2e9 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Fan.h @@ -0,0 +1,27 @@ +/* Solidification of Matter_Plugin_9_Virt_Fan.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Virt_Fan; + +/******************************************************************** +** Solidified class: Matter_Plugin_Virt_Fan +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Fan; +be_local_class(Matter_Plugin_Virt_Fan, + 0, + &be_class_Matter_Plugin_Fan, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EFan) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_fan) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(ARG, 2), be_nested_str_weak() }, + })), + be_str_weak(Matter_Plugin_Virt_Fan) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 93f389557..b2d5e1d38 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -3397,7 +3397,7 @@ be_local_class(Matter_UI, { be_const_key_weak(show_commissioning_info, -1), be_const_closure(class_Matter_UI_show_commissioning_info_closure) }, { be_const_key_weak(page_part_ctl, 18), be_const_closure(class_Matter_UI_page_part_ctl_closure) }, { be_const_key_weak(show_fabric_info, -1), be_const_closure(class_Matter_UI_show_fabric_info_closure) }, - { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) }, + { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_fan_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) }, { be_const_key_weak(web_get_arg, -1), be_const_closure(class_Matter_UI_web_get_arg_closure) }, { be_const_key_weak(plugin_option, 5), be_const_closure(class_Matter_UI_plugin_option_closure) }, { be_const_key_weak(web_add_config_button, -1), be_const_closure(class_Matter_UI_web_add_config_button_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index d5787e6c3..d7855d907 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -6104,58 +6104,60 @@ be_local_class(Matter_Device, { be_const_key_weak(probe_sensor_time, -1), be_const_var(37) }, { be_const_key_weak(generate_random_passcode, 94), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(50, + be_const_map( * be_nested_map(52, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(relay, 29), be_const_class(be_class_Matter_Plugin_OnOff) }, - { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, - { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(http_occupancy, 31), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(http_contact, 14), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, - { be_const_key_weak(light0, 16), be_const_class(be_class_Matter_Plugin_Light0) }, - { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, - { be_const_key_weak(v_light1, 10), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, - { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, - { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, - { be_const_key_weak(v_contact, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, - { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, - { be_const_key_weak(http_illuminance, 33), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, - { be_const_key_weak(rain, 22), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, - { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, - { be_const_key_weak(shutter, 6), be_const_class(be_class_Matter_Plugin_Shutter) }, - { be_const_key_weak(light2, -1), be_const_class(be_class_Matter_Plugin_Light2) }, - { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, - { be_const_key_weak(v_illuminance, 49), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, - { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, - { be_const_key_weak(root, 27), be_const_class(be_class_Matter_Plugin_Root) }, - { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, - { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) }, - { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) }, - { be_const_key_weak(pressure, 43), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, - { be_const_key_weak(shutter_X2Btilt, 24), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, - { be_const_key_weak(v_humidity, 46), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, - { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, - { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, - { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, - { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, - { be_const_key_weak(http_waterleak, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(waterleak, 8), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, - { be_const_key_weak(light1, 3), be_const_class(be_class_Matter_Plugin_Light1) }, - { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, - { be_const_key_weak(v_flow, 13), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, - { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, - { be_const_key_weak(occupancy, 48), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, - { be_const_key_weak(airquality, 34), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, - { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, - { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, - { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, - { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, { be_const_key_weak(v_rain, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, + { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, + { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, + { be_const_key_weak(http_occupancy, 4), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, + { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, + { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, + { be_const_key_weak(relay, 17), be_const_class(be_class_Matter_Plugin_OnOff) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, + { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, + { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) }, + { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, + { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) }, + { be_const_key_weak(onoff, 2), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, + { be_const_key_weak(http_waterleak, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, + { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, + { be_const_key_weak(http_light2, 49), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, + { be_const_key_weak(v_flow, 14), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, + { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, + { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, + { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, + { be_const_key_weak(v_waterleak, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, + { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) }, + { be_const_key_weak(light2, -1), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, + { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, + { be_const_key_weak(v_illuminance, 12), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, + { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, + { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, + { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, + { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, + { be_const_key_weak(v_light0, 1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, + { be_const_key_weak(http_relay, 20), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(root, 28), be_const_class(be_class_Matter_Plugin_Root) }, + { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, + { be_const_key_weak(v_airquality, 33), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(aggregator, 22), be_const_class(be_class_Matter_Plugin_Aggregator) }, + { be_const_key_weak(v_contact, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, + { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, + { be_const_key_weak(http_light3, 44), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, + { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, + { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, + { be_const_key_weak(shutter, 21), be_const_class(be_class_Matter_Plugin_Shutter) }, + { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, + { be_const_key_weak(light3, 15), be_const_class(be_class_Matter_Plugin_Light3) }, + { be_const_key_weak(airquality, 0), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, + { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, + { be_const_key_weak(http_illuminance, 31), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, })) ) } )) }, { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, { be_const_key_weak(tick, -1), be_const_var(10) }, From b16b3859e31bfe8bbe41da6d8ccca47881284027 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 15 Jun 2024 13:34:18 +0200 Subject: [PATCH 061/252] Matter add FanSpeed255 (#21638) --- .../src/embedded/Matter_Plugin_2_Fan.be | 10 +- .../solidify/solidified_Matter_Plugin_2_Fan.h | 158 +++++++++++------- 2 files changed, 108 insertions(+), 60 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be index dbdc97797..510926a1d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be @@ -34,7 +34,7 @@ class Matter_Plugin_Fan : Matter_Plugin_Device # 0x0005: inherited # Scenes 1.4 p.30 - no writable 0x0202: [0,1,2,3], # Fan }) - static var UPDATE_COMMANDS = matter.UC_LIST(_class, "FanMode", "FanSpeed") + static var UPDATE_COMMANDS = matter.UC_LIST(_class, "FanMode", "FanSpeed", "FanSpeed255") static var TYPES = { 0x002B: 2 } # Fan # Inherited @@ -156,7 +156,7 @@ class Matter_Plugin_Fan : Matter_Plugin_Device if attribute == 0x0000 # ---------- FanMode / enum8 ---------- if type(write_data) == 'int' self.set_fan_mode(write_data) - self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct) + self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct, 'FanSpeed255', tasmota.scale_uint(self.shadow_fan_speed_pct, 0, 100, 0, 255)) return true else ctx.status = matter.CONSTRAINT_ERROR @@ -165,7 +165,7 @@ class Matter_Plugin_Fan : Matter_Plugin_Device elif attribute == 0x0002 # ---------- PercentSetting / enum8 ---------- if type(write_data) == 'int' self.set_fan_speed_pct(write_data) - self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct) + self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct, 'FanSpeed255', tasmota.scale_uint(self.shadow_fan_speed_pct, 0, 100, 0, 255)) return true else ctx.status = matter.CONSTRAINT_ERROR @@ -187,6 +187,10 @@ class Matter_Plugin_Fan : Matter_Plugin_Device if val_fan_mode != nil self.set_fan_mode(int(val_fan_mode)) end + var val_fan_speed255 = payload.find("FanSpeed255") + if val_fan_speed255 != nil + self.set_fan_speed_pct(tasmota.scale_uint(int(val_fan_speed255), 0, 255, 0, 100)) + end var val_fan_speed = payload.find("FanSpeed") if val_fan_speed != nil self.set_fan_speed_pct(int(val_fan_speed)) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h index 739c5d9f4..dcb7f62ad 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h @@ -93,7 +93,7 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_mode, /* name */ extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ be_nested_proto( - 8, /* nstack */ + 13, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -101,16 +101,20 @@ be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Fan, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(find), /* K1 */ be_nested_str_weak(FanMode), /* K2 */ be_nested_str_weak(set_fan_mode), - /* K3 */ be_nested_str_weak(FanSpeed), + /* K3 */ be_nested_str_weak(FanSpeed255), /* K4 */ be_nested_str_weak(set_fan_speed_pct), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(scale_uint), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(FanSpeed), }), be_str_weak(update_virtual), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ + ( &(const binstruction[41]) { /* code */ 0x8C080300, // 0000 GETMET R2 R1 K0 0x58100001, // 0001 LDCONST R4 K1 0x7C080400, // 0002 CALL R2 2 @@ -127,13 +131,31 @@ be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ 0x7C0C0400, // 000D CALL R3 2 0x4C100000, // 000E LDNIL R4 0x20100604, // 000F NE R4 R3 R4 - 0x78120004, // 0010 JMPF R4 #0016 + 0x7812000B, // 0010 JMPF R4 #001D 0x8C100104, // 0011 GETMET R4 R0 K4 - 0x60180009, // 0012 GETGBL R6 G9 - 0x5C1C0600, // 0013 MOVE R7 R3 - 0x7C180200, // 0014 CALL R6 1 - 0x7C100400, // 0015 CALL R4 2 - 0x80000000, // 0016 RET 0 + 0xB81A0A00, // 0012 GETNGBL R6 K5 + 0x8C180D06, // 0013 GETMET R6 R6 K6 + 0x60200009, // 0014 GETGBL R8 G9 + 0x5C240600, // 0015 MOVE R9 R3 + 0x7C200200, // 0016 CALL R8 1 + 0x58240007, // 0017 LDCONST R9 K7 + 0x542A00FE, // 0018 LDINT R10 255 + 0x582C0007, // 0019 LDCONST R11 K7 + 0x54320063, // 001A LDINT R12 100 + 0x7C180C00, // 001B CALL R6 6 + 0x7C100400, // 001C CALL R4 2 + 0x8C100300, // 001D GETMET R4 R1 K0 + 0x58180008, // 001E LDCONST R6 K8 + 0x7C100400, // 001F CALL R4 2 + 0x4C140000, // 0020 LDNIL R5 + 0x20140805, // 0021 NE R5 R4 R5 + 0x78160004, // 0022 JMPF R5 #0028 + 0x8C140104, // 0023 GETMET R5 R0 K4 + 0x601C0009, // 0024 GETGBL R7 G9 + 0x5C200800, // 0025 MOVE R8 R4 + 0x7C1C0200, // 0026 CALL R7 1 + 0x7C140400, // 0027 CALL R5 2 + 0x80000000, // 0028 RET 0 }) ) ); @@ -222,7 +244,7 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ be_nested_proto( - 13, /* nstack */ + 21, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -230,7 +252,7 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Fan, 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ + ( &(const bvalue[20]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -244,30 +266,33 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ /* K10 */ be_nested_str_weak(shadow_fan_mode), /* K11 */ be_nested_str_weak(FanSpeed), /* K12 */ be_nested_str_weak(shadow_fan_speed_pct), - /* K13 */ be_nested_str_weak(status), - /* K14 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(set_fan_speed_pct), + /* K13 */ be_nested_str_weak(FanSpeed255), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(scale_uint), + /* K16 */ be_nested_str_weak(status), + /* K17 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K18 */ be_const_int(2), + /* K19 */ be_nested_str_weak(set_fan_speed_pct), }), be_str_weak(write_attribute), &be_const_str_solidified, - ( &(const binstruction[60]) { /* code */ + ( &(const binstruction[78]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E0201, // 0004 LDINT R7 514 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0032, // 0006 JMPF R7 #003A + 0x781E0044, // 0006 JMPF R7 #004C 0x8C1C0104, // 0007 GETMET R7 R0 K4 0x7C1C0200, // 0008 CALL R7 1 0x1C1C0D05, // 0009 EQ R7 R6 K5 - 0x781E0016, // 000A JMPF R7 #0022 + 0x781E001F, // 000A JMPF R7 #002B 0x601C0004, // 000B GETGBL R7 G4 0x5C200600, // 000C MOVE R8 R3 0x7C1C0200, // 000D CALL R7 1 0x1C1C0F06, // 000E EQ R7 R7 K6 - 0x781E000B, // 000F JMPF R7 #001C + 0x781E0014, // 000F JMPF R7 #0025 0x8C1C0107, // 0010 GETMET R7 R0 K7 0x5C240600, // 0011 MOVE R9 R3 0x7C1C0400, // 0012 CALL R7 2 @@ -276,42 +301,60 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ 0x8828010A, // 0015 GETMBR R10 R0 K10 0x582C000B, // 0016 LDCONST R11 K11 0x8830010C, // 0017 GETMBR R12 R0 K12 - 0x7C1C0A00, // 0018 CALL R7 5 - 0x501C0200, // 0019 LDBOOL R7 1 0 - 0x80040E00, // 001A RET 1 R7 - 0x70020004, // 001B JMP #0021 - 0xB81E0000, // 001C GETNGBL R7 K0 - 0x881C0F0E, // 001D GETMBR R7 R7 K14 - 0x900A1A07, // 001E SETMBR R2 K13 R7 - 0x501C0000, // 001F LDBOOL R7 0 0 - 0x80040E00, // 0020 RET 1 R7 - 0x70020017, // 0021 JMP #003A - 0x1C1C0D0F, // 0022 EQ R7 R6 K15 - 0x781E0015, // 0023 JMPF R7 #003A - 0x601C0004, // 0024 GETGBL R7 G4 - 0x5C200600, // 0025 MOVE R8 R3 - 0x7C1C0200, // 0026 CALL R7 1 - 0x1C1C0F06, // 0027 EQ R7 R7 K6 - 0x781E000B, // 0028 JMPF R7 #0035 - 0x8C1C0110, // 0029 GETMET R7 R0 K16 - 0x5C240600, // 002A MOVE R9 R3 - 0x7C1C0400, // 002B CALL R7 2 - 0x8C1C0108, // 002C GETMET R7 R0 K8 - 0x58240009, // 002D LDCONST R9 K9 - 0x8828010A, // 002E GETMBR R10 R0 K10 - 0x582C000B, // 002F LDCONST R11 K11 - 0x8830010C, // 0030 GETMBR R12 R0 K12 - 0x7C1C0A00, // 0031 CALL R7 5 - 0x501C0200, // 0032 LDBOOL R7 1 0 - 0x80040E00, // 0033 RET 1 R7 - 0x70020004, // 0034 JMP #003A - 0xB81E0000, // 0035 GETNGBL R7 K0 - 0x881C0F0E, // 0036 GETMBR R7 R7 K14 - 0x900A1A07, // 0037 SETMBR R2 K13 R7 - 0x501C0000, // 0038 LDBOOL R7 0 0 - 0x80040E00, // 0039 RET 1 R7 - 0x4C1C0000, // 003A LDNIL R7 - 0x80040E00, // 003B RET 1 R7 + 0x5834000D, // 0018 LDCONST R13 K13 + 0xB83A1C00, // 0019 GETNGBL R14 K14 + 0x8C381D0F, // 001A GETMET R14 R14 K15 + 0x8840010C, // 001B GETMBR R16 R0 K12 + 0x58440005, // 001C LDCONST R17 K5 + 0x544A0063, // 001D LDINT R18 100 + 0x584C0005, // 001E LDCONST R19 K5 + 0x545200FE, // 001F LDINT R20 255 + 0x7C380C00, // 0020 CALL R14 6 + 0x7C1C0E00, // 0021 CALL R7 7 + 0x501C0200, // 0022 LDBOOL R7 1 0 + 0x80040E00, // 0023 RET 1 R7 + 0x70020004, // 0024 JMP #002A + 0xB81E0000, // 0025 GETNGBL R7 K0 + 0x881C0F11, // 0026 GETMBR R7 R7 K17 + 0x900A2007, // 0027 SETMBR R2 K16 R7 + 0x501C0000, // 0028 LDBOOL R7 0 0 + 0x80040E00, // 0029 RET 1 R7 + 0x70020020, // 002A JMP #004C + 0x1C1C0D12, // 002B EQ R7 R6 K18 + 0x781E001E, // 002C JMPF R7 #004C + 0x601C0004, // 002D GETGBL R7 G4 + 0x5C200600, // 002E MOVE R8 R3 + 0x7C1C0200, // 002F CALL R7 1 + 0x1C1C0F06, // 0030 EQ R7 R7 K6 + 0x781E0014, // 0031 JMPF R7 #0047 + 0x8C1C0113, // 0032 GETMET R7 R0 K19 + 0x5C240600, // 0033 MOVE R9 R3 + 0x7C1C0400, // 0034 CALL R7 2 + 0x8C1C0108, // 0035 GETMET R7 R0 K8 + 0x58240009, // 0036 LDCONST R9 K9 + 0x8828010A, // 0037 GETMBR R10 R0 K10 + 0x582C000B, // 0038 LDCONST R11 K11 + 0x8830010C, // 0039 GETMBR R12 R0 K12 + 0x5834000D, // 003A LDCONST R13 K13 + 0xB83A1C00, // 003B GETNGBL R14 K14 + 0x8C381D0F, // 003C GETMET R14 R14 K15 + 0x8840010C, // 003D GETMBR R16 R0 K12 + 0x58440005, // 003E LDCONST R17 K5 + 0x544A0063, // 003F LDINT R18 100 + 0x584C0005, // 0040 LDCONST R19 K5 + 0x545200FE, // 0041 LDINT R20 255 + 0x7C380C00, // 0042 CALL R14 6 + 0x7C1C0E00, // 0043 CALL R7 7 + 0x501C0200, // 0044 LDBOOL R7 1 0 + 0x80040E00, // 0045 RET 1 R7 + 0x70020004, // 0046 JMP #004C + 0xB81E0000, // 0047 GETNGBL R7 K0 + 0x881C0F11, // 0048 GETMBR R7 R7 K17 + 0x900A2007, // 0049 SETMBR R2 K16 R7 + 0x501C0000, // 004A LDBOOL R7 0 0 + 0x80040E00, // 004B RET 1 R7 + 0x4C1C0000, // 004C LDNIL R7 + 0x80040E00, // 004D RET 1 R7 }) ) ); @@ -459,10 +502,11 @@ be_local_class(Matter_Plugin_Fan, { be_const_key_weak(read_attribute, 3), be_const_closure(class_Matter_Plugin_Fan_read_attribute_closure) }, { be_const_key_weak(TYPE, 0), be_nested_str_weak(fan) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(2, + be_const_list( * be_nested_list(3, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(FanMode), be_nested_str_weak(FanSpeed), + be_nested_str_weak(FanSpeed255), })) ) } )) }, { be_const_key_weak(shadow_fan_speed_pct, -1), be_const_var(1) }, { be_const_key_weak(set_fan_speed_pct, -1), be_const_closure(class_Matter_Plugin_Fan_set_fan_speed_pct_closure) }, From 94aded8d5ce92115821802224cbdb961414543fd Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 15 Jun 2024 13:59:17 +0200 Subject: [PATCH 062/252] Update changelogs --- CHANGELOG.md | 6 +++--- RELEASENOTES.md | 3 +++ tasmota/language/af_AF.h | 18 ++++++++++++++++++ tasmota/language/bg_BG.h | 18 ++++++++++++++++++ tasmota/language/ca_AD.h | 18 ++++++++++++++++++ tasmota/language/cs_CZ.h | 18 ++++++++++++++++++ tasmota/language/de_DE.h | 18 ++++++++++++++++++ tasmota/language/el_GR.h | 18 ++++++++++++++++++ tasmota/language/en_GB.h | 18 ++++++++++++++++++ tasmota/language/es_ES.h | 18 ++++++++++++++++++ tasmota/language/fr_FR.h | 18 ++++++++++++++++++ tasmota/language/fy_NL.h | 18 ++++++++++++++++++ tasmota/language/he_HE.h | 18 ++++++++++++++++++ tasmota/language/hu_HU.h | 18 ++++++++++++++++++ tasmota/language/it_IT.h | 18 ++++++++++++++++++ tasmota/language/ko_KO.h | 18 ++++++++++++++++++ tasmota/language/nl_NL.h | 18 ++++++++++++++++++ tasmota/language/pl_PL.h | 18 ++++++++++++++++++ tasmota/language/pt_BR.h | 18 ++++++++++++++++++ tasmota/language/pt_PT.h | 18 ++++++++++++++++++ tasmota/language/ro_RO.h | 18 ++++++++++++++++++ tasmota/language/ru_RU.h | 18 ++++++++++++++++++ tasmota/language/sk_SK.h | 18 ++++++++++++++++++ tasmota/language/sv_SE.h | 18 ++++++++++++++++++ tasmota/language/tr_TR.h | 18 ++++++++++++++++++ tasmota/language/uk_UA.h | 18 ++++++++++++++++++ tasmota/language/vi_VN.h | 18 ++++++++++++++++++ tasmota/language/zh_CN.h | 18 ++++++++++++++++++ tasmota/language/zh_TW.h | 18 ++++++++++++++++++ 29 files changed, 492 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 008adf3e3..ae95810d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,8 @@ All notable changes to this project will be documented in this file. - Berry `classof` extended to class methods (#21615) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) - Matter support for Rain sensor (#21633) -- Matter add internal debug option -- Matter add Fan support (virtual only) +- Matter add internal debug option (#21634) +- Matter add Fan support (virtual only) (#21637) ### Breaking Changed @@ -20,7 +20,7 @@ All notable changes to this project will be documented in this file. - NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) ### Fixed -- Matter interverted attributes 0xFFF9 and 0xFFFB +- Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7b4b2cdf3..fb5f57af5 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -131,6 +131,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) +- Matter add internal debug option [#21634](https://github.com/arendst/Tasmota/issues/21634) +- Matter add Fan support (virtual only) [#21637](https://github.com/arendst/Tasmota/issues/21637) ### Changed - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` @@ -147,5 +149,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Fixed - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) +- Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) ### Removed diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index a10ae1b76..13cbdde3a 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Geen" #define D_SENSOR_USER "Gebruiker" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 4c5d5af53..02d35c195 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Сила на сигнала" #define D_CHIPTEMPERATURE "Температура на чипа" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Няма" #define D_SENSOR_USER "Потребителско" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index b04a2f452..5bbe9ea11 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Nivell del senyal" #define D_CHIPTEMPERATURE "Temperatura del Xip" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Cap" #define D_SENSOR_USER "Usuari" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 8c83fbf7b..bc101d689 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Není" #define D_SENSOR_USER "User" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 6cfe0dcd0..1843b1a35 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signalstärke" #define D_CHIPTEMPERATURE "Chiptemperatur" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "User" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 433f54218..c28ddc011 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Κανένα" #define D_SENSOR_USER "User" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index f0641cfd1..813e248b8 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "User" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 5d980ade0..006b8d0a7 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Señal" #define D_CHIPTEMPERATURE "Temperatura del Chip" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Ninguno" #define D_SENSOR_USER "Por Usuario" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 174800ced..b92fe6aae 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Aucun" #define D_SENSOR_USER "Utilisateur" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index d828fe94c..d705ee5f2 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Gjin" #define D_SENSOR_USER "Brûker" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 1115824ed..f5ed94f1e 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "משתמש" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index ceadce58b..40d7b48f8 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nincs" #define D_SENSOR_USER "User" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 3e7c648ca..d1ca14b20 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Livello segnale" #define D_CHIPTEMPERATURE "Temperatura chip" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nessuno" #define D_SENSOR_USER "Utente" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index f118ce486..007e10ca2 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "없음" #define D_SENSOR_USER "User" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 237d17627..3edb51c8f 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Geen" #define D_SENSOR_USER "Gebruiker" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 02f5ee566..dc320c42f 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Siła sygnału" #define D_CHIPTEMPERATURE "Temperatura Chipa" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Brak" #define D_SENSOR_USER "Użytkownik" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 34827df60..20ec59a28 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Força do sinal" #define D_CHIPTEMPERATURE "Temperatura do CHIP" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nenhum" #define D_SENSOR_USER "Usuário" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index c1b8ac284..2d3495c3f 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nenhum" #define D_SENSOR_USER "Utilizador" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 9560fcfe4..a8ac820a6 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Fără" #define D_SENSOR_USER "Utilizator" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index d7807d77c..35e1df314 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -665,6 +665,24 @@ #define D_SIGNALSTRENGTH "Сила сигнала" #define D_CHIPTEMPERATURE "Температура чипа" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "-нет-" #define D_SENSOR_USER "User" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 6094ef0e4..2350fbd69 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Žiaden" #define D_SENSOR_USER "User" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index ecd2a84ac..fb5115ca7 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Ingen" #define D_SENSOR_USER "User" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index c30440d34..4fa1121bc 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "User" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index d02250694..ac248bf8e 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Немає" #define D_SENSOR_USER "Користувач" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index e62e015d2..5cdea438a 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Không dùng" #define D_SENSOR_USER "Người Dùng" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 438ec7166..6eaa9867a 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "无" #define D_SENSOR_USER "User" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 42c64aaf7..1e047a89a 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -664,6 +664,24 @@ #define D_SIGNALSTRENGTH "Signal Strength" #define D_CHIPTEMPERATURE "Chip Temperature" +// xsns_60_GPS +#define D_LATITUDE "Latitude" +#define D_LONGITUDE "Longitude" +#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" +#define D_ALTITUDE "Altitude" +#define D_VERTICAL_ACCURACY "Vertical Accuracy" +#define D_SPEED "Speed" +#define D_SPEED_ACCURACY "Speed Accuracy" +#define D_HEADING "Heading" +#define D_HEADING_ACCURACY "Heading Accuracy" +#define D_SAT_FIX "Satellite Fix" + #define D_SAT_FIX_NO_FIX "None" + #define D_SAT_FIX_DEAD_RECK "Dead reckoning" + #define D_SAT_FIX_2D "2D" + #define D_SAT_FIX_3D "3D" + #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" + #define D_SAT_FIX_TIME "Time only fix" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "無" #define D_SENSOR_USER "使用者" From 711e28392500b3fa1b7b14e599fbb0cbb99e23ca Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 15 Jun 2024 15:48:24 +0200 Subject: [PATCH 063/252] allow define wifi credentials in pio (#21640) --- tasmota/my_user_config.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index d2a13c280..60efbee49 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -71,11 +71,21 @@ #define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS1 IP address (might be equal to WIFI_GATEWAY) #define WIFI_DNS2 "0.0.0.0" // [IpAddress5] If not using DHCP set DNS2 IP address (might be equal to WIFI_GATEWAY) +#ifndef STA_SSID1 #define STA_SSID1 "" // [Ssid1] Wi-Fi SSID +#endif +#ifndef STA_PASS1 #define STA_PASS1 "" // [Password1] Wi-Fi password +#endif +#ifndef STA_SSID2 #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wi-Fi SSID +#endif +#ifndef STA_PASS2 #define STA_PASS2 "" // [Password2] Optional alternate AP Wi-Fi password +#endif +#ifndef WIFI_AP_PASSPHRASE #define WIFI_AP_PASSPHRASE "" // AccessPoint passphrase. For WPA2 min 8 char, for open use "" (max 63 char). +#endif #define WIFI_CONFIG_TOOL WIFI_RETRY // [WifiConfig] Default tool if Wi-Fi fails to connect (default option: 4 - WIFI_RETRY) // (WIFI_RESTART, WIFI_MANAGER, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY) // The configuration can be changed after first setup using WifiConfig 0, 2, 4, 5, 6 and 7. From 9499211d7db9ecd7597fbba4f8e9ebae42f94bf0 Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Sat, 15 Jun 2024 15:49:06 +0200 Subject: [PATCH 064/252] Upload Italian language (#21641) --- tasmota/language/it_IT.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index d1ca14b20..ed2984e64 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -665,22 +665,22 @@ #define D_CHIPTEMPERATURE "Temperatura chip" // xsns_60_GPS -#define D_LATITUDE "Latitude" -#define D_LONGITUDE "Longitude" -#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" -#define D_ALTITUDE "Altitude" -#define D_VERTICAL_ACCURACY "Vertical Accuracy" -#define D_SPEED "Speed" -#define D_SPEED_ACCURACY "Speed Accuracy" -#define D_HEADING "Heading" -#define D_HEADING_ACCURACY "Heading Accuracy" -#define D_SAT_FIX "Satellite Fix" - #define D_SAT_FIX_NO_FIX "None" - #define D_SAT_FIX_DEAD_RECK "Dead reckoning" - #define D_SAT_FIX_2D "2D" - #define D_SAT_FIX_3D "3D" - #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" - #define D_SAT_FIX_TIME "Time only fix" +#define D_LATITUDE "Latitudine" +#define D_LONGITUDE "Longitudine" +#define D_HORIZONTAL_ACCURACY "Precisione orizzontale" +#define D_ALTITUDE "Altitudine" +#define D_VERTICAL_ACCURACY "Precisione verticale" +#define D_SPEED "Velocità" +#define D_SPEED_ACCURACY "Precisione velocità" +#define D_HEADING "Direzione" +#define D_HEADING_ACCURACY "Precisione direzione" +#define D_SAT_FIX "Aggancio satelliti" +#define D_SAT_FIX_NO_FIX "Nessuno" +#define D_SAT_FIX_DEAD_RECK "Navigazione stimata" +#define D_SAT_FIX_2D "2D" +#define D_SAT_FIX_3D "3D" +#define D_SAT_FIX_GPS_DEAD "GPS e navigazione stimata" +#define D_SAT_FIX_TIME "Solo corrzione orario" // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nessuno" From d3f8afed29affe28935240ffe19d1b5634b0243c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 15 Jun 2024 16:52:42 +0200 Subject: [PATCH 065/252] Fix GPS_VELOCITY (#18035) --- tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino | 77 +++++++++------------ 1 file changed, 31 insertions(+), 46 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino index d37e4cf0c..73b307450 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino @@ -856,31 +856,23 @@ void UBXLoop(void) #endif //USE_FLOG const char HTTP_SNS_NTPSERVER[] PROGMEM = "{s} NTP server {m}active{e}"; - const char HTTP_SNS_GPS[] PROGMEM = "{s} GPS latitude {m}%s{e}" - "{s} GPS longitude {m}%s{e}" - "{s} GPS altitude {m}%s m{e}" - "{s} GPS hor. Accuracy {m}%s m{e}" - "{s} GPS vert. Accuracy {m}%s m{e}" - "{s} GPS sat-fix status {m}%s{e}" + const char HTTP_SNS_GPS[] PROGMEM = "{s}GPS " D_LATITUDE "{m}%s{e}" + "{s}GPS " D_LONGITUDE "{m}%s{e}" + "{s}GPS " D_ALTITUDE "{m}%3_f " D_UNIT_METER "{e}" + "{s}GPS " D_HORIZONTAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}" + "{s}GPS " D_VERTICAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}" + "{s}GPS " D_SAT_FIX "{m}%s{e}"; #ifdef USE_GPS_VELOCITY - "{s} GPS Speed {m}%s{e}" - "{s} GPS Heading {m}%s{e}" - "{s} GPS Heading Acc {m}%s{e}" - "{s} GPS Speed Acc {m}%s{e}" + const char HTTP_SNS_GPS2[] PROGMEM = "{s}GPS " D_SPEED "{m}%1_f{e}" + "{s}GPS " D_HEADING "{m}%1_f{e}" + "{s}GPS " D_HEADING_ACCURACY "{m}%2_f{e}" + "{s}GPS " D_SPEED_ACCURACY "{m}%2_f{e}"; #endif - ; - const char kGPSFix0[] PROGMEM = "no fix"; - const char kGPSFix1[] PROGMEM = "dead reckoning only"; - const char kGPSFix2[] PROGMEM = "2D-fix"; - const char kGPSFix3[] PROGMEM = "3D-fix"; - const char kGPSFix4[] PROGMEM = "GPS + dead reckoning combined"; - const char kGPSFix5[] PROGMEM = "Time only fix"; - const char * kGPSFix[] PROGMEM ={kGPSFix0, kGPSFix1, kGPSFix2, kGPSFix3, kGPSFix4, kGPSFix5}; +const char kGPSFix[] PROGMEM = D_SAT_FIX_NO_FIX "|" D_SAT_FIX_DEAD_RECK "|" D_SAT_FIX_2D "|" D_SAT_FIX_3D "|" D_SAT_FIX_GPS_DEAD "|" D_SAT_FIX_TIME; // const char UBX_GOOGLE_MAPS[] =""; - #endif // USE_WEBSERVER /********************************************************************************************/ @@ -888,51 +880,44 @@ void UBXLoop(void) void UBXShow(bool json) { char lat[12]; - char lon[12]; - char alt[12]; - char hAcc[12]; - char vAcc[12]; - #ifdef USE_GPS_VELOCITY - char spd[12]; - char hdng[12]; - char cAcc[12]; - char sAcc[12]; - #endif dtostrfd((double)UBX.rec_buffer.values.lat/10000000.0f,7,lat); + char lon[12]; dtostrfd((double)UBX.rec_buffer.values.lon/10000000.0f,7,lon); - dtostrfd((double)UBX.state.last_alt/1000.0f,3,alt); - dtostrfd((double)UBX.state.last_vAcc/1000.0f,3,hAcc); - dtostrfd((double)UBX.state.last_hAcc/1000.0f,3,vAcc); - #ifdef USE_GPS_VELOCITY - dtostrfd((double)UBX.Message.navVel.gSpeed/27.778f,1,spd); - dtostrfd((double)UBX.Message.navVel.heading/100000.0f,1,hdng); - dtostrfd((double)UBX.Message.navVel.cAcc/100000.0f,2,cAcc); - dtostrfd((double)UBX.Message.navVel.sAcc/100000.0f,2,sAcc); - #endif + float alt = (float)UBX.state.last_alt / 1000.0f; + float hAcc = (float)UBX.state.last_vAcc / 1000.0f; + float vAcc = (float)UBX.state.last_hAcc / 1000.0f; + char fix[32]; + GetTextIndexed(fix, sizeof(fix), UBX.state.gpsFix, kGPSFix); +#ifdef USE_GPS_VELOCITY + float spd = (float)UBX.Message.navVel.gSpeed / 27.778f; + float hdng = (float)UBX.Message.navVel.heading / 100000.0f; + float cAcc = (float)UBX.Message.navVel.cAcc / 100000.0f; + float sAcc = (float)UBX.Message.navVel.sAcc / 100000.0f; +#endif if (json) { ResponseAppend_P(PSTR(",\"GPS\":{")); if (UBX.mode.send_UI_only) { uint32_t i = UBX.state.log_interval / 10; - ResponseAppend_P(PSTR("\"fil\":%u,\"int\":%u}"), UBX.mode.filter_noise, i); + ResponseAppend_P(PSTR("\"Fil\":%u,\"Int\":%u}"), UBX.mode.filter_noise, i); } else { - ResponseAppend_P(PSTR("\"lat\":%s,\"lon\":%s,\"alt\":%s,\"hAcc\":%s,\"vAcc\":%s,\"fix\":\"%s\""), lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix]); + ResponseAppend_P(PSTR("\"Lat\":%s,\"Lon\":%s,\"Alt\":%3_f,\"hAcc\":%3_f,\"vAcc\":%3_f,\"Fix\":\"%s\""), + lat, lon, &alt, &hAcc, &vAcc, fix); #ifdef USE_GPS_VELOCITY - ResponseAppend_P(PSTR(,\"spd\":%s,\"hdng\":%s,\"cAcc\":%s,\"sAcc\":%s"), spd, hdng, cAcc, sAcc); + ResponseAppend_P(PSTR(",\"Spd\":%1_f,\"Hdng\":%1_f,\"cAcc\":%2_f,\"sAcc\":%2_f"), + &spd, &hdng, &cAcc, &sAcc); #endif ResponseAppend_P(PSTR("}")); } #ifdef USE_FLOG - ResponseAppend_P(PSTR(",\"FLOG\":{\"rec\":%u,\"mode\":%u,\"sec\":%u}"), Flog->recording, Flog->mode, Flog->sectors_left); + ResponseAppend_P(PSTR(",\"FLOG\":{\"Rec\":%u,\"Mode\":%u,\"Sec\":%u}"), Flog->recording, Flog->mode, Flog->sectors_left); #endif //USE_FLOG UBX.mode.send_UI_only = false; #ifdef USE_WEBSERVER } else { + WSContentSend_PD(HTTP_SNS_GPS, lat, lon, &alt, &hAcc, &vAcc, fix); #ifdef USE_GPS_VELOCITY - WSContentSend_PD(HTTP_SNS_GPS, lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix], spd, hdng, cAcc, sAcc); -#endif -#ifndef USE_GPS_VELOCITY - WSContentSend_PD(HTTP_SNS_GPS, lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix]); + WSContentSend_PD(HTTP_SNS_GPS2, &spd, &hdng, &cAcc, &sAcc); #endif //WSContentSend_P(UBX_GOOGLE_MAPS, lat, lon); #ifdef DEBUG_TASMOTA_SENSOR From bdfe3524a918e68224a432cf64b4cc56b3a5338c Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 15 Jun 2024 23:11:48 +0200 Subject: [PATCH 066/252] Matter CASE Sigma1 resumption mode for faster reconnection (#21644) --- CHANGELOG.md | 1 + .../src/embedded/Matter_Commissioning.be | 15 +- .../solidified_Matter_Commissioning.h | 1039 +++++++++-------- 3 files changed, 541 insertions(+), 514 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae95810d5..5e1dde61d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ All notable changes to this project will be documented in this file. ### Fixed - Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) +- Matter CASE Sigma1 resumption mode for faster reconnection ### Removed diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be index 024b1bb53..7330292ce 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be @@ -334,9 +334,6 @@ class Matter_Commisioning_Context # find session var is_resumption = (sigma1.resumptionID != nil && sigma1.initiatorResumeMIC != nil) - # log(format("MTR: is_resumption=%i", is_resumption ? 1 : 0), 4) - # TODO disable resumption until fixed - is_resumption = false # Check that it's a resumption var session_resumption @@ -344,6 +341,7 @@ class Matter_Commisioning_Context session_resumption = self.device.sessions.find_session_by_resumption_id(sigma1.resumptionID) # log(format("MTR: session_resumption found session=%s session_resumption=%s", matter.inspect(session), matter.inspect(session_resumption)), 4) if session_resumption == nil || session_resumption._fabric == nil + log(f"MTR: Sigma1 Resumption FAILED, session not found resumption_id={sigma1.resumptionID}", 3) is_resumption = false end end @@ -363,6 +361,8 @@ class Matter_Commisioning_Context var decrypted_tag = ec.tag() # log("****************************************", 4) + # log("MTR: * initiatorRandom = " + sigma1.initiatorRandom.tohex(), 4) + # log("MTR: * ResumptionID = " + session_resumption.resumption_id.tohex(), 4) # log("MTR: * s1rk = " + s1rk.tohex(), 4) # log("MTR: * tag = " + tag.tohex(), 4) # log("MTR: * Resume1MICPayload = " + Resume1MICPayload.tohex(), 4) @@ -392,8 +392,8 @@ class Matter_Commisioning_Context var sigma2resume = matter.Sigma2Resume() sigma2resume.resumptionID = session.resumption_id - sigma2resume.responderSessionID = session.__future_local_session_id sigma2resume.sigma2ResumeMIC = Resume2MIC + sigma2resume.responderSessionID = session.__future_local_session_id # log("****************************************", 4) # log("MTR: * s2rk = " + s2rk.tohex(), 4) @@ -403,8 +403,10 @@ class Matter_Commisioning_Context # log("MTR: * sigma2ResumeMIC = " + Resume2MIC.tohex(), 4) # log("****************************************", 4) # # compute session key, p.178 + var salt_sessions = sigma1.initiatorRandom + session_resumption.resumption_id + # log("MTR: * salt_session = " + salt_sessions.tohex(), 4) var session_keys = crypto.HKDF_SHA256().derive(session.shared_secret #- input key -#, - sigma1.initiatorRandom + session.resumption_id #- salt -#, + salt_sessions #- salt -#, bytes().fromstring("SessionResumptionKeys") #- info -#, 48) var i2r = session_keys[0..15] @@ -431,6 +433,7 @@ class Matter_Commisioning_Context session.close() session.set_keys(i2r, r2i, ac, created) + session.peer_node_id = session_resumption.peer_node_id # copy peer_node_id from session # CASE Session completed, persist it session._breadcrumb = 0 # clear breadcrumb @@ -440,8 +443,10 @@ class Matter_Commisioning_Context session.persist_to_fabric() session.save() + log("MTR: Sigma1 Resumption SUCCEEDED", 3) return true else + log("MTR: Sigma1 Resumption FAILED, switching to CASE", 3) is_resumption = false # fall through normal sigma1 (non-resumption) end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index 2582429b2..24421debc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -1366,7 +1366,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ be_nested_proto( - 36, /* nstack */ + 37, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1374,7 +1374,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[103]) { /* constants */ + ( &(const bvalue[107]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(opcode), @@ -1400,88 +1400,92 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ /* K22 */ be_nested_str_weak(sessions), /* K23 */ be_nested_str_weak(find_session_by_resumption_id), /* K24 */ be_nested_str_weak(_fabric), - /* K25 */ be_nested_str_weak(initiatorRandom), - /* K26 */ be_nested_str_weak(fromstring), - /* K27 */ be_nested_str_weak(Sigma1_Resume), - /* K28 */ be_nested_str_weak(HKDF_SHA256), - /* K29 */ be_nested_str_weak(derive), - /* K30 */ be_nested_str_weak(shared_secret), - /* K31 */ be_nested_str_weak(NCASE_SigmaS1), - /* K32 */ be_const_int(2147483647), - /* K33 */ be_nested_str_weak(AES_CCM), - /* K34 */ be_nested_str_weak(decrypt), - /* K35 */ be_nested_str_weak(tag), - /* K36 */ be_nested_str_weak(_source_node_id), - /* K37 */ be_nested_str_weak(source_node_id), - /* K38 */ be_nested_str_weak(set_mode_CASE), - /* K39 */ be_nested_str_weak(__future_initiator_session_id), - /* K40 */ be_nested_str_weak(initiator_session_id), - /* K41 */ be_nested_str_weak(__future_local_session_id), - /* K42 */ be_nested_str_weak(gen_local_session_id), - /* K43 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K44 */ be_nested_str_weak(remote_ip), - /* K45 */ be_nested_str_weak(remote_port), - /* K46 */ be_nested_str_weak(resumption_id), - /* K47 */ be_nested_str_weak(random), - /* K48 */ be_nested_str_weak(Sigma2_Resume), - /* K49 */ be_nested_str_weak(NCASE_SigmaS2), - /* K50 */ be_nested_str_weak(Sigma2Resume), - /* K51 */ be_nested_str_weak(responderSessionID), + /* K25 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), + /* K26 */ be_nested_str_weak(initiatorRandom), + /* K27 */ be_nested_str_weak(fromstring), + /* K28 */ be_nested_str_weak(Sigma1_Resume), + /* K29 */ be_nested_str_weak(HKDF_SHA256), + /* K30 */ be_nested_str_weak(derive), + /* K31 */ be_nested_str_weak(shared_secret), + /* K32 */ be_nested_str_weak(NCASE_SigmaS1), + /* K33 */ be_const_int(2147483647), + /* K34 */ be_nested_str_weak(AES_CCM), + /* K35 */ be_nested_str_weak(decrypt), + /* K36 */ be_nested_str_weak(tag), + /* K37 */ be_nested_str_weak(_source_node_id), + /* K38 */ be_nested_str_weak(source_node_id), + /* K39 */ be_nested_str_weak(set_mode_CASE), + /* K40 */ be_nested_str_weak(__future_initiator_session_id), + /* K41 */ be_nested_str_weak(initiator_session_id), + /* K42 */ be_nested_str_weak(__future_local_session_id), + /* K43 */ be_nested_str_weak(gen_local_session_id), + /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K45 */ be_nested_str_weak(remote_ip), + /* K46 */ be_nested_str_weak(remote_port), + /* K47 */ be_nested_str_weak(resumption_id), + /* K48 */ be_nested_str_weak(random), + /* K49 */ be_nested_str_weak(Sigma2_Resume), + /* K50 */ be_nested_str_weak(NCASE_SigmaS2), + /* K51 */ be_nested_str_weak(Sigma2Resume), /* K52 */ be_nested_str_weak(sigma2ResumeMIC), - /* K53 */ be_nested_str_weak(SessionResumptionKeys), - /* K54 */ be_nested_str_weak(tasmota), - /* K55 */ be_nested_str_weak(rtc_utc), - /* K56 */ be_nested_str_weak(tlv2raw), - /* K57 */ be_nested_str_weak(__Msg1), - /* K58 */ be_nested_str_weak(build_response), - /* K59 */ be_nested_str_weak(encode_frame), - /* K60 */ be_nested_str_weak(responder), - /* K61 */ be_nested_str_weak(send_response_frame), - /* K62 */ be_nested_str_weak(close), - /* K63 */ be_nested_str_weak(set_keys), - /* K64 */ be_nested_str_weak(_breadcrumb), - /* K65 */ be_nested_str_weak(counter_snd_next), - /* K66 */ be_nested_str_weak(set_persist), - /* K67 */ be_nested_str_weak(set_no_expiration), - /* K68 */ be_nested_str_weak(persist_to_fabric), - /* K69 */ be_nested_str_weak(save), - /* K70 */ be_nested_str_weak(find_fabric_by_destination_id), - /* K71 */ be_nested_str_weak(destinationId), - /* K72 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), - /* K73 */ be_nested_str_weak(__responder_priv), - /* K74 */ be_nested_str_weak(__responder_pub), - /* K75 */ be_nested_str_weak(EC_P256), - /* K76 */ be_nested_str_weak(public_key), - /* K77 */ be_nested_str_weak(shared_key), - /* K78 */ be_nested_str_weak(TLV), - /* K79 */ be_nested_str_weak(Matter_TLV_struct), - /* K80 */ be_nested_str_weak(add_TLV), - /* K81 */ be_nested_str_weak(B2), - /* K82 */ be_nested_str_weak(get_noc), - /* K83 */ be_nested_str_weak(get_icac), - /* K84 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K85 */ be_nested_str_weak(get_pk), - /* K86 */ be_nested_str_weak(Msg1), - /* K87 */ be_nested_str_weak(SHA256), - /* K88 */ be_nested_str_weak(update), - /* K89 */ be_nested_str_weak(out), - /* K90 */ be_nested_str_weak(S2K_Info), - /* K91 */ be_nested_str_weak(get_ipk_group_key), - /* K92 */ be_nested_str_weak(TBEData2_Nonce), - /* K93 */ be_nested_str_weak(encrypt), - /* K94 */ be_nested_str_weak(Sigma2), - /* K95 */ be_nested_str_weak(responderRandom), - /* K96 */ be_nested_str_weak(responderSessionId), - /* K97 */ be_nested_str_weak(responderEphPubKey), - /* K98 */ be_nested_str_weak(encrypted2), - /* K99 */ be_nested_str_weak(__Msg2), - /* K100 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K101 */ be_nested_str_weak(_ip), - /* K102 */ be_nested_str_weak(_port), + /* K53 */ be_nested_str_weak(responderSessionID), + /* K54 */ be_nested_str_weak(SessionResumptionKeys), + /* K55 */ be_nested_str_weak(tasmota), + /* K56 */ be_nested_str_weak(rtc_utc), + /* K57 */ be_nested_str_weak(tlv2raw), + /* K58 */ be_nested_str_weak(__Msg1), + /* K59 */ be_nested_str_weak(build_response), + /* K60 */ be_nested_str_weak(encode_frame), + /* K61 */ be_nested_str_weak(responder), + /* K62 */ be_nested_str_weak(send_response_frame), + /* K63 */ be_nested_str_weak(close), + /* K64 */ be_nested_str_weak(set_keys), + /* K65 */ be_nested_str_weak(peer_node_id), + /* K66 */ be_nested_str_weak(_breadcrumb), + /* K67 */ be_nested_str_weak(counter_snd_next), + /* K68 */ be_nested_str_weak(set_persist), + /* K69 */ be_nested_str_weak(set_no_expiration), + /* K70 */ be_nested_str_weak(persist_to_fabric), + /* K71 */ be_nested_str_weak(save), + /* K72 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), + /* K73 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), + /* K74 */ be_nested_str_weak(find_fabric_by_destination_id), + /* K75 */ be_nested_str_weak(destinationId), + /* K76 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), + /* K77 */ be_nested_str_weak(__responder_priv), + /* K78 */ be_nested_str_weak(__responder_pub), + /* K79 */ be_nested_str_weak(EC_P256), + /* K80 */ be_nested_str_weak(public_key), + /* K81 */ be_nested_str_weak(shared_key), + /* K82 */ be_nested_str_weak(TLV), + /* K83 */ be_nested_str_weak(Matter_TLV_struct), + /* K84 */ be_nested_str_weak(add_TLV), + /* K85 */ be_nested_str_weak(B2), + /* K86 */ be_nested_str_weak(get_noc), + /* K87 */ be_nested_str_weak(get_icac), + /* K88 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K89 */ be_nested_str_weak(get_pk), + /* K90 */ be_nested_str_weak(Msg1), + /* K91 */ be_nested_str_weak(SHA256), + /* K92 */ be_nested_str_weak(update), + /* K93 */ be_nested_str_weak(out), + /* K94 */ be_nested_str_weak(S2K_Info), + /* K95 */ be_nested_str_weak(get_ipk_group_key), + /* K96 */ be_nested_str_weak(TBEData2_Nonce), + /* K97 */ be_nested_str_weak(encrypt), + /* K98 */ be_nested_str_weak(Sigma2), + /* K99 */ be_nested_str_weak(responderRandom), + /* K100 */ be_nested_str_weak(responderSessionId), + /* K101 */ be_nested_str_weak(responderEphPubKey), + /* K102 */ be_nested_str_weak(encrypted2), + /* K103 */ be_nested_str_weak(__Msg2), + /* K104 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K105 */ be_nested_str_weak(_ip), + /* K106 */ be_nested_str_weak(_port), }), be_str_weak(parse_Sigma1), &be_const_str_solidified, - ( &(const binstruction[476]) { /* code */ + ( &(const binstruction[493]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -1526,438 +1530,455 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x74160000, // 0029 JMPT R5 #002B 0x50140001, // 002A LDBOOL R5 0 1 0x50140200, // 002B LDBOOL R5 1 0 - 0x50140000, // 002C LDBOOL R5 0 0 - 0x4C180000, // 002D LDNIL R6 - 0x7816000D, // 002E JMPF R5 #003D - 0x881C0115, // 002F GETMBR R7 R0 K21 - 0x881C0F16, // 0030 GETMBR R7 R7 K22 - 0x8C1C0F17, // 0031 GETMET R7 R7 K23 - 0x88240913, // 0032 GETMBR R9 R4 K19 - 0x7C1C0400, // 0033 CALL R7 2 - 0x5C180E00, // 0034 MOVE R6 R7 - 0x4C1C0000, // 0035 LDNIL R7 - 0x1C1C0C07, // 0036 EQ R7 R6 R7 - 0x741E0003, // 0037 JMPT R7 #003C - 0x881C0D18, // 0038 GETMBR R7 R6 K24 - 0x4C200000, // 0039 LDNIL R8 - 0x1C1C0E08, // 003A EQ R7 R7 R8 - 0x781E0000, // 003B JMPF R7 #003D - 0x50140000, // 003C LDBOOL R5 0 0 - 0x781600B4, // 003D JMPF R5 #00F3 - 0x881C0919, // 003E GETMBR R7 R4 K25 - 0x88200913, // 003F GETMBR R8 R4 K19 - 0x001C0E08, // 0040 ADD R7 R7 R8 - 0x60200015, // 0041 GETGBL R8 G21 - 0x7C200000, // 0042 CALL R8 0 - 0x8C20111A, // 0043 GETMET R8 R8 K26 - 0x5828001B, // 0044 LDCONST R10 K27 - 0x7C200400, // 0045 CALL R8 2 - 0x8C24051C, // 0046 GETMET R9 R2 K28 - 0x7C240200, // 0047 CALL R9 1 - 0x8C24131D, // 0048 GETMET R9 R9 K29 - 0x882C0D1E, // 0049 GETMBR R11 R6 K30 - 0x5C300E00, // 004A MOVE R12 R7 - 0x5C341000, // 004B MOVE R13 R8 - 0x543A000F, // 004C LDINT R14 16 - 0x7C240A00, // 004D CALL R9 5 - 0x60280015, // 004E GETGBL R10 G21 - 0x7C280000, // 004F CALL R10 0 - 0x8C28151A, // 0050 GETMET R10 R10 K26 - 0x5830001F, // 0051 LDCONST R12 K31 - 0x7C280400, // 0052 CALL R10 2 - 0x542DFFEE, // 0053 LDINT R11 -17 - 0x402E080B, // 0054 CONNECT R11 K4 R11 - 0x88300914, // 0055 GETMBR R12 R4 K20 - 0x942C180B, // 0056 GETIDX R11 R12 R11 - 0x5435FFEF, // 0057 LDINT R13 -16 - 0x40341B20, // 0058 CONNECT R13 R13 K32 - 0x88380914, // 0059 GETMBR R14 R4 K20 - 0x94301C0D, // 005A GETIDX R12 R14 R13 - 0x8C3C0521, // 005B GETMET R15 R2 K33 - 0x5C441200, // 005C MOVE R17 R9 - 0x5C481400, // 005D MOVE R18 R10 - 0x604C0015, // 005E GETGBL R19 G21 - 0x7C4C0000, // 005F CALL R19 0 - 0x6050000C, // 0060 GETGBL R20 G12 - 0x5C541600, // 0061 MOVE R21 R11 - 0x7C500200, // 0062 CALL R20 1 - 0x5456000F, // 0063 LDINT R21 16 - 0x7C3C0C00, // 0064 CALL R15 6 - 0x5C341E00, // 0065 MOVE R13 R15 - 0x8C3C1B22, // 0066 GETMET R15 R13 K34 - 0x5C441600, // 0067 MOVE R17 R11 - 0x7C3C0400, // 0068 CALL R15 2 - 0x5C381E00, // 0069 MOVE R14 R15 - 0x8C3C1B23, // 006A GETMET R15 R13 K35 - 0x7C3C0200, // 006B CALL R15 1 - 0x1C40180F, // 006C EQ R16 R12 R15 - 0x78420083, // 006D JMPF R16 #00F2 - 0x88400D18, // 006E GETMBR R16 R6 K24 - 0x900E3010, // 006F SETMBR R3 K24 R16 - 0x88400325, // 0070 GETMBR R16 R1 K37 - 0x900E4810, // 0071 SETMBR R3 K36 R16 - 0x8C400726, // 0072 GETMET R16 R3 K38 - 0x7C400200, // 0073 CALL R16 1 - 0x88400928, // 0074 GETMBR R16 R4 K40 - 0x900E4E10, // 0075 SETMBR R3 K39 R16 - 0x88400115, // 0076 GETMBR R16 R0 K21 - 0x88402116, // 0077 GETMBR R16 R16 K22 - 0x8C40212A, // 0078 GETMET R16 R16 K42 + 0x4C180000, // 002C LDNIL R6 + 0x78160014, // 002D JMPF R5 #0043 + 0x881C0115, // 002E GETMBR R7 R0 K21 + 0x881C0F16, // 002F GETMBR R7 R7 K22 + 0x8C1C0F17, // 0030 GETMET R7 R7 K23 + 0x88240913, // 0031 GETMBR R9 R4 K19 + 0x7C1C0400, // 0032 CALL R7 2 + 0x5C180E00, // 0033 MOVE R6 R7 + 0x4C1C0000, // 0034 LDNIL R7 + 0x1C1C0C07, // 0035 EQ R7 R6 R7 + 0x741E0003, // 0036 JMPT R7 #003B + 0x881C0D18, // 0037 GETMBR R7 R6 K24 + 0x4C200000, // 0038 LDNIL R8 + 0x1C1C0E08, // 0039 EQ R7 R7 R8 + 0x781E0007, // 003A JMPF R7 #0043 + 0xB81E0C00, // 003B GETNGBL R7 K6 + 0x60200018, // 003C GETGBL R8 G24 + 0x58240019, // 003D LDCONST R9 K25 + 0x88280913, // 003E GETMBR R10 R4 K19 + 0x7C200400, // 003F CALL R8 2 + 0x58240008, // 0040 LDCONST R9 K8 + 0x7C1C0400, // 0041 CALL R7 2 + 0x50140000, // 0042 LDBOOL R5 0 0 + 0x781600BF, // 0043 JMPF R5 #0104 + 0x881C091A, // 0044 GETMBR R7 R4 K26 + 0x88200913, // 0045 GETMBR R8 R4 K19 + 0x001C0E08, // 0046 ADD R7 R7 R8 + 0x60200015, // 0047 GETGBL R8 G21 + 0x7C200000, // 0048 CALL R8 0 + 0x8C20111B, // 0049 GETMET R8 R8 K27 + 0x5828001C, // 004A LDCONST R10 K28 + 0x7C200400, // 004B CALL R8 2 + 0x8C24051D, // 004C GETMET R9 R2 K29 + 0x7C240200, // 004D CALL R9 1 + 0x8C24131E, // 004E GETMET R9 R9 K30 + 0x882C0D1F, // 004F GETMBR R11 R6 K31 + 0x5C300E00, // 0050 MOVE R12 R7 + 0x5C341000, // 0051 MOVE R13 R8 + 0x543A000F, // 0052 LDINT R14 16 + 0x7C240A00, // 0053 CALL R9 5 + 0x60280015, // 0054 GETGBL R10 G21 + 0x7C280000, // 0055 CALL R10 0 + 0x8C28151B, // 0056 GETMET R10 R10 K27 + 0x58300020, // 0057 LDCONST R12 K32 + 0x7C280400, // 0058 CALL R10 2 + 0x542DFFEE, // 0059 LDINT R11 -17 + 0x402E080B, // 005A CONNECT R11 K4 R11 + 0x88300914, // 005B GETMBR R12 R4 K20 + 0x942C180B, // 005C GETIDX R11 R12 R11 + 0x5435FFEF, // 005D LDINT R13 -16 + 0x40341B21, // 005E CONNECT R13 R13 K33 + 0x88380914, // 005F GETMBR R14 R4 K20 + 0x94301C0D, // 0060 GETIDX R12 R14 R13 + 0x8C3C0522, // 0061 GETMET R15 R2 K34 + 0x5C441200, // 0062 MOVE R17 R9 + 0x5C481400, // 0063 MOVE R18 R10 + 0x604C0015, // 0064 GETGBL R19 G21 + 0x7C4C0000, // 0065 CALL R19 0 + 0x6050000C, // 0066 GETGBL R20 G12 + 0x5C541600, // 0067 MOVE R21 R11 + 0x7C500200, // 0068 CALL R20 1 + 0x5456000F, // 0069 LDINT R21 16 + 0x7C3C0C00, // 006A CALL R15 6 + 0x5C341E00, // 006B MOVE R13 R15 + 0x8C3C1B23, // 006C GETMET R15 R13 K35 + 0x5C441600, // 006D MOVE R17 R11 + 0x7C3C0400, // 006E CALL R15 2 + 0x5C381E00, // 006F MOVE R14 R15 + 0x8C3C1B24, // 0070 GETMET R15 R13 K36 + 0x7C3C0200, // 0071 CALL R15 1 + 0x1C40180F, // 0072 EQ R16 R12 R15 + 0x7842008A, // 0073 JMPF R16 #00FF + 0x88400D18, // 0074 GETMBR R16 R6 K24 + 0x900E3010, // 0075 SETMBR R3 K24 R16 + 0x88400326, // 0076 GETMBR R16 R1 K38 + 0x900E4A10, // 0077 SETMBR R3 K37 R16 + 0x8C400727, // 0078 GETMET R16 R3 K39 0x7C400200, // 0079 CALL R16 1 - 0x900E5210, // 007A SETMBR R3 K41 R16 - 0xB8420C00, // 007B GETNGBL R16 K6 - 0x60440018, // 007C GETGBL R17 G24 - 0x5848002B, // 007D LDCONST R18 K43 - 0x884C0729, // 007E GETMBR R19 R3 K41 - 0x8850032C, // 007F GETMBR R20 R1 K44 - 0x8854032D, // 0080 GETMBR R21 R1 K45 - 0x7C440800, // 0081 CALL R17 4 - 0x58480008, // 0082 LDCONST R18 K8 - 0x7C400400, // 0083 CALL R16 2 - 0x88400D1E, // 0084 GETMBR R16 R6 K30 - 0x900E3C10, // 0085 SETMBR R3 K30 R16 - 0x8C40052F, // 0086 GETMET R16 R2 K47 - 0x544A000F, // 0087 LDINT R18 16 - 0x7C400400, // 0088 CALL R16 2 - 0x900E5C10, // 0089 SETMBR R3 K46 R16 - 0x60400015, // 008A GETGBL R16 G21 - 0x7C400000, // 008B CALL R16 0 - 0x8C40211A, // 008C GETMET R16 R16 K26 - 0x58480030, // 008D LDCONST R18 K48 + 0x88400929, // 007A GETMBR R16 R4 K41 + 0x900E5010, // 007B SETMBR R3 K40 R16 + 0x88400115, // 007C GETMBR R16 R0 K21 + 0x88402116, // 007D GETMBR R16 R16 K22 + 0x8C40212B, // 007E GETMET R16 R16 K43 + 0x7C400200, // 007F CALL R16 1 + 0x900E5410, // 0080 SETMBR R3 K42 R16 + 0xB8420C00, // 0081 GETNGBL R16 K6 + 0x60440018, // 0082 GETGBL R17 G24 + 0x5848002C, // 0083 LDCONST R18 K44 + 0x884C072A, // 0084 GETMBR R19 R3 K42 + 0x8850032D, // 0085 GETMBR R20 R1 K45 + 0x8854032E, // 0086 GETMBR R21 R1 K46 + 0x7C440800, // 0087 CALL R17 4 + 0x58480008, // 0088 LDCONST R18 K8 + 0x7C400400, // 0089 CALL R16 2 + 0x88400D1F, // 008A GETMBR R16 R6 K31 + 0x900E3E10, // 008B SETMBR R3 K31 R16 + 0x8C400530, // 008C GETMET R16 R2 K48 + 0x544A000F, // 008D LDINT R18 16 0x7C400400, // 008E CALL R16 2 - 0x88440919, // 008F GETMBR R17 R4 K25 - 0x8848072E, // 0090 GETMBR R18 R3 K46 - 0x00442212, // 0091 ADD R17 R17 R18 - 0x8C48051C, // 0092 GETMET R18 R2 K28 - 0x7C480200, // 0093 CALL R18 1 - 0x8C48251D, // 0094 GETMET R18 R18 K29 - 0x8850071E, // 0095 GETMBR R20 R3 K30 - 0x5C542200, // 0096 MOVE R21 R17 - 0x5C582000, // 0097 MOVE R22 R16 - 0x545E000F, // 0098 LDINT R23 16 - 0x7C480A00, // 0099 CALL R18 5 - 0x8C4C0521, // 009A GETMET R19 R2 K33 - 0x5C542400, // 009B MOVE R21 R18 - 0x60580015, // 009C GETGBL R22 G21 - 0x7C580000, // 009D CALL R22 0 - 0x8C582D1A, // 009E GETMET R22 R22 K26 - 0x58600031, // 009F LDCONST R24 K49 - 0x7C580400, // 00A0 CALL R22 2 - 0x605C0015, // 00A1 GETGBL R23 G21 - 0x7C5C0000, // 00A2 CALL R23 0 - 0x58600004, // 00A3 LDCONST R24 K4 - 0x5466000F, // 00A4 LDINT R25 16 - 0x7C4C0C00, // 00A5 CALL R19 6 - 0x8C502723, // 00A6 GETMET R20 R19 K35 - 0x7C500200, // 00A7 CALL R20 1 - 0xB8561800, // 00A8 GETNGBL R21 K12 - 0x8C542B32, // 00A9 GETMET R21 R21 K50 - 0x7C540200, // 00AA CALL R21 1 - 0x8858072E, // 00AB GETMBR R22 R3 K46 - 0x90562616, // 00AC SETMBR R21 K19 R22 - 0x88580729, // 00AD GETMBR R22 R3 K41 - 0x90566616, // 00AE SETMBR R21 K51 R22 - 0x90566814, // 00AF SETMBR R21 K52 R20 - 0x8C58051C, // 00B0 GETMET R22 R2 K28 - 0x7C580200, // 00B1 CALL R22 1 - 0x8C582D1D, // 00B2 GETMET R22 R22 K29 - 0x8860071E, // 00B3 GETMBR R24 R3 K30 - 0x88640919, // 00B4 GETMBR R25 R4 K25 - 0x8868072E, // 00B5 GETMBR R26 R3 K46 - 0x0064321A, // 00B6 ADD R25 R25 R26 - 0x60680015, // 00B7 GETGBL R26 G21 - 0x7C680000, // 00B8 CALL R26 0 - 0x8C68351A, // 00B9 GETMET R26 R26 K26 - 0x58700035, // 00BA LDCONST R28 K53 - 0x7C680400, // 00BB CALL R26 2 - 0x546E002F, // 00BC LDINT R27 48 - 0x7C580A00, // 00BD CALL R22 5 - 0x545E000E, // 00BE LDINT R23 15 - 0x405E0817, // 00BF CONNECT R23 K4 R23 - 0x945C2C17, // 00C0 GETIDX R23 R22 R23 - 0x5462000F, // 00C1 LDINT R24 16 - 0x5466001E, // 00C2 LDINT R25 31 - 0x40603019, // 00C3 CONNECT R24 R24 R25 - 0x94602C18, // 00C4 GETIDX R24 R22 R24 - 0x5466001F, // 00C5 LDINT R25 32 - 0x546A002E, // 00C6 LDINT R26 47 - 0x4064321A, // 00C7 CONNECT R25 R25 R26 - 0x94642C19, // 00C8 GETIDX R25 R22 R25 - 0xB86A6C00, // 00C9 GETNGBL R26 K54 - 0x8C683537, // 00CA GETMET R26 R26 K55 - 0x7C680200, // 00CB CALL R26 1 - 0x8C6C2B38, // 00CC GETMET R27 R21 K56 - 0x7C6C0200, // 00CD CALL R27 1 - 0x4C700000, // 00CE LDNIL R28 - 0x900E721C, // 00CF SETMBR R3 K57 R28 - 0x8C70033A, // 00D0 GETMET R28 R1 K58 - 0x547A0032, // 00D1 LDINT R30 51 - 0x507C0200, // 00D2 LDBOOL R31 1 0 - 0x7C700600, // 00D3 CALL R28 3 - 0x8C74393B, // 00D4 GETMET R29 R28 K59 - 0x5C7C3600, // 00D5 MOVE R31 R27 - 0x7C740400, // 00D6 CALL R29 2 - 0x8878013C, // 00D7 GETMBR R30 R0 K60 - 0x8C783D3D, // 00D8 GETMET R30 R30 K61 - 0x5C803800, // 00D9 MOVE R32 R28 - 0x7C780400, // 00DA CALL R30 2 - 0x8C78073E, // 00DB GETMET R30 R3 K62 - 0x7C780200, // 00DC CALL R30 1 - 0x8C78073F, // 00DD GETMET R30 R3 K63 - 0x5C802E00, // 00DE MOVE R32 R23 - 0x5C843000, // 00DF MOVE R33 R24 - 0x5C883200, // 00E0 MOVE R34 R25 - 0x5C8C3400, // 00E1 MOVE R35 R26 - 0x7C780A00, // 00E2 CALL R30 5 - 0x900E8104, // 00E3 SETMBR R3 K64 K4 - 0x8C780741, // 00E4 GETMET R30 R3 K65 - 0x7C780200, // 00E5 CALL R30 1 - 0x8C780742, // 00E6 GETMET R30 R3 K66 - 0x50800200, // 00E7 LDBOOL R32 1 0 - 0x7C780400, // 00E8 CALL R30 2 - 0x8C780743, // 00E9 GETMET R30 R3 K67 - 0x7C780200, // 00EA CALL R30 1 - 0x8C780744, // 00EB GETMET R30 R3 K68 - 0x7C780200, // 00EC CALL R30 1 - 0x8C780745, // 00ED GETMET R30 R3 K69 - 0x7C780200, // 00EE CALL R30 1 - 0x50780200, // 00EF LDBOOL R30 1 0 - 0x80043C00, // 00F0 RET 1 R30 - 0x70020000, // 00F1 JMP #00F3 - 0x50140000, // 00F2 LDBOOL R5 0 0 - 0x5C1C0A00, // 00F3 MOVE R7 R5 - 0x741E00E4, // 00F4 JMPT R7 #01DA - 0x8C1C0146, // 00F5 GETMET R7 R0 K70 - 0x88240947, // 00F6 GETMBR R9 R4 K71 - 0x88280919, // 00F7 GETMBR R10 R4 K25 - 0x7C1C0600, // 00F8 CALL R7 3 - 0x900E3007, // 00F9 SETMBR R3 K24 R7 - 0x4C200000, // 00FA LDNIL R8 - 0x1C200608, // 00FB EQ R8 R3 R8 - 0x74220003, // 00FC JMPT R8 #0101 - 0x88200718, // 00FD GETMBR R8 R3 K24 - 0x4C240000, // 00FE LDNIL R9 - 0x1C201009, // 00FF EQ R8 R8 R9 - 0x7822000C, // 0100 JMPF R8 #010E - 0xB8220C00, // 0101 GETNGBL R8 K6 - 0x58240048, // 0102 LDCONST R9 K72 - 0x58280008, // 0103 LDCONST R10 K8 - 0x7C200400, // 0104 CALL R8 2 - 0x8C200109, // 0105 GETMET R8 R0 K9 - 0x5C280200, // 0106 MOVE R10 R1 - 0x582C000A, // 0107 LDCONST R11 K10 - 0x58300004, // 0108 LDCONST R12 K4 - 0x5834000A, // 0109 LDCONST R13 K10 - 0x50380000, // 010A LDBOOL R14 0 0 - 0x7C200C00, // 010B CALL R8 6 - 0x50200000, // 010C LDBOOL R8 0 0 - 0x80041000, // 010D RET 1 R8 - 0x88200325, // 010E GETMBR R8 R1 K37 - 0x900E4808, // 010F SETMBR R3 K36 R8 - 0x8C200726, // 0110 GETMET R8 R3 K38 - 0x7C200200, // 0111 CALL R8 1 - 0x88200928, // 0112 GETMBR R8 R4 K40 - 0x900E4E08, // 0113 SETMBR R3 K39 R8 - 0x88200115, // 0114 GETMBR R8 R0 K21 - 0x88201116, // 0115 GETMBR R8 R8 K22 - 0x8C20112A, // 0116 GETMET R8 R8 K42 - 0x7C200200, // 0117 CALL R8 1 - 0x900E5208, // 0118 SETMBR R3 K41 R8 - 0xB8220C00, // 0119 GETNGBL R8 K6 - 0x60240018, // 011A GETGBL R9 G24 - 0x5828002B, // 011B LDCONST R10 K43 - 0x882C0729, // 011C GETMBR R11 R3 K41 - 0x8830032C, // 011D GETMBR R12 R1 K44 - 0x8834032D, // 011E GETMBR R13 R1 K45 - 0x7C240800, // 011F CALL R9 4 - 0x58280008, // 0120 LDCONST R10 K8 - 0x7C200400, // 0121 CALL R8 2 - 0x8C20052F, // 0122 GETMET R8 R2 K47 - 0x542A000F, // 0123 LDINT R10 16 - 0x7C200400, // 0124 CALL R8 2 - 0x900E5C08, // 0125 SETMBR R3 K46 R8 - 0x8C20052F, // 0126 GETMET R8 R2 K47 - 0x542A001F, // 0127 LDINT R10 32 - 0x7C200400, // 0128 CALL R8 2 - 0x900E9208, // 0129 SETMBR R3 K73 R8 - 0x8C20054B, // 012A GETMET R8 R2 K75 - 0x7C200200, // 012B CALL R8 1 - 0x8C20114C, // 012C GETMET R8 R8 K76 - 0x88280749, // 012D GETMBR R10 R3 K73 - 0x7C200400, // 012E CALL R8 2 - 0x900E9408, // 012F SETMBR R3 K74 R8 - 0x8C20052F, // 0130 GETMET R8 R2 K47 - 0x542A001F, // 0131 LDINT R10 32 + 0x900E5E10, // 008F SETMBR R3 K47 R16 + 0x60400015, // 0090 GETGBL R16 G21 + 0x7C400000, // 0091 CALL R16 0 + 0x8C40211B, // 0092 GETMET R16 R16 K27 + 0x58480031, // 0093 LDCONST R18 K49 + 0x7C400400, // 0094 CALL R16 2 + 0x8844091A, // 0095 GETMBR R17 R4 K26 + 0x8848072F, // 0096 GETMBR R18 R3 K47 + 0x00442212, // 0097 ADD R17 R17 R18 + 0x8C48051D, // 0098 GETMET R18 R2 K29 + 0x7C480200, // 0099 CALL R18 1 + 0x8C48251E, // 009A GETMET R18 R18 K30 + 0x8850071F, // 009B GETMBR R20 R3 K31 + 0x5C542200, // 009C MOVE R21 R17 + 0x5C582000, // 009D MOVE R22 R16 + 0x545E000F, // 009E LDINT R23 16 + 0x7C480A00, // 009F CALL R18 5 + 0x8C4C0522, // 00A0 GETMET R19 R2 K34 + 0x5C542400, // 00A1 MOVE R21 R18 + 0x60580015, // 00A2 GETGBL R22 G21 + 0x7C580000, // 00A3 CALL R22 0 + 0x8C582D1B, // 00A4 GETMET R22 R22 K27 + 0x58600032, // 00A5 LDCONST R24 K50 + 0x7C580400, // 00A6 CALL R22 2 + 0x605C0015, // 00A7 GETGBL R23 G21 + 0x7C5C0000, // 00A8 CALL R23 0 + 0x58600004, // 00A9 LDCONST R24 K4 + 0x5466000F, // 00AA LDINT R25 16 + 0x7C4C0C00, // 00AB CALL R19 6 + 0x8C502724, // 00AC GETMET R20 R19 K36 + 0x7C500200, // 00AD CALL R20 1 + 0xB8561800, // 00AE GETNGBL R21 K12 + 0x8C542B33, // 00AF GETMET R21 R21 K51 + 0x7C540200, // 00B0 CALL R21 1 + 0x8858072F, // 00B1 GETMBR R22 R3 K47 + 0x90562616, // 00B2 SETMBR R21 K19 R22 + 0x90566814, // 00B3 SETMBR R21 K52 R20 + 0x8858072A, // 00B4 GETMBR R22 R3 K42 + 0x90566A16, // 00B5 SETMBR R21 K53 R22 + 0x8858091A, // 00B6 GETMBR R22 R4 K26 + 0x885C0D2F, // 00B7 GETMBR R23 R6 K47 + 0x00582C17, // 00B8 ADD R22 R22 R23 + 0x8C5C051D, // 00B9 GETMET R23 R2 K29 + 0x7C5C0200, // 00BA CALL R23 1 + 0x8C5C2F1E, // 00BB GETMET R23 R23 K30 + 0x8864071F, // 00BC GETMBR R25 R3 K31 + 0x5C682C00, // 00BD MOVE R26 R22 + 0x606C0015, // 00BE GETGBL R27 G21 + 0x7C6C0000, // 00BF CALL R27 0 + 0x8C6C371B, // 00C0 GETMET R27 R27 K27 + 0x58740036, // 00C1 LDCONST R29 K54 + 0x7C6C0400, // 00C2 CALL R27 2 + 0x5472002F, // 00C3 LDINT R28 48 + 0x7C5C0A00, // 00C4 CALL R23 5 + 0x5462000E, // 00C5 LDINT R24 15 + 0x40620818, // 00C6 CONNECT R24 K4 R24 + 0x94602E18, // 00C7 GETIDX R24 R23 R24 + 0x5466000F, // 00C8 LDINT R25 16 + 0x546A001E, // 00C9 LDINT R26 31 + 0x4064321A, // 00CA CONNECT R25 R25 R26 + 0x94642E19, // 00CB GETIDX R25 R23 R25 + 0x546A001F, // 00CC LDINT R26 32 + 0x546E002E, // 00CD LDINT R27 47 + 0x4068341B, // 00CE CONNECT R26 R26 R27 + 0x94682E1A, // 00CF GETIDX R26 R23 R26 + 0xB86E6E00, // 00D0 GETNGBL R27 K55 + 0x8C6C3738, // 00D1 GETMET R27 R27 K56 + 0x7C6C0200, // 00D2 CALL R27 1 + 0x8C702B39, // 00D3 GETMET R28 R21 K57 + 0x7C700200, // 00D4 CALL R28 1 + 0x4C740000, // 00D5 LDNIL R29 + 0x900E741D, // 00D6 SETMBR R3 K58 R29 + 0x8C74033B, // 00D7 GETMET R29 R1 K59 + 0x547E0032, // 00D8 LDINT R31 51 + 0x50800200, // 00D9 LDBOOL R32 1 0 + 0x7C740600, // 00DA CALL R29 3 + 0x8C783B3C, // 00DB GETMET R30 R29 K60 + 0x5C803800, // 00DC MOVE R32 R28 + 0x7C780400, // 00DD CALL R30 2 + 0x887C013D, // 00DE GETMBR R31 R0 K61 + 0x8C7C3F3E, // 00DF GETMET R31 R31 K62 + 0x5C843A00, // 00E0 MOVE R33 R29 + 0x7C7C0400, // 00E1 CALL R31 2 + 0x8C7C073F, // 00E2 GETMET R31 R3 K63 + 0x7C7C0200, // 00E3 CALL R31 1 + 0x8C7C0740, // 00E4 GETMET R31 R3 K64 + 0x5C843000, // 00E5 MOVE R33 R24 + 0x5C883200, // 00E6 MOVE R34 R25 + 0x5C8C3400, // 00E7 MOVE R35 R26 + 0x5C903600, // 00E8 MOVE R36 R27 + 0x7C7C0A00, // 00E9 CALL R31 5 + 0x887C0D41, // 00EA GETMBR R31 R6 K65 + 0x900E821F, // 00EB SETMBR R3 K65 R31 + 0x900E8504, // 00EC SETMBR R3 K66 K4 + 0x8C7C0743, // 00ED GETMET R31 R3 K67 + 0x7C7C0200, // 00EE CALL R31 1 + 0x8C7C0744, // 00EF GETMET R31 R3 K68 + 0x50840200, // 00F0 LDBOOL R33 1 0 + 0x7C7C0400, // 00F1 CALL R31 2 + 0x8C7C0745, // 00F2 GETMET R31 R3 K69 + 0x7C7C0200, // 00F3 CALL R31 1 + 0x8C7C0746, // 00F4 GETMET R31 R3 K70 + 0x7C7C0200, // 00F5 CALL R31 1 + 0x8C7C0747, // 00F6 GETMET R31 R3 K71 + 0x7C7C0200, // 00F7 CALL R31 1 + 0xB87E0C00, // 00F8 GETNGBL R31 K6 + 0x58800048, // 00F9 LDCONST R32 K72 + 0x58840008, // 00FA LDCONST R33 K8 + 0x7C7C0400, // 00FB CALL R31 2 + 0x507C0200, // 00FC LDBOOL R31 1 0 + 0x80043E00, // 00FD RET 1 R31 + 0x70020004, // 00FE JMP #0104 + 0xB8420C00, // 00FF GETNGBL R16 K6 + 0x58440049, // 0100 LDCONST R17 K73 + 0x58480008, // 0101 LDCONST R18 K8 + 0x7C400400, // 0102 CALL R16 2 + 0x50140000, // 0103 LDBOOL R5 0 0 + 0x5C1C0A00, // 0104 MOVE R7 R5 + 0x741E00E4, // 0105 JMPT R7 #01EB + 0x8C1C014A, // 0106 GETMET R7 R0 K74 + 0x8824094B, // 0107 GETMBR R9 R4 K75 + 0x8828091A, // 0108 GETMBR R10 R4 K26 + 0x7C1C0600, // 0109 CALL R7 3 + 0x900E3007, // 010A SETMBR R3 K24 R7 + 0x4C200000, // 010B LDNIL R8 + 0x1C200608, // 010C EQ R8 R3 R8 + 0x74220003, // 010D JMPT R8 #0112 + 0x88200718, // 010E GETMBR R8 R3 K24 + 0x4C240000, // 010F LDNIL R9 + 0x1C201009, // 0110 EQ R8 R8 R9 + 0x7822000C, // 0111 JMPF R8 #011F + 0xB8220C00, // 0112 GETNGBL R8 K6 + 0x5824004C, // 0113 LDCONST R9 K76 + 0x58280008, // 0114 LDCONST R10 K8 + 0x7C200400, // 0115 CALL R8 2 + 0x8C200109, // 0116 GETMET R8 R0 K9 + 0x5C280200, // 0117 MOVE R10 R1 + 0x582C000A, // 0118 LDCONST R11 K10 + 0x58300004, // 0119 LDCONST R12 K4 + 0x5834000A, // 011A LDCONST R13 K10 + 0x50380000, // 011B LDBOOL R14 0 0 + 0x7C200C00, // 011C CALL R8 6 + 0x50200000, // 011D LDBOOL R8 0 0 + 0x80041000, // 011E RET 1 R8 + 0x88200326, // 011F GETMBR R8 R1 K38 + 0x900E4A08, // 0120 SETMBR R3 K37 R8 + 0x8C200727, // 0121 GETMET R8 R3 K39 + 0x7C200200, // 0122 CALL R8 1 + 0x88200929, // 0123 GETMBR R8 R4 K41 + 0x900E5008, // 0124 SETMBR R3 K40 R8 + 0x88200115, // 0125 GETMBR R8 R0 K21 + 0x88201116, // 0126 GETMBR R8 R8 K22 + 0x8C20112B, // 0127 GETMET R8 R8 K43 + 0x7C200200, // 0128 CALL R8 1 + 0x900E5408, // 0129 SETMBR R3 K42 R8 + 0xB8220C00, // 012A GETNGBL R8 K6 + 0x60240018, // 012B GETGBL R9 G24 + 0x5828002C, // 012C LDCONST R10 K44 + 0x882C072A, // 012D GETMBR R11 R3 K42 + 0x8830032D, // 012E GETMBR R12 R1 K45 + 0x8834032E, // 012F GETMBR R13 R1 K46 + 0x7C240800, // 0130 CALL R9 4 + 0x58280008, // 0131 LDCONST R10 K8 0x7C200400, // 0132 CALL R8 2 - 0x8C24054B, // 0133 GETMET R9 R2 K75 - 0x7C240200, // 0134 CALL R9 1 - 0x8C24134D, // 0135 GETMET R9 R9 K77 - 0x882C0749, // 0136 GETMBR R11 R3 K73 - 0x88300912, // 0137 GETMBR R12 R4 K18 - 0x7C240600, // 0138 CALL R9 3 - 0x900E3C09, // 0139 SETMBR R3 K30 R9 - 0xB8261800, // 013A GETNGBL R9 K12 - 0x8824134E, // 013B GETMBR R9 R9 K78 - 0x8C24134F, // 013C GETMET R9 R9 K79 - 0x7C240200, // 013D CALL R9 1 - 0x8C281350, // 013E GETMET R10 R9 K80 - 0x5830000A, // 013F LDCONST R12 K10 - 0xB8361800, // 0140 GETNGBL R13 K12 - 0x88341B4E, // 0141 GETMBR R13 R13 K78 - 0x88341B51, // 0142 GETMBR R13 R13 K81 - 0x8C380F52, // 0143 GETMET R14 R7 K82 - 0x7C380200, // 0144 CALL R14 1 - 0x7C280800, // 0145 CALL R10 4 - 0x8C281350, // 0146 GETMET R10 R9 K80 - 0x5830000B, // 0147 LDCONST R12 K11 - 0xB8361800, // 0148 GETNGBL R13 K12 - 0x88341B4E, // 0149 GETMBR R13 R13 K78 - 0x88341B51, // 014A GETMBR R13 R13 K81 - 0x8C380F53, // 014B GETMET R14 R7 K83 - 0x7C380200, // 014C CALL R14 1 - 0x7C280800, // 014D CALL R10 4 - 0x8C281350, // 014E GETMET R10 R9 K80 - 0x58300008, // 014F LDCONST R12 K8 - 0xB8361800, // 0150 GETNGBL R13 K12 - 0x88341B4E, // 0151 GETMBR R13 R13 K78 - 0x88341B51, // 0152 GETMBR R13 R13 K81 - 0x8838074A, // 0153 GETMBR R14 R3 K74 - 0x7C280800, // 0154 CALL R10 4 - 0x8C281350, // 0155 GETMET R10 R9 K80 - 0x54320003, // 0156 LDINT R12 4 - 0xB8361800, // 0157 GETNGBL R13 K12 - 0x88341B4E, // 0158 GETMBR R13 R13 K78 - 0x88341B51, // 0159 GETMBR R13 R13 K81 - 0x88380912, // 015A GETMBR R14 R4 K18 - 0x7C280800, // 015B CALL R10 4 - 0x8C28054B, // 015C GETMET R10 R2 K75 - 0x7C280200, // 015D CALL R10 1 - 0x8C281554, // 015E GETMET R10 R10 K84 - 0x8C300F55, // 015F GETMET R12 R7 K85 - 0x7C300200, // 0160 CALL R12 1 - 0x8C341338, // 0161 GETMET R13 R9 K56 - 0x7C340200, // 0162 CALL R13 1 - 0x7C280600, // 0163 CALL R10 3 - 0xB82E1800, // 0164 GETNGBL R11 K12 - 0x882C174E, // 0165 GETMBR R11 R11 K78 - 0x8C2C174F, // 0166 GETMET R11 R11 K79 - 0x7C2C0200, // 0167 CALL R11 1 - 0x8C301750, // 0168 GETMET R12 R11 K80 - 0x5838000A, // 0169 LDCONST R14 K10 - 0xB83E1800, // 016A GETNGBL R15 K12 - 0x883C1F4E, // 016B GETMBR R15 R15 K78 - 0x883C1F51, // 016C GETMBR R15 R15 K81 - 0x8C400F52, // 016D GETMET R16 R7 K82 - 0x7C400200, // 016E CALL R16 1 - 0x7C300800, // 016F CALL R12 4 - 0x8C301750, // 0170 GETMET R12 R11 K80 - 0x5838000B, // 0171 LDCONST R14 K11 - 0xB83E1800, // 0172 GETNGBL R15 K12 - 0x883C1F4E, // 0173 GETMBR R15 R15 K78 - 0x883C1F51, // 0174 GETMBR R15 R15 K81 - 0x8C400F53, // 0175 GETMET R16 R7 K83 - 0x7C400200, // 0176 CALL R16 1 - 0x7C300800, // 0177 CALL R12 4 - 0x8C301750, // 0178 GETMET R12 R11 K80 - 0x58380008, // 0179 LDCONST R14 K8 - 0xB83E1800, // 017A GETNGBL R15 K12 - 0x883C1F4E, // 017B GETMBR R15 R15 K78 - 0x883C1F51, // 017C GETMBR R15 R15 K81 - 0x5C401400, // 017D MOVE R16 R10 - 0x7C300800, // 017E CALL R12 4 - 0x8C301750, // 017F GETMET R12 R11 K80 - 0x543A0003, // 0180 LDINT R14 4 - 0xB83E1800, // 0181 GETNGBL R15 K12 - 0x883C1F4E, // 0182 GETMBR R15 R15 K78 - 0x883C1F51, // 0183 GETMBR R15 R15 K81 - 0x8840072E, // 0184 GETMBR R16 R3 K46 - 0x7C300800, // 0185 CALL R12 4 - 0x88300956, // 0186 GETMBR R12 R4 K86 - 0x900E720C, // 0187 SETMBR R3 K57 R12 - 0x8C300557, // 0188 GETMET R12 R2 K87 - 0x7C300200, // 0189 CALL R12 1 - 0x8C301958, // 018A GETMET R12 R12 K88 - 0x88380739, // 018B GETMBR R14 R3 K57 - 0x7C300400, // 018C CALL R12 2 - 0x8C301959, // 018D GETMET R12 R12 K89 - 0x7C300200, // 018E CALL R12 1 - 0x60340015, // 018F GETGBL R13 G21 - 0x7C340000, // 0190 CALL R13 0 - 0x8C341B1A, // 0191 GETMET R13 R13 K26 - 0x883C015A, // 0192 GETMBR R15 R0 K90 - 0x7C340400, // 0193 CALL R13 2 - 0x8C380F5B, // 0194 GETMET R14 R7 K91 - 0x7C380200, // 0195 CALL R14 1 - 0x00381C08, // 0196 ADD R14 R14 R8 - 0x883C074A, // 0197 GETMBR R15 R3 K74 - 0x00381C0F, // 0198 ADD R14 R14 R15 - 0x00381C0C, // 0199 ADD R14 R14 R12 - 0x8C3C051C, // 019A GETMET R15 R2 K28 - 0x7C3C0200, // 019B CALL R15 1 - 0x8C3C1F1D, // 019C GETMET R15 R15 K29 - 0x8844071E, // 019D GETMBR R17 R3 K30 - 0x5C481C00, // 019E MOVE R18 R14 - 0x5C4C1A00, // 019F MOVE R19 R13 - 0x5452000F, // 01A0 LDINT R20 16 - 0x7C3C0A00, // 01A1 CALL R15 5 - 0x8C401738, // 01A2 GETMET R16 R11 K56 - 0x7C400200, // 01A3 CALL R16 1 - 0x8C440521, // 01A4 GETMET R17 R2 K33 - 0x5C4C1E00, // 01A5 MOVE R19 R15 - 0x60500015, // 01A6 GETGBL R20 G21 - 0x7C500000, // 01A7 CALL R20 0 - 0x8C50291A, // 01A8 GETMET R20 R20 K26 - 0x8858015C, // 01A9 GETMBR R22 R0 K92 - 0x7C500400, // 01AA CALL R20 2 - 0x60540015, // 01AB GETGBL R21 G21 - 0x7C540000, // 01AC CALL R21 0 - 0x6058000C, // 01AD GETGBL R22 G12 - 0x5C5C2000, // 01AE MOVE R23 R16 - 0x7C580200, // 01AF CALL R22 1 - 0x545E000F, // 01B0 LDINT R23 16 - 0x7C440C00, // 01B1 CALL R17 6 - 0x8C48235D, // 01B2 GETMET R18 R17 K93 - 0x5C502000, // 01B3 MOVE R20 R16 - 0x7C480400, // 01B4 CALL R18 2 - 0x8C4C2323, // 01B5 GETMET R19 R17 K35 - 0x7C4C0200, // 01B6 CALL R19 1 - 0x00482413, // 01B7 ADD R18 R18 R19 - 0xB84E1800, // 01B8 GETNGBL R19 K12 - 0x8C4C275E, // 01B9 GETMET R19 R19 K94 - 0x7C4C0200, // 01BA CALL R19 1 - 0x904EBE08, // 01BB SETMBR R19 K95 R8 - 0x88500729, // 01BC GETMBR R20 R3 K41 - 0x904EC014, // 01BD SETMBR R19 K96 R20 - 0x8850074A, // 01BE GETMBR R20 R3 K74 - 0x904EC214, // 01BF SETMBR R19 K97 R20 - 0x904EC412, // 01C0 SETMBR R19 K98 R18 - 0x8C502738, // 01C1 GETMET R20 R19 K56 - 0x7C500200, // 01C2 CALL R20 1 - 0x900EC614, // 01C3 SETMBR R3 K99 R20 - 0x8C54033A, // 01C4 GETMET R21 R1 K58 - 0x545E0030, // 01C5 LDINT R23 49 - 0x50600200, // 01C6 LDBOOL R24 1 0 - 0x7C540600, // 01C7 CALL R21 3 - 0x8C582B3B, // 01C8 GETMET R22 R21 K59 - 0x5C602800, // 01C9 MOVE R24 R20 - 0x7C580400, // 01CA CALL R22 2 - 0xB85E0C00, // 01CB GETNGBL R23 K6 - 0x60600018, // 01CC GETGBL R24 G24 - 0x58640064, // 01CD LDCONST R25 K100 - 0x88680729, // 01CE GETMBR R26 R3 K41 - 0x886C0765, // 01CF GETMBR R27 R3 K101 - 0x88700766, // 01D0 GETMBR R28 R3 K102 - 0x7C600800, // 01D1 CALL R24 4 - 0x5864000B, // 01D2 LDCONST R25 K11 - 0x7C5C0400, // 01D3 CALL R23 2 - 0x885C013C, // 01D4 GETMBR R23 R0 K60 - 0x8C5C2F3D, // 01D5 GETMET R23 R23 K61 - 0x5C642A00, // 01D6 MOVE R25 R21 - 0x7C5C0400, // 01D7 CALL R23 2 - 0x505C0200, // 01D8 LDBOOL R23 1 0 - 0x80042E00, // 01D9 RET 1 R23 - 0x501C0200, // 01DA LDBOOL R7 1 0 - 0x80040E00, // 01DB RET 1 R7 + 0x8C200530, // 0133 GETMET R8 R2 K48 + 0x542A000F, // 0134 LDINT R10 16 + 0x7C200400, // 0135 CALL R8 2 + 0x900E5E08, // 0136 SETMBR R3 K47 R8 + 0x8C200530, // 0137 GETMET R8 R2 K48 + 0x542A001F, // 0138 LDINT R10 32 + 0x7C200400, // 0139 CALL R8 2 + 0x900E9A08, // 013A SETMBR R3 K77 R8 + 0x8C20054F, // 013B GETMET R8 R2 K79 + 0x7C200200, // 013C CALL R8 1 + 0x8C201150, // 013D GETMET R8 R8 K80 + 0x8828074D, // 013E GETMBR R10 R3 K77 + 0x7C200400, // 013F CALL R8 2 + 0x900E9C08, // 0140 SETMBR R3 K78 R8 + 0x8C200530, // 0141 GETMET R8 R2 K48 + 0x542A001F, // 0142 LDINT R10 32 + 0x7C200400, // 0143 CALL R8 2 + 0x8C24054F, // 0144 GETMET R9 R2 K79 + 0x7C240200, // 0145 CALL R9 1 + 0x8C241351, // 0146 GETMET R9 R9 K81 + 0x882C074D, // 0147 GETMBR R11 R3 K77 + 0x88300912, // 0148 GETMBR R12 R4 K18 + 0x7C240600, // 0149 CALL R9 3 + 0x900E3E09, // 014A SETMBR R3 K31 R9 + 0xB8261800, // 014B GETNGBL R9 K12 + 0x88241352, // 014C GETMBR R9 R9 K82 + 0x8C241353, // 014D GETMET R9 R9 K83 + 0x7C240200, // 014E CALL R9 1 + 0x8C281354, // 014F GETMET R10 R9 K84 + 0x5830000A, // 0150 LDCONST R12 K10 + 0xB8361800, // 0151 GETNGBL R13 K12 + 0x88341B52, // 0152 GETMBR R13 R13 K82 + 0x88341B55, // 0153 GETMBR R13 R13 K85 + 0x8C380F56, // 0154 GETMET R14 R7 K86 + 0x7C380200, // 0155 CALL R14 1 + 0x7C280800, // 0156 CALL R10 4 + 0x8C281354, // 0157 GETMET R10 R9 K84 + 0x5830000B, // 0158 LDCONST R12 K11 + 0xB8361800, // 0159 GETNGBL R13 K12 + 0x88341B52, // 015A GETMBR R13 R13 K82 + 0x88341B55, // 015B GETMBR R13 R13 K85 + 0x8C380F57, // 015C GETMET R14 R7 K87 + 0x7C380200, // 015D CALL R14 1 + 0x7C280800, // 015E CALL R10 4 + 0x8C281354, // 015F GETMET R10 R9 K84 + 0x58300008, // 0160 LDCONST R12 K8 + 0xB8361800, // 0161 GETNGBL R13 K12 + 0x88341B52, // 0162 GETMBR R13 R13 K82 + 0x88341B55, // 0163 GETMBR R13 R13 K85 + 0x8838074E, // 0164 GETMBR R14 R3 K78 + 0x7C280800, // 0165 CALL R10 4 + 0x8C281354, // 0166 GETMET R10 R9 K84 + 0x54320003, // 0167 LDINT R12 4 + 0xB8361800, // 0168 GETNGBL R13 K12 + 0x88341B52, // 0169 GETMBR R13 R13 K82 + 0x88341B55, // 016A GETMBR R13 R13 K85 + 0x88380912, // 016B GETMBR R14 R4 K18 + 0x7C280800, // 016C CALL R10 4 + 0x8C28054F, // 016D GETMET R10 R2 K79 + 0x7C280200, // 016E CALL R10 1 + 0x8C281558, // 016F GETMET R10 R10 K88 + 0x8C300F59, // 0170 GETMET R12 R7 K89 + 0x7C300200, // 0171 CALL R12 1 + 0x8C341339, // 0172 GETMET R13 R9 K57 + 0x7C340200, // 0173 CALL R13 1 + 0x7C280600, // 0174 CALL R10 3 + 0xB82E1800, // 0175 GETNGBL R11 K12 + 0x882C1752, // 0176 GETMBR R11 R11 K82 + 0x8C2C1753, // 0177 GETMET R11 R11 K83 + 0x7C2C0200, // 0178 CALL R11 1 + 0x8C301754, // 0179 GETMET R12 R11 K84 + 0x5838000A, // 017A LDCONST R14 K10 + 0xB83E1800, // 017B GETNGBL R15 K12 + 0x883C1F52, // 017C GETMBR R15 R15 K82 + 0x883C1F55, // 017D GETMBR R15 R15 K85 + 0x8C400F56, // 017E GETMET R16 R7 K86 + 0x7C400200, // 017F CALL R16 1 + 0x7C300800, // 0180 CALL R12 4 + 0x8C301754, // 0181 GETMET R12 R11 K84 + 0x5838000B, // 0182 LDCONST R14 K11 + 0xB83E1800, // 0183 GETNGBL R15 K12 + 0x883C1F52, // 0184 GETMBR R15 R15 K82 + 0x883C1F55, // 0185 GETMBR R15 R15 K85 + 0x8C400F57, // 0186 GETMET R16 R7 K87 + 0x7C400200, // 0187 CALL R16 1 + 0x7C300800, // 0188 CALL R12 4 + 0x8C301754, // 0189 GETMET R12 R11 K84 + 0x58380008, // 018A LDCONST R14 K8 + 0xB83E1800, // 018B GETNGBL R15 K12 + 0x883C1F52, // 018C GETMBR R15 R15 K82 + 0x883C1F55, // 018D GETMBR R15 R15 K85 + 0x5C401400, // 018E MOVE R16 R10 + 0x7C300800, // 018F CALL R12 4 + 0x8C301754, // 0190 GETMET R12 R11 K84 + 0x543A0003, // 0191 LDINT R14 4 + 0xB83E1800, // 0192 GETNGBL R15 K12 + 0x883C1F52, // 0193 GETMBR R15 R15 K82 + 0x883C1F55, // 0194 GETMBR R15 R15 K85 + 0x8840072F, // 0195 GETMBR R16 R3 K47 + 0x7C300800, // 0196 CALL R12 4 + 0x8830095A, // 0197 GETMBR R12 R4 K90 + 0x900E740C, // 0198 SETMBR R3 K58 R12 + 0x8C30055B, // 0199 GETMET R12 R2 K91 + 0x7C300200, // 019A CALL R12 1 + 0x8C30195C, // 019B GETMET R12 R12 K92 + 0x8838073A, // 019C GETMBR R14 R3 K58 + 0x7C300400, // 019D CALL R12 2 + 0x8C30195D, // 019E GETMET R12 R12 K93 + 0x7C300200, // 019F CALL R12 1 + 0x60340015, // 01A0 GETGBL R13 G21 + 0x7C340000, // 01A1 CALL R13 0 + 0x8C341B1B, // 01A2 GETMET R13 R13 K27 + 0x883C015E, // 01A3 GETMBR R15 R0 K94 + 0x7C340400, // 01A4 CALL R13 2 + 0x8C380F5F, // 01A5 GETMET R14 R7 K95 + 0x7C380200, // 01A6 CALL R14 1 + 0x00381C08, // 01A7 ADD R14 R14 R8 + 0x883C074E, // 01A8 GETMBR R15 R3 K78 + 0x00381C0F, // 01A9 ADD R14 R14 R15 + 0x00381C0C, // 01AA ADD R14 R14 R12 + 0x8C3C051D, // 01AB GETMET R15 R2 K29 + 0x7C3C0200, // 01AC CALL R15 1 + 0x8C3C1F1E, // 01AD GETMET R15 R15 K30 + 0x8844071F, // 01AE GETMBR R17 R3 K31 + 0x5C481C00, // 01AF MOVE R18 R14 + 0x5C4C1A00, // 01B0 MOVE R19 R13 + 0x5452000F, // 01B1 LDINT R20 16 + 0x7C3C0A00, // 01B2 CALL R15 5 + 0x8C401739, // 01B3 GETMET R16 R11 K57 + 0x7C400200, // 01B4 CALL R16 1 + 0x8C440522, // 01B5 GETMET R17 R2 K34 + 0x5C4C1E00, // 01B6 MOVE R19 R15 + 0x60500015, // 01B7 GETGBL R20 G21 + 0x7C500000, // 01B8 CALL R20 0 + 0x8C50291B, // 01B9 GETMET R20 R20 K27 + 0x88580160, // 01BA GETMBR R22 R0 K96 + 0x7C500400, // 01BB CALL R20 2 + 0x60540015, // 01BC GETGBL R21 G21 + 0x7C540000, // 01BD CALL R21 0 + 0x6058000C, // 01BE GETGBL R22 G12 + 0x5C5C2000, // 01BF MOVE R23 R16 + 0x7C580200, // 01C0 CALL R22 1 + 0x545E000F, // 01C1 LDINT R23 16 + 0x7C440C00, // 01C2 CALL R17 6 + 0x8C482361, // 01C3 GETMET R18 R17 K97 + 0x5C502000, // 01C4 MOVE R20 R16 + 0x7C480400, // 01C5 CALL R18 2 + 0x8C4C2324, // 01C6 GETMET R19 R17 K36 + 0x7C4C0200, // 01C7 CALL R19 1 + 0x00482413, // 01C8 ADD R18 R18 R19 + 0xB84E1800, // 01C9 GETNGBL R19 K12 + 0x8C4C2762, // 01CA GETMET R19 R19 K98 + 0x7C4C0200, // 01CB CALL R19 1 + 0x904EC608, // 01CC SETMBR R19 K99 R8 + 0x8850072A, // 01CD GETMBR R20 R3 K42 + 0x904EC814, // 01CE SETMBR R19 K100 R20 + 0x8850074E, // 01CF GETMBR R20 R3 K78 + 0x904ECA14, // 01D0 SETMBR R19 K101 R20 + 0x904ECC12, // 01D1 SETMBR R19 K102 R18 + 0x8C502739, // 01D2 GETMET R20 R19 K57 + 0x7C500200, // 01D3 CALL R20 1 + 0x900ECE14, // 01D4 SETMBR R3 K103 R20 + 0x8C54033B, // 01D5 GETMET R21 R1 K59 + 0x545E0030, // 01D6 LDINT R23 49 + 0x50600200, // 01D7 LDBOOL R24 1 0 + 0x7C540600, // 01D8 CALL R21 3 + 0x8C582B3C, // 01D9 GETMET R22 R21 K60 + 0x5C602800, // 01DA MOVE R24 R20 + 0x7C580400, // 01DB CALL R22 2 + 0xB85E0C00, // 01DC GETNGBL R23 K6 + 0x60600018, // 01DD GETGBL R24 G24 + 0x58640068, // 01DE LDCONST R25 K104 + 0x8868072A, // 01DF GETMBR R26 R3 K42 + 0x886C0769, // 01E0 GETMBR R27 R3 K105 + 0x8870076A, // 01E1 GETMBR R28 R3 K106 + 0x7C600800, // 01E2 CALL R24 4 + 0x5864000B, // 01E3 LDCONST R25 K11 + 0x7C5C0400, // 01E4 CALL R23 2 + 0x885C013D, // 01E5 GETMBR R23 R0 K61 + 0x8C5C2F3E, // 01E6 GETMET R23 R23 K62 + 0x5C642A00, // 01E7 MOVE R25 R21 + 0x7C5C0400, // 01E8 CALL R23 2 + 0x505C0200, // 01E9 LDBOOL R23 1 0 + 0x80042E00, // 01EA RET 1 R23 + 0x501C0200, // 01EB LDBOOL R7 1 0 + 0x80040E00, // 01EC RET 1 R7 }) ) ); From 2ce513f50c8a2b0f66dc8e775cfc47eb06517aec Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Sun, 16 Jun 2024 17:07:51 +0200 Subject: [PATCH 067/252] NeoPool make compiler setting available by user_config_override.h (#21645) --- CHANGELOG.md | 1 + tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e1dde61d..3f855c210 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - SML replace vars in descriptor and line (#21622) - NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) +- NeoPool make compiler setting available by user_config_override.h ### Fixed - Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) diff --git a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino index 01718d201..c13bc82d7 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino @@ -61,19 +61,35 @@ #endif +#ifndef NEOPOOL_READ_REGISTER #define NEOPOOL_READ_REGISTER 0x04 // Function code used to read register +#endif +#ifndef NEOPOOL_WRITE_REGISTER #define NEOPOOL_WRITE_REGISTER 0x10 // Function code used to write register +#endif +#ifndef NEOPOOL_READ_TIMEOUT #define NEOPOOL_READ_TIMEOUT 25 // read data timeout in ms +#endif +#ifndef NEOPOOL_CACHE_INVALID_TIME #define NEOPOOL_CACHE_INVALID_TIME 30 // data cache invalidation time in s +#endif // Pool LED RGB lights with different programs, the individual programs can be selected // by switching them off and on again for a defined time when the LED is switched on. // Default timings for LED light program step sequence (NPLight 3) +#ifndef NEOPOOL_LIGHT_PRG_WAIT #define NEOPOOL_LIGHT_PRG_WAIT 30 // delay before start prg light if light was off (in ms) +#endif +#ifndef NEOPOOL_LIGHT_PRG_DELAY #define NEOPOOL_LIGHT_PRG_DELAY 15 // default next light prg delay (in ms) +#endif +#ifndef NEOPOOL_LIGHT_PRG_DELAY_MIN #define NEOPOOL_LIGHT_PRG_DELAY_MIN 5 // next light prg delay min (in ms) +#endif +#ifndef NEOPOOL_LIGHT_PRG_DELAY_MAX #define NEOPOOL_LIGHT_PRG_DELAY_MAX 100 // next light prg delay max (in ms) +#endif /*********************************************************************************************\ From 0d267a546a86cedbceebca12ffa1f3367ba7d5ee Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 16 Jun 2024 18:42:23 +0200 Subject: [PATCH 068/252] Matter prepare events (#21647) --- .../berry_matter/src/be_matter_module.c | 11 + .../src/embedded/Matter_EventHandler.be | 220 + .../berry_matter/src/embedded/Matter_IM.be | 102 +- .../src/embedded/Matter_Message.be | 8 + .../src/embedded/Matter_Plugin_0.be | 55 +- .../src/embedded/Matter_Plugin_1_Root.be | 11 +- .../Matter_Plugin_2_Sensor_GenericSwitch.be | 100 + .../src/embedded/Matter_Session.be | 1 + .../src/embedded/Matter_zz_Device.be | 8 +- .../solidify/solidified_Matter_EventHandler.h | 492 + .../src/solidify/solidified_Matter_IM.h | 1246 ++- .../src/solidify/solidified_Matter_Message.h | 1336 +-- .../src/solidify/solidified_Matter_Plugin_0.h | 1499 +-- .../solidified_Matter_Plugin_1_Root.h | 652 +- ...ied_Matter_Plugin_2_Sensor_GenericSwitch.h | 350 + .../src/solidify/solidified_Matter_Session.h | 2717 ++--- .../solidify/solidified_Matter_zz_Device.h | 9625 +++++++++-------- 17 files changed, 10068 insertions(+), 8365 deletions(-) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch.be create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 8e8f5d36c..25b6cd0ff 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -216,6 +216,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_IM_Message.h" #include "solidify/solidified_Matter_IM_Subscription.h" #include "solidify/solidified_Matter_IM.h" +#include "solidify/solidified_Matter_EventHandler.h" #include "solidify/solidified_Matter_Control_Message.h" #include "solidify/solidified_Matter_Plugin_0.h" #include "solidify/solidified_Matter_Base38.h" @@ -259,6 +260,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_3_Sensor_Rain.h" #include "solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h" #include "solidify/solidified_Matter_Plugin_2_Fan.h" +#include "solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Fan.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h" @@ -337,6 +339,11 @@ module matter (scope: global, strings: weak) { UC_LIST, closure(module_matter_UC_LIST_closure) Profiler, class(be_class_Matter_Profiler) + // EVents priority levels + EVENT_DEBUG, int(0) + EVENT_INFO, int(1) + EVENT_CRITICAL, int(2) + // Status codes SUCCESS, int(0x00) FAILURE, int(0x01) @@ -429,6 +436,10 @@ module matter (scope: global, strings: weak) { Frame, class(be_class_Matter_Frame) MessageHandler, class(be_class_Matter_MessageHandler) + // Event Handler + EventHandler, class(be_class_Matter_EventHandler) + EventQueued, class(be_class_Matter_EventQueued) + // Interation Model Path, class(be_class_Matter_Path) PathGenerator, class(be_class_Matter_PathGenerator) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be new file mode 100644 index 000000000..12145524f --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be @@ -0,0 +1,220 @@ +# +# Matter_EventHandler.be - suppport for Matter Events +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +#@ solidify:Matter_EventHandler,weak +#@ solidify:Matter_EventQueued,weak + +################################################################################# +# Matter_Event_Queued class +# +# This class encapsulates any element within teh event queue +# Takes a `Matter_EventDataIB` +# +# Invariants: +# `priority` is guaranteed to be in range 0..2 +################################################################################# +class Matter_EventQueued + # common elements + var endpoint + var cluster + var event_id + var is_urgent + var priority + var event_no + var raw_tlv # content encoded as full TLV + + def init(event_ib) + self.endpoint = event_ib.path.endpoint + self.cluster = event_ib.path.cluster + self.event_id = event_ib.path.event + self.is_urgent = event_ib.path.is_urgent + self.priority = event_ib.priority + if (self.priority < 0) self.priority = 0 end + if (self.priority > matter.EVENT_CRITICAL) self.priority = matter.EVENT_CRITICAL end + self.event_no = int64.toint64(event_ib.event_number) # int64 + self.raw_tlv = event_ib.to_TLV().tlv2raw() # bytes() + end +end +matter.EventQueued = Matter_EventQueued + +# elements are made of `Matter_EventDataIB` +# var path # + # var node # u64 as bytes + # var endpoint # u16 + # var cluster # u32 + # var event # u32 + # var is_urgent # bool +# var event_number # u64 as bytes +# var priority # u8 +# # one of +# var epoch_timestamp # u64 +# var system_timestamp # u64 +# var delta_epoch_timestamp # u64 +# var delta_system_timestamp # u64 +# # data +# var data # any TLV + +# EVENT_DEBUG=0 +# EVENT_INFO=1 +# EVENT_CRITICAL=2 + +################################################################################# +# Matter_IM class +################################################################################# +class Matter_EventHandler + static var EVENT_NO_INCR = 1000 # counter increased when persisting + static var EVENT_NO_FILENAME = "_matter_event_no" + static var EVENT_QUEUE_SIZE_MAX = 10 # each queue is 10 elements depth + + # circular buffers + var queue_debug # queue of events for level DEBUG + var queue_info # queue of events for level INFO + var queue_critical # queue of events for level CRITICAL + + var device # link back to matter_device top object + # Events + var counter_event_no # event number, monotonically increasing even after restarts + var counter_event_no_persisted # the nest number persisted for after the restart + + def init(device) + self.device = device + self.queue_debug = [] + self.queue_info = [] + self.queue_critical = [] + self.load_event_no_persisted() # initializes self.counter_event_no and self.counter_event_no_persisted + end + + ##################################################################### + # load_event_no_persisted + # + # Load the next acceptable event_no from `persist` and persist it + # with a predefined gap `self.EVENT_NO_INCR` (default 1000) + def load_event_no_persisted() + import persist + var event_no_str = str(persist.find(self.EVENT_NO_FILENAME, "0")) + self.counter_event_no = int64.fromstring(event_no_str) + self.counter_event_no_persisted = self.counter_event_no.add(self.EVENT_NO_INCR) + # save back next slot + persist.setmember(self.EVENT_NO_FILENAME, self.counter_event_no_persisted.tostring()) + persist.save() + end + + ##################################################################### + # Enqueue event + # + # Takes `Matter_EventDataIB` + ##################################################################### + def queue_event(ev_ib) + var ev_queued = matter.EventQueued(ev_ib) + + var cur_prio = ev_queued.priority + + # we reuse the same logic as connectedhomeip + # https://github.com/project-chip/connectedhomeip/blob/master/src/app/EventManagement.h + # + # Here is a copy of the original comment: + + #--------------------------------------------------------------------------------- + * A newly generated event will be placed in the lowest-priority (in practice + * DEBUG) buffer, the one associated with the first LogStorageResource. If + * there is no space in that buffer, space will be created by evicting the + * oldest event currently in that buffer, until enough space is available. + * + * When an event is evicted from a buffer, there are two possibilities: + * + * 1) If the next LogStorageResource has a priority that is no higher than the + * event's priority, the event will be moved to that LogStorageResource's + * buffer. This may in turn require events to be evicted from that buffer. + * 2) If the next LogStorageResource has a priority that is higher than the + * event's priority, then the event is just dropped. + * + * This means that LogStorageResources at a given priority level are reserved + * for events of that priority level or higher priority. + * + * As a simple example, assume there are only two priority levels, DEBUG and + * CRITICAL, and two LogStorageResources with those priorities. In that case, + * old CRITICAL events will not start getting dropped until both buffers are + * full, while old DEBUG events will start getting dropped once the DEBUG + * LogStorageResource buffer is full. + ---------------------------------------------------------------------------------# + + # first step, always add to DEBUG queue + self.queue_debug.push(ev_queued) + # if DEBUG queue is full + if size(self.queue_debug) > self.EVENT_QUEUE_SIZE_MAX + # remove first (oldest element) + var ev_debug_removed = self.queue_debug.pop(0) + if ev_debug_removed.priority > matter.EVENT_DEBUG + # if removed item is higher than DEBUG, push to INFO queue + self.queue_info.push(ev_debug_removed) + # if INFO queue is full + if size(self.queue_info) > self.EVENT_QUEUE_SIZE_MAX + # remove first (oldest element) + var ev_info_removed = self.queue_info.pop(0) + if ev_info_removed.priority > matter.EVENT_INFO + # if removed item is higher than INFO, push to CRITICAL queue + self.queue_critical.push(ev_info_removed) + # if CRITICAL queue is full + if size(self.queue_critical) > self.EVENT_QUEUE_SIZE_MAX + # remove first (oldest element) + var ev_critical_removed = self.queue_critical.pop(0) + end + end + end + end + end + end + + ##################################################################### + # Events handling + ##################################################################### + # Get next event number + def get_next_event_no() + self.counter_event_no = self.counter_event_no.add(1) + if self.counter_event_no >= self.counter_event_no_persisted + self.load_event_no_persisted() # force an increment like done during boot + end + return self.counter_event_no + end + + + ##################################################################### + # Dump events for debugging + ##################################################################### + def dump() + tasmota.log(f"MTR: Events queues sizes: critical {size(self.queue_critical)}, info {size(self.queue_info)}, debug {size(self.queue_debug)}", 2) + var cnt = [0, 0, 0] # counters + for ev: self.queue_debug cnt[ev.priority] += 1 end + for ev: self.queue_info cnt[ev.priority] += 1 end + for ev: self.queue_critical cnt[ev.priority] += 1 end + tasmota.log(f"MTR: Events by types: critical {cnt[2]}, info {cnt[1]}, debug {cnt[0]}", 2) + end + +end +matter.EventHandler = Matter_EventHandler + +#- + +# Unit tests + + +-# + diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 32c19152d..007f68ad5 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -237,8 +237,11 @@ class Matter_IM # should return true if answered, false if passing to next handler def read_single_attribute(ret, pi, ctx, direct) var TLV = matter.TLV - var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - attr_name = attr_name ? " (" + attr_name + ")" : "" + var attr_name + if tasmota.loglevel(3) + attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) + attr_name = attr_name ? " (" + attr_name + ")" : "" + end # Special case to report unsupported item, if pi==nil ctx.status = nil # reset status, just in case @@ -277,7 +280,7 @@ class Matter_IM self.attributedata2raw(a1_raw_or_list, ctx, res) end - if !no_log + if tasmota.loglevel(3) && !no_log log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) end elif ctx.status != nil @@ -291,7 +294,7 @@ class Matter_IM end end else - if !no_log + if tasmota.loglevel(3) && !no_log log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3) end # ignore if content is nil and status is undefined @@ -349,6 +352,7 @@ class Matter_IM # structure is `ReadRequestMessage` 10.6.2 p.558 var ctx = matter.Path() ctx.msg = msg + var node_id = (msg != nil) ? msg.get_node_id() : nil # prepare the response var ret = matter.ReportDataMessage() @@ -366,11 +370,13 @@ class Matter_IM # expand endpoint if ctx.endpoint == nil || ctx.cluster == nil || ctx.attribute == nil # we need expansion, log first - if ctx.cluster != nil && ctx.attribute != nil - var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 3) - else - log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 3) + if tasmota.loglevel(3) + if ctx.cluster != nil && ctx.attribute != nil + var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) + log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 3) + else + log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 3) + end end end @@ -381,8 +387,43 @@ class Matter_IM ) end - # log("MTR: ReportDataMessage=" + str(ret), 3) - # log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3) + # tasmota.log(f">>>: event_1") + var event_requests = query.event_requests + var event_filters = query.event_filters + var event_no_min = nil # do we have a filter for minimum event_no (int64 or nil) + if event_requests # if not `nil` and not empty list + # read event minimum + if event_filters + for filter: event_filters # filter is an instance of `EventFilterIB` + tasmota.log(f"MTR: EventFilter {filter=} {node_id=}", 3) + var filter_node = int64.toint64(filter.node) # nil or int64 + if filter_node # there is a filter on node-id + if filter.node.tobytes() != node_id # the node id doesn't match + tasmota.log(f"MTR: node_id filter {filter_node.tobytes().tohex()} doesn't match {node_id.tohex()}") + continue + end + # specified minimum value + var new_event_no_min = int64.toint64(filter.event_min) + if (event_no_min != nil) || (event_no_min < new_event_no_min) + event_no_min = new_event_no_min + end + end + end + end + # event_no_min is either `nil` or has an `int64` value + + ret.event_reports = [] + for q: event_requests + # need to do expansion here + ctx.endpoint = q.endpoint + ctx.cluster = q.cluster + ctx.attribute = q.event + #TODO + tasmota.log(f"MTR: >Read_Event({session.local_session_id:%6i}) {ctx}", 3) + end + end + # tasmota.log("MTR: ReportDataMessage=" + str(ret), 3) + # tasmota.log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3) return ret end @@ -675,25 +716,24 @@ class Matter_IM # process IM 0x02 Read Request # # val is the TLV structure + # # returns `true` if processed, `false` if silently ignored, # or raises an exception def process_read_request(msg, val) matter.profiler.log("read_request_start") - # matter.profiler.log(str(val)) var query = matter.ReadRequestMessage().from_TLV(val) - # matter.profiler.log(str(query)) if query.attributes_requests != nil var ret = self._inner_process_read_request(msg.session, query, msg) self.send_report_data(msg, ret) end - - return true + return true # always consider succesful even if empty end ############################################################# - # process IM 0x02 Read Request + # process IM 0x02 Read Request - solo attribute + # + # ctx is the decoded context (cluster/attribute) # - # val is the TLV structure # returns `true` if processed, `false` if silently ignored, # or raises an exception def process_read_request_solo(msg, ctx) @@ -702,10 +742,8 @@ class Matter_IM ctx.msg = msg # find pi for this endpoint/cluster/attribute - var pi = self.device.process_attribute_read_solo(ctx) + var pi = self.device.resolve_attribute_read_solo(ctx) var res = nil - # matter.profiler.log("read_request_solo pi ok") - # log(f"MTR: process_read_request_solo {pi=}") var raw # this is the bytes() block we need to add to response (or nil) if pi != nil @@ -717,7 +755,7 @@ class Matter_IM if res != nil # check if the payload is a complex structure and too long to fit in a single response packet - if (res.is_list || res.is_array) && res.encode_len() > matter.IM_ReportData.MAX_MESSAGE + if (res.is_list || res.is_array) && (res.encode_len() > matter.IM_ReportData.MAX_MESSAGE) # revert to standard # the attribute will be read again, but it's hard to avoid it res = nil # indicated to GC that we don't need it again @@ -773,8 +811,11 @@ class Matter_IM # postpone lengthy operations after sending back response matter.profiler.log("RESPONSE SENT") - var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - attr_name = attr_name ? " (" + attr_name + ")" : "" + var attr_name + if tasmota.loglevel(3) + attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) + attr_name = attr_name ? " (" + attr_name + ")" : "" + end if res != nil if tasmota.loglevel(3) @@ -799,8 +840,7 @@ class Matter_IM end end - # matter.profiler.log("read_request_solo end") - return true + return true # always consider succesful even if empty end ############################################################# @@ -827,11 +867,11 @@ class Matter_IM ctx.attribute = q.attribute attr_req.push(str(ctx)) end - log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s", - msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id, query.fabric_filtered), 3) - if query.event_requests != nil && size(query.event_requests) > 0 - log(f"MTR: >Subscribe ({msg.session.local_session_id:6i}) event_requests_size={size(query.event_requests)}", 3) - end + log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s attr_req=%s event_req=%s", + msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, + sub.subscription_id, query.fabric_filtered, + query.attributes_requests != nil ? size(query.attributes_requests) : "-", + query.event_requests != nil ? size(query.event_requests) : "-"), 3) var ret = self._inner_process_read_request(msg.session, query, msg, !self.device.debug #-log only if debug enabled-#) # ret is of type `Matter_ReportDataMessage` @@ -1084,7 +1124,7 @@ class Matter_IM end # expand endpoint - if ctx.endpoint == nil + if tasmota.loglevel(3) && (ctx.endpoint == nil) # we need expansion, log first var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) log("MTR: Write_Attr " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 3) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be index 5a45b779f..38653625a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be @@ -444,6 +444,14 @@ class Matter_Frame end + ############################################################# + # compute the node_id for this message, via session and fabric + # + # returns bytes(8) + def get_node_id() + return self.session ? self.session.get_node_id() : nil + end + ############################################################# # Decode a message we are about to send, to ease debug def debug(raw) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 42e436513..9d54b769c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -69,6 +69,7 @@ class Matter_Plugin # 0x0033: 1, # Initial Release # 0x0034: 1, # Initial Release 0x0038: 2, # + # 0x003B: 1, # Initial Release # 0x003C: 1, # Initial Release # 0x003E: 1, # Initial Release 0x003F: 2, # Clarify KeySetWrite validation and behavior on invalid epoch key lengths @@ -180,7 +181,59 @@ class Matter_Plugin end ############################################################# - # get_clusters + # generate a new event + # + def publish_event(cluster, event, priority, data) + var event_ib = matter.EventDataIB() + var event_path = matter.EventPathIB() + event_path.endpoint = self.endpoint + event_path.cluster = cluster + event_path.event = event + event_ib.path = event_path + event_ib.priority = priority + event_ib.event_number = self.device.events.get_next_event_no() + event_ib.epoch_timestamp = tasmota.rtc('utc') + if (event_ib.epoch_timestamp < 1700000000) event_ib.epoch_timestamp = nil end # no valid time + event_ib.data = data + var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG " + log(f"MTR: +Add_Event ({priority_str}) [{event_path.endpoint:02X}]{event_path.cluster:04X}/{event_path.event:04X} ({event_ib.event_number:5i}) - {event_ib.data}", 2) + log(f"MTR: Publishing event {event_ib}", 4) + + self.device.events.queue_event(event_ib) + end +#- testing + +var root = matter_device.plugins[0] +var tlv_solo = matter.TLV.Matter_TLV_item() +tlv_solo.set(matter.TLV.U4, 42) +root.publish_event(0x001D, 0, matter.EVENT_CRITICAL, tlv_solo) +matter_device.events.dump() + +-# + +# elements are made of `Matter_EventDataIB` +# var path # + # var node # u64 as bytes + # var endpoint # u16 + # var cluster # u32 + # var event # u32 + # var is_urgent # bool +# var event_number # u64 as bytes +# var priority # u8 +# # one of +# var epoch_timestamp # u64 +# var system_timestamp # u64 +# var delta_epoch_timestamp # u64 +# var delta_system_timestamp # u64 +# # data +# var data # any TLV + +# EVENT_DEBUG=0 +# EVENT_INFO=1 +# EVENT_CRITICAL=2 + + ############################################################# + # consolidate_clusters # # Build a consolidated map of all the `CLUSTERS` static vars # from the inheritance hierarchy diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index c6abb638b..a01e7bcd2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -47,9 +47,12 @@ class Matter_Plugin_Root : Matter_Plugin ############################################################# # Constructor - # def init(device, endpoint, config) - # super(self).init(device, endpoint, config) - # end + def init(device, endpoint, config) + super(self).init(device, endpoint, config) + + self.publish_event(0x0028, 0x00, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U4, tasmota.version())) # Event StartUp - Software Version + self.publish_event(0x0033, 0x03, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # Event BootReason - PowerOnReboot - TODO if we need to refine + end ############################################################# # read an attribute @@ -233,7 +236,7 @@ class Matter_Plugin_Root : Matter_Plugin elif attribute == 0x0008 # ---------- HardwareVersionString / string ---------- return tlv_solo.set(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware']) elif attribute == 0x0009 # ---------- SoftwareVersion / u32 ---------- - return tlv_solo.set(TLV.U2, 1) + return tlv_solo.set(TLV.U4, tasmota.version()) elif attribute == 0x000A # ---------- SoftwareVersionString / string ---------- var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version'] var version_end = string.find(version_full, '(') diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch.be new file mode 100644 index 000000000..4b7a9300b --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch.be @@ -0,0 +1,100 @@ +# +# Matter_Plugin_Sensor_GenericSwitch.be - implements the behavior for a Generic Switch +# +# Copyright (C) 2023-2024 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# Matter plug-in for core behavior + +#@ solidify:Matter_Plugin_Sensor_GenericSwitch,weak + +class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device + static var TYPE = "gensw" # name of the plug-in in json + static var DISPLAY_NAME = "Generic Switch" # display name of the plug-in + static var ARG = "switch" # additional argument name (or empty if none) + static var ARG_HINT = "Switch number" + static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type + static var UPDATE_TIME = 750 # update every 750ms - TODO still necessary? + static var CLUSTERS = matter.consolidate_clusters(_class, { + # 0x001D: inherited # Descriptor Cluster 9.5 p.453 + # 0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485 + # 0x0003: [0,1], # Identify 1.2 p.16 + # 0x0004: [0], # Groups 1.3 p.21 + # 0x0005: [0,1,2,3,4,5], # Scenes 1.4 p.30 - no writable + 0x003B: [0, 1, 2], # Switch 1.12 + }) + static var TYPES = { 0x000F: 2 } # Generic Switch, rev 2 + + var tasmota_switch_index # Switch number in Tasmota (one based) + var shadow_value + + ############################################################# + # parse_configuration + # + # Parse configuration map + def parse_configuration(config) + self.tasmota_switch_index = int(config.find(self.ARG #-'relay'-#, 1)) + if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end + end + + ############################################################# + # Update shadow + # + def update_shadow() + super(self).update_shadow() + self.shadow_value = false + # TODO + end + + ############################################################# + # read an attribute + # + def read_attribute(session, ctx, tlv_solo) + var TLV = matter.TLV + var cluster = ctx.cluster + var attribute = ctx.attribute + + # ==================================================================================================== + if cluster == 0x003B # ========== Generic Switch, 1.12 ========== + # self.update_shadow_lazy() + if attribute == 0x0000 # ---------- NumberOfPositions / uint8 ---------- + return tlv_solo.set(TLV.U1, 2) # default to 2 positions + elif attribute == 0x0001 # ---------- CurrentPosition / uint8 ---------- + return tlv_solo.set(TLV.U1, 0) # TODO read value + elif attribute == 0x0002 # ---------- MultiPressMax / uint8 ---------- + return tlv_solo.set(TLV.U1, 2) # up to double press + + elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- + return tlv_solo.set(TLV.U4, 0x02 + 0x04 + 0x08) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchLongPress + end + + end + return super(self).read_attribute(session, ctx, tlv_solo) + end + + ############################################################# + # append_state_json + # + # Output the current state in JSON + # New values need to be appended with `,"key":value` (including prefix comma) + # + # Override the default behavior to use the key `OnOff` instead of `Power` + def append_state_json() + return f',"Switch":{int(self.shadow_onoff)}' + end + +end +matter.Plugin_Sensor_GenericSwitch = Matter_Plugin_Sensor_GenericSwitch diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be index db2d700e3..117c02eb6 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be @@ -260,6 +260,7 @@ class Matter_Session : Matter_Expirable def get_fabric_label() return self._fabric ? self._fabric.fabric_label : nil end def get_admin_subject() return self._fabric ? self._fabric.admin_subject : nil end def get_admin_vendor() return self._fabric ? self._fabric.admin_vendor : nil end + def get_node_id() return self._fabric ? self._fabric.device_id : nil end ############################################################# # Get operational key pair (private key) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 5f0c2fe04..7c3e44357 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -40,6 +40,8 @@ class Matter_Device var sessions # `matter.Session_Store()` objet var ui var tick # increment at each tick, avoids to repeat too frequently some actions + # Events + var events # Event handler # Commissioning open var commissioning_open # timestamp for timeout of commissioning (millis()) or `nil` if closed var commissioning_iterations # current PBKDF number of iterations @@ -105,6 +107,7 @@ class Matter_Device self.sessions = matter.Session_Store(self) self.sessions.load_fabrics() self.message_handler = matter.MessageHandler(self) + self.events = matter.EventHandler(self) self.ui = matter.UI(self) if tasmota.wifi()['up'] || tasmota.eth()['up'] @@ -561,7 +564,7 @@ class Matter_Device # Optimized version for a single endpoint/cluster/attribute # # Retrieve the plugin for a read - def process_attribute_read_solo(ctx) + def resolve_attribute_read_solo(ctx) var endpoint = ctx.endpoint # var endpoint_found = false # did any endpoint match var cluster = ctx.cluster @@ -768,11 +771,10 @@ class Matter_Device # {'32': {'filter': 'AXP192#Temperature', 'type': 'temperature'}, '40': {'filter': 'BMP280#Pressure', 'type': 'pressure'}, '34': {'filter': 'SHT3X#Temperature', 'type': 'temperature'}, '33': {'filter': 'BMP280#Temperature', 'type': 'temperature'}, '1': {'relay': 0, 'type': 'relay'}, '56': {'filter': 'SHT3X#Humidity', 'type': 'humidity'}, '0': {'type': 'root'}} def _instantiate_plugins_from_config(config) var endpoints = self.k2l_num(config) - # log("MTR: endpoints to be configured "+str(endpoints), 4) - log("MTR: Configuring endpoints", 2) # start with mandatory endpoint 0 for root node self.plugins.push(matter.Plugin_Root(self, 0, {})) + log("MTR: Configuring endpoints", 2) log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2) # always include an aggregator for dynamic endpoints diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h new file mode 100644 index 000000000..e5659f35c --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -0,0 +1,492 @@ +/* Solidification of Matter_EventHandler.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_EventHandler; + +/******************************************************************** +** Solidified function: queue_event +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_queue_event, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(EventQueued), + /* K2 */ be_nested_str_weak(priority), + /* K3 */ be_nested_str_weak(queue_debug), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), + /* K6 */ be_nested_str_weak(pop), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(EVENT_DEBUG), + /* K9 */ be_nested_str_weak(queue_info), + /* K10 */ be_nested_str_weak(EVENT_INFO), + /* K11 */ be_nested_str_weak(queue_critical), + }), + be_str_weak(queue_event), + &be_const_str_solidified, + ( &(const binstruction[58]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x880C0502, // 0004 GETMBR R3 R2 K2 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x8C100904, // 0006 GETMET R4 R4 K4 + 0x5C180400, // 0007 MOVE R6 R2 + 0x7C100400, // 0008 CALL R4 2 + 0x6010000C, // 0009 GETGBL R4 G12 + 0x88140103, // 000A GETMBR R5 R0 K3 + 0x7C100200, // 000B CALL R4 1 + 0x88140105, // 000C GETMBR R5 R0 K5 + 0x24100805, // 000D GT R4 R4 R5 + 0x78120029, // 000E JMPF R4 #0039 + 0x88100103, // 000F GETMBR R4 R0 K3 + 0x8C100906, // 0010 GETMET R4 R4 K6 + 0x58180007, // 0011 LDCONST R6 K7 + 0x7C100400, // 0012 CALL R4 2 + 0x88140902, // 0013 GETMBR R5 R4 K2 + 0xB81A0000, // 0014 GETNGBL R6 K0 + 0x88180D08, // 0015 GETMBR R6 R6 K8 + 0x24140A06, // 0016 GT R5 R5 R6 + 0x78160020, // 0017 JMPF R5 #0039 + 0x88140109, // 0018 GETMBR R5 R0 K9 + 0x8C140B04, // 0019 GETMET R5 R5 K4 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x7C140400, // 001B CALL R5 2 + 0x6014000C, // 001C GETGBL R5 G12 + 0x88180109, // 001D GETMBR R6 R0 K9 + 0x7C140200, // 001E CALL R5 1 + 0x88180105, // 001F GETMBR R6 R0 K5 + 0x24140A06, // 0020 GT R5 R5 R6 + 0x78160016, // 0021 JMPF R5 #0039 + 0x88140109, // 0022 GETMBR R5 R0 K9 + 0x8C140B06, // 0023 GETMET R5 R5 K6 + 0x581C0007, // 0024 LDCONST R7 K7 + 0x7C140400, // 0025 CALL R5 2 + 0x88180B02, // 0026 GETMBR R6 R5 K2 + 0xB81E0000, // 0027 GETNGBL R7 K0 + 0x881C0F0A, // 0028 GETMBR R7 R7 K10 + 0x24180C07, // 0029 GT R6 R6 R7 + 0x781A000D, // 002A JMPF R6 #0039 + 0x8818010B, // 002B GETMBR R6 R0 K11 + 0x8C180D04, // 002C GETMET R6 R6 K4 + 0x5C200A00, // 002D MOVE R8 R5 + 0x7C180400, // 002E CALL R6 2 + 0x6018000C, // 002F GETGBL R6 G12 + 0x881C010B, // 0030 GETMBR R7 R0 K11 + 0x7C180200, // 0031 CALL R6 1 + 0x881C0105, // 0032 GETMBR R7 R0 K5 + 0x24180C07, // 0033 GT R6 R6 R7 + 0x781A0003, // 0034 JMPF R6 #0039 + 0x8818010B, // 0035 GETMBR R6 R0 K11 + 0x8C180D06, // 0036 GETMET R6 R6 K6 + 0x58200007, // 0037 LDCONST R8 K7 + 0x7C180400, // 0038 CALL R6 2 + 0x80000000, // 0039 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(queue_debug), + /* K2 */ be_nested_str_weak(queue_info), + /* K3 */ be_nested_str_weak(queue_critical), + /* K4 */ be_nested_str_weak(load_event_no_persisted), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x60080012, // 0004 GETGBL R2 G18 + 0x7C080000, // 0005 CALL R2 0 + 0x90020402, // 0006 SETMBR R0 K2 R2 + 0x60080012, // 0007 GETGBL R2 G18 + 0x7C080000, // 0008 CALL R2 0 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0x8C080104, // 000A GETMET R2 R0 K4 + 0x7C080200, // 000B CALL R2 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_next_event_no +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(counter_event_no), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(counter_event_no_persisted), + /* K4 */ be_nested_str_weak(load_event_no_persisted), + }), + be_str_weak(get_next_event_no), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x90020001, // 0004 SETMBR R0 K0 R1 + 0x88040100, // 0005 GETMBR R1 R0 K0 + 0x88080103, // 0006 GETMBR R2 R0 K3 + 0x28040202, // 0007 GE R1 R1 R2 + 0x78060001, // 0008 JMPF R1 #000B + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x88040100, // 000B GETMBR R1 R0 K0 + 0x80040200, // 000C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: dump +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_dump, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Events_X20queues_X20sizes_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), + /* K3 */ be_nested_str_weak(queue_critical), + /* K4 */ be_nested_str_weak(queue_info), + /* K5 */ be_nested_str_weak(queue_debug), + /* K6 */ be_const_int(2), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(priority), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(stop_iteration), + /* K11 */ be_nested_str_weak(MTR_X3A_X20Events_X20by_X20types_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), + }), + be_str_weak(dump), + &be_const_str_solidified, + ( &(const binstruction[74]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x600C0018, // 0002 GETGBL R3 G24 + 0x58100002, // 0003 LDCONST R4 K2 + 0x6014000C, // 0004 GETGBL R5 G12 + 0x88180103, // 0005 GETMBR R6 R0 K3 + 0x7C140200, // 0006 CALL R5 1 + 0x6018000C, // 0007 GETGBL R6 G12 + 0x881C0104, // 0008 GETMBR R7 R0 K4 + 0x7C180200, // 0009 CALL R6 1 + 0x601C000C, // 000A GETGBL R7 G12 + 0x88200105, // 000B GETMBR R8 R0 K5 + 0x7C1C0200, // 000C CALL R7 1 + 0x7C0C0800, // 000D CALL R3 4 + 0x58100006, // 000E LDCONST R4 K6 + 0x7C040600, // 000F CALL R1 3 + 0x60040012, // 0010 GETGBL R1 G18 + 0x7C040000, // 0011 CALL R1 0 + 0x40080307, // 0012 CONNECT R2 R1 K7 + 0x40080307, // 0013 CONNECT R2 R1 K7 + 0x40080307, // 0014 CONNECT R2 R1 K7 + 0x60080010, // 0015 GETGBL R2 G16 + 0x880C0105, // 0016 GETMBR R3 R0 K5 + 0x7C080200, // 0017 CALL R2 1 + 0xA8020006, // 0018 EXBLK 0 #0020 + 0x5C0C0400, // 0019 MOVE R3 R2 + 0x7C0C0000, // 001A CALL R3 0 + 0x88100708, // 001B GETMBR R4 R3 K8 + 0x94140204, // 001C GETIDX R5 R1 R4 + 0x00140B09, // 001D ADD R5 R5 K9 + 0x98040805, // 001E SETIDX R1 R4 R5 + 0x7001FFF8, // 001F JMP #0019 + 0x5808000A, // 0020 LDCONST R2 K10 + 0xAC080200, // 0021 CATCH R2 1 0 + 0xB0080000, // 0022 RAISE 2 R0 R0 + 0x60080010, // 0023 GETGBL R2 G16 + 0x880C0104, // 0024 GETMBR R3 R0 K4 + 0x7C080200, // 0025 CALL R2 1 + 0xA8020006, // 0026 EXBLK 0 #002E + 0x5C0C0400, // 0027 MOVE R3 R2 + 0x7C0C0000, // 0028 CALL R3 0 + 0x88100708, // 0029 GETMBR R4 R3 K8 + 0x94140204, // 002A GETIDX R5 R1 R4 + 0x00140B09, // 002B ADD R5 R5 K9 + 0x98040805, // 002C SETIDX R1 R4 R5 + 0x7001FFF8, // 002D JMP #0027 + 0x5808000A, // 002E LDCONST R2 K10 + 0xAC080200, // 002F CATCH R2 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x60080010, // 0031 GETGBL R2 G16 + 0x880C0103, // 0032 GETMBR R3 R0 K3 + 0x7C080200, // 0033 CALL R2 1 + 0xA8020006, // 0034 EXBLK 0 #003C + 0x5C0C0400, // 0035 MOVE R3 R2 + 0x7C0C0000, // 0036 CALL R3 0 + 0x88100708, // 0037 GETMBR R4 R3 K8 + 0x94140204, // 0038 GETIDX R5 R1 R4 + 0x00140B09, // 0039 ADD R5 R5 K9 + 0x98040805, // 003A SETIDX R1 R4 R5 + 0x7001FFF8, // 003B JMP #0035 + 0x5808000A, // 003C LDCONST R2 K10 + 0xAC080200, // 003D CATCH R2 1 0 + 0xB0080000, // 003E RAISE 2 R0 R0 + 0xB80A0000, // 003F GETNGBL R2 K0 + 0x8C080501, // 0040 GETMET R2 R2 K1 + 0x60100018, // 0041 GETGBL R4 G24 + 0x5814000B, // 0042 LDCONST R5 K11 + 0x94180306, // 0043 GETIDX R6 R1 K6 + 0x941C0309, // 0044 GETIDX R7 R1 K9 + 0x94200307, // 0045 GETIDX R8 R1 K7 + 0x7C100800, // 0046 CALL R4 4 + 0x58140006, // 0047 LDCONST R5 K6 + 0x7C080600, // 0048 CALL R2 3 + 0x80000000, // 0049 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: load_event_no_persisted +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(persist), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(EVENT_NO_FILENAME), + /* K3 */ be_nested_str_weak(0), + /* K4 */ be_nested_str_weak(counter_event_no), + /* K5 */ be_nested_str_weak(int64), + /* K6 */ be_nested_str_weak(fromstring), + /* K7 */ be_nested_str_weak(counter_event_no_persisted), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(EVENT_NO_INCR), + /* K10 */ be_nested_str_weak(setmember), + /* K11 */ be_nested_str_weak(tostring), + /* K12 */ be_nested_str_weak(save), + }), + be_str_weak(load_event_no_persisted), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x60080008, // 0001 GETGBL R2 G8 + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x88140102, // 0003 GETMBR R5 R0 K2 + 0x58180003, // 0004 LDCONST R6 K3 + 0x7C0C0600, // 0005 CALL R3 3 + 0x7C080200, // 0006 CALL R2 1 + 0xB80E0A00, // 0007 GETNGBL R3 K5 + 0x8C0C0706, // 0008 GETMET R3 R3 K6 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x90020803, // 000B SETMBR R0 K4 R3 + 0x880C0104, // 000C GETMBR R3 R0 K4 + 0x8C0C0708, // 000D GETMET R3 R3 K8 + 0x88140109, // 000E GETMBR R5 R0 K9 + 0x7C0C0400, // 000F CALL R3 2 + 0x90020E03, // 0010 SETMBR R0 K7 R3 + 0x8C0C030A, // 0011 GETMET R3 R1 K10 + 0x88140102, // 0012 GETMBR R5 R0 K2 + 0x88180107, // 0013 GETMBR R6 R0 K7 + 0x8C180D0B, // 0014 GETMET R6 R6 K11 + 0x7C180200, // 0015 CALL R6 1 + 0x7C0C0600, // 0016 CALL R3 3 + 0x8C0C030C, // 0017 GETMET R3 R1 K12 + 0x7C0C0200, // 0018 CALL R3 1 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_EventHandler +********************************************************************/ +be_local_class(Matter_EventHandler, + 6, + NULL, + be_nested_map(14, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(EVENT_NO_INCR, -1), be_const_int(1000) }, + { be_const_key_weak(queue_info, -1), be_const_var(1) }, + { be_const_key_weak(queue_critical, 11), be_const_var(2) }, + { be_const_key_weak(queue_event, -1), be_const_closure(class_Matter_EventHandler_queue_event_closure) }, + { be_const_key_weak(counter_event_no_persisted, 6), be_const_var(5) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventHandler_init_closure) }, + { be_const_key_weak(get_next_event_no, -1), be_const_closure(class_Matter_EventHandler_get_next_event_no_closure) }, + { be_const_key_weak(dump, -1), be_const_closure(class_Matter_EventHandler_dump_closure) }, + { be_const_key_weak(queue_debug, 10), be_const_var(0) }, + { be_const_key_weak(EVENT_NO_FILENAME, -1), be_nested_str_weak(_matter_event_no) }, + { be_const_key_weak(counter_event_no, -1), be_const_var(4) }, + { be_const_key_weak(EVENT_QUEUE_SIZE_MAX, -1), be_const_int(10) }, + { be_const_key_weak(load_event_no_persisted, -1), be_const_closure(class_Matter_EventHandler_load_event_no_persisted_closure) }, + { be_const_key_weak(device, -1), be_const_var(3) }, + })), + be_str_weak(Matter_EventHandler) +); + +extern const bclass be_class_Matter_EventQueued; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(path), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(event_id), + /* K4 */ be_nested_str_weak(event), + /* K5 */ be_nested_str_weak(is_urgent), + /* K6 */ be_nested_str_weak(priority), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(matter), + /* K9 */ be_nested_str_weak(EVENT_CRITICAL), + /* K10 */ be_nested_str_weak(event_no), + /* K11 */ be_nested_str_weak(int64), + /* K12 */ be_nested_str_weak(toint64), + /* K13 */ be_nested_str_weak(event_number), + /* K14 */ be_nested_str_weak(raw_tlv), + /* K15 */ be_nested_str_weak(to_TLV), + /* K16 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x88080301, // 0000 GETMBR R2 R1 K1 + 0x88080500, // 0001 GETMBR R2 R2 K0 + 0x90020002, // 0002 SETMBR R0 K0 R2 + 0x88080301, // 0003 GETMBR R2 R1 K1 + 0x88080502, // 0004 GETMBR R2 R2 K2 + 0x90020402, // 0005 SETMBR R0 K2 R2 + 0x88080301, // 0006 GETMBR R2 R1 K1 + 0x88080504, // 0007 GETMBR R2 R2 K4 + 0x90020602, // 0008 SETMBR R0 K3 R2 + 0x88080301, // 0009 GETMBR R2 R1 K1 + 0x88080505, // 000A GETMBR R2 R2 K5 + 0x90020A02, // 000B SETMBR R0 K5 R2 + 0x88080306, // 000C GETMBR R2 R1 K6 + 0x90020C02, // 000D SETMBR R0 K6 R2 + 0x88080106, // 000E GETMBR R2 R0 K6 + 0x14080507, // 000F LT R2 R2 K7 + 0x780A0000, // 0010 JMPF R2 #0012 + 0x90020D07, // 0011 SETMBR R0 K6 K7 + 0x88080106, // 0012 GETMBR R2 R0 K6 + 0xB80E1000, // 0013 GETNGBL R3 K8 + 0x880C0709, // 0014 GETMBR R3 R3 K9 + 0x24080403, // 0015 GT R2 R2 R3 + 0x780A0002, // 0016 JMPF R2 #001A + 0xB80A1000, // 0017 GETNGBL R2 K8 + 0x88080509, // 0018 GETMBR R2 R2 K9 + 0x90020C02, // 0019 SETMBR R0 K6 R2 + 0xB80A1600, // 001A GETNGBL R2 K11 + 0x8C08050C, // 001B GETMET R2 R2 K12 + 0x8810030D, // 001C GETMBR R4 R1 K13 + 0x7C080400, // 001D CALL R2 2 + 0x90021402, // 001E SETMBR R0 K10 R2 + 0x8C08030F, // 001F GETMET R2 R1 K15 + 0x7C080200, // 0020 CALL R2 1 + 0x8C080510, // 0021 GETMET R2 R2 K16 + 0x7C080200, // 0022 CALL R2 1 + 0x90021C02, // 0023 SETMBR R0 K14 R2 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_EventQueued +********************************************************************/ +be_local_class(Matter_EventQueued, + 7, + NULL, + be_nested_map(8, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(is_urgent, -1), be_const_var(3) }, + { be_const_key_weak(priority, -1), be_const_var(4) }, + { be_const_key_weak(endpoint, -1), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventQueued_init_closure) }, + { be_const_key_weak(raw_tlv, 2), be_const_var(6) }, + { be_const_key_weak(event_id, 6), be_const_var(2) }, + { be_const_key_weak(cluster, -1), be_const_var(1) }, + { be_const_key_weak(event_no, 0), be_const_var(5) }, + })), + be_str_weak(Matter_EventQueued) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 1df1d46ab..52c50b066 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -1454,7 +1454,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ &be_class_Matter_IM, }), 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ + ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(WriteRequestMessage), /* K2 */ be_nested_str_weak(from_TLV), @@ -1474,20 +1474,22 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ /* K16 */ be_nested_str_weak(status), /* K17 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K18 */ be_nested_str_weak(INVALID_ACTION), - /* K19 */ be_nested_str_weak(get_attribute_name), - /* K20 */ be_nested_str_weak(log), - /* K21 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K22 */ be_nested_str_weak(_X20_X28), - /* K23 */ be_nested_str_weak(_X29), - /* K24 */ be_nested_str_weak(), - /* K25 */ be_const_int(3), - /* K26 */ be_nested_str_weak(process_attribute_expansion), - /* K27 */ be_nested_str_weak(stop_iteration), - /* K28 */ be_nested_str_weak(send_write_response), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(get_attribute_name), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K25 */ be_nested_str_weak(_X20_X28), + /* K26 */ be_nested_str_weak(_X29), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(process_attribute_expansion), + /* K29 */ be_nested_str_weak(stop_iteration), + /* K30 */ be_nested_str_weak(send_write_response), }), be_str_weak(process_write_request), &be_const_str_solidified, - ( &(const binstruction[103]) { /* code */ + ( &(const binstruction[108]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 @@ -1506,7 +1508,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x88200708, // 000F GETMBR R8 R3 K8 0x4C240000, // 0010 LDNIL R9 0x20201009, // 0011 NE R8 R8 R9 - 0x78220050, // 0012 JMPF R8 #0064 + 0x78220055, // 0012 JMPF R8 #0069 0xB8220000, // 0013 GETNGBL R8 K0 0x8C201109, // 0014 GETMET R8 R8 K9 0x7C200200, // 0015 CALL R8 1 @@ -1516,7 +1518,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x60240010, // 0019 GETGBL R9 G16 0x88280708, // 001A GETMBR R10 R3 K8 0x7C240200, // 001B CALL R9 1 - 0xA802003C, // 001C EXBLK 0 #005A + 0xA8020041, // 001C EXBLK 0 #005F 0x5C281200, // 001D MOVE R10 R9 0x7C280000, // 001E CALL R10 0 0x882C150B, // 001F GETMBR R11 R10 K11 @@ -1549,48 +1551,53 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0x50480200, // 003A LDBOOL R18 1 0 0x7C340A00, // 003B CALL R13 5 0x7001FFDF, // 003C JMP #001D - 0x88340F0D, // 003D GETMBR R13 R7 K13 - 0x4C380000, // 003E LDNIL R14 - 0x1C341A0E, // 003F EQ R13 R13 R14 - 0x78360011, // 0040 JMPF R13 #0053 - 0xB8360000, // 0041 GETNGBL R13 K0 - 0x8C341B13, // 0042 GETMET R13 R13 K19 - 0x883C0F0E, // 0043 GETMBR R15 R7 K14 - 0x88400F0F, // 0044 GETMBR R16 R7 K15 - 0x7C340600, // 0045 CALL R13 3 - 0xB83A2800, // 0046 GETNGBL R14 K20 - 0x603C0008, // 0047 GETGBL R15 G8 - 0x5C400E00, // 0048 MOVE R16 R7 - 0x7C3C0200, // 0049 CALL R15 1 - 0x003E2A0F, // 004A ADD R15 K21 R15 - 0x78360002, // 004B JMPF R13 #004F - 0x00422C0D, // 004C ADD R16 K22 R13 - 0x00402117, // 004D ADD R16 R16 K23 - 0x70020000, // 004E JMP #0050 - 0x58400018, // 004F LDCONST R16 K24 - 0x003C1E10, // 0050 ADD R15 R15 R16 - 0x58400019, // 0051 LDCONST R16 K25 - 0x7C380400, // 0052 CALL R14 2 - 0x88340104, // 0053 GETMBR R13 R0 K4 - 0x8C341B1A, // 0054 GETMET R13 R13 K26 - 0x5C3C0E00, // 0055 MOVE R15 R7 - 0x84400001, // 0056 CLOSURE R16 P1 - 0x7C340600, // 0057 CALL R13 3 - 0xA0240000, // 0058 CLOSE R9 - 0x7001FFC2, // 0059 JMP #001D - 0x5824001B, // 005A LDCONST R9 K27 - 0xAC240200, // 005B CATCH R9 1 0 - 0xB0080000, // 005C RAISE 2 R0 R0 - 0x5C240800, // 005D MOVE R9 R4 - 0x74260003, // 005E JMPT R9 #0063 - 0x8C24011C, // 005F GETMET R9 R0 K28 - 0x5C2C0200, // 0060 MOVE R11 R1 - 0x5C301000, // 0061 MOVE R12 R8 - 0x7C240600, // 0062 CALL R9 3 - 0xA0200000, // 0063 CLOSE R8 - 0x50200200, // 0064 LDBOOL R8 1 0 - 0xA0000000, // 0065 CLOSE R0 - 0x80041000, // 0066 RET 1 R8 + 0xB8362600, // 003D GETNGBL R13 K19 + 0x8C341B14, // 003E GETMET R13 R13 K20 + 0x583C0015, // 003F LDCONST R15 K21 + 0x7C340400, // 0040 CALL R13 2 + 0x78360015, // 0041 JMPF R13 #0058 + 0x88340F0D, // 0042 GETMBR R13 R7 K13 + 0x4C380000, // 0043 LDNIL R14 + 0x1C341A0E, // 0044 EQ R13 R13 R14 + 0x78360011, // 0045 JMPF R13 #0058 + 0xB8360000, // 0046 GETNGBL R13 K0 + 0x8C341B16, // 0047 GETMET R13 R13 K22 + 0x883C0F0E, // 0048 GETMBR R15 R7 K14 + 0x88400F0F, // 0049 GETMBR R16 R7 K15 + 0x7C340600, // 004A CALL R13 3 + 0xB83A2E00, // 004B GETNGBL R14 K23 + 0x603C0008, // 004C GETGBL R15 G8 + 0x5C400E00, // 004D MOVE R16 R7 + 0x7C3C0200, // 004E CALL R15 1 + 0x003E300F, // 004F ADD R15 K24 R15 + 0x78360002, // 0050 JMPF R13 #0054 + 0x0042320D, // 0051 ADD R16 K25 R13 + 0x0040211A, // 0052 ADD R16 R16 K26 + 0x70020000, // 0053 JMP #0055 + 0x5840001B, // 0054 LDCONST R16 K27 + 0x003C1E10, // 0055 ADD R15 R15 R16 + 0x58400015, // 0056 LDCONST R16 K21 + 0x7C380400, // 0057 CALL R14 2 + 0x88340104, // 0058 GETMBR R13 R0 K4 + 0x8C341B1C, // 0059 GETMET R13 R13 K28 + 0x5C3C0E00, // 005A MOVE R15 R7 + 0x84400001, // 005B CLOSURE R16 P1 + 0x7C340600, // 005C CALL R13 3 + 0xA0240000, // 005D CLOSE R9 + 0x7001FFBD, // 005E JMP #001D + 0x5824001D, // 005F LDCONST R9 K29 + 0xAC240200, // 0060 CATCH R9 1 0 + 0xB0080000, // 0061 RAISE 2 R0 R0 + 0x5C240800, // 0062 MOVE R9 R4 + 0x74260003, // 0063 JMPT R9 #0068 + 0x8C24011E, // 0064 GETMET R9 R0 K30 + 0x5C2C0200, // 0065 MOVE R11 R1 + 0x5C301000, // 0066 MOVE R12 R8 + 0x7C240600, // 0067 CALL R9 3 + 0xA0200000, // 0068 CLOSE R8 + 0x50200200, // 0069 LDBOOL R8 1 0 + 0xA0000000, // 006A CLOSE R0 + 0x80041000, // 006B RET 1 R8 }) ) ); @@ -2196,7 +2203,7 @@ be_local_closure(class_Matter_IM_send_status, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ be_nested_proto( - 18, /* nstack */ + 23, /* nstack */ 5, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2219,33 +2226,33 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ ( &(const bvalue[35]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(get_attribute_name), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(_X20_X28), - /* K6 */ be_nested_str_weak(_X29), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_nested_str_weak(status), - /* K9 */ be_nested_str_weak(read_attribute), - /* K10 */ be_nested_str_weak(tlv_solo), - /* K11 */ be_nested_str_weak(to_str_val), - /* K12 */ be_nested_str_weak(is_list), - /* K13 */ be_nested_str_weak(is_array), - /* K14 */ be_nested_str_weak(encode_len), - /* K15 */ be_nested_str_weak(IM_ReportData), - /* K16 */ be_nested_str_weak(MAX_MESSAGE), - /* K17 */ be_nested_str_weak(Matter_TLV_array), - /* K18 */ be_nested_str_weak(attributedata2raw), - /* K19 */ be_nested_str_weak(push), - /* K20 */ be_nested_str_weak(val), - /* K21 */ be_nested_str_weak(stop_iteration), - /* K22 */ be_nested_str_weak(log), - /* K23 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K24 */ be_nested_str_weak(local_session_id), - /* K25 */ be_const_int(3), - /* K26 */ be_nested_str_weak(attributestatus2raw), - /* K27 */ be_nested_str_weak(tasmota), - /* K28 */ be_nested_str_weak(loglevel), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(get_attribute_name), + /* K6 */ be_nested_str_weak(cluster), + /* K7 */ be_nested_str_weak(attribute), + /* K8 */ be_nested_str_weak(_X20_X28), + /* K9 */ be_nested_str_weak(_X29), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(status), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(tlv_solo), + /* K14 */ be_nested_str_weak(to_str_val), + /* K15 */ be_nested_str_weak(is_list), + /* K16 */ be_nested_str_weak(is_array), + /* K17 */ be_nested_str_weak(encode_len), + /* K18 */ be_nested_str_weak(IM_ReportData), + /* K19 */ be_nested_str_weak(MAX_MESSAGE), + /* K20 */ be_nested_str_weak(Matter_TLV_array), + /* K21 */ be_nested_str_weak(attributedata2raw), + /* K22 */ be_nested_str_weak(push), + /* K23 */ be_nested_str_weak(val), + /* K24 */ be_nested_str_weak(stop_iteration), + /* K25 */ be_nested_str_weak(log), + /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K27 */ be_nested_str_weak(local_session_id), + /* K28 */ be_nested_str_weak(attributestatus2raw), /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), @@ -2255,242 +2262,259 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ }), be_str_weak(read_single_attribute), &be_const_str_solidified, - ( &(const binstruction[235]) { /* code */ + ( &(const binstruction[252]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 - 0xB8160000, // 0002 GETNGBL R5 K0 - 0x8C140B02, // 0003 GETMET R5 R5 K2 - 0x881C0503, // 0004 GETMBR R7 R2 K3 - 0x88200504, // 0005 GETMBR R8 R2 K4 - 0x7C140600, // 0006 CALL R5 3 - 0x78160002, // 0007 JMPF R5 #000B - 0x001A0A05, // 0008 ADD R6 K5 R5 - 0x00180D06, // 0009 ADD R6 R6 K6 - 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x5C140C00, // 000C MOVE R5 R6 - 0x4C180000, // 000D LDNIL R6 - 0x900A1006, // 000E SETMBR R2 K8 R6 - 0x4C180000, // 000F LDNIL R6 - 0x20180206, // 0010 NE R6 R1 R6 - 0x781A0006, // 0011 JMPF R6 #0019 - 0x8C180309, // 0012 GETMET R6 R1 K9 - 0x68200000, // 0013 GETUPV R8 U0 - 0x5C240400, // 0014 MOVE R9 R2 - 0x68280001, // 0015 GETUPV R10 U1 - 0x8828150A, // 0016 GETMBR R10 R10 K10 - 0x7C180800, // 0017 CALL R6 4 - 0x70020000, // 0018 JMP #001A - 0x4C180000, // 0019 LDNIL R6 - 0x501C0200, // 001A LDBOOL R7 1 0 - 0x4C200000, // 001B LDNIL R8 - 0x4C240000, // 001C LDNIL R9 - 0x20240C09, // 001D NE R9 R6 R9 - 0x78260053, // 001E JMPF R9 #0073 - 0x58240007, // 001F LDCONST R9 K7 - 0x68280002, // 0020 GETUPV R10 U2 - 0x742A0002, // 0021 JMPT R10 #0025 - 0x8C280D0B, // 0022 GETMET R10 R6 K11 - 0x7C280200, // 0023 CALL R10 1 - 0x5C241400, // 0024 MOVE R9 R10 - 0x88280D0C, // 0025 GETMBR R10 R6 K12 - 0x742A0001, // 0026 JMPT R10 #0029 - 0x88280D0D, // 0027 GETMBR R10 R6 K13 - 0x782A0031, // 0028 JMPF R10 #005B + 0x4C140000, // 0002 LDNIL R5 + 0xB81A0400, // 0003 GETNGBL R6 K2 + 0x8C180D03, // 0004 GETMET R6 R6 K3 + 0x58200004, // 0005 LDCONST R8 K4 + 0x7C180400, // 0006 CALL R6 2 + 0x781A000B, // 0007 JMPF R6 #0014 + 0xB81A0000, // 0008 GETNGBL R6 K0 + 0x8C180D05, // 0009 GETMET R6 R6 K5 + 0x88200506, // 000A GETMBR R8 R2 K6 + 0x88240507, // 000B GETMBR R9 R2 K7 + 0x7C180600, // 000C CALL R6 3 + 0x5C140C00, // 000D MOVE R5 R6 + 0x78160002, // 000E JMPF R5 #0012 + 0x001A1005, // 000F ADD R6 K8 R5 + 0x00180D09, // 0010 ADD R6 R6 K9 + 0x70020000, // 0011 JMP #0013 + 0x5818000A, // 0012 LDCONST R6 K10 + 0x5C140C00, // 0013 MOVE R5 R6 + 0x4C180000, // 0014 LDNIL R6 + 0x900A1606, // 0015 SETMBR R2 K11 R6 + 0x4C180000, // 0016 LDNIL R6 + 0x20180206, // 0017 NE R6 R1 R6 + 0x781A0006, // 0018 JMPF R6 #0020 + 0x8C18030C, // 0019 GETMET R6 R1 K12 + 0x68200000, // 001A GETUPV R8 U0 + 0x5C240400, // 001B MOVE R9 R2 + 0x68280001, // 001C GETUPV R10 U1 + 0x8828150D, // 001D GETMBR R10 R10 K13 + 0x7C180800, // 001E CALL R6 4 + 0x70020000, // 001F JMP #0021 + 0x4C180000, // 0020 LDNIL R6 + 0x501C0200, // 0021 LDBOOL R7 1 0 + 0x4C200000, // 0022 LDNIL R8 + 0x4C240000, // 0023 LDNIL R9 + 0x20240C09, // 0024 NE R9 R6 R9 + 0x78260058, // 0025 JMPF R9 #007F + 0x5824000A, // 0026 LDCONST R9 K10 + 0x68280002, // 0027 GETUPV R10 U2 + 0x742A0002, // 0028 JMPT R10 #002C 0x8C280D0E, // 0029 GETMET R10 R6 K14 0x7C280200, // 002A CALL R10 1 - 0xB82E0000, // 002B GETNGBL R11 K0 - 0x882C170F, // 002C GETMBR R11 R11 K15 - 0x882C1710, // 002D GETMBR R11 R11 K16 - 0x2428140B, // 002E GT R10 R10 R11 - 0x782A002A, // 002F JMPF R10 #005B - 0x60280012, // 0030 GETGBL R10 G18 - 0x7C280000, // 0031 CALL R10 0 - 0x5C201400, // 0032 MOVE R8 R10 - 0x60280015, // 0033 GETGBL R10 G21 - 0x542E002F, // 0034 LDINT R11 48 - 0x7C280200, // 0035 CALL R10 1 - 0x8C2C0911, // 0036 GETMET R11 R4 K17 - 0x7C2C0200, // 0037 CALL R11 1 - 0x68300001, // 0038 GETUPV R12 U1 - 0x8C301912, // 0039 GETMET R12 R12 K18 - 0x5C381400, // 003A MOVE R14 R10 - 0x5C3C0400, // 003B MOVE R15 R2 - 0x5C401600, // 003C MOVE R16 R11 - 0x50440000, // 003D LDBOOL R17 0 0 - 0x7C300A00, // 003E CALL R12 5 - 0x8C301113, // 003F GETMET R12 R8 K19 - 0x5C381400, // 0040 MOVE R14 R10 - 0x7C300400, // 0041 CALL R12 2 - 0x60300010, // 0042 GETGBL R12 G16 - 0x88340D14, // 0043 GETMBR R13 R6 K20 - 0x7C300200, // 0044 CALL R12 1 - 0xA8020010, // 0045 EXBLK 0 #0057 - 0x5C341800, // 0046 MOVE R13 R12 - 0x7C340000, // 0047 CALL R13 0 - 0x60380015, // 0048 GETGBL R14 G21 - 0x543E002F, // 0049 LDINT R15 48 - 0x7C380200, // 004A CALL R14 1 - 0x5C281C00, // 004B MOVE R10 R14 - 0x68380001, // 004C GETUPV R14 U1 - 0x8C381D12, // 004D GETMET R14 R14 K18 - 0x5C401400, // 004E MOVE R16 R10 - 0x5C440400, // 004F MOVE R17 R2 - 0x5C481A00, // 0050 MOVE R18 R13 - 0x504C0200, // 0051 LDBOOL R19 1 0 - 0x7C380A00, // 0052 CALL R14 5 - 0x8C381113, // 0053 GETMET R14 R8 K19 - 0x5C401400, // 0054 MOVE R16 R10 - 0x7C380400, // 0055 CALL R14 2 - 0x7001FFEE, // 0056 JMP #0046 - 0x58300015, // 0057 LDCONST R12 K21 - 0xAC300200, // 0058 CATCH R12 1 0 - 0xB0080000, // 0059 RAISE 2 R0 R0 - 0x70020009, // 005A JMP #0065 - 0x60280015, // 005B GETGBL R10 G21 - 0x542E002F, // 005C LDINT R11 48 - 0x7C280200, // 005D CALL R10 1 - 0x5C201400, // 005E MOVE R8 R10 - 0x68280001, // 005F GETUPV R10 U1 - 0x8C281512, // 0060 GETMET R10 R10 K18 - 0x5C301000, // 0061 MOVE R12 R8 - 0x5C340400, // 0062 MOVE R13 R2 - 0x5C380C00, // 0063 MOVE R14 R6 - 0x7C280800, // 0064 CALL R10 4 - 0x68280002, // 0065 GETUPV R10 U2 - 0x742A000A, // 0066 JMPT R10 #0072 - 0xB82A2C00, // 0067 GETNGBL R10 K22 - 0x602C0018, // 0068 GETGBL R11 G24 - 0x58300017, // 0069 LDCONST R12 K23 - 0x68340000, // 006A GETUPV R13 U0 - 0x88341B18, // 006B GETMBR R13 R13 K24 - 0x5C380400, // 006C MOVE R14 R2 - 0x5C3C0A00, // 006D MOVE R15 R5 - 0x5C401200, // 006E MOVE R16 R9 - 0x7C2C0A00, // 006F CALL R11 5 - 0x58300019, // 0070 LDCONST R12 K25 - 0x7C280400, // 0071 CALL R10 2 - 0x70020039, // 0072 JMP #00AD - 0x88240508, // 0073 GETMBR R9 R2 K8 - 0x4C280000, // 0074 LDNIL R10 - 0x2024120A, // 0075 NE R9 R9 R10 - 0x78260025, // 0076 JMPF R9 #009D - 0x780E0023, // 0077 JMPF R3 #009C - 0x60240015, // 0078 GETGBL R9 G21 - 0x542A002F, // 0079 LDINT R10 48 - 0x7C240200, // 007A CALL R9 1 - 0x5C201200, // 007B MOVE R8 R9 - 0x68240001, // 007C GETUPV R9 U1 - 0x8C24131A, // 007D GETMET R9 R9 K26 - 0x5C2C1000, // 007E MOVE R11 R8 - 0x5C300400, // 007F MOVE R12 R2 - 0x88340508, // 0080 GETMBR R13 R2 K8 - 0x7C240800, // 0081 CALL R9 4 - 0xB8263600, // 0082 GETNGBL R9 K27 - 0x8C24131C, // 0083 GETMET R9 R9 K28 - 0x582C0019, // 0084 LDCONST R11 K25 - 0x7C240400, // 0085 CALL R9 2 - 0x78260014, // 0086 JMPF R9 #009C - 0xB8262C00, // 0087 GETNGBL R9 K22 - 0x60280018, // 0088 GETGBL R10 G24 - 0x582C001D, // 0089 LDCONST R11 K29 - 0x68300000, // 008A GETUPV R12 U0 - 0x88301918, // 008B GETMBR R12 R12 K24 - 0x60340008, // 008C GETGBL R13 G8 - 0x5C380400, // 008D MOVE R14 R2 - 0x7C340200, // 008E CALL R13 1 - 0x5C380A00, // 008F MOVE R14 R5 - 0x883C0508, // 0090 GETMBR R15 R2 K8 - 0x88400508, // 0091 GETMBR R16 R2 K8 - 0xB8460000, // 0092 GETNGBL R17 K0 - 0x8844231E, // 0093 GETMBR R17 R17 K30 - 0x1C402011, // 0094 EQ R16 R16 R17 - 0x78420001, // 0095 JMPF R16 #0098 - 0x5840001E, // 0096 LDCONST R16 K30 - 0x70020000, // 0097 JMP #0099 - 0x58400007, // 0098 LDCONST R16 K7 - 0x7C280C00, // 0099 CALL R10 6 - 0x582C0019, // 009A LDCONST R11 K25 - 0x7C240400, // 009B CALL R9 2 - 0x7002000F, // 009C JMP #00AD - 0x68240002, // 009D GETUPV R9 U2 - 0x7426000B, // 009E JMPT R9 #00AB - 0xB8262C00, // 009F GETNGBL R9 K22 - 0x60280018, // 00A0 GETGBL R10 G24 - 0x582C001F, // 00A1 LDCONST R11 K31 - 0x68300000, // 00A2 GETUPV R12 U0 - 0x88301918, // 00A3 GETMBR R12 R12 K24 - 0x60340008, // 00A4 GETGBL R13 G8 - 0x5C380400, // 00A5 MOVE R14 R2 - 0x7C340200, // 00A6 CALL R13 1 - 0x5C380A00, // 00A7 MOVE R14 R5 - 0x7C280800, // 00A8 CALL R10 4 - 0x582C0019, // 00A9 LDCONST R11 K25 - 0x7C240400, // 00AA CALL R9 2 - 0x780E0000, // 00AB JMPF R3 #00AD - 0x501C0000, // 00AC LDBOOL R7 0 0 - 0x6024000F, // 00AD GETGBL R9 G15 - 0x5C281000, // 00AE MOVE R10 R8 - 0x602C0012, // 00AF GETGBL R11 G18 - 0x7C240400, // 00B0 CALL R9 2 - 0x78260001, // 00B1 JMPF R9 #00B4 - 0x58240020, // 00B2 LDCONST R9 K32 - 0x70020000, // 00B3 JMP #00B5 - 0x4C240000, // 00B4 LDNIL R9 - 0x4C280000, // 00B5 LDNIL R10 - 0x2028100A, // 00B6 NE R10 R8 R10 - 0x782A0031, // 00B7 JMPF R10 #00EA - 0x4C280000, // 00B8 LDNIL R10 - 0x1C28120A, // 00B9 EQ R10 R9 R10 - 0x782A0001, // 00BA JMPF R10 #00BD - 0x5C281000, // 00BB MOVE R10 R8 - 0x70020000, // 00BC JMP #00BE - 0x94281009, // 00BD GETIDX R10 R8 R9 - 0x602C000C, // 00BE GETGBL R11 G12 - 0x88300121, // 00BF GETMBR R12 R0 K33 - 0x7C2C0200, // 00C0 CALL R11 1 - 0x1C2C1720, // 00C1 EQ R11 R11 K32 - 0x782E0004, // 00C2 JMPF R11 #00C8 - 0x882C0121, // 00C3 GETMBR R11 R0 K33 - 0x8C2C1713, // 00C4 GETMET R11 R11 K19 - 0x5C341400, // 00C5 MOVE R13 R10 - 0x7C2C0400, // 00C6 CALL R11 2 - 0x70020014, // 00C7 JMP #00DD - 0x882C0121, // 00C8 GETMBR R11 R0 K33 - 0x5431FFFE, // 00C9 LDINT R12 -1 - 0x942C160C, // 00CA GETIDX R11 R11 R12 - 0x6030000C, // 00CB GETGBL R12 G12 - 0x5C341600, // 00CC MOVE R13 R11 - 0x7C300200, // 00CD CALL R12 1 - 0x6034000C, // 00CE GETGBL R13 G12 - 0x5C381400, // 00CF MOVE R14 R10 - 0x7C340200, // 00D0 CALL R13 1 - 0x0030180D, // 00D1 ADD R12 R12 R13 - 0xB8360000, // 00D2 GETNGBL R13 K0 - 0x88341B0F, // 00D3 GETMBR R13 R13 K15 - 0x88341B10, // 00D4 GETMBR R13 R13 K16 - 0x1830180D, // 00D5 LE R12 R12 R13 - 0x78320001, // 00D6 JMPF R12 #00D9 - 0x4030160A, // 00D7 CONNECT R12 R11 R10 - 0x70020003, // 00D8 JMP #00DD - 0x88300121, // 00D9 GETMBR R12 R0 K33 - 0x8C301913, // 00DA GETMET R12 R12 K19 - 0x5C381400, // 00DB MOVE R14 R10 - 0x7C300400, // 00DC CALL R12 2 - 0x4C2C0000, // 00DD LDNIL R11 - 0x1C2C120B, // 00DE EQ R11 R9 R11 - 0x782E0001, // 00DF JMPF R11 #00E2 - 0x4C200000, // 00E0 LDNIL R8 - 0x70020006, // 00E1 JMP #00E9 - 0x00241322, // 00E2 ADD R9 R9 K34 - 0x602C000C, // 00E3 GETGBL R11 G12 - 0x5C301000, // 00E4 MOVE R12 R8 - 0x7C2C0200, // 00E5 CALL R11 1 - 0x282C120B, // 00E6 GE R11 R9 R11 - 0x782E0000, // 00E7 JMPF R11 #00E9 - 0x4C200000, // 00E8 LDNIL R8 - 0x7001FFCA, // 00E9 JMP #00B5 - 0x80040E00, // 00EA RET 1 R7 + 0x5C241400, // 002B MOVE R9 R10 + 0x88280D0F, // 002C GETMBR R10 R6 K15 + 0x742A0001, // 002D JMPT R10 #0030 + 0x88280D10, // 002E GETMBR R10 R6 K16 + 0x782A0031, // 002F JMPF R10 #0062 + 0x8C280D11, // 0030 GETMET R10 R6 K17 + 0x7C280200, // 0031 CALL R10 1 + 0xB82E0000, // 0032 GETNGBL R11 K0 + 0x882C1712, // 0033 GETMBR R11 R11 K18 + 0x882C1713, // 0034 GETMBR R11 R11 K19 + 0x2428140B, // 0035 GT R10 R10 R11 + 0x782A002A, // 0036 JMPF R10 #0062 + 0x60280012, // 0037 GETGBL R10 G18 + 0x7C280000, // 0038 CALL R10 0 + 0x5C201400, // 0039 MOVE R8 R10 + 0x60280015, // 003A GETGBL R10 G21 + 0x542E002F, // 003B LDINT R11 48 + 0x7C280200, // 003C CALL R10 1 + 0x8C2C0914, // 003D GETMET R11 R4 K20 + 0x7C2C0200, // 003E CALL R11 1 + 0x68300001, // 003F GETUPV R12 U1 + 0x8C301915, // 0040 GETMET R12 R12 K21 + 0x5C381400, // 0041 MOVE R14 R10 + 0x5C3C0400, // 0042 MOVE R15 R2 + 0x5C401600, // 0043 MOVE R16 R11 + 0x50440000, // 0044 LDBOOL R17 0 0 + 0x7C300A00, // 0045 CALL R12 5 + 0x8C301116, // 0046 GETMET R12 R8 K22 + 0x5C381400, // 0047 MOVE R14 R10 + 0x7C300400, // 0048 CALL R12 2 + 0x60300010, // 0049 GETGBL R12 G16 + 0x88340D17, // 004A GETMBR R13 R6 K23 + 0x7C300200, // 004B CALL R12 1 + 0xA8020010, // 004C EXBLK 0 #005E + 0x5C341800, // 004D MOVE R13 R12 + 0x7C340000, // 004E CALL R13 0 + 0x60380015, // 004F GETGBL R14 G21 + 0x543E002F, // 0050 LDINT R15 48 + 0x7C380200, // 0051 CALL R14 1 + 0x5C281C00, // 0052 MOVE R10 R14 + 0x68380001, // 0053 GETUPV R14 U1 + 0x8C381D15, // 0054 GETMET R14 R14 K21 + 0x5C401400, // 0055 MOVE R16 R10 + 0x5C440400, // 0056 MOVE R17 R2 + 0x5C481A00, // 0057 MOVE R18 R13 + 0x504C0200, // 0058 LDBOOL R19 1 0 + 0x7C380A00, // 0059 CALL R14 5 + 0x8C381116, // 005A GETMET R14 R8 K22 + 0x5C401400, // 005B MOVE R16 R10 + 0x7C380400, // 005C CALL R14 2 + 0x7001FFEE, // 005D JMP #004D + 0x58300018, // 005E LDCONST R12 K24 + 0xAC300200, // 005F CATCH R12 1 0 + 0xB0080000, // 0060 RAISE 2 R0 R0 + 0x70020009, // 0061 JMP #006C + 0x60280015, // 0062 GETGBL R10 G21 + 0x542E002F, // 0063 LDINT R11 48 + 0x7C280200, // 0064 CALL R10 1 + 0x5C201400, // 0065 MOVE R8 R10 + 0x68280001, // 0066 GETUPV R10 U1 + 0x8C281515, // 0067 GETMET R10 R10 K21 + 0x5C301000, // 0068 MOVE R12 R8 + 0x5C340400, // 0069 MOVE R13 R2 + 0x5C380C00, // 006A MOVE R14 R6 + 0x7C280800, // 006B CALL R10 4 + 0xB82A0400, // 006C GETNGBL R10 K2 + 0x8C281503, // 006D GETMET R10 R10 K3 + 0x58300004, // 006E LDCONST R12 K4 + 0x7C280400, // 006F CALL R10 2 + 0x782A000C, // 0070 JMPF R10 #007E + 0x68280002, // 0071 GETUPV R10 U2 + 0x742A000A, // 0072 JMPT R10 #007E + 0xB82A3200, // 0073 GETNGBL R10 K25 + 0x602C0018, // 0074 GETGBL R11 G24 + 0x5830001A, // 0075 LDCONST R12 K26 + 0x68340000, // 0076 GETUPV R13 U0 + 0x88341B1B, // 0077 GETMBR R13 R13 K27 + 0x5C380400, // 0078 MOVE R14 R2 + 0x5C3C0A00, // 0079 MOVE R15 R5 + 0x5C401200, // 007A MOVE R16 R9 + 0x7C2C0A00, // 007B CALL R11 5 + 0x58300004, // 007C LDCONST R12 K4 + 0x7C280400, // 007D CALL R10 2 + 0x7002003E, // 007E JMP #00BE + 0x8824050B, // 007F GETMBR R9 R2 K11 + 0x4C280000, // 0080 LDNIL R10 + 0x2024120A, // 0081 NE R9 R9 R10 + 0x78260025, // 0082 JMPF R9 #00A9 + 0x780E0023, // 0083 JMPF R3 #00A8 + 0x60240015, // 0084 GETGBL R9 G21 + 0x542A002F, // 0085 LDINT R10 48 + 0x7C240200, // 0086 CALL R9 1 + 0x5C201200, // 0087 MOVE R8 R9 + 0x68240001, // 0088 GETUPV R9 U1 + 0x8C24131C, // 0089 GETMET R9 R9 K28 + 0x5C2C1000, // 008A MOVE R11 R8 + 0x5C300400, // 008B MOVE R12 R2 + 0x8834050B, // 008C GETMBR R13 R2 K11 + 0x7C240800, // 008D CALL R9 4 + 0xB8260400, // 008E GETNGBL R9 K2 + 0x8C241303, // 008F GETMET R9 R9 K3 + 0x582C0004, // 0090 LDCONST R11 K4 + 0x7C240400, // 0091 CALL R9 2 + 0x78260014, // 0092 JMPF R9 #00A8 + 0xB8263200, // 0093 GETNGBL R9 K25 + 0x60280018, // 0094 GETGBL R10 G24 + 0x582C001D, // 0095 LDCONST R11 K29 + 0x68300000, // 0096 GETUPV R12 U0 + 0x8830191B, // 0097 GETMBR R12 R12 K27 + 0x60340008, // 0098 GETGBL R13 G8 + 0x5C380400, // 0099 MOVE R14 R2 + 0x7C340200, // 009A CALL R13 1 + 0x5C380A00, // 009B MOVE R14 R5 + 0x883C050B, // 009C GETMBR R15 R2 K11 + 0x8840050B, // 009D GETMBR R16 R2 K11 + 0xB8460000, // 009E GETNGBL R17 K0 + 0x8844231E, // 009F GETMBR R17 R17 K30 + 0x1C402011, // 00A0 EQ R16 R16 R17 + 0x78420001, // 00A1 JMPF R16 #00A4 + 0x5840001E, // 00A2 LDCONST R16 K30 + 0x70020000, // 00A3 JMP #00A5 + 0x5840000A, // 00A4 LDCONST R16 K10 + 0x7C280C00, // 00A5 CALL R10 6 + 0x582C0004, // 00A6 LDCONST R11 K4 + 0x7C240400, // 00A7 CALL R9 2 + 0x70020014, // 00A8 JMP #00BE + 0xB8260400, // 00A9 GETNGBL R9 K2 + 0x8C241303, // 00AA GETMET R9 R9 K3 + 0x582C0004, // 00AB LDCONST R11 K4 + 0x7C240400, // 00AC CALL R9 2 + 0x7826000D, // 00AD JMPF R9 #00BC + 0x68240002, // 00AE GETUPV R9 U2 + 0x7426000B, // 00AF JMPT R9 #00BC + 0xB8263200, // 00B0 GETNGBL R9 K25 + 0x60280018, // 00B1 GETGBL R10 G24 + 0x582C001F, // 00B2 LDCONST R11 K31 + 0x68300000, // 00B3 GETUPV R12 U0 + 0x8830191B, // 00B4 GETMBR R12 R12 K27 + 0x60340008, // 00B5 GETGBL R13 G8 + 0x5C380400, // 00B6 MOVE R14 R2 + 0x7C340200, // 00B7 CALL R13 1 + 0x5C380A00, // 00B8 MOVE R14 R5 + 0x7C280800, // 00B9 CALL R10 4 + 0x582C0004, // 00BA LDCONST R11 K4 + 0x7C240400, // 00BB CALL R9 2 + 0x780E0000, // 00BC JMPF R3 #00BE + 0x501C0000, // 00BD LDBOOL R7 0 0 + 0x6024000F, // 00BE GETGBL R9 G15 + 0x5C281000, // 00BF MOVE R10 R8 + 0x602C0012, // 00C0 GETGBL R11 G18 + 0x7C240400, // 00C1 CALL R9 2 + 0x78260001, // 00C2 JMPF R9 #00C5 + 0x58240020, // 00C3 LDCONST R9 K32 + 0x70020000, // 00C4 JMP #00C6 + 0x4C240000, // 00C5 LDNIL R9 + 0x4C280000, // 00C6 LDNIL R10 + 0x2028100A, // 00C7 NE R10 R8 R10 + 0x782A0031, // 00C8 JMPF R10 #00FB + 0x4C280000, // 00C9 LDNIL R10 + 0x1C28120A, // 00CA EQ R10 R9 R10 + 0x782A0001, // 00CB JMPF R10 #00CE + 0x5C281000, // 00CC MOVE R10 R8 + 0x70020000, // 00CD JMP #00CF + 0x94281009, // 00CE GETIDX R10 R8 R9 + 0x602C000C, // 00CF GETGBL R11 G12 + 0x88300121, // 00D0 GETMBR R12 R0 K33 + 0x7C2C0200, // 00D1 CALL R11 1 + 0x1C2C1720, // 00D2 EQ R11 R11 K32 + 0x782E0004, // 00D3 JMPF R11 #00D9 + 0x882C0121, // 00D4 GETMBR R11 R0 K33 + 0x8C2C1716, // 00D5 GETMET R11 R11 K22 + 0x5C341400, // 00D6 MOVE R13 R10 + 0x7C2C0400, // 00D7 CALL R11 2 + 0x70020014, // 00D8 JMP #00EE + 0x882C0121, // 00D9 GETMBR R11 R0 K33 + 0x5431FFFE, // 00DA LDINT R12 -1 + 0x942C160C, // 00DB GETIDX R11 R11 R12 + 0x6030000C, // 00DC GETGBL R12 G12 + 0x5C341600, // 00DD MOVE R13 R11 + 0x7C300200, // 00DE CALL R12 1 + 0x6034000C, // 00DF GETGBL R13 G12 + 0x5C381400, // 00E0 MOVE R14 R10 + 0x7C340200, // 00E1 CALL R13 1 + 0x0030180D, // 00E2 ADD R12 R12 R13 + 0xB8360000, // 00E3 GETNGBL R13 K0 + 0x88341B12, // 00E4 GETMBR R13 R13 K18 + 0x88341B13, // 00E5 GETMBR R13 R13 K19 + 0x1830180D, // 00E6 LE R12 R12 R13 + 0x78320001, // 00E7 JMPF R12 #00EA + 0x4030160A, // 00E8 CONNECT R12 R11 R10 + 0x70020003, // 00E9 JMP #00EE + 0x88300121, // 00EA GETMBR R12 R0 K33 + 0x8C301916, // 00EB GETMET R12 R12 K22 + 0x5C381400, // 00EC MOVE R14 R10 + 0x7C300400, // 00ED CALL R12 2 + 0x4C2C0000, // 00EE LDNIL R11 + 0x1C2C120B, // 00EF EQ R11 R9 R11 + 0x782E0001, // 00F0 JMPF R11 #00F3 + 0x4C200000, // 00F1 LDNIL R8 + 0x70020006, // 00F2 JMP #00FA + 0x00241322, // 00F3 ADD R9 R9 K34 + 0x602C000C, // 00F4 GETGBL R11 G12 + 0x5C301000, // 00F5 MOVE R12 R8 + 0x7C2C0200, // 00F6 CALL R11 1 + 0x282C120B, // 00F7 GE R11 R9 R11 + 0x782E0000, // 00F8 JMPF R11 #00FA + 0x4C200000, // 00F9 LDNIL R8 + 0x7001FFCA, // 00FA JMP #00C6 + 0x80040E00, // 00FB RET 1 R7 }) ), be_nested_proto( @@ -2500,7 +2524,7 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ 1, /* has upvals */ ( &(const bupvaldesc[ 2]) { /* upvals */ be_local_const_upval(1, 5), - be_local_const_upval(1, 8), + be_local_const_upval(1, 9), }), 0, /* has sup protos */ NULL, @@ -2521,35 +2545,51 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ &be_class_Matter_IM, }), 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ + ( &(const bvalue[40]) { /* constants */ /* K0 */ be_nested_str_weak(device), /* K1 */ be_nested_str_weak(get_active_endpoints), /* K2 */ be_nested_str_weak(matter), /* K3 */ be_nested_str_weak(Path), /* K4 */ be_nested_str_weak(msg), - /* K5 */ be_nested_str_weak(ReportDataMessage), - /* K6 */ be_nested_str_weak(attribute_reports), - /* K7 */ be_nested_str_weak(attributes_requests), - /* K8 */ be_nested_str_weak(endpoint), - /* K9 */ be_nested_str_weak(cluster), - /* K10 */ be_nested_str_weak(attribute), - /* K11 */ be_nested_str_weak(fabric_filtered), - /* K12 */ be_nested_str_weak(status), - /* K13 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K14 */ be_nested_str_weak(get_attribute_name), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K17 */ be_nested_str_weak(local_session_id), - /* K18 */ be_nested_str_weak(_X20_X28), - /* K19 */ be_nested_str_weak(_X29), - /* K20 */ be_nested_str_weak(), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(process_attribute_expansion), - /* K23 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(get_node_id), + /* K6 */ be_nested_str_weak(ReportDataMessage), + /* K7 */ be_nested_str_weak(attribute_reports), + /* K8 */ be_nested_str_weak(attributes_requests), + /* K9 */ be_nested_str_weak(endpoint), + /* K10 */ be_nested_str_weak(cluster), + /* K11 */ be_nested_str_weak(attribute), + /* K12 */ be_nested_str_weak(fabric_filtered), + /* K13 */ be_nested_str_weak(status), + /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(loglevel), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(get_attribute_name), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K21 */ be_nested_str_weak(local_session_id), + /* K22 */ be_nested_str_weak(_X20_X28), + /* K23 */ be_nested_str_weak(_X29), + /* K24 */ be_nested_str_weak(), + /* K25 */ be_nested_str_weak(process_attribute_expansion), + /* K26 */ be_nested_str_weak(stop_iteration), + /* K27 */ be_nested_str_weak(event_requests), + /* K28 */ be_nested_str_weak(event_filters), + /* K29 */ be_nested_str_weak(MTR_X3A_X20EventFilter_X20filter_X3D_X25s_X20node_id_X3D_X25s), + /* K30 */ be_nested_str_weak(int64), + /* K31 */ be_nested_str_weak(toint64), + /* K32 */ be_nested_str_weak(node), + /* K33 */ be_nested_str_weak(tobytes), + /* K34 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), + /* K35 */ be_nested_str_weak(tohex), + /* K36 */ be_nested_str_weak(event_min), + /* K37 */ be_nested_str_weak(event_reports), + /* K38 */ be_nested_str_weak(event), + /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X25s), }), be_str_weak(_inner_process_read_request), &be_const_str_solidified, - ( &(const binstruction[94]) { /* code */ + ( &(const binstruction[191]) { /* code */ 0x84140000, // 0000 CLOSURE R5 P0 0x88180100, // 0001 GETMBR R6 R0 K0 0x8C180D01, // 0002 GETMET R6 R6 K1 @@ -2558,92 +2598,189 @@ be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ 0x8C1C0F03, // 0005 GETMET R7 R7 K3 0x7C1C0200, // 0006 CALL R7 1 0x901E0803, // 0007 SETMBR R7 K4 R3 - 0xB8220400, // 0008 GETNGBL R8 K2 - 0x8C201105, // 0009 GETMET R8 R8 K5 - 0x7C200200, // 000A CALL R8 1 - 0x60240012, // 000B GETGBL R9 G18 - 0x7C240000, // 000C CALL R9 0 - 0x90220C09, // 000D SETMBR R8 K6 R9 - 0x60240010, // 000E GETGBL R9 G16 - 0x88280507, // 000F GETMBR R10 R2 K7 - 0x7C240200, // 0010 CALL R9 1 - 0xA8020046, // 0011 EXBLK 0 #0059 - 0x5C281200, // 0012 MOVE R10 R9 + 0x4C200000, // 0008 LDNIL R8 + 0x20200608, // 0009 NE R8 R3 R8 + 0x78220002, // 000A JMPF R8 #000E + 0x8C200705, // 000B GETMET R8 R3 K5 + 0x7C200200, // 000C CALL R8 1 + 0x70020000, // 000D JMP #000F + 0x4C200000, // 000E LDNIL R8 + 0xB8260400, // 000F GETNGBL R9 K2 + 0x8C241306, // 0010 GETMET R9 R9 K6 + 0x7C240200, // 0011 CALL R9 1 + 0x60280012, // 0012 GETGBL R10 G18 0x7C280000, // 0013 CALL R10 0 - 0x882C1508, // 0014 GETMBR R11 R10 K8 - 0x901E100B, // 0015 SETMBR R7 K8 R11 - 0x882C1509, // 0016 GETMBR R11 R10 K9 - 0x901E120B, // 0017 SETMBR R7 K9 R11 - 0x882C150A, // 0018 GETMBR R11 R10 K10 - 0x901E140B, // 0019 SETMBR R7 K10 R11 - 0x882C050B, // 001A GETMBR R11 R2 K11 - 0x901E160B, // 001B SETMBR R7 K11 R11 - 0xB82E0400, // 001C GETNGBL R11 K2 - 0x882C170D, // 001D GETMBR R11 R11 K13 - 0x901E180B, // 001E SETMBR R7 K12 R11 - 0x882C0F08, // 001F GETMBR R11 R7 K8 - 0x4C300000, // 0020 LDNIL R12 - 0x1C2C160C, // 0021 EQ R11 R11 R12 - 0x742E0007, // 0022 JMPT R11 #002B - 0x882C0F09, // 0023 GETMBR R11 R7 K9 - 0x4C300000, // 0024 LDNIL R12 - 0x1C2C160C, // 0025 EQ R11 R11 R12 - 0x742E0003, // 0026 JMPT R11 #002B - 0x882C0F0A, // 0027 GETMBR R11 R7 K10 - 0x4C300000, // 0028 LDNIL R12 - 0x1C2C160C, // 0029 EQ R11 R11 R12 - 0x782E0027, // 002A JMPF R11 #0053 - 0x882C0F09, // 002B GETMBR R11 R7 K9 - 0x4C300000, // 002C LDNIL R12 - 0x202C160C, // 002D NE R11 R11 R12 - 0x782E0019, // 002E JMPF R11 #0049 - 0x882C0F0A, // 002F GETMBR R11 R7 K10 - 0x4C300000, // 0030 LDNIL R12 - 0x202C160C, // 0031 NE R11 R11 R12 - 0x782E0015, // 0032 JMPF R11 #0049 - 0xB82E0400, // 0033 GETNGBL R11 K2 - 0x8C2C170E, // 0034 GETMET R11 R11 K14 - 0x88340F09, // 0035 GETMBR R13 R7 K9 - 0x88380F0A, // 0036 GETMBR R14 R7 K10 - 0x7C2C0600, // 0037 CALL R11 3 - 0xB8321E00, // 0038 GETNGBL R12 K15 - 0x60340018, // 0039 GETGBL R13 G24 - 0x58380010, // 003A LDCONST R14 K16 - 0x883C0311, // 003B GETMBR R15 R1 K17 - 0x60400008, // 003C GETGBL R16 G8 - 0x5C440E00, // 003D MOVE R17 R7 - 0x7C400200, // 003E CALL R16 1 - 0x782E0002, // 003F JMPF R11 #0043 - 0x0046240B, // 0040 ADD R17 K18 R11 - 0x00442313, // 0041 ADD R17 R17 K19 - 0x70020000, // 0042 JMP #0044 - 0x58440014, // 0043 LDCONST R17 K20 - 0x00402011, // 0044 ADD R16 R16 R17 - 0x7C340600, // 0045 CALL R13 3 - 0x58380015, // 0046 LDCONST R14 K21 - 0x7C300400, // 0047 CALL R12 2 - 0x70020009, // 0048 JMP #0053 - 0xB82E1E00, // 0049 GETNGBL R11 K15 - 0x60300018, // 004A GETGBL R12 G24 - 0x58340010, // 004B LDCONST R13 K16 - 0x88380311, // 004C GETMBR R14 R1 K17 - 0x603C0008, // 004D GETGBL R15 G8 - 0x5C400E00, // 004E MOVE R16 R7 - 0x7C3C0200, // 004F CALL R15 1 - 0x7C300600, // 0050 CALL R12 3 - 0x58340015, // 0051 LDCONST R13 K21 - 0x7C2C0400, // 0052 CALL R11 2 - 0x882C0100, // 0053 GETMBR R11 R0 K0 - 0x8C2C1716, // 0054 GETMET R11 R11 K22 - 0x5C340E00, // 0055 MOVE R13 R7 - 0x84380001, // 0056 CLOSURE R14 P1 - 0x7C2C0600, // 0057 CALL R11 3 - 0x7001FFB8, // 0058 JMP #0012 - 0x58240017, // 0059 LDCONST R9 K23 - 0xAC240200, // 005A CATCH R9 1 0 - 0xB0080000, // 005B RAISE 2 R0 R0 - 0xA0000000, // 005C CLOSE R0 - 0x80041000, // 005D RET 1 R8 + 0x90260E0A, // 0014 SETMBR R9 K7 R10 + 0x60280010, // 0015 GETGBL R10 G16 + 0x882C0508, // 0016 GETMBR R11 R2 K8 + 0x7C280200, // 0017 CALL R10 1 + 0xA802004B, // 0018 EXBLK 0 #0065 + 0x5C2C1400, // 0019 MOVE R11 R10 + 0x7C2C0000, // 001A CALL R11 0 + 0x88301709, // 001B GETMBR R12 R11 K9 + 0x901E120C, // 001C SETMBR R7 K9 R12 + 0x8830170A, // 001D GETMBR R12 R11 K10 + 0x901E140C, // 001E SETMBR R7 K10 R12 + 0x8830170B, // 001F GETMBR R12 R11 K11 + 0x901E160C, // 0020 SETMBR R7 K11 R12 + 0x8830050C, // 0021 GETMBR R12 R2 K12 + 0x901E180C, // 0022 SETMBR R7 K12 R12 + 0xB8320400, // 0023 GETNGBL R12 K2 + 0x8830190E, // 0024 GETMBR R12 R12 K14 + 0x901E1A0C, // 0025 SETMBR R7 K13 R12 + 0x88300F09, // 0026 GETMBR R12 R7 K9 + 0x4C340000, // 0027 LDNIL R13 + 0x1C30180D, // 0028 EQ R12 R12 R13 + 0x74320007, // 0029 JMPT R12 #0032 + 0x88300F0A, // 002A GETMBR R12 R7 K10 + 0x4C340000, // 002B LDNIL R13 + 0x1C30180D, // 002C EQ R12 R12 R13 + 0x74320003, // 002D JMPT R12 #0032 + 0x88300F0B, // 002E GETMBR R12 R7 K11 + 0x4C340000, // 002F LDNIL R13 + 0x1C30180D, // 0030 EQ R12 R12 R13 + 0x7832002C, // 0031 JMPF R12 #005F + 0xB8321E00, // 0032 GETNGBL R12 K15 + 0x8C301910, // 0033 GETMET R12 R12 K16 + 0x58380011, // 0034 LDCONST R14 K17 + 0x7C300400, // 0035 CALL R12 2 + 0x78320027, // 0036 JMPF R12 #005F + 0x88300F0A, // 0037 GETMBR R12 R7 K10 + 0x4C340000, // 0038 LDNIL R13 + 0x2030180D, // 0039 NE R12 R12 R13 + 0x78320019, // 003A JMPF R12 #0055 + 0x88300F0B, // 003B GETMBR R12 R7 K11 + 0x4C340000, // 003C LDNIL R13 + 0x2030180D, // 003D NE R12 R12 R13 + 0x78320015, // 003E JMPF R12 #0055 + 0xB8320400, // 003F GETNGBL R12 K2 + 0x8C301912, // 0040 GETMET R12 R12 K18 + 0x88380F0A, // 0041 GETMBR R14 R7 K10 + 0x883C0F0B, // 0042 GETMBR R15 R7 K11 + 0x7C300600, // 0043 CALL R12 3 + 0xB8362600, // 0044 GETNGBL R13 K19 + 0x60380018, // 0045 GETGBL R14 G24 + 0x583C0014, // 0046 LDCONST R15 K20 + 0x88400315, // 0047 GETMBR R16 R1 K21 + 0x60440008, // 0048 GETGBL R17 G8 + 0x5C480E00, // 0049 MOVE R18 R7 + 0x7C440200, // 004A CALL R17 1 + 0x78320002, // 004B JMPF R12 #004F + 0x004A2C0C, // 004C ADD R18 K22 R12 + 0x00482517, // 004D ADD R18 R18 K23 + 0x70020000, // 004E JMP #0050 + 0x58480018, // 004F LDCONST R18 K24 + 0x00442212, // 0050 ADD R17 R17 R18 + 0x7C380600, // 0051 CALL R14 3 + 0x583C0011, // 0052 LDCONST R15 K17 + 0x7C340400, // 0053 CALL R13 2 + 0x70020009, // 0054 JMP #005F + 0xB8322600, // 0055 GETNGBL R12 K19 + 0x60340018, // 0056 GETGBL R13 G24 + 0x58380014, // 0057 LDCONST R14 K20 + 0x883C0315, // 0058 GETMBR R15 R1 K21 + 0x60400008, // 0059 GETGBL R16 G8 + 0x5C440E00, // 005A MOVE R17 R7 + 0x7C400200, // 005B CALL R16 1 + 0x7C340600, // 005C CALL R13 3 + 0x58380011, // 005D LDCONST R14 K17 + 0x7C300400, // 005E CALL R12 2 + 0x88300100, // 005F GETMBR R12 R0 K0 + 0x8C301919, // 0060 GETMET R12 R12 K25 + 0x5C380E00, // 0061 MOVE R14 R7 + 0x843C0001, // 0062 CLOSURE R15 P1 + 0x7C300600, // 0063 CALL R12 3 + 0x7001FFB3, // 0064 JMP #0019 + 0x5828001A, // 0065 LDCONST R10 K26 + 0xAC280200, // 0066 CATCH R10 1 0 + 0xB0080000, // 0067 RAISE 2 R0 R0 + 0x8828051B, // 0068 GETMBR R10 R2 K27 + 0x882C051C, // 0069 GETMBR R11 R2 K28 + 0x4C300000, // 006A LDNIL R12 + 0x782A0050, // 006B JMPF R10 #00BD + 0x782E0033, // 006C JMPF R11 #00A1 + 0x60340010, // 006D GETGBL R13 G16 + 0x5C381600, // 006E MOVE R14 R11 + 0x7C340200, // 006F CALL R13 1 + 0xA802002C, // 0070 EXBLK 0 #009E + 0x5C381A00, // 0071 MOVE R14 R13 + 0x7C380000, // 0072 CALL R14 0 + 0xB83E1E00, // 0073 GETNGBL R15 K15 + 0x8C3C1F13, // 0074 GETMET R15 R15 K19 + 0x60440018, // 0075 GETGBL R17 G24 + 0x5848001D, // 0076 LDCONST R18 K29 + 0x5C4C1C00, // 0077 MOVE R19 R14 + 0x5C501000, // 0078 MOVE R20 R8 + 0x7C440600, // 0079 CALL R17 3 + 0x58480011, // 007A LDCONST R18 K17 + 0x7C3C0600, // 007B CALL R15 3 + 0xB83E3C00, // 007C GETNGBL R15 K30 + 0x8C3C1F1F, // 007D GETMET R15 R15 K31 + 0x88441D20, // 007E GETMBR R17 R14 K32 + 0x7C3C0400, // 007F CALL R15 2 + 0x783E001B, // 0080 JMPF R15 #009D + 0x88401D20, // 0081 GETMBR R16 R14 K32 + 0x8C402121, // 0082 GETMET R16 R16 K33 + 0x7C400200, // 0083 CALL R16 1 + 0x20402008, // 0084 NE R16 R16 R8 + 0x7842000C, // 0085 JMPF R16 #0093 + 0xB8421E00, // 0086 GETNGBL R16 K15 + 0x8C402113, // 0087 GETMET R16 R16 K19 + 0x60480018, // 0088 GETGBL R18 G24 + 0x584C0022, // 0089 LDCONST R19 K34 + 0x8C501F21, // 008A GETMET R20 R15 K33 + 0x7C500200, // 008B CALL R20 1 + 0x8C502923, // 008C GETMET R20 R20 K35 + 0x7C500200, // 008D CALL R20 1 + 0x8C541123, // 008E GETMET R21 R8 K35 + 0x7C540200, // 008F CALL R21 1 + 0x7C480600, // 0090 CALL R18 3 + 0x7C400400, // 0091 CALL R16 2 + 0x7001FFDD, // 0092 JMP #0071 + 0xB8423C00, // 0093 GETNGBL R16 K30 + 0x8C40211F, // 0094 GETMET R16 R16 K31 + 0x88481D24, // 0095 GETMBR R18 R14 K36 + 0x7C400400, // 0096 CALL R16 2 + 0x4C440000, // 0097 LDNIL R17 + 0x20441811, // 0098 NE R17 R12 R17 + 0x74460001, // 0099 JMPT R17 #009C + 0x14441810, // 009A LT R17 R12 R16 + 0x78460000, // 009B JMPF R17 #009D + 0x5C302000, // 009C MOVE R12 R16 + 0x7001FFD2, // 009D JMP #0071 + 0x5834001A, // 009E LDCONST R13 K26 + 0xAC340200, // 009F CATCH R13 1 0 + 0xB0080000, // 00A0 RAISE 2 R0 R0 + 0x60340012, // 00A1 GETGBL R13 G18 + 0x7C340000, // 00A2 CALL R13 0 + 0x90264A0D, // 00A3 SETMBR R9 K37 R13 + 0x60340010, // 00A4 GETGBL R13 G16 + 0x5C381400, // 00A5 MOVE R14 R10 + 0x7C340200, // 00A6 CALL R13 1 + 0xA8020011, // 00A7 EXBLK 0 #00BA + 0x5C381A00, // 00A8 MOVE R14 R13 + 0x7C380000, // 00A9 CALL R14 0 + 0x883C1D09, // 00AA GETMBR R15 R14 K9 + 0x901E120F, // 00AB SETMBR R7 K9 R15 + 0x883C1D0A, // 00AC GETMBR R15 R14 K10 + 0x901E140F, // 00AD SETMBR R7 K10 R15 + 0x883C1D26, // 00AE GETMBR R15 R14 K38 + 0x901E160F, // 00AF SETMBR R7 K11 R15 + 0xB83E1E00, // 00B0 GETNGBL R15 K15 + 0x8C3C1F13, // 00B1 GETMET R15 R15 K19 + 0x60440018, // 00B2 GETGBL R17 G24 + 0x58480027, // 00B3 LDCONST R18 K39 + 0x884C0315, // 00B4 GETMBR R19 R1 K21 + 0x5C500E00, // 00B5 MOVE R20 R7 + 0x7C440600, // 00B6 CALL R17 3 + 0x58480011, // 00B7 LDCONST R18 K17 + 0x7C3C0600, // 00B8 CALL R15 3 + 0x7001FFED, // 00B9 JMP #00A8 + 0x5834001A, // 00BA LDCONST R13 K26 + 0xAC340200, // 00BB CATCH R13 1 0 + 0xB0080000, // 00BC RAISE 2 R0 R0 + 0xA0000000, // 00BD CLOSE R0 + 0x80041200, // 00BE RET 1 R9 }) ) ); @@ -2912,7 +3049,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /* K2 */ be_nested_str_weak(INVALID_ACTION), /* K3 */ be_nested_str_weak(msg), /* K4 */ be_nested_str_weak(device), - /* K5 */ be_nested_str_weak(process_attribute_read_solo), + /* K5 */ be_nested_str_weak(resolve_attribute_read_solo), /* K6 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K7 */ be_nested_str_weak(read_attribute), /* K8 */ be_nested_str_weak(session), @@ -2965,7 +3102,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ }), be_str_weak(process_read_request_solo), &be_const_str_solidified, - ( &(const binstruction[245]) { /* code */ + ( &(const binstruction[252]) { /* code */ 0xB80E0200, // 0000 GETNGBL R3 K1 0x880C0702, // 0001 GETMBR R3 R3 K2 0x900A0003, // 0002 SETMBR R2 K0 R3 @@ -3131,86 +3268,93 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x8C24130B, // 00A2 GETMET R9 R9 K11 0x582C002C, // 00A3 LDCONST R11 K44 0x7C240400, // 00A4 CALL R9 2 - 0xB8260200, // 00A5 GETNGBL R9 K1 - 0x8C24132D, // 00A6 GETMET R9 R9 K45 - 0x882C052E, // 00A7 GETMBR R11 R2 K46 - 0x8830052F, // 00A8 GETMBR R12 R2 K47 - 0x7C240600, // 00A9 CALL R9 3 - 0x78260002, // 00AA JMPF R9 #00AE - 0x002A6009, // 00AB ADD R10 K48 R9 - 0x00281531, // 00AC ADD R10 R10 K49 - 0x70020000, // 00AD JMP #00AF - 0x58280032, // 00AE LDCONST R10 K50 - 0x5C241400, // 00AF MOVE R9 R10 - 0x4C280000, // 00B0 LDNIL R10 - 0x2028080A, // 00B1 NE R10 R4 R10 - 0x782A0012, // 00B2 JMPF R10 #00C6 - 0xB82A4A00, // 00B3 GETNGBL R10 K37 - 0x8C281526, // 00B4 GETMET R10 R10 K38 - 0x58300013, // 00B5 LDCONST R12 K19 - 0x7C280400, // 00B6 CALL R10 2 - 0x782A000C, // 00B7 JMPF R10 #00C5 - 0x8C280933, // 00B8 GETMET R10 R4 K51 - 0x7C280200, // 00B9 CALL R10 1 - 0xB82E1600, // 00BA GETNGBL R11 K11 - 0x60300018, // 00BB GETGBL R12 G24 - 0x58340034, // 00BC LDCONST R13 K52 - 0x88380308, // 00BD GETMBR R14 R1 K8 - 0x88381D1F, // 00BE GETMBR R14 R14 K31 - 0x5C3C0400, // 00BF MOVE R15 R2 - 0x5C401200, // 00C0 MOVE R16 R9 - 0x5C441400, // 00C1 MOVE R17 R10 - 0x7C300A00, // 00C2 CALL R12 5 - 0x58340013, // 00C3 LDCONST R13 K19 - 0x7C2C0400, // 00C4 CALL R11 2 - 0x7002002C, // 00C5 JMP #00F3 - 0x88280500, // 00C6 GETMBR R10 R2 K0 - 0x4C2C0000, // 00C7 LDNIL R11 - 0x2028140B, // 00C8 NE R10 R10 R11 - 0x782A0019, // 00C9 JMPF R10 #00E4 - 0x88280500, // 00CA GETMBR R10 R2 K0 - 0xB82E0200, // 00CB GETNGBL R11 K1 - 0x882C1706, // 00CC GETMBR R11 R11 K6 - 0x1C28140B, // 00CD EQ R10 R10 R11 - 0x782A0001, // 00CE JMPF R10 #00D1 - 0x58280006, // 00CF LDCONST R10 K6 - 0x70020000, // 00D0 JMP #00D2 - 0x58280032, // 00D1 LDCONST R10 K50 - 0xB82E4A00, // 00D2 GETNGBL R11 K37 - 0x8C2C1726, // 00D3 GETMET R11 R11 K38 - 0x58340013, // 00D4 LDCONST R13 K19 - 0x7C2C0400, // 00D5 CALL R11 2 - 0x782E000B, // 00D6 JMPF R11 #00E3 - 0xB82E1600, // 00D7 GETNGBL R11 K11 - 0x60300018, // 00D8 GETGBL R12 G24 - 0x58340035, // 00D9 LDCONST R13 K53 - 0x88380308, // 00DA GETMBR R14 R1 K8 - 0x88381D1F, // 00DB GETMBR R14 R14 K31 - 0x5C3C0400, // 00DC MOVE R15 R2 - 0x5C401200, // 00DD MOVE R16 R9 - 0x88440500, // 00DE GETMBR R17 R2 K0 - 0x5C481400, // 00DF MOVE R18 R10 - 0x7C300C00, // 00E0 CALL R12 6 - 0x58340013, // 00E1 LDCONST R13 K19 - 0x7C2C0400, // 00E2 CALL R11 2 - 0x7002000E, // 00E3 JMP #00F3 - 0xB82A4A00, // 00E4 GETNGBL R10 K37 - 0x8C281526, // 00E5 GETMET R10 R10 K38 - 0x58300013, // 00E6 LDCONST R12 K19 - 0x7C280400, // 00E7 CALL R10 2 - 0x782A0009, // 00E8 JMPF R10 #00F3 - 0xB82A1600, // 00E9 GETNGBL R10 K11 - 0x602C0018, // 00EA GETGBL R11 G24 - 0x58300036, // 00EB LDCONST R12 K54 - 0x88340308, // 00EC GETMBR R13 R1 K8 - 0x88341B1F, // 00ED GETMBR R13 R13 K31 - 0x5C380400, // 00EE MOVE R14 R2 - 0x5C3C1200, // 00EF MOVE R15 R9 - 0x7C2C0800, // 00F0 CALL R11 4 - 0x58300013, // 00F1 LDCONST R12 K19 - 0x7C280400, // 00F2 CALL R10 2 - 0x50280200, // 00F3 LDBOOL R10 1 0 - 0x80041400, // 00F4 RET 1 R10 + 0x4C240000, // 00A5 LDNIL R9 + 0xB82A4A00, // 00A6 GETNGBL R10 K37 + 0x8C281526, // 00A7 GETMET R10 R10 K38 + 0x58300013, // 00A8 LDCONST R12 K19 + 0x7C280400, // 00A9 CALL R10 2 + 0x782A000B, // 00AA JMPF R10 #00B7 + 0xB82A0200, // 00AB GETNGBL R10 K1 + 0x8C28152D, // 00AC GETMET R10 R10 K45 + 0x8830052E, // 00AD GETMBR R12 R2 K46 + 0x8834052F, // 00AE GETMBR R13 R2 K47 + 0x7C280600, // 00AF CALL R10 3 + 0x5C241400, // 00B0 MOVE R9 R10 + 0x78260002, // 00B1 JMPF R9 #00B5 + 0x002A6009, // 00B2 ADD R10 K48 R9 + 0x00281531, // 00B3 ADD R10 R10 K49 + 0x70020000, // 00B4 JMP #00B6 + 0x58280032, // 00B5 LDCONST R10 K50 + 0x5C241400, // 00B6 MOVE R9 R10 + 0x4C280000, // 00B7 LDNIL R10 + 0x2028080A, // 00B8 NE R10 R4 R10 + 0x782A0012, // 00B9 JMPF R10 #00CD + 0xB82A4A00, // 00BA GETNGBL R10 K37 + 0x8C281526, // 00BB GETMET R10 R10 K38 + 0x58300013, // 00BC LDCONST R12 K19 + 0x7C280400, // 00BD CALL R10 2 + 0x782A000C, // 00BE JMPF R10 #00CC + 0x8C280933, // 00BF GETMET R10 R4 K51 + 0x7C280200, // 00C0 CALL R10 1 + 0xB82E1600, // 00C1 GETNGBL R11 K11 + 0x60300018, // 00C2 GETGBL R12 G24 + 0x58340034, // 00C3 LDCONST R13 K52 + 0x88380308, // 00C4 GETMBR R14 R1 K8 + 0x88381D1F, // 00C5 GETMBR R14 R14 K31 + 0x5C3C0400, // 00C6 MOVE R15 R2 + 0x5C401200, // 00C7 MOVE R16 R9 + 0x5C441400, // 00C8 MOVE R17 R10 + 0x7C300A00, // 00C9 CALL R12 5 + 0x58340013, // 00CA LDCONST R13 K19 + 0x7C2C0400, // 00CB CALL R11 2 + 0x7002002C, // 00CC JMP #00FA + 0x88280500, // 00CD GETMBR R10 R2 K0 + 0x4C2C0000, // 00CE LDNIL R11 + 0x2028140B, // 00CF NE R10 R10 R11 + 0x782A0019, // 00D0 JMPF R10 #00EB + 0x88280500, // 00D1 GETMBR R10 R2 K0 + 0xB82E0200, // 00D2 GETNGBL R11 K1 + 0x882C1706, // 00D3 GETMBR R11 R11 K6 + 0x1C28140B, // 00D4 EQ R10 R10 R11 + 0x782A0001, // 00D5 JMPF R10 #00D8 + 0x58280006, // 00D6 LDCONST R10 K6 + 0x70020000, // 00D7 JMP #00D9 + 0x58280032, // 00D8 LDCONST R10 K50 + 0xB82E4A00, // 00D9 GETNGBL R11 K37 + 0x8C2C1726, // 00DA GETMET R11 R11 K38 + 0x58340013, // 00DB LDCONST R13 K19 + 0x7C2C0400, // 00DC CALL R11 2 + 0x782E000B, // 00DD JMPF R11 #00EA + 0xB82E1600, // 00DE GETNGBL R11 K11 + 0x60300018, // 00DF GETGBL R12 G24 + 0x58340035, // 00E0 LDCONST R13 K53 + 0x88380308, // 00E1 GETMBR R14 R1 K8 + 0x88381D1F, // 00E2 GETMBR R14 R14 K31 + 0x5C3C0400, // 00E3 MOVE R15 R2 + 0x5C401200, // 00E4 MOVE R16 R9 + 0x88440500, // 00E5 GETMBR R17 R2 K0 + 0x5C481400, // 00E6 MOVE R18 R10 + 0x7C300C00, // 00E7 CALL R12 6 + 0x58340013, // 00E8 LDCONST R13 K19 + 0x7C2C0400, // 00E9 CALL R11 2 + 0x7002000E, // 00EA JMP #00FA + 0xB82A4A00, // 00EB GETNGBL R10 K37 + 0x8C281526, // 00EC GETMET R10 R10 K38 + 0x58300013, // 00ED LDCONST R12 K19 + 0x7C280400, // 00EE CALL R10 2 + 0x782A0009, // 00EF JMPF R10 #00FA + 0xB82A1600, // 00F0 GETNGBL R10 K11 + 0x602C0018, // 00F1 GETGBL R11 G24 + 0x58300036, // 00F2 LDCONST R12 K54 + 0x88340308, // 00F3 GETMBR R13 R1 K8 + 0x88341B1F, // 00F4 GETMBR R13 R13 K31 + 0x5C380400, // 00F5 MOVE R14 R2 + 0x5C3C1200, // 00F6 MOVE R15 R9 + 0x7C2C0800, // 00F7 CALL R11 4 + 0x58300013, // 00F8 LDCONST R12 K19 + 0x7C280400, // 00F9 CALL R10 2 + 0x50280200, // 00FA LDBOOL R10 1 0 + 0x80041400, // 00FB RET 1 R10 }) ) ); @@ -3409,7 +3553,7 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_subscribe_request, /* name */ be_nested_proto( - 17, /* nstack */ + 20, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3435,7 +3579,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /* K14 */ be_nested_str_weak(push), /* K15 */ be_nested_str_weak(stop_iteration), /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), + /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s_X20attr_req_X3D_X25s_X20event_req_X3D_X25s), /* K18 */ be_nested_str_weak(local_session_id), /* K19 */ be_nested_str_weak(concat), /* K20 */ be_nested_str_weak(_X20), @@ -3445,9 +3589,9 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /* K24 */ be_const_int(0), /* K25 */ be_nested_str_weak(subscription_id), /* K26 */ be_nested_str_weak(fabric_filtered), - /* K27 */ be_const_int(3), + /* K27 */ be_nested_str_weak(_X2D), /* K28 */ be_nested_str_weak(event_requests), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20event_requests_size_X3D_X25s), + /* K29 */ be_const_int(3), /* K30 */ be_nested_str_weak(_inner_process_read_request), /* K31 */ be_nested_str_weak(device), /* K32 */ be_nested_str_weak(debug), @@ -3455,7 +3599,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ }), be_str_weak(subscribe_request), &be_const_str_solidified, - ( &(const binstruction[103]) { /* code */ + ( &(const binstruction[101]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 @@ -3517,48 +3661,46 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0x58380018, // 003A LDCONST R14 K24 0x883C0919, // 003B GETMBR R15 R4 K25 0x8840071A, // 003C GETMBR R16 R3 K26 - 0x7C201000, // 003D CALL R8 8 - 0x5824001B, // 003E LDCONST R9 K27 - 0x7C1C0400, // 003F CALL R7 2 - 0x881C071C, // 0040 GETMBR R7 R3 K28 - 0x4C200000, // 0041 LDNIL R8 - 0x201C0E08, // 0042 NE R7 R7 R8 - 0x781E000F, // 0043 JMPF R7 #0054 - 0x601C000C, // 0044 GETGBL R7 G12 - 0x8820071C, // 0045 GETMBR R8 R3 K28 - 0x7C1C0200, // 0046 CALL R7 1 - 0x241C0F18, // 0047 GT R7 R7 K24 - 0x781E000A, // 0048 JMPF R7 #0054 - 0xB81E2000, // 0049 GETNGBL R7 K16 - 0x60200018, // 004A GETGBL R8 G24 - 0x5824001D, // 004B LDCONST R9 K29 - 0x88280306, // 004C GETMBR R10 R1 K6 - 0x88281512, // 004D GETMBR R10 R10 K18 - 0x602C000C, // 004E GETGBL R11 G12 - 0x8830071C, // 004F GETMBR R12 R3 K28 - 0x7C2C0200, // 0050 CALL R11 1 - 0x7C200600, // 0051 CALL R8 3 - 0x5824001B, // 0052 LDCONST R9 K27 - 0x7C1C0400, // 0053 CALL R7 2 - 0x8C1C011E, // 0054 GETMET R7 R0 K30 - 0x88240306, // 0055 GETMBR R9 R1 K6 - 0x5C280600, // 0056 MOVE R10 R3 - 0x5C2C0200, // 0057 MOVE R11 R1 - 0x8830011F, // 0058 GETMBR R12 R0 K31 - 0x88301920, // 0059 GETMBR R12 R12 K32 - 0x78320000, // 005A JMPF R12 #005C - 0x50300001, // 005B LDBOOL R12 0 1 - 0x50300200, // 005C LDBOOL R12 1 0 - 0x7C1C0A00, // 005D CALL R7 5 - 0x88200919, // 005E GETMBR R8 R4 K25 - 0x901E3208, // 005F SETMBR R7 K25 R8 - 0x8C200121, // 0060 GETMET R8 R0 K33 - 0x5C280200, // 0061 MOVE R10 R1 - 0x5C2C0E00, // 0062 MOVE R11 R7 - 0x5C300800, // 0063 MOVE R12 R4 - 0x7C200800, // 0064 CALL R8 4 - 0x50200200, // 0065 LDBOOL R8 1 0 - 0x80041000, // 0066 RET 1 R8 + 0x8844070A, // 003D GETMBR R17 R3 K10 + 0x4C480000, // 003E LDNIL R18 + 0x20442212, // 003F NE R17 R17 R18 + 0x78460003, // 0040 JMPF R17 #0045 + 0x6044000C, // 0041 GETGBL R17 G12 + 0x8848070A, // 0042 GETMBR R18 R3 K10 + 0x7C440200, // 0043 CALL R17 1 + 0x70020000, // 0044 JMP #0046 + 0x5844001B, // 0045 LDCONST R17 K27 + 0x8848071C, // 0046 GETMBR R18 R3 K28 + 0x4C4C0000, // 0047 LDNIL R19 + 0x20482413, // 0048 NE R18 R18 R19 + 0x784A0003, // 0049 JMPF R18 #004E + 0x6048000C, // 004A GETGBL R18 G12 + 0x884C071C, // 004B GETMBR R19 R3 K28 + 0x7C480200, // 004C CALL R18 1 + 0x70020000, // 004D JMP #004F + 0x5848001B, // 004E LDCONST R18 K27 + 0x7C201400, // 004F CALL R8 10 + 0x5824001D, // 0050 LDCONST R9 K29 + 0x7C1C0400, // 0051 CALL R7 2 + 0x8C1C011E, // 0052 GETMET R7 R0 K30 + 0x88240306, // 0053 GETMBR R9 R1 K6 + 0x5C280600, // 0054 MOVE R10 R3 + 0x5C2C0200, // 0055 MOVE R11 R1 + 0x8830011F, // 0056 GETMBR R12 R0 K31 + 0x88301920, // 0057 GETMBR R12 R12 K32 + 0x78320000, // 0058 JMPF R12 #005A + 0x50300001, // 0059 LDBOOL R12 0 1 + 0x50300200, // 005A LDBOOL R12 1 0 + 0x7C1C0A00, // 005B CALL R7 5 + 0x88200919, // 005C GETMBR R8 R4 K25 + 0x901E3208, // 005D SETMBR R7 K25 R8 + 0x8C200121, // 005E GETMET R8 R0 K33 + 0x5C280200, // 005F MOVE R10 R1 + 0x5C2C0E00, // 0060 MOVE R11 R7 + 0x5C300800, // 0061 MOVE R12 R4 + 0x7C200800, // 0062 CALL R8 4 + 0x50200200, // 0063 LDBOOL R8 1 0 + 0x80041000, // 0064 RET 1 R8 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index 22bb7bc99..793cca7da 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -6,6 +6,181 @@ extern const bclass be_class_Matter_Frame; +/******************************************************************** +** Solidified function: get_node_id +********************************************************************/ +extern const bclass be_class_Matter_Frame; +be_local_closure(class_Matter_Frame_get_node_id, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Frame, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(get_node_id), + }), + be_str_weak(get_node_id), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060003, // 0001 JMPF R1 #0006 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x8C040301, // 0003 GETMET R1 R1 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x70020000, // 0005 JMP #0007 + 0x4C040000, // 0006 LDNIL R1 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: encrypt +********************************************************************/ +extern const bclass be_class_Matter_Frame; +be_local_closure(class_Matter_Frame_encrypt, /* name */ + be_nested_proto( + 23, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Frame, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(session), + /* K3 */ be_nested_str_weak(payload_idx), + /* K4 */ be_nested_str_weak(get_r2i), + /* K5 */ be_nested_str_weak(message_handler), + /* K6 */ be_nested_str_weak(_n_bytes), + /* K7 */ be_nested_str_weak(clear), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(flags), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(message_counter), + /* K12 */ be_nested_str_weak(is_CASE), + /* K13 */ be_nested_str_weak(get_device_id), + /* K14 */ be_nested_str_weak(resize), + /* K15 */ be_nested_str_weak(AES_CCM), + /* K16 */ be_nested_str_weak(encrypt1), + /* K17 */ be_const_int(0), + }), + be_str_weak(encrypt), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x5416000F, // 0004 LDINT R5 16 + 0x8C180704, // 0005 GETMET R6 R3 K4 + 0x7C180200, // 0006 CALL R6 1 + 0x881C0105, // 0007 GETMBR R7 R0 K5 + 0x881C0F06, // 0008 GETMBR R7 R7 K6 + 0x8C200F07, // 0009 GETMET R8 R7 K7 + 0x7C200200, // 000A CALL R8 1 + 0x8C200F08, // 000B GETMET R8 R7 K8 + 0x88280109, // 000C GETMBR R10 R0 K9 + 0x582C000A, // 000D LDCONST R11 K10 + 0x7C200600, // 000E CALL R8 3 + 0x8C200F08, // 000F GETMET R8 R7 K8 + 0x8828010B, // 0010 GETMBR R10 R0 K11 + 0x542E0003, // 0011 LDINT R11 4 + 0x7C200600, // 0012 CALL R8 3 + 0x8C20070C, // 0013 GETMET R8 R3 K12 + 0x7C200200, // 0014 CALL R8 1 + 0x78220005, // 0015 JMPF R8 #001C + 0x8C20070D, // 0016 GETMET R8 R3 K13 + 0x7C200200, // 0017 CALL R8 1 + 0x78220002, // 0018 JMPF R8 #001C + 0x8C20070D, // 0019 GETMET R8 R3 K13 + 0x7C200200, // 001A CALL R8 1 + 0x40200E08, // 001B CONNECT R8 R7 R8 + 0x8C200F0E, // 001C GETMET R8 R7 K14 + 0x542A000C, // 001D LDINT R10 13 + 0x7C200400, // 001E CALL R8 2 + 0x8C20050E, // 001F GETMET R8 R2 K14 + 0x6028000C, // 0020 GETGBL R10 G12 + 0x5C2C0400, // 0021 MOVE R11 R2 + 0x7C280200, // 0022 CALL R10 1 + 0x00281405, // 0023 ADD R10 R10 R5 + 0x7C200400, // 0024 CALL R8 2 + 0x8820030F, // 0025 GETMBR R8 R1 K15 + 0x8C201110, // 0026 GETMET R8 R8 K16 + 0x5C280C00, // 0027 MOVE R10 R6 + 0x5C2C0E00, // 0028 MOVE R11 R7 + 0x58300011, // 0029 LDCONST R12 K17 + 0x6034000C, // 002A GETGBL R13 G12 + 0x5C380E00, // 002B MOVE R14 R7 + 0x7C340200, // 002C CALL R13 1 + 0x5C380400, // 002D MOVE R14 R2 + 0x583C0011, // 002E LDCONST R15 K17 + 0x5C400800, // 002F MOVE R16 R4 + 0x5C440400, // 0030 MOVE R17 R2 + 0x5C480800, // 0031 MOVE R18 R4 + 0x604C000C, // 0032 GETGBL R19 G12 + 0x5C500400, // 0033 MOVE R20 R2 + 0x7C4C0200, // 0034 CALL R19 1 + 0x044C2604, // 0035 SUB R19 R19 R4 + 0x044C2605, // 0036 SUB R19 R19 R5 + 0x5C500400, // 0037 MOVE R20 R2 + 0x6054000C, // 0038 GETGBL R21 G12 + 0x5C580400, // 0039 MOVE R22 R2 + 0x7C540200, // 003A CALL R21 1 + 0x04542A05, // 003B SUB R21 R21 R5 + 0x5C580A00, // 003C MOVE R22 R5 + 0x7C201C00, // 003D CALL R8 14 + 0x80000000, // 003E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Frame; +be_local_closure(class_Matter_Frame_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Frame, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(remote_ip), + /* K3 */ be_nested_str_weak(remote_port), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x90020604, // 0003 SETMBR R0 K3 R4 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: encode_frame ********************************************************************/ @@ -215,481 +390,6 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: encrypt -********************************************************************/ -extern const bclass be_class_Matter_Frame; -be_local_closure(class_Matter_Frame_encrypt, /* name */ - be_nested_proto( - 23, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Frame, - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(payload_idx), - /* K4 */ be_nested_str_weak(get_r2i), - /* K5 */ be_nested_str_weak(message_handler), - /* K6 */ be_nested_str_weak(_n_bytes), - /* K7 */ be_nested_str_weak(clear), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(flags), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(message_counter), - /* K12 */ be_nested_str_weak(is_CASE), - /* K13 */ be_nested_str_weak(get_device_id), - /* K14 */ be_nested_str_weak(resize), - /* K15 */ be_nested_str_weak(AES_CCM), - /* K16 */ be_nested_str_weak(encrypt1), - /* K17 */ be_const_int(0), - }), - be_str_weak(encrypt), - &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x88100103, // 0003 GETMBR R4 R0 K3 - 0x5416000F, // 0004 LDINT R5 16 - 0x8C180704, // 0005 GETMET R6 R3 K4 - 0x7C180200, // 0006 CALL R6 1 - 0x881C0105, // 0007 GETMBR R7 R0 K5 - 0x881C0F06, // 0008 GETMBR R7 R7 K6 - 0x8C200F07, // 0009 GETMET R8 R7 K7 - 0x7C200200, // 000A CALL R8 1 - 0x8C200F08, // 000B GETMET R8 R7 K8 - 0x88280109, // 000C GETMBR R10 R0 K9 - 0x582C000A, // 000D LDCONST R11 K10 - 0x7C200600, // 000E CALL R8 3 - 0x8C200F08, // 000F GETMET R8 R7 K8 - 0x8828010B, // 0010 GETMBR R10 R0 K11 - 0x542E0003, // 0011 LDINT R11 4 - 0x7C200600, // 0012 CALL R8 3 - 0x8C20070C, // 0013 GETMET R8 R3 K12 - 0x7C200200, // 0014 CALL R8 1 - 0x78220005, // 0015 JMPF R8 #001C - 0x8C20070D, // 0016 GETMET R8 R3 K13 - 0x7C200200, // 0017 CALL R8 1 - 0x78220002, // 0018 JMPF R8 #001C - 0x8C20070D, // 0019 GETMET R8 R3 K13 - 0x7C200200, // 001A CALL R8 1 - 0x40200E08, // 001B CONNECT R8 R7 R8 - 0x8C200F0E, // 001C GETMET R8 R7 K14 - 0x542A000C, // 001D LDINT R10 13 - 0x7C200400, // 001E CALL R8 2 - 0x8C20050E, // 001F GETMET R8 R2 K14 - 0x6028000C, // 0020 GETGBL R10 G12 - 0x5C2C0400, // 0021 MOVE R11 R2 - 0x7C280200, // 0022 CALL R10 1 - 0x00281405, // 0023 ADD R10 R10 R5 - 0x7C200400, // 0024 CALL R8 2 - 0x8820030F, // 0025 GETMBR R8 R1 K15 - 0x8C201110, // 0026 GETMET R8 R8 K16 - 0x5C280C00, // 0027 MOVE R10 R6 - 0x5C2C0E00, // 0028 MOVE R11 R7 - 0x58300011, // 0029 LDCONST R12 K17 - 0x6034000C, // 002A GETGBL R13 G12 - 0x5C380E00, // 002B MOVE R14 R7 - 0x7C340200, // 002C CALL R13 1 - 0x5C380400, // 002D MOVE R14 R2 - 0x583C0011, // 002E LDCONST R15 K17 - 0x5C400800, // 002F MOVE R16 R4 - 0x5C440400, // 0030 MOVE R17 R2 - 0x5C480800, // 0031 MOVE R18 R4 - 0x604C000C, // 0032 GETGBL R19 G12 - 0x5C500400, // 0033 MOVE R20 R2 - 0x7C4C0200, // 0034 CALL R19 1 - 0x044C2604, // 0035 SUB R19 R19 R4 - 0x044C2605, // 0036 SUB R19 R19 R5 - 0x5C500400, // 0037 MOVE R20 R2 - 0x6054000C, // 0038 GETGBL R21 G12 - 0x5C580400, // 0039 MOVE R22 R2 - 0x7C540200, // 003A CALL R21 1 - 0x04542A05, // 003B SUB R21 R21 R5 - 0x5C580A00, // 003C MOVE R22 R5 - 0x7C201C00, // 003D CALL R8 14 - 0x80000000, // 003E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: debug -********************************************************************/ -extern const bclass be_class_Matter_Frame; -be_local_closure(class_Matter_Frame_debug, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Frame, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Frame), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(decode_header), - /* K4 */ be_nested_str_weak(decode_payload), - }), - be_str_weak(debug), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x80000400, // 0000 RET 0 - 0xB80A0000, // 0001 GETNGBL R2 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x5C140200, // 0004 MOVE R5 R1 - 0x7C080600, // 0005 CALL R2 3 - 0x8C0C0503, // 0006 GETMET R3 R2 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0504, // 0008 GETMET R3 R2 K4 - 0x7C0C0200, // 0009 CALL R3 1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: build_standalone_ack -********************************************************************/ -extern const bclass be_class_Matter_Frame; -be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Frame, - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(remote_ip), - /* K2 */ be_nested_str_weak(remote_port), - /* K3 */ be_nested_str_weak(flag_s), - /* K4 */ be_nested_str_weak(flag_dsiz), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(dest_node_id_8), - /* K7 */ be_nested_str_weak(source_node_id), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(message_counter), - /* K11 */ be_nested_str_weak(counter_snd_next), - /* K12 */ be_nested_str_weak(local_session_id), - /* K13 */ be_nested_str_weak(initiator_session_id), - /* K14 */ be_nested_str_weak(x_flag_i), - /* K15 */ be_nested_str_weak(opcode), - /* K16 */ be_nested_str_weak(exchange_id), - /* K17 */ be_nested_str_weak(protocol_id), - /* K18 */ be_nested_str_weak(x_flag_a), - /* K19 */ be_nested_str_weak(ack_message_counter), - /* K20 */ be_nested_str_weak(x_flag_r), - }), - be_str_weak(build_standalone_ack), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x60080006, // 0000 GETGBL R2 G6 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x880C0100, // 0003 GETMBR R3 R0 K0 - 0x7C080200, // 0004 CALL R2 1 - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x900A0203, // 0006 SETMBR R2 K1 R3 - 0x880C0102, // 0007 GETMBR R3 R0 K2 - 0x900A0403, // 0008 SETMBR R2 K2 R3 - 0x880C0103, // 0009 GETMBR R3 R0 K3 - 0x780E0003, // 000A JMPF R3 #000F - 0x900A0905, // 000B SETMBR R2 K4 K5 - 0x880C0107, // 000C GETMBR R3 R0 K7 - 0x900A0C03, // 000D SETMBR R2 K6 R3 - 0x70020000, // 000E JMP #0010 - 0x900A0908, // 000F SETMBR R2 K4 K8 - 0x880C0109, // 0010 GETMBR R3 R0 K9 - 0x900A1203, // 0011 SETMBR R2 K9 R3 - 0x880C0109, // 0012 GETMBR R3 R0 K9 - 0x8C0C070B, // 0013 GETMET R3 R3 K11 - 0x7C0C0200, // 0014 CALL R3 1 - 0x900A1403, // 0015 SETMBR R2 K10 R3 - 0x880C0109, // 0016 GETMBR R3 R0 K9 - 0x880C070D, // 0017 GETMBR R3 R3 K13 - 0x900A1803, // 0018 SETMBR R2 K12 R3 - 0x880C010E, // 0019 GETMBR R3 R0 K14 - 0x780E0001, // 001A JMPF R3 #001D - 0x580C0008, // 001B LDCONST R3 K8 - 0x70020000, // 001C JMP #001E - 0x580C0005, // 001D LDCONST R3 K5 - 0x900A1C03, // 001E SETMBR R2 K14 R3 - 0x540E000F, // 001F LDINT R3 16 - 0x900A1E03, // 0020 SETMBR R2 K15 R3 - 0x880C0110, // 0021 GETMBR R3 R0 K16 - 0x900A2003, // 0022 SETMBR R2 K16 R3 - 0x900A2308, // 0023 SETMBR R2 K17 K8 - 0x900A2505, // 0024 SETMBR R2 K18 K5 - 0x880C010A, // 0025 GETMBR R3 R0 K10 - 0x900A2603, // 0026 SETMBR R2 K19 R3 - 0x78060001, // 0027 JMPF R1 #002A - 0x580C0005, // 0028 LDCONST R3 K5 - 0x70020000, // 0029 JMP #002B - 0x580C0008, // 002A LDCONST R3 K8 - 0x900A2803, // 002B SETMBR R2 K20 R3 - 0x80040400, // 002C RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: build_response -********************************************************************/ -extern const bclass be_class_Matter_Frame; -be_local_closure(class_Matter_Frame_build_response, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Frame, - 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(remote_ip), - /* K2 */ be_nested_str_weak(remote_port), - /* K3 */ be_nested_str_weak(flag_s), - /* K4 */ be_nested_str_weak(flag_dsiz), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(dest_node_id_8), - /* K7 */ be_nested_str_weak(source_node_id), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_nested_str_weak(initiator_session_id), - /* K12 */ be_nested_str_weak(message_counter), - /* K13 */ be_nested_str_weak(counter_snd_next), - /* K14 */ be_nested_str_weak(_counter_insecure_snd), - /* K15 */ be_nested_str_weak(next), - /* K16 */ be_nested_str_weak(x_flag_i), - /* K17 */ be_nested_str_weak(opcode), - /* K18 */ be_nested_str_weak(exchange_id), - /* K19 */ be_nested_str_weak(protocol_id), - /* K20 */ be_nested_str_weak(x_flag_r), - /* K21 */ be_nested_str_weak(x_flag_a), - /* K22 */ be_nested_str_weak(ack_message_counter), - /* K23 */ be_nested_str_weak(matter), - /* K24 */ be_nested_str_weak(get_opcode_name), - /* K25 */ be_nested_str_weak(0x_X2502X), - /* K26 */ be_nested_str_weak(log), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), - /* K28 */ be_const_int(3), - }), - be_str_weak(build_response), - &be_const_str_solidified, - ( &(const binstruction[90]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x1C100604, // 0001 EQ R4 R3 R4 - 0x78120005, // 0002 JMPF R4 #0009 - 0x60100006, // 0003 GETGBL R4 G6 - 0x5C140000, // 0004 MOVE R5 R0 - 0x7C100200, // 0005 CALL R4 1 - 0x88140100, // 0006 GETMBR R5 R0 K0 - 0x7C100200, // 0007 CALL R4 1 - 0x5C0C0800, // 0008 MOVE R3 R4 - 0x88100101, // 0009 GETMBR R4 R0 K1 - 0x900E0204, // 000A SETMBR R3 K1 R4 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x900E0404, // 000C SETMBR R3 K2 R4 - 0x88100103, // 000D GETMBR R4 R0 K3 - 0x78120003, // 000E JMPF R4 #0013 - 0x900E0905, // 000F SETMBR R3 K4 K5 - 0x88100107, // 0010 GETMBR R4 R0 K7 - 0x900E0C04, // 0011 SETMBR R3 K6 R4 - 0x70020000, // 0012 JMP #0014 - 0x900E0908, // 0013 SETMBR R3 K4 K8 - 0x88100109, // 0014 GETMBR R4 R0 K9 - 0x900E1204, // 0015 SETMBR R3 K9 R4 - 0x8810010A, // 0016 GETMBR R4 R0 K10 - 0x20100908, // 0017 NE R4 R4 K8 - 0x7812000D, // 0018 JMPF R4 #0027 - 0x88100109, // 0019 GETMBR R4 R0 K9 - 0x7812000B, // 001A JMPF R4 #0027 - 0x88100109, // 001B GETMBR R4 R0 K9 - 0x8810090B, // 001C GETMBR R4 R4 K11 - 0x20100908, // 001D NE R4 R4 K8 - 0x78120007, // 001E JMPF R4 #0027 - 0x88100109, // 001F GETMBR R4 R0 K9 - 0x8C10090D, // 0020 GETMET R4 R4 K13 - 0x7C100200, // 0021 CALL R4 1 - 0x900E1804, // 0022 SETMBR R3 K12 R4 - 0x88100109, // 0023 GETMBR R4 R0 K9 - 0x8810090B, // 0024 GETMBR R4 R4 K11 - 0x900E1404, // 0025 SETMBR R3 K10 R4 - 0x70020005, // 0026 JMP #002D - 0x88100109, // 0027 GETMBR R4 R0 K9 - 0x8810090E, // 0028 GETMBR R4 R4 K14 - 0x8C10090F, // 0029 GETMET R4 R4 K15 - 0x7C100200, // 002A CALL R4 1 - 0x900E1804, // 002B SETMBR R3 K12 R4 - 0x900E1508, // 002C SETMBR R3 K10 K8 - 0x88100110, // 002D GETMBR R4 R0 K16 - 0x78120001, // 002E JMPF R4 #0031 - 0x58100008, // 002F LDCONST R4 K8 - 0x70020000, // 0030 JMP #0032 - 0x58100005, // 0031 LDCONST R4 K5 - 0x900E2004, // 0032 SETMBR R3 K16 R4 - 0x900E2201, // 0033 SETMBR R3 K17 R1 - 0x88100112, // 0034 GETMBR R4 R0 K18 - 0x900E2404, // 0035 SETMBR R3 K18 R4 - 0x88100113, // 0036 GETMBR R4 R0 K19 - 0x900E2604, // 0037 SETMBR R3 K19 R4 - 0x88100114, // 0038 GETMBR R4 R0 K20 - 0x78120002, // 0039 JMPF R4 #003D - 0x900E2B05, // 003A SETMBR R3 K21 K5 - 0x8810010C, // 003B GETMBR R4 R0 K12 - 0x900E2C04, // 003C SETMBR R3 K22 R4 - 0x780A0001, // 003D JMPF R2 #0040 - 0x58100005, // 003E LDCONST R4 K5 - 0x70020000, // 003F JMP #0041 - 0x58100008, // 0040 LDCONST R4 K8 - 0x900E2804, // 0041 SETMBR R3 K20 R4 - 0x8810070A, // 0042 GETMBR R4 R3 K10 - 0x1C100908, // 0043 EQ R4 R4 K8 - 0x78120013, // 0044 JMPF R4 #0059 - 0xB8122E00, // 0045 GETNGBL R4 K23 - 0x8C100918, // 0046 GETMET R4 R4 K24 - 0x88180711, // 0047 GETMBR R6 R3 K17 - 0x7C100400, // 0048 CALL R4 2 - 0x5C140800, // 0049 MOVE R5 R4 - 0x74160004, // 004A JMPT R5 #0050 - 0x60140018, // 004B GETGBL R5 G24 - 0x58180019, // 004C LDCONST R6 K25 - 0x881C0711, // 004D GETMBR R7 R3 K17 - 0x7C140400, // 004E CALL R5 2 - 0x5C100A00, // 004F MOVE R4 R5 - 0xB8163400, // 0050 GETNGBL R5 K26 - 0x60180018, // 0051 GETGBL R6 G24 - 0x581C001B, // 0052 LDCONST R7 K27 - 0x88200709, // 0053 GETMBR R8 R3 K9 - 0x8820110A, // 0054 GETMBR R8 R8 K10 - 0x5C240800, // 0055 MOVE R9 R4 - 0x7C180600, // 0056 CALL R6 3 - 0x581C001C, // 0057 LDCONST R7 K28 - 0x7C140400, // 0058 CALL R5 2 - 0x80040600, // 0059 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: initiate_response -********************************************************************/ -extern const bclass be_class_Matter_Frame; -be_local_closure(class_Matter_Frame_initiate_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 5, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Frame, - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Frame), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Frame), - /* K3 */ be_nested_str_weak(remote_ip), - /* K4 */ be_nested_str_weak(_ip), - /* K5 */ be_nested_str_weak(remote_port), - /* K6 */ be_nested_str_weak(_port), - /* K7 */ be_nested_str_weak(flag_dsiz), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(initiator_session_id), - /* K11 */ be_nested_str_weak(message_counter), - /* K12 */ be_nested_str_weak(counter_snd_next), - /* K13 */ be_nested_str_weak(local_session_id), - /* K14 */ be_nested_str_weak(_counter_insecure_snd), - /* K15 */ be_nested_str_weak(next), - /* K16 */ be_nested_str_weak(x_flag_i), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(opcode), - /* K19 */ be_nested_str_weak(_exchange_id), - /* K20 */ be_nested_str_weak(exchange_id), - /* K21 */ be_nested_str_weak(protocol_id), - /* K22 */ be_nested_str_weak(x_flag_r), - }), - be_str_weak(initiate_response), - &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ - 0x58140000, // 0000 LDCONST R5 K0 - 0x4C180000, // 0001 LDNIL R6 - 0x1C180806, // 0002 EQ R6 R4 R6 - 0x781A0004, // 0003 JMPF R6 #0009 - 0xB81A0200, // 0004 GETNGBL R6 K1 - 0x8C180D02, // 0005 GETMET R6 R6 K2 - 0x5C200000, // 0006 MOVE R8 R0 - 0x7C180400, // 0007 CALL R6 2 - 0x5C100C00, // 0008 MOVE R4 R6 - 0x88180304, // 0009 GETMBR R6 R1 K4 - 0x90120606, // 000A SETMBR R4 K3 R6 - 0x88180306, // 000B GETMBR R6 R1 K6 - 0x90120A06, // 000C SETMBR R4 K5 R6 - 0x90120F08, // 000D SETMBR R4 K7 K8 - 0x90121201, // 000E SETMBR R4 K9 R1 - 0x78060008, // 000F JMPF R1 #0019 - 0x8818030A, // 0010 GETMBR R6 R1 K10 - 0x20180D08, // 0011 NE R6 R6 K8 - 0x781A0005, // 0012 JMPF R6 #0019 - 0x8C18030C, // 0013 GETMET R6 R1 K12 - 0x7C180200, // 0014 CALL R6 1 - 0x90121606, // 0015 SETMBR R4 K11 R6 - 0x8818030A, // 0016 GETMBR R6 R1 K10 - 0x90121A06, // 0017 SETMBR R4 K13 R6 - 0x70020004, // 0018 JMP #001E - 0x8818030E, // 0019 GETMBR R6 R1 K14 - 0x8C180D0F, // 001A GETMET R6 R6 K15 - 0x7C180200, // 001B CALL R6 1 - 0x90121606, // 001C SETMBR R4 K11 R6 - 0x90121B08, // 001D SETMBR R4 K13 K8 - 0x90122111, // 001E SETMBR R4 K16 K17 - 0x90122402, // 001F SETMBR R4 K18 R2 - 0x88180313, // 0020 GETMBR R6 R1 K19 - 0x00180D11, // 0021 ADD R6 R6 K17 - 0x90062606, // 0022 SETMBR R1 K19 R6 - 0x88180313, // 0023 GETMBR R6 R1 K19 - 0x541EFFFF, // 0024 LDINT R7 65536 - 0x30180C07, // 0025 OR R6 R6 R7 - 0x90122806, // 0026 SETMBR R4 K20 R6 - 0x90122B11, // 0027 SETMBR R4 K21 K17 - 0x780E0001, // 0028 JMPF R3 #002B - 0x58180011, // 0029 LDCONST R6 K17 - 0x70020000, // 002A JMP #002C - 0x58180008, // 002B LDCONST R6 K8 - 0x90122C06, // 002C SETMBR R4 K22 R6 - 0x80040800, // 002D RET 1 R4 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: decode_header ********************************************************************/ @@ -858,33 +558,39 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: debug ********************************************************************/ extern const bclass be_class_Matter_Frame; -be_local_closure(class_Matter_Frame_init, /* name */ +be_local_closure(class_Matter_Frame_debug, /* name */ be_nested_proto( - 5, /* nstack */ - 5, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Frame, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(remote_ip), - /* K3 */ be_nested_str_weak(remote_port), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(Frame), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(decode_header), + /* K4 */ be_nested_str_weak(decode_payload), }), - be_str_weak(init), + be_str_weak(debug), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x90020604, // 0003 SETMBR R0 K3 R4 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[10]) { /* code */ + 0x80000400, // 0000 RET 0 + 0xB80A0000, // 0001 GETNGBL R2 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x5C140200, // 0004 MOVE R5 R1 + 0x7C080600, // 0005 CALL R2 3 + 0x8C0C0503, // 0006 GETMET R3 R2 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0504, // 0008 GETMET R3 R2 K4 + 0x7C0C0200, // 0009 CALL R3 1 }) ) ); @@ -892,136 +598,143 @@ be_local_closure(class_Matter_Frame_init, /* name */ /******************************************************************** -** Solidified function: decode_payload +** Solidified function: build_response ********************************************************************/ extern const bclass be_class_Matter_Frame; -be_local_closure(class_Matter_Frame_decode_payload, /* name */ +be_local_closure(class_Matter_Frame_build_response, /* name */ be_nested_proto( - 7, /* nstack */ - 1, /* argc */ + 10, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Frame, 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(payload_idx), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(x_flags), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(x_flag_v), - /* K6 */ be_nested_str_weak(getbits), - /* K7 */ be_nested_str_weak(x_flag_sx), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(x_flag_r), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(x_flag_a), - /* K12 */ be_nested_str_weak(x_flag_i), - /* K13 */ be_nested_str_weak(opcode), - /* K14 */ be_nested_str_weak(exchange_id), - /* K15 */ be_nested_str_weak(protocol_id), - /* K16 */ be_nested_str_weak(vendor_id), - /* K17 */ be_nested_str_weak(ack_message_counter), - /* K18 */ be_nested_str_weak(app_payload_idx), + ( &(const bvalue[29]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(remote_ip), + /* K2 */ be_nested_str_weak(remote_port), + /* K3 */ be_nested_str_weak(flag_s), + /* K4 */ be_nested_str_weak(flag_dsiz), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(dest_node_id_8), + /* K7 */ be_nested_str_weak(source_node_id), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(local_session_id), + /* K11 */ be_nested_str_weak(initiator_session_id), + /* K12 */ be_nested_str_weak(message_counter), + /* K13 */ be_nested_str_weak(counter_snd_next), + /* K14 */ be_nested_str_weak(_counter_insecure_snd), + /* K15 */ be_nested_str_weak(next), + /* K16 */ be_nested_str_weak(x_flag_i), + /* K17 */ be_nested_str_weak(opcode), + /* K18 */ be_nested_str_weak(exchange_id), + /* K19 */ be_nested_str_weak(protocol_id), + /* K20 */ be_nested_str_weak(x_flag_r), + /* K21 */ be_nested_str_weak(x_flag_a), + /* K22 */ be_nested_str_weak(ack_message_counter), + /* K23 */ be_nested_str_weak(matter), + /* K24 */ be_nested_str_weak(get_opcode_name), + /* K25 */ be_nested_str_weak(0x_X2502X), + /* K26 */ be_nested_str_weak(log), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), + /* K28 */ be_const_int(3), }), - be_str_weak(decode_payload), + be_str_weak(build_response), &be_const_str_solidified, - ( &(const binstruction[93]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C0C0503, // 0002 GETMET R3 R2 K3 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180004, // 0004 LDCONST R6 K4 - 0x7C0C0600, // 0005 CALL R3 3 - 0x90020403, // 0006 SETMBR R0 K2 R3 - 0x8C0C0506, // 0007 GETMET R3 R2 K6 - 0x54160007, // 0008 LDINT R5 8 - 0x08140205, // 0009 MUL R5 R1 R5 - 0x541A0003, // 000A LDINT R6 4 - 0x00140A06, // 000B ADD R5 R5 R6 - 0x58180004, // 000C LDCONST R6 K4 - 0x7C0C0600, // 000D CALL R3 3 - 0x90020A03, // 000E SETMBR R0 K5 R3 - 0x8C0C0506, // 000F GETMET R3 R2 K6 - 0x54160007, // 0010 LDINT R5 8 - 0x08140205, // 0011 MUL R5 R1 R5 - 0x00140B08, // 0012 ADD R5 R5 K8 - 0x58180004, // 0013 LDCONST R6 K4 - 0x7C0C0600, // 0014 CALL R3 3 - 0x90020E03, // 0015 SETMBR R0 K7 R3 - 0x8C0C0506, // 0016 GETMET R3 R2 K6 - 0x54160007, // 0017 LDINT R5 8 - 0x08140205, // 0018 MUL R5 R1 R5 - 0x00140B0A, // 0019 ADD R5 R5 K10 - 0x58180004, // 001A LDCONST R6 K4 - 0x7C0C0600, // 001B CALL R3 3 - 0x90021203, // 001C SETMBR R0 K9 R3 - 0x8C0C0506, // 001D GETMET R3 R2 K6 - 0x54160007, // 001E LDINT R5 8 - 0x08140205, // 001F MUL R5 R1 R5 - 0x00140B04, // 0020 ADD R5 R5 K4 - 0x58180004, // 0021 LDCONST R6 K4 - 0x7C0C0600, // 0022 CALL R3 3 - 0x90021603, // 0023 SETMBR R0 K11 R3 - 0x8C0C0506, // 0024 GETMET R3 R2 K6 - 0x54160007, // 0025 LDINT R5 8 - 0x08140205, // 0026 MUL R5 R1 R5 - 0x58180004, // 0027 LDCONST R6 K4 - 0x7C0C0600, // 0028 CALL R3 3 - 0x90021803, // 0029 SETMBR R0 K12 R3 - 0x8C0C0503, // 002A GETMET R3 R2 K3 - 0x00140304, // 002B ADD R5 R1 K4 - 0x58180004, // 002C LDCONST R6 K4 - 0x7C0C0600, // 002D CALL R3 3 - 0x90021A03, // 002E SETMBR R0 K13 R3 - 0x8C0C0503, // 002F GETMET R3 R2 K3 - 0x0014030A, // 0030 ADD R5 R1 K10 - 0x5818000A, // 0031 LDCONST R6 K10 - 0x7C0C0600, // 0032 CALL R3 3 - 0x90021C03, // 0033 SETMBR R0 K14 R3 - 0x880C010C, // 0034 GETMBR R3 R0 K12 - 0x740E0003, // 0035 JMPT R3 #003A - 0x880C010E, // 0036 GETMBR R3 R0 K14 - 0x5412FFFF, // 0037 LDINT R4 65536 - 0x300C0604, // 0038 OR R3 R3 R4 - 0x90021C03, // 0039 SETMBR R0 K14 R3 - 0x8C0C0503, // 003A GETMET R3 R2 K3 - 0x54160003, // 003B LDINT R5 4 - 0x00140205, // 003C ADD R5 R1 R5 - 0x5818000A, // 003D LDCONST R6 K10 - 0x7C0C0600, // 003E CALL R3 3 - 0x90021E03, // 003F SETMBR R0 K15 R3 - 0x540E0005, // 0040 LDINT R3 6 - 0x00040203, // 0041 ADD R1 R1 R3 - 0x880C0105, // 0042 GETMBR R3 R0 K5 - 0x780E0005, // 0043 JMPF R3 #004A - 0x8C0C0503, // 0044 GETMET R3 R2 K3 - 0x5C140200, // 0045 MOVE R5 R1 - 0x5818000A, // 0046 LDCONST R6 K10 - 0x7C0C0600, // 0047 CALL R3 3 - 0x90022003, // 0048 SETMBR R0 K16 R3 - 0x0004030A, // 0049 ADD R1 R1 K10 - 0x880C010B, // 004A GETMBR R3 R0 K11 - 0x780E0006, // 004B JMPF R3 #0053 - 0x8C0C0503, // 004C GETMET R3 R2 K3 - 0x5C140200, // 004D MOVE R5 R1 - 0x541A0003, // 004E LDINT R6 4 - 0x7C0C0600, // 004F CALL R3 3 - 0x90022203, // 0050 SETMBR R0 K17 R3 - 0x540E0003, // 0051 LDINT R3 4 - 0x00040203, // 0052 ADD R1 R1 R3 - 0x880C0107, // 0053 GETMBR R3 R0 K7 - 0x780E0005, // 0054 JMPF R3 #005B - 0x8C0C0503, // 0055 GETMET R3 R2 K3 - 0x5C140200, // 0056 MOVE R5 R1 - 0x5818000A, // 0057 LDCONST R6 K10 - 0x7C0C0600, // 0058 CALL R3 3 - 0x0010070A, // 0059 ADD R4 R3 K10 - 0x00040204, // 005A ADD R1 R1 R4 - 0x90022401, // 005B SETMBR R0 K18 R1 - 0x80040000, // 005C RET 1 R0 + ( &(const binstruction[90]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x1C100604, // 0001 EQ R4 R3 R4 + 0x78120005, // 0002 JMPF R4 #0009 + 0x60100006, // 0003 GETGBL R4 G6 + 0x5C140000, // 0004 MOVE R5 R0 + 0x7C100200, // 0005 CALL R4 1 + 0x88140100, // 0006 GETMBR R5 R0 K0 + 0x7C100200, // 0007 CALL R4 1 + 0x5C0C0800, // 0008 MOVE R3 R4 + 0x88100101, // 0009 GETMBR R4 R0 K1 + 0x900E0204, // 000A SETMBR R3 K1 R4 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0x900E0404, // 000C SETMBR R3 K2 R4 + 0x88100103, // 000D GETMBR R4 R0 K3 + 0x78120003, // 000E JMPF R4 #0013 + 0x900E0905, // 000F SETMBR R3 K4 K5 + 0x88100107, // 0010 GETMBR R4 R0 K7 + 0x900E0C04, // 0011 SETMBR R3 K6 R4 + 0x70020000, // 0012 JMP #0014 + 0x900E0908, // 0013 SETMBR R3 K4 K8 + 0x88100109, // 0014 GETMBR R4 R0 K9 + 0x900E1204, // 0015 SETMBR R3 K9 R4 + 0x8810010A, // 0016 GETMBR R4 R0 K10 + 0x20100908, // 0017 NE R4 R4 K8 + 0x7812000D, // 0018 JMPF R4 #0027 + 0x88100109, // 0019 GETMBR R4 R0 K9 + 0x7812000B, // 001A JMPF R4 #0027 + 0x88100109, // 001B GETMBR R4 R0 K9 + 0x8810090B, // 001C GETMBR R4 R4 K11 + 0x20100908, // 001D NE R4 R4 K8 + 0x78120007, // 001E JMPF R4 #0027 + 0x88100109, // 001F GETMBR R4 R0 K9 + 0x8C10090D, // 0020 GETMET R4 R4 K13 + 0x7C100200, // 0021 CALL R4 1 + 0x900E1804, // 0022 SETMBR R3 K12 R4 + 0x88100109, // 0023 GETMBR R4 R0 K9 + 0x8810090B, // 0024 GETMBR R4 R4 K11 + 0x900E1404, // 0025 SETMBR R3 K10 R4 + 0x70020005, // 0026 JMP #002D + 0x88100109, // 0027 GETMBR R4 R0 K9 + 0x8810090E, // 0028 GETMBR R4 R4 K14 + 0x8C10090F, // 0029 GETMET R4 R4 K15 + 0x7C100200, // 002A CALL R4 1 + 0x900E1804, // 002B SETMBR R3 K12 R4 + 0x900E1508, // 002C SETMBR R3 K10 K8 + 0x88100110, // 002D GETMBR R4 R0 K16 + 0x78120001, // 002E JMPF R4 #0031 + 0x58100008, // 002F LDCONST R4 K8 + 0x70020000, // 0030 JMP #0032 + 0x58100005, // 0031 LDCONST R4 K5 + 0x900E2004, // 0032 SETMBR R3 K16 R4 + 0x900E2201, // 0033 SETMBR R3 K17 R1 + 0x88100112, // 0034 GETMBR R4 R0 K18 + 0x900E2404, // 0035 SETMBR R3 K18 R4 + 0x88100113, // 0036 GETMBR R4 R0 K19 + 0x900E2604, // 0037 SETMBR R3 K19 R4 + 0x88100114, // 0038 GETMBR R4 R0 K20 + 0x78120002, // 0039 JMPF R4 #003D + 0x900E2B05, // 003A SETMBR R3 K21 K5 + 0x8810010C, // 003B GETMBR R4 R0 K12 + 0x900E2C04, // 003C SETMBR R3 K22 R4 + 0x780A0001, // 003D JMPF R2 #0040 + 0x58100005, // 003E LDCONST R4 K5 + 0x70020000, // 003F JMP #0041 + 0x58100008, // 0040 LDCONST R4 K8 + 0x900E2804, // 0041 SETMBR R3 K20 R4 + 0x8810070A, // 0042 GETMBR R4 R3 K10 + 0x1C100908, // 0043 EQ R4 R4 K8 + 0x78120013, // 0044 JMPF R4 #0059 + 0xB8122E00, // 0045 GETNGBL R4 K23 + 0x8C100918, // 0046 GETMET R4 R4 K24 + 0x88180711, // 0047 GETMBR R6 R3 K17 + 0x7C100400, // 0048 CALL R4 2 + 0x5C140800, // 0049 MOVE R5 R4 + 0x74160004, // 004A JMPT R5 #0050 + 0x60140018, // 004B GETGBL R5 G24 + 0x58180019, // 004C LDCONST R6 K25 + 0x881C0711, // 004D GETMBR R7 R3 K17 + 0x7C140400, // 004E CALL R5 2 + 0x5C100A00, // 004F MOVE R4 R5 + 0xB8163400, // 0050 GETNGBL R5 K26 + 0x60180018, // 0051 GETGBL R6 G24 + 0x581C001B, // 0052 LDCONST R7 K27 + 0x88200709, // 0053 GETMBR R8 R3 K9 + 0x8820110A, // 0054 GETMBR R8 R8 K10 + 0x5C240800, // 0055 MOVE R9 R4 + 0x7C180600, // 0056 CALL R6 3 + 0x581C001C, // 0057 LDCONST R7 K28 + 0x7C140400, // 0058 CALL R5 2 + 0x80040600, // 0059 RET 1 R3 }) ) ); @@ -1197,56 +910,379 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: build_standalone_ack +********************************************************************/ +extern const bclass be_class_Matter_Frame; +be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Frame, + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(remote_ip), + /* K2 */ be_nested_str_weak(remote_port), + /* K3 */ be_nested_str_weak(flag_s), + /* K4 */ be_nested_str_weak(flag_dsiz), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(dest_node_id_8), + /* K7 */ be_nested_str_weak(source_node_id), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(message_counter), + /* K11 */ be_nested_str_weak(counter_snd_next), + /* K12 */ be_nested_str_weak(local_session_id), + /* K13 */ be_nested_str_weak(initiator_session_id), + /* K14 */ be_nested_str_weak(x_flag_i), + /* K15 */ be_nested_str_weak(opcode), + /* K16 */ be_nested_str_weak(exchange_id), + /* K17 */ be_nested_str_weak(protocol_id), + /* K18 */ be_nested_str_weak(x_flag_a), + /* K19 */ be_nested_str_weak(ack_message_counter), + /* K20 */ be_nested_str_weak(x_flag_r), + }), + be_str_weak(build_standalone_ack), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x60080006, // 0000 GETGBL R2 G6 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x880C0100, // 0003 GETMBR R3 R0 K0 + 0x7C080200, // 0004 CALL R2 1 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x900A0203, // 0006 SETMBR R2 K1 R3 + 0x880C0102, // 0007 GETMBR R3 R0 K2 + 0x900A0403, // 0008 SETMBR R2 K2 R3 + 0x880C0103, // 0009 GETMBR R3 R0 K3 + 0x780E0003, // 000A JMPF R3 #000F + 0x900A0905, // 000B SETMBR R2 K4 K5 + 0x880C0107, // 000C GETMBR R3 R0 K7 + 0x900A0C03, // 000D SETMBR R2 K6 R3 + 0x70020000, // 000E JMP #0010 + 0x900A0908, // 000F SETMBR R2 K4 K8 + 0x880C0109, // 0010 GETMBR R3 R0 K9 + 0x900A1203, // 0011 SETMBR R2 K9 R3 + 0x880C0109, // 0012 GETMBR R3 R0 K9 + 0x8C0C070B, // 0013 GETMET R3 R3 K11 + 0x7C0C0200, // 0014 CALL R3 1 + 0x900A1403, // 0015 SETMBR R2 K10 R3 + 0x880C0109, // 0016 GETMBR R3 R0 K9 + 0x880C070D, // 0017 GETMBR R3 R3 K13 + 0x900A1803, // 0018 SETMBR R2 K12 R3 + 0x880C010E, // 0019 GETMBR R3 R0 K14 + 0x780E0001, // 001A JMPF R3 #001D + 0x580C0008, // 001B LDCONST R3 K8 + 0x70020000, // 001C JMP #001E + 0x580C0005, // 001D LDCONST R3 K5 + 0x900A1C03, // 001E SETMBR R2 K14 R3 + 0x540E000F, // 001F LDINT R3 16 + 0x900A1E03, // 0020 SETMBR R2 K15 R3 + 0x880C0110, // 0021 GETMBR R3 R0 K16 + 0x900A2003, // 0022 SETMBR R2 K16 R3 + 0x900A2308, // 0023 SETMBR R2 K17 K8 + 0x900A2505, // 0024 SETMBR R2 K18 K5 + 0x880C010A, // 0025 GETMBR R3 R0 K10 + 0x900A2603, // 0026 SETMBR R2 K19 R3 + 0x78060001, // 0027 JMPF R1 #002A + 0x580C0005, // 0028 LDCONST R3 K5 + 0x70020000, // 0029 JMP #002B + 0x580C0008, // 002A LDCONST R3 K8 + 0x900A2803, // 002B SETMBR R2 K20 R3 + 0x80040400, // 002C RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: initiate_response +********************************************************************/ +extern const bclass be_class_Matter_Frame; +be_local_closure(class_Matter_Frame_initiate_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 5, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Frame, + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Frame), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(Frame), + /* K3 */ be_nested_str_weak(remote_ip), + /* K4 */ be_nested_str_weak(_ip), + /* K5 */ be_nested_str_weak(remote_port), + /* K6 */ be_nested_str_weak(_port), + /* K7 */ be_nested_str_weak(flag_dsiz), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(initiator_session_id), + /* K11 */ be_nested_str_weak(message_counter), + /* K12 */ be_nested_str_weak(counter_snd_next), + /* K13 */ be_nested_str_weak(local_session_id), + /* K14 */ be_nested_str_weak(_counter_insecure_snd), + /* K15 */ be_nested_str_weak(next), + /* K16 */ be_nested_str_weak(x_flag_i), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(opcode), + /* K19 */ be_nested_str_weak(_exchange_id), + /* K20 */ be_nested_str_weak(exchange_id), + /* K21 */ be_nested_str_weak(protocol_id), + /* K22 */ be_nested_str_weak(x_flag_r), + }), + be_str_weak(initiate_response), + &be_const_str_solidified, + ( &(const binstruction[46]) { /* code */ + 0x58140000, // 0000 LDCONST R5 K0 + 0x4C180000, // 0001 LDNIL R6 + 0x1C180806, // 0002 EQ R6 R4 R6 + 0x781A0004, // 0003 JMPF R6 #0009 + 0xB81A0200, // 0004 GETNGBL R6 K1 + 0x8C180D02, // 0005 GETMET R6 R6 K2 + 0x5C200000, // 0006 MOVE R8 R0 + 0x7C180400, // 0007 CALL R6 2 + 0x5C100C00, // 0008 MOVE R4 R6 + 0x88180304, // 0009 GETMBR R6 R1 K4 + 0x90120606, // 000A SETMBR R4 K3 R6 + 0x88180306, // 000B GETMBR R6 R1 K6 + 0x90120A06, // 000C SETMBR R4 K5 R6 + 0x90120F08, // 000D SETMBR R4 K7 K8 + 0x90121201, // 000E SETMBR R4 K9 R1 + 0x78060008, // 000F JMPF R1 #0019 + 0x8818030A, // 0010 GETMBR R6 R1 K10 + 0x20180D08, // 0011 NE R6 R6 K8 + 0x781A0005, // 0012 JMPF R6 #0019 + 0x8C18030C, // 0013 GETMET R6 R1 K12 + 0x7C180200, // 0014 CALL R6 1 + 0x90121606, // 0015 SETMBR R4 K11 R6 + 0x8818030A, // 0016 GETMBR R6 R1 K10 + 0x90121A06, // 0017 SETMBR R4 K13 R6 + 0x70020004, // 0018 JMP #001E + 0x8818030E, // 0019 GETMBR R6 R1 K14 + 0x8C180D0F, // 001A GETMET R6 R6 K15 + 0x7C180200, // 001B CALL R6 1 + 0x90121606, // 001C SETMBR R4 K11 R6 + 0x90121B08, // 001D SETMBR R4 K13 K8 + 0x90122111, // 001E SETMBR R4 K16 K17 + 0x90122402, // 001F SETMBR R4 K18 R2 + 0x88180313, // 0020 GETMBR R6 R1 K19 + 0x00180D11, // 0021 ADD R6 R6 K17 + 0x90062606, // 0022 SETMBR R1 K19 R6 + 0x88180313, // 0023 GETMBR R6 R1 K19 + 0x541EFFFF, // 0024 LDINT R7 65536 + 0x30180C07, // 0025 OR R6 R6 R7 + 0x90122806, // 0026 SETMBR R4 K20 R6 + 0x90122B11, // 0027 SETMBR R4 K21 K17 + 0x780E0001, // 0028 JMPF R3 #002B + 0x58180011, // 0029 LDCONST R6 K17 + 0x70020000, // 002A JMP #002C + 0x58180008, // 002B LDCONST R6 K8 + 0x90122C06, // 002C SETMBR R4 K22 R6 + 0x80040800, // 002D RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: decode_payload +********************************************************************/ +extern const bclass be_class_Matter_Frame; +be_local_closure(class_Matter_Frame_decode_payload, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Frame, + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(payload_idx), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(x_flags), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(x_flag_v), + /* K6 */ be_nested_str_weak(getbits), + /* K7 */ be_nested_str_weak(x_flag_sx), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(x_flag_r), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(x_flag_a), + /* K12 */ be_nested_str_weak(x_flag_i), + /* K13 */ be_nested_str_weak(opcode), + /* K14 */ be_nested_str_weak(exchange_id), + /* K15 */ be_nested_str_weak(protocol_id), + /* K16 */ be_nested_str_weak(vendor_id), + /* K17 */ be_nested_str_weak(ack_message_counter), + /* K18 */ be_nested_str_weak(app_payload_idx), + }), + be_str_weak(decode_payload), + &be_const_str_solidified, + ( &(const binstruction[93]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C0C0503, // 0002 GETMET R3 R2 K3 + 0x5C140200, // 0003 MOVE R5 R1 + 0x58180004, // 0004 LDCONST R6 K4 + 0x7C0C0600, // 0005 CALL R3 3 + 0x90020403, // 0006 SETMBR R0 K2 R3 + 0x8C0C0506, // 0007 GETMET R3 R2 K6 + 0x54160007, // 0008 LDINT R5 8 + 0x08140205, // 0009 MUL R5 R1 R5 + 0x541A0003, // 000A LDINT R6 4 + 0x00140A06, // 000B ADD R5 R5 R6 + 0x58180004, // 000C LDCONST R6 K4 + 0x7C0C0600, // 000D CALL R3 3 + 0x90020A03, // 000E SETMBR R0 K5 R3 + 0x8C0C0506, // 000F GETMET R3 R2 K6 + 0x54160007, // 0010 LDINT R5 8 + 0x08140205, // 0011 MUL R5 R1 R5 + 0x00140B08, // 0012 ADD R5 R5 K8 + 0x58180004, // 0013 LDCONST R6 K4 + 0x7C0C0600, // 0014 CALL R3 3 + 0x90020E03, // 0015 SETMBR R0 K7 R3 + 0x8C0C0506, // 0016 GETMET R3 R2 K6 + 0x54160007, // 0017 LDINT R5 8 + 0x08140205, // 0018 MUL R5 R1 R5 + 0x00140B0A, // 0019 ADD R5 R5 K10 + 0x58180004, // 001A LDCONST R6 K4 + 0x7C0C0600, // 001B CALL R3 3 + 0x90021203, // 001C SETMBR R0 K9 R3 + 0x8C0C0506, // 001D GETMET R3 R2 K6 + 0x54160007, // 001E LDINT R5 8 + 0x08140205, // 001F MUL R5 R1 R5 + 0x00140B04, // 0020 ADD R5 R5 K4 + 0x58180004, // 0021 LDCONST R6 K4 + 0x7C0C0600, // 0022 CALL R3 3 + 0x90021603, // 0023 SETMBR R0 K11 R3 + 0x8C0C0506, // 0024 GETMET R3 R2 K6 + 0x54160007, // 0025 LDINT R5 8 + 0x08140205, // 0026 MUL R5 R1 R5 + 0x58180004, // 0027 LDCONST R6 K4 + 0x7C0C0600, // 0028 CALL R3 3 + 0x90021803, // 0029 SETMBR R0 K12 R3 + 0x8C0C0503, // 002A GETMET R3 R2 K3 + 0x00140304, // 002B ADD R5 R1 K4 + 0x58180004, // 002C LDCONST R6 K4 + 0x7C0C0600, // 002D CALL R3 3 + 0x90021A03, // 002E SETMBR R0 K13 R3 + 0x8C0C0503, // 002F GETMET R3 R2 K3 + 0x0014030A, // 0030 ADD R5 R1 K10 + 0x5818000A, // 0031 LDCONST R6 K10 + 0x7C0C0600, // 0032 CALL R3 3 + 0x90021C03, // 0033 SETMBR R0 K14 R3 + 0x880C010C, // 0034 GETMBR R3 R0 K12 + 0x740E0003, // 0035 JMPT R3 #003A + 0x880C010E, // 0036 GETMBR R3 R0 K14 + 0x5412FFFF, // 0037 LDINT R4 65536 + 0x300C0604, // 0038 OR R3 R3 R4 + 0x90021C03, // 0039 SETMBR R0 K14 R3 + 0x8C0C0503, // 003A GETMET R3 R2 K3 + 0x54160003, // 003B LDINT R5 4 + 0x00140205, // 003C ADD R5 R1 R5 + 0x5818000A, // 003D LDCONST R6 K10 + 0x7C0C0600, // 003E CALL R3 3 + 0x90021E03, // 003F SETMBR R0 K15 R3 + 0x540E0005, // 0040 LDINT R3 6 + 0x00040203, // 0041 ADD R1 R1 R3 + 0x880C0105, // 0042 GETMBR R3 R0 K5 + 0x780E0005, // 0043 JMPF R3 #004A + 0x8C0C0503, // 0044 GETMET R3 R2 K3 + 0x5C140200, // 0045 MOVE R5 R1 + 0x5818000A, // 0046 LDCONST R6 K10 + 0x7C0C0600, // 0047 CALL R3 3 + 0x90022003, // 0048 SETMBR R0 K16 R3 + 0x0004030A, // 0049 ADD R1 R1 K10 + 0x880C010B, // 004A GETMBR R3 R0 K11 + 0x780E0006, // 004B JMPF R3 #0053 + 0x8C0C0503, // 004C GETMET R3 R2 K3 + 0x5C140200, // 004D MOVE R5 R1 + 0x541A0003, // 004E LDINT R6 4 + 0x7C0C0600, // 004F CALL R3 3 + 0x90022203, // 0050 SETMBR R0 K17 R3 + 0x540E0003, // 0051 LDINT R3 4 + 0x00040203, // 0052 ADD R1 R1 R3 + 0x880C0107, // 0053 GETMBR R3 R0 K7 + 0x780E0005, // 0054 JMPF R3 #005B + 0x8C0C0503, // 0055 GETMET R3 R2 K3 + 0x5C140200, // 0056 MOVE R5 R1 + 0x5818000A, // 0057 LDCONST R6 K10 + 0x7C0C0600, // 0058 CALL R3 3 + 0x0010070A, // 0059 ADD R4 R3 K10 + 0x00040204, // 005A ADD R1 R1 R4 + 0x90022401, // 005B SETMBR R0 K18 R1 + 0x80040000, // 005C RET 1 R0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Frame ********************************************************************/ be_local_class(Matter_Frame, 32, NULL, - be_nested_map(42, + be_nested_map(43, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(x_flag_i, -1), be_const_var(22) }, - { be_const_key_weak(dest_node_id_8, 7), be_const_var(16) }, - { be_const_key_weak(x_flags, -1), be_const_var(17) }, - { be_const_key_weak(x_flag_a, -1), be_const_var(21) }, - { be_const_key_weak(exchange_id, -1), be_const_var(24) }, - { be_const_key_weak(opcode, -1), be_const_var(23) }, - { be_const_key_weak(encode_frame, -1), be_const_closure(class_Matter_Frame_encode_frame_closure) }, - { be_const_key_weak(app_payload_idx, -1), be_const_var(29) }, - { be_const_key_weak(payload_idx, -1), be_const_var(3) }, - { be_const_key_weak(ack_message_counter, 24), be_const_var(27) }, - { be_const_key_weak(build_standalone_ack, -1), be_const_closure(class_Matter_Frame_build_standalone_ack_closure) }, - { be_const_key_weak(x_flag_v, 6), be_const_var(18) }, - { be_const_key_weak(sec_c, -1), be_const_var(10) }, - { be_const_key_weak(vendor_id, 32), be_const_var(26) }, - { be_const_key_weak(local_session_id, -1), be_const_var(7) }, - { be_const_key_weak(flag_s, -1), be_const_var(5) }, - { be_const_key_weak(debug, -1), be_const_closure(class_Matter_Frame_debug_closure) }, - { be_const_key_weak(message_handler, 10), be_const_var(0) }, - { be_const_key_weak(encrypt, 34), be_const_closure(class_Matter_Frame_encrypt_closure) }, - { be_const_key_weak(session, -1), be_const_var(1) }, - { be_const_key_weak(sec_flags, -1), be_const_var(8) }, - { be_const_key_weak(build_response, -1), be_const_closure(class_Matter_Frame_build_response_closure) }, - { be_const_key_weak(initiate_response, -1), be_const_static_closure(class_Matter_Frame_initiate_response_closure) }, - { be_const_key_weak(remote_port, -1), be_const_var(31) }, - { be_const_key_weak(sec_sesstype, -1), be_const_var(12) }, - { be_const_key_weak(decode_header, 23), be_const_closure(class_Matter_Frame_decode_header_closure) }, - { be_const_key_weak(flags, -1), be_const_var(4) }, - { be_const_key_weak(protocol_id, 13), be_const_var(25) }, + { be_const_key_weak(decode_payload, 35), be_const_closure(class_Matter_Frame_decode_payload_closure) }, { be_const_key_weak(raw, -1), be_const_var(2) }, - { be_const_key_weak(source_node_id, 28), be_const_var(14) }, + { be_const_key_weak(sec_c, 30), be_const_var(10) }, + { be_const_key_weak(message_counter, 11), be_const_var(13) }, + { be_const_key_weak(message_handler, -1), be_const_var(0) }, + { be_const_key_weak(remote_ip, 4), be_const_var(30) }, + { be_const_key_weak(x_flag_sx, -1), be_const_var(19) }, + { be_const_key_weak(get_node_id, -1), be_const_closure(class_Matter_Frame_get_node_id_closure) }, + { be_const_key_weak(sec_mx, -1), be_const_var(11) }, { be_const_key_weak(flag_dsiz, -1), be_const_var(6) }, - { be_const_key_weak(x_flag_r, -1), be_const_var(20) }, - { be_const_key_weak(message_counter, -1), be_const_var(13) }, - { be_const_key_weak(init, 14), be_const_closure(class_Matter_Frame_init_closure) }, - { be_const_key_weak(x_flag_sx, 12), be_const_var(19) }, - { be_const_key_weak(dest_node_id_2, -1), be_const_var(15) }, - { be_const_key_weak(decode_payload, -1), be_const_closure(class_Matter_Frame_decode_payload_closure) }, - { be_const_key_weak(sec_p, 8), be_const_var(9) }, - { be_const_key_weak(decrypt, -1), be_const_closure(class_Matter_Frame_decrypt_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Frame_init_closure) }, + { be_const_key_weak(x_flag_r, 9), be_const_var(20) }, + { be_const_key_weak(encode_frame, 36), be_const_closure(class_Matter_Frame_encode_frame_closure) }, + { be_const_key_weak(exchange_id, -1), be_const_var(24) }, + { be_const_key_weak(x_flag_v, -1), be_const_var(18) }, { be_const_key_weak(sec_extensions, -1), be_const_var(28) }, - { be_const_key_weak(sec_mx, 3), be_const_var(11) }, - { be_const_key_weak(remote_ip, 2), be_const_var(30) }, + { be_const_key_weak(opcode, -1), be_const_var(23) }, + { be_const_key_weak(local_session_id, -1), be_const_var(7) }, + { be_const_key_weak(decode_header, -1), be_const_closure(class_Matter_Frame_decode_header_closure) }, + { be_const_key_weak(debug, 22), be_const_closure(class_Matter_Frame_debug_closure) }, + { be_const_key_weak(dest_node_id_8, -1), be_const_var(16) }, + { be_const_key_weak(vendor_id, 32), be_const_var(26) }, + { be_const_key_weak(initiate_response, -1), be_const_static_closure(class_Matter_Frame_initiate_response_closure) }, + { be_const_key_weak(build_response, -1), be_const_closure(class_Matter_Frame_build_response_closure) }, + { be_const_key_weak(payload_idx, -1), be_const_var(3) }, + { be_const_key_weak(encrypt, 23), be_const_closure(class_Matter_Frame_encrypt_closure) }, + { be_const_key_weak(dest_node_id_2, 21), be_const_var(15) }, + { be_const_key_weak(sec_p, -1), be_const_var(9) }, + { be_const_key_weak(sec_sesstype, 16), be_const_var(12) }, + { be_const_key_weak(protocol_id, -1), be_const_var(25) }, + { be_const_key_weak(build_standalone_ack, 38), be_const_closure(class_Matter_Frame_build_standalone_ack_closure) }, + { be_const_key_weak(remote_port, -1), be_const_var(31) }, + { be_const_key_weak(decrypt, -1), be_const_closure(class_Matter_Frame_decrypt_closure) }, + { be_const_key_weak(session, 24), be_const_var(1) }, + { be_const_key_weak(x_flag_i, -1), be_const_var(22) }, + { be_const_key_weak(flag_s, -1), be_const_var(5) }, + { be_const_key_weak(sec_flags, 37), be_const_var(8) }, + { be_const_key_weak(x_flag_a, -1), be_const_var(21) }, + { be_const_key_weak(app_payload_idx, -1), be_const_var(29) }, + { be_const_key_weak(flags, -1), be_const_var(4) }, + { be_const_key_weak(ack_message_counter, 8), be_const_var(27) }, + { be_const_key_weak(source_node_id, -1), be_const_var(14) }, + { be_const_key_weak(x_flags, 0), be_const_var(17) }, })), be_str_weak(Matter_Frame) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 401fd4429..8c3e21abe 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -7,38 +7,12 @@ extern const bclass be_class_Matter_Plugin; /******************************************************************** -** Solidified function: write_attribute +** Solidified function: update_shadow ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_write_attribute, /* name */ +be_local_closure(class_Matter_Plugin_update_shadow, /* name */ be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(write_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: append_state_json -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_append_state_json, /* name */ - be_nested_proto( - 1, /* nstack */ + 2, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -46,13 +20,17 @@ be_local_closure(class_Matter_Plugin_append_state_json, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), }), - be_str_weak(append_state_json), + be_str_weak(update_shadow), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80060000, // 0000 RET 1 K0 + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x88040300, // 0001 GETMBR R1 R1 K0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 }) ) ); @@ -117,176 +95,6 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: timed_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_timed_request, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(timed_request), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_sensors -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_sensors), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - }), - be_str_weak(get_endpoint), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_virtual, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ui_conf_to_string -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(ui_conf_to_string), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x780E0006, // 0002 JMPF R3 #000A - 0x60100008, // 0003 GETGBL R4 G8 - 0x8C140302, // 0004 GETMET R5 R1 K2 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200003, // 0006 LDCONST R8 K3 - 0x7C140600, // 0007 CALL R5 3 - 0x7C100200, // 0008 CALL R4 1 - 0x70020000, // 0009 JMP #000B - 0x58100003, // 000A LDCONST R4 K3 - 0x80040800, // 000B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: ack_request ********************************************************************/ @@ -331,12 +139,64 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ /******************************************************************** -** Solidified function: get_cluster_list_sorted +** Solidified function: write_attribute ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ +be_local_closure(class_Matter_Plugin_write_attribute, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(write_attribute), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_invoke_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: append_state_json +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_append_state_json, /* name */ + be_nested_proto( + 1, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -344,137 +204,13 @@ be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(k2l), - /* K2 */ be_nested_str_weak(clusters), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(), }), - be_str_weak(get_cluster_list_sorted), + be_str_weak(append_state_json), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: contains_cluster -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), - }), - be_str_weak(contains_cluster), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(clusters), - /* K3 */ be_nested_str_weak(get_clusters), - /* K4 */ be_nested_str_weak(parse_configuration), - /* K5 */ be_nested_str_weak(node_label), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x8C100103, // 0002 GETMET R4 R0 K3 - 0x7C100200, // 0003 CALL R4 1 - 0x90020404, // 0004 SETMBR R0 K2 R4 - 0x8C100104, // 0005 GETMET R4 R0 K4 - 0x5C180600, // 0006 MOVE R6 R3 - 0x7C100400, // 0007 CALL R4 2 - 0x8C100706, // 0008 GETMET R4 R3 K6 - 0x58180007, // 0009 LDCONST R6 K7 - 0x581C0008, // 000A LDCONST R7 K8 - 0x7C100600, // 000B CALL R4 3 - 0x90020A04, // 000C SETMBR R0 K5 R4 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ui_string_to_conf -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(ARG_TYPE), - }), - be_str_weak(ui_string_to_conf), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x780A0004, // 0003 JMPF R2 #0009 - 0x78120003, // 0004 JMPF R4 #0009 - 0x5C180A00, // 0005 MOVE R6 R5 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C180200, // 0007 CALL R6 1 - 0x98040806, // 0008 SETIDX R1 R4 R6 - 0x80040200, // 0009 RET 1 R1 + ( &(const binstruction[ 1]) { /* code */ + 0x80060000, // 0000 RET 1 K0 }) ) ); @@ -545,25 +281,113 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ /******************************************************************** -** Solidified function: subscribe_event +** Solidified function: publish_event ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ +be_local_closure(class_Matter_Plugin_publish_event, /* name */ be_nested_proto( - 6, /* nstack */ + 17, /* nstack */ 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(subscribe_event), + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(EventDataIB), + /* K2 */ be_nested_str_weak(EventPathIB), + /* K3 */ be_nested_str_weak(endpoint), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(event), + /* K6 */ be_nested_str_weak(path), + /* K7 */ be_nested_str_weak(priority), + /* K8 */ be_nested_str_weak(event_number), + /* K9 */ be_nested_str_weak(device), + /* K10 */ be_nested_str_weak(events), + /* K11 */ be_nested_str_weak(get_next_event_no), + /* K12 */ be_nested_str_weak(epoch_timestamp), + /* K13 */ be_nested_str_weak(tasmota), + /* K14 */ be_nested_str_weak(rtc), + /* K15 */ be_nested_str_weak(utc), + /* K16 */ be_const_int(1700000000), + /* K17 */ be_nested_str_weak(data), + /* K18 */ be_const_int(2), + /* K19 */ be_nested_str_weak(CRIT_X20_X20), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(INFO_X20_X20), + /* K22 */ be_nested_str_weak(DEBUG_X20), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2504X_X20_X28_X255i_X29_X20_X2D_X20_X25s), + /* K25 */ be_nested_str_weak(MTR_X3A_X20Publishing_X20event_X20_X25s), + /* K26 */ be_nested_str_weak(queue_event), + }), + be_str_weak(publish_event), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 + ( &(const binstruction[62]) { /* code */ + 0xB8160000, // 0000 GETNGBL R5 K0 + 0x8C140B01, // 0001 GETMET R5 R5 K1 + 0x7C140200, // 0002 CALL R5 1 + 0xB81A0000, // 0003 GETNGBL R6 K0 + 0x8C180D02, // 0004 GETMET R6 R6 K2 + 0x7C180200, // 0005 CALL R6 1 + 0x881C0103, // 0006 GETMBR R7 R0 K3 + 0x901A0607, // 0007 SETMBR R6 K3 R7 + 0x901A0801, // 0008 SETMBR R6 K4 R1 + 0x901A0A02, // 0009 SETMBR R6 K5 R2 + 0x90160C06, // 000A SETMBR R5 K6 R6 + 0x90160E03, // 000B SETMBR R5 K7 R3 + 0x881C0109, // 000C GETMBR R7 R0 K9 + 0x881C0F0A, // 000D GETMBR R7 R7 K10 + 0x8C1C0F0B, // 000E GETMET R7 R7 K11 + 0x7C1C0200, // 000F CALL R7 1 + 0x90161007, // 0010 SETMBR R5 K8 R7 + 0xB81E1A00, // 0011 GETNGBL R7 K13 + 0x8C1C0F0E, // 0012 GETMET R7 R7 K14 + 0x5824000F, // 0013 LDCONST R9 K15 + 0x7C1C0400, // 0014 CALL R7 2 + 0x90161807, // 0015 SETMBR R5 K12 R7 + 0x881C0B0C, // 0016 GETMBR R7 R5 K12 + 0x141C0F10, // 0017 LT R7 R7 K16 + 0x781E0001, // 0018 JMPF R7 #001B + 0x4C1C0000, // 0019 LDNIL R7 + 0x90161807, // 001A SETMBR R5 K12 R7 + 0x90162204, // 001B SETMBR R5 K17 R4 + 0x1C1C0712, // 001C EQ R7 R3 K18 + 0x781E0001, // 001D JMPF R7 #0020 + 0x581C0013, // 001E LDCONST R7 K19 + 0x70020004, // 001F JMP #0025 + 0x1C1C0714, // 0020 EQ R7 R3 K20 + 0x781E0001, // 0021 JMPF R7 #0024 + 0x581C0015, // 0022 LDCONST R7 K21 + 0x70020000, // 0023 JMP #0025 + 0x581C0016, // 0024 LDCONST R7 K22 + 0xB8222E00, // 0025 GETNGBL R8 K23 + 0x60240018, // 0026 GETGBL R9 G24 + 0x58280018, // 0027 LDCONST R10 K24 + 0x5C2C0E00, // 0028 MOVE R11 R7 + 0x88300D03, // 0029 GETMBR R12 R6 K3 + 0x88340D04, // 002A GETMBR R13 R6 K4 + 0x88380D05, // 002B GETMBR R14 R6 K5 + 0x883C0B08, // 002C GETMBR R15 R5 K8 + 0x88400B11, // 002D GETMBR R16 R5 K17 + 0x7C240E00, // 002E CALL R9 7 + 0x58280012, // 002F LDCONST R10 K18 + 0x7C200400, // 0030 CALL R8 2 + 0xB8222E00, // 0031 GETNGBL R8 K23 + 0x60240018, // 0032 GETGBL R9 G24 + 0x58280019, // 0033 LDCONST R10 K25 + 0x5C2C0A00, // 0034 MOVE R11 R5 + 0x7C240400, // 0035 CALL R9 2 + 0x542A0003, // 0036 LDINT R10 4 + 0x7C200400, // 0037 CALL R8 2 + 0x88200109, // 0038 GETMBR R8 R0 K9 + 0x8820110A, // 0039 GETMBR R8 R8 K10 + 0x8C20111A, // 003A GETMET R8 R8 K26 + 0x5C280A00, // 003B MOVE R10 R5 + 0x7C200400, // 003C CALL R8 2 + 0x80000000, // 003D RET 0 }) ) ); @@ -571,10 +395,10 @@ be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ /******************************************************************** -** Solidified function: get_attribute_list +** Solidified function: set_name ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ +be_local_closure(class_Matter_Plugin_set_name, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -585,19 +409,393 @@ be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ &be_class_Matter_Plugin, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), + /* K0 */ be_nested_str_weak(node_label), + /* K1 */ be_nested_str_weak(attribute_updated), }), - be_str_weak(get_attribute_list), + be_str_weak(set_name), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ + ( &(const binstruction[ 9]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140012, // 0003 GETGBL R5 G18 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x54120038, // 0004 LDINT R4 57 + 0x54160004, // 0005 LDINT R5 5 + 0x7C080600, // 0006 CALL R2 3 + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040008, // 0000 GETGBL R1 G8 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_string_to_conf +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(ARG_TYPE), + }), + be_str_weak(ui_string_to_conf), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x780A0004, // 0003 JMPF R2 #0009 + 0x78120003, // 0004 JMPF R4 #0009 + 0x5C180A00, // 0005 MOVE R6 R5 + 0x5C1C0400, // 0006 MOVE R7 R2 + 0x7C180200, // 0007 CALL R6 1 + 0x98040806, // 0008 SETIDX R1 R4 R6 + 0x80040200, // 0009 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: timed_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_timed_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(timed_request), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(clusters), + /* K3 */ be_nested_str_weak(get_clusters), + /* K4 */ be_nested_str_weak(parse_configuration), + /* K5 */ be_nested_str_weak(node_label), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x8C100103, // 0002 GETMET R4 R0 K3 + 0x7C100200, // 0003 CALL R4 1 + 0x90020404, // 0004 SETMBR R0 K2 R4 + 0x8C100104, // 0005 GETMET R4 R0 K4 + 0x5C180600, // 0006 MOVE R6 R3 + 0x7C100400, // 0007 CALL R4 2 + 0x8C100706, // 0008 GETMET R4 R3 K6 + 0x58180007, // 0009 LDCONST R6 K7 + 0x581C0008, // 000A LDCONST R7 K8 + 0x7C100600, // 000B CALL R4 3 + 0x90020A04, // 000C SETMBR R0 K5 R4 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_local_device +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_is_local_device, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + }), + be_str_weak(is_local_device), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x50040001, // 0002 LDBOOL R1 0 1 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: consolidate_update_commands +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), + }), + be_str_weak(consolidate_update_commands), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow_lazy +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(update_shadow_lazy), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88080500, // 0002 GETMBR R2 R2 K0 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060004, // 0004 JMPF R1 #000A + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x7C040200, // 0006 CALL R1 1 + 0x88040101, // 0007 GETMBR R1 R0 K1 + 0x88040300, // 0008 GETMBR R1 R1 K0 + 0x90020001, // 0009 SETMBR R0 K0 R1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_cluster_list_sorted +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(k2l), + /* K2 */ be_nested_str_weak(clusters), + }), + be_str_weak(get_cluster_list_sorted), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_conf_to_string +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Plugin), + /* K1 */ be_nested_str_weak(ARG), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(ui_conf_to_string), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x780E0006, // 0002 JMPF R3 #000A + 0x60100008, // 0003 GETGBL R4 G8 + 0x8C140302, // 0004 GETMET R5 R1 K2 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200003, // 0006 LDCONST R8 K3 + 0x7C140600, // 0007 CALL R5 3 + 0x7C100200, // 0008 CALL R4 1 + 0x70020000, // 0009 JMP #000B + 0x58100003, // 000A LDCONST R4 K3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(attribute_updated), + /* K2 */ be_nested_str_weak(endpoint), + }), + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_update_virtual, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 }) ) ); @@ -650,10 +848,35 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ /******************************************************************** -** Solidified function: consolidate_update_commands +** Solidified function: parse_configuration ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ +be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_name +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_name, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -664,9 +887,9 @@ be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ &be_class_Matter_Plugin, 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), + /* K0 */ be_nested_str_weak(node_label), }), - be_str_weak(consolidate_update_commands), + be_str_weak(get_name), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -678,25 +901,27 @@ be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ /******************************************************************** -** Solidified function: subscribe_attribute +** Solidified function: get_endpoint ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ +be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ be_nested_proto( - 6, /* nstack */ - 5, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(subscribe_attribute), + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + }), + be_str_weak(get_endpoint), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -755,54 +980,25 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ /******************************************************************** -** Solidified function: get_clusters +** Solidified function: subscribe_event ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_clusters, /* name */ +be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(CLUSTERS), - }), - be_str_weak(get_clusters), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, 0, /* has constants */ NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), + be_str_weak(subscribe_event), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040008, // 0000 GETGBL R1 G8 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 }) ) ); @@ -810,27 +1006,84 @@ be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ /******************************************************************** -** Solidified function: get_name +** Solidified function: read_event ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_get_name, /* name */ +be_local_closure(class_Matter_Plugin_read_event, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(read_event), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_sensors +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ be_nested_proto( 2, /* nstack */ - 1, /* argc */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(parse_sensors), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_attribute_list +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), }), - be_str_weak(get_name), + be_str_weak(get_attribute_list), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140012, // 0003 GETGBL R5 G18 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -918,204 +1171,10 @@ be_local_closure(class_Matter_Plugin_publish_command, /* name */ /******************************************************************** -** Solidified function: set_name +** Solidified function: get_clusters ********************************************************************/ extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_set_name, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), - /* K1 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(set_name), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0003, // 0002 JMPF R2 #0007 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x54120038, // 0004 LDINT R4 57 - 0x54160004, // 0005 LDINT R5 5 - 0x7C080600, // 0006 CALL R2 3 - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow_lazy -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(update_shadow_lazy), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x88080500, // 0002 GETMBR R2 R2 K0 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060004, // 0004 JMPF R1 #000A - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x7C040200, // 0006 CALL R1 1 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88040300, // 0008 GETMBR R1 R1 K0 - 0x90020001, // 0009 SETMBR R0 K0 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_event -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_read_event, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(read_event), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_update_shadow, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x88040300, // 0001 GETMBR R1 R1 K0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_invoke_request, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attribute_updated -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(attribute_updated), - /* K2 */ be_nested_str_weak(endpoint), - }), - be_str_weak(attribute_updated), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_local_device -********************************************************************/ -extern const bclass be_class_Matter_Plugin; -be_local_closure(class_Matter_Plugin_is_local_device, /* name */ +be_local_closure(class_Matter_Plugin_get_clusters, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1126,16 +1185,45 @@ be_local_closure(class_Matter_Plugin_is_local_device, /* name */ &be_class_Matter_Plugin, 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), + /* K0 */ be_nested_str_weak(CLUSTERS), }), - be_str_weak(is_local_device), + be_str_weak(get_clusters), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains_cluster +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), + }), + be_str_weak(contains_cluster), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x50040001, // 0002 LDBOOL R1 0 1 - 0x50040200, // 0003 LDBOOL R1 1 0 - 0x80040200, // 0004 RET 1 R1 + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -1350,57 +1438,89 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: subscribe_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin; +be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(subscribe_attribute), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin ********************************************************************/ be_local_class(Matter_Plugin, 6, NULL, - be_nested_map(51, + be_nested_map(52, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(258, -1), be_const_int(5) }, - { be_const_key_int(49, 2), be_const_int(4) }, - { be_const_key_int(514, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, - { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) }, - { be_const_key_weak(read_attribute, 9), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, - { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, - { be_const_key_weak(clusters, -1), be_const_var(3) }, - { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, - { be_const_key_weak(_parse_update_virtual, 2), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, + { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, + { be_const_key_weak(state_json, 38), be_const_closure(class_Matter_Plugin_state_json_closure) }, + { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, + { be_const_key_weak(device, -1), be_const_var(1) }, { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, - { be_const_key_weak(get_endpoint, 19), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak() }, - { be_const_key_weak(UPDATE_COMMANDS, 47), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, + { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(BRIDGE, -1), be_const_bool(0) }, + { be_const_key_weak(get_clusters, -1), be_const_closure(class_Matter_Plugin_get_clusters_closure) }, + { be_const_key_weak(CLUSTERS, 51), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(0, ( (struct bvalue*) &(const bvalue[]) { })) ) } )) }, - { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, - { be_const_key_weak(every_250ms, 34), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, - { be_const_key_weak(device, -1), be_const_var(1) }, - { be_const_key_weak(consolidate_update_commands, 48), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, - { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, + { be_const_key_weak(every_250ms, 0), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, + { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, { be_const_key_weak(get_attribute_list, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_closure) }, - { be_const_key_weak(write_attribute, 10), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, - { be_const_key_weak(contains_attribute, -1), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, - { be_const_key_weak(read_event, 38), be_const_closure(class_Matter_Plugin_read_event_closure) }, - { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, - { be_const_key_weak(contains_cluster, 23), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, - { be_const_key_weak(get_clusters, -1), be_const_closure(class_Matter_Plugin_get_clusters_closure) }, + { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) }, - { be_const_key_weak(get_name, 30), be_const_closure(class_Matter_Plugin_get_name_closure) }, - { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, - { be_const_key_weak(TYPE, 6), be_nested_str_weak() }, - { be_const_key_weak(tick, -1), be_const_var(4) }, - { be_const_key_weak(CLUSTER_REVISIONS, 24), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, + { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, + { be_const_key_weak(is_local_device, 34), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, + { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(29, -1), be_const_nil() }, + })) ) } )) }, + { be_const_key_weak(clusters, -1), be_const_var(3) }, + { be_const_key_weak(VIRTUAL, 5), be_const_bool(0) }, + { be_const_key_weak(CLUSTER_REVISIONS, 23), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(25, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, -1), be_const_int(5) }, @@ -1429,44 +1549,39 @@ be_local_class(Matter_Plugin, { be_const_key_int(6, -1), be_const_int(5) }, { be_const_key_int(1024, -1), be_const_int(3) }, })) ) } )) }, - { be_const_key_weak(update_next, -1), be_const_var(0) }, - { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_nil() }, - })) ) } )) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, - { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, - { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, + { be_const_key_weak(consolidate_update_commands, 6), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, { be_const_key_weak(ui_conf_to_string, -1), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, - { be_const_key_weak(parse_sensors, 14), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, - { be_const_key_weak(CLUSTERS, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, + { be_const_key_weak(_parse_update_virtual, 36), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, + { be_const_key_weak(update_next, 17), be_const_var(0) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, + { be_const_key_weak(invoke_request, 27), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, + { be_const_key_weak(node_label, -1), be_const_var(5) }, + { be_const_key_weak(update_shadow, 30), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, + { be_const_key_weak(endpoint, 2), be_const_var(2) }, + { be_const_key_weak(get_name, -1), be_const_closure(class_Matter_Plugin_get_name_closure) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, + { be_const_key_weak(get_endpoint, -1), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, + { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), + { be_const_key_int(258, -1), be_const_int(5) }, + { be_const_key_int(49, 2), be_const_int(4) }, + { be_const_key_int(514, -1), be_const_int(2) }, })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) }, - { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak() }, - { be_const_key_weak(node_label, 7), be_const_var(5) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, - { be_const_key_weak(get_cluster_list_sorted, 39), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, - { be_const_key_weak(endpoint, -1), be_const_var(2) }, - { be_const_key_weak(BRIDGE, 0), be_const_bool(0) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak() }, + { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak() }, + { be_const_key_weak(read_event, -1), be_const_closure(class_Matter_Plugin_read_event_closure) }, + { be_const_key_weak(publish_event, 21), be_const_closure(class_Matter_Plugin_publish_event_closure) }, + { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, + { be_const_key_weak(DISPLAY_NAME, 14), be_nested_str_weak() }, + { be_const_key_weak(ui_string_to_conf, 13), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, + { be_const_key_weak(contains_attribute, 9), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, + { be_const_key_weak(tick, -1), be_const_var(4) }, + { be_const_key_weak(contains_cluster, -1), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, + { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, })), be_str_weak(Matter_Plugin) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index aebdbd01e..4d0d8cb27 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -20,7 +20,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Root, 1, /* has constants */ - ( &(const bvalue[95]) { /* constants */ + ( &(const bvalue[96]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -108,18 +108,19 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ /* K84 */ be_nested_str_weak(Status_X202), /* K85 */ be_nested_str_weak(StatusFWR), /* K86 */ be_nested_str_weak(Hardware), - /* K87 */ be_nested_str_weak(Version), - /* K88 */ be_nested_str_weak(_X28), - /* K89 */ be_nested_str_weak(locale), - /* K90 */ be_nested_str_weak(create_TLV), - /* K91 */ be_nested_str_weak(get_active_endpoints), - /* K92 */ be_nested_str_weak(disable_bridge_mode), - /* K93 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K94 */ be_nested_str_weak(read_attribute), + /* K87 */ be_nested_str_weak(version), + /* K88 */ be_nested_str_weak(Version), + /* K89 */ be_nested_str_weak(_X28), + /* K90 */ be_nested_str_weak(locale), + /* K91 */ be_nested_str_weak(create_TLV), + /* K92 */ be_nested_str_weak(get_active_endpoints), + /* K93 */ be_nested_str_weak(disable_bridge_mode), + /* K94 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K95 */ be_nested_str_weak(read_attribute), }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[924]) { /* code */ + ( &(const binstruction[926]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -176,11 +177,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x502C0000, // 0035 LDBOOL R11 0 0 0x7C200600, // 0036 CALL R8 3 0x80041000, // 0037 RET 1 R8 - 0x70020359, // 0038 JMP #0393 + 0x7002035B, // 0038 JMP #0395 0x54220031, // 0039 LDINT R8 50 0x1C200C08, // 003A EQ R8 R6 R8 0x78220000, // 003B JMPF R8 #003D - 0x70020355, // 003C JMP #0393 + 0x70020357, // 003C JMP #0395 0x54220032, // 003D LDINT R8 51 0x1C200C08, // 003E EQ R8 R6 R8 0x782200DC, // 003F JMPF R8 #011D @@ -404,11 +405,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x502C0000, // 0119 LDBOOL R11 0 0 0x7C200600, // 011A CALL R8 3 0x80041000, // 011B RET 1 R8 - 0x70020275, // 011C JMP #0393 + 0x70020277, // 011C JMP #0395 0x54220033, // 011D LDINT R8 52 0x1C200C08, // 011E EQ R8 R6 R8 0x78220000, // 011F JMPF R8 #0121 - 0x70020271, // 0120 JMP #0393 + 0x70020273, // 0120 JMP #0395 0x54220037, // 0121 LDINT R8 56 0x1C200C08, // 0122 EQ R8 R6 R8 0x7822002B, // 0123 JMPF R8 #0150 @@ -455,7 +456,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x5C301000, // 014C MOVE R12 R8 0x7C240600, // 014D CALL R9 3 0x80041200, // 014E RET 1 R9 - 0x70020242, // 014F JMP #0393 + 0x70020244, // 014F JMP #0395 0x5422003D, // 0150 LDINT R8 62 0x1C200C08, // 0151 EQ R8 R6 R8 0x782200B5, // 0152 JMPF R8 #0209 @@ -640,7 +641,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x5C301000, // 0205 MOVE R12 R8 0x7C240600, // 0206 CALL R9 3 0x80041200, // 0207 RET 1 R9 - 0x70020189, // 0208 JMP #0393 + 0x7002018B, // 0208 JMP #0395 0x5422003B, // 0209 LDINT R8 60 0x1C200C08, // 020A EQ R8 R6 R8 0x78220030, // 020B JMPF R8 #023D @@ -692,10 +693,10 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x7C300200, // 0239 CALL R12 1 0x7C240600, // 023A CALL R9 3 0x80041200, // 023B RET 1 R9 - 0x70020155, // 023C JMP #0393 + 0x70020157, // 023C JMP #0395 0x54220027, // 023D LDINT R8 40 0x1C200C08, // 023E EQ R8 R6 R8 - 0x782200BA, // 023F JMPF R8 #02FB + 0x782200BC, // 023F JMPF R8 #02FD 0x8C200133, // 0240 GETMET R8 R0 K51 0x5C280400, // 0241 MOVE R10 R2 0x7C200400, // 0242 CALL R8 2 @@ -706,7 +707,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x582C0009, // 0247 LDCONST R11 K9 0x7C200600, // 0248 CALL R8 3 0x80041000, // 0249 RET 1 R8 - 0x700200AE, // 024A JMP #02FA + 0x700200B0, // 024A JMP #02FC 0x1C200F09, // 024B EQ R8 R7 K9 0x78220005, // 024C JMPF R8 #0253 0x8C200706, // 024D GETMET R8 R3 K6 @@ -714,7 +715,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x582C004E, // 024F LDCONST R11 K78 0x7C200600, // 0250 CALL R8 3 0x80041000, // 0251 RET 1 R8 - 0x700200A6, // 0252 JMP #02FA + 0x700200A8, // 0252 JMP #02FC 0x1C200F0D, // 0253 EQ R8 R7 K13 0x78220006, // 0254 JMPF R8 #025C 0x8C200706, // 0255 GETMET R8 R3 K6 @@ -723,7 +724,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x882C174F, // 0258 GETMBR R11 R11 K79 0x7C200600, // 0259 CALL R8 3 0x80041000, // 025A RET 1 R8 - 0x7002009D, // 025B JMP #02FA + 0x7002009F, // 025B JMP #02FC 0x1C200F0F, // 025C EQ R8 R7 K15 0x7822000A, // 025D JMPF R8 #0269 0x8C200706, // 025E GETMET R8 R3 K6 @@ -736,7 +737,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x942C1750, // 0265 GETIDX R11 R11 K80 0x7C200600, // 0266 CALL R8 3 0x80041000, // 0267 RET 1 R8 - 0x70020090, // 0268 JMP #02FA + 0x70020092, // 0268 JMP #02FC 0x54220003, // 0269 LDINT R8 4 0x1C200E08, // 026A EQ R8 R7 R8 0x78220005, // 026B JMPF R8 #0272 @@ -745,7 +746,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x542E7FFF, // 026E LDINT R11 32768 0x7C200600, // 026F CALL R8 3 0x80041000, // 0270 RET 1 R8 - 0x70020087, // 0271 JMP #02FA + 0x70020089, // 0271 JMP #02FC 0x54220004, // 0272 LDINT R8 5 0x1C200E08, // 0273 EQ R8 R7 R8 0x7822000A, // 0274 JMPF R8 #0280 @@ -759,7 +760,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x942C1752, // 027C GETIDX R11 R11 K82 0x7C200600, // 027D CALL R8 3 0x80041000, // 027E RET 1 R8 - 0x70020079, // 027F JMP #02FA + 0x7002007B, // 027F JMP #02FC 0x54220005, // 0280 LDINT R8 6 0x1C200E08, // 0281 EQ R8 R7 R8 0x78220005, // 0282 JMPF R8 #0289 @@ -768,7 +769,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x582C0053, // 0285 LDCONST R11 K83 0x7C200600, // 0286 CALL R8 3 0x80041000, // 0287 RET 1 R8 - 0x70020070, // 0288 JMP #02FA + 0x70020072, // 0288 JMP #02FC 0x54220006, // 0289 LDINT R8 7 0x1C200E08, // 028A EQ R8 R7 R8 0x78220005, // 028B JMPF R8 #0292 @@ -777,7 +778,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x582C0005, // 028E LDCONST R11 K5 0x7C200600, // 028F CALL R8 3 0x80041000, // 0290 RET 1 R8 - 0x70020067, // 0291 JMP #02FA + 0x70020069, // 0291 JMP #02FC 0x54220007, // 0292 LDINT R8 8 0x1C200E08, // 0293 EQ R8 R7 R8 0x7822000B, // 0294 JMPF R8 #02A1 @@ -792,258 +793,260 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x942C1756, // 029D GETIDX R11 R11 K86 0x7C200600, // 029E CALL R8 3 0x80041000, // 029F RET 1 R8 - 0x70020058, // 02A0 JMP #02FA + 0x7002005A, // 02A0 JMP #02FC 0x54220008, // 02A1 LDINT R8 9 0x1C200E08, // 02A2 EQ R8 R7 R8 - 0x78220005, // 02A3 JMPF R8 #02AA + 0x78220007, // 02A3 JMPF R8 #02AC 0x8C200706, // 02A4 GETMET R8 R3 K6 - 0x88280B0C, // 02A5 GETMBR R10 R5 K12 - 0x582C0009, // 02A6 LDCONST R11 K9 - 0x7C200600, // 02A7 CALL R8 3 - 0x80041000, // 02A8 RET 1 R8 - 0x7002004F, // 02A9 JMP #02FA - 0x54220009, // 02AA LDINT R8 10 - 0x1C200E08, // 02AB EQ R8 R7 R8 - 0x78220015, // 02AC JMPF R8 #02C3 - 0xB8222400, // 02AD GETNGBL R8 K18 - 0x8C201126, // 02AE GETMET R8 R8 K38 - 0x58280054, // 02AF LDCONST R10 K84 - 0x502C0200, // 02B0 LDBOOL R11 1 0 - 0x7C200600, // 02B1 CALL R8 3 - 0x94201155, // 02B2 GETIDX R8 R8 K85 - 0x94201157, // 02B3 GETIDX R8 R8 K87 - 0x8C24091B, // 02B4 GETMET R9 R4 K27 - 0x5C2C1000, // 02B5 MOVE R11 R8 - 0x58300058, // 02B6 LDCONST R12 K88 - 0x7C240600, // 02B7 CALL R9 3 - 0x24281305, // 02B8 GT R10 R9 K5 - 0x782A0002, // 02B9 JMPF R10 #02BD - 0x04281309, // 02BA SUB R10 R9 K9 - 0x402A0A0A, // 02BB CONNECT R10 K5 R10 - 0x9420100A, // 02BC GETIDX R8 R8 R10 - 0x8C280706, // 02BD GETMET R10 R3 K6 - 0x88300B16, // 02BE GETMBR R12 R5 K22 - 0x5C341000, // 02BF MOVE R13 R8 - 0x7C280600, // 02C0 CALL R10 3 - 0x80041400, // 02C1 RET 1 R10 - 0x70020036, // 02C2 JMP #02FA - 0x5422000E, // 02C3 LDINT R8 15 - 0x1C200E08, // 02C4 EQ R8 R7 R8 - 0x7822000B, // 02C5 JMPF R8 #02D2 - 0x8C200706, // 02C6 GETMET R8 R3 K6 - 0x88280B16, // 02C7 GETMBR R10 R5 K22 - 0xB82E2400, // 02C8 GETNGBL R11 K18 - 0x8C2C1725, // 02C9 GETMET R11 R11 K37 - 0x7C2C0200, // 02CA CALL R11 1 - 0x8C2C171B, // 02CB GETMET R11 R11 K27 - 0x5834001C, // 02CC LDCONST R13 K28 - 0x5838001D, // 02CD LDCONST R14 K29 - 0x7C2C0600, // 02CE CALL R11 3 - 0x7C200600, // 02CF CALL R8 3 - 0x80041000, // 02D0 RET 1 R8 - 0x70020027, // 02D1 JMP #02FA - 0x54220010, // 02D2 LDINT R8 17 - 0x1C200E08, // 02D3 EQ R8 R7 R8 - 0x78220005, // 02D4 JMPF R8 #02DB - 0x8C200706, // 02D5 GETMET R8 R3 K6 - 0x88280B10, // 02D6 GETMBR R10 R5 K16 - 0x582C0009, // 02D7 LDCONST R11 K9 - 0x7C200600, // 02D8 CALL R8 3 - 0x80041000, // 02D9 RET 1 R8 - 0x7002001E, // 02DA JMP #02FA - 0x54220011, // 02DB LDINT R8 18 - 0x1C200E08, // 02DC EQ R8 R7 R8 - 0x7822000B, // 02DD JMPF R8 #02EA - 0x8C200706, // 02DE GETMET R8 R3 K6 - 0x88280B16, // 02DF GETMBR R10 R5 K22 - 0xB82E2400, // 02E0 GETNGBL R11 K18 - 0x8C2C1725, // 02E1 GETMET R11 R11 K37 - 0x7C2C0200, // 02E2 CALL R11 1 - 0x8C2C171B, // 02E3 GETMET R11 R11 K27 - 0x5834001C, // 02E4 LDCONST R13 K28 - 0x5838001D, // 02E5 LDCONST R14 K29 - 0x7C2C0600, // 02E6 CALL R11 3 - 0x7C200600, // 02E7 CALL R8 3 - 0x80041000, // 02E8 RET 1 R8 - 0x7002000F, // 02E9 JMP #02FA - 0x54220012, // 02EA LDINT R8 19 - 0x1C200E08, // 02EB EQ R8 R7 R8 - 0x7822000C, // 02EC JMPF R8 #02FA - 0x8C200B0A, // 02ED GETMET R8 R5 K10 - 0x7C200200, // 02EE CALL R8 1 - 0x8C24110B, // 02EF GETMET R9 R8 K11 - 0x582C0005, // 02F0 LDCONST R11 K5 - 0x88300B0C, // 02F1 GETMBR R12 R5 K12 - 0x5834000F, // 02F2 LDCONST R13 K15 - 0x7C240800, // 02F3 CALL R9 4 - 0x8C24110B, // 02F4 GETMET R9 R8 K11 - 0x582C0009, // 02F5 LDCONST R11 K9 - 0x88300B0C, // 02F6 GETMBR R12 R5 K12 - 0x5834000F, // 02F7 LDCONST R13 K15 - 0x7C240800, // 02F8 CALL R9 4 - 0x80041000, // 02F9 RET 1 R8 - 0x70020097, // 02FA JMP #0393 - 0x5422003E, // 02FB LDINT R8 63 - 0x1C200C08, // 02FC EQ R8 R6 R8 - 0x78220000, // 02FD JMPF R8 #02FF - 0x70020093, // 02FE JMP #0393 - 0x54220029, // 02FF LDINT R8 42 - 0x1C200C08, // 0300 EQ R8 R6 R8 - 0x7822001D, // 0301 JMPF R8 #0320 - 0x1C200F05, // 0302 EQ R8 R7 K5 - 0x78220003, // 0303 JMPF R8 #0308 - 0x8C200B11, // 0304 GETMET R8 R5 K17 - 0x7C200200, // 0305 CALL R8 1 - 0x80041000, // 0306 RET 1 R8 - 0x70020016, // 0307 JMP #031F - 0x1C200F09, // 0308 EQ R8 R7 K9 - 0x78220005, // 0309 JMPF R8 #0310 - 0x8C200706, // 030A GETMET R8 R3 K6 - 0x88280B10, // 030B GETMBR R10 R5 K16 - 0x582C0005, // 030C LDCONST R11 K5 - 0x7C200600, // 030D CALL R8 3 - 0x80041000, // 030E RET 1 R8 - 0x7002000E, // 030F JMP #031F - 0x1C200F0D, // 0310 EQ R8 R7 K13 - 0x78220005, // 0311 JMPF R8 #0318 - 0x8C200706, // 0312 GETMET R8 R3 K6 - 0x88280B0E, // 0313 GETMBR R10 R5 K14 - 0x582C0009, // 0314 LDCONST R11 K9 - 0x7C200600, // 0315 CALL R8 3 - 0x80041000, // 0316 RET 1 R8 - 0x70020006, // 0317 JMP #031F - 0x1C200F0F, // 0318 EQ R8 R7 K15 - 0x78220004, // 0319 JMPF R8 #031F - 0x8C200706, // 031A GETMET R8 R3 K6 - 0x88280B18, // 031B GETMBR R10 R5 K24 - 0x4C2C0000, // 031C LDNIL R11 - 0x7C200600, // 031D CALL R8 3 - 0x80041000, // 031E RET 1 R8 - 0x70020072, // 031F JMP #0393 - 0x5422002A, // 0320 LDINT R8 43 - 0x1C200C08, // 0321 EQ R8 R6 R8 - 0x78220016, // 0322 JMPF R8 #033A - 0x1C200F05, // 0323 EQ R8 R7 K5 - 0x78220007, // 0324 JMPF R8 #032D - 0x8C200706, // 0325 GETMET R8 R3 K6 - 0x88280B16, // 0326 GETMBR R10 R5 K22 - 0xB82E2400, // 0327 GETNGBL R11 K18 - 0x8C2C1759, // 0328 GETMET R11 R11 K89 - 0x7C2C0200, // 0329 CALL R11 1 - 0x7C200600, // 032A CALL R8 3 - 0x80041000, // 032B RET 1 R8 - 0x7002000B, // 032C JMP #0339 - 0x1C200F09, // 032D EQ R8 R7 K9 - 0x78220009, // 032E JMPF R8 #0339 - 0x8C200B11, // 032F GETMET R8 R5 K17 - 0x7C200200, // 0330 CALL R8 1 - 0x8C24110B, // 0331 GETMET R9 R8 K11 - 0x4C2C0000, // 0332 LDNIL R11 - 0x88300B16, // 0333 GETMBR R12 R5 K22 - 0xB8362400, // 0334 GETNGBL R13 K18 - 0x8C341B59, // 0335 GETMET R13 R13 K89 - 0x7C340200, // 0336 CALL R13 1 - 0x7C240800, // 0337 CALL R9 4 - 0x80041000, // 0338 RET 1 R8 - 0x70020058, // 0339 JMP #0393 - 0x5422002B, // 033A LDINT R8 44 - 0x1C200C08, // 033B EQ R8 R6 R8 - 0x7822001C, // 033C JMPF R8 #035A - 0x1C200F05, // 033D EQ R8 R7 K5 - 0x78220005, // 033E JMPF R8 #0345 - 0x8C200706, // 033F GETMET R8 R3 K6 - 0x88280B0E, // 0340 GETMBR R10 R5 K14 - 0x582C0009, // 0341 LDCONST R11 K9 - 0x7C200600, // 0342 CALL R8 3 - 0x80041000, // 0343 RET 1 R8 - 0x70020013, // 0344 JMP #0359 - 0x1C200F09, // 0345 EQ R8 R7 K9 - 0x78220005, // 0346 JMPF R8 #034D - 0x8C200706, // 0347 GETMET R8 R3 K6 - 0x88280B0E, // 0348 GETMBR R10 R5 K14 - 0x542E0003, // 0349 LDINT R11 4 - 0x7C200600, // 034A CALL R8 3 - 0x80041000, // 034B RET 1 R8 - 0x7002000B, // 034C JMP #0359 - 0x1C200F0D, // 034D EQ R8 R7 K13 - 0x78220009, // 034E JMPF R8 #0359 - 0x8C200B11, // 034F GETMET R8 R5 K17 - 0x7C200200, // 0350 CALL R8 1 - 0x8C24110B, // 0351 GETMET R9 R8 K11 - 0x4C2C0000, // 0352 LDNIL R11 - 0x8C300B5A, // 0353 GETMET R12 R5 K90 - 0x88380B0E, // 0354 GETMBR R14 R5 K14 - 0x543E0003, // 0355 LDINT R15 4 - 0x7C300600, // 0356 CALL R12 3 - 0x7C240600, // 0357 CALL R9 3 - 0x80041000, // 0358 RET 1 R8 - 0x70020038, // 0359 JMP #0393 - 0x54220030, // 035A LDINT R8 49 - 0x1C200C08, // 035B EQ R8 R6 R8 - 0x78220007, // 035C JMPF R8 #0365 - 0x1C200F0F, // 035D EQ R8 R7 K15 - 0x78220004, // 035E JMPF R8 #0364 - 0x8C200706, // 035F GETMET R8 R3 K6 - 0x88280B0E, // 0360 GETMBR R10 R5 K14 - 0x542E001D, // 0361 LDINT R11 30 - 0x7C200600, // 0362 CALL R8 3 - 0x80041000, // 0363 RET 1 R8 - 0x7002002D, // 0364 JMP #0393 - 0x5422001C, // 0365 LDINT R8 29 - 0x1C200C08, // 0366 EQ R8 R6 R8 - 0x7822002A, // 0367 JMPF R8 #0393 - 0x1C200F0D, // 0368 EQ R8 R7 K13 - 0x78220008, // 0369 JMPF R8 #0373 - 0x8C200B11, // 036A GETMET R8 R5 K17 - 0x7C200200, // 036B CALL R8 1 - 0x8C24110B, // 036C GETMET R9 R8 K11 - 0x4C2C0000, // 036D LDNIL R11 - 0x88300B0C, // 036E GETMBR R12 R5 K12 - 0x5436001E, // 036F LDINT R13 31 - 0x7C240800, // 0370 CALL R9 4 - 0x80041000, // 0371 RET 1 R8 - 0x7002001F, // 0372 JMP #0393 - 0x1C200F0F, // 0373 EQ R8 R7 K15 - 0x7822001D, // 0374 JMPF R8 #0393 - 0x8C200B11, // 0375 GETMET R8 R5 K17 - 0x7C200200, // 0376 CALL R8 1 - 0x88240136, // 0377 GETMBR R9 R0 K54 - 0x8C24135B, // 0378 GETMET R9 R9 K91 - 0x502C0200, // 0379 LDBOOL R11 1 0 - 0x7C240400, // 037A CALL R9 2 - 0x88280136, // 037B GETMBR R10 R0 K54 - 0x8828155C, // 037C GETMBR R10 R10 K92 - 0x602C0010, // 037D GETGBL R11 G16 - 0x5C301200, // 037E MOVE R12 R9 - 0x7C2C0200, // 037F CALL R11 1 - 0xA802000D, // 0380 EXBLK 0 #038F - 0x5C301600, // 0381 MOVE R12 R11 - 0x7C300000, // 0382 CALL R12 0 - 0x5C341400, // 0383 MOVE R13 R10 - 0x78360003, // 0384 JMPF R13 #0389 - 0xB8360200, // 0385 GETNGBL R13 K1 - 0x88341B5D, // 0386 GETMBR R13 R13 K93 - 0x2034180D, // 0387 NE R13 R12 R13 - 0x78360004, // 0388 JMPF R13 #038E - 0x8C34110B, // 0389 GETMET R13 R8 K11 - 0x4C3C0000, // 038A LDNIL R15 - 0x88400B0C, // 038B GETMBR R16 R5 K12 - 0x5C441800, // 038C MOVE R17 R12 - 0x7C340800, // 038D CALL R13 4 - 0x7001FFF1, // 038E JMP #0381 - 0x582C003E, // 038F LDCONST R11 K62 - 0xAC2C0200, // 0390 CATCH R11 1 0 - 0xB0080000, // 0391 RAISE 2 R0 R0 - 0x80041000, // 0392 RET 1 R8 - 0x60200003, // 0393 GETGBL R8 G3 - 0x5C240000, // 0394 MOVE R9 R0 - 0x7C200200, // 0395 CALL R8 1 - 0x8C20115E, // 0396 GETMET R8 R8 K94 - 0x5C280200, // 0397 MOVE R10 R1 - 0x5C2C0400, // 0398 MOVE R11 R2 - 0x5C300600, // 0399 MOVE R12 R3 - 0x7C200800, // 039A CALL R8 4 - 0x80041000, // 039B RET 1 R8 + 0x88280B2A, // 02A5 GETMBR R10 R5 K42 + 0xB82E2400, // 02A6 GETNGBL R11 K18 + 0x8C2C1757, // 02A7 GETMET R11 R11 K87 + 0x7C2C0200, // 02A8 CALL R11 1 + 0x7C200600, // 02A9 CALL R8 3 + 0x80041000, // 02AA RET 1 R8 + 0x7002004F, // 02AB JMP #02FC + 0x54220009, // 02AC LDINT R8 10 + 0x1C200E08, // 02AD EQ R8 R7 R8 + 0x78220015, // 02AE JMPF R8 #02C5 + 0xB8222400, // 02AF GETNGBL R8 K18 + 0x8C201126, // 02B0 GETMET R8 R8 K38 + 0x58280054, // 02B1 LDCONST R10 K84 + 0x502C0200, // 02B2 LDBOOL R11 1 0 + 0x7C200600, // 02B3 CALL R8 3 + 0x94201155, // 02B4 GETIDX R8 R8 K85 + 0x94201158, // 02B5 GETIDX R8 R8 K88 + 0x8C24091B, // 02B6 GETMET R9 R4 K27 + 0x5C2C1000, // 02B7 MOVE R11 R8 + 0x58300059, // 02B8 LDCONST R12 K89 + 0x7C240600, // 02B9 CALL R9 3 + 0x24281305, // 02BA GT R10 R9 K5 + 0x782A0002, // 02BB JMPF R10 #02BF + 0x04281309, // 02BC SUB R10 R9 K9 + 0x402A0A0A, // 02BD CONNECT R10 K5 R10 + 0x9420100A, // 02BE GETIDX R8 R8 R10 + 0x8C280706, // 02BF GETMET R10 R3 K6 + 0x88300B16, // 02C0 GETMBR R12 R5 K22 + 0x5C341000, // 02C1 MOVE R13 R8 + 0x7C280600, // 02C2 CALL R10 3 + 0x80041400, // 02C3 RET 1 R10 + 0x70020036, // 02C4 JMP #02FC + 0x5422000E, // 02C5 LDINT R8 15 + 0x1C200E08, // 02C6 EQ R8 R7 R8 + 0x7822000B, // 02C7 JMPF R8 #02D4 + 0x8C200706, // 02C8 GETMET R8 R3 K6 + 0x88280B16, // 02C9 GETMBR R10 R5 K22 + 0xB82E2400, // 02CA GETNGBL R11 K18 + 0x8C2C1725, // 02CB GETMET R11 R11 K37 + 0x7C2C0200, // 02CC CALL R11 1 + 0x8C2C171B, // 02CD GETMET R11 R11 K27 + 0x5834001C, // 02CE LDCONST R13 K28 + 0x5838001D, // 02CF LDCONST R14 K29 + 0x7C2C0600, // 02D0 CALL R11 3 + 0x7C200600, // 02D1 CALL R8 3 + 0x80041000, // 02D2 RET 1 R8 + 0x70020027, // 02D3 JMP #02FC + 0x54220010, // 02D4 LDINT R8 17 + 0x1C200E08, // 02D5 EQ R8 R7 R8 + 0x78220005, // 02D6 JMPF R8 #02DD + 0x8C200706, // 02D7 GETMET R8 R3 K6 + 0x88280B10, // 02D8 GETMBR R10 R5 K16 + 0x582C0009, // 02D9 LDCONST R11 K9 + 0x7C200600, // 02DA CALL R8 3 + 0x80041000, // 02DB RET 1 R8 + 0x7002001E, // 02DC JMP #02FC + 0x54220011, // 02DD LDINT R8 18 + 0x1C200E08, // 02DE EQ R8 R7 R8 + 0x7822000B, // 02DF JMPF R8 #02EC + 0x8C200706, // 02E0 GETMET R8 R3 K6 + 0x88280B16, // 02E1 GETMBR R10 R5 K22 + 0xB82E2400, // 02E2 GETNGBL R11 K18 + 0x8C2C1725, // 02E3 GETMET R11 R11 K37 + 0x7C2C0200, // 02E4 CALL R11 1 + 0x8C2C171B, // 02E5 GETMET R11 R11 K27 + 0x5834001C, // 02E6 LDCONST R13 K28 + 0x5838001D, // 02E7 LDCONST R14 K29 + 0x7C2C0600, // 02E8 CALL R11 3 + 0x7C200600, // 02E9 CALL R8 3 + 0x80041000, // 02EA RET 1 R8 + 0x7002000F, // 02EB JMP #02FC + 0x54220012, // 02EC LDINT R8 19 + 0x1C200E08, // 02ED EQ R8 R7 R8 + 0x7822000C, // 02EE JMPF R8 #02FC + 0x8C200B0A, // 02EF GETMET R8 R5 K10 + 0x7C200200, // 02F0 CALL R8 1 + 0x8C24110B, // 02F1 GETMET R9 R8 K11 + 0x582C0005, // 02F2 LDCONST R11 K5 + 0x88300B0C, // 02F3 GETMBR R12 R5 K12 + 0x5834000F, // 02F4 LDCONST R13 K15 + 0x7C240800, // 02F5 CALL R9 4 + 0x8C24110B, // 02F6 GETMET R9 R8 K11 + 0x582C0009, // 02F7 LDCONST R11 K9 + 0x88300B0C, // 02F8 GETMBR R12 R5 K12 + 0x5834000F, // 02F9 LDCONST R13 K15 + 0x7C240800, // 02FA CALL R9 4 + 0x80041000, // 02FB RET 1 R8 + 0x70020097, // 02FC JMP #0395 + 0x5422003E, // 02FD LDINT R8 63 + 0x1C200C08, // 02FE EQ R8 R6 R8 + 0x78220000, // 02FF JMPF R8 #0301 + 0x70020093, // 0300 JMP #0395 + 0x54220029, // 0301 LDINT R8 42 + 0x1C200C08, // 0302 EQ R8 R6 R8 + 0x7822001D, // 0303 JMPF R8 #0322 + 0x1C200F05, // 0304 EQ R8 R7 K5 + 0x78220003, // 0305 JMPF R8 #030A + 0x8C200B11, // 0306 GETMET R8 R5 K17 + 0x7C200200, // 0307 CALL R8 1 + 0x80041000, // 0308 RET 1 R8 + 0x70020016, // 0309 JMP #0321 + 0x1C200F09, // 030A EQ R8 R7 K9 + 0x78220005, // 030B JMPF R8 #0312 + 0x8C200706, // 030C GETMET R8 R3 K6 + 0x88280B10, // 030D GETMBR R10 R5 K16 + 0x582C0005, // 030E LDCONST R11 K5 + 0x7C200600, // 030F CALL R8 3 + 0x80041000, // 0310 RET 1 R8 + 0x7002000E, // 0311 JMP #0321 + 0x1C200F0D, // 0312 EQ R8 R7 K13 + 0x78220005, // 0313 JMPF R8 #031A + 0x8C200706, // 0314 GETMET R8 R3 K6 + 0x88280B0E, // 0315 GETMBR R10 R5 K14 + 0x582C0009, // 0316 LDCONST R11 K9 + 0x7C200600, // 0317 CALL R8 3 + 0x80041000, // 0318 RET 1 R8 + 0x70020006, // 0319 JMP #0321 + 0x1C200F0F, // 031A EQ R8 R7 K15 + 0x78220004, // 031B JMPF R8 #0321 + 0x8C200706, // 031C GETMET R8 R3 K6 + 0x88280B18, // 031D GETMBR R10 R5 K24 + 0x4C2C0000, // 031E LDNIL R11 + 0x7C200600, // 031F CALL R8 3 + 0x80041000, // 0320 RET 1 R8 + 0x70020072, // 0321 JMP #0395 + 0x5422002A, // 0322 LDINT R8 43 + 0x1C200C08, // 0323 EQ R8 R6 R8 + 0x78220016, // 0324 JMPF R8 #033C + 0x1C200F05, // 0325 EQ R8 R7 K5 + 0x78220007, // 0326 JMPF R8 #032F + 0x8C200706, // 0327 GETMET R8 R3 K6 + 0x88280B16, // 0328 GETMBR R10 R5 K22 + 0xB82E2400, // 0329 GETNGBL R11 K18 + 0x8C2C175A, // 032A GETMET R11 R11 K90 + 0x7C2C0200, // 032B CALL R11 1 + 0x7C200600, // 032C CALL R8 3 + 0x80041000, // 032D RET 1 R8 + 0x7002000B, // 032E JMP #033B + 0x1C200F09, // 032F EQ R8 R7 K9 + 0x78220009, // 0330 JMPF R8 #033B + 0x8C200B11, // 0331 GETMET R8 R5 K17 + 0x7C200200, // 0332 CALL R8 1 + 0x8C24110B, // 0333 GETMET R9 R8 K11 + 0x4C2C0000, // 0334 LDNIL R11 + 0x88300B16, // 0335 GETMBR R12 R5 K22 + 0xB8362400, // 0336 GETNGBL R13 K18 + 0x8C341B5A, // 0337 GETMET R13 R13 K90 + 0x7C340200, // 0338 CALL R13 1 + 0x7C240800, // 0339 CALL R9 4 + 0x80041000, // 033A RET 1 R8 + 0x70020058, // 033B JMP #0395 + 0x5422002B, // 033C LDINT R8 44 + 0x1C200C08, // 033D EQ R8 R6 R8 + 0x7822001C, // 033E JMPF R8 #035C + 0x1C200F05, // 033F EQ R8 R7 K5 + 0x78220005, // 0340 JMPF R8 #0347 + 0x8C200706, // 0341 GETMET R8 R3 K6 + 0x88280B0E, // 0342 GETMBR R10 R5 K14 + 0x582C0009, // 0343 LDCONST R11 K9 + 0x7C200600, // 0344 CALL R8 3 + 0x80041000, // 0345 RET 1 R8 + 0x70020013, // 0346 JMP #035B + 0x1C200F09, // 0347 EQ R8 R7 K9 + 0x78220005, // 0348 JMPF R8 #034F + 0x8C200706, // 0349 GETMET R8 R3 K6 + 0x88280B0E, // 034A GETMBR R10 R5 K14 + 0x542E0003, // 034B LDINT R11 4 + 0x7C200600, // 034C CALL R8 3 + 0x80041000, // 034D RET 1 R8 + 0x7002000B, // 034E JMP #035B + 0x1C200F0D, // 034F EQ R8 R7 K13 + 0x78220009, // 0350 JMPF R8 #035B + 0x8C200B11, // 0351 GETMET R8 R5 K17 + 0x7C200200, // 0352 CALL R8 1 + 0x8C24110B, // 0353 GETMET R9 R8 K11 + 0x4C2C0000, // 0354 LDNIL R11 + 0x8C300B5B, // 0355 GETMET R12 R5 K91 + 0x88380B0E, // 0356 GETMBR R14 R5 K14 + 0x543E0003, // 0357 LDINT R15 4 + 0x7C300600, // 0358 CALL R12 3 + 0x7C240600, // 0359 CALL R9 3 + 0x80041000, // 035A RET 1 R8 + 0x70020038, // 035B JMP #0395 + 0x54220030, // 035C LDINT R8 49 + 0x1C200C08, // 035D EQ R8 R6 R8 + 0x78220007, // 035E JMPF R8 #0367 + 0x1C200F0F, // 035F EQ R8 R7 K15 + 0x78220004, // 0360 JMPF R8 #0366 + 0x8C200706, // 0361 GETMET R8 R3 K6 + 0x88280B0E, // 0362 GETMBR R10 R5 K14 + 0x542E001D, // 0363 LDINT R11 30 + 0x7C200600, // 0364 CALL R8 3 + 0x80041000, // 0365 RET 1 R8 + 0x7002002D, // 0366 JMP #0395 + 0x5422001C, // 0367 LDINT R8 29 + 0x1C200C08, // 0368 EQ R8 R6 R8 + 0x7822002A, // 0369 JMPF R8 #0395 + 0x1C200F0D, // 036A EQ R8 R7 K13 + 0x78220008, // 036B JMPF R8 #0375 + 0x8C200B11, // 036C GETMET R8 R5 K17 + 0x7C200200, // 036D CALL R8 1 + 0x8C24110B, // 036E GETMET R9 R8 K11 + 0x4C2C0000, // 036F LDNIL R11 + 0x88300B0C, // 0370 GETMBR R12 R5 K12 + 0x5436001E, // 0371 LDINT R13 31 + 0x7C240800, // 0372 CALL R9 4 + 0x80041000, // 0373 RET 1 R8 + 0x7002001F, // 0374 JMP #0395 + 0x1C200F0F, // 0375 EQ R8 R7 K15 + 0x7822001D, // 0376 JMPF R8 #0395 + 0x8C200B11, // 0377 GETMET R8 R5 K17 + 0x7C200200, // 0378 CALL R8 1 + 0x88240136, // 0379 GETMBR R9 R0 K54 + 0x8C24135C, // 037A GETMET R9 R9 K92 + 0x502C0200, // 037B LDBOOL R11 1 0 + 0x7C240400, // 037C CALL R9 2 + 0x88280136, // 037D GETMBR R10 R0 K54 + 0x8828155D, // 037E GETMBR R10 R10 K93 + 0x602C0010, // 037F GETGBL R11 G16 + 0x5C301200, // 0380 MOVE R12 R9 + 0x7C2C0200, // 0381 CALL R11 1 + 0xA802000D, // 0382 EXBLK 0 #0391 + 0x5C301600, // 0383 MOVE R12 R11 + 0x7C300000, // 0384 CALL R12 0 + 0x5C341400, // 0385 MOVE R13 R10 + 0x78360003, // 0386 JMPF R13 #038B + 0xB8360200, // 0387 GETNGBL R13 K1 + 0x88341B5E, // 0388 GETMBR R13 R13 K94 + 0x2034180D, // 0389 NE R13 R12 R13 + 0x78360004, // 038A JMPF R13 #0390 + 0x8C34110B, // 038B GETMET R13 R8 K11 + 0x4C3C0000, // 038C LDNIL R15 + 0x88400B0C, // 038D GETMBR R16 R5 K12 + 0x5C441800, // 038E MOVE R17 R12 + 0x7C340800, // 038F CALL R13 4 + 0x7001FFF1, // 0390 JMP #0383 + 0x582C003E, // 0391 LDCONST R11 K62 + 0xAC2C0200, // 0392 CATCH R11 1 0 + 0xB0080000, // 0393 RAISE 2 R0 R0 + 0x80041000, // 0394 RET 1 R8 + 0x60200003, // 0395 GETGBL R8 G3 + 0x5C240000, // 0396 MOVE R9 R0 + 0x7C200200, // 0397 CALL R8 1 + 0x8C20115F, // 0398 GETMET R8 R8 K95 + 0x5C280200, // 0399 MOVE R10 R1 + 0x5C2C0400, // 039A MOVE R11 R2 + 0x5C300600, // 039B MOVE R12 R3 + 0x7C200800, // 039C CALL R8 4 + 0x80041000, // 039D RET 1 R8 }) ) ); @@ -1188,6 +1191,88 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Root; +be_local_closure(class_Matter_Plugin_Root_init, /* name */ + be_nested_proto( + 14, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Root, + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(publish_event), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(EVENT_CRITICAL), + /* K5 */ be_nested_str_weak(TLV), + /* K6 */ be_nested_str_weak(Matter_TLV_item), + /* K7 */ be_nested_str_weak(set), + /* K8 */ be_nested_str_weak(U4), + /* K9 */ be_nested_str_weak(tasmota), + /* K10 */ be_nested_str_weak(version), + /* K11 */ be_const_int(3), + /* K12 */ be_nested_str_weak(U1), + /* K13 */ be_const_int(1), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x541A0027, // 0009 LDINT R6 40 + 0x581C0002, // 000A LDCONST R7 K2 + 0xB8220600, // 000B GETNGBL R8 K3 + 0x88201104, // 000C GETMBR R8 R8 K4 + 0xB8260600, // 000D GETNGBL R9 K3 + 0x88241305, // 000E GETMBR R9 R9 K5 + 0x8C241306, // 000F GETMET R9 R9 K6 + 0x7C240200, // 0010 CALL R9 1 + 0x8C241307, // 0011 GETMET R9 R9 K7 + 0xB82E0600, // 0012 GETNGBL R11 K3 + 0x882C1705, // 0013 GETMBR R11 R11 K5 + 0x882C1708, // 0014 GETMBR R11 R11 K8 + 0xB8321200, // 0015 GETNGBL R12 K9 + 0x8C30190A, // 0016 GETMET R12 R12 K10 + 0x7C300200, // 0017 CALL R12 1 + 0x7C240600, // 0018 CALL R9 3 + 0x7C100A00, // 0019 CALL R4 5 + 0x8C100101, // 001A GETMET R4 R0 K1 + 0x541A0032, // 001B LDINT R6 51 + 0x581C000B, // 001C LDCONST R7 K11 + 0xB8220600, // 001D GETNGBL R8 K3 + 0x88201104, // 001E GETMBR R8 R8 K4 + 0xB8260600, // 001F GETNGBL R9 K3 + 0x88241305, // 0020 GETMBR R9 R9 K5 + 0x8C241306, // 0021 GETMET R9 R9 K6 + 0x7C240200, // 0022 CALL R9 1 + 0x8C241307, // 0023 GETMET R9 R9 K7 + 0xB82E0600, // 0024 GETNGBL R11 K3 + 0x882C1705, // 0025 GETMBR R11 R11 K5 + 0x882C170C, // 0026 GETMBR R11 R11 K12 + 0x5830000D, // 0027 LDCONST R12 K13 + 0x7C240600, // 0028 CALL R9 3 + 0x7C100A00, // 0029 CALL R4 5 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ @@ -2088,19 +2173,19 @@ extern const bclass be_class_Matter_Plugin; be_local_class(Matter_Plugin_Root, 0, &be_class_Matter_Plugin, - be_nested_map(7, + be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, 1), be_const_closure(class_Matter_Plugin_Root_read_attribute_closure) }, - { be_const_key_weak(invoke_request, 6), be_const_closure(class_Matter_Plugin_Root_invoke_request_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(root) }, - { be_const_key_weak(TYPES, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(invoke_request, 1), be_const_closure(class_Matter_Plugin_Root_invoke_request_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Root_init_closure) }, + { be_const_key_weak(TYPES, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(22, -1), be_const_int(1) }, })) ) } )) }, - { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_Root_write_attribute_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Root_X20node) }, - { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(write_attribute, 0), be_const_closure(class_Matter_Plugin_Root_write_attribute_closure) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(root) }, + { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Root_X20node) }, + { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(14, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -2295,6 +2380,7 @@ be_local_class(Matter_Plugin_Root, be_const_int(65533), })) ) } )) }, })) ) } )) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Root_read_attribute_closure) }, })), be_str_weak(Matter_Plugin_Root) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h new file mode 100644 index 000000000..6f6e9d11c --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h @@ -0,0 +1,350 @@ +/* Solidification of Matter_Plugin_2_Sensor_GenericSwitch.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_switch_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x18080504, // 0008 LE R2 R2 K4 + 0x780A0000, // 0009 JMPF R2 #000B + 0x90020103, // 000A SETMBR R0 K0 K3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_update_shadow, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(update_shadow), + /* K1 */ be_nested_str_weak(shadow_value), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60040003, // 0000 GETGBL R1 G3 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x7C040200, // 0004 CALL R1 1 + 0x50040000, // 0005 LDBOOL R1 0 0 + 0x90020201, // 0006 SETMBR R0 K1 R1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_read_attribute, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(set), + /* K6 */ be_nested_str_weak(U1), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(U4), + /* K10 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[51]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E003A, // 0004 LDINT R7 59 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0022, // 0006 JMPF R7 #002A + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0005, // 0008 JMPF R7 #000F + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x58280007, // 000B LDCONST R10 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x7002001A, // 000E JMP #002A + 0x1C1C0D08, // 000F EQ R7 R6 K8 + 0x781E0005, // 0010 JMPF R7 #0017 + 0x8C1C0705, // 0011 GETMET R7 R3 K5 + 0x88240906, // 0012 GETMBR R9 R4 K6 + 0x58280004, // 0013 LDCONST R10 K4 + 0x7C1C0600, // 0014 CALL R7 3 + 0x80040E00, // 0015 RET 1 R7 + 0x70020012, // 0016 JMP #002A + 0x1C1C0D07, // 0017 EQ R7 R6 K7 + 0x781E0005, // 0018 JMPF R7 #001F + 0x8C1C0705, // 0019 GETMET R7 R3 K5 + 0x88240906, // 001A GETMBR R9 R4 K6 + 0x58280007, // 001B LDCONST R10 K7 + 0x7C1C0600, // 001C CALL R7 3 + 0x80040E00, // 001D RET 1 R7 + 0x7002000A, // 001E JMP #002A + 0x541EFFFB, // 001F LDINT R7 65532 + 0x1C1C0C07, // 0020 EQ R7 R6 R7 + 0x781E0007, // 0021 JMPF R7 #002A + 0x8C1C0705, // 0022 GETMET R7 R3 K5 + 0x88240909, // 0023 GETMBR R9 R4 K9 + 0x542A0003, // 0024 LDINT R10 4 + 0x002A0E0A, // 0025 ADD R10 K7 R10 + 0x542E0007, // 0026 LDINT R11 8 + 0x0028140B, // 0027 ADD R10 R10 R11 + 0x7C1C0600, // 0028 CALL R7 3 + 0x80040E00, // 0029 RET 1 R7 + 0x601C0003, // 002A GETGBL R7 G3 + 0x5C200000, // 002B MOVE R8 R0 + 0x7C1C0200, // 002C CALL R7 1 + 0x8C1C0F0A, // 002D GETMET R7 R7 K10 + 0x5C240200, // 002E MOVE R9 R1 + 0x5C280400, // 002F MOVE R10 R2 + 0x5C2C0600, // 0030 MOVE R11 R3 + 0x7C1C0800, // 0031 CALL R7 4 + 0x80040E00, // 0032 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: append_state_json +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_append_state_json, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), + /* K1 */ be_nested_str_weak(shadow_onoff), + }), + be_str_weak(append_state_json), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080000, // 0001 LDCONST R2 K0 + 0x600C0009, // 0002 GETGBL R3 G9 + 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x7C0C0200, // 0004 CALL R3 1 + 0x7C040400, // 0005 CALL R1 2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Sensor_GenericSwitch +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_class(Matter_Plugin_Sensor_GenericSwitch, + 2, + &be_class_Matter_Plugin_Device, + be_nested_map(14, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(CLUSTERS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(5, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(5), + be_const_int(10), + be_const_int(15), + be_const_int(17), + be_const_int(18), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(8, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(59, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(9, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) }, + { be_const_key_weak(UPDATE_TIME, 4), be_const_int(750) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(gensw) }, + { be_const_key_weak(append_state_json, 9), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_append_state_json_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Generic_X20Switch) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_read_attribute_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_update_shadow_closure) }, + { be_const_key_weak(ARG_HINT, 12), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, + { be_const_key_weak(tasmota_switch_index, 13), be_const_var(0) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(15, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(parse_configuration, 8), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_parse_configuration_closure) }, + { be_const_key_weak(shadow_value, -1), be_const_var(1) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_GenericSwitch__X3Clambda_X3E_closure) }, + })), + be_str_weak(Matter_Plugin_Sensor_GenericSwitch) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index 146803b6b..a3546184f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -7,12 +7,12 @@ extern const bclass be_class_Matter_Session; /******************************************************************** -** Solidified function: close +** Solidified function: get_device_id ********************************************************************/ extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_close, /* name */ +be_local_closure(class_Matter_Session_get_device_id, /* name */ be_nested_proto( - 8, /* nstack */ + 2, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -20,93 +20,682 @@ be_local_closure(class_Matter_Session_close, /* name */ 0, /* has sup protos */ &be_class_Matter_Session, 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(local_session_id), - /* K1 */ be_nested_str_weak(__future_local_session_id), - /* K2 */ be_nested_str_weak(initiator_session_id), - /* K3 */ be_nested_str_weak(__future_initiator_session_id), - /* K4 */ be_nested_str_weak(_counter_rcv_impl), - /* K5 */ be_nested_str_weak(reset), - /* K6 */ be_nested_str_weak(_counter_snd_impl), - /* K7 */ be_nested_str_weak(counter_rcv), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(counter_snd), - /* K10 */ be_nested_str_weak(next), - /* K11 */ be_nested_str_weak(i2rkey), - /* K12 */ be_nested_str_weak(_i2r_privacy), - /* K13 */ be_nested_str_weak(r2ikey), - /* K14 */ be_nested_str_weak(attestation_challenge), - /* K15 */ be_nested_str_weak(introspect), - /* K16 */ be_nested_str_weak(members), - /* K17 */ be_nested_str_weak(get), - /* K18 */ be_nested_str_weak(function), - /* K19 */ be_nested_str_weak(instance), - /* K20 */ be_nested_str_weak(_), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(device_id), }), - be_str_weak(close), + be_str_weak(get_device_id), &be_const_str_solidified, - ( &(const binstruction[59]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x88040103, // 0002 GETMBR R1 R0 K3 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x88040104, // 0004 GETMBR R1 R0 K4 - 0x8C040305, // 0005 GETMET R1 R1 K5 - 0x7C040200, // 0006 CALL R1 1 - 0x88040106, // 0007 GETMBR R1 R0 K6 - 0x8C040305, // 0008 GETMET R1 R1 K5 - 0x7C040200, // 0009 CALL R1 1 - 0x90020F08, // 000A SETMBR R0 K7 K8 - 0x88040106, // 000B GETMBR R1 R0 K6 - 0x8C04030A, // 000C GETMET R1 R1 K10 - 0x7C040200, // 000D CALL R1 1 - 0x90021201, // 000E SETMBR R0 K9 R1 - 0x4C040000, // 000F LDNIL R1 - 0x90021601, // 0010 SETMBR R0 K11 R1 - 0x4C040000, // 0011 LDNIL R1 - 0x90021801, // 0012 SETMBR R0 K12 R1 - 0x4C040000, // 0013 LDNIL R1 - 0x90021A01, // 0014 SETMBR R0 K13 R1 - 0x4C040000, // 0015 LDNIL R1 - 0x90021C01, // 0016 SETMBR R0 K14 R1 - 0xA4061E00, // 0017 IMPORT R1 K15 - 0x60080010, // 0018 GETGBL R2 G16 - 0x8C0C0310, // 0019 GETMET R3 R1 K16 - 0x5C140000, // 001A MOVE R5 R0 - 0x7C0C0400, // 001B CALL R3 2 - 0x7C080200, // 001C CALL R2 1 - 0xA8020018, // 001D EXBLK 0 #0037 - 0x5C0C0400, // 001E MOVE R3 R2 - 0x7C0C0000, // 001F CALL R3 0 - 0x8C100311, // 0020 GETMET R4 R1 K17 - 0x5C180000, // 0021 MOVE R6 R0 - 0x5C1C0600, // 0022 MOVE R7 R3 - 0x7C100600, // 0023 CALL R4 3 - 0x60140004, // 0024 GETGBL R5 G4 - 0x5C180800, // 0025 MOVE R6 R4 - 0x7C140200, // 0026 CALL R5 1 - 0x20140B12, // 0027 NE R5 R5 K18 - 0x7816000C, // 0028 JMPF R5 #0036 - 0x60140004, // 0029 GETGBL R5 G4 - 0x5C180800, // 002A MOVE R6 R4 - 0x7C140200, // 002B CALL R5 1 - 0x20140B13, // 002C NE R5 R5 K19 - 0x78160007, // 002D JMPF R5 #0036 - 0x94140708, // 002E GETIDX R5 R3 K8 - 0x1C140B14, // 002F EQ R5 R5 K20 - 0x78160004, // 0030 JMPF R5 #0036 - 0x94140715, // 0031 GETIDX R5 R3 K21 - 0x1C140B14, // 0032 EQ R5 R5 K20 - 0x78160001, // 0033 JMPF R5 #0036 - 0x4C140000, // 0034 LDNIL R5 - 0x90000605, // 0035 SETMBR R0 R3 R5 - 0x7001FFE6, // 0036 JMP #001E - 0x58080016, // 0037 LDCONST R2 K22 - 0xAC080200, // 0038 CATCH R2 1 0 - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x80000000, // 003A RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x70020000, // 0004 JMP #0006 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: before_remove +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_before_remove, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29), + /* K2 */ be_nested_str_weak(local_session_id), + /* K3 */ be_const_int(3), + }), + be_str_weak(before_remove), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x60080018, // 0001 GETGBL R2 G24 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x7C080400, // 0004 CALL R2 2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x7C040400, // 0006 CALL R1 2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_mode_CASE +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_set_mode_CASE, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(set_mode), + /* K1 */ be_nested_str_weak(_CASE), + }), + be_str_weak(set_mode_CASE), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x7C040400, // 0002 CALL R1 2 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_CASE +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_is_CASE, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(mode), + /* K1 */ be_nested_str_weak(_CASE), + }), + be_str_weak(is_CASE), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: persist_to_fabric +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_persist_to_fabric, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(add_session), + }), + be_str_weak(persist_to_fabric), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_noc +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_noc, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(noc), + }), + be_str_weak(get_noc), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x80040200, // 0002 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_init, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(_store), + /* K2 */ be_nested_str_weak(mode), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(local_session_id), + /* K5 */ be_nested_str_weak(initiator_session_id), + /* K6 */ be_nested_str_weak(_counter_snd_impl), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(Counter), + /* K9 */ be_nested_str_weak(_counter_rcv_impl), + /* K10 */ be_nested_str_weak(counter_rcv), + /* K11 */ be_nested_str_weak(counter_snd), + /* K12 */ be_nested_str_weak(next), + /* K13 */ be_nested_str_weak(_COUNTER_SND_INCR), + /* K14 */ be_nested_str_weak(_counter_insecure_rcv), + /* K15 */ be_nested_str_weak(_counter_insecure_snd), + /* K16 */ be_nested_str_weak(_breadcrumb), + /* K17 */ be_nested_str_weak(_exchange_id), + /* K18 */ be_nested_str_weak(random), + /* K19 */ be_const_int(2), + /* K20 */ be_nested_str_weak(get), + /* K21 */ be_nested_str_weak(_fabric), + /* K22 */ be_nested_str_weak(update), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0xA4160000, // 0000 IMPORT R5 K0 + 0x90020201, // 0001 SETMBR R0 K1 R1 + 0x90020503, // 0002 SETMBR R0 K2 K3 + 0x90020802, // 0003 SETMBR R0 K4 R2 + 0x90020A03, // 0004 SETMBR R0 K5 R3 + 0xB81A0E00, // 0005 GETNGBL R6 K7 + 0x8C180D08, // 0006 GETMET R6 R6 K8 + 0x7C180200, // 0007 CALL R6 1 + 0x90020C06, // 0008 SETMBR R0 K6 R6 + 0xB81A0E00, // 0009 GETNGBL R6 K7 + 0x8C180D08, // 000A GETMET R6 R6 K8 + 0x7C180200, // 000B CALL R6 1 + 0x90021206, // 000C SETMBR R0 K9 R6 + 0x90021503, // 000D SETMBR R0 K10 K3 + 0x88180106, // 000E GETMBR R6 R0 K6 + 0x8C180D0C, // 000F GETMET R6 R6 K12 + 0x7C180200, // 0010 CALL R6 1 + 0x881C010D, // 0011 GETMBR R7 R0 K13 + 0x00180C07, // 0012 ADD R6 R6 R7 + 0x90021606, // 0013 SETMBR R0 K11 R6 + 0xB81A0E00, // 0014 GETNGBL R6 K7 + 0x8C180D08, // 0015 GETMET R6 R6 K8 + 0x7C180200, // 0016 CALL R6 1 + 0x90021C06, // 0017 SETMBR R0 K14 R6 + 0xB81A0E00, // 0018 GETNGBL R6 K7 + 0x8C180D08, // 0019 GETMET R6 R6 K8 + 0x7C180200, // 001A CALL R6 1 + 0x90021E06, // 001B SETMBR R0 K15 R6 + 0x90022103, // 001C SETMBR R0 K16 K3 + 0x8C180B12, // 001D GETMET R6 R5 K18 + 0x58200013, // 001E LDCONST R8 K19 + 0x7C180400, // 001F CALL R6 2 + 0x8C180D14, // 0020 GETMET R6 R6 K20 + 0x58200003, // 0021 LDCONST R8 K3 + 0x58240013, // 0022 LDCONST R9 K19 + 0x7C180600, // 0023 CALL R6 3 + 0x90022206, // 0024 SETMBR R0 K17 R6 + 0x90022A04, // 0025 SETMBR R0 K21 R4 + 0x8C180116, // 0026 GETMET R6 R0 K22 + 0x7C180200, // 0027 CALL R6 1 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_admin_vendor +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_admin_vendor, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(admin_vendor), + }), + be_str_weak(get_admin_vendor), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x70020000, // 0004 JMP #0006 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_i2r +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_i2r, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(i2rkey), + }), + be_str_weak(get_i2r), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: counter_rcv_validate +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(_counter_rcv_impl), + /* K1 */ be_nested_str_weak(validate), + /* K2 */ be_nested_str_weak(counter_rcv), + /* K3 */ be_nested_str_weak(val), + }), + be_str_weak(counter_rcv_validate), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x5C180400, // 0003 MOVE R6 R2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x780E0003, // 0005 JMPF R3 #000A + 0x88100100, // 0006 GETMBR R4 R0 K0 + 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x7C100200, // 0008 CALL R4 1 + 0x90020404, // 0009 SETMBR R0 K2 R4 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ca +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_ca, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(root_ca_certificate), + }), + be_str_weak(get_ca), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x80040200, // 0002 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_fabric_index +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_fabric_index, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(fabric_index), + }), + be_str_weak(get_fabric_index), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x70020000, // 0004 JMP #0006 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_r2i +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_r2i, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(r2ikey), + }), + be_str_weak(get_r2i), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: counter_snd_next +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_counter_snd_next, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(_counter_snd_impl), + /* K1 */ be_nested_str_weak(next), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(Counter), + /* K4 */ be_nested_str_weak(is_greater), + /* K5 */ be_nested_str_weak(counter_snd), + /* K6 */ be_nested_str_weak(_COUNTER_SND_INCR), + /* K7 */ be_nested_str_weak(does_persist), + /* K8 */ be_nested_str_weak(save), + }), + be_str_weak(counter_snd_next), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0xB80A0400, // 0003 GETNGBL R2 K2 + 0x88080503, // 0004 GETMBR R2 R2 K3 + 0x8C080504, // 0005 GETMET R2 R2 K4 + 0x5C100200, // 0006 MOVE R4 R1 + 0x88140105, // 0007 GETMBR R5 R0 K5 + 0x7C080600, // 0008 CALL R2 3 + 0x780A0007, // 0009 JMPF R2 #0012 + 0x88080106, // 000A GETMBR R2 R0 K6 + 0x00080202, // 000B ADD R2 R1 R2 + 0x90020A02, // 000C SETMBR R0 K5 R2 + 0x8C080107, // 000D GETMET R2 R0 K7 + 0x7C080200, // 000E CALL R2 1 + 0x780A0001, // 000F JMPF R2 #0012 + 0x8C080108, // 0010 GETMET R2 R0 K8 + 0x7C080200, // 0011 CALL R2 1 + 0x80040200, // 0012 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_temp_ca_pub +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(parse), + /* K4 */ be_nested_str_weak(findsubval), + }), + be_str_weak(get_temp_ca_pub), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060008, // 0001 JMPF R1 #000B + 0xB80A0200, // 0002 GETNGBL R2 K1 + 0x88080502, // 0003 GETMBR R2 R2 K2 + 0x8C080503, // 0004 GETMET R2 R2 K3 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x8C0C0504, // 0007 GETMET R3 R2 K4 + 0x54160008, // 0008 LDINT R5 9 + 0x7C0C0400, // 0009 CALL R3 2 + 0x80040600, // 000A RET 1 R3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_temp_ca +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_temp_ca, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), + }), + be_str_weak(get_temp_ca), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_fabric_id +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_fabric_id, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(fabric_id), + }), + be_str_weak(get_fabric_id), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x80040200, // 0002 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_mode_PASE +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_set_mode_PASE, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(set_mode), + /* K1 */ be_nested_str_weak(_PASE), + }), + be_str_weak(set_mode_PASE), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x7C040400, // 0002 CALL R1 2 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_fabric_label +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_fabric_label, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(fabric_label), + }), + be_str_weak(get_fabric_label), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x70020000, // 0004 JMP #0006 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 }) ) ); @@ -147,66 +736,10 @@ be_local_closure(class_Matter_Session_update, /* name */ /******************************************************************** -** Solidified function: get_ac +** Solidified function: get_icac ********************************************************************/ extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_ac, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(attestation_challenge), - }), - be_str_weak(get_ac), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_fabric -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_fabric, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - }), - be_str_weak(get_fabric), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_noc -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_noc, /* name */ +be_local_closure(class_Matter_Session_get_icac, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -218,9 +751,9 @@ be_local_closure(class_Matter_Session_get_noc, /* name */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(noc), + /* K1 */ be_nested_str_weak(icac), }), - be_str_weak(get_noc), + be_str_weak(get_icac), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -233,12 +766,12 @@ be_local_closure(class_Matter_Session_get_noc, /* name */ /******************************************************************** -** Solidified function: get_device_id +** Solidified function: is_PASE ********************************************************************/ extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_device_id, /* name */ +be_local_closure(class_Matter_Session_is_PASE, /* name */ be_nested_proto( - 2, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -247,19 +780,16 @@ be_local_closure(class_Matter_Session_get_device_id, /* name */ &be_class_Matter_Session, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(device_id), + /* K0 */ be_nested_str_weak(mode), + /* K1 */ be_nested_str_weak(_PASE), }), - be_str_weak(get_device_id), + be_str_weak(is_PASE), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ + ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060002, // 0001 JMPF R1 #0005 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 - 0x70020000, // 0004 JMP #0006 - 0x4C040000, // 0005 LDNIL R1 - 0x80040200, // 0006 RET 1 R1 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -303,47 +833,10 @@ be_local_closure(class_Matter_Session_set_fabric_label, /* name */ /******************************************************************** -** Solidified function: set_keys +** Solidified function: get_node_id ********************************************************************/ extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_set_keys, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(i2rkey), - /* K1 */ be_nested_str_weak(_i2r_privacy), - /* K2 */ be_nested_str_weak(r2ikey), - /* K3 */ be_nested_str_weak(attestation_challenge), - /* K4 */ be_nested_str_weak(created), - }), - be_str_weak(set_keys), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x4C140000, // 0001 LDNIL R5 - 0x90020205, // 0002 SETMBR R0 K1 R5 - 0x90020402, // 0003 SETMBR R0 K2 R2 - 0x90020603, // 0004 SETMBR R0 K3 R3 - 0x90020804, // 0005 SETMBR R0 K4 R4 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_r2i -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_r2i, /* name */ +be_local_closure(class_Matter_Session_get_node_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -353,14 +846,98 @@ be_local_closure(class_Matter_Session_get_r2i, /* name */ 0, /* has sup protos */ &be_class_Matter_Session, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(r2ikey), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(device_id), }), - be_str_weak(get_r2i), + be_str_weak(get_node_id), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x70020000, // 0004 JMP #0006 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ca_pub +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_ca_pub, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(get_ca_pub), + }), + be_str_weak(get_ca_pub), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_pk +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_pk, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(get_pk), + /* K2 */ be_nested_str_weak(_temp_pk), + /* K3 */ be_nested_str_weak(crypto), + /* K4 */ be_nested_str_weak(random), + }), + be_str_weak(get_pk), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060004, // 0001 JMPF R1 #0007 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x8C040301, // 0003 GETMET R1 R1 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x80040200, // 0005 RET 1 R1 + 0x70020008, // 0006 JMP #0010 + 0x88040102, // 0007 GETMBR R1 R0 K2 + 0x74060004, // 0008 JMPT R1 #000E + 0xA4060600, // 0009 IMPORT R1 K3 + 0x8C080304, // 000A GETMET R2 R1 K4 + 0x5412001F, // 000B LDINT R4 32 + 0x7C080400, // 000C CALL R2 2 + 0x90020402, // 000D SETMBR R0 K2 R2 + 0x88040102, // 000E GETMBR R1 R0 K2 + 0x80040200, // 000F RET 1 R1 + 0x80000000, // 0010 RET 0 }) ) ); @@ -509,6 +1086,223 @@ be_local_closure(class_Matter_Session_tojson, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: close +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_close, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(local_session_id), + /* K1 */ be_nested_str_weak(__future_local_session_id), + /* K2 */ be_nested_str_weak(initiator_session_id), + /* K3 */ be_nested_str_weak(__future_initiator_session_id), + /* K4 */ be_nested_str_weak(_counter_rcv_impl), + /* K5 */ be_nested_str_weak(reset), + /* K6 */ be_nested_str_weak(_counter_snd_impl), + /* K7 */ be_nested_str_weak(counter_rcv), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(counter_snd), + /* K10 */ be_nested_str_weak(next), + /* K11 */ be_nested_str_weak(i2rkey), + /* K12 */ be_nested_str_weak(_i2r_privacy), + /* K13 */ be_nested_str_weak(r2ikey), + /* K14 */ be_nested_str_weak(attestation_challenge), + /* K15 */ be_nested_str_weak(introspect), + /* K16 */ be_nested_str_weak(members), + /* K17 */ be_nested_str_weak(get), + /* K18 */ be_nested_str_weak(function), + /* K19 */ be_nested_str_weak(instance), + /* K20 */ be_nested_str_weak(_), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(close), + &be_const_str_solidified, + ( &(const binstruction[59]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x88040103, // 0002 GETMBR R1 R0 K3 + 0x90020401, // 0003 SETMBR R0 K2 R1 + 0x88040104, // 0004 GETMBR R1 R0 K4 + 0x8C040305, // 0005 GETMET R1 R1 K5 + 0x7C040200, // 0006 CALL R1 1 + 0x88040106, // 0007 GETMBR R1 R0 K6 + 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x7C040200, // 0009 CALL R1 1 + 0x90020F08, // 000A SETMBR R0 K7 K8 + 0x88040106, // 000B GETMBR R1 R0 K6 + 0x8C04030A, // 000C GETMET R1 R1 K10 + 0x7C040200, // 000D CALL R1 1 + 0x90021201, // 000E SETMBR R0 K9 R1 + 0x4C040000, // 000F LDNIL R1 + 0x90021601, // 0010 SETMBR R0 K11 R1 + 0x4C040000, // 0011 LDNIL R1 + 0x90021801, // 0012 SETMBR R0 K12 R1 + 0x4C040000, // 0013 LDNIL R1 + 0x90021A01, // 0014 SETMBR R0 K13 R1 + 0x4C040000, // 0015 LDNIL R1 + 0x90021C01, // 0016 SETMBR R0 K14 R1 + 0xA4061E00, // 0017 IMPORT R1 K15 + 0x60080010, // 0018 GETGBL R2 G16 + 0x8C0C0310, // 0019 GETMET R3 R1 K16 + 0x5C140000, // 001A MOVE R5 R0 + 0x7C0C0400, // 001B CALL R3 2 + 0x7C080200, // 001C CALL R2 1 + 0xA8020018, // 001D EXBLK 0 #0037 + 0x5C0C0400, // 001E MOVE R3 R2 + 0x7C0C0000, // 001F CALL R3 0 + 0x8C100311, // 0020 GETMET R4 R1 K17 + 0x5C180000, // 0021 MOVE R6 R0 + 0x5C1C0600, // 0022 MOVE R7 R3 + 0x7C100600, // 0023 CALL R4 3 + 0x60140004, // 0024 GETGBL R5 G4 + 0x5C180800, // 0025 MOVE R6 R4 + 0x7C140200, // 0026 CALL R5 1 + 0x20140B12, // 0027 NE R5 R5 K18 + 0x7816000C, // 0028 JMPF R5 #0036 + 0x60140004, // 0029 GETGBL R5 G4 + 0x5C180800, // 002A MOVE R6 R4 + 0x7C140200, // 002B CALL R5 1 + 0x20140B13, // 002C NE R5 R5 K19 + 0x78160007, // 002D JMPF R5 #0036 + 0x94140708, // 002E GETIDX R5 R3 K8 + 0x1C140B14, // 002F EQ R5 R5 K20 + 0x78160004, // 0030 JMPF R5 #0036 + 0x94140715, // 0031 GETIDX R5 R3 K21 + 0x1C140B14, // 0032 EQ R5 R5 K20 + 0x78160001, // 0033 JMPF R5 #0036 + 0x4C140000, // 0034 LDNIL R5 + 0x90000605, // 0035 SETMBR R0 R3 R5 + 0x7001FFE6, // 0036 JMP #001E + 0x58080016, // 0037 LDCONST R2 K22 + 0xAC080200, // 0038 CATCH R2 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x80000000, // 003A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ac +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_ac, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(attestation_challenge), + }), + be_str_weak(get_ac), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_fabric +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_fabric, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + }), + be_str_weak(get_fabric), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_i2r_privacy +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(_i2r_privacy), + /* K1 */ be_nested_str_weak(crypto), + /* K2 */ be_nested_str_weak(HKDF_SHA256), + /* K3 */ be_nested_str_weak(derive), + /* K4 */ be_nested_str_weak(get_i2r), + /* K5 */ be_nested_str_weak(fromstring), + /* K6 */ be_nested_str_weak(PrivacyKey), + }), + be_str_weak(get_i2r_privacy), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x7806000F, // 0003 JMPF R1 #0014 + 0xA4060200, // 0004 IMPORT R1 K1 + 0x8C080302, // 0005 GETMET R2 R1 K2 + 0x7C080200, // 0006 CALL R2 1 + 0x8C080503, // 0007 GETMET R2 R2 K3 + 0x8C100104, // 0008 GETMET R4 R0 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x60140015, // 000A GETGBL R5 G21 + 0x7C140000, // 000B CALL R5 0 + 0x60180015, // 000C GETGBL R6 G21 + 0x7C180000, // 000D CALL R6 0 + 0x8C180D05, // 000E GETMET R6 R6 K5 + 0x58200006, // 000F LDCONST R8 K6 + 0x7C180400, // 0010 CALL R6 2 + 0x541E000F, // 0011 LDINT R7 16 + 0x7C080A00, // 0012 CALL R2 5 + 0x90020002, // 0013 SETMBR R0 K0 R2 + 0x88040100, // 0014 GETMBR R1 R0 K0 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: fromjson ********************************************************************/ @@ -626,6 +1420,304 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: save +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_save, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_store), + /* K1 */ be_nested_str_weak(save_fabrics), + }), + be_str_weak(save), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: hydrate_post +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_hydrate_post, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(_counter_snd_impl), + /* K1 */ be_nested_str_weak(reset), + /* K2 */ be_nested_str_weak(counter_snd), + /* K3 */ be_nested_str_weak(_counter_rcv_impl), + /* K4 */ be_nested_str_weak(counter_rcv), + /* K5 */ be_nested_str_weak(val), + }), + be_str_weak(hydrate_post), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x88040103, // 0004 GETMBR R1 R0 K3 + 0x8C040301, // 0005 GETMET R1 R1 K1 + 0x880C0104, // 0006 GETMBR R3 R0 K4 + 0x7C040400, // 0007 CALL R1 2 + 0x88040100, // 0008 GETMBR R1 R0 K0 + 0x8C040305, // 0009 GETMET R1 R1 K5 + 0x7C040200, // 000A CALL R1 1 + 0x90020401, // 000B SETMBR R0 K2 R1 + 0x88040103, // 000C GETMBR R1 R0 K3 + 0x8C040305, // 000D GETMET R1 R1 K5 + 0x7C040200, // 000E CALL R1 1 + 0x90020801, // 000F SETMBR R0 K4 R1 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_admin_subject +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_admin_subject, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(admin_subject), + }), + be_str_weak(get_admin_subject), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x70020000, // 0004 JMP #0006 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ipk_epoch_key +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(ipk_epoch_key), + }), + be_str_weak(get_ipk_epoch_key), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x80040200, // 0002 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_fabric_compressed +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(fabric_compressed), + }), + be_str_weak(get_fabric_compressed), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x70020000, // 0004 JMP #0006 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_mode +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_get_mode, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(mode), + }), + be_str_weak(get_mode), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_temp_ca +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_set_temp_ca, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), + }), + be_str_weak(set_temp_ca), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_mode +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_set_mode, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(mode), + }), + be_str_weak(set_mode), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_keys +********************************************************************/ +extern const bclass be_class_Matter_Session; +be_local_closure(class_Matter_Session_set_keys, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Session, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(i2rkey), + /* K1 */ be_nested_str_weak(_i2r_privacy), + /* K2 */ be_nested_str_weak(r2ikey), + /* K3 */ be_nested_str_weak(attestation_challenge), + /* K4 */ be_nested_str_weak(created), + }), + be_str_weak(set_keys), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x4C140000, // 0001 LDNIL R5 + 0x90020205, // 0002 SETMBR R0 K1 R5 + 0x90020402, // 0003 SETMBR R0 K2 R2 + 0x90020603, // 0004 SETMBR R0 K3 R3 + 0x90020804, // 0005 SETMBR R0 K4 R4 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: gen_CSR ********************************************************************/ @@ -736,366 +1828,6 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_ipk_epoch_key -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(ipk_epoch_key), - }), - be_str_weak(get_ipk_epoch_key), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x80040200, // 0002 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: counter_rcv_validate -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_rcv_impl), - /* K1 */ be_nested_str_weak(validate), - /* K2 */ be_nested_str_weak(counter_rcv), - /* K3 */ be_nested_str_weak(val), - }), - be_str_weak(counter_rcv_validate), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x5C180400, // 0003 MOVE R6 R2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x780E0003, // 0005 JMPF R3 #000A - 0x88100100, // 0006 GETMBR R4 R0 K0 - 0x8C100903, // 0007 GETMET R4 R4 K3 - 0x7C100200, // 0008 CALL R4 1 - 0x90020404, // 0009 SETMBR R0 K2 R4 - 0x80040600, // 000A RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_admin_subject -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_admin_subject, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(admin_subject), - }), - be_str_weak(get_admin_subject), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060002, // 0001 JMPF R1 #0005 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 - 0x70020000, // 0004 JMP #0006 - 0x4C040000, // 0005 LDNIL R1 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_fabric_compressed -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_compressed), - }), - be_str_weak(get_fabric_compressed), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060002, // 0001 JMPF R1 #0005 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 - 0x70020000, // 0004 JMP #0006 - 0x4C040000, // 0005 LDNIL R1 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: persist_to_fabric -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_persist_to_fabric, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(add_session), - }), - be_str_weak(persist_to_fabric), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ca -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_ca, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(root_ca_certificate), - }), - be_str_weak(get_ca), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x80040200, // 0002 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_PASE -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_is_PASE, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - /* K1 */ be_nested_str_weak(_PASE), - }), - be_str_weak(is_PASE), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_CASE -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_is_CASE, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - /* K1 */ be_nested_str_weak(_CASE), - }), - be_str_weak(is_CASE), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: before_remove -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_before_remove, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29), - /* K2 */ be_nested_str_weak(local_session_id), - /* K3 */ be_const_int(3), - }), - be_str_weak(before_remove), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x60080018, // 0001 GETGBL R2 G24 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x7C080400, // 0004 CALL R2 2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x7C040400, // 0006 CALL R1 2 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_save, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_store), - /* K1 */ be_nested_str_weak(save_fabrics), - }), - be_str_weak(save), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_fabric_id -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_fabric_id, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_id), - }), - be_str_weak(get_fabric_id), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x80040200, // 0002 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: get_ipk_group_key ********************************************************************/ @@ -1127,704 +1859,6 @@ be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_temp_ca_pub -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(parse), - /* K4 */ be_nested_str_weak(findsubval), - }), - be_str_weak(get_temp_ca_pub), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060008, // 0001 JMPF R1 #000B - 0xB80A0200, // 0002 GETNGBL R2 K1 - 0x88080502, // 0003 GETMBR R2 R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x8C0C0504, // 0007 GETMET R3 R2 K4 - 0x54160008, // 0008 LDINT R5 9 - 0x7C0C0400, // 0009 CALL R3 2 - 0x80040600, // 000A RET 1 R3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ca_pub -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_ca_pub, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(get_ca_pub), - }), - be_str_weak(get_ca_pub), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_mode -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_mode, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - }), - be_str_weak(get_mode), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: hydrate_post -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_hydrate_post, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_snd_impl), - /* K1 */ be_nested_str_weak(reset), - /* K2 */ be_nested_str_weak(counter_snd), - /* K3 */ be_nested_str_weak(_counter_rcv_impl), - /* K4 */ be_nested_str_weak(counter_rcv), - /* K5 */ be_nested_str_weak(val), - }), - be_str_weak(hydrate_post), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x88040103, // 0004 GETMBR R1 R0 K3 - 0x8C040301, // 0005 GETMET R1 R1 K1 - 0x880C0104, // 0006 GETMBR R3 R0 K4 - 0x7C040400, // 0007 CALL R1 2 - 0x88040100, // 0008 GETMBR R1 R0 K0 - 0x8C040305, // 0009 GETMET R1 R1 K5 - 0x7C040200, // 000A CALL R1 1 - 0x90020401, // 000B SETMBR R0 K2 R1 - 0x88040103, // 000C GETMBR R1 R0 K3 - 0x8C040305, // 000D GETMET R1 R1 K5 - 0x7C040200, // 000E CALL R1 1 - 0x90020801, // 000F SETMBR R0 K4 R1 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_fabric_label -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_fabric_label, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_label), - }), - be_str_weak(get_fabric_label), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060002, // 0001 JMPF R1 #0005 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 - 0x70020000, // 0004 JMP #0006 - 0x4C040000, // 0005 LDNIL R1 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_icac -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_icac, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(icac), - }), - be_str_weak(get_icac), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x80040200, // 0002 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_mode_CASE -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_set_mode_CASE, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_mode), - /* K1 */ be_nested_str_weak(_CASE), - }), - be_str_weak(set_mode_CASE), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: counter_snd_next -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_counter_snd_next, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_snd_impl), - /* K1 */ be_nested_str_weak(next), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Counter), - /* K4 */ be_nested_str_weak(is_greater), - /* K5 */ be_nested_str_weak(counter_snd), - /* K6 */ be_nested_str_weak(_COUNTER_SND_INCR), - /* K7 */ be_nested_str_weak(does_persist), - /* K8 */ be_nested_str_weak(save), - }), - be_str_weak(counter_snd_next), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0xB80A0400, // 0003 GETNGBL R2 K2 - 0x88080503, // 0004 GETMBR R2 R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 - 0x5C100200, // 0006 MOVE R4 R1 - 0x88140105, // 0007 GETMBR R5 R0 K5 - 0x7C080600, // 0008 CALL R2 3 - 0x780A0007, // 0009 JMPF R2 #0012 - 0x88080106, // 000A GETMBR R2 R0 K6 - 0x00080202, // 000B ADD R2 R1 R2 - 0x90020A02, // 000C SETMBR R0 K5 R2 - 0x8C080107, // 000D GETMET R2 R0 K7 - 0x7C080200, // 000E CALL R2 1 - 0x780A0001, // 000F JMPF R2 #0012 - 0x8C080108, // 0010 GETMET R2 R0 K8 - 0x7C080200, // 0011 CALL R2 1 - 0x80040200, // 0012 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_i2r_privacy -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(_i2r_privacy), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(HKDF_SHA256), - /* K3 */ be_nested_str_weak(derive), - /* K4 */ be_nested_str_weak(get_i2r), - /* K5 */ be_nested_str_weak(fromstring), - /* K6 */ be_nested_str_weak(PrivacyKey), - }), - be_str_weak(get_i2r_privacy), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x7806000F, // 0003 JMPF R1 #0014 - 0xA4060200, // 0004 IMPORT R1 K1 - 0x8C080302, // 0005 GETMET R2 R1 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x8C100104, // 0008 GETMET R4 R0 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x60140015, // 000A GETGBL R5 G21 - 0x7C140000, // 000B CALL R5 0 - 0x60180015, // 000C GETGBL R6 G21 - 0x7C180000, // 000D CALL R6 0 - 0x8C180D05, // 000E GETMET R6 R6 K5 - 0x58200006, // 000F LDCONST R8 K6 - 0x7C180400, // 0010 CALL R6 2 - 0x541E000F, // 0011 LDINT R7 16 - 0x7C080A00, // 0012 CALL R2 5 - 0x90020002, // 0013 SETMBR R0 K0 R2 - 0x88040100, // 0014 GETMBR R1 R0 K0 - 0x80040200, // 0015 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_i2r -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_i2r, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(i2rkey), - }), - be_str_weak(get_i2r), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_admin_vendor -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_admin_vendor, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(admin_vendor), - }), - be_str_weak(get_admin_vendor), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060002, // 0001 JMPF R1 #0005 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 - 0x70020000, // 0004 JMP #0006 - 0x4C040000, // 0005 LDNIL R1 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_temp_ca -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_set_temp_ca, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), - }), - be_str_weak(set_temp_ca), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_init, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(_store), - /* K2 */ be_nested_str_weak(mode), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(local_session_id), - /* K5 */ be_nested_str_weak(initiator_session_id), - /* K6 */ be_nested_str_weak(_counter_snd_impl), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(Counter), - /* K9 */ be_nested_str_weak(_counter_rcv_impl), - /* K10 */ be_nested_str_weak(counter_rcv), - /* K11 */ be_nested_str_weak(counter_snd), - /* K12 */ be_nested_str_weak(next), - /* K13 */ be_nested_str_weak(_COUNTER_SND_INCR), - /* K14 */ be_nested_str_weak(_counter_insecure_rcv), - /* K15 */ be_nested_str_weak(_counter_insecure_snd), - /* K16 */ be_nested_str_weak(_breadcrumb), - /* K17 */ be_nested_str_weak(_exchange_id), - /* K18 */ be_nested_str_weak(random), - /* K19 */ be_const_int(2), - /* K20 */ be_nested_str_weak(get), - /* K21 */ be_nested_str_weak(_fabric), - /* K22 */ be_nested_str_weak(update), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x90020503, // 0002 SETMBR R0 K2 K3 - 0x90020802, // 0003 SETMBR R0 K4 R2 - 0x90020A03, // 0004 SETMBR R0 K5 R3 - 0xB81A0E00, // 0005 GETNGBL R6 K7 - 0x8C180D08, // 0006 GETMET R6 R6 K8 - 0x7C180200, // 0007 CALL R6 1 - 0x90020C06, // 0008 SETMBR R0 K6 R6 - 0xB81A0E00, // 0009 GETNGBL R6 K7 - 0x8C180D08, // 000A GETMET R6 R6 K8 - 0x7C180200, // 000B CALL R6 1 - 0x90021206, // 000C SETMBR R0 K9 R6 - 0x90021503, // 000D SETMBR R0 K10 K3 - 0x88180106, // 000E GETMBR R6 R0 K6 - 0x8C180D0C, // 000F GETMET R6 R6 K12 - 0x7C180200, // 0010 CALL R6 1 - 0x881C010D, // 0011 GETMBR R7 R0 K13 - 0x00180C07, // 0012 ADD R6 R6 R7 - 0x90021606, // 0013 SETMBR R0 K11 R6 - 0xB81A0E00, // 0014 GETNGBL R6 K7 - 0x8C180D08, // 0015 GETMET R6 R6 K8 - 0x7C180200, // 0016 CALL R6 1 - 0x90021C06, // 0017 SETMBR R0 K14 R6 - 0xB81A0E00, // 0018 GETNGBL R6 K7 - 0x8C180D08, // 0019 GETMET R6 R6 K8 - 0x7C180200, // 001A CALL R6 1 - 0x90021E06, // 001B SETMBR R0 K15 R6 - 0x90022103, // 001C SETMBR R0 K16 K3 - 0x8C180B12, // 001D GETMET R6 R5 K18 - 0x58200013, // 001E LDCONST R8 K19 - 0x7C180400, // 001F CALL R6 2 - 0x8C180D14, // 0020 GETMET R6 R6 K20 - 0x58200003, // 0021 LDCONST R8 K3 - 0x58240013, // 0022 LDCONST R9 K19 - 0x7C180600, // 0023 CALL R6 3 - 0x90022206, // 0024 SETMBR R0 K17 R6 - 0x90022A04, // 0025 SETMBR R0 K21 R4 - 0x8C180116, // 0026 GETMET R6 R0 K22 - 0x7C180200, // 0027 CALL R6 1 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_fabric_index -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_fabric_index, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_index), - }), - be_str_weak(get_fabric_index), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060002, // 0001 JMPF R1 #0005 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 - 0x70020000, // 0004 JMP #0006 - 0x4C040000, // 0005 LDNIL R1 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_temp_ca -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_temp_ca, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), - }), - be_str_weak(get_temp_ca), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pk -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_get_pk, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(get_pk), - /* K2 */ be_nested_str_weak(_temp_pk), - /* K3 */ be_nested_str_weak(crypto), - /* K4 */ be_nested_str_weak(random), - }), - be_str_weak(get_pk), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060004, // 0001 JMPF R1 #0007 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x8C040301, // 0003 GETMET R1 R1 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x80040200, // 0005 RET 1 R1 - 0x70020008, // 0006 JMP #0010 - 0x88040102, // 0007 GETMBR R1 R0 K2 - 0x74060004, // 0008 JMPT R1 #000E - 0xA4060600, // 0009 IMPORT R1 K3 - 0x8C080304, // 000A GETMET R2 R1 K4 - 0x5412001F, // 000B LDINT R4 32 - 0x7C080400, // 000C CALL R2 2 - 0x90020402, // 000D SETMBR R0 K2 R2 - 0x88040102, // 000E GETMBR R1 R0 K2 - 0x80040200, // 000F RET 1 R1 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_mode_PASE -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_set_mode_PASE, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_mode), - /* K1 */ be_nested_str_weak(_PASE), - }), - be_str_weak(set_mode_PASE), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_mode -********************************************************************/ -extern const bclass be_class_Matter_Session; -be_local_closure(class_Matter_Session_set_mode, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Session, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - }), - be_str_weak(set_mode), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Session ********************************************************************/ @@ -1832,92 +1866,93 @@ extern const bclass be_class_Matter_Expirable; be_local_class(Matter_Session, 38, &be_class_Matter_Expirable, - be_nested_map(84, + be_nested_map(85, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(set_mode, 6), be_const_closure(class_Matter_Session_set_mode_closure) }, - { be_const_key_weak(set_mode_PASE, 57), be_const_closure(class_Matter_Session_set_mode_PASE_closure) }, - { be_const_key_weak(_counter_rcv_impl, 79), be_const_var(14) }, - { be_const_key_weak(attestation_challenge, 56), be_const_var(25) }, - { be_const_key_weak(get_ac, -1), be_const_closure(class_Matter_Session_get_ac_closure) }, - { be_const_key_weak(get_fabric, -1), be_const_closure(class_Matter_Session_get_fabric_closure) }, - { be_const_key_weak(get_temp_ca, 69), be_const_closure(class_Matter_Session_get_temp_ca_closure) }, - { be_const_key_weak(_COUNTER_SND_INCR, -1), be_const_int(1024) }, - { be_const_key_weak(_CASE, -1), be_const_int(2) }, - { be_const_key_weak(_counter_insecure_rcv, 2), be_const_var(20) }, - { be_const_key_weak(_breadcrumb, -1), be_const_var(27) }, - { be_const_key_weak(r2ikey, 82), be_const_var(23) }, - { be_const_key_weak(set_keys, 52), be_const_closure(class_Matter_Session_set_keys_closure) }, - { be_const_key_weak(_exchange_id, -1), be_const_var(16) }, - { be_const_key_weak(peer_node_id, 8), be_const_var(26) }, - { be_const_key_weak(last_used, 80), be_const_var(6) }, - { be_const_key_weak(_source_node_id, 48), be_const_var(7) }, - { be_const_key_weak(init, 36), be_const_closure(class_Matter_Session_init_closure) }, - { be_const_key_weak(set_temp_ca, -1), be_const_closure(class_Matter_Session_set_temp_ca_closure) }, - { be_const_key_weak(created, -1), be_const_var(5) }, - { be_const_key_weak(persist_to_fabric, -1), be_const_closure(class_Matter_Session_persist_to_fabric_closure) }, - { be_const_key_weak(__initiator_pub, -1), be_const_var(32) }, - { be_const_key_weak(gen_CSR, -1), be_const_closure(class_Matter_Session_gen_CSR_closure) }, - { be_const_key_weak(_store, -1), be_const_var(0) }, - { be_const_key_weak(get_ipk_epoch_key, 49), be_const_closure(class_Matter_Session_get_ipk_epoch_key_closure) }, - { be_const_key_weak(__responder_priv, 7), be_const_var(30) }, - { be_const_key_weak(counter_rcv_validate, -1), be_const_closure(class_Matter_Session_counter_rcv_validate_closure) }, - { be_const_key_weak(_ip, -1), be_const_var(17) }, - { be_const_key_weak(get_admin_subject, 40), be_const_closure(class_Matter_Session_get_admin_subject_closure) }, - { be_const_key_weak(resumption_id, -1), be_const_var(28) }, - { be_const_key_weak(_i2r_privacy, -1), be_const_var(24) }, - { be_const_key_weak(get_fabric_compressed, -1), be_const_closure(class_Matter_Session_get_fabric_compressed_closure) }, { be_const_key_weak(_temp_pk, -1), be_const_var(9) }, - { be_const_key_weak(shared_secret, 74), be_const_var(29) }, - { be_const_key_weak(_temp_root_ca_certificate, -1), be_const_var(8) }, - { be_const_key_weak(get_ca, -1), be_const_closure(class_Matter_Session_get_ca_closure) }, - { be_const_key_weak(_fabric, 10), be_const_var(2) }, - { be_const_key_weak(__spake_cA, -1), be_const_var(33) }, - { be_const_key_weak(get_ipk_group_key, -1), be_const_closure(class_Matter_Session_get_ipk_group_key_closure) }, - { be_const_key_weak(initiator_session_id, 18), be_const_var(4) }, - { be_const_key_weak(get_i2r_privacy, -1), be_const_closure(class_Matter_Session_get_i2r_privacy_closure) }, - { be_const_key_weak(__chunked_attr_reports, -1), be_const_var(37) }, - { be_const_key_weak(get_ca_pub, -1), be_const_closure(class_Matter_Session_get_ca_pub_closure) }, - { be_const_key_weak(counter_snd, 20), be_const_var(13) }, - { be_const_key_weak(set_fabric_label, 35), be_const_closure(class_Matter_Session_set_fabric_label_closure) }, - { be_const_key_weak(_counter_snd_impl, 71), be_const_var(15) }, - { be_const_key_weak(is_CASE, -1), be_const_closure(class_Matter_Session_is_CASE_closure) }, - { be_const_key_weak(before_remove, -1), be_const_closure(class_Matter_Session_before_remove_closure) }, + { be_const_key_weak(get_device_id, -1), be_const_closure(class_Matter_Session_get_device_id_closure) }, + { be_const_key_weak(_exchange_id, 46), be_const_var(16) }, + { be_const_key_weak(_PASE, 37), be_const_int(1) }, { be_const_key_weak(set_mode_CASE, -1), be_const_closure(class_Matter_Session_set_mode_CASE_closure) }, - { be_const_key_weak(get_icac, -1), be_const_closure(class_Matter_Session_get_icac_closure) }, - { be_const_key_weak(tojson, 61), be_const_closure(class_Matter_Session_tojson_closure) }, - { be_const_key_weak(close, 1), be_const_closure(class_Matter_Session_close_closure) }, - { be_const_key_weak(get_fabric_label, 42), be_const_closure(class_Matter_Session_get_fabric_label_closure) }, - { be_const_key_weak(_counter_insecure_snd, -1), be_const_var(21) }, - { be_const_key_weak(get_device_id, 63), be_const_closure(class_Matter_Session_get_device_id_closure) }, - { be_const_key_weak(counter_rcv, 62), be_const_var(12) }, - { be_const_key_weak(__Msg1, -1), be_const_var(35) }, - { be_const_key_weak(hydrate_post, 66), be_const_closure(class_Matter_Session_hydrate_post_closure) }, + { be_const_key_weak(get_ipk_group_key, 9), be_const_closure(class_Matter_Session_get_ipk_group_key_closure) }, + { be_const_key_weak(is_CASE, -1), be_const_closure(class_Matter_Session_is_CASE_closure) }, { be_const_key_weak(_message_handler, -1), be_const_var(19) }, - { be_const_key_weak(__future_initiator_session_id, -1), be_const_var(10) }, - { be_const_key_weak(__spake_Ke, 32), be_const_var(34) }, - { be_const_key_weak(__Msg2, 38), be_const_var(36) }, - { be_const_key_weak(get_mode, -1), be_const_closure(class_Matter_Session_get_mode_closure) }, + { be_const_key_weak(persist_to_fabric, 2), be_const_closure(class_Matter_Session_persist_to_fabric_closure) }, { be_const_key_weak(mode, -1), be_const_var(1) }, - { be_const_key_weak(update, 16), be_const_closure(class_Matter_Session_update_closure) }, - { be_const_key_weak(counter_snd_next, -1), be_const_closure(class_Matter_Session_counter_snd_next_closure) }, - { be_const_key_weak(get_temp_ca_pub, -1), be_const_closure(class_Matter_Session_get_temp_ca_pub_closure) }, - { be_const_key_weak(get_i2r, -1), be_const_closure(class_Matter_Session_get_i2r_closure) }, - { be_const_key_weak(get_noc, 37), be_const_closure(class_Matter_Session_get_noc_closure) }, - { be_const_key_weak(get_fabric_id, -1), be_const_closure(class_Matter_Session_get_fabric_id_closure) }, + { be_const_key_weak(before_remove, 58), be_const_closure(class_Matter_Session_before_remove_closure) }, + { be_const_key_weak(gen_CSR, 41), be_const_closure(class_Matter_Session_gen_CSR_closure) }, + { be_const_key_weak(__responder_pub, 23), be_const_var(31) }, + { be_const_key_weak(i2rkey, 83), be_const_var(22) }, + { be_const_key_weak(_port, 29), be_const_var(18) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Session_init_closure) }, { be_const_key_weak(get_admin_vendor, -1), be_const_closure(class_Matter_Session_get_admin_vendor_closure) }, - { be_const_key_weak(is_PASE, -1), be_const_closure(class_Matter_Session_is_PASE_closure) }, - { be_const_key_weak(save, 21), be_const_closure(class_Matter_Session_save_closure) }, - { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) }, - { be_const_key_weak(local_session_id, 76), be_const_var(3) }, - { be_const_key_weak(i2rkey, 17), be_const_var(22) }, + { be_const_key_weak(get_i2r, -1), be_const_closure(class_Matter_Session_get_i2r_closure) }, + { be_const_key_weak(_fabric, 73), be_const_var(2) }, + { be_const_key_weak(local_session_id, 84), be_const_var(3) }, + { be_const_key_weak(counter_rcv_validate, -1), be_const_closure(class_Matter_Session_counter_rcv_validate_closure) }, + { be_const_key_weak(get_ca, -1), be_const_closure(class_Matter_Session_get_ca_closure) }, + { be_const_key_weak(__responder_priv, -1), be_const_var(30) }, + { be_const_key_weak(_counter_snd_impl, -1), be_const_var(15) }, + { be_const_key_weak(__spake_cA, 67), be_const_var(33) }, + { be_const_key_weak(__future_initiator_session_id, -1), be_const_var(10) }, { be_const_key_weak(__future_local_session_id, -1), be_const_var(11) }, - { be_const_key_weak(_PASE, -1), be_const_int(1) }, - { be_const_key_weak(get_fabric_index, -1), be_const_closure(class_Matter_Session_get_fabric_index_closure) }, - { be_const_key_weak(_port, -1), be_const_var(18) }, - { be_const_key_weak(get_r2i, -1), be_const_closure(class_Matter_Session_get_r2i_closure) }, + { be_const_key_weak(set_mode, -1), be_const_closure(class_Matter_Session_set_mode_closure) }, + { be_const_key_weak(counter_snd_next, -1), be_const_closure(class_Matter_Session_counter_snd_next_closure) }, + { be_const_key_weak(set_temp_ca, 33), be_const_closure(class_Matter_Session_set_temp_ca_closure) }, + { be_const_key_weak(get_temp_ca_pub, -1), be_const_closure(class_Matter_Session_get_temp_ca_pub_closure) }, + { be_const_key_weak(get_temp_ca, 54), be_const_closure(class_Matter_Session_get_temp_ca_closure) }, + { be_const_key_weak(get_fabric_id, -1), be_const_closure(class_Matter_Session_get_fabric_id_closure) }, + { be_const_key_weak(get_mode, -1), be_const_closure(class_Matter_Session_get_mode_closure) }, + { be_const_key_weak(initiator_session_id, 22), be_const_var(4) }, + { be_const_key_weak(set_mode_PASE, -1), be_const_closure(class_Matter_Session_set_mode_PASE_closure) }, + { be_const_key_weak(get_fabric_compressed, 43), be_const_closure(class_Matter_Session_get_fabric_compressed_closure) }, + { be_const_key_weak(__Msg2, -1), be_const_var(36) }, + { be_const_key_weak(_counter_insecure_snd, 26), be_const_var(21) }, + { be_const_key_weak(get_fabric_label, 52), be_const_closure(class_Matter_Session_get_fabric_label_closure) }, + { be_const_key_weak(last_used, -1), be_const_var(6) }, + { be_const_key_weak(close, -1), be_const_closure(class_Matter_Session_close_closure) }, + { be_const_key_weak(counter_snd, 74), be_const_var(13) }, + { be_const_key_weak(_store, -1), be_const_var(0) }, + { be_const_key_weak(_breadcrumb, 72), be_const_var(27) }, + { be_const_key_weak(_counter_insecure_rcv, -1), be_const_var(20) }, + { be_const_key_weak(get_ac, -1), be_const_closure(class_Matter_Session_get_ac_closure) }, + { be_const_key_weak(set_fabric_label, -1), be_const_closure(class_Matter_Session_set_fabric_label_closure) }, + { be_const_key_weak(get_node_id, -1), be_const_closure(class_Matter_Session_get_node_id_closure) }, + { be_const_key_weak(get_ca_pub, -1), be_const_closure(class_Matter_Session_get_ca_pub_closure) }, + { be_const_key_weak(_COUNTER_SND_INCR, 55), be_const_int(1024) }, + { be_const_key_weak(tojson, -1), be_const_closure(class_Matter_Session_tojson_closure) }, + { be_const_key_weak(hydrate_post, -1), be_const_closure(class_Matter_Session_hydrate_post_closure) }, + { be_const_key_weak(__spake_Ke, 36), be_const_var(34) }, + { be_const_key_weak(_i2r_privacy, -1), be_const_var(24) }, + { be_const_key_weak(get_fabric, 71), be_const_closure(class_Matter_Session_get_fabric_closure) }, + { be_const_key_weak(__chunked_attr_reports, -1), be_const_var(37) }, + { be_const_key_weak(_source_node_id, 66), be_const_var(7) }, + { be_const_key_weak(get_i2r_privacy, 19), be_const_closure(class_Matter_Session_get_i2r_privacy_closure) }, + { be_const_key_weak(_CASE, 57), be_const_int(2) }, + { be_const_key_weak(fromjson, -1), be_const_static_closure(class_Matter_Session_fromjson_closure) }, + { be_const_key_weak(get_noc, 60), be_const_closure(class_Matter_Session_get_noc_closure) }, + { be_const_key_weak(save, -1), be_const_closure(class_Matter_Session_save_closure) }, + { be_const_key_weak(counter_rcv, -1), be_const_var(12) }, + { be_const_key_weak(update, 56), be_const_closure(class_Matter_Session_update_closure) }, + { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) }, + { be_const_key_weak(peer_node_id, -1), be_const_var(26) }, + { be_const_key_weak(__Msg1, 82), be_const_var(35) }, + { be_const_key_weak(get_admin_subject, -1), be_const_closure(class_Matter_Session_get_admin_subject_closure) }, + { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(class_Matter_Session_get_ipk_epoch_key_closure) }, + { be_const_key_weak(__initiator_pub, -1), be_const_var(32) }, { be_const_key_weak(get_pk, -1), be_const_closure(class_Matter_Session_get_pk_closure) }, - { be_const_key_weak(__responder_pub, -1), be_const_var(31) }, - { be_const_key_weak(fromjson, 0), be_const_static_closure(class_Matter_Session_fromjson_closure) }, + { be_const_key_weak(is_PASE, -1), be_const_closure(class_Matter_Session_is_PASE_closure) }, + { be_const_key_weak(get_icac, -1), be_const_closure(class_Matter_Session_get_icac_closure) }, + { be_const_key_weak(resumption_id, -1), be_const_var(28) }, + { be_const_key_weak(_ip, 27), be_const_var(17) }, + { be_const_key_weak(set_keys, -1), be_const_closure(class_Matter_Session_set_keys_closure) }, + { be_const_key_weak(r2ikey, 25), be_const_var(23) }, + { be_const_key_weak(attestation_challenge, 5), be_const_var(25) }, + { be_const_key_weak(created, -1), be_const_var(5) }, + { be_const_key_weak(_temp_root_ca_certificate, -1), be_const_var(8) }, + { be_const_key_weak(get_r2i, 11), be_const_closure(class_Matter_Session_get_r2i_closure) }, + { be_const_key_weak(get_fabric_index, -1), be_const_closure(class_Matter_Session_get_fabric_index_closure) }, + { be_const_key_weak(_counter_rcv_impl, -1), be_const_var(14) }, + { be_const_key_weak(shared_secret, -1), be_const_var(29) }, })), be_str_weak(Matter_Session) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index d7855d907..f045923c7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -7,137 +7,12 @@ extern const bclass be_class_Matter_Device; /******************************************************************** -** Solidified function: mdns_remove_op_discovery +** Solidified function: save_before_restart ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ +be_local_closure(class_Matter_Device_save_before_restart, /* name */ be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(eth), - /* K9 */ be_nested_str_weak(find), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(remove_service), - /* K15 */ be_nested_str_weak(_matter), - /* K16 */ be_nested_str_weak(_tcp), - /* K17 */ be_nested_str_weak(hostname_eth), - /* K18 */ be_nested_str_weak(wifi), - /* K19 */ be_nested_str_weak(hostname_wifi), - /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K21 */ be_nested_str_weak(_X7C), - /* K22 */ be_const_int(2), - }), - be_str_weak(mdns_remove_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x8C180D08, // 0011 GETMET R6 R6 K8 - 0x7C180200, // 0012 CALL R6 1 - 0x8C180D09, // 0013 GETMET R6 R6 K9 - 0x5820000A, // 0014 LDCONST R8 K10 - 0x7C180400, // 0015 CALL R6 2 - 0x781A000D, // 0016 JMPF R6 #0025 - 0xB81A1600, // 0017 GETNGBL R6 K11 - 0x601C0018, // 0018 GETGBL R7 G24 - 0x5820000C, // 0019 LDCONST R8 K12 - 0x58240008, // 001A LDCONST R9 K8 - 0x5C280A00, // 001B MOVE R10 R5 - 0x7C1C0600, // 001C CALL R7 3 - 0x5820000D, // 001D LDCONST R8 K13 - 0x7C180400, // 001E CALL R6 2 - 0x8C18050E, // 001F GETMET R6 R2 K14 - 0x5820000F, // 0020 LDCONST R8 K15 - 0x58240010, // 0021 LDCONST R9 K16 - 0x5C280A00, // 0022 MOVE R10 R5 - 0x882C0111, // 0023 GETMBR R11 R0 K17 - 0x7C180A00, // 0024 CALL R6 5 - 0xB81A0E00, // 0025 GETNGBL R6 K7 - 0x8C180D12, // 0026 GETMET R6 R6 K18 - 0x7C180200, // 0027 CALL R6 1 - 0x8C180D09, // 0028 GETMET R6 R6 K9 - 0x5820000A, // 0029 LDCONST R8 K10 - 0x7C180400, // 002A CALL R6 2 - 0x781A000D, // 002B JMPF R6 #003A - 0xB81A1600, // 002C GETNGBL R6 K11 - 0x601C0018, // 002D GETGBL R7 G24 - 0x5820000C, // 002E LDCONST R8 K12 - 0x58240012, // 002F LDCONST R9 K18 - 0x5C280A00, // 0030 MOVE R10 R5 - 0x7C1C0600, // 0031 CALL R7 3 - 0x5820000D, // 0032 LDCONST R8 K13 - 0x7C180400, // 0033 CALL R6 2 - 0x8C18050E, // 0034 GETMET R6 R2 K14 - 0x5820000F, // 0035 LDCONST R8 K15 - 0x58240010, // 0036 LDCONST R9 K16 - 0x5C280A00, // 0037 MOVE R10 R5 - 0x882C0113, // 0038 GETMBR R11 R0 K19 - 0x7C180A00, // 0039 CALL R6 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC0C0002, // 003C CATCH R3 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8161600, // 003E GETNGBL R5 K11 - 0x60180008, // 003F GETGBL R6 G8 - 0x5C1C0600, // 0040 MOVE R7 R3 - 0x7C180200, // 0041 CALL R6 1 - 0x001A2806, // 0042 ADD R6 K20 R6 - 0x00180D15, // 0043 ADD R6 R6 K21 - 0x601C0008, // 0044 GETGBL R7 G8 - 0x5C200800, // 0045 MOVE R8 R4 - 0x7C1C0200, // 0046 CALL R7 1 - 0x00180C07, // 0047 ADD R6 R6 R7 - 0x581C0016, // 0048 LDCONST R7 K22 - 0x7C140400, // 0049 CALL R5 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start, /* name */ - be_nested_proto( - 4, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -145,218 +20,18 @@ be_local_closure(class_Matter_Device_start, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(started), - /* K1 */ be_nested_str_weak(autoconf_device), - /* K2 */ be_nested_str_weak(_start_udp), - /* K3 */ be_nested_str_weak(UDP_PORT), - /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(stop_basic_commissioning), + /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), }), - be_str_weak(start), + be_str_weak(save_before_restart), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x8C040104, // 0008 GETMET R1 R0 K4 - 0x7C040200, // 0009 CALL R1 1 - 0x50040200, // 000A LDBOOL R1 1 0 - 0x90020001, // 000B SETMBR R0 K0 R1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_PASE -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(mdns_pase_eth), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K4 */ be_nested_str_weak(_matterc), - /* K5 */ be_nested_str_weak(_udp), - /* K6 */ be_nested_str_weak(commissioning_instance_eth), - /* K7 */ be_nested_str_weak(hostname_eth), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K10 */ be_nested_str_weak(eth), - /* K11 */ be_nested_str_weak(remove_service), - /* K12 */ be_nested_str_weak(mdns_pase_wifi), - /* K13 */ be_nested_str_weak(commissioning_instance_wifi), - /* K14 */ be_nested_str_weak(hostname_wifi), - /* K15 */ be_nested_str_weak(wifi), - /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K17 */ be_nested_str_weak(_X7C), - /* K18 */ be_const_int(2), - }), - be_str_weak(mdns_remove_PASE), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A0019, // 0003 JMPF R2 #001E - 0xB80A0400, // 0004 GETNGBL R2 K2 - 0x600C0018, // 0005 GETGBL R3 G24 - 0x58100003, // 0006 LDCONST R4 K3 - 0x58140004, // 0007 LDCONST R5 K4 - 0x58180005, // 0008 LDCONST R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x88200107, // 000A GETMBR R8 R0 K7 - 0x7C0C0A00, // 000B CALL R3 5 - 0x58100008, // 000C LDCONST R4 K8 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0400, // 000E GETNGBL R2 K2 - 0x600C0018, // 000F GETGBL R3 G24 - 0x58100009, // 0010 LDCONST R4 K9 - 0x5814000A, // 0011 LDCONST R5 K10 - 0x88180106, // 0012 GETMBR R6 R0 K6 - 0x7C0C0600, // 0013 CALL R3 3 - 0x58100008, // 0014 LDCONST R4 K8 - 0x7C080400, // 0015 CALL R2 2 - 0x50080000, // 0016 LDBOOL R2 0 0 - 0x90020202, // 0017 SETMBR R0 K1 R2 - 0x8C08030B, // 0018 GETMET R2 R1 K11 - 0x58100004, // 0019 LDCONST R4 K4 - 0x58140005, // 001A LDCONST R5 K5 - 0x88180106, // 001B GETMBR R6 R0 K6 - 0x881C0107, // 001C GETMBR R7 R0 K7 - 0x7C080A00, // 001D CALL R2 5 - 0x8808010C, // 001E GETMBR R2 R0 K12 - 0x780A0019, // 001F JMPF R2 #003A - 0xB80A0400, // 0020 GETNGBL R2 K2 - 0x600C0018, // 0021 GETGBL R3 G24 - 0x58100003, // 0022 LDCONST R4 K3 - 0x58140004, // 0023 LDCONST R5 K4 - 0x58180005, // 0024 LDCONST R6 K5 - 0x881C010D, // 0025 GETMBR R7 R0 K13 - 0x8820010E, // 0026 GETMBR R8 R0 K14 - 0x7C0C0A00, // 0027 CALL R3 5 - 0x58100008, // 0028 LDCONST R4 K8 - 0x7C080400, // 0029 CALL R2 2 - 0xB80A0400, // 002A GETNGBL R2 K2 - 0x600C0018, // 002B GETGBL R3 G24 - 0x58100009, // 002C LDCONST R4 K9 - 0x5814000F, // 002D LDCONST R5 K15 - 0x8818010D, // 002E GETMBR R6 R0 K13 - 0x7C0C0600, // 002F CALL R3 3 - 0x58100008, // 0030 LDCONST R4 K8 - 0x7C080400, // 0031 CALL R2 2 - 0x50080000, // 0032 LDBOOL R2 0 0 - 0x90021802, // 0033 SETMBR R0 K12 R2 - 0x8C08030B, // 0034 GETMET R2 R1 K11 - 0x58100004, // 0035 LDCONST R4 K4 - 0x58140005, // 0036 LDCONST R5 K5 - 0x8818010D, // 0037 GETMBR R6 R0 K13 - 0x881C010E, // 0038 GETMBR R7 R0 K14 - 0x7C080A00, // 0039 CALL R2 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC080002, // 003C CATCH R2 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8120400, // 003E GETNGBL R4 K2 - 0x60140008, // 003F GETGBL R5 G8 - 0x5C180400, // 0040 MOVE R6 R2 - 0x7C140200, // 0041 CALL R5 1 - 0x00162005, // 0042 ADD R5 K16 R5 - 0x00140B11, // 0043 ADD R5 R5 K17 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x00140A06, // 0047 ADD R5 R5 R6 - 0x58180012, // 0048 LDCONST R6 K18 - 0x7C100400, // 0049 CALL R4 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_random_passcode -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(134217727), - /* K5 */ be_const_int(99999998), - /* K6 */ be_nested_str_weak(PASSCODE_INVALID), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(generate_random_passcode), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x780E001D, // 0003 JMPF R3 #0022 - 0x8C0C0301, // 0004 GETMET R3 R1 K1 - 0x54160003, // 0005 LDINT R5 4 - 0x7C0C0400, // 0006 CALL R3 2 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 - 0x58140003, // 0008 LDCONST R5 K3 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x2C0C0704, // 000B AND R3 R3 K4 - 0x5C080600, // 000C MOVE R2 R3 - 0x240C0505, // 000D GT R3 R2 K5 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7001FFF1, // 000F JMP #0002 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x1C140404, // 0016 EQ R5 R2 R4 - 0x78160000, // 0017 JMPF R5 #0019 - 0x4C080000, // 0018 LDNIL R2 - 0x7001FFF9, // 0019 JMP #0014 - 0x580C0007, // 001A LDCONST R3 K7 - 0xAC0C0200, // 001B CATCH R3 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x4C0C0000, // 001D LDNIL R3 - 0x200C0403, // 001E NE R3 R2 R3 - 0x780E0000, // 001F JMPF R3 #0021 - 0x80040400, // 0020 RET 1 R2 - 0x7001FFDF, // 0021 JMP #0002 - 0x80000000, // 0022 RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x80000000, // 0004 RET 0 }) ) ); @@ -407,2451 +82,45 @@ be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ /******************************************************************** -** Solidified function: conf_to_log +** Solidified function: find_plugin_by_endpoint ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_conf_to_log, /* name */ +be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(k2l), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(conf_to_log), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x58080001, // 0001 LDCONST R2 K1 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100302, // 0003 GETMET R4 R1 K2 - 0x5C180000, // 0004 MOVE R6 R0 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA802000B, // 0007 EXBLK 0 #0014 - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x1C140903, // 000A EQ R5 R4 K3 - 0x78160000, // 000B JMPF R5 #000D - 0x7001FFFA, // 000C JMP #0008 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180004, // 000E LDCONST R6 K4 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x94200004, // 0010 GETIDX R8 R0 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x00080405, // 0012 ADD R2 R2 R5 - 0x7001FFF3, // 0013 JMP #0008 - 0x580C0005, // 0014 LDCONST R3 K5 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x80040400, // 0017 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_invoke_request, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(invoke_request), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0x88140701, // 0001 GETMBR R5 R3 K1 - 0x6018000C, // 0002 GETGBL R6 G12 - 0x881C0102, // 0003 GETMBR R7 R0 K2 - 0x7C180200, // 0004 CALL R6 1 - 0x14180806, // 0005 LT R6 R4 R6 - 0x781A000C, // 0006 JMPF R6 #0014 - 0x88180102, // 0007 GETMBR R6 R0 K2 - 0x94180C04, // 0008 GETIDX R6 R6 R4 - 0x881C0D01, // 0009 GETMBR R7 R6 K1 - 0x1C1C0E05, // 000A EQ R7 R7 R5 - 0x781E0005, // 000B JMPF R7 #0012 - 0x8C1C0D03, // 000C GETMET R7 R6 K3 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280400, // 000E MOVE R10 R2 - 0x5C2C0600, // 000F MOVE R11 R3 - 0x7C1C0800, // 0010 CALL R7 4 - 0x80040E00, // 0011 RET 1 R7 - 0x00100904, // 0012 ADD R4 R4 K4 - 0x7001FFED, // 0013 JMP #0002 - 0xB81A0C00, // 0014 GETNGBL R6 K6 - 0x88180D07, // 0015 GETMBR R6 R6 K7 - 0x900E0A06, // 0016 SETMBR R3 K5 R6 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _instantiate_plugins_from_config -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ - be_nested_proto( - 17, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l_num), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(Plugin_Root), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), - /* K10 */ be_nested_str_weak(root), - /* K11 */ be_nested_str_weak(), - /* K12 */ be_nested_str_weak(Plugin_Aggregator), - /* K13 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K14 */ be_nested_str_weak(aggregator), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(type), - /* K17 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), - /* K20 */ be_nested_str_weak(plugins_classes), - /* K21 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K22 */ be_nested_str_weak(_X27_X20skipping), - /* K23 */ be_nested_str_weak(conf_to_log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_nested_str_weak(stop_iteration), - /* K27 */ be_nested_str_weak(tasmota), - /* K28 */ be_nested_str_weak(publish_result), - /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), - /* K30 */ be_nested_str_weak(Matter), - }), - be_str_weak(_instantiate_plugins_from_config), - &be_const_str_solidified, - ( &(const binstruction[146]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0xB80E0200, // 0003 GETNGBL R3 K1 - 0x58100002, // 0004 LDCONST R4 K2 - 0x58140003, // 0005 LDCONST R5 K3 - 0x7C0C0400, // 0006 CALL R3 2 - 0x880C0104, // 0007 GETMBR R3 R0 K4 - 0x8C0C0705, // 0008 GETMET R3 R3 K5 - 0xB8160C00, // 0009 GETNGBL R5 K6 - 0x8C140B07, // 000A GETMET R5 R5 K7 - 0x5C1C0000, // 000B MOVE R7 R0 - 0x58200008, // 000C LDCONST R8 K8 - 0x60240013, // 000D GETGBL R9 G19 - 0x7C240000, // 000E CALL R9 0 - 0x7C140800, // 000F CALL R5 4 - 0x7C0C0400, // 0010 CALL R3 2 - 0xB80E0200, // 0011 GETNGBL R3 K1 - 0x60100018, // 0012 GETGBL R4 G24 - 0x58140009, // 0013 LDCONST R5 K9 - 0x58180008, // 0014 LDCONST R6 K8 - 0x581C000A, // 0015 LDCONST R7 K10 - 0x5820000B, // 0016 LDCONST R8 K11 - 0x7C100800, // 0017 CALL R4 4 - 0x58140003, // 0018 LDCONST R5 K3 - 0x7C0C0400, // 0019 CALL R3 2 - 0x880C0104, // 001A GETMBR R3 R0 K4 - 0x8C0C0705, // 001B GETMET R3 R3 K5 - 0xB8160C00, // 001C GETNGBL R5 K6 - 0x8C140B0C, // 001D GETMET R5 R5 K12 - 0x5C1C0000, // 001E MOVE R7 R0 - 0xB8220C00, // 001F GETNGBL R8 K6 - 0x8820110D, // 0020 GETMBR R8 R8 K13 - 0x60240013, // 0021 GETGBL R9 G19 - 0x7C240000, // 0022 CALL R9 0 - 0x7C140800, // 0023 CALL R5 4 - 0x7C0C0400, // 0024 CALL R3 2 - 0xB80E0200, // 0025 GETNGBL R3 K1 - 0x60100018, // 0026 GETGBL R4 G24 - 0x58140009, // 0027 LDCONST R5 K9 - 0xB81A0C00, // 0028 GETNGBL R6 K6 - 0x88180D0D, // 0029 GETMBR R6 R6 K13 - 0x581C000E, // 002A LDCONST R7 K14 - 0x5820000B, // 002B LDCONST R8 K11 - 0x7C100800, // 002C CALL R4 4 - 0x58140003, // 002D LDCONST R5 K3 - 0x7C0C0400, // 002E CALL R3 2 - 0x600C0010, // 002F GETGBL R3 G16 - 0x5C100400, // 0030 MOVE R4 R2 - 0x7C0C0200, // 0031 CALL R3 1 - 0xA8020055, // 0032 EXBLK 0 #0089 - 0x5C100600, // 0033 MOVE R4 R3 - 0x7C100000, // 0034 CALL R4 0 - 0x1C140908, // 0035 EQ R5 R4 K8 - 0x78160000, // 0036 JMPF R5 #0038 - 0x7001FFFA, // 0037 JMP #0033 - 0xA802003E, // 0038 EXBLK 0 #0078 - 0x60140008, // 0039 GETGBL R5 G8 - 0x5C180800, // 003A MOVE R6 R4 - 0x7C140200, // 003B CALL R5 1 - 0x94140205, // 003C GETIDX R5 R1 R5 - 0x8C180B0F, // 003D GETMET R6 R5 K15 - 0x58200010, // 003E LDCONST R8 K16 - 0x7C180400, // 003F CALL R6 2 - 0x4C1C0000, // 0040 LDNIL R7 - 0x1C1C0C07, // 0041 EQ R7 R6 R7 - 0x781E0005, // 0042 JMPF R7 #0049 - 0xB81E0200, // 0043 GETNGBL R7 K1 - 0x58200011, // 0044 LDCONST R8 K17 - 0x58240012, // 0045 LDCONST R9 K18 - 0x7C1C0400, // 0046 CALL R7 2 - 0xA8040001, // 0047 EXBLK 1 1 - 0x7001FFE9, // 0048 JMP #0033 - 0x1C1C0D0A, // 0049 EQ R7 R6 K10 - 0x781E0005, // 004A JMPF R7 #0051 - 0xB81E0200, // 004B GETNGBL R7 K1 - 0x58200013, // 004C LDCONST R8 K19 - 0x58240012, // 004D LDCONST R9 K18 - 0x7C1C0400, // 004E CALL R7 2 - 0xA8040001, // 004F EXBLK 1 1 - 0x7001FFE1, // 0050 JMP #0033 - 0x881C0114, // 0051 GETMBR R7 R0 K20 - 0x8C1C0F0F, // 0052 GETMET R7 R7 K15 - 0x5C240C00, // 0053 MOVE R9 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x4C200000, // 0055 LDNIL R8 - 0x1C200E08, // 0056 EQ R8 R7 R8 - 0x78220009, // 0057 JMPF R8 #0062 - 0xB8220200, // 0058 GETNGBL R8 K1 - 0x60240008, // 0059 GETGBL R9 G8 - 0x5C280C00, // 005A MOVE R10 R6 - 0x7C240200, // 005B CALL R9 1 - 0x00262A09, // 005C ADD R9 K21 R9 - 0x00241316, // 005D ADD R9 R9 K22 - 0x58280003, // 005E LDCONST R10 K3 - 0x7C200400, // 005F CALL R8 2 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7001FFD0, // 0061 JMP #0033 - 0x5C200E00, // 0062 MOVE R8 R7 - 0x5C240000, // 0063 MOVE R9 R0 - 0x5C280800, // 0064 MOVE R10 R4 - 0x5C2C0A00, // 0065 MOVE R11 R5 - 0x7C200600, // 0066 CALL R8 3 - 0x88240104, // 0067 GETMBR R9 R0 K4 - 0x8C241305, // 0068 GETMET R9 R9 K5 - 0x5C2C1000, // 0069 MOVE R11 R8 - 0x7C240400, // 006A CALL R9 2 - 0xB8260200, // 006B GETNGBL R9 K1 - 0x60280018, // 006C GETGBL R10 G24 - 0x582C0009, // 006D LDCONST R11 K9 - 0x5C300800, // 006E MOVE R12 R4 - 0x5C340C00, // 006F MOVE R13 R6 - 0x8C380117, // 0070 GETMET R14 R0 K23 - 0x5C400A00, // 0071 MOVE R16 R5 - 0x7C380400, // 0072 CALL R14 2 - 0x7C280800, // 0073 CALL R10 4 - 0x582C0003, // 0074 LDCONST R11 K3 - 0x7C240400, // 0075 CALL R9 2 - 0xA8040001, // 0076 EXBLK 1 1 - 0x7002000F, // 0077 JMP #0088 - 0xAC140002, // 0078 CATCH R5 0 2 - 0x7002000C, // 0079 JMP #0087 - 0xB81E0200, // 007A GETNGBL R7 K1 - 0x60200008, // 007B GETGBL R8 G8 - 0x5C240A00, // 007C MOVE R9 R5 - 0x7C200200, // 007D CALL R8 1 - 0x00223008, // 007E ADD R8 K24 R8 - 0x00201119, // 007F ADD R8 R8 K25 - 0x60240008, // 0080 GETGBL R9 G8 - 0x5C280C00, // 0081 MOVE R10 R6 - 0x7C240200, // 0082 CALL R9 1 - 0x00201009, // 0083 ADD R8 R8 R9 - 0x58240003, // 0084 LDCONST R9 K3 - 0x7C1C0400, // 0085 CALL R7 2 - 0x70020000, // 0086 JMP #0088 - 0xB0080000, // 0087 RAISE 2 R0 R0 - 0x7001FFA9, // 0088 JMP #0033 - 0x580C001A, // 0089 LDCONST R3 K26 - 0xAC0C0200, // 008A CATCH R3 1 0 - 0xB0080000, // 008B RAISE 2 R0 R0 - 0xB80E3600, // 008C GETNGBL R3 K27 - 0x8C0C071C, // 008D GETMET R3 R3 K28 - 0x5814001D, // 008E LDCONST R5 K29 - 0x5818001E, // 008F LDCONST R6 K30 - 0x7C0C0600, // 0090 CALL R3 3 - 0x80000000, // 0091 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_250ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(every_250ms), - /* K2 */ be_nested_str_weak(read_sensors_scheduler), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_const_int(1), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x58040003, // 0005 LDCONST R1 K3 - 0x6008000C, // 0006 GETGBL R2 G12 - 0x880C0104, // 0007 GETMBR R3 R0 K4 - 0x7C080200, // 0008 CALL R2 1 - 0x14080202, // 0009 LT R2 R1 R2 - 0x780A0005, // 000A JMPF R2 #0011 - 0x88080104, // 000B GETMBR R2 R0 K4 - 0x94080401, // 000C GETIDX R2 R2 R1 - 0x8C080501, // 000D GETMET R2 R2 K1 - 0x7C080200, // 000E CALL R2 1 - 0x00040305, // 000F ADD R1 R1 K5 - 0x7001FFF4, // 0010 JMP #0006 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_read_sensors_schedule -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(jitter), - }), - be_str_weak(add_read_sensors_schedule), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x740A0002, // 0003 JMPT R2 #0007 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x24080401, // 0005 GT R2 R2 R1 - 0x780A0005, // 0006 JMPF R2 #000D - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x8C080503, // 0009 GETMET R2 R2 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x90020202, // 000C SETMBR R0 K1 R2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - /* K2 */ be_nested_str_weak(udp_server), - /* K3 */ be_nested_str_weak(stop), - }), - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x88040102, // 0004 GETMBR R1 R0 K2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040102, // 0006 GETMBR R1 R0 K2 - 0x8C040303, // 0007 GETMET R1 R1 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_qrcode_content -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(setbits), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(vendorid), - /* K4 */ be_nested_str_weak(productid), - /* K5 */ be_nested_str_weak(root_discriminator), - /* K6 */ be_nested_str_weak(root_passcode), - /* K7 */ be_const_int(134217727), - /* K8 */ be_nested_str_weak(MT_X3A), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(Base38), - /* K11 */ be_nested_str_weak(encode), - }), - be_str_weak(compute_qrcode_content), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 - 0x540E000A, // 0003 LDINT R3 11 - 0x7C040400, // 0004 CALL R1 2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x5416000F, // 0007 LDINT R5 16 - 0x88180103, // 0008 GETMBR R6 R0 K3 - 0x7C080800, // 0009 CALL R2 4 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x54120012, // 000B LDINT R4 19 - 0x5416000F, // 000C LDINT R5 16 - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x7C080800, // 000E CALL R2 4 - 0x8C080301, // 000F GETMET R2 R1 K1 - 0x54120024, // 0010 LDINT R4 37 - 0x54160007, // 0011 LDINT R5 8 - 0x541A0003, // 0012 LDINT R6 4 - 0x7C080800, // 0013 CALL R2 4 - 0x8C080301, // 0014 GETMET R2 R1 K1 - 0x5412002C, // 0015 LDINT R4 45 - 0x5416000B, // 0016 LDINT R5 12 - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x541E0FFE, // 0018 LDINT R7 4095 - 0x2C180C07, // 0019 AND R6 R6 R7 - 0x7C080800, // 001A CALL R2 4 - 0x8C080301, // 001B GETMET R2 R1 K1 - 0x54120038, // 001C LDINT R4 57 - 0x5416001A, // 001D LDINT R5 27 - 0x88180106, // 001E GETMBR R6 R0 K6 - 0x2C180D07, // 001F AND R6 R6 K7 - 0x7C080800, // 0020 CALL R2 4 - 0xB80A1200, // 0021 GETNGBL R2 K9 - 0x8808050A, // 0022 GETMBR R2 R2 K10 - 0x8C08050B, // 0023 GETMET R2 R2 K11 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x000A1002, // 0026 ADD R2 K8 R2 - 0x80040400, // 0027 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: k2l -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_k2l, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(k2l), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020005, // 000B EXBLK 0 #0012 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x7C140400, // 0010 CALL R5 2 - 0x7001FFF9, // 0011 JMP #000C - 0x580C0003, // 0012 LDCONST R3 K3 - 0xAC0C0200, // 0013 CATCH R3 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x600C0010, // 0015 GETGBL R3 G16 - 0x6010000C, // 0016 GETGBL R4 G12 - 0x5C140400, // 0017 MOVE R5 R2 - 0x7C100200, // 0018 CALL R4 1 - 0x04100904, // 0019 SUB R4 R4 K4 - 0x40120804, // 001A CONNECT R4 K4 R4 - 0x7C0C0200, // 001B CALL R3 1 - 0xA8020010, // 001C EXBLK 0 #002E - 0x5C100600, // 001D MOVE R4 R3 - 0x7C100000, // 001E CALL R4 0 - 0x94140404, // 001F GETIDX R5 R2 R4 - 0x5C180800, // 0020 MOVE R6 R4 - 0x241C0D05, // 0021 GT R7 R6 K5 - 0x781E0008, // 0022 JMPF R7 #002C - 0x041C0D04, // 0023 SUB R7 R6 K4 - 0x941C0407, // 0024 GETIDX R7 R2 R7 - 0x241C0E05, // 0025 GT R7 R7 R5 - 0x781E0004, // 0026 JMPF R7 #002C - 0x041C0D04, // 0027 SUB R7 R6 K4 - 0x941C0407, // 0028 GETIDX R7 R2 R7 - 0x98080C07, // 0029 SETIDX R2 R6 R7 - 0x04180D04, // 002A SUB R6 R6 K4 - 0x7001FFF4, // 002B JMP #0021 - 0x98080C05, // 002C SETIDX R2 R6 R5 - 0x7001FFEE, // 002D JMP #001D - 0x580C0003, // 002E LDCONST R3 K3 - 0xAC0C0200, // 002F CATCH R3 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0x80040400, // 0031 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(is_root_commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(publish_result), - /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), - /* K4 */ be_nested_str_weak(Matter), - /* K5 */ be_nested_str_weak(commissioning_open), - /* K6 */ be_nested_str_weak(mdns_remove_PASE), - /* K7 */ be_nested_str_weak(commissioning_iterations), - /* K8 */ be_nested_str_weak(commissioning_discriminator), - /* K9 */ be_nested_str_weak(commissioning_salt), - /* K10 */ be_nested_str_weak(commissioning_w0), - /* K11 */ be_nested_str_weak(commissioning_L), - /* K12 */ be_nested_str_weak(commissioning_admin_fabric), - }), - be_str_weak(stop_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x78060004, // 0002 JMPF R1 #0008 - 0xB8060200, // 0003 GETNGBL R1 K1 - 0x8C040302, // 0004 GETMET R1 R1 K2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x58100004, // 0006 LDCONST R4 K4 - 0x7C040600, // 0007 CALL R1 3 - 0x4C040000, // 0008 LDNIL R1 - 0x90020A01, // 0009 SETMBR R0 K5 R1 - 0x8C040106, // 000A GETMET R1 R0 K6 - 0x7C040200, // 000B CALL R1 1 - 0x4C040000, // 000C LDNIL R1 - 0x90020E01, // 000D SETMBR R0 K7 R1 - 0x4C040000, // 000E LDNIL R1 - 0x90021001, // 000F SETMBR R0 K8 R1 - 0x4C040000, // 0010 LDNIL R1 - 0x90021201, // 0011 SETMBR R0 K9 R1 - 0x4C040000, // 0012 LDNIL R1 - 0x90021401, // 0013 SETMBR R0 K10 R1 - 0x4C040000, // 0014 LDNIL R1 - 0x90021601, // 0015 SETMBR R0 K11 R1 - 0x4C040000, // 0016 LDNIL R1 - 0x90021801, // 0017 SETMBR R0 K12 R1 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrUpdate -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrUpdate, /* name */ - be_nested_proto( - 18, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(resp_cmnd_str), - /* K2 */ be_nested_str_weak(Invalid_X20JSON), - /* K3 */ be_nested_str_weak(find_key_i), - /* K4 */ be_nested_str_weak(Ep), - /* K5 */ be_nested_str_weak(Name), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute), - /* K8 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_nested_str_weak(find_plugin_by_friendly_name), - /* K11 */ be_nested_str_weak(Invalid_X20Device), - /* K12 */ be_nested_str_weak(VIRTUAL), - /* K13 */ be_nested_str_weak(Device_X20is_X20not_X20virtual), - /* K14 */ be_nested_str_weak(consolidate_update_commands), - /* K15 */ be_nested_str_weak(keys), - /* K16 */ be_nested_str_weak(find_list_i), - /* K17 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27), - /* K18 */ be_nested_str_weak(stop_iteration), - /* K19 */ be_nested_str_weak(update_virtual), - /* K20 */ be_nested_str_weak(state_json), - /* K21 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D), - /* K22 */ be_nested_str_weak(resp_cmnd), - /* K23 */ be_nested_str_weak(resp_cmnd_done), - /* K24 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute), - }), - be_str_weak(MtrUpdate), - &be_const_str_solidified, - ( &(const binstruction[126]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160004, // 0002 JMPF R5 #0008 - 0xB8160000, // 0003 GETNGBL R5 K0 - 0x8C140B01, // 0004 GETMET R5 R5 K1 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x7C140400, // 0006 CALL R5 2 - 0x80040A00, // 0007 RET 1 R5 - 0xB8160000, // 0008 GETNGBL R5 K0 - 0x8C140B03, // 0009 GETMET R5 R5 K3 - 0x5C1C0800, // 000A MOVE R7 R4 - 0x58200004, // 000B LDCONST R8 K4 - 0x7C140600, // 000C CALL R5 3 - 0xB81A0000, // 000D GETNGBL R6 K0 - 0x8C180D03, // 000E GETMET R6 R6 K3 - 0x5C200800, // 000F MOVE R8 R4 - 0x58240005, // 0010 LDCONST R9 K5 - 0x7C180600, // 0011 CALL R6 3 - 0x74160000, // 0012 JMPT R5 #0014 - 0x781A0064, // 0013 JMPF R6 #0079 - 0x4C1C0000, // 0014 LDNIL R7 - 0x78160010, // 0015 JMPF R5 #0027 - 0x60200009, // 0016 GETGBL R8 G9 - 0x94240805, // 0017 GETIDX R9 R4 R5 - 0x7C200200, // 0018 CALL R8 1 - 0x18241106, // 0019 LE R9 R8 K6 - 0x78260004, // 001A JMPF R9 #0020 - 0xB8260000, // 001B GETNGBL R9 K0 - 0x8C241301, // 001C GETMET R9 R9 K1 - 0x582C0007, // 001D LDCONST R11 K7 - 0x7C240400, // 001E CALL R9 2 - 0x80041200, // 001F RET 1 R9 - 0x8C240108, // 0020 GETMET R9 R0 K8 - 0x5C2C1000, // 0021 MOVE R11 R8 - 0x7C240400, // 0022 CALL R9 2 - 0x5C1C1200, // 0023 MOVE R7 R9 - 0x8C240909, // 0024 GETMET R9 R4 K9 - 0x5C2C0A00, // 0025 MOVE R11 R5 - 0x7C240400, // 0026 CALL R9 2 - 0x781A0009, // 0027 JMPF R6 #0032 - 0x4C200000, // 0028 LDNIL R8 - 0x1C200E08, // 0029 EQ R8 R7 R8 - 0x78220003, // 002A JMPF R8 #002F - 0x8C20010A, // 002B GETMET R8 R0 K10 - 0x94280806, // 002C GETIDX R10 R4 R6 - 0x7C200400, // 002D CALL R8 2 - 0x5C1C1000, // 002E MOVE R7 R8 - 0x8C200909, // 002F GETMET R8 R4 K9 - 0x5C280C00, // 0030 MOVE R10 R6 - 0x7C200400, // 0031 CALL R8 2 - 0x4C200000, // 0032 LDNIL R8 - 0x1C200E08, // 0033 EQ R8 R7 R8 - 0x78220004, // 0034 JMPF R8 #003A - 0xB8220000, // 0035 GETNGBL R8 K0 - 0x8C201101, // 0036 GETMET R8 R8 K1 - 0x5828000B, // 0037 LDCONST R10 K11 - 0x7C200400, // 0038 CALL R8 2 - 0x80041000, // 0039 RET 1 R8 - 0x88200F0C, // 003A GETMBR R8 R7 K12 - 0x74220004, // 003B JMPT R8 #0041 - 0xB8220000, // 003C GETNGBL R8 K0 - 0x8C201101, // 003D GETMET R8 R8 K1 - 0x5828000D, // 003E LDCONST R10 K13 - 0x7C200400, // 003F CALL R8 2 - 0x80041000, // 0040 RET 1 R8 - 0x8C200F0E, // 0041 GETMET R8 R7 K14 - 0x7C200200, // 0042 CALL R8 1 - 0x60240013, // 0043 GETGBL R9 G19 - 0x7C240000, // 0044 CALL R9 0 - 0x60280010, // 0045 GETGBL R10 G16 - 0x8C2C090F, // 0046 GETMET R11 R4 K15 - 0x7C2C0200, // 0047 CALL R11 1 - 0x7C280200, // 0048 CALL R10 1 - 0xA8020016, // 0049 EXBLK 0 #0061 - 0x5C2C1400, // 004A MOVE R11 R10 - 0x7C2C0000, // 004B CALL R11 0 - 0xB8320000, // 004C GETNGBL R12 K0 - 0x8C301910, // 004D GETMET R12 R12 K16 - 0x5C381000, // 004E MOVE R14 R8 - 0x5C3C1600, // 004F MOVE R15 R11 - 0x7C300600, // 0050 CALL R12 3 - 0x4C340000, // 0051 LDNIL R13 - 0x1C34180D, // 0052 EQ R13 R12 R13 - 0x78360008, // 0053 JMPF R13 #005D - 0xB8360000, // 0054 GETNGBL R13 K0 - 0x8C341B01, // 0055 GETMET R13 R13 K1 - 0x603C0018, // 0056 GETGBL R15 G24 - 0x58400011, // 0057 LDCONST R16 K17 - 0x5C441600, // 0058 MOVE R17 R11 - 0x7C3C0400, // 0059 CALL R15 2 - 0x7C340400, // 005A CALL R13 2 - 0xA8040001, // 005B EXBLK 1 1 - 0x80001A00, // 005C RET 0 - 0x9434100C, // 005D GETIDX R13 R8 R12 - 0x9438080B, // 005E GETIDX R14 R4 R11 - 0x98241A0E, // 005F SETIDX R9 R13 R14 - 0x7001FFE8, // 0060 JMP #004A - 0x58280012, // 0061 LDCONST R10 K18 - 0xAC280200, // 0062 CATCH R10 1 0 - 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x8C280F13, // 0064 GETMET R10 R7 K19 - 0x5C301200, // 0065 MOVE R12 R9 - 0x7C280400, // 0066 CALL R10 2 - 0x8C280F14, // 0067 GETMET R10 R7 K20 - 0x7C280200, // 0068 CALL R10 1 - 0x782A000A, // 0069 JMPF R10 #0075 - 0x602C0018, // 006A GETGBL R11 G24 - 0x58300015, // 006B LDCONST R12 K21 - 0x5C340200, // 006C MOVE R13 R1 - 0x5C381400, // 006D MOVE R14 R10 - 0x7C2C0600, // 006E CALL R11 3 - 0xB8320000, // 006F GETNGBL R12 K0 - 0x8C301916, // 0070 GETMET R12 R12 K22 - 0x5C381600, // 0071 MOVE R14 R11 - 0x7C300400, // 0072 CALL R12 2 - 0x80041800, // 0073 RET 1 R12 - 0x70020003, // 0074 JMP #0079 - 0xB82E0000, // 0075 GETNGBL R11 K0 - 0x8C2C1717, // 0076 GETMET R11 R11 K23 - 0x7C2C0200, // 0077 CALL R11 1 - 0x80041600, // 0078 RET 1 R11 - 0xB81E0000, // 0079 GETNGBL R7 K0 - 0x8C1C0F01, // 007A GETMET R7 R7 K1 - 0x58240018, // 007B LDCONST R9 K24 - 0x7C1C0400, // 007C CALL R7 2 - 0x80000000, // 007D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrJoin -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrJoin, /* name */ - be_nested_proto( - 8, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(start_root_basic_commissioning), - /* K1 */ be_nested_str_weak(stop_basic_commissioning), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrJoin), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60140009, // 0000 GETGBL R5 G9 - 0x5C180600, // 0001 MOVE R6 R3 - 0x7C140200, // 0002 CALL R5 1 - 0x78160002, // 0003 JMPF R5 #0007 - 0x8C180100, // 0004 GETMET R6 R0 K0 - 0x7C180200, // 0005 CALL R6 1 - 0x70020001, // 0006 JMP #0009 - 0x8C180101, // 0007 GETMET R6 R0 K1 - 0x7C180200, // 0008 CALL R6 1 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x8C180D03, // 000A GETMET R6 R6 K3 - 0x7C180200, // 000B CALL R6 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_fabric -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_remove_fabric, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), - /* K2 */ be_nested_str_weak(get_fabric_id), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(reverse), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(message_handler), - /* K8 */ be_nested_str_weak(im), - /* K9 */ be_nested_str_weak(subs_shop), - /* K10 */ be_nested_str_weak(remove_by_fabric), - /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(remove_fabric), - /* K14 */ be_nested_str_weak(save_fabrics), - }), - be_str_weak(remove_fabric), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0018, // 0002 JMPF R2 #001C - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C0C0302, // 0004 GETMET R3 R1 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0705, // 000A GETMET R3 R3 K5 - 0x7C0C0200, // 000B CALL R3 1 - 0x000E0203, // 000C ADD R3 K1 R3 - 0x58100006, // 000D LDCONST R4 K6 - 0x7C080400, // 000E CALL R2 2 - 0x88080107, // 000F GETMBR R2 R0 K7 - 0x88080508, // 0010 GETMBR R2 R2 K8 - 0x88080509, // 0011 GETMBR R2 R2 K9 - 0x8C08050A, // 0012 GETMET R2 R2 K10 - 0x5C100200, // 0013 MOVE R4 R1 - 0x7C080400, // 0014 CALL R2 2 - 0x8C08010B, // 0015 GETMET R2 R0 K11 - 0x5C100200, // 0016 MOVE R4 R1 - 0x7C080400, // 0017 CALL R2 2 - 0x8808010C, // 0018 GETMBR R2 R0 K12 - 0x8C08050D, // 0019 GETMET R2 R2 K13 - 0x5C100200, // 001A MOVE R4 R1 - 0x7C080400, // 001B CALL R2 2 - 0x8808010C, // 001C GETMBR R2 R0 K12 - 0x8C08050E, // 001D GETMET R2 R2 K14 - 0x7C080200, // 001E CALL R2 1 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ - be_nested_proto( - 13, /* nstack */ - 8, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(commissioning_iterations), - /* K4 */ be_nested_str_weak(commissioning_discriminator), - /* K5 */ be_nested_str_weak(commissioning_salt), - /* K6 */ be_nested_str_weak(commissioning_w0), - /* K7 */ be_nested_str_weak(commissioning_L), - /* K8 */ be_nested_str_weak(commissioning_admin_fabric), - /* K9 */ be_nested_str_weak(wifi), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(mdns_announce_PASE), - /* K13 */ be_nested_str_weak(add_rule), - /* K14 */ be_nested_str_weak(Wifi_X23Connected), - /* K15 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xB8220200, // 0000 GETNGBL R8 K1 - 0x8C201102, // 0001 GETMET R8 R8 K2 - 0x7C200200, // 0002 CALL R8 1 - 0x542603E7, // 0003 LDINT R9 1000 - 0x08240209, // 0004 MUL R9 R1 R9 - 0x00201009, // 0005 ADD R8 R8 R9 - 0x90020008, // 0006 SETMBR R0 K0 R8 - 0x90020602, // 0007 SETMBR R0 K3 R2 - 0x90020803, // 0008 SETMBR R0 K4 R3 - 0x90020A04, // 0009 SETMBR R0 K5 R4 - 0x90020C05, // 000A SETMBR R0 K6 R5 - 0x90020E06, // 000B SETMBR R0 K7 R6 - 0x90021007, // 000C SETMBR R0 K8 R7 - 0xB8220200, // 000D GETNGBL R8 K1 - 0x8C201109, // 000E GETMET R8 R8 K9 - 0x7C200200, // 000F CALL R8 1 - 0x9420110A, // 0010 GETIDX R8 R8 K10 - 0x74220004, // 0011 JMPT R8 #0017 - 0xB8220200, // 0012 GETNGBL R8 K1 - 0x8C20110B, // 0013 GETMET R8 R8 K11 - 0x7C200200, // 0014 CALL R8 1 - 0x9420110A, // 0015 GETIDX R8 R8 K10 - 0x78220002, // 0016 JMPF R8 #001A - 0x8C20010C, // 0017 GETMET R8 R0 K12 - 0x7C200200, // 0018 CALL R8 1 - 0x7002000B, // 0019 JMP #0026 - 0xB8220200, // 001A GETNGBL R8 K1 - 0x8C20110D, // 001B GETMET R8 R8 K13 - 0x5828000E, // 001C LDCONST R10 K14 - 0x842C0000, // 001D CLOSURE R11 P0 - 0x5830000C, // 001E LDCONST R12 K12 - 0x7C200800, // 001F CALL R8 4 - 0xB8220200, // 0020 GETNGBL R8 K1 - 0x8C20110D, // 0021 GETMET R8 R8 K13 - 0x5828000F, // 0022 LDCONST R10 K15 - 0x842C0001, // 0023 CLOSURE R11 P1 - 0x5830000C, // 0024 LDCONST R12 K12 - 0x7C200800, // 0025 CALL R8 4 - 0xA0000000, // 0026 CLOSE R0 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_fabrics -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_announce_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_arg -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_arg), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_displayname -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(DISPLAY_NAME), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_displayname), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_init, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[44]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(get_option), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(MATTER_OPTION), - /* K5 */ be_nested_str_weak(UI), - /* K6 */ be_nested_str_weak(profiler), - /* K7 */ be_nested_str_weak(Profiler), - /* K8 */ be_nested_str_weak(started), - /* K9 */ be_nested_str_weak(tick), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(plugins_config_remotes), - /* K14 */ be_nested_str_weak(vendorid), - /* K15 */ be_nested_str_weak(VENDOR_ID), - /* K16 */ be_nested_str_weak(productid), - /* K17 */ be_nested_str_weak(PRODUCT_ID), - /* K18 */ be_nested_str_weak(root_iterations), - /* K19 */ be_nested_str_weak(PBKDF_ITERATIONS), - /* K20 */ be_nested_str_weak(next_ep), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(root_salt), - /* K23 */ be_nested_str_weak(random), - /* K24 */ be_nested_str_weak(ipv4only), - /* K25 */ be_nested_str_weak(disable_bridge_mode), - /* K26 */ be_nested_str_weak(load_param), - /* K27 */ be_nested_str_weak(sessions), - /* K28 */ be_nested_str_weak(Session_Store), - /* K29 */ be_nested_str_weak(load_fabrics), - /* K30 */ be_nested_str_weak(message_handler), - /* K31 */ be_nested_str_weak(MessageHandler), - /* K32 */ be_nested_str_weak(ui), - /* K33 */ be_nested_str_weak(wifi), - /* K34 */ be_nested_str_weak(up), - /* K35 */ be_nested_str_weak(eth), - /* K36 */ be_nested_str_weak(start), - /* K37 */ be_nested_str_weak(add_rule), - /* K38 */ be_nested_str_weak(Wifi_X23Connected), - /* K39 */ be_nested_str_weak(matter_start), - /* K40 */ be_nested_str_weak(Eth_X23Connected), - /* K41 */ be_nested_str_weak(_init_basic_commissioning), - /* K42 */ be_nested_str_weak(add_driver), - /* K43 */ be_nested_str_weak(register_commands), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100904, // 0004 GETMBR R4 R4 K4 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0004, // 0006 JMPT R2 #000C - 0xB80A0600, // 0007 GETNGBL R2 K3 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x5C100000, // 0009 MOVE R4 R0 - 0x7C080400, // 000A CALL R2 2 - 0x80000400, // 000B RET 0 - 0xB80A0600, // 000C GETNGBL R2 K3 - 0xB80E0600, // 000D GETNGBL R3 K3 - 0x8C0C0707, // 000E GETMET R3 R3 K7 - 0x7C0C0200, // 000F CALL R3 1 - 0x900A0C03, // 0010 SETMBR R2 K6 R3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x90021002, // 0012 SETMBR R0 K8 R2 - 0x9002130A, // 0013 SETMBR R0 K9 K10 - 0x60080012, // 0014 GETGBL R2 G18 - 0x7C080000, // 0015 CALL R2 0 - 0x90021602, // 0016 SETMBR R0 K11 R2 - 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90021802, // 0018 SETMBR R0 K12 R2 - 0x60080013, // 0019 GETGBL R2 G19 - 0x7C080000, // 001A CALL R2 0 - 0x90021A02, // 001B SETMBR R0 K13 R2 - 0x8808010F, // 001C GETMBR R2 R0 K15 - 0x90021C02, // 001D SETMBR R0 K14 R2 - 0x88080111, // 001E GETMBR R2 R0 K17 - 0x90022002, // 001F SETMBR R0 K16 R2 - 0x88080113, // 0020 GETMBR R2 R0 K19 - 0x90022402, // 0021 SETMBR R0 K18 R2 - 0x90022915, // 0022 SETMBR R0 K20 K21 - 0x8C080317, // 0023 GETMET R2 R1 K23 - 0x5412000F, // 0024 LDINT R4 16 - 0x7C080400, // 0025 CALL R2 2 - 0x90022C02, // 0026 SETMBR R0 K22 R2 - 0x50080000, // 0027 LDBOOL R2 0 0 - 0x90023002, // 0028 SETMBR R0 K24 R2 - 0x50080000, // 0029 LDBOOL R2 0 0 - 0x90023202, // 002A SETMBR R0 K25 R2 - 0x8C08011A, // 002B GETMET R2 R0 K26 - 0x7C080200, // 002C CALL R2 1 - 0xB80A0600, // 002D GETNGBL R2 K3 - 0x8C08051C, // 002E GETMET R2 R2 K28 - 0x5C100000, // 002F MOVE R4 R0 - 0x7C080400, // 0030 CALL R2 2 - 0x90023602, // 0031 SETMBR R0 K27 R2 - 0x8808011B, // 0032 GETMBR R2 R0 K27 - 0x8C08051D, // 0033 GETMET R2 R2 K29 - 0x7C080200, // 0034 CALL R2 1 - 0xB80A0600, // 0035 GETNGBL R2 K3 - 0x8C08051F, // 0036 GETMET R2 R2 K31 - 0x5C100000, // 0037 MOVE R4 R0 - 0x7C080400, // 0038 CALL R2 2 - 0x90023C02, // 0039 SETMBR R0 K30 R2 - 0xB80A0600, // 003A GETNGBL R2 K3 - 0x8C080505, // 003B GETMET R2 R2 K5 - 0x5C100000, // 003C MOVE R4 R0 - 0x7C080400, // 003D CALL R2 2 - 0x90024002, // 003E SETMBR R0 K32 R2 - 0xB80A0200, // 003F GETNGBL R2 K1 - 0x8C080521, // 0040 GETMET R2 R2 K33 - 0x7C080200, // 0041 CALL R2 1 - 0x94080522, // 0042 GETIDX R2 R2 K34 - 0x740A0004, // 0043 JMPT R2 #0049 - 0xB80A0200, // 0044 GETNGBL R2 K1 - 0x8C080523, // 0045 GETMET R2 R2 K35 - 0x7C080200, // 0046 CALL R2 1 - 0x94080522, // 0047 GETIDX R2 R2 K34 - 0x780A0001, // 0048 JMPF R2 #004B - 0x8C080124, // 0049 GETMET R2 R0 K36 - 0x7C080200, // 004A CALL R2 1 - 0xB80A0200, // 004B GETNGBL R2 K1 - 0x8C080521, // 004C GETMET R2 R2 K33 - 0x7C080200, // 004D CALL R2 1 - 0x94080522, // 004E GETIDX R2 R2 K34 - 0x740A0005, // 004F JMPT R2 #0056 - 0xB80A0200, // 0050 GETNGBL R2 K1 - 0x8C080525, // 0051 GETMET R2 R2 K37 - 0x58100026, // 0052 LDCONST R4 K38 - 0x84140000, // 0053 CLOSURE R5 P0 - 0x58180027, // 0054 LDCONST R6 K39 - 0x7C080800, // 0055 CALL R2 4 - 0xB80A0200, // 0056 GETNGBL R2 K1 - 0x8C080523, // 0057 GETMET R2 R2 K35 - 0x7C080200, // 0058 CALL R2 1 - 0x94080522, // 0059 GETIDX R2 R2 K34 - 0x740A0005, // 005A JMPT R2 #0061 - 0xB80A0200, // 005B GETNGBL R2 K1 - 0x8C080525, // 005C GETMET R2 R2 K37 - 0x58100028, // 005D LDCONST R4 K40 - 0x84140001, // 005E CLOSURE R5 P1 - 0x58180027, // 005F LDCONST R6 K39 - 0x7C080800, // 0060 CALL R2 4 - 0x8C080129, // 0061 GETMET R2 R0 K41 - 0x7C080200, // 0062 CALL R2 1 - 0xB80A0200, // 0063 GETNGBL R2 K1 - 0x8C08052A, // 0064 GETMET R2 R2 K42 - 0x5C100000, // 0065 MOVE R4 R0 - 0x7C080400, // 0066 CALL R2 2 - 0x8C08012B, // 0067 GETMET R2 R0 K43 - 0x7C080200, // 0068 CALL R2 1 - 0xA0000000, // 0069 CLOSE R0 - 0x80000000, // 006A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_read_solo -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_process_attribute_read_solo, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K7 */ be_nested_str_weak(contains_cluster), - /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K9 */ be_nested_str_weak(contains_attribute), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), - be_str_weak(process_attribute_read_solo), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 - 0x4C140000, // 0003 LDNIL R5 - 0x1C140405, // 0004 EQ R5 R2 R5 - 0x74160005, // 0005 JMPT R5 #000C - 0x4C140000, // 0006 LDNIL R5 - 0x1C140605, // 0007 EQ R5 R3 R5 - 0x74160002, // 0008 JMPT R5 #000C - 0x4C140000, // 0009 LDNIL R5 - 0x1C140805, // 000A EQ R5 R4 R5 - 0x78160001, // 000B JMPF R5 #000E - 0x4C140000, // 000C LDNIL R5 - 0x80040A00, // 000D RET 1 R5 - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x5C1C0400, // 000F MOVE R7 R2 - 0x7C140400, // 0010 CALL R5 2 - 0x4C180000, // 0011 LDNIL R6 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0004, // 0013 JMPF R6 #0019 - 0xB81A0A00, // 0014 GETNGBL R6 K5 - 0x88180D06, // 0015 GETMBR R6 R6 K6 - 0x90060806, // 0016 SETMBR R1 K4 R6 - 0x4C180000, // 0017 LDNIL R6 - 0x80040C00, // 0018 RET 1 R6 - 0x8C180B07, // 0019 GETMET R6 R5 K7 - 0x5C200600, // 001A MOVE R8 R3 - 0x7C180400, // 001B CALL R6 2 - 0x741A0004, // 001C JMPT R6 #0022 - 0xB81A0A00, // 001D GETNGBL R6 K5 - 0x88180D08, // 001E GETMBR R6 R6 K8 - 0x90060806, // 001F SETMBR R1 K4 R6 - 0x4C180000, // 0020 LDNIL R6 - 0x80040C00, // 0021 RET 1 R6 - 0x8C180B09, // 0022 GETMET R6 R5 K9 - 0x5C200600, // 0023 MOVE R8 R3 - 0x5C240800, // 0024 MOVE R9 R4 - 0x7C180600, // 0025 CALL R6 3 - 0x741A0004, // 0026 JMPT R6 #002C - 0xB81A0A00, // 0027 GETNGBL R6 K5 - 0x88180D0A, // 0028 GETMBR R6 R6 K10 - 0x90060806, // 0029 SETMBR R1 K4 R6 - 0x4C180000, // 002A LDNIL R6 - 0x80040C00, // 002B RET 1 R6 - 0x80040A00, // 002C RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery_deferred -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_discovery), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_operational_discovery_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric), - /* K1 */ be_nested_str_weak(get_fabric_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(get_admin_vendor_name), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(stop_basic_commissioning), - }), - be_str_weak(start_commissioning_complete), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x8C0C0501, // 0002 GETMET R3 R2 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x7C100200, // 000B CALL R4 1 - 0xB8160C00, // 000C GETNGBL R5 K6 - 0x60180018, // 000D GETGBL R6 G24 - 0x581C0007, // 000E LDCONST R7 K7 - 0x5C200600, // 000F MOVE R8 R3 - 0x5C240800, // 0010 MOVE R9 R4 - 0x7C180600, // 0011 CALL R6 3 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x7C140400, // 0013 CALL R5 2 - 0x8C140109, // 0014 GETMET R5 R0 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_received -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_received, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(msg_received), - }), - be_str_weak(msg_received), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attribute_updated -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_attribute_updated, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Path), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(message_handler), - /* K6 */ be_nested_str_weak(im), - /* K7 */ be_nested_str_weak(subs_shop), - /* K8 */ be_nested_str_weak(attribute_updated_ctx), - }), - be_str_weak(attribute_updated), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160000, // 0002 JMPF R5 #0004 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0xB8160000, // 0004 GETNGBL R5 K0 - 0x8C140B01, // 0005 GETMET R5 R5 K1 - 0x7C140200, // 0006 CALL R5 1 - 0x90160401, // 0007 SETMBR R5 K2 R1 - 0x90160602, // 0008 SETMBR R5 K3 R2 - 0x90160803, // 0009 SETMBR R5 K4 R3 - 0x88180105, // 000A GETMBR R6 R0 K5 - 0x88180D06, // 000B GETMBR R6 R6 K6 - 0x88180D07, // 000C GETMBR R6 R6 K7 - 0x8C180D08, // 000D GETMET R6 R6 K8 - 0x5C200A00, // 000E MOVE R8 R5 - 0x5C240800, // 000F MOVE R9 R4 - 0x7C180600, // 0010 CALL R6 3 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: event_fabrics_saved -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(save_param), - }), - be_str_weak(event_fabrics_saved), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x24040302, // 0003 GT R1 R1 K2 - 0x78060005, // 0004 JMPF R1 #000B - 0x88040103, // 0005 GETMBR R1 R0 K3 - 0x74060003, // 0006 JMPT R1 #000B - 0x50040200, // 0007 LDBOOL R1 1 0 - 0x90020601, // 0008 SETMBR R0 K3 R1 - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete_deferred -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_commissioning_complete_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save_before_restart -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_save_before_restart, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(stop_basic_commissioning), - /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), - }), - be_str_weak(save_before_restart), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_add_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K4 */ be_nested_str_weak(_X27_X20skipping), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(next_ep), - /* K7 */ be_nested_str_weak(plugins), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(type), - /* K10 */ be_nested_str_weak(keys), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K13 */ be_nested_str_weak(conf_to_log), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_persist), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(save_param), - /* K19 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_add_endpoint), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120008, // 0006 JMPF R4 #0010 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x60140008, // 0008 GETGBL R5 G8 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C140200, // 000A CALL R5 1 - 0x00160605, // 000B ADD R5 K3 R5 - 0x00140B04, // 000C ADD R5 R5 K4 - 0x58180005, // 000D LDCONST R6 K5 - 0x7C100400, // 000E CALL R4 2 - 0x80000800, // 000F RET 0 - 0x88100106, // 0010 GETMBR R4 R0 K6 - 0x60140008, // 0011 GETGBL R5 G8 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x5C180600, // 0014 MOVE R6 R3 - 0x5C1C0000, // 0015 MOVE R7 R0 - 0x5C200800, // 0016 MOVE R8 R4 - 0x5C240400, // 0017 MOVE R9 R2 - 0x7C180600, // 0018 CALL R6 3 - 0x881C0107, // 0019 GETMBR R7 R0 K7 - 0x8C1C0F08, // 001A GETMET R7 R7 K8 - 0x5C240C00, // 001B MOVE R9 R6 - 0x7C1C0400, // 001C CALL R7 2 - 0x601C0013, // 001D GETGBL R7 G19 - 0x7C1C0000, // 001E CALL R7 0 - 0x981E1201, // 001F SETIDX R7 K9 R1 - 0x60200010, // 0020 GETGBL R8 G16 - 0x8C24050A, // 0021 GETMET R9 R2 K10 - 0x7C240200, // 0022 CALL R9 1 - 0x7C200200, // 0023 CALL R8 1 - 0xA8020004, // 0024 EXBLK 0 #002A - 0x5C241000, // 0025 MOVE R9 R8 - 0x7C240000, // 0026 CALL R9 0 - 0x94280409, // 0027 GETIDX R10 R2 R9 - 0x981C120A, // 0028 SETIDX R7 R9 R10 - 0x7001FFFA, // 0029 JMP #0025 - 0x5820000B, // 002A LDCONST R8 K11 - 0xAC200200, // 002B CATCH R8 1 0 - 0xB0080000, // 002C RAISE 2 R0 R0 - 0xB8220400, // 002D GETNGBL R8 K2 - 0x60240018, // 002E GETGBL R9 G24 - 0x5828000C, // 002F LDCONST R10 K12 - 0x5C2C0800, // 0030 MOVE R11 R4 - 0x5C300200, // 0031 MOVE R12 R1 - 0x8C34010D, // 0032 GETMET R13 R0 K13 - 0x5C3C0400, // 0033 MOVE R15 R2 - 0x7C340400, // 0034 CALL R13 2 - 0x7C240800, // 0035 CALL R9 4 - 0x5828000E, // 0036 LDCONST R10 K14 - 0x7C200400, // 0037 CALL R8 2 - 0x8820010F, // 0038 GETMBR R8 R0 K15 - 0x98200A07, // 0039 SETIDX R8 R5 R7 - 0x50200200, // 003A LDBOOL R8 1 0 - 0x90022008, // 003B SETMBR R0 K16 R8 - 0x88200106, // 003C GETMBR R8 R0 K6 - 0x00201111, // 003D ADD R8 R8 K17 - 0x90020C08, // 003E SETMBR R0 K6 R8 - 0x8C200112, // 003F GETMET R8 R0 K18 - 0x7C200200, // 0040 CALL R8 1 - 0x8C200113, // 0041 GETMET R8 R0 K19 - 0x7C200200, // 0042 CALL R8 1 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrInfo, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(), /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(MtrInfo_one), - /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(int), - /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(resp_cmnd_done), + /* K2 */ be_nested_str_weak(get_endpoint), + /* K3 */ be_const_int(1), }), - be_str_weak(MtrInfo), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x1C140700, // 0000 EQ R5 R3 K0 - 0x7815FFFF, // 0001 JMPF R5 #0002 - 0x1C140700, // 0002 EQ R5 R3 K0 - 0x7816000D, // 0003 JMPF R5 #0012 - 0x60140010, // 0004 GETGBL R5 G16 - 0x88180101, // 0005 GETMBR R6 R0 K1 - 0x7C140200, // 0006 CALL R5 1 - 0xA8020005, // 0007 EXBLK 0 #000E - 0x5C180A00, // 0008 MOVE R6 R5 - 0x7C180000, // 0009 CALL R6 0 - 0x8C1C0102, // 000A GETMET R7 R0 K2 - 0x88240D03, // 000B GETMBR R9 R6 K3 - 0x7C1C0400, // 000C CALL R7 2 - 0x7001FFF9, // 000D JMP #0008 - 0x58140004, // 000E LDCONST R5 K4 - 0xAC140200, // 000F CATCH R5 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x70020011, // 0011 JMP #0024 - 0x60140004, // 0012 GETGBL R5 G4 - 0x5C180800, // 0013 MOVE R6 R4 - 0x7C140200, // 0014 CALL R5 1 - 0x1C140B05, // 0015 EQ R5 R5 K5 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C140102, // 0017 GETMET R5 R0 K2 - 0x5C1C0800, // 0018 MOVE R7 R4 - 0x7C140400, // 0019 CALL R5 2 - 0x70020008, // 001A JMP #0024 - 0x8C140106, // 001B GETMET R5 R0 K6 - 0x5C1C0600, // 001C MOVE R7 R3 - 0x7C140400, // 001D CALL R5 2 - 0x4C180000, // 001E LDNIL R6 - 0x20180A06, // 001F NE R6 R5 R6 - 0x781A0002, // 0020 JMPF R6 #0024 - 0x8C180102, // 0021 GETMET R6 R0 K2 - 0x88200B03, // 0022 GETMBR R8 R5 K3 - 0x7C180400, // 0023 CALL R6 2 - 0xB8160E00, // 0024 GETNGBL R5 K7 - 0x8C140B08, // 0025 GETMET R5 R5 K8 - 0x7C140200, // 0026 CALL R5 1 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _start_udp -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__start_udp, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_received), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(UDPServer), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(start), - }), - be_str_weak(_start_udp), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x600C0008, // 0008 GETGBL R3 G8 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C0C0200, // 000A CALL R3 1 - 0x000E0403, // 000B ADD R3 K2 R3 - 0x58100003, // 000C LDCONST R4 K3 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x8C080505, // 000F GETMET R2 R2 K5 - 0x5C100000, // 0010 MOVE R4 R0 - 0x58140006, // 0011 LDCONST R5 K6 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C080800, // 0013 CALL R2 4 - 0x90020002, // 0014 SETMBR R0 K0 R2 - 0x88080100, // 0015 GETMBR R2 R0 K0 - 0x8C080507, // 0016 GETMET R2 R2 K7 - 0x84100000, // 0017 CLOSURE R4 P0 - 0x7C080400, // 0018 CALL R2 2 - 0xA0000000, // 0019 CLOSE R0 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_50ms -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_50ms, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_const_int(1), - }), - be_str_weak(every_50ms), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_root_commissioning_open -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(commissioning_admin_fabric), - }), - be_str_weak(is_root_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060003, // 0003 JMPF R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x74060000, // 0007 JMPT R1 #0009 - 0x50040001, // 0008 LDBOOL R1 0 1 - 0x50040200, // 0009 LDBOOL R1 1 0 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: k2l_num -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_k2l_num, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(k2l_num), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020007, // 000B EXBLK 0 #0014 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x601C0009, // 000F GETGBL R7 G9 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C1C0200, // 0011 CALL R7 1 - 0x7C140400, // 0012 CALL R5 2 - 0x7001FFF7, // 0013 JMP #000C - 0x580C0003, // 0014 LDCONST R3 K3 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x600C0010, // 0017 GETGBL R3 G16 - 0x6010000C, // 0018 GETGBL R4 G12 - 0x5C140400, // 0019 MOVE R5 R2 - 0x7C100200, // 001A CALL R4 1 - 0x04100904, // 001B SUB R4 R4 K4 - 0x40120804, // 001C CONNECT R4 K4 R4 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x94140404, // 0021 GETIDX R5 R2 R4 - 0x5C180800, // 0022 MOVE R6 R4 - 0x241C0D05, // 0023 GT R7 R6 K5 - 0x781E0008, // 0024 JMPF R7 #002E - 0x041C0D04, // 0025 SUB R7 R6 K4 - 0x941C0407, // 0026 GETIDX R7 R2 R7 - 0x241C0E05, // 0027 GT R7 R7 R5 - 0x781E0004, // 0028 JMPF R7 #002E - 0x041C0D04, // 0029 SUB R7 R6 K4 - 0x941C0407, // 002A GETIDX R7 R2 R7 - 0x98080C07, // 002B SETIDX R2 R6 R7 - 0x04180D04, // 002C SUB R6 R6 K4 - 0x7001FFF4, // 002D JMP #0023 - 0x98080C05, // 002E SETIDX R2 R6 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0003, // 0030 LDCONST R3 K3 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x80040400, // 0033 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_commands -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_register_commands, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 4]) { - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrJoin), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrUpdate), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrInfo), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(add_cmd), - /* K2 */ be_nested_str_weak(MtrJoin), - /* K3 */ be_nested_str_weak(MtrUpdate), - /* K4 */ be_nested_str_weak(MtrInfo), - }), - be_str_weak(register_commands), + be_str_weak(find_plugin_by_endpoint), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x84100000, // 0003 CLOSURE R4 P0 - 0x7C040600, // 0004 CALL R1 3 - 0xB8060000, // 0005 GETNGBL R1 K0 - 0x8C040301, // 0006 GETMET R1 R1 K1 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x84100001, // 0008 CLOSURE R4 P1 - 0x7C040600, // 0009 CALL R1 3 - 0xB8060000, // 000A GETNGBL R1 K0 - 0x8C040301, // 000B GETMET R1 R1 K1 - 0x580C0004, // 000C LDCONST R3 K4 - 0x84100002, // 000D CLOSURE R4 P2 - 0x7C040600, // 000E CALL R1 3 - 0xA0000000, // 000F CLOSE R0 - 0x80000000, // 0010 RET 0 + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C100702, // 0008 GETMET R4 R3 K2 + 0x7C100200, // 0009 CALL R4 1 + 0x1C100801, // 000A EQ R4 R4 R1 + 0x78120000, // 000B JMPF R4 #000D + 0x80040600, // 000C RET 1 R3 + 0x00080503, // 000D ADD R2 R2 K3 + 0x7001FFF1, // 000E JMP #0001 + 0x4C0C0000, // 000F LDNIL R3 + 0x80040600, // 0010 RET 1 R3 }) ) ); @@ -2859,82 +128,52 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ /******************************************************************** -** Solidified function: sort_distinct +** Solidified function: read_sensors_scheduler ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_sort_distinct, /* name */ +be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ be_nested_proto( - 7, /* nstack */ + 4, /* nstack */ 1, /* argc */ - 4, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_const_int(1), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_sensor_time), + /* K1 */ be_nested_str_weak(probe_sensor_timestamp), /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(remove), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(time_reached), + /* K5 */ be_nested_str_weak(_trigger_read_sensors), + /* K6 */ be_nested_str_weak(millis), }), - be_str_weak(sort_distinct), + be_str_weak(read_sensors_scheduler), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020010, // 0008 EXBLK 0 #001A - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x24180C04, // 0011 GT R6 R6 R4 - 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B01, // 0013 SUB R6 R5 K1 - 0x94180006, // 0014 GETIDX R6 R0 R6 - 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B01, // 0016 SUB R5 R5 K1 - 0x7001FFF4, // 0017 JMP #000D - 0x98000A04, // 0018 SETIDX R0 R5 R4 - 0x7001FFEE, // 0019 JMP #0009 - 0x58080003, // 001A LDCONST R2 K3 - 0xAC080200, // 001B CATCH R2 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x58080001, // 001D LDCONST R2 K1 - 0x600C000C, // 001E GETGBL R3 G12 - 0x5C100000, // 001F MOVE R4 R0 - 0x7C0C0200, // 0020 CALL R3 1 - 0x180C0701, // 0021 LE R3 R3 K1 - 0x780E0000, // 0022 JMPF R3 #0024 - 0x80040000, // 0023 RET 1 R0 - 0x940C0102, // 0024 GETIDX R3 R0 K2 - 0x6010000C, // 0025 GETGBL R4 G12 - 0x5C140000, // 0026 MOVE R5 R0 - 0x7C100200, // 0027 CALL R4 1 - 0x14100404, // 0028 LT R4 R2 R4 - 0x78120009, // 0029 JMPF R4 #0034 - 0x94100002, // 002A GETIDX R4 R0 R2 - 0x1C100803, // 002B EQ R4 R4 R3 - 0x78120003, // 002C JMPF R4 #0031 - 0x8C100104, // 002D GETMET R4 R0 K4 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x70020001, // 0030 JMP #0033 - 0x940C0002, // 0031 GETIDX R3 R0 R2 - 0x00080501, // 0032 ADD R2 R2 K1 - 0x7001FFF0, // 0033 JMP #0025 - 0x80040000, // 0034 RET 1 R0 + ( &(const binstruction[21]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060000, // 0003 JMPF R1 #0005 + 0x80000200, // 0004 RET 0 + 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x1C040302, // 0006 EQ R1 R1 K2 + 0x74060004, // 0007 JMPT R1 #000D + 0xB8060600, // 0008 GETNGBL R1 K3 + 0x8C040304, // 0009 GETMET R1 R1 K4 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x7C040400, // 000B CALL R1 2 + 0x78060006, // 000C JMPF R1 #0014 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0xB8060600, // 000F GETNGBL R1 K3 + 0x8C040306, // 0010 GETMET R1 R1 K6 + 0x880C0100, // 0011 GETMBR R3 R0 K0 + 0x7C040400, // 0012 CALL R1 2 + 0x90020201, // 0013 SETMBR R0 K1 R1 + 0x80000000, // 0014 RET 0 }) ) ); @@ -2942,240 +181,10 @@ be_local_closure(class_Matter_Device_sort_distinct, /* name */ /******************************************************************** -** Solidified function: check_config_ep +** Solidified function: _mdns_announce_hostname ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_check_config_ep, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), - /* K12 */ be_nested_str_weak(next_ep), - /* K13 */ be_const_int(1), - }), - be_str_weak(check_config_ep), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x600C0010, // 0003 GETGBL R3 G16 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x8C100901, // 0005 GETMET R4 R4 K1 - 0x7C100200, // 0006 CALL R4 1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020007, // 0008 EXBLK 0 #0011 - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x8C140502, // 000B GETMET R5 R2 K2 - 0x601C0009, // 000C GETGBL R7 G9 - 0x5C200800, // 000D MOVE R8 R4 - 0x7C1C0200, // 000E CALL R7 1 - 0x7C140400, // 000F CALL R5 2 - 0x7001FFF7, // 0010 JMP #0009 - 0x580C0003, // 0011 LDCONST R3 K3 - 0xAC0C0200, // 0012 CATCH R3 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x600C0010, // 0014 GETGBL R3 G16 - 0x5C100400, // 0015 MOVE R4 R2 - 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020030, // 0017 EXBLK 0 #0049 - 0x5C100600, // 0018 MOVE R4 R3 - 0x7C100000, // 0019 CALL R4 0 - 0x1C140904, // 001A EQ R5 R4 K4 - 0x7816000B, // 001B JMPF R5 #0028 - 0xB8160A00, // 001C GETNGBL R5 K5 - 0x58180006, // 001D LDCONST R6 K6 - 0x581C0007, // 001E LDCONST R7 K7 - 0x7C140400, // 001F CALL R5 2 - 0x88140100, // 0020 GETMBR R5 R0 K0 - 0x8C140B08, // 0021 GETMET R5 R5 K8 - 0x601C0008, // 0022 GETGBL R7 G8 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C1C0200, // 0024 CALL R7 1 - 0x7C140400, // 0025 CALL R5 2 - 0x50040200, // 0026 LDBOOL R1 1 0 - 0x7002001F, // 0027 JMP #0048 - 0xB8161200, // 0028 GETNGBL R5 K9 - 0x88140B0A, // 0029 GETMBR R5 R5 K10 - 0x1C140805, // 002A EQ R5 R4 R5 - 0x7816001B, // 002B JMPF R5 #0048 - 0x50040200, // 002C LDBOOL R1 1 0 - 0xB8160A00, // 002D GETNGBL R5 K5 - 0x60180018, // 002E GETGBL R6 G24 - 0x581C000B, // 002F LDCONST R7 K11 - 0x5C200800, // 0030 MOVE R8 R4 - 0x8824010C, // 0031 GETMBR R9 R0 K12 - 0x7C180600, // 0032 CALL R6 3 - 0x581C0007, // 0033 LDCONST R7 K7 - 0x7C140400, // 0034 CALL R5 2 - 0x60140008, // 0035 GETGBL R5 G8 - 0x8818010C, // 0036 GETMBR R6 R0 K12 - 0x7C140200, // 0037 CALL R5 1 - 0x88180100, // 0038 GETMBR R6 R0 K0 - 0x601C0008, // 0039 GETGBL R7 G8 - 0x5C200800, // 003A MOVE R8 R4 - 0x7C1C0200, // 003B CALL R7 1 - 0x88200100, // 003C GETMBR R8 R0 K0 - 0x941C1007, // 003D GETIDX R7 R8 R7 - 0x98180A07, // 003E SETIDX R6 R5 R7 - 0x88140100, // 003F GETMBR R5 R0 K0 - 0x8C140B08, // 0040 GETMET R5 R5 K8 - 0x601C0008, // 0041 GETGBL R7 G8 - 0x5C200800, // 0042 MOVE R8 R4 - 0x7C1C0200, // 0043 CALL R7 1 - 0x7C140400, // 0044 CALL R5 2 - 0x8814010C, // 0045 GETMBR R5 R0 K12 - 0x00140B0D, // 0046 ADD R5 R5 K13 - 0x90021805, // 0047 SETMBR R0 K12 R5 - 0x7001FFCE, // 0048 JMP #0018 - 0x580C0003, // 0049 LDCONST R3 K3 - 0xAC0C0200, // 004A CATCH R3 1 0 - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80040200, // 004C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_expansion -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(start), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(get_pi), - /* K8 */ be_nested_str_weak(endpoint_found), - /* K9 */ be_nested_str_weak(status), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K11 */ be_nested_str_weak(cluster_found), - /* K12 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K13 */ be_nested_str_weak(attribute_found), - /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), - }), - be_str_weak(process_attribute_expansion), - &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x88140302, // 0002 GETMBR R5 R1 K2 - 0x50180000, // 0003 LDBOOL R6 0 0 - 0x501C0000, // 0004 LDBOOL R7 0 0 - 0x50200000, // 0005 LDBOOL R8 0 0 - 0x88240300, // 0006 GETMBR R9 R1 K0 - 0x4C280000, // 0007 LDNIL R10 - 0x2024120A, // 0008 NE R9 R9 R10 - 0x78260007, // 0009 JMPF R9 #0012 - 0x88240301, // 000A GETMBR R9 R1 K1 - 0x4C280000, // 000B LDNIL R10 - 0x2024120A, // 000C NE R9 R9 R10 - 0x78260003, // 000D JMPF R9 #0012 - 0x88240302, // 000E GETMBR R9 R1 K2 - 0x4C280000, // 000F LDNIL R10 - 0x2024120A, // 0010 NE R9 R9 R10 - 0x74260000, // 0011 JMPT R9 #0013 - 0x50240001, // 0012 LDBOOL R9 0 1 - 0x50240200, // 0013 LDBOOL R9 1 0 - 0xB82A0600, // 0014 GETNGBL R10 K3 - 0x8C281504, // 0015 GETMET R10 R10 K4 - 0x5C300000, // 0016 MOVE R12 R0 - 0x7C280400, // 0017 CALL R10 2 - 0x8C2C1505, // 0018 GETMET R11 R10 K5 - 0x5C340200, // 0019 MOVE R13 R1 - 0x4C380000, // 001A LDNIL R14 - 0x7C2C0600, // 001B CALL R11 3 - 0x4C2C0000, // 001C LDNIL R11 - 0x8C301506, // 001D GETMET R12 R10 K6 - 0x7C300200, // 001E CALL R12 1 - 0x5C2C1800, // 001F MOVE R11 R12 - 0x4C340000, // 0020 LDNIL R13 - 0x2030180D, // 0021 NE R12 R12 R13 - 0x78320009, // 0022 JMPF R12 #002D - 0x5C300400, // 0023 MOVE R12 R2 - 0x8C341507, // 0024 GETMET R13 R10 K7 - 0x7C340200, // 0025 CALL R13 1 - 0x5C381600, // 0026 MOVE R14 R11 - 0x5C3C1200, // 0027 MOVE R15 R9 - 0x7C300600, // 0028 CALL R12 3 - 0x78260001, // 0029 JMPF R9 #002C - 0x78320000, // 002A JMPF R12 #002C - 0x80001A00, // 002B RET 0 - 0x7001FFEF, // 002C JMP #001D - 0x78260019, // 002D JMPF R9 #0048 - 0x88301508, // 002E GETMBR R12 R10 K8 - 0x74320003, // 002F JMPT R12 #0034 - 0xB8320600, // 0030 GETNGBL R12 K3 - 0x8830190A, // 0031 GETMBR R12 R12 K10 - 0x9006120C, // 0032 SETMBR R1 K9 R12 - 0x7002000E, // 0033 JMP #0043 - 0x8830150B, // 0034 GETMBR R12 R10 K11 - 0x74320003, // 0035 JMPT R12 #003A - 0xB8320600, // 0036 GETNGBL R12 K3 - 0x8830190C, // 0037 GETMBR R12 R12 K12 - 0x9006120C, // 0038 SETMBR R1 K9 R12 - 0x70020008, // 0039 JMP #0043 - 0x8830150D, // 003A GETMBR R12 R10 K13 - 0x74320003, // 003B JMPT R12 #0040 - 0xB8320600, // 003C GETNGBL R12 K3 - 0x8830190E, // 003D GETMBR R12 R12 K14 - 0x9006120C, // 003E SETMBR R1 K9 R12 - 0x70020002, // 003F JMP #0043 - 0xB8320600, // 0040 GETNGBL R12 K3 - 0x8830190F, // 0041 GETMBR R12 R12 K15 - 0x9006120C, // 0042 SETMBR R1 K9 R12 - 0x5C300400, // 0043 MOVE R12 R2 - 0x4C340000, // 0044 LDNIL R13 - 0x5C380200, // 0045 MOVE R14 R1 - 0x503C0200, // 0046 LDBOOL R15 1 0 - 0x7C300600, // 0047 CALL R12 3 - 0x80000000, // 0048 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ +be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ be_nested_proto( 14, /* nstack */ 2, /* argc */ @@ -3187,327 +196,180 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(find), - /* K13 */ be_nested_str_weak(up), - /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K15 */ be_nested_str_weak(hostname_eth), - /* K16 */ be_nested_str_weak(add_service), - /* K17 */ be_nested_str_weak(_matter), - /* K18 */ be_nested_str_weak(_tcp), - /* K19 */ be_nested_str_weak(_I), - /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K21 */ be_nested_str_weak(add_subtype), - /* K22 */ be_nested_str_weak(wifi), - /* K23 */ be_nested_str_weak(hostname_wifi), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_const_int(2), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(start), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(eth), + /* K5 */ be_nested_str_weak(hostname_eth), + /* K6 */ be_nested_str_weak(replace), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(mac), + /* K9 */ be_nested_str_weak(_X3A), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(ipv4only), + /* K12 */ be_nested_str_weak(contains), + /* K13 */ be_nested_str_weak(ip6local), + /* K14 */ be_nested_str_weak(add_hostname), + /* K15 */ be_nested_str_weak(ip), + /* K16 */ be_nested_str_weak(ip6), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str_weak(wifi), + /* K21 */ be_nested_str_weak(hostname_wifi), + /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), + /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K24 */ be_nested_str_weak(_X7C), + /* K25 */ be_const_int(2), + /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), }), - be_str_weak(mdns_announce_op_discovery), + be_str_weak(_mdns_announce_hostname), &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ + ( &(const binstruction[144]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802005F, // 0001 EXBLK 0 #0062 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x001E1005, // 0011 ADD R7 K8 R5 - 0x58200009, // 0012 LDCONST R8 K9 - 0x7C180400, // 0013 CALL R6 2 - 0xB81A1400, // 0014 GETNGBL R6 K10 - 0x8C180D0B, // 0015 GETMET R6 R6 K11 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180D0C, // 0017 GETMET R6 R6 K12 - 0x5820000D, // 0018 LDCONST R8 K13 - 0x7C180400, // 0019 CALL R6 2 - 0x781A001E, // 001A JMPF R6 #003A - 0xB81A0E00, // 001B GETNGBL R6 K7 - 0x601C0018, // 001C GETGBL R7 G24 - 0x5820000E, // 001D LDCONST R8 K14 - 0x5824000B, // 001E LDCONST R9 K11 - 0x5C280A00, // 001F MOVE R10 R5 - 0x882C010F, // 0020 GETMBR R11 R0 K15 - 0x7C1C0800, // 0021 CALL R7 4 - 0x58200009, // 0022 LDCONST R8 K9 - 0x7C180400, // 0023 CALL R6 2 - 0x8C180510, // 0024 GETMET R6 R2 K16 - 0x58200011, // 0025 LDCONST R8 K17 - 0x58240012, // 0026 LDCONST R9 K18 - 0x542A15A3, // 0027 LDINT R10 5540 - 0x4C2C0000, // 0028 LDNIL R11 - 0x5C300A00, // 0029 MOVE R12 R5 - 0x8834010F, // 002A GETMBR R13 R0 K15 - 0x7C180E00, // 002B CALL R6 7 - 0x8C180905, // 002C GETMET R6 R4 K5 - 0x7C180200, // 002D CALL R6 1 - 0x001A2606, // 002E ADD R6 K19 R6 - 0xB81E0E00, // 002F GETNGBL R7 K7 - 0x00222806, // 0030 ADD R8 K20 R6 - 0x58240009, // 0031 LDCONST R9 K9 - 0x7C1C0400, // 0032 CALL R7 2 - 0x8C1C0515, // 0033 GETMET R7 R2 K21 - 0x58240011, // 0034 LDCONST R9 K17 - 0x58280012, // 0035 LDCONST R10 K18 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x8830010F, // 0037 GETMBR R12 R0 K15 - 0x5C340C00, // 0038 MOVE R13 R6 - 0x7C1C0C00, // 0039 CALL R7 6 - 0xB81A1400, // 003A GETNGBL R6 K10 - 0x8C180D16, // 003B GETMET R6 R6 K22 - 0x7C180200, // 003C CALL R6 1 - 0x8C180D0C, // 003D GETMET R6 R6 K12 - 0x5820000D, // 003E LDCONST R8 K13 - 0x7C180400, // 003F CALL R6 2 - 0x781A001E, // 0040 JMPF R6 #0060 - 0xB81A0E00, // 0041 GETNGBL R6 K7 - 0x601C0018, // 0042 GETGBL R7 G24 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x58240016, // 0044 LDCONST R9 K22 - 0x5C280A00, // 0045 MOVE R10 R5 - 0x882C0117, // 0046 GETMBR R11 R0 K23 - 0x7C1C0800, // 0047 CALL R7 4 - 0x58200009, // 0048 LDCONST R8 K9 - 0x7C180400, // 0049 CALL R6 2 - 0x8C180510, // 004A GETMET R6 R2 K16 - 0x58200011, // 004B LDCONST R8 K17 - 0x58240012, // 004C LDCONST R9 K18 - 0x542A15A3, // 004D LDINT R10 5540 - 0x4C2C0000, // 004E LDNIL R11 - 0x5C300A00, // 004F MOVE R12 R5 - 0x88340117, // 0050 GETMBR R13 R0 K23 - 0x7C180E00, // 0051 CALL R6 7 - 0x8C180905, // 0052 GETMET R6 R4 K5 - 0x7C180200, // 0053 CALL R6 1 - 0x001A2606, // 0054 ADD R6 K19 R6 - 0xB81E0E00, // 0055 GETNGBL R7 K7 - 0x00222806, // 0056 ADD R8 K20 R6 - 0x58240009, // 0057 LDCONST R9 K9 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C1C0515, // 0059 GETMET R7 R2 K21 - 0x58240011, // 005A LDCONST R9 K17 - 0x58280012, // 005B LDCONST R10 K18 - 0x5C2C0A00, // 005C MOVE R11 R5 - 0x88300117, // 005D GETMBR R12 R0 K23 - 0x5C340C00, // 005E MOVE R13 R6 - 0x7C1C0C00, // 005F CALL R7 6 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7002000F, // 0061 JMP #0072 - 0xAC0C0002, // 0062 CATCH R3 0 2 - 0x7002000C, // 0063 JMP #0071 - 0xB8160E00, // 0064 GETNGBL R5 K7 - 0x60180008, // 0065 GETGBL R6 G8 - 0x5C1C0600, // 0066 MOVE R7 R3 - 0x7C180200, // 0067 CALL R6 1 - 0x001A3006, // 0068 ADD R6 K24 R6 - 0x00180D19, // 0069 ADD R6 R6 K25 - 0x601C0008, // 006A GETGBL R7 G8 - 0x5C200800, // 006B MOVE R8 R4 - 0x7C1C0200, // 006C CALL R7 1 - 0x00180C07, // 006D ADD R6 R6 R7 - 0x581C001A, // 006E LDCONST R7 K26 - 0x7C140400, // 006F CALL R5 2 - 0x70020000, // 0070 JMP #0072 - 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x80000000, // 0072 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save_param -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_save_param, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(update_remotes_info), - /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), - /* K3 */ be_nested_str_weak(root_discriminator), - /* K4 */ be_nested_str_weak(root_passcode), - /* K5 */ be_nested_str_weak(ipv4only), - /* K6 */ be_nested_str_weak(true), - /* K7 */ be_nested_str_weak(false), - /* K8 */ be_nested_str_weak(disable_bridge_mode), - /* K9 */ be_nested_str_weak(next_ep), - /* K10 */ be_nested_str_weak(debug), - /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), - /* K14 */ be_nested_str_weak(dump), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_config_remotes), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), - /* K19 */ be_nested_str_weak(_X7D), - /* K20 */ be_nested_str_weak(FILENAME), - /* K21 */ be_nested_str_weak(w), - /* K22 */ be_nested_str_weak(write), - /* K23 */ be_nested_str_weak(close), - /* K24 */ be_nested_str_weak(log), - /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K26 */ be_nested_str_weak(_X20and_X20configuration), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_const_int(2), - /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K30 */ be_nested_str_weak(_X7C), - }), - be_str_weak(save_param), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x88140104, // 0006 GETMBR R5 R0 K4 - 0x88180105, // 0007 GETMBR R6 R0 K5 - 0x781A0001, // 0008 JMPF R6 #000B - 0x58180006, // 0009 LDCONST R6 K6 - 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x781E0001, // 000D JMPF R7 #0010 - 0x581C0006, // 000E LDCONST R7 K6 - 0x70020000, // 000F JMP #0011 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x88200109, // 0011 GETMBR R8 R0 K9 - 0x7C080C00, // 0012 CALL R2 6 - 0x880C010A, // 0013 GETMBR R3 R0 K10 - 0x780E0000, // 0014 JMPF R3 #0016 - 0x0008050B, // 0015 ADD R2 R2 K11 - 0x880C010C, // 0016 GETMBR R3 R0 K12 - 0x780E000E, // 0017 JMPF R3 #0027 - 0x0008050D, // 0018 ADD R2 R2 K13 - 0x8C0C030E, // 0019 GETMET R3 R1 K14 - 0x8814010F, // 001A GETMBR R5 R0 K15 - 0x7C0C0400, // 001B CALL R3 2 - 0x00080403, // 001C ADD R2 R2 R3 - 0x600C000C, // 001D GETGBL R3 G12 - 0x88100110, // 001E GETMBR R4 R0 K16 - 0x7C0C0200, // 001F CALL R3 1 - 0x240C0711, // 0020 GT R3 R3 K17 - 0x780E0004, // 0021 JMPF R3 #0027 - 0x00080512, // 0022 ADD R2 R2 K18 - 0x8C0C030E, // 0023 GETMET R3 R1 K14 - 0x88140110, // 0024 GETMBR R5 R0 K16 - 0x7C0C0400, // 0025 CALL R3 2 - 0x00080403, // 0026 ADD R2 R2 R3 - 0x00080513, // 0027 ADD R2 R2 K19 - 0xA8020017, // 0028 EXBLK 0 #0041 - 0x600C0011, // 0029 GETGBL R3 G17 - 0x88100114, // 002A GETMBR R4 R0 K20 - 0x58140015, // 002B LDCONST R5 K21 - 0x7C0C0400, // 002C CALL R3 2 - 0x8C100716, // 002D GETMET R4 R3 K22 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x8C100717, // 0030 GETMET R4 R3 K23 - 0x7C100200, // 0031 CALL R4 1 - 0xB8123000, // 0032 GETNGBL R4 K24 - 0x60140018, // 0033 GETGBL R5 G24 - 0x58180019, // 0034 LDCONST R6 K25 - 0x881C010C, // 0035 GETMBR R7 R0 K12 - 0x781E0001, // 0036 JMPF R7 #0039 - 0x581C001A, // 0037 LDCONST R7 K26 - 0x70020000, // 0038 JMP #003A - 0x581C001B, // 0039 LDCONST R7 K27 - 0x7C140400, // 003A CALL R5 2 - 0x5818001C, // 003B LDCONST R6 K28 - 0x7C100400, // 003C CALL R4 2 - 0xA8040001, // 003D EXBLK 1 1 - 0x80040400, // 003E RET 1 R2 - 0xA8040001, // 003F EXBLK 1 1 - 0x70020010, // 0040 JMP #0052 - 0xAC0C0002, // 0041 CATCH R3 0 2 - 0x7002000D, // 0042 JMP #0051 - 0xB8163000, // 0043 GETNGBL R5 K24 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x001A3A06, // 0047 ADD R6 K29 R6 - 0x00180D1E, // 0048 ADD R6 R6 K30 - 0x601C0008, // 0049 GETGBL R7 G8 - 0x5C200800, // 004A MOVE R8 R4 - 0x7C1C0200, // 004B CALL R7 1 - 0x00180C07, // 004C ADD R6 R6 R7 - 0x581C001C, // 004D LDCONST R7 K28 - 0x7C140400, // 004E CALL R5 2 - 0x80040400, // 004F RET 1 R2 - 0x70020000, // 0050 JMP #0052 - 0xB0080000, // 0051 RAISE 2 R0 R0 - 0x80000000, // 0052 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_root_basic_commissioning), - }), - be_str_weak(_init_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040302, // 0003 EQ R1 R1 K2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x7C040200, // 0006 CALL R1 1 - 0x80000000, // 0007 RET 0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100502, // 0002 GETMET R4 R2 K2 + 0x7C100200, // 0003 CALL R4 1 + 0xA8020077, // 0004 EXBLK 0 #007D + 0x78060033, // 0005 JMPF R1 #003A + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x7C100200, // 0008 CALL R4 1 + 0x8C140706, // 0009 GETMET R5 R3 K6 + 0x8C1C0907, // 000A GETMET R7 R4 K7 + 0x58240008, // 000B LDCONST R9 K8 + 0x7C1C0400, // 000C CALL R7 2 + 0x58200009, // 000D LDCONST R8 K9 + 0x5824000A, // 000E LDCONST R9 K10 + 0x7C140800, // 000F CALL R5 4 + 0x90020A05, // 0010 SETMBR R0 K5 R5 + 0x8814010B, // 0011 GETMBR R5 R0 K11 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C14090C, // 0013 GETMET R5 R4 K12 + 0x581C000D, // 0014 LDCONST R7 K13 + 0x7C140400, // 0015 CALL R5 2 + 0x7416000F, // 0016 JMPT R5 #0027 + 0x8C14050E, // 0017 GETMET R5 R2 K14 + 0x881C0105, // 0018 GETMBR R7 R0 K5 + 0x8C200907, // 0019 GETMET R8 R4 K7 + 0x5828000D, // 001A LDCONST R10 K13 + 0x582C000A, // 001B LDCONST R11 K10 + 0x7C200600, // 001C CALL R8 3 + 0x8C240907, // 001D GETMET R9 R4 K7 + 0x582C000F, // 001E LDCONST R11 K15 + 0x5830000A, // 001F LDCONST R12 K10 + 0x7C240600, // 0020 CALL R9 3 + 0x8C280907, // 0021 GETMET R10 R4 K7 + 0x58300010, // 0022 LDCONST R12 K16 + 0x5834000A, // 0023 LDCONST R13 K10 + 0x7C280600, // 0024 CALL R10 3 + 0x7C140A00, // 0025 CALL R5 5 + 0x70020011, // 0026 JMP #0039 + 0xB8162200, // 0027 GETNGBL R5 K17 + 0x60180018, // 0028 GETGBL R6 G24 + 0x581C0012, // 0029 LDCONST R7 K18 + 0x88200105, // 002A GETMBR R8 R0 K5 + 0x8C240907, // 002B GETMET R9 R4 K7 + 0x582C000F, // 002C LDCONST R11 K15 + 0x5830000A, // 002D LDCONST R12 K10 + 0x7C240600, // 002E CALL R9 3 + 0x7C180600, // 002F CALL R6 3 + 0x581C0013, // 0030 LDCONST R7 K19 + 0x7C140400, // 0031 CALL R5 2 + 0x8C14050E, // 0032 GETMET R5 R2 K14 + 0x881C0105, // 0033 GETMBR R7 R0 K5 + 0x8C200907, // 0034 GETMET R8 R4 K7 + 0x5828000F, // 0035 LDCONST R10 K15 + 0x582C000A, // 0036 LDCONST R11 K10 + 0x7C200600, // 0037 CALL R8 3 + 0x7C140600, // 0038 CALL R5 3 + 0x70020032, // 0039 JMP #006D + 0xB8120600, // 003A GETNGBL R4 K3 + 0x8C100914, // 003B GETMET R4 R4 K20 + 0x7C100200, // 003C CALL R4 1 + 0x8C140706, // 003D GETMET R5 R3 K6 + 0x8C1C0907, // 003E GETMET R7 R4 K7 + 0x58240008, // 003F LDCONST R9 K8 + 0x7C1C0400, // 0040 CALL R7 2 + 0x58200009, // 0041 LDCONST R8 K9 + 0x5824000A, // 0042 LDCONST R9 K10 + 0x7C140800, // 0043 CALL R5 4 + 0x90022A05, // 0044 SETMBR R0 K21 R5 + 0x8814010B, // 0045 GETMBR R5 R0 K11 + 0x78160003, // 0046 JMPF R5 #004B + 0x8C14090C, // 0047 GETMET R5 R4 K12 + 0x581C000D, // 0048 LDCONST R7 K13 + 0x7C140400, // 0049 CALL R5 2 + 0x7416000F, // 004A JMPT R5 #005B + 0x8C14050E, // 004B GETMET R5 R2 K14 + 0x881C0115, // 004C GETMBR R7 R0 K21 + 0x8C200907, // 004D GETMET R8 R4 K7 + 0x5828000D, // 004E LDCONST R10 K13 + 0x582C000A, // 004F LDCONST R11 K10 + 0x7C200600, // 0050 CALL R8 3 + 0x8C240907, // 0051 GETMET R9 R4 K7 + 0x582C000F, // 0052 LDCONST R11 K15 + 0x5830000A, // 0053 LDCONST R12 K10 + 0x7C240600, // 0054 CALL R9 3 + 0x8C280907, // 0055 GETMET R10 R4 K7 + 0x58300010, // 0056 LDCONST R12 K16 + 0x5834000A, // 0057 LDCONST R13 K10 + 0x7C280600, // 0058 CALL R10 3 + 0x7C140A00, // 0059 CALL R5 5 + 0x70020011, // 005A JMP #006D + 0xB8162200, // 005B GETNGBL R5 K17 + 0x60180018, // 005C GETGBL R6 G24 + 0x581C0012, // 005D LDCONST R7 K18 + 0x88200115, // 005E GETMBR R8 R0 K21 + 0x8C240907, // 005F GETMET R9 R4 K7 + 0x582C000F, // 0060 LDCONST R11 K15 + 0x5830000A, // 0061 LDCONST R12 K10 + 0x7C240600, // 0062 CALL R9 3 + 0x7C180600, // 0063 CALL R6 3 + 0x581C0013, // 0064 LDCONST R7 K19 + 0x7C140400, // 0065 CALL R5 2 + 0x8C14050E, // 0066 GETMET R5 R2 K14 + 0x881C0115, // 0067 GETMBR R7 R0 K21 + 0x8C200907, // 0068 GETMET R8 R4 K7 + 0x5828000F, // 0069 LDCONST R10 K15 + 0x582C000A, // 006A LDCONST R11 K10 + 0x7C200600, // 006B CALL R8 3 + 0x7C140600, // 006C CALL R5 3 + 0xB8122200, // 006D GETNGBL R4 K17 + 0x60140018, // 006E GETGBL R5 G24 + 0x58180016, // 006F LDCONST R6 K22 + 0x78060001, // 0070 JMPF R1 #0073 + 0x581C0004, // 0071 LDCONST R7 K4 + 0x70020000, // 0072 JMP #0074 + 0x581C0014, // 0073 LDCONST R7 K20 + 0x78060001, // 0074 JMPF R1 #0077 + 0x88200105, // 0075 GETMBR R8 R0 K5 + 0x70020000, // 0076 JMP #0078 + 0x88200115, // 0077 GETMBR R8 R0 K21 + 0x7C140600, // 0078 CALL R5 3 + 0x58180013, // 0079 LDCONST R6 K19 + 0x7C100400, // 007A CALL R4 2 + 0xA8040001, // 007B EXBLK 1 1 + 0x7002000F, // 007C JMP #008D + 0xAC100002, // 007D CATCH R4 0 2 + 0x7002000C, // 007E JMP #008C + 0xB81A2200, // 007F GETNGBL R6 K17 + 0x601C0008, // 0080 GETGBL R7 G8 + 0x5C200800, // 0081 MOVE R8 R4 + 0x7C1C0200, // 0082 CALL R7 1 + 0x001E2E07, // 0083 ADD R7 K23 R7 + 0x001C0F18, // 0084 ADD R7 R7 K24 + 0x60200008, // 0085 GETGBL R8 G8 + 0x5C240A00, // 0086 MOVE R9 R5 + 0x7C200200, // 0087 CALL R8 1 + 0x001C0E08, // 0088 ADD R7 R7 R8 + 0x58200019, // 0089 LDCONST R8 K25 + 0x7C180400, // 008A CALL R6 2 + 0x70020000, // 008B JMP #008D + 0xB0080000, // 008C RAISE 2 R0 R0 + 0x8C10011A, // 008D GETMET R4 R0 K26 + 0x7C100200, // 008E CALL R4 1 + 0x80000000, // 008F RET 0 }) ) ); @@ -3805,194 +667,54 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ /******************************************************************** -** Solidified function: start_mdns_announce_hostnames +** Solidified function: conf_to_log ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080200, // 0002 LDBOOL R2 1 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(wifi), - /* K2 */ be_nested_str_weak(up), - /* K3 */ be_nested_str_weak(_mdns_announce_hostname), - /* K4 */ be_nested_str_weak(add_rule), - /* K5 */ be_nested_str_weak(Wifi_X23Connected), - /* K6 */ be_nested_str_weak(matter_mdns_host), - /* K7 */ be_nested_str_weak(eth), - /* K8 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_mdns_announce_hostnames), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x94040302, // 0003 GETIDX R1 R1 K2 - 0x78060003, // 0004 JMPF R1 #0009 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x7C040400, // 0007 CALL R1 2 - 0x70020005, // 0008 JMP #000F - 0xB8060000, // 0009 GETNGBL R1 K0 - 0x8C040304, // 000A GETMET R1 R1 K4 - 0x580C0005, // 000B LDCONST R3 K5 - 0x84100000, // 000C CLOSURE R4 P0 - 0x58140006, // 000D LDCONST R5 K6 - 0x7C040800, // 000E CALL R1 4 - 0xB8060000, // 000F GETNGBL R1 K0 - 0x8C040307, // 0010 GETMET R1 R1 K7 - 0x7C040200, // 0011 CALL R1 1 - 0x94040302, // 0012 GETIDX R1 R1 K2 - 0x78060003, // 0013 JMPF R1 #0018 - 0x8C040103, // 0014 GETMET R1 R0 K3 - 0x500C0200, // 0015 LDBOOL R3 1 0 - 0x7C040400, // 0016 CALL R1 2 - 0x70020005, // 0017 JMP #001E - 0xB8060000, // 0018 GETNGBL R1 K0 - 0x8C040304, // 0019 GETMET R1 R1 K4 - 0x580C0008, // 001A LDCONST R3 K8 - 0x84100001, // 001B CLOSURE R4 P1 - 0x58140006, // 001C LDCONST R5 K6 - 0x7C040800, // 001D CALL R1 4 - 0xA0000000, // 001E CLOSE R0 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_manual_pairing_code -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ +be_local_closure(class_Matter_Device_conf_to_log, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(root_discriminator), - /* K1 */ be_nested_str_weak(root_passcode), - /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Verhoeff), - /* K5 */ be_nested_str_weak(checksum), + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(k2l), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), + /* K5 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(compute_manual_pairing_code), + be_str_weak(conf_to_log), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x540A0FFE, // 0001 LDINT R2 4095 - 0x2C040202, // 0002 AND R1 R1 R2 - 0x540A0009, // 0003 LDINT R2 10 - 0x3C040202, // 0004 SHR R1 R1 R2 - 0x88080100, // 0005 GETMBR R2 R0 K0 - 0x540E02FF, // 0006 LDINT R3 768 - 0x2C080403, // 0007 AND R2 R2 R3 - 0x540E0005, // 0008 LDINT R3 6 - 0x38080403, // 0009 SHL R2 R2 R3 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x54123FFE, // 000B LDINT R4 16383 - 0x2C0C0604, // 000C AND R3 R3 R4 - 0x30080403, // 000D OR R2 R2 R3 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x5412000D, // 000F LDINT R4 14 - 0x3C0C0604, // 0010 SHR R3 R3 R4 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140002, // 0012 LDCONST R5 K2 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x5C200600, // 0015 MOVE R8 R3 - 0x7C100800, // 0016 CALL R4 4 - 0xB8160600, // 0017 GETNGBL R5 K3 - 0x88140B04, // 0018 GETMBR R5 R5 K4 - 0x8C140B05, // 0019 GETMET R5 R5 K5 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x00100805, // 001C ADD R4 R4 R5 - 0x80040800, // 001D RET 1 R4 + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x58080001, // 0001 LDCONST R2 K1 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100302, // 0003 GETMET R4 R1 K2 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA802000B, // 0007 EXBLK 0 #0014 + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x1C140903, // 000A EQ R5 R4 K3 + 0x78160000, // 000B JMPF R5 #000D + 0x7001FFFA, // 000C JMP #0008 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180004, // 000E LDCONST R6 K4 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x94200004, // 0010 GETIDX R8 R0 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x00080405, // 0012 ADD R2 R2 R5 + 0x7001FFF3, // 0013 JMP #0008 + 0x580C0005, // 0014 LDCONST R3 K5 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x80040400, // 0017 RET 1 R2 }) ) ); @@ -4000,110 +722,12 @@ be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ /******************************************************************** -** Solidified function: get_plugin_remote_info +** Solidified function: generate_random_passcode ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config_remotes), - /* K1 */ be_nested_str_weak(find), - }), - be_str_weak(get_plugin_remote_info), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_friendly_name -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ +be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ be_nested_proto( 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_name), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_plugin_by_friendly_name), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x1C080500, // 0006 EQ R2 R2 K0 - 0x780A0001, // 0007 JMPF R2 #000A - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - 0x58080000, // 000A LDCONST R2 K0 - 0x600C000C, // 000B GETGBL R3 G12 - 0x88100101, // 000C GETMBR R4 R0 K1 - 0x7C0C0200, // 000D CALL R3 1 - 0x140C0403, // 000E LT R3 R2 R3 - 0x780E0010, // 000F JMPF R3 #0021 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x940C0602, // 0011 GETIDX R3 R3 R2 - 0x8C100702, // 0012 GETMET R4 R3 K2 - 0x7C100200, // 0013 CALL R4 1 - 0x4C140000, // 0014 LDNIL R5 - 0x20140805, // 0015 NE R5 R4 R5 - 0x78160007, // 0016 JMPF R5 #001F - 0x6014000C, // 0017 GETGBL R5 G12 - 0x5C180800, // 0018 MOVE R6 R4 - 0x7C140200, // 0019 CALL R5 1 - 0x24140B00, // 001A GT R5 R5 K0 - 0x78160002, // 001B JMPF R5 #001F - 0x1C140801, // 001C EQ R5 R4 R1 - 0x78160000, // 001D JMPF R5 #001F - 0x80040600, // 001E RET 1 R3 - 0x00080503, // 001F ADD R2 R2 K3 - 0x7001FFE9, // 0020 JMP #000B - 0x4C0C0000, // 0021 LDNIL R3 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _trigger_read_sensors -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ - be_nested_proto( - 8, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4111,72 +735,54 @@ be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(read_sensors), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), - /* K7 */ be_nested_str_weak(load), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(plugins), - /* K10 */ be_nested_str_weak(parse_sensors), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_nested_str_weak(get), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(134217727), + /* K5 */ be_const_int(99999998), + /* K6 */ be_nested_str_weak(PASSCODE_INVALID), + /* K7 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(_trigger_read_sensors), + be_str_weak(generate_random_passcode), &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ + ( &(const binstruction[35]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0xB80E0200, // 0004 GETNGBL R3 K1 - 0x8C0C0703, // 0005 GETMET R3 R3 K3 - 0x58140004, // 0006 LDCONST R5 K4 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0006, // 0008 JMPF R3 #0010 - 0xB80E0A00, // 0009 GETNGBL R3 K5 - 0x60100008, // 000A GETGBL R4 G8 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C100200, // 000C CALL R4 1 - 0x00120C04, // 000D ADD R4 K6 R4 - 0x58140004, // 000E LDCONST R5 K4 - 0x7C0C0400, // 000F CALL R3 2 - 0x4C0C0000, // 0010 LDNIL R3 - 0x1C0C0403, // 0011 EQ R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x80000600, // 0013 RET 0 - 0x8C0C0307, // 0014 GETMET R3 R1 K7 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x4C100000, // 0017 LDNIL R4 - 0x20100604, // 0018 NE R4 R3 R4 - 0x7812000D, // 0019 JMPF R4 #0028 - 0x58100008, // 001A LDCONST R4 K8 - 0x6014000C, // 001B GETGBL R5 G12 - 0x88180109, // 001C GETMBR R6 R0 K9 - 0x7C140200, // 001D CALL R5 1 - 0x14140805, // 001E LT R5 R4 R5 - 0x78160006, // 001F JMPF R5 #0027 - 0x88140109, // 0020 GETMBR R5 R0 K9 - 0x94140A04, // 0021 GETIDX R5 R5 R4 - 0x8C140B0A, // 0022 GETMET R5 R5 K10 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C140400, // 0024 CALL R5 2 - 0x0010090B, // 0025 ADD R4 R4 K11 - 0x7001FFF3, // 0026 JMP #001B - 0x70020006, // 0027 JMP #002F - 0xB8120A00, // 0028 GETNGBL R4 K5 - 0x60140008, // 0029 GETGBL R5 G8 - 0x5C180400, // 002A MOVE R6 R2 - 0x7C140200, // 002B CALL R5 1 - 0x00161805, // 002C ADD R5 K12 R5 - 0x58180004, // 002D LDCONST R6 K4 - 0x7C100400, // 002E CALL R4 2 - 0x80000000, // 002F RET 0 + 0x4C080000, // 0001 LDNIL R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x780E001D, // 0003 JMPF R3 #0022 + 0x8C0C0301, // 0004 GETMET R3 R1 K1 + 0x54160003, // 0005 LDINT R5 4 + 0x7C0C0400, // 0006 CALL R3 2 + 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x58140003, // 0008 LDCONST R5 K3 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C0C0600, // 000A CALL R3 3 + 0x2C0C0704, // 000B AND R3 R3 K4 + 0x5C080600, // 000C MOVE R2 R3 + 0x240C0505, // 000D GT R3 R2 K5 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7001FFF1, // 000F JMP #0002 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100106, // 0011 GETMBR R4 R0 K6 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x1C140404, // 0016 EQ R5 R2 R4 + 0x78160000, // 0017 JMPF R5 #0019 + 0x4C080000, // 0018 LDNIL R2 + 0x7001FFF9, // 0019 JMP #0014 + 0x580C0007, // 001A LDCONST R3 K7 + 0xAC0C0200, // 001B CATCH R3 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x4C0C0000, // 001D LDNIL R3 + 0x200C0403, // 001E NE R3 R2 R3 + 0x780E0000, // 001F JMPF R3 #0021 + 0x80040400, // 0020 RET 1 R2 + 0x7001FFDF, // 0021 JMP #0002 + 0x80000000, // 0022 RET 0 }) ) ); @@ -4184,12 +790,12 @@ be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ /******************************************************************** -** Solidified function: adjust_next_ep +** Solidified function: event_fabrics_saved ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ +be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ be_nested_proto( - 5, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4198,89 +804,27 @@ be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(next_ep), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(adjust_next_ep), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000A, // 0005 EXBLK 0 #0011 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x600C0009, // 0008 GETGBL R3 G9 - 0x5C100400, // 0009 MOVE R4 R2 - 0x7C0C0200, // 000A CALL R3 1 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x28100604, // 000C GE R4 R3 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x00100703, // 000E ADD R4 R3 K3 - 0x90020404, // 000F SETMBR R0 K2 R4 - 0x7001FFF4, // 0010 JMP #0006 - 0x58040004, // 0011 LDCONST R1 K4 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery_all_fabrics -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(save_param), }), - be_str_weak(mdns_remove_op_discovery_all_fabrics), + be_str_weak(event_fabrics_saved), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x24040302, // 0003 GT R1 R1 K2 + 0x78060005, // 0004 JMPF R1 #000B + 0x88040103, // 0005 GETMBR R1 R0 K3 + 0x74060003, // 0006 JMPT R1 #000B + 0x50040200, // 0007 LDBOOL R1 1 0 + 0x90020601, // 0008 SETMBR R0 K3 R1 + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x80000000, // 000B RET 0 }) ) ); @@ -4288,58 +832,113 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* /******************************************************************** -** Solidified function: get_active_endpoints +** Solidified function: process_attribute_expansion ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ +be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ be_nested_proto( - 9, /* nstack */ - 2, /* argc */ + 16, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins), - /* K1 */ be_nested_str_weak(get_endpoint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(start), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(get_pi), + /* K8 */ be_nested_str_weak(endpoint_found), + /* K9 */ be_nested_str_weak(status), + /* K10 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K11 */ be_nested_str_weak(cluster_found), + /* K12 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K13 */ be_nested_str_weak(attribute_found), + /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), }), - be_str_weak(get_active_endpoints), + be_str_weak(process_attribute_expansion), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020011, // 0005 EXBLK 0 #0018 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140901, // 0008 GETMET R5 R4 K1 - 0x7C140200, // 0009 CALL R5 1 - 0x78060002, // 000A JMPF R1 #000E - 0x1C180B02, // 000B EQ R6 R5 K2 - 0x781A0000, // 000C JMPF R6 #000E - 0x7001FFF7, // 000D JMP #0006 - 0x8C180503, // 000E GETMET R6 R2 K3 - 0x5C200A00, // 000F MOVE R8 R5 - 0x7C180400, // 0010 CALL R6 2 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x781A0002, // 0013 JMPF R6 #0017 - 0x8C180504, // 0014 GETMET R6 R2 K4 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x7C180400, // 0016 CALL R6 2 - 0x7001FFED, // 0017 JMP #0006 - 0x580C0005, // 0018 LDCONST R3 K5 - 0xAC0C0200, // 0019 CATCH R3 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x80040400, // 001B RET 1 R2 + ( &(const binstruction[73]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x88140302, // 0002 GETMBR R5 R1 K2 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x88240300, // 0006 GETMBR R9 R1 K0 + 0x4C280000, // 0007 LDNIL R10 + 0x2024120A, // 0008 NE R9 R9 R10 + 0x78260007, // 0009 JMPF R9 #0012 + 0x88240301, // 000A GETMBR R9 R1 K1 + 0x4C280000, // 000B LDNIL R10 + 0x2024120A, // 000C NE R9 R9 R10 + 0x78260003, // 000D JMPF R9 #0012 + 0x88240302, // 000E GETMBR R9 R1 K2 + 0x4C280000, // 000F LDNIL R10 + 0x2024120A, // 0010 NE R9 R9 R10 + 0x74260000, // 0011 JMPT R9 #0013 + 0x50240001, // 0012 LDBOOL R9 0 1 + 0x50240200, // 0013 LDBOOL R9 1 0 + 0xB82A0600, // 0014 GETNGBL R10 K3 + 0x8C281504, // 0015 GETMET R10 R10 K4 + 0x5C300000, // 0016 MOVE R12 R0 + 0x7C280400, // 0017 CALL R10 2 + 0x8C2C1505, // 0018 GETMET R11 R10 K5 + 0x5C340200, // 0019 MOVE R13 R1 + 0x4C380000, // 001A LDNIL R14 + 0x7C2C0600, // 001B CALL R11 3 + 0x4C2C0000, // 001C LDNIL R11 + 0x8C301506, // 001D GETMET R12 R10 K6 + 0x7C300200, // 001E CALL R12 1 + 0x5C2C1800, // 001F MOVE R11 R12 + 0x4C340000, // 0020 LDNIL R13 + 0x2030180D, // 0021 NE R12 R12 R13 + 0x78320009, // 0022 JMPF R12 #002D + 0x5C300400, // 0023 MOVE R12 R2 + 0x8C341507, // 0024 GETMET R13 R10 K7 + 0x7C340200, // 0025 CALL R13 1 + 0x5C381600, // 0026 MOVE R14 R11 + 0x5C3C1200, // 0027 MOVE R15 R9 + 0x7C300600, // 0028 CALL R12 3 + 0x78260001, // 0029 JMPF R9 #002C + 0x78320000, // 002A JMPF R12 #002C + 0x80001A00, // 002B RET 0 + 0x7001FFEF, // 002C JMP #001D + 0x78260019, // 002D JMPF R9 #0048 + 0x88301508, // 002E GETMBR R12 R10 K8 + 0x74320003, // 002F JMPT R12 #0034 + 0xB8320600, // 0030 GETNGBL R12 K3 + 0x8830190A, // 0031 GETMBR R12 R12 K10 + 0x9006120C, // 0032 SETMBR R1 K9 R12 + 0x7002000E, // 0033 JMP #0043 + 0x8830150B, // 0034 GETMBR R12 R10 K11 + 0x74320003, // 0035 JMPT R12 #003A + 0xB8320600, // 0036 GETNGBL R12 K3 + 0x8830190C, // 0037 GETMBR R12 R12 K12 + 0x9006120C, // 0038 SETMBR R1 K9 R12 + 0x70020008, // 0039 JMP #0043 + 0x8830150D, // 003A GETMBR R12 R10 K13 + 0x74320003, // 003B JMPT R12 #0040 + 0xB8320600, // 003C GETNGBL R12 K3 + 0x8830190E, // 003D GETMBR R12 R12 K14 + 0x9006120C, // 003E SETMBR R1 K9 R12 + 0x70020002, // 003F JMP #0043 + 0xB8320600, // 0040 GETNGBL R12 K3 + 0x8830190F, // 0041 GETMBR R12 R12 K15 + 0x9006120C, // 0042 SETMBR R1 K9 R12 + 0x5C300400, // 0043 MOVE R12 R2 + 0x4C340000, // 0044 LDNIL R13 + 0x5C380200, // 0045 MOVE R14 R1 + 0x503C0200, // 0046 LDBOOL R15 1 0 + 0x7C300600, // 0047 CALL R12 3 + 0x80000000, // 0048 RET 0 }) ) ); @@ -4347,10 +946,10 @@ be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ /******************************************************************** -** Solidified function: every_second +** Solidified function: every_250ms ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_second, /* name */ +be_local_closure(class_Matter_Device_every_250ms, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -4361,33 +960,33 @@ be_local_closure(class_Matter_Device_every_second, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(commissioning_open), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(every_250ms), + /* K2 */ be_nested_str_weak(read_sensors_scheduler), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(plugins), + /* K5 */ be_const_int(1), }), - be_str_weak(every_second), + be_str_weak(every_250ms), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x4C080000, // 0007 LDNIL R2 - 0x20040202, // 0008 NE R1 R1 R2 - 0x78060006, // 0009 JMPF R1 #0011 - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0103, // 000C GETMBR R3 R0 K3 - 0x7C040400, // 000D CALL R1 2 - 0x78060001, // 000E JMPF R1 #0011 - 0x4C040000, // 000F LDNIL R1 - 0x90020601, // 0010 SETMBR R0 K3 R1 + 0x8C040102, // 0003 GETMET R1 R0 K2 + 0x7C040200, // 0004 CALL R1 1 + 0x58040003, // 0005 LDCONST R1 K3 + 0x6008000C, // 0006 GETGBL R2 G12 + 0x880C0104, // 0007 GETMBR R3 R0 K4 + 0x7C080200, // 0008 CALL R2 1 + 0x14080202, // 0009 LT R2 R1 R2 + 0x780A0005, // 000A JMPF R2 #0011 + 0x88080104, // 000B GETMBR R2 R0 K4 + 0x94080401, // 000C GETIDX R2 R2 R1 + 0x8C080501, // 000D GETMET R2 R2 K1 + 0x7C080200, // 000E CALL R2 1 + 0x00040305, // 000F ADD R1 R1 K5 + 0x7001FFF4, // 0010 JMP #0006 0x80000000, // 0011 RET 0 }) ) @@ -4396,121 +995,454 @@ be_local_closure(class_Matter_Device_every_second, /* name */ /******************************************************************** -** Solidified function: clean_remotes +** Solidified function: invoke_request ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_clean_remotes, /* name */ +be_local_closure(class_Matter_Device_invoke_request, /* name */ be_nested_proto( - 10, /* nstack */ - 1, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(http_remotes), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(http_remote), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(keys), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(close), - /* K16 */ be_nested_str_weak(remove), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(invoke_request), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), }), - be_str_weak(clean_remotes), + be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x780A004B, // 0002 JMPF R2 #004F - 0x60080013, // 0003 GETGBL R2 G19 - 0x7C080000, // 0004 CALL R2 0 - 0x600C0010, // 0005 GETGBL R3 G16 - 0x88100101, // 0006 GETMBR R4 R0 K1 + ( &(const binstruction[24]) { /* code */ + 0x58100000, // 0000 LDCONST R4 K0 + 0x88140701, // 0001 GETMBR R5 R3 K1 + 0x6018000C, // 0002 GETGBL R6 G12 + 0x881C0102, // 0003 GETMBR R7 R0 K2 + 0x7C180200, // 0004 CALL R6 1 + 0x14180806, // 0005 LT R6 R4 R6 + 0x781A000C, // 0006 JMPF R6 #0014 + 0x88180102, // 0007 GETMBR R6 R0 K2 + 0x94180C04, // 0008 GETIDX R6 R6 R4 + 0x881C0D01, // 0009 GETMBR R7 R6 K1 + 0x1C1C0E05, // 000A EQ R7 R7 R5 + 0x781E0005, // 000B JMPF R7 #0012 + 0x8C1C0D03, // 000C GETMET R7 R6 K3 + 0x5C240200, // 000D MOVE R9 R1 + 0x5C280400, // 000E MOVE R10 R2 + 0x5C2C0600, // 000F MOVE R11 R3 + 0x7C1C0800, // 0010 CALL R7 4 + 0x80040E00, // 0011 RET 1 R7 + 0x00100904, // 0012 ADD R4 R4 K4 + 0x7001FFED, // 0013 JMP #0002 + 0xB81A0C00, // 0014 GETNGBL R6 K6 + 0x88180D07, // 0015 GETMBR R6 R6 K7 + 0x900E0A06, // 0016 SETMBR R3 K5 R6 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: k2l +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_k2l, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), + }), + be_str_weak(k2l), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020005, // 000B EXBLK 0 #0012 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x7C140400, // 0010 CALL R5 2 + 0x7001FFF9, // 0011 JMP #000C + 0x580C0003, // 0012 LDCONST R3 K3 + 0xAC0C0200, // 0013 CATCH R3 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x600C0010, // 0015 GETGBL R3 G16 + 0x6010000C, // 0016 GETGBL R4 G12 + 0x5C140400, // 0017 MOVE R5 R2 + 0x7C100200, // 0018 CALL R4 1 + 0x04100904, // 0019 SUB R4 R4 K4 + 0x40120804, // 001A CONNECT R4 K4 R4 + 0x7C0C0200, // 001B CALL R3 1 + 0xA8020010, // 001C EXBLK 0 #002E + 0x5C100600, // 001D MOVE R4 R3 + 0x7C100000, // 001E CALL R4 0 + 0x94140404, // 001F GETIDX R5 R2 R4 + 0x5C180800, // 0020 MOVE R6 R4 + 0x241C0D05, // 0021 GT R7 R6 K5 + 0x781E0008, // 0022 JMPF R7 #002C + 0x041C0D04, // 0023 SUB R7 R6 K4 + 0x941C0407, // 0024 GETIDX R7 R2 R7 + 0x241C0E05, // 0025 GT R7 R7 R5 + 0x781E0004, // 0026 JMPF R7 #002C + 0x041C0D04, // 0027 SUB R7 R6 K4 + 0x941C0407, // 0028 GETIDX R7 R2 R7 + 0x98080C07, // 0029 SETIDX R2 R6 R7 + 0x04180D04, // 002A SUB R6 R6 K4 + 0x7001FFF4, // 002B JMP #0021 + 0x98080C05, // 002C SETIDX R2 R6 R5 + 0x7001FFEE, // 002D JMP #001D + 0x580C0003, // 002E LDCONST R3 K3 + 0xAC0C0200, // 002F CATCH R3 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040400, // 0031 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _instantiate_plugins_from_config +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ + be_nested_proto( + 17, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(k2l_num), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Plugin_Root), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), + /* K10 */ be_nested_str_weak(root), + /* K11 */ be_nested_str_weak(), + /* K12 */ be_nested_str_weak(Plugin_Aggregator), + /* K13 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K14 */ be_nested_str_weak(aggregator), + /* K15 */ be_nested_str_weak(find), + /* K16 */ be_nested_str_weak(type), + /* K17 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), + /* K18 */ be_const_int(3), + /* K19 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), + /* K20 */ be_nested_str_weak(plugins_classes), + /* K21 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K22 */ be_nested_str_weak(_X27_X20skipping), + /* K23 */ be_nested_str_weak(conf_to_log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_nested_str_weak(stop_iteration), + /* K27 */ be_nested_str_weak(tasmota), + /* K28 */ be_nested_str_weak(publish_result), + /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), + /* K30 */ be_nested_str_weak(Matter), + }), + be_str_weak(_instantiate_plugins_from_config), + &be_const_str_solidified, + ( &(const binstruction[146]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x880C0101, // 0003 GETMBR R3 R0 K1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0xB8160600, // 0005 GETNGBL R5 K3 + 0x8C140B04, // 0006 GETMET R5 R5 K4 + 0x5C1C0000, // 0007 MOVE R7 R0 + 0x58200005, // 0008 LDCONST R8 K5 + 0x60240013, // 0009 GETGBL R9 G19 + 0x7C240000, // 000A CALL R9 0 + 0x7C140800, // 000B CALL R5 4 + 0x7C0C0400, // 000C CALL R3 2 + 0xB80E0C00, // 000D GETNGBL R3 K6 + 0x58100007, // 000E LDCONST R4 K7 + 0x58140008, // 000F LDCONST R5 K8 + 0x7C0C0400, // 0010 CALL R3 2 + 0xB80E0C00, // 0011 GETNGBL R3 K6 + 0x60100018, // 0012 GETGBL R4 G24 + 0x58140009, // 0013 LDCONST R5 K9 + 0x58180005, // 0014 LDCONST R6 K5 + 0x581C000A, // 0015 LDCONST R7 K10 + 0x5820000B, // 0016 LDCONST R8 K11 + 0x7C100800, // 0017 CALL R4 4 + 0x58140008, // 0018 LDCONST R5 K8 + 0x7C0C0400, // 0019 CALL R3 2 + 0x880C0101, // 001A GETMBR R3 R0 K1 + 0x8C0C0702, // 001B GETMET R3 R3 K2 + 0xB8160600, // 001C GETNGBL R5 K3 + 0x8C140B0C, // 001D GETMET R5 R5 K12 + 0x5C1C0000, // 001E MOVE R7 R0 + 0xB8220600, // 001F GETNGBL R8 K3 + 0x8820110D, // 0020 GETMBR R8 R8 K13 + 0x60240013, // 0021 GETGBL R9 G19 + 0x7C240000, // 0022 CALL R9 0 + 0x7C140800, // 0023 CALL R5 4 + 0x7C0C0400, // 0024 CALL R3 2 + 0xB80E0C00, // 0025 GETNGBL R3 K6 + 0x60100018, // 0026 GETGBL R4 G24 + 0x58140009, // 0027 LDCONST R5 K9 + 0xB81A0600, // 0028 GETNGBL R6 K3 + 0x88180D0D, // 0029 GETMBR R6 R6 K13 + 0x581C000E, // 002A LDCONST R7 K14 + 0x5820000B, // 002B LDCONST R8 K11 + 0x7C100800, // 002C CALL R4 4 + 0x58140008, // 002D LDCONST R5 K8 + 0x7C0C0400, // 002E CALL R3 2 + 0x600C0010, // 002F GETGBL R3 G16 + 0x5C100400, // 0030 MOVE R4 R2 + 0x7C0C0200, // 0031 CALL R3 1 + 0xA8020055, // 0032 EXBLK 0 #0089 + 0x5C100600, // 0033 MOVE R4 R3 + 0x7C100000, // 0034 CALL R4 0 + 0x1C140905, // 0035 EQ R5 R4 K5 + 0x78160000, // 0036 JMPF R5 #0038 + 0x7001FFFA, // 0037 JMP #0033 + 0xA802003E, // 0038 EXBLK 0 #0078 + 0x60140008, // 0039 GETGBL R5 G8 + 0x5C180800, // 003A MOVE R6 R4 + 0x7C140200, // 003B CALL R5 1 + 0x94140205, // 003C GETIDX R5 R1 R5 + 0x8C180B0F, // 003D GETMET R6 R5 K15 + 0x58200010, // 003E LDCONST R8 K16 + 0x7C180400, // 003F CALL R6 2 + 0x4C1C0000, // 0040 LDNIL R7 + 0x1C1C0C07, // 0041 EQ R7 R6 R7 + 0x781E0005, // 0042 JMPF R7 #0049 + 0xB81E0C00, // 0043 GETNGBL R7 K6 + 0x58200011, // 0044 LDCONST R8 K17 + 0x58240012, // 0045 LDCONST R9 K18 + 0x7C1C0400, // 0046 CALL R7 2 + 0xA8040001, // 0047 EXBLK 1 1 + 0x7001FFE9, // 0048 JMP #0033 + 0x1C1C0D0A, // 0049 EQ R7 R6 K10 + 0x781E0005, // 004A JMPF R7 #0051 + 0xB81E0C00, // 004B GETNGBL R7 K6 + 0x58200013, // 004C LDCONST R8 K19 + 0x58240012, // 004D LDCONST R9 K18 + 0x7C1C0400, // 004E CALL R7 2 + 0xA8040001, // 004F EXBLK 1 1 + 0x7001FFE1, // 0050 JMP #0033 + 0x881C0114, // 0051 GETMBR R7 R0 K20 + 0x8C1C0F0F, // 0052 GETMET R7 R7 K15 + 0x5C240C00, // 0053 MOVE R9 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x4C200000, // 0055 LDNIL R8 + 0x1C200E08, // 0056 EQ R8 R7 R8 + 0x78220009, // 0057 JMPF R8 #0062 + 0xB8220C00, // 0058 GETNGBL R8 K6 + 0x60240008, // 0059 GETGBL R9 G8 + 0x5C280C00, // 005A MOVE R10 R6 + 0x7C240200, // 005B CALL R9 1 + 0x00262A09, // 005C ADD R9 K21 R9 + 0x00241316, // 005D ADD R9 R9 K22 + 0x58280008, // 005E LDCONST R10 K8 + 0x7C200400, // 005F CALL R8 2 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7001FFD0, // 0061 JMP #0033 + 0x5C200E00, // 0062 MOVE R8 R7 + 0x5C240000, // 0063 MOVE R9 R0 + 0x5C280800, // 0064 MOVE R10 R4 + 0x5C2C0A00, // 0065 MOVE R11 R5 + 0x7C200600, // 0066 CALL R8 3 + 0x88240101, // 0067 GETMBR R9 R0 K1 + 0x8C241302, // 0068 GETMET R9 R9 K2 + 0x5C2C1000, // 0069 MOVE R11 R8 + 0x7C240400, // 006A CALL R9 2 + 0xB8260C00, // 006B GETNGBL R9 K6 + 0x60280018, // 006C GETGBL R10 G24 + 0x582C0009, // 006D LDCONST R11 K9 + 0x5C300800, // 006E MOVE R12 R4 + 0x5C340C00, // 006F MOVE R13 R6 + 0x8C380117, // 0070 GETMET R14 R0 K23 + 0x5C400A00, // 0071 MOVE R16 R5 + 0x7C380400, // 0072 CALL R14 2 + 0x7C280800, // 0073 CALL R10 4 + 0x582C0008, // 0074 LDCONST R11 K8 + 0x7C240400, // 0075 CALL R9 2 + 0xA8040001, // 0076 EXBLK 1 1 + 0x7002000F, // 0077 JMP #0088 + 0xAC140002, // 0078 CATCH R5 0 2 + 0x7002000C, // 0079 JMP #0087 + 0xB81E0C00, // 007A GETNGBL R7 K6 + 0x60200008, // 007B GETGBL R8 G8 + 0x5C240A00, // 007C MOVE R9 R5 + 0x7C200200, // 007D CALL R8 1 + 0x00223008, // 007E ADD R8 K24 R8 + 0x00201119, // 007F ADD R8 R8 K25 + 0x60240008, // 0080 GETGBL R9 G8 + 0x5C280C00, // 0081 MOVE R10 R6 + 0x7C240200, // 0082 CALL R9 1 + 0x00201009, // 0083 ADD R8 R8 R9 + 0x58240008, // 0084 LDCONST R9 K8 + 0x7C1C0400, // 0085 CALL R7 2 + 0x70020000, // 0086 JMP #0088 + 0xB0080000, // 0087 RAISE 2 R0 R0 + 0x7001FFA9, // 0088 JMP #0033 + 0x580C001A, // 0089 LDCONST R3 K26 + 0xAC0C0200, // 008A CATCH R3 1 0 + 0xB0080000, // 008B RAISE 2 R0 R0 + 0xB80E3600, // 008C GETNGBL R3 K27 + 0x8C0C071C, // 008D GETMET R3 R3 K28 + 0x5814001D, // 008E LDCONST R5 K29 + 0x5818001E, // 008F LDCONST R6 K30 + 0x7C0C0600, // 0090 CALL R3 3 + 0x80000000, // 0091 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_read_sensors_schedule +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_sensor_time), + /* K1 */ be_nested_str_weak(probe_sensor_timestamp), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(jitter), + }), + be_str_weak(add_read_sensors_schedule), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x740A0002, // 0003 JMPT R2 #0007 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x24080401, // 0005 GT R2 R2 R1 + 0x780A0005, // 0006 JMPF R2 #000D + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0xB80A0400, // 0008 GETNGBL R2 K2 + 0x8C080503, // 0009 GETMET R2 R2 K3 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x90020202, // 000C SETMBR R0 K1 R2 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_fabric +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_remove_fabric, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), + /* K2 */ be_nested_str_weak(get_fabric_id), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(reverse), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(message_handler), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(subs_shop), + /* K10 */ be_nested_str_weak(remove_by_fabric), + /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(remove_fabric), + /* K14 */ be_nested_str_weak(save_fabrics), + }), + be_str_weak(remove_fabric), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0018, // 0002 JMPF R2 #001C + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x8C0C0302, // 0004 GETMET R3 R1 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020003, // 0008 EXBLK 0 #000D - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x98080902, // 000B SETIDX R2 R4 K2 - 0x7001FFFB, // 000C JMP #0009 - 0x580C0003, // 000D LDCONST R3 K3 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100104, // 0011 GETMBR R4 R0 K4 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA802000F, // 0013 EXBLK 0 #0024 - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x8C140305, // 0016 GETMET R5 R1 K5 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200006, // 0018 LDCONST R8 K6 - 0x7C140600, // 0019 CALL R5 3 - 0x4C180000, // 001A LDNIL R6 - 0x20180A06, // 001B NE R6 R5 R6 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180507, // 001D GETMET R6 R2 K7 - 0x5C200A00, // 001E MOVE R8 R5 - 0x58240002, // 001F LDCONST R9 K2 - 0x7C180600, // 0020 CALL R6 3 - 0x00180D08, // 0021 ADD R6 R6 K8 - 0x98080A06, // 0022 SETIDX R2 R5 R6 - 0x7001FFEF, // 0023 JMP #0014 - 0x580C0003, // 0024 LDCONST R3 K3 - 0xAC0C0200, // 0025 CATCH R3 1 0 - 0xB0080000, // 0026 RAISE 2 R0 R0 - 0x600C0012, // 0027 GETGBL R3 G18 - 0x7C0C0000, // 0028 CALL R3 0 - 0x60100010, // 0029 GETGBL R4 G16 - 0x8C140509, // 002A GETMET R5 R2 K9 - 0x7C140200, // 002B CALL R5 1 - 0x7C100200, // 002C CALL R4 1 - 0xA8020008, // 002D EXBLK 0 #0037 - 0x5C140800, // 002E MOVE R5 R4 - 0x7C140000, // 002F CALL R5 0 - 0x94180405, // 0030 GETIDX R6 R2 R5 - 0x1C180D02, // 0031 EQ R6 R6 K2 - 0x781A0002, // 0032 JMPF R6 #0036 - 0x8C18070A, // 0033 GETMET R6 R3 K10 - 0x5C200A00, // 0034 MOVE R8 R5 - 0x7C180400, // 0035 CALL R6 2 - 0x7001FFF6, // 0036 JMP #002E - 0x58100003, // 0037 LDCONST R4 K3 - 0xAC100200, // 0038 CATCH R4 1 0 - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x60100010, // 003A GETGBL R4 G16 - 0x5C140600, // 003B MOVE R5 R3 - 0x7C100200, // 003C CALL R4 1 - 0xA802000D, // 003D EXBLK 0 #004C - 0x5C140800, // 003E MOVE R5 R4 - 0x7C140000, // 003F CALL R5 0 - 0xB81A1600, // 0040 GETNGBL R6 K11 - 0x881C0B0D, // 0041 GETMBR R7 R5 K13 - 0x001E1807, // 0042 ADD R7 K12 R7 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x7C180400, // 0044 CALL R6 2 - 0x8C180B0F, // 0045 GETMET R6 R5 K15 - 0x7C180200, // 0046 CALL R6 1 - 0x88180101, // 0047 GETMBR R6 R0 K1 - 0x8C180D10, // 0048 GETMET R6 R6 K16 - 0x88200B0D, // 0049 GETMBR R8 R5 K13 - 0x7C180400, // 004A CALL R6 2 - 0x7001FFF1, // 004B JMP #003E - 0x58100003, // 004C LDCONST R4 K3 - 0xAC100200, // 004D CATCH R4 1 0 - 0xB0080000, // 004E RAISE 2 R0 R0 - 0x80000000, // 004F RET 0 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x7C0C0200, // 000B CALL R3 1 + 0x000E0203, // 000C ADD R3 K1 R3 + 0x58100006, // 000D LDCONST R4 K6 + 0x7C080400, // 000E CALL R2 2 + 0x88080107, // 000F GETMBR R2 R0 K7 + 0x88080508, // 0010 GETMBR R2 R2 K8 + 0x88080509, // 0011 GETMBR R2 R2 K9 + 0x8C08050A, // 0012 GETMET R2 R2 K10 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x8C08010B, // 0015 GETMET R2 R0 K11 + 0x5C100200, // 0016 MOVE R4 R1 + 0x7C080400, // 0017 CALL R2 2 + 0x8808010C, // 0018 GETMBR R2 R0 K12 + 0x8C08050D, // 0019 GETMET R2 R2 K13 + 0x5C100200, // 001A MOVE R4 R1 + 0x7C080400, // 001B CALL R2 2 + 0x8808010C, // 001C GETMBR R2 R0 K12 + 0x8C08050E, // 001D GETMET R2 R2 K14 + 0x7C080200, // 001E CALL R2 1 + 0x80000000, // 001F RET 0 }) ) ); @@ -4712,10 +1644,244 @@ be_local_closure(class_Matter_Device_load_param, /* name */ /******************************************************************** -** Solidified function: received_ack +** Solidified function: compute_qrcode_content ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_received_ack, /* name */ +be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resize), + /* K1 */ be_nested_str_weak(setbits), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(vendorid), + /* K4 */ be_nested_str_weak(productid), + /* K5 */ be_nested_str_weak(root_discriminator), + /* K6 */ be_nested_str_weak(root_passcode), + /* K7 */ be_const_int(134217727), + /* K8 */ be_nested_str_weak(MT_X3A), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(Base38), + /* K11 */ be_nested_str_weak(encode), + }), + be_str_weak(compute_qrcode_content), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x7C040000, // 0001 CALL R1 0 + 0x8C040300, // 0002 GETMET R1 R1 K0 + 0x540E000A, // 0003 LDINT R3 11 + 0x7C040400, // 0004 CALL R1 2 + 0x8C080301, // 0005 GETMET R2 R1 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x5416000F, // 0007 LDINT R5 16 + 0x88180103, // 0008 GETMBR R6 R0 K3 + 0x7C080800, // 0009 CALL R2 4 + 0x8C080301, // 000A GETMET R2 R1 K1 + 0x54120012, // 000B LDINT R4 19 + 0x5416000F, // 000C LDINT R5 16 + 0x88180104, // 000D GETMBR R6 R0 K4 + 0x7C080800, // 000E CALL R2 4 + 0x8C080301, // 000F GETMET R2 R1 K1 + 0x54120024, // 0010 LDINT R4 37 + 0x54160007, // 0011 LDINT R5 8 + 0x541A0003, // 0012 LDINT R6 4 + 0x7C080800, // 0013 CALL R2 4 + 0x8C080301, // 0014 GETMET R2 R1 K1 + 0x5412002C, // 0015 LDINT R4 45 + 0x5416000B, // 0016 LDINT R5 12 + 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x541E0FFE, // 0018 LDINT R7 4095 + 0x2C180C07, // 0019 AND R6 R6 R7 + 0x7C080800, // 001A CALL R2 4 + 0x8C080301, // 001B GETMET R2 R1 K1 + 0x54120038, // 001C LDINT R4 57 + 0x5416001A, // 001D LDINT R5 27 + 0x88180106, // 001E GETMBR R6 R0 K6 + 0x2C180D07, // 001F AND R6 R6 K7 + 0x7C080800, // 0020 CALL R2 4 + 0xB80A1200, // 0021 GETNGBL R2 K9 + 0x8808050A, // 0022 GETMBR R2 R2 K10 + 0x8C08050B, // 0023 GETMET R2 R2 K11 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x000A1002, // 0026 ADD R2 K8 R2 + 0x80040400, // 0027 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(Path), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(message_handler), + /* K6 */ be_nested_str_weak(im), + /* K7 */ be_nested_str_weak(subs_shop), + /* K8 */ be_nested_str_weak(attribute_updated_ctx), + }), + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160000, // 0002 JMPF R5 #0004 + 0x50100000, // 0003 LDBOOL R4 0 0 + 0xB8160000, // 0004 GETNGBL R5 K0 + 0x8C140B01, // 0005 GETMET R5 R5 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x90160401, // 0007 SETMBR R5 K2 R1 + 0x90160602, // 0008 SETMBR R5 K3 R2 + 0x90160803, // 0009 SETMBR R5 K4 R3 + 0x88180105, // 000A GETMBR R6 R0 K5 + 0x88180D06, // 000B GETMBR R6 R6 K6 + 0x88180D07, // 000C GETMBR R6 R6 K7 + 0x8C180D08, // 000D GETMET R6 R6 K8 + 0x5C200A00, // 000E MOVE R8 R5 + 0x5C240800, // 000F MOVE R9 R4 + 0x7C180600, // 0010 CALL R6 3 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_http_remote +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_register_http_remote, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(get_timeout), + /* K3 */ be_nested_str_weak(set_timeout), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(HTTP_remote), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(set_info), + }), + be_str_weak(register_http_remote), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x600C0013, // 0004 GETGBL R3 G19 + 0x7C0C0000, // 0005 CALL R3 0 + 0x90020003, // 0006 SETMBR R0 K0 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x8C100901, // 0009 GETMET R4 R4 K1 + 0x5C180200, // 000A MOVE R6 R1 + 0x7C100400, // 000B CALL R4 2 + 0x78120009, // 000C JMPF R4 #0017 + 0x88100100, // 000D GETMBR R4 R0 K0 + 0x940C0801, // 000E GETIDX R3 R4 R1 + 0x8C140702, // 000F GETMET R5 R3 K2 + 0x7C140200, // 0010 CALL R5 1 + 0x14140405, // 0011 LT R5 R2 R5 + 0x78160002, // 0012 JMPF R5 #0016 + 0x8C140703, // 0013 GETMET R5 R3 K3 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C140400, // 0015 CALL R5 2 + 0x70020011, // 0016 JMP #0029 + 0xB8120800, // 0017 GETNGBL R4 K4 + 0x8C100905, // 0018 GETMET R4 R4 K5 + 0x5C180000, // 0019 MOVE R6 R0 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x5C200400, // 001B MOVE R8 R2 + 0x7C100800, // 001C CALL R4 4 + 0x5C0C0800, // 001D MOVE R3 R4 + 0x88100106, // 001E GETMBR R4 R0 K6 + 0x8C100901, // 001F GETMET R4 R4 K1 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x78120003, // 0022 JMPF R4 #0027 + 0x8C100707, // 0023 GETMET R4 R3 K7 + 0x88180106, // 0024 GETMBR R6 R0 K6 + 0x94180C01, // 0025 GETIDX R6 R6 R1 + 0x7C100400, // 0026 CALL R4 2 + 0x88100100, // 0027 GETMBR R4 R0 K0 + 0x98100203, // 0028 SETIDX R4 R1 R3 + 0x80040600, // 0029 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + }), + be_str_weak(is_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_class_arg +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -4725,18 +1891,24 @@ be_local_closure(class_Matter_Device_received_ack, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(received_ack), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_nested_str_weak(), }), - be_str_weak(received_ack), + be_str_weak(get_plugin_class_arg), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ + ( &(const binstruction[ 9]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 }) ) ); @@ -4744,12 +1916,12 @@ be_local_closure(class_Matter_Device_received_ack, /* name */ /******************************************************************** -** Solidified function: start_root_basic_commissioning +** Solidified function: MtrInfo_one ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ +be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ be_nested_proto( - 13, /* nstack */ + 9, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4757,68 +1929,37 @@ be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name * 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(PASE_TIMEOUT), - /* K1 */ be_nested_str_weak(compute_manual_pairing_code), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(compute_qrcode_content), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(publish_result), - /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), - /* K9 */ be_nested_str_weak(Matter), - /* K10 */ be_nested_str_weak(_compute_pbkdf), - /* K11 */ be_nested_str_weak(root_passcode), - /* K12 */ be_nested_str_weak(root_iterations), - /* K13 */ be_nested_str_weak(root_salt), - /* K14 */ be_nested_str_weak(start_basic_commissioning), - /* K15 */ be_nested_str_weak(root_discriminator), - /* K16 */ be_nested_str_weak(root_w0), - /* K17 */ be_nested_str_weak(root_L), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K1 */ be_nested_str_weak(state_json), + /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(publish_result), + /* K5 */ be_nested_str_weak(), }), - be_str_weak(start_root_basic_commissioning), + be_str_weak(MtrInfo_one), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x60100018, // 0007 GETGBL R4 G24 - 0x58140003, // 0008 LDCONST R5 K3 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C100400, // 000A CALL R4 2 - 0x58140004, // 000B LDCONST R5 K4 - 0x7C0C0400, // 000C CALL R3 2 - 0x8C0C0105, // 000D GETMET R3 R0 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x8C100907, // 0010 GETMET R4 R4 K7 - 0x60180018, // 0011 GETGBL R6 G24 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x5C200400, // 0013 MOVE R8 R2 - 0x5C240600, // 0014 MOVE R9 R3 - 0x7C180600, // 0015 CALL R6 3 - 0x581C0009, // 0016 LDCONST R7 K9 - 0x7C100600, // 0017 CALL R4 3 - 0x8C10010A, // 0018 GETMET R4 R0 K10 - 0x8818010B, // 0019 GETMBR R6 R0 K11 - 0x881C010C, // 001A GETMBR R7 R0 K12 - 0x8820010D, // 001B GETMBR R8 R0 K13 - 0x7C100800, // 001C CALL R4 4 - 0x8C10010E, // 001D GETMET R4 R0 K14 - 0x5C180200, // 001E MOVE R6 R1 - 0x881C010C, // 001F GETMBR R7 R0 K12 - 0x8820010F, // 0020 GETMBR R8 R0 K15 - 0x8824010D, // 0021 GETMBR R9 R0 K13 - 0x88280110, // 0022 GETMBR R10 R0 K16 - 0x882C0111, // 0023 GETMBR R11 R0 K17 - 0x4C300000, // 0024 LDNIL R12 - 0x7C101000, // 0025 CALL R4 8 - 0x80000000, // 0026 RET 0 + ( &(const binstruction[20]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0403, // 0004 EQ R3 R2 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80000600, // 0006 RET 0 + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x780E0008, // 0009 JMPF R3 #0013 + 0x60100018, // 000A GETGBL R4 G24 + 0x58140002, // 000B LDCONST R5 K2 + 0x5C180600, // 000C MOVE R6 R3 + 0x7C100400, // 000D CALL R4 2 + 0xB8160600, // 000E GETNGBL R5 K3 + 0x8C140B04, // 000F GETMET R5 R5 K4 + 0x5C1C0800, // 0010 MOVE R7 R4 + 0x58200005, // 0011 LDCONST R8 K5 + 0x7C140600, // 0012 CALL R5 3 + 0x80000000, // 0013 RET 0 }) ) ); @@ -4924,45 +2065,628 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ /******************************************************************** -** Solidified function: find_plugin_by_endpoint +** Solidified function: resolve_attribute_read_solo ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ +be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K7 */ be_nested_str_weak(contains_cluster), + /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K9 */ be_nested_str_weak(contains_attribute), + /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + }), + be_str_weak(resolve_attribute_read_solo), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x88100302, // 0002 GETMBR R4 R1 K2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140405, // 0004 EQ R5 R2 R5 + 0x74160005, // 0005 JMPT R5 #000C + 0x4C140000, // 0006 LDNIL R5 + 0x1C140605, // 0007 EQ R5 R3 R5 + 0x74160002, // 0008 JMPT R5 #000C + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x5C1C0400, // 000F MOVE R7 R2 + 0x7C140400, // 0010 CALL R5 2 + 0x4C180000, // 0011 LDNIL R6 + 0x1C180A06, // 0012 EQ R6 R5 R6 + 0x781A0004, // 0013 JMPF R6 #0019 + 0xB81A0A00, // 0014 GETNGBL R6 K5 + 0x88180D06, // 0015 GETMBR R6 R6 K6 + 0x90060806, // 0016 SETMBR R1 K4 R6 + 0x4C180000, // 0017 LDNIL R6 + 0x80040C00, // 0018 RET 1 R6 + 0x8C180B07, // 0019 GETMET R6 R5 K7 + 0x5C200600, // 001A MOVE R8 R3 + 0x7C180400, // 001B CALL R6 2 + 0x741A0004, // 001C JMPT R6 #0022 + 0xB81A0A00, // 001D GETNGBL R6 K5 + 0x88180D08, // 001E GETMBR R6 R6 K8 + 0x90060806, // 001F SETMBR R1 K4 R6 + 0x4C180000, // 0020 LDNIL R6 + 0x80040C00, // 0021 RET 1 R6 + 0x8C180B09, // 0022 GETMET R6 R5 K9 + 0x5C200600, // 0023 MOVE R8 R3 + 0x5C240800, // 0024 MOVE R9 R4 + 0x7C180600, // 0025 CALL R6 3 + 0x741A0004, // 0026 JMPT R6 #002C + 0xB81A0A00, // 0027 GETNGBL R6 K5 + 0x88180D0A, // 0028 GETMBR R6 R6 K10 + 0x90060806, // 0029 SETMBR R1 K4 R6 + 0x4C180000, // 002A LDNIL R6 + 0x80040C00, // 002B RET 1 R6 + 0x80040A00, // 002C RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_root_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ + be_nested_proto( + 13, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(PASE_TIMEOUT), + /* K1 */ be_nested_str_weak(compute_manual_pairing_code), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(compute_qrcode_content), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(publish_result), + /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), + /* K9 */ be_nested_str_weak(Matter), + /* K10 */ be_nested_str_weak(_compute_pbkdf), + /* K11 */ be_nested_str_weak(root_passcode), + /* K12 */ be_nested_str_weak(root_iterations), + /* K13 */ be_nested_str_weak(root_salt), + /* K14 */ be_nested_str_weak(start_basic_commissioning), + /* K15 */ be_nested_str_weak(root_discriminator), + /* K16 */ be_nested_str_weak(root_w0), + /* K17 */ be_nested_str_weak(root_L), + }), + be_str_weak(start_root_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040100, // 0003 GETMBR R1 R0 K0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140003, // 0008 LDCONST R5 K3 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C100400, // 000A CALL R4 2 + 0x58140004, // 000B LDCONST R5 K4 + 0x7C0C0400, // 000C CALL R3 2 + 0x8C0C0105, // 000D GETMET R3 R0 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x8C100907, // 0010 GETMET R4 R4 K7 + 0x60180018, // 0011 GETGBL R6 G24 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x5C200400, // 0013 MOVE R8 R2 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C180600, // 0015 CALL R6 3 + 0x581C0009, // 0016 LDCONST R7 K9 + 0x7C100600, // 0017 CALL R4 3 + 0x8C10010A, // 0018 GETMET R4 R0 K10 + 0x8818010B, // 0019 GETMBR R6 R0 K11 + 0x881C010C, // 001A GETMBR R7 R0 K12 + 0x8820010D, // 001B GETMBR R8 R0 K13 + 0x7C100800, // 001C CALL R4 4 + 0x8C10010E, // 001D GETMET R4 R0 K14 + 0x5C180200, // 001E MOVE R6 R1 + 0x881C010C, // 001F GETMBR R7 R0 K12 + 0x8820010F, // 0020 GETMBR R8 R0 K15 + 0x8824010D, // 0021 GETMBR R9 R0 K13 + 0x88280110, // 0022 GETMBR R10 R0 K16 + 0x882C0111, // 0023 GETMBR R11 R0 K17 + 0x4C300000, // 0024 LDNIL R12 + 0x7C101000, // 0025 CALL R4 8 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete_deferred +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_commissioning_complete_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(started), + /* K1 */ be_nested_str_weak(autoconf_device), + /* K2 */ be_nested_str_weak(_start_udp), + /* K3 */ be_nested_str_weak(UDP_PORT), + /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), + }), + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x8C040104, // 0008 GETMET R1 R0 K4 + 0x7C040200, // 0009 CALL R1 1 + 0x50040200, // 000A LDBOOL R1 1 0 + 0x90020001, // 000B SETMBR R0 K0 R1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_50ms, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_const_int(1), + }), + be_str_weak(every_50ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x00040301, // 0001 ADD R1 R1 K1 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _trigger_read_sensors +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(read_sensors), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), + /* K7 */ be_nested_str_weak(load), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(plugins), + /* K10 */ be_nested_str_weak(parse_sensors), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), + }), + be_str_weak(_trigger_read_sensors), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E0200, // 0004 GETNGBL R3 K1 + 0x8C0C0703, // 0005 GETMET R3 R3 K3 + 0x58140004, // 0006 LDCONST R5 K4 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0006, // 0008 JMPF R3 #0010 + 0xB80E0A00, // 0009 GETNGBL R3 K5 + 0x60100008, // 000A GETGBL R4 G8 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C100200, // 000C CALL R4 1 + 0x00120C04, // 000D ADD R4 K6 R4 + 0x58140004, // 000E LDCONST R5 K4 + 0x7C0C0400, // 000F CALL R3 2 + 0x4C0C0000, // 0010 LDNIL R3 + 0x1C0C0403, // 0011 EQ R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x80000600, // 0013 RET 0 + 0x8C0C0307, // 0014 GETMET R3 R1 K7 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x4C100000, // 0017 LDNIL R4 + 0x20100604, // 0018 NE R4 R3 R4 + 0x7812000D, // 0019 JMPF R4 #0028 + 0x58100008, // 001A LDCONST R4 K8 + 0x6014000C, // 001B GETGBL R5 G12 + 0x88180109, // 001C GETMBR R6 R0 K9 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160006, // 001F JMPF R5 #0027 + 0x88140109, // 0020 GETMBR R5 R0 K9 + 0x94140A04, // 0021 GETIDX R5 R5 R4 + 0x8C140B0A, // 0022 GETMET R5 R5 K10 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C140400, // 0024 CALL R5 2 + 0x0010090B, // 0025 ADD R4 R4 K11 + 0x7001FFF3, // 0026 JMP #001B + 0x70020006, // 0027 JMP #002F + 0xB8120A00, // 0028 GETNGBL R4 K5 + 0x60140008, // 0029 GETGBL R5 G8 + 0x5C180400, // 002A MOVE R6 R2 + 0x7C140200, // 002B CALL R5 1 + 0x00161805, // 002C ADD R5 K12 R5 + 0x58180004, // 002D LDCONST R6 K4 + 0x7C100400, // 002E CALL R4 2 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_PASE +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(mdns_pase_eth), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K4 */ be_nested_str_weak(_matterc), + /* K5 */ be_nested_str_weak(_udp), + /* K6 */ be_nested_str_weak(commissioning_instance_eth), + /* K7 */ be_nested_str_weak(hostname_eth), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K10 */ be_nested_str_weak(eth), + /* K11 */ be_nested_str_weak(remove_service), + /* K12 */ be_nested_str_weak(mdns_pase_wifi), + /* K13 */ be_nested_str_weak(commissioning_instance_wifi), + /* K14 */ be_nested_str_weak(hostname_wifi), + /* K15 */ be_nested_str_weak(wifi), + /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K17 */ be_nested_str_weak(_X7C), + /* K18 */ be_const_int(2), + }), + be_str_weak(mdns_remove_PASE), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x780A0019, // 0003 JMPF R2 #001E + 0xB80A0400, // 0004 GETNGBL R2 K2 + 0x600C0018, // 0005 GETGBL R3 G24 + 0x58100003, // 0006 LDCONST R4 K3 + 0x58140004, // 0007 LDCONST R5 K4 + 0x58180005, // 0008 LDCONST R6 K5 + 0x881C0106, // 0009 GETMBR R7 R0 K6 + 0x88200107, // 000A GETMBR R8 R0 K7 + 0x7C0C0A00, // 000B CALL R3 5 + 0x58100008, // 000C LDCONST R4 K8 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0400, // 000E GETNGBL R2 K2 + 0x600C0018, // 000F GETGBL R3 G24 + 0x58100009, // 0010 LDCONST R4 K9 + 0x5814000A, // 0011 LDCONST R5 K10 + 0x88180106, // 0012 GETMBR R6 R0 K6 + 0x7C0C0600, // 0013 CALL R3 3 + 0x58100008, // 0014 LDCONST R4 K8 + 0x7C080400, // 0015 CALL R2 2 + 0x50080000, // 0016 LDBOOL R2 0 0 + 0x90020202, // 0017 SETMBR R0 K1 R2 + 0x8C08030B, // 0018 GETMET R2 R1 K11 + 0x58100004, // 0019 LDCONST R4 K4 + 0x58140005, // 001A LDCONST R5 K5 + 0x88180106, // 001B GETMBR R6 R0 K6 + 0x881C0107, // 001C GETMBR R7 R0 K7 + 0x7C080A00, // 001D CALL R2 5 + 0x8808010C, // 001E GETMBR R2 R0 K12 + 0x780A0019, // 001F JMPF R2 #003A + 0xB80A0400, // 0020 GETNGBL R2 K2 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100003, // 0022 LDCONST R4 K3 + 0x58140004, // 0023 LDCONST R5 K4 + 0x58180005, // 0024 LDCONST R6 K5 + 0x881C010D, // 0025 GETMBR R7 R0 K13 + 0x8820010E, // 0026 GETMBR R8 R0 K14 + 0x7C0C0A00, // 0027 CALL R3 5 + 0x58100008, // 0028 LDCONST R4 K8 + 0x7C080400, // 0029 CALL R2 2 + 0xB80A0400, // 002A GETNGBL R2 K2 + 0x600C0018, // 002B GETGBL R3 G24 + 0x58100009, // 002C LDCONST R4 K9 + 0x5814000F, // 002D LDCONST R5 K15 + 0x8818010D, // 002E GETMBR R6 R0 K13 + 0x7C0C0600, // 002F CALL R3 3 + 0x58100008, // 0030 LDCONST R4 K8 + 0x7C080400, // 0031 CALL R2 2 + 0x50080000, // 0032 LDBOOL R2 0 0 + 0x90021802, // 0033 SETMBR R0 K12 R2 + 0x8C08030B, // 0034 GETMET R2 R1 K11 + 0x58100004, // 0035 LDCONST R4 K4 + 0x58140005, // 0036 LDCONST R5 K5 + 0x8818010D, // 0037 GETMBR R6 R0 K13 + 0x881C010E, // 0038 GETMBR R7 R0 K14 + 0x7C080A00, // 0039 CALL R2 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC080002, // 003C CATCH R2 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8120400, // 003E GETNGBL R4 K2 + 0x60140008, // 003F GETGBL R5 G8 + 0x5C180400, // 0040 MOVE R6 R2 + 0x7C140200, // 0041 CALL R5 1 + 0x00162005, // 0042 ADD R5 K16 R5 + 0x00140B11, // 0043 ADD R5 R5 K17 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x00140A06, // 0047 ADD R5 R5 R6 + 0x58180012, // 0048 LDCONST R6 K18 + 0x7C100400, // 0049 CALL R4 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_active_endpoints +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins), + /* K1 */ be_nested_str_weak(get_endpoint), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_active_endpoints), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020011, // 0005 EXBLK 0 #0018 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140901, // 0008 GETMET R5 R4 K1 + 0x7C140200, // 0009 CALL R5 1 + 0x78060002, // 000A JMPF R1 #000E + 0x1C180B02, // 000B EQ R6 R5 K2 + 0x781A0000, // 000C JMPF R6 #000E + 0x7001FFF7, // 000D JMP #0006 + 0x8C180503, // 000E GETMET R6 R2 K3 + 0x5C200A00, // 000F MOVE R8 R5 + 0x7C180400, // 0010 CALL R6 2 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C180504, // 0014 GETMET R6 R2 K4 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x7C180400, // 0016 CALL R6 2 + 0x7001FFED, // 0017 JMP #0006 + 0x580C0005, // 0018 LDCONST R3 K5 + 0xAC0C0200, // 0019 CATCH R3 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x80040400, // 001B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_plugin_by_friendly_name +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_endpoint), + /* K2 */ be_nested_str_weak(get_name), /* K3 */ be_const_int(1), }), - be_str_weak(find_plugin_by_endpoint), + be_str_weak(find_plugin_by_friendly_name), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C100702, // 0008 GETMET R4 R3 K2 - 0x7C100200, // 0009 CALL R4 1 - 0x1C100801, // 000A EQ R4 R4 R1 - 0x78120000, // 000B JMPF R4 #000D - 0x80040600, // 000C RET 1 R3 - 0x00080503, // 000D ADD R2 R2 K3 - 0x7001FFF1, // 000E JMP #0001 - 0x4C0C0000, // 000F LDNIL R3 - 0x80040600, // 0010 RET 1 R3 + ( &(const binstruction[35]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x1C080500, // 0006 EQ R2 R2 K0 + 0x780A0001, // 0007 JMPF R2 #000A + 0x4C080000, // 0008 LDNIL R2 + 0x80040400, // 0009 RET 1 R2 + 0x58080000, // 000A LDCONST R2 K0 + 0x600C000C, // 000B GETGBL R3 G12 + 0x88100101, // 000C GETMBR R4 R0 K1 + 0x7C0C0200, // 000D CALL R3 1 + 0x140C0403, // 000E LT R3 R2 R3 + 0x780E0010, // 000F JMPF R3 #0021 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x940C0602, // 0011 GETIDX R3 R3 R2 + 0x8C100702, // 0012 GETMET R4 R3 K2 + 0x7C100200, // 0013 CALL R4 1 + 0x4C140000, // 0014 LDNIL R5 + 0x20140805, // 0015 NE R5 R4 R5 + 0x78160007, // 0016 JMPF R5 #001F + 0x6014000C, // 0017 GETGBL R5 G12 + 0x5C180800, // 0018 MOVE R6 R4 + 0x7C140200, // 0019 CALL R5 1 + 0x24140B00, // 001A GT R5 R5 K0 + 0x78160002, // 001B JMPF R5 #001F + 0x1C140801, // 001C EQ R5 R4 R1 + 0x78160000, // 001D JMPF R5 #001F + 0x80040600, // 001E RET 1 R3 + 0x00080503, // 001F ADD R2 R2 K3 + 0x7001FFE9, // 0020 JMP #000B + 0x4C0C0000, // 0021 LDNIL R3 + 0x80040600, // 0022 RET 1 R3 }) ) ); @@ -4970,12 +2694,12 @@ be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ /******************************************************************** -** Solidified function: update_remotes_info +** Solidified function: adjust_next_ep ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_update_remotes_info, /* name */ +be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ be_nested_proto( - 7, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4983,50 +2707,419 @@ be_local_closure(class_Matter_Device_update_remotes_info, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(get_info), - /* K3 */ be_const_int(0), + /* K2 */ be_nested_str_weak(next_ep), + /* K3 */ be_const_int(1), /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(plugins_config_remotes), }), - be_str_weak(update_remotes_info), + be_str_weak(adjust_next_ep), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x88080100, // 0002 GETMBR R2 R0 K0 + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000A, // 0005 EXBLK 0 #0011 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x600C0009, // 0008 GETGBL R3 G9 + 0x5C100400, // 0009 MOVE R4 R2 + 0x7C0C0200, // 000A CALL R3 1 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0x28100604, // 000C GE R4 R3 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x00100703, // 000E ADD R4 R3 K3 + 0x90020404, // 000F SETMBR R0 K2 R4 + 0x7001FFF4, // 0010 JMP #0006 + 0x58040004, // 0011 LDCONST R1 K4 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sort_distinct +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_sort_distinct, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(remove), + }), + be_str_weak(sort_distinct), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0701, // 0005 SUB R3 R3 K1 + 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020010, // 0008 EXBLK 0 #001A + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B02, // 000D GT R6 R5 K2 + 0x781A0008, // 000E JMPF R6 #0018 + 0x04180B01, // 000F SUB R6 R5 K1 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x24180C04, // 0011 GT R6 R6 R4 + 0x781A0004, // 0012 JMPF R6 #0018 + 0x04180B01, // 0013 SUB R6 R5 K1 + 0x94180006, // 0014 GETIDX R6 R0 R6 + 0x98000A06, // 0015 SETIDX R0 R5 R6 + 0x04140B01, // 0016 SUB R5 R5 K1 + 0x7001FFF4, // 0017 JMP #000D + 0x98000A04, // 0018 SETIDX R0 R5 R4 + 0x7001FFEE, // 0019 JMP #0009 + 0x58080003, // 001A LDCONST R2 K3 + 0xAC080200, // 001B CATCH R2 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x58080001, // 001D LDCONST R2 K1 + 0x600C000C, // 001E GETGBL R3 G12 + 0x5C100000, // 001F MOVE R4 R0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x180C0701, // 0021 LE R3 R3 K1 + 0x780E0000, // 0022 JMPF R3 #0024 + 0x80040000, // 0023 RET 1 R0 + 0x940C0102, // 0024 GETIDX R3 R0 K2 + 0x6010000C, // 0025 GETGBL R4 G12 + 0x5C140000, // 0026 MOVE R5 R0 + 0x7C100200, // 0027 CALL R4 1 + 0x14100404, // 0028 LT R4 R2 R4 + 0x78120009, // 0029 JMPF R4 #0034 + 0x94100002, // 002A GETIDX R4 R0 R2 + 0x1C100803, // 002B EQ R4 R4 R3 + 0x78120003, // 002C JMPF R4 #0031 + 0x8C100104, // 002D GETMET R4 R0 K4 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x70020001, // 0030 JMP #0033 + 0x940C0002, // 0031 GETIDX R3 R0 R2 + 0x00080501, // 0032 ADD R2 R2 K1 + 0x7001FFF0, // 0033 JMP #0025 + 0x80040000, // 0034 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: k2l_num +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_k2l_num, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), + }), + be_str_weak(k2l_num), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 0x4C0C0000, // 0003 LDNIL R3 - 0x20080403, // 0004 NE R2 R2 R3 - 0x780A0018, // 0005 JMPF R2 #001F - 0x60080010, // 0006 GETGBL R2 G16 - 0x880C0100, // 0007 GETMBR R3 R0 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7C080200, // 000A CALL R2 1 - 0xA802000F, // 000B EXBLK 0 #001C - 0x5C0C0400, // 000C MOVE R3 R2 - 0x7C0C0000, // 000D CALL R3 0 - 0x88100100, // 000E GETMBR R4 R0 K0 - 0x94100803, // 000F GETIDX R4 R4 R3 - 0x8C100902, // 0010 GETMET R4 R4 K2 - 0x7C100200, // 0011 CALL R4 1 - 0x4C140000, // 0012 LDNIL R5 - 0x20140805, // 0013 NE R5 R4 R5 - 0x78160005, // 0014 JMPF R5 #001B - 0x6014000C, // 0015 GETGBL R5 G12 - 0x5C180800, // 0016 MOVE R6 R4 - 0x7C140200, // 0017 CALL R5 1 - 0x24140B03, // 0018 GT R5 R5 K3 - 0x78160000, // 0019 JMPF R5 #001B - 0x98040604, // 001A SETIDX R1 R3 R4 - 0x7001FFEF, // 001B JMP #000C - 0x58080004, // 001C LDCONST R2 K4 - 0xAC080200, // 001D CATCH R2 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x90020A01, // 001F SETMBR R0 K5 R1 - 0x80040200, // 0020 RET 1 R1 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020007, // 000B EXBLK 0 #0014 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x601C0009, // 000F GETGBL R7 G9 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C1C0200, // 0011 CALL R7 1 + 0x7C140400, // 0012 CALL R5 2 + 0x7001FFF7, // 0013 JMP #000C + 0x580C0003, // 0014 LDCONST R3 K3 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x600C0010, // 0017 GETGBL R3 G16 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x5C140400, // 0019 MOVE R5 R2 + 0x7C100200, // 001A CALL R4 1 + 0x04100904, // 001B SUB R4 R4 K4 + 0x40120804, // 001C CONNECT R4 K4 R4 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x94140404, // 0021 GETIDX R5 R2 R4 + 0x5C180800, // 0022 MOVE R6 R4 + 0x241C0D05, // 0023 GT R7 R6 K5 + 0x781E0008, // 0024 JMPF R7 #002E + 0x041C0D04, // 0025 SUB R7 R6 K4 + 0x941C0407, // 0026 GETIDX R7 R2 R7 + 0x241C0E05, // 0027 GT R7 R7 R5 + 0x781E0004, // 0028 JMPF R7 #002E + 0x041C0D04, // 0029 SUB R7 R6 K4 + 0x941C0407, // 002A GETIDX R7 R2 R7 + 0x98080C07, // 002B SETIDX R2 R6 R7 + 0x04180D04, // 002C SUB R6 R6 K4 + 0x7001FFF4, // 002D JMP #0023 + 0x98080C05, // 002E SETIDX R2 R6 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0003, // 0030 LDCONST R3 K3 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x80040400, // 0033 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ + be_nested_proto( + 13, /* nstack */ + 8, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(millis), + /* K3 */ be_nested_str_weak(commissioning_iterations), + /* K4 */ be_nested_str_weak(commissioning_discriminator), + /* K5 */ be_nested_str_weak(commissioning_salt), + /* K6 */ be_nested_str_weak(commissioning_w0), + /* K7 */ be_nested_str_weak(commissioning_L), + /* K8 */ be_nested_str_weak(commissioning_admin_fabric), + /* K9 */ be_nested_str_weak(wifi), + /* K10 */ be_nested_str_weak(up), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(mdns_announce_PASE), + /* K13 */ be_nested_str_weak(add_rule), + /* K14 */ be_nested_str_weak(Wifi_X23Connected), + /* K15 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xB8220200, // 0000 GETNGBL R8 K1 + 0x8C201102, // 0001 GETMET R8 R8 K2 + 0x7C200200, // 0002 CALL R8 1 + 0x542603E7, // 0003 LDINT R9 1000 + 0x08240209, // 0004 MUL R9 R1 R9 + 0x00201009, // 0005 ADD R8 R8 R9 + 0x90020008, // 0006 SETMBR R0 K0 R8 + 0x90020602, // 0007 SETMBR R0 K3 R2 + 0x90020803, // 0008 SETMBR R0 K4 R3 + 0x90020A04, // 0009 SETMBR R0 K5 R4 + 0x90020C05, // 000A SETMBR R0 K6 R5 + 0x90020E06, // 000B SETMBR R0 K7 R6 + 0x90021007, // 000C SETMBR R0 K8 R7 + 0xB8220200, // 000D GETNGBL R8 K1 + 0x8C201109, // 000E GETMET R8 R8 K9 + 0x7C200200, // 000F CALL R8 1 + 0x9420110A, // 0010 GETIDX R8 R8 K10 + 0x74220004, // 0011 JMPT R8 #0017 + 0xB8220200, // 0012 GETNGBL R8 K1 + 0x8C20110B, // 0013 GETMET R8 R8 K11 + 0x7C200200, // 0014 CALL R8 1 + 0x9420110A, // 0015 GETIDX R8 R8 K10 + 0x78220002, // 0016 JMPF R8 #001A + 0x8C20010C, // 0017 GETMET R8 R0 K12 + 0x7C200200, // 0018 CALL R8 1 + 0x7002000B, // 0019 JMP #0026 + 0xB8220200, // 001A GETNGBL R8 K1 + 0x8C20110D, // 001B GETMET R8 R8 K13 + 0x5828000E, // 001C LDCONST R10 K14 + 0x842C0000, // 001D CLOSURE R11 P0 + 0x5830000C, // 001E LDCONST R12 K12 + 0x7C200800, // 001F CALL R8 4 + 0xB8220200, // 0020 GETNGBL R8 K1 + 0x8C20110D, // 0021 GETMET R8 R8 K13 + 0x5828000F, // 0022 LDCONST R10 K15 + 0x842C0001, // 0023 CLOSURE R11 P1 + 0x5830000C, // 0024 LDCONST R12 K12 + 0x7C200800, // 0025 CALL R8 4 + 0xA0000000, // 0026 CLOSE R0 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(remove_driver), + /* K2 */ be_nested_str_weak(udp_server), + /* K3 */ be_nested_str_weak(stop), + }), + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040102, // 0006 GETMBR R1 R0 K2 + 0x8C040303, // 0007 GETMET R1 R1 K3 + 0x7C040200, // 0008 CALL R1 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_send +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_msg_send, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(send_UDP), + }), + be_str_weak(msg_send), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -5112,532 +3205,6 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: read_sensors_scheduler -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(time_reached), - /* K5 */ be_nested_str_weak(_trigger_read_sensors), - /* K6 */ be_nested_str_weak(millis), - }), - be_str_weak(read_sensors_scheduler), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x1C040302, // 0006 EQ R1 R1 K2 - 0x74060004, // 0007 JMPT R1 #000D - 0xB8060600, // 0008 GETNGBL R1 K3 - 0x8C040304, // 0009 GETMET R1 R1 K4 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x7C040400, // 000B CALL R1 2 - 0x78060006, // 000C JMPF R1 #0014 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0xB8060600, // 000F GETNGBL R1 K3 - 0x8C040306, // 0010 GETMET R1 R1 K6 - 0x880C0100, // 0011 GETMBR R3 R0 K0 - 0x7C040400, // 0012 CALL R1 2 - 0x90020201, // 0013 SETMBR R0 K1 R1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _mdns_announce_hostname -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(start), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(eth), - /* K5 */ be_nested_str_weak(hostname_eth), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(mac), - /* K9 */ be_nested_str_weak(_X3A), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(contains), - /* K13 */ be_nested_str_weak(ip6local), - /* K14 */ be_nested_str_weak(add_hostname), - /* K15 */ be_nested_str_weak(ip), - /* K16 */ be_nested_str_weak(ip6), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(wifi), - /* K21 */ be_nested_str_weak(hostname_wifi), - /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), - /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K24 */ be_nested_str_weak(_X7C), - /* K25 */ be_const_int(2), - /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), - }), - be_str_weak(_mdns_announce_hostname), - &be_const_str_solidified, - ( &(const binstruction[144]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100502, // 0002 GETMET R4 R2 K2 - 0x7C100200, // 0003 CALL R4 1 - 0xA8020077, // 0004 EXBLK 0 #007D - 0x78060033, // 0005 JMPF R1 #003A - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x7C100200, // 0008 CALL R4 1 - 0x8C140706, // 0009 GETMET R5 R3 K6 - 0x8C1C0907, // 000A GETMET R7 R4 K7 - 0x58240008, // 000B LDCONST R9 K8 - 0x7C1C0400, // 000C CALL R7 2 - 0x58200009, // 000D LDCONST R8 K9 - 0x5824000A, // 000E LDCONST R9 K10 - 0x7C140800, // 000F CALL R5 4 - 0x90020A05, // 0010 SETMBR R0 K5 R5 - 0x8814010B, // 0011 GETMBR R5 R0 K11 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C14090C, // 0013 GETMET R5 R4 K12 - 0x581C000D, // 0014 LDCONST R7 K13 - 0x7C140400, // 0015 CALL R5 2 - 0x7416000F, // 0016 JMPT R5 #0027 - 0x8C14050E, // 0017 GETMET R5 R2 K14 - 0x881C0105, // 0018 GETMBR R7 R0 K5 - 0x8C200907, // 0019 GETMET R8 R4 K7 - 0x5828000D, // 001A LDCONST R10 K13 - 0x582C000A, // 001B LDCONST R11 K10 - 0x7C200600, // 001C CALL R8 3 - 0x8C240907, // 001D GETMET R9 R4 K7 - 0x582C000F, // 001E LDCONST R11 K15 - 0x5830000A, // 001F LDCONST R12 K10 - 0x7C240600, // 0020 CALL R9 3 - 0x8C280907, // 0021 GETMET R10 R4 K7 - 0x58300010, // 0022 LDCONST R12 K16 - 0x5834000A, // 0023 LDCONST R13 K10 - 0x7C280600, // 0024 CALL R10 3 - 0x7C140A00, // 0025 CALL R5 5 - 0x70020011, // 0026 JMP #0039 - 0xB8162200, // 0027 GETNGBL R5 K17 - 0x60180018, // 0028 GETGBL R6 G24 - 0x581C0012, // 0029 LDCONST R7 K18 - 0x88200105, // 002A GETMBR R8 R0 K5 - 0x8C240907, // 002B GETMET R9 R4 K7 - 0x582C000F, // 002C LDCONST R11 K15 - 0x5830000A, // 002D LDCONST R12 K10 - 0x7C240600, // 002E CALL R9 3 - 0x7C180600, // 002F CALL R6 3 - 0x581C0013, // 0030 LDCONST R7 K19 - 0x7C140400, // 0031 CALL R5 2 - 0x8C14050E, // 0032 GETMET R5 R2 K14 - 0x881C0105, // 0033 GETMBR R7 R0 K5 - 0x8C200907, // 0034 GETMET R8 R4 K7 - 0x5828000F, // 0035 LDCONST R10 K15 - 0x582C000A, // 0036 LDCONST R11 K10 - 0x7C200600, // 0037 CALL R8 3 - 0x7C140600, // 0038 CALL R5 3 - 0x70020032, // 0039 JMP #006D - 0xB8120600, // 003A GETNGBL R4 K3 - 0x8C100914, // 003B GETMET R4 R4 K20 - 0x7C100200, // 003C CALL R4 1 - 0x8C140706, // 003D GETMET R5 R3 K6 - 0x8C1C0907, // 003E GETMET R7 R4 K7 - 0x58240008, // 003F LDCONST R9 K8 - 0x7C1C0400, // 0040 CALL R7 2 - 0x58200009, // 0041 LDCONST R8 K9 - 0x5824000A, // 0042 LDCONST R9 K10 - 0x7C140800, // 0043 CALL R5 4 - 0x90022A05, // 0044 SETMBR R0 K21 R5 - 0x8814010B, // 0045 GETMBR R5 R0 K11 - 0x78160003, // 0046 JMPF R5 #004B - 0x8C14090C, // 0047 GETMET R5 R4 K12 - 0x581C000D, // 0048 LDCONST R7 K13 - 0x7C140400, // 0049 CALL R5 2 - 0x7416000F, // 004A JMPT R5 #005B - 0x8C14050E, // 004B GETMET R5 R2 K14 - 0x881C0115, // 004C GETMBR R7 R0 K21 - 0x8C200907, // 004D GETMET R8 R4 K7 - 0x5828000D, // 004E LDCONST R10 K13 - 0x582C000A, // 004F LDCONST R11 K10 - 0x7C200600, // 0050 CALL R8 3 - 0x8C240907, // 0051 GETMET R9 R4 K7 - 0x582C000F, // 0052 LDCONST R11 K15 - 0x5830000A, // 0053 LDCONST R12 K10 - 0x7C240600, // 0054 CALL R9 3 - 0x8C280907, // 0055 GETMET R10 R4 K7 - 0x58300010, // 0056 LDCONST R12 K16 - 0x5834000A, // 0057 LDCONST R13 K10 - 0x7C280600, // 0058 CALL R10 3 - 0x7C140A00, // 0059 CALL R5 5 - 0x70020011, // 005A JMP #006D - 0xB8162200, // 005B GETNGBL R5 K17 - 0x60180018, // 005C GETGBL R6 G24 - 0x581C0012, // 005D LDCONST R7 K18 - 0x88200115, // 005E GETMBR R8 R0 K21 - 0x8C240907, // 005F GETMET R9 R4 K7 - 0x582C000F, // 0060 LDCONST R11 K15 - 0x5830000A, // 0061 LDCONST R12 K10 - 0x7C240600, // 0062 CALL R9 3 - 0x7C180600, // 0063 CALL R6 3 - 0x581C0013, // 0064 LDCONST R7 K19 - 0x7C140400, // 0065 CALL R5 2 - 0x8C14050E, // 0066 GETMET R5 R2 K14 - 0x881C0115, // 0067 GETMBR R7 R0 K21 - 0x8C200907, // 0068 GETMET R8 R4 K7 - 0x5828000F, // 0069 LDCONST R10 K15 - 0x582C000A, // 006A LDCONST R11 K10 - 0x7C200600, // 006B CALL R8 3 - 0x7C140600, // 006C CALL R5 3 - 0xB8122200, // 006D GETNGBL R4 K17 - 0x60140018, // 006E GETGBL R5 G24 - 0x58180016, // 006F LDCONST R6 K22 - 0x78060001, // 0070 JMPF R1 #0073 - 0x581C0004, // 0071 LDCONST R7 K4 - 0x70020000, // 0072 JMP #0074 - 0x581C0014, // 0073 LDCONST R7 K20 - 0x78060001, // 0074 JMPF R1 #0077 - 0x88200105, // 0075 GETMBR R8 R0 K5 - 0x70020000, // 0076 JMP #0078 - 0x88200115, // 0077 GETMBR R8 R0 K21 - 0x7C140600, // 0078 CALL R5 3 - 0x58180013, // 0079 LDCONST R6 K19 - 0x7C100400, // 007A CALL R4 2 - 0xA8040001, // 007B EXBLK 1 1 - 0x7002000F, // 007C JMP #008D - 0xAC100002, // 007D CATCH R4 0 2 - 0x7002000C, // 007E JMP #008C - 0xB81A2200, // 007F GETNGBL R6 K17 - 0x601C0008, // 0080 GETGBL R7 G8 - 0x5C200800, // 0081 MOVE R8 R4 - 0x7C1C0200, // 0082 CALL R7 1 - 0x001E2E07, // 0083 ADD R7 K23 R7 - 0x001C0F18, // 0084 ADD R7 R7 K24 - 0x60200008, // 0085 GETGBL R8 G8 - 0x5C240A00, // 0086 MOVE R9 R5 - 0x7C200200, // 0087 CALL R8 1 - 0x001C0E08, // 0088 ADD R7 R7 R8 - 0x58200019, // 0089 LDCONST R8 K25 - 0x7C180400, // 008A CALL R6 2 - 0x70020000, // 008B JMP #008D - 0xB0080000, // 008C RAISE 2 R0 R0 - 0x8C10011A, // 008D GETMET R4 R0 K26 - 0x7C100200, // 008E CALL R4 1 - 0x80000000, // 008F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_send -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_send, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(send_UDP), - }), - be_str_weak(msg_send), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_http_remote -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_register_http_remote, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(get_timeout), - /* K3 */ be_nested_str_weak(set_timeout), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(HTTP_remote), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(set_info), - }), - be_str_weak(register_http_remote), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x600C0013, // 0004 GETGBL R3 G19 - 0x7C0C0000, // 0005 CALL R3 0 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x8C100901, // 0009 GETMET R4 R4 K1 - 0x5C180200, // 000A MOVE R6 R1 - 0x7C100400, // 000B CALL R4 2 - 0x78120009, // 000C JMPF R4 #0017 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x940C0801, // 000E GETIDX R3 R4 R1 - 0x8C140702, // 000F GETMET R5 R3 K2 - 0x7C140200, // 0010 CALL R5 1 - 0x14140405, // 0011 LT R5 R2 R5 - 0x78160002, // 0012 JMPF R5 #0016 - 0x8C140703, // 0013 GETMET R5 R3 K3 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C140400, // 0015 CALL R5 2 - 0x70020011, // 0016 JMP #0029 - 0xB8120800, // 0017 GETNGBL R4 K4 - 0x8C100905, // 0018 GETMET R4 R4 K5 - 0x5C180000, // 0019 MOVE R6 R0 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x5C200400, // 001B MOVE R8 R2 - 0x7C100800, // 001C CALL R4 4 - 0x5C0C0800, // 001D MOVE R3 R4 - 0x88100106, // 001E GETMBR R4 R0 K6 - 0x8C100901, // 001F GETMET R4 R4 K1 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100707, // 0023 GETMET R4 R3 K7 - 0x88180106, // 0024 GETMBR R6 R0 K6 - 0x94180C01, // 0025 GETIDX R6 R6 R1 - 0x7C100400, // 0026 CALL R4 2 - 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x98100203, // 0028 SETIDX R4 R1 R3 - 0x80040600, // 0029 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo_one -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K1 */ be_nested_str_weak(state_json), - /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(publish_result), - /* K5 */ be_nested_str_weak(), - }), - be_str_weak(MtrInfo_one), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0403, // 0004 EQ R3 R2 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80000600, // 0006 RET 0 - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x780E0008, // 0009 JMPF R3 #0013 - 0x60100018, // 000A GETGBL R4 G24 - 0x58140002, // 000B LDCONST R5 K2 - 0x5C180600, // 000C MOVE R6 R3 - 0x7C100400, // 000D CALL R4 2 - 0xB8160600, // 000E GETNGBL R5 K3 - 0x8C140B04, // 000F GETMET R5 R5 K4 - 0x5C1C0800, // 0010 MOVE R7 R4 - 0x58200005, // 0011 LDCONST R8 K5 - 0x7C140600, // 0012 CALL R5 3 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _compute_pbkdf -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__compute_pbkdf, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), - /* K3 */ be_nested_str_weak(derive), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(root_w0), - /* K6 */ be_nested_str_weak(EC_P256), - /* K7 */ be_nested_str_weak(mod), - /* K8 */ be_nested_str_weak(root_L), - /* K9 */ be_nested_str_weak(public_key), - }), - be_str_weak(_compute_pbkdf), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x60140015, // 0001 GETGBL R5 G21 - 0x7C140000, // 0002 CALL R5 0 - 0x8C140B01, // 0003 GETMET R5 R5 K1 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x54220003, // 0005 LDINT R8 4 - 0x7C140600, // 0006 CALL R5 3 - 0x8C180902, // 0007 GETMET R6 R4 K2 - 0x7C180200, // 0008 CALL R6 1 - 0x8C180D03, // 0009 GETMET R6 R6 K3 - 0x5C200A00, // 000A MOVE R8 R5 - 0x5C240600, // 000B MOVE R9 R3 - 0x5C280400, // 000C MOVE R10 R2 - 0x542E004F, // 000D LDINT R11 80 - 0x7C180A00, // 000E CALL R6 5 - 0x541E0026, // 000F LDINT R7 39 - 0x401E0807, // 0010 CONNECT R7 K4 R7 - 0x941C0C07, // 0011 GETIDX R7 R6 R7 - 0x54220027, // 0012 LDINT R8 40 - 0x5426004E, // 0013 LDINT R9 79 - 0x40201009, // 0014 CONNECT R8 R8 R9 - 0x94200C08, // 0015 GETIDX R8 R6 R8 - 0x8C240906, // 0016 GETMET R9 R4 K6 - 0x7C240200, // 0017 CALL R9 1 - 0x8C241307, // 0018 GETMET R9 R9 K7 - 0x5C2C0E00, // 0019 MOVE R11 R7 - 0x7C240400, // 001A CALL R9 2 - 0x90020A09, // 001B SETMBR R0 K5 R9 - 0x8C240906, // 001C GETMET R9 R4 K6 - 0x7C240200, // 001D CALL R9 1 - 0x8C241307, // 001E GETMET R9 R9 K7 - 0x5C2C1000, // 001F MOVE R11 R8 - 0x7C240400, // 0020 CALL R9 2 - 0x8C280906, // 0021 GETMET R10 R4 K6 - 0x7C280200, // 0022 CALL R10 1 - 0x8C281509, // 0023 GETMET R10 R10 K9 - 0x5C301200, // 0024 MOVE R12 R9 - 0x7C280400, // 0025 CALL R10 2 - 0x9002100A, // 0026 SETMBR R0 K8 R10 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: signal_endpoints_changed -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - }), - be_str_weak(signal_endpoints_changed), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x5412001C, // 0002 LDINT R4 29 - 0x58140002, // 0003 LDCONST R5 K2 - 0x50180000, // 0004 LDBOOL R6 0 0 - 0x7C040A00, // 0005 CALL R1 5 - 0x8C040100, // 0006 GETMET R1 R0 K0 - 0xB80E0600, // 0007 GETNGBL R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x5412001C, // 0009 LDINT R4 29 - 0x58140002, // 000A LDCONST R5 K2 - 0x50180000, // 000B LDBOOL R6 0 0 - 0x7C040A00, // 000C CALL R1 5 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: autoconf_device_map ********************************************************************/ @@ -5897,6 +3464,1175 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: update_remotes_info +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_update_remotes_info, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(get_info), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(plugins_config_remotes), + }), + be_str_weak(update_remotes_info), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x20080403, // 0004 NE R2 R2 R3 + 0x780A0018, // 0005 JMPF R2 #001F + 0x60080010, // 0006 GETGBL R2 G16 + 0x880C0100, // 0007 GETMBR R3 R0 K0 + 0x8C0C0701, // 0008 GETMET R3 R3 K1 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7C080200, // 000A CALL R2 1 + 0xA802000F, // 000B EXBLK 0 #001C + 0x5C0C0400, // 000C MOVE R3 R2 + 0x7C0C0000, // 000D CALL R3 0 + 0x88100100, // 000E GETMBR R4 R0 K0 + 0x94100803, // 000F GETIDX R4 R4 R3 + 0x8C100902, // 0010 GETMET R4 R4 K2 + 0x7C100200, // 0011 CALL R4 1 + 0x4C140000, // 0012 LDNIL R5 + 0x20140805, // 0013 NE R5 R4 R5 + 0x78160005, // 0014 JMPF R5 #001B + 0x6014000C, // 0015 GETGBL R5 G12 + 0x5C180800, // 0016 MOVE R6 R4 + 0x7C140200, // 0017 CALL R5 1 + 0x24140B03, // 0018 GT R5 R5 K3 + 0x78160000, // 0019 JMPF R5 #001B + 0x98040604, // 001A SETIDX R1 R3 R4 + 0x7001FFEF, // 001B JMP #000C + 0x58080004, // 001C LDCONST R2 K4 + 0xAC080200, // 001D CATCH R2 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x90020A01, // 001F SETMBR R0 K5 R1 + 0x80040200, // 0020 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_config_ep +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_check_config_ep, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), + /* K12 */ be_nested_str_weak(next_ep), + /* K13 */ be_const_int(1), + }), + be_str_weak(check_config_ep), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x600C0010, // 0003 GETGBL R3 G16 + 0x88100100, // 0004 GETMBR R4 R0 K0 + 0x8C100901, // 0005 GETMET R4 R4 K1 + 0x7C100200, // 0006 CALL R4 1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020007, // 0008 EXBLK 0 #0011 + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x8C140502, // 000B GETMET R5 R2 K2 + 0x601C0009, // 000C GETGBL R7 G9 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C1C0200, // 000E CALL R7 1 + 0x7C140400, // 000F CALL R5 2 + 0x7001FFF7, // 0010 JMP #0009 + 0x580C0003, // 0011 LDCONST R3 K3 + 0xAC0C0200, // 0012 CATCH R3 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x600C0010, // 0014 GETGBL R3 G16 + 0x5C100400, // 0015 MOVE R4 R2 + 0x7C0C0200, // 0016 CALL R3 1 + 0xA8020030, // 0017 EXBLK 0 #0049 + 0x5C100600, // 0018 MOVE R4 R3 + 0x7C100000, // 0019 CALL R4 0 + 0x1C140904, // 001A EQ R5 R4 K4 + 0x7816000B, // 001B JMPF R5 #0028 + 0xB8160A00, // 001C GETNGBL R5 K5 + 0x58180006, // 001D LDCONST R6 K6 + 0x581C0007, // 001E LDCONST R7 K7 + 0x7C140400, // 001F CALL R5 2 + 0x88140100, // 0020 GETMBR R5 R0 K0 + 0x8C140B08, // 0021 GETMET R5 R5 K8 + 0x601C0008, // 0022 GETGBL R7 G8 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C1C0200, // 0024 CALL R7 1 + 0x7C140400, // 0025 CALL R5 2 + 0x50040200, // 0026 LDBOOL R1 1 0 + 0x7002001F, // 0027 JMP #0048 + 0xB8161200, // 0028 GETNGBL R5 K9 + 0x88140B0A, // 0029 GETMBR R5 R5 K10 + 0x1C140805, // 002A EQ R5 R4 R5 + 0x7816001B, // 002B JMPF R5 #0048 + 0x50040200, // 002C LDBOOL R1 1 0 + 0xB8160A00, // 002D GETNGBL R5 K5 + 0x60180018, // 002E GETGBL R6 G24 + 0x581C000B, // 002F LDCONST R7 K11 + 0x5C200800, // 0030 MOVE R8 R4 + 0x8824010C, // 0031 GETMBR R9 R0 K12 + 0x7C180600, // 0032 CALL R6 3 + 0x581C0007, // 0033 LDCONST R7 K7 + 0x7C140400, // 0034 CALL R5 2 + 0x60140008, // 0035 GETGBL R5 G8 + 0x8818010C, // 0036 GETMBR R6 R0 K12 + 0x7C140200, // 0037 CALL R5 1 + 0x88180100, // 0038 GETMBR R6 R0 K0 + 0x601C0008, // 0039 GETGBL R7 G8 + 0x5C200800, // 003A MOVE R8 R4 + 0x7C1C0200, // 003B CALL R7 1 + 0x88200100, // 003C GETMBR R8 R0 K0 + 0x941C1007, // 003D GETIDX R7 R8 R7 + 0x98180A07, // 003E SETIDX R6 R5 R7 + 0x88140100, // 003F GETMBR R5 R0 K0 + 0x8C140B08, // 0040 GETMET R5 R5 K8 + 0x601C0008, // 0041 GETGBL R7 G8 + 0x5C200800, // 0042 MOVE R8 R4 + 0x7C1C0200, // 0043 CALL R7 1 + 0x7C140400, // 0044 CALL R5 2 + 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x00140B0D, // 0046 ADD R5 R5 K13 + 0x90021805, // 0047 SETMBR R0 K12 R5 + 0x7001FFCE, // 0048 JMP #0018 + 0x580C0003, // 0049 LDCONST R3 K3 + 0xAC0C0200, // 004A CATCH R3 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80040200, // 004C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(get_fabric), + /* K1 */ be_nested_str_weak(get_fabric_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(get_admin_vendor_name), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(stop_basic_commissioning), + }), + be_str_weak(start_commissioning_complete), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x8C0C0501, // 0002 GETMET R3 R2 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x7C100200, // 000B CALL R4 1 + 0xB8160C00, // 000C GETNGBL R5 K6 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C0007, // 000E LDCONST R7 K7 + 0x5C200600, // 000F MOVE R8 R3 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C180600, // 0011 CALL R6 3 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x7C140400, // 0013 CALL R5 2 + 0x8C140109, // 0014 GETMET R5 R0 K9 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ + be_nested_proto( + 12, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(eth), + /* K9 */ be_nested_str_weak(find), + /* K10 */ be_nested_str_weak(up), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K13 */ be_const_int(3), + /* K14 */ be_nested_str_weak(remove_service), + /* K15 */ be_nested_str_weak(_matter), + /* K16 */ be_nested_str_weak(_tcp), + /* K17 */ be_nested_str_weak(hostname_eth), + /* K18 */ be_nested_str_weak(wifi), + /* K19 */ be_nested_str_weak(hostname_wifi), + /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K21 */ be_nested_str_weak(_X7C), + /* K22 */ be_const_int(2), + }), + be_str_weak(mdns_remove_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x8C180D08, // 0011 GETMET R6 R6 K8 + 0x7C180200, // 0012 CALL R6 1 + 0x8C180D09, // 0013 GETMET R6 R6 K9 + 0x5820000A, // 0014 LDCONST R8 K10 + 0x7C180400, // 0015 CALL R6 2 + 0x781A000D, // 0016 JMPF R6 #0025 + 0xB81A1600, // 0017 GETNGBL R6 K11 + 0x601C0018, // 0018 GETGBL R7 G24 + 0x5820000C, // 0019 LDCONST R8 K12 + 0x58240008, // 001A LDCONST R9 K8 + 0x5C280A00, // 001B MOVE R10 R5 + 0x7C1C0600, // 001C CALL R7 3 + 0x5820000D, // 001D LDCONST R8 K13 + 0x7C180400, // 001E CALL R6 2 + 0x8C18050E, // 001F GETMET R6 R2 K14 + 0x5820000F, // 0020 LDCONST R8 K15 + 0x58240010, // 0021 LDCONST R9 K16 + 0x5C280A00, // 0022 MOVE R10 R5 + 0x882C0111, // 0023 GETMBR R11 R0 K17 + 0x7C180A00, // 0024 CALL R6 5 + 0xB81A0E00, // 0025 GETNGBL R6 K7 + 0x8C180D12, // 0026 GETMET R6 R6 K18 + 0x7C180200, // 0027 CALL R6 1 + 0x8C180D09, // 0028 GETMET R6 R6 K9 + 0x5820000A, // 0029 LDCONST R8 K10 + 0x7C180400, // 002A CALL R6 2 + 0x781A000D, // 002B JMPF R6 #003A + 0xB81A1600, // 002C GETNGBL R6 K11 + 0x601C0018, // 002D GETGBL R7 G24 + 0x5820000C, // 002E LDCONST R8 K12 + 0x58240012, // 002F LDCONST R9 K18 + 0x5C280A00, // 0030 MOVE R10 R5 + 0x7C1C0600, // 0031 CALL R7 3 + 0x5820000D, // 0032 LDCONST R8 K13 + 0x7C180400, // 0033 CALL R6 2 + 0x8C18050E, // 0034 GETMET R6 R2 K14 + 0x5820000F, // 0035 LDCONST R8 K15 + 0x58240010, // 0036 LDCONST R9 K16 + 0x5C280A00, // 0037 MOVE R10 R5 + 0x882C0113, // 0038 GETMBR R11 R0 K19 + 0x7C180A00, // 0039 CALL R6 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC0C0002, // 003C CATCH R3 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8161600, // 003E GETNGBL R5 K11 + 0x60180008, // 003F GETGBL R6 G8 + 0x5C1C0600, // 0040 MOVE R7 R3 + 0x7C180200, // 0041 CALL R6 1 + 0x001A2806, // 0042 ADD R6 K20 R6 + 0x00180D15, // 0043 ADD R6 R6 K21 + 0x601C0008, // 0044 GETGBL R7 G8 + 0x5C200800, // 0045 MOVE R8 R4 + 0x7C1C0200, // 0046 CALL R7 1 + 0x00180C07, // 0047 ADD R6 R6 R7 + 0x581C0016, // 0048 LDCONST R7 K22 + 0x7C140400, // 0049 CALL R5 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(is_root_commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(publish_result), + /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), + /* K4 */ be_nested_str_weak(Matter), + /* K5 */ be_nested_str_weak(commissioning_open), + /* K6 */ be_nested_str_weak(mdns_remove_PASE), + /* K7 */ be_nested_str_weak(commissioning_iterations), + /* K8 */ be_nested_str_weak(commissioning_discriminator), + /* K9 */ be_nested_str_weak(commissioning_salt), + /* K10 */ be_nested_str_weak(commissioning_w0), + /* K11 */ be_nested_str_weak(commissioning_L), + /* K12 */ be_nested_str_weak(commissioning_admin_fabric), + }), + be_str_weak(stop_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x78060004, // 0002 JMPF R1 #0008 + 0xB8060200, // 0003 GETNGBL R1 K1 + 0x8C040302, // 0004 GETMET R1 R1 K2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x58100004, // 0006 LDCONST R4 K4 + 0x7C040600, // 0007 CALL R1 3 + 0x4C040000, // 0008 LDNIL R1 + 0x90020A01, // 0009 SETMBR R0 K5 R1 + 0x8C040106, // 000A GETMET R1 R0 K6 + 0x7C040200, // 000B CALL R1 1 + 0x4C040000, // 000C LDNIL R1 + 0x90020E01, // 000D SETMBR R0 K7 R1 + 0x4C040000, // 000E LDNIL R1 + 0x90021001, // 000F SETMBR R0 K8 R1 + 0x4C040000, // 0010 LDNIL R1 + 0x90021201, // 0011 SETMBR R0 K9 R1 + 0x4C040000, // 0012 LDNIL R1 + 0x90021401, // 0013 SETMBR R0 K10 R1 + 0x4C040000, // 0014 LDNIL R1 + 0x90021601, // 0015 SETMBR R0 K11 R1 + 0x4C040000, // 0016 LDNIL R1 + 0x90021801, // 0017 SETMBR R0 K12 R1 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _compute_pbkdf +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__compute_pbkdf, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), + /* K3 */ be_nested_str_weak(derive), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(root_w0), + /* K6 */ be_nested_str_weak(EC_P256), + /* K7 */ be_nested_str_weak(mod), + /* K8 */ be_nested_str_weak(root_L), + /* K9 */ be_nested_str_weak(public_key), + }), + be_str_weak(_compute_pbkdf), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x60140015, // 0001 GETGBL R5 G21 + 0x7C140000, // 0002 CALL R5 0 + 0x8C140B01, // 0003 GETMET R5 R5 K1 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x54220003, // 0005 LDINT R8 4 + 0x7C140600, // 0006 CALL R5 3 + 0x8C180902, // 0007 GETMET R6 R4 K2 + 0x7C180200, // 0008 CALL R6 1 + 0x8C180D03, // 0009 GETMET R6 R6 K3 + 0x5C200A00, // 000A MOVE R8 R5 + 0x5C240600, // 000B MOVE R9 R3 + 0x5C280400, // 000C MOVE R10 R2 + 0x542E004F, // 000D LDINT R11 80 + 0x7C180A00, // 000E CALL R6 5 + 0x541E0026, // 000F LDINT R7 39 + 0x401E0807, // 0010 CONNECT R7 K4 R7 + 0x941C0C07, // 0011 GETIDX R7 R6 R7 + 0x54220027, // 0012 LDINT R8 40 + 0x5426004E, // 0013 LDINT R9 79 + 0x40201009, // 0014 CONNECT R8 R8 R9 + 0x94200C08, // 0015 GETIDX R8 R6 R8 + 0x8C240906, // 0016 GETMET R9 R4 K6 + 0x7C240200, // 0017 CALL R9 1 + 0x8C241307, // 0018 GETMET R9 R9 K7 + 0x5C2C0E00, // 0019 MOVE R11 R7 + 0x7C240400, // 001A CALL R9 2 + 0x90020A09, // 001B SETMBR R0 K5 R9 + 0x8C240906, // 001C GETMET R9 R4 K6 + 0x7C240200, // 001D CALL R9 1 + 0x8C241307, // 001E GETMET R9 R9 K7 + 0x5C2C1000, // 001F MOVE R11 R8 + 0x7C240400, // 0020 CALL R9 2 + 0x8C280906, // 0021 GETMET R10 R4 K6 + 0x7C280200, // 0022 CALL R10 1 + 0x8C281509, // 0023 GETMET R10 R10 K9 + 0x5C301200, // 0024 MOVE R12 R9 + 0x7C280400, // 0025 CALL R10 2 + 0x9002100A, // 0026 SETMBR R0 K8 R10 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrUpdate +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrUpdate, /* name */ + be_nested_proto( + 18, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(resp_cmnd_str), + /* K2 */ be_nested_str_weak(Invalid_X20JSON), + /* K3 */ be_nested_str_weak(find_key_i), + /* K4 */ be_nested_str_weak(Ep), + /* K5 */ be_nested_str_weak(Name), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute), + /* K8 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K9 */ be_nested_str_weak(remove), + /* K10 */ be_nested_str_weak(find_plugin_by_friendly_name), + /* K11 */ be_nested_str_weak(Invalid_X20Device), + /* K12 */ be_nested_str_weak(VIRTUAL), + /* K13 */ be_nested_str_weak(Device_X20is_X20not_X20virtual), + /* K14 */ be_nested_str_weak(consolidate_update_commands), + /* K15 */ be_nested_str_weak(keys), + /* K16 */ be_nested_str_weak(find_list_i), + /* K17 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27), + /* K18 */ be_nested_str_weak(stop_iteration), + /* K19 */ be_nested_str_weak(update_virtual), + /* K20 */ be_nested_str_weak(state_json), + /* K21 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D), + /* K22 */ be_nested_str_weak(resp_cmnd), + /* K23 */ be_nested_str_weak(resp_cmnd_done), + /* K24 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute), + }), + be_str_weak(MtrUpdate), + &be_const_str_solidified, + ( &(const binstruction[126]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160004, // 0002 JMPF R5 #0008 + 0xB8160000, // 0003 GETNGBL R5 K0 + 0x8C140B01, // 0004 GETMET R5 R5 K1 + 0x581C0002, // 0005 LDCONST R7 K2 + 0x7C140400, // 0006 CALL R5 2 + 0x80040A00, // 0007 RET 1 R5 + 0xB8160000, // 0008 GETNGBL R5 K0 + 0x8C140B03, // 0009 GETMET R5 R5 K3 + 0x5C1C0800, // 000A MOVE R7 R4 + 0x58200004, // 000B LDCONST R8 K4 + 0x7C140600, // 000C CALL R5 3 + 0xB81A0000, // 000D GETNGBL R6 K0 + 0x8C180D03, // 000E GETMET R6 R6 K3 + 0x5C200800, // 000F MOVE R8 R4 + 0x58240005, // 0010 LDCONST R9 K5 + 0x7C180600, // 0011 CALL R6 3 + 0x74160000, // 0012 JMPT R5 #0014 + 0x781A0064, // 0013 JMPF R6 #0079 + 0x4C1C0000, // 0014 LDNIL R7 + 0x78160010, // 0015 JMPF R5 #0027 + 0x60200009, // 0016 GETGBL R8 G9 + 0x94240805, // 0017 GETIDX R9 R4 R5 + 0x7C200200, // 0018 CALL R8 1 + 0x18241106, // 0019 LE R9 R8 K6 + 0x78260004, // 001A JMPF R9 #0020 + 0xB8260000, // 001B GETNGBL R9 K0 + 0x8C241301, // 001C GETMET R9 R9 K1 + 0x582C0007, // 001D LDCONST R11 K7 + 0x7C240400, // 001E CALL R9 2 + 0x80041200, // 001F RET 1 R9 + 0x8C240108, // 0020 GETMET R9 R0 K8 + 0x5C2C1000, // 0021 MOVE R11 R8 + 0x7C240400, // 0022 CALL R9 2 + 0x5C1C1200, // 0023 MOVE R7 R9 + 0x8C240909, // 0024 GETMET R9 R4 K9 + 0x5C2C0A00, // 0025 MOVE R11 R5 + 0x7C240400, // 0026 CALL R9 2 + 0x781A0009, // 0027 JMPF R6 #0032 + 0x4C200000, // 0028 LDNIL R8 + 0x1C200E08, // 0029 EQ R8 R7 R8 + 0x78220003, // 002A JMPF R8 #002F + 0x8C20010A, // 002B GETMET R8 R0 K10 + 0x94280806, // 002C GETIDX R10 R4 R6 + 0x7C200400, // 002D CALL R8 2 + 0x5C1C1000, // 002E MOVE R7 R8 + 0x8C200909, // 002F GETMET R8 R4 K9 + 0x5C280C00, // 0030 MOVE R10 R6 + 0x7C200400, // 0031 CALL R8 2 + 0x4C200000, // 0032 LDNIL R8 + 0x1C200E08, // 0033 EQ R8 R7 R8 + 0x78220004, // 0034 JMPF R8 #003A + 0xB8220000, // 0035 GETNGBL R8 K0 + 0x8C201101, // 0036 GETMET R8 R8 K1 + 0x5828000B, // 0037 LDCONST R10 K11 + 0x7C200400, // 0038 CALL R8 2 + 0x80041000, // 0039 RET 1 R8 + 0x88200F0C, // 003A GETMBR R8 R7 K12 + 0x74220004, // 003B JMPT R8 #0041 + 0xB8220000, // 003C GETNGBL R8 K0 + 0x8C201101, // 003D GETMET R8 R8 K1 + 0x5828000D, // 003E LDCONST R10 K13 + 0x7C200400, // 003F CALL R8 2 + 0x80041000, // 0040 RET 1 R8 + 0x8C200F0E, // 0041 GETMET R8 R7 K14 + 0x7C200200, // 0042 CALL R8 1 + 0x60240013, // 0043 GETGBL R9 G19 + 0x7C240000, // 0044 CALL R9 0 + 0x60280010, // 0045 GETGBL R10 G16 + 0x8C2C090F, // 0046 GETMET R11 R4 K15 + 0x7C2C0200, // 0047 CALL R11 1 + 0x7C280200, // 0048 CALL R10 1 + 0xA8020016, // 0049 EXBLK 0 #0061 + 0x5C2C1400, // 004A MOVE R11 R10 + 0x7C2C0000, // 004B CALL R11 0 + 0xB8320000, // 004C GETNGBL R12 K0 + 0x8C301910, // 004D GETMET R12 R12 K16 + 0x5C381000, // 004E MOVE R14 R8 + 0x5C3C1600, // 004F MOVE R15 R11 + 0x7C300600, // 0050 CALL R12 3 + 0x4C340000, // 0051 LDNIL R13 + 0x1C34180D, // 0052 EQ R13 R12 R13 + 0x78360008, // 0053 JMPF R13 #005D + 0xB8360000, // 0054 GETNGBL R13 K0 + 0x8C341B01, // 0055 GETMET R13 R13 K1 + 0x603C0018, // 0056 GETGBL R15 G24 + 0x58400011, // 0057 LDCONST R16 K17 + 0x5C441600, // 0058 MOVE R17 R11 + 0x7C3C0400, // 0059 CALL R15 2 + 0x7C340400, // 005A CALL R13 2 + 0xA8040001, // 005B EXBLK 1 1 + 0x80001A00, // 005C RET 0 + 0x9434100C, // 005D GETIDX R13 R8 R12 + 0x9438080B, // 005E GETIDX R14 R4 R11 + 0x98241A0E, // 005F SETIDX R9 R13 R14 + 0x7001FFE8, // 0060 JMP #004A + 0x58280012, // 0061 LDCONST R10 K18 + 0xAC280200, // 0062 CATCH R10 1 0 + 0xB0080000, // 0063 RAISE 2 R0 R0 + 0x8C280F13, // 0064 GETMET R10 R7 K19 + 0x5C301200, // 0065 MOVE R12 R9 + 0x7C280400, // 0066 CALL R10 2 + 0x8C280F14, // 0067 GETMET R10 R7 K20 + 0x7C280200, // 0068 CALL R10 1 + 0x782A000A, // 0069 JMPF R10 #0075 + 0x602C0018, // 006A GETGBL R11 G24 + 0x58300015, // 006B LDCONST R12 K21 + 0x5C340200, // 006C MOVE R13 R1 + 0x5C381400, // 006D MOVE R14 R10 + 0x7C2C0600, // 006E CALL R11 3 + 0xB8320000, // 006F GETNGBL R12 K0 + 0x8C301916, // 0070 GETMET R12 R12 K22 + 0x5C381600, // 0071 MOVE R14 R11 + 0x7C300400, // 0072 CALL R12 2 + 0x80041800, // 0073 RET 1 R12 + 0x70020003, // 0074 JMP #0079 + 0xB82E0000, // 0075 GETNGBL R11 K0 + 0x8C2C1717, // 0076 GETMET R11 R11 K23 + 0x7C2C0200, // 0077 CALL R11 1 + 0x80041600, // 0078 RET 1 R11 + 0xB81E0000, // 0079 GETNGBL R7 K0 + 0x8C1C0F01, // 007A GETMET R7 R7 K1 + 0x58240018, // 007B LDCONST R9 K24 + 0x7C1C0400, // 007C CALL R7 2 + 0x80000000, // 007D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(find), + /* K13 */ be_nested_str_weak(up), + /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K15 */ be_nested_str_weak(hostname_eth), + /* K16 */ be_nested_str_weak(add_service), + /* K17 */ be_nested_str_weak(_matter), + /* K18 */ be_nested_str_weak(_tcp), + /* K19 */ be_nested_str_weak(_I), + /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K21 */ be_nested_str_weak(add_subtype), + /* K22 */ be_nested_str_weak(wifi), + /* K23 */ be_nested_str_weak(hostname_wifi), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_const_int(2), + }), + be_str_weak(mdns_announce_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[115]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA802005F, // 0001 EXBLK 0 #0062 + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x001E1005, // 0011 ADD R7 K8 R5 + 0x58200009, // 0012 LDCONST R8 K9 + 0x7C180400, // 0013 CALL R6 2 + 0xB81A1400, // 0014 GETNGBL R6 K10 + 0x8C180D0B, // 0015 GETMET R6 R6 K11 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180D0C, // 0017 GETMET R6 R6 K12 + 0x5820000D, // 0018 LDCONST R8 K13 + 0x7C180400, // 0019 CALL R6 2 + 0x781A001E, // 001A JMPF R6 #003A + 0xB81A0E00, // 001B GETNGBL R6 K7 + 0x601C0018, // 001C GETGBL R7 G24 + 0x5820000E, // 001D LDCONST R8 K14 + 0x5824000B, // 001E LDCONST R9 K11 + 0x5C280A00, // 001F MOVE R10 R5 + 0x882C010F, // 0020 GETMBR R11 R0 K15 + 0x7C1C0800, // 0021 CALL R7 4 + 0x58200009, // 0022 LDCONST R8 K9 + 0x7C180400, // 0023 CALL R6 2 + 0x8C180510, // 0024 GETMET R6 R2 K16 + 0x58200011, // 0025 LDCONST R8 K17 + 0x58240012, // 0026 LDCONST R9 K18 + 0x542A15A3, // 0027 LDINT R10 5540 + 0x4C2C0000, // 0028 LDNIL R11 + 0x5C300A00, // 0029 MOVE R12 R5 + 0x8834010F, // 002A GETMBR R13 R0 K15 + 0x7C180E00, // 002B CALL R6 7 + 0x8C180905, // 002C GETMET R6 R4 K5 + 0x7C180200, // 002D CALL R6 1 + 0x001A2606, // 002E ADD R6 K19 R6 + 0xB81E0E00, // 002F GETNGBL R7 K7 + 0x00222806, // 0030 ADD R8 K20 R6 + 0x58240009, // 0031 LDCONST R9 K9 + 0x7C1C0400, // 0032 CALL R7 2 + 0x8C1C0515, // 0033 GETMET R7 R2 K21 + 0x58240011, // 0034 LDCONST R9 K17 + 0x58280012, // 0035 LDCONST R10 K18 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x8830010F, // 0037 GETMBR R12 R0 K15 + 0x5C340C00, // 0038 MOVE R13 R6 + 0x7C1C0C00, // 0039 CALL R7 6 + 0xB81A1400, // 003A GETNGBL R6 K10 + 0x8C180D16, // 003B GETMET R6 R6 K22 + 0x7C180200, // 003C CALL R6 1 + 0x8C180D0C, // 003D GETMET R6 R6 K12 + 0x5820000D, // 003E LDCONST R8 K13 + 0x7C180400, // 003F CALL R6 2 + 0x781A001E, // 0040 JMPF R6 #0060 + 0xB81A0E00, // 0041 GETNGBL R6 K7 + 0x601C0018, // 0042 GETGBL R7 G24 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x58240016, // 0044 LDCONST R9 K22 + 0x5C280A00, // 0045 MOVE R10 R5 + 0x882C0117, // 0046 GETMBR R11 R0 K23 + 0x7C1C0800, // 0047 CALL R7 4 + 0x58200009, // 0048 LDCONST R8 K9 + 0x7C180400, // 0049 CALL R6 2 + 0x8C180510, // 004A GETMET R6 R2 K16 + 0x58200011, // 004B LDCONST R8 K17 + 0x58240012, // 004C LDCONST R9 K18 + 0x542A15A3, // 004D LDINT R10 5540 + 0x4C2C0000, // 004E LDNIL R11 + 0x5C300A00, // 004F MOVE R12 R5 + 0x88340117, // 0050 GETMBR R13 R0 K23 + 0x7C180E00, // 0051 CALL R6 7 + 0x8C180905, // 0052 GETMET R6 R4 K5 + 0x7C180200, // 0053 CALL R6 1 + 0x001A2606, // 0054 ADD R6 K19 R6 + 0xB81E0E00, // 0055 GETNGBL R7 K7 + 0x00222806, // 0056 ADD R8 K20 R6 + 0x58240009, // 0057 LDCONST R9 K9 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C1C0515, // 0059 GETMET R7 R2 K21 + 0x58240011, // 005A LDCONST R9 K17 + 0x58280012, // 005B LDCONST R10 K18 + 0x5C2C0A00, // 005C MOVE R11 R5 + 0x88300117, // 005D GETMBR R12 R0 K23 + 0x5C340C00, // 005E MOVE R13 R6 + 0x7C1C0C00, // 005F CALL R7 6 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7002000F, // 0061 JMP #0072 + 0xAC0C0002, // 0062 CATCH R3 0 2 + 0x7002000C, // 0063 JMP #0071 + 0xB8160E00, // 0064 GETNGBL R5 K7 + 0x60180008, // 0065 GETGBL R6 G8 + 0x5C1C0600, // 0066 MOVE R7 R3 + 0x7C180200, // 0067 CALL R6 1 + 0x001A3006, // 0068 ADD R6 K24 R6 + 0x00180D19, // 0069 ADD R6 R6 K25 + 0x601C0008, // 006A GETGBL R7 G8 + 0x5C200800, // 006B MOVE R8 R4 + 0x7C1C0200, // 006C CALL R7 1 + 0x00180C07, // 006D ADD R6 R6 R7 + 0x581C001A, // 006E LDCONST R7 K26 + 0x7C140400, // 006F CALL R5 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery_all_fabrics +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_remove_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: save_param +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_save_param, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(update_remotes_info), + /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), + /* K3 */ be_nested_str_weak(root_discriminator), + /* K4 */ be_nested_str_weak(root_passcode), + /* K5 */ be_nested_str_weak(ipv4only), + /* K6 */ be_nested_str_weak(true), + /* K7 */ be_nested_str_weak(false), + /* K8 */ be_nested_str_weak(disable_bridge_mode), + /* K9 */ be_nested_str_weak(next_ep), + /* K10 */ be_nested_str_weak(debug), + /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), + /* K14 */ be_nested_str_weak(dump), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_config_remotes), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), + /* K19 */ be_nested_str_weak(_X7D), + /* K20 */ be_nested_str_weak(FILENAME), + /* K21 */ be_nested_str_weak(w), + /* K22 */ be_nested_str_weak(write), + /* K23 */ be_nested_str_weak(close), + /* K24 */ be_nested_str_weak(log), + /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K26 */ be_nested_str_weak(_X20and_X20configuration), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_const_int(2), + /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K30 */ be_nested_str_weak(_X7C), + }), + be_str_weak(save_param), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x88140104, // 0006 GETMBR R5 R0 K4 + 0x88180105, // 0007 GETMBR R6 R0 K5 + 0x781A0001, // 0008 JMPF R6 #000B + 0x58180006, // 0009 LDCONST R6 K6 + 0x70020000, // 000A JMP #000C + 0x58180007, // 000B LDCONST R6 K7 + 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x781E0001, // 000D JMPF R7 #0010 + 0x581C0006, // 000E LDCONST R7 K6 + 0x70020000, // 000F JMP #0011 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x88200109, // 0011 GETMBR R8 R0 K9 + 0x7C080C00, // 0012 CALL R2 6 + 0x880C010A, // 0013 GETMBR R3 R0 K10 + 0x780E0000, // 0014 JMPF R3 #0016 + 0x0008050B, // 0015 ADD R2 R2 K11 + 0x880C010C, // 0016 GETMBR R3 R0 K12 + 0x780E000E, // 0017 JMPF R3 #0027 + 0x0008050D, // 0018 ADD R2 R2 K13 + 0x8C0C030E, // 0019 GETMET R3 R1 K14 + 0x8814010F, // 001A GETMBR R5 R0 K15 + 0x7C0C0400, // 001B CALL R3 2 + 0x00080403, // 001C ADD R2 R2 R3 + 0x600C000C, // 001D GETGBL R3 G12 + 0x88100110, // 001E GETMBR R4 R0 K16 + 0x7C0C0200, // 001F CALL R3 1 + 0x240C0711, // 0020 GT R3 R3 K17 + 0x780E0004, // 0021 JMPF R3 #0027 + 0x00080512, // 0022 ADD R2 R2 K18 + 0x8C0C030E, // 0023 GETMET R3 R1 K14 + 0x88140110, // 0024 GETMBR R5 R0 K16 + 0x7C0C0400, // 0025 CALL R3 2 + 0x00080403, // 0026 ADD R2 R2 R3 + 0x00080513, // 0027 ADD R2 R2 K19 + 0xA8020017, // 0028 EXBLK 0 #0041 + 0x600C0011, // 0029 GETGBL R3 G17 + 0x88100114, // 002A GETMBR R4 R0 K20 + 0x58140015, // 002B LDCONST R5 K21 + 0x7C0C0400, // 002C CALL R3 2 + 0x8C100716, // 002D GETMET R4 R3 K22 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x8C100717, // 0030 GETMET R4 R3 K23 + 0x7C100200, // 0031 CALL R4 1 + 0xB8123000, // 0032 GETNGBL R4 K24 + 0x60140018, // 0033 GETGBL R5 G24 + 0x58180019, // 0034 LDCONST R6 K25 + 0x881C010C, // 0035 GETMBR R7 R0 K12 + 0x781E0001, // 0036 JMPF R7 #0039 + 0x581C001A, // 0037 LDCONST R7 K26 + 0x70020000, // 0038 JMP #003A + 0x581C001B, // 0039 LDCONST R7 K27 + 0x7C140400, // 003A CALL R5 2 + 0x5818001C, // 003B LDCONST R6 K28 + 0x7C100400, // 003C CALL R4 2 + 0xA8040001, // 003D EXBLK 1 1 + 0x80040400, // 003E RET 1 R2 + 0xA8040001, // 003F EXBLK 1 1 + 0x70020010, // 0040 JMP #0052 + 0xAC0C0002, // 0041 CATCH R3 0 2 + 0x7002000D, // 0042 JMP #0051 + 0xB8163000, // 0043 GETNGBL R5 K24 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x001A3A06, // 0047 ADD R6 K29 R6 + 0x00180D1E, // 0048 ADD R6 R6 K30 + 0x601C0008, // 0049 GETGBL R7 G8 + 0x5C200800, // 004A MOVE R8 R4 + 0x7C1C0200, // 004B CALL R7 1 + 0x00180C07, // 004C ADD R6 R6 R7 + 0x581C001C, // 004D LDCONST R7 K28 + 0x7C140400, // 004E CALL R5 2 + 0x80040400, // 004F RET 1 R2 + 0x70020000, // 0050 JMP #0052 + 0xB0080000, // 0051 RAISE 2 R0 R0 + 0x80000000, // 0052 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_operational_discovery_deferred +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_operational_discovery), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_operational_discovery_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start_root_basic_commissioning), + }), + be_str_weak(_init_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040302, // 0003 EQ R1 R1 K2 + 0x78060001, // 0004 JMPF R1 #0007 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x7C040200, // 0006 CALL R1 1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_received +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_msg_received, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(msg_received), + }), + be_str_weak(msg_received), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: autoconf_sensors_list ********************************************************************/ @@ -6060,10 +4796,585 @@ be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ /******************************************************************** -** Solidified function: is_commissioning_open +** Solidified function: MtrInfo ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ +be_local_closure(class_Matter_Device_MtrInfo, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(MtrInfo_one), + /* K3 */ be_nested_str_weak(endpoint), + /* K4 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(int), + /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrInfo), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x1C140700, // 0000 EQ R5 R3 K0 + 0x7815FFFF, // 0001 JMPF R5 #0002 + 0x1C140700, // 0002 EQ R5 R3 K0 + 0x7816000D, // 0003 JMPF R5 #0012 + 0x60140010, // 0004 GETGBL R5 G16 + 0x88180101, // 0005 GETMBR R6 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C180A00, // 0008 MOVE R6 R5 + 0x7C180000, // 0009 CALL R6 0 + 0x8C1C0102, // 000A GETMET R7 R0 K2 + 0x88240D03, // 000B GETMBR R9 R6 K3 + 0x7C1C0400, // 000C CALL R7 2 + 0x7001FFF9, // 000D JMP #0008 + 0x58140004, // 000E LDCONST R5 K4 + 0xAC140200, // 000F CATCH R5 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x70020011, // 0011 JMP #0024 + 0x60140004, // 0012 GETGBL R5 G4 + 0x5C180800, // 0013 MOVE R6 R4 + 0x7C140200, // 0014 CALL R5 1 + 0x1C140B05, // 0015 EQ R5 R5 K5 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C140102, // 0017 GETMET R5 R0 K2 + 0x5C1C0800, // 0018 MOVE R7 R4 + 0x7C140400, // 0019 CALL R5 2 + 0x70020008, // 001A JMP #0024 + 0x8C140106, // 001B GETMET R5 R0 K6 + 0x5C1C0600, // 001C MOVE R7 R3 + 0x7C140400, // 001D CALL R5 2 + 0x4C180000, // 001E LDNIL R6 + 0x20180A06, // 001F NE R6 R5 R6 + 0x781A0002, // 0020 JMPF R6 #0024 + 0x8C180102, // 0021 GETMET R6 R0 K2 + 0x88200B03, // 0022 GETMBR R8 R5 K3 + 0x7C180400, // 0023 CALL R6 2 + 0xB8160E00, // 0024 GETNGBL R5 K7 + 0x8C140B08, // 0025 GETMET R5 R5 K8 + 0x7C140200, // 0026 CALL R5 1 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_manual_pairing_code +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(root_discriminator), + /* K1 */ be_nested_str_weak(root_passcode), + /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Verhoeff), + /* K5 */ be_nested_str_weak(checksum), + }), + be_str_weak(compute_manual_pairing_code), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x540A0FFE, // 0001 LDINT R2 4095 + 0x2C040202, // 0002 AND R1 R1 R2 + 0x540A0009, // 0003 LDINT R2 10 + 0x3C040202, // 0004 SHR R1 R1 R2 + 0x88080100, // 0005 GETMBR R2 R0 K0 + 0x540E02FF, // 0006 LDINT R3 768 + 0x2C080403, // 0007 AND R2 R2 R3 + 0x540E0005, // 0008 LDINT R3 6 + 0x38080403, // 0009 SHL R2 R2 R3 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x54123FFE, // 000B LDINT R4 16383 + 0x2C0C0604, // 000C AND R3 R3 R4 + 0x30080403, // 000D OR R2 R2 R3 + 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x5412000D, // 000F LDINT R4 14 + 0x3C0C0604, // 0010 SHR R3 R3 R4 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140002, // 0012 LDCONST R5 K2 + 0x5C180200, // 0013 MOVE R6 R1 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x5C200600, // 0015 MOVE R8 R3 + 0x7C100800, // 0016 CALL R4 4 + 0xB8160600, // 0017 GETNGBL R5 K3 + 0x88140B04, // 0018 GETMBR R5 R5 K4 + 0x8C140B05, // 0019 GETMET R5 R5 K5 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x7C140400, // 001B CALL R5 2 + 0x00100805, // 001C ADD R4 R4 R5 + 0x80040800, // 001D RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: signal_endpoints_changed +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + }), + be_str_weak(signal_endpoints_changed), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x580C0001, // 0001 LDCONST R3 K1 + 0x5412001C, // 0002 LDINT R4 29 + 0x58140002, // 0003 LDCONST R5 K2 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C040A00, // 0005 CALL R1 5 + 0x8C040100, // 0006 GETMET R1 R0 K0 + 0xB80E0600, // 0007 GETNGBL R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x5412001C, // 0009 LDINT R4 29 + 0x58140002, // 000A LDCONST R5 K2 + 0x50180000, // 000B LDBOOL R6 0 0 + 0x7C040A00, // 000C CALL R1 5 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrJoin +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrJoin, /* name */ + be_nested_proto( + 8, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(start_root_basic_commissioning), + /* K1 */ be_nested_str_weak(stop_basic_commissioning), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrJoin), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x60140009, // 0000 GETGBL R5 G9 + 0x5C180600, // 0001 MOVE R6 R3 + 0x7C140200, // 0002 CALL R5 1 + 0x78160002, // 0003 JMPF R5 #0007 + 0x8C180100, // 0004 GETMET R6 R0 K0 + 0x7C180200, // 0005 CALL R6 1 + 0x70020001, // 0006 JMP #0009 + 0x8C180101, // 0007 GETMET R6 R0 K1 + 0x7C180200, // 0008 CALL R6 1 + 0xB81A0400, // 0009 GETNGBL R6 K2 + 0x8C180D03, // 000A GETMET R6 R6 K3 + 0x7C180200, // 000B CALL R6 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_add_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K4 */ be_nested_str_weak(_X27_X20skipping), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(next_ep), + /* K7 */ be_nested_str_weak(plugins), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(type), + /* K10 */ be_nested_str_weak(keys), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K13 */ be_nested_str_weak(conf_to_log), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_persist), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(save_param), + /* K19 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_add_endpoint), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120008, // 0006 JMPF R4 #0010 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0x60140008, // 0008 GETGBL R5 G8 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C140200, // 000A CALL R5 1 + 0x00160605, // 000B ADD R5 K3 R5 + 0x00140B04, // 000C ADD R5 R5 K4 + 0x58180005, // 000D LDCONST R6 K5 + 0x7C100400, // 000E CALL R4 2 + 0x80000800, // 000F RET 0 + 0x88100106, // 0010 GETMBR R4 R0 K6 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x5C180600, // 0014 MOVE R6 R3 + 0x5C1C0000, // 0015 MOVE R7 R0 + 0x5C200800, // 0016 MOVE R8 R4 + 0x5C240400, // 0017 MOVE R9 R2 + 0x7C180600, // 0018 CALL R6 3 + 0x881C0107, // 0019 GETMBR R7 R0 K7 + 0x8C1C0F08, // 001A GETMET R7 R7 K8 + 0x5C240C00, // 001B MOVE R9 R6 + 0x7C1C0400, // 001C CALL R7 2 + 0x601C0013, // 001D GETGBL R7 G19 + 0x7C1C0000, // 001E CALL R7 0 + 0x981E1201, // 001F SETIDX R7 K9 R1 + 0x60200010, // 0020 GETGBL R8 G16 + 0x8C24050A, // 0021 GETMET R9 R2 K10 + 0x7C240200, // 0022 CALL R9 1 + 0x7C200200, // 0023 CALL R8 1 + 0xA8020004, // 0024 EXBLK 0 #002A + 0x5C241000, // 0025 MOVE R9 R8 + 0x7C240000, // 0026 CALL R9 0 + 0x94280409, // 0027 GETIDX R10 R2 R9 + 0x981C120A, // 0028 SETIDX R7 R9 R10 + 0x7001FFFA, // 0029 JMP #0025 + 0x5820000B, // 002A LDCONST R8 K11 + 0xAC200200, // 002B CATCH R8 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0xB8220400, // 002D GETNGBL R8 K2 + 0x60240018, // 002E GETGBL R9 G24 + 0x5828000C, // 002F LDCONST R10 K12 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300200, // 0031 MOVE R12 R1 + 0x8C34010D, // 0032 GETMET R13 R0 K13 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C340400, // 0034 CALL R13 2 + 0x7C240800, // 0035 CALL R9 4 + 0x5828000E, // 0036 LDCONST R10 K14 + 0x7C200400, // 0037 CALL R8 2 + 0x8820010F, // 0038 GETMBR R8 R0 K15 + 0x98200A07, // 0039 SETIDX R8 R5 R7 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x90022008, // 003B SETMBR R0 K16 R8 + 0x88200106, // 003C GETMBR R8 R0 K6 + 0x00201111, // 003D ADD R8 R8 K17 + 0x90020C08, // 003E SETMBR R0 K6 R8 + 0x8C200112, // 003F GETMET R8 R0 K18 + 0x7C200200, // 0040 CALL R8 1 + 0x8C200113, // 0041 GETMET R8 R0 K19 + 0x7C200200, // 0042 CALL R8 1 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_second, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(every_second), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(commissioning_open), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(time_reached), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x88040103, // 0006 GETMBR R1 R0 K3 + 0x4C080000, // 0007 LDNIL R2 + 0x20040202, // 0008 NE R1 R1 R2 + 0x78060006, // 0009 JMPF R1 #0011 + 0xB8060800, // 000A GETNGBL R1 K4 + 0x8C040305, // 000B GETMET R1 R1 K5 + 0x880C0103, // 000C GETMBR R3 R0 K3 + 0x7C040400, // 000D CALL R1 2 + 0x78060001, // 000E JMPF R1 #0011 + 0x4C040000, // 000F LDNIL R1 + 0x90020601, // 0010 SETMBR R0 K3 R1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: received_ack +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_received_ack, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(received_ack), + }), + be_str_weak(received_ack), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clean_remotes +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_clean_remotes, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(http_remotes), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(plugins), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_nested_str_weak(http_remote), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(keys), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), + /* K13 */ be_nested_str_weak(addr), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(close), + /* K16 */ be_nested_str_weak(remove), + }), + be_str_weak(clean_remotes), + &be_const_str_solidified, + ( &(const binstruction[80]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x780A004B, // 0002 JMPF R2 #004F + 0x60080013, // 0003 GETGBL R2 G19 + 0x7C080000, // 0004 CALL R2 0 + 0x600C0010, // 0005 GETGBL R3 G16 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020003, // 0008 EXBLK 0 #000D + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x98080902, // 000B SETIDX R2 R4 K2 + 0x7001FFFB, // 000C JMP #0009 + 0x580C0003, // 000D LDCONST R3 K3 + 0xAC0C0200, // 000E CATCH R3 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100104, // 0011 GETMBR R4 R0 K4 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA802000F, // 0013 EXBLK 0 #0024 + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x8C140305, // 0016 GETMET R5 R1 K5 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200006, // 0018 LDCONST R8 K6 + 0x7C140600, // 0019 CALL R5 3 + 0x4C180000, // 001A LDNIL R6 + 0x20180A06, // 001B NE R6 R5 R6 + 0x781A0005, // 001C JMPF R6 #0023 + 0x8C180507, // 001D GETMET R6 R2 K7 + 0x5C200A00, // 001E MOVE R8 R5 + 0x58240002, // 001F LDCONST R9 K2 + 0x7C180600, // 0020 CALL R6 3 + 0x00180D08, // 0021 ADD R6 R6 K8 + 0x98080A06, // 0022 SETIDX R2 R5 R6 + 0x7001FFEF, // 0023 JMP #0014 + 0x580C0003, // 0024 LDCONST R3 K3 + 0xAC0C0200, // 0025 CATCH R3 1 0 + 0xB0080000, // 0026 RAISE 2 R0 R0 + 0x600C0012, // 0027 GETGBL R3 G18 + 0x7C0C0000, // 0028 CALL R3 0 + 0x60100010, // 0029 GETGBL R4 G16 + 0x8C140509, // 002A GETMET R5 R2 K9 + 0x7C140200, // 002B CALL R5 1 + 0x7C100200, // 002C CALL R4 1 + 0xA8020008, // 002D EXBLK 0 #0037 + 0x5C140800, // 002E MOVE R5 R4 + 0x7C140000, // 002F CALL R5 0 + 0x94180405, // 0030 GETIDX R6 R2 R5 + 0x1C180D02, // 0031 EQ R6 R6 K2 + 0x781A0002, // 0032 JMPF R6 #0036 + 0x8C18070A, // 0033 GETMET R6 R3 K10 + 0x5C200A00, // 0034 MOVE R8 R5 + 0x7C180400, // 0035 CALL R6 2 + 0x7001FFF6, // 0036 JMP #002E + 0x58100003, // 0037 LDCONST R4 K3 + 0xAC100200, // 0038 CATCH R4 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x60100010, // 003A GETGBL R4 G16 + 0x5C140600, // 003B MOVE R5 R3 + 0x7C100200, // 003C CALL R4 1 + 0xA802000D, // 003D EXBLK 0 #004C + 0x5C140800, // 003E MOVE R5 R4 + 0x7C140000, // 003F CALL R5 0 + 0xB81A1600, // 0040 GETNGBL R6 K11 + 0x881C0B0D, // 0041 GETMBR R7 R5 K13 + 0x001E1807, // 0042 ADD R7 K12 R7 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x7C180400, // 0044 CALL R6 2 + 0x8C180B0F, // 0045 GETMET R6 R5 K15 + 0x7C180200, // 0046 CALL R6 1 + 0x88180101, // 0047 GETMBR R6 R0 K1 + 0x8C180D10, // 0048 GETMET R6 R6 K16 + 0x88200B0D, // 0049 GETMBR R8 R5 K13 + 0x7C180400, // 004A CALL R6 2 + 0x7001FFF1, // 004B JMP #003E + 0x58100003, // 004C LDCONST R4 K3 + 0xAC100200, // 004D CATCH R4 1 0 + 0xB0080000, // 004E RAISE 2 R0 R0 + 0x80000000, // 004F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_class_displayname +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(DISPLAY_NAME), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(get_plugin_class_displayname), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_root_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -6073,16 +5384,712 @@ be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ + ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(commissioning_admin_fabric), }), - be_str_weak(is_commissioning_open), + be_str_weak(is_root_commissioning_open), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ + ( &(const binstruction[11]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 + 0x78060003, // 0003 JMPF R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x74060000, // 0007 JMPT R1 #0009 + 0x50040001, // 0008 LDBOOL R1 0 1 + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_remote_info +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config_remotes), + /* K1 */ be_nested_str_weak(find), + }), + be_str_weak(get_plugin_remote_info), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140013, // 0003 GETGBL R5 G19 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _start_udp +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__start_udp, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_received), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(UDPServer), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(start), + }), + be_str_weak(_start_udp), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x4C080000, // 0003 LDNIL R2 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540615A3, // 0006 LDINT R1 5540 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x600C0008, // 0008 GETGBL R3 G8 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C0C0200, // 000A CALL R3 1 + 0x000E0403, // 000B ADD R3 K2 R3 + 0x58100003, // 000C LDCONST R4 K3 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x8C080505, // 000F GETMET R2 R2 K5 + 0x5C100000, // 0010 MOVE R4 R0 + 0x58140006, // 0011 LDCONST R5 K6 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C080800, // 0013 CALL R2 4 + 0x90020002, // 0014 SETMBR R0 K0 R2 + 0x88080100, // 0015 GETMBR R2 R0 K0 + 0x8C080507, // 0016 GETMET R2 R2 K7 + 0x84100000, // 0017 CLOSURE R4 P0 + 0x7C080400, // 0018 CALL R2 2 + 0xA0000000, // 0019 CLOSE R0 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_commands +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_register_commands, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 4]) { + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrJoin), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrUpdate), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrInfo), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(add_cmd), + /* K2 */ be_nested_str_weak(MtrJoin), + /* K3 */ be_nested_str_weak(MtrUpdate), + /* K4 */ be_nested_str_weak(MtrInfo), + }), + be_str_weak(register_commands), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x84100000, // 0003 CLOSURE R4 P0 + 0x7C040600, // 0004 CALL R1 3 + 0xB8060000, // 0005 GETNGBL R1 K0 + 0x8C040301, // 0006 GETMET R1 R1 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x84100001, // 0008 CLOSURE R4 P1 + 0x7C040600, // 0009 CALL R1 3 + 0xB8060000, // 000A GETNGBL R1 K0 + 0x8C040301, // 000B GETMET R1 R1 K1 + 0x580C0004, // 000C LDCONST R3 K4 + 0x84100002, // 000D CLOSURE R4 P2 + 0x7C040600, // 000E CALL R1 3 + 0xA0000000, // 000F CLOSE R0 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_mdns_announce_hostnames +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(wifi), + /* K2 */ be_nested_str_weak(up), + /* K3 */ be_nested_str_weak(_mdns_announce_hostname), + /* K4 */ be_nested_str_weak(add_rule), + /* K5 */ be_nested_str_weak(Wifi_X23Connected), + /* K6 */ be_nested_str_weak(matter_mdns_host), + /* K7 */ be_nested_str_weak(eth), + /* K8 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_mdns_announce_hostnames), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x94040302, // 0003 GETIDX R1 R1 K2 + 0x78060003, // 0004 JMPF R1 #0009 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x500C0000, // 0006 LDBOOL R3 0 0 + 0x7C040400, // 0007 CALL R1 2 + 0x70020005, // 0008 JMP #000F + 0xB8060000, // 0009 GETNGBL R1 K0 + 0x8C040304, // 000A GETMET R1 R1 K4 + 0x580C0005, // 000B LDCONST R3 K5 + 0x84100000, // 000C CLOSURE R4 P0 + 0x58140006, // 000D LDCONST R5 K6 + 0x7C040800, // 000E CALL R1 4 + 0xB8060000, // 000F GETNGBL R1 K0 + 0x8C040307, // 0010 GETMET R1 R1 K7 + 0x7C040200, // 0011 CALL R1 1 + 0x94040302, // 0012 GETIDX R1 R1 K2 + 0x78060003, // 0013 JMPF R1 #0018 + 0x8C040103, // 0014 GETMET R1 R0 K3 + 0x500C0200, // 0015 LDBOOL R3 1 0 + 0x7C040400, // 0016 CALL R1 2 + 0x70020005, // 0017 JMP #001E + 0xB8060000, // 0018 GETNGBL R1 K0 + 0x8C040304, // 0019 GETMET R1 R1 K4 + 0x580C0008, // 001A LDCONST R3 K8 + 0x84100001, // 001B CLOSURE R4 P1 + 0x58140006, // 001C LDCONST R5 K6 + 0x7C040800, // 001D CALL R1 4 + 0xA0000000, // 001E CLOSE R0 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_init, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[46]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(get_option), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(MATTER_OPTION), + /* K5 */ be_nested_str_weak(UI), + /* K6 */ be_nested_str_weak(profiler), + /* K7 */ be_nested_str_weak(Profiler), + /* K8 */ be_nested_str_weak(started), + /* K9 */ be_nested_str_weak(tick), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(plugins_config_remotes), + /* K14 */ be_nested_str_weak(vendorid), + /* K15 */ be_nested_str_weak(VENDOR_ID), + /* K16 */ be_nested_str_weak(productid), + /* K17 */ be_nested_str_weak(PRODUCT_ID), + /* K18 */ be_nested_str_weak(root_iterations), + /* K19 */ be_nested_str_weak(PBKDF_ITERATIONS), + /* K20 */ be_nested_str_weak(next_ep), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(root_salt), + /* K23 */ be_nested_str_weak(random), + /* K24 */ be_nested_str_weak(ipv4only), + /* K25 */ be_nested_str_weak(disable_bridge_mode), + /* K26 */ be_nested_str_weak(load_param), + /* K27 */ be_nested_str_weak(sessions), + /* K28 */ be_nested_str_weak(Session_Store), + /* K29 */ be_nested_str_weak(load_fabrics), + /* K30 */ be_nested_str_weak(message_handler), + /* K31 */ be_nested_str_weak(MessageHandler), + /* K32 */ be_nested_str_weak(events), + /* K33 */ be_nested_str_weak(EventHandler), + /* K34 */ be_nested_str_weak(ui), + /* K35 */ be_nested_str_weak(wifi), + /* K36 */ be_nested_str_weak(up), + /* K37 */ be_nested_str_weak(eth), + /* K38 */ be_nested_str_weak(start), + /* K39 */ be_nested_str_weak(add_rule), + /* K40 */ be_nested_str_weak(Wifi_X23Connected), + /* K41 */ be_nested_str_weak(matter_start), + /* K42 */ be_nested_str_weak(Eth_X23Connected), + /* K43 */ be_nested_str_weak(_init_basic_commissioning), + /* K44 */ be_nested_str_weak(add_driver), + /* K45 */ be_nested_str_weak(register_commands), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[112]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x88100904, // 0004 GETMBR R4 R4 K4 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0004, // 0006 JMPT R2 #000C + 0xB80A0600, // 0007 GETNGBL R2 K3 + 0x8C080505, // 0008 GETMET R2 R2 K5 + 0x5C100000, // 0009 MOVE R4 R0 + 0x7C080400, // 000A CALL R2 2 + 0x80000400, // 000B RET 0 + 0xB80A0600, // 000C GETNGBL R2 K3 + 0xB80E0600, // 000D GETNGBL R3 K3 + 0x8C0C0707, // 000E GETMET R3 R3 K7 + 0x7C0C0200, // 000F CALL R3 1 + 0x900A0C03, // 0010 SETMBR R2 K6 R3 + 0x50080000, // 0011 LDBOOL R2 0 0 + 0x90021002, // 0012 SETMBR R0 K8 R2 + 0x9002130A, // 0013 SETMBR R0 K9 K10 + 0x60080012, // 0014 GETGBL R2 G18 + 0x7C080000, // 0015 CALL R2 0 + 0x90021602, // 0016 SETMBR R0 K11 R2 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x90021802, // 0018 SETMBR R0 K12 R2 + 0x60080013, // 0019 GETGBL R2 G19 + 0x7C080000, // 001A CALL R2 0 + 0x90021A02, // 001B SETMBR R0 K13 R2 + 0x8808010F, // 001C GETMBR R2 R0 K15 + 0x90021C02, // 001D SETMBR R0 K14 R2 + 0x88080111, // 001E GETMBR R2 R0 K17 + 0x90022002, // 001F SETMBR R0 K16 R2 + 0x88080113, // 0020 GETMBR R2 R0 K19 + 0x90022402, // 0021 SETMBR R0 K18 R2 + 0x90022915, // 0022 SETMBR R0 K20 K21 + 0x8C080317, // 0023 GETMET R2 R1 K23 + 0x5412000F, // 0024 LDINT R4 16 + 0x7C080400, // 0025 CALL R2 2 + 0x90022C02, // 0026 SETMBR R0 K22 R2 + 0x50080000, // 0027 LDBOOL R2 0 0 + 0x90023002, // 0028 SETMBR R0 K24 R2 + 0x50080000, // 0029 LDBOOL R2 0 0 + 0x90023202, // 002A SETMBR R0 K25 R2 + 0x8C08011A, // 002B GETMET R2 R0 K26 + 0x7C080200, // 002C CALL R2 1 + 0xB80A0600, // 002D GETNGBL R2 K3 + 0x8C08051C, // 002E GETMET R2 R2 K28 + 0x5C100000, // 002F MOVE R4 R0 + 0x7C080400, // 0030 CALL R2 2 + 0x90023602, // 0031 SETMBR R0 K27 R2 + 0x8808011B, // 0032 GETMBR R2 R0 K27 + 0x8C08051D, // 0033 GETMET R2 R2 K29 + 0x7C080200, // 0034 CALL R2 1 + 0xB80A0600, // 0035 GETNGBL R2 K3 + 0x8C08051F, // 0036 GETMET R2 R2 K31 + 0x5C100000, // 0037 MOVE R4 R0 + 0x7C080400, // 0038 CALL R2 2 + 0x90023C02, // 0039 SETMBR R0 K30 R2 + 0xB80A0600, // 003A GETNGBL R2 K3 + 0x8C080521, // 003B GETMET R2 R2 K33 + 0x5C100000, // 003C MOVE R4 R0 + 0x7C080400, // 003D CALL R2 2 + 0x90024002, // 003E SETMBR R0 K32 R2 + 0xB80A0600, // 003F GETNGBL R2 K3 + 0x8C080505, // 0040 GETMET R2 R2 K5 + 0x5C100000, // 0041 MOVE R4 R0 + 0x7C080400, // 0042 CALL R2 2 + 0x90024402, // 0043 SETMBR R0 K34 R2 + 0xB80A0200, // 0044 GETNGBL R2 K1 + 0x8C080523, // 0045 GETMET R2 R2 K35 + 0x7C080200, // 0046 CALL R2 1 + 0x94080524, // 0047 GETIDX R2 R2 K36 + 0x740A0004, // 0048 JMPT R2 #004E + 0xB80A0200, // 0049 GETNGBL R2 K1 + 0x8C080525, // 004A GETMET R2 R2 K37 + 0x7C080200, // 004B CALL R2 1 + 0x94080524, // 004C GETIDX R2 R2 K36 + 0x780A0001, // 004D JMPF R2 #0050 + 0x8C080126, // 004E GETMET R2 R0 K38 + 0x7C080200, // 004F CALL R2 1 + 0xB80A0200, // 0050 GETNGBL R2 K1 + 0x8C080523, // 0051 GETMET R2 R2 K35 + 0x7C080200, // 0052 CALL R2 1 + 0x94080524, // 0053 GETIDX R2 R2 K36 + 0x740A0005, // 0054 JMPT R2 #005B + 0xB80A0200, // 0055 GETNGBL R2 K1 + 0x8C080527, // 0056 GETMET R2 R2 K39 + 0x58100028, // 0057 LDCONST R4 K40 + 0x84140000, // 0058 CLOSURE R5 P0 + 0x58180029, // 0059 LDCONST R6 K41 + 0x7C080800, // 005A CALL R2 4 + 0xB80A0200, // 005B GETNGBL R2 K1 + 0x8C080525, // 005C GETMET R2 R2 K37 + 0x7C080200, // 005D CALL R2 1 + 0x94080524, // 005E GETIDX R2 R2 K36 + 0x740A0005, // 005F JMPT R2 #0066 + 0xB80A0200, // 0060 GETNGBL R2 K1 + 0x8C080527, // 0061 GETMET R2 R2 K39 + 0x5810002A, // 0062 LDCONST R4 K42 + 0x84140001, // 0063 CLOSURE R5 P1 + 0x58180029, // 0064 LDCONST R6 K41 + 0x7C080800, // 0065 CALL R2 4 + 0x8C08012B, // 0066 GETMET R2 R0 K43 + 0x7C080200, // 0067 CALL R2 1 + 0xB80A0200, // 0068 GETNGBL R2 K1 + 0x8C08052C, // 0069 GETMET R2 R2 K44 + 0x5C100000, // 006A MOVE R4 R0 + 0x7C080400, // 006B CALL R2 2 + 0x8C08012D, // 006C GETMET R2 R0 K45 + 0x7C080200, // 006D CALL R2 1 + 0xA0000000, // 006E CLOSE R0 + 0x80000000, // 006F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery_all_fabrics +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_announce_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 }) ) ); @@ -6093,133 +6100,21 @@ be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ ** Solidified class: Matter_Device ********************************************************************/ be_local_class(Matter_Device, - 39, + 40, NULL, - be_nested_map(118, + be_nested_map(119, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(vendorid, -1), be_const_var(22) }, - { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) }, - { be_const_key_weak(commissioning_discriminator, 11), be_const_var(13) }, - { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, - { be_const_key_weak(probe_sensor_time, -1), be_const_var(37) }, - { be_const_key_weak(generate_random_passcode, 94), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, - { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(52, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(v_rain, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, - { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, - { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, - { be_const_key_weak(http_occupancy, 4), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, - { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, - { be_const_key_weak(relay, 17), be_const_class(be_class_Matter_Plugin_OnOff) }, - { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, - { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, - { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) }, - { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, - { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) }, - { be_const_key_weak(onoff, 2), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, - { be_const_key_weak(http_waterleak, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(http_light2, 49), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, - { be_const_key_weak(v_flow, 14), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, - { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, - { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, - { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, - { be_const_key_weak(v_waterleak, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, - { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) }, - { be_const_key_weak(light2, -1), be_const_class(be_class_Matter_Plugin_Light2) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, - { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, - { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, - { be_const_key_weak(v_illuminance, 12), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, - { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, - { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, - { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, - { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, - { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, - { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, - { be_const_key_weak(v_light0, 1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, - { be_const_key_weak(http_relay, 20), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, - { be_const_key_weak(root, 28), be_const_class(be_class_Matter_Plugin_Root) }, - { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(v_airquality, 33), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, - { be_const_key_weak(aggregator, 22), be_const_class(be_class_Matter_Plugin_Aggregator) }, - { be_const_key_weak(v_contact, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, - { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, - { be_const_key_weak(http_light3, 44), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, - { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, - { be_const_key_weak(shutter, 21), be_const_class(be_class_Matter_Plugin_Shutter) }, - { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(light3, 15), be_const_class(be_class_Matter_Plugin_Light3) }, - { be_const_key_weak(airquality, 0), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, - { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, - { be_const_key_weak(http_illuminance, 31), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, - })) ) } )) }, - { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, - { be_const_key_weak(tick, -1), be_const_var(10) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Device_invoke_request_closure) }, - { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, - { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Device_every_250ms_closure) }, - { be_const_key_weak(root_passcode, 16), be_const_var(28) }, - { be_const_key_weak(hostname_eth, -1), be_const_var(21) }, - { be_const_key_weak(add_read_sensors_schedule, 117), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, - { be_const_key_weak(udp_server, -1), be_const_var(5) }, + { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) }, - { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, - { be_const_key_weak(MtrUpdate, -1), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, - { be_const_key_weak(root_discriminator, -1), be_const_var(27) }, - { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, - { be_const_key_weak(conf_to_log, 32), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, - { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) }, - { be_const_key_weak(k2l, 70), be_const_static_closure(class_Matter_Device_k2l_closure) }, - { be_const_key_weak(http_remotes, -1), be_const_var(26) }, - { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, - { be_const_key_weak(commissioning_open, 114), be_const_var(11) }, - { be_const_key_weak(root_iterations, -1), be_const_var(33) }, - { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, - { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, - { be_const_key_weak(root_L, 3), be_const_var(36) }, - { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, - { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, - { be_const_key_weak(_compute_pbkdf, 49), be_const_closure(class_Matter_Device__compute_pbkdf_closure) }, - { be_const_key_weak(msg_received, 78), be_const_closure(class_Matter_Device_msg_received_closure) }, - { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, - { be_const_key_weak(ipv4only, -1), be_const_var(29) }, - { be_const_key_weak(start_commissioning_complete, 77), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, - { be_const_key_weak(root_salt, 21), be_const_var(34) }, - { be_const_key_weak(start_commissioning_complete_deferred, 67), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, - { be_const_key_weak(plugins_config, 17), be_const_var(3) }, - { be_const_key_weak(commissioning_admin_fabric, 26), be_const_var(17) }, - { be_const_key_weak(profiler, -1), be_const_var(6) }, - { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, - { be_const_key_weak(MtrInfo, -1), be_const_closure(class_Matter_Device_MtrInfo_closure) }, - { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, - { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, - { be_const_key_weak(started, 34), be_const_var(0) }, - { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, - { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) }, - { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, - { be_const_key_weak(find_plugin_by_endpoint, 96), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, - { be_const_key_weak(register_commands, -1), be_const_closure(class_Matter_Device_register_commands_closure) }, - { be_const_key_weak(commissioning_instance_wifi, 104), be_const_var(18) }, - { be_const_key_weak(bridge_remove_endpoint, -1), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, - { be_const_key_weak(mdns_remove_PASE, 38), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, - { be_const_key_weak(root_w0, 45), be_const_var(35) }, - { be_const_key_weak(plugins_persist, 40), be_const_var(2) }, - { be_const_key_weak(message_handler, -1), be_const_var(7) }, - { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, - { be_const_key_weak(disable_bridge_mode, 2), be_const_var(30) }, - { be_const_key_weak(debug, 8), be_const_var(32) }, - { be_const_key_weak(commissioning_instance_eth, 72), be_const_var(19) }, - { be_const_key_weak(commissioning_w0, -1), be_const_var(15) }, - { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(mdns_pase_eth, -1), be_const_var(25) }, + { be_const_key_weak(start_operational_discovery, 30), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, + { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(productid, -1), be_const_var(24) }, + { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(read_sensors_scheduler, 22), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, + { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, + { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, + { be_const_key_weak(PASSCODE_INVALID, 51), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(12, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), @@ -6235,56 +6130,170 @@ be_local_class(Matter_Device, be_const_int(12345678), be_const_int(87654321), })) ) } )) }, - { be_const_key_weak(bridge_add_endpoint, 54), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, - { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(25) }, - { be_const_key_weak(received_ack, 4), be_const_closure(class_Matter_Device_received_ack_closure) }, - { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(38) }, - { be_const_key_weak(compute_manual_pairing_code, 111), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, - { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, - { be_const_key_weak(hostname_wifi, -1), be_const_var(20) }, - { be_const_key_weak(PBKDF_ITERATIONS, 90), be_const_int(1000) }, - { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, - { be_const_key_weak(get_plugin_remote_info, 112), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, - { be_const_key_weak(sessions, 47), be_const_var(8) }, - { be_const_key_weak(mdns_pase_eth, -1), be_const_var(24) }, - { be_const_key_weak(find_plugin_by_friendly_name, -1), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, - { be_const_key_weak(_trigger_read_sensors, 52), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, - { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, - { be_const_key_weak(get_active_endpoints, 10), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, - { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(_instantiate_plugins_from_config, 83), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, - { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, - { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, - { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, - { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, - { be_const_key_weak(process_attribute_read_solo, 65), be_const_closure(class_Matter_Device_process_attribute_read_solo_closure) }, - { be_const_key_weak(start, 57), be_const_closure(class_Matter_Device_start_closure) }, - { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, - { be_const_key_weak(attribute_updated, 53), be_const_closure(class_Matter_Device_attribute_updated_closure) }, - { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, - { be_const_key_weak(compute_qrcode_content, 35), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, - { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, - { be_const_key_weak(commissioning_salt, -1), be_const_var(14) }, - { be_const_key_weak(PRODUCT_ID, 43), be_const_int(32768) }, - { be_const_key_weak(msg_send, -1), be_const_closure(class_Matter_Device_msg_send_closure) }, - { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) }, - { be_const_key_weak(k2l_num, 37), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, - { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, - { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, - { be_const_key_weak(next_ep, -1), be_const_var(31) }, - { be_const_key_weak(commissioning_iterations, -1), be_const_var(12) }, - { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, - { be_const_key_weak(ui, -1), be_const_var(9) }, - { be_const_key_weak(start_basic_commissioning, 13), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Device_invoke_request_closure) }, + { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, + { be_const_key_weak(UDP_PORT, 74), be_const_int(5540) }, { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, - { be_const_key_weak(productid, -1), be_const_var(23) }, + { be_const_key_weak(debug, -1), be_const_var(33) }, { be_const_key_weak(plugins, -1), be_const_var(1) }, - { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(commissioning_L, -1), be_const_var(16) }, + { be_const_key_weak(process_attribute_expansion, 59), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, + { be_const_key_weak(commissioning_open, -1), be_const_var(12) }, + { be_const_key_weak(plugins_config, -1), be_const_var(3) }, + { be_const_key_weak(vendorid, -1), be_const_var(23) }, + { be_const_key_weak(start_mdns_announce_hostnames, 12), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(register_commands, 61), be_const_closure(class_Matter_Device_register_commands_closure) }, + { be_const_key_weak(k2l, 32), be_const_static_closure(class_Matter_Device_k2l_closure) }, + { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, + { be_const_key_weak(find_plugin_by_friendly_name, -1), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, + { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) }, + { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, + { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(53, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, + { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, + { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, + { be_const_key_weak(v_contact, 36), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, + { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, + { be_const_key_weak(flow, 8), be_const_class(be_class_Matter_Plugin_Sensor_Flow) }, + { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) }, + { be_const_key_weak(shutter, -1), be_const_class(be_class_Matter_Plugin_Shutter) }, + { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, + { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) }, + { be_const_key_weak(http_pressure, 32), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, + { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, + { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, + { be_const_key_weak(v_illuminance, 15), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(contact, 1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, + { be_const_key_weak(http_relay, 12), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, + { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) }, + { be_const_key_weak(http_occupancy, 6), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, + { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) }, + { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, + { be_const_key_weak(root, -1), be_const_class(be_class_Matter_Plugin_Root) }, + { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, + { be_const_key_weak(v_temp, 20), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, + { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, + { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, + { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, + { be_const_key_weak(light2, 27), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, + { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, + { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, + { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, + { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, + { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) }, + { be_const_key_weak(http_illuminance, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) }, + { be_const_key_weak(v_rain, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, + { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, + { be_const_key_weak(http_waterleak, 45), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, + { be_const_key_weak(airquality, 35), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, + { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, + { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, + { be_const_key_weak(http_temperature, 41), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, + { be_const_key_weak(v_humidity, 29), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, + { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, + { be_const_key_weak(aggregator, 11), be_const_class(be_class_Matter_Plugin_Aggregator) }, + { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, + { be_const_key_weak(gensw, -1), be_const_class(be_class_Matter_Plugin_Sensor_GenericSwitch) }, + })) ) } )) }, + { be_const_key_weak(get_plugin_remote_info, 35), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, + { be_const_key_weak(message_handler, -1), be_const_var(7) }, + { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, + { be_const_key_weak(root_salt, 87), be_const_var(35) }, + { be_const_key_weak(start_basic_commissioning, 8), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, + { be_const_key_weak(hostname_wifi, -1), be_const_var(21) }, { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(class_Matter_Device_stop_closure) }, + { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, + { be_const_key_weak(commissioning_discriminator, -1), be_const_var(14) }, + { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, + { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, + { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) }, + { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, + { be_const_key_weak(resolve_attribute_read_solo, -1), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) }, + { be_const_key_weak(http_remotes, -1), be_const_var(27) }, + { be_const_key_weak(mdns_pase_wifi, 71), be_const_var(26) }, + { be_const_key_weak(_instantiate_plugins_from_config, 107), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, + { be_const_key_weak(commissioning_w0, 114), be_const_var(16) }, + { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) }, + { be_const_key_weak(plugins_persist, 63), be_const_var(2) }, + { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, + { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, + { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, + { be_const_key_weak(get_active_endpoints, 40), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(bridge_remove_endpoint, 103), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, + { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, + { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, + { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(adjust_next_ep, 110), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, + { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, + { be_const_key_weak(attribute_updated, 34), be_const_closure(class_Matter_Device_attribute_updated_closure) }, + { be_const_key_weak(next_ep, -1), be_const_var(32) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, + { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(18) }, + { be_const_key_weak(msg_send, -1), be_const_closure(class_Matter_Device_msg_send_closure) }, + { be_const_key_weak(register_http_remote, 41), be_const_closure(class_Matter_Device_register_http_remote_closure) }, + { be_const_key_weak(tick, -1), be_const_var(10) }, + { be_const_key_weak(udp_server, 45), be_const_var(5) }, + { be_const_key_weak(bridge_add_endpoint, 97), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, + { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, + { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, + { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, + { be_const_key_weak(root_iterations, 112), be_const_var(34) }, + { be_const_key_weak(start_commissioning_complete, 62), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, + { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, + { be_const_key_weak(MtrInfo, 98), be_const_closure(class_Matter_Device_MtrInfo_closure) }, + { be_const_key_weak(ipv4only, 96), be_const_var(30) }, + { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(20) }, + { be_const_key_weak(MtrUpdate, 25), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, + { be_const_key_weak(profiler, -1), be_const_var(6) }, + { be_const_key_weak(root_L, -1), be_const_var(37) }, + { be_const_key_weak(start_operational_discovery_deferred, 72), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, + { be_const_key_weak(add_read_sensors_schedule, 92), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, + { be_const_key_weak(hostname_eth, 91), be_const_var(22) }, + { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, + { be_const_key_weak(every_250ms, 77), be_const_closure(class_Matter_Device_every_250ms_closure) }, + { be_const_key_weak(compute_qrcode_content, 81), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, + { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, + { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_Device_msg_received_closure) }, + { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, + { be_const_key_weak(root_discriminator, 75), be_const_var(28) }, + { be_const_key_weak(events, -1), be_const_var(11) }, + { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, + { be_const_key_weak(ui, 69), be_const_var(9) }, + { be_const_key_weak(_mdns_announce_hostname, 68), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, + { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(class_Matter_Device__compute_pbkdf_closure) }, + { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, + { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) }, + { be_const_key_weak(root_w0, -1), be_const_var(36) }, + { be_const_key_weak(received_ack, 55), be_const_closure(class_Matter_Device_received_ack_closure) }, + { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, + { be_const_key_weak(PRODUCT_ID, 49), be_const_int(32768) }, + { be_const_key_weak(autoconf_device_map, 26), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, + { be_const_key_weak(conf_to_log, 44), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, + { be_const_key_weak(sessions, -1), be_const_var(8) }, + { be_const_key_weak(probe_sensor_time, -1), be_const_var(38) }, + { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, + { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(39) }, + { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, + { be_const_key_weak(started, -1), be_const_var(0) }, + { be_const_key_weak(disable_bridge_mode, -1), be_const_var(31) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, + { be_const_key_weak(commissioning_salt, 23), be_const_var(15) }, + { be_const_key_weak(root_passcode, -1), be_const_var(29) }, + { be_const_key_weak(stop, 20), be_const_closure(class_Matter_Device_stop_closure) }, + { be_const_key_weak(commissioning_iterations, -1), be_const_var(13) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, + { be_const_key_weak(start_commissioning_complete_deferred, 4), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, })), be_str_weak(Matter_Device) ); From d15b88f7462e6d3ab9b7ee9305edd8ffa5d83f1e Mon Sep 17 00:00:00 2001 From: Christian Baars Date: Sun, 16 Jun 2024 20:54:59 +0200 Subject: [PATCH 069/252] improve parser (#21648) --- tasmota/include/xsns_62_esp32_mi.h | 14 +- .../tasmota_xsns_sensor/xsns_62_esp32_mi.ino | 162 ++++++++++-------- 2 files changed, 101 insertions(+), 75 deletions(-) diff --git a/tasmota/include/xsns_62_esp32_mi.h b/tasmota/include/xsns_62_esp32_mi.h index 787c32fc2..9995b2ff1 100644 --- a/tasmota/include/xsns_62_esp32_mi.h +++ b/tasmota/include/xsns_62_esp32_mi.h @@ -44,8 +44,7 @@ struct frame_crtl_t{ }; struct mi_payload_t{ - uint8_t type; - uint8_t ten; + uint16_t type; uint8_t size; union { struct{ //0d @@ -61,6 +60,7 @@ struct mi_payload_t{ uint8_t leak; //14 uint32_t NMT; //17 uint8_t door; //19 + uint16_t objID; //0x0002 struct{ //01 uint8_t num; uint8_t value; @@ -274,7 +274,7 @@ struct mi_sensor_t{ uint32_t leak:1; uint32_t payload:1; }; - uint32_t raw; + uint32_t raw = 0; } feature; union { struct { @@ -295,18 +295,18 @@ struct mi_sensor_t{ uint32_t leak:1; uint32_t payload:1; }; - uint32_t raw; + uint32_t raw = 0; } eventType; union{ struct{ uint8_t hasWrongKey:1; uint8_t isUnbounded:1; }; - uint8_t raw; + uint8_t raw = 0; } status; - int RSSI; - uint32_t lastTime; + int RSSI = 0; + uint32_t lastTime = 0; uint32_t lux; uint8_t lux_history[24]; float temp; //Flora, MJ_HT_V1, LYWSD0x, CGx diff --git a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino index e4249095e..66a32ac41 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino @@ -1668,7 +1668,7 @@ if(_beacon->frame.isEncrypted){ } else{ uint32_t _offset = (_beacon->frame.includesCapability)?0:1; - uint32_t _payloadSize = (_beacon->frame.includesCapability)?_beacon->payload.size:_beacon->payload.ten; + size_t _payloadSize = *(uint8_t*)(&_beacon->payload.size - _offset); if(_beacon->frame.includesMAC && _beacon->frame.includesObj) { // AddLog(LOG_LEVEL_DEBUG,PSTR("M32: offset %u, size: %u"),_offset,_payloadSize); memcpy((uint8_t*)&_payload,(uint8_t*)(&_beacon->payload)-_offset, _payloadSize + 3); @@ -1676,14 +1676,17 @@ else{ } } if(decryptRet!=0){ - AddLog(LOG_LEVEL_DEBUG,PSTR("M32: Decryption failed with error: %d"),decryptRet); + AddLog(LOG_LEVEL_DEBUG,PSTR("M32: Decryption failed with error: %d for %u"),decryptRet, _slot); if (decryptRet == -1) MIBLEsensors[_slot].status.hasWrongKey = 1; return; } // AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u with payload type: %02x"), MI32getDeviceName(_slot),_slot,_payload.type); switch(_payload.type){ - case 0x01: + case 0x0002: + AddLog(LOG_LEVEL_DEBUG_MORE,PSTR("M32: obj id to pair: %02x"),_payload.objID); // pretty pointless for Tasmota + break; + case 0x1001: MIBLEsensors[_slot].feature.Btn = 1; if(_payload.Btn.type == 4){ //dimmer knob rotation MIBLEsensors[_slot].eventType.knob = 1; @@ -1716,7 +1719,7 @@ if(decryptRet!=0){ MI32.mode.shallTriggerTele = 1; // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 1: U16: %u Button"), MIBLEsensors[_slot].Btn ); break; - case 0x04: + case 0x1004: MIBLEsensors[_slot].feature.temp = 1; _tempFloat=(float)(_payload.temp)/10.0f; if(_tempFloat<60){ @@ -1729,7 +1732,7 @@ if(decryptRet!=0){ #endif //USE_MI_EXT_GUI // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 4: U16: %u Temp"), _payload.temp ); break; - case 0x06: + case 0x1006: MIBLEsensors[_slot].feature.hum = 1; _tempFloat=(float)(_payload.hum)/10.0f; if(_tempFloat<101){ @@ -1742,7 +1745,7 @@ if(decryptRet!=0){ #endif //USE_MI_EXT_GUI // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 6: U16: %u Hum"), _payload.hum); break; - case 0x07: + case 0x1007: MIBLEsensors[_slot].feature.lux = 1; MIBLEsensors[_slot].lux=_payload.lux & 0x00ffffff; if(MIBLEsensors[_slot].type==MJYD2S){ @@ -1754,21 +1757,21 @@ if(decryptRet!=0){ #endif //USE_MI_EXT_GUI // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 7: U24: %u Lux"), _payload.lux & 0x00ffffff); break; - case 0x08: + case 0x1008: MIBLEsensors[_slot].feature.moist = 1; MIBLEsensors[_slot].moisture=_payload.moist; MIBLEsensors[_slot].eventType.moist = 1; DEBUG_SENSOR_LOG(PSTR("Mode 8: moisture updated")); // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 8: U8: %u Moisture"), _payload.moist); break; - case 0x09: + case 0x1009: MIBLEsensors[_slot].feature.fert = 1; MIBLEsensors[_slot].fertility=_payload.fert; MIBLEsensors[_slot].eventType.fert = 1; DEBUG_SENSOR_LOG(PSTR("Mode 9: fertility updated")); // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 9: U16: %u Fertility"), _payload.fert); break; - case 0x0a: + case 0x100a: case 0x4803: MIBLEsensors[_slot].feature.bat = 1; if(MI32.option.ignoreBogusBattery){ if(MIBLEsensors[_slot].type==LYWSD03MMC || MIBLEsensors[_slot].type==MHOC401){ @@ -1782,7 +1785,7 @@ if(decryptRet!=0){ } // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode a: U8: %u %%"), _payload.bat); break; - case 0x0d: + case 0x100d: _tempFloat=(float)(_payload.HT.temp)/10.0f; if(_tempFloat<60){ MIBLEsensors[_slot].temp = _tempFloat; @@ -1797,8 +1800,8 @@ if(decryptRet!=0){ // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode d: U16: %x Temp U16: %x Hum"), _payload.HT.temp, _payload.HT.hum); break; - case 0x0f: - if (_payload.ten!=0) break; + case 0x000f: + // if (_payload.ten!=0) break; MIBLEsensors[_slot].feature.motion = 1; MIBLEsensors[_slot].feature.NMT = 1; //only driver based MIBLEsensors[_slot].eventType.motion = 1; @@ -1812,20 +1815,20 @@ if(decryptRet!=0){ #endif //USE_MI_EXT_GUI // AddLog(LOG_LEVEL_DEBUG,PSTR("motion: primary"),MIBLEsensors[_slot].lux ); break; - case 0x14: + case 0x1014: MIBLEsensors[_slot].feature.leak = 1; MIBLEsensors[_slot].leak = _payload.leak; MIBLEsensors[_slot].eventType.leak = 1; if(_payload.leak>0) MI32.mode.shallTriggerTele = 1; break; - case 0x17: + case 0x1017: MIBLEsensors[_slot].feature.NMT = 1; MIBLEsensors[_slot].NMT = _payload.NMT; MIBLEsensors[_slot].eventType.NMT = 1; MI32.mode.shallTriggerTele = 1; // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 17: NMT: %u seconds"), _payload.NMT); break; - case 0x19: + case 0x1019: MIBLEsensors[_slot].feature.door = 1; MIBLEsensors[_slot].door = _payload.door; MIBLEsensors[_slot].eventType.door = 1; @@ -1833,7 +1836,27 @@ if(decryptRet!=0){ MI32.mode.shallTriggerTele = 1; // AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 19: %u"), _payload.door); break; - + case 0x4e0c: + MIBLEsensors[_slot].feature.Btn = 1; + MIBLEsensors[_slot].Btn = _payload.size; // a guess, makes sense for the XMWXKG01LM + MIBLEsensors[_slot].BtnType = 0; + MIBLEsensors[_slot].eventType.Btn = 1; + MI32.mode.shallTriggerTele = 1; + break; + case 0x4e0d: + MIBLEsensors[_slot].feature.Btn = 1; + MIBLEsensors[_slot].Btn = _payload.size; + MIBLEsensors[_slot].BtnType = 1; + MIBLEsensors[_slot].eventType.Btn = 1; + MI32.mode.shallTriggerTele = 1; + break; + case 0x4e0e: + MIBLEsensors[_slot].feature.Btn = 1; + MIBLEsensors[_slot].Btn = _payload.size; + MIBLEsensors[_slot].BtnType = 2; + MIBLEsensors[_slot].eventType.Btn = 1; + MI32.mode.shallTriggerTele = 1; + break; default: if (MIBLEsensors[_slot].type==NLIGHT){ MIBLEsensors[_slot].eventType.motion = 1; //motion @@ -1844,6 +1867,7 @@ if(decryptRet!=0){ else{ //unknown payload AddLogBuffer(LOG_LEVEL_DEBUG,(uint8_t*)_buf,_bufSize); + AddLogBuffer(LOG_LEVEL_DEBUG,(uint8_t*)&_payload,_payload.size + 2); } break; } @@ -1856,45 +1880,47 @@ void MI32parseBTHomePacket(char * _buf, uint32_t length, uint8_t addr[6], int RS const uint32_t _slot = MIBLEgetSensorSlot(addr, 0xb770, 0); // fake ID, constant fake counter if(_slot==0xff) return; + auto &_sensor = MIBLEsensors[_slot]; if (optionalName[0] != '\0'){ - AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), optionalName,_slot); + if(_sensor.name == nullptr){ + _sensor.name = new char[strlen(optionalName) + 1]; + strcpy(_sensor.name, optionalName); + } } - const auto _sensor = &MIBLEsensors[_slot]; - _sensor->RSSI = RSSI; - // _sensor->lastTime = Rtc.local_time; + _sensor.RSSI = RSSI; BTHome_info_t info; info.byte_value = _buf[0]; - _sensor->feature.needsKey = info.encrypted; + _sensor.feature.needsKey = info.encrypted; uint32_t idx = 1; while(idx < length - 1){ switch(_buf[idx]){ case 0x00: - if(_buf[idx+1] == _sensor->lastCnt){ + if(_buf[idx+1] == _sensor.lastCnt){ return; // known packet } - _sensor->lastCnt = _buf[idx+1]; + _sensor.lastCnt = _buf[idx+1]; idx += 2; break; case 0x01: - _sensor->bat = _buf[idx+1]; - _sensor->eventType.bat = 1; - _sensor->feature.bat = 1; + _sensor.bat = _buf[idx+1]; + _sensor.eventType.bat = 1; + _sensor.feature.bat = 1; idx += 2; break; case 0x02: - _sensor->temp = (int16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f; - _sensor->eventType.temp = 1; - _sensor->feature.temp = 1; - MI32addHistory(_sensor->temp_history, _sensor->temp, 0); + _sensor.temp = (int16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f; + _sensor.eventType.temp = 1; + _sensor.feature.temp = 1; + MI32addHistory(_sensor.temp_history, _sensor.temp, 0); idx += 3; break; case 0x03: - _sensor->hum = (uint16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f; - _sensor->eventType.hum = 1; - _sensor->feature.hum = 1; - MI32addHistory(_sensor->hum_history, _sensor->hum, 1); + _sensor.hum = (uint16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f; + _sensor.eventType.hum = 1; + _sensor.feature.hum = 1; + MI32addHistory(_sensor.hum_history, _sensor.hum, 1); idx += 3; break; case 0x0b: @@ -1919,7 +1945,7 @@ void MI32parseBTHomePacket(char * _buf, uint32_t length, uint8_t addr[6], int RS #ifdef USE_MI_EXT_GUI bitSet(MI32.widgetSlot,_slot); #endif //USE_MI_EXT_GUI - _sensor->shallSendMQTT = 1; + _sensor.shallSendMQTT = 1; if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1; } @@ -2402,7 +2428,7 @@ void MI32sendWidget(uint32_t slot){ if (_sensor.bat == 0) _bat[9] = 0; WSContentSend_P(HTTP_MI32_WIDGET,slot+1,_opacity,_MAC,_sensor.RSSI,_bat,_key,MI32getDeviceName(slot)); - if(_sensor.feature.temp && _sensor.feature.hum){ + if(_sensor.feature.temp == 1 && _sensor.feature.hum == 1){ if(!isnan(_sensor.temp)){ char _polyline[176]; MI32createPolyline(_polyline,_sensor.temp_history); @@ -2421,7 +2447,7 @@ void MI32sendWidget(uint32_t slot){ WSContentSend_P(PSTR("" D_JSON_DEWPOINT ": %.1f °C"),CalcTempHumToDew(_sensor.temp,_sensor.hum)); } } - else if(_sensor.feature.temp){ + else if(_sensor.feature.temp == 1){ if(!isnan(_sensor.temp)){ char _polyline[176]; MI32createPolyline(_polyline,_sensor.temp_history); @@ -2430,7 +2456,7 @@ void MI32sendWidget(uint32_t slot){ WSContentSend_P(PSTR("

")); } } - if(_sensor.feature.lux){ + if(_sensor.feature.lux == 1){ if(_sensor.lux!=0x00ffffff){ char _polyline[176]; MI32createPolyline(_polyline,_sensor.lux_history); @@ -2439,7 +2465,7 @@ void MI32sendWidget(uint32_t slot){ WSContentSend_P(PSTR("

")); } } - if(_sensor.feature.knob){ + if(_sensor.feature.knob == 1){ if(_sensor.pressed == 0) { WSContentSend_P(PSTR("

Dimmer Steps: %d

"),_sensor.dimmer); } @@ -2448,16 +2474,16 @@ void MI32sendWidget(uint32_t slot){ } WSContentSend_P(PSTR("

Hold: %u

"),_sensor.longpress); } - if(_sensor.feature.Btn){ + if(_sensor.feature.Btn == 1){ char _message[16]; GetTextIndexed(_message, sizeof(_message), _sensor.BtnType, kMI32_ButtonMsg); if(_sensor.Btn<12) WSContentSend_P(PSTR("

Button%u: %s

"),_sensor.Btn,_message); } - if(_sensor.feature.motion){ + if(_sensor.feature.motion == 1){ WSContentSend_P(PSTR("

Events: %u

"),_sensor.events); WSContentSend_P(PSTR("

No motion for > %u seconds

"),_sensor.NMT); } - if(_sensor.feature.door){ + if(_sensor.feature.door == 1){ if(_sensor.door!=255){ if(_sensor.door==1){ WSContentSend_P(PSTR("

Contact open

")); @@ -2468,7 +2494,7 @@ void MI32sendWidget(uint32_t slot){ WSContentSend_P(PSTR("

Events: %u

"),_sensor.events); } } - if(_sensor.feature.leak){ + if(_sensor.feature.leak == 1){ if(_sensor.leak==1){ WSContentSend_P(PSTR("

Leak !!!

")); } @@ -2576,8 +2602,8 @@ void MI32Show(bool json) if(MI32.mode.triggeredTele == 1){ bool tempHumSended = false; - if(MIBLEsensors[i].feature.tempHum){ - if(MIBLEsensors[i].eventType.tempHum || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ + if(MIBLEsensors[i].feature.tempHum == 1){ + if(MIBLEsensors[i].eventType.tempHum == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ if (!isnan(MIBLEsensors[i].hum) && !isnan(MIBLEsensors[i].temp)) { MI32ShowContinuation(&commaflg); ResponseAppendTHD(MIBLEsensors[i].temp, MIBLEsensors[i].hum); @@ -2585,8 +2611,8 @@ void MI32Show(bool json) } } } - if(MIBLEsensors[i].feature.temp && !tempHumSended){ - if(MIBLEsensors[i].eventType.temp || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) { + if(MIBLEsensors[i].feature.temp == 1 && !tempHumSended){ + if(MIBLEsensors[i].eventType.temp == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) { if (!isnan(MIBLEsensors[i].temp)) { MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"" D_JSON_TEMPERATURE "\":%*_f"), @@ -2594,8 +2620,8 @@ void MI32Show(bool json) } } } - if(MIBLEsensors[i].feature.hum && !tempHumSended){ - if(MIBLEsensors[i].eventType.hum || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) { + if(MIBLEsensors[i].feature.hum == 1 && !tempHumSended){ + if(MIBLEsensors[i].eventType.hum == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) { if (!isnan(MIBLEsensors[i].hum)) { char hum[FLOATSZ]; dtostrfd(MIBLEsensors[i].hum, Settings->flag2.humidity_resolution, hum); @@ -2604,16 +2630,16 @@ void MI32Show(bool json) } } } - if (MIBLEsensors[i].feature.lux){ - if(MIBLEsensors[i].eventType.lux || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ + if (MIBLEsensors[i].feature.lux == 1){ + if(MIBLEsensors[i].eventType.lux == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ if ((MIBLEsensors[i].lux != 0x0ffffff)) { // this is the error code -> no lux MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"" D_JSON_ILLUMINANCE "\":%u"), MIBLEsensors[i].lux); } } } - if (MIBLEsensors[i].feature.moist){ - if(MIBLEsensors[i].eventType.moist || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ + if (MIBLEsensors[i].feature.moist == 1){ + if(MIBLEsensors[i].eventType.moist == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){ if ((MIBLEsensors[i].moisture != 0xff)) { MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"" D_JSON_MOISTURE "\":%u"), MIBLEsensors[i].moisture); @@ -2628,14 +2654,14 @@ void MI32Show(bool json) } } } - if (MIBLEsensors[i].feature.Btn){ - if(MIBLEsensors[i].eventType.Btn){ + if (MIBLEsensors[i].feature.Btn == 1){ + if(MIBLEsensors[i].eventType.Btn == 1){ MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"Button%u\":%u"),MIBLEsensors[i].Btn,MIBLEsensors[i].BtnType + 1); //internal type is Xiaomi/Homekit 0,1,2 -> Tasmota 1,2,3 } } - if (MIBLEsensors[i].feature.knob){ - if(MIBLEsensors[i].eventType.knob){ + if (MIBLEsensors[i].feature.knob == 1){ + if(MIBLEsensors[i].eventType.knob == 1){ MI32ShowContinuation(&commaflg); char _pressed[3] = {'_','P',0}; if (MIBLEsensors[i].pressed == 0){ @@ -2643,15 +2669,15 @@ void MI32Show(bool json) } ResponseAppend_P(PSTR("\"Dimmer%s\":%d"),_pressed, MIBLEsensors[i].dimmer); } - if(MIBLEsensors[i].eventType.longpress){ + if(MIBLEsensors[i].eventType.longpress == 1){ MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"Hold\":%d"), MIBLEsensors[i].longpress); } } } // minimal summary - if (MIBLEsensors[i].feature.motion){ - if(MIBLEsensors[i].eventType.motion || MI32.mode.triggeredTele == 0){ - if(MI32.mode.triggeredTele) { + if (MIBLEsensors[i].feature.motion == 1){ + if(MIBLEsensors[i].eventType.motion == 1 || MI32.mode.triggeredTele == 0){ + if(MI32.mode.triggeredTele == 1) { MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"Motion\":1")); // only real-time } @@ -2664,9 +2690,9 @@ void MI32Show(bool json) } } - if (MIBLEsensors[i].feature.door){ - if(MIBLEsensors[i].eventType.door || MI32.mode.triggeredTele == 0){ - if(MI32.mode.triggeredTele) { + if (MIBLEsensors[i].feature.door == 1){ + if(MIBLEsensors[i].eventType.door == 1 || MI32.mode.triggeredTele == 0){ + if(MI32.mode.triggeredTele == 1) { MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"Door\":%u"),MIBLEsensors[i].door); } @@ -2682,8 +2708,8 @@ void MI32Show(bool json) } } - if (MIBLEsensors[i].feature.NMT || MI32.mode.triggeredTele == 0){ - if(MIBLEsensors[i].eventType.NMT){ + if (MIBLEsensors[i].feature.NMT == 1|| MI32.mode.triggeredTele == 0){ + if(MIBLEsensors[i].eventType.NMT == 1){ MI32ShowContinuation(&commaflg); ResponseAppend_P(PSTR("\"NMT\":%u"), MIBLEsensors[i].NMT); } @@ -2758,11 +2784,11 @@ void MI32Show(bool json) WSContentSend_THD(_sensorName, MIBLEsensors[i].temp, MIBLEsensors[i].hum); } } - if (MIBLEsensors[i].feature.needsKey) { + if (MIBLEsensors[i].feature.needsKey == 1) { if(MIBLEsensors[i].key == nullptr){ WSContentSend_PD(PSTR("{s}No known Key!!{m} can not decrypt messages{e}")); } - else if(MIBLEsensors[i].status.hasWrongKey){ + else if(MIBLEsensors[i].status.hasWrongKey == 1){ WSContentSend_PD(PSTR("{s}Wrong Key!!{m} can not decrypt messages{e}")); } } From 2115e09839b218779a152577e3a7aa28113bdb7a Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 16 Jun 2024 22:18:50 +0200 Subject: [PATCH 070/252] Matter show event name in logs (#21649) * Matter show event name in logs * Optimize logging * Human readable version --- .../berry_matter/generate/be_matter_events.h | 58 +++++++ .../berry_matter/src/be_matter_module.c | 12 ++ .../src/embedded/Matter_Plugin_0.be | 18 ++- .../src/solidify/solidified_Matter_Plugin_0.h | 153 ++++++++++++------ 4 files changed, 192 insertions(+), 49 deletions(-) create mode 100644 lib/libesp32/berry_matter/generate/be_matter_events.h diff --git a/lib/libesp32/berry_matter/generate/be_matter_events.h b/lib/libesp32/berry_matter/generate/be_matter_events.h new file mode 100644 index 000000000..296f1236c --- /dev/null +++ b/lib/libesp32/berry_matter/generate/be_matter_events.h @@ -0,0 +1,58 @@ +/*********************************************************************************\ +* Compact form for events +* +\*********************************************************************************/ +#include +#include + +typedef struct { + uint16_t cluster; + uint8_t event; + const char* name; +} matter_event_t; + +// Must be sorted, cluster first, then attribute + +const matter_event_t matter_Events[] = { + // 0x001F Access Control Cluster + { 0x001F, 0x00, "AccessControlEntryChanged" }, + { 0x001F, 0x00, "AccessControlExtensionChanged" }, + // 0x0025 Actions Cluster + { 0x0025, 0x00, "StateChanged" }, + { 0x0025, 0x01, "ActionFailed" }, + // 0x0028 Basic Information Cluster + { 0x0028, 0x00, "StartUp" }, + { 0x0028, 0x01, "ShutDown" }, + { 0x0028, 0x02, "Leave" }, + { 0x0028, 0x03, "ReachableChanged" }, + // 0x002F Power Source Cluster + { 0x002F, 0x00, "WiredFaultChange" }, + { 0x002F, 0x01, "BatFaultChange" }, + { 0x002F, 0x02, "BatChargeFaultChange" }, + // 0x0033 General Diagnostics Cluster + { 0x0033, 0x00, "HardwareFaultChange" }, + { 0x0033, 0x01, "RadioFaultChange" }, + { 0x0033, 0x02, "NetworkFaultChange" }, + { 0x0033, 0x03, "BootReason" }, + // 0x0034 Software Diagnostics Cluster + { 0x0034, 0x00, "SoftwareFault" }, + // 0x0035 Thread Network Diagnostics Cluster + // { 0x0035, 0x00, "ConnectionStatus" }, + // { 0x0035, 0x01, "NetworkFaultChange" }, + // 0x0036 Wi-Fi Network Diagnostics Cluster + { 0x0036, 0x00, "Disconnection" }, + { 0x0036, 0x01, "AssociationFailure" }, + { 0x0036, 0x02, "ConnectionStatus" }, + // 0x0038 Time Synchronization Cluster + { 0x0038, 0x00, "DSTTableEmpty" }, + { 0x0038, 0x01, "DSTStatus" }, + { 0x0038, 0x02, "TimeZoneStatus" }, + { 0x0038, 0x03, "TimeFailure" }, + { 0x0038, 0x04, "MissingTrustedTimeSource" }, + // 0x0039 Bridged Device Basic Information Cluster + { 0x0039, 0x00, "StartUp" }, + { 0x0039, 0x01, "ShutDown" }, + { 0x0039, 0x02, "Leave" }, + { 0x0039, 0x03, "ReachableChanged" }, + { 0xFFFF, 0xFF, NULL } +}; diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 25b6cd0ff..673280191 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -85,6 +85,7 @@ extern const bclass be_class_Matter_QRCode; #include "solidify/solidified_Matter_Module.h" #include "../generate/be_matter_clusters.h" +#include "../generate/be_matter_events.h" #include "../generate/be_matter_opcodes.h" #include "../generate/be_matter_vendors.h" @@ -188,6 +189,16 @@ const char* matter_get_command_name(uint16_t cluster, uint16_t command) { } BE_FUNC_CTYPE_DECLARE(matter_get_command_name, "s", "ii") +const char* matter_get_event_name(uint16_t cluster, uint8_t event) { + for (const matter_event_t * ev = matter_Events; ev->cluster != 0xFFFF; ev++) { + if (ev->cluster == cluster && ev->event == event) { + return ev->name; + } + } + return NULL; +} +BE_FUNC_CTYPE_DECLARE(matter_get_event_name, "s", "ii") + // Convert an IP address from string to raw bytes extern const void* matter_get_ip_bytes(const char* ip_str, size_t* ret_len); BE_FUNC_CTYPE_DECLARE(matter_get_ip_bytes, "&", "s") @@ -330,6 +341,7 @@ module matter (scope: global, strings: weak) { is_attribute_writable, ctype_func(matter_is_attribute_writable) is_attribute_reportable, ctype_func(matter_is_attribute_reportable) get_command_name, ctype_func(matter_get_command_name) + get_event_name, ctype_func(matter_get_event_name) get_opcode_name, ctype_func(matter_get_opcode_name) TLV, class(be_class_Matter_TLV) sort, closure(module_matter_sort_closure) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 9d54b769c..6c2f19160 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -195,9 +195,21 @@ class Matter_Plugin event_ib.epoch_timestamp = tasmota.rtc('utc') if (event_ib.epoch_timestamp < 1700000000) event_ib.epoch_timestamp = nil end # no valid time event_ib.data = data - var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG " - log(f"MTR: +Add_Event ({priority_str}) [{event_path.endpoint:02X}]{event_path.cluster:04X}/{event_path.event:04X} ({event_ib.event_number:5i}) - {event_ib.data}", 2) - log(f"MTR: Publishing event {event_ib}", 4) + if tasmota.loglevel(3) + var data_str = str(event_ib.data) + if (cluster == 0x0028) && (event == 0x00) + # put the software version in a readable format + var val = event_ib.data.val + data_str = format("%i.%i.%i.%i", (val >> 24) & 0xFF, (val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) + end + var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG " + var event_name = matter.get_event_name(cluster, event) + event_name = (event_name != nil) ? "(" + event_name + ") " : "" + log(f"MTR: +Add_Event ({priority_str}{event_ib.event_number:8s}) [{event_path.endpoint:02X}]{event_path.cluster:04X}/{event_path.event:02X} {event_name}- {data_str}", 2) + end + if tasmota.loglevel(4) + log(f"MTR: Publishing event {event_ib}", 4) + end self.device.events.queue_event(event_ib) end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 8c3e21abe..966d14ab0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -286,7 +286,7 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_publish_event, /* name */ be_nested_proto( - 17, /* nstack */ + 20, /* nstack */ 5, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -294,7 +294,7 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ + ( &(const bvalue[36]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(EventDataIB), /* K2 */ be_nested_str_weak(EventPathIB), @@ -313,19 +313,28 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ /* K15 */ be_nested_str_weak(utc), /* K16 */ be_const_int(1700000000), /* K17 */ be_nested_str_weak(data), - /* K18 */ be_const_int(2), - /* K19 */ be_nested_str_weak(CRIT_X20_X20), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str_weak(INFO_X20_X20), - /* K22 */ be_nested_str_weak(DEBUG_X20), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2504X_X20_X28_X255i_X29_X20_X2D_X20_X25s), - /* K25 */ be_nested_str_weak(MTR_X3A_X20Publishing_X20event_X20_X25s), - /* K26 */ be_nested_str_weak(queue_event), + /* K18 */ be_nested_str_weak(loglevel), + /* K19 */ be_const_int(3), + /* K20 */ be_const_int(0), + /* K21 */ be_nested_str_weak(val), + /* K22 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), + /* K23 */ be_const_int(2), + /* K24 */ be_nested_str_weak(CRIT_X20_X20), + /* K25 */ be_const_int(1), + /* K26 */ be_nested_str_weak(INFO_X20_X20), + /* K27 */ be_nested_str_weak(DEBUG_X20), + /* K28 */ be_nested_str_weak(get_event_name), + /* K29 */ be_nested_str_weak(_X28), + /* K30 */ be_nested_str_weak(_X29_X20), + /* K31 */ be_nested_str_weak(), + /* K32 */ be_nested_str_weak(log), + /* K33 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), + /* K34 */ be_nested_str_weak(MTR_X3A_X20Publishing_X20event_X20_X25s), + /* K35 */ be_nested_str_weak(queue_event), }), be_str_weak(publish_event), &be_const_str_solidified, - ( &(const binstruction[62]) { /* code */ + ( &(const binstruction[114]) { /* code */ 0xB8160000, // 0000 GETNGBL R5 K0 0x8C140B01, // 0001 GETMET R5 R5 K1 0x7C140200, // 0002 CALL R5 1 @@ -354,40 +363,92 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ 0x4C1C0000, // 0019 LDNIL R7 0x90161807, // 001A SETMBR R5 K12 R7 0x90162204, // 001B SETMBR R5 K17 R4 - 0x1C1C0712, // 001C EQ R7 R3 K18 - 0x781E0001, // 001D JMPF R7 #0020 - 0x581C0013, // 001E LDCONST R7 K19 - 0x70020004, // 001F JMP #0025 - 0x1C1C0714, // 0020 EQ R7 R3 K20 - 0x781E0001, // 0021 JMPF R7 #0024 - 0x581C0015, // 0022 LDCONST R7 K21 - 0x70020000, // 0023 JMP #0025 - 0x581C0016, // 0024 LDCONST R7 K22 - 0xB8222E00, // 0025 GETNGBL R8 K23 - 0x60240018, // 0026 GETGBL R9 G24 - 0x58280018, // 0027 LDCONST R10 K24 - 0x5C2C0E00, // 0028 MOVE R11 R7 - 0x88300D03, // 0029 GETMBR R12 R6 K3 - 0x88340D04, // 002A GETMBR R13 R6 K4 - 0x88380D05, // 002B GETMBR R14 R6 K5 - 0x883C0B08, // 002C GETMBR R15 R5 K8 - 0x88400B11, // 002D GETMBR R16 R5 K17 - 0x7C240E00, // 002E CALL R9 7 - 0x58280012, // 002F LDCONST R10 K18 - 0x7C200400, // 0030 CALL R8 2 - 0xB8222E00, // 0031 GETNGBL R8 K23 - 0x60240018, // 0032 GETGBL R9 G24 - 0x58280019, // 0033 LDCONST R10 K25 - 0x5C2C0A00, // 0034 MOVE R11 R5 - 0x7C240400, // 0035 CALL R9 2 - 0x542A0003, // 0036 LDINT R10 4 - 0x7C200400, // 0037 CALL R8 2 - 0x88200109, // 0038 GETMBR R8 R0 K9 - 0x8820110A, // 0039 GETMBR R8 R8 K10 - 0x8C20111A, // 003A GETMET R8 R8 K26 - 0x5C280A00, // 003B MOVE R10 R5 - 0x7C200400, // 003C CALL R8 2 - 0x80000000, // 003D RET 0 + 0xB81E1A00, // 001C GETNGBL R7 K13 + 0x8C1C0F12, // 001D GETMET R7 R7 K18 + 0x58240013, // 001E LDCONST R9 K19 + 0x7C1C0400, // 001F CALL R7 2 + 0x781E003E, // 0020 JMPF R7 #0060 + 0x601C0008, // 0021 GETGBL R7 G8 + 0x88200B11, // 0022 GETMBR R8 R5 K17 + 0x7C1C0200, // 0023 CALL R7 1 + 0x54220027, // 0024 LDINT R8 40 + 0x1C200208, // 0025 EQ R8 R1 R8 + 0x78220015, // 0026 JMPF R8 #003D + 0x1C200514, // 0027 EQ R8 R2 K20 + 0x78220013, // 0028 JMPF R8 #003D + 0x88200B11, // 0029 GETMBR R8 R5 K17 + 0x88201115, // 002A GETMBR R8 R8 K21 + 0x60240018, // 002B GETGBL R9 G24 + 0x58280016, // 002C LDCONST R10 K22 + 0x542E0017, // 002D LDINT R11 24 + 0x3C2C100B, // 002E SHR R11 R8 R11 + 0x543200FE, // 002F LDINT R12 255 + 0x2C2C160C, // 0030 AND R11 R11 R12 + 0x5432000F, // 0031 LDINT R12 16 + 0x3C30100C, // 0032 SHR R12 R8 R12 + 0x543600FE, // 0033 LDINT R13 255 + 0x2C30180D, // 0034 AND R12 R12 R13 + 0x54360007, // 0035 LDINT R13 8 + 0x3C34100D, // 0036 SHR R13 R8 R13 + 0x543A00FE, // 0037 LDINT R14 255 + 0x2C341A0E, // 0038 AND R13 R13 R14 + 0x543A00FE, // 0039 LDINT R14 255 + 0x2C38100E, // 003A AND R14 R8 R14 + 0x7C240A00, // 003B CALL R9 5 + 0x5C1C1200, // 003C MOVE R7 R9 + 0x1C200717, // 003D EQ R8 R3 K23 + 0x78220001, // 003E JMPF R8 #0041 + 0x58200018, // 003F LDCONST R8 K24 + 0x70020004, // 0040 JMP #0046 + 0x1C200719, // 0041 EQ R8 R3 K25 + 0x78220001, // 0042 JMPF R8 #0045 + 0x5820001A, // 0043 LDCONST R8 K26 + 0x70020000, // 0044 JMP #0046 + 0x5820001B, // 0045 LDCONST R8 K27 + 0xB8260000, // 0046 GETNGBL R9 K0 + 0x8C24131C, // 0047 GETMET R9 R9 K28 + 0x5C2C0200, // 0048 MOVE R11 R1 + 0x5C300400, // 0049 MOVE R12 R2 + 0x7C240600, // 004A CALL R9 3 + 0x4C280000, // 004B LDNIL R10 + 0x2028120A, // 004C NE R10 R9 R10 + 0x782A0002, // 004D JMPF R10 #0051 + 0x002A3A09, // 004E ADD R10 K29 R9 + 0x0028151E, // 004F ADD R10 R10 K30 + 0x70020000, // 0050 JMP #0052 + 0x5828001F, // 0051 LDCONST R10 K31 + 0x5C241400, // 0052 MOVE R9 R10 + 0xB82A4000, // 0053 GETNGBL R10 K32 + 0x602C0018, // 0054 GETGBL R11 G24 + 0x58300021, // 0055 LDCONST R12 K33 + 0x5C341000, // 0056 MOVE R13 R8 + 0x88380B08, // 0057 GETMBR R14 R5 K8 + 0x883C0D03, // 0058 GETMBR R15 R6 K3 + 0x88400D04, // 0059 GETMBR R16 R6 K4 + 0x88440D05, // 005A GETMBR R17 R6 K5 + 0x5C481200, // 005B MOVE R18 R9 + 0x5C4C0E00, // 005C MOVE R19 R7 + 0x7C2C1000, // 005D CALL R11 8 + 0x58300017, // 005E LDCONST R12 K23 + 0x7C280400, // 005F CALL R10 2 + 0xB81E1A00, // 0060 GETNGBL R7 K13 + 0x8C1C0F12, // 0061 GETMET R7 R7 K18 + 0x54260003, // 0062 LDINT R9 4 + 0x7C1C0400, // 0063 CALL R7 2 + 0x781E0006, // 0064 JMPF R7 #006C + 0xB81E4000, // 0065 GETNGBL R7 K32 + 0x60200018, // 0066 GETGBL R8 G24 + 0x58240022, // 0067 LDCONST R9 K34 + 0x5C280A00, // 0068 MOVE R10 R5 + 0x7C200400, // 0069 CALL R8 2 + 0x54260003, // 006A LDINT R9 4 + 0x7C1C0400, // 006B CALL R7 2 + 0x881C0109, // 006C GETMBR R7 R0 K9 + 0x881C0F0A, // 006D GETMBR R7 R7 K10 + 0x8C1C0F23, // 006E GETMET R7 R7 K35 + 0x5C240A00, // 006F MOVE R9 R5 + 0x7C1C0400, // 0070 CALL R7 2 + 0x80000000, // 0071 RET 0 }) ) ); From fe280fe6aa88ee2571beacbd5f78b75328838838 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 20 Jun 2024 16:22:49 +0200 Subject: [PATCH 071/252] remove compile flag for risc-v MCUs which is only valid for xtensa MCUs (#21665) --- pio-tools/add_c_flags.py | 9 +++++++++ pio-tools/strip-floats.py | 19 ++++++++++--------- platformio_tasmota_cenv_sample.ini | 6 ------ platformio_tasmota_env32.ini | 16 ---------------- 4 files changed, 19 insertions(+), 31 deletions(-) diff --git a/pio-tools/add_c_flags.py b/pio-tools/add_c_flags.py index 1ce5d5936..7e51a4fe1 100644 --- a/pio-tools/add_c_flags.py +++ b/pio-tools/add_c_flags.py @@ -5,3 +5,12 @@ env.Append(CXXFLAGS=["-Wno-volatile"]) # General options that are passed to the C compiler (C only; not C++). env.Append(CFLAGS=["-Wno-discarded-qualifiers", "-Wno-implicit-function-declaration", "-Wno-incompatible-pointer-types"]) + + +# Remove build flags which are not valid for risc-v +build_flags = env['BUILD_FLAGS'] +chip = env.get("BOARD_MCU").lower() + +if "c" in chip: + build_flags.pop(build_flags.index("-mno-target-align")) + build_flags.pop(build_flags.index("-mtarget-align")) diff --git a/pio-tools/strip-floats.py b/pio-tools/strip-floats.py index dfb8916dc..4b49321fb 100644 --- a/pio-tools/strip-floats.py +++ b/pio-tools/strip-floats.py @@ -1,21 +1,22 @@ Import('env') -build_flags = " ".join(env.GetProjectOption("build_flags")) +link_flags = " ".join(env['LINKFLAGS']) +build_flags = " ".join(env['BUILD_FLAGS']) # # Dump build environment (for debug) -#print env.Dump() +#print(env.Dump()) # -flags = " ".join(env['LINKFLAGS']) -flags = flags.replace("-u _printf_float", "") -flags = flags.replace("-u _scanf_float", "") +link_flags = link_flags.replace("-u _printf_float", "") +link_flags = link_flags.replace("-u _scanf_float", "") if "FIRMWARE_SAFEBOOT" in build_flags: # Crash Recorder is not included in safeboot firmware -> remove Linker wrap - flags = flags.replace("-Wl,--wrap=panicHandler", "") - flags = flags.replace("-Wl,--wrap=xt_unhandled_exception", "") -newflags = flags.split() + link_flags = link_flags.replace("-Wl,--wrap=panicHandler", "") + link_flags = link_flags.replace("-Wl,--wrap=xt_unhandled_exception", "") + +new_link_flags = link_flags.split() env.Replace( - LINKFLAGS=newflags + LINKFLAGS=new_link_flags ) \ No newline at end of file diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 1fd7c5e17..3643e3d7c 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -81,8 +81,6 @@ build_flags = ${env:tasmota32_base.build_flags} [env:tasmota32c3-bluetooth] extends = env:tasmota32_base board = esp32c3 -build_unflags = ${env:tasmota32_base.build_unflags} - -mtarget-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_BLUETOOTH ; -DUSE_EQ3_ESP32 @@ -111,8 +109,6 @@ lib_ignore = Micro-RTSP [env:tasmota32c3-mi32] extends = env:tasmota32_base board = esp32c3 -build_unflags = ${env:tasmota32_base.build_unflags} - -mtarget-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_BLUETOOTH -DUSE_MI_EXT_GUI @@ -133,8 +129,6 @@ lib_ignore = Micro-RTSP [env:tasmota32c6-mi32] extends = env:tasmota32_base board = esp32c6 -build_unflags = ${env:tasmota32_base.build_unflags} - -mtarget-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_BLUETOOTH -DUSE_MI_EXT_GUI diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index ce888463c..ef8d46a58 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -71,8 +71,6 @@ lib_ignore = ${safeboot_flags.lib_ignore} extends = env:tasmota32_base board = esp32c2 board_build.app_partition_name = safeboot -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_SAFEBOOT -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c2-safeboot.bin"' @@ -83,8 +81,6 @@ lib_ignore = ${safeboot_flags.lib_ignore} extends = env:tasmota32_base board = esp32c3 board_build.app_partition_name = safeboot -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_SAFEBOOT -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3-safeboot.bin"' @@ -95,8 +91,6 @@ lib_ignore = ${safeboot_flags.lib_ignore} extends = env:tasmota32_base board = esp32c3ser board_build.app_partition_name = safeboot -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_SAFEBOOT -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3ser-safeboot.bin"' @@ -117,8 +111,6 @@ lib_ignore = ${safeboot_flags.lib_ignore} extends = env:tasmota32_base board = esp32c6 board_build.app_partition_name = safeboot -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_SAFEBOOT -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c6-safeboot.bin"' @@ -129,8 +121,6 @@ lib_ignore = ${safeboot_flags.lib_ignore} extends = env:tasmota32_base board = esp32c6ser board_build.app_partition_name = safeboot -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_SAFEBOOT -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c6ser-safeboot.bin"' @@ -187,8 +177,6 @@ lib_ignore = ${env:tasmota32_base.lib_ignore} [env:tasmota32c2] extends = env:tasmota32_base board = esp32c2 -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c2.bin"' @@ -198,8 +186,6 @@ lib_ignore = ${env:tasmota32_base.lib_ignore} [env:tasmota32c3] extends = env:tasmota32_base board = esp32c3 -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3.bin"' @@ -209,8 +195,6 @@ lib_ignore = ${env:tasmota32_base.lib_ignore} [env:tasmota32c6] extends = env:tasmota32_base board = esp32c6 -build_unflags = ${env:tasmota32_base.build_unflags} - -mno-target-align build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 -DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c6.bin"' From 3537d184838cd9fcdb7761c862c60e2467ed8c6d Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 20 Jun 2024 23:23:53 +0200 Subject: [PATCH 072/252] Update esp8266 platform to 2024.06.10 (#21668) * Update esp8266 platform (2024.06.00) * Update strip-floats.py * Rename strip-floats.py to strip-flags.py * rename to `strip_flags.py` * esp8266 v2.7.7 --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- pio-tools/{strip-floats.py => strip-flags.py} | 9 +-------- platformio.ini | 16 +++++----------- 3 files changed, 7 insertions(+), 20 deletions(-) rename pio-tools/{strip-floats.py => strip-flags.py} (71%) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 167baad82..fb378f095 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,7 +6,7 @@ - [ ] The pull request is done against the latest development branch - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR and the code change compiles without warnings - - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.6 + - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.7 - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.1 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). diff --git a/pio-tools/strip-floats.py b/pio-tools/strip-flags.py similarity index 71% rename from pio-tools/strip-floats.py rename to pio-tools/strip-flags.py index 4b49321fb..714e84a0f 100644 --- a/pio-tools/strip-floats.py +++ b/pio-tools/strip-flags.py @@ -3,13 +3,6 @@ Import('env') link_flags = " ".join(env['LINKFLAGS']) build_flags = " ".join(env['BUILD_FLAGS']) -# -# Dump build environment (for debug) -#print(env.Dump()) -# - -link_flags = link_flags.replace("-u _printf_float", "") -link_flags = link_flags.replace("-u _scanf_float", "") if "FIRMWARE_SAFEBOOT" in build_flags: # Crash Recorder is not included in safeboot firmware -> remove Linker wrap link_flags = link_flags.replace("-Wl,--wrap=panicHandler", "") @@ -19,4 +12,4 @@ new_link_flags = link_flags.split() env.Replace( LINKFLAGS=new_link_flags -) \ No newline at end of file +) diff --git a/platformio.ini b/platformio.ini index 0f21033da..0a56d36eb 100644 --- a/platformio.ini +++ b/platformio.ini @@ -73,7 +73,7 @@ build_flags = extra_scripts = pre:pio-tools/pre_source_dir.py pre:pio-tools/set_partition_table.py pre:pio-tools/override_copy.py - post:pio-tools/strip-floats.py + post:pio-tools/strip-flags.py [esp_defaults] extra_scripts = post:pio-tools/name-firmware.py @@ -121,18 +121,12 @@ build_flags = ${esp_defaults.build_flags} ; uncomment the following to enable TLS with 4096 RSA certificates ;-DUSE_4K_RSA lib_ignore = - Servo(esp8266) - ESP8266AVRISP ESP8266LLMNR ESP8266NetBIOS ESP8266SSDP - SP8266WiFiMesh - Ethernet(esp8266) - GDBStub - TFT_Touch_Shield_V2 - ESP8266HTTPUpdateServer ESP8266WiFiMesh - EspSoftwareSerial + GDBStub + ESP8266HTTPUpdateServer SPISlave Hash ; Disable next if you want to use ArduinoOTA in Tasmota (default disabled) @@ -140,8 +134,8 @@ lib_ignore = [core] ; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4. Added Backport for PWM selection -platform = https://github.com/tasmota/platform-espressif8266/releases/download/2024.01.01/platform-espressif8266.zip -platform_packages = tool-esptoolpy @ https://github.com/tasmota/esptool/releases/download/v4.7.2/esptool.zip +platform = https://github.com/tasmota/platform-espressif8266/releases/download/2024.06.00/platform-espressif8266.zip +platform_packages = build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} ; *** Use ONE of the two PWM variants. Tasmota default is Locked PWM From d18925897a103c54a6bb20263695cf560fbbaf8c Mon Sep 17 00:00:00 2001 From: stefanbode Date: Fri, 21 Jun 2024 16:35:05 +0200 Subject: [PATCH 073/252] MQTT fix on inverted shutter (#21663) * MQTT fix on inverted shutter * MQTT fix on inverted shutter --- tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino | 10 ++++------ tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino | 9 ++++----- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino b/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino index 283be9951..2a028bb97 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino @@ -1868,12 +1868,10 @@ void CmndShutterPosition(void) } int8_t target_pos_percent = (XdrvMailbox.payload < 0) ? (XdrvMailbox.payload == -99 ? ShutterRealToPercentPosition(Shutter[index].real_position, index) : 0) : ((XdrvMailbox.payload > 100) ? 100 : XdrvMailbox.payload); - target_pos_percent = ((ShutterSettings.shutter_options[index] & 1) && ((SRC_MQTT != TasmotaGlobal.last_source) // 1 - && (SRC_SERIAL != TasmotaGlobal.last_source) // 6 - && (SRC_WEBGUI != TasmotaGlobal.last_source) // 7 - && (SRC_WEBCOMMAND != TasmotaGlobal.last_source) // 8 - )) ? 100 - target_pos_percent : target_pos_percent; - + target_pos_percent = ((ShutterSettings.shutter_options[index] & 1) && ( (SRC_SERIAL != TasmotaGlobal.last_source) // 6 + && (SRC_WEBGUI != TasmotaGlobal.last_source) // 7 + && (SRC_WEBCOMMAND != TasmotaGlobal.last_source) // 8 + )) ? 100 - target_pos_percent : target_pos_percent; // if position is either 0 or 100 reset the tilt to avoid tilt moving at the end if (target_pos_percent == 0 && ShutterRealToPercentPosition(Shutter[index].real_position, index) > 0 ) {Shutter[index].tilt_target_pos = Shutter[index].tilt_config[4];} if (target_pos_percent == 100 && ShutterRealToPercentPosition(Shutter[index].real_position, index) < 100) {Shutter[index].tilt_target_pos = Shutter[index].tilt_config[3];} diff --git a/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino b/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino index db1f622fb..776f08a74 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino @@ -1332,11 +1332,10 @@ void CmndShutterPosition(void) } int8_t target_pos_percent = (XdrvMailbox.payload < 0) ? (XdrvMailbox.payload == -99 ? ShutterRealToPercentPosition(Shutter[index].real_position, index) : 0) : ((XdrvMailbox.payload > 100) ? 100 : XdrvMailbox.payload); - target_pos_percent = ((Settings->shutter_options[index] & 1) && ((SRC_MQTT != TasmotaGlobal.last_source) - && (SRC_SERIAL != TasmotaGlobal.last_source) - && (SRC_WEBGUI != TasmotaGlobal.last_source) - && (SRC_WEBCOMMAND != TasmotaGlobal.last_source) - )) ? 100 - target_pos_percent : target_pos_percent; + target_pos_percent = ((Settings->shutter_options[index] & 1) && ( (SRC_SERIAL != TasmotaGlobal.last_source) + && (SRC_WEBGUI != TasmotaGlobal.last_source) + && (SRC_WEBCOMMAND != TasmotaGlobal.last_source) + )) ? 100 - target_pos_percent : target_pos_percent; // if position is either 0 or 100 reset the tilt to avoid tilt moving at the end if (target_pos_percent == 0 && ShutterRealToPercentPosition(Shutter[index].real_position, index) > 0 ) {Shutter[index].tilt_target_pos = Shutter[index].tilt_config[4];} From aa380ea190a62c3b1465b9185810574ef3374684 Mon Sep 17 00:00:00 2001 From: gemu Date: Fri, 21 Jun 2024 16:35:20 +0200 Subject: [PATCH 074/252] fix tcp server (#21660) --- .../tasmota_xdrv_driver/xdrv_10_scripter.ino | 82 ++++++++++++++----- 1 file changed, 60 insertions(+), 22 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino b/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino index b116e7abf..eb8714737 100755 --- a/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino @@ -2600,12 +2600,19 @@ char *isargs(char *lp, uint32_t isind) { if (glob_script_mem.si_num[isind] > MAX_SARRAY_NUM) { glob_script_mem.si_num[isind] = MAX_SARRAY_NUM; } + //glob_script_mem.last_index_string[isind] = (char*)calloc(glob_script_mem.max_ssize * glob_script_mem.si_num[isind], 1); + uint32_t sasize = glob_script_mem.max_ssize * glob_script_mem.si_num[isind]; + glob_script_mem.last_index_string[isind] = (char*)special_malloc(sasize); + if (glob_script_mem.last_index_string[isind]) { + memset(glob_script_mem.last_index_string[isind], 0, sasize); + for (uint32_t cnt = 0; cnt < glob_script_mem.siro_num[isind]; cnt++) { + char str[SCRIPT_MAX_SBSIZE]; + GetTextIndexed(str, sizeof(str), cnt, sstart); + strlcpy(glob_script_mem.last_index_string[isind] + (cnt * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize); + } + } else { + // memory error - glob_script_mem.last_index_string[isind] = (char*)calloc(glob_script_mem.max_ssize * glob_script_mem.si_num[isind], 1); - for (uint32_t cnt = 0; cnt < glob_script_mem.siro_num[isind]; cnt++) { - char str[SCRIPT_MAX_SBSIZE]; - GetTextIndexed(str, sizeof(str), cnt, sstart); - strlcpy(glob_script_mem.last_index_string[isind] + (cnt * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize); } } else { glob_script_mem.last_index_string[isind] = sstart; @@ -3439,7 +3446,7 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value); FS *cfp = script_file_path(str); while (*lp == ' ') lp++; uint8_t mode = 0; - if ((*lp == 'r') || (*lp == 'w') || (*lp == 'a')) { + if ((*lp == 'r') || (*lp == 'w') || (*lp == 'a') || (*lp == 'u')) { switch (*lp) { case 'r': mode = 0; @@ -3450,6 +3457,12 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value); case 'a': mode = 2; break; + case 'u': + mode = 3; + break; + case 'U': + mode = 4; + break; } lp++; } else { @@ -3477,10 +3490,20 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value); #ifdef DEBUG_FS AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for write %d"), cnt); #endif - } else { + } else if (mode == 2) { glob_script_mem.files[cnt] = cfp->open(str,FS_FILE_APPEND); #ifdef DEBUG_FS AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for append %d"), cnt); +#endif + } else if (mode == 3) { + glob_script_mem.files[cnt] = cfp->open(str, "w+"); +#ifdef DEBUG_FS + AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for write update %d"), cnt); +#endif + } else { + glob_script_mem.files[cnt] = cfp->open(str, "r+"); +#ifdef DEBUG_FS + AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for read update %d"), cnt); #endif } } @@ -4744,7 +4767,8 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value); len = 0; goto exit; } -#ifdef USE_MORITZ +#ifdef USE_BINPLUGINS +char *Plugin_Query(uint8_t, uint8_t); if (!strncmp_XP(lp, XPSTR("mo("), 3)) { TS_FLOAT fvar1; lp = GetNumericArgument(lp + 3, OPER_EQU, &fvar1, gv); @@ -4752,14 +4776,21 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value); TS_FLOAT fvar2; lp = GetNumericArgument(lp, OPER_EQU, &fvar2, gv); SCRIPT_SKIP_SPACES - char rbuff[64]; - fvar = mo_getvars(fvar1, fvar2, rbuff); + char *rbuff = Plugin_Query(fvar1, fvar2); + if (rbuff) { + if (sp) strlcpy(sp, rbuff, glob_script_mem.max_ssize); + free (rbuff); + } else { + if (sp) { + strcpy_P(sp, PSTR("not found")); + } + } lp++; - if (sp) strlcpy(sp, rbuff, glob_script_mem.max_ssize); len = 0; goto strexit; } -#endif //USE_MORITZ +#endif //USE_BINPLUGINS + #ifdef ESP32_FAST_MUX if (!strncmp_XP(lp, XPSTR("mux("), 4)) { lp = GetNumericArgument(lp + 4, OPER_EQU, &fvar, gv); @@ -6219,16 +6250,24 @@ void tmod_directModeOutput(uint32_t pin); if (!strncmp_XP(lp, XPSTR("wso("), 4)) { TS_FLOAT port; lp = GetNumericArgument(lp + 4, OPER_EQU, &port, gv); - glob_script_mem.tcp_server = new WiFiServer(port); - fvar = 0; - if (!glob_script_mem.tcp_server) { - fvar = -1; - } else { - AddLog(LOG_LEVEL_INFO, PSTR("tcp server started")); + if (TasmotaGlobal.global_state.wifi_down) { + fvar = - 2; + } else { + if (glob_script_mem.tcp_server) { + glob_script_mem.tcp_client.stop(); + glob_script_mem.tcp_server->stop(); + delete glob_script_mem.tcp_server; + } + glob_script_mem.tcp_server = new WiFiServer(port); + fvar = 0; + if (!glob_script_mem.tcp_server) { + fvar = -1; + } else { + glob_script_mem.tcp_server->begin(); + glob_script_mem.tcp_server->setNoDelay(true); + AddLog(LOG_LEVEL_INFO, PSTR("tcp server started")); + } } - glob_script_mem.tcp_server->begin(); - glob_script_mem.tcp_server->setNoDelay(true); - goto nfuncexit; } if (!strncmp_XP(lp, XPSTR("wsc("), 4)) { @@ -12055,7 +12094,6 @@ exgc: } } snprintf_P(options, SCRIPT_GC_OPTIONS_SIZE, SCRIPT_MSG_GOPT4); - if (options) free(options); } if (tonly) { WSContentSend_P("]);"); From 9ac4712527e26ceee541e376bdc7f5e5f833dce8 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 22 Jun 2024 10:10:57 +0200 Subject: [PATCH 075/252] Matter fix TLV.U8 unsigned encoding (#21672) --- .../berry_matter/src/embedded/Matter_TLV.be | 13 +- .../src/solidify/solidified_Matter_TLV.h | 806 +++++++++--------- 2 files changed, 434 insertions(+), 385 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be index ab14e4a0e..e1c6294d9 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be @@ -293,6 +293,13 @@ class Matter_TLV if self.typ == TLV.RAW b..self.val return b end + # special case for U8/I8 if we have an int, simplify to smaller size + if (self.typ == TLV.I8 || self.typ == TLV.U8) && (type(self.val) == 'int') # don't change if instance of `int64` + if self.typ == TLV.I8 self.typ = TLV.I4 # we can safely cast to I4 + else self.typ = TLV.U4 # or to U4, and let further reduction happen below + end + end + # special case for bool # we need to change the type according to the value if self.typ == TLV.BFALSE || self.typ == TLV.BTRUE @@ -344,7 +351,11 @@ class Matter_TLV elif isinstance(i64, int64) i64 = i64.tobytes() # bytes(8) else - i64 = int64(int(i64)).tobytes() # bytes(8) + if (self.typ == TLV.I8) # signed + i64 = int64(int(i64)).tobytes() # bytes(8) + else # unsigned + i64 = int64.fromu32(int(i64)).tobytes() # bytes(8) + end end b .. i64 elif self.typ == TLV.BFALSE || self.typ == TLV.BTRUE diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index 78ba7508d..b5ee74e2a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -1439,53 +1439,55 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0, /* has sup protos */ &be_class_Matter_TLV_item, 1, /* has constants */ - ( &(const bvalue[42]) { /* constants */ + ( &(const bvalue[44]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), /* K1 */ be_nested_str_weak(typ), /* K2 */ be_nested_str_weak(RAW), /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(BFALSE), - /* K5 */ be_nested_str_weak(BTRUE), - /* K6 */ be_nested_str_weak(I2), + /* K4 */ be_nested_str_weak(I8), + /* K5 */ be_nested_str_weak(U8), + /* K6 */ be_nested_str_weak(int), /* K7 */ be_nested_str_weak(I4), - /* K8 */ be_nested_str_weak(I1), - /* K9 */ be_nested_str_weak(U2), - /* K10 */ be_nested_str_weak(U4), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(U1), - /* K13 */ be_nested_str_weak(B1), - /* K14 */ be_nested_str_weak(B8), - /* K15 */ be_nested_str_weak(B2), - /* K16 */ be_nested_str_weak(B4), - /* K17 */ be_nested_str_weak(UTF1), - /* K18 */ be_nested_str_weak(UTF8), - /* K19 */ be_nested_str_weak(UTF2), - /* K20 */ be_nested_str_weak(UTF4), - /* K21 */ be_nested_str_weak(_encode_tag), - /* K22 */ be_nested_str_weak(add), - /* K23 */ be_const_int(1), - /* K24 */ be_const_int(2), - /* K25 */ be_nested_str_weak(I8), - /* K26 */ be_nested_str_weak(U8), - /* K27 */ be_nested_str_weak(copy), - /* K28 */ be_nested_str_weak(resize), - /* K29 */ be_nested_str_weak(int64), - /* K30 */ be_nested_str_weak(tobytes), - /* K31 */ be_nested_str_weak(FLOAT), - /* K32 */ be_nested_str_weak(setfloat), - /* K33 */ be_nested_str_weak(DOUBLE), - /* K34 */ be_nested_str_weak(value_error), - /* K35 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE), - /* K36 */ be_nested_str_weak(string_X20too_X20big), - /* K37 */ be_nested_str_weak(fromstring), - /* K38 */ be_nested_str_weak(frostring), - /* K39 */ be_nested_str_weak(bytes_X20too_X20big), - /* K40 */ be_nested_str_weak(NULL), - /* K41 */ be_nested_str_weak(unsupported_X20type_X20), + /* K8 */ be_nested_str_weak(U4), + /* K9 */ be_nested_str_weak(BFALSE), + /* K10 */ be_nested_str_weak(BTRUE), + /* K11 */ be_nested_str_weak(I2), + /* K12 */ be_nested_str_weak(I1), + /* K13 */ be_nested_str_weak(U2), + /* K14 */ be_const_int(0), + /* K15 */ be_nested_str_weak(U1), + /* K16 */ be_nested_str_weak(B1), + /* K17 */ be_nested_str_weak(B8), + /* K18 */ be_nested_str_weak(B2), + /* K19 */ be_nested_str_weak(B4), + /* K20 */ be_nested_str_weak(UTF1), + /* K21 */ be_nested_str_weak(UTF8), + /* K22 */ be_nested_str_weak(UTF2), + /* K23 */ be_nested_str_weak(UTF4), + /* K24 */ be_nested_str_weak(_encode_tag), + /* K25 */ be_nested_str_weak(add), + /* K26 */ be_const_int(1), + /* K27 */ be_const_int(2), + /* K28 */ be_nested_str_weak(copy), + /* K29 */ be_nested_str_weak(resize), + /* K30 */ be_nested_str_weak(int64), + /* K31 */ be_nested_str_weak(tobytes), + /* K32 */ be_nested_str_weak(fromu32), + /* K33 */ be_nested_str_weak(FLOAT), + /* K34 */ be_nested_str_weak(setfloat), + /* K35 */ be_nested_str_weak(DOUBLE), + /* K36 */ be_nested_str_weak(value_error), + /* K37 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE), + /* K38 */ be_nested_str_weak(string_X20too_X20big), + /* K39 */ be_nested_str_weak(fromstring), + /* K40 */ be_nested_str_weak(frostring), + /* K41 */ be_nested_str_weak(bytes_X20too_X20big), + /* K42 */ be_nested_str_weak(NULL), + /* K43 */ be_nested_str_weak(unsupported_X20type_X20), }), be_str_weak(tlv2raw), &be_const_str_solidified, - ( &(const binstruction[368]) { /* code */ + ( &(const binstruction[404]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x4C0C0000, // 0001 LDNIL R3 0x1C0C0203, // 0002 EQ R3 R1 R3 @@ -1507,353 +1509,389 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x880C0101, // 0012 GETMBR R3 R0 K1 0x88100505, // 0013 GETMBR R4 R2 K5 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x780E0008, // 0015 JMPF R3 #001F - 0x600C0017, // 0016 GETGBL R3 G23 + 0x780E000D, // 0015 JMPF R3 #0024 + 0x600C0004, // 0016 GETGBL R3 G4 0x88100103, // 0017 GETMBR R4 R0 K3 0x7C0C0200, // 0018 CALL R3 1 - 0x780E0001, // 0019 JMPF R3 #001C - 0x880C0505, // 001A GETMBR R3 R2 K5 - 0x70020000, // 001B JMP #001D - 0x880C0504, // 001C GETMBR R3 R2 K4 - 0x90020203, // 001D SETMBR R0 K1 R3 - 0x70020070, // 001E JMP #0090 - 0x880C0101, // 001F GETMBR R3 R0 K1 - 0x88100506, // 0020 GETMBR R4 R2 K6 - 0x280C0604, // 0021 GE R3 R3 R4 - 0x780E0018, // 0022 JMPF R3 #003C - 0x880C0101, // 0023 GETMBR R3 R0 K1 - 0x88100507, // 0024 GETMBR R4 R2 K7 - 0x180C0604, // 0025 LE R3 R3 R4 - 0x780E0014, // 0026 JMPF R3 #003C - 0x600C0009, // 0027 GETGBL R3 G9 - 0x88100103, // 0028 GETMBR R4 R0 K3 - 0x7C0C0200, // 0029 CALL R3 1 - 0x5412007E, // 002A LDINT R4 127 - 0x18100604, // 002B LE R4 R3 R4 - 0x78120005, // 002C JMPF R4 #0033 - 0x5411FF7F, // 002D LDINT R4 -128 - 0x28100604, // 002E GE R4 R3 R4 - 0x78120002, // 002F JMPF R4 #0033 - 0x88100508, // 0030 GETMBR R4 R2 K8 - 0x90020204, // 0031 SETMBR R0 K1 R4 - 0x70020007, // 0032 JMP #003B - 0x54127FFE, // 0033 LDINT R4 32767 - 0x18100604, // 0034 LE R4 R3 R4 - 0x78120004, // 0035 JMPF R4 #003B - 0x54117FFF, // 0036 LDINT R4 -32768 - 0x28100604, // 0037 GE R4 R3 R4 - 0x78120001, // 0038 JMPF R4 #003B - 0x88100506, // 0039 GETMBR R4 R2 K6 - 0x90020204, // 003A SETMBR R0 K1 R4 - 0x70020053, // 003B JMP #0090 - 0x880C0101, // 003C GETMBR R3 R0 K1 - 0x88100509, // 003D GETMBR R4 R2 K9 - 0x280C0604, // 003E GE R3 R3 R4 - 0x780E0016, // 003F JMPF R3 #0057 - 0x880C0101, // 0040 GETMBR R3 R0 K1 - 0x8810050A, // 0041 GETMBR R4 R2 K10 - 0x180C0604, // 0042 LE R3 R3 R4 - 0x780E0012, // 0043 JMPF R3 #0057 - 0x600C0009, // 0044 GETGBL R3 G9 - 0x88100103, // 0045 GETMBR R4 R0 K3 - 0x7C0C0200, // 0046 CALL R3 1 - 0x541200FE, // 0047 LDINT R4 255 - 0x18100604, // 0048 LE R4 R3 R4 - 0x78120004, // 0049 JMPF R4 #004F - 0x2810070B, // 004A GE R4 R3 K11 - 0x78120002, // 004B JMPF R4 #004F - 0x8810050C, // 004C GETMBR R4 R2 K12 - 0x90020204, // 004D SETMBR R0 K1 R4 - 0x70020006, // 004E JMP #0056 - 0x5412FFFE, // 004F LDINT R4 65535 - 0x18100604, // 0050 LE R4 R3 R4 - 0x78120003, // 0051 JMPF R4 #0056 - 0x2810070B, // 0052 GE R4 R3 K11 - 0x78120001, // 0053 JMPF R4 #0056 - 0x88100509, // 0054 GETMBR R4 R2 K9 - 0x90020204, // 0055 SETMBR R0 K1 R4 - 0x70020038, // 0056 JMP #0090 - 0x880C0101, // 0057 GETMBR R3 R0 K1 - 0x8810050D, // 0058 GETMBR R4 R2 K13 - 0x280C0604, // 0059 GE R3 R3 R4 - 0x780E0018, // 005A JMPF R3 #0074 - 0x880C0101, // 005B GETMBR R3 R0 K1 - 0x8810050E, // 005C GETMBR R4 R2 K14 - 0x180C0604, // 005D LE R3 R3 R4 - 0x780E0014, // 005E JMPF R3 #0074 - 0x600C000C, // 005F GETGBL R3 G12 - 0x88100103, // 0060 GETMBR R4 R0 K3 - 0x7C0C0200, // 0061 CALL R3 1 - 0x541200FE, // 0062 LDINT R4 255 - 0x180C0604, // 0063 LE R3 R3 R4 - 0x780E0002, // 0064 JMPF R3 #0068 - 0x880C050D, // 0065 GETMBR R3 R2 K13 - 0x90020203, // 0066 SETMBR R0 K1 R3 - 0x7002000A, // 0067 JMP #0073 - 0x600C000C, // 0068 GETGBL R3 G12 - 0x88100103, // 0069 GETMBR R4 R0 K3 - 0x7C0C0200, // 006A CALL R3 1 - 0x5412FFFE, // 006B LDINT R4 65535 - 0x180C0604, // 006C LE R3 R3 R4 - 0x780E0002, // 006D JMPF R3 #0071 - 0x880C050F, // 006E GETMBR R3 R2 K15 - 0x90020203, // 006F SETMBR R0 K1 R3 - 0x70020001, // 0070 JMP #0073 - 0x880C0510, // 0071 GETMBR R3 R2 K16 - 0x90020203, // 0072 SETMBR R0 K1 R3 - 0x7002001B, // 0073 JMP #0090 - 0x880C0101, // 0074 GETMBR R3 R0 K1 - 0x88100511, // 0075 GETMBR R4 R2 K17 - 0x280C0604, // 0076 GE R3 R3 R4 - 0x780E0017, // 0077 JMPF R3 #0090 - 0x880C0101, // 0078 GETMBR R3 R0 K1 - 0x88100512, // 0079 GETMBR R4 R2 K18 - 0x180C0604, // 007A LE R3 R3 R4 - 0x780E0013, // 007B JMPF R3 #0090 - 0x600C000C, // 007C GETGBL R3 G12 - 0x88100103, // 007D GETMBR R4 R0 K3 - 0x7C0C0200, // 007E CALL R3 1 - 0x541200FE, // 007F LDINT R4 255 - 0x180C0604, // 0080 LE R3 R3 R4 - 0x780E0002, // 0081 JMPF R3 #0085 - 0x880C0511, // 0082 GETMBR R3 R2 K17 - 0x90020203, // 0083 SETMBR R0 K1 R3 - 0x7002000A, // 0084 JMP #0090 - 0x600C000C, // 0085 GETGBL R3 G12 - 0x88100103, // 0086 GETMBR R4 R0 K3 - 0x7C0C0200, // 0087 CALL R3 1 - 0x5412FFFE, // 0088 LDINT R4 65535 - 0x180C0604, // 0089 LE R3 R3 R4 - 0x780E0002, // 008A JMPF R3 #008E - 0x880C0513, // 008B GETMBR R3 R2 K19 - 0x90020203, // 008C SETMBR R0 K1 R3 - 0x70020001, // 008D JMP #0090 - 0x880C0514, // 008E GETMBR R3 R2 K20 - 0x90020203, // 008F SETMBR R0 K1 R3 - 0x8C0C0115, // 0090 GETMET R3 R0 K21 - 0x5C140200, // 0091 MOVE R5 R1 - 0x7C0C0400, // 0092 CALL R3 2 - 0x880C0101, // 0093 GETMBR R3 R0 K1 - 0x88100508, // 0094 GETMBR R4 R2 K8 - 0x1C0C0604, // 0095 EQ R3 R3 R4 - 0x740E0003, // 0096 JMPT R3 #009B - 0x880C0101, // 0097 GETMBR R3 R0 K1 - 0x8810050C, // 0098 GETMBR R4 R2 K12 - 0x1C0C0604, // 0099 EQ R3 R3 R4 - 0x780E0006, // 009A JMPF R3 #00A2 - 0x8C0C0316, // 009B GETMET R3 R1 K22 - 0x60140009, // 009C GETGBL R5 G9 - 0x88180103, // 009D GETMBR R6 R0 K3 - 0x7C140200, // 009E CALL R5 1 - 0x58180017, // 009F LDCONST R6 K23 - 0x7C0C0600, // 00A0 CALL R3 3 - 0x700200CC, // 00A1 JMP #016F - 0x880C0101, // 00A2 GETMBR R3 R0 K1 - 0x88100506, // 00A3 GETMBR R4 R2 K6 - 0x1C0C0604, // 00A4 EQ R3 R3 R4 - 0x740E0003, // 00A5 JMPT R3 #00AA - 0x880C0101, // 00A6 GETMBR R3 R0 K1 - 0x88100509, // 00A7 GETMBR R4 R2 K9 - 0x1C0C0604, // 00A8 EQ R3 R3 R4 - 0x780E0006, // 00A9 JMPF R3 #00B1 - 0x8C0C0316, // 00AA GETMET R3 R1 K22 - 0x60140009, // 00AB GETGBL R5 G9 - 0x88180103, // 00AC GETMBR R6 R0 K3 - 0x7C140200, // 00AD CALL R5 1 - 0x58180018, // 00AE LDCONST R6 K24 - 0x7C0C0600, // 00AF CALL R3 3 - 0x700200BD, // 00B0 JMP #016F - 0x880C0101, // 00B1 GETMBR R3 R0 K1 - 0x88100507, // 00B2 GETMBR R4 R2 K7 - 0x1C0C0604, // 00B3 EQ R3 R3 R4 - 0x740E0003, // 00B4 JMPT R3 #00B9 - 0x880C0101, // 00B5 GETMBR R3 R0 K1 - 0x8810050A, // 00B6 GETMBR R4 R2 K10 - 0x1C0C0604, // 00B7 EQ R3 R3 R4 - 0x780E0006, // 00B8 JMPF R3 #00C0 - 0x8C0C0316, // 00B9 GETMET R3 R1 K22 - 0x60140009, // 00BA GETGBL R5 G9 - 0x88180103, // 00BB GETMBR R6 R0 K3 - 0x7C140200, // 00BC CALL R5 1 - 0x541A0003, // 00BD LDINT R6 4 - 0x7C0C0600, // 00BE CALL R3 3 - 0x700200AE, // 00BF JMP #016F - 0x880C0101, // 00C0 GETMBR R3 R0 K1 - 0x88100519, // 00C1 GETMBR R4 R2 K25 - 0x1C0C0604, // 00C2 EQ R3 R3 R4 - 0x740E0003, // 00C3 JMPT R3 #00C8 - 0x880C0101, // 00C4 GETMBR R3 R0 K1 - 0x8810051A, // 00C5 GETMBR R4 R2 K26 - 0x1C0C0604, // 00C6 EQ R3 R3 R4 - 0x780E001F, // 00C7 JMPF R3 #00E8 - 0x880C0103, // 00C8 GETMBR R3 R0 K3 - 0x6010000F, // 00C9 GETGBL R4 G15 - 0x5C140600, // 00CA MOVE R5 R3 - 0x60180015, // 00CB GETGBL R6 G21 - 0x7C100400, // 00CC CALL R4 2 - 0x78120006, // 00CD JMPF R4 #00D5 - 0x8C10071B, // 00CE GETMET R4 R3 K27 - 0x7C100200, // 00CF CALL R4 1 - 0x8C10091C, // 00D0 GETMET R4 R4 K28 - 0x541A0007, // 00D1 LDINT R6 8 - 0x7C100400, // 00D2 CALL R4 2 - 0x5C0C0800, // 00D3 MOVE R3 R4 - 0x70020010, // 00D4 JMP #00E6 - 0x6010000F, // 00D5 GETGBL R4 G15 - 0x5C140600, // 00D6 MOVE R5 R3 - 0xB81A3A00, // 00D7 GETNGBL R6 K29 - 0x7C100400, // 00D8 CALL R4 2 - 0x78120003, // 00D9 JMPF R4 #00DE - 0x8C10071E, // 00DA GETMET R4 R3 K30 - 0x7C100200, // 00DB CALL R4 1 - 0x5C0C0800, // 00DC MOVE R3 R4 - 0x70020007, // 00DD JMP #00E6 - 0xB8123A00, // 00DE GETNGBL R4 K29 - 0x60140009, // 00DF GETGBL R5 G9 - 0x5C180600, // 00E0 MOVE R6 R3 - 0x7C140200, // 00E1 CALL R5 1 - 0x7C100200, // 00E2 CALL R4 1 - 0x8C10091E, // 00E3 GETMET R4 R4 K30 - 0x7C100200, // 00E4 CALL R4 1 - 0x5C0C0800, // 00E5 MOVE R3 R4 - 0x40100203, // 00E6 CONNECT R4 R1 R3 - 0x70020086, // 00E7 JMP #016F - 0x880C0101, // 00E8 GETMBR R3 R0 K1 - 0x88100504, // 00E9 GETMBR R4 R2 K4 - 0x1C0C0604, // 00EA EQ R3 R3 R4 - 0x740E0003, // 00EB JMPT R3 #00F0 - 0x880C0101, // 00EC GETMBR R3 R0 K1 - 0x88100505, // 00ED GETMBR R4 R2 K5 - 0x1C0C0604, // 00EE EQ R3 R3 R4 - 0x780E0000, // 00EF JMPF R3 #00F1 - 0x7002007D, // 00F0 JMP #016F - 0x880C0101, // 00F1 GETMBR R3 R0 K1 - 0x8810051F, // 00F2 GETMBR R4 R2 K31 - 0x1C0C0604, // 00F3 EQ R3 R3 R4 - 0x780E000D, // 00F4 JMPF R3 #0103 - 0x600C000C, // 00F5 GETGBL R3 G12 - 0x5C100200, // 00F6 MOVE R4 R1 - 0x7C0C0200, // 00F7 CALL R3 1 - 0x8C100316, // 00F8 GETMET R4 R1 K22 - 0x5818000B, // 00F9 LDCONST R6 K11 - 0x541E0003, // 00FA LDINT R7 4 - 0x7C100600, // 00FB CALL R4 3 - 0x8C100320, // 00FC GETMET R4 R1 K32 - 0x5C180600, // 00FD MOVE R6 R3 - 0x601C000A, // 00FE GETGBL R7 G10 - 0x88200103, // 00FF GETMBR R8 R0 K3 - 0x7C1C0200, // 0100 CALL R7 1 - 0x7C100600, // 0101 CALL R4 3 - 0x7002006B, // 0102 JMP #016F - 0x880C0101, // 0103 GETMBR R3 R0 K1 - 0x88100521, // 0104 GETMBR R4 R2 K33 - 0x1C0C0604, // 0105 EQ R3 R3 R4 - 0x780E0001, // 0106 JMPF R3 #0109 - 0xB0064523, // 0107 RAISE 1 K34 K35 - 0x70020065, // 0108 JMP #016F - 0x880C0101, // 0109 GETMBR R3 R0 K1 - 0x88100511, // 010A GETMBR R4 R2 K17 - 0x1C0C0604, // 010B EQ R3 R3 R4 - 0x780E0015, // 010C JMPF R3 #0123 - 0x600C000C, // 010D GETGBL R3 G12 - 0x88100103, // 010E GETMBR R4 R0 K3 - 0x7C0C0200, // 010F CALL R3 1 - 0x541200FE, // 0110 LDINT R4 255 - 0x240C0604, // 0111 GT R3 R3 R4 - 0x780E0000, // 0112 JMPF R3 #0114 - 0xB0064524, // 0113 RAISE 1 K34 K36 - 0x8C0C0316, // 0114 GETMET R3 R1 K22 - 0x6014000C, // 0115 GETGBL R5 G12 - 0x88180103, // 0116 GETMBR R6 R0 K3 - 0x7C140200, // 0117 CALL R5 1 - 0x58180017, // 0118 LDCONST R6 K23 - 0x7C0C0600, // 0119 CALL R3 3 - 0x600C0015, // 011A GETGBL R3 G21 - 0x7C0C0000, // 011B CALL R3 0 - 0x8C0C0725, // 011C GETMET R3 R3 K37 - 0x60140008, // 011D GETGBL R5 G8 - 0x88180103, // 011E GETMBR R6 R0 K3 - 0x7C140200, // 011F CALL R5 1 - 0x7C0C0400, // 0120 CALL R3 2 - 0x400C0203, // 0121 CONNECT R3 R1 R3 - 0x7002004B, // 0122 JMP #016F - 0x880C0101, // 0123 GETMBR R3 R0 K1 - 0x88100513, // 0124 GETMBR R4 R2 K19 - 0x1C0C0604, // 0125 EQ R3 R3 R4 - 0x780E0015, // 0126 JMPF R3 #013D - 0x600C000C, // 0127 GETGBL R3 G12 - 0x88100103, // 0128 GETMBR R4 R0 K3 - 0x7C0C0200, // 0129 CALL R3 1 - 0x5412FFFE, // 012A LDINT R4 65535 - 0x240C0604, // 012B GT R3 R3 R4 - 0x780E0000, // 012C JMPF R3 #012E - 0xB0064524, // 012D RAISE 1 K34 K36 - 0x8C0C0316, // 012E GETMET R3 R1 K22 - 0x6014000C, // 012F GETGBL R5 G12 - 0x88180103, // 0130 GETMBR R6 R0 K3 - 0x7C140200, // 0131 CALL R5 1 - 0x58180018, // 0132 LDCONST R6 K24 - 0x7C0C0600, // 0133 CALL R3 3 - 0x600C0015, // 0134 GETGBL R3 G21 - 0x7C0C0000, // 0135 CALL R3 0 - 0x8C0C0726, // 0136 GETMET R3 R3 K38 - 0x60140008, // 0137 GETGBL R5 G8 - 0x88180103, // 0138 GETMBR R6 R0 K3 - 0x7C140200, // 0139 CALL R5 1 - 0x7C0C0400, // 013A CALL R3 2 - 0x400C0203, // 013B CONNECT R3 R1 R3 - 0x70020031, // 013C JMP #016F - 0x880C0101, // 013D GETMBR R3 R0 K1 - 0x8810050D, // 013E GETMBR R4 R2 K13 - 0x1C0C0604, // 013F EQ R3 R3 R4 - 0x780E000F, // 0140 JMPF R3 #0151 - 0x600C000C, // 0141 GETGBL R3 G12 - 0x88100103, // 0142 GETMBR R4 R0 K3 - 0x7C0C0200, // 0143 CALL R3 1 - 0x541200FE, // 0144 LDINT R4 255 - 0x240C0604, // 0145 GT R3 R3 R4 - 0x780E0000, // 0146 JMPF R3 #0148 - 0xB0064527, // 0147 RAISE 1 K34 K39 - 0x8C0C0316, // 0148 GETMET R3 R1 K22 - 0x6014000C, // 0149 GETGBL R5 G12 - 0x88180103, // 014A GETMBR R6 R0 K3 - 0x7C140200, // 014B CALL R5 1 - 0x58180017, // 014C LDCONST R6 K23 - 0x7C0C0600, // 014D CALL R3 3 - 0x880C0103, // 014E GETMBR R3 R0 K3 - 0x400C0203, // 014F CONNECT R3 R1 R3 - 0x7002001D, // 0150 JMP #016F - 0x880C0101, // 0151 GETMBR R3 R0 K1 - 0x8810050F, // 0152 GETMBR R4 R2 K15 - 0x1C0C0604, // 0153 EQ R3 R3 R4 - 0x780E000F, // 0154 JMPF R3 #0165 - 0x600C000C, // 0155 GETGBL R3 G12 - 0x88100103, // 0156 GETMBR R4 R0 K3 - 0x7C0C0200, // 0157 CALL R3 1 - 0x5412FFFE, // 0158 LDINT R4 65535 - 0x240C0604, // 0159 GT R3 R3 R4 - 0x780E0000, // 015A JMPF R3 #015C - 0xB0064527, // 015B RAISE 1 K34 K39 - 0x8C0C0316, // 015C GETMET R3 R1 K22 - 0x6014000C, // 015D GETGBL R5 G12 - 0x88180103, // 015E GETMBR R6 R0 K3 - 0x7C140200, // 015F CALL R5 1 - 0x58180018, // 0160 LDCONST R6 K24 - 0x7C0C0600, // 0161 CALL R3 3 - 0x880C0103, // 0162 GETMBR R3 R0 K3 - 0x400C0203, // 0163 CONNECT R3 R1 R3 - 0x70020009, // 0164 JMP #016F - 0x880C0101, // 0165 GETMBR R3 R0 K1 - 0x88100528, // 0166 GETMBR R4 R2 K40 - 0x1C0C0604, // 0167 EQ R3 R3 R4 - 0x780E0000, // 0168 JMPF R3 #016A - 0x70020004, // 0169 JMP #016F - 0x600C0008, // 016A GETGBL R3 G8 - 0x88100101, // 016B GETMBR R4 R0 K1 - 0x7C0C0200, // 016C CALL R3 1 - 0x000E5203, // 016D ADD R3 K41 R3 - 0xB0064403, // 016E RAISE 1 K34 R3 - 0x80040200, // 016F RET 1 R1 + 0x1C0C0706, // 0019 EQ R3 R3 K6 + 0x780E0008, // 001A JMPF R3 #0024 + 0x880C0101, // 001B GETMBR R3 R0 K1 + 0x88100504, // 001C GETMBR R4 R2 K4 + 0x1C0C0604, // 001D EQ R3 R3 R4 + 0x780E0002, // 001E JMPF R3 #0022 + 0x880C0507, // 001F GETMBR R3 R2 K7 + 0x90020203, // 0020 SETMBR R0 K1 R3 + 0x70020001, // 0021 JMP #0024 + 0x880C0508, // 0022 GETMBR R3 R2 K8 + 0x90020203, // 0023 SETMBR R0 K1 R3 + 0x880C0101, // 0024 GETMBR R3 R0 K1 + 0x88100509, // 0025 GETMBR R4 R2 K9 + 0x1C0C0604, // 0026 EQ R3 R3 R4 + 0x740E0003, // 0027 JMPT R3 #002C + 0x880C0101, // 0028 GETMBR R3 R0 K1 + 0x8810050A, // 0029 GETMBR R4 R2 K10 + 0x1C0C0604, // 002A EQ R3 R3 R4 + 0x780E0008, // 002B JMPF R3 #0035 + 0x600C0017, // 002C GETGBL R3 G23 + 0x88100103, // 002D GETMBR R4 R0 K3 + 0x7C0C0200, // 002E CALL R3 1 + 0x780E0001, // 002F JMPF R3 #0032 + 0x880C050A, // 0030 GETMBR R3 R2 K10 + 0x70020000, // 0031 JMP #0033 + 0x880C0509, // 0032 GETMBR R3 R2 K9 + 0x90020203, // 0033 SETMBR R0 K1 R3 + 0x70020070, // 0034 JMP #00A6 + 0x880C0101, // 0035 GETMBR R3 R0 K1 + 0x8810050B, // 0036 GETMBR R4 R2 K11 + 0x280C0604, // 0037 GE R3 R3 R4 + 0x780E0018, // 0038 JMPF R3 #0052 + 0x880C0101, // 0039 GETMBR R3 R0 K1 + 0x88100507, // 003A GETMBR R4 R2 K7 + 0x180C0604, // 003B LE R3 R3 R4 + 0x780E0014, // 003C JMPF R3 #0052 + 0x600C0009, // 003D GETGBL R3 G9 + 0x88100103, // 003E GETMBR R4 R0 K3 + 0x7C0C0200, // 003F CALL R3 1 + 0x5412007E, // 0040 LDINT R4 127 + 0x18100604, // 0041 LE R4 R3 R4 + 0x78120005, // 0042 JMPF R4 #0049 + 0x5411FF7F, // 0043 LDINT R4 -128 + 0x28100604, // 0044 GE R4 R3 R4 + 0x78120002, // 0045 JMPF R4 #0049 + 0x8810050C, // 0046 GETMBR R4 R2 K12 + 0x90020204, // 0047 SETMBR R0 K1 R4 + 0x70020007, // 0048 JMP #0051 + 0x54127FFE, // 0049 LDINT R4 32767 + 0x18100604, // 004A LE R4 R3 R4 + 0x78120004, // 004B JMPF R4 #0051 + 0x54117FFF, // 004C LDINT R4 -32768 + 0x28100604, // 004D GE R4 R3 R4 + 0x78120001, // 004E JMPF R4 #0051 + 0x8810050B, // 004F GETMBR R4 R2 K11 + 0x90020204, // 0050 SETMBR R0 K1 R4 + 0x70020053, // 0051 JMP #00A6 + 0x880C0101, // 0052 GETMBR R3 R0 K1 + 0x8810050D, // 0053 GETMBR R4 R2 K13 + 0x280C0604, // 0054 GE R3 R3 R4 + 0x780E0016, // 0055 JMPF R3 #006D + 0x880C0101, // 0056 GETMBR R3 R0 K1 + 0x88100508, // 0057 GETMBR R4 R2 K8 + 0x180C0604, // 0058 LE R3 R3 R4 + 0x780E0012, // 0059 JMPF R3 #006D + 0x600C0009, // 005A GETGBL R3 G9 + 0x88100103, // 005B GETMBR R4 R0 K3 + 0x7C0C0200, // 005C CALL R3 1 + 0x541200FE, // 005D LDINT R4 255 + 0x18100604, // 005E LE R4 R3 R4 + 0x78120004, // 005F JMPF R4 #0065 + 0x2810070E, // 0060 GE R4 R3 K14 + 0x78120002, // 0061 JMPF R4 #0065 + 0x8810050F, // 0062 GETMBR R4 R2 K15 + 0x90020204, // 0063 SETMBR R0 K1 R4 + 0x70020006, // 0064 JMP #006C + 0x5412FFFE, // 0065 LDINT R4 65535 + 0x18100604, // 0066 LE R4 R3 R4 + 0x78120003, // 0067 JMPF R4 #006C + 0x2810070E, // 0068 GE R4 R3 K14 + 0x78120001, // 0069 JMPF R4 #006C + 0x8810050D, // 006A GETMBR R4 R2 K13 + 0x90020204, // 006B SETMBR R0 K1 R4 + 0x70020038, // 006C JMP #00A6 + 0x880C0101, // 006D GETMBR R3 R0 K1 + 0x88100510, // 006E GETMBR R4 R2 K16 + 0x280C0604, // 006F GE R3 R3 R4 + 0x780E0018, // 0070 JMPF R3 #008A + 0x880C0101, // 0071 GETMBR R3 R0 K1 + 0x88100511, // 0072 GETMBR R4 R2 K17 + 0x180C0604, // 0073 LE R3 R3 R4 + 0x780E0014, // 0074 JMPF R3 #008A + 0x600C000C, // 0075 GETGBL R3 G12 + 0x88100103, // 0076 GETMBR R4 R0 K3 + 0x7C0C0200, // 0077 CALL R3 1 + 0x541200FE, // 0078 LDINT R4 255 + 0x180C0604, // 0079 LE R3 R3 R4 + 0x780E0002, // 007A JMPF R3 #007E + 0x880C0510, // 007B GETMBR R3 R2 K16 + 0x90020203, // 007C SETMBR R0 K1 R3 + 0x7002000A, // 007D JMP #0089 + 0x600C000C, // 007E GETGBL R3 G12 + 0x88100103, // 007F GETMBR R4 R0 K3 + 0x7C0C0200, // 0080 CALL R3 1 + 0x5412FFFE, // 0081 LDINT R4 65535 + 0x180C0604, // 0082 LE R3 R3 R4 + 0x780E0002, // 0083 JMPF R3 #0087 + 0x880C0512, // 0084 GETMBR R3 R2 K18 + 0x90020203, // 0085 SETMBR R0 K1 R3 + 0x70020001, // 0086 JMP #0089 + 0x880C0513, // 0087 GETMBR R3 R2 K19 + 0x90020203, // 0088 SETMBR R0 K1 R3 + 0x7002001B, // 0089 JMP #00A6 + 0x880C0101, // 008A GETMBR R3 R0 K1 + 0x88100514, // 008B GETMBR R4 R2 K20 + 0x280C0604, // 008C GE R3 R3 R4 + 0x780E0017, // 008D JMPF R3 #00A6 + 0x880C0101, // 008E GETMBR R3 R0 K1 + 0x88100515, // 008F GETMBR R4 R2 K21 + 0x180C0604, // 0090 LE R3 R3 R4 + 0x780E0013, // 0091 JMPF R3 #00A6 + 0x600C000C, // 0092 GETGBL R3 G12 + 0x88100103, // 0093 GETMBR R4 R0 K3 + 0x7C0C0200, // 0094 CALL R3 1 + 0x541200FE, // 0095 LDINT R4 255 + 0x180C0604, // 0096 LE R3 R3 R4 + 0x780E0002, // 0097 JMPF R3 #009B + 0x880C0514, // 0098 GETMBR R3 R2 K20 + 0x90020203, // 0099 SETMBR R0 K1 R3 + 0x7002000A, // 009A JMP #00A6 + 0x600C000C, // 009B GETGBL R3 G12 + 0x88100103, // 009C GETMBR R4 R0 K3 + 0x7C0C0200, // 009D CALL R3 1 + 0x5412FFFE, // 009E LDINT R4 65535 + 0x180C0604, // 009F LE R3 R3 R4 + 0x780E0002, // 00A0 JMPF R3 #00A4 + 0x880C0516, // 00A1 GETMBR R3 R2 K22 + 0x90020203, // 00A2 SETMBR R0 K1 R3 + 0x70020001, // 00A3 JMP #00A6 + 0x880C0517, // 00A4 GETMBR R3 R2 K23 + 0x90020203, // 00A5 SETMBR R0 K1 R3 + 0x8C0C0118, // 00A6 GETMET R3 R0 K24 + 0x5C140200, // 00A7 MOVE R5 R1 + 0x7C0C0400, // 00A8 CALL R3 2 + 0x880C0101, // 00A9 GETMBR R3 R0 K1 + 0x8810050C, // 00AA GETMBR R4 R2 K12 + 0x1C0C0604, // 00AB EQ R3 R3 R4 + 0x740E0003, // 00AC JMPT R3 #00B1 + 0x880C0101, // 00AD GETMBR R3 R0 K1 + 0x8810050F, // 00AE GETMBR R4 R2 K15 + 0x1C0C0604, // 00AF EQ R3 R3 R4 + 0x780E0006, // 00B0 JMPF R3 #00B8 + 0x8C0C0319, // 00B1 GETMET R3 R1 K25 + 0x60140009, // 00B2 GETGBL R5 G9 + 0x88180103, // 00B3 GETMBR R6 R0 K3 + 0x7C140200, // 00B4 CALL R5 1 + 0x5818001A, // 00B5 LDCONST R6 K26 + 0x7C0C0600, // 00B6 CALL R3 3 + 0x700200DA, // 00B7 JMP #0193 + 0x880C0101, // 00B8 GETMBR R3 R0 K1 + 0x8810050B, // 00B9 GETMBR R4 R2 K11 + 0x1C0C0604, // 00BA EQ R3 R3 R4 + 0x740E0003, // 00BB JMPT R3 #00C0 + 0x880C0101, // 00BC GETMBR R3 R0 K1 + 0x8810050D, // 00BD GETMBR R4 R2 K13 + 0x1C0C0604, // 00BE EQ R3 R3 R4 + 0x780E0006, // 00BF JMPF R3 #00C7 + 0x8C0C0319, // 00C0 GETMET R3 R1 K25 + 0x60140009, // 00C1 GETGBL R5 G9 + 0x88180103, // 00C2 GETMBR R6 R0 K3 + 0x7C140200, // 00C3 CALL R5 1 + 0x5818001B, // 00C4 LDCONST R6 K27 + 0x7C0C0600, // 00C5 CALL R3 3 + 0x700200CB, // 00C6 JMP #0193 + 0x880C0101, // 00C7 GETMBR R3 R0 K1 + 0x88100507, // 00C8 GETMBR R4 R2 K7 + 0x1C0C0604, // 00C9 EQ R3 R3 R4 + 0x740E0003, // 00CA JMPT R3 #00CF + 0x880C0101, // 00CB GETMBR R3 R0 K1 + 0x88100508, // 00CC GETMBR R4 R2 K8 + 0x1C0C0604, // 00CD EQ R3 R3 R4 + 0x780E0006, // 00CE JMPF R3 #00D6 + 0x8C0C0319, // 00CF GETMET R3 R1 K25 + 0x60140009, // 00D0 GETGBL R5 G9 + 0x88180103, // 00D1 GETMBR R6 R0 K3 + 0x7C140200, // 00D2 CALL R5 1 + 0x541A0003, // 00D3 LDINT R6 4 + 0x7C0C0600, // 00D4 CALL R3 3 + 0x700200BC, // 00D5 JMP #0193 + 0x880C0101, // 00D6 GETMBR R3 R0 K1 + 0x88100504, // 00D7 GETMBR R4 R2 K4 + 0x1C0C0604, // 00D8 EQ R3 R3 R4 + 0x740E0003, // 00D9 JMPT R3 #00DE + 0x880C0101, // 00DA GETMBR R3 R0 K1 + 0x88100505, // 00DB GETMBR R4 R2 K5 + 0x1C0C0604, // 00DC EQ R3 R3 R4 + 0x780E002D, // 00DD JMPF R3 #010C + 0x880C0103, // 00DE GETMBR R3 R0 K3 + 0x6010000F, // 00DF GETGBL R4 G15 + 0x5C140600, // 00E0 MOVE R5 R3 + 0x60180015, // 00E1 GETGBL R6 G21 + 0x7C100400, // 00E2 CALL R4 2 + 0x78120006, // 00E3 JMPF R4 #00EB + 0x8C10071C, // 00E4 GETMET R4 R3 K28 + 0x7C100200, // 00E5 CALL R4 1 + 0x8C10091D, // 00E6 GETMET R4 R4 K29 + 0x541A0007, // 00E7 LDINT R6 8 + 0x7C100400, // 00E8 CALL R4 2 + 0x5C0C0800, // 00E9 MOVE R3 R4 + 0x7002001E, // 00EA JMP #010A + 0x6010000F, // 00EB GETGBL R4 G15 + 0x5C140600, // 00EC MOVE R5 R3 + 0xB81A3C00, // 00ED GETNGBL R6 K30 + 0x7C100400, // 00EE CALL R4 2 + 0x78120003, // 00EF JMPF R4 #00F4 + 0x8C10071F, // 00F0 GETMET R4 R3 K31 + 0x7C100200, // 00F1 CALL R4 1 + 0x5C0C0800, // 00F2 MOVE R3 R4 + 0x70020015, // 00F3 JMP #010A + 0x88100101, // 00F4 GETMBR R4 R0 K1 + 0x88140504, // 00F5 GETMBR R5 R2 K4 + 0x1C100805, // 00F6 EQ R4 R4 R5 + 0x78120008, // 00F7 JMPF R4 #0101 + 0xB8123C00, // 00F8 GETNGBL R4 K30 + 0x60140009, // 00F9 GETGBL R5 G9 + 0x5C180600, // 00FA MOVE R6 R3 + 0x7C140200, // 00FB CALL R5 1 + 0x7C100200, // 00FC CALL R4 1 + 0x8C10091F, // 00FD GETMET R4 R4 K31 + 0x7C100200, // 00FE CALL R4 1 + 0x5C0C0800, // 00FF MOVE R3 R4 + 0x70020008, // 0100 JMP #010A + 0xB8123C00, // 0101 GETNGBL R4 K30 + 0x8C100920, // 0102 GETMET R4 R4 K32 + 0x60180009, // 0103 GETGBL R6 G9 + 0x5C1C0600, // 0104 MOVE R7 R3 + 0x7C180200, // 0105 CALL R6 1 + 0x7C100400, // 0106 CALL R4 2 + 0x8C10091F, // 0107 GETMET R4 R4 K31 + 0x7C100200, // 0108 CALL R4 1 + 0x5C0C0800, // 0109 MOVE R3 R4 + 0x40100203, // 010A CONNECT R4 R1 R3 + 0x70020086, // 010B JMP #0193 + 0x880C0101, // 010C GETMBR R3 R0 K1 + 0x88100509, // 010D GETMBR R4 R2 K9 + 0x1C0C0604, // 010E EQ R3 R3 R4 + 0x740E0003, // 010F JMPT R3 #0114 + 0x880C0101, // 0110 GETMBR R3 R0 K1 + 0x8810050A, // 0111 GETMBR R4 R2 K10 + 0x1C0C0604, // 0112 EQ R3 R3 R4 + 0x780E0000, // 0113 JMPF R3 #0115 + 0x7002007D, // 0114 JMP #0193 + 0x880C0101, // 0115 GETMBR R3 R0 K1 + 0x88100521, // 0116 GETMBR R4 R2 K33 + 0x1C0C0604, // 0117 EQ R3 R3 R4 + 0x780E000D, // 0118 JMPF R3 #0127 + 0x600C000C, // 0119 GETGBL R3 G12 + 0x5C100200, // 011A MOVE R4 R1 + 0x7C0C0200, // 011B CALL R3 1 + 0x8C100319, // 011C GETMET R4 R1 K25 + 0x5818000E, // 011D LDCONST R6 K14 + 0x541E0003, // 011E LDINT R7 4 + 0x7C100600, // 011F CALL R4 3 + 0x8C100322, // 0120 GETMET R4 R1 K34 + 0x5C180600, // 0121 MOVE R6 R3 + 0x601C000A, // 0122 GETGBL R7 G10 + 0x88200103, // 0123 GETMBR R8 R0 K3 + 0x7C1C0200, // 0124 CALL R7 1 + 0x7C100600, // 0125 CALL R4 3 + 0x7002006B, // 0126 JMP #0193 + 0x880C0101, // 0127 GETMBR R3 R0 K1 + 0x88100523, // 0128 GETMBR R4 R2 K35 + 0x1C0C0604, // 0129 EQ R3 R3 R4 + 0x780E0001, // 012A JMPF R3 #012D + 0xB0064925, // 012B RAISE 1 K36 K37 + 0x70020065, // 012C JMP #0193 + 0x880C0101, // 012D GETMBR R3 R0 K1 + 0x88100514, // 012E GETMBR R4 R2 K20 + 0x1C0C0604, // 012F EQ R3 R3 R4 + 0x780E0015, // 0130 JMPF R3 #0147 + 0x600C000C, // 0131 GETGBL R3 G12 + 0x88100103, // 0132 GETMBR R4 R0 K3 + 0x7C0C0200, // 0133 CALL R3 1 + 0x541200FE, // 0134 LDINT R4 255 + 0x240C0604, // 0135 GT R3 R3 R4 + 0x780E0000, // 0136 JMPF R3 #0138 + 0xB0064926, // 0137 RAISE 1 K36 K38 + 0x8C0C0319, // 0138 GETMET R3 R1 K25 + 0x6014000C, // 0139 GETGBL R5 G12 + 0x88180103, // 013A GETMBR R6 R0 K3 + 0x7C140200, // 013B CALL R5 1 + 0x5818001A, // 013C LDCONST R6 K26 + 0x7C0C0600, // 013D CALL R3 3 + 0x600C0015, // 013E GETGBL R3 G21 + 0x7C0C0000, // 013F CALL R3 0 + 0x8C0C0727, // 0140 GETMET R3 R3 K39 + 0x60140008, // 0141 GETGBL R5 G8 + 0x88180103, // 0142 GETMBR R6 R0 K3 + 0x7C140200, // 0143 CALL R5 1 + 0x7C0C0400, // 0144 CALL R3 2 + 0x400C0203, // 0145 CONNECT R3 R1 R3 + 0x7002004B, // 0146 JMP #0193 + 0x880C0101, // 0147 GETMBR R3 R0 K1 + 0x88100516, // 0148 GETMBR R4 R2 K22 + 0x1C0C0604, // 0149 EQ R3 R3 R4 + 0x780E0015, // 014A JMPF R3 #0161 + 0x600C000C, // 014B GETGBL R3 G12 + 0x88100103, // 014C GETMBR R4 R0 K3 + 0x7C0C0200, // 014D CALL R3 1 + 0x5412FFFE, // 014E LDINT R4 65535 + 0x240C0604, // 014F GT R3 R3 R4 + 0x780E0000, // 0150 JMPF R3 #0152 + 0xB0064926, // 0151 RAISE 1 K36 K38 + 0x8C0C0319, // 0152 GETMET R3 R1 K25 + 0x6014000C, // 0153 GETGBL R5 G12 + 0x88180103, // 0154 GETMBR R6 R0 K3 + 0x7C140200, // 0155 CALL R5 1 + 0x5818001B, // 0156 LDCONST R6 K27 + 0x7C0C0600, // 0157 CALL R3 3 + 0x600C0015, // 0158 GETGBL R3 G21 + 0x7C0C0000, // 0159 CALL R3 0 + 0x8C0C0728, // 015A GETMET R3 R3 K40 + 0x60140008, // 015B GETGBL R5 G8 + 0x88180103, // 015C GETMBR R6 R0 K3 + 0x7C140200, // 015D CALL R5 1 + 0x7C0C0400, // 015E CALL R3 2 + 0x400C0203, // 015F CONNECT R3 R1 R3 + 0x70020031, // 0160 JMP #0193 + 0x880C0101, // 0161 GETMBR R3 R0 K1 + 0x88100510, // 0162 GETMBR R4 R2 K16 + 0x1C0C0604, // 0163 EQ R3 R3 R4 + 0x780E000F, // 0164 JMPF R3 #0175 + 0x600C000C, // 0165 GETGBL R3 G12 + 0x88100103, // 0166 GETMBR R4 R0 K3 + 0x7C0C0200, // 0167 CALL R3 1 + 0x541200FE, // 0168 LDINT R4 255 + 0x240C0604, // 0169 GT R3 R3 R4 + 0x780E0000, // 016A JMPF R3 #016C + 0xB0064929, // 016B RAISE 1 K36 K41 + 0x8C0C0319, // 016C GETMET R3 R1 K25 + 0x6014000C, // 016D GETGBL R5 G12 + 0x88180103, // 016E GETMBR R6 R0 K3 + 0x7C140200, // 016F CALL R5 1 + 0x5818001A, // 0170 LDCONST R6 K26 + 0x7C0C0600, // 0171 CALL R3 3 + 0x880C0103, // 0172 GETMBR R3 R0 K3 + 0x400C0203, // 0173 CONNECT R3 R1 R3 + 0x7002001D, // 0174 JMP #0193 + 0x880C0101, // 0175 GETMBR R3 R0 K1 + 0x88100512, // 0176 GETMBR R4 R2 K18 + 0x1C0C0604, // 0177 EQ R3 R3 R4 + 0x780E000F, // 0178 JMPF R3 #0189 + 0x600C000C, // 0179 GETGBL R3 G12 + 0x88100103, // 017A GETMBR R4 R0 K3 + 0x7C0C0200, // 017B CALL R3 1 + 0x5412FFFE, // 017C LDINT R4 65535 + 0x240C0604, // 017D GT R3 R3 R4 + 0x780E0000, // 017E JMPF R3 #0180 + 0xB0064929, // 017F RAISE 1 K36 K41 + 0x8C0C0319, // 0180 GETMET R3 R1 K25 + 0x6014000C, // 0181 GETGBL R5 G12 + 0x88180103, // 0182 GETMBR R6 R0 K3 + 0x7C140200, // 0183 CALL R5 1 + 0x5818001B, // 0184 LDCONST R6 K27 + 0x7C0C0600, // 0185 CALL R3 3 + 0x880C0103, // 0186 GETMBR R3 R0 K3 + 0x400C0203, // 0187 CONNECT R3 R1 R3 + 0x70020009, // 0188 JMP #0193 + 0x880C0101, // 0189 GETMBR R3 R0 K1 + 0x8810052A, // 018A GETMBR R4 R2 K42 + 0x1C0C0604, // 018B EQ R3 R3 R4 + 0x780E0000, // 018C JMPF R3 #018E + 0x70020004, // 018D JMP #0193 + 0x600C0008, // 018E GETGBL R3 G8 + 0x88100101, // 018F GETMBR R4 R0 K1 + 0x7C0C0200, // 0190 CALL R3 1 + 0x000E5603, // 0191 ADD R3 K43 R3 + 0xB0064803, // 0192 RAISE 1 K36 R3 + 0x80040200, // 0193 RET 1 R1 }) ) ); From 40fb8fa7df1107d3ed1561b1a9aa0f18d5aebf5b Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 22 Jun 2024 10:15:39 +0200 Subject: [PATCH 076/252] Fix Matter resumption final ack (#21673) --- .../src/embedded/Matter_Commissioning.be | 4 +- .../src/embedded/Matter_Message.be | 2 +- .../src/embedded/Matter_MessageHandler.be | 5 +- .../solidified_Matter_Commissioning.h | 1063 +++++++++-------- .../src/solidify/solidified_Matter_Message.h | 48 +- .../solidified_Matter_MessageHandler.h | 568 ++++----- 6 files changed, 857 insertions(+), 833 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be index 7330292ce..2e7f0e170 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be @@ -349,6 +349,7 @@ class Matter_Commisioning_Context # Check that it's a resumption if is_resumption # Resumption p.169 + log("MTR: Sigma1 Resumption", 3) var s1rk_salt = sigma1.initiatorRandom + sigma1.resumptionID var s1rk_info = bytes().fromstring("Sigma1_Resume") var s1rk = crypto.HKDF_SHA256().derive(session_resumption.shared_secret, s1rk_salt, s1rk_info, 16) @@ -696,7 +697,8 @@ class Matter_Commisioning_Context # placeholder, nothing to run for now def parse_StatusReport(msg) var session = msg.session - log("MTR: >Status "+msg.raw[msg.app_payload_idx..].tohex(), 3) + var status_msg = msg.raw[msg.app_payload_idx..].tohex() + log(f"MTR: >Status {status_msg}", (status_msg != "0000000000000000") ? 3 : 4) return false # we don't explicitly ack the message end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be index 38653625a..5af630497 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be @@ -215,7 +215,7 @@ class Matter_Frame raw.add(self.x_flags, 1) # opcode (mandatory) raw.add(self.opcode, 1) - raw.add(self.exchange_id & 0xFFFF, 2) + raw.add((self.exchange_id != nil) ? self.exchange_id & 0xFFFF : 0, 2) raw.add(self.protocol_id, 2) if self.x_flag_a raw.add(self.ack_message_counter, 4) end # finally payload diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be index adff5a375..e9a0bc40d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be @@ -50,6 +50,8 @@ class Matter_MessageHandler def send_simple_ack(frame, reliable) if frame.x_flag_r # nothing to respond, check if we need a standalone ack var resp = frame.build_standalone_ack(reliable) + # special case, the local_session_id is not the one from the session + resp.local_session_id = frame.local_session_id resp.encode_frame() if tasmota.loglevel(4) log(format("MTR: Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3) + log(format("MTR: >Received (%6i) %s from [%s]:%i", session.local_session_id, op_name, addr, port), 3) + # log(format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3) end else if tasmota.loglevel(4) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index 24421debc..ff7954af0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -12,7 +12,7 @@ extern const bclass be_class_Matter_Commisioning_Context; extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name */ be_nested_proto( - 6, /* nstack */ + 8, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -20,32 +20,40 @@ be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20), - /* K3 */ be_nested_str_weak(raw), - /* K4 */ be_nested_str_weak(app_payload_idx), - /* K5 */ be_const_int(2147483647), - /* K6 */ be_nested_str_weak(tohex), - /* K7 */ be_const_int(3), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(app_payload_idx), + /* K3 */ be_const_int(2147483647), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20_X25s), + /* K7 */ be_nested_str_weak(0000000000000000), + /* K8 */ be_const_int(3), }), be_str_weak(parse_StatusReport), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ + ( &(const binstruction[20]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x88100304, // 0002 GETMBR R4 R1 K4 - 0x40100905, // 0003 CONNECT R4 R4 K5 - 0x88140303, // 0004 GETMBR R5 R1 K3 - 0x94100A04, // 0005 GETIDX R4 R5 R4 - 0x8C100906, // 0006 GETMET R4 R4 K6 - 0x7C100200, // 0007 CALL R4 1 - 0x00120404, // 0008 ADD R4 K2 R4 - 0x58140007, // 0009 LDCONST R5 K7 - 0x7C0C0400, // 000A CALL R3 2 - 0x500C0000, // 000B LDBOOL R3 0 0 - 0x80040600, // 000C RET 1 R3 + 0x880C0302, // 0001 GETMBR R3 R1 K2 + 0x400C0703, // 0002 CONNECT R3 R3 K3 + 0x88100301, // 0003 GETMBR R4 R1 K1 + 0x940C0803, // 0004 GETIDX R3 R4 R3 + 0x8C0C0704, // 0005 GETMET R3 R3 K4 + 0x7C0C0200, // 0006 CALL R3 1 + 0xB8120A00, // 0007 GETNGBL R4 K5 + 0x60140018, // 0008 GETGBL R5 G24 + 0x58180006, // 0009 LDCONST R6 K6 + 0x5C1C0600, // 000A MOVE R7 R3 + 0x7C140400, // 000B CALL R5 2 + 0x20180707, // 000C NE R6 R3 K7 + 0x781A0001, // 000D JMPF R6 #0010 + 0x58180008, // 000E LDCONST R6 K8 + 0x70020000, // 000F JMP #0011 + 0x541A0003, // 0010 LDINT R6 4 + 0x7C100400, // 0011 CALL R4 2 + 0x50100000, // 0012 LDBOOL R4 0 0 + 0x80040800, // 0013 RET 1 R4 }) ) ); @@ -1374,7 +1382,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0, /* has sup protos */ &be_class_Matter_Commisioning_Context, 1, /* has constants */ - ( &(const bvalue[107]) { /* constants */ + ( &(const bvalue[108]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(session), /* K2 */ be_nested_str_weak(opcode), @@ -1401,91 +1409,92 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ /* K23 */ be_nested_str_weak(find_session_by_resumption_id), /* K24 */ be_nested_str_weak(_fabric), /* K25 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), - /* K26 */ be_nested_str_weak(initiatorRandom), - /* K27 */ be_nested_str_weak(fromstring), - /* K28 */ be_nested_str_weak(Sigma1_Resume), - /* K29 */ be_nested_str_weak(HKDF_SHA256), - /* K30 */ be_nested_str_weak(derive), - /* K31 */ be_nested_str_weak(shared_secret), - /* K32 */ be_nested_str_weak(NCASE_SigmaS1), - /* K33 */ be_const_int(2147483647), - /* K34 */ be_nested_str_weak(AES_CCM), - /* K35 */ be_nested_str_weak(decrypt), - /* K36 */ be_nested_str_weak(tag), - /* K37 */ be_nested_str_weak(_source_node_id), - /* K38 */ be_nested_str_weak(source_node_id), - /* K39 */ be_nested_str_weak(set_mode_CASE), - /* K40 */ be_nested_str_weak(__future_initiator_session_id), - /* K41 */ be_nested_str_weak(initiator_session_id), - /* K42 */ be_nested_str_weak(__future_local_session_id), - /* K43 */ be_nested_str_weak(gen_local_session_id), - /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K45 */ be_nested_str_weak(remote_ip), - /* K46 */ be_nested_str_weak(remote_port), - /* K47 */ be_nested_str_weak(resumption_id), - /* K48 */ be_nested_str_weak(random), - /* K49 */ be_nested_str_weak(Sigma2_Resume), - /* K50 */ be_nested_str_weak(NCASE_SigmaS2), - /* K51 */ be_nested_str_weak(Sigma2Resume), - /* K52 */ be_nested_str_weak(sigma2ResumeMIC), - /* K53 */ be_nested_str_weak(responderSessionID), - /* K54 */ be_nested_str_weak(SessionResumptionKeys), - /* K55 */ be_nested_str_weak(tasmota), - /* K56 */ be_nested_str_weak(rtc_utc), - /* K57 */ be_nested_str_weak(tlv2raw), - /* K58 */ be_nested_str_weak(__Msg1), - /* K59 */ be_nested_str_weak(build_response), - /* K60 */ be_nested_str_weak(encode_frame), - /* K61 */ be_nested_str_weak(responder), - /* K62 */ be_nested_str_weak(send_response_frame), - /* K63 */ be_nested_str_weak(close), - /* K64 */ be_nested_str_weak(set_keys), - /* K65 */ be_nested_str_weak(peer_node_id), - /* K66 */ be_nested_str_weak(_breadcrumb), - /* K67 */ be_nested_str_weak(counter_snd_next), - /* K68 */ be_nested_str_weak(set_persist), - /* K69 */ be_nested_str_weak(set_no_expiration), - /* K70 */ be_nested_str_weak(persist_to_fabric), - /* K71 */ be_nested_str_weak(save), - /* K72 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), - /* K73 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), - /* K74 */ be_nested_str_weak(find_fabric_by_destination_id), - /* K75 */ be_nested_str_weak(destinationId), - /* K76 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), - /* K77 */ be_nested_str_weak(__responder_priv), - /* K78 */ be_nested_str_weak(__responder_pub), - /* K79 */ be_nested_str_weak(EC_P256), - /* K80 */ be_nested_str_weak(public_key), - /* K81 */ be_nested_str_weak(shared_key), - /* K82 */ be_nested_str_weak(TLV), - /* K83 */ be_nested_str_weak(Matter_TLV_struct), - /* K84 */ be_nested_str_weak(add_TLV), - /* K85 */ be_nested_str_weak(B2), - /* K86 */ be_nested_str_weak(get_noc), - /* K87 */ be_nested_str_weak(get_icac), - /* K88 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K89 */ be_nested_str_weak(get_pk), - /* K90 */ be_nested_str_weak(Msg1), - /* K91 */ be_nested_str_weak(SHA256), - /* K92 */ be_nested_str_weak(update), - /* K93 */ be_nested_str_weak(out), - /* K94 */ be_nested_str_weak(S2K_Info), - /* K95 */ be_nested_str_weak(get_ipk_group_key), - /* K96 */ be_nested_str_weak(TBEData2_Nonce), - /* K97 */ be_nested_str_weak(encrypt), - /* K98 */ be_nested_str_weak(Sigma2), - /* K99 */ be_nested_str_weak(responderRandom), - /* K100 */ be_nested_str_weak(responderSessionId), - /* K101 */ be_nested_str_weak(responderEphPubKey), - /* K102 */ be_nested_str_weak(encrypted2), - /* K103 */ be_nested_str_weak(__Msg2), - /* K104 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K105 */ be_nested_str_weak(_ip), - /* K106 */ be_nested_str_weak(_port), + /* K26 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption), + /* K27 */ be_nested_str_weak(initiatorRandom), + /* K28 */ be_nested_str_weak(fromstring), + /* K29 */ be_nested_str_weak(Sigma1_Resume), + /* K30 */ be_nested_str_weak(HKDF_SHA256), + /* K31 */ be_nested_str_weak(derive), + /* K32 */ be_nested_str_weak(shared_secret), + /* K33 */ be_nested_str_weak(NCASE_SigmaS1), + /* K34 */ be_const_int(2147483647), + /* K35 */ be_nested_str_weak(AES_CCM), + /* K36 */ be_nested_str_weak(decrypt), + /* K37 */ be_nested_str_weak(tag), + /* K38 */ be_nested_str_weak(_source_node_id), + /* K39 */ be_nested_str_weak(source_node_id), + /* K40 */ be_nested_str_weak(set_mode_CASE), + /* K41 */ be_nested_str_weak(__future_initiator_session_id), + /* K42 */ be_nested_str_weak(initiator_session_id), + /* K43 */ be_nested_str_weak(__future_local_session_id), + /* K44 */ be_nested_str_weak(gen_local_session_id), + /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K46 */ be_nested_str_weak(remote_ip), + /* K47 */ be_nested_str_weak(remote_port), + /* K48 */ be_nested_str_weak(resumption_id), + /* K49 */ be_nested_str_weak(random), + /* K50 */ be_nested_str_weak(Sigma2_Resume), + /* K51 */ be_nested_str_weak(NCASE_SigmaS2), + /* K52 */ be_nested_str_weak(Sigma2Resume), + /* K53 */ be_nested_str_weak(sigma2ResumeMIC), + /* K54 */ be_nested_str_weak(responderSessionID), + /* K55 */ be_nested_str_weak(SessionResumptionKeys), + /* K56 */ be_nested_str_weak(tasmota), + /* K57 */ be_nested_str_weak(rtc_utc), + /* K58 */ be_nested_str_weak(tlv2raw), + /* K59 */ be_nested_str_weak(__Msg1), + /* K60 */ be_nested_str_weak(build_response), + /* K61 */ be_nested_str_weak(encode_frame), + /* K62 */ be_nested_str_weak(responder), + /* K63 */ be_nested_str_weak(send_response_frame), + /* K64 */ be_nested_str_weak(close), + /* K65 */ be_nested_str_weak(set_keys), + /* K66 */ be_nested_str_weak(peer_node_id), + /* K67 */ be_nested_str_weak(_breadcrumb), + /* K68 */ be_nested_str_weak(counter_snd_next), + /* K69 */ be_nested_str_weak(set_persist), + /* K70 */ be_nested_str_weak(set_no_expiration), + /* K71 */ be_nested_str_weak(persist_to_fabric), + /* K72 */ be_nested_str_weak(save), + /* K73 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), + /* K74 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), + /* K75 */ be_nested_str_weak(find_fabric_by_destination_id), + /* K76 */ be_nested_str_weak(destinationId), + /* K77 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), + /* K78 */ be_nested_str_weak(__responder_priv), + /* K79 */ be_nested_str_weak(__responder_pub), + /* K80 */ be_nested_str_weak(EC_P256), + /* K81 */ be_nested_str_weak(public_key), + /* K82 */ be_nested_str_weak(shared_key), + /* K83 */ be_nested_str_weak(TLV), + /* K84 */ be_nested_str_weak(Matter_TLV_struct), + /* K85 */ be_nested_str_weak(add_TLV), + /* K86 */ be_nested_str_weak(B2), + /* K87 */ be_nested_str_weak(get_noc), + /* K88 */ be_nested_str_weak(get_icac), + /* K89 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K90 */ be_nested_str_weak(get_pk), + /* K91 */ be_nested_str_weak(Msg1), + /* K92 */ be_nested_str_weak(SHA256), + /* K93 */ be_nested_str_weak(update), + /* K94 */ be_nested_str_weak(out), + /* K95 */ be_nested_str_weak(S2K_Info), + /* K96 */ be_nested_str_weak(get_ipk_group_key), + /* K97 */ be_nested_str_weak(TBEData2_Nonce), + /* K98 */ be_nested_str_weak(encrypt), + /* K99 */ be_nested_str_weak(Sigma2), + /* K100 */ be_nested_str_weak(responderRandom), + /* K101 */ be_nested_str_weak(responderSessionId), + /* K102 */ be_nested_str_weak(responderEphPubKey), + /* K103 */ be_nested_str_weak(encrypted2), + /* K104 */ be_nested_str_weak(__Msg2), + /* K105 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K106 */ be_nested_str_weak(_ip), + /* K107 */ be_nested_str_weak(_port), }), be_str_weak(parse_Sigma1), &be_const_str_solidified, - ( &(const binstruction[493]) { /* code */ + ( &(const binstruction[497]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -1553,432 +1562,436 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x58240008, // 0040 LDCONST R9 K8 0x7C1C0400, // 0041 CALL R7 2 0x50140000, // 0042 LDBOOL R5 0 0 - 0x781600BF, // 0043 JMPF R5 #0104 - 0x881C091A, // 0044 GETMBR R7 R4 K26 - 0x88200913, // 0045 GETMBR R8 R4 K19 - 0x001C0E08, // 0046 ADD R7 R7 R8 - 0x60200015, // 0047 GETGBL R8 G21 - 0x7C200000, // 0048 CALL R8 0 - 0x8C20111B, // 0049 GETMET R8 R8 K27 - 0x5828001C, // 004A LDCONST R10 K28 - 0x7C200400, // 004B CALL R8 2 - 0x8C24051D, // 004C GETMET R9 R2 K29 - 0x7C240200, // 004D CALL R9 1 - 0x8C24131E, // 004E GETMET R9 R9 K30 - 0x882C0D1F, // 004F GETMBR R11 R6 K31 - 0x5C300E00, // 0050 MOVE R12 R7 - 0x5C341000, // 0051 MOVE R13 R8 - 0x543A000F, // 0052 LDINT R14 16 - 0x7C240A00, // 0053 CALL R9 5 - 0x60280015, // 0054 GETGBL R10 G21 - 0x7C280000, // 0055 CALL R10 0 - 0x8C28151B, // 0056 GETMET R10 R10 K27 - 0x58300020, // 0057 LDCONST R12 K32 - 0x7C280400, // 0058 CALL R10 2 - 0x542DFFEE, // 0059 LDINT R11 -17 - 0x402E080B, // 005A CONNECT R11 K4 R11 - 0x88300914, // 005B GETMBR R12 R4 K20 - 0x942C180B, // 005C GETIDX R11 R12 R11 - 0x5435FFEF, // 005D LDINT R13 -16 - 0x40341B21, // 005E CONNECT R13 R13 K33 - 0x88380914, // 005F GETMBR R14 R4 K20 - 0x94301C0D, // 0060 GETIDX R12 R14 R13 - 0x8C3C0522, // 0061 GETMET R15 R2 K34 - 0x5C441200, // 0062 MOVE R17 R9 - 0x5C481400, // 0063 MOVE R18 R10 - 0x604C0015, // 0064 GETGBL R19 G21 - 0x7C4C0000, // 0065 CALL R19 0 - 0x6050000C, // 0066 GETGBL R20 G12 - 0x5C541600, // 0067 MOVE R21 R11 - 0x7C500200, // 0068 CALL R20 1 - 0x5456000F, // 0069 LDINT R21 16 - 0x7C3C0C00, // 006A CALL R15 6 - 0x5C341E00, // 006B MOVE R13 R15 - 0x8C3C1B23, // 006C GETMET R15 R13 K35 - 0x5C441600, // 006D MOVE R17 R11 - 0x7C3C0400, // 006E CALL R15 2 - 0x5C381E00, // 006F MOVE R14 R15 + 0x781600C3, // 0043 JMPF R5 #0108 + 0xB81E0C00, // 0044 GETNGBL R7 K6 + 0x5820001A, // 0045 LDCONST R8 K26 + 0x58240008, // 0046 LDCONST R9 K8 + 0x7C1C0400, // 0047 CALL R7 2 + 0x881C091B, // 0048 GETMBR R7 R4 K27 + 0x88200913, // 0049 GETMBR R8 R4 K19 + 0x001C0E08, // 004A ADD R7 R7 R8 + 0x60200015, // 004B GETGBL R8 G21 + 0x7C200000, // 004C CALL R8 0 + 0x8C20111C, // 004D GETMET R8 R8 K28 + 0x5828001D, // 004E LDCONST R10 K29 + 0x7C200400, // 004F CALL R8 2 + 0x8C24051E, // 0050 GETMET R9 R2 K30 + 0x7C240200, // 0051 CALL R9 1 + 0x8C24131F, // 0052 GETMET R9 R9 K31 + 0x882C0D20, // 0053 GETMBR R11 R6 K32 + 0x5C300E00, // 0054 MOVE R12 R7 + 0x5C341000, // 0055 MOVE R13 R8 + 0x543A000F, // 0056 LDINT R14 16 + 0x7C240A00, // 0057 CALL R9 5 + 0x60280015, // 0058 GETGBL R10 G21 + 0x7C280000, // 0059 CALL R10 0 + 0x8C28151C, // 005A GETMET R10 R10 K28 + 0x58300021, // 005B LDCONST R12 K33 + 0x7C280400, // 005C CALL R10 2 + 0x542DFFEE, // 005D LDINT R11 -17 + 0x402E080B, // 005E CONNECT R11 K4 R11 + 0x88300914, // 005F GETMBR R12 R4 K20 + 0x942C180B, // 0060 GETIDX R11 R12 R11 + 0x5435FFEF, // 0061 LDINT R13 -16 + 0x40341B22, // 0062 CONNECT R13 R13 K34 + 0x88380914, // 0063 GETMBR R14 R4 K20 + 0x94301C0D, // 0064 GETIDX R12 R14 R13 + 0x8C3C0523, // 0065 GETMET R15 R2 K35 + 0x5C441200, // 0066 MOVE R17 R9 + 0x5C481400, // 0067 MOVE R18 R10 + 0x604C0015, // 0068 GETGBL R19 G21 + 0x7C4C0000, // 0069 CALL R19 0 + 0x6050000C, // 006A GETGBL R20 G12 + 0x5C541600, // 006B MOVE R21 R11 + 0x7C500200, // 006C CALL R20 1 + 0x5456000F, // 006D LDINT R21 16 + 0x7C3C0C00, // 006E CALL R15 6 + 0x5C341E00, // 006F MOVE R13 R15 0x8C3C1B24, // 0070 GETMET R15 R13 K36 - 0x7C3C0200, // 0071 CALL R15 1 - 0x1C40180F, // 0072 EQ R16 R12 R15 - 0x7842008A, // 0073 JMPF R16 #00FF - 0x88400D18, // 0074 GETMBR R16 R6 K24 - 0x900E3010, // 0075 SETMBR R3 K24 R16 - 0x88400326, // 0076 GETMBR R16 R1 K38 - 0x900E4A10, // 0077 SETMBR R3 K37 R16 - 0x8C400727, // 0078 GETMET R16 R3 K39 - 0x7C400200, // 0079 CALL R16 1 - 0x88400929, // 007A GETMBR R16 R4 K41 - 0x900E5010, // 007B SETMBR R3 K40 R16 - 0x88400115, // 007C GETMBR R16 R0 K21 - 0x88402116, // 007D GETMBR R16 R16 K22 - 0x8C40212B, // 007E GETMET R16 R16 K43 - 0x7C400200, // 007F CALL R16 1 - 0x900E5410, // 0080 SETMBR R3 K42 R16 - 0xB8420C00, // 0081 GETNGBL R16 K6 - 0x60440018, // 0082 GETGBL R17 G24 - 0x5848002C, // 0083 LDCONST R18 K44 - 0x884C072A, // 0084 GETMBR R19 R3 K42 - 0x8850032D, // 0085 GETMBR R20 R1 K45 - 0x8854032E, // 0086 GETMBR R21 R1 K46 - 0x7C440800, // 0087 CALL R17 4 - 0x58480008, // 0088 LDCONST R18 K8 - 0x7C400400, // 0089 CALL R16 2 - 0x88400D1F, // 008A GETMBR R16 R6 K31 - 0x900E3E10, // 008B SETMBR R3 K31 R16 - 0x8C400530, // 008C GETMET R16 R2 K48 - 0x544A000F, // 008D LDINT R18 16 - 0x7C400400, // 008E CALL R16 2 - 0x900E5E10, // 008F SETMBR R3 K47 R16 - 0x60400015, // 0090 GETGBL R16 G21 - 0x7C400000, // 0091 CALL R16 0 - 0x8C40211B, // 0092 GETMET R16 R16 K27 - 0x58480031, // 0093 LDCONST R18 K49 - 0x7C400400, // 0094 CALL R16 2 - 0x8844091A, // 0095 GETMBR R17 R4 K26 - 0x8848072F, // 0096 GETMBR R18 R3 K47 - 0x00442212, // 0097 ADD R17 R17 R18 - 0x8C48051D, // 0098 GETMET R18 R2 K29 - 0x7C480200, // 0099 CALL R18 1 - 0x8C48251E, // 009A GETMET R18 R18 K30 - 0x8850071F, // 009B GETMBR R20 R3 K31 - 0x5C542200, // 009C MOVE R21 R17 - 0x5C582000, // 009D MOVE R22 R16 - 0x545E000F, // 009E LDINT R23 16 - 0x7C480A00, // 009F CALL R18 5 - 0x8C4C0522, // 00A0 GETMET R19 R2 K34 - 0x5C542400, // 00A1 MOVE R21 R18 - 0x60580015, // 00A2 GETGBL R22 G21 - 0x7C580000, // 00A3 CALL R22 0 - 0x8C582D1B, // 00A4 GETMET R22 R22 K27 - 0x58600032, // 00A5 LDCONST R24 K50 - 0x7C580400, // 00A6 CALL R22 2 - 0x605C0015, // 00A7 GETGBL R23 G21 - 0x7C5C0000, // 00A8 CALL R23 0 - 0x58600004, // 00A9 LDCONST R24 K4 - 0x5466000F, // 00AA LDINT R25 16 - 0x7C4C0C00, // 00AB CALL R19 6 - 0x8C502724, // 00AC GETMET R20 R19 K36 - 0x7C500200, // 00AD CALL R20 1 - 0xB8561800, // 00AE GETNGBL R21 K12 - 0x8C542B33, // 00AF GETMET R21 R21 K51 - 0x7C540200, // 00B0 CALL R21 1 - 0x8858072F, // 00B1 GETMBR R22 R3 K47 - 0x90562616, // 00B2 SETMBR R21 K19 R22 - 0x90566814, // 00B3 SETMBR R21 K52 R20 - 0x8858072A, // 00B4 GETMBR R22 R3 K42 - 0x90566A16, // 00B5 SETMBR R21 K53 R22 - 0x8858091A, // 00B6 GETMBR R22 R4 K26 - 0x885C0D2F, // 00B7 GETMBR R23 R6 K47 - 0x00582C17, // 00B8 ADD R22 R22 R23 - 0x8C5C051D, // 00B9 GETMET R23 R2 K29 - 0x7C5C0200, // 00BA CALL R23 1 - 0x8C5C2F1E, // 00BB GETMET R23 R23 K30 - 0x8864071F, // 00BC GETMBR R25 R3 K31 - 0x5C682C00, // 00BD MOVE R26 R22 - 0x606C0015, // 00BE GETGBL R27 G21 - 0x7C6C0000, // 00BF CALL R27 0 - 0x8C6C371B, // 00C0 GETMET R27 R27 K27 - 0x58740036, // 00C1 LDCONST R29 K54 - 0x7C6C0400, // 00C2 CALL R27 2 - 0x5472002F, // 00C3 LDINT R28 48 - 0x7C5C0A00, // 00C4 CALL R23 5 - 0x5462000E, // 00C5 LDINT R24 15 - 0x40620818, // 00C6 CONNECT R24 K4 R24 - 0x94602E18, // 00C7 GETIDX R24 R23 R24 - 0x5466000F, // 00C8 LDINT R25 16 - 0x546A001E, // 00C9 LDINT R26 31 - 0x4064321A, // 00CA CONNECT R25 R25 R26 - 0x94642E19, // 00CB GETIDX R25 R23 R25 - 0x546A001F, // 00CC LDINT R26 32 - 0x546E002E, // 00CD LDINT R27 47 - 0x4068341B, // 00CE CONNECT R26 R26 R27 - 0x94682E1A, // 00CF GETIDX R26 R23 R26 - 0xB86E6E00, // 00D0 GETNGBL R27 K55 - 0x8C6C3738, // 00D1 GETMET R27 R27 K56 - 0x7C6C0200, // 00D2 CALL R27 1 - 0x8C702B39, // 00D3 GETMET R28 R21 K57 - 0x7C700200, // 00D4 CALL R28 1 - 0x4C740000, // 00D5 LDNIL R29 - 0x900E741D, // 00D6 SETMBR R3 K58 R29 - 0x8C74033B, // 00D7 GETMET R29 R1 K59 - 0x547E0032, // 00D8 LDINT R31 51 - 0x50800200, // 00D9 LDBOOL R32 1 0 - 0x7C740600, // 00DA CALL R29 3 - 0x8C783B3C, // 00DB GETMET R30 R29 K60 - 0x5C803800, // 00DC MOVE R32 R28 - 0x7C780400, // 00DD CALL R30 2 - 0x887C013D, // 00DE GETMBR R31 R0 K61 - 0x8C7C3F3E, // 00DF GETMET R31 R31 K62 - 0x5C843A00, // 00E0 MOVE R33 R29 - 0x7C7C0400, // 00E1 CALL R31 2 - 0x8C7C073F, // 00E2 GETMET R31 R3 K63 - 0x7C7C0200, // 00E3 CALL R31 1 - 0x8C7C0740, // 00E4 GETMET R31 R3 K64 - 0x5C843000, // 00E5 MOVE R33 R24 - 0x5C883200, // 00E6 MOVE R34 R25 - 0x5C8C3400, // 00E7 MOVE R35 R26 - 0x5C903600, // 00E8 MOVE R36 R27 - 0x7C7C0A00, // 00E9 CALL R31 5 - 0x887C0D41, // 00EA GETMBR R31 R6 K65 - 0x900E821F, // 00EB SETMBR R3 K65 R31 - 0x900E8504, // 00EC SETMBR R3 K66 K4 - 0x8C7C0743, // 00ED GETMET R31 R3 K67 - 0x7C7C0200, // 00EE CALL R31 1 - 0x8C7C0744, // 00EF GETMET R31 R3 K68 - 0x50840200, // 00F0 LDBOOL R33 1 0 - 0x7C7C0400, // 00F1 CALL R31 2 - 0x8C7C0745, // 00F2 GETMET R31 R3 K69 - 0x7C7C0200, // 00F3 CALL R31 1 - 0x8C7C0746, // 00F4 GETMET R31 R3 K70 - 0x7C7C0200, // 00F5 CALL R31 1 - 0x8C7C0747, // 00F6 GETMET R31 R3 K71 + 0x5C441600, // 0071 MOVE R17 R11 + 0x7C3C0400, // 0072 CALL R15 2 + 0x5C381E00, // 0073 MOVE R14 R15 + 0x8C3C1B25, // 0074 GETMET R15 R13 K37 + 0x7C3C0200, // 0075 CALL R15 1 + 0x1C40180F, // 0076 EQ R16 R12 R15 + 0x7842008A, // 0077 JMPF R16 #0103 + 0x88400D18, // 0078 GETMBR R16 R6 K24 + 0x900E3010, // 0079 SETMBR R3 K24 R16 + 0x88400327, // 007A GETMBR R16 R1 K39 + 0x900E4C10, // 007B SETMBR R3 K38 R16 + 0x8C400728, // 007C GETMET R16 R3 K40 + 0x7C400200, // 007D CALL R16 1 + 0x8840092A, // 007E GETMBR R16 R4 K42 + 0x900E5210, // 007F SETMBR R3 K41 R16 + 0x88400115, // 0080 GETMBR R16 R0 K21 + 0x88402116, // 0081 GETMBR R16 R16 K22 + 0x8C40212C, // 0082 GETMET R16 R16 K44 + 0x7C400200, // 0083 CALL R16 1 + 0x900E5610, // 0084 SETMBR R3 K43 R16 + 0xB8420C00, // 0085 GETNGBL R16 K6 + 0x60440018, // 0086 GETGBL R17 G24 + 0x5848002D, // 0087 LDCONST R18 K45 + 0x884C072B, // 0088 GETMBR R19 R3 K43 + 0x8850032E, // 0089 GETMBR R20 R1 K46 + 0x8854032F, // 008A GETMBR R21 R1 K47 + 0x7C440800, // 008B CALL R17 4 + 0x58480008, // 008C LDCONST R18 K8 + 0x7C400400, // 008D CALL R16 2 + 0x88400D20, // 008E GETMBR R16 R6 K32 + 0x900E4010, // 008F SETMBR R3 K32 R16 + 0x8C400531, // 0090 GETMET R16 R2 K49 + 0x544A000F, // 0091 LDINT R18 16 + 0x7C400400, // 0092 CALL R16 2 + 0x900E6010, // 0093 SETMBR R3 K48 R16 + 0x60400015, // 0094 GETGBL R16 G21 + 0x7C400000, // 0095 CALL R16 0 + 0x8C40211C, // 0096 GETMET R16 R16 K28 + 0x58480032, // 0097 LDCONST R18 K50 + 0x7C400400, // 0098 CALL R16 2 + 0x8844091B, // 0099 GETMBR R17 R4 K27 + 0x88480730, // 009A GETMBR R18 R3 K48 + 0x00442212, // 009B ADD R17 R17 R18 + 0x8C48051E, // 009C GETMET R18 R2 K30 + 0x7C480200, // 009D CALL R18 1 + 0x8C48251F, // 009E GETMET R18 R18 K31 + 0x88500720, // 009F GETMBR R20 R3 K32 + 0x5C542200, // 00A0 MOVE R21 R17 + 0x5C582000, // 00A1 MOVE R22 R16 + 0x545E000F, // 00A2 LDINT R23 16 + 0x7C480A00, // 00A3 CALL R18 5 + 0x8C4C0523, // 00A4 GETMET R19 R2 K35 + 0x5C542400, // 00A5 MOVE R21 R18 + 0x60580015, // 00A6 GETGBL R22 G21 + 0x7C580000, // 00A7 CALL R22 0 + 0x8C582D1C, // 00A8 GETMET R22 R22 K28 + 0x58600033, // 00A9 LDCONST R24 K51 + 0x7C580400, // 00AA CALL R22 2 + 0x605C0015, // 00AB GETGBL R23 G21 + 0x7C5C0000, // 00AC CALL R23 0 + 0x58600004, // 00AD LDCONST R24 K4 + 0x5466000F, // 00AE LDINT R25 16 + 0x7C4C0C00, // 00AF CALL R19 6 + 0x8C502725, // 00B0 GETMET R20 R19 K37 + 0x7C500200, // 00B1 CALL R20 1 + 0xB8561800, // 00B2 GETNGBL R21 K12 + 0x8C542B34, // 00B3 GETMET R21 R21 K52 + 0x7C540200, // 00B4 CALL R21 1 + 0x88580730, // 00B5 GETMBR R22 R3 K48 + 0x90562616, // 00B6 SETMBR R21 K19 R22 + 0x90566A14, // 00B7 SETMBR R21 K53 R20 + 0x8858072B, // 00B8 GETMBR R22 R3 K43 + 0x90566C16, // 00B9 SETMBR R21 K54 R22 + 0x8858091B, // 00BA GETMBR R22 R4 K27 + 0x885C0D30, // 00BB GETMBR R23 R6 K48 + 0x00582C17, // 00BC ADD R22 R22 R23 + 0x8C5C051E, // 00BD GETMET R23 R2 K30 + 0x7C5C0200, // 00BE CALL R23 1 + 0x8C5C2F1F, // 00BF GETMET R23 R23 K31 + 0x88640720, // 00C0 GETMBR R25 R3 K32 + 0x5C682C00, // 00C1 MOVE R26 R22 + 0x606C0015, // 00C2 GETGBL R27 G21 + 0x7C6C0000, // 00C3 CALL R27 0 + 0x8C6C371C, // 00C4 GETMET R27 R27 K28 + 0x58740037, // 00C5 LDCONST R29 K55 + 0x7C6C0400, // 00C6 CALL R27 2 + 0x5472002F, // 00C7 LDINT R28 48 + 0x7C5C0A00, // 00C8 CALL R23 5 + 0x5462000E, // 00C9 LDINT R24 15 + 0x40620818, // 00CA CONNECT R24 K4 R24 + 0x94602E18, // 00CB GETIDX R24 R23 R24 + 0x5466000F, // 00CC LDINT R25 16 + 0x546A001E, // 00CD LDINT R26 31 + 0x4064321A, // 00CE CONNECT R25 R25 R26 + 0x94642E19, // 00CF GETIDX R25 R23 R25 + 0x546A001F, // 00D0 LDINT R26 32 + 0x546E002E, // 00D1 LDINT R27 47 + 0x4068341B, // 00D2 CONNECT R26 R26 R27 + 0x94682E1A, // 00D3 GETIDX R26 R23 R26 + 0xB86E7000, // 00D4 GETNGBL R27 K56 + 0x8C6C3739, // 00D5 GETMET R27 R27 K57 + 0x7C6C0200, // 00D6 CALL R27 1 + 0x8C702B3A, // 00D7 GETMET R28 R21 K58 + 0x7C700200, // 00D8 CALL R28 1 + 0x4C740000, // 00D9 LDNIL R29 + 0x900E761D, // 00DA SETMBR R3 K59 R29 + 0x8C74033C, // 00DB GETMET R29 R1 K60 + 0x547E0032, // 00DC LDINT R31 51 + 0x50800200, // 00DD LDBOOL R32 1 0 + 0x7C740600, // 00DE CALL R29 3 + 0x8C783B3D, // 00DF GETMET R30 R29 K61 + 0x5C803800, // 00E0 MOVE R32 R28 + 0x7C780400, // 00E1 CALL R30 2 + 0x887C013E, // 00E2 GETMBR R31 R0 K62 + 0x8C7C3F3F, // 00E3 GETMET R31 R31 K63 + 0x5C843A00, // 00E4 MOVE R33 R29 + 0x7C7C0400, // 00E5 CALL R31 2 + 0x8C7C0740, // 00E6 GETMET R31 R3 K64 + 0x7C7C0200, // 00E7 CALL R31 1 + 0x8C7C0741, // 00E8 GETMET R31 R3 K65 + 0x5C843000, // 00E9 MOVE R33 R24 + 0x5C883200, // 00EA MOVE R34 R25 + 0x5C8C3400, // 00EB MOVE R35 R26 + 0x5C903600, // 00EC MOVE R36 R27 + 0x7C7C0A00, // 00ED CALL R31 5 + 0x887C0D42, // 00EE GETMBR R31 R6 K66 + 0x900E841F, // 00EF SETMBR R3 K66 R31 + 0x900E8704, // 00F0 SETMBR R3 K67 K4 + 0x8C7C0744, // 00F1 GETMET R31 R3 K68 + 0x7C7C0200, // 00F2 CALL R31 1 + 0x8C7C0745, // 00F3 GETMET R31 R3 K69 + 0x50840200, // 00F4 LDBOOL R33 1 0 + 0x7C7C0400, // 00F5 CALL R31 2 + 0x8C7C0746, // 00F6 GETMET R31 R3 K70 0x7C7C0200, // 00F7 CALL R31 1 - 0xB87E0C00, // 00F8 GETNGBL R31 K6 - 0x58800048, // 00F9 LDCONST R32 K72 - 0x58840008, // 00FA LDCONST R33 K8 - 0x7C7C0400, // 00FB CALL R31 2 - 0x507C0200, // 00FC LDBOOL R31 1 0 - 0x80043E00, // 00FD RET 1 R31 - 0x70020004, // 00FE JMP #0104 - 0xB8420C00, // 00FF GETNGBL R16 K6 - 0x58440049, // 0100 LDCONST R17 K73 - 0x58480008, // 0101 LDCONST R18 K8 - 0x7C400400, // 0102 CALL R16 2 - 0x50140000, // 0103 LDBOOL R5 0 0 - 0x5C1C0A00, // 0104 MOVE R7 R5 - 0x741E00E4, // 0105 JMPT R7 #01EB - 0x8C1C014A, // 0106 GETMET R7 R0 K74 - 0x8824094B, // 0107 GETMBR R9 R4 K75 - 0x8828091A, // 0108 GETMBR R10 R4 K26 - 0x7C1C0600, // 0109 CALL R7 3 - 0x900E3007, // 010A SETMBR R3 K24 R7 - 0x4C200000, // 010B LDNIL R8 - 0x1C200608, // 010C EQ R8 R3 R8 - 0x74220003, // 010D JMPT R8 #0112 - 0x88200718, // 010E GETMBR R8 R3 K24 - 0x4C240000, // 010F LDNIL R9 - 0x1C201009, // 0110 EQ R8 R8 R9 - 0x7822000C, // 0111 JMPF R8 #011F - 0xB8220C00, // 0112 GETNGBL R8 K6 - 0x5824004C, // 0113 LDCONST R9 K76 - 0x58280008, // 0114 LDCONST R10 K8 - 0x7C200400, // 0115 CALL R8 2 - 0x8C200109, // 0116 GETMET R8 R0 K9 - 0x5C280200, // 0117 MOVE R10 R1 - 0x582C000A, // 0118 LDCONST R11 K10 - 0x58300004, // 0119 LDCONST R12 K4 - 0x5834000A, // 011A LDCONST R13 K10 - 0x50380000, // 011B LDBOOL R14 0 0 - 0x7C200C00, // 011C CALL R8 6 - 0x50200000, // 011D LDBOOL R8 0 0 - 0x80041000, // 011E RET 1 R8 - 0x88200326, // 011F GETMBR R8 R1 K38 - 0x900E4A08, // 0120 SETMBR R3 K37 R8 - 0x8C200727, // 0121 GETMET R8 R3 K39 - 0x7C200200, // 0122 CALL R8 1 - 0x88200929, // 0123 GETMBR R8 R4 K41 - 0x900E5008, // 0124 SETMBR R3 K40 R8 - 0x88200115, // 0125 GETMBR R8 R0 K21 - 0x88201116, // 0126 GETMBR R8 R8 K22 - 0x8C20112B, // 0127 GETMET R8 R8 K43 - 0x7C200200, // 0128 CALL R8 1 - 0x900E5408, // 0129 SETMBR R3 K42 R8 - 0xB8220C00, // 012A GETNGBL R8 K6 - 0x60240018, // 012B GETGBL R9 G24 - 0x5828002C, // 012C LDCONST R10 K44 - 0x882C072A, // 012D GETMBR R11 R3 K42 - 0x8830032D, // 012E GETMBR R12 R1 K45 - 0x8834032E, // 012F GETMBR R13 R1 K46 - 0x7C240800, // 0130 CALL R9 4 - 0x58280008, // 0131 LDCONST R10 K8 - 0x7C200400, // 0132 CALL R8 2 - 0x8C200530, // 0133 GETMET R8 R2 K48 - 0x542A000F, // 0134 LDINT R10 16 - 0x7C200400, // 0135 CALL R8 2 - 0x900E5E08, // 0136 SETMBR R3 K47 R8 - 0x8C200530, // 0137 GETMET R8 R2 K48 - 0x542A001F, // 0138 LDINT R10 32 + 0x8C7C0747, // 00F8 GETMET R31 R3 K71 + 0x7C7C0200, // 00F9 CALL R31 1 + 0x8C7C0748, // 00FA GETMET R31 R3 K72 + 0x7C7C0200, // 00FB CALL R31 1 + 0xB87E0C00, // 00FC GETNGBL R31 K6 + 0x58800049, // 00FD LDCONST R32 K73 + 0x58840008, // 00FE LDCONST R33 K8 + 0x7C7C0400, // 00FF CALL R31 2 + 0x507C0200, // 0100 LDBOOL R31 1 0 + 0x80043E00, // 0101 RET 1 R31 + 0x70020004, // 0102 JMP #0108 + 0xB8420C00, // 0103 GETNGBL R16 K6 + 0x5844004A, // 0104 LDCONST R17 K74 + 0x58480008, // 0105 LDCONST R18 K8 + 0x7C400400, // 0106 CALL R16 2 + 0x50140000, // 0107 LDBOOL R5 0 0 + 0x5C1C0A00, // 0108 MOVE R7 R5 + 0x741E00E4, // 0109 JMPT R7 #01EF + 0x8C1C014B, // 010A GETMET R7 R0 K75 + 0x8824094C, // 010B GETMBR R9 R4 K76 + 0x8828091B, // 010C GETMBR R10 R4 K27 + 0x7C1C0600, // 010D CALL R7 3 + 0x900E3007, // 010E SETMBR R3 K24 R7 + 0x4C200000, // 010F LDNIL R8 + 0x1C200608, // 0110 EQ R8 R3 R8 + 0x74220003, // 0111 JMPT R8 #0116 + 0x88200718, // 0112 GETMBR R8 R3 K24 + 0x4C240000, // 0113 LDNIL R9 + 0x1C201009, // 0114 EQ R8 R8 R9 + 0x7822000C, // 0115 JMPF R8 #0123 + 0xB8220C00, // 0116 GETNGBL R8 K6 + 0x5824004D, // 0117 LDCONST R9 K77 + 0x58280008, // 0118 LDCONST R10 K8 + 0x7C200400, // 0119 CALL R8 2 + 0x8C200109, // 011A GETMET R8 R0 K9 + 0x5C280200, // 011B MOVE R10 R1 + 0x582C000A, // 011C LDCONST R11 K10 + 0x58300004, // 011D LDCONST R12 K4 + 0x5834000A, // 011E LDCONST R13 K10 + 0x50380000, // 011F LDBOOL R14 0 0 + 0x7C200C00, // 0120 CALL R8 6 + 0x50200000, // 0121 LDBOOL R8 0 0 + 0x80041000, // 0122 RET 1 R8 + 0x88200327, // 0123 GETMBR R8 R1 K39 + 0x900E4C08, // 0124 SETMBR R3 K38 R8 + 0x8C200728, // 0125 GETMET R8 R3 K40 + 0x7C200200, // 0126 CALL R8 1 + 0x8820092A, // 0127 GETMBR R8 R4 K42 + 0x900E5208, // 0128 SETMBR R3 K41 R8 + 0x88200115, // 0129 GETMBR R8 R0 K21 + 0x88201116, // 012A GETMBR R8 R8 K22 + 0x8C20112C, // 012B GETMET R8 R8 K44 + 0x7C200200, // 012C CALL R8 1 + 0x900E5608, // 012D SETMBR R3 K43 R8 + 0xB8220C00, // 012E GETNGBL R8 K6 + 0x60240018, // 012F GETGBL R9 G24 + 0x5828002D, // 0130 LDCONST R10 K45 + 0x882C072B, // 0131 GETMBR R11 R3 K43 + 0x8830032E, // 0132 GETMBR R12 R1 K46 + 0x8834032F, // 0133 GETMBR R13 R1 K47 + 0x7C240800, // 0134 CALL R9 4 + 0x58280008, // 0135 LDCONST R10 K8 + 0x7C200400, // 0136 CALL R8 2 + 0x8C200531, // 0137 GETMET R8 R2 K49 + 0x542A000F, // 0138 LDINT R10 16 0x7C200400, // 0139 CALL R8 2 - 0x900E9A08, // 013A SETMBR R3 K77 R8 - 0x8C20054F, // 013B GETMET R8 R2 K79 - 0x7C200200, // 013C CALL R8 1 - 0x8C201150, // 013D GETMET R8 R8 K80 - 0x8828074D, // 013E GETMBR R10 R3 K77 - 0x7C200400, // 013F CALL R8 2 - 0x900E9C08, // 0140 SETMBR R3 K78 R8 - 0x8C200530, // 0141 GETMET R8 R2 K48 - 0x542A001F, // 0142 LDINT R10 32 + 0x900E6008, // 013A SETMBR R3 K48 R8 + 0x8C200531, // 013B GETMET R8 R2 K49 + 0x542A001F, // 013C LDINT R10 32 + 0x7C200400, // 013D CALL R8 2 + 0x900E9C08, // 013E SETMBR R3 K78 R8 + 0x8C200550, // 013F GETMET R8 R2 K80 + 0x7C200200, // 0140 CALL R8 1 + 0x8C201151, // 0141 GETMET R8 R8 K81 + 0x8828074E, // 0142 GETMBR R10 R3 K78 0x7C200400, // 0143 CALL R8 2 - 0x8C24054F, // 0144 GETMET R9 R2 K79 - 0x7C240200, // 0145 CALL R9 1 - 0x8C241351, // 0146 GETMET R9 R9 K81 - 0x882C074D, // 0147 GETMBR R11 R3 K77 - 0x88300912, // 0148 GETMBR R12 R4 K18 - 0x7C240600, // 0149 CALL R9 3 - 0x900E3E09, // 014A SETMBR R3 K31 R9 - 0xB8261800, // 014B GETNGBL R9 K12 - 0x88241352, // 014C GETMBR R9 R9 K82 - 0x8C241353, // 014D GETMET R9 R9 K83 - 0x7C240200, // 014E CALL R9 1 - 0x8C281354, // 014F GETMET R10 R9 K84 - 0x5830000A, // 0150 LDCONST R12 K10 - 0xB8361800, // 0151 GETNGBL R13 K12 - 0x88341B52, // 0152 GETMBR R13 R13 K82 - 0x88341B55, // 0153 GETMBR R13 R13 K85 - 0x8C380F56, // 0154 GETMET R14 R7 K86 - 0x7C380200, // 0155 CALL R14 1 - 0x7C280800, // 0156 CALL R10 4 - 0x8C281354, // 0157 GETMET R10 R9 K84 - 0x5830000B, // 0158 LDCONST R12 K11 - 0xB8361800, // 0159 GETNGBL R13 K12 - 0x88341B52, // 015A GETMBR R13 R13 K82 - 0x88341B55, // 015B GETMBR R13 R13 K85 - 0x8C380F57, // 015C GETMET R14 R7 K87 - 0x7C380200, // 015D CALL R14 1 - 0x7C280800, // 015E CALL R10 4 - 0x8C281354, // 015F GETMET R10 R9 K84 - 0x58300008, // 0160 LDCONST R12 K8 - 0xB8361800, // 0161 GETNGBL R13 K12 - 0x88341B52, // 0162 GETMBR R13 R13 K82 - 0x88341B55, // 0163 GETMBR R13 R13 K85 - 0x8838074E, // 0164 GETMBR R14 R3 K78 - 0x7C280800, // 0165 CALL R10 4 - 0x8C281354, // 0166 GETMET R10 R9 K84 - 0x54320003, // 0167 LDINT R12 4 - 0xB8361800, // 0168 GETNGBL R13 K12 - 0x88341B52, // 0169 GETMBR R13 R13 K82 - 0x88341B55, // 016A GETMBR R13 R13 K85 - 0x88380912, // 016B GETMBR R14 R4 K18 - 0x7C280800, // 016C CALL R10 4 - 0x8C28054F, // 016D GETMET R10 R2 K79 - 0x7C280200, // 016E CALL R10 1 - 0x8C281558, // 016F GETMET R10 R10 K88 - 0x8C300F59, // 0170 GETMET R12 R7 K89 - 0x7C300200, // 0171 CALL R12 1 - 0x8C341339, // 0172 GETMET R13 R9 K57 - 0x7C340200, // 0173 CALL R13 1 - 0x7C280600, // 0174 CALL R10 3 - 0xB82E1800, // 0175 GETNGBL R11 K12 - 0x882C1752, // 0176 GETMBR R11 R11 K82 - 0x8C2C1753, // 0177 GETMET R11 R11 K83 - 0x7C2C0200, // 0178 CALL R11 1 - 0x8C301754, // 0179 GETMET R12 R11 K84 - 0x5838000A, // 017A LDCONST R14 K10 - 0xB83E1800, // 017B GETNGBL R15 K12 - 0x883C1F52, // 017C GETMBR R15 R15 K82 - 0x883C1F55, // 017D GETMBR R15 R15 K85 - 0x8C400F56, // 017E GETMET R16 R7 K86 - 0x7C400200, // 017F CALL R16 1 - 0x7C300800, // 0180 CALL R12 4 - 0x8C301754, // 0181 GETMET R12 R11 K84 - 0x5838000B, // 0182 LDCONST R14 K11 - 0xB83E1800, // 0183 GETNGBL R15 K12 - 0x883C1F52, // 0184 GETMBR R15 R15 K82 - 0x883C1F55, // 0185 GETMBR R15 R15 K85 - 0x8C400F57, // 0186 GETMET R16 R7 K87 - 0x7C400200, // 0187 CALL R16 1 - 0x7C300800, // 0188 CALL R12 4 - 0x8C301754, // 0189 GETMET R12 R11 K84 - 0x58380008, // 018A LDCONST R14 K8 - 0xB83E1800, // 018B GETNGBL R15 K12 - 0x883C1F52, // 018C GETMBR R15 R15 K82 - 0x883C1F55, // 018D GETMBR R15 R15 K85 - 0x5C401400, // 018E MOVE R16 R10 - 0x7C300800, // 018F CALL R12 4 - 0x8C301754, // 0190 GETMET R12 R11 K84 - 0x543A0003, // 0191 LDINT R14 4 - 0xB83E1800, // 0192 GETNGBL R15 K12 - 0x883C1F52, // 0193 GETMBR R15 R15 K82 - 0x883C1F55, // 0194 GETMBR R15 R15 K85 - 0x8840072F, // 0195 GETMBR R16 R3 K47 - 0x7C300800, // 0196 CALL R12 4 - 0x8830095A, // 0197 GETMBR R12 R4 K90 - 0x900E740C, // 0198 SETMBR R3 K58 R12 - 0x8C30055B, // 0199 GETMET R12 R2 K91 - 0x7C300200, // 019A CALL R12 1 - 0x8C30195C, // 019B GETMET R12 R12 K92 - 0x8838073A, // 019C GETMBR R14 R3 K58 - 0x7C300400, // 019D CALL R12 2 - 0x8C30195D, // 019E GETMET R12 R12 K93 - 0x7C300200, // 019F CALL R12 1 - 0x60340015, // 01A0 GETGBL R13 G21 - 0x7C340000, // 01A1 CALL R13 0 - 0x8C341B1B, // 01A2 GETMET R13 R13 K27 - 0x883C015E, // 01A3 GETMBR R15 R0 K94 - 0x7C340400, // 01A4 CALL R13 2 - 0x8C380F5F, // 01A5 GETMET R14 R7 K95 - 0x7C380200, // 01A6 CALL R14 1 - 0x00381C08, // 01A7 ADD R14 R14 R8 - 0x883C074E, // 01A8 GETMBR R15 R3 K78 - 0x00381C0F, // 01A9 ADD R14 R14 R15 - 0x00381C0C, // 01AA ADD R14 R14 R12 - 0x8C3C051D, // 01AB GETMET R15 R2 K29 - 0x7C3C0200, // 01AC CALL R15 1 - 0x8C3C1F1E, // 01AD GETMET R15 R15 K30 - 0x8844071F, // 01AE GETMBR R17 R3 K31 - 0x5C481C00, // 01AF MOVE R18 R14 - 0x5C4C1A00, // 01B0 MOVE R19 R13 - 0x5452000F, // 01B1 LDINT R20 16 - 0x7C3C0A00, // 01B2 CALL R15 5 - 0x8C401739, // 01B3 GETMET R16 R11 K57 - 0x7C400200, // 01B4 CALL R16 1 - 0x8C440522, // 01B5 GETMET R17 R2 K34 - 0x5C4C1E00, // 01B6 MOVE R19 R15 - 0x60500015, // 01B7 GETGBL R20 G21 - 0x7C500000, // 01B8 CALL R20 0 - 0x8C50291B, // 01B9 GETMET R20 R20 K27 - 0x88580160, // 01BA GETMBR R22 R0 K96 - 0x7C500400, // 01BB CALL R20 2 - 0x60540015, // 01BC GETGBL R21 G21 - 0x7C540000, // 01BD CALL R21 0 - 0x6058000C, // 01BE GETGBL R22 G12 - 0x5C5C2000, // 01BF MOVE R23 R16 - 0x7C580200, // 01C0 CALL R22 1 - 0x545E000F, // 01C1 LDINT R23 16 - 0x7C440C00, // 01C2 CALL R17 6 - 0x8C482361, // 01C3 GETMET R18 R17 K97 - 0x5C502000, // 01C4 MOVE R20 R16 - 0x7C480400, // 01C5 CALL R18 2 - 0x8C4C2324, // 01C6 GETMET R19 R17 K36 - 0x7C4C0200, // 01C7 CALL R19 1 - 0x00482413, // 01C8 ADD R18 R18 R19 - 0xB84E1800, // 01C9 GETNGBL R19 K12 - 0x8C4C2762, // 01CA GETMET R19 R19 K98 + 0x900E9E08, // 0144 SETMBR R3 K79 R8 + 0x8C200531, // 0145 GETMET R8 R2 K49 + 0x542A001F, // 0146 LDINT R10 32 + 0x7C200400, // 0147 CALL R8 2 + 0x8C240550, // 0148 GETMET R9 R2 K80 + 0x7C240200, // 0149 CALL R9 1 + 0x8C241352, // 014A GETMET R9 R9 K82 + 0x882C074E, // 014B GETMBR R11 R3 K78 + 0x88300912, // 014C GETMBR R12 R4 K18 + 0x7C240600, // 014D CALL R9 3 + 0x900E4009, // 014E SETMBR R3 K32 R9 + 0xB8261800, // 014F GETNGBL R9 K12 + 0x88241353, // 0150 GETMBR R9 R9 K83 + 0x8C241354, // 0151 GETMET R9 R9 K84 + 0x7C240200, // 0152 CALL R9 1 + 0x8C281355, // 0153 GETMET R10 R9 K85 + 0x5830000A, // 0154 LDCONST R12 K10 + 0xB8361800, // 0155 GETNGBL R13 K12 + 0x88341B53, // 0156 GETMBR R13 R13 K83 + 0x88341B56, // 0157 GETMBR R13 R13 K86 + 0x8C380F57, // 0158 GETMET R14 R7 K87 + 0x7C380200, // 0159 CALL R14 1 + 0x7C280800, // 015A CALL R10 4 + 0x8C281355, // 015B GETMET R10 R9 K85 + 0x5830000B, // 015C LDCONST R12 K11 + 0xB8361800, // 015D GETNGBL R13 K12 + 0x88341B53, // 015E GETMBR R13 R13 K83 + 0x88341B56, // 015F GETMBR R13 R13 K86 + 0x8C380F58, // 0160 GETMET R14 R7 K88 + 0x7C380200, // 0161 CALL R14 1 + 0x7C280800, // 0162 CALL R10 4 + 0x8C281355, // 0163 GETMET R10 R9 K85 + 0x58300008, // 0164 LDCONST R12 K8 + 0xB8361800, // 0165 GETNGBL R13 K12 + 0x88341B53, // 0166 GETMBR R13 R13 K83 + 0x88341B56, // 0167 GETMBR R13 R13 K86 + 0x8838074F, // 0168 GETMBR R14 R3 K79 + 0x7C280800, // 0169 CALL R10 4 + 0x8C281355, // 016A GETMET R10 R9 K85 + 0x54320003, // 016B LDINT R12 4 + 0xB8361800, // 016C GETNGBL R13 K12 + 0x88341B53, // 016D GETMBR R13 R13 K83 + 0x88341B56, // 016E GETMBR R13 R13 K86 + 0x88380912, // 016F GETMBR R14 R4 K18 + 0x7C280800, // 0170 CALL R10 4 + 0x8C280550, // 0171 GETMET R10 R2 K80 + 0x7C280200, // 0172 CALL R10 1 + 0x8C281559, // 0173 GETMET R10 R10 K89 + 0x8C300F5A, // 0174 GETMET R12 R7 K90 + 0x7C300200, // 0175 CALL R12 1 + 0x8C34133A, // 0176 GETMET R13 R9 K58 + 0x7C340200, // 0177 CALL R13 1 + 0x7C280600, // 0178 CALL R10 3 + 0xB82E1800, // 0179 GETNGBL R11 K12 + 0x882C1753, // 017A GETMBR R11 R11 K83 + 0x8C2C1754, // 017B GETMET R11 R11 K84 + 0x7C2C0200, // 017C CALL R11 1 + 0x8C301755, // 017D GETMET R12 R11 K85 + 0x5838000A, // 017E LDCONST R14 K10 + 0xB83E1800, // 017F GETNGBL R15 K12 + 0x883C1F53, // 0180 GETMBR R15 R15 K83 + 0x883C1F56, // 0181 GETMBR R15 R15 K86 + 0x8C400F57, // 0182 GETMET R16 R7 K87 + 0x7C400200, // 0183 CALL R16 1 + 0x7C300800, // 0184 CALL R12 4 + 0x8C301755, // 0185 GETMET R12 R11 K85 + 0x5838000B, // 0186 LDCONST R14 K11 + 0xB83E1800, // 0187 GETNGBL R15 K12 + 0x883C1F53, // 0188 GETMBR R15 R15 K83 + 0x883C1F56, // 0189 GETMBR R15 R15 K86 + 0x8C400F58, // 018A GETMET R16 R7 K88 + 0x7C400200, // 018B CALL R16 1 + 0x7C300800, // 018C CALL R12 4 + 0x8C301755, // 018D GETMET R12 R11 K85 + 0x58380008, // 018E LDCONST R14 K8 + 0xB83E1800, // 018F GETNGBL R15 K12 + 0x883C1F53, // 0190 GETMBR R15 R15 K83 + 0x883C1F56, // 0191 GETMBR R15 R15 K86 + 0x5C401400, // 0192 MOVE R16 R10 + 0x7C300800, // 0193 CALL R12 4 + 0x8C301755, // 0194 GETMET R12 R11 K85 + 0x543A0003, // 0195 LDINT R14 4 + 0xB83E1800, // 0196 GETNGBL R15 K12 + 0x883C1F53, // 0197 GETMBR R15 R15 K83 + 0x883C1F56, // 0198 GETMBR R15 R15 K86 + 0x88400730, // 0199 GETMBR R16 R3 K48 + 0x7C300800, // 019A CALL R12 4 + 0x8830095B, // 019B GETMBR R12 R4 K91 + 0x900E760C, // 019C SETMBR R3 K59 R12 + 0x8C30055C, // 019D GETMET R12 R2 K92 + 0x7C300200, // 019E CALL R12 1 + 0x8C30195D, // 019F GETMET R12 R12 K93 + 0x8838073B, // 01A0 GETMBR R14 R3 K59 + 0x7C300400, // 01A1 CALL R12 2 + 0x8C30195E, // 01A2 GETMET R12 R12 K94 + 0x7C300200, // 01A3 CALL R12 1 + 0x60340015, // 01A4 GETGBL R13 G21 + 0x7C340000, // 01A5 CALL R13 0 + 0x8C341B1C, // 01A6 GETMET R13 R13 K28 + 0x883C015F, // 01A7 GETMBR R15 R0 K95 + 0x7C340400, // 01A8 CALL R13 2 + 0x8C380F60, // 01A9 GETMET R14 R7 K96 + 0x7C380200, // 01AA CALL R14 1 + 0x00381C08, // 01AB ADD R14 R14 R8 + 0x883C074F, // 01AC GETMBR R15 R3 K79 + 0x00381C0F, // 01AD ADD R14 R14 R15 + 0x00381C0C, // 01AE ADD R14 R14 R12 + 0x8C3C051E, // 01AF GETMET R15 R2 K30 + 0x7C3C0200, // 01B0 CALL R15 1 + 0x8C3C1F1F, // 01B1 GETMET R15 R15 K31 + 0x88440720, // 01B2 GETMBR R17 R3 K32 + 0x5C481C00, // 01B3 MOVE R18 R14 + 0x5C4C1A00, // 01B4 MOVE R19 R13 + 0x5452000F, // 01B5 LDINT R20 16 + 0x7C3C0A00, // 01B6 CALL R15 5 + 0x8C40173A, // 01B7 GETMET R16 R11 K58 + 0x7C400200, // 01B8 CALL R16 1 + 0x8C440523, // 01B9 GETMET R17 R2 K35 + 0x5C4C1E00, // 01BA MOVE R19 R15 + 0x60500015, // 01BB GETGBL R20 G21 + 0x7C500000, // 01BC CALL R20 0 + 0x8C50291C, // 01BD GETMET R20 R20 K28 + 0x88580161, // 01BE GETMBR R22 R0 K97 + 0x7C500400, // 01BF CALL R20 2 + 0x60540015, // 01C0 GETGBL R21 G21 + 0x7C540000, // 01C1 CALL R21 0 + 0x6058000C, // 01C2 GETGBL R22 G12 + 0x5C5C2000, // 01C3 MOVE R23 R16 + 0x7C580200, // 01C4 CALL R22 1 + 0x545E000F, // 01C5 LDINT R23 16 + 0x7C440C00, // 01C6 CALL R17 6 + 0x8C482362, // 01C7 GETMET R18 R17 K98 + 0x5C502000, // 01C8 MOVE R20 R16 + 0x7C480400, // 01C9 CALL R18 2 + 0x8C4C2325, // 01CA GETMET R19 R17 K37 0x7C4C0200, // 01CB CALL R19 1 - 0x904EC608, // 01CC SETMBR R19 K99 R8 - 0x8850072A, // 01CD GETMBR R20 R3 K42 - 0x904EC814, // 01CE SETMBR R19 K100 R20 - 0x8850074E, // 01CF GETMBR R20 R3 K78 - 0x904ECA14, // 01D0 SETMBR R19 K101 R20 - 0x904ECC12, // 01D1 SETMBR R19 K102 R18 - 0x8C502739, // 01D2 GETMET R20 R19 K57 - 0x7C500200, // 01D3 CALL R20 1 - 0x900ECE14, // 01D4 SETMBR R3 K103 R20 - 0x8C54033B, // 01D5 GETMET R21 R1 K59 - 0x545E0030, // 01D6 LDINT R23 49 - 0x50600200, // 01D7 LDBOOL R24 1 0 - 0x7C540600, // 01D8 CALL R21 3 - 0x8C582B3C, // 01D9 GETMET R22 R21 K60 - 0x5C602800, // 01DA MOVE R24 R20 - 0x7C580400, // 01DB CALL R22 2 - 0xB85E0C00, // 01DC GETNGBL R23 K6 - 0x60600018, // 01DD GETGBL R24 G24 - 0x58640068, // 01DE LDCONST R25 K104 - 0x8868072A, // 01DF GETMBR R26 R3 K42 - 0x886C0769, // 01E0 GETMBR R27 R3 K105 - 0x8870076A, // 01E1 GETMBR R28 R3 K106 - 0x7C600800, // 01E2 CALL R24 4 - 0x5864000B, // 01E3 LDCONST R25 K11 - 0x7C5C0400, // 01E4 CALL R23 2 - 0x885C013D, // 01E5 GETMBR R23 R0 K61 - 0x8C5C2F3E, // 01E6 GETMET R23 R23 K62 - 0x5C642A00, // 01E7 MOVE R25 R21 + 0x00482413, // 01CC ADD R18 R18 R19 + 0xB84E1800, // 01CD GETNGBL R19 K12 + 0x8C4C2763, // 01CE GETMET R19 R19 K99 + 0x7C4C0200, // 01CF CALL R19 1 + 0x904EC808, // 01D0 SETMBR R19 K100 R8 + 0x8850072B, // 01D1 GETMBR R20 R3 K43 + 0x904ECA14, // 01D2 SETMBR R19 K101 R20 + 0x8850074F, // 01D3 GETMBR R20 R3 K79 + 0x904ECC14, // 01D4 SETMBR R19 K102 R20 + 0x904ECE12, // 01D5 SETMBR R19 K103 R18 + 0x8C50273A, // 01D6 GETMET R20 R19 K58 + 0x7C500200, // 01D7 CALL R20 1 + 0x900ED014, // 01D8 SETMBR R3 K104 R20 + 0x8C54033C, // 01D9 GETMET R21 R1 K60 + 0x545E0030, // 01DA LDINT R23 49 + 0x50600200, // 01DB LDBOOL R24 1 0 + 0x7C540600, // 01DC CALL R21 3 + 0x8C582B3D, // 01DD GETMET R22 R21 K61 + 0x5C602800, // 01DE MOVE R24 R20 + 0x7C580400, // 01DF CALL R22 2 + 0xB85E0C00, // 01E0 GETNGBL R23 K6 + 0x60600018, // 01E1 GETGBL R24 G24 + 0x58640069, // 01E2 LDCONST R25 K105 + 0x8868072B, // 01E3 GETMBR R26 R3 K43 + 0x886C076A, // 01E4 GETMBR R27 R3 K106 + 0x8870076B, // 01E5 GETMBR R28 R3 K107 + 0x7C600800, // 01E6 CALL R24 4 + 0x5864000B, // 01E7 LDCONST R25 K11 0x7C5C0400, // 01E8 CALL R23 2 - 0x505C0200, // 01E9 LDBOOL R23 1 0 - 0x80042E00, // 01EA RET 1 R23 - 0x501C0200, // 01EB LDBOOL R7 1 0 - 0x80040E00, // 01EC RET 1 R7 + 0x885C013E, // 01E9 GETMBR R23 R0 K62 + 0x8C5C2F3F, // 01EA GETMET R23 R23 K63 + 0x5C642A00, // 01EB MOVE R25 R21 + 0x7C5C0400, // 01EC CALL R23 2 + 0x505C0200, // 01ED LDBOOL R23 1 0 + 0x80042E00, // 01EE RET 1 R23 + 0x501C0200, // 01EF LDBOOL R7 1 0 + 0x80040E00, // 01F0 RET 1 R7 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index 793cca7da..2ddee25dd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -228,7 +228,7 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ }), be_str_weak(encode_frame), &be_const_str_solidified, - ( &(const binstruction[155]) { /* code */ + ( &(const binstruction[161]) { /* code */ 0x4C0C0000, // 0000 LDNIL R3 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E000A, // 0002 JMPF R3 #000E @@ -362,28 +362,34 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ 0x7C0C0600, // 0082 CALL R3 3 0x8C0C0505, // 0083 GETMET R3 R2 K5 0x88140118, // 0084 GETMBR R5 R0 K24 - 0x541AFFFE, // 0085 LDINT R6 65535 - 0x2C140A06, // 0086 AND R5 R5 R6 - 0x58180008, // 0087 LDCONST R6 K8 - 0x7C0C0600, // 0088 CALL R3 3 - 0x8C0C0505, // 0089 GETMET R3 R2 K5 - 0x88140119, // 008A GETMBR R5 R0 K25 - 0x58180008, // 008B LDCONST R6 K8 - 0x7C0C0600, // 008C CALL R3 3 - 0x880C0115, // 008D GETMBR R3 R0 K21 - 0x780E0003, // 008E JMPF R3 #0093 + 0x4C180000, // 0085 LDNIL R6 + 0x20140A06, // 0086 NE R5 R5 R6 + 0x78160003, // 0087 JMPF R5 #008C + 0x88140118, // 0088 GETMBR R5 R0 K24 + 0x541AFFFE, // 0089 LDINT R6 65535 + 0x2C140A06, // 008A AND R5 R5 R6 + 0x70020000, // 008B JMP #008D + 0x58140000, // 008C LDCONST R5 K0 + 0x58180008, // 008D LDCONST R6 K8 + 0x7C0C0600, // 008E CALL R3 3 0x8C0C0505, // 008F GETMET R3 R2 K5 - 0x8814011A, // 0090 GETMBR R5 R0 K26 - 0x541A0003, // 0091 LDINT R6 4 + 0x88140119, // 0090 GETMBR R5 R0 K25 + 0x58180008, // 0091 LDCONST R6 K8 0x7C0C0600, // 0092 CALL R3 3 - 0x600C000C, // 0093 GETGBL R3 G12 - 0x5C100400, // 0094 MOVE R4 R2 - 0x7C0C0200, // 0095 CALL R3 1 - 0x90023603, // 0096 SETMBR R0 K27 R3 - 0x78060000, // 0097 JMPF R1 #0099 - 0x400C0401, // 0098 CONNECT R3 R2 R1 - 0x90023802, // 0099 SETMBR R0 K28 R2 - 0x80040400, // 009A RET 1 R2 + 0x880C0115, // 0093 GETMBR R3 R0 K21 + 0x780E0003, // 0094 JMPF R3 #0099 + 0x8C0C0505, // 0095 GETMET R3 R2 K5 + 0x8814011A, // 0096 GETMBR R5 R0 K26 + 0x541A0003, // 0097 LDINT R6 4 + 0x7C0C0600, // 0098 CALL R3 3 + 0x600C000C, // 0099 GETGBL R3 G12 + 0x5C100400, // 009A MOVE R4 R2 + 0x7C0C0200, // 009B CALL R3 1 + 0x90023603, // 009C SETMBR R0 K27 R3 + 0x78060000, // 009D JMPF R1 #009F + 0x400C0401, // 009E CONNECT R3 R2 R1 + 0x90023802, // 009F SETMBR R0 K28 R2 + 0x80040400, // 00A0 RET 1 R2 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index 6eb6dc0e8..be8bf07c2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -182,12 +182,12 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ /* K31 */ be_nested_str_weak(get_opcode_name), /* K32 */ be_nested_str_weak(0x_X2502X), /* K33 */ be_const_int(3), - /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K35 */ be_nested_str_weak(exchange_id), - /* K36 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), - /* K37 */ be_nested_str_weak(x_flag_r), - /* K38 */ be_nested_str_weak(_X7Breliable_X7D_X20), - /* K39 */ be_nested_str_weak(), + /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), + /* K36 */ be_nested_str_weak(x_flag_r), + /* K37 */ be_nested_str_weak(_X7Breliable_X7D_X20), + /* K38 */ be_nested_str_weak(), + /* K39 */ be_nested_str_weak(exchange_id), /* K40 */ be_nested_str_weak(ack_message_counter), /* K41 */ be_nested_str_weak(commissioning), /* K42 */ be_nested_str_weak(process_incoming), @@ -221,14 +221,14 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ }), be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[356]) { /* code */ + ( &(const binstruction[354]) { /* code */ 0x50100000, // 0000 LDBOOL R4 0 0 0xB8160000, // 0001 GETNGBL R5 K0 0x88140B01, // 0002 GETMBR R5 R5 K1 0x8C140B02, // 0003 GETMET R5 R5 K2 0x581C0003, // 0004 LDCONST R7 K3 0x7C140400, // 0005 CALL R5 2 - 0xA8020143, // 0006 EXBLK 0 #014B + 0xA8020141, // 0006 EXBLK 0 #0149 0xB8160000, // 0007 GETNGBL R5 K0 0x8C140B04, // 0008 GETMET R5 R5 K4 0x5C1C0000, // 0009 MOVE R7 R0 @@ -257,13 +257,13 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0x7C200400, // 0020 CALL R8 2 0xA8040001, // 0021 EXBLK 1 1 0x80041000, // 0022 RET 1 R8 - 0x70020122, // 0023 JMP #0147 + 0x70020120, // 0023 JMP #0145 0x881C0B0D, // 0024 GETMBR R7 R5 K13 0x1C1C0F0E, // 0025 EQ R7 R7 K14 - 0x781E007C, // 0026 JMPF R7 #00A4 + 0x781E007A, // 0026 JMPF R7 #00A2 0x881C0B0F, // 0027 GETMBR R7 R5 K15 0x1C1C0F0E, // 0028 EQ R7 R7 K14 - 0x781E0079, // 0029 JMPF R7 #00A4 + 0x781E0077, // 0029 JMPF R7 #00A2 0x881C0107, // 002A GETMBR R7 R0 K7 0x881C0F08, // 002B GETMBR R7 R7 K8 0x8C1C0F09, // 002C GETMET R7 R7 K9 @@ -317,7 +317,7 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0x88200B1E, // 005C GETMBR R8 R5 K30 0x5426000F, // 005D LDINT R9 16 0x20201009, // 005E NE R8 R8 R9 - 0x7822001C, // 005F JMPF R8 #007D + 0x7822001A, // 005F JMPF R8 #007B 0xB8220000, // 0060 GETNGBL R8 K0 0x8C20111F, // 0061 GETMET R8 R8 K31 0x88280B1E, // 0062 GETMBR R10 R5 K30 @@ -333,251 +333,249 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0x8C241318, // 006C GETMET R9 R9 K24 0x582C0021, // 006D LDCONST R11 K33 0x7C240400, // 006E CALL R9 2 - 0x7826000B, // 006F JMPF R9 #007C + 0x78260009, // 006F JMPF R9 #007A 0xB8260400, // 0070 GETNGBL R9 K2 0x60280018, // 0071 GETGBL R10 G24 0x582C0022, // 0072 LDCONST R11 K34 0x88300F0D, // 0073 GETMBR R12 R7 K13 0x5C341000, // 0074 MOVE R13 R8 - 0x88380B16, // 0075 GETMBR R14 R5 K22 - 0x883C0B23, // 0076 GETMBR R15 R5 K35 - 0x5C400400, // 0077 MOVE R16 R2 - 0x5C440600, // 0078 MOVE R17 R3 - 0x7C280E00, // 0079 CALL R10 7 - 0x582C0021, // 007A LDCONST R11 K33 - 0x7C240400, // 007B CALL R9 2 - 0x70020017, // 007C JMP #0095 - 0xB8222E00, // 007D GETNGBL R8 K23 - 0x8C201118, // 007E GETMET R8 R8 K24 - 0x542A0003, // 007F LDINT R10 4 - 0x7C200400, // 0080 CALL R8 2 - 0x78220012, // 0081 JMPF R8 #0095 - 0xB8220400, // 0082 GETNGBL R8 K2 - 0x60240018, // 0083 GETGBL R9 G24 - 0x58280024, // 0084 LDCONST R10 K36 - 0x882C0F0D, // 0085 GETMBR R11 R7 K13 - 0x88300B16, // 0086 GETMBR R12 R5 K22 - 0x88340B25, // 0087 GETMBR R13 R5 K37 - 0x78360001, // 0088 JMPF R13 #008B + 0x5C380400, // 0075 MOVE R14 R2 + 0x5C3C0600, // 0076 MOVE R15 R3 + 0x7C280A00, // 0077 CALL R10 5 + 0x582C0021, // 0078 LDCONST R11 K33 + 0x7C240400, // 0079 CALL R9 2 + 0x70020017, // 007A JMP #0093 + 0xB8222E00, // 007B GETNGBL R8 K23 + 0x8C201118, // 007C GETMET R8 R8 K24 + 0x542A0003, // 007D LDINT R10 4 + 0x7C200400, // 007E CALL R8 2 + 0x78220012, // 007F JMPF R8 #0093 + 0xB8220400, // 0080 GETNGBL R8 K2 + 0x60240018, // 0081 GETGBL R9 G24 + 0x58280023, // 0082 LDCONST R10 K35 + 0x882C0F0D, // 0083 GETMBR R11 R7 K13 + 0x88300B16, // 0084 GETMBR R12 R5 K22 + 0x88340B24, // 0085 GETMBR R13 R5 K36 + 0x78360001, // 0086 JMPF R13 #0089 + 0x58340025, // 0087 LDCONST R13 K37 + 0x70020000, // 0088 JMP #008A 0x58340026, // 0089 LDCONST R13 K38 - 0x70020000, // 008A JMP #008C - 0x58340027, // 008B LDCONST R13 K39 - 0x88380B23, // 008C GETMBR R14 R5 K35 - 0x603C0008, // 008D GETGBL R15 G8 - 0x88400B28, // 008E GETMBR R16 R5 K40 - 0x7C3C0200, // 008F CALL R15 1 - 0x5C400400, // 0090 MOVE R16 R2 - 0x5C440600, // 0091 MOVE R17 R3 - 0x7C241000, // 0092 CALL R9 8 - 0x542A0003, // 0093 LDINT R10 4 - 0x7C200400, // 0094 CALL R8 2 - 0x88200129, // 0095 GETMBR R8 R0 K41 - 0x8C20112A, // 0096 GETMET R8 R8 K42 - 0x5C280A00, // 0097 MOVE R10 R5 - 0x7C200400, // 0098 CALL R8 2 - 0x5C101000, // 0099 MOVE R4 R8 - 0x5C200800, // 009A MOVE R8 R4 - 0x74220003, // 009B JMPT R8 #00A0 - 0x8C20011B, // 009C GETMET R8 R0 K27 - 0x5C280A00, // 009D MOVE R10 R5 - 0x502C0000, // 009E LDBOOL R11 0 0 - 0x7C200600, // 009F CALL R8 3 - 0x50200200, // 00A0 LDBOOL R8 1 0 - 0xA8040001, // 00A1 EXBLK 1 1 - 0x80041000, // 00A2 RET 1 R8 - 0x700200A2, // 00A3 JMP #0147 - 0xB81E2E00, // 00A4 GETNGBL R7 K23 - 0x8C1C0F18, // 00A5 GETMET R7 R7 K24 - 0x54260003, // 00A6 LDINT R9 4 - 0x7C1C0400, // 00A7 CALL R7 2 - 0x781E0007, // 00A8 JMPF R7 #00B1 - 0xB81E0400, // 00A9 GETNGBL R7 K2 - 0x60200018, // 00AA GETGBL R8 G24 - 0x5824002B, // 00AB LDCONST R9 K43 - 0x88280B0D, // 00AC GETMBR R10 R5 K13 - 0x882C0B16, // 00AD GETMBR R11 R5 K22 - 0x7C200600, // 00AE CALL R8 3 - 0x54260003, // 00AF LDINT R9 4 - 0x7C1C0400, // 00B0 CALL R7 2 - 0x881C0107, // 00B1 GETMBR R7 R0 K7 - 0x881C0F08, // 00B2 GETMBR R7 R7 K8 - 0x8C1C0F2C, // 00B3 GETMET R7 R7 K44 - 0x88240B0D, // 00B4 GETMBR R9 R5 K13 - 0x7C1C0400, // 00B5 CALL R7 2 - 0x4C200000, // 00B6 LDNIL R8 - 0x1C200E08, // 00B7 EQ R8 R7 R8 - 0x78220009, // 00B8 JMPF R8 #00C3 - 0xB8220400, // 00B9 GETNGBL R8 K2 - 0x60240008, // 00BA GETGBL R9 G8 - 0x88280B0D, // 00BB GETMBR R10 R5 K13 - 0x7C240200, // 00BC CALL R9 1 - 0x00265A09, // 00BD ADD R9 K45 R9 - 0x58280021, // 00BE LDCONST R10 K33 - 0x7C200400, // 00BF CALL R8 2 - 0x50200000, // 00C0 LDBOOL R8 0 0 - 0xA8040001, // 00C1 EXBLK 1 1 - 0x80041000, // 00C2 RET 1 R8 - 0x780A0000, // 00C3 JMPF R2 #00C5 - 0x901E2002, // 00C4 SETMBR R7 K16 R2 - 0x780E0000, // 00C5 JMPF R3 #00C7 - 0x901E2203, // 00C6 SETMBR R7 K17 R3 - 0x901E2400, // 00C7 SETMBR R7 K18 R0 - 0x90162607, // 00C8 SETMBR R5 K19 R7 - 0x8C200F2E, // 00C9 GETMET R8 R7 K46 - 0x88280B16, // 00CA GETMBR R10 R5 K22 - 0x502C0200, // 00CB LDBOOL R11 1 0 - 0x7C200600, // 00CC CALL R8 3 - 0x74220017, // 00CD JMPT R8 #00E6 - 0xB8222E00, // 00CE GETNGBL R8 K23 - 0x8C201118, // 00CF GETMET R8 R8 K24 - 0x58280021, // 00D0 LDCONST R10 K33 - 0x7C200400, // 00D1 CALL R8 2 - 0x7822000B, // 00D2 JMPF R8 #00DF - 0xB8220400, // 00D3 GETNGBL R8 K2 - 0x60240008, // 00D4 GETGBL R9 G8 - 0x88280B16, // 00D5 GETMBR R10 R5 K22 - 0x7C240200, // 00D6 CALL R9 1 - 0x00265E09, // 00D7 ADD R9 K47 R9 - 0x00241330, // 00D8 ADD R9 R9 K48 - 0x60280008, // 00D9 GETGBL R10 G8 - 0x882C0F31, // 00DA GETMBR R11 R7 K49 - 0x7C280200, // 00DB CALL R10 1 - 0x0024120A, // 00DC ADD R9 R9 R10 - 0x58280021, // 00DD LDCONST R10 K33 - 0x7C200400, // 00DE CALL R8 2 - 0x8C200132, // 00DF GETMET R8 R0 K50 - 0x5C280A00, // 00E0 MOVE R10 R5 - 0x502C0000, // 00E1 LDBOOL R11 0 0 - 0x7C200600, // 00E2 CALL R8 3 - 0x50200000, // 00E3 LDBOOL R8 0 0 - 0xA8040001, // 00E4 EXBLK 1 1 - 0x80041000, // 00E5 RET 1 R8 - 0x8C200B33, // 00E6 GETMET R8 R5 K51 - 0x7C200200, // 00E7 CALL R8 1 - 0xB8260000, // 00E8 GETNGBL R9 K0 - 0x88241301, // 00E9 GETMBR R9 R9 K1 - 0x8C241302, // 00EA GETMET R9 R9 K2 - 0x582C0034, // 00EB LDCONST R11 K52 - 0x7C240400, // 00EC CALL R9 2 - 0x5C241000, // 00ED MOVE R9 R8 - 0x74260002, // 00EE JMPT R9 #00F2 - 0x50240000, // 00EF LDBOOL R9 0 0 - 0xA8040001, // 00F0 EXBLK 1 1 - 0x80041200, // 00F1 RET 1 R9 - 0x8C240B1C, // 00F2 GETMET R9 R5 K28 - 0x7C240200, // 00F3 CALL R9 1 - 0xB8262E00, // 00F4 GETNGBL R9 K23 - 0x8C241318, // 00F5 GETMET R9 R9 K24 - 0x542E0003, // 00F6 LDINT R11 4 - 0x7C240400, // 00F7 CALL R9 2 - 0x78260012, // 00F8 JMPF R9 #010C - 0xB8260400, // 00F9 GETNGBL R9 K2 - 0x60280008, // 00FA GETGBL R10 G8 - 0x882C0B36, // 00FB GETMBR R11 R5 K54 - 0x7C280200, // 00FC CALL R10 1 - 0x002A6A0A, // 00FD ADD R10 K53 R10 - 0x00281537, // 00FE ADD R10 R10 K55 - 0x602C0008, // 00FF GETGBL R11 G8 - 0x88300B1E, // 0100 GETMBR R12 R5 K30 - 0x7C2C0200, // 0101 CALL R11 1 - 0x0028140B, // 0102 ADD R10 R10 R11 - 0x00281538, // 0103 ADD R10 R10 K56 - 0x602C0008, // 0104 GETGBL R11 G8 - 0x88300B23, // 0105 GETMBR R12 R5 K35 - 0x5436FFFE, // 0106 LDINT R13 65535 - 0x2C30180D, // 0107 AND R12 R12 R13 - 0x7C2C0200, // 0108 CALL R11 1 - 0x0028140B, // 0109 ADD R10 R10 R11 - 0x542E0003, // 010A LDINT R11 4 - 0x7C240400, // 010B CALL R9 2 - 0x88240107, // 010C GETMBR R9 R0 K7 - 0x8C24131D, // 010D GETMET R9 R9 K29 - 0x5C2C0A00, // 010E MOVE R11 R5 - 0x7C240400, // 010F CALL R9 2 - 0x88240B36, // 0110 GETMBR R9 R5 K54 - 0x1C28130E, // 0111 EQ R10 R9 K14 - 0x782A000F, // 0112 JMPF R10 #0123 - 0x88280B1E, // 0113 GETMBR R10 R5 K30 - 0x542E000F, // 0114 LDINT R11 16 - 0x1C28140B, // 0115 EQ R10 R10 R11 - 0x782A0009, // 0116 JMPF R10 #0121 - 0x88280139, // 0117 GETMBR R10 R0 K57 - 0x8C28153A, // 0118 GETMET R10 R10 K58 - 0x5C300A00, // 0119 MOVE R12 R5 - 0x7C280400, // 011A CALL R10 2 - 0x5C101400, // 011B MOVE R4 R10 - 0x78120003, // 011C JMPF R4 #0121 - 0x88280139, // 011D GETMBR R10 R0 K57 - 0x8C28153B, // 011E GETMET R10 R10 K59 - 0x5C300000, // 011F MOVE R12 R0 - 0x7C280400, // 0120 CALL R10 2 - 0x50100200, // 0121 LDBOOL R4 1 0 - 0x70020023, // 0122 JMP #0147 - 0x1C28133C, // 0123 EQ R10 R9 K60 - 0x782A001A, // 0124 JMPF R10 #0140 - 0xB82A0000, // 0125 GETNGBL R10 K0 - 0x88281501, // 0126 GETMBR R10 R10 K1 - 0x8C281502, // 0127 GETMET R10 R10 K2 - 0x5830003D, // 0128 LDCONST R12 K61 - 0x7C280400, // 0129 CALL R10 2 - 0x88280139, // 012A GETMBR R10 R0 K57 - 0x8C28152A, // 012B GETMET R10 R10 K42 - 0x5C300A00, // 012C MOVE R12 R5 - 0x7C280400, // 012D CALL R10 2 - 0x5C101400, // 012E MOVE R4 R10 - 0xB82A0000, // 012F GETNGBL R10 K0 - 0x88281501, // 0130 GETMBR R10 R10 K1 - 0x8C281502, // 0131 GETMET R10 R10 K2 - 0x5830003E, // 0132 LDCONST R12 K62 - 0x7C280400, // 0133 CALL R10 2 - 0x78120004, // 0134 JMPF R4 #013A - 0x88280139, // 0135 GETMBR R10 R0 K57 - 0x8C28153B, // 0136 GETMET R10 R10 K59 - 0x5C300000, // 0137 MOVE R12 R0 - 0x7C280400, // 0138 CALL R10 2 - 0x70020003, // 0139 JMP #013E - 0x8C280132, // 013A GETMET R10 R0 K50 - 0x5C300A00, // 013B MOVE R12 R5 - 0x50340200, // 013C LDBOOL R13 1 0 - 0x7C280600, // 013D CALL R10 3 - 0x50100200, // 013E LDBOOL R4 1 0 - 0x70020006, // 013F JMP #0147 - 0xB82A0400, // 0140 GETNGBL R10 K2 - 0x602C0008, // 0141 GETGBL R11 G8 - 0x5C301200, // 0142 MOVE R12 R9 - 0x7C2C0200, // 0143 CALL R11 1 - 0x002E7E0B, // 0144 ADD R11 K63 R11 - 0x58300021, // 0145 LDCONST R12 K33 - 0x7C280400, // 0146 CALL R10 2 + 0x88380B27, // 008A GETMBR R14 R5 K39 + 0x603C0008, // 008B GETGBL R15 G8 + 0x88400B28, // 008C GETMBR R16 R5 K40 + 0x7C3C0200, // 008D CALL R15 1 + 0x5C400400, // 008E MOVE R16 R2 + 0x5C440600, // 008F MOVE R17 R3 + 0x7C241000, // 0090 CALL R9 8 + 0x542A0003, // 0091 LDINT R10 4 + 0x7C200400, // 0092 CALL R8 2 + 0x88200129, // 0093 GETMBR R8 R0 K41 + 0x8C20112A, // 0094 GETMET R8 R8 K42 + 0x5C280A00, // 0095 MOVE R10 R5 + 0x7C200400, // 0096 CALL R8 2 + 0x5C101000, // 0097 MOVE R4 R8 + 0x5C200800, // 0098 MOVE R8 R4 + 0x74220003, // 0099 JMPT R8 #009E + 0x8C20011B, // 009A GETMET R8 R0 K27 + 0x5C280A00, // 009B MOVE R10 R5 + 0x502C0000, // 009C LDBOOL R11 0 0 + 0x7C200600, // 009D CALL R8 3 + 0x50200200, // 009E LDBOOL R8 1 0 + 0xA8040001, // 009F EXBLK 1 1 + 0x80041000, // 00A0 RET 1 R8 + 0x700200A2, // 00A1 JMP #0145 + 0xB81E2E00, // 00A2 GETNGBL R7 K23 + 0x8C1C0F18, // 00A3 GETMET R7 R7 K24 + 0x54260003, // 00A4 LDINT R9 4 + 0x7C1C0400, // 00A5 CALL R7 2 + 0x781E0007, // 00A6 JMPF R7 #00AF + 0xB81E0400, // 00A7 GETNGBL R7 K2 + 0x60200018, // 00A8 GETGBL R8 G24 + 0x5824002B, // 00A9 LDCONST R9 K43 + 0x88280B0D, // 00AA GETMBR R10 R5 K13 + 0x882C0B16, // 00AB GETMBR R11 R5 K22 + 0x7C200600, // 00AC CALL R8 3 + 0x54260003, // 00AD LDINT R9 4 + 0x7C1C0400, // 00AE CALL R7 2 + 0x881C0107, // 00AF GETMBR R7 R0 K7 + 0x881C0F08, // 00B0 GETMBR R7 R7 K8 + 0x8C1C0F2C, // 00B1 GETMET R7 R7 K44 + 0x88240B0D, // 00B2 GETMBR R9 R5 K13 + 0x7C1C0400, // 00B3 CALL R7 2 + 0x4C200000, // 00B4 LDNIL R8 + 0x1C200E08, // 00B5 EQ R8 R7 R8 + 0x78220009, // 00B6 JMPF R8 #00C1 + 0xB8220400, // 00B7 GETNGBL R8 K2 + 0x60240008, // 00B8 GETGBL R9 G8 + 0x88280B0D, // 00B9 GETMBR R10 R5 K13 + 0x7C240200, // 00BA CALL R9 1 + 0x00265A09, // 00BB ADD R9 K45 R9 + 0x58280021, // 00BC LDCONST R10 K33 + 0x7C200400, // 00BD CALL R8 2 + 0x50200000, // 00BE LDBOOL R8 0 0 + 0xA8040001, // 00BF EXBLK 1 1 + 0x80041000, // 00C0 RET 1 R8 + 0x780A0000, // 00C1 JMPF R2 #00C3 + 0x901E2002, // 00C2 SETMBR R7 K16 R2 + 0x780E0000, // 00C3 JMPF R3 #00C5 + 0x901E2203, // 00C4 SETMBR R7 K17 R3 + 0x901E2400, // 00C5 SETMBR R7 K18 R0 + 0x90162607, // 00C6 SETMBR R5 K19 R7 + 0x8C200F2E, // 00C7 GETMET R8 R7 K46 + 0x88280B16, // 00C8 GETMBR R10 R5 K22 + 0x502C0200, // 00C9 LDBOOL R11 1 0 + 0x7C200600, // 00CA CALL R8 3 + 0x74220017, // 00CB JMPT R8 #00E4 + 0xB8222E00, // 00CC GETNGBL R8 K23 + 0x8C201118, // 00CD GETMET R8 R8 K24 + 0x58280021, // 00CE LDCONST R10 K33 + 0x7C200400, // 00CF CALL R8 2 + 0x7822000B, // 00D0 JMPF R8 #00DD + 0xB8220400, // 00D1 GETNGBL R8 K2 + 0x60240008, // 00D2 GETGBL R9 G8 + 0x88280B16, // 00D3 GETMBR R10 R5 K22 + 0x7C240200, // 00D4 CALL R9 1 + 0x00265E09, // 00D5 ADD R9 K47 R9 + 0x00241330, // 00D6 ADD R9 R9 K48 + 0x60280008, // 00D7 GETGBL R10 G8 + 0x882C0F31, // 00D8 GETMBR R11 R7 K49 + 0x7C280200, // 00D9 CALL R10 1 + 0x0024120A, // 00DA ADD R9 R9 R10 + 0x58280021, // 00DB LDCONST R10 K33 + 0x7C200400, // 00DC CALL R8 2 + 0x8C200132, // 00DD GETMET R8 R0 K50 + 0x5C280A00, // 00DE MOVE R10 R5 + 0x502C0000, // 00DF LDBOOL R11 0 0 + 0x7C200600, // 00E0 CALL R8 3 + 0x50200000, // 00E1 LDBOOL R8 0 0 + 0xA8040001, // 00E2 EXBLK 1 1 + 0x80041000, // 00E3 RET 1 R8 + 0x8C200B33, // 00E4 GETMET R8 R5 K51 + 0x7C200200, // 00E5 CALL R8 1 + 0xB8260000, // 00E6 GETNGBL R9 K0 + 0x88241301, // 00E7 GETMBR R9 R9 K1 + 0x8C241302, // 00E8 GETMET R9 R9 K2 + 0x582C0034, // 00E9 LDCONST R11 K52 + 0x7C240400, // 00EA CALL R9 2 + 0x5C241000, // 00EB MOVE R9 R8 + 0x74260002, // 00EC JMPT R9 #00F0 + 0x50240000, // 00ED LDBOOL R9 0 0 + 0xA8040001, // 00EE EXBLK 1 1 + 0x80041200, // 00EF RET 1 R9 + 0x8C240B1C, // 00F0 GETMET R9 R5 K28 + 0x7C240200, // 00F1 CALL R9 1 + 0xB8262E00, // 00F2 GETNGBL R9 K23 + 0x8C241318, // 00F3 GETMET R9 R9 K24 + 0x542E0003, // 00F4 LDINT R11 4 + 0x7C240400, // 00F5 CALL R9 2 + 0x78260012, // 00F6 JMPF R9 #010A + 0xB8260400, // 00F7 GETNGBL R9 K2 + 0x60280008, // 00F8 GETGBL R10 G8 + 0x882C0B36, // 00F9 GETMBR R11 R5 K54 + 0x7C280200, // 00FA CALL R10 1 + 0x002A6A0A, // 00FB ADD R10 K53 R10 + 0x00281537, // 00FC ADD R10 R10 K55 + 0x602C0008, // 00FD GETGBL R11 G8 + 0x88300B1E, // 00FE GETMBR R12 R5 K30 + 0x7C2C0200, // 00FF CALL R11 1 + 0x0028140B, // 0100 ADD R10 R10 R11 + 0x00281538, // 0101 ADD R10 R10 K56 + 0x602C0008, // 0102 GETGBL R11 G8 + 0x88300B27, // 0103 GETMBR R12 R5 K39 + 0x5436FFFE, // 0104 LDINT R13 65535 + 0x2C30180D, // 0105 AND R12 R12 R13 + 0x7C2C0200, // 0106 CALL R11 1 + 0x0028140B, // 0107 ADD R10 R10 R11 + 0x542E0003, // 0108 LDINT R11 4 + 0x7C240400, // 0109 CALL R9 2 + 0x88240107, // 010A GETMBR R9 R0 K7 + 0x8C24131D, // 010B GETMET R9 R9 K29 + 0x5C2C0A00, // 010C MOVE R11 R5 + 0x7C240400, // 010D CALL R9 2 + 0x88240B36, // 010E GETMBR R9 R5 K54 + 0x1C28130E, // 010F EQ R10 R9 K14 + 0x782A000F, // 0110 JMPF R10 #0121 + 0x88280B1E, // 0111 GETMBR R10 R5 K30 + 0x542E000F, // 0112 LDINT R11 16 + 0x1C28140B, // 0113 EQ R10 R10 R11 + 0x782A0009, // 0114 JMPF R10 #011F + 0x88280139, // 0115 GETMBR R10 R0 K57 + 0x8C28153A, // 0116 GETMET R10 R10 K58 + 0x5C300A00, // 0117 MOVE R12 R5 + 0x7C280400, // 0118 CALL R10 2 + 0x5C101400, // 0119 MOVE R4 R10 + 0x78120003, // 011A JMPF R4 #011F + 0x88280139, // 011B GETMBR R10 R0 K57 + 0x8C28153B, // 011C GETMET R10 R10 K59 + 0x5C300000, // 011D MOVE R12 R0 + 0x7C280400, // 011E CALL R10 2 + 0x50100200, // 011F LDBOOL R4 1 0 + 0x70020023, // 0120 JMP #0145 + 0x1C28133C, // 0121 EQ R10 R9 K60 + 0x782A001A, // 0122 JMPF R10 #013E + 0xB82A0000, // 0123 GETNGBL R10 K0 + 0x88281501, // 0124 GETMBR R10 R10 K1 + 0x8C281502, // 0125 GETMET R10 R10 K2 + 0x5830003D, // 0126 LDCONST R12 K61 + 0x7C280400, // 0127 CALL R10 2 + 0x88280139, // 0128 GETMBR R10 R0 K57 + 0x8C28152A, // 0129 GETMET R10 R10 K42 + 0x5C300A00, // 012A MOVE R12 R5 + 0x7C280400, // 012B CALL R10 2 + 0x5C101400, // 012C MOVE R4 R10 + 0xB82A0000, // 012D GETNGBL R10 K0 + 0x88281501, // 012E GETMBR R10 R10 K1 + 0x8C281502, // 012F GETMET R10 R10 K2 + 0x5830003E, // 0130 LDCONST R12 K62 + 0x7C280400, // 0131 CALL R10 2 + 0x78120004, // 0132 JMPF R4 #0138 + 0x88280139, // 0133 GETMBR R10 R0 K57 + 0x8C28153B, // 0134 GETMET R10 R10 K59 + 0x5C300000, // 0135 MOVE R12 R0 + 0x7C280400, // 0136 CALL R10 2 + 0x70020003, // 0137 JMP #013C + 0x8C280132, // 0138 GETMET R10 R0 K50 + 0x5C300A00, // 0139 MOVE R12 R5 + 0x50340200, // 013A LDBOOL R13 1 0 + 0x7C280600, // 013B CALL R10 3 + 0x50100200, // 013C LDBOOL R4 1 0 + 0x70020006, // 013D JMP #0145 + 0xB82A0400, // 013E GETNGBL R10 K2 + 0x602C0008, // 013F GETGBL R11 G8 + 0x5C301200, // 0140 MOVE R12 R9 + 0x7C2C0200, // 0141 CALL R11 1 + 0x002E7E0B, // 0142 ADD R11 K63 R11 + 0x58300021, // 0143 LDCONST R12 K33 + 0x7C280400, // 0144 CALL R10 2 + 0xA8040001, // 0145 EXBLK 1 1 + 0x80040800, // 0146 RET 1 R4 0xA8040001, // 0147 EXBLK 1 1 - 0x80040800, // 0148 RET 1 R4 - 0xA8040001, // 0149 EXBLK 1 1 - 0x70020017, // 014A JMP #0163 - 0xAC140002, // 014B CATCH R5 0 2 - 0x70020014, // 014C JMP #0162 - 0xB81E0400, // 014D GETNGBL R7 K2 - 0x60200008, // 014E GETGBL R8 G8 - 0x5C240A00, // 014F MOVE R9 R5 - 0x7C200200, // 0150 CALL R8 1 - 0x00228008, // 0151 ADD R8 K64 R8 - 0x00201141, // 0152 ADD R8 R8 K65 - 0x60240008, // 0153 GETGBL R9 G8 - 0x5C280C00, // 0154 MOVE R10 R6 - 0x7C240200, // 0155 CALL R9 1 - 0x00201009, // 0156 ADD R8 R8 R9 - 0x58240042, // 0157 LDCONST R9 K66 - 0x7C1C0400, // 0158 CALL R7 2 - 0xB81E2E00, // 0159 GETNGBL R7 K23 - 0x881C0F43, // 015A GETMBR R7 R7 K67 - 0x781E0002, // 015B JMPF R7 #015F - 0xA41E8800, // 015C IMPORT R7 K68 - 0x8C200F45, // 015D GETMET R8 R7 K69 - 0x7C200200, // 015E CALL R8 1 - 0x501C0000, // 015F LDBOOL R7 0 0 - 0x80040E00, // 0160 RET 1 R7 - 0x70020000, // 0161 JMP #0163 - 0xB0080000, // 0162 RAISE 2 R0 R0 - 0x80000000, // 0163 RET 0 + 0x70020017, // 0148 JMP #0161 + 0xAC140002, // 0149 CATCH R5 0 2 + 0x70020014, // 014A JMP #0160 + 0xB81E0400, // 014B GETNGBL R7 K2 + 0x60200008, // 014C GETGBL R8 G8 + 0x5C240A00, // 014D MOVE R9 R5 + 0x7C200200, // 014E CALL R8 1 + 0x00228008, // 014F ADD R8 K64 R8 + 0x00201141, // 0150 ADD R8 R8 K65 + 0x60240008, // 0151 GETGBL R9 G8 + 0x5C280C00, // 0152 MOVE R10 R6 + 0x7C240200, // 0153 CALL R9 1 + 0x00201009, // 0154 ADD R8 R8 R9 + 0x58240042, // 0155 LDCONST R9 K66 + 0x7C1C0400, // 0156 CALL R7 2 + 0xB81E2E00, // 0157 GETNGBL R7 K23 + 0x881C0F43, // 0158 GETMBR R7 R7 K67 + 0x781E0002, // 0159 JMPF R7 #015D + 0xA41E8800, // 015A IMPORT R7 K68 + 0x8C200F45, // 015B GETMET R8 R7 K69 + 0x7C200200, // 015C CALL R8 1 + 0x501C0000, // 015D LDBOOL R7 0 0 + 0x80040E00, // 015E RET 1 R7 + 0x70020000, // 015F JMP #0161 + 0xB0080000, // 0160 RAISE 2 R0 R0 + 0x80000000, // 0161 RET 0 }) ) ); @@ -642,13 +640,13 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(x_flag_r), /* K1 */ be_nested_str_weak(build_standalone_ack), - /* K2 */ be_nested_str_weak(encode_frame), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(loglevel), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), - /* K7 */ be_nested_str_weak(session), - /* K8 */ be_nested_str_weak(local_session_id), + /* K2 */ be_nested_str_weak(local_session_id), + /* K3 */ be_nested_str_weak(encode_frame), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(loglevel), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), + /* K8 */ be_nested_str_weak(session), /* K9 */ be_nested_str_weak(ack_message_counter), /* K10 */ be_nested_str_weak(message_counter), /* K11 */ be_nested_str_weak(_X7Breliable_X7D), @@ -657,37 +655,39 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ }), be_str_weak(send_simple_ack), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ + ( &(const binstruction[32]) { /* code */ 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x780E001A, // 0001 JMPF R3 #001D + 0x780E001C, // 0001 JMPF R3 #001F 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x5C140400, // 0003 MOVE R5 R2 0x7C0C0400, // 0004 CALL R3 2 - 0x8C100702, // 0005 GETMET R4 R3 K2 - 0x7C100200, // 0006 CALL R4 1 - 0xB8120600, // 0007 GETNGBL R4 K3 - 0x8C100904, // 0008 GETMET R4 R4 K4 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C100400, // 000A CALL R4 2 - 0x7812000D, // 000B JMPF R4 #001A - 0xB8120A00, // 000C GETNGBL R4 K5 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180006, // 000E LDCONST R6 K6 - 0x881C0707, // 000F GETMBR R7 R3 K7 - 0x881C0F08, // 0010 GETMBR R7 R7 K8 - 0x88200709, // 0011 GETMBR R8 R3 K9 - 0x8824070A, // 0012 GETMBR R9 R3 K10 - 0x780A0001, // 0013 JMPF R2 #0016 - 0x5828000B, // 0014 LDCONST R10 K11 - 0x70020000, // 0015 JMP #0017 - 0x5828000C, // 0016 LDCONST R10 K12 - 0x7C140A00, // 0017 CALL R5 5 - 0x541A0003, // 0018 LDINT R6 4 - 0x7C100400, // 0019 CALL R4 2 - 0x8C10010D, // 001A GETMET R4 R0 K13 - 0x5C180600, // 001B MOVE R6 R3 - 0x7C100400, // 001C CALL R4 2 - 0x80000000, // 001D RET 0 + 0x88100302, // 0005 GETMBR R4 R1 K2 + 0x900E0404, // 0006 SETMBR R3 K2 R4 + 0x8C100703, // 0007 GETMET R4 R3 K3 + 0x7C100200, // 0008 CALL R4 1 + 0xB8120800, // 0009 GETNGBL R4 K4 + 0x8C100905, // 000A GETMET R4 R4 K5 + 0x541A0003, // 000B LDINT R6 4 + 0x7C100400, // 000C CALL R4 2 + 0x7812000D, // 000D JMPF R4 #001C + 0xB8120C00, // 000E GETNGBL R4 K6 + 0x60140018, // 000F GETGBL R5 G24 + 0x58180007, // 0010 LDCONST R6 K7 + 0x881C0708, // 0011 GETMBR R7 R3 K8 + 0x881C0F02, // 0012 GETMBR R7 R7 K2 + 0x88200709, // 0013 GETMBR R8 R3 K9 + 0x8824070A, // 0014 GETMBR R9 R3 K10 + 0x780A0001, // 0015 JMPF R2 #0018 + 0x5828000B, // 0016 LDCONST R10 K11 + 0x70020000, // 0017 JMP #0019 + 0x5828000C, // 0018 LDCONST R10 K12 + 0x7C140A00, // 0019 CALL R5 5 + 0x541A0003, // 001A LDINT R6 4 + 0x7C100400, // 001B CALL R4 2 + 0x8C10010D, // 001C GETMET R4 R0 K13 + 0x5C180600, // 001D MOVE R6 R3 + 0x7C100400, // 001E CALL R4 2 + 0x80000000, // 001F RET 0 }) ) ); From 5decd012995047f90d8b54248ab7a8c9c974b257 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 22 Jun 2024 10:17:50 +0200 Subject: [PATCH 077/252] Matter add copy to Path (#21674) --- .../src/embedded/Matter_Path_0.be | 8 +++ .../src/solidify/solidified_Matter_Path_0.h | 57 ++++++++++++++++--- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be index ff675c136..b9b81c5ce 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be @@ -36,6 +36,14 @@ class Matter_Path var log # any string that needs to be logged (used to show significant parameters for commands) var msg # reference of the original message + # copy from an aobject that has also endpoint/cluster/attribute variables + def copy(c) + self.reset() + self.endpoint = c.endpoint + self.cluster = c.cluster + self.attribute = c.attribute + end + # reset the object, allows reuse of the same object def reset() var n = nil # it's actually more compact code to load `nil` into a register and assign all members diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h index dddd45953..0fb2d42fd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h @@ -123,6 +123,44 @@ be_local_closure(class_Matter_Path_tostring, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: copy +********************************************************************/ +extern const bclass be_class_Matter_Path; +be_local_closure(class_Matter_Path_copy, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Path, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + }), + be_str_weak(copy), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x88080301, // 0002 GETMBR R2 R1 K1 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x88080302, // 0004 GETMBR R2 R1 K2 + 0x90020402, // 0005 SETMBR R0 K2 R2 + 0x88080303, // 0006 GETMBR R2 R1 K3 + 0x90020602, // 0007 SETMBR R0 K3 R2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: reset ********************************************************************/ @@ -172,18 +210,19 @@ be_local_closure(class_Matter_Path_reset, /* name */ be_local_class(Matter_Path, 8, NULL, - be_nested_map(10, + be_nested_map(11, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(attribute, -1), be_const_var(2) }, - { be_const_key_weak(log, 0), be_const_var(6) }, - { be_const_key_weak(fabric_filtered, 6), be_const_var(3) }, { be_const_key_weak(command, -1), be_const_var(4) }, - { be_const_key_weak(msg, -1), be_const_var(7) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_Matter_Path_tostring_closure) }, + { be_const_key_weak(cluster, 5), be_const_var(1) }, + { be_const_key_weak(attribute, -1), be_const_var(2) }, + { be_const_key_weak(tostring, 9), be_const_closure(class_Matter_Path_tostring_closure) }, + { be_const_key_weak(log, -1), be_const_var(6) }, + { be_const_key_weak(status, 2), be_const_var(5) }, + { be_const_key_weak(endpoint, -1), be_const_var(0) }, + { be_const_key_weak(msg, 6), be_const_var(7) }, + { be_const_key_weak(fabric_filtered, -1), be_const_var(3) }, + { be_const_key_weak(copy, -1), be_const_closure(class_Matter_Path_copy_closure) }, { be_const_key_weak(reset, -1), be_const_closure(class_Matter_Path_reset_closure) }, - { be_const_key_weak(cluster, -1), be_const_var(1) }, - { be_const_key_weak(endpoint, 3), be_const_var(0) }, - { be_const_key_weak(status, -1), be_const_var(5) }, })), be_str_weak(Matter_Path) ); From 3701a8cedc59d9fdf4a5763a662e8d8f765500fa Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Jun 2024 12:54:08 +0200 Subject: [PATCH 078/252] Update changelogs --- CHANGELOG.md | 12 ++++++++++-- RELEASENOTES.md | 10 ++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f855c210..18d3b5d35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - Matter support for Rain sensor (#21633) - Matter add internal debug option (#21634) - Matter add Fan support (virtual only) (#21637) +- Matter show event name in logs (#21649) ### Breaking Changed @@ -18,11 +19,18 @@ All notable changes to this project will be documented in this file. - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - SML replace vars in descriptor and line (#21622) - NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) -- NeoPool make compiler setting available by user_config_override.h +- NeoPool make compiler setting available by `user_config_override.h` (#21645) +- ESP32 MI32 improve parser (#21648) +- ESP8266 platform update from 2024.01.01 to 2024.06.00 (#21668) +- ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 (#21668) ### Fixed - Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) -- Matter CASE Sigma1 resumption mode for faster reconnection +- Matter CASE Sigma1 resumption mode for faster reconnection (#21644) +- Shutter MQTT on inverted shutter (#21663) +- Scripter TCP server (#21660) +- Matter TLV.U8 unsigned encoding (#21672) +- Matter resumption final ack (#21673) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fb5f57af5..f75cd7a0c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -133,22 +133,32 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) - Matter add internal debug option [#21634](https://github.com/arendst/Tasmota/issues/21634) - Matter add Fan support (virtual only) [#21637](https://github.com/arendst/Tasmota/issues/21637) +- Matter show event name in logs [#21649](https://github.com/arendst/Tasmota/issues/21649) ### Changed +- ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) +- ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668) - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 - Allow receive or send using SerialBridge - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - SML replace vars in descriptor and line [#21622](https://github.com/arendst/Tasmota/issues/21622) - NeoPool using temperature as only frequently changing value for NPTeleperiod [#21628](https://github.com/arendst/Tasmota/issues/21628) +- NeoPool make compiler setting available by `user_config_override.h` [#21645](https://github.com/arendst/Tasmota/issues/21645) - ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) +- ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) - Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633) ### Fixed +- Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663) +- Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660) - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) +- Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644) +- Matter TLV.U8 unsigned encoding [#21672](https://github.com/arendst/Tasmota/issues/21672) +- Matter resumption final ack [#21673](https://github.com/arendst/Tasmota/issues/21673) ### Removed From 0ea245805b0f31a7734546c2652c65cd275945ff Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 22 Jun 2024 13:02:58 +0200 Subject: [PATCH 079/252] Remove entrys in some boards.json (#21676) which maybe are wrong, since we don't know if the MCU is connected via CDC or USB-serial chip. --- boards/esp32c3.json | 4 ---- boards/esp32c6.json | 4 ---- boards/esp32s3-opi_opi.json | 10 ---------- boards/esp32s3-opi_opi_120.json | 4 ---- boards/esp32s3-qio_opi.json | 10 ---------- boards/esp32s3-qio_opi_120.json | 4 ---- boards/esp32s3-qio_qspi.json | 10 ---------- boards/esp32s3-qio_qspi_120.json | 4 ---- 8 files changed, 50 deletions(-) diff --git a/boards/esp32c3.json b/boards/esp32c3.json index 5f77c6990..0dd61b4f9 100644 --- a/boards/esp32c3.json +++ b/boards/esp32c3.json @@ -14,10 +14,6 @@ "bluetooth" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32c3.cfg" }, "frameworks": [ diff --git a/boards/esp32c6.json b/boards/esp32c6.json index dd5515743..c87d992a8 100644 --- a/boards/esp32c6.json +++ b/boards/esp32c6.json @@ -14,10 +14,6 @@ "bluetooth" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32c6.cfg" }, "frameworks": [ diff --git a/boards/esp32s3-opi_opi.json b/boards/esp32s3-opi_opi.json index 25541b95d..f8f99cc82 100644 --- a/boards/esp32s3-opi_opi.json +++ b/boards/esp32s3-opi_opi.json @@ -8,12 +8,6 @@ "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "dout", - "hwids": [ - [ - "0x303A", - "0x1001" - ] - ], "mcu": "esp32s3", "variant": "esp32s3", "partitions": "partitions/esp32_partition_app2880k_fs320k.csv" @@ -24,10 +18,6 @@ "ethernet" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32s3.cfg" }, "frameworks": [ diff --git a/boards/esp32s3-opi_opi_120.json b/boards/esp32s3-opi_opi_120.json index ab9ef01fb..771dc90c0 100644 --- a/boards/esp32s3-opi_opi_120.json +++ b/boards/esp32s3-opi_opi_120.json @@ -20,10 +20,6 @@ "ethernet" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32s3.cfg" }, "frameworks": [ diff --git a/boards/esp32s3-qio_opi.json b/boards/esp32s3-qio_opi.json index c005158db..6f4754ead 100644 --- a/boards/esp32s3-qio_opi.json +++ b/boards/esp32s3-qio_opi.json @@ -8,12 +8,6 @@ "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", - "hwids": [ - [ - "0x303A", - "0x1001" - ] - ], "mcu": "esp32s3", "variant": "esp32s3", "partitions": "partitions/esp32_partition_app2880k_fs320k.csv" @@ -24,10 +18,6 @@ "ethernet" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32s3.cfg" }, "frameworks": [ diff --git a/boards/esp32s3-qio_opi_120.json b/boards/esp32s3-qio_opi_120.json index 42589ce05..0a4704a92 100644 --- a/boards/esp32s3-qio_opi_120.json +++ b/boards/esp32s3-qio_opi_120.json @@ -20,10 +20,6 @@ "ethernet" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32s3.cfg" }, "frameworks": [ diff --git a/boards/esp32s3-qio_qspi.json b/boards/esp32s3-qio_qspi.json index eb834f0c2..6a1e38906 100644 --- a/boards/esp32s3-qio_qspi.json +++ b/boards/esp32s3-qio_qspi.json @@ -8,12 +8,6 @@ "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", - "hwids": [ - [ - "0x303A", - "0x1001" - ] - ], "mcu": "esp32s3", "variant": "esp32s3", "partitions": "partitions/esp32_partition_app2880k_fs320k.csv" @@ -24,10 +18,6 @@ "ethernet" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32s3.cfg" }, "frameworks": [ diff --git a/boards/esp32s3-qio_qspi_120.json b/boards/esp32s3-qio_qspi_120.json index b1d89db91..1c1968916 100644 --- a/boards/esp32s3-qio_qspi_120.json +++ b/boards/esp32s3-qio_qspi_120.json @@ -20,10 +20,6 @@ "ethernet" ], "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], "openocd_target": "esp32s3.cfg" }, "frameworks": [ From c96a48b9e10357b07c7e9a4bab6c00fdf633ff4c Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 22 Jun 2024 13:07:49 +0200 Subject: [PATCH 080/252] Matter refactor reading of multiple attributes to reduce memory pressure (#21675) --- CHANGELOG.md | 2 + .../berry_matter/src/be_matter_module.c | 6 +- .../berry_matter/src/embedded/Matter_IM.be | 554 +- .../src/embedded/Matter_IM_Message.be | 177 +- .../src/embedded/Matter_Path_1_Generator.be | 144 +- .../src/embedded/Matter_zz_Device.be | 56 +- .../src/solidify/solidified_Matter_IM.h | 5021 ++++++++--------- .../solidify/solidified_Matter_IM_Message.h | 803 +-- .../solidified_Matter_Path_1_Generator.h | 939 +-- .../solidify/solidified_Matter_zz_Device.h | 180 +- 10 files changed, 3916 insertions(+), 3966 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18d3b5d35..44c81e329 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,10 +19,12 @@ All notable changes to this project will be documented in this file. - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - SML replace vars in descriptor and line (#21622) - NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) +- NeoPool make compiler setting available by user_config_override.h - NeoPool make compiler setting available by `user_config_override.h` (#21645) - ESP32 MI32 improve parser (#21648) - ESP8266 platform update from 2024.01.01 to 2024.06.00 (#21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 (#21668) +- Matter refactor reading of multiple attributes to reduce memory pressure ### Fixed - Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 673280191..e020ecfac 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -458,9 +458,9 @@ module matter (scope: global, strings: weak) { IM_Status, class(be_class_Matter_IM_Status) IM_InvokeResponse, class(be_class_Matter_IM_InvokeResponse) IM_WriteResponse, class(be_class_Matter_IM_WriteResponse) - IM_ReportData, class(be_class_Matter_IM_ReportData) - IM_ReportDataSubscribed, class(be_class_Matter_IM_ReportDataSubscribed) - IM_SubscribeResponse, class(be_class_Matter_IM_SubscribeResponse) + IM_ReportData_Pull, class(be_class_Matter_IM_ReportData_Pull) + IM_ReportDataSubscribed_Pull, class(be_class_Matter_IM_ReportDataSubscribed_Pull) + IM_SubscribeResponse_Pull, class(be_class_Matter_IM_SubscribeResponse_Pull) IM_SubscribedHeartbeat, class(be_class_Matter_IM_SubscribedHeartbeat) IM_Subscription, class(be_class_Matter_IM_Subscription) IM_Subscription_Shop, class(be_class_Matter_IM_Subscription_Shop) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 007f68ad5..cff1234ab 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -75,14 +75,16 @@ class Matter_IM return self.process_status_response(msg, val) elif opcode == 0x02 # Read Request # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request - return self.process_read_request(msg, val) + return self.process_read_request_pull(msg, val) elif opcode == 0x03 # Subscribe Request self.send_ack_now(msg) return self.subscribe_request(msg, val) elif opcode == 0x04 # Subscribe Response - return self.subscribe_response(msg, val) + # return self.subscribe_response(msg, val) + return false # not implemented for Matter device elif opcode == 0x05 # Report Data - return self.report_data(msg, val) + # return self.report_data(msg, val) + return false # not implemented for Matter device elif opcode == 0x06 # Write Request self.send_ack_now(msg) return self.process_write_request(msg, val) @@ -92,7 +94,8 @@ class Matter_IM # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request return self.process_invoke_request(msg, val) elif opcode == 0x09 # Invoke Response - return self.process_invoke_response(msg, val) + # return self.process_invoke_response(msg, val) + return false # not implemented for Matter device elif opcode == 0x0A # Timed Request return self.process_timed_request(msg, val) end @@ -222,210 +225,83 @@ class Matter_IM end ############################################################# - # Inner code shared between read_attributes and subscribe_request + # read_single_attribute_to_bytes # - # query: `ReadRequestMessage` or `SubscribeRequestMessage` - def _inner_process_read_request(session, query, msg, no_log) + # Takes a concrete context (endpoint/cluster/attribute) + # and a plugin reference, return either the bytes object + # or an array of bytes() if the response does not fit in + # a single packet + # + # `pi` is the plugin object + # if `pi` is nil, just report the status for ctx.status + # `ctx` is the context with endpoint/cluster/attribute, `cts.status` is non-nil for direct request and contains the error message to show + # `session` is the current session + # `force_log` is false, then don't log normal values - typically used to not log wildcard requests + # + # return `true` if + def read_single_attribute_to_bytes(pi, ctx, session, force_log) + var TLV = matter.TLV + var attr_name + if tasmota.loglevel(3) + attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) + attr_name = attr_name ? " (" + attr_name + ")" : "" + end - ### Inner function to be iterated upon - # ret is the ReportDataMessage list to send back - # ctx is the context with endpoint/cluster/attribute - # direct is true if error is reported, false if error is silently ignored - # - # if `pi` is nil, just report the status for ctx.status - # - # should return true if answered, false if passing to next handler - def read_single_attribute(ret, pi, ctx, direct) - var TLV = matter.TLV - var attr_name - if tasmota.loglevel(3) - attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - attr_name = attr_name ? " (" + attr_name + ")" : "" + # Special case to report unsupported item, if pi==nil + var direct = (ctx.status != nil) # memorize if the request is 'direct', ctx.status may be changed later + var res + var ret_raw_or_list # contains either a bytes() buffer to append, or a list of bytes(), or nil + if (pi != nil) + res = pi.read_attribute(session, ctx, self.tlv_solo) + end + + # dispatch depending on the result of the `read_attribute` method + if res != nil # we got an actual value + # get the value with anonymous tag before it is tagged, for logging + var res_str = "" + if tasmota.loglevel(3) && force_log + res_str = res.to_str_val() end - # Special case to report unsupported item, if pi==nil - ctx.status = nil # reset status, just in case - var res = (pi != nil) ? pi.read_attribute(session, ctx, self.tlv_solo) : nil - var found = true # stop expansion since we have a value - var a1_raw_or_list # contains either a bytes() buffer to append, or a list of bytes(), or nil - if res != nil - var res_str = "" - if !no_log - res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging - end + # check if too big to encode as a single packet, only for list and array + if (res.is_list || res.is_array) && (res.encode_len() > matter.IM_ReportData_Pull.MAX_MESSAGE) + ret_raw_or_list = [] # we return a list of block + var a1_raw = bytes(48) + var empty_list = TLV.Matter_TLV_array() + self.attributedata2raw(a1_raw, ctx, empty_list, false) + ret_raw_or_list.push(a1_raw) - # check if too big to encode as a single packet - if (res.is_list || res.is_array) && res.encode_len() > matter.IM_ReportData.MAX_MESSAGE - # log(f"MTR: >>>>>> long response", 3) - a1_raw_or_list = [] # we return a list of block - var a1_raw = bytes(48) - var empty_list = TLV.Matter_TLV_array() - self.attributedata2raw(a1_raw, ctx, empty_list, false) - a1_raw_or_list.push(a1_raw) - # log(f"MTR: >>>>>> long response global DELETE {a1_raw.tohex()}", 3) - - for elt:res.val - a1_raw = bytes(48) - # var list_item = TLV.Matter_TLV_array() - # list_item.val.push(elt) - self.attributedata2raw(a1_raw, ctx, elt, true #- add ListIndex:null -#) - # log(f"MTR: >>>>>> long response global ADD {a1_raw.tohex()}", 3) - a1_raw_or_list.push(a1_raw) - end - # log(f"MTR: >>>>>> long response global {a1_raw_or_list}", 3) - else - # normal encoding - # encode directly raw bytes() - a1_raw_or_list = bytes(48) # pre-reserve 48 bytes - self.attributedata2raw(a1_raw_or_list, ctx, res) - end - - if tasmota.loglevel(3) && !no_log - log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) - end - elif ctx.status != nil - if direct # we report an error only if a concrete direct read, not with wildcards - # encode directly raw bytes() - a1_raw_or_list = bytes(48) # pre-reserve 48 bytes - self.attributestatus2raw(a1_raw_or_list, ctx, ctx.status) - - if tasmota.loglevel(3) - log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3) - end + for elt : res.val + a1_raw = bytes(48) + # var list_item = TLV.Matter_TLV_array() + # list_item.val.push(elt) + self.attributedata2raw(a1_raw, ctx, elt, true #- add ListIndex:null -#) + ret_raw_or_list.push(a1_raw) end else - if tasmota.loglevel(3) && !no_log - log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3) - end - # ignore if content is nil and status is undefined - if direct - found = false - end + # normal encoding + # encode directly raw bytes() + ret_raw_or_list = bytes(48) # pre-reserve 48 bytes + self.attributedata2raw(ret_raw_or_list, ctx, res) end - # a1_raw_or_list if either nil, bytes(), of list(bytes()) - var idx = isinstance(a1_raw_or_list, list) ? 0 : nil # index in list, or nil if non-list - while a1_raw_or_list != nil - var elt = (idx == nil) ? a1_raw_or_list : a1_raw_or_list[idx] # dereference - - if size(ret.attribute_reports) == 0 - ret.attribute_reports.push(elt) # push raw binary instead of a TLV - else # already blocks present, see if we can add to the latest, or need to create a new block - var last_block = ret.attribute_reports[-1] - if size(last_block) + size(elt) <= matter.IM_ReportData.MAX_MESSAGE - # add to last block - last_block .. elt - else - ret.attribute_reports.push(elt) # push raw binary instead of a TLV - end - end - - if idx == nil - a1_raw_or_list = nil # stop loop - else - idx += 1 - if idx >= size(a1_raw_or_list) - a1_raw_or_list = nil # stop loop - end - end + if tasmota.loglevel(3) && force_log + log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3) end + # below, we didn't have a response from `read_attribute`, check if ctx.status contains some information + elif ctx.status != nil + if direct # we report an error only if a concrete direct read, not with wildcards + # encode directly raw bytes() + ret_raw_or_list = bytes(48) # pre-reserve 48 bytes + self.attributestatus2raw(ret_raw_or_list, ctx, ctx.status) - # check if we still have enough room in last block - # if a1_raw_or_list # do we have bytes to add, and it's not zero size - # if size(ret.attribute_reports) == 0 - # ret.attribute_reports.push(a1_raw_or_list) # push raw binary instead of a TLV - # else # already blocks present, see if we can add to the latest, or need to create a new block - # var last_block = ret.attribute_reports[-1] - # if size(last_block) + size(a1_raw_or_list) <= matter.IM_ReportData.MAX_MESSAGE - # # add to last block - # last_block .. a1_raw_or_list - # else - # ret.attribute_reports.push(a1_raw_or_list) # push raw binary instead of a TLV - # end - # end - # end - - return found # return true if we had a match - end - - var endpoints = self.device.get_active_endpoints() - # structure is `ReadRequestMessage` 10.6.2 p.558 - var ctx = matter.Path() - ctx.msg = msg - var node_id = (msg != nil) ? msg.get_node_id() : nil - - # prepare the response - var ret = matter.ReportDataMessage() - # ret.suppress_response = true - ret.attribute_reports = [] - - for q:query.attributes_requests - # need to do expansion here - ctx.endpoint = q.endpoint - ctx.cluster = q.cluster - ctx.attribute = q.attribute - ctx.fabric_filtered = query.fabric_filtered - ctx.status = matter.UNSUPPORTED_ATTRIBUTE #default error if returned `nil` - - # expand endpoint - if ctx.endpoint == nil || ctx.cluster == nil || ctx.attribute == nil - # we need expansion, log first if tasmota.loglevel(3) - if ctx.cluster != nil && ctx.attribute != nil - var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 3) - else - log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 3) - end - end - - end - - # implement concrete expansion - self.device.process_attribute_expansion(ctx, - / pi, ctx, direct -> read_single_attribute(ret, pi, ctx, direct) - ) - end - - # tasmota.log(f">>>: event_1") - var event_requests = query.event_requests - var event_filters = query.event_filters - var event_no_min = nil # do we have a filter for minimum event_no (int64 or nil) - if event_requests # if not `nil` and not empty list - # read event minimum - if event_filters - for filter: event_filters # filter is an instance of `EventFilterIB` - tasmota.log(f"MTR: EventFilter {filter=} {node_id=}", 3) - var filter_node = int64.toint64(filter.node) # nil or int64 - if filter_node # there is a filter on node-id - if filter.node.tobytes() != node_id # the node id doesn't match - tasmota.log(f"MTR: node_id filter {filter_node.tobytes().tohex()} doesn't match {node_id.tohex()}") - continue - end - # specified minimum value - var new_event_no_min = int64.toint64(filter.event_min) - if (event_no_min != nil) || (event_no_min < new_event_no_min) - event_no_min = new_event_no_min - end - end + log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3) end end - # event_no_min is either `nil` or has an `int64` value - - ret.event_reports = [] - for q: event_requests - # need to do expansion here - ctx.endpoint = q.endpoint - ctx.cluster = q.cluster - ctx.attribute = q.event - #TODO - tasmota.log(f"MTR: >Read_Event({session.local_session_id:%6i}) {ctx}", 3) - end end - # tasmota.log("MTR: ReportDataMessage=" + str(ret), 3) - # tasmota.log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3) - return ret + return ret_raw_or_list end ############################################################# @@ -713,20 +589,75 @@ class Matter_IM end ############################################################# - # process IM 0x02 Read Request + # process IM 0x02 Read Request (Pull Mode) # # val is the TLV structure # + # This version lazily reads attributes when building the response packets + # # returns `true` if processed, `false` if silently ignored, # or raises an exception - def process_read_request(msg, val) - matter.profiler.log("read_request_start") + def process_read_request_pull(msg, val) + matter.profiler.log("read_request_start_pull") var query = matter.ReadRequestMessage().from_TLV(val) + var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg) + + self.send_report_data_pull(msg, generator_or_arr) # pack into a response structure that will read attributes when expansion is triggered + + return true + end + + + ############################################################# + # process_read_or_subscribe_request_pull + # + # This version lazily reads attributes when building the response packets + # + # returns `true` if processed, `false` if silently ignored, + # or raises an exception + def process_read_or_subscribe_request_pull(query, msg) if query.attributes_requests != nil - var ret = self._inner_process_read_request(msg.session, query, msg) - self.send_report_data(msg, ret) + var generator_or_arr # single path generator (common case) or array of generators + var node_id = (msg != nil) ? msg.get_node_id() : nil + + # structure is `ReadRequestMessage` 10.6.2 p.558 + if size(query.attributes_requests) > 1 + generator_or_arr = [] + end + + for q : query.attributes_requests + var gen = matter.PathGenerator(self.device) + gen.start(q.endpoint, q.cluster, q.attribute, query.fabric_filtered) + + if size(query.attributes_requests) > 1 + generator_or_arr.push(gen) + else + generator_or_arr = gen + end + + if tasmota.loglevel(3) + # log read request if it contains expansion (wildcard), single reads are logged at concrete time + if q.endpoint == nil || q.cluster == nil || q.attribute == nil + # we need expansion, log first + var ctx = matter.Path() + ctx.endpoint = q.endpoint + ctx.cluster = q.cluster + ctx.attribute = q.attribute + ctx.fabric_filtered = query.fabric_filtered + var ctx_str = str(ctx) + + if q.cluster != nil && q.attribute != nil + var attr_name = matter.get_attribute_name(q.cluster, q.attribute) + log(format("MTR: >Read_Attr (%6i) %s", msg.session.local_session_id, ctx_str + (attr_name ? " (" + attr_name + ")" : "")), 3) + else + log(format("MTR: >Read_Attr (%6i) %s", msg.session.local_session_id, ctx_str), 3) + end + end + end + end + return generator_or_arr end - return true # always consider succesful even if empty + return nil end ############################################################# @@ -755,13 +686,13 @@ class Matter_IM if res != nil # check if the payload is a complex structure and too long to fit in a single response packet - if (res.is_list || res.is_array) && (res.encode_len() > matter.IM_ReportData.MAX_MESSAGE) + if (res.is_list || res.is_array) && (res.encode_len() > matter.IM_ReportData_Pull.MAX_MESSAGE) # revert to standard # the attribute will be read again, but it's hard to avoid it res = nil # indicated to GC that we don't need it again log(f"MTR: Response to big, revert to non-solo", 3) var val = matter.TLV.parse(msg.raw, msg.app_payload_idx) - return self.process_read_request(msg, val) + return self.process_read_request_pull(msg, val) end # encode directly raw bytes() raw = bytes(48) # pre-reserve 48 bytes @@ -850,6 +781,7 @@ class Matter_IM var query = matter.SubscribeRequestMessage().from_TLV(val) if !query.keep_subscriptions + # log(f"MTR: remove all subscriptions for session {msg.session}", 3) self.subs_shop.remove_by_session(msg.session) # if `keep_subscriptions`, kill all subscriptions from current session end @@ -858,26 +790,27 @@ class Matter_IM var sub = self.subs_shop.new_subscription(msg.session, query) # expand a string with all attributes requested - var attr_req = [] - var ctx = matter.Path() - ctx.msg = msg - for q:query.attributes_requests - ctx.endpoint = q.endpoint - ctx.cluster = q.cluster - ctx.attribute = q.attribute - attr_req.push(str(ctx)) + if tasmota.loglevel(3) + var attr_req = [] + var ctx = matter.Path() + ctx.msg = msg + for q:query.attributes_requests + ctx.endpoint = q.endpoint + ctx.cluster = q.cluster + ctx.attribute = q.attribute + attr_req.push(str(ctx)) + end + log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s attr_req=%s event_req=%s", + msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, + sub.subscription_id, query.fabric_filtered, + query.attributes_requests != nil ? size(query.attributes_requests) : "-", + query.event_requests != nil ? size(query.event_requests) : "-"), 3) end - log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s attr_req=%s event_req=%s", - msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, - sub.subscription_id, query.fabric_filtered, - query.attributes_requests != nil ? size(query.attributes_requests) : "-", - query.event_requests != nil ? size(query.event_requests) : "-"), 3) - var ret = self._inner_process_read_request(msg.session, query, msg, !self.device.debug #-log only if debug enabled-#) - # ret is of type `Matter_ReportDataMessage` - ret.subscription_id = sub.subscription_id # enrich with subscription id TODO - self.send_subscribe_response(msg, ret, sub) + var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg) + self.send_subscribe_response_pull(msg, generator_or_arr, sub) # pack into a response structure that will read attributes when expansion is triggered return true + end ############################################################# @@ -1030,19 +963,53 @@ class Matter_IM ############################################################# # process IM 0x04 Subscribe Response # - def subscribe_response(msg, val) - var query = matter.SubscribeResponseMessage().from_TLV(val) - # log("MTR: received SubscribeResponsetMessage=" + str(query), 4) - return false - end + # def subscribe_response(msg, val) + # var query = matter.SubscribeResponseMessage().from_TLV(val) + # # log("MTR: received SubscribeResponsetMessage=" + str(query), 4) + # return false + # end ############################################################# # process IM 0x05 ReportData # - def report_data(msg, val) - var query = matter.ReportDataMessage().from_TLV(val) - # log("MTR: received ReportDataMessage=" + str(query), 4) - return false + # def report_data(msg, val) + # var query = matter.ReportDataMessage().from_TLV(val) + # # log("MTR: received ReportDataMessage=" + str(query), 4) + # return false + # end + + + ############################################################# + # write_single_attribute_status_to_bytes + # + # Takes a concrete context (endpoint/cluster/attribute) + # and a status, and completes the WriteResponseMessage (in ret) + # + # `ret` is the array WriteResponseMessage.write_responses + # `ctx` is the context with endpoint/cluster/attribute, `cts.status` is non-nil for direct request and contains the error message to show + # `write_data` the data written, only for logging + # + def write_single_attribute_status_to_bytes(ret, ctx, write_data) + var TLV = matter.TLV + var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) + attr_name = attr_name ? " (" + attr_name + ")" : "" + + # output only if there is a status + if ctx.status != nil + var a1 = matter.AttributeStatusIB() + a1.path = matter.AttributePathIB() + a1.status = matter.StatusIB() + a1.path.endpoint = ctx.endpoint + a1.path.cluster = ctx.cluster + a1.path.attribute = ctx.attribute + a1.status.status = ctx.status + + ret.write_responses.push(a1) + log(format("MTR: >Write_Attr%s%s - %s STATUS: 0x%02X %s", str(ctx), attr_name, write_data, ctx.status, ctx.status == matter.SUCCESS ? "SUCCESS" : ""), (ctx.endpoint != 0) ? 2 : 3) + elif tasmota.loglevel(3) + log(format("MTR: >Write_Attr%s%s - IGNORED", str(ctx), attr_name), 3) + # ignore if content is nil and status is undefined + end end ############################################################# @@ -1051,93 +1018,59 @@ class Matter_IM def process_write_request(msg, val) var query = matter.WriteRequestMessage().from_TLV(val) # log("MTR: received WriteRequestMessage=" + str(query), 3) + var ctx_log = matter.Path() # pre-allocate object for logging var suppress_response = query.suppress_response # var timed_request = query.timed_request # TODO not supported # var more_chunked_messages = query.more_chunked_messages # TODO not supported - var endpoints = self.device.get_active_endpoints() - - ### Inner function to be iterated upon - # ret is the ReportDataMessage list to send back - # ctx is the context with endpoint/cluster/attribute - # val is the TLV object containing the value - # direct is true if error is reported, false if error is silently ignored - # - # if `pi` is nil, just report the status for ctx.status - # - # should return true if answered, false if failed - def write_single_attribute(ret, pi, ctx, write_data, direct) - var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - attr_name = attr_name ? " (" + attr_name + ")" : "" - # log(format("MTR: Read Attribute " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 2) - # Special case to report unsupported item, if pi==nil - ctx.status = matter.UNSUPPORTED_WRITE - var res = (pi != nil) ? pi.write_attribute(msg.session, ctx, write_data) : nil - if res ctx.status = matter.SUCCESS end # if the cb returns true, the request was processed - if ctx.status != nil - if direct - var a1 = matter.AttributeStatusIB() - a1.path = matter.AttributePathIB() - a1.status = matter.StatusIB() - a1.path.endpoint = ctx.endpoint - a1.path.cluster = ctx.cluster - a1.path.attribute = ctx.attribute - a1.status.status = ctx.status - - ret.write_responses.push(a1) - log(format("MTR: Write_Attr %s%s - STATUS: 0x%02X %s", str(ctx), attr_name, ctx.status, ctx.status == matter.SUCCESS ? "SUCCESS" : ""), (ctx.endpoint != 0) ? 2 : 3) - return true - end - else - log(format("MTR: Write_Attr %s%s - IGNORED", str(ctx), attr_name), 3) - # ignore if content is nil and status is undefined - end - end - - # structure is `ReadRequestMessage` 10.6.2 p.558 - # log("MTR: IM:write_request processing start", 4) - var ctx = matter.Path() - ctx.msg = msg - if query.write_requests != nil # prepare the response var ret = matter.WriteResponseMessage() # ret.suppress_response = true ret.write_responses = [] + var generator = matter.PathGenerator(self.device) for q:query.write_requests # q is AttributeDataIB - var path = q.path + var write_path = q.path var write_data = q.data - # need to do expansion here - ctx.endpoint = path.endpoint - ctx.cluster = path.cluster - ctx.attribute = path.attribute - ctx.status = matter.UNSUPPORTED_ATTRIBUTE #default error if returned `nil` + ctx_log.copy(write_path) # copy endpoint/cluster/attribute in ctx_log for pretty logging # return an error if the expansion is illegal - if ctx.cluster == nil || ctx.attribute == nil - # force INVALID_ACTION reporting - ctx.status = matter.INVALID_ACTION - write_single_attribute(ret, nil, ctx, nil, true) + if write_path.cluster == nil || write_path.attribute == nil + ctx_log.status = matter.INVALID_ACTION + self.write_single_attribute_status_to_bytes(ret, ctx_log, nil) continue end - # expand endpoint - if tasmota.loglevel(3) && (ctx.endpoint == nil) - # we need expansion, log first - var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) - log("MTR: Write_Attr " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 3) + # expansion is only allowed on endpoint number, log if it happens + if (write_path.endpoint == nil) && tasmota.loglevel(3) + var attr_name = matter.get_attribute_name(write_path.cluster, write_path.attribute) + log("MTR: Write_Attr " + str(ctx_log) + (attr_name ? " (" + attr_name + ")" : ""), 3) end - # implement concrete expansion - self.device.process_attribute_expansion(ctx, - / pi, ctx, direct -> write_single_attribute(ret, pi, ctx, write_data, direct) - ) - end + generator.start(write_path.endpoint, write_path.cluster, write_path.attribute) + var direct = generator.is_direct() + var ctx + while (ctx := generator.next()) + ctx.msg = msg # enrich with message + if ctx.status != nil # no match, return error because it was direct + ctx.status = nil # remove status to silence output + self.write_single_attribute_status_to_bytes(ret, ctx, write_data) - # log("MTR: ReportWriteMessage=" + str(ret), 4) - # log("MTR: ReportWriteMessageTLV=" + str(ret.to_TLV()), 3) + else # ctx.status is nil, it exists + + var pi = generator.get_pi() + ctx.status = matter.UNSUPPORTED_WRITE + # ctx.status = matter.UNSUPPORTED_WRITE + var res = (pi != nil) ? pi.write_attribute(msg.session, ctx, write_data) : nil + if (res) ctx.status = matter.SUCCESS end # if the cb returns true, the request was processed + + self.write_single_attribute_status_to_bytes(ret, ctx, write_data) + end + end + + end # send the reponse that may need to be chunked if too large to fit in a single UDP message if !suppress_response @@ -1159,11 +1092,11 @@ class Matter_IM ############################################################# # process IM 0x09 Invoke Response # - def process_invoke_response(msg, val) - var query = matter.InvokeResponseMessage().from_TLV(val) - # log("MTR: received InvokeResponseMessage=" + str(query), 4) - return false - end + # def process_invoke_response(msg, val) + # var query = matter.InvokeResponseMessage().from_TLV(val) + # # log("MTR: received InvokeResponseMessage=" + str(query), 4) + # return false + # end ############################################################# # process IM 0x0A Timed Request @@ -1202,11 +1135,9 @@ class Matter_IM log(format("MTR: >>: Matter_IM_ReportData_Pull send_im exch=%i ready=%i", self.resp.exchange_id, self.ready ? 1 : 0), 3) if !self.ready return false end - var resp = self.resp # response frame object - var data = self.data # TLV data of the response (if any) - var was_chunked = data.more_chunked_messages # is this following a chunked packet? + var resp = self.resp # response frame object + var data = (self.data != nil) ? self.data : bytes() # bytes() object of the TLV encoded response + self.data = nil # we remove the data that was saved for next packet - # the message were grouped by right-sized binaries upfront, we just need to send one block at time - var elements = 1 # number of elements added + var not_full = true # marker used to exit imbricated loops - # log(format("MTR: exch=%i elements=%i msg_sz=%i total=%i", self.get_exchangeid(), elements, msg_sz, sz_attribute_reports), 3) - var next_elemnts - if data.attribute_reports != nil - next_elemnts = data.attribute_reports[elements .. ] - data.attribute_reports = data.attribute_reports[0 .. elements - 1] - data.more_chunked_messages = (size(next_elemnts) > 0) - else - data.more_chunked_messages = false - end - if was_chunked - # log(format("MTR: .Read_Attr next_chunk exch=%i", self.get_exchangeid()), 4) - end - if data.more_chunked_messages - if !was_chunked - # log(format("MTR: .Read_Attr first_chunk exch=%i", self.get_exchangeid()), 4) + while not_full && (self.generator_or_arr != nil) + # get the current generator (first element of list or single object) + var current_generator = isinstance(self.generator_or_arr, list) ? self.generator_or_arr[0] : self.generator_or_arr + # log(f">>>: ReportData_Pull send_im start {current_generator.path_in_endpoint}/{current_generator.path_in_cluster}/{current_generator.path_in_attribute}",3) + + var ctx + while not_full && (ctx := current_generator.next()) # 'not_full' must be first to avoid removing an item when we don't want + # log(f">>>: ReportData_Pull {ctx=}", 3) + var debug = responder.device.debug + var force_log = current_generator.is_direct() || debug + var elt_bytes = responder.im.read_single_attribute_to_bytes(current_generator.get_pi(), ctx, resp.session, force_log) # TODO adapt no_log + if (elt_bytes == nil) continue end # silently ignored, iterate to next + # check if we overflow + if (size(data) + size(elt_bytes) > self.MAX_MESSAGE) + self.data = elt_bytes # save response for later + not_full = false + else + data.append(elt_bytes) # append response since we have enough room + end end - # log("MTR: sending TLV" + str(data), 4) + + # if we are here, then we exhausted the current generator, and we need to move to the next one + if not_full + # log(f">>>: ReportData_Pull remove current generator",3) + if isinstance(self.generator_or_arr, list) + self.generator_or_arr.remove(0) # remove first element + if size(self.generator_or_arr) == 0 + self.generator_or_arr = nil # empty array so we put nil + end + else + self.generator_or_arr = nil # there was a single entry, so replace with nil + end + end + end + # prepare the response + var ret = matter.ReportDataMessage() + ret.subscription_id = self.subscription_id + ret.suppress_response = self.suppress_response + # ret.suppress_response = true + ret.attribute_reports = [data] + ret.more_chunked_messages = (self.data != nil) # we got more data to send + # print(">>>>> send elements before encode") - var raw_tlv = self.data.to_TLV() + var raw_tlv = ret.to_TLV() # print(">>>>> send elements before encode 2") var encoded_tlv = raw_tlv.tlv2raw(bytes(self.MAX_MESSAGE)) # takes time # print(">>>>> send elements before encode 3") @@ -217,37 +255,49 @@ class Matter_IM_ReportData : Matter_IM_Message responder.send_response_frame(resp) self.last_counter = resp.message_counter - if next_elemnts != nil && size(next_elemnts) > 0 - data.attribute_reports = next_elemnts - # log(format("MTR: to_be_sent_later size=%i exch=%i", size(data.attribute_reports), resp.exchange_id), 4) + if ret.more_chunked_messages # we have more to send self.ready = false # wait for Status Report before continuing sending # keep alive else + # log(f">>>: ReportData_Pull finished",3) self.finish = true # finished, remove end + end end -matter.IM_ReportData = Matter_IM_ReportData - +matter.IM_ReportData_Pull = Matter_IM_ReportData_Pull ################################################################################# -# Matter_IM_ReportDataSubscribed +# Matter_IM_ReportDataSubscribed_Pull # # Main difference is that we are the spontaneous initiator ################################################################################# -class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData +class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull + # inherited from Matter_IM_Message + # static var MSG_TIMEOUT = 5000 # 5s + # var expiration # expiration time for the reporting + # var resp # response Frame object + # var ready # bool: ready to send (true) or wait (false) + # var finish # if true, the message is removed from the queue + # var data # TLV data of the response (if any) + # var last_counter # counter value of last sent packet (to match ack) + # inherited from Matter_IM_ReportData_Pull + # static var MAX_MESSAGE = 1200 # max bytes size for a single TLV worklaod + # var generator_or_arr # a PathGenerator or an array of PathGenerator + # var subscription_id # if not `nil`, subscription_id in response var sub # subscription object var report_data_phase # true during reportdata - def init(message_handler, session, data, sub) + def init(message_handler, session, ctx_generator_or_arr, sub) + super(self).init(nil, ctx_generator_or_arr) # send msg=nil to avoid creating a reponse + # we need to initiate a new virtual response, because it's a spontaneous message self.resp = matter.Frame.initiate_response(message_handler, session, 0x05 #-Report Data-#, true) - self.data = data - self.ready = true # by default send immediately - self.expiration = tasmota.millis() + self.MSG_TIMEOUT # self.sub = sub self.report_data_phase = true + self.set_subscription_id(sub.subscription_id) + self.set_suppress_response(false) end def reached_timeout() @@ -256,7 +306,7 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData # ack received, confirm the heartbeat def ack_received(msg) - # log(format("MTR: IM_ReportDataSubscribed ack_received sub=%i", self.sub.subscription_id), 3) + # log(format("MTR: IM_ReportDataSubscribed_Pull ack_received sub=%i", self.sub.subscription_id), 3) super(self).ack_received(msg) if !self.report_data_phase # if ack is received while all data is sent, means that it finished without error @@ -271,14 +321,14 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData # we received an ACK error, remove subscription def status_error_received(msg) - # log(format("MTR: IM_ReportDataSubscribed status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_ReportDataSubscribed_Pull status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) self.sub.remove_self() end # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # log(format("MTR: IM_ReportDataSubscribed status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_ReportDataSubscribed_Pull status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) if self.report_data_phase return super(self).status_ok_received(msg) else @@ -291,10 +341,11 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData # returns true if transaction is complete (remove object from queue) # default responder for data def send_im(responder) - # log(format("MTR: IM_ReportDataSubscribed send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) + # log(format("MTR: IM_ReportDataSubscribed_Pull send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) # log(format("MTR: ReportDataSubscribed::send_im size(self.data.attribute_reports)=%i ready=%s report_data_phase=%s", size(self.data.attribute_reports), str(self.ready), str(self.report_data_phase)), 3) if !self.ready return false end - if size(self.data.attribute_reports) > 0 # do we have still attributes to send + + if (self.generator_or_arr != nil) # do we have still attributes to send if self.report_data_phase super(self).send_im(responder) # log(format("MTR: ReportDataSubscribed::send_im called super finish=%i", self.finish), 3) @@ -327,7 +378,7 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData end end end -matter.IM_ReportDataSubscribed = Matter_IM_ReportDataSubscribed +matter.IM_ReportDataSubscribed_Pull = Matter_IM_ReportDataSubscribed_Pull ################################################################################# # Matter_IM_SubscribedHeartbeat @@ -336,16 +387,17 @@ matter.IM_ReportDataSubscribed = Matter_IM_ReportDataSubscribed # # Main difference is that we are the spontaneous initiator ################################################################################# -class Matter_IM_SubscribedHeartbeat : Matter_IM_ReportData +class Matter_IM_SubscribedHeartbeat : Matter_IM_ReportData_Pull var sub # subscription object - def init(message_handler, session, data, sub) + def init(message_handler, session, sub) + super(self).init(nil, nil #-no ctx_generator_or_arr-#) # send msg=nil to avoid creating a reponse + # we need to initiate a new virtual response, because it's a spontaneous message self.resp = matter.Frame.initiate_response(message_handler, session, 0x05 #-Report Data-#, true) - self.data = data - self.ready = true # by default send immediately - self.expiration = tasmota.millis() + self.MSG_TIMEOUT # self.sub = sub + self.set_subscription_id(sub.subscription_id) + self.set_suppress_response(true) end def reached_timeout() @@ -386,18 +438,22 @@ end matter.IM_SubscribedHeartbeat = Matter_IM_SubscribedHeartbeat ################################################################################# -# Matter_IM_SubscribeResponse +# Matter_IM_SubscribeResponse_Pull # -# Report Data for a Read Request +# Report Data for a Read Request - pull (lazy) mode ################################################################################# -class Matter_IM_SubscribeResponse : Matter_IM_ReportData +class Matter_IM_SubscribeResponse_Pull : Matter_IM_ReportData_Pull + # inherited + # static var MAX_MESSAGE = 1200 # max bytes size for a single TLV worklaod + # var generator_or_arr # a PathGenerator or an array of PathGenerator var sub # subscription object var report_data_phase # true during reportdata - def init(msg, data, sub) - super(self).init(msg, data) + def init(msg, ctx_generator_or_arr, sub) + super(self).init(msg, ctx_generator_or_arr) self.sub = sub self.report_data_phase = true + self.set_subscription_id(sub.subscription_id) end # default responder for data @@ -414,6 +470,7 @@ class Matter_IM_SubscribeResponse : Matter_IM_ReportData self.ready = false # wait for Status Report before continuing sending else + # send the final SubscribeReponse var resp = self.resp var sr = matter.SubscribeResponseMessage() @@ -440,6 +497,6 @@ class Matter_IM_SubscribeResponse : Matter_IM_ReportData end return super(self).status_ok_received(msg) end - + end -matter.IM_SubscribeResponse = Matter_IM_SubscribeResponse +matter.IM_SubscribeResponse_Pull = Matter_IM_SubscribeResponse_Pull diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be index eae306543..b774cfdbb 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be @@ -27,7 +27,6 @@ import matter # INPUT: Takes a context: # - plugin # - path (abstract or concrete) -# - session # # OUTPUT: # - returns a concrete Path @@ -35,10 +34,12 @@ import matter ################################################################################# class Matter_PathGenerator var device # reference of device main object - var path_in # input path (abstract or concrete) - var session # session object in which the request was made + var path_in_endpoint # input endpoint filter (nil or int) + var path_in_cluster # input cluster filter (nil or int) + var path_in_attribute # input attribute filter (nil or int) + var path_in_fabric_filtered # input flag for fabric filtered reads (not implemented yet) # current status - var pi # plugin object, `nil` waiting for value, `false` exhausted values + var pi # plugin object, `nil` waiting for value, `false` exhausted values, `true` if we responded a direct unmatched and it is the last one var cluster # current cluster number, `nil` waiting for value, `false` exhausted values var attribute # current attribute number, `nil` waiting for value, `false` exhausted values # cache @@ -49,49 +50,103 @@ class Matter_PathGenerator var attribute_found # did we find a valid attribute? # reused at each output - var path_concrete # placeholder for output concrete path + var path_concrete # placeholder for output concrete path, contains 'matter.Path()' instance - WARNING it can be modified once provided + ################################################################################# + # simple constructor + # def init(device) self.device = device end + ################################################################################# # start generator - def start(path_in, session) + # + # `in_endpoint`: endpoint number filter (int or nil for all) + # `in_cluster`: cluster number filter (int or nil for all) + # `in_attribute`: attribute number filter (int or nil for all) + # `in_fabric_filtered`: is the filter fabric-filtered (nil or false or true) - currently stored but ignored + def start(in_endpoint, in_cluster, in_attribute, in_fabric_filtered) + # log(f">>>: PathGenerator start ep:{in_endpoint} cluster:{in_cluster} attribute:{in_attribute}", 3) self.path_concrete = matter.Path() self.reset() - self.path_in = path_in - self.session = session + self.path_in_endpoint = in_endpoint + self.path_in_cluster = in_cluster + self.path_in_attribute = in_attribute + self.path_in_fabric_filtered = bool(in_fabric_filtered) # defaults to `false` if `nil` + self.pi = nil # ready to start # self.endpoint_found = false self.cluster_found = false self.attribute_found = false end + ################################################################################# + # reset and free memory + # def reset() var n = nil - self.path_in = n - self.session = n self.path_concrete.reset() # - self.pi = n # pre-load first plugin + self.pi = false # mark as inactive self.cluster = n self.attribute = n self.clusters = n - self.clusters = n end - def get_pi() - return self.pi + ################################################################################ + # is_direct + # + # Returns true if the original path is concrete, i.e. no expansion. + # If not, errors while reading expanded attributes should not return an error + def is_direct() + return (self.path_in_endpoint != nil) && (self.path_in_cluster != nil) && (self.path_in_attribute != nil) end + + ################################################################################ + # default_status_error + # + # Get the default error if the read or write fails. + # This error is only reported if `direct` is true + def default_status_error() + if self.is_direct() + if (!self.endpoint_found) return matter.UNSUPPORTED_ENDPOINT end + if (!self.cluster_found) return matter.UNSUPPORTED_CLUSTER end + if (!self.attribute_found) return matter.UNSUPPORTED_ATTRIBUTE end + return matter.UNREPORTABLE_ATTRIBUTE + end + return nil + end + + ################################################################################ + # finished + # + # Returns `true` if we have exhausted the generator + def finished() + return (self.pi != false) + end + + ################################################################################ + # finished + # + # Returns the endpoint object for the last context returned, or `nil` if not found or exhausted + def get_pi() + return ((self.pi == false) || (self.pi == true)) ? nil : self.pi + end + ################################################################################ # next # # Generate next concrete path # Returns: # - a path object (that is valid until next call) + # - if 'direct' (concrete path), ctx.status contains the appropriate error code if the path value is not supported # - `nil` if no more objects def next() - if (self.path_in == nil) return nil end + if (self.pi == true) || (self.pi != nil && self.is_direct()) # if we already answered a succesful or missing context for direct request, abort on second call + self.reset() + return nil + end while (self.pi != false) # loop until we exhausted endpoints # PRE: self.pi is not `false` @@ -118,8 +173,27 @@ class Matter_PathGenerator path_concrete.endpoint = self.pi.get_endpoint() path_concrete.cluster = self.cluster path_concrete.attribute = self.attribute + path_concrete.fabric_filtered = self.path_in_fabric_filtered + path_concrete.status = nil + # log(f">>>: PathGenerator next path_concrete:{path_concrete}", 3) return path_concrete end + + # special case, if it was 'direct' and we are here, then we didn't find a match + # return the concrete path ans prepare status + if self.is_direct() + var path_concrete = self.path_concrete + path_concrete.reset() + path_concrete.endpoint = self.path_in_endpoint + path_concrete.cluster = self.path_in_cluster + path_concrete.attribute = self.path_in_attribute + path_concrete.fabric_filtered = self.path_in_fabric_filtered + path_concrete.status = self.default_status_error() + self.pi = true # next call will trigger Generator exhausted + # log(f">>>: PathGenerator next path_concrete:{path_concrete} direct", 3) + return path_concrete + end + # we exhausted all endpoints - finish and clean self.reset() return nil @@ -131,7 +205,7 @@ class Matter_PathGenerator if (self.pi == false) return false end # exhausted all possible values var plugins = self.device.plugins # shortcut - var ep_filter = self.path_in.endpoint + var ep_filter = self.path_in_endpoint # cluster and attribute are now undefined self.cluster = nil self.attribute = nil @@ -164,7 +238,7 @@ class Matter_PathGenerator if (self.cluster == false) return false end # exhausted all possible values var clusters = self.clusters - var cl_filter = self.path_in.cluster + var cl_filter = self.path_in_cluster # attribute is now undefined self.attribute = nil var idx = -1 @@ -193,7 +267,7 @@ class Matter_PathGenerator if (self.attribute == false) return false end # exhausted all possible values var attributes = self.pi.get_attribute_list(self.cluster) - var attr_filter = self.path_in.attribute + var attr_filter = self.path_in_attribute var idx = -1 if (self.attribute != nil) idx = attributes.find(self.attribute) # find index in current list @@ -222,11 +296,7 @@ matter.PathGenerator = Matter_PathGenerator var gen = matter.PathGenerator(matter_device) def gen_path_dump(endpoint, cluster, attribute) - var path = matter.Path() - path.endpoint = endpoint - path.cluster = cluster - path.attribute = attribute - gen.start(path) + gen.start(endpoint, cluster, attribute) var cp while (cp := gen.next()) print(cp) @@ -242,32 +312,4 @@ gen_path_dump(nil, nil, 0xFFFB) gen_path_dump(4, 5, 5) gen_path_dump(4, 5, 6) - - -var gen = matter.PathGenerator(matter_device) -var path = matter.Path() -path.endpoint = nil -gen.start(path) - -# print(gen._next_endpoint()) -# print(gen._next_cluster()) -# print(gen._next_attribute()) - - - -var gen = matter.PathGenerator(matter_device) -var path = matter.Path() -path.endpoint = 4 -path.cluster = 5 -path.attribute = 1 -gen.start(path) - - - - -var cp -while (cp := gen.next()) - print(cp) -end - -# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 7c3e44357..4576ebc4d 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -518,8 +518,6 @@ class Matter_Device ############################################################# # Proceed to attribute expansion (used for Attribute Read/Write/Subscribe) # - # Called only when expansion is needed, so we don't need to report any error since they are ignored - # # calls `cb(pi, ctx, direct)` for each attribute expanded. # `pi`: plugin instance targeted by the attribute (via endpoint). Note: nothing is sent if the attribute is not declared in supported attributes in plugin. # `ctx`: context object with `endpoint`, `cluster`, `attribute` (no `command`) @@ -530,68 +528,44 @@ class Matter_Device var endpoint = ctx.endpoint var cluster = ctx.cluster var attribute = ctx.attribute - var endpoint_found = false # did any endpoint match - var cluster_found = false - var attribute_found = false - - var direct = (ctx.endpoint != nil) && (ctx.cluster != nil) && (ctx.attribute != nil) # true if the target is a precise attribute, false if it results from an expansion and error are ignored - - # log(f"MTR: process_attribute_expansion {str(ctx))}", 4) # build the generator for all endpoint/cluster/attributes candidates var path_generator = matter.PathGenerator(self) - path_generator.start(ctx, nil) # TODO add session if we think it's needed later + path_generator.start(endpoint, cluster, attribute) + var direct = path_generator.is_direct() var concrete_path while ((concrete_path := path_generator.next()) != nil) - var finished = cb(path_generator.get_pi(), concrete_path, direct) # call the callback with the plugin and the context - if direct && finished return end - end - - # we didn't have any successful match, report an error if direct (non-expansion request) - if direct - # since it's a direct request, ctx has already the correct endpoint/cluster/attribute - if !path_generator.endpoint_found ctx.status = matter.UNSUPPORTED_ENDPOINT - elif !path_generator.cluster_found ctx.status = matter.UNSUPPORTED_CLUSTER - elif !path_generator.attribute_found ctx.status = matter.UNSUPPORTED_ATTRIBUTE - else ctx.status = matter.UNREPORTABLE_ATTRIBUTE - end - cb(nil, ctx, true) + var finished = cb(path_generator.get_pi(), concrete_path) # call the callback with the plugin and the context end end ############################################################# # Optimized version for a single endpoint/cluster/attribute # - # Retrieve the plugin for a read + # Retrieve the plugin for a read, or nil if not found + # In case of error, ctx.status is updated accordingly def resolve_attribute_read_solo(ctx) var endpoint = ctx.endpoint - # var endpoint_found = false # did any endpoint match var cluster = ctx.cluster - # var cluster_found = false var attribute = ctx.attribute - # var attribute_found = false # all 3 elements must be non-nil - if endpoint == nil || cluster == nil || attribute == nil return nil end + if (endpoint == nil) || (cluster == nil) || (attribute == nil) return nil end # look for plugin var pi = self.find_plugin_by_endpoint(endpoint) - if pi == nil # endpoint not found + if (pi == nil) ctx.status = matter.UNSUPPORTED_ENDPOINT return nil - end - - # check cluster - if !pi.contains_cluster(cluster) - ctx.status = matter.UNSUPPORTED_CLUSTER - return nil - end - - # attribute list - if !pi.contains_attribute(cluster, attribute) - ctx.status = matter.UNSUPPORTED_ATTRIBUTE - return nil + else + if !pi.contains_cluster(cluster) + ctx.status = matter.UNSUPPORTED_CLUSTER + return nil + elif !pi.contains_attribute(cluster, attribute) + ctx.status = matter.UNSUPPORTED_ATTRIBUTE + return nil + end end # all good diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 52c50b066..cb2d47030 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -7,30 +7,517 @@ extern const bclass be_class_Matter_IM; /******************************************************************** -** Solidified function: every_250ms +** Solidified function: send_subscribe_response_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_250ms, /* name */ +be_local_closure(class_Matter_IM_send_subscribe_response_pull, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 11, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(every_250ms), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_SubscribeResponse_Pull), }), - be_str_weak(every_250ms), + be_str_weak(send_subscribe_response_pull), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 + ( &(const binstruction[10]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0xB81A0400, // 0002 GETNGBL R6 K2 + 0x8C180D03, // 0003 GETMET R6 R6 K3 + 0x5C200200, // 0004 MOVE R8 R1 + 0x5C240400, // 0005 MOVE R9 R2 + 0x5C280600, // 0006 MOVE R10 R3 + 0x7C180800, // 0007 CALL R6 4 + 0x7C100400, // 0008 CALL R4 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_sendqueue_by_exchangeid +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x4C080000, // 0003 LDNIL R2 + 0x80040400, // 0004 RET 1 R2 + 0x58080000, // 0005 LDCONST R2 K0 + 0x600C000C, // 0006 GETGBL R3 G12 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x140C0403, // 0009 LT R3 R2 R3 + 0x780E0008, // 000A JMPF R3 #0014 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x940C0602, // 000C GETIDX R3 R3 R2 + 0x8C100702, // 000D GETMET R4 R3 K2 + 0x7C100200, // 000E CALL R4 1 + 0x1C100801, // 000F EQ R4 R4 R1 + 0x78120000, // 0010 JMPF R4 #0012 + 0x80040600, // 0011 RET 1 R3 + 0x00080503, // 0012 ADD R2 R2 K3 + 0x7001FFF1, // 0013 JMP #0006 + 0x4C0C0000, // 0014 LDNIL R3 + 0x80040600, // 0015 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_subscribe_update +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(ReadRequestMessage), + /* K3 */ be_nested_str_weak(fabric_filtered), + /* K4 */ be_nested_str_weak(attributes_requests), + /* K5 */ be_nested_str_weak(updates), + /* K6 */ be_nested_str_weak(AttributePathIB), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K14 */ be_nested_str_weak(local_session_id), + /* K15 */ be_nested_str_weak(subscription_id), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(is_keep_alive), + /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K19 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), + /* K20 */ be_nested_str_weak(_message_handler), + /* K21 */ be_nested_str_weak(send_queue), + /* K22 */ be_nested_str_weak(send_enqueued), + }), + be_str_weak(send_subscribe_update), + &be_const_str_solidified, + ( &(const binstruction[61]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x50100000, // 0004 LDBOOL R4 0 0 + 0x900E0604, // 0005 SETMBR R3 K3 R4 + 0x60100012, // 0006 GETGBL R4 G18 + 0x7C100000, // 0007 CALL R4 0 + 0x900E0804, // 0008 SETMBR R3 K4 R4 + 0x60100010, // 0009 GETGBL R4 G16 + 0x88140305, // 000A GETMBR R5 R1 K5 + 0x7C100200, // 000B CALL R4 1 + 0xA802000F, // 000C EXBLK 0 #001D + 0x5C140800, // 000D MOVE R5 R4 + 0x7C140000, // 000E CALL R5 0 + 0xB81A0200, // 000F GETNGBL R6 K1 + 0x8C180D06, // 0010 GETMET R6 R6 K6 + 0x7C180200, // 0011 CALL R6 1 + 0x881C0B07, // 0012 GETMBR R7 R5 K7 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0x881C0B08, // 0014 GETMBR R7 R5 K8 + 0x901A1007, // 0015 SETMBR R6 K8 R7 + 0x881C0B09, // 0016 GETMBR R7 R5 K9 + 0x901A1207, // 0017 SETMBR R6 K9 R7 + 0x881C0704, // 0018 GETMBR R7 R3 K4 + 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 + 0x5C240C00, // 001A MOVE R9 R6 + 0x7C1C0400, // 001B CALL R7 2 + 0x7001FFEF, // 001C JMP #000D + 0x5810000B, // 001D LDCONST R4 K11 + 0xAC100200, // 001E CATCH R4 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0xB8121800, // 0020 GETNGBL R4 K12 + 0x60140018, // 0021 GETGBL R5 G24 + 0x5818000D, // 0022 LDCONST R6 K13 + 0x881C050E, // 0023 GETMBR R7 R2 K14 + 0x8820030F, // 0024 GETMBR R8 R1 K15 + 0x7C140600, // 0025 CALL R5 3 + 0x58180010, // 0026 LDCONST R6 K16 + 0x7C100400, // 0027 CALL R4 2 + 0x50100000, // 0028 LDBOOL R4 0 0 + 0x90062204, // 0029 SETMBR R1 K17 R4 + 0x8C100112, // 002A GETMET R4 R0 K18 + 0x5C180600, // 002B MOVE R6 R3 + 0x4C1C0000, // 002C LDNIL R7 + 0x7C100600, // 002D CALL R4 3 + 0xB8160200, // 002E GETNGBL R5 K1 + 0x8C140B13, // 002F GETMET R5 R5 K19 + 0x881C0514, // 0030 GETMBR R7 R2 K20 + 0x5C200400, // 0031 MOVE R8 R2 + 0x5C240800, // 0032 MOVE R9 R4 + 0x5C280200, // 0033 MOVE R10 R1 + 0x7C140A00, // 0034 CALL R5 5 + 0x88180115, // 0035 GETMBR R6 R0 K21 + 0x8C180D0A, // 0036 GETMET R6 R6 K10 + 0x5C200A00, // 0037 MOVE R8 R5 + 0x7C180400, // 0038 CALL R6 2 + 0x8C180116, // 0039 GETMET R6 R0 K22 + 0x88200514, // 003A GETMBR R8 R2 K20 + 0x7C180400, // 003B CALL R6 2 + 0x80000000, // 003C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_single_attribute_to_bytes +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ + be_nested_proto( + 21, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(get_attribute_name), + /* K6 */ be_nested_str_weak(cluster), + /* K7 */ be_nested_str_weak(attribute), + /* K8 */ be_nested_str_weak(_X20_X28), + /* K9 */ be_nested_str_weak(_X29), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(status), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(tlv_solo), + /* K14 */ be_nested_str_weak(to_str_val), + /* K15 */ be_nested_str_weak(is_list), + /* K16 */ be_nested_str_weak(is_array), + /* K17 */ be_nested_str_weak(encode_len), + /* K18 */ be_nested_str_weak(IM_ReportData_Pull), + /* K19 */ be_nested_str_weak(MAX_MESSAGE), + /* K20 */ be_nested_str_weak(Matter_TLV_array), + /* K21 */ be_nested_str_weak(attributedata2raw), + /* K22 */ be_nested_str_weak(push), + /* K23 */ be_nested_str_weak(val), + /* K24 */ be_nested_str_weak(stop_iteration), + /* K25 */ be_nested_str_weak(log), + /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K27 */ be_nested_str_weak(local_session_id), + /* K28 */ be_nested_str_weak(attributestatus2raw), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + }), + be_str_weak(read_single_attribute_to_bytes), + &be_const_str_solidified, + ( &(const binstruction[165]) { /* code */ + 0xB8160000, // 0000 GETNGBL R5 K0 + 0x88140B01, // 0001 GETMBR R5 R5 K1 + 0x4C180000, // 0002 LDNIL R6 + 0xB81E0400, // 0003 GETNGBL R7 K2 + 0x8C1C0F03, // 0004 GETMET R7 R7 K3 + 0x58240004, // 0005 LDCONST R9 K4 + 0x7C1C0400, // 0006 CALL R7 2 + 0x781E000B, // 0007 JMPF R7 #0014 + 0xB81E0000, // 0008 GETNGBL R7 K0 + 0x8C1C0F05, // 0009 GETMET R7 R7 K5 + 0x88240506, // 000A GETMBR R9 R2 K6 + 0x88280507, // 000B GETMBR R10 R2 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x5C180E00, // 000D MOVE R6 R7 + 0x781A0002, // 000E JMPF R6 #0012 + 0x001E1006, // 000F ADD R7 K8 R6 + 0x001C0F09, // 0010 ADD R7 R7 K9 + 0x70020000, // 0011 JMP #0013 + 0x581C000A, // 0012 LDCONST R7 K10 + 0x5C180E00, // 0013 MOVE R6 R7 + 0x881C050B, // 0014 GETMBR R7 R2 K11 + 0x4C200000, // 0015 LDNIL R8 + 0x201C0E08, // 0016 NE R7 R7 R8 + 0x4C200000, // 0017 LDNIL R8 + 0x4C240000, // 0018 LDNIL R9 + 0x4C280000, // 0019 LDNIL R10 + 0x2028020A, // 001A NE R10 R1 R10 + 0x782A0005, // 001B JMPF R10 #0022 + 0x8C28030C, // 001C GETMET R10 R1 K12 + 0x5C300600, // 001D MOVE R12 R3 + 0x5C340400, // 001E MOVE R13 R2 + 0x8838010D, // 001F GETMBR R14 R0 K13 + 0x7C280800, // 0020 CALL R10 4 + 0x5C201400, // 0021 MOVE R8 R10 + 0x4C280000, // 0022 LDNIL R10 + 0x2028100A, // 0023 NE R10 R8 R10 + 0x782A0057, // 0024 JMPF R10 #007D + 0x5828000A, // 0025 LDCONST R10 K10 + 0xB82E0400, // 0026 GETNGBL R11 K2 + 0x8C2C1703, // 0027 GETMET R11 R11 K3 + 0x58340004, // 0028 LDCONST R13 K4 + 0x7C2C0400, // 0029 CALL R11 2 + 0x782E0003, // 002A JMPF R11 #002F + 0x78120002, // 002B JMPF R4 #002F + 0x8C2C110E, // 002C GETMET R11 R8 K14 + 0x7C2C0200, // 002D CALL R11 1 + 0x5C281600, // 002E MOVE R10 R11 + 0x882C110F, // 002F GETMBR R11 R8 K15 + 0x742E0001, // 0030 JMPT R11 #0033 + 0x882C1110, // 0031 GETMBR R11 R8 K16 + 0x782E002F, // 0032 JMPF R11 #0063 + 0x8C2C1111, // 0033 GETMET R11 R8 K17 + 0x7C2C0200, // 0034 CALL R11 1 + 0xB8320000, // 0035 GETNGBL R12 K0 + 0x88301912, // 0036 GETMBR R12 R12 K18 + 0x88301913, // 0037 GETMBR R12 R12 K19 + 0x242C160C, // 0038 GT R11 R11 R12 + 0x782E0028, // 0039 JMPF R11 #0063 + 0x602C0012, // 003A GETGBL R11 G18 + 0x7C2C0000, // 003B CALL R11 0 + 0x5C241600, // 003C MOVE R9 R11 + 0x602C0015, // 003D GETGBL R11 G21 + 0x5432002F, // 003E LDINT R12 48 + 0x7C2C0200, // 003F CALL R11 1 + 0x8C300B14, // 0040 GETMET R12 R5 K20 + 0x7C300200, // 0041 CALL R12 1 + 0x8C340115, // 0042 GETMET R13 R0 K21 + 0x5C3C1600, // 0043 MOVE R15 R11 + 0x5C400400, // 0044 MOVE R16 R2 + 0x5C441800, // 0045 MOVE R17 R12 + 0x50480000, // 0046 LDBOOL R18 0 0 + 0x7C340A00, // 0047 CALL R13 5 + 0x8C341316, // 0048 GETMET R13 R9 K22 + 0x5C3C1600, // 0049 MOVE R15 R11 + 0x7C340400, // 004A CALL R13 2 + 0x60340010, // 004B GETGBL R13 G16 + 0x88381117, // 004C GETMBR R14 R8 K23 + 0x7C340200, // 004D CALL R13 1 + 0xA802000F, // 004E EXBLK 0 #005F + 0x5C381A00, // 004F MOVE R14 R13 + 0x7C380000, // 0050 CALL R14 0 + 0x603C0015, // 0051 GETGBL R15 G21 + 0x5442002F, // 0052 LDINT R16 48 + 0x7C3C0200, // 0053 CALL R15 1 + 0x5C2C1E00, // 0054 MOVE R11 R15 + 0x8C3C0115, // 0055 GETMET R15 R0 K21 + 0x5C441600, // 0056 MOVE R17 R11 + 0x5C480400, // 0057 MOVE R18 R2 + 0x5C4C1C00, // 0058 MOVE R19 R14 + 0x50500200, // 0059 LDBOOL R20 1 0 + 0x7C3C0A00, // 005A CALL R15 5 + 0x8C3C1316, // 005B GETMET R15 R9 K22 + 0x5C441600, // 005C MOVE R17 R11 + 0x7C3C0400, // 005D CALL R15 2 + 0x7001FFEF, // 005E JMP #004F + 0x58340018, // 005F LDCONST R13 K24 + 0xAC340200, // 0060 CATCH R13 1 0 + 0xB0080000, // 0061 RAISE 2 R0 R0 + 0x70020008, // 0062 JMP #006C + 0x602C0015, // 0063 GETGBL R11 G21 + 0x5432002F, // 0064 LDINT R12 48 + 0x7C2C0200, // 0065 CALL R11 1 + 0x5C241600, // 0066 MOVE R9 R11 + 0x8C2C0115, // 0067 GETMET R11 R0 K21 + 0x5C341200, // 0068 MOVE R13 R9 + 0x5C380400, // 0069 MOVE R14 R2 + 0x5C3C1000, // 006A MOVE R15 R8 + 0x7C2C0800, // 006B CALL R11 4 + 0xB82E0400, // 006C GETNGBL R11 K2 + 0x8C2C1703, // 006D GETMET R11 R11 K3 + 0x58340004, // 006E LDCONST R13 K4 + 0x7C2C0400, // 006F CALL R11 2 + 0x782E000A, // 0070 JMPF R11 #007C + 0x78120009, // 0071 JMPF R4 #007C + 0xB82E3200, // 0072 GETNGBL R11 K25 + 0x60300018, // 0073 GETGBL R12 G24 + 0x5834001A, // 0074 LDCONST R13 K26 + 0x8838071B, // 0075 GETMBR R14 R3 K27 + 0x5C3C0400, // 0076 MOVE R15 R2 + 0x5C400C00, // 0077 MOVE R16 R6 + 0x5C441400, // 0078 MOVE R17 R10 + 0x7C300A00, // 0079 CALL R12 5 + 0x58340004, // 007A LDCONST R13 K4 + 0x7C2C0400, // 007B CALL R11 2 + 0x70020026, // 007C JMP #00A4 + 0x8828050B, // 007D GETMBR R10 R2 K11 + 0x4C2C0000, // 007E LDNIL R11 + 0x2028140B, // 007F NE R10 R10 R11 + 0x782A0022, // 0080 JMPF R10 #00A4 + 0x781E0021, // 0081 JMPF R7 #00A4 + 0x60280015, // 0082 GETGBL R10 G21 + 0x542E002F, // 0083 LDINT R11 48 + 0x7C280200, // 0084 CALL R10 1 + 0x5C241400, // 0085 MOVE R9 R10 + 0x8C28011C, // 0086 GETMET R10 R0 K28 + 0x5C301200, // 0087 MOVE R12 R9 + 0x5C340400, // 0088 MOVE R13 R2 + 0x8838050B, // 0089 GETMBR R14 R2 K11 + 0x7C280800, // 008A CALL R10 4 + 0xB82A0400, // 008B GETNGBL R10 K2 + 0x8C281503, // 008C GETMET R10 R10 K3 + 0x58300004, // 008D LDCONST R12 K4 + 0x7C280400, // 008E CALL R10 2 + 0x782A0013, // 008F JMPF R10 #00A4 + 0xB82A3200, // 0090 GETNGBL R10 K25 + 0x602C0018, // 0091 GETGBL R11 G24 + 0x5830001D, // 0092 LDCONST R12 K29 + 0x8834071B, // 0093 GETMBR R13 R3 K27 + 0x60380008, // 0094 GETGBL R14 G8 + 0x5C3C0400, // 0095 MOVE R15 R2 + 0x7C380200, // 0096 CALL R14 1 + 0x5C3C0C00, // 0097 MOVE R15 R6 + 0x8840050B, // 0098 GETMBR R16 R2 K11 + 0x8844050B, // 0099 GETMBR R17 R2 K11 + 0xB84A0000, // 009A GETNGBL R18 K0 + 0x8848251E, // 009B GETMBR R18 R18 K30 + 0x1C442212, // 009C EQ R17 R17 R18 + 0x78460001, // 009D JMPF R17 #00A0 + 0x5844001E, // 009E LDCONST R17 K30 + 0x70020000, // 009F JMP #00A1 + 0x5844000A, // 00A0 LDCONST R17 K10 + 0x7C2C0C00, // 00A1 CALL R11 6 + 0x58300004, // 00A2 LDCONST R12 K4 + 0x7C280400, // 00A3 CALL R10 2 + 0x80041200, // 00A4 RET 1 R9 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(subs_shop), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(IM_Subscription_Shop), + /* K5 */ be_nested_str_weak(read_request_solo), + /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), + /* K9 */ be_nested_str_weak(tlv_solo), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(Matter_TLV_item), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0xB80A0600, // 0004 GETNGBL R2 K3 + 0x8C080504, // 0005 GETMET R2 R2 K4 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0x90020402, // 0008 SETMBR R0 K2 R2 + 0xB80A0600, // 0009 GETNGBL R2 K3 + 0x8C080506, // 000A GETMET R2 R2 K6 + 0x7C080200, // 000B CALL R2 1 + 0x90020A02, // 000C SETMBR R0 K5 R2 + 0xB80A0600, // 000D GETNGBL R2 K3 + 0x8C080508, // 000E GETMET R2 R2 K8 + 0x7C080200, // 000F CALL R2 1 + 0x90020E02, // 0010 SETMBR R0 K7 R2 + 0xB80A0600, // 0011 GETNGBL R2 K3 + 0x8808050A, // 0012 GETMBR R2 R2 K10 + 0x8C08050B, // 0013 GETMET R2 R2 K11 + 0x7C080200, // 0014 CALL R2 1 + 0x90021202, // 0015 SETMBR R0 K9 R2 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_status +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_status, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_Status), + }), + be_str_weak(send_status), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -76,35 +563,28 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ /******************************************************************** -** Solidified function: subscribe_response +** Solidified function: every_second ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_subscribe_response, /* name */ +be_local_closure(class_Matter_IM_every_second, /* name */ be_nested_proto( - 6, /* nstack */ - 3, /* argc */ + 3, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(SubscribeResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(expire_sendqueue), }), - be_str_weak(subscribe_response), + be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 }) ) ); @@ -112,12 +592,69 @@ be_local_closure(class_Matter_IM_subscribe_response, /* name */ /******************************************************************** -** Solidified function: process_write_response +** Solidified function: expire_sendqueue ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_write_response, /* name */ +be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ be_nested_proto( 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(time_reached), + /* K4 */ be_nested_str_weak(expiration), + /* K5 */ be_nested_str_weak(reached_timeout), + /* K6 */ be_nested_str_weak(remove), + /* K7 */ be_const_int(1), + }), + be_str_weak(expire_sendqueue), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A000F, // 0005 JMPF R2 #0016 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x8C0C0703, // 0009 GETMET R3 R3 K3 + 0x88140504, // 000A GETMBR R5 R2 K4 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E0006, // 000C JMPF R3 #0014 + 0x8C0C0505, // 000D GETMET R3 R2 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C0706, // 0010 GETMET R3 R3 K6 + 0x5C140200, // 0011 MOVE R5 R1 + 0x7C0C0400, // 0012 CALL R3 2 + 0x70020000, // 0013 JMP #0015 + 0x00040307, // 0014 ADD R1 R1 K7 + 0x7001FFEA, // 0015 JMP #0001 + 0x4C080000, // 0016 LDNIL R2 + 0x80040400, // 0017 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_write_response +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_write_response, /* name */ + be_nested_proto( + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -125,22 +662,446 @@ be_local_closure(class_Matter_IM_process_write_response, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_WriteResponse), }), - be_str_weak(process_write_response), + be_str_weak(send_write_response), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_timed_request +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_timed_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TimedRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(timeout), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(send_status), + /* K10 */ be_nested_str_weak(SUCCESS), + }), + be_str_weak(process_timed_request), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x881C0305, // 0009 GETMBR R7 R1 K5 + 0x881C0F06, // 000A GETMBR R7 R7 K6 + 0x88200707, // 000B GETMBR R8 R3 K7 + 0x7C140600, // 000C CALL R5 3 + 0x58180008, // 000D LDCONST R6 K8 + 0x7C100400, // 000E CALL R4 2 + 0x8C100109, // 000F GETMET R4 R0 K9 + 0x5C180200, // 0010 MOVE R6 R1 + 0xB81E0000, // 0011 GETNGBL R7 K0 + 0x881C0F0A, // 0012 GETMBR R7 R7 K10 + 0x7C100600, // 0013 CALL R4 3 + 0x50100200, // 0014 LDBOOL R4 1 0 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_request +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_subscribe_request, /* name */ + be_nested_proto( + 20, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[34]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(SubscribeRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(keep_subscriptions), + /* K4 */ be_nested_str_weak(subs_shop), + /* K5 */ be_nested_str_weak(remove_by_session), + /* K6 */ be_nested_str_weak(session), + /* K7 */ be_nested_str_weak(new_subscription), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(loglevel), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(Path), + /* K12 */ be_nested_str_weak(msg), + /* K13 */ be_nested_str_weak(attributes_requests), + /* K14 */ be_nested_str_weak(endpoint), + /* K15 */ be_nested_str_weak(cluster), + /* K16 */ be_nested_str_weak(attribute), + /* K17 */ be_nested_str_weak(push), + /* K18 */ be_nested_str_weak(stop_iteration), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s_X20attr_req_X3D_X25s_X20event_req_X3D_X25s), + /* K21 */ be_nested_str_weak(local_session_id), + /* K22 */ be_nested_str_weak(concat), + /* K23 */ be_nested_str_weak(_X20), + /* K24 */ be_nested_str_weak(min_interval), + /* K25 */ be_nested_str_weak(max_interval), + /* K26 */ be_const_int(1), + /* K27 */ be_const_int(0), + /* K28 */ be_nested_str_weak(subscription_id), + /* K29 */ be_nested_str_weak(fabric_filtered), + /* K30 */ be_nested_str_weak(_X2D), + /* K31 */ be_nested_str_weak(event_requests), + /* K32 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K33 */ be_nested_str_weak(send_subscribe_response_pull), + }), + be_str_weak(subscribe_request), + &be_const_str_solidified, + ( &(const binstruction[98]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x88100703, // 0006 GETMBR R4 R3 K3 + 0x74120003, // 0007 JMPT R4 #000C + 0x88100104, // 0008 GETMBR R4 R0 K4 + 0x8C100905, // 0009 GETMET R4 R4 K5 + 0x88180306, // 000A GETMBR R6 R1 K6 + 0x7C100400, // 000B CALL R4 2 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x8C100907, // 000D GETMET R4 R4 K7 + 0x88180306, // 000E GETMBR R6 R1 K6 + 0x5C1C0600, // 000F MOVE R7 R3 + 0x7C100600, // 0010 CALL R4 3 + 0xB8161000, // 0011 GETNGBL R5 K8 + 0x8C140B09, // 0012 GETMET R5 R5 K9 + 0x581C000A, // 0013 LDCONST R7 K10 + 0x7C140400, // 0014 CALL R5 2 + 0x78160040, // 0015 JMPF R5 #0057 + 0x60140012, // 0016 GETGBL R5 G18 + 0x7C140000, // 0017 CALL R5 0 + 0xB81A0000, // 0018 GETNGBL R6 K0 + 0x8C180D0B, // 0019 GETMET R6 R6 K11 + 0x7C180200, // 001A CALL R6 1 + 0x901A1801, // 001B SETMBR R6 K12 R1 + 0x601C0010, // 001C GETGBL R7 G16 + 0x8820070D, // 001D GETMBR R8 R3 K13 + 0x7C1C0200, // 001E CALL R7 1 + 0xA802000D, // 001F EXBLK 0 #002E + 0x5C200E00, // 0020 MOVE R8 R7 + 0x7C200000, // 0021 CALL R8 0 + 0x8824110E, // 0022 GETMBR R9 R8 K14 + 0x901A1C09, // 0023 SETMBR R6 K14 R9 + 0x8824110F, // 0024 GETMBR R9 R8 K15 + 0x901A1E09, // 0025 SETMBR R6 K15 R9 + 0x88241110, // 0026 GETMBR R9 R8 K16 + 0x901A2009, // 0027 SETMBR R6 K16 R9 + 0x8C240B11, // 0028 GETMET R9 R5 K17 + 0x602C0008, // 0029 GETGBL R11 G8 + 0x5C300C00, // 002A MOVE R12 R6 + 0x7C2C0200, // 002B CALL R11 1 + 0x7C240400, // 002C CALL R9 2 + 0x7001FFF1, // 002D JMP #0020 + 0x581C0012, // 002E LDCONST R7 K18 + 0xAC1C0200, // 002F CATCH R7 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0xB81E2600, // 0031 GETNGBL R7 K19 + 0x60200018, // 0032 GETGBL R8 G24 + 0x58240014, // 0033 LDCONST R9 K20 + 0x88280306, // 0034 GETMBR R10 R1 K6 + 0x88281515, // 0035 GETMBR R10 R10 K21 + 0x8C2C0B16, // 0036 GETMET R11 R5 K22 + 0x58340017, // 0037 LDCONST R13 K23 + 0x7C2C0400, // 0038 CALL R11 2 + 0x88300918, // 0039 GETMBR R12 R4 K24 + 0x88340919, // 003A GETMBR R13 R4 K25 + 0x88380703, // 003B GETMBR R14 R3 K3 + 0x783A0001, // 003C JMPF R14 #003F + 0x5838001A, // 003D LDCONST R14 K26 + 0x70020000, // 003E JMP #0040 + 0x5838001B, // 003F LDCONST R14 K27 + 0x883C091C, // 0040 GETMBR R15 R4 K28 + 0x8840071D, // 0041 GETMBR R16 R3 K29 + 0x8844070D, // 0042 GETMBR R17 R3 K13 + 0x4C480000, // 0043 LDNIL R18 + 0x20442212, // 0044 NE R17 R17 R18 + 0x78460003, // 0045 JMPF R17 #004A + 0x6044000C, // 0046 GETGBL R17 G12 + 0x8848070D, // 0047 GETMBR R18 R3 K13 + 0x7C440200, // 0048 CALL R17 1 + 0x70020000, // 0049 JMP #004B + 0x5844001E, // 004A LDCONST R17 K30 + 0x8848071F, // 004B GETMBR R18 R3 K31 + 0x4C4C0000, // 004C LDNIL R19 + 0x20482413, // 004D NE R18 R18 R19 + 0x784A0003, // 004E JMPF R18 #0053 + 0x6048000C, // 004F GETGBL R18 G12 + 0x884C071F, // 0050 GETMBR R19 R3 K31 + 0x7C480200, // 0051 CALL R18 1 + 0x70020000, // 0052 JMP #0054 + 0x5848001E, // 0053 LDCONST R18 K30 + 0x7C201400, // 0054 CALL R8 10 + 0x5824000A, // 0055 LDCONST R9 K10 + 0x7C1C0400, // 0056 CALL R7 2 + 0x8C140120, // 0057 GETMET R5 R0 K32 + 0x5C1C0600, // 0058 MOVE R7 R3 + 0x5C200200, // 0059 MOVE R8 R1 + 0x7C140600, // 005A CALL R5 3 + 0x8C180121, // 005B GETMET R6 R0 K33 + 0x5C200200, // 005C MOVE R8 R1 + 0x5C240A00, // 005D MOVE R9 R5 + 0x5C280800, // 005E MOVE R10 R4 + 0x7C180800, // 005F CALL R6 4 + 0x50180200, // 0060 LDBOOL R6 1 0 + 0x80040C00, // 0061 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_enqueued +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_enqueued, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(finish), + /* K3 */ be_nested_str_weak(ready), + /* K4 */ be_nested_str_weak(send_im), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), + /* K7 */ be_nested_str_weak(resp), + /* K8 */ be_nested_str_weak(exchange_id), + /* K9 */ be_nested_str_weak(remove), + /* K10 */ be_const_int(1), + }), + be_str_weak(send_enqueued), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0019, // 0005 JMPF R3 #0020 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x74120004, // 0009 JMPT R4 #000F + 0x88100703, // 000A GETMBR R4 R3 K3 + 0x78120002, // 000B JMPF R4 #000F + 0x8C100704, // 000C GETMET R4 R3 K4 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C100400, // 000E CALL R4 2 + 0x88100702, // 000F GETMBR R4 R3 K2 + 0x7812000C, // 0010 JMPF R4 #001E + 0xB8120A00, // 0011 GETNGBL R4 K5 + 0x60140008, // 0012 GETGBL R5 G8 + 0x88180707, // 0013 GETMBR R6 R3 K7 + 0x88180D08, // 0014 GETMBR R6 R6 K8 + 0x7C140200, // 0015 CALL R5 1 + 0x00160C05, // 0016 ADD R5 K6 R5 + 0x541A0003, // 0017 LDINT R6 4 + 0x7C100400, // 0018 CALL R4 2 + 0x88100101, // 0019 GETMBR R4 R0 K1 + 0x8C100909, // 001A GETMET R4 R4 K9 + 0x5C180400, // 001B MOVE R6 R2 + 0x7C100400, // 001C CALL R4 2 + 0x70020000, // 001D JMP #001F + 0x0008050A, // 001E ADD R2 R2 K10 + 0x7001FFE0, // 001F JMP #0001 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: path2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_path2raw, /* name */ + be_nested_proto( + 9, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + }), + be_str_weak(path2raw), + &be_const_str_solidified, + ( &(const binstruction[107]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x541E0036, // 0001 LDINT R7 55 + 0x58200001, // 0002 LDCONST R8 K1 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200001, // 0006 LDCONST R8 K1 + 0x7C140600, // 0007 CALL R5 3 + 0x88140502, // 0008 GETMBR R5 R2 K2 + 0x541A00FE, // 0009 LDINT R6 255 + 0x18140A06, // 000A LE R5 R5 R6 + 0x78160008, // 000B JMPF R5 #0015 + 0x8C140300, // 000C GETMET R5 R1 K0 + 0x541E2401, // 000D LDINT R7 9218 + 0x5421FFFD, // 000E LDINT R8 -2 + 0x7C140600, // 000F CALL R5 3 + 0x8C140300, // 0010 GETMET R5 R1 K0 + 0x881C0502, // 0011 GETMBR R7 R2 K2 + 0x58200001, // 0012 LDCONST R8 K1 + 0x7C140600, // 0013 CALL R5 3 + 0x70020007, // 0014 JMP #001D + 0x8C140300, // 0015 GETMET R5 R1 K0 + 0x541E2501, // 0016 LDINT R7 9474 + 0x5421FFFD, // 0017 LDINT R8 -2 + 0x7C140600, // 0018 CALL R5 3 + 0x8C140300, // 0019 GETMET R5 R1 K0 + 0x881C0502, // 001A GETMBR R7 R2 K2 + 0x58200003, // 001B LDCONST R8 K3 + 0x7C140600, // 001C CALL R5 3 + 0x88140504, // 001D GETMBR R5 R2 K4 + 0x541A00FE, // 001E LDINT R6 255 + 0x18140A06, // 001F LE R5 R5 R6 + 0x78160008, // 0020 JMPF R5 #002A + 0x8C140300, // 0021 GETMET R5 R1 K0 + 0x541E2402, // 0022 LDINT R7 9219 + 0x5421FFFD, // 0023 LDINT R8 -2 + 0x7C140600, // 0024 CALL R5 3 + 0x8C140300, // 0025 GETMET R5 R1 K0 + 0x881C0504, // 0026 GETMBR R7 R2 K4 + 0x58200001, // 0027 LDCONST R8 K1 + 0x7C140600, // 0028 CALL R5 3 + 0x70020014, // 0029 JMP #003F + 0x88140504, // 002A GETMBR R5 R2 K4 + 0x541AFFFE, // 002B LDINT R6 65535 + 0x18140A06, // 002C LE R5 R5 R6 + 0x78160008, // 002D JMPF R5 #0037 + 0x8C140300, // 002E GETMET R5 R1 K0 + 0x541E2502, // 002F LDINT R7 9475 + 0x5421FFFD, // 0030 LDINT R8 -2 + 0x7C140600, // 0031 CALL R5 3 + 0x8C140300, // 0032 GETMET R5 R1 K0 + 0x881C0504, // 0033 GETMBR R7 R2 K4 + 0x58200003, // 0034 LDCONST R8 K3 + 0x7C140600, // 0035 CALL R5 3 + 0x70020007, // 0036 JMP #003F + 0x8C140300, // 0037 GETMET R5 R1 K0 + 0x541E2602, // 0038 LDINT R7 9731 + 0x5421FFFD, // 0039 LDINT R8 -2 + 0x7C140600, // 003A CALL R5 3 + 0x8C140300, // 003B GETMET R5 R1 K0 + 0x881C0504, // 003C GETMBR R7 R2 K4 + 0x54220003, // 003D LDINT R8 4 + 0x7C140600, // 003E CALL R5 3 + 0x88140505, // 003F GETMBR R5 R2 K5 + 0x541A00FE, // 0040 LDINT R6 255 + 0x18140A06, // 0041 LE R5 R5 R6 + 0x78160008, // 0042 JMPF R5 #004C + 0x8C140300, // 0043 GETMET R5 R1 K0 + 0x541E2403, // 0044 LDINT R7 9220 + 0x5421FFFD, // 0045 LDINT R8 -2 + 0x7C140600, // 0046 CALL R5 3 + 0x8C140300, // 0047 GETMET R5 R1 K0 + 0x881C0505, // 0048 GETMBR R7 R2 K5 + 0x58200001, // 0049 LDCONST R8 K1 + 0x7C140600, // 004A CALL R5 3 + 0x70020014, // 004B JMP #0061 + 0x88140505, // 004C GETMBR R5 R2 K5 + 0x541AFFFE, // 004D LDINT R6 65535 + 0x18140A06, // 004E LE R5 R5 R6 + 0x78160008, // 004F JMPF R5 #0059 + 0x8C140300, // 0050 GETMET R5 R1 K0 + 0x541E2503, // 0051 LDINT R7 9476 + 0x5421FFFD, // 0052 LDINT R8 -2 + 0x7C140600, // 0053 CALL R5 3 + 0x8C140300, // 0054 GETMET R5 R1 K0 + 0x881C0505, // 0055 GETMBR R7 R2 K5 + 0x58200003, // 0056 LDCONST R8 K3 + 0x7C140600, // 0057 CALL R5 3 + 0x70020007, // 0058 JMP #0061 + 0x8C140300, // 0059 GETMET R5 R1 K0 + 0x541E2603, // 005A LDINT R7 9732 + 0x5421FFFD, // 005B LDINT R8 -2 + 0x7C140600, // 005C CALL R5 3 + 0x8C140300, // 005D GETMET R5 R1 K0 + 0x881C0505, // 005E GETMBR R7 R2 K5 + 0x54220003, // 005F LDINT R8 4 + 0x7C140600, // 0060 CALL R5 3 + 0x78120003, // 0061 JMPF R4 #0066 + 0x8C140300, // 0062 GETMET R5 R1 K0 + 0x541E3404, // 0063 LDINT R7 13317 + 0x5421FFFD, // 0064 LDINT R8 -2 + 0x7C140600, // 0065 CALL R5 3 + 0x8C140300, // 0066 GETMET R5 R1 K0 + 0x541E0017, // 0067 LDINT R7 24 + 0x58200001, // 0068 LDCONST R8 K1 + 0x7C140600, // 0069 CALL R5 3 + 0x80000000, // 006A RET 0 }) ) ); @@ -231,566 +1192,170 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ /******************************************************************** -** Solidified function: process_timed_request +** Solidified function: process_incoming ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_timed_request, /* name */ +be_local_closure(class_Matter_IM_process_incoming, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 8, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TimedRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(timeout), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(send_status), - /* K10 */ be_nested_str_weak(SUCCESS), + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(opcode), + /* K1 */ be_const_int(2), + /* K2 */ be_nested_str_weak(read_request_solo), + /* K3 */ be_nested_str_weak(from_raw), + /* K4 */ be_nested_str_weak(raw), + /* K5 */ be_nested_str_weak(app_payload_idx), + /* K6 */ be_nested_str_weak(process_read_request_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(process_invoke_request_solo), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(parse), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(process_status_response), + /* K14 */ be_nested_str_weak(process_read_request_pull), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str_weak(send_ack_now), + /* K17 */ be_nested_str_weak(subscribe_request), + /* K18 */ be_nested_str_weak(process_write_request), + /* K19 */ be_nested_str_weak(process_write_response), + /* K20 */ be_nested_str_weak(process_invoke_request), + /* K21 */ be_nested_str_weak(process_timed_request), }), - be_str_weak(process_timed_request), + be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x881C0305, // 0009 GETMBR R7 R1 K5 - 0x881C0F06, // 000A GETMBR R7 R7 K6 - 0x88200707, // 000B GETMBR R8 R3 K7 - 0x7C140600, // 000C CALL R5 3 - 0x58180008, // 000D LDCONST R6 K8 - 0x7C100400, // 000E CALL R4 2 - 0x8C100109, // 000F GETMET R4 R0 K9 - 0x5C180200, // 0010 MOVE R6 R1 - 0xB81E0000, // 0011 GETNGBL R7 K0 - 0x881C0F0A, // 0012 GETMBR R7 R7 K10 - 0x7C100600, // 0013 CALL R4 3 - 0x50100200, // 0014 LDBOOL R4 1 0 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attributedata2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_attributedata2raw, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(355795236), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(path2raw), - /* K4 */ be_nested_str_weak(tag_sub), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(tlv2raw), - }), - be_str_weak(attributedata2raw), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x581C0001, // 0001 LDCONST R7 K1 - 0x5421FFFB, // 0002 LDINT R8 -4 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x5421FFFD, // 0006 LDINT R8 -2 - 0x7C140600, // 0007 CALL R5 3 - 0x8C140103, // 0008 GETMET R5 R0 K3 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x58240002, // 000B LDCONST R9 K2 - 0x5C280800, // 000C MOVE R10 R4 - 0x7C140A00, // 000D CALL R5 5 - 0x900E0905, // 000E SETMBR R3 K4 K5 - 0x8C140706, // 000F GETMET R5 R3 K6 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x7C140400, // 0011 CALL R5 2 - 0x8C140300, // 0012 GETMET R5 R1 K0 - 0x541E1817, // 0013 LDINT R7 6168 - 0x5421FFFD, // 0014 LDINT R8 -2 - 0x7C140600, // 0015 CALL R5 3 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_invoke_request_solo -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[42]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(invoke_request_solo_start), - /* K4 */ be_nested_str_weak(msg), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K7 */ be_nested_str_weak(get_command_name), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(command), - /* K10 */ be_nested_str_weak(device), - /* K11 */ be_nested_str_weak(invoke_request), - /* K12 */ be_nested_str_weak(session), - /* K13 */ be_nested_str_weak(command_fields), - /* K14 */ be_nested_str_weak(COMMAND_X20DONE), - /* K15 */ be_nested_str_weak(_X28), - /* K16 */ be_nested_str_weak(_X29_X20), - /* K17 */ be_nested_str_weak(), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(loglevel), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K22 */ be_nested_str_weak(local_session_id), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_const_int(354943030), - /* K25 */ be_const_int(1), - /* K26 */ be_nested_str_weak(SUCCESS), - /* K27 */ be_nested_str_weak(invokeresponse2raw), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K29 */ be_nested_str_weak(exchange_id), - /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K32 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K33 */ be_const_int(405077761), - /* K34 */ be_nested_str_weak(build_response), - /* K35 */ be_nested_str_weak(message_handler), - /* K36 */ be_nested_str_weak(raw), - /* K37 */ be_nested_str_weak(clear), - /* K38 */ be_nested_str_weak(encode_frame), - /* K39 */ be_nested_str_weak(encrypt), - /* K40 */ be_nested_str_weak(send_response_frame), - /* K41 */ be_nested_str_weak(RESPONSE_X20SENT), - }), - be_str_weak(process_invoke_request_solo), - &be_const_str_solidified, - ( &(const binstruction[203]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0x900A0801, // 0005 SETMBR R2 K4 R1 - 0xB80E0000, // 0006 GETNGBL R3 K0 - 0x880C0706, // 0007 GETMBR R3 R3 K6 - 0x900A0A03, // 0008 SETMBR R2 K5 R3 - 0xB80E0000, // 0009 GETNGBL R3 K0 - 0x8C0C0707, // 000A GETMET R3 R3 K7 - 0x88140508, // 000B GETMBR R5 R2 K8 - 0x88180509, // 000C GETMBR R6 R2 K9 - 0x7C0C0600, // 000D CALL R3 3 - 0x60100008, // 000E GETGBL R4 G8 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C100200, // 0010 CALL R4 1 - 0x8814010A, // 0011 GETMBR R5 R0 K10 - 0x8C140B0B, // 0012 GETMET R5 R5 K11 - 0x881C030C, // 0013 GETMBR R7 R1 K12 - 0x8820050D, // 0014 GETMBR R8 R2 K13 - 0x5C240400, // 0015 MOVE R9 R2 - 0x7C140800, // 0016 CALL R5 4 - 0xB81A0000, // 0017 GETNGBL R6 K0 - 0x88180D01, // 0018 GETMBR R6 R6 K1 - 0x8C180D02, // 0019 GETMET R6 R6 K2 - 0x5820000E, // 001A LDCONST R8 K14 - 0x7C180400, // 001B CALL R6 2 - 0x88180502, // 001C GETMBR R6 R2 K2 - 0x4C1C0000, // 001D LDNIL R7 - 0x20180C07, // 001E NE R6 R6 R7 - 0x781A0005, // 001F JMPF R6 #0026 - 0x60180008, // 0020 GETGBL R6 G8 - 0x881C0502, // 0021 GETMBR R7 R2 K2 - 0x7C180200, // 0022 CALL R6 1 - 0x001A1E06, // 0023 ADD R6 K15 R6 - 0x00180D10, // 0024 ADD R6 R6 K16 - 0x70020000, // 0025 JMP #0027 - 0x58180011, // 0026 LDCONST R6 K17 - 0xB81E2400, // 0027 GETNGBL R7 K18 - 0x8C1C0F13, // 0028 GETMET R7 R7 K19 - 0x58240014, // 0029 LDCONST R9 K20 - 0x7C1C0400, // 002A CALL R7 2 - 0x781E000D, // 002B JMPF R7 #003A - 0xB81E0400, // 002C GETNGBL R7 K2 - 0x60200018, // 002D GETGBL R8 G24 - 0x58240015, // 002E LDCONST R9 K21 - 0x8828030C, // 002F GETMBR R10 R1 K12 - 0x88281516, // 0030 GETMBR R10 R10 K22 - 0x5C2C0800, // 0031 MOVE R11 R4 - 0x780E0001, // 0032 JMPF R3 #0035 - 0x5C300600, // 0033 MOVE R12 R3 - 0x70020000, // 0034 JMP #0036 - 0x58300011, // 0035 LDCONST R12 K17 - 0x5C340C00, // 0036 MOVE R13 R6 - 0x7C200A00, // 0037 CALL R8 5 - 0x58240014, // 0038 LDCONST R9 K20 - 0x7C1C0400, // 0039 CALL R7 2 - 0x4C1C0000, // 003A LDNIL R7 - 0x900A0407, // 003B SETMBR R2 K2 R7 - 0x601C0015, // 003C GETGBL R7 G21 - 0x5422002F, // 003D LDINT R8 48 - 0x7C1C0200, // 003E CALL R7 1 - 0x8C200F17, // 003F GETMET R8 R7 K23 - 0x58280018, // 0040 LDCONST R10 K24 - 0x542DFFFB, // 0041 LDINT R11 -4 - 0x7C200600, // 0042 CALL R8 3 - 0x8C200F17, // 0043 GETMET R8 R7 K23 - 0x58280019, // 0044 LDCONST R10 K25 - 0x582C0019, // 0045 LDCONST R11 K25 - 0x7C200600, // 0046 CALL R8 3 - 0x50200200, // 0047 LDBOOL R8 1 0 - 0x1C200A08, // 0048 EQ R8 R5 R8 - 0x74220004, // 0049 JMPT R8 #004F - 0x88200505, // 004A GETMBR R8 R2 K5 - 0xB8260000, // 004B GETNGBL R9 K0 - 0x8824131A, // 004C GETMBR R9 R9 K26 - 0x1C201009, // 004D EQ R8 R8 R9 - 0x78220016, // 004E JMPF R8 #0066 - 0xB8220000, // 004F GETNGBL R8 K0 - 0x8820111A, // 0050 GETMBR R8 R8 K26 - 0x900A0A08, // 0051 SETMBR R2 K5 R8 - 0x8C20011B, // 0052 GETMET R8 R0 K27 - 0x5C280E00, // 0053 MOVE R10 R7 - 0x5C2C0400, // 0054 MOVE R11 R2 - 0x4C300000, // 0055 LDNIL R12 - 0x7C200800, // 0056 CALL R8 4 - 0xB8222400, // 0057 GETNGBL R8 K18 - 0x8C201113, // 0058 GETMET R8 R8 K19 - 0x58280014, // 0059 LDCONST R10 K20 - 0x7C200400, // 005A CALL R8 2 - 0x78220008, // 005B JMPF R8 #0065 - 0xB8220400, // 005C GETNGBL R8 K2 - 0x60240018, // 005D GETGBL R9 G24 - 0x5828001C, // 005E LDCONST R10 K28 - 0x882C030C, // 005F GETMBR R11 R1 K12 - 0x882C1716, // 0060 GETMBR R11 R11 K22 - 0x8830031D, // 0061 GETMBR R12 R1 K29 - 0x7C240600, // 0062 CALL R9 3 - 0x58280014, // 0063 LDCONST R10 K20 - 0x7C200400, // 0064 CALL R8 2 - 0x70020043, // 0065 JMP #00AA - 0x4C200000, // 0066 LDNIL R8 - 0x20200A08, // 0067 NE R8 R5 R8 - 0x78220017, // 0068 JMPF R8 #0081 - 0x8C20011B, // 0069 GETMET R8 R0 K27 - 0x5C280E00, // 006A MOVE R10 R7 - 0x5C2C0400, // 006B MOVE R11 R2 - 0x5C300A00, // 006C MOVE R12 R5 - 0x7C200800, // 006D CALL R8 4 - 0x5C200600, // 006E MOVE R8 R3 - 0x74220000, // 006F JMPT R8 #0071 - 0x580C0011, // 0070 LDCONST R3 K17 - 0xB8222400, // 0071 GETNGBL R8 K18 - 0x8C201113, // 0072 GETMET R8 R8 K19 - 0x58280014, // 0073 LDCONST R10 K20 - 0x7C200400, // 0074 CALL R8 2 - 0x78220009, // 0075 JMPF R8 #0080 - 0xB8220400, // 0076 GETNGBL R8 K2 - 0x60240018, // 0077 GETGBL R9 G24 - 0x5828001E, // 0078 LDCONST R10 K30 - 0x882C030C, // 0079 GETMBR R11 R1 K12 - 0x882C1716, // 007A GETMBR R11 R11 K22 - 0x5C300400, // 007B MOVE R12 R2 - 0x5C340600, // 007C MOVE R13 R3 - 0x7C240800, // 007D CALL R9 4 - 0x58280014, // 007E LDCONST R10 K20 - 0x7C200400, // 007F CALL R8 2 - 0x70020028, // 0080 JMP #00AA - 0x88200505, // 0081 GETMBR R8 R2 K5 - 0x4C240000, // 0082 LDNIL R9 - 0x20201009, // 0083 NE R8 R8 R9 - 0x78220014, // 0084 JMPF R8 #009A - 0x8C20011B, // 0085 GETMET R8 R0 K27 - 0x5C280E00, // 0086 MOVE R10 R7 - 0x5C2C0400, // 0087 MOVE R11 R2 - 0x4C300000, // 0088 LDNIL R12 - 0x7C200800, // 0089 CALL R8 4 - 0xB8222400, // 008A GETNGBL R8 K18 - 0x8C201113, // 008B GETMET R8 R8 K19 - 0x58280014, // 008C LDCONST R10 K20 - 0x7C200400, // 008D CALL R8 2 - 0x78220009, // 008E JMPF R8 #0099 - 0xB8220400, // 008F GETNGBL R8 K2 - 0x60240018, // 0090 GETGBL R9 G24 - 0x5828001F, // 0091 LDCONST R10 K31 - 0x882C030C, // 0092 GETMBR R11 R1 K12 - 0x882C1716, // 0093 GETMBR R11 R11 K22 - 0x88300505, // 0094 GETMBR R12 R2 K5 - 0x8834031D, // 0095 GETMBR R13 R1 K29 - 0x7C240800, // 0096 CALL R9 4 - 0x58280014, // 0097 LDCONST R10 K20 - 0x7C200400, // 0098 CALL R8 2 - 0x7002000F, // 0099 JMP #00AA - 0xB8222400, // 009A GETNGBL R8 K18 - 0x8C201113, // 009B GETMET R8 R8 K19 - 0x58280014, // 009C LDCONST R10 K20 - 0x7C200400, // 009D CALL R8 2 - 0x78220008, // 009E JMPF R8 #00A8 - 0xB8220400, // 009F GETNGBL R8 K2 - 0x60240018, // 00A0 GETGBL R9 G24 - 0x58280020, // 00A1 LDCONST R10 K32 - 0x882C030C, // 00A2 GETMBR R11 R1 K12 - 0x882C1716, // 00A3 GETMBR R11 R11 K22 - 0x8830031D, // 00A4 GETMBR R12 R1 K29 - 0x7C240600, // 00A5 CALL R9 3 - 0x58280014, // 00A6 LDCONST R10 K20 - 0x7C200400, // 00A7 CALL R8 2 - 0x50200000, // 00A8 LDBOOL R8 0 0 - 0x80041000, // 00A9 RET 1 R8 - 0x8C200F17, // 00AA GETMET R8 R7 K23 - 0x58280021, // 00AB LDCONST R10 K33 - 0x542DFFFB, // 00AC LDINT R11 -4 - 0x7C200600, // 00AD CALL R8 3 - 0x8C200F17, // 00AE GETMET R8 R7 K23 - 0x542A0017, // 00AF LDINT R10 24 - 0x582C0019, // 00B0 LDCONST R11 K25 - 0x7C200600, // 00B1 CALL R8 3 - 0x8C200322, // 00B2 GETMET R8 R1 K34 - 0x542A0008, // 00B3 LDINT R10 9 - 0x502C0200, // 00B4 LDBOOL R11 1 0 - 0x7C200600, // 00B5 CALL R8 3 - 0x8824010A, // 00B6 GETMBR R9 R0 K10 - 0x88241323, // 00B7 GETMBR R9 R9 K35 - 0x88280324, // 00B8 GETMBR R10 R1 K36 - 0x8C2C1525, // 00B9 GETMET R11 R10 K37 - 0x7C2C0200, // 00BA CALL R11 1 - 0x8C2C1126, // 00BB GETMET R11 R8 K38 - 0x5C340E00, // 00BC MOVE R13 R7 - 0x5C381400, // 00BD MOVE R14 R10 - 0x7C2C0600, // 00BE CALL R11 3 - 0x8C2C1127, // 00BF GETMET R11 R8 K39 - 0x7C2C0200, // 00C0 CALL R11 1 - 0x8C2C1328, // 00C1 GETMET R11 R9 K40 - 0x5C341000, // 00C2 MOVE R13 R8 - 0x7C2C0400, // 00C3 CALL R11 2 - 0xB82E0000, // 00C4 GETNGBL R11 K0 - 0x882C1701, // 00C5 GETMBR R11 R11 K1 - 0x8C2C1702, // 00C6 GETMET R11 R11 K2 - 0x58340029, // 00C7 LDCONST R13 K41 - 0x7C2C0400, // 00C8 CALL R11 2 - 0x502C0200, // 00C9 LDBOOL R11 1 0 - 0x80041600, // 00CA RET 1 R11 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invokeresponse2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(command), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(SUCCESS), - /* K9 */ be_nested_str_weak(tag_sub), - /* K10 */ be_nested_str_weak(tlv2raw), - }), - be_str_weak(invokeresponse2raw), - &be_const_str_solidified, - ( &(const binstruction[148]) { /* code */ - 0x8C100300, // 0000 GETMET R4 R1 K0 - 0x541A0014, // 0001 LDINT R6 21 - 0x581C0001, // 0002 LDCONST R7 K1 - 0x7C100600, // 0003 CALL R4 3 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120004, // 0006 JMPF R4 #000C - 0x8C100300, // 0007 GETMET R4 R1 K0 - 0x541A3500, // 0008 LDINT R6 13569 - 0x541DFFFD, // 0009 LDINT R7 -2 - 0x7C100600, // 000A CALL R4 3 - 0x70020003, // 000B JMP #0010 - 0x8C100300, // 000C GETMET R4 R1 K0 - 0x541A34FF, // 000D LDINT R6 13568 - 0x541DFFFD, // 000E LDINT R7 -2 - 0x7C100600, // 000F CALL R4 3 - 0x8C100300, // 0010 GETMET R4 R1 K0 - 0x541A36FF, // 0011 LDINT R6 14080 - 0x541DFFFD, // 0012 LDINT R7 -2 - 0x7C100600, // 0013 CALL R4 3 - 0x88100502, // 0014 GETMBR R4 R2 K2 - 0x541600FE, // 0015 LDINT R5 255 - 0x18100805, // 0016 LE R4 R4 R5 - 0x78120008, // 0017 JMPF R4 #0021 - 0x8C100300, // 0018 GETMET R4 R1 K0 - 0x541A23FF, // 0019 LDINT R6 9216 - 0x541DFFFD, // 001A LDINT R7 -2 - 0x7C100600, // 001B CALL R4 3 - 0x8C100300, // 001C GETMET R4 R1 K0 - 0x88180502, // 001D GETMBR R6 R2 K2 - 0x581C0001, // 001E LDCONST R7 K1 + ( &(const binstruction[124]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x1C0C0501, // 0001 EQ R3 R2 K1 + 0x780E000D, // 0002 JMPF R3 #0011 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x88140304, // 0005 GETMBR R5 R1 K4 + 0x88180305, // 0006 GETMBR R6 R1 K5 + 0x7C0C0600, // 0007 CALL R3 3 + 0x4C100000, // 0008 LDNIL R4 + 0x20100604, // 0009 NE R4 R3 R4 + 0x78120004, // 000A JMPF R4 #0010 + 0x8C100106, // 000B GETMET R4 R0 K6 + 0x5C180200, // 000C MOVE R6 R1 + 0x5C1C0600, // 000D MOVE R7 R3 + 0x7C100600, // 000E CALL R4 3 + 0x80040800, // 000F RET 1 R4 + 0x7002000F, // 0010 JMP #0021 + 0x540E0007, // 0011 LDINT R3 8 + 0x1C0C0403, // 0012 EQ R3 R2 R3 + 0x780E000C, // 0013 JMPF R3 #0021 + 0x880C0107, // 0014 GETMBR R3 R0 K7 + 0x8C0C0703, // 0015 GETMET R3 R3 K3 + 0x88140304, // 0016 GETMBR R5 R1 K4 + 0x88180305, // 0017 GETMBR R6 R1 K5 + 0x7C0C0600, // 0018 CALL R3 3 + 0x4C100000, // 0019 LDNIL R4 + 0x20100604, // 001A NE R4 R3 R4 + 0x78120004, // 001B JMPF R4 #0021 + 0x8C100108, // 001C GETMET R4 R0 K8 + 0x5C180200, // 001D MOVE R6 R1 + 0x5C1C0600, // 001E MOVE R7 R3 0x7C100600, // 001F CALL R4 3 - 0x70020007, // 0020 JMP #0029 - 0x8C100300, // 0021 GETMET R4 R1 K0 - 0x541A24FF, // 0022 LDINT R6 9472 - 0x541DFFFD, // 0023 LDINT R7 -2 - 0x7C100600, // 0024 CALL R4 3 - 0x8C100300, // 0025 GETMET R4 R1 K0 - 0x88180502, // 0026 GETMBR R6 R2 K2 - 0x581C0003, // 0027 LDCONST R7 K3 - 0x7C100600, // 0028 CALL R4 3 - 0x88100504, // 0029 GETMBR R4 R2 K4 - 0x541600FE, // 002A LDINT R5 255 - 0x18100805, // 002B LE R4 R4 R5 - 0x78120008, // 002C JMPF R4 #0036 - 0x8C100300, // 002D GETMET R4 R1 K0 - 0x541A2400, // 002E LDINT R6 9217 - 0x541DFFFD, // 002F LDINT R7 -2 - 0x7C100600, // 0030 CALL R4 3 - 0x8C100300, // 0031 GETMET R4 R1 K0 - 0x88180504, // 0032 GETMBR R6 R2 K4 - 0x581C0001, // 0033 LDCONST R7 K1 + 0x80040800, // 0020 RET 1 R4 + 0xB80E1200, // 0021 GETNGBL R3 K9 + 0x880C070A, // 0022 GETMBR R3 R3 K10 + 0x8C0C070B, // 0023 GETMET R3 R3 K11 + 0x88140304, // 0024 GETMBR R5 R1 K4 + 0x88180305, // 0025 GETMBR R6 R1 K5 + 0x7C0C0600, // 0026 CALL R3 3 + 0x1C10050C, // 0027 EQ R4 R2 K12 + 0x78120005, // 0028 JMPF R4 #002F + 0x8C10010D, // 0029 GETMET R4 R0 K13 + 0x5C180200, // 002A MOVE R6 R1 + 0x5C1C0600, // 002B MOVE R7 R3 + 0x7C100600, // 002C CALL R4 3 + 0x80040800, // 002D RET 1 R4 + 0x7002004A, // 002E JMP #007A + 0x1C100501, // 002F EQ R4 R2 K1 + 0x78120005, // 0030 JMPF R4 #0037 + 0x8C10010E, // 0031 GETMET R4 R0 K14 + 0x5C180200, // 0032 MOVE R6 R1 + 0x5C1C0600, // 0033 MOVE R7 R3 0x7C100600, // 0034 CALL R4 3 - 0x70020014, // 0035 JMP #004B - 0x88100504, // 0036 GETMBR R4 R2 K4 - 0x5416FFFE, // 0037 LDINT R5 65535 - 0x18100805, // 0038 LE R4 R4 R5 - 0x78120008, // 0039 JMPF R4 #0043 - 0x8C100300, // 003A GETMET R4 R1 K0 - 0x541A2500, // 003B LDINT R6 9473 - 0x541DFFFD, // 003C LDINT R7 -2 - 0x7C100600, // 003D CALL R4 3 - 0x8C100300, // 003E GETMET R4 R1 K0 - 0x88180504, // 003F GETMBR R6 R2 K4 - 0x581C0003, // 0040 LDCONST R7 K3 - 0x7C100600, // 0041 CALL R4 3 - 0x70020007, // 0042 JMP #004B - 0x8C100300, // 0043 GETMET R4 R1 K0 - 0x541A2600, // 0044 LDINT R6 9729 - 0x541DFFFD, // 0045 LDINT R7 -2 - 0x7C100600, // 0046 CALL R4 3 - 0x8C100300, // 0047 GETMET R4 R1 K0 - 0x88180504, // 0048 GETMBR R6 R2 K4 - 0x541E0003, // 0049 LDINT R7 4 - 0x7C100600, // 004A CALL R4 3 - 0x88100505, // 004B GETMBR R4 R2 K5 - 0x541600FE, // 004C LDINT R5 255 - 0x18100805, // 004D LE R4 R4 R5 - 0x78120008, // 004E JMPF R4 #0058 - 0x8C100300, // 004F GETMET R4 R1 K0 - 0x541A2401, // 0050 LDINT R6 9218 - 0x541DFFFD, // 0051 LDINT R7 -2 - 0x7C100600, // 0052 CALL R4 3 - 0x8C100300, // 0053 GETMET R4 R1 K0 - 0x88180505, // 0054 GETMBR R6 R2 K5 - 0x581C0001, // 0055 LDCONST R7 K1 - 0x7C100600, // 0056 CALL R4 3 - 0x70020014, // 0057 JMP #006D - 0x88100505, // 0058 GETMBR R4 R2 K5 - 0x5416FFFE, // 0059 LDINT R5 65535 - 0x18100805, // 005A LE R4 R4 R5 - 0x78120008, // 005B JMPF R4 #0065 - 0x8C100300, // 005C GETMET R4 R1 K0 - 0x541A2501, // 005D LDINT R6 9474 - 0x541DFFFD, // 005E LDINT R7 -2 - 0x7C100600, // 005F CALL R4 3 - 0x8C100300, // 0060 GETMET R4 R1 K0 - 0x88180505, // 0061 GETMBR R6 R2 K5 - 0x581C0003, // 0062 LDCONST R7 K3 - 0x7C100600, // 0063 CALL R4 3 - 0x70020007, // 0064 JMP #006D - 0x8C100300, // 0065 GETMET R4 R1 K0 - 0x541A2601, // 0066 LDINT R6 9730 - 0x541DFFFD, // 0067 LDINT R7 -2 - 0x7C100600, // 0068 CALL R4 3 - 0x8C100300, // 0069 GETMET R4 R1 K0 - 0x88180505, // 006A GETMBR R6 R2 K5 - 0x541E0003, // 006B LDINT R7 4 - 0x7C100600, // 006C CALL R4 3 - 0x8C100300, // 006D GETMET R4 R1 K0 - 0x541A0017, // 006E LDINT R6 24 - 0x581C0001, // 006F LDCONST R7 K1 - 0x7C100600, // 0070 CALL R4 3 - 0x4C100000, // 0071 LDNIL R4 - 0x1C100604, // 0072 EQ R4 R3 R4 - 0x78120016, // 0073 JMPF R4 #008B - 0x88100506, // 0074 GETMBR R4 R2 K6 - 0x4C140000, // 0075 LDNIL R5 - 0x1C140805, // 0076 EQ R5 R4 R5 - 0x78160001, // 0077 JMPF R5 #007A - 0xB8160E00, // 0078 GETNGBL R5 K7 - 0x88100B08, // 0079 GETMBR R4 R5 K8 - 0x8C140300, // 007A GETMET R5 R1 K0 - 0x541E3500, // 007B LDINT R7 13569 - 0x5421FFFD, // 007C LDINT R8 -2 - 0x7C140600, // 007D CALL R5 3 - 0x8C140300, // 007E GETMET R5 R1 K0 - 0x541E23FF, // 007F LDINT R7 9216 - 0x5421FFFD, // 0080 LDINT R8 -2 - 0x7C140600, // 0081 CALL R5 3 - 0x8C140300, // 0082 GETMET R5 R1 K0 - 0x881C0506, // 0083 GETMBR R7 R2 K6 - 0x58200001, // 0084 LDCONST R8 K1 - 0x7C140600, // 0085 CALL R5 3 - 0x8C140300, // 0086 GETMET R5 R1 K0 - 0x541E0017, // 0087 LDINT R7 24 - 0x58200001, // 0088 LDCONST R8 K1 - 0x7C140600, // 0089 CALL R5 3 - 0x70020003, // 008A JMP #008F - 0x900E1301, // 008B SETMBR R3 K9 K1 - 0x8C10070A, // 008C GETMET R4 R3 K10 - 0x5C180200, // 008D MOVE R6 R1 - 0x7C100400, // 008E CALL R4 2 - 0x8C100300, // 008F GETMET R4 R1 K0 - 0x541A1817, // 0090 LDINT R6 6168 - 0x541DFFFD, // 0091 LDINT R7 -2 - 0x7C100600, // 0092 CALL R4 3 - 0x80000000, // 0093 RET 0 + 0x80040800, // 0035 RET 1 R4 + 0x70020042, // 0036 JMP #007A + 0x1C10050F, // 0037 EQ R4 R2 K15 + 0x78120008, // 0038 JMPF R4 #0042 + 0x8C100110, // 0039 GETMET R4 R0 K16 + 0x5C180200, // 003A MOVE R6 R1 + 0x7C100400, // 003B CALL R4 2 + 0x8C100111, // 003C GETMET R4 R0 K17 + 0x5C180200, // 003D MOVE R6 R1 + 0x5C1C0600, // 003E MOVE R7 R3 + 0x7C100600, // 003F CALL R4 3 + 0x80040800, // 0040 RET 1 R4 + 0x70020037, // 0041 JMP #007A + 0x54120003, // 0042 LDINT R4 4 + 0x1C100404, // 0043 EQ R4 R2 R4 + 0x78120002, // 0044 JMPF R4 #0048 + 0x50100000, // 0045 LDBOOL R4 0 0 + 0x80040800, // 0046 RET 1 R4 + 0x70020031, // 0047 JMP #007A + 0x54120004, // 0048 LDINT R4 5 + 0x1C100404, // 0049 EQ R4 R2 R4 + 0x78120002, // 004A JMPF R4 #004E + 0x50100000, // 004B LDBOOL R4 0 0 + 0x80040800, // 004C RET 1 R4 + 0x7002002B, // 004D JMP #007A + 0x54120005, // 004E LDINT R4 6 + 0x1C100404, // 004F EQ R4 R2 R4 + 0x78120008, // 0050 JMPF R4 #005A + 0x8C100110, // 0051 GETMET R4 R0 K16 + 0x5C180200, // 0052 MOVE R6 R1 + 0x7C100400, // 0053 CALL R4 2 + 0x8C100112, // 0054 GETMET R4 R0 K18 + 0x5C180200, // 0055 MOVE R6 R1 + 0x5C1C0600, // 0056 MOVE R7 R3 + 0x7C100600, // 0057 CALL R4 3 + 0x80040800, // 0058 RET 1 R4 + 0x7002001F, // 0059 JMP #007A + 0x54120006, // 005A LDINT R4 7 + 0x1C100404, // 005B EQ R4 R2 R4 + 0x78120005, // 005C JMPF R4 #0063 + 0x8C100113, // 005D GETMET R4 R0 K19 + 0x5C180200, // 005E MOVE R6 R1 + 0x5C1C0600, // 005F MOVE R7 R3 + 0x7C100600, // 0060 CALL R4 3 + 0x80040800, // 0061 RET 1 R4 + 0x70020016, // 0062 JMP #007A + 0x54120007, // 0063 LDINT R4 8 + 0x1C100404, // 0064 EQ R4 R2 R4 + 0x78120005, // 0065 JMPF R4 #006C + 0x8C100114, // 0066 GETMET R4 R0 K20 + 0x5C180200, // 0067 MOVE R6 R1 + 0x5C1C0600, // 0068 MOVE R7 R3 + 0x7C100600, // 0069 CALL R4 3 + 0x80040800, // 006A RET 1 R4 + 0x7002000D, // 006B JMP #007A + 0x54120008, // 006C LDINT R4 9 + 0x1C100404, // 006D EQ R4 R2 R4 + 0x78120002, // 006E JMPF R4 #0072 + 0x50100000, // 006F LDBOOL R4 0 0 + 0x80040800, // 0070 RET 1 R4 + 0x70020007, // 0071 JMP #007A + 0x54120009, // 0072 LDINT R4 10 + 0x1C100404, // 0073 EQ R4 R2 R4 + 0x78120004, // 0074 JMPF R4 #007A + 0x8C100115, // 0075 GETMET R4 R0 K21 + 0x5C180200, // 0076 MOVE R6 R1 + 0x5C1C0600, // 0077 MOVE R7 R3 + 0x7C100600, // 0078 CALL R4 3 + 0x80040800, // 0079 RET 1 R4 + 0x50100000, // 007A LDBOOL R4 0 0 + 0x80040800, // 007B RET 1 R4 }) ) ); @@ -798,10 +1363,10 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ /******************************************************************** -** Solidified function: send_ack_now +** Solidified function: remove_sendqueue_by_exchangeid ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_ack_now, /* name */ +be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -811,25 +1376,40 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(_message_handler), - /* K2 */ be_nested_str_weak(send_encrypted_ack), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_nested_str_weak(remove), + /* K4 */ be_const_int(1), }), - be_str_weak(send_ack_now), + be_str_weak(remove_sendqueue_by_exchangeid), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ + ( &(const binstruction[24]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x88080501, // 0005 GETMBR R2 R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 - 0x5C100200, // 0007 MOVE R4 R1 - 0x50140000, // 0008 LDBOOL R5 0 0 - 0x7C080600, // 0009 CALL R2 3 - 0x80000000, // 000A RET 0 + 0x58080000, // 0004 LDCONST R2 K0 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000C, // 0009 JMPF R3 #0017 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x1C0C0601, // 000E EQ R3 R3 R1 + 0x780E0004, // 000F JMPF R3 #0015 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x8C0C0703, // 0011 GETMET R3 R3 K3 + 0x5C140400, // 0012 MOVE R5 R2 + 0x7C0C0400, // 0013 CALL R3 2 + 0x70020000, // 0014 JMP #0016 + 0x00080504, // 0015 ADD R2 R2 K4 + 0x7001FFED, // 0016 JMP #0005 + 0x80000000, // 0017 RET 0 }) ) ); @@ -1133,12 +1713,12 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ /******************************************************************** -** Solidified function: process_read_request +** Solidified function: process_write_response ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_read_request, /* name */ +be_local_closure(class_Matter_IM_process_write_response, /* name */ be_nested_proto( - 9, /* nstack */ + 6, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1146,458 +1726,22 @@ be_local_closure(class_Matter_IM_process_read_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(read_request_start), - /* K4 */ be_nested_str_weak(ReadRequestMessage), - /* K5 */ be_nested_str_weak(from_TLV), - /* K6 */ be_nested_str_weak(attributes_requests), - /* K7 */ be_nested_str_weak(_inner_process_read_request), - /* K8 */ be_nested_str_weak(session), - /* K9 */ be_nested_str_weak(send_report_data), - }), - be_str_weak(process_read_request), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0xB80E0000, // 0005 GETNGBL R3 K0 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0705, // 0008 GETMET R3 R3 K5 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x88100706, // 000B GETMBR R4 R3 K6 - 0x4C140000, // 000C LDNIL R5 - 0x20100805, // 000D NE R4 R4 R5 - 0x78120008, // 000E JMPF R4 #0018 - 0x8C100107, // 000F GETMET R4 R0 K7 - 0x88180308, // 0010 GETMBR R6 R1 K8 - 0x5C1C0600, // 0011 MOVE R7 R3 - 0x5C200200, // 0012 MOVE R8 R1 - 0x7C100800, // 0013 CALL R4 4 - 0x8C140109, // 0014 GETMET R5 R0 K9 - 0x5C1C0200, // 0015 MOVE R7 R1 - 0x5C200800, // 0016 MOVE R8 R4 - 0x7C140600, // 0017 CALL R5 3 - 0x50100200, // 0018 LDBOOL R4 1 0 - 0x80040800, // 0019 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_invoke_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_invoke_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_InvokeResponse), - }), - be_str_weak(send_invoke_response), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_write_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_write_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_WriteResponse), - }), - be_str_weak(send_write_response), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_write_request, /* name */ - be_nested_proto( - 19, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 16, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(get_attribute_name), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(_X20_X28), - /* K5 */ be_nested_str_weak(_X29), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(status), - /* K8 */ be_nested_str_weak(UNSUPPORTED_WRITE), - /* K9 */ be_nested_str_weak(write_attribute), - /* K10 */ be_nested_str_weak(session), - /* K11 */ be_nested_str_weak(SUCCESS), - /* K12 */ be_nested_str_weak(AttributeStatusIB), - /* K13 */ be_nested_str_weak(path), - /* K14 */ be_nested_str_weak(AttributePathIB), - /* K15 */ be_nested_str_weak(StatusIB), - /* K16 */ be_nested_str_weak(endpoint), - /* K17 */ be_nested_str_weak(write_responses), - /* K18 */ be_nested_str_weak(push), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K21 */ be_const_int(0), - /* K22 */ be_const_int(2), - /* K23 */ be_const_int(3), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED), - }), - be_str_weak(write_single_attribute), - &be_const_str_solidified, - ( &(const binstruction[99]) { /* code */ - 0xB8160000, // 0000 GETNGBL R5 K0 - 0x8C140B01, // 0001 GETMET R5 R5 K1 - 0x881C0502, // 0002 GETMBR R7 R2 K2 - 0x88200503, // 0003 GETMBR R8 R2 K3 - 0x7C140600, // 0004 CALL R5 3 - 0x78160002, // 0005 JMPF R5 #0009 - 0x001A0805, // 0006 ADD R6 K4 R5 - 0x00180D05, // 0007 ADD R6 R6 K5 - 0x70020000, // 0008 JMP #000A - 0x58180006, // 0009 LDCONST R6 K6 - 0x5C140C00, // 000A MOVE R5 R6 - 0xB81A0000, // 000B GETNGBL R6 K0 - 0x88180D08, // 000C GETMBR R6 R6 K8 - 0x900A0E06, // 000D SETMBR R2 K7 R6 - 0x4C180000, // 000E LDNIL R6 - 0x20180206, // 000F NE R6 R1 R6 - 0x781A0006, // 0010 JMPF R6 #0018 - 0x8C180309, // 0011 GETMET R6 R1 K9 - 0x68200000, // 0012 GETUPV R8 U0 - 0x8820110A, // 0013 GETMBR R8 R8 K10 - 0x5C240400, // 0014 MOVE R9 R2 - 0x5C280600, // 0015 MOVE R10 R3 - 0x7C180800, // 0016 CALL R6 4 - 0x70020000, // 0017 JMP #0019 - 0x4C180000, // 0018 LDNIL R6 - 0x781A0002, // 0019 JMPF R6 #001D - 0xB81E0000, // 001A GETNGBL R7 K0 - 0x881C0F0B, // 001B GETMBR R7 R7 K11 - 0x900A0E07, // 001C SETMBR R2 K7 R7 - 0x881C0507, // 001D GETMBR R7 R2 K7 - 0x4C200000, // 001E LDNIL R8 - 0x201C0E08, // 001F NE R7 R7 R8 - 0x781E0036, // 0020 JMPF R7 #0058 - 0x78120034, // 0021 JMPF R4 #0057 - 0xB81E0000, // 0022 GETNGBL R7 K0 - 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 - 0x7C1C0200, // 0024 CALL R7 1 - 0xB8220000, // 0025 GETNGBL R8 K0 - 0x8C20110E, // 0026 GETMET R8 R8 K14 - 0x7C200200, // 0027 CALL R8 1 - 0x901E1A08, // 0028 SETMBR R7 K13 R8 - 0xB8220000, // 0029 GETNGBL R8 K0 - 0x8C20110F, // 002A GETMET R8 R8 K15 - 0x7C200200, // 002B CALL R8 1 - 0x901E0E08, // 002C SETMBR R7 K7 R8 - 0x88200F0D, // 002D GETMBR R8 R7 K13 - 0x88240510, // 002E GETMBR R9 R2 K16 - 0x90222009, // 002F SETMBR R8 K16 R9 - 0x88200F0D, // 0030 GETMBR R8 R7 K13 - 0x88240502, // 0031 GETMBR R9 R2 K2 - 0x90220409, // 0032 SETMBR R8 K2 R9 - 0x88200F0D, // 0033 GETMBR R8 R7 K13 - 0x88240503, // 0034 GETMBR R9 R2 K3 - 0x90220609, // 0035 SETMBR R8 K3 R9 - 0x88200F07, // 0036 GETMBR R8 R7 K7 - 0x88240507, // 0037 GETMBR R9 R2 K7 - 0x90220E09, // 0038 SETMBR R8 K7 R9 - 0x88200111, // 0039 GETMBR R8 R0 K17 - 0x8C201112, // 003A GETMET R8 R8 K18 - 0x5C280E00, // 003B MOVE R10 R7 - 0x7C200400, // 003C CALL R8 2 - 0xB8222600, // 003D GETNGBL R8 K19 - 0x60240018, // 003E GETGBL R9 G24 - 0x58280014, // 003F LDCONST R10 K20 - 0x602C0008, // 0040 GETGBL R11 G8 - 0x5C300400, // 0041 MOVE R12 R2 - 0x7C2C0200, // 0042 CALL R11 1 - 0x5C300A00, // 0043 MOVE R12 R5 - 0x88340507, // 0044 GETMBR R13 R2 K7 - 0x88380507, // 0045 GETMBR R14 R2 K7 - 0xB83E0000, // 0046 GETNGBL R15 K0 - 0x883C1F0B, // 0047 GETMBR R15 R15 K11 - 0x1C381C0F, // 0048 EQ R14 R14 R15 - 0x783A0001, // 0049 JMPF R14 #004C - 0x5838000B, // 004A LDCONST R14 K11 - 0x70020000, // 004B JMP #004D - 0x58380006, // 004C LDCONST R14 K6 - 0x7C240A00, // 004D CALL R9 5 - 0x88280510, // 004E GETMBR R10 R2 K16 - 0x20281515, // 004F NE R10 R10 K21 - 0x782A0001, // 0050 JMPF R10 #0053 - 0x58280016, // 0051 LDCONST R10 K22 - 0x70020000, // 0052 JMP #0054 - 0x58280017, // 0053 LDCONST R10 K23 - 0x7C200400, // 0054 CALL R8 2 - 0x50200200, // 0055 LDBOOL R8 1 0 - 0x80041000, // 0056 RET 1 R8 - 0x70020009, // 0057 JMP #0062 - 0xB81E2600, // 0058 GETNGBL R7 K19 - 0x60200018, // 0059 GETGBL R8 G24 - 0x58240018, // 005A LDCONST R9 K24 - 0x60280008, // 005B GETGBL R10 G8 - 0x5C2C0400, // 005C MOVE R11 R2 - 0x7C280200, // 005D CALL R10 1 - 0x5C2C0A00, // 005E MOVE R11 R5 - 0x7C200600, // 005F CALL R8 3 - 0x58240017, // 0060 LDCONST R9 K23 - 0x7C1C0400, // 0061 CALL R7 2 - 0x80000000, // 0062 RET 0 - }) - ), - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 3]) { /* upvals */ - be_local_const_upval(1, 6), - be_local_const_upval(1, 8), - be_local_const_upval(1, 12), - }), - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x68100001, // 0001 GETUPV R4 U1 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x681C0002, // 0004 GETUPV R7 U2 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C0C0A00, // 0006 CALL R3 5 - 0x80040600, // 0007 RET 1 R3 - }) - ), - &be_class_Matter_IM, - }), - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteRequestMessage), + /* K1 */ be_nested_str_weak(WriteResponseMessage), /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(suppress_response), - /* K4 */ be_nested_str_weak(device), - /* K5 */ be_nested_str_weak(get_active_endpoints), - /* K6 */ be_nested_str_weak(Path), - /* K7 */ be_nested_str_weak(msg), - /* K8 */ be_nested_str_weak(write_requests), - /* K9 */ be_nested_str_weak(WriteResponseMessage), - /* K10 */ be_nested_str_weak(write_responses), - /* K11 */ be_nested_str_weak(path), - /* K12 */ be_nested_str_weak(data), - /* K13 */ be_nested_str_weak(endpoint), - /* K14 */ be_nested_str_weak(cluster), - /* K15 */ be_nested_str_weak(attribute), - /* K16 */ be_nested_str_weak(status), - /* K17 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K18 */ be_nested_str_weak(INVALID_ACTION), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(loglevel), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(get_attribute_name), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K25 */ be_nested_str_weak(_X20_X28), - /* K26 */ be_nested_str_weak(_X29), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_nested_str_weak(process_attribute_expansion), - /* K29 */ be_nested_str_weak(stop_iteration), - /* K30 */ be_nested_str_weak(send_write_response), }), - be_str_weak(process_write_request), + be_str_weak(process_write_response), &be_const_str_solidified, - ( &(const binstruction[108]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x88100703, // 0006 GETMBR R4 R3 K3 - 0x88140104, // 0007 GETMBR R5 R0 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x7C140200, // 0009 CALL R5 1 - 0x84180000, // 000A CLOSURE R6 P0 - 0xB81E0000, // 000B GETNGBL R7 K0 - 0x8C1C0F06, // 000C GETMET R7 R7 K6 - 0x7C1C0200, // 000D CALL R7 1 - 0x901E0E01, // 000E SETMBR R7 K7 R1 - 0x88200708, // 000F GETMBR R8 R3 K8 - 0x4C240000, // 0010 LDNIL R9 - 0x20201009, // 0011 NE R8 R8 R9 - 0x78220055, // 0012 JMPF R8 #0069 - 0xB8220000, // 0013 GETNGBL R8 K0 - 0x8C201109, // 0014 GETMET R8 R8 K9 - 0x7C200200, // 0015 CALL R8 1 - 0x60240012, // 0016 GETGBL R9 G18 - 0x7C240000, // 0017 CALL R9 0 - 0x90221409, // 0018 SETMBR R8 K10 R9 - 0x60240010, // 0019 GETGBL R9 G16 - 0x88280708, // 001A GETMBR R10 R3 K8 - 0x7C240200, // 001B CALL R9 1 - 0xA8020041, // 001C EXBLK 0 #005F - 0x5C281200, // 001D MOVE R10 R9 - 0x7C280000, // 001E CALL R10 0 - 0x882C150B, // 001F GETMBR R11 R10 K11 - 0x8830150C, // 0020 GETMBR R12 R10 K12 - 0x8834170D, // 0021 GETMBR R13 R11 K13 - 0x901E1A0D, // 0022 SETMBR R7 K13 R13 - 0x8834170E, // 0023 GETMBR R13 R11 K14 - 0x901E1C0D, // 0024 SETMBR R7 K14 R13 - 0x8834170F, // 0025 GETMBR R13 R11 K15 - 0x901E1E0D, // 0026 SETMBR R7 K15 R13 - 0xB8360000, // 0027 GETNGBL R13 K0 - 0x88341B11, // 0028 GETMBR R13 R13 K17 - 0x901E200D, // 0029 SETMBR R7 K16 R13 - 0x88340F0E, // 002A GETMBR R13 R7 K14 - 0x4C380000, // 002B LDNIL R14 - 0x1C341A0E, // 002C EQ R13 R13 R14 - 0x74360003, // 002D JMPT R13 #0032 - 0x88340F0F, // 002E GETMBR R13 R7 K15 - 0x4C380000, // 002F LDNIL R14 - 0x1C341A0E, // 0030 EQ R13 R13 R14 - 0x7836000A, // 0031 JMPF R13 #003D - 0xB8360000, // 0032 GETNGBL R13 K0 - 0x88341B12, // 0033 GETMBR R13 R13 K18 - 0x901E200D, // 0034 SETMBR R7 K16 R13 - 0x5C340C00, // 0035 MOVE R13 R6 - 0x5C381000, // 0036 MOVE R14 R8 - 0x4C3C0000, // 0037 LDNIL R15 - 0x5C400E00, // 0038 MOVE R16 R7 - 0x4C440000, // 0039 LDNIL R17 - 0x50480200, // 003A LDBOOL R18 1 0 - 0x7C340A00, // 003B CALL R13 5 - 0x7001FFDF, // 003C JMP #001D - 0xB8362600, // 003D GETNGBL R13 K19 - 0x8C341B14, // 003E GETMET R13 R13 K20 - 0x583C0015, // 003F LDCONST R15 K21 - 0x7C340400, // 0040 CALL R13 2 - 0x78360015, // 0041 JMPF R13 #0058 - 0x88340F0D, // 0042 GETMBR R13 R7 K13 - 0x4C380000, // 0043 LDNIL R14 - 0x1C341A0E, // 0044 EQ R13 R13 R14 - 0x78360011, // 0045 JMPF R13 #0058 - 0xB8360000, // 0046 GETNGBL R13 K0 - 0x8C341B16, // 0047 GETMET R13 R13 K22 - 0x883C0F0E, // 0048 GETMBR R15 R7 K14 - 0x88400F0F, // 0049 GETMBR R16 R7 K15 - 0x7C340600, // 004A CALL R13 3 - 0xB83A2E00, // 004B GETNGBL R14 K23 - 0x603C0008, // 004C GETGBL R15 G8 - 0x5C400E00, // 004D MOVE R16 R7 - 0x7C3C0200, // 004E CALL R15 1 - 0x003E300F, // 004F ADD R15 K24 R15 - 0x78360002, // 0050 JMPF R13 #0054 - 0x0042320D, // 0051 ADD R16 K25 R13 - 0x0040211A, // 0052 ADD R16 R16 K26 - 0x70020000, // 0053 JMP #0055 - 0x5840001B, // 0054 LDCONST R16 K27 - 0x003C1E10, // 0055 ADD R15 R15 R16 - 0x58400015, // 0056 LDCONST R16 K21 - 0x7C380400, // 0057 CALL R14 2 - 0x88340104, // 0058 GETMBR R13 R0 K4 - 0x8C341B1C, // 0059 GETMET R13 R13 K28 - 0x5C3C0E00, // 005A MOVE R15 R7 - 0x84400001, // 005B CLOSURE R16 P1 - 0x7C340600, // 005C CALL R13 3 - 0xA0240000, // 005D CLOSE R9 - 0x7001FFBD, // 005E JMP #001D - 0x5824001D, // 005F LDCONST R9 K29 - 0xAC240200, // 0060 CATCH R9 1 0 - 0xB0080000, // 0061 RAISE 2 R0 R0 - 0x5C240800, // 0062 MOVE R9 R4 - 0x74260003, // 0063 JMPT R9 #0068 - 0x8C24011E, // 0064 GETMET R9 R0 K30 - 0x5C2C0200, // 0065 MOVE R11 R1 - 0x5C301000, // 0066 MOVE R12 R8 - 0x7C240600, // 0067 CALL R9 3 - 0xA0200000, // 0068 CLOSE R8 - 0x50200200, // 0069 LDBOOL R8 1 0 - 0xA0000000, // 006A CLOSE R0 - 0x80041000, // 006B RET 1 R8 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x80040800, // 0007 RET 1 R4 }) ) ); @@ -1605,263 +1749,10 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ /******************************************************************** -** Solidified function: path2raw +** Solidified function: send_ack_now ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_path2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(attribute), - }), - be_str_weak(path2raw), - &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x541E0036, // 0001 LDINT R7 55 - 0x58200001, // 0002 LDCONST R8 K1 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200001, // 0006 LDCONST R8 K1 - 0x7C140600, // 0007 CALL R5 3 - 0x88140502, // 0008 GETMBR R5 R2 K2 - 0x541A00FE, // 0009 LDINT R6 255 - 0x18140A06, // 000A LE R5 R5 R6 - 0x78160008, // 000B JMPF R5 #0015 - 0x8C140300, // 000C GETMET R5 R1 K0 - 0x541E2401, // 000D LDINT R7 9218 - 0x5421FFFD, // 000E LDINT R8 -2 - 0x7C140600, // 000F CALL R5 3 - 0x8C140300, // 0010 GETMET R5 R1 K0 - 0x881C0502, // 0011 GETMBR R7 R2 K2 - 0x58200001, // 0012 LDCONST R8 K1 - 0x7C140600, // 0013 CALL R5 3 - 0x70020007, // 0014 JMP #001D - 0x8C140300, // 0015 GETMET R5 R1 K0 - 0x541E2501, // 0016 LDINT R7 9474 - 0x5421FFFD, // 0017 LDINT R8 -2 - 0x7C140600, // 0018 CALL R5 3 - 0x8C140300, // 0019 GETMET R5 R1 K0 - 0x881C0502, // 001A GETMBR R7 R2 K2 - 0x58200003, // 001B LDCONST R8 K3 - 0x7C140600, // 001C CALL R5 3 - 0x88140504, // 001D GETMBR R5 R2 K4 - 0x541A00FE, // 001E LDINT R6 255 - 0x18140A06, // 001F LE R5 R5 R6 - 0x78160008, // 0020 JMPF R5 #002A - 0x8C140300, // 0021 GETMET R5 R1 K0 - 0x541E2402, // 0022 LDINT R7 9219 - 0x5421FFFD, // 0023 LDINT R8 -2 - 0x7C140600, // 0024 CALL R5 3 - 0x8C140300, // 0025 GETMET R5 R1 K0 - 0x881C0504, // 0026 GETMBR R7 R2 K4 - 0x58200001, // 0027 LDCONST R8 K1 - 0x7C140600, // 0028 CALL R5 3 - 0x70020014, // 0029 JMP #003F - 0x88140504, // 002A GETMBR R5 R2 K4 - 0x541AFFFE, // 002B LDINT R6 65535 - 0x18140A06, // 002C LE R5 R5 R6 - 0x78160008, // 002D JMPF R5 #0037 - 0x8C140300, // 002E GETMET R5 R1 K0 - 0x541E2502, // 002F LDINT R7 9475 - 0x5421FFFD, // 0030 LDINT R8 -2 - 0x7C140600, // 0031 CALL R5 3 - 0x8C140300, // 0032 GETMET R5 R1 K0 - 0x881C0504, // 0033 GETMBR R7 R2 K4 - 0x58200003, // 0034 LDCONST R8 K3 - 0x7C140600, // 0035 CALL R5 3 - 0x70020007, // 0036 JMP #003F - 0x8C140300, // 0037 GETMET R5 R1 K0 - 0x541E2602, // 0038 LDINT R7 9731 - 0x5421FFFD, // 0039 LDINT R8 -2 - 0x7C140600, // 003A CALL R5 3 - 0x8C140300, // 003B GETMET R5 R1 K0 - 0x881C0504, // 003C GETMBR R7 R2 K4 - 0x54220003, // 003D LDINT R8 4 - 0x7C140600, // 003E CALL R5 3 - 0x88140505, // 003F GETMBR R5 R2 K5 - 0x541A00FE, // 0040 LDINT R6 255 - 0x18140A06, // 0041 LE R5 R5 R6 - 0x78160008, // 0042 JMPF R5 #004C - 0x8C140300, // 0043 GETMET R5 R1 K0 - 0x541E2403, // 0044 LDINT R7 9220 - 0x5421FFFD, // 0045 LDINT R8 -2 - 0x7C140600, // 0046 CALL R5 3 - 0x8C140300, // 0047 GETMET R5 R1 K0 - 0x881C0505, // 0048 GETMBR R7 R2 K5 - 0x58200001, // 0049 LDCONST R8 K1 - 0x7C140600, // 004A CALL R5 3 - 0x70020014, // 004B JMP #0061 - 0x88140505, // 004C GETMBR R5 R2 K5 - 0x541AFFFE, // 004D LDINT R6 65535 - 0x18140A06, // 004E LE R5 R5 R6 - 0x78160008, // 004F JMPF R5 #0059 - 0x8C140300, // 0050 GETMET R5 R1 K0 - 0x541E2503, // 0051 LDINT R7 9476 - 0x5421FFFD, // 0052 LDINT R8 -2 - 0x7C140600, // 0053 CALL R5 3 - 0x8C140300, // 0054 GETMET R5 R1 K0 - 0x881C0505, // 0055 GETMBR R7 R2 K5 - 0x58200003, // 0056 LDCONST R8 K3 - 0x7C140600, // 0057 CALL R5 3 - 0x70020007, // 0058 JMP #0061 - 0x8C140300, // 0059 GETMET R5 R1 K0 - 0x541E2603, // 005A LDINT R7 9732 - 0x5421FFFD, // 005B LDINT R8 -2 - 0x7C140600, // 005C CALL R5 3 - 0x8C140300, // 005D GETMET R5 R1 K0 - 0x881C0505, // 005E GETMBR R7 R2 K5 - 0x54220003, // 005F LDINT R8 4 - 0x7C140600, // 0060 CALL R5 3 - 0x78120003, // 0061 JMPF R4 #0066 - 0x8C140300, // 0062 GETMET R5 R1 K0 - 0x541E3404, // 0063 LDINT R7 13317 - 0x5421FFFD, // 0064 LDINT R8 -2 - 0x7C140600, // 0065 CALL R5 3 - 0x8C140300, // 0066 GETMET R5 R1 K0 - 0x541E0017, // 0067 LDINT R7 24 - 0x58200001, // 0068 LDCONST R8 K1 - 0x7C140600, // 0069 CALL R5 3 - 0x80000000, // 006A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_subscribe_update -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReadRequestMessage), - /* K3 */ be_nested_str_weak(fabric_filtered), - /* K4 */ be_nested_str_weak(attributes_requests), - /* K5 */ be_nested_str_weak(updates), - /* K6 */ be_nested_str_weak(AttributePathIB), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K14 */ be_nested_str_weak(local_session_id), - /* K15 */ be_nested_str_weak(subscription_id), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(is_keep_alive), - /* K18 */ be_nested_str_weak(_inner_process_read_request), - /* K19 */ be_nested_str_weak(suppress_response), - /* K20 */ be_nested_str_weak(IM_ReportDataSubscribed), - /* K21 */ be_nested_str_weak(_message_handler), - /* K22 */ be_nested_str_weak(send_queue), - /* K23 */ be_nested_str_weak(send_enqueued), - }), - be_str_weak(send_subscribe_update), - &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x50100000, // 0004 LDBOOL R4 0 0 - 0x900E0604, // 0005 SETMBR R3 K3 R4 - 0x60100012, // 0006 GETGBL R4 G18 - 0x7C100000, // 0007 CALL R4 0 - 0x900E0804, // 0008 SETMBR R3 K4 R4 - 0x60100010, // 0009 GETGBL R4 G16 - 0x88140305, // 000A GETMBR R5 R1 K5 - 0x7C100200, // 000B CALL R4 1 - 0xA802000F, // 000C EXBLK 0 #001D - 0x5C140800, // 000D MOVE R5 R4 - 0x7C140000, // 000E CALL R5 0 - 0xB81A0200, // 000F GETNGBL R6 K1 - 0x8C180D06, // 0010 GETMET R6 R6 K6 - 0x7C180200, // 0011 CALL R6 1 - 0x881C0B07, // 0012 GETMBR R7 R5 K7 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0x881C0B08, // 0014 GETMBR R7 R5 K8 - 0x901A1007, // 0015 SETMBR R6 K8 R7 - 0x881C0B09, // 0016 GETMBR R7 R5 K9 - 0x901A1207, // 0017 SETMBR R6 K9 R7 - 0x881C0704, // 0018 GETMBR R7 R3 K4 - 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 - 0x5C240C00, // 001A MOVE R9 R6 - 0x7C1C0400, // 001B CALL R7 2 - 0x7001FFEF, // 001C JMP #000D - 0x5810000B, // 001D LDCONST R4 K11 - 0xAC100200, // 001E CATCH R4 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0xB8121800, // 0020 GETNGBL R4 K12 - 0x60140018, // 0021 GETGBL R5 G24 - 0x5818000D, // 0022 LDCONST R6 K13 - 0x881C050E, // 0023 GETMBR R7 R2 K14 - 0x8820030F, // 0024 GETMBR R8 R1 K15 - 0x7C140600, // 0025 CALL R5 3 - 0x58180010, // 0026 LDCONST R6 K16 - 0x7C100400, // 0027 CALL R4 2 - 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90062204, // 0029 SETMBR R1 K17 R4 - 0x8C100112, // 002A GETMET R4 R0 K18 - 0x5C180400, // 002B MOVE R6 R2 - 0x5C1C0600, // 002C MOVE R7 R3 - 0x4C200000, // 002D LDNIL R8 - 0x7C100800, // 002E CALL R4 4 - 0x50140000, // 002F LDBOOL R5 0 0 - 0x90122605, // 0030 SETMBR R4 K19 R5 - 0x8814030F, // 0031 GETMBR R5 R1 K15 - 0x90121E05, // 0032 SETMBR R4 K15 R5 - 0xB8160200, // 0033 GETNGBL R5 K1 - 0x8C140B14, // 0034 GETMET R5 R5 K20 - 0x881C0515, // 0035 GETMBR R7 R2 K21 - 0x5C200400, // 0036 MOVE R8 R2 - 0x5C240800, // 0037 MOVE R9 R4 - 0x5C280200, // 0038 MOVE R10 R1 - 0x7C140A00, // 0039 CALL R5 5 - 0x88180116, // 003A GETMBR R6 R0 K22 - 0x8C180D0A, // 003B GETMET R6 R6 K10 - 0x5C200A00, // 003C MOVE R8 R5 - 0x7C180400, // 003D CALL R6 2 - 0x8C180117, // 003E GETMET R6 R0 K23 - 0x88200515, // 003F GETMBR R8 R2 K21 - 0x7C180400, // 0040 CALL R6 2 - 0x80000000, // 0041 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_sendqueue_by_exchangeid -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ +be_local_closure(class_Matter_IM_send_ack_now, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -1871,40 +1762,25 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(_message_handler), + /* K2 */ be_nested_str_weak(send_encrypted_ack), }), - be_str_weak(remove_sendqueue_by_exchangeid), + be_str_weak(send_ack_now), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ + ( &(const binstruction[11]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x58080000, // 0004 LDCONST R2 K0 - 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0x140C0403, // 0008 LT R3 R2 R3 - 0x780E000C, // 0009 JMPF R3 #0017 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0702, // 000C GETMET R3 R3 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x1C0C0601, // 000E EQ R3 R3 R1 - 0x780E0004, // 000F JMPF R3 #0015 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x8C0C0703, // 0011 GETMET R3 R3 K3 - 0x5C140400, // 0012 MOVE R5 R2 - 0x7C0C0400, // 0013 CALL R3 2 - 0x70020000, // 0014 JMP #0016 - 0x00080504, // 0015 ADD R2 R2 K4 - 0x7001FFED, // 0016 JMP #0005 - 0x80000000, // 0017 RET 0 + 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x88080501, // 0005 GETMBR R2 R2 K1 + 0x8C080502, // 0006 GETMET R2 R2 K2 + 0x5C100200, // 0007 MOVE R4 R1 + 0x50140000, // 0008 LDBOOL R5 0 0 + 0x7C080600, // 0009 CALL R2 3 + 0x80000000, // 000A RET 0 }) ) ); @@ -1912,10 +1788,317 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ /******************************************************************** -** Solidified function: process_incoming +** Solidified function: process_read_or_subscribe_request_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_incoming, /* name */ +be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(attributes_requests), + /* K1 */ be_nested_str_weak(get_node_id), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(device), + /* K6 */ be_nested_str_weak(start), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(fabric_filtered), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(loglevel), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(Path), + /* K16 */ be_nested_str_weak(get_attribute_name), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K19 */ be_nested_str_weak(session), + /* K20 */ be_nested_str_weak(local_session_id), + /* K21 */ be_nested_str_weak(_X20_X28), + /* K22 */ be_nested_str_weak(_X29), + /* K23 */ be_nested_str_weak(), + /* K24 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_read_or_subscribe_request_pull), + &be_const_str_solidified, + ( &(const binstruction[121]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x200C0604, // 0002 NE R3 R3 R4 + 0x780E0072, // 0003 JMPF R3 #0077 + 0x4C0C0000, // 0004 LDNIL R3 + 0x4C100000, // 0005 LDNIL R4 + 0x20100404, // 0006 NE R4 R2 R4 + 0x78120002, // 0007 JMPF R4 #000B + 0x8C100501, // 0008 GETMET R4 R2 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x70020000, // 000A JMP #000C + 0x4C100000, // 000B LDNIL R4 + 0x6014000C, // 000C GETGBL R5 G12 + 0x88180300, // 000D GETMBR R6 R1 K0 + 0x7C140200, // 000E CALL R5 1 + 0x24140B02, // 000F GT R5 R5 K2 + 0x78160002, // 0010 JMPF R5 #0014 + 0x60140012, // 0011 GETGBL R5 G18 + 0x7C140000, // 0012 CALL R5 0 + 0x5C0C0A00, // 0013 MOVE R3 R5 + 0x60140010, // 0014 GETGBL R5 G16 + 0x88180300, // 0015 GETMBR R6 R1 K0 + 0x7C140200, // 0016 CALL R5 1 + 0xA802005A, // 0017 EXBLK 0 #0073 + 0x5C180A00, // 0018 MOVE R6 R5 + 0x7C180000, // 0019 CALL R6 0 + 0xB81E0600, // 001A GETNGBL R7 K3 + 0x8C1C0F04, // 001B GETMET R7 R7 K4 + 0x88240105, // 001C GETMBR R9 R0 K5 + 0x7C1C0400, // 001D CALL R7 2 + 0x8C200F06, // 001E GETMET R8 R7 K6 + 0x88280D07, // 001F GETMBR R10 R6 K7 + 0x882C0D08, // 0020 GETMBR R11 R6 K8 + 0x88300D09, // 0021 GETMBR R12 R6 K9 + 0x8834030A, // 0022 GETMBR R13 R1 K10 + 0x7C200A00, // 0023 CALL R8 5 + 0x6020000C, // 0024 GETGBL R8 G12 + 0x88240300, // 0025 GETMBR R9 R1 K0 + 0x7C200200, // 0026 CALL R8 1 + 0x24201102, // 0027 GT R8 R8 K2 + 0x78220003, // 0028 JMPF R8 #002D + 0x8C20070B, // 0029 GETMET R8 R3 K11 + 0x5C280E00, // 002A MOVE R10 R7 + 0x7C200400, // 002B CALL R8 2 + 0x70020000, // 002C JMP #002E + 0x5C0C0E00, // 002D MOVE R3 R7 + 0xB8221800, // 002E GETNGBL R8 K12 + 0x8C20110D, // 002F GETMET R8 R8 K13 + 0x5828000E, // 0030 LDCONST R10 K14 + 0x7C200400, // 0031 CALL R8 2 + 0x7822003E, // 0032 JMPF R8 #0072 + 0x88200D07, // 0033 GETMBR R8 R6 K7 + 0x4C240000, // 0034 LDNIL R9 + 0x1C201009, // 0035 EQ R8 R8 R9 + 0x74220007, // 0036 JMPT R8 #003F + 0x88200D08, // 0037 GETMBR R8 R6 K8 + 0x4C240000, // 0038 LDNIL R9 + 0x1C201009, // 0039 EQ R8 R8 R9 + 0x74220003, // 003A JMPT R8 #003F + 0x88200D09, // 003B GETMBR R8 R6 K9 + 0x4C240000, // 003C LDNIL R9 + 0x1C201009, // 003D EQ R8 R8 R9 + 0x78220032, // 003E JMPF R8 #0072 + 0xB8220600, // 003F GETNGBL R8 K3 + 0x8C20110F, // 0040 GETMET R8 R8 K15 + 0x7C200200, // 0041 CALL R8 1 + 0x88240D07, // 0042 GETMBR R9 R6 K7 + 0x90220E09, // 0043 SETMBR R8 K7 R9 + 0x88240D08, // 0044 GETMBR R9 R6 K8 + 0x90221009, // 0045 SETMBR R8 K8 R9 + 0x88240D09, // 0046 GETMBR R9 R6 K9 + 0x90221209, // 0047 SETMBR R8 K9 R9 + 0x8824030A, // 0048 GETMBR R9 R1 K10 + 0x90221409, // 0049 SETMBR R8 K10 R9 + 0x60240008, // 004A GETGBL R9 G8 + 0x5C281000, // 004B MOVE R10 R8 + 0x7C240200, // 004C CALL R9 1 + 0x88280D08, // 004D GETMBR R10 R6 K8 + 0x4C2C0000, // 004E LDNIL R11 + 0x2028140B, // 004F NE R10 R10 R11 + 0x782A0017, // 0050 JMPF R10 #0069 + 0x88280D09, // 0051 GETMBR R10 R6 K9 + 0x4C2C0000, // 0052 LDNIL R11 + 0x2028140B, // 0053 NE R10 R10 R11 + 0x782A0013, // 0054 JMPF R10 #0069 + 0xB82A0600, // 0055 GETNGBL R10 K3 + 0x8C281510, // 0056 GETMET R10 R10 K16 + 0x88300D08, // 0057 GETMBR R12 R6 K8 + 0x88340D09, // 0058 GETMBR R13 R6 K9 + 0x7C280600, // 0059 CALL R10 3 + 0xB82E2200, // 005A GETNGBL R11 K17 + 0x60300018, // 005B GETGBL R12 G24 + 0x58340012, // 005C LDCONST R13 K18 + 0x88380513, // 005D GETMBR R14 R2 K19 + 0x88381D14, // 005E GETMBR R14 R14 K20 + 0x782A0002, // 005F JMPF R10 #0063 + 0x003E2A0A, // 0060 ADD R15 K21 R10 + 0x003C1F16, // 0061 ADD R15 R15 K22 + 0x70020000, // 0062 JMP #0064 + 0x583C0017, // 0063 LDCONST R15 K23 + 0x003C120F, // 0064 ADD R15 R9 R15 + 0x7C300600, // 0065 CALL R12 3 + 0x5834000E, // 0066 LDCONST R13 K14 + 0x7C2C0400, // 0067 CALL R11 2 + 0x70020008, // 0068 JMP #0072 + 0xB82A2200, // 0069 GETNGBL R10 K17 + 0x602C0018, // 006A GETGBL R11 G24 + 0x58300012, // 006B LDCONST R12 K18 + 0x88340513, // 006C GETMBR R13 R2 K19 + 0x88341B14, // 006D GETMBR R13 R13 K20 + 0x5C381200, // 006E MOVE R14 R9 + 0x7C2C0600, // 006F CALL R11 3 + 0x5830000E, // 0070 LDCONST R12 K14 + 0x7C280400, // 0071 CALL R10 2 + 0x7001FFA4, // 0072 JMP #0018 + 0x58140018, // 0073 LDCONST R5 K24 + 0xAC140200, // 0074 CATCH R5 1 0 + 0xB0080000, // 0075 RAISE 2 R0 R0 + 0x80040600, // 0076 RET 1 R3 + 0x4C0C0000, // 0077 LDNIL R3 + 0x80040600, // 0078 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write_single_attribute_status_to_bytes +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* name */ + be_nested_proto( + 16, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(get_attribute_name), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(_X20_X28), + /* K6 */ be_nested_str_weak(_X29), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_nested_str_weak(status), + /* K9 */ be_nested_str_weak(AttributeStatusIB), + /* K10 */ be_nested_str_weak(path), + /* K11 */ be_nested_str_weak(AttributePathIB), + /* K12 */ be_nested_str_weak(StatusIB), + /* K13 */ be_nested_str_weak(endpoint), + /* K14 */ be_nested_str_weak(write_responses), + /* K15 */ be_nested_str_weak(push), + /* K16 */ be_nested_str_weak(log), + /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K18 */ be_nested_str_weak(SUCCESS), + /* K19 */ be_const_int(0), + /* K20 */ be_const_int(2), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(tasmota), + /* K23 */ be_nested_str_weak(loglevel), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), + }), + be_str_weak(write_single_attribute_status_to_bytes), + &be_const_str_solidified, + ( &(const binstruction[86]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0xB8160000, // 0002 GETNGBL R5 K0 + 0x8C140B02, // 0003 GETMET R5 R5 K2 + 0x881C0503, // 0004 GETMBR R7 R2 K3 + 0x88200504, // 0005 GETMBR R8 R2 K4 + 0x7C140600, // 0006 CALL R5 3 + 0x78160002, // 0007 JMPF R5 #000B + 0x001A0A05, // 0008 ADD R6 K5 R5 + 0x00180D06, // 0009 ADD R6 R6 K6 + 0x70020000, // 000A JMP #000C + 0x58180007, // 000B LDCONST R6 K7 + 0x5C140C00, // 000C MOVE R5 R6 + 0x88180508, // 000D GETMBR R6 R2 K8 + 0x4C1C0000, // 000E LDNIL R7 + 0x20180C07, // 000F NE R6 R6 R7 + 0x781A0034, // 0010 JMPF R6 #0046 + 0xB81A0000, // 0011 GETNGBL R6 K0 + 0x8C180D09, // 0012 GETMET R6 R6 K9 + 0x7C180200, // 0013 CALL R6 1 + 0xB81E0000, // 0014 GETNGBL R7 K0 + 0x8C1C0F0B, // 0015 GETMET R7 R7 K11 + 0x7C1C0200, // 0016 CALL R7 1 + 0x901A1407, // 0017 SETMBR R6 K10 R7 + 0xB81E0000, // 0018 GETNGBL R7 K0 + 0x8C1C0F0C, // 0019 GETMET R7 R7 K12 + 0x7C1C0200, // 001A CALL R7 1 + 0x901A1007, // 001B SETMBR R6 K8 R7 + 0x881C0D0A, // 001C GETMBR R7 R6 K10 + 0x8820050D, // 001D GETMBR R8 R2 K13 + 0x901E1A08, // 001E SETMBR R7 K13 R8 + 0x881C0D0A, // 001F GETMBR R7 R6 K10 + 0x88200503, // 0020 GETMBR R8 R2 K3 + 0x901E0608, // 0021 SETMBR R7 K3 R8 + 0x881C0D0A, // 0022 GETMBR R7 R6 K10 + 0x88200504, // 0023 GETMBR R8 R2 K4 + 0x901E0808, // 0024 SETMBR R7 K4 R8 + 0x881C0D08, // 0025 GETMBR R7 R6 K8 + 0x88200508, // 0026 GETMBR R8 R2 K8 + 0x901E1008, // 0027 SETMBR R7 K8 R8 + 0x881C030E, // 0028 GETMBR R7 R1 K14 + 0x8C1C0F0F, // 0029 GETMET R7 R7 K15 + 0x5C240C00, // 002A MOVE R9 R6 + 0x7C1C0400, // 002B CALL R7 2 + 0xB81E2000, // 002C GETNGBL R7 K16 + 0x60200018, // 002D GETGBL R8 G24 + 0x58240011, // 002E LDCONST R9 K17 + 0x60280008, // 002F GETGBL R10 G8 + 0x5C2C0400, // 0030 MOVE R11 R2 + 0x7C280200, // 0031 CALL R10 1 + 0x5C2C0A00, // 0032 MOVE R11 R5 + 0x5C300600, // 0033 MOVE R12 R3 + 0x88340508, // 0034 GETMBR R13 R2 K8 + 0x88380508, // 0035 GETMBR R14 R2 K8 + 0xB83E0000, // 0036 GETNGBL R15 K0 + 0x883C1F12, // 0037 GETMBR R15 R15 K18 + 0x1C381C0F, // 0038 EQ R14 R14 R15 + 0x783A0001, // 0039 JMPF R14 #003C + 0x58380012, // 003A LDCONST R14 K18 + 0x70020000, // 003B JMP #003D + 0x58380007, // 003C LDCONST R14 K7 + 0x7C200C00, // 003D CALL R8 6 + 0x8824050D, // 003E GETMBR R9 R2 K13 + 0x20241313, // 003F NE R9 R9 K19 + 0x78260001, // 0040 JMPF R9 #0043 + 0x58240014, // 0041 LDCONST R9 K20 + 0x70020000, // 0042 JMP #0044 + 0x58240015, // 0043 LDCONST R9 K21 + 0x7C1C0400, // 0044 CALL R7 2 + 0x7002000E, // 0045 JMP #0055 + 0xB81A2C00, // 0046 GETNGBL R6 K22 + 0x8C180D17, // 0047 GETMET R6 R6 K23 + 0x58200015, // 0048 LDCONST R8 K21 + 0x7C180400, // 0049 CALL R6 2 + 0x781A0009, // 004A JMPF R6 #0055 + 0xB81A2000, // 004B GETNGBL R6 K16 + 0x601C0018, // 004C GETGBL R7 G24 + 0x58200018, // 004D LDCONST R8 K24 + 0x60240008, // 004E GETGBL R9 G8 + 0x5C280400, // 004F MOVE R10 R2 + 0x7C240200, // 0050 CALL R9 1 + 0x5C280A00, // 0051 MOVE R10 R5 + 0x7C1C0600, // 0052 CALL R7 3 + 0x58200015, // 0053 LDCONST R8 K21 + 0x7C180400, // 0054 CALL R6 2 + 0x80000000, // 0055 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_subscribe_heartbeat +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ @@ -1925,169 +2108,49 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(opcode), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str_weak(read_request_solo), - /* K3 */ be_nested_str_weak(from_raw), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_nested_str_weak(process_read_request_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(process_invoke_request_solo), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(parse), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(process_status_response), - /* K14 */ be_nested_str_weak(process_read_request), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(send_ack_now), - /* K17 */ be_nested_str_weak(subscribe_request), - /* K18 */ be_nested_str_weak(subscribe_response), - /* K19 */ be_nested_str_weak(report_data), - /* K20 */ be_nested_str_weak(process_write_request), - /* K21 */ be_nested_str_weak(process_write_response), - /* K22 */ be_nested_str_weak(process_invoke_request), - /* K23 */ be_nested_str_weak(process_invoke_response), - /* K24 */ be_nested_str_weak(process_timed_request), + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), + /* K3 */ be_nested_str_weak(local_session_id), + /* K4 */ be_nested_str_weak(subscription_id), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(is_keep_alive), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K9 */ be_nested_str_weak(_message_handler), + /* K10 */ be_nested_str_weak(send_queue), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(send_enqueued), }), - be_str_weak(process_incoming), + be_str_weak(send_subscribe_heartbeat), &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ + ( &(const binstruction[25]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x1C0C0501, // 0001 EQ R3 R2 K1 - 0x780E000D, // 0002 JMPF R3 #0011 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x8C0C0703, // 0004 GETMET R3 R3 K3 - 0x88140304, // 0005 GETMBR R5 R1 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x7C0C0600, // 0007 CALL R3 3 - 0x4C100000, // 0008 LDNIL R4 - 0x20100604, // 0009 NE R4 R3 R4 - 0x78120004, // 000A JMPF R4 #0010 - 0x8C100106, // 000B GETMET R4 R0 K6 - 0x5C180200, // 000C MOVE R6 R1 - 0x5C1C0600, // 000D MOVE R7 R3 - 0x7C100600, // 000E CALL R4 3 - 0x80040800, // 000F RET 1 R4 - 0x7002000F, // 0010 JMP #0021 - 0x540E0007, // 0011 LDINT R3 8 - 0x1C0C0403, // 0012 EQ R3 R2 R3 - 0x780E000C, // 0013 JMPF R3 #0021 - 0x880C0107, // 0014 GETMBR R3 R0 K7 - 0x8C0C0703, // 0015 GETMET R3 R3 K3 - 0x88140304, // 0016 GETMBR R5 R1 K4 - 0x88180305, // 0017 GETMBR R6 R1 K5 - 0x7C0C0600, // 0018 CALL R3 3 - 0x4C100000, // 0019 LDNIL R4 - 0x20100604, // 001A NE R4 R3 R4 - 0x78120004, // 001B JMPF R4 #0021 - 0x8C100108, // 001C GETMET R4 R0 K8 - 0x5C180200, // 001D MOVE R6 R1 - 0x5C1C0600, // 001E MOVE R7 R3 - 0x7C100600, // 001F CALL R4 3 - 0x80040800, // 0020 RET 1 R4 - 0xB80E1200, // 0021 GETNGBL R3 K9 - 0x880C070A, // 0022 GETMBR R3 R3 K10 - 0x8C0C070B, // 0023 GETMET R3 R3 K11 - 0x88140304, // 0024 GETMBR R5 R1 K4 - 0x88180305, // 0025 GETMBR R6 R1 K5 - 0x7C0C0600, // 0026 CALL R3 3 - 0x1C10050C, // 0027 EQ R4 R2 K12 - 0x78120005, // 0028 JMPF R4 #002F - 0x8C10010D, // 0029 GETMET R4 R0 K13 - 0x5C180200, // 002A MOVE R6 R1 - 0x5C1C0600, // 002B MOVE R7 R3 - 0x7C100600, // 002C CALL R4 3 - 0x80040800, // 002D RET 1 R4 - 0x70020053, // 002E JMP #0083 - 0x1C100501, // 002F EQ R4 R2 K1 - 0x78120005, // 0030 JMPF R4 #0037 - 0x8C10010E, // 0031 GETMET R4 R0 K14 - 0x5C180200, // 0032 MOVE R6 R1 - 0x5C1C0600, // 0033 MOVE R7 R3 - 0x7C100600, // 0034 CALL R4 3 - 0x80040800, // 0035 RET 1 R4 - 0x7002004B, // 0036 JMP #0083 - 0x1C10050F, // 0037 EQ R4 R2 K15 - 0x78120008, // 0038 JMPF R4 #0042 - 0x8C100110, // 0039 GETMET R4 R0 K16 - 0x5C180200, // 003A MOVE R6 R1 - 0x7C100400, // 003B CALL R4 2 - 0x8C100111, // 003C GETMET R4 R0 K17 - 0x5C180200, // 003D MOVE R6 R1 - 0x5C1C0600, // 003E MOVE R7 R3 - 0x7C100600, // 003F CALL R4 3 - 0x80040800, // 0040 RET 1 R4 - 0x70020040, // 0041 JMP #0083 - 0x54120003, // 0042 LDINT R4 4 - 0x1C100404, // 0043 EQ R4 R2 R4 - 0x78120005, // 0044 JMPF R4 #004B - 0x8C100112, // 0045 GETMET R4 R0 K18 - 0x5C180200, // 0046 MOVE R6 R1 - 0x5C1C0600, // 0047 MOVE R7 R3 - 0x7C100600, // 0048 CALL R4 3 - 0x80040800, // 0049 RET 1 R4 - 0x70020037, // 004A JMP #0083 - 0x54120004, // 004B LDINT R4 5 - 0x1C100404, // 004C EQ R4 R2 R4 - 0x78120005, // 004D JMPF R4 #0054 - 0x8C100113, // 004E GETMET R4 R0 K19 - 0x5C180200, // 004F MOVE R6 R1 - 0x5C1C0600, // 0050 MOVE R7 R3 - 0x7C100600, // 0051 CALL R4 3 - 0x80040800, // 0052 RET 1 R4 - 0x7002002E, // 0053 JMP #0083 - 0x54120005, // 0054 LDINT R4 6 - 0x1C100404, // 0055 EQ R4 R2 R4 - 0x78120008, // 0056 JMPF R4 #0060 - 0x8C100110, // 0057 GETMET R4 R0 K16 - 0x5C180200, // 0058 MOVE R6 R1 - 0x7C100400, // 0059 CALL R4 2 - 0x8C100114, // 005A GETMET R4 R0 K20 - 0x5C180200, // 005B MOVE R6 R1 - 0x5C1C0600, // 005C MOVE R7 R3 - 0x7C100600, // 005D CALL R4 3 - 0x80040800, // 005E RET 1 R4 - 0x70020022, // 005F JMP #0083 - 0x54120006, // 0060 LDINT R4 7 - 0x1C100404, // 0061 EQ R4 R2 R4 - 0x78120005, // 0062 JMPF R4 #0069 - 0x8C100115, // 0063 GETMET R4 R0 K21 - 0x5C180200, // 0064 MOVE R6 R1 - 0x5C1C0600, // 0065 MOVE R7 R3 - 0x7C100600, // 0066 CALL R4 3 - 0x80040800, // 0067 RET 1 R4 - 0x70020019, // 0068 JMP #0083 - 0x54120007, // 0069 LDINT R4 8 - 0x1C100404, // 006A EQ R4 R2 R4 - 0x78120005, // 006B JMPF R4 #0072 - 0x8C100116, // 006C GETMET R4 R0 K22 - 0x5C180200, // 006D MOVE R6 R1 - 0x5C1C0600, // 006E MOVE R7 R3 - 0x7C100600, // 006F CALL R4 3 - 0x80040800, // 0070 RET 1 R4 - 0x70020010, // 0071 JMP #0083 - 0x54120008, // 0072 LDINT R4 9 - 0x1C100404, // 0073 EQ R4 R2 R4 - 0x78120005, // 0074 JMPF R4 #007B - 0x8C100117, // 0075 GETMET R4 R0 K23 - 0x5C180200, // 0076 MOVE R6 R1 - 0x5C1C0600, // 0077 MOVE R7 R3 - 0x7C100600, // 0078 CALL R4 3 - 0x80040800, // 0079 RET 1 R4 - 0x70020007, // 007A JMP #0083 - 0x54120009, // 007B LDINT R4 10 - 0x1C100404, // 007C EQ R4 R2 R4 - 0x78120004, // 007D JMPF R4 #0083 - 0x8C100118, // 007E GETMET R4 R0 K24 - 0x5C180200, // 007F MOVE R6 R1 - 0x5C1C0600, // 0080 MOVE R7 R3 - 0x7C100600, // 0081 CALL R4 3 - 0x80040800, // 0082 RET 1 R4 - 0x50100000, // 0083 LDBOOL R4 0 0 - 0x80040800, // 0084 RET 1 R4 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140002, // 0003 LDCONST R5 K2 + 0x88180503, // 0004 GETMBR R6 R2 K3 + 0x881C0304, // 0005 GETMBR R7 R1 K4 + 0x7C100600, // 0006 CALL R4 3 + 0x58140005, // 0007 LDCONST R5 K5 + 0x7C0C0400, // 0008 CALL R3 2 + 0x500C0200, // 0009 LDBOOL R3 1 0 + 0x90060C03, // 000A SETMBR R1 K6 R3 + 0xB80E0E00, // 000B GETNGBL R3 K7 + 0x8C0C0708, // 000C GETMET R3 R3 K8 + 0x88140509, // 000D GETMBR R5 R2 K9 + 0x5C180400, // 000E MOVE R6 R2 + 0x5C1C0200, // 000F MOVE R7 R1 + 0x7C0C0800, // 0010 CALL R3 4 + 0x8810010A, // 0011 GETMBR R4 R0 K10 + 0x8C10090B, // 0012 GETMET R4 R4 K11 + 0x5C180600, // 0013 MOVE R6 R3 + 0x7C100400, // 0014 CALL R4 2 + 0x8C10010C, // 0015 GETMET R4 R0 K12 + 0x88180509, // 0016 GETMBR R6 R2 K9 + 0x7C100400, // 0017 CALL R4 2 + 0x80000000, // 0018 RET 0 }) ) ); @@ -2095,728 +2158,54 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ /******************************************************************** -** Solidified function: process_invoke_response +** Solidified function: attributedata2raw ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_invoke_response, /* name */ +be_local_closure(class_Matter_IM_attributedata2raw, /* name */ be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(InvokeResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), - }), - be_str_weak(process_invoke_response), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_second, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expire_sendqueue), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_status -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_status, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_Status), - }), - be_str_weak(send_status), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _inner_process_read_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM__inner_process_read_request, /* name */ - be_nested_proto( - 23, /* nstack */ + 11, /* nstack */ 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 20, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 3]) { /* upvals */ - be_local_const_upval(1, 1), - be_local_const_upval(1, 0), - be_local_const_upval(1, 4), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(get_attribute_name), - /* K6 */ be_nested_str_weak(cluster), - /* K7 */ be_nested_str_weak(attribute), - /* K8 */ be_nested_str_weak(_X20_X28), - /* K9 */ be_nested_str_weak(_X29), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(status), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(tlv_solo), - /* K14 */ be_nested_str_weak(to_str_val), - /* K15 */ be_nested_str_weak(is_list), - /* K16 */ be_nested_str_weak(is_array), - /* K17 */ be_nested_str_weak(encode_len), - /* K18 */ be_nested_str_weak(IM_ReportData), - /* K19 */ be_nested_str_weak(MAX_MESSAGE), - /* K20 */ be_nested_str_weak(Matter_TLV_array), - /* K21 */ be_nested_str_weak(attributedata2raw), - /* K22 */ be_nested_str_weak(push), - /* K23 */ be_nested_str_weak(val), - /* K24 */ be_nested_str_weak(stop_iteration), - /* K25 */ be_nested_str_weak(log), - /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K27 */ be_nested_str_weak(local_session_id), - /* K28 */ be_nested_str_weak(attributestatus2raw), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), - /* K32 */ be_const_int(0), - /* K33 */ be_nested_str_weak(attribute_reports), - /* K34 */ be_const_int(1), - }), - be_str_weak(read_single_attribute), - &be_const_str_solidified, - ( &(const binstruction[252]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x4C140000, // 0002 LDNIL R5 - 0xB81A0400, // 0003 GETNGBL R6 K2 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x58200004, // 0005 LDCONST R8 K4 - 0x7C180400, // 0006 CALL R6 2 - 0x781A000B, // 0007 JMPF R6 #0014 - 0xB81A0000, // 0008 GETNGBL R6 K0 - 0x8C180D05, // 0009 GETMET R6 R6 K5 - 0x88200506, // 000A GETMBR R8 R2 K6 - 0x88240507, // 000B GETMBR R9 R2 K7 - 0x7C180600, // 000C CALL R6 3 - 0x5C140C00, // 000D MOVE R5 R6 - 0x78160002, // 000E JMPF R5 #0012 - 0x001A1005, // 000F ADD R6 K8 R5 - 0x00180D09, // 0010 ADD R6 R6 K9 - 0x70020000, // 0011 JMP #0013 - 0x5818000A, // 0012 LDCONST R6 K10 - 0x5C140C00, // 0013 MOVE R5 R6 - 0x4C180000, // 0014 LDNIL R6 - 0x900A1606, // 0015 SETMBR R2 K11 R6 - 0x4C180000, // 0016 LDNIL R6 - 0x20180206, // 0017 NE R6 R1 R6 - 0x781A0006, // 0018 JMPF R6 #0020 - 0x8C18030C, // 0019 GETMET R6 R1 K12 - 0x68200000, // 001A GETUPV R8 U0 - 0x5C240400, // 001B MOVE R9 R2 - 0x68280001, // 001C GETUPV R10 U1 - 0x8828150D, // 001D GETMBR R10 R10 K13 - 0x7C180800, // 001E CALL R6 4 - 0x70020000, // 001F JMP #0021 - 0x4C180000, // 0020 LDNIL R6 - 0x501C0200, // 0021 LDBOOL R7 1 0 - 0x4C200000, // 0022 LDNIL R8 - 0x4C240000, // 0023 LDNIL R9 - 0x20240C09, // 0024 NE R9 R6 R9 - 0x78260058, // 0025 JMPF R9 #007F - 0x5824000A, // 0026 LDCONST R9 K10 - 0x68280002, // 0027 GETUPV R10 U2 - 0x742A0002, // 0028 JMPT R10 #002C - 0x8C280D0E, // 0029 GETMET R10 R6 K14 - 0x7C280200, // 002A CALL R10 1 - 0x5C241400, // 002B MOVE R9 R10 - 0x88280D0F, // 002C GETMBR R10 R6 K15 - 0x742A0001, // 002D JMPT R10 #0030 - 0x88280D10, // 002E GETMBR R10 R6 K16 - 0x782A0031, // 002F JMPF R10 #0062 - 0x8C280D11, // 0030 GETMET R10 R6 K17 - 0x7C280200, // 0031 CALL R10 1 - 0xB82E0000, // 0032 GETNGBL R11 K0 - 0x882C1712, // 0033 GETMBR R11 R11 K18 - 0x882C1713, // 0034 GETMBR R11 R11 K19 - 0x2428140B, // 0035 GT R10 R10 R11 - 0x782A002A, // 0036 JMPF R10 #0062 - 0x60280012, // 0037 GETGBL R10 G18 - 0x7C280000, // 0038 CALL R10 0 - 0x5C201400, // 0039 MOVE R8 R10 - 0x60280015, // 003A GETGBL R10 G21 - 0x542E002F, // 003B LDINT R11 48 - 0x7C280200, // 003C CALL R10 1 - 0x8C2C0914, // 003D GETMET R11 R4 K20 - 0x7C2C0200, // 003E CALL R11 1 - 0x68300001, // 003F GETUPV R12 U1 - 0x8C301915, // 0040 GETMET R12 R12 K21 - 0x5C381400, // 0041 MOVE R14 R10 - 0x5C3C0400, // 0042 MOVE R15 R2 - 0x5C401600, // 0043 MOVE R16 R11 - 0x50440000, // 0044 LDBOOL R17 0 0 - 0x7C300A00, // 0045 CALL R12 5 - 0x8C301116, // 0046 GETMET R12 R8 K22 - 0x5C381400, // 0047 MOVE R14 R10 - 0x7C300400, // 0048 CALL R12 2 - 0x60300010, // 0049 GETGBL R12 G16 - 0x88340D17, // 004A GETMBR R13 R6 K23 - 0x7C300200, // 004B CALL R12 1 - 0xA8020010, // 004C EXBLK 0 #005E - 0x5C341800, // 004D MOVE R13 R12 - 0x7C340000, // 004E CALL R13 0 - 0x60380015, // 004F GETGBL R14 G21 - 0x543E002F, // 0050 LDINT R15 48 - 0x7C380200, // 0051 CALL R14 1 - 0x5C281C00, // 0052 MOVE R10 R14 - 0x68380001, // 0053 GETUPV R14 U1 - 0x8C381D15, // 0054 GETMET R14 R14 K21 - 0x5C401400, // 0055 MOVE R16 R10 - 0x5C440400, // 0056 MOVE R17 R2 - 0x5C481A00, // 0057 MOVE R18 R13 - 0x504C0200, // 0058 LDBOOL R19 1 0 - 0x7C380A00, // 0059 CALL R14 5 - 0x8C381116, // 005A GETMET R14 R8 K22 - 0x5C401400, // 005B MOVE R16 R10 - 0x7C380400, // 005C CALL R14 2 - 0x7001FFEE, // 005D JMP #004D - 0x58300018, // 005E LDCONST R12 K24 - 0xAC300200, // 005F CATCH R12 1 0 - 0xB0080000, // 0060 RAISE 2 R0 R0 - 0x70020009, // 0061 JMP #006C - 0x60280015, // 0062 GETGBL R10 G21 - 0x542E002F, // 0063 LDINT R11 48 - 0x7C280200, // 0064 CALL R10 1 - 0x5C201400, // 0065 MOVE R8 R10 - 0x68280001, // 0066 GETUPV R10 U1 - 0x8C281515, // 0067 GETMET R10 R10 K21 - 0x5C301000, // 0068 MOVE R12 R8 - 0x5C340400, // 0069 MOVE R13 R2 - 0x5C380C00, // 006A MOVE R14 R6 - 0x7C280800, // 006B CALL R10 4 - 0xB82A0400, // 006C GETNGBL R10 K2 - 0x8C281503, // 006D GETMET R10 R10 K3 - 0x58300004, // 006E LDCONST R12 K4 - 0x7C280400, // 006F CALL R10 2 - 0x782A000C, // 0070 JMPF R10 #007E - 0x68280002, // 0071 GETUPV R10 U2 - 0x742A000A, // 0072 JMPT R10 #007E - 0xB82A3200, // 0073 GETNGBL R10 K25 - 0x602C0018, // 0074 GETGBL R11 G24 - 0x5830001A, // 0075 LDCONST R12 K26 - 0x68340000, // 0076 GETUPV R13 U0 - 0x88341B1B, // 0077 GETMBR R13 R13 K27 - 0x5C380400, // 0078 MOVE R14 R2 - 0x5C3C0A00, // 0079 MOVE R15 R5 - 0x5C401200, // 007A MOVE R16 R9 - 0x7C2C0A00, // 007B CALL R11 5 - 0x58300004, // 007C LDCONST R12 K4 - 0x7C280400, // 007D CALL R10 2 - 0x7002003E, // 007E JMP #00BE - 0x8824050B, // 007F GETMBR R9 R2 K11 - 0x4C280000, // 0080 LDNIL R10 - 0x2024120A, // 0081 NE R9 R9 R10 - 0x78260025, // 0082 JMPF R9 #00A9 - 0x780E0023, // 0083 JMPF R3 #00A8 - 0x60240015, // 0084 GETGBL R9 G21 - 0x542A002F, // 0085 LDINT R10 48 - 0x7C240200, // 0086 CALL R9 1 - 0x5C201200, // 0087 MOVE R8 R9 - 0x68240001, // 0088 GETUPV R9 U1 - 0x8C24131C, // 0089 GETMET R9 R9 K28 - 0x5C2C1000, // 008A MOVE R11 R8 - 0x5C300400, // 008B MOVE R12 R2 - 0x8834050B, // 008C GETMBR R13 R2 K11 - 0x7C240800, // 008D CALL R9 4 - 0xB8260400, // 008E GETNGBL R9 K2 - 0x8C241303, // 008F GETMET R9 R9 K3 - 0x582C0004, // 0090 LDCONST R11 K4 - 0x7C240400, // 0091 CALL R9 2 - 0x78260014, // 0092 JMPF R9 #00A8 - 0xB8263200, // 0093 GETNGBL R9 K25 - 0x60280018, // 0094 GETGBL R10 G24 - 0x582C001D, // 0095 LDCONST R11 K29 - 0x68300000, // 0096 GETUPV R12 U0 - 0x8830191B, // 0097 GETMBR R12 R12 K27 - 0x60340008, // 0098 GETGBL R13 G8 - 0x5C380400, // 0099 MOVE R14 R2 - 0x7C340200, // 009A CALL R13 1 - 0x5C380A00, // 009B MOVE R14 R5 - 0x883C050B, // 009C GETMBR R15 R2 K11 - 0x8840050B, // 009D GETMBR R16 R2 K11 - 0xB8460000, // 009E GETNGBL R17 K0 - 0x8844231E, // 009F GETMBR R17 R17 K30 - 0x1C402011, // 00A0 EQ R16 R16 R17 - 0x78420001, // 00A1 JMPF R16 #00A4 - 0x5840001E, // 00A2 LDCONST R16 K30 - 0x70020000, // 00A3 JMP #00A5 - 0x5840000A, // 00A4 LDCONST R16 K10 - 0x7C280C00, // 00A5 CALL R10 6 - 0x582C0004, // 00A6 LDCONST R11 K4 - 0x7C240400, // 00A7 CALL R9 2 - 0x70020014, // 00A8 JMP #00BE - 0xB8260400, // 00A9 GETNGBL R9 K2 - 0x8C241303, // 00AA GETMET R9 R9 K3 - 0x582C0004, // 00AB LDCONST R11 K4 - 0x7C240400, // 00AC CALL R9 2 - 0x7826000D, // 00AD JMPF R9 #00BC - 0x68240002, // 00AE GETUPV R9 U2 - 0x7426000B, // 00AF JMPT R9 #00BC - 0xB8263200, // 00B0 GETNGBL R9 K25 - 0x60280018, // 00B1 GETGBL R10 G24 - 0x582C001F, // 00B2 LDCONST R11 K31 - 0x68300000, // 00B3 GETUPV R12 U0 - 0x8830191B, // 00B4 GETMBR R12 R12 K27 - 0x60340008, // 00B5 GETGBL R13 G8 - 0x5C380400, // 00B6 MOVE R14 R2 - 0x7C340200, // 00B7 CALL R13 1 - 0x5C380A00, // 00B8 MOVE R14 R5 - 0x7C280800, // 00B9 CALL R10 4 - 0x582C0004, // 00BA LDCONST R11 K4 - 0x7C240400, // 00BB CALL R9 2 - 0x780E0000, // 00BC JMPF R3 #00BE - 0x501C0000, // 00BD LDBOOL R7 0 0 - 0x6024000F, // 00BE GETGBL R9 G15 - 0x5C281000, // 00BF MOVE R10 R8 - 0x602C0012, // 00C0 GETGBL R11 G18 - 0x7C240400, // 00C1 CALL R9 2 - 0x78260001, // 00C2 JMPF R9 #00C5 - 0x58240020, // 00C3 LDCONST R9 K32 - 0x70020000, // 00C4 JMP #00C6 - 0x4C240000, // 00C5 LDNIL R9 - 0x4C280000, // 00C6 LDNIL R10 - 0x2028100A, // 00C7 NE R10 R8 R10 - 0x782A0031, // 00C8 JMPF R10 #00FB - 0x4C280000, // 00C9 LDNIL R10 - 0x1C28120A, // 00CA EQ R10 R9 R10 - 0x782A0001, // 00CB JMPF R10 #00CE - 0x5C281000, // 00CC MOVE R10 R8 - 0x70020000, // 00CD JMP #00CF - 0x94281009, // 00CE GETIDX R10 R8 R9 - 0x602C000C, // 00CF GETGBL R11 G12 - 0x88300121, // 00D0 GETMBR R12 R0 K33 - 0x7C2C0200, // 00D1 CALL R11 1 - 0x1C2C1720, // 00D2 EQ R11 R11 K32 - 0x782E0004, // 00D3 JMPF R11 #00D9 - 0x882C0121, // 00D4 GETMBR R11 R0 K33 - 0x8C2C1716, // 00D5 GETMET R11 R11 K22 - 0x5C341400, // 00D6 MOVE R13 R10 - 0x7C2C0400, // 00D7 CALL R11 2 - 0x70020014, // 00D8 JMP #00EE - 0x882C0121, // 00D9 GETMBR R11 R0 K33 - 0x5431FFFE, // 00DA LDINT R12 -1 - 0x942C160C, // 00DB GETIDX R11 R11 R12 - 0x6030000C, // 00DC GETGBL R12 G12 - 0x5C341600, // 00DD MOVE R13 R11 - 0x7C300200, // 00DE CALL R12 1 - 0x6034000C, // 00DF GETGBL R13 G12 - 0x5C381400, // 00E0 MOVE R14 R10 - 0x7C340200, // 00E1 CALL R13 1 - 0x0030180D, // 00E2 ADD R12 R12 R13 - 0xB8360000, // 00E3 GETNGBL R13 K0 - 0x88341B12, // 00E4 GETMBR R13 R13 K18 - 0x88341B13, // 00E5 GETMBR R13 R13 K19 - 0x1830180D, // 00E6 LE R12 R12 R13 - 0x78320001, // 00E7 JMPF R12 #00EA - 0x4030160A, // 00E8 CONNECT R12 R11 R10 - 0x70020003, // 00E9 JMP #00EE - 0x88300121, // 00EA GETMBR R12 R0 K33 - 0x8C301916, // 00EB GETMET R12 R12 K22 - 0x5C381400, // 00EC MOVE R14 R10 - 0x7C300400, // 00ED CALL R12 2 - 0x4C2C0000, // 00EE LDNIL R11 - 0x1C2C120B, // 00EF EQ R11 R9 R11 - 0x782E0001, // 00F0 JMPF R11 #00F3 - 0x4C200000, // 00F1 LDNIL R8 - 0x70020006, // 00F2 JMP #00FA - 0x00241322, // 00F3 ADD R9 R9 K34 - 0x602C000C, // 00F4 GETGBL R11 G12 - 0x5C301000, // 00F5 MOVE R12 R8 - 0x7C2C0200, // 00F6 CALL R11 1 - 0x282C120B, // 00F7 GE R11 R9 R11 - 0x782E0000, // 00F8 JMPF R11 #00FA - 0x4C200000, // 00F9 LDNIL R8 - 0x7001FFCA, // 00FA JMP #00C6 - 0x80040E00, // 00FB RET 1 R7 - }) - ), - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 5), - be_local_const_upval(1, 9), - }), - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x68100001, // 0001 GETUPV R4 U1 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - &be_class_Matter_IM, - }), - 1, /* has constants */ - ( &(const bvalue[40]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(get_active_endpoints), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Path), - /* K4 */ be_nested_str_weak(msg), - /* K5 */ be_nested_str_weak(get_node_id), - /* K6 */ be_nested_str_weak(ReportDataMessage), - /* K7 */ be_nested_str_weak(attribute_reports), - /* K8 */ be_nested_str_weak(attributes_requests), - /* K9 */ be_nested_str_weak(endpoint), - /* K10 */ be_nested_str_weak(cluster), - /* K11 */ be_nested_str_weak(attribute), - /* K12 */ be_nested_str_weak(fabric_filtered), - /* K13 */ be_nested_str_weak(status), - /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(loglevel), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(get_attribute_name), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K21 */ be_nested_str_weak(local_session_id), - /* K22 */ be_nested_str_weak(_X20_X28), - /* K23 */ be_nested_str_weak(_X29), - /* K24 */ be_nested_str_weak(), - /* K25 */ be_nested_str_weak(process_attribute_expansion), - /* K26 */ be_nested_str_weak(stop_iteration), - /* K27 */ be_nested_str_weak(event_requests), - /* K28 */ be_nested_str_weak(event_filters), - /* K29 */ be_nested_str_weak(MTR_X3A_X20EventFilter_X20filter_X3D_X25s_X20node_id_X3D_X25s), - /* K30 */ be_nested_str_weak(int64), - /* K31 */ be_nested_str_weak(toint64), - /* K32 */ be_nested_str_weak(node), - /* K33 */ be_nested_str_weak(tobytes), - /* K34 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), - /* K35 */ be_nested_str_weak(tohex), - /* K36 */ be_nested_str_weak(event_min), - /* K37 */ be_nested_str_weak(event_reports), - /* K38 */ be_nested_str_weak(event), - /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X25s), - }), - be_str_weak(_inner_process_read_request), - &be_const_str_solidified, - ( &(const binstruction[191]) { /* code */ - 0x84140000, // 0000 CLOSURE R5 P0 - 0x88180100, // 0001 GETMBR R6 R0 K0 - 0x8C180D01, // 0002 GETMET R6 R6 K1 - 0x7C180200, // 0003 CALL R6 1 - 0xB81E0400, // 0004 GETNGBL R7 K2 - 0x8C1C0F03, // 0005 GETMET R7 R7 K3 - 0x7C1C0200, // 0006 CALL R7 1 - 0x901E0803, // 0007 SETMBR R7 K4 R3 - 0x4C200000, // 0008 LDNIL R8 - 0x20200608, // 0009 NE R8 R3 R8 - 0x78220002, // 000A JMPF R8 #000E - 0x8C200705, // 000B GETMET R8 R3 K5 - 0x7C200200, // 000C CALL R8 1 - 0x70020000, // 000D JMP #000F - 0x4C200000, // 000E LDNIL R8 - 0xB8260400, // 000F GETNGBL R9 K2 - 0x8C241306, // 0010 GETMET R9 R9 K6 - 0x7C240200, // 0011 CALL R9 1 - 0x60280012, // 0012 GETGBL R10 G18 - 0x7C280000, // 0013 CALL R10 0 - 0x90260E0A, // 0014 SETMBR R9 K7 R10 - 0x60280010, // 0015 GETGBL R10 G16 - 0x882C0508, // 0016 GETMBR R11 R2 K8 - 0x7C280200, // 0017 CALL R10 1 - 0xA802004B, // 0018 EXBLK 0 #0065 - 0x5C2C1400, // 0019 MOVE R11 R10 - 0x7C2C0000, // 001A CALL R11 0 - 0x88301709, // 001B GETMBR R12 R11 K9 - 0x901E120C, // 001C SETMBR R7 K9 R12 - 0x8830170A, // 001D GETMBR R12 R11 K10 - 0x901E140C, // 001E SETMBR R7 K10 R12 - 0x8830170B, // 001F GETMBR R12 R11 K11 - 0x901E160C, // 0020 SETMBR R7 K11 R12 - 0x8830050C, // 0021 GETMBR R12 R2 K12 - 0x901E180C, // 0022 SETMBR R7 K12 R12 - 0xB8320400, // 0023 GETNGBL R12 K2 - 0x8830190E, // 0024 GETMBR R12 R12 K14 - 0x901E1A0C, // 0025 SETMBR R7 K13 R12 - 0x88300F09, // 0026 GETMBR R12 R7 K9 - 0x4C340000, // 0027 LDNIL R13 - 0x1C30180D, // 0028 EQ R12 R12 R13 - 0x74320007, // 0029 JMPT R12 #0032 - 0x88300F0A, // 002A GETMBR R12 R7 K10 - 0x4C340000, // 002B LDNIL R13 - 0x1C30180D, // 002C EQ R12 R12 R13 - 0x74320003, // 002D JMPT R12 #0032 - 0x88300F0B, // 002E GETMBR R12 R7 K11 - 0x4C340000, // 002F LDNIL R13 - 0x1C30180D, // 0030 EQ R12 R12 R13 - 0x7832002C, // 0031 JMPF R12 #005F - 0xB8321E00, // 0032 GETNGBL R12 K15 - 0x8C301910, // 0033 GETMET R12 R12 K16 - 0x58380011, // 0034 LDCONST R14 K17 - 0x7C300400, // 0035 CALL R12 2 - 0x78320027, // 0036 JMPF R12 #005F - 0x88300F0A, // 0037 GETMBR R12 R7 K10 - 0x4C340000, // 0038 LDNIL R13 - 0x2030180D, // 0039 NE R12 R12 R13 - 0x78320019, // 003A JMPF R12 #0055 - 0x88300F0B, // 003B GETMBR R12 R7 K11 - 0x4C340000, // 003C LDNIL R13 - 0x2030180D, // 003D NE R12 R12 R13 - 0x78320015, // 003E JMPF R12 #0055 - 0xB8320400, // 003F GETNGBL R12 K2 - 0x8C301912, // 0040 GETMET R12 R12 K18 - 0x88380F0A, // 0041 GETMBR R14 R7 K10 - 0x883C0F0B, // 0042 GETMBR R15 R7 K11 - 0x7C300600, // 0043 CALL R12 3 - 0xB8362600, // 0044 GETNGBL R13 K19 - 0x60380018, // 0045 GETGBL R14 G24 - 0x583C0014, // 0046 LDCONST R15 K20 - 0x88400315, // 0047 GETMBR R16 R1 K21 - 0x60440008, // 0048 GETGBL R17 G8 - 0x5C480E00, // 0049 MOVE R18 R7 - 0x7C440200, // 004A CALL R17 1 - 0x78320002, // 004B JMPF R12 #004F - 0x004A2C0C, // 004C ADD R18 K22 R12 - 0x00482517, // 004D ADD R18 R18 K23 - 0x70020000, // 004E JMP #0050 - 0x58480018, // 004F LDCONST R18 K24 - 0x00442212, // 0050 ADD R17 R17 R18 - 0x7C380600, // 0051 CALL R14 3 - 0x583C0011, // 0052 LDCONST R15 K17 - 0x7C340400, // 0053 CALL R13 2 - 0x70020009, // 0054 JMP #005F - 0xB8322600, // 0055 GETNGBL R12 K19 - 0x60340018, // 0056 GETGBL R13 G24 - 0x58380014, // 0057 LDCONST R14 K20 - 0x883C0315, // 0058 GETMBR R15 R1 K21 - 0x60400008, // 0059 GETGBL R16 G8 - 0x5C440E00, // 005A MOVE R17 R7 - 0x7C400200, // 005B CALL R16 1 - 0x7C340600, // 005C CALL R13 3 - 0x58380011, // 005D LDCONST R14 K17 - 0x7C300400, // 005E CALL R12 2 - 0x88300100, // 005F GETMBR R12 R0 K0 - 0x8C301919, // 0060 GETMET R12 R12 K25 - 0x5C380E00, // 0061 MOVE R14 R7 - 0x843C0001, // 0062 CLOSURE R15 P1 - 0x7C300600, // 0063 CALL R12 3 - 0x7001FFB3, // 0064 JMP #0019 - 0x5828001A, // 0065 LDCONST R10 K26 - 0xAC280200, // 0066 CATCH R10 1 0 - 0xB0080000, // 0067 RAISE 2 R0 R0 - 0x8828051B, // 0068 GETMBR R10 R2 K27 - 0x882C051C, // 0069 GETMBR R11 R2 K28 - 0x4C300000, // 006A LDNIL R12 - 0x782A0050, // 006B JMPF R10 #00BD - 0x782E0033, // 006C JMPF R11 #00A1 - 0x60340010, // 006D GETGBL R13 G16 - 0x5C381600, // 006E MOVE R14 R11 - 0x7C340200, // 006F CALL R13 1 - 0xA802002C, // 0070 EXBLK 0 #009E - 0x5C381A00, // 0071 MOVE R14 R13 - 0x7C380000, // 0072 CALL R14 0 - 0xB83E1E00, // 0073 GETNGBL R15 K15 - 0x8C3C1F13, // 0074 GETMET R15 R15 K19 - 0x60440018, // 0075 GETGBL R17 G24 - 0x5848001D, // 0076 LDCONST R18 K29 - 0x5C4C1C00, // 0077 MOVE R19 R14 - 0x5C501000, // 0078 MOVE R20 R8 - 0x7C440600, // 0079 CALL R17 3 - 0x58480011, // 007A LDCONST R18 K17 - 0x7C3C0600, // 007B CALL R15 3 - 0xB83E3C00, // 007C GETNGBL R15 K30 - 0x8C3C1F1F, // 007D GETMET R15 R15 K31 - 0x88441D20, // 007E GETMBR R17 R14 K32 - 0x7C3C0400, // 007F CALL R15 2 - 0x783E001B, // 0080 JMPF R15 #009D - 0x88401D20, // 0081 GETMBR R16 R14 K32 - 0x8C402121, // 0082 GETMET R16 R16 K33 - 0x7C400200, // 0083 CALL R16 1 - 0x20402008, // 0084 NE R16 R16 R8 - 0x7842000C, // 0085 JMPF R16 #0093 - 0xB8421E00, // 0086 GETNGBL R16 K15 - 0x8C402113, // 0087 GETMET R16 R16 K19 - 0x60480018, // 0088 GETGBL R18 G24 - 0x584C0022, // 0089 LDCONST R19 K34 - 0x8C501F21, // 008A GETMET R20 R15 K33 - 0x7C500200, // 008B CALL R20 1 - 0x8C502923, // 008C GETMET R20 R20 K35 - 0x7C500200, // 008D CALL R20 1 - 0x8C541123, // 008E GETMET R21 R8 K35 - 0x7C540200, // 008F CALL R21 1 - 0x7C480600, // 0090 CALL R18 3 - 0x7C400400, // 0091 CALL R16 2 - 0x7001FFDD, // 0092 JMP #0071 - 0xB8423C00, // 0093 GETNGBL R16 K30 - 0x8C40211F, // 0094 GETMET R16 R16 K31 - 0x88481D24, // 0095 GETMBR R18 R14 K36 - 0x7C400400, // 0096 CALL R16 2 - 0x4C440000, // 0097 LDNIL R17 - 0x20441811, // 0098 NE R17 R12 R17 - 0x74460001, // 0099 JMPT R17 #009C - 0x14441810, // 009A LT R17 R12 R16 - 0x78460000, // 009B JMPF R17 #009D - 0x5C302000, // 009C MOVE R12 R16 - 0x7001FFD2, // 009D JMP #0071 - 0x5834001A, // 009E LDCONST R13 K26 - 0xAC340200, // 009F CATCH R13 1 0 - 0xB0080000, // 00A0 RAISE 2 R0 R0 - 0x60340012, // 00A1 GETGBL R13 G18 - 0x7C340000, // 00A2 CALL R13 0 - 0x90264A0D, // 00A3 SETMBR R9 K37 R13 - 0x60340010, // 00A4 GETGBL R13 G16 - 0x5C381400, // 00A5 MOVE R14 R10 - 0x7C340200, // 00A6 CALL R13 1 - 0xA8020011, // 00A7 EXBLK 0 #00BA - 0x5C381A00, // 00A8 MOVE R14 R13 - 0x7C380000, // 00A9 CALL R14 0 - 0x883C1D09, // 00AA GETMBR R15 R14 K9 - 0x901E120F, // 00AB SETMBR R7 K9 R15 - 0x883C1D0A, // 00AC GETMBR R15 R14 K10 - 0x901E140F, // 00AD SETMBR R7 K10 R15 - 0x883C1D26, // 00AE GETMBR R15 R14 K38 - 0x901E160F, // 00AF SETMBR R7 K11 R15 - 0xB83E1E00, // 00B0 GETNGBL R15 K15 - 0x8C3C1F13, // 00B1 GETMET R15 R15 K19 - 0x60440018, // 00B2 GETGBL R17 G24 - 0x58480027, // 00B3 LDCONST R18 K39 - 0x884C0315, // 00B4 GETMBR R19 R1 K21 - 0x5C500E00, // 00B5 MOVE R20 R7 - 0x7C440600, // 00B6 CALL R17 3 - 0x58480011, // 00B7 LDCONST R18 K17 - 0x7C3C0600, // 00B8 CALL R15 3 - 0x7001FFED, // 00B9 JMP #00A8 - 0x5834001A, // 00BA LDCONST R13 K26 - 0xAC340200, // 00BB CATCH R13 1 0 - 0xB0080000, // 00BC RAISE 2 R0 R0 - 0xA0000000, // 00BD CLOSE R0 - 0x80041200, // 00BE RET 1 R9 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: report_data -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_report_data, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(ReportDataMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(355795236), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(path2raw), + /* K4 */ be_nested_str_weak(tag_sub), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(tlv2raw), }), - be_str_weak(report_data), + be_str_weak(attributedata2raw), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + ( &(const binstruction[23]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x581C0001, // 0001 LDCONST R7 K1 + 0x5421FFFB, // 0002 LDINT R8 -4 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x581C0002, // 0005 LDCONST R7 K2 + 0x5421FFFD, // 0006 LDINT R8 -2 + 0x7C140600, // 0007 CALL R5 3 + 0x8C140103, // 0008 GETMET R5 R0 K3 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x58240002, // 000B LDCONST R9 K2 + 0x5C280800, // 000C MOVE R10 R4 + 0x7C140A00, // 000D CALL R5 5 + 0x900E0905, // 000E SETMBR R3 K4 K5 + 0x8C140706, // 000F GETMET R5 R3 K6 + 0x5C1C0200, // 0010 MOVE R7 R1 + 0x7C140400, // 0011 CALL R5 2 + 0x8C140300, // 0012 GETMET R5 R1 K0 + 0x541E1817, // 0013 LDINT R7 6168 + 0x5421FFFD, // 0014 LDINT R8 -2 + 0x7C140600, // 0015 CALL R5 3 + 0x80000000, // 0016 RET 0 }) ) ); @@ -2902,38 +2291,204 @@ be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ /******************************************************************** -** Solidified function: send_subscribe_response +** Solidified function: process_write_request ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_response, /* name */ +be_local_closure(class_Matter_IM_process_write_request, /* name */ be_nested_proto( - 11, /* nstack */ - 4, /* argc */ + 21, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_SubscribeResponse), + ( &(const bvalue[39]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(WriteRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(Path), + /* K4 */ be_nested_str_weak(suppress_response), + /* K5 */ be_nested_str_weak(write_requests), + /* K6 */ be_nested_str_weak(WriteResponseMessage), + /* K7 */ be_nested_str_weak(write_responses), + /* K8 */ be_nested_str_weak(PathGenerator), + /* K9 */ be_nested_str_weak(device), + /* K10 */ be_nested_str_weak(path), + /* K11 */ be_nested_str_weak(data), + /* K12 */ be_nested_str_weak(copy), + /* K13 */ be_nested_str_weak(cluster), + /* K14 */ be_nested_str_weak(attribute), + /* K15 */ be_nested_str_weak(status), + /* K16 */ be_nested_str_weak(INVALID_ACTION), + /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), + /* K18 */ be_nested_str_weak(endpoint), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(get_attribute_name), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K25 */ be_nested_str_weak(_X20_X28), + /* K26 */ be_nested_str_weak(_X29), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(start), + /* K29 */ be_nested_str_weak(is_direct), + /* K30 */ be_nested_str_weak(next), + /* K31 */ be_nested_str_weak(msg), + /* K32 */ be_nested_str_weak(get_pi), + /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), + /* K34 */ be_nested_str_weak(write_attribute), + /* K35 */ be_nested_str_weak(session), + /* K36 */ be_nested_str_weak(SUCCESS), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_nested_str_weak(send_write_response), }), - be_str_weak(send_subscribe_response), + be_str_weak(process_write_request), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0xB81A0400, // 0002 GETNGBL R6 K2 - 0x8C180D03, // 0003 GETMET R6 R6 K3 - 0x5C200200, // 0004 MOVE R8 R1 - 0x5C240400, // 0005 MOVE R9 R2 - 0x5C280600, // 0006 MOVE R10 R3 - 0x7C180800, // 0007 CALL R6 4 - 0x7C100400, // 0008 CALL R4 2 - 0x80000000, // 0009 RET 0 + ( &(const binstruction[141]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0xB8120000, // 0006 GETNGBL R4 K0 + 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x7C100200, // 0008 CALL R4 1 + 0x88140704, // 0009 GETMBR R5 R3 K4 + 0x88180705, // 000A GETMBR R6 R3 K5 + 0x4C1C0000, // 000B LDNIL R7 + 0x20180C07, // 000C NE R6 R6 R7 + 0x781A007C, // 000D JMPF R6 #008B + 0xB81A0000, // 000E GETNGBL R6 K0 + 0x8C180D06, // 000F GETMET R6 R6 K6 + 0x7C180200, // 0010 CALL R6 1 + 0x601C0012, // 0011 GETGBL R7 G18 + 0x7C1C0000, // 0012 CALL R7 0 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0xB81E0000, // 0014 GETNGBL R7 K0 + 0x8C1C0F08, // 0015 GETMET R7 R7 K8 + 0x88240109, // 0016 GETMBR R9 R0 K9 + 0x7C1C0400, // 0017 CALL R7 2 + 0x60200010, // 0018 GETGBL R8 G16 + 0x88240705, // 0019 GETMBR R9 R3 K5 + 0x7C200200, // 001A CALL R8 1 + 0xA8020065, // 001B EXBLK 0 #0082 + 0x5C241000, // 001C MOVE R9 R8 + 0x7C240000, // 001D CALL R9 0 + 0x8828130A, // 001E GETMBR R10 R9 K10 + 0x882C130B, // 001F GETMBR R11 R9 K11 + 0x8C30090C, // 0020 GETMET R12 R4 K12 + 0x5C381400, // 0021 MOVE R14 R10 + 0x7C300400, // 0022 CALL R12 2 + 0x8830150D, // 0023 GETMBR R12 R10 K13 + 0x4C340000, // 0024 LDNIL R13 + 0x1C30180D, // 0025 EQ R12 R12 R13 + 0x74320003, // 0026 JMPT R12 #002B + 0x8830150E, // 0027 GETMBR R12 R10 K14 + 0x4C340000, // 0028 LDNIL R13 + 0x1C30180D, // 0029 EQ R12 R12 R13 + 0x78320008, // 002A JMPF R12 #0034 + 0xB8320000, // 002B GETNGBL R12 K0 + 0x88301910, // 002C GETMBR R12 R12 K16 + 0x90121E0C, // 002D SETMBR R4 K15 R12 + 0x8C300111, // 002E GETMET R12 R0 K17 + 0x5C380C00, // 002F MOVE R14 R6 + 0x5C3C0800, // 0030 MOVE R15 R4 + 0x4C400000, // 0031 LDNIL R16 + 0x7C300800, // 0032 CALL R12 4 + 0x7001FFE7, // 0033 JMP #001C + 0x88301512, // 0034 GETMBR R12 R10 K18 + 0x4C340000, // 0035 LDNIL R13 + 0x1C30180D, // 0036 EQ R12 R12 R13 + 0x78320016, // 0037 JMPF R12 #004F + 0xB8322600, // 0038 GETNGBL R12 K19 + 0x8C301914, // 0039 GETMET R12 R12 K20 + 0x58380015, // 003A LDCONST R14 K21 + 0x7C300400, // 003B CALL R12 2 + 0x78320011, // 003C JMPF R12 #004F + 0xB8320000, // 003D GETNGBL R12 K0 + 0x8C301916, // 003E GETMET R12 R12 K22 + 0x8838150D, // 003F GETMBR R14 R10 K13 + 0x883C150E, // 0040 GETMBR R15 R10 K14 + 0x7C300600, // 0041 CALL R12 3 + 0xB8362E00, // 0042 GETNGBL R13 K23 + 0x60380008, // 0043 GETGBL R14 G8 + 0x5C3C0800, // 0044 MOVE R15 R4 + 0x7C380200, // 0045 CALL R14 1 + 0x003A300E, // 0046 ADD R14 K24 R14 + 0x78320002, // 0047 JMPF R12 #004B + 0x003E320C, // 0048 ADD R15 K25 R12 + 0x003C1F1A, // 0049 ADD R15 R15 K26 + 0x70020000, // 004A JMP #004C + 0x583C001B, // 004B LDCONST R15 K27 + 0x00381C0F, // 004C ADD R14 R14 R15 + 0x583C0015, // 004D LDCONST R15 K21 + 0x7C340400, // 004E CALL R13 2 + 0x8C300F1C, // 004F GETMET R12 R7 K28 + 0x88381512, // 0050 GETMBR R14 R10 K18 + 0x883C150D, // 0051 GETMBR R15 R10 K13 + 0x8840150E, // 0052 GETMBR R16 R10 K14 + 0x7C300800, // 0053 CALL R12 4 + 0x8C300F1D, // 0054 GETMET R12 R7 K29 + 0x7C300200, // 0055 CALL R12 1 + 0x4C340000, // 0056 LDNIL R13 + 0x8C380F1E, // 0057 GETMET R14 R7 K30 + 0x7C380200, // 0058 CALL R14 1 + 0x5C341C00, // 0059 MOVE R13 R14 + 0x783A0025, // 005A JMPF R14 #0081 + 0x90363E01, // 005B SETMBR R13 K31 R1 + 0x88381B0F, // 005C GETMBR R14 R13 K15 + 0x4C3C0000, // 005D LDNIL R15 + 0x20381C0F, // 005E NE R14 R14 R15 + 0x783A0007, // 005F JMPF R14 #0068 + 0x4C380000, // 0060 LDNIL R14 + 0x90361E0E, // 0061 SETMBR R13 K15 R14 + 0x8C380111, // 0062 GETMET R14 R0 K17 + 0x5C400C00, // 0063 MOVE R16 R6 + 0x5C441A00, // 0064 MOVE R17 R13 + 0x5C481600, // 0065 MOVE R18 R11 + 0x7C380800, // 0066 CALL R14 4 + 0x70020017, // 0067 JMP #0080 + 0x8C380F20, // 0068 GETMET R14 R7 K32 + 0x7C380200, // 0069 CALL R14 1 + 0xB83E0000, // 006A GETNGBL R15 K0 + 0x883C1F21, // 006B GETMBR R15 R15 K33 + 0x90361E0F, // 006C SETMBR R13 K15 R15 + 0x4C3C0000, // 006D LDNIL R15 + 0x203C1C0F, // 006E NE R15 R14 R15 + 0x783E0005, // 006F JMPF R15 #0076 + 0x8C3C1D22, // 0070 GETMET R15 R14 K34 + 0x88440323, // 0071 GETMBR R17 R1 K35 + 0x5C481A00, // 0072 MOVE R18 R13 + 0x5C4C1600, // 0073 MOVE R19 R11 + 0x7C3C0800, // 0074 CALL R15 4 + 0x70020000, // 0075 JMP #0077 + 0x4C3C0000, // 0076 LDNIL R15 + 0x783E0002, // 0077 JMPF R15 #007B + 0xB8420000, // 0078 GETNGBL R16 K0 + 0x88402124, // 0079 GETMBR R16 R16 K36 + 0x90361E10, // 007A SETMBR R13 K15 R16 + 0x8C400111, // 007B GETMET R16 R0 K17 + 0x5C480C00, // 007C MOVE R18 R6 + 0x5C4C1A00, // 007D MOVE R19 R13 + 0x5C501600, // 007E MOVE R20 R11 + 0x7C400800, // 007F CALL R16 4 + 0x7001FFD5, // 0080 JMP #0057 + 0x7001FF99, // 0081 JMP #001C + 0x58200025, // 0082 LDCONST R8 K37 + 0xAC200200, // 0083 CATCH R8 1 0 + 0xB0080000, // 0084 RAISE 2 R0 R0 + 0x5C200A00, // 0085 MOVE R8 R5 + 0x74220003, // 0086 JMPT R8 #008B + 0x8C200126, // 0087 GETMET R8 R0 K38 + 0x5C280200, // 0088 MOVE R10 R1 + 0x5C2C0C00, // 0089 MOVE R11 R6 + 0x7C200600, // 008A CALL R8 3 + 0x50180200, // 008B LDBOOL R6 1 0 + 0x80040C00, // 008C RET 1 R6 }) ) ); @@ -2941,10 +2496,10 @@ be_local_closure(class_Matter_IM_send_subscribe_response, /* name */ /******************************************************************** -** Solidified function: send_report_data +** Solidified function: send_report_data_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_report_data, /* name */ +be_local_closure(class_Matter_IM_send_report_data_pull, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -2958,9 +2513,9 @@ be_local_closure(class_Matter_IM_send_report_data, /* name */ /* K0 */ be_nested_str_weak(send_queue), /* K1 */ be_nested_str_weak(push), /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_ReportData), + /* K3 */ be_nested_str_weak(IM_ReportData_Pull), }), - be_str_weak(send_report_data), + be_str_weak(send_report_data_pull), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 @@ -2979,50 +2534,269 @@ be_local_closure(class_Matter_IM_send_report_data, /* name */ /******************************************************************** -** Solidified function: find_sendqueue_by_exchangeid +** Solidified function: process_invoke_request_solo ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ +be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 15, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_const_int(1), + ( &(const bvalue[42]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(profiler), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(invoke_request_solo_start), + /* K4 */ be_nested_str_weak(msg), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K7 */ be_nested_str_weak(get_command_name), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(command), + /* K10 */ be_nested_str_weak(device), + /* K11 */ be_nested_str_weak(invoke_request), + /* K12 */ be_nested_str_weak(session), + /* K13 */ be_nested_str_weak(command_fields), + /* K14 */ be_nested_str_weak(COMMAND_X20DONE), + /* K15 */ be_nested_str_weak(_X28), + /* K16 */ be_nested_str_weak(_X29_X20), + /* K17 */ be_nested_str_weak(), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(loglevel), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K22 */ be_nested_str_weak(local_session_id), + /* K23 */ be_nested_str_weak(add), + /* K24 */ be_const_int(354943030), + /* K25 */ be_const_int(1), + /* K26 */ be_nested_str_weak(SUCCESS), + /* K27 */ be_nested_str_weak(invokeresponse2raw), + /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), + /* K29 */ be_nested_str_weak(exchange_id), + /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K32 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K33 */ be_const_int(405077761), + /* K34 */ be_nested_str_weak(build_response), + /* K35 */ be_nested_str_weak(message_handler), + /* K36 */ be_nested_str_weak(raw), + /* K37 */ be_nested_str_weak(clear), + /* K38 */ be_nested_str_weak(encode_frame), + /* K39 */ be_nested_str_weak(encrypt), + /* K40 */ be_nested_str_weak(send_response_frame), + /* K41 */ be_nested_str_weak(RESPONSE_X20SENT), }), - be_str_weak(find_sendqueue_by_exchangeid), + be_str_weak(process_invoke_request_solo), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x58080000, // 0005 LDCONST R2 K0 - 0x600C000C, // 0006 GETGBL R3 G12 - 0x88100101, // 0007 GETMBR R4 R0 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x140C0403, // 0009 LT R3 R2 R3 - 0x780E0008, // 000A JMPF R3 #0014 - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x8C100702, // 000D GETMET R4 R3 K2 - 0x7C100200, // 000E CALL R4 1 - 0x1C100801, // 000F EQ R4 R4 R1 - 0x78120000, // 0010 JMPF R4 #0012 - 0x80040600, // 0011 RET 1 R3 - 0x00080503, // 0012 ADD R2 R2 K3 - 0x7001FFF1, // 0013 JMP #0006 - 0x4C0C0000, // 0014 LDNIL R3 - 0x80040600, // 0015 RET 1 R3 + ( &(const binstruction[203]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x880C0701, // 0001 GETMBR R3 R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0x900A0801, // 0005 SETMBR R2 K4 R1 + 0xB80E0000, // 0006 GETNGBL R3 K0 + 0x880C0706, // 0007 GETMBR R3 R3 K6 + 0x900A0A03, // 0008 SETMBR R2 K5 R3 + 0xB80E0000, // 0009 GETNGBL R3 K0 + 0x8C0C0707, // 000A GETMET R3 R3 K7 + 0x88140508, // 000B GETMBR R5 R2 K8 + 0x88180509, // 000C GETMBR R6 R2 K9 + 0x7C0C0600, // 000D CALL R3 3 + 0x60100008, // 000E GETGBL R4 G8 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C100200, // 0010 CALL R4 1 + 0x8814010A, // 0011 GETMBR R5 R0 K10 + 0x8C140B0B, // 0012 GETMET R5 R5 K11 + 0x881C030C, // 0013 GETMBR R7 R1 K12 + 0x8820050D, // 0014 GETMBR R8 R2 K13 + 0x5C240400, // 0015 MOVE R9 R2 + 0x7C140800, // 0016 CALL R5 4 + 0xB81A0000, // 0017 GETNGBL R6 K0 + 0x88180D01, // 0018 GETMBR R6 R6 K1 + 0x8C180D02, // 0019 GETMET R6 R6 K2 + 0x5820000E, // 001A LDCONST R8 K14 + 0x7C180400, // 001B CALL R6 2 + 0x88180502, // 001C GETMBR R6 R2 K2 + 0x4C1C0000, // 001D LDNIL R7 + 0x20180C07, // 001E NE R6 R6 R7 + 0x781A0005, // 001F JMPF R6 #0026 + 0x60180008, // 0020 GETGBL R6 G8 + 0x881C0502, // 0021 GETMBR R7 R2 K2 + 0x7C180200, // 0022 CALL R6 1 + 0x001A1E06, // 0023 ADD R6 K15 R6 + 0x00180D10, // 0024 ADD R6 R6 K16 + 0x70020000, // 0025 JMP #0027 + 0x58180011, // 0026 LDCONST R6 K17 + 0xB81E2400, // 0027 GETNGBL R7 K18 + 0x8C1C0F13, // 0028 GETMET R7 R7 K19 + 0x58240014, // 0029 LDCONST R9 K20 + 0x7C1C0400, // 002A CALL R7 2 + 0x781E000D, // 002B JMPF R7 #003A + 0xB81E0400, // 002C GETNGBL R7 K2 + 0x60200018, // 002D GETGBL R8 G24 + 0x58240015, // 002E LDCONST R9 K21 + 0x8828030C, // 002F GETMBR R10 R1 K12 + 0x88281516, // 0030 GETMBR R10 R10 K22 + 0x5C2C0800, // 0031 MOVE R11 R4 + 0x780E0001, // 0032 JMPF R3 #0035 + 0x5C300600, // 0033 MOVE R12 R3 + 0x70020000, // 0034 JMP #0036 + 0x58300011, // 0035 LDCONST R12 K17 + 0x5C340C00, // 0036 MOVE R13 R6 + 0x7C200A00, // 0037 CALL R8 5 + 0x58240014, // 0038 LDCONST R9 K20 + 0x7C1C0400, // 0039 CALL R7 2 + 0x4C1C0000, // 003A LDNIL R7 + 0x900A0407, // 003B SETMBR R2 K2 R7 + 0x601C0015, // 003C GETGBL R7 G21 + 0x5422002F, // 003D LDINT R8 48 + 0x7C1C0200, // 003E CALL R7 1 + 0x8C200F17, // 003F GETMET R8 R7 K23 + 0x58280018, // 0040 LDCONST R10 K24 + 0x542DFFFB, // 0041 LDINT R11 -4 + 0x7C200600, // 0042 CALL R8 3 + 0x8C200F17, // 0043 GETMET R8 R7 K23 + 0x58280019, // 0044 LDCONST R10 K25 + 0x582C0019, // 0045 LDCONST R11 K25 + 0x7C200600, // 0046 CALL R8 3 + 0x50200200, // 0047 LDBOOL R8 1 0 + 0x1C200A08, // 0048 EQ R8 R5 R8 + 0x74220004, // 0049 JMPT R8 #004F + 0x88200505, // 004A GETMBR R8 R2 K5 + 0xB8260000, // 004B GETNGBL R9 K0 + 0x8824131A, // 004C GETMBR R9 R9 K26 + 0x1C201009, // 004D EQ R8 R8 R9 + 0x78220016, // 004E JMPF R8 #0066 + 0xB8220000, // 004F GETNGBL R8 K0 + 0x8820111A, // 0050 GETMBR R8 R8 K26 + 0x900A0A08, // 0051 SETMBR R2 K5 R8 + 0x8C20011B, // 0052 GETMET R8 R0 K27 + 0x5C280E00, // 0053 MOVE R10 R7 + 0x5C2C0400, // 0054 MOVE R11 R2 + 0x4C300000, // 0055 LDNIL R12 + 0x7C200800, // 0056 CALL R8 4 + 0xB8222400, // 0057 GETNGBL R8 K18 + 0x8C201113, // 0058 GETMET R8 R8 K19 + 0x58280014, // 0059 LDCONST R10 K20 + 0x7C200400, // 005A CALL R8 2 + 0x78220008, // 005B JMPF R8 #0065 + 0xB8220400, // 005C GETNGBL R8 K2 + 0x60240018, // 005D GETGBL R9 G24 + 0x5828001C, // 005E LDCONST R10 K28 + 0x882C030C, // 005F GETMBR R11 R1 K12 + 0x882C1716, // 0060 GETMBR R11 R11 K22 + 0x8830031D, // 0061 GETMBR R12 R1 K29 + 0x7C240600, // 0062 CALL R9 3 + 0x58280014, // 0063 LDCONST R10 K20 + 0x7C200400, // 0064 CALL R8 2 + 0x70020043, // 0065 JMP #00AA + 0x4C200000, // 0066 LDNIL R8 + 0x20200A08, // 0067 NE R8 R5 R8 + 0x78220017, // 0068 JMPF R8 #0081 + 0x8C20011B, // 0069 GETMET R8 R0 K27 + 0x5C280E00, // 006A MOVE R10 R7 + 0x5C2C0400, // 006B MOVE R11 R2 + 0x5C300A00, // 006C MOVE R12 R5 + 0x7C200800, // 006D CALL R8 4 + 0x5C200600, // 006E MOVE R8 R3 + 0x74220000, // 006F JMPT R8 #0071 + 0x580C0011, // 0070 LDCONST R3 K17 + 0xB8222400, // 0071 GETNGBL R8 K18 + 0x8C201113, // 0072 GETMET R8 R8 K19 + 0x58280014, // 0073 LDCONST R10 K20 + 0x7C200400, // 0074 CALL R8 2 + 0x78220009, // 0075 JMPF R8 #0080 + 0xB8220400, // 0076 GETNGBL R8 K2 + 0x60240018, // 0077 GETGBL R9 G24 + 0x5828001E, // 0078 LDCONST R10 K30 + 0x882C030C, // 0079 GETMBR R11 R1 K12 + 0x882C1716, // 007A GETMBR R11 R11 K22 + 0x5C300400, // 007B MOVE R12 R2 + 0x5C340600, // 007C MOVE R13 R3 + 0x7C240800, // 007D CALL R9 4 + 0x58280014, // 007E LDCONST R10 K20 + 0x7C200400, // 007F CALL R8 2 + 0x70020028, // 0080 JMP #00AA + 0x88200505, // 0081 GETMBR R8 R2 K5 + 0x4C240000, // 0082 LDNIL R9 + 0x20201009, // 0083 NE R8 R8 R9 + 0x78220014, // 0084 JMPF R8 #009A + 0x8C20011B, // 0085 GETMET R8 R0 K27 + 0x5C280E00, // 0086 MOVE R10 R7 + 0x5C2C0400, // 0087 MOVE R11 R2 + 0x4C300000, // 0088 LDNIL R12 + 0x7C200800, // 0089 CALL R8 4 + 0xB8222400, // 008A GETNGBL R8 K18 + 0x8C201113, // 008B GETMET R8 R8 K19 + 0x58280014, // 008C LDCONST R10 K20 + 0x7C200400, // 008D CALL R8 2 + 0x78220009, // 008E JMPF R8 #0099 + 0xB8220400, // 008F GETNGBL R8 K2 + 0x60240018, // 0090 GETGBL R9 G24 + 0x5828001F, // 0091 LDCONST R10 K31 + 0x882C030C, // 0092 GETMBR R11 R1 K12 + 0x882C1716, // 0093 GETMBR R11 R11 K22 + 0x88300505, // 0094 GETMBR R12 R2 K5 + 0x8834031D, // 0095 GETMBR R13 R1 K29 + 0x7C240800, // 0096 CALL R9 4 + 0x58280014, // 0097 LDCONST R10 K20 + 0x7C200400, // 0098 CALL R8 2 + 0x7002000F, // 0099 JMP #00AA + 0xB8222400, // 009A GETNGBL R8 K18 + 0x8C201113, // 009B GETMET R8 R8 K19 + 0x58280014, // 009C LDCONST R10 K20 + 0x7C200400, // 009D CALL R8 2 + 0x78220008, // 009E JMPF R8 #00A8 + 0xB8220400, // 009F GETNGBL R8 K2 + 0x60240018, // 00A0 GETGBL R9 G24 + 0x58280020, // 00A1 LDCONST R10 K32 + 0x882C030C, // 00A2 GETMBR R11 R1 K12 + 0x882C1716, // 00A3 GETMBR R11 R11 K22 + 0x8830031D, // 00A4 GETMBR R12 R1 K29 + 0x7C240600, // 00A5 CALL R9 3 + 0x58280014, // 00A6 LDCONST R10 K20 + 0x7C200400, // 00A7 CALL R8 2 + 0x50200000, // 00A8 LDBOOL R8 0 0 + 0x80041000, // 00A9 RET 1 R8 + 0x8C200F17, // 00AA GETMET R8 R7 K23 + 0x58280021, // 00AB LDCONST R10 K33 + 0x542DFFFB, // 00AC LDINT R11 -4 + 0x7C200600, // 00AD CALL R8 3 + 0x8C200F17, // 00AE GETMET R8 R7 K23 + 0x542A0017, // 00AF LDINT R10 24 + 0x582C0019, // 00B0 LDCONST R11 K25 + 0x7C200600, // 00B1 CALL R8 3 + 0x8C200322, // 00B2 GETMET R8 R1 K34 + 0x542A0008, // 00B3 LDINT R10 9 + 0x502C0200, // 00B4 LDBOOL R11 1 0 + 0x7C200600, // 00B5 CALL R8 3 + 0x8824010A, // 00B6 GETMBR R9 R0 K10 + 0x88241323, // 00B7 GETMBR R9 R9 K35 + 0x88280324, // 00B8 GETMBR R10 R1 K36 + 0x8C2C1525, // 00B9 GETMET R11 R10 K37 + 0x7C2C0200, // 00BA CALL R11 1 + 0x8C2C1126, // 00BB GETMET R11 R8 K38 + 0x5C340E00, // 00BC MOVE R13 R7 + 0x5C381400, // 00BD MOVE R14 R10 + 0x7C2C0600, // 00BE CALL R11 3 + 0x8C2C1127, // 00BF GETMET R11 R8 K39 + 0x7C2C0200, // 00C0 CALL R11 1 + 0x8C2C1328, // 00C1 GETMET R11 R9 K40 + 0x5C341000, // 00C2 MOVE R13 R8 + 0x7C2C0400, // 00C3 CALL R11 2 + 0xB82E0000, // 00C4 GETNGBL R11 K0 + 0x882C1701, // 00C5 GETMBR R11 R11 K1 + 0x8C2C1702, // 00C6 GETMET R11 R11 K2 + 0x58340029, // 00C7 LDCONST R13 K41 + 0x7C2C0400, // 00C8 CALL R11 2 + 0x502C0200, // 00C9 LDBOOL R11 1 0 + 0x80041600, // 00CA RET 1 R11 }) ) ); @@ -3060,7 +2834,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /* K13 */ be_nested_str_weak(is_list), /* K14 */ be_nested_str_weak(is_array), /* K15 */ be_nested_str_weak(encode_len), - /* K16 */ be_nested_str_weak(IM_ReportData), + /* K16 */ be_nested_str_weak(IM_ReportData_Pull), /* K17 */ be_nested_str_weak(MAX_MESSAGE), /* K18 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), /* K19 */ be_const_int(3), @@ -3068,7 +2842,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /* K21 */ be_nested_str_weak(parse), /* K22 */ be_nested_str_weak(raw), /* K23 */ be_nested_str_weak(app_payload_idx), - /* K24 */ be_nested_str_weak(process_read_request), + /* K24 */ be_nested_str_weak(process_read_request_pull), /* K25 */ be_nested_str_weak(add), /* K26 */ be_const_int(1), /* K27 */ be_nested_str_weak(attributedata2raw), @@ -3362,198 +3136,12 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /******************************************************************** -** Solidified function: send_enqueued +** Solidified function: process_read_request_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_enqueued, /* name */ +be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(finish), - /* K3 */ be_nested_str_weak(ready), - /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), - /* K7 */ be_nested_str_weak(resp), - /* K8 */ be_nested_str_weak(exchange_id), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_const_int(1), - }), - be_str_weak(send_enqueued), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0019, // 0005 JMPF R3 #0020 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x74120004, // 0009 JMPT R4 #000F - 0x88100703, // 000A GETMBR R4 R3 K3 - 0x78120002, // 000B JMPF R4 #000F - 0x8C100704, // 000C GETMET R4 R3 K4 - 0x5C180200, // 000D MOVE R6 R1 - 0x7C100400, // 000E CALL R4 2 - 0x88100702, // 000F GETMBR R4 R3 K2 - 0x7812000C, // 0010 JMPF R4 #001E - 0xB8120A00, // 0011 GETNGBL R4 K5 - 0x60140008, // 0012 GETGBL R5 G8 - 0x88180707, // 0013 GETMBR R6 R3 K7 - 0x88180D08, // 0014 GETMBR R6 R6 K8 - 0x7C140200, // 0015 CALL R5 1 - 0x00160C05, // 0016 ADD R5 K6 R5 - 0x541A0003, // 0017 LDINT R6 4 - 0x7C100400, // 0018 CALL R4 2 - 0x88100101, // 0019 GETMBR R4 R0 K1 - 0x8C100909, // 001A GETMET R4 R4 K9 - 0x5C180400, // 001B MOVE R6 R2 - 0x7C100400, // 001C CALL R4 2 - 0x70020000, // 001D JMP #001F - 0x0008050A, // 001E ADD R2 R2 K10 - 0x7001FFE0, // 001F JMP #0001 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(subs_shop), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(IM_Subscription_Shop), - /* K5 */ be_nested_str_weak(read_request_solo), - /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), - /* K9 */ be_nested_str_weak(tlv_solo), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(Matter_TLV_item), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0xB80A0600, // 0004 GETNGBL R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0xB80A0600, // 0009 GETNGBL R2 K3 - 0x8C080506, // 000A GETMET R2 R2 K6 - 0x7C080200, // 000B CALL R2 1 - 0x90020A02, // 000C SETMBR R0 K5 R2 - 0xB80A0600, // 000D GETNGBL R2 K3 - 0x8C080508, // 000E GETMET R2 R2 K8 - 0x7C080200, // 000F CALL R2 1 - 0x90020E02, // 0010 SETMBR R0 K7 R2 - 0xB80A0600, // 0011 GETNGBL R2 K3 - 0x8808050A, // 0012 GETMBR R2 R2 K10 - 0x8C08050B, // 0013 GETMET R2 R2 K11 - 0x7C080200, // 0014 CALL R2 1 - 0x90021202, // 0015 SETMBR R0 K9 R2 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expire_sendqueue -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(time_reached), - /* K4 */ be_nested_str_weak(expiration), - /* K5 */ be_nested_str_weak(reached_timeout), - /* K6 */ be_nested_str_weak(remove), - /* K7 */ be_const_int(1), - }), - be_str_weak(expire_sendqueue), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14080202, // 0004 LT R2 R1 R2 - 0x780A000F, // 0005 JMPF R2 #0016 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x94080401, // 0007 GETIDX R2 R2 R1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0703, // 0009 GETMET R3 R3 K3 - 0x88140504, // 000A GETMBR R5 R2 K4 - 0x7C0C0400, // 000B CALL R3 2 - 0x780E0006, // 000C JMPF R3 #0014 - 0x8C0C0505, // 000D GETMET R3 R2 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x8C0C0706, // 0010 GETMET R3 R3 K6 - 0x5C140200, // 0011 MOVE R5 R1 - 0x7C0C0400, // 0012 CALL R3 2 - 0x70020000, // 0013 JMP #0015 - 0x00040307, // 0014 ADD R1 R1 K7 - 0x7001FFEA, // 0015 JMP #0001 - 0x4C080000, // 0016 LDNIL R2 - 0x80040400, // 0017 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_subscribe_request, /* name */ - be_nested_proto( - 20, /* nstack */ + 9, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3561,146 +3149,40 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(SubscribeRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(keep_subscriptions), - /* K4 */ be_nested_str_weak(subs_shop), - /* K5 */ be_nested_str_weak(remove_by_session), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(new_subscription), - /* K8 */ be_nested_str_weak(Path), - /* K9 */ be_nested_str_weak(msg), - /* K10 */ be_nested_str_weak(attributes_requests), - /* K11 */ be_nested_str_weak(endpoint), - /* K12 */ be_nested_str_weak(cluster), - /* K13 */ be_nested_str_weak(attribute), - /* K14 */ be_nested_str_weak(push), - /* K15 */ be_nested_str_weak(stop_iteration), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s_X20attr_req_X3D_X25s_X20event_req_X3D_X25s), - /* K18 */ be_nested_str_weak(local_session_id), - /* K19 */ be_nested_str_weak(concat), - /* K20 */ be_nested_str_weak(_X20), - /* K21 */ be_nested_str_weak(min_interval), - /* K22 */ be_nested_str_weak(max_interval), - /* K23 */ be_const_int(1), - /* K24 */ be_const_int(0), - /* K25 */ be_nested_str_weak(subscription_id), - /* K26 */ be_nested_str_weak(fabric_filtered), - /* K27 */ be_nested_str_weak(_X2D), - /* K28 */ be_nested_str_weak(event_requests), - /* K29 */ be_const_int(3), - /* K30 */ be_nested_str_weak(_inner_process_read_request), - /* K31 */ be_nested_str_weak(device), - /* K32 */ be_nested_str_weak(debug), - /* K33 */ be_nested_str_weak(send_subscribe_response), + /* K1 */ be_nested_str_weak(profiler), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(read_request_start_pull), + /* K4 */ be_nested_str_weak(ReadRequestMessage), + /* K5 */ be_nested_str_weak(from_TLV), + /* K6 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K7 */ be_nested_str_weak(send_report_data_pull), }), - be_str_weak(subscribe_request), + be_str_weak(process_read_request_pull), &be_const_str_solidified, - ( &(const binstruction[101]) { /* code */ + ( &(const binstruction[21]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x88100703, // 0006 GETMBR R4 R3 K3 - 0x74120003, // 0007 JMPT R4 #000C - 0x88100104, // 0008 GETMBR R4 R0 K4 - 0x8C100905, // 0009 GETMET R4 R4 K5 - 0x88180306, // 000A GETMBR R6 R1 K6 - 0x7C100400, // 000B CALL R4 2 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x8C100907, // 000D GETMET R4 R4 K7 - 0x88180306, // 000E GETMBR R6 R1 K6 - 0x5C1C0600, // 000F MOVE R7 R3 - 0x7C100600, // 0010 CALL R4 3 - 0x60140012, // 0011 GETGBL R5 G18 - 0x7C140000, // 0012 CALL R5 0 - 0xB81A0000, // 0013 GETNGBL R6 K0 - 0x8C180D08, // 0014 GETMET R6 R6 K8 - 0x7C180200, // 0015 CALL R6 1 - 0x901A1201, // 0016 SETMBR R6 K9 R1 - 0x601C0010, // 0017 GETGBL R7 G16 - 0x8820070A, // 0018 GETMBR R8 R3 K10 - 0x7C1C0200, // 0019 CALL R7 1 - 0xA802000D, // 001A EXBLK 0 #0029 - 0x5C200E00, // 001B MOVE R8 R7 - 0x7C200000, // 001C CALL R8 0 - 0x8824110B, // 001D GETMBR R9 R8 K11 - 0x901A1609, // 001E SETMBR R6 K11 R9 - 0x8824110C, // 001F GETMBR R9 R8 K12 - 0x901A1809, // 0020 SETMBR R6 K12 R9 - 0x8824110D, // 0021 GETMBR R9 R8 K13 - 0x901A1A09, // 0022 SETMBR R6 K13 R9 - 0x8C240B0E, // 0023 GETMET R9 R5 K14 - 0x602C0008, // 0024 GETGBL R11 G8 - 0x5C300C00, // 0025 MOVE R12 R6 - 0x7C2C0200, // 0026 CALL R11 1 - 0x7C240400, // 0027 CALL R9 2 - 0x7001FFF1, // 0028 JMP #001B - 0x581C000F, // 0029 LDCONST R7 K15 - 0xAC1C0200, // 002A CATCH R7 1 0 - 0xB0080000, // 002B RAISE 2 R0 R0 - 0xB81E2000, // 002C GETNGBL R7 K16 - 0x60200018, // 002D GETGBL R8 G24 - 0x58240011, // 002E LDCONST R9 K17 - 0x88280306, // 002F GETMBR R10 R1 K6 - 0x88281512, // 0030 GETMBR R10 R10 K18 - 0x8C2C0B13, // 0031 GETMET R11 R5 K19 - 0x58340014, // 0032 LDCONST R13 K20 - 0x7C2C0400, // 0033 CALL R11 2 - 0x88300915, // 0034 GETMBR R12 R4 K21 - 0x88340916, // 0035 GETMBR R13 R4 K22 - 0x88380703, // 0036 GETMBR R14 R3 K3 - 0x783A0001, // 0037 JMPF R14 #003A - 0x58380017, // 0038 LDCONST R14 K23 - 0x70020000, // 0039 JMP #003B - 0x58380018, // 003A LDCONST R14 K24 - 0x883C0919, // 003B GETMBR R15 R4 K25 - 0x8840071A, // 003C GETMBR R16 R3 K26 - 0x8844070A, // 003D GETMBR R17 R3 K10 - 0x4C480000, // 003E LDNIL R18 - 0x20442212, // 003F NE R17 R17 R18 - 0x78460003, // 0040 JMPF R17 #0045 - 0x6044000C, // 0041 GETGBL R17 G12 - 0x8848070A, // 0042 GETMBR R18 R3 K10 - 0x7C440200, // 0043 CALL R17 1 - 0x70020000, // 0044 JMP #0046 - 0x5844001B, // 0045 LDCONST R17 K27 - 0x8848071C, // 0046 GETMBR R18 R3 K28 - 0x4C4C0000, // 0047 LDNIL R19 - 0x20482413, // 0048 NE R18 R18 R19 - 0x784A0003, // 0049 JMPF R18 #004E - 0x6048000C, // 004A GETGBL R18 G12 - 0x884C071C, // 004B GETMBR R19 R3 K28 - 0x7C480200, // 004C CALL R18 1 - 0x70020000, // 004D JMP #004F - 0x5848001B, // 004E LDCONST R18 K27 - 0x7C201400, // 004F CALL R8 10 - 0x5824001D, // 0050 LDCONST R9 K29 - 0x7C1C0400, // 0051 CALL R7 2 - 0x8C1C011E, // 0052 GETMET R7 R0 K30 - 0x88240306, // 0053 GETMBR R9 R1 K6 - 0x5C280600, // 0054 MOVE R10 R3 - 0x5C2C0200, // 0055 MOVE R11 R1 - 0x8830011F, // 0056 GETMBR R12 R0 K31 - 0x88301920, // 0057 GETMBR R12 R12 K32 - 0x78320000, // 0058 JMPF R12 #005A - 0x50300001, // 0059 LDBOOL R12 0 1 - 0x50300200, // 005A LDBOOL R12 1 0 - 0x7C1C0A00, // 005B CALL R7 5 - 0x88200919, // 005C GETMBR R8 R4 K25 - 0x901E3208, // 005D SETMBR R7 K25 R8 - 0x8C200121, // 005E GETMET R8 R0 K33 - 0x5C280200, // 005F MOVE R10 R1 - 0x5C2C0E00, // 0060 MOVE R11 R7 - 0x5C300800, // 0061 MOVE R12 R4 - 0x7C200800, // 0062 CALL R8 4 - 0x50200200, // 0063 LDBOOL R8 1 0 - 0x80041000, // 0064 RET 1 R8 + 0x880C0701, // 0001 GETMBR R3 R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0xB80E0000, // 0005 GETNGBL R3 K0 + 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0705, // 0008 GETMET R3 R3 K5 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C100106, // 000B GETMET R4 R0 K6 + 0x5C180600, // 000C MOVE R6 R3 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C100600, // 000E CALL R4 3 + 0x8C140107, // 000F GETMET R5 R0 K7 + 0x5C1C0200, // 0010 MOVE R7 R1 + 0x5C200800, // 0011 MOVE R8 R4 + 0x7C140600, // 0012 CALL R5 3 + 0x50140200, // 0013 LDBOOL R5 1 0 + 0x80040A00, // 0014 RET 1 R5 }) ) ); @@ -3708,72 +3190,252 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /******************************************************************** -** Solidified function: send_subscribe_heartbeat +** Solidified function: invokeresponse2raw ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ +be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ be_nested_proto( - 10, /* nstack */ - 2, /* argc */ + 9, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_nested_str_weak(subscription_id), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(is_keep_alive), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(command), + /* K6 */ be_nested_str_weak(status), /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(ReportDataMessage), - /* K9 */ be_nested_str_weak(suppress_response), - /* K10 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K11 */ be_nested_str_weak(_message_handler), - /* K12 */ be_nested_str_weak(send_queue), - /* K13 */ be_nested_str_weak(push), - /* K14 */ be_nested_str_weak(send_enqueued), + /* K8 */ be_nested_str_weak(SUCCESS), + /* K9 */ be_nested_str_weak(tag_sub), + /* K10 */ be_nested_str_weak(tlv2raw), }), - be_str_weak(send_subscribe_heartbeat), + be_str_weak(invokeresponse2raw), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x60100018, // 0002 GETGBL R4 G24 - 0x58140002, // 0003 LDCONST R5 K2 - 0x88180503, // 0004 GETMBR R6 R2 K3 - 0x881C0304, // 0005 GETMBR R7 R1 K4 - 0x7C100600, // 0006 CALL R4 3 - 0x58140005, // 0007 LDCONST R5 K5 - 0x7C0C0400, // 0008 CALL R3 2 - 0x500C0200, // 0009 LDBOOL R3 1 0 - 0x90060C03, // 000A SETMBR R1 K6 R3 - 0xB80E0E00, // 000B GETNGBL R3 K7 - 0x8C0C0708, // 000C GETMET R3 R3 K8 - 0x7C0C0200, // 000D CALL R3 1 - 0x50100200, // 000E LDBOOL R4 1 0 - 0x900E1204, // 000F SETMBR R3 K9 R4 - 0x88100304, // 0010 GETMBR R4 R1 K4 - 0x900E0804, // 0011 SETMBR R3 K4 R4 - 0xB8120E00, // 0012 GETNGBL R4 K7 - 0x8C10090A, // 0013 GETMET R4 R4 K10 - 0x8818050B, // 0014 GETMBR R6 R2 K11 - 0x5C1C0400, // 0015 MOVE R7 R2 - 0x5C200600, // 0016 MOVE R8 R3 - 0x5C240200, // 0017 MOVE R9 R1 - 0x7C100A00, // 0018 CALL R4 5 - 0x8814010C, // 0019 GETMBR R5 R0 K12 - 0x8C140B0D, // 001A GETMET R5 R5 K13 - 0x5C1C0800, // 001B MOVE R7 R4 - 0x7C140400, // 001C CALL R5 2 - 0x8C14010E, // 001D GETMET R5 R0 K14 - 0x881C050B, // 001E GETMBR R7 R2 K11 - 0x7C140400, // 001F CALL R5 2 - 0x80000000, // 0020 RET 0 + ( &(const binstruction[148]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x541A0014, // 0001 LDINT R6 21 + 0x581C0001, // 0002 LDCONST R7 K1 + 0x7C100600, // 0003 CALL R4 3 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120004, // 0006 JMPF R4 #000C + 0x8C100300, // 0007 GETMET R4 R1 K0 + 0x541A3500, // 0008 LDINT R6 13569 + 0x541DFFFD, // 0009 LDINT R7 -2 + 0x7C100600, // 000A CALL R4 3 + 0x70020003, // 000B JMP #0010 + 0x8C100300, // 000C GETMET R4 R1 K0 + 0x541A34FF, // 000D LDINT R6 13568 + 0x541DFFFD, // 000E LDINT R7 -2 + 0x7C100600, // 000F CALL R4 3 + 0x8C100300, // 0010 GETMET R4 R1 K0 + 0x541A36FF, // 0011 LDINT R6 14080 + 0x541DFFFD, // 0012 LDINT R7 -2 + 0x7C100600, // 0013 CALL R4 3 + 0x88100502, // 0014 GETMBR R4 R2 K2 + 0x541600FE, // 0015 LDINT R5 255 + 0x18100805, // 0016 LE R4 R4 R5 + 0x78120008, // 0017 JMPF R4 #0021 + 0x8C100300, // 0018 GETMET R4 R1 K0 + 0x541A23FF, // 0019 LDINT R6 9216 + 0x541DFFFD, // 001A LDINT R7 -2 + 0x7C100600, // 001B CALL R4 3 + 0x8C100300, // 001C GETMET R4 R1 K0 + 0x88180502, // 001D GETMBR R6 R2 K2 + 0x581C0001, // 001E LDCONST R7 K1 + 0x7C100600, // 001F CALL R4 3 + 0x70020007, // 0020 JMP #0029 + 0x8C100300, // 0021 GETMET R4 R1 K0 + 0x541A24FF, // 0022 LDINT R6 9472 + 0x541DFFFD, // 0023 LDINT R7 -2 + 0x7C100600, // 0024 CALL R4 3 + 0x8C100300, // 0025 GETMET R4 R1 K0 + 0x88180502, // 0026 GETMBR R6 R2 K2 + 0x581C0003, // 0027 LDCONST R7 K3 + 0x7C100600, // 0028 CALL R4 3 + 0x88100504, // 0029 GETMBR R4 R2 K4 + 0x541600FE, // 002A LDINT R5 255 + 0x18100805, // 002B LE R4 R4 R5 + 0x78120008, // 002C JMPF R4 #0036 + 0x8C100300, // 002D GETMET R4 R1 K0 + 0x541A2400, // 002E LDINT R6 9217 + 0x541DFFFD, // 002F LDINT R7 -2 + 0x7C100600, // 0030 CALL R4 3 + 0x8C100300, // 0031 GETMET R4 R1 K0 + 0x88180504, // 0032 GETMBR R6 R2 K4 + 0x581C0001, // 0033 LDCONST R7 K1 + 0x7C100600, // 0034 CALL R4 3 + 0x70020014, // 0035 JMP #004B + 0x88100504, // 0036 GETMBR R4 R2 K4 + 0x5416FFFE, // 0037 LDINT R5 65535 + 0x18100805, // 0038 LE R4 R4 R5 + 0x78120008, // 0039 JMPF R4 #0043 + 0x8C100300, // 003A GETMET R4 R1 K0 + 0x541A2500, // 003B LDINT R6 9473 + 0x541DFFFD, // 003C LDINT R7 -2 + 0x7C100600, // 003D CALL R4 3 + 0x8C100300, // 003E GETMET R4 R1 K0 + 0x88180504, // 003F GETMBR R6 R2 K4 + 0x581C0003, // 0040 LDCONST R7 K3 + 0x7C100600, // 0041 CALL R4 3 + 0x70020007, // 0042 JMP #004B + 0x8C100300, // 0043 GETMET R4 R1 K0 + 0x541A2600, // 0044 LDINT R6 9729 + 0x541DFFFD, // 0045 LDINT R7 -2 + 0x7C100600, // 0046 CALL R4 3 + 0x8C100300, // 0047 GETMET R4 R1 K0 + 0x88180504, // 0048 GETMBR R6 R2 K4 + 0x541E0003, // 0049 LDINT R7 4 + 0x7C100600, // 004A CALL R4 3 + 0x88100505, // 004B GETMBR R4 R2 K5 + 0x541600FE, // 004C LDINT R5 255 + 0x18100805, // 004D LE R4 R4 R5 + 0x78120008, // 004E JMPF R4 #0058 + 0x8C100300, // 004F GETMET R4 R1 K0 + 0x541A2401, // 0050 LDINT R6 9218 + 0x541DFFFD, // 0051 LDINT R7 -2 + 0x7C100600, // 0052 CALL R4 3 + 0x8C100300, // 0053 GETMET R4 R1 K0 + 0x88180505, // 0054 GETMBR R6 R2 K5 + 0x581C0001, // 0055 LDCONST R7 K1 + 0x7C100600, // 0056 CALL R4 3 + 0x70020014, // 0057 JMP #006D + 0x88100505, // 0058 GETMBR R4 R2 K5 + 0x5416FFFE, // 0059 LDINT R5 65535 + 0x18100805, // 005A LE R4 R4 R5 + 0x78120008, // 005B JMPF R4 #0065 + 0x8C100300, // 005C GETMET R4 R1 K0 + 0x541A2501, // 005D LDINT R6 9474 + 0x541DFFFD, // 005E LDINT R7 -2 + 0x7C100600, // 005F CALL R4 3 + 0x8C100300, // 0060 GETMET R4 R1 K0 + 0x88180505, // 0061 GETMBR R6 R2 K5 + 0x581C0003, // 0062 LDCONST R7 K3 + 0x7C100600, // 0063 CALL R4 3 + 0x70020007, // 0064 JMP #006D + 0x8C100300, // 0065 GETMET R4 R1 K0 + 0x541A2601, // 0066 LDINT R6 9730 + 0x541DFFFD, // 0067 LDINT R7 -2 + 0x7C100600, // 0068 CALL R4 3 + 0x8C100300, // 0069 GETMET R4 R1 K0 + 0x88180505, // 006A GETMBR R6 R2 K5 + 0x541E0003, // 006B LDINT R7 4 + 0x7C100600, // 006C CALL R4 3 + 0x8C100300, // 006D GETMET R4 R1 K0 + 0x541A0017, // 006E LDINT R6 24 + 0x581C0001, // 006F LDCONST R7 K1 + 0x7C100600, // 0070 CALL R4 3 + 0x4C100000, // 0071 LDNIL R4 + 0x1C100604, // 0072 EQ R4 R3 R4 + 0x78120016, // 0073 JMPF R4 #008B + 0x88100506, // 0074 GETMBR R4 R2 K6 + 0x4C140000, // 0075 LDNIL R5 + 0x1C140805, // 0076 EQ R5 R4 R5 + 0x78160001, // 0077 JMPF R5 #007A + 0xB8160E00, // 0078 GETNGBL R5 K7 + 0x88100B08, // 0079 GETMBR R4 R5 K8 + 0x8C140300, // 007A GETMET R5 R1 K0 + 0x541E3500, // 007B LDINT R7 13569 + 0x5421FFFD, // 007C LDINT R8 -2 + 0x7C140600, // 007D CALL R5 3 + 0x8C140300, // 007E GETMET R5 R1 K0 + 0x541E23FF, // 007F LDINT R7 9216 + 0x5421FFFD, // 0080 LDINT R8 -2 + 0x7C140600, // 0081 CALL R5 3 + 0x8C140300, // 0082 GETMET R5 R1 K0 + 0x881C0506, // 0083 GETMBR R7 R2 K6 + 0x58200001, // 0084 LDCONST R8 K1 + 0x7C140600, // 0085 CALL R5 3 + 0x8C140300, // 0086 GETMET R5 R1 K0 + 0x541E0017, // 0087 LDINT R7 24 + 0x58200001, // 0088 LDCONST R8 K1 + 0x7C140600, // 0089 CALL R5 3 + 0x70020003, // 008A JMP #008F + 0x900E1301, // 008B SETMBR R3 K9 K1 + 0x8C10070A, // 008C GETMET R4 R3 K10 + 0x5C180200, // 008D MOVE R6 R1 + 0x7C100400, // 008E CALL R4 2 + 0x8C100300, // 008F GETMET R4 R1 K0 + 0x541A1817, // 0090 LDINT R6 6168 + 0x541DFFFD, // 0091 LDINT R7 -2 + 0x7C100600, // 0092 CALL R4 3 + 0x80000000, // 0093 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_invoke_response +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_invoke_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(send_queue), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(IM_InvokeResponse), + }), + be_str_weak(send_invoke_response), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C140600, // 0006 CALL R5 3 + 0x7C0C0400, // 0007 CALL R3 2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_every_250ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(subs_shop), + /* K1 */ be_nested_str_weak(every_250ms), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 }) ) ); @@ -3786,48 +3448,47 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ be_local_class(Matter_IM, 6, NULL, - be_nested_map(40, + be_nested_map(39, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_IM_every_250ms_closure) }, - { be_const_key_weak(process_incoming_ack, -1), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, - { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, - { be_const_key_weak(subscribe_response, -1), be_const_closure(class_Matter_IM_subscribe_response_closure) }, - { be_const_key_weak(process_write_response, -1), be_const_closure(class_Matter_IM_process_write_response_closure) }, - { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, - { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, - { be_const_key_weak(attributedata2raw, 12), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, - { be_const_key_weak(subscribe_request, 37), be_const_closure(class_Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) }, - { be_const_key_weak(invokeresponse2raw, 2), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, - { be_const_key_weak(read_request_solo, 38), be_const_var(3) }, - { be_const_key_weak(process_incoming, -1), be_const_closure(class_Matter_IM_process_incoming_closure) }, - { be_const_key_weak(process_invoke_request_solo, 8), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, - { be_const_key_weak(send_invoke_response, -1), be_const_closure(class_Matter_IM_send_invoke_response_closure) }, - { be_const_key_weak(send_write_response, 6), be_const_closure(class_Matter_IM_send_write_response_closure) }, - { be_const_key_weak(process_write_request, -1), be_const_closure(class_Matter_IM_process_write_request_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) }, - { be_const_key_weak(path2raw, -1), be_const_closure(class_Matter_IM_path2raw_closure) }, { be_const_key_weak(invoke_request_solo, -1), be_const_var(4) }, - { be_const_key_weak(_inner_process_read_request, -1), be_const_closure(class_Matter_IM__inner_process_read_request_closure) }, - { be_const_key_weak(tlv_solo, -1), be_const_var(5) }, - { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(send_report_data, -1), be_const_closure(class_Matter_IM_send_report_data_closure) }, - { be_const_key_weak(process_invoke_request, 17), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, - { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, - { be_const_key_weak(subs_shop, 20), be_const_var(1) }, - { be_const_key_weak(process_timed_request, 32), be_const_closure(class_Matter_IM_process_timed_request_closure) }, - { be_const_key_weak(attributestatus2raw, 23), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, - { be_const_key_weak(send_subscribe_response, -1), be_const_closure(class_Matter_IM_send_subscribe_response_closure) }, - { be_const_key_weak(process_invoke_response, 24), be_const_closure(class_Matter_IM_process_invoke_response_closure) }, - { be_const_key_weak(report_data, 9), be_const_closure(class_Matter_IM_report_data_closure) }, - { be_const_key_weak(process_read_request_solo, -1), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, - { be_const_key_weak(send_enqueued, -1), be_const_closure(class_Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(send_subscribe_response_pull, -1), be_const_closure(class_Matter_IM_send_subscribe_response_pull_closure) }, + { be_const_key_weak(every_250ms, 17), be_const_closure(class_Matter_IM_every_250ms_closure) }, + { be_const_key_weak(device, 32), be_const_var(0) }, + { be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) }, + { be_const_key_weak(read_single_attribute_to_bytes, 14), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_init_closure) }, - { be_const_key_weak(expire_sendqueue, -1), be_const_closure(class_Matter_IM_expire_sendqueue_closure) }, - { be_const_key_weak(process_read_request, -1), be_const_closure(class_Matter_IM_process_read_request_closure) }, - { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, + { be_const_key_weak(process_incoming_ack, 12), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) }, + { be_const_key_weak(expire_sendqueue, 37), be_const_closure(class_Matter_IM_expire_sendqueue_closure) }, + { be_const_key_weak(send_write_response, -1), be_const_closure(class_Matter_IM_send_write_response_closure) }, + { be_const_key_weak(send_invoke_response, 13), be_const_closure(class_Matter_IM_send_invoke_response_closure) }, + { be_const_key_weak(invokeresponse2raw, -1), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, + { be_const_key_weak(path2raw, -1), be_const_closure(class_Matter_IM_path2raw_closure) }, + { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, + { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, + { be_const_key_weak(process_incoming, 15), be_const_closure(class_Matter_IM_process_incoming_closure) }, + { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) }, { be_const_key_weak(send_queue, -1), be_const_var(2) }, + { be_const_key_weak(process_write_request, -1), be_const_closure(class_Matter_IM_process_write_request_closure) }, + { be_const_key_weak(process_write_response, -1), be_const_closure(class_Matter_IM_process_write_response_closure) }, + { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, + { be_const_key_weak(find_sendqueue_by_exchangeid, 19), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(write_single_attribute_status_to_bytes, -1), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) }, + { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, + { be_const_key_weak(attributedata2raw, 28), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, + { be_const_key_weak(attributestatus2raw, -1), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, + { be_const_key_weak(read_request_solo, -1), be_const_var(3) }, + { be_const_key_weak(process_invoke_request, 21), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, + { be_const_key_weak(send_report_data_pull, -1), be_const_closure(class_Matter_IM_send_report_data_pull_closure) }, + { be_const_key_weak(subs_shop, 36), be_const_var(1) }, + { be_const_key_weak(tlv_solo, 16), be_const_var(5) }, + { be_const_key_weak(process_read_request_solo, -1), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, + { be_const_key_weak(process_read_request_pull, -1), be_const_closure(class_Matter_IM_process_read_request_pull_closure) }, + { be_const_key_weak(process_timed_request, -1), be_const_closure(class_Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(subscribe_request, -1), be_const_closure(class_Matter_IM_subscribe_request_closure) }, + { be_const_key_weak(send_enqueued, 2), be_const_closure(class_Matter_IM_send_enqueued_closure) }, })), be_str_weak(Matter_IM) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 0daab0c27..66be8720b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -205,26 +205,31 @@ be_local_closure(class_Matter_IM_Message_reset, /* name */ }), be_str_weak(reset), &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8C100301, // 0000 GETMET R4 R1 K1 - 0x5C180400, // 0001 MOVE R6 R2 - 0x5C1C0600, // 0002 MOVE R7 R3 - 0x7C100600, // 0003 CALL R4 3 - 0x90020004, // 0004 SETMBR R0 K0 R4 - 0x50100200, // 0005 LDBOOL R4 1 0 - 0x90020404, // 0006 SETMBR R0 K2 R4 - 0xB8120800, // 0007 GETNGBL R4 K4 - 0x8C100905, // 0008 GETMET R4 R4 K5 - 0x7C100200, // 0009 CALL R4 1 - 0x88140106, // 000A GETMBR R5 R0 K6 - 0x00100805, // 000B ADD R4 R4 R5 - 0x90020604, // 000C SETMBR R0 K3 R4 - 0x90020F08, // 000D SETMBR R0 K7 K8 - 0x50100000, // 000E LDBOOL R4 0 0 - 0x90021204, // 000F SETMBR R0 K9 R4 - 0x4C100000, // 0010 LDNIL R4 - 0x90021404, // 0011 SETMBR R0 K10 R4 - 0x80000000, // 0012 RET 0 + ( &(const binstruction[24]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x20100204, // 0001 NE R4 R1 R4 + 0x78120004, // 0002 JMPF R4 #0008 + 0x8C100301, // 0003 GETMET R4 R1 K1 + 0x5C180400, // 0004 MOVE R6 R2 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x7C100600, // 0006 CALL R4 3 + 0x70020000, // 0007 JMP #0009 + 0x4C100000, // 0008 LDNIL R4 + 0x90020004, // 0009 SETMBR R0 K0 R4 + 0x50100200, // 000A LDBOOL R4 1 0 + 0x90020404, // 000B SETMBR R0 K2 R4 + 0xB8120800, // 000C GETNGBL R4 K4 + 0x8C100905, // 000D GETMET R4 R4 K5 + 0x7C100200, // 000E CALL R4 1 + 0x88140106, // 000F GETMBR R5 R0 K6 + 0x00100805, // 0010 ADD R4 R4 R5 + 0x90020604, // 0011 SETMBR R0 K3 R4 + 0x90020F08, // 0012 SETMBR R0 K7 K8 + 0x50100000, // 0013 LDBOOL R4 0 0 + 0x90021204, // 0014 SETMBR R0 K9 R4 + 0x4C100000, // 0015 LDNIL R4 + 0x90021404, // 0016 SETMBR R0 K10 R4 + 0x80000000, // 0017 RET 0 }) ) ); @@ -540,111 +545,219 @@ be_local_class(Matter_IM_WriteResponse, be_str_weak(Matter_IM_WriteResponse) ); -extern const bclass be_class_Matter_IM_ReportData; +extern const bclass be_class_Matter_IM_ReportData_Pull; /******************************************************************** -** Solidified function: send_im +** Solidified function: set_subscription_id ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData; -be_local_closure(class_Matter_IM_ReportData_send_im, /* name */ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name */ be_nested_proto( - 12, /* nstack */ + 2, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportData, + &be_class_Matter_IM_ReportData_Pull, 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(subscription_id), + }), + be_str_weak(set_subscription_id), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_im +********************************************************************/ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ + be_nested_proto( + 15, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_ReportData_Pull, + 1, /* has constants */ + ( &(const bvalue[30]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(resp), /* K2 */ be_nested_str_weak(data), - /* K3 */ be_nested_str_weak(more_chunked_messages), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(attribute_reports), - /* K6 */ be_const_int(2147483647), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(to_TLV), - /* K9 */ be_nested_str_weak(tlv2raw), - /* K10 */ be_nested_str_weak(MAX_MESSAGE), - /* K11 */ be_nested_str_weak(encode_frame), - /* K12 */ be_nested_str_weak(encrypt), - /* K13 */ be_nested_str_weak(send_response_frame), - /* K14 */ be_nested_str_weak(last_counter), - /* K15 */ be_nested_str_weak(message_counter), - /* K16 */ be_nested_str_weak(finish), + /* K3 */ be_nested_str_weak(generator_or_arr), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(device), + /* K7 */ be_nested_str_weak(debug), + /* K8 */ be_nested_str_weak(is_direct), + /* K9 */ be_nested_str_weak(im), + /* K10 */ be_nested_str_weak(read_single_attribute_to_bytes), + /* K11 */ be_nested_str_weak(get_pi), + /* K12 */ be_nested_str_weak(session), + /* K13 */ be_nested_str_weak(MAX_MESSAGE), + /* K14 */ be_nested_str_weak(append), + /* K15 */ be_nested_str_weak(remove), + /* K16 */ be_nested_str_weak(matter), + /* K17 */ be_nested_str_weak(ReportDataMessage), + /* K18 */ be_nested_str_weak(subscription_id), + /* K19 */ be_nested_str_weak(suppress_response), + /* K20 */ be_nested_str_weak(attribute_reports), + /* K21 */ be_nested_str_weak(more_chunked_messages), + /* K22 */ be_nested_str_weak(to_TLV), + /* K23 */ be_nested_str_weak(tlv2raw), + /* K24 */ be_nested_str_weak(encode_frame), + /* K25 */ be_nested_str_weak(encrypt), + /* K26 */ be_nested_str_weak(send_response_frame), + /* K27 */ be_nested_str_weak(last_counter), + /* K28 */ be_nested_str_weak(message_counter), + /* K29 */ be_nested_str_weak(finish), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ + ( &(const binstruction[134]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 0x80040400, // 0003 RET 1 R2 0x88080101, // 0004 GETMBR R2 R0 K1 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x88100703, // 0006 GETMBR R4 R3 K3 - 0x58140004, // 0007 LDCONST R5 K4 - 0x4C180000, // 0008 LDNIL R6 - 0x881C0705, // 0009 GETMBR R7 R3 K5 - 0x4C200000, // 000A LDNIL R8 - 0x201C0E08, // 000B NE R7 R7 R8 - 0x781E000D, // 000C JMPF R7 #001B - 0x401C0B06, // 000D CONNECT R7 R5 K6 - 0x88200705, // 000E GETMBR R8 R3 K5 - 0x94181007, // 000F GETIDX R6 R8 R7 - 0x04240B04, // 0010 SUB R9 R5 K4 - 0x40260E09, // 0011 CONNECT R9 K7 R9 - 0x88280705, // 0012 GETMBR R10 R3 K5 - 0x94241409, // 0013 GETIDX R9 R10 R9 - 0x900E0A09, // 0014 SETMBR R3 K5 R9 - 0x6024000C, // 0015 GETGBL R9 G12 - 0x5C280C00, // 0016 MOVE R10 R6 - 0x7C240200, // 0017 CALL R9 1 - 0x24241307, // 0018 GT R9 R9 K7 - 0x900E0609, // 0019 SETMBR R3 K3 R9 - 0x70020001, // 001A JMP #001D - 0x501C0000, // 001B LDBOOL R7 0 0 - 0x900E0607, // 001C SETMBR R3 K3 R7 - 0x7811FFFF, // 001D JMPF R4 #001E - 0x881C0703, // 001E GETMBR R7 R3 K3 - 0x781E0001, // 001F JMPF R7 #0022 - 0x5C1C0800, // 0020 MOVE R7 R4 - 0x741DFFFF, // 0021 JMPT R7 #0022 - 0x881C0102, // 0022 GETMBR R7 R0 K2 - 0x8C1C0F08, // 0023 GETMET R7 R7 K8 - 0x7C1C0200, // 0024 CALL R7 1 - 0x8C200F09, // 0025 GETMET R8 R7 K9 - 0x60280015, // 0026 GETGBL R10 G21 - 0x882C010A, // 0027 GETMBR R11 R0 K10 - 0x7C280200, // 0028 CALL R10 1 - 0x7C200400, // 0029 CALL R8 2 - 0x8C24050B, // 002A GETMET R9 R2 K11 - 0x5C2C1000, // 002B MOVE R11 R8 - 0x7C240400, // 002C CALL R9 2 - 0x8C24050C, // 002D GETMET R9 R2 K12 - 0x7C240200, // 002E CALL R9 1 - 0x8C24030D, // 002F GETMET R9 R1 K13 - 0x5C2C0400, // 0030 MOVE R11 R2 - 0x7C240400, // 0031 CALL R9 2 - 0x8824050F, // 0032 GETMBR R9 R2 K15 - 0x90021C09, // 0033 SETMBR R0 K14 R9 - 0x4C240000, // 0034 LDNIL R9 - 0x20240C09, // 0035 NE R9 R6 R9 - 0x78260008, // 0036 JMPF R9 #0040 - 0x6024000C, // 0037 GETGBL R9 G12 - 0x5C280C00, // 0038 MOVE R10 R6 - 0x7C240200, // 0039 CALL R9 1 - 0x24241307, // 003A GT R9 R9 K7 - 0x78260003, // 003B JMPF R9 #0040 - 0x900E0A06, // 003C SETMBR R3 K5 R6 - 0x50240000, // 003D LDBOOL R9 0 0 - 0x90020009, // 003E SETMBR R0 K0 R9 - 0x70020001, // 003F JMP #0042 - 0x50240200, // 0040 LDBOOL R9 1 0 - 0x90022009, // 0041 SETMBR R0 K16 R9 - 0x80000000, // 0042 RET 0 + 0x4C100000, // 0006 LDNIL R4 + 0x200C0604, // 0007 NE R3 R3 R4 + 0x780E0001, // 0008 JMPF R3 #000B + 0x880C0102, // 0009 GETMBR R3 R0 K2 + 0x70020001, // 000A JMP #000D + 0x600C0015, // 000B GETGBL R3 G21 + 0x7C0C0000, // 000C CALL R3 0 + 0x4C100000, // 000D LDNIL R4 + 0x90020404, // 000E SETMBR R0 K2 R4 + 0x50100200, // 000F LDBOOL R4 1 0 + 0x7812004C, // 0010 JMPF R4 #005E + 0x88140103, // 0011 GETMBR R5 R0 K3 + 0x4C180000, // 0012 LDNIL R6 + 0x20140A06, // 0013 NE R5 R5 R6 + 0x78160048, // 0014 JMPF R5 #005E + 0x6014000F, // 0015 GETGBL R5 G15 + 0x88180103, // 0016 GETMBR R6 R0 K3 + 0x601C0012, // 0017 GETGBL R7 G18 + 0x7C140400, // 0018 CALL R5 2 + 0x78160002, // 0019 JMPF R5 #001D + 0x88140103, // 001A GETMBR R5 R0 K3 + 0x94140B04, // 001B GETIDX R5 R5 K4 + 0x70020000, // 001C JMP #001E + 0x88140103, // 001D GETMBR R5 R0 K3 + 0x4C180000, // 001E LDNIL R6 + 0x78120028, // 001F JMPF R4 #0049 + 0x8C1C0B05, // 0020 GETMET R7 R5 K5 + 0x7C1C0200, // 0021 CALL R7 1 + 0x5C180E00, // 0022 MOVE R6 R7 + 0x781E0024, // 0023 JMPF R7 #0049 + 0x881C0306, // 0024 GETMBR R7 R1 K6 + 0x881C0F07, // 0025 GETMBR R7 R7 K7 + 0x8C200B08, // 0026 GETMET R8 R5 K8 + 0x7C200200, // 0027 CALL R8 1 + 0x74220001, // 0028 JMPT R8 #002B + 0x741E0000, // 0029 JMPT R7 #002B + 0x50200001, // 002A LDBOOL R8 0 1 + 0x50200200, // 002B LDBOOL R8 1 0 + 0x88240309, // 002C GETMBR R9 R1 K9 + 0x8C24130A, // 002D GETMET R9 R9 K10 + 0x8C2C0B0B, // 002E GETMET R11 R5 K11 + 0x7C2C0200, // 002F CALL R11 1 + 0x5C300C00, // 0030 MOVE R12 R6 + 0x8834050C, // 0031 GETMBR R13 R2 K12 + 0x5C381000, // 0032 MOVE R14 R8 + 0x7C240A00, // 0033 CALL R9 5 + 0x4C280000, // 0034 LDNIL R10 + 0x1C28120A, // 0035 EQ R10 R9 R10 + 0x782A0000, // 0036 JMPF R10 #0038 + 0x7001FFE6, // 0037 JMP #001F + 0x6028000C, // 0038 GETGBL R10 G12 + 0x5C2C0600, // 0039 MOVE R11 R3 + 0x7C280200, // 003A CALL R10 1 + 0x602C000C, // 003B GETGBL R11 G12 + 0x5C301200, // 003C MOVE R12 R9 + 0x7C2C0200, // 003D CALL R11 1 + 0x0028140B, // 003E ADD R10 R10 R11 + 0x882C010D, // 003F GETMBR R11 R0 K13 + 0x2428140B, // 0040 GT R10 R10 R11 + 0x782A0002, // 0041 JMPF R10 #0045 + 0x90020409, // 0042 SETMBR R0 K2 R9 + 0x50100000, // 0043 LDBOOL R4 0 0 + 0x70020002, // 0044 JMP #0048 + 0x8C28070E, // 0045 GETMET R10 R3 K14 + 0x5C301200, // 0046 MOVE R12 R9 + 0x7C280400, // 0047 CALL R10 2 + 0x7001FFD5, // 0048 JMP #001F + 0x78120012, // 0049 JMPF R4 #005D + 0x601C000F, // 004A GETGBL R7 G15 + 0x88200103, // 004B GETMBR R8 R0 K3 + 0x60240012, // 004C GETGBL R9 G18 + 0x7C1C0400, // 004D CALL R7 2 + 0x781E000B, // 004E JMPF R7 #005B + 0x881C0103, // 004F GETMBR R7 R0 K3 + 0x8C1C0F0F, // 0050 GETMET R7 R7 K15 + 0x58240004, // 0051 LDCONST R9 K4 + 0x7C1C0400, // 0052 CALL R7 2 + 0x601C000C, // 0053 GETGBL R7 G12 + 0x88200103, // 0054 GETMBR R8 R0 K3 + 0x7C1C0200, // 0055 CALL R7 1 + 0x1C1C0F04, // 0056 EQ R7 R7 K4 + 0x781E0001, // 0057 JMPF R7 #005A + 0x4C1C0000, // 0058 LDNIL R7 + 0x90020607, // 0059 SETMBR R0 K3 R7 + 0x70020001, // 005A JMP #005D + 0x4C1C0000, // 005B LDNIL R7 + 0x90020607, // 005C SETMBR R0 K3 R7 + 0x7001FFB1, // 005D JMP #0010 + 0xB8162000, // 005E GETNGBL R5 K16 + 0x8C140B11, // 005F GETMET R5 R5 K17 + 0x7C140200, // 0060 CALL R5 1 + 0x88180112, // 0061 GETMBR R6 R0 K18 + 0x90162406, // 0062 SETMBR R5 K18 R6 + 0x88180113, // 0063 GETMBR R6 R0 K19 + 0x90162606, // 0064 SETMBR R5 K19 R6 + 0x60180012, // 0065 GETGBL R6 G18 + 0x7C180000, // 0066 CALL R6 0 + 0x401C0C03, // 0067 CONNECT R7 R6 R3 + 0x90162806, // 0068 SETMBR R5 K20 R6 + 0x88180102, // 0069 GETMBR R6 R0 K2 + 0x4C1C0000, // 006A LDNIL R7 + 0x20180C07, // 006B NE R6 R6 R7 + 0x90162A06, // 006C SETMBR R5 K21 R6 + 0x8C180B16, // 006D GETMET R6 R5 K22 + 0x7C180200, // 006E CALL R6 1 + 0x8C1C0D17, // 006F GETMET R7 R6 K23 + 0x60240015, // 0070 GETGBL R9 G21 + 0x8828010D, // 0071 GETMBR R10 R0 K13 + 0x7C240200, // 0072 CALL R9 1 + 0x7C1C0400, // 0073 CALL R7 2 + 0x8C200518, // 0074 GETMET R8 R2 K24 + 0x5C280E00, // 0075 MOVE R10 R7 + 0x7C200400, // 0076 CALL R8 2 + 0x8C200519, // 0077 GETMET R8 R2 K25 + 0x7C200200, // 0078 CALL R8 1 + 0x8C20031A, // 0079 GETMET R8 R1 K26 + 0x5C280400, // 007A MOVE R10 R2 + 0x7C200400, // 007B CALL R8 2 + 0x8820051C, // 007C GETMBR R8 R2 K28 + 0x90023608, // 007D SETMBR R0 K27 R8 + 0x88200B15, // 007E GETMBR R8 R5 K21 + 0x78220002, // 007F JMPF R8 #0083 + 0x50200000, // 0080 LDBOOL R8 0 0 + 0x90020008, // 0081 SETMBR R0 K0 R8 + 0x70020001, // 0082 JMP #0085 + 0x50200200, // 0083 LDBOOL R8 1 0 + 0x90023A08, // 0084 SETMBR R0 K29 R8 + 0x80000000, // 0085 RET 0 }) ) ); @@ -654,8 +767,8 @@ be_local_closure(class_Matter_IM_ReportData_send_im, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData; -be_local_closure(class_Matter_IM_ReportData_init, /* name */ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ @@ -663,11 +776,11 @@ be_local_closure(class_Matter_IM_ReportData_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportData, + &be_class_Matter_IM_ReportData_Pull, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(data), + /* K1 */ be_nested_str_weak(generator_or_arr), }), be_str_weak(init), &be_const_str_solidified, @@ -689,28 +802,61 @@ be_local_closure(class_Matter_IM_ReportData_init, /* name */ /******************************************************************** -** Solidified class: Matter_IM_ReportData +** Solidified function: set_suppress_response +********************************************************************/ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_ReportData_Pull, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(suppress_response), + }), + be_str_weak(set_suppress_response), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_IM_ReportData_Pull ********************************************************************/ extern const bclass be_class_Matter_IM_Message; -be_local_class(Matter_IM_ReportData, - 0, +be_local_class(Matter_IM_ReportData_Pull, + 3, &be_class_Matter_IM_Message, - be_nested_map(3, + be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(send_im, 1), be_const_closure(class_Matter_IM_ReportData_send_im_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_init_closure) }, + { be_const_key_weak(suppress_response, -1), be_const_var(2) }, { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, + { be_const_key_weak(generator_or_arr, 5), be_const_var(0) }, + { be_const_key_weak(set_subscription_id, 6), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) }, + { be_const_key_weak(subscription_id, -1), be_const_var(1) }, + { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportData_Pull_send_im_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_Pull_init_closure) }, + { be_const_key_weak(set_suppress_response, -1), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) }, })), - be_str_weak(Matter_IM_ReportData) + be_str_weak(Matter_IM_ReportData_Pull) ); -extern const bclass be_class_Matter_IM_ReportDataSubscribed; +extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; /******************************************************************** ** Solidified function: ack_received ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed; -be_local_closure(class_Matter_IM_ReportDataSubscribed_ack_received, /* name */ +extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; +be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -718,7 +864,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_ack_received, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed, + &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(ack_received), @@ -759,8 +905,8 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_ack_received, /* name */ /******************************************************************** ** Solidified function: send_im ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed; -be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ +extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; +be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ @@ -768,107 +914,103 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed, + &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ + ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(data), - /* K2 */ be_nested_str_weak(attribute_reports), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(report_data_phase), - /* K5 */ be_nested_str_weak(send_im), - /* K6 */ be_nested_str_weak(finish), - /* K7 */ be_nested_str_weak(resp), - /* K8 */ be_nested_str_weak(build_standalone_ack), - /* K9 */ be_nested_str_weak(encode_frame), - /* K10 */ be_nested_str_weak(encrypt), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(loglevel), - /* K13 */ be_nested_str_weak(log), - /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), - /* K15 */ be_nested_str_weak(session), - /* K16 */ be_nested_str_weak(local_session_id), - /* K17 */ be_nested_str_weak(ack_message_counter), - /* K18 */ be_nested_str_weak(message_counter), - /* K19 */ be_nested_str_weak(send_response_frame), - /* K20 */ be_nested_str_weak(last_counter), + /* K1 */ be_nested_str_weak(generator_or_arr), + /* K2 */ be_nested_str_weak(report_data_phase), + /* K3 */ be_nested_str_weak(send_im), + /* K4 */ be_nested_str_weak(finish), + /* K5 */ be_nested_str_weak(resp), + /* K6 */ be_nested_str_weak(build_standalone_ack), + /* K7 */ be_nested_str_weak(encode_frame), + /* K8 */ be_nested_str_weak(encrypt), + /* K9 */ be_nested_str_weak(tasmota), + /* K10 */ be_nested_str_weak(loglevel), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), + /* K13 */ be_nested_str_weak(session), + /* K14 */ be_nested_str_weak(local_session_id), + /* K15 */ be_nested_str_weak(ack_message_counter), + /* K16 */ be_nested_str_weak(message_counter), + /* K17 */ be_nested_str_weak(send_response_frame), + /* K18 */ be_nested_str_weak(last_counter), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ + ( &(const binstruction[71]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 0x80040400, // 0003 RET 1 R2 - 0x6008000C, // 0004 GETGBL R2 G12 - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x880C0702, // 0006 GETMBR R3 R3 K2 - 0x7C080200, // 0007 CALL R2 1 - 0x24080503, // 0008 GT R2 R2 K3 - 0x780A0030, // 0009 JMPF R2 #003B - 0x88080104, // 000A GETMBR R2 R0 K4 - 0x780A000F, // 000B JMPF R2 #001C - 0x60080003, // 000C GETGBL R2 G3 - 0x5C0C0000, // 000D MOVE R3 R0 - 0x7C080200, // 000E CALL R2 1 - 0x8C080505, // 000F GETMET R2 R2 K5 - 0x5C100200, // 0010 MOVE R4 R1 - 0x7C080400, // 0011 CALL R2 2 - 0x88080106, // 0012 GETMBR R2 R0 K6 - 0x740A0000, // 0013 JMPT R2 #0015 - 0x80000400, // 0014 RET 0 + 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x4C0C0000, // 0005 LDNIL R3 + 0x20080403, // 0006 NE R2 R2 R3 + 0x780A0030, // 0007 JMPF R2 #0039 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x780A000F, // 0009 JMPF R2 #001A + 0x60080003, // 000A GETGBL R2 G3 + 0x5C0C0000, // 000B MOVE R3 R0 + 0x7C080200, // 000C CALL R2 1 + 0x8C080503, // 000D GETMET R2 R2 K3 + 0x5C100200, // 000E MOVE R4 R1 + 0x7C080400, // 000F CALL R2 2 + 0x88080104, // 0010 GETMBR R2 R0 K4 + 0x740A0000, // 0011 JMPT R2 #0013 + 0x80000400, // 0012 RET 0 + 0x50080000, // 0013 LDBOOL R2 0 0 + 0x90020402, // 0014 SETMBR R0 K2 R2 0x50080000, // 0015 LDBOOL R2 0 0 - 0x90020802, // 0016 SETMBR R0 K4 R2 + 0x90020002, // 0016 SETMBR R0 K0 R2 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90020002, // 0018 SETMBR R0 K0 R2 - 0x50080000, // 0019 LDBOOL R2 0 0 - 0x90020C02, // 001A SETMBR R0 K6 R2 - 0x7002001D, // 001B JMP #003A - 0x88080107, // 001C GETMBR R2 R0 K7 - 0x8C080508, // 001D GETMET R2 R2 K8 - 0x50100000, // 001E LDBOOL R4 0 0 - 0x7C080400, // 001F CALL R2 2 - 0x8C0C0509, // 0020 GETMET R3 R2 K9 + 0x90020802, // 0018 SETMBR R0 K4 R2 + 0x7002001D, // 0019 JMP #0038 + 0x88080105, // 001A GETMBR R2 R0 K5 + 0x8C080506, // 001B GETMET R2 R2 K6 + 0x50100000, // 001C LDBOOL R4 0 0 + 0x7C080400, // 001D CALL R2 2 + 0x8C0C0507, // 001E GETMET R3 R2 K7 + 0x7C0C0200, // 001F CALL R3 1 + 0x8C0C0508, // 0020 GETMET R3 R2 K8 0x7C0C0200, // 0021 CALL R3 1 - 0x8C0C050A, // 0022 GETMET R3 R2 K10 - 0x7C0C0200, // 0023 CALL R3 1 - 0xB80E1600, // 0024 GETNGBL R3 K11 - 0x8C0C070C, // 0025 GETMET R3 R3 K12 - 0x54160003, // 0026 LDINT R5 4 - 0x7C0C0400, // 0027 CALL R3 2 - 0x780E0009, // 0028 JMPF R3 #0033 - 0xB80E1A00, // 0029 GETNGBL R3 K13 - 0x60100018, // 002A GETGBL R4 G24 - 0x5814000E, // 002B LDCONST R5 K14 - 0x8818050F, // 002C GETMBR R6 R2 K15 - 0x88180D10, // 002D GETMBR R6 R6 K16 - 0x881C0511, // 002E GETMBR R7 R2 K17 - 0x88200512, // 002F GETMBR R8 R2 K18 - 0x7C100800, // 0030 CALL R4 4 - 0x54160003, // 0031 LDINT R5 4 - 0x7C0C0400, // 0032 CALL R3 2 - 0x8C0C0313, // 0033 GETMET R3 R1 K19 - 0x5C140400, // 0034 MOVE R5 R2 - 0x7C0C0400, // 0035 CALL R3 2 - 0x880C0512, // 0036 GETMBR R3 R2 K18 - 0x90022803, // 0037 SETMBR R0 K20 R3 - 0x500C0200, // 0038 LDBOOL R3 1 0 - 0x90020C03, // 0039 SETMBR R0 K6 R3 - 0x7002000C, // 003A JMP #0048 - 0x88080104, // 003B GETMBR R2 R0 K4 - 0x780A0008, // 003C JMPF R2 #0046 - 0x60080003, // 003D GETGBL R2 G3 - 0x5C0C0000, // 003E MOVE R3 R0 - 0x7C080200, // 003F CALL R2 1 - 0x8C080505, // 0040 GETMET R2 R2 K5 - 0x5C100200, // 0041 MOVE R4 R1 - 0x7C080400, // 0042 CALL R2 2 - 0x50080000, // 0043 LDBOOL R2 0 0 - 0x90020802, // 0044 SETMBR R0 K4 R2 - 0x70020001, // 0045 JMP #0048 - 0x50080200, // 0046 LDBOOL R2 1 0 - 0x90020C02, // 0047 SETMBR R0 K6 R2 - 0x80000000, // 0048 RET 0 + 0xB80E1200, // 0022 GETNGBL R3 K9 + 0x8C0C070A, // 0023 GETMET R3 R3 K10 + 0x54160003, // 0024 LDINT R5 4 + 0x7C0C0400, // 0025 CALL R3 2 + 0x780E0009, // 0026 JMPF R3 #0031 + 0xB80E1600, // 0027 GETNGBL R3 K11 + 0x60100018, // 0028 GETGBL R4 G24 + 0x5814000C, // 0029 LDCONST R5 K12 + 0x8818050D, // 002A GETMBR R6 R2 K13 + 0x88180D0E, // 002B GETMBR R6 R6 K14 + 0x881C050F, // 002C GETMBR R7 R2 K15 + 0x88200510, // 002D GETMBR R8 R2 K16 + 0x7C100800, // 002E CALL R4 4 + 0x54160003, // 002F LDINT R5 4 + 0x7C0C0400, // 0030 CALL R3 2 + 0x8C0C0311, // 0031 GETMET R3 R1 K17 + 0x5C140400, // 0032 MOVE R5 R2 + 0x7C0C0400, // 0033 CALL R3 2 + 0x880C0510, // 0034 GETMBR R3 R2 K16 + 0x90022403, // 0035 SETMBR R0 K18 R3 + 0x500C0200, // 0036 LDBOOL R3 1 0 + 0x90020803, // 0037 SETMBR R0 K4 R3 + 0x7002000C, // 0038 JMP #0046 + 0x88080102, // 0039 GETMBR R2 R0 K2 + 0x780A0008, // 003A JMPF R2 #0044 + 0x60080003, // 003B GETGBL R2 G3 + 0x5C0C0000, // 003C MOVE R3 R0 + 0x7C080200, // 003D CALL R2 1 + 0x8C080503, // 003E GETMET R2 R2 K3 + 0x5C100200, // 003F MOVE R4 R1 + 0x7C080400, // 0040 CALL R2 2 + 0x50080000, // 0041 LDBOOL R2 0 0 + 0x90020402, // 0042 SETMBR R0 K2 R2 + 0x70020001, // 0043 JMP #0046 + 0x50080200, // 0044 LDBOOL R2 1 0 + 0x90020802, // 0045 SETMBR R0 K4 R2 + 0x80000000, // 0046 RET 0 }) ) ); @@ -878,8 +1020,8 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed; -be_local_closure(class_Matter_IM_ReportDataSubscribed_init, /* name */ +extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; +be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ be_nested_proto( 11, /* nstack */ 5, /* argc */ @@ -887,47 +1029,49 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed, + &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Frame), - /* K3 */ be_nested_str_weak(initiate_response), - /* K4 */ be_nested_str_weak(data), - /* K5 */ be_nested_str_weak(ready), - /* K6 */ be_nested_str_weak(expiration), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(millis), - /* K9 */ be_nested_str_weak(MSG_TIMEOUT), - /* K10 */ be_nested_str_weak(sub), - /* K11 */ be_nested_str_weak(report_data_phase), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(resp), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(Frame), + /* K4 */ be_nested_str_weak(initiate_response), + /* K5 */ be_nested_str_weak(sub), + /* K6 */ be_nested_str_weak(report_data_phase), + /* K7 */ be_nested_str_weak(set_subscription_id), + /* K8 */ be_nested_str_weak(subscription_id), + /* K9 */ be_nested_str_weak(set_suppress_response), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xB8160200, // 0000 GETNGBL R5 K1 - 0x88140B02, // 0001 GETMBR R5 R5 K2 - 0x8C140B03, // 0002 GETMET R5 R5 K3 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x54260004, // 0005 LDINT R9 5 - 0x50280200, // 0006 LDBOOL R10 1 0 - 0x7C140A00, // 0007 CALL R5 5 - 0x90020005, // 0008 SETMBR R0 K0 R5 - 0x90020803, // 0009 SETMBR R0 K4 R3 - 0x50140200, // 000A LDBOOL R5 1 0 - 0x90020A05, // 000B SETMBR R0 K5 R5 - 0xB8160E00, // 000C GETNGBL R5 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x7C140200, // 000E CALL R5 1 - 0x88180109, // 000F GETMBR R6 R0 K9 - 0x00140A06, // 0010 ADD R5 R5 R6 - 0x90020C05, // 0011 SETMBR R0 K6 R5 - 0x90021404, // 0012 SETMBR R0 K10 R4 - 0x50140200, // 0013 LDBOOL R5 1 0 - 0x90021605, // 0014 SETMBR R0 K11 R5 - 0x80000000, // 0015 RET 0 + ( &(const binstruction[26]) { /* code */ + 0x60140003, // 0000 GETGBL R5 G3 + 0x5C180000, // 0001 MOVE R6 R0 + 0x7C140200, // 0002 CALL R5 1 + 0x8C140B00, // 0003 GETMET R5 R5 K0 + 0x4C1C0000, // 0004 LDNIL R7 + 0x5C200600, // 0005 MOVE R8 R3 + 0x7C140600, // 0006 CALL R5 3 + 0xB8160400, // 0007 GETNGBL R5 K2 + 0x88140B03, // 0008 GETMBR R5 R5 K3 + 0x8C140B04, // 0009 GETMET R5 R5 K4 + 0x5C1C0200, // 000A MOVE R7 R1 + 0x5C200400, // 000B MOVE R8 R2 + 0x54260004, // 000C LDINT R9 5 + 0x50280200, // 000D LDBOOL R10 1 0 + 0x7C140A00, // 000E CALL R5 5 + 0x90020205, // 000F SETMBR R0 K1 R5 + 0x90020A04, // 0010 SETMBR R0 K5 R4 + 0x50140200, // 0011 LDBOOL R5 1 0 + 0x90020C05, // 0012 SETMBR R0 K6 R5 + 0x8C140107, // 0013 GETMET R5 R0 K7 + 0x881C0908, // 0014 GETMBR R7 R4 K8 + 0x7C140400, // 0015 CALL R5 2 + 0x8C140109, // 0016 GETMET R5 R0 K9 + 0x501C0000, // 0017 LDBOOL R7 0 0 + 0x7C140400, // 0018 CALL R5 2 + 0x80000000, // 0019 RET 0 }) ) ); @@ -937,8 +1081,8 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_init, /* name */ /******************************************************************** ** Solidified function: status_error_received ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed; -be_local_closure(class_Matter_IM_ReportDataSubscribed_status_error_received, /* name */ +extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; +be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ @@ -946,7 +1090,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_status_error_received, / 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed, + &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(sub), @@ -968,8 +1112,8 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_status_error_received, / /******************************************************************** ** Solidified function: reached_timeout ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed; -be_local_closure(class_Matter_IM_ReportDataSubscribed_reached_timeout, /* name */ +extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; +be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -977,7 +1121,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_reached_timeout, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed, + &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(sub), @@ -999,8 +1143,8 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_reached_timeout, /* name /******************************************************************** ** Solidified function: status_ok_received ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed; -be_local_closure(class_Matter_IM_ReportDataSubscribed_status_ok_received, /* name */ +extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; +be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_ok_received, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -1008,7 +1152,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_status_ok_received, /* n 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed, + &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(report_data_phase), @@ -1048,24 +1192,24 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_status_ok_received, /* n /******************************************************************** -** Solidified class: Matter_IM_ReportDataSubscribed +** Solidified class: Matter_IM_ReportDataSubscribed_Pull ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData; -be_local_class(Matter_IM_ReportDataSubscribed, +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_class(Matter_IM_ReportDataSubscribed_Pull, 2, - &be_class_Matter_IM_ReportData, + &be_class_Matter_IM_ReportData_Pull, be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ack_received, 1), be_const_closure(class_Matter_IM_ReportDataSubscribed_ack_received_closure) }, - { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_status_ok_received_closure) }, - { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_send_im_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_init_closure) }, + { be_const_key_weak(ack_received, 1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received_closure) }, + { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_ok_received_closure) }, + { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_init_closure) }, { be_const_key_weak(report_data_phase, 7), be_const_var(1) }, { be_const_key_weak(sub, 6), be_const_var(0) }, - { be_const_key_weak(reached_timeout, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_reached_timeout_closure) }, - { be_const_key_weak(status_error_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_status_error_received_closure) }, + { be_const_key_weak(reached_timeout, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout_closure) }, + { be_const_key_weak(status_error_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received_closure) }, })), - be_str_weak(Matter_IM_ReportDataSubscribed) + be_str_weak(Matter_IM_ReportDataSubscribed_Pull) ); extern const bclass be_class_Matter_IM_SubscribedHeartbeat; @@ -1242,50 +1386,52 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_ok_received, /* na extern const bclass be_class_Matter_IM_SubscribedHeartbeat; be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */ be_nested_proto( - 11, /* nstack */ - 5, /* argc */ + 10, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM_SubscribedHeartbeat, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Frame), - /* K3 */ be_nested_str_weak(initiate_response), - /* K4 */ be_nested_str_weak(data), - /* K5 */ be_nested_str_weak(ready), - /* K6 */ be_nested_str_weak(expiration), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(millis), - /* K9 */ be_nested_str_weak(MSG_TIMEOUT), - /* K10 */ be_nested_str_weak(sub), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(resp), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(Frame), + /* K4 */ be_nested_str_weak(initiate_response), + /* K5 */ be_nested_str_weak(sub), + /* K6 */ be_nested_str_weak(set_subscription_id), + /* K7 */ be_nested_str_weak(subscription_id), + /* K8 */ be_nested_str_weak(set_suppress_response), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0xB8160200, // 0000 GETNGBL R5 K1 - 0x88140B02, // 0001 GETMBR R5 R5 K2 - 0x8C140B03, // 0002 GETMET R5 R5 K3 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x54260004, // 0005 LDINT R9 5 - 0x50280200, // 0006 LDBOOL R10 1 0 - 0x7C140A00, // 0007 CALL R5 5 - 0x90020005, // 0008 SETMBR R0 K0 R5 - 0x90020803, // 0009 SETMBR R0 K4 R3 - 0x50140200, // 000A LDBOOL R5 1 0 - 0x90020A05, // 000B SETMBR R0 K5 R5 - 0xB8160E00, // 000C GETNGBL R5 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x7C140200, // 000E CALL R5 1 - 0x88180109, // 000F GETMBR R6 R0 K9 - 0x00140A06, // 0010 ADD R5 R5 R6 - 0x90020C05, // 0011 SETMBR R0 K6 R5 - 0x90021404, // 0012 SETMBR R0 K10 R4 - 0x80000000, // 0013 RET 0 + ( &(const binstruction[24]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x4C180000, // 0004 LDNIL R6 + 0x4C1C0000, // 0005 LDNIL R7 + 0x7C100600, // 0006 CALL R4 3 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0x88100903, // 0008 GETMBR R4 R4 K3 + 0x8C100904, // 0009 GETMET R4 R4 K4 + 0x5C180200, // 000A MOVE R6 R1 + 0x5C1C0400, // 000B MOVE R7 R2 + 0x54220004, // 000C LDINT R8 5 + 0x50240200, // 000D LDBOOL R9 1 0 + 0x7C100A00, // 000E CALL R4 5 + 0x90020204, // 000F SETMBR R0 K1 R4 + 0x90020A03, // 0010 SETMBR R0 K5 R3 + 0x8C100106, // 0011 GETMET R4 R0 K6 + 0x88180707, // 0012 GETMBR R6 R3 K7 + 0x7C100400, // 0013 CALL R4 2 + 0x8C100108, // 0014 GETMET R4 R0 K8 + 0x50180200, // 0015 LDBOOL R6 1 0 + 0x7C100400, // 0016 CALL R4 2 + 0x80000000, // 0017 RET 0 }) ) ); @@ -1295,10 +1441,10 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */ /******************************************************************** ** Solidified class: Matter_IM_SubscribedHeartbeat ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData; +extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_class(Matter_IM_SubscribedHeartbeat, 1, - &be_class_Matter_IM_ReportData, + &be_class_Matter_IM_ReportData_Pull, be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(init, 1), be_const_closure(class_Matter_IM_SubscribedHeartbeat_init_closure) }, @@ -1312,13 +1458,13 @@ be_local_class(Matter_IM_SubscribedHeartbeat, be_str_weak(Matter_IM_SubscribedHeartbeat) ); -extern const bclass be_class_Matter_IM_SubscribeResponse; +extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribeResponse; -be_local_closure(class_Matter_IM_SubscribeResponse_init, /* name */ +extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; +be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ be_nested_proto( 8, /* nstack */ 4, /* argc */ @@ -1326,16 +1472,18 @@ be_local_closure(class_Matter_IM_SubscribeResponse_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribeResponse, + &be_class_Matter_IM_SubscribeResponse_Pull, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(sub), /* K2 */ be_nested_str_weak(report_data_phase), + /* K3 */ be_nested_str_weak(set_subscription_id), + /* K4 */ be_nested_str_weak(subscription_id), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ + ( &(const binstruction[14]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 @@ -1346,7 +1494,10 @@ be_local_closure(class_Matter_IM_SubscribeResponse_init, /* name */ 0x90020203, // 0007 SETMBR R0 K1 R3 0x50100200, // 0008 LDBOOL R4 1 0 0x90020404, // 0009 SETMBR R0 K2 R4 - 0x80000000, // 000A RET 0 + 0x8C100103, // 000A GETMET R4 R0 K3 + 0x88180704, // 000B GETMBR R6 R3 K4 + 0x7C100400, // 000C CALL R4 2 + 0x80000000, // 000D RET 0 }) ) ); @@ -1356,8 +1507,8 @@ be_local_closure(class_Matter_IM_SubscribeResponse_init, /* name */ /******************************************************************** ** Solidified function: status_ok_received ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribeResponse; -be_local_closure(class_Matter_IM_SubscribeResponse_status_ok_received, /* name */ +extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; +be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ @@ -1365,7 +1516,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_status_ok_received, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribeResponse, + &be_class_Matter_IM_SubscribeResponse_Pull, 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -1413,8 +1564,8 @@ be_local_closure(class_Matter_IM_SubscribeResponse_status_ok_received, /* name /******************************************************************** ** Solidified function: send_im ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribeResponse; -be_local_closure(class_Matter_IM_SubscribeResponse_send_im, /* name */ +extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; +be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ @@ -1422,7 +1573,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_send_im, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribeResponse, + &be_class_Matter_IM_SubscribeResponse_Pull, 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(ready), @@ -1508,21 +1659,21 @@ be_local_closure(class_Matter_IM_SubscribeResponse_send_im, /* name */ /******************************************************************** -** Solidified class: Matter_IM_SubscribeResponse +** Solidified class: Matter_IM_SubscribeResponse_Pull ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData; -be_local_class(Matter_IM_SubscribeResponse, +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_class(Matter_IM_SubscribeResponse_Pull, 2, - &be_class_Matter_IM_ReportData, + &be_class_Matter_IM_ReportData_Pull, be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, 4), be_const_closure(class_Matter_IM_SubscribeResponse_init_closure) }, + { be_const_key_weak(init, 4), be_const_closure(class_Matter_IM_SubscribeResponse_Pull_init_closure) }, { be_const_key_weak(sub, -1), be_const_var(0) }, - { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_SubscribeResponse_status_ok_received_closure) }, - { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_SubscribeResponse_send_im_closure) }, + { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received_closure) }, + { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_SubscribeResponse_Pull_send_im_closure) }, { be_const_key_weak(report_data_phase, -1), be_const_var(1) }, })), - be_str_weak(Matter_IM_SubscribeResponse) + be_str_weak(Matter_IM_SubscribeResponse_Pull) ); /********************************************************************/ /* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h index 1d20a695e..5457a5159 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h @@ -7,10 +7,10 @@ extern const bclass be_class_Matter_PathGenerator; /******************************************************************** -** Solidified function: next +** Solidified function: reset ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_next, /* name */ +be_local_closure(class_Matter_PathGenerator_reset, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -20,240 +20,27 @@ be_local_closure(class_Matter_PathGenerator_next, /* name */ 0, /* has sup protos */ &be_class_Matter_PathGenerator, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(path_in), - /* K1 */ be_nested_str_weak(pi), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(_next_endpoint), - /* K4 */ be_nested_str_weak(endpoint_found), - /* K5 */ be_nested_str_weak(attribute), - /* K6 */ be_nested_str_weak(_next_cluster), - /* K7 */ be_nested_str_weak(cluster_found), - /* K8 */ be_nested_str_weak(_next_attribute), - /* K9 */ be_nested_str_weak(attribute_found), - /* K10 */ be_nested_str_weak(path_concrete), - /* K11 */ be_nested_str_weak(reset), - /* K12 */ be_nested_str_weak(endpoint), - /* K13 */ be_nested_str_weak(get_endpoint), - }), - be_str_weak(next), - &be_const_str_solidified, - ( &(const binstruction[62]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060001, // 0003 JMPF R1 #0006 - 0x4C040000, // 0004 LDNIL R1 - 0x80040200, // 0005 RET 1 R1 - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x20040202, // 0008 NE R1 R1 R2 - 0x7806002F, // 0009 JMPF R1 #003A - 0x88040101, // 000A GETMBR R1 R0 K1 - 0x4C080000, // 000B LDNIL R2 - 0x1C040202, // 000C EQ R1 R1 R2 - 0x74060003, // 000D JMPT R1 #0012 - 0x88040102, // 000E GETMBR R1 R0 K2 - 0x50080000, // 000F LDBOOL R2 0 0 - 0x1C040202, // 0010 EQ R1 R1 R2 - 0x78060002, // 0011 JMPF R1 #0015 - 0x8C040103, // 0012 GETMET R1 R0 K3 - 0x7C040200, // 0013 CALL R1 1 - 0x7001FFF0, // 0014 JMP #0006 - 0x50040200, // 0015 LDBOOL R1 1 0 - 0x90020801, // 0016 SETMBR R0 K4 R1 - 0x88040102, // 0017 GETMBR R1 R0 K2 - 0x4C080000, // 0018 LDNIL R2 - 0x1C040202, // 0019 EQ R1 R1 R2 - 0x74060003, // 001A JMPT R1 #001F - 0x88040105, // 001B GETMBR R1 R0 K5 - 0x50080000, // 001C LDBOOL R2 0 0 - 0x1C040202, // 001D EQ R1 R1 R2 - 0x78060002, // 001E JMPF R1 #0022 - 0x8C040106, // 001F GETMET R1 R0 K6 - 0x7C040200, // 0020 CALL R1 1 - 0x7001FFE3, // 0021 JMP #0006 - 0x50040200, // 0022 LDBOOL R1 1 0 - 0x90020E01, // 0023 SETMBR R0 K7 R1 - 0x8C040108, // 0024 GETMET R1 R0 K8 - 0x7C040200, // 0025 CALL R1 1 - 0x88040105, // 0026 GETMBR R1 R0 K5 - 0x50080000, // 0027 LDBOOL R2 0 0 - 0x1C040202, // 0028 EQ R1 R1 R2 - 0x78060000, // 0029 JMPF R1 #002B - 0x7001FFDA, // 002A JMP #0006 - 0x50040200, // 002B LDBOOL R1 1 0 - 0x90021201, // 002C SETMBR R0 K9 R1 - 0x8804010A, // 002D GETMBR R1 R0 K10 - 0x8C08030B, // 002E GETMET R2 R1 K11 - 0x7C080200, // 002F CALL R2 1 - 0x88080101, // 0030 GETMBR R2 R0 K1 - 0x8C08050D, // 0031 GETMET R2 R2 K13 - 0x7C080200, // 0032 CALL R2 1 - 0x90061802, // 0033 SETMBR R1 K12 R2 - 0x88080102, // 0034 GETMBR R2 R0 K2 - 0x90060402, // 0035 SETMBR R1 K2 R2 - 0x88080105, // 0036 GETMBR R2 R0 K5 - 0x90060A02, // 0037 SETMBR R1 K5 R2 - 0x80040200, // 0038 RET 1 R1 - 0x7001FFCB, // 0039 JMP #0006 - 0x8C04010B, // 003A GETMET R1 R0 K11 - 0x7C040200, // 003B CALL R1 1 - 0x4C040000, // 003C LDNIL R1 - 0x80040200, // 003D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _next_cluster -********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_PathGenerator, - 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(cluster), - /* K1 */ be_nested_str_weak(clusters), - /* K2 */ be_nested_str_weak(path_in), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_const_int(1), - }), - be_str_weak(_next_cluster), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x50080000, // 0001 LDBOOL R2 0 0 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060001, // 0003 JMPF R1 #0006 - 0x50040000, // 0004 LDBOOL R1 0 0 - 0x80040200, // 0005 RET 1 R1 - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88080102, // 0007 GETMBR R2 R0 K2 - 0x88080500, // 0008 GETMBR R2 R2 K0 - 0x4C0C0000, // 0009 LDNIL R3 - 0x90020603, // 000A SETMBR R0 K3 R3 - 0x540DFFFE, // 000B LDINT R3 -1 - 0x88100100, // 000C GETMBR R4 R0 K0 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120003, // 000F JMPF R4 #0014 - 0x8C100304, // 0010 GETMET R4 R1 K4 - 0x88180100, // 0011 GETMBR R6 R0 K0 - 0x7C100400, // 0012 CALL R4 2 - 0x5C0C0800, // 0013 MOVE R3 R4 - 0x4C100000, // 0014 LDNIL R4 - 0x20100604, // 0015 NE R4 R3 R4 - 0x78120011, // 0016 JMPF R4 #0029 - 0x00100705, // 0017 ADD R4 R3 K5 - 0x6014000C, // 0018 GETGBL R5 G12 - 0x5C180200, // 0019 MOVE R6 R1 - 0x7C140200, // 001A CALL R5 1 - 0x14100805, // 001B LT R4 R4 R5 - 0x7812000B, // 001C JMPF R4 #0029 - 0x000C0705, // 001D ADD R3 R3 K5 - 0x94100203, // 001E GETIDX R4 R1 R3 - 0x90020004, // 001F SETMBR R0 K0 R4 - 0x4C100000, // 0020 LDNIL R4 - 0x1C100404, // 0021 EQ R4 R2 R4 - 0x74120002, // 0022 JMPT R4 #0026 - 0x88100100, // 0023 GETMBR R4 R0 K0 - 0x1C100404, // 0024 EQ R4 R2 R4 - 0x78120001, // 0025 JMPF R4 #0028 - 0x88100100, // 0026 GETMBR R4 R0 K0 - 0x80040800, // 0027 RET 1 R4 - 0x7001FFED, // 0028 JMP #0017 - 0x50100000, // 0029 LDBOOL R4 0 0 - 0x90020004, // 002A SETMBR R0 K0 R4 - 0x50100000, // 002B LDBOOL R4 0 0 - 0x80040800, // 002C RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_PathGenerator, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(path_concrete), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Path), - /* K3 */ be_nested_str_weak(reset), - /* K4 */ be_nested_str_weak(path_in), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(endpoint_found), - /* K7 */ be_nested_str_weak(cluster_found), - /* K8 */ be_nested_str_weak(attribute_found), + /* K1 */ be_nested_str_weak(reset), + /* K2 */ be_nested_str_weak(pi), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(clusters), }), - be_str_weak(start), + be_str_weak(reset), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0xB80E0200, // 0000 GETNGBL R3 K1 - 0x8C0C0702, // 0001 GETMET R3 R3 K2 - 0x7C0C0200, // 0002 CALL R3 1 - 0x90020003, // 0003 SETMBR R0 K0 R3 - 0x8C0C0103, // 0004 GETMET R3 R0 K3 - 0x7C0C0200, // 0005 CALL R3 1 - 0x90020801, // 0006 SETMBR R0 K4 R1 - 0x90020A02, // 0007 SETMBR R0 K5 R2 - 0x500C0000, // 0008 LDBOOL R3 0 0 - 0x90020C03, // 0009 SETMBR R0 K6 R3 - 0x500C0000, // 000A LDBOOL R3 0 0 - 0x90020E03, // 000B SETMBR R0 K7 R3 - 0x500C0000, // 000C LDBOOL R3 0 0 - 0x90021003, // 000D SETMBR R0 K8 R3 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pi -********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_get_pi, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_PathGenerator, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), - }), - be_str_weak(get_pi), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[10]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x50080000, // 0004 LDBOOL R2 0 0 + 0x90020402, // 0005 SETMBR R0 K2 R2 + 0x90020601, // 0006 SETMBR R0 K3 R1 + 0x90020801, // 0007 SETMBR R0 K4 R1 + 0x90020A01, // 0008 SETMBR R0 K5 R1 + 0x80000000, // 0009 RET 0 }) ) ); @@ -289,10 +76,110 @@ be_local_closure(class_Matter_PathGenerator_init, /* name */ /******************************************************************** -** Solidified function: reset +** Solidified function: is_direct ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_reset, /* name */ +be_local_closure(class_Matter_PathGenerator_is_direct, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_PathGenerator, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(path_in_endpoint), + /* K1 */ be_nested_str_weak(path_in_cluster), + /* K2 */ be_nested_str_weak(path_in_attribute), + }), + be_str_weak(is_direct), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060007, // 0003 JMPF R1 #000C + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060003, // 0007 JMPF R1 #000C + 0x88040102, // 0008 GETMBR R1 R0 K2 + 0x4C080000, // 0009 LDNIL R2 + 0x20040202, // 000A NE R1 R1 R2 + 0x74060000, // 000B JMPT R1 #000D + 0x50040001, // 000C LDBOOL R1 0 1 + 0x50040200, // 000D LDBOOL R1 1 0 + 0x80040200, // 000E RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: default_status_error +********************************************************************/ +extern const bclass be_class_Matter_PathGenerator; +be_local_closure(class_Matter_PathGenerator_default_status_error, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_PathGenerator, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(is_direct), + /* K1 */ be_nested_str_weak(endpoint_found), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K4 */ be_nested_str_weak(cluster_found), + /* K5 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K6 */ be_nested_str_weak(attribute_found), + /* K7 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K8 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + }), + be_str_weak(default_status_error), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x78060011, // 0002 JMPF R1 #0015 + 0x88040101, // 0003 GETMBR R1 R0 K1 + 0x74060002, // 0004 JMPT R1 #0008 + 0xB8060400, // 0005 GETNGBL R1 K2 + 0x88040303, // 0006 GETMBR R1 R1 K3 + 0x80040200, // 0007 RET 1 R1 + 0x88040104, // 0008 GETMBR R1 R0 K4 + 0x74060002, // 0009 JMPT R1 #000D + 0xB8060400, // 000A GETNGBL R1 K2 + 0x88040305, // 000B GETMBR R1 R1 K5 + 0x80040200, // 000C RET 1 R1 + 0x88040106, // 000D GETMBR R1 R0 K6 + 0x74060002, // 000E JMPT R1 #0012 + 0xB8060400, // 000F GETNGBL R1 K2 + 0x88040307, // 0010 GETMBR R1 R1 K7 + 0x80040200, // 0011 RET 1 R1 + 0xB8060400, // 0012 GETNGBL R1 K2 + 0x88040308, // 0013 GETMBR R1 R1 K8 + 0x80040200, // 0014 RET 1 R1 + 0x4C040000, // 0015 LDNIL R1 + 0x80040200, // 0016 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: next +********************************************************************/ +extern const bclass be_class_Matter_PathGenerator; +be_local_closure(class_Matter_PathGenerator_next, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -302,31 +189,127 @@ be_local_closure(class_Matter_PathGenerator_reset, /* name */ 0, /* has sup protos */ &be_class_Matter_PathGenerator, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(path_in), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(path_concrete), - /* K3 */ be_nested_str_weak(reset), - /* K4 */ be_nested_str_weak(pi), - /* K5 */ be_nested_str_weak(cluster), + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(pi), + /* K1 */ be_nested_str_weak(is_direct), + /* K2 */ be_nested_str_weak(reset), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(_next_endpoint), + /* K5 */ be_nested_str_weak(endpoint_found), /* K6 */ be_nested_str_weak(attribute), - /* K7 */ be_nested_str_weak(clusters), + /* K7 */ be_nested_str_weak(_next_cluster), + /* K8 */ be_nested_str_weak(cluster_found), + /* K9 */ be_nested_str_weak(_next_attribute), + /* K10 */ be_nested_str_weak(attribute_found), + /* K11 */ be_nested_str_weak(path_concrete), + /* K12 */ be_nested_str_weak(endpoint), + /* K13 */ be_nested_str_weak(get_endpoint), + /* K14 */ be_nested_str_weak(fabric_filtered), + /* K15 */ be_nested_str_weak(path_in_fabric_filtered), + /* K16 */ be_nested_str_weak(status), + /* K17 */ be_nested_str_weak(path_in_endpoint), + /* K18 */ be_nested_str_weak(path_in_cluster), + /* K19 */ be_nested_str_weak(path_in_attribute), + /* K20 */ be_nested_str_weak(default_status_error), }), - be_str_weak(reset), + be_str_weak(next), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x90020201, // 0002 SETMBR R0 K1 R1 - 0x88080102, // 0003 GETMBR R2 R0 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020801, // 0006 SETMBR R0 K4 R1 - 0x90020A01, // 0007 SETMBR R0 K5 R1 - 0x90020C01, // 0008 SETMBR R0 K6 R1 - 0x90020E01, // 0009 SETMBR R0 K7 R1 - 0x90020E01, // 000A SETMBR R0 K7 R1 - 0x80000000, // 000B RET 0 + ( &(const binstruction[95]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x50080200, // 0001 LDBOOL R2 1 0 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x74060006, // 0003 JMPT R1 #000B + 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060006, // 0007 JMPF R1 #000F + 0x8C040101, // 0008 GETMET R1 R0 K1 + 0x7C040200, // 0009 CALL R1 1 + 0x78060003, // 000A JMPF R1 #000F + 0x8C040102, // 000B GETMET R1 R0 K2 + 0x7C040200, // 000C CALL R1 1 + 0x4C040000, // 000D LDNIL R1 + 0x80040200, // 000E RET 1 R1 + 0x88040100, // 000F GETMBR R1 R0 K0 + 0x50080000, // 0010 LDBOOL R2 0 0 + 0x20040202, // 0011 NE R1 R1 R2 + 0x78060033, // 0012 JMPF R1 #0047 + 0x88040100, // 0013 GETMBR R1 R0 K0 + 0x4C080000, // 0014 LDNIL R2 + 0x1C040202, // 0015 EQ R1 R1 R2 + 0x74060003, // 0016 JMPT R1 #001B + 0x88040103, // 0017 GETMBR R1 R0 K3 + 0x50080000, // 0018 LDBOOL R2 0 0 + 0x1C040202, // 0019 EQ R1 R1 R2 + 0x78060002, // 001A JMPF R1 #001E + 0x8C040104, // 001B GETMET R1 R0 K4 + 0x7C040200, // 001C CALL R1 1 + 0x7001FFF0, // 001D JMP #000F + 0x50040200, // 001E LDBOOL R1 1 0 + 0x90020A01, // 001F SETMBR R0 K5 R1 + 0x88040103, // 0020 GETMBR R1 R0 K3 + 0x4C080000, // 0021 LDNIL R2 + 0x1C040202, // 0022 EQ R1 R1 R2 + 0x74060003, // 0023 JMPT R1 #0028 + 0x88040106, // 0024 GETMBR R1 R0 K6 + 0x50080000, // 0025 LDBOOL R2 0 0 + 0x1C040202, // 0026 EQ R1 R1 R2 + 0x78060002, // 0027 JMPF R1 #002B + 0x8C040107, // 0028 GETMET R1 R0 K7 + 0x7C040200, // 0029 CALL R1 1 + 0x7001FFE3, // 002A JMP #000F + 0x50040200, // 002B LDBOOL R1 1 0 + 0x90021001, // 002C SETMBR R0 K8 R1 + 0x8C040109, // 002D GETMET R1 R0 K9 + 0x7C040200, // 002E CALL R1 1 + 0x88040106, // 002F GETMBR R1 R0 K6 + 0x50080000, // 0030 LDBOOL R2 0 0 + 0x1C040202, // 0031 EQ R1 R1 R2 + 0x78060000, // 0032 JMPF R1 #0034 + 0x7001FFDA, // 0033 JMP #000F + 0x50040200, // 0034 LDBOOL R1 1 0 + 0x90021401, // 0035 SETMBR R0 K10 R1 + 0x8804010B, // 0036 GETMBR R1 R0 K11 + 0x8C080302, // 0037 GETMET R2 R1 K2 + 0x7C080200, // 0038 CALL R2 1 + 0x88080100, // 0039 GETMBR R2 R0 K0 + 0x8C08050D, // 003A GETMET R2 R2 K13 + 0x7C080200, // 003B CALL R2 1 + 0x90061802, // 003C SETMBR R1 K12 R2 + 0x88080103, // 003D GETMBR R2 R0 K3 + 0x90060602, // 003E SETMBR R1 K3 R2 + 0x88080106, // 003F GETMBR R2 R0 K6 + 0x90060C02, // 0040 SETMBR R1 K6 R2 + 0x8808010F, // 0041 GETMBR R2 R0 K15 + 0x90061C02, // 0042 SETMBR R1 K14 R2 + 0x4C080000, // 0043 LDNIL R2 + 0x90062002, // 0044 SETMBR R1 K16 R2 + 0x80040200, // 0045 RET 1 R1 + 0x7001FFC7, // 0046 JMP #000F + 0x8C040101, // 0047 GETMET R1 R0 K1 + 0x7C040200, // 0048 CALL R1 1 + 0x78060010, // 0049 JMPF R1 #005B + 0x8804010B, // 004A GETMBR R1 R0 K11 + 0x8C080302, // 004B GETMET R2 R1 K2 + 0x7C080200, // 004C CALL R2 1 + 0x88080111, // 004D GETMBR R2 R0 K17 + 0x90061802, // 004E SETMBR R1 K12 R2 + 0x88080112, // 004F GETMBR R2 R0 K18 + 0x90060602, // 0050 SETMBR R1 K3 R2 + 0x88080113, // 0051 GETMBR R2 R0 K19 + 0x90060C02, // 0052 SETMBR R1 K6 R2 + 0x8808010F, // 0053 GETMBR R2 R0 K15 + 0x90061C02, // 0054 SETMBR R1 K14 R2 + 0x8C080114, // 0055 GETMET R2 R0 K20 + 0x7C080200, // 0056 CALL R2 1 + 0x90062002, // 0057 SETMBR R1 K16 R2 + 0x50080200, // 0058 LDBOOL R2 1 0 + 0x90020002, // 0059 SETMBR R0 K0 R2 + 0x80040200, // 005A RET 1 R1 + 0x8C040102, // 005B GETMET R1 R0 K2 + 0x7C040200, // 005C CALL R1 1 + 0x4C040000, // 005D LDNIL R1 + 0x80040200, // 005E RET 1 R1 }) ) ); @@ -334,10 +317,10 @@ be_local_closure(class_Matter_PathGenerator_reset, /* name */ /******************************************************************** -** Solidified function: _next_endpoint +** Solidified function: _next_cluster ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ +be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ @@ -347,23 +330,17 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0, /* has sup protos */ &be_class_Matter_PathGenerator, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(path_in), - /* K4 */ be_nested_str_weak(endpoint), - /* K5 */ be_nested_str_weak(cluster), - /* K6 */ be_nested_str_weak(attribute), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(get_endpoint), - /* K10 */ be_nested_str_weak(clusters), - /* K11 */ be_nested_str_weak(get_cluster_list_sorted), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(cluster), + /* K1 */ be_nested_str_weak(clusters), + /* K2 */ be_nested_str_weak(path_in_cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(find), + /* K5 */ be_const_int(1), }), - be_str_weak(_next_endpoint), + be_str_weak(_next_cluster), &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ + ( &(const binstruction[44]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x50080000, // 0001 LDBOOL R2 0 0 0x1C040202, // 0002 EQ R1 R1 R2 @@ -371,53 +348,73 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0x50040000, // 0004 LDBOOL R1 0 0 0x80040200, // 0005 RET 1 R1 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88040302, // 0007 GETMBR R1 R1 K2 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x88080504, // 0009 GETMBR R2 R2 K4 - 0x4C0C0000, // 000A LDNIL R3 - 0x90020A03, // 000B SETMBR R0 K5 R3 - 0x4C0C0000, // 000C LDNIL R3 - 0x90020C03, // 000D SETMBR R0 K6 R3 - 0x540DFFFE, // 000E LDINT R3 -1 - 0x88100100, // 000F GETMBR R4 R0 K0 - 0x4C140000, // 0010 LDNIL R5 - 0x20100805, // 0011 NE R4 R4 R5 - 0x78120003, // 0012 JMPF R4 #0017 - 0x8C100307, // 0013 GETMET R4 R1 K7 - 0x88180100, // 0014 GETMBR R6 R0 K0 - 0x7C100400, // 0015 CALL R4 2 - 0x5C0C0800, // 0016 MOVE R3 R4 - 0x4C100000, // 0017 LDNIL R4 - 0x20100604, // 0018 NE R4 R3 R4 - 0x78120017, // 0019 JMPF R4 #0032 - 0x00100708, // 001A ADD R4 R3 K8 - 0x6014000C, // 001B GETGBL R5 G12 - 0x5C180200, // 001C MOVE R6 R1 - 0x7C140200, // 001D CALL R5 1 - 0x14100805, // 001E LT R4 R4 R5 - 0x78120011, // 001F JMPF R4 #0032 - 0x000C0708, // 0020 ADD R3 R3 K8 - 0x94100203, // 0021 GETIDX R4 R1 R3 - 0x90020004, // 0022 SETMBR R0 K0 R4 - 0x4C100000, // 0023 LDNIL R4 - 0x1C100404, // 0024 EQ R4 R2 R4 - 0x74120004, // 0025 JMPT R4 #002B - 0x88100100, // 0026 GETMBR R4 R0 K0 - 0x8C100909, // 0027 GETMET R4 R4 K9 - 0x7C100200, // 0028 CALL R4 1 - 0x1C100404, // 0029 EQ R4 R2 R4 - 0x78120005, // 002A JMPF R4 #0031 - 0x88100100, // 002B GETMBR R4 R0 K0 - 0x8C10090B, // 002C GETMET R4 R4 K11 - 0x7C100200, // 002D CALL R4 1 - 0x90021404, // 002E SETMBR R0 K10 R4 - 0x88100100, // 002F GETMBR R4 R0 K0 - 0x80040800, // 0030 RET 1 R4 - 0x7001FFE7, // 0031 JMP #001A - 0x50100000, // 0032 LDBOOL R4 0 0 - 0x90020004, // 0033 SETMBR R0 K0 R4 - 0x50100000, // 0034 LDBOOL R4 0 0 - 0x80040800, // 0035 RET 1 R4 + 0x88080102, // 0007 GETMBR R2 R0 K2 + 0x4C0C0000, // 0008 LDNIL R3 + 0x90020603, // 0009 SETMBR R0 K3 R3 + 0x540DFFFE, // 000A LDINT R3 -1 + 0x88100100, // 000B GETMBR R4 R0 K0 + 0x4C140000, // 000C LDNIL R5 + 0x20100805, // 000D NE R4 R4 R5 + 0x78120003, // 000E JMPF R4 #0013 + 0x8C100304, // 000F GETMET R4 R1 K4 + 0x88180100, // 0010 GETMBR R6 R0 K0 + 0x7C100400, // 0011 CALL R4 2 + 0x5C0C0800, // 0012 MOVE R3 R4 + 0x4C100000, // 0013 LDNIL R4 + 0x20100604, // 0014 NE R4 R3 R4 + 0x78120011, // 0015 JMPF R4 #0028 + 0x00100705, // 0016 ADD R4 R3 K5 + 0x6014000C, // 0017 GETGBL R5 G12 + 0x5C180200, // 0018 MOVE R6 R1 + 0x7C140200, // 0019 CALL R5 1 + 0x14100805, // 001A LT R4 R4 R5 + 0x7812000B, // 001B JMPF R4 #0028 + 0x000C0705, // 001C ADD R3 R3 K5 + 0x94100203, // 001D GETIDX R4 R1 R3 + 0x90020004, // 001E SETMBR R0 K0 R4 + 0x4C100000, // 001F LDNIL R4 + 0x1C100404, // 0020 EQ R4 R2 R4 + 0x74120002, // 0021 JMPT R4 #0025 + 0x88100100, // 0022 GETMBR R4 R0 K0 + 0x1C100404, // 0023 EQ R4 R2 R4 + 0x78120001, // 0024 JMPF R4 #0027 + 0x88100100, // 0025 GETMBR R4 R0 K0 + 0x80040800, // 0026 RET 1 R4 + 0x7001FFED, // 0027 JMP #0016 + 0x50100000, // 0028 LDBOOL R4 0 0 + 0x90020004, // 0029 SETMBR R0 K0 R4 + 0x50100000, // 002A LDBOOL R4 0 0 + 0x80040800, // 002B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: finished +********************************************************************/ +extern const bclass be_class_Matter_PathGenerator; +be_local_closure(class_Matter_PathGenerator_finished, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_PathGenerator, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(pi), + }), + be_str_weak(finished), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -443,13 +440,13 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ /* K1 */ be_nested_str_weak(pi), /* K2 */ be_nested_str_weak(get_attribute_list), /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(path_in), + /* K4 */ be_nested_str_weak(path_in_attribute), /* K5 */ be_nested_str_weak(find), /* K6 */ be_const_int(1), }), be_str_weak(_next_attribute), &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ + ( &(const binstruction[45]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x50080000, // 0001 LDBOOL R2 0 0 0x1C040202, // 0002 EQ R1 R1 R2 @@ -461,41 +458,226 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ 0x880C0103, // 0008 GETMBR R3 R0 K3 0x7C040400, // 0009 CALL R1 2 0x88080104, // 000A GETMBR R2 R0 K4 - 0x88080500, // 000B GETMBR R2 R2 K0 - 0x540DFFFE, // 000C LDINT R3 -1 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x4C140000, // 000E LDNIL R5 - 0x20100805, // 000F NE R4 R4 R5 - 0x78120003, // 0010 JMPF R4 #0015 - 0x8C100305, // 0011 GETMET R4 R1 K5 - 0x88180100, // 0012 GETMBR R6 R0 K0 - 0x7C100400, // 0013 CALL R4 2 - 0x5C0C0800, // 0014 MOVE R3 R4 - 0x4C100000, // 0015 LDNIL R4 - 0x20100604, // 0016 NE R4 R3 R4 - 0x78120011, // 0017 JMPF R4 #002A - 0x00100706, // 0018 ADD R4 R3 K6 - 0x6014000C, // 0019 GETGBL R5 G12 - 0x5C180200, // 001A MOVE R6 R1 - 0x7C140200, // 001B CALL R5 1 - 0x14100805, // 001C LT R4 R4 R5 - 0x7812000B, // 001D JMPF R4 #002A - 0x000C0706, // 001E ADD R3 R3 K6 - 0x94100203, // 001F GETIDX R4 R1 R3 - 0x90020004, // 0020 SETMBR R0 K0 R4 - 0x4C100000, // 0021 LDNIL R4 - 0x1C100404, // 0022 EQ R4 R2 R4 - 0x74120002, // 0023 JMPT R4 #0027 - 0x88100100, // 0024 GETMBR R4 R0 K0 - 0x1C100404, // 0025 EQ R4 R2 R4 - 0x78120001, // 0026 JMPF R4 #0029 - 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x80040800, // 0028 RET 1 R4 - 0x7001FFED, // 0029 JMP #0018 - 0x50100000, // 002A LDBOOL R4 0 0 - 0x90020004, // 002B SETMBR R0 K0 R4 - 0x50100000, // 002C LDBOOL R4 0 0 - 0x80040800, // 002D RET 1 R4 + 0x540DFFFE, // 000B LDINT R3 -1 + 0x88100100, // 000C GETMBR R4 R0 K0 + 0x4C140000, // 000D LDNIL R5 + 0x20100805, // 000E NE R4 R4 R5 + 0x78120003, // 000F JMPF R4 #0014 + 0x8C100305, // 0010 GETMET R4 R1 K5 + 0x88180100, // 0011 GETMBR R6 R0 K0 + 0x7C100400, // 0012 CALL R4 2 + 0x5C0C0800, // 0013 MOVE R3 R4 + 0x4C100000, // 0014 LDNIL R4 + 0x20100604, // 0015 NE R4 R3 R4 + 0x78120011, // 0016 JMPF R4 #0029 + 0x00100706, // 0017 ADD R4 R3 K6 + 0x6014000C, // 0018 GETGBL R5 G12 + 0x5C180200, // 0019 MOVE R6 R1 + 0x7C140200, // 001A CALL R5 1 + 0x14100805, // 001B LT R4 R4 R5 + 0x7812000B, // 001C JMPF R4 #0029 + 0x000C0706, // 001D ADD R3 R3 K6 + 0x94100203, // 001E GETIDX R4 R1 R3 + 0x90020004, // 001F SETMBR R0 K0 R4 + 0x4C100000, // 0020 LDNIL R4 + 0x1C100404, // 0021 EQ R4 R2 R4 + 0x74120002, // 0022 JMPT R4 #0026 + 0x88100100, // 0023 GETMBR R4 R0 K0 + 0x1C100404, // 0024 EQ R4 R2 R4 + 0x78120001, // 0025 JMPF R4 #0028 + 0x88100100, // 0026 GETMBR R4 R0 K0 + 0x80040800, // 0027 RET 1 R4 + 0x7001FFED, // 0028 JMP #0017 + 0x50100000, // 0029 LDBOOL R4 0 0 + 0x90020004, // 002A SETMBR R0 K0 R4 + 0x50100000, // 002B LDBOOL R4 0 0 + 0x80040800, // 002C RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _next_endpoint +********************************************************************/ +extern const bclass be_class_Matter_PathGenerator; +be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_PathGenerator, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(pi), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(path_in_endpoint), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(get_endpoint), + /* K9 */ be_nested_str_weak(clusters), + /* K10 */ be_nested_str_weak(get_cluster_list_sorted), + }), + be_str_weak(_next_endpoint), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060001, // 0003 JMPF R1 #0006 + 0x50040000, // 0004 LDBOOL R1 0 0 + 0x80040200, // 0005 RET 1 R1 + 0x88040101, // 0006 GETMBR R1 R0 K1 + 0x88040302, // 0007 GETMBR R1 R1 K2 + 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x4C0C0000, // 0009 LDNIL R3 + 0x90020803, // 000A SETMBR R0 K4 R3 + 0x4C0C0000, // 000B LDNIL R3 + 0x90020A03, // 000C SETMBR R0 K5 R3 + 0x540DFFFE, // 000D LDINT R3 -1 + 0x88100100, // 000E GETMBR R4 R0 K0 + 0x4C140000, // 000F LDNIL R5 + 0x20100805, // 0010 NE R4 R4 R5 + 0x78120003, // 0011 JMPF R4 #0016 + 0x8C100306, // 0012 GETMET R4 R1 K6 + 0x88180100, // 0013 GETMBR R6 R0 K0 + 0x7C100400, // 0014 CALL R4 2 + 0x5C0C0800, // 0015 MOVE R3 R4 + 0x4C100000, // 0016 LDNIL R4 + 0x20100604, // 0017 NE R4 R3 R4 + 0x78120017, // 0018 JMPF R4 #0031 + 0x00100707, // 0019 ADD R4 R3 K7 + 0x6014000C, // 001A GETGBL R5 G12 + 0x5C180200, // 001B MOVE R6 R1 + 0x7C140200, // 001C CALL R5 1 + 0x14100805, // 001D LT R4 R4 R5 + 0x78120011, // 001E JMPF R4 #0031 + 0x000C0707, // 001F ADD R3 R3 K7 + 0x94100203, // 0020 GETIDX R4 R1 R3 + 0x90020004, // 0021 SETMBR R0 K0 R4 + 0x4C100000, // 0022 LDNIL R4 + 0x1C100404, // 0023 EQ R4 R2 R4 + 0x74120004, // 0024 JMPT R4 #002A + 0x88100100, // 0025 GETMBR R4 R0 K0 + 0x8C100908, // 0026 GETMET R4 R4 K8 + 0x7C100200, // 0027 CALL R4 1 + 0x1C100404, // 0028 EQ R4 R2 R4 + 0x78120005, // 0029 JMPF R4 #0030 + 0x88100100, // 002A GETMBR R4 R0 K0 + 0x8C10090A, // 002B GETMET R4 R4 K10 + 0x7C100200, // 002C CALL R4 1 + 0x90021204, // 002D SETMBR R0 K9 R4 + 0x88100100, // 002E GETMBR R4 R0 K0 + 0x80040800, // 002F RET 1 R4 + 0x7001FFE7, // 0030 JMP #0019 + 0x50100000, // 0031 LDBOOL R4 0 0 + 0x90020004, // 0032 SETMBR R0 K0 R4 + 0x50100000, // 0033 LDBOOL R4 0 0 + 0x80040800, // 0034 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_pi +********************************************************************/ +extern const bclass be_class_Matter_PathGenerator; +be_local_closure(class_Matter_PathGenerator_get_pi, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_PathGenerator, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(pi), + }), + be_str_weak(get_pi), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x74060003, // 0003 JMPT R1 #0008 + 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x50080200, // 0005 LDBOOL R2 1 0 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x78060001, // 0007 JMPF R1 #000A + 0x4C040000, // 0008 LDNIL R1 + 0x70020000, // 0009 JMP #000B + 0x88040100, // 000A GETMBR R1 R0 K0 + 0x80040200, // 000B RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +extern const bclass be_class_Matter_PathGenerator; +be_local_closure(class_Matter_PathGenerator_start, /* name */ + be_nested_proto( + 7, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_PathGenerator, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(path_concrete), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(Path), + /* K3 */ be_nested_str_weak(reset), + /* K4 */ be_nested_str_weak(path_in_endpoint), + /* K5 */ be_nested_str_weak(path_in_cluster), + /* K6 */ be_nested_str_weak(path_in_attribute), + /* K7 */ be_nested_str_weak(path_in_fabric_filtered), + /* K8 */ be_nested_str_weak(pi), + /* K9 */ be_nested_str_weak(endpoint_found), + /* K10 */ be_nested_str_weak(cluster_found), + /* K11 */ be_nested_str_weak(attribute_found), + }), + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xB8160200, // 0000 GETNGBL R5 K1 + 0x8C140B02, // 0001 GETMET R5 R5 K2 + 0x7C140200, // 0002 CALL R5 1 + 0x90020005, // 0003 SETMBR R0 K0 R5 + 0x8C140103, // 0004 GETMET R5 R0 K3 + 0x7C140200, // 0005 CALL R5 1 + 0x90020801, // 0006 SETMBR R0 K4 R1 + 0x90020A02, // 0007 SETMBR R0 K5 R2 + 0x90020C03, // 0008 SETMBR R0 K6 R3 + 0x60140017, // 0009 GETGBL R5 G23 + 0x5C180800, // 000A MOVE R6 R4 + 0x7C140200, // 000B CALL R5 1 + 0x90020E05, // 000C SETMBR R0 K7 R5 + 0x4C140000, // 000D LDNIL R5 + 0x90021005, // 000E SETMBR R0 K8 R5 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x90021205, // 0010 SETMBR R0 K9 R5 + 0x50140000, // 0011 LDBOOL R5 0 0 + 0x90021405, // 0012 SETMBR R0 K10 R5 + 0x50140000, // 0013 LDBOOL R5 0 0 + 0x90021605, // 0014 SETMBR R0 K11 R5 + 0x80000000, // 0015 RET 0 }) ) ); @@ -506,29 +688,34 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ ** Solidified class: Matter_PathGenerator ********************************************************************/ be_local_class(Matter_PathGenerator, - 11, + 13, NULL, - be_nested_map(19, + be_nested_map(24, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_next_cluster, -1), be_const_closure(class_Matter_PathGenerator__next_cluster_closure) }, - { be_const_key_weak(_next_endpoint, -1), be_const_closure(class_Matter_PathGenerator__next_endpoint_closure) }, - { be_const_key_weak(endpoint_found, 0), be_const_var(7) }, + { be_const_key_weak(reset, -1), be_const_closure(class_Matter_PathGenerator_reset_closure) }, { be_const_key_weak(start, -1), be_const_closure(class_Matter_PathGenerator_start_closure) }, - { be_const_key_weak(session, -1), be_const_var(2) }, - { be_const_key_weak(get_pi, 12), be_const_closure(class_Matter_PathGenerator_get_pi_closure) }, - { be_const_key_weak(pi, -1), be_const_var(3) }, - { be_const_key_weak(attribute, 10), be_const_var(5) }, - { be_const_key_weak(cluster_found, 14), be_const_var(8) }, - { be_const_key_weak(device, -1), be_const_var(0) }, - { be_const_key_weak(attribute_found, -1), be_const_var(9) }, - { be_const_key_weak(clusters, -1), be_const_var(6) }, - { be_const_key_weak(path_in, -1), be_const_var(1) }, - { be_const_key_weak(init, 11), be_const_closure(class_Matter_PathGenerator_init_closure) }, - { be_const_key_weak(path_concrete, -1), be_const_var(10) }, - { be_const_key_weak(next, 9), be_const_closure(class_Matter_PathGenerator_next_closure) }, - { be_const_key_weak(cluster, 4), be_const_var(4) }, - { be_const_key_weak(reset, 1), be_const_closure(class_Matter_PathGenerator_reset_closure) }, + { be_const_key_weak(pi, -1), be_const_var(5) }, + { be_const_key_weak(init, 15), be_const_closure(class_Matter_PathGenerator_init_closure) }, + { be_const_key_weak(path_in_endpoint, -1), be_const_var(1) }, + { be_const_key_weak(path_in_cluster, -1), be_const_var(2) }, + { be_const_key_weak(get_pi, -1), be_const_closure(class_Matter_PathGenerator_get_pi_closure) }, + { be_const_key_weak(is_direct, 22), be_const_closure(class_Matter_PathGenerator_is_direct_closure) }, + { be_const_key_weak(default_status_error, 9), be_const_closure(class_Matter_PathGenerator_default_status_error_closure) }, + { be_const_key_weak(next, -1), be_const_closure(class_Matter_PathGenerator_next_closure) }, + { be_const_key_weak(cluster_found, 17), be_const_var(10) }, + { be_const_key_weak(endpoint_found, 6), be_const_var(9) }, { be_const_key_weak(_next_attribute, -1), be_const_closure(class_Matter_PathGenerator__next_attribute_closure) }, + { be_const_key_weak(cluster, -1), be_const_var(6) }, + { be_const_key_weak(_next_cluster, -1), be_const_closure(class_Matter_PathGenerator__next_cluster_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(path_concrete, -1), be_const_var(12) }, + { be_const_key_weak(clusters, -1), be_const_var(8) }, + { be_const_key_weak(path_in_fabric_filtered, -1), be_const_var(4) }, + { be_const_key_weak(finished, -1), be_const_closure(class_Matter_PathGenerator_finished_closure) }, + { be_const_key_weak(attribute_found, 12), be_const_var(11) }, + { be_const_key_weak(_next_endpoint, -1), be_const_closure(class_Matter_PathGenerator__next_endpoint_closure) }, + { be_const_key_weak(path_in_attribute, -1), be_const_var(3) }, + { be_const_key_weak(attribute, 1), be_const_var(7) }, })), be_str_weak(Matter_PathGenerator) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index f045923c7..8fc07b9df 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -837,7 +837,7 @@ be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ be_nested_proto( - 16, /* nstack */ + 12, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -845,100 +845,48 @@ be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(endpoint), /* K1 */ be_nested_str_weak(cluster), /* K2 */ be_nested_str_weak(attribute), /* K3 */ be_nested_str_weak(matter), /* K4 */ be_nested_str_weak(PathGenerator), /* K5 */ be_nested_str_weak(start), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(get_pi), - /* K8 */ be_nested_str_weak(endpoint_found), - /* K9 */ be_nested_str_weak(status), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K11 */ be_nested_str_weak(cluster_found), - /* K12 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K13 */ be_nested_str_weak(attribute_found), - /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + /* K6 */ be_nested_str_weak(is_direct), + /* K7 */ be_nested_str_weak(next), + /* K8 */ be_nested_str_weak(get_pi), }), be_str_weak(process_attribute_expansion), &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ + ( &(const binstruction[28]) { /* code */ 0x880C0300, // 0000 GETMBR R3 R1 K0 0x88100301, // 0001 GETMBR R4 R1 K1 0x88140302, // 0002 GETMBR R5 R1 K2 - 0x50180000, // 0003 LDBOOL R6 0 0 - 0x501C0000, // 0004 LDBOOL R7 0 0 - 0x50200000, // 0005 LDBOOL R8 0 0 - 0x88240300, // 0006 GETMBR R9 R1 K0 - 0x4C280000, // 0007 LDNIL R10 - 0x2024120A, // 0008 NE R9 R9 R10 - 0x78260007, // 0009 JMPF R9 #0012 - 0x88240301, // 000A GETMBR R9 R1 K1 - 0x4C280000, // 000B LDNIL R10 - 0x2024120A, // 000C NE R9 R9 R10 - 0x78260003, // 000D JMPF R9 #0012 - 0x88240302, // 000E GETMBR R9 R1 K2 - 0x4C280000, // 000F LDNIL R10 - 0x2024120A, // 0010 NE R9 R9 R10 - 0x74260000, // 0011 JMPT R9 #0013 - 0x50240001, // 0012 LDBOOL R9 0 1 - 0x50240200, // 0013 LDBOOL R9 1 0 - 0xB82A0600, // 0014 GETNGBL R10 K3 - 0x8C281504, // 0015 GETMET R10 R10 K4 - 0x5C300000, // 0016 MOVE R12 R0 - 0x7C280400, // 0017 CALL R10 2 - 0x8C2C1505, // 0018 GETMET R11 R10 K5 - 0x5C340200, // 0019 MOVE R13 R1 - 0x4C380000, // 001A LDNIL R14 - 0x7C2C0600, // 001B CALL R11 3 - 0x4C2C0000, // 001C LDNIL R11 - 0x8C301506, // 001D GETMET R12 R10 K6 - 0x7C300200, // 001E CALL R12 1 - 0x5C2C1800, // 001F MOVE R11 R12 - 0x4C340000, // 0020 LDNIL R13 - 0x2030180D, // 0021 NE R12 R12 R13 - 0x78320009, // 0022 JMPF R12 #002D - 0x5C300400, // 0023 MOVE R12 R2 - 0x8C341507, // 0024 GETMET R13 R10 K7 - 0x7C340200, // 0025 CALL R13 1 - 0x5C381600, // 0026 MOVE R14 R11 - 0x5C3C1200, // 0027 MOVE R15 R9 - 0x7C300600, // 0028 CALL R12 3 - 0x78260001, // 0029 JMPF R9 #002C - 0x78320000, // 002A JMPF R12 #002C - 0x80001A00, // 002B RET 0 - 0x7001FFEF, // 002C JMP #001D - 0x78260019, // 002D JMPF R9 #0048 - 0x88301508, // 002E GETMBR R12 R10 K8 - 0x74320003, // 002F JMPT R12 #0034 - 0xB8320600, // 0030 GETNGBL R12 K3 - 0x8830190A, // 0031 GETMBR R12 R12 K10 - 0x9006120C, // 0032 SETMBR R1 K9 R12 - 0x7002000E, // 0033 JMP #0043 - 0x8830150B, // 0034 GETMBR R12 R10 K11 - 0x74320003, // 0035 JMPT R12 #003A - 0xB8320600, // 0036 GETNGBL R12 K3 - 0x8830190C, // 0037 GETMBR R12 R12 K12 - 0x9006120C, // 0038 SETMBR R1 K9 R12 - 0x70020008, // 0039 JMP #0043 - 0x8830150D, // 003A GETMBR R12 R10 K13 - 0x74320003, // 003B JMPT R12 #0040 - 0xB8320600, // 003C GETNGBL R12 K3 - 0x8830190E, // 003D GETMBR R12 R12 K14 - 0x9006120C, // 003E SETMBR R1 K9 R12 - 0x70020002, // 003F JMP #0043 - 0xB8320600, // 0040 GETNGBL R12 K3 - 0x8830190F, // 0041 GETMBR R12 R12 K15 - 0x9006120C, // 0042 SETMBR R1 K9 R12 - 0x5C300400, // 0043 MOVE R12 R2 - 0x4C340000, // 0044 LDNIL R13 - 0x5C380200, // 0045 MOVE R14 R1 - 0x503C0200, // 0046 LDBOOL R15 1 0 - 0x7C300600, // 0047 CALL R12 3 - 0x80000000, // 0048 RET 0 + 0xB81A0600, // 0003 GETNGBL R6 K3 + 0x8C180D04, // 0004 GETMET R6 R6 K4 + 0x5C200000, // 0005 MOVE R8 R0 + 0x7C180400, // 0006 CALL R6 2 + 0x8C1C0D05, // 0007 GETMET R7 R6 K5 + 0x5C240600, // 0008 MOVE R9 R3 + 0x5C280800, // 0009 MOVE R10 R4 + 0x5C2C0A00, // 000A MOVE R11 R5 + 0x7C1C0800, // 000B CALL R7 4 + 0x8C1C0D06, // 000C GETMET R7 R6 K6 + 0x7C1C0200, // 000D CALL R7 1 + 0x4C200000, // 000E LDNIL R8 + 0x8C240D07, // 000F GETMET R9 R6 K7 + 0x7C240200, // 0010 CALL R9 1 + 0x5C201200, // 0011 MOVE R8 R9 + 0x4C280000, // 0012 LDNIL R10 + 0x2024120A, // 0013 NE R9 R9 R10 + 0x78260005, // 0014 JMPF R9 #001B + 0x5C240400, // 0015 MOVE R9 R2 + 0x8C280D08, // 0016 GETMET R10 R6 K8 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C1000, // 0018 MOVE R11 R8 + 0x7C240400, // 0019 CALL R9 2 + 0x7001FFF3, // 001A JMP #000F + 0x80000000, // 001B RET 0 }) ) ); @@ -2093,7 +2041,7 @@ be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ }), be_str_weak(resolve_attribute_read_solo), &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ + ( &(const binstruction[47]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0x880C0301, // 0001 GETMBR R3 R1 K1 0x88100302, // 0002 GETMBR R4 R1 K2 @@ -2113,32 +2061,34 @@ be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ 0x7C140400, // 0010 CALL R5 2 0x4C180000, // 0011 LDNIL R6 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0004, // 0013 JMPF R6 #0019 + 0x781A0005, // 0013 JMPF R6 #001A 0xB81A0A00, // 0014 GETNGBL R6 K5 0x88180D06, // 0015 GETMBR R6 R6 K6 0x90060806, // 0016 SETMBR R1 K4 R6 0x4C180000, // 0017 LDNIL R6 0x80040C00, // 0018 RET 1 R6 - 0x8C180B07, // 0019 GETMET R6 R5 K7 - 0x5C200600, // 001A MOVE R8 R3 - 0x7C180400, // 001B CALL R6 2 - 0x741A0004, // 001C JMPT R6 #0022 - 0xB81A0A00, // 001D GETNGBL R6 K5 - 0x88180D08, // 001E GETMBR R6 R6 K8 - 0x90060806, // 001F SETMBR R1 K4 R6 - 0x4C180000, // 0020 LDNIL R6 - 0x80040C00, // 0021 RET 1 R6 - 0x8C180B09, // 0022 GETMET R6 R5 K9 - 0x5C200600, // 0023 MOVE R8 R3 - 0x5C240800, // 0024 MOVE R9 R4 - 0x7C180600, // 0025 CALL R6 3 - 0x741A0004, // 0026 JMPT R6 #002C - 0xB81A0A00, // 0027 GETNGBL R6 K5 - 0x88180D0A, // 0028 GETMBR R6 R6 K10 - 0x90060806, // 0029 SETMBR R1 K4 R6 - 0x4C180000, // 002A LDNIL R6 - 0x80040C00, // 002B RET 1 R6 - 0x80040A00, // 002C RET 1 R5 + 0x70020013, // 0019 JMP #002E + 0x8C180B07, // 001A GETMET R6 R5 K7 + 0x5C200600, // 001B MOVE R8 R3 + 0x7C180400, // 001C CALL R6 2 + 0x741A0005, // 001D JMPT R6 #0024 + 0xB81A0A00, // 001E GETNGBL R6 K5 + 0x88180D08, // 001F GETMBR R6 R6 K8 + 0x90060806, // 0020 SETMBR R1 K4 R6 + 0x4C180000, // 0021 LDNIL R6 + 0x80040C00, // 0022 RET 1 R6 + 0x70020009, // 0023 JMP #002E + 0x8C180B09, // 0024 GETMET R6 R5 K9 + 0x5C200600, // 0025 MOVE R8 R3 + 0x5C240800, // 0026 MOVE R9 R4 + 0x7C180600, // 0027 CALL R6 3 + 0x741A0004, // 0028 JMPT R6 #002E + 0xB81A0A00, // 0029 GETNGBL R6 K5 + 0x88180D0A, // 002A GETMBR R6 R6 K10 + 0x90060806, // 002B SETMBR R1 K4 R6 + 0x4C180000, // 002C LDNIL R6 + 0x80040C00, // 002D RET 1 R6 + 0x80040A00, // 002E RET 1 R5 }) ) ); @@ -6163,25 +6113,25 @@ be_local_class(Matter_Device, { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) }, { be_const_key_weak(http_pressure, 32), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, - { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, { be_const_key_weak(v_illuminance, 15), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, { be_const_key_weak(contact, 1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(http_relay, 12), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(temperature, 27), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) }, { be_const_key_weak(http_occupancy, 6), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) }, { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, { be_const_key_weak(root, -1), be_const_class(be_class_Matter_Plugin_Root) }, { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(v_temp, 20), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(v_temp, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, + { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, - { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, - { be_const_key_weak(light2, 27), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, + { be_const_key_weak(light2, 29), be_const_class(be_class_Matter_Plugin_Light2) }, { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, @@ -6192,14 +6142,14 @@ be_local_class(Matter_Device, { be_const_key_weak(v_rain, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, { be_const_key_weak(http_waterleak, 45), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, { be_const_key_weak(airquality, 35), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(http_temperature, 41), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(http_temperature, 20), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(v_humidity, 29), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, + { be_const_key_weak(v_humidity, 12), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, { be_const_key_weak(aggregator, 11), be_const_class(be_class_Matter_Plugin_Aggregator) }, { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, From b853886cb7f6426306a62d1e28c42c6a67b0e8d2 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 22 Jun 2024 13:37:20 +0200 Subject: [PATCH 081/252] Refactor `strip_flags.py` and `add_c_flags.py` (#21677) * refactor strip-flags.py * refac more readable * make failsafe * move var to top * align --- pio-tools/add_c_flags.py | 19 ++++++++++++------- pio-tools/strip-flags.py | 18 +++++++++--------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/pio-tools/add_c_flags.py b/pio-tools/add_c_flags.py index 7e51a4fe1..345d4e814 100644 --- a/pio-tools/add_c_flags.py +++ b/pio-tools/add_c_flags.py @@ -1,16 +1,21 @@ Import("env") +build_flags = env['BUILD_FLAGS'] +chip = env.get("BOARD_MCU").lower() + # General options that are passed to the C++ compiler env.Append(CXXFLAGS=["-Wno-volatile"]) # General options that are passed to the C compiler (C only; not C++). env.Append(CFLAGS=["-Wno-discarded-qualifiers", "-Wno-implicit-function-declaration", "-Wno-incompatible-pointer-types"]) - # Remove build flags which are not valid for risc-v -build_flags = env['BUILD_FLAGS'] -chip = env.get("BOARD_MCU").lower() - -if "c" in chip: - build_flags.pop(build_flags.index("-mno-target-align")) - build_flags.pop(build_flags.index("-mtarget-align")) +if chip in ("esp32c2", "esp32c3", "esp32c6", "esp32h2"): + try: + build_flags.pop(build_flags.index("-mno-target-align")) + except: + do_nothing="" + try: + build_flags.pop(build_flags.index("-mtarget-align")) + except: + do_nothing="" \ No newline at end of file diff --git a/pio-tools/strip-flags.py b/pio-tools/strip-flags.py index 714e84a0f..981918273 100644 --- a/pio-tools/strip-flags.py +++ b/pio-tools/strip-flags.py @@ -1,15 +1,15 @@ Import('env') -link_flags = " ".join(env['LINKFLAGS']) +link_flags = env['LINKFLAGS'] build_flags = " ".join(env['BUILD_FLAGS']) if "FIRMWARE_SAFEBOOT" in build_flags: # Crash Recorder is not included in safeboot firmware -> remove Linker wrap - link_flags = link_flags.replace("-Wl,--wrap=panicHandler", "") - link_flags = link_flags.replace("-Wl,--wrap=xt_unhandled_exception", "") - -new_link_flags = link_flags.split() - -env.Replace( - LINKFLAGS=new_link_flags -) + try: + link_flags.pop(link_flags.index("-Wl,--wrap=panicHandler")) + except: + do_nothing="" + try: + link_flags.pop(link_flags.index("-Wl,--wrap=xt_unhandled_exception")) + except: + do_nothing="" \ No newline at end of file From 904fb01e75d36f1d284503de716ad793e629ef17 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Jun 2024 14:12:48 +0200 Subject: [PATCH 082/252] Update changelogs --- CHANGELOG.md | 3 +-- RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44c81e329..8070ff702 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,12 +19,11 @@ All notable changes to this project will be documented in this file. - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - SML replace vars in descriptor and line (#21622) - NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) -- NeoPool make compiler setting available by user_config_override.h - NeoPool make compiler setting available by `user_config_override.h` (#21645) - ESP32 MI32 improve parser (#21648) - ESP8266 platform update from 2024.01.01 to 2024.06.00 (#21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 (#21668) -- Matter refactor reading of multiple attributes to reduce memory pressure +- Matter refactor reading of multiple attributes to reduce memory pressure (#21675) ### Fixed - Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f75cd7a0c..ac1c2d110 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -151,6 +151,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) - Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633) +- Matter refactor reading of multiple attributes to reduce memory pressure [#21675](https://github.com/arendst/Tasmota/issues/21675) ### Fixed - Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663) From f3dcbdcea97b337de5abc1f6d80c2894051aac1c Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Sat, 22 Jun 2024 13:17:05 +0100 Subject: [PATCH 083/252] FIX: Allow use of UART0 with enabled USB_CDC_CONSOLE (#21496) Co-authored-by: Roland Praml --- tasmota/tasmota_support/support.ino | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index 57f207c67..fb945953a 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -2138,7 +2138,9 @@ void ClaimSerial(void) { #ifdef ESP32 #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 #ifdef USE_USB_CDC_CONSOLE - return; // USB console does not use serial + if (!tasconsole_serial) { + return; // USB console does not use serial + } #endif // USE_USB_CDC_CONSOLE #endif // ESP32C3/C6, S2 or S3 #endif // ESP32 From 25f17d714156352376e4ce66545e26f934636b5d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Jun 2024 14:22:09 +0200 Subject: [PATCH 084/252] Update changelogs --- CHANGELOG.md | 1 + RELEASENOTES.md | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8070ff702..303e03c57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ All notable changes to this project will be documented in this file. - Scripter TCP server (#21660) - Matter TLV.U8 unsigned encoding (#21672) - Matter resumption final ack (#21673) +- ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE (#21496) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ac1c2d110..a788376d1 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -34,11 +34,11 @@ While fallback or downgrading is common practice it was never supported due to S ## Supported Core versions -This release will be supported from ESP8266/Arduino library Core version **2.7.6** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. +This release will be supported from ESP8266/Arduino library Core version **2.7.7** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. This release will be supported from ESP32/Arduino library Core version **3.0.1**. -Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 3.0.1 have been removed. +Support of ESP8266 Core versions before 2.7.7 and ESP32 Core versions before 3.0.1 have been removed. ### Known issues with v14.1.0 @@ -60,7 +60,7 @@ Easy initial installation of Tasmota can be performed using the [Tasmota WebInst ## Provided Binary Downloads ### ESP8266 or ESP8285 based -The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.6**. +The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.7**. - **tasmota.bin** = The Tasmota version with most drivers for 1M+ flash. **RECOMMENDED RELEASE BINARY** - **tasmota-4M.bin** = The Tasmota version with most drivers and filesystem for 4M+ flash. @@ -156,6 +156,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Fixed - Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663) - Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660) +- ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496) - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) - Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644) From 17ea73275319b262c7b40870eb223e35892bb0c1 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 23 Jun 2024 15:01:07 +0200 Subject: [PATCH 085/252] Do not abort compile when safeboot firmware can not be downloaded (#21684) * Message when dl of safeboot failed * check for safeboot --- pio-tools/post_esp32.py | 133 ++++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 60 deletions(-) diff --git a/pio-tools/post_esp32.py b/pio-tools/post_esp32.py index a468e14e1..e296be29e 100644 --- a/pio-tools/post_esp32.py +++ b/pio-tools/post_esp32.py @@ -181,18 +181,30 @@ def esp32_fetch_safeboot_bin(tasmota_platform): safeboot_fw_name = join(variants_dir, tasmota_platform + "-safeboot.bin") if(exists(safeboot_fw_name)): print("safeboot binary already in place.") - return + return True print("Will download safeboot binary from URL:") print(safeboot_fw_url) - response = requests.get(safeboot_fw_url) - open(safeboot_fw_name, "wb").write(response.content) - print("safeboot binary written to variants dir.") + try: + response = requests.get(safeboot_fw_url) + open(safeboot_fw_name, "wb").write(response.content) + print("safeboot binary written to variants dir.") + return True + except: + print(Fore.RED + "Download of safeboot binary failed. Please check your Internet connection.") + print(Fore.RED + "Creation of " + tasmota_platform + "-factory.bin not possible") + print(Fore.YELLOW + "Without Internet " + Fore.GREEN + tasmota_platform + "-safeboot.bin" + Fore.YELLOW + " needs to be compiled before " + Fore.GREEN + tasmota_platform) + return False def esp32_copy_new_safeboot_bin(tasmota_platform,new_local_safeboot_fw): print("Copy new local safeboot firmware to variants dir -> using it for further flashing operations") safeboot_fw_name = join(variants_dir, tasmota_platform + "-safeboot.bin") if os.path.exists(variants_dir): - shutil.copy(new_local_safeboot_fw, safeboot_fw_name) + try: + shutil.copy(new_local_safeboot_fw, safeboot_fw_name) + return True + except: + return False + def esp32_create_combined_bin(source, target, env): #print("Generating combined binary for serial flashing") @@ -235,69 +247,70 @@ def esp32_create_combined_bin(source, target, env): if not os.path.exists(variants_dir): os.makedirs(variants_dir) if "safeboot" in firmware_name: - esp32_copy_new_safeboot_bin(tasmota_platform,firmware_name) + s_flag = esp32_copy_new_safeboot_bin(tasmota_platform,firmware_name) else: - esp32_fetch_safeboot_bin(tasmota_platform) + s_flag = esp32_fetch_safeboot_bin(tasmota_platform) - flash_size = env.BoardConfig().get("upload.flash_size", "4MB") - flash_mode = env["__get_board_flash_mode"](env) - flash_freq = env["__get_board_f_flash"](env) + if s_flag: # check if safeboot firmware is existing + flash_size = env.BoardConfig().get("upload.flash_size", "4MB") + flash_mode = env["__get_board_flash_mode"](env) + flash_freq = env["__get_board_f_flash"](env) - cmd = [ - "--chip", - chip, - "merge_bin", - "-o", - new_file_name, - "--flash_mode", - flash_mode, - "--flash_freq", - flash_freq, - "--flash_size", - flash_size, - ] + cmd = [ + "--chip", + chip, + "merge_bin", + "-o", + new_file_name, + "--flash_mode", + flash_mode, + "--flash_freq", + flash_freq, + "--flash_size", + flash_size, + ] - print(" Offset | File") - for section in sections: - sect_adr, sect_file = section.split(" ", 1) - print(f" - {sect_adr} | {sect_file}") - cmd += [sect_adr, sect_file] + print(" Offset | File") + for section in sections: + sect_adr, sect_file = section.split(" ", 1) + print(f" - {sect_adr} | {sect_file}") + cmd += [sect_adr, sect_file] - # "main" firmware to app0 - mandatory, except we just built a new safeboot bin locally - if "safeboot" not in firmware_name: - print(f" - {hex(app_offset)} | {firmware_name}") - cmd += [hex(app_offset), firmware_name] + # "main" firmware to app0 - mandatory, except we just built a new safeboot bin locally + if ("safeboot" not in firmware_name): + print(f" - {hex(app_offset)} | {firmware_name}") + cmd += [hex(app_offset), firmware_name] - else: - print("Upload new safeboot binary only") + else: + print("Upload new safeboot binary only") - upload_protocol = env.subst("$UPLOAD_PROTOCOL") - if(upload_protocol == "esptool") and (fs_offset != -1): - fs_bin = join(env.subst("$BUILD_DIR"),"littlefs.bin") - if exists(fs_bin): - before_reset = env.BoardConfig().get("upload.before_reset", "default_reset") - after_reset = env.BoardConfig().get("upload.after_reset", "hard_reset") - print(f" - {hex(fs_offset)}| {fs_bin}") - cmd += [hex(fs_offset), fs_bin] - env.Replace( - UPLOADERFLAGS=[ - "--chip", chip, - "--port", '"$UPLOAD_PORT"', - "--baud", "$UPLOAD_SPEED", - "--before", before_reset, - "--after", after_reset, - "write_flash", "-z", - "--flash_mode", "${__get_board_flash_mode(__env__)}", - "--flash_freq", "${__get_board_f_flash(__env__)}", - "--flash_size", flash_size - ], - UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS ' + " ".join(cmd[7:]) - ) - print("Will use custom upload command for flashing operation to add file system defined for this build target.") + upload_protocol = env.subst("$UPLOAD_PROTOCOL") + if(upload_protocol == "esptool") and (fs_offset != -1): + fs_bin = join(env.subst("$BUILD_DIR"),"littlefs.bin") + if exists(fs_bin): + before_reset = env.BoardConfig().get("upload.before_reset", "default_reset") + after_reset = env.BoardConfig().get("upload.after_reset", "hard_reset") + print(f" - {hex(fs_offset)}| {fs_bin}") + cmd += [hex(fs_offset), fs_bin] + env.Replace( + UPLOADERFLAGS=[ + "--chip", chip, + "--port", '"$UPLOAD_PORT"', + "--baud", "$UPLOAD_SPEED", + "--before", before_reset, + "--after", after_reset, + "write_flash", "-z", + "--flash_mode", "${__get_board_flash_mode(__env__)}", + "--flash_freq", "${__get_board_f_flash(__env__)}", + "--flash_size", flash_size + ], + UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS ' + " ".join(cmd[7:]) + ) + print("Will use custom upload command for flashing operation to add file system defined for this build target.") - if("safeboot" not in firmware_name): - #print('Using esptool.py arguments: %s' % ' '.join(cmd)) - esptool.main(cmd) + if("safeboot" not in firmware_name): + #print('Using esptool.py arguments: %s' % ' '.join(cmd)) + esptool.main(cmd) env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", esp32_create_combined_bin) From ddf762b7cce341c3d47081ba6497d9a753ea9d7a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 23 Jun 2024 17:38:54 +0200 Subject: [PATCH 086/252] Refactor GPS driver --- tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino | 306 ++++++++++---------- 1 file changed, 161 insertions(+), 145 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino index 73b307450..82f10f0cf 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino @@ -21,7 +21,7 @@ #if defined(ESP32) && defined(USE_FLOG) #undef USE_FLOG #warning FLOG deactivated on ESP32 -#endif //ESP32 +#endif // ESP32 /*********************************************************************************************\ -------------------------------------------------------------------------------------------- Version Date Action Description @@ -156,7 +156,7 @@ const char UBLOX_INIT[] PROGMEM = { 0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x92, //NAV-TIMEUTC off #ifdef USE_GPS_VELOCITY 0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x29, //NAV-VELNED off -#endif +#endif // USE_GPS_VELOCITY // Enable UBX // 0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x07,0x00,0x01,0x00,0x00,0x00,0x00,0x18,0xE1, //NAV-PVT on @@ -165,7 +165,7 @@ const char UBLOX_INIT[] PROGMEM = { 0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x21,0x00,0x01,0x00,0x00,0x00,0x00,0x32,0x97, //NAV-TIMEUTC on #ifdef USE_GPS_VELOCITY 0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x12,0x00,0x01,0x00,0x00,0x00,0x00,0x23,0x2E, //NAV-VELNED on -#endif +#endif // USE_GPS_VELOCITY // Rate - we will not reset it for the moment after restart // 0xB5,0x62,0x06,0x08,0x06,0x00,0x64,0x00,0x01,0x00,0x01,0x00,0x7A,0x12, //(10Hz) // 0xB5,0x62,0x06,0x08,0x06,0x00,0xC8,0x00,0x01,0x00,0x01,0x00,0xDE,0x6A, //(5Hz) @@ -181,19 +181,22 @@ struct UBX_t { const char NAV_STATUS_HEADER[2] = { 0x01, 0x03 }; const char NAV_TIME_HEADER[2] = { 0x01, 0x21 }; #ifdef USE_GPS_VELOCITY - const char NAV_VEL_HEADER[2] = { 0x01, 0x12 }; -#endif + const char NAV_VEL_HEADER[2] = { 0x01, 0x12 }; +#endif // USE_GPS_VELOCITY + + int32_t lat; + int32_t lon; struct entry_t { - int32_t lat; //raw sensor value - int32_t lon; //raw sensor value - uint32_t time; //local time from system (maybe provided by the sensor) - }; + int32_t lat; // raw sensor value + int32_t lon; // raw sensor value + uint32_t time; // local time from system (maybe provided by the sensor) + }; union { entry_t values; uint8_t bytes[sizeof(entry_t)]; - } rec_buffer; + } rec_buffer; struct POLL_MSG { uint8_t cls; @@ -202,76 +205,78 @@ struct UBX_t { }; struct NAV_POSLLH { - uint8_t cls; - uint8_t id; - uint16_t len; - uint32_t iTOW; - int32_t lon; - int32_t lat; - int32_t alt; - int32_t hMSL; - uint32_t hAcc; - uint32_t vAcc; - }; + uint8_t cls; // 0x01 + uint8_t id; // 0x02 + uint16_t len; // 28 bytes + uint32_t iTOW; // ms + int32_t lon; // 1e-7, degree + int32_t lat; // 1e-7, degree + int32_t alt; // mm + int32_t hMSL; // mm + uint32_t hAcc; // mm + uint32_t vAcc; // mm + }; struct NAV_STATUS { - uint8_t cls; - uint8_t id; - uint16_t len; - uint32_t iTOW; - uint8_t gpsFix; - uint8_t flags; //bit 0 - gpsfix valid - uint8_t fixStat; - uint8_t flags2; - uint32_t ttff; - uint32_t msss; - }; + uint8_t cls; // 0x01 + uint8_t id; // 0x03 + uint16_t len; // 16 bytes + uint32_t iTOW; // ms + uint8_t gpsFix; // + uint8_t flags; // bit 0 - gpsfix valid + uint8_t fixStat; // + uint8_t flags2; // + uint32_t ttff; // ms + uint32_t msss; // ms + }; struct NAV_TIME_UTC { - uint8_t cls; - uint8_t id; - uint16_t len; - uint32_t iTOW; - uint32_t tAcc; - int32_t nano; // Nanoseconds of second, range -1e9 .. 1e9 (UTC) - uint16_t year; - uint8_t month; - uint8_t day; - uint8_t hour; - uint8_t min; - uint8_t sec; + uint8_t cls; // 0x01 + uint8_t id; // 0x21 + uint16_t len; // 20 bytes + uint32_t iTOW; // ms + uint32_t tAcc; // ns + int32_t nano; // Nanoseconds of second, range -1e9 .. 1e9 (UTC) + uint16_t year; // y + uint8_t month; // month + uint8_t day; // d + uint8_t hour; // h + uint8_t min; // min + uint8_t sec; // s struct { uint8_t UTC:1; - uint8_t WKN:1; // week number - uint8_t TOW:1; // time of week + uint8_t WKN:1; // week number + uint8_t TOW:1; // time of week uint8_t padding:5; - } valid; - }; + } valid; + }; + #ifdef USE_GPS_VELOCITY struct NAV_VEL { - uint8_t cls; - uint8_t id; - uint16_t len; - uint32_t iTOW; - int32_t velN; - int32_t velE; //bit 0 - gpsfix valid - int32_t velD; - uint32_t speed; - uint32_t gSpeed; - int32_t heading; - uint32_t sAcc; - uint32_t cAcc; - }; -#endif + uint8_t cls; // 0x01 + uint8_t id; // 0x12 + uint16_t len; // 36 bytes + uint32_t iTOW; // ms + int32_t velN; // cm/s + int32_t velE; // cm/s + int32_t velD; // cm/s + uint32_t speed; // cm/s + uint32_t gSpeed; // cm/s + int32_t heading; // 1e-5, degree + uint32_t sAcc; // cm/s + uint32_t cAcc; // 1e-5, degree + }; +#endif // USE_GPS_VELOCITY + struct CFG_RATE { - uint8_t cls; //0x06 - uint8_t id; //0x08 - uint16_t len; // 6 bytes - uint16_t measRate; // in every ms -> 1 Hz = 1000 ms; 10 Hz = 100 ms -> x = 1000 ms / Hz - uint16_t navRate; // x measurements for 1 navigation event - uint16_t timeRef; // align to time system: 0= UTC, 1 = GPS, 2 = GLONASS, ... - char CK[2]; // checksum - }; + uint8_t cls; // 0x06 + uint8_t id; // 0x08 + uint16_t len; // 6 bytes + uint16_t measRate; // in every ms -> 1 Hz = 1000 ms; 10 Hz = 100 ms -> x = 1000 ms / Hz + uint16_t navRate; // x measurements for 1 navigation event + uint16_t timeRef; // align to time system: 0= UTC, 1 = GPS, 2 = GLONASS, ... + char CK[2]; // checksum + }; struct { uint32_t last_iTOW; @@ -287,7 +292,7 @@ struct UBX_t { struct { uint32_t init:1; uint32_t filter_noise:1; - uint32_t send_when_new:1; // no teleinterval + uint32_t send_when_new:1; // no teleinterval uint32_t send_UI_only:1; uint32_t runningNTP:1; // uint32_t blockedNTP:1; @@ -302,10 +307,10 @@ struct UBX_t { NAV_TIME_UTC navTime; #ifdef USE_GPS_VELOCITY NAV_VEL navVel; -#endif +#endif // USE_GPS_VELOCITY POLL_MSG pollMsg; CFG_RATE cfgRate; - } Message; + } Message; uint32_t utc_time; @@ -320,13 +325,13 @@ enum UBXMsgType { MT_NAV_TIME, #ifdef USE_GPS_VELOCITY MT_NAV_VEL, -#endif +#endif // USE_GPS_VELOCITY MT_POLL }; #ifdef USE_FLOG FLOG *Flog = nullptr; -#endif //USE_FLOG +#endif // USE_FLOG TasmotaSerial *UBXSerial; NtpServer timeServer(PortUdp); @@ -400,7 +405,7 @@ void UBXDetect(void) Flog = new FLOG; // init Flash Log Flog->init(); } -#endif // USE_FLOG +#endif // USE_FLOG UBX.state.log_interval = 10; // 1 second UBX.mode.send_UI_only = true; // send UI data ... @@ -465,7 +470,7 @@ uint32_t UBXprocessGPS() payloadSize = sizeof(UBX_t::NAV_VEL); DEBUG_SENSOR_LOG(PSTR("UBX: got NAV_VEL")); } -#endif +#endif // USE_GPS_VELOCITY else { // unknown message type, bail fpos = 0; @@ -558,7 +563,7 @@ void UBXsendFile(void) if (!HttpCheckPriviledgedAccess()) { return; } Flog->startDownload(sizeof(UBX.rec_buffer),UBXsendHeader,UBXsendRecord,UBXsendFooter); } -#endif //USE_FLOG +#endif // USE_FLOG /********************************************************************************************/ @@ -616,7 +621,7 @@ void UBXSelectMode(uint16_t mode) } AddLog(LOG_LEVEL_INFO, PSTR("UBX: stop recording")); break; -#endif //USE_FLOG +#endif // USE_FLOG case 7: UBX.mode.send_when_new = 1; // send mqtt on new postion + TELE -> consider to set TELE to a very high value break; @@ -634,11 +639,10 @@ void UBXSelectMode(uint16_t mode) UBXsendCFGLine(11); //NAV-POSLLH on UBXsendCFGLine(12); //NAV-STATUS on UBXsendCFGLine(14); //NAV-VELNED on -#endif -#ifndef USE_GPS_VELOCITY +#else UBXsendCFGLine(10); //NAV-POSLLH on UBXsendCFGLine(11); //NAV-STATUS on -#endif +#endif // USE_GPS_VELOCITY break; case 11: UBX.mode.forceUTCupdate = true; @@ -691,11 +695,11 @@ bool UBXHandlePOSLLH() MqttPublishTeleperiodSensor(); } if (UBX.mode.runningNTP){ // after receiving pos-data at least once -> go to pure NTP-mode - UBXsendCFGLine(7); //NAV-POSLLH off - UBXsendCFGLine(8); //NAV-STATUS off + UBXsendCFGLine(7); // NAV-POSLLH off + UBXsendCFGLine(8); // NAV-STATUS off #ifdef USE_GPS_VELOCITY - UBXsendCFGLine(10); //NAV-VELNED off -#endif + UBXsendCFGLine(10); // NAV-VELNED off +#endif // USE_GPS_VELOCITY } //UBX_LAT_LON_THRESHOLD = 20 * UBX.Message.navPosllh.hAcc; return true; // new position @@ -717,7 +721,7 @@ void UBXHandleVEL() } } -#endif +#endif // USE_GPS_VELOCITY void UBXHandleSTATUS() { @@ -813,7 +817,7 @@ void UBXLoop(void) case MT_NAV_VEL: UBXHandleVEL(); break; -#endif +#endif // USE_GPS_VELOCITY default: UBXHandleOther(); break; @@ -827,7 +831,7 @@ void UBXLoop(void) counter = 0; } } -#endif // USE_FLOG +#endif // USE_FLOG counter++; } @@ -836,64 +840,63 @@ void UBXLoop(void) // normaly in i18n.h #ifdef USE_WEBSERVER - // {s} = , {m} = , {e} = +// {s} = , {m} = , {e} = #ifdef USE_FLOG #ifdef DEBUG_TASMOTA_SENSOR - const char HTTP_SNS_FLOGVER[] PROGMEM = "{s}
{m}
{e}{s} FLOG with %u sectors: {m}%u bytes{e}" - "{s} FLOG next sector for REC: {m} %u {e}" - "{s} %u sector(s) with data at sector: {m} %u {e}"; - const char HTTP_SNS_FLOGREC[] PROGMEM = "{s} RECORDING (bytes in buffer) {m}%u{e}"; +const char HTTP_SNS_FLOGVER[] PROGMEM = "{s}FLOG with %u sectors:{m}%u bytes{e}" + "{s}FLOG next sector for REC:{m} %u {e}" + "{s}%u sector(s) with data at sector:{m}%u{e}"; +const char HTTP_SNS_FLOGREC[] PROGMEM = "{s}RECORDING (bytes in buffer){m}%u{e}"; #endif // DEBUG_TASMOTA_SENSOR - const char HTTP_SNS_FLOG[] PROGMEM = "{s}
{m}
{e}{s} Flash-Log {m} %s{e}"; - const char kFLOG_STATE0[] PROGMEM = "ready"; - const char kFLOG_STATE1[] PROGMEM = "recording"; - const char * kFLOG_STATE[] ={kFLOG_STATE0, kFLOG_STATE1}; +const char HTTP_SNS_FLOG[] PROGMEM = "{s}GPS Logging{m}%s{e}"; +const char kFLOGstate[] PROGMEM = "Ready|Recording"; +const char HTTP_BTN_FLOG_DL[] PROGMEM = ""; +#endif // USE_FLOG - const char HTTP_BTN_FLOG_DL[] PROGMEM = ""; +const char HTTP_SNS_NTPSERVER[] PROGMEM = "{s}GPS NTP server{m}Active{e}"; -#endif //USE_FLOG - const char HTTP_SNS_NTPSERVER[] PROGMEM = "{s} NTP server {m}active{e}"; - - const char HTTP_SNS_GPS[] PROGMEM = "{s}GPS " D_LATITUDE "{m}%s{e}" - "{s}GPS " D_LONGITUDE "{m}%s{e}" - "{s}GPS " D_ALTITUDE "{m}%3_f " D_UNIT_METER "{e}" - "{s}GPS " D_HORIZONTAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}" - "{s}GPS " D_VERTICAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}" - "{s}GPS " D_SAT_FIX "{m}%s{e}"; +const char HTTP_SNS_GPS[] PROGMEM = "{s}GPS " D_SAT_FIX "{m}%s{e}" + "{s}GPS " D_LATITUDE "{m}%s{e}" + "{s}GPS " D_LONGITUDE "{m}%s{e}" + "{s}GPS " D_HORIZONTAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}" + "{s}GPS " D_ALTITUDE "{m}%3_f " D_UNIT_METER "{e}" + "{s}GPS " D_VERTICAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}"; #ifdef USE_GPS_VELOCITY - const char HTTP_SNS_GPS2[] PROGMEM = "{s}GPS " D_SPEED "{m}%1_f{e}" - "{s}GPS " D_HEADING "{m}%1_f{e}" - "{s}GPS " D_HEADING_ACCURACY "{m}%2_f{e}" - "{s}GPS " D_SPEED_ACCURACY "{m}%2_f{e}"; -#endif +const char HTTP_SNS_GPS2[] PROGMEM = "{s}GPS " D_SPEED "{m}%2_f " D_UNIT_KILOMETER_PER_HOUR "{e}" + "{s}GPS " D_SPEED_ACCURACY "{m}%2_f " D_UNIT_KILOMETER_PER_HOUR "{e}" + "{s}GPS " D_HEADING "{m}%1_f{e}" + "{s}GPS " D_HEADING_ACCURACY "{m}%1_f{e}"; +#endif // USE_GPS_VELOCITY const char kGPSFix[] PROGMEM = D_SAT_FIX_NO_FIX "|" D_SAT_FIX_DEAD_RECK "|" D_SAT_FIX_2D "|" D_SAT_FIX_3D "|" D_SAT_FIX_GPS_DEAD "|" D_SAT_FIX_TIME; -// const char UBX_GOOGLE_MAPS[] =""; +#ifdef USE_GPS_MAPS +const char UBX_GOOGLE_MAPS[] =""; +#endif // USE_GPS_MAPS #endif // USE_WEBSERVER /********************************************************************************************/ -void UBXShow(bool json) -{ - char lat[12]; - dtostrfd((double)UBX.rec_buffer.values.lat/10000000.0f,7,lat); - char lon[12]; - dtostrfd((double)UBX.rec_buffer.values.lon/10000000.0f,7,lon); - float alt = (float)UBX.state.last_alt / 1000.0f; - float hAcc = (float)UBX.state.last_vAcc / 1000.0f; - float vAcc = (float)UBX.state.last_hAcc / 1000.0f; +void UBXShow(bool json) { char fix[32]; GetTextIndexed(fix, sizeof(fix), UBX.state.gpsFix, kGPSFix); + char lat[12]; + dtostrfd((double)UBX.rec_buffer.values.lat / 10000000.0f, 7, lat); // degrees + char lon[12]; + dtostrfd((double)UBX.rec_buffer.values.lon / 10000000.0f, 7, lon); // degrees + float hAcc = (float)UBX.state.last_vAcc / 1000.0f; // mm -> meters + float alt = (float)UBX.state.last_alt / 1000.0f; // mm -> meters + float vAcc = (float)UBX.state.last_hAcc / 1000.0f; // mm -> meters #ifdef USE_GPS_VELOCITY - float spd = (float)UBX.Message.navVel.gSpeed / 27.778f; - float hdng = (float)UBX.Message.navVel.heading / 100000.0f; - float cAcc = (float)UBX.Message.navVel.cAcc / 100000.0f; - float sAcc = (float)UBX.Message.navVel.sAcc / 100000.0f; -#endif + float spd = (float)UBX.Message.navVel.gSpeed / 27.778f; // cm/s -> km/h + float sAcc = (float)UBX.Message.navVel.sAcc / 27.778f; // cm/s -> km/h + float hdng = (float)UBX.Message.navVel.heading / 100000.0f; // degrees + float cAcc = (float)UBX.Message.navVel.cAcc / 100000.0f; // degrees + if (cAcc > 360) { cAcc = 0; } +#endif // USE_GPS_VELOCITY if (json) { ResponseAppend_P(PSTR(",\"GPS\":{")); @@ -904,41 +907,54 @@ void UBXShow(bool json) ResponseAppend_P(PSTR("\"Lat\":%s,\"Lon\":%s,\"Alt\":%3_f,\"hAcc\":%3_f,\"vAcc\":%3_f,\"Fix\":\"%s\""), lat, lon, &alt, &hAcc, &vAcc, fix); #ifdef USE_GPS_VELOCITY - ResponseAppend_P(PSTR(",\"Spd\":%1_f,\"Hdng\":%1_f,\"cAcc\":%2_f,\"sAcc\":%2_f"), - &spd, &hdng, &cAcc, &sAcc); -#endif + ResponseAppend_P(PSTR(",\"Spd\":%2_f,\"Hdng\":%1_f,\"sAcc\":%2_f,\"cAcc\":%1_f"), + &spd, &hdng, &sAcc, &cAcc); +#endif // USE_GPS_VELOCITY ResponseAppend_P(PSTR("}")); } #ifdef USE_FLOG ResponseAppend_P(PSTR(",\"FLOG\":{\"Rec\":%u,\"Mode\":%u,\"Sec\":%u}"), Flog->recording, Flog->mode, Flog->sectors_left); -#endif //USE_FLOG +#endif // USE_FLOG UBX.mode.send_UI_only = false; #ifdef USE_WEBSERVER } else { - WSContentSend_PD(HTTP_SNS_GPS, lat, lon, &alt, &hAcc, &vAcc, fix); + WSContentSend_PD(HTTP_SNS_GPS, fix, lat, lon, &hAcc, &alt, &vAcc); #ifdef USE_GPS_VELOCITY - WSContentSend_PD(HTTP_SNS_GPS2, &spd, &hdng, &cAcc, &sAcc); -#endif - //WSContentSend_P(UBX_GOOGLE_MAPS, lat, lon); -#ifdef DEBUG_TASMOTA_SENSOR + WSContentSend_PD(HTTP_SNS_GPS2, &spd, &sAcc, &hdng, &cAcc); +#endif // USE_GPS_VELOCITY + +#ifdef USE_GPS_MAPS + int32_t lat_diff = UBX.rec_buffer.values.lat - UBX.lat; + int32_t lon_diff = UBX.rec_buffer.values.lon - UBX.lon; + if ((lat_diff > 1000) || (lon_diff > 1000)) { + UBX.lat = UBX.rec_buffer.values.lat; + UBX.lon = UBX.rec_buffer.values.lon; + WSContentSend_P(UBX_GOOGLE_MAPS, lat, lon); + } +#endif // USE_GPS_MAPS + #ifdef USE_FLOG + WSContentSeparator(0); +#ifdef DEBUG_TASMOTA_SENSOR WSContentSend_PD(HTTP_SNS_FLOGVER, Flog->num_sectors, Flog->size, Flog->current_sector, Flog->sectors_left, Flog->sector.header.physical_start_sector); if (Flog->recording) { WSContentSend_PD(HTTP_SNS_FLOGREC, Flog->sector.header.buf_pointer - 8); } -#endif //USE_FLOG -#endif // DEBUG_TASMOTA_SENSOR -#ifdef USE_FLOG +#endif // DEBUG_TASMOTA_SENSOR if (Flog->ready) { - WSContentSend_P(HTTP_SNS_FLOG,kFLOG_STATE[Flog->recording]); + char flog_state[32]; + WSContentSend_P(HTTP_SNS_FLOG, GetTextIndexed(flog_state, sizeof(flog_state), Flog->recording, kFLOGstate)); } if (!Flog->recording && Flog->found_saved_data) { WSContentSend_P(HTTP_BTN_FLOG_DL); } -#endif //USE_FLOG +#endif // USE_FLOG + if (UBX.mode.runningNTP) { + WSContentSeparator(0); WSContentSend_P(HTTP_SNS_NTPSERVER); } + #endif // USE_WEBSERVER } } @@ -982,7 +998,7 @@ bool Xsns60(uint32_t function) case FUNC_EVERY_100_MSECOND: #ifdef USE_FLOG if (!Flog->running_download) -#endif //USE_FLOG +#endif // USE_FLOG { UBXLoop(); } @@ -991,7 +1007,7 @@ bool Xsns60(uint32_t function) case FUNC_WEB_ADD_HANDLER: WebServer_on(PSTR("/UBX"), UBXsendFile); break; -#endif //USE_FLOG +#endif // USE_FLOG case FUNC_JSON_APPEND: UBXShow(1); break; @@ -999,7 +1015,7 @@ bool Xsns60(uint32_t function) case FUNC_WEB_SENSOR: #ifdef USE_FLOG if (!Flog->running_download) -#endif //USE_FLOG +#endif // USE_FLOG { UBXShow(0); } From aa39e000f7d9f16dcc51882e5b15baf753a22490 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 23 Jun 2024 21:44:56 +0200 Subject: [PATCH 087/252] add C2 as target for BLE (#21685) --- tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino | 2 +- tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino | 2 +- tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino b/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino index 7c10f2967..763ffc477 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino @@ -32,7 +32,7 @@ #endif #ifdef ESP32 // ESP32 family only. Use define USE_HM10 for ESP8266 support -#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3 +#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3 #ifdef USE_BLE_ESP32 /* diff --git a/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino b/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino index 23a82d2fc..219b083a9 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino @@ -128,7 +128,7 @@ print("".join(pin)) #define USE_EQ3_ESP32 #endif -#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3 +#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3 #ifdef USE_EQ3_ESP32 #ifdef ESP32 // ESP32 only. Use define USE_HM10 for ESP8266 support #ifdef USE_BLE_ESP32 diff --git a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino index 73a1acaba..5cb582616 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino @@ -78,7 +78,7 @@ #ifdef USE_BLE_ESP32 #ifdef ESP32 // ESP32 family only. Use define USE_HM10 for ESP8266 support -#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3 +#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3 #ifdef USE_MI_ESP32 From 0bddfad14e9549c646513ce4e68d42f669170456 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:13:16 +0200 Subject: [PATCH 088/252] No Ethernet support for the C2 (#21691) * No Ethernet for the C2 * Post process: Disable always Ethernet for C2 * better check for Ethernet available * typo * excluse c2 with `ifndef` --- .../ESP-Mail-Client/src/extras/Networks_Provider.h | 2 +- tasmota/include/tasmota_configurations_ESP32.h | 8 ++++++++ tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h b/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h index fd523be67..8e55a735d 100644 --- a/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h +++ b/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h @@ -75,7 +75,7 @@ #if !defined(ESP_MAIL_DISABLE_NATIVE_ETHERNET) -#if defined(ESP32) && __has_include() +#if defined(ESP32) && __has_include() #include #define ESP_MAIL_ETH_IS_AVAILABLE #elif defined(ESP8266) && defined(ESP8266_CORE_SDK_V3_X_X) diff --git a/tasmota/include/tasmota_configurations_ESP32.h b/tasmota/include/tasmota_configurations_ESP32.h index c323ec5f0..f6ac7fc22 100644 --- a/tasmota/include/tasmota_configurations_ESP32.h +++ b/tasmota/include/tasmota_configurations_ESP32.h @@ -825,5 +825,13 @@ #endif // USE_MATTER_DEVICE +/*********************************************************************************************\ + * Post-process compile options for esp32-c2 +\*********************************************************************************************/ + +#ifdef CONFIG_IDF_TARGET_ESP32C2 + #undef USE_ETHERNET +#endif // CONFIG_IDF_TARGET_ESP32C2 + #endif // ESP32 #endif // _TASMOTA_CONFIGURATIONS_ESP32_H_ diff --git a/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino b/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino index b44be11f3..a9e7ed17c 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino @@ -18,7 +18,7 @@ */ #ifdef ESP32 -//#if CONFIG_IDF_TARGET_ESP32 +#ifndef CONFIG_IDF_TARGET_ESP32C2 #ifdef USE_ETHERNET /*********************************************************************************************\ * Ethernet support for ESP32 @@ -445,5 +445,5 @@ bool Xdrv82(uint32_t function) { } #endif // USE_ETHERNET -//#endif // CONFIG_IDF_TARGET_ESP32 +#endif // CONFIG_IDF_TARGET_ESP32C2 #endif // ESP32 From af1fa724af188122c0cf161a79a76f452bef6771 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Jun 2024 16:36:28 +0200 Subject: [PATCH 089/252] Fix non-webserver compilation --- tasmota/tasmota_support/support.ino | 4 ++++ tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino | 4 ---- tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino | 2 ++ tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index fb945953a..e6b85cd5c 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -2709,6 +2709,10 @@ String HtmlEscape(const String unescaped) { return result; } +String SettingsTextEscaped(uint32_t index) { + return HtmlEscape(SettingsText(index)); +} + String UrlEscape(const char *unescaped) { static const char *hex = "0123456789ABCDEF"; String result; diff --git a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino index de9b796ba..b9837b786 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino @@ -477,10 +477,6 @@ static void WebGetArg(const char* arg, char* out, size_t max) // out[max-1] = '\0'; // Ensure terminating NUL } -String SettingsTextEscaped(uint32_t index) { - return HtmlEscape(SettingsText(index)); -} - String AddWebCommand(const char* command, const char* arg, const char* dflt) { /* // OK but fixed max argument diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino index 58c6f691a..3ea6508ad 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino @@ -894,6 +894,7 @@ bool Xdrv52(uint32_t function) BrLoad("autoexec.be"); // run autoexec.be at first tick, so we know all modules are initialized berry.autoexec_done = true; +#ifdef USE_WEBSERVER // check if `web_add_handler` was missed, for example because of Berry VM restart if (!berry.web_add_handler_done) { bool network_up = WifiHasIP(); @@ -905,6 +906,7 @@ bool Xdrv52(uint32_t function) berry.web_add_handler_done = true; } } +#endif // USE_WEBSERVER } if (TasmotaGlobal.berry_fast_loop_enabled) { // call only if enabled at global level callBerryFastLoop(false); // call `tasmota.fast_loop()` optimized for minimal performance impact diff --git a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino index 82f10f0cf..5f0e3633e 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino @@ -870,14 +870,14 @@ const char HTTP_SNS_GPS2[] PROGMEM = "{s}GPS " D_SPEED "{m}%2_f " D_UNIT_KILOMET "{s}GPS " D_HEADING_ACCURACY "{m}%1_f{e}"; #endif // USE_GPS_VELOCITY -const char kGPSFix[] PROGMEM = D_SAT_FIX_NO_FIX "|" D_SAT_FIX_DEAD_RECK "|" D_SAT_FIX_2D "|" D_SAT_FIX_3D "|" D_SAT_FIX_GPS_DEAD "|" D_SAT_FIX_TIME; - #ifdef USE_GPS_MAPS const char UBX_GOOGLE_MAPS[] =""; #endif // USE_GPS_MAPS #endif // USE_WEBSERVER +const char kGPSFix[] PROGMEM = D_SAT_FIX_NO_FIX "|" D_SAT_FIX_DEAD_RECK "|" D_SAT_FIX_2D "|" D_SAT_FIX_3D "|" D_SAT_FIX_GPS_DEAD "|" D_SAT_FIX_TIME; + /********************************************************************************************/ void UBXShow(bool json) { From 0df56eaffa8fdcf225ed35ef3346dc2546a26819 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:00:07 +0200 Subject: [PATCH 090/252] Tasmota esp32 platform 2024.06.11 (#21694) --- platformio_tasmota32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 23eed748f..1cade16c7 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -81,7 +81,7 @@ lib_ignore = ${esp32_defaults.lib_ignore} ccronexpr [core32] -platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.06.10/platform-espressif32.zip +platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.06.11/platform-espressif32.zip platform_packages = build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From a38b8852759fbd6512879600dad01e1065cfc58b Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:33:15 +0200 Subject: [PATCH 091/252] esp32 core 3.0.2 --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index fb378f095..481df28dc 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR and the code change compiles without warnings - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.7 - - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.1 + - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.2 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). _NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_ From bf1dace55dc3efbb43c7a46c7d1fde78a2287dd4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Jun 2024 22:52:15 +0200 Subject: [PATCH 092/252] Add ESP32 USE_FLOG support (experimental) --- tasmota/tasmota_support/support_flash_log.ino | 36 ++++++++----------- tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino | 4 --- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/tasmota/tasmota_support/support_flash_log.ino b/tasmota/tasmota_support/support_flash_log.ino index c28528a7f..42b2b1eed 100644 --- a/tasmota/tasmota_support/support_flash_log.ino +++ b/tasmota/tasmota_support/support_flash_log.ino @@ -19,13 +19,11 @@ -------------------------------------------------------------------------------------------- Version Date Action Description -------------------------------------------------------------------------------------------- - - + 2.0.0.0 20240625 expand - Add support for ESP32 --- 1.0.0.0 20190923 started - further development by Christian Baars - https://github.com/Staars/Sonoff-Tasmota forked - from arendst/tasmota - https://github.com/arendst/Sonoff-Tasmota base - code base from arendst and - written from scratch - */ /********************************************************************************************\ @@ -37,7 +35,6 @@ \*********************************************************************************************/ #ifdef USE_FLOG -#ifdef ESP8266 class FLOG @@ -84,8 +81,8 @@ public: bool recording = false; // ready for recording union sector_t{ - uint32_t dword_buffer[FLASH_SECTOR_SIZE/4]; - uint8_t byte_buffer[FLASH_SECTOR_SIZE]; + uint32_t dword_buffer[SPI_FLASH_SEC_SIZE/4]; + uint8_t byte_buffer[SPI_FLASH_SEC_SIZE]; header_t header; // should be 4-byte-aligned } sector; // the global buffer of 4096 bytes, used for reading and writing @@ -100,20 +97,16 @@ public: void startDownload(size_t size, CallbackNoArgs sendHeader, CallbackWithArgs sendRecord, CallbackNoArgs sendFooter); }; -extern "C" uint32_t _SPIFFS_start; // we make shure later, that only one of the two is really used ... -extern "C" uint32_t _FS_start; // ... depending on core-sdk-version - /** * @brief Will examine the start and end of the OTA-partition. Then the sector size will be computed, saved data should be found and the initial state will be configured. */ void FLOG::init(void) { DEBUG_SENSOR_LOG(PSTR("FLOG: init ...")); -size = ESP.getSketchSize(); -// round one sector up -start = (size + FLASH_SECTOR_SIZE - 1) & (~(FLASH_SECTOR_SIZE - 1)); -end = (uint32_t)&_FS_start - 0x40200000; -num_sectors = (end - start)/FLASH_SECTOR_SIZE; +size = ESP_getSketchSize(); +start = FlashWriteStartSector() * SPI_FLASH_SEC_SIZE; +end = FlashWriteMaxSector() * SPI_FLASH_SEC_SIZE; +num_sectors = (end - start) / SPI_FLASH_SEC_SIZE; DEBUG_SENSOR_LOG(PSTR("FLOG: size: 0x%lx, start: 0x%lx, end: 0x%lx, num_sectors(dec): %lu"), size, start, end, num_sectors ); _findFirstErasedSector(); if(first_erased_sector == 0xffff){ @@ -138,7 +131,7 @@ ready = true; */ void FLOG::_readSector(uint8_t one_sector){ DEBUG_SENSOR_LOG(PSTR("FLOG: read sector number: %u" ), one_sector); - ESP.flashRead(start+(one_sector * FLASH_SECTOR_SIZE),(uint32_t *)§or.dword_buffer, FLASH_SECTOR_SIZE); + ESP.flashRead(start+(one_sector * SPI_FLASH_SEC_SIZE),(uint32_t *)§or.dword_buffer, SPI_FLASH_SEC_SIZE); } /** * @brief Erase the given sector og the OTA-partition @@ -147,7 +140,7 @@ void FLOG::_readSector(uint8_t one_sector){ */ void FLOG::_eraseSector(uint8_t one_sector){ // Erase sector of FLOG/OTA DEBUG_SENSOR_LOG(PSTR("FLOG: erasing sector number: %u" ), one_sector); - ESP.flashEraseSector((start/FLASH_SECTOR_SIZE)+one_sector); + ESP.flashEraseSector((start/SPI_FLASH_SEC_SIZE)+one_sector); } /** * @brief Write the global buffer to the given sector @@ -156,7 +149,7 @@ void FLOG::_eraseSector(uint8_t one_sector){ // Erase sector of FLOG/OTA */ void FLOG::_writeSector(uint8_t one_sector){ // Write sector of FLOG/OTA DEBUG_SENSOR_LOG(PSTR("FLOG: write buffer to sector number: %u" ), one_sector); - ESP.flashWrite(start+(one_sector * FLASH_SECTOR_SIZE),(uint32_t *)§or.dword_buffer, FLASH_SECTOR_SIZE); + ESP.flashWrite(start+(one_sector * SPI_FLASH_SEC_SIZE),(uint32_t *)§or.dword_buffer, SPI_FLASH_SEC_SIZE); } /** * @brief Clear the global buffer, but leave the header intact @@ -301,8 +294,8 @@ void FLOG::addToBuffer(uint8_t src[], uint32_t size){ return; // we ignore additional calls and are done, TODO: maybe use meaningful return values } } - if((FLASH_SECTOR_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){ - // DEBUG_SENSOR_LOG(PSTR("FLOG: enough space left in buffer: %u"), FLASH_SECTOR_SIZE - sector.header.buf_pointer - sizeof(sector.header)); + if((SPI_FLASH_SEC_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){ + // DEBUG_SENSOR_LOG(PSTR("FLOG: enough space left in buffer: %u"), SPI_FLASH_SEC_SIZE - sector.header.buf_pointer - sizeof(sector.header)); // DEBUG_SENSOR_LOG(PSTR("FLOG: current buf_pointer: %u, size of added: %u"), sector.header.buf_pointer, size); memcpy(sector.byte_buffer + sector.header.buf_pointer, src, size); @@ -315,7 +308,7 @@ void FLOG::addToBuffer(uint8_t src[], uint32_t size){ _saveBufferToSector(); sectors_left++; // but now save the data to the fresh buffer - if((FLASH_SECTOR_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){ + if((SPI_FLASH_SEC_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){ memcpy(sector.byte_buffer + sector.header.buf_pointer, src, size); sector.header.buf_pointer+=size; // this is the next free spot } @@ -426,5 +419,4 @@ void FLOG::stopRecording(void){ _initBuffer(); } - #endif // ESP8266 - #endif // USE_FLOG \ No newline at end of file +#endif // USE_FLOG \ No newline at end of file diff --git a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino index 5f0e3633e..31f3a26a7 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino @@ -18,10 +18,6 @@ */ #ifdef USE_GPS -#if defined(ESP32) && defined(USE_FLOG) - #undef USE_FLOG - #warning FLOG deactivated on ESP32 -#endif // ESP32 /*********************************************************************************************\ -------------------------------------------------------------------------------------------- Version Date Action Description From 33225bfabb6040a537e42bf82b932d0fb8b4c463 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Jun 2024 22:58:46 +0200 Subject: [PATCH 093/252] Update changelogs --- CHANGELOG.md | 2 ++ RELEASENOTES.md | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 303e03c57..b6cabc8bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ All notable changes to this project will be documented in this file. - ESP8266 platform update from 2024.01.01 to 2024.06.00 (#21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 (#21668) - Matter refactor reading of multiple attributes to reduce memory pressure (#21675) +- ESP32 platform update from 2024.06.10 to 2024.06.11 (#21694) +- ESP32 Framework (Arduino Core) from v3.0.1 to v3.0.2 (#21694) ### Fixed - Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a788376d1..a40a8e135 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -36,9 +36,9 @@ While fallback or downgrading is common practice it was never supported due to S This release will be supported from ESP8266/Arduino library Core version **2.7.7** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. -This release will be supported from ESP32/Arduino library Core version **3.0.1**. +This release will be supported from ESP32/Arduino library Core version **3.0.2**. -Support of ESP8266 Core versions before 2.7.7 and ESP32 Core versions before 3.0.1 have been removed. +Support of ESP8266 Core versions before 2.7.7 and ESP32 Core versions before 3.0.2 have been removed. ### Known issues with v14.1.0 @@ -85,7 +85,7 @@ Historical binaries can be downloaded from The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` ### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based -The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.1**. +The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.2**. - **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY** - **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash. @@ -138,6 +138,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668) +- ESP32 platform update from 2024.05.13 to 2024.06.11 [#21694](https://github.com/arendst/Tasmota/issues/21694) +- ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.2 [#21694](https://github.com/arendst/Tasmota/issues/21694) - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 - Allow receive or send using SerialBridge From 97017017a4668c7f585d632cf1c41e9f0aa099d3 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 27 Jun 2024 00:03:34 +0200 Subject: [PATCH 094/252] Matter full support of events (#21698) --- CHANGELOG.md | 1 + .../berry_matter/src/be_matter_module.c | 4 +- .../src/embedded/Matter_EventHandler.be | 204 +- .../berry_matter/src/embedded/Matter_IM.be | 172 +- .../src/embedded/Matter_IM_Message.be | 91 +- .../src/embedded/Matter_IM_Subscription.be | 134 +- .../src/embedded/Matter_Message.be | 1 - .../src/embedded/Matter_MessageHandler.be | 6 +- .../src/embedded/Matter_Path_0.be | 6 + .../embedded/Matter_Path_1_EventGenerator.be | 147 + ...ator.be => Matter_Path_1_PathGenerator.be} | 20 +- .../src/embedded/Matter_Plugin_0.be | 34 +- .../src/embedded/Matter_Plugin_1_Root.be | 1 - .../src/embedded/Matter_zz_Device.be | 6 +- .../solidify/solidified_Matter_EventHandler.h | 1076 +++- .../src/solidify/solidified_Matter_IM.h | 4711 +++++++++-------- .../solidify/solidified_Matter_IM_Message.h | 894 ++-- .../solidified_Matter_IM_Subscription.h | 1222 +++-- .../solidified_Matter_MessageHandler.h | 10 +- .../src/solidify/solidified_Matter_Path_0.h | 141 +- .../solidified_Matter_Path_1_EventGenerator.h | 351 ++ ... solidified_Matter_Path_1_PathGenerator.h} | 112 +- .../src/solidify/solidified_Matter_Plugin_0.h | 173 +- .../solidify/solidified_Matter_zz_Device.h | 119 +- .../xdrv_52_3_berry_tasmota.ino | 1 + 25 files changed, 5795 insertions(+), 3842 deletions(-) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_Path_1_EventGenerator.be rename lib/libesp32/berry_matter/src/embedded/{Matter_Path_1_Generator.be => Matter_Path_1_PathGenerator.be} (97%) create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Path_1_Generator.h => solidified_Matter_Path_1_PathGenerator.h} (96%) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6cabc8bb..5f65758c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Matter add internal debug option (#21634) - Matter add Fan support (virtual only) (#21637) - Matter show event name in logs (#21649) +- Matter full support of events ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index e020ecfac..34d480df3 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -209,7 +209,8 @@ extern int matter_publish_command(bvm *vm); extern const bclass be_class_Matter_TLV; // need to declare it upfront because of circular reference #include "solidify/solidified_Matter_Path_0.h" -#include "solidify/solidified_Matter_Path_1_Generator.h" +#include "solidify/solidified_Matter_Path_1_PathGenerator.h" +#include "solidify/solidified_Matter_Path_1_EventGenerator.h" #include "solidify/solidified_Matter_TLV.h" #include "solidify/solidified_Matter_IM_Data.h" #include "solidify/solidified_Matter_UDPServer.h" @@ -455,6 +456,7 @@ module matter (scope: global, strings: weak) { // Interation Model Path, class(be_class_Matter_Path) PathGenerator, class(be_class_Matter_PathGenerator) + EventGenerator, class(be_class_Matter_EventGenerator) IM_Status, class(be_class_Matter_IM_Status) IM_InvokeResponse, class(be_class_Matter_IM_InvokeResponse) IM_WriteResponse, class(be_class_Matter_IM_WriteResponse) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be index 12145524f..5c1f17434 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be @@ -38,20 +38,70 @@ class Matter_EventQueued var event_id var is_urgent var priority + var data0, data1, data2 var event_no + var epoch_timestamp var raw_tlv # content encoded as full TLV - def init(event_ib) - self.endpoint = event_ib.path.endpoint - self.cluster = event_ib.path.cluster - self.event_id = event_ib.path.event - self.is_urgent = event_ib.path.is_urgent - self.priority = event_ib.priority + def init(event_no, endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2) + self.event_no = event_no + self.endpoint = endpoint + self.cluster = cluster + self.event_id = event_id + self.is_urgent = is_urgent + self.priority = priority + # priority if (self.priority < 0) self.priority = 0 end if (self.priority > matter.EVENT_CRITICAL) self.priority = matter.EVENT_CRITICAL end - self.event_no = int64.toint64(event_ib.event_number) # int64 - self.raw_tlv = event_ib.to_TLV().tlv2raw() # bytes() + # epoch_time + self.epoch_timestamp = tasmota.rtc('utc') + if (self.epoch_timestamp < 1700000000) + self.epoch_timestamp = tasmota.rtc('config_time') # no valid time, take the last config time + end + self.data0 = data0 + self.data1 = data1 + self.data2 = data2 end + + ################################################################################# + # to_raw_bytes + # + # Computes a complete EventReportIB structure as bytes() + # + # It is memoized in self.raw_tlv, but is cleaned after sending messages to + # free up some space + def to_raw_bytes() + if (self.raw_tlv == nil) + var event_report = matter.EventReportIB() + var event_ib = matter.EventDataIB() + event_report.event_data = event_ib + var event_path = matter.EventPathIB() + event_path.endpoint = self.endpoint + event_path.cluster = self.cluster + event_path.event = self.event_id + event_path.is_urgent = self.is_urgent + event_ib.path = event_path + event_ib.priority = self.priority + event_ib.event_number = self.event_no + event_ib.epoch_timestamp = self.epoch_timestamp + event_ib.data = matter.TLV.Matter_TLV_struct() + if (self.data0 != nil) event_ib.data.add_obj(0, self.data0) end + if (self.data1 != nil) event_ib.data.add_obj(1, self.data1) end + if (self.data2 != nil) event_ib.data.add_obj(2, self.data2) end + + self.raw_tlv = event_report.to_TLV().tlv2raw() # bytes() + end + return self.raw_tlv + end + + ################################################################################# + # compact + # + # Remove the local cache of `raw_tlv` to save space (it can always be recreated) + def compact() + self.raw_tlv = nil + end + end matter.EventQueued = Matter_EventQueued @@ -77,11 +127,16 @@ matter.EventQueued = Matter_EventQueued # EVENT_CRITICAL=2 ################################################################################# -# Matter_IM class +# Matter_EventHandler class +# +# Keep track of events in 3 queues for DEBUG/INFO/CRITICAL levels +# +# Invariants: +# All 3 queues (debug/info/critical) have events in sorted order by `event_no` ################################################################################# class Matter_EventHandler - static var EVENT_NO_INCR = 1000 # counter increased when persisting - static var EVENT_NO_FILENAME = "_matter_event_no" + static var EVENT_NO_INCR = 1000 # counter increased when persisting, default value from Matter spec + static var EVENT_NO_KEY = "_matter_event_no" static var EVENT_QUEUE_SIZE_MAX = 10 # each queue is 10 elements depth # circular buffers @@ -109,22 +164,20 @@ class Matter_EventHandler # with a predefined gap `self.EVENT_NO_INCR` (default 1000) def load_event_no_persisted() import persist - var event_no_str = str(persist.find(self.EVENT_NO_FILENAME, "0")) + var event_no_str = str(persist.find(self.EVENT_NO_KEY, "0")) self.counter_event_no = int64.fromstring(event_no_str) self.counter_event_no_persisted = self.counter_event_no.add(self.EVENT_NO_INCR) # save back next slot - persist.setmember(self.EVENT_NO_FILENAME, self.counter_event_no_persisted.tostring()) + persist.setmember(self.EVENT_NO_KEY, self.counter_event_no_persisted.tostring()) persist.save() end ##################################################################### # Enqueue event # - # Takes `Matter_EventDataIB` + # Takes `EventQueued` ##################################################################### - def queue_event(ev_ib) - var ev_queued = matter.EventQueued(ev_ib) - + def queue_event(ev_queued) var cur_prio = ev_queued.priority # we reuse the same logic as connectedhomeip @@ -183,10 +236,37 @@ class Matter_EventHandler end end + ############################################################# + # dispatch every second click to sub-objects that need it + def every_second() + self.compact() + end + + ##################################################################### + # Enqueue event + # + # Remove the cached `raw_tlv` from all events in queues + # to save some space + def compact() + def compact_queue(q) + var i = 0 + while i < size(q) + q[i].compact() + i += 1 + end + end + compact_queue(self.queue_debug) + compact_queue(self.queue_info) + compact_queue(self.queue_critical) + end + ##################################################################### # Events handling ##################################################################### # Get next event number + # + # Also make sure that we don't go above the persisted last number, + # in such case increase the persisted number and use the next chunk def get_next_event_no() self.counter_event_no = self.counter_event_no.add(1) if self.counter_event_no >= self.counter_event_no_persisted @@ -194,7 +274,10 @@ class Matter_EventHandler end return self.counter_event_no end - + # Get last event number (all events sent up to now are lower or equal than this value) + def get_last_event_no() + return self.counter_event_no + end ##################################################################### # Dump events for debugging @@ -208,6 +291,91 @@ class Matter_EventHandler tasmota.log(f"MTR: Events by types: critical {cnt[2]}, info {cnt[1]}, debug {cnt[0]}", 2) end + ##################################################################### + # find_min_no + # + # Find the next event number just above the provided value, + # or the smallest if nil is passed + # + # Arg: + # - event_min: minimal event number (strictly above), + # or `nil` if smallest number + # + # Returns: + # - event_no (int) or `nil` of none found + ##################################################################### + def find_min_no(event_min_no) + # fail fast if `event_min_no` is the same as `counter_event_no` + # meaning that we dont have any more events since last report + if (event_min_no != nil) && (event_min_no >= self.counter_event_no) + return nil + end + + ##################################################################### + # Find the next available event right above `event_min_no` + # + # TODO: since queues are sorted, we can abort searching when we reach + # an event below `event_min_no` + # + # Arg + # - event_smallest: the event found up to now (from previous queues) + # - q: the queue oject + # - event_min_no: minimum acceptable event number (int64) or nil if any + def find_in_queue(event_smallest, q, event_min_no) + var i = size(q) - 1 + while i >= 0 + var cur_event = q[i] + # fail fast: since queues are sorted, we can abort searching when we reach an event below `event_min_no` + if (event_min_no != nil) && (cur_event.event_no <= event_min_no) + return event_smallest + end + + # we know that event_no is in acceptable range, is it smaller? + if (event_smallest == nil) || (cur_event.event_no < event_smallest.event_no) + event_smallest = cur_event + end + + i -= 1 + end + return event_smallest + end + + var event + # look in debug + event = find_in_queue(event, self.queue_debug, event_min_no) + # look in info + event = find_in_queue(event, self.queue_info, event_min_no) + # look in critical + event = find_in_queue(event, self.queue_critical, event_min_no) + + return event + end + + ############################################################# + # generate a new event + # + def publish_event(endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2) + var new_event = matter.EventQueued(self.get_next_event_no(), endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2) + if tasmota.loglevel(3) + var data_str = '' + if (data0 != nil) data_str = str(data0) end + if (data1 != nil) data_str += ", " + str(data1) end + if (data2 != nil) data_str += ", " + str(data2) end + if (cluster == 0x0028) && (event_id == 0x00) + # put the software version in a readable format + var val = data0.val + data_str = format("%i.%i.%i.%i", (val >> 24) & 0xFF, (val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) + end + var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG " + var event_name = matter.get_event_name(cluster, event_id) + event_name = (event_name != nil) ? "(" + event_name + ") " : "" + log(f"MTR: +Add_Event ({priority_str}{new_event.event_no:8s}) [{new_event.endpoint:02X}]{new_event.cluster:04X}/{new_event.event_id:02X} {event_name}- {data_str}", 2) + end + self.queue_event(new_event) + # check if we have an subscription interested in this new event + self.device.message_handler.im.subs_shop.event_published(new_event) + end + end matter.EventHandler = Matter_EventHandler diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index cff1234ab..21de50682 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -601,8 +601,9 @@ class Matter_IM matter.profiler.log("read_request_start_pull") var query = matter.ReadRequestMessage().from_TLV(val) var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg) + var event_generator_or_arr = self.process_read_or_subscribe_request_event_pull(query, msg) - self.send_report_data_pull(msg, generator_or_arr) # pack into a response structure that will read attributes when expansion is triggered + self.send_queue.push(matter.IM_ReportData_Pull(msg, generator_or_arr, event_generator_or_arr)) return true end @@ -613,15 +614,14 @@ class Matter_IM # # This version lazily reads attributes when building the response packets # - # returns `true` if processed, `false` if silently ignored, - # or raises an exception def process_read_or_subscribe_request_pull(query, msg) - if query.attributes_requests != nil + if (query.attributes_requests != nil) var generator_or_arr # single path generator (common case) or array of generators - var node_id = (msg != nil) ? msg.get_node_id() : nil - # structure is `ReadRequestMessage` 10.6.2 p.558 - if size(query.attributes_requests) > 1 + # structure is `ReadRequestMessage` 10.6.2 p.558 + var size_requests = (query.attributes_requests ? size(query.attributes_requests) : 0) + # log(f"MTR: process_read_or_subscribe_request_pull {size_requests=}") + if (size_requests > 1) generator_or_arr = [] end @@ -629,7 +629,7 @@ class Matter_IM var gen = matter.PathGenerator(self.device) gen.start(q.endpoint, q.cluster, q.attribute, query.fabric_filtered) - if size(query.attributes_requests) > 1 + if (size_requests > 1) generator_or_arr.push(gen) else generator_or_arr = gen @@ -655,6 +655,88 @@ class Matter_IM end end end + + return generator_or_arr + end + return nil + end + + ############################################################# + # parse_event_filters_min_no + # + # Parse an object EventFilters and extract the minimum event + # number (as int64) or nil if none + static def parse_event_filters_min_no(event_filters, node_id) + var event_no_min = nil # do we have a filter for minimum event_no (int64 or nil) + if event_filters != nil + for filter: event_filters # filter is an instance of `EventFilterIB` + # tasmota.log(f"MTR: EventFilter {filter=} {node_id=}", 3) + var filter_node = int64.toint64(filter.node) # nil or int64 + if (filter_node && node_id) # there is a filter on node-id + if filter.node.tobytes() != node_id # the node id doesn't match + tasmota.log(f"MTR: node_id filter {filter_node.tobytes().tohex()} doesn't match {node_id.tohex()}") + continue + end + end + # specified minimum value + var new_event_no_min = int64.toint64(filter.event_min) + if (event_no_min == nil) || (event_no_min < new_event_no_min) + event_no_min = new_event_no_min + end + end + end + return event_no_min + end + + ############################################################# + # process_read_or_subscribe_request_event_pull + # + # This version converts event request to an EventGenerator, a list of EventGenerator or nil + # + # or raises an exception + def process_read_or_subscribe_request_event_pull(query, msg) + if (query.event_requests != nil) + var generator_or_arr # single path generator (common case) or array of generators + var node_id = (msg != nil) ? msg.get_node_id() : nil + + # structure is `ReadRequestMessage` 10.6.2 p.558 + var size_requests = (query.event_requests ? size(query.event_requests) : 0) + # log(f"MTR: process_read_or_subscribe_request_pull {size_requests=}") + if (size_requests > 1) + generator_or_arr = [] + end + + # parse event requests + # scan event filters + var event_no_min = self.parse_event_filters_min_no(query.event_filters, node_id) + + # scan event filters + if query.event_requests + for q : query.event_requests + var gen = matter.EventGenerator(self.device) + gen.start(q.endpoint, q.cluster, q.event, event_no_min) + + if (size_requests > 1) + generator_or_arr.push(gen) + else + generator_or_arr = gen + end + + if tasmota.loglevel(3) + var event_name = "" + if (q.cluster != nil) && (q.event != nil) + event_name = matter.get_event_name(q.cluster, q.event) + event_name = (event_name != nil) ? "(" + event_name + ") " : "" + end + var ep_str = (q.endpoint != nil) ? f"{q.endpoint:02X}" : "**" + var cl_str = (q.cluster != nil) ? f"{q.cluster:04X}" : "****" + var ev_str = (q.event != nil) ? f"{q.event:02X}" : "**" + var event_no_min_str = (event_no_min != nil) ? f" (>{event_no_min})" : "" + log(f"MTR: >Read_Event({msg.session.local_session_id:6i}) [{ep_str}]{cl_str}/{ev_str} {event_name}{event_no_min_str}", 3) + end + end + end + return generator_or_arr end return nil @@ -785,12 +867,10 @@ class Matter_IM self.subs_shop.remove_by_session(msg.session) # if `keep_subscriptions`, kill all subscriptions from current session end - # log("MTR: received SubscribeRequestMessage=" + str(query), 3) - var sub = self.subs_shop.new_subscription(msg.session, query) - + # expand a string with all attributes requested - if tasmota.loglevel(3) + if tasmota.loglevel(3) && (query.attributes_requests != nil) var attr_req = [] var ctx = matter.Path() ctx.msg = msg @@ -800,15 +880,17 @@ class Matter_IM ctx.attribute = q.attribute attr_req.push(str(ctx)) end - log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s attr_req=%s event_req=%s", + log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s", msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, - sub.subscription_id, query.fabric_filtered, - query.attributes_requests != nil ? size(query.attributes_requests) : "-", - query.event_requests != nil ? size(query.event_requests) : "-"), 3) + sub.subscription_id, query.fabric_filtered), 3) end var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg) - self.send_subscribe_response_pull(msg, generator_or_arr, sub) # pack into a response structure that will read attributes when expansion is triggered + var event_generator_or_arr = self.process_read_or_subscribe_request_event_pull(query, msg) + + sub.set_event_generator_or_arr(event_generator_or_arr) + + self.send_queue.push(matter.IM_SubscribeResponse_Pull(msg, generator_or_arr, event_generator_or_arr, sub)) return true end @@ -881,7 +963,7 @@ class Matter_IM end if size(ret.invoke_responses) > 0 - self.send_invoke_response(msg, ret) + self.send_queue.push(matter.IM_InvokeResponse(msg, ret)) else return false # we don't send anything, hence the responder sends a simple packet ack end @@ -1052,7 +1134,7 @@ class Matter_IM generator.start(write_path.endpoint, write_path.cluster, write_path.attribute) var direct = generator.is_direct() var ctx - while (ctx := generator.next()) + while (ctx := generator.next_attribute()) ctx.msg = msg # enrich with message if ctx.status != nil # no match, return error because it was direct ctx.status = nil # remove status to silence output @@ -1074,7 +1156,7 @@ class Matter_IM # send the reponse that may need to be chunked if too large to fit in a single UDP message if !suppress_response - self.send_write_response(msg, ret) + self.send_queue.push(matter.IM_WriteResponse(msg, ret)) end end return true @@ -1123,7 +1205,7 @@ class Matter_IM var fake_read = matter.ReadRequestMessage() fake_read.fabric_filtered = false fake_read.attributes_requests = [] - + # build fake read request containing single read requests for all attributes that were changed for ctx: sub.updates var p1 = matter.AttributePathIB() p1.endpoint = ctx.endpoint @@ -1136,8 +1218,9 @@ class Matter_IM sub.is_keep_alive = false # sending an actual data update var generator_or_arr = self.process_read_or_subscribe_request_pull(fake_read, nil #-no msg-#) + var event_generator_or_arr = sub.update_event_generator_array() - var report_data_msg = matter.IM_ReportDataSubscribed_Pull(session._message_handler, session, generator_or_arr, sub) + var report_data_msg = matter.IM_ReportDataSubscribed_Pull(session._message_handler, session, generator_or_arr, event_generator_or_arr, sub) self.send_queue.push(report_data_msg) # push message to queue self.send_enqueued(session._message_handler) # and send queued messages now end @@ -1148,12 +1231,13 @@ class Matter_IM def send_subscribe_heartbeat(sub) var session = sub.session - log(f"MTR: >>: ReportData_Pull send_im start {current_generator.path_in_endpoint}/{current_generator.path_in_cluster}/{current_generator.path_in_attribute}",3) var ctx - while not_full && (ctx := current_generator.next()) # 'not_full' must be first to avoid removing an item when we don't want + while not_full && (ctx := current_generator.next_attribute()) # 'not_full' must be first to avoid removing an item when we don't want # log(f">>>: ReportData_Pull {ctx=}", 3) - var debug = responder.device.debug var force_log = current_generator.is_direct() || debug var elt_bytes = responder.im.read_single_attribute_to_bytes(current_generator.get_pi(), ctx, resp.session, force_log) # TODO adapt no_log if (elt_bytes == nil) continue end # silently ignored, iterate to next @@ -234,23 +240,75 @@ class Matter_IM_ReportData_Pull : Matter_IM_Message end + # do we have left-overs from events, i.e. self.data_ev is non-empty bytes() + if not_full && (self.data_ev != nil) && (size(self.data_ev) > 0) + # try to add self.data_ev + if (size(data) + size(self.data_ev) > self.MAX_MESSAGE) + not_full = false # skip until next iteration + data_ev = nil # don't output any value + else + self.data_ev = nil # we could add it, so remove from left-overs + end + end + + ########## Events + while not_full && (self.event_generator_or_arr != nil) + # get the current generator (first element of list or single object) + var current_generator = isinstance(self.event_generator_or_arr, list) ? self.event_generator_or_arr[0] : self.event_generator_or_arr + # now events + var ev + while not_full && (ev := current_generator.next_event()) # 'not_full' must be first to avoid removing an item when we don't want + # conditional logging + if debug && tasmota.loglevel(3) + var data_str = '' + if (ev.data0 != nil) data_str = " - " + str(ev.data0) end + if (ev.data1 != nil) data_str += ", " + str(ev.data1) end + if (ev.data2 != nil) data_str += ", " + str(ev.data2) end + log(f"MTR: >Read_Event({resp.session.local_session_id:6i}|{ev.event_no:8s}) [{ev.endpoint:02X}]{ev.cluster:04X}/{ev.event_id:02X}{data_str}", 3) + end + # send bytes + var ev_bytes = ev.to_raw_bytes() + if (size(data) + size(data_ev) + size(ev_bytes) > self.MAX_MESSAGE) + self.data_ev = ev_bytes # save for next iteration + not_full = false + else + data_ev.append(ev_bytes) # append response since we have enough room + end + end + + # if we are here, then we exhausted the current generator, and we need to move to the next one + if not_full + if isinstance(self.event_generator_or_arr, list) + self.event_generator_or_arr.remove(0) # remove first element + if size(self.event_generator_or_arr) == 0 + self.event_generator_or_arr = nil # empty array so we put nil + end + else + self.event_generator_or_arr = nil # there was a single entry, so replace with nil + end + end + + end + + ########## Response # prepare the response var ret = matter.ReportDataMessage() ret.subscription_id = self.subscription_id ret.suppress_response = self.suppress_response # ret.suppress_response = true - ret.attribute_reports = [data] - ret.more_chunked_messages = (self.data != nil) # we got more data to send + if (data != nil && size(data) > 0) + ret.attribute_reports = [data] + end + if (data_ev != nil && size(data_ev) > 0) + ret.event_reports = [data_ev] + end + ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send # print(">>>>> send elements before encode") var raw_tlv = ret.to_TLV() - # print(">>>>> send elements before encode 2") var encoded_tlv = raw_tlv.tlv2raw(bytes(self.MAX_MESSAGE)) # takes time - # print(">>>>> send elements before encode 3") resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer - # print(">>>>> send elements after encode") resp.encrypt() - # print(">>>>> send elements after encrypt") # log(format("MTR: {self.path_in_event_min}} event_no={self.event_no} event={matter.inspect(next_event)})", 3) + return next_event + end + end + end + + ################################################################################ + # event_is_match + # + # Returns true if the event passed as argument matches the filter + # but does not check the event number, because it is filtered out before + def event_is_match(next_event) + var match = true + if (self.path_in_endpoint != nil) + match = match && (self.path_in_endpoint == next_event.endpoint) + end + if (self.path_in_cluster != nil) + match = match && (self.path_in_cluster == next_event.cluster) + end + if (self.path_in_event != nil) + match = match && (self.path_in_event == next_event.event_id) + end + return match + end +end +matter.EventGenerator = Matter_EventGenerator diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be similarity index 97% rename from lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be index b774cfdbb..49be5faac 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be @@ -1,5 +1,5 @@ # -# Matter_IM_Path_1.be - suppport for Matter concrete path generator +# Matter_Path_1_Generator.be - suppport for Matter concrete path generator # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -104,11 +104,11 @@ class Matter_PathGenerator end ################################################################################ - # default_status_error + # _default_status_error # # Get the default error if the read or write fails. # This error is only reported if `direct` is true - def default_status_error() + def _default_status_error() if self.is_direct() if (!self.endpoint_found) return matter.UNSUPPORTED_ENDPOINT end if (!self.cluster_found) return matter.UNSUPPORTED_CLUSTER end @@ -119,15 +119,15 @@ class Matter_PathGenerator end ################################################################################ - # finished + # is_finished # # Returns `true` if we have exhausted the generator - def finished() + def is_finished() return (self.pi != false) end ################################################################################ - # finished + # get_pi # # Returns the endpoint object for the last context returned, or `nil` if not found or exhausted def get_pi() @@ -135,14 +135,14 @@ class Matter_PathGenerator end ################################################################################ - # next + # next_attribute # # Generate next concrete path # Returns: # - a path object (that is valid until next call) # - if 'direct' (concrete path), ctx.status contains the appropriate error code if the path value is not supported # - `nil` if no more objects - def next() + def next_attribute() if (self.pi == true) || (self.pi != nil && self.is_direct()) # if we already answered a succesful or missing context for direct request, abort on second call self.reset() return nil @@ -188,7 +188,7 @@ class Matter_PathGenerator path_concrete.cluster = self.path_in_cluster path_concrete.attribute = self.path_in_attribute path_concrete.fabric_filtered = self.path_in_fabric_filtered - path_concrete.status = self.default_status_error() + path_concrete.status = self._default_status_error() self.pi = true # next call will trigger Generator exhausted # log(f">>>: PathGenerator next path_concrete:{path_concrete} direct", 3) return path_concrete @@ -298,7 +298,7 @@ var gen = matter.PathGenerator(matter_device) def gen_path_dump(endpoint, cluster, attribute) gen.start(endpoint, cluster, attribute) var cp - while (cp := gen.next()) + while (cp := gen.next_attribute()) print(cp) end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 6c2f19160..32d223593 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -183,36 +183,12 @@ class Matter_Plugin ############################################################# # generate a new event # - def publish_event(cluster, event, priority, data) - var event_ib = matter.EventDataIB() - var event_path = matter.EventPathIB() - event_path.endpoint = self.endpoint - event_path.cluster = cluster - event_path.event = event - event_ib.path = event_path - event_ib.priority = priority - event_ib.event_number = self.device.events.get_next_event_no() - event_ib.epoch_timestamp = tasmota.rtc('utc') - if (event_ib.epoch_timestamp < 1700000000) event_ib.epoch_timestamp = nil end # no valid time - event_ib.data = data - if tasmota.loglevel(3) - var data_str = str(event_ib.data) - if (cluster == 0x0028) && (event == 0x00) - # put the software version in a readable format - var val = event_ib.data.val - data_str = format("%i.%i.%i.%i", (val >> 24) & 0xFF, (val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) - end - var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG " - var event_name = matter.get_event_name(cluster, event) - event_name = (event_name != nil) ? "(" + event_name + ") " : "" - log(f"MTR: +Add_Event ({priority_str}{event_ib.event_number:8s}) [{event_path.endpoint:02X}]{event_path.cluster:04X}/{event_path.event:02X} {event_name}- {data_str}", 2) - end - if tasmota.loglevel(4) - log(f"MTR: Publishing event {event_ib}", 4) - end - - self.device.events.queue_event(event_ib) + def publish_event(cluster, event_id, priority, data0, data1, data2) + self.device.events.publish_event(self.endpoint, cluster, event_id, true #-urgent-#, priority, data0, data1, data2) end + # def publish_event_non_urgent(cluster, event, priority, data0, data1, data2) + # self.device.events.publish_event(self.endpoint, cluster, event, false #-non_urgent-#, priority, data0, data1, data2) + # end #- testing var root = matter_device.plugins[0] diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index a01e7bcd2..1dc5b0a6a 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -49,7 +49,6 @@ class Matter_Plugin_Root : Matter_Plugin # Constructor def init(device, endpoint, config) super(self).init(device, endpoint, config) - self.publish_event(0x0028, 0x00, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U4, tasmota.version())) # Event StartUp - Software Version self.publish_event(0x0033, 0x03, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # Event BootReason - PowerOnReboot - TODO if we need to refine end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 4576ebc4d..56c53fe18 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -313,6 +313,7 @@ class Matter_Device def every_second() self.sessions.every_second() self.message_handler.every_second() + self.events.every_second() # periodically remove bytes() representation of events if self.commissioning_open != nil && tasmota.time_reached(self.commissioning_open) # timeout reached, close provisioning self.commissioning_open = nil end @@ -321,7 +322,6 @@ class Matter_Device ############################################################# # dispatch every 250ms to all plugins def every_250ms() - self.message_handler.every_250ms() # call read_sensors if needed self.read_sensors_scheduler() # call all plugins, use a manual loop to avoid creating a new object @@ -380,9 +380,11 @@ class Matter_Device end ############################################################# + # dispatch every 50ms # ticks def every_50ms() self.tick += 1 + self.message_handler.every_50ms() end ############################################################# @@ -535,7 +537,7 @@ class Matter_Device var direct = path_generator.is_direct() var concrete_path - while ((concrete_path := path_generator.next()) != nil) + while ((concrete_path := path_generator.next_attribute()) != nil) var finished = cb(path_generator.get_pi(), concrete_path) # call the callback with the plugin and the context end end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h index e5659f35c..84a9fb13a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -6,187 +6,6 @@ extern const bclass be_class_Matter_EventHandler; -/******************************************************************** -** Solidified function: queue_event -********************************************************************/ -extern const bclass be_class_Matter_EventHandler; -be_local_closure(class_Matter_EventHandler_queue_event, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_EventHandler, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(EventQueued), - /* K2 */ be_nested_str_weak(priority), - /* K3 */ be_nested_str_weak(queue_debug), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), - /* K6 */ be_nested_str_weak(pop), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(EVENT_DEBUG), - /* K9 */ be_nested_str_weak(queue_info), - /* K10 */ be_nested_str_weak(EVENT_INFO), - /* K11 */ be_nested_str_weak(queue_critical), - }), - be_str_weak(queue_event), - &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x880C0502, // 0004 GETMBR R3 R2 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x8C100904, // 0006 GETMET R4 R4 K4 - 0x5C180400, // 0007 MOVE R6 R2 - 0x7C100400, // 0008 CALL R4 2 - 0x6010000C, // 0009 GETGBL R4 G12 - 0x88140103, // 000A GETMBR R5 R0 K3 - 0x7C100200, // 000B CALL R4 1 - 0x88140105, // 000C GETMBR R5 R0 K5 - 0x24100805, // 000D GT R4 R4 R5 - 0x78120029, // 000E JMPF R4 #0039 - 0x88100103, // 000F GETMBR R4 R0 K3 - 0x8C100906, // 0010 GETMET R4 R4 K6 - 0x58180007, // 0011 LDCONST R6 K7 - 0x7C100400, // 0012 CALL R4 2 - 0x88140902, // 0013 GETMBR R5 R4 K2 - 0xB81A0000, // 0014 GETNGBL R6 K0 - 0x88180D08, // 0015 GETMBR R6 R6 K8 - 0x24140A06, // 0016 GT R5 R5 R6 - 0x78160020, // 0017 JMPF R5 #0039 - 0x88140109, // 0018 GETMBR R5 R0 K9 - 0x8C140B04, // 0019 GETMET R5 R5 K4 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x6014000C, // 001C GETGBL R5 G12 - 0x88180109, // 001D GETMBR R6 R0 K9 - 0x7C140200, // 001E CALL R5 1 - 0x88180105, // 001F GETMBR R6 R0 K5 - 0x24140A06, // 0020 GT R5 R5 R6 - 0x78160016, // 0021 JMPF R5 #0039 - 0x88140109, // 0022 GETMBR R5 R0 K9 - 0x8C140B06, // 0023 GETMET R5 R5 K6 - 0x581C0007, // 0024 LDCONST R7 K7 - 0x7C140400, // 0025 CALL R5 2 - 0x88180B02, // 0026 GETMBR R6 R5 K2 - 0xB81E0000, // 0027 GETNGBL R7 K0 - 0x881C0F0A, // 0028 GETMBR R7 R7 K10 - 0x24180C07, // 0029 GT R6 R6 R7 - 0x781A000D, // 002A JMPF R6 #0039 - 0x8818010B, // 002B GETMBR R6 R0 K11 - 0x8C180D04, // 002C GETMET R6 R6 K4 - 0x5C200A00, // 002D MOVE R8 R5 - 0x7C180400, // 002E CALL R6 2 - 0x6018000C, // 002F GETGBL R6 G12 - 0x881C010B, // 0030 GETMBR R7 R0 K11 - 0x7C180200, // 0031 CALL R6 1 - 0x881C0105, // 0032 GETMBR R7 R0 K5 - 0x24180C07, // 0033 GT R6 R6 R7 - 0x781A0003, // 0034 JMPF R6 #0039 - 0x8818010B, // 0035 GETMBR R6 R0 K11 - 0x8C180D06, // 0036 GETMET R6 R6 K6 - 0x58200007, // 0037 LDCONST R8 K7 - 0x7C180400, // 0038 CALL R6 2 - 0x80000000, // 0039 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_EventHandler; -be_local_closure(class_Matter_EventHandler_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_EventHandler, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(queue_debug), - /* K2 */ be_nested_str_weak(queue_info), - /* K3 */ be_nested_str_weak(queue_critical), - /* K4 */ be_nested_str_weak(load_event_no_persisted), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x60080012, // 0004 GETGBL R2 G18 - 0x7C080000, // 0005 CALL R2 0 - 0x90020402, // 0006 SETMBR R0 K2 R2 - 0x60080012, // 0007 GETGBL R2 G18 - 0x7C080000, // 0008 CALL R2 0 - 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x8C080104, // 000A GETMET R2 R0 K4 - 0x7C080200, // 000B CALL R2 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_next_event_no -********************************************************************/ -extern const bclass be_class_Matter_EventHandler; -be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_EventHandler, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(counter_event_no), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(counter_event_no_persisted), - /* K4 */ be_nested_str_weak(load_event_no_persisted), - }), - be_str_weak(get_next_event_no), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0x88040100, // 0005 GETMBR R1 R0 K0 - 0x88080103, // 0006 GETMBR R2 R0 K3 - 0x28040202, // 0007 GE R1 R1 R2 - 0x78060001, // 0008 JMPF R1 #000B - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x88040100, // 000B GETMBR R1 R0 K0 - 0x80040200, // 000C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: dump ********************************************************************/ @@ -298,6 +117,77 @@ be_local_closure(class_Matter_EventHandler_dump, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: get_last_event_no +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_get_last_event_no, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(counter_event_no), + }), + be_str_weak(get_last_event_no), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_next_event_no +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(counter_event_no), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(counter_event_no_persisted), + /* K4 */ be_nested_str_weak(load_event_no_persisted), + }), + be_str_weak(get_next_event_no), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x90020001, // 0004 SETMBR R0 K0 R1 + 0x88040100, // 0005 GETMBR R1 R0 K0 + 0x88080103, // 0006 GETMBR R2 R0 K3 + 0x28040202, // 0007 GE R1 R1 R2 + 0x78060001, // 0008 JMPF R1 #000B + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x88040100, // 000B GETMBR R1 R0 K0 + 0x80040200, // 000C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: load_event_no_persisted ********************************************************************/ @@ -315,7 +205,7 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(persist), /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(EVENT_NO_FILENAME), + /* K2 */ be_nested_str_weak(EVENT_NO_KEY), /* K3 */ be_nested_str_weak(0), /* K4 */ be_nested_str_weak(counter_event_no), /* K5 */ be_nested_str_weak(int64), @@ -362,28 +252,539 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: queue_event +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_queue_event, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(priority), + /* K1 */ be_nested_str_weak(queue_debug), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), + /* K4 */ be_nested_str_weak(pop), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(EVENT_DEBUG), + /* K8 */ be_nested_str_weak(queue_info), + /* K9 */ be_nested_str_weak(EVENT_INFO), + /* K10 */ be_nested_str_weak(queue_critical), + }), + be_str_weak(queue_event), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x88100103, // 0008 GETMBR R4 R0 K3 + 0x240C0604, // 0009 GT R3 R3 R4 + 0x780E0029, // 000A JMPF R3 #0035 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x8C0C0704, // 000C GETMET R3 R3 K4 + 0x58140005, // 000D LDCONST R5 K5 + 0x7C0C0400, // 000E CALL R3 2 + 0x88100700, // 000F GETMBR R4 R3 K0 + 0xB8160C00, // 0010 GETNGBL R5 K6 + 0x88140B07, // 0011 GETMBR R5 R5 K7 + 0x24100805, // 0012 GT R4 R4 R5 + 0x78120020, // 0013 JMPF R4 #0035 + 0x88100108, // 0014 GETMBR R4 R0 K8 + 0x8C100902, // 0015 GETMET R4 R4 K2 + 0x5C180600, // 0016 MOVE R6 R3 + 0x7C100400, // 0017 CALL R4 2 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x88140108, // 0019 GETMBR R5 R0 K8 + 0x7C100200, // 001A CALL R4 1 + 0x88140103, // 001B GETMBR R5 R0 K3 + 0x24100805, // 001C GT R4 R4 R5 + 0x78120016, // 001D JMPF R4 #0035 + 0x88100108, // 001E GETMBR R4 R0 K8 + 0x8C100904, // 001F GETMET R4 R4 K4 + 0x58180005, // 0020 LDCONST R6 K5 + 0x7C100400, // 0021 CALL R4 2 + 0x88140900, // 0022 GETMBR R5 R4 K0 + 0xB81A0C00, // 0023 GETNGBL R6 K6 + 0x88180D09, // 0024 GETMBR R6 R6 K9 + 0x24140A06, // 0025 GT R5 R5 R6 + 0x7816000D, // 0026 JMPF R5 #0035 + 0x8814010A, // 0027 GETMBR R5 R0 K10 + 0x8C140B02, // 0028 GETMET R5 R5 K2 + 0x5C1C0800, // 0029 MOVE R7 R4 + 0x7C140400, // 002A CALL R5 2 + 0x6014000C, // 002B GETGBL R5 G12 + 0x8818010A, // 002C GETMBR R6 R0 K10 + 0x7C140200, // 002D CALL R5 1 + 0x88180103, // 002E GETMBR R6 R0 K3 + 0x24140A06, // 002F GT R5 R5 R6 + 0x78160003, // 0030 JMPF R5 #0035 + 0x8814010A, // 0031 GETMBR R5 R0 K10 + 0x8C140B04, // 0032 GETMET R5 R5 K4 + 0x581C0005, // 0033 LDCONST R7 K5 + 0x7C140400, // 0034 CALL R5 2 + 0x80000000, // 0035 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_every_second, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(compact), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(queue_debug), + /* K2 */ be_nested_str_weak(queue_info), + /* K3 */ be_nested_str_weak(queue_critical), + /* K4 */ be_nested_str_weak(load_event_no_persisted), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x60080012, // 0004 GETGBL R2 G18 + 0x7C080000, // 0005 CALL R2 0 + 0x90020402, // 0006 SETMBR R0 K2 R2 + 0x60080012, // 0007 GETGBL R2 G18 + 0x7C080000, // 0008 CALL R2 0 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0x8C080104, // 000A GETMET R2 R0 K4 + 0x7C080200, // 000B CALL R2 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_min_no +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(1), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(event_no), + }), + be_str_weak(find_in_queue), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x600C000C, // 0000 GETGBL R3 G12 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x040C0700, // 0003 SUB R3 R3 K0 + 0x28100701, // 0004 GE R4 R3 K1 + 0x78120011, // 0005 JMPF R4 #0018 + 0x94100203, // 0006 GETIDX R4 R1 R3 + 0x4C140000, // 0007 LDNIL R5 + 0x20140405, // 0008 NE R5 R2 R5 + 0x78160003, // 0009 JMPF R5 #000E + 0x88140902, // 000A GETMBR R5 R4 K2 + 0x18140A02, // 000B LE R5 R5 R2 + 0x78160000, // 000C JMPF R5 #000E + 0x80040000, // 000D RET 1 R0 + 0x4C140000, // 000E LDNIL R5 + 0x1C140005, // 000F EQ R5 R0 R5 + 0x74160003, // 0010 JMPT R5 #0015 + 0x88140902, // 0011 GETMBR R5 R4 K2 + 0x88180102, // 0012 GETMBR R6 R0 K2 + 0x14140A06, // 0013 LT R5 R5 R6 + 0x78160000, // 0014 JMPF R5 #0016 + 0x5C000800, // 0015 MOVE R0 R4 + 0x040C0700, // 0016 SUB R3 R3 K0 + 0x7001FFEB, // 0017 JMP #0004 + 0x80040000, // 0018 RET 1 R0 + }) + ), + &be_class_Matter_EventHandler, + }), + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(counter_event_no), + /* K1 */ be_nested_str_weak(queue_debug), + /* K2 */ be_nested_str_weak(queue_info), + /* K3 */ be_nested_str_weak(queue_critical), + }), + be_str_weak(find_min_no), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0004, // 0002 JMPF R2 #0008 + 0x88080100, // 0003 GETMBR R2 R0 K0 + 0x28080202, // 0004 GE R2 R1 R2 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x4C080000, // 0006 LDNIL R2 + 0x80040400, // 0007 RET 1 R2 + 0x84080000, // 0008 CLOSURE R2 P0 + 0x4C0C0000, // 0009 LDNIL R3 + 0x5C100400, // 000A MOVE R4 R2 + 0x5C140600, // 000B MOVE R5 R3 + 0x88180101, // 000C GETMBR R6 R0 K1 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C100600, // 000E CALL R4 3 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x5C100400, // 0010 MOVE R4 R2 + 0x5C140600, // 0011 MOVE R5 R3 + 0x88180102, // 0012 GETMBR R6 R0 K2 + 0x5C1C0200, // 0013 MOVE R7 R1 + 0x7C100600, // 0014 CALL R4 3 + 0x5C0C0800, // 0015 MOVE R3 R4 + 0x5C100400, // 0016 MOVE R4 R2 + 0x5C140600, // 0017 MOVE R5 R3 + 0x88180103, // 0018 GETMBR R6 R0 K3 + 0x5C1C0200, // 0019 MOVE R7 R1 + 0x7C100600, // 001A CALL R4 3 + 0x5C0C0800, // 001B MOVE R3 R4 + 0x80040600, // 001C RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: publish_event +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_publish_event, /* name */ + be_nested_proto( + 23, /* nstack */ + 9, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventHandler, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(EventQueued), + /* K2 */ be_nested_str_weak(get_next_event_no), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(loglevel), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(_X2C_X20), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(val), + /* K10 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(CRIT_X20_X20), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(INFO_X20_X20), + /* K15 */ be_nested_str_weak(DEBUG_X20), + /* K16 */ be_nested_str_weak(get_event_name), + /* K17 */ be_nested_str_weak(_X28), + /* K18 */ be_nested_str_weak(_X29_X20), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), + /* K21 */ be_nested_str_weak(event_no), + /* K22 */ be_nested_str_weak(endpoint), + /* K23 */ be_nested_str_weak(cluster), + /* K24 */ be_nested_str_weak(event_id), + /* K25 */ be_nested_str_weak(queue_event), + /* K26 */ be_nested_str_weak(device), + /* K27 */ be_nested_str_weak(message_handler), + /* K28 */ be_nested_str_weak(im), + /* K29 */ be_nested_str_weak(subs_shop), + /* K30 */ be_nested_str_weak(event_published), + }), + be_str_weak(publish_event), + &be_const_str_solidified, + ( &(const binstruction[112]) { /* code */ + 0xB8260000, // 0000 GETNGBL R9 K0 + 0x8C241301, // 0001 GETMET R9 R9 K1 + 0x8C2C0102, // 0002 GETMET R11 R0 K2 + 0x7C2C0200, // 0003 CALL R11 1 + 0x5C300200, // 0004 MOVE R12 R1 + 0x5C340400, // 0005 MOVE R13 R2 + 0x5C380600, // 0006 MOVE R14 R3 + 0x5C3C0800, // 0007 MOVE R15 R4 + 0x5C400A00, // 0008 MOVE R16 R5 + 0x5C440C00, // 0009 MOVE R17 R6 + 0x5C480E00, // 000A MOVE R18 R7 + 0x5C4C1000, // 000B MOVE R19 R8 + 0x7C241400, // 000C CALL R9 10 + 0xB82A0600, // 000D GETNGBL R10 K3 + 0x8C281504, // 000E GETMET R10 R10 K4 + 0x58300005, // 000F LDCONST R12 K5 + 0x7C280400, // 0010 CALL R10 2 + 0x782A0052, // 0011 JMPF R10 #0065 + 0x58280006, // 0012 LDCONST R10 K6 + 0x4C2C0000, // 0013 LDNIL R11 + 0x202C0C0B, // 0014 NE R11 R6 R11 + 0x782E0003, // 0015 JMPF R11 #001A + 0x602C0008, // 0016 GETGBL R11 G8 + 0x5C300C00, // 0017 MOVE R12 R6 + 0x7C2C0200, // 0018 CALL R11 1 + 0x5C281600, // 0019 MOVE R10 R11 + 0x4C2C0000, // 001A LDNIL R11 + 0x202C0E0B, // 001B NE R11 R7 R11 + 0x782E0004, // 001C JMPF R11 #0022 + 0x602C0008, // 001D GETGBL R11 G8 + 0x5C300E00, // 001E MOVE R12 R7 + 0x7C2C0200, // 001F CALL R11 1 + 0x002E0E0B, // 0020 ADD R11 K7 R11 + 0x0028140B, // 0021 ADD R10 R10 R11 + 0x4C2C0000, // 0022 LDNIL R11 + 0x202C100B, // 0023 NE R11 R8 R11 + 0x782E0004, // 0024 JMPF R11 #002A + 0x602C0008, // 0025 GETGBL R11 G8 + 0x5C301000, // 0026 MOVE R12 R8 + 0x7C2C0200, // 0027 CALL R11 1 + 0x002E0E0B, // 0028 ADD R11 K7 R11 + 0x0028140B, // 0029 ADD R10 R10 R11 + 0x542E0027, // 002A LDINT R11 40 + 0x1C2C040B, // 002B EQ R11 R2 R11 + 0x782E0014, // 002C JMPF R11 #0042 + 0x1C2C0708, // 002D EQ R11 R3 K8 + 0x782E0012, // 002E JMPF R11 #0042 + 0x882C0D09, // 002F GETMBR R11 R6 K9 + 0x60300018, // 0030 GETGBL R12 G24 + 0x5834000A, // 0031 LDCONST R13 K10 + 0x543A0017, // 0032 LDINT R14 24 + 0x3C38160E, // 0033 SHR R14 R11 R14 + 0x543E00FE, // 0034 LDINT R15 255 + 0x2C381C0F, // 0035 AND R14 R14 R15 + 0x543E000F, // 0036 LDINT R15 16 + 0x3C3C160F, // 0037 SHR R15 R11 R15 + 0x544200FE, // 0038 LDINT R16 255 + 0x2C3C1E10, // 0039 AND R15 R15 R16 + 0x54420007, // 003A LDINT R16 8 + 0x3C401610, // 003B SHR R16 R11 R16 + 0x544600FE, // 003C LDINT R17 255 + 0x2C402011, // 003D AND R16 R16 R17 + 0x544600FE, // 003E LDINT R17 255 + 0x2C441611, // 003F AND R17 R11 R17 + 0x7C300A00, // 0040 CALL R12 5 + 0x5C281800, // 0041 MOVE R10 R12 + 0x1C2C0B0B, // 0042 EQ R11 R5 K11 + 0x782E0001, // 0043 JMPF R11 #0046 + 0x582C000C, // 0044 LDCONST R11 K12 + 0x70020004, // 0045 JMP #004B + 0x1C2C0B0D, // 0046 EQ R11 R5 K13 + 0x782E0001, // 0047 JMPF R11 #004A + 0x582C000E, // 0048 LDCONST R11 K14 + 0x70020000, // 0049 JMP #004B + 0x582C000F, // 004A LDCONST R11 K15 + 0xB8320000, // 004B GETNGBL R12 K0 + 0x8C301910, // 004C GETMET R12 R12 K16 + 0x5C380400, // 004D MOVE R14 R2 + 0x5C3C0600, // 004E MOVE R15 R3 + 0x7C300600, // 004F CALL R12 3 + 0x4C340000, // 0050 LDNIL R13 + 0x2034180D, // 0051 NE R13 R12 R13 + 0x78360002, // 0052 JMPF R13 #0056 + 0x0036220C, // 0053 ADD R13 K17 R12 + 0x00341B12, // 0054 ADD R13 R13 K18 + 0x70020000, // 0055 JMP #0057 + 0x58340006, // 0056 LDCONST R13 K6 + 0x5C301A00, // 0057 MOVE R12 R13 + 0xB8362600, // 0058 GETNGBL R13 K19 + 0x60380018, // 0059 GETGBL R14 G24 + 0x583C0014, // 005A LDCONST R15 K20 + 0x5C401600, // 005B MOVE R16 R11 + 0x88441315, // 005C GETMBR R17 R9 K21 + 0x88481316, // 005D GETMBR R18 R9 K22 + 0x884C1317, // 005E GETMBR R19 R9 K23 + 0x88501318, // 005F GETMBR R20 R9 K24 + 0x5C541800, // 0060 MOVE R21 R12 + 0x5C581400, // 0061 MOVE R22 R10 + 0x7C381000, // 0062 CALL R14 8 + 0x583C000B, // 0063 LDCONST R15 K11 + 0x7C340400, // 0064 CALL R13 2 + 0x8C280119, // 0065 GETMET R10 R0 K25 + 0x5C301200, // 0066 MOVE R12 R9 + 0x7C280400, // 0067 CALL R10 2 + 0x8828011A, // 0068 GETMBR R10 R0 K26 + 0x8828151B, // 0069 GETMBR R10 R10 K27 + 0x8828151C, // 006A GETMBR R10 R10 K28 + 0x8828151D, // 006B GETMBR R10 R10 K29 + 0x8C28151E, // 006C GETMET R10 R10 K30 + 0x5C301200, // 006D MOVE R12 R9 + 0x7C280400, // 006E CALL R10 2 + 0x80000000, // 006F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compact +********************************************************************/ +extern const bclass be_class_Matter_EventHandler; +be_local_closure(class_Matter_EventHandler_compact, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(compact), + /* K2 */ be_const_int(1), + }), + be_str_weak(compact_queue), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x94080001, // 0006 GETIDX R2 R0 R1 + 0x8C080501, // 0007 GETMET R2 R2 K1 + 0x7C080200, // 0008 CALL R2 1 + 0x00040302, // 0009 ADD R1 R1 K2 + 0x7001FFF5, // 000A JMP #0001 + 0x80000000, // 000B RET 0 + }) + ), + &be_class_Matter_EventHandler, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(queue_debug), + /* K1 */ be_nested_str_weak(queue_info), + /* K2 */ be_nested_str_weak(queue_critical), + }), + be_str_weak(compact), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x84040000, // 0000 CLOSURE R1 P0 + 0x5C080200, // 0001 MOVE R2 R1 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x7C080200, // 0003 CALL R2 1 + 0x5C080200, // 0004 MOVE R2 R1 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x7C080200, // 0006 CALL R2 1 + 0x5C080200, // 0007 MOVE R2 R1 + 0x880C0102, // 0008 GETMBR R3 R0 K2 + 0x7C080200, // 0009 CALL R2 1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_EventHandler ********************************************************************/ be_local_class(Matter_EventHandler, 6, NULL, - be_nested_map(14, + be_nested_map(19, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(EVENT_NO_INCR, -1), be_const_int(1000) }, { be_const_key_weak(queue_info, -1), be_const_var(1) }, - { be_const_key_weak(queue_critical, 11), be_const_var(2) }, - { be_const_key_weak(queue_event, -1), be_const_closure(class_Matter_EventHandler_queue_event_closure) }, - { be_const_key_weak(counter_event_no_persisted, 6), be_const_var(5) }, + { be_const_key_weak(dump, 4), be_const_closure(class_Matter_EventHandler_dump_closure) }, + { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventHandler_compact_closure) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventHandler_init_closure) }, - { be_const_key_weak(get_next_event_no, -1), be_const_closure(class_Matter_EventHandler_get_next_event_no_closure) }, - { be_const_key_weak(dump, -1), be_const_closure(class_Matter_EventHandler_dump_closure) }, - { be_const_key_weak(queue_debug, 10), be_const_var(0) }, - { be_const_key_weak(EVENT_NO_FILENAME, -1), be_nested_str_weak(_matter_event_no) }, - { be_const_key_weak(counter_event_no, -1), be_const_var(4) }, + { be_const_key_weak(EVENT_NO_INCR, -1), be_const_int(1000) }, + { be_const_key_weak(load_event_no_persisted, 2), be_const_closure(class_Matter_EventHandler_load_event_no_persisted_closure) }, + { be_const_key_weak(EVENT_NO_KEY, -1), be_nested_str_weak(_matter_event_no) }, { be_const_key_weak(EVENT_QUEUE_SIZE_MAX, -1), be_const_int(10) }, - { be_const_key_weak(load_event_no_persisted, -1), be_const_closure(class_Matter_EventHandler_load_event_no_persisted_closure) }, - { be_const_key_weak(device, -1), be_const_var(3) }, + { be_const_key_weak(counter_event_no, -1), be_const_var(4) }, + { be_const_key_weak(queue_debug, -1), be_const_var(0) }, + { be_const_key_weak(publish_event, -1), be_const_closure(class_Matter_EventHandler_publish_event_closure) }, + { be_const_key_weak(queue_event, -1), be_const_closure(class_Matter_EventHandler_queue_event_closure) }, + { be_const_key_weak(get_last_event_no, 18), be_const_closure(class_Matter_EventHandler_get_last_event_no_closure) }, + { be_const_key_weak(get_next_event_no, 3), be_const_closure(class_Matter_EventHandler_get_next_event_no_closure) }, + { be_const_key_weak(counter_event_no_persisted, 16), be_const_var(5) }, + { be_const_key_weak(device, 10), be_const_var(3) }, + { be_const_key_weak(find_min_no, -1), be_const_closure(class_Matter_EventHandler_find_min_no_closure) }, + { be_const_key_weak(queue_critical, -1), be_const_var(2) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_EventHandler_every_second_closure) }, })), be_str_weak(Matter_EventHandler) ); @@ -391,78 +792,227 @@ be_local_class(Matter_EventHandler, extern const bclass be_class_Matter_EventQueued; /******************************************************************** -** Solidified function: init +** Solidified function: compact ********************************************************************/ extern const bclass be_class_Matter_EventQueued; -be_local_closure(class_Matter_EventQueued_init, /* name */ +be_local_closure(class_Matter_EventQueued_compact, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_EventQueued, 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(path), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(raw_tlv), + }), + be_str_weak(compact), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: to_raw_bytes +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[28]) { /* constants */ + /* K0 */ be_nested_str_weak(raw_tlv), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(EventReportIB), + /* K3 */ be_nested_str_weak(EventDataIB), + /* K4 */ be_nested_str_weak(event_data), + /* K5 */ be_nested_str_weak(EventPathIB), + /* K6 */ be_nested_str_weak(endpoint), + /* K7 */ be_nested_str_weak(cluster), + /* K8 */ be_nested_str_weak(event), + /* K9 */ be_nested_str_weak(event_id), + /* K10 */ be_nested_str_weak(is_urgent), + /* K11 */ be_nested_str_weak(path), + /* K12 */ be_nested_str_weak(priority), + /* K13 */ be_nested_str_weak(event_number), + /* K14 */ be_nested_str_weak(event_no), + /* K15 */ be_nested_str_weak(epoch_timestamp), + /* K16 */ be_nested_str_weak(data), + /* K17 */ be_nested_str_weak(TLV), + /* K18 */ be_nested_str_weak(Matter_TLV_struct), + /* K19 */ be_nested_str_weak(data0), + /* K20 */ be_nested_str_weak(add_obj), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str_weak(data1), + /* K23 */ be_const_int(1), + /* K24 */ be_nested_str_weak(data2), + /* K25 */ be_const_int(2), + /* K26 */ be_nested_str_weak(to_TLV), + /* K27 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(to_raw_bytes), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x7806003D, // 0003 JMPF R1 #0042 + 0xB8060200, // 0004 GETNGBL R1 K1 + 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x7C040200, // 0006 CALL R1 1 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x8C080503, // 0008 GETMET R2 R2 K3 + 0x7C080200, // 0009 CALL R2 1 + 0x90060802, // 000A SETMBR R1 K4 R2 + 0xB80E0200, // 000B GETNGBL R3 K1 + 0x8C0C0705, // 000C GETMET R3 R3 K5 + 0x7C0C0200, // 000D CALL R3 1 + 0x88100106, // 000E GETMBR R4 R0 K6 + 0x900E0C04, // 000F SETMBR R3 K6 R4 + 0x88100107, // 0010 GETMBR R4 R0 K7 + 0x900E0E04, // 0011 SETMBR R3 K7 R4 + 0x88100109, // 0012 GETMBR R4 R0 K9 + 0x900E1004, // 0013 SETMBR R3 K8 R4 + 0x8810010A, // 0014 GETMBR R4 R0 K10 + 0x900E1404, // 0015 SETMBR R3 K10 R4 + 0x900A1603, // 0016 SETMBR R2 K11 R3 + 0x8810010C, // 0017 GETMBR R4 R0 K12 + 0x900A1804, // 0018 SETMBR R2 K12 R4 + 0x8810010E, // 0019 GETMBR R4 R0 K14 + 0x900A1A04, // 001A SETMBR R2 K13 R4 + 0x8810010F, // 001B GETMBR R4 R0 K15 + 0x900A1E04, // 001C SETMBR R2 K15 R4 + 0xB8120200, // 001D GETNGBL R4 K1 + 0x88100911, // 001E GETMBR R4 R4 K17 + 0x8C100912, // 001F GETMET R4 R4 K18 + 0x7C100200, // 0020 CALL R4 1 + 0x900A2004, // 0021 SETMBR R2 K16 R4 + 0x88100113, // 0022 GETMBR R4 R0 K19 + 0x4C140000, // 0023 LDNIL R5 + 0x20100805, // 0024 NE R4 R4 R5 + 0x78120004, // 0025 JMPF R4 #002B + 0x88100510, // 0026 GETMBR R4 R2 K16 + 0x8C100914, // 0027 GETMET R4 R4 K20 + 0x58180015, // 0028 LDCONST R6 K21 + 0x881C0113, // 0029 GETMBR R7 R0 K19 + 0x7C100600, // 002A CALL R4 3 + 0x88100116, // 002B GETMBR R4 R0 K22 + 0x4C140000, // 002C LDNIL R5 + 0x20100805, // 002D NE R4 R4 R5 + 0x78120004, // 002E JMPF R4 #0034 + 0x88100510, // 002F GETMBR R4 R2 K16 + 0x8C100914, // 0030 GETMET R4 R4 K20 + 0x58180017, // 0031 LDCONST R6 K23 + 0x881C0116, // 0032 GETMBR R7 R0 K22 + 0x7C100600, // 0033 CALL R4 3 + 0x88100118, // 0034 GETMBR R4 R0 K24 + 0x4C140000, // 0035 LDNIL R5 + 0x20100805, // 0036 NE R4 R4 R5 + 0x78120004, // 0037 JMPF R4 #003D + 0x88100510, // 0038 GETMBR R4 R2 K16 + 0x8C100914, // 0039 GETMET R4 R4 K20 + 0x58180019, // 003A LDCONST R6 K25 + 0x881C0118, // 003B GETMBR R7 R0 K24 + 0x7C100600, // 003C CALL R4 3 + 0x8C10031A, // 003D GETMET R4 R1 K26 + 0x7C100200, // 003E CALL R4 1 + 0x8C10091B, // 003F GETMET R4 R4 K27 + 0x7C100200, // 0040 CALL R4 1 + 0x90020004, // 0041 SETMBR R0 K0 R4 + 0x88040100, // 0042 GETMBR R1 R0 K0 + 0x80040200, // 0043 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_init, /* name */ + be_nested_proto( + 13, /* nstack */ + 10, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(event_no), + /* K1 */ be_nested_str_weak(endpoint), /* K2 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(event_id), - /* K4 */ be_nested_str_weak(event), - /* K5 */ be_nested_str_weak(is_urgent), - /* K6 */ be_nested_str_weak(priority), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(matter), - /* K9 */ be_nested_str_weak(EVENT_CRITICAL), - /* K10 */ be_nested_str_weak(event_no), - /* K11 */ be_nested_str_weak(int64), - /* K12 */ be_nested_str_weak(toint64), - /* K13 */ be_nested_str_weak(event_number), - /* K14 */ be_nested_str_weak(raw_tlv), - /* K15 */ be_nested_str_weak(to_TLV), - /* K16 */ be_nested_str_weak(tlv2raw), + /* K4 */ be_nested_str_weak(is_urgent), + /* K5 */ be_nested_str_weak(priority), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(EVENT_CRITICAL), + /* K9 */ be_nested_str_weak(epoch_timestamp), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(rtc), + /* K12 */ be_nested_str_weak(utc), + /* K13 */ be_const_int(1700000000), + /* K14 */ be_nested_str_weak(config_time), + /* K15 */ be_nested_str_weak(data0), + /* K16 */ be_nested_str_weak(data1), + /* K17 */ be_nested_str_weak(data2), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x88080301, // 0000 GETMBR R2 R1 K1 - 0x88080500, // 0001 GETMBR R2 R2 K0 - 0x90020002, // 0002 SETMBR R0 K0 R2 - 0x88080301, // 0003 GETMBR R2 R1 K1 - 0x88080502, // 0004 GETMBR R2 R2 K2 - 0x90020402, // 0005 SETMBR R0 K2 R2 - 0x88080301, // 0006 GETMBR R2 R1 K1 - 0x88080504, // 0007 GETMBR R2 R2 K4 - 0x90020602, // 0008 SETMBR R0 K3 R2 - 0x88080301, // 0009 GETMBR R2 R1 K1 - 0x88080505, // 000A GETMBR R2 R2 K5 - 0x90020A02, // 000B SETMBR R0 K5 R2 - 0x88080306, // 000C GETMBR R2 R1 K6 - 0x90020C02, // 000D SETMBR R0 K6 R2 - 0x88080106, // 000E GETMBR R2 R0 K6 - 0x14080507, // 000F LT R2 R2 K7 - 0x780A0000, // 0010 JMPF R2 #0012 - 0x90020D07, // 0011 SETMBR R0 K6 K7 - 0x88080106, // 0012 GETMBR R2 R0 K6 - 0xB80E1000, // 0013 GETNGBL R3 K8 - 0x880C0709, // 0014 GETMBR R3 R3 K9 - 0x24080403, // 0015 GT R2 R2 R3 - 0x780A0002, // 0016 JMPF R2 #001A - 0xB80A1000, // 0017 GETNGBL R2 K8 - 0x88080509, // 0018 GETMBR R2 R2 K9 - 0x90020C02, // 0019 SETMBR R0 K6 R2 - 0xB80A1600, // 001A GETNGBL R2 K11 - 0x8C08050C, // 001B GETMET R2 R2 K12 - 0x8810030D, // 001C GETMBR R4 R1 K13 - 0x7C080400, // 001D CALL R2 2 - 0x90021402, // 001E SETMBR R0 K10 R2 - 0x8C08030F, // 001F GETMET R2 R1 K15 - 0x7C080200, // 0020 CALL R2 1 - 0x8C080510, // 0021 GETMET R2 R2 K16 - 0x7C080200, // 0022 CALL R2 1 - 0x90021C02, // 0023 SETMBR R0 K14 R2 - 0x80000000, // 0024 RET 0 + ( &(const binstruction[35]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x90020604, // 0003 SETMBR R0 K3 R4 + 0x90020805, // 0004 SETMBR R0 K4 R5 + 0x90020A06, // 0005 SETMBR R0 K5 R6 + 0x88280105, // 0006 GETMBR R10 R0 K5 + 0x14281506, // 0007 LT R10 R10 K6 + 0x782A0000, // 0008 JMPF R10 #000A + 0x90020B06, // 0009 SETMBR R0 K5 K6 + 0x88280105, // 000A GETMBR R10 R0 K5 + 0xB82E0E00, // 000B GETNGBL R11 K7 + 0x882C1708, // 000C GETMBR R11 R11 K8 + 0x2428140B, // 000D GT R10 R10 R11 + 0x782A0002, // 000E JMPF R10 #0012 + 0xB82A0E00, // 000F GETNGBL R10 K7 + 0x88281508, // 0010 GETMBR R10 R10 K8 + 0x90020A0A, // 0011 SETMBR R0 K5 R10 + 0xB82A1400, // 0012 GETNGBL R10 K10 + 0x8C28150B, // 0013 GETMET R10 R10 K11 + 0x5830000C, // 0014 LDCONST R12 K12 + 0x7C280400, // 0015 CALL R10 2 + 0x9002120A, // 0016 SETMBR R0 K9 R10 + 0x88280109, // 0017 GETMBR R10 R0 K9 + 0x1428150D, // 0018 LT R10 R10 K13 + 0x782A0004, // 0019 JMPF R10 #001F + 0xB82A1400, // 001A GETNGBL R10 K10 + 0x8C28150B, // 001B GETMET R10 R10 K11 + 0x5830000E, // 001C LDCONST R12 K14 + 0x7C280400, // 001D CALL R10 2 + 0x9002120A, // 001E SETMBR R0 K9 R10 + 0x90021E07, // 001F SETMBR R0 K15 R7 + 0x90022008, // 0020 SETMBR R0 K16 R8 + 0x90022209, // 0021 SETMBR R0 K17 R9 + 0x80000000, // 0022 RET 0 }) ) ); @@ -473,18 +1023,24 @@ be_local_closure(class_Matter_EventQueued_init, /* name */ ** Solidified class: Matter_EventQueued ********************************************************************/ be_local_class(Matter_EventQueued, - 7, + 11, NULL, - be_nested_map(8, + be_nested_map(14, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(is_urgent, -1), be_const_var(3) }, - { be_const_key_weak(priority, -1), be_const_var(4) }, { be_const_key_weak(endpoint, -1), be_const_var(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventQueued_init_closure) }, - { be_const_key_weak(raw_tlv, 2), be_const_var(6) }, - { be_const_key_weak(event_id, 6), be_const_var(2) }, + { be_const_key_weak(epoch_timestamp, -1), be_const_var(9) }, + { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventQueued_compact_closure) }, + { be_const_key_weak(init, 10), be_const_closure(class_Matter_EventQueued_init_closure) }, + { be_const_key_weak(data2, 11), be_const_var(7) }, + { be_const_key_weak(event_no, 3), be_const_var(8) }, + { be_const_key_weak(raw_tlv, -1), be_const_var(10) }, + { be_const_key_weak(is_urgent, 12), be_const_var(3) }, + { be_const_key_weak(data1, -1), be_const_var(6) }, + { be_const_key_weak(priority, 4), be_const_var(4) }, + { be_const_key_weak(event_id, -1), be_const_var(2) }, + { be_const_key_weak(to_raw_bytes, 1), be_const_closure(class_Matter_EventQueued_to_raw_bytes_closure) }, { be_const_key_weak(cluster, -1), be_const_var(1) }, - { be_const_key_weak(event_no, 0), be_const_var(5) }, + { be_const_key_weak(data0, -1), be_const_var(5) }, })), be_str_weak(Matter_EventQueued) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index cb2d47030..4b4dfe583 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -7,492 +7,12 @@ extern const bclass be_class_Matter_IM; /******************************************************************** -** Solidified function: send_subscribe_response_pull +** Solidified function: process_read_request_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_response_pull, /* name */ +be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_SubscribeResponse_Pull), - }), - be_str_weak(send_subscribe_response_pull), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0xB81A0400, // 0002 GETNGBL R6 K2 - 0x8C180D03, // 0003 GETMET R6 R6 K3 - 0x5C200200, // 0004 MOVE R8 R1 - 0x5C240400, // 0005 MOVE R9 R2 - 0x5C280600, // 0006 MOVE R10 R3 - 0x7C180800, // 0007 CALL R6 4 - 0x7C100400, // 0008 CALL R4 2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_sendqueue_by_exchangeid -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_sendqueue_by_exchangeid), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x58080000, // 0005 LDCONST R2 K0 - 0x600C000C, // 0006 GETGBL R3 G12 - 0x88100101, // 0007 GETMBR R4 R0 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x140C0403, // 0009 LT R3 R2 R3 - 0x780E0008, // 000A JMPF R3 #0014 - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x8C100702, // 000D GETMET R4 R3 K2 - 0x7C100200, // 000E CALL R4 1 - 0x1C100801, // 000F EQ R4 R4 R1 - 0x78120000, // 0010 JMPF R4 #0012 - 0x80040600, // 0011 RET 1 R3 - 0x00080503, // 0012 ADD R2 R2 K3 - 0x7001FFF1, // 0013 JMP #0006 - 0x4C0C0000, // 0014 LDNIL R3 - 0x80040600, // 0015 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_subscribe_update -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReadRequestMessage), - /* K3 */ be_nested_str_weak(fabric_filtered), - /* K4 */ be_nested_str_weak(attributes_requests), - /* K5 */ be_nested_str_weak(updates), - /* K6 */ be_nested_str_weak(AttributePathIB), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K14 */ be_nested_str_weak(local_session_id), - /* K15 */ be_nested_str_weak(subscription_id), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(is_keep_alive), - /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K19 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), - /* K20 */ be_nested_str_weak(_message_handler), - /* K21 */ be_nested_str_weak(send_queue), - /* K22 */ be_nested_str_weak(send_enqueued), - }), - be_str_weak(send_subscribe_update), - &be_const_str_solidified, - ( &(const binstruction[61]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x50100000, // 0004 LDBOOL R4 0 0 - 0x900E0604, // 0005 SETMBR R3 K3 R4 - 0x60100012, // 0006 GETGBL R4 G18 - 0x7C100000, // 0007 CALL R4 0 - 0x900E0804, // 0008 SETMBR R3 K4 R4 - 0x60100010, // 0009 GETGBL R4 G16 - 0x88140305, // 000A GETMBR R5 R1 K5 - 0x7C100200, // 000B CALL R4 1 - 0xA802000F, // 000C EXBLK 0 #001D - 0x5C140800, // 000D MOVE R5 R4 - 0x7C140000, // 000E CALL R5 0 - 0xB81A0200, // 000F GETNGBL R6 K1 - 0x8C180D06, // 0010 GETMET R6 R6 K6 - 0x7C180200, // 0011 CALL R6 1 - 0x881C0B07, // 0012 GETMBR R7 R5 K7 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0x881C0B08, // 0014 GETMBR R7 R5 K8 - 0x901A1007, // 0015 SETMBR R6 K8 R7 - 0x881C0B09, // 0016 GETMBR R7 R5 K9 - 0x901A1207, // 0017 SETMBR R6 K9 R7 - 0x881C0704, // 0018 GETMBR R7 R3 K4 - 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 - 0x5C240C00, // 001A MOVE R9 R6 - 0x7C1C0400, // 001B CALL R7 2 - 0x7001FFEF, // 001C JMP #000D - 0x5810000B, // 001D LDCONST R4 K11 - 0xAC100200, // 001E CATCH R4 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0xB8121800, // 0020 GETNGBL R4 K12 - 0x60140018, // 0021 GETGBL R5 G24 - 0x5818000D, // 0022 LDCONST R6 K13 - 0x881C050E, // 0023 GETMBR R7 R2 K14 - 0x8820030F, // 0024 GETMBR R8 R1 K15 - 0x7C140600, // 0025 CALL R5 3 - 0x58180010, // 0026 LDCONST R6 K16 - 0x7C100400, // 0027 CALL R4 2 - 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90062204, // 0029 SETMBR R1 K17 R4 - 0x8C100112, // 002A GETMET R4 R0 K18 - 0x5C180600, // 002B MOVE R6 R3 - 0x4C1C0000, // 002C LDNIL R7 - 0x7C100600, // 002D CALL R4 3 - 0xB8160200, // 002E GETNGBL R5 K1 - 0x8C140B13, // 002F GETMET R5 R5 K19 - 0x881C0514, // 0030 GETMBR R7 R2 K20 - 0x5C200400, // 0031 MOVE R8 R2 - 0x5C240800, // 0032 MOVE R9 R4 - 0x5C280200, // 0033 MOVE R10 R1 - 0x7C140A00, // 0034 CALL R5 5 - 0x88180115, // 0035 GETMBR R6 R0 K21 - 0x8C180D0A, // 0036 GETMET R6 R6 K10 - 0x5C200A00, // 0037 MOVE R8 R5 - 0x7C180400, // 0038 CALL R6 2 - 0x8C180116, // 0039 GETMET R6 R0 K22 - 0x88200514, // 003A GETMBR R8 R2 K20 - 0x7C180400, // 003B CALL R6 2 - 0x80000000, // 003C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_single_attribute_to_bytes -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ - be_nested_proto( - 21, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(get_attribute_name), - /* K6 */ be_nested_str_weak(cluster), - /* K7 */ be_nested_str_weak(attribute), - /* K8 */ be_nested_str_weak(_X20_X28), - /* K9 */ be_nested_str_weak(_X29), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(status), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(tlv_solo), - /* K14 */ be_nested_str_weak(to_str_val), - /* K15 */ be_nested_str_weak(is_list), - /* K16 */ be_nested_str_weak(is_array), - /* K17 */ be_nested_str_weak(encode_len), - /* K18 */ be_nested_str_weak(IM_ReportData_Pull), - /* K19 */ be_nested_str_weak(MAX_MESSAGE), - /* K20 */ be_nested_str_weak(Matter_TLV_array), - /* K21 */ be_nested_str_weak(attributedata2raw), - /* K22 */ be_nested_str_weak(push), - /* K23 */ be_nested_str_weak(val), - /* K24 */ be_nested_str_weak(stop_iteration), - /* K25 */ be_nested_str_weak(log), - /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K27 */ be_nested_str_weak(local_session_id), - /* K28 */ be_nested_str_weak(attributestatus2raw), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), - be_str_weak(read_single_attribute_to_bytes), - &be_const_str_solidified, - ( &(const binstruction[165]) { /* code */ - 0xB8160000, // 0000 GETNGBL R5 K0 - 0x88140B01, // 0001 GETMBR R5 R5 K1 - 0x4C180000, // 0002 LDNIL R6 - 0xB81E0400, // 0003 GETNGBL R7 K2 - 0x8C1C0F03, // 0004 GETMET R7 R7 K3 - 0x58240004, // 0005 LDCONST R9 K4 - 0x7C1C0400, // 0006 CALL R7 2 - 0x781E000B, // 0007 JMPF R7 #0014 - 0xB81E0000, // 0008 GETNGBL R7 K0 - 0x8C1C0F05, // 0009 GETMET R7 R7 K5 - 0x88240506, // 000A GETMBR R9 R2 K6 - 0x88280507, // 000B GETMBR R10 R2 K7 - 0x7C1C0600, // 000C CALL R7 3 - 0x5C180E00, // 000D MOVE R6 R7 - 0x781A0002, // 000E JMPF R6 #0012 - 0x001E1006, // 000F ADD R7 K8 R6 - 0x001C0F09, // 0010 ADD R7 R7 K9 - 0x70020000, // 0011 JMP #0013 - 0x581C000A, // 0012 LDCONST R7 K10 - 0x5C180E00, // 0013 MOVE R6 R7 - 0x881C050B, // 0014 GETMBR R7 R2 K11 - 0x4C200000, // 0015 LDNIL R8 - 0x201C0E08, // 0016 NE R7 R7 R8 - 0x4C200000, // 0017 LDNIL R8 - 0x4C240000, // 0018 LDNIL R9 - 0x4C280000, // 0019 LDNIL R10 - 0x2028020A, // 001A NE R10 R1 R10 - 0x782A0005, // 001B JMPF R10 #0022 - 0x8C28030C, // 001C GETMET R10 R1 K12 - 0x5C300600, // 001D MOVE R12 R3 - 0x5C340400, // 001E MOVE R13 R2 - 0x8838010D, // 001F GETMBR R14 R0 K13 - 0x7C280800, // 0020 CALL R10 4 - 0x5C201400, // 0021 MOVE R8 R10 - 0x4C280000, // 0022 LDNIL R10 - 0x2028100A, // 0023 NE R10 R8 R10 - 0x782A0057, // 0024 JMPF R10 #007D - 0x5828000A, // 0025 LDCONST R10 K10 - 0xB82E0400, // 0026 GETNGBL R11 K2 - 0x8C2C1703, // 0027 GETMET R11 R11 K3 - 0x58340004, // 0028 LDCONST R13 K4 - 0x7C2C0400, // 0029 CALL R11 2 - 0x782E0003, // 002A JMPF R11 #002F - 0x78120002, // 002B JMPF R4 #002F - 0x8C2C110E, // 002C GETMET R11 R8 K14 - 0x7C2C0200, // 002D CALL R11 1 - 0x5C281600, // 002E MOVE R10 R11 - 0x882C110F, // 002F GETMBR R11 R8 K15 - 0x742E0001, // 0030 JMPT R11 #0033 - 0x882C1110, // 0031 GETMBR R11 R8 K16 - 0x782E002F, // 0032 JMPF R11 #0063 - 0x8C2C1111, // 0033 GETMET R11 R8 K17 - 0x7C2C0200, // 0034 CALL R11 1 - 0xB8320000, // 0035 GETNGBL R12 K0 - 0x88301912, // 0036 GETMBR R12 R12 K18 - 0x88301913, // 0037 GETMBR R12 R12 K19 - 0x242C160C, // 0038 GT R11 R11 R12 - 0x782E0028, // 0039 JMPF R11 #0063 - 0x602C0012, // 003A GETGBL R11 G18 - 0x7C2C0000, // 003B CALL R11 0 - 0x5C241600, // 003C MOVE R9 R11 - 0x602C0015, // 003D GETGBL R11 G21 - 0x5432002F, // 003E LDINT R12 48 - 0x7C2C0200, // 003F CALL R11 1 - 0x8C300B14, // 0040 GETMET R12 R5 K20 - 0x7C300200, // 0041 CALL R12 1 - 0x8C340115, // 0042 GETMET R13 R0 K21 - 0x5C3C1600, // 0043 MOVE R15 R11 - 0x5C400400, // 0044 MOVE R16 R2 - 0x5C441800, // 0045 MOVE R17 R12 - 0x50480000, // 0046 LDBOOL R18 0 0 - 0x7C340A00, // 0047 CALL R13 5 - 0x8C341316, // 0048 GETMET R13 R9 K22 - 0x5C3C1600, // 0049 MOVE R15 R11 - 0x7C340400, // 004A CALL R13 2 - 0x60340010, // 004B GETGBL R13 G16 - 0x88381117, // 004C GETMBR R14 R8 K23 - 0x7C340200, // 004D CALL R13 1 - 0xA802000F, // 004E EXBLK 0 #005F - 0x5C381A00, // 004F MOVE R14 R13 - 0x7C380000, // 0050 CALL R14 0 - 0x603C0015, // 0051 GETGBL R15 G21 - 0x5442002F, // 0052 LDINT R16 48 - 0x7C3C0200, // 0053 CALL R15 1 - 0x5C2C1E00, // 0054 MOVE R11 R15 - 0x8C3C0115, // 0055 GETMET R15 R0 K21 - 0x5C441600, // 0056 MOVE R17 R11 - 0x5C480400, // 0057 MOVE R18 R2 - 0x5C4C1C00, // 0058 MOVE R19 R14 - 0x50500200, // 0059 LDBOOL R20 1 0 - 0x7C3C0A00, // 005A CALL R15 5 - 0x8C3C1316, // 005B GETMET R15 R9 K22 - 0x5C441600, // 005C MOVE R17 R11 - 0x7C3C0400, // 005D CALL R15 2 - 0x7001FFEF, // 005E JMP #004F - 0x58340018, // 005F LDCONST R13 K24 - 0xAC340200, // 0060 CATCH R13 1 0 - 0xB0080000, // 0061 RAISE 2 R0 R0 - 0x70020008, // 0062 JMP #006C - 0x602C0015, // 0063 GETGBL R11 G21 - 0x5432002F, // 0064 LDINT R12 48 - 0x7C2C0200, // 0065 CALL R11 1 - 0x5C241600, // 0066 MOVE R9 R11 - 0x8C2C0115, // 0067 GETMET R11 R0 K21 - 0x5C341200, // 0068 MOVE R13 R9 - 0x5C380400, // 0069 MOVE R14 R2 - 0x5C3C1000, // 006A MOVE R15 R8 - 0x7C2C0800, // 006B CALL R11 4 - 0xB82E0400, // 006C GETNGBL R11 K2 - 0x8C2C1703, // 006D GETMET R11 R11 K3 - 0x58340004, // 006E LDCONST R13 K4 - 0x7C2C0400, // 006F CALL R11 2 - 0x782E000A, // 0070 JMPF R11 #007C - 0x78120009, // 0071 JMPF R4 #007C - 0xB82E3200, // 0072 GETNGBL R11 K25 - 0x60300018, // 0073 GETGBL R12 G24 - 0x5834001A, // 0074 LDCONST R13 K26 - 0x8838071B, // 0075 GETMBR R14 R3 K27 - 0x5C3C0400, // 0076 MOVE R15 R2 - 0x5C400C00, // 0077 MOVE R16 R6 - 0x5C441400, // 0078 MOVE R17 R10 - 0x7C300A00, // 0079 CALL R12 5 - 0x58340004, // 007A LDCONST R13 K4 - 0x7C2C0400, // 007B CALL R11 2 - 0x70020026, // 007C JMP #00A4 - 0x8828050B, // 007D GETMBR R10 R2 K11 - 0x4C2C0000, // 007E LDNIL R11 - 0x2028140B, // 007F NE R10 R10 R11 - 0x782A0022, // 0080 JMPF R10 #00A4 - 0x781E0021, // 0081 JMPF R7 #00A4 - 0x60280015, // 0082 GETGBL R10 G21 - 0x542E002F, // 0083 LDINT R11 48 - 0x7C280200, // 0084 CALL R10 1 - 0x5C241400, // 0085 MOVE R9 R10 - 0x8C28011C, // 0086 GETMET R10 R0 K28 - 0x5C301200, // 0087 MOVE R12 R9 - 0x5C340400, // 0088 MOVE R13 R2 - 0x8838050B, // 0089 GETMBR R14 R2 K11 - 0x7C280800, // 008A CALL R10 4 - 0xB82A0400, // 008B GETNGBL R10 K2 - 0x8C281503, // 008C GETMET R10 R10 K3 - 0x58300004, // 008D LDCONST R12 K4 - 0x7C280400, // 008E CALL R10 2 - 0x782A0013, // 008F JMPF R10 #00A4 - 0xB82A3200, // 0090 GETNGBL R10 K25 - 0x602C0018, // 0091 GETGBL R11 G24 - 0x5830001D, // 0092 LDCONST R12 K29 - 0x8834071B, // 0093 GETMBR R13 R3 K27 - 0x60380008, // 0094 GETGBL R14 G8 - 0x5C3C0400, // 0095 MOVE R15 R2 - 0x7C380200, // 0096 CALL R14 1 - 0x5C3C0C00, // 0097 MOVE R15 R6 - 0x8840050B, // 0098 GETMBR R16 R2 K11 - 0x8844050B, // 0099 GETMBR R17 R2 K11 - 0xB84A0000, // 009A GETNGBL R18 K0 - 0x8848251E, // 009B GETMBR R18 R18 K30 - 0x1C442212, // 009C EQ R17 R17 R18 - 0x78460001, // 009D JMPF R17 #00A0 - 0x5844001E, // 009E LDCONST R17 K30 - 0x70020000, // 009F JMP #00A1 - 0x5844000A, // 00A0 LDCONST R17 K10 - 0x7C2C0C00, // 00A1 CALL R11 6 - 0x58300004, // 00A2 LDCONST R12 K4 - 0x7C280400, // 00A3 CALL R10 2 - 0x80041200, // 00A4 RET 1 R9 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(subs_shop), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(IM_Subscription_Shop), - /* K5 */ be_nested_str_weak(read_request_solo), - /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), - /* K9 */ be_nested_str_weak(tlv_solo), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(Matter_TLV_item), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0xB80A0600, // 0004 GETNGBL R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0xB80A0600, // 0009 GETNGBL R2 K3 - 0x8C080506, // 000A GETMET R2 R2 K6 - 0x7C080200, // 000B CALL R2 1 - 0x90020A02, // 000C SETMBR R0 K5 R2 - 0xB80A0600, // 000D GETNGBL R2 K3 - 0x8C080508, // 000E GETMET R2 R2 K8 - 0x7C080200, // 000F CALL R2 1 - 0x90020E02, // 0010 SETMBR R0 K7 R2 - 0xB80A0600, // 0011 GETNGBL R2 K3 - 0x8808050A, // 0012 GETMBR R2 R2 K10 - 0x8C08050B, // 0013 GETMET R2 R2 K11 - 0x7C080200, // 0014 CALL R2 1 - 0x90021202, // 0015 SETMBR R0 K9 R2 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_status -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_status, /* name */ - be_nested_proto( - 9, /* nstack */ + 13, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -500,24 +20,52 @@ be_local_closure(class_Matter_IM_send_status, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_Status), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(profiler), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(read_request_start_pull), + /* K4 */ be_nested_str_weak(ReadRequestMessage), + /* K5 */ be_nested_str_weak(from_TLV), + /* K6 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K7 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K8 */ be_nested_str_weak(send_queue), + /* K9 */ be_nested_str_weak(push), + /* K10 */ be_nested_str_weak(IM_ReportData_Pull), }), - be_str_weak(send_status), + be_str_weak(process_read_request_pull), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 + ( &(const binstruction[30]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x880C0701, // 0001 GETMBR R3 R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0xB80E0000, // 0005 GETNGBL R3 K0 + 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0705, // 0008 GETMET R3 R3 K5 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C100106, // 000B GETMET R4 R0 K6 + 0x5C180600, // 000C MOVE R6 R3 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C100600, // 000E CALL R4 3 + 0x8C140107, // 000F GETMET R5 R0 K7 + 0x5C1C0600, // 0010 MOVE R7 R3 + 0x5C200200, // 0011 MOVE R8 R1 + 0x7C140600, // 0012 CALL R5 3 + 0x88180108, // 0013 GETMBR R6 R0 K8 + 0x8C180D09, // 0014 GETMET R6 R6 K9 + 0xB8220000, // 0015 GETNGBL R8 K0 + 0x8C20110A, // 0016 GETMET R8 R8 K10 + 0x5C280200, // 0017 MOVE R10 R1 + 0x5C2C0800, // 0018 MOVE R11 R4 + 0x5C300A00, // 0019 MOVE R12 R5 + 0x7C200800, // 001A CALL R8 4 + 0x7C180400, // 001B CALL R6 2 + 0x50180200, // 001C LDBOOL R6 1 0 + 0x80040C00, // 001D RET 1 R6 }) ) ); @@ -562,860 +110,6 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_second, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expire_sendqueue), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expire_sendqueue -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(time_reached), - /* K4 */ be_nested_str_weak(expiration), - /* K5 */ be_nested_str_weak(reached_timeout), - /* K6 */ be_nested_str_weak(remove), - /* K7 */ be_const_int(1), - }), - be_str_weak(expire_sendqueue), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14080202, // 0004 LT R2 R1 R2 - 0x780A000F, // 0005 JMPF R2 #0016 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x94080401, // 0007 GETIDX R2 R2 R1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0703, // 0009 GETMET R3 R3 K3 - 0x88140504, // 000A GETMBR R5 R2 K4 - 0x7C0C0400, // 000B CALL R3 2 - 0x780E0006, // 000C JMPF R3 #0014 - 0x8C0C0505, // 000D GETMET R3 R2 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x8C0C0706, // 0010 GETMET R3 R3 K6 - 0x5C140200, // 0011 MOVE R5 R1 - 0x7C0C0400, // 0012 CALL R3 2 - 0x70020000, // 0013 JMP #0015 - 0x00040307, // 0014 ADD R1 R1 K7 - 0x7001FFEA, // 0015 JMP #0001 - 0x4C080000, // 0016 LDNIL R2 - 0x80040400, // 0017 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_write_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_write_response, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_WriteResponse), - }), - be_str_weak(send_write_response), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_timed_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_timed_request, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TimedRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(timeout), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(send_status), - /* K10 */ be_nested_str_weak(SUCCESS), - }), - be_str_weak(process_timed_request), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x881C0305, // 0009 GETMBR R7 R1 K5 - 0x881C0F06, // 000A GETMBR R7 R7 K6 - 0x88200707, // 000B GETMBR R8 R3 K7 - 0x7C140600, // 000C CALL R5 3 - 0x58180008, // 000D LDCONST R6 K8 - 0x7C100400, // 000E CALL R4 2 - 0x8C100109, // 000F GETMET R4 R0 K9 - 0x5C180200, // 0010 MOVE R6 R1 - 0xB81E0000, // 0011 GETNGBL R7 K0 - 0x881C0F0A, // 0012 GETMBR R7 R7 K10 - 0x7C100600, // 0013 CALL R4 3 - 0x50100200, // 0014 LDBOOL R4 1 0 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_subscribe_request, /* name */ - be_nested_proto( - 20, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(SubscribeRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(keep_subscriptions), - /* K4 */ be_nested_str_weak(subs_shop), - /* K5 */ be_nested_str_weak(remove_by_session), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(new_subscription), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(loglevel), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(Path), - /* K12 */ be_nested_str_weak(msg), - /* K13 */ be_nested_str_weak(attributes_requests), - /* K14 */ be_nested_str_weak(endpoint), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(attribute), - /* K17 */ be_nested_str_weak(push), - /* K18 */ be_nested_str_weak(stop_iteration), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s_X20attr_req_X3D_X25s_X20event_req_X3D_X25s), - /* K21 */ be_nested_str_weak(local_session_id), - /* K22 */ be_nested_str_weak(concat), - /* K23 */ be_nested_str_weak(_X20), - /* K24 */ be_nested_str_weak(min_interval), - /* K25 */ be_nested_str_weak(max_interval), - /* K26 */ be_const_int(1), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str_weak(subscription_id), - /* K29 */ be_nested_str_weak(fabric_filtered), - /* K30 */ be_nested_str_weak(_X2D), - /* K31 */ be_nested_str_weak(event_requests), - /* K32 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K33 */ be_nested_str_weak(send_subscribe_response_pull), - }), - be_str_weak(subscribe_request), - &be_const_str_solidified, - ( &(const binstruction[98]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x88100703, // 0006 GETMBR R4 R3 K3 - 0x74120003, // 0007 JMPT R4 #000C - 0x88100104, // 0008 GETMBR R4 R0 K4 - 0x8C100905, // 0009 GETMET R4 R4 K5 - 0x88180306, // 000A GETMBR R6 R1 K6 - 0x7C100400, // 000B CALL R4 2 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x8C100907, // 000D GETMET R4 R4 K7 - 0x88180306, // 000E GETMBR R6 R1 K6 - 0x5C1C0600, // 000F MOVE R7 R3 - 0x7C100600, // 0010 CALL R4 3 - 0xB8161000, // 0011 GETNGBL R5 K8 - 0x8C140B09, // 0012 GETMET R5 R5 K9 - 0x581C000A, // 0013 LDCONST R7 K10 - 0x7C140400, // 0014 CALL R5 2 - 0x78160040, // 0015 JMPF R5 #0057 - 0x60140012, // 0016 GETGBL R5 G18 - 0x7C140000, // 0017 CALL R5 0 - 0xB81A0000, // 0018 GETNGBL R6 K0 - 0x8C180D0B, // 0019 GETMET R6 R6 K11 - 0x7C180200, // 001A CALL R6 1 - 0x901A1801, // 001B SETMBR R6 K12 R1 - 0x601C0010, // 001C GETGBL R7 G16 - 0x8820070D, // 001D GETMBR R8 R3 K13 - 0x7C1C0200, // 001E CALL R7 1 - 0xA802000D, // 001F EXBLK 0 #002E - 0x5C200E00, // 0020 MOVE R8 R7 - 0x7C200000, // 0021 CALL R8 0 - 0x8824110E, // 0022 GETMBR R9 R8 K14 - 0x901A1C09, // 0023 SETMBR R6 K14 R9 - 0x8824110F, // 0024 GETMBR R9 R8 K15 - 0x901A1E09, // 0025 SETMBR R6 K15 R9 - 0x88241110, // 0026 GETMBR R9 R8 K16 - 0x901A2009, // 0027 SETMBR R6 K16 R9 - 0x8C240B11, // 0028 GETMET R9 R5 K17 - 0x602C0008, // 0029 GETGBL R11 G8 - 0x5C300C00, // 002A MOVE R12 R6 - 0x7C2C0200, // 002B CALL R11 1 - 0x7C240400, // 002C CALL R9 2 - 0x7001FFF1, // 002D JMP #0020 - 0x581C0012, // 002E LDCONST R7 K18 - 0xAC1C0200, // 002F CATCH R7 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0xB81E2600, // 0031 GETNGBL R7 K19 - 0x60200018, // 0032 GETGBL R8 G24 - 0x58240014, // 0033 LDCONST R9 K20 - 0x88280306, // 0034 GETMBR R10 R1 K6 - 0x88281515, // 0035 GETMBR R10 R10 K21 - 0x8C2C0B16, // 0036 GETMET R11 R5 K22 - 0x58340017, // 0037 LDCONST R13 K23 - 0x7C2C0400, // 0038 CALL R11 2 - 0x88300918, // 0039 GETMBR R12 R4 K24 - 0x88340919, // 003A GETMBR R13 R4 K25 - 0x88380703, // 003B GETMBR R14 R3 K3 - 0x783A0001, // 003C JMPF R14 #003F - 0x5838001A, // 003D LDCONST R14 K26 - 0x70020000, // 003E JMP #0040 - 0x5838001B, // 003F LDCONST R14 K27 - 0x883C091C, // 0040 GETMBR R15 R4 K28 - 0x8840071D, // 0041 GETMBR R16 R3 K29 - 0x8844070D, // 0042 GETMBR R17 R3 K13 - 0x4C480000, // 0043 LDNIL R18 - 0x20442212, // 0044 NE R17 R17 R18 - 0x78460003, // 0045 JMPF R17 #004A - 0x6044000C, // 0046 GETGBL R17 G12 - 0x8848070D, // 0047 GETMBR R18 R3 K13 - 0x7C440200, // 0048 CALL R17 1 - 0x70020000, // 0049 JMP #004B - 0x5844001E, // 004A LDCONST R17 K30 - 0x8848071F, // 004B GETMBR R18 R3 K31 - 0x4C4C0000, // 004C LDNIL R19 - 0x20482413, // 004D NE R18 R18 R19 - 0x784A0003, // 004E JMPF R18 #0053 - 0x6048000C, // 004F GETGBL R18 G12 - 0x884C071F, // 0050 GETMBR R19 R3 K31 - 0x7C480200, // 0051 CALL R18 1 - 0x70020000, // 0052 JMP #0054 - 0x5848001E, // 0053 LDCONST R18 K30 - 0x7C201400, // 0054 CALL R8 10 - 0x5824000A, // 0055 LDCONST R9 K10 - 0x7C1C0400, // 0056 CALL R7 2 - 0x8C140120, // 0057 GETMET R5 R0 K32 - 0x5C1C0600, // 0058 MOVE R7 R3 - 0x5C200200, // 0059 MOVE R8 R1 - 0x7C140600, // 005A CALL R5 3 - 0x8C180121, // 005B GETMET R6 R0 K33 - 0x5C200200, // 005C MOVE R8 R1 - 0x5C240A00, // 005D MOVE R9 R5 - 0x5C280800, // 005E MOVE R10 R4 - 0x7C180800, // 005F CALL R6 4 - 0x50180200, // 0060 LDBOOL R6 1 0 - 0x80040C00, // 0061 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_enqueued -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_enqueued, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(finish), - /* K3 */ be_nested_str_weak(ready), - /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), - /* K7 */ be_nested_str_weak(resp), - /* K8 */ be_nested_str_weak(exchange_id), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_const_int(1), - }), - be_str_weak(send_enqueued), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0019, // 0005 JMPF R3 #0020 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x74120004, // 0009 JMPT R4 #000F - 0x88100703, // 000A GETMBR R4 R3 K3 - 0x78120002, // 000B JMPF R4 #000F - 0x8C100704, // 000C GETMET R4 R3 K4 - 0x5C180200, // 000D MOVE R6 R1 - 0x7C100400, // 000E CALL R4 2 - 0x88100702, // 000F GETMBR R4 R3 K2 - 0x7812000C, // 0010 JMPF R4 #001E - 0xB8120A00, // 0011 GETNGBL R4 K5 - 0x60140008, // 0012 GETGBL R5 G8 - 0x88180707, // 0013 GETMBR R6 R3 K7 - 0x88180D08, // 0014 GETMBR R6 R6 K8 - 0x7C140200, // 0015 CALL R5 1 - 0x00160C05, // 0016 ADD R5 K6 R5 - 0x541A0003, // 0017 LDINT R6 4 - 0x7C100400, // 0018 CALL R4 2 - 0x88100101, // 0019 GETMBR R4 R0 K1 - 0x8C100909, // 001A GETMET R4 R4 K9 - 0x5C180400, // 001B MOVE R6 R2 - 0x7C100400, // 001C CALL R4 2 - 0x70020000, // 001D JMP #001F - 0x0008050A, // 001E ADD R2 R2 K10 - 0x7001FFE0, // 001F JMP #0001 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: path2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_path2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(attribute), - }), - be_str_weak(path2raw), - &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x541E0036, // 0001 LDINT R7 55 - 0x58200001, // 0002 LDCONST R8 K1 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200001, // 0006 LDCONST R8 K1 - 0x7C140600, // 0007 CALL R5 3 - 0x88140502, // 0008 GETMBR R5 R2 K2 - 0x541A00FE, // 0009 LDINT R6 255 - 0x18140A06, // 000A LE R5 R5 R6 - 0x78160008, // 000B JMPF R5 #0015 - 0x8C140300, // 000C GETMET R5 R1 K0 - 0x541E2401, // 000D LDINT R7 9218 - 0x5421FFFD, // 000E LDINT R8 -2 - 0x7C140600, // 000F CALL R5 3 - 0x8C140300, // 0010 GETMET R5 R1 K0 - 0x881C0502, // 0011 GETMBR R7 R2 K2 - 0x58200001, // 0012 LDCONST R8 K1 - 0x7C140600, // 0013 CALL R5 3 - 0x70020007, // 0014 JMP #001D - 0x8C140300, // 0015 GETMET R5 R1 K0 - 0x541E2501, // 0016 LDINT R7 9474 - 0x5421FFFD, // 0017 LDINT R8 -2 - 0x7C140600, // 0018 CALL R5 3 - 0x8C140300, // 0019 GETMET R5 R1 K0 - 0x881C0502, // 001A GETMBR R7 R2 K2 - 0x58200003, // 001B LDCONST R8 K3 - 0x7C140600, // 001C CALL R5 3 - 0x88140504, // 001D GETMBR R5 R2 K4 - 0x541A00FE, // 001E LDINT R6 255 - 0x18140A06, // 001F LE R5 R5 R6 - 0x78160008, // 0020 JMPF R5 #002A - 0x8C140300, // 0021 GETMET R5 R1 K0 - 0x541E2402, // 0022 LDINT R7 9219 - 0x5421FFFD, // 0023 LDINT R8 -2 - 0x7C140600, // 0024 CALL R5 3 - 0x8C140300, // 0025 GETMET R5 R1 K0 - 0x881C0504, // 0026 GETMBR R7 R2 K4 - 0x58200001, // 0027 LDCONST R8 K1 - 0x7C140600, // 0028 CALL R5 3 - 0x70020014, // 0029 JMP #003F - 0x88140504, // 002A GETMBR R5 R2 K4 - 0x541AFFFE, // 002B LDINT R6 65535 - 0x18140A06, // 002C LE R5 R5 R6 - 0x78160008, // 002D JMPF R5 #0037 - 0x8C140300, // 002E GETMET R5 R1 K0 - 0x541E2502, // 002F LDINT R7 9475 - 0x5421FFFD, // 0030 LDINT R8 -2 - 0x7C140600, // 0031 CALL R5 3 - 0x8C140300, // 0032 GETMET R5 R1 K0 - 0x881C0504, // 0033 GETMBR R7 R2 K4 - 0x58200003, // 0034 LDCONST R8 K3 - 0x7C140600, // 0035 CALL R5 3 - 0x70020007, // 0036 JMP #003F - 0x8C140300, // 0037 GETMET R5 R1 K0 - 0x541E2602, // 0038 LDINT R7 9731 - 0x5421FFFD, // 0039 LDINT R8 -2 - 0x7C140600, // 003A CALL R5 3 - 0x8C140300, // 003B GETMET R5 R1 K0 - 0x881C0504, // 003C GETMBR R7 R2 K4 - 0x54220003, // 003D LDINT R8 4 - 0x7C140600, // 003E CALL R5 3 - 0x88140505, // 003F GETMBR R5 R2 K5 - 0x541A00FE, // 0040 LDINT R6 255 - 0x18140A06, // 0041 LE R5 R5 R6 - 0x78160008, // 0042 JMPF R5 #004C - 0x8C140300, // 0043 GETMET R5 R1 K0 - 0x541E2403, // 0044 LDINT R7 9220 - 0x5421FFFD, // 0045 LDINT R8 -2 - 0x7C140600, // 0046 CALL R5 3 - 0x8C140300, // 0047 GETMET R5 R1 K0 - 0x881C0505, // 0048 GETMBR R7 R2 K5 - 0x58200001, // 0049 LDCONST R8 K1 - 0x7C140600, // 004A CALL R5 3 - 0x70020014, // 004B JMP #0061 - 0x88140505, // 004C GETMBR R5 R2 K5 - 0x541AFFFE, // 004D LDINT R6 65535 - 0x18140A06, // 004E LE R5 R5 R6 - 0x78160008, // 004F JMPF R5 #0059 - 0x8C140300, // 0050 GETMET R5 R1 K0 - 0x541E2503, // 0051 LDINT R7 9476 - 0x5421FFFD, // 0052 LDINT R8 -2 - 0x7C140600, // 0053 CALL R5 3 - 0x8C140300, // 0054 GETMET R5 R1 K0 - 0x881C0505, // 0055 GETMBR R7 R2 K5 - 0x58200003, // 0056 LDCONST R8 K3 - 0x7C140600, // 0057 CALL R5 3 - 0x70020007, // 0058 JMP #0061 - 0x8C140300, // 0059 GETMET R5 R1 K0 - 0x541E2603, // 005A LDINT R7 9732 - 0x5421FFFD, // 005B LDINT R8 -2 - 0x7C140600, // 005C CALL R5 3 - 0x8C140300, // 005D GETMET R5 R1 K0 - 0x881C0505, // 005E GETMBR R7 R2 K5 - 0x54220003, // 005F LDINT R8 4 - 0x7C140600, // 0060 CALL R5 3 - 0x78120003, // 0061 JMPF R4 #0066 - 0x8C140300, // 0062 GETMET R5 R1 K0 - 0x541E3404, // 0063 LDINT R7 13317 - 0x5421FFFD, // 0064 LDINT R8 -2 - 0x7C140600, // 0065 CALL R5 3 - 0x8C140300, // 0066 GETMET R5 R1 K0 - 0x541E0017, // 0067 LDINT R7 24 - 0x58200001, // 0068 LDCONST R8 K1 - 0x7C140600, // 0069 CALL R5 3 - 0x80000000, // 006A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_status_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_status_response, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(findsubval), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K3 */ be_nested_str_weak(exchange_id), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(SUCCESS), - /* K6 */ be_nested_str_weak(status_ok_received), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(status_error_received), - /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - }), - be_str_weak(process_status_response), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x8C0C0500, // 0000 GETMET R3 R2 K0 - 0x58140001, // 0001 LDCONST R5 K1 - 0x541A00FE, // 0002 LDINT R6 255 - 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100102, // 0004 GETMET R4 R0 K2 - 0x88180303, // 0005 GETMBR R6 R1 K3 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x88140B05, // 0008 GETMBR R5 R5 K5 - 0x1C140605, // 0009 EQ R5 R3 R5 - 0x7816000F, // 000A JMPF R5 #001B - 0x78120004, // 000B JMPF R4 #0011 - 0x8C140906, // 000C GETMET R5 R4 K6 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x7C140400, // 000E CALL R5 2 - 0x80040A00, // 000F RET 1 R5 - 0x70020008, // 0010 JMP #001A - 0xB8160E00, // 0011 GETNGBL R5 K7 - 0x60180018, // 0012 GETGBL R6 G24 - 0x581C0008, // 0013 LDCONST R7 K8 - 0x88200309, // 0014 GETMBR R8 R1 K9 - 0x8820110A, // 0015 GETMBR R8 R8 K10 - 0x88240303, // 0016 GETMBR R9 R1 K3 - 0x7C180600, // 0017 CALL R6 3 - 0x541E0003, // 0018 LDINT R7 4 - 0x7C140400, // 0019 CALL R5 2 - 0x7002000D, // 001A JMP #0029 - 0xB8160E00, // 001B GETNGBL R5 K7 - 0x60180018, // 001C GETGBL R6 G24 - 0x581C000B, // 001D LDCONST R7 K11 - 0x5C200600, // 001E MOVE R8 R3 - 0x7C180400, // 001F CALL R6 2 - 0x581C000C, // 0020 LDCONST R7 K12 - 0x7C140400, // 0021 CALL R5 2 - 0x78120005, // 0022 JMPF R4 #0029 - 0x8C14090D, // 0023 GETMET R5 R4 K13 - 0x5C1C0200, // 0024 MOVE R7 R1 - 0x7C140400, // 0025 CALL R5 2 - 0x8C14010E, // 0026 GETMET R5 R0 K14 - 0x881C0303, // 0027 GETMBR R7 R1 K3 - 0x7C140400, // 0028 CALL R5 2 - 0x50140000, // 0029 LDBOOL R5 0 0 - 0x80040A00, // 002A RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_incoming -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_incoming, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(opcode), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str_weak(read_request_solo), - /* K3 */ be_nested_str_weak(from_raw), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_nested_str_weak(process_read_request_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(process_invoke_request_solo), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(parse), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(process_status_response), - /* K14 */ be_nested_str_weak(process_read_request_pull), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(send_ack_now), - /* K17 */ be_nested_str_weak(subscribe_request), - /* K18 */ be_nested_str_weak(process_write_request), - /* K19 */ be_nested_str_weak(process_write_response), - /* K20 */ be_nested_str_weak(process_invoke_request), - /* K21 */ be_nested_str_weak(process_timed_request), - }), - be_str_weak(process_incoming), - &be_const_str_solidified, - ( &(const binstruction[124]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x1C0C0501, // 0001 EQ R3 R2 K1 - 0x780E000D, // 0002 JMPF R3 #0011 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x8C0C0703, // 0004 GETMET R3 R3 K3 - 0x88140304, // 0005 GETMBR R5 R1 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x7C0C0600, // 0007 CALL R3 3 - 0x4C100000, // 0008 LDNIL R4 - 0x20100604, // 0009 NE R4 R3 R4 - 0x78120004, // 000A JMPF R4 #0010 - 0x8C100106, // 000B GETMET R4 R0 K6 - 0x5C180200, // 000C MOVE R6 R1 - 0x5C1C0600, // 000D MOVE R7 R3 - 0x7C100600, // 000E CALL R4 3 - 0x80040800, // 000F RET 1 R4 - 0x7002000F, // 0010 JMP #0021 - 0x540E0007, // 0011 LDINT R3 8 - 0x1C0C0403, // 0012 EQ R3 R2 R3 - 0x780E000C, // 0013 JMPF R3 #0021 - 0x880C0107, // 0014 GETMBR R3 R0 K7 - 0x8C0C0703, // 0015 GETMET R3 R3 K3 - 0x88140304, // 0016 GETMBR R5 R1 K4 - 0x88180305, // 0017 GETMBR R6 R1 K5 - 0x7C0C0600, // 0018 CALL R3 3 - 0x4C100000, // 0019 LDNIL R4 - 0x20100604, // 001A NE R4 R3 R4 - 0x78120004, // 001B JMPF R4 #0021 - 0x8C100108, // 001C GETMET R4 R0 K8 - 0x5C180200, // 001D MOVE R6 R1 - 0x5C1C0600, // 001E MOVE R7 R3 - 0x7C100600, // 001F CALL R4 3 - 0x80040800, // 0020 RET 1 R4 - 0xB80E1200, // 0021 GETNGBL R3 K9 - 0x880C070A, // 0022 GETMBR R3 R3 K10 - 0x8C0C070B, // 0023 GETMET R3 R3 K11 - 0x88140304, // 0024 GETMBR R5 R1 K4 - 0x88180305, // 0025 GETMBR R6 R1 K5 - 0x7C0C0600, // 0026 CALL R3 3 - 0x1C10050C, // 0027 EQ R4 R2 K12 - 0x78120005, // 0028 JMPF R4 #002F - 0x8C10010D, // 0029 GETMET R4 R0 K13 - 0x5C180200, // 002A MOVE R6 R1 - 0x5C1C0600, // 002B MOVE R7 R3 - 0x7C100600, // 002C CALL R4 3 - 0x80040800, // 002D RET 1 R4 - 0x7002004A, // 002E JMP #007A - 0x1C100501, // 002F EQ R4 R2 K1 - 0x78120005, // 0030 JMPF R4 #0037 - 0x8C10010E, // 0031 GETMET R4 R0 K14 - 0x5C180200, // 0032 MOVE R6 R1 - 0x5C1C0600, // 0033 MOVE R7 R3 - 0x7C100600, // 0034 CALL R4 3 - 0x80040800, // 0035 RET 1 R4 - 0x70020042, // 0036 JMP #007A - 0x1C10050F, // 0037 EQ R4 R2 K15 - 0x78120008, // 0038 JMPF R4 #0042 - 0x8C100110, // 0039 GETMET R4 R0 K16 - 0x5C180200, // 003A MOVE R6 R1 - 0x7C100400, // 003B CALL R4 2 - 0x8C100111, // 003C GETMET R4 R0 K17 - 0x5C180200, // 003D MOVE R6 R1 - 0x5C1C0600, // 003E MOVE R7 R3 - 0x7C100600, // 003F CALL R4 3 - 0x80040800, // 0040 RET 1 R4 - 0x70020037, // 0041 JMP #007A - 0x54120003, // 0042 LDINT R4 4 - 0x1C100404, // 0043 EQ R4 R2 R4 - 0x78120002, // 0044 JMPF R4 #0048 - 0x50100000, // 0045 LDBOOL R4 0 0 - 0x80040800, // 0046 RET 1 R4 - 0x70020031, // 0047 JMP #007A - 0x54120004, // 0048 LDINT R4 5 - 0x1C100404, // 0049 EQ R4 R2 R4 - 0x78120002, // 004A JMPF R4 #004E - 0x50100000, // 004B LDBOOL R4 0 0 - 0x80040800, // 004C RET 1 R4 - 0x7002002B, // 004D JMP #007A - 0x54120005, // 004E LDINT R4 6 - 0x1C100404, // 004F EQ R4 R2 R4 - 0x78120008, // 0050 JMPF R4 #005A - 0x8C100110, // 0051 GETMET R4 R0 K16 - 0x5C180200, // 0052 MOVE R6 R1 - 0x7C100400, // 0053 CALL R4 2 - 0x8C100112, // 0054 GETMET R4 R0 K18 - 0x5C180200, // 0055 MOVE R6 R1 - 0x5C1C0600, // 0056 MOVE R7 R3 - 0x7C100600, // 0057 CALL R4 3 - 0x80040800, // 0058 RET 1 R4 - 0x7002001F, // 0059 JMP #007A - 0x54120006, // 005A LDINT R4 7 - 0x1C100404, // 005B EQ R4 R2 R4 - 0x78120005, // 005C JMPF R4 #0063 - 0x8C100113, // 005D GETMET R4 R0 K19 - 0x5C180200, // 005E MOVE R6 R1 - 0x5C1C0600, // 005F MOVE R7 R3 - 0x7C100600, // 0060 CALL R4 3 - 0x80040800, // 0061 RET 1 R4 - 0x70020016, // 0062 JMP #007A - 0x54120007, // 0063 LDINT R4 8 - 0x1C100404, // 0064 EQ R4 R2 R4 - 0x78120005, // 0065 JMPF R4 #006C - 0x8C100114, // 0066 GETMET R4 R0 K20 - 0x5C180200, // 0067 MOVE R6 R1 - 0x5C1C0600, // 0068 MOVE R7 R3 - 0x7C100600, // 0069 CALL R4 3 - 0x80040800, // 006A RET 1 R4 - 0x7002000D, // 006B JMP #007A - 0x54120008, // 006C LDINT R4 9 - 0x1C100404, // 006D EQ R4 R2 R4 - 0x78120002, // 006E JMPF R4 #0072 - 0x50100000, // 006F LDBOOL R4 0 0 - 0x80040800, // 0070 RET 1 R4 - 0x70020007, // 0071 JMP #007A - 0x54120009, // 0072 LDINT R4 10 - 0x1C100404, // 0073 EQ R4 R2 R4 - 0x78120004, // 0074 JMPF R4 #007A - 0x8C100115, // 0075 GETMET R4 R0 K21 - 0x5C180200, // 0076 MOVE R6 R1 - 0x5C1C0600, // 0077 MOVE R7 R3 - 0x7C100600, // 0078 CALL R4 3 - 0x80040800, // 0079 RET 1 R4 - 0x50100000, // 007A LDBOOL R4 0 0 - 0x80040800, // 007B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_sendqueue_by_exchangeid -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - }), - be_str_weak(remove_sendqueue_by_exchangeid), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80000400, // 0003 RET 0 - 0x58080000, // 0004 LDCONST R2 K0 - 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0x140C0403, // 0008 LT R3 R2 R3 - 0x780E000C, // 0009 JMPF R3 #0017 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0702, // 000C GETMET R3 R3 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x1C0C0601, // 000E EQ R3 R3 R1 - 0x780E0004, // 000F JMPF R3 #0015 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x8C0C0703, // 0011 GETMET R3 R3 K3 - 0x5C140400, // 0012 MOVE R5 R2 - 0x7C0C0400, // 0013 CALL R3 2 - 0x70020000, // 0014 JMP #0016 - 0x00080504, // 0015 ADD R2 R2 K4 - 0x7001FFED, // 0016 JMP #0005 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_invoke_request ********************************************************************/ @@ -1430,7 +124,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[43]) { /* constants */ + ( &(const bvalue[44]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(profiler), /* K2 */ be_nested_str_weak(log), @@ -1473,11 +167,12 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ /* K39 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), /* K40 */ be_nested_str_weak(stop_iteration), /* K41 */ be_const_int(0), - /* K42 */ be_nested_str_weak(send_invoke_response), + /* K42 */ be_nested_str_weak(send_queue), + /* K43 */ be_nested_str_weak(IM_InvokeResponse), }), be_str_weak(process_invoke_request), &be_const_str_solidified, - ( &(const binstruction[228]) { /* code */ + ( &(const binstruction[232]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 0x880C0701, // 0001 GETMBR R3 R3 K1 0x8C0C0702, // 0002 GETMET R3 R3 K2 @@ -1496,7 +191,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x88140908, // 000F GETMBR R5 R4 K8 0x4C180000, // 0010 LDNIL R6 0x20140A06, // 0011 NE R5 R5 R6 - 0x781600CF, // 0012 JMPF R5 #00E3 + 0x781600D3, // 0012 JMPF R5 #00E7 0xB8160000, // 0013 GETNGBL R5 K0 0x8C140B09, // 0014 GETMET R5 R5 K9 0x7C140200, // 0015 CALL R5 1 @@ -1695,263 +390,21 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x881C0B0B, // 00D6 GETMBR R7 R5 K11 0x7C180200, // 00D7 CALL R6 1 0x24180D29, // 00D8 GT R6 R6 K41 - 0x781A0004, // 00D9 JMPF R6 #00DF - 0x8C18012A, // 00DA GETMET R6 R0 K42 - 0x5C200200, // 00DB MOVE R8 R1 - 0x5C240A00, // 00DC MOVE R9 R5 - 0x7C180600, // 00DD CALL R6 3 - 0x70020001, // 00DE JMP #00E1 - 0x50180000, // 00DF LDBOOL R6 0 0 - 0x80040C00, // 00E0 RET 1 R6 - 0x50180200, // 00E1 LDBOOL R6 1 0 - 0x80040C00, // 00E2 RET 1 R6 - 0x80000000, // 00E3 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_write_response, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), - }), - be_str_weak(process_write_response), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_ack_now -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_ack_now, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(_message_handler), - /* K2 */ be_nested_str_weak(send_encrypted_ack), - }), - be_str_weak(send_ack_now), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80000400, // 0003 RET 0 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x88080501, // 0005 GETMBR R2 R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 - 0x5C100200, // 0007 MOVE R4 R1 - 0x50140000, // 0008 LDBOOL R5 0 0 - 0x7C080600, // 0009 CALL R2 3 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_read_or_subscribe_request_pull -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(attributes_requests), - /* K1 */ be_nested_str_weak(get_node_id), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(device), - /* K6 */ be_nested_str_weak(start), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(fabric_filtered), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(loglevel), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(Path), - /* K16 */ be_nested_str_weak(get_attribute_name), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K19 */ be_nested_str_weak(session), - /* K20 */ be_nested_str_weak(local_session_id), - /* K21 */ be_nested_str_weak(_X20_X28), - /* K22 */ be_nested_str_weak(_X29), - /* K23 */ be_nested_str_weak(), - /* K24 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(process_read_or_subscribe_request_pull), - &be_const_str_solidified, - ( &(const binstruction[121]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x200C0604, // 0002 NE R3 R3 R4 - 0x780E0072, // 0003 JMPF R3 #0077 - 0x4C0C0000, // 0004 LDNIL R3 - 0x4C100000, // 0005 LDNIL R4 - 0x20100404, // 0006 NE R4 R2 R4 - 0x78120002, // 0007 JMPF R4 #000B - 0x8C100501, // 0008 GETMET R4 R2 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x70020000, // 000A JMP #000C - 0x4C100000, // 000B LDNIL R4 - 0x6014000C, // 000C GETGBL R5 G12 - 0x88180300, // 000D GETMBR R6 R1 K0 - 0x7C140200, // 000E CALL R5 1 - 0x24140B02, // 000F GT R5 R5 K2 - 0x78160002, // 0010 JMPF R5 #0014 - 0x60140012, // 0011 GETGBL R5 G18 - 0x7C140000, // 0012 CALL R5 0 - 0x5C0C0A00, // 0013 MOVE R3 R5 - 0x60140010, // 0014 GETGBL R5 G16 - 0x88180300, // 0015 GETMBR R6 R1 K0 - 0x7C140200, // 0016 CALL R5 1 - 0xA802005A, // 0017 EXBLK 0 #0073 - 0x5C180A00, // 0018 MOVE R6 R5 - 0x7C180000, // 0019 CALL R6 0 - 0xB81E0600, // 001A GETNGBL R7 K3 - 0x8C1C0F04, // 001B GETMET R7 R7 K4 - 0x88240105, // 001C GETMBR R9 R0 K5 - 0x7C1C0400, // 001D CALL R7 2 - 0x8C200F06, // 001E GETMET R8 R7 K6 - 0x88280D07, // 001F GETMBR R10 R6 K7 - 0x882C0D08, // 0020 GETMBR R11 R6 K8 - 0x88300D09, // 0021 GETMBR R12 R6 K9 - 0x8834030A, // 0022 GETMBR R13 R1 K10 - 0x7C200A00, // 0023 CALL R8 5 - 0x6020000C, // 0024 GETGBL R8 G12 - 0x88240300, // 0025 GETMBR R9 R1 K0 - 0x7C200200, // 0026 CALL R8 1 - 0x24201102, // 0027 GT R8 R8 K2 - 0x78220003, // 0028 JMPF R8 #002D - 0x8C20070B, // 0029 GETMET R8 R3 K11 - 0x5C280E00, // 002A MOVE R10 R7 - 0x7C200400, // 002B CALL R8 2 - 0x70020000, // 002C JMP #002E - 0x5C0C0E00, // 002D MOVE R3 R7 - 0xB8221800, // 002E GETNGBL R8 K12 - 0x8C20110D, // 002F GETMET R8 R8 K13 - 0x5828000E, // 0030 LDCONST R10 K14 - 0x7C200400, // 0031 CALL R8 2 - 0x7822003E, // 0032 JMPF R8 #0072 - 0x88200D07, // 0033 GETMBR R8 R6 K7 - 0x4C240000, // 0034 LDNIL R9 - 0x1C201009, // 0035 EQ R8 R8 R9 - 0x74220007, // 0036 JMPT R8 #003F - 0x88200D08, // 0037 GETMBR R8 R6 K8 - 0x4C240000, // 0038 LDNIL R9 - 0x1C201009, // 0039 EQ R8 R8 R9 - 0x74220003, // 003A JMPT R8 #003F - 0x88200D09, // 003B GETMBR R8 R6 K9 - 0x4C240000, // 003C LDNIL R9 - 0x1C201009, // 003D EQ R8 R8 R9 - 0x78220032, // 003E JMPF R8 #0072 - 0xB8220600, // 003F GETNGBL R8 K3 - 0x8C20110F, // 0040 GETMET R8 R8 K15 - 0x7C200200, // 0041 CALL R8 1 - 0x88240D07, // 0042 GETMBR R9 R6 K7 - 0x90220E09, // 0043 SETMBR R8 K7 R9 - 0x88240D08, // 0044 GETMBR R9 R6 K8 - 0x90221009, // 0045 SETMBR R8 K8 R9 - 0x88240D09, // 0046 GETMBR R9 R6 K9 - 0x90221209, // 0047 SETMBR R8 K9 R9 - 0x8824030A, // 0048 GETMBR R9 R1 K10 - 0x90221409, // 0049 SETMBR R8 K10 R9 - 0x60240008, // 004A GETGBL R9 G8 - 0x5C281000, // 004B MOVE R10 R8 - 0x7C240200, // 004C CALL R9 1 - 0x88280D08, // 004D GETMBR R10 R6 K8 - 0x4C2C0000, // 004E LDNIL R11 - 0x2028140B, // 004F NE R10 R10 R11 - 0x782A0017, // 0050 JMPF R10 #0069 - 0x88280D09, // 0051 GETMBR R10 R6 K9 - 0x4C2C0000, // 0052 LDNIL R11 - 0x2028140B, // 0053 NE R10 R10 R11 - 0x782A0013, // 0054 JMPF R10 #0069 - 0xB82A0600, // 0055 GETNGBL R10 K3 - 0x8C281510, // 0056 GETMET R10 R10 K16 - 0x88300D08, // 0057 GETMBR R12 R6 K8 - 0x88340D09, // 0058 GETMBR R13 R6 K9 - 0x7C280600, // 0059 CALL R10 3 - 0xB82E2200, // 005A GETNGBL R11 K17 - 0x60300018, // 005B GETGBL R12 G24 - 0x58340012, // 005C LDCONST R13 K18 - 0x88380513, // 005D GETMBR R14 R2 K19 - 0x88381D14, // 005E GETMBR R14 R14 K20 - 0x782A0002, // 005F JMPF R10 #0063 - 0x003E2A0A, // 0060 ADD R15 K21 R10 - 0x003C1F16, // 0061 ADD R15 R15 K22 - 0x70020000, // 0062 JMP #0064 - 0x583C0017, // 0063 LDCONST R15 K23 - 0x003C120F, // 0064 ADD R15 R9 R15 - 0x7C300600, // 0065 CALL R12 3 - 0x5834000E, // 0066 LDCONST R13 K14 - 0x7C2C0400, // 0067 CALL R11 2 - 0x70020008, // 0068 JMP #0072 - 0xB82A2200, // 0069 GETNGBL R10 K17 - 0x602C0018, // 006A GETGBL R11 G24 - 0x58300012, // 006B LDCONST R12 K18 - 0x88340513, // 006C GETMBR R13 R2 K19 - 0x88341B14, // 006D GETMBR R13 R13 K20 - 0x5C381200, // 006E MOVE R14 R9 - 0x7C2C0600, // 006F CALL R11 3 - 0x5830000E, // 0070 LDCONST R12 K14 - 0x7C280400, // 0071 CALL R10 2 - 0x7001FFA4, // 0072 JMP #0018 - 0x58140018, // 0073 LDCONST R5 K24 - 0xAC140200, // 0074 CATCH R5 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040600, // 0076 RET 1 R3 - 0x4C0C0000, // 0077 LDNIL R3 - 0x80040600, // 0078 RET 1 R3 + 0x781A0008, // 00D9 JMPF R6 #00E3 + 0x8818012A, // 00DA GETMBR R6 R0 K42 + 0x8C180D20, // 00DB GETMET R6 R6 K32 + 0xB8220000, // 00DC GETNGBL R8 K0 + 0x8C20112B, // 00DD GETMET R8 R8 K43 + 0x5C280200, // 00DE MOVE R10 R1 + 0x5C2C0A00, // 00DF MOVE R11 R5 + 0x7C200600, // 00E0 CALL R8 3 + 0x7C180400, // 00E1 CALL R6 2 + 0x70020001, // 00E2 JMP #00E5 + 0x50180000, // 00E3 LDBOOL R6 0 0 + 0x80040C00, // 00E4 RET 1 R6 + 0x50180200, // 00E5 LDBOOL R6 1 0 + 0x80040C00, // 00E6 RET 1 R6 + 0x80000000, // 00E7 RET 0 }) ) ); @@ -2095,10 +548,331 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na /******************************************************************** -** Solidified function: send_subscribe_heartbeat +** Solidified function: subscribe_request ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ +be_local_closure(class_Matter_IM_subscribe_request, /* name */ + be_nested_proto( + 17, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[35]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(SubscribeRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(keep_subscriptions), + /* K4 */ be_nested_str_weak(subs_shop), + /* K5 */ be_nested_str_weak(remove_by_session), + /* K6 */ be_nested_str_weak(session), + /* K7 */ be_nested_str_weak(new_subscription), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(loglevel), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(attributes_requests), + /* K12 */ be_nested_str_weak(Path), + /* K13 */ be_nested_str_weak(msg), + /* K14 */ be_nested_str_weak(endpoint), + /* K15 */ be_nested_str_weak(cluster), + /* K16 */ be_nested_str_weak(attribute), + /* K17 */ be_nested_str_weak(push), + /* K18 */ be_nested_str_weak(stop_iteration), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), + /* K21 */ be_nested_str_weak(local_session_id), + /* K22 */ be_nested_str_weak(concat), + /* K23 */ be_nested_str_weak(_X20), + /* K24 */ be_nested_str_weak(min_interval), + /* K25 */ be_nested_str_weak(max_interval), + /* K26 */ be_const_int(1), + /* K27 */ be_const_int(0), + /* K28 */ be_nested_str_weak(subscription_id), + /* K29 */ be_nested_str_weak(fabric_filtered), + /* K30 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K31 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K32 */ be_nested_str_weak(set_event_generator_or_arr), + /* K33 */ be_nested_str_weak(send_queue), + /* K34 */ be_nested_str_weak(IM_SubscribeResponse_Pull), + }), + be_str_weak(subscribe_request), + &be_const_str_solidified, + ( &(const binstruction[96]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x88100703, // 0006 GETMBR R4 R3 K3 + 0x74120003, // 0007 JMPT R4 #000C + 0x88100104, // 0008 GETMBR R4 R0 K4 + 0x8C100905, // 0009 GETMET R4 R4 K5 + 0x88180306, // 000A GETMBR R6 R1 K6 + 0x7C100400, // 000B CALL R4 2 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x8C100907, // 000D GETMET R4 R4 K7 + 0x88180306, // 000E GETMBR R6 R1 K6 + 0x5C1C0600, // 000F MOVE R7 R3 + 0x7C100600, // 0010 CALL R4 3 + 0xB8161000, // 0011 GETNGBL R5 K8 + 0x8C140B09, // 0012 GETMET R5 R5 K9 + 0x581C000A, // 0013 LDCONST R7 K10 + 0x7C140400, // 0014 CALL R5 2 + 0x78160032, // 0015 JMPF R5 #0049 + 0x8814070B, // 0016 GETMBR R5 R3 K11 + 0x4C180000, // 0017 LDNIL R6 + 0x20140A06, // 0018 NE R5 R5 R6 + 0x7816002E, // 0019 JMPF R5 #0049 + 0x60140012, // 001A GETGBL R5 G18 + 0x7C140000, // 001B CALL R5 0 + 0xB81A0000, // 001C GETNGBL R6 K0 + 0x8C180D0C, // 001D GETMET R6 R6 K12 + 0x7C180200, // 001E CALL R6 1 + 0x901A1A01, // 001F SETMBR R6 K13 R1 + 0x601C0010, // 0020 GETGBL R7 G16 + 0x8820070B, // 0021 GETMBR R8 R3 K11 + 0x7C1C0200, // 0022 CALL R7 1 + 0xA802000D, // 0023 EXBLK 0 #0032 + 0x5C200E00, // 0024 MOVE R8 R7 + 0x7C200000, // 0025 CALL R8 0 + 0x8824110E, // 0026 GETMBR R9 R8 K14 + 0x901A1C09, // 0027 SETMBR R6 K14 R9 + 0x8824110F, // 0028 GETMBR R9 R8 K15 + 0x901A1E09, // 0029 SETMBR R6 K15 R9 + 0x88241110, // 002A GETMBR R9 R8 K16 + 0x901A2009, // 002B SETMBR R6 K16 R9 + 0x8C240B11, // 002C GETMET R9 R5 K17 + 0x602C0008, // 002D GETGBL R11 G8 + 0x5C300C00, // 002E MOVE R12 R6 + 0x7C2C0200, // 002F CALL R11 1 + 0x7C240400, // 0030 CALL R9 2 + 0x7001FFF1, // 0031 JMP #0024 + 0x581C0012, // 0032 LDCONST R7 K18 + 0xAC1C0200, // 0033 CATCH R7 1 0 + 0xB0080000, // 0034 RAISE 2 R0 R0 + 0xB81E2600, // 0035 GETNGBL R7 K19 + 0x60200018, // 0036 GETGBL R8 G24 + 0x58240014, // 0037 LDCONST R9 K20 + 0x88280306, // 0038 GETMBR R10 R1 K6 + 0x88281515, // 0039 GETMBR R10 R10 K21 + 0x8C2C0B16, // 003A GETMET R11 R5 K22 + 0x58340017, // 003B LDCONST R13 K23 + 0x7C2C0400, // 003C CALL R11 2 + 0x88300918, // 003D GETMBR R12 R4 K24 + 0x88340919, // 003E GETMBR R13 R4 K25 + 0x88380703, // 003F GETMBR R14 R3 K3 + 0x783A0001, // 0040 JMPF R14 #0043 + 0x5838001A, // 0041 LDCONST R14 K26 + 0x70020000, // 0042 JMP #0044 + 0x5838001B, // 0043 LDCONST R14 K27 + 0x883C091C, // 0044 GETMBR R15 R4 K28 + 0x8840071D, // 0045 GETMBR R16 R3 K29 + 0x7C201000, // 0046 CALL R8 8 + 0x5824000A, // 0047 LDCONST R9 K10 + 0x7C1C0400, // 0048 CALL R7 2 + 0x8C14011E, // 0049 GETMET R5 R0 K30 + 0x5C1C0600, // 004A MOVE R7 R3 + 0x5C200200, // 004B MOVE R8 R1 + 0x7C140600, // 004C CALL R5 3 + 0x8C18011F, // 004D GETMET R6 R0 K31 + 0x5C200600, // 004E MOVE R8 R3 + 0x5C240200, // 004F MOVE R9 R1 + 0x7C180600, // 0050 CALL R6 3 + 0x8C1C0920, // 0051 GETMET R7 R4 K32 + 0x5C240C00, // 0052 MOVE R9 R6 + 0x7C1C0400, // 0053 CALL R7 2 + 0x881C0121, // 0054 GETMBR R7 R0 K33 + 0x8C1C0F11, // 0055 GETMET R7 R7 K17 + 0xB8260000, // 0056 GETNGBL R9 K0 + 0x8C241322, // 0057 GETMET R9 R9 K34 + 0x5C2C0200, // 0058 MOVE R11 R1 + 0x5C300A00, // 0059 MOVE R12 R5 + 0x5C340C00, // 005A MOVE R13 R6 + 0x5C380800, // 005B MOVE R14 R4 + 0x7C240A00, // 005C CALL R9 5 + 0x7C1C0400, // 005D CALL R7 2 + 0x501C0200, // 005E LDBOOL R7 1 0 + 0x80040E00, // 005F RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_or_subscribe_request_pull +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(attributes_requests), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(device), + /* K6 */ be_nested_str_weak(start), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(fabric_filtered), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(loglevel), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(Path), + /* K16 */ be_nested_str_weak(get_attribute_name), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K19 */ be_nested_str_weak(session), + /* K20 */ be_nested_str_weak(local_session_id), + /* K21 */ be_nested_str_weak(_X20_X28), + /* K22 */ be_nested_str_weak(_X29), + /* K23 */ be_nested_str_weak(), + /* K24 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_read_or_subscribe_request_pull), + &be_const_str_solidified, + ( &(const binstruction[115]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x200C0604, // 0002 NE R3 R3 R4 + 0x780E006C, // 0003 JMPF R3 #0071 + 0x4C0C0000, // 0004 LDNIL R3 + 0x88100300, // 0005 GETMBR R4 R1 K0 + 0x78120003, // 0006 JMPF R4 #000B + 0x6010000C, // 0007 GETGBL R4 G12 + 0x88140300, // 0008 GETMBR R5 R1 K0 + 0x7C100200, // 0009 CALL R4 1 + 0x70020000, // 000A JMP #000C + 0x58100001, // 000B LDCONST R4 K1 + 0x24140902, // 000C GT R5 R4 K2 + 0x78160002, // 000D JMPF R5 #0011 + 0x60140012, // 000E GETGBL R5 G18 + 0x7C140000, // 000F CALL R5 0 + 0x5C0C0A00, // 0010 MOVE R3 R5 + 0x60140010, // 0011 GETGBL R5 G16 + 0x88180300, // 0012 GETMBR R6 R1 K0 + 0x7C140200, // 0013 CALL R5 1 + 0xA8020057, // 0014 EXBLK 0 #006D + 0x5C180A00, // 0015 MOVE R6 R5 + 0x7C180000, // 0016 CALL R6 0 + 0xB81E0600, // 0017 GETNGBL R7 K3 + 0x8C1C0F04, // 0018 GETMET R7 R7 K4 + 0x88240105, // 0019 GETMBR R9 R0 K5 + 0x7C1C0400, // 001A CALL R7 2 + 0x8C200F06, // 001B GETMET R8 R7 K6 + 0x88280D07, // 001C GETMBR R10 R6 K7 + 0x882C0D08, // 001D GETMBR R11 R6 K8 + 0x88300D09, // 001E GETMBR R12 R6 K9 + 0x8834030A, // 001F GETMBR R13 R1 K10 + 0x7C200A00, // 0020 CALL R8 5 + 0x24200902, // 0021 GT R8 R4 K2 + 0x78220003, // 0022 JMPF R8 #0027 + 0x8C20070B, // 0023 GETMET R8 R3 K11 + 0x5C280E00, // 0024 MOVE R10 R7 + 0x7C200400, // 0025 CALL R8 2 + 0x70020000, // 0026 JMP #0028 + 0x5C0C0E00, // 0027 MOVE R3 R7 + 0xB8221800, // 0028 GETNGBL R8 K12 + 0x8C20110D, // 0029 GETMET R8 R8 K13 + 0x5828000E, // 002A LDCONST R10 K14 + 0x7C200400, // 002B CALL R8 2 + 0x7822003E, // 002C JMPF R8 #006C + 0x88200D07, // 002D GETMBR R8 R6 K7 + 0x4C240000, // 002E LDNIL R9 + 0x1C201009, // 002F EQ R8 R8 R9 + 0x74220007, // 0030 JMPT R8 #0039 + 0x88200D08, // 0031 GETMBR R8 R6 K8 + 0x4C240000, // 0032 LDNIL R9 + 0x1C201009, // 0033 EQ R8 R8 R9 + 0x74220003, // 0034 JMPT R8 #0039 + 0x88200D09, // 0035 GETMBR R8 R6 K9 + 0x4C240000, // 0036 LDNIL R9 + 0x1C201009, // 0037 EQ R8 R8 R9 + 0x78220032, // 0038 JMPF R8 #006C + 0xB8220600, // 0039 GETNGBL R8 K3 + 0x8C20110F, // 003A GETMET R8 R8 K15 + 0x7C200200, // 003B CALL R8 1 + 0x88240D07, // 003C GETMBR R9 R6 K7 + 0x90220E09, // 003D SETMBR R8 K7 R9 + 0x88240D08, // 003E GETMBR R9 R6 K8 + 0x90221009, // 003F SETMBR R8 K8 R9 + 0x88240D09, // 0040 GETMBR R9 R6 K9 + 0x90221209, // 0041 SETMBR R8 K9 R9 + 0x8824030A, // 0042 GETMBR R9 R1 K10 + 0x90221409, // 0043 SETMBR R8 K10 R9 + 0x60240008, // 0044 GETGBL R9 G8 + 0x5C281000, // 0045 MOVE R10 R8 + 0x7C240200, // 0046 CALL R9 1 + 0x88280D08, // 0047 GETMBR R10 R6 K8 + 0x4C2C0000, // 0048 LDNIL R11 + 0x2028140B, // 0049 NE R10 R10 R11 + 0x782A0017, // 004A JMPF R10 #0063 + 0x88280D09, // 004B GETMBR R10 R6 K9 + 0x4C2C0000, // 004C LDNIL R11 + 0x2028140B, // 004D NE R10 R10 R11 + 0x782A0013, // 004E JMPF R10 #0063 + 0xB82A0600, // 004F GETNGBL R10 K3 + 0x8C281510, // 0050 GETMET R10 R10 K16 + 0x88300D08, // 0051 GETMBR R12 R6 K8 + 0x88340D09, // 0052 GETMBR R13 R6 K9 + 0x7C280600, // 0053 CALL R10 3 + 0xB82E2200, // 0054 GETNGBL R11 K17 + 0x60300018, // 0055 GETGBL R12 G24 + 0x58340012, // 0056 LDCONST R13 K18 + 0x88380513, // 0057 GETMBR R14 R2 K19 + 0x88381D14, // 0058 GETMBR R14 R14 K20 + 0x782A0002, // 0059 JMPF R10 #005D + 0x003E2A0A, // 005A ADD R15 K21 R10 + 0x003C1F16, // 005B ADD R15 R15 K22 + 0x70020000, // 005C JMP #005E + 0x583C0017, // 005D LDCONST R15 K23 + 0x003C120F, // 005E ADD R15 R9 R15 + 0x7C300600, // 005F CALL R12 3 + 0x5834000E, // 0060 LDCONST R13 K14 + 0x7C2C0400, // 0061 CALL R11 2 + 0x70020008, // 0062 JMP #006C + 0xB82A2200, // 0063 GETNGBL R10 K17 + 0x602C0018, // 0064 GETGBL R11 G24 + 0x58300012, // 0065 LDCONST R12 K18 + 0x88340513, // 0066 GETMBR R13 R2 K19 + 0x88341B14, // 0067 GETMBR R13 R13 K20 + 0x5C381200, // 0068 MOVE R14 R9 + 0x7C2C0600, // 0069 CALL R11 3 + 0x5830000E, // 006A LDCONST R12 K14 + 0x7C280400, // 006B CALL R10 2 + 0x7001FFA7, // 006C JMP #0015 + 0x58140018, // 006D LDCONST R5 K24 + 0xAC140200, // 006E CATCH R5 1 0 + 0xB0080000, // 006F RAISE 2 R0 R0 + 0x80040600, // 0070 RET 1 R3 + 0x4C0C0000, // 0071 LDNIL R3 + 0x80040600, // 0072 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_incoming +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_incoming, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ @@ -2108,425 +882,157 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_nested_str_weak(subscription_id), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(is_keep_alive), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K9 */ be_nested_str_weak(_message_handler), - /* K10 */ be_nested_str_weak(send_queue), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(send_enqueued), + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(opcode), + /* K1 */ be_const_int(2), + /* K2 */ be_nested_str_weak(read_request_solo), + /* K3 */ be_nested_str_weak(from_raw), + /* K4 */ be_nested_str_weak(raw), + /* K5 */ be_nested_str_weak(app_payload_idx), + /* K6 */ be_nested_str_weak(process_read_request_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(process_invoke_request_solo), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(parse), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(process_status_response), + /* K14 */ be_nested_str_weak(process_read_request_pull), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str_weak(send_ack_now), + /* K17 */ be_nested_str_weak(subscribe_request), + /* K18 */ be_nested_str_weak(process_write_request), + /* K19 */ be_nested_str_weak(process_write_response), + /* K20 */ be_nested_str_weak(process_invoke_request), + /* K21 */ be_nested_str_weak(process_timed_request), }), - be_str_weak(send_subscribe_heartbeat), + be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ + ( &(const binstruction[124]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x60100018, // 0002 GETGBL R4 G24 - 0x58140002, // 0003 LDCONST R5 K2 - 0x88180503, // 0004 GETMBR R6 R2 K3 - 0x881C0304, // 0005 GETMBR R7 R1 K4 - 0x7C100600, // 0006 CALL R4 3 - 0x58140005, // 0007 LDCONST R5 K5 - 0x7C0C0400, // 0008 CALL R3 2 - 0x500C0200, // 0009 LDBOOL R3 1 0 - 0x90060C03, // 000A SETMBR R1 K6 R3 - 0xB80E0E00, // 000B GETNGBL R3 K7 - 0x8C0C0708, // 000C GETMET R3 R3 K8 - 0x88140509, // 000D GETMBR R5 R2 K9 - 0x5C180400, // 000E MOVE R6 R2 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x7C0C0800, // 0010 CALL R3 4 - 0x8810010A, // 0011 GETMBR R4 R0 K10 - 0x8C10090B, // 0012 GETMET R4 R4 K11 - 0x5C180600, // 0013 MOVE R6 R3 - 0x7C100400, // 0014 CALL R4 2 - 0x8C10010C, // 0015 GETMET R4 R0 K12 - 0x88180509, // 0016 GETMBR R6 R2 K9 - 0x7C100400, // 0017 CALL R4 2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attributedata2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_attributedata2raw, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(355795236), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(path2raw), - /* K4 */ be_nested_str_weak(tag_sub), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(tlv2raw), - }), - be_str_weak(attributedata2raw), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x581C0001, // 0001 LDCONST R7 K1 - 0x5421FFFB, // 0002 LDINT R8 -4 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x5421FFFD, // 0006 LDINT R8 -2 - 0x7C140600, // 0007 CALL R5 3 - 0x8C140103, // 0008 GETMET R5 R0 K3 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x58240002, // 000B LDCONST R9 K2 - 0x5C280800, // 000C MOVE R10 R4 - 0x7C140A00, // 000D CALL R5 5 - 0x900E0905, // 000E SETMBR R3 K4 K5 - 0x8C140706, // 000F GETMET R5 R3 K6 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x7C140400, // 0011 CALL R5 2 - 0x8C140300, // 0012 GETMET R5 R1 K0 - 0x541E1817, // 0013 LDINT R7 6168 - 0x5421FFFD, // 0014 LDINT R8 -2 - 0x7C140600, // 0015 CALL R5 3 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attributestatus2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(path2raw), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_const_int(2), - }), - be_str_weak(attributestatus2raw), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x8C100300, // 0000 GETMET R4 R1 K0 - 0x541A0014, // 0001 LDINT R6 21 - 0x581C0001, // 0002 LDCONST R7 K1 - 0x7C100600, // 0003 CALL R4 3 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x541A34FF, // 0005 LDINT R6 13568 - 0x541DFFFD, // 0006 LDINT R7 -2 - 0x7C100600, // 0007 CALL R4 3 - 0x8C100102, // 0008 GETMET R4 R0 K2 - 0x5C180200, // 0009 MOVE R6 R1 - 0x5C1C0400, // 000A MOVE R7 R2 - 0x58200003, // 000B LDCONST R8 K3 - 0x7C100800, // 000C CALL R4 4 - 0x8C100300, // 000D GETMET R4 R1 K0 - 0x541A3500, // 000E LDINT R6 13569 - 0x541DFFFD, // 000F LDINT R7 -2 - 0x7C100600, // 0010 CALL R4 3 - 0x88100504, // 0011 GETMBR R4 R2 K4 - 0x541600FE, // 0012 LDINT R5 255 - 0x18100805, // 0013 LE R4 R4 R5 - 0x78120008, // 0014 JMPF R4 #001E - 0x8C100300, // 0015 GETMET R4 R1 K0 - 0x541A23FF, // 0016 LDINT R6 9216 - 0x541DFFFD, // 0017 LDINT R7 -2 - 0x7C100600, // 0018 CALL R4 3 - 0x8C100300, // 0019 GETMET R4 R1 K0 - 0x88180504, // 001A GETMBR R6 R2 K4 - 0x581C0001, // 001B LDCONST R7 K1 - 0x7C100600, // 001C CALL R4 3 - 0x70020007, // 001D JMP #0026 - 0x8C100300, // 001E GETMET R4 R1 K0 - 0x541A24FF, // 001F LDINT R6 9472 - 0x541DFFFD, // 0020 LDINT R7 -2 - 0x7C100600, // 0021 CALL R4 3 - 0x8C100300, // 0022 GETMET R4 R1 K0 - 0x88180504, // 0023 GETMBR R6 R2 K4 - 0x581C0005, // 0024 LDCONST R7 K5 - 0x7C100600, // 0025 CALL R4 3 - 0x8C100300, // 0026 GETMET R4 R1 K0 - 0x541A1817, // 0027 LDINT R6 6168 - 0x541DFFFD, // 0028 LDINT R7 -2 - 0x7C100600, // 0029 CALL R4 3 - 0x8C100300, // 002A GETMET R4 R1 K0 - 0x541A0017, // 002B LDINT R6 24 - 0x581C0001, // 002C LDCONST R7 K1 - 0x7C100600, // 002D CALL R4 3 - 0x80000000, // 002E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_request -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_write_request, /* name */ - be_nested_proto( - 21, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[39]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(Path), - /* K4 */ be_nested_str_weak(suppress_response), - /* K5 */ be_nested_str_weak(write_requests), - /* K6 */ be_nested_str_weak(WriteResponseMessage), - /* K7 */ be_nested_str_weak(write_responses), - /* K8 */ be_nested_str_weak(PathGenerator), - /* K9 */ be_nested_str_weak(device), - /* K10 */ be_nested_str_weak(path), - /* K11 */ be_nested_str_weak(data), - /* K12 */ be_nested_str_weak(copy), - /* K13 */ be_nested_str_weak(cluster), - /* K14 */ be_nested_str_weak(attribute), - /* K15 */ be_nested_str_weak(status), - /* K16 */ be_nested_str_weak(INVALID_ACTION), - /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), - /* K18 */ be_nested_str_weak(endpoint), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(loglevel), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(get_attribute_name), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K25 */ be_nested_str_weak(_X20_X28), - /* K26 */ be_nested_str_weak(_X29), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_nested_str_weak(start), - /* K29 */ be_nested_str_weak(is_direct), - /* K30 */ be_nested_str_weak(next), - /* K31 */ be_nested_str_weak(msg), - /* K32 */ be_nested_str_weak(get_pi), - /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), - /* K34 */ be_nested_str_weak(write_attribute), - /* K35 */ be_nested_str_weak(session), - /* K36 */ be_nested_str_weak(SUCCESS), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(send_write_response), - }), - be_str_weak(process_write_request), - &be_const_str_solidified, - ( &(const binstruction[141]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0xB8120000, // 0006 GETNGBL R4 K0 - 0x8C100903, // 0007 GETMET R4 R4 K3 - 0x7C100200, // 0008 CALL R4 1 - 0x88140704, // 0009 GETMBR R5 R3 K4 - 0x88180705, // 000A GETMBR R6 R3 K5 - 0x4C1C0000, // 000B LDNIL R7 - 0x20180C07, // 000C NE R6 R6 R7 - 0x781A007C, // 000D JMPF R6 #008B - 0xB81A0000, // 000E GETNGBL R6 K0 - 0x8C180D06, // 000F GETMET R6 R6 K6 - 0x7C180200, // 0010 CALL R6 1 - 0x601C0012, // 0011 GETGBL R7 G18 - 0x7C1C0000, // 0012 CALL R7 0 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0xB81E0000, // 0014 GETNGBL R7 K0 - 0x8C1C0F08, // 0015 GETMET R7 R7 K8 - 0x88240109, // 0016 GETMBR R9 R0 K9 - 0x7C1C0400, // 0017 CALL R7 2 - 0x60200010, // 0018 GETGBL R8 G16 - 0x88240705, // 0019 GETMBR R9 R3 K5 - 0x7C200200, // 001A CALL R8 1 - 0xA8020065, // 001B EXBLK 0 #0082 - 0x5C241000, // 001C MOVE R9 R8 - 0x7C240000, // 001D CALL R9 0 - 0x8828130A, // 001E GETMBR R10 R9 K10 - 0x882C130B, // 001F GETMBR R11 R9 K11 - 0x8C30090C, // 0020 GETMET R12 R4 K12 - 0x5C381400, // 0021 MOVE R14 R10 - 0x7C300400, // 0022 CALL R12 2 - 0x8830150D, // 0023 GETMBR R12 R10 K13 - 0x4C340000, // 0024 LDNIL R13 - 0x1C30180D, // 0025 EQ R12 R12 R13 - 0x74320003, // 0026 JMPT R12 #002B - 0x8830150E, // 0027 GETMBR R12 R10 K14 - 0x4C340000, // 0028 LDNIL R13 - 0x1C30180D, // 0029 EQ R12 R12 R13 - 0x78320008, // 002A JMPF R12 #0034 - 0xB8320000, // 002B GETNGBL R12 K0 - 0x88301910, // 002C GETMBR R12 R12 K16 - 0x90121E0C, // 002D SETMBR R4 K15 R12 - 0x8C300111, // 002E GETMET R12 R0 K17 - 0x5C380C00, // 002F MOVE R14 R6 - 0x5C3C0800, // 0030 MOVE R15 R4 - 0x4C400000, // 0031 LDNIL R16 - 0x7C300800, // 0032 CALL R12 4 - 0x7001FFE7, // 0033 JMP #001C - 0x88301512, // 0034 GETMBR R12 R10 K18 - 0x4C340000, // 0035 LDNIL R13 - 0x1C30180D, // 0036 EQ R12 R12 R13 - 0x78320016, // 0037 JMPF R12 #004F - 0xB8322600, // 0038 GETNGBL R12 K19 - 0x8C301914, // 0039 GETMET R12 R12 K20 - 0x58380015, // 003A LDCONST R14 K21 - 0x7C300400, // 003B CALL R12 2 - 0x78320011, // 003C JMPF R12 #004F - 0xB8320000, // 003D GETNGBL R12 K0 - 0x8C301916, // 003E GETMET R12 R12 K22 - 0x8838150D, // 003F GETMBR R14 R10 K13 - 0x883C150E, // 0040 GETMBR R15 R10 K14 - 0x7C300600, // 0041 CALL R12 3 - 0xB8362E00, // 0042 GETNGBL R13 K23 - 0x60380008, // 0043 GETGBL R14 G8 - 0x5C3C0800, // 0044 MOVE R15 R4 - 0x7C380200, // 0045 CALL R14 1 - 0x003A300E, // 0046 ADD R14 K24 R14 - 0x78320002, // 0047 JMPF R12 #004B - 0x003E320C, // 0048 ADD R15 K25 R12 - 0x003C1F1A, // 0049 ADD R15 R15 K26 - 0x70020000, // 004A JMP #004C - 0x583C001B, // 004B LDCONST R15 K27 - 0x00381C0F, // 004C ADD R14 R14 R15 - 0x583C0015, // 004D LDCONST R15 K21 - 0x7C340400, // 004E CALL R13 2 - 0x8C300F1C, // 004F GETMET R12 R7 K28 - 0x88381512, // 0050 GETMBR R14 R10 K18 - 0x883C150D, // 0051 GETMBR R15 R10 K13 - 0x8840150E, // 0052 GETMBR R16 R10 K14 - 0x7C300800, // 0053 CALL R12 4 - 0x8C300F1D, // 0054 GETMET R12 R7 K29 - 0x7C300200, // 0055 CALL R12 1 - 0x4C340000, // 0056 LDNIL R13 - 0x8C380F1E, // 0057 GETMET R14 R7 K30 - 0x7C380200, // 0058 CALL R14 1 - 0x5C341C00, // 0059 MOVE R13 R14 - 0x783A0025, // 005A JMPF R14 #0081 - 0x90363E01, // 005B SETMBR R13 K31 R1 - 0x88381B0F, // 005C GETMBR R14 R13 K15 - 0x4C3C0000, // 005D LDNIL R15 - 0x20381C0F, // 005E NE R14 R14 R15 - 0x783A0007, // 005F JMPF R14 #0068 - 0x4C380000, // 0060 LDNIL R14 - 0x90361E0E, // 0061 SETMBR R13 K15 R14 - 0x8C380111, // 0062 GETMET R14 R0 K17 - 0x5C400C00, // 0063 MOVE R16 R6 - 0x5C441A00, // 0064 MOVE R17 R13 - 0x5C481600, // 0065 MOVE R18 R11 - 0x7C380800, // 0066 CALL R14 4 - 0x70020017, // 0067 JMP #0080 - 0x8C380F20, // 0068 GETMET R14 R7 K32 - 0x7C380200, // 0069 CALL R14 1 - 0xB83E0000, // 006A GETNGBL R15 K0 - 0x883C1F21, // 006B GETMBR R15 R15 K33 - 0x90361E0F, // 006C SETMBR R13 K15 R15 - 0x4C3C0000, // 006D LDNIL R15 - 0x203C1C0F, // 006E NE R15 R14 R15 - 0x783E0005, // 006F JMPF R15 #0076 - 0x8C3C1D22, // 0070 GETMET R15 R14 K34 - 0x88440323, // 0071 GETMBR R17 R1 K35 - 0x5C481A00, // 0072 MOVE R18 R13 - 0x5C4C1600, // 0073 MOVE R19 R11 - 0x7C3C0800, // 0074 CALL R15 4 - 0x70020000, // 0075 JMP #0077 - 0x4C3C0000, // 0076 LDNIL R15 - 0x783E0002, // 0077 JMPF R15 #007B - 0xB8420000, // 0078 GETNGBL R16 K0 - 0x88402124, // 0079 GETMBR R16 R16 K36 - 0x90361E10, // 007A SETMBR R13 K15 R16 - 0x8C400111, // 007B GETMET R16 R0 K17 - 0x5C480C00, // 007C MOVE R18 R6 - 0x5C4C1A00, // 007D MOVE R19 R13 - 0x5C501600, // 007E MOVE R20 R11 - 0x7C400800, // 007F CALL R16 4 - 0x7001FFD5, // 0080 JMP #0057 - 0x7001FF99, // 0081 JMP #001C - 0x58200025, // 0082 LDCONST R8 K37 - 0xAC200200, // 0083 CATCH R8 1 0 - 0xB0080000, // 0084 RAISE 2 R0 R0 - 0x5C200A00, // 0085 MOVE R8 R5 - 0x74220003, // 0086 JMPT R8 #008B - 0x8C200126, // 0087 GETMET R8 R0 K38 - 0x5C280200, // 0088 MOVE R10 R1 - 0x5C2C0C00, // 0089 MOVE R11 R6 - 0x7C200600, // 008A CALL R8 3 - 0x50180200, // 008B LDBOOL R6 1 0 - 0x80040C00, // 008C RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_report_data_pull -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_report_data_pull, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_ReportData_Pull), - }), - be_str_weak(send_report_data_pull), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C140600, // 0006 CALL R5 3 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 + 0x1C0C0501, // 0001 EQ R3 R2 K1 + 0x780E000D, // 0002 JMPF R3 #0011 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x88140304, // 0005 GETMBR R5 R1 K4 + 0x88180305, // 0006 GETMBR R6 R1 K5 + 0x7C0C0600, // 0007 CALL R3 3 + 0x4C100000, // 0008 LDNIL R4 + 0x20100604, // 0009 NE R4 R3 R4 + 0x78120004, // 000A JMPF R4 #0010 + 0x8C100106, // 000B GETMET R4 R0 K6 + 0x5C180200, // 000C MOVE R6 R1 + 0x5C1C0600, // 000D MOVE R7 R3 + 0x7C100600, // 000E CALL R4 3 + 0x80040800, // 000F RET 1 R4 + 0x7002000F, // 0010 JMP #0021 + 0x540E0007, // 0011 LDINT R3 8 + 0x1C0C0403, // 0012 EQ R3 R2 R3 + 0x780E000C, // 0013 JMPF R3 #0021 + 0x880C0107, // 0014 GETMBR R3 R0 K7 + 0x8C0C0703, // 0015 GETMET R3 R3 K3 + 0x88140304, // 0016 GETMBR R5 R1 K4 + 0x88180305, // 0017 GETMBR R6 R1 K5 + 0x7C0C0600, // 0018 CALL R3 3 + 0x4C100000, // 0019 LDNIL R4 + 0x20100604, // 001A NE R4 R3 R4 + 0x78120004, // 001B JMPF R4 #0021 + 0x8C100108, // 001C GETMET R4 R0 K8 + 0x5C180200, // 001D MOVE R6 R1 + 0x5C1C0600, // 001E MOVE R7 R3 + 0x7C100600, // 001F CALL R4 3 + 0x80040800, // 0020 RET 1 R4 + 0xB80E1200, // 0021 GETNGBL R3 K9 + 0x880C070A, // 0022 GETMBR R3 R3 K10 + 0x8C0C070B, // 0023 GETMET R3 R3 K11 + 0x88140304, // 0024 GETMBR R5 R1 K4 + 0x88180305, // 0025 GETMBR R6 R1 K5 + 0x7C0C0600, // 0026 CALL R3 3 + 0x1C10050C, // 0027 EQ R4 R2 K12 + 0x78120005, // 0028 JMPF R4 #002F + 0x8C10010D, // 0029 GETMET R4 R0 K13 + 0x5C180200, // 002A MOVE R6 R1 + 0x5C1C0600, // 002B MOVE R7 R3 + 0x7C100600, // 002C CALL R4 3 + 0x80040800, // 002D RET 1 R4 + 0x7002004A, // 002E JMP #007A + 0x1C100501, // 002F EQ R4 R2 K1 + 0x78120005, // 0030 JMPF R4 #0037 + 0x8C10010E, // 0031 GETMET R4 R0 K14 + 0x5C180200, // 0032 MOVE R6 R1 + 0x5C1C0600, // 0033 MOVE R7 R3 + 0x7C100600, // 0034 CALL R4 3 + 0x80040800, // 0035 RET 1 R4 + 0x70020042, // 0036 JMP #007A + 0x1C10050F, // 0037 EQ R4 R2 K15 + 0x78120008, // 0038 JMPF R4 #0042 + 0x8C100110, // 0039 GETMET R4 R0 K16 + 0x5C180200, // 003A MOVE R6 R1 + 0x7C100400, // 003B CALL R4 2 + 0x8C100111, // 003C GETMET R4 R0 K17 + 0x5C180200, // 003D MOVE R6 R1 + 0x5C1C0600, // 003E MOVE R7 R3 + 0x7C100600, // 003F CALL R4 3 + 0x80040800, // 0040 RET 1 R4 + 0x70020037, // 0041 JMP #007A + 0x54120003, // 0042 LDINT R4 4 + 0x1C100404, // 0043 EQ R4 R2 R4 + 0x78120002, // 0044 JMPF R4 #0048 + 0x50100000, // 0045 LDBOOL R4 0 0 + 0x80040800, // 0046 RET 1 R4 + 0x70020031, // 0047 JMP #007A + 0x54120004, // 0048 LDINT R4 5 + 0x1C100404, // 0049 EQ R4 R2 R4 + 0x78120002, // 004A JMPF R4 #004E + 0x50100000, // 004B LDBOOL R4 0 0 + 0x80040800, // 004C RET 1 R4 + 0x7002002B, // 004D JMP #007A + 0x54120005, // 004E LDINT R4 6 + 0x1C100404, // 004F EQ R4 R2 R4 + 0x78120008, // 0050 JMPF R4 #005A + 0x8C100110, // 0051 GETMET R4 R0 K16 + 0x5C180200, // 0052 MOVE R6 R1 + 0x7C100400, // 0053 CALL R4 2 + 0x8C100112, // 0054 GETMET R4 R0 K18 + 0x5C180200, // 0055 MOVE R6 R1 + 0x5C1C0600, // 0056 MOVE R7 R3 + 0x7C100600, // 0057 CALL R4 3 + 0x80040800, // 0058 RET 1 R4 + 0x7002001F, // 0059 JMP #007A + 0x54120006, // 005A LDINT R4 7 + 0x1C100404, // 005B EQ R4 R2 R4 + 0x78120005, // 005C JMPF R4 #0063 + 0x8C100113, // 005D GETMET R4 R0 K19 + 0x5C180200, // 005E MOVE R6 R1 + 0x5C1C0600, // 005F MOVE R7 R3 + 0x7C100600, // 0060 CALL R4 3 + 0x80040800, // 0061 RET 1 R4 + 0x70020016, // 0062 JMP #007A + 0x54120007, // 0063 LDINT R4 8 + 0x1C100404, // 0064 EQ R4 R2 R4 + 0x78120005, // 0065 JMPF R4 #006C + 0x8C100114, // 0066 GETMET R4 R0 K20 + 0x5C180200, // 0067 MOVE R6 R1 + 0x5C1C0600, // 0068 MOVE R7 R3 + 0x7C100600, // 0069 CALL R4 3 + 0x80040800, // 006A RET 1 R4 + 0x7002000D, // 006B JMP #007A + 0x54120008, // 006C LDINT R4 9 + 0x1C100404, // 006D EQ R4 R2 R4 + 0x78120002, // 006E JMPF R4 #0072 + 0x50100000, // 006F LDBOOL R4 0 0 + 0x80040800, // 0070 RET 1 R4 + 0x70020007, // 0071 JMP #007A + 0x54120009, // 0072 LDINT R4 10 + 0x1C100404, // 0073 EQ R4 R2 R4 + 0x78120004, // 0074 JMPF R4 #007A + 0x8C100115, // 0075 GETMET R4 R0 K21 + 0x5C180200, // 0076 MOVE R6 R1 + 0x5C1C0600, // 0077 MOVE R7 R3 + 0x7C100600, // 0078 CALL R4 3 + 0x80040800, // 0079 RET 1 R4 + 0x50100000, // 007A LDBOOL R4 0 0 + 0x80040800, // 007B RET 1 R4 }) ) ); @@ -2803,6 +1309,527 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: invokeresponse2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(command), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(SUCCESS), + /* K9 */ be_nested_str_weak(tag_sub), + /* K10 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(invokeresponse2raw), + &be_const_str_solidified, + ( &(const binstruction[148]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x541A0014, // 0001 LDINT R6 21 + 0x581C0001, // 0002 LDCONST R7 K1 + 0x7C100600, // 0003 CALL R4 3 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120004, // 0006 JMPF R4 #000C + 0x8C100300, // 0007 GETMET R4 R1 K0 + 0x541A3500, // 0008 LDINT R6 13569 + 0x541DFFFD, // 0009 LDINT R7 -2 + 0x7C100600, // 000A CALL R4 3 + 0x70020003, // 000B JMP #0010 + 0x8C100300, // 000C GETMET R4 R1 K0 + 0x541A34FF, // 000D LDINT R6 13568 + 0x541DFFFD, // 000E LDINT R7 -2 + 0x7C100600, // 000F CALL R4 3 + 0x8C100300, // 0010 GETMET R4 R1 K0 + 0x541A36FF, // 0011 LDINT R6 14080 + 0x541DFFFD, // 0012 LDINT R7 -2 + 0x7C100600, // 0013 CALL R4 3 + 0x88100502, // 0014 GETMBR R4 R2 K2 + 0x541600FE, // 0015 LDINT R5 255 + 0x18100805, // 0016 LE R4 R4 R5 + 0x78120008, // 0017 JMPF R4 #0021 + 0x8C100300, // 0018 GETMET R4 R1 K0 + 0x541A23FF, // 0019 LDINT R6 9216 + 0x541DFFFD, // 001A LDINT R7 -2 + 0x7C100600, // 001B CALL R4 3 + 0x8C100300, // 001C GETMET R4 R1 K0 + 0x88180502, // 001D GETMBR R6 R2 K2 + 0x581C0001, // 001E LDCONST R7 K1 + 0x7C100600, // 001F CALL R4 3 + 0x70020007, // 0020 JMP #0029 + 0x8C100300, // 0021 GETMET R4 R1 K0 + 0x541A24FF, // 0022 LDINT R6 9472 + 0x541DFFFD, // 0023 LDINT R7 -2 + 0x7C100600, // 0024 CALL R4 3 + 0x8C100300, // 0025 GETMET R4 R1 K0 + 0x88180502, // 0026 GETMBR R6 R2 K2 + 0x581C0003, // 0027 LDCONST R7 K3 + 0x7C100600, // 0028 CALL R4 3 + 0x88100504, // 0029 GETMBR R4 R2 K4 + 0x541600FE, // 002A LDINT R5 255 + 0x18100805, // 002B LE R4 R4 R5 + 0x78120008, // 002C JMPF R4 #0036 + 0x8C100300, // 002D GETMET R4 R1 K0 + 0x541A2400, // 002E LDINT R6 9217 + 0x541DFFFD, // 002F LDINT R7 -2 + 0x7C100600, // 0030 CALL R4 3 + 0x8C100300, // 0031 GETMET R4 R1 K0 + 0x88180504, // 0032 GETMBR R6 R2 K4 + 0x581C0001, // 0033 LDCONST R7 K1 + 0x7C100600, // 0034 CALL R4 3 + 0x70020014, // 0035 JMP #004B + 0x88100504, // 0036 GETMBR R4 R2 K4 + 0x5416FFFE, // 0037 LDINT R5 65535 + 0x18100805, // 0038 LE R4 R4 R5 + 0x78120008, // 0039 JMPF R4 #0043 + 0x8C100300, // 003A GETMET R4 R1 K0 + 0x541A2500, // 003B LDINT R6 9473 + 0x541DFFFD, // 003C LDINT R7 -2 + 0x7C100600, // 003D CALL R4 3 + 0x8C100300, // 003E GETMET R4 R1 K0 + 0x88180504, // 003F GETMBR R6 R2 K4 + 0x581C0003, // 0040 LDCONST R7 K3 + 0x7C100600, // 0041 CALL R4 3 + 0x70020007, // 0042 JMP #004B + 0x8C100300, // 0043 GETMET R4 R1 K0 + 0x541A2600, // 0044 LDINT R6 9729 + 0x541DFFFD, // 0045 LDINT R7 -2 + 0x7C100600, // 0046 CALL R4 3 + 0x8C100300, // 0047 GETMET R4 R1 K0 + 0x88180504, // 0048 GETMBR R6 R2 K4 + 0x541E0003, // 0049 LDINT R7 4 + 0x7C100600, // 004A CALL R4 3 + 0x88100505, // 004B GETMBR R4 R2 K5 + 0x541600FE, // 004C LDINT R5 255 + 0x18100805, // 004D LE R4 R4 R5 + 0x78120008, // 004E JMPF R4 #0058 + 0x8C100300, // 004F GETMET R4 R1 K0 + 0x541A2401, // 0050 LDINT R6 9218 + 0x541DFFFD, // 0051 LDINT R7 -2 + 0x7C100600, // 0052 CALL R4 3 + 0x8C100300, // 0053 GETMET R4 R1 K0 + 0x88180505, // 0054 GETMBR R6 R2 K5 + 0x581C0001, // 0055 LDCONST R7 K1 + 0x7C100600, // 0056 CALL R4 3 + 0x70020014, // 0057 JMP #006D + 0x88100505, // 0058 GETMBR R4 R2 K5 + 0x5416FFFE, // 0059 LDINT R5 65535 + 0x18100805, // 005A LE R4 R4 R5 + 0x78120008, // 005B JMPF R4 #0065 + 0x8C100300, // 005C GETMET R4 R1 K0 + 0x541A2501, // 005D LDINT R6 9474 + 0x541DFFFD, // 005E LDINT R7 -2 + 0x7C100600, // 005F CALL R4 3 + 0x8C100300, // 0060 GETMET R4 R1 K0 + 0x88180505, // 0061 GETMBR R6 R2 K5 + 0x581C0003, // 0062 LDCONST R7 K3 + 0x7C100600, // 0063 CALL R4 3 + 0x70020007, // 0064 JMP #006D + 0x8C100300, // 0065 GETMET R4 R1 K0 + 0x541A2601, // 0066 LDINT R6 9730 + 0x541DFFFD, // 0067 LDINT R7 -2 + 0x7C100600, // 0068 CALL R4 3 + 0x8C100300, // 0069 GETMET R4 R1 K0 + 0x88180505, // 006A GETMBR R6 R2 K5 + 0x541E0003, // 006B LDINT R7 4 + 0x7C100600, // 006C CALL R4 3 + 0x8C100300, // 006D GETMET R4 R1 K0 + 0x541A0017, // 006E LDINT R6 24 + 0x581C0001, // 006F LDCONST R7 K1 + 0x7C100600, // 0070 CALL R4 3 + 0x4C100000, // 0071 LDNIL R4 + 0x1C100604, // 0072 EQ R4 R3 R4 + 0x78120016, // 0073 JMPF R4 #008B + 0x88100506, // 0074 GETMBR R4 R2 K6 + 0x4C140000, // 0075 LDNIL R5 + 0x1C140805, // 0076 EQ R5 R4 R5 + 0x78160001, // 0077 JMPF R5 #007A + 0xB8160E00, // 0078 GETNGBL R5 K7 + 0x88100B08, // 0079 GETMBR R4 R5 K8 + 0x8C140300, // 007A GETMET R5 R1 K0 + 0x541E3500, // 007B LDINT R7 13569 + 0x5421FFFD, // 007C LDINT R8 -2 + 0x7C140600, // 007D CALL R5 3 + 0x8C140300, // 007E GETMET R5 R1 K0 + 0x541E23FF, // 007F LDINT R7 9216 + 0x5421FFFD, // 0080 LDINT R8 -2 + 0x7C140600, // 0081 CALL R5 3 + 0x8C140300, // 0082 GETMET R5 R1 K0 + 0x881C0506, // 0083 GETMBR R7 R2 K6 + 0x58200001, // 0084 LDCONST R8 K1 + 0x7C140600, // 0085 CALL R5 3 + 0x8C140300, // 0086 GETMET R5 R1 K0 + 0x541E0017, // 0087 LDINT R7 24 + 0x58200001, // 0088 LDCONST R8 K1 + 0x7C140600, // 0089 CALL R5 3 + 0x70020003, // 008A JMP #008F + 0x900E1301, // 008B SETMBR R3 K9 K1 + 0x8C10070A, // 008C GETMET R4 R3 K10 + 0x5C180200, // 008D MOVE R6 R1 + 0x7C100400, // 008E CALL R4 2 + 0x8C100300, // 008F GETMET R4 R1 K0 + 0x541A1817, // 0090 LDINT R6 6168 + 0x541DFFFD, // 0091 LDINT R7 -2 + 0x7C100600, // 0092 CALL R4 3 + 0x80000000, // 0093 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expire_sendqueue +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(time_reached), + /* K4 */ be_nested_str_weak(expiration), + /* K5 */ be_nested_str_weak(reached_timeout), + /* K6 */ be_nested_str_weak(remove), + /* K7 */ be_const_int(1), + }), + be_str_weak(expire_sendqueue), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A000F, // 0005 JMPF R2 #0016 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x8C0C0703, // 0009 GETMET R3 R3 K3 + 0x88140504, // 000A GETMBR R5 R2 K4 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E0006, // 000C JMPF R3 #0014 + 0x8C0C0505, // 000D GETMET R3 R2 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C0706, // 0010 GETMET R3 R3 K6 + 0x5C140200, // 0011 MOVE R5 R1 + 0x7C0C0400, // 0012 CALL R3 2 + 0x70020000, // 0013 JMP #0015 + 0x00040307, // 0014 ADD R1 R1 K7 + 0x7001FFEA, // 0015 JMP #0001 + 0x4C080000, // 0016 LDNIL R2 + 0x80040400, // 0017 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_enqueued +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_enqueued, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(finish), + /* K3 */ be_nested_str_weak(ready), + /* K4 */ be_nested_str_weak(send_im), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), + /* K7 */ be_nested_str_weak(resp), + /* K8 */ be_nested_str_weak(exchange_id), + /* K9 */ be_nested_str_weak(remove), + /* K10 */ be_const_int(1), + }), + be_str_weak(send_enqueued), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0019, // 0005 JMPF R3 #0020 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x74120004, // 0009 JMPT R4 #000F + 0x88100703, // 000A GETMBR R4 R3 K3 + 0x78120002, // 000B JMPF R4 #000F + 0x8C100704, // 000C GETMET R4 R3 K4 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C100400, // 000E CALL R4 2 + 0x88100702, // 000F GETMBR R4 R3 K2 + 0x7812000C, // 0010 JMPF R4 #001E + 0xB8120A00, // 0011 GETNGBL R4 K5 + 0x60140008, // 0012 GETGBL R5 G8 + 0x88180707, // 0013 GETMBR R6 R3 K7 + 0x88180D08, // 0014 GETMBR R6 R6 K8 + 0x7C140200, // 0015 CALL R5 1 + 0x00160C05, // 0016 ADD R5 K6 R5 + 0x541A0003, // 0017 LDINT R6 4 + 0x7C100400, // 0018 CALL R4 2 + 0x88100101, // 0019 GETMBR R4 R0 K1 + 0x8C100909, // 001A GETMET R4 R4 K9 + 0x5C180400, // 001B MOVE R6 R2 + 0x7C100400, // 001C CALL R4 2 + 0x70020000, // 001D JMP #001F + 0x0008050A, // 001E ADD R2 R2 K10 + 0x7001FFE0, // 001F JMP #0001 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_write_request +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_write_request, /* name */ + be_nested_proto( + 21, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[41]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(WriteRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(Path), + /* K4 */ be_nested_str_weak(suppress_response), + /* K5 */ be_nested_str_weak(write_requests), + /* K6 */ be_nested_str_weak(WriteResponseMessage), + /* K7 */ be_nested_str_weak(write_responses), + /* K8 */ be_nested_str_weak(PathGenerator), + /* K9 */ be_nested_str_weak(device), + /* K10 */ be_nested_str_weak(path), + /* K11 */ be_nested_str_weak(data), + /* K12 */ be_nested_str_weak(copy), + /* K13 */ be_nested_str_weak(cluster), + /* K14 */ be_nested_str_weak(attribute), + /* K15 */ be_nested_str_weak(status), + /* K16 */ be_nested_str_weak(INVALID_ACTION), + /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), + /* K18 */ be_nested_str_weak(endpoint), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(get_attribute_name), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K25 */ be_nested_str_weak(_X20_X28), + /* K26 */ be_nested_str_weak(_X29), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(start), + /* K29 */ be_nested_str_weak(is_direct), + /* K30 */ be_nested_str_weak(next_attribute), + /* K31 */ be_nested_str_weak(msg), + /* K32 */ be_nested_str_weak(get_pi), + /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), + /* K34 */ be_nested_str_weak(write_attribute), + /* K35 */ be_nested_str_weak(session), + /* K36 */ be_nested_str_weak(SUCCESS), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_nested_str_weak(send_queue), + /* K39 */ be_nested_str_weak(push), + /* K40 */ be_nested_str_weak(IM_WriteResponse), + }), + be_str_weak(process_write_request), + &be_const_str_solidified, + ( &(const binstruction[145]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0xB8120000, // 0006 GETNGBL R4 K0 + 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x7C100200, // 0008 CALL R4 1 + 0x88140704, // 0009 GETMBR R5 R3 K4 + 0x88180705, // 000A GETMBR R6 R3 K5 + 0x4C1C0000, // 000B LDNIL R7 + 0x20180C07, // 000C NE R6 R6 R7 + 0x781A0080, // 000D JMPF R6 #008F + 0xB81A0000, // 000E GETNGBL R6 K0 + 0x8C180D06, // 000F GETMET R6 R6 K6 + 0x7C180200, // 0010 CALL R6 1 + 0x601C0012, // 0011 GETGBL R7 G18 + 0x7C1C0000, // 0012 CALL R7 0 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0xB81E0000, // 0014 GETNGBL R7 K0 + 0x8C1C0F08, // 0015 GETMET R7 R7 K8 + 0x88240109, // 0016 GETMBR R9 R0 K9 + 0x7C1C0400, // 0017 CALL R7 2 + 0x60200010, // 0018 GETGBL R8 G16 + 0x88240705, // 0019 GETMBR R9 R3 K5 + 0x7C200200, // 001A CALL R8 1 + 0xA8020065, // 001B EXBLK 0 #0082 + 0x5C241000, // 001C MOVE R9 R8 + 0x7C240000, // 001D CALL R9 0 + 0x8828130A, // 001E GETMBR R10 R9 K10 + 0x882C130B, // 001F GETMBR R11 R9 K11 + 0x8C30090C, // 0020 GETMET R12 R4 K12 + 0x5C381400, // 0021 MOVE R14 R10 + 0x7C300400, // 0022 CALL R12 2 + 0x8830150D, // 0023 GETMBR R12 R10 K13 + 0x4C340000, // 0024 LDNIL R13 + 0x1C30180D, // 0025 EQ R12 R12 R13 + 0x74320003, // 0026 JMPT R12 #002B + 0x8830150E, // 0027 GETMBR R12 R10 K14 + 0x4C340000, // 0028 LDNIL R13 + 0x1C30180D, // 0029 EQ R12 R12 R13 + 0x78320008, // 002A JMPF R12 #0034 + 0xB8320000, // 002B GETNGBL R12 K0 + 0x88301910, // 002C GETMBR R12 R12 K16 + 0x90121E0C, // 002D SETMBR R4 K15 R12 + 0x8C300111, // 002E GETMET R12 R0 K17 + 0x5C380C00, // 002F MOVE R14 R6 + 0x5C3C0800, // 0030 MOVE R15 R4 + 0x4C400000, // 0031 LDNIL R16 + 0x7C300800, // 0032 CALL R12 4 + 0x7001FFE7, // 0033 JMP #001C + 0x88301512, // 0034 GETMBR R12 R10 K18 + 0x4C340000, // 0035 LDNIL R13 + 0x1C30180D, // 0036 EQ R12 R12 R13 + 0x78320016, // 0037 JMPF R12 #004F + 0xB8322600, // 0038 GETNGBL R12 K19 + 0x8C301914, // 0039 GETMET R12 R12 K20 + 0x58380015, // 003A LDCONST R14 K21 + 0x7C300400, // 003B CALL R12 2 + 0x78320011, // 003C JMPF R12 #004F + 0xB8320000, // 003D GETNGBL R12 K0 + 0x8C301916, // 003E GETMET R12 R12 K22 + 0x8838150D, // 003F GETMBR R14 R10 K13 + 0x883C150E, // 0040 GETMBR R15 R10 K14 + 0x7C300600, // 0041 CALL R12 3 + 0xB8362E00, // 0042 GETNGBL R13 K23 + 0x60380008, // 0043 GETGBL R14 G8 + 0x5C3C0800, // 0044 MOVE R15 R4 + 0x7C380200, // 0045 CALL R14 1 + 0x003A300E, // 0046 ADD R14 K24 R14 + 0x78320002, // 0047 JMPF R12 #004B + 0x003E320C, // 0048 ADD R15 K25 R12 + 0x003C1F1A, // 0049 ADD R15 R15 K26 + 0x70020000, // 004A JMP #004C + 0x583C001B, // 004B LDCONST R15 K27 + 0x00381C0F, // 004C ADD R14 R14 R15 + 0x583C0015, // 004D LDCONST R15 K21 + 0x7C340400, // 004E CALL R13 2 + 0x8C300F1C, // 004F GETMET R12 R7 K28 + 0x88381512, // 0050 GETMBR R14 R10 K18 + 0x883C150D, // 0051 GETMBR R15 R10 K13 + 0x8840150E, // 0052 GETMBR R16 R10 K14 + 0x7C300800, // 0053 CALL R12 4 + 0x8C300F1D, // 0054 GETMET R12 R7 K29 + 0x7C300200, // 0055 CALL R12 1 + 0x4C340000, // 0056 LDNIL R13 + 0x8C380F1E, // 0057 GETMET R14 R7 K30 + 0x7C380200, // 0058 CALL R14 1 + 0x5C341C00, // 0059 MOVE R13 R14 + 0x783A0025, // 005A JMPF R14 #0081 + 0x90363E01, // 005B SETMBR R13 K31 R1 + 0x88381B0F, // 005C GETMBR R14 R13 K15 + 0x4C3C0000, // 005D LDNIL R15 + 0x20381C0F, // 005E NE R14 R14 R15 + 0x783A0007, // 005F JMPF R14 #0068 + 0x4C380000, // 0060 LDNIL R14 + 0x90361E0E, // 0061 SETMBR R13 K15 R14 + 0x8C380111, // 0062 GETMET R14 R0 K17 + 0x5C400C00, // 0063 MOVE R16 R6 + 0x5C441A00, // 0064 MOVE R17 R13 + 0x5C481600, // 0065 MOVE R18 R11 + 0x7C380800, // 0066 CALL R14 4 + 0x70020017, // 0067 JMP #0080 + 0x8C380F20, // 0068 GETMET R14 R7 K32 + 0x7C380200, // 0069 CALL R14 1 + 0xB83E0000, // 006A GETNGBL R15 K0 + 0x883C1F21, // 006B GETMBR R15 R15 K33 + 0x90361E0F, // 006C SETMBR R13 K15 R15 + 0x4C3C0000, // 006D LDNIL R15 + 0x203C1C0F, // 006E NE R15 R14 R15 + 0x783E0005, // 006F JMPF R15 #0076 + 0x8C3C1D22, // 0070 GETMET R15 R14 K34 + 0x88440323, // 0071 GETMBR R17 R1 K35 + 0x5C481A00, // 0072 MOVE R18 R13 + 0x5C4C1600, // 0073 MOVE R19 R11 + 0x7C3C0800, // 0074 CALL R15 4 + 0x70020000, // 0075 JMP #0077 + 0x4C3C0000, // 0076 LDNIL R15 + 0x783E0002, // 0077 JMPF R15 #007B + 0xB8420000, // 0078 GETNGBL R16 K0 + 0x88402124, // 0079 GETMBR R16 R16 K36 + 0x90361E10, // 007A SETMBR R13 K15 R16 + 0x8C400111, // 007B GETMET R16 R0 K17 + 0x5C480C00, // 007C MOVE R18 R6 + 0x5C4C1A00, // 007D MOVE R19 R13 + 0x5C501600, // 007E MOVE R20 R11 + 0x7C400800, // 007F CALL R16 4 + 0x7001FFD5, // 0080 JMP #0057 + 0x7001FF99, // 0081 JMP #001C + 0x58200025, // 0082 LDCONST R8 K37 + 0xAC200200, // 0083 CATCH R8 1 0 + 0xB0080000, // 0084 RAISE 2 R0 R0 + 0x5C200A00, // 0085 MOVE R8 R5 + 0x74220007, // 0086 JMPT R8 #008F + 0x88200126, // 0087 GETMBR R8 R0 K38 + 0x8C201127, // 0088 GETMET R8 R8 K39 + 0xB82A0000, // 0089 GETNGBL R10 K0 + 0x8C281528, // 008A GETMET R10 R10 K40 + 0x5C300200, // 008B MOVE R12 R1 + 0x5C340C00, // 008C MOVE R13 R6 + 0x7C280600, // 008D CALL R10 3 + 0x7C200400, // 008E CALL R8 2 + 0x50180200, // 008F LDBOOL R6 1 0 + 0x80040C00, // 0090 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_read_request_solo ********************************************************************/ @@ -3136,53 +2163,112 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /******************************************************************** -** Solidified function: process_read_request_pull +** Solidified function: send_subscribe_update ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ +be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 13, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(read_request_start_pull), - /* K4 */ be_nested_str_weak(ReadRequestMessage), - /* K5 */ be_nested_str_weak(from_TLV), - /* K6 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K7 */ be_nested_str_weak(send_report_data_pull), + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(ReadRequestMessage), + /* K3 */ be_nested_str_weak(fabric_filtered), + /* K4 */ be_nested_str_weak(attributes_requests), + /* K5 */ be_nested_str_weak(updates), + /* K6 */ be_nested_str_weak(AttributePathIB), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K14 */ be_nested_str_weak(local_session_id), + /* K15 */ be_nested_str_weak(subscription_id), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(is_keep_alive), + /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K19 */ be_nested_str_weak(update_event_generator_array), + /* K20 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), + /* K21 */ be_nested_str_weak(_message_handler), + /* K22 */ be_nested_str_weak(send_queue), + /* K23 */ be_nested_str_weak(send_enqueued), }), - be_str_weak(process_read_request_pull), + be_str_weak(send_subscribe_update), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 + ( &(const binstruction[64]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0xB80E0000, // 0005 GETNGBL R3 K0 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0705, // 0008 GETMET R3 R3 K5 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C100106, // 000B GETMET R4 R0 K6 - 0x5C180600, // 000C MOVE R6 R3 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x7C100600, // 000E CALL R4 3 - 0x8C140107, // 000F GETMET R5 R0 K7 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x5C200800, // 0011 MOVE R8 R4 - 0x7C140600, // 0012 CALL R5 3 - 0x50140200, // 0013 LDBOOL R5 1 0 - 0x80040A00, // 0014 RET 1 R5 + 0x7C0C0200, // 0003 CALL R3 1 + 0x50100000, // 0004 LDBOOL R4 0 0 + 0x900E0604, // 0005 SETMBR R3 K3 R4 + 0x60100012, // 0006 GETGBL R4 G18 + 0x7C100000, // 0007 CALL R4 0 + 0x900E0804, // 0008 SETMBR R3 K4 R4 + 0x60100010, // 0009 GETGBL R4 G16 + 0x88140305, // 000A GETMBR R5 R1 K5 + 0x7C100200, // 000B CALL R4 1 + 0xA802000F, // 000C EXBLK 0 #001D + 0x5C140800, // 000D MOVE R5 R4 + 0x7C140000, // 000E CALL R5 0 + 0xB81A0200, // 000F GETNGBL R6 K1 + 0x8C180D06, // 0010 GETMET R6 R6 K6 + 0x7C180200, // 0011 CALL R6 1 + 0x881C0B07, // 0012 GETMBR R7 R5 K7 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0x881C0B08, // 0014 GETMBR R7 R5 K8 + 0x901A1007, // 0015 SETMBR R6 K8 R7 + 0x881C0B09, // 0016 GETMBR R7 R5 K9 + 0x901A1207, // 0017 SETMBR R6 K9 R7 + 0x881C0704, // 0018 GETMBR R7 R3 K4 + 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 + 0x5C240C00, // 001A MOVE R9 R6 + 0x7C1C0400, // 001B CALL R7 2 + 0x7001FFEF, // 001C JMP #000D + 0x5810000B, // 001D LDCONST R4 K11 + 0xAC100200, // 001E CATCH R4 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0xB8121800, // 0020 GETNGBL R4 K12 + 0x60140018, // 0021 GETGBL R5 G24 + 0x5818000D, // 0022 LDCONST R6 K13 + 0x881C050E, // 0023 GETMBR R7 R2 K14 + 0x8820030F, // 0024 GETMBR R8 R1 K15 + 0x7C140600, // 0025 CALL R5 3 + 0x58180010, // 0026 LDCONST R6 K16 + 0x7C100400, // 0027 CALL R4 2 + 0x50100000, // 0028 LDBOOL R4 0 0 + 0x90062204, // 0029 SETMBR R1 K17 R4 + 0x8C100112, // 002A GETMET R4 R0 K18 + 0x5C180600, // 002B MOVE R6 R3 + 0x4C1C0000, // 002C LDNIL R7 + 0x7C100600, // 002D CALL R4 3 + 0x8C140313, // 002E GETMET R5 R1 K19 + 0x7C140200, // 002F CALL R5 1 + 0xB81A0200, // 0030 GETNGBL R6 K1 + 0x8C180D14, // 0031 GETMET R6 R6 K20 + 0x88200515, // 0032 GETMBR R8 R2 K21 + 0x5C240400, // 0033 MOVE R9 R2 + 0x5C280800, // 0034 MOVE R10 R4 + 0x5C2C0A00, // 0035 MOVE R11 R5 + 0x5C300200, // 0036 MOVE R12 R1 + 0x7C180C00, // 0037 CALL R6 6 + 0x881C0116, // 0038 GETMBR R7 R0 K22 + 0x8C1C0F0A, // 0039 GETMET R7 R7 K10 + 0x5C240C00, // 003A MOVE R9 R6 + 0x7C1C0400, // 003B CALL R7 2 + 0x8C1C0117, // 003C GETMET R7 R0 K23 + 0x88240515, // 003D GETMBR R9 R2 K21 + 0x7C1C0400, // 003E CALL R7 2 + 0x80000000, // 003F RET 0 }) ) ); @@ -3190,10 +2276,521 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ /******************************************************************** -** Solidified function: invokeresponse2raw +** Solidified function: send_subscribe_heartbeat ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ +be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(loglevel), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(subscription_id), + /* K8 */ be_nested_str_weak(is_keep_alive), + /* K9 */ be_nested_str_weak(send_queue), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(matter), + /* K12 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K13 */ be_nested_str_weak(_message_handler), + /* K14 */ be_nested_str_weak(send_enqueued), + }), + be_str_weak(send_subscribe_heartbeat), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0x780E0007, // 0005 JMPF R3 #000E + 0xB80E0800, // 0006 GETNGBL R3 K4 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140005, // 0008 LDCONST R5 K5 + 0x88180506, // 0009 GETMBR R6 R2 K6 + 0x881C0307, // 000A GETMBR R7 R1 K7 + 0x7C100600, // 000B CALL R4 3 + 0x58140003, // 000C LDCONST R5 K3 + 0x7C0C0400, // 000D CALL R3 2 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x90061003, // 000F SETMBR R1 K8 R3 + 0x880C0109, // 0010 GETMBR R3 R0 K9 + 0x8C0C070A, // 0011 GETMET R3 R3 K10 + 0xB8161600, // 0012 GETNGBL R5 K11 + 0x8C140B0C, // 0013 GETMET R5 R5 K12 + 0x881C050D, // 0014 GETMBR R7 R2 K13 + 0x5C200400, // 0015 MOVE R8 R2 + 0x5C240200, // 0016 MOVE R9 R1 + 0x7C140800, // 0017 CALL R5 4 + 0x7C0C0400, // 0018 CALL R3 2 + 0x8C0C010E, // 0019 GETMET R3 R0 K14 + 0x8814050D, // 001A GETMBR R5 R2 K13 + 0x7C0C0400, // 001B CALL R3 2 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_every_50ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(subs_shop), + /* K1 */ be_nested_str_weak(every_50ms), + }), + be_str_weak(every_50ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_write_response +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_write_response, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(WriteResponseMessage), + /* K2 */ be_nested_str_weak(from_TLV), + }), + be_str_weak(process_write_response), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(subs_shop), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(IM_Subscription_Shop), + /* K5 */ be_nested_str_weak(read_request_solo), + /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), + /* K9 */ be_nested_str_weak(tlv_solo), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(Matter_TLV_item), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0xB80A0600, // 0004 GETNGBL R2 K3 + 0x8C080504, // 0005 GETMET R2 R2 K4 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0x90020402, // 0008 SETMBR R0 K2 R2 + 0xB80A0600, // 0009 GETNGBL R2 K3 + 0x8C080506, // 000A GETMET R2 R2 K6 + 0x7C080200, // 000B CALL R2 1 + 0x90020A02, // 000C SETMBR R0 K5 R2 + 0xB80A0600, // 000D GETNGBL R2 K3 + 0x8C080508, // 000E GETMET R2 R2 K8 + 0x7C080200, // 000F CALL R2 1 + 0x90020E02, // 0010 SETMBR R0 K7 R2 + 0xB80A0600, // 0011 GETNGBL R2 K3 + 0x8808050A, // 0012 GETMBR R2 R2 K10 + 0x8C08050B, // 0013 GETMET R2 R2 K11 + 0x7C080200, // 0014 CALL R2 1 + 0x90021202, // 0015 SETMBR R0 K9 R2 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_ack_now +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_ack_now, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(_message_handler), + /* K2 */ be_nested_str_weak(send_encrypted_ack), + }), + be_str_weak(send_ack_now), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80000400, // 0003 RET 0 + 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x88080501, // 0005 GETMBR R2 R2 K1 + 0x8C080502, // 0006 GETMET R2 R2 K2 + 0x5C100200, // 0007 MOVE R4 R1 + 0x50140000, // 0008 LDBOOL R5 0 0 + 0x7C080600, // 0009 CALL R2 3 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_single_attribute_to_bytes +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ + be_nested_proto( + 21, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(get_attribute_name), + /* K6 */ be_nested_str_weak(cluster), + /* K7 */ be_nested_str_weak(attribute), + /* K8 */ be_nested_str_weak(_X20_X28), + /* K9 */ be_nested_str_weak(_X29), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(status), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(tlv_solo), + /* K14 */ be_nested_str_weak(to_str_val), + /* K15 */ be_nested_str_weak(is_list), + /* K16 */ be_nested_str_weak(is_array), + /* K17 */ be_nested_str_weak(encode_len), + /* K18 */ be_nested_str_weak(IM_ReportData_Pull), + /* K19 */ be_nested_str_weak(MAX_MESSAGE), + /* K20 */ be_nested_str_weak(Matter_TLV_array), + /* K21 */ be_nested_str_weak(attributedata2raw), + /* K22 */ be_nested_str_weak(push), + /* K23 */ be_nested_str_weak(val), + /* K24 */ be_nested_str_weak(stop_iteration), + /* K25 */ be_nested_str_weak(log), + /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K27 */ be_nested_str_weak(local_session_id), + /* K28 */ be_nested_str_weak(attributestatus2raw), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + }), + be_str_weak(read_single_attribute_to_bytes), + &be_const_str_solidified, + ( &(const binstruction[165]) { /* code */ + 0xB8160000, // 0000 GETNGBL R5 K0 + 0x88140B01, // 0001 GETMBR R5 R5 K1 + 0x4C180000, // 0002 LDNIL R6 + 0xB81E0400, // 0003 GETNGBL R7 K2 + 0x8C1C0F03, // 0004 GETMET R7 R7 K3 + 0x58240004, // 0005 LDCONST R9 K4 + 0x7C1C0400, // 0006 CALL R7 2 + 0x781E000B, // 0007 JMPF R7 #0014 + 0xB81E0000, // 0008 GETNGBL R7 K0 + 0x8C1C0F05, // 0009 GETMET R7 R7 K5 + 0x88240506, // 000A GETMBR R9 R2 K6 + 0x88280507, // 000B GETMBR R10 R2 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x5C180E00, // 000D MOVE R6 R7 + 0x781A0002, // 000E JMPF R6 #0012 + 0x001E1006, // 000F ADD R7 K8 R6 + 0x001C0F09, // 0010 ADD R7 R7 K9 + 0x70020000, // 0011 JMP #0013 + 0x581C000A, // 0012 LDCONST R7 K10 + 0x5C180E00, // 0013 MOVE R6 R7 + 0x881C050B, // 0014 GETMBR R7 R2 K11 + 0x4C200000, // 0015 LDNIL R8 + 0x201C0E08, // 0016 NE R7 R7 R8 + 0x4C200000, // 0017 LDNIL R8 + 0x4C240000, // 0018 LDNIL R9 + 0x4C280000, // 0019 LDNIL R10 + 0x2028020A, // 001A NE R10 R1 R10 + 0x782A0005, // 001B JMPF R10 #0022 + 0x8C28030C, // 001C GETMET R10 R1 K12 + 0x5C300600, // 001D MOVE R12 R3 + 0x5C340400, // 001E MOVE R13 R2 + 0x8838010D, // 001F GETMBR R14 R0 K13 + 0x7C280800, // 0020 CALL R10 4 + 0x5C201400, // 0021 MOVE R8 R10 + 0x4C280000, // 0022 LDNIL R10 + 0x2028100A, // 0023 NE R10 R8 R10 + 0x782A0057, // 0024 JMPF R10 #007D + 0x5828000A, // 0025 LDCONST R10 K10 + 0xB82E0400, // 0026 GETNGBL R11 K2 + 0x8C2C1703, // 0027 GETMET R11 R11 K3 + 0x58340004, // 0028 LDCONST R13 K4 + 0x7C2C0400, // 0029 CALL R11 2 + 0x782E0003, // 002A JMPF R11 #002F + 0x78120002, // 002B JMPF R4 #002F + 0x8C2C110E, // 002C GETMET R11 R8 K14 + 0x7C2C0200, // 002D CALL R11 1 + 0x5C281600, // 002E MOVE R10 R11 + 0x882C110F, // 002F GETMBR R11 R8 K15 + 0x742E0001, // 0030 JMPT R11 #0033 + 0x882C1110, // 0031 GETMBR R11 R8 K16 + 0x782E002F, // 0032 JMPF R11 #0063 + 0x8C2C1111, // 0033 GETMET R11 R8 K17 + 0x7C2C0200, // 0034 CALL R11 1 + 0xB8320000, // 0035 GETNGBL R12 K0 + 0x88301912, // 0036 GETMBR R12 R12 K18 + 0x88301913, // 0037 GETMBR R12 R12 K19 + 0x242C160C, // 0038 GT R11 R11 R12 + 0x782E0028, // 0039 JMPF R11 #0063 + 0x602C0012, // 003A GETGBL R11 G18 + 0x7C2C0000, // 003B CALL R11 0 + 0x5C241600, // 003C MOVE R9 R11 + 0x602C0015, // 003D GETGBL R11 G21 + 0x5432002F, // 003E LDINT R12 48 + 0x7C2C0200, // 003F CALL R11 1 + 0x8C300B14, // 0040 GETMET R12 R5 K20 + 0x7C300200, // 0041 CALL R12 1 + 0x8C340115, // 0042 GETMET R13 R0 K21 + 0x5C3C1600, // 0043 MOVE R15 R11 + 0x5C400400, // 0044 MOVE R16 R2 + 0x5C441800, // 0045 MOVE R17 R12 + 0x50480000, // 0046 LDBOOL R18 0 0 + 0x7C340A00, // 0047 CALL R13 5 + 0x8C341316, // 0048 GETMET R13 R9 K22 + 0x5C3C1600, // 0049 MOVE R15 R11 + 0x7C340400, // 004A CALL R13 2 + 0x60340010, // 004B GETGBL R13 G16 + 0x88381117, // 004C GETMBR R14 R8 K23 + 0x7C340200, // 004D CALL R13 1 + 0xA802000F, // 004E EXBLK 0 #005F + 0x5C381A00, // 004F MOVE R14 R13 + 0x7C380000, // 0050 CALL R14 0 + 0x603C0015, // 0051 GETGBL R15 G21 + 0x5442002F, // 0052 LDINT R16 48 + 0x7C3C0200, // 0053 CALL R15 1 + 0x5C2C1E00, // 0054 MOVE R11 R15 + 0x8C3C0115, // 0055 GETMET R15 R0 K21 + 0x5C441600, // 0056 MOVE R17 R11 + 0x5C480400, // 0057 MOVE R18 R2 + 0x5C4C1C00, // 0058 MOVE R19 R14 + 0x50500200, // 0059 LDBOOL R20 1 0 + 0x7C3C0A00, // 005A CALL R15 5 + 0x8C3C1316, // 005B GETMET R15 R9 K22 + 0x5C441600, // 005C MOVE R17 R11 + 0x7C3C0400, // 005D CALL R15 2 + 0x7001FFEF, // 005E JMP #004F + 0x58340018, // 005F LDCONST R13 K24 + 0xAC340200, // 0060 CATCH R13 1 0 + 0xB0080000, // 0061 RAISE 2 R0 R0 + 0x70020008, // 0062 JMP #006C + 0x602C0015, // 0063 GETGBL R11 G21 + 0x5432002F, // 0064 LDINT R12 48 + 0x7C2C0200, // 0065 CALL R11 1 + 0x5C241600, // 0066 MOVE R9 R11 + 0x8C2C0115, // 0067 GETMET R11 R0 K21 + 0x5C341200, // 0068 MOVE R13 R9 + 0x5C380400, // 0069 MOVE R14 R2 + 0x5C3C1000, // 006A MOVE R15 R8 + 0x7C2C0800, // 006B CALL R11 4 + 0xB82E0400, // 006C GETNGBL R11 K2 + 0x8C2C1703, // 006D GETMET R11 R11 K3 + 0x58340004, // 006E LDCONST R13 K4 + 0x7C2C0400, // 006F CALL R11 2 + 0x782E000A, // 0070 JMPF R11 #007C + 0x78120009, // 0071 JMPF R4 #007C + 0xB82E3200, // 0072 GETNGBL R11 K25 + 0x60300018, // 0073 GETGBL R12 G24 + 0x5834001A, // 0074 LDCONST R13 K26 + 0x8838071B, // 0075 GETMBR R14 R3 K27 + 0x5C3C0400, // 0076 MOVE R15 R2 + 0x5C400C00, // 0077 MOVE R16 R6 + 0x5C441400, // 0078 MOVE R17 R10 + 0x7C300A00, // 0079 CALL R12 5 + 0x58340004, // 007A LDCONST R13 K4 + 0x7C2C0400, // 007B CALL R11 2 + 0x70020026, // 007C JMP #00A4 + 0x8828050B, // 007D GETMBR R10 R2 K11 + 0x4C2C0000, // 007E LDNIL R11 + 0x2028140B, // 007F NE R10 R10 R11 + 0x782A0022, // 0080 JMPF R10 #00A4 + 0x781E0021, // 0081 JMPF R7 #00A4 + 0x60280015, // 0082 GETGBL R10 G21 + 0x542E002F, // 0083 LDINT R11 48 + 0x7C280200, // 0084 CALL R10 1 + 0x5C241400, // 0085 MOVE R9 R10 + 0x8C28011C, // 0086 GETMET R10 R0 K28 + 0x5C301200, // 0087 MOVE R12 R9 + 0x5C340400, // 0088 MOVE R13 R2 + 0x8838050B, // 0089 GETMBR R14 R2 K11 + 0x7C280800, // 008A CALL R10 4 + 0xB82A0400, // 008B GETNGBL R10 K2 + 0x8C281503, // 008C GETMET R10 R10 K3 + 0x58300004, // 008D LDCONST R12 K4 + 0x7C280400, // 008E CALL R10 2 + 0x782A0013, // 008F JMPF R10 #00A4 + 0xB82A3200, // 0090 GETNGBL R10 K25 + 0x602C0018, // 0091 GETGBL R11 G24 + 0x5830001D, // 0092 LDCONST R12 K29 + 0x8834071B, // 0093 GETMBR R13 R3 K27 + 0x60380008, // 0094 GETGBL R14 G8 + 0x5C3C0400, // 0095 MOVE R15 R2 + 0x7C380200, // 0096 CALL R14 1 + 0x5C3C0C00, // 0097 MOVE R15 R6 + 0x8840050B, // 0098 GETMBR R16 R2 K11 + 0x8844050B, // 0099 GETMBR R17 R2 K11 + 0xB84A0000, // 009A GETNGBL R18 K0 + 0x8848251E, // 009B GETMBR R18 R18 K30 + 0x1C442212, // 009C EQ R17 R17 R18 + 0x78460001, // 009D JMPF R17 #00A0 + 0x5844001E, // 009E LDCONST R17 K30 + 0x70020000, // 009F JMP #00A1 + 0x5844000A, // 00A0 LDCONST R17 K10 + 0x7C2C0C00, // 00A1 CALL R11 6 + 0x58300004, // 00A2 LDCONST R12 K4 + 0x7C280400, // 00A3 CALL R10 2 + 0x80041200, // 00A4 RET 1 R9 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attributedata2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_attributedata2raw, /* name */ + be_nested_proto( + 11, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(355795236), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(path2raw), + /* K4 */ be_nested_str_weak(tag_sub), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(attributedata2raw), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x581C0001, // 0001 LDCONST R7 K1 + 0x5421FFFB, // 0002 LDINT R8 -4 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x581C0002, // 0005 LDCONST R7 K2 + 0x5421FFFD, // 0006 LDINT R8 -2 + 0x7C140600, // 0007 CALL R5 3 + 0x8C140103, // 0008 GETMET R5 R0 K3 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x58240002, // 000B LDCONST R9 K2 + 0x5C280800, // 000C MOVE R10 R4 + 0x7C140A00, // 000D CALL R5 5 + 0x900E0905, // 000E SETMBR R3 K4 K5 + 0x8C140706, // 000F GETMET R5 R3 K6 + 0x5C1C0200, // 0010 MOVE R7 R1 + 0x7C140400, // 0011 CALL R5 2 + 0x8C140300, // 0012 GETMET R5 R1 K0 + 0x541E1817, // 0013 LDINT R7 6168 + 0x5421FFFD, // 0014 LDINT R8 -2 + 0x7C140600, // 0015 CALL R5 3 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attributestatus2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ @@ -3203,170 +2800,64 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(add), /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(command), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(SUCCESS), - /* K9 */ be_nested_str_weak(tag_sub), - /* K10 */ be_nested_str_weak(tlv2raw), + /* K2 */ be_nested_str_weak(path2raw), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_const_int(2), }), - be_str_weak(invokeresponse2raw), + be_str_weak(attributestatus2raw), &be_const_str_solidified, - ( &(const binstruction[148]) { /* code */ + ( &(const binstruction[47]) { /* code */ 0x8C100300, // 0000 GETMET R4 R1 K0 0x541A0014, // 0001 LDINT R6 21 0x581C0001, // 0002 LDCONST R7 K1 0x7C100600, // 0003 CALL R4 3 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120004, // 0006 JMPF R4 #000C - 0x8C100300, // 0007 GETMET R4 R1 K0 - 0x541A3500, // 0008 LDINT R6 13569 - 0x541DFFFD, // 0009 LDINT R7 -2 - 0x7C100600, // 000A CALL R4 3 - 0x70020003, // 000B JMP #0010 - 0x8C100300, // 000C GETMET R4 R1 K0 - 0x541A34FF, // 000D LDINT R6 13568 - 0x541DFFFD, // 000E LDINT R7 -2 - 0x7C100600, // 000F CALL R4 3 - 0x8C100300, // 0010 GETMET R4 R1 K0 - 0x541A36FF, // 0011 LDINT R6 14080 - 0x541DFFFD, // 0012 LDINT R7 -2 - 0x7C100600, // 0013 CALL R4 3 - 0x88100502, // 0014 GETMBR R4 R2 K2 - 0x541600FE, // 0015 LDINT R5 255 - 0x18100805, // 0016 LE R4 R4 R5 - 0x78120008, // 0017 JMPF R4 #0021 - 0x8C100300, // 0018 GETMET R4 R1 K0 - 0x541A23FF, // 0019 LDINT R6 9216 - 0x541DFFFD, // 001A LDINT R7 -2 - 0x7C100600, // 001B CALL R4 3 - 0x8C100300, // 001C GETMET R4 R1 K0 - 0x88180502, // 001D GETMBR R6 R2 K2 - 0x581C0001, // 001E LDCONST R7 K1 - 0x7C100600, // 001F CALL R4 3 - 0x70020007, // 0020 JMP #0029 - 0x8C100300, // 0021 GETMET R4 R1 K0 - 0x541A24FF, // 0022 LDINT R6 9472 - 0x541DFFFD, // 0023 LDINT R7 -2 - 0x7C100600, // 0024 CALL R4 3 - 0x8C100300, // 0025 GETMET R4 R1 K0 - 0x88180502, // 0026 GETMBR R6 R2 K2 - 0x581C0003, // 0027 LDCONST R7 K3 - 0x7C100600, // 0028 CALL R4 3 - 0x88100504, // 0029 GETMBR R4 R2 K4 - 0x541600FE, // 002A LDINT R5 255 - 0x18100805, // 002B LE R4 R4 R5 - 0x78120008, // 002C JMPF R4 #0036 - 0x8C100300, // 002D GETMET R4 R1 K0 - 0x541A2400, // 002E LDINT R6 9217 - 0x541DFFFD, // 002F LDINT R7 -2 - 0x7C100600, // 0030 CALL R4 3 - 0x8C100300, // 0031 GETMET R4 R1 K0 - 0x88180504, // 0032 GETMBR R6 R2 K4 - 0x581C0001, // 0033 LDCONST R7 K1 - 0x7C100600, // 0034 CALL R4 3 - 0x70020014, // 0035 JMP #004B - 0x88100504, // 0036 GETMBR R4 R2 K4 - 0x5416FFFE, // 0037 LDINT R5 65535 - 0x18100805, // 0038 LE R4 R4 R5 - 0x78120008, // 0039 JMPF R4 #0043 - 0x8C100300, // 003A GETMET R4 R1 K0 - 0x541A2500, // 003B LDINT R6 9473 - 0x541DFFFD, // 003C LDINT R7 -2 - 0x7C100600, // 003D CALL R4 3 - 0x8C100300, // 003E GETMET R4 R1 K0 - 0x88180504, // 003F GETMBR R6 R2 K4 - 0x581C0003, // 0040 LDCONST R7 K3 - 0x7C100600, // 0041 CALL R4 3 - 0x70020007, // 0042 JMP #004B - 0x8C100300, // 0043 GETMET R4 R1 K0 - 0x541A2600, // 0044 LDINT R6 9729 - 0x541DFFFD, // 0045 LDINT R7 -2 - 0x7C100600, // 0046 CALL R4 3 - 0x8C100300, // 0047 GETMET R4 R1 K0 - 0x88180504, // 0048 GETMBR R6 R2 K4 - 0x541E0003, // 0049 LDINT R7 4 - 0x7C100600, // 004A CALL R4 3 - 0x88100505, // 004B GETMBR R4 R2 K5 - 0x541600FE, // 004C LDINT R5 255 - 0x18100805, // 004D LE R4 R4 R5 - 0x78120008, // 004E JMPF R4 #0058 - 0x8C100300, // 004F GETMET R4 R1 K0 - 0x541A2401, // 0050 LDINT R6 9218 - 0x541DFFFD, // 0051 LDINT R7 -2 - 0x7C100600, // 0052 CALL R4 3 - 0x8C100300, // 0053 GETMET R4 R1 K0 - 0x88180505, // 0054 GETMBR R6 R2 K5 - 0x581C0001, // 0055 LDCONST R7 K1 - 0x7C100600, // 0056 CALL R4 3 - 0x70020014, // 0057 JMP #006D - 0x88100505, // 0058 GETMBR R4 R2 K5 - 0x5416FFFE, // 0059 LDINT R5 65535 - 0x18100805, // 005A LE R4 R4 R5 - 0x78120008, // 005B JMPF R4 #0065 - 0x8C100300, // 005C GETMET R4 R1 K0 - 0x541A2501, // 005D LDINT R6 9474 - 0x541DFFFD, // 005E LDINT R7 -2 - 0x7C100600, // 005F CALL R4 3 - 0x8C100300, // 0060 GETMET R4 R1 K0 - 0x88180505, // 0061 GETMBR R6 R2 K5 - 0x581C0003, // 0062 LDCONST R7 K3 - 0x7C100600, // 0063 CALL R4 3 - 0x70020007, // 0064 JMP #006D - 0x8C100300, // 0065 GETMET R4 R1 K0 - 0x541A2601, // 0066 LDINT R6 9730 - 0x541DFFFD, // 0067 LDINT R7 -2 - 0x7C100600, // 0068 CALL R4 3 - 0x8C100300, // 0069 GETMET R4 R1 K0 - 0x88180505, // 006A GETMBR R6 R2 K5 - 0x541E0003, // 006B LDINT R7 4 - 0x7C100600, // 006C CALL R4 3 - 0x8C100300, // 006D GETMET R4 R1 K0 - 0x541A0017, // 006E LDINT R6 24 - 0x581C0001, // 006F LDCONST R7 K1 - 0x7C100600, // 0070 CALL R4 3 - 0x4C100000, // 0071 LDNIL R4 - 0x1C100604, // 0072 EQ R4 R3 R4 - 0x78120016, // 0073 JMPF R4 #008B - 0x88100506, // 0074 GETMBR R4 R2 K6 - 0x4C140000, // 0075 LDNIL R5 - 0x1C140805, // 0076 EQ R5 R4 R5 - 0x78160001, // 0077 JMPF R5 #007A - 0xB8160E00, // 0078 GETNGBL R5 K7 - 0x88100B08, // 0079 GETMBR R4 R5 K8 - 0x8C140300, // 007A GETMET R5 R1 K0 - 0x541E3500, // 007B LDINT R7 13569 - 0x5421FFFD, // 007C LDINT R8 -2 - 0x7C140600, // 007D CALL R5 3 - 0x8C140300, // 007E GETMET R5 R1 K0 - 0x541E23FF, // 007F LDINT R7 9216 - 0x5421FFFD, // 0080 LDINT R8 -2 - 0x7C140600, // 0081 CALL R5 3 - 0x8C140300, // 0082 GETMET R5 R1 K0 - 0x881C0506, // 0083 GETMBR R7 R2 K6 - 0x58200001, // 0084 LDCONST R8 K1 - 0x7C140600, // 0085 CALL R5 3 - 0x8C140300, // 0086 GETMET R5 R1 K0 - 0x541E0017, // 0087 LDINT R7 24 - 0x58200001, // 0088 LDCONST R8 K1 - 0x7C140600, // 0089 CALL R5 3 - 0x70020003, // 008A JMP #008F - 0x900E1301, // 008B SETMBR R3 K9 K1 - 0x8C10070A, // 008C GETMET R4 R3 K10 - 0x5C180200, // 008D MOVE R6 R1 - 0x7C100400, // 008E CALL R4 2 - 0x8C100300, // 008F GETMET R4 R1 K0 - 0x541A1817, // 0090 LDINT R6 6168 - 0x541DFFFD, // 0091 LDINT R7 -2 - 0x7C100600, // 0092 CALL R4 3 - 0x80000000, // 0093 RET 0 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x541A34FF, // 0005 LDINT R6 13568 + 0x541DFFFD, // 0006 LDINT R7 -2 + 0x7C100600, // 0007 CALL R4 3 + 0x8C100102, // 0008 GETMET R4 R0 K2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x5C1C0400, // 000A MOVE R7 R2 + 0x58200003, // 000B LDCONST R8 K3 + 0x7C100800, // 000C CALL R4 4 + 0x8C100300, // 000D GETMET R4 R1 K0 + 0x541A3500, // 000E LDINT R6 13569 + 0x541DFFFD, // 000F LDINT R7 -2 + 0x7C100600, // 0010 CALL R4 3 + 0x88100504, // 0011 GETMBR R4 R2 K4 + 0x541600FE, // 0012 LDINT R5 255 + 0x18100805, // 0013 LE R4 R4 R5 + 0x78120008, // 0014 JMPF R4 #001E + 0x8C100300, // 0015 GETMET R4 R1 K0 + 0x541A23FF, // 0016 LDINT R6 9216 + 0x541DFFFD, // 0017 LDINT R7 -2 + 0x7C100600, // 0018 CALL R4 3 + 0x8C100300, // 0019 GETMET R4 R1 K0 + 0x88180504, // 001A GETMBR R6 R2 K4 + 0x581C0001, // 001B LDCONST R7 K1 + 0x7C100600, // 001C CALL R4 3 + 0x70020007, // 001D JMP #0026 + 0x8C100300, // 001E GETMET R4 R1 K0 + 0x541A24FF, // 001F LDINT R6 9472 + 0x541DFFFD, // 0020 LDINT R7 -2 + 0x7C100600, // 0021 CALL R4 3 + 0x8C100300, // 0022 GETMET R4 R1 K0 + 0x88180504, // 0023 GETMBR R6 R2 K4 + 0x581C0005, // 0024 LDCONST R7 K5 + 0x7C100600, // 0025 CALL R4 3 + 0x8C100300, // 0026 GETMET R4 R1 K0 + 0x541A1817, // 0027 LDINT R6 6168 + 0x541DFFFD, // 0028 LDINT R7 -2 + 0x7C100600, // 0029 CALL R4 3 + 0x8C100300, // 002A GETMET R4 R1 K0 + 0x541A0017, // 002B LDINT R6 24 + 0x581C0001, // 002C LDCONST R7 K1 + 0x7C100600, // 002D CALL R4 3 + 0x80000000, // 002E RET 0 }) ) ); @@ -3374,10 +2865,144 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ /******************************************************************** -** Solidified function: send_invoke_response +** Solidified function: process_status_response ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_invoke_response, /* name */ +be_local_closure(class_Matter_IM_process_status_response, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(findsubval), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K3 */ be_nested_str_weak(exchange_id), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(SUCCESS), + /* K6 */ be_nested_str_weak(status_ok_received), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(local_session_id), + /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str_weak(status_error_received), + /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + }), + be_str_weak(process_status_response), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0x8C0C0500, // 0000 GETMET R3 R2 K0 + 0x58140001, // 0001 LDCONST R5 K1 + 0x541A00FE, // 0002 LDINT R6 255 + 0x7C0C0600, // 0003 CALL R3 3 + 0x8C100102, // 0004 GETMET R4 R0 K2 + 0x88180303, // 0005 GETMBR R6 R1 K3 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x88140B05, // 0008 GETMBR R5 R5 K5 + 0x1C140605, // 0009 EQ R5 R3 R5 + 0x7816000F, // 000A JMPF R5 #001B + 0x78120004, // 000B JMPF R4 #0011 + 0x8C140906, // 000C GETMET R5 R4 K6 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C140400, // 000E CALL R5 2 + 0x80040A00, // 000F RET 1 R5 + 0x70020008, // 0010 JMP #001A + 0xB8160E00, // 0011 GETNGBL R5 K7 + 0x60180018, // 0012 GETGBL R6 G24 + 0x581C0008, // 0013 LDCONST R7 K8 + 0x88200309, // 0014 GETMBR R8 R1 K9 + 0x8820110A, // 0015 GETMBR R8 R8 K10 + 0x88240303, // 0016 GETMBR R9 R1 K3 + 0x7C180600, // 0017 CALL R6 3 + 0x541E0003, // 0018 LDINT R7 4 + 0x7C140400, // 0019 CALL R5 2 + 0x7002000D, // 001A JMP #0029 + 0xB8160E00, // 001B GETNGBL R5 K7 + 0x60180018, // 001C GETGBL R6 G24 + 0x581C000B, // 001D LDCONST R7 K11 + 0x5C200600, // 001E MOVE R8 R3 + 0x7C180400, // 001F CALL R6 2 + 0x581C000C, // 0020 LDCONST R7 K12 + 0x7C140400, // 0021 CALL R5 2 + 0x78120005, // 0022 JMPF R4 #0029 + 0x8C14090D, // 0023 GETMET R5 R4 K13 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x7C140400, // 0025 CALL R5 2 + 0x8C14010E, // 0026 GETMET R5 R0 K14 + 0x881C0303, // 0027 GETMBR R7 R1 K3 + 0x7C140400, // 0028 CALL R5 2 + 0x50140000, // 0029 LDBOOL R5 0 0 + 0x80040A00, // 002A RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_sendqueue_by_exchangeid +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x4C080000, // 0003 LDNIL R2 + 0x80040400, // 0004 RET 1 R2 + 0x58080000, // 0005 LDCONST R2 K0 + 0x600C000C, // 0006 GETGBL R3 G12 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x140C0403, // 0009 LT R3 R2 R3 + 0x780E0008, // 000A JMPF R3 #0014 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x940C0602, // 000C GETIDX R3 R3 R2 + 0x8C100702, // 000D GETMET R4 R3 K2 + 0x7C100200, // 000E CALL R4 1 + 0x1C100801, // 000F EQ R4 R4 R1 + 0x78120000, // 0010 JMPF R4 #0012 + 0x80040600, // 0011 RET 1 R3 + 0x00080503, // 0012 ADD R2 R2 K3 + 0x7001FFF1, // 0013 JMP #0006 + 0x4C0C0000, // 0014 LDNIL R3 + 0x80040600, // 0015 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_status +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_status, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ @@ -3391,9 +3016,9 @@ be_local_closure(class_Matter_IM_send_invoke_response, /* name */ /* K0 */ be_nested_str_weak(send_queue), /* K1 */ be_nested_str_weak(push), /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_InvokeResponse), + /* K3 */ be_nested_str_weak(IM_Status), }), - be_str_weak(send_invoke_response), + be_str_weak(send_status), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 @@ -3412,10 +3037,264 @@ be_local_closure(class_Matter_IM_send_invoke_response, /* name */ /******************************************************************** -** Solidified function: every_250ms +** Solidified function: process_timed_request ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_250ms, /* name */ +be_local_closure(class_Matter_IM_process_timed_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TimedRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(timeout), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(send_status), + /* K10 */ be_nested_str_weak(SUCCESS), + }), + be_str_weak(process_timed_request), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x881C0305, // 0009 GETMBR R7 R1 K5 + 0x881C0F06, // 000A GETMBR R7 R7 K6 + 0x88200707, // 000B GETMBR R8 R3 K7 + 0x7C140600, // 000C CALL R5 3 + 0x58180008, // 000D LDCONST R6 K8 + 0x7C100400, // 000E CALL R4 2 + 0x8C100109, // 000F GETMET R4 R0 K9 + 0x5C180200, // 0010 MOVE R6 R1 + 0xB81E0000, // 0011 GETNGBL R7 K0 + 0x881C0F0A, // 0012 GETMBR R7 R7 K10 + 0x7C100600, // 0013 CALL R4 3 + 0x50100200, // 0014 LDBOOL R4 1 0 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_or_subscribe_request_event_pull +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, /* name */ + be_nested_proto( + 24, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(event_requests), + /* K1 */ be_nested_str_weak(get_node_id), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(parse_event_filters_min_no), + /* K5 */ be_nested_str_weak(event_filters), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(EventGenerator), + /* K8 */ be_nested_str_weak(device), + /* K9 */ be_nested_str_weak(start), + /* K10 */ be_nested_str_weak(endpoint), + /* K11 */ be_nested_str_weak(cluster), + /* K12 */ be_nested_str_weak(event), + /* K13 */ be_nested_str_weak(push), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(loglevel), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(), + /* K18 */ be_nested_str_weak(get_event_name), + /* K19 */ be_nested_str_weak(_X28), + /* K20 */ be_nested_str_weak(_X29_X20), + /* K21 */ be_nested_str_weak(_X2502X), + /* K22 */ be_nested_str_weak(_X2A_X2A), + /* K23 */ be_nested_str_weak(_X2504X), + /* K24 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K25 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), + /* K26 */ be_nested_str_weak(log), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), + /* K28 */ be_nested_str_weak(session), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_read_or_subscribe_request_event_pull), + &be_const_str_solidified, + ( &(const binstruction[140]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x200C0604, // 0002 NE R3 R3 R4 + 0x780E0085, // 0003 JMPF R3 #008A + 0x4C0C0000, // 0004 LDNIL R3 + 0x4C100000, // 0005 LDNIL R4 + 0x20100404, // 0006 NE R4 R2 R4 + 0x78120002, // 0007 JMPF R4 #000B + 0x8C100501, // 0008 GETMET R4 R2 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x70020000, // 000A JMP #000C + 0x4C100000, // 000B LDNIL R4 + 0x88140300, // 000C GETMBR R5 R1 K0 + 0x78160003, // 000D JMPF R5 #0012 + 0x6014000C, // 000E GETGBL R5 G12 + 0x88180300, // 000F GETMBR R6 R1 K0 + 0x7C140200, // 0010 CALL R5 1 + 0x70020000, // 0011 JMP #0013 + 0x58140002, // 0012 LDCONST R5 K2 + 0x24180B03, // 0013 GT R6 R5 K3 + 0x781A0002, // 0014 JMPF R6 #0018 + 0x60180012, // 0015 GETGBL R6 G18 + 0x7C180000, // 0016 CALL R6 0 + 0x5C0C0C00, // 0017 MOVE R3 R6 + 0x8C180104, // 0018 GETMET R6 R0 K4 + 0x88200305, // 0019 GETMBR R8 R1 K5 + 0x5C240800, // 001A MOVE R9 R4 + 0x7C180600, // 001B CALL R6 3 + 0x881C0300, // 001C GETMBR R7 R1 K0 + 0x781E006A, // 001D JMPF R7 #0089 + 0x601C0010, // 001E GETGBL R7 G16 + 0x88200300, // 001F GETMBR R8 R1 K0 + 0x7C1C0200, // 0020 CALL R7 1 + 0xA8020063, // 0021 EXBLK 0 #0086 + 0x5C200E00, // 0022 MOVE R8 R7 + 0x7C200000, // 0023 CALL R8 0 + 0xB8260C00, // 0024 GETNGBL R9 K6 + 0x8C241307, // 0025 GETMET R9 R9 K7 + 0x882C0108, // 0026 GETMBR R11 R0 K8 + 0x7C240400, // 0027 CALL R9 2 + 0x8C281309, // 0028 GETMET R10 R9 K9 + 0x8830110A, // 0029 GETMBR R12 R8 K10 + 0x8834110B, // 002A GETMBR R13 R8 K11 + 0x8838110C, // 002B GETMBR R14 R8 K12 + 0x5C3C0C00, // 002C MOVE R15 R6 + 0x7C280A00, // 002D CALL R10 5 + 0x24280B03, // 002E GT R10 R5 K3 + 0x782A0003, // 002F JMPF R10 #0034 + 0x8C28070D, // 0030 GETMET R10 R3 K13 + 0x5C301200, // 0031 MOVE R12 R9 + 0x7C280400, // 0032 CALL R10 2 + 0x70020000, // 0033 JMP #0035 + 0x5C0C1200, // 0034 MOVE R3 R9 + 0xB82A1C00, // 0035 GETNGBL R10 K14 + 0x8C28150F, // 0036 GETMET R10 R10 K15 + 0x58300010, // 0037 LDCONST R12 K16 + 0x7C280400, // 0038 CALL R10 2 + 0x782A004A, // 0039 JMPF R10 #0085 + 0x58280011, // 003A LDCONST R10 K17 + 0x882C110B, // 003B GETMBR R11 R8 K11 + 0x4C300000, // 003C LDNIL R12 + 0x202C160C, // 003D NE R11 R11 R12 + 0x782E0011, // 003E JMPF R11 #0051 + 0x882C110C, // 003F GETMBR R11 R8 K12 + 0x4C300000, // 0040 LDNIL R12 + 0x202C160C, // 0041 NE R11 R11 R12 + 0x782E000D, // 0042 JMPF R11 #0051 + 0xB82E0C00, // 0043 GETNGBL R11 K6 + 0x8C2C1712, // 0044 GETMET R11 R11 K18 + 0x8834110B, // 0045 GETMBR R13 R8 K11 + 0x8838110C, // 0046 GETMBR R14 R8 K12 + 0x7C2C0600, // 0047 CALL R11 3 + 0x5C281600, // 0048 MOVE R10 R11 + 0x4C2C0000, // 0049 LDNIL R11 + 0x202C140B, // 004A NE R11 R10 R11 + 0x782E0002, // 004B JMPF R11 #004F + 0x002E260A, // 004C ADD R11 K19 R10 + 0x002C1714, // 004D ADD R11 R11 K20 + 0x70020000, // 004E JMP #0050 + 0x582C0011, // 004F LDCONST R11 K17 + 0x5C281600, // 0050 MOVE R10 R11 + 0x882C110A, // 0051 GETMBR R11 R8 K10 + 0x4C300000, // 0052 LDNIL R12 + 0x202C160C, // 0053 NE R11 R11 R12 + 0x782E0004, // 0054 JMPF R11 #005A + 0x602C0018, // 0055 GETGBL R11 G24 + 0x58300015, // 0056 LDCONST R12 K21 + 0x8834110A, // 0057 GETMBR R13 R8 K10 + 0x7C2C0400, // 0058 CALL R11 2 + 0x70020000, // 0059 JMP #005B + 0x582C0016, // 005A LDCONST R11 K22 + 0x8830110B, // 005B GETMBR R12 R8 K11 + 0x4C340000, // 005C LDNIL R13 + 0x2030180D, // 005D NE R12 R12 R13 + 0x78320004, // 005E JMPF R12 #0064 + 0x60300018, // 005F GETGBL R12 G24 + 0x58340017, // 0060 LDCONST R13 K23 + 0x8838110B, // 0061 GETMBR R14 R8 K11 + 0x7C300400, // 0062 CALL R12 2 + 0x70020000, // 0063 JMP #0065 + 0x58300018, // 0064 LDCONST R12 K24 + 0x8834110C, // 0065 GETMBR R13 R8 K12 + 0x4C380000, // 0066 LDNIL R14 + 0x20341A0E, // 0067 NE R13 R13 R14 + 0x78360004, // 0068 JMPF R13 #006E + 0x60340018, // 0069 GETGBL R13 G24 + 0x58380015, // 006A LDCONST R14 K21 + 0x883C110C, // 006B GETMBR R15 R8 K12 + 0x7C340400, // 006C CALL R13 2 + 0x70020000, // 006D JMP #006F + 0x58340016, // 006E LDCONST R13 K22 + 0x4C380000, // 006F LDNIL R14 + 0x20380C0E, // 0070 NE R14 R6 R14 + 0x783A0004, // 0071 JMPF R14 #0077 + 0x60380018, // 0072 GETGBL R14 G24 + 0x583C0019, // 0073 LDCONST R15 K25 + 0x5C400C00, // 0074 MOVE R16 R6 + 0x7C380400, // 0075 CALL R14 2 + 0x70020000, // 0076 JMP #0078 + 0x58380011, // 0077 LDCONST R14 K17 + 0xB83E3400, // 0078 GETNGBL R15 K26 + 0x60400018, // 0079 GETGBL R16 G24 + 0x5844001B, // 007A LDCONST R17 K27 + 0x8848051C, // 007B GETMBR R18 R2 K28 + 0x8848251D, // 007C GETMBR R18 R18 K29 + 0x5C4C1600, // 007D MOVE R19 R11 + 0x5C501800, // 007E MOVE R20 R12 + 0x5C541A00, // 007F MOVE R21 R13 + 0x5C581400, // 0080 MOVE R22 R10 + 0x5C5C1C00, // 0081 MOVE R23 R14 + 0x7C400E00, // 0082 CALL R16 7 + 0x58440010, // 0083 LDCONST R17 K16 + 0x7C3C0400, // 0084 CALL R15 2 + 0x7001FF9B, // 0085 JMP #0022 + 0x581C001E, // 0086 LDCONST R7 K30 + 0xAC1C0200, // 0087 CATCH R7 1 0 + 0xB0080000, // 0088 RAISE 2 R0 R0 + 0x80040600, // 0089 RET 1 R3 + 0x4C0C0000, // 008A LDNIL R3 + 0x80040600, // 008B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -3425,17 +3304,293 @@ be_local_closure(class_Matter_IM_every_250ms, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(every_250ms), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(expire_sendqueue), }), - be_str_weak(every_250ms), + be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_sendqueue_by_exchangeid +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_nested_str_weak(remove), + /* K4 */ be_const_int(1), + }), + be_str_weak(remove_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80000400, // 0003 RET 0 + 0x58080000, // 0004 LDCONST R2 K0 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000C, // 0009 JMPF R3 #0017 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x1C0C0601, // 000E EQ R3 R3 R1 + 0x780E0004, // 000F JMPF R3 #0015 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x8C0C0703, // 0011 GETMET R3 R3 K3 + 0x5C140400, // 0012 MOVE R5 R2 + 0x7C0C0400, // 0013 CALL R3 2 + 0x70020000, // 0014 JMP #0016 + 0x00080504, // 0015 ADD R2 R2 K4 + 0x7001FFED, // 0016 JMP #0005 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: path2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_path2raw, /* name */ + be_nested_proto( + 9, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + }), + be_str_weak(path2raw), + &be_const_str_solidified, + ( &(const binstruction[107]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x541E0036, // 0001 LDINT R7 55 + 0x58200001, // 0002 LDCONST R8 K1 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200001, // 0006 LDCONST R8 K1 + 0x7C140600, // 0007 CALL R5 3 + 0x88140502, // 0008 GETMBR R5 R2 K2 + 0x541A00FE, // 0009 LDINT R6 255 + 0x18140A06, // 000A LE R5 R5 R6 + 0x78160008, // 000B JMPF R5 #0015 + 0x8C140300, // 000C GETMET R5 R1 K0 + 0x541E2401, // 000D LDINT R7 9218 + 0x5421FFFD, // 000E LDINT R8 -2 + 0x7C140600, // 000F CALL R5 3 + 0x8C140300, // 0010 GETMET R5 R1 K0 + 0x881C0502, // 0011 GETMBR R7 R2 K2 + 0x58200001, // 0012 LDCONST R8 K1 + 0x7C140600, // 0013 CALL R5 3 + 0x70020007, // 0014 JMP #001D + 0x8C140300, // 0015 GETMET R5 R1 K0 + 0x541E2501, // 0016 LDINT R7 9474 + 0x5421FFFD, // 0017 LDINT R8 -2 + 0x7C140600, // 0018 CALL R5 3 + 0x8C140300, // 0019 GETMET R5 R1 K0 + 0x881C0502, // 001A GETMBR R7 R2 K2 + 0x58200003, // 001B LDCONST R8 K3 + 0x7C140600, // 001C CALL R5 3 + 0x88140504, // 001D GETMBR R5 R2 K4 + 0x541A00FE, // 001E LDINT R6 255 + 0x18140A06, // 001F LE R5 R5 R6 + 0x78160008, // 0020 JMPF R5 #002A + 0x8C140300, // 0021 GETMET R5 R1 K0 + 0x541E2402, // 0022 LDINT R7 9219 + 0x5421FFFD, // 0023 LDINT R8 -2 + 0x7C140600, // 0024 CALL R5 3 + 0x8C140300, // 0025 GETMET R5 R1 K0 + 0x881C0504, // 0026 GETMBR R7 R2 K4 + 0x58200001, // 0027 LDCONST R8 K1 + 0x7C140600, // 0028 CALL R5 3 + 0x70020014, // 0029 JMP #003F + 0x88140504, // 002A GETMBR R5 R2 K4 + 0x541AFFFE, // 002B LDINT R6 65535 + 0x18140A06, // 002C LE R5 R5 R6 + 0x78160008, // 002D JMPF R5 #0037 + 0x8C140300, // 002E GETMET R5 R1 K0 + 0x541E2502, // 002F LDINT R7 9475 + 0x5421FFFD, // 0030 LDINT R8 -2 + 0x7C140600, // 0031 CALL R5 3 + 0x8C140300, // 0032 GETMET R5 R1 K0 + 0x881C0504, // 0033 GETMBR R7 R2 K4 + 0x58200003, // 0034 LDCONST R8 K3 + 0x7C140600, // 0035 CALL R5 3 + 0x70020007, // 0036 JMP #003F + 0x8C140300, // 0037 GETMET R5 R1 K0 + 0x541E2602, // 0038 LDINT R7 9731 + 0x5421FFFD, // 0039 LDINT R8 -2 + 0x7C140600, // 003A CALL R5 3 + 0x8C140300, // 003B GETMET R5 R1 K0 + 0x881C0504, // 003C GETMBR R7 R2 K4 + 0x54220003, // 003D LDINT R8 4 + 0x7C140600, // 003E CALL R5 3 + 0x88140505, // 003F GETMBR R5 R2 K5 + 0x541A00FE, // 0040 LDINT R6 255 + 0x18140A06, // 0041 LE R5 R5 R6 + 0x78160008, // 0042 JMPF R5 #004C + 0x8C140300, // 0043 GETMET R5 R1 K0 + 0x541E2403, // 0044 LDINT R7 9220 + 0x5421FFFD, // 0045 LDINT R8 -2 + 0x7C140600, // 0046 CALL R5 3 + 0x8C140300, // 0047 GETMET R5 R1 K0 + 0x881C0505, // 0048 GETMBR R7 R2 K5 + 0x58200001, // 0049 LDCONST R8 K1 + 0x7C140600, // 004A CALL R5 3 + 0x70020014, // 004B JMP #0061 + 0x88140505, // 004C GETMBR R5 R2 K5 + 0x541AFFFE, // 004D LDINT R6 65535 + 0x18140A06, // 004E LE R5 R5 R6 + 0x78160008, // 004F JMPF R5 #0059 + 0x8C140300, // 0050 GETMET R5 R1 K0 + 0x541E2503, // 0051 LDINT R7 9476 + 0x5421FFFD, // 0052 LDINT R8 -2 + 0x7C140600, // 0053 CALL R5 3 + 0x8C140300, // 0054 GETMET R5 R1 K0 + 0x881C0505, // 0055 GETMBR R7 R2 K5 + 0x58200003, // 0056 LDCONST R8 K3 + 0x7C140600, // 0057 CALL R5 3 + 0x70020007, // 0058 JMP #0061 + 0x8C140300, // 0059 GETMET R5 R1 K0 + 0x541E2603, // 005A LDINT R7 9732 + 0x5421FFFD, // 005B LDINT R8 -2 + 0x7C140600, // 005C CALL R5 3 + 0x8C140300, // 005D GETMET R5 R1 K0 + 0x881C0505, // 005E GETMBR R7 R2 K5 + 0x54220003, // 005F LDINT R8 4 + 0x7C140600, // 0060 CALL R5 3 + 0x78120003, // 0061 JMPF R4 #0066 + 0x8C140300, // 0062 GETMET R5 R1 K0 + 0x541E3404, // 0063 LDINT R7 13317 + 0x5421FFFD, // 0064 LDINT R8 -2 + 0x7C140600, // 0065 CALL R5 3 + 0x8C140300, // 0066 GETMET R5 R1 K0 + 0x541E0017, // 0067 LDINT R7 24 + 0x58200001, // 0068 LDCONST R8 K1 + 0x7C140600, // 0069 CALL R5 3 + 0x80000000, // 006A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_event_filters_min_no +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_IM), + /* K1 */ be_nested_str_weak(int64), + /* K2 */ be_nested_str_weak(toint64), + /* K3 */ be_nested_str_weak(node), + /* K4 */ be_nested_str_weak(tobytes), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), + /* K8 */ be_nested_str_weak(tohex), + /* K9 */ be_nested_str_weak(event_min), + /* K10 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(parse_event_filters_min_no), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x4C100000, // 0002 LDNIL R4 + 0x20100004, // 0003 NE R4 R0 R4 + 0x7812002B, // 0004 JMPF R4 #0031 + 0x60100010, // 0005 GETGBL R4 G16 + 0x5C140000, // 0006 MOVE R5 R0 + 0x7C100200, // 0007 CALL R4 1 + 0xA8020024, // 0008 EXBLK 0 #002E + 0x5C140800, // 0009 MOVE R5 R4 + 0x7C140000, // 000A CALL R5 0 + 0xB81A0200, // 000B GETNGBL R6 K1 + 0x8C180D02, // 000C GETMET R6 R6 K2 + 0x88200B03, // 000D GETMBR R8 R5 K3 + 0x7C180400, // 000E CALL R6 2 + 0x781A0012, // 000F JMPF R6 #0023 + 0x78060011, // 0010 JMPF R1 #0023 + 0x881C0B03, // 0011 GETMBR R7 R5 K3 + 0x8C1C0F04, // 0012 GETMET R7 R7 K4 + 0x7C1C0200, // 0013 CALL R7 1 + 0x201C0E01, // 0014 NE R7 R7 R1 + 0x781E000C, // 0015 JMPF R7 #0023 + 0xB81E0A00, // 0016 GETNGBL R7 K5 + 0x8C1C0F06, // 0017 GETMET R7 R7 K6 + 0x60240018, // 0018 GETGBL R9 G24 + 0x58280007, // 0019 LDCONST R10 K7 + 0x8C2C0D04, // 001A GETMET R11 R6 K4 + 0x7C2C0200, // 001B CALL R11 1 + 0x8C2C1708, // 001C GETMET R11 R11 K8 + 0x7C2C0200, // 001D CALL R11 1 + 0x8C300308, // 001E GETMET R12 R1 K8 + 0x7C300200, // 001F CALL R12 1 + 0x7C240600, // 0020 CALL R9 3 + 0x7C1C0400, // 0021 CALL R7 2 + 0x7001FFE5, // 0022 JMP #0009 + 0xB81E0200, // 0023 GETNGBL R7 K1 + 0x8C1C0F02, // 0024 GETMET R7 R7 K2 + 0x88240B09, // 0025 GETMBR R9 R5 K9 + 0x7C1C0400, // 0026 CALL R7 2 + 0x4C200000, // 0027 LDNIL R8 + 0x1C200608, // 0028 EQ R8 R3 R8 + 0x74220001, // 0029 JMPT R8 #002C + 0x14200607, // 002A LT R8 R3 R7 + 0x78220000, // 002B JMPF R8 #002D + 0x5C0C0E00, // 002C MOVE R3 R7 + 0x7001FFDA, // 002D JMP #0009 + 0x5810000A, // 002E LDCONST R4 K10 + 0xAC100200, // 002F CATCH R4 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040600, // 0031 RET 1 R3 }) ) ); @@ -3448,47 +3603,45 @@ be_local_closure(class_Matter_IM_every_250ms, /* name */ be_local_class(Matter_IM, 6, NULL, - be_nested_map(39, + be_nested_map(37, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(invoke_request_solo, -1), be_const_var(4) }, - { be_const_key_weak(send_subscribe_response_pull, -1), be_const_closure(class_Matter_IM_send_subscribe_response_pull_closure) }, - { be_const_key_weak(every_250ms, 17), be_const_closure(class_Matter_IM_every_250ms_closure) }, - { be_const_key_weak(device, 32), be_const_var(0) }, - { be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) }, - { be_const_key_weak(read_single_attribute_to_bytes, 14), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_init_closure) }, - { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, - { be_const_key_weak(process_incoming_ack, 12), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) }, - { be_const_key_weak(expire_sendqueue, 37), be_const_closure(class_Matter_IM_expire_sendqueue_closure) }, - { be_const_key_weak(send_write_response, -1), be_const_closure(class_Matter_IM_send_write_response_closure) }, - { be_const_key_weak(send_invoke_response, 13), be_const_closure(class_Matter_IM_send_invoke_response_closure) }, - { be_const_key_weak(invokeresponse2raw, -1), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, - { be_const_key_weak(path2raw, -1), be_const_closure(class_Matter_IM_path2raw_closure) }, - { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, - { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, - { be_const_key_weak(process_incoming, 15), be_const_closure(class_Matter_IM_process_incoming_closure) }, - { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) }, - { be_const_key_weak(send_queue, -1), be_const_var(2) }, - { be_const_key_weak(process_write_request, -1), be_const_closure(class_Matter_IM_process_write_request_closure) }, - { be_const_key_weak(process_write_response, -1), be_const_closure(class_Matter_IM_process_write_response_closure) }, - { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, - { be_const_key_weak(find_sendqueue_by_exchangeid, 19), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(write_single_attribute_status_to_bytes, -1), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) }, - { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, - { be_const_key_weak(attributedata2raw, 28), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, - { be_const_key_weak(attributestatus2raw, -1), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, - { be_const_key_weak(read_request_solo, -1), be_const_var(3) }, - { be_const_key_weak(process_invoke_request, 21), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, - { be_const_key_weak(send_report_data_pull, -1), be_const_closure(class_Matter_IM_send_report_data_pull_closure) }, - { be_const_key_weak(subs_shop, 36), be_const_var(1) }, - { be_const_key_weak(tlv_solo, 16), be_const_var(5) }, - { be_const_key_weak(process_read_request_solo, -1), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, - { be_const_key_weak(process_read_request_pull, -1), be_const_closure(class_Matter_IM_process_read_request_pull_closure) }, - { be_const_key_weak(process_timed_request, -1), be_const_closure(class_Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(process_read_request_pull, 32), be_const_closure(class_Matter_IM_process_read_request_pull_closure) }, + { be_const_key_weak(process_incoming_ack, 7), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, + { be_const_key_weak(process_invoke_request, -1), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, { be_const_key_weak(subscribe_request, -1), be_const_closure(class_Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(send_enqueued, 2), be_const_closure(class_Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(path2raw, 21), be_const_closure(class_Matter_IM_path2raw_closure) }, + { be_const_key_weak(subs_shop, 33), be_const_var(1) }, + { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) }, + { be_const_key_weak(invoke_request_solo, 11), be_const_var(4) }, + { be_const_key_weak(process_incoming, -1), be_const_closure(class_Matter_IM_process_incoming_closure) }, + { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, + { be_const_key_weak(invokeresponse2raw, 34), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, + { be_const_key_weak(tlv_solo, -1), be_const_var(5) }, + { be_const_key_weak(send_queue, -1), be_const_var(2) }, + { be_const_key_weak(remove_sendqueue_by_exchangeid, 15), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(process_write_request, 26), be_const_closure(class_Matter_IM_process_write_request_closure) }, + { be_const_key_weak(read_single_attribute_to_bytes, -1), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) }, + { be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, + { be_const_key_weak(every_50ms, 28), be_const_closure(class_Matter_IM_every_50ms_closure) }, + { be_const_key_weak(process_write_response, 27), be_const_closure(class_Matter_IM_process_write_response_closure) }, + { be_const_key_weak(process_read_or_subscribe_request_event_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull_closure) }, + { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, + { be_const_key_weak(process_read_request_solo, 13), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, + { be_const_key_weak(attributedata2raw, 4), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, + { be_const_key_weak(write_single_attribute_status_to_bytes, 30), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) }, + { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, + { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, + { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(process_timed_request, -1), be_const_closure(class_Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(attributestatus2raw, 35), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) }, + { be_const_key_weak(init, 3), be_const_closure(class_Matter_IM_init_closure) }, + { be_const_key_weak(send_enqueued, -1), be_const_closure(class_Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(expire_sendqueue, -1), be_const_closure(class_Matter_IM_expire_sendqueue_closure) }, + { be_const_key_weak(read_request_solo, -1), be_const_var(3) }, + { be_const_key_weak(parse_event_filters_min_no, -1), be_const_static_closure(class_Matter_IM_parse_event_filters_min_no_closure) }, })), be_str_weak(Matter_IM) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 66be8720b..1ccdc6e0c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -575,13 +575,52 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_ReportData_Pull, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(generator_or_arr), + /* K2 */ be_nested_str_weak(event_generator_or_arr), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x541E0004, // 0005 LDINT R7 5 + 0x50200200, // 0006 LDBOOL R8 1 0 + 0x7C100800, // 0007 CALL R4 4 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x90020403, // 0009 SETMBR R0 K2 R3 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: send_im ********************************************************************/ extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ be_nested_proto( - 15, /* nstack */ + 19, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -589,41 +628,62 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_ReportData_Pull, 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ + ( &(const bvalue[51]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(resp), /* K2 */ be_nested_str_weak(data), - /* K3 */ be_nested_str_weak(generator_or_arr), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(device), - /* K7 */ be_nested_str_weak(debug), - /* K8 */ be_nested_str_weak(is_direct), - /* K9 */ be_nested_str_weak(im), - /* K10 */ be_nested_str_weak(read_single_attribute_to_bytes), - /* K11 */ be_nested_str_weak(get_pi), - /* K12 */ be_nested_str_weak(session), - /* K13 */ be_nested_str_weak(MAX_MESSAGE), - /* K14 */ be_nested_str_weak(append), - /* K15 */ be_nested_str_weak(remove), - /* K16 */ be_nested_str_weak(matter), - /* K17 */ be_nested_str_weak(ReportDataMessage), - /* K18 */ be_nested_str_weak(subscription_id), - /* K19 */ be_nested_str_weak(suppress_response), - /* K20 */ be_nested_str_weak(attribute_reports), - /* K21 */ be_nested_str_weak(more_chunked_messages), - /* K22 */ be_nested_str_weak(to_TLV), - /* K23 */ be_nested_str_weak(tlv2raw), - /* K24 */ be_nested_str_weak(encode_frame), - /* K25 */ be_nested_str_weak(encrypt), - /* K26 */ be_nested_str_weak(send_response_frame), - /* K27 */ be_nested_str_weak(last_counter), - /* K28 */ be_nested_str_weak(message_counter), - /* K29 */ be_nested_str_weak(finish), + /* K3 */ be_nested_str_weak(device), + /* K4 */ be_nested_str_weak(debug), + /* K5 */ be_nested_str_weak(data_ev), + /* K6 */ be_nested_str_weak(event_generator_or_arr), + /* K7 */ be_nested_str_weak(generator_or_arr), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(next_attribute), + /* K10 */ be_nested_str_weak(is_direct), + /* K11 */ be_nested_str_weak(im), + /* K12 */ be_nested_str_weak(read_single_attribute_to_bytes), + /* K13 */ be_nested_str_weak(get_pi), + /* K14 */ be_nested_str_weak(session), + /* K15 */ be_nested_str_weak(MAX_MESSAGE), + /* K16 */ be_nested_str_weak(append), + /* K17 */ be_nested_str_weak(remove), + /* K18 */ be_nested_str_weak(next_event), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(data0), + /* K24 */ be_nested_str_weak(_X20_X2D_X20), + /* K25 */ be_nested_str_weak(data1), + /* K26 */ be_nested_str_weak(_X2C_X20), + /* K27 */ be_nested_str_weak(data2), + /* K28 */ be_nested_str_weak(log), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s), + /* K30 */ be_nested_str_weak(local_session_id), + /* K31 */ be_nested_str_weak(event_no), + /* K32 */ be_nested_str_weak(endpoint), + /* K33 */ be_nested_str_weak(cluster), + /* K34 */ be_nested_str_weak(event_id), + /* K35 */ be_nested_str_weak(to_raw_bytes), + /* K36 */ be_nested_str_weak(matter), + /* K37 */ be_nested_str_weak(ReportDataMessage), + /* K38 */ be_nested_str_weak(subscription_id), + /* K39 */ be_nested_str_weak(suppress_response), + /* K40 */ be_nested_str_weak(attribute_reports), + /* K41 */ be_nested_str_weak(event_reports), + /* K42 */ be_nested_str_weak(more_chunked_messages), + /* K43 */ be_nested_str_weak(to_TLV), + /* K44 */ be_nested_str_weak(tlv2raw), + /* K45 */ be_nested_str_weak(encode_frame), + /* K46 */ be_nested_str_weak(encrypt), + /* K47 */ be_nested_str_weak(send_response_frame), + /* K48 */ be_nested_str_weak(last_counter), + /* K49 */ be_nested_str_weak(message_counter), + /* K50 */ be_nested_str_weak(finish), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[134]) { /* code */ + ( &(const binstruction[311]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -640,161 +700,301 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ 0x4C100000, // 000D LDNIL R4 0x90020404, // 000E SETMBR R0 K2 R4 0x50100200, // 000F LDBOOL R4 1 0 - 0x7812004C, // 0010 JMPF R4 #005E - 0x88140103, // 0011 GETMBR R5 R0 K3 - 0x4C180000, // 0012 LDNIL R6 - 0x20140A06, // 0013 NE R5 R5 R6 - 0x78160048, // 0014 JMPF R5 #005E - 0x6014000F, // 0015 GETGBL R5 G15 - 0x88180103, // 0016 GETMBR R6 R0 K3 - 0x601C0012, // 0017 GETGBL R7 G18 - 0x7C140400, // 0018 CALL R5 2 - 0x78160002, // 0019 JMPF R5 #001D - 0x88140103, // 001A GETMBR R5 R0 K3 - 0x94140B04, // 001B GETIDX R5 R5 K4 - 0x70020000, // 001C JMP #001E - 0x88140103, // 001D GETMBR R5 R0 K3 - 0x4C180000, // 001E LDNIL R6 - 0x78120028, // 001F JMPF R4 #0049 - 0x8C1C0B05, // 0020 GETMET R7 R5 K5 - 0x7C1C0200, // 0021 CALL R7 1 - 0x5C180E00, // 0022 MOVE R6 R7 - 0x781E0024, // 0023 JMPF R7 #0049 - 0x881C0306, // 0024 GETMBR R7 R1 K6 - 0x881C0F07, // 0025 GETMBR R7 R7 K7 - 0x8C200B08, // 0026 GETMET R8 R5 K8 - 0x7C200200, // 0027 CALL R8 1 - 0x74220001, // 0028 JMPT R8 #002B - 0x741E0000, // 0029 JMPT R7 #002B - 0x50200001, // 002A LDBOOL R8 0 1 - 0x50200200, // 002B LDBOOL R8 1 0 - 0x88240309, // 002C GETMBR R9 R1 K9 - 0x8C24130A, // 002D GETMET R9 R9 K10 - 0x8C2C0B0B, // 002E GETMET R11 R5 K11 - 0x7C2C0200, // 002F CALL R11 1 - 0x5C300C00, // 0030 MOVE R12 R6 - 0x8834050C, // 0031 GETMBR R13 R2 K12 - 0x5C381000, // 0032 MOVE R14 R8 - 0x7C240A00, // 0033 CALL R9 5 - 0x4C280000, // 0034 LDNIL R10 - 0x1C28120A, // 0035 EQ R10 R9 R10 - 0x782A0000, // 0036 JMPF R10 #0038 - 0x7001FFE6, // 0037 JMP #001F - 0x6028000C, // 0038 GETGBL R10 G12 - 0x5C2C0600, // 0039 MOVE R11 R3 - 0x7C280200, // 003A CALL R10 1 - 0x602C000C, // 003B GETGBL R11 G12 - 0x5C301200, // 003C MOVE R12 R9 - 0x7C2C0200, // 003D CALL R11 1 - 0x0028140B, // 003E ADD R10 R10 R11 - 0x882C010D, // 003F GETMBR R11 R0 K13 - 0x2428140B, // 0040 GT R10 R10 R11 - 0x782A0002, // 0041 JMPF R10 #0045 - 0x90020409, // 0042 SETMBR R0 K2 R9 - 0x50100000, // 0043 LDBOOL R4 0 0 - 0x70020002, // 0044 JMP #0048 - 0x8C28070E, // 0045 GETMET R10 R3 K14 - 0x5C301200, // 0046 MOVE R12 R9 - 0x7C280400, // 0047 CALL R10 2 - 0x7001FFD5, // 0048 JMP #001F - 0x78120012, // 0049 JMPF R4 #005D - 0x601C000F, // 004A GETGBL R7 G15 - 0x88200103, // 004B GETMBR R8 R0 K3 - 0x60240012, // 004C GETGBL R9 G18 - 0x7C1C0400, // 004D CALL R7 2 - 0x781E000B, // 004E JMPF R7 #005B - 0x881C0103, // 004F GETMBR R7 R0 K3 - 0x8C1C0F0F, // 0050 GETMET R7 R7 K15 - 0x58240004, // 0051 LDCONST R9 K4 - 0x7C1C0400, // 0052 CALL R7 2 - 0x601C000C, // 0053 GETGBL R7 G12 - 0x88200103, // 0054 GETMBR R8 R0 K3 - 0x7C1C0200, // 0055 CALL R7 1 - 0x1C1C0F04, // 0056 EQ R7 R7 K4 - 0x781E0001, // 0057 JMPF R7 #005A - 0x4C1C0000, // 0058 LDNIL R7 - 0x90020607, // 0059 SETMBR R0 K3 R7 - 0x70020001, // 005A JMP #005D - 0x4C1C0000, // 005B LDNIL R7 - 0x90020607, // 005C SETMBR R0 K3 R7 - 0x7001FFB1, // 005D JMP #0010 - 0xB8162000, // 005E GETNGBL R5 K16 - 0x8C140B11, // 005F GETMET R5 R5 K17 - 0x7C140200, // 0060 CALL R5 1 - 0x88180112, // 0061 GETMBR R6 R0 K18 - 0x90162406, // 0062 SETMBR R5 K18 R6 - 0x88180113, // 0063 GETMBR R6 R0 K19 - 0x90162606, // 0064 SETMBR R5 K19 R6 - 0x60180012, // 0065 GETGBL R6 G18 - 0x7C180000, // 0066 CALL R6 0 - 0x401C0C03, // 0067 CONNECT R7 R6 R3 - 0x90162806, // 0068 SETMBR R5 K20 R6 - 0x88180102, // 0069 GETMBR R6 R0 K2 - 0x4C1C0000, // 006A LDNIL R7 - 0x20180C07, // 006B NE R6 R6 R7 - 0x90162A06, // 006C SETMBR R5 K21 R6 - 0x8C180B16, // 006D GETMET R6 R5 K22 - 0x7C180200, // 006E CALL R6 1 - 0x8C1C0D17, // 006F GETMET R7 R6 K23 - 0x60240015, // 0070 GETGBL R9 G21 - 0x8828010D, // 0071 GETMBR R10 R0 K13 - 0x7C240200, // 0072 CALL R9 1 - 0x7C1C0400, // 0073 CALL R7 2 - 0x8C200518, // 0074 GETMET R8 R2 K24 - 0x5C280E00, // 0075 MOVE R10 R7 - 0x7C200400, // 0076 CALL R8 2 - 0x8C200519, // 0077 GETMET R8 R2 K25 - 0x7C200200, // 0078 CALL R8 1 - 0x8C20031A, // 0079 GETMET R8 R1 K26 - 0x5C280400, // 007A MOVE R10 R2 - 0x7C200400, // 007B CALL R8 2 - 0x8820051C, // 007C GETMBR R8 R2 K28 - 0x90023608, // 007D SETMBR R0 K27 R8 - 0x88200B15, // 007E GETMBR R8 R5 K21 - 0x78220002, // 007F JMPF R8 #0083 - 0x50200000, // 0080 LDBOOL R8 0 0 - 0x90020008, // 0081 SETMBR R0 K0 R8 + 0x88140303, // 0010 GETMBR R5 R1 K3 + 0x88140B04, // 0011 GETMBR R5 R5 K4 + 0x88180105, // 0012 GETMBR R6 R0 K5 + 0x4C1C0000, // 0013 LDNIL R7 + 0x20180C07, // 0014 NE R6 R6 R7 + 0x781A0001, // 0015 JMPF R6 #0018 + 0x88180105, // 0016 GETMBR R6 R0 K5 + 0x70020007, // 0017 JMP #0020 + 0x88180106, // 0018 GETMBR R6 R0 K6 + 0x4C1C0000, // 0019 LDNIL R7 + 0x20180C07, // 001A NE R6 R6 R7 + 0x781A0002, // 001B JMPF R6 #001F + 0x60180015, // 001C GETGBL R6 G21 + 0x7C180000, // 001D CALL R6 0 + 0x70020000, // 001E JMP #0020 + 0x4C180000, // 001F LDNIL R6 + 0x7812004A, // 0020 JMPF R4 #006C + 0x881C0107, // 0021 GETMBR R7 R0 K7 + 0x4C200000, // 0022 LDNIL R8 + 0x201C0E08, // 0023 NE R7 R7 R8 + 0x781E0046, // 0024 JMPF R7 #006C + 0x601C000F, // 0025 GETGBL R7 G15 + 0x88200107, // 0026 GETMBR R8 R0 K7 + 0x60240012, // 0027 GETGBL R9 G18 + 0x7C1C0400, // 0028 CALL R7 2 + 0x781E0002, // 0029 JMPF R7 #002D + 0x881C0107, // 002A GETMBR R7 R0 K7 + 0x941C0F08, // 002B GETIDX R7 R7 K8 + 0x70020000, // 002C JMP #002E + 0x881C0107, // 002D GETMBR R7 R0 K7 + 0x4C200000, // 002E LDNIL R8 + 0x78120026, // 002F JMPF R4 #0057 + 0x8C240F09, // 0030 GETMET R9 R7 K9 + 0x7C240200, // 0031 CALL R9 1 + 0x5C201200, // 0032 MOVE R8 R9 + 0x78260022, // 0033 JMPF R9 #0057 + 0x8C240F0A, // 0034 GETMET R9 R7 K10 + 0x7C240200, // 0035 CALL R9 1 + 0x74260001, // 0036 JMPT R9 #0039 + 0x74160000, // 0037 JMPT R5 #0039 + 0x50240001, // 0038 LDBOOL R9 0 1 + 0x50240200, // 0039 LDBOOL R9 1 0 + 0x8828030B, // 003A GETMBR R10 R1 K11 + 0x8C28150C, // 003B GETMET R10 R10 K12 + 0x8C300F0D, // 003C GETMET R12 R7 K13 + 0x7C300200, // 003D CALL R12 1 + 0x5C341000, // 003E MOVE R13 R8 + 0x8838050E, // 003F GETMBR R14 R2 K14 + 0x5C3C1200, // 0040 MOVE R15 R9 + 0x7C280A00, // 0041 CALL R10 5 + 0x4C2C0000, // 0042 LDNIL R11 + 0x1C2C140B, // 0043 EQ R11 R10 R11 + 0x782E0000, // 0044 JMPF R11 #0046 + 0x7001FFE8, // 0045 JMP #002F + 0x602C000C, // 0046 GETGBL R11 G12 + 0x5C300600, // 0047 MOVE R12 R3 + 0x7C2C0200, // 0048 CALL R11 1 + 0x6030000C, // 0049 GETGBL R12 G12 + 0x5C341400, // 004A MOVE R13 R10 + 0x7C300200, // 004B CALL R12 1 + 0x002C160C, // 004C ADD R11 R11 R12 + 0x8830010F, // 004D GETMBR R12 R0 K15 + 0x242C160C, // 004E GT R11 R11 R12 + 0x782E0002, // 004F JMPF R11 #0053 + 0x9002040A, // 0050 SETMBR R0 K2 R10 + 0x50100000, // 0051 LDBOOL R4 0 0 + 0x70020002, // 0052 JMP #0056 + 0x8C2C0710, // 0053 GETMET R11 R3 K16 + 0x5C341400, // 0054 MOVE R13 R10 + 0x7C2C0400, // 0055 CALL R11 2 + 0x7001FFD7, // 0056 JMP #002F + 0x78120012, // 0057 JMPF R4 #006B + 0x6024000F, // 0058 GETGBL R9 G15 + 0x88280107, // 0059 GETMBR R10 R0 K7 + 0x602C0012, // 005A GETGBL R11 G18 + 0x7C240400, // 005B CALL R9 2 + 0x7826000B, // 005C JMPF R9 #0069 + 0x88240107, // 005D GETMBR R9 R0 K7 + 0x8C241311, // 005E GETMET R9 R9 K17 + 0x582C0008, // 005F LDCONST R11 K8 + 0x7C240400, // 0060 CALL R9 2 + 0x6024000C, // 0061 GETGBL R9 G12 + 0x88280107, // 0062 GETMBR R10 R0 K7 + 0x7C240200, // 0063 CALL R9 1 + 0x1C241308, // 0064 EQ R9 R9 K8 + 0x78260001, // 0065 JMPF R9 #0068 + 0x4C240000, // 0066 LDNIL R9 + 0x90020E09, // 0067 SETMBR R0 K7 R9 + 0x70020001, // 0068 JMP #006B + 0x4C240000, // 0069 LDNIL R9 + 0x90020E09, // 006A SETMBR R0 K7 R9 + 0x7001FFB3, // 006B JMP #0020 + 0x78120017, // 006C JMPF R4 #0085 + 0x881C0105, // 006D GETMBR R7 R0 K5 + 0x4C200000, // 006E LDNIL R8 + 0x201C0E08, // 006F NE R7 R7 R8 + 0x781E0013, // 0070 JMPF R7 #0085 + 0x601C000C, // 0071 GETGBL R7 G12 + 0x88200105, // 0072 GETMBR R8 R0 K5 + 0x7C1C0200, // 0073 CALL R7 1 + 0x241C0F08, // 0074 GT R7 R7 K8 + 0x781E000E, // 0075 JMPF R7 #0085 + 0x601C000C, // 0076 GETGBL R7 G12 + 0x5C200600, // 0077 MOVE R8 R3 + 0x7C1C0200, // 0078 CALL R7 1 + 0x6020000C, // 0079 GETGBL R8 G12 + 0x88240105, // 007A GETMBR R9 R0 K5 + 0x7C200200, // 007B CALL R8 1 + 0x001C0E08, // 007C ADD R7 R7 R8 + 0x8820010F, // 007D GETMBR R8 R0 K15 + 0x241C0E08, // 007E GT R7 R7 R8 + 0x781E0002, // 007F JMPF R7 #0083 + 0x50100000, // 0080 LDBOOL R4 0 0 + 0x4C180000, // 0081 LDNIL R6 0x70020001, // 0082 JMP #0085 - 0x50200200, // 0083 LDBOOL R8 1 0 - 0x90023A08, // 0084 SETMBR R0 K29 R8 - 0x80000000, // 0085 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; -be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(generator_or_arr), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x541A0004, // 0005 LDINT R6 5 - 0x501C0200, // 0006 LDBOOL R7 1 0 - 0x7C0C0800, // 0007 CALL R3 4 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x80000000, // 0009 RET 0 + 0x4C1C0000, // 0083 LDNIL R7 + 0x90020A07, // 0084 SETMBR R0 K5 R7 + 0x7812006D, // 0085 JMPF R4 #00F4 + 0x881C0106, // 0086 GETMBR R7 R0 K6 + 0x4C200000, // 0087 LDNIL R8 + 0x201C0E08, // 0088 NE R7 R7 R8 + 0x781E0069, // 0089 JMPF R7 #00F4 + 0x601C000F, // 008A GETGBL R7 G15 + 0x88200106, // 008B GETMBR R8 R0 K6 + 0x60240012, // 008C GETGBL R9 G18 + 0x7C1C0400, // 008D CALL R7 2 + 0x781E0002, // 008E JMPF R7 #0092 + 0x881C0106, // 008F GETMBR R7 R0 K6 + 0x941C0F08, // 0090 GETIDX R7 R7 K8 + 0x70020000, // 0091 JMP #0093 + 0x881C0106, // 0092 GETMBR R7 R0 K6 + 0x4C200000, // 0093 LDNIL R8 + 0x78120049, // 0094 JMPF R4 #00DF + 0x8C240F12, // 0095 GETMET R9 R7 K18 + 0x7C240200, // 0096 CALL R9 1 + 0x5C201200, // 0097 MOVE R8 R9 + 0x78260045, // 0098 JMPF R9 #00DF + 0x7816002D, // 0099 JMPF R5 #00C8 + 0xB8262600, // 009A GETNGBL R9 K19 + 0x8C241314, // 009B GETMET R9 R9 K20 + 0x582C0015, // 009C LDCONST R11 K21 + 0x7C240400, // 009D CALL R9 2 + 0x78260028, // 009E JMPF R9 #00C8 + 0x58240016, // 009F LDCONST R9 K22 + 0x88281117, // 00A0 GETMBR R10 R8 K23 + 0x4C2C0000, // 00A1 LDNIL R11 + 0x2028140B, // 00A2 NE R10 R10 R11 + 0x782A0004, // 00A3 JMPF R10 #00A9 + 0x60280008, // 00A4 GETGBL R10 G8 + 0x882C1117, // 00A5 GETMBR R11 R8 K23 + 0x7C280200, // 00A6 CALL R10 1 + 0x002A300A, // 00A7 ADD R10 K24 R10 + 0x5C241400, // 00A8 MOVE R9 R10 + 0x88281119, // 00A9 GETMBR R10 R8 K25 + 0x4C2C0000, // 00AA LDNIL R11 + 0x2028140B, // 00AB NE R10 R10 R11 + 0x782A0004, // 00AC JMPF R10 #00B2 + 0x60280008, // 00AD GETGBL R10 G8 + 0x882C1119, // 00AE GETMBR R11 R8 K25 + 0x7C280200, // 00AF CALL R10 1 + 0x002A340A, // 00B0 ADD R10 K26 R10 + 0x0024120A, // 00B1 ADD R9 R9 R10 + 0x8828111B, // 00B2 GETMBR R10 R8 K27 + 0x4C2C0000, // 00B3 LDNIL R11 + 0x2028140B, // 00B4 NE R10 R10 R11 + 0x782A0004, // 00B5 JMPF R10 #00BB + 0x60280008, // 00B6 GETGBL R10 G8 + 0x882C111B, // 00B7 GETMBR R11 R8 K27 + 0x7C280200, // 00B8 CALL R10 1 + 0x002A340A, // 00B9 ADD R10 K26 R10 + 0x0024120A, // 00BA ADD R9 R9 R10 + 0xB82A3800, // 00BB GETNGBL R10 K28 + 0x602C0018, // 00BC GETGBL R11 G24 + 0x5830001D, // 00BD LDCONST R12 K29 + 0x8834050E, // 00BE GETMBR R13 R2 K14 + 0x88341B1E, // 00BF GETMBR R13 R13 K30 + 0x8838111F, // 00C0 GETMBR R14 R8 K31 + 0x883C1120, // 00C1 GETMBR R15 R8 K32 + 0x88401121, // 00C2 GETMBR R16 R8 K33 + 0x88441122, // 00C3 GETMBR R17 R8 K34 + 0x5C481200, // 00C4 MOVE R18 R9 + 0x7C2C0E00, // 00C5 CALL R11 7 + 0x58300015, // 00C6 LDCONST R12 K21 + 0x7C280400, // 00C7 CALL R10 2 + 0x8C241123, // 00C8 GETMET R9 R8 K35 + 0x7C240200, // 00C9 CALL R9 1 + 0x6028000C, // 00CA GETGBL R10 G12 + 0x5C2C0600, // 00CB MOVE R11 R3 + 0x7C280200, // 00CC CALL R10 1 + 0x602C000C, // 00CD GETGBL R11 G12 + 0x5C300C00, // 00CE MOVE R12 R6 + 0x7C2C0200, // 00CF CALL R11 1 + 0x0028140B, // 00D0 ADD R10 R10 R11 + 0x602C000C, // 00D1 GETGBL R11 G12 + 0x5C301200, // 00D2 MOVE R12 R9 + 0x7C2C0200, // 00D3 CALL R11 1 + 0x0028140B, // 00D4 ADD R10 R10 R11 + 0x882C010F, // 00D5 GETMBR R11 R0 K15 + 0x2428140B, // 00D6 GT R10 R10 R11 + 0x782A0002, // 00D7 JMPF R10 #00DB + 0x90020A09, // 00D8 SETMBR R0 K5 R9 + 0x50100000, // 00D9 LDBOOL R4 0 0 + 0x70020002, // 00DA JMP #00DE + 0x8C280D10, // 00DB GETMET R10 R6 K16 + 0x5C301200, // 00DC MOVE R12 R9 + 0x7C280400, // 00DD CALL R10 2 + 0x7001FFB4, // 00DE JMP #0094 + 0x78120012, // 00DF JMPF R4 #00F3 + 0x6024000F, // 00E0 GETGBL R9 G15 + 0x88280106, // 00E1 GETMBR R10 R0 K6 + 0x602C0012, // 00E2 GETGBL R11 G18 + 0x7C240400, // 00E3 CALL R9 2 + 0x7826000B, // 00E4 JMPF R9 #00F1 + 0x88240106, // 00E5 GETMBR R9 R0 K6 + 0x8C241311, // 00E6 GETMET R9 R9 K17 + 0x582C0008, // 00E7 LDCONST R11 K8 + 0x7C240400, // 00E8 CALL R9 2 + 0x6024000C, // 00E9 GETGBL R9 G12 + 0x88280106, // 00EA GETMBR R10 R0 K6 + 0x7C240200, // 00EB CALL R9 1 + 0x1C241308, // 00EC EQ R9 R9 K8 + 0x78260001, // 00ED JMPF R9 #00F0 + 0x4C240000, // 00EE LDNIL R9 + 0x90020C09, // 00EF SETMBR R0 K6 R9 + 0x70020001, // 00F0 JMP #00F3 + 0x4C240000, // 00F1 LDNIL R9 + 0x90020C09, // 00F2 SETMBR R0 K6 R9 + 0x7001FF90, // 00F3 JMP #0085 + 0xB81E4800, // 00F4 GETNGBL R7 K36 + 0x8C1C0F25, // 00F5 GETMET R7 R7 K37 + 0x7C1C0200, // 00F6 CALL R7 1 + 0x88200126, // 00F7 GETMBR R8 R0 K38 + 0x901E4C08, // 00F8 SETMBR R7 K38 R8 + 0x88200127, // 00F9 GETMBR R8 R0 K39 + 0x901E4E08, // 00FA SETMBR R7 K39 R8 + 0x4C200000, // 00FB LDNIL R8 + 0x20200608, // 00FC NE R8 R3 R8 + 0x78220008, // 00FD JMPF R8 #0107 + 0x6020000C, // 00FE GETGBL R8 G12 + 0x5C240600, // 00FF MOVE R9 R3 + 0x7C200200, // 0100 CALL R8 1 + 0x24201108, // 0101 GT R8 R8 K8 + 0x78220003, // 0102 JMPF R8 #0107 + 0x60200012, // 0103 GETGBL R8 G18 + 0x7C200000, // 0104 CALL R8 0 + 0x40241003, // 0105 CONNECT R9 R8 R3 + 0x901E5008, // 0106 SETMBR R7 K40 R8 + 0x4C200000, // 0107 LDNIL R8 + 0x20200C08, // 0108 NE R8 R6 R8 + 0x78220008, // 0109 JMPF R8 #0113 + 0x6020000C, // 010A GETGBL R8 G12 + 0x5C240C00, // 010B MOVE R9 R6 + 0x7C200200, // 010C CALL R8 1 + 0x24201108, // 010D GT R8 R8 K8 + 0x78220003, // 010E JMPF R8 #0113 + 0x60200012, // 010F GETGBL R8 G18 + 0x7C200000, // 0110 CALL R8 0 + 0x40241006, // 0111 CONNECT R9 R8 R6 + 0x901E5208, // 0112 SETMBR R7 K41 R8 + 0x88200102, // 0113 GETMBR R8 R0 K2 + 0x4C240000, // 0114 LDNIL R9 + 0x20201009, // 0115 NE R8 R8 R9 + 0x74220004, // 0116 JMPT R8 #011C + 0x88200105, // 0117 GETMBR R8 R0 K5 + 0x4C240000, // 0118 LDNIL R9 + 0x20201009, // 0119 NE R8 R8 R9 + 0x74220000, // 011A JMPT R8 #011C + 0x50200001, // 011B LDBOOL R8 0 1 + 0x50200200, // 011C LDBOOL R8 1 0 + 0x901E5408, // 011D SETMBR R7 K42 R8 + 0x8C200F2B, // 011E GETMET R8 R7 K43 + 0x7C200200, // 011F CALL R8 1 + 0x8C24112C, // 0120 GETMET R9 R8 K44 + 0x602C0015, // 0121 GETGBL R11 G21 + 0x8830010F, // 0122 GETMBR R12 R0 K15 + 0x7C2C0200, // 0123 CALL R11 1 + 0x7C240400, // 0124 CALL R9 2 + 0x8C28052D, // 0125 GETMET R10 R2 K45 + 0x5C301200, // 0126 MOVE R12 R9 + 0x7C280400, // 0127 CALL R10 2 + 0x8C28052E, // 0128 GETMET R10 R2 K46 + 0x7C280200, // 0129 CALL R10 1 + 0x8C28032F, // 012A GETMET R10 R1 K47 + 0x5C300400, // 012B MOVE R12 R2 + 0x7C280400, // 012C CALL R10 2 + 0x88280531, // 012D GETMBR R10 R2 K49 + 0x9002600A, // 012E SETMBR R0 K48 R10 + 0x88280F2A, // 012F GETMBR R10 R7 K42 + 0x782A0002, // 0130 JMPF R10 #0134 + 0x50280000, // 0131 LDBOOL R10 0 0 + 0x9002000A, // 0132 SETMBR R0 K0 R10 + 0x70020001, // 0133 JMP #0136 + 0x50280200, // 0134 LDBOOL R10 1 0 + 0x9002640A, // 0135 SETMBR R0 K50 R10 + 0x80000000, // 0136 RET 0 }) ) ); @@ -834,18 +1034,20 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* nam ********************************************************************/ extern const bclass be_class_Matter_IM_Message; be_local_class(Matter_IM_ReportData_Pull, - 3, + 5, &be_class_Matter_IM_Message, - be_nested_map(8, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(suppress_response, -1), be_const_var(2) }, + { be_const_key_weak(set_suppress_response, 2), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) }, + { be_const_key_weak(data_ev, -1), be_const_var(4) }, + { be_const_key_weak(event_generator_or_arr, -1), be_const_var(1) }, { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, - { be_const_key_weak(generator_or_arr, 5), be_const_var(0) }, - { be_const_key_weak(set_subscription_id, 6), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) }, - { be_const_key_weak(subscription_id, -1), be_const_var(1) }, - { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportData_Pull_send_im_closure) }, + { be_const_key_weak(subscription_id, -1), be_const_var(2) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_Pull_init_closure) }, - { be_const_key_weak(set_suppress_response, -1), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) }, + { be_const_key_weak(generator_or_arr, 9), be_const_var(0) }, + { be_const_key_weak(set_subscription_id, 0), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) }, + { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportData_Pull_send_im_closure) }, + { be_const_key_weak(suppress_response, -1), be_const_var(3) }, })), be_str_weak(Matter_IM_ReportData_Pull) ); @@ -916,30 +1118,33 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ + ( &(const bvalue[22]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(generator_or_arr), - /* K2 */ be_nested_str_weak(report_data_phase), - /* K3 */ be_nested_str_weak(send_im), - /* K4 */ be_nested_str_weak(finish), - /* K5 */ be_nested_str_weak(resp), - /* K6 */ be_nested_str_weak(build_standalone_ack), - /* K7 */ be_nested_str_weak(encode_frame), - /* K8 */ be_nested_str_weak(encrypt), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(loglevel), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), - /* K13 */ be_nested_str_weak(session), - /* K14 */ be_nested_str_weak(local_session_id), - /* K15 */ be_nested_str_weak(ack_message_counter), - /* K16 */ be_nested_str_weak(message_counter), - /* K17 */ be_nested_str_weak(send_response_frame), - /* K18 */ be_nested_str_weak(last_counter), + /* K2 */ be_nested_str_weak(event_generator_or_arr), + /* K3 */ be_nested_str_weak(report_data_phase), + /* K4 */ be_nested_str_weak(send_im), + /* K5 */ be_nested_str_weak(finish), + /* K6 */ be_nested_str_weak(resp), + /* K7 */ be_nested_str_weak(build_standalone_ack), + /* K8 */ be_nested_str_weak(encode_frame), + /* K9 */ be_nested_str_weak(encrypt), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(loglevel), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), + /* K14 */ be_nested_str_weak(session), + /* K15 */ be_nested_str_weak(local_session_id), + /* K16 */ be_nested_str_weak(ack_message_counter), + /* K17 */ be_nested_str_weak(message_counter), + /* K18 */ be_nested_str_weak(send_response_frame), + /* K19 */ be_nested_str_weak(last_counter), + /* K20 */ be_nested_str_weak(sub), + /* K21 */ be_nested_str_weak(re_arm), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[71]) { /* code */ + ( &(const binstruction[81]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -947,70 +1152,80 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0x88080101, // 0004 GETMBR R2 R0 K1 0x4C0C0000, // 0005 LDNIL R3 0x20080403, // 0006 NE R2 R2 R3 - 0x780A0030, // 0007 JMPF R2 #0039 + 0x740A0003, // 0007 JMPT R2 #000C 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x780A000F, // 0009 JMPF R2 #001A - 0x60080003, // 000A GETGBL R2 G3 - 0x5C0C0000, // 000B MOVE R3 R0 - 0x7C080200, // 000C CALL R2 1 - 0x8C080503, // 000D GETMET R2 R2 K3 - 0x5C100200, // 000E MOVE R4 R1 - 0x7C080400, // 000F CALL R2 2 - 0x88080104, // 0010 GETMBR R2 R0 K4 - 0x740A0000, // 0011 JMPT R2 #0013 - 0x80000400, // 0012 RET 0 - 0x50080000, // 0013 LDBOOL R2 0 0 - 0x90020402, // 0014 SETMBR R0 K2 R2 - 0x50080000, // 0015 LDBOOL R2 0 0 - 0x90020002, // 0016 SETMBR R0 K0 R2 + 0x4C0C0000, // 0009 LDNIL R3 + 0x20080403, // 000A NE R2 R2 R3 + 0x780A0033, // 000B JMPF R2 #0040 + 0x88080103, // 000C GETMBR R2 R0 K3 + 0x780A000F, // 000D JMPF R2 #001E + 0x60080003, // 000E GETGBL R2 G3 + 0x5C0C0000, // 000F MOVE R3 R0 + 0x7C080200, // 0010 CALL R2 1 + 0x8C080504, // 0011 GETMET R2 R2 K4 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x88080105, // 0014 GETMBR R2 R0 K5 + 0x740A0000, // 0015 JMPT R2 #0017 + 0x80000400, // 0016 RET 0 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90020802, // 0018 SETMBR R0 K4 R2 - 0x7002001D, // 0019 JMP #0038 - 0x88080105, // 001A GETMBR R2 R0 K5 - 0x8C080506, // 001B GETMET R2 R2 K6 - 0x50100000, // 001C LDBOOL R4 0 0 - 0x7C080400, // 001D CALL R2 2 - 0x8C0C0507, // 001E GETMET R3 R2 K7 - 0x7C0C0200, // 001F CALL R3 1 - 0x8C0C0508, // 0020 GETMET R3 R2 K8 - 0x7C0C0200, // 0021 CALL R3 1 - 0xB80E1200, // 0022 GETNGBL R3 K9 - 0x8C0C070A, // 0023 GETMET R3 R3 K10 - 0x54160003, // 0024 LDINT R5 4 - 0x7C0C0400, // 0025 CALL R3 2 - 0x780E0009, // 0026 JMPF R3 #0031 - 0xB80E1600, // 0027 GETNGBL R3 K11 - 0x60100018, // 0028 GETGBL R4 G24 - 0x5814000C, // 0029 LDCONST R5 K12 - 0x8818050D, // 002A GETMBR R6 R2 K13 - 0x88180D0E, // 002B GETMBR R6 R6 K14 - 0x881C050F, // 002C GETMBR R7 R2 K15 - 0x88200510, // 002D GETMBR R8 R2 K16 - 0x7C100800, // 002E CALL R4 4 - 0x54160003, // 002F LDINT R5 4 - 0x7C0C0400, // 0030 CALL R3 2 - 0x8C0C0311, // 0031 GETMET R3 R1 K17 - 0x5C140400, // 0032 MOVE R5 R2 - 0x7C0C0400, // 0033 CALL R3 2 - 0x880C0510, // 0034 GETMBR R3 R2 K16 - 0x90022403, // 0035 SETMBR R0 K18 R3 - 0x500C0200, // 0036 LDBOOL R3 1 0 - 0x90020803, // 0037 SETMBR R0 K4 R3 - 0x7002000C, // 0038 JMP #0046 - 0x88080102, // 0039 GETMBR R2 R0 K2 - 0x780A0008, // 003A JMPF R2 #0044 - 0x60080003, // 003B GETGBL R2 G3 - 0x5C0C0000, // 003C MOVE R3 R0 - 0x7C080200, // 003D CALL R2 1 - 0x8C080503, // 003E GETMET R2 R2 K3 - 0x5C100200, // 003F MOVE R4 R1 - 0x7C080400, // 0040 CALL R2 2 - 0x50080000, // 0041 LDBOOL R2 0 0 - 0x90020402, // 0042 SETMBR R0 K2 R2 - 0x70020001, // 0043 JMP #0046 - 0x50080200, // 0044 LDBOOL R2 1 0 - 0x90020802, // 0045 SETMBR R0 K4 R2 - 0x80000000, // 0046 RET 0 + 0x90020602, // 0018 SETMBR R0 K3 R2 + 0x50080000, // 0019 LDBOOL R2 0 0 + 0x90020002, // 001A SETMBR R0 K0 R2 + 0x50080000, // 001B LDBOOL R2 0 0 + 0x90020A02, // 001C SETMBR R0 K5 R2 + 0x70020020, // 001D JMP #003F + 0x88080106, // 001E GETMBR R2 R0 K6 + 0x8C080507, // 001F GETMET R2 R2 K7 + 0x50100000, // 0020 LDBOOL R4 0 0 + 0x7C080400, // 0021 CALL R2 2 + 0x8C0C0508, // 0022 GETMET R3 R2 K8 + 0x7C0C0200, // 0023 CALL R3 1 + 0x8C0C0509, // 0024 GETMET R3 R2 K9 + 0x7C0C0200, // 0025 CALL R3 1 + 0xB80E1400, // 0026 GETNGBL R3 K10 + 0x8C0C070B, // 0027 GETMET R3 R3 K11 + 0x54160003, // 0028 LDINT R5 4 + 0x7C0C0400, // 0029 CALL R3 2 + 0x780E0009, // 002A JMPF R3 #0035 + 0xB80E1800, // 002B GETNGBL R3 K12 + 0x60100018, // 002C GETGBL R4 G24 + 0x5814000D, // 002D LDCONST R5 K13 + 0x8818050E, // 002E GETMBR R6 R2 K14 + 0x88180D0F, // 002F GETMBR R6 R6 K15 + 0x881C0510, // 0030 GETMBR R7 R2 K16 + 0x88200511, // 0031 GETMBR R8 R2 K17 + 0x7C100800, // 0032 CALL R4 4 + 0x54160003, // 0033 LDINT R5 4 + 0x7C0C0400, // 0034 CALL R3 2 + 0x8C0C0312, // 0035 GETMET R3 R1 K18 + 0x5C140400, // 0036 MOVE R5 R2 + 0x7C0C0400, // 0037 CALL R3 2 + 0x880C0511, // 0038 GETMBR R3 R2 K17 + 0x90022603, // 0039 SETMBR R0 K19 R3 + 0x500C0200, // 003A LDBOOL R3 1 0 + 0x90020A03, // 003B SETMBR R0 K5 R3 + 0x880C0114, // 003C GETMBR R3 R0 K20 + 0x8C0C0715, // 003D GETMET R3 R3 K21 + 0x7C0C0200, // 003E CALL R3 1 + 0x7002000F, // 003F JMP #0050 + 0x88080103, // 0040 GETMBR R2 R0 K3 + 0x780A0008, // 0041 JMPF R2 #004B + 0x60080003, // 0042 GETGBL R2 G3 + 0x5C0C0000, // 0043 MOVE R3 R0 + 0x7C080200, // 0044 CALL R2 1 + 0x8C080504, // 0045 GETMET R2 R2 K4 + 0x5C100200, // 0046 MOVE R4 R1 + 0x7C080400, // 0047 CALL R2 2 + 0x50080000, // 0048 LDBOOL R2 0 0 + 0x90020602, // 0049 SETMBR R0 K3 R2 + 0x70020004, // 004A JMP #0050 + 0x50080200, // 004B LDBOOL R2 1 0 + 0x90020A02, // 004C SETMBR R0 K5 R2 + 0x88080114, // 004D GETMBR R2 R0 K20 + 0x8C080515, // 004E GETMET R2 R2 K21 + 0x7C080200, // 004F CALL R2 1 + 0x80000000, // 0050 RET 0 }) ) ); @@ -1023,8 +1238,8 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ be_nested_proto( - 11, /* nstack */ - 5, /* argc */ + 12, /* nstack */ + 6, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1045,33 +1260,34 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x60140003, // 0000 GETGBL R5 G3 - 0x5C180000, // 0001 MOVE R6 R0 - 0x7C140200, // 0002 CALL R5 1 - 0x8C140B00, // 0003 GETMET R5 R5 K0 - 0x4C1C0000, // 0004 LDNIL R7 - 0x5C200600, // 0005 MOVE R8 R3 - 0x7C140600, // 0006 CALL R5 3 - 0xB8160400, // 0007 GETNGBL R5 K2 - 0x88140B03, // 0008 GETMBR R5 R5 K3 - 0x8C140B04, // 0009 GETMET R5 R5 K4 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x5C200400, // 000B MOVE R8 R2 - 0x54260004, // 000C LDINT R9 5 - 0x50280200, // 000D LDBOOL R10 1 0 - 0x7C140A00, // 000E CALL R5 5 - 0x90020205, // 000F SETMBR R0 K1 R5 - 0x90020A04, // 0010 SETMBR R0 K5 R4 - 0x50140200, // 0011 LDBOOL R5 1 0 - 0x90020C05, // 0012 SETMBR R0 K6 R5 - 0x8C140107, // 0013 GETMET R5 R0 K7 - 0x881C0908, // 0014 GETMBR R7 R4 K8 - 0x7C140400, // 0015 CALL R5 2 - 0x8C140109, // 0016 GETMET R5 R0 K9 - 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x7C140400, // 0018 CALL R5 2 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[27]) { /* code */ + 0x60180003, // 0000 GETGBL R6 G3 + 0x5C1C0000, // 0001 MOVE R7 R0 + 0x7C180200, // 0002 CALL R6 1 + 0x8C180D00, // 0003 GETMET R6 R6 K0 + 0x4C200000, // 0004 LDNIL R8 + 0x5C240600, // 0005 MOVE R9 R3 + 0x5C280800, // 0006 MOVE R10 R4 + 0x7C180800, // 0007 CALL R6 4 + 0xB81A0400, // 0008 GETNGBL R6 K2 + 0x88180D03, // 0009 GETMBR R6 R6 K3 + 0x8C180D04, // 000A GETMET R6 R6 K4 + 0x5C200200, // 000B MOVE R8 R1 + 0x5C240400, // 000C MOVE R9 R2 + 0x542A0004, // 000D LDINT R10 5 + 0x502C0200, // 000E LDBOOL R11 1 0 + 0x7C180A00, // 000F CALL R6 5 + 0x90020206, // 0010 SETMBR R0 K1 R6 + 0x90020A05, // 0011 SETMBR R0 K5 R5 + 0x50180200, // 0012 LDBOOL R6 1 0 + 0x90020C06, // 0013 SETMBR R0 K6 R6 + 0x8C180107, // 0014 GETMET R6 R0 K7 + 0x88200B08, // 0015 GETMBR R8 R5 K8 + 0x7C180400, // 0016 CALL R6 2 + 0x8C180109, // 0017 GETMET R6 R0 K9 + 0x50200000, // 0018 LDBOOL R8 0 0 + 0x7C180400, // 0019 CALL R6 2 + 0x80000000, // 001A RET 0 }) ) ); @@ -1407,31 +1623,32 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */ }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ + ( &(const binstruction[25]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 0x8C100900, // 0003 GETMET R4 R4 K0 0x4C180000, // 0004 LDNIL R6 0x4C1C0000, // 0005 LDNIL R7 - 0x7C100600, // 0006 CALL R4 3 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x88100903, // 0008 GETMBR R4 R4 K3 - 0x8C100904, // 0009 GETMET R4 R4 K4 - 0x5C180200, // 000A MOVE R6 R1 - 0x5C1C0400, // 000B MOVE R7 R2 - 0x54220004, // 000C LDINT R8 5 - 0x50240200, // 000D LDBOOL R9 1 0 - 0x7C100A00, // 000E CALL R4 5 - 0x90020204, // 000F SETMBR R0 K1 R4 - 0x90020A03, // 0010 SETMBR R0 K5 R3 - 0x8C100106, // 0011 GETMET R4 R0 K6 - 0x88180707, // 0012 GETMBR R6 R3 K7 - 0x7C100400, // 0013 CALL R4 2 - 0x8C100108, // 0014 GETMET R4 R0 K8 - 0x50180200, // 0015 LDBOOL R6 1 0 - 0x7C100400, // 0016 CALL R4 2 - 0x80000000, // 0017 RET 0 + 0x4C200000, // 0006 LDNIL R8 + 0x7C100800, // 0007 CALL R4 4 + 0xB8120400, // 0008 GETNGBL R4 K2 + 0x88100903, // 0009 GETMBR R4 R4 K3 + 0x8C100904, // 000A GETMET R4 R4 K4 + 0x5C180200, // 000B MOVE R6 R1 + 0x5C1C0400, // 000C MOVE R7 R2 + 0x54220004, // 000D LDINT R8 5 + 0x50240200, // 000E LDBOOL R9 1 0 + 0x7C100A00, // 000F CALL R4 5 + 0x90020204, // 0010 SETMBR R0 K1 R4 + 0x90020A03, // 0011 SETMBR R0 K5 R3 + 0x8C100106, // 0012 GETMET R4 R0 K6 + 0x88180707, // 0013 GETMBR R6 R3 K7 + 0x7C100400, // 0014 CALL R4 2 + 0x8C100108, // 0015 GETMET R4 R0 K8 + 0x50180200, // 0016 LDBOOL R6 1 0 + 0x7C100400, // 0017 CALL R4 2 + 0x80000000, // 0018 RET 0 }) ) ); @@ -1466,8 +1683,8 @@ extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ be_nested_proto( - 8, /* nstack */ - 4, /* argc */ + 10, /* nstack */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1483,21 +1700,22 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x7C100600, // 0006 CALL R4 3 - 0x90020203, // 0007 SETMBR R0 K1 R3 - 0x50100200, // 0008 LDBOOL R4 1 0 - 0x90020404, // 0009 SETMBR R0 K2 R4 - 0x8C100103, // 000A GETMET R4 R0 K3 - 0x88180704, // 000B GETMBR R6 R3 K4 - 0x7C100400, // 000C CALL R4 2 - 0x80000000, // 000D RET 0 + ( &(const binstruction[15]) { /* code */ + 0x60140003, // 0000 GETGBL R5 G3 + 0x5C180000, // 0001 MOVE R6 R0 + 0x7C140200, // 0002 CALL R5 1 + 0x8C140B00, // 0003 GETMET R5 R5 K0 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x5C240600, // 0006 MOVE R9 R3 + 0x7C140800, // 0007 CALL R5 4 + 0x90020204, // 0008 SETMBR R0 K1 R4 + 0x50140200, // 0009 LDBOOL R5 1 0 + 0x90020405, // 000A SETMBR R0 K2 R5 + 0x8C140103, // 000B GETMET R5 R0 K3 + 0x881C0904, // 000C GETMBR R7 R4 K4 + 0x7C140400, // 000D CALL R5 2 + 0x80000000, // 000E RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h index e10ec8aee..f453f78d0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h @@ -7,118 +7,10 @@ extern const bclass be_class_Matter_IM_Subscription; /******************************************************************** -** Solidified function: init +** Solidified function: event_published ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription_init, /* name */ - be_nested_proto( - 13, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(subscription_id), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(min_interval_floor), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(min_interval), - /* K6 */ be_nested_str_weak(max_interval_ceiling), - /* K7 */ be_nested_str_weak(max_interval), - /* K8 */ be_nested_str_weak(wait_status), - /* K9 */ be_nested_str_weak(fabric_filtered), - /* K10 */ be_nested_str_weak(path_list), - /* K11 */ be_nested_str_weak(attributes_requests), - /* K12 */ be_nested_str_weak(matter), - /* K13 */ be_nested_str_weak(Path), - /* K14 */ be_nested_str_weak(endpoint), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(attribute), - /* K17 */ be_nested_str_weak(push), - /* K18 */ be_nested_str_weak(stop_iteration), - /* K19 */ be_nested_str_weak(updates), - /* K20 */ be_nested_str_weak(clear_before_arm), - /* K21 */ be_nested_str_weak(is_keep_alive), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[61]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x88140903, // 0003 GETMBR R5 R4 K3 - 0x14180B04, // 0004 LT R6 R5 K4 - 0x781A0000, // 0005 JMPF R6 #0007 - 0x58140004, // 0006 LDCONST R5 K4 - 0x541A003B, // 0007 LDINT R6 60 - 0x24180A06, // 0008 GT R6 R5 R6 - 0x781A0000, // 0009 JMPF R6 #000B - 0x5416003B, // 000A LDINT R5 60 - 0x90020A05, // 000B SETMBR R0 K5 R5 - 0x88180906, // 000C GETMBR R6 R4 K6 - 0x541E003B, // 000D LDINT R7 60 - 0x141C0C07, // 000E LT R7 R6 R7 - 0x781E0000, // 000F JMPF R7 #0011 - 0x541A003B, // 0010 LDINT R6 60 - 0x541E0E0F, // 0011 LDINT R7 3600 - 0x241C0C07, // 0012 GT R7 R6 R7 - 0x781E0000, // 0013 JMPF R7 #0015 - 0x541A0E0F, // 0014 LDINT R6 3600 - 0x541A003B, // 0015 LDINT R6 60 - 0x90020E06, // 0016 SETMBR R0 K7 R6 - 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x90021007, // 0018 SETMBR R0 K8 R7 - 0x881C0909, // 0019 GETMBR R7 R4 K9 - 0x90021207, // 001A SETMBR R0 K9 R7 - 0x601C0012, // 001B GETGBL R7 G18 - 0x7C1C0000, // 001C CALL R7 0 - 0x90021407, // 001D SETMBR R0 K10 R7 - 0x601C0010, // 001E GETGBL R7 G16 - 0x8820090B, // 001F GETMBR R8 R4 K11 - 0x7C1C0200, // 0020 CALL R7 1 - 0xA802000F, // 0021 EXBLK 0 #0032 - 0x5C200E00, // 0022 MOVE R8 R7 - 0x7C200000, // 0023 CALL R8 0 - 0xB8261800, // 0024 GETNGBL R9 K12 - 0x8C24130D, // 0025 GETMET R9 R9 K13 - 0x7C240200, // 0026 CALL R9 1 - 0x8828110E, // 0027 GETMBR R10 R8 K14 - 0x90261C0A, // 0028 SETMBR R9 K14 R10 - 0x8828110F, // 0029 GETMBR R10 R8 K15 - 0x90261E0A, // 002A SETMBR R9 K15 R10 - 0x88281110, // 002B GETMBR R10 R8 K16 - 0x9026200A, // 002C SETMBR R9 K16 R10 - 0x8828010A, // 002D GETMBR R10 R0 K10 - 0x8C281511, // 002E GETMET R10 R10 K17 - 0x5C301200, // 002F MOVE R12 R9 - 0x7C280400, // 0030 CALL R10 2 - 0x7001FFEF, // 0031 JMP #0022 - 0x581C0012, // 0032 LDCONST R7 K18 - 0xAC1C0200, // 0033 CATCH R7 1 0 - 0xB0080000, // 0034 RAISE 2 R0 R0 - 0x601C0012, // 0035 GETGBL R7 G18 - 0x7C1C0000, // 0036 CALL R7 0 - 0x90022607, // 0037 SETMBR R0 K19 R7 - 0x8C1C0114, // 0038 GETMET R7 R0 K20 - 0x7C1C0200, // 0039 CALL R7 1 - 0x501C0000, // 003A LDBOOL R7 0 0 - 0x90022A07, // 003B SETMBR R0 K21 R7 - 0x80000000, // 003C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_attribute_unique_path -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* name */ +be_local_closure(class_Matter_IM_Subscription_event_published, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -129,122 +21,41 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n &be_class_Matter_IM_Subscription, 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(updates), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(push), + /* K0 */ be_nested_str_weak(update_event_no), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(event_generators), + /* K3 */ be_nested_str_weak(event_is_match), + /* K4 */ be_nested_str_weak(event_no), + /* K5 */ be_nested_str_weak(add), + /* K6 */ be_const_int(1), }), - be_str_weak(_add_attribute_unique_path), + be_str_weak(event_published), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0010, // 0005 JMPF R3 #0017 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x88140302, // 0009 GETMBR R5 R1 K2 - 0x1C100805, // 000A EQ R4 R4 R5 - 0x78120008, // 000B JMPF R4 #0015 - 0x88100703, // 000C GETMBR R4 R3 K3 - 0x88140303, // 000D GETMBR R5 R1 K3 - 0x1C100805, // 000E EQ R4 R4 R5 - 0x78120004, // 000F JMPF R4 #0015 - 0x88100704, // 0010 GETMBR R4 R3 K4 - 0x88140304, // 0011 GETMBR R5 R1 K4 - 0x1C100805, // 0012 EQ R4 R4 R5 - 0x78120000, // 0013 JMPF R4 #0015 - 0x80000800, // 0014 RET 0 - 0x00080505, // 0015 ADD R2 R2 K5 - 0x7001FFE9, // 0016 JMP #0001 - 0x880C0101, // 0017 GETMBR R3 R0 K1 - 0x8C0C0706, // 0018 GETMET R3 R3 K6 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C0C0400, // 001A CALL R3 2 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_self -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), - /* K2 */ be_nested_str_weak(subscription_id), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(subs_shop), - /* K5 */ be_nested_str_weak(remove_sub), - }), - be_str_weak(remove_self), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x60080008, // 0001 GETGBL R2 G8 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x000A0202, // 0004 ADD R2 K1 R2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x7C040400, // 0006 CALL R1 2 - 0x88040104, // 0007 GETMBR R1 R0 K4 - 0x8C040305, // 0008 GETMET R1 R1 K5 - 0x5C0C0000, // 0009 MOVE R3 R0 - 0x7C040400, // 000A CALL R1 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_before_arm -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; -be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(updates), - /* K1 */ be_nested_str_weak(clear), - /* K2 */ be_nested_str_weak(wait_status), - }), - be_str_weak(clear_before_arm), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x50040200, // 0003 LDBOOL R1 1 0 - 0x90020401, // 0004 SETMBR R0 K2 R1 - 0x80000000, // 0005 RET 0 + ( &(const binstruction[24]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x780A0012, // 0003 JMPF R2 #0017 + 0x58080001, // 0004 LDCONST R2 K1 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100102, // 0006 GETMBR R4 R0 K2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000C, // 0009 JMPF R3 #0017 + 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x8C0C0703, // 000C GETMET R3 R3 K3 + 0x5C140200, // 000D MOVE R5 R1 + 0x7C0C0400, // 000E CALL R3 2 + 0x780E0004, // 000F JMPF R3 #0015 + 0x880C0304, // 0010 GETMBR R3 R1 K4 + 0x8C0C0705, // 0011 GETMET R3 R3 K5 + 0x5415FFFE, // 0012 LDINT R5 -1 + 0x7C0C0400, // 0013 CALL R3 2 + 0x90020003, // 0014 SETMBR R0 K0 R3 + 0x00080506, // 0015 ADD R2 R2 K6 + 0x7001FFED, // 0016 JMP #0005 + 0x80000000, // 0017 RET 0 }) ) ); @@ -321,6 +132,301 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name * /*******************************************************************/ +/******************************************************************** +** Solidified function: clear_before_arm +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(updates), + /* K1 */ be_nested_str_weak(clear), + /* K2 */ be_nested_str_weak(wait_status), + /* K3 */ be_nested_str_weak(update_event_no), + }), + be_str_weak(clear_before_arm), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x90020401, // 0004 SETMBR R0 K2 R1 + 0x4C040000, // 0005 LDNIL R1 + 0x90020601, // 0006 SETMBR R0 K3 R1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_init, /* name */ + be_nested_proto( + 17, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(subs_shop), + /* K1 */ be_nested_str_weak(subscription_id), + /* K2 */ be_nested_str_weak(session), + /* K3 */ be_nested_str_weak(min_interval_floor), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(min_interval), + /* K6 */ be_nested_str_weak(max_interval_ceiling), + /* K7 */ be_nested_str_weak(max_interval), + /* K8 */ be_nested_str_weak(wait_status), + /* K9 */ be_nested_str_weak(fabric_filtered), + /* K10 */ be_nested_str_weak(im), + /* K11 */ be_nested_str_weak(device), + /* K12 */ be_nested_str_weak(path_list), + /* K13 */ be_nested_str_weak(attributes_requests), + /* K14 */ be_nested_str_weak(push), + /* K15 */ be_nested_str_weak(matter), + /* K16 */ be_nested_str_weak(Path), + /* K17 */ be_nested_str_weak(endpoint), + /* K18 */ be_nested_str_weak(cluster), + /* K19 */ be_nested_str_weak(attribute), + /* K20 */ be_nested_str_weak(stop_iteration), + /* K21 */ be_nested_str_weak(IM), + /* K22 */ be_nested_str_weak(parse_event_filters_min_no), + /* K23 */ be_nested_str_weak(event_filters), + /* K24 */ be_nested_str_weak(updates), + /* K25 */ be_nested_str_weak(clear_before_arm), + /* K26 */ be_nested_str_weak(is_keep_alive), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[69]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x88140903, // 0003 GETMBR R5 R4 K3 + 0x14180B04, // 0004 LT R6 R5 K4 + 0x781A0000, // 0005 JMPF R6 #0007 + 0x58140004, // 0006 LDCONST R5 K4 + 0x541A003B, // 0007 LDINT R6 60 + 0x24180A06, // 0008 GT R6 R5 R6 + 0x781A0000, // 0009 JMPF R6 #000B + 0x5416003B, // 000A LDINT R5 60 + 0x90020A05, // 000B SETMBR R0 K5 R5 + 0x88180906, // 000C GETMBR R6 R4 K6 + 0x541E003B, // 000D LDINT R7 60 + 0x141C0C07, // 000E LT R7 R6 R7 + 0x781E0000, // 000F JMPF R7 #0011 + 0x541A003B, // 0010 LDINT R6 60 + 0x541E0E0F, // 0011 LDINT R7 3600 + 0x241C0C07, // 0012 GT R7 R6 R7 + 0x781E0000, // 0013 JMPF R7 #0015 + 0x541A0E0F, // 0014 LDINT R6 3600 + 0x541A003B, // 0015 LDINT R6 60 + 0x90020E06, // 0016 SETMBR R0 K7 R6 + 0x501C0000, // 0017 LDBOOL R7 0 0 + 0x90021007, // 0018 SETMBR R0 K8 R7 + 0x881C0909, // 0019 GETMBR R7 R4 K9 + 0x90021207, // 001A SETMBR R0 K9 R7 + 0x881C030A, // 001B GETMBR R7 R1 K10 + 0x881C0F0B, // 001C GETMBR R7 R7 K11 + 0x60200012, // 001D GETGBL R8 G18 + 0x7C200000, // 001E CALL R8 0 + 0x90021808, // 001F SETMBR R0 K12 R8 + 0x8820090D, // 0020 GETMBR R8 R4 K13 + 0x4C240000, // 0021 LDNIL R9 + 0x20201009, // 0022 NE R8 R8 R9 + 0x78220012, // 0023 JMPF R8 #0037 + 0x60200010, // 0024 GETGBL R8 G16 + 0x8824090D, // 0025 GETMBR R9 R4 K13 + 0x7C200200, // 0026 CALL R8 1 + 0xA802000B, // 0027 EXBLK 0 #0034 + 0x5C241000, // 0028 MOVE R9 R8 + 0x7C240000, // 0029 CALL R9 0 + 0x8828010C, // 002A GETMBR R10 R0 K12 + 0x8C28150E, // 002B GETMET R10 R10 K14 + 0xB8321E00, // 002C GETNGBL R12 K15 + 0x8C301910, // 002D GETMET R12 R12 K16 + 0x88381311, // 002E GETMBR R14 R9 K17 + 0x883C1312, // 002F GETMBR R15 R9 K18 + 0x88401313, // 0030 GETMBR R16 R9 K19 + 0x7C300800, // 0031 CALL R12 4 + 0x7C280400, // 0032 CALL R10 2 + 0x7001FFF3, // 0033 JMP #0028 + 0x58200014, // 0034 LDCONST R8 K20 + 0xAC200200, // 0035 CATCH R8 1 0 + 0xB0080000, // 0036 RAISE 2 R0 R0 + 0xB8221E00, // 0037 GETNGBL R8 K15 + 0x88201115, // 0038 GETMBR R8 R8 K21 + 0x8C201116, // 0039 GETMET R8 R8 K22 + 0x88280917, // 003A GETMBR R10 R4 K23 + 0x4C2C0000, // 003B LDNIL R11 + 0x7C200600, // 003C CALL R8 3 + 0x60240012, // 003D GETGBL R9 G18 + 0x7C240000, // 003E CALL R9 0 + 0x90023009, // 003F SETMBR R0 K24 R9 + 0x8C240119, // 0040 GETMET R9 R0 K25 + 0x7C240200, // 0041 CALL R9 1 + 0x50240000, // 0042 LDBOOL R9 0 0 + 0x90023409, // 0043 SETMBR R0 K26 R9 + 0x80000000, // 0044 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_attribute_unique_path +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(updates), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(push), + }), + be_str_weak(_add_attribute_unique_path), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0010, // 0005 JMPF R3 #0017 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x88140302, // 0009 GETMBR R5 R1 K2 + 0x1C100805, // 000A EQ R4 R4 R5 + 0x78120008, // 000B JMPF R4 #0015 + 0x88100703, // 000C GETMBR R4 R3 K3 + 0x88140303, // 000D GETMBR R5 R1 K3 + 0x1C100805, // 000E EQ R4 R4 R5 + 0x78120004, // 000F JMPF R4 #0015 + 0x88100704, // 0010 GETMBR R4 R3 K4 + 0x88140304, // 0011 GETMBR R5 R1 K4 + 0x1C100805, // 0012 EQ R4 R4 R5 + 0x78120000, // 0013 JMPF R4 #0015 + 0x80000800, // 0014 RET 0 + 0x00080505, // 0015 ADD R2 R2 K5 + 0x7001FFE9, // 0016 JMP #0001 + 0x880C0101, // 0017 GETMBR R3 R0 K1 + 0x8C0C0706, // 0018 GETMET R3 R3 K6 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C0C0400, // 001A CALL R3 2 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_event_generator_array +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(event_generators), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(restart_from), + /* K4 */ be_nested_str_weak(update_event_no), + /* K5 */ be_nested_str_weak(resize), + }), + be_str_weak(update_event_generator_array), + &be_const_str_solidified, + ( &(const binstruction[46]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060002, // 0004 JMPF R1 #0008 + 0x4C040000, // 0005 LDNIL R1 + 0x80040200, // 0006 RET 1 R1 + 0x70020024, // 0007 JMP #002D + 0x6004000C, // 0008 GETGBL R1 G12 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x7C040200, // 000A CALL R1 1 + 0x1C040302, // 000B EQ R1 R1 K2 + 0x78060008, // 000C JMPF R1 #0016 + 0x88040100, // 000D GETMBR R1 R0 K0 + 0x94040301, // 000E GETIDX R1 R1 K1 + 0x8C040303, // 000F GETMET R1 R1 K3 + 0x880C0104, // 0010 GETMBR R3 R0 K4 + 0x7C040400, // 0011 CALL R1 2 + 0x88040100, // 0012 GETMBR R1 R0 K0 + 0x94040301, // 0013 GETIDX R1 R1 K1 + 0x80040200, // 0014 RET 1 R1 + 0x70020016, // 0015 JMP #002D + 0x60040012, // 0016 GETGBL R1 G18 + 0x7C040000, // 0017 CALL R1 0 + 0x8C080305, // 0018 GETMET R2 R1 K5 + 0x6010000C, // 0019 GETGBL R4 G12 + 0x88140100, // 001A GETMBR R5 R0 K0 + 0x7C100200, // 001B CALL R4 1 + 0x7C080400, // 001C CALL R2 2 + 0x58080001, // 001D LDCONST R2 K1 + 0x600C000C, // 001E GETGBL R3 G12 + 0x88100100, // 001F GETMBR R4 R0 K0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x140C0403, // 0021 LT R3 R2 R3 + 0x780E0009, // 0022 JMPF R3 #002D + 0x880C0100, // 0023 GETMBR R3 R0 K0 + 0x940C0602, // 0024 GETIDX R3 R3 R2 + 0x8C0C0703, // 0025 GETMET R3 R3 K3 + 0x88140104, // 0026 GETMBR R5 R0 K4 + 0x7C0C0400, // 0027 CALL R3 2 + 0x880C0100, // 0028 GETMBR R3 R0 K0 + 0x940C0602, // 0029 GETIDX R3 R3 R2 + 0x98040403, // 002A SETIDX R1 R2 R3 + 0x00080502, // 002B ADD R2 R2 K2 + 0x7001FFF0, // 002C JMP #001E + 0x80000000, // 002D RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: re_arm ********************************************************************/ @@ -353,35 +459,126 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ }), be_str_weak(re_arm), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x88080104, // 0005 GETMBR R2 R0 K4 - 0x880C0105, // 0006 GETMBR R3 R0 K5 - 0x04080403, // 0007 SUB R2 R2 R3 - 0x540E03E7, // 0008 LDINT R3 1000 - 0x08080403, // 0009 MUL R2 R2 R3 - 0x00080202, // 000A ADD R2 R1 R2 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x88080107, // 000C GETMBR R2 R0 K7 - 0x540E03E7, // 000D LDINT R3 1000 - 0x08080403, // 000E MUL R2 R2 R3 - 0x00080202, // 000F ADD R2 R1 R2 - 0x04080508, // 0010 SUB R2 R2 K8 - 0x90020C02, // 0011 SETMBR R0 K6 R2 - 0x88080109, // 0012 GETMBR R2 R0 K9 - 0x740A0006, // 0013 JMPT R2 #001B - 0xB80A1400, // 0014 GETNGBL R2 K10 - 0x600C0018, // 0015 GETGBL R3 G24 - 0x5810000B, // 0016 LDCONST R4 K11 - 0x8814010C, // 0017 GETMBR R5 R0 K12 - 0x7C0C0400, // 0018 CALL R3 2 - 0x5810000D, // 0019 LDCONST R4 K13 - 0x7C080400, // 001A CALL R2 2 - 0x80000000, // 001B RET 0 + ( &(const binstruction[31]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060000, // 0001 JMPT R1 #0003 + 0x80000200, // 0002 RET 0 + 0x50040000, // 0003 LDBOOL R1 0 0 + 0x90020001, // 0004 SETMBR R0 K0 R1 + 0xB8060200, // 0005 GETNGBL R1 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x7C040200, // 0007 CALL R1 1 + 0x88080104, // 0008 GETMBR R2 R0 K4 + 0x880C0105, // 0009 GETMBR R3 R0 K5 + 0x04080403, // 000A SUB R2 R2 R3 + 0x540E03E7, // 000B LDINT R3 1000 + 0x08080403, // 000C MUL R2 R2 R3 + 0x00080202, // 000D ADD R2 R1 R2 + 0x90020602, // 000E SETMBR R0 K3 R2 + 0x88080107, // 000F GETMBR R2 R0 K7 + 0x540E03E7, // 0010 LDINT R3 1000 + 0x08080403, // 0011 MUL R2 R2 R3 + 0x00080202, // 0012 ADD R2 R1 R2 + 0x04080508, // 0013 SUB R2 R2 K8 + 0x90020C02, // 0014 SETMBR R0 K6 R2 + 0x88080109, // 0015 GETMBR R2 R0 K9 + 0x740A0006, // 0016 JMPT R2 #001E + 0xB80A1400, // 0017 GETNGBL R2 K10 + 0x600C0018, // 0018 GETGBL R3 G24 + 0x5810000B, // 0019 LDCONST R4 K11 + 0x8814010C, // 001A GETMBR R5 R0 K12 + 0x7C0C0400, // 001B CALL R3 2 + 0x5810000D, // 001C LDCONST R4 K13 + 0x7C080400, // 001D CALL R2 2 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_event_generator_or_arr +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(event_generators), + }), + be_str_weak(set_event_generator_or_arr), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0x60080012, // 0003 GETGBL R2 G18 + 0x7C080000, // 0004 CALL R2 0 + 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x7002000A, // 0006 JMP #0012 + 0x6008000F, // 0007 GETGBL R2 G15 + 0x5C0C0200, // 0008 MOVE R3 R1 + 0x60100012, // 0009 GETGBL R4 G18 + 0x7C080400, // 000A CALL R2 2 + 0x780A0001, // 000B JMPF R2 #000E + 0x90020001, // 000C SETMBR R0 K0 R1 + 0x70020003, // 000D JMP #0012 + 0x60080012, // 000E GETGBL R2 G18 + 0x7C080000, // 000F CALL R2 0 + 0x400C0401, // 0010 CONNECT R3 R2 R1 + 0x90020002, // 0011 SETMBR R0 K0 R2 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_self +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription; +be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), + /* K2 */ be_nested_str_weak(subscription_id), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(subs_shop), + /* K5 */ be_nested_str_weak(remove_sub), + }), + be_str_weak(remove_self), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x60080008, // 0001 GETGBL R2 G8 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x7C080200, // 0003 CALL R2 1 + 0x000A0202, // 0004 ADD R2 K1 R2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x7C040400, // 0006 CALL R1 2 + 0x88040104, // 0007 GETMBR R1 R0 K4 + 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x5C0C0000, // 0009 MOVE R3 R0 + 0x7C040400, // 000A CALL R1 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -392,29 +589,34 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ ** Solidified class: Matter_IM_Subscription ********************************************************************/ be_local_class(Matter_IM_Subscription, - 12, + 14, NULL, - be_nested_map(19, + be_nested_map(24, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(not_before, -1), be_const_var(7) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_Subscription_init_closure) }, + { be_const_key_weak(expiration, 1), be_const_var(9) }, + { be_const_key_weak(remove_self, -1), be_const_closure(class_Matter_IM_Subscription_remove_self_closure) }, + { be_const_key_weak(fabric_filtered, 23), be_const_var(7) }, + { be_const_key_weak(subs_shop, 16), be_const_var(0) }, { be_const_key_weak(attribute_updated_ctx, -1), be_const_closure(class_Matter_IM_Subscription_attribute_updated_ctx_closure) }, - { be_const_key_weak(updates, -1), be_const_var(11) }, - { be_const_key_weak(min_interval, -1), be_const_var(4) }, - { be_const_key_weak(expiration, -1), be_const_var(8) }, - { be_const_key_weak(subscription_id, 3), be_const_var(1) }, - { be_const_key_weak(subs_shop, -1), be_const_var(0) }, - { be_const_key_weak(max_interval, -1), be_const_var(5) }, - { be_const_key_weak(remove_self, 1), be_const_closure(class_Matter_IM_Subscription_remove_self_closure) }, + { be_const_key_weak(update_event_no, -1), be_const_var(13) }, { be_const_key_weak(MAX_INTERVAL_MARGIN, -1), be_const_int(5) }, - { be_const_key_weak(fabric_filtered, 7), be_const_var(6) }, - { be_const_key_weak(_add_attribute_unique_path, 11), be_const_closure(class_Matter_IM_Subscription__add_attribute_unique_path_closure) }, - { be_const_key_weak(path_list, 9), be_const_var(3) }, - { be_const_key_weak(is_keep_alive, -1), be_const_var(10) }, - { be_const_key_weak(clear_before_arm, -1), be_const_closure(class_Matter_IM_Subscription_clear_before_arm_closure) }, - { be_const_key_weak(session, 2), be_const_var(2) }, + { be_const_key_weak(session, 14), be_const_var(2) }, + { be_const_key_weak(not_before, -1), be_const_var(8) }, + { be_const_key_weak(path_list, 5), be_const_var(3) }, + { be_const_key_weak(event_generators, -1), be_const_var(4) }, + { be_const_key_weak(clear_before_arm, 4), be_const_closure(class_Matter_IM_Subscription_clear_before_arm_closure) }, + { be_const_key_weak(is_keep_alive, 11), be_const_var(11) }, + { be_const_key_weak(updates, 12), be_const_var(12) }, + { be_const_key_weak(wait_status, -1), be_const_var(10) }, + { be_const_key_weak(max_interval, -1), be_const_var(6) }, + { be_const_key_weak(init, 9), be_const_closure(class_Matter_IM_Subscription_init_closure) }, + { be_const_key_weak(min_interval, -1), be_const_var(5) }, + { be_const_key_weak(_add_attribute_unique_path, -1), be_const_closure(class_Matter_IM_Subscription__add_attribute_unique_path_closure) }, + { be_const_key_weak(update_event_generator_array, -1), be_const_closure(class_Matter_IM_Subscription_update_event_generator_array_closure) }, + { be_const_key_weak(subscription_id, -1), be_const_var(1) }, { be_const_key_weak(re_arm, -1), be_const_closure(class_Matter_IM_Subscription_re_arm_closure) }, - { be_const_key_weak(wait_status, 0), be_const_var(9) }, + { be_const_key_weak(set_event_generator_or_arr, -1), be_const_closure(class_Matter_IM_Subscription_set_event_generator_or_arr_closure) }, + { be_const_key_weak(event_published, -1), be_const_closure(class_Matter_IM_Subscription_event_published_closure) }, })), be_str_weak(Matter_IM_Subscription) ); @@ -422,10 +624,10 @@ be_local_class(Matter_IM_Subscription, extern const bclass be_class_Matter_IM_Subscription_Shop; /******************************************************************** -** Solidified function: every_250ms +** Solidified function: every_50ms ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */ +be_local_closure(class_Matter_IM_Subscription_Shop_every_50ms, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ @@ -435,79 +637,84 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Subscription_Shop, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ + ( &(const bvalue[15]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), /* K2 */ be_nested_str_weak(wait_status), - /* K3 */ be_nested_str_weak(updates), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - /* K6 */ be_nested_str_weak(not_before), - /* K7 */ be_nested_str_weak(im), - /* K8 */ be_nested_str_weak(send_subscribe_update), - /* K9 */ be_nested_str_weak(clear_before_arm), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(expiration), - /* K12 */ be_nested_str_weak(send_subscribe_heartbeat), - /* K13 */ be_nested_str_weak(re_arm), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(time_reached), + /* K5 */ be_nested_str_weak(not_before), + /* K6 */ be_nested_str_weak(updates), + /* K7 */ be_nested_str_weak(update_event_no), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(send_subscribe_update), + /* K10 */ be_nested_str_weak(clear_before_arm), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(expiration), + /* K13 */ be_nested_str_weak(send_subscribe_heartbeat), + /* K14 */ be_nested_str_weak(re_arm), }), - be_str_weak(every_250ms), + be_str_weak(every_50ms), &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ + ( &(const binstruction[58]) { /* code */ 0x58040000, // 0000 LDCONST R1 K0 0x6008000C, // 0001 GETGBL R2 G12 0x880C0101, // 0002 GETMBR R3 R0 K1 0x7C080200, // 0003 CALL R2 1 0x14080202, // 0004 LT R2 R1 R2 - 0x780A0015, // 0005 JMPF R2 #001C + 0x780A0019, // 0005 JMPF R2 #0020 0x88080101, // 0006 GETMBR R2 R0 K1 0x94080401, // 0007 GETIDX R2 R2 R1 0x880C0502, // 0008 GETMBR R3 R2 K2 - 0x740E000F, // 0009 JMPT R3 #001A - 0x600C000C, // 000A GETGBL R3 G12 - 0x88100503, // 000B GETMBR R4 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x240C0700, // 000D GT R3 R3 K0 - 0x780E000A, // 000E JMPF R3 #001A - 0xB80E0800, // 000F GETNGBL R3 K4 - 0x8C0C0705, // 0010 GETMET R3 R3 K5 - 0x88140506, // 0011 GETMBR R5 R2 K6 - 0x7C0C0400, // 0012 CALL R3 2 - 0x780E0005, // 0013 JMPF R3 #001A - 0x880C0107, // 0014 GETMBR R3 R0 K7 - 0x8C0C0708, // 0015 GETMET R3 R3 K8 - 0x5C140400, // 0016 MOVE R5 R2 - 0x7C0C0400, // 0017 CALL R3 2 - 0x8C0C0509, // 0018 GETMET R3 R2 K9 - 0x7C0C0200, // 0019 CALL R3 1 - 0x0004030A, // 001A ADD R1 R1 K10 - 0x7001FFE4, // 001B JMP #0001 - 0x58040000, // 001C LDCONST R1 K0 - 0x6008000C, // 001D GETGBL R2 G12 - 0x880C0101, // 001E GETMBR R3 R0 K1 - 0x7C080200, // 001F CALL R2 1 - 0x14080202, // 0020 LT R2 R1 R2 - 0x780A0012, // 0021 JMPF R2 #0035 - 0x88080101, // 0022 GETMBR R2 R0 K1 - 0x94080401, // 0023 GETIDX R2 R2 R1 - 0x880C0502, // 0024 GETMBR R3 R2 K2 - 0x740E000C, // 0025 JMPT R3 #0033 - 0xB80E0800, // 0026 GETNGBL R3 K4 - 0x8C0C0705, // 0027 GETMET R3 R3 K5 - 0x8814050B, // 0028 GETMBR R5 R2 K11 - 0x7C0C0400, // 0029 CALL R3 2 - 0x780E0007, // 002A JMPF R3 #0033 - 0x880C0107, // 002B GETMBR R3 R0 K7 - 0x8C0C070C, // 002C GETMET R3 R3 K12 - 0x5C140400, // 002D MOVE R5 R2 - 0x7C0C0400, // 002E CALL R3 2 - 0x8C0C0509, // 002F GETMET R3 R2 K9 - 0x7C0C0200, // 0030 CALL R3 1 - 0x8C0C050D, // 0031 GETMET R3 R2 K13 - 0x7C0C0200, // 0032 CALL R3 1 - 0x0004030A, // 0033 ADD R1 R1 K10 - 0x7001FFE7, // 0034 JMP #001D - 0x80000000, // 0035 RET 0 + 0x740E0013, // 0009 JMPT R3 #001E + 0xB80E0600, // 000A GETNGBL R3 K3 + 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x88140505, // 000C GETMBR R5 R2 K5 + 0x7C0C0400, // 000D CALL R3 2 + 0x780E000E, // 000E JMPF R3 #001E + 0x600C000C, // 000F GETGBL R3 G12 + 0x88100506, // 0010 GETMBR R4 R2 K6 + 0x7C0C0200, // 0011 CALL R3 1 + 0x240C0700, // 0012 GT R3 R3 K0 + 0x740E0003, // 0013 JMPT R3 #0018 + 0x880C0507, // 0014 GETMBR R3 R2 K7 + 0x4C100000, // 0015 LDNIL R4 + 0x200C0604, // 0016 NE R3 R3 R4 + 0x780E0005, // 0017 JMPF R3 #001E + 0x880C0108, // 0018 GETMBR R3 R0 K8 + 0x8C0C0709, // 0019 GETMET R3 R3 K9 + 0x5C140400, // 001A MOVE R5 R2 + 0x7C0C0400, // 001B CALL R3 2 + 0x8C0C050A, // 001C GETMET R3 R2 K10 + 0x7C0C0200, // 001D CALL R3 1 + 0x0004030B, // 001E ADD R1 R1 K11 + 0x7001FFE0, // 001F JMP #0001 + 0x58040000, // 0020 LDCONST R1 K0 + 0x6008000C, // 0021 GETGBL R2 G12 + 0x880C0101, // 0022 GETMBR R3 R0 K1 + 0x7C080200, // 0023 CALL R2 1 + 0x14080202, // 0024 LT R2 R1 R2 + 0x780A0012, // 0025 JMPF R2 #0039 + 0x88080101, // 0026 GETMBR R2 R0 K1 + 0x94080401, // 0027 GETIDX R2 R2 R1 + 0x880C0502, // 0028 GETMBR R3 R2 K2 + 0x740E000C, // 0029 JMPT R3 #0037 + 0xB80E0600, // 002A GETNGBL R3 K3 + 0x8C0C0704, // 002B GETMET R3 R3 K4 + 0x8814050C, // 002C GETMBR R5 R2 K12 + 0x7C0C0400, // 002D CALL R3 2 + 0x780E0007, // 002E JMPF R3 #0037 + 0x880C0108, // 002F GETMBR R3 R0 K8 + 0x8C0C070D, // 0030 GETMET R3 R3 K13 + 0x5C140400, // 0031 MOVE R5 R2 + 0x7C0C0400, // 0032 CALL R3 2 + 0x8C0C050A, // 0033 GETMET R3 R2 K10 + 0x7C0C0200, // 0034 CALL R3 1 + 0x8C0C050E, // 0035 GETMET R3 R2 K14 + 0x7C0C0200, // 0036 CALL R3 1 + 0x0004030B, // 0037 ADD R1 R1 K11 + 0x7001FFE7, // 0038 JMP #0021 + 0x80000000, // 0039 RET 0 }) ) ); @@ -515,12 +722,12 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */ /******************************************************************** -** Solidified function: get_by_id +** Solidified function: init ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ +be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ be_nested_proto( - 5, /* nstack */ + 3, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -528,100 +735,62 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Subscription_Shop, 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(im), + /* K1 */ be_nested_str_weak(subs), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated_ctx +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription_Shop; +be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription_Shop, + 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(subscription_id), + /* K2 */ be_nested_str_weak(attribute_updated_ctx), /* K3 */ be_const_int(1), }), - be_str_weak(get_by_id), + be_str_weak(attribute_updated_ctx), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0009, // 0005 JMPF R3 #0010 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x880C0702, // 0008 GETMBR R3 R3 K2 - 0x1C0C0601, // 0009 EQ R3 R3 R1 - 0x780E0002, // 000A JMPF R3 #000E - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x80040600, // 000D RET 1 R3 - 0x00080503, // 000E ADD R2 R2 K3 - 0x7001FFF0, // 000F JMP #0001 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: new_subscription -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(get_by_id), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(IM_Subscription), - /* K8 */ be_nested_str_weak(subs), - /* K9 */ be_nested_str_weak(push), - }), - be_str_weak(new_subscription), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100701, // 0001 GETMET R4 R3 K1 - 0x58180002, // 0002 LDCONST R6 K2 - 0x7C100400, // 0003 CALL R4 2 - 0x8C100903, // 0004 GETMET R4 R4 K3 - 0x58180004, // 0005 LDCONST R6 K4 - 0x581C0002, // 0006 LDCONST R7 K2 - 0x7C100600, // 0007 CALL R4 3 - 0x8C140105, // 0008 GETMET R5 R0 K5 - 0x5C1C0800, // 0009 MOVE R7 R4 - 0x7C140400, // 000A CALL R5 2 - 0x78160008, // 000B JMPF R5 #0015 - 0x8C140701, // 000C GETMET R5 R3 K1 - 0x581C0002, // 000D LDCONST R7 K2 - 0x7C140400, // 000E CALL R5 2 - 0x8C140B03, // 000F GETMET R5 R5 K3 - 0x581C0004, // 0010 LDCONST R7 K4 - 0x58200002, // 0011 LDCONST R8 K2 - 0x7C140600, // 0012 CALL R5 3 - 0x5C100A00, // 0013 MOVE R4 R5 - 0x7001FFF2, // 0014 JMP #0008 - 0xB8160C00, // 0015 GETNGBL R5 K6 - 0x8C140B07, // 0016 GETMET R5 R5 K7 - 0x5C1C0000, // 0017 MOVE R7 R0 - 0x5C200800, // 0018 MOVE R8 R4 - 0x5C240200, // 0019 MOVE R9 R1 - 0x5C280400, // 001A MOVE R10 R2 - 0x7C140A00, // 001B CALL R5 5 - 0x88180108, // 001C GETMBR R6 R0 K8 - 0x8C180D09, // 001D GETMET R6 R6 K9 - 0x5C200A00, // 001E MOVE R8 R5 - 0x7C180400, // 001F CALL R6 2 - 0x80040A00, // 0020 RET 1 R5 + ( &(const binstruction[15]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x6010000C, // 0001 GETGBL R4 G12 + 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x7C100200, // 0003 CALL R4 1 + 0x14100604, // 0004 LT R4 R3 R4 + 0x78120007, // 0005 JMPF R4 #000E + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x94100803, // 0007 GETIDX R4 R4 R3 + 0x8C100902, // 0008 GETMET R4 R4 K2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x5C1C0400, // 000A MOVE R7 R2 + 0x7C100600, // 000B CALL R4 3 + 0x000C0703, // 000C ADD R3 R3 K3 + 0x7001FFF2, // 000D JMP #0001 + 0x80000000, // 000E RET 0 }) ) ); @@ -676,13 +845,82 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ /******************************************************************** -** Solidified function: attribute_updated_ctx +** Solidified function: new_subscription ********************************************************************/ extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* name */ +be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription_Shop, + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_const_int(2), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(get_by_id), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(IM_Subscription), + /* K8 */ be_nested_str_weak(subs), + /* K9 */ be_nested_str_weak(push), + }), + be_str_weak(new_subscription), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140901, // 0001 GETMET R5 R4 K1 + 0x581C0002, // 0002 LDCONST R7 K2 + 0x7C140400, // 0003 CALL R5 2 + 0x8C140B03, // 0004 GETMET R5 R5 K3 + 0x581C0004, // 0005 LDCONST R7 K4 + 0x58200002, // 0006 LDCONST R8 K2 + 0x7C140600, // 0007 CALL R5 3 + 0x8C180105, // 0008 GETMET R6 R0 K5 + 0x5C200A00, // 0009 MOVE R8 R5 + 0x7C180400, // 000A CALL R6 2 + 0x781A0008, // 000B JMPF R6 #0015 + 0x8C180901, // 000C GETMET R6 R4 K1 + 0x58200002, // 000D LDCONST R8 K2 + 0x7C180400, // 000E CALL R6 2 + 0x8C180D03, // 000F GETMET R6 R6 K3 + 0x58200004, // 0010 LDCONST R8 K4 + 0x58240002, // 0011 LDCONST R9 K2 + 0x7C180600, // 0012 CALL R6 3 + 0x5C140C00, // 0013 MOVE R5 R6 + 0x7001FFF2, // 0014 JMP #0008 + 0xB81A0C00, // 0015 GETNGBL R6 K6 + 0x8C180D07, // 0016 GETMET R6 R6 K7 + 0x5C200000, // 0017 MOVE R8 R0 + 0x5C240A00, // 0018 MOVE R9 R5 + 0x5C280200, // 0019 MOVE R10 R1 + 0x5C2C0400, // 001A MOVE R11 R2 + 0x5C300600, // 001B MOVE R12 R3 + 0x7C180C00, // 001C CALL R6 6 + 0x881C0108, // 001D GETMBR R7 R0 K8 + 0x8C1C0F09, // 001E GETMET R7 R7 K9 + 0x5C240C00, // 001F MOVE R9 R6 + 0x7C1C0400, // 0020 CALL R7 2 + 0x80040C00, // 0021 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_published +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription_Shop; +be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -692,27 +930,26 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(attribute_updated_ctx), + /* K2 */ be_nested_str_weak(event_published), /* K3 */ be_const_int(1), }), - be_str_weak(attribute_updated_ctx), + be_str_weak(event_published), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x6010000C, // 0001 GETGBL R4 G12 - 0x88140101, // 0002 GETMBR R5 R0 K1 - 0x7C100200, // 0003 CALL R4 1 - 0x14100604, // 0004 LT R4 R3 R4 - 0x78120007, // 0005 JMPF R4 #000E - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x94100803, // 0007 GETIDX R4 R4 R3 - 0x8C100902, // 0008 GETMET R4 R4 K2 - 0x5C180200, // 0009 MOVE R6 R1 - 0x5C1C0400, // 000A MOVE R7 R2 - 0x7C100600, // 000B CALL R4 3 - 0x000C0703, // 000C ADD R3 R3 K3 - 0x7001FFF2, // 000D JMP #0001 - 0x80000000, // 000E RET 0 + ( &(const binstruction[14]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0006, // 0005 JMPF R3 #000D + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C0C0702, // 0008 GETMET R3 R3 K2 + 0x5C140200, // 0009 MOVE R5 R1 + 0x7C0C0400, // 000A CALL R3 2 + 0x00080503, // 000B ADD R2 R2 K3 + 0x7001FFF3, // 000C JMP #0001 + 0x80000000, // 000D RET 0 }) ) ); @@ -768,38 +1005,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; -be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(im), - /* K1 */ be_nested_str_weak(subs), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: remove_by_fabric ********************************************************************/ @@ -842,24 +1047,71 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name * /*******************************************************************/ +/******************************************************************** +** Solidified function: get_by_id +********************************************************************/ +extern const bclass be_class_Matter_IM_Subscription_Shop; +be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Subscription_Shop, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(subs), + /* K2 */ be_nested_str_weak(subscription_id), + /* K3 */ be_const_int(1), + }), + be_str_weak(get_by_id), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0009, // 0005 JMPF R3 #0010 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x880C0702, // 0008 GETMBR R3 R3 K2 + 0x1C0C0601, // 0009 EQ R3 R3 R1 + 0x780E0002, // 000A JMPF R3 #000E + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x940C0602, // 000C GETIDX R3 R3 R2 + 0x80040600, // 000D RET 1 R3 + 0x00080503, // 000E ADD R2 R2 K3 + 0x7001FFF0, // 000F JMP #0001 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_IM_Subscription_Shop ********************************************************************/ be_local_class(Matter_IM_Subscription_Shop, 2, NULL, - be_nested_map(10, + be_nested_map(11, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_IM_Subscription_Shop_every_250ms_closure) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_IM_Subscription_Shop_every_50ms_closure) }, { be_const_key_weak(get_by_id, -1), be_const_closure(class_Matter_IM_Subscription_Shop_get_by_id_closure) }, { be_const_key_weak(attribute_updated_ctx, -1), be_const_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx_closure) }, - { be_const_key_weak(init, 2), be_const_closure(class_Matter_IM_Subscription_Shop_init_closure) }, { be_const_key_weak(remove_sub, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_sub_closure) }, - { be_const_key_weak(new_subscription, 3), be_const_closure(class_Matter_IM_Subscription_Shop_new_subscription_closure) }, - { be_const_key_weak(subs, 8), be_const_var(0) }, - { be_const_key_weak(im, -1), be_const_var(1) }, - { be_const_key_weak(remove_by_session, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_session_closure) }, { be_const_key_weak(remove_by_fabric, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric_closure) }, + { be_const_key_weak(new_subscription, -1), be_const_closure(class_Matter_IM_Subscription_Shop_new_subscription_closure) }, + { be_const_key_weak(event_published, -1), be_const_closure(class_Matter_IM_Subscription_Shop_event_published_closure) }, + { be_const_key_weak(subs, -1), be_const_var(0) }, + { be_const_key_weak(remove_by_session, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_session_closure) }, + { be_const_key_weak(init, 4), be_const_closure(class_Matter_IM_Subscription_Shop_init_closure) }, + { be_const_key_weak(im, 1), be_const_var(1) }, })), be_str_weak(Matter_IM_Subscription_Shop) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index be8bf07c2..80fbe0851 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -695,10 +695,10 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ /******************************************************************** -** Solidified function: every_250ms +** Solidified function: every_50ms ********************************************************************/ extern const bclass be_class_Matter_MessageHandler; -be_local_closure(class_Matter_MessageHandler_every_250ms, /* name */ +be_local_closure(class_Matter_MessageHandler_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -710,9 +710,9 @@ be_local_closure(class_Matter_MessageHandler_every_250ms, /* name */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(im), - /* K1 */ be_nested_str_weak(every_250ms), + /* K1 */ be_nested_str_weak(every_50ms), }), - be_str_weak(every_250ms), + be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -775,7 +775,7 @@ be_local_class(Matter_MessageHandler, { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_MessageHandler_msg_received_closure) }, { be_const_key_weak(im, 11), be_const_var(2) }, { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_MessageHandler_every_second_closure) }, - { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_MessageHandler_every_250ms_closure) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_MessageHandler_every_50ms_closure) }, { be_const_key_weak(send_simple_ack, 1), be_const_closure(class_Matter_MessageHandler_send_simple_ack_closure) }, { be_const_key_weak(send_response_frame, 6), be_const_closure(class_Matter_MessageHandler_send_response_frame_closure) }, { be_const_key_weak(control_message, -1), be_const_var(3) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h index 0fb2d42fd..c6b0ab25d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h @@ -6,6 +6,81 @@ extern const bclass be_class_Matter_Path; +/******************************************************************** +** Solidified function: reset +********************************************************************/ +extern const bclass be_class_Matter_Path; +be_local_closure(class_Matter_Path_reset, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Path, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(fabric_filtered), + /* K4 */ be_nested_str_weak(command), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(msg), + }), + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90020201, // 0002 SETMBR R0 K1 R1 + 0x90020401, // 0003 SETMBR R0 K2 R1 + 0x90020601, // 0004 SETMBR R0 K3 R1 + 0x90020801, // 0005 SETMBR R0 K4 R1 + 0x90020A01, // 0006 SETMBR R0 K5 R1 + 0x90020C01, // 0007 SETMBR R0 K6 R1 + 0x90020E01, // 0008 SETMBR R0 K7 R1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Path; +be_local_closure(class_Matter_Path_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Path, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: tostring ********************************************************************/ @@ -161,68 +236,26 @@ be_local_closure(class_Matter_Path_copy, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: reset -********************************************************************/ -extern const bclass be_class_Matter_Path; -be_local_closure(class_Matter_Path_reset, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Path, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(fabric_filtered), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(msg), - }), - be_str_weak(reset), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x90020201, // 0002 SETMBR R0 K1 R1 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x90020601, // 0004 SETMBR R0 K3 R1 - 0x90020801, // 0005 SETMBR R0 K4 R1 - 0x90020A01, // 0006 SETMBR R0 K5 R1 - 0x90020C01, // 0007 SETMBR R0 K6 R1 - 0x90020E01, // 0008 SETMBR R0 K7 R1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Path ********************************************************************/ be_local_class(Matter_Path, 8, NULL, - be_nested_map(11, + be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(command, -1), be_const_var(4) }, - { be_const_key_weak(cluster, 5), be_const_var(1) }, - { be_const_key_weak(attribute, -1), be_const_var(2) }, - { be_const_key_weak(tostring, 9), be_const_closure(class_Matter_Path_tostring_closure) }, - { be_const_key_weak(log, -1), be_const_var(6) }, - { be_const_key_weak(status, 2), be_const_var(5) }, - { be_const_key_weak(endpoint, -1), be_const_var(0) }, - { be_const_key_weak(msg, 6), be_const_var(7) }, - { be_const_key_weak(fabric_filtered, -1), be_const_var(3) }, - { be_const_key_weak(copy, -1), be_const_closure(class_Matter_Path_copy_closure) }, { be_const_key_weak(reset, -1), be_const_closure(class_Matter_Path_reset_closure) }, + { be_const_key_weak(cluster, 5), be_const_var(1) }, + { be_const_key_weak(fabric_filtered, 6), be_const_var(3) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Path_init_closure) }, + { be_const_key_weak(endpoint, -1), be_const_var(0) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_Matter_Path_tostring_closure) }, + { be_const_key_weak(command, 10), be_const_var(4) }, + { be_const_key_weak(status, -1), be_const_var(5) }, + { be_const_key_weak(copy, -1), be_const_closure(class_Matter_Path_copy_closure) }, + { be_const_key_weak(log, -1), be_const_var(6) }, + { be_const_key_weak(msg, -1), be_const_var(7) }, + { be_const_key_weak(attribute, -1), be_const_var(2) }, })), be_str_weak(Matter_Path) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h new file mode 100644 index 000000000..678c04f70 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h @@ -0,0 +1,351 @@ +/* Solidification of Matter_Path_1_EventGenerator.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_EventGenerator; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_init, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_pi +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_get_pi, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(get_pi), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_start, /* name */ + be_nested_proto( + 7, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(path_in_endpoint), + /* K2 */ be_nested_str_weak(path_in_cluster), + /* K3 */ be_nested_str_weak(path_in_event), + /* K4 */ be_nested_str_weak(path_in_event_min), + /* K5 */ be_nested_str_weak(event_no), + /* K6 */ be_nested_str_weak(finished), + }), + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x8C140100, // 0000 GETMET R5 R0 K0 + 0x7C140200, // 0001 CALL R5 1 + 0x90020201, // 0002 SETMBR R0 K1 R1 + 0x90020402, // 0003 SETMBR R0 K2 R2 + 0x90020603, // 0004 SETMBR R0 K3 R3 + 0x90020804, // 0005 SETMBR R0 K4 R4 + 0x90020A04, // 0006 SETMBR R0 K5 R4 + 0x50140000, // 0007 LDBOOL R5 0 0 + 0x90020C05, // 0008 SETMBR R0 K6 R5 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: reset +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_reset, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(event_no), + /* K1 */ be_nested_str_weak(finished), + }), + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_finished +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_is_finished, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(finished), + }), + be_str_weak(is_finished), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_is_match +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(path_in_endpoint), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(path_in_cluster), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(path_in_event), + /* K5 */ be_nested_str_weak(event_id), + }), + be_str_weak(event_is_match), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0x50080200, // 0000 LDBOOL R2 1 0 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x4C100000, // 0002 LDNIL R4 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x780E0007, // 0004 JMPF R3 #000D + 0x780A0003, // 0005 JMPF R2 #000A + 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0x88100301, // 0007 GETMBR R4 R1 K1 + 0x1C0C0604, // 0008 EQ R3 R3 R4 + 0x740E0000, // 0009 JMPT R3 #000B + 0x500C0001, // 000A LDBOOL R3 0 1 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0x5C080600, // 000C MOVE R2 R3 + 0x880C0102, // 000D GETMBR R3 R0 K2 + 0x4C100000, // 000E LDNIL R4 + 0x200C0604, // 000F NE R3 R3 R4 + 0x780E0007, // 0010 JMPF R3 #0019 + 0x780A0003, // 0011 JMPF R2 #0016 + 0x880C0102, // 0012 GETMBR R3 R0 K2 + 0x88100303, // 0013 GETMBR R4 R1 K3 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x740E0000, // 0015 JMPT R3 #0017 + 0x500C0001, // 0016 LDBOOL R3 0 1 + 0x500C0200, // 0017 LDBOOL R3 1 0 + 0x5C080600, // 0018 MOVE R2 R3 + 0x880C0104, // 0019 GETMBR R3 R0 K4 + 0x4C100000, // 001A LDNIL R4 + 0x200C0604, // 001B NE R3 R3 R4 + 0x780E0007, // 001C JMPF R3 #0025 + 0x780A0003, // 001D JMPF R2 #0022 + 0x880C0104, // 001E GETMBR R3 R0 K4 + 0x88100305, // 001F GETMBR R4 R1 K5 + 0x1C0C0604, // 0020 EQ R3 R3 R4 + 0x740E0000, // 0021 JMPT R3 #0023 + 0x500C0001, // 0022 LDBOOL R3 0 1 + 0x500C0200, // 0023 LDBOOL R3 1 0 + 0x5C080600, // 0024 MOVE R2 R3 + 0x80040400, // 0025 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: next_event +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_next_event, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(finished), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(events), + /* K3 */ be_nested_str_weak(find_min_no), + /* K4 */ be_nested_str_weak(event_no), + /* K5 */ be_nested_str_weak(reset), + /* K6 */ be_nested_str_weak(event_is_match), + }), + be_str_weak(next_event), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060001, // 0001 JMPF R1 #0004 + 0x4C040000, // 0002 LDNIL R1 + 0x80040200, // 0003 RET 1 R1 + 0x50040200, // 0004 LDBOOL R1 1 0 + 0x78060013, // 0005 JMPF R1 #001A + 0x88040101, // 0006 GETMBR R1 R0 K1 + 0x88040302, // 0007 GETMBR R1 R1 K2 + 0x8C040303, // 0008 GETMET R1 R1 K3 + 0x880C0104, // 0009 GETMBR R3 R0 K4 + 0x7C040400, // 000A CALL R1 2 + 0x4C080000, // 000B LDNIL R2 + 0x1C080202, // 000C EQ R2 R1 R2 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C080105, // 000E GETMET R2 R0 K5 + 0x7C080200, // 000F CALL R2 1 + 0x4C080000, // 0010 LDNIL R2 + 0x80040400, // 0011 RET 1 R2 + 0x88080304, // 0012 GETMBR R2 R1 K4 + 0x90020802, // 0013 SETMBR R0 K4 R2 + 0x8C080106, // 0014 GETMET R2 R0 K6 + 0x5C100200, // 0015 MOVE R4 R1 + 0x7C080400, // 0016 CALL R2 2 + 0x780A0000, // 0017 JMPF R2 #0019 + 0x80040200, // 0018 RET 1 R1 + 0x7001FFE9, // 0019 JMP #0004 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: restart_from +********************************************************************/ +extern const bclass be_class_Matter_EventGenerator; +be_local_closure(class_Matter_EventGenerator_restart_from, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventGenerator, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(finished), + /* K1 */ be_nested_str_weak(event_no), + }), + be_str_weak(restart_from), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x50080000, // 0000 LDBOOL R2 0 0 + 0x90020002, // 0001 SETMBR R0 K0 R2 + 0x90020201, // 0002 SETMBR R0 K1 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_EventGenerator +********************************************************************/ +be_local_class(Matter_EventGenerator, + 7, + NULL, + be_nested_map(15, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventGenerator_init_closure) }, + { be_const_key_weak(path_in_endpoint, -1), be_const_var(1) }, + { be_const_key_weak(get_pi, -1), be_const_closure(class_Matter_EventGenerator_get_pi_closure) }, + { be_const_key_weak(path_in_event, -1), be_const_var(3) }, + { be_const_key_weak(finished, -1), be_const_var(6) }, + { be_const_key_weak(path_in_event_min, -1), be_const_var(4) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(event_no, 9), be_const_var(5) }, + { be_const_key_weak(is_finished, -1), be_const_closure(class_Matter_EventGenerator_is_finished_closure) }, + { be_const_key_weak(restart_from, 5), be_const_closure(class_Matter_EventGenerator_restart_from_closure) }, + { be_const_key_weak(event_is_match, -1), be_const_closure(class_Matter_EventGenerator_event_is_match_closure) }, + { be_const_key_weak(start, 13), be_const_closure(class_Matter_EventGenerator_start_closure) }, + { be_const_key_weak(reset, 7), be_const_closure(class_Matter_EventGenerator_reset_closure) }, + { be_const_key_weak(next_event, -1), be_const_closure(class_Matter_EventGenerator_next_event_closure) }, + { be_const_key_weak(path_in_cluster, -1), be_const_var(2) }, + })), + be_str_weak(Matter_EventGenerator) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h similarity index 96% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h index 5457a5159..7ac8fdb3e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h @@ -1,4 +1,4 @@ -/* Solidification of Matter_Path_1_Generator.h */ +/* Solidification of Matter_Path_1_PathGenerator.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ @@ -119,10 +119,10 @@ be_local_closure(class_Matter_PathGenerator_is_direct, /* name */ /******************************************************************** -** Solidified function: default_status_error +** Solidified function: is_finished ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_default_status_error, /* name */ +be_local_closure(class_Matter_PathGenerator_is_finished, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -132,43 +132,16 @@ be_local_closure(class_Matter_PathGenerator_default_status_error, /* name */ 0, /* has sup protos */ &be_class_Matter_PathGenerator, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(is_direct), - /* K1 */ be_nested_str_weak(endpoint_found), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K4 */ be_nested_str_weak(cluster_found), - /* K5 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K6 */ be_nested_str_weak(attribute_found), - /* K7 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K8 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(pi), }), - be_str_weak(default_status_error), + be_str_weak(is_finished), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x78060011, // 0002 JMPF R1 #0015 - 0x88040101, // 0003 GETMBR R1 R0 K1 - 0x74060002, // 0004 JMPT R1 #0008 - 0xB8060400, // 0005 GETNGBL R1 K2 - 0x88040303, // 0006 GETMBR R1 R1 K3 - 0x80040200, // 0007 RET 1 R1 - 0x88040104, // 0008 GETMBR R1 R0 K4 - 0x74060002, // 0009 JMPT R1 #000D - 0xB8060400, // 000A GETNGBL R1 K2 - 0x88040305, // 000B GETMBR R1 R1 K5 - 0x80040200, // 000C RET 1 R1 - 0x88040106, // 000D GETMBR R1 R0 K6 - 0x74060002, // 000E JMPT R1 #0012 - 0xB8060400, // 000F GETNGBL R1 K2 - 0x88040307, // 0010 GETMBR R1 R1 K7 - 0x80040200, // 0011 RET 1 R1 - 0xB8060400, // 0012 GETNGBL R1 K2 - 0x88040308, // 0013 GETMBR R1 R1 K8 - 0x80040200, // 0014 RET 1 R1 - 0x4C040000, // 0015 LDNIL R1 - 0x80040200, // 0016 RET 1 R1 + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -176,10 +149,10 @@ be_local_closure(class_Matter_PathGenerator_default_status_error, /* name */ /******************************************************************** -** Solidified function: next +** Solidified function: next_attribute ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_next, /* name */ +be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -210,9 +183,9 @@ be_local_closure(class_Matter_PathGenerator_next, /* name */ /* K17 */ be_nested_str_weak(path_in_endpoint), /* K18 */ be_nested_str_weak(path_in_cluster), /* K19 */ be_nested_str_weak(path_in_attribute), - /* K20 */ be_nested_str_weak(default_status_error), + /* K20 */ be_nested_str_weak(_default_status_error), }), - be_str_weak(next), + be_str_weak(next_attribute), &be_const_str_solidified, ( &(const binstruction[95]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -392,10 +365,10 @@ be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ /******************************************************************** -** Solidified function: finished +** Solidified function: _default_status_error ********************************************************************/ extern const bclass be_class_Matter_PathGenerator; -be_local_closure(class_Matter_PathGenerator_finished, /* name */ +be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -405,16 +378,43 @@ be_local_closure(class_Matter_PathGenerator_finished, /* name */ 0, /* has sup protos */ &be_class_Matter_PathGenerator, 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(is_direct), + /* K1 */ be_nested_str_weak(endpoint_found), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K4 */ be_nested_str_weak(cluster_found), + /* K5 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K6 */ be_nested_str_weak(attribute_found), + /* K7 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K8 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), }), - be_str_weak(finished), + be_str_weak(_default_status_error), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x50080000, // 0001 LDBOOL R2 0 0 - 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[23]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x78060011, // 0002 JMPF R1 #0015 + 0x88040101, // 0003 GETMBR R1 R0 K1 + 0x74060002, // 0004 JMPT R1 #0008 + 0xB8060400, // 0005 GETNGBL R1 K2 + 0x88040303, // 0006 GETMBR R1 R1 K3 + 0x80040200, // 0007 RET 1 R1 + 0x88040104, // 0008 GETMBR R1 R0 K4 + 0x74060002, // 0009 JMPT R1 #000D + 0xB8060400, // 000A GETNGBL R1 K2 + 0x88040305, // 000B GETMBR R1 R1 K5 + 0x80040200, // 000C RET 1 R1 + 0x88040106, // 000D GETMBR R1 R0 K6 + 0x74060002, // 000E JMPT R1 #0012 + 0xB8060400, // 000F GETNGBL R1 K2 + 0x88040307, // 0010 GETMBR R1 R1 K7 + 0x80040200, // 0011 RET 1 R1 + 0xB8060400, // 0012 GETNGBL R1 K2 + 0x88040308, // 0013 GETMBR R1 R1 K8 + 0x80040200, // 0014 RET 1 R1 + 0x4C040000, // 0015 LDNIL R1 + 0x80040200, // 0016 RET 1 R1 }) ) ); @@ -699,9 +699,9 @@ be_local_class(Matter_PathGenerator, { be_const_key_weak(path_in_endpoint, -1), be_const_var(1) }, { be_const_key_weak(path_in_cluster, -1), be_const_var(2) }, { be_const_key_weak(get_pi, -1), be_const_closure(class_Matter_PathGenerator_get_pi_closure) }, - { be_const_key_weak(is_direct, 22), be_const_closure(class_Matter_PathGenerator_is_direct_closure) }, - { be_const_key_weak(default_status_error, 9), be_const_closure(class_Matter_PathGenerator_default_status_error_closure) }, - { be_const_key_weak(next, -1), be_const_closure(class_Matter_PathGenerator_next_closure) }, + { be_const_key_weak(is_direct, 9), be_const_closure(class_Matter_PathGenerator_is_direct_closure) }, + { be_const_key_weak(is_finished, -1), be_const_closure(class_Matter_PathGenerator_is_finished_closure) }, + { be_const_key_weak(next_attribute, 22), be_const_closure(class_Matter_PathGenerator_next_attribute_closure) }, { be_const_key_weak(cluster_found, 17), be_const_var(10) }, { be_const_key_weak(endpoint_found, 6), be_const_var(9) }, { be_const_key_weak(_next_attribute, -1), be_const_closure(class_Matter_PathGenerator__next_attribute_closure) }, @@ -711,7 +711,7 @@ be_local_class(Matter_PathGenerator, { be_const_key_weak(path_concrete, -1), be_const_var(12) }, { be_const_key_weak(clusters, -1), be_const_var(8) }, { be_const_key_weak(path_in_fabric_filtered, -1), be_const_var(4) }, - { be_const_key_weak(finished, -1), be_const_closure(class_Matter_PathGenerator_finished_closure) }, + { be_const_key_weak(_default_status_error, -1), be_const_closure(class_Matter_PathGenerator__default_status_error_closure) }, { be_const_key_weak(attribute_found, 12), be_const_var(11) }, { be_const_key_weak(_next_endpoint, -1), be_const_closure(class_Matter_PathGenerator__next_endpoint_closure) }, { be_const_key_weak(path_in_attribute, -1), be_const_var(3) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 966d14ab0..335528db8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -286,169 +286,36 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_publish_event, /* name */ be_nested_proto( - 20, /* nstack */ - 5, /* argc */ + 17, /* nstack */ + 7, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin, 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(EventDataIB), - /* K2 */ be_nested_str_weak(EventPathIB), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(events), + /* K2 */ be_nested_str_weak(publish_event), /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(event), - /* K6 */ be_nested_str_weak(path), - /* K7 */ be_nested_str_weak(priority), - /* K8 */ be_nested_str_weak(event_number), - /* K9 */ be_nested_str_weak(device), - /* K10 */ be_nested_str_weak(events), - /* K11 */ be_nested_str_weak(get_next_event_no), - /* K12 */ be_nested_str_weak(epoch_timestamp), - /* K13 */ be_nested_str_weak(tasmota), - /* K14 */ be_nested_str_weak(rtc), - /* K15 */ be_nested_str_weak(utc), - /* K16 */ be_const_int(1700000000), - /* K17 */ be_nested_str_weak(data), - /* K18 */ be_nested_str_weak(loglevel), - /* K19 */ be_const_int(3), - /* K20 */ be_const_int(0), - /* K21 */ be_nested_str_weak(val), - /* K22 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), - /* K23 */ be_const_int(2), - /* K24 */ be_nested_str_weak(CRIT_X20_X20), - /* K25 */ be_const_int(1), - /* K26 */ be_nested_str_weak(INFO_X20_X20), - /* K27 */ be_nested_str_weak(DEBUG_X20), - /* K28 */ be_nested_str_weak(get_event_name), - /* K29 */ be_nested_str_weak(_X28), - /* K30 */ be_nested_str_weak(_X29_X20), - /* K31 */ be_nested_str_weak(), - /* K32 */ be_nested_str_weak(log), - /* K33 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), - /* K34 */ be_nested_str_weak(MTR_X3A_X20Publishing_X20event_X20_X25s), - /* K35 */ be_nested_str_weak(queue_event), }), be_str_weak(publish_event), &be_const_str_solidified, - ( &(const binstruction[114]) { /* code */ - 0xB8160000, // 0000 GETNGBL R5 K0 - 0x8C140B01, // 0001 GETMET R5 R5 K1 - 0x7C140200, // 0002 CALL R5 1 - 0xB81A0000, // 0003 GETNGBL R6 K0 - 0x8C180D02, // 0004 GETMET R6 R6 K2 - 0x7C180200, // 0005 CALL R6 1 - 0x881C0103, // 0006 GETMBR R7 R0 K3 - 0x901A0607, // 0007 SETMBR R6 K3 R7 - 0x901A0801, // 0008 SETMBR R6 K4 R1 - 0x901A0A02, // 0009 SETMBR R6 K5 R2 - 0x90160C06, // 000A SETMBR R5 K6 R6 - 0x90160E03, // 000B SETMBR R5 K7 R3 - 0x881C0109, // 000C GETMBR R7 R0 K9 - 0x881C0F0A, // 000D GETMBR R7 R7 K10 - 0x8C1C0F0B, // 000E GETMET R7 R7 K11 - 0x7C1C0200, // 000F CALL R7 1 - 0x90161007, // 0010 SETMBR R5 K8 R7 - 0xB81E1A00, // 0011 GETNGBL R7 K13 - 0x8C1C0F0E, // 0012 GETMET R7 R7 K14 - 0x5824000F, // 0013 LDCONST R9 K15 - 0x7C1C0400, // 0014 CALL R7 2 - 0x90161807, // 0015 SETMBR R5 K12 R7 - 0x881C0B0C, // 0016 GETMBR R7 R5 K12 - 0x141C0F10, // 0017 LT R7 R7 K16 - 0x781E0001, // 0018 JMPF R7 #001B - 0x4C1C0000, // 0019 LDNIL R7 - 0x90161807, // 001A SETMBR R5 K12 R7 - 0x90162204, // 001B SETMBR R5 K17 R4 - 0xB81E1A00, // 001C GETNGBL R7 K13 - 0x8C1C0F12, // 001D GETMET R7 R7 K18 - 0x58240013, // 001E LDCONST R9 K19 - 0x7C1C0400, // 001F CALL R7 2 - 0x781E003E, // 0020 JMPF R7 #0060 - 0x601C0008, // 0021 GETGBL R7 G8 - 0x88200B11, // 0022 GETMBR R8 R5 K17 - 0x7C1C0200, // 0023 CALL R7 1 - 0x54220027, // 0024 LDINT R8 40 - 0x1C200208, // 0025 EQ R8 R1 R8 - 0x78220015, // 0026 JMPF R8 #003D - 0x1C200514, // 0027 EQ R8 R2 K20 - 0x78220013, // 0028 JMPF R8 #003D - 0x88200B11, // 0029 GETMBR R8 R5 K17 - 0x88201115, // 002A GETMBR R8 R8 K21 - 0x60240018, // 002B GETGBL R9 G24 - 0x58280016, // 002C LDCONST R10 K22 - 0x542E0017, // 002D LDINT R11 24 - 0x3C2C100B, // 002E SHR R11 R8 R11 - 0x543200FE, // 002F LDINT R12 255 - 0x2C2C160C, // 0030 AND R11 R11 R12 - 0x5432000F, // 0031 LDINT R12 16 - 0x3C30100C, // 0032 SHR R12 R8 R12 - 0x543600FE, // 0033 LDINT R13 255 - 0x2C30180D, // 0034 AND R12 R12 R13 - 0x54360007, // 0035 LDINT R13 8 - 0x3C34100D, // 0036 SHR R13 R8 R13 - 0x543A00FE, // 0037 LDINT R14 255 - 0x2C341A0E, // 0038 AND R13 R13 R14 - 0x543A00FE, // 0039 LDINT R14 255 - 0x2C38100E, // 003A AND R14 R8 R14 - 0x7C240A00, // 003B CALL R9 5 - 0x5C1C1200, // 003C MOVE R7 R9 - 0x1C200717, // 003D EQ R8 R3 K23 - 0x78220001, // 003E JMPF R8 #0041 - 0x58200018, // 003F LDCONST R8 K24 - 0x70020004, // 0040 JMP #0046 - 0x1C200719, // 0041 EQ R8 R3 K25 - 0x78220001, // 0042 JMPF R8 #0045 - 0x5820001A, // 0043 LDCONST R8 K26 - 0x70020000, // 0044 JMP #0046 - 0x5820001B, // 0045 LDCONST R8 K27 - 0xB8260000, // 0046 GETNGBL R9 K0 - 0x8C24131C, // 0047 GETMET R9 R9 K28 - 0x5C2C0200, // 0048 MOVE R11 R1 - 0x5C300400, // 0049 MOVE R12 R2 - 0x7C240600, // 004A CALL R9 3 - 0x4C280000, // 004B LDNIL R10 - 0x2028120A, // 004C NE R10 R9 R10 - 0x782A0002, // 004D JMPF R10 #0051 - 0x002A3A09, // 004E ADD R10 K29 R9 - 0x0028151E, // 004F ADD R10 R10 K30 - 0x70020000, // 0050 JMP #0052 - 0x5828001F, // 0051 LDCONST R10 K31 - 0x5C241400, // 0052 MOVE R9 R10 - 0xB82A4000, // 0053 GETNGBL R10 K32 - 0x602C0018, // 0054 GETGBL R11 G24 - 0x58300021, // 0055 LDCONST R12 K33 - 0x5C341000, // 0056 MOVE R13 R8 - 0x88380B08, // 0057 GETMBR R14 R5 K8 - 0x883C0D03, // 0058 GETMBR R15 R6 K3 - 0x88400D04, // 0059 GETMBR R16 R6 K4 - 0x88440D05, // 005A GETMBR R17 R6 K5 - 0x5C481200, // 005B MOVE R18 R9 - 0x5C4C0E00, // 005C MOVE R19 R7 - 0x7C2C1000, // 005D CALL R11 8 - 0x58300017, // 005E LDCONST R12 K23 - 0x7C280400, // 005F CALL R10 2 - 0xB81E1A00, // 0060 GETNGBL R7 K13 - 0x8C1C0F12, // 0061 GETMET R7 R7 K18 - 0x54260003, // 0062 LDINT R9 4 - 0x7C1C0400, // 0063 CALL R7 2 - 0x781E0006, // 0064 JMPF R7 #006C - 0xB81E4000, // 0065 GETNGBL R7 K32 - 0x60200018, // 0066 GETGBL R8 G24 - 0x58240022, // 0067 LDCONST R9 K34 - 0x5C280A00, // 0068 MOVE R10 R5 - 0x7C200400, // 0069 CALL R8 2 - 0x54260003, // 006A LDINT R9 4 - 0x7C1C0400, // 006B CALL R7 2 - 0x881C0109, // 006C GETMBR R7 R0 K9 - 0x881C0F0A, // 006D GETMBR R7 R7 K10 - 0x8C1C0F23, // 006E GETMET R7 R7 K35 - 0x5C240A00, // 006F MOVE R9 R5 - 0x7C1C0400, // 0070 CALL R7 2 - 0x80000000, // 0071 RET 0 + ( &(const binstruction[13]) { /* code */ + 0x881C0100, // 0000 GETMBR R7 R0 K0 + 0x881C0F01, // 0001 GETMBR R7 R7 K1 + 0x8C1C0F02, // 0002 GETMET R7 R7 K2 + 0x88240103, // 0003 GETMBR R9 R0 K3 + 0x5C280200, // 0004 MOVE R10 R1 + 0x5C2C0400, // 0005 MOVE R11 R2 + 0x50300200, // 0006 LDBOOL R12 1 0 + 0x5C340600, // 0007 MOVE R13 R3 + 0x5C380800, // 0008 MOVE R14 R4 + 0x5C3C0A00, // 0009 MOVE R15 R5 + 0x5C400C00, // 000A MOVE R16 R6 + 0x7C1C1200, // 000B CALL R7 9 + 0x80000000, // 000C RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index 8fc07b9df..3ffed0e22 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -853,7 +853,7 @@ be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ /* K4 */ be_nested_str_weak(PathGenerator), /* K5 */ be_nested_str_weak(start), /* K6 */ be_nested_str_weak(is_direct), - /* K7 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(next_attribute), /* K8 */ be_nested_str_weak(get_pi), }), be_str_weak(process_attribute_expansion), @@ -907,35 +907,31 @@ be_local_closure(class_Matter_Device_every_250ms, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(every_250ms), - /* K2 */ be_nested_str_weak(read_sensors_scheduler), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_const_int(1), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(read_sensors_scheduler), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(every_250ms), + /* K4 */ be_const_int(1), }), be_str_weak(every_250ms), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x58040003, // 0005 LDCONST R1 K3 - 0x6008000C, // 0006 GETGBL R2 G12 - 0x880C0104, // 0007 GETMBR R3 R0 K4 - 0x7C080200, // 0008 CALL R2 1 - 0x14080202, // 0009 LT R2 R1 R2 - 0x780A0005, // 000A JMPF R2 #0011 - 0x88080104, // 000B GETMBR R2 R0 K4 - 0x94080401, // 000C GETIDX R2 R2 R1 - 0x8C080501, // 000D GETMET R2 R2 K1 - 0x7C080200, // 000E CALL R2 1 - 0x00040305, // 000F ADD R1 R1 K5 - 0x7001FFF4, // 0010 JMP #0006 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[15]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C0102, // 0004 GETMBR R3 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x14080202, // 0006 LT R2 R1 R2 + 0x780A0005, // 0007 JMPF R2 #000E + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x94080401, // 0009 GETIDX R2 R2 R1 + 0x8C080503, // 000A GETMET R2 R2 K3 + 0x7C080200, // 000B CALL R2 1 + 0x00040304, // 000C ADD R1 R1 K4 + 0x7001FFF4, // 000D JMP #0003 + 0x80000000, // 000E RET 0 }) ) ); @@ -2288,7 +2284,7 @@ be_local_closure(class_Matter_Device_start, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_every_50ms, /* name */ be_nested_proto( - 2, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2296,17 +2292,22 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tick), /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(every_50ms), }), be_str_weak(every_50ms), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x00040301, // 0001 ADD R1 R1 K1 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040303, // 0004 GETMET R1 R1 K3 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 }) ) ); @@ -5093,17 +5094,18 @@ be_local_closure(class_Matter_Device_every_second, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), /* K1 */ be_nested_str_weak(every_second), /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(commissioning_open), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), + /* K3 */ be_nested_str_weak(events), + /* K4 */ be_nested_str_weak(commissioning_open), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(time_reached), }), be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[21]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x7C040200, // 0002 CALL R1 1 @@ -5111,17 +5113,20 @@ be_local_closure(class_Matter_Device_every_second, /* name */ 0x8C040301, // 0004 GETMET R1 R1 K1 0x7C040200, // 0005 CALL R1 1 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x4C080000, // 0007 LDNIL R2 - 0x20040202, // 0008 NE R1 R1 R2 - 0x78060006, // 0009 JMPF R1 #0011 - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0103, // 000C GETMBR R3 R0 K3 - 0x7C040400, // 000D CALL R1 2 - 0x78060001, // 000E JMPF R1 #0011 - 0x4C040000, // 000F LDNIL R1 - 0x90020601, // 0010 SETMBR R0 K3 R1 - 0x80000000, // 0011 RET 0 + 0x8C040301, // 0007 GETMET R1 R1 K1 + 0x7C040200, // 0008 CALL R1 1 + 0x88040104, // 0009 GETMBR R1 R0 K4 + 0x4C080000, // 000A LDNIL R2 + 0x20040202, // 000B NE R1 R1 R2 + 0x78060006, // 000C JMPF R1 #0014 + 0xB8060A00, // 000D GETNGBL R1 K5 + 0x8C040306, // 000E GETMET R1 R1 K6 + 0x880C0104, // 000F GETMBR R3 R0 K4 + 0x7C040400, // 0010 CALL R1 2 + 0x78060001, // 0011 JMPF R1 #0014 + 0x4C040000, // 0012 LDNIL R1 + 0x90020801, // 0013 SETMBR R0 K4 R1 + 0x80000000, // 0014 RET 0 }) ) ); @@ -6115,23 +6120,23 @@ be_local_class(Matter_Device, { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, - { be_const_key_weak(v_illuminance, 15), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, - { be_const_key_weak(contact, 1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, - { be_const_key_weak(temperature, 27), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(v_illuminance, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(temperature, 29), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) }, { be_const_key_weak(http_occupancy, 6), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, + { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) }, { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, { be_const_key_weak(root, -1), be_const_class(be_class_Matter_Plugin_Root) }, { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(v_temp, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(v_temp, 20), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, - { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, - { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, - { be_const_key_weak(light2, 29), be_const_class(be_class_Matter_Plugin_Light2) }, + { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, + { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(light2, 27), be_const_class(be_class_Matter_Plugin_Light2) }, { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, @@ -6142,12 +6147,12 @@ be_local_class(Matter_Device, { be_const_key_weak(v_rain, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, { be_const_key_weak(http_waterleak, 45), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(contact, 1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, { be_const_key_weak(airquality, 35), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(http_temperature, 20), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(http_temperature, 15), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, { be_const_key_weak(v_humidity, 12), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino index eb87fede7..9a642cea9 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino @@ -183,6 +183,7 @@ extern "C" { be_map_insert_int(vm, "local", Rtc.local_time); be_map_insert_int(vm, "restart", Rtc.restart_time); be_map_insert_int(vm, "timezone", Rtc.time_timezone); + be_map_insert_int(vm, "config_time", Settings->cfg_timestamp); be_pop(vm, 1); be_return(vm); } From 20d02078905a2191e379e669a42e138834ef2738 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 27 Jun 2024 13:30:15 +0200 Subject: [PATCH 095/252] Update changelogs --- CHANGELOG.md | 6 +++--- RELEASENOTES.md | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f65758c2..048bb2a84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,10 @@ All notable changes to this project will be documented in this file. - Berry `classof` extended to class methods (#21615) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574) - Matter support for Rain sensor (#21633) -- Matter add internal debug option (#21634) -- Matter add Fan support (virtual only) (#21637) +- Matter internal debug option (#21634) +- Matter Fan support (virtual only) (#21637) - Matter show event name in logs (#21649) -- Matter full support of events +- Matter full support of events (#21698) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a40a8e135..e2c86e624 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -131,9 +131,10 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) -- Matter add internal debug option [#21634](https://github.com/arendst/Tasmota/issues/21634) -- Matter add Fan support (virtual only) [#21637](https://github.com/arendst/Tasmota/issues/21637) +- Matter internal debug option [#21634](https://github.com/arendst/Tasmota/issues/21634) +- Matter Fan support (virtual only) [#21637](https://github.com/arendst/Tasmota/issues/21637) - Matter show event name in logs [#21649](https://github.com/arendst/Tasmota/issues/21649) +- Matter full support of events [#21698](https://github.com/arendst/Tasmota/issues/21698) ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) From 178d42c286f9a4f714bd80f58a65145a28502e7a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 27 Jun 2024 16:50:45 +0200 Subject: [PATCH 096/252] Change ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695) - Add ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) - Bump version v14.1.0.3 --- CHANGELOG.md | 19 +- RELEASENOTES.md | 5 +- tasmota/include/tasmota_version.h | 2 +- tasmota/tasmota_support/support_tasmota.ino | 9 +- .../xdrv_03_esp32_energy.ino | 422 ++++++++++++------ 5 files changed, 310 insertions(+), 147 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 048bb2a84..5b6367ac7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,20 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [14.1.0.2] +## [14.1.0.3] +### Added +- ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) + +### Breaking Changed + +### Changed +- ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695) + +### Fixed + +### Removed + +## [14.1.0.2] 20240627 ### Added - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Berry `classof` extended to class methods (#21615) @@ -14,8 +27,6 @@ All notable changes to this project will be documented in this file. - Matter show event name in logs (#21649) - Matter full support of events (#21698) -### Breaking Changed - ### Changed - SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode`` - SML replace vars in descriptor and line (#21622) @@ -37,8 +48,6 @@ All notable changes to this project will be documented in this file. - Matter resumption final ack (#21673) - ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE (#21496) -### Removed - ## [14.1.0.1] 20240611 ### Added - Berry solidification of `bytes` instances (#21558) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index e2c86e624..00645d4d8 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -119,11 +119,12 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v14.1.0.2 +## Changelog v14.1.0.3 ### Added - Support for QMP6988 temperature and pressure sensor - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) +- ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) - Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) @@ -148,7 +149,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - SML replace vars in descriptor and line [#21622](https://github.com/arendst/Tasmota/issues/21622) - NeoPool using temperature as only frequently changing value for NPTeleperiod [#21628](https://github.com/arendst/Tasmota/issues/21628) - NeoPool make compiler setting available by `user_config_override.h` [#21645](https://github.com/arendst/Tasmota/issues/21645) -- ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 [#21569](https://github.com/arendst/Tasmota/issues/21569) +- ESP32 support for energy margin checks, like ``MaxPower2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) diff --git a/tasmota/include/tasmota_version.h b/tasmota/include/tasmota_version.h index ecd3f1dfe..ecf9d54dd 100644 --- a/tasmota/include/tasmota_version.h +++ b/tasmota/include/tasmota_version.h @@ -22,6 +22,6 @@ #define TASMOTA_SHA_SHORT // Filled by Github sed -const uint32_t TASMOTA_VERSION = 0x0E010002; // 14.1.0.2 +const uint32_t TASMOTA_VERSION = 0x0E010003; // 14.1.0.3 #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/tasmota_support/support_tasmota.ino b/tasmota/tasmota_support/support_tasmota.ino index 71421ea9c..b614532df 100644 --- a/tasmota/tasmota_support/support_tasmota.ino +++ b/tasmota/tasmota_support/support_tasmota.ino @@ -690,6 +690,7 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source) // state 2 = POWER_TOGGLE = Toggle relay // state 3 = POWER_BLINK = Blink relay // state 4 = POWER_BLINK_STOP = Stop blinking relay +// state 5 = POWER_OFF_FORCE = Relay off even if locked // state 8 = POWER_OFF_NO_STATE = Relay Off and no publishPowerState // state 9 = POWER_ON_NO_STATE = Relay On and no publishPowerState // state 10 = POWER_TOGGLE_NO_STATE = Toggle relay and no publishPowerState @@ -709,6 +710,12 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source) } #endif // USE_SONOFF_IFAN + bool force_power_off = false; + if (POWER_OFF_FORCE == state) { + force_power_off = true; + state = POWER_OFF; + } + bool publish_power = true; if ((state >= POWER_OFF_NO_STATE) && (state <= POWER_TOGGLE_NO_STATE)) { state &= 3; // POWER_OFF, POWER_ON or POWER_TOGGLE @@ -720,7 +727,7 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source) } TasmotaGlobal.active_device = device; - if (bitRead(Settings->power_lock, device -1)) { + if (!force_power_off && bitRead(Settings->power_lock, device -1)) { AddLog(LOG_LEVEL_INFO, PSTR("CMD: Power%d is LOCKED"), device); state = POWER_SHOW_STATE; // Only show state. Make no change } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 790fc79a6..3e925642f 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -107,6 +107,23 @@ typedef union { }; } tEnergyBitfield; +typedef struct { + uint16_t min_voltage; // VoltageLow + uint16_t max_voltage; // VoltageHigh + uint16_t min_current; // CurrentLow + uint16_t max_current; // CurrentHigh + uint16_t min_power; // PowerLow + uint16_t max_power; // PowerHigh + uint16_t max_power_limit; // MaxPowerLimit + uint16_t max_power_limit_hold; // MaxPowerLimitHold + uint16_t max_power_limit_window; // MaxPowerLimitWindow + uint16_t max_power_safe_limit; // MaxSafePowerLimit + uint16_t max_power_safe_limit_hold; // MaxSafePowerLimitHold + uint16_t max_power_safe_limit_window; // MaxSafePowerLimitWindow + uint16_t max_energy; // MaxEnergy + uint16_t max_energy_start; // MaxEnergyStart +} tPhase; + typedef struct { uint32_t crc32; // To detect file changes uint16_t version; // To detect driver function changes @@ -134,6 +151,7 @@ typedef struct { uint16_t tariff[4][2]; tEnergyUsage energy_usage; + tPhase phase[ENERGY_MAX_PHASES]; } tEnergySettings; typedef struct { @@ -168,8 +186,8 @@ typedef struct { float daily_sum_export_balanced; // 123.123 kWh uint16_t power_history[ENERGY_MAX_PHASES][3]; - uint16_t mplh_counter; - uint16_t mplw_counter; + uint16_t mplh_counter[ENERGY_MAX_PHASES]; + uint16_t mplw_counter[ENERGY_MAX_PHASES]; uint8_t data_valid[ENERGY_MAX_PHASES]; uint8_t phase_count; // Number of phases active @@ -177,8 +195,9 @@ typedef struct { uint8_t command_code; uint8_t power_steady_counter; // Allow for power on stabilization uint8_t margin_stable; - uint8_t mplr_counter; - uint8_t max_energy_state; + uint8_t mplr_counter[ENERGY_MAX_PHASES]; + uint8_t max_energy_state[ENERGY_MAX_PHASES]; + uint8_t hour; uint8_t gui_indirect[ENERGY_MAX_PHASES]; uint8_t gui_rotate; @@ -195,12 +214,12 @@ typedef struct { bool type_dc; bool power_on; - bool min_power_flag; - bool max_power_flag; - bool min_voltage_flag; - bool max_voltage_flag; - bool min_current_flag; - bool max_current_flag; + bool min_power_flag[ENERGY_MAX_PHASES]; + bool max_power_flag[ENERGY_MAX_PHASES]; + bool min_voltage_flag[ENERGY_MAX_PHASES]; + bool max_voltage_flag[ENERGY_MAX_PHASES]; + bool min_current_flag[ENERGY_MAX_PHASES]; + bool max_current_flag[ENERGY_MAX_PHASES]; } tEnergy; tEnergy *Energy = nullptr; @@ -286,10 +305,26 @@ void EnergySettingsLoad(bool erase) { Energy->Settings.voltage_calibration[i] = Settings->energy_voltage_calibration;; Energy->Settings.current_calibration[i] = Settings->energy_current_calibration;; Energy->Settings.frequency_calibration[i] = Settings->energy_frequency_calibration; + Energy->Settings.phase[i].min_voltage = Settings->energy_min_voltage; + Energy->Settings.phase[i].max_voltage = Settings->energy_max_voltage; + Energy->Settings.phase[i].min_current = Settings->energy_min_current; + Energy->Settings.phase[i].max_current = Settings->energy_max_current; + Energy->Settings.phase[i].min_power = Settings->energy_min_power; + Energy->Settings.phase[i].max_power = Settings->energy_max_power; } Energy->Settings.power_calibration[1] = Settings->energy_power_calibration2; Energy->Settings.voltage_calibration[1] = Settings->energy_voltage_calibration2; Energy->Settings.current_calibration[1] = Settings->energy_current_calibration2; + + // Only restore phase 1 for backward compatibility (all power off) + Energy->Settings.phase[0].max_power_limit = Settings->energy_max_power_limit; + Energy->Settings.phase[0].max_power_limit_hold = Settings->energy_max_power_limit_hold; + Energy->Settings.phase[0].max_power_limit_window = Settings->energy_max_power_limit_window; + Energy->Settings.phase[0].max_power_safe_limit = Settings->energy_max_power_safe_limit; + Energy->Settings.phase[0].max_power_safe_limit_hold = Settings->energy_max_power_safe_limit_hold; + Energy->Settings.phase[0].max_power_safe_limit_window = Settings->energy_max_power_safe_limit_window; + Energy->Settings.phase[0].max_energy = Settings->energy_max_energy; + Energy->Settings.phase[0].max_energy_start = Settings->energy_max_energy_start; /* RtcEnergySettings.energy_total_kWh[0] = 0; RtcEnergySettings.energy_total_kWh[1] = 0; @@ -654,11 +689,19 @@ void Energy200ms(void) { } EnergyUpdateToday(); } + if (midnight) { - Energy->max_energy_state = 3; + for (uint32_t phase = 0; phase < Energy->phase_count; phase++) { + Energy->max_energy_state[phase] = 3; + } } - if ((RtcTime.hour == Settings->energy_max_energy_start) && (3 == Energy->max_energy_state )) { - Energy->max_energy_state = 0; + if (RtcTime.hour != Energy->hour) { + Energy->hour = RtcTime.hour; + for (uint32_t phase = 0; phase < Energy->phase_count; phase++) { + if ((RtcTime.hour == Energy->Settings.phase[phase].max_energy_start) && (3 == Energy->max_energy_state[phase] )) { + Energy->max_energy_state[phase] = 0; + } + } } } @@ -747,86 +790,124 @@ void EnergyMarginCheck(void) { ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFmt(power_diff_f, 0)); } - uint16_t energy_power_u = (uint16_t)(Energy->active_power[0]); - - if (Energy->power_on && (Settings->energy_min_power || Settings->energy_max_power || Settings->energy_min_voltage || Settings->energy_max_voltage || Settings->energy_min_current || Settings->energy_max_current)) { - uint16_t energy_voltage_u = (uint16_t)(Energy->voltage[0]); - uint16_t energy_current_u = (uint16_t)(Energy->current[0] * 1000); - - DEBUG_DRIVER_LOG(PSTR("NRG: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u); - + uint16_t energy_power_u; + if (Energy->power_on) { bool flag; - if (EnergyMargin(false, Settings->energy_min_power, energy_power_u, flag, Energy->min_power_flag)) { - ResponseAppend_P(PSTR("%s\"" D_CMND_POWERLOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag)); - jsonflg = true; - } - if (EnergyMargin(true, Settings->energy_max_power, energy_power_u, flag, Energy->max_power_flag)) { - ResponseAppend_P(PSTR("%s\"" D_CMND_POWERHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag)); - jsonflg = true; - } - if (EnergyMargin(false, Settings->energy_min_voltage, energy_voltage_u, flag, Energy->min_voltage_flag)) { - ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGELOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag)); - jsonflg = true; - } - if (EnergyMargin(true, Settings->energy_max_voltage, energy_voltage_u, flag, Energy->max_voltage_flag)) { - ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGEHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag)); - jsonflg = true; - } - if (EnergyMargin(false, Settings->energy_min_current, energy_current_u, flag, Energy->min_current_flag)) { - ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTLOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag)); - jsonflg = true; - } - if (EnergyMargin(true, Settings->energy_max_current, energy_current_u, flag, Energy->max_current_flag)) { - ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag)); - jsonflg = true; - } - } - if (jsonflg) { - ResponseJsonEndEnd(); - MqttPublishTele(PSTR(D_RSLT_MARGINS)); - EnergyMqttShow(); - Energy->margin_stable = 3; // Allow 2 seconds to stabilize before reporting - } + for (uint32_t phase = 0; phase < Energy->phase_count; phase++) { + energy_power_u = (uint16_t)(Energy->active_power[phase]); + uint16_t energy_voltage_u = (uint16_t)(Energy->voltage[phase]); + uint16_t energy_current_u = (uint16_t)(Energy->current[phase] * 1000); - // Max Power - if (Settings->energy_max_power_limit) { - if (Energy->active_power[0] > Settings->energy_max_power_limit) { - if (!Energy->mplh_counter) { - Energy->mplh_counter = Settings->energy_max_power_limit_hold; - } else { - Energy->mplh_counter--; - if (!Energy->mplh_counter) { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); - if (!Energy->mplr_counter) { - Energy->mplr_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count - } - Energy->mplw_counter = Settings->energy_max_power_limit_window; + DEBUG_DRIVER_LOG(PSTR("NRG: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u); + + if (Energy->Settings.phase[phase].min_power) { + if (EnergyMargin(false, Energy->Settings.phase[phase].min_power, energy_power_u, flag, Energy->min_power_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_POWERLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; + } + } + if (Energy->Settings.phase[phase].max_power) { + if (EnergyMargin(true, Energy->Settings.phase[phase].max_power, energy_power_u, flag, Energy->max_power_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_POWERHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; + } + } + if (Energy->Settings.phase[phase].min_voltage) { + if (EnergyMargin(false, Energy->Settings.phase[phase].min_voltage, energy_voltage_u, flag, Energy->min_voltage_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGELOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; + } + } + if (Energy->Settings.phase[phase].max_voltage) { + if (EnergyMargin(true, Energy->Settings.phase[phase].max_voltage, energy_voltage_u, flag, Energy->max_voltage_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGEHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; + } + } + if (Energy->Settings.phase[phase].min_current) { + if (EnergyMargin(false, Energy->Settings.phase[phase].min_current, energy_current_u, flag, Energy->min_current_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; + } + } + if (Energy->Settings.phase[phase].max_current) { + if (EnergyMargin(true, Energy->Settings.phase[phase].max_current, energy_current_u, flag, Energy->max_current_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; } } } - else if (TasmotaGlobal.power && (energy_power_u <= Settings->energy_max_power_limit)) { - Energy->mplh_counter = 0; - Energy->mplr_counter = 0; - Energy->mplw_counter = 0; + if (jsonflg) { + ResponseJsonEndEnd(); + MqttPublishTele(PSTR(D_RSLT_MARGINS)); + EnergyMqttShow(); + Energy->margin_stable = 3; // Allow 2 seconds to stabilize before reporting } - if (!TasmotaGlobal.power) { - if (Energy->mplw_counter) { - Energy->mplw_counter--; - } else { - if (Energy->mplr_counter) { - Energy->mplr_counter--; - if (Energy->mplr_counter) { - ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1)); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); - RestorePower(true, SRC_MAXPOWER); - } else { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0)); + } + + // Max Power + bool set_all_power = true; // Use all power control for backward compatibility + for (uint32_t phase = 1; phase < Energy->phase_count; phase++) { + if (Energy->Settings.phase[phase].max_power_limit) { + set_all_power = false; // If any other power limit is set use new selected power control + break; + } + } + for (uint32_t phase = 0; phase < Energy->phase_count; phase++) { + if (Energy->Settings.phase[phase].max_power_limit) { + energy_power_u = (uint16_t)(Energy->active_power[phase]); + bool power_on = (TasmotaGlobal.power & (1 << phase)); + if (Energy->active_power[phase] > Energy->Settings.phase[phase].max_power_limit) { + if (!Energy->mplh_counter[phase]) { + Energy->mplh_counter[phase] = Energy->Settings.phase[phase].max_power_limit_hold; + } else { + Energy->mplh_counter[phase]--; + if (!Energy->mplh_counter[phase]) { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "%d\":%d}"), phase +1, energy_power_u); MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); EnergyMqttShow(); - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); + if (set_all_power) { + SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); + } else { + ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER); + } + if (!Energy->mplr_counter[phase]) { + Energy->mplr_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count + } + Energy->mplw_counter[phase] = Energy->Settings.phase[phase].max_power_limit_window; + } + } + } + else if (power_on && (energy_power_u <= Energy->Settings.phase[phase].max_power_limit)) { + Energy->mplh_counter[phase] = 0; + Energy->mplr_counter[phase] = 0; + Energy->mplw_counter[phase] = 0; + } + + if (!power_on) { + if (Energy->mplw_counter[phase]) { + Energy->mplw_counter[phase]--; + } else { + if (Energy->mplr_counter[phase]) { + Energy->mplr_counter[phase]--; + if (Energy->mplr_counter[phase]) { + ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "%d\":\"%s\"}"), phase +1, GetStateText(1)); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); + if (set_all_power) { + RestorePower(true, SRC_MAXPOWER); + } else { + ExecuteCommandPower(phase +1, POWER_ON, SRC_MAXPOWER); + } + } else { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "%d\":\"%s\"}"), phase +1, GetStateText(0)); + MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); + EnergyMqttShow(); + if (set_all_power) { + SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); + } else { + ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER); + } + } } } } @@ -834,22 +915,44 @@ void EnergyMarginCheck(void) { } // Max Energy - if (Settings->energy_max_energy) { - uint16_t energy_daily_u = (uint16_t)(Energy->daily_sum * 1000); - if (!Energy->max_energy_state && (RtcTime.hour == Settings->energy_max_energy_start)) { - Energy->max_energy_state = 1; - ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR)); - RestorePower(true, SRC_MAXENERGY); - } - else if ((1 == Energy->max_energy_state ) && (energy_daily_u >= Settings->energy_max_energy)) { - Energy->max_energy_state = 2; - ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy->daily_sum); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - SetAllPower(POWER_OFF_FORCE, SRC_MAXENERGY); + set_all_power = true; // Use all power control for backward compatibility + for (uint32_t phase = 1; phase < Energy->phase_count; phase++) { + if (Energy->Settings.phase[phase].max_energy) { + set_all_power = false; // If any other max energy is set use new selected power control + break; } } + float daily_sum = Energy->daily_sum; + for (uint32_t phase = 0; phase < Energy->phase_count; phase++) { + if (Energy->Settings.phase[phase].max_energy) { + if (!set_all_power) { + daily_sum = Energy->daily_kWh[phase]; + } + uint16_t energy_daily_u = (uint16_t)(daily_sum * 1000); + if (!Energy->max_energy_state[phase] && (RtcTime.hour == Energy->Settings.phase[phase].max_energy_start)) { + Energy->max_energy_state[phase] = 1; + ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR)); + if (set_all_power) { + RestorePower(true, SRC_MAXENERGY); + } else { + ExecuteCommandPower(phase +1, POWER_ON, SRC_MAXENERGY); + } + } + else if ((1 == Energy->max_energy_state[phase]) && (energy_daily_u >= Energy->Settings.phase[phase].max_energy)) { + Energy->max_energy_state[phase] = 2; + ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &daily_sum); + MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); + EnergyMqttShow(); + if (set_all_power) { + SetAllPower(POWER_OFF_FORCE, SRC_MAXENERGY); + } else { + ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXENERGY); + } + } + } + } + EnergyFmtFree(); } @@ -1251,13 +1354,34 @@ void CmndEnergyConfig(void) { void EnergyMarginStatus(void) { Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":[")); - for (uint32_t i = 0; i < ENERGY_MAX_PHASES; i++) { + for (uint32_t i = 0; i < Energy->phase_count; i++) { ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.power_delta[i]); } - ResponseAppend_P(PSTR("],\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" - D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"), - Settings->energy_min_power, Settings->energy_max_power, - Settings->energy_min_voltage, Settings->energy_max_voltage, Settings->energy_min_current, Settings->energy_max_current); + ResponseAppend_P(PSTR("],\"" D_CMND_POWERLOW "\":[")); + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].min_power); + } + ResponseAppend_P(PSTR("],\"" D_CMND_POWERHIGH "\":[")); + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].max_power); + } + ResponseAppend_P(PSTR("],\"" D_CMND_VOLTAGELOW "\":[")); + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].min_voltage); + } + ResponseAppend_P(PSTR("],\"" D_CMND_VOLTAGEHIGH "\":[")); + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].max_voltage); + } + ResponseAppend_P(PSTR("],\"" D_CMND_CURRENTLOW "\":[")); + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].min_current); + } + ResponseAppend_P(PSTR("],\"" D_CMND_CURRENTHIGH "\":[")); + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].max_current); + } + ResponseAppend_P(PSTR("]}}")); } void CmndPowerDelta(void) { @@ -1270,66 +1394,84 @@ void CmndPowerDelta(void) { } void CmndPowerLow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_min_power = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { + Energy->Settings.phase[XdrvMailbox.index -1].min_power = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].min_power); } - ResponseCmndNumber(Settings->energy_min_power); } void CmndPowerHigh(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_power = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power); } - ResponseCmndNumber(Settings->energy_max_power); } void CmndVoltageLow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { - Settings->energy_min_voltage = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { + Energy->Settings.phase[XdrvMailbox.index -1].min_voltage = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].min_voltage); } - ResponseCmndNumber(Settings->energy_min_voltage); } void CmndVoltageHigh(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { - Settings->energy_max_voltage = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_voltage = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_voltage); } - ResponseCmndNumber(Settings->energy_max_voltage); } void CmndCurrentLow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { - Settings->energy_min_current = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { + Energy->Settings.phase[XdrvMailbox.index -1].min_current = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].min_current); } - ResponseCmndNumber(Settings->energy_min_current); } void CmndCurrentHigh(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { - Settings->energy_max_current = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_current = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_current); } - ResponseCmndNumber(Settings->energy_max_current); } void CmndMaxPower(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_limit = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit); } - ResponseCmndNumber(Settings->energy_max_power_limit); } void CmndMaxPowerHold(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_limit_hold = (1 == XdrvMailbox.payload) ? MAX_POWER_HOLD : XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_hold = (1 == XdrvMailbox.payload) ? MAX_POWER_HOLD : XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_hold); } - ResponseCmndNumber(Settings->energy_max_power_limit_hold); } void CmndMaxPowerWindow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_limit_window = (1 == XdrvMailbox.payload) ? MAX_POWER_WINDOW : XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_window = (1 == XdrvMailbox.payload) ? MAX_POWER_WINDOW : XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_window); } - ResponseCmndNumber(Settings->energy_max_power_limit_window); } void CmndSafePower(void) { @@ -1354,18 +1496,22 @@ void CmndSafePowerWindow(void) { } void CmndMaxEnergy(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_energy = XdrvMailbox.payload; - Energy->max_energy_state = 3; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_energy = XdrvMailbox.payload; + Energy->max_energy_state[XdrvMailbox.index -1] = 3; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_energy); } - ResponseCmndNumber(Settings->energy_max_energy); } void CmndMaxEnergyStart(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 24)) { - Settings->energy_max_energy_start = XdrvMailbox.payload; + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 24)) { + Energy->Settings.phase[XdrvMailbox.index -1].max_energy_start = XdrvMailbox.payload; + } + ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_energy_start); } - ResponseCmndNumber(Settings->energy_max_energy_start); } /********************************************************************************************/ From 621f6f59e10ddcfca73da153a3ebd67584c7ce93 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 27 Jun 2024 17:07:08 +0200 Subject: [PATCH 097/252] Fix default power windows --- tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 3e925642f..2b98d83ca 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -311,6 +311,10 @@ void EnergySettingsLoad(bool erase) { Energy->Settings.phase[i].max_current = Settings->energy_max_current; Energy->Settings.phase[i].min_power = Settings->energy_min_power; Energy->Settings.phase[i].max_power = Settings->energy_max_power; + Energy->Settings.phase[i].max_power_limit_hold = MAX_POWER_HOLD; + Energy->Settings.phase[i].max_power_limit_window = MAX_POWER_WINDOW; + Energy->Settings.phase[i].max_power_safe_limit_hold = SAFE_POWER_HOLD; + Energy->Settings.phase[i].max_power_safe_limit_window = SAFE_POWER_WINDOW; } Energy->Settings.power_calibration[1] = Settings->energy_power_calibration2; Energy->Settings.voltage_calibration[1] = Settings->energy_voltage_calibration2; From 2c03980365f38e326c15c75c96fba0b6f8f81b81 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:13:39 +0200 Subject: [PATCH 098/252] Berry `tasmota.rtc("config_time")` (#21703) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b6367ac7..7fd4a77f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [14.1.0.3] ### Added - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) +- Berry `tasmota.rtc("config_time")` ### Breaking Changed From 3371fde11e1f816c9e7c94f4aa63a210a3ce37f0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Jun 2024 09:56:55 +0200 Subject: [PATCH 099/252] Update changelogs --- CHANGELOG.md | 2 +- RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fd4a77f4..c77af5405 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file. ## [14.1.0.3] ### Added - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) -- Berry `tasmota.rtc("config_time")` +- Berry `tasmota.rtc("config_time")` (#21698) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 00645d4d8..b668533d7 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -129,6 +129,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) - Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) - Berry `classof` extended to class methods [#21615](https://github.com/arendst/Tasmota/issues/21615) +- Berry `tasmota.rtc("config_time")` [#21698](https://github.com/arendst/Tasmota/issues/21698) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) From 96a45a6dde7b75256562fc6485b47abf240c4ea8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Jun 2024 11:12:28 +0200 Subject: [PATCH 100/252] Refactor ESP32 energy --- .../xdrv_03_esp32_energy.ino | 83 +++++++------------ 1 file changed, 32 insertions(+), 51 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 2b98d83ca..f00513285 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -114,12 +114,12 @@ typedef struct { uint16_t max_current; // CurrentHigh uint16_t min_power; // PowerLow uint16_t max_power; // PowerHigh - uint16_t max_power_limit; // MaxPowerLimit - uint16_t max_power_limit_hold; // MaxPowerLimitHold - uint16_t max_power_limit_window; // MaxPowerLimitWindow - uint16_t max_power_safe_limit; // MaxSafePowerLimit - uint16_t max_power_safe_limit_hold; // MaxSafePowerLimitHold - uint16_t max_power_safe_limit_window; // MaxSafePowerLimitWindow + uint16_t max_power_limit; // MaxPower + uint16_t max_power_limit_hold; // MaxPowerHold + uint16_t max_power_limit_window; // MaxPowerWindow + uint16_t max_power_safe_limit; // SafePower + uint16_t max_power_safe_limit_hold; // SafePowerHold + uint16_t max_power_safe_limit_window; // SafePowerWindow uint16_t max_energy; // MaxEnergy uint16_t max_energy_start; // MaxEnergyStart } tPhase; @@ -311,10 +311,10 @@ void EnergySettingsLoad(bool erase) { Energy->Settings.phase[i].max_current = Settings->energy_max_current; Energy->Settings.phase[i].min_power = Settings->energy_min_power; Energy->Settings.phase[i].max_power = Settings->energy_max_power; - Energy->Settings.phase[i].max_power_limit_hold = MAX_POWER_HOLD; - Energy->Settings.phase[i].max_power_limit_window = MAX_POWER_WINDOW; - Energy->Settings.phase[i].max_power_safe_limit_hold = SAFE_POWER_HOLD; - Energy->Settings.phase[i].max_power_safe_limit_window = SAFE_POWER_WINDOW; + Energy->Settings.phase[i].max_power_limit_hold = Settings->energy_max_power_limit_hold; + Energy->Settings.phase[i].max_power_limit_window = Settings->energy_max_power_limit_window; + Energy->Settings.phase[i].max_power_safe_limit_hold = Settings->energy_max_power_safe_limit_hold; + Energy->Settings.phase[i].max_power_safe_limit_window = Settings->energy_max_power_safe_limit_window; } Energy->Settings.power_calibration[1] = Settings->energy_power_calibration2; Energy->Settings.voltage_calibration[1] = Settings->energy_voltage_calibration2; @@ -322,11 +322,7 @@ void EnergySettingsLoad(bool erase) { // Only restore phase 1 for backward compatibility (all power off) Energy->Settings.phase[0].max_power_limit = Settings->energy_max_power_limit; - Energy->Settings.phase[0].max_power_limit_hold = Settings->energy_max_power_limit_hold; - Energy->Settings.phase[0].max_power_limit_window = Settings->energy_max_power_limit_window; Energy->Settings.phase[0].max_power_safe_limit = Settings->energy_max_power_safe_limit; - Energy->Settings.phase[0].max_power_safe_limit_hold = Settings->energy_max_power_safe_limit_hold; - Energy->Settings.phase[0].max_power_safe_limit_window = Settings->energy_max_power_safe_limit_window; Energy->Settings.phase[0].max_energy = Settings->energy_max_energy; Energy->Settings.phase[0].max_energy_start = Settings->energy_max_energy_start; /* @@ -727,10 +723,8 @@ void EnergySaveState(void) { } bool EnergyMargin(bool type, uint16_t margin, uint16_t value, bool &flag, bool &save_flag) { - bool change; - - if (!margin) return false; - change = save_flag; + if (!margin) { return false; } + bool change = save_flag; if (type) { flag = (value > margin); } else { @@ -750,6 +744,7 @@ void EnergyMarginCheck(void) { bool jsonflg = false; Response_P(PSTR("{\"" D_RSLT_MARGINS "\":{")); + // PowerDelta int16_t power_diff[ENERGY_MAX_PHASES] = { 0 }; for (uint32_t phase = 0; phase < Energy->phase_count; phase++) { uint16_t active_power = (uint16_t)(Energy->active_power[phase]); @@ -794,6 +789,7 @@ void EnergyMarginCheck(void) { ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFmt(power_diff_f, 0)); } + // PowerMargins uint16_t energy_power_u; if (Energy->power_on) { bool flag; @@ -802,43 +798,29 @@ void EnergyMarginCheck(void) { uint16_t energy_voltage_u = (uint16_t)(Energy->voltage[phase]); uint16_t energy_current_u = (uint16_t)(Energy->current[phase] * 1000); - DEBUG_DRIVER_LOG(PSTR("NRG: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u); - - if (Energy->Settings.phase[phase].min_power) { - if (EnergyMargin(false, Energy->Settings.phase[phase].min_power, energy_power_u, flag, Energy->min_power_flag[phase])) { - ResponseAppend_P(PSTR("%s\"" D_CMND_POWERLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); - jsonflg = true; - } + if (EnergyMargin(false, Energy->Settings.phase[phase].min_power, energy_power_u, flag, Energy->min_power_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_POWERLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; } - if (Energy->Settings.phase[phase].max_power) { - if (EnergyMargin(true, Energy->Settings.phase[phase].max_power, energy_power_u, flag, Energy->max_power_flag[phase])) { - ResponseAppend_P(PSTR("%s\"" D_CMND_POWERHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); - jsonflg = true; - } + if (EnergyMargin(true, Energy->Settings.phase[phase].max_power, energy_power_u, flag, Energy->max_power_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_POWERHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; } - if (Energy->Settings.phase[phase].min_voltage) { - if (EnergyMargin(false, Energy->Settings.phase[phase].min_voltage, energy_voltage_u, flag, Energy->min_voltage_flag[phase])) { - ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGELOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); - jsonflg = true; - } + if (EnergyMargin(false, Energy->Settings.phase[phase].min_voltage, energy_voltage_u, flag, Energy->min_voltage_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGELOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; } - if (Energy->Settings.phase[phase].max_voltage) { - if (EnergyMargin(true, Energy->Settings.phase[phase].max_voltage, energy_voltage_u, flag, Energy->max_voltage_flag[phase])) { - ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGEHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); - jsonflg = true; - } + if (EnergyMargin(true, Energy->Settings.phase[phase].max_voltage, energy_voltage_u, flag, Energy->max_voltage_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGEHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; } - if (Energy->Settings.phase[phase].min_current) { - if (EnergyMargin(false, Energy->Settings.phase[phase].min_current, energy_current_u, flag, Energy->min_current_flag[phase])) { - ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); - jsonflg = true; - } + if (EnergyMargin(false, Energy->Settings.phase[phase].min_current, energy_current_u, flag, Energy->min_current_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; } - if (Energy->Settings.phase[phase].max_current) { - if (EnergyMargin(true, Energy->Settings.phase[phase].max_current, energy_current_u, flag, Energy->max_current_flag[phase])) { - ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); - jsonflg = true; - } + if (EnergyMargin(true, Energy->Settings.phase[phase].max_current, energy_current_u, flag, Energy->max_current_flag[phase])) { + ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag)); + jsonflg = true; } } if (jsonflg) { @@ -887,7 +869,6 @@ void EnergyMarginCheck(void) { Energy->mplr_counter[phase] = 0; Energy->mplw_counter[phase] = 0; } - if (!power_on) { if (Energy->mplw_counter[phase]) { Energy->mplw_counter[phase]--; From 271446fd661d4930bf8797f4b229a40a96aa194c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:38:08 +0200 Subject: [PATCH 101/252] Remove obsolete SafePower commands --- .../xdrv_03_esp32_energy.ino | 31 +------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index f00513285..bf385b6c3 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -62,7 +62,6 @@ const char kEnergyCommands[] PROGMEM = "|" // No prefix D_CMND_POWERDELTA "|" D_CMND_POWERLOW "|" D_CMND_POWERHIGH "|" D_CMND_VOLTAGELOW "|" D_CMND_VOLTAGEHIGH "|" D_CMND_CURRENTLOW "|" D_CMND_CURRENTHIGH "|" D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|" D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|" - D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW "|" D_CMND_ENERGYTODAY "|" D_CMND_ENERGYYESTERDAY "|" D_CMND_ENERGYTOTAL "|" D_CMND_ENERGYEXPORTACTIVE "|" D_CMND_ENERGYUSAGE "|" D_CMND_ENERGYEXPORT "|" D_CMND_TARIFF "|" D_CMND_ENERGYDISPLAY "|" D_CMND_ENERGYCOLS ; @@ -72,7 +71,6 @@ void (* const EnergyCommand[])(void) PROGMEM = { &CmndPowerDelta, &CmndPowerLow, &CmndPowerHigh, &CmndVoltageLow, &CmndVoltageHigh, &CmndCurrentLow, &CmndCurrentHigh, &CmndMaxEnergy, &CmndMaxEnergyStart, &CmndMaxPower, &CmndMaxPowerHold, &CmndMaxPowerWindow, - &CmndSafePower, &CmndSafePowerHold, &CmndSafePowerWindow, &CmndEnergyToday, &CmndEnergyYesterday, &CmndEnergyTotal, &CmndEnergyExportActive, &CmndEnergyUsage, &CmndEnergyExport, &CmndTariff, &CmndEnergyDisplay, &CmndEnergyCols }; @@ -117,9 +115,6 @@ typedef struct { uint16_t max_power_limit; // MaxPower uint16_t max_power_limit_hold; // MaxPowerHold uint16_t max_power_limit_window; // MaxPowerWindow - uint16_t max_power_safe_limit; // SafePower - uint16_t max_power_safe_limit_hold; // SafePowerHold - uint16_t max_power_safe_limit_window; // SafePowerWindow uint16_t max_energy; // MaxEnergy uint16_t max_energy_start; // MaxEnergyStart } tPhase; @@ -313,8 +308,7 @@ void EnergySettingsLoad(bool erase) { Energy->Settings.phase[i].max_power = Settings->energy_max_power; Energy->Settings.phase[i].max_power_limit_hold = Settings->energy_max_power_limit_hold; Energy->Settings.phase[i].max_power_limit_window = Settings->energy_max_power_limit_window; - Energy->Settings.phase[i].max_power_safe_limit_hold = Settings->energy_max_power_safe_limit_hold; - Energy->Settings.phase[i].max_power_safe_limit_window = Settings->energy_max_power_safe_limit_window; + Energy->Settings.phase[i].max_energy_start = Settings->energy_max_energy_start; } Energy->Settings.power_calibration[1] = Settings->energy_power_calibration2; Energy->Settings.voltage_calibration[1] = Settings->energy_voltage_calibration2; @@ -322,9 +316,7 @@ void EnergySettingsLoad(bool erase) { // Only restore phase 1 for backward compatibility (all power off) Energy->Settings.phase[0].max_power_limit = Settings->energy_max_power_limit; - Energy->Settings.phase[0].max_power_safe_limit = Settings->energy_max_power_safe_limit; Energy->Settings.phase[0].max_energy = Settings->energy_max_energy; - Energy->Settings.phase[0].max_energy_start = Settings->energy_max_energy_start; /* RtcEnergySettings.energy_total_kWh[0] = 0; RtcEnergySettings.energy_total_kWh[1] = 0; @@ -1459,27 +1451,6 @@ void CmndMaxPowerWindow(void) { } } -void CmndSafePower(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_safe_limit = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_safe_limit); -} - -void CmndSafePowerHold(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_safe_limit_hold = (1 == XdrvMailbox.payload) ? SAFE_POWER_HOLD : XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_safe_limit_hold); -} - -void CmndSafePowerWindow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 1440)) { - Settings->energy_max_power_safe_limit_window = (1 == XdrvMailbox.payload) ? SAFE_POWER_WINDOW : XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_safe_limit_window); -} - void CmndMaxEnergy(void) { if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { From 8364eca708d9465a95f1ef6612816c35d073a8ce Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Jun 2024 17:51:05 +0200 Subject: [PATCH 102/252] Refactor esp32 energy margins entry --- .../xdrv_03_esp32_energy.ino | 180 +++++++++--------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index bf385b6c3..9be180240 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -1329,145 +1329,145 @@ void CmndEnergyConfig(void) { * USE_ENERGY_MARGIN_DETECTION and USE_ENERGY_POWER_LIMIT \*********************************************************************************************/ +void ResponseAppendMargin(uint16_t* start, uint32_t step_size = 0); +void ResponseAppendMargin(uint16_t* start, uint32_t step_size) { + if (Energy->phase_count > 1) { + if (0 == step_size) { + step_size = sizeof(tPhase) / sizeof(uint16_t); + } + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%c%d"), (i)?',':'[', start[i * step_size]); + } + ResponseAppend_P(PSTR("]")); + } else { + ResponseAppend_P(PSTR("%d"), start[0]); + } +} + void EnergyMarginStatus(void) { +/* Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":[")); for (uint32_t i = 0; i < Energy->phase_count; i++) { ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.power_delta[i]); } - ResponseAppend_P(PSTR("],\"" D_CMND_POWERLOW "\":[")); - for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].min_power); + ResponseAppend_P(PSTR("],\"" D_CMND_POWERLOW "\":")); +*/ + Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":")); + ResponseAppendMargin(&Energy->Settings.power_delta[0], 1); + ResponseAppend_P(PSTR(",\"" D_CMND_POWERLOW "\":")); + + ResponseAppendMargin(&Energy->Settings.phase[0].min_power); + ResponseAppend_P(PSTR(",\"" D_CMND_POWERHIGH "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_power); + ResponseAppend_P(PSTR(",\"" D_CMND_VOLTAGELOW "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].min_voltage); + ResponseAppend_P(PSTR(",\"" D_CMND_VOLTAGEHIGH "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_voltage); + ResponseAppend_P(PSTR(",\"" D_CMND_CURRENTLOW "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].min_current); + ResponseAppend_P(PSTR(",\"" D_CMND_CURRENTHIGH "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_current); + ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWER "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_power_limit); + ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWERHOLD "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_power_limit_hold); + ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWERWINDOW "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_power_limit_window); + ResponseAppend_P(PSTR(",\"" D_CMND_MAXENERGY "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_energy); + ResponseAppend_P(PSTR(",\"" D_CMND_MAXENERGYSTART "\":")); + ResponseAppendMargin(&Energy->Settings.phase[0].max_energy_start); + ResponseJsonEndEnd(); +} + +bool ResponseCmndEnergyMargin(uint16_t* start, uint32_t max_value, uint32_t default_value = 1, uint32_t step_size = 0); +bool ResponseCmndEnergyMargin(uint16_t* start, uint32_t max_value, uint32_t default_value, uint32_t step_size) { + bool value_changed = false; + if ((XdrvMailbox.index >= 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { + if (0 == step_size) { + step_size = sizeof(tPhase) / sizeof(uint16_t); + } + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= max_value)) { + if (0 == XdrvMailbox.index) { + // PowerLow0 10 + for (uint32_t i = 0; i < Energy->phase_count; i++) { + start[i * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload; + } + } else { + // PowerLow 10 = PowerLow1 10 .. PowerLow8 10 + start[(XdrvMailbox.index -1) * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload; + } + value_changed = true; + } + if (0 == XdrvMailbox.index) { + // PowerLow0, PowerLow0 10 + ResponseCmnd(); + ResponseAppendMargin(start, step_size); + ResponseJsonEnd(); + } else { + // PowerLow = PowerLow1 .. PowerLow8 + ResponseCmndIdxNumber(start[(XdrvMailbox.index -1) * step_size]); + } } - ResponseAppend_P(PSTR("],\"" D_CMND_POWERHIGH "\":[")); - for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].max_power); - } - ResponseAppend_P(PSTR("],\"" D_CMND_VOLTAGELOW "\":[")); - for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].min_voltage); - } - ResponseAppend_P(PSTR("],\"" D_CMND_VOLTAGEHIGH "\":[")); - for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].max_voltage); - } - ResponseAppend_P(PSTR("],\"" D_CMND_CURRENTLOW "\":[")); - for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].min_current); - } - ResponseAppend_P(PSTR("],\"" D_CMND_CURRENTHIGH "\":[")); - for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.phase[i].max_current); - } - ResponseAppend_P(PSTR("]}}")); + return value_changed; } void CmndPowerDelta(void) { +/* if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 32000)) { Energy->Settings.power_delta[XdrvMailbox.index -1] = XdrvMailbox.payload; } ResponseCmndIdxNumber(Energy->Settings.power_delta[XdrvMailbox.index -1]); } +*/ + ResponseCmndEnergyMargin(&Energy->Settings.power_delta[0], 32000, 1, 1); } void CmndPowerLow(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Energy->Settings.phase[XdrvMailbox.index -1].min_power = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].min_power); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].min_power, 6000); } void CmndPowerHigh(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_power = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power, 6000); } void CmndVoltageLow(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { - Energy->Settings.phase[XdrvMailbox.index -1].min_voltage = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].min_voltage); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].min_voltage, 500); } void CmndVoltageHigh(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_voltage = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_voltage); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_voltage, 500); } void CmndCurrentLow(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { - Energy->Settings.phase[XdrvMailbox.index -1].min_current = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].min_current); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].min_current, 25000); } void CmndCurrentHigh(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_current = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_current); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_current, 25000); } void CmndMaxPower(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power_limit, 6000); } void CmndMaxPowerHold(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_hold = (1 == XdrvMailbox.payload) ? MAX_POWER_HOLD : XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_hold); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power_limit_hold, 6000, MAX_POWER_HOLD); } void CmndMaxPowerWindow(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_window = (1 == XdrvMailbox.payload) ? MAX_POWER_WINDOW : XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_power_limit_window); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power_limit_window, 6000, MAX_POWER_WINDOW); } void CmndMaxEnergy(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_energy = XdrvMailbox.payload; - Energy->max_energy_state[XdrvMailbox.index -1] = 3; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_energy); + if (ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_energy, 6000)) { + Energy->max_energy_state[XdrvMailbox.index -1] = 3; } } void CmndMaxEnergyStart(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 24)) { - Energy->Settings.phase[XdrvMailbox.index -1].max_energy_start = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.phase[XdrvMailbox.index -1].max_energy_start); - } + ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_energy_start, 23); } /********************************************************************************************/ From 8a0493b659620dbccc72518d8fc1123acd117aac Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Jun 2024 18:04:50 +0200 Subject: [PATCH 103/252] Cleanup esp32 energy --- .../tasmota_xdrv_driver/xdrv_03_esp32_energy.ino | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 9be180240..32d2e1dc3 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -1345,17 +1345,9 @@ void ResponseAppendMargin(uint16_t* start, uint32_t step_size) { } void EnergyMarginStatus(void) { -/* - Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":[")); - for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.power_delta[i]); - } - ResponseAppend_P(PSTR("],\"" D_CMND_POWERLOW "\":")); -*/ Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":")); ResponseAppendMargin(&Energy->Settings.power_delta[0], 1); ResponseAppend_P(PSTR(",\"" D_CMND_POWERLOW "\":")); - ResponseAppendMargin(&Energy->Settings.phase[0].min_power); ResponseAppend_P(PSTR(",\"" D_CMND_POWERHIGH "\":")); ResponseAppendMargin(&Energy->Settings.phase[0].max_power); @@ -1413,14 +1405,6 @@ bool ResponseCmndEnergyMargin(uint16_t* start, uint32_t max_value, uint32_t defa } void CmndPowerDelta(void) { -/* - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 32000)) { - Energy->Settings.power_delta[XdrvMailbox.index -1] = XdrvMailbox.payload; - } - ResponseCmndIdxNumber(Energy->Settings.power_delta[XdrvMailbox.index -1]); - } -*/ ResponseCmndEnergyMargin(&Energy->Settings.power_delta[0], 32000, 1, 1); } From c58607a5b538e3c5ff6d3c4db844a7caa24d4835 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 29 Jun 2024 10:42:21 +0200 Subject: [PATCH 104/252] Berry `math.min()` and `math.max()` (#21705) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_mathlib.c | 59 +++++++++++++++++++++++++++++ lib/libesp32/berry/tests/math.be | 25 ++++++++++++ 3 files changed, 85 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c77af5405..2fb703c71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) - Berry `tasmota.rtc("config_time")` (#21698) +- Berry `math.min()` and `math.max()` ### Breaking Changed diff --git a/lib/libesp32/berry/src/be_mathlib.c b/lib/libesp32/berry/src/be_mathlib.c index 17fbfe159..0cef918e0 100644 --- a/lib/libesp32/berry/src/be_mathlib.c +++ b/lib/libesp32/berry/src/be_mathlib.c @@ -303,6 +303,61 @@ static int m_rand(bvm *vm) be_return(vm); } +/* check that all arguments are either int or real, and return true if at least one is real */ +static int m_check_int_or_has_real(bvm *vm) +{ + int argc = be_top(vm); + int has_real = 0; + for (int i = 1; i <= argc; ++i) { + if (be_isreal(vm, i)) { + has_real = 1; + } else if (!be_isint(vm, i)) { + be_raise(vm, "type_error", "arguments must be numbers"); + } + } + return has_real; +} + +static int m_min_max(bvm *vm, int is_min) { + int argc = be_top(vm); + if (argc > 0) { + /* see if at least one argument is float, else they are all ints */ + int has_real = m_check_int_or_has_real(vm); + if (has_real) { + breal bound = be_toreal(vm, 1); + for (int i = 2; i <= argc; ++i) { + breal x = be_toreal(vm, i); + if (is_min ? (x < bound) : (x > bound)) { + bound = x; + } + } + be_pushreal(vm, bound); + } else { + bint bound = be_toint(vm, 1); + for (int i = 2; i <= argc; ++i) { + bint x = be_toint(vm, i); + if (is_min ? (x < bound) : (x > bound)) { + bound = x; + } + } + be_pushint(vm, bound); + } + be_return(vm); + } + be_return_nil(vm); + +} + +int m_min(bvm *vm) +{ + return m_min_max(vm, 1); +} + +int m_max(bvm *vm) +{ + return m_min_max(vm, 0); +} + #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(math) { be_native_module_function("isnan", m_isnan), @@ -330,6 +385,8 @@ be_native_module_attr_table(math) { be_native_module_function("pow", m_pow), be_native_module_function("srand", m_srand), be_native_module_function("rand", m_rand), + be_native_module_function("min", m_min), + be_native_module_function("max", m_max), be_native_module_real("pi", M_PI), be_native_module_real("nan", NAN), be_native_module_real("inf", INFINITY), @@ -366,6 +423,8 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) { pow, func(m_pow) srand, func(m_srand) rand, func(m_rand) + min, func(m_min) + max, func(m_max) pi, real(M_PI) nan, real(NAN) inf, real(INFINITY) diff --git a/lib/libesp32/berry/tests/math.be b/lib/libesp32/berry/tests/math.be index 6ad8b01c1..9cc39a226 100644 --- a/lib/libesp32/berry/tests/math.be +++ b/lib/libesp32/berry/tests/math.be @@ -58,3 +58,28 @@ assert(math.round(-3.6) == -4) assert(math.round() == 0) +#- min and max -# +def assert_error(f, error_type) + try + f() + assert(false, 'unexpected execution flow') + except .. as e, m + assert(e == error_type) + end +end + +assert(math.min() == nil) +assert(math.min(0) == 0) +assert(math.min(0,2,10,56) == 0) +assert(math.min(4, 2, -10, 3) == -10) +assert(math.min(4, 2) == 2) + +# result is int unless one of the parameters is real +assert(type(math.min(4, 2, -10, 3)) == 'int') +assert(type(math.min(4, 2, -10.0, 3)) == 'real') + +assert(math.min(-3.4, 5) == -3.4) + +# test invalid parameters +assert_error(def () return math.min(4, nil) end, 'type_error') +assert_error(def () return math.min(4, "", 4.5) end, 'type_error') From 117eb7995349c3463209bb76c642b775bb534a1e Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 29 Jun 2024 12:27:27 +0200 Subject: [PATCH 105/252] Berry refactor IM to detect failed subscription heartbeats (#21706) --- .../berry_matter/src/embedded/Matter_IM.be | 22 +- .../src/embedded/Matter_IM_Message.be | 169 +- .../src/solidify/solidified_Matter_IM.h | 65 +- .../solidify/solidified_Matter_IM_Message.h | 1386 ++++++++--------- 4 files changed, 852 insertions(+), 790 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 21de50682..ddb7baeab 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -111,9 +111,13 @@ class Matter_IM def process_incoming_ack(msg) # check if there is an exchange_id interested in receiving this var message = self.find_sendqueue_by_exchangeid(msg.exchange_id) - # log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 4) + # log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 3) if message - return message.ack_received(msg) # dispatch to IM_Message + var ret = message.ack_received(msg) # dispatch to IM_Message + if message.finished + self.remove_sendqueue_by_exchangeid(msg.exchange_id) + end + return ret end return false end @@ -137,13 +141,12 @@ class Matter_IM while idx < size(self.send_queue) var message = self.send_queue[idx] - if !message.finish && message.ready + if !message.finished && message.ready message.send_im(responder) # send message end - if message.finish - log("MTR: remove IM message exch="+str(message.resp.exchange_id), 4) - self.send_queue.remove(idx) + if message.finished + self.remove_sendqueue_by_exchangeid(message.resp.exchange_id) else idx += 1 end @@ -169,11 +172,12 @@ class Matter_IM ############################################################# # find in send_queue by exchangeid # - def remove_sendqueue_by_exchangeid(exchangeid) - if exchangeid == nil return end + def remove_sendqueue_by_exchangeid(exchange_id) + if exchange_id == nil return end var idx = 0 while idx < size(self.send_queue) - if self.send_queue[idx].get_exchangeid() == exchangeid + if self.send_queue[idx].get_exchangeid() == exchange_id + # log(f"MTR: remove IM message exch={exchange_id}", 3) self.send_queue.remove(idx) else idx += 1 diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be index 252eeefcf..02305139b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be @@ -38,40 +38,57 @@ class Matter_IM_Message var expiration # expiration time for the reporting var resp # response Frame object var ready # bool: ready to send (true) or wait (false) - var finish # if true, the message is removed from the queue + var finishing # we have sent all packet, just wait for a final Ack + var finished # if true, the message is removed from the queue var data # TLV data of the response (if any) var last_counter # counter value of last sent packet (to match ack) + ################################################################################# # build a response message stub + # + # Args: + # - msg: the message object + # - opcode: (int) the Matter opcode of the response + # - reliable: (bool) if true, then we send the response as reliable, i.e. we expect a Ack to confirm it was received def init(msg, opcode, reliable) self.reset(msg, opcode, reliable) end + ################################################################################# def reset(msg, opcode, reliable) self.resp = (msg != nil) ? msg.build_response(opcode, reliable) : nil # is nil for spontaneous reports self.ready = true # by default send immediately self.expiration = tasmota.millis() + self.MSG_TIMEOUT self.last_counter = 0 # avoid `nil` value - self.finish = false + self.finishing = false + self.finished = false self.data = nil end + ################################################################################# # the message is being removed due to expiration def reached_timeout() + # log(f"MTR: IM_Message reached_timeout exch={self.resp.exchange_id}", 3) end + ################################################################################# # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def ack_received(msg) - # log("MTR: IM_Message ack_received exch="+str(self.resp.exchange_id), 3) - self.expiration = tasmota.millis() + self.MSG_TIMEOUT # give more time - return false + # log(f"MTR: IM_Message ack_received exch={self.resp.exchange_id} {self.finishing=} {self.finished=}", 3) + if self.finishing # if finishing, we are waiting for final Ack before removing from queue + self.finished = true # remove exchange + else + self.expiration = tasmota.millis() + self.MSG_TIMEOUT # else give more time to the timer + end + return false # return false to indicate that we didn't answer ourselves end + ################################################################################# # Status Report OK received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # log(format("MTR: IM_Message status_ok_received exch=%i", self.resp.exchange_id), 3) + # log(f"MTR: IM_Message status_ok_received exch={self.resp.exchange_id}", 3) self.expiration = tasmota.millis() + self.MSG_TIMEOUT # give more time if msg self.resp = msg.build_response(self.resp.opcode, self.resp.x_flag_r, self.resp) # update packet @@ -80,34 +97,45 @@ class Matter_IM_Message return true end + ################################################################################# # we received an ACK error, do any necessary cleaning + # + # Arg: + # - msg: the message received + # + # No return value def status_error_received(msg) end + ################################################################################# # get the exchange-id for this message + # + # No return value def get_exchangeid() return self.resp.exchange_id end + ################################################################################# # default responder for data + # + # This is the main entry point for seding the next response. + # This is called only when `ready` is `true` + # + # Arg: + # - responder: instance of MessageHandler to create the response object def send_im(responder) - # log(format("MTR: IM_Message send_im exch=%i ready=%i", self.resp.exchange_id, self.ready ? 1 : 0), 3) - if !self.ready return false end - # import debug + # log(f"MTR: IM_Message send_im exch={self.resp.exchange_id}", 3) + # if !self.ready return false end # we're not supposed to be called if ready is false - dead code var resp = self.resp - var data_tlv = self.data.to_TLV() - # matter.profiler.log(str(data_tlv)) - var data_raw = data_tlv.tlv2raw() # payload in cleartext - # matter.profiler.log(data_raw.tohex()) + var data_raw = self.data.to_TLV().tlv2raw() # payload in cleartext resp.encode_frame(data_raw) # payload in cleartext resp.encrypt() if tasmota.loglevel(4) - log(format("MTR: >>: Matter_IM_ReportData_Pull send_im exch=%i ready=%i", self.resp.exchange_id, self.ready ? 1 : 0), 3) - if !self.ready return false end var resp = self.resp # response frame object var data = (self.data != nil) ? self.data : bytes() # bytes() object of the TLV encoded response self.data = nil # we remove the data that was saved for next packet var not_full = true # marker used to exit imbricated loops - var debug = responder.device.debug + var debug = responder.device.debug # set debug flag in local variable to ease access below var data_ev = (self.data_ev != nil) ? self.data_ev : ((self.event_generator_or_arr != nil) ? bytes() : nil) # bytes for events or nil if no event generators # if event_generator_or_arr != nil then data_ev contains a bytes() object @@ -305,8 +354,7 @@ class Matter_IM_ReportData_Pull : Matter_IM_Message ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send # print(">>>>> send elements before encode") - var raw_tlv = ret.to_TLV() - var encoded_tlv = raw_tlv.tlv2raw(bytes(self.MAX_MESSAGE)) # takes time + var encoded_tlv = ret.to_TLV().tlv2raw(bytes(self.MAX_MESSAGE)) # takes time resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer resp.encrypt() # log(format("MTR: >>: ReportData_Pull finished",3) - self.finish = true # finished, remove + self.finishing = true # finishing, remove after final Ack end end @@ -337,7 +385,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull # var expiration # expiration time for the reporting # var resp # response Frame object # var ready # bool: ready to send (true) or wait (false) - # var finish # if true, the message is removed from the queue + # var finished # if true, the message is removed from the queue # var data # TLV data of the response (if any) # var last_counter # counter value of last sent packet (to match ack) # inherited from Matter_IM_ReportData_Pull @@ -348,6 +396,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull var sub # subscription object var report_data_phase # true during reportdata + ################################################################################# def init(message_handler, session, ctx_generator_or_arr, event_generator_or_arr, sub) super(self).init(nil, ctx_generator_or_arr, event_generator_or_arr) # send msg=nil to avoid creating a reponse # we need to initiate a new virtual response, because it's a spontaneous message @@ -359,35 +408,40 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull self.set_suppress_response(false) end + ################################################################################# def reached_timeout() + # log(f"MTR: IM_ReportDataSubscribed_Pull reached_timeout()", 3) self.sub.remove_self() end + ################################################################################# # ack received, confirm the heartbeat def ack_received(msg) - # log(format("MTR: IM_ReportDataSubscribed_Pull ack_received sub=%i", self.sub.subscription_id), 3) + # log(f"MTR: IM_ReportDataSubscribed_Pull ack_received sub={self.sub.subscription_id}", 3) super(self).ack_received(msg) if !self.report_data_phase # if ack is received while all data is sent, means that it finished without error if self.sub.is_keep_alive # only if keep-alive, for normal reports, re_arm is called at last StatusReport self.sub.re_arm() # signal that we can proceed to next sub report end - return true # proceed to calling send() which removes the message + return false # proceed to calling send() which removes the message else return false # do nothing end end + ################################################################################# # we received an ACK error, remove subscription def status_error_received(msg) - # log(format("MTR: IM_ReportDataSubscribed_Pull status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(f"MTR: IM_ReportDataSubscribed_Pull status_error_received sub={self.sub.subscription_id} exch={self.resp.exchange_id}", 3) self.sub.remove_self() end + ################################################################################# # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # log(format("MTR: IM_ReportDataSubscribed_Pull status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(f"MTR: IM_ReportDataSubscribed_Pull status_ok_received sub={self.sub.subscription_id} exch={self.resp.exchange_id}", 3) if self.report_data_phase return super(self).status_ok_received(msg) else @@ -397,22 +451,22 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull end end + ################################################################################# # returns true if transaction is complete (remove object from queue) # default responder for data def send_im(responder) # log(format("MTR: IM_ReportDataSubscribed_Pull send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) - # log(format("MTR: ReportDataSubscribed::send_im size(self.data.attribute_reports)=%i ready=%s report_data_phase=%s", size(self.data.attribute_reports), str(self.ready), str(self.report_data_phase)), 3) if !self.ready return false end if (self.generator_or_arr != nil) || (self.event_generator_or_arr != nil) # do we have still attributes or events to send if self.report_data_phase super(self).send_im(responder) - # log(format("MTR: ReportDataSubscribed::send_im called super finish=%i", self.finish), 3) - if !self.finish return end # ReportData needs to continue + # log(format("MTR: ReportDataSubscribed::send_im called super finished=%i", self.finished), 3) + if !self.finishing return end # ReportData needs to continue # ReportData is finished self.report_data_phase = false self.ready = false - self.finish = false # while a ReadReport would stop here, we continue for subscription + self.finished = false # while a ReadReport would stop here, we continue for subscription else # send a simple ACK var resp = self.resp.build_standalone_ack(false) @@ -423,7 +477,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull end responder.send_response_frame(resp) self.last_counter = resp.message_counter - self.finish = true + # self.finished = true self.sub.re_arm() # signal that we can proceed to next sub report end @@ -433,7 +487,7 @@ class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull super(self).send_im(responder) self.report_data_phase = false else - self.finish = true + # self.finished = true self.sub.re_arm() # signal that we can proceed to next sub report end end @@ -451,6 +505,7 @@ matter.IM_ReportDataSubscribed_Pull = Matter_IM_ReportDataSubscribed_Pull class Matter_IM_SubscribedHeartbeat : Matter_IM_ReportData_Pull var sub # subscription object + ################################################################################# def init(message_handler, session, sub) super(self).init(nil, nil #-no ctx_generator_or_arr-#, nil #-no event_generator_or_arr-#) # send msg=nil to avoid creating a reponse # we need to initiate a new virtual response, because it's a spontaneous message @@ -458,40 +513,48 @@ class Matter_IM_SubscribedHeartbeat : Matter_IM_ReportData_Pull # self.sub = sub self.set_subscription_id(sub.subscription_id) - self.set_suppress_response(true) + self.set_suppress_response(true) # as per Matter definition, heartbeat requires no StatusReport, only a simple Ack end + ################################################################################# + # reached_timeout + # + # The heartbeat was not acked within 5 seconds, and after all retries, + # then the controller is not expecting any more answers, + # remove the subscription def reached_timeout() + # log(f"MTR: IM_SubscribedHeartbeat reached_timeout()", 3) self.sub.remove_self() end - # ack received, confirm the heartbeat + ################################################################################# + # ack received, confirm the heartbeat and remove the packet from the queue def ack_received(msg) - # log(format("MTR: Matter_IM_SubscribedHeartbeat ack_received sub=%i", self.sub.subscription_id), 3) + # log(format("MTR: IM_SubscribedHeartbeat ack_received sub=%i", self.sub.subscription_id), 3) super(self).ack_received(msg) - self.finish = true - return true # proceed to calling send() which removes the message + return false # no further response end + ################################################################################# # we received an ACK error, remove subscription def status_error_received(msg) - # log(format("MTR: Matter_IM_SubscribedHeartbeat status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_SubscribedHeartbeat status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) self.sub.remove_self() return false # let the caller to the ack end + ################################################################################# # ack received for previous message, proceed to next (if any) # return true if we manage the ack ourselves, false if it needs to be done upper def status_ok_received(msg) - # log(format("MTR: Matter_IM_SubscribedHeartbeat status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) + # log(format("MTR: IM_SubscribedHeartbeat status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3) return false # let the caller to the ack end + ################################################################################# # default responder for data def send_im(responder) - # log(format("MTR: Matter_IM_SubscribedHeartbeat send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) - if !self.ready return false end - + # log(format("MTR: IM_SubscribedHeartbeat send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3) super(self).send_im(responder) self.ready = false end @@ -510,6 +573,7 @@ class Matter_IM_SubscribeResponse_Pull : Matter_IM_ReportData_Pull var sub # subscription object var report_data_phase # true during reportdata + ################################################################################# def init(msg, ctx_generator_or_arr, event_generator_or_arr, sub) super(self).init(msg, ctx_generator_or_arr, event_generator_or_arr) self.sub = sub @@ -517,16 +581,16 @@ class Matter_IM_SubscribeResponse_Pull : Matter_IM_ReportData_Pull self.set_subscription_id(sub.subscription_id) end + ################################################################################# # default responder for data def send_im(responder) - # log(format("MTR: Matter_IM_SubscribeResponse send sub=%i ready=%i", self.sub.subscription_id, self.ready ? 1 : 0), 3) - if !self.ready return false end + # log(format("MTR: Matter_IM_SubscribeResponse send sub=%i ready=%i report_data_phase=%s", self.sub.subscription_id, self.ready ? 1 : 0, self.report_data_phase), 3) if self.report_data_phase super(self).send_im(responder) - if self.finish + if self.finishing # finished reporting of data, we still need to send SubscribeResponseMessage after next StatusReport self.report_data_phase = false - self.finish = false # we continue to subscribe response + self.finishing = false # we continue to subscribe response end self.ready = false # wait for Status Report before continuing sending @@ -543,20 +607,23 @@ class Matter_IM_SubscribeResponse_Pull : Matter_IM_ReportData_Pull resp.encrypt() responder.send_response_frame(resp) self.last_counter = resp.message_counter - # log(format("MTR: Send SubscribeResponseMessage sub=%i id=%i", self.sub.subscription_id, resp.message_counter), 3) + # log(f"MTR: Send SubscribeResponseMessage sub={self.sub.subscription_id} id={resp.message_counter}", 3) self.sub.re_arm() - self.finish = true # remove exchange + self.finishing = true # remove exchange end end # Status ok received def status_ok_received(msg) - # log(format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter), 3) + # log(format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i finished=%s", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter, self.finished), 3) # once we receive ack, open flow for subscriptions if tasmota.loglevel(3) log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3) end return super(self).status_ok_received(msg) + if !self.report_data_phase + self.finishing = true + end end end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 4b4dfe583..382d0e1e9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -78,7 +78,7 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ be_nested_proto( - 6, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -86,24 +86,31 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), /* K1 */ be_nested_str_weak(exchange_id), /* K2 */ be_nested_str_weak(ack_received), + /* K3 */ be_nested_str_weak(finished), + /* K4 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), }), be_str_weak(process_incoming_ack), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ + ( &(const binstruction[15]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 0x88100301, // 0001 GETMBR R4 R1 K1 0x7C080400, // 0002 CALL R2 2 - 0x780A0003, // 0003 JMPF R2 #0008 + 0x780A0008, // 0003 JMPF R2 #000D 0x8C0C0502, // 0004 GETMET R3 R2 K2 0x5C140200, // 0005 MOVE R5 R1 0x7C0C0400, // 0006 CALL R3 2 - 0x80040600, // 0007 RET 1 R3 - 0x500C0000, // 0008 LDBOOL R3 0 0 - 0x80040600, // 0009 RET 1 R3 + 0x88100503, // 0007 GETMBR R4 R2 K3 + 0x78120002, // 0008 JMPF R4 #000C + 0x8C100104, // 0009 GETMET R4 R0 K4 + 0x88180301, // 000A GETMBR R6 R1 K1 + 0x7C100400, // 000B CALL R4 2 + 0x80040600, // 000C RET 1 R3 + 0x500C0000, // 000D LDBOOL R3 0 0 + 0x80040600, // 000E RET 1 R3 }) ) ); @@ -1564,28 +1571,26 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(finish), + /* K2 */ be_nested_str_weak(finished), /* K3 */ be_nested_str_weak(ready), /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D), - /* K7 */ be_nested_str_weak(resp), - /* K8 */ be_nested_str_weak(exchange_id), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_const_int(1), + /* K5 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K6 */ be_nested_str_weak(resp), + /* K7 */ be_nested_str_weak(exchange_id), + /* K8 */ be_const_int(1), }), be_str_weak(send_enqueued), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ + ( &(const binstruction[25]) { /* code */ 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0019, // 0005 JMPF R3 #0020 + 0x780E0011, // 0005 JMPF R3 #0018 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 0x88100702, // 0008 GETMBR R4 R3 K2 @@ -1596,23 +1601,15 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0x5C180200, // 000D MOVE R6 R1 0x7C100400, // 000E CALL R4 2 0x88100702, // 000F GETMBR R4 R3 K2 - 0x7812000C, // 0010 JMPF R4 #001E - 0xB8120A00, // 0011 GETNGBL R4 K5 - 0x60140008, // 0012 GETGBL R5 G8 - 0x88180707, // 0013 GETMBR R6 R3 K7 - 0x88180D08, // 0014 GETMBR R6 R6 K8 - 0x7C140200, // 0015 CALL R5 1 - 0x00160C05, // 0016 ADD R5 K6 R5 - 0x541A0003, // 0017 LDINT R6 4 - 0x7C100400, // 0018 CALL R4 2 - 0x88100101, // 0019 GETMBR R4 R0 K1 - 0x8C100909, // 001A GETMET R4 R4 K9 - 0x5C180400, // 001B MOVE R6 R2 - 0x7C100400, // 001C CALL R4 2 - 0x70020000, // 001D JMP #001F - 0x0008050A, // 001E ADD R2 R2 K10 - 0x7001FFE0, // 001F JMP #0001 - 0x80000000, // 0020 RET 0 + 0x78120004, // 0010 JMPF R4 #0016 + 0x8C100105, // 0011 GETMET R4 R0 K5 + 0x88180706, // 0012 GETMBR R6 R3 K6 + 0x88180D07, // 0013 GETMBR R6 R6 K7 + 0x7C100400, // 0014 CALL R4 2 + 0x70020000, // 0015 JMP #0017 + 0x00080508, // 0016 ADD R2 R2 K8 + 0x7001FFE8, // 0017 JMP #0001 + 0x80000000, // 0018 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 1ccdc6e0c..d75db24aa 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -6,6 +6,69 @@ extern const bclass be_class_Matter_IM_Message; +/******************************************************************** +** Solidified function: reset +********************************************************************/ +extern const bclass be_class_Matter_IM_Message; +be_local_closure(class_Matter_IM_Message_reset, /* name */ + be_nested_proto( + 8, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Message, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(build_response), + /* K2 */ be_nested_str_weak(ready), + /* K3 */ be_nested_str_weak(expiration), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(millis), + /* K6 */ be_nested_str_weak(MSG_TIMEOUT), + /* K7 */ be_nested_str_weak(last_counter), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(finishing), + /* K10 */ be_nested_str_weak(finished), + /* K11 */ be_nested_str_weak(data), + }), + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x20100204, // 0001 NE R4 R1 R4 + 0x78120004, // 0002 JMPF R4 #0008 + 0x8C100301, // 0003 GETMET R4 R1 K1 + 0x5C180400, // 0004 MOVE R6 R2 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x7C100600, // 0006 CALL R4 3 + 0x70020000, // 0007 JMP #0009 + 0x4C100000, // 0008 LDNIL R4 + 0x90020004, // 0009 SETMBR R0 K0 R4 + 0x50100200, // 000A LDBOOL R4 1 0 + 0x90020404, // 000B SETMBR R0 K2 R4 + 0xB8120800, // 000C GETNGBL R4 K4 + 0x8C100905, // 000D GETMET R4 R4 K5 + 0x7C100200, // 000E CALL R4 1 + 0x88140106, // 000F GETMBR R5 R0 K6 + 0x00100805, // 0010 ADD R4 R4 R5 + 0x90020604, // 0011 SETMBR R0 K3 R4 + 0x90020F08, // 0012 SETMBR R0 K7 K8 + 0x50100000, // 0013 LDBOOL R4 0 0 + 0x90021204, // 0014 SETMBR R0 K9 R4 + 0x50100000, // 0015 LDBOOL R4 0 0 + 0x90021404, // 0016 SETMBR R0 K10 R4 + 0x4C100000, // 0017 LDNIL R4 + 0x90021604, // 0018 SETMBR R0 K11 R4 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: init ********************************************************************/ @@ -38,6 +101,109 @@ be_local_closure(class_Matter_IM_Message_init, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: send_im +********************************************************************/ +extern const bclass be_class_Matter_IM_Message; +be_local_closure(class_Matter_IM_Message_send_im, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Message, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(data), + /* K2 */ be_nested_str_weak(to_TLV), + /* K3 */ be_nested_str_weak(tlv2raw), + /* K4 */ be_nested_str_weak(encode_frame), + /* K5 */ be_nested_str_weak(encrypt), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(loglevel), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25s_X20exch_X3D_X25s_X20rack_X3D_X25s), + /* K10 */ be_nested_str_weak(session), + /* K11 */ be_nested_str_weak(local_session_id), + /* K12 */ be_nested_str_weak(message_counter), + /* K13 */ be_nested_str_weak(exchange_id), + /* K14 */ be_nested_str_weak(ack_message_counter), + /* K15 */ be_nested_str_weak(send_response_frame), + /* K16 */ be_nested_str_weak(last_counter), + /* K17 */ be_nested_str_weak(finishing), + }), + be_str_weak(send_im), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C100504, // 0006 GETMET R4 R2 K4 + 0x5C180600, // 0007 MOVE R6 R3 + 0x7C100400, // 0008 CALL R4 2 + 0x8C100505, // 0009 GETMET R4 R2 K5 + 0x7C100200, // 000A CALL R4 1 + 0xB8120C00, // 000B GETNGBL R4 K6 + 0x8C100907, // 000C GETMET R4 R4 K7 + 0x541A0003, // 000D LDINT R6 4 + 0x7C100400, // 000E CALL R4 2 + 0x7812000A, // 000F JMPF R4 #001B + 0xB8121000, // 0010 GETNGBL R4 K8 + 0x60140018, // 0011 GETGBL R5 G24 + 0x58180009, // 0012 LDCONST R6 K9 + 0x881C050A, // 0013 GETMBR R7 R2 K10 + 0x881C0F0B, // 0014 GETMBR R7 R7 K11 + 0x8820050C, // 0015 GETMBR R8 R2 K12 + 0x8824050D, // 0016 GETMBR R9 R2 K13 + 0x8828050E, // 0017 GETMBR R10 R2 K14 + 0x7C140A00, // 0018 CALL R5 5 + 0x541A0003, // 0019 LDINT R6 4 + 0x7C100400, // 001A CALL R4 2 + 0x8C10030F, // 001B GETMET R4 R1 K15 + 0x5C180400, // 001C MOVE R6 R2 + 0x7C100400, // 001D CALL R4 2 + 0x8810050C, // 001E GETMBR R4 R2 K12 + 0x90022004, // 001F SETMBR R0 K16 R4 + 0x50100200, // 0020 LDBOOL R4 1 0 + 0x90022204, // 0021 SETMBR R0 K17 R4 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: status_error_received +********************************************************************/ +extern const bclass be_class_Matter_IM_Message; +be_local_closure(class_Matter_IM_Message_status_error_received, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_Message, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(status_error_received), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_exchangeid ********************************************************************/ @@ -69,12 +235,12 @@ be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ /******************************************************************** -** Solidified function: send_im +** Solidified function: ack_received ********************************************************************/ extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_send_im, /* name */ +be_local_closure(class_Matter_IM_Message_ack_received, /* name */ be_nested_proto( - 12, /* nstack */ + 4, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -82,154 +248,30 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_Message, 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(resp), - /* K2 */ be_nested_str_weak(data), - /* K3 */ be_nested_str_weak(to_TLV), - /* K4 */ be_nested_str_weak(tlv2raw), - /* K5 */ be_nested_str_weak(encode_frame), - /* K6 */ be_nested_str_weak(encrypt), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(loglevel), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), - /* K11 */ be_nested_str_weak(session), - /* K12 */ be_nested_str_weak(local_session_id), - /* K13 */ be_nested_str_weak(message_counter), - /* K14 */ be_nested_str_weak(exchange_id), - /* K15 */ be_nested_str_weak(ack_message_counter), - /* K16 */ be_nested_str_weak(send_response_frame), - /* K17 */ be_nested_str_weak(last_counter), - /* K18 */ be_nested_str_weak(finish), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(finishing), + /* K1 */ be_nested_str_weak(finished), + /* K2 */ be_nested_str_weak(expiration), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(millis), + /* K5 */ be_nested_str_weak(MSG_TIMEOUT), }), - be_str_weak(send_im), + be_str_weak(ack_received), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ + ( &(const binstruction[13]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100704, // 0008 GETMET R4 R3 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140505, // 000A GETMET R5 R2 K5 - 0x5C1C0800, // 000B MOVE R7 R4 - 0x7C140400, // 000C CALL R5 2 - 0x8C140506, // 000D GETMET R5 R2 K6 - 0x7C140200, // 000E CALL R5 1 - 0xB8160E00, // 000F GETNGBL R5 K7 - 0x8C140B08, // 0010 GETMET R5 R5 K8 - 0x541E0003, // 0011 LDINT R7 4 - 0x7C140400, // 0012 CALL R5 2 - 0x7816000A, // 0013 JMPF R5 #001F - 0xB8161200, // 0014 GETNGBL R5 K9 - 0x60180018, // 0015 GETGBL R6 G24 - 0x581C000A, // 0016 LDCONST R7 K10 - 0x8820050B, // 0017 GETMBR R8 R2 K11 - 0x8820110C, // 0018 GETMBR R8 R8 K12 - 0x8824050D, // 0019 GETMBR R9 R2 K13 - 0x8828050E, // 001A GETMBR R10 R2 K14 - 0x882C050F, // 001B GETMBR R11 R2 K15 - 0x7C180A00, // 001C CALL R6 5 - 0x541E0003, // 001D LDINT R7 4 - 0x7C140400, // 001E CALL R5 2 - 0x8C140310, // 001F GETMET R5 R1 K16 - 0x5C1C0400, // 0020 MOVE R7 R2 - 0x7C140400, // 0021 CALL R5 2 - 0x8814050D, // 0022 GETMBR R5 R2 K13 - 0x90022205, // 0023 SETMBR R0 K17 R5 - 0x50140200, // 0024 LDBOOL R5 1 0 - 0x90022405, // 0025 SETMBR R0 K18 R5 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: status_error_received -********************************************************************/ -extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_status_error_received, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Message, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(status_error_received), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: reset -********************************************************************/ -extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_reset, /* name */ - be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Message, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(build_response), - /* K2 */ be_nested_str_weak(ready), - /* K3 */ be_nested_str_weak(expiration), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(millis), - /* K6 */ be_nested_str_weak(MSG_TIMEOUT), - /* K7 */ be_nested_str_weak(last_counter), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(finish), - /* K10 */ be_nested_str_weak(data), - }), - be_str_weak(reset), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x20100204, // 0001 NE R4 R1 R4 - 0x78120004, // 0002 JMPF R4 #0008 - 0x8C100301, // 0003 GETMET R4 R1 K1 - 0x5C180400, // 0004 MOVE R6 R2 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x7C100600, // 0006 CALL R4 3 - 0x70020000, // 0007 JMP #0009 - 0x4C100000, // 0008 LDNIL R4 - 0x90020004, // 0009 SETMBR R0 K0 R4 - 0x50100200, // 000A LDBOOL R4 1 0 - 0x90020404, // 000B SETMBR R0 K2 R4 - 0xB8120800, // 000C GETNGBL R4 K4 - 0x8C100905, // 000D GETMET R4 R4 K5 - 0x7C100200, // 000E CALL R4 1 - 0x88140106, // 000F GETMBR R5 R0 K6 - 0x00100805, // 0010 ADD R4 R4 R5 - 0x90020604, // 0011 SETMBR R0 K3 R4 - 0x90020F08, // 0012 SETMBR R0 K7 K8 - 0x50100000, // 0013 LDBOOL R4 0 0 - 0x90021204, // 0014 SETMBR R0 K9 R4 - 0x4C100000, // 0015 LDNIL R4 - 0x90021404, // 0016 SETMBR R0 K10 R4 - 0x80000000, // 0017 RET 0 + 0x780A0002, // 0001 JMPF R2 #0005 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x70020005, // 0004 JMP #000B + 0xB80A0600, // 0005 GETNGBL R2 K3 + 0x8C080504, // 0006 GETMET R2 R2 K4 + 0x7C080200, // 0007 CALL R2 1 + 0x880C0105, // 0008 GETMBR R3 R0 K5 + 0x00080403, // 0009 ADD R2 R2 R3 + 0x90020402, // 000A SETMBR R0 K2 R2 + 0x50080000, // 000B LDBOOL R2 0 0 + 0x80040400, // 000C RET 1 R2 }) ) ); @@ -314,66 +356,30 @@ be_local_closure(class_Matter_IM_Message_status_ok_received, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: ack_received -********************************************************************/ -extern const bclass be_class_Matter_IM_Message; -be_local_closure(class_Matter_IM_Message_ack_received, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_Message, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(expiration), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(MSG_TIMEOUT), - }), - be_str_weak(ack_received), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80A0200, // 0000 GETNGBL R2 K1 - 0x8C080502, // 0001 GETMET R2 R2 K2 - 0x7C080200, // 0002 CALL R2 1 - 0x880C0103, // 0003 GETMBR R3 R0 K3 - 0x00080403, // 0004 ADD R2 R2 R3 - 0x90020002, // 0005 SETMBR R0 K0 R2 - 0x50080000, // 0006 LDBOOL R2 0 0 - 0x80040400, // 0007 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_IM_Message ********************************************************************/ be_local_class(Matter_IM_Message, - 6, + 7, NULL, - be_nested_map(15, + be_nested_map(16, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, 11), be_const_closure(class_Matter_IM_Message_init_closure) }, - { be_const_key_weak(get_exchangeid, 10), be_const_closure(class_Matter_IM_Message_get_exchangeid_closure) }, - { be_const_key_weak(reset, -1), be_const_closure(class_Matter_IM_Message_reset_closure) }, - { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_Message_send_im_closure) }, - { be_const_key_weak(status_error_received, -1), be_const_closure(class_Matter_IM_Message_status_error_received_closure) }, - { be_const_key_weak(finish, -1), be_const_var(3) }, - { be_const_key_weak(status_ok_received, 2), be_const_closure(class_Matter_IM_Message_status_ok_received_closure) }, - { be_const_key_weak(last_counter, -1), be_const_var(5) }, + { be_const_key_weak(reset, 6), be_const_closure(class_Matter_IM_Message_reset_closure) }, + { be_const_key_weak(last_counter, -1), be_const_var(6) }, + { be_const_key_weak(send_im, 1), be_const_closure(class_Matter_IM_Message_send_im_closure) }, + { be_const_key_weak(init, 15), be_const_closure(class_Matter_IM_Message_init_closure) }, + { be_const_key_weak(status_error_received, 13), be_const_closure(class_Matter_IM_Message_status_error_received_closure) }, + { be_const_key_weak(data, 9), be_const_var(5) }, + { be_const_key_weak(get_exchangeid, -1), be_const_closure(class_Matter_IM_Message_get_exchangeid_closure) }, + { be_const_key_weak(status_ok_received, 12), be_const_closure(class_Matter_IM_Message_status_ok_received_closure) }, + { be_const_key_weak(ack_received, 7), be_const_closure(class_Matter_IM_Message_ack_received_closure) }, { be_const_key_weak(reached_timeout, -1), be_const_closure(class_Matter_IM_Message_reached_timeout_closure) }, + { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(5000) }, { be_const_key_weak(resp, -1), be_const_var(1) }, - { be_const_key_weak(data, -1), be_const_var(4) }, { be_const_key_weak(expiration, -1), be_const_var(0) }, - { be_const_key_weak(ready, 6), be_const_var(2) }, - { be_const_key_weak(MSG_TIMEOUT, 5), be_const_int(5000) }, - { be_const_key_weak(ack_received, -1), be_const_closure(class_Matter_IM_Message_ack_received_closure) }, + { be_const_key_weak(ready, -1), be_const_var(2) }, + { be_const_key_weak(finishing, -1), be_const_var(3) }, + { be_const_key_weak(finished, -1), be_const_var(4) }, })), be_str_weak(Matter_IM_Message) ); @@ -629,372 +635,368 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ &be_class_Matter_IM_ReportData_Pull, 1, /* has constants */ ( &(const bvalue[51]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(resp), - /* K2 */ be_nested_str_weak(data), - /* K3 */ be_nested_str_weak(device), - /* K4 */ be_nested_str_weak(debug), - /* K5 */ be_nested_str_weak(data_ev), - /* K6 */ be_nested_str_weak(event_generator_or_arr), - /* K7 */ be_nested_str_weak(generator_or_arr), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(next_attribute), - /* K10 */ be_nested_str_weak(is_direct), - /* K11 */ be_nested_str_weak(im), - /* K12 */ be_nested_str_weak(read_single_attribute_to_bytes), - /* K13 */ be_nested_str_weak(get_pi), - /* K14 */ be_nested_str_weak(session), - /* K15 */ be_nested_str_weak(MAX_MESSAGE), - /* K16 */ be_nested_str_weak(append), - /* K17 */ be_nested_str_weak(remove), - /* K18 */ be_nested_str_weak(next_event), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(loglevel), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(), - /* K23 */ be_nested_str_weak(data0), - /* K24 */ be_nested_str_weak(_X20_X2D_X20), - /* K25 */ be_nested_str_weak(data1), - /* K26 */ be_nested_str_weak(_X2C_X20), - /* K27 */ be_nested_str_weak(data2), - /* K28 */ be_nested_str_weak(log), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s), - /* K30 */ be_nested_str_weak(local_session_id), - /* K31 */ be_nested_str_weak(event_no), - /* K32 */ be_nested_str_weak(endpoint), - /* K33 */ be_nested_str_weak(cluster), - /* K34 */ be_nested_str_weak(event_id), - /* K35 */ be_nested_str_weak(to_raw_bytes), - /* K36 */ be_nested_str_weak(matter), - /* K37 */ be_nested_str_weak(ReportDataMessage), - /* K38 */ be_nested_str_weak(subscription_id), - /* K39 */ be_nested_str_weak(suppress_response), - /* K40 */ be_nested_str_weak(attribute_reports), - /* K41 */ be_nested_str_weak(event_reports), - /* K42 */ be_nested_str_weak(more_chunked_messages), - /* K43 */ be_nested_str_weak(to_TLV), - /* K44 */ be_nested_str_weak(tlv2raw), - /* K45 */ be_nested_str_weak(encode_frame), - /* K46 */ be_nested_str_weak(encrypt), - /* K47 */ be_nested_str_weak(send_response_frame), - /* K48 */ be_nested_str_weak(last_counter), - /* K49 */ be_nested_str_weak(message_counter), - /* K50 */ be_nested_str_weak(finish), + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(data), + /* K2 */ be_nested_str_weak(device), + /* K3 */ be_nested_str_weak(debug), + /* K4 */ be_nested_str_weak(data_ev), + /* K5 */ be_nested_str_weak(event_generator_or_arr), + /* K6 */ be_nested_str_weak(generator_or_arr), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(next_attribute), + /* K9 */ be_nested_str_weak(is_direct), + /* K10 */ be_nested_str_weak(im), + /* K11 */ be_nested_str_weak(read_single_attribute_to_bytes), + /* K12 */ be_nested_str_weak(get_pi), + /* K13 */ be_nested_str_weak(session), + /* K14 */ be_nested_str_weak(MAX_MESSAGE), + /* K15 */ be_nested_str_weak(append), + /* K16 */ be_nested_str_weak(remove), + /* K17 */ be_nested_str_weak(next_event), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(loglevel), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(data0), + /* K23 */ be_nested_str_weak(_X20_X2D_X20), + /* K24 */ be_nested_str_weak(data1), + /* K25 */ be_nested_str_weak(_X2C_X20), + /* K26 */ be_nested_str_weak(data2), + /* K27 */ be_nested_str_weak(log), + /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_nested_str_weak(event_no), + /* K31 */ be_nested_str_weak(endpoint), + /* K32 */ be_nested_str_weak(cluster), + /* K33 */ be_nested_str_weak(event_id), + /* K34 */ be_nested_str_weak(to_raw_bytes), + /* K35 */ be_nested_str_weak(matter), + /* K36 */ be_nested_str_weak(ReportDataMessage), + /* K37 */ be_nested_str_weak(subscription_id), + /* K38 */ be_nested_str_weak(suppress_response), + /* K39 */ be_nested_str_weak(attribute_reports), + /* K40 */ be_nested_str_weak(event_reports), + /* K41 */ be_nested_str_weak(more_chunked_messages), + /* K42 */ be_nested_str_weak(to_TLV), + /* K43 */ be_nested_str_weak(tlv2raw), + /* K44 */ be_nested_str_weak(encode_frame), + /* K45 */ be_nested_str_weak(encrypt), + /* K46 */ be_nested_str_weak(send_response_frame), + /* K47 */ be_nested_str_weak(last_counter), + /* K48 */ be_nested_str_weak(message_counter), + /* K49 */ be_nested_str_weak(ready), + /* K50 */ be_nested_str_weak(finishing), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[311]) { /* code */ + ( &(const binstruction[307]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x4C100000, // 0006 LDNIL R4 - 0x200C0604, // 0007 NE R3 R3 R4 - 0x780E0001, // 0008 JMPF R3 #000B - 0x880C0102, // 0009 GETMBR R3 R0 K2 - 0x70020001, // 000A JMP #000D - 0x600C0015, // 000B GETGBL R3 G21 - 0x7C0C0000, // 000C CALL R3 0 - 0x4C100000, // 000D LDNIL R4 - 0x90020404, // 000E SETMBR R0 K2 R4 - 0x50100200, // 000F LDBOOL R4 1 0 - 0x88140303, // 0010 GETMBR R5 R1 K3 - 0x88140B04, // 0011 GETMBR R5 R5 K4 - 0x88180105, // 0012 GETMBR R6 R0 K5 - 0x4C1C0000, // 0013 LDNIL R7 - 0x20180C07, // 0014 NE R6 R6 R7 - 0x781A0001, // 0015 JMPF R6 #0018 - 0x88180105, // 0016 GETMBR R6 R0 K5 - 0x70020007, // 0017 JMP #0020 - 0x88180106, // 0018 GETMBR R6 R0 K6 - 0x4C1C0000, // 0019 LDNIL R7 - 0x20180C07, // 001A NE R6 R6 R7 - 0x781A0002, // 001B JMPF R6 #001F - 0x60180015, // 001C GETGBL R6 G21 - 0x7C180000, // 001D CALL R6 0 - 0x70020000, // 001E JMP #0020 - 0x4C180000, // 001F LDNIL R6 - 0x7812004A, // 0020 JMPF R4 #006C - 0x881C0107, // 0021 GETMBR R7 R0 K7 - 0x4C200000, // 0022 LDNIL R8 - 0x201C0E08, // 0023 NE R7 R7 R8 - 0x781E0046, // 0024 JMPF R7 #006C - 0x601C000F, // 0025 GETGBL R7 G15 - 0x88200107, // 0026 GETMBR R8 R0 K7 - 0x60240012, // 0027 GETGBL R9 G18 - 0x7C1C0400, // 0028 CALL R7 2 - 0x781E0002, // 0029 JMPF R7 #002D - 0x881C0107, // 002A GETMBR R7 R0 K7 - 0x941C0F08, // 002B GETIDX R7 R7 K8 - 0x70020000, // 002C JMP #002E - 0x881C0107, // 002D GETMBR R7 R0 K7 - 0x4C200000, // 002E LDNIL R8 - 0x78120026, // 002F JMPF R4 #0057 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x4C100000, // 0002 LDNIL R4 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x70020001, // 0006 JMP #0009 + 0x600C0015, // 0007 GETGBL R3 G21 + 0x7C0C0000, // 0008 CALL R3 0 + 0x4C100000, // 0009 LDNIL R4 + 0x90020204, // 000A SETMBR R0 K1 R4 + 0x50100200, // 000B LDBOOL R4 1 0 + 0x88140302, // 000C GETMBR R5 R1 K2 + 0x88140B03, // 000D GETMBR R5 R5 K3 + 0x88180104, // 000E GETMBR R6 R0 K4 + 0x4C1C0000, // 000F LDNIL R7 + 0x20180C07, // 0010 NE R6 R6 R7 + 0x781A0001, // 0011 JMPF R6 #0014 + 0x88180104, // 0012 GETMBR R6 R0 K4 + 0x70020007, // 0013 JMP #001C + 0x88180105, // 0014 GETMBR R6 R0 K5 + 0x4C1C0000, // 0015 LDNIL R7 + 0x20180C07, // 0016 NE R6 R6 R7 + 0x781A0002, // 0017 JMPF R6 #001B + 0x60180015, // 0018 GETGBL R6 G21 + 0x7C180000, // 0019 CALL R6 0 + 0x70020000, // 001A JMP #001C + 0x4C180000, // 001B LDNIL R6 + 0x7812004A, // 001C JMPF R4 #0068 + 0x881C0106, // 001D GETMBR R7 R0 K6 + 0x4C200000, // 001E LDNIL R8 + 0x201C0E08, // 001F NE R7 R7 R8 + 0x781E0046, // 0020 JMPF R7 #0068 + 0x601C000F, // 0021 GETGBL R7 G15 + 0x88200106, // 0022 GETMBR R8 R0 K6 + 0x60240012, // 0023 GETGBL R9 G18 + 0x7C1C0400, // 0024 CALL R7 2 + 0x781E0002, // 0025 JMPF R7 #0029 + 0x881C0106, // 0026 GETMBR R7 R0 K6 + 0x941C0F07, // 0027 GETIDX R7 R7 K7 + 0x70020000, // 0028 JMP #002A + 0x881C0106, // 0029 GETMBR R7 R0 K6 + 0x4C200000, // 002A LDNIL R8 + 0x78120026, // 002B JMPF R4 #0053 + 0x8C240F08, // 002C GETMET R9 R7 K8 + 0x7C240200, // 002D CALL R9 1 + 0x5C201200, // 002E MOVE R8 R9 + 0x78260022, // 002F JMPF R9 #0053 0x8C240F09, // 0030 GETMET R9 R7 K9 0x7C240200, // 0031 CALL R9 1 - 0x5C201200, // 0032 MOVE R8 R9 - 0x78260022, // 0033 JMPF R9 #0057 - 0x8C240F0A, // 0034 GETMET R9 R7 K10 - 0x7C240200, // 0035 CALL R9 1 - 0x74260001, // 0036 JMPT R9 #0039 - 0x74160000, // 0037 JMPT R5 #0039 - 0x50240001, // 0038 LDBOOL R9 0 1 - 0x50240200, // 0039 LDBOOL R9 1 0 - 0x8828030B, // 003A GETMBR R10 R1 K11 - 0x8C28150C, // 003B GETMET R10 R10 K12 - 0x8C300F0D, // 003C GETMET R12 R7 K13 - 0x7C300200, // 003D CALL R12 1 - 0x5C341000, // 003E MOVE R13 R8 - 0x8838050E, // 003F GETMBR R14 R2 K14 - 0x5C3C1200, // 0040 MOVE R15 R9 - 0x7C280A00, // 0041 CALL R10 5 - 0x4C2C0000, // 0042 LDNIL R11 - 0x1C2C140B, // 0043 EQ R11 R10 R11 - 0x782E0000, // 0044 JMPF R11 #0046 - 0x7001FFE8, // 0045 JMP #002F - 0x602C000C, // 0046 GETGBL R11 G12 - 0x5C300600, // 0047 MOVE R12 R3 - 0x7C2C0200, // 0048 CALL R11 1 - 0x6030000C, // 0049 GETGBL R12 G12 - 0x5C341400, // 004A MOVE R13 R10 - 0x7C300200, // 004B CALL R12 1 - 0x002C160C, // 004C ADD R11 R11 R12 - 0x8830010F, // 004D GETMBR R12 R0 K15 - 0x242C160C, // 004E GT R11 R11 R12 - 0x782E0002, // 004F JMPF R11 #0053 - 0x9002040A, // 0050 SETMBR R0 K2 R10 - 0x50100000, // 0051 LDBOOL R4 0 0 - 0x70020002, // 0052 JMP #0056 - 0x8C2C0710, // 0053 GETMET R11 R3 K16 - 0x5C341400, // 0054 MOVE R13 R10 - 0x7C2C0400, // 0055 CALL R11 2 - 0x7001FFD7, // 0056 JMP #002F - 0x78120012, // 0057 JMPF R4 #006B - 0x6024000F, // 0058 GETGBL R9 G15 - 0x88280107, // 0059 GETMBR R10 R0 K7 - 0x602C0012, // 005A GETGBL R11 G18 - 0x7C240400, // 005B CALL R9 2 - 0x7826000B, // 005C JMPF R9 #0069 - 0x88240107, // 005D GETMBR R9 R0 K7 - 0x8C241311, // 005E GETMET R9 R9 K17 - 0x582C0008, // 005F LDCONST R11 K8 - 0x7C240400, // 0060 CALL R9 2 - 0x6024000C, // 0061 GETGBL R9 G12 - 0x88280107, // 0062 GETMBR R10 R0 K7 - 0x7C240200, // 0063 CALL R9 1 - 0x1C241308, // 0064 EQ R9 R9 K8 - 0x78260001, // 0065 JMPF R9 #0068 - 0x4C240000, // 0066 LDNIL R9 - 0x90020E09, // 0067 SETMBR R0 K7 R9 - 0x70020001, // 0068 JMP #006B - 0x4C240000, // 0069 LDNIL R9 - 0x90020E09, // 006A SETMBR R0 K7 R9 - 0x7001FFB3, // 006B JMP #0020 - 0x78120017, // 006C JMPF R4 #0085 - 0x881C0105, // 006D GETMBR R7 R0 K5 - 0x4C200000, // 006E LDNIL R8 - 0x201C0E08, // 006F NE R7 R7 R8 - 0x781E0013, // 0070 JMPF R7 #0085 - 0x601C000C, // 0071 GETGBL R7 G12 - 0x88200105, // 0072 GETMBR R8 R0 K5 - 0x7C1C0200, // 0073 CALL R7 1 - 0x241C0F08, // 0074 GT R7 R7 K8 - 0x781E000E, // 0075 JMPF R7 #0085 - 0x601C000C, // 0076 GETGBL R7 G12 - 0x5C200600, // 0077 MOVE R8 R3 - 0x7C1C0200, // 0078 CALL R7 1 - 0x6020000C, // 0079 GETGBL R8 G12 - 0x88240105, // 007A GETMBR R9 R0 K5 - 0x7C200200, // 007B CALL R8 1 - 0x001C0E08, // 007C ADD R7 R7 R8 - 0x8820010F, // 007D GETMBR R8 R0 K15 - 0x241C0E08, // 007E GT R7 R7 R8 - 0x781E0002, // 007F JMPF R7 #0083 - 0x50100000, // 0080 LDBOOL R4 0 0 - 0x4C180000, // 0081 LDNIL R6 - 0x70020001, // 0082 JMP #0085 - 0x4C1C0000, // 0083 LDNIL R7 - 0x90020A07, // 0084 SETMBR R0 K5 R7 - 0x7812006D, // 0085 JMPF R4 #00F4 - 0x881C0106, // 0086 GETMBR R7 R0 K6 - 0x4C200000, // 0087 LDNIL R8 - 0x201C0E08, // 0088 NE R7 R7 R8 - 0x781E0069, // 0089 JMPF R7 #00F4 - 0x601C000F, // 008A GETGBL R7 G15 - 0x88200106, // 008B GETMBR R8 R0 K6 - 0x60240012, // 008C GETGBL R9 G18 - 0x7C1C0400, // 008D CALL R7 2 - 0x781E0002, // 008E JMPF R7 #0092 - 0x881C0106, // 008F GETMBR R7 R0 K6 - 0x941C0F08, // 0090 GETIDX R7 R7 K8 - 0x70020000, // 0091 JMP #0093 - 0x881C0106, // 0092 GETMBR R7 R0 K6 - 0x4C200000, // 0093 LDNIL R8 - 0x78120049, // 0094 JMPF R4 #00DF - 0x8C240F12, // 0095 GETMET R9 R7 K18 - 0x7C240200, // 0096 CALL R9 1 - 0x5C201200, // 0097 MOVE R8 R9 - 0x78260045, // 0098 JMPF R9 #00DF - 0x7816002D, // 0099 JMPF R5 #00C8 - 0xB8262600, // 009A GETNGBL R9 K19 - 0x8C241314, // 009B GETMET R9 R9 K20 - 0x582C0015, // 009C LDCONST R11 K21 - 0x7C240400, // 009D CALL R9 2 - 0x78260028, // 009E JMPF R9 #00C8 - 0x58240016, // 009F LDCONST R9 K22 - 0x88281117, // 00A0 GETMBR R10 R8 K23 - 0x4C2C0000, // 00A1 LDNIL R11 - 0x2028140B, // 00A2 NE R10 R10 R11 - 0x782A0004, // 00A3 JMPF R10 #00A9 - 0x60280008, // 00A4 GETGBL R10 G8 - 0x882C1117, // 00A5 GETMBR R11 R8 K23 - 0x7C280200, // 00A6 CALL R10 1 - 0x002A300A, // 00A7 ADD R10 K24 R10 - 0x5C241400, // 00A8 MOVE R9 R10 - 0x88281119, // 00A9 GETMBR R10 R8 K25 - 0x4C2C0000, // 00AA LDNIL R11 - 0x2028140B, // 00AB NE R10 R10 R11 - 0x782A0004, // 00AC JMPF R10 #00B2 - 0x60280008, // 00AD GETGBL R10 G8 - 0x882C1119, // 00AE GETMBR R11 R8 K25 - 0x7C280200, // 00AF CALL R10 1 - 0x002A340A, // 00B0 ADD R10 K26 R10 - 0x0024120A, // 00B1 ADD R9 R9 R10 - 0x8828111B, // 00B2 GETMBR R10 R8 K27 - 0x4C2C0000, // 00B3 LDNIL R11 - 0x2028140B, // 00B4 NE R10 R10 R11 - 0x782A0004, // 00B5 JMPF R10 #00BB - 0x60280008, // 00B6 GETGBL R10 G8 - 0x882C111B, // 00B7 GETMBR R11 R8 K27 - 0x7C280200, // 00B8 CALL R10 1 - 0x002A340A, // 00B9 ADD R10 K26 R10 - 0x0024120A, // 00BA ADD R9 R9 R10 - 0xB82A3800, // 00BB GETNGBL R10 K28 - 0x602C0018, // 00BC GETGBL R11 G24 - 0x5830001D, // 00BD LDCONST R12 K29 - 0x8834050E, // 00BE GETMBR R13 R2 K14 - 0x88341B1E, // 00BF GETMBR R13 R13 K30 - 0x8838111F, // 00C0 GETMBR R14 R8 K31 - 0x883C1120, // 00C1 GETMBR R15 R8 K32 - 0x88401121, // 00C2 GETMBR R16 R8 K33 - 0x88441122, // 00C3 GETMBR R17 R8 K34 - 0x5C481200, // 00C4 MOVE R18 R9 - 0x7C2C0E00, // 00C5 CALL R11 7 - 0x58300015, // 00C6 LDCONST R12 K21 - 0x7C280400, // 00C7 CALL R10 2 - 0x8C241123, // 00C8 GETMET R9 R8 K35 - 0x7C240200, // 00C9 CALL R9 1 - 0x6028000C, // 00CA GETGBL R10 G12 - 0x5C2C0600, // 00CB MOVE R11 R3 - 0x7C280200, // 00CC CALL R10 1 + 0x74260001, // 0032 JMPT R9 #0035 + 0x74160000, // 0033 JMPT R5 #0035 + 0x50240001, // 0034 LDBOOL R9 0 1 + 0x50240200, // 0035 LDBOOL R9 1 0 + 0x8828030A, // 0036 GETMBR R10 R1 K10 + 0x8C28150B, // 0037 GETMET R10 R10 K11 + 0x8C300F0C, // 0038 GETMET R12 R7 K12 + 0x7C300200, // 0039 CALL R12 1 + 0x5C341000, // 003A MOVE R13 R8 + 0x8838050D, // 003B GETMBR R14 R2 K13 + 0x5C3C1200, // 003C MOVE R15 R9 + 0x7C280A00, // 003D CALL R10 5 + 0x4C2C0000, // 003E LDNIL R11 + 0x1C2C140B, // 003F EQ R11 R10 R11 + 0x782E0000, // 0040 JMPF R11 #0042 + 0x7001FFE8, // 0041 JMP #002B + 0x602C000C, // 0042 GETGBL R11 G12 + 0x5C300600, // 0043 MOVE R12 R3 + 0x7C2C0200, // 0044 CALL R11 1 + 0x6030000C, // 0045 GETGBL R12 G12 + 0x5C341400, // 0046 MOVE R13 R10 + 0x7C300200, // 0047 CALL R12 1 + 0x002C160C, // 0048 ADD R11 R11 R12 + 0x8830010E, // 0049 GETMBR R12 R0 K14 + 0x242C160C, // 004A GT R11 R11 R12 + 0x782E0002, // 004B JMPF R11 #004F + 0x9002020A, // 004C SETMBR R0 K1 R10 + 0x50100000, // 004D LDBOOL R4 0 0 + 0x70020002, // 004E JMP #0052 + 0x8C2C070F, // 004F GETMET R11 R3 K15 + 0x5C341400, // 0050 MOVE R13 R10 + 0x7C2C0400, // 0051 CALL R11 2 + 0x7001FFD7, // 0052 JMP #002B + 0x78120012, // 0053 JMPF R4 #0067 + 0x6024000F, // 0054 GETGBL R9 G15 + 0x88280106, // 0055 GETMBR R10 R0 K6 + 0x602C0012, // 0056 GETGBL R11 G18 + 0x7C240400, // 0057 CALL R9 2 + 0x7826000B, // 0058 JMPF R9 #0065 + 0x88240106, // 0059 GETMBR R9 R0 K6 + 0x8C241310, // 005A GETMET R9 R9 K16 + 0x582C0007, // 005B LDCONST R11 K7 + 0x7C240400, // 005C CALL R9 2 + 0x6024000C, // 005D GETGBL R9 G12 + 0x88280106, // 005E GETMBR R10 R0 K6 + 0x7C240200, // 005F CALL R9 1 + 0x1C241307, // 0060 EQ R9 R9 K7 + 0x78260001, // 0061 JMPF R9 #0064 + 0x4C240000, // 0062 LDNIL R9 + 0x90020C09, // 0063 SETMBR R0 K6 R9 + 0x70020001, // 0064 JMP #0067 + 0x4C240000, // 0065 LDNIL R9 + 0x90020C09, // 0066 SETMBR R0 K6 R9 + 0x7001FFB3, // 0067 JMP #001C + 0x78120017, // 0068 JMPF R4 #0081 + 0x881C0104, // 0069 GETMBR R7 R0 K4 + 0x4C200000, // 006A LDNIL R8 + 0x201C0E08, // 006B NE R7 R7 R8 + 0x781E0013, // 006C JMPF R7 #0081 + 0x601C000C, // 006D GETGBL R7 G12 + 0x88200104, // 006E GETMBR R8 R0 K4 + 0x7C1C0200, // 006F CALL R7 1 + 0x241C0F07, // 0070 GT R7 R7 K7 + 0x781E000E, // 0071 JMPF R7 #0081 + 0x601C000C, // 0072 GETGBL R7 G12 + 0x5C200600, // 0073 MOVE R8 R3 + 0x7C1C0200, // 0074 CALL R7 1 + 0x6020000C, // 0075 GETGBL R8 G12 + 0x88240104, // 0076 GETMBR R9 R0 K4 + 0x7C200200, // 0077 CALL R8 1 + 0x001C0E08, // 0078 ADD R7 R7 R8 + 0x8820010E, // 0079 GETMBR R8 R0 K14 + 0x241C0E08, // 007A GT R7 R7 R8 + 0x781E0002, // 007B JMPF R7 #007F + 0x50100000, // 007C LDBOOL R4 0 0 + 0x4C180000, // 007D LDNIL R6 + 0x70020001, // 007E JMP #0081 + 0x4C1C0000, // 007F LDNIL R7 + 0x90020807, // 0080 SETMBR R0 K4 R7 + 0x7812006D, // 0081 JMPF R4 #00F0 + 0x881C0105, // 0082 GETMBR R7 R0 K5 + 0x4C200000, // 0083 LDNIL R8 + 0x201C0E08, // 0084 NE R7 R7 R8 + 0x781E0069, // 0085 JMPF R7 #00F0 + 0x601C000F, // 0086 GETGBL R7 G15 + 0x88200105, // 0087 GETMBR R8 R0 K5 + 0x60240012, // 0088 GETGBL R9 G18 + 0x7C1C0400, // 0089 CALL R7 2 + 0x781E0002, // 008A JMPF R7 #008E + 0x881C0105, // 008B GETMBR R7 R0 K5 + 0x941C0F07, // 008C GETIDX R7 R7 K7 + 0x70020000, // 008D JMP #008F + 0x881C0105, // 008E GETMBR R7 R0 K5 + 0x4C200000, // 008F LDNIL R8 + 0x78120049, // 0090 JMPF R4 #00DB + 0x8C240F11, // 0091 GETMET R9 R7 K17 + 0x7C240200, // 0092 CALL R9 1 + 0x5C201200, // 0093 MOVE R8 R9 + 0x78260045, // 0094 JMPF R9 #00DB + 0x7816002D, // 0095 JMPF R5 #00C4 + 0xB8262400, // 0096 GETNGBL R9 K18 + 0x8C241313, // 0097 GETMET R9 R9 K19 + 0x582C0014, // 0098 LDCONST R11 K20 + 0x7C240400, // 0099 CALL R9 2 + 0x78260028, // 009A JMPF R9 #00C4 + 0x58240015, // 009B LDCONST R9 K21 + 0x88281116, // 009C GETMBR R10 R8 K22 + 0x4C2C0000, // 009D LDNIL R11 + 0x2028140B, // 009E NE R10 R10 R11 + 0x782A0004, // 009F JMPF R10 #00A5 + 0x60280008, // 00A0 GETGBL R10 G8 + 0x882C1116, // 00A1 GETMBR R11 R8 K22 + 0x7C280200, // 00A2 CALL R10 1 + 0x002A2E0A, // 00A3 ADD R10 K23 R10 + 0x5C241400, // 00A4 MOVE R9 R10 + 0x88281118, // 00A5 GETMBR R10 R8 K24 + 0x4C2C0000, // 00A6 LDNIL R11 + 0x2028140B, // 00A7 NE R10 R10 R11 + 0x782A0004, // 00A8 JMPF R10 #00AE + 0x60280008, // 00A9 GETGBL R10 G8 + 0x882C1118, // 00AA GETMBR R11 R8 K24 + 0x7C280200, // 00AB CALL R10 1 + 0x002A320A, // 00AC ADD R10 K25 R10 + 0x0024120A, // 00AD ADD R9 R9 R10 + 0x8828111A, // 00AE GETMBR R10 R8 K26 + 0x4C2C0000, // 00AF LDNIL R11 + 0x2028140B, // 00B0 NE R10 R10 R11 + 0x782A0004, // 00B1 JMPF R10 #00B7 + 0x60280008, // 00B2 GETGBL R10 G8 + 0x882C111A, // 00B3 GETMBR R11 R8 K26 + 0x7C280200, // 00B4 CALL R10 1 + 0x002A320A, // 00B5 ADD R10 K25 R10 + 0x0024120A, // 00B6 ADD R9 R9 R10 + 0xB82A3600, // 00B7 GETNGBL R10 K27 + 0x602C0018, // 00B8 GETGBL R11 G24 + 0x5830001C, // 00B9 LDCONST R12 K28 + 0x8834050D, // 00BA GETMBR R13 R2 K13 + 0x88341B1D, // 00BB GETMBR R13 R13 K29 + 0x8838111E, // 00BC GETMBR R14 R8 K30 + 0x883C111F, // 00BD GETMBR R15 R8 K31 + 0x88401120, // 00BE GETMBR R16 R8 K32 + 0x88441121, // 00BF GETMBR R17 R8 K33 + 0x5C481200, // 00C0 MOVE R18 R9 + 0x7C2C0E00, // 00C1 CALL R11 7 + 0x58300014, // 00C2 LDCONST R12 K20 + 0x7C280400, // 00C3 CALL R10 2 + 0x8C241122, // 00C4 GETMET R9 R8 K34 + 0x7C240200, // 00C5 CALL R9 1 + 0x6028000C, // 00C6 GETGBL R10 G12 + 0x5C2C0600, // 00C7 MOVE R11 R3 + 0x7C280200, // 00C8 CALL R10 1 + 0x602C000C, // 00C9 GETGBL R11 G12 + 0x5C300C00, // 00CA MOVE R12 R6 + 0x7C2C0200, // 00CB CALL R11 1 + 0x0028140B, // 00CC ADD R10 R10 R11 0x602C000C, // 00CD GETGBL R11 G12 - 0x5C300C00, // 00CE MOVE R12 R6 + 0x5C301200, // 00CE MOVE R12 R9 0x7C2C0200, // 00CF CALL R11 1 0x0028140B, // 00D0 ADD R10 R10 R11 - 0x602C000C, // 00D1 GETGBL R11 G12 - 0x5C301200, // 00D2 MOVE R12 R9 - 0x7C2C0200, // 00D3 CALL R11 1 - 0x0028140B, // 00D4 ADD R10 R10 R11 - 0x882C010F, // 00D5 GETMBR R11 R0 K15 - 0x2428140B, // 00D6 GT R10 R10 R11 - 0x782A0002, // 00D7 JMPF R10 #00DB - 0x90020A09, // 00D8 SETMBR R0 K5 R9 - 0x50100000, // 00D9 LDBOOL R4 0 0 - 0x70020002, // 00DA JMP #00DE - 0x8C280D10, // 00DB GETMET R10 R6 K16 - 0x5C301200, // 00DC MOVE R12 R9 - 0x7C280400, // 00DD CALL R10 2 - 0x7001FFB4, // 00DE JMP #0094 - 0x78120012, // 00DF JMPF R4 #00F3 - 0x6024000F, // 00E0 GETGBL R9 G15 - 0x88280106, // 00E1 GETMBR R10 R0 K6 - 0x602C0012, // 00E2 GETGBL R11 G18 - 0x7C240400, // 00E3 CALL R9 2 - 0x7826000B, // 00E4 JMPF R9 #00F1 - 0x88240106, // 00E5 GETMBR R9 R0 K6 - 0x8C241311, // 00E6 GETMET R9 R9 K17 - 0x582C0008, // 00E7 LDCONST R11 K8 - 0x7C240400, // 00E8 CALL R9 2 - 0x6024000C, // 00E9 GETGBL R9 G12 - 0x88280106, // 00EA GETMBR R10 R0 K6 - 0x7C240200, // 00EB CALL R9 1 - 0x1C241308, // 00EC EQ R9 R9 K8 - 0x78260001, // 00ED JMPF R9 #00F0 - 0x4C240000, // 00EE LDNIL R9 - 0x90020C09, // 00EF SETMBR R0 K6 R9 - 0x70020001, // 00F0 JMP #00F3 - 0x4C240000, // 00F1 LDNIL R9 - 0x90020C09, // 00F2 SETMBR R0 K6 R9 - 0x7001FF90, // 00F3 JMP #0085 - 0xB81E4800, // 00F4 GETNGBL R7 K36 - 0x8C1C0F25, // 00F5 GETMET R7 R7 K37 - 0x7C1C0200, // 00F6 CALL R7 1 - 0x88200126, // 00F7 GETMBR R8 R0 K38 - 0x901E4C08, // 00F8 SETMBR R7 K38 R8 - 0x88200127, // 00F9 GETMBR R8 R0 K39 - 0x901E4E08, // 00FA SETMBR R7 K39 R8 - 0x4C200000, // 00FB LDNIL R8 - 0x20200608, // 00FC NE R8 R3 R8 - 0x78220008, // 00FD JMPF R8 #0107 - 0x6020000C, // 00FE GETGBL R8 G12 - 0x5C240600, // 00FF MOVE R9 R3 - 0x7C200200, // 0100 CALL R8 1 - 0x24201108, // 0101 GT R8 R8 K8 - 0x78220003, // 0102 JMPF R8 #0107 - 0x60200012, // 0103 GETGBL R8 G18 - 0x7C200000, // 0104 CALL R8 0 - 0x40241003, // 0105 CONNECT R9 R8 R3 - 0x901E5008, // 0106 SETMBR R7 K40 R8 - 0x4C200000, // 0107 LDNIL R8 - 0x20200C08, // 0108 NE R8 R6 R8 - 0x78220008, // 0109 JMPF R8 #0113 - 0x6020000C, // 010A GETGBL R8 G12 - 0x5C240C00, // 010B MOVE R9 R6 - 0x7C200200, // 010C CALL R8 1 - 0x24201108, // 010D GT R8 R8 K8 - 0x78220003, // 010E JMPF R8 #0113 - 0x60200012, // 010F GETGBL R8 G18 - 0x7C200000, // 0110 CALL R8 0 - 0x40241006, // 0111 CONNECT R9 R8 R6 - 0x901E5208, // 0112 SETMBR R7 K41 R8 - 0x88200102, // 0113 GETMBR R8 R0 K2 + 0x882C010E, // 00D1 GETMBR R11 R0 K14 + 0x2428140B, // 00D2 GT R10 R10 R11 + 0x782A0002, // 00D3 JMPF R10 #00D7 + 0x90020809, // 00D4 SETMBR R0 K4 R9 + 0x50100000, // 00D5 LDBOOL R4 0 0 + 0x70020002, // 00D6 JMP #00DA + 0x8C280D0F, // 00D7 GETMET R10 R6 K15 + 0x5C301200, // 00D8 MOVE R12 R9 + 0x7C280400, // 00D9 CALL R10 2 + 0x7001FFB4, // 00DA JMP #0090 + 0x78120012, // 00DB JMPF R4 #00EF + 0x6024000F, // 00DC GETGBL R9 G15 + 0x88280105, // 00DD GETMBR R10 R0 K5 + 0x602C0012, // 00DE GETGBL R11 G18 + 0x7C240400, // 00DF CALL R9 2 + 0x7826000B, // 00E0 JMPF R9 #00ED + 0x88240105, // 00E1 GETMBR R9 R0 K5 + 0x8C241310, // 00E2 GETMET R9 R9 K16 + 0x582C0007, // 00E3 LDCONST R11 K7 + 0x7C240400, // 00E4 CALL R9 2 + 0x6024000C, // 00E5 GETGBL R9 G12 + 0x88280105, // 00E6 GETMBR R10 R0 K5 + 0x7C240200, // 00E7 CALL R9 1 + 0x1C241307, // 00E8 EQ R9 R9 K7 + 0x78260001, // 00E9 JMPF R9 #00EC + 0x4C240000, // 00EA LDNIL R9 + 0x90020A09, // 00EB SETMBR R0 K5 R9 + 0x70020001, // 00EC JMP #00EF + 0x4C240000, // 00ED LDNIL R9 + 0x90020A09, // 00EE SETMBR R0 K5 R9 + 0x7001FF90, // 00EF JMP #0081 + 0xB81E4600, // 00F0 GETNGBL R7 K35 + 0x8C1C0F24, // 00F1 GETMET R7 R7 K36 + 0x7C1C0200, // 00F2 CALL R7 1 + 0x88200125, // 00F3 GETMBR R8 R0 K37 + 0x901E4A08, // 00F4 SETMBR R7 K37 R8 + 0x88200126, // 00F5 GETMBR R8 R0 K38 + 0x901E4C08, // 00F6 SETMBR R7 K38 R8 + 0x4C200000, // 00F7 LDNIL R8 + 0x20200608, // 00F8 NE R8 R3 R8 + 0x78220008, // 00F9 JMPF R8 #0103 + 0x6020000C, // 00FA GETGBL R8 G12 + 0x5C240600, // 00FB MOVE R9 R3 + 0x7C200200, // 00FC CALL R8 1 + 0x24201107, // 00FD GT R8 R8 K7 + 0x78220003, // 00FE JMPF R8 #0103 + 0x60200012, // 00FF GETGBL R8 G18 + 0x7C200000, // 0100 CALL R8 0 + 0x40241003, // 0101 CONNECT R9 R8 R3 + 0x901E4E08, // 0102 SETMBR R7 K39 R8 + 0x4C200000, // 0103 LDNIL R8 + 0x20200C08, // 0104 NE R8 R6 R8 + 0x78220008, // 0105 JMPF R8 #010F + 0x6020000C, // 0106 GETGBL R8 G12 + 0x5C240C00, // 0107 MOVE R9 R6 + 0x7C200200, // 0108 CALL R8 1 + 0x24201107, // 0109 GT R8 R8 K7 + 0x78220003, // 010A JMPF R8 #010F + 0x60200012, // 010B GETGBL R8 G18 + 0x7C200000, // 010C CALL R8 0 + 0x40241006, // 010D CONNECT R9 R8 R6 + 0x901E5008, // 010E SETMBR R7 K40 R8 + 0x88200101, // 010F GETMBR R8 R0 K1 + 0x4C240000, // 0110 LDNIL R9 + 0x20201009, // 0111 NE R8 R8 R9 + 0x74220004, // 0112 JMPT R8 #0118 + 0x88200104, // 0113 GETMBR R8 R0 K4 0x4C240000, // 0114 LDNIL R9 0x20201009, // 0115 NE R8 R8 R9 - 0x74220004, // 0116 JMPT R8 #011C - 0x88200105, // 0117 GETMBR R8 R0 K5 - 0x4C240000, // 0118 LDNIL R9 - 0x20201009, // 0119 NE R8 R8 R9 - 0x74220000, // 011A JMPT R8 #011C - 0x50200001, // 011B LDBOOL R8 0 1 - 0x50200200, // 011C LDBOOL R8 1 0 - 0x901E5408, // 011D SETMBR R7 K42 R8 - 0x8C200F2B, // 011E GETMET R8 R7 K43 - 0x7C200200, // 011F CALL R8 1 - 0x8C24112C, // 0120 GETMET R9 R8 K44 - 0x602C0015, // 0121 GETGBL R11 G21 - 0x8830010F, // 0122 GETMBR R12 R0 K15 - 0x7C2C0200, // 0123 CALL R11 1 - 0x7C240400, // 0124 CALL R9 2 - 0x8C28052D, // 0125 GETMET R10 R2 K45 - 0x5C301200, // 0126 MOVE R12 R9 - 0x7C280400, // 0127 CALL R10 2 - 0x8C28052E, // 0128 GETMET R10 R2 K46 - 0x7C280200, // 0129 CALL R10 1 - 0x8C28032F, // 012A GETMET R10 R1 K47 - 0x5C300400, // 012B MOVE R12 R2 - 0x7C280400, // 012C CALL R10 2 - 0x88280531, // 012D GETMBR R10 R2 K49 - 0x9002600A, // 012E SETMBR R0 K48 R10 - 0x88280F2A, // 012F GETMBR R10 R7 K42 - 0x782A0002, // 0130 JMPF R10 #0134 - 0x50280000, // 0131 LDBOOL R10 0 0 - 0x9002000A, // 0132 SETMBR R0 K0 R10 - 0x70020001, // 0133 JMP #0136 - 0x50280200, // 0134 LDBOOL R10 1 0 - 0x9002640A, // 0135 SETMBR R0 K50 R10 - 0x80000000, // 0136 RET 0 + 0x74220000, // 0116 JMPT R8 #0118 + 0x50200001, // 0117 LDBOOL R8 0 1 + 0x50200200, // 0118 LDBOOL R8 1 0 + 0x901E5208, // 0119 SETMBR R7 K41 R8 + 0x8C200F2A, // 011A GETMET R8 R7 K42 + 0x7C200200, // 011B CALL R8 1 + 0x8C20112B, // 011C GETMET R8 R8 K43 + 0x60280015, // 011D GETGBL R10 G21 + 0x882C010E, // 011E GETMBR R11 R0 K14 + 0x7C280200, // 011F CALL R10 1 + 0x7C200400, // 0120 CALL R8 2 + 0x8C24052C, // 0121 GETMET R9 R2 K44 + 0x5C2C1000, // 0122 MOVE R11 R8 + 0x7C240400, // 0123 CALL R9 2 + 0x8C24052D, // 0124 GETMET R9 R2 K45 + 0x7C240200, // 0125 CALL R9 1 + 0x8C24032E, // 0126 GETMET R9 R1 K46 + 0x5C2C0400, // 0127 MOVE R11 R2 + 0x7C240400, // 0128 CALL R9 2 + 0x88240530, // 0129 GETMBR R9 R2 K48 + 0x90025E09, // 012A SETMBR R0 K47 R9 + 0x88240F29, // 012B GETMBR R9 R7 K41 + 0x78260002, // 012C JMPF R9 #0130 + 0x50240000, // 012D LDBOOL R9 0 0 + 0x90026209, // 012E SETMBR R0 K49 R9 + 0x70020001, // 012F JMP #0132 + 0x50240200, // 0130 LDBOOL R9 1 0 + 0x90026409, // 0131 SETMBR R0 K50 R9 + 0x80000000, // 0132 RET 0 }) ) ); @@ -1092,7 +1094,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* na 0x88080102, // 000B GETMBR R2 R0 K2 0x8C080504, // 000C GETMET R2 R2 K4 0x7C080200, // 000D CALL R2 1 - 0x50080200, // 000E LDBOOL R2 1 0 + 0x50080000, // 000E LDBOOL R2 0 0 0x80040400, // 000F RET 1 R2 0x70020001, // 0010 JMP #0013 0x50080000, // 0011 LDBOOL R2 0 0 @@ -1118,33 +1120,34 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_ReportDataSubscribed_Pull, 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ + ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(ready), /* K1 */ be_nested_str_weak(generator_or_arr), /* K2 */ be_nested_str_weak(event_generator_or_arr), /* K3 */ be_nested_str_weak(report_data_phase), /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(finish), - /* K6 */ be_nested_str_weak(resp), - /* K7 */ be_nested_str_weak(build_standalone_ack), - /* K8 */ be_nested_str_weak(encode_frame), - /* K9 */ be_nested_str_weak(encrypt), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(loglevel), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), - /* K14 */ be_nested_str_weak(session), - /* K15 */ be_nested_str_weak(local_session_id), - /* K16 */ be_nested_str_weak(ack_message_counter), - /* K17 */ be_nested_str_weak(message_counter), - /* K18 */ be_nested_str_weak(send_response_frame), - /* K19 */ be_nested_str_weak(last_counter), - /* K20 */ be_nested_str_weak(sub), - /* K21 */ be_nested_str_weak(re_arm), + /* K5 */ be_nested_str_weak(finishing), + /* K6 */ be_nested_str_weak(finished), + /* K7 */ be_nested_str_weak(resp), + /* K8 */ be_nested_str_weak(build_standalone_ack), + /* K9 */ be_nested_str_weak(encode_frame), + /* K10 */ be_nested_str_weak(encrypt), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(loglevel), + /* K13 */ be_nested_str_weak(log), + /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), + /* K15 */ be_nested_str_weak(session), + /* K16 */ be_nested_str_weak(local_session_id), + /* K17 */ be_nested_str_weak(ack_message_counter), + /* K18 */ be_nested_str_weak(message_counter), + /* K19 */ be_nested_str_weak(send_response_frame), + /* K20 */ be_nested_str_weak(last_counter), + /* K21 */ be_nested_str_weak(sub), + /* K22 */ be_nested_str_weak(re_arm), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ + ( &(const binstruction[77]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 @@ -1156,7 +1159,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0x88080102, // 0008 GETMBR R2 R0 K2 0x4C0C0000, // 0009 LDNIL R3 0x20080403, // 000A NE R2 R2 R3 - 0x780A0033, // 000B JMPF R2 #0040 + 0x780A0031, // 000B JMPF R2 #003E 0x88080103, // 000C GETMBR R2 R0 K3 0x780A000F, // 000D JMPF R2 #001E 0x60080003, // 000E GETGBL R2 G3 @@ -1173,59 +1176,55 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0x50080000, // 0019 LDBOOL R2 0 0 0x90020002, // 001A SETMBR R0 K0 R2 0x50080000, // 001B LDBOOL R2 0 0 - 0x90020A02, // 001C SETMBR R0 K5 R2 - 0x70020020, // 001D JMP #003F - 0x88080106, // 001E GETMBR R2 R0 K6 - 0x8C080507, // 001F GETMET R2 R2 K7 + 0x90020C02, // 001C SETMBR R0 K6 R2 + 0x7002001E, // 001D JMP #003D + 0x88080107, // 001E GETMBR R2 R0 K7 + 0x8C080508, // 001F GETMET R2 R2 K8 0x50100000, // 0020 LDBOOL R4 0 0 0x7C080400, // 0021 CALL R2 2 - 0x8C0C0508, // 0022 GETMET R3 R2 K8 + 0x8C0C0509, // 0022 GETMET R3 R2 K9 0x7C0C0200, // 0023 CALL R3 1 - 0x8C0C0509, // 0024 GETMET R3 R2 K9 + 0x8C0C050A, // 0024 GETMET R3 R2 K10 0x7C0C0200, // 0025 CALL R3 1 - 0xB80E1400, // 0026 GETNGBL R3 K10 - 0x8C0C070B, // 0027 GETMET R3 R3 K11 + 0xB80E1600, // 0026 GETNGBL R3 K11 + 0x8C0C070C, // 0027 GETMET R3 R3 K12 0x54160003, // 0028 LDINT R5 4 0x7C0C0400, // 0029 CALL R3 2 0x780E0009, // 002A JMPF R3 #0035 - 0xB80E1800, // 002B GETNGBL R3 K12 + 0xB80E1A00, // 002B GETNGBL R3 K13 0x60100018, // 002C GETGBL R4 G24 - 0x5814000D, // 002D LDCONST R5 K13 - 0x8818050E, // 002E GETMBR R6 R2 K14 - 0x88180D0F, // 002F GETMBR R6 R6 K15 - 0x881C0510, // 0030 GETMBR R7 R2 K16 - 0x88200511, // 0031 GETMBR R8 R2 K17 + 0x5814000E, // 002D LDCONST R5 K14 + 0x8818050F, // 002E GETMBR R6 R2 K15 + 0x88180D10, // 002F GETMBR R6 R6 K16 + 0x881C0511, // 0030 GETMBR R7 R2 K17 + 0x88200512, // 0031 GETMBR R8 R2 K18 0x7C100800, // 0032 CALL R4 4 0x54160003, // 0033 LDINT R5 4 0x7C0C0400, // 0034 CALL R3 2 - 0x8C0C0312, // 0035 GETMET R3 R1 K18 + 0x8C0C0313, // 0035 GETMET R3 R1 K19 0x5C140400, // 0036 MOVE R5 R2 0x7C0C0400, // 0037 CALL R3 2 - 0x880C0511, // 0038 GETMBR R3 R2 K17 - 0x90022603, // 0039 SETMBR R0 K19 R3 - 0x500C0200, // 003A LDBOOL R3 1 0 - 0x90020A03, // 003B SETMBR R0 K5 R3 - 0x880C0114, // 003C GETMBR R3 R0 K20 - 0x8C0C0715, // 003D GETMET R3 R3 K21 - 0x7C0C0200, // 003E CALL R3 1 - 0x7002000F, // 003F JMP #0050 - 0x88080103, // 0040 GETMBR R2 R0 K3 - 0x780A0008, // 0041 JMPF R2 #004B - 0x60080003, // 0042 GETGBL R2 G3 - 0x5C0C0000, // 0043 MOVE R3 R0 - 0x7C080200, // 0044 CALL R2 1 - 0x8C080504, // 0045 GETMET R2 R2 K4 - 0x5C100200, // 0046 MOVE R4 R1 - 0x7C080400, // 0047 CALL R2 2 - 0x50080000, // 0048 LDBOOL R2 0 0 - 0x90020602, // 0049 SETMBR R0 K3 R2 - 0x70020004, // 004A JMP #0050 - 0x50080200, // 004B LDBOOL R2 1 0 - 0x90020A02, // 004C SETMBR R0 K5 R2 - 0x88080114, // 004D GETMBR R2 R0 K20 - 0x8C080515, // 004E GETMET R2 R2 K21 - 0x7C080200, // 004F CALL R2 1 - 0x80000000, // 0050 RET 0 + 0x880C0512, // 0038 GETMBR R3 R2 K18 + 0x90022803, // 0039 SETMBR R0 K20 R3 + 0x880C0115, // 003A GETMBR R3 R0 K21 + 0x8C0C0716, // 003B GETMET R3 R3 K22 + 0x7C0C0200, // 003C CALL R3 1 + 0x7002000D, // 003D JMP #004C + 0x88080103, // 003E GETMBR R2 R0 K3 + 0x780A0008, // 003F JMPF R2 #0049 + 0x60080003, // 0040 GETGBL R2 G3 + 0x5C0C0000, // 0041 MOVE R3 R0 + 0x7C080200, // 0042 CALL R2 1 + 0x8C080504, // 0043 GETMET R2 R2 K4 + 0x5C100200, // 0044 MOVE R4 R1 + 0x7C080400, // 0045 CALL R2 2 + 0x50080000, // 0046 LDBOOL R2 0 0 + 0x90020602, // 0047 SETMBR R0 K3 R2 + 0x70020002, // 0048 JMP #004C + 0x88080115, // 0049 GETMBR R2 R0 K21 + 0x8C080516, // 004A GETMET R2 R2 K22 + 0x7C080200, // 004B CALL R2 1 + 0x80000000, // 004C RET 0 }) ) ); @@ -1477,25 +1476,21 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */ &be_class_Matter_IM_SubscribedHeartbeat, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(send_im), + /* K0 */ be_nested_str_weak(send_im), + /* K1 */ be_nested_str_weak(ready), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x60080003, // 0004 GETGBL R2 G3 - 0x5C0C0000, // 0005 MOVE R3 R0 - 0x7C080200, // 0006 CALL R2 1 - 0x8C080501, // 0007 GETMET R2 R2 K1 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x50080000, // 000A LDBOOL R2 0 0 - 0x90020002, // 000B SETMBR R0 K0 R2 - 0x80000000, // 000C RET 0 + ( &(const binstruction[ 9]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x50080000, // 0006 LDBOOL R2 0 0 + 0x90020202, // 0007 SETMBR R0 K1 R2 + 0x80000000, // 0008 RET 0 }) ) ); @@ -1516,23 +1511,20 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_SubscribedHeartbeat, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(ack_received), - /* K1 */ be_nested_str_weak(finish), }), be_str_weak(ack_received), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 0x8C080500, // 0003 GETMET R2 R2 K0 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x50080200, // 0006 LDBOOL R2 1 0 - 0x90020202, // 0007 SETMBR R0 K1 R2 - 0x50080200, // 0008 LDBOOL R2 1 0 - 0x80040400, // 0009 RET 1 R2 + 0x50080000, // 0006 LDBOOL R2 0 0 + 0x80040400, // 0007 RET 1 R2 }) ) ); @@ -1736,7 +1728,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* 0, /* has sup protos */ &be_class_Matter_IM_SubscribeResponse_Pull, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), /* K1 */ be_nested_str_weak(loglevel), /* K2 */ be_const_int(3), @@ -1747,10 +1739,12 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* /* K7 */ be_nested_str_weak(sub), /* K8 */ be_nested_str_weak(subscription_id), /* K9 */ be_nested_str_weak(status_ok_received), + /* K10 */ be_nested_str_weak(report_data_phase), + /* K11 */ be_nested_str_weak(finishing), }), be_str_weak(status_ok_received), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[26]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x58100002, // 0002 LDCONST R4 K2 @@ -1773,6 +1767,10 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* 0x5C100200, // 0013 MOVE R4 R1 0x7C080400, // 0014 CALL R2 2 0x80040400, // 0015 RET 1 R2 + 0x8808010A, // 0016 GETMBR R2 R0 K10 + 0x740A0001, // 0017 JMPT R2 #001A + 0x50080200, // 0018 LDBOOL R2 1 0 + 0x90021602, // 0019 SETMBR R0 K11 R2 }) ) ); @@ -1794,10 +1792,10 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ &be_class_Matter_IM_SubscribeResponse_Pull, 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(report_data_phase), - /* K2 */ be_nested_str_weak(send_im), - /* K3 */ be_nested_str_weak(finish), + /* K0 */ be_nested_str_weak(report_data_phase), + /* K1 */ be_nested_str_weak(send_im), + /* K2 */ be_nested_str_weak(finishing), + /* K3 */ be_nested_str_weak(ready), /* K4 */ be_nested_str_weak(resp), /* K5 */ be_nested_str_weak(matter), /* K6 */ be_nested_str_weak(SubscribeResponseMessage), @@ -1816,60 +1814,56 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ + ( &(const binstruction[49]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x780A000E, // 0005 JMPF R2 #0015 - 0x60080003, // 0006 GETGBL R2 G3 - 0x5C0C0000, // 0007 MOVE R3 R0 - 0x7C080200, // 0008 CALL R2 1 - 0x8C080502, // 0009 GETMET R2 R2 K2 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x88080103, // 000C GETMBR R2 R0 K3 - 0x780A0003, // 000D JMPF R2 #0012 + 0x780A000E, // 0001 JMPF R2 #0011 + 0x60080003, // 0002 GETGBL R2 G3 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C080200, // 0004 CALL R2 1 + 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x780A0003, // 0009 JMPF R2 #000E + 0x50080000, // 000A LDBOOL R2 0 0 + 0x90020002, // 000B SETMBR R0 K0 R2 + 0x50080000, // 000C LDBOOL R2 0 0 + 0x90020402, // 000D SETMBR R0 K2 R2 0x50080000, // 000E LDBOOL R2 0 0 - 0x90020202, // 000F SETMBR R0 K1 R2 - 0x50080000, // 0010 LDBOOL R2 0 0 - 0x90020602, // 0011 SETMBR R0 K3 R2 - 0x50080000, // 0012 LDBOOL R2 0 0 - 0x90020002, // 0013 SETMBR R0 K0 R2 - 0x7002001E, // 0014 JMP #0034 - 0x88080104, // 0015 GETMBR R2 R0 K4 - 0xB80E0A00, // 0016 GETNGBL R3 K5 - 0x8C0C0706, // 0017 GETMET R3 R3 K6 - 0x7C0C0200, // 0018 CALL R3 1 - 0x88100108, // 0019 GETMBR R4 R0 K8 - 0x88100907, // 001A GETMBR R4 R4 K7 - 0x900E0E04, // 001B SETMBR R3 K7 R4 - 0x88100108, // 001C GETMBR R4 R0 K8 - 0x88100909, // 001D GETMBR R4 R4 K9 - 0x900E1204, // 001E SETMBR R3 K9 R4 - 0x88100104, // 001F GETMBR R4 R0 K4 - 0x54160003, // 0020 LDINT R5 4 - 0x90121405, // 0021 SETMBR R4 K10 R5 - 0x8C10050B, // 0022 GETMET R4 R2 K11 - 0x8C18070C, // 0023 GETMET R6 R3 K12 - 0x7C180200, // 0024 CALL R6 1 - 0x8C180D0D, // 0025 GETMET R6 R6 K13 - 0x7C180200, // 0026 CALL R6 1 - 0x7C100400, // 0027 CALL R4 2 - 0x8C10050E, // 0028 GETMET R4 R2 K14 - 0x7C100200, // 0029 CALL R4 1 - 0x8C10030F, // 002A GETMET R4 R1 K15 - 0x5C180400, // 002B MOVE R6 R2 - 0x7C100400, // 002C CALL R4 2 - 0x88100511, // 002D GETMBR R4 R2 K17 - 0x90022004, // 002E SETMBR R0 K16 R4 - 0x88100108, // 002F GETMBR R4 R0 K8 - 0x8C100912, // 0030 GETMET R4 R4 K18 - 0x7C100200, // 0031 CALL R4 1 - 0x50100200, // 0032 LDBOOL R4 1 0 - 0x90020604, // 0033 SETMBR R0 K3 R4 - 0x80000000, // 0034 RET 0 + 0x90020602, // 000F SETMBR R0 K3 R2 + 0x7002001E, // 0010 JMP #0030 + 0x88080104, // 0011 GETMBR R2 R0 K4 + 0xB80E0A00, // 0012 GETNGBL R3 K5 + 0x8C0C0706, // 0013 GETMET R3 R3 K6 + 0x7C0C0200, // 0014 CALL R3 1 + 0x88100108, // 0015 GETMBR R4 R0 K8 + 0x88100907, // 0016 GETMBR R4 R4 K7 + 0x900E0E04, // 0017 SETMBR R3 K7 R4 + 0x88100108, // 0018 GETMBR R4 R0 K8 + 0x88100909, // 0019 GETMBR R4 R4 K9 + 0x900E1204, // 001A SETMBR R3 K9 R4 + 0x88100104, // 001B GETMBR R4 R0 K4 + 0x54160003, // 001C LDINT R5 4 + 0x90121405, // 001D SETMBR R4 K10 R5 + 0x8C10050B, // 001E GETMET R4 R2 K11 + 0x8C18070C, // 001F GETMET R6 R3 K12 + 0x7C180200, // 0020 CALL R6 1 + 0x8C180D0D, // 0021 GETMET R6 R6 K13 + 0x7C180200, // 0022 CALL R6 1 + 0x7C100400, // 0023 CALL R4 2 + 0x8C10050E, // 0024 GETMET R4 R2 K14 + 0x7C100200, // 0025 CALL R4 1 + 0x8C10030F, // 0026 GETMET R4 R1 K15 + 0x5C180400, // 0027 MOVE R6 R2 + 0x7C100400, // 0028 CALL R4 2 + 0x88100511, // 0029 GETMBR R4 R2 K17 + 0x90022004, // 002A SETMBR R0 K16 R4 + 0x88100108, // 002B GETMBR R4 R0 K8 + 0x8C100912, // 002C GETMET R4 R4 K18 + 0x7C100200, // 002D CALL R4 1 + 0x50100200, // 002E LDBOOL R4 1 0 + 0x90020404, // 002F SETMBR R0 K2 R4 + 0x80000000, // 0030 RET 0 }) ) ); From 8d2d121b6d341536d13b49594fe57c8449653722 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 29 Jun 2024 22:12:34 +0200 Subject: [PATCH 106/252] Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) --- CHANGELOG.md | 1 + .../tasmota_xdrv_driver/xdrv_52_9_berry.ino | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fb703c71..ed1b71b6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) - Berry `tasmota.rtc("config_time")` (#21698) - Berry `math.min()` and `math.max()` +- Berry `FUNC_ANY_KEY` event calling `any_key()` ### Breaking Changed diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino index 3ea6508ad..7384f1ebb 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino @@ -946,6 +946,28 @@ bool Xdrv52(uint32_t function) case FUNC_SET_DEVICE_POWER: result = callBerryEventDispatcher(PSTR("set_power_handler"), nullptr, XdrvMailbox.index, nullptr); break; + case FUNC_ANY_KEY: + // XdrvMailbox.payload = device_save << 24 | key << 16 | state << 8 | device; + // key 0 = KEY_BUTTON = button_topic + // key 1 = KEY_SWITCH = switch_topic + // state 0 = POWER_OFF = off + // state 1 = POWER_ON = on + // state 2 = POWER_TOGGLE = toggle + // state 3 = POWER_HOLD = hold + // state 4 = POWER_INCREMENT = button still pressed + // state 5 = POWER_INV = button released + // state 6 = POWER_CLEAR = button released + // state 7 = POWER_RELEASE = button released + // state 9 = CLEAR_RETAIN = clear retain flag + // state 10 = POWER_DELAYED = button released delayed + // Button Multipress + // state 10 = SINGLE + // state 11 = DOUBLE + // state 12 = TRIPLE + // state 13 = QUAD + // state 14 = PENTA + result = callBerryEventDispatcher("any_key", nullptr, XdrvMailbox.payload, nullptr); + break; #ifdef USE_WEBSERVER case FUNC_WEB_ADD_CONSOLE_BUTTON: if (XdrvMailbox.index) { From 171d64109283fcf553c2fb9c1ccf5d2dad179e3d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Jun 2024 15:38:40 +0200 Subject: [PATCH 107/252] Update changelogs --- CHANGELOG.md | 4 ++-- RELEASENOTES.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed1b71b6c..4021fc26b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,8 @@ All notable changes to this project will be documented in this file. ### Added - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) - Berry `tasmota.rtc("config_time")` (#21698) -- Berry `math.min()` and `math.max()` -- Berry `FUNC_ANY_KEY` event calling `any_key()` +- Berry `math.min()` and `math.max()` (#21705) +- Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b668533d7..79f96d12a 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -130,6 +130,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) - Berry `classof` extended to class methods [#21615](https://github.com/arendst/Tasmota/issues/21615) - Berry `tasmota.rtc("config_time")` [#21698](https://github.com/arendst/Tasmota/issues/21698) +- Berry `math.min()` and `math.max()` [#21705](https://github.com/arendst/Tasmota/issues/21705) +- Berry `FUNC_ANY_KEY` event calling `any_key()` [#21708](https://github.com/arendst/Tasmota/issues/21708) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) From 33062dc839131dfbad6318a3d85bf7c38f288f35 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Jun 2024 16:58:37 +0200 Subject: [PATCH 108/252] Refactor energy drivers --- tasmota/include/tasmota_types.h | 6 +- tasmota/tasmota_support/settings.ino | 6 +- .../tasmota_xdrv_driver/xdrv_03_energy.ino | 116 +++++++----------- .../xdrv_03_esp32_energy.ino | 44 +++---- 4 files changed, 74 insertions(+), 98 deletions(-) diff --git a/tasmota/include/tasmota_types.h b/tasmota/include/tasmota_types.h index cd5325aff..ddd0566a6 100755 --- a/tasmota/include/tasmota_types.h +++ b/tasmota/include/tasmota_types.h @@ -562,9 +562,9 @@ typedef struct { uint16_t energy_max_power_limit; // 386 MaxPowerLimit uint16_t energy_max_power_limit_hold; // 388 MaxPowerLimitHold uint16_t energy_max_power_limit_window; // 38A MaxPowerLimitWindow - uint16_t energy_max_power_safe_limit; // 38C MaxSafePowerLimit - uint16_t energy_max_power_safe_limit_hold; // 38E MaxSafePowerLimitHold - uint16_t energy_max_power_safe_limit_window; // 390 MaxSafePowerLimitWindow + uint16_t ex_energy_max_power_safe_limit; // 38C MaxSafePowerLimit - Free since 14.1.0.3 + uint16_t ex_energy_max_power_safe_limit_hold; // 38E MaxSafePowerLimitHold - Free since 14.1.0.3 + uint16_t ex_energy_max_power_safe_limit_window; // 390 MaxSafePowerLimitWindow - Free since 14.1.0.3 uint16_t energy_max_energy; // 392 MaxEnergy uint16_t energy_max_energy_start; // 394 MaxEnergyStart uint16_t mqtt_retry; // 396 diff --git a/tasmota/tasmota_support/settings.ino b/tasmota/tasmota_support/settings.ino index 3a77bfda0..9b002f26c 100644 --- a/tasmota/tasmota_support/settings.ino +++ b/tasmota/tasmota_support/settings.ino @@ -1208,9 +1208,9 @@ void SettingsDefaultSet2(void) { // Settings->energy_max_power_limit = 0; // MaxPowerLimit Settings->energy_max_power_limit_hold = MAX_POWER_HOLD; Settings->energy_max_power_limit_window = MAX_POWER_WINDOW; -// Settings->energy_max_power_safe_limit = 0; // MaxSafePowerLimit - Settings->energy_max_power_safe_limit_hold = SAFE_POWER_HOLD; - Settings->energy_max_power_safe_limit_window = SAFE_POWER_WINDOW; +// Settings->ex_energy_max_power_safe_limit = 0; // MaxSafePowerLimit +// Settings->ex_energy_max_power_safe_limit_hold = SAFE_POWER_HOLD; +// Settings->ex_energy_max_power_safe_limit_window = SAFE_POWER_WINDOW; // Settings->energy_max_energy = 0; // MaxEnergy // Settings->energy_max_energy_start = 0; // MaxEnergyStart // Settings->energy_kWhtotal_ph[0] = 0; diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino index 7f1498278..cc364876f 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino @@ -59,7 +59,6 @@ const char kEnergyCommands[] PROGMEM = "|" // No prefix #ifdef USE_ENERGY_POWER_LIMIT D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|" D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|" - D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW "|" #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION D_CMND_ENERGYTODAY "|" D_CMND_ENERGYYESTERDAY "|" D_CMND_ENERGYTOTAL "|" D_CMND_ENERGYEXPORTACTIVE "|" D_CMND_ENERGYUSAGE "|" D_CMND_ENERGYEXPORT "|" D_CMND_TARIFF; @@ -72,7 +71,6 @@ void (* const EnergyCommand[])(void) PROGMEM = { #ifdef USE_ENERGY_POWER_LIMIT &CmndMaxEnergy, &CmndMaxEnergyStart, &CmndMaxPower, &CmndMaxPowerHold, &CmndMaxPowerWindow, - &CmndSafePower, &CmndSafePowerHold, &CmndSafePowerWindow, #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION &CmndEnergyToday, &CmndEnergyYesterday, &CmndEnergyTotal, &CmndEnergyExportActive, &CmndEnergyUsage, &CmndEnergyExport, &CmndTariff}; @@ -1018,10 +1016,30 @@ void CmndEnergyConfig(void) { \*********************************************************************************************/ void EnergyMarginStatus(void) { - Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":[%d,%d,%d],\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" - D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"), - Settings->energy_power_delta[0], Settings->energy_power_delta[1], Settings->energy_power_delta[2], Settings->energy_min_power, Settings->energy_max_power, - Settings->energy_min_voltage, Settings->energy_max_voltage, Settings->energy_min_current, Settings->energy_max_current); + Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":")); + if (Energy->phase_count > 1) { + for (uint32_t i = 0; i < Energy->phase_count; i++) { + ResponseAppend_P(PSTR("%c%d"), (i)?',':'[', Settings->energy_power_delta[i]); + } + ResponseAppend_P(PSTR("]")); + } else { + ResponseAppend_P(PSTR("%d"), Settings->energy_power_delta[0]); + } + ResponseAppend_P(PSTR(",\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" + D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" + D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d"), + Settings->energy_min_power, Settings->energy_max_power, + Settings->energy_min_voltage, Settings->energy_max_voltage, + Settings->energy_min_current, Settings->energy_max_current); +#ifdef USE_ENERGY_POWER_LIMIT + ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWER "\":%d,\"" + D_CMND_MAXPOWERHOLD "\":%d,\"" D_CMND_MAXPOWERWINDOW "\":%d,\"" + D_CMND_MAXENERGY "\":%d,\"" D_CMND_MAXENERGYSTART "\":%d"), + Settings->energy_max_power_limit, + Settings->energy_max_power_limit_hold, Settings->energy_max_power_limit_window, + Settings->energy_max_energy, Settings->energy_max_energy_start); +#endif // USE_ENERGY_POWER_LIMIT + ResponseJsonEndEnd(); } void CmndPowerDelta(void) { @@ -1033,104 +1051,62 @@ void CmndPowerDelta(void) { } } -void CmndPowerLow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_min_power = XdrvMailbox.payload; +bool ResponseCmndEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value = 1); +bool ResponseCmndEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value) { + bool value_changed = false; + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= max_value)) { + *value = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload; + value_changed = true; } - ResponseCmndNumber(Settings->energy_min_power); + ResponseCmndNumber(*value); + return value_changed; +} + +void CmndPowerLow(void) { + ResponseCmndEnergyMargin(&Settings->energy_min_power, 6000); } void CmndPowerHigh(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power); + ResponseCmndEnergyMargin(&Settings->energy_max_power, 6000); } void CmndVoltageLow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { - Settings->energy_min_voltage = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_min_voltage); + ResponseCmndEnergyMargin(&Settings->energy_min_voltage, 500); } void CmndVoltageHigh(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) { - Settings->energy_max_voltage = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_voltage); + ResponseCmndEnergyMargin(&Settings->energy_max_voltage, 500); } void CmndCurrentLow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { - Settings->energy_min_current = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_min_current); + ResponseCmndEnergyMargin(&Settings->energy_min_current, 25000); } void CmndCurrentHigh(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) { - Settings->energy_max_current = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_current); + ResponseCmndEnergyMargin(&Settings->energy_max_current, 25000); } #ifdef USE_ENERGY_POWER_LIMIT void CmndMaxPower(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_limit = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_limit); + ResponseCmndEnergyMargin(&Settings->energy_max_power_limit, 6000); } void CmndMaxPowerHold(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_limit_hold = (1 == XdrvMailbox.payload) ? MAX_POWER_HOLD : XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_limit_hold); + ResponseCmndEnergyMargin(&Settings->energy_max_power_limit_hold, 6000, MAX_POWER_HOLD); } void CmndMaxPowerWindow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_limit_window = (1 == XdrvMailbox.payload) ? MAX_POWER_WINDOW : XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_limit_window); -} - -void CmndSafePower(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_safe_limit = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_safe_limit); -} - -void CmndSafePowerHold(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_power_safe_limit_hold = (1 == XdrvMailbox.payload) ? SAFE_POWER_HOLD : XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_safe_limit_hold); -} - -void CmndSafePowerWindow(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 1440)) { - Settings->energy_max_power_safe_limit_window = (1 == XdrvMailbox.payload) ? SAFE_POWER_WINDOW : XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_power_safe_limit_window); + ResponseCmndEnergyMargin(&Settings->energy_max_power_limit_window, 6000, MAX_POWER_WINDOW); } void CmndMaxEnergy(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) { - Settings->energy_max_energy = XdrvMailbox.payload; + if (ResponseCmndEnergyMargin(&Settings->energy_max_energy, 6000)) { Energy->max_energy_state = 3; } - ResponseCmndNumber(Settings->energy_max_energy); } void CmndMaxEnergyStart(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 24)) { - Settings->energy_max_energy_start = XdrvMailbox.payload; - } - ResponseCmndNumber(Settings->energy_max_energy_start); + ResponseCmndEnergyMargin(&Settings->energy_max_energy_start, 23); } #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 32d2e1dc3..453f73f39 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -1329,18 +1329,18 @@ void CmndEnergyConfig(void) { * USE_ENERGY_MARGIN_DETECTION and USE_ENERGY_POWER_LIMIT \*********************************************************************************************/ -void ResponseAppendMargin(uint16_t* start, uint32_t step_size = 0); -void ResponseAppendMargin(uint16_t* start, uint32_t step_size) { +void ResponseAppendMargin(uint16_t* value, uint32_t step_size = 0); +void ResponseAppendMargin(uint16_t* value, uint32_t step_size) { if (Energy->phase_count > 1) { if (0 == step_size) { step_size = sizeof(tPhase) / sizeof(uint16_t); } for (uint32_t i = 0; i < Energy->phase_count; i++) { - ResponseAppend_P(PSTR("%c%d"), (i)?',':'[', start[i * step_size]); + ResponseAppend_P(PSTR("%c%d"), (i)?',':'[', value[i * step_size]); } ResponseAppend_P(PSTR("]")); } else { - ResponseAppend_P(PSTR("%d"), start[0]); + ResponseAppend_P(PSTR("%d"), value[0]); } } @@ -1372,8 +1372,8 @@ void EnergyMarginStatus(void) { ResponseJsonEndEnd(); } -bool ResponseCmndEnergyMargin(uint16_t* start, uint32_t max_value, uint32_t default_value = 1, uint32_t step_size = 0); -bool ResponseCmndEnergyMargin(uint16_t* start, uint32_t max_value, uint32_t default_value, uint32_t step_size) { +bool ResponseCmndIdxEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value = 1, uint32_t step_size = 0); +bool ResponseCmndIdxEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value, uint32_t step_size) { bool value_changed = false; if ((XdrvMailbox.index >= 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) { if (0 == step_size) { @@ -1383,75 +1383,75 @@ bool ResponseCmndEnergyMargin(uint16_t* start, uint32_t max_value, uint32_t defa if (0 == XdrvMailbox.index) { // PowerLow0 10 for (uint32_t i = 0; i < Energy->phase_count; i++) { - start[i * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload; + value[i * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload; } } else { // PowerLow 10 = PowerLow1 10 .. PowerLow8 10 - start[(XdrvMailbox.index -1) * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload; + value[(XdrvMailbox.index -1) * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload; } value_changed = true; } if (0 == XdrvMailbox.index) { // PowerLow0, PowerLow0 10 ResponseCmnd(); - ResponseAppendMargin(start, step_size); + ResponseAppendMargin(value, step_size); ResponseJsonEnd(); } else { // PowerLow = PowerLow1 .. PowerLow8 - ResponseCmndIdxNumber(start[(XdrvMailbox.index -1) * step_size]); + ResponseCmndIdxNumber(value[(XdrvMailbox.index -1) * step_size]); } } return value_changed; } void CmndPowerDelta(void) { - ResponseCmndEnergyMargin(&Energy->Settings.power_delta[0], 32000, 1, 1); + ResponseCmndIdxEnergyMargin(&Energy->Settings.power_delta[0], 32000, 1, 1); } void CmndPowerLow(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].min_power, 6000); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].min_power, 6000); } void CmndPowerHigh(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power, 6000); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power, 6000); } void CmndVoltageLow(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].min_voltage, 500); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].min_voltage, 500); } void CmndVoltageHigh(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_voltage, 500); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_voltage, 500); } void CmndCurrentLow(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].min_current, 25000); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].min_current, 25000); } void CmndCurrentHigh(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_current, 25000); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_current, 25000); } void CmndMaxPower(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power_limit, 6000); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power_limit, 6000); } void CmndMaxPowerHold(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power_limit_hold, 6000, MAX_POWER_HOLD); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power_limit_hold, 6000, MAX_POWER_HOLD); } void CmndMaxPowerWindow(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_power_limit_window, 6000, MAX_POWER_WINDOW); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power_limit_window, 6000, MAX_POWER_WINDOW); } void CmndMaxEnergy(void) { - if (ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_energy, 6000)) { + if (ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_energy, 6000)) { Energy->max_energy_state[XdrvMailbox.index -1] = 3; } } void CmndMaxEnergyStart(void) { - ResponseCmndEnergyMargin(&Energy->Settings.phase[0].max_energy_start, 23); + ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_energy_start, 23); } /********************************************************************************************/ From 65588b8126ca0b87333b66f1114a579ae6bf2efd Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Jun 2024 17:26:39 +0200 Subject: [PATCH 109/252] Increase upper limits user entry for energy drivers (#16059) --- tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino | 6 +++--- tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino | 6 +++--- tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino | 6 +++--- tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino b/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino index 1c4695b4d..f3b6a580b 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino @@ -604,7 +604,7 @@ bool McpCommand(void) if (CMND_POWERSET == Energy->command_code) { if (XdrvMailbox.data_len && mcp_active_power) { value = (unsigned long)(CharToFloat(XdrvMailbox.data) * 100); - if ((value > 100) && (value < 200000)) { // Between 1W and 2000W + if ((value > 100) && (value < 2000000)) { // Between 1W and 20000W XdrvMailbox.payload = value; mcp_calibrate |= MCP_CALIBRATE_POWER; McpGetCalibration(); @@ -614,7 +614,7 @@ bool McpCommand(void) else if (CMND_VOLTAGESET == Energy->command_code) { if (XdrvMailbox.data_len && mcp_voltage_rms) { value = (unsigned long)(CharToFloat(XdrvMailbox.data) * 10); - if ((value > 1000) && (value < 2600)) { // Between 100V and 260V + if ((value > 1000) && (value < 4000)) { // Between 100V and 400V XdrvMailbox.payload = value; mcp_calibrate |= MCP_CALIBRATE_VOLTAGE; McpGetCalibration(); @@ -624,7 +624,7 @@ bool McpCommand(void) else if (CMND_CURRENTSET == Energy->command_code) { if (XdrvMailbox.data_len && mcp_current_rms) { value = (unsigned long)(CharToFloat(XdrvMailbox.data) * 10); - if ((value > 100) && (value < 80000)) { // Between 10mA and 8A + if ((value > 100) && (value < 800000)) { // Between 10mA and 80A XdrvMailbox.payload = value; mcp_calibrate |= MCP_CALIBRATE_CURRENT; McpGetCalibration(); diff --git a/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino b/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino index 526950d1d..30330d1fe 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino @@ -829,7 +829,7 @@ bool Ade7953Command(void) { } else if (CMND_POWERSET == Energy->command_code) { if (XdrvMailbox.data_len && Ade7953.active_power[channel]) { - if ((value > 100) && (value < 200000)) { // Between 1W and 2000W + if ((value > 100) && (value < 2000000)) { // Between 1W and 20000W #ifdef ADE7953_ACCU_ENERGY float power_calibration = (float)(Ade7953.active_power[channel] * 1000) / value; // 0.00 W power_calibration *= ADE7953_POWER_CORRECTION; @@ -842,14 +842,14 @@ bool Ade7953Command(void) { } else if (CMND_VOLTAGESET == Energy->command_code) { if (XdrvMailbox.data_len && Ade7953.voltage_rms[channel]) { - if ((value > 10000) && (value < 26000)) { // Between 100V and 260V + if ((value > 10000) && (value < 40000)) { // Between 100V and 400V XdrvMailbox.payload = (Ade7953.voltage_rms[channel] * 100) / value; // 0.00 V } } } else if (CMND_CURRENTSET == Energy->command_code) { if (XdrvMailbox.data_len && Ade7953.current_rms[channel]) { - if ((value > 2000) && (value < 1000000)) { // Between 20mA and 10A + if ((value > 2000) && (value < 10000000)) { // Between 20mA and 100A XdrvMailbox.payload = ((Ade7953.current_rms[channel] * 100) / value) * 100; // 0.00 mA } } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino index 09a454201..2fc4ea1fb 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino @@ -624,7 +624,7 @@ bool Cse7761Command(void) { } else if (CMND_POWERSET == Energy->command_code) { if (XdrvMailbox.data_len && CSE7761Data.active_power[channel]) { - if ((value > 100) && (value < 200000)) { // Between 1W and 2000W + if ((value > 100) && (value < 2000000)) { // Between 1W and 20000W XdrvMailbox.payload = ((CSE7761Data.active_power[channel]) / value) * 100; } } @@ -635,7 +635,7 @@ bool Cse7761Command(void) { } else if (CMND_VOLTAGESET == Energy->command_code) { if (XdrvMailbox.data_len && CSE7761Data.voltage_rms) { - if ((value > 10000) && (value < 26000)) { // Between 100V and 260V + if ((value > 10000) && (value < 40000)) { // Between 100V and 400V XdrvMailbox.payload = (CSE7761Data.voltage_rms * 100) / value; } } @@ -646,7 +646,7 @@ bool Cse7761Command(void) { } else if (CMND_CURRENTSET == Energy->command_code) { if (XdrvMailbox.data_len && CSE7761Data.current_rms[channel]) { - if ((value > 1000) && (value < 1000000)) { // Between 10mA and 10A + if ((value > 1000) && (value < 10000000)) { // Between 10mA and 100A XdrvMailbox.payload = ((CSE7761Data.current_rms[channel] * 100) / value) * 1000; } } diff --git a/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino b/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino index b0b5d442a..1e95abf6f 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino @@ -264,21 +264,21 @@ bool Bl6523Command(void) { } else if (CMND_POWERSET == Energy->command_code) { if (XdrvMailbox.data_len) { - if ((abs_value > 100) && (abs_value < 200000)) { // Between 1.00 and 2000.00 W + if ((abs_value > 100) && (abs_value < 2000000)) { // Between 1.00 and 20000.00 W XdrvMailbox.payload = abs_value; } } } else if (CMND_VOLTAGESET == Energy->command_code) { if (XdrvMailbox.data_len) { - if ((abs_value > 10000) && (abs_value < 26000)) { // Between 100.00 and 260.00 V + if ((abs_value > 10000) && (abs_value < 40000)) { // Between 100.00 and 400.00 V XdrvMailbox.payload = abs_value; } } } else if (CMND_CURRENTSET == Energy->command_code) { if (XdrvMailbox.data_len) { - if ((abs_value > 1000) && (abs_value < 1000000)) { // Between 10.00 mA and 10.00000 A + if ((abs_value > 1000) && (abs_value < 10000000)) { // Between 10.00 mA and 100.00000 A XdrvMailbox.payload = abs_value; } } From 6842b534255dc004ab1103f831dd87e1856ea127 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 30 Jun 2024 19:14:32 +0200 Subject: [PATCH 110/252] Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes (#21709) --- CHANGELOG.md | 1 + .../tasmota_xdrv_driver/xdrv_52_9_berry.ino | 21 +++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4021fc26b..633172b6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Berry `tasmota.rtc("config_time")` (#21698) - Berry `math.min()` and `math.max()` (#21705) - Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) +- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes ### Breaking Changed diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino index 7384f1ebb..dc6281b39 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino @@ -946,6 +946,23 @@ bool Xdrv52(uint32_t function) case FUNC_SET_DEVICE_POWER: result = callBerryEventDispatcher(PSTR("set_power_handler"), nullptr, XdrvMailbox.index, nullptr); break; + case FUNC_BUTTON_PRESSED: + // XdrvMailbox.index = button_index; + // XdrvMailbox.payload = button; + // XdrvMailbox.command_code = Button.last_state[button_index]; + if (XdrvMailbox.payload != XdrvMailbox.command_code) { // fire event only when state changes + result = callBerryEventDispatcher(PSTR("button_pressed"), nullptr, + (XdrvMailbox.payload & 0xFF) << 16 | (XdrvMailbox.command_code & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) , + nullptr); + } + break; + case FUNC_BUTTON_MULTI_PRESSED: + // XdrvMailbox.index = button_index; + // XdrvMailbox.payload = Button.press_counter[button_index]; + result = callBerryEventDispatcher(PSTR("button_multi_pressed"), nullptr, + (XdrvMailbox.payload & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) , + nullptr); + break; case FUNC_ANY_KEY: // XdrvMailbox.payload = device_save << 24 | key << 16 | state << 8 | device; // key 0 = KEY_BUTTON = button_topic @@ -1014,10 +1031,6 @@ bool Xdrv52(uint32_t function) callBerryEventDispatcher(PSTR("after_teleperiod"), nullptr, 0, nullptr); break; - case FUNC_BUTTON_PRESSED: - callBerryEventDispatcher(PSTR("button_pressed"), nullptr, 0, nullptr); - break; - case FUNC_ACTIVE: result = true; break; From 2cc785bf20e29fe501f63efd4b9f85a020c08380 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 30 Jun 2024 21:00:14 +0200 Subject: [PATCH 111/252] Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711) --- CHANGELOG.md | 2 +- .../tasmota_xdrv_driver/xdrv_52_9_berry.ino | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 633172b6b..6aacc2a7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ All notable changes to this project will be documented in this file. - Berry `tasmota.rtc("config_time")` (#21698) - Berry `math.min()` and `math.max()` (#21705) - Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) -- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes +- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second ### Breaking Changed diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino index dc6281b39..5e90a1130 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino @@ -947,13 +947,17 @@ bool Xdrv52(uint32_t function) result = callBerryEventDispatcher(PSTR("set_power_handler"), nullptr, XdrvMailbox.index, nullptr); break; case FUNC_BUTTON_PRESSED: - // XdrvMailbox.index = button_index; - // XdrvMailbox.payload = button; - // XdrvMailbox.command_code = Button.last_state[button_index]; - if (XdrvMailbox.payload != XdrvMailbox.command_code) { // fire event only when state changes - result = callBerryEventDispatcher(PSTR("button_pressed"), nullptr, - (XdrvMailbox.payload & 0xFF) << 16 | (XdrvMailbox.command_code & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) , - nullptr); + { + static uint32_t timer_last_button_sent = 0; + // XdrvMailbox.index = button_index; + // XdrvMailbox.payload = button; + // XdrvMailbox.command_code = Button.last_state[button_index]; + if ((XdrvMailbox.payload != XdrvMailbox.command_code) || TimeReached(timer_last_button_sent)) { // fire event only when state changes + timer_last_button_sent = millis() + 1000; // wait for 1 second + result = callBerryEventDispatcher(PSTR("button_pressed"), nullptr, + (XdrvMailbox.payload & 0xFF) << 16 | (XdrvMailbox.command_code & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) , + nullptr); + } } break; case FUNC_BUTTON_MULTI_PRESSED: From c8e29dafc638ac04fd0eacffc54b669d3ad12637 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 1 Jul 2024 12:31:02 +0200 Subject: [PATCH 112/252] Changed ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) --- CHANGELOG.md | 3 ++- RELEASENOTES.md | 2 ++ .../xdrv_87_esp32_sonoff_tm1621.ino | 21 +++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aacc2a7f..1f3a04621 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,13 @@ All notable changes to this project will be documented in this file. - Berry `tasmota.rtc("config_time")` (#21698) - Berry `math.min()` and `math.max()` (#21705) - Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) -- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second +- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711) ### Breaking Changed ### Changed - ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695) +- ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) ### Fixed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 79f96d12a..a76fb90bd 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -132,6 +132,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry `tasmota.rtc("config_time")` [#21698](https://github.com/arendst/Tasmota/issues/21698) - Berry `math.min()` and `math.max()` [#21705](https://github.com/arendst/Tasmota/issues/21705) - Berry `FUNC_ANY_KEY` event calling `any_key()` [#21708](https://github.com/arendst/Tasmota/issues/21708) +- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second [#21711](https://github.com/arendst/Tasmota/issues/21711) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) @@ -155,6 +156,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 support for energy margin checks, like ``MaxPower2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) +- ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) - Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino index 368ed1c75..ae31b78ff 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino @@ -56,10 +56,10 @@ enum Tm1621Units { TM1621_NONE, TM1621_TEMPERATURE, TM1621_HUMIDITY, TM1621_VOL const uint8_t tm1621_commands[] = { TM1621_SYS_EN, TM1621_LCD_ON, TM1621_BIAS, TM1621_TIMER_DIS, TM1621_WDT_DIS, TM1621_TONE_OFF, TM1621_IRQ_DIS }; -const char tm1621_kchar[] PROGMEM = { "0|1|2|3|4|5|6|7|8|9|-| " }; -// 0 1 2 3 4 5 6 7 8 9 - off -const uint8_t tm1621_digit_row[2][12] = {{ 0x5F, 0x50, 0x3D, 0x79, 0x72, 0x6B, 0x6F, 0x51, 0x7F, 0x7B, 0x20, 0x00 }, - { 0xF5, 0x05, 0xB6, 0x97, 0x47, 0xD3, 0xF3, 0x85, 0xF7, 0xD7, 0x02, 0x00 }}; +const char tm1621_kchar[] PROGMEM = { "0|1|2|3|4|5|6|7|8|9|-|E| " }; +// 0 1 2 3 4 5 6 7 8 9 - E off +const uint8_t tm1621_digit_row[2][13] = {{ 0x5F, 0x50, 0x3D, 0x79, 0x72, 0x6B, 0x6F, 0x51, 0x7F, 0x7B, 0x20, 0x2F, 0x00 }, + { 0xF5, 0x05, 0xB6, 0x97, 0x47, 0xD3, 0xF3, 0x85, 0xF7, 0xD7, 0x02, 0xF2, 0x00 }}; struct Tm1621 { uint8_t buffer[8]; @@ -230,23 +230,26 @@ void TM1621SendCommon(uint8_t common) { void TM1621SendRows(void) { // Tm1621.row[x] = "text", "----", " " or a number with one decimal like "0.4", "237.5", "123456.7" - // "123456.7" will be shown as "9999" being a four digit overflow + // "123456.7" will be shown as "12E4" being a four digit overflow // AddLog(LOG_LEVEL_DEBUG, PSTR("TM1: Row1 '%s', Row2 '%s'"), Tm1621.row[0], Tm1621.row[1]); uint8_t buffer[8] = { 0 }; // TM1621 16-segment 4-bit common buffer char row[4]; for (uint32_t j = 0; j < 2; j++) { - // 0.4V => " 04", 0.0A => " ", 1234.5V => "1234" + // 0.4V => " 04", 0.0A => " ", 1234.5V => "1234", 12345.6V => "12E3" uint32_t len = strlen(Tm1621.row[j]); char *dp = nullptr; // Expect number larger than "123" int row_idx = len -3; // "1234.5" if (len <= 5) { // "----", " ", "0.4", "237.5" dp = strchr(Tm1621.row[j], '.'); row_idx = len -1; - } - else if (len > 6) { // "12345.6" - snprintf_P(Tm1621.row[j], sizeof(Tm1621.row[j]), PSTR("9999")); + } else { // "12345.6" = "12E3" + if (len > 13) { // "123456789012.3" = "12E9" + len = 13; + } + Tm1621.row[j][2] = 'E'; + Tm1621.row[j][3] = '0' + len -4; row_idx = 3; } row[3] = (row_idx >= 0) ? Tm1621.row[j][row_idx--] : ' '; From b6c488a8839ce261773724a16a1ef3131af88423 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 1 Jul 2024 22:53:49 +0200 Subject: [PATCH 113/252] Berry `bytes.resize()` for large sizes (#21716) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_byteslib.c | 2 +- lib/libesp32/berry/src/be_filelib.c | 18 ++++++++++-------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f3a04621..0c897b183 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. - ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) ### Fixed +- Berry `bytes.resize()` for large sizes ### Removed diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c index 5c50a36ba..f40bc7f43 100644 --- a/lib/libesp32/berry/src/be_byteslib.c +++ b/lib/libesp32/berry/src/be_byteslib.c @@ -223,7 +223,7 @@ static unsigned int decode_base64(unsigned char input[], unsigned char output[]) // shrink or increase. If increase, fill with zeores. Cannot go beyond `size` static void buf_set_len(buf_impl* attr, const size_t len) { - uint16_t old_len = attr->len; + int32_t old_len = attr->len; attr->len = ((int32_t)len <= attr->size) ? (int32_t)len : attr->size; if (old_len < attr->len) { memset((void*) &attr->bufptr[old_len], 0, attr->len - old_len); diff --git a/lib/libesp32/berry/src/be_filelib.c b/lib/libesp32/berry/src/be_filelib.c index 87691809b..f4f760b1e 100644 --- a/lib/libesp32/berry/src/be_filelib.c +++ b/lib/libesp32/berry/src/be_filelib.c @@ -79,15 +79,17 @@ static int i_readbytes(bvm *vm) be_call(vm, 2); /* call b.resize(size) */ be_pop(vm, 3); /* bytes() instance is at top */ - char *buffer = (char*) be_tobytes(vm, -1, NULL); /* we get the address of the internam buffer of size 'size' */ - size = be_fread(fh, buffer, size); + char *buffer = (char*) be_tobytes(vm, -1, NULL); /* we get the address of the internal buffer of size 'size' */ + size_t read_size = be_fread(fh, buffer, size); - /* resize if something went wrong */ - be_getmember(vm, -1, "resize"); - be_pushvalue(vm, -2); - be_pushint(vm, size); - be_call(vm, 2); /* call b.resize(size) */ - be_pop(vm, 3); /* bytes() instance is at top */ + if (size != read_size) { + /* resize if something went wrong */ + be_getmember(vm, -1, "resize"); + be_pushvalue(vm, -2); + be_pushint(vm, read_size); + be_call(vm, 2); /* call b.resize(size) */ + be_pop(vm, 3); /* bytes() instance is at top */ + } } else { be_pushbytes(vm, NULL, 0); } From 344fdf94f778e51ae7b4ff05bb7b05f3d5b5b758 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 2 Jul 2024 10:19:59 +0200 Subject: [PATCH 114/252] Update changelogs --- CHANGELOG.md | 2 +- RELEASENOTES.md | 1 + tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c897b183..c68129c06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ All notable changes to this project will be documented in this file. - ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) ### Fixed -- Berry `bytes.resize()` for large sizes +- Berry `bytes.resize()` for large sizes (#21716) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a76fb90bd..b6380efb2 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -167,6 +167,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660) - ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496) - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) +- Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) - Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644) - Matter TLV.U8 unsigned encoding [#21672](https://github.com/arendst/Tasmota/issues/21672) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino index ae31b78ff..fb326cbe6 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino @@ -9,7 +9,7 @@ #ifdef ESP32 #ifdef USE_DISPLAY_TM1621_SONOFF /*********************************************************************************************\ - * Sonoff POWR3xxD and THR3xxD LCD support + * Sonoff POWR3xxD, POWCT and THR3xxD LCD support * * {"NAME":"Sonoff POWR316D","GPIO":[32,0,0,0,0,576,0,0,0,224,9280,0,3104,0,320,0,0,0,0,0,0,9184,9248,9216,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} * {"NAME":"Sonoff POWR320D","GPIO":[32,0,9313,0,9312,576,0,0,0,0,9280,0,3104,0,320,0,0,0,0,0,0,9184,9248,9216,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} @@ -265,7 +265,7 @@ void TM1621SendRows(void) { for (uint32_t i = 0; i < 4; i++) { needle[0] = row[i]; int index = GetCommandCode(command, sizeof(command), (const char*)needle, tm1621_kchar); - if (-1 == index) { index = 11; } + if (-1 == index) { index = 12; } // Off uint32_t bidx = (0 == j) ? i : 7 -i; buffer[bidx] = tm1621_digit_row[j][index]; } From 0e6e4e8949e2ddcc89973f54189466333b4c409a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 2 Jul 2024 11:38:55 +0200 Subject: [PATCH 115/252] Prep support Sonoff Pow CT --- tasmota/include/tasmota_template.h | 3 +- .../tasmota_xnrg_energy/xnrg_19_cse7761.ino | 59 ++++++++++++------- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index b1a9ee913..0494b340b 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -509,6 +509,7 @@ const char kSensorNamesFixed[] PROGMEM = #define MAX_DINGTIAN_SHIFT 4 #define MAX_MAGIC_SWITCH_MODES 2 #define MAX_BL0942_RX 8 // Baudrates 1/5 (4800), 2/6 (9600), 3/7 (19200), 4/8 (38400), Support Positive values only 1..4, Support also negative values 5..8 +#define MAX_CSE7761 2 // Model 1/2 (DUALR3), 2/2 (POWCT) const uint16_t kGpioNiceList[] PROGMEM = { GPIO_NONE, // Not used @@ -886,7 +887,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif // USE_ADE7953 #ifdef USE_CSE7761 AGPIO(GPIO_CSE7761_TX), // CSE7761 Serial interface (Dual R3) - AGPIO(GPIO_CSE7761_RX), // CSE7761 Serial interface (Dual R3) + AGPIO(GPIO_CSE7761_RX) + MAX_CSE7761, // CSE7761 Serial interface (1 = Dual R3, 2 = POWCT) #endif #ifdef USE_CSE7766 AGPIO(GPIO_CSE7766_TX), // CSE7766 Serial interface (S31 and Pow R2) diff --git a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino index 2fc4ea1fb..1ae32783d 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino @@ -20,7 +20,7 @@ #ifdef USE_ENERGY_SENSOR #ifdef USE_CSE7761 /*********************************************************************************************\ - * CSE7761 - Energy (Sonoff Dual R3 Pow) + * CSE7761 - Energy (Sonoff Dual R3 Pow and Pox CT) * * Without zero-cross detection * {"NAME":"Sonoff Dual R3","GPIO":[32,0,0,0,0,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,7296,7328,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1} @@ -88,6 +88,8 @@ enum CSE7761 { RmsIAC, RmsIBC, RmsUC, PowerPAC, PowerPBC, PowerSC, EnergyAC, Ene TasmotaSerial *Cse7761Serial = nullptr; +enum CSE7761Model { CSE7761_MODEL_DUALR3, CSE7761_MODEL_POWCT }; // Model index number starting from 0 + struct { uint32_t frequency = 0; uint32_t voltage_rms = 0; @@ -98,6 +100,7 @@ struct { uint8_t energy_update[2] = { 0 }; uint8_t init = 4; uint8_t ready = 0; + uint8_t model; } CSE7761Data; /********************************************************************************************/ @@ -442,16 +445,18 @@ void Cse7761GetData(void) { #endif CSE7761Data.active_power[0] = (0 == CSE7761Data.current_rms[0]) ? 0 : (value & 0x80000000) ? (~value) + 1 : value; - value = Cse7761ReadFallback(CSE7761_REG_RMSIB, CSE7761Data.current_rms[1], 3); + if (2 == Energy->phase_count) { + value = Cse7761ReadFallback(CSE7761_REG_RMSIB, CSE7761Data.current_rms[1], 3); #ifdef CSE7761_SIMULATE - value = 29760; // 0.185A + value = 29760; // 0.185A #endif - CSE7761Data.current_rms[1] = ((value >= 0x800000) || (value < 1600)) ? 0 : value; // No load threshold of 10mA - value = Cse7761ReadFallback(CSE7761_REG_POWERPB, CSE7761Data.active_power[1], 4); + CSE7761Data.current_rms[1] = ((value >= 0x800000) || (value < 1600)) ? 0 : value; // No load threshold of 10mA + value = Cse7761ReadFallback(CSE7761_REG_POWERPB, CSE7761Data.active_power[1], 4); #ifdef CSE7761_SIMULATE - value = 2126641; // 44.05W + value = 2126641; // 44.05W #endif - CSE7761Data.active_power[1] = (0 == CSE7761Data.current_rms[1]) ? 0 : (value & 0x80000000) ? (~value) + 1 : value; + CSE7761Data.active_power[1] = (0 == CSE7761Data.current_rms[1]) ? 0 : (value & 0x80000000) ? (~value) + 1 : value; + } AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("C61: F%d, U%d, I%d/%d, P%d/%d"), CSE7761Data.frequency, CSE7761Data.voltage_rms, @@ -459,16 +464,20 @@ void Cse7761GetData(void) { CSE7761Data.active_power[0], CSE7761Data.active_power[1]); if (Energy->power_on) { // Powered on - // Voltage = RmsU * RmsUC * 10 / 0x400000 - // Energy->voltage[0] = (float)(((uint64_t)CSE7761Data.voltage_rms * CSE7761Data.coefficient[RmsUC] * 10) >> 22) / 1000; // V - Energy->voltage[0] = ((float)CSE7761Data.voltage_rms / EnergyGetCalibration(ENERGY_VOLTAGE_CALIBRATION)); // V - Energy->voltage[1] = Energy->voltage[0]; + for (uint32_t channel = 0; channel < Energy->phase_count; channel++) { + if (0 == channel) { + // Voltage = RmsU * RmsUC * 10 / 0x400000 + // Energy->voltage[0] = (float)(((uint64_t)CSE7761Data.voltage_rms * CSE7761Data.coefficient[RmsUC] * 10) >> 22) / 1000; // V + Energy->voltage[0] = ((float)CSE7761Data.voltage_rms / EnergyGetCalibration(ENERGY_VOLTAGE_CALIBRATION)); // V #ifdef CSE7761_FREQUENCY - Energy->frequency[0] = (CSE7761Data.frequency) ? ((float)EnergyGetCalibration(ENERGY_FREQUENCY_CALIBRATION) / 8 / CSE7761Data.frequency) : 0; // Hz - Energy->frequency[1] = Energy->frequency[0]; + Energy->frequency[0] = (CSE7761Data.frequency) ? ((float)EnergyGetCalibration(ENERGY_FREQUENCY_CALIBRATION) / 8 / CSE7761Data.frequency) : 0; // Hz #endif - - for (uint32_t channel = 0; channel < 2; channel++) { + } else { + Energy->voltage[1] = Energy->voltage[0]; +#ifdef CSE7761_FREQUENCY + Energy->frequency[1] = Energy->frequency[0]; +#endif + } Energy->data_valid[channel] = 0; uint32_t power_calibration = EnergyGetCalibration(ENERGY_POWER_CALIBRATION, channel); // Active power = PowerPA * PowerPAC * 1000 / 0x80000000 @@ -563,7 +572,7 @@ void Cse7761EverySecond(void) { } else { if (2 == CSE7761Data.ready) { - for (uint32_t channel = 0; channel < 2; channel++) { + for (uint32_t channel = 0; channel < Energy->phase_count; channel++) { if (CSE7761Data.energy_update[channel]) { Energy->kWhtoday_delta[channel] += ((CSE7761Data.energy[channel] * 1000) / CSE7761Data.energy_update[channel]) / 36; CSE7761Data.energy[channel] = 0; @@ -577,7 +586,7 @@ void Cse7761EverySecond(void) { void Cse7761SnsInit(void) { // Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions - Cse7761Serial = new TasmotaSerial(Pin(GPIO_CSE7761_RX), Pin(GPIO_CSE7761_TX), 1); + Cse7761Serial = new TasmotaSerial(Pin(GPIO_CSE7761_RX, GPIO_ANY), Pin(GPIO_CSE7761_TX), 1); if (Cse7761Serial->begin(38400, SERIAL_8E1)) { if (Cse7761Serial->hardwareSerial()) { SetSerial(38400, TS_SERIAL_8E1); @@ -599,10 +608,15 @@ void Cse7761SnsInit(void) { } void Cse7761DrvInit(void) { - if (PinUsed(GPIO_CSE7761_RX) && PinUsed(GPIO_CSE7761_TX)) { + if (PinUsed(GPIO_CSE7761_RX, GPIO_ANY) && PinUsed(GPIO_CSE7761_TX)) { + CSE7761Data.model = GetPin(Pin(GPIO_CSE7761_RX, GPIO_ANY)) - AGPIO(GPIO_CSE7761_RX); CSE7761Data.ready = 0; - CSE7761Data.init = 4; // Init setup steps - Energy->phase_count = 2; // Handle two channels as two phases + CSE7761Data.init = 4; // Init setup steps + +// Energy->phase_count = 1; // Handle one channel (default set by xdrv_03_energy.ino) + if (CSE7761_MODEL_DUALR3 == CSE7761Data.model) { + Energy->phase_count = 2; // Handle two channels as two phases + } Energy->voltage_common = true; // Use common voltage #ifdef CSE7761_FREQUENCY Energy->frequency_common = true; // Use common frequency @@ -615,7 +629,10 @@ void Cse7761DrvInit(void) { bool Cse7761Command(void) { bool serviced = true; - uint32_t channel = (2 == XdrvMailbox.index) ? 1 : 0; + uint32_t channel = 0; + if (Energy->phase_count > 1) { + channel = (2 == XdrvMailbox.index) ? 1 : 0; + } uint32_t value = (uint32_t)(CharToFloat(XdrvMailbox.data) * 100); // 1.23 = 123 if (CMND_POWERCAL == Energy->command_code) { From 0b54d49181fe87d64401ac462b4dfe52dda4afdb Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 2 Jul 2024 17:21:48 +0200 Subject: [PATCH 116/252] Refactor TM1621 driver --- .../xdrv_87_esp32_sonoff_tm1621.ino | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino index fb326cbe6..c1d544349 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino @@ -56,10 +56,13 @@ enum Tm1621Units { TM1621_NONE, TM1621_TEMPERATURE, TM1621_HUMIDITY, TM1621_VOL const uint8_t tm1621_commands[] = { TM1621_SYS_EN, TM1621_LCD_ON, TM1621_BIAS, TM1621_TIMER_DIS, TM1621_WDT_DIS, TM1621_TONE_OFF, TM1621_IRQ_DIS }; -const char tm1621_kchar[] PROGMEM = { "0|1|2|3|4|5|6|7|8|9|-|E| " }; -// 0 1 2 3 4 5 6 7 8 9 - E off -const uint8_t tm1621_digit_row[2][13] = {{ 0x5F, 0x50, 0x3D, 0x79, 0x72, 0x6B, 0x6F, 0x51, 0x7F, 0x7B, 0x20, 0x2F, 0x00 }, - { 0xF5, 0x05, 0xB6, 0x97, 0x47, 0xD3, 0xF3, 0x85, 0xF7, 0xD7, 0x02, 0xF2, 0x00 }}; +const char tm1621_kchar[] PROGMEM = { " |0|1|2|3|4|5|6|7|8|9|-|E" }; +// b0 --- +// b1 / / b4 +// --- b5 +// b2 / / b6 +// b3 --- off 0 1 2 3 4 5 6 7 8 9 - E +const uint8_t tm1621_digit[] = { 0x00, 0x5F, 0x50, 0x3D, 0x79, 0x72, 0x6B, 0x6F, 0x51, 0x7F, 0x7B, 0x20, 0x2F }; struct Tm1621 { uint8_t buffer[8]; @@ -228,6 +231,19 @@ void TM1621SendCommon(uint8_t common) { } } +uint32_t TM1621Row2(uint32_t row1) { + uint32_t row2 = 0; + bitWrite(row2, 0, bitRead(row1, 6)); + bitWrite(row2, 1, bitRead(row1, 5)); + bitWrite(row2, 2, bitRead(row1, 4)); + bitWrite(row2, 3, bitRead(row1, 7)); + bitWrite(row2, 4, bitRead(row1, 3)); + bitWrite(row2, 5, bitRead(row1, 2)); + bitWrite(row2, 6, bitRead(row1, 1)); + bitWrite(row2, 7, bitRead(row1, 0)); + return row2; +} + void TM1621SendRows(void) { // Tm1621.row[x] = "text", "----", " " or a number with one decimal like "0.4", "237.5", "123456.7" // "123456.7" will be shown as "12E4" being a four digit overflow @@ -265,16 +281,11 @@ void TM1621SendRows(void) { for (uint32_t i = 0; i < 4; i++) { needle[0] = row[i]; int index = GetCommandCode(command, sizeof(command), (const char*)needle, tm1621_kchar); - if (-1 == index) { index = 12; } // Off - uint32_t bidx = (0 == j) ? i : 7 -i; - buffer[bidx] = tm1621_digit_row[j][index]; - } - if (dp) { - if (0 == j) { - buffer[2] |= 0x80; // Row 1 decimal point - } else { - buffer[5] |= 0x08; // Row 2 decimal point - } + if (-1 == index) { index = 0; } // Off + uint32_t digit = tm1621_digit[index]; + if ((2 == i) && dp) { digit |= 0x80; } // Decimal point + uint32_t bidx = (!j) ? i : 7 -i; + buffer[bidx] = (j) ? TM1621Row2(digit) : digit; } } From 640aabe1b3c18c5bf7dcedb13a5d4394e967a07c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 2 Jul 2024 18:07:53 +0200 Subject: [PATCH 117/252] Fix ESP32 MaxPowerHold edge case (#21695) --- .../xdrv_03_esp32_energy.ino | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 453f73f39..4c51b043c 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -835,25 +835,25 @@ void EnergyMarginCheck(void) { if (Energy->Settings.phase[phase].max_power_limit) { energy_power_u = (uint16_t)(Energy->active_power[phase]); bool power_on = (TasmotaGlobal.power & (1 << phase)); - if (Energy->active_power[phase] > Energy->Settings.phase[phase].max_power_limit) { +// if (Energy->active_power[phase] > Energy->Settings.phase[phase].max_power_limit) { + if (energy_power_u > Energy->Settings.phase[phase].max_power_limit) { if (!Energy->mplh_counter[phase]) { - Energy->mplh_counter[phase] = Energy->Settings.phase[phase].max_power_limit_hold; - } else { - Energy->mplh_counter[phase]--; - if (!Energy->mplh_counter[phase]) { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "%d\":%d}"), phase +1, energy_power_u); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - if (set_all_power) { - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); - } else { - ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER); - } - if (!Energy->mplr_counter[phase]) { - Energy->mplr_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count - } - Energy->mplw_counter[phase] = Energy->Settings.phase[phase].max_power_limit_window; + Energy->mplh_counter[phase] = Energy->Settings.phase[phase].max_power_limit_hold +1; + } + Energy->mplh_counter[phase]--; + if (!Energy->mplh_counter[phase]) { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "%d\":%d}"), phase +1, energy_power_u); + MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); + EnergyMqttShow(); + if (set_all_power) { + SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); + } else { + ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER); } + if (!Energy->mplr_counter[phase]) { + Energy->mplr_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count + } + Energy->mplw_counter[phase] = Energy->Settings.phase[phase].max_power_limit_window; } } else if (power_on && (energy_power_u <= Energy->Settings.phase[phase].max_power_limit)) { From 1fd8de676259729a413e9bce4d4b766fe23a13df Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 2 Jul 2024 18:47:55 +0200 Subject: [PATCH 118/252] Update energy structure --- .../tasmota_xdrv_driver/xdrv_03_energy.ino | 36 +++++++++---------- .../xdrv_03_esp32_energy.ino | 36 +++++++++---------- .../xdrv_52_3_berry_energy.ino | 20 +++++------ 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino index cc364876f..d5fe43c4f 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino @@ -131,9 +131,9 @@ typedef struct { bool max_current_flag; #ifdef USE_ENERGY_POWER_LIMIT - uint16_t mplh_counter; - uint16_t mplw_counter; - uint8_t mplr_counter; + uint16_t mpl_hold_counter; + uint16_t mpl_window_counter; + uint8_t mpl_retry_counter; uint8_t max_energy_state; #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION @@ -567,34 +567,34 @@ void EnergyMarginCheck(void) { // Max Power if (Settings->energy_max_power_limit) { if (Energy->active_power[0] > Settings->energy_max_power_limit) { - if (!Energy->mplh_counter) { - Energy->mplh_counter = Settings->energy_max_power_limit_hold; + if (!Energy->mpl_hold_counter) { + Energy->mpl_hold_counter = Settings->energy_max_power_limit_hold; } else { - Energy->mplh_counter--; - if (!Energy->mplh_counter) { + Energy->mpl_hold_counter--; + if (!Energy->mpl_hold_counter) { ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); EnergyMqttShow(); SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); - if (!Energy->mplr_counter) { - Energy->mplr_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count + if (!Energy->mpl_retry_counter) { + Energy->mpl_retry_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count } - Energy->mplw_counter = Settings->energy_max_power_limit_window; + Energy->mpl_window_counter = Settings->energy_max_power_limit_window; } } } else if (TasmotaGlobal.power && (energy_power_u <= Settings->energy_max_power_limit)) { - Energy->mplh_counter = 0; - Energy->mplr_counter = 0; - Energy->mplw_counter = 0; + Energy->mpl_hold_counter = 0; + Energy->mpl_retry_counter = 0; + Energy->mpl_window_counter = 0; } if (!TasmotaGlobal.power) { - if (Energy->mplw_counter) { - Energy->mplw_counter--; + if (Energy->mpl_window_counter) { + Energy->mpl_window_counter--; } else { - if (Energy->mplr_counter) { - Energy->mplr_counter--; - if (Energy->mplr_counter) { + if (Energy->mpl_retry_counter) { + Energy->mpl_retry_counter--; + if (Energy->mpl_retry_counter) { ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1)); MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); RestorePower(true, SRC_MAXPOWER); diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 4c51b043c..1782ac2af 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -181,8 +181,8 @@ typedef struct { float daily_sum_export_balanced; // 123.123 kWh uint16_t power_history[ENERGY_MAX_PHASES][3]; - uint16_t mplh_counter[ENERGY_MAX_PHASES]; - uint16_t mplw_counter[ENERGY_MAX_PHASES]; + uint16_t mpl_hold_counter[ENERGY_MAX_PHASES]; + uint16_t mpl_window_counter[ENERGY_MAX_PHASES]; uint8_t data_valid[ENERGY_MAX_PHASES]; uint8_t phase_count; // Number of phases active @@ -190,7 +190,7 @@ typedef struct { uint8_t command_code; uint8_t power_steady_counter; // Allow for power on stabilization uint8_t margin_stable; - uint8_t mplr_counter[ENERGY_MAX_PHASES]; + uint8_t mpl_retry_counter[ENERGY_MAX_PHASES]; uint8_t max_energy_state[ENERGY_MAX_PHASES]; uint8_t hour; @@ -837,11 +837,11 @@ void EnergyMarginCheck(void) { bool power_on = (TasmotaGlobal.power & (1 << phase)); // if (Energy->active_power[phase] > Energy->Settings.phase[phase].max_power_limit) { if (energy_power_u > Energy->Settings.phase[phase].max_power_limit) { - if (!Energy->mplh_counter[phase]) { - Energy->mplh_counter[phase] = Energy->Settings.phase[phase].max_power_limit_hold +1; + if (!Energy->mpl_hold_counter[phase]) { + Energy->mpl_hold_counter[phase] = Energy->Settings.phase[phase].max_power_limit_hold +1; } - Energy->mplh_counter[phase]--; - if (!Energy->mplh_counter[phase]) { + Energy->mpl_hold_counter[phase]--; + if (!Energy->mpl_hold_counter[phase]) { ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "%d\":%d}"), phase +1, energy_power_u); MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); EnergyMqttShow(); @@ -850,24 +850,24 @@ void EnergyMarginCheck(void) { } else { ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER); } - if (!Energy->mplr_counter[phase]) { - Energy->mplr_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count + if (!Energy->mpl_retry_counter[phase]) { + Energy->mpl_retry_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count } - Energy->mplw_counter[phase] = Energy->Settings.phase[phase].max_power_limit_window; + Energy->mpl_window_counter[phase] = Energy->Settings.phase[phase].max_power_limit_window; } } else if (power_on && (energy_power_u <= Energy->Settings.phase[phase].max_power_limit)) { - Energy->mplh_counter[phase] = 0; - Energy->mplr_counter[phase] = 0; - Energy->mplw_counter[phase] = 0; + Energy->mpl_hold_counter[phase] = 0; + Energy->mpl_retry_counter[phase] = 0; + Energy->mpl_window_counter[phase] = 0; } if (!power_on) { - if (Energy->mplw_counter[phase]) { - Energy->mplw_counter[phase]--; + if (Energy->mpl_window_counter[phase]) { + Energy->mpl_window_counter[phase]--; } else { - if (Energy->mplr_counter[phase]) { - Energy->mplr_counter[phase]--; - if (Energy->mplr_counter[phase]) { + if (Energy->mpl_retry_counter[phase]) { + Energy->mpl_retry_counter[phase]--; + if (Energy->mpl_retry_counter[phase]) { ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "%d\":\"%s\"}"), phase +1, GetStateText(1)); MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); if (set_all_power) { diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino index 6622f76f1..874de687d 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino @@ -83,16 +83,16 @@ extern "C" { { "import_active", offsetof(tEnergy, import_active[0]), 0, 0, ctypes_float, 0 }, { "import_active_2", offsetof(tEnergy, import_active[1]), 0, 0, ctypes_float, 0 }, { "import_active_3", offsetof(tEnergy, import_active[2]), 0, 0, ctypes_float, 0 }, - { "max_current_flag", offsetof(tEnergy, max_current_flag), 0, 0, ctypes_u8, 0 }, - { "max_energy_state", offsetof(tEnergy, max_energy_state), 0, 0, ctypes_u8, 0 }, - { "max_power_flag", offsetof(tEnergy, max_power_flag), 0, 0, ctypes_u8, 0 }, - { "max_voltage_flag", offsetof(tEnergy, max_voltage_flag), 0, 0, ctypes_u8, 0 }, - { "min_current_flag", offsetof(tEnergy, min_current_flag), 0, 0, ctypes_u8, 0 }, - { "min_power_flag", offsetof(tEnergy, min_power_flag), 0, 0, ctypes_u8, 0 }, - { "min_voltage_flag", offsetof(tEnergy, min_voltage_flag), 0, 0, ctypes_u8, 0 }, - { "mplh_counter", offsetof(tEnergy, mplh_counter), 0, 0, ctypes_u16, 0 }, - { "mplr_counter", offsetof(tEnergy, mplr_counter), 0, 0, ctypes_u8, 0 }, - { "mplw_counter", offsetof(tEnergy, mplw_counter), 0, 0, ctypes_u16, 0 }, + { "max_current_flag", offsetof(tEnergy, max_current_flag[0]), 0, 0, ctypes_u8, 0 }, + { "max_energy_state", offsetof(tEnergy, max_energy_state[0]), 0, 0, ctypes_u8, 0 }, + { "max_power_flag", offsetof(tEnergy, max_power_flag[0]), 0, 0, ctypes_u8, 0 }, + { "max_voltage_flag", offsetof(tEnergy, max_voltage_flag[0]), 0, 0, ctypes_u8, 0 }, + { "min_current_flag", offsetof(tEnergy, min_current_flag[0]), 0, 0, ctypes_u8, 0 }, + { "min_power_flag", offsetof(tEnergy, min_power_flag[0]), 0, 0, ctypes_u8, 0 }, + { "min_voltage_flag", offsetof(tEnergy, min_voltage_flag[0]), 0, 0, ctypes_u8, 0 }, + { "mpl_hold_counter", offsetof(tEnergy, mpl_hold_counter[0]), 0, 0, ctypes_u16, 0 }, + { "mpl_retry_counter", offsetof(tEnergy, mpl_retry_counter[0]), 0, 0, ctypes_u8, 0 }, + { "mpl_window_counter", offsetof(tEnergy, mpl_window_counter[0]), 0, 0, ctypes_u16, 0 }, { "period", offsetof(tEnergy, period_kWh[0]), 0, 0, ctypes_float, 0 }, { "period_2", offsetof(tEnergy, period_kWh[1]), 0, 0, ctypes_float, 0 }, { "period_3", offsetof(tEnergy, period_kWh[2]), 0, 0, ctypes_float, 0 }, From ac011132ee4284a5af8b4a5561a12b3b2a288eec Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:07:59 +0200 Subject: [PATCH 119/252] Fix ESP8266 MaxPower edge case --- .../tasmota_xdrv_driver/xdrv_03_energy.ino | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino index d5fe43c4f..ce6341398 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino @@ -566,21 +566,20 @@ void EnergyMarginCheck(void) { #ifdef USE_ENERGY_POWER_LIMIT // Max Power if (Settings->energy_max_power_limit) { - if (Energy->active_power[0] > Settings->energy_max_power_limit) { + if (energy_power_u > Settings->energy_max_power_limit) { if (!Energy->mpl_hold_counter) { - Energy->mpl_hold_counter = Settings->energy_max_power_limit_hold; - } else { - Energy->mpl_hold_counter--; - if (!Energy->mpl_hold_counter) { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); - if (!Energy->mpl_retry_counter) { - Energy->mpl_retry_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count - } - Energy->mpl_window_counter = Settings->energy_max_power_limit_window; + Energy->mpl_hold_counter = Settings->energy_max_power_limit_hold +1; + } + Energy->mpl_hold_counter--; + if (!Energy->mpl_hold_counter) { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); + MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); + EnergyMqttShow(); + SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); + if (!Energy->mpl_retry_counter) { + Energy->mpl_retry_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count } + Energy->mpl_window_counter = Settings->energy_max_power_limit_window; } } else if (TasmotaGlobal.power && (energy_power_u <= Settings->energy_max_power_limit)) { From 9b537d81e0f09a40967bef732103127a79c82f7e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 3 Jul 2024 13:52:01 +0200 Subject: [PATCH 120/252] Fix energy maxpower retry count (#21695) --- .../tasmota_xdrv_driver/xdrv_03_energy.ino | 27 +++++++------- .../xdrv_03_esp32_energy.ino | 36 ++++++++----------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino index ce6341398..6c73cdbe2 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino @@ -572,13 +572,18 @@ void EnergyMarginCheck(void) { } Energy->mpl_hold_counter--; if (!Energy->mpl_hold_counter) { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); if (!Energy->mpl_retry_counter) { Energy->mpl_retry_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count } + Energy->mpl_retry_counter--; + if (Energy->mpl_retry_counter) { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); + } else { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0)); + } + MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); + EnergyMqttShow(); + SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); Energy->mpl_window_counter = Settings->energy_max_power_limit_window; } } @@ -592,17 +597,9 @@ void EnergyMarginCheck(void) { Energy->mpl_window_counter--; } else { if (Energy->mpl_retry_counter) { - Energy->mpl_retry_counter--; - if (Energy->mpl_retry_counter) { - ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1)); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); - RestorePower(true, SRC_MAXPOWER); - } else { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0)); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); - } + ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1)); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); + RestorePower(true, SRC_MAXPOWER); } } } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 1782ac2af..54bad4a41 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -835,14 +835,21 @@ void EnergyMarginCheck(void) { if (Energy->Settings.phase[phase].max_power_limit) { energy_power_u = (uint16_t)(Energy->active_power[phase]); bool power_on = (TasmotaGlobal.power & (1 << phase)); -// if (Energy->active_power[phase] > Energy->Settings.phase[phase].max_power_limit) { if (energy_power_u > Energy->Settings.phase[phase].max_power_limit) { if (!Energy->mpl_hold_counter[phase]) { Energy->mpl_hold_counter[phase] = Energy->Settings.phase[phase].max_power_limit_hold +1; } Energy->mpl_hold_counter[phase]--; if (!Energy->mpl_hold_counter[phase]) { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "%d\":%d}"), phase +1, energy_power_u); + if (!Energy->mpl_retry_counter[phase]) { + Energy->mpl_retry_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count + } + Energy->mpl_retry_counter[phase]--; + if (Energy->mpl_retry_counter[phase]) { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "%d\":%d}"), phase +1, energy_power_u); + } else { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "%d\":\"%s\"}"), phase +1, GetStateText(0)); + } MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); EnergyMqttShow(); if (set_all_power) { @@ -850,9 +857,6 @@ void EnergyMarginCheck(void) { } else { ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER); } - if (!Energy->mpl_retry_counter[phase]) { - Energy->mpl_retry_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count - } Energy->mpl_window_counter[phase] = Energy->Settings.phase[phase].max_power_limit_window; } } @@ -866,24 +870,12 @@ void EnergyMarginCheck(void) { Energy->mpl_window_counter[phase]--; } else { if (Energy->mpl_retry_counter[phase]) { - Energy->mpl_retry_counter[phase]--; - if (Energy->mpl_retry_counter[phase]) { - ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "%d\":\"%s\"}"), phase +1, GetStateText(1)); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); - if (set_all_power) { - RestorePower(true, SRC_MAXPOWER); - } else { - ExecuteCommandPower(phase +1, POWER_ON, SRC_MAXPOWER); - } + ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "%d\":\"%s\"}"), phase +1, GetStateText(1)); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); + if (set_all_power) { + RestorePower(true, SRC_MAXPOWER); } else { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "%d\":\"%s\"}"), phase +1, GetStateText(0)); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - if (set_all_power) { - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); - } else { - ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER); - } + ExecuteCommandPower(phase +1, POWER_ON, SRC_MAXPOWER); } } } From 59fc68026bfdbcc7ba85eabbb27e64dc042d9fbf Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 3 Jul 2024 16:31:43 +0200 Subject: [PATCH 121/252] Add Support for Sonoff POWCT Ring (#21131) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + .../xdrv_87_esp32_sonoff_tm1621.ino | 27 +++++++++++++++---- .../tasmota_xnrg_energy/xnrg_19_cse7761.ino | 4 ++- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c68129c06..158ea7f58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Berry `math.min()` and `math.max()` (#21705) - Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) - Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711) +- Support for Sonoff POWCT Ring (#21131) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b6380efb2..00b2eb0b4 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -123,6 +123,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Added - Support for QMP6988 temperature and pressure sensor - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` +- Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino index c1d544349..cce1f7c82 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino @@ -17,6 +17,7 @@ * {"NAME":"Sonoff THR316D GPIO26","GPIO":[32,0,0,0,225,9280,0,0,0,321,0,576,320,9184,9216,0,0,224,0,9248,0,1,1,3840,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} * {"NAME":"Sonoff THR320D","GPIO":[32,0,0,0,226,9280,0,0,0,321,0,576,320,9184,9216,9312,0,0,9313,9248,0,1,0,3840,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} * {"NAME":"Sonoff THR320D GPIO26","GPIO":[32,0,0,0,226,9280,0,0,0,321,0,576,320,9184,9216,9312,0,0,9313,9248,0,1,1,3840,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} + * {"NAME":"Sonoff POWCT","GPIO":[32,0,0,0,0,9280,0,0,0,320,0,576,0,9184,9216,0,0,224,0,9248,0,7329,7296,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} * * DspSpeed 2..127 = Display rotation speed in seconds if more than one value is requested * DspLine<1|2> ,,,,... = Display specific JSON value and rotate between them @@ -51,12 +52,14 @@ #define TM1621_BIAS 0x29 // 0b00101001 = LCD 1/3 bias 4 commons option #define TM1621_IRQ_DIS 0x80 // 0b100x0xxx -enum Tm1621Device { TM1621_USER, TM1621_POWR316D, TM1621_THR316D }; +enum Tm1621Device { TM1621_USER, TM1621_POWR316D, TM1621_THR316D, TM1621_POWCT }; +const char tm1621_device PROGMEM[] = "User|PowR3|THR3|PowCT"; + enum Tm1621Units { TM1621_NONE, TM1621_TEMPERATURE, TM1621_HUMIDITY, TM1621_VOLTAGE_CURRENT, TM1621_ENERGY_POWER }; const uint8_t tm1621_commands[] = { TM1621_SYS_EN, TM1621_LCD_ON, TM1621_BIAS, TM1621_TIMER_DIS, TM1621_WDT_DIS, TM1621_TONE_OFF, TM1621_IRQ_DIS }; -const char tm1621_kchar[] PROGMEM = { " |0|1|2|3|4|5|6|7|8|9|-|E" }; +const char tm1621_kchar[] PROGMEM = " |0|1|2|3|4|5|6|7|8|9|-|E"; // b0 --- // b1 / / b4 // --- b5 @@ -307,7 +310,18 @@ void TM1621SendRows(void) { void TM1621PreInit(void) { if (!PinUsed(GPIO_TM1621_CS) || !PinUsed(GPIO_TM1621_WR) || !PinUsed(GPIO_TM1621_RD) || !PinUsed(GPIO_TM1621_DAT)) { return; } - Tm1621.device = (14 == Pin(GPIO_TM1621_DAT)) ? TM1621_POWR316D : (5 == Pin(GPIO_TM1621_DAT)) ? TM1621_THR316D : TM1621_USER; + Tm1621.device = TM1621_USER; + uint32_t pin_tm1621_dat = Pin(GPIO_TM1621_DAT); + if (5 == Pin(GPIO_TM1621_DAT)) { + if (25 == Pin(GPIO_CSE7761_RX, 1)) { + Tm1621.device = TM1621_POWCT; + } else { + Tm1621.device = TM1621_THR316D; + } + } + else if (14 == Pin(GPIO_TM1621_DAT)) { + Tm1621.device = TM1621_POWR316D; + } Tm1621.present = true; Tm1621.pin_da = Pin(GPIO_TM1621_DAT); Tm1621.pin_cs = Pin(GPIO_TM1621_CS); @@ -326,7 +340,9 @@ void TM1621PreInit(void) { Tm1621.state = 200; - AddLog(LOG_LEVEL_INFO, PSTR("DSP: TM1621")); + char stemp[8]; + AddLog(LOG_LEVEL_INFO, PSTR("DSP: TM1621 for %s"), + GetTextIndexed(stemp, sizeof(stemp), Tm1621.device, tm1621_device)); } void TM1621Init(void) { @@ -452,7 +468,8 @@ void TM1621Show(void) { } #ifdef USE_ENERGY_SENSOR - if (TM1621_POWR316D == Tm1621.device) { + if ((TM1621_POWR316D == Tm1621.device) || + (TM1621_POWCT == Tm1621.device)) { if (0 == Tm1621.display_rotate) { ext_snprintf_P(Tm1621.row[0], sizeof(Tm1621.row[0]), PSTR("%1_f"), &Energy->voltage[0]); ext_snprintf_P(Tm1621.row[1], sizeof(Tm1621.row[1]), PSTR("%1_f"), &Energy->current[0]); diff --git a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino index 1ae32783d..ac44de9a6 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino @@ -20,7 +20,7 @@ #ifdef USE_ENERGY_SENSOR #ifdef USE_CSE7761 /*********************************************************************************************\ - * CSE7761 - Energy (Sonoff Dual R3 Pow and Pox CT) + * CSE7761 - Energy (Sonoff Dual R3 and Pow CT) * * Without zero-cross detection * {"NAME":"Sonoff Dual R3","GPIO":[32,0,0,0,0,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,7296,7328,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1} @@ -28,6 +28,8 @@ * With zero-cross detection * {"NAME":"Sonoff Dual R3 (ZCD)","GPIO":[32,0,0,0,7552,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,7296,7328,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1} * + * {"NAME":"Sonoff POWCT","GPIO":[32,0,0,0,0,9280,0,0,0,320,0,576,0,9184,9216,0,0,224,0,9248,0,7329,7296,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} + * * Based on datasheet from ChipSea and analysing serial data * See https://github.com/arendst/Tasmota/discussions/10793 * https://goldenrelay.en.alibaba.com/product/62119012875-811845870/GOLDEN_GI_1A_5LH_SPST_5V_5A_10A_250VAC_NO_18_5_10_5_15_3mm_sealed_type_all_certificate_compliances_class_F_SPDT_Form_available.html From b1422ff6b5456298e915b5799cd49aa2c7deca7d Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:27:18 +0200 Subject: [PATCH 122/252] make Tasmota compatible for Arduino espressif32 based on IDF 5.2.2 (#21723) Co-authored-by: Christian Baars --- .../TasmotaSerial-3.6.0/src/TasmotaSerial.cpp | 2 +- .../TasmotaSerial-3.6.0/src/TasmotaSerial.h | 2 +- lib/lib_div/ArduinoNTPd/NTPServer.cpp | 21 ++++++++++--------- .../src/SSLClient/client/BSSL_SSL_Client.h | 4 ++++ .../src/esp8266toEsp32.h | 14 +++++++++++++ platformio_override_sample.ini | 3 ++- .../support_crash_recorder.ino | 4 ++++ 7 files changed, 37 insertions(+), 13 deletions(-) diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp index 3871fc33b..5f9b10561 100644 --- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp +++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp @@ -152,7 +152,7 @@ void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) { bool TasmotaSerial::freeUart(void) { for (uint32_t i = SOC_UART_NUM -1; i >= 0; i--) { if (0 == bitRead(tasmota_serial_uart_bitmap, i)) { - m_uart = i; + m_uart = uart_port_t(i); bitSet(tasmota_serial_uart_bitmap, m_uart); return true; } diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h index 230dd36ff..da946d8eb 100644 --- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h +++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h @@ -109,7 +109,7 @@ class TasmotaSerial : public Stream { uint32_t m_speed; uint32_t m_config; HardwareSerial *TSerial; - int m_uart = 0; + uart_port_t m_uart = uart_port_t(0); #endif }; diff --git a/lib/lib_div/ArduinoNTPd/NTPServer.cpp b/lib/lib_div/ArduinoNTPd/NTPServer.cpp index 860ccc79d..689923271 100644 --- a/lib/lib_div/ArduinoNTPd/NTPServer.cpp +++ b/lib/lib_div/ArduinoNTPd/NTPServer.cpp @@ -23,7 +23,7 @@ bool NtpServer::beginListening() return false; } -bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs) +bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs) { // millisecs is millis() at the time of the last iTOW reception, where iTOW%1000 == 0 uint32_t refMillis = millis()-millisecs; @@ -33,7 +33,7 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs) } bool processed = false; - + int packetDataSize = timeServerPort_.parsePacket(); if (packetDataSize && packetDataSize >= NtpPacket::PACKET_SIZE) { @@ -54,7 +54,7 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs) // TODO: verify packet. // Populate response. - packet.swapEndian(); + packet.swapEndian(); packet.leapIndicator(0); packet.versionNumber(4); packet.mode(4); @@ -73,16 +73,17 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs) packet.originTimestampFraction = packet.transmitTimestampFraction; packet.receiveTimestampSeconds = recvSecs; packet.receiveTimestampFraction = recvFract; - + // ...and the transmit time. - // the latency has been between 135 and 175 microseconds in internal testing, so we harcode 150 - uint32_t transFract = recvFract+(150*(10^3)/(2^32)); // microsec/((10^3)/(2^32)) + // the latency has been between 135 and 175 microseconds in internal testing, so we hardcode 150 + constexpr uint32_t latency = (150*1000) / (1LL << 32); + uint32_t transFract = recvFract + latency; if (recvFract>transFract){ recvSecs++; //overflow } packet.transmitTimestampSeconds = recvSecs; - packet.transmitTimestampFraction = transFract; - + packet.transmitTimestampFraction = transFract; + // Now transmit the response to the client. packet.swapEndian(); @@ -91,7 +92,7 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs) timeServerPort_.endPacket(); processed = true; - } - + } + return processed; } \ No newline at end of file diff --git a/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h b/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h index 98a42685d..b1ecaf693 100644 --- a/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h +++ b/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h @@ -96,6 +96,10 @@ public: int connect(const char *host, uint16_t port) override; + int connect(IPAddress ip, uint16_t port, int32_t timeout) { return connect(ip, port, 0);} + + int connect(const char *host, uint16_t port, int32_t timeout) { return connect(host, port, 0);} + uint8_t connected() override; void validate(const char *host, uint16_t port); diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h index 0a5f99a3b..5ff821a16 100644 --- a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h +++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h @@ -183,5 +183,19 @@ typedef int SerConfu8; #define STATION_IF 0 + +// ESP32 needed define to support IDF 5.2 based Arduino builds + +// Name has changed +#ifdef LCD_CAM_LCD_UPDATE_M +#define LCD_CAM_LCD_UPDATE_REG LCD_CAM_LCD_UPDATE_M +#endif // LCD_CAM_LCD_UPDATE_M + +// IDF 5.2 has changed counting UART channels, SOC_UART_NUM includes now LP UARTS too +#ifdef SOC_UART_HP_NUM +#undef SOC_UART_NUM +#define SOC_UART_NUM SOC_UART_HP_NUM +#endif + #endif // ESP32 #endif // __ESP8266TOESP32_H__ diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 83e69e23b..dd45bcfe8 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -77,7 +77,8 @@ lib_extra_dirs = ${library.lib_extra_dirs} [env:tasmota32_base] ; *** Uncomment next lines ";" to enable development Tasmota Arduino version ESP32 -;platform = https://github.com/tasmota/platform-espressif32.git +;platform = https://github.com/Jason2866/platform-espressif32/releases/download/2024.07.20/platform-espressif32.zip + ;platform_packages = framework-arduinoespressif32 @ ; framework-arduino-solo1 @ ; framework-arduino-ITEAD @ diff --git a/tasmota/tasmota_support/support_crash_recorder.ino b/tasmota/tasmota_support/support_crash_recorder.ino index 853b5baab..ab894e1ee 100644 --- a/tasmota/tasmota_support/support_crash_recorder.ino +++ b/tasmota/tasmota_support/support_crash_recorder.ino @@ -166,7 +166,11 @@ void CrashDumpClear(void) // extern "C" void custom_crash_callback(struct rst_info * rst_info, uint32_t stack, uint32_t stack_end ) // esp_err_t IRAM_ATTR esp_backtrace_print(int depth) +#if defined __has_include && __has_include("xtensa_api.h") +#include "xtensa_api.h" +#else #include "freertos/xtensa_api.h" +#endif #include "esp_debug_helpers.h" #include "esp_cpu_utils.h" extern "C" { From a260d334d0a030729b5e56f25dd36d31d4db9461 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:07:28 +0200 Subject: [PATCH 123/252] Matter add ack in attribute response (#21722) --- .../berry_matter/src/embedded/Matter_IM.be | 2 +- .../src/embedded/Matter_IM_Message.be | 11 + .../src/solidify/solidified_Matter_IM.h | 157 +++++++------- .../solidify/solidified_Matter_IM_Message.h | 201 +++++++++++------- 4 files changed, 216 insertions(+), 155 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index ddb7baeab..520a117eb 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -74,7 +74,7 @@ class Matter_IM if opcode == 0x01 # Status Response return self.process_status_response(msg, val) elif opcode == 0x02 # Read Request - # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request + self.send_ack_now(msg) return self.process_read_request_pull(msg, val) elif opcode == 0x03 # Subscribe Request self.send_ack_now(msg) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be index 02305139b..d0b596091 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be @@ -219,6 +219,17 @@ class Matter_IM_ReportData_Pull : Matter_IM_Message self.event_generator_or_arr = event_generator_or_arr end + ################################################################################# + # Status Report OK received for previous message, proceed to next (if any) + # return true if we manage the ack ourselves, false if it needs to be done upper + def status_ok_received(msg) + super(self).status_ok_received(msg) + if !self.finishing + msg.session._message_handler.send_encrypted_ack(msg, false #-not reliable-#) + end + return true + end + ################################################################################# # set_subscription_id # diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 382d0e1e9..3cdb3e7ed 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -904,9 +904,9 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ /* K11 */ be_nested_str_weak(parse), /* K12 */ be_const_int(1), /* K13 */ be_nested_str_weak(process_status_response), - /* K14 */ be_nested_str_weak(process_read_request_pull), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(send_ack_now), + /* K14 */ be_nested_str_weak(send_ack_now), + /* K15 */ be_nested_str_weak(process_read_request_pull), + /* K16 */ be_const_int(3), /* K17 */ be_nested_str_weak(subscribe_request), /* K18 */ be_nested_str_weak(process_write_request), /* K19 */ be_nested_str_weak(process_write_response), @@ -915,7 +915,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ }), be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[124]) { /* code */ + ( &(const binstruction[127]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0x1C0C0501, // 0001 EQ R3 R2 K1 0x780E000D, // 0002 JMPF R3 #0011 @@ -962,84 +962,87 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x5C1C0600, // 002B MOVE R7 R3 0x7C100600, // 002C CALL R4 3 0x80040800, // 002D RET 1 R4 - 0x7002004A, // 002E JMP #007A + 0x7002004D, // 002E JMP #007D 0x1C100501, // 002F EQ R4 R2 K1 - 0x78120005, // 0030 JMPF R4 #0037 + 0x78120008, // 0030 JMPF R4 #003A 0x8C10010E, // 0031 GETMET R4 R0 K14 0x5C180200, // 0032 MOVE R6 R1 - 0x5C1C0600, // 0033 MOVE R7 R3 - 0x7C100600, // 0034 CALL R4 3 - 0x80040800, // 0035 RET 1 R4 - 0x70020042, // 0036 JMP #007A - 0x1C10050F, // 0037 EQ R4 R2 K15 - 0x78120008, // 0038 JMPF R4 #0042 - 0x8C100110, // 0039 GETMET R4 R0 K16 - 0x5C180200, // 003A MOVE R6 R1 - 0x7C100400, // 003B CALL R4 2 - 0x8C100111, // 003C GETMET R4 R0 K17 + 0x7C100400, // 0033 CALL R4 2 + 0x8C10010F, // 0034 GETMET R4 R0 K15 + 0x5C180200, // 0035 MOVE R6 R1 + 0x5C1C0600, // 0036 MOVE R7 R3 + 0x7C100600, // 0037 CALL R4 3 + 0x80040800, // 0038 RET 1 R4 + 0x70020042, // 0039 JMP #007D + 0x1C100510, // 003A EQ R4 R2 K16 + 0x78120008, // 003B JMPF R4 #0045 + 0x8C10010E, // 003C GETMET R4 R0 K14 0x5C180200, // 003D MOVE R6 R1 - 0x5C1C0600, // 003E MOVE R7 R3 - 0x7C100600, // 003F CALL R4 3 - 0x80040800, // 0040 RET 1 R4 - 0x70020037, // 0041 JMP #007A - 0x54120003, // 0042 LDINT R4 4 - 0x1C100404, // 0043 EQ R4 R2 R4 - 0x78120002, // 0044 JMPF R4 #0048 - 0x50100000, // 0045 LDBOOL R4 0 0 - 0x80040800, // 0046 RET 1 R4 - 0x70020031, // 0047 JMP #007A - 0x54120004, // 0048 LDINT R4 5 - 0x1C100404, // 0049 EQ R4 R2 R4 - 0x78120002, // 004A JMPF R4 #004E - 0x50100000, // 004B LDBOOL R4 0 0 - 0x80040800, // 004C RET 1 R4 - 0x7002002B, // 004D JMP #007A - 0x54120005, // 004E LDINT R4 6 - 0x1C100404, // 004F EQ R4 R2 R4 - 0x78120008, // 0050 JMPF R4 #005A - 0x8C100110, // 0051 GETMET R4 R0 K16 - 0x5C180200, // 0052 MOVE R6 R1 - 0x7C100400, // 0053 CALL R4 2 - 0x8C100112, // 0054 GETMET R4 R0 K18 + 0x7C100400, // 003E CALL R4 2 + 0x8C100111, // 003F GETMET R4 R0 K17 + 0x5C180200, // 0040 MOVE R6 R1 + 0x5C1C0600, // 0041 MOVE R7 R3 + 0x7C100600, // 0042 CALL R4 3 + 0x80040800, // 0043 RET 1 R4 + 0x70020037, // 0044 JMP #007D + 0x54120003, // 0045 LDINT R4 4 + 0x1C100404, // 0046 EQ R4 R2 R4 + 0x78120002, // 0047 JMPF R4 #004B + 0x50100000, // 0048 LDBOOL R4 0 0 + 0x80040800, // 0049 RET 1 R4 + 0x70020031, // 004A JMP #007D + 0x54120004, // 004B LDINT R4 5 + 0x1C100404, // 004C EQ R4 R2 R4 + 0x78120002, // 004D JMPF R4 #0051 + 0x50100000, // 004E LDBOOL R4 0 0 + 0x80040800, // 004F RET 1 R4 + 0x7002002B, // 0050 JMP #007D + 0x54120005, // 0051 LDINT R4 6 + 0x1C100404, // 0052 EQ R4 R2 R4 + 0x78120008, // 0053 JMPF R4 #005D + 0x8C10010E, // 0054 GETMET R4 R0 K14 0x5C180200, // 0055 MOVE R6 R1 - 0x5C1C0600, // 0056 MOVE R7 R3 - 0x7C100600, // 0057 CALL R4 3 - 0x80040800, // 0058 RET 1 R4 - 0x7002001F, // 0059 JMP #007A - 0x54120006, // 005A LDINT R4 7 - 0x1C100404, // 005B EQ R4 R2 R4 - 0x78120005, // 005C JMPF R4 #0063 - 0x8C100113, // 005D GETMET R4 R0 K19 - 0x5C180200, // 005E MOVE R6 R1 - 0x5C1C0600, // 005F MOVE R7 R3 - 0x7C100600, // 0060 CALL R4 3 - 0x80040800, // 0061 RET 1 R4 - 0x70020016, // 0062 JMP #007A - 0x54120007, // 0063 LDINT R4 8 - 0x1C100404, // 0064 EQ R4 R2 R4 - 0x78120005, // 0065 JMPF R4 #006C - 0x8C100114, // 0066 GETMET R4 R0 K20 - 0x5C180200, // 0067 MOVE R6 R1 - 0x5C1C0600, // 0068 MOVE R7 R3 - 0x7C100600, // 0069 CALL R4 3 - 0x80040800, // 006A RET 1 R4 - 0x7002000D, // 006B JMP #007A - 0x54120008, // 006C LDINT R4 9 - 0x1C100404, // 006D EQ R4 R2 R4 - 0x78120002, // 006E JMPF R4 #0072 - 0x50100000, // 006F LDBOOL R4 0 0 - 0x80040800, // 0070 RET 1 R4 - 0x70020007, // 0071 JMP #007A - 0x54120009, // 0072 LDINT R4 10 - 0x1C100404, // 0073 EQ R4 R2 R4 - 0x78120004, // 0074 JMPF R4 #007A - 0x8C100115, // 0075 GETMET R4 R0 K21 - 0x5C180200, // 0076 MOVE R6 R1 - 0x5C1C0600, // 0077 MOVE R7 R3 - 0x7C100600, // 0078 CALL R4 3 - 0x80040800, // 0079 RET 1 R4 - 0x50100000, // 007A LDBOOL R4 0 0 - 0x80040800, // 007B RET 1 R4 + 0x7C100400, // 0056 CALL R4 2 + 0x8C100112, // 0057 GETMET R4 R0 K18 + 0x5C180200, // 0058 MOVE R6 R1 + 0x5C1C0600, // 0059 MOVE R7 R3 + 0x7C100600, // 005A CALL R4 3 + 0x80040800, // 005B RET 1 R4 + 0x7002001F, // 005C JMP #007D + 0x54120006, // 005D LDINT R4 7 + 0x1C100404, // 005E EQ R4 R2 R4 + 0x78120005, // 005F JMPF R4 #0066 + 0x8C100113, // 0060 GETMET R4 R0 K19 + 0x5C180200, // 0061 MOVE R6 R1 + 0x5C1C0600, // 0062 MOVE R7 R3 + 0x7C100600, // 0063 CALL R4 3 + 0x80040800, // 0064 RET 1 R4 + 0x70020016, // 0065 JMP #007D + 0x54120007, // 0066 LDINT R4 8 + 0x1C100404, // 0067 EQ R4 R2 R4 + 0x78120005, // 0068 JMPF R4 #006F + 0x8C100114, // 0069 GETMET R4 R0 K20 + 0x5C180200, // 006A MOVE R6 R1 + 0x5C1C0600, // 006B MOVE R7 R3 + 0x7C100600, // 006C CALL R4 3 + 0x80040800, // 006D RET 1 R4 + 0x7002000D, // 006E JMP #007D + 0x54120008, // 006F LDINT R4 9 + 0x1C100404, // 0070 EQ R4 R2 R4 + 0x78120002, // 0071 JMPF R4 #0075 + 0x50100000, // 0072 LDBOOL R4 0 0 + 0x80040800, // 0073 RET 1 R4 + 0x70020007, // 0074 JMP #007D + 0x54120009, // 0075 LDINT R4 10 + 0x1C100404, // 0076 EQ R4 R2 R4 + 0x78120004, // 0077 JMPF R4 #007D + 0x8C100115, // 0078 GETMET R4 R0 K21 + 0x5C180200, // 0079 MOVE R6 R1 + 0x5C1C0600, // 007A MOVE R7 R3 + 0x7C100600, // 007B CALL R4 3 + 0x80040800, // 007C RET 1 R4 + 0x50100000, // 007D LDBOOL R4 0 0 + 0x80040800, // 007E RET 1 R4 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index d75db24aa..17b3fe498 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -553,73 +553,6 @@ be_local_class(Matter_IM_WriteResponse, extern const bclass be_class_Matter_IM_ReportData_Pull; -/******************************************************************** -** Solidified function: set_subscription_id -********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; -be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(subscription_id), - }), - be_str_weak(set_subscription_id), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; -be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(generator_or_arr), - /* K2 */ be_nested_str_weak(event_generator_or_arr), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x541E0004, // 0005 LDINT R7 5 - 0x50200200, // 0006 LDBOOL R8 1 0 - 0x7C100800, // 0007 CALL R4 4 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x90020403, // 0009 SETMBR R0 K2 R3 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: send_im ********************************************************************/ @@ -1003,6 +936,80 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: status_ok_received +********************************************************************/ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_status_ok_received, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_ReportData_Pull, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(status_ok_received), + /* K1 */ be_nested_str_weak(finishing), + /* K2 */ be_nested_str_weak(session), + /* K3 */ be_nested_str_weak(_message_handler), + /* K4 */ be_nested_str_weak(send_encrypted_ack), + }), + be_str_weak(status_ok_received), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x740A0005, // 0007 JMPT R2 #000E + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0x88080503, // 0009 GETMBR R2 R2 K3 + 0x8C080504, // 000A GETMET R2 R2 K4 + 0x5C100200, // 000B MOVE R4 R1 + 0x50140000, // 000C LDBOOL R5 0 0 + 0x7C080600, // 000D CALL R2 3 + 0x50080200, // 000E LDBOOL R2 1 0 + 0x80040400, // 000F RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_subscription_id +********************************************************************/ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_ReportData_Pull, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(subscription_id), + }), + be_str_weak(set_subscription_id), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: set_suppress_response ********************************************************************/ @@ -1031,6 +1038,45 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* nam /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM_ReportData_Pull; +be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM_ReportData_Pull, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(generator_or_arr), + /* K2 */ be_nested_str_weak(event_generator_or_arr), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x541E0004, // 0005 LDINT R7 5 + 0x50200200, // 0006 LDBOOL R8 1 0 + 0x7C100800, // 0007 CALL R4 4 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x90020403, // 0009 SETMBR R0 K2 R3 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_IM_ReportData_Pull ********************************************************************/ @@ -1038,18 +1084,19 @@ extern const bclass be_class_Matter_IM_Message; be_local_class(Matter_IM_ReportData_Pull, 5, &be_class_Matter_IM_Message, - be_nested_map(10, + be_nested_map(11, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(set_suppress_response, 2), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) }, - { be_const_key_weak(data_ev, -1), be_const_var(4) }, - { be_const_key_weak(event_generator_or_arr, -1), be_const_var(1) }, - { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, - { be_const_key_weak(subscription_id, -1), be_const_var(2) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_Pull_init_closure) }, - { be_const_key_weak(generator_or_arr, 9), be_const_var(0) }, - { be_const_key_weak(set_subscription_id, 0), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) }, { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportData_Pull_send_im_closure) }, - { be_const_key_weak(suppress_response, -1), be_const_var(3) }, + { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_ReportData_Pull_status_ok_received_closure) }, + { be_const_key_weak(data_ev, -1), be_const_var(4) }, + { be_const_key_weak(suppress_response, 8), be_const_var(3) }, + { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, + { be_const_key_weak(set_suppress_response, -1), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) }, + { be_const_key_weak(set_subscription_id, -1), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) }, + { be_const_key_weak(generator_or_arr, 5), be_const_var(0) }, + { be_const_key_weak(event_generator_or_arr, 4), be_const_var(1) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_Pull_init_closure) }, + { be_const_key_weak(subscription_id, -1), be_const_var(2) }, })), be_str_weak(Matter_IM_ReportData_Pull) ); From 243df3f2cf6825e13d55e9be564392e6cd2f61eb Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 3 Jul 2024 22:13:50 +0200 Subject: [PATCH 124/252] `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724) --- CHANGELOG.md | 1 + tasmota/tasmota_support/support_button_v4.ino | 2 +- tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino | 6 ++++-- tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino | 2 +- tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 158ea7f58..f61cd41e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) - Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711) - Support for Sonoff POWCT Ring (#21131) +- `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` ### Breaking Changed diff --git a/tasmota/tasmota_support/support_button_v4.ino b/tasmota/tasmota_support/support_button_v4.ino index 7766eadd7..191718975 100644 --- a/tasmota/tasmota_support/support_button_v4.ino +++ b/tasmota/tasmota_support/support_button_v4.ino @@ -419,7 +419,7 @@ void ButtonHandler(void) { XdrvMailbox.index = button_index; XdrvMailbox.payload = button; - XdrvMailbox.command_code = Button.last_state[button_index]; + XdrvMailbox.command_code = (Button.last_state[button_index] & 0xFF) | ((Button.press_counter[button_index] & 0xFF) << 8); if (XdrvCall(FUNC_BUTTON_PRESSED)) { // Serviced } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino index 5e90a1130..c5bad3c9e 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino @@ -952,10 +952,12 @@ bool Xdrv52(uint32_t function) // XdrvMailbox.index = button_index; // XdrvMailbox.payload = button; // XdrvMailbox.command_code = Button.last_state[button_index]; - if ((XdrvMailbox.payload != XdrvMailbox.command_code) || TimeReached(timer_last_button_sent)) { // fire event only when state changes + uint8_t state = (XdrvMailbox.command_code & 0xFF); + uint8_t multipress_state = (XdrvMailbox.command_code >> 8) & 0xFF; + if ((XdrvMailbox.payload != state) || TimeReached(timer_last_button_sent)) { // fire event only when state changes timer_last_button_sent = millis() + 1000; // wait for 1 second result = callBerryEventDispatcher(PSTR("button_pressed"), nullptr, - (XdrvMailbox.payload & 0xFF) << 16 | (XdrvMailbox.command_code & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) , + (multipress_state & 0xFF) << 24 | (XdrvMailbox.payload & 0xFF) << 16 | (XdrvMailbox.command_code & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) , nullptr); } } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino index 20d0d01c7..00da8d88f 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino @@ -91,7 +91,7 @@ bool ShellyProButton(void) { if (button_index > 2) { return false; } // Only support Up, Down, Ok uint32_t button = XdrvMailbox.payload; - uint32_t last_state = XdrvMailbox.command_code; + uint32_t last_state = (XdrvMailbox.command_code & 0xFF); if ((PRESSED == button) && (NOT_PRESSED == last_state)) { // Button pressed AddLog(LOG_LEVEL_DEBUG, PSTR("SHP: Button %d pressed"), button_index +1); diff --git a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino index 06456b990..175ed8b8b 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino @@ -307,7 +307,7 @@ bool ShellyProButton(void) { if (button_index > 2) { return false; } // Only support Up, Down, Ok uint32_t button = XdrvMailbox.payload; - uint32_t last_state = XdrvMailbox.command_code; + uint32_t last_state = (XdrvMailbox.command_code & 0xFF); if ((PRESSED == button) && (NOT_PRESSED == last_state)) { // Button pressed AddLog(LOG_LEVEL_DEBUG, PSTR("SHP: Button %d pressed"), button_index +1); From 843dd17aecf37d417f302daf45512ba6aa1e9e38 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Thu, 4 Jul 2024 09:28:01 +0200 Subject: [PATCH 125/252] NeoPool add data validation and statistics (#21721) Co-authored-by: Theo Arends <11044339+arendst@users.noreply.github.com> --- CHANGELOG.md | 1 + .../tasmota_xsns_sensor/xsns_83_neopool.ino | 191 +++++++++++++++++- 2 files changed, 186 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f61cd41e5..e6ea4bdf1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) - Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711) - Support for Sonoff POWCT Ring (#21131) +- NeoPool add data validation and communication statistics (default enabled for ESP32 only) - `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` ### Breaking Changed diff --git a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino index c13bc82d7..75dd67e26 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino @@ -91,6 +91,16 @@ #define NEOPOOL_LIGHT_PRG_DELAY_MAX 100 // next light prg delay max (in ms) #endif +#ifdef ESP32 // Defaults for ESP32 only + #ifndef NEOPOOL_RANGE_CHECKS + #define NEOPOOL_RANGE_CHECKS // Compile with value range checks + #endif +#endif +#ifdef NEOPOOL_RANGE_CHECKS + #ifndef NEOPOOL_CONNSTAT + #define NEOPOOL_CONNSTAT // Compile with connection statistics + #endif +#endif /*********************************************************************************************\ * Sugar Valley Modbus Register (addresses marked with * are queried with each polling cycle) @@ -707,7 +717,36 @@ enum NeoPoolModbusCode { NEOPOOL_MODBUS_ERROR_DEADLOCK }; +#ifdef NEOPOOL_RANGE_CHECKS +#define NEOPOOL_UNDEF_UINT16 0xFFFF + typedef struct { + uint16_t addr; // Modbus register addr + uint16_t min; // min valid value (or UNDEFined) + uint16_t max; // max valid value (or UNDEFined) + uint16_t prev; // previous read value + } TNeoPoolRangeCheck; + TNeoPoolRangeCheck NeoPoolRangeCheck[] = { + {MBF_ION_CURRENT, 0, 100, NEOPOOL_UNDEF_UINT16}, // Ionization level measured + {MBF_HIDRO_CURRENT, 0, NEOPOOL_UNDEF_UINT16, NEOPOOL_UNDEF_UINT16}, // Hydrolysis intensity level + {MBF_MEASURE_PH, 0, 1400, NEOPOOL_UNDEF_UINT16}, // pH level measured + {MBF_MEASURE_RX, 0, 1000, NEOPOOL_UNDEF_UINT16}, // Redox level measured + {MBF_MEASURE_CL, 0, 1000, NEOPOOL_UNDEF_UINT16}, // Chlorine level measured + {MBF_MEASURE_CONDUCTIVITY, 0, 100, NEOPOOL_UNDEF_UINT16}, // Conductivity level measured + {MBF_MEASURE_TEMPERATURE, 0, 6500, NEOPOOL_UNDEF_UINT16} // Temperature sensor measured + }; +#endif +#ifdef NEOPOOL_CONNSTAT + #define NEOPOOL_TASMOTAMODBUS_ERROR_NUM_MAX 15 // 0-14 - see TasmotaModbus.h class TasmotaModbus highest error # + // counting modbus and data error + struct { + uint32_t time; // time where counting started + uint32_t mb_requests; // request count + // result count: + uint32_t mb_results[NEOPOOL_TASMOTAMODBUS_ERROR_NUM_MAX + 1]; + uint32_t value_out_of_range; // value out of range count + } NeoPoolStats; +#endif // NPResult possible values enum NeoPoolResult { @@ -796,6 +835,48 @@ struct { #define D_NEOPOOL_JSON_BIT "Bit" #define D_NEOPOOL_JSON_NODE_ID "NodeID" +#ifdef NEOPOOL_CONNSTAT +#define D_NEOPOOL_JSON_CONNSTAT "Connection" +#define D_NEOPOOL_JSON_CONNSTAT_MB_REQUESTS "MBRequests" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_0 "MBNoError" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_1 "MBIllegalFunc" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_2 "MBIllegalDataAddr" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_3 "MBIllegalDataValue" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_4 "MBSlaveError" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_5 "MBAck" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_6 "MBSlaveBusy" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_7 "MBNotEnoughData" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_8 "MBMemParityErr" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_9 "MBCRCErr" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_10 "MBGWPath" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_11 "MBGWTarget" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_12 "MBRegErr" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_13 "MBRegData" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_14 "MBTooManyReg" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_15 "MBUnknownErr" +#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS "MBNoResponse" +#define D_NEOPOOL_JSON_CONNSTAT_DATA_OOR "DataOutOfRange" + +const char kNeoPoolMBResults[] PROGMEM = + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_0 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_1 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_2 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_3 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_4 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_5 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_6 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_7 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_8 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_9 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_10 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_11 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_12 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_13 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_14 "|" + D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_15 + ; +#endif + const char kNeoPoolMachineNames[] PROGMEM = D_NEOPOOL_MACH_NONE "|" D_NEOPOOL_MACH_HIDROLIFE "|" @@ -1212,7 +1293,9 @@ void NeoPoolPoll(void) // Poll modbus register if (nullptr != buffer) { uint8_t error = NeoPoolModbus->ReceiveBuffer(buffer, NeoPoolReg[neopool_read_state].cnt); // cnt x 16bit register - +#ifdef NEOPOOL_CONNSTAT + NeoPoolModbusErrorCount(error); +#endif if (0 == error) { neopool_failed_count = 0; neopool_error = false; @@ -1243,6 +1326,9 @@ void NeoPoolPoll(void) // Poll modbus register AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("NEO: modbus send(%d, %d, 0x%04X, %d)"), NEOPOOL_MODBUS_ADDRESS, NEOPOOL_READ_REGISTER, NeoPoolReg[neopool_read_state].addr, NeoPoolReg[neopool_read_state].cnt); #endif // DEBUG_TASMOTA_SENSOR NeoPoolModbus->Send(NEOPOOL_MODBUS_ADDRESS, NEOPOOL_READ_REGISTER, NeoPoolReg[neopool_read_state].addr, NeoPoolReg[neopool_read_state].cnt); +#ifdef NEOPOOL_CONNSTAT + NeoPoolStats.mb_requests++; +#endif } else { if (1 == neopool_send_retry) { neopool_failed_count++; @@ -1296,6 +1382,9 @@ bool NeoPoolInitData(void) neopool_error = true; neopool_power_module_version = 0; +#ifdef NEOPOOL_CONNSTAT + memset(&NeoPoolStats, 0, sizeof(NeoPoolStats)); +#endif memset(neopool_power_module_nodeid, 0, sizeof(neopool_power_module_nodeid)); for (uint32_t i = 0; i < nitems(NeoPoolReg); i++) { @@ -1362,6 +1451,19 @@ void NeoPool250msSetStatus(bool status) } } +#ifdef NEOPOOL_CONNSTAT +void NeoPoolModbusErrorCount(uint8_t error) +{ + if (NeoPoolStats.time < 86400L) { + NeoPoolStats.time = Rtc.local_time; + } + if (error < nitems(NeoPoolStats.mb_results) - 1) { + NeoPoolStats.mb_results[error]++; + } else { + NeoPoolStats.mb_results[nitems(NeoPoolStats.mb_results) - 1]++; + } +} +#endif uint8_t NeoPoolReadRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt) { @@ -1373,12 +1475,18 @@ uint8_t NeoPoolReadRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt) *data = 0; NeoPoolModbus->Send(NEOPOOL_MODBUS_ADDRESS, NEOPOOL_READ_REGISTER, addr, cnt); +#ifdef NEOPOOL_CONNSTAT + NeoPoolStats.mb_requests++; +#endif timeoutMS = millis() + cnt * NEOPOOL_READ_TIMEOUT; // Max delay before we timeout while (!(data_ready = NeoPoolModbus->ReceiveReady()) && millis() < timeoutMS) { delay(1); } if (data_ready) { uint8_t *buffer = (uint8_t*)malloc(5+cnt*2); if (buffer != nullptr) { uint8_t error = NeoPoolModbus->ReceiveBuffer(buffer, cnt); +#ifdef NEOPOOL_CONNSTAT + NeoPoolModbusErrorCount(error); +#endif if (error) { #ifdef DEBUG_TASMOTA_SENSOR AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("NEO: addr 0x%04X read data error %d"), addr, error); @@ -1455,6 +1563,9 @@ uint8_t NeoPoolWriteRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt) NeoPoolModbus->flush(); NeoPoolModbus->write(frame, numbytes+2); +#ifdef NEOPOOL_CONNSTAT + NeoPoolStats.mb_requests++; +#endif timeoutMS = millis() + 1 * NEOPOOL_READ_TIMEOUT; // Max delay before we timeout while (!(data_ready = NeoPoolModbus->ReceiveReady()) && millis() < timeoutMS) { delay(1); } @@ -1462,6 +1573,9 @@ uint8_t NeoPoolWriteRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt) if (data_ready) { uint8_t buffer[9]; uint8_t error = NeoPoolModbus->ReceiveBuffer(buffer, 1); +#ifdef NEOPOOL_CONNSTAT + NeoPoolModbusErrorCount(error); +#endif if (0 != error && 9 != error) { // ReceiveBuffer can't handle 0x10 code result #ifdef DEBUG_TASMOTA_SENSOR AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("NEO: addr 0x%04X write data response error %d"), addr, error); @@ -1539,7 +1653,7 @@ uint8_t NeoPoolWriteRegisterWord(uint16_t addr, uint16_t data) uint16_t NeoPoolGetCacheData(uint16_t addr, int32_t timeout) { - uint16_t data; + uint16_t data = 0; bool datavalid = false; uint16_t i; @@ -1599,7 +1713,55 @@ uint16_t NeoPoolGetCacheData(uint16_t addr, int32_t timeout) uint16_t NeoPoolGetData(uint16_t addr) { - return NeoPoolGetCacheData(addr, -1); + uint16_t data = NeoPoolGetCacheData(addr, -1); + +#ifdef NEOPOOL_RANGE_CHECKS + for (uint16_t i = 0; i < nitems(NeoPoolRangeCheck); i++) { + if (MBF_HIDRO_CURRENT == NeoPoolRangeCheck[i].addr && NEOPOOL_UNDEF_UINT16 == NeoPoolRangeCheck[i].max) { + // get hydrolsysis max value + uint16_t max = NeoPoolGetCacheData(MBF_PAR_HIDRO_NOM, -1); + if (0 != max) { + NeoPoolRangeCheck[i].max = max; +#ifdef DEBUG_TASMOTA_SENSOR + AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - use hydrolysis max = %d"), NeoPoolRangeCheck[i].max); +#endif + } + } + if (NeoPoolRangeCheck[i].addr == addr) { + uint16_t prev_data = data; + // check out of range + if (data < NeoPoolRangeCheck[i].min || data > NeoPoolRangeCheck[i].max) { +#ifdef NEOPOOL_CONNSTAT + NeoPoolStats.value_out_of_range++; +#endif + // use previous value if defined + if (NEOPOOL_UNDEF_UINT16 != NeoPoolRangeCheck[i].prev) { + data = NeoPoolRangeCheck[i].prev; + } else { + // limit to min/max as long as no valid previous value is present + if (data < NeoPoolRangeCheck[i].min) { + data = NeoPoolRangeCheck[i].min; + } else { + data = NeoPoolRangeCheck[i].max; + } + } +#ifdef DEBUG_TASMOTA_SENSOR + AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - Addr 0x%04X data out of range [%d-%d]: received %d, corrected using %d"), + NeoPoolRangeCheck[i].addr, + NeoPoolRangeCheck[i].min, + NeoPoolRangeCheck[i].max, + prev_data, + data); +#endif + } + else { + // remeber origin value + NeoPoolRangeCheck[i].prev = data; + } + } + } +#endif // NEOPOOL_RANGE_CHECKS + return data; } @@ -1986,8 +2148,25 @@ void NeoPoolShow(bool json) if (0 != NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) { ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_FILTVALVE " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) & 1); } + ResponseJsonEnd(); - ResponseJsonEndEnd(); +#ifdef NEOPOOL_CONNSTAT + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT "\":{")); + ResponseAppend_P(PSTR( "\"" D_JSON_TIME "\":\"%s\""), GetDT(NeoPoolStats.time).c_str()); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_REQUESTS "\":%d"), NeoPoolStats.mb_requests); + uint32_t mb_sum = 0; + for(uint16_t i = 0; i < nitems(NeoPoolStats.mb_results); i++) { + char mbresult[32]; + GetTextIndexed(mbresult, sizeof(mbresult), i, kNeoPoolMBResults); + ResponseAppend_P(PSTR(",\"%s\":%d"), mbresult,NeoPoolStats.mb_results[i]); + mb_sum += NeoPoolStats.mb_results[i]; + } + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS "\":%d"), NeoPoolStats.mb_requests - mb_sum); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_DATA_OOR "\":%d"), NeoPoolStats.value_out_of_range); + ResponseJsonEnd(); +#endif + + ResponseJsonEnd(); #ifdef USE_WEBSERVER } else { @@ -2623,7 +2802,7 @@ void CmndNeopoolLight(void) if (POWER_TOGGLE == timer_val[XdrvMailbox.payload]) { XdrvMailbox.payload = ((data >>= (neopool_light_relay - 1)) & 1) ? POWER_OFF : POWER_ON; } - NeoPoolWriteRegisterWord(MBF_PAR_TIMER_BLOCK_LIGHT_INT + MBV_TIMER_OFFMB_TIMER_ENABLE, timer_val[XdrvMailbox.payload]); + NeoPoolWriteRegisterWord((uint16_t)MBF_PAR_TIMER_BLOCK_LIGHT_INT + (uint16_t)MBV_TIMER_OFFMB_TIMER_ENABLE, timer_val[XdrvMailbox.payload]); NeoPoolWriteRegisterWord(MBF_EXEC, 1); // data >>= (neopool_light_relay - 1); ResponseCmndStateText(XdrvMailbox.payload); @@ -2693,7 +2872,7 @@ void CmndNeopoolLightPrgEnd(void) // exit manual ctrl NeoPoolWriteRegisterWord(MBF_SET_MANUAL_CTRL, 0); // switch light on to finish prg sequence - NeoPoolWriteRegisterWord(MBF_PAR_TIMER_BLOCK_LIGHT_INT + MBV_TIMER_OFFMB_TIMER_ENABLE, MBV_PAR_CTIMER_ALWAYS_ON); + NeoPoolWriteRegisterWord((uint16_t)MBF_PAR_TIMER_BLOCK_LIGHT_INT + (uint16_t)MBV_TIMER_OFFMB_TIMER_ENABLE, MBV_PAR_CTIMER_ALWAYS_ON); NeoPoolWriteRegisterWord(MBF_EXEC, 1); } From 04a6d5513ba9e1790e27b080fbc8d3f286f99ea5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 4 Jul 2024 16:04:59 +0200 Subject: [PATCH 126/252] Prep serial IDF 5.2 support --- lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp | 2 +- lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h | 6 ++++++ lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h | 6 ------ tasmota/tasmota_xsns_sensor/xsns_53_sml.ino | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp index 5f9b10561..2200e06ba 100644 --- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp +++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp @@ -150,7 +150,7 @@ void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) { #ifdef ESP32 bool TasmotaSerial::freeUart(void) { - for (uint32_t i = SOC_UART_NUM -1; i >= 0; i--) { + for (uint32_t i = SOC_UART_HP_NUM -1; i >= 0; i--) { if (0 == bitRead(tasmota_serial_uart_bitmap, i)) { m_uart = uart_port_t(i); bitSet(tasmota_serial_uart_bitmap, m_uart); diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h index da946d8eb..b380bec69 100644 --- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h +++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h @@ -33,6 +33,12 @@ #ifdef ESP32 #include + +// IDF 5.2 has changed counting UART channels, SOC_UART_NUM includes now LP UARTS too for ESP32-C6 and -P4 +#ifndef SOC_UART_HP_NUM +#define SOC_UART_HP_NUM SOC_UART_NUM // Set new define SOC_UART_HP_NUM in pre IDF 5.2 to SOC_UART_NUM +#endif + #endif class TasmotaSerial : public Stream { diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h index 5ff821a16..99a4b1b30 100644 --- a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h +++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h @@ -191,11 +191,5 @@ typedef int SerConfu8; #define LCD_CAM_LCD_UPDATE_REG LCD_CAM_LCD_UPDATE_M #endif // LCD_CAM_LCD_UPDATE_M -// IDF 5.2 has changed counting UART channels, SOC_UART_NUM includes now LP UARTS too -#ifdef SOC_UART_HP_NUM -#undef SOC_UART_NUM -#define SOC_UART_NUM SOC_UART_HP_NUM -#endif - #endif // ESP32 #endif // __ESP8266TOESP32_H__ diff --git a/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino b/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino index ec73da332..433af4462 100755 --- a/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino @@ -3125,7 +3125,7 @@ void SML_Init(void) { uint16_t memory = 0; #ifdef ESP32 - uint32_t uart_index = SOC_UART_NUM - 1; + uint32_t uart_index = SOC_UART_HP_NUM - 1; #endif sml_globs.sml_send_blocks = 0; From dfa5b46494abfb27894bb8a3a3c8e6129ec615d4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 4 Jul 2024 16:18:53 +0200 Subject: [PATCH 127/252] Update changelogs --- CHANGELOG.md | 4 ++-- RELEASENOTES.md | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6ea4bdf1..f2c44a4f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,8 @@ All notable changes to this project will be documented in this file. - Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708) - Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711) - Support for Sonoff POWCT Ring (#21131) -- NeoPool add data validation and communication statistics (default enabled for ESP32 only) -- `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` +- NeoPool data validation and communication statistics default enabled for ESP32 only (#21721) +- `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 00b2eb0b4..0ff1d4566 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -125,6 +125,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) +- NeoPool data validation and communication statistics default enabled for ESP32 only [#21721](https://github.com/arendst/Tasmota/issues/21721) - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) From 522d7f6ee4c10a71640863a91d3397c587e6e836 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 4 Jul 2024 19:19:21 +0200 Subject: [PATCH 128/252] Berry `int64` added `low32()` and `high32()` methods, used in Matter (#21728) --- CHANGELOG.md | 1 + lib/libesp32/berry_int64/src/be_int64_class.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2c44a4f2..8e68ae57a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. - Support for Sonoff POWCT Ring (#21131) - NeoPool data validation and communication statistics default enabled for ESP32 only (#21721) - `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724) +- Berry `int64` added `low32()` and `high32()` methods, used in Matter ### Breaking Changed diff --git a/lib/libesp32/berry_int64/src/be_int64_class.c b/lib/libesp32/berry_int64/src/be_int64_class.c index 48dfc923a..16f8dbbba 100644 --- a/lib/libesp32/berry_int64/src/be_int64_class.c +++ b/lib/libesp32/berry_int64/src/be_int64_class.c @@ -212,6 +212,16 @@ int64_t* int64_frombytes(bvm *vm, uint8_t* ptr, size_t len, int32_t idx) { } BE_FUNC_CTYPE_DECLARE(int64_frombytes, "int64", "@(bytes)~[i]") +int32_t int64_low32(int64_t *i64) { + return (int32_t) *i64; +} +BE_FUNC_CTYPE_DECLARE(int64_low32, "i", "(int64)") + +int32_t int64_high32(int64_t *i64) { + return (int32_t) (*i64 >> 32); +} +BE_FUNC_CTYPE_DECLARE(int64_high32, "i", "(int64)") + /* def toint64(i) @@ -305,5 +315,8 @@ class be_class_int64 (scope: global, name: int64) { tobytes, ctype_func(int64_tobytes) frombytes, static_ctype_func(int64_frombytes) + + low32, ctype_func(int64_low32) // return low 32 bits as int + high32, ctype_func(int64_high32) // return high 32 bits as int } @const_object_info_end */ From 152239c3ace40bbe94a902c6816de0be8fd958a3 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 4 Jul 2024 19:41:53 +0200 Subject: [PATCH 129/252] Matter simplify code (#21729) --- .../berry_matter/src/embedded/Matter_IM.be | 12 +- .../src/embedded/Matter_MessageHandler.be | 6 +- .../src/embedded/Matter_Plugin_1_Root.be | 2 +- .../src/embedded/Matter_UDPServer.be | 2 +- .../src/embedded/Matter_zz_Device.be | 69 +- .../src/solidify/solidified_Matter_IM.h | 1619 ++-- .../solidified_Matter_MessageHandler.h | 846 +- .../solidified_Matter_Plugin_1_Root.h | 2 +- .../solidify/solidified_Matter_UDPServer.h | 62 +- .../solidify/solidified_Matter_zz_Device.h | 8457 ++++++++--------- 10 files changed, 5439 insertions(+), 5638 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 520a117eb..cb309654e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -318,7 +318,7 @@ class Matter_IM # 0 = EnableTagCompression bool opt # 1 = Node # 2 = Endpoint - # 3 = Cluste + # 3 = Cluster # 4 = Attribute # 5 = ListIndex (opt) # @@ -602,7 +602,6 @@ class Matter_IM # returns `true` if processed, `false` if silently ignored, # or raises an exception def process_read_request_pull(msg, val) - matter.profiler.log("read_request_start_pull") var query = matter.ReadRequestMessage().from_TLV(val) var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg) var event_generator_or_arr = self.process_read_or_subscribe_request_event_pull(query, msg) @@ -767,7 +766,6 @@ class Matter_IM ctx.status = matter.UNSUPPORTED_ATTRIBUTE # new fallback error res = pi.read_attribute(msg.session, ctx, self.tlv_solo) end - matter.profiler.log("read_request_solo read done") if res != nil @@ -826,8 +824,6 @@ class Matter_IM responder.send_response_frame(resp) # postpone lengthy operations after sending back response - matter.profiler.log("RESPONSE SENT") - var attr_name if tasmota.loglevel(3) attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) @@ -909,7 +905,6 @@ class Matter_IM # import debug # structure is `ReadRequestMessage` 10.6.2 p.558 # log("MTR: IM:invoke_request processing start", 4) - matter.profiler.log("invoke_request_start") var ctx = matter.Path() ctx.msg = msg @@ -929,7 +924,6 @@ class Matter_IM var cmd_name = matter.get_command_name(ctx.cluster, ctx.command) var ctx_str = str(ctx) # keep string before invoking, it is modified by response var res = self.device.invoke_request(msg.session, q.command_fields, ctx) - matter.profiler.log("COMMAND DONE") var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : "" log(format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3) # log("MTR: Perf/Command = " + str(debug.counters()), 4) @@ -983,14 +977,12 @@ class Matter_IM # or raises an exception def process_invoke_request_solo(msg, ctx) # import debug - matter.profiler.log("invoke_request_solo_start") ctx.msg = msg ctx.status = matter.UNSUPPORTED_COMMAND #default error if returned `nil` var cmd_name = matter.get_command_name(ctx.cluster, ctx.command) var ctx_str = str(ctx) # keep string before invoking, it is modified by response var res = self.device.invoke_request(msg.session, ctx.command_fields, ctx) - matter.profiler.log("COMMAND DONE") var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : "" if tasmota.loglevel(3) log(format("MTR: >Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3) @@ -1041,7 +1033,6 @@ class Matter_IM resp.encode_frame(raw, msg_raw) # payload in cleartext resp.encrypt() responder.send_response_frame(resp) - matter.profiler.log("RESPONSE SENT") return true end @@ -1225,6 +1216,7 @@ class Matter_IM var event_generator_or_arr = sub.update_event_generator_array() var report_data_msg = matter.IM_ReportDataSubscribed_Pull(session._message_handler, session, generator_or_arr, event_generator_or_arr, sub) + self.send_queue.push(report_data_msg) # push message to queue self.send_enqueued(session._message_handler) # and send queued messages now end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be index 25eefe028..e437d2d5e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be @@ -86,7 +86,6 @@ class Matter_MessageHandler def msg_received(raw, addr, port) var ret = false - matter.profiler.log("msg_received") try # log("MTR: MessageHandler::msg_received raw="+raw.tohex(), 4) var frame = matter.Frame(self, raw, addr, port) @@ -170,7 +169,7 @@ class Matter_MessageHandler end var decrypt_ok = frame.decrypt() - matter.profiler.log("msg_received_header_frame_decrypted") + # matter.profiler.log("msg_received_header_frame_decrypted") if !decrypt_ok return false end # matter.profiler.log("msg_received_payload_undecoded") @@ -201,9 +200,7 @@ class Matter_MessageHandler ret = true elif protocol_id == 0x0001 # PROTOCOL_ID_INTERACTION_MODEL # dispatch to IM Protocol Messages - matter.profiler.log("process_IM_start") ret = self.im.process_incoming(frame) - matter.profiler.log("process_IM_end") # if `ret` is true, we have something to send if ret self.im.send_enqueued(self) @@ -250,7 +247,6 @@ class Matter_MessageHandler # msg.exchange_id: exchange id (int) # msg.local_session_id: local session (for logging) def send_response_frame(msg) - matter.profiler.log("send_response_frame") self.device.msg_send(msg) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index 1dc5b0a6a..6a9f8e58f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -221,7 +221,7 @@ class Matter_Plugin_Root : Matter_Plugin elif attribute == 0x0001 # ---------- VendorName / string ---------- return tlv_solo.set(TLV.UTF1, "Tasmota") elif attribute == 0x0002 # ---------- VendorID / vendor-id ---------- - return tlv_solo.set(TLV.U2, self.device.vendorid) # Vendor ID reserved for development + return tlv_solo.set(TLV.U2, self.device.VENDOR_ID) # Vendor ID reserved for development elif attribute == 0x0003 # ---------- ProductName / string ---------- return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName']) elif attribute == 0x0004 # ---------- ProductID / u16 (opt) ---------- diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be index 63d95004c..8f67e4ab8 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be @@ -139,7 +139,7 @@ class Matter_UDPServer end # log("MTR: Perf/UDP_received = " + str(debug.counters()), 4) if self.dispatch_cb - profiler.log("udp_loop_dispatch") + # profiler.log("udp_loop_dispatch") self.dispatch_cb(packet, from_addr, from_port) end profiler.dump(2) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 56c53fe18..da92a33ef 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -55,8 +55,6 @@ class Matter_Device var commissioning_instance_eth # random instance name for commissioning (mDNS) var hostname_wifi # MAC-derived hostname for commissioning var hostname_eth # MAC-derived hostname for commissioning - var vendorid - var productid # mDNS active announces var mdns_pase_eth # do we have an active PASE mDNS announce for eth var mdns_pase_wifi # do we have an active PASE mDNS announce for wifi @@ -69,12 +67,6 @@ class Matter_Device var disable_bridge_mode # default is bridge mode, this flag disables this mode for some non-compliant controllers var next_ep # next endpoint to be allocated for bridge, start at 1 var debug # debug mode, output all values when responding to read request with wildcard - # context for PBKDF - var root_iterations # PBKDF number of iterations - # PBKDF information used only during PASE (freed afterwards) - var root_salt - var root_w0 - var root_L # cron equivalent to call `read_sensors()` regularly and dispatch to all entpoints var probe_sensor_time # number of milliseconds to wait between each `read_sensors()` or `nil` if none active var probe_sensor_timestamp # timestamp for `read_sensors()` probe (in millis()) @@ -95,11 +87,7 @@ class Matter_Device self.plugins = [] self.plugins_persist = false # plugins need to saved only when the first fabric is associated self.plugins_config_remotes = {} - self.vendorid = self.VENDOR_ID - self.productid = self.PRODUCT_ID - self.root_iterations = self.PBKDF_ITERATIONS - self.next_ep = 1 # start at endpoint 1 for dynamically allocated endpoints - self.root_salt = crypto.random(16) + self.next_ep = 2 # start at endpoint 2 for dynamically allocated endpoints (1 reserved for aggregator) self.ipv4only = false self.disable_bridge_mode = false self.load_param() @@ -173,8 +161,21 @@ class Matter_Device tasmota.publish_result(format('{"Matter":{"Commissioning":1,"PairingCode":"%s","QRCode":"%s"}}', pairing_code, qr_code), 'Matter') # compute PBKDF - self._compute_pbkdf(self.root_passcode, self.root_iterations, self.root_salt) - self.start_basic_commissioning(timeout_s, self.root_iterations, self.root_discriminator, self.root_salt, self.root_w0, #-self.root_w1,-# self.root_L, nil) + import crypto + var root_salt = crypto.random(16) + + # Compute the PBKDF parameters for SPAKE2+ from root parameters + var passcode = bytes().add(self.root_passcode, 4) + + var tv = crypto.PBKDF2_HMAC_SHA256().derive(passcode, root_salt, self.PBKDF_ITERATIONS, 80) + var w0s = tv[0..39] + var w1s = tv[40..79] + + var root_w0 = crypto.EC_P256().mod(w0s) + var w1 = crypto.EC_P256().mod(w1s) # w1 is temporarily computed then discarded + # self.root_w1 = crypto.EC_P256().mod(w1s) + var root_L = crypto.EC_P256().public_key(w1) + self.start_basic_commissioning(timeout_s, self.PBKDF_ITERATIONS, self.root_discriminator, root_salt, root_w0, #-self.root_w1,-# root_L, nil) end ##################################################################### @@ -254,37 +255,13 @@ class Matter_Device return self.commissioning_open != nil end - ############################################################# - # (internal) Compute the PBKDF parameters for SPAKE2+ from root parameters - # - def _compute_pbkdf(passcode_int, iterations, salt) - import crypto - var passcode = bytes().add(passcode_int, 4) - - var tv = crypto.PBKDF2_HMAC_SHA256().derive(passcode, salt, iterations, 80) - var w0s = tv[0..39] - var w1s = tv[40..79] - - self.root_w0 = crypto.EC_P256().mod(w0s) - var w1 = crypto.EC_P256().mod(w1s) # w1 is temporarily computed then discarded - # self.root_w1 = crypto.EC_P256().mod(w1s) - self.root_L = crypto.EC_P256().public_key(w1) - - # log("MTR: ******************************", 4) - # log("MTR: salt = " + self.root_salt.tohex(), 4) - # log("MTR: passcode_hex = " + passcode.tohex(), 4) - # log("MTR: w0 = " + self.root_w0.tohex(), 4) - # log("MTR: L = " + self.root_L.tohex(), 4) - # log("MTR: ******************************", 4) - end - ############################################################# # Compute QR Code content - can be done only for root PASE def compute_qrcode_content() var raw = bytes().resize(11) # we don't use TLV Data so it's only 88 bits or 11 bytes # version is `000` dont touch - raw.setbits(3, 16, self.vendorid) - raw.setbits(19, 16, self.productid) + raw.setbits(3, 16, self.VENDOR_ID) + raw.setbits(19, 16, self.PRODUCT_ID) # custom flow = 0 (offset=35, len=2) raw.setbits(37, 8, 0x04) # already on IP network raw.setbits(45, 12, self.root_discriminator & 0xFFF) @@ -452,10 +429,6 @@ class Matter_Device import mdns self.stop_basic_commissioning() # close all PASE commissioning information - # clear any PBKDF information to free memory - self.root_w0 = nil - # self.root_w1 = nil - self.root_L = nil self.mdns_announce_op_discovery(fabric) end @@ -878,7 +851,7 @@ class Matter_Device import crypto var services = { - "VP":str(self.vendorid) + "+" + str(self.productid), + "VP": f"{self.VENDOR_ID}+{self.PRODUCT_ID}", "D": self.commissioning_discriminator, "CM":1, # requires passcode "T":0, # no support for TCP @@ -904,7 +877,7 @@ class Matter_Device subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) - subtype = "_V" + str(self.vendorid) + subtype = "_V" + str(self.VENDOR_ID) log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) subtype = "_CM1" @@ -926,7 +899,7 @@ class Matter_Device subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) - subtype = "_V" + str(self.vendorid) + subtype = "_V" + str(self.VENDOR_ID) log("MTR: adding subtype: "+subtype, 3) mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) subtype = "_CM1" diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 3cdb3e7ed..b38919383 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -20,52 +20,44 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(read_request_start_pull), - /* K4 */ be_nested_str_weak(ReadRequestMessage), - /* K5 */ be_nested_str_weak(from_TLV), - /* K6 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K7 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), - /* K8 */ be_nested_str_weak(send_queue), - /* K9 */ be_nested_str_weak(push), - /* K10 */ be_nested_str_weak(IM_ReportData_Pull), + /* K1 */ be_nested_str_weak(ReadRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K4 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K5 */ be_nested_str_weak(send_queue), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(IM_ReportData_Pull), }), be_str_weak(process_read_request_pull), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ + ( &(const binstruction[25]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0xB80E0000, // 0005 GETNGBL R3 K0 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0705, // 0008 GETMET R3 R3 K5 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C100106, // 000B GETMET R4 R0 K6 - 0x5C180600, // 000C MOVE R6 R3 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x7C100600, // 000E CALL R4 3 - 0x8C140107, // 000F GETMET R5 R0 K7 - 0x5C1C0600, // 0010 MOVE R7 R3 - 0x5C200200, // 0011 MOVE R8 R1 - 0x7C140600, // 0012 CALL R5 3 - 0x88180108, // 0013 GETMBR R6 R0 K8 - 0x8C180D09, // 0014 GETMET R6 R6 K9 - 0xB8220000, // 0015 GETNGBL R8 K0 - 0x8C20110A, // 0016 GETMET R8 R8 K10 - 0x5C280200, // 0017 MOVE R10 R1 - 0x5C2C0800, // 0018 MOVE R11 R4 - 0x5C300A00, // 0019 MOVE R12 R5 - 0x7C200800, // 001A CALL R8 4 - 0x7C180400, // 001B CALL R6 2 - 0x50180200, // 001C LDBOOL R6 1 0 - 0x80040C00, // 001D RET 1 R6 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x8C100103, // 0006 GETMET R4 R0 K3 + 0x5C180600, // 0007 MOVE R6 R3 + 0x5C1C0200, // 0008 MOVE R7 R1 + 0x7C100600, // 0009 CALL R4 3 + 0x8C140104, // 000A GETMET R5 R0 K4 + 0x5C1C0600, // 000B MOVE R7 R3 + 0x5C200200, // 000C MOVE R8 R1 + 0x7C140600, // 000D CALL R5 3 + 0x88180105, // 000E GETMBR R6 R0 K5 + 0x8C180D06, // 000F GETMET R6 R6 K6 + 0xB8220000, // 0010 GETNGBL R8 K0 + 0x8C201107, // 0011 GETMET R8 R8 K7 + 0x5C280200, // 0012 MOVE R10 R1 + 0x5C2C0800, // 0013 MOVE R11 R4 + 0x5C300A00, // 0014 MOVE R12 R5 + 0x7C200800, // 0015 CALL R8 4 + 0x7C180400, // 0016 CALL R6 2 + 0x50180200, // 0017 LDBOOL R6 1 0 + 0x80040C00, // 0018 RET 1 R6 }) ) ); @@ -131,287 +123,274 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[44]) { /* constants */ + ( &(const bvalue[41]) { /* constants */ /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(invoke_request_start), - /* K4 */ be_nested_str_weak(Path), - /* K5 */ be_nested_str_weak(msg), - /* K6 */ be_nested_str_weak(InvokeRequestMessage), - /* K7 */ be_nested_str_weak(from_TLV), - /* K8 */ be_nested_str_weak(invoke_requests), - /* K9 */ be_nested_str_weak(InvokeResponseMessage), - /* K10 */ be_nested_str_weak(suppress_response), - /* K11 */ be_nested_str_weak(invoke_responses), - /* K12 */ be_nested_str_weak(endpoint), - /* K13 */ be_nested_str_weak(command_path), - /* K14 */ be_nested_str_weak(cluster), - /* K15 */ be_nested_str_weak(command), - /* K16 */ be_nested_str_weak(status), - /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K18 */ be_nested_str_weak(get_command_name), - /* K19 */ be_nested_str_weak(device), - /* K20 */ be_nested_str_weak(invoke_request), - /* K21 */ be_nested_str_weak(session), - /* K22 */ be_nested_str_weak(command_fields), - /* K23 */ be_nested_str_weak(COMMAND_X20DONE), - /* K24 */ be_nested_str_weak(_X28), - /* K25 */ be_nested_str_weak(_X29_X20), - /* K26 */ be_nested_str_weak(), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K28 */ be_nested_str_weak(local_session_id), - /* K29 */ be_const_int(3), - /* K30 */ be_nested_str_weak(SUCCESS), - /* K31 */ be_nested_str_weak(invokeresponse2raw), - /* K32 */ be_nested_str_weak(push), - /* K33 */ be_nested_str_weak(tasmota), - /* K34 */ be_nested_str_weak(loglevel), - /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K36 */ be_nested_str_weak(exchange_id), - /* K37 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K38 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K39 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K40 */ be_nested_str_weak(stop_iteration), - /* K41 */ be_const_int(0), - /* K42 */ be_nested_str_weak(send_queue), - /* K43 */ be_nested_str_weak(IM_InvokeResponse), + /* K1 */ be_nested_str_weak(Path), + /* K2 */ be_nested_str_weak(msg), + /* K3 */ be_nested_str_weak(InvokeRequestMessage), + /* K4 */ be_nested_str_weak(from_TLV), + /* K5 */ be_nested_str_weak(invoke_requests), + /* K6 */ be_nested_str_weak(InvokeResponseMessage), + /* K7 */ be_nested_str_weak(suppress_response), + /* K8 */ be_nested_str_weak(invoke_responses), + /* K9 */ be_nested_str_weak(endpoint), + /* K10 */ be_nested_str_weak(command_path), + /* K11 */ be_nested_str_weak(cluster), + /* K12 */ be_nested_str_weak(command), + /* K13 */ be_nested_str_weak(status), + /* K14 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K15 */ be_nested_str_weak(get_command_name), + /* K16 */ be_nested_str_weak(device), + /* K17 */ be_nested_str_weak(invoke_request), + /* K18 */ be_nested_str_weak(session), + /* K19 */ be_nested_str_weak(command_fields), + /* K20 */ be_nested_str_weak(log), + /* K21 */ be_nested_str_weak(_X28), + /* K22 */ be_nested_str_weak(_X29_X20), + /* K23 */ be_nested_str_weak(), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K25 */ be_nested_str_weak(local_session_id), + /* K26 */ be_const_int(3), + /* K27 */ be_nested_str_weak(SUCCESS), + /* K28 */ be_nested_str_weak(invokeresponse2raw), + /* K29 */ be_nested_str_weak(push), + /* K30 */ be_nested_str_weak(tasmota), + /* K31 */ be_nested_str_weak(loglevel), + /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), + /* K33 */ be_nested_str_weak(exchange_id), + /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K36 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_const_int(0), + /* K39 */ be_nested_str_weak(send_queue), + /* K40 */ be_nested_str_weak(IM_InvokeResponse), }), be_str_weak(process_invoke_request), &be_const_str_solidified, - ( &(const binstruction[232]) { /* code */ + ( &(const binstruction[222]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0xB80E0000, // 0005 GETNGBL R3 K0 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 - 0x7C0C0200, // 0007 CALL R3 1 - 0x900E0A01, // 0008 SETMBR R3 K5 R1 - 0xB8120000, // 0009 GETNGBL R4 K0 - 0x8C100906, // 000A GETMET R4 R4 K6 - 0x7C100200, // 000B CALL R4 1 - 0x8C100907, // 000C GETMET R4 R4 K7 - 0x5C180400, // 000D MOVE R6 R2 - 0x7C100400, // 000E CALL R4 2 - 0x88140908, // 000F GETMBR R5 R4 K8 - 0x4C180000, // 0010 LDNIL R6 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x781600D3, // 0012 JMPF R5 #00E7 - 0xB8160000, // 0013 GETNGBL R5 K0 - 0x8C140B09, // 0014 GETMET R5 R5 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x50180000, // 0016 LDBOOL R6 0 0 - 0x90161406, // 0017 SETMBR R5 K10 R6 - 0x60180012, // 0018 GETGBL R6 G18 - 0x7C180000, // 0019 CALL R6 0 - 0x90161606, // 001A SETMBR R5 K11 R6 - 0x60180010, // 001B GETGBL R6 G16 - 0x881C0908, // 001C GETMBR R7 R4 K8 - 0x7C180200, // 001D CALL R6 1 - 0xA80200B2, // 001E EXBLK 0 #00D2 - 0x5C1C0C00, // 001F MOVE R7 R6 - 0x7C1C0000, // 0020 CALL R7 0 - 0x88200F0D, // 0021 GETMBR R8 R7 K13 - 0x8820110C, // 0022 GETMBR R8 R8 K12 - 0x900E1808, // 0023 SETMBR R3 K12 R8 - 0x88200F0D, // 0024 GETMBR R8 R7 K13 - 0x8820110E, // 0025 GETMBR R8 R8 K14 - 0x900E1C08, // 0026 SETMBR R3 K14 R8 - 0x88200F0D, // 0027 GETMBR R8 R7 K13 - 0x8820110F, // 0028 GETMBR R8 R8 K15 - 0x900E1E08, // 0029 SETMBR R3 K15 R8 - 0xB8220000, // 002A GETNGBL R8 K0 - 0x88201111, // 002B GETMBR R8 R8 K17 - 0x900E2008, // 002C SETMBR R3 K16 R8 - 0xB8220000, // 002D GETNGBL R8 K0 - 0x8C201112, // 002E GETMET R8 R8 K18 - 0x8828070E, // 002F GETMBR R10 R3 K14 - 0x882C070F, // 0030 GETMBR R11 R3 K15 - 0x7C200600, // 0031 CALL R8 3 - 0x60240008, // 0032 GETGBL R9 G8 - 0x5C280600, // 0033 MOVE R10 R3 - 0x7C240200, // 0034 CALL R9 1 - 0x88280113, // 0035 GETMBR R10 R0 K19 - 0x8C281514, // 0036 GETMET R10 R10 K20 - 0x88300315, // 0037 GETMBR R12 R1 K21 - 0x88340F16, // 0038 GETMBR R13 R7 K22 - 0x5C380600, // 0039 MOVE R14 R3 - 0x7C280800, // 003A CALL R10 4 - 0xB82E0000, // 003B GETNGBL R11 K0 - 0x882C1701, // 003C GETMBR R11 R11 K1 - 0x8C2C1702, // 003D GETMET R11 R11 K2 - 0x58340017, // 003E LDCONST R13 K23 - 0x7C2C0400, // 003F CALL R11 2 - 0x882C0702, // 0040 GETMBR R11 R3 K2 - 0x4C300000, // 0041 LDNIL R12 - 0x202C160C, // 0042 NE R11 R11 R12 - 0x782E0005, // 0043 JMPF R11 #004A - 0x602C0008, // 0044 GETGBL R11 G8 - 0x88300702, // 0045 GETMBR R12 R3 K2 - 0x7C2C0200, // 0046 CALL R11 1 - 0x002E300B, // 0047 ADD R11 K24 R11 - 0x002C1719, // 0048 ADD R11 R11 K25 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x900E0401, // 0003 SETMBR R3 K2 R1 + 0xB8120000, // 0004 GETNGBL R4 K0 + 0x8C100903, // 0005 GETMET R4 R4 K3 + 0x7C100200, // 0006 CALL R4 1 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x5C180400, // 0008 MOVE R6 R2 + 0x7C100400, // 0009 CALL R4 2 + 0x88140905, // 000A GETMBR R5 R4 K5 + 0x4C180000, // 000B LDNIL R6 + 0x20140A06, // 000C NE R5 R5 R6 + 0x781600CE, // 000D JMPF R5 #00DD + 0xB8160000, // 000E GETNGBL R5 K0 + 0x8C140B06, // 000F GETMET R5 R5 K6 + 0x7C140200, // 0010 CALL R5 1 + 0x50180000, // 0011 LDBOOL R6 0 0 + 0x90160E06, // 0012 SETMBR R5 K7 R6 + 0x60180012, // 0013 GETGBL R6 G18 + 0x7C180000, // 0014 CALL R6 0 + 0x90161006, // 0015 SETMBR R5 K8 R6 + 0x60180010, // 0016 GETGBL R6 G16 + 0x881C0905, // 0017 GETMBR R7 R4 K5 + 0x7C180200, // 0018 CALL R6 1 + 0xA80200AD, // 0019 EXBLK 0 #00C8 + 0x5C1C0C00, // 001A MOVE R7 R6 + 0x7C1C0000, // 001B CALL R7 0 + 0x88200F0A, // 001C GETMBR R8 R7 K10 + 0x88201109, // 001D GETMBR R8 R8 K9 + 0x900E1208, // 001E SETMBR R3 K9 R8 + 0x88200F0A, // 001F GETMBR R8 R7 K10 + 0x8820110B, // 0020 GETMBR R8 R8 K11 + 0x900E1608, // 0021 SETMBR R3 K11 R8 + 0x88200F0A, // 0022 GETMBR R8 R7 K10 + 0x8820110C, // 0023 GETMBR R8 R8 K12 + 0x900E1808, // 0024 SETMBR R3 K12 R8 + 0xB8220000, // 0025 GETNGBL R8 K0 + 0x8820110E, // 0026 GETMBR R8 R8 K14 + 0x900E1A08, // 0027 SETMBR R3 K13 R8 + 0xB8220000, // 0028 GETNGBL R8 K0 + 0x8C20110F, // 0029 GETMET R8 R8 K15 + 0x8828070B, // 002A GETMBR R10 R3 K11 + 0x882C070C, // 002B GETMBR R11 R3 K12 + 0x7C200600, // 002C CALL R8 3 + 0x60240008, // 002D GETGBL R9 G8 + 0x5C280600, // 002E MOVE R10 R3 + 0x7C240200, // 002F CALL R9 1 + 0x88280110, // 0030 GETMBR R10 R0 K16 + 0x8C281511, // 0031 GETMET R10 R10 K17 + 0x88300312, // 0032 GETMBR R12 R1 K18 + 0x88340F13, // 0033 GETMBR R13 R7 K19 + 0x5C380600, // 0034 MOVE R14 R3 + 0x7C280800, // 0035 CALL R10 4 + 0x882C0714, // 0036 GETMBR R11 R3 K20 + 0x4C300000, // 0037 LDNIL R12 + 0x202C160C, // 0038 NE R11 R11 R12 + 0x782E0005, // 0039 JMPF R11 #0040 + 0x602C0008, // 003A GETGBL R11 G8 + 0x88300714, // 003B GETMBR R12 R3 K20 + 0x7C2C0200, // 003C CALL R11 1 + 0x002E2A0B, // 003D ADD R11 K21 R11 + 0x002C1716, // 003E ADD R11 R11 K22 + 0x70020000, // 003F JMP #0041 + 0x582C0017, // 0040 LDCONST R11 K23 + 0xB8322800, // 0041 GETNGBL R12 K20 + 0x60340018, // 0042 GETGBL R13 G24 + 0x58380018, // 0043 LDCONST R14 K24 + 0x883C0312, // 0044 GETMBR R15 R1 K18 + 0x883C1F19, // 0045 GETMBR R15 R15 K25 + 0x5C401200, // 0046 MOVE R16 R9 + 0x78220001, // 0047 JMPF R8 #004A + 0x5C441000, // 0048 MOVE R17 R8 0x70020000, // 0049 JMP #004B - 0x582C001A, // 004A LDCONST R11 K26 - 0xB8320400, // 004B GETNGBL R12 K2 - 0x60340018, // 004C GETGBL R13 G24 - 0x5838001B, // 004D LDCONST R14 K27 - 0x883C0315, // 004E GETMBR R15 R1 K21 - 0x883C1F1C, // 004F GETMBR R15 R15 K28 - 0x5C401200, // 0050 MOVE R16 R9 - 0x78220001, // 0051 JMPF R8 #0054 - 0x5C441000, // 0052 MOVE R17 R8 - 0x70020000, // 0053 JMP #0055 - 0x5844001A, // 0054 LDCONST R17 K26 - 0x5C481600, // 0055 MOVE R18 R11 - 0x7C340A00, // 0056 CALL R13 5 - 0x5838001D, // 0057 LDCONST R14 K29 - 0x7C300400, // 0058 CALL R12 2 - 0x4C300000, // 0059 LDNIL R12 - 0x900E040C, // 005A SETMBR R3 K2 R12 - 0x60300015, // 005B GETGBL R12 G21 - 0x5436001F, // 005C LDINT R13 32 - 0x7C300200, // 005D CALL R12 1 - 0x50340200, // 005E LDBOOL R13 1 0 - 0x1C34140D, // 005F EQ R13 R10 R13 - 0x74360004, // 0060 JMPT R13 #0066 - 0x88340710, // 0061 GETMBR R13 R3 K16 - 0xB83A0000, // 0062 GETNGBL R14 K0 - 0x88381D1E, // 0063 GETMBR R14 R14 K30 - 0x1C341A0E, // 0064 EQ R13 R13 R14 - 0x7836001A, // 0065 JMPF R13 #0081 - 0xB8360000, // 0066 GETNGBL R13 K0 - 0x88341B1E, // 0067 GETMBR R13 R13 K30 - 0x900E200D, // 0068 SETMBR R3 K16 R13 - 0x8C34011F, // 0069 GETMET R13 R0 K31 - 0x5C3C1800, // 006A MOVE R15 R12 - 0x5C400600, // 006B MOVE R16 R3 - 0x4C440000, // 006C LDNIL R17 - 0x7C340800, // 006D CALL R13 4 - 0x88340B0B, // 006E GETMBR R13 R5 K11 - 0x8C341B20, // 006F GETMET R13 R13 K32 - 0x5C3C1800, // 0070 MOVE R15 R12 - 0x7C340400, // 0071 CALL R13 2 - 0xB8364200, // 0072 GETNGBL R13 K33 - 0x8C341B22, // 0073 GETMET R13 R13 K34 - 0x583C001D, // 0074 LDCONST R15 K29 + 0x58440017, // 004A LDCONST R17 K23 + 0x5C481600, // 004B MOVE R18 R11 + 0x7C340A00, // 004C CALL R13 5 + 0x5838001A, // 004D LDCONST R14 K26 + 0x7C300400, // 004E CALL R12 2 + 0x4C300000, // 004F LDNIL R12 + 0x900E280C, // 0050 SETMBR R3 K20 R12 + 0x60300015, // 0051 GETGBL R12 G21 + 0x5436001F, // 0052 LDINT R13 32 + 0x7C300200, // 0053 CALL R12 1 + 0x50340200, // 0054 LDBOOL R13 1 0 + 0x1C34140D, // 0055 EQ R13 R10 R13 + 0x74360004, // 0056 JMPT R13 #005C + 0x8834070D, // 0057 GETMBR R13 R3 K13 + 0xB83A0000, // 0058 GETNGBL R14 K0 + 0x88381D1B, // 0059 GETMBR R14 R14 K27 + 0x1C341A0E, // 005A EQ R13 R13 R14 + 0x7836001A, // 005B JMPF R13 #0077 + 0xB8360000, // 005C GETNGBL R13 K0 + 0x88341B1B, // 005D GETMBR R13 R13 K27 + 0x900E1A0D, // 005E SETMBR R3 K13 R13 + 0x8C34011C, // 005F GETMET R13 R0 K28 + 0x5C3C1800, // 0060 MOVE R15 R12 + 0x5C400600, // 0061 MOVE R16 R3 + 0x4C440000, // 0062 LDNIL R17 + 0x7C340800, // 0063 CALL R13 4 + 0x88340B08, // 0064 GETMBR R13 R5 K8 + 0x8C341B1D, // 0065 GETMET R13 R13 K29 + 0x5C3C1800, // 0066 MOVE R15 R12 + 0x7C340400, // 0067 CALL R13 2 + 0xB8363C00, // 0068 GETNGBL R13 K30 + 0x8C341B1F, // 0069 GETMET R13 R13 K31 + 0x583C001A, // 006A LDCONST R15 K26 + 0x7C340400, // 006B CALL R13 2 + 0x78360008, // 006C JMPF R13 #0076 + 0xB8362800, // 006D GETNGBL R13 K20 + 0x60380018, // 006E GETGBL R14 G24 + 0x583C0020, // 006F LDCONST R15 K32 + 0x88400312, // 0070 GETMBR R16 R1 K18 + 0x88402119, // 0071 GETMBR R16 R16 K25 + 0x88440321, // 0072 GETMBR R17 R1 K33 + 0x7C380600, // 0073 CALL R14 3 + 0x583C001A, // 0074 LDCONST R15 K26 0x7C340400, // 0075 CALL R13 2 - 0x78360008, // 0076 JMPF R13 #0080 - 0xB8360400, // 0077 GETNGBL R13 K2 - 0x60380018, // 0078 GETGBL R14 G24 - 0x583C0023, // 0079 LDCONST R15 K35 - 0x88400315, // 007A GETMBR R16 R1 K21 - 0x8840211C, // 007B GETMBR R16 R16 K28 - 0x88440324, // 007C GETMBR R17 R1 K36 - 0x7C380600, // 007D CALL R14 3 - 0x583C001D, // 007E LDCONST R15 K29 - 0x7C340400, // 007F CALL R13 2 - 0x7002004F, // 0080 JMP #00D1 - 0x4C340000, // 0081 LDNIL R13 - 0x2034140D, // 0082 NE R13 R10 R13 - 0x78360021, // 0083 JMPF R13 #00A6 - 0x8C34011F, // 0084 GETMET R13 R0 K31 - 0x5C3C1800, // 0085 MOVE R15 R12 - 0x5C400600, // 0086 MOVE R16 R3 - 0x5C441400, // 0087 MOVE R17 R10 - 0x7C340800, // 0088 CALL R13 4 - 0x88340B0B, // 0089 GETMBR R13 R5 K11 - 0x8C341B20, // 008A GETMET R13 R13 K32 - 0x5C3C1800, // 008B MOVE R15 R12 - 0x7C340400, // 008C CALL R13 2 - 0xB8360000, // 008D GETNGBL R13 K0 - 0x8C341B12, // 008E GETMET R13 R13 K18 - 0x883C070E, // 008F GETMBR R15 R3 K14 - 0x8840070F, // 0090 GETMBR R16 R3 K15 - 0x7C340600, // 0091 CALL R13 3 - 0x5C201A00, // 0092 MOVE R8 R13 - 0x5C341000, // 0093 MOVE R13 R8 - 0x74360000, // 0094 JMPT R13 #0096 - 0x5820001A, // 0095 LDCONST R8 K26 - 0xB8364200, // 0096 GETNGBL R13 K33 - 0x8C341B22, // 0097 GETMET R13 R13 K34 - 0x583C001D, // 0098 LDCONST R15 K29 - 0x7C340400, // 0099 CALL R13 2 - 0x78360009, // 009A JMPF R13 #00A5 - 0xB8360400, // 009B GETNGBL R13 K2 - 0x60380018, // 009C GETGBL R14 G24 - 0x583C0025, // 009D LDCONST R15 K37 - 0x88400315, // 009E GETMBR R16 R1 K21 - 0x8840211C, // 009F GETMBR R16 R16 K28 - 0x5C440600, // 00A0 MOVE R17 R3 - 0x5C481000, // 00A1 MOVE R18 R8 - 0x7C380800, // 00A2 CALL R14 4 - 0x583C001D, // 00A3 LDCONST R15 K29 - 0x7C340400, // 00A4 CALL R13 2 - 0x7002002A, // 00A5 JMP #00D1 - 0x88340710, // 00A6 GETMBR R13 R3 K16 - 0x4C380000, // 00A7 LDNIL R14 - 0x20341A0E, // 00A8 NE R13 R13 R14 - 0x78360018, // 00A9 JMPF R13 #00C3 - 0x8C34011F, // 00AA GETMET R13 R0 K31 - 0x5C3C1800, // 00AB MOVE R15 R12 - 0x5C400600, // 00AC MOVE R16 R3 - 0x4C440000, // 00AD LDNIL R17 - 0x7C340800, // 00AE CALL R13 4 - 0x88340B0B, // 00AF GETMBR R13 R5 K11 - 0x8C341B20, // 00B0 GETMET R13 R13 K32 - 0x5C3C1800, // 00B1 MOVE R15 R12 - 0x7C340400, // 00B2 CALL R13 2 - 0xB8364200, // 00B3 GETNGBL R13 K33 - 0x8C341B22, // 00B4 GETMET R13 R13 K34 - 0x583C001D, // 00B5 LDCONST R15 K29 - 0x7C340400, // 00B6 CALL R13 2 - 0x78360009, // 00B7 JMPF R13 #00C2 - 0xB8360400, // 00B8 GETNGBL R13 K2 - 0x60380018, // 00B9 GETGBL R14 G24 - 0x583C0026, // 00BA LDCONST R15 K38 - 0x88400315, // 00BB GETMBR R16 R1 K21 - 0x8840211C, // 00BC GETMBR R16 R16 K28 - 0x88440710, // 00BD GETMBR R17 R3 K16 - 0x88480324, // 00BE GETMBR R18 R1 K36 - 0x7C380800, // 00BF CALL R14 4 - 0x583C001D, // 00C0 LDCONST R15 K29 - 0x7C340400, // 00C1 CALL R13 2 - 0x7002000D, // 00C2 JMP #00D1 - 0xB8364200, // 00C3 GETNGBL R13 K33 - 0x8C341B22, // 00C4 GETMET R13 R13 K34 - 0x583C001D, // 00C5 LDCONST R15 K29 + 0x7002004F, // 0076 JMP #00C7 + 0x4C340000, // 0077 LDNIL R13 + 0x2034140D, // 0078 NE R13 R10 R13 + 0x78360021, // 0079 JMPF R13 #009C + 0x8C34011C, // 007A GETMET R13 R0 K28 + 0x5C3C1800, // 007B MOVE R15 R12 + 0x5C400600, // 007C MOVE R16 R3 + 0x5C441400, // 007D MOVE R17 R10 + 0x7C340800, // 007E CALL R13 4 + 0x88340B08, // 007F GETMBR R13 R5 K8 + 0x8C341B1D, // 0080 GETMET R13 R13 K29 + 0x5C3C1800, // 0081 MOVE R15 R12 + 0x7C340400, // 0082 CALL R13 2 + 0xB8360000, // 0083 GETNGBL R13 K0 + 0x8C341B0F, // 0084 GETMET R13 R13 K15 + 0x883C070B, // 0085 GETMBR R15 R3 K11 + 0x8840070C, // 0086 GETMBR R16 R3 K12 + 0x7C340600, // 0087 CALL R13 3 + 0x5C201A00, // 0088 MOVE R8 R13 + 0x5C341000, // 0089 MOVE R13 R8 + 0x74360000, // 008A JMPT R13 #008C + 0x58200017, // 008B LDCONST R8 K23 + 0xB8363C00, // 008C GETNGBL R13 K30 + 0x8C341B1F, // 008D GETMET R13 R13 K31 + 0x583C001A, // 008E LDCONST R15 K26 + 0x7C340400, // 008F CALL R13 2 + 0x78360009, // 0090 JMPF R13 #009B + 0xB8362800, // 0091 GETNGBL R13 K20 + 0x60380018, // 0092 GETGBL R14 G24 + 0x583C0022, // 0093 LDCONST R15 K34 + 0x88400312, // 0094 GETMBR R16 R1 K18 + 0x88402119, // 0095 GETMBR R16 R16 K25 + 0x5C440600, // 0096 MOVE R17 R3 + 0x5C481000, // 0097 MOVE R18 R8 + 0x7C380800, // 0098 CALL R14 4 + 0x583C001A, // 0099 LDCONST R15 K26 + 0x7C340400, // 009A CALL R13 2 + 0x7002002A, // 009B JMP #00C7 + 0x8834070D, // 009C GETMBR R13 R3 K13 + 0x4C380000, // 009D LDNIL R14 + 0x20341A0E, // 009E NE R13 R13 R14 + 0x78360018, // 009F JMPF R13 #00B9 + 0x8C34011C, // 00A0 GETMET R13 R0 K28 + 0x5C3C1800, // 00A1 MOVE R15 R12 + 0x5C400600, // 00A2 MOVE R16 R3 + 0x4C440000, // 00A3 LDNIL R17 + 0x7C340800, // 00A4 CALL R13 4 + 0x88340B08, // 00A5 GETMBR R13 R5 K8 + 0x8C341B1D, // 00A6 GETMET R13 R13 K29 + 0x5C3C1800, // 00A7 MOVE R15 R12 + 0x7C340400, // 00A8 CALL R13 2 + 0xB8363C00, // 00A9 GETNGBL R13 K30 + 0x8C341B1F, // 00AA GETMET R13 R13 K31 + 0x583C001A, // 00AB LDCONST R15 K26 + 0x7C340400, // 00AC CALL R13 2 + 0x78360009, // 00AD JMPF R13 #00B8 + 0xB8362800, // 00AE GETNGBL R13 K20 + 0x60380018, // 00AF GETGBL R14 G24 + 0x583C0023, // 00B0 LDCONST R15 K35 + 0x88400312, // 00B1 GETMBR R16 R1 K18 + 0x88402119, // 00B2 GETMBR R16 R16 K25 + 0x8844070D, // 00B3 GETMBR R17 R3 K13 + 0x88480321, // 00B4 GETMBR R18 R1 K33 + 0x7C380800, // 00B5 CALL R14 4 + 0x583C001A, // 00B6 LDCONST R15 K26 + 0x7C340400, // 00B7 CALL R13 2 + 0x7002000D, // 00B8 JMP #00C7 + 0xB8363C00, // 00B9 GETNGBL R13 K30 + 0x8C341B1F, // 00BA GETMET R13 R13 K31 + 0x583C001A, // 00BB LDCONST R15 K26 + 0x7C340400, // 00BC CALL R13 2 + 0x78360008, // 00BD JMPF R13 #00C7 + 0xB8362800, // 00BE GETNGBL R13 K20 + 0x60380018, // 00BF GETGBL R14 G24 + 0x583C0024, // 00C0 LDCONST R15 K36 + 0x88400312, // 00C1 GETMBR R16 R1 K18 + 0x88402119, // 00C2 GETMBR R16 R16 K25 + 0x88440321, // 00C3 GETMBR R17 R1 K33 + 0x7C380600, // 00C4 CALL R14 3 + 0x583C001A, // 00C5 LDCONST R15 K26 0x7C340400, // 00C6 CALL R13 2 - 0x78360008, // 00C7 JMPF R13 #00D1 - 0xB8360400, // 00C8 GETNGBL R13 K2 - 0x60380018, // 00C9 GETGBL R14 G24 - 0x583C0027, // 00CA LDCONST R15 K39 - 0x88400315, // 00CB GETMBR R16 R1 K21 - 0x8840211C, // 00CC GETMBR R16 R16 K28 - 0x88440324, // 00CD GETMBR R17 R1 K36 - 0x7C380600, // 00CE CALL R14 3 - 0x583C001D, // 00CF LDCONST R15 K29 - 0x7C340400, // 00D0 CALL R13 2 - 0x7001FF4C, // 00D1 JMP #001F - 0x58180028, // 00D2 LDCONST R6 K40 - 0xAC180200, // 00D3 CATCH R6 1 0 - 0xB0080000, // 00D4 RAISE 2 R0 R0 - 0x6018000C, // 00D5 GETGBL R6 G12 - 0x881C0B0B, // 00D6 GETMBR R7 R5 K11 - 0x7C180200, // 00D7 CALL R6 1 - 0x24180D29, // 00D8 GT R6 R6 K41 - 0x781A0008, // 00D9 JMPF R6 #00E3 - 0x8818012A, // 00DA GETMBR R6 R0 K42 - 0x8C180D20, // 00DB GETMET R6 R6 K32 - 0xB8220000, // 00DC GETNGBL R8 K0 - 0x8C20112B, // 00DD GETMET R8 R8 K43 - 0x5C280200, // 00DE MOVE R10 R1 - 0x5C2C0A00, // 00DF MOVE R11 R5 - 0x7C200600, // 00E0 CALL R8 3 - 0x7C180400, // 00E1 CALL R6 2 - 0x70020001, // 00E2 JMP #00E5 - 0x50180000, // 00E3 LDBOOL R6 0 0 - 0x80040C00, // 00E4 RET 1 R6 - 0x50180200, // 00E5 LDBOOL R6 1 0 - 0x80040C00, // 00E6 RET 1 R6 - 0x80000000, // 00E7 RET 0 + 0x7001FF51, // 00C7 JMP #001A + 0x58180025, // 00C8 LDCONST R6 K37 + 0xAC180200, // 00C9 CATCH R6 1 0 + 0xB0080000, // 00CA RAISE 2 R0 R0 + 0x6018000C, // 00CB GETGBL R6 G12 + 0x881C0B08, // 00CC GETMBR R7 R5 K8 + 0x7C180200, // 00CD CALL R6 1 + 0x24180D26, // 00CE GT R6 R6 K38 + 0x781A0008, // 00CF JMPF R6 #00D9 + 0x88180127, // 00D0 GETMBR R6 R0 K39 + 0x8C180D1D, // 00D1 GETMET R6 R6 K29 + 0xB8220000, // 00D2 GETNGBL R8 K0 + 0x8C201128, // 00D3 GETMET R8 R8 K40 + 0x5C280200, // 00D4 MOVE R10 R1 + 0x5C2C0A00, // 00D5 MOVE R11 R5 + 0x7C200600, // 00D6 CALL R8 3 + 0x7C180400, // 00D7 CALL R6 2 + 0x70020001, // 00D8 JMP #00DB + 0x50180000, // 00D9 LDBOOL R6 0 0 + 0x80040C00, // 00DA RET 1 R6 + 0x50180200, // 00DB LDBOOL R6 1 0 + 0x80040C00, // 00DC RET 1 R6 + 0x80000000, // 00DD RET 0 }) ) ); @@ -1063,256 +1042,237 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[42]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(invoke_request_solo_start), - /* K4 */ be_nested_str_weak(msg), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K7 */ be_nested_str_weak(get_command_name), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(command), - /* K10 */ be_nested_str_weak(device), - /* K11 */ be_nested_str_weak(invoke_request), - /* K12 */ be_nested_str_weak(session), - /* K13 */ be_nested_str_weak(command_fields), - /* K14 */ be_nested_str_weak(COMMAND_X20DONE), - /* K15 */ be_nested_str_weak(_X28), - /* K16 */ be_nested_str_weak(_X29_X20), - /* K17 */ be_nested_str_weak(), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(loglevel), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K22 */ be_nested_str_weak(local_session_id), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_const_int(354943030), - /* K25 */ be_const_int(1), - /* K26 */ be_nested_str_weak(SUCCESS), - /* K27 */ be_nested_str_weak(invokeresponse2raw), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K29 */ be_nested_str_weak(exchange_id), - /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K32 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K33 */ be_const_int(405077761), - /* K34 */ be_nested_str_weak(build_response), - /* K35 */ be_nested_str_weak(message_handler), - /* K36 */ be_nested_str_weak(raw), - /* K37 */ be_nested_str_weak(clear), - /* K38 */ be_nested_str_weak(encode_frame), - /* K39 */ be_nested_str_weak(encrypt), - /* K40 */ be_nested_str_weak(send_response_frame), - /* K41 */ be_nested_str_weak(RESPONSE_X20SENT), + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_str_weak(msg), + /* K1 */ be_nested_str_weak(status), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K4 */ be_nested_str_weak(get_command_name), + /* K5 */ be_nested_str_weak(cluster), + /* K6 */ be_nested_str_weak(command), + /* K7 */ be_nested_str_weak(device), + /* K8 */ be_nested_str_weak(invoke_request), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(command_fields), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(_X28), + /* K13 */ be_nested_str_weak(_X29_X20), + /* K14 */ be_nested_str_weak(), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(loglevel), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K19 */ be_nested_str_weak(local_session_id), + /* K20 */ be_nested_str_weak(add), + /* K21 */ be_const_int(354943030), + /* K22 */ be_const_int(1), + /* K23 */ be_nested_str_weak(SUCCESS), + /* K24 */ be_nested_str_weak(invokeresponse2raw), + /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), + /* K26 */ be_nested_str_weak(exchange_id), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K29 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K30 */ be_const_int(405077761), + /* K31 */ be_nested_str_weak(build_response), + /* K32 */ be_nested_str_weak(message_handler), + /* K33 */ be_nested_str_weak(raw), + /* K34 */ be_nested_str_weak(clear), + /* K35 */ be_nested_str_weak(encode_frame), + /* K36 */ be_nested_str_weak(encrypt), + /* K37 */ be_nested_str_weak(send_response_frame), }), be_str_weak(process_invoke_request_solo), &be_const_str_solidified, - ( &(const binstruction[203]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0x900A0801, // 0005 SETMBR R2 K4 R1 - 0xB80E0000, // 0006 GETNGBL R3 K0 - 0x880C0706, // 0007 GETMBR R3 R3 K6 - 0x900A0A03, // 0008 SETMBR R2 K5 R3 - 0xB80E0000, // 0009 GETNGBL R3 K0 - 0x8C0C0707, // 000A GETMET R3 R3 K7 - 0x88140508, // 000B GETMBR R5 R2 K8 - 0x88180509, // 000C GETMBR R6 R2 K9 - 0x7C0C0600, // 000D CALL R3 3 - 0x60100008, // 000E GETGBL R4 G8 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C100200, // 0010 CALL R4 1 - 0x8814010A, // 0011 GETMBR R5 R0 K10 - 0x8C140B0B, // 0012 GETMET R5 R5 K11 - 0x881C030C, // 0013 GETMBR R7 R1 K12 - 0x8820050D, // 0014 GETMBR R8 R2 K13 - 0x5C240400, // 0015 MOVE R9 R2 - 0x7C140800, // 0016 CALL R5 4 - 0xB81A0000, // 0017 GETNGBL R6 K0 - 0x88180D01, // 0018 GETMBR R6 R6 K1 - 0x8C180D02, // 0019 GETMET R6 R6 K2 - 0x5820000E, // 001A LDCONST R8 K14 - 0x7C180400, // 001B CALL R6 2 - 0x88180502, // 001C GETMBR R6 R2 K2 - 0x4C1C0000, // 001D LDNIL R7 - 0x20180C07, // 001E NE R6 R6 R7 - 0x781A0005, // 001F JMPF R6 #0026 - 0x60180008, // 0020 GETGBL R6 G8 - 0x881C0502, // 0021 GETMBR R7 R2 K2 - 0x7C180200, // 0022 CALL R6 1 - 0x001A1E06, // 0023 ADD R6 K15 R6 - 0x00180D10, // 0024 ADD R6 R6 K16 - 0x70020000, // 0025 JMP #0027 - 0x58180011, // 0026 LDCONST R6 K17 - 0xB81E2400, // 0027 GETNGBL R7 K18 - 0x8C1C0F13, // 0028 GETMET R7 R7 K19 - 0x58240014, // 0029 LDCONST R9 K20 - 0x7C1C0400, // 002A CALL R7 2 - 0x781E000D, // 002B JMPF R7 #003A - 0xB81E0400, // 002C GETNGBL R7 K2 - 0x60200018, // 002D GETGBL R8 G24 - 0x58240015, // 002E LDCONST R9 K21 - 0x8828030C, // 002F GETMBR R10 R1 K12 - 0x88281516, // 0030 GETMBR R10 R10 K22 - 0x5C2C0800, // 0031 MOVE R11 R4 - 0x780E0001, // 0032 JMPF R3 #0035 - 0x5C300600, // 0033 MOVE R12 R3 - 0x70020000, // 0034 JMP #0036 - 0x58300011, // 0035 LDCONST R12 K17 - 0x5C340C00, // 0036 MOVE R13 R6 - 0x7C200A00, // 0037 CALL R8 5 - 0x58240014, // 0038 LDCONST R9 K20 - 0x7C1C0400, // 0039 CALL R7 2 - 0x4C1C0000, // 003A LDNIL R7 - 0x900A0407, // 003B SETMBR R2 K2 R7 - 0x601C0015, // 003C GETGBL R7 G21 - 0x5422002F, // 003D LDINT R8 48 - 0x7C1C0200, // 003E CALL R7 1 - 0x8C200F17, // 003F GETMET R8 R7 K23 - 0x58280018, // 0040 LDCONST R10 K24 - 0x542DFFFB, // 0041 LDINT R11 -4 - 0x7C200600, // 0042 CALL R8 3 - 0x8C200F17, // 0043 GETMET R8 R7 K23 - 0x58280019, // 0044 LDCONST R10 K25 - 0x582C0019, // 0045 LDCONST R11 K25 - 0x7C200600, // 0046 CALL R8 3 - 0x50200200, // 0047 LDBOOL R8 1 0 - 0x1C200A08, // 0048 EQ R8 R5 R8 - 0x74220004, // 0049 JMPT R8 #004F - 0x88200505, // 004A GETMBR R8 R2 K5 - 0xB8260000, // 004B GETNGBL R9 K0 - 0x8824131A, // 004C GETMBR R9 R9 K26 - 0x1C201009, // 004D EQ R8 R8 R9 - 0x78220016, // 004E JMPF R8 #0066 - 0xB8220000, // 004F GETNGBL R8 K0 - 0x8820111A, // 0050 GETMBR R8 R8 K26 - 0x900A0A08, // 0051 SETMBR R2 K5 R8 - 0x8C20011B, // 0052 GETMET R8 R0 K27 - 0x5C280E00, // 0053 MOVE R10 R7 - 0x5C2C0400, // 0054 MOVE R11 R2 - 0x4C300000, // 0055 LDNIL R12 - 0x7C200800, // 0056 CALL R8 4 - 0xB8222400, // 0057 GETNGBL R8 K18 - 0x8C201113, // 0058 GETMET R8 R8 K19 - 0x58280014, // 0059 LDCONST R10 K20 + ( &(const binstruction[188]) { /* code */ + 0x900A0001, // 0000 SETMBR R2 K0 R1 + 0xB80E0400, // 0001 GETNGBL R3 K2 + 0x880C0703, // 0002 GETMBR R3 R3 K3 + 0x900A0203, // 0003 SETMBR R2 K1 R3 + 0xB80E0400, // 0004 GETNGBL R3 K2 + 0x8C0C0704, // 0005 GETMET R3 R3 K4 + 0x88140505, // 0006 GETMBR R5 R2 K5 + 0x88180506, // 0007 GETMBR R6 R2 K6 + 0x7C0C0600, // 0008 CALL R3 3 + 0x60100008, // 0009 GETGBL R4 G8 + 0x5C140400, // 000A MOVE R5 R2 + 0x7C100200, // 000B CALL R4 1 + 0x88140107, // 000C GETMBR R5 R0 K7 + 0x8C140B08, // 000D GETMET R5 R5 K8 + 0x881C0309, // 000E GETMBR R7 R1 K9 + 0x8820050A, // 000F GETMBR R8 R2 K10 + 0x5C240400, // 0010 MOVE R9 R2 + 0x7C140800, // 0011 CALL R5 4 + 0x8818050B, // 0012 GETMBR R6 R2 K11 + 0x4C1C0000, // 0013 LDNIL R7 + 0x20180C07, // 0014 NE R6 R6 R7 + 0x781A0005, // 0015 JMPF R6 #001C + 0x60180008, // 0016 GETGBL R6 G8 + 0x881C050B, // 0017 GETMBR R7 R2 K11 + 0x7C180200, // 0018 CALL R6 1 + 0x001A1806, // 0019 ADD R6 K12 R6 + 0x00180D0D, // 001A ADD R6 R6 K13 + 0x70020000, // 001B JMP #001D + 0x5818000E, // 001C LDCONST R6 K14 + 0xB81E1E00, // 001D GETNGBL R7 K15 + 0x8C1C0F10, // 001E GETMET R7 R7 K16 + 0x58240011, // 001F LDCONST R9 K17 + 0x7C1C0400, // 0020 CALL R7 2 + 0x781E000D, // 0021 JMPF R7 #0030 + 0xB81E1600, // 0022 GETNGBL R7 K11 + 0x60200018, // 0023 GETGBL R8 G24 + 0x58240012, // 0024 LDCONST R9 K18 + 0x88280309, // 0025 GETMBR R10 R1 K9 + 0x88281513, // 0026 GETMBR R10 R10 K19 + 0x5C2C0800, // 0027 MOVE R11 R4 + 0x780E0001, // 0028 JMPF R3 #002B + 0x5C300600, // 0029 MOVE R12 R3 + 0x70020000, // 002A JMP #002C + 0x5830000E, // 002B LDCONST R12 K14 + 0x5C340C00, // 002C MOVE R13 R6 + 0x7C200A00, // 002D CALL R8 5 + 0x58240011, // 002E LDCONST R9 K17 + 0x7C1C0400, // 002F CALL R7 2 + 0x4C1C0000, // 0030 LDNIL R7 + 0x900A1607, // 0031 SETMBR R2 K11 R7 + 0x601C0015, // 0032 GETGBL R7 G21 + 0x5422002F, // 0033 LDINT R8 48 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C200F14, // 0035 GETMET R8 R7 K20 + 0x58280015, // 0036 LDCONST R10 K21 + 0x542DFFFB, // 0037 LDINT R11 -4 + 0x7C200600, // 0038 CALL R8 3 + 0x8C200F14, // 0039 GETMET R8 R7 K20 + 0x58280016, // 003A LDCONST R10 K22 + 0x582C0016, // 003B LDCONST R11 K22 + 0x7C200600, // 003C CALL R8 3 + 0x50200200, // 003D LDBOOL R8 1 0 + 0x1C200A08, // 003E EQ R8 R5 R8 + 0x74220004, // 003F JMPT R8 #0045 + 0x88200501, // 0040 GETMBR R8 R2 K1 + 0xB8260400, // 0041 GETNGBL R9 K2 + 0x88241317, // 0042 GETMBR R9 R9 K23 + 0x1C201009, // 0043 EQ R8 R8 R9 + 0x78220016, // 0044 JMPF R8 #005C + 0xB8220400, // 0045 GETNGBL R8 K2 + 0x88201117, // 0046 GETMBR R8 R8 K23 + 0x900A0208, // 0047 SETMBR R2 K1 R8 + 0x8C200118, // 0048 GETMET R8 R0 K24 + 0x5C280E00, // 0049 MOVE R10 R7 + 0x5C2C0400, // 004A MOVE R11 R2 + 0x4C300000, // 004B LDNIL R12 + 0x7C200800, // 004C CALL R8 4 + 0xB8221E00, // 004D GETNGBL R8 K15 + 0x8C201110, // 004E GETMET R8 R8 K16 + 0x58280011, // 004F LDCONST R10 K17 + 0x7C200400, // 0050 CALL R8 2 + 0x78220008, // 0051 JMPF R8 #005B + 0xB8221600, // 0052 GETNGBL R8 K11 + 0x60240018, // 0053 GETGBL R9 G24 + 0x58280019, // 0054 LDCONST R10 K25 + 0x882C0309, // 0055 GETMBR R11 R1 K9 + 0x882C1713, // 0056 GETMBR R11 R11 K19 + 0x8830031A, // 0057 GETMBR R12 R1 K26 + 0x7C240600, // 0058 CALL R9 3 + 0x58280011, // 0059 LDCONST R10 K17 0x7C200400, // 005A CALL R8 2 - 0x78220008, // 005B JMPF R8 #0065 - 0xB8220400, // 005C GETNGBL R8 K2 - 0x60240018, // 005D GETGBL R9 G24 - 0x5828001C, // 005E LDCONST R10 K28 - 0x882C030C, // 005F GETMBR R11 R1 K12 - 0x882C1716, // 0060 GETMBR R11 R11 K22 - 0x8830031D, // 0061 GETMBR R12 R1 K29 - 0x7C240600, // 0062 CALL R9 3 - 0x58280014, // 0063 LDCONST R10 K20 - 0x7C200400, // 0064 CALL R8 2 - 0x70020043, // 0065 JMP #00AA - 0x4C200000, // 0066 LDNIL R8 - 0x20200A08, // 0067 NE R8 R5 R8 - 0x78220017, // 0068 JMPF R8 #0081 - 0x8C20011B, // 0069 GETMET R8 R0 K27 - 0x5C280E00, // 006A MOVE R10 R7 - 0x5C2C0400, // 006B MOVE R11 R2 - 0x5C300A00, // 006C MOVE R12 R5 - 0x7C200800, // 006D CALL R8 4 - 0x5C200600, // 006E MOVE R8 R3 - 0x74220000, // 006F JMPT R8 #0071 - 0x580C0011, // 0070 LDCONST R3 K17 - 0xB8222400, // 0071 GETNGBL R8 K18 - 0x8C201113, // 0072 GETMET R8 R8 K19 - 0x58280014, // 0073 LDCONST R10 K20 - 0x7C200400, // 0074 CALL R8 2 - 0x78220009, // 0075 JMPF R8 #0080 - 0xB8220400, // 0076 GETNGBL R8 K2 - 0x60240018, // 0077 GETGBL R9 G24 - 0x5828001E, // 0078 LDCONST R10 K30 - 0x882C030C, // 0079 GETMBR R11 R1 K12 - 0x882C1716, // 007A GETMBR R11 R11 K22 - 0x5C300400, // 007B MOVE R12 R2 - 0x5C340600, // 007C MOVE R13 R3 - 0x7C240800, // 007D CALL R9 4 - 0x58280014, // 007E LDCONST R10 K20 - 0x7C200400, // 007F CALL R8 2 - 0x70020028, // 0080 JMP #00AA - 0x88200505, // 0081 GETMBR R8 R2 K5 - 0x4C240000, // 0082 LDNIL R9 - 0x20201009, // 0083 NE R8 R8 R9 - 0x78220014, // 0084 JMPF R8 #009A - 0x8C20011B, // 0085 GETMET R8 R0 K27 - 0x5C280E00, // 0086 MOVE R10 R7 - 0x5C2C0400, // 0087 MOVE R11 R2 - 0x4C300000, // 0088 LDNIL R12 - 0x7C200800, // 0089 CALL R8 4 - 0xB8222400, // 008A GETNGBL R8 K18 - 0x8C201113, // 008B GETMET R8 R8 K19 - 0x58280014, // 008C LDCONST R10 K20 - 0x7C200400, // 008D CALL R8 2 - 0x78220009, // 008E JMPF R8 #0099 - 0xB8220400, // 008F GETNGBL R8 K2 - 0x60240018, // 0090 GETGBL R9 G24 - 0x5828001F, // 0091 LDCONST R10 K31 - 0x882C030C, // 0092 GETMBR R11 R1 K12 - 0x882C1716, // 0093 GETMBR R11 R11 K22 - 0x88300505, // 0094 GETMBR R12 R2 K5 - 0x8834031D, // 0095 GETMBR R13 R1 K29 - 0x7C240800, // 0096 CALL R9 4 - 0x58280014, // 0097 LDCONST R10 K20 - 0x7C200400, // 0098 CALL R8 2 - 0x7002000F, // 0099 JMP #00AA - 0xB8222400, // 009A GETNGBL R8 K18 - 0x8C201113, // 009B GETMET R8 R8 K19 - 0x58280014, // 009C LDCONST R10 K20 + 0x70020043, // 005B JMP #00A0 + 0x4C200000, // 005C LDNIL R8 + 0x20200A08, // 005D NE R8 R5 R8 + 0x78220017, // 005E JMPF R8 #0077 + 0x8C200118, // 005F GETMET R8 R0 K24 + 0x5C280E00, // 0060 MOVE R10 R7 + 0x5C2C0400, // 0061 MOVE R11 R2 + 0x5C300A00, // 0062 MOVE R12 R5 + 0x7C200800, // 0063 CALL R8 4 + 0x5C200600, // 0064 MOVE R8 R3 + 0x74220000, // 0065 JMPT R8 #0067 + 0x580C000E, // 0066 LDCONST R3 K14 + 0xB8221E00, // 0067 GETNGBL R8 K15 + 0x8C201110, // 0068 GETMET R8 R8 K16 + 0x58280011, // 0069 LDCONST R10 K17 + 0x7C200400, // 006A CALL R8 2 + 0x78220009, // 006B JMPF R8 #0076 + 0xB8221600, // 006C GETNGBL R8 K11 + 0x60240018, // 006D GETGBL R9 G24 + 0x5828001B, // 006E LDCONST R10 K27 + 0x882C0309, // 006F GETMBR R11 R1 K9 + 0x882C1713, // 0070 GETMBR R11 R11 K19 + 0x5C300400, // 0071 MOVE R12 R2 + 0x5C340600, // 0072 MOVE R13 R3 + 0x7C240800, // 0073 CALL R9 4 + 0x58280011, // 0074 LDCONST R10 K17 + 0x7C200400, // 0075 CALL R8 2 + 0x70020028, // 0076 JMP #00A0 + 0x88200501, // 0077 GETMBR R8 R2 K1 + 0x4C240000, // 0078 LDNIL R9 + 0x20201009, // 0079 NE R8 R8 R9 + 0x78220014, // 007A JMPF R8 #0090 + 0x8C200118, // 007B GETMET R8 R0 K24 + 0x5C280E00, // 007C MOVE R10 R7 + 0x5C2C0400, // 007D MOVE R11 R2 + 0x4C300000, // 007E LDNIL R12 + 0x7C200800, // 007F CALL R8 4 + 0xB8221E00, // 0080 GETNGBL R8 K15 + 0x8C201110, // 0081 GETMET R8 R8 K16 + 0x58280011, // 0082 LDCONST R10 K17 + 0x7C200400, // 0083 CALL R8 2 + 0x78220009, // 0084 JMPF R8 #008F + 0xB8221600, // 0085 GETNGBL R8 K11 + 0x60240018, // 0086 GETGBL R9 G24 + 0x5828001C, // 0087 LDCONST R10 K28 + 0x882C0309, // 0088 GETMBR R11 R1 K9 + 0x882C1713, // 0089 GETMBR R11 R11 K19 + 0x88300501, // 008A GETMBR R12 R2 K1 + 0x8834031A, // 008B GETMBR R13 R1 K26 + 0x7C240800, // 008C CALL R9 4 + 0x58280011, // 008D LDCONST R10 K17 + 0x7C200400, // 008E CALL R8 2 + 0x7002000F, // 008F JMP #00A0 + 0xB8221E00, // 0090 GETNGBL R8 K15 + 0x8C201110, // 0091 GETMET R8 R8 K16 + 0x58280011, // 0092 LDCONST R10 K17 + 0x7C200400, // 0093 CALL R8 2 + 0x78220008, // 0094 JMPF R8 #009E + 0xB8221600, // 0095 GETNGBL R8 K11 + 0x60240018, // 0096 GETGBL R9 G24 + 0x5828001D, // 0097 LDCONST R10 K29 + 0x882C0309, // 0098 GETMBR R11 R1 K9 + 0x882C1713, // 0099 GETMBR R11 R11 K19 + 0x8830031A, // 009A GETMBR R12 R1 K26 + 0x7C240600, // 009B CALL R9 3 + 0x58280011, // 009C LDCONST R10 K17 0x7C200400, // 009D CALL R8 2 - 0x78220008, // 009E JMPF R8 #00A8 - 0xB8220400, // 009F GETNGBL R8 K2 - 0x60240018, // 00A0 GETGBL R9 G24 - 0x58280020, // 00A1 LDCONST R10 K32 - 0x882C030C, // 00A2 GETMBR R11 R1 K12 - 0x882C1716, // 00A3 GETMBR R11 R11 K22 - 0x8830031D, // 00A4 GETMBR R12 R1 K29 - 0x7C240600, // 00A5 CALL R9 3 - 0x58280014, // 00A6 LDCONST R10 K20 - 0x7C200400, // 00A7 CALL R8 2 - 0x50200000, // 00A8 LDBOOL R8 0 0 - 0x80041000, // 00A9 RET 1 R8 - 0x8C200F17, // 00AA GETMET R8 R7 K23 - 0x58280021, // 00AB LDCONST R10 K33 - 0x542DFFFB, // 00AC LDINT R11 -4 - 0x7C200600, // 00AD CALL R8 3 - 0x8C200F17, // 00AE GETMET R8 R7 K23 - 0x542A0017, // 00AF LDINT R10 24 - 0x582C0019, // 00B0 LDCONST R11 K25 - 0x7C200600, // 00B1 CALL R8 3 - 0x8C200322, // 00B2 GETMET R8 R1 K34 - 0x542A0008, // 00B3 LDINT R10 9 - 0x502C0200, // 00B4 LDBOOL R11 1 0 - 0x7C200600, // 00B5 CALL R8 3 - 0x8824010A, // 00B6 GETMBR R9 R0 K10 - 0x88241323, // 00B7 GETMBR R9 R9 K35 - 0x88280324, // 00B8 GETMBR R10 R1 K36 - 0x8C2C1525, // 00B9 GETMET R11 R10 K37 - 0x7C2C0200, // 00BA CALL R11 1 - 0x8C2C1126, // 00BB GETMET R11 R8 K38 - 0x5C340E00, // 00BC MOVE R13 R7 - 0x5C381400, // 00BD MOVE R14 R10 - 0x7C2C0600, // 00BE CALL R11 3 - 0x8C2C1127, // 00BF GETMET R11 R8 K39 - 0x7C2C0200, // 00C0 CALL R11 1 - 0x8C2C1328, // 00C1 GETMET R11 R9 K40 - 0x5C341000, // 00C2 MOVE R13 R8 - 0x7C2C0400, // 00C3 CALL R11 2 - 0xB82E0000, // 00C4 GETNGBL R11 K0 - 0x882C1701, // 00C5 GETMBR R11 R11 K1 - 0x8C2C1702, // 00C6 GETMET R11 R11 K2 - 0x58340029, // 00C7 LDCONST R13 K41 - 0x7C2C0400, // 00C8 CALL R11 2 - 0x502C0200, // 00C9 LDBOOL R11 1 0 - 0x80041600, // 00CA RET 1 R11 + 0x50200000, // 009E LDBOOL R8 0 0 + 0x80041000, // 009F RET 1 R8 + 0x8C200F14, // 00A0 GETMET R8 R7 K20 + 0x5828001E, // 00A1 LDCONST R10 K30 + 0x542DFFFB, // 00A2 LDINT R11 -4 + 0x7C200600, // 00A3 CALL R8 3 + 0x8C200F14, // 00A4 GETMET R8 R7 K20 + 0x542A0017, // 00A5 LDINT R10 24 + 0x582C0016, // 00A6 LDCONST R11 K22 + 0x7C200600, // 00A7 CALL R8 3 + 0x8C20031F, // 00A8 GETMET R8 R1 K31 + 0x542A0008, // 00A9 LDINT R10 9 + 0x502C0200, // 00AA LDBOOL R11 1 0 + 0x7C200600, // 00AB CALL R8 3 + 0x88240107, // 00AC GETMBR R9 R0 K7 + 0x88241320, // 00AD GETMBR R9 R9 K32 + 0x88280321, // 00AE GETMBR R10 R1 K33 + 0x8C2C1522, // 00AF GETMET R11 R10 K34 + 0x7C2C0200, // 00B0 CALL R11 1 + 0x8C2C1123, // 00B1 GETMET R11 R8 K35 + 0x5C340E00, // 00B2 MOVE R13 R7 + 0x5C381400, // 00B3 MOVE R14 R10 + 0x7C2C0600, // 00B4 CALL R11 3 + 0x8C2C1124, // 00B5 GETMET R11 R8 K36 + 0x7C2C0200, // 00B6 CALL R11 1 + 0x8C2C1325, // 00B7 GETMET R11 R9 K37 + 0x5C341000, // 00B8 MOVE R13 R8 + 0x7C2C0400, // 00B9 CALL R11 2 + 0x502C0200, // 00BA LDBOOL R11 1 0 + 0x80041600, // 00BB RET 1 R11 }) ) ); @@ -1844,7 +1804,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[55]) { /* constants */ + ( &(const bvalue[52]) { /* constants */ /* K0 */ be_nested_str_weak(status), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(INVALID_ACTION), @@ -1855,55 +1815,52 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /* K7 */ be_nested_str_weak(read_attribute), /* K8 */ be_nested_str_weak(session), /* K9 */ be_nested_str_weak(tlv_solo), - /* K10 */ be_nested_str_weak(profiler), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(read_request_solo_X20read_X20done), - /* K13 */ be_nested_str_weak(is_list), - /* K14 */ be_nested_str_weak(is_array), - /* K15 */ be_nested_str_weak(encode_len), - /* K16 */ be_nested_str_weak(IM_ReportData_Pull), - /* K17 */ be_nested_str_weak(MAX_MESSAGE), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(TLV), - /* K21 */ be_nested_str_weak(parse), - /* K22 */ be_nested_str_weak(raw), - /* K23 */ be_nested_str_weak(app_payload_idx), - /* K24 */ be_nested_str_weak(process_read_request_pull), - /* K25 */ be_nested_str_weak(add), - /* K26 */ be_const_int(1), - /* K27 */ be_nested_str_weak(attributedata2raw), - /* K28 */ be_const_int(405077761), - /* K29 */ be_nested_str_weak(attributestatus2raw), - /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), - /* K31 */ be_nested_str_weak(local_session_id), - /* K32 */ be_nested_str_weak(build_response), - /* K33 */ be_nested_str_weak(message_handler), - /* K34 */ be_nested_str_weak(clear), - /* K35 */ be_nested_str_weak(encode_frame), - /* K36 */ be_nested_str_weak(encrypt), - /* K37 */ be_nested_str_weak(tasmota), - /* K38 */ be_nested_str_weak(loglevel), - /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), - /* K40 */ be_nested_str_weak(message_counter), - /* K41 */ be_nested_str_weak(exchange_id), - /* K42 */ be_nested_str_weak(ack_message_counter), - /* K43 */ be_nested_str_weak(send_response_frame), - /* K44 */ be_nested_str_weak(RESPONSE_X20SENT), - /* K45 */ be_nested_str_weak(get_attribute_name), - /* K46 */ be_nested_str_weak(cluster), - /* K47 */ be_nested_str_weak(attribute), - /* K48 */ be_nested_str_weak(_X20_X28), - /* K49 */ be_nested_str_weak(_X29), - /* K50 */ be_nested_str_weak(), - /* K51 */ be_nested_str_weak(to_str_val), - /* K52 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K54 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), + /* K10 */ be_nested_str_weak(is_list), + /* K11 */ be_nested_str_weak(is_array), + /* K12 */ be_nested_str_weak(encode_len), + /* K13 */ be_nested_str_weak(IM_ReportData_Pull), + /* K14 */ be_nested_str_weak(MAX_MESSAGE), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(TLV), + /* K19 */ be_nested_str_weak(parse), + /* K20 */ be_nested_str_weak(raw), + /* K21 */ be_nested_str_weak(app_payload_idx), + /* K22 */ be_nested_str_weak(process_read_request_pull), + /* K23 */ be_nested_str_weak(add), + /* K24 */ be_const_int(1), + /* K25 */ be_nested_str_weak(attributedata2raw), + /* K26 */ be_const_int(405077761), + /* K27 */ be_nested_str_weak(attributestatus2raw), + /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_nested_str_weak(build_response), + /* K31 */ be_nested_str_weak(message_handler), + /* K32 */ be_nested_str_weak(clear), + /* K33 */ be_nested_str_weak(encode_frame), + /* K34 */ be_nested_str_weak(encrypt), + /* K35 */ be_nested_str_weak(tasmota), + /* K36 */ be_nested_str_weak(loglevel), + /* K37 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), + /* K38 */ be_nested_str_weak(message_counter), + /* K39 */ be_nested_str_weak(exchange_id), + /* K40 */ be_nested_str_weak(ack_message_counter), + /* K41 */ be_nested_str_weak(send_response_frame), + /* K42 */ be_nested_str_weak(get_attribute_name), + /* K43 */ be_nested_str_weak(cluster), + /* K44 */ be_nested_str_weak(attribute), + /* K45 */ be_nested_str_weak(_X20_X28), + /* K46 */ be_nested_str_weak(_X29), + /* K47 */ be_nested_str_weak(), + /* K48 */ be_nested_str_weak(to_str_val), + /* K49 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K50 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K51 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), }), be_str_weak(process_read_request_solo), &be_const_str_solidified, - ( &(const binstruction[252]) { /* code */ + ( &(const binstruction[242]) { /* code */ 0xB80E0200, // 0000 GETNGBL R3 K1 0x880C0702, // 0001 GETMBR R3 R3 K2 0x900A0003, // 0002 SETMBR R2 K0 R3 @@ -1926,236 +1883,226 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x88280109, // 0013 GETMBR R10 R0 K9 0x7C180800, // 0014 CALL R6 4 0x5C100C00, // 0015 MOVE R4 R6 - 0xB81A0200, // 0016 GETNGBL R6 K1 - 0x88180D0A, // 0017 GETMBR R6 R6 K10 - 0x8C180D0B, // 0018 GETMET R6 R6 K11 - 0x5820000C, // 0019 LDCONST R8 K12 - 0x7C180400, // 001A CALL R6 2 - 0x4C180000, // 001B LDNIL R6 - 0x20180806, // 001C NE R6 R4 R6 - 0x781A0036, // 001D JMPF R6 #0055 - 0x8818090D, // 001E GETMBR R6 R4 K13 - 0x741A0001, // 001F JMPT R6 #0022 - 0x8818090E, // 0020 GETMBR R6 R4 K14 - 0x781A0018, // 0021 JMPF R6 #003B - 0x8C18090F, // 0022 GETMET R6 R4 K15 - 0x7C180200, // 0023 CALL R6 1 - 0xB81E0200, // 0024 GETNGBL R7 K1 - 0x881C0F10, // 0025 GETMBR R7 R7 K16 - 0x881C0F11, // 0026 GETMBR R7 R7 K17 - 0x24180C07, // 0027 GT R6 R6 R7 - 0x781A0011, // 0028 JMPF R6 #003B - 0x4C100000, // 0029 LDNIL R4 - 0xB81A1600, // 002A GETNGBL R6 K11 - 0x601C0018, // 002B GETGBL R7 G24 - 0x58200012, // 002C LDCONST R8 K18 - 0x7C1C0200, // 002D CALL R7 1 - 0x58200013, // 002E LDCONST R8 K19 - 0x7C180400, // 002F CALL R6 2 - 0xB81A0200, // 0030 GETNGBL R6 K1 - 0x88180D14, // 0031 GETMBR R6 R6 K20 - 0x8C180D15, // 0032 GETMET R6 R6 K21 - 0x88200316, // 0033 GETMBR R8 R1 K22 - 0x88240317, // 0034 GETMBR R9 R1 K23 - 0x7C180600, // 0035 CALL R6 3 - 0x8C1C0118, // 0036 GETMET R7 R0 K24 - 0x5C240200, // 0037 MOVE R9 R1 - 0x5C280C00, // 0038 MOVE R10 R6 - 0x7C1C0600, // 0039 CALL R7 3 - 0x80040E00, // 003A RET 1 R7 - 0x60180015, // 003B GETGBL R6 G21 - 0x541E002F, // 003C LDINT R7 48 - 0x7C180200, // 003D CALL R6 1 - 0x5C140C00, // 003E MOVE R5 R6 - 0x8C180B19, // 003F GETMET R6 R5 K25 - 0x54220014, // 0040 LDINT R8 21 - 0x5824001A, // 0041 LDCONST R9 K26 - 0x7C180600, // 0042 CALL R6 3 - 0x8C180B19, // 0043 GETMET R6 R5 K25 - 0x54223600, // 0044 LDINT R8 13825 - 0x5425FFFD, // 0045 LDINT R9 -2 - 0x7C180600, // 0046 CALL R6 3 - 0x8C18011B, // 0047 GETMET R6 R0 K27 - 0x5C200A00, // 0048 MOVE R8 R5 - 0x5C240400, // 0049 MOVE R9 R2 - 0x5C280800, // 004A MOVE R10 R4 - 0x7C180800, // 004B CALL R6 4 - 0x8C180B19, // 004C GETMET R6 R5 K25 - 0x5820001C, // 004D LDCONST R8 K28 - 0x5425FFFB, // 004E LDINT R9 -4 - 0x7C180600, // 004F CALL R6 3 - 0x8C180B19, // 0050 GETMET R6 R5 K25 - 0x54220017, // 0051 LDINT R8 24 - 0x5824001A, // 0052 LDCONST R9 K26 - 0x7C180600, // 0053 CALL R6 3 - 0x70020028, // 0054 JMP #007E - 0x88180500, // 0055 GETMBR R6 R2 K0 - 0x4C1C0000, // 0056 LDNIL R7 - 0x20180C07, // 0057 NE R6 R6 R7 - 0x781A0019, // 0058 JMPF R6 #0073 - 0x60180015, // 0059 GETGBL R6 G21 - 0x541E002F, // 005A LDINT R7 48 - 0x7C180200, // 005B CALL R6 1 - 0x5C140C00, // 005C MOVE R5 R6 - 0x8C180B19, // 005D GETMET R6 R5 K25 - 0x54220014, // 005E LDINT R8 21 - 0x5824001A, // 005F LDCONST R9 K26 - 0x7C180600, // 0060 CALL R6 3 - 0x8C180B19, // 0061 GETMET R6 R5 K25 - 0x54223600, // 0062 LDINT R8 13825 - 0x5425FFFD, // 0063 LDINT R9 -2 - 0x7C180600, // 0064 CALL R6 3 - 0x8C18011D, // 0065 GETMET R6 R0 K29 - 0x5C200A00, // 0066 MOVE R8 R5 - 0x5C240400, // 0067 MOVE R9 R2 - 0x88280500, // 0068 GETMBR R10 R2 K0 - 0x7C180800, // 0069 CALL R6 4 - 0x8C180B19, // 006A GETMET R6 R5 K25 - 0x5820001C, // 006B LDCONST R8 K28 - 0x5425FFFB, // 006C LDINT R9 -4 - 0x7C180600, // 006D CALL R6 3 - 0x8C180B19, // 006E GETMET R6 R5 K25 - 0x54220017, // 006F LDINT R8 24 - 0x5824001A, // 0070 LDCONST R9 K26 - 0x7C180600, // 0071 CALL R6 3 - 0x7002000A, // 0072 JMP #007E - 0xB81A1600, // 0073 GETNGBL R6 K11 - 0x601C0018, // 0074 GETGBL R7 G24 - 0x5820001E, // 0075 LDCONST R8 K30 - 0x88240308, // 0076 GETMBR R9 R1 K8 - 0x8824131F, // 0077 GETMBR R9 R9 K31 - 0x5C280400, // 0078 MOVE R10 R2 - 0x7C1C0600, // 0079 CALL R7 3 - 0x58200013, // 007A LDCONST R8 K19 - 0x7C180400, // 007B CALL R6 2 - 0x50180000, // 007C LDBOOL R6 0 0 - 0x80040C00, // 007D RET 1 R6 - 0x8C180320, // 007E GETMET R6 R1 K32 - 0x54220004, // 007F LDINT R8 5 - 0x50240200, // 0080 LDBOOL R9 1 0 - 0x7C180600, // 0081 CALL R6 3 - 0x881C0104, // 0082 GETMBR R7 R0 K4 - 0x881C0F21, // 0083 GETMBR R7 R7 K33 - 0x88200316, // 0084 GETMBR R8 R1 K22 - 0x8C241122, // 0085 GETMET R9 R8 K34 - 0x7C240200, // 0086 CALL R9 1 - 0x8C240D23, // 0087 GETMET R9 R6 K35 - 0x5C2C0A00, // 0088 MOVE R11 R5 - 0x5C301000, // 0089 MOVE R12 R8 - 0x7C240600, // 008A CALL R9 3 - 0x8C240D24, // 008B GETMET R9 R6 K36 - 0x7C240200, // 008C CALL R9 1 - 0xB8264A00, // 008D GETNGBL R9 K37 - 0x8C241326, // 008E GETMET R9 R9 K38 - 0x542E0003, // 008F LDINT R11 4 - 0x7C240400, // 0090 CALL R9 2 - 0x7826000A, // 0091 JMPF R9 #009D - 0xB8261600, // 0092 GETNGBL R9 K11 - 0x60280018, // 0093 GETGBL R10 G24 - 0x582C0027, // 0094 LDCONST R11 K39 - 0x88300D08, // 0095 GETMBR R12 R6 K8 - 0x8830191F, // 0096 GETMBR R12 R12 K31 - 0x88340D28, // 0097 GETMBR R13 R6 K40 - 0x88380D29, // 0098 GETMBR R14 R6 K41 - 0x883C0D2A, // 0099 GETMBR R15 R6 K42 - 0x7C280A00, // 009A CALL R10 5 - 0x542E0003, // 009B LDINT R11 4 - 0x7C240400, // 009C CALL R9 2 - 0x8C240F2B, // 009D GETMET R9 R7 K43 - 0x5C2C0C00, // 009E MOVE R11 R6 - 0x7C240400, // 009F CALL R9 2 - 0xB8260200, // 00A0 GETNGBL R9 K1 - 0x8824130A, // 00A1 GETMBR R9 R9 K10 - 0x8C24130B, // 00A2 GETMET R9 R9 K11 - 0x582C002C, // 00A3 LDCONST R11 K44 - 0x7C240400, // 00A4 CALL R9 2 - 0x4C240000, // 00A5 LDNIL R9 - 0xB82A4A00, // 00A6 GETNGBL R10 K37 - 0x8C281526, // 00A7 GETMET R10 R10 K38 - 0x58300013, // 00A8 LDCONST R12 K19 - 0x7C280400, // 00A9 CALL R10 2 - 0x782A000B, // 00AA JMPF R10 #00B7 - 0xB82A0200, // 00AB GETNGBL R10 K1 - 0x8C28152D, // 00AC GETMET R10 R10 K45 - 0x8830052E, // 00AD GETMBR R12 R2 K46 - 0x8834052F, // 00AE GETMBR R13 R2 K47 - 0x7C280600, // 00AF CALL R10 3 - 0x5C241400, // 00B0 MOVE R9 R10 - 0x78260002, // 00B1 JMPF R9 #00B5 - 0x002A6009, // 00B2 ADD R10 K48 R9 - 0x00281531, // 00B3 ADD R10 R10 K49 - 0x70020000, // 00B4 JMP #00B6 - 0x58280032, // 00B5 LDCONST R10 K50 - 0x5C241400, // 00B6 MOVE R9 R10 - 0x4C280000, // 00B7 LDNIL R10 - 0x2028080A, // 00B8 NE R10 R4 R10 - 0x782A0012, // 00B9 JMPF R10 #00CD - 0xB82A4A00, // 00BA GETNGBL R10 K37 - 0x8C281526, // 00BB GETMET R10 R10 K38 - 0x58300013, // 00BC LDCONST R12 K19 - 0x7C280400, // 00BD CALL R10 2 - 0x782A000C, // 00BE JMPF R10 #00CC - 0x8C280933, // 00BF GETMET R10 R4 K51 - 0x7C280200, // 00C0 CALL R10 1 - 0xB82E1600, // 00C1 GETNGBL R11 K11 - 0x60300018, // 00C2 GETGBL R12 G24 - 0x58340034, // 00C3 LDCONST R13 K52 - 0x88380308, // 00C4 GETMBR R14 R1 K8 - 0x88381D1F, // 00C5 GETMBR R14 R14 K31 - 0x5C3C0400, // 00C6 MOVE R15 R2 - 0x5C401200, // 00C7 MOVE R16 R9 - 0x5C441400, // 00C8 MOVE R17 R10 - 0x7C300A00, // 00C9 CALL R12 5 - 0x58340013, // 00CA LDCONST R13 K19 - 0x7C2C0400, // 00CB CALL R11 2 - 0x7002002C, // 00CC JMP #00FA - 0x88280500, // 00CD GETMBR R10 R2 K0 - 0x4C2C0000, // 00CE LDNIL R11 - 0x2028140B, // 00CF NE R10 R10 R11 - 0x782A0019, // 00D0 JMPF R10 #00EB - 0x88280500, // 00D1 GETMBR R10 R2 K0 - 0xB82E0200, // 00D2 GETNGBL R11 K1 - 0x882C1706, // 00D3 GETMBR R11 R11 K6 - 0x1C28140B, // 00D4 EQ R10 R10 R11 - 0x782A0001, // 00D5 JMPF R10 #00D8 - 0x58280006, // 00D6 LDCONST R10 K6 - 0x70020000, // 00D7 JMP #00D9 - 0x58280032, // 00D8 LDCONST R10 K50 - 0xB82E4A00, // 00D9 GETNGBL R11 K37 - 0x8C2C1726, // 00DA GETMET R11 R11 K38 - 0x58340013, // 00DB LDCONST R13 K19 - 0x7C2C0400, // 00DC CALL R11 2 - 0x782E000B, // 00DD JMPF R11 #00EA - 0xB82E1600, // 00DE GETNGBL R11 K11 - 0x60300018, // 00DF GETGBL R12 G24 - 0x58340035, // 00E0 LDCONST R13 K53 - 0x88380308, // 00E1 GETMBR R14 R1 K8 - 0x88381D1F, // 00E2 GETMBR R14 R14 K31 - 0x5C3C0400, // 00E3 MOVE R15 R2 - 0x5C401200, // 00E4 MOVE R16 R9 - 0x88440500, // 00E5 GETMBR R17 R2 K0 - 0x5C481400, // 00E6 MOVE R18 R10 - 0x7C300C00, // 00E7 CALL R12 6 - 0x58340013, // 00E8 LDCONST R13 K19 - 0x7C2C0400, // 00E9 CALL R11 2 - 0x7002000E, // 00EA JMP #00FA - 0xB82A4A00, // 00EB GETNGBL R10 K37 - 0x8C281526, // 00EC GETMET R10 R10 K38 - 0x58300013, // 00ED LDCONST R12 K19 - 0x7C280400, // 00EE CALL R10 2 - 0x782A0009, // 00EF JMPF R10 #00FA - 0xB82A1600, // 00F0 GETNGBL R10 K11 - 0x602C0018, // 00F1 GETGBL R11 G24 - 0x58300036, // 00F2 LDCONST R12 K54 - 0x88340308, // 00F3 GETMBR R13 R1 K8 - 0x88341B1F, // 00F4 GETMBR R13 R13 K31 - 0x5C380400, // 00F5 MOVE R14 R2 - 0x5C3C1200, // 00F6 MOVE R15 R9 - 0x7C2C0800, // 00F7 CALL R11 4 - 0x58300013, // 00F8 LDCONST R12 K19 - 0x7C280400, // 00F9 CALL R10 2 - 0x50280200, // 00FA LDBOOL R10 1 0 - 0x80041400, // 00FB RET 1 R10 + 0x4C180000, // 0016 LDNIL R6 + 0x20180806, // 0017 NE R6 R4 R6 + 0x781A0036, // 0018 JMPF R6 #0050 + 0x8818090A, // 0019 GETMBR R6 R4 K10 + 0x741A0001, // 001A JMPT R6 #001D + 0x8818090B, // 001B GETMBR R6 R4 K11 + 0x781A0018, // 001C JMPF R6 #0036 + 0x8C18090C, // 001D GETMET R6 R4 K12 + 0x7C180200, // 001E CALL R6 1 + 0xB81E0200, // 001F GETNGBL R7 K1 + 0x881C0F0D, // 0020 GETMBR R7 R7 K13 + 0x881C0F0E, // 0021 GETMBR R7 R7 K14 + 0x24180C07, // 0022 GT R6 R6 R7 + 0x781A0011, // 0023 JMPF R6 #0036 + 0x4C100000, // 0024 LDNIL R4 + 0xB81A1E00, // 0025 GETNGBL R6 K15 + 0x601C0018, // 0026 GETGBL R7 G24 + 0x58200010, // 0027 LDCONST R8 K16 + 0x7C1C0200, // 0028 CALL R7 1 + 0x58200011, // 0029 LDCONST R8 K17 + 0x7C180400, // 002A CALL R6 2 + 0xB81A0200, // 002B GETNGBL R6 K1 + 0x88180D12, // 002C GETMBR R6 R6 K18 + 0x8C180D13, // 002D GETMET R6 R6 K19 + 0x88200314, // 002E GETMBR R8 R1 K20 + 0x88240315, // 002F GETMBR R9 R1 K21 + 0x7C180600, // 0030 CALL R6 3 + 0x8C1C0116, // 0031 GETMET R7 R0 K22 + 0x5C240200, // 0032 MOVE R9 R1 + 0x5C280C00, // 0033 MOVE R10 R6 + 0x7C1C0600, // 0034 CALL R7 3 + 0x80040E00, // 0035 RET 1 R7 + 0x60180015, // 0036 GETGBL R6 G21 + 0x541E002F, // 0037 LDINT R7 48 + 0x7C180200, // 0038 CALL R6 1 + 0x5C140C00, // 0039 MOVE R5 R6 + 0x8C180B17, // 003A GETMET R6 R5 K23 + 0x54220014, // 003B LDINT R8 21 + 0x58240018, // 003C LDCONST R9 K24 + 0x7C180600, // 003D CALL R6 3 + 0x8C180B17, // 003E GETMET R6 R5 K23 + 0x54223600, // 003F LDINT R8 13825 + 0x5425FFFD, // 0040 LDINT R9 -2 + 0x7C180600, // 0041 CALL R6 3 + 0x8C180119, // 0042 GETMET R6 R0 K25 + 0x5C200A00, // 0043 MOVE R8 R5 + 0x5C240400, // 0044 MOVE R9 R2 + 0x5C280800, // 0045 MOVE R10 R4 + 0x7C180800, // 0046 CALL R6 4 + 0x8C180B17, // 0047 GETMET R6 R5 K23 + 0x5820001A, // 0048 LDCONST R8 K26 + 0x5425FFFB, // 0049 LDINT R9 -4 + 0x7C180600, // 004A CALL R6 3 + 0x8C180B17, // 004B GETMET R6 R5 K23 + 0x54220017, // 004C LDINT R8 24 + 0x58240018, // 004D LDCONST R9 K24 + 0x7C180600, // 004E CALL R6 3 + 0x70020028, // 004F JMP #0079 + 0x88180500, // 0050 GETMBR R6 R2 K0 + 0x4C1C0000, // 0051 LDNIL R7 + 0x20180C07, // 0052 NE R6 R6 R7 + 0x781A0019, // 0053 JMPF R6 #006E + 0x60180015, // 0054 GETGBL R6 G21 + 0x541E002F, // 0055 LDINT R7 48 + 0x7C180200, // 0056 CALL R6 1 + 0x5C140C00, // 0057 MOVE R5 R6 + 0x8C180B17, // 0058 GETMET R6 R5 K23 + 0x54220014, // 0059 LDINT R8 21 + 0x58240018, // 005A LDCONST R9 K24 + 0x7C180600, // 005B CALL R6 3 + 0x8C180B17, // 005C GETMET R6 R5 K23 + 0x54223600, // 005D LDINT R8 13825 + 0x5425FFFD, // 005E LDINT R9 -2 + 0x7C180600, // 005F CALL R6 3 + 0x8C18011B, // 0060 GETMET R6 R0 K27 + 0x5C200A00, // 0061 MOVE R8 R5 + 0x5C240400, // 0062 MOVE R9 R2 + 0x88280500, // 0063 GETMBR R10 R2 K0 + 0x7C180800, // 0064 CALL R6 4 + 0x8C180B17, // 0065 GETMET R6 R5 K23 + 0x5820001A, // 0066 LDCONST R8 K26 + 0x5425FFFB, // 0067 LDINT R9 -4 + 0x7C180600, // 0068 CALL R6 3 + 0x8C180B17, // 0069 GETMET R6 R5 K23 + 0x54220017, // 006A LDINT R8 24 + 0x58240018, // 006B LDCONST R9 K24 + 0x7C180600, // 006C CALL R6 3 + 0x7002000A, // 006D JMP #0079 + 0xB81A1E00, // 006E GETNGBL R6 K15 + 0x601C0018, // 006F GETGBL R7 G24 + 0x5820001C, // 0070 LDCONST R8 K28 + 0x88240308, // 0071 GETMBR R9 R1 K8 + 0x8824131D, // 0072 GETMBR R9 R9 K29 + 0x5C280400, // 0073 MOVE R10 R2 + 0x7C1C0600, // 0074 CALL R7 3 + 0x58200011, // 0075 LDCONST R8 K17 + 0x7C180400, // 0076 CALL R6 2 + 0x50180000, // 0077 LDBOOL R6 0 0 + 0x80040C00, // 0078 RET 1 R6 + 0x8C18031E, // 0079 GETMET R6 R1 K30 + 0x54220004, // 007A LDINT R8 5 + 0x50240200, // 007B LDBOOL R9 1 0 + 0x7C180600, // 007C CALL R6 3 + 0x881C0104, // 007D GETMBR R7 R0 K4 + 0x881C0F1F, // 007E GETMBR R7 R7 K31 + 0x88200314, // 007F GETMBR R8 R1 K20 + 0x8C241120, // 0080 GETMET R9 R8 K32 + 0x7C240200, // 0081 CALL R9 1 + 0x8C240D21, // 0082 GETMET R9 R6 K33 + 0x5C2C0A00, // 0083 MOVE R11 R5 + 0x5C301000, // 0084 MOVE R12 R8 + 0x7C240600, // 0085 CALL R9 3 + 0x8C240D22, // 0086 GETMET R9 R6 K34 + 0x7C240200, // 0087 CALL R9 1 + 0xB8264600, // 0088 GETNGBL R9 K35 + 0x8C241324, // 0089 GETMET R9 R9 K36 + 0x542E0003, // 008A LDINT R11 4 + 0x7C240400, // 008B CALL R9 2 + 0x7826000A, // 008C JMPF R9 #0098 + 0xB8261E00, // 008D GETNGBL R9 K15 + 0x60280018, // 008E GETGBL R10 G24 + 0x582C0025, // 008F LDCONST R11 K37 + 0x88300D08, // 0090 GETMBR R12 R6 K8 + 0x8830191D, // 0091 GETMBR R12 R12 K29 + 0x88340D26, // 0092 GETMBR R13 R6 K38 + 0x88380D27, // 0093 GETMBR R14 R6 K39 + 0x883C0D28, // 0094 GETMBR R15 R6 K40 + 0x7C280A00, // 0095 CALL R10 5 + 0x542E0003, // 0096 LDINT R11 4 + 0x7C240400, // 0097 CALL R9 2 + 0x8C240F29, // 0098 GETMET R9 R7 K41 + 0x5C2C0C00, // 0099 MOVE R11 R6 + 0x7C240400, // 009A CALL R9 2 + 0x4C240000, // 009B LDNIL R9 + 0xB82A4600, // 009C GETNGBL R10 K35 + 0x8C281524, // 009D GETMET R10 R10 K36 + 0x58300011, // 009E LDCONST R12 K17 + 0x7C280400, // 009F CALL R10 2 + 0x782A000B, // 00A0 JMPF R10 #00AD + 0xB82A0200, // 00A1 GETNGBL R10 K1 + 0x8C28152A, // 00A2 GETMET R10 R10 K42 + 0x8830052B, // 00A3 GETMBR R12 R2 K43 + 0x8834052C, // 00A4 GETMBR R13 R2 K44 + 0x7C280600, // 00A5 CALL R10 3 + 0x5C241400, // 00A6 MOVE R9 R10 + 0x78260002, // 00A7 JMPF R9 #00AB + 0x002A5A09, // 00A8 ADD R10 K45 R9 + 0x0028152E, // 00A9 ADD R10 R10 K46 + 0x70020000, // 00AA JMP #00AC + 0x5828002F, // 00AB LDCONST R10 K47 + 0x5C241400, // 00AC MOVE R9 R10 + 0x4C280000, // 00AD LDNIL R10 + 0x2028080A, // 00AE NE R10 R4 R10 + 0x782A0012, // 00AF JMPF R10 #00C3 + 0xB82A4600, // 00B0 GETNGBL R10 K35 + 0x8C281524, // 00B1 GETMET R10 R10 K36 + 0x58300011, // 00B2 LDCONST R12 K17 + 0x7C280400, // 00B3 CALL R10 2 + 0x782A000C, // 00B4 JMPF R10 #00C2 + 0x8C280930, // 00B5 GETMET R10 R4 K48 + 0x7C280200, // 00B6 CALL R10 1 + 0xB82E1E00, // 00B7 GETNGBL R11 K15 + 0x60300018, // 00B8 GETGBL R12 G24 + 0x58340031, // 00B9 LDCONST R13 K49 + 0x88380308, // 00BA GETMBR R14 R1 K8 + 0x88381D1D, // 00BB GETMBR R14 R14 K29 + 0x5C3C0400, // 00BC MOVE R15 R2 + 0x5C401200, // 00BD MOVE R16 R9 + 0x5C441400, // 00BE MOVE R17 R10 + 0x7C300A00, // 00BF CALL R12 5 + 0x58340011, // 00C0 LDCONST R13 K17 + 0x7C2C0400, // 00C1 CALL R11 2 + 0x7002002C, // 00C2 JMP #00F0 + 0x88280500, // 00C3 GETMBR R10 R2 K0 + 0x4C2C0000, // 00C4 LDNIL R11 + 0x2028140B, // 00C5 NE R10 R10 R11 + 0x782A0019, // 00C6 JMPF R10 #00E1 + 0x88280500, // 00C7 GETMBR R10 R2 K0 + 0xB82E0200, // 00C8 GETNGBL R11 K1 + 0x882C1706, // 00C9 GETMBR R11 R11 K6 + 0x1C28140B, // 00CA EQ R10 R10 R11 + 0x782A0001, // 00CB JMPF R10 #00CE + 0x58280006, // 00CC LDCONST R10 K6 + 0x70020000, // 00CD JMP #00CF + 0x5828002F, // 00CE LDCONST R10 K47 + 0xB82E4600, // 00CF GETNGBL R11 K35 + 0x8C2C1724, // 00D0 GETMET R11 R11 K36 + 0x58340011, // 00D1 LDCONST R13 K17 + 0x7C2C0400, // 00D2 CALL R11 2 + 0x782E000B, // 00D3 JMPF R11 #00E0 + 0xB82E1E00, // 00D4 GETNGBL R11 K15 + 0x60300018, // 00D5 GETGBL R12 G24 + 0x58340032, // 00D6 LDCONST R13 K50 + 0x88380308, // 00D7 GETMBR R14 R1 K8 + 0x88381D1D, // 00D8 GETMBR R14 R14 K29 + 0x5C3C0400, // 00D9 MOVE R15 R2 + 0x5C401200, // 00DA MOVE R16 R9 + 0x88440500, // 00DB GETMBR R17 R2 K0 + 0x5C481400, // 00DC MOVE R18 R10 + 0x7C300C00, // 00DD CALL R12 6 + 0x58340011, // 00DE LDCONST R13 K17 + 0x7C2C0400, // 00DF CALL R11 2 + 0x7002000E, // 00E0 JMP #00F0 + 0xB82A4600, // 00E1 GETNGBL R10 K35 + 0x8C281524, // 00E2 GETMET R10 R10 K36 + 0x58300011, // 00E3 LDCONST R12 K17 + 0x7C280400, // 00E4 CALL R10 2 + 0x782A0009, // 00E5 JMPF R10 #00F0 + 0xB82A1E00, // 00E6 GETNGBL R10 K15 + 0x602C0018, // 00E7 GETGBL R11 G24 + 0x58300033, // 00E8 LDCONST R12 K51 + 0x88340308, // 00E9 GETMBR R13 R1 K8 + 0x88341B1D, // 00EA GETMBR R13 R13 K29 + 0x5C380400, // 00EB MOVE R14 R2 + 0x5C3C1200, // 00EC MOVE R15 R9 + 0x7C2C0800, // 00ED CALL R11 4 + 0x58300011, // 00EE LDCONST R12 K17 + 0x7C280400, // 00EF CALL R10 2 + 0x50280200, // 00F0 LDBOOL R10 1 0 + 0x80041400, // 00F1 RET 1 R10 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index 80fbe0851..1d809134a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -147,435 +147,410 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0, /* has sup protos */ &be_class_Matter_MessageHandler, 1, /* has constants */ - ( &(const bvalue[70]) { /* constants */ + ( &(const bvalue[65]) { /* constants */ /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(msg_received), - /* K4 */ be_nested_str_weak(Frame), - /* K5 */ be_nested_str_weak(decode_header), - /* K6 */ be_nested_str_weak(sec_p), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(sessions), - /* K9 */ be_nested_str_weak(find_session_source_id_unsecure), - /* K10 */ be_nested_str_weak(source_node_id), - /* K11 */ be_nested_str_weak(control_message), - /* K12 */ be_nested_str_weak(process_incoming_control_message), - /* K13 */ be_nested_str_weak(local_session_id), - /* K14 */ be_const_int(0), - /* K15 */ be_nested_str_weak(sec_sesstype), - /* K16 */ be_nested_str_weak(_ip), - /* K17 */ be_nested_str_weak(_port), - /* K18 */ be_nested_str_weak(_message_handler), - /* K19 */ be_nested_str_weak(session), - /* K20 */ be_nested_str_weak(_counter_insecure_rcv), - /* K21 */ be_nested_str_weak(validate), - /* K22 */ be_nested_str_weak(message_counter), - /* K23 */ be_nested_str_weak(tasmota), - /* K24 */ be_nested_str_weak(loglevel), - /* K25 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i), - /* K26 */ be_nested_str_weak(val), - /* K27 */ be_nested_str_weak(send_simple_ack), - /* K28 */ be_nested_str_weak(decode_payload), - /* K29 */ be_nested_str_weak(received_ack), - /* K30 */ be_nested_str_weak(opcode), - /* K31 */ be_nested_str_weak(get_opcode_name), - /* K32 */ be_nested_str_weak(0x_X2502X), - /* K33 */ be_const_int(3), - /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), - /* K36 */ be_nested_str_weak(x_flag_r), - /* K37 */ be_nested_str_weak(_X7Breliable_X7D_X20), - /* K38 */ be_nested_str_weak(), - /* K39 */ be_nested_str_weak(exchange_id), - /* K40 */ be_nested_str_weak(ack_message_counter), - /* K41 */ be_nested_str_weak(commissioning), - /* K42 */ be_nested_str_weak(process_incoming), - /* K43 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i), - /* K44 */ be_nested_str_weak(get_session_by_local_session_id), - /* K45 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D), - /* K46 */ be_nested_str_weak(counter_rcv_validate), - /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20), - /* K48 */ be_nested_str_weak(_X20counter_X3D), - /* K49 */ be_nested_str_weak(counter_rcv), - /* K50 */ be_nested_str_weak(send_encrypted_ack), - /* K51 */ be_nested_str_weak(decrypt), - /* K52 */ be_nested_str_weak(msg_received_header_frame_decrypted), - /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A), - /* K54 */ be_nested_str_weak(protocol_id), - /* K55 */ be_nested_str_weak(_X20opcode_X3D), - /* K56 */ be_nested_str_weak(_X20exchange_id_X3D), - /* K57 */ be_nested_str_weak(im), - /* K58 */ be_nested_str_weak(process_incoming_ack), - /* K59 */ be_nested_str_weak(send_enqueued), - /* K60 */ be_const_int(1), - /* K61 */ be_nested_str_weak(process_IM_start), - /* K62 */ be_nested_str_weak(process_IM_end), - /* K63 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), - /* K64 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), - /* K65 */ be_nested_str_weak(_X3B), - /* K66 */ be_const_int(2), - /* K67 */ be_nested_str_weak(_debug_present), - /* K68 */ be_nested_str_weak(debug), - /* K69 */ be_nested_str_weak(traceback), + /* K1 */ be_nested_str_weak(Frame), + /* K2 */ be_nested_str_weak(decode_header), + /* K3 */ be_nested_str_weak(sec_p), + /* K4 */ be_nested_str_weak(device), + /* K5 */ be_nested_str_weak(sessions), + /* K6 */ be_nested_str_weak(find_session_source_id_unsecure), + /* K7 */ be_nested_str_weak(source_node_id), + /* K8 */ be_nested_str_weak(control_message), + /* K9 */ be_nested_str_weak(process_incoming_control_message), + /* K10 */ be_nested_str_weak(local_session_id), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(sec_sesstype), + /* K13 */ be_nested_str_weak(_ip), + /* K14 */ be_nested_str_weak(_port), + /* K15 */ be_nested_str_weak(_message_handler), + /* K16 */ be_nested_str_weak(session), + /* K17 */ be_nested_str_weak(_counter_insecure_rcv), + /* K18 */ be_nested_str_weak(validate), + /* K19 */ be_nested_str_weak(message_counter), + /* K20 */ be_nested_str_weak(tasmota), + /* K21 */ be_nested_str_weak(loglevel), + /* K22 */ be_nested_str_weak(log), + /* K23 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i), + /* K24 */ be_nested_str_weak(val), + /* K25 */ be_nested_str_weak(send_simple_ack), + /* K26 */ be_nested_str_weak(decode_payload), + /* K27 */ be_nested_str_weak(received_ack), + /* K28 */ be_nested_str_weak(opcode), + /* K29 */ be_nested_str_weak(get_opcode_name), + /* K30 */ be_nested_str_weak(0x_X2502X), + /* K31 */ be_const_int(3), + /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K33 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), + /* K34 */ be_nested_str_weak(x_flag_r), + /* K35 */ be_nested_str_weak(_X7Breliable_X7D_X20), + /* K36 */ be_nested_str_weak(), + /* K37 */ be_nested_str_weak(exchange_id), + /* K38 */ be_nested_str_weak(ack_message_counter), + /* K39 */ be_nested_str_weak(commissioning), + /* K40 */ be_nested_str_weak(process_incoming), + /* K41 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i), + /* K42 */ be_nested_str_weak(get_session_by_local_session_id), + /* K43 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D), + /* K44 */ be_nested_str_weak(counter_rcv_validate), + /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20), + /* K46 */ be_nested_str_weak(_X20counter_X3D), + /* K47 */ be_nested_str_weak(counter_rcv), + /* K48 */ be_nested_str_weak(send_encrypted_ack), + /* K49 */ be_nested_str_weak(decrypt), + /* K50 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A), + /* K51 */ be_nested_str_weak(protocol_id), + /* K52 */ be_nested_str_weak(_X20opcode_X3D), + /* K53 */ be_nested_str_weak(_X20exchange_id_X3D), + /* K54 */ be_nested_str_weak(im), + /* K55 */ be_nested_str_weak(process_incoming_ack), + /* K56 */ be_nested_str_weak(send_enqueued), + /* K57 */ be_const_int(1), + /* K58 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), + /* K59 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), + /* K60 */ be_nested_str_weak(_X3B), + /* K61 */ be_const_int(2), + /* K62 */ be_nested_str_weak(_debug_present), + /* K63 */ be_nested_str_weak(debug), + /* K64 */ be_nested_str_weak(traceback), }), be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[354]) { /* code */ + ( &(const binstruction[334]) { /* code */ 0x50100000, // 0000 LDBOOL R4 0 0 - 0xB8160000, // 0001 GETNGBL R5 K0 - 0x88140B01, // 0002 GETMBR R5 R5 K1 - 0x8C140B02, // 0003 GETMET R5 R5 K2 - 0x581C0003, // 0004 LDCONST R7 K3 - 0x7C140400, // 0005 CALL R5 2 - 0xA8020141, // 0006 EXBLK 0 #0149 - 0xB8160000, // 0007 GETNGBL R5 K0 - 0x8C140B04, // 0008 GETMET R5 R5 K4 - 0x5C1C0000, // 0009 MOVE R7 R0 - 0x5C200200, // 000A MOVE R8 R1 - 0x5C240400, // 000B MOVE R9 R2 - 0x5C280600, // 000C MOVE R10 R3 - 0x7C140A00, // 000D CALL R5 5 - 0x8C180B05, // 000E GETMET R6 R5 K5 - 0x7C180200, // 000F CALL R6 1 - 0x5C1C0C00, // 0010 MOVE R7 R6 - 0x741E0002, // 0011 JMPT R7 #0015 - 0x501C0000, // 0012 LDBOOL R7 0 0 - 0xA8040001, // 0013 EXBLK 1 1 - 0x80040E00, // 0014 RET 1 R7 - 0x881C0B06, // 0015 GETMBR R7 R5 K6 - 0x781E000C, // 0016 JMPF R7 #0024 - 0x881C0107, // 0017 GETMBR R7 R0 K7 - 0x881C0F08, // 0018 GETMBR R7 R7 K8 - 0x8C1C0F09, // 0019 GETMET R7 R7 K9 - 0x88240B0A, // 001A GETMBR R9 R5 K10 - 0x542A0059, // 001B LDINT R10 90 - 0x7C1C0600, // 001C CALL R7 3 - 0x8820010B, // 001D GETMBR R8 R0 K11 - 0x8C20110C, // 001E GETMET R8 R8 K12 - 0x5C280A00, // 001F MOVE R10 R5 - 0x7C200400, // 0020 CALL R8 2 - 0xA8040001, // 0021 EXBLK 1 1 - 0x80041000, // 0022 RET 1 R8 - 0x70020120, // 0023 JMP #0145 - 0x881C0B0D, // 0024 GETMBR R7 R5 K13 - 0x1C1C0F0E, // 0025 EQ R7 R7 K14 - 0x781E007A, // 0026 JMPF R7 #00A2 - 0x881C0B0F, // 0027 GETMBR R7 R5 K15 - 0x1C1C0F0E, // 0028 EQ R7 R7 K14 - 0x781E0077, // 0029 JMPF R7 #00A2 - 0x881C0107, // 002A GETMBR R7 R0 K7 - 0x881C0F08, // 002B GETMBR R7 R7 K8 - 0x8C1C0F09, // 002C GETMET R7 R7 K9 - 0x88240B0A, // 002D GETMBR R9 R5 K10 - 0x542A0059, // 002E LDINT R10 90 - 0x7C1C0600, // 002F CALL R7 3 - 0x780A0000, // 0030 JMPF R2 #0032 - 0x901E2002, // 0031 SETMBR R7 K16 R2 - 0x780E0000, // 0032 JMPF R3 #0034 - 0x901E2203, // 0033 SETMBR R7 K17 R3 - 0x901E2400, // 0034 SETMBR R7 K18 R0 - 0x90162607, // 0035 SETMBR R5 K19 R7 - 0x88200F14, // 0036 GETMBR R8 R7 K20 - 0x8C201115, // 0037 GETMET R8 R8 K21 - 0x88280B16, // 0038 GETMBR R10 R5 K22 - 0x502C0000, // 0039 LDBOOL R11 0 0 - 0x7C200600, // 003A CALL R8 3 - 0x74220015, // 003B JMPT R8 #0052 - 0xB8222E00, // 003C GETNGBL R8 K23 - 0x8C201118, // 003D GETMET R8 R8 K24 - 0x542A0003, // 003E LDINT R10 4 - 0x7C200400, // 003F CALL R8 2 - 0x78220009, // 0040 JMPF R8 #004B - 0xB8220400, // 0041 GETNGBL R8 K2 - 0x60240018, // 0042 GETGBL R9 G24 - 0x58280019, // 0043 LDCONST R10 K25 - 0x882C0B16, // 0044 GETMBR R11 R5 K22 - 0x88300F14, // 0045 GETMBR R12 R7 K20 - 0x8C30191A, // 0046 GETMET R12 R12 K26 - 0x7C300200, // 0047 CALL R12 1 - 0x7C240600, // 0048 CALL R9 3 - 0x542A0003, // 0049 LDINT R10 4 - 0x7C200400, // 004A CALL R8 2 - 0x8C20011B, // 004B GETMET R8 R0 K27 - 0x5C280A00, // 004C MOVE R10 R5 - 0x502C0000, // 004D LDBOOL R11 0 0 - 0x7C200600, // 004E CALL R8 3 - 0x50200000, // 004F LDBOOL R8 0 0 - 0xA8040001, // 0050 EXBLK 1 1 - 0x80041000, // 0051 RET 1 R8 - 0x8C200B1C, // 0052 GETMET R8 R5 K28 - 0x7C200200, // 0053 CALL R8 1 - 0x74220002, // 0054 JMPT R8 #0058 - 0x50200000, // 0055 LDBOOL R8 0 0 - 0xA8040001, // 0056 EXBLK 1 1 - 0x80041000, // 0057 RET 1 R8 - 0x88200107, // 0058 GETMBR R8 R0 K7 - 0x8C20111D, // 0059 GETMET R8 R8 K29 - 0x5C280A00, // 005A MOVE R10 R5 - 0x7C200400, // 005B CALL R8 2 - 0x88200B1E, // 005C GETMBR R8 R5 K30 - 0x5426000F, // 005D LDINT R9 16 - 0x20201009, // 005E NE R8 R8 R9 - 0x7822001A, // 005F JMPF R8 #007B - 0xB8220000, // 0060 GETNGBL R8 K0 - 0x8C20111F, // 0061 GETMET R8 R8 K31 - 0x88280B1E, // 0062 GETMBR R10 R5 K30 - 0x7C200400, // 0063 CALL R8 2 - 0x5C241000, // 0064 MOVE R9 R8 - 0x74260004, // 0065 JMPT R9 #006B - 0x60240018, // 0066 GETGBL R9 G24 - 0x58280020, // 0067 LDCONST R10 K32 - 0x882C0B1E, // 0068 GETMBR R11 R5 K30 + 0xA8020132, // 0001 EXBLK 0 #0135 + 0xB8160000, // 0002 GETNGBL R5 K0 + 0x8C140B01, // 0003 GETMET R5 R5 K1 + 0x5C1C0000, // 0004 MOVE R7 R0 + 0x5C200200, // 0005 MOVE R8 R1 + 0x5C240400, // 0006 MOVE R9 R2 + 0x5C280600, // 0007 MOVE R10 R3 + 0x7C140A00, // 0008 CALL R5 5 + 0x8C180B02, // 0009 GETMET R6 R5 K2 + 0x7C180200, // 000A CALL R6 1 + 0x5C1C0C00, // 000B MOVE R7 R6 + 0x741E0002, // 000C JMPT R7 #0010 + 0x501C0000, // 000D LDBOOL R7 0 0 + 0xA8040001, // 000E EXBLK 1 1 + 0x80040E00, // 000F RET 1 R7 + 0x881C0B03, // 0010 GETMBR R7 R5 K3 + 0x781E000C, // 0011 JMPF R7 #001F + 0x881C0104, // 0012 GETMBR R7 R0 K4 + 0x881C0F05, // 0013 GETMBR R7 R7 K5 + 0x8C1C0F06, // 0014 GETMET R7 R7 K6 + 0x88240B07, // 0015 GETMBR R9 R5 K7 + 0x542A0059, // 0016 LDINT R10 90 + 0x7C1C0600, // 0017 CALL R7 3 + 0x88200108, // 0018 GETMBR R8 R0 K8 + 0x8C201109, // 0019 GETMET R8 R8 K9 + 0x5C280A00, // 001A MOVE R10 R5 + 0x7C200400, // 001B CALL R8 2 + 0xA8040001, // 001C EXBLK 1 1 + 0x80041000, // 001D RET 1 R8 + 0x70020111, // 001E JMP #0131 + 0x881C0B0A, // 001F GETMBR R7 R5 K10 + 0x1C1C0F0B, // 0020 EQ R7 R7 K11 + 0x781E007A, // 0021 JMPF R7 #009D + 0x881C0B0C, // 0022 GETMBR R7 R5 K12 + 0x1C1C0F0B, // 0023 EQ R7 R7 K11 + 0x781E0077, // 0024 JMPF R7 #009D + 0x881C0104, // 0025 GETMBR R7 R0 K4 + 0x881C0F05, // 0026 GETMBR R7 R7 K5 + 0x8C1C0F06, // 0027 GETMET R7 R7 K6 + 0x88240B07, // 0028 GETMBR R9 R5 K7 + 0x542A0059, // 0029 LDINT R10 90 + 0x7C1C0600, // 002A CALL R7 3 + 0x780A0000, // 002B JMPF R2 #002D + 0x901E1A02, // 002C SETMBR R7 K13 R2 + 0x780E0000, // 002D JMPF R3 #002F + 0x901E1C03, // 002E SETMBR R7 K14 R3 + 0x901E1E00, // 002F SETMBR R7 K15 R0 + 0x90162007, // 0030 SETMBR R5 K16 R7 + 0x88200F11, // 0031 GETMBR R8 R7 K17 + 0x8C201112, // 0032 GETMET R8 R8 K18 + 0x88280B13, // 0033 GETMBR R10 R5 K19 + 0x502C0000, // 0034 LDBOOL R11 0 0 + 0x7C200600, // 0035 CALL R8 3 + 0x74220015, // 0036 JMPT R8 #004D + 0xB8222800, // 0037 GETNGBL R8 K20 + 0x8C201115, // 0038 GETMET R8 R8 K21 + 0x542A0003, // 0039 LDINT R10 4 + 0x7C200400, // 003A CALL R8 2 + 0x78220009, // 003B JMPF R8 #0046 + 0xB8222C00, // 003C GETNGBL R8 K22 + 0x60240018, // 003D GETGBL R9 G24 + 0x58280017, // 003E LDCONST R10 K23 + 0x882C0B13, // 003F GETMBR R11 R5 K19 + 0x88300F11, // 0040 GETMBR R12 R7 K17 + 0x8C301918, // 0041 GETMET R12 R12 K24 + 0x7C300200, // 0042 CALL R12 1 + 0x7C240600, // 0043 CALL R9 3 + 0x542A0003, // 0044 LDINT R10 4 + 0x7C200400, // 0045 CALL R8 2 + 0x8C200119, // 0046 GETMET R8 R0 K25 + 0x5C280A00, // 0047 MOVE R10 R5 + 0x502C0000, // 0048 LDBOOL R11 0 0 + 0x7C200600, // 0049 CALL R8 3 + 0x50200000, // 004A LDBOOL R8 0 0 + 0xA8040001, // 004B EXBLK 1 1 + 0x80041000, // 004C RET 1 R8 + 0x8C200B1A, // 004D GETMET R8 R5 K26 + 0x7C200200, // 004E CALL R8 1 + 0x74220002, // 004F JMPT R8 #0053 + 0x50200000, // 0050 LDBOOL R8 0 0 + 0xA8040001, // 0051 EXBLK 1 1 + 0x80041000, // 0052 RET 1 R8 + 0x88200104, // 0053 GETMBR R8 R0 K4 + 0x8C20111B, // 0054 GETMET R8 R8 K27 + 0x5C280A00, // 0055 MOVE R10 R5 + 0x7C200400, // 0056 CALL R8 2 + 0x88200B1C, // 0057 GETMBR R8 R5 K28 + 0x5426000F, // 0058 LDINT R9 16 + 0x20201009, // 0059 NE R8 R8 R9 + 0x7822001A, // 005A JMPF R8 #0076 + 0xB8220000, // 005B GETNGBL R8 K0 + 0x8C20111D, // 005C GETMET R8 R8 K29 + 0x88280B1C, // 005D GETMBR R10 R5 K28 + 0x7C200400, // 005E CALL R8 2 + 0x5C241000, // 005F MOVE R9 R8 + 0x74260004, // 0060 JMPT R9 #0066 + 0x60240018, // 0061 GETGBL R9 G24 + 0x5828001E, // 0062 LDCONST R10 K30 + 0x882C0B1C, // 0063 GETMBR R11 R5 K28 + 0x7C240400, // 0064 CALL R9 2 + 0x5C201200, // 0065 MOVE R8 R9 + 0xB8262800, // 0066 GETNGBL R9 K20 + 0x8C241315, // 0067 GETMET R9 R9 K21 + 0x582C001F, // 0068 LDCONST R11 K31 0x7C240400, // 0069 CALL R9 2 - 0x5C201200, // 006A MOVE R8 R9 - 0xB8262E00, // 006B GETNGBL R9 K23 - 0x8C241318, // 006C GETMET R9 R9 K24 - 0x582C0021, // 006D LDCONST R11 K33 - 0x7C240400, // 006E CALL R9 2 - 0x78260009, // 006F JMPF R9 #007A - 0xB8260400, // 0070 GETNGBL R9 K2 - 0x60280018, // 0071 GETGBL R10 G24 - 0x582C0022, // 0072 LDCONST R11 K34 - 0x88300F0D, // 0073 GETMBR R12 R7 K13 - 0x5C341000, // 0074 MOVE R13 R8 - 0x5C380400, // 0075 MOVE R14 R2 - 0x5C3C0600, // 0076 MOVE R15 R3 - 0x7C280A00, // 0077 CALL R10 5 - 0x582C0021, // 0078 LDCONST R11 K33 - 0x7C240400, // 0079 CALL R9 2 - 0x70020017, // 007A JMP #0093 - 0xB8222E00, // 007B GETNGBL R8 K23 - 0x8C201118, // 007C GETMET R8 R8 K24 - 0x542A0003, // 007D LDINT R10 4 - 0x7C200400, // 007E CALL R8 2 - 0x78220012, // 007F JMPF R8 #0093 - 0xB8220400, // 0080 GETNGBL R8 K2 - 0x60240018, // 0081 GETGBL R9 G24 - 0x58280023, // 0082 LDCONST R10 K35 - 0x882C0F0D, // 0083 GETMBR R11 R7 K13 - 0x88300B16, // 0084 GETMBR R12 R5 K22 - 0x88340B24, // 0085 GETMBR R13 R5 K36 - 0x78360001, // 0086 JMPF R13 #0089 - 0x58340025, // 0087 LDCONST R13 K37 - 0x70020000, // 0088 JMP #008A - 0x58340026, // 0089 LDCONST R13 K38 - 0x88380B27, // 008A GETMBR R14 R5 K39 - 0x603C0008, // 008B GETGBL R15 G8 - 0x88400B28, // 008C GETMBR R16 R5 K40 - 0x7C3C0200, // 008D CALL R15 1 - 0x5C400400, // 008E MOVE R16 R2 - 0x5C440600, // 008F MOVE R17 R3 - 0x7C241000, // 0090 CALL R9 8 - 0x542A0003, // 0091 LDINT R10 4 - 0x7C200400, // 0092 CALL R8 2 - 0x88200129, // 0093 GETMBR R8 R0 K41 - 0x8C20112A, // 0094 GETMET R8 R8 K42 - 0x5C280A00, // 0095 MOVE R10 R5 - 0x7C200400, // 0096 CALL R8 2 - 0x5C101000, // 0097 MOVE R4 R8 - 0x5C200800, // 0098 MOVE R8 R4 - 0x74220003, // 0099 JMPT R8 #009E - 0x8C20011B, // 009A GETMET R8 R0 K27 - 0x5C280A00, // 009B MOVE R10 R5 - 0x502C0000, // 009C LDBOOL R11 0 0 - 0x7C200600, // 009D CALL R8 3 - 0x50200200, // 009E LDBOOL R8 1 0 - 0xA8040001, // 009F EXBLK 1 1 - 0x80041000, // 00A0 RET 1 R8 - 0x700200A2, // 00A1 JMP #0145 - 0xB81E2E00, // 00A2 GETNGBL R7 K23 - 0x8C1C0F18, // 00A3 GETMET R7 R7 K24 - 0x54260003, // 00A4 LDINT R9 4 - 0x7C1C0400, // 00A5 CALL R7 2 - 0x781E0007, // 00A6 JMPF R7 #00AF - 0xB81E0400, // 00A7 GETNGBL R7 K2 - 0x60200018, // 00A8 GETGBL R8 G24 - 0x5824002B, // 00A9 LDCONST R9 K43 - 0x88280B0D, // 00AA GETMBR R10 R5 K13 - 0x882C0B16, // 00AB GETMBR R11 R5 K22 - 0x7C200600, // 00AC CALL R8 3 - 0x54260003, // 00AD LDINT R9 4 + 0x78260009, // 006A JMPF R9 #0075 + 0xB8262C00, // 006B GETNGBL R9 K22 + 0x60280018, // 006C GETGBL R10 G24 + 0x582C0020, // 006D LDCONST R11 K32 + 0x88300F0A, // 006E GETMBR R12 R7 K10 + 0x5C341000, // 006F MOVE R13 R8 + 0x5C380400, // 0070 MOVE R14 R2 + 0x5C3C0600, // 0071 MOVE R15 R3 + 0x7C280A00, // 0072 CALL R10 5 + 0x582C001F, // 0073 LDCONST R11 K31 + 0x7C240400, // 0074 CALL R9 2 + 0x70020017, // 0075 JMP #008E + 0xB8222800, // 0076 GETNGBL R8 K20 + 0x8C201115, // 0077 GETMET R8 R8 K21 + 0x542A0003, // 0078 LDINT R10 4 + 0x7C200400, // 0079 CALL R8 2 + 0x78220012, // 007A JMPF R8 #008E + 0xB8222C00, // 007B GETNGBL R8 K22 + 0x60240018, // 007C GETGBL R9 G24 + 0x58280021, // 007D LDCONST R10 K33 + 0x882C0F0A, // 007E GETMBR R11 R7 K10 + 0x88300B13, // 007F GETMBR R12 R5 K19 + 0x88340B22, // 0080 GETMBR R13 R5 K34 + 0x78360001, // 0081 JMPF R13 #0084 + 0x58340023, // 0082 LDCONST R13 K35 + 0x70020000, // 0083 JMP #0085 + 0x58340024, // 0084 LDCONST R13 K36 + 0x88380B25, // 0085 GETMBR R14 R5 K37 + 0x603C0008, // 0086 GETGBL R15 G8 + 0x88400B26, // 0087 GETMBR R16 R5 K38 + 0x7C3C0200, // 0088 CALL R15 1 + 0x5C400400, // 0089 MOVE R16 R2 + 0x5C440600, // 008A MOVE R17 R3 + 0x7C241000, // 008B CALL R9 8 + 0x542A0003, // 008C LDINT R10 4 + 0x7C200400, // 008D CALL R8 2 + 0x88200127, // 008E GETMBR R8 R0 K39 + 0x8C201128, // 008F GETMET R8 R8 K40 + 0x5C280A00, // 0090 MOVE R10 R5 + 0x7C200400, // 0091 CALL R8 2 + 0x5C101000, // 0092 MOVE R4 R8 + 0x5C200800, // 0093 MOVE R8 R4 + 0x74220003, // 0094 JMPT R8 #0099 + 0x8C200119, // 0095 GETMET R8 R0 K25 + 0x5C280A00, // 0096 MOVE R10 R5 + 0x502C0000, // 0097 LDBOOL R11 0 0 + 0x7C200600, // 0098 CALL R8 3 + 0x50200200, // 0099 LDBOOL R8 1 0 + 0xA8040001, // 009A EXBLK 1 1 + 0x80041000, // 009B RET 1 R8 + 0x70020093, // 009C JMP #0131 + 0xB81E2800, // 009D GETNGBL R7 K20 + 0x8C1C0F15, // 009E GETMET R7 R7 K21 + 0x54260003, // 009F LDINT R9 4 + 0x7C1C0400, // 00A0 CALL R7 2 + 0x781E0007, // 00A1 JMPF R7 #00AA + 0xB81E2C00, // 00A2 GETNGBL R7 K22 + 0x60200018, // 00A3 GETGBL R8 G24 + 0x58240029, // 00A4 LDCONST R9 K41 + 0x88280B0A, // 00A5 GETMBR R10 R5 K10 + 0x882C0B13, // 00A6 GETMBR R11 R5 K19 + 0x7C200600, // 00A7 CALL R8 3 + 0x54260003, // 00A8 LDINT R9 4 + 0x7C1C0400, // 00A9 CALL R7 2 + 0x881C0104, // 00AA GETMBR R7 R0 K4 + 0x881C0F05, // 00AB GETMBR R7 R7 K5 + 0x8C1C0F2A, // 00AC GETMET R7 R7 K42 + 0x88240B0A, // 00AD GETMBR R9 R5 K10 0x7C1C0400, // 00AE CALL R7 2 - 0x881C0107, // 00AF GETMBR R7 R0 K7 - 0x881C0F08, // 00B0 GETMBR R7 R7 K8 - 0x8C1C0F2C, // 00B1 GETMET R7 R7 K44 - 0x88240B0D, // 00B2 GETMBR R9 R5 K13 - 0x7C1C0400, // 00B3 CALL R7 2 - 0x4C200000, // 00B4 LDNIL R8 - 0x1C200E08, // 00B5 EQ R8 R7 R8 - 0x78220009, // 00B6 JMPF R8 #00C1 - 0xB8220400, // 00B7 GETNGBL R8 K2 - 0x60240008, // 00B8 GETGBL R9 G8 - 0x88280B0D, // 00B9 GETMBR R10 R5 K13 - 0x7C240200, // 00BA CALL R9 1 - 0x00265A09, // 00BB ADD R9 K45 R9 - 0x58280021, // 00BC LDCONST R10 K33 - 0x7C200400, // 00BD CALL R8 2 - 0x50200000, // 00BE LDBOOL R8 0 0 - 0xA8040001, // 00BF EXBLK 1 1 - 0x80041000, // 00C0 RET 1 R8 - 0x780A0000, // 00C1 JMPF R2 #00C3 - 0x901E2002, // 00C2 SETMBR R7 K16 R2 - 0x780E0000, // 00C3 JMPF R3 #00C5 - 0x901E2203, // 00C4 SETMBR R7 K17 R3 - 0x901E2400, // 00C5 SETMBR R7 K18 R0 - 0x90162607, // 00C6 SETMBR R5 K19 R7 - 0x8C200F2E, // 00C7 GETMET R8 R7 K46 - 0x88280B16, // 00C8 GETMBR R10 R5 K22 - 0x502C0200, // 00C9 LDBOOL R11 1 0 - 0x7C200600, // 00CA CALL R8 3 - 0x74220017, // 00CB JMPT R8 #00E4 - 0xB8222E00, // 00CC GETNGBL R8 K23 - 0x8C201118, // 00CD GETMET R8 R8 K24 - 0x58280021, // 00CE LDCONST R10 K33 - 0x7C200400, // 00CF CALL R8 2 - 0x7822000B, // 00D0 JMPF R8 #00DD - 0xB8220400, // 00D1 GETNGBL R8 K2 - 0x60240008, // 00D2 GETGBL R9 G8 - 0x88280B16, // 00D3 GETMBR R10 R5 K22 - 0x7C240200, // 00D4 CALL R9 1 - 0x00265E09, // 00D5 ADD R9 K47 R9 - 0x00241330, // 00D6 ADD R9 R9 K48 - 0x60280008, // 00D7 GETGBL R10 G8 - 0x882C0F31, // 00D8 GETMBR R11 R7 K49 - 0x7C280200, // 00D9 CALL R10 1 - 0x0024120A, // 00DA ADD R9 R9 R10 - 0x58280021, // 00DB LDCONST R10 K33 - 0x7C200400, // 00DC CALL R8 2 - 0x8C200132, // 00DD GETMET R8 R0 K50 - 0x5C280A00, // 00DE MOVE R10 R5 - 0x502C0000, // 00DF LDBOOL R11 0 0 - 0x7C200600, // 00E0 CALL R8 3 - 0x50200000, // 00E1 LDBOOL R8 0 0 - 0xA8040001, // 00E2 EXBLK 1 1 - 0x80041000, // 00E3 RET 1 R8 - 0x8C200B33, // 00E4 GETMET R8 R5 K51 - 0x7C200200, // 00E5 CALL R8 1 - 0xB8260000, // 00E6 GETNGBL R9 K0 - 0x88241301, // 00E7 GETMBR R9 R9 K1 - 0x8C241302, // 00E8 GETMET R9 R9 K2 - 0x582C0034, // 00E9 LDCONST R11 K52 - 0x7C240400, // 00EA CALL R9 2 - 0x5C241000, // 00EB MOVE R9 R8 - 0x74260002, // 00EC JMPT R9 #00F0 - 0x50240000, // 00ED LDBOOL R9 0 0 - 0xA8040001, // 00EE EXBLK 1 1 - 0x80041200, // 00EF RET 1 R9 - 0x8C240B1C, // 00F0 GETMET R9 R5 K28 - 0x7C240200, // 00F1 CALL R9 1 - 0xB8262E00, // 00F2 GETNGBL R9 K23 - 0x8C241318, // 00F3 GETMET R9 R9 K24 - 0x542E0003, // 00F4 LDINT R11 4 - 0x7C240400, // 00F5 CALL R9 2 - 0x78260012, // 00F6 JMPF R9 #010A - 0xB8260400, // 00F7 GETNGBL R9 K2 - 0x60280008, // 00F8 GETGBL R10 G8 - 0x882C0B36, // 00F9 GETMBR R11 R5 K54 - 0x7C280200, // 00FA CALL R10 1 - 0x002A6A0A, // 00FB ADD R10 K53 R10 - 0x00281537, // 00FC ADD R10 R10 K55 - 0x602C0008, // 00FD GETGBL R11 G8 - 0x88300B1E, // 00FE GETMBR R12 R5 K30 - 0x7C2C0200, // 00FF CALL R11 1 - 0x0028140B, // 0100 ADD R10 R10 R11 - 0x00281538, // 0101 ADD R10 R10 K56 - 0x602C0008, // 0102 GETGBL R11 G8 - 0x88300B27, // 0103 GETMBR R12 R5 K39 - 0x5436FFFE, // 0104 LDINT R13 65535 - 0x2C30180D, // 0105 AND R12 R12 R13 - 0x7C2C0200, // 0106 CALL R11 1 - 0x0028140B, // 0107 ADD R10 R10 R11 - 0x542E0003, // 0108 LDINT R11 4 - 0x7C240400, // 0109 CALL R9 2 - 0x88240107, // 010A GETMBR R9 R0 K7 - 0x8C24131D, // 010B GETMET R9 R9 K29 - 0x5C2C0A00, // 010C MOVE R11 R5 - 0x7C240400, // 010D CALL R9 2 - 0x88240B36, // 010E GETMBR R9 R5 K54 - 0x1C28130E, // 010F EQ R10 R9 K14 - 0x782A000F, // 0110 JMPF R10 #0121 - 0x88280B1E, // 0111 GETMBR R10 R5 K30 - 0x542E000F, // 0112 LDINT R11 16 - 0x1C28140B, // 0113 EQ R10 R10 R11 - 0x782A0009, // 0114 JMPF R10 #011F - 0x88280139, // 0115 GETMBR R10 R0 K57 - 0x8C28153A, // 0116 GETMET R10 R10 K58 - 0x5C300A00, // 0117 MOVE R12 R5 - 0x7C280400, // 0118 CALL R10 2 - 0x5C101400, // 0119 MOVE R4 R10 - 0x78120003, // 011A JMPF R4 #011F - 0x88280139, // 011B GETMBR R10 R0 K57 - 0x8C28153B, // 011C GETMET R10 R10 K59 - 0x5C300000, // 011D MOVE R12 R0 - 0x7C280400, // 011E CALL R10 2 - 0x50100200, // 011F LDBOOL R4 1 0 - 0x70020023, // 0120 JMP #0145 - 0x1C28133C, // 0121 EQ R10 R9 K60 - 0x782A001A, // 0122 JMPF R10 #013E - 0xB82A0000, // 0123 GETNGBL R10 K0 - 0x88281501, // 0124 GETMBR R10 R10 K1 - 0x8C281502, // 0125 GETMET R10 R10 K2 - 0x5830003D, // 0126 LDCONST R12 K61 - 0x7C280400, // 0127 CALL R10 2 - 0x88280139, // 0128 GETMBR R10 R0 K57 - 0x8C28152A, // 0129 GETMET R10 R10 K42 - 0x5C300A00, // 012A MOVE R12 R5 - 0x7C280400, // 012B CALL R10 2 - 0x5C101400, // 012C MOVE R4 R10 - 0xB82A0000, // 012D GETNGBL R10 K0 - 0x88281501, // 012E GETMBR R10 R10 K1 - 0x8C281502, // 012F GETMET R10 R10 K2 - 0x5830003E, // 0130 LDCONST R12 K62 - 0x7C280400, // 0131 CALL R10 2 - 0x78120004, // 0132 JMPF R4 #0138 - 0x88280139, // 0133 GETMBR R10 R0 K57 - 0x8C28153B, // 0134 GETMET R10 R10 K59 - 0x5C300000, // 0135 MOVE R12 R0 - 0x7C280400, // 0136 CALL R10 2 - 0x70020003, // 0137 JMP #013C - 0x8C280132, // 0138 GETMET R10 R0 K50 - 0x5C300A00, // 0139 MOVE R12 R5 - 0x50340200, // 013A LDBOOL R13 1 0 - 0x7C280600, // 013B CALL R10 3 - 0x50100200, // 013C LDBOOL R4 1 0 - 0x70020006, // 013D JMP #0145 - 0xB82A0400, // 013E GETNGBL R10 K2 - 0x602C0008, // 013F GETGBL R11 G8 - 0x5C301200, // 0140 MOVE R12 R9 - 0x7C2C0200, // 0141 CALL R11 1 - 0x002E7E0B, // 0142 ADD R11 K63 R11 - 0x58300021, // 0143 LDCONST R12 K33 - 0x7C280400, // 0144 CALL R10 2 - 0xA8040001, // 0145 EXBLK 1 1 - 0x80040800, // 0146 RET 1 R4 - 0xA8040001, // 0147 EXBLK 1 1 - 0x70020017, // 0148 JMP #0161 - 0xAC140002, // 0149 CATCH R5 0 2 - 0x70020014, // 014A JMP #0160 - 0xB81E0400, // 014B GETNGBL R7 K2 - 0x60200008, // 014C GETGBL R8 G8 - 0x5C240A00, // 014D MOVE R9 R5 - 0x7C200200, // 014E CALL R8 1 - 0x00228008, // 014F ADD R8 K64 R8 - 0x00201141, // 0150 ADD R8 R8 K65 - 0x60240008, // 0151 GETGBL R9 G8 - 0x5C280C00, // 0152 MOVE R10 R6 - 0x7C240200, // 0153 CALL R9 1 - 0x00201009, // 0154 ADD R8 R8 R9 - 0x58240042, // 0155 LDCONST R9 K66 - 0x7C1C0400, // 0156 CALL R7 2 - 0xB81E2E00, // 0157 GETNGBL R7 K23 - 0x881C0F43, // 0158 GETMBR R7 R7 K67 - 0x781E0002, // 0159 JMPF R7 #015D - 0xA41E8800, // 015A IMPORT R7 K68 - 0x8C200F45, // 015B GETMET R8 R7 K69 - 0x7C200200, // 015C CALL R8 1 - 0x501C0000, // 015D LDBOOL R7 0 0 - 0x80040E00, // 015E RET 1 R7 - 0x70020000, // 015F JMP #0161 - 0xB0080000, // 0160 RAISE 2 R0 R0 - 0x80000000, // 0161 RET 0 + 0x4C200000, // 00AF LDNIL R8 + 0x1C200E08, // 00B0 EQ R8 R7 R8 + 0x78220009, // 00B1 JMPF R8 #00BC + 0xB8222C00, // 00B2 GETNGBL R8 K22 + 0x60240008, // 00B3 GETGBL R9 G8 + 0x88280B0A, // 00B4 GETMBR R10 R5 K10 + 0x7C240200, // 00B5 CALL R9 1 + 0x00265609, // 00B6 ADD R9 K43 R9 + 0x5828001F, // 00B7 LDCONST R10 K31 + 0x7C200400, // 00B8 CALL R8 2 + 0x50200000, // 00B9 LDBOOL R8 0 0 + 0xA8040001, // 00BA EXBLK 1 1 + 0x80041000, // 00BB RET 1 R8 + 0x780A0000, // 00BC JMPF R2 #00BE + 0x901E1A02, // 00BD SETMBR R7 K13 R2 + 0x780E0000, // 00BE JMPF R3 #00C0 + 0x901E1C03, // 00BF SETMBR R7 K14 R3 + 0x901E1E00, // 00C0 SETMBR R7 K15 R0 + 0x90162007, // 00C1 SETMBR R5 K16 R7 + 0x8C200F2C, // 00C2 GETMET R8 R7 K44 + 0x88280B13, // 00C3 GETMBR R10 R5 K19 + 0x502C0200, // 00C4 LDBOOL R11 1 0 + 0x7C200600, // 00C5 CALL R8 3 + 0x74220017, // 00C6 JMPT R8 #00DF + 0xB8222800, // 00C7 GETNGBL R8 K20 + 0x8C201115, // 00C8 GETMET R8 R8 K21 + 0x5828001F, // 00C9 LDCONST R10 K31 + 0x7C200400, // 00CA CALL R8 2 + 0x7822000B, // 00CB JMPF R8 #00D8 + 0xB8222C00, // 00CC GETNGBL R8 K22 + 0x60240008, // 00CD GETGBL R9 G8 + 0x88280B13, // 00CE GETMBR R10 R5 K19 + 0x7C240200, // 00CF CALL R9 1 + 0x00265A09, // 00D0 ADD R9 K45 R9 + 0x0024132E, // 00D1 ADD R9 R9 K46 + 0x60280008, // 00D2 GETGBL R10 G8 + 0x882C0F2F, // 00D3 GETMBR R11 R7 K47 + 0x7C280200, // 00D4 CALL R10 1 + 0x0024120A, // 00D5 ADD R9 R9 R10 + 0x5828001F, // 00D6 LDCONST R10 K31 + 0x7C200400, // 00D7 CALL R8 2 + 0x8C200130, // 00D8 GETMET R8 R0 K48 + 0x5C280A00, // 00D9 MOVE R10 R5 + 0x502C0000, // 00DA LDBOOL R11 0 0 + 0x7C200600, // 00DB CALL R8 3 + 0x50200000, // 00DC LDBOOL R8 0 0 + 0xA8040001, // 00DD EXBLK 1 1 + 0x80041000, // 00DE RET 1 R8 + 0x8C200B31, // 00DF GETMET R8 R5 K49 + 0x7C200200, // 00E0 CALL R8 1 + 0x5C241000, // 00E1 MOVE R9 R8 + 0x74260002, // 00E2 JMPT R9 #00E6 + 0x50240000, // 00E3 LDBOOL R9 0 0 + 0xA8040001, // 00E4 EXBLK 1 1 + 0x80041200, // 00E5 RET 1 R9 + 0x8C240B1A, // 00E6 GETMET R9 R5 K26 + 0x7C240200, // 00E7 CALL R9 1 + 0xB8262800, // 00E8 GETNGBL R9 K20 + 0x8C241315, // 00E9 GETMET R9 R9 K21 + 0x542E0003, // 00EA LDINT R11 4 + 0x7C240400, // 00EB CALL R9 2 + 0x78260012, // 00EC JMPF R9 #0100 + 0xB8262C00, // 00ED GETNGBL R9 K22 + 0x60280008, // 00EE GETGBL R10 G8 + 0x882C0B33, // 00EF GETMBR R11 R5 K51 + 0x7C280200, // 00F0 CALL R10 1 + 0x002A640A, // 00F1 ADD R10 K50 R10 + 0x00281534, // 00F2 ADD R10 R10 K52 + 0x602C0008, // 00F3 GETGBL R11 G8 + 0x88300B1C, // 00F4 GETMBR R12 R5 K28 + 0x7C2C0200, // 00F5 CALL R11 1 + 0x0028140B, // 00F6 ADD R10 R10 R11 + 0x00281535, // 00F7 ADD R10 R10 K53 + 0x602C0008, // 00F8 GETGBL R11 G8 + 0x88300B25, // 00F9 GETMBR R12 R5 K37 + 0x5436FFFE, // 00FA LDINT R13 65535 + 0x2C30180D, // 00FB AND R12 R12 R13 + 0x7C2C0200, // 00FC CALL R11 1 + 0x0028140B, // 00FD ADD R10 R10 R11 + 0x542E0003, // 00FE LDINT R11 4 + 0x7C240400, // 00FF CALL R9 2 + 0x88240104, // 0100 GETMBR R9 R0 K4 + 0x8C24131B, // 0101 GETMET R9 R9 K27 + 0x5C2C0A00, // 0102 MOVE R11 R5 + 0x7C240400, // 0103 CALL R9 2 + 0x88240B33, // 0104 GETMBR R9 R5 K51 + 0x1C28130B, // 0105 EQ R10 R9 K11 + 0x782A000F, // 0106 JMPF R10 #0117 + 0x88280B1C, // 0107 GETMBR R10 R5 K28 + 0x542E000F, // 0108 LDINT R11 16 + 0x1C28140B, // 0109 EQ R10 R10 R11 + 0x782A0009, // 010A JMPF R10 #0115 + 0x88280136, // 010B GETMBR R10 R0 K54 + 0x8C281537, // 010C GETMET R10 R10 K55 + 0x5C300A00, // 010D MOVE R12 R5 + 0x7C280400, // 010E CALL R10 2 + 0x5C101400, // 010F MOVE R4 R10 + 0x78120003, // 0110 JMPF R4 #0115 + 0x88280136, // 0111 GETMBR R10 R0 K54 + 0x8C281538, // 0112 GETMET R10 R10 K56 + 0x5C300000, // 0113 MOVE R12 R0 + 0x7C280400, // 0114 CALL R10 2 + 0x50100200, // 0115 LDBOOL R4 1 0 + 0x70020019, // 0116 JMP #0131 + 0x1C281339, // 0117 EQ R10 R9 K57 + 0x782A0010, // 0118 JMPF R10 #012A + 0x88280136, // 0119 GETMBR R10 R0 K54 + 0x8C281528, // 011A GETMET R10 R10 K40 + 0x5C300A00, // 011B MOVE R12 R5 + 0x7C280400, // 011C CALL R10 2 + 0x5C101400, // 011D MOVE R4 R10 + 0x78120004, // 011E JMPF R4 #0124 + 0x88280136, // 011F GETMBR R10 R0 K54 + 0x8C281538, // 0120 GETMET R10 R10 K56 + 0x5C300000, // 0121 MOVE R12 R0 + 0x7C280400, // 0122 CALL R10 2 + 0x70020003, // 0123 JMP #0128 + 0x8C280130, // 0124 GETMET R10 R0 K48 + 0x5C300A00, // 0125 MOVE R12 R5 + 0x50340200, // 0126 LDBOOL R13 1 0 + 0x7C280600, // 0127 CALL R10 3 + 0x50100200, // 0128 LDBOOL R4 1 0 + 0x70020006, // 0129 JMP #0131 + 0xB82A2C00, // 012A GETNGBL R10 K22 + 0x602C0008, // 012B GETGBL R11 G8 + 0x5C301200, // 012C MOVE R12 R9 + 0x7C2C0200, // 012D CALL R11 1 + 0x002E740B, // 012E ADD R11 K58 R11 + 0x5830001F, // 012F LDCONST R12 K31 + 0x7C280400, // 0130 CALL R10 2 + 0xA8040001, // 0131 EXBLK 1 1 + 0x80040800, // 0132 RET 1 R4 + 0xA8040001, // 0133 EXBLK 1 1 + 0x70020017, // 0134 JMP #014D + 0xAC140002, // 0135 CATCH R5 0 2 + 0x70020014, // 0136 JMP #014C + 0xB81E2C00, // 0137 GETNGBL R7 K22 + 0x60200008, // 0138 GETGBL R8 G8 + 0x5C240A00, // 0139 MOVE R9 R5 + 0x7C200200, // 013A CALL R8 1 + 0x00227608, // 013B ADD R8 K59 R8 + 0x0020113C, // 013C ADD R8 R8 K60 + 0x60240008, // 013D GETGBL R9 G8 + 0x5C280C00, // 013E MOVE R10 R6 + 0x7C240200, // 013F CALL R9 1 + 0x00201009, // 0140 ADD R8 R8 R9 + 0x5824003D, // 0141 LDCONST R9 K61 + 0x7C1C0400, // 0142 CALL R7 2 + 0xB81E2800, // 0143 GETNGBL R7 K20 + 0x881C0F3E, // 0144 GETMBR R7 R7 K62 + 0x781E0002, // 0145 JMPF R7 #0149 + 0xA41E7E00, // 0146 IMPORT R7 K63 + 0x8C200F40, // 0147 GETMET R8 R7 K64 + 0x7C200200, // 0148 CALL R8 1 + 0x501C0000, // 0149 LDBOOL R7 0 0 + 0x80040E00, // 014A RET 1 R7 + 0x70020000, // 014B JMP #014D + 0xB0080000, // 014C RAISE 2 R0 R0 + 0x80000000, // 014D RET 0 }) ) ); @@ -596,27 +571,18 @@ be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */ 0, /* has sup protos */ &be_class_Matter_MessageHandler, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(send_response_frame), - /* K4 */ be_nested_str_weak(device), - /* K5 */ be_nested_str_weak(msg_send), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(msg_send), }), be_str_weak(send_response_frame), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x7C080400, // 0004 CALL R2 2 - 0x88080104, // 0005 GETMBR R2 R0 K4 - 0x8C080505, // 0006 GETMET R2 R2 K5 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80000000, // 0009 RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index 4d0d8cb27..a4fd6f6cc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -100,7 +100,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ /* K76 */ be_nested_str_weak(commissioning_admin_fabric), /* K77 */ be_nested_str_weak(set_or_nil), /* K78 */ be_nested_str_weak(Tasmota), - /* K79 */ be_nested_str_weak(vendorid), + /* K79 */ be_nested_str_weak(VENDOR_ID), /* K80 */ be_nested_str_weak(DeviceName), /* K81 */ be_nested_str_weak(FriendlyName), /* K82 */ be_nested_str_weak(FriendlyName1), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index 1a1d559c0..5c5fe6e53 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -730,7 +730,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0, /* has sup protos */ &be_class_Matter_UDPServer, 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ + ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(profiler), /* K2 */ be_const_int(0), @@ -746,15 +746,14 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ /* K12 */ be_nested_str_weak(log), /* K13 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), /* K14 */ be_nested_str_weak(dispatch_cb), - /* K15 */ be_nested_str_weak(udp_loop_dispatch), - /* K16 */ be_nested_str_weak(dump), - /* K17 */ be_const_int(2), - /* K18 */ be_nested_str_weak(MAX_PACKETS_READ), - /* K19 */ be_nested_str_weak(_resend_packets), + /* K15 */ be_nested_str_weak(dump), + /* K16 */ be_const_int(2), + /* K17 */ be_nested_str_weak(MAX_PACKETS_READ), + /* K18 */ be_nested_str_weak(_resend_packets), }), be_str_weak(loop), &be_const_str_solidified, - ( &(const binstruction[62]) { /* code */ + ( &(const binstruction[59]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x88040301, // 0001 GETMBR R1 R1 K1 0x58080002, // 0002 LDCONST R2 K2 @@ -769,7 +768,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x7C0C0400, // 000B CALL R3 2 0x4C100000, // 000C LDNIL R4 0x20100604, // 000D NE R4 R3 R4 - 0x7812002B, // 000E JMPF R4 #003B + 0x78120028, // 000E JMPF R4 #0038 0x8C100306, // 000F GETMET R4 R1 K6 0x7C100200, // 0010 CALL R4 1 0x90020A03, // 0011 SETMBR R0 K5 R3 @@ -792,31 +791,28 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x54220003, // 0022 LDINT R8 4 0x7C180400, // 0023 CALL R6 2 0x8818010E, // 0024 GETMBR R6 R0 K14 - 0x781A0007, // 0025 JMPF R6 #002E - 0x8C18030C, // 0026 GETMET R6 R1 K12 - 0x5820000F, // 0027 LDCONST R8 K15 - 0x7C180400, // 0028 CALL R6 2 - 0x8C18010E, // 0029 GETMET R6 R0 K14 - 0x5C200600, // 002A MOVE R8 R3 - 0x5C240800, // 002B MOVE R9 R4 - 0x5C280A00, // 002C MOVE R10 R5 - 0x7C180800, // 002D CALL R6 4 - 0x8C180310, // 002E GETMET R6 R1 K16 - 0x58200011, // 002F LDCONST R8 K17 - 0x7C180400, // 0030 CALL R6 2 - 0x88180112, // 0031 GETMBR R6 R0 K18 - 0x14180406, // 0032 LT R6 R2 R6 - 0x781A0004, // 0033 JMPF R6 #0039 - 0x88180103, // 0034 GETMBR R6 R0 K3 - 0x8C180D04, // 0035 GETMET R6 R6 K4 - 0x7C180200, // 0036 CALL R6 1 - 0x5C0C0C00, // 0037 MOVE R3 R6 - 0x70020000, // 0038 JMP #003A - 0x4C0C0000, // 0039 LDNIL R3 - 0x7001FFD0, // 003A JMP #000C - 0x8C100113, // 003B GETMET R4 R0 K19 - 0x7C100200, // 003C CALL R4 1 - 0x80000000, // 003D RET 0 + 0x781A0004, // 0025 JMPF R6 #002B + 0x8C18010E, // 0026 GETMET R6 R0 K14 + 0x5C200600, // 0027 MOVE R8 R3 + 0x5C240800, // 0028 MOVE R9 R4 + 0x5C280A00, // 0029 MOVE R10 R5 + 0x7C180800, // 002A CALL R6 4 + 0x8C18030F, // 002B GETMET R6 R1 K15 + 0x58200010, // 002C LDCONST R8 K16 + 0x7C180400, // 002D CALL R6 2 + 0x88180111, // 002E GETMBR R6 R0 K17 + 0x14180406, // 002F LT R6 R2 R6 + 0x781A0004, // 0030 JMPF R6 #0036 + 0x88180103, // 0031 GETMBR R6 R0 K3 + 0x8C180D04, // 0032 GETMET R6 R6 K4 + 0x7C180200, // 0033 CALL R6 1 + 0x5C0C0C00, // 0034 MOVE R3 R6 + 0x70020000, // 0035 JMP #0037 + 0x4C0C0000, // 0036 LDNIL R3 + 0x7001FFD3, // 0037 JMP #000C + 0x8C100112, // 0038 GETMET R4 R0 K18 + 0x7C100200, // 0039 CALL R4 1 + 0x80000000, // 003A RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index 3ffed0e22..da9af4b11 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -39,12 +39,12 @@ be_local_closure(class_Matter_Device_save_before_restart, /* name */ /******************************************************************** -** Solidified function: start_operational_discovery +** Solidified function: msg_send ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ +be_local_closure(class_Matter_Device_msg_send, /* name */ be_nested_proto( - 7, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -52,29 +52,18 @@ be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(mdns), - /* K2 */ be_nested_str_weak(stop_basic_commissioning), - /* K3 */ be_nested_str_weak(root_w0), - /* K4 */ be_nested_str_weak(root_L), - /* K5 */ be_nested_str_weak(mdns_announce_op_discovery), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(send_UDP), }), - be_str_weak(start_operational_discovery), + be_str_weak(msg_send), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x4C100000, // 0004 LDNIL R4 - 0x90020604, // 0005 SETMBR R0 K3 R4 - 0x4C100000, // 0006 LDNIL R4 - 0x90020804, // 0007 SETMBR R0 K4 R4 - 0x8C100105, // 0008 GETMET R4 R0 K5 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C100400, // 000A CALL R4 2 - 0x80000000, // 000B RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -82,13 +71,211 @@ be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ /******************************************************************** -** Solidified function: find_plugin_by_endpoint +** Solidified function: mdns_remove_PASE ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ +be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(mdns_pase_eth), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K4 */ be_nested_str_weak(_matterc), + /* K5 */ be_nested_str_weak(_udp), + /* K6 */ be_nested_str_weak(commissioning_instance_eth), + /* K7 */ be_nested_str_weak(hostname_eth), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K10 */ be_nested_str_weak(eth), + /* K11 */ be_nested_str_weak(remove_service), + /* K12 */ be_nested_str_weak(mdns_pase_wifi), + /* K13 */ be_nested_str_weak(commissioning_instance_wifi), + /* K14 */ be_nested_str_weak(hostname_wifi), + /* K15 */ be_nested_str_weak(wifi), + /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K17 */ be_nested_str_weak(_X7C), + /* K18 */ be_const_int(2), + }), + be_str_weak(mdns_remove_PASE), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x780A0019, // 0003 JMPF R2 #001E + 0xB80A0400, // 0004 GETNGBL R2 K2 + 0x600C0018, // 0005 GETGBL R3 G24 + 0x58100003, // 0006 LDCONST R4 K3 + 0x58140004, // 0007 LDCONST R5 K4 + 0x58180005, // 0008 LDCONST R6 K5 + 0x881C0106, // 0009 GETMBR R7 R0 K6 + 0x88200107, // 000A GETMBR R8 R0 K7 + 0x7C0C0A00, // 000B CALL R3 5 + 0x58100008, // 000C LDCONST R4 K8 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0400, // 000E GETNGBL R2 K2 + 0x600C0018, // 000F GETGBL R3 G24 + 0x58100009, // 0010 LDCONST R4 K9 + 0x5814000A, // 0011 LDCONST R5 K10 + 0x88180106, // 0012 GETMBR R6 R0 K6 + 0x7C0C0600, // 0013 CALL R3 3 + 0x58100008, // 0014 LDCONST R4 K8 + 0x7C080400, // 0015 CALL R2 2 + 0x50080000, // 0016 LDBOOL R2 0 0 + 0x90020202, // 0017 SETMBR R0 K1 R2 + 0x8C08030B, // 0018 GETMET R2 R1 K11 + 0x58100004, // 0019 LDCONST R4 K4 + 0x58140005, // 001A LDCONST R5 K5 + 0x88180106, // 001B GETMBR R6 R0 K6 + 0x881C0107, // 001C GETMBR R7 R0 K7 + 0x7C080A00, // 001D CALL R2 5 + 0x8808010C, // 001E GETMBR R2 R0 K12 + 0x780A0019, // 001F JMPF R2 #003A + 0xB80A0400, // 0020 GETNGBL R2 K2 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100003, // 0022 LDCONST R4 K3 + 0x58140004, // 0023 LDCONST R5 K4 + 0x58180005, // 0024 LDCONST R6 K5 + 0x881C010D, // 0025 GETMBR R7 R0 K13 + 0x8820010E, // 0026 GETMBR R8 R0 K14 + 0x7C0C0A00, // 0027 CALL R3 5 + 0x58100008, // 0028 LDCONST R4 K8 + 0x7C080400, // 0029 CALL R2 2 + 0xB80A0400, // 002A GETNGBL R2 K2 + 0x600C0018, // 002B GETGBL R3 G24 + 0x58100009, // 002C LDCONST R4 K9 + 0x5814000F, // 002D LDCONST R5 K15 + 0x8818010D, // 002E GETMBR R6 R0 K13 + 0x7C0C0600, // 002F CALL R3 3 + 0x58100008, // 0030 LDCONST R4 K8 + 0x7C080400, // 0031 CALL R2 2 + 0x50080000, // 0032 LDBOOL R2 0 0 + 0x90021802, // 0033 SETMBR R0 K12 R2 + 0x8C08030B, // 0034 GETMET R2 R1 K11 + 0x58100004, // 0035 LDCONST R4 K4 + 0x58140005, // 0036 LDCONST R5 K5 + 0x8818010D, // 0037 GETMBR R6 R0 K13 + 0x881C010E, // 0038 GETMBR R7 R0 K14 + 0x7C080A00, // 0039 CALL R2 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC080002, // 003C CATCH R2 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8120400, // 003E GETNGBL R4 K2 + 0x60140008, // 003F GETGBL R5 G8 + 0x5C180400, // 0040 MOVE R6 R2 + 0x7C140200, // 0041 CALL R5 1 + 0x00162005, // 0042 ADD R5 K16 R5 + 0x00140B11, // 0043 ADD R5 R5 K17 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x00140A06, // 0047 ADD R5 R5 R6 + 0x58180012, // 0048 LDCONST R6 K18 + 0x7C100400, // 0049 CALL R4 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_qrcode_content +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resize), + /* K1 */ be_nested_str_weak(setbits), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(VENDOR_ID), + /* K4 */ be_nested_str_weak(PRODUCT_ID), + /* K5 */ be_nested_str_weak(root_discriminator), + /* K6 */ be_nested_str_weak(root_passcode), + /* K7 */ be_const_int(134217727), + /* K8 */ be_nested_str_weak(MT_X3A), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(Base38), + /* K11 */ be_nested_str_weak(encode), + }), + be_str_weak(compute_qrcode_content), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x7C040000, // 0001 CALL R1 0 + 0x8C040300, // 0002 GETMET R1 R1 K0 + 0x540E000A, // 0003 LDINT R3 11 + 0x7C040400, // 0004 CALL R1 2 + 0x8C080301, // 0005 GETMET R2 R1 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x5416000F, // 0007 LDINT R5 16 + 0x88180103, // 0008 GETMBR R6 R0 K3 + 0x7C080800, // 0009 CALL R2 4 + 0x8C080301, // 000A GETMET R2 R1 K1 + 0x54120012, // 000B LDINT R4 19 + 0x5416000F, // 000C LDINT R5 16 + 0x88180104, // 000D GETMBR R6 R0 K4 + 0x7C080800, // 000E CALL R2 4 + 0x8C080301, // 000F GETMET R2 R1 K1 + 0x54120024, // 0010 LDINT R4 37 + 0x54160007, // 0011 LDINT R5 8 + 0x541A0003, // 0012 LDINT R6 4 + 0x7C080800, // 0013 CALL R2 4 + 0x8C080301, // 0014 GETMET R2 R1 K1 + 0x5412002C, // 0015 LDINT R4 45 + 0x5416000B, // 0016 LDINT R5 12 + 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x541E0FFE, // 0018 LDINT R7 4095 + 0x2C180C07, // 0019 AND R6 R6 R7 + 0x7C080800, // 001A CALL R2 4 + 0x8C080301, // 001B GETMET R2 R1 K1 + 0x54120038, // 001C LDINT R4 57 + 0x5416001A, // 001D LDINT R5 27 + 0x88180106, // 001E GETMBR R6 R0 K6 + 0x2C180D07, // 001F AND R6 R6 K7 + 0x7C080800, // 0020 CALL R2 4 + 0xB80A1200, // 0021 GETNGBL R2 K9 + 0x8808050A, // 0022 GETMBR R2 R2 K10 + 0x8C08050B, // 0023 GETMET R2 R2 K11 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x000A1002, // 0026 ADD R2 K8 R2 + 0x80040400, // 0027 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -96,31 +283,22 @@ be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_endpoint), - /* K3 */ be_const_int(1), + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start_root_basic_commissioning), }), - be_str_weak(find_plugin_by_endpoint), + be_str_weak(_init_basic_commissioning), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C100702, // 0008 GETMET R4 R3 K2 - 0x7C100200, // 0009 CALL R4 1 - 0x1C100801, // 000A EQ R4 R4 R1 - 0x78120000, // 000B JMPF R4 #000D - 0x80040600, // 000C RET 1 R3 - 0x00080503, // 000D ADD R2 R2 K3 - 0x7001FFF1, // 000E JMP #0001 - 0x4C0C0000, // 000F LDNIL R3 - 0x80040600, // 0010 RET 1 R3 + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040302, // 0003 EQ R1 R1 K2 + 0x78060001, // 0004 JMPF R1 #0007 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x7C040200, // 0006 CALL R1 1 + 0x80000000, // 0007 RET 0 }) ) ); @@ -181,12 +359,12 @@ be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ /******************************************************************** -** Solidified function: _mdns_announce_hostname +** Solidified function: add_read_sensors_schedule ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ +be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ be_nested_proto( - 14, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -194,182 +372,29 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(start), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(eth), - /* K5 */ be_nested_str_weak(hostname_eth), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(mac), - /* K9 */ be_nested_str_weak(_X3A), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(contains), - /* K13 */ be_nested_str_weak(ip6local), - /* K14 */ be_nested_str_weak(add_hostname), - /* K15 */ be_nested_str_weak(ip), - /* K16 */ be_nested_str_weak(ip6), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(wifi), - /* K21 */ be_nested_str_weak(hostname_wifi), - /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), - /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K24 */ be_nested_str_weak(_X7C), - /* K25 */ be_const_int(2), - /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_sensor_time), + /* K1 */ be_nested_str_weak(probe_sensor_timestamp), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(jitter), }), - be_str_weak(_mdns_announce_hostname), + be_str_weak(add_read_sensors_schedule), &be_const_str_solidified, - ( &(const binstruction[144]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100502, // 0002 GETMET R4 R2 K2 - 0x7C100200, // 0003 CALL R4 1 - 0xA8020077, // 0004 EXBLK 0 #007D - 0x78060033, // 0005 JMPF R1 #003A - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x7C100200, // 0008 CALL R4 1 - 0x8C140706, // 0009 GETMET R5 R3 K6 - 0x8C1C0907, // 000A GETMET R7 R4 K7 - 0x58240008, // 000B LDCONST R9 K8 - 0x7C1C0400, // 000C CALL R7 2 - 0x58200009, // 000D LDCONST R8 K9 - 0x5824000A, // 000E LDCONST R9 K10 - 0x7C140800, // 000F CALL R5 4 - 0x90020A05, // 0010 SETMBR R0 K5 R5 - 0x8814010B, // 0011 GETMBR R5 R0 K11 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C14090C, // 0013 GETMET R5 R4 K12 - 0x581C000D, // 0014 LDCONST R7 K13 - 0x7C140400, // 0015 CALL R5 2 - 0x7416000F, // 0016 JMPT R5 #0027 - 0x8C14050E, // 0017 GETMET R5 R2 K14 - 0x881C0105, // 0018 GETMBR R7 R0 K5 - 0x8C200907, // 0019 GETMET R8 R4 K7 - 0x5828000D, // 001A LDCONST R10 K13 - 0x582C000A, // 001B LDCONST R11 K10 - 0x7C200600, // 001C CALL R8 3 - 0x8C240907, // 001D GETMET R9 R4 K7 - 0x582C000F, // 001E LDCONST R11 K15 - 0x5830000A, // 001F LDCONST R12 K10 - 0x7C240600, // 0020 CALL R9 3 - 0x8C280907, // 0021 GETMET R10 R4 K7 - 0x58300010, // 0022 LDCONST R12 K16 - 0x5834000A, // 0023 LDCONST R13 K10 - 0x7C280600, // 0024 CALL R10 3 - 0x7C140A00, // 0025 CALL R5 5 - 0x70020011, // 0026 JMP #0039 - 0xB8162200, // 0027 GETNGBL R5 K17 - 0x60180018, // 0028 GETGBL R6 G24 - 0x581C0012, // 0029 LDCONST R7 K18 - 0x88200105, // 002A GETMBR R8 R0 K5 - 0x8C240907, // 002B GETMET R9 R4 K7 - 0x582C000F, // 002C LDCONST R11 K15 - 0x5830000A, // 002D LDCONST R12 K10 - 0x7C240600, // 002E CALL R9 3 - 0x7C180600, // 002F CALL R6 3 - 0x581C0013, // 0030 LDCONST R7 K19 - 0x7C140400, // 0031 CALL R5 2 - 0x8C14050E, // 0032 GETMET R5 R2 K14 - 0x881C0105, // 0033 GETMBR R7 R0 K5 - 0x8C200907, // 0034 GETMET R8 R4 K7 - 0x5828000F, // 0035 LDCONST R10 K15 - 0x582C000A, // 0036 LDCONST R11 K10 - 0x7C200600, // 0037 CALL R8 3 - 0x7C140600, // 0038 CALL R5 3 - 0x70020032, // 0039 JMP #006D - 0xB8120600, // 003A GETNGBL R4 K3 - 0x8C100914, // 003B GETMET R4 R4 K20 - 0x7C100200, // 003C CALL R4 1 - 0x8C140706, // 003D GETMET R5 R3 K6 - 0x8C1C0907, // 003E GETMET R7 R4 K7 - 0x58240008, // 003F LDCONST R9 K8 - 0x7C1C0400, // 0040 CALL R7 2 - 0x58200009, // 0041 LDCONST R8 K9 - 0x5824000A, // 0042 LDCONST R9 K10 - 0x7C140800, // 0043 CALL R5 4 - 0x90022A05, // 0044 SETMBR R0 K21 R5 - 0x8814010B, // 0045 GETMBR R5 R0 K11 - 0x78160003, // 0046 JMPF R5 #004B - 0x8C14090C, // 0047 GETMET R5 R4 K12 - 0x581C000D, // 0048 LDCONST R7 K13 - 0x7C140400, // 0049 CALL R5 2 - 0x7416000F, // 004A JMPT R5 #005B - 0x8C14050E, // 004B GETMET R5 R2 K14 - 0x881C0115, // 004C GETMBR R7 R0 K21 - 0x8C200907, // 004D GETMET R8 R4 K7 - 0x5828000D, // 004E LDCONST R10 K13 - 0x582C000A, // 004F LDCONST R11 K10 - 0x7C200600, // 0050 CALL R8 3 - 0x8C240907, // 0051 GETMET R9 R4 K7 - 0x582C000F, // 0052 LDCONST R11 K15 - 0x5830000A, // 0053 LDCONST R12 K10 - 0x7C240600, // 0054 CALL R9 3 - 0x8C280907, // 0055 GETMET R10 R4 K7 - 0x58300010, // 0056 LDCONST R12 K16 - 0x5834000A, // 0057 LDCONST R13 K10 - 0x7C280600, // 0058 CALL R10 3 - 0x7C140A00, // 0059 CALL R5 5 - 0x70020011, // 005A JMP #006D - 0xB8162200, // 005B GETNGBL R5 K17 - 0x60180018, // 005C GETGBL R6 G24 - 0x581C0012, // 005D LDCONST R7 K18 - 0x88200115, // 005E GETMBR R8 R0 K21 - 0x8C240907, // 005F GETMET R9 R4 K7 - 0x582C000F, // 0060 LDCONST R11 K15 - 0x5830000A, // 0061 LDCONST R12 K10 - 0x7C240600, // 0062 CALL R9 3 - 0x7C180600, // 0063 CALL R6 3 - 0x581C0013, // 0064 LDCONST R7 K19 - 0x7C140400, // 0065 CALL R5 2 - 0x8C14050E, // 0066 GETMET R5 R2 K14 - 0x881C0115, // 0067 GETMBR R7 R0 K21 - 0x8C200907, // 0068 GETMET R8 R4 K7 - 0x5828000F, // 0069 LDCONST R10 K15 - 0x582C000A, // 006A LDCONST R11 K10 - 0x7C200600, // 006B CALL R8 3 - 0x7C140600, // 006C CALL R5 3 - 0xB8122200, // 006D GETNGBL R4 K17 - 0x60140018, // 006E GETGBL R5 G24 - 0x58180016, // 006F LDCONST R6 K22 - 0x78060001, // 0070 JMPF R1 #0073 - 0x581C0004, // 0071 LDCONST R7 K4 - 0x70020000, // 0072 JMP #0074 - 0x581C0014, // 0073 LDCONST R7 K20 - 0x78060001, // 0074 JMPF R1 #0077 - 0x88200105, // 0075 GETMBR R8 R0 K5 - 0x70020000, // 0076 JMP #0078 - 0x88200115, // 0077 GETMBR R8 R0 K21 - 0x7C140600, // 0078 CALL R5 3 - 0x58180013, // 0079 LDCONST R6 K19 - 0x7C100400, // 007A CALL R4 2 - 0xA8040001, // 007B EXBLK 1 1 - 0x7002000F, // 007C JMP #008D - 0xAC100002, // 007D CATCH R4 0 2 - 0x7002000C, // 007E JMP #008C - 0xB81A2200, // 007F GETNGBL R6 K17 - 0x601C0008, // 0080 GETGBL R7 G8 - 0x5C200800, // 0081 MOVE R8 R4 - 0x7C1C0200, // 0082 CALL R7 1 - 0x001E2E07, // 0083 ADD R7 K23 R7 - 0x001C0F18, // 0084 ADD R7 R7 K24 - 0x60200008, // 0085 GETGBL R8 G8 - 0x5C240A00, // 0086 MOVE R9 R5 - 0x7C200200, // 0087 CALL R8 1 - 0x001C0E08, // 0088 ADD R7 R7 R8 - 0x58200019, // 0089 LDCONST R8 K25 - 0x7C180400, // 008A CALL R6 2 - 0x70020000, // 008B JMP #008D - 0xB0080000, // 008C RAISE 2 R0 R0 - 0x8C10011A, // 008D GETMET R4 R0 K26 - 0x7C100200, // 008E CALL R4 1 - 0x80000000, // 008F RET 0 + ( &(const binstruction[14]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x740A0002, // 0003 JMPT R2 #0007 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x24080401, // 0005 GT R2 R2 R1 + 0x780A0005, // 0006 JMPF R2 #000D + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0xB80A0400, // 0008 GETNGBL R2 K2 + 0x8C080503, // 0009 GETMET R2 R2 K3 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x90020202, // 000C SETMBR R0 K1 R2 + 0x80000000, // 000D RET 0 }) ) ); @@ -377,289 +402,61 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ /******************************************************************** -** Solidified function: mdns_announce_PASE +** Solidified function: start_operational_discovery_deferred ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ +be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ be_nested_proto( - 12, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_operational_discovery), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[40]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(VP), - /* K3 */ be_nested_str_weak(vendorid), - /* K4 */ be_nested_str_weak(_X2B), - /* K5 */ be_nested_str_weak(productid), - /* K6 */ be_nested_str_weak(D), - /* K7 */ be_nested_str_weak(commissioning_discriminator), - /* K8 */ be_nested_str_weak(CM), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(T), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(SII), - /* K13 */ be_nested_str_weak(SAI), - /* K14 */ be_nested_str_weak(commissioning_instance_wifi), - /* K15 */ be_nested_str_weak(random), - /* K16 */ be_nested_str_weak(tohex), - /* K17 */ be_nested_str_weak(commissioning_instance_eth), - /* K18 */ be_nested_str_weak(hostname_eth), - /* K19 */ be_nested_str_weak(add_service), - /* K20 */ be_nested_str_weak(_matterc), - /* K21 */ be_nested_str_weak(_udp), - /* K22 */ be_nested_str_weak(mdns_pase_eth), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K25 */ be_nested_str_weak(eth), - /* K26 */ be_const_int(2), - /* K27 */ be_nested_str_weak(_L), - /* K28 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K29 */ be_const_int(3), - /* K30 */ be_nested_str_weak(add_subtype), - /* K31 */ be_nested_str_weak(_S), - /* K32 */ be_nested_str_weak(_V), - /* K33 */ be_nested_str_weak(_CM1), - /* K34 */ be_nested_str_weak(hostname_wifi), - /* K35 */ be_nested_str_weak(mdns_pase_wifi), - /* K36 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K37 */ be_nested_str_weak(wifi), - /* K38 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K39 */ be_nested_str_weak(_X7C), }), - be_str_weak(mdns_announce_PASE), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_operational_discovery_deferred), &be_const_str_solidified, - ( &(const binstruction[225]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x600C0013, // 0002 GETGBL R3 G19 - 0x7C0C0000, // 0003 CALL R3 0 - 0x60100008, // 0004 GETGBL R4 G8 - 0x88140103, // 0005 GETMBR R5 R0 K3 - 0x7C100200, // 0006 CALL R4 1 - 0x00100904, // 0007 ADD R4 R4 K4 - 0x60140008, // 0008 GETGBL R5 G8 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x7C140200, // 000A CALL R5 1 - 0x00100805, // 000B ADD R4 R4 R5 - 0x980E0404, // 000C SETIDX R3 K2 R4 - 0x88100107, // 000D GETMBR R4 R0 K7 - 0x980E0C04, // 000E SETIDX R3 K6 R4 - 0x980E1109, // 000F SETIDX R3 K8 K9 - 0x980E150B, // 0010 SETIDX R3 K10 K11 - 0x54121387, // 0011 LDINT R4 5000 - 0x980E1804, // 0012 SETIDX R3 K12 R4 - 0x5412012B, // 0013 LDINT R4 300 - 0x980E1A04, // 0014 SETIDX R3 K13 R4 - 0x8C10050F, // 0015 GETMET R4 R2 K15 - 0x541A0007, // 0016 LDINT R6 8 - 0x7C100400, // 0017 CALL R4 2 - 0x8C100910, // 0018 GETMET R4 R4 K16 - 0x7C100200, // 0019 CALL R4 1 - 0x90021C04, // 001A SETMBR R0 K14 R4 - 0x8C10050F, // 001B GETMET R4 R2 K15 - 0x541A0007, // 001C LDINT R6 8 - 0x7C100400, // 001D CALL R4 2 - 0x8C100910, // 001E GETMET R4 R4 K16 - 0x7C100200, // 001F CALL R4 1 - 0x90022204, // 0020 SETMBR R0 K17 R4 - 0xA80200AD, // 0021 EXBLK 0 #00D0 - 0x88100112, // 0022 GETMBR R4 R0 K18 - 0x78120053, // 0023 JMPF R4 #0078 - 0x8C100313, // 0024 GETMET R4 R1 K19 - 0x58180014, // 0025 LDCONST R6 K20 - 0x581C0015, // 0026 LDCONST R7 K21 - 0x542215A3, // 0027 LDINT R8 5540 - 0x5C240600, // 0028 MOVE R9 R3 - 0x88280111, // 0029 GETMBR R10 R0 K17 - 0x882C0112, // 002A GETMBR R11 R0 K18 - 0x7C100E00, // 002B CALL R4 7 - 0x50100200, // 002C LDBOOL R4 1 0 - 0x90022C04, // 002D SETMBR R0 K22 R4 - 0xB8122E00, // 002E GETNGBL R4 K23 - 0x60140018, // 002F GETGBL R5 G24 - 0x58180018, // 0030 LDCONST R6 K24 - 0x581C0019, // 0031 LDCONST R7 K25 - 0x88200111, // 0032 GETMBR R8 R0 K17 - 0x88240112, // 0033 GETMBR R9 R0 K18 - 0x7C140800, // 0034 CALL R5 4 - 0x5818001A, // 0035 LDCONST R6 K26 - 0x7C100400, // 0036 CALL R4 2 - 0x60100008, // 0037 GETGBL R4 G8 - 0x88140107, // 0038 GETMBR R5 R0 K7 - 0x541A0FFE, // 0039 LDINT R6 4095 - 0x2C140A06, // 003A AND R5 R5 R6 - 0x7C100200, // 003B CALL R4 1 - 0x00123604, // 003C ADD R4 K27 R4 - 0xB8162E00, // 003D GETNGBL R5 K23 - 0x001A3804, // 003E ADD R6 K28 R4 - 0x581C001D, // 003F LDCONST R7 K29 - 0x7C140400, // 0040 CALL R5 2 - 0x8C14031E, // 0041 GETMET R5 R1 K30 - 0x581C0014, // 0042 LDCONST R7 K20 - 0x58200015, // 0043 LDCONST R8 K21 - 0x88240111, // 0044 GETMBR R9 R0 K17 - 0x88280112, // 0045 GETMBR R10 R0 K18 - 0x5C2C0800, // 0046 MOVE R11 R4 - 0x7C140C00, // 0047 CALL R5 6 - 0x60140008, // 0048 GETGBL R5 G8 - 0x88180107, // 0049 GETMBR R6 R0 K7 - 0x541E0EFF, // 004A LDINT R7 3840 - 0x2C180C07, // 004B AND R6 R6 R7 - 0x541E0007, // 004C LDINT R7 8 - 0x3C180C07, // 004D SHR R6 R6 R7 - 0x7C140200, // 004E CALL R5 1 - 0x00163E05, // 004F ADD R5 K31 R5 - 0x5C100A00, // 0050 MOVE R4 R5 - 0xB8162E00, // 0051 GETNGBL R5 K23 - 0x001A3804, // 0052 ADD R6 K28 R4 - 0x581C001D, // 0053 LDCONST R7 K29 - 0x7C140400, // 0054 CALL R5 2 - 0x8C14031E, // 0055 GETMET R5 R1 K30 - 0x581C0014, // 0056 LDCONST R7 K20 - 0x58200015, // 0057 LDCONST R8 K21 - 0x88240111, // 0058 GETMBR R9 R0 K17 - 0x88280112, // 0059 GETMBR R10 R0 K18 - 0x5C2C0800, // 005A MOVE R11 R4 - 0x7C140C00, // 005B CALL R5 6 - 0x60140008, // 005C GETGBL R5 G8 - 0x88180103, // 005D GETMBR R6 R0 K3 - 0x7C140200, // 005E CALL R5 1 - 0x00164005, // 005F ADD R5 K32 R5 - 0x5C100A00, // 0060 MOVE R4 R5 - 0xB8162E00, // 0061 GETNGBL R5 K23 - 0x001A3804, // 0062 ADD R6 K28 R4 - 0x581C001D, // 0063 LDCONST R7 K29 - 0x7C140400, // 0064 CALL R5 2 - 0x8C14031E, // 0065 GETMET R5 R1 K30 - 0x581C0014, // 0066 LDCONST R7 K20 - 0x58200015, // 0067 LDCONST R8 K21 - 0x88240111, // 0068 GETMBR R9 R0 K17 - 0x88280112, // 0069 GETMBR R10 R0 K18 - 0x5C2C0800, // 006A MOVE R11 R4 - 0x7C140C00, // 006B CALL R5 6 - 0x58100021, // 006C LDCONST R4 K33 - 0xB8162E00, // 006D GETNGBL R5 K23 - 0x001A3804, // 006E ADD R6 K28 R4 - 0x581C001D, // 006F LDCONST R7 K29 - 0x7C140400, // 0070 CALL R5 2 - 0x8C14031E, // 0071 GETMET R5 R1 K30 - 0x581C0014, // 0072 LDCONST R7 K20 - 0x58200015, // 0073 LDCONST R8 K21 - 0x88240111, // 0074 GETMBR R9 R0 K17 - 0x88280112, // 0075 GETMBR R10 R0 K18 - 0x5C2C0800, // 0076 MOVE R11 R4 - 0x7C140C00, // 0077 CALL R5 6 - 0x88100122, // 0078 GETMBR R4 R0 K34 - 0x78120053, // 0079 JMPF R4 #00CE - 0x8C100313, // 007A GETMET R4 R1 K19 - 0x58180014, // 007B LDCONST R6 K20 - 0x581C0015, // 007C LDCONST R7 K21 - 0x542215A3, // 007D LDINT R8 5540 - 0x5C240600, // 007E MOVE R9 R3 - 0x8828010E, // 007F GETMBR R10 R0 K14 - 0x882C0122, // 0080 GETMBR R11 R0 K34 - 0x7C100E00, // 0081 CALL R4 7 - 0x50100200, // 0082 LDBOOL R4 1 0 - 0x90024604, // 0083 SETMBR R0 K35 R4 - 0xB8122E00, // 0084 GETNGBL R4 K23 - 0x60140018, // 0085 GETGBL R5 G24 - 0x58180024, // 0086 LDCONST R6 K36 - 0x581C0025, // 0087 LDCONST R7 K37 - 0x8820010E, // 0088 GETMBR R8 R0 K14 - 0x88240122, // 0089 GETMBR R9 R0 K34 - 0x7C140800, // 008A CALL R5 4 - 0x5818001D, // 008B LDCONST R6 K29 - 0x7C100400, // 008C CALL R4 2 - 0x60100008, // 008D GETGBL R4 G8 - 0x88140107, // 008E GETMBR R5 R0 K7 - 0x541A0FFE, // 008F LDINT R6 4095 - 0x2C140A06, // 0090 AND R5 R5 R6 - 0x7C100200, // 0091 CALL R4 1 - 0x00123604, // 0092 ADD R4 K27 R4 - 0xB8162E00, // 0093 GETNGBL R5 K23 - 0x001A3804, // 0094 ADD R6 K28 R4 - 0x581C001D, // 0095 LDCONST R7 K29 - 0x7C140400, // 0096 CALL R5 2 - 0x8C14031E, // 0097 GETMET R5 R1 K30 - 0x581C0014, // 0098 LDCONST R7 K20 - 0x58200015, // 0099 LDCONST R8 K21 - 0x8824010E, // 009A GETMBR R9 R0 K14 - 0x88280122, // 009B GETMBR R10 R0 K34 - 0x5C2C0800, // 009C MOVE R11 R4 - 0x7C140C00, // 009D CALL R5 6 - 0x60140008, // 009E GETGBL R5 G8 - 0x88180107, // 009F GETMBR R6 R0 K7 - 0x541E0EFF, // 00A0 LDINT R7 3840 - 0x2C180C07, // 00A1 AND R6 R6 R7 - 0x541E0007, // 00A2 LDINT R7 8 - 0x3C180C07, // 00A3 SHR R6 R6 R7 - 0x7C140200, // 00A4 CALL R5 1 - 0x00163E05, // 00A5 ADD R5 K31 R5 - 0x5C100A00, // 00A6 MOVE R4 R5 - 0xB8162E00, // 00A7 GETNGBL R5 K23 - 0x001A3804, // 00A8 ADD R6 K28 R4 - 0x581C001D, // 00A9 LDCONST R7 K29 - 0x7C140400, // 00AA CALL R5 2 - 0x8C14031E, // 00AB GETMET R5 R1 K30 - 0x581C0014, // 00AC LDCONST R7 K20 - 0x58200015, // 00AD LDCONST R8 K21 - 0x8824010E, // 00AE GETMBR R9 R0 K14 - 0x88280122, // 00AF GETMBR R10 R0 K34 - 0x5C2C0800, // 00B0 MOVE R11 R4 - 0x7C140C00, // 00B1 CALL R5 6 - 0x60140008, // 00B2 GETGBL R5 G8 - 0x88180103, // 00B3 GETMBR R6 R0 K3 - 0x7C140200, // 00B4 CALL R5 1 - 0x00164005, // 00B5 ADD R5 K32 R5 - 0x5C100A00, // 00B6 MOVE R4 R5 - 0xB8162E00, // 00B7 GETNGBL R5 K23 - 0x001A3804, // 00B8 ADD R6 K28 R4 - 0x581C001D, // 00B9 LDCONST R7 K29 - 0x7C140400, // 00BA CALL R5 2 - 0x8C14031E, // 00BB GETMET R5 R1 K30 - 0x581C0014, // 00BC LDCONST R7 K20 - 0x58200015, // 00BD LDCONST R8 K21 - 0x8824010E, // 00BE GETMBR R9 R0 K14 - 0x88280122, // 00BF GETMBR R10 R0 K34 - 0x5C2C0800, // 00C0 MOVE R11 R4 - 0x7C140C00, // 00C1 CALL R5 6 - 0x58100021, // 00C2 LDCONST R4 K33 - 0xB8162E00, // 00C3 GETNGBL R5 K23 - 0x001A3804, // 00C4 ADD R6 K28 R4 - 0x581C001D, // 00C5 LDCONST R7 K29 - 0x7C140400, // 00C6 CALL R5 2 - 0x8C14031E, // 00C7 GETMET R5 R1 K30 - 0x581C0014, // 00C8 LDCONST R7 K20 - 0x58200015, // 00C9 LDCONST R8 K21 - 0x8824010E, // 00CA GETMBR R9 R0 K14 - 0x88280122, // 00CB GETMBR R10 R0 K34 - 0x5C2C0800, // 00CC MOVE R11 R4 - 0x7C140C00, // 00CD CALL R5 6 - 0xA8040001, // 00CE EXBLK 1 1 - 0x7002000F, // 00CF JMP #00E0 - 0xAC100002, // 00D0 CATCH R4 0 2 - 0x7002000C, // 00D1 JMP #00DF - 0xB81A2E00, // 00D2 GETNGBL R6 K23 - 0x601C0008, // 00D3 GETGBL R7 G8 - 0x5C200800, // 00D4 MOVE R8 R4 - 0x7C1C0200, // 00D5 CALL R7 1 - 0x001E4C07, // 00D6 ADD R7 K38 R7 - 0x001C0F27, // 00D7 ADD R7 R7 K39 - 0x60200008, // 00D8 GETGBL R8 G8 - 0x5C240A00, // 00D9 MOVE R9 R5 - 0x7C200200, // 00DA CALL R8 1 - 0x001C0E08, // 00DB ADD R7 R7 R8 - 0x5820001A, // 00DC LDCONST R8 K26 - 0x7C180400, // 00DD CALL R6 2 - 0x70020000, // 00DE JMP #00E0 - 0xB0080000, // 00DF RAISE 2 R0 R0 - 0x80000000, // 00E0 RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 }) ) ); @@ -667,271 +464,58 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ /******************************************************************** -** Solidified function: conf_to_log +** Solidified function: get_active_endpoints ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_conf_to_log, /* name */ +be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ be_nested_proto( 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ + 2, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(k2l), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), + /* K0 */ be_nested_str_weak(plugins), + /* K1 */ be_nested_str_weak(get_endpoint), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(push), /* K5 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(conf_to_log), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x58080001, // 0001 LDCONST R2 K1 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100302, // 0003 GETMET R4 R1 K2 - 0x5C180000, // 0004 MOVE R6 R0 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA802000B, // 0007 EXBLK 0 #0014 - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x1C140903, // 000A EQ R5 R4 K3 - 0x78160000, // 000B JMPF R5 #000D - 0x7001FFFA, // 000C JMP #0008 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180004, // 000E LDCONST R6 K4 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x94200004, // 0010 GETIDX R8 R0 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x00080405, // 0012 ADD R2 R2 R5 - 0x7001FFF3, // 0013 JMP #0008 - 0x580C0005, // 0014 LDCONST R3 K5 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x80040400, // 0017 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_random_passcode -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(134217727), - /* K5 */ be_const_int(99999998), - /* K6 */ be_nested_str_weak(PASSCODE_INVALID), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(generate_random_passcode), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x780E001D, // 0003 JMPF R3 #0022 - 0x8C0C0301, // 0004 GETMET R3 R1 K1 - 0x54160003, // 0005 LDINT R5 4 - 0x7C0C0400, // 0006 CALL R3 2 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 - 0x58140003, // 0008 LDCONST R5 K3 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x2C0C0704, // 000B AND R3 R3 K4 - 0x5C080600, // 000C MOVE R2 R3 - 0x240C0505, // 000D GT R3 R2 K5 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7001FFF1, // 000F JMP #0002 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x1C140404, // 0016 EQ R5 R2 R4 - 0x78160000, // 0017 JMPF R5 #0019 - 0x4C080000, // 0018 LDNIL R2 - 0x7001FFF9, // 0019 JMP #0014 - 0x580C0007, // 001A LDCONST R3 K7 - 0xAC0C0200, // 001B CATCH R3 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x4C0C0000, // 001D LDNIL R3 - 0x200C0403, // 001E NE R3 R2 R3 - 0x780E0000, // 001F JMPF R3 #0021 - 0x80040400, // 0020 RET 1 R2 - 0x7001FFDF, // 0021 JMP #0002 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: event_fabrics_saved -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(save_param), - }), - be_str_weak(event_fabrics_saved), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x24040302, // 0003 GT R1 R1 K2 - 0x78060005, // 0004 JMPF R1 #000B - 0x88040103, // 0005 GETMBR R1 R0 K3 - 0x74060003, // 0006 JMPT R1 #000B - 0x50040200, // 0007 LDBOOL R1 1 0 - 0x90020601, // 0008 SETMBR R0 K3 R1 - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_expansion -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(start), - /* K6 */ be_nested_str_weak(is_direct), - /* K7 */ be_nested_str_weak(next_attribute), - /* K8 */ be_nested_str_weak(get_pi), - }), - be_str_weak(process_attribute_expansion), + be_str_weak(get_active_endpoints), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x88140302, // 0002 GETMBR R5 R1 K2 - 0xB81A0600, // 0003 GETNGBL R6 K3 - 0x8C180D04, // 0004 GETMET R6 R6 K4 - 0x5C200000, // 0005 MOVE R8 R0 - 0x7C180400, // 0006 CALL R6 2 - 0x8C1C0D05, // 0007 GETMET R7 R6 K5 - 0x5C240600, // 0008 MOVE R9 R3 - 0x5C280800, // 0009 MOVE R10 R4 - 0x5C2C0A00, // 000A MOVE R11 R5 - 0x7C1C0800, // 000B CALL R7 4 - 0x8C1C0D06, // 000C GETMET R7 R6 K6 - 0x7C1C0200, // 000D CALL R7 1 - 0x4C200000, // 000E LDNIL R8 - 0x8C240D07, // 000F GETMET R9 R6 K7 - 0x7C240200, // 0010 CALL R9 1 - 0x5C201200, // 0011 MOVE R8 R9 - 0x4C280000, // 0012 LDNIL R10 - 0x2024120A, // 0013 NE R9 R9 R10 - 0x78260005, // 0014 JMPF R9 #001B - 0x5C240400, // 0015 MOVE R9 R2 - 0x8C280D08, // 0016 GETMET R10 R6 K8 - 0x7C280200, // 0017 CALL R10 1 - 0x5C2C1000, // 0018 MOVE R11 R8 - 0x7C240400, // 0019 CALL R9 2 - 0x7001FFF3, // 001A JMP #000F - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_250ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(read_sensors_scheduler), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(every_250ms), - /* K4 */ be_const_int(1), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x14080202, // 0006 LT R2 R1 R2 - 0x780A0005, // 0007 JMPF R2 #000E - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C080503, // 000A GETMET R2 R2 K3 - 0x7C080200, // 000B CALL R2 1 - 0x00040304, // 000C ADD R1 R1 K4 - 0x7001FFF4, // 000D JMP #0003 - 0x80000000, // 000E RET 0 + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020011, // 0005 EXBLK 0 #0018 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140901, // 0008 GETMET R5 R4 K1 + 0x7C140200, // 0009 CALL R5 1 + 0x78060002, // 000A JMPF R1 #000E + 0x1C180B02, // 000B EQ R6 R5 K2 + 0x781A0000, // 000C JMPF R6 #000E + 0x7001FFF7, // 000D JMP #0006 + 0x8C180503, // 000E GETMET R6 R2 K3 + 0x5C200A00, // 000F MOVE R8 R5 + 0x7C180400, // 0010 CALL R6 2 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C180504, // 0014 GETMET R6 R2 K4 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x7C180400, // 0016 CALL R6 2 + 0x7001FFED, // 0017 JMP #0006 + 0x580C0005, // 0018 LDCONST R3 K5 + 0xAC0C0200, // 0019 CATCH R3 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x80040400, // 001B RET 1 R2 }) ) ); @@ -995,87 +579,6 @@ be_local_closure(class_Matter_Device_invoke_request, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: k2l -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_k2l, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(k2l), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020005, // 000B EXBLK 0 #0012 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x7C140400, // 0010 CALL R5 2 - 0x7001FFF9, // 0011 JMP #000C - 0x580C0003, // 0012 LDCONST R3 K3 - 0xAC0C0200, // 0013 CATCH R3 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x600C0010, // 0015 GETGBL R3 G16 - 0x6010000C, // 0016 GETGBL R4 G12 - 0x5C140400, // 0017 MOVE R5 R2 - 0x7C100200, // 0018 CALL R4 1 - 0x04100904, // 0019 SUB R4 R4 K4 - 0x40120804, // 001A CONNECT R4 K4 R4 - 0x7C0C0200, // 001B CALL R3 1 - 0xA8020010, // 001C EXBLK 0 #002E - 0x5C100600, // 001D MOVE R4 R3 - 0x7C100000, // 001E CALL R4 0 - 0x94140404, // 001F GETIDX R5 R2 R4 - 0x5C180800, // 0020 MOVE R6 R4 - 0x241C0D05, // 0021 GT R7 R6 K5 - 0x781E0008, // 0022 JMPF R7 #002C - 0x041C0D04, // 0023 SUB R7 R6 K4 - 0x941C0407, // 0024 GETIDX R7 R2 R7 - 0x241C0E05, // 0025 GT R7 R7 R5 - 0x781E0004, // 0026 JMPF R7 #002C - 0x041C0D04, // 0027 SUB R7 R6 K4 - 0x941C0407, // 0028 GETIDX R7 R2 R7 - 0x98080C07, // 0029 SETIDX R2 R6 R7 - 0x04180D04, // 002A SUB R6 R6 K4 - 0x7001FFF4, // 002B JMP #0021 - 0x98080C05, // 002C SETIDX R2 R6 R5 - 0x7001FFEE, // 002D JMP #001D - 0x580C0003, // 002E LDCONST R3 K3 - 0xAC0C0200, // 002F CATCH R3 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0x80040400, // 0031 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _instantiate_plugins_from_config ********************************************************************/ @@ -1279,12 +782,12 @@ be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name /******************************************************************** -** Solidified function: add_read_sensors_schedule +** Solidified function: start_operational_discovery ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ +be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ be_nested_proto( - 5, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1293,27 +796,581 @@ be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(jitter), + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(mdns), + /* K2 */ be_nested_str_weak(stop_basic_commissioning), + /* K3 */ be_nested_str_weak(mdns_announce_op_discovery), }), - be_str_weak(add_read_sensors_schedule), + be_str_weak(start_operational_discovery), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100103, // 0004 GETMET R4 R0 K3 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C100400, // 0006 CALL R4 2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _mdns_announce_hostname +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(start), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(eth), + /* K5 */ be_nested_str_weak(hostname_eth), + /* K6 */ be_nested_str_weak(replace), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(mac), + /* K9 */ be_nested_str_weak(_X3A), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(ipv4only), + /* K12 */ be_nested_str_weak(contains), + /* K13 */ be_nested_str_weak(ip6local), + /* K14 */ be_nested_str_weak(add_hostname), + /* K15 */ be_nested_str_weak(ip), + /* K16 */ be_nested_str_weak(ip6), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str_weak(wifi), + /* K21 */ be_nested_str_weak(hostname_wifi), + /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), + /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K24 */ be_nested_str_weak(_X7C), + /* K25 */ be_const_int(2), + /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), + }), + be_str_weak(_mdns_announce_hostname), + &be_const_str_solidified, + ( &(const binstruction[144]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100502, // 0002 GETMET R4 R2 K2 + 0x7C100200, // 0003 CALL R4 1 + 0xA8020077, // 0004 EXBLK 0 #007D + 0x78060033, // 0005 JMPF R1 #003A + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x7C100200, // 0008 CALL R4 1 + 0x8C140706, // 0009 GETMET R5 R3 K6 + 0x8C1C0907, // 000A GETMET R7 R4 K7 + 0x58240008, // 000B LDCONST R9 K8 + 0x7C1C0400, // 000C CALL R7 2 + 0x58200009, // 000D LDCONST R8 K9 + 0x5824000A, // 000E LDCONST R9 K10 + 0x7C140800, // 000F CALL R5 4 + 0x90020A05, // 0010 SETMBR R0 K5 R5 + 0x8814010B, // 0011 GETMBR R5 R0 K11 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C14090C, // 0013 GETMET R5 R4 K12 + 0x581C000D, // 0014 LDCONST R7 K13 + 0x7C140400, // 0015 CALL R5 2 + 0x7416000F, // 0016 JMPT R5 #0027 + 0x8C14050E, // 0017 GETMET R5 R2 K14 + 0x881C0105, // 0018 GETMBR R7 R0 K5 + 0x8C200907, // 0019 GETMET R8 R4 K7 + 0x5828000D, // 001A LDCONST R10 K13 + 0x582C000A, // 001B LDCONST R11 K10 + 0x7C200600, // 001C CALL R8 3 + 0x8C240907, // 001D GETMET R9 R4 K7 + 0x582C000F, // 001E LDCONST R11 K15 + 0x5830000A, // 001F LDCONST R12 K10 + 0x7C240600, // 0020 CALL R9 3 + 0x8C280907, // 0021 GETMET R10 R4 K7 + 0x58300010, // 0022 LDCONST R12 K16 + 0x5834000A, // 0023 LDCONST R13 K10 + 0x7C280600, // 0024 CALL R10 3 + 0x7C140A00, // 0025 CALL R5 5 + 0x70020011, // 0026 JMP #0039 + 0xB8162200, // 0027 GETNGBL R5 K17 + 0x60180018, // 0028 GETGBL R6 G24 + 0x581C0012, // 0029 LDCONST R7 K18 + 0x88200105, // 002A GETMBR R8 R0 K5 + 0x8C240907, // 002B GETMET R9 R4 K7 + 0x582C000F, // 002C LDCONST R11 K15 + 0x5830000A, // 002D LDCONST R12 K10 + 0x7C240600, // 002E CALL R9 3 + 0x7C180600, // 002F CALL R6 3 + 0x581C0013, // 0030 LDCONST R7 K19 + 0x7C140400, // 0031 CALL R5 2 + 0x8C14050E, // 0032 GETMET R5 R2 K14 + 0x881C0105, // 0033 GETMBR R7 R0 K5 + 0x8C200907, // 0034 GETMET R8 R4 K7 + 0x5828000F, // 0035 LDCONST R10 K15 + 0x582C000A, // 0036 LDCONST R11 K10 + 0x7C200600, // 0037 CALL R8 3 + 0x7C140600, // 0038 CALL R5 3 + 0x70020032, // 0039 JMP #006D + 0xB8120600, // 003A GETNGBL R4 K3 + 0x8C100914, // 003B GETMET R4 R4 K20 + 0x7C100200, // 003C CALL R4 1 + 0x8C140706, // 003D GETMET R5 R3 K6 + 0x8C1C0907, // 003E GETMET R7 R4 K7 + 0x58240008, // 003F LDCONST R9 K8 + 0x7C1C0400, // 0040 CALL R7 2 + 0x58200009, // 0041 LDCONST R8 K9 + 0x5824000A, // 0042 LDCONST R9 K10 + 0x7C140800, // 0043 CALL R5 4 + 0x90022A05, // 0044 SETMBR R0 K21 R5 + 0x8814010B, // 0045 GETMBR R5 R0 K11 + 0x78160003, // 0046 JMPF R5 #004B + 0x8C14090C, // 0047 GETMET R5 R4 K12 + 0x581C000D, // 0048 LDCONST R7 K13 + 0x7C140400, // 0049 CALL R5 2 + 0x7416000F, // 004A JMPT R5 #005B + 0x8C14050E, // 004B GETMET R5 R2 K14 + 0x881C0115, // 004C GETMBR R7 R0 K21 + 0x8C200907, // 004D GETMET R8 R4 K7 + 0x5828000D, // 004E LDCONST R10 K13 + 0x582C000A, // 004F LDCONST R11 K10 + 0x7C200600, // 0050 CALL R8 3 + 0x8C240907, // 0051 GETMET R9 R4 K7 + 0x582C000F, // 0052 LDCONST R11 K15 + 0x5830000A, // 0053 LDCONST R12 K10 + 0x7C240600, // 0054 CALL R9 3 + 0x8C280907, // 0055 GETMET R10 R4 K7 + 0x58300010, // 0056 LDCONST R12 K16 + 0x5834000A, // 0057 LDCONST R13 K10 + 0x7C280600, // 0058 CALL R10 3 + 0x7C140A00, // 0059 CALL R5 5 + 0x70020011, // 005A JMP #006D + 0xB8162200, // 005B GETNGBL R5 K17 + 0x60180018, // 005C GETGBL R6 G24 + 0x581C0012, // 005D LDCONST R7 K18 + 0x88200115, // 005E GETMBR R8 R0 K21 + 0x8C240907, // 005F GETMET R9 R4 K7 + 0x582C000F, // 0060 LDCONST R11 K15 + 0x5830000A, // 0061 LDCONST R12 K10 + 0x7C240600, // 0062 CALL R9 3 + 0x7C180600, // 0063 CALL R6 3 + 0x581C0013, // 0064 LDCONST R7 K19 + 0x7C140400, // 0065 CALL R5 2 + 0x8C14050E, // 0066 GETMET R5 R2 K14 + 0x881C0115, // 0067 GETMBR R7 R0 K21 + 0x8C200907, // 0068 GETMET R8 R4 K7 + 0x5828000F, // 0069 LDCONST R10 K15 + 0x582C000A, // 006A LDCONST R11 K10 + 0x7C200600, // 006B CALL R8 3 + 0x7C140600, // 006C CALL R5 3 + 0xB8122200, // 006D GETNGBL R4 K17 + 0x60140018, // 006E GETGBL R5 G24 + 0x58180016, // 006F LDCONST R6 K22 + 0x78060001, // 0070 JMPF R1 #0073 + 0x581C0004, // 0071 LDCONST R7 K4 + 0x70020000, // 0072 JMP #0074 + 0x581C0014, // 0073 LDCONST R7 K20 + 0x78060001, // 0074 JMPF R1 #0077 + 0x88200105, // 0075 GETMBR R8 R0 K5 + 0x70020000, // 0076 JMP #0078 + 0x88200115, // 0077 GETMBR R8 R0 K21 + 0x7C140600, // 0078 CALL R5 3 + 0x58180013, // 0079 LDCONST R6 K19 + 0x7C100400, // 007A CALL R4 2 + 0xA8040001, // 007B EXBLK 1 1 + 0x7002000F, // 007C JMP #008D + 0xAC100002, // 007D CATCH R4 0 2 + 0x7002000C, // 007E JMP #008C + 0xB81A2200, // 007F GETNGBL R6 K17 + 0x601C0008, // 0080 GETGBL R7 G8 + 0x5C200800, // 0081 MOVE R8 R4 + 0x7C1C0200, // 0082 CALL R7 1 + 0x001E2E07, // 0083 ADD R7 K23 R7 + 0x001C0F18, // 0084 ADD R7 R7 K24 + 0x60200008, // 0085 GETGBL R8 G8 + 0x5C240A00, // 0086 MOVE R9 R5 + 0x7C200200, // 0087 CALL R8 1 + 0x001C0E08, // 0088 ADD R7 R7 R8 + 0x58200019, // 0089 LDCONST R8 K25 + 0x7C180400, // 008A CALL R6 2 + 0x70020000, // 008B JMP #008D + 0xB0080000, // 008C RAISE 2 R0 R0 + 0x8C10011A, // 008D GETMET R4 R0 K26 + 0x7C100200, // 008E CALL R4 1 + 0x80000000, // 008F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_remove_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(plugins_config), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(plugins_persist), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(get_endpoint), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(clean_remotes), + /* K15 */ be_nested_str_weak(save_param), + /* K16 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_remove_endpoint), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0008, // 0001 GETGBL R3 G8 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x4C140000, // 0005 LDNIL R5 + 0x88180101, // 0006 GETMBR R6 R0 K1 + 0x8C180D02, // 0007 GETMET R6 R6 K2 + 0x5C200600, // 0008 MOVE R8 R3 + 0x7C180400, // 0009 CALL R6 2 + 0x741A0004, // 000A JMPT R6 #0010 + 0xB81A0600, // 000B GETNGBL R6 K3 + 0x001E0803, // 000C ADD R7 K4 R3 + 0x58200005, // 000D LDCONST R8 K5 + 0x7C180400, // 000E CALL R6 2 + 0x80000C00, // 000F RET 0 + 0xB81A0600, // 0010 GETNGBL R6 K3 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x58200006, // 0012 LDCONST R8 K6 + 0x5C240200, // 0013 MOVE R9 R1 + 0x7C1C0400, // 0014 CALL R7 2 + 0x58200007, // 0015 LDCONST R8 K7 + 0x7C180400, // 0016 CALL R6 2 + 0x88180101, // 0017 GETMBR R6 R0 K1 + 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C180400, // 001A CALL R6 2 + 0x50180200, // 001B LDBOOL R6 1 0 + 0x90021206, // 001C SETMBR R0 K9 R6 + 0x5818000A, // 001D LDCONST R6 K10 + 0x601C000C, // 001E GETGBL R7 G12 + 0x8820010B, // 001F GETMBR R8 R0 K11 + 0x7C1C0200, // 0020 CALL R7 1 + 0x141C0C07, // 0021 LT R7 R6 R7 + 0x781E000D, // 0022 JMPF R7 #0031 + 0x881C010B, // 0023 GETMBR R7 R0 K11 + 0x941C0E06, // 0024 GETIDX R7 R7 R6 + 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 + 0x7C1C0200, // 0026 CALL R7 1 + 0x1C1C0207, // 0027 EQ R7 R1 R7 + 0x781E0005, // 0028 JMPF R7 #002F + 0x881C010B, // 0029 GETMBR R7 R0 K11 + 0x8C1C0F08, // 002A GETMET R7 R7 K8 + 0x5C240C00, // 002B MOVE R9 R6 + 0x7C1C0400, // 002C CALL R7 2 + 0x70020002, // 002D JMP #0031 + 0x70020000, // 002E JMP #0030 + 0x00180D0D, // 002F ADD R6 R6 K13 + 0x7001FFEC, // 0030 JMP #001E + 0x8C1C010E, // 0031 GETMET R7 R0 K14 + 0x7C1C0200, // 0032 CALL R7 1 + 0x8C1C010F, // 0033 GETMET R7 R0 K15 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0110, // 0035 GETMET R7 R0 K16 + 0x7C1C0200, // 0036 CALL R7 1 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_mdns_announce_hostnames +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(wifi), + /* K2 */ be_nested_str_weak(up), + /* K3 */ be_nested_str_weak(_mdns_announce_hostname), + /* K4 */ be_nested_str_weak(add_rule), + /* K5 */ be_nested_str_weak(Wifi_X23Connected), + /* K6 */ be_nested_str_weak(matter_mdns_host), + /* K7 */ be_nested_str_weak(eth), + /* K8 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_mdns_announce_hostnames), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x94040302, // 0003 GETIDX R1 R1 K2 + 0x78060003, // 0004 JMPF R1 #0009 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x500C0000, // 0006 LDBOOL R3 0 0 + 0x7C040400, // 0007 CALL R1 2 + 0x70020005, // 0008 JMP #000F + 0xB8060000, // 0009 GETNGBL R1 K0 + 0x8C040304, // 000A GETMET R1 R1 K4 + 0x580C0005, // 000B LDCONST R3 K5 + 0x84100000, // 000C CLOSURE R4 P0 + 0x58140006, // 000D LDCONST R5 K6 + 0x7C040800, // 000E CALL R1 4 + 0xB8060000, // 000F GETNGBL R1 K0 + 0x8C040307, // 0010 GETMET R1 R1 K7 + 0x7C040200, // 0011 CALL R1 1 + 0x94040302, // 0012 GETIDX R1 R1 K2 + 0x78060003, // 0013 JMPF R1 #0018 + 0x8C040103, // 0014 GETMET R1 R0 K3 + 0x500C0200, // 0015 LDBOOL R3 1 0 + 0x7C040400, // 0016 CALL R1 2 + 0x70020005, // 0017 JMP #001E + 0xB8060000, // 0018 GETNGBL R1 K0 + 0x8C040304, // 0019 GETMET R1 R1 K4 + 0x580C0008, // 001A LDCONST R3 K8 + 0x84100001, // 001B CLOSURE R4 P1 + 0x58140006, // 001C LDCONST R5 K6 + 0x7C040800, // 001D CALL R1 4 + 0xA0000000, // 001E CLOSE R0 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _start_udp +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__start_udp, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_received), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(UDPServer), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(start), + }), + be_str_weak(_start_udp), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x4C080000, // 0003 LDNIL R2 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540615A3, // 0006 LDINT R1 5540 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x600C0008, // 0008 GETGBL R3 G8 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C0C0200, // 000A CALL R3 1 + 0x000E0403, // 000B ADD R3 K2 R3 + 0x58100003, // 000C LDCONST R4 K3 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x8C080505, // 000F GETMET R2 R2 K5 + 0x5C100000, // 0010 MOVE R4 R0 + 0x58140006, // 0011 LDCONST R5 K6 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C080800, // 0013 CALL R2 4 + 0x90020002, // 0014 SETMBR R0 K0 R2 + 0x88080100, // 0015 GETMBR R2 R0 K0 + 0x8C080507, // 0016 GETMET R2 R2 K7 + 0x84100000, // 0017 CLOSURE R4 P0 + 0x7C080400, // 0018 CALL R2 2 + 0xA0000000, // 0019 CLOSE R0 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: signal_endpoints_changed +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + }), + be_str_weak(signal_endpoints_changed), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x740A0002, // 0003 JMPT R2 #0007 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x24080401, // 0005 GT R2 R2 R1 - 0x780A0005, // 0006 JMPF R2 #000D - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x8C080503, // 0009 GETMET R2 R2 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x90020202, // 000C SETMBR R0 K1 R2 + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x580C0001, // 0001 LDCONST R3 K1 + 0x5412001C, // 0002 LDINT R4 29 + 0x58140002, // 0003 LDCONST R5 K2 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C040A00, // 0005 CALL R1 5 + 0x8C040100, // 0006 GETMET R1 R0 K0 + 0xB80E0600, // 0007 GETNGBL R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x5412001C, // 0009 LDINT R4 29 + 0x58140002, // 000A LDCONST R5 K2 + 0x50180000, // 000B LDBOOL R6 0 0 + 0x7C040A00, // 000C CALL R1 5 0x80000000, // 000D RET 0 }) ) @@ -1322,10 +1379,146 @@ be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ /******************************************************************** -** Solidified function: remove_fabric +** Solidified function: sort_distinct ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_remove_fabric, /* name */ +be_local_closure(class_Matter_Device_sort_distinct, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(remove), + }), + be_str_weak(sort_distinct), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0701, // 0005 SUB R3 R3 K1 + 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020010, // 0008 EXBLK 0 #001A + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B02, // 000D GT R6 R5 K2 + 0x781A0008, // 000E JMPF R6 #0018 + 0x04180B01, // 000F SUB R6 R5 K1 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x24180C04, // 0011 GT R6 R6 R4 + 0x781A0004, // 0012 JMPF R6 #0018 + 0x04180B01, // 0013 SUB R6 R5 K1 + 0x94180006, // 0014 GETIDX R6 R0 R6 + 0x98000A06, // 0015 SETIDX R0 R5 R6 + 0x04140B01, // 0016 SUB R5 R5 K1 + 0x7001FFF4, // 0017 JMP #000D + 0x98000A04, // 0018 SETIDX R0 R5 R4 + 0x7001FFEE, // 0019 JMP #0009 + 0x58080003, // 001A LDCONST R2 K3 + 0xAC080200, // 001B CATCH R2 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x58080001, // 001D LDCONST R2 K1 + 0x600C000C, // 001E GETGBL R3 G12 + 0x5C100000, // 001F MOVE R4 R0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x180C0701, // 0021 LE R3 R3 K1 + 0x780E0000, // 0022 JMPF R3 #0024 + 0x80040000, // 0023 RET 1 R0 + 0x940C0102, // 0024 GETIDX R3 R0 K2 + 0x6010000C, // 0025 GETGBL R4 G12 + 0x5C140000, // 0026 MOVE R5 R0 + 0x7C100200, // 0027 CALL R4 1 + 0x14100404, // 0028 LT R4 R2 R4 + 0x78120009, // 0029 JMPF R4 #0034 + 0x94100002, // 002A GETIDX R4 R0 R2 + 0x1C100803, // 002B EQ R4 R4 R3 + 0x78120003, // 002C JMPF R4 #0031 + 0x8C100104, // 002D GETMET R4 R0 K4 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x70020001, // 0030 JMP #0033 + 0x940C0002, // 0031 GETIDX R3 R0 R2 + 0x00080501, // 0032 ADD R2 R2 K1 + 0x7001FFF0, // 0033 JMP #0025 + 0x80040000, // 0034 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery_all_fabrics +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_remove_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: received_ack +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_received_ack, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -1335,58 +1528,327 @@ be_local_closure(class_Matter_Device_remove_fabric, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), - /* K2 */ be_nested_str_weak(get_fabric_id), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(reverse), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(message_handler), - /* K8 */ be_nested_str_weak(im), - /* K9 */ be_nested_str_weak(subs_shop), - /* K10 */ be_nested_str_weak(remove_by_fabric), - /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(remove_fabric), - /* K14 */ be_nested_str_weak(save_fabrics), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(received_ack), }), - be_str_weak(remove_fabric), + be_str_weak(received_ack), &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0018, // 0002 JMPF R2 #001C - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C0C0302, // 0004 GETMET R3 R1 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0705, // 000A GETMET R3 R3 K5 - 0x7C0C0200, // 000B CALL R3 1 - 0x000E0203, // 000C ADD R3 K1 R3 - 0x58100006, // 000D LDCONST R4 K6 - 0x7C080400, // 000E CALL R2 2 - 0x88080107, // 000F GETMBR R2 R0 K7 - 0x88080508, // 0010 GETMBR R2 R2 K8 - 0x88080509, // 0011 GETMBR R2 R2 K9 - 0x8C08050A, // 0012 GETMET R2 R2 K10 - 0x5C100200, // 0013 MOVE R4 R1 - 0x7C080400, // 0014 CALL R2 2 - 0x8C08010B, // 0015 GETMET R2 R0 K11 - 0x5C100200, // 0016 MOVE R4 R1 - 0x7C080400, // 0017 CALL R2 2 - 0x8808010C, // 0018 GETMBR R2 R0 K12 - 0x8C08050D, // 0019 GETMET R2 R2 K13 - 0x5C100200, // 001A MOVE R4 R1 - 0x7C080400, // 001B CALL R2 2 - 0x8808010C, // 001C GETMBR R2 R0 K12 - 0x8C08050E, // 001D GETMET R2 R2 K14 - 0x7C080200, // 001E CALL R2 1 - 0x80000000, // 001F RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resolve_attribute_read_solo +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K7 */ be_nested_str_weak(contains_cluster), + /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K9 */ be_nested_str_weak(contains_attribute), + /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + }), + be_str_weak(resolve_attribute_read_solo), + &be_const_str_solidified, + ( &(const binstruction[47]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x88100302, // 0002 GETMBR R4 R1 K2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140405, // 0004 EQ R5 R2 R5 + 0x74160005, // 0005 JMPT R5 #000C + 0x4C140000, // 0006 LDNIL R5 + 0x1C140605, // 0007 EQ R5 R3 R5 + 0x74160002, // 0008 JMPT R5 #000C + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x5C1C0400, // 000F MOVE R7 R2 + 0x7C140400, // 0010 CALL R5 2 + 0x4C180000, // 0011 LDNIL R6 + 0x1C180A06, // 0012 EQ R6 R5 R6 + 0x781A0005, // 0013 JMPF R6 #001A + 0xB81A0A00, // 0014 GETNGBL R6 K5 + 0x88180D06, // 0015 GETMBR R6 R6 K6 + 0x90060806, // 0016 SETMBR R1 K4 R6 + 0x4C180000, // 0017 LDNIL R6 + 0x80040C00, // 0018 RET 1 R6 + 0x70020013, // 0019 JMP #002E + 0x8C180B07, // 001A GETMET R6 R5 K7 + 0x5C200600, // 001B MOVE R8 R3 + 0x7C180400, // 001C CALL R6 2 + 0x741A0005, // 001D JMPT R6 #0024 + 0xB81A0A00, // 001E GETNGBL R6 K5 + 0x88180D08, // 001F GETMBR R6 R6 K8 + 0x90060806, // 0020 SETMBR R1 K4 R6 + 0x4C180000, // 0021 LDNIL R6 + 0x80040C00, // 0022 RET 1 R6 + 0x70020009, // 0023 JMP #002E + 0x8C180B09, // 0024 GETMET R6 R5 K9 + 0x5C200600, // 0025 MOVE R8 R3 + 0x5C240800, // 0026 MOVE R9 R4 + 0x7C180600, // 0027 CALL R6 3 + 0x741A0004, // 0028 JMPT R6 #002E + 0xB81A0A00, // 0029 GETNGBL R6 K5 + 0x88180D0A, // 002A GETMBR R6 R6 K10 + 0x90060806, // 002B SETMBR R1 K4 R6 + 0x4C180000, // 002C LDNIL R6 + 0x80040C00, // 002D RET 1 R6 + 0x80040A00, // 002E RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_http_remote +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_register_http_remote, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(get_timeout), + /* K3 */ be_nested_str_weak(set_timeout), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(HTTP_remote), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(set_info), + }), + be_str_weak(register_http_remote), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x600C0013, // 0004 GETGBL R3 G19 + 0x7C0C0000, // 0005 CALL R3 0 + 0x90020003, // 0006 SETMBR R0 K0 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x8C100901, // 0009 GETMET R4 R4 K1 + 0x5C180200, // 000A MOVE R6 R1 + 0x7C100400, // 000B CALL R4 2 + 0x78120009, // 000C JMPF R4 #0017 + 0x88100100, // 000D GETMBR R4 R0 K0 + 0x940C0801, // 000E GETIDX R3 R4 R1 + 0x8C140702, // 000F GETMET R5 R3 K2 + 0x7C140200, // 0010 CALL R5 1 + 0x14140405, // 0011 LT R5 R2 R5 + 0x78160002, // 0012 JMPF R5 #0016 + 0x8C140703, // 0013 GETMET R5 R3 K3 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C140400, // 0015 CALL R5 2 + 0x70020011, // 0016 JMP #0029 + 0xB8120800, // 0017 GETNGBL R4 K4 + 0x8C100905, // 0018 GETMET R4 R4 K5 + 0x5C180000, // 0019 MOVE R6 R0 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x5C200400, // 001B MOVE R8 R2 + 0x7C100800, // 001C CALL R4 4 + 0x5C0C0800, // 001D MOVE R3 R4 + 0x88100106, // 001E GETMBR R4 R0 K6 + 0x8C100901, // 001F GETMET R4 R4 K1 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x78120003, // 0022 JMPF R4 #0027 + 0x8C100707, // 0023 GETMET R4 R3 K7 + 0x88180106, // 0024 GETMBR R6 R0 K6 + 0x94180C01, // 0025 GETIDX R6 R6 R1 + 0x7C100400, // 0026 CALL R4 2 + 0x88100100, // 0027 GETMBR R4 R0 K0 + 0x98100203, // 0028 SETIDX R4 R1 R3 + 0x80040600, // 0029 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_add_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K4 */ be_nested_str_weak(_X27_X20skipping), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(next_ep), + /* K7 */ be_nested_str_weak(plugins), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(type), + /* K10 */ be_nested_str_weak(keys), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K13 */ be_nested_str_weak(conf_to_log), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_persist), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(save_param), + /* K19 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_add_endpoint), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120008, // 0006 JMPF R4 #0010 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0x60140008, // 0008 GETGBL R5 G8 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C140200, // 000A CALL R5 1 + 0x00160605, // 000B ADD R5 K3 R5 + 0x00140B04, // 000C ADD R5 R5 K4 + 0x58180005, // 000D LDCONST R6 K5 + 0x7C100400, // 000E CALL R4 2 + 0x80000800, // 000F RET 0 + 0x88100106, // 0010 GETMBR R4 R0 K6 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x5C180600, // 0014 MOVE R6 R3 + 0x5C1C0000, // 0015 MOVE R7 R0 + 0x5C200800, // 0016 MOVE R8 R4 + 0x5C240400, // 0017 MOVE R9 R2 + 0x7C180600, // 0018 CALL R6 3 + 0x881C0107, // 0019 GETMBR R7 R0 K7 + 0x8C1C0F08, // 001A GETMET R7 R7 K8 + 0x5C240C00, // 001B MOVE R9 R6 + 0x7C1C0400, // 001C CALL R7 2 + 0x601C0013, // 001D GETGBL R7 G19 + 0x7C1C0000, // 001E CALL R7 0 + 0x981E1201, // 001F SETIDX R7 K9 R1 + 0x60200010, // 0020 GETGBL R8 G16 + 0x8C24050A, // 0021 GETMET R9 R2 K10 + 0x7C240200, // 0022 CALL R9 1 + 0x7C200200, // 0023 CALL R8 1 + 0xA8020004, // 0024 EXBLK 0 #002A + 0x5C241000, // 0025 MOVE R9 R8 + 0x7C240000, // 0026 CALL R9 0 + 0x94280409, // 0027 GETIDX R10 R2 R9 + 0x981C120A, // 0028 SETIDX R7 R9 R10 + 0x7001FFFA, // 0029 JMP #0025 + 0x5820000B, // 002A LDCONST R8 K11 + 0xAC200200, // 002B CATCH R8 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0xB8220400, // 002D GETNGBL R8 K2 + 0x60240018, // 002E GETGBL R9 G24 + 0x5828000C, // 002F LDCONST R10 K12 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300200, // 0031 MOVE R12 R1 + 0x8C34010D, // 0032 GETMET R13 R0 K13 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C340400, // 0034 CALL R13 2 + 0x7C240800, // 0035 CALL R9 4 + 0x5828000E, // 0036 LDCONST R10 K14 + 0x7C200400, // 0037 CALL R8 2 + 0x8820010F, // 0038 GETMBR R8 R0 K15 + 0x98200A07, // 0039 SETIDX R8 R5 R7 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x90022008, // 003B SETMBR R0 K16 R8 + 0x88200106, // 003C GETMBR R8 R0 K6 + 0x00201111, // 003D ADD R8 R8 K17 + 0x90020C08, // 003E SETMBR R0 K6 R8 + 0x8C200112, // 003F GETMET R8 R0 K18 + 0x7C200200, // 0040 CALL R8 1 + 0x8C200113, // 0041 GETMET R8 R0 K19 + 0x7C200200, // 0042 CALL R8 1 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_root_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(commissioning_admin_fabric), + }), + be_str_weak(is_root_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060003, // 0003 JMPF R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x74060000, // 0007 JMPT R1 #0009 + 0x50040001, // 0008 LDBOOL R1 0 1 + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 }) ) ); @@ -1588,76 +2050,57 @@ be_local_closure(class_Matter_Device_load_param, /* name */ /******************************************************************** -** Solidified function: compute_qrcode_content +** Solidified function: start_commissioning_complete ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ +be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ + 10, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(setbits), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(vendorid), - /* K4 */ be_nested_str_weak(productid), - /* K5 */ be_nested_str_weak(root_discriminator), - /* K6 */ be_nested_str_weak(root_passcode), - /* K7 */ be_const_int(134217727), - /* K8 */ be_nested_str_weak(MT_X3A), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(Base38), - /* K11 */ be_nested_str_weak(encode), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(get_fabric), + /* K1 */ be_nested_str_weak(get_fabric_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(get_admin_vendor_name), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(stop_basic_commissioning), }), - be_str_weak(compute_qrcode_content), + be_str_weak(start_commissioning_complete), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 - 0x540E000A, // 0003 LDINT R3 11 - 0x7C040400, // 0004 CALL R1 2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x5416000F, // 0007 LDINT R5 16 - 0x88180103, // 0008 GETMBR R6 R0 K3 - 0x7C080800, // 0009 CALL R2 4 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x54120012, // 000B LDINT R4 19 - 0x5416000F, // 000C LDINT R5 16 - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x7C080800, // 000E CALL R2 4 - 0x8C080301, // 000F GETMET R2 R1 K1 - 0x54120024, // 0010 LDINT R4 37 - 0x54160007, // 0011 LDINT R5 8 - 0x541A0003, // 0012 LDINT R6 4 - 0x7C080800, // 0013 CALL R2 4 - 0x8C080301, // 0014 GETMET R2 R1 K1 - 0x5412002C, // 0015 LDINT R4 45 - 0x5416000B, // 0016 LDINT R5 12 - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x541E0FFE, // 0018 LDINT R7 4095 - 0x2C180C07, // 0019 AND R6 R6 R7 - 0x7C080800, // 001A CALL R2 4 - 0x8C080301, // 001B GETMET R2 R1 K1 - 0x54120038, // 001C LDINT R4 57 - 0x5416001A, // 001D LDINT R5 27 - 0x88180106, // 001E GETMBR R6 R0 K6 - 0x2C180D07, // 001F AND R6 R6 K7 - 0x7C080800, // 0020 CALL R2 4 - 0xB80A1200, // 0021 GETNGBL R2 K9 - 0x8808050A, // 0022 GETMBR R2 R2 K10 - 0x8C08050B, // 0023 GETMET R2 R2 K11 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x000A1002, // 0026 ADD R2 K8 R2 - 0x80040400, // 0027 RET 1 R2 + ( &(const binstruction[23]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x8C0C0501, // 0002 GETMET R3 R2 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x7C100200, // 000B CALL R4 1 + 0xB8160C00, // 000C GETNGBL R5 K6 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C0007, // 000E LDCONST R7 K7 + 0x5C200600, // 000F MOVE R8 R3 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C180600, // 0011 CALL R6 3 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x7C140400, // 0013 CALL R5 2 + 0x8C140109, // 0014 GETMET R5 R0 K9 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 }) ) ); @@ -1717,374 +2160,80 @@ be_local_closure(class_Matter_Device_attribute_updated, /* name */ /******************************************************************** -** Solidified function: register_http_remote +** Solidified function: k2l ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_register_http_remote, /* name */ +be_local_closure(class_Matter_Device_k2l, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(get_timeout), - /* K3 */ be_nested_str_weak(set_timeout), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(HTTP_remote), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(set_info), - }), - be_str_weak(register_http_remote), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x600C0013, // 0004 GETGBL R3 G19 - 0x7C0C0000, // 0005 CALL R3 0 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x8C100901, // 0009 GETMET R4 R4 K1 - 0x5C180200, // 000A MOVE R6 R1 - 0x7C100400, // 000B CALL R4 2 - 0x78120009, // 000C JMPF R4 #0017 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x940C0801, // 000E GETIDX R3 R4 R1 - 0x8C140702, // 000F GETMET R5 R3 K2 - 0x7C140200, // 0010 CALL R5 1 - 0x14140405, // 0011 LT R5 R2 R5 - 0x78160002, // 0012 JMPF R5 #0016 - 0x8C140703, // 0013 GETMET R5 R3 K3 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C140400, // 0015 CALL R5 2 - 0x70020011, // 0016 JMP #0029 - 0xB8120800, // 0017 GETNGBL R4 K4 - 0x8C100905, // 0018 GETMET R4 R4 K5 - 0x5C180000, // 0019 MOVE R6 R0 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x5C200400, // 001B MOVE R8 R2 - 0x7C100800, // 001C CALL R4 4 - 0x5C0C0800, // 001D MOVE R3 R4 - 0x88100106, // 001E GETMBR R4 R0 K6 - 0x8C100901, // 001F GETMET R4 R4 K1 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100707, // 0023 GETMET R4 R3 K7 - 0x88180106, // 0024 GETMBR R6 R0 K6 - 0x94180C01, // 0025 GETIDX R6 R6 R1 - 0x7C100400, // 0026 CALL R4 2 - 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x98100203, // 0028 SETIDX R4 R1 R3 - 0x80040600, // 0029 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_commissioning_open -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ - be_nested_proto( - 3, /* nstack */ + 8, /* nstack */ 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - }), - be_str_weak(is_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_arg -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_arg), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo_one -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K1 */ be_nested_str_weak(state_json), - /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(publish_result), - /* K5 */ be_nested_str_weak(), + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), }), - be_str_weak(MtrInfo_one), + be_str_weak(k2l), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 + ( &(const binstruction[50]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0403, // 0004 EQ R3 R2 R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 0x780E0000, // 0005 JMPF R3 #0007 - 0x80000600, // 0006 RET 0 - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x780E0008, // 0009 JMPF R3 #0013 - 0x60100018, // 000A GETGBL R4 G24 - 0x58140002, // 000B LDCONST R5 K2 - 0x5C180600, // 000C MOVE R6 R3 - 0x7C100400, // 000D CALL R4 2 - 0xB8160600, // 000E GETNGBL R5 K3 - 0x8C140B04, // 000F GETMET R5 R5 K4 - 0x5C1C0800, // 0010 MOVE R7 R4 - 0x58200005, // 0011 LDCONST R8 K5 - 0x7C140600, // 0012 CALL R5 3 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_remove_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins_config), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(plugins_persist), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(get_endpoint), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(clean_remotes), - /* K15 */ be_nested_str_weak(save_param), - /* K16 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_remove_endpoint), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C0008, // 0001 GETGBL R3 G8 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x4C140000, // 0005 LDNIL R5 - 0x88180101, // 0006 GETMBR R6 R0 K1 - 0x8C180D02, // 0007 GETMET R6 R6 K2 - 0x5C200600, // 0008 MOVE R8 R3 - 0x7C180400, // 0009 CALL R6 2 - 0x741A0004, // 000A JMPT R6 #0010 - 0xB81A0600, // 000B GETNGBL R6 K3 - 0x001E0803, // 000C ADD R7 K4 R3 - 0x58200005, // 000D LDCONST R8 K5 - 0x7C180400, // 000E CALL R6 2 - 0x80000C00, // 000F RET 0 - 0xB81A0600, // 0010 GETNGBL R6 K3 - 0x601C0018, // 0011 GETGBL R7 G24 - 0x58200006, // 0012 LDCONST R8 K6 - 0x5C240200, // 0013 MOVE R9 R1 - 0x7C1C0400, // 0014 CALL R7 2 - 0x58200007, // 0015 LDCONST R8 K7 - 0x7C180400, // 0016 CALL R6 2 - 0x88180101, // 0017 GETMBR R6 R0 K1 - 0x8C180D08, // 0018 GETMET R6 R6 K8 - 0x5C200600, // 0019 MOVE R8 R3 - 0x7C180400, // 001A CALL R6 2 - 0x50180200, // 001B LDBOOL R6 1 0 - 0x90021206, // 001C SETMBR R0 K9 R6 - 0x5818000A, // 001D LDCONST R6 K10 - 0x601C000C, // 001E GETGBL R7 G12 - 0x8820010B, // 001F GETMBR R8 R0 K11 - 0x7C1C0200, // 0020 CALL R7 1 - 0x141C0C07, // 0021 LT R7 R6 R7 - 0x781E000D, // 0022 JMPF R7 #0031 - 0x881C010B, // 0023 GETMBR R7 R0 K11 - 0x941C0E06, // 0024 GETIDX R7 R7 R6 - 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 - 0x7C1C0200, // 0026 CALL R7 1 - 0x1C1C0207, // 0027 EQ R7 R1 R7 - 0x781E0005, // 0028 JMPF R7 #002F - 0x881C010B, // 0029 GETMBR R7 R0 K11 - 0x8C1C0F08, // 002A GETMET R7 R7 K8 - 0x5C240C00, // 002B MOVE R9 R6 - 0x7C1C0400, // 002C CALL R7 2 - 0x70020002, // 002D JMP #0031 - 0x70020000, // 002E JMP #0030 - 0x00180D0D, // 002F ADD R6 R6 K13 - 0x7001FFEC, // 0030 JMP #001E - 0x8C1C010E, // 0031 GETMET R7 R0 K14 - 0x7C1C0200, // 0032 CALL R7 1 - 0x8C1C010F, // 0033 GETMET R7 R0 K15 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0110, // 0035 GETMET R7 R0 K16 - 0x7C1C0200, // 0036 CALL R7 1 - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve_attribute_read_solo -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K7 */ be_nested_str_weak(contains_cluster), - /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K9 */ be_nested_str_weak(contains_attribute), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), - be_str_weak(resolve_attribute_read_solo), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 - 0x4C140000, // 0003 LDNIL R5 - 0x1C140405, // 0004 EQ R5 R2 R5 - 0x74160005, // 0005 JMPT R5 #000C - 0x4C140000, // 0006 LDNIL R5 - 0x1C140605, // 0007 EQ R5 R3 R5 - 0x74160002, // 0008 JMPT R5 #000C - 0x4C140000, // 0009 LDNIL R5 - 0x1C140805, // 000A EQ R5 R4 R5 - 0x78160001, // 000B JMPF R5 #000E - 0x4C140000, // 000C LDNIL R5 - 0x80040A00, // 000D RET 1 R5 - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x5C1C0400, // 000F MOVE R7 R2 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020005, // 000B EXBLK 0 #0012 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x5C1C0800, // 000F MOVE R7 R4 0x7C140400, // 0010 CALL R5 2 - 0x4C180000, // 0011 LDNIL R6 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0xB81A0A00, // 0014 GETNGBL R6 K5 - 0x88180D06, // 0015 GETMBR R6 R6 K6 - 0x90060806, // 0016 SETMBR R1 K4 R6 - 0x4C180000, // 0017 LDNIL R6 - 0x80040C00, // 0018 RET 1 R6 - 0x70020013, // 0019 JMP #002E - 0x8C180B07, // 001A GETMET R6 R5 K7 - 0x5C200600, // 001B MOVE R8 R3 - 0x7C180400, // 001C CALL R6 2 - 0x741A0005, // 001D JMPT R6 #0024 - 0xB81A0A00, // 001E GETNGBL R6 K5 - 0x88180D08, // 001F GETMBR R6 R6 K8 - 0x90060806, // 0020 SETMBR R1 K4 R6 - 0x4C180000, // 0021 LDNIL R6 - 0x80040C00, // 0022 RET 1 R6 - 0x70020009, // 0023 JMP #002E - 0x8C180B09, // 0024 GETMET R6 R5 K9 - 0x5C200600, // 0025 MOVE R8 R3 - 0x5C240800, // 0026 MOVE R9 R4 - 0x7C180600, // 0027 CALL R6 3 - 0x741A0004, // 0028 JMPT R6 #002E - 0xB81A0A00, // 0029 GETNGBL R6 K5 - 0x88180D0A, // 002A GETMBR R6 R6 K10 - 0x90060806, // 002B SETMBR R1 K4 R6 - 0x4C180000, // 002C LDNIL R6 - 0x80040C00, // 002D RET 1 R6 - 0x80040A00, // 002E RET 1 R5 + 0x7001FFF9, // 0011 JMP #000C + 0x580C0003, // 0012 LDCONST R3 K3 + 0xAC0C0200, // 0013 CATCH R3 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x600C0010, // 0015 GETGBL R3 G16 + 0x6010000C, // 0016 GETGBL R4 G12 + 0x5C140400, // 0017 MOVE R5 R2 + 0x7C100200, // 0018 CALL R4 1 + 0x04100904, // 0019 SUB R4 R4 K4 + 0x40120804, // 001A CONNECT R4 K4 R4 + 0x7C0C0200, // 001B CALL R3 1 + 0xA8020010, // 001C EXBLK 0 #002E + 0x5C100600, // 001D MOVE R4 R3 + 0x7C100000, // 001E CALL R4 0 + 0x94140404, // 001F GETIDX R5 R2 R4 + 0x5C180800, // 0020 MOVE R6 R4 + 0x241C0D05, // 0021 GT R7 R6 K5 + 0x781E0008, // 0022 JMPF R7 #002C + 0x041C0D04, // 0023 SUB R7 R6 K4 + 0x941C0407, // 0024 GETIDX R7 R2 R7 + 0x241C0E05, // 0025 GT R7 R7 R5 + 0x781E0004, // 0026 JMPF R7 #002C + 0x041C0D04, // 0027 SUB R7 R6 K4 + 0x941C0407, // 0028 GETIDX R7 R2 R7 + 0x98080C07, // 0029 SETIDX R2 R6 R7 + 0x04180D04, // 002A SUB R6 R6 K4 + 0x7001FFF4, // 002B JMP #0021 + 0x98080C05, // 002C SETIDX R2 R6 R5 + 0x7001FFEE, // 002D JMP #001D + 0x580C0003, // 002E LDCONST R3 K3 + 0xAC0C0200, // 002F CATCH R3 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040400, // 0031 RET 1 R2 }) ) ); @@ -2092,143 +2241,129 @@ be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ /******************************************************************** -** Solidified function: start_root_basic_commissioning +** Solidified function: register_commands ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ +be_local_closure(class_Matter_Device_register_commands, /* name */ be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(PASE_TIMEOUT), - /* K1 */ be_nested_str_weak(compute_manual_pairing_code), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(compute_qrcode_content), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(publish_result), - /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), - /* K9 */ be_nested_str_weak(Matter), - /* K10 */ be_nested_str_weak(_compute_pbkdf), - /* K11 */ be_nested_str_weak(root_passcode), - /* K12 */ be_nested_str_weak(root_iterations), - /* K13 */ be_nested_str_weak(root_salt), - /* K14 */ be_nested_str_weak(start_basic_commissioning), - /* K15 */ be_nested_str_weak(root_discriminator), - /* K16 */ be_nested_str_weak(root_w0), - /* K17 */ be_nested_str_weak(root_L), - }), - be_str_weak(start_root_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x60100018, // 0007 GETGBL R4 G24 - 0x58140003, // 0008 LDCONST R5 K3 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C100400, // 000A CALL R4 2 - 0x58140004, // 000B LDCONST R5 K4 - 0x7C0C0400, // 000C CALL R3 2 - 0x8C0C0105, // 000D GETMET R3 R0 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x8C100907, // 0010 GETMET R4 R4 K7 - 0x60180018, // 0011 GETGBL R6 G24 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x5C200400, // 0013 MOVE R8 R2 - 0x5C240600, // 0014 MOVE R9 R3 - 0x7C180600, // 0015 CALL R6 3 - 0x581C0009, // 0016 LDCONST R7 K9 - 0x7C100600, // 0017 CALL R4 3 - 0x8C10010A, // 0018 GETMET R4 R0 K10 - 0x8818010B, // 0019 GETMBR R6 R0 K11 - 0x881C010C, // 001A GETMBR R7 R0 K12 - 0x8820010D, // 001B GETMBR R8 R0 K13 - 0x7C100800, // 001C CALL R4 4 - 0x8C10010E, // 001D GETMET R4 R0 K14 - 0x5C180200, // 001E MOVE R6 R1 - 0x881C010C, // 001F GETMBR R7 R0 K12 - 0x8820010F, // 0020 GETMBR R8 R0 K15 - 0x8824010D, // 0021 GETMBR R9 R0 K13 - 0x88280110, // 0022 GETMBR R10 R0 K16 - 0x882C0111, // 0023 GETMBR R11 R0 K17 - 0x4C300000, // 0024 LDNIL R12 - 0x7C101000, // 0025 CALL R4 8 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete_deferred -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 5, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 4]) { be_nested_proto( - 3, /* nstack */ - 0, /* argc */ + 10, /* nstack */ + 4, /* argc */ 0, /* varg */ 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ be_local_const_upval(1, 0), - be_local_const_upval(1, 1), }), 0, /* has sup protos */ NULL, 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), + /* K0 */ be_nested_str_weak(MtrJoin), }), be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrUpdate), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 + }) + ), + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(MtrInfo), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x68100000, // 0000 GETUPV R4 U0 + 0x8C100900, // 0001 GETMET R4 R4 K0 + 0x5C180000, // 0002 MOVE R6 R0 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80040800, // 0007 RET 1 R4 }) ), &be_class_Matter_Device, }), 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), + /* K1 */ be_nested_str_weak(add_cmd), + /* K2 */ be_nested_str_weak(MtrJoin), + /* K3 */ be_nested_str_weak(MtrUpdate), + /* K4 */ be_nested_str_weak(MtrInfo), }), - be_str_weak(start_commissioning_complete_deferred), + be_str_weak(register_commands), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 + ( &(const binstruction[17]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x84100000, // 0003 CLOSURE R4 P0 + 0x7C040600, // 0004 CALL R1 3 + 0xB8060000, // 0005 GETNGBL R1 K0 + 0x8C040301, // 0006 GETMET R1 R1 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x84100001, // 0008 CLOSURE R4 P1 + 0x7C040600, // 0009 CALL R1 3 + 0xB8060000, // 000A GETNGBL R1 K0 + 0x8C040301, // 000B GETMET R1 R1 K1 + 0x580C0004, // 000C LDCONST R3 K4 + 0x84100002, // 000D CLOSURE R4 P2 + 0x7C040600, // 000E CALL R1 3 + 0xA0000000, // 000F CLOSE R0 + 0x80000000, // 0010 RET 0 }) ) ); @@ -2236,12 +2371,12 @@ be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* /******************************************************************** -** Solidified function: start +** Solidified function: check_config_ep ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start, /* name */ +be_local_closure(class_Matter_Device_check_config_ep, /* name */ be_nested_proto( - 4, /* nstack */ + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2249,29 +2384,102 @@ be_local_closure(class_Matter_Device_start, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(started), - /* K1 */ be_nested_str_weak(autoconf_device), - /* K2 */ be_nested_str_weak(_start_udp), - /* K3 */ be_nested_str_weak(UDP_PORT), - /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), + /* K12 */ be_nested_str_weak(next_ep), + /* K13 */ be_const_int(1), }), - be_str_weak(start), + be_str_weak(check_config_ep), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x8C040104, // 0008 GETMET R1 R0 K4 - 0x7C040200, // 0009 CALL R1 1 - 0x50040200, // 000A LDBOOL R1 1 0 - 0x90020001, // 000B SETMBR R0 K0 R1 - 0x80000000, // 000C RET 0 + ( &(const binstruction[77]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x600C0010, // 0003 GETGBL R3 G16 + 0x88100100, // 0004 GETMBR R4 R0 K0 + 0x8C100901, // 0005 GETMET R4 R4 K1 + 0x7C100200, // 0006 CALL R4 1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020007, // 0008 EXBLK 0 #0011 + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x8C140502, // 000B GETMET R5 R2 K2 + 0x601C0009, // 000C GETGBL R7 G9 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C1C0200, // 000E CALL R7 1 + 0x7C140400, // 000F CALL R5 2 + 0x7001FFF7, // 0010 JMP #0009 + 0x580C0003, // 0011 LDCONST R3 K3 + 0xAC0C0200, // 0012 CATCH R3 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x600C0010, // 0014 GETGBL R3 G16 + 0x5C100400, // 0015 MOVE R4 R2 + 0x7C0C0200, // 0016 CALL R3 1 + 0xA8020030, // 0017 EXBLK 0 #0049 + 0x5C100600, // 0018 MOVE R4 R3 + 0x7C100000, // 0019 CALL R4 0 + 0x1C140904, // 001A EQ R5 R4 K4 + 0x7816000B, // 001B JMPF R5 #0028 + 0xB8160A00, // 001C GETNGBL R5 K5 + 0x58180006, // 001D LDCONST R6 K6 + 0x581C0007, // 001E LDCONST R7 K7 + 0x7C140400, // 001F CALL R5 2 + 0x88140100, // 0020 GETMBR R5 R0 K0 + 0x8C140B08, // 0021 GETMET R5 R5 K8 + 0x601C0008, // 0022 GETGBL R7 G8 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C1C0200, // 0024 CALL R7 1 + 0x7C140400, // 0025 CALL R5 2 + 0x50040200, // 0026 LDBOOL R1 1 0 + 0x7002001F, // 0027 JMP #0048 + 0xB8161200, // 0028 GETNGBL R5 K9 + 0x88140B0A, // 0029 GETMBR R5 R5 K10 + 0x1C140805, // 002A EQ R5 R4 R5 + 0x7816001B, // 002B JMPF R5 #0048 + 0x50040200, // 002C LDBOOL R1 1 0 + 0xB8160A00, // 002D GETNGBL R5 K5 + 0x60180018, // 002E GETGBL R6 G24 + 0x581C000B, // 002F LDCONST R7 K11 + 0x5C200800, // 0030 MOVE R8 R4 + 0x8824010C, // 0031 GETMBR R9 R0 K12 + 0x7C180600, // 0032 CALL R6 3 + 0x581C0007, // 0033 LDCONST R7 K7 + 0x7C140400, // 0034 CALL R5 2 + 0x60140008, // 0035 GETGBL R5 G8 + 0x8818010C, // 0036 GETMBR R6 R0 K12 + 0x7C140200, // 0037 CALL R5 1 + 0x88180100, // 0038 GETMBR R6 R0 K0 + 0x601C0008, // 0039 GETGBL R7 G8 + 0x5C200800, // 003A MOVE R8 R4 + 0x7C1C0200, // 003B CALL R7 1 + 0x88200100, // 003C GETMBR R8 R0 K0 + 0x941C1007, // 003D GETIDX R7 R8 R7 + 0x98180A07, // 003E SETIDX R6 R5 R7 + 0x88140100, // 003F GETMBR R5 R0 K0 + 0x8C140B08, // 0040 GETMET R5 R5 K8 + 0x601C0008, // 0041 GETGBL R7 G8 + 0x5C200800, // 0042 MOVE R8 R4 + 0x7C1C0200, // 0043 CALL R7 1 + 0x7C140400, // 0044 CALL R5 2 + 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x00140B0D, // 0046 ADD R5 R5 K13 + 0x90021805, // 0047 SETMBR R0 K12 R5 + 0x7001FFCE, // 0048 JMP #0018 + 0x580C0003, // 0049 LDCONST R3 K3 + 0xAC0C0200, // 004A CATCH R3 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80040200, // 004C RET 1 R1 }) ) ); @@ -2315,463 +2523,54 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ /******************************************************************** -** Solidified function: _trigger_read_sensors +** Solidified function: conf_to_log ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(read_sensors), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), - /* K7 */ be_nested_str_weak(load), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(plugins), - /* K10 */ be_nested_str_weak(parse_sensors), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), - }), - be_str_weak(_trigger_read_sensors), - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0xB80E0200, // 0004 GETNGBL R3 K1 - 0x8C0C0703, // 0005 GETMET R3 R3 K3 - 0x58140004, // 0006 LDCONST R5 K4 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0006, // 0008 JMPF R3 #0010 - 0xB80E0A00, // 0009 GETNGBL R3 K5 - 0x60100008, // 000A GETGBL R4 G8 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C100200, // 000C CALL R4 1 - 0x00120C04, // 000D ADD R4 K6 R4 - 0x58140004, // 000E LDCONST R5 K4 - 0x7C0C0400, // 000F CALL R3 2 - 0x4C0C0000, // 0010 LDNIL R3 - 0x1C0C0403, // 0011 EQ R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x80000600, // 0013 RET 0 - 0x8C0C0307, // 0014 GETMET R3 R1 K7 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x4C100000, // 0017 LDNIL R4 - 0x20100604, // 0018 NE R4 R3 R4 - 0x7812000D, // 0019 JMPF R4 #0028 - 0x58100008, // 001A LDCONST R4 K8 - 0x6014000C, // 001B GETGBL R5 G12 - 0x88180109, // 001C GETMBR R6 R0 K9 - 0x7C140200, // 001D CALL R5 1 - 0x14140805, // 001E LT R5 R4 R5 - 0x78160006, // 001F JMPF R5 #0027 - 0x88140109, // 0020 GETMBR R5 R0 K9 - 0x94140A04, // 0021 GETIDX R5 R5 R4 - 0x8C140B0A, // 0022 GETMET R5 R5 K10 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C140400, // 0024 CALL R5 2 - 0x0010090B, // 0025 ADD R4 R4 K11 - 0x7001FFF3, // 0026 JMP #001B - 0x70020006, // 0027 JMP #002F - 0xB8120A00, // 0028 GETNGBL R4 K5 - 0x60140008, // 0029 GETGBL R5 G8 - 0x5C180400, // 002A MOVE R6 R2 - 0x7C140200, // 002B CALL R5 1 - 0x00161805, // 002C ADD R5 K12 R5 - 0x58180004, // 002D LDCONST R6 K4 - 0x7C100400, // 002E CALL R4 2 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_PASE -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ +be_local_closure(class_Matter_Device_conf_to_log, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(mdns_pase_eth), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K4 */ be_nested_str_weak(_matterc), - /* K5 */ be_nested_str_weak(_udp), - /* K6 */ be_nested_str_weak(commissioning_instance_eth), - /* K7 */ be_nested_str_weak(hostname_eth), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K10 */ be_nested_str_weak(eth), - /* K11 */ be_nested_str_weak(remove_service), - /* K12 */ be_nested_str_weak(mdns_pase_wifi), - /* K13 */ be_nested_str_weak(commissioning_instance_wifi), - /* K14 */ be_nested_str_weak(hostname_wifi), - /* K15 */ be_nested_str_weak(wifi), - /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K17 */ be_nested_str_weak(_X7C), - /* K18 */ be_const_int(2), - }), - be_str_weak(mdns_remove_PASE), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A0019, // 0003 JMPF R2 #001E - 0xB80A0400, // 0004 GETNGBL R2 K2 - 0x600C0018, // 0005 GETGBL R3 G24 - 0x58100003, // 0006 LDCONST R4 K3 - 0x58140004, // 0007 LDCONST R5 K4 - 0x58180005, // 0008 LDCONST R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x88200107, // 000A GETMBR R8 R0 K7 - 0x7C0C0A00, // 000B CALL R3 5 - 0x58100008, // 000C LDCONST R4 K8 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0400, // 000E GETNGBL R2 K2 - 0x600C0018, // 000F GETGBL R3 G24 - 0x58100009, // 0010 LDCONST R4 K9 - 0x5814000A, // 0011 LDCONST R5 K10 - 0x88180106, // 0012 GETMBR R6 R0 K6 - 0x7C0C0600, // 0013 CALL R3 3 - 0x58100008, // 0014 LDCONST R4 K8 - 0x7C080400, // 0015 CALL R2 2 - 0x50080000, // 0016 LDBOOL R2 0 0 - 0x90020202, // 0017 SETMBR R0 K1 R2 - 0x8C08030B, // 0018 GETMET R2 R1 K11 - 0x58100004, // 0019 LDCONST R4 K4 - 0x58140005, // 001A LDCONST R5 K5 - 0x88180106, // 001B GETMBR R6 R0 K6 - 0x881C0107, // 001C GETMBR R7 R0 K7 - 0x7C080A00, // 001D CALL R2 5 - 0x8808010C, // 001E GETMBR R2 R0 K12 - 0x780A0019, // 001F JMPF R2 #003A - 0xB80A0400, // 0020 GETNGBL R2 K2 - 0x600C0018, // 0021 GETGBL R3 G24 - 0x58100003, // 0022 LDCONST R4 K3 - 0x58140004, // 0023 LDCONST R5 K4 - 0x58180005, // 0024 LDCONST R6 K5 - 0x881C010D, // 0025 GETMBR R7 R0 K13 - 0x8820010E, // 0026 GETMBR R8 R0 K14 - 0x7C0C0A00, // 0027 CALL R3 5 - 0x58100008, // 0028 LDCONST R4 K8 - 0x7C080400, // 0029 CALL R2 2 - 0xB80A0400, // 002A GETNGBL R2 K2 - 0x600C0018, // 002B GETGBL R3 G24 - 0x58100009, // 002C LDCONST R4 K9 - 0x5814000F, // 002D LDCONST R5 K15 - 0x8818010D, // 002E GETMBR R6 R0 K13 - 0x7C0C0600, // 002F CALL R3 3 - 0x58100008, // 0030 LDCONST R4 K8 - 0x7C080400, // 0031 CALL R2 2 - 0x50080000, // 0032 LDBOOL R2 0 0 - 0x90021802, // 0033 SETMBR R0 K12 R2 - 0x8C08030B, // 0034 GETMET R2 R1 K11 - 0x58100004, // 0035 LDCONST R4 K4 - 0x58140005, // 0036 LDCONST R5 K5 - 0x8818010D, // 0037 GETMBR R6 R0 K13 - 0x881C010E, // 0038 GETMBR R7 R0 K14 - 0x7C080A00, // 0039 CALL R2 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC080002, // 003C CATCH R2 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8120400, // 003E GETNGBL R4 K2 - 0x60140008, // 003F GETGBL R5 G8 - 0x5C180400, // 0040 MOVE R6 R2 - 0x7C140200, // 0041 CALL R5 1 - 0x00162005, // 0042 ADD R5 K16 R5 - 0x00140B11, // 0043 ADD R5 R5 K17 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x00140A06, // 0047 ADD R5 R5 R6 - 0x58180012, // 0048 LDCONST R6 K18 - 0x7C100400, // 0049 CALL R4 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_active_endpoints -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins), - /* K1 */ be_nested_str_weak(get_endpoint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_active_endpoints), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020011, // 0005 EXBLK 0 #0018 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140901, // 0008 GETMET R5 R4 K1 - 0x7C140200, // 0009 CALL R5 1 - 0x78060002, // 000A JMPF R1 #000E - 0x1C180B02, // 000B EQ R6 R5 K2 - 0x781A0000, // 000C JMPF R6 #000E - 0x7001FFF7, // 000D JMP #0006 - 0x8C180503, // 000E GETMET R6 R2 K3 - 0x5C200A00, // 000F MOVE R8 R5 - 0x7C180400, // 0010 CALL R6 2 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x781A0002, // 0013 JMPF R6 #0017 - 0x8C180504, // 0014 GETMET R6 R2 K4 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x7C180400, // 0016 CALL R6 2 - 0x7001FFED, // 0017 JMP #0006 - 0x580C0005, // 0018 LDCONST R3 K5 - 0xAC0C0200, // 0019 CATCH R3 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x80040400, // 001B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_friendly_name -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_name), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_plugin_by_friendly_name), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x1C080500, // 0006 EQ R2 R2 K0 - 0x780A0001, // 0007 JMPF R2 #000A - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - 0x58080000, // 000A LDCONST R2 K0 - 0x600C000C, // 000B GETGBL R3 G12 - 0x88100101, // 000C GETMBR R4 R0 K1 - 0x7C0C0200, // 000D CALL R3 1 - 0x140C0403, // 000E LT R3 R2 R3 - 0x780E0010, // 000F JMPF R3 #0021 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x940C0602, // 0011 GETIDX R3 R3 R2 - 0x8C100702, // 0012 GETMET R4 R3 K2 - 0x7C100200, // 0013 CALL R4 1 - 0x4C140000, // 0014 LDNIL R5 - 0x20140805, // 0015 NE R5 R4 R5 - 0x78160007, // 0016 JMPF R5 #001F - 0x6014000C, // 0017 GETGBL R5 G12 - 0x5C180800, // 0018 MOVE R6 R4 - 0x7C140200, // 0019 CALL R5 1 - 0x24140B00, // 001A GT R5 R5 K0 - 0x78160002, // 001B JMPF R5 #001F - 0x1C140801, // 001C EQ R5 R4 R1 - 0x78160000, // 001D JMPF R5 #001F - 0x80040600, // 001E RET 1 R3 - 0x00080503, // 001F ADD R2 R2 K3 - 0x7001FFE9, // 0020 JMP #000B - 0x4C0C0000, // 0021 LDNIL R3 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: adjust_next_ep -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(next_ep), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(adjust_next_ep), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000A, // 0005 EXBLK 0 #0011 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x600C0009, // 0008 GETGBL R3 G9 - 0x5C100400, // 0009 MOVE R4 R2 - 0x7C0C0200, // 000A CALL R3 1 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x28100604, // 000C GE R4 R3 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x00100703, // 000E ADD R4 R3 K3 - 0x90020404, // 000F SETMBR R0 K2 R4 - 0x7001FFF4, // 0010 JMP #0006 - 0x58040004, // 0011 LDCONST R1 K4 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sort_distinct -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_sort_distinct, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(remove), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(k2l), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), + /* K5 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(sort_distinct), + be_str_weak(conf_to_log), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ + ( &(const binstruction[24]) { /* code */ 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020010, // 0008 EXBLK 0 #001A - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x24180C04, // 0011 GT R6 R6 R4 - 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B01, // 0013 SUB R6 R5 K1 - 0x94180006, // 0014 GETIDX R6 R0 R6 - 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B01, // 0016 SUB R5 R5 K1 - 0x7001FFF4, // 0017 JMP #000D - 0x98000A04, // 0018 SETIDX R0 R5 R4 - 0x7001FFEE, // 0019 JMP #0009 - 0x58080003, // 001A LDCONST R2 K3 - 0xAC080200, // 001B CATCH R2 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x58080001, // 001D LDCONST R2 K1 - 0x600C000C, // 001E GETGBL R3 G12 - 0x5C100000, // 001F MOVE R4 R0 - 0x7C0C0200, // 0020 CALL R3 1 - 0x180C0701, // 0021 LE R3 R3 K1 - 0x780E0000, // 0022 JMPF R3 #0024 - 0x80040000, // 0023 RET 1 R0 - 0x940C0102, // 0024 GETIDX R3 R0 K2 - 0x6010000C, // 0025 GETGBL R4 G12 - 0x5C140000, // 0026 MOVE R5 R0 - 0x7C100200, // 0027 CALL R4 1 - 0x14100404, // 0028 LT R4 R2 R4 - 0x78120009, // 0029 JMPF R4 #0034 - 0x94100002, // 002A GETIDX R4 R0 R2 - 0x1C100803, // 002B EQ R4 R4 R3 - 0x78120003, // 002C JMPF R4 #0031 - 0x8C100104, // 002D GETMET R4 R0 K4 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x70020001, // 0030 JMP #0033 - 0x940C0002, // 0031 GETIDX R3 R0 R2 - 0x00080501, // 0032 ADD R2 R2 K1 - 0x7001FFF0, // 0033 JMP #0025 - 0x80040000, // 0034 RET 1 R0 + 0x58080001, // 0001 LDCONST R2 K1 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100302, // 0003 GETMET R4 R1 K2 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA802000B, // 0007 EXBLK 0 #0014 + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x1C140903, // 000A EQ R5 R4 K3 + 0x78160000, // 000B JMPF R5 #000D + 0x7001FFFA, // 000C JMP #0008 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180004, // 000E LDCONST R6 K4 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x94200004, // 0010 GETIDX R8 R0 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x00080405, // 0012 ADD R2 R2 R5 + 0x7001FFF3, // 0013 JMP #0008 + 0x580C0005, // 0014 LDCONST R3 K5 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x80040400, // 0017 RET 1 R2 }) ) ); @@ -2861,151 +2660,6 @@ be_local_closure(class_Matter_Device_k2l_num, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: start_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ - be_nested_proto( - 13, /* nstack */ - 8, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(commissioning_iterations), - /* K4 */ be_nested_str_weak(commissioning_discriminator), - /* K5 */ be_nested_str_weak(commissioning_salt), - /* K6 */ be_nested_str_weak(commissioning_w0), - /* K7 */ be_nested_str_weak(commissioning_L), - /* K8 */ be_nested_str_weak(commissioning_admin_fabric), - /* K9 */ be_nested_str_weak(wifi), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(mdns_announce_PASE), - /* K13 */ be_nested_str_weak(add_rule), - /* K14 */ be_nested_str_weak(Wifi_X23Connected), - /* K15 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xB8220200, // 0000 GETNGBL R8 K1 - 0x8C201102, // 0001 GETMET R8 R8 K2 - 0x7C200200, // 0002 CALL R8 1 - 0x542603E7, // 0003 LDINT R9 1000 - 0x08240209, // 0004 MUL R9 R1 R9 - 0x00201009, // 0005 ADD R8 R8 R9 - 0x90020008, // 0006 SETMBR R0 K0 R8 - 0x90020602, // 0007 SETMBR R0 K3 R2 - 0x90020803, // 0008 SETMBR R0 K4 R3 - 0x90020A04, // 0009 SETMBR R0 K5 R4 - 0x90020C05, // 000A SETMBR R0 K6 R5 - 0x90020E06, // 000B SETMBR R0 K7 R6 - 0x90021007, // 000C SETMBR R0 K8 R7 - 0xB8220200, // 000D GETNGBL R8 K1 - 0x8C201109, // 000E GETMET R8 R8 K9 - 0x7C200200, // 000F CALL R8 1 - 0x9420110A, // 0010 GETIDX R8 R8 K10 - 0x74220004, // 0011 JMPT R8 #0017 - 0xB8220200, // 0012 GETNGBL R8 K1 - 0x8C20110B, // 0013 GETMET R8 R8 K11 - 0x7C200200, // 0014 CALL R8 1 - 0x9420110A, // 0015 GETIDX R8 R8 K10 - 0x78220002, // 0016 JMPF R8 #001A - 0x8C20010C, // 0017 GETMET R8 R0 K12 - 0x7C200200, // 0018 CALL R8 1 - 0x7002000B, // 0019 JMP #0026 - 0xB8220200, // 001A GETNGBL R8 K1 - 0x8C20110D, // 001B GETMET R8 R8 K13 - 0x5828000E, // 001C LDCONST R10 K14 - 0x842C0000, // 001D CLOSURE R11 P0 - 0x5830000C, // 001E LDCONST R12 K12 - 0x7C200800, // 001F CALL R8 4 - 0xB8220200, // 0020 GETNGBL R8 K1 - 0x8C20110D, // 0021 GETMET R8 R8 K13 - 0x5828000F, // 0022 LDCONST R10 K15 - 0x842C0001, // 0023 CLOSURE R11 P1 - 0x5830000C, // 0024 LDCONST R12 K12 - 0x7C200800, // 0025 CALL R8 4 - 0xA0000000, // 0026 CLOSE R0 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: stop ********************************************************************/ @@ -3046,10 +2700,10 @@ be_local_closure(class_Matter_Device_stop, /* name */ /******************************************************************** -** Solidified function: msg_send +** Solidified function: get_plugin_class_arg ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_send, /* name */ +be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -3059,97 +2713,24 @@ be_local_closure(class_Matter_Device_msg_send, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(send_UDP), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_nested_str_weak(), }), - be_str_weak(msg_send), + be_str_weak(get_plugin_class_arg), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ + ( &(const binstruction[ 9]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_device, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(plugins_config), - /* K5 */ be_nested_str_weak(autoconf_device_map), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(adjust_next_ep), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(count_active_fabrics), - /* K14 */ be_nested_str_weak(save_param), - }), - be_str_weak(autoconf_device), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x24080502, // 0004 GT R2 R2 K2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x80000400, // 0006 RET 0 - 0x88080103, // 0007 GETMBR R2 R0 K3 - 0x740A000E, // 0008 JMPT R2 #0018 - 0x8C080105, // 0009 GETMET R2 R0 K5 - 0x7C080200, // 000A CALL R2 1 - 0x90020802, // 000B SETMBR R0 K4 R2 - 0x60080013, // 000C GETGBL R2 G19 - 0x7C080000, // 000D CALL R2 0 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x7C080200, // 0010 CALL R2 1 - 0xB80A1000, // 0011 GETNGBL R2 K8 - 0x600C0008, // 0012 GETGBL R3 G8 - 0x88100104, // 0013 GETMBR R4 R0 K4 - 0x7C0C0200, // 0014 CALL R3 1 - 0x000E1203, // 0015 ADD R3 K9 R3 - 0x5810000A, // 0016 LDCONST R4 K10 - 0x7C080400, // 0017 CALL R2 2 - 0x8C08010B, // 0018 GETMET R2 R0 K11 - 0x88100104, // 0019 GETMBR R4 R0 K4 - 0x7C080400, // 001A CALL R2 2 - 0x88080103, // 001B GETMBR R2 R0 K3 - 0x740A0008, // 001C JMPT R2 #0026 - 0x8808010C, // 001D GETMBR R2 R0 K12 - 0x8C08050D, // 001E GETMET R2 R2 K13 - 0x7C080200, // 001F CALL R2 1 - 0x24080502, // 0020 GT R2 R2 K2 - 0x780A0003, // 0021 JMPF R2 #0026 - 0x50080200, // 0022 LDBOOL R2 1 0 - 0x90020602, // 0023 SETMBR R0 K3 R2 - 0x8C08010E, // 0024 GETMET R2 R0 K14 - 0x7C080200, // 0025 CALL R2 1 - 0x80000000, // 0026 RET 0 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 }) ) ); @@ -3415,6 +2996,615 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: remove_fabric +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_remove_fabric, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), + /* K2 */ be_nested_str_weak(get_fabric_id), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(reverse), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(message_handler), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(subs_shop), + /* K10 */ be_nested_str_weak(remove_by_fabric), + /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(remove_fabric), + /* K14 */ be_nested_str_weak(save_fabrics), + }), + be_str_weak(remove_fabric), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0018, // 0002 JMPF R2 #001C + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x8C0C0302, // 0004 GETMET R3 R1 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x7C0C0200, // 000B CALL R3 1 + 0x000E0203, // 000C ADD R3 K1 R3 + 0x58100006, // 000D LDCONST R4 K6 + 0x7C080400, // 000E CALL R2 2 + 0x88080107, // 000F GETMBR R2 R0 K7 + 0x88080508, // 0010 GETMBR R2 R2 K8 + 0x88080509, // 0011 GETMBR R2 R2 K9 + 0x8C08050A, // 0012 GETMET R2 R2 K10 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x8C08010B, // 0015 GETMET R2 R0 K11 + 0x5C100200, // 0016 MOVE R4 R1 + 0x7C080400, // 0017 CALL R2 2 + 0x8808010C, // 0018 GETMBR R2 R0 K12 + 0x8C08050D, // 0019 GETMET R2 R2 K13 + 0x5C100200, // 001A MOVE R4 R1 + 0x7C080400, // 001B CALL R2 2 + 0x8808010C, // 001C GETMBR R2 R0 K12 + 0x8C08050E, // 001D GETMET R2 R2 K14 + 0x7C080200, // 001E CALL R2 1 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_init, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(get_option), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(MATTER_OPTION), + /* K5 */ be_nested_str_weak(UI), + /* K6 */ be_nested_str_weak(profiler), + /* K7 */ be_nested_str_weak(Profiler), + /* K8 */ be_nested_str_weak(started), + /* K9 */ be_nested_str_weak(tick), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(plugins_config_remotes), + /* K14 */ be_nested_str_weak(next_ep), + /* K15 */ be_const_int(2), + /* K16 */ be_nested_str_weak(ipv4only), + /* K17 */ be_nested_str_weak(disable_bridge_mode), + /* K18 */ be_nested_str_weak(load_param), + /* K19 */ be_nested_str_weak(sessions), + /* K20 */ be_nested_str_weak(Session_Store), + /* K21 */ be_nested_str_weak(load_fabrics), + /* K22 */ be_nested_str_weak(message_handler), + /* K23 */ be_nested_str_weak(MessageHandler), + /* K24 */ be_nested_str_weak(events), + /* K25 */ be_nested_str_weak(EventHandler), + /* K26 */ be_nested_str_weak(ui), + /* K27 */ be_nested_str_weak(wifi), + /* K28 */ be_nested_str_weak(up), + /* K29 */ be_nested_str_weak(eth), + /* K30 */ be_nested_str_weak(start), + /* K31 */ be_nested_str_weak(add_rule), + /* K32 */ be_nested_str_weak(Wifi_X23Connected), + /* K33 */ be_nested_str_weak(matter_start), + /* K34 */ be_nested_str_weak(Eth_X23Connected), + /* K35 */ be_nested_str_weak(_init_basic_commissioning), + /* K36 */ be_nested_str_weak(add_driver), + /* K37 */ be_nested_str_weak(register_commands), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[102]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x88100904, // 0004 GETMBR R4 R4 K4 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0004, // 0006 JMPT R2 #000C + 0xB80A0600, // 0007 GETNGBL R2 K3 + 0x8C080505, // 0008 GETMET R2 R2 K5 + 0x5C100000, // 0009 MOVE R4 R0 + 0x7C080400, // 000A CALL R2 2 + 0x80000400, // 000B RET 0 + 0xB80A0600, // 000C GETNGBL R2 K3 + 0xB80E0600, // 000D GETNGBL R3 K3 + 0x8C0C0707, // 000E GETMET R3 R3 K7 + 0x7C0C0200, // 000F CALL R3 1 + 0x900A0C03, // 0010 SETMBR R2 K6 R3 + 0x50080000, // 0011 LDBOOL R2 0 0 + 0x90021002, // 0012 SETMBR R0 K8 R2 + 0x9002130A, // 0013 SETMBR R0 K9 K10 + 0x60080012, // 0014 GETGBL R2 G18 + 0x7C080000, // 0015 CALL R2 0 + 0x90021602, // 0016 SETMBR R0 K11 R2 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x90021802, // 0018 SETMBR R0 K12 R2 + 0x60080013, // 0019 GETGBL R2 G19 + 0x7C080000, // 001A CALL R2 0 + 0x90021A02, // 001B SETMBR R0 K13 R2 + 0x90021D0F, // 001C SETMBR R0 K14 K15 + 0x50080000, // 001D LDBOOL R2 0 0 + 0x90022002, // 001E SETMBR R0 K16 R2 + 0x50080000, // 001F LDBOOL R2 0 0 + 0x90022202, // 0020 SETMBR R0 K17 R2 + 0x8C080112, // 0021 GETMET R2 R0 K18 + 0x7C080200, // 0022 CALL R2 1 + 0xB80A0600, // 0023 GETNGBL R2 K3 + 0x8C080514, // 0024 GETMET R2 R2 K20 + 0x5C100000, // 0025 MOVE R4 R0 + 0x7C080400, // 0026 CALL R2 2 + 0x90022602, // 0027 SETMBR R0 K19 R2 + 0x88080113, // 0028 GETMBR R2 R0 K19 + 0x8C080515, // 0029 GETMET R2 R2 K21 + 0x7C080200, // 002A CALL R2 1 + 0xB80A0600, // 002B GETNGBL R2 K3 + 0x8C080517, // 002C GETMET R2 R2 K23 + 0x5C100000, // 002D MOVE R4 R0 + 0x7C080400, // 002E CALL R2 2 + 0x90022C02, // 002F SETMBR R0 K22 R2 + 0xB80A0600, // 0030 GETNGBL R2 K3 + 0x8C080519, // 0031 GETMET R2 R2 K25 + 0x5C100000, // 0032 MOVE R4 R0 + 0x7C080400, // 0033 CALL R2 2 + 0x90023002, // 0034 SETMBR R0 K24 R2 + 0xB80A0600, // 0035 GETNGBL R2 K3 + 0x8C080505, // 0036 GETMET R2 R2 K5 + 0x5C100000, // 0037 MOVE R4 R0 + 0x7C080400, // 0038 CALL R2 2 + 0x90023402, // 0039 SETMBR R0 K26 R2 + 0xB80A0200, // 003A GETNGBL R2 K1 + 0x8C08051B, // 003B GETMET R2 R2 K27 + 0x7C080200, // 003C CALL R2 1 + 0x9408051C, // 003D GETIDX R2 R2 K28 + 0x740A0004, // 003E JMPT R2 #0044 + 0xB80A0200, // 003F GETNGBL R2 K1 + 0x8C08051D, // 0040 GETMET R2 R2 K29 + 0x7C080200, // 0041 CALL R2 1 + 0x9408051C, // 0042 GETIDX R2 R2 K28 + 0x780A0001, // 0043 JMPF R2 #0046 + 0x8C08011E, // 0044 GETMET R2 R0 K30 + 0x7C080200, // 0045 CALL R2 1 + 0xB80A0200, // 0046 GETNGBL R2 K1 + 0x8C08051B, // 0047 GETMET R2 R2 K27 + 0x7C080200, // 0048 CALL R2 1 + 0x9408051C, // 0049 GETIDX R2 R2 K28 + 0x740A0005, // 004A JMPT R2 #0051 + 0xB80A0200, // 004B GETNGBL R2 K1 + 0x8C08051F, // 004C GETMET R2 R2 K31 + 0x58100020, // 004D LDCONST R4 K32 + 0x84140000, // 004E CLOSURE R5 P0 + 0x58180021, // 004F LDCONST R6 K33 + 0x7C080800, // 0050 CALL R2 4 + 0xB80A0200, // 0051 GETNGBL R2 K1 + 0x8C08051D, // 0052 GETMET R2 R2 K29 + 0x7C080200, // 0053 CALL R2 1 + 0x9408051C, // 0054 GETIDX R2 R2 K28 + 0x740A0005, // 0055 JMPT R2 #005C + 0xB80A0200, // 0056 GETNGBL R2 K1 + 0x8C08051F, // 0057 GETMET R2 R2 K31 + 0x58100022, // 0058 LDCONST R4 K34 + 0x84140001, // 0059 CLOSURE R5 P1 + 0x58180021, // 005A LDCONST R6 K33 + 0x7C080800, // 005B CALL R2 4 + 0x8C080123, // 005C GETMET R2 R0 K35 + 0x7C080200, // 005D CALL R2 1 + 0xB80A0200, // 005E GETNGBL R2 K1 + 0x8C080524, // 005F GETMET R2 R2 K36 + 0x5C100000, // 0060 MOVE R4 R0 + 0x7C080400, // 0061 CALL R2 2 + 0x8C080125, // 0062 GETMET R2 R0 K37 + 0x7C080200, // 0063 CALL R2 1 + 0xA0000000, // 0064 CLOSE R0 + 0x80000000, // 0065 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + }), + be_str_weak(is_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: adjust_next_ep +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(next_ep), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(adjust_next_ep), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000A, // 0005 EXBLK 0 #0011 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x600C0009, // 0008 GETGBL R3 G9 + 0x5C100400, // 0009 MOVE R4 R2 + 0x7C0C0200, // 000A CALL R3 1 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0x28100604, // 000C GE R4 R3 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x00100703, // 000E ADD R4 R3 K3 + 0x90020404, // 000F SETMBR R0 K2 R4 + 0x7001FFF4, // 0010 JMP #0006 + 0x58040004, // 0011 LDCONST R1 K4 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(is_root_commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(publish_result), + /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), + /* K4 */ be_nested_str_weak(Matter), + /* K5 */ be_nested_str_weak(commissioning_open), + /* K6 */ be_nested_str_weak(mdns_remove_PASE), + /* K7 */ be_nested_str_weak(commissioning_iterations), + /* K8 */ be_nested_str_weak(commissioning_discriminator), + /* K9 */ be_nested_str_weak(commissioning_salt), + /* K10 */ be_nested_str_weak(commissioning_w0), + /* K11 */ be_nested_str_weak(commissioning_L), + /* K12 */ be_nested_str_weak(commissioning_admin_fabric), + }), + be_str_weak(stop_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x78060004, // 0002 JMPF R1 #0008 + 0xB8060200, // 0003 GETNGBL R1 K1 + 0x8C040302, // 0004 GETMET R1 R1 K2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x58100004, // 0006 LDCONST R4 K4 + 0x7C040600, // 0007 CALL R1 3 + 0x4C040000, // 0008 LDNIL R1 + 0x90020A01, // 0009 SETMBR R0 K5 R1 + 0x8C040106, // 000A GETMET R1 R0 K6 + 0x7C040200, // 000B CALL R1 1 + 0x4C040000, // 000C LDNIL R1 + 0x90020E01, // 000D SETMBR R0 K7 R1 + 0x4C040000, // 000E LDNIL R1 + 0x90021001, // 000F SETMBR R0 K8 R1 + 0x4C040000, // 0010 LDNIL R1 + 0x90021201, // 0011 SETMBR R0 K9 R1 + 0x4C040000, // 0012 LDNIL R1 + 0x90021401, // 0013 SETMBR R0 K10 R1 + 0x4C040000, // 0014 LDNIL R1 + 0x90021601, // 0015 SETMBR R0 K11 R1 + 0x4C040000, // 0016 LDNIL R1 + 0x90021801, // 0017 SETMBR R0 K12 R1 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_sensors_list +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(k2l), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(Temperature), + /* K3 */ be_nested_str_weak(_X23Temperature), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(temperature), + /* K7 */ be_nested_str_weak(filter), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(Pressure), + /* K10 */ be_nested_str_weak(_X23Pressure), + /* K11 */ be_nested_str_weak(pressure), + /* K12 */ be_nested_str_weak(Illuminance), + /* K13 */ be_nested_str_weak(_X23Illuminance), + /* K14 */ be_nested_str_weak(illuminance), + /* K15 */ be_nested_str_weak(Humidity), + /* K16 */ be_nested_str_weak(_X23Humidity), + /* K17 */ be_nested_str_weak(humidity), + }), + be_str_weak(autoconf_sensors_list), + &be_const_str_solidified, + ( &(const binstruction[119]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100100, // 0003 GETMET R4 R0 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020013, // 0007 EXBLK 0 #001C + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x94140204, // 000A GETIDX R5 R1 R4 + 0x6018000F, // 000B GETGBL R6 G15 + 0x5C1C0A00, // 000C MOVE R7 R5 + 0x60200013, // 000D GETGBL R8 G19 + 0x7C180400, // 000E CALL R6 2 + 0x781A000A, // 000F JMPF R6 #001B + 0x8C180B01, // 0010 GETMET R6 R5 K1 + 0x58200002, // 0011 LDCONST R8 K2 + 0x7C180400, // 0012 CALL R6 2 + 0x781A0006, // 0013 JMPF R6 #001B + 0x00180903, // 0014 ADD R6 R4 K3 + 0x8C1C0504, // 0015 GETMET R7 R2 K4 + 0x60240013, // 0016 GETGBL R9 G19 + 0x7C240000, // 0017 CALL R9 0 + 0x98260B06, // 0018 SETIDX R9 K5 K6 + 0x98260E06, // 0019 SETIDX R9 K7 R6 + 0x7C1C0400, // 001A CALL R7 2 + 0x7001FFEB, // 001B JMP #0008 + 0x580C0008, // 001C LDCONST R3 K8 + 0xAC0C0200, // 001D CATCH R3 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x600C0010, // 001F GETGBL R3 G16 + 0x8C100100, // 0020 GETMET R4 R0 K0 + 0x5C180200, // 0021 MOVE R6 R1 + 0x7C100400, // 0022 CALL R4 2 + 0x7C0C0200, // 0023 CALL R3 1 + 0xA8020013, // 0024 EXBLK 0 #0039 + 0x5C100600, // 0025 MOVE R4 R3 + 0x7C100000, // 0026 CALL R4 0 + 0x94140204, // 0027 GETIDX R5 R1 R4 + 0x6018000F, // 0028 GETGBL R6 G15 + 0x5C1C0A00, // 0029 MOVE R7 R5 + 0x60200013, // 002A GETGBL R8 G19 + 0x7C180400, // 002B CALL R6 2 + 0x781A000A, // 002C JMPF R6 #0038 + 0x8C180B01, // 002D GETMET R6 R5 K1 + 0x58200009, // 002E LDCONST R8 K9 + 0x7C180400, // 002F CALL R6 2 + 0x781A0006, // 0030 JMPF R6 #0038 + 0x0018090A, // 0031 ADD R6 R4 K10 + 0x8C1C0504, // 0032 GETMET R7 R2 K4 + 0x60240013, // 0033 GETGBL R9 G19 + 0x7C240000, // 0034 CALL R9 0 + 0x98260B0B, // 0035 SETIDX R9 K5 K11 + 0x98260E06, // 0036 SETIDX R9 K7 R6 + 0x7C1C0400, // 0037 CALL R7 2 + 0x7001FFEB, // 0038 JMP #0025 + 0x580C0008, // 0039 LDCONST R3 K8 + 0xAC0C0200, // 003A CATCH R3 1 0 + 0xB0080000, // 003B RAISE 2 R0 R0 + 0x600C0010, // 003C GETGBL R3 G16 + 0x8C100100, // 003D GETMET R4 R0 K0 + 0x5C180200, // 003E MOVE R6 R1 + 0x7C100400, // 003F CALL R4 2 + 0x7C0C0200, // 0040 CALL R3 1 + 0xA8020013, // 0041 EXBLK 0 #0056 + 0x5C100600, // 0042 MOVE R4 R3 + 0x7C100000, // 0043 CALL R4 0 + 0x94140204, // 0044 GETIDX R5 R1 R4 + 0x6018000F, // 0045 GETGBL R6 G15 + 0x5C1C0A00, // 0046 MOVE R7 R5 + 0x60200013, // 0047 GETGBL R8 G19 + 0x7C180400, // 0048 CALL R6 2 + 0x781A000A, // 0049 JMPF R6 #0055 + 0x8C180B01, // 004A GETMET R6 R5 K1 + 0x5820000C, // 004B LDCONST R8 K12 + 0x7C180400, // 004C CALL R6 2 + 0x781A0006, // 004D JMPF R6 #0055 + 0x0018090D, // 004E ADD R6 R4 K13 + 0x8C1C0504, // 004F GETMET R7 R2 K4 + 0x60240013, // 0050 GETGBL R9 G19 + 0x7C240000, // 0051 CALL R9 0 + 0x98260B0E, // 0052 SETIDX R9 K5 K14 + 0x98260E06, // 0053 SETIDX R9 K7 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x7001FFEB, // 0055 JMP #0042 + 0x580C0008, // 0056 LDCONST R3 K8 + 0xAC0C0200, // 0057 CATCH R3 1 0 + 0xB0080000, // 0058 RAISE 2 R0 R0 + 0x600C0010, // 0059 GETGBL R3 G16 + 0x8C100100, // 005A GETMET R4 R0 K0 + 0x5C180200, // 005B MOVE R6 R1 + 0x7C100400, // 005C CALL R4 2 + 0x7C0C0200, // 005D CALL R3 1 + 0xA8020013, // 005E EXBLK 0 #0073 + 0x5C100600, // 005F MOVE R4 R3 + 0x7C100000, // 0060 CALL R4 0 + 0x94140204, // 0061 GETIDX R5 R1 R4 + 0x6018000F, // 0062 GETGBL R6 G15 + 0x5C1C0A00, // 0063 MOVE R7 R5 + 0x60200013, // 0064 GETGBL R8 G19 + 0x7C180400, // 0065 CALL R6 2 + 0x781A000A, // 0066 JMPF R6 #0072 + 0x8C180B01, // 0067 GETMET R6 R5 K1 + 0x5820000F, // 0068 LDCONST R8 K15 + 0x7C180400, // 0069 CALL R6 2 + 0x781A0006, // 006A JMPF R6 #0072 + 0x00180910, // 006B ADD R6 R4 K16 + 0x8C1C0504, // 006C GETMET R7 R2 K4 + 0x60240013, // 006D GETGBL R9 G19 + 0x7C240000, // 006E CALL R9 0 + 0x98260B11, // 006F SETIDX R9 K5 K17 + 0x98260E06, // 0070 SETIDX R9 K7 R6 + 0x7C1C0400, // 0071 CALL R7 2 + 0x7001FFEB, // 0072 JMP #005F + 0x580C0008, // 0073 LDCONST R3 K8 + 0xAC0C0200, // 0074 CATCH R3 1 0 + 0xB0080000, // 0075 RAISE 2 R0 R0 + 0x80040400, // 0076 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: update_remotes_info ********************************************************************/ @@ -3480,128 +3670,12 @@ be_local_closure(class_Matter_Device_update_remotes_info, /* name */ /******************************************************************** -** Solidified function: check_config_ep +** Solidified function: get_plugin_class_displayname ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_check_config_ep, /* name */ +be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), - /* K12 */ be_nested_str_weak(next_ep), - /* K13 */ be_const_int(1), - }), - be_str_weak(check_config_ep), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x600C0010, // 0003 GETGBL R3 G16 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x8C100901, // 0005 GETMET R4 R4 K1 - 0x7C100200, // 0006 CALL R4 1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020007, // 0008 EXBLK 0 #0011 - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x8C140502, // 000B GETMET R5 R2 K2 - 0x601C0009, // 000C GETGBL R7 G9 - 0x5C200800, // 000D MOVE R8 R4 - 0x7C1C0200, // 000E CALL R7 1 - 0x7C140400, // 000F CALL R5 2 - 0x7001FFF7, // 0010 JMP #0009 - 0x580C0003, // 0011 LDCONST R3 K3 - 0xAC0C0200, // 0012 CATCH R3 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x600C0010, // 0014 GETGBL R3 G16 - 0x5C100400, // 0015 MOVE R4 R2 - 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020030, // 0017 EXBLK 0 #0049 - 0x5C100600, // 0018 MOVE R4 R3 - 0x7C100000, // 0019 CALL R4 0 - 0x1C140904, // 001A EQ R5 R4 K4 - 0x7816000B, // 001B JMPF R5 #0028 - 0xB8160A00, // 001C GETNGBL R5 K5 - 0x58180006, // 001D LDCONST R6 K6 - 0x581C0007, // 001E LDCONST R7 K7 - 0x7C140400, // 001F CALL R5 2 - 0x88140100, // 0020 GETMBR R5 R0 K0 - 0x8C140B08, // 0021 GETMET R5 R5 K8 - 0x601C0008, // 0022 GETGBL R7 G8 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C1C0200, // 0024 CALL R7 1 - 0x7C140400, // 0025 CALL R5 2 - 0x50040200, // 0026 LDBOOL R1 1 0 - 0x7002001F, // 0027 JMP #0048 - 0xB8161200, // 0028 GETNGBL R5 K9 - 0x88140B0A, // 0029 GETMBR R5 R5 K10 - 0x1C140805, // 002A EQ R5 R4 R5 - 0x7816001B, // 002B JMPF R5 #0048 - 0x50040200, // 002C LDBOOL R1 1 0 - 0xB8160A00, // 002D GETNGBL R5 K5 - 0x60180018, // 002E GETGBL R6 G24 - 0x581C000B, // 002F LDCONST R7 K11 - 0x5C200800, // 0030 MOVE R8 R4 - 0x8824010C, // 0031 GETMBR R9 R0 K12 - 0x7C180600, // 0032 CALL R6 3 - 0x581C0007, // 0033 LDCONST R7 K7 - 0x7C140400, // 0034 CALL R5 2 - 0x60140008, // 0035 GETGBL R5 G8 - 0x8818010C, // 0036 GETMBR R6 R0 K12 - 0x7C140200, // 0037 CALL R5 1 - 0x88180100, // 0038 GETMBR R6 R0 K0 - 0x601C0008, // 0039 GETGBL R7 G8 - 0x5C200800, // 003A MOVE R8 R4 - 0x7C1C0200, // 003B CALL R7 1 - 0x88200100, // 003C GETMBR R8 R0 K0 - 0x941C1007, // 003D GETIDX R7 R8 R7 - 0x98180A07, // 003E SETIDX R6 R5 R7 - 0x88140100, // 003F GETMBR R5 R0 K0 - 0x8C140B08, // 0040 GETMET R5 R5 K8 - 0x601C0008, // 0041 GETGBL R7 G8 - 0x5C200800, // 0042 MOVE R8 R4 - 0x7C1C0200, // 0043 CALL R7 1 - 0x7C140400, // 0044 CALL R5 2 - 0x8814010C, // 0045 GETMBR R5 R0 K12 - 0x00140B0D, // 0046 ADD R5 R5 K13 - 0x90021805, // 0047 SETMBR R0 K12 R5 - 0x7001FFCE, // 0048 JMP #0018 - 0x580C0003, // 0049 LDCONST R3 K3 - 0xAC0C0200, // 004A CATCH R3 1 0 - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80040200, // 004C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ - be_nested_proto( - 10, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3609,44 +3683,894 @@ be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric), - /* K1 */ be_nested_str_weak(get_fabric_id), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(DISPLAY_NAME), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(get_plugin_class_displayname), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete_deferred +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_commissioning_complete_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _trigger_read_sensors +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(read_sensors), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), + /* K7 */ be_nested_str_weak(load), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(plugins), + /* K10 */ be_nested_str_weak(parse_sensors), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), + }), + be_str_weak(_trigger_read_sensors), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E0200, // 0004 GETNGBL R3 K1 + 0x8C0C0703, // 0005 GETMET R3 R3 K3 + 0x58140004, // 0006 LDCONST R5 K4 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0006, // 0008 JMPF R3 #0010 + 0xB80E0A00, // 0009 GETNGBL R3 K5 + 0x60100008, // 000A GETGBL R4 G8 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C100200, // 000C CALL R4 1 + 0x00120C04, // 000D ADD R4 K6 R4 + 0x58140004, // 000E LDCONST R5 K4 + 0x7C0C0400, // 000F CALL R3 2 + 0x4C0C0000, // 0010 LDNIL R3 + 0x1C0C0403, // 0011 EQ R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x80000600, // 0013 RET 0 + 0x8C0C0307, // 0014 GETMET R3 R1 K7 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x4C100000, // 0017 LDNIL R4 + 0x20100604, // 0018 NE R4 R3 R4 + 0x7812000D, // 0019 JMPF R4 #0028 + 0x58100008, // 001A LDCONST R4 K8 + 0x6014000C, // 001B GETGBL R5 G12 + 0x88180109, // 001C GETMBR R6 R0 K9 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160006, // 001F JMPF R5 #0027 + 0x88140109, // 0020 GETMBR R5 R0 K9 + 0x94140A04, // 0021 GETIDX R5 R5 R4 + 0x8C140B0A, // 0022 GETMET R5 R5 K10 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C140400, // 0024 CALL R5 2 + 0x0010090B, // 0025 ADD R4 R4 K11 + 0x7001FFF3, // 0026 JMP #001B + 0x70020006, // 0027 JMP #002F + 0xB8120A00, // 0028 GETNGBL R4 K5 + 0x60140008, // 0029 GETGBL R5 G8 + 0x5C180400, // 002A MOVE R6 R2 + 0x7C140200, // 002B CALL R5 1 + 0x00161805, // 002C ADD R5 K12 R5 + 0x58180004, // 002D LDCONST R6 K4 + 0x7C100400, // 002E CALL R4 2 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_second, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(every_second), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(events), + /* K4 */ be_nested_str_weak(commissioning_open), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(time_reached), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x88040103, // 0006 GETMBR R1 R0 K3 + 0x8C040301, // 0007 GETMET R1 R1 K1 + 0x7C040200, // 0008 CALL R1 1 + 0x88040104, // 0009 GETMBR R1 R0 K4 + 0x4C080000, // 000A LDNIL R2 + 0x20040202, // 000B NE R1 R1 R2 + 0x78060006, // 000C JMPF R1 #0014 + 0xB8060A00, // 000D GETNGBL R1 K5 + 0x8C040306, // 000E GETMET R1 R1 K6 + 0x880C0104, // 000F GETMBR R3 R0 K4 + 0x7C040400, // 0010 CALL R1 2 + 0x78060001, // 0011 JMPF R1 #0014 + 0x4C040000, // 0012 LDNIL R1 + 0x90020801, // 0013 SETMBR R0 K4 R1 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ + be_nested_proto( + 13, /* nstack */ + 8, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(millis), + /* K3 */ be_nested_str_weak(commissioning_iterations), + /* K4 */ be_nested_str_weak(commissioning_discriminator), + /* K5 */ be_nested_str_weak(commissioning_salt), + /* K6 */ be_nested_str_weak(commissioning_w0), + /* K7 */ be_nested_str_weak(commissioning_L), + /* K8 */ be_nested_str_weak(commissioning_admin_fabric), + /* K9 */ be_nested_str_weak(wifi), + /* K10 */ be_nested_str_weak(up), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(mdns_announce_PASE), + /* K13 */ be_nested_str_weak(add_rule), + /* K14 */ be_nested_str_weak(Wifi_X23Connected), + /* K15 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xB8220200, // 0000 GETNGBL R8 K1 + 0x8C201102, // 0001 GETMET R8 R8 K2 + 0x7C200200, // 0002 CALL R8 1 + 0x542603E7, // 0003 LDINT R9 1000 + 0x08240209, // 0004 MUL R9 R1 R9 + 0x00201009, // 0005 ADD R8 R8 R9 + 0x90020008, // 0006 SETMBR R0 K0 R8 + 0x90020602, // 0007 SETMBR R0 K3 R2 + 0x90020803, // 0008 SETMBR R0 K4 R3 + 0x90020A04, // 0009 SETMBR R0 K5 R4 + 0x90020C05, // 000A SETMBR R0 K6 R5 + 0x90020E06, // 000B SETMBR R0 K7 R6 + 0x90021007, // 000C SETMBR R0 K8 R7 + 0xB8220200, // 000D GETNGBL R8 K1 + 0x8C201109, // 000E GETMET R8 R8 K9 + 0x7C200200, // 000F CALL R8 1 + 0x9420110A, // 0010 GETIDX R8 R8 K10 + 0x74220004, // 0011 JMPT R8 #0017 + 0xB8220200, // 0012 GETNGBL R8 K1 + 0x8C20110B, // 0013 GETMET R8 R8 K11 + 0x7C200200, // 0014 CALL R8 1 + 0x9420110A, // 0015 GETIDX R8 R8 K10 + 0x78220002, // 0016 JMPF R8 #001A + 0x8C20010C, // 0017 GETMET R8 R0 K12 + 0x7C200200, // 0018 CALL R8 1 + 0x7002000B, // 0019 JMP #0026 + 0xB8220200, // 001A GETNGBL R8 K1 + 0x8C20110D, // 001B GETMET R8 R8 K13 + 0x5828000E, // 001C LDCONST R10 K14 + 0x842C0000, // 001D CLOSURE R11 P0 + 0x5830000C, // 001E LDCONST R12 K12 + 0x7C200800, // 001F CALL R8 4 + 0xB8220200, // 0020 GETNGBL R8 K1 + 0x8C20110D, // 0021 GETMET R8 R8 K13 + 0x5828000F, // 0022 LDCONST R10 K15 + 0x842C0001, // 0023 CLOSURE R11 P1 + 0x5830000C, // 0024 LDCONST R12 K12 + 0x7C200800, // 0025 CALL R8 4 + 0xA0000000, // 0026 CLOSE R0 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), /* K2 */ be_nested_str_weak(copy), /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(get_admin_vendor_name), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(stop_basic_commissioning), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(find), + /* K13 */ be_nested_str_weak(up), + /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K15 */ be_nested_str_weak(hostname_eth), + /* K16 */ be_nested_str_weak(add_service), + /* K17 */ be_nested_str_weak(_matter), + /* K18 */ be_nested_str_weak(_tcp), + /* K19 */ be_nested_str_weak(_I), + /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K21 */ be_nested_str_weak(add_subtype), + /* K22 */ be_nested_str_weak(wifi), + /* K23 */ be_nested_str_weak(hostname_wifi), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_const_int(2), }), - be_str_weak(start_commissioning_complete), + be_str_weak(mdns_announce_op_discovery), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x8C0C0501, // 0002 GETMET R3 R2 K1 + ( &(const binstruction[115]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA802005F, // 0001 EXBLK 0 #0062 + 0x8C0C0301, // 0002 GETMET R3 R1 K1 0x7C0C0200, // 0003 CALL R3 1 0x8C0C0702, // 0004 GETMET R3 R3 K2 0x7C0C0200, // 0005 CALL R3 1 0x8C0C0703, // 0006 GETMET R3 R3 K3 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x7C100200, // 000B CALL R4 1 - 0xB8160C00, // 000C GETNGBL R5 K6 - 0x60180018, // 000D GETGBL R6 G24 - 0x581C0007, // 000E LDCONST R7 K7 - 0x5C200600, // 000F MOVE R8 R3 - 0x5C240800, // 0010 MOVE R9 R4 - 0x7C180600, // 0011 CALL R6 3 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x001E1005, // 0011 ADD R7 K8 R5 + 0x58200009, // 0012 LDCONST R8 K9 + 0x7C180400, // 0013 CALL R6 2 + 0xB81A1400, // 0014 GETNGBL R6 K10 + 0x8C180D0B, // 0015 GETMET R6 R6 K11 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180D0C, // 0017 GETMET R6 R6 K12 + 0x5820000D, // 0018 LDCONST R8 K13 + 0x7C180400, // 0019 CALL R6 2 + 0x781A001E, // 001A JMPF R6 #003A + 0xB81A0E00, // 001B GETNGBL R6 K7 + 0x601C0018, // 001C GETGBL R7 G24 + 0x5820000E, // 001D LDCONST R8 K14 + 0x5824000B, // 001E LDCONST R9 K11 + 0x5C280A00, // 001F MOVE R10 R5 + 0x882C010F, // 0020 GETMBR R11 R0 K15 + 0x7C1C0800, // 0021 CALL R7 4 + 0x58200009, // 0022 LDCONST R8 K9 + 0x7C180400, // 0023 CALL R6 2 + 0x8C180510, // 0024 GETMET R6 R2 K16 + 0x58200011, // 0025 LDCONST R8 K17 + 0x58240012, // 0026 LDCONST R9 K18 + 0x542A15A3, // 0027 LDINT R10 5540 + 0x4C2C0000, // 0028 LDNIL R11 + 0x5C300A00, // 0029 MOVE R12 R5 + 0x8834010F, // 002A GETMBR R13 R0 K15 + 0x7C180E00, // 002B CALL R6 7 + 0x8C180905, // 002C GETMET R6 R4 K5 + 0x7C180200, // 002D CALL R6 1 + 0x001A2606, // 002E ADD R6 K19 R6 + 0xB81E0E00, // 002F GETNGBL R7 K7 + 0x00222806, // 0030 ADD R8 K20 R6 + 0x58240009, // 0031 LDCONST R9 K9 + 0x7C1C0400, // 0032 CALL R7 2 + 0x8C1C0515, // 0033 GETMET R7 R2 K21 + 0x58240011, // 0034 LDCONST R9 K17 + 0x58280012, // 0035 LDCONST R10 K18 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x8830010F, // 0037 GETMBR R12 R0 K15 + 0x5C340C00, // 0038 MOVE R13 R6 + 0x7C1C0C00, // 0039 CALL R7 6 + 0xB81A1400, // 003A GETNGBL R6 K10 + 0x8C180D16, // 003B GETMET R6 R6 K22 + 0x7C180200, // 003C CALL R6 1 + 0x8C180D0C, // 003D GETMET R6 R6 K12 + 0x5820000D, // 003E LDCONST R8 K13 + 0x7C180400, // 003F CALL R6 2 + 0x781A001E, // 0040 JMPF R6 #0060 + 0xB81A0E00, // 0041 GETNGBL R6 K7 + 0x601C0018, // 0042 GETGBL R7 G24 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x58240016, // 0044 LDCONST R9 K22 + 0x5C280A00, // 0045 MOVE R10 R5 + 0x882C0117, // 0046 GETMBR R11 R0 K23 + 0x7C1C0800, // 0047 CALL R7 4 + 0x58200009, // 0048 LDCONST R8 K9 + 0x7C180400, // 0049 CALL R6 2 + 0x8C180510, // 004A GETMET R6 R2 K16 + 0x58200011, // 004B LDCONST R8 K17 + 0x58240012, // 004C LDCONST R9 K18 + 0x542A15A3, // 004D LDINT R10 5540 + 0x4C2C0000, // 004E LDNIL R11 + 0x5C300A00, // 004F MOVE R12 R5 + 0x88340117, // 0050 GETMBR R13 R0 K23 + 0x7C180E00, // 0051 CALL R6 7 + 0x8C180905, // 0052 GETMET R6 R4 K5 + 0x7C180200, // 0053 CALL R6 1 + 0x001A2606, // 0054 ADD R6 K19 R6 + 0xB81E0E00, // 0055 GETNGBL R7 K7 + 0x00222806, // 0056 ADD R8 K20 R6 + 0x58240009, // 0057 LDCONST R9 K9 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C1C0515, // 0059 GETMET R7 R2 K21 + 0x58240011, // 005A LDCONST R9 K17 + 0x58280012, // 005B LDCONST R10 K18 + 0x5C2C0A00, // 005C MOVE R11 R5 + 0x88300117, // 005D GETMBR R12 R0 K23 + 0x5C340C00, // 005E MOVE R13 R6 + 0x7C1C0C00, // 005F CALL R7 6 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7002000F, // 0061 JMP #0072 + 0xAC0C0002, // 0062 CATCH R3 0 2 + 0x7002000C, // 0063 JMP #0071 + 0xB8160E00, // 0064 GETNGBL R5 K7 + 0x60180008, // 0065 GETGBL R6 G8 + 0x5C1C0600, // 0066 MOVE R7 R3 + 0x7C180200, // 0067 CALL R6 1 + 0x001A3006, // 0068 ADD R6 K24 R6 + 0x00180D19, // 0069 ADD R6 R6 K25 + 0x601C0008, // 006A GETGBL R7 G8 + 0x5C200800, // 006B MOVE R8 R4 + 0x7C1C0200, // 006C CALL R7 1 + 0x00180C07, // 006D ADD R6 R6 R7 + 0x581C001A, // 006E LDCONST R7 K26 + 0x7C140400, // 006F CALL R5 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_manual_pairing_code +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(root_discriminator), + /* K1 */ be_nested_str_weak(root_passcode), + /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Verhoeff), + /* K5 */ be_nested_str_weak(checksum), + }), + be_str_weak(compute_manual_pairing_code), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x540A0FFE, // 0001 LDINT R2 4095 + 0x2C040202, // 0002 AND R1 R1 R2 + 0x540A0009, // 0003 LDINT R2 10 + 0x3C040202, // 0004 SHR R1 R1 R2 + 0x88080100, // 0005 GETMBR R2 R0 K0 + 0x540E02FF, // 0006 LDINT R3 768 + 0x2C080403, // 0007 AND R2 R2 R3 + 0x540E0005, // 0008 LDINT R3 6 + 0x38080403, // 0009 SHL R2 R2 R3 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x54123FFE, // 000B LDINT R4 16383 + 0x2C0C0604, // 000C AND R3 R3 R4 + 0x30080403, // 000D OR R2 R2 R3 + 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x5412000D, // 000F LDINT R4 14 + 0x3C0C0604, // 0010 SHR R3 R3 R4 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140002, // 0012 LDCONST R5 K2 + 0x5C180200, // 0013 MOVE R6 R1 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x5C200600, // 0015 MOVE R8 R3 + 0x7C100800, // 0016 CALL R4 4 + 0xB8160600, // 0017 GETNGBL R5 K3 + 0x88140B04, // 0018 GETMBR R5 R5 K4 + 0x8C140B05, // 0019 GETMET R5 R5 K5 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x7C140400, // 001B CALL R5 2 + 0x00100805, // 001C ADD R4 R4 R5 + 0x80040800, // 001D RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_fabrics_saved +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(save_param), + }), + be_str_weak(event_fabrics_saved), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x24040302, // 0003 GT R1 R1 K2 + 0x78060005, // 0004 JMPF R1 #000B + 0x88040103, // 0005 GETMBR R1 R0 K3 + 0x74060003, // 0006 JMPT R1 #000B + 0x50040200, // 0007 LDBOOL R1 1 0 + 0x90020601, // 0008 SETMBR R0 K3 R1 + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_device, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(plugins_config), + /* K5 */ be_nested_str_weak(autoconf_device_map), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(adjust_next_ep), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(count_active_fabrics), + /* K14 */ be_nested_str_weak(save_param), + }), + be_str_weak(autoconf_device), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x24080502, // 0004 GT R2 R2 K2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x80000400, // 0006 RET 0 + 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x740A000E, // 0008 JMPT R2 #0018 + 0x8C080105, // 0009 GETMET R2 R0 K5 + 0x7C080200, // 000A CALL R2 1 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0x60080013, // 000C GETGBL R2 G19 + 0x7C080000, // 000D CALL R2 0 + 0x90020C02, // 000E SETMBR R0 K6 R2 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x7C080200, // 0010 CALL R2 1 + 0xB80A1000, // 0011 GETNGBL R2 K8 + 0x600C0008, // 0012 GETGBL R3 G8 + 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x7C0C0200, // 0014 CALL R3 1 + 0x000E1203, // 0015 ADD R3 K9 R3 + 0x5810000A, // 0016 LDCONST R4 K10 + 0x7C080400, // 0017 CALL R2 2 + 0x8C08010B, // 0018 GETMET R2 R0 K11 + 0x88100104, // 0019 GETMBR R4 R0 K4 + 0x7C080400, // 001A CALL R2 2 + 0x88080103, // 001B GETMBR R2 R0 K3 + 0x740A0008, // 001C JMPT R2 #0026 + 0x8808010C, // 001D GETMBR R2 R0 K12 + 0x8C08050D, // 001E GETMET R2 R2 K13 + 0x7C080200, // 001F CALL R2 1 + 0x24080502, // 0020 GT R2 R2 K2 + 0x780A0003, // 0021 JMPF R2 #0026 + 0x50080200, // 0022 LDBOOL R2 1 0 + 0x90020602, // 0023 SETMBR R0 K3 R2 + 0x8C08010E, // 0024 GETMET R2 R0 K14 + 0x7C080200, // 0025 CALL R2 1 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_root_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ + be_nested_proto( + 22, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(PASE_TIMEOUT), + /* K1 */ be_nested_str_weak(compute_manual_pairing_code), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(compute_qrcode_content), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(publish_result), + /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), + /* K9 */ be_nested_str_weak(Matter), + /* K10 */ be_nested_str_weak(crypto), + /* K11 */ be_nested_str_weak(random), + /* K12 */ be_nested_str_weak(add), + /* K13 */ be_nested_str_weak(root_passcode), + /* K14 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), + /* K15 */ be_nested_str_weak(derive), + /* K16 */ be_nested_str_weak(PBKDF_ITERATIONS), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(EC_P256), + /* K19 */ be_nested_str_weak(mod), + /* K20 */ be_nested_str_weak(public_key), + /* K21 */ be_nested_str_weak(start_basic_commissioning), + /* K22 */ be_nested_str_weak(root_discriminator), + }), + be_str_weak(start_root_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[74]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040100, // 0003 GETMBR R1 R0 K0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140003, // 0008 LDCONST R5 K3 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C100400, // 000A CALL R4 2 + 0x58140004, // 000B LDCONST R5 K4 + 0x7C0C0400, // 000C CALL R3 2 + 0x8C0C0105, // 000D GETMET R3 R0 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x8C100907, // 0010 GETMET R4 R4 K7 + 0x60180018, // 0011 GETGBL R6 G24 0x581C0008, // 0012 LDCONST R7 K8 - 0x7C140400, // 0013 CALL R5 2 - 0x8C140109, // 0014 GETMET R5 R0 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x80000000, // 0016 RET 0 + 0x5C200400, // 0013 MOVE R8 R2 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C180600, // 0015 CALL R6 3 + 0x581C0009, // 0016 LDCONST R7 K9 + 0x7C100600, // 0017 CALL R4 3 + 0xA4121400, // 0018 IMPORT R4 K10 + 0x8C14090B, // 0019 GETMET R5 R4 K11 + 0x541E000F, // 001A LDINT R7 16 + 0x7C140400, // 001B CALL R5 2 + 0x60180015, // 001C GETGBL R6 G21 + 0x7C180000, // 001D CALL R6 0 + 0x8C180D0C, // 001E GETMET R6 R6 K12 + 0x8820010D, // 001F GETMBR R8 R0 K13 + 0x54260003, // 0020 LDINT R9 4 + 0x7C180600, // 0021 CALL R6 3 + 0x8C1C090E, // 0022 GETMET R7 R4 K14 + 0x7C1C0200, // 0023 CALL R7 1 + 0x8C1C0F0F, // 0024 GETMET R7 R7 K15 + 0x5C240C00, // 0025 MOVE R9 R6 + 0x5C280A00, // 0026 MOVE R10 R5 + 0x882C0110, // 0027 GETMBR R11 R0 K16 + 0x5432004F, // 0028 LDINT R12 80 + 0x7C1C0A00, // 0029 CALL R7 5 + 0x54220026, // 002A LDINT R8 39 + 0x40222208, // 002B CONNECT R8 K17 R8 + 0x94200E08, // 002C GETIDX R8 R7 R8 + 0x54260027, // 002D LDINT R9 40 + 0x542A004E, // 002E LDINT R10 79 + 0x4024120A, // 002F CONNECT R9 R9 R10 + 0x94240E09, // 0030 GETIDX R9 R7 R9 + 0x8C280912, // 0031 GETMET R10 R4 K18 + 0x7C280200, // 0032 CALL R10 1 + 0x8C281513, // 0033 GETMET R10 R10 K19 + 0x5C301000, // 0034 MOVE R12 R8 + 0x7C280400, // 0035 CALL R10 2 + 0x8C2C0912, // 0036 GETMET R11 R4 K18 + 0x7C2C0200, // 0037 CALL R11 1 + 0x8C2C1713, // 0038 GETMET R11 R11 K19 + 0x5C341200, // 0039 MOVE R13 R9 + 0x7C2C0400, // 003A CALL R11 2 + 0x8C300912, // 003B GETMET R12 R4 K18 + 0x7C300200, // 003C CALL R12 1 + 0x8C301914, // 003D GETMET R12 R12 K20 + 0x5C381600, // 003E MOVE R14 R11 + 0x7C300400, // 003F CALL R12 2 + 0x8C340115, // 0040 GETMET R13 R0 K21 + 0x5C3C0200, // 0041 MOVE R15 R1 + 0x88400110, // 0042 GETMBR R16 R0 K16 + 0x88440116, // 0043 GETMBR R17 R0 K22 + 0x5C480A00, // 0044 MOVE R18 R5 + 0x5C4C1400, // 0045 MOVE R19 R10 + 0x5C501800, // 0046 MOVE R20 R12 + 0x4C540000, // 0047 LDNIL R21 + 0x7C341000, // 0048 CALL R13 8 + 0x80000000, // 0049 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery_all_fabrics +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_announce_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 }) ) ); @@ -3779,62 +4703,45 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ /******************************************************************** -** Solidified function: stop_basic_commissioning +** Solidified function: find_plugin_by_endpoint ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ +be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ be_nested_proto( - 5, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(is_root_commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(publish_result), - /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), - /* K4 */ be_nested_str_weak(Matter), - /* K5 */ be_nested_str_weak(commissioning_open), - /* K6 */ be_nested_str_weak(mdns_remove_PASE), - /* K7 */ be_nested_str_weak(commissioning_iterations), - /* K8 */ be_nested_str_weak(commissioning_discriminator), - /* K9 */ be_nested_str_weak(commissioning_salt), - /* K10 */ be_nested_str_weak(commissioning_w0), - /* K11 */ be_nested_str_weak(commissioning_L), - /* K12 */ be_nested_str_weak(commissioning_admin_fabric), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(get_endpoint), + /* K3 */ be_const_int(1), }), - be_str_weak(stop_basic_commissioning), + be_str_weak(find_plugin_by_endpoint), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x78060004, // 0002 JMPF R1 #0008 - 0xB8060200, // 0003 GETNGBL R1 K1 - 0x8C040302, // 0004 GETMET R1 R1 K2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x58100004, // 0006 LDCONST R4 K4 - 0x7C040600, // 0007 CALL R1 3 - 0x4C040000, // 0008 LDNIL R1 - 0x90020A01, // 0009 SETMBR R0 K5 R1 - 0x8C040106, // 000A GETMET R1 R0 K6 - 0x7C040200, // 000B CALL R1 1 - 0x4C040000, // 000C LDNIL R1 - 0x90020E01, // 000D SETMBR R0 K7 R1 - 0x4C040000, // 000E LDNIL R1 - 0x90021001, // 000F SETMBR R0 K8 R1 - 0x4C040000, // 0010 LDNIL R1 - 0x90021201, // 0011 SETMBR R0 K9 R1 - 0x4C040000, // 0012 LDNIL R1 - 0x90021401, // 0013 SETMBR R0 K10 R1 - 0x4C040000, // 0014 LDNIL R1 - 0x90021601, // 0015 SETMBR R0 K11 R1 - 0x4C040000, // 0016 LDNIL R1 - 0x90021801, // 0017 SETMBR R0 K12 R1 - 0x80000000, // 0018 RET 0 + ( &(const binstruction[17]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C100702, // 0008 GETMET R4 R3 K2 + 0x7C100200, // 0009 CALL R4 1 + 0x1C100801, // 000A EQ R4 R4 R1 + 0x78120000, // 000B JMPF R4 #000D + 0x80040600, // 000C RET 1 R3 + 0x00080503, // 000D ADD R2 R2 K3 + 0x7001FFF1, // 000E JMP #0001 + 0x4C0C0000, // 000F LDNIL R3 + 0x80040600, // 0010 RET 1 R3 }) ) ); @@ -3842,73 +4749,359 @@ be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ /******************************************************************** -** Solidified function: _compute_pbkdf +** Solidified function: mdns_announce_PASE ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__compute_pbkdf, /* name */ +be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ be_nested_proto( - 13, /* nstack */ - 4, /* argc */ + 12, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), - /* K3 */ be_nested_str_weak(derive), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(root_w0), - /* K6 */ be_nested_str_weak(EC_P256), - /* K7 */ be_nested_str_weak(mod), - /* K8 */ be_nested_str_weak(root_L), - /* K9 */ be_nested_str_weak(public_key), + ( &(const bvalue[40]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(crypto), + /* K2 */ be_nested_str_weak(VP), + /* K3 */ be_nested_str_weak(_X25s_X2B_X25s), + /* K4 */ be_nested_str_weak(VENDOR_ID), + /* K5 */ be_nested_str_weak(PRODUCT_ID), + /* K6 */ be_nested_str_weak(D), + /* K7 */ be_nested_str_weak(commissioning_discriminator), + /* K8 */ be_nested_str_weak(CM), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(T), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(SII), + /* K13 */ be_nested_str_weak(SAI), + /* K14 */ be_nested_str_weak(commissioning_instance_wifi), + /* K15 */ be_nested_str_weak(random), + /* K16 */ be_nested_str_weak(tohex), + /* K17 */ be_nested_str_weak(commissioning_instance_eth), + /* K18 */ be_nested_str_weak(hostname_eth), + /* K19 */ be_nested_str_weak(add_service), + /* K20 */ be_nested_str_weak(_matterc), + /* K21 */ be_nested_str_weak(_udp), + /* K22 */ be_nested_str_weak(mdns_pase_eth), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K25 */ be_nested_str_weak(eth), + /* K26 */ be_const_int(2), + /* K27 */ be_nested_str_weak(_L), + /* K28 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K29 */ be_const_int(3), + /* K30 */ be_nested_str_weak(add_subtype), + /* K31 */ be_nested_str_weak(_S), + /* K32 */ be_nested_str_weak(_V), + /* K33 */ be_nested_str_weak(_CM1), + /* K34 */ be_nested_str_weak(hostname_wifi), + /* K35 */ be_nested_str_weak(mdns_pase_wifi), + /* K36 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K37 */ be_nested_str_weak(wifi), + /* K38 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K39 */ be_nested_str_weak(_X7C), }), - be_str_weak(_compute_pbkdf), + be_str_weak(mdns_announce_PASE), + &be_const_str_solidified, + ( &(const binstruction[222]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x600C0013, // 0002 GETGBL R3 G19 + 0x7C0C0000, // 0003 CALL R3 0 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x881C0105, // 0007 GETMBR R7 R0 K5 + 0x7C100600, // 0008 CALL R4 3 + 0x980E0404, // 0009 SETIDX R3 K2 R4 + 0x88100107, // 000A GETMBR R4 R0 K7 + 0x980E0C04, // 000B SETIDX R3 K6 R4 + 0x980E1109, // 000C SETIDX R3 K8 K9 + 0x980E150B, // 000D SETIDX R3 K10 K11 + 0x54121387, // 000E LDINT R4 5000 + 0x980E1804, // 000F SETIDX R3 K12 R4 + 0x5412012B, // 0010 LDINT R4 300 + 0x980E1A04, // 0011 SETIDX R3 K13 R4 + 0x8C10050F, // 0012 GETMET R4 R2 K15 + 0x541A0007, // 0013 LDINT R6 8 + 0x7C100400, // 0014 CALL R4 2 + 0x8C100910, // 0015 GETMET R4 R4 K16 + 0x7C100200, // 0016 CALL R4 1 + 0x90021C04, // 0017 SETMBR R0 K14 R4 + 0x8C10050F, // 0018 GETMET R4 R2 K15 + 0x541A0007, // 0019 LDINT R6 8 + 0x7C100400, // 001A CALL R4 2 + 0x8C100910, // 001B GETMET R4 R4 K16 + 0x7C100200, // 001C CALL R4 1 + 0x90022204, // 001D SETMBR R0 K17 R4 + 0xA80200AD, // 001E EXBLK 0 #00CD + 0x88100112, // 001F GETMBR R4 R0 K18 + 0x78120053, // 0020 JMPF R4 #0075 + 0x8C100313, // 0021 GETMET R4 R1 K19 + 0x58180014, // 0022 LDCONST R6 K20 + 0x581C0015, // 0023 LDCONST R7 K21 + 0x542215A3, // 0024 LDINT R8 5540 + 0x5C240600, // 0025 MOVE R9 R3 + 0x88280111, // 0026 GETMBR R10 R0 K17 + 0x882C0112, // 0027 GETMBR R11 R0 K18 + 0x7C100E00, // 0028 CALL R4 7 + 0x50100200, // 0029 LDBOOL R4 1 0 + 0x90022C04, // 002A SETMBR R0 K22 R4 + 0xB8122E00, // 002B GETNGBL R4 K23 + 0x60140018, // 002C GETGBL R5 G24 + 0x58180018, // 002D LDCONST R6 K24 + 0x581C0019, // 002E LDCONST R7 K25 + 0x88200111, // 002F GETMBR R8 R0 K17 + 0x88240112, // 0030 GETMBR R9 R0 K18 + 0x7C140800, // 0031 CALL R5 4 + 0x5818001A, // 0032 LDCONST R6 K26 + 0x7C100400, // 0033 CALL R4 2 + 0x60100008, // 0034 GETGBL R4 G8 + 0x88140107, // 0035 GETMBR R5 R0 K7 + 0x541A0FFE, // 0036 LDINT R6 4095 + 0x2C140A06, // 0037 AND R5 R5 R6 + 0x7C100200, // 0038 CALL R4 1 + 0x00123604, // 0039 ADD R4 K27 R4 + 0xB8162E00, // 003A GETNGBL R5 K23 + 0x001A3804, // 003B ADD R6 K28 R4 + 0x581C001D, // 003C LDCONST R7 K29 + 0x7C140400, // 003D CALL R5 2 + 0x8C14031E, // 003E GETMET R5 R1 K30 + 0x581C0014, // 003F LDCONST R7 K20 + 0x58200015, // 0040 LDCONST R8 K21 + 0x88240111, // 0041 GETMBR R9 R0 K17 + 0x88280112, // 0042 GETMBR R10 R0 K18 + 0x5C2C0800, // 0043 MOVE R11 R4 + 0x7C140C00, // 0044 CALL R5 6 + 0x60140008, // 0045 GETGBL R5 G8 + 0x88180107, // 0046 GETMBR R6 R0 K7 + 0x541E0EFF, // 0047 LDINT R7 3840 + 0x2C180C07, // 0048 AND R6 R6 R7 + 0x541E0007, // 0049 LDINT R7 8 + 0x3C180C07, // 004A SHR R6 R6 R7 + 0x7C140200, // 004B CALL R5 1 + 0x00163E05, // 004C ADD R5 K31 R5 + 0x5C100A00, // 004D MOVE R4 R5 + 0xB8162E00, // 004E GETNGBL R5 K23 + 0x001A3804, // 004F ADD R6 K28 R4 + 0x581C001D, // 0050 LDCONST R7 K29 + 0x7C140400, // 0051 CALL R5 2 + 0x8C14031E, // 0052 GETMET R5 R1 K30 + 0x581C0014, // 0053 LDCONST R7 K20 + 0x58200015, // 0054 LDCONST R8 K21 + 0x88240111, // 0055 GETMBR R9 R0 K17 + 0x88280112, // 0056 GETMBR R10 R0 K18 + 0x5C2C0800, // 0057 MOVE R11 R4 + 0x7C140C00, // 0058 CALL R5 6 + 0x60140008, // 0059 GETGBL R5 G8 + 0x88180104, // 005A GETMBR R6 R0 K4 + 0x7C140200, // 005B CALL R5 1 + 0x00164005, // 005C ADD R5 K32 R5 + 0x5C100A00, // 005D MOVE R4 R5 + 0xB8162E00, // 005E GETNGBL R5 K23 + 0x001A3804, // 005F ADD R6 K28 R4 + 0x581C001D, // 0060 LDCONST R7 K29 + 0x7C140400, // 0061 CALL R5 2 + 0x8C14031E, // 0062 GETMET R5 R1 K30 + 0x581C0014, // 0063 LDCONST R7 K20 + 0x58200015, // 0064 LDCONST R8 K21 + 0x88240111, // 0065 GETMBR R9 R0 K17 + 0x88280112, // 0066 GETMBR R10 R0 K18 + 0x5C2C0800, // 0067 MOVE R11 R4 + 0x7C140C00, // 0068 CALL R5 6 + 0x58100021, // 0069 LDCONST R4 K33 + 0xB8162E00, // 006A GETNGBL R5 K23 + 0x001A3804, // 006B ADD R6 K28 R4 + 0x581C001D, // 006C LDCONST R7 K29 + 0x7C140400, // 006D CALL R5 2 + 0x8C14031E, // 006E GETMET R5 R1 K30 + 0x581C0014, // 006F LDCONST R7 K20 + 0x58200015, // 0070 LDCONST R8 K21 + 0x88240111, // 0071 GETMBR R9 R0 K17 + 0x88280112, // 0072 GETMBR R10 R0 K18 + 0x5C2C0800, // 0073 MOVE R11 R4 + 0x7C140C00, // 0074 CALL R5 6 + 0x88100122, // 0075 GETMBR R4 R0 K34 + 0x78120053, // 0076 JMPF R4 #00CB + 0x8C100313, // 0077 GETMET R4 R1 K19 + 0x58180014, // 0078 LDCONST R6 K20 + 0x581C0015, // 0079 LDCONST R7 K21 + 0x542215A3, // 007A LDINT R8 5540 + 0x5C240600, // 007B MOVE R9 R3 + 0x8828010E, // 007C GETMBR R10 R0 K14 + 0x882C0122, // 007D GETMBR R11 R0 K34 + 0x7C100E00, // 007E CALL R4 7 + 0x50100200, // 007F LDBOOL R4 1 0 + 0x90024604, // 0080 SETMBR R0 K35 R4 + 0xB8122E00, // 0081 GETNGBL R4 K23 + 0x60140018, // 0082 GETGBL R5 G24 + 0x58180024, // 0083 LDCONST R6 K36 + 0x581C0025, // 0084 LDCONST R7 K37 + 0x8820010E, // 0085 GETMBR R8 R0 K14 + 0x88240122, // 0086 GETMBR R9 R0 K34 + 0x7C140800, // 0087 CALL R5 4 + 0x5818001D, // 0088 LDCONST R6 K29 + 0x7C100400, // 0089 CALL R4 2 + 0x60100008, // 008A GETGBL R4 G8 + 0x88140107, // 008B GETMBR R5 R0 K7 + 0x541A0FFE, // 008C LDINT R6 4095 + 0x2C140A06, // 008D AND R5 R5 R6 + 0x7C100200, // 008E CALL R4 1 + 0x00123604, // 008F ADD R4 K27 R4 + 0xB8162E00, // 0090 GETNGBL R5 K23 + 0x001A3804, // 0091 ADD R6 K28 R4 + 0x581C001D, // 0092 LDCONST R7 K29 + 0x7C140400, // 0093 CALL R5 2 + 0x8C14031E, // 0094 GETMET R5 R1 K30 + 0x581C0014, // 0095 LDCONST R7 K20 + 0x58200015, // 0096 LDCONST R8 K21 + 0x8824010E, // 0097 GETMBR R9 R0 K14 + 0x88280122, // 0098 GETMBR R10 R0 K34 + 0x5C2C0800, // 0099 MOVE R11 R4 + 0x7C140C00, // 009A CALL R5 6 + 0x60140008, // 009B GETGBL R5 G8 + 0x88180107, // 009C GETMBR R6 R0 K7 + 0x541E0EFF, // 009D LDINT R7 3840 + 0x2C180C07, // 009E AND R6 R6 R7 + 0x541E0007, // 009F LDINT R7 8 + 0x3C180C07, // 00A0 SHR R6 R6 R7 + 0x7C140200, // 00A1 CALL R5 1 + 0x00163E05, // 00A2 ADD R5 K31 R5 + 0x5C100A00, // 00A3 MOVE R4 R5 + 0xB8162E00, // 00A4 GETNGBL R5 K23 + 0x001A3804, // 00A5 ADD R6 K28 R4 + 0x581C001D, // 00A6 LDCONST R7 K29 + 0x7C140400, // 00A7 CALL R5 2 + 0x8C14031E, // 00A8 GETMET R5 R1 K30 + 0x581C0014, // 00A9 LDCONST R7 K20 + 0x58200015, // 00AA LDCONST R8 K21 + 0x8824010E, // 00AB GETMBR R9 R0 K14 + 0x88280122, // 00AC GETMBR R10 R0 K34 + 0x5C2C0800, // 00AD MOVE R11 R4 + 0x7C140C00, // 00AE CALL R5 6 + 0x60140008, // 00AF GETGBL R5 G8 + 0x88180104, // 00B0 GETMBR R6 R0 K4 + 0x7C140200, // 00B1 CALL R5 1 + 0x00164005, // 00B2 ADD R5 K32 R5 + 0x5C100A00, // 00B3 MOVE R4 R5 + 0xB8162E00, // 00B4 GETNGBL R5 K23 + 0x001A3804, // 00B5 ADD R6 K28 R4 + 0x581C001D, // 00B6 LDCONST R7 K29 + 0x7C140400, // 00B7 CALL R5 2 + 0x8C14031E, // 00B8 GETMET R5 R1 K30 + 0x581C0014, // 00B9 LDCONST R7 K20 + 0x58200015, // 00BA LDCONST R8 K21 + 0x8824010E, // 00BB GETMBR R9 R0 K14 + 0x88280122, // 00BC GETMBR R10 R0 K34 + 0x5C2C0800, // 00BD MOVE R11 R4 + 0x7C140C00, // 00BE CALL R5 6 + 0x58100021, // 00BF LDCONST R4 K33 + 0xB8162E00, // 00C0 GETNGBL R5 K23 + 0x001A3804, // 00C1 ADD R6 K28 R4 + 0x581C001D, // 00C2 LDCONST R7 K29 + 0x7C140400, // 00C3 CALL R5 2 + 0x8C14031E, // 00C4 GETMET R5 R1 K30 + 0x581C0014, // 00C5 LDCONST R7 K20 + 0x58200015, // 00C6 LDCONST R8 K21 + 0x8824010E, // 00C7 GETMBR R9 R0 K14 + 0x88280122, // 00C8 GETMBR R10 R0 K34 + 0x5C2C0800, // 00C9 MOVE R11 R4 + 0x7C140C00, // 00CA CALL R5 6 + 0xA8040001, // 00CB EXBLK 1 1 + 0x7002000F, // 00CC JMP #00DD + 0xAC100002, // 00CD CATCH R4 0 2 + 0x7002000C, // 00CE JMP #00DC + 0xB81A2E00, // 00CF GETNGBL R6 K23 + 0x601C0008, // 00D0 GETGBL R7 G8 + 0x5C200800, // 00D1 MOVE R8 R4 + 0x7C1C0200, // 00D2 CALL R7 1 + 0x001E4C07, // 00D3 ADD R7 K38 R7 + 0x001C0F27, // 00D4 ADD R7 R7 K39 + 0x60200008, // 00D5 GETGBL R8 G8 + 0x5C240A00, // 00D6 MOVE R9 R5 + 0x7C200200, // 00D7 CALL R8 1 + 0x001C0E08, // 00D8 ADD R7 R7 R8 + 0x5820001A, // 00D9 LDCONST R8 K26 + 0x7C180400, // 00DA CALL R6 2 + 0x70020000, // 00DB JMP #00DD + 0xB0080000, // 00DC RAISE 2 R0 R0 + 0x80000000, // 00DD RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrInfo +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrInfo, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(MtrInfo_one), + /* K3 */ be_nested_str_weak(endpoint), + /* K4 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(int), + /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrInfo), &be_const_str_solidified, ( &(const binstruction[40]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x60140015, // 0001 GETGBL R5 G21 - 0x7C140000, // 0002 CALL R5 0 - 0x8C140B01, // 0003 GETMET R5 R5 K1 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x54220003, // 0005 LDINT R8 4 - 0x7C140600, // 0006 CALL R5 3 - 0x8C180902, // 0007 GETMET R6 R4 K2 - 0x7C180200, // 0008 CALL R6 1 - 0x8C180D03, // 0009 GETMET R6 R6 K3 - 0x5C200A00, // 000A MOVE R8 R5 - 0x5C240600, // 000B MOVE R9 R3 - 0x5C280400, // 000C MOVE R10 R2 - 0x542E004F, // 000D LDINT R11 80 - 0x7C180A00, // 000E CALL R6 5 - 0x541E0026, // 000F LDINT R7 39 - 0x401E0807, // 0010 CONNECT R7 K4 R7 - 0x941C0C07, // 0011 GETIDX R7 R6 R7 - 0x54220027, // 0012 LDINT R8 40 - 0x5426004E, // 0013 LDINT R9 79 - 0x40201009, // 0014 CONNECT R8 R8 R9 - 0x94200C08, // 0015 GETIDX R8 R6 R8 - 0x8C240906, // 0016 GETMET R9 R4 K6 - 0x7C240200, // 0017 CALL R9 1 - 0x8C241307, // 0018 GETMET R9 R9 K7 - 0x5C2C0E00, // 0019 MOVE R11 R7 - 0x7C240400, // 001A CALL R9 2 - 0x90020A09, // 001B SETMBR R0 K5 R9 - 0x8C240906, // 001C GETMET R9 R4 K6 - 0x7C240200, // 001D CALL R9 1 - 0x8C241307, // 001E GETMET R9 R9 K7 - 0x5C2C1000, // 001F MOVE R11 R8 - 0x7C240400, // 0020 CALL R9 2 - 0x8C280906, // 0021 GETMET R10 R4 K6 - 0x7C280200, // 0022 CALL R10 1 - 0x8C281509, // 0023 GETMET R10 R10 K9 - 0x5C301200, // 0024 MOVE R12 R9 - 0x7C280400, // 0025 CALL R10 2 - 0x9002100A, // 0026 SETMBR R0 K8 R10 + 0x1C140700, // 0000 EQ R5 R3 K0 + 0x7815FFFF, // 0001 JMPF R5 #0002 + 0x1C140700, // 0002 EQ R5 R3 K0 + 0x7816000D, // 0003 JMPF R5 #0012 + 0x60140010, // 0004 GETGBL R5 G16 + 0x88180101, // 0005 GETMBR R6 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C180A00, // 0008 MOVE R6 R5 + 0x7C180000, // 0009 CALL R6 0 + 0x8C1C0102, // 000A GETMET R7 R0 K2 + 0x88240D03, // 000B GETMBR R9 R6 K3 + 0x7C1C0400, // 000C CALL R7 2 + 0x7001FFF9, // 000D JMP #0008 + 0x58140004, // 000E LDCONST R5 K4 + 0xAC140200, // 000F CATCH R5 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x70020011, // 0011 JMP #0024 + 0x60140004, // 0012 GETGBL R5 G4 + 0x5C180800, // 0013 MOVE R6 R4 + 0x7C140200, // 0014 CALL R5 1 + 0x1C140B05, // 0015 EQ R5 R5 K5 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C140102, // 0017 GETMET R5 R0 K2 + 0x5C1C0800, // 0018 MOVE R7 R4 + 0x7C140400, // 0019 CALL R5 2 + 0x70020008, // 001A JMP #0024 + 0x8C140106, // 001B GETMET R5 R0 K6 + 0x5C1C0600, // 001C MOVE R7 R3 + 0x7C140400, // 001D CALL R5 2 + 0x4C180000, // 001E LDNIL R6 + 0x20180A06, // 001F NE R6 R5 R6 + 0x781A0002, // 0020 JMPF R6 #0024 + 0x8C180102, // 0021 GETMET R6 R0 K2 + 0x88200B03, // 0022 GETMBR R8 R5 K3 + 0x7C180400, // 0023 CALL R6 2 + 0xB8160E00, // 0024 GETNGBL R5 K7 + 0x8C140B08, // 0025 GETMET R5 R5 K8 + 0x7C140200, // 0026 CALL R5 1 0x80000000, // 0027 RET 0 }) ) @@ -3916,6 +5109,426 @@ be_local_closure(class_Matter_Device__compute_pbkdf, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_250ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(read_sensors_scheduler), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(every_250ms), + /* K4 */ be_const_int(1), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C0102, // 0004 GETMBR R3 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x14080202, // 0006 LT R2 R1 R2 + 0x780A0005, // 0007 JMPF R2 #000E + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x94080401, // 0009 GETIDX R2 R2 R1 + 0x8C080503, // 000A GETMET R2 R2 K3 + 0x7C080200, // 000B CALL R2 1 + 0x00040304, // 000C ADD R1 R1 K4 + 0x7001FFF4, // 000D JMP #0003 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_random_passcode +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_nested_str_weak(get), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(134217727), + /* K5 */ be_const_int(99999998), + /* K6 */ be_nested_str_weak(PASSCODE_INVALID), + /* K7 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(generate_random_passcode), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x780E001D, // 0003 JMPF R3 #0022 + 0x8C0C0301, // 0004 GETMET R3 R1 K1 + 0x54160003, // 0005 LDINT R5 4 + 0x7C0C0400, // 0006 CALL R3 2 + 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x58140003, // 0008 LDCONST R5 K3 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C0C0600, // 000A CALL R3 3 + 0x2C0C0704, // 000B AND R3 R3 K4 + 0x5C080600, // 000C MOVE R2 R3 + 0x240C0505, // 000D GT R3 R2 K5 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7001FFF1, // 000F JMP #0002 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100106, // 0011 GETMBR R4 R0 K6 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x1C140404, // 0016 EQ R5 R2 R4 + 0x78160000, // 0017 JMPF R5 #0019 + 0x4C080000, // 0018 LDNIL R2 + 0x7001FFF9, // 0019 JMP #0014 + 0x580C0007, // 001A LDCONST R3 K7 + 0xAC0C0200, // 001B CATCH R3 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x4C0C0000, // 001D LDNIL R3 + 0x200C0403, // 001E NE R3 R2 R3 + 0x780E0000, // 001F JMPF R3 #0021 + 0x80040400, // 0020 RET 1 R2 + 0x7001FFDF, // 0021 JMP #0002 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrJoin +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrJoin, /* name */ + be_nested_proto( + 8, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(start_root_basic_commissioning), + /* K1 */ be_nested_str_weak(stop_basic_commissioning), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrJoin), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x60140009, // 0000 GETGBL R5 G9 + 0x5C180600, // 0001 MOVE R6 R3 + 0x7C140200, // 0002 CALL R5 1 + 0x78160002, // 0003 JMPF R5 #0007 + 0x8C180100, // 0004 GETMET R6 R0 K0 + 0x7C180200, // 0005 CALL R6 1 + 0x70020001, // 0006 JMP #0009 + 0x8C180101, // 0007 GETMET R6 R0 K1 + 0x7C180200, // 0008 CALL R6 1 + 0xB81A0400, // 0009 GETNGBL R6 K2 + 0x8C180D03, // 000A GETMET R6 R6 K3 + 0x7C180200, // 000B CALL R6 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_attribute_expansion +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(start), + /* K6 */ be_nested_str_weak(is_direct), + /* K7 */ be_nested_str_weak(next_attribute), + /* K8 */ be_nested_str_weak(get_pi), + }), + be_str_weak(process_attribute_expansion), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x88140302, // 0002 GETMBR R5 R1 K2 + 0xB81A0600, // 0003 GETNGBL R6 K3 + 0x8C180D04, // 0004 GETMET R6 R6 K4 + 0x5C200000, // 0005 MOVE R8 R0 + 0x7C180400, // 0006 CALL R6 2 + 0x8C1C0D05, // 0007 GETMET R7 R6 K5 + 0x5C240600, // 0008 MOVE R9 R3 + 0x5C280800, // 0009 MOVE R10 R4 + 0x5C2C0A00, // 000A MOVE R11 R5 + 0x7C1C0800, // 000B CALL R7 4 + 0x8C1C0D06, // 000C GETMET R7 R6 K6 + 0x7C1C0200, // 000D CALL R7 1 + 0x4C200000, // 000E LDNIL R8 + 0x8C240D07, // 000F GETMET R9 R6 K7 + 0x7C240200, // 0010 CALL R9 1 + 0x5C201200, // 0011 MOVE R8 R9 + 0x4C280000, // 0012 LDNIL R10 + 0x2024120A, // 0013 NE R9 R9 R10 + 0x78260005, // 0014 JMPF R9 #001B + 0x5C240400, // 0015 MOVE R9 R2 + 0x8C280D08, // 0016 GETMET R10 R6 K8 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C1000, // 0018 MOVE R11 R8 + 0x7C240400, // 0019 CALL R9 2 + 0x7001FFF3, // 001A JMP #000F + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_plugin_by_friendly_name +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(get_name), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_plugin_by_friendly_name), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x1C080500, // 0006 EQ R2 R2 K0 + 0x780A0001, // 0007 JMPF R2 #000A + 0x4C080000, // 0008 LDNIL R2 + 0x80040400, // 0009 RET 1 R2 + 0x58080000, // 000A LDCONST R2 K0 + 0x600C000C, // 000B GETGBL R3 G12 + 0x88100101, // 000C GETMBR R4 R0 K1 + 0x7C0C0200, // 000D CALL R3 1 + 0x140C0403, // 000E LT R3 R2 R3 + 0x780E0010, // 000F JMPF R3 #0021 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x940C0602, // 0011 GETIDX R3 R3 R2 + 0x8C100702, // 0012 GETMET R4 R3 K2 + 0x7C100200, // 0013 CALL R4 1 + 0x4C140000, // 0014 LDNIL R5 + 0x20140805, // 0015 NE R5 R4 R5 + 0x78160007, // 0016 JMPF R5 #001F + 0x6014000C, // 0017 GETGBL R5 G12 + 0x5C180800, // 0018 MOVE R6 R4 + 0x7C140200, // 0019 CALL R5 1 + 0x24140B00, // 001A GT R5 R5 K0 + 0x78160002, // 001B JMPF R5 #001F + 0x1C140801, // 001C EQ R5 R4 R1 + 0x78160000, // 001D JMPF R5 #001F + 0x80040600, // 001E RET 1 R3 + 0x00080503, // 001F ADD R2 R2 K3 + 0x7001FFE9, // 0020 JMP #000B + 0x4C0C0000, // 0021 LDNIL R3 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: save_param +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_save_param, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(update_remotes_info), + /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), + /* K3 */ be_nested_str_weak(root_discriminator), + /* K4 */ be_nested_str_weak(root_passcode), + /* K5 */ be_nested_str_weak(ipv4only), + /* K6 */ be_nested_str_weak(true), + /* K7 */ be_nested_str_weak(false), + /* K8 */ be_nested_str_weak(disable_bridge_mode), + /* K9 */ be_nested_str_weak(next_ep), + /* K10 */ be_nested_str_weak(debug), + /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), + /* K14 */ be_nested_str_weak(dump), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_config_remotes), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), + /* K19 */ be_nested_str_weak(_X7D), + /* K20 */ be_nested_str_weak(FILENAME), + /* K21 */ be_nested_str_weak(w), + /* K22 */ be_nested_str_weak(write), + /* K23 */ be_nested_str_weak(close), + /* K24 */ be_nested_str_weak(log), + /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K26 */ be_nested_str_weak(_X20and_X20configuration), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_const_int(2), + /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K30 */ be_nested_str_weak(_X7C), + }), + be_str_weak(save_param), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x88140104, // 0006 GETMBR R5 R0 K4 + 0x88180105, // 0007 GETMBR R6 R0 K5 + 0x781A0001, // 0008 JMPF R6 #000B + 0x58180006, // 0009 LDCONST R6 K6 + 0x70020000, // 000A JMP #000C + 0x58180007, // 000B LDCONST R6 K7 + 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x781E0001, // 000D JMPF R7 #0010 + 0x581C0006, // 000E LDCONST R7 K6 + 0x70020000, // 000F JMP #0011 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x88200109, // 0011 GETMBR R8 R0 K9 + 0x7C080C00, // 0012 CALL R2 6 + 0x880C010A, // 0013 GETMBR R3 R0 K10 + 0x780E0000, // 0014 JMPF R3 #0016 + 0x0008050B, // 0015 ADD R2 R2 K11 + 0x880C010C, // 0016 GETMBR R3 R0 K12 + 0x780E000E, // 0017 JMPF R3 #0027 + 0x0008050D, // 0018 ADD R2 R2 K13 + 0x8C0C030E, // 0019 GETMET R3 R1 K14 + 0x8814010F, // 001A GETMBR R5 R0 K15 + 0x7C0C0400, // 001B CALL R3 2 + 0x00080403, // 001C ADD R2 R2 R3 + 0x600C000C, // 001D GETGBL R3 G12 + 0x88100110, // 001E GETMBR R4 R0 K16 + 0x7C0C0200, // 001F CALL R3 1 + 0x240C0711, // 0020 GT R3 R3 K17 + 0x780E0004, // 0021 JMPF R3 #0027 + 0x00080512, // 0022 ADD R2 R2 K18 + 0x8C0C030E, // 0023 GETMET R3 R1 K14 + 0x88140110, // 0024 GETMBR R5 R0 K16 + 0x7C0C0400, // 0025 CALL R3 2 + 0x00080403, // 0026 ADD R2 R2 R3 + 0x00080513, // 0027 ADD R2 R2 K19 + 0xA8020017, // 0028 EXBLK 0 #0041 + 0x600C0011, // 0029 GETGBL R3 G17 + 0x88100114, // 002A GETMBR R4 R0 K20 + 0x58140015, // 002B LDCONST R5 K21 + 0x7C0C0400, // 002C CALL R3 2 + 0x8C100716, // 002D GETMET R4 R3 K22 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x8C100717, // 0030 GETMET R4 R3 K23 + 0x7C100200, // 0031 CALL R4 1 + 0xB8123000, // 0032 GETNGBL R4 K24 + 0x60140018, // 0033 GETGBL R5 G24 + 0x58180019, // 0034 LDCONST R6 K25 + 0x881C010C, // 0035 GETMBR R7 R0 K12 + 0x781E0001, // 0036 JMPF R7 #0039 + 0x581C001A, // 0037 LDCONST R7 K26 + 0x70020000, // 0038 JMP #003A + 0x581C001B, // 0039 LDCONST R7 K27 + 0x7C140400, // 003A CALL R5 2 + 0x5818001C, // 003B LDCONST R6 K28 + 0x7C100400, // 003C CALL R4 2 + 0xA8040001, // 003D EXBLK 1 1 + 0x80040400, // 003E RET 1 R2 + 0xA8040001, // 003F EXBLK 1 1 + 0x70020010, // 0040 JMP #0052 + 0xAC0C0002, // 0041 CATCH R3 0 2 + 0x7002000D, // 0042 JMP #0051 + 0xB8163000, // 0043 GETNGBL R5 K24 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x001A3A06, // 0047 ADD R6 K29 R6 + 0x00180D1E, // 0048 ADD R6 R6 K30 + 0x601C0008, // 0049 GETGBL R7 G8 + 0x5C200800, // 004A MOVE R8 R4 + 0x7C1C0200, // 004B CALL R7 1 + 0x00180C07, // 004C ADD R6 R6 R7 + 0x581C001C, // 004D LDCONST R7 K28 + 0x7C140400, // 004E CALL R5 2 + 0x80040400, // 004F RET 1 R2 + 0x70020000, // 0050 JMP #0052 + 0xB0080000, // 0051 RAISE 2 R0 R0 + 0x80000000, // 0052 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: MtrUpdate ********************************************************************/ @@ -4093,1072 +5706,33 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */ /******************************************************************** -** Solidified function: mdns_announce_op_discovery +** Solidified function: get_plugin_remote_info ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(find), - /* K13 */ be_nested_str_weak(up), - /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K15 */ be_nested_str_weak(hostname_eth), - /* K16 */ be_nested_str_weak(add_service), - /* K17 */ be_nested_str_weak(_matter), - /* K18 */ be_nested_str_weak(_tcp), - /* K19 */ be_nested_str_weak(_I), - /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K21 */ be_nested_str_weak(add_subtype), - /* K22 */ be_nested_str_weak(wifi), - /* K23 */ be_nested_str_weak(hostname_wifi), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_const_int(2), - }), - be_str_weak(mdns_announce_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802005F, // 0001 EXBLK 0 #0062 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x001E1005, // 0011 ADD R7 K8 R5 - 0x58200009, // 0012 LDCONST R8 K9 - 0x7C180400, // 0013 CALL R6 2 - 0xB81A1400, // 0014 GETNGBL R6 K10 - 0x8C180D0B, // 0015 GETMET R6 R6 K11 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180D0C, // 0017 GETMET R6 R6 K12 - 0x5820000D, // 0018 LDCONST R8 K13 - 0x7C180400, // 0019 CALL R6 2 - 0x781A001E, // 001A JMPF R6 #003A - 0xB81A0E00, // 001B GETNGBL R6 K7 - 0x601C0018, // 001C GETGBL R7 G24 - 0x5820000E, // 001D LDCONST R8 K14 - 0x5824000B, // 001E LDCONST R9 K11 - 0x5C280A00, // 001F MOVE R10 R5 - 0x882C010F, // 0020 GETMBR R11 R0 K15 - 0x7C1C0800, // 0021 CALL R7 4 - 0x58200009, // 0022 LDCONST R8 K9 - 0x7C180400, // 0023 CALL R6 2 - 0x8C180510, // 0024 GETMET R6 R2 K16 - 0x58200011, // 0025 LDCONST R8 K17 - 0x58240012, // 0026 LDCONST R9 K18 - 0x542A15A3, // 0027 LDINT R10 5540 - 0x4C2C0000, // 0028 LDNIL R11 - 0x5C300A00, // 0029 MOVE R12 R5 - 0x8834010F, // 002A GETMBR R13 R0 K15 - 0x7C180E00, // 002B CALL R6 7 - 0x8C180905, // 002C GETMET R6 R4 K5 - 0x7C180200, // 002D CALL R6 1 - 0x001A2606, // 002E ADD R6 K19 R6 - 0xB81E0E00, // 002F GETNGBL R7 K7 - 0x00222806, // 0030 ADD R8 K20 R6 - 0x58240009, // 0031 LDCONST R9 K9 - 0x7C1C0400, // 0032 CALL R7 2 - 0x8C1C0515, // 0033 GETMET R7 R2 K21 - 0x58240011, // 0034 LDCONST R9 K17 - 0x58280012, // 0035 LDCONST R10 K18 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x8830010F, // 0037 GETMBR R12 R0 K15 - 0x5C340C00, // 0038 MOVE R13 R6 - 0x7C1C0C00, // 0039 CALL R7 6 - 0xB81A1400, // 003A GETNGBL R6 K10 - 0x8C180D16, // 003B GETMET R6 R6 K22 - 0x7C180200, // 003C CALL R6 1 - 0x8C180D0C, // 003D GETMET R6 R6 K12 - 0x5820000D, // 003E LDCONST R8 K13 - 0x7C180400, // 003F CALL R6 2 - 0x781A001E, // 0040 JMPF R6 #0060 - 0xB81A0E00, // 0041 GETNGBL R6 K7 - 0x601C0018, // 0042 GETGBL R7 G24 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x58240016, // 0044 LDCONST R9 K22 - 0x5C280A00, // 0045 MOVE R10 R5 - 0x882C0117, // 0046 GETMBR R11 R0 K23 - 0x7C1C0800, // 0047 CALL R7 4 - 0x58200009, // 0048 LDCONST R8 K9 - 0x7C180400, // 0049 CALL R6 2 - 0x8C180510, // 004A GETMET R6 R2 K16 - 0x58200011, // 004B LDCONST R8 K17 - 0x58240012, // 004C LDCONST R9 K18 - 0x542A15A3, // 004D LDINT R10 5540 - 0x4C2C0000, // 004E LDNIL R11 - 0x5C300A00, // 004F MOVE R12 R5 - 0x88340117, // 0050 GETMBR R13 R0 K23 - 0x7C180E00, // 0051 CALL R6 7 - 0x8C180905, // 0052 GETMET R6 R4 K5 - 0x7C180200, // 0053 CALL R6 1 - 0x001A2606, // 0054 ADD R6 K19 R6 - 0xB81E0E00, // 0055 GETNGBL R7 K7 - 0x00222806, // 0056 ADD R8 K20 R6 - 0x58240009, // 0057 LDCONST R9 K9 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C1C0515, // 0059 GETMET R7 R2 K21 - 0x58240011, // 005A LDCONST R9 K17 - 0x58280012, // 005B LDCONST R10 K18 - 0x5C2C0A00, // 005C MOVE R11 R5 - 0x88300117, // 005D GETMBR R12 R0 K23 - 0x5C340C00, // 005E MOVE R13 R6 - 0x7C1C0C00, // 005F CALL R7 6 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7002000F, // 0061 JMP #0072 - 0xAC0C0002, // 0062 CATCH R3 0 2 - 0x7002000C, // 0063 JMP #0071 - 0xB8160E00, // 0064 GETNGBL R5 K7 - 0x60180008, // 0065 GETGBL R6 G8 - 0x5C1C0600, // 0066 MOVE R7 R3 - 0x7C180200, // 0067 CALL R6 1 - 0x001A3006, // 0068 ADD R6 K24 R6 - 0x00180D19, // 0069 ADD R6 R6 K25 - 0x601C0008, // 006A GETGBL R7 G8 - 0x5C200800, // 006B MOVE R8 R4 - 0x7C1C0200, // 006C CALL R7 1 - 0x00180C07, // 006D ADD R6 R6 R7 - 0x581C001A, // 006E LDCONST R7 K26 - 0x7C140400, // 006F CALL R5 2 - 0x70020000, // 0070 JMP #0072 - 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x80000000, // 0072 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery_all_fabrics -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_remove_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save_param -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_save_param, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(update_remotes_info), - /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), - /* K3 */ be_nested_str_weak(root_discriminator), - /* K4 */ be_nested_str_weak(root_passcode), - /* K5 */ be_nested_str_weak(ipv4only), - /* K6 */ be_nested_str_weak(true), - /* K7 */ be_nested_str_weak(false), - /* K8 */ be_nested_str_weak(disable_bridge_mode), - /* K9 */ be_nested_str_weak(next_ep), - /* K10 */ be_nested_str_weak(debug), - /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), - /* K14 */ be_nested_str_weak(dump), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_config_remotes), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), - /* K19 */ be_nested_str_weak(_X7D), - /* K20 */ be_nested_str_weak(FILENAME), - /* K21 */ be_nested_str_weak(w), - /* K22 */ be_nested_str_weak(write), - /* K23 */ be_nested_str_weak(close), - /* K24 */ be_nested_str_weak(log), - /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K26 */ be_nested_str_weak(_X20and_X20configuration), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_const_int(2), - /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K30 */ be_nested_str_weak(_X7C), - }), - be_str_weak(save_param), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x88140104, // 0006 GETMBR R5 R0 K4 - 0x88180105, // 0007 GETMBR R6 R0 K5 - 0x781A0001, // 0008 JMPF R6 #000B - 0x58180006, // 0009 LDCONST R6 K6 - 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x781E0001, // 000D JMPF R7 #0010 - 0x581C0006, // 000E LDCONST R7 K6 - 0x70020000, // 000F JMP #0011 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x88200109, // 0011 GETMBR R8 R0 K9 - 0x7C080C00, // 0012 CALL R2 6 - 0x880C010A, // 0013 GETMBR R3 R0 K10 - 0x780E0000, // 0014 JMPF R3 #0016 - 0x0008050B, // 0015 ADD R2 R2 K11 - 0x880C010C, // 0016 GETMBR R3 R0 K12 - 0x780E000E, // 0017 JMPF R3 #0027 - 0x0008050D, // 0018 ADD R2 R2 K13 - 0x8C0C030E, // 0019 GETMET R3 R1 K14 - 0x8814010F, // 001A GETMBR R5 R0 K15 - 0x7C0C0400, // 001B CALL R3 2 - 0x00080403, // 001C ADD R2 R2 R3 - 0x600C000C, // 001D GETGBL R3 G12 - 0x88100110, // 001E GETMBR R4 R0 K16 - 0x7C0C0200, // 001F CALL R3 1 - 0x240C0711, // 0020 GT R3 R3 K17 - 0x780E0004, // 0021 JMPF R3 #0027 - 0x00080512, // 0022 ADD R2 R2 K18 - 0x8C0C030E, // 0023 GETMET R3 R1 K14 - 0x88140110, // 0024 GETMBR R5 R0 K16 - 0x7C0C0400, // 0025 CALL R3 2 - 0x00080403, // 0026 ADD R2 R2 R3 - 0x00080513, // 0027 ADD R2 R2 K19 - 0xA8020017, // 0028 EXBLK 0 #0041 - 0x600C0011, // 0029 GETGBL R3 G17 - 0x88100114, // 002A GETMBR R4 R0 K20 - 0x58140015, // 002B LDCONST R5 K21 - 0x7C0C0400, // 002C CALL R3 2 - 0x8C100716, // 002D GETMET R4 R3 K22 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x8C100717, // 0030 GETMET R4 R3 K23 - 0x7C100200, // 0031 CALL R4 1 - 0xB8123000, // 0032 GETNGBL R4 K24 - 0x60140018, // 0033 GETGBL R5 G24 - 0x58180019, // 0034 LDCONST R6 K25 - 0x881C010C, // 0035 GETMBR R7 R0 K12 - 0x781E0001, // 0036 JMPF R7 #0039 - 0x581C001A, // 0037 LDCONST R7 K26 - 0x70020000, // 0038 JMP #003A - 0x581C001B, // 0039 LDCONST R7 K27 - 0x7C140400, // 003A CALL R5 2 - 0x5818001C, // 003B LDCONST R6 K28 - 0x7C100400, // 003C CALL R4 2 - 0xA8040001, // 003D EXBLK 1 1 - 0x80040400, // 003E RET 1 R2 - 0xA8040001, // 003F EXBLK 1 1 - 0x70020010, // 0040 JMP #0052 - 0xAC0C0002, // 0041 CATCH R3 0 2 - 0x7002000D, // 0042 JMP #0051 - 0xB8163000, // 0043 GETNGBL R5 K24 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x001A3A06, // 0047 ADD R6 K29 R6 - 0x00180D1E, // 0048 ADD R6 R6 K30 - 0x601C0008, // 0049 GETGBL R7 G8 - 0x5C200800, // 004A MOVE R8 R4 - 0x7C1C0200, // 004B CALL R7 1 - 0x00180C07, // 004C ADD R6 R6 R7 - 0x581C001C, // 004D LDCONST R7 K28 - 0x7C140400, // 004E CALL R5 2 - 0x80040400, // 004F RET 1 R2 - 0x70020000, // 0050 JMP #0052 - 0xB0080000, // 0051 RAISE 2 R0 R0 - 0x80000000, // 0052 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery_deferred -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ +be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_discovery), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_operational_discovery_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_root_basic_commissioning), - }), - be_str_weak(_init_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040302, // 0003 EQ R1 R1 K2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x7C040200, // 0006 CALL R1 1 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_received -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_received, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(msg_received), - }), - be_str_weak(msg_received), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_sensors_list -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(Temperature), - /* K3 */ be_nested_str_weak(_X23Temperature), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(temperature), - /* K7 */ be_nested_str_weak(filter), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(Pressure), - /* K10 */ be_nested_str_weak(_X23Pressure), - /* K11 */ be_nested_str_weak(pressure), - /* K12 */ be_nested_str_weak(Illuminance), - /* K13 */ be_nested_str_weak(_X23Illuminance), - /* K14 */ be_nested_str_weak(illuminance), - /* K15 */ be_nested_str_weak(Humidity), - /* K16 */ be_nested_str_weak(_X23Humidity), - /* K17 */ be_nested_str_weak(humidity), - }), - be_str_weak(autoconf_sensors_list), - &be_const_str_solidified, - ( &(const binstruction[119]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100100, // 0003 GETMET R4 R0 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020013, // 0007 EXBLK 0 #001C - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x94140204, // 000A GETIDX R5 R1 R4 - 0x6018000F, // 000B GETGBL R6 G15 - 0x5C1C0A00, // 000C MOVE R7 R5 - 0x60200013, // 000D GETGBL R8 G19 - 0x7C180400, // 000E CALL R6 2 - 0x781A000A, // 000F JMPF R6 #001B - 0x8C180B01, // 0010 GETMET R6 R5 K1 - 0x58200002, // 0011 LDCONST R8 K2 - 0x7C180400, // 0012 CALL R6 2 - 0x781A0006, // 0013 JMPF R6 #001B - 0x00180903, // 0014 ADD R6 R4 K3 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x60240013, // 0016 GETGBL R9 G19 - 0x7C240000, // 0017 CALL R9 0 - 0x98260B06, // 0018 SETIDX R9 K5 K6 - 0x98260E06, // 0019 SETIDX R9 K7 R6 - 0x7C1C0400, // 001A CALL R7 2 - 0x7001FFEB, // 001B JMP #0008 - 0x580C0008, // 001C LDCONST R3 K8 - 0xAC0C0200, // 001D CATCH R3 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x600C0010, // 001F GETGBL R3 G16 - 0x8C100100, // 0020 GETMET R4 R0 K0 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x7C0C0200, // 0023 CALL R3 1 - 0xA8020013, // 0024 EXBLK 0 #0039 - 0x5C100600, // 0025 MOVE R4 R3 - 0x7C100000, // 0026 CALL R4 0 - 0x94140204, // 0027 GETIDX R5 R1 R4 - 0x6018000F, // 0028 GETGBL R6 G15 - 0x5C1C0A00, // 0029 MOVE R7 R5 - 0x60200013, // 002A GETGBL R8 G19 - 0x7C180400, // 002B CALL R6 2 - 0x781A000A, // 002C JMPF R6 #0038 - 0x8C180B01, // 002D GETMET R6 R5 K1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C180400, // 002F CALL R6 2 - 0x781A0006, // 0030 JMPF R6 #0038 - 0x0018090A, // 0031 ADD R6 R4 K10 - 0x8C1C0504, // 0032 GETMET R7 R2 K4 - 0x60240013, // 0033 GETGBL R9 G19 - 0x7C240000, // 0034 CALL R9 0 - 0x98260B0B, // 0035 SETIDX R9 K5 K11 - 0x98260E06, // 0036 SETIDX R9 K7 R6 - 0x7C1C0400, // 0037 CALL R7 2 - 0x7001FFEB, // 0038 JMP #0025 - 0x580C0008, // 0039 LDCONST R3 K8 - 0xAC0C0200, // 003A CATCH R3 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x600C0010, // 003C GETGBL R3 G16 - 0x8C100100, // 003D GETMET R4 R0 K0 - 0x5C180200, // 003E MOVE R6 R1 - 0x7C100400, // 003F CALL R4 2 - 0x7C0C0200, // 0040 CALL R3 1 - 0xA8020013, // 0041 EXBLK 0 #0056 - 0x5C100600, // 0042 MOVE R4 R3 - 0x7C100000, // 0043 CALL R4 0 - 0x94140204, // 0044 GETIDX R5 R1 R4 - 0x6018000F, // 0045 GETGBL R6 G15 - 0x5C1C0A00, // 0046 MOVE R7 R5 - 0x60200013, // 0047 GETGBL R8 G19 - 0x7C180400, // 0048 CALL R6 2 - 0x781A000A, // 0049 JMPF R6 #0055 - 0x8C180B01, // 004A GETMET R6 R5 K1 - 0x5820000C, // 004B LDCONST R8 K12 - 0x7C180400, // 004C CALL R6 2 - 0x781A0006, // 004D JMPF R6 #0055 - 0x0018090D, // 004E ADD R6 R4 K13 - 0x8C1C0504, // 004F GETMET R7 R2 K4 - 0x60240013, // 0050 GETGBL R9 G19 - 0x7C240000, // 0051 CALL R9 0 - 0x98260B0E, // 0052 SETIDX R9 K5 K14 - 0x98260E06, // 0053 SETIDX R9 K7 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x7001FFEB, // 0055 JMP #0042 - 0x580C0008, // 0056 LDCONST R3 K8 - 0xAC0C0200, // 0057 CATCH R3 1 0 - 0xB0080000, // 0058 RAISE 2 R0 R0 - 0x600C0010, // 0059 GETGBL R3 G16 - 0x8C100100, // 005A GETMET R4 R0 K0 - 0x5C180200, // 005B MOVE R6 R1 - 0x7C100400, // 005C CALL R4 2 - 0x7C0C0200, // 005D CALL R3 1 - 0xA8020013, // 005E EXBLK 0 #0073 - 0x5C100600, // 005F MOVE R4 R3 - 0x7C100000, // 0060 CALL R4 0 - 0x94140204, // 0061 GETIDX R5 R1 R4 - 0x6018000F, // 0062 GETGBL R6 G15 - 0x5C1C0A00, // 0063 MOVE R7 R5 - 0x60200013, // 0064 GETGBL R8 G19 - 0x7C180400, // 0065 CALL R6 2 - 0x781A000A, // 0066 JMPF R6 #0072 - 0x8C180B01, // 0067 GETMET R6 R5 K1 - 0x5820000F, // 0068 LDCONST R8 K15 - 0x7C180400, // 0069 CALL R6 2 - 0x781A0006, // 006A JMPF R6 #0072 - 0x00180910, // 006B ADD R6 R4 K16 - 0x8C1C0504, // 006C GETMET R7 R2 K4 - 0x60240013, // 006D GETGBL R9 G19 - 0x7C240000, // 006E CALL R9 0 - 0x98260B11, // 006F SETIDX R9 K5 K17 - 0x98260E06, // 0070 SETIDX R9 K7 R6 - 0x7C1C0400, // 0071 CALL R7 2 - 0x7001FFEB, // 0072 JMP #005F - 0x580C0008, // 0073 LDCONST R3 K8 - 0xAC0C0200, // 0074 CATCH R3 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040400, // 0076 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrInfo, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(MtrInfo_one), - /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(int), - /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrInfo), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x1C140700, // 0000 EQ R5 R3 K0 - 0x7815FFFF, // 0001 JMPF R5 #0002 - 0x1C140700, // 0002 EQ R5 R3 K0 - 0x7816000D, // 0003 JMPF R5 #0012 - 0x60140010, // 0004 GETGBL R5 G16 - 0x88180101, // 0005 GETMBR R6 R0 K1 - 0x7C140200, // 0006 CALL R5 1 - 0xA8020005, // 0007 EXBLK 0 #000E - 0x5C180A00, // 0008 MOVE R6 R5 - 0x7C180000, // 0009 CALL R6 0 - 0x8C1C0102, // 000A GETMET R7 R0 K2 - 0x88240D03, // 000B GETMBR R9 R6 K3 - 0x7C1C0400, // 000C CALL R7 2 - 0x7001FFF9, // 000D JMP #0008 - 0x58140004, // 000E LDCONST R5 K4 - 0xAC140200, // 000F CATCH R5 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x70020011, // 0011 JMP #0024 - 0x60140004, // 0012 GETGBL R5 G4 - 0x5C180800, // 0013 MOVE R6 R4 - 0x7C140200, // 0014 CALL R5 1 - 0x1C140B05, // 0015 EQ R5 R5 K5 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C140102, // 0017 GETMET R5 R0 K2 - 0x5C1C0800, // 0018 MOVE R7 R4 - 0x7C140400, // 0019 CALL R5 2 - 0x70020008, // 001A JMP #0024 - 0x8C140106, // 001B GETMET R5 R0 K6 - 0x5C1C0600, // 001C MOVE R7 R3 - 0x7C140400, // 001D CALL R5 2 - 0x4C180000, // 001E LDNIL R6 - 0x20180A06, // 001F NE R6 R5 R6 - 0x781A0002, // 0020 JMPF R6 #0024 - 0x8C180102, // 0021 GETMET R6 R0 K2 - 0x88200B03, // 0022 GETMBR R8 R5 K3 - 0x7C180400, // 0023 CALL R6 2 - 0xB8160E00, // 0024 GETNGBL R5 K7 - 0x8C140B08, // 0025 GETMET R5 R5 K8 - 0x7C140200, // 0026 CALL R5 1 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_manual_pairing_code -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(root_discriminator), - /* K1 */ be_nested_str_weak(root_passcode), - /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Verhoeff), - /* K5 */ be_nested_str_weak(checksum), - }), - be_str_weak(compute_manual_pairing_code), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x540A0FFE, // 0001 LDINT R2 4095 - 0x2C040202, // 0002 AND R1 R1 R2 - 0x540A0009, // 0003 LDINT R2 10 - 0x3C040202, // 0004 SHR R1 R1 R2 - 0x88080100, // 0005 GETMBR R2 R0 K0 - 0x540E02FF, // 0006 LDINT R3 768 - 0x2C080403, // 0007 AND R2 R2 R3 - 0x540E0005, // 0008 LDINT R3 6 - 0x38080403, // 0009 SHL R2 R2 R3 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x54123FFE, // 000B LDINT R4 16383 - 0x2C0C0604, // 000C AND R3 R3 R4 - 0x30080403, // 000D OR R2 R2 R3 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x5412000D, // 000F LDINT R4 14 - 0x3C0C0604, // 0010 SHR R3 R3 R4 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140002, // 0012 LDCONST R5 K2 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x5C200600, // 0015 MOVE R8 R3 - 0x7C100800, // 0016 CALL R4 4 - 0xB8160600, // 0017 GETNGBL R5 K3 - 0x88140B04, // 0018 GETMBR R5 R5 K4 - 0x8C140B05, // 0019 GETMET R5 R5 K5 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x00100805, // 001C ADD R4 R4 R5 - 0x80040800, // 001D RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: signal_endpoints_changed -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - }), - be_str_weak(signal_endpoints_changed), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x5412001C, // 0002 LDINT R4 29 - 0x58140002, // 0003 LDCONST R5 K2 - 0x50180000, // 0004 LDBOOL R6 0 0 - 0x7C040A00, // 0005 CALL R1 5 - 0x8C040100, // 0006 GETMET R1 R0 K0 - 0xB80E0600, // 0007 GETNGBL R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x5412001C, // 0009 LDINT R4 29 - 0x58140002, // 000A LDCONST R5 K2 - 0x50180000, // 000B LDBOOL R6 0 0 - 0x7C040A00, // 000C CALL R1 5 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrJoin -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrJoin, /* name */ - be_nested_proto( - 8, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(start_root_basic_commissioning), - /* K1 */ be_nested_str_weak(stop_basic_commissioning), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrJoin), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60140009, // 0000 GETGBL R5 G9 - 0x5C180600, // 0001 MOVE R6 R3 - 0x7C140200, // 0002 CALL R5 1 - 0x78160002, // 0003 JMPF R5 #0007 - 0x8C180100, // 0004 GETMET R6 R0 K0 - 0x7C180200, // 0005 CALL R6 1 - 0x70020001, // 0006 JMP #0009 - 0x8C180101, // 0007 GETMET R6 R0 K1 - 0x7C180200, // 0008 CALL R6 1 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x8C180D03, // 000A GETMET R6 R6 K3 - 0x7C180200, // 000B CALL R6 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_add_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), + /* K0 */ be_nested_str_weak(plugins_config_remotes), /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K4 */ be_nested_str_weak(_X27_X20skipping), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(next_ep), - /* K7 */ be_nested_str_weak(plugins), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(type), - /* K10 */ be_nested_str_weak(keys), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K13 */ be_nested_str_weak(conf_to_log), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_persist), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(save_param), - /* K19 */ be_nested_str_weak(signal_endpoints_changed), }), - be_str_weak(bridge_add_endpoint), + be_str_weak(get_plugin_remote_info), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120008, // 0006 JMPF R4 #0010 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x60140008, // 0008 GETGBL R5 G8 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C140200, // 000A CALL R5 1 - 0x00160605, // 000B ADD R5 K3 R5 - 0x00140B04, // 000C ADD R5 R5 K4 - 0x58180005, // 000D LDCONST R6 K5 - 0x7C100400, // 000E CALL R4 2 - 0x80000800, // 000F RET 0 - 0x88100106, // 0010 GETMBR R4 R0 K6 - 0x60140008, // 0011 GETGBL R5 G8 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x5C180600, // 0014 MOVE R6 R3 - 0x5C1C0000, // 0015 MOVE R7 R0 - 0x5C200800, // 0016 MOVE R8 R4 - 0x5C240400, // 0017 MOVE R9 R2 - 0x7C180600, // 0018 CALL R6 3 - 0x881C0107, // 0019 GETMBR R7 R0 K7 - 0x8C1C0F08, // 001A GETMET R7 R7 K8 - 0x5C240C00, // 001B MOVE R9 R6 - 0x7C1C0400, // 001C CALL R7 2 - 0x601C0013, // 001D GETGBL R7 G19 - 0x7C1C0000, // 001E CALL R7 0 - 0x981E1201, // 001F SETIDX R7 K9 R1 - 0x60200010, // 0020 GETGBL R8 G16 - 0x8C24050A, // 0021 GETMET R9 R2 K10 - 0x7C240200, // 0022 CALL R9 1 - 0x7C200200, // 0023 CALL R8 1 - 0xA8020004, // 0024 EXBLK 0 #002A - 0x5C241000, // 0025 MOVE R9 R8 - 0x7C240000, // 0026 CALL R9 0 - 0x94280409, // 0027 GETIDX R10 R2 R9 - 0x981C120A, // 0028 SETIDX R7 R9 R10 - 0x7001FFFA, // 0029 JMP #0025 - 0x5820000B, // 002A LDCONST R8 K11 - 0xAC200200, // 002B CATCH R8 1 0 - 0xB0080000, // 002C RAISE 2 R0 R0 - 0xB8220400, // 002D GETNGBL R8 K2 - 0x60240018, // 002E GETGBL R9 G24 - 0x5828000C, // 002F LDCONST R10 K12 - 0x5C2C0800, // 0030 MOVE R11 R4 - 0x5C300200, // 0031 MOVE R12 R1 - 0x8C34010D, // 0032 GETMET R13 R0 K13 - 0x5C3C0400, // 0033 MOVE R15 R2 - 0x7C340400, // 0034 CALL R13 2 - 0x7C240800, // 0035 CALL R9 4 - 0x5828000E, // 0036 LDCONST R10 K14 - 0x7C200400, // 0037 CALL R8 2 - 0x8820010F, // 0038 GETMBR R8 R0 K15 - 0x98200A07, // 0039 SETIDX R8 R5 R7 - 0x50200200, // 003A LDBOOL R8 1 0 - 0x90022008, // 003B SETMBR R0 K16 R8 - 0x88200106, // 003C GETMBR R8 R0 K6 - 0x00201111, // 003D ADD R8 R8 K17 - 0x90020C08, // 003E SETMBR R0 K6 R8 - 0x8C200112, // 003F GETMET R8 R0 K18 - 0x7C200200, // 0040 CALL R8 1 - 0x8C200113, // 0041 GETMET R8 R0 K19 - 0x7C200200, // 0042 CALL R8 1 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_second, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(events), - /* K4 */ be_nested_str_weak(commissioning_open), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(time_reached), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x8C040301, // 0007 GETMET R1 R1 K1 - 0x7C040200, // 0008 CALL R1 1 - 0x88040104, // 0009 GETMBR R1 R0 K4 - 0x4C080000, // 000A LDNIL R2 - 0x20040202, // 000B NE R1 R1 R2 - 0x78060006, // 000C JMPF R1 #0014 - 0xB8060A00, // 000D GETNGBL R1 K5 - 0x8C040306, // 000E GETMET R1 R1 K6 - 0x880C0104, // 000F GETMBR R3 R0 K4 - 0x7C040400, // 0010 CALL R1 2 - 0x78060001, // 0011 JMPF R1 #0014 - 0x4C040000, // 0012 LDNIL R1 - 0x90020801, // 0013 SETMBR R0 K4 R1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: received_ack -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_received_ack, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(received_ack), - }), - be_str_weak(received_ack), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + 0x60140013, // 0003 GETGBL R5 G19 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -5288,51 +5862,13 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ /******************************************************************** -** Solidified function: get_plugin_class_displayname +** Solidified function: msg_received ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ +be_local_closure(class_Matter_Device_msg_received, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(DISPLAY_NAME), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_displayname), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_root_commissioning_open -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 9, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -5340,57 +5876,19 @@ be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(commissioning_admin_fabric), + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(msg_received), }), - be_str_weak(is_root_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060003, // 0003 JMPF R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x74060000, // 0007 JMPT R1 #0009 - 0x50040001, // 0008 LDBOOL R1 0 1 - 0x50040200, // 0009 LDBOOL R1 1 0 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_remote_info -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config_remotes), - /* K1 */ be_nested_str_weak(find), - }), - be_str_weak(get_plugin_remote_info), + be_str_weak(msg_received), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 }) ) ); @@ -5398,653 +5896,93 @@ be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ /******************************************************************** -** Solidified function: _start_udp +** Solidified function: MtrInfo_one ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__start_udp, /* name */ +be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ be_nested_proto( - 7, /* nstack */ + 9, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_received), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(UDPServer), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(start), - }), - be_str_weak(_start_udp), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x600C0008, // 0008 GETGBL R3 G8 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C0C0200, // 000A CALL R3 1 - 0x000E0403, // 000B ADD R3 K2 R3 - 0x58100003, // 000C LDCONST R4 K3 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x8C080505, // 000F GETMET R2 R2 K5 - 0x5C100000, // 0010 MOVE R4 R0 - 0x58140006, // 0011 LDCONST R5 K6 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C080800, // 0013 CALL R2 4 - 0x90020002, // 0014 SETMBR R0 K0 R2 - 0x88080100, // 0015 GETMBR R2 R0 K0 - 0x8C080507, // 0016 GETMET R2 R2 K7 - 0x84100000, // 0017 CLOSURE R4 P0 - 0x7C080400, // 0018 CALL R2 2 - 0xA0000000, // 0019 CLOSE R0 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_commands -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_register_commands, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 4]) { - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrJoin), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrUpdate), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(MtrInfo), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x8C100900, // 0001 GETMET R4 R4 K0 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(add_cmd), - /* K2 */ be_nested_str_weak(MtrJoin), - /* K3 */ be_nested_str_weak(MtrUpdate), - /* K4 */ be_nested_str_weak(MtrInfo), - }), - be_str_weak(register_commands), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x84100000, // 0003 CLOSURE R4 P0 - 0x7C040600, // 0004 CALL R1 3 - 0xB8060000, // 0005 GETNGBL R1 K0 - 0x8C040301, // 0006 GETMET R1 R1 K1 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x84100001, // 0008 CLOSURE R4 P1 - 0x7C040600, // 0009 CALL R1 3 - 0xB8060000, // 000A GETNGBL R1 K0 - 0x8C040301, // 000B GETMET R1 R1 K1 - 0x580C0004, // 000C LDCONST R3 K4 - 0x84100002, // 000D CLOSURE R4 P2 - 0x7C040600, // 000E CALL R1 3 - 0xA0000000, // 000F CLOSE R0 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_mdns_announce_hostnames -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080200, // 0002 LDBOOL R2 1 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(wifi), - /* K2 */ be_nested_str_weak(up), - /* K3 */ be_nested_str_weak(_mdns_announce_hostname), - /* K4 */ be_nested_str_weak(add_rule), - /* K5 */ be_nested_str_weak(Wifi_X23Connected), - /* K6 */ be_nested_str_weak(matter_mdns_host), - /* K7 */ be_nested_str_weak(eth), - /* K8 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_mdns_announce_hostnames), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x94040302, // 0003 GETIDX R1 R1 K2 - 0x78060003, // 0004 JMPF R1 #0009 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x7C040400, // 0007 CALL R1 2 - 0x70020005, // 0008 JMP #000F - 0xB8060000, // 0009 GETNGBL R1 K0 - 0x8C040304, // 000A GETMET R1 R1 K4 - 0x580C0005, // 000B LDCONST R3 K5 - 0x84100000, // 000C CLOSURE R4 P0 - 0x58140006, // 000D LDCONST R5 K6 - 0x7C040800, // 000E CALL R1 4 - 0xB8060000, // 000F GETNGBL R1 K0 - 0x8C040307, // 0010 GETMET R1 R1 K7 - 0x7C040200, // 0011 CALL R1 1 - 0x94040302, // 0012 GETIDX R1 R1 K2 - 0x78060003, // 0013 JMPF R1 #0018 - 0x8C040103, // 0014 GETMET R1 R0 K3 - 0x500C0200, // 0015 LDBOOL R3 1 0 - 0x7C040400, // 0016 CALL R1 2 - 0x70020005, // 0017 JMP #001E - 0xB8060000, // 0018 GETNGBL R1 K0 - 0x8C040304, // 0019 GETMET R1 R1 K4 - 0x580C0008, // 001A LDCONST R3 K8 - 0x84100001, // 001B CLOSURE R4 P1 - 0x58140006, // 001C LDCONST R5 K6 - 0x7C040800, // 001D CALL R1 4 - 0xA0000000, // 001E CLOSE R0 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_init, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[46]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(get_option), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(MATTER_OPTION), - /* K5 */ be_nested_str_weak(UI), - /* K6 */ be_nested_str_weak(profiler), - /* K7 */ be_nested_str_weak(Profiler), - /* K8 */ be_nested_str_weak(started), - /* K9 */ be_nested_str_weak(tick), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(plugins_config_remotes), - /* K14 */ be_nested_str_weak(vendorid), - /* K15 */ be_nested_str_weak(VENDOR_ID), - /* K16 */ be_nested_str_weak(productid), - /* K17 */ be_nested_str_weak(PRODUCT_ID), - /* K18 */ be_nested_str_weak(root_iterations), - /* K19 */ be_nested_str_weak(PBKDF_ITERATIONS), - /* K20 */ be_nested_str_weak(next_ep), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(root_salt), - /* K23 */ be_nested_str_weak(random), - /* K24 */ be_nested_str_weak(ipv4only), - /* K25 */ be_nested_str_weak(disable_bridge_mode), - /* K26 */ be_nested_str_weak(load_param), - /* K27 */ be_nested_str_weak(sessions), - /* K28 */ be_nested_str_weak(Session_Store), - /* K29 */ be_nested_str_weak(load_fabrics), - /* K30 */ be_nested_str_weak(message_handler), - /* K31 */ be_nested_str_weak(MessageHandler), - /* K32 */ be_nested_str_weak(events), - /* K33 */ be_nested_str_weak(EventHandler), - /* K34 */ be_nested_str_weak(ui), - /* K35 */ be_nested_str_weak(wifi), - /* K36 */ be_nested_str_weak(up), - /* K37 */ be_nested_str_weak(eth), - /* K38 */ be_nested_str_weak(start), - /* K39 */ be_nested_str_weak(add_rule), - /* K40 */ be_nested_str_weak(Wifi_X23Connected), - /* K41 */ be_nested_str_weak(matter_start), - /* K42 */ be_nested_str_weak(Eth_X23Connected), - /* K43 */ be_nested_str_weak(_init_basic_commissioning), - /* K44 */ be_nested_str_weak(add_driver), - /* K45 */ be_nested_str_weak(register_commands), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[112]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100904, // 0004 GETMBR R4 R4 K4 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0004, // 0006 JMPT R2 #000C - 0xB80A0600, // 0007 GETNGBL R2 K3 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x5C100000, // 0009 MOVE R4 R0 - 0x7C080400, // 000A CALL R2 2 - 0x80000400, // 000B RET 0 - 0xB80A0600, // 000C GETNGBL R2 K3 - 0xB80E0600, // 000D GETNGBL R3 K3 - 0x8C0C0707, // 000E GETMET R3 R3 K7 - 0x7C0C0200, // 000F CALL R3 1 - 0x900A0C03, // 0010 SETMBR R2 K6 R3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x90021002, // 0012 SETMBR R0 K8 R2 - 0x9002130A, // 0013 SETMBR R0 K9 K10 - 0x60080012, // 0014 GETGBL R2 G18 - 0x7C080000, // 0015 CALL R2 0 - 0x90021602, // 0016 SETMBR R0 K11 R2 - 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90021802, // 0018 SETMBR R0 K12 R2 - 0x60080013, // 0019 GETGBL R2 G19 - 0x7C080000, // 001A CALL R2 0 - 0x90021A02, // 001B SETMBR R0 K13 R2 - 0x8808010F, // 001C GETMBR R2 R0 K15 - 0x90021C02, // 001D SETMBR R0 K14 R2 - 0x88080111, // 001E GETMBR R2 R0 K17 - 0x90022002, // 001F SETMBR R0 K16 R2 - 0x88080113, // 0020 GETMBR R2 R0 K19 - 0x90022402, // 0021 SETMBR R0 K18 R2 - 0x90022915, // 0022 SETMBR R0 K20 K21 - 0x8C080317, // 0023 GETMET R2 R1 K23 - 0x5412000F, // 0024 LDINT R4 16 - 0x7C080400, // 0025 CALL R2 2 - 0x90022C02, // 0026 SETMBR R0 K22 R2 - 0x50080000, // 0027 LDBOOL R2 0 0 - 0x90023002, // 0028 SETMBR R0 K24 R2 - 0x50080000, // 0029 LDBOOL R2 0 0 - 0x90023202, // 002A SETMBR R0 K25 R2 - 0x8C08011A, // 002B GETMET R2 R0 K26 - 0x7C080200, // 002C CALL R2 1 - 0xB80A0600, // 002D GETNGBL R2 K3 - 0x8C08051C, // 002E GETMET R2 R2 K28 - 0x5C100000, // 002F MOVE R4 R0 - 0x7C080400, // 0030 CALL R2 2 - 0x90023602, // 0031 SETMBR R0 K27 R2 - 0x8808011B, // 0032 GETMBR R2 R0 K27 - 0x8C08051D, // 0033 GETMET R2 R2 K29 - 0x7C080200, // 0034 CALL R2 1 - 0xB80A0600, // 0035 GETNGBL R2 K3 - 0x8C08051F, // 0036 GETMET R2 R2 K31 - 0x5C100000, // 0037 MOVE R4 R0 - 0x7C080400, // 0038 CALL R2 2 - 0x90023C02, // 0039 SETMBR R0 K30 R2 - 0xB80A0600, // 003A GETNGBL R2 K3 - 0x8C080521, // 003B GETMET R2 R2 K33 - 0x5C100000, // 003C MOVE R4 R0 - 0x7C080400, // 003D CALL R2 2 - 0x90024002, // 003E SETMBR R0 K32 R2 - 0xB80A0600, // 003F GETNGBL R2 K3 - 0x8C080505, // 0040 GETMET R2 R2 K5 - 0x5C100000, // 0041 MOVE R4 R0 - 0x7C080400, // 0042 CALL R2 2 - 0x90024402, // 0043 SETMBR R0 K34 R2 - 0xB80A0200, // 0044 GETNGBL R2 K1 - 0x8C080523, // 0045 GETMET R2 R2 K35 - 0x7C080200, // 0046 CALL R2 1 - 0x94080524, // 0047 GETIDX R2 R2 K36 - 0x740A0004, // 0048 JMPT R2 #004E - 0xB80A0200, // 0049 GETNGBL R2 K1 - 0x8C080525, // 004A GETMET R2 R2 K37 - 0x7C080200, // 004B CALL R2 1 - 0x94080524, // 004C GETIDX R2 R2 K36 - 0x780A0001, // 004D JMPF R2 #0050 - 0x8C080126, // 004E GETMET R2 R0 K38 - 0x7C080200, // 004F CALL R2 1 - 0xB80A0200, // 0050 GETNGBL R2 K1 - 0x8C080523, // 0051 GETMET R2 R2 K35 - 0x7C080200, // 0052 CALL R2 1 - 0x94080524, // 0053 GETIDX R2 R2 K36 - 0x740A0005, // 0054 JMPT R2 #005B - 0xB80A0200, // 0055 GETNGBL R2 K1 - 0x8C080527, // 0056 GETMET R2 R2 K39 - 0x58100028, // 0057 LDCONST R4 K40 - 0x84140000, // 0058 CLOSURE R5 P0 - 0x58180029, // 0059 LDCONST R6 K41 - 0x7C080800, // 005A CALL R2 4 - 0xB80A0200, // 005B GETNGBL R2 K1 - 0x8C080525, // 005C GETMET R2 R2 K37 - 0x7C080200, // 005D CALL R2 1 - 0x94080524, // 005E GETIDX R2 R2 K36 - 0x740A0005, // 005F JMPT R2 #0066 - 0xB80A0200, // 0060 GETNGBL R2 K1 - 0x8C080527, // 0061 GETMET R2 R2 K39 - 0x5810002A, // 0062 LDCONST R4 K42 - 0x84140001, // 0063 CLOSURE R5 P1 - 0x58180029, // 0064 LDCONST R6 K41 - 0x7C080800, // 0065 CALL R2 4 - 0x8C08012B, // 0066 GETMET R2 R0 K43 - 0x7C080200, // 0067 CALL R2 1 - 0xB80A0200, // 0068 GETNGBL R2 K1 - 0x8C08052C, // 0069 GETMET R2 R2 K44 - 0x5C100000, // 006A MOVE R4 R0 - 0x7C080400, // 006B CALL R2 2 - 0x8C08012D, // 006C GETMET R2 R0 K45 - 0x7C080200, // 006D CALL R2 1 - 0xA0000000, // 006E CLOSE R0 - 0x80000000, // 006F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_fabrics -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), + /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K1 */ be_nested_str_weak(state_json), + /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(publish_result), + /* K5 */ be_nested_str_weak(), }), - be_str_weak(mdns_announce_op_discovery_all_fabrics), + be_str_weak(MtrInfo_one), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 + ( &(const binstruction[20]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0403, // 0004 EQ R3 R2 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80000600, // 0006 RET 0 + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x780E0008, // 0009 JMPF R3 #0013 + 0x60100018, // 000A GETGBL R4 G24 + 0x58140002, // 000B LDCONST R5 K2 + 0x5C180600, // 000C MOVE R6 R3 + 0x7C100400, // 000D CALL R4 2 + 0xB8160600, // 000E GETNGBL R5 K3 + 0x8C140B04, // 000F GETMET R5 R5 K4 + 0x5C1C0800, // 0010 MOVE R7 R4 + 0x58200005, // 0011 LDCONST R8 K5 + 0x7C140600, // 0012 CALL R5 3 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(started), + /* K1 */ be_nested_str_weak(autoconf_device), + /* K2 */ be_nested_str_weak(_start_udp), + /* K3 */ be_nested_str_weak(UDP_PORT), + /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), + }), + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x8C040104, // 0008 GETMET R1 R0 K4 + 0x7C040200, // 0009 CALL R1 1 + 0x50040200, // 000A LDBOOL R1 1 0 + 0x90020001, // 000B SETMBR R0 K0 R1 + 0x80000000, // 000C RET 0 }) ) ); @@ -6055,21 +5993,42 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, / ** Solidified class: Matter_Device ********************************************************************/ be_local_class(Matter_Device, - 40, + 34, NULL, - be_nested_map(119, + be_nested_map(112, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, - { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) }, - { be_const_key_weak(mdns_pase_eth, -1), be_const_var(25) }, - { be_const_key_weak(start_operational_discovery, 30), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, - { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(productid, -1), be_const_var(24) }, - { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, - { be_const_key_weak(read_sensors_scheduler, 22), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, - { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, - { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, - { be_const_key_weak(PASSCODE_INVALID, 51), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(commissioning_salt, -1), be_const_var(15) }, + { be_const_key_weak(msg_send, 0), be_const_closure(class_Matter_Device_msg_send_closure) }, + { be_const_key_weak(bridge_remove_endpoint, -1), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, + { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, + { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, + { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, + { be_const_key_weak(root_discriminator, -1), be_const_var(26) }, + { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, + { be_const_key_weak(hostname_wifi, -1), be_const_var(21) }, + { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, + { be_const_key_weak(plugins_config, -1), be_const_var(3) }, + { be_const_key_weak(get_active_endpoints, -1), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_Device_msg_received_closure) }, + { be_const_key_weak(http_remotes, 41), be_const_var(25) }, + { be_const_key_weak(commissioning_instance_eth, 40), be_const_var(20) }, + { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, + { be_const_key_weak(hostname_eth, -1), be_const_var(22) }, + { be_const_key_weak(start_operational_discovery, 47), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, + { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, + { be_const_key_weak(add_read_sensors_schedule, 38), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, + { be_const_key_weak(events, 62), be_const_var(11) }, + { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(_start_udp, 75), be_const_closure(class_Matter_Device__start_udp_closure) }, + { be_const_key_weak(compute_qrcode_content, 70), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, + { be_const_key_weak(get_plugin_remote_info, 93), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, + { be_const_key_weak(_instantiate_plugins_from_config, 107), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, + { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(udp_server, -1), be_const_var(5) }, + { be_const_key_weak(sessions, -1), be_const_var(8) }, + { be_const_key_weak(resolve_attribute_read_solo, -1), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) }, + { be_const_key_weak(started, 15), be_const_var(0) }, + { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(12, ( (struct bvalue*) &(const bvalue[]) { be_const_int(0), @@ -6085,25 +6044,39 @@ be_local_class(Matter_Device, be_const_int(12345678), be_const_int(87654321), })) ) } )) }, - { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Device_invoke_request_closure) }, - { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, - { be_const_key_weak(UDP_PORT, 74), be_const_int(5540) }, - { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, - { be_const_key_weak(debug, -1), be_const_var(33) }, - { be_const_key_weak(plugins, -1), be_const_var(1) }, - { be_const_key_weak(process_attribute_expansion, 59), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, - { be_const_key_weak(commissioning_open, -1), be_const_var(12) }, - { be_const_key_weak(plugins_config, -1), be_const_var(3) }, - { be_const_key_weak(vendorid, -1), be_const_var(23) }, - { be_const_key_weak(start_mdns_announce_hostnames, 12), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, - { be_const_key_weak(register_commands, 61), be_const_closure(class_Matter_Device_register_commands_closure) }, - { be_const_key_weak(k2l, 32), be_const_static_closure(class_Matter_Device_k2l_closure) }, - { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, - { be_const_key_weak(find_plugin_by_friendly_name, -1), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, - { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) }, + { be_const_key_weak(bridge_add_endpoint, 85), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, + { be_const_key_weak(profiler, -1), be_const_var(6) }, + { be_const_key_weak(MtrUpdate, -1), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, - { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(save_param, 77), be_const_closure(class_Matter_Device_save_param_closure) }, + { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, + { be_const_key_weak(init, 2), be_const_closure(class_Matter_Device_init_closure) }, + { be_const_key_weak(process_attribute_expansion, 105), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, + { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, + { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, + { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, + { be_const_key_weak(register_commands, 34), be_const_closure(class_Matter_Device_register_commands_closure) }, + { be_const_key_weak(every_250ms, 50), be_const_closure(class_Matter_Device_every_250ms_closure) }, + { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, + { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, + { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, + { be_const_key_weak(conf_to_log, -1), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, + { be_const_key_weak(probe_sensor_time, -1), be_const_var(32) }, + { be_const_key_weak(next_ep, 49), be_const_var(30) }, + { be_const_key_weak(mdns_pase_eth, 57), be_const_var(23) }, + { be_const_key_weak(tick, -1), be_const_var(10) }, + { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(24) }, + { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, + { be_const_key_weak(remove_fabric, 65), be_const_closure(class_Matter_Device_remove_fabric_closure) }, + { be_const_key_weak(probe_sensor_timestamp, 76), be_const_var(33) }, + { be_const_key_weak(mdns_announce_PASE, 37), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, + { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, + { be_const_key_weak(ui, 24), be_const_var(9) }, + { be_const_key_weak(PRODUCT_ID, 92), be_const_int(32768) }, + { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, + { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, + { be_const_key_weak(plugins_classes, 44), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(53, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, @@ -6160,95 +6133,53 @@ be_local_class(Matter_Device, { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, { be_const_key_weak(gensw, -1), be_const_class(be_class_Matter_Plugin_Sensor_GenericSwitch) }, })) ) } )) }, - { be_const_key_weak(get_plugin_remote_info, 35), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, - { be_const_key_weak(message_handler, -1), be_const_var(7) }, - { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, - { be_const_key_weak(root_salt, 87), be_const_var(35) }, - { be_const_key_weak(start_basic_commissioning, 8), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, - { be_const_key_weak(hostname_wifi, -1), be_const_var(21) }, - { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, - { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, - { be_const_key_weak(commissioning_discriminator, -1), be_const_var(14) }, - { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, - { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, - { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) }, - { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, - { be_const_key_weak(resolve_attribute_read_solo, -1), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) }, - { be_const_key_weak(http_remotes, -1), be_const_var(27) }, - { be_const_key_weak(mdns_pase_wifi, 71), be_const_var(26) }, - { be_const_key_weak(_instantiate_plugins_from_config, 107), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, - { be_const_key_weak(commissioning_w0, 114), be_const_var(16) }, - { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) }, - { be_const_key_weak(plugins_persist, 63), be_const_var(2) }, - { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, - { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, - { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, - { be_const_key_weak(get_active_endpoints, 40), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, - { be_const_key_weak(bridge_remove_endpoint, 103), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, - { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, - { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, - { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, - { be_const_key_weak(adjust_next_ep, 110), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, - { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, - { be_const_key_weak(attribute_updated, 34), be_const_closure(class_Matter_Device_attribute_updated_closure) }, - { be_const_key_weak(next_ep, -1), be_const_var(32) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, - { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(18) }, - { be_const_key_weak(msg_send, -1), be_const_closure(class_Matter_Device_msg_send_closure) }, - { be_const_key_weak(register_http_remote, 41), be_const_closure(class_Matter_Device_register_http_remote_closure) }, - { be_const_key_weak(tick, -1), be_const_var(10) }, - { be_const_key_weak(udp_server, 45), be_const_var(5) }, - { be_const_key_weak(bridge_add_endpoint, 97), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, - { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, - { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, - { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(root_iterations, 112), be_const_var(34) }, - { be_const_key_weak(start_commissioning_complete, 62), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, - { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, - { be_const_key_weak(MtrInfo, 98), be_const_closure(class_Matter_Device_MtrInfo_closure) }, - { be_const_key_weak(ipv4only, 96), be_const_var(30) }, - { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(20) }, - { be_const_key_weak(MtrUpdate, 25), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, - { be_const_key_weak(profiler, -1), be_const_var(6) }, - { be_const_key_weak(root_L, -1), be_const_var(37) }, - { be_const_key_weak(start_operational_discovery_deferred, 72), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, - { be_const_key_weak(add_read_sensors_schedule, 92), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, - { be_const_key_weak(hostname_eth, 91), be_const_var(22) }, - { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, - { be_const_key_weak(every_250ms, 77), be_const_closure(class_Matter_Device_every_250ms_closure) }, - { be_const_key_weak(compute_qrcode_content, 81), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, - { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, - { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_Device_msg_received_closure) }, - { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, - { be_const_key_weak(root_discriminator, 75), be_const_var(28) }, - { be_const_key_weak(events, -1), be_const_var(11) }, - { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, - { be_const_key_weak(ui, 69), be_const_var(9) }, - { be_const_key_weak(_mdns_announce_hostname, 68), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, - { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(class_Matter_Device__compute_pbkdf_closure) }, - { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) }, - { be_const_key_weak(root_w0, -1), be_const_var(36) }, - { be_const_key_weak(received_ack, 55), be_const_closure(class_Matter_Device_received_ack_closure) }, - { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, - { be_const_key_weak(PRODUCT_ID, 49), be_const_int(32768) }, - { be_const_key_weak(autoconf_device_map, 26), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, - { be_const_key_weak(conf_to_log, 44), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, - { be_const_key_weak(sessions, -1), be_const_var(8) }, - { be_const_key_weak(probe_sensor_time, -1), be_const_var(38) }, - { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, - { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(39) }, - { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, - { be_const_key_weak(started, -1), be_const_var(0) }, - { be_const_key_weak(disable_bridge_mode, -1), be_const_var(31) }, + { be_const_key_weak(mdns_remove_PASE, 86), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, + { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, + { be_const_key_weak(debug, 84), be_const_var(31) }, + { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, + { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, + { be_const_key_weak(received_ack, 69), be_const_closure(class_Matter_Device_received_ack_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, + { be_const_key_weak(plugins_config_remotes, 80), be_const_var(4) }, + { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(message_handler, 99), be_const_var(7) }, + { be_const_key_weak(compute_manual_pairing_code, 68), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, + { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, + { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) }, + { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, + { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, + { be_const_key_weak(commissioning_w0, -1), be_const_var(16) }, + { be_const_key_weak(start_commissioning_complete_deferred, 67), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, - { be_const_key_weak(commissioning_salt, 23), be_const_var(15) }, - { be_const_key_weak(root_passcode, -1), be_const_var(29) }, - { be_const_key_weak(stop, 20), be_const_closure(class_Matter_Device_stop_closure) }, - { be_const_key_weak(commissioning_iterations, -1), be_const_var(13) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, - { be_const_key_weak(start_commissioning_complete_deferred, 4), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, + { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(18) }, + { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, + { be_const_key_weak(start_commissioning_complete, 56), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, + { be_const_key_weak(FILENAME, 12), be_nested_str_weak(_matter_device_X2Ejson) }, + { be_const_key_weak(commissioning_open, -1), be_const_var(12) }, + { be_const_key_weak(MtrInfo, -1), be_const_closure(class_Matter_Device_MtrInfo_closure) }, + { be_const_key_weak(invoke_request, 45), be_const_closure(class_Matter_Device_invoke_request_closure) }, + { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, + { be_const_key_weak(commissioning_discriminator, 103), be_const_var(14) }, + { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, + { be_const_key_weak(is_root_commissioning_open, 39), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, + { be_const_key_weak(find_plugin_by_friendly_name, -1), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, + { be_const_key_weak(disable_bridge_mode, -1), be_const_var(29) }, + { be_const_key_weak(UDP_PORT, 36), be_const_int(5540) }, + { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, + { be_const_key_weak(register_http_remote, 33), be_const_closure(class_Matter_Device_register_http_remote_closure) }, + { be_const_key_weak(stop, 31), be_const_closure(class_Matter_Device_stop_closure) }, + { be_const_key_weak(mdns_announce_op_discovery, 27), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, + { be_const_key_weak(plugins, -1), be_const_var(1) }, + { be_const_key_weak(ipv4only, 16), be_const_var(28) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) }, + { be_const_key_weak(save_before_restart, 14), be_const_closure(class_Matter_Device_save_before_restart_closure) }, + { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, + { be_const_key_weak(k2l, 8), be_const_static_closure(class_Matter_Device_k2l_closure) }, + { be_const_key_weak(commissioning_iterations, 3), be_const_var(13) }, + { be_const_key_weak(root_passcode, -1), be_const_var(27) }, + { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) }, })), be_str_weak(Matter_Device) ); From be40830bc07aad777abacb2355b4596227c89be9 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:47:32 +0200 Subject: [PATCH 130/252] Matter support for 'Generic Switch' based on Tasmota Buttons (#21731) --- CHANGELOG.md | 1 + .../berry_matter/src/be_matter_module.c | 2 +- .../src/embedded/Matter_EventHandler.be | 147 +- .../src/embedded/Matter_IM_Message.be | 76 +- ...tter_Plugin_2_Sensor_GenericSwitch_Btn.be} | 78 +- .../berry_matter/src/embedded/Matter_UI.be | 1 + .../src/embedded/Matter_zz_Device.be | 38 + .../solidify/solidified_Matter_EventHandler.h | 451 +- .../solidify/solidified_Matter_IM_Message.h | 214 +- ...ied_Matter_Plugin_2_Sensor_GenericSwitch.h | 350 - ...Matter_Plugin_2_Sensor_GenericSwitch_Btn.h | 498 + .../src/solidify/solidified_Matter_UI.h | 2 +- .../solidify/solidified_Matter_zz_Device.h | 9293 +++++++++-------- 13 files changed, 5962 insertions(+), 5189 deletions(-) rename lib/libesp32/berry_matter/src/embedded/{Matter_Plugin_2_Sensor_GenericSwitch.be => Matter_Plugin_2_Sensor_GenericSwitch_Btn.be} (50%) delete mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e68ae57a..42406f0ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. - NeoPool data validation and communication statistics default enabled for ESP32 only (#21721) - `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724) - Berry `int64` added `low32()` and `high32()` methods, used in Matter +- Matter support for 'Generic Switch' based on Tasmota Buttons ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 34d480df3..c6cce0315 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -272,7 +272,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_3_Sensor_Rain.h" #include "solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h" #include "solidify/solidified_Matter_Plugin_2_Fan.h" -#include "solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h" +#include "solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Fan.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h" #include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h" diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be index 5c1f17434..c910077c6 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be @@ -72,28 +72,139 @@ class Matter_EventQueued # free up some space def to_raw_bytes() if (self.raw_tlv == nil) - var event_report = matter.EventReportIB() - var event_ib = matter.EventDataIB() - event_report.event_data = event_ib - var event_path = matter.EventPathIB() - event_path.endpoint = self.endpoint - event_path.cluster = self.cluster - event_path.event = self.event_id - event_path.is_urgent = self.is_urgent - event_ib.path = event_path - event_ib.priority = self.priority - event_ib.event_number = self.event_no - event_ib.epoch_timestamp = self.epoch_timestamp - event_ib.data = matter.TLV.Matter_TLV_struct() - if (self.data0 != nil) event_ib.data.add_obj(0, self.data0) end - if (self.data1 != nil) event_ib.data.add_obj(1, self.data1) end - if (self.data2 != nil) event_ib.data.add_obj(2, self.data2) end + self.raw_tlv = bytes(64) + self.eventreport2raw(self.raw_tlv, self.endpoint, self.cluster, self.event_id, self.is_urgent, self.priority, self.event_no, self.epoch_timestamp, self.data0, self.data1, self.data2) + # var event_report = matter.EventReportIB() + # var event_ib = matter.EventDataIB() + # event_report.event_data = event_ib + # var event_path = matter.EventPathIB() + # event_path.endpoint = self.endpoint + # event_path.cluster = self.cluster + # event_path.event = self.event_id + # event_path.is_urgent = self.is_urgent + # event_ib.path = event_path + # event_ib.priority = self.priority + # event_ib.event_number = self.event_no + # event_ib.epoch_timestamp = self.epoch_timestamp + # event_ib.data = matter.TLV.Matter_TLV_struct() + # if (self.data0 != nil) event_ib.data.add_obj(0, self.data0) end + # if (self.data1 != nil) event_ib.data.add_obj(1, self.data1) end + # if (self.data2 != nil) event_ib.data.add_obj(2, self.data2) end - self.raw_tlv = event_report.to_TLV().tlv2raw() # bytes() + # self.raw_tlv = event_report.to_TLV().tlv2raw() # bytes() end return self.raw_tlv end + ############################################################# + # eventreport2raw + # + # 15 = EventReportIB + # 3501 = EventDataIB + # + def eventreport2raw(raw, endpoint, cluster, event, is_urgent, priority, event_no, epoch_timestamp, data0, data1, data2) + # open struct EventReportIB + raw.add(0x15, 1) # add 15 + # open sturct EventDataIB + raw.add(0x3501, -2) # add 3501 + # add path + self.eventpath2raw(raw, endpoint, cluster, event, is_urgent) + # add EventNumber + raw.add(0x2701, -2) # 2701 FFFFFFFFFFFFFFFF + raw.add(event_no.low32(), 4) # int64 low part + raw.add(event_no.high32(), 4) # int64 high part + # priority + raw.add(0x2402, -2) # add 2402 + raw.add(priority, 1) # add priority as one byte + # EpochTimestamp + raw.add(0x2603, -2) # add 2603 + raw.add(epoch_timestamp, 4) # add epoch as 32 bits + # Data struct + raw.add(0x3507, -2) # add 3507 + + # data0 + if (data0 != nil) + data0.tag_sub = 0 + data0.tlv2raw(raw) + end + # data1 + if (data1 != nil) + data1.tag_sub = 1 + data1.tlv2raw(raw) + end + # data2 + if (data2 != nil) + data2.tag_sub = 2 + data2.tlv2raw(raw) + end + + # close struct Data + raw.add(0x18, 1) # add 18 + # close struct EventDataIB + raw.add(0x18, 1) # add 18 + # close struct EventReportIB + raw.add(0x18, 1) # add 18 + end + + ############################################################# + # eventpath2raw + # + # Encodes endpoint/cluster/attribute as `EventPathIB` elements + # Takes sub-tag + # + # 1 = EventPathIB + # 0 = Node + # 1 = Endpoint + # 2 = Cluster + # 3 = Event + # 4 = IsUrgent + # + # 3700 0 = LIST + # 2401 01 1 = 1U (U1) + # 2402 39 2 = 0x39U (U1) + # 2403 11 3 = 0x11U (U1) + # 2904 4 = true + # 18 + def eventpath2raw(raw, endpoint, cluster, event, is_urgent) + # open struct + raw.add(0x3700, -2) # add 3700 + # add endpoint + if endpoint <= 0xFF # endpoint is 16 bits max + raw.add(0x2401, -2) # add 2401 + raw.add(endpoint, 1) + else + raw.add(0x2501, -2) # add 2501 + raw.add(endpoint, 2) + end + # add cluster + if cluster <= 0xFF # cluster is 32 bits max + raw.add(0x2402, -2) # add 2402 + raw.add(cluster, 1) + elif cluster <= 0xFFFF + raw.add(0x2502, -2) # add 2502 + raw.add(cluster, 2) + else + raw.add(0x2602, -2) # add 2602 + raw.add(cluster, 4) + end + # add event + if event <= 0xFF # cluster is 32 bits max + raw.add(0x2403, -2) # add 2403 + raw.add(event, 1) + else + raw.add(0x2503, -2) # add 2503 + raw.add(event, 2) + end + # IsUrgent + if is_urgent + raw.add(0x2904, -2) # add 2904 + else + raw.add(0x2804, -2) # add 2804 + end + # close + raw.add(0x18, 1) # add 18 + end + ################################################################################# # compact # @@ -372,7 +483,7 @@ class Matter_EventHandler log(f"MTR: +Add_Event ({priority_str}{new_event.event_no:8s}) [{new_event.endpoint:02X}]{new_event.cluster:04X}/{new_event.event_id:02X} {event_name}- {data_str}", 2) end self.queue_event(new_event) - # check if we have an subscription interested in this new event + # check if we have a subscription interested in this new event self.device.message_handler.im.subs_shop.event_published(new_event) end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be index d0b596091..7559236e1 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Message.be @@ -352,27 +352,73 @@ class Matter_IM_ReportData_Pull : Matter_IM_Message ########## Response # prepare the response - var ret = matter.ReportDataMessage() - ret.subscription_id = self.subscription_id - ret.suppress_response = self.suppress_response - # ret.suppress_response = true - if (data != nil && size(data) > 0) - ret.attribute_reports = [data] - end - if (data_ev != nil && size(data_ev) > 0) - ret.event_reports = [data_ev] - end - ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send + # Manually craft payload + var more_chunked_messages = (self.data != nil) || (self.data_ev != nil) + var raw = bytes(self.MAX_MESSAGE) - # print(">>>>> send elements before encode") - var encoded_tlv = ret.to_TLV().tlv2raw(bytes(self.MAX_MESSAGE)) # takes time - resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer + # open struct ReportDataMessage + raw.add(0x15, 1) # add 15 + # open sturct EventDataIB + if (self.subscription_id != nil) + raw.add(0x2500, -2) # add 2500 + raw.add(self.subscription_id, 2) # add subscription_id as 16 bits + end + # do we have attributes? + if (data != nil && size(data) > 0) + raw.add(0x3601, -2) # add 3601 + raw.append(data) + raw.add(0x18, 1) # add 18 + end + # do we have events? + if (data_ev != nil && size(data_ev) > 0) + raw.add(0x3602, -2) # add 3601 + raw.append(data_ev) + raw.add(0x18, 1) # add 18 + end + # MoreChunkedMessages + if more_chunked_messages # we got more data to send + raw.add(0x2903, -2) # add 2903 + else + raw.add(0x2803, -2) # add 2803 + end + # SuppressResponse + if (self.suppress_response != nil) + if self.suppress_response + raw.add(0x2904, -2) # add 2904 + else + raw.add(0x2804, -2) # add 2804 + end + end + # InteractionModelRevision + raw.add(0x24FF, -2) # add 24FF + raw.add(0x01, 1) # add 01 + # close struct ReportDataMessage + raw.add(0x18, 1) # add 18 + # log(f">>>: {raw.tohex()}", 3) + + # ##### Previous code + # var ret = matter.ReportDataMessage() + # ret.subscription_id = self.subscription_id + # ret.suppress_response = self.suppress_response + # if (data != nil && size(data) > 0) + # ret.attribute_reports = [data] + # end + # if (data_ev != nil && size(data_ev) > 0) + # ret.event_reports = [data_ev] + # end + # ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send + # var encoded_tlv = ret.to_TLV().tlv2raw(bytes(self.MAX_MESSAGE)) # takes time + # resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer + # log(f">>>: {encoded_tlv.tohex()}", 3) + # ##### Previous code + + resp.encode_frame(raw) # payload in cleartext, pre-allocate max buffer resp.encrypt() # log(format("MTR: int(x) # function to convert argument to the right type - static var UPDATE_TIME = 750 # update every 750ms - TODO still necessary? + # static var UPDATE_TIME = 750 # update every 750ms - TODO still necessary? static var CLUSTERS = matter.consolidate_clusters(_class, { # 0x001D: inherited # Descriptor Cluster 9.5 p.453 # 0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485 @@ -39,7 +39,7 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device static var TYPES = { 0x000F: 2 } # Generic Switch, rev 2 var tasmota_switch_index # Switch number in Tasmota (one based) - var shadow_value + var shadow_position ############################################################# # parse_configuration @@ -53,10 +53,20 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device ############################################################# # Update shadow # - def update_shadow() - super(self).update_shadow() - self.shadow_value = false - # TODO + # def update_shadow() + # super(self).update_shadow() + # self.shadow_position = false + # # TODO + # end + + ############################################################# + # Model + # + def set_position(position) + if position != self.shadow_position + self.attribute_updated(0x003B, 0x0001) + self.shadow_position = position + end end ############################################################# @@ -73,12 +83,12 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device if attribute == 0x0000 # ---------- NumberOfPositions / uint8 ---------- return tlv_solo.set(TLV.U1, 2) # default to 2 positions elif attribute == 0x0001 # ---------- CurrentPosition / uint8 ---------- - return tlv_solo.set(TLV.U1, 0) # TODO read value + return tlv_solo.set_or_nil(TLV.U1, self.shadow_position) elif attribute == 0x0002 # ---------- MultiPressMax / uint8 ---------- - return tlv_solo.set(TLV.U1, 2) # up to double press + return tlv_solo.set(TLV.U1, 5) # up to penta press elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return tlv_solo.set(TLV.U4, 0x02 + 0x04 + 0x08) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchLongPress + return tlv_solo.set(TLV.U4, 0x02 | 0x04 | 0x08 | 0x10) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchLongPress + MomentarySwitchMultiPress end end @@ -96,5 +106,39 @@ class Matter_Plugin_Sensor_GenericSwitch : Matter_Plugin_Device return f',"Switch":{int(self.shadow_onoff)}' end + ##################################################################### + # button_handler - a button event happened + # + # Args: + # - button: (int) button number (base 1) + # - mode: (int) 0=static report every second, 1=button state changed (immediate), 2=multi-press status (delayed) + # - state: 1=button pressed, 0=button released, 2..5+=multi-press complete + def button_handler(button, mode, state, press_counter) + # if tasmota.loglevel(3) && (mode != 0) # only if actual action + # log(f"MTR: button_event {button}/{mode}:{state}", 3) + # end + # adjust value of position first, either regular secondly updates (mode==0) or change in state (mode==1) + if (mode == 0) || (mode == 1) + self.set_position(state) + end + # publish event for (mode==1), InitialPress and ShortRelease + if (mode == 1) + if state # InitialPress + self.publish_event(0x003B, 0x01, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # InitialPress, position hardcoded to 1 + else + self.publish_event(0x003B, 0x03, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # ShortRelease, previous position hardcoded to 1 + end + # check if there is an ungoing multi-press + if (state == 1) && (press_counter > 0) + # MultiPressOngoing + self.publish_event(0x003B, 0x05, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1), + matter.TLV.Matter_TLV_item().set(matter.TLV.U1, press_counter + 1)) # MultiPressCom­ plete + end + elif (mode == 2) && (press_counter > 0) # Multipress + self.publish_event(0x003B, 0x06, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1), + matter.TLV.Matter_TLV_item().set(matter.TLV.U1, press_counter)) # MultiPressCom­ plete + end + end + end -matter.Plugin_Sensor_GenericSwitch = Matter_Plugin_Sensor_GenericSwitch +matter.Plugin_Sensor_GenericSwitch_Btn = Matter_Plugin_Sensor_GenericSwitch_Btn diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index 6f917ed6b..6917a9d7b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -33,6 +33,7 @@ import matter ################################################################################# class Matter_UI static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt" + "|gensw_btn" "|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|rain|waterleak" "|airquality" "|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3" diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index da92a33ef..94dfc3fff 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -285,6 +285,44 @@ class Matter_Device return ret end + ##################################################################### + # Driver handling of buttons + ##################################################################### + # Attach driver `button_pressed` + def button_pressed(cmd, idx) + var state = (idx >> 16) & 0xFF + var last_state = (idx >> 8) & 0xFF + var index = (idx & 0xFF) + var press_counter = (idx >> 24) & 0xFF + self.button_handler(index + 1, (state != last_state) ? 1 : 0, state ? 0 : 1, press_counter) # invert state, originally '0' means press, turn it into '1' + end + # Attach driver `button_multi_pressed` + def button_multi_pressed(cmd, idx) + var press_counter = (idx >> 8) & 0xFF + var index = (idx & 0xFF) + self.button_handler(index + 1, 2, 0, press_counter) + end + ##################################################################### + # Centralize to a single call + # + # Args: + # - button: (int) button number (base 1) + # - mode: (int) 0=static report every second, 1=button state changed (immediate), 2=multi-press status (delayed) + # - state: 1=button pressed, 0=button released, 2..5+=multi-press complete + def button_handler(button, mode, state, press_counter) + # log(f"MTR: button_handler({button=}, {mode=}, {state=})", 3) + # call all plugins, use a manual loop to avoid creating a new object + var idx = 0 + import introspect + while idx < size(self.plugins) + var pi = self.plugins[idx] + if introspect.contains(pi, "button_handler") + self.plugins[idx].button_handler(button, mode, state, press_counter) + end + idx += 1 + end + end + ############################################################# # dispatch every second click to sub-objects that need it def every_second() diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h index 84a9fb13a..235660506 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -791,42 +791,13 @@ be_local_class(Matter_EventHandler, extern const bclass be_class_Matter_EventQueued; -/******************************************************************** -** Solidified function: compact -********************************************************************/ -extern const bclass be_class_Matter_EventQueued; -be_local_closure(class_Matter_EventQueued_compact, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_EventQueued, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(raw_tlv), - }), - be_str_weak(compact), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: to_raw_bytes ********************************************************************/ extern const bclass be_class_Matter_EventQueued; be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ be_nested_proto( - 8, /* nstack */ + 14, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -834,107 +805,46 @@ be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ 0, /* has sup protos */ &be_class_Matter_EventQueued, 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(raw_tlv), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(EventReportIB), - /* K3 */ be_nested_str_weak(EventDataIB), - /* K4 */ be_nested_str_weak(event_data), - /* K5 */ be_nested_str_weak(EventPathIB), - /* K6 */ be_nested_str_weak(endpoint), - /* K7 */ be_nested_str_weak(cluster), - /* K8 */ be_nested_str_weak(event), - /* K9 */ be_nested_str_weak(event_id), - /* K10 */ be_nested_str_weak(is_urgent), - /* K11 */ be_nested_str_weak(path), - /* K12 */ be_nested_str_weak(priority), - /* K13 */ be_nested_str_weak(event_number), - /* K14 */ be_nested_str_weak(event_no), - /* K15 */ be_nested_str_weak(epoch_timestamp), - /* K16 */ be_nested_str_weak(data), - /* K17 */ be_nested_str_weak(TLV), - /* K18 */ be_nested_str_weak(Matter_TLV_struct), - /* K19 */ be_nested_str_weak(data0), - /* K20 */ be_nested_str_weak(add_obj), - /* K21 */ be_const_int(0), - /* K22 */ be_nested_str_weak(data1), - /* K23 */ be_const_int(1), - /* K24 */ be_nested_str_weak(data2), - /* K25 */ be_const_int(2), - /* K26 */ be_nested_str_weak(to_TLV), - /* K27 */ be_nested_str_weak(tlv2raw), + /* K1 */ be_nested_str_weak(eventreport2raw), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(event_id), + /* K5 */ be_nested_str_weak(is_urgent), + /* K6 */ be_nested_str_weak(priority), + /* K7 */ be_nested_str_weak(event_no), + /* K8 */ be_nested_str_weak(epoch_timestamp), + /* K9 */ be_nested_str_weak(data0), + /* K10 */ be_nested_str_weak(data1), + /* K11 */ be_nested_str_weak(data2), }), be_str_weak(to_raw_bytes), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ + ( &(const binstruction[23]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 - 0x7806003D, // 0003 JMPF R1 #0042 - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x78060010, // 0003 JMPF R1 #0015 + 0x60040015, // 0004 GETGBL R1 G21 + 0x540A003F, // 0005 LDINT R2 64 0x7C040200, // 0006 CALL R1 1 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x8C080503, // 0008 GETMET R2 R2 K3 - 0x7C080200, // 0009 CALL R2 1 - 0x90060802, // 000A SETMBR R1 K4 R2 - 0xB80E0200, // 000B GETNGBL R3 K1 - 0x8C0C0705, // 000C GETMET R3 R3 K5 - 0x7C0C0200, // 000D CALL R3 1 - 0x88100106, // 000E GETMBR R4 R0 K6 - 0x900E0C04, // 000F SETMBR R3 K6 R4 - 0x88100107, // 0010 GETMBR R4 R0 K7 - 0x900E0E04, // 0011 SETMBR R3 K7 R4 - 0x88100109, // 0012 GETMBR R4 R0 K9 - 0x900E1004, // 0013 SETMBR R3 K8 R4 - 0x8810010A, // 0014 GETMBR R4 R0 K10 - 0x900E1404, // 0015 SETMBR R3 K10 R4 - 0x900A1603, // 0016 SETMBR R2 K11 R3 - 0x8810010C, // 0017 GETMBR R4 R0 K12 - 0x900A1804, // 0018 SETMBR R2 K12 R4 - 0x8810010E, // 0019 GETMBR R4 R0 K14 - 0x900A1A04, // 001A SETMBR R2 K13 R4 - 0x8810010F, // 001B GETMBR R4 R0 K15 - 0x900A1E04, // 001C SETMBR R2 K15 R4 - 0xB8120200, // 001D GETNGBL R4 K1 - 0x88100911, // 001E GETMBR R4 R4 K17 - 0x8C100912, // 001F GETMET R4 R4 K18 - 0x7C100200, // 0020 CALL R4 1 - 0x900A2004, // 0021 SETMBR R2 K16 R4 - 0x88100113, // 0022 GETMBR R4 R0 K19 - 0x4C140000, // 0023 LDNIL R5 - 0x20100805, // 0024 NE R4 R4 R5 - 0x78120004, // 0025 JMPF R4 #002B - 0x88100510, // 0026 GETMBR R4 R2 K16 - 0x8C100914, // 0027 GETMET R4 R4 K20 - 0x58180015, // 0028 LDCONST R6 K21 - 0x881C0113, // 0029 GETMBR R7 R0 K19 - 0x7C100600, // 002A CALL R4 3 - 0x88100116, // 002B GETMBR R4 R0 K22 - 0x4C140000, // 002C LDNIL R5 - 0x20100805, // 002D NE R4 R4 R5 - 0x78120004, // 002E JMPF R4 #0034 - 0x88100510, // 002F GETMBR R4 R2 K16 - 0x8C100914, // 0030 GETMET R4 R4 K20 - 0x58180017, // 0031 LDCONST R6 K23 - 0x881C0116, // 0032 GETMBR R7 R0 K22 - 0x7C100600, // 0033 CALL R4 3 - 0x88100118, // 0034 GETMBR R4 R0 K24 - 0x4C140000, // 0035 LDNIL R5 - 0x20100805, // 0036 NE R4 R4 R5 - 0x78120004, // 0037 JMPF R4 #003D - 0x88100510, // 0038 GETMBR R4 R2 K16 - 0x8C100914, // 0039 GETMET R4 R4 K20 - 0x58180019, // 003A LDCONST R6 K25 - 0x881C0118, // 003B GETMBR R7 R0 K24 - 0x7C100600, // 003C CALL R4 3 - 0x8C10031A, // 003D GETMET R4 R1 K26 - 0x7C100200, // 003E CALL R4 1 - 0x8C10091B, // 003F GETMET R4 R4 K27 - 0x7C100200, // 0040 CALL R4 1 - 0x90020004, // 0041 SETMBR R0 K0 R4 - 0x88040100, // 0042 GETMBR R1 R0 K0 - 0x80040200, // 0043 RET 1 R1 + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x8C040101, // 0008 GETMET R1 R0 K1 + 0x880C0100, // 0009 GETMBR R3 R0 K0 + 0x88100102, // 000A GETMBR R4 R0 K2 + 0x88140103, // 000B GETMBR R5 R0 K3 + 0x88180104, // 000C GETMBR R6 R0 K4 + 0x881C0105, // 000D GETMBR R7 R0 K5 + 0x88200106, // 000E GETMBR R8 R0 K6 + 0x88240107, // 000F GETMBR R9 R0 K7 + 0x88280108, // 0010 GETMBR R10 R0 K8 + 0x882C0109, // 0011 GETMBR R11 R0 K9 + 0x8830010A, // 0012 GETMBR R12 R0 K10 + 0x8834010B, // 0013 GETMBR R13 R0 K11 + 0x7C041800, // 0014 CALL R1 12 + 0x88040100, // 0015 GETMBR R1 R0 K0 + 0x80040200, // 0016 RET 1 R1 }) ) ); @@ -1019,28 +929,295 @@ be_local_closure(class_Matter_EventQueued_init, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: compact +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_compact, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(raw_tlv), + }), + be_str_weak(compact), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: eventpath2raw +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_eventpath2raw, /* name */ + be_nested_proto( + 10, /* nstack */ + 6, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(2), + }), + be_str_weak(eventpath2raw), + &be_const_str_solidified, + ( &(const binstruction[91]) { /* code */ + 0x8C180300, // 0000 GETMET R6 R1 K0 + 0x542236FF, // 0001 LDINT R8 14080 + 0x5425FFFD, // 0002 LDINT R9 -2 + 0x7C180600, // 0003 CALL R6 3 + 0x541A00FE, // 0004 LDINT R6 255 + 0x18180406, // 0005 LE R6 R2 R6 + 0x781A0008, // 0006 JMPF R6 #0010 + 0x8C180300, // 0007 GETMET R6 R1 K0 + 0x54222400, // 0008 LDINT R8 9217 + 0x5425FFFD, // 0009 LDINT R9 -2 + 0x7C180600, // 000A CALL R6 3 + 0x8C180300, // 000B GETMET R6 R1 K0 + 0x5C200400, // 000C MOVE R8 R2 + 0x58240001, // 000D LDCONST R9 K1 + 0x7C180600, // 000E CALL R6 3 + 0x70020007, // 000F JMP #0018 + 0x8C180300, // 0010 GETMET R6 R1 K0 + 0x54222500, // 0011 LDINT R8 9473 + 0x5425FFFD, // 0012 LDINT R9 -2 + 0x7C180600, // 0013 CALL R6 3 + 0x8C180300, // 0014 GETMET R6 R1 K0 + 0x5C200400, // 0015 MOVE R8 R2 + 0x58240002, // 0016 LDCONST R9 K2 + 0x7C180600, // 0017 CALL R6 3 + 0x541A00FE, // 0018 LDINT R6 255 + 0x18180606, // 0019 LE R6 R3 R6 + 0x781A0008, // 001A JMPF R6 #0024 + 0x8C180300, // 001B GETMET R6 R1 K0 + 0x54222401, // 001C LDINT R8 9218 + 0x5425FFFD, // 001D LDINT R9 -2 + 0x7C180600, // 001E CALL R6 3 + 0x8C180300, // 001F GETMET R6 R1 K0 + 0x5C200600, // 0020 MOVE R8 R3 + 0x58240001, // 0021 LDCONST R9 K1 + 0x7C180600, // 0022 CALL R6 3 + 0x70020013, // 0023 JMP #0038 + 0x541AFFFE, // 0024 LDINT R6 65535 + 0x18180606, // 0025 LE R6 R3 R6 + 0x781A0008, // 0026 JMPF R6 #0030 + 0x8C180300, // 0027 GETMET R6 R1 K0 + 0x54222501, // 0028 LDINT R8 9474 + 0x5425FFFD, // 0029 LDINT R9 -2 + 0x7C180600, // 002A CALL R6 3 + 0x8C180300, // 002B GETMET R6 R1 K0 + 0x5C200600, // 002C MOVE R8 R3 + 0x58240002, // 002D LDCONST R9 K2 + 0x7C180600, // 002E CALL R6 3 + 0x70020007, // 002F JMP #0038 + 0x8C180300, // 0030 GETMET R6 R1 K0 + 0x54222601, // 0031 LDINT R8 9730 + 0x5425FFFD, // 0032 LDINT R9 -2 + 0x7C180600, // 0033 CALL R6 3 + 0x8C180300, // 0034 GETMET R6 R1 K0 + 0x5C200600, // 0035 MOVE R8 R3 + 0x54260003, // 0036 LDINT R9 4 + 0x7C180600, // 0037 CALL R6 3 + 0x541A00FE, // 0038 LDINT R6 255 + 0x18180806, // 0039 LE R6 R4 R6 + 0x781A0008, // 003A JMPF R6 #0044 + 0x8C180300, // 003B GETMET R6 R1 K0 + 0x54222402, // 003C LDINT R8 9219 + 0x5425FFFD, // 003D LDINT R9 -2 + 0x7C180600, // 003E CALL R6 3 + 0x8C180300, // 003F GETMET R6 R1 K0 + 0x5C200800, // 0040 MOVE R8 R4 + 0x58240001, // 0041 LDCONST R9 K1 + 0x7C180600, // 0042 CALL R6 3 + 0x70020007, // 0043 JMP #004C + 0x8C180300, // 0044 GETMET R6 R1 K0 + 0x54222502, // 0045 LDINT R8 9475 + 0x5425FFFD, // 0046 LDINT R9 -2 + 0x7C180600, // 0047 CALL R6 3 + 0x8C180300, // 0048 GETMET R6 R1 K0 + 0x5C200800, // 0049 MOVE R8 R4 + 0x58240002, // 004A LDCONST R9 K2 + 0x7C180600, // 004B CALL R6 3 + 0x78160004, // 004C JMPF R5 #0052 + 0x8C180300, // 004D GETMET R6 R1 K0 + 0x54222903, // 004E LDINT R8 10500 + 0x5425FFFD, // 004F LDINT R9 -2 + 0x7C180600, // 0050 CALL R6 3 + 0x70020003, // 0051 JMP #0056 + 0x8C180300, // 0052 GETMET R6 R1 K0 + 0x54222803, // 0053 LDINT R8 10244 + 0x5425FFFD, // 0054 LDINT R9 -2 + 0x7C180600, // 0055 CALL R6 3 + 0x8C180300, // 0056 GETMET R6 R1 K0 + 0x54220017, // 0057 LDINT R8 24 + 0x58240001, // 0058 LDCONST R9 K1 + 0x7C180600, // 0059 CALL R6 3 + 0x80000000, // 005A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: eventreport2raw +********************************************************************/ +extern const bclass be_class_Matter_EventQueued; +be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ + be_nested_proto( + 19, /* nstack */ + 12, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_EventQueued, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(eventpath2raw), + /* K3 */ be_nested_str_weak(low32), + /* K4 */ be_nested_str_weak(high32), + /* K5 */ be_nested_str_weak(tag_sub), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(tlv2raw), + /* K8 */ be_const_int(2), + }), + be_str_weak(eventreport2raw), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0x8C300300, // 0000 GETMET R12 R1 K0 + 0x543A0014, // 0001 LDINT R14 21 + 0x583C0001, // 0002 LDCONST R15 K1 + 0x7C300600, // 0003 CALL R12 3 + 0x8C300300, // 0004 GETMET R12 R1 K0 + 0x543A3500, // 0005 LDINT R14 13569 + 0x543DFFFD, // 0006 LDINT R15 -2 + 0x7C300600, // 0007 CALL R12 3 + 0x8C300102, // 0008 GETMET R12 R0 K2 + 0x5C380200, // 0009 MOVE R14 R1 + 0x5C3C0400, // 000A MOVE R15 R2 + 0x5C400600, // 000B MOVE R16 R3 + 0x5C440800, // 000C MOVE R17 R4 + 0x5C480A00, // 000D MOVE R18 R5 + 0x7C300C00, // 000E CALL R12 6 + 0x8C300300, // 000F GETMET R12 R1 K0 + 0x543A2700, // 0010 LDINT R14 9985 + 0x543DFFFD, // 0011 LDINT R15 -2 + 0x7C300600, // 0012 CALL R12 3 + 0x8C300300, // 0013 GETMET R12 R1 K0 + 0x8C380F03, // 0014 GETMET R14 R7 K3 + 0x7C380200, // 0015 CALL R14 1 + 0x543E0003, // 0016 LDINT R15 4 + 0x7C300600, // 0017 CALL R12 3 + 0x8C300300, // 0018 GETMET R12 R1 K0 + 0x8C380F04, // 0019 GETMET R14 R7 K4 + 0x7C380200, // 001A CALL R14 1 + 0x543E0003, // 001B LDINT R15 4 + 0x7C300600, // 001C CALL R12 3 + 0x8C300300, // 001D GETMET R12 R1 K0 + 0x543A2401, // 001E LDINT R14 9218 + 0x543DFFFD, // 001F LDINT R15 -2 + 0x7C300600, // 0020 CALL R12 3 + 0x8C300300, // 0021 GETMET R12 R1 K0 + 0x5C380C00, // 0022 MOVE R14 R6 + 0x583C0001, // 0023 LDCONST R15 K1 + 0x7C300600, // 0024 CALL R12 3 + 0x8C300300, // 0025 GETMET R12 R1 K0 + 0x543A2602, // 0026 LDINT R14 9731 + 0x543DFFFD, // 0027 LDINT R15 -2 + 0x7C300600, // 0028 CALL R12 3 + 0x8C300300, // 0029 GETMET R12 R1 K0 + 0x5C381000, // 002A MOVE R14 R8 + 0x543E0003, // 002B LDINT R15 4 + 0x7C300600, // 002C CALL R12 3 + 0x8C300300, // 002D GETMET R12 R1 K0 + 0x543A3506, // 002E LDINT R14 13575 + 0x543DFFFD, // 002F LDINT R15 -2 + 0x7C300600, // 0030 CALL R12 3 + 0x4C300000, // 0031 LDNIL R12 + 0x2030120C, // 0032 NE R12 R9 R12 + 0x78320003, // 0033 JMPF R12 #0038 + 0x90260B06, // 0034 SETMBR R9 K5 K6 + 0x8C301307, // 0035 GETMET R12 R9 K7 + 0x5C380200, // 0036 MOVE R14 R1 + 0x7C300400, // 0037 CALL R12 2 + 0x4C300000, // 0038 LDNIL R12 + 0x2030140C, // 0039 NE R12 R10 R12 + 0x78320003, // 003A JMPF R12 #003F + 0x902A0B01, // 003B SETMBR R10 K5 K1 + 0x8C301507, // 003C GETMET R12 R10 K7 + 0x5C380200, // 003D MOVE R14 R1 + 0x7C300400, // 003E CALL R12 2 + 0x4C300000, // 003F LDNIL R12 + 0x2030160C, // 0040 NE R12 R11 R12 + 0x78320003, // 0041 JMPF R12 #0046 + 0x902E0B08, // 0042 SETMBR R11 K5 K8 + 0x8C301707, // 0043 GETMET R12 R11 K7 + 0x5C380200, // 0044 MOVE R14 R1 + 0x7C300400, // 0045 CALL R12 2 + 0x8C300300, // 0046 GETMET R12 R1 K0 + 0x543A0017, // 0047 LDINT R14 24 + 0x583C0001, // 0048 LDCONST R15 K1 + 0x7C300600, // 0049 CALL R12 3 + 0x8C300300, // 004A GETMET R12 R1 K0 + 0x543A0017, // 004B LDINT R14 24 + 0x583C0001, // 004C LDCONST R15 K1 + 0x7C300600, // 004D CALL R12 3 + 0x8C300300, // 004E GETMET R12 R1 K0 + 0x543A0017, // 004F LDINT R14 24 + 0x583C0001, // 0050 LDCONST R15 K1 + 0x7C300600, // 0051 CALL R12 3 + 0x80000000, // 0052 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_EventQueued ********************************************************************/ be_local_class(Matter_EventQueued, 11, NULL, - be_nested_map(14, + be_nested_map(16, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(endpoint, -1), be_const_var(0) }, - { be_const_key_weak(epoch_timestamp, -1), be_const_var(9) }, - { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventQueued_compact_closure) }, - { be_const_key_weak(init, 10), be_const_closure(class_Matter_EventQueued_init_closure) }, - { be_const_key_weak(data2, 11), be_const_var(7) }, - { be_const_key_weak(event_no, 3), be_const_var(8) }, - { be_const_key_weak(raw_tlv, -1), be_const_var(10) }, - { be_const_key_weak(is_urgent, 12), be_const_var(3) }, - { be_const_key_weak(data1, -1), be_const_var(6) }, - { be_const_key_weak(priority, 4), be_const_var(4) }, - { be_const_key_weak(event_id, -1), be_const_var(2) }, - { be_const_key_weak(to_raw_bytes, 1), be_const_closure(class_Matter_EventQueued_to_raw_bytes_closure) }, - { be_const_key_weak(cluster, -1), be_const_var(1) }, { be_const_key_weak(data0, -1), be_const_var(5) }, + { be_const_key_weak(eventreport2raw, -1), be_const_closure(class_Matter_EventQueued_eventreport2raw_closure) }, + { be_const_key_weak(event_id, 11), be_const_var(2) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventQueued_init_closure) }, + { be_const_key_weak(data1, 14), be_const_var(6) }, + { be_const_key_weak(data2, 1), be_const_var(7) }, + { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventQueued_compact_closure) }, + { be_const_key_weak(is_urgent, -1), be_const_var(3) }, + { be_const_key_weak(eventpath2raw, -1), be_const_closure(class_Matter_EventQueued_eventpath2raw_closure) }, + { be_const_key_weak(epoch_timestamp, 10), be_const_var(9) }, + { be_const_key_weak(priority, -1), be_const_var(4) }, + { be_const_key_weak(cluster, -1), be_const_var(1) }, + { be_const_key_weak(raw_tlv, 4), be_const_var(10) }, + { be_const_key_weak(to_raw_bytes, 2), be_const_closure(class_Matter_EventQueued_to_raw_bytes_closure) }, + { be_const_key_weak(endpoint, -1), be_const_var(0) }, + { be_const_key_weak(event_no, 0), be_const_var(8) }, })), be_str_weak(Matter_EventQueued) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 17b3fe498..38d74e2f5 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -567,7 +567,7 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ 0, /* has sup protos */ &be_class_Matter_IM_ReportData_Pull, 1, /* has constants */ - ( &(const bvalue[51]) { /* constants */ + ( &(const bvalue[47]) { /* constants */ /* K0 */ be_nested_str_weak(resp), /* K1 */ be_nested_str_weak(data), /* K2 */ be_nested_str_weak(device), @@ -603,26 +603,22 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ /* K32 */ be_nested_str_weak(cluster), /* K33 */ be_nested_str_weak(event_id), /* K34 */ be_nested_str_weak(to_raw_bytes), - /* K35 */ be_nested_str_weak(matter), - /* K36 */ be_nested_str_weak(ReportDataMessage), + /* K35 */ be_nested_str_weak(add), + /* K36 */ be_const_int(1), /* K37 */ be_nested_str_weak(subscription_id), - /* K38 */ be_nested_str_weak(suppress_response), - /* K39 */ be_nested_str_weak(attribute_reports), - /* K40 */ be_nested_str_weak(event_reports), - /* K41 */ be_nested_str_weak(more_chunked_messages), - /* K42 */ be_nested_str_weak(to_TLV), - /* K43 */ be_nested_str_weak(tlv2raw), - /* K44 */ be_nested_str_weak(encode_frame), - /* K45 */ be_nested_str_weak(encrypt), - /* K46 */ be_nested_str_weak(send_response_frame), - /* K47 */ be_nested_str_weak(last_counter), - /* K48 */ be_nested_str_weak(message_counter), - /* K49 */ be_nested_str_weak(ready), - /* K50 */ be_nested_str_weak(finishing), + /* K38 */ be_const_int(2), + /* K39 */ be_nested_str_weak(suppress_response), + /* K40 */ be_nested_str_weak(encode_frame), + /* K41 */ be_nested_str_weak(encrypt), + /* K42 */ be_nested_str_weak(send_response_frame), + /* K43 */ be_nested_str_weak(last_counter), + /* K44 */ be_nested_str_weak(message_counter), + /* K45 */ be_nested_str_weak(ready), + /* K46 */ be_nested_str_weak(finishing), }), be_str_weak(send_im), &be_const_str_solidified, - ( &(const binstruction[307]) { /* code */ + ( &(const binstruction[361]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x880C0101, // 0001 GETMBR R3 R0 K1 0x4C100000, // 0002 LDNIL R4 @@ -863,73 +859,127 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ 0x4C240000, // 00ED LDNIL R9 0x90020A09, // 00EE SETMBR R0 K5 R9 0x7001FF90, // 00EF JMP #0081 - 0xB81E4600, // 00F0 GETNGBL R7 K35 - 0x8C1C0F24, // 00F1 GETMET R7 R7 K36 - 0x7C1C0200, // 00F2 CALL R7 1 - 0x88200125, // 00F3 GETMBR R8 R0 K37 - 0x901E4A08, // 00F4 SETMBR R7 K37 R8 - 0x88200126, // 00F5 GETMBR R8 R0 K38 - 0x901E4C08, // 00F6 SETMBR R7 K38 R8 - 0x4C200000, // 00F7 LDNIL R8 - 0x20200608, // 00F8 NE R8 R3 R8 - 0x78220008, // 00F9 JMPF R8 #0103 - 0x6020000C, // 00FA GETGBL R8 G12 - 0x5C240600, // 00FB MOVE R9 R3 + 0x881C0101, // 00F0 GETMBR R7 R0 K1 + 0x4C200000, // 00F1 LDNIL R8 + 0x201C0E08, // 00F2 NE R7 R7 R8 + 0x741E0004, // 00F3 JMPT R7 #00F9 + 0x881C0104, // 00F4 GETMBR R7 R0 K4 + 0x4C200000, // 00F5 LDNIL R8 + 0x201C0E08, // 00F6 NE R7 R7 R8 + 0x741E0000, // 00F7 JMPT R7 #00F9 + 0x501C0001, // 00F8 LDBOOL R7 0 1 + 0x501C0200, // 00F9 LDBOOL R7 1 0 + 0x60200015, // 00FA GETGBL R8 G21 + 0x8824010E, // 00FB GETMBR R9 R0 K14 0x7C200200, // 00FC CALL R8 1 - 0x24201107, // 00FD GT R8 R8 K7 - 0x78220003, // 00FE JMPF R8 #0103 - 0x60200012, // 00FF GETGBL R8 G18 - 0x7C200000, // 0100 CALL R8 0 - 0x40241003, // 0101 CONNECT R9 R8 R3 - 0x901E4E08, // 0102 SETMBR R7 K39 R8 - 0x4C200000, // 0103 LDNIL R8 - 0x20200C08, // 0104 NE R8 R6 R8 - 0x78220008, // 0105 JMPF R8 #010F - 0x6020000C, // 0106 GETGBL R8 G12 - 0x5C240C00, // 0107 MOVE R9 R6 - 0x7C200200, // 0108 CALL R8 1 - 0x24201107, // 0109 GT R8 R8 K7 - 0x78220003, // 010A JMPF R8 #010F - 0x60200012, // 010B GETGBL R8 G18 - 0x7C200000, // 010C CALL R8 0 - 0x40241006, // 010D CONNECT R9 R8 R6 - 0x901E5008, // 010E SETMBR R7 K40 R8 - 0x88200101, // 010F GETMBR R8 R0 K1 - 0x4C240000, // 0110 LDNIL R9 - 0x20201009, // 0111 NE R8 R8 R9 - 0x74220004, // 0112 JMPT R8 #0118 - 0x88200104, // 0113 GETMBR R8 R0 K4 - 0x4C240000, // 0114 LDNIL R9 - 0x20201009, // 0115 NE R8 R8 R9 - 0x74220000, // 0116 JMPT R8 #0118 - 0x50200001, // 0117 LDBOOL R8 0 1 - 0x50200200, // 0118 LDBOOL R8 1 0 - 0x901E5208, // 0119 SETMBR R7 K41 R8 - 0x8C200F2A, // 011A GETMET R8 R7 K42 - 0x7C200200, // 011B CALL R8 1 - 0x8C20112B, // 011C GETMET R8 R8 K43 - 0x60280015, // 011D GETGBL R10 G21 - 0x882C010E, // 011E GETMBR R11 R0 K14 - 0x7C280200, // 011F CALL R10 1 - 0x7C200400, // 0120 CALL R8 2 - 0x8C24052C, // 0121 GETMET R9 R2 K44 - 0x5C2C1000, // 0122 MOVE R11 R8 - 0x7C240400, // 0123 CALL R9 2 - 0x8C24052D, // 0124 GETMET R9 R2 K45 + 0x8C241123, // 00FD GETMET R9 R8 K35 + 0x542E0014, // 00FE LDINT R11 21 + 0x58300024, // 00FF LDCONST R12 K36 + 0x7C240600, // 0100 CALL R9 3 + 0x88240125, // 0101 GETMBR R9 R0 K37 + 0x4C280000, // 0102 LDNIL R10 + 0x2024120A, // 0103 NE R9 R9 R10 + 0x78260007, // 0104 JMPF R9 #010D + 0x8C241123, // 0105 GETMET R9 R8 K35 + 0x542E24FF, // 0106 LDINT R11 9472 + 0x5431FFFD, // 0107 LDINT R12 -2 + 0x7C240600, // 0108 CALL R9 3 + 0x8C241123, // 0109 GETMET R9 R8 K35 + 0x882C0125, // 010A GETMBR R11 R0 K37 + 0x58300026, // 010B LDCONST R12 K38 + 0x7C240600, // 010C CALL R9 3 + 0x4C240000, // 010D LDNIL R9 + 0x20240609, // 010E NE R9 R3 R9 + 0x7826000F, // 010F JMPF R9 #0120 + 0x6024000C, // 0110 GETGBL R9 G12 + 0x5C280600, // 0111 MOVE R10 R3 + 0x7C240200, // 0112 CALL R9 1 + 0x24241307, // 0113 GT R9 R9 K7 + 0x7826000A, // 0114 JMPF R9 #0120 + 0x8C241123, // 0115 GETMET R9 R8 K35 + 0x542E3600, // 0116 LDINT R11 13825 + 0x5431FFFD, // 0117 LDINT R12 -2 + 0x7C240600, // 0118 CALL R9 3 + 0x8C24110F, // 0119 GETMET R9 R8 K15 + 0x5C2C0600, // 011A MOVE R11 R3 + 0x7C240400, // 011B CALL R9 2 + 0x8C241123, // 011C GETMET R9 R8 K35 + 0x542E0017, // 011D LDINT R11 24 + 0x58300024, // 011E LDCONST R12 K36 + 0x7C240600, // 011F CALL R9 3 + 0x4C240000, // 0120 LDNIL R9 + 0x20240C09, // 0121 NE R9 R6 R9 + 0x7826000F, // 0122 JMPF R9 #0133 + 0x6024000C, // 0123 GETGBL R9 G12 + 0x5C280C00, // 0124 MOVE R10 R6 0x7C240200, // 0125 CALL R9 1 - 0x8C24032E, // 0126 GETMET R9 R1 K46 - 0x5C2C0400, // 0127 MOVE R11 R2 - 0x7C240400, // 0128 CALL R9 2 - 0x88240530, // 0129 GETMBR R9 R2 K48 - 0x90025E09, // 012A SETMBR R0 K47 R9 - 0x88240F29, // 012B GETMBR R9 R7 K41 - 0x78260002, // 012C JMPF R9 #0130 - 0x50240000, // 012D LDBOOL R9 0 0 - 0x90026209, // 012E SETMBR R0 K49 R9 - 0x70020001, // 012F JMP #0132 - 0x50240200, // 0130 LDBOOL R9 1 0 - 0x90026409, // 0131 SETMBR R0 K50 R9 - 0x80000000, // 0132 RET 0 + 0x24241307, // 0126 GT R9 R9 K7 + 0x7826000A, // 0127 JMPF R9 #0133 + 0x8C241123, // 0128 GETMET R9 R8 K35 + 0x542E3601, // 0129 LDINT R11 13826 + 0x5431FFFD, // 012A LDINT R12 -2 + 0x7C240600, // 012B CALL R9 3 + 0x8C24110F, // 012C GETMET R9 R8 K15 + 0x5C2C0C00, // 012D MOVE R11 R6 + 0x7C240400, // 012E CALL R9 2 + 0x8C241123, // 012F GETMET R9 R8 K35 + 0x542E0017, // 0130 LDINT R11 24 + 0x58300024, // 0131 LDCONST R12 K36 + 0x7C240600, // 0132 CALL R9 3 + 0x781E0004, // 0133 JMPF R7 #0139 + 0x8C241123, // 0134 GETMET R9 R8 K35 + 0x542E2902, // 0135 LDINT R11 10499 + 0x5431FFFD, // 0136 LDINT R12 -2 + 0x7C240600, // 0137 CALL R9 3 + 0x70020003, // 0138 JMP #013D + 0x8C241123, // 0139 GETMET R9 R8 K35 + 0x542E2802, // 013A LDINT R11 10243 + 0x5431FFFD, // 013B LDINT R12 -2 + 0x7C240600, // 013C CALL R9 3 + 0x88240127, // 013D GETMBR R9 R0 K39 + 0x4C280000, // 013E LDNIL R10 + 0x2024120A, // 013F NE R9 R9 R10 + 0x7826000A, // 0140 JMPF R9 #014C + 0x88240127, // 0141 GETMBR R9 R0 K39 + 0x78260004, // 0142 JMPF R9 #0148 + 0x8C241123, // 0143 GETMET R9 R8 K35 + 0x542E2903, // 0144 LDINT R11 10500 + 0x5431FFFD, // 0145 LDINT R12 -2 + 0x7C240600, // 0146 CALL R9 3 + 0x70020003, // 0147 JMP #014C + 0x8C241123, // 0148 GETMET R9 R8 K35 + 0x542E2803, // 0149 LDINT R11 10244 + 0x5431FFFD, // 014A LDINT R12 -2 + 0x7C240600, // 014B CALL R9 3 + 0x8C241123, // 014C GETMET R9 R8 K35 + 0x542E24FE, // 014D LDINT R11 9471 + 0x5431FFFD, // 014E LDINT R12 -2 + 0x7C240600, // 014F CALL R9 3 + 0x8C241123, // 0150 GETMET R9 R8 K35 + 0x582C0024, // 0151 LDCONST R11 K36 + 0x58300024, // 0152 LDCONST R12 K36 + 0x7C240600, // 0153 CALL R9 3 + 0x8C241123, // 0154 GETMET R9 R8 K35 + 0x542E0017, // 0155 LDINT R11 24 + 0x58300024, // 0156 LDCONST R12 K36 + 0x7C240600, // 0157 CALL R9 3 + 0x8C240528, // 0158 GETMET R9 R2 K40 + 0x5C2C1000, // 0159 MOVE R11 R8 + 0x7C240400, // 015A CALL R9 2 + 0x8C240529, // 015B GETMET R9 R2 K41 + 0x7C240200, // 015C CALL R9 1 + 0x8C24032A, // 015D GETMET R9 R1 K42 + 0x5C2C0400, // 015E MOVE R11 R2 + 0x7C240400, // 015F CALL R9 2 + 0x8824052C, // 0160 GETMBR R9 R2 K44 + 0x90025609, // 0161 SETMBR R0 K43 R9 + 0x781E0002, // 0162 JMPF R7 #0166 + 0x50240000, // 0163 LDBOOL R9 0 0 + 0x90025A09, // 0164 SETMBR R0 K45 R9 + 0x70020001, // 0165 JMP #0168 + 0x50240200, // 0166 LDBOOL R9 1 0 + 0x90025C09, // 0167 SETMBR R0 K46 R9 + 0x80000000, // 0168 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h deleted file mode 100644 index 6f6e9d11c..000000000 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch.h +++ /dev/null @@ -1,350 +0,0 @@ -/* Solidification of Matter_Plugin_2_Sensor_GenericSwitch.h */ -/********************************************************************\ -* Generated code, don't edit * -\********************************************************************/ -#include "be_constobj.h" - -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; - -/******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; -be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 - 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; -be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_update_shadow, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(shadow_value), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0x50040000, // 0005 LDBOOL R1 0 0 - 0x90020201, // 0006 SETMBR R0 K1 R1 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; -be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_const_int(2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(U4), - /* K10 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E003A, // 0004 LDINT R7 59 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0022, // 0006 JMPF R7 #002A - 0x1C1C0D04, // 0007 EQ R7 R6 K4 - 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 - 0x58280007, // 000B LDCONST R10 K7 - 0x7C1C0600, // 000C CALL R7 3 - 0x80040E00, // 000D RET 1 R7 - 0x7002001A, // 000E JMP #002A - 0x1C1C0D08, // 000F EQ R7 R6 K8 - 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C0705, // 0011 GETMET R7 R3 K5 - 0x88240906, // 0012 GETMBR R9 R4 K6 - 0x58280004, // 0013 LDCONST R10 K4 - 0x7C1C0600, // 0014 CALL R7 3 - 0x80040E00, // 0015 RET 1 R7 - 0x70020012, // 0016 JMP #002A - 0x1C1C0D07, // 0017 EQ R7 R6 K7 - 0x781E0005, // 0018 JMPF R7 #001F - 0x8C1C0705, // 0019 GETMET R7 R3 K5 - 0x88240906, // 001A GETMBR R9 R4 K6 - 0x58280007, // 001B LDCONST R10 K7 - 0x7C1C0600, // 001C CALL R7 3 - 0x80040E00, // 001D RET 1 R7 - 0x7002000A, // 001E JMP #002A - 0x541EFFFB, // 001F LDINT R7 65532 - 0x1C1C0C07, // 0020 EQ R7 R6 R7 - 0x781E0007, // 0021 JMPF R7 #002A - 0x8C1C0705, // 0022 GETMET R7 R3 K5 - 0x88240909, // 0023 GETMBR R9 R4 K9 - 0x542A0003, // 0024 LDINT R10 4 - 0x002A0E0A, // 0025 ADD R10 K7 R10 - 0x542E0007, // 0026 LDINT R11 8 - 0x0028140B, // 0027 ADD R10 R10 R11 - 0x7C1C0600, // 0028 CALL R7 3 - 0x80040E00, // 0029 RET 1 R7 - 0x601C0003, // 002A GETGBL R7 G3 - 0x5C200000, // 002B MOVE R8 R0 - 0x7C1C0200, // 002C CALL R7 1 - 0x8C1C0F0A, // 002D GETMET R7 R7 K10 - 0x5C240200, // 002E MOVE R9 R1 - 0x5C280400, // 002F MOVE R10 R2 - 0x5C2C0600, // 0030 MOVE R11 R3 - 0x7C1C0800, // 0031 CALL R7 4 - 0x80040E00, // 0032 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: append_state_json -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch; -be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_append_state_json, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), - /* K1 */ be_nested_str_weak(shadow_onoff), - }), - be_str_weak(append_state_json), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 - 0x600C0009, // 0002 GETGBL R3 G9 - 0x88100101, // 0003 GETMBR R4 R0 K1 - 0x7C0C0200, // 0004 CALL R3 1 - 0x7C040400, // 0005 CALL R1 2 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Matter_Plugin_Sensor_GenericSwitch -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; -be_local_class(Matter_Plugin_Sensor_GenericSwitch, - 2, - &be_class_Matter_Plugin_Device, - be_nested_map(14, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(CLUSTERS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(59, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) }, - { be_const_key_weak(UPDATE_TIME, 4), be_const_int(750) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(gensw) }, - { be_const_key_weak(append_state_json, 9), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_append_state_json_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Generic_X20Switch) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_read_attribute_closure) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_update_shadow_closure) }, - { be_const_key_weak(ARG_HINT, 12), be_nested_str_weak(Switch_X3Cx_X3E_X20number) }, - { be_const_key_weak(tasmota_switch_index, 13), be_const_var(0) }, - { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(15, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(parse_configuration, 8), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_parse_configuration_closure) }, - { be_const_key_weak(shadow_value, -1), be_const_var(1) }, - { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_GenericSwitch__X3Clambda_X3E_closure) }, - })), - be_str_weak(Matter_Plugin_Sensor_GenericSwitch) -); -/********************************************************************/ -/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h new file mode 100644 index 000000000..18f3a86ce --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h @@ -0,0 +1,498 @@ +/* Solidification of Matter_Plugin_2_Sensor_GenericSwitch_Btn.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(set), + /* K6 */ be_nested_str_weak(U1), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set_or_nil), + /* K10 */ be_nested_str_weak(shadow_position), + /* K11 */ be_nested_str_weak(U4), + /* K12 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E003A, // 0004 LDINT R7 59 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0024, // 0006 JMPF R7 #002C + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0005, // 0008 JMPF R7 #000F + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x58280007, // 000B LDCONST R10 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x7002001C, // 000E JMP #002C + 0x1C1C0D08, // 000F EQ R7 R6 K8 + 0x781E0005, // 0010 JMPF R7 #0017 + 0x8C1C0709, // 0011 GETMET R7 R3 K9 + 0x88240906, // 0012 GETMBR R9 R4 K6 + 0x8828010A, // 0013 GETMBR R10 R0 K10 + 0x7C1C0600, // 0014 CALL R7 3 + 0x80040E00, // 0015 RET 1 R7 + 0x70020014, // 0016 JMP #002C + 0x1C1C0D07, // 0017 EQ R7 R6 K7 + 0x781E0005, // 0018 JMPF R7 #001F + 0x8C1C0705, // 0019 GETMET R7 R3 K5 + 0x88240906, // 001A GETMBR R9 R4 K6 + 0x542A0004, // 001B LDINT R10 5 + 0x7C1C0600, // 001C CALL R7 3 + 0x80040E00, // 001D RET 1 R7 + 0x7002000C, // 001E JMP #002C + 0x541EFFFB, // 001F LDINT R7 65532 + 0x1C1C0C07, // 0020 EQ R7 R6 R7 + 0x781E0009, // 0021 JMPF R7 #002C + 0x8C1C0705, // 0022 GETMET R7 R3 K5 + 0x8824090B, // 0023 GETMBR R9 R4 K11 + 0x542A0003, // 0024 LDINT R10 4 + 0x302A0E0A, // 0025 OR R10 K7 R10 + 0x542E0007, // 0026 LDINT R11 8 + 0x3028140B, // 0027 OR R10 R10 R11 + 0x542E000F, // 0028 LDINT R11 16 + 0x3028140B, // 0029 OR R10 R10 R11 + 0x7C1C0600, // 002A CALL R7 3 + 0x80040E00, // 002B RET 1 R7 + 0x601C0003, // 002C GETGBL R7 G3 + 0x5C200000, // 002D MOVE R8 R0 + 0x7C1C0200, // 002E CALL R7 1 + 0x8C1C0F0C, // 002F GETMET R7 R7 K12 + 0x5C240200, // 0030 MOVE R9 R1 + 0x5C280400, // 0031 MOVE R10 R2 + 0x5C2C0600, // 0032 MOVE R11 R3 + 0x7C1C0800, // 0033 CALL R7 4 + 0x80040E00, // 0034 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_position +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_position), + /* K1 */ be_nested_str_weak(attribute_updated), + /* K2 */ be_const_int(1), + }), + be_str_weak(set_position), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0004, // 0002 JMPF R2 #0008 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x5412003A, // 0004 LDINT R4 59 + 0x58140002, // 0005 LDCONST R5 K2 + 0x7C080600, // 0006 CALL R2 3 + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_switch_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x18080504, // 0008 LE R2 R2 K4 + 0x780A0000, // 0009 JMPF R2 #000B + 0x90020103, // 000A SETMBR R0 K0 K3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: append_state_json +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), + /* K1 */ be_nested_str_weak(shadow_onoff), + }), + be_str_weak(append_state_json), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080000, // 0001 LDCONST R2 K0 + 0x600C0009, // 0002 GETGBL R3 G9 + 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x7C0C0200, // 0004 CALL R3 1 + 0x7C040400, // 0005 CALL R1 2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: button_handler +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; +be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, /* name */ + be_nested_proto( + 15, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(set_position), + /* K3 */ be_nested_str_weak(publish_event), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(EVENT_INFO), + /* K6 */ be_nested_str_weak(TLV), + /* K7 */ be_nested_str_weak(Matter_TLV_item), + /* K8 */ be_nested_str_weak(set), + /* K9 */ be_nested_str_weak(U1), + /* K10 */ be_const_int(3), + /* K11 */ be_const_int(2), + }), + be_str_weak(button_handler), + &be_const_str_solidified, + ( &(const binstruction[105]) { /* code */ + 0x1C140500, // 0000 EQ R5 R2 K0 + 0x74160001, // 0001 JMPT R5 #0004 + 0x1C140501, // 0002 EQ R5 R2 K1 + 0x78160002, // 0003 JMPF R5 #0007 + 0x8C140102, // 0004 GETMET R5 R0 K2 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x7C140400, // 0006 CALL R5 2 + 0x1C140501, // 0007 EQ R5 R2 K1 + 0x78160040, // 0008 JMPF R5 #004A + 0x780E0010, // 0009 JMPF R3 #001B + 0x8C140103, // 000A GETMET R5 R0 K3 + 0x541E003A, // 000B LDINT R7 59 + 0x58200001, // 000C LDCONST R8 K1 + 0xB8260800, // 000D GETNGBL R9 K4 + 0x88241305, // 000E GETMBR R9 R9 K5 + 0xB82A0800, // 000F GETNGBL R10 K4 + 0x88281506, // 0010 GETMBR R10 R10 K6 + 0x8C281507, // 0011 GETMET R10 R10 K7 + 0x7C280200, // 0012 CALL R10 1 + 0x8C281508, // 0013 GETMET R10 R10 K8 + 0xB8320800, // 0014 GETNGBL R12 K4 + 0x88301906, // 0015 GETMBR R12 R12 K6 + 0x88301909, // 0016 GETMBR R12 R12 K9 + 0x58340001, // 0017 LDCONST R13 K1 + 0x7C280600, // 0018 CALL R10 3 + 0x7C140A00, // 0019 CALL R5 5 + 0x7002000F, // 001A JMP #002B + 0x8C140103, // 001B GETMET R5 R0 K3 + 0x541E003A, // 001C LDINT R7 59 + 0x5820000A, // 001D LDCONST R8 K10 + 0xB8260800, // 001E GETNGBL R9 K4 + 0x88241305, // 001F GETMBR R9 R9 K5 + 0xB82A0800, // 0020 GETNGBL R10 K4 + 0x88281506, // 0021 GETMBR R10 R10 K6 + 0x8C281507, // 0022 GETMET R10 R10 K7 + 0x7C280200, // 0023 CALL R10 1 + 0x8C281508, // 0024 GETMET R10 R10 K8 + 0xB8320800, // 0025 GETNGBL R12 K4 + 0x88301906, // 0026 GETMBR R12 R12 K6 + 0x88301909, // 0027 GETMBR R12 R12 K9 + 0x58340001, // 0028 LDCONST R13 K1 + 0x7C280600, // 0029 CALL R10 3 + 0x7C140A00, // 002A CALL R5 5 + 0x1C140701, // 002B EQ R5 R3 K1 + 0x7816001B, // 002C JMPF R5 #0049 + 0x24140900, // 002D GT R5 R4 K0 + 0x78160019, // 002E JMPF R5 #0049 + 0x8C140103, // 002F GETMET R5 R0 K3 + 0x541E003A, // 0030 LDINT R7 59 + 0x54220004, // 0031 LDINT R8 5 + 0xB8260800, // 0032 GETNGBL R9 K4 + 0x88241305, // 0033 GETMBR R9 R9 K5 + 0xB82A0800, // 0034 GETNGBL R10 K4 + 0x88281506, // 0035 GETMBR R10 R10 K6 + 0x8C281507, // 0036 GETMET R10 R10 K7 + 0x7C280200, // 0037 CALL R10 1 + 0x8C281508, // 0038 GETMET R10 R10 K8 + 0xB8320800, // 0039 GETNGBL R12 K4 + 0x88301906, // 003A GETMBR R12 R12 K6 + 0x88301909, // 003B GETMBR R12 R12 K9 + 0x58340001, // 003C LDCONST R13 K1 + 0x7C280600, // 003D CALL R10 3 + 0xB82E0800, // 003E GETNGBL R11 K4 + 0x882C1706, // 003F GETMBR R11 R11 K6 + 0x8C2C1707, // 0040 GETMET R11 R11 K7 + 0x7C2C0200, // 0041 CALL R11 1 + 0x8C2C1708, // 0042 GETMET R11 R11 K8 + 0xB8360800, // 0043 GETNGBL R13 K4 + 0x88341B06, // 0044 GETMBR R13 R13 K6 + 0x88341B09, // 0045 GETMBR R13 R13 K9 + 0x00380901, // 0046 ADD R14 R4 K1 + 0x7C2C0600, // 0047 CALL R11 3 + 0x7C140C00, // 0048 CALL R5 6 + 0x7002001D, // 0049 JMP #0068 + 0x1C14050B, // 004A EQ R5 R2 K11 + 0x7816001B, // 004B JMPF R5 #0068 + 0x24140900, // 004C GT R5 R4 K0 + 0x78160019, // 004D JMPF R5 #0068 + 0x8C140103, // 004E GETMET R5 R0 K3 + 0x541E003A, // 004F LDINT R7 59 + 0x54220005, // 0050 LDINT R8 6 + 0xB8260800, // 0051 GETNGBL R9 K4 + 0x88241305, // 0052 GETMBR R9 R9 K5 + 0xB82A0800, // 0053 GETNGBL R10 K4 + 0x88281506, // 0054 GETMBR R10 R10 K6 + 0x8C281507, // 0055 GETMET R10 R10 K7 + 0x7C280200, // 0056 CALL R10 1 + 0x8C281508, // 0057 GETMET R10 R10 K8 + 0xB8320800, // 0058 GETNGBL R12 K4 + 0x88301906, // 0059 GETMBR R12 R12 K6 + 0x88301909, // 005A GETMBR R12 R12 K9 + 0x58340001, // 005B LDCONST R13 K1 + 0x7C280600, // 005C CALL R10 3 + 0xB82E0800, // 005D GETNGBL R11 K4 + 0x882C1706, // 005E GETMBR R11 R11 K6 + 0x8C2C1707, // 005F GETMET R11 R11 K7 + 0x7C2C0200, // 0060 CALL R11 1 + 0x8C2C1708, // 0061 GETMET R11 R11 K8 + 0xB8360800, // 0062 GETNGBL R13 K4 + 0x88341B06, // 0063 GETMBR R13 R13 K6 + 0x88341B09, // 0064 GETMBR R13 R13 K9 + 0x5C380800, // 0065 MOVE R14 R4 + 0x7C2C0600, // 0066 CALL R11 3 + 0x7C140C00, // 0067 CALL R5 6 + 0x80000000, // 0068 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Plugin_Sensor_GenericSwitch_Btn +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Device; +be_local_class(Matter_Plugin_Sensor_GenericSwitch_Btn, + 2, + &be_class_Matter_Plugin_Device, + be_nested_map(14, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(read_attribute, 4), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute_closure) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(button) }, + { be_const_key_weak(ARG_TYPE, 6), be_const_static_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E_closure) }, + { be_const_key_weak(TYPE, 9), be_nested_str_weak(gensw_btn) }, + { be_const_key_weak(button_handler, 13), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Generic_X20Switch_X2FButton) }, + { be_const_key_weak(append_state_json, 12), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json_closure) }, + { be_const_key_weak(set_position, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position_closure) }, + { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuration_closure) }, + { be_const_key_weak(shadow_position, -1), be_const_var(1) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(15, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(ARG_HINT, 8), be_nested_str_weak(Button_X3Cx_X3E_X20number) }, + { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(5, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(5), + be_const_int(10), + be_const_int(15), + be_const_int(17), + be_const_int(18), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(8, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + { be_const_key_int(59, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(9, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(65528), + be_const_int(65529), + be_const_int(65530), + be_const_int(65531), + be_const_int(65532), + be_const_int(65533), + })) ) } )) }, + })) ) } )) }, + })), + be_str_weak(Matter_Plugin_Sensor_GenericSwitch_Btn) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index b2d5e1d38..81415b3f9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -3397,7 +3397,7 @@ be_local_class(Matter_UI, { be_const_key_weak(show_commissioning_info, -1), be_const_closure(class_Matter_UI_show_commissioning_info_closure) }, { be_const_key_weak(page_part_ctl, 18), be_const_closure(class_Matter_UI_page_part_ctl_closure) }, { be_const_key_weak(show_fabric_info, -1), be_const_closure(class_Matter_UI_show_fabric_info_closure) }, - { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_fan_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) }, + { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Cgensw_btn_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_fan_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) }, { be_const_key_weak(web_get_arg, -1), be_const_closure(class_Matter_UI_web_get_arg_closure) }, { be_const_key_weak(plugin_option, 5), be_const_closure(class_Matter_UI_plugin_option_closure) }, { be_const_key_weak(web_add_config_button, -1), be_const_closure(class_Matter_UI_web_add_config_button_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index da9af4b11..da547af87 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -7,44 +7,12 @@ extern const bclass be_class_Matter_Device; /******************************************************************** -** Solidified function: save_before_restart +** Solidified function: start_commissioning_complete ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_save_before_restart, /* name */ +be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(stop_basic_commissioning), - /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), - }), - be_str_weak(save_before_restart), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_send -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_send, /* name */ - be_nested_proto( - 5, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -52,18 +20,44 @@ be_local_closure(class_Matter_Device_msg_send, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(send_UDP), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(get_fabric), + /* K1 */ be_nested_str_weak(get_fabric_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(get_admin_vendor_name), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(stop_basic_commissioning), }), - be_str_weak(msg_send), + be_str_weak(start_commissioning_complete), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + ( &(const binstruction[23]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x8C0C0501, // 0002 GETMET R3 R2 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x7C100200, // 000B CALL R4 1 + 0xB8160C00, // 000C GETNGBL R5 K6 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C0007, // 000E LDCONST R7 K7 + 0x5C200600, // 000F MOVE R8 R3 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C180600, // 0011 CALL R6 3 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x7C140400, // 0013 CALL R5 2 + 0x8C140109, // 0014 GETMET R5 R0 K9 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 }) ) ); @@ -71,710 +65,82 @@ be_local_closure(class_Matter_Device_msg_send, /* name */ /******************************************************************** -** Solidified function: mdns_remove_PASE +** Solidified function: k2l_num ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ +be_local_closure(class_Matter_Device_k2l_num, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(mdns_pase_eth), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K4 */ be_nested_str_weak(_matterc), - /* K5 */ be_nested_str_weak(_udp), - /* K6 */ be_nested_str_weak(commissioning_instance_eth), - /* K7 */ be_nested_str_weak(hostname_eth), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K10 */ be_nested_str_weak(eth), - /* K11 */ be_nested_str_weak(remove_service), - /* K12 */ be_nested_str_weak(mdns_pase_wifi), - /* K13 */ be_nested_str_weak(commissioning_instance_wifi), - /* K14 */ be_nested_str_weak(hostname_wifi), - /* K15 */ be_nested_str_weak(wifi), - /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K17 */ be_nested_str_weak(_X7C), - /* K18 */ be_const_int(2), - }), - be_str_weak(mdns_remove_PASE), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A0019, // 0003 JMPF R2 #001E - 0xB80A0400, // 0004 GETNGBL R2 K2 - 0x600C0018, // 0005 GETGBL R3 G24 - 0x58100003, // 0006 LDCONST R4 K3 - 0x58140004, // 0007 LDCONST R5 K4 - 0x58180005, // 0008 LDCONST R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x88200107, // 000A GETMBR R8 R0 K7 - 0x7C0C0A00, // 000B CALL R3 5 - 0x58100008, // 000C LDCONST R4 K8 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0400, // 000E GETNGBL R2 K2 - 0x600C0018, // 000F GETGBL R3 G24 - 0x58100009, // 0010 LDCONST R4 K9 - 0x5814000A, // 0011 LDCONST R5 K10 - 0x88180106, // 0012 GETMBR R6 R0 K6 - 0x7C0C0600, // 0013 CALL R3 3 - 0x58100008, // 0014 LDCONST R4 K8 - 0x7C080400, // 0015 CALL R2 2 - 0x50080000, // 0016 LDBOOL R2 0 0 - 0x90020202, // 0017 SETMBR R0 K1 R2 - 0x8C08030B, // 0018 GETMET R2 R1 K11 - 0x58100004, // 0019 LDCONST R4 K4 - 0x58140005, // 001A LDCONST R5 K5 - 0x88180106, // 001B GETMBR R6 R0 K6 - 0x881C0107, // 001C GETMBR R7 R0 K7 - 0x7C080A00, // 001D CALL R2 5 - 0x8808010C, // 001E GETMBR R2 R0 K12 - 0x780A0019, // 001F JMPF R2 #003A - 0xB80A0400, // 0020 GETNGBL R2 K2 - 0x600C0018, // 0021 GETGBL R3 G24 - 0x58100003, // 0022 LDCONST R4 K3 - 0x58140004, // 0023 LDCONST R5 K4 - 0x58180005, // 0024 LDCONST R6 K5 - 0x881C010D, // 0025 GETMBR R7 R0 K13 - 0x8820010E, // 0026 GETMBR R8 R0 K14 - 0x7C0C0A00, // 0027 CALL R3 5 - 0x58100008, // 0028 LDCONST R4 K8 - 0x7C080400, // 0029 CALL R2 2 - 0xB80A0400, // 002A GETNGBL R2 K2 - 0x600C0018, // 002B GETGBL R3 G24 - 0x58100009, // 002C LDCONST R4 K9 - 0x5814000F, // 002D LDCONST R5 K15 - 0x8818010D, // 002E GETMBR R6 R0 K13 - 0x7C0C0600, // 002F CALL R3 3 - 0x58100008, // 0030 LDCONST R4 K8 - 0x7C080400, // 0031 CALL R2 2 - 0x50080000, // 0032 LDBOOL R2 0 0 - 0x90021802, // 0033 SETMBR R0 K12 R2 - 0x8C08030B, // 0034 GETMET R2 R1 K11 - 0x58100004, // 0035 LDCONST R4 K4 - 0x58140005, // 0036 LDCONST R5 K5 - 0x8818010D, // 0037 GETMBR R6 R0 K13 - 0x881C010E, // 0038 GETMBR R7 R0 K14 - 0x7C080A00, // 0039 CALL R2 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC080002, // 003C CATCH R2 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8120400, // 003E GETNGBL R4 K2 - 0x60140008, // 003F GETGBL R5 G8 - 0x5C180400, // 0040 MOVE R6 R2 - 0x7C140200, // 0041 CALL R5 1 - 0x00162005, // 0042 ADD R5 K16 R5 - 0x00140B11, // 0043 ADD R5 R5 K17 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x00140A06, // 0047 ADD R5 R5 R6 - 0x58180012, // 0048 LDCONST R6 K18 - 0x7C100400, // 0049 CALL R4 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_qrcode_content -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(setbits), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(VENDOR_ID), - /* K4 */ be_nested_str_weak(PRODUCT_ID), - /* K5 */ be_nested_str_weak(root_discriminator), - /* K6 */ be_nested_str_weak(root_passcode), - /* K7 */ be_const_int(134217727), - /* K8 */ be_nested_str_weak(MT_X3A), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(Base38), - /* K11 */ be_nested_str_weak(encode), - }), - be_str_weak(compute_qrcode_content), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 - 0x540E000A, // 0003 LDINT R3 11 - 0x7C040400, // 0004 CALL R1 2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x5416000F, // 0007 LDINT R5 16 - 0x88180103, // 0008 GETMBR R6 R0 K3 - 0x7C080800, // 0009 CALL R2 4 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x54120012, // 000B LDINT R4 19 - 0x5416000F, // 000C LDINT R5 16 - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x7C080800, // 000E CALL R2 4 - 0x8C080301, // 000F GETMET R2 R1 K1 - 0x54120024, // 0010 LDINT R4 37 - 0x54160007, // 0011 LDINT R5 8 - 0x541A0003, // 0012 LDINT R6 4 - 0x7C080800, // 0013 CALL R2 4 - 0x8C080301, // 0014 GETMET R2 R1 K1 - 0x5412002C, // 0015 LDINT R4 45 - 0x5416000B, // 0016 LDINT R5 12 - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x541E0FFE, // 0018 LDINT R7 4095 - 0x2C180C07, // 0019 AND R6 R6 R7 - 0x7C080800, // 001A CALL R2 4 - 0x8C080301, // 001B GETMET R2 R1 K1 - 0x54120038, // 001C LDINT R4 57 - 0x5416001A, // 001D LDINT R5 27 - 0x88180106, // 001E GETMBR R6 R0 K6 - 0x2C180D07, // 001F AND R6 R6 K7 - 0x7C080800, // 0020 CALL R2 4 - 0xB80A1200, // 0021 GETNGBL R2 K9 - 0x8808050A, // 0022 GETMBR R2 R2 K10 - 0x8C08050B, // 0023 GETMET R2 R2 K11 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x000A1002, // 0026 ADD R2 K8 R2 - 0x80040400, // 0027 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_root_basic_commissioning), - }), - be_str_weak(_init_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040302, // 0003 EQ R1 R1 K2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x7C040200, // 0006 CALL R1 1 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_sensors_scheduler -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(time_reached), - /* K5 */ be_nested_str_weak(_trigger_read_sensors), - /* K6 */ be_nested_str_weak(millis), - }), - be_str_weak(read_sensors_scheduler), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x1C040302, // 0006 EQ R1 R1 K2 - 0x74060004, // 0007 JMPT R1 #000D - 0xB8060600, // 0008 GETNGBL R1 K3 - 0x8C040304, // 0009 GETMET R1 R1 K4 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x7C040400, // 000B CALL R1 2 - 0x78060006, // 000C JMPF R1 #0014 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0xB8060600, // 000F GETNGBL R1 K3 - 0x8C040306, // 0010 GETMET R1 R1 K6 - 0x880C0100, // 0011 GETMBR R3 R0 K0 - 0x7C040400, // 0012 CALL R1 2 - 0x90020201, // 0013 SETMBR R0 K1 R1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_read_sensors_schedule -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(jitter), - }), - be_str_weak(add_read_sensors_schedule), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x740A0002, // 0003 JMPT R2 #0007 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x24080401, // 0005 GT R2 R2 R1 - 0x780A0005, // 0006 JMPF R2 #000D - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x8C080503, // 0009 GETMET R2 R2 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x90020202, // 000C SETMBR R0 K1 R2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery_deferred -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_discovery), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_operational_discovery_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_active_endpoints -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins), - /* K1 */ be_nested_str_weak(get_endpoint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_active_endpoints), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020011, // 0005 EXBLK 0 #0018 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140901, // 0008 GETMET R5 R4 K1 - 0x7C140200, // 0009 CALL R5 1 - 0x78060002, // 000A JMPF R1 #000E - 0x1C180B02, // 000B EQ R6 R5 K2 - 0x781A0000, // 000C JMPF R6 #000E - 0x7001FFF7, // 000D JMP #0006 - 0x8C180503, // 000E GETMET R6 R2 K3 - 0x5C200A00, // 000F MOVE R8 R5 - 0x7C180400, // 0010 CALL R6 2 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x781A0002, // 0013 JMPF R6 #0017 - 0x8C180504, // 0014 GETMET R6 R2 K4 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x7C180400, // 0016 CALL R6 2 - 0x7001FFED, // 0017 JMP #0006 - 0x580C0005, // 0018 LDCONST R3 K5 - 0xAC0C0200, // 0019 CATCH R3 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x80040400, // 001B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_invoke_request, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(invoke_request), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0x88140701, // 0001 GETMBR R5 R3 K1 - 0x6018000C, // 0002 GETGBL R6 G12 - 0x881C0102, // 0003 GETMBR R7 R0 K2 - 0x7C180200, // 0004 CALL R6 1 - 0x14180806, // 0005 LT R6 R4 R6 - 0x781A000C, // 0006 JMPF R6 #0014 - 0x88180102, // 0007 GETMBR R6 R0 K2 - 0x94180C04, // 0008 GETIDX R6 R6 R4 - 0x881C0D01, // 0009 GETMBR R7 R6 K1 - 0x1C1C0E05, // 000A EQ R7 R7 R5 - 0x781E0005, // 000B JMPF R7 #0012 - 0x8C1C0D03, // 000C GETMET R7 R6 K3 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280400, // 000E MOVE R10 R2 - 0x5C2C0600, // 000F MOVE R11 R3 - 0x7C1C0800, // 0010 CALL R7 4 - 0x80040E00, // 0011 RET 1 R7 - 0x00100904, // 0012 ADD R4 R4 K4 - 0x7001FFED, // 0013 JMP #0002 - 0xB81A0C00, // 0014 GETNGBL R6 K6 - 0x88180D07, // 0015 GETMBR R6 R6 K7 - 0x900E0A06, // 0016 SETMBR R3 K5 R6 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _instantiate_plugins_from_config -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ - be_nested_proto( - 17, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l_num), - /* K1 */ be_nested_str_weak(plugins), + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Plugin_Root), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), - /* K10 */ be_nested_str_weak(root), - /* K11 */ be_nested_str_weak(), - /* K12 */ be_nested_str_weak(Plugin_Aggregator), - /* K13 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K14 */ be_nested_str_weak(aggregator), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(type), - /* K17 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), - /* K20 */ be_nested_str_weak(plugins_classes), - /* K21 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K22 */ be_nested_str_weak(_X27_X20skipping), - /* K23 */ be_nested_str_weak(conf_to_log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_nested_str_weak(stop_iteration), - /* K27 */ be_nested_str_weak(tasmota), - /* K28 */ be_nested_str_weak(publish_result), - /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), - /* K30 */ be_nested_str_weak(Matter), }), - be_str_weak(_instantiate_plugins_from_config), + be_str_weak(k2l_num), &be_const_str_solidified, - ( &(const binstruction[146]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0xB8160600, // 0005 GETNGBL R5 K3 - 0x8C140B04, // 0006 GETMET R5 R5 K4 - 0x5C1C0000, // 0007 MOVE R7 R0 - 0x58200005, // 0008 LDCONST R8 K5 - 0x60240013, // 0009 GETGBL R9 G19 - 0x7C240000, // 000A CALL R9 0 - 0x7C140800, // 000B CALL R5 4 - 0x7C0C0400, // 000C CALL R3 2 - 0xB80E0C00, // 000D GETNGBL R3 K6 - 0x58100007, // 000E LDCONST R4 K7 - 0x58140008, // 000F LDCONST R5 K8 - 0x7C0C0400, // 0010 CALL R3 2 - 0xB80E0C00, // 0011 GETNGBL R3 K6 - 0x60100018, // 0012 GETGBL R4 G24 - 0x58140009, // 0013 LDCONST R5 K9 - 0x58180005, // 0014 LDCONST R6 K5 - 0x581C000A, // 0015 LDCONST R7 K10 - 0x5820000B, // 0016 LDCONST R8 K11 - 0x7C100800, // 0017 CALL R4 4 - 0x58140008, // 0018 LDCONST R5 K8 - 0x7C0C0400, // 0019 CALL R3 2 - 0x880C0101, // 001A GETMBR R3 R0 K1 - 0x8C0C0702, // 001B GETMET R3 R3 K2 - 0xB8160600, // 001C GETNGBL R5 K3 - 0x8C140B0C, // 001D GETMET R5 R5 K12 - 0x5C1C0000, // 001E MOVE R7 R0 - 0xB8220600, // 001F GETNGBL R8 K3 - 0x8820110D, // 0020 GETMBR R8 R8 K13 - 0x60240013, // 0021 GETGBL R9 G19 - 0x7C240000, // 0022 CALL R9 0 - 0x7C140800, // 0023 CALL R5 4 - 0x7C0C0400, // 0024 CALL R3 2 - 0xB80E0C00, // 0025 GETNGBL R3 K6 - 0x60100018, // 0026 GETGBL R4 G24 - 0x58140009, // 0027 LDCONST R5 K9 - 0xB81A0600, // 0028 GETNGBL R6 K3 - 0x88180D0D, // 0029 GETMBR R6 R6 K13 - 0x581C000E, // 002A LDCONST R7 K14 - 0x5820000B, // 002B LDCONST R8 K11 - 0x7C100800, // 002C CALL R4 4 - 0x58140008, // 002D LDCONST R5 K8 - 0x7C0C0400, // 002E CALL R3 2 - 0x600C0010, // 002F GETGBL R3 G16 - 0x5C100400, // 0030 MOVE R4 R2 - 0x7C0C0200, // 0031 CALL R3 1 - 0xA8020055, // 0032 EXBLK 0 #0089 - 0x5C100600, // 0033 MOVE R4 R3 - 0x7C100000, // 0034 CALL R4 0 - 0x1C140905, // 0035 EQ R5 R4 K5 - 0x78160000, // 0036 JMPF R5 #0038 - 0x7001FFFA, // 0037 JMP #0033 - 0xA802003E, // 0038 EXBLK 0 #0078 - 0x60140008, // 0039 GETGBL R5 G8 - 0x5C180800, // 003A MOVE R6 R4 - 0x7C140200, // 003B CALL R5 1 - 0x94140205, // 003C GETIDX R5 R1 R5 - 0x8C180B0F, // 003D GETMET R6 R5 K15 - 0x58200010, // 003E LDCONST R8 K16 - 0x7C180400, // 003F CALL R6 2 - 0x4C1C0000, // 0040 LDNIL R7 - 0x1C1C0C07, // 0041 EQ R7 R6 R7 - 0x781E0005, // 0042 JMPF R7 #0049 - 0xB81E0C00, // 0043 GETNGBL R7 K6 - 0x58200011, // 0044 LDCONST R8 K17 - 0x58240012, // 0045 LDCONST R9 K18 - 0x7C1C0400, // 0046 CALL R7 2 - 0xA8040001, // 0047 EXBLK 1 1 - 0x7001FFE9, // 0048 JMP #0033 - 0x1C1C0D0A, // 0049 EQ R7 R6 K10 - 0x781E0005, // 004A JMPF R7 #0051 - 0xB81E0C00, // 004B GETNGBL R7 K6 - 0x58200013, // 004C LDCONST R8 K19 - 0x58240012, // 004D LDCONST R9 K18 - 0x7C1C0400, // 004E CALL R7 2 - 0xA8040001, // 004F EXBLK 1 1 - 0x7001FFE1, // 0050 JMP #0033 - 0x881C0114, // 0051 GETMBR R7 R0 K20 - 0x8C1C0F0F, // 0052 GETMET R7 R7 K15 - 0x5C240C00, // 0053 MOVE R9 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x4C200000, // 0055 LDNIL R8 - 0x1C200E08, // 0056 EQ R8 R7 R8 - 0x78220009, // 0057 JMPF R8 #0062 - 0xB8220C00, // 0058 GETNGBL R8 K6 - 0x60240008, // 0059 GETGBL R9 G8 - 0x5C280C00, // 005A MOVE R10 R6 - 0x7C240200, // 005B CALL R9 1 - 0x00262A09, // 005C ADD R9 K21 R9 - 0x00241316, // 005D ADD R9 R9 K22 - 0x58280008, // 005E LDCONST R10 K8 - 0x7C200400, // 005F CALL R8 2 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7001FFD0, // 0061 JMP #0033 - 0x5C200E00, // 0062 MOVE R8 R7 - 0x5C240000, // 0063 MOVE R9 R0 - 0x5C280800, // 0064 MOVE R10 R4 - 0x5C2C0A00, // 0065 MOVE R11 R5 - 0x7C200600, // 0066 CALL R8 3 - 0x88240101, // 0067 GETMBR R9 R0 K1 - 0x8C241302, // 0068 GETMET R9 R9 K2 - 0x5C2C1000, // 0069 MOVE R11 R8 - 0x7C240400, // 006A CALL R9 2 - 0xB8260C00, // 006B GETNGBL R9 K6 - 0x60280018, // 006C GETGBL R10 G24 - 0x582C0009, // 006D LDCONST R11 K9 - 0x5C300800, // 006E MOVE R12 R4 - 0x5C340C00, // 006F MOVE R13 R6 - 0x8C380117, // 0070 GETMET R14 R0 K23 - 0x5C400A00, // 0071 MOVE R16 R5 - 0x7C380400, // 0072 CALL R14 2 - 0x7C280800, // 0073 CALL R10 4 - 0x582C0008, // 0074 LDCONST R11 K8 - 0x7C240400, // 0075 CALL R9 2 - 0xA8040001, // 0076 EXBLK 1 1 - 0x7002000F, // 0077 JMP #0088 - 0xAC140002, // 0078 CATCH R5 0 2 - 0x7002000C, // 0079 JMP #0087 - 0xB81E0C00, // 007A GETNGBL R7 K6 - 0x60200008, // 007B GETGBL R8 G8 - 0x5C240A00, // 007C MOVE R9 R5 - 0x7C200200, // 007D CALL R8 1 - 0x00223008, // 007E ADD R8 K24 R8 - 0x00201119, // 007F ADD R8 R8 K25 - 0x60240008, // 0080 GETGBL R9 G8 - 0x5C280C00, // 0081 MOVE R10 R6 - 0x7C240200, // 0082 CALL R9 1 - 0x00201009, // 0083 ADD R8 R8 R9 - 0x58240008, // 0084 LDCONST R9 K8 - 0x7C1C0400, // 0085 CALL R7 2 - 0x70020000, // 0086 JMP #0088 - 0xB0080000, // 0087 RAISE 2 R0 R0 - 0x7001FFA9, // 0088 JMP #0033 - 0x580C001A, // 0089 LDCONST R3 K26 - 0xAC0C0200, // 008A CATCH R3 1 0 - 0xB0080000, // 008B RAISE 2 R0 R0 - 0xB80E3600, // 008C GETNGBL R3 K27 - 0x8C0C071C, // 008D GETMET R3 R3 K28 - 0x5814001D, // 008E LDCONST R5 K29 - 0x5818001E, // 008F LDCONST R6 K30 - 0x7C0C0600, // 0090 CALL R3 3 - 0x80000000, // 0091 RET 0 + ( &(const binstruction[52]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020007, // 000B EXBLK 0 #0014 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x601C0009, // 000F GETGBL R7 G9 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C1C0200, // 0011 CALL R7 1 + 0x7C140400, // 0012 CALL R5 2 + 0x7001FFF7, // 0013 JMP #000C + 0x580C0003, // 0014 LDCONST R3 K3 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x600C0010, // 0017 GETGBL R3 G16 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x5C140400, // 0019 MOVE R5 R2 + 0x7C100200, // 001A CALL R4 1 + 0x04100904, // 001B SUB R4 R4 K4 + 0x40120804, // 001C CONNECT R4 K4 R4 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x94140404, // 0021 GETIDX R5 R2 R4 + 0x5C180800, // 0022 MOVE R6 R4 + 0x241C0D05, // 0023 GT R7 R6 K5 + 0x781E0008, // 0024 JMPF R7 #002E + 0x041C0D04, // 0025 SUB R7 R6 K4 + 0x941C0407, // 0026 GETIDX R7 R2 R7 + 0x241C0E05, // 0027 GT R7 R7 R5 + 0x781E0004, // 0028 JMPF R7 #002E + 0x041C0D04, // 0029 SUB R7 R6 K4 + 0x941C0407, // 002A GETIDX R7 R2 R7 + 0x98080C07, // 002B SETIDX R2 R6 R7 + 0x04180D04, // 002C SUB R6 R6 K4 + 0x7001FFF4, // 002D JMP #0023 + 0x98080C05, // 002E SETIDX R2 R6 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0003, // 0030 LDCONST R3 K3 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x80040400, // 0033 RET 1 R2 }) ) ); @@ -782,12 +148,12 @@ be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name /******************************************************************** -** Solidified function: start_operational_discovery +** Solidified function: remove_fabric ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ +be_local_closure(class_Matter_Device_remove_fabric, /* name */ be_nested_proto( - 7, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -795,23 +161,58 @@ be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(mdns), - /* K2 */ be_nested_str_weak(stop_basic_commissioning), - /* K3 */ be_nested_str_weak(mdns_announce_op_discovery), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(log), + /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), + /* K2 */ be_nested_str_weak(get_fabric_id), + /* K3 */ be_nested_str_weak(copy), + /* K4 */ be_nested_str_weak(reverse), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(message_handler), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(subs_shop), + /* K10 */ be_nested_str_weak(remove_by_fabric), + /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(remove_fabric), + /* K14 */ be_nested_str_weak(save_fabrics), }), - be_str_weak(start_operational_discovery), + be_str_weak(remove_fabric), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100103, // 0004 GETMET R4 R0 K3 - 0x5C180200, // 0005 MOVE R6 R1 - 0x7C100400, // 0006 CALL R4 2 - 0x80000000, // 0007 RET 0 + ( &(const binstruction[32]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0018, // 0002 JMPF R2 #001C + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x8C0C0302, // 0004 GETMET R3 R1 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x7C0C0200, // 000B CALL R3 1 + 0x000E0203, // 000C ADD R3 K1 R3 + 0x58100006, // 000D LDCONST R4 K6 + 0x7C080400, // 000E CALL R2 2 + 0x88080107, // 000F GETMBR R2 R0 K7 + 0x88080508, // 0010 GETMBR R2 R2 K8 + 0x88080509, // 0011 GETMBR R2 R2 K9 + 0x8C08050A, // 0012 GETMET R2 R2 K10 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x8C08010B, // 0015 GETMET R2 R0 K11 + 0x5C100200, // 0016 MOVE R4 R1 + 0x7C080400, // 0017 CALL R2 2 + 0x8808010C, // 0018 GETMBR R2 R0 K12 + 0x8C08050D, // 0019 GETMET R2 R2 K13 + 0x5C100200, // 001A MOVE R4 R1 + 0x7C080400, // 001B CALL R2 2 + 0x8808010C, // 001C GETMBR R2 R0 K12 + 0x8C08050E, // 001D GETMET R2 R2 K14 + 0x7C080200, // 001E CALL R2 1 + 0x80000000, // 001F RET 0 }) ) ); @@ -1015,813 +416,10 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ /******************************************************************** -** Solidified function: bridge_remove_endpoint +** Solidified function: save_before_restart ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins_config), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(plugins_persist), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(get_endpoint), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(clean_remotes), - /* K15 */ be_nested_str_weak(save_param), - /* K16 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_remove_endpoint), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C0008, // 0001 GETGBL R3 G8 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x4C140000, // 0005 LDNIL R5 - 0x88180101, // 0006 GETMBR R6 R0 K1 - 0x8C180D02, // 0007 GETMET R6 R6 K2 - 0x5C200600, // 0008 MOVE R8 R3 - 0x7C180400, // 0009 CALL R6 2 - 0x741A0004, // 000A JMPT R6 #0010 - 0xB81A0600, // 000B GETNGBL R6 K3 - 0x001E0803, // 000C ADD R7 K4 R3 - 0x58200005, // 000D LDCONST R8 K5 - 0x7C180400, // 000E CALL R6 2 - 0x80000C00, // 000F RET 0 - 0xB81A0600, // 0010 GETNGBL R6 K3 - 0x601C0018, // 0011 GETGBL R7 G24 - 0x58200006, // 0012 LDCONST R8 K6 - 0x5C240200, // 0013 MOVE R9 R1 - 0x7C1C0400, // 0014 CALL R7 2 - 0x58200007, // 0015 LDCONST R8 K7 - 0x7C180400, // 0016 CALL R6 2 - 0x88180101, // 0017 GETMBR R6 R0 K1 - 0x8C180D08, // 0018 GETMET R6 R6 K8 - 0x5C200600, // 0019 MOVE R8 R3 - 0x7C180400, // 001A CALL R6 2 - 0x50180200, // 001B LDBOOL R6 1 0 - 0x90021206, // 001C SETMBR R0 K9 R6 - 0x5818000A, // 001D LDCONST R6 K10 - 0x601C000C, // 001E GETGBL R7 G12 - 0x8820010B, // 001F GETMBR R8 R0 K11 - 0x7C1C0200, // 0020 CALL R7 1 - 0x141C0C07, // 0021 LT R7 R6 R7 - 0x781E000D, // 0022 JMPF R7 #0031 - 0x881C010B, // 0023 GETMBR R7 R0 K11 - 0x941C0E06, // 0024 GETIDX R7 R7 R6 - 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 - 0x7C1C0200, // 0026 CALL R7 1 - 0x1C1C0207, // 0027 EQ R7 R1 R7 - 0x781E0005, // 0028 JMPF R7 #002F - 0x881C010B, // 0029 GETMBR R7 R0 K11 - 0x8C1C0F08, // 002A GETMET R7 R7 K8 - 0x5C240C00, // 002B MOVE R9 R6 - 0x7C1C0400, // 002C CALL R7 2 - 0x70020002, // 002D JMP #0031 - 0x70020000, // 002E JMP #0030 - 0x00180D0D, // 002F ADD R6 R6 K13 - 0x7001FFEC, // 0030 JMP #001E - 0x8C1C010E, // 0031 GETMET R7 R0 K14 - 0x7C1C0200, // 0032 CALL R7 1 - 0x8C1C010F, // 0033 GETMET R7 R0 K15 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0110, // 0035 GETMET R7 R0 K16 - 0x7C1C0200, // 0036 CALL R7 1 - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_mdns_announce_hostnames -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080200, // 0002 LDBOOL R2 1 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(wifi), - /* K2 */ be_nested_str_weak(up), - /* K3 */ be_nested_str_weak(_mdns_announce_hostname), - /* K4 */ be_nested_str_weak(add_rule), - /* K5 */ be_nested_str_weak(Wifi_X23Connected), - /* K6 */ be_nested_str_weak(matter_mdns_host), - /* K7 */ be_nested_str_weak(eth), - /* K8 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_mdns_announce_hostnames), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x94040302, // 0003 GETIDX R1 R1 K2 - 0x78060003, // 0004 JMPF R1 #0009 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x7C040400, // 0007 CALL R1 2 - 0x70020005, // 0008 JMP #000F - 0xB8060000, // 0009 GETNGBL R1 K0 - 0x8C040304, // 000A GETMET R1 R1 K4 - 0x580C0005, // 000B LDCONST R3 K5 - 0x84100000, // 000C CLOSURE R4 P0 - 0x58140006, // 000D LDCONST R5 K6 - 0x7C040800, // 000E CALL R1 4 - 0xB8060000, // 000F GETNGBL R1 K0 - 0x8C040307, // 0010 GETMET R1 R1 K7 - 0x7C040200, // 0011 CALL R1 1 - 0x94040302, // 0012 GETIDX R1 R1 K2 - 0x78060003, // 0013 JMPF R1 #0018 - 0x8C040103, // 0014 GETMET R1 R0 K3 - 0x500C0200, // 0015 LDBOOL R3 1 0 - 0x7C040400, // 0016 CALL R1 2 - 0x70020005, // 0017 JMP #001E - 0xB8060000, // 0018 GETNGBL R1 K0 - 0x8C040304, // 0019 GETMET R1 R1 K4 - 0x580C0008, // 001A LDCONST R3 K8 - 0x84100001, // 001B CLOSURE R4 P1 - 0x58140006, // 001C LDCONST R5 K6 - 0x7C040800, // 001D CALL R1 4 - 0xA0000000, // 001E CLOSE R0 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _start_udp -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__start_udp, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_received), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(UDPServer), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(start), - }), - be_str_weak(_start_udp), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x600C0008, // 0008 GETGBL R3 G8 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C0C0200, // 000A CALL R3 1 - 0x000E0403, // 000B ADD R3 K2 R3 - 0x58100003, // 000C LDCONST R4 K3 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x8C080505, // 000F GETMET R2 R2 K5 - 0x5C100000, // 0010 MOVE R4 R0 - 0x58140006, // 0011 LDCONST R5 K6 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C080800, // 0013 CALL R2 4 - 0x90020002, // 0014 SETMBR R0 K0 R2 - 0x88080100, // 0015 GETMBR R2 R0 K0 - 0x8C080507, // 0016 GETMET R2 R2 K7 - 0x84100000, // 0017 CLOSURE R4 P0 - 0x7C080400, // 0018 CALL R2 2 - 0xA0000000, // 0019 CLOSE R0 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: signal_endpoints_changed -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - }), - be_str_weak(signal_endpoints_changed), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x5412001C, // 0002 LDINT R4 29 - 0x58140002, // 0003 LDCONST R5 K2 - 0x50180000, // 0004 LDBOOL R6 0 0 - 0x7C040A00, // 0005 CALL R1 5 - 0x8C040100, // 0006 GETMET R1 R0 K0 - 0xB80E0600, // 0007 GETNGBL R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x5412001C, // 0009 LDINT R4 29 - 0x58140002, // 000A LDCONST R5 K2 - 0x50180000, // 000B LDBOOL R6 0 0 - 0x7C040A00, // 000C CALL R1 5 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sort_distinct -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_sort_distinct, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(remove), - }), - be_str_weak(sort_distinct), - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020010, // 0008 EXBLK 0 #001A - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x24180C04, // 0011 GT R6 R6 R4 - 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B01, // 0013 SUB R6 R5 K1 - 0x94180006, // 0014 GETIDX R6 R0 R6 - 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B01, // 0016 SUB R5 R5 K1 - 0x7001FFF4, // 0017 JMP #000D - 0x98000A04, // 0018 SETIDX R0 R5 R4 - 0x7001FFEE, // 0019 JMP #0009 - 0x58080003, // 001A LDCONST R2 K3 - 0xAC080200, // 001B CATCH R2 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x58080001, // 001D LDCONST R2 K1 - 0x600C000C, // 001E GETGBL R3 G12 - 0x5C100000, // 001F MOVE R4 R0 - 0x7C0C0200, // 0020 CALL R3 1 - 0x180C0701, // 0021 LE R3 R3 K1 - 0x780E0000, // 0022 JMPF R3 #0024 - 0x80040000, // 0023 RET 1 R0 - 0x940C0102, // 0024 GETIDX R3 R0 K2 - 0x6010000C, // 0025 GETGBL R4 G12 - 0x5C140000, // 0026 MOVE R5 R0 - 0x7C100200, // 0027 CALL R4 1 - 0x14100404, // 0028 LT R4 R2 R4 - 0x78120009, // 0029 JMPF R4 #0034 - 0x94100002, // 002A GETIDX R4 R0 R2 - 0x1C100803, // 002B EQ R4 R4 R3 - 0x78120003, // 002C JMPF R4 #0031 - 0x8C100104, // 002D GETMET R4 R0 K4 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x70020001, // 0030 JMP #0033 - 0x940C0002, // 0031 GETIDX R3 R0 R2 - 0x00080501, // 0032 ADD R2 R2 K1 - 0x7001FFF0, // 0033 JMP #0025 - 0x80040000, // 0034 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery_all_fabrics -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_remove_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: received_ack -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_received_ack, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(received_ack), - }), - be_str_weak(received_ack), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve_attribute_read_solo -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K7 */ be_nested_str_weak(contains_cluster), - /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K9 */ be_nested_str_weak(contains_attribute), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), - be_str_weak(resolve_attribute_read_solo), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 - 0x4C140000, // 0003 LDNIL R5 - 0x1C140405, // 0004 EQ R5 R2 R5 - 0x74160005, // 0005 JMPT R5 #000C - 0x4C140000, // 0006 LDNIL R5 - 0x1C140605, // 0007 EQ R5 R3 R5 - 0x74160002, // 0008 JMPT R5 #000C - 0x4C140000, // 0009 LDNIL R5 - 0x1C140805, // 000A EQ R5 R4 R5 - 0x78160001, // 000B JMPF R5 #000E - 0x4C140000, // 000C LDNIL R5 - 0x80040A00, // 000D RET 1 R5 - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x5C1C0400, // 000F MOVE R7 R2 - 0x7C140400, // 0010 CALL R5 2 - 0x4C180000, // 0011 LDNIL R6 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0xB81A0A00, // 0014 GETNGBL R6 K5 - 0x88180D06, // 0015 GETMBR R6 R6 K6 - 0x90060806, // 0016 SETMBR R1 K4 R6 - 0x4C180000, // 0017 LDNIL R6 - 0x80040C00, // 0018 RET 1 R6 - 0x70020013, // 0019 JMP #002E - 0x8C180B07, // 001A GETMET R6 R5 K7 - 0x5C200600, // 001B MOVE R8 R3 - 0x7C180400, // 001C CALL R6 2 - 0x741A0005, // 001D JMPT R6 #0024 - 0xB81A0A00, // 001E GETNGBL R6 K5 - 0x88180D08, // 001F GETMBR R6 R6 K8 - 0x90060806, // 0020 SETMBR R1 K4 R6 - 0x4C180000, // 0021 LDNIL R6 - 0x80040C00, // 0022 RET 1 R6 - 0x70020009, // 0023 JMP #002E - 0x8C180B09, // 0024 GETMET R6 R5 K9 - 0x5C200600, // 0025 MOVE R8 R3 - 0x5C240800, // 0026 MOVE R9 R4 - 0x7C180600, // 0027 CALL R6 3 - 0x741A0004, // 0028 JMPT R6 #002E - 0xB81A0A00, // 0029 GETNGBL R6 K5 - 0x88180D0A, // 002A GETMBR R6 R6 K10 - 0x90060806, // 002B SETMBR R1 K4 R6 - 0x4C180000, // 002C LDNIL R6 - 0x80040C00, // 002D RET 1 R6 - 0x80040A00, // 002E RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_http_remote -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_register_http_remote, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(get_timeout), - /* K3 */ be_nested_str_weak(set_timeout), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(HTTP_remote), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(set_info), - }), - be_str_weak(register_http_remote), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x600C0013, // 0004 GETGBL R3 G19 - 0x7C0C0000, // 0005 CALL R3 0 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x8C100901, // 0009 GETMET R4 R4 K1 - 0x5C180200, // 000A MOVE R6 R1 - 0x7C100400, // 000B CALL R4 2 - 0x78120009, // 000C JMPF R4 #0017 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x940C0801, // 000E GETIDX R3 R4 R1 - 0x8C140702, // 000F GETMET R5 R3 K2 - 0x7C140200, // 0010 CALL R5 1 - 0x14140405, // 0011 LT R5 R2 R5 - 0x78160002, // 0012 JMPF R5 #0016 - 0x8C140703, // 0013 GETMET R5 R3 K3 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C140400, // 0015 CALL R5 2 - 0x70020011, // 0016 JMP #0029 - 0xB8120800, // 0017 GETNGBL R4 K4 - 0x8C100905, // 0018 GETMET R4 R4 K5 - 0x5C180000, // 0019 MOVE R6 R0 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x5C200400, // 001B MOVE R8 R2 - 0x7C100800, // 001C CALL R4 4 - 0x5C0C0800, // 001D MOVE R3 R4 - 0x88100106, // 001E GETMBR R4 R0 K6 - 0x8C100901, // 001F GETMET R4 R4 K1 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100707, // 0023 GETMET R4 R3 K7 - 0x88180106, // 0024 GETMBR R6 R0 K6 - 0x94180C01, // 0025 GETIDX R6 R6 R1 - 0x7C100400, // 0026 CALL R4 2 - 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x98100203, // 0028 SETIDX R4 R1 R3 - 0x80040600, // 0029 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_add_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K4 */ be_nested_str_weak(_X27_X20skipping), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(next_ep), - /* K7 */ be_nested_str_weak(plugins), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(type), - /* K10 */ be_nested_str_weak(keys), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K13 */ be_nested_str_weak(conf_to_log), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_persist), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(save_param), - /* K19 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_add_endpoint), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120008, // 0006 JMPF R4 #0010 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x60140008, // 0008 GETGBL R5 G8 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C140200, // 000A CALL R5 1 - 0x00160605, // 000B ADD R5 K3 R5 - 0x00140B04, // 000C ADD R5 R5 K4 - 0x58180005, // 000D LDCONST R6 K5 - 0x7C100400, // 000E CALL R4 2 - 0x80000800, // 000F RET 0 - 0x88100106, // 0010 GETMBR R4 R0 K6 - 0x60140008, // 0011 GETGBL R5 G8 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x5C180600, // 0014 MOVE R6 R3 - 0x5C1C0000, // 0015 MOVE R7 R0 - 0x5C200800, // 0016 MOVE R8 R4 - 0x5C240400, // 0017 MOVE R9 R2 - 0x7C180600, // 0018 CALL R6 3 - 0x881C0107, // 0019 GETMBR R7 R0 K7 - 0x8C1C0F08, // 001A GETMET R7 R7 K8 - 0x5C240C00, // 001B MOVE R9 R6 - 0x7C1C0400, // 001C CALL R7 2 - 0x601C0013, // 001D GETGBL R7 G19 - 0x7C1C0000, // 001E CALL R7 0 - 0x981E1201, // 001F SETIDX R7 K9 R1 - 0x60200010, // 0020 GETGBL R8 G16 - 0x8C24050A, // 0021 GETMET R9 R2 K10 - 0x7C240200, // 0022 CALL R9 1 - 0x7C200200, // 0023 CALL R8 1 - 0xA8020004, // 0024 EXBLK 0 #002A - 0x5C241000, // 0025 MOVE R9 R8 - 0x7C240000, // 0026 CALL R9 0 - 0x94280409, // 0027 GETIDX R10 R2 R9 - 0x981C120A, // 0028 SETIDX R7 R9 R10 - 0x7001FFFA, // 0029 JMP #0025 - 0x5820000B, // 002A LDCONST R8 K11 - 0xAC200200, // 002B CATCH R8 1 0 - 0xB0080000, // 002C RAISE 2 R0 R0 - 0xB8220400, // 002D GETNGBL R8 K2 - 0x60240018, // 002E GETGBL R9 G24 - 0x5828000C, // 002F LDCONST R10 K12 - 0x5C2C0800, // 0030 MOVE R11 R4 - 0x5C300200, // 0031 MOVE R12 R1 - 0x8C34010D, // 0032 GETMET R13 R0 K13 - 0x5C3C0400, // 0033 MOVE R15 R2 - 0x7C340400, // 0034 CALL R13 2 - 0x7C240800, // 0035 CALL R9 4 - 0x5828000E, // 0036 LDCONST R10 K14 - 0x7C200400, // 0037 CALL R8 2 - 0x8820010F, // 0038 GETMBR R8 R0 K15 - 0x98200A07, // 0039 SETIDX R8 R5 R7 - 0x50200200, // 003A LDBOOL R8 1 0 - 0x90022008, // 003B SETMBR R0 K16 R8 - 0x88200106, // 003C GETMBR R8 R0 K6 - 0x00201111, // 003D ADD R8 R8 K17 - 0x90020C08, // 003E SETMBR R0 K6 R8 - 0x8C200112, // 003F GETMET R8 R0 K18 - 0x7C200200, // 0040 CALL R8 1 - 0x8C200113, // 0041 GETMET R8 R0 K19 - 0x7C200200, // 0042 CALL R8 1 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_root_commissioning_open -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ +be_local_closure(class_Matter_Device_save_before_restart, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -1832,23 +430,17 @@ be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(commissioning_admin_fabric), + /* K0 */ be_nested_str_weak(stop_basic_commissioning), + /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), }), - be_str_weak(is_root_commissioning_open), + be_str_weak(save_before_restart), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060003, // 0003 JMPF R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x74060000, // 0007 JMPT R1 #0009 - 0x50040001, // 0008 LDBOOL R1 0 1 - 0x50040200, // 0009 LDBOOL R1 1 0 - 0x80040200, // 000A RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x80000000, // 0004 RET 0 }) ) ); @@ -1856,12 +448,12 @@ be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ /******************************************************************** -** Solidified function: load_param +** Solidified function: every_second ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_load_param, /* name */ +be_local_closure(class_Matter_Device_every_second, /* name */ be_nested_proto( - 12, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1869,180 +461,39 @@ be_local_closure(class_Matter_Device_load_param, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(FILENAME), - /* K2 */ be_nested_str_weak(read), - /* K3 */ be_nested_str_weak(close), - /* K4 */ be_nested_str_weak(json), - /* K5 */ be_nested_str_weak(load), - /* K6 */ be_nested_str_weak(root_discriminator), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(distinguish), - /* K9 */ be_nested_str_weak(root_passcode), - /* K10 */ be_nested_str_weak(passcode), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(disable_bridge_mode), - /* K13 */ be_nested_str_weak(next_ep), - /* K14 */ be_nested_str_weak(nextep), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(config), - /* K17 */ be_nested_str_weak(debug), - /* K18 */ be_nested_str_weak(log), - /* K19 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(adjust_next_ep), - /* K22 */ be_nested_str_weak(check_config_ep), - /* K23 */ be_nested_str_weak(plugins_persist), - /* K24 */ be_nested_str_weak(plugins_config_remotes), - /* K25 */ be_nested_str_weak(remotes), - /* K26 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), - /* K27 */ be_nested_str_weak(io_error), - /* K28 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), - /* K29 */ be_nested_str_weak(_X7C), - /* K30 */ be_const_int(2), - /* K31 */ be_nested_str_weak(random), - /* K32 */ be_nested_str_weak(get), - /* K33 */ be_const_int(0), - /* K34 */ be_nested_str_weak(generate_random_passcode), - /* K35 */ be_nested_str_weak(save_param), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(every_second), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(events), + /* K4 */ be_nested_str_weak(commissioning_open), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(time_reached), }), - be_str_weak(load_param), + be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x50080000, // 0001 LDBOOL R2 0 0 - 0xA8020054, // 0002 EXBLK 0 #0058 - 0x600C0011, // 0003 GETGBL R3 G17 - 0x88100101, // 0004 GETMBR R4 R0 K1 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C100702, // 0006 GETMET R4 R3 K2 - 0x7C100200, // 0007 CALL R4 1 - 0x8C140703, // 0008 GETMET R5 R3 K3 - 0x7C140200, // 0009 CALL R5 1 - 0xA4160800, // 000A IMPORT R5 K4 - 0x8C180B05, // 000B GETMET R6 R5 K5 - 0x5C200800, // 000C MOVE R8 R4 - 0x7C180400, // 000D CALL R6 2 - 0x8C1C0D07, // 000E GETMET R7 R6 K7 - 0x58240008, // 000F LDCONST R9 K8 - 0x88280106, // 0010 GETMBR R10 R0 K6 - 0x7C1C0600, // 0011 CALL R7 3 - 0x90020C07, // 0012 SETMBR R0 K6 R7 - 0x8C1C0D07, // 0013 GETMET R7 R6 K7 - 0x5824000A, // 0014 LDCONST R9 K10 - 0x88280109, // 0015 GETMBR R10 R0 K9 - 0x7C1C0600, // 0016 CALL R7 3 - 0x90021207, // 0017 SETMBR R0 K9 R7 - 0x601C0017, // 0018 GETGBL R7 G23 - 0x8C200D07, // 0019 GETMET R8 R6 K7 - 0x5828000B, // 001A LDCONST R10 K11 - 0x502C0000, // 001B LDBOOL R11 0 0 - 0x7C200600, // 001C CALL R8 3 - 0x7C1C0200, // 001D CALL R7 1 - 0x90021607, // 001E SETMBR R0 K11 R7 - 0x601C0017, // 001F GETGBL R7 G23 - 0x8C200D07, // 0020 GETMET R8 R6 K7 - 0x5828000C, // 0021 LDCONST R10 K12 - 0x502C0000, // 0022 LDBOOL R11 0 0 - 0x7C200600, // 0023 CALL R8 3 - 0x7C1C0200, // 0024 CALL R7 1 - 0x90021807, // 0025 SETMBR R0 K12 R7 - 0x8C1C0D07, // 0026 GETMET R7 R6 K7 - 0x5824000E, // 0027 LDCONST R9 K14 - 0x8828010D, // 0028 GETMBR R10 R0 K13 - 0x7C1C0600, // 0029 CALL R7 3 - 0x90021A07, // 002A SETMBR R0 K13 R7 - 0x8C1C0D07, // 002B GETMET R7 R6 K7 - 0x58240010, // 002C LDCONST R9 K16 - 0x7C1C0400, // 002D CALL R7 2 - 0x90021E07, // 002E SETMBR R0 K15 R7 - 0x601C0017, // 002F GETGBL R7 G23 - 0x8C200D07, // 0030 GETMET R8 R6 K7 - 0x58280011, // 0031 LDCONST R10 K17 - 0x7C200400, // 0032 CALL R8 2 - 0x7C1C0200, // 0033 CALL R7 1 - 0x90022207, // 0034 SETMBR R0 K17 R7 - 0x881C010F, // 0035 GETMBR R7 R0 K15 - 0x4C200000, // 0036 LDNIL R8 - 0x201C0E08, // 0037 NE R7 R7 R8 - 0x781E000D, // 0038 JMPF R7 #0047 - 0xB81E2400, // 0039 GETNGBL R7 K18 - 0x60200018, // 003A GETGBL R8 G24 - 0x58240013, // 003B LDCONST R9 K19 - 0x8828010F, // 003C GETMBR R10 R0 K15 - 0x7C200400, // 003D CALL R8 2 - 0x58240014, // 003E LDCONST R9 K20 - 0x7C1C0400, // 003F CALL R7 2 - 0x8C1C0115, // 0040 GETMET R7 R0 K21 - 0x7C1C0200, // 0041 CALL R7 1 - 0x8C1C0116, // 0042 GETMET R7 R0 K22 - 0x7C1C0200, // 0043 CALL R7 1 - 0x5C080E00, // 0044 MOVE R2 R7 - 0x501C0200, // 0045 LDBOOL R7 1 0 - 0x90022E07, // 0046 SETMBR R0 K23 R7 - 0x8C1C0D07, // 0047 GETMET R7 R6 K7 - 0x58240019, // 0048 LDCONST R9 K25 - 0x60280013, // 0049 GETGBL R10 G19 - 0x7C280000, // 004A CALL R10 0 - 0x7C1C0600, // 004B CALL R7 3 - 0x90023007, // 004C SETMBR R0 K24 R7 - 0x881C0118, // 004D GETMBR R7 R0 K24 - 0x781E0006, // 004E JMPF R7 #0056 - 0xB81E2400, // 004F GETNGBL R7 K18 - 0x60200008, // 0050 GETGBL R8 G8 - 0x88240118, // 0051 GETMBR R9 R0 K24 - 0x7C200200, // 0052 CALL R8 1 - 0x00223408, // 0053 ADD R8 K26 R8 - 0x58240014, // 0054 LDCONST R9 K20 - 0x7C1C0400, // 0055 CALL R7 2 - 0xA8040001, // 0056 EXBLK 1 1 - 0x70020011, // 0057 JMP #006A - 0xAC0C0002, // 0058 CATCH R3 0 2 - 0x7002000E, // 0059 JMP #0069 - 0x2014071B, // 005A NE R5 R3 K27 - 0x7816000B, // 005B JMPF R5 #0068 - 0xB8162400, // 005C GETNGBL R5 K18 - 0x60180008, // 005D GETGBL R6 G8 - 0x5C1C0600, // 005E MOVE R7 R3 - 0x7C180200, // 005F CALL R6 1 - 0x001A3806, // 0060 ADD R6 K28 R6 - 0x00180D1D, // 0061 ADD R6 R6 K29 - 0x601C0008, // 0062 GETGBL R7 G8 - 0x5C200800, // 0063 MOVE R8 R4 - 0x7C1C0200, // 0064 CALL R7 1 - 0x00180C07, // 0065 ADD R6 R6 R7 - 0x581C001E, // 0066 LDCONST R7 K30 - 0x7C140400, // 0067 CALL R5 2 - 0x70020000, // 0068 JMP #006A - 0xB0080000, // 0069 RAISE 2 R0 R0 - 0x880C0106, // 006A GETMBR R3 R0 K6 - 0x4C100000, // 006B LDNIL R4 - 0x1C0C0604, // 006C EQ R3 R3 R4 - 0x780E000A, // 006D JMPF R3 #0079 - 0x8C0C031F, // 006E GETMET R3 R1 K31 - 0x5814001E, // 006F LDCONST R5 K30 - 0x7C0C0400, // 0070 CALL R3 2 - 0x8C0C0720, // 0071 GETMET R3 R3 K32 - 0x58140021, // 0072 LDCONST R5 K33 - 0x5818001E, // 0073 LDCONST R6 K30 - 0x7C0C0600, // 0074 CALL R3 3 - 0x54120FFE, // 0075 LDINT R4 4095 - 0x2C0C0604, // 0076 AND R3 R3 R4 - 0x90020C03, // 0077 SETMBR R0 K6 R3 - 0x50080200, // 0078 LDBOOL R2 1 0 - 0x880C0109, // 0079 GETMBR R3 R0 K9 - 0x4C100000, // 007A LDNIL R4 - 0x1C0C0604, // 007B EQ R3 R3 R4 - 0x780E0003, // 007C JMPF R3 #0081 - 0x8C0C0122, // 007D GETMET R3 R0 K34 - 0x7C0C0200, // 007E CALL R3 1 - 0x90021203, // 007F SETMBR R0 K9 R3 - 0x50080200, // 0080 LDBOOL R2 1 0 - 0x780A0001, // 0081 JMPF R2 #0084 - 0x8C0C0123, // 0082 GETMET R3 R0 K35 - 0x7C0C0200, // 0083 CALL R3 1 - 0x80000000, // 0084 RET 0 + ( &(const binstruction[21]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x88040103, // 0006 GETMBR R1 R0 K3 + 0x8C040301, // 0007 GETMET R1 R1 K1 + 0x7C040200, // 0008 CALL R1 1 + 0x88040104, // 0009 GETMBR R1 R0 K4 + 0x4C080000, // 000A LDNIL R2 + 0x20040202, // 000B NE R1 R1 R2 + 0x78060006, // 000C JMPF R1 #0014 + 0xB8060A00, // 000D GETNGBL R1 K5 + 0x8C040306, // 000E GETMET R1 R1 K6 + 0x880C0104, // 000F GETMBR R3 R0 K4 + 0x7C040400, // 0010 CALL R1 2 + 0x78060001, // 0011 JMPF R1 #0014 + 0x4C040000, // 0012 LDNIL R1 + 0x90020801, // 0013 SETMBR R0 K4 R1 + 0x80000000, // 0014 RET 0 }) ) ); @@ -2050,12 +501,130 @@ be_local_closure(class_Matter_Device_load_param, /* name */ /******************************************************************** -** Solidified function: start_commissioning_complete +** Solidified function: stop ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ +be_local_closure(class_Matter_Device_stop, /* name */ be_nested_proto( - 10, /* nstack */ + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(remove_driver), + /* K2 */ be_nested_str_weak(udp_server), + /* K3 */ be_nested_str_weak(stop), + }), + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040102, // 0006 GETMBR R1 R0 K2 + 0x8C040303, // 0007 GETMET R1 R1 K3 + 0x7C040200, // 0008 CALL R1 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_250ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(read_sensors_scheduler), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(every_250ms), + /* K4 */ be_const_int(1), + }), + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C0102, // 0004 GETMBR R3 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x14080202, // 0006 LT R2 R1 R2 + 0x780A0005, // 0007 JMPF R2 #000E + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x94080401, // 0009 GETIDX R2 R2 R1 + 0x8C080503, // 000A GETMET R2 R2 K3 + 0x7C080200, // 000B CALL R2 1 + 0x00040304, // 000C ADD R1 R1 K4 + 0x7001FFF4, // 000D JMP #0003 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_received +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_msg_received, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(msg_received), + }), + be_str_weak(msg_received), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_read_sensors_schedule +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ + be_nested_proto( + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2063,44 +632,29 @@ be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric), - /* K1 */ be_nested_str_weak(get_fabric_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(get_admin_vendor_name), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(stop_basic_commissioning), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_sensor_time), + /* K1 */ be_nested_str_weak(probe_sensor_timestamp), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(jitter), }), - be_str_weak(start_commissioning_complete), + be_str_weak(add_read_sensors_schedule), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x8C0C0501, // 0002 GETMET R3 R2 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x7C100200, // 000B CALL R4 1 - 0xB8160C00, // 000C GETNGBL R5 K6 - 0x60180018, // 000D GETGBL R6 G24 - 0x581C0007, // 000E LDCONST R7 K7 - 0x5C200600, // 000F MOVE R8 R3 - 0x5C240800, // 0010 MOVE R9 R4 - 0x7C180600, // 0011 CALL R6 3 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x7C140400, // 0013 CALL R5 2 - 0x8C140109, // 0014 GETMET R5 R0 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x80000000, // 0016 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x740A0002, // 0003 JMPT R2 #0007 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x24080401, // 0005 GT R2 R2 R1 + 0x780A0005, // 0006 JMPF R2 #000D + 0x90020001, // 0007 SETMBR R0 K0 R1 + 0xB80A0400, // 0008 GETNGBL R2 K2 + 0x8C080503, // 0009 GETMET R2 R2 K3 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x90020202, // 000C SETMBR R0 K1 R2 + 0x80000000, // 000D RET 0 }) ) ); @@ -2160,80 +714,265 @@ be_local_closure(class_Matter_Device_attribute_updated, /* name */ /******************************************************************** -** Solidified function: k2l +** Solidified function: invoke_request ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_k2l, /* name */ +be_local_closure(class_Matter_Device_invoke_request, /* name */ be_nested_proto( - 8, /* nstack */ + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(invoke_request), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + }), + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x58100000, // 0000 LDCONST R4 K0 + 0x88140701, // 0001 GETMBR R5 R3 K1 + 0x6018000C, // 0002 GETGBL R6 G12 + 0x881C0102, // 0003 GETMBR R7 R0 K2 + 0x7C180200, // 0004 CALL R6 1 + 0x14180806, // 0005 LT R6 R4 R6 + 0x781A000C, // 0006 JMPF R6 #0014 + 0x88180102, // 0007 GETMBR R6 R0 K2 + 0x94180C04, // 0008 GETIDX R6 R6 R4 + 0x881C0D01, // 0009 GETMBR R7 R6 K1 + 0x1C1C0E05, // 000A EQ R7 R7 R5 + 0x781E0005, // 000B JMPF R7 #0012 + 0x8C1C0D03, // 000C GETMET R7 R6 K3 + 0x5C240200, // 000D MOVE R9 R1 + 0x5C280400, // 000E MOVE R10 R2 + 0x5C2C0600, // 000F MOVE R11 R3 + 0x7C1C0800, // 0010 CALL R7 4 + 0x80040E00, // 0011 RET 1 R7 + 0x00100904, // 0012 ADD R4 R4 K4 + 0x7001FFED, // 0013 JMP #0002 + 0xB81A0C00, // 0014 GETNGBL R6 K6 + 0x88180D07, // 0015 GETMBR R6 R6 K7 + 0x900E0A06, // 0016 SETMBR R3 K5 R6 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_device, /* name */ + be_nested_proto( + 5, /* nstack */ 1, /* argc */ - 4, /* varg */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(plugins_config), + /* K5 */ be_nested_str_weak(autoconf_device_map), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(adjust_next_ep), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), + /* K12 */ be_nested_str_weak(sessions), + /* K13 */ be_nested_str_weak(count_active_fabrics), + /* K14 */ be_nested_str_weak(save_param), + }), + be_str_weak(autoconf_device), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x24080502, // 0004 GT R2 R2 K2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x80000400, // 0006 RET 0 + 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x740A000E, // 0008 JMPT R2 #0018 + 0x8C080105, // 0009 GETMET R2 R0 K5 + 0x7C080200, // 000A CALL R2 1 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0x60080013, // 000C GETGBL R2 G19 + 0x7C080000, // 000D CALL R2 0 + 0x90020C02, // 000E SETMBR R0 K6 R2 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x7C080200, // 0010 CALL R2 1 + 0xB80A1000, // 0011 GETNGBL R2 K8 + 0x600C0008, // 0012 GETGBL R3 G8 + 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x7C0C0200, // 0014 CALL R3 1 + 0x000E1203, // 0015 ADD R3 K9 R3 + 0x5810000A, // 0016 LDCONST R4 K10 + 0x7C080400, // 0017 CALL R2 2 + 0x8C08010B, // 0018 GETMET R2 R0 K11 + 0x88100104, // 0019 GETMBR R4 R0 K4 + 0x7C080400, // 001A CALL R2 2 + 0x88080103, // 001B GETMBR R2 R0 K3 + 0x740A0008, // 001C JMPT R2 #0026 + 0x8808010C, // 001D GETMBR R2 R0 K12 + 0x8C08050D, // 001E GETMET R2 R2 K13 + 0x7C080200, // 001F CALL R2 1 + 0x24080502, // 0020 GT R2 R2 K2 + 0x780A0003, // 0021 JMPF R2 #0026 + 0x50080200, // 0022 LDBOOL R2 1 0 + 0x90020602, // 0023 SETMBR R0 K3 R2 + 0x8C08010E, // 0024 GETMET R2 R0 K14 + 0x7C080200, // 0025 CALL R2 1 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_class_displayname +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(DISPLAY_NAME), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(get_plugin_class_displayname), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_every_50ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(every_50ms), + }), + be_str_weak(every_50ms), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x00040301, // 0001 ADD R1 R1 K1 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040303, // 0004 GETMET R1 R1 K3 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: button_handler +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_button_handler, /* name */ + be_nested_proto( + 14, /* nstack */ + 5, /* argc */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(introspect), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(contains), + /* K4 */ be_nested_str_weak(button_handler), + /* K5 */ be_const_int(1), }), - be_str_weak(k2l), + be_str_weak(button_handler), &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020005, // 000B EXBLK 0 #0012 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x7C140400, // 0010 CALL R5 2 - 0x7001FFF9, // 0011 JMP #000C - 0x580C0003, // 0012 LDCONST R3 K3 - 0xAC0C0200, // 0013 CATCH R3 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x600C0010, // 0015 GETGBL R3 G16 - 0x6010000C, // 0016 GETGBL R4 G12 - 0x5C140400, // 0017 MOVE R5 R2 - 0x7C100200, // 0018 CALL R4 1 - 0x04100904, // 0019 SUB R4 R4 K4 - 0x40120804, // 001A CONNECT R4 K4 R4 - 0x7C0C0200, // 001B CALL R3 1 - 0xA8020010, // 001C EXBLK 0 #002E - 0x5C100600, // 001D MOVE R4 R3 - 0x7C100000, // 001E CALL R4 0 - 0x94140404, // 001F GETIDX R5 R2 R4 - 0x5C180800, // 0020 MOVE R6 R4 - 0x241C0D05, // 0021 GT R7 R6 K5 - 0x781E0008, // 0022 JMPF R7 #002C - 0x041C0D04, // 0023 SUB R7 R6 K4 - 0x941C0407, // 0024 GETIDX R7 R2 R7 - 0x241C0E05, // 0025 GT R7 R7 R5 - 0x781E0004, // 0026 JMPF R7 #002C - 0x041C0D04, // 0027 SUB R7 R6 K4 - 0x941C0407, // 0028 GETIDX R7 R2 R7 - 0x98080C07, // 0029 SETIDX R2 R6 R7 - 0x04180D04, // 002A SUB R6 R6 K4 - 0x7001FFF4, // 002B JMP #0021 - 0x98080C05, // 002C SETIDX R2 R6 R5 - 0x7001FFEE, // 002D JMP #001D - 0x580C0003, // 002E LDCONST R3 K3 - 0xAC0C0200, // 002F CATCH R3 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0x80040400, // 0031 RET 1 R2 + ( &(const binstruction[25]) { /* code */ + 0x58140000, // 0000 LDCONST R5 K0 + 0xA41A0200, // 0001 IMPORT R6 K1 + 0x601C000C, // 0002 GETGBL R7 G12 + 0x88200102, // 0003 GETMBR R8 R0 K2 + 0x7C1C0200, // 0004 CALL R7 1 + 0x141C0A07, // 0005 LT R7 R5 R7 + 0x781E0010, // 0006 JMPF R7 #0018 + 0x881C0102, // 0007 GETMBR R7 R0 K2 + 0x941C0E05, // 0008 GETIDX R7 R7 R5 + 0x8C200D03, // 0009 GETMET R8 R6 K3 + 0x5C280E00, // 000A MOVE R10 R7 + 0x582C0004, // 000B LDCONST R11 K4 + 0x7C200600, // 000C CALL R8 3 + 0x78220007, // 000D JMPF R8 #0016 + 0x88200102, // 000E GETMBR R8 R0 K2 + 0x94201005, // 000F GETIDX R8 R8 R5 + 0x8C201104, // 0010 GETMET R8 R8 K4 + 0x5C280200, // 0011 MOVE R10 R1 + 0x5C2C0400, // 0012 MOVE R11 R2 + 0x5C300600, // 0013 MOVE R12 R3 + 0x5C340800, // 0014 MOVE R13 R4 + 0x7C200A00, // 0015 CALL R8 5 + 0x00140B05, // 0016 ADD R5 R5 K5 + 0x7001FFE9, // 0017 JMP #0002 + 0x80000000, // 0018 RET 0 }) ) ); @@ -2371,12 +1110,12 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ /******************************************************************** -** Solidified function: check_config_ep +** Solidified function: compute_qrcode_content ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_check_config_ep, /* name */ +be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ be_nested_proto( - 10, /* nstack */ + 8, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2384,102 +1123,63 @@ be_local_closure(class_Matter_Device_check_config_ep, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resize), + /* K1 */ be_nested_str_weak(setbits), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(VENDOR_ID), + /* K4 */ be_nested_str_weak(PRODUCT_ID), + /* K5 */ be_nested_str_weak(root_discriminator), + /* K6 */ be_nested_str_weak(root_passcode), + /* K7 */ be_const_int(134217727), + /* K8 */ be_nested_str_weak(MT_X3A), /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), - /* K12 */ be_nested_str_weak(next_ep), - /* K13 */ be_const_int(1), + /* K10 */ be_nested_str_weak(Base38), + /* K11 */ be_nested_str_weak(encode), }), - be_str_weak(check_config_ep), + be_str_weak(compute_qrcode_content), &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x600C0010, // 0003 GETGBL R3 G16 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x8C100901, // 0005 GETMET R4 R4 K1 - 0x7C100200, // 0006 CALL R4 1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020007, // 0008 EXBLK 0 #0011 - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x8C140502, // 000B GETMET R5 R2 K2 - 0x601C0009, // 000C GETGBL R7 G9 - 0x5C200800, // 000D MOVE R8 R4 - 0x7C1C0200, // 000E CALL R7 1 - 0x7C140400, // 000F CALL R5 2 - 0x7001FFF7, // 0010 JMP #0009 - 0x580C0003, // 0011 LDCONST R3 K3 - 0xAC0C0200, // 0012 CATCH R3 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x600C0010, // 0014 GETGBL R3 G16 - 0x5C100400, // 0015 MOVE R4 R2 - 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020030, // 0017 EXBLK 0 #0049 - 0x5C100600, // 0018 MOVE R4 R3 - 0x7C100000, // 0019 CALL R4 0 - 0x1C140904, // 001A EQ R5 R4 K4 - 0x7816000B, // 001B JMPF R5 #0028 - 0xB8160A00, // 001C GETNGBL R5 K5 - 0x58180006, // 001D LDCONST R6 K6 - 0x581C0007, // 001E LDCONST R7 K7 - 0x7C140400, // 001F CALL R5 2 - 0x88140100, // 0020 GETMBR R5 R0 K0 - 0x8C140B08, // 0021 GETMET R5 R5 K8 - 0x601C0008, // 0022 GETGBL R7 G8 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C1C0200, // 0024 CALL R7 1 - 0x7C140400, // 0025 CALL R5 2 - 0x50040200, // 0026 LDBOOL R1 1 0 - 0x7002001F, // 0027 JMP #0048 - 0xB8161200, // 0028 GETNGBL R5 K9 - 0x88140B0A, // 0029 GETMBR R5 R5 K10 - 0x1C140805, // 002A EQ R5 R4 R5 - 0x7816001B, // 002B JMPF R5 #0048 - 0x50040200, // 002C LDBOOL R1 1 0 - 0xB8160A00, // 002D GETNGBL R5 K5 - 0x60180018, // 002E GETGBL R6 G24 - 0x581C000B, // 002F LDCONST R7 K11 - 0x5C200800, // 0030 MOVE R8 R4 - 0x8824010C, // 0031 GETMBR R9 R0 K12 - 0x7C180600, // 0032 CALL R6 3 - 0x581C0007, // 0033 LDCONST R7 K7 - 0x7C140400, // 0034 CALL R5 2 - 0x60140008, // 0035 GETGBL R5 G8 - 0x8818010C, // 0036 GETMBR R6 R0 K12 - 0x7C140200, // 0037 CALL R5 1 - 0x88180100, // 0038 GETMBR R6 R0 K0 - 0x601C0008, // 0039 GETGBL R7 G8 - 0x5C200800, // 003A MOVE R8 R4 - 0x7C1C0200, // 003B CALL R7 1 - 0x88200100, // 003C GETMBR R8 R0 K0 - 0x941C1007, // 003D GETIDX R7 R8 R7 - 0x98180A07, // 003E SETIDX R6 R5 R7 - 0x88140100, // 003F GETMBR R5 R0 K0 - 0x8C140B08, // 0040 GETMET R5 R5 K8 - 0x601C0008, // 0041 GETGBL R7 G8 - 0x5C200800, // 0042 MOVE R8 R4 - 0x7C1C0200, // 0043 CALL R7 1 - 0x7C140400, // 0044 CALL R5 2 - 0x8814010C, // 0045 GETMBR R5 R0 K12 - 0x00140B0D, // 0046 ADD R5 R5 K13 - 0x90021805, // 0047 SETMBR R0 K12 R5 - 0x7001FFCE, // 0048 JMP #0018 - 0x580C0003, // 0049 LDCONST R3 K3 - 0xAC0C0200, // 004A CATCH R3 1 0 - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80040200, // 004C RET 1 R1 + ( &(const binstruction[40]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x7C040000, // 0001 CALL R1 0 + 0x8C040300, // 0002 GETMET R1 R1 K0 + 0x540E000A, // 0003 LDINT R3 11 + 0x7C040400, // 0004 CALL R1 2 + 0x8C080301, // 0005 GETMET R2 R1 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x5416000F, // 0007 LDINT R5 16 + 0x88180103, // 0008 GETMBR R6 R0 K3 + 0x7C080800, // 0009 CALL R2 4 + 0x8C080301, // 000A GETMET R2 R1 K1 + 0x54120012, // 000B LDINT R4 19 + 0x5416000F, // 000C LDINT R5 16 + 0x88180104, // 000D GETMBR R6 R0 K4 + 0x7C080800, // 000E CALL R2 4 + 0x8C080301, // 000F GETMET R2 R1 K1 + 0x54120024, // 0010 LDINT R4 37 + 0x54160007, // 0011 LDINT R5 8 + 0x541A0003, // 0012 LDINT R6 4 + 0x7C080800, // 0013 CALL R2 4 + 0x8C080301, // 0014 GETMET R2 R1 K1 + 0x5412002C, // 0015 LDINT R4 45 + 0x5416000B, // 0016 LDINT R5 12 + 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x541E0FFE, // 0018 LDINT R7 4095 + 0x2C180C07, // 0019 AND R6 R6 R7 + 0x7C080800, // 001A CALL R2 4 + 0x8C080301, // 001B GETMET R2 R1 K1 + 0x54120038, // 001C LDINT R4 57 + 0x5416001A, // 001D LDINT R5 27 + 0x88180106, // 001E GETMBR R6 R0 K6 + 0x2C180D07, // 001F AND R6 R6 K7 + 0x7C080800, // 0020 CALL R2 4 + 0xB80A1200, // 0021 GETNGBL R2 K9 + 0x8808050A, // 0022 GETMBR R2 R2 K10 + 0x8C08050B, // 0023 GETMET R2 R2 K11 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x000A1002, // 0026 ADD R2 K8 R2 + 0x80040400, // 0027 RET 1 R2 }) ) ); @@ -2487,967 +1187,10 @@ be_local_closure(class_Matter_Device_check_config_ep, /* name */ /******************************************************************** -** Solidified function: every_50ms +** Solidified function: resolve_attribute_read_solo ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_50ms, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(every_50ms), - }), - be_str_weak(every_50ms), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040303, // 0004 GETMET R1 R1 K3 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: conf_to_log -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_conf_to_log, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(k2l), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(conf_to_log), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x58080001, // 0001 LDCONST R2 K1 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100302, // 0003 GETMET R4 R1 K2 - 0x5C180000, // 0004 MOVE R6 R0 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA802000B, // 0007 EXBLK 0 #0014 - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x1C140903, // 000A EQ R5 R4 K3 - 0x78160000, // 000B JMPF R5 #000D - 0x7001FFFA, // 000C JMP #0008 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180004, // 000E LDCONST R6 K4 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x94200004, // 0010 GETIDX R8 R0 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x00080405, // 0012 ADD R2 R2 R5 - 0x7001FFF3, // 0013 JMP #0008 - 0x580C0005, // 0014 LDCONST R3 K5 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x80040400, // 0017 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: k2l_num -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_k2l_num, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(k2l_num), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020007, // 000B EXBLK 0 #0014 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x601C0009, // 000F GETGBL R7 G9 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C1C0200, // 0011 CALL R7 1 - 0x7C140400, // 0012 CALL R5 2 - 0x7001FFF7, // 0013 JMP #000C - 0x580C0003, // 0014 LDCONST R3 K3 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x600C0010, // 0017 GETGBL R3 G16 - 0x6010000C, // 0018 GETGBL R4 G12 - 0x5C140400, // 0019 MOVE R5 R2 - 0x7C100200, // 001A CALL R4 1 - 0x04100904, // 001B SUB R4 R4 K4 - 0x40120804, // 001C CONNECT R4 K4 R4 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x94140404, // 0021 GETIDX R5 R2 R4 - 0x5C180800, // 0022 MOVE R6 R4 - 0x241C0D05, // 0023 GT R7 R6 K5 - 0x781E0008, // 0024 JMPF R7 #002E - 0x041C0D04, // 0025 SUB R7 R6 K4 - 0x941C0407, // 0026 GETIDX R7 R2 R7 - 0x241C0E05, // 0027 GT R7 R7 R5 - 0x781E0004, // 0028 JMPF R7 #002E - 0x041C0D04, // 0029 SUB R7 R6 K4 - 0x941C0407, // 002A GETIDX R7 R2 R7 - 0x98080C07, // 002B SETIDX R2 R6 R7 - 0x04180D04, // 002C SUB R6 R6 K4 - 0x7001FFF4, // 002D JMP #0023 - 0x98080C05, // 002E SETIDX R2 R6 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0003, // 0030 LDCONST R3 K3 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x80040400, // 0033 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - /* K2 */ be_nested_str_weak(udp_server), - /* K3 */ be_nested_str_weak(stop), - }), - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x88040102, // 0004 GETMBR R1 R0 K2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040102, // 0006 GETMBR R1 R0 K2 - 0x8C040303, // 0007 GETMET R1 R1 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_arg -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_arg), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device_map -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ - be_nested_proto( - 19, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(START_ENDPOINT), - /* K3 */ be_nested_str_weak(light), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(channels), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_const_int(0), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(light1), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(light2), - /* K14 */ be_nested_str_weak(light3), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(cmd), - /* K17 */ be_nested_str_weak(Status_X2013), - /* K18 */ be_nested_str_weak(log), - /* K19 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(contains), - /* K22 */ be_nested_str_weak(StatusSHT), - /* K23 */ be_nested_str_weak(SHT), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), - /* K25 */ be_nested_str_weak(Relay1), - /* K26 */ be_nested_str_weak(Relay2), - /* K27 */ be_nested_str_weak(push), - /* K28 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), - /* K29 */ be_nested_str_weak(TiltConfig), - /* K30 */ be_nested_str_weak(shutter_X2Btilt), - /* K31 */ be_nested_str_weak(shutter), - /* K32 */ be_nested_str_weak(get_power), - /* K33 */ be_nested_str_weak(relay), - /* K34 */ be_nested_str_weak(load), - /* K35 */ be_nested_str_weak(read_sensors), - /* K36 */ be_nested_str_weak(autoconf_sensors_list), - /* K37 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(autoconf_device_map), - &be_const_str_solidified, - ( &(const binstruction[196]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x60080013, // 0001 GETGBL R2 G19 - 0x7C080000, // 0002 CALL R2 0 - 0xB80E0200, // 0003 GETNGBL R3 K1 - 0x880C0702, // 0004 GETMBR R3 R3 K2 - 0x50100000, // 0005 LDBOOL R4 0 0 - 0xA4160600, // 0006 IMPORT R5 K3 - 0x8C180B04, // 0007 GETMET R6 R5 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x4C1C0000, // 0009 LDNIL R7 - 0x201C0C07, // 000A NE R7 R6 R7 - 0x781E0024, // 000B JMPF R7 #0031 - 0x601C000C, // 000C GETGBL R7 G12 - 0x8C200D05, // 000D GETMET R8 R6 K5 - 0x58280006, // 000E LDCONST R10 K6 - 0x582C0007, // 000F LDCONST R11 K7 - 0x7C200600, // 0010 CALL R8 3 - 0x7C1C0200, // 0011 CALL R7 1 - 0x24200F08, // 0012 GT R8 R7 K8 - 0x7822001C, // 0013 JMPF R8 #0031 - 0x1C200F09, // 0014 EQ R8 R7 K9 - 0x78220007, // 0015 JMPF R8 #001E - 0x60200008, // 0016 GETGBL R8 G8 - 0x5C240600, // 0017 MOVE R9 R3 - 0x7C200200, // 0018 CALL R8 1 - 0x60240013, // 0019 GETGBL R9 G19 - 0x7C240000, // 001A CALL R9 0 - 0x9826150B, // 001B SETIDX R9 K10 K11 - 0x98081009, // 001C SETIDX R2 R8 R9 - 0x70020010, // 001D JMP #002F - 0x1C200F0C, // 001E EQ R8 R7 K12 - 0x78220007, // 001F JMPF R8 #0028 - 0x60200008, // 0020 GETGBL R8 G8 - 0x5C240600, // 0021 MOVE R9 R3 - 0x7C200200, // 0022 CALL R8 1 - 0x60240013, // 0023 GETGBL R9 G19 - 0x7C240000, // 0024 CALL R9 0 - 0x9826150D, // 0025 SETIDX R9 K10 K13 - 0x98081009, // 0026 SETIDX R2 R8 R9 - 0x70020006, // 0027 JMP #002F - 0x60200008, // 0028 GETGBL R8 G8 - 0x5C240600, // 0029 MOVE R9 R3 - 0x7C200200, // 002A CALL R8 1 - 0x60240013, // 002B GETGBL R9 G19 - 0x7C240000, // 002C CALL R9 0 - 0x9826150E, // 002D SETIDX R9 K10 K14 - 0x98081009, // 002E SETIDX R2 R8 R9 - 0x50100200, // 002F LDBOOL R4 1 0 - 0x000C0709, // 0030 ADD R3 R3 K9 - 0xB81E1E00, // 0031 GETNGBL R7 K15 - 0x8C1C0F10, // 0032 GETMET R7 R7 K16 - 0x58240011, // 0033 LDCONST R9 K17 - 0x50280200, // 0034 LDBOOL R10 1 0 - 0x7C1C0600, // 0035 CALL R7 3 - 0x60200012, // 0036 GETGBL R8 G18 - 0x7C200000, // 0037 CALL R8 0 - 0xB8262400, // 0038 GETNGBL R9 K18 - 0x60280008, // 0039 GETGBL R10 G8 - 0x5C2C0E00, // 003A MOVE R11 R7 - 0x7C280200, // 003B CALL R10 1 - 0x002A260A, // 003C ADD R10 K19 R10 - 0x582C0014, // 003D LDCONST R11 K20 - 0x7C240400, // 003E CALL R9 2 - 0x4C240000, // 003F LDNIL R9 - 0x20240E09, // 0040 NE R9 R7 R9 - 0x7826004D, // 0041 JMPF R9 #0090 - 0x8C240F15, // 0042 GETMET R9 R7 K21 - 0x582C0016, // 0043 LDCONST R11 K22 - 0x7C240400, // 0044 CALL R9 2 - 0x78260049, // 0045 JMPF R9 #0090 - 0x941C0F16, // 0046 GETIDX R7 R7 K22 - 0x58240008, // 0047 LDCONST R9 K8 - 0x50280200, // 0048 LDBOOL R10 1 0 - 0x782A0045, // 0049 JMPF R10 #0090 - 0x60280008, // 004A GETGBL R10 G8 - 0x5C2C1200, // 004B MOVE R11 R9 - 0x7C280200, // 004C CALL R10 1 - 0x002A2E0A, // 004D ADD R10 K23 R10 - 0x8C2C0F15, // 004E GETMET R11 R7 K21 - 0x5C341400, // 004F MOVE R13 R10 - 0x7C2C0400, // 0050 CALL R11 2 - 0x742E0000, // 0051 JMPT R11 #0053 - 0x7002003C, // 0052 JMP #0090 - 0x942C0E0A, // 0053 GETIDX R11 R7 R10 - 0xB8322400, // 0054 GETNGBL R12 K18 - 0x60340018, // 0055 GETGBL R13 G24 - 0x58380018, // 0056 LDCONST R14 K24 - 0x5C3C1400, // 0057 MOVE R15 R10 - 0x60400008, // 0058 GETGBL R16 G8 - 0x5C441600, // 0059 MOVE R17 R11 - 0x7C400200, // 005A CALL R16 1 - 0x7C340600, // 005B CALL R13 3 - 0x58380014, // 005C LDCONST R14 K20 - 0x7C300400, // 005D CALL R12 2 - 0x8C301705, // 005E GETMET R12 R11 K5 - 0x58380019, // 005F LDCONST R14 K25 - 0x543DFFFE, // 0060 LDINT R15 -1 - 0x7C300600, // 0061 CALL R12 3 - 0x8C341705, // 0062 GETMET R13 R11 K5 - 0x583C001A, // 0063 LDCONST R15 K26 - 0x5441FFFE, // 0064 LDINT R16 -1 - 0x7C340600, // 0065 CALL R13 3 - 0x24381908, // 0066 GT R14 R12 K8 - 0x783A0002, // 0067 JMPF R14 #006B - 0x8C38111B, // 0068 GETMET R14 R8 K27 - 0x04401909, // 0069 SUB R16 R12 K9 - 0x7C380400, // 006A CALL R14 2 - 0x24381B08, // 006B GT R14 R13 K8 - 0x783A0002, // 006C JMPF R14 #0070 - 0x8C38111B, // 006D GETMET R14 R8 K27 - 0x04401B09, // 006E SUB R16 R13 K9 - 0x7C380400, // 006F CALL R14 2 - 0xB83A2400, // 0070 GETNGBL R14 K18 - 0x603C0018, // 0071 GETGBL R15 G24 - 0x5840001C, // 0072 LDCONST R16 K28 - 0x5C441800, // 0073 MOVE R17 R12 - 0x5C481A00, // 0074 MOVE R18 R13 - 0x7C3C0600, // 0075 CALL R15 3 - 0x58400014, // 0076 LDCONST R16 K20 - 0x7C380400, // 0077 CALL R14 2 - 0x8C381705, // 0078 GETMET R14 R11 K5 - 0x5840001D, // 0079 LDCONST R16 K29 - 0x7C380400, // 007A CALL R14 2 - 0x783A0002, // 007B JMPF R14 #007F - 0x943C1D0C, // 007C GETIDX R15 R14 K12 - 0x243C1F08, // 007D GT R15 R15 K8 - 0x743E0000, // 007E JMPT R15 #0080 - 0x503C0001, // 007F LDBOOL R15 0 1 - 0x503C0200, // 0080 LDBOOL R15 1 0 - 0x60400008, // 0081 GETGBL R16 G8 - 0x5C440600, // 0082 MOVE R17 R3 - 0x7C400200, // 0083 CALL R16 1 - 0x60440013, // 0084 GETGBL R17 G19 - 0x7C440000, // 0085 CALL R17 0 - 0x783E0001, // 0086 JMPF R15 #0089 - 0x5848001E, // 0087 LDCONST R18 K30 - 0x70020000, // 0088 JMP #008A - 0x5848001F, // 0089 LDCONST R18 K31 - 0x98461412, // 008A SETIDX R17 K10 R18 - 0x98463E09, // 008B SETIDX R17 K31 R9 - 0x98082011, // 008C SETIDX R2 R16 R17 - 0x000C0709, // 008D ADD R3 R3 K9 - 0x00241309, // 008E ADD R9 R9 K9 - 0x7001FFB7, // 008F JMP #0048 - 0x6024000C, // 0090 GETGBL R9 G12 - 0xB82A1E00, // 0091 GETNGBL R10 K15 - 0x8C281520, // 0092 GETMET R10 R10 K32 - 0x7C280200, // 0093 CALL R10 1 - 0x7C240200, // 0094 CALL R9 1 - 0x58280008, // 0095 LDCONST R10 K8 - 0x78120000, // 0096 JMPF R4 #0098 - 0x04241309, // 0097 SUB R9 R9 K9 - 0x142C1409, // 0098 LT R11 R10 R9 - 0x782E0011, // 0099 JMPF R11 #00AC - 0x8C2C1105, // 009A GETMET R11 R8 K5 - 0x5C341400, // 009B MOVE R13 R10 - 0x7C2C0400, // 009C CALL R11 2 - 0x4C300000, // 009D LDNIL R12 - 0x1C2C160C, // 009E EQ R11 R11 R12 - 0x782E0009, // 009F JMPF R11 #00AA - 0x602C0008, // 00A0 GETGBL R11 G8 - 0x5C300600, // 00A1 MOVE R12 R3 - 0x7C2C0200, // 00A2 CALL R11 1 - 0x60300013, // 00A3 GETGBL R12 G19 - 0x7C300000, // 00A4 CALL R12 0 - 0x98321521, // 00A5 SETIDX R12 K10 K33 - 0x00341509, // 00A6 ADD R13 R10 K9 - 0x9832420D, // 00A7 SETIDX R12 K33 R13 - 0x9808160C, // 00A8 SETIDX R2 R11 R12 - 0x000C0709, // 00A9 ADD R3 R3 K9 - 0x00281509, // 00AA ADD R10 R10 K9 - 0x7001FFEB, // 00AB JMP #0098 - 0x8C2C0322, // 00AC GETMET R11 R1 K34 - 0xB8361E00, // 00AD GETNGBL R13 K15 - 0x8C341B23, // 00AE GETMET R13 R13 K35 - 0x7C340200, // 00AF CALL R13 1 - 0x7C2C0400, // 00B0 CALL R11 2 - 0x8C300124, // 00B1 GETMET R12 R0 K36 - 0x5C381600, // 00B2 MOVE R14 R11 - 0x7C300400, // 00B3 CALL R12 2 - 0x60340010, // 00B4 GETGBL R13 G16 - 0x5C381800, // 00B5 MOVE R14 R12 - 0x7C340200, // 00B6 CALL R13 1 - 0xA8020007, // 00B7 EXBLK 0 #00C0 - 0x5C381A00, // 00B8 MOVE R14 R13 - 0x7C380000, // 00B9 CALL R14 0 - 0x603C0008, // 00BA GETGBL R15 G8 - 0x5C400600, // 00BB MOVE R16 R3 - 0x7C3C0200, // 00BC CALL R15 1 - 0x98081E0E, // 00BD SETIDX R2 R15 R14 - 0x000C0709, // 00BE ADD R3 R3 K9 - 0x7001FFF7, // 00BF JMP #00B8 - 0x58340025, // 00C0 LDCONST R13 K37 - 0xAC340200, // 00C1 CATCH R13 1 0 - 0xB0080000, // 00C2 RAISE 2 R0 R0 - 0x80040400, // 00C3 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_fabric -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_remove_fabric, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), - /* K2 */ be_nested_str_weak(get_fabric_id), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(reverse), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(message_handler), - /* K8 */ be_nested_str_weak(im), - /* K9 */ be_nested_str_weak(subs_shop), - /* K10 */ be_nested_str_weak(remove_by_fabric), - /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(remove_fabric), - /* K14 */ be_nested_str_weak(save_fabrics), - }), - be_str_weak(remove_fabric), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0018, // 0002 JMPF R2 #001C - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C0C0302, // 0004 GETMET R3 R1 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0705, // 000A GETMET R3 R3 K5 - 0x7C0C0200, // 000B CALL R3 1 - 0x000E0203, // 000C ADD R3 K1 R3 - 0x58100006, // 000D LDCONST R4 K6 - 0x7C080400, // 000E CALL R2 2 - 0x88080107, // 000F GETMBR R2 R0 K7 - 0x88080508, // 0010 GETMBR R2 R2 K8 - 0x88080509, // 0011 GETMBR R2 R2 K9 - 0x8C08050A, // 0012 GETMET R2 R2 K10 - 0x5C100200, // 0013 MOVE R4 R1 - 0x7C080400, // 0014 CALL R2 2 - 0x8C08010B, // 0015 GETMET R2 R0 K11 - 0x5C100200, // 0016 MOVE R4 R1 - 0x7C080400, // 0017 CALL R2 2 - 0x8808010C, // 0018 GETMBR R2 R0 K12 - 0x8C08050D, // 0019 GETMET R2 R2 K13 - 0x5C100200, // 001A MOVE R4 R1 - 0x7C080400, // 001B CALL R2 2 - 0x8808010C, // 001C GETMBR R2 R0 K12 - 0x8C08050E, // 001D GETMET R2 R2 K14 - 0x7C080200, // 001E CALL R2 1 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_init, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(get_option), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(MATTER_OPTION), - /* K5 */ be_nested_str_weak(UI), - /* K6 */ be_nested_str_weak(profiler), - /* K7 */ be_nested_str_weak(Profiler), - /* K8 */ be_nested_str_weak(started), - /* K9 */ be_nested_str_weak(tick), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(plugins_config_remotes), - /* K14 */ be_nested_str_weak(next_ep), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(ipv4only), - /* K17 */ be_nested_str_weak(disable_bridge_mode), - /* K18 */ be_nested_str_weak(load_param), - /* K19 */ be_nested_str_weak(sessions), - /* K20 */ be_nested_str_weak(Session_Store), - /* K21 */ be_nested_str_weak(load_fabrics), - /* K22 */ be_nested_str_weak(message_handler), - /* K23 */ be_nested_str_weak(MessageHandler), - /* K24 */ be_nested_str_weak(events), - /* K25 */ be_nested_str_weak(EventHandler), - /* K26 */ be_nested_str_weak(ui), - /* K27 */ be_nested_str_weak(wifi), - /* K28 */ be_nested_str_weak(up), - /* K29 */ be_nested_str_weak(eth), - /* K30 */ be_nested_str_weak(start), - /* K31 */ be_nested_str_weak(add_rule), - /* K32 */ be_nested_str_weak(Wifi_X23Connected), - /* K33 */ be_nested_str_weak(matter_start), - /* K34 */ be_nested_str_weak(Eth_X23Connected), - /* K35 */ be_nested_str_weak(_init_basic_commissioning), - /* K36 */ be_nested_str_weak(add_driver), - /* K37 */ be_nested_str_weak(register_commands), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[102]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100904, // 0004 GETMBR R4 R4 K4 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0004, // 0006 JMPT R2 #000C - 0xB80A0600, // 0007 GETNGBL R2 K3 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x5C100000, // 0009 MOVE R4 R0 - 0x7C080400, // 000A CALL R2 2 - 0x80000400, // 000B RET 0 - 0xB80A0600, // 000C GETNGBL R2 K3 - 0xB80E0600, // 000D GETNGBL R3 K3 - 0x8C0C0707, // 000E GETMET R3 R3 K7 - 0x7C0C0200, // 000F CALL R3 1 - 0x900A0C03, // 0010 SETMBR R2 K6 R3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x90021002, // 0012 SETMBR R0 K8 R2 - 0x9002130A, // 0013 SETMBR R0 K9 K10 - 0x60080012, // 0014 GETGBL R2 G18 - 0x7C080000, // 0015 CALL R2 0 - 0x90021602, // 0016 SETMBR R0 K11 R2 - 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90021802, // 0018 SETMBR R0 K12 R2 - 0x60080013, // 0019 GETGBL R2 G19 - 0x7C080000, // 001A CALL R2 0 - 0x90021A02, // 001B SETMBR R0 K13 R2 - 0x90021D0F, // 001C SETMBR R0 K14 K15 - 0x50080000, // 001D LDBOOL R2 0 0 - 0x90022002, // 001E SETMBR R0 K16 R2 - 0x50080000, // 001F LDBOOL R2 0 0 - 0x90022202, // 0020 SETMBR R0 K17 R2 - 0x8C080112, // 0021 GETMET R2 R0 K18 - 0x7C080200, // 0022 CALL R2 1 - 0xB80A0600, // 0023 GETNGBL R2 K3 - 0x8C080514, // 0024 GETMET R2 R2 K20 - 0x5C100000, // 0025 MOVE R4 R0 - 0x7C080400, // 0026 CALL R2 2 - 0x90022602, // 0027 SETMBR R0 K19 R2 - 0x88080113, // 0028 GETMBR R2 R0 K19 - 0x8C080515, // 0029 GETMET R2 R2 K21 - 0x7C080200, // 002A CALL R2 1 - 0xB80A0600, // 002B GETNGBL R2 K3 - 0x8C080517, // 002C GETMET R2 R2 K23 - 0x5C100000, // 002D MOVE R4 R0 - 0x7C080400, // 002E CALL R2 2 - 0x90022C02, // 002F SETMBR R0 K22 R2 - 0xB80A0600, // 0030 GETNGBL R2 K3 - 0x8C080519, // 0031 GETMET R2 R2 K25 - 0x5C100000, // 0032 MOVE R4 R0 - 0x7C080400, // 0033 CALL R2 2 - 0x90023002, // 0034 SETMBR R0 K24 R2 - 0xB80A0600, // 0035 GETNGBL R2 K3 - 0x8C080505, // 0036 GETMET R2 R2 K5 - 0x5C100000, // 0037 MOVE R4 R0 - 0x7C080400, // 0038 CALL R2 2 - 0x90023402, // 0039 SETMBR R0 K26 R2 - 0xB80A0200, // 003A GETNGBL R2 K1 - 0x8C08051B, // 003B GETMET R2 R2 K27 - 0x7C080200, // 003C CALL R2 1 - 0x9408051C, // 003D GETIDX R2 R2 K28 - 0x740A0004, // 003E JMPT R2 #0044 - 0xB80A0200, // 003F GETNGBL R2 K1 - 0x8C08051D, // 0040 GETMET R2 R2 K29 - 0x7C080200, // 0041 CALL R2 1 - 0x9408051C, // 0042 GETIDX R2 R2 K28 - 0x780A0001, // 0043 JMPF R2 #0046 - 0x8C08011E, // 0044 GETMET R2 R0 K30 - 0x7C080200, // 0045 CALL R2 1 - 0xB80A0200, // 0046 GETNGBL R2 K1 - 0x8C08051B, // 0047 GETMET R2 R2 K27 - 0x7C080200, // 0048 CALL R2 1 - 0x9408051C, // 0049 GETIDX R2 R2 K28 - 0x740A0005, // 004A JMPT R2 #0051 - 0xB80A0200, // 004B GETNGBL R2 K1 - 0x8C08051F, // 004C GETMET R2 R2 K31 - 0x58100020, // 004D LDCONST R4 K32 - 0x84140000, // 004E CLOSURE R5 P0 - 0x58180021, // 004F LDCONST R6 K33 - 0x7C080800, // 0050 CALL R2 4 - 0xB80A0200, // 0051 GETNGBL R2 K1 - 0x8C08051D, // 0052 GETMET R2 R2 K29 - 0x7C080200, // 0053 CALL R2 1 - 0x9408051C, // 0054 GETIDX R2 R2 K28 - 0x740A0005, // 0055 JMPT R2 #005C - 0xB80A0200, // 0056 GETNGBL R2 K1 - 0x8C08051F, // 0057 GETMET R2 R2 K31 - 0x58100022, // 0058 LDCONST R4 K34 - 0x84140001, // 0059 CLOSURE R5 P1 - 0x58180021, // 005A LDCONST R6 K33 - 0x7C080800, // 005B CALL R2 4 - 0x8C080123, // 005C GETMET R2 R0 K35 - 0x7C080200, // 005D CALL R2 1 - 0xB80A0200, // 005E GETNGBL R2 K1 - 0x8C080524, // 005F GETMET R2 R2 K36 - 0x5C100000, // 0060 MOVE R4 R0 - 0x7C080400, // 0061 CALL R2 2 - 0x8C080125, // 0062 GETMET R2 R0 K37 - 0x7C080200, // 0063 CALL R2 1 - 0xA0000000, // 0064 CLOSE R0 - 0x80000000, // 0065 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_commissioning_open -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - }), - be_str_weak(is_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: adjust_next_ep -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(next_ep), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(adjust_next_ep), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000A, // 0005 EXBLK 0 #0011 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x600C0009, // 0008 GETGBL R3 G9 - 0x5C100400, // 0009 MOVE R4 R2 - 0x7C0C0200, // 000A CALL R3 1 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x28100604, // 000C GE R4 R3 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x00100703, // 000E ADD R4 R3 K3 - 0x90020404, // 000F SETMBR R0 K2 R4 - 0x7001FFF4, // 0010 JMP #0006 - 0x58040004, // 0011 LDCONST R1 K4 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(is_root_commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(publish_result), - /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), - /* K4 */ be_nested_str_weak(Matter), - /* K5 */ be_nested_str_weak(commissioning_open), - /* K6 */ be_nested_str_weak(mdns_remove_PASE), - /* K7 */ be_nested_str_weak(commissioning_iterations), - /* K8 */ be_nested_str_weak(commissioning_discriminator), - /* K9 */ be_nested_str_weak(commissioning_salt), - /* K10 */ be_nested_str_weak(commissioning_w0), - /* K11 */ be_nested_str_weak(commissioning_L), - /* K12 */ be_nested_str_weak(commissioning_admin_fabric), - }), - be_str_weak(stop_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x78060004, // 0002 JMPF R1 #0008 - 0xB8060200, // 0003 GETNGBL R1 K1 - 0x8C040302, // 0004 GETMET R1 R1 K2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x58100004, // 0006 LDCONST R4 K4 - 0x7C040600, // 0007 CALL R1 3 - 0x4C040000, // 0008 LDNIL R1 - 0x90020A01, // 0009 SETMBR R0 K5 R1 - 0x8C040106, // 000A GETMET R1 R0 K6 - 0x7C040200, // 000B CALL R1 1 - 0x4C040000, // 000C LDNIL R1 - 0x90020E01, // 000D SETMBR R0 K7 R1 - 0x4C040000, // 000E LDNIL R1 - 0x90021001, // 000F SETMBR R0 K8 R1 - 0x4C040000, // 0010 LDNIL R1 - 0x90021201, // 0011 SETMBR R0 K9 R1 - 0x4C040000, // 0012 LDNIL R1 - 0x90021401, // 0013 SETMBR R0 K10 R1 - 0x4C040000, // 0014 LDNIL R1 - 0x90021601, // 0015 SETMBR R0 K11 R1 - 0x4C040000, // 0016 LDNIL R1 - 0x90021801, // 0017 SETMBR R0 K12 R1 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_sensors_list -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ +be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ @@ -3457,148 +1200,69 @@ be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(Temperature), - /* K3 */ be_nested_str_weak(_X23Temperature), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(temperature), - /* K7 */ be_nested_str_weak(filter), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(Pressure), - /* K10 */ be_nested_str_weak(_X23Pressure), - /* K11 */ be_nested_str_weak(pressure), - /* K12 */ be_nested_str_weak(Illuminance), - /* K13 */ be_nested_str_weak(_X23Illuminance), - /* K14 */ be_nested_str_weak(illuminance), - /* K15 */ be_nested_str_weak(Humidity), - /* K16 */ be_nested_str_weak(_X23Humidity), - /* K17 */ be_nested_str_weak(humidity), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K7 */ be_nested_str_weak(contains_cluster), + /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K9 */ be_nested_str_weak(contains_attribute), + /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), }), - be_str_weak(autoconf_sensors_list), + be_str_weak(resolve_attribute_read_solo), &be_const_str_solidified, - ( &(const binstruction[119]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100100, // 0003 GETMET R4 R0 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020013, // 0007 EXBLK 0 #001C - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x94140204, // 000A GETIDX R5 R1 R4 - 0x6018000F, // 000B GETGBL R6 G15 - 0x5C1C0A00, // 000C MOVE R7 R5 - 0x60200013, // 000D GETGBL R8 G19 - 0x7C180400, // 000E CALL R6 2 - 0x781A000A, // 000F JMPF R6 #001B - 0x8C180B01, // 0010 GETMET R6 R5 K1 - 0x58200002, // 0011 LDCONST R8 K2 - 0x7C180400, // 0012 CALL R6 2 - 0x781A0006, // 0013 JMPF R6 #001B - 0x00180903, // 0014 ADD R6 R4 K3 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x60240013, // 0016 GETGBL R9 G19 - 0x7C240000, // 0017 CALL R9 0 - 0x98260B06, // 0018 SETIDX R9 K5 K6 - 0x98260E06, // 0019 SETIDX R9 K7 R6 - 0x7C1C0400, // 001A CALL R7 2 - 0x7001FFEB, // 001B JMP #0008 - 0x580C0008, // 001C LDCONST R3 K8 - 0xAC0C0200, // 001D CATCH R3 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x600C0010, // 001F GETGBL R3 G16 - 0x8C100100, // 0020 GETMET R4 R0 K0 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x7C0C0200, // 0023 CALL R3 1 - 0xA8020013, // 0024 EXBLK 0 #0039 - 0x5C100600, // 0025 MOVE R4 R3 - 0x7C100000, // 0026 CALL R4 0 - 0x94140204, // 0027 GETIDX R5 R1 R4 - 0x6018000F, // 0028 GETGBL R6 G15 - 0x5C1C0A00, // 0029 MOVE R7 R5 - 0x60200013, // 002A GETGBL R8 G19 - 0x7C180400, // 002B CALL R6 2 - 0x781A000A, // 002C JMPF R6 #0038 - 0x8C180B01, // 002D GETMET R6 R5 K1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C180400, // 002F CALL R6 2 - 0x781A0006, // 0030 JMPF R6 #0038 - 0x0018090A, // 0031 ADD R6 R4 K10 - 0x8C1C0504, // 0032 GETMET R7 R2 K4 - 0x60240013, // 0033 GETGBL R9 G19 - 0x7C240000, // 0034 CALL R9 0 - 0x98260B0B, // 0035 SETIDX R9 K5 K11 - 0x98260E06, // 0036 SETIDX R9 K7 R6 - 0x7C1C0400, // 0037 CALL R7 2 - 0x7001FFEB, // 0038 JMP #0025 - 0x580C0008, // 0039 LDCONST R3 K8 - 0xAC0C0200, // 003A CATCH R3 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x600C0010, // 003C GETGBL R3 G16 - 0x8C100100, // 003D GETMET R4 R0 K0 - 0x5C180200, // 003E MOVE R6 R1 - 0x7C100400, // 003F CALL R4 2 - 0x7C0C0200, // 0040 CALL R3 1 - 0xA8020013, // 0041 EXBLK 0 #0056 - 0x5C100600, // 0042 MOVE R4 R3 - 0x7C100000, // 0043 CALL R4 0 - 0x94140204, // 0044 GETIDX R5 R1 R4 - 0x6018000F, // 0045 GETGBL R6 G15 - 0x5C1C0A00, // 0046 MOVE R7 R5 - 0x60200013, // 0047 GETGBL R8 G19 - 0x7C180400, // 0048 CALL R6 2 - 0x781A000A, // 0049 JMPF R6 #0055 - 0x8C180B01, // 004A GETMET R6 R5 K1 - 0x5820000C, // 004B LDCONST R8 K12 - 0x7C180400, // 004C CALL R6 2 - 0x781A0006, // 004D JMPF R6 #0055 - 0x0018090D, // 004E ADD R6 R4 K13 - 0x8C1C0504, // 004F GETMET R7 R2 K4 - 0x60240013, // 0050 GETGBL R9 G19 - 0x7C240000, // 0051 CALL R9 0 - 0x98260B0E, // 0052 SETIDX R9 K5 K14 - 0x98260E06, // 0053 SETIDX R9 K7 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x7001FFEB, // 0055 JMP #0042 - 0x580C0008, // 0056 LDCONST R3 K8 - 0xAC0C0200, // 0057 CATCH R3 1 0 - 0xB0080000, // 0058 RAISE 2 R0 R0 - 0x600C0010, // 0059 GETGBL R3 G16 - 0x8C100100, // 005A GETMET R4 R0 K0 - 0x5C180200, // 005B MOVE R6 R1 - 0x7C100400, // 005C CALL R4 2 - 0x7C0C0200, // 005D CALL R3 1 - 0xA8020013, // 005E EXBLK 0 #0073 - 0x5C100600, // 005F MOVE R4 R3 - 0x7C100000, // 0060 CALL R4 0 - 0x94140204, // 0061 GETIDX R5 R1 R4 - 0x6018000F, // 0062 GETGBL R6 G15 - 0x5C1C0A00, // 0063 MOVE R7 R5 - 0x60200013, // 0064 GETGBL R8 G19 - 0x7C180400, // 0065 CALL R6 2 - 0x781A000A, // 0066 JMPF R6 #0072 - 0x8C180B01, // 0067 GETMET R6 R5 K1 - 0x5820000F, // 0068 LDCONST R8 K15 - 0x7C180400, // 0069 CALL R6 2 - 0x781A0006, // 006A JMPF R6 #0072 - 0x00180910, // 006B ADD R6 R4 K16 - 0x8C1C0504, // 006C GETMET R7 R2 K4 - 0x60240013, // 006D GETGBL R9 G19 - 0x7C240000, // 006E CALL R9 0 - 0x98260B11, // 006F SETIDX R9 K5 K17 - 0x98260E06, // 0070 SETIDX R9 K7 R6 - 0x7C1C0400, // 0071 CALL R7 2 - 0x7001FFEB, // 0072 JMP #005F - 0x580C0008, // 0073 LDCONST R3 K8 - 0xAC0C0200, // 0074 CATCH R3 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040400, // 0076 RET 1 R2 + ( &(const binstruction[47]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x88100302, // 0002 GETMBR R4 R1 K2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140405, // 0004 EQ R5 R2 R5 + 0x74160005, // 0005 JMPT R5 #000C + 0x4C140000, // 0006 LDNIL R5 + 0x1C140605, // 0007 EQ R5 R3 R5 + 0x74160002, // 0008 JMPT R5 #000C + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x5C1C0400, // 000F MOVE R7 R2 + 0x7C140400, // 0010 CALL R5 2 + 0x4C180000, // 0011 LDNIL R6 + 0x1C180A06, // 0012 EQ R6 R5 R6 + 0x781A0005, // 0013 JMPF R6 #001A + 0xB81A0A00, // 0014 GETNGBL R6 K5 + 0x88180D06, // 0015 GETMBR R6 R6 K6 + 0x90060806, // 0016 SETMBR R1 K4 R6 + 0x4C180000, // 0017 LDNIL R6 + 0x80040C00, // 0018 RET 1 R6 + 0x70020013, // 0019 JMP #002E + 0x8C180B07, // 001A GETMET R6 R5 K7 + 0x5C200600, // 001B MOVE R8 R3 + 0x7C180400, // 001C CALL R6 2 + 0x741A0005, // 001D JMPT R6 #0024 + 0xB81A0A00, // 001E GETNGBL R6 K5 + 0x88180D08, // 001F GETMBR R6 R6 K8 + 0x90060806, // 0020 SETMBR R1 K4 R6 + 0x4C180000, // 0021 LDNIL R6 + 0x80040C00, // 0022 RET 1 R6 + 0x70020009, // 0023 JMP #002E + 0x8C180B09, // 0024 GETMET R6 R5 K9 + 0x5C200600, // 0025 MOVE R8 R3 + 0x5C240800, // 0026 MOVE R9 R4 + 0x7C180600, // 0027 CALL R6 3 + 0x741A0004, // 0028 JMPT R6 #002E + 0xB81A0A00, // 0029 GETNGBL R6 K5 + 0x88180D0A, // 002A GETMBR R6 R6 K10 + 0x90060806, // 002B SETMBR R1 K4 R6 + 0x4C180000, // 002C LDNIL R6 + 0x80040C00, // 002D RET 1 R6 + 0x80040A00, // 002E RET 1 R5 }) ) ); @@ -3670,13 +1334,13 @@ be_local_closure(class_Matter_Device_update_remotes_info, /* name */ /******************************************************************** -** Solidified function: get_plugin_class_displayname +** Solidified function: button_multi_pressed ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ +be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 11, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -3684,23 +1348,27 @@ be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(DISPLAY_NAME), - /* K3 */ be_nested_str_weak(), + /* K0 */ be_nested_str_weak(button_handler), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(2), + /* K3 */ be_const_int(0), }), - be_str_weak(get_plugin_class_displayname), + be_str_weak(button_multi_pressed), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 + ( &(const binstruction[13]) { /* code */ + 0x540E0007, // 0000 LDINT R3 8 + 0x3C0C0403, // 0001 SHR R3 R2 R3 + 0x541200FE, // 0002 LDINT R4 255 + 0x2C0C0604, // 0003 AND R3 R3 R4 + 0x541200FE, // 0004 LDINT R4 255 + 0x2C100404, // 0005 AND R4 R2 R4 + 0x8C140100, // 0006 GETMET R5 R0 K0 + 0x001C0901, // 0007 ADD R7 R4 K1 + 0x58200002, // 0008 LDCONST R8 K2 + 0x58240003, // 0009 LDCONST R9 K3 + 0x5C280600, // 000A MOVE R10 R3 + 0x7C140A00, // 000B CALL R5 5 + 0x80000000, // 000C RET 0 }) ) ); @@ -3708,61 +1376,82 @@ be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ /******************************************************************** -** Solidified function: start_commissioning_complete_deferred +** Solidified function: sort_distinct ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ +be_local_closure(class_Matter_Device_sort_distinct, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 7, /* nstack */ + 1, /* argc */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), + 0, /* has sup protos */ &be_class_Matter_Device, - }), 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_const_int(1), /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(remove), }), - be_str_weak(start_commissioning_complete_deferred), + be_str_weak(sort_distinct), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 + ( &(const binstruction[53]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0701, // 0005 SUB R3 R3 K1 + 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020010, // 0008 EXBLK 0 #001A + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B02, // 000D GT R6 R5 K2 + 0x781A0008, // 000E JMPF R6 #0018 + 0x04180B01, // 000F SUB R6 R5 K1 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x24180C04, // 0011 GT R6 R6 R4 + 0x781A0004, // 0012 JMPF R6 #0018 + 0x04180B01, // 0013 SUB R6 R5 K1 + 0x94180006, // 0014 GETIDX R6 R0 R6 + 0x98000A06, // 0015 SETIDX R0 R5 R6 + 0x04140B01, // 0016 SUB R5 R5 K1 + 0x7001FFF4, // 0017 JMP #000D + 0x98000A04, // 0018 SETIDX R0 R5 R4 + 0x7001FFEE, // 0019 JMP #0009 + 0x58080003, // 001A LDCONST R2 K3 + 0xAC080200, // 001B CATCH R2 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x58080001, // 001D LDCONST R2 K1 + 0x600C000C, // 001E GETGBL R3 G12 + 0x5C100000, // 001F MOVE R4 R0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x180C0701, // 0021 LE R3 R3 K1 + 0x780E0000, // 0022 JMPF R3 #0024 + 0x80040000, // 0023 RET 1 R0 + 0x940C0102, // 0024 GETIDX R3 R0 K2 + 0x6010000C, // 0025 GETGBL R4 G12 + 0x5C140000, // 0026 MOVE R5 R0 + 0x7C100200, // 0027 CALL R4 1 + 0x14100404, // 0028 LT R4 R2 R4 + 0x78120009, // 0029 JMPF R4 #0034 + 0x94100002, // 002A GETIDX R4 R0 R2 + 0x1C100803, // 002B EQ R4 R4 R3 + 0x78120003, // 002C JMPF R4 #0031 + 0x8C100104, // 002D GETMET R4 R0 K4 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x70020001, // 0030 JMP #0033 + 0x940C0002, // 0031 GETIDX R3 R0 R2 + 0x00080501, // 0032 ADD R2 R2 K1 + 0x7001FFF0, // 0033 JMP #0025 + 0x80040000, // 0034 RET 1 R0 }) ) ); @@ -3770,461 +1459,10 @@ be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* /******************************************************************** -** Solidified function: _trigger_read_sensors +** Solidified function: mdns_remove_PASE ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(read_sensors), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), - /* K7 */ be_nested_str_weak(load), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(plugins), - /* K10 */ be_nested_str_weak(parse_sensors), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), - }), - be_str_weak(_trigger_read_sensors), - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0xB80E0200, // 0004 GETNGBL R3 K1 - 0x8C0C0703, // 0005 GETMET R3 R3 K3 - 0x58140004, // 0006 LDCONST R5 K4 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0006, // 0008 JMPF R3 #0010 - 0xB80E0A00, // 0009 GETNGBL R3 K5 - 0x60100008, // 000A GETGBL R4 G8 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C100200, // 000C CALL R4 1 - 0x00120C04, // 000D ADD R4 K6 R4 - 0x58140004, // 000E LDCONST R5 K4 - 0x7C0C0400, // 000F CALL R3 2 - 0x4C0C0000, // 0010 LDNIL R3 - 0x1C0C0403, // 0011 EQ R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x80000600, // 0013 RET 0 - 0x8C0C0307, // 0014 GETMET R3 R1 K7 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x4C100000, // 0017 LDNIL R4 - 0x20100604, // 0018 NE R4 R3 R4 - 0x7812000D, // 0019 JMPF R4 #0028 - 0x58100008, // 001A LDCONST R4 K8 - 0x6014000C, // 001B GETGBL R5 G12 - 0x88180109, // 001C GETMBR R6 R0 K9 - 0x7C140200, // 001D CALL R5 1 - 0x14140805, // 001E LT R5 R4 R5 - 0x78160006, // 001F JMPF R5 #0027 - 0x88140109, // 0020 GETMBR R5 R0 K9 - 0x94140A04, // 0021 GETIDX R5 R5 R4 - 0x8C140B0A, // 0022 GETMET R5 R5 K10 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C140400, // 0024 CALL R5 2 - 0x0010090B, // 0025 ADD R4 R4 K11 - 0x7001FFF3, // 0026 JMP #001B - 0x70020006, // 0027 JMP #002F - 0xB8120A00, // 0028 GETNGBL R4 K5 - 0x60140008, // 0029 GETGBL R5 G8 - 0x5C180400, // 002A MOVE R6 R2 - 0x7C140200, // 002B CALL R5 1 - 0x00161805, // 002C ADD R5 K12 R5 - 0x58180004, // 002D LDCONST R6 K4 - 0x7C100400, // 002E CALL R4 2 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_second, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(events), - /* K4 */ be_nested_str_weak(commissioning_open), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(time_reached), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x8C040301, // 0007 GETMET R1 R1 K1 - 0x7C040200, // 0008 CALL R1 1 - 0x88040104, // 0009 GETMBR R1 R0 K4 - 0x4C080000, // 000A LDNIL R2 - 0x20040202, // 000B NE R1 R1 R2 - 0x78060006, // 000C JMPF R1 #0014 - 0xB8060A00, // 000D GETNGBL R1 K5 - 0x8C040306, // 000E GETMET R1 R1 K6 - 0x880C0104, // 000F GETMBR R3 R0 K4 - 0x7C040400, // 0010 CALL R1 2 - 0x78060001, // 0011 JMPF R1 #0014 - 0x4C040000, // 0012 LDNIL R1 - 0x90020801, // 0013 SETMBR R0 K4 R1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_basic_commissioning -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ - be_nested_proto( - 13, /* nstack */ - 8, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - &be_class_Matter_Device, - }), - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(commissioning_iterations), - /* K4 */ be_nested_str_weak(commissioning_discriminator), - /* K5 */ be_nested_str_weak(commissioning_salt), - /* K6 */ be_nested_str_weak(commissioning_w0), - /* K7 */ be_nested_str_weak(commissioning_L), - /* K8 */ be_nested_str_weak(commissioning_admin_fabric), - /* K9 */ be_nested_str_weak(wifi), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(mdns_announce_PASE), - /* K13 */ be_nested_str_weak(add_rule), - /* K14 */ be_nested_str_weak(Wifi_X23Connected), - /* K15 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xB8220200, // 0000 GETNGBL R8 K1 - 0x8C201102, // 0001 GETMET R8 R8 K2 - 0x7C200200, // 0002 CALL R8 1 - 0x542603E7, // 0003 LDINT R9 1000 - 0x08240209, // 0004 MUL R9 R1 R9 - 0x00201009, // 0005 ADD R8 R8 R9 - 0x90020008, // 0006 SETMBR R0 K0 R8 - 0x90020602, // 0007 SETMBR R0 K3 R2 - 0x90020803, // 0008 SETMBR R0 K4 R3 - 0x90020A04, // 0009 SETMBR R0 K5 R4 - 0x90020C05, // 000A SETMBR R0 K6 R5 - 0x90020E06, // 000B SETMBR R0 K7 R6 - 0x90021007, // 000C SETMBR R0 K8 R7 - 0xB8220200, // 000D GETNGBL R8 K1 - 0x8C201109, // 000E GETMET R8 R8 K9 - 0x7C200200, // 000F CALL R8 1 - 0x9420110A, // 0010 GETIDX R8 R8 K10 - 0x74220004, // 0011 JMPT R8 #0017 - 0xB8220200, // 0012 GETNGBL R8 K1 - 0x8C20110B, // 0013 GETMET R8 R8 K11 - 0x7C200200, // 0014 CALL R8 1 - 0x9420110A, // 0015 GETIDX R8 R8 K10 - 0x78220002, // 0016 JMPF R8 #001A - 0x8C20010C, // 0017 GETMET R8 R0 K12 - 0x7C200200, // 0018 CALL R8 1 - 0x7002000B, // 0019 JMP #0026 - 0xB8220200, // 001A GETNGBL R8 K1 - 0x8C20110D, // 001B GETMET R8 R8 K13 - 0x5828000E, // 001C LDCONST R10 K14 - 0x842C0000, // 001D CLOSURE R11 P0 - 0x5830000C, // 001E LDCONST R12 K12 - 0x7C200800, // 001F CALL R8 4 - 0xB8220200, // 0020 GETNGBL R8 K1 - 0x8C20110D, // 0021 GETMET R8 R8 K13 - 0x5828000F, // 0022 LDCONST R10 K15 - 0x842C0001, // 0023 CLOSURE R11 P1 - 0x5830000C, // 0024 LDCONST R12 K12 - 0x7C200800, // 0025 CALL R8 4 - 0xA0000000, // 0026 CLOSE R0 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(find), - /* K13 */ be_nested_str_weak(up), - /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K15 */ be_nested_str_weak(hostname_eth), - /* K16 */ be_nested_str_weak(add_service), - /* K17 */ be_nested_str_weak(_matter), - /* K18 */ be_nested_str_weak(_tcp), - /* K19 */ be_nested_str_weak(_I), - /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K21 */ be_nested_str_weak(add_subtype), - /* K22 */ be_nested_str_weak(wifi), - /* K23 */ be_nested_str_weak(hostname_wifi), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_const_int(2), - }), - be_str_weak(mdns_announce_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802005F, // 0001 EXBLK 0 #0062 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x001E1005, // 0011 ADD R7 K8 R5 - 0x58200009, // 0012 LDCONST R8 K9 - 0x7C180400, // 0013 CALL R6 2 - 0xB81A1400, // 0014 GETNGBL R6 K10 - 0x8C180D0B, // 0015 GETMET R6 R6 K11 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180D0C, // 0017 GETMET R6 R6 K12 - 0x5820000D, // 0018 LDCONST R8 K13 - 0x7C180400, // 0019 CALL R6 2 - 0x781A001E, // 001A JMPF R6 #003A - 0xB81A0E00, // 001B GETNGBL R6 K7 - 0x601C0018, // 001C GETGBL R7 G24 - 0x5820000E, // 001D LDCONST R8 K14 - 0x5824000B, // 001E LDCONST R9 K11 - 0x5C280A00, // 001F MOVE R10 R5 - 0x882C010F, // 0020 GETMBR R11 R0 K15 - 0x7C1C0800, // 0021 CALL R7 4 - 0x58200009, // 0022 LDCONST R8 K9 - 0x7C180400, // 0023 CALL R6 2 - 0x8C180510, // 0024 GETMET R6 R2 K16 - 0x58200011, // 0025 LDCONST R8 K17 - 0x58240012, // 0026 LDCONST R9 K18 - 0x542A15A3, // 0027 LDINT R10 5540 - 0x4C2C0000, // 0028 LDNIL R11 - 0x5C300A00, // 0029 MOVE R12 R5 - 0x8834010F, // 002A GETMBR R13 R0 K15 - 0x7C180E00, // 002B CALL R6 7 - 0x8C180905, // 002C GETMET R6 R4 K5 - 0x7C180200, // 002D CALL R6 1 - 0x001A2606, // 002E ADD R6 K19 R6 - 0xB81E0E00, // 002F GETNGBL R7 K7 - 0x00222806, // 0030 ADD R8 K20 R6 - 0x58240009, // 0031 LDCONST R9 K9 - 0x7C1C0400, // 0032 CALL R7 2 - 0x8C1C0515, // 0033 GETMET R7 R2 K21 - 0x58240011, // 0034 LDCONST R9 K17 - 0x58280012, // 0035 LDCONST R10 K18 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x8830010F, // 0037 GETMBR R12 R0 K15 - 0x5C340C00, // 0038 MOVE R13 R6 - 0x7C1C0C00, // 0039 CALL R7 6 - 0xB81A1400, // 003A GETNGBL R6 K10 - 0x8C180D16, // 003B GETMET R6 R6 K22 - 0x7C180200, // 003C CALL R6 1 - 0x8C180D0C, // 003D GETMET R6 R6 K12 - 0x5820000D, // 003E LDCONST R8 K13 - 0x7C180400, // 003F CALL R6 2 - 0x781A001E, // 0040 JMPF R6 #0060 - 0xB81A0E00, // 0041 GETNGBL R6 K7 - 0x601C0018, // 0042 GETGBL R7 G24 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x58240016, // 0044 LDCONST R9 K22 - 0x5C280A00, // 0045 MOVE R10 R5 - 0x882C0117, // 0046 GETMBR R11 R0 K23 - 0x7C1C0800, // 0047 CALL R7 4 - 0x58200009, // 0048 LDCONST R8 K9 - 0x7C180400, // 0049 CALL R6 2 - 0x8C180510, // 004A GETMET R6 R2 K16 - 0x58200011, // 004B LDCONST R8 K17 - 0x58240012, // 004C LDCONST R9 K18 - 0x542A15A3, // 004D LDINT R10 5540 - 0x4C2C0000, // 004E LDNIL R11 - 0x5C300A00, // 004F MOVE R12 R5 - 0x88340117, // 0050 GETMBR R13 R0 K23 - 0x7C180E00, // 0051 CALL R6 7 - 0x8C180905, // 0052 GETMET R6 R4 K5 - 0x7C180200, // 0053 CALL R6 1 - 0x001A2606, // 0054 ADD R6 K19 R6 - 0xB81E0E00, // 0055 GETNGBL R7 K7 - 0x00222806, // 0056 ADD R8 K20 R6 - 0x58240009, // 0057 LDCONST R9 K9 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C1C0515, // 0059 GETMET R7 R2 K21 - 0x58240011, // 005A LDCONST R9 K17 - 0x58280012, // 005B LDCONST R10 K18 - 0x5C2C0A00, // 005C MOVE R11 R5 - 0x88300117, // 005D GETMBR R12 R0 K23 - 0x5C340C00, // 005E MOVE R13 R6 - 0x7C1C0C00, // 005F CALL R7 6 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7002000F, // 0061 JMP #0072 - 0xAC0C0002, // 0062 CATCH R3 0 2 - 0x7002000C, // 0063 JMP #0071 - 0xB8160E00, // 0064 GETNGBL R5 K7 - 0x60180008, // 0065 GETGBL R6 G8 - 0x5C1C0600, // 0066 MOVE R7 R3 - 0x7C180200, // 0067 CALL R6 1 - 0x001A3006, // 0068 ADD R6 K24 R6 - 0x00180D19, // 0069 ADD R6 R6 K25 - 0x601C0008, // 006A GETGBL R7 G8 - 0x5C200800, // 006B MOVE R8 R4 - 0x7C1C0200, // 006C CALL R7 1 - 0x00180C07, // 006D ADD R6 R6 R7 - 0x581C001A, // 006E LDCONST R7 K26 - 0x7C140400, // 006F CALL R5 2 - 0x70020000, // 0070 JMP #0072 - 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x80000000, // 0072 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_manual_pairing_code -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ +be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ @@ -4234,168 +1472,141 @@ be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(root_discriminator), - /* K1 */ be_nested_str_weak(root_passcode), - /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Verhoeff), - /* K5 */ be_nested_str_weak(checksum), + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(mdns_pase_eth), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K4 */ be_nested_str_weak(_matterc), + /* K5 */ be_nested_str_weak(_udp), + /* K6 */ be_nested_str_weak(commissioning_instance_eth), + /* K7 */ be_nested_str_weak(hostname_eth), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K10 */ be_nested_str_weak(eth), + /* K11 */ be_nested_str_weak(remove_service), + /* K12 */ be_nested_str_weak(mdns_pase_wifi), + /* K13 */ be_nested_str_weak(commissioning_instance_wifi), + /* K14 */ be_nested_str_weak(hostname_wifi), + /* K15 */ be_nested_str_weak(wifi), + /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K17 */ be_nested_str_weak(_X7C), + /* K18 */ be_const_int(2), }), - be_str_weak(compute_manual_pairing_code), + be_str_weak(mdns_remove_PASE), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x540A0FFE, // 0001 LDINT R2 4095 - 0x2C040202, // 0002 AND R1 R1 R2 - 0x540A0009, // 0003 LDINT R2 10 - 0x3C040202, // 0004 SHR R1 R1 R2 - 0x88080100, // 0005 GETMBR R2 R0 K0 - 0x540E02FF, // 0006 LDINT R3 768 - 0x2C080403, // 0007 AND R2 R2 R3 - 0x540E0005, // 0008 LDINT R3 6 - 0x38080403, // 0009 SHL R2 R2 R3 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x54123FFE, // 000B LDINT R4 16383 - 0x2C0C0604, // 000C AND R3 R3 R4 - 0x30080403, // 000D OR R2 R2 R3 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x5412000D, // 000F LDINT R4 14 - 0x3C0C0604, // 0010 SHR R3 R3 R4 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140002, // 0012 LDCONST R5 K2 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x5C200600, // 0015 MOVE R8 R3 - 0x7C100800, // 0016 CALL R4 4 - 0xB8160600, // 0017 GETNGBL R5 K3 - 0x88140B04, // 0018 GETMBR R5 R5 K4 - 0x8C140B05, // 0019 GETMET R5 R5 K5 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x00100805, // 001C ADD R4 R4 R5 - 0x80040800, // 001D RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: event_fabrics_saved -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(save_param), - }), - be_str_weak(event_fabrics_saved), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x24040302, // 0003 GT R1 R1 K2 - 0x78060005, // 0004 JMPF R1 #000B - 0x88040103, // 0005 GETMBR R1 R0 K3 - 0x74060003, // 0006 JMPT R1 #000B - 0x50040200, // 0007 LDBOOL R1 1 0 - 0x90020601, // 0008 SETMBR R0 K3 R1 - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_autoconf_device, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(plugins_config), - /* K5 */ be_nested_str_weak(autoconf_device_map), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(adjust_next_ep), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(count_active_fabrics), - /* K14 */ be_nested_str_weak(save_param), - }), - be_str_weak(autoconf_device), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ + ( &(const binstruction[77]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x24080502, // 0004 GT R2 R2 K2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x80000400, // 0006 RET 0 - 0x88080103, // 0007 GETMBR R2 R0 K3 - 0x740A000E, // 0008 JMPT R2 #0018 - 0x8C080105, // 0009 GETMET R2 R0 K5 - 0x7C080200, // 000A CALL R2 1 - 0x90020802, // 000B SETMBR R0 K4 R2 - 0x60080013, // 000C GETGBL R2 G19 - 0x7C080000, // 000D CALL R2 0 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x7C080200, // 0010 CALL R2 1 - 0xB80A1000, // 0011 GETNGBL R2 K8 - 0x600C0008, // 0012 GETGBL R3 G8 - 0x88100104, // 0013 GETMBR R4 R0 K4 - 0x7C0C0200, // 0014 CALL R3 1 - 0x000E1203, // 0015 ADD R3 K9 R3 - 0x5810000A, // 0016 LDCONST R4 K10 - 0x7C080400, // 0017 CALL R2 2 - 0x8C08010B, // 0018 GETMET R2 R0 K11 - 0x88100104, // 0019 GETMBR R4 R0 K4 - 0x7C080400, // 001A CALL R2 2 - 0x88080103, // 001B GETMBR R2 R0 K3 - 0x740A0008, // 001C JMPT R2 #0026 - 0x8808010C, // 001D GETMBR R2 R0 K12 - 0x8C08050D, // 001E GETMET R2 R2 K13 - 0x7C080200, // 001F CALL R2 1 - 0x24080502, // 0020 GT R2 R2 K2 - 0x780A0003, // 0021 JMPF R2 #0026 - 0x50080200, // 0022 LDBOOL R2 1 0 - 0x90020602, // 0023 SETMBR R0 K3 R2 - 0x8C08010E, // 0024 GETMET R2 R0 K14 - 0x7C080200, // 0025 CALL R2 1 - 0x80000000, // 0026 RET 0 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x780A0019, // 0003 JMPF R2 #001E + 0xB80A0400, // 0004 GETNGBL R2 K2 + 0x600C0018, // 0005 GETGBL R3 G24 + 0x58100003, // 0006 LDCONST R4 K3 + 0x58140004, // 0007 LDCONST R5 K4 + 0x58180005, // 0008 LDCONST R6 K5 + 0x881C0106, // 0009 GETMBR R7 R0 K6 + 0x88200107, // 000A GETMBR R8 R0 K7 + 0x7C0C0A00, // 000B CALL R3 5 + 0x58100008, // 000C LDCONST R4 K8 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0400, // 000E GETNGBL R2 K2 + 0x600C0018, // 000F GETGBL R3 G24 + 0x58100009, // 0010 LDCONST R4 K9 + 0x5814000A, // 0011 LDCONST R5 K10 + 0x88180106, // 0012 GETMBR R6 R0 K6 + 0x7C0C0600, // 0013 CALL R3 3 + 0x58100008, // 0014 LDCONST R4 K8 + 0x7C080400, // 0015 CALL R2 2 + 0x50080000, // 0016 LDBOOL R2 0 0 + 0x90020202, // 0017 SETMBR R0 K1 R2 + 0x8C08030B, // 0018 GETMET R2 R1 K11 + 0x58100004, // 0019 LDCONST R4 K4 + 0x58140005, // 001A LDCONST R5 K5 + 0x88180106, // 001B GETMBR R6 R0 K6 + 0x881C0107, // 001C GETMBR R7 R0 K7 + 0x7C080A00, // 001D CALL R2 5 + 0x8808010C, // 001E GETMBR R2 R0 K12 + 0x780A0019, // 001F JMPF R2 #003A + 0xB80A0400, // 0020 GETNGBL R2 K2 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100003, // 0022 LDCONST R4 K3 + 0x58140004, // 0023 LDCONST R5 K4 + 0x58180005, // 0024 LDCONST R6 K5 + 0x881C010D, // 0025 GETMBR R7 R0 K13 + 0x8820010E, // 0026 GETMBR R8 R0 K14 + 0x7C0C0A00, // 0027 CALL R3 5 + 0x58100008, // 0028 LDCONST R4 K8 + 0x7C080400, // 0029 CALL R2 2 + 0xB80A0400, // 002A GETNGBL R2 K2 + 0x600C0018, // 002B GETGBL R3 G24 + 0x58100009, // 002C LDCONST R4 K9 + 0x5814000F, // 002D LDCONST R5 K15 + 0x8818010D, // 002E GETMBR R6 R0 K13 + 0x7C0C0600, // 002F CALL R3 3 + 0x58100008, // 0030 LDCONST R4 K8 + 0x7C080400, // 0031 CALL R2 2 + 0x50080000, // 0032 LDBOOL R2 0 0 + 0x90021802, // 0033 SETMBR R0 K12 R2 + 0x8C08030B, // 0034 GETMET R2 R1 K11 + 0x58100004, // 0035 LDCONST R4 K4 + 0x58140005, // 0036 LDCONST R5 K5 + 0x8818010D, // 0037 GETMBR R6 R0 K13 + 0x881C010E, // 0038 GETMBR R7 R0 K14 + 0x7C080A00, // 0039 CALL R2 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC080002, // 003C CATCH R2 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8120400, // 003E GETNGBL R4 K2 + 0x60140008, // 003F GETGBL R5 G8 + 0x5C180400, // 0040 MOVE R6 R2 + 0x7C140200, // 0041 CALL R5 1 + 0x00162005, // 0042 ADD R5 K16 R5 + 0x00140B11, // 0043 ADD R5 R5 K17 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x00140A06, // 0047 ADD R5 R5 R6 + 0x58180012, // 0048 LDCONST R6 K18 + 0x7C100400, // 0049 CALL R4 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_remote_info +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config_remotes), + /* K1 */ be_nested_str_weak(find), + }), + be_str_weak(get_plugin_remote_info), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140013, // 0003 GETGBL R5 G19 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -4525,12 +1736,12 @@ be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name * /******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_fabrics +** Solidified function: event_fabrics_saved ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ +be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ be_nested_proto( - 6, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4538,39 +1749,28 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, / 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(plugins_persist), + /* K4 */ be_nested_str_weak(save_param), }), - be_str_weak(mdns_announce_op_discovery_all_fabrics), + be_str_weak(event_fabrics_saved), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x24040302, // 0003 GT R1 R1 K2 + 0x78060005, // 0004 JMPF R1 #000B + 0x88040103, // 0005 GETMBR R1 R0 K3 + 0x74060003, // 0006 JMPT R1 #000B + 0x50040200, // 0007 LDBOOL R1 1 0 + 0x90020601, // 0008 SETMBR R0 K3 R1 + 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x7C040200, // 000A CALL R1 1 + 0x80000000, // 000B RET 0 }) ) ); @@ -4578,170 +1778,133 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, / /******************************************************************** -** Solidified function: mdns_remove_op_discovery +** Solidified function: start_mdns_announce_hostnames ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(eth), - /* K9 */ be_nested_str_weak(find), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(remove_service), - /* K15 */ be_nested_str_weak(_matter), - /* K16 */ be_nested_str_weak(_tcp), - /* K17 */ be_nested_str_weak(hostname_eth), - /* K18 */ be_nested_str_weak(wifi), - /* K19 */ be_nested_str_weak(hostname_wifi), - /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K21 */ be_nested_str_weak(_X7C), - /* K22 */ be_const_int(2), - }), - be_str_weak(mdns_remove_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x8C180D08, // 0011 GETMET R6 R6 K8 - 0x7C180200, // 0012 CALL R6 1 - 0x8C180D09, // 0013 GETMET R6 R6 K9 - 0x5820000A, // 0014 LDCONST R8 K10 - 0x7C180400, // 0015 CALL R6 2 - 0x781A000D, // 0016 JMPF R6 #0025 - 0xB81A1600, // 0017 GETNGBL R6 K11 - 0x601C0018, // 0018 GETGBL R7 G24 - 0x5820000C, // 0019 LDCONST R8 K12 - 0x58240008, // 001A LDCONST R9 K8 - 0x5C280A00, // 001B MOVE R10 R5 - 0x7C1C0600, // 001C CALL R7 3 - 0x5820000D, // 001D LDCONST R8 K13 - 0x7C180400, // 001E CALL R6 2 - 0x8C18050E, // 001F GETMET R6 R2 K14 - 0x5820000F, // 0020 LDCONST R8 K15 - 0x58240010, // 0021 LDCONST R9 K16 - 0x5C280A00, // 0022 MOVE R10 R5 - 0x882C0111, // 0023 GETMBR R11 R0 K17 - 0x7C180A00, // 0024 CALL R6 5 - 0xB81A0E00, // 0025 GETNGBL R6 K7 - 0x8C180D12, // 0026 GETMET R6 R6 K18 - 0x7C180200, // 0027 CALL R6 1 - 0x8C180D09, // 0028 GETMET R6 R6 K9 - 0x5820000A, // 0029 LDCONST R8 K10 - 0x7C180400, // 002A CALL R6 2 - 0x781A000D, // 002B JMPF R6 #003A - 0xB81A1600, // 002C GETNGBL R6 K11 - 0x601C0018, // 002D GETGBL R7 G24 - 0x5820000C, // 002E LDCONST R8 K12 - 0x58240012, // 002F LDCONST R9 K18 - 0x5C280A00, // 0030 MOVE R10 R5 - 0x7C1C0600, // 0031 CALL R7 3 - 0x5820000D, // 0032 LDCONST R8 K13 - 0x7C180400, // 0033 CALL R6 2 - 0x8C18050E, // 0034 GETMET R6 R2 K14 - 0x5820000F, // 0035 LDCONST R8 K15 - 0x58240010, // 0036 LDCONST R9 K16 - 0x5C280A00, // 0037 MOVE R10 R5 - 0x882C0113, // 0038 GETMBR R11 R0 K19 - 0x7C180A00, // 0039 CALL R6 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC0C0002, // 003C CATCH R3 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8161600, // 003E GETNGBL R5 K11 - 0x60180008, // 003F GETGBL R6 G8 - 0x5C1C0600, // 0040 MOVE R7 R3 - 0x7C180200, // 0041 CALL R6 1 - 0x001A2806, // 0042 ADD R6 K20 R6 - 0x00180D15, // 0043 ADD R6 R6 K21 - 0x601C0008, // 0044 GETGBL R7 G8 - 0x5C200800, // 0045 MOVE R8 R4 - 0x7C1C0200, // 0046 CALL R7 1 - 0x00180C07, // 0047 ADD R6 R6 R7 - 0x581C0016, // 0048 LDCONST R7 K22 - 0x7C140400, // 0049 CALL R5 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_endpoint -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ +be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ be_nested_proto( 6, /* nstack */ - 2, /* argc */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_endpoint), - /* K3 */ be_const_int(1), }), - be_str_weak(find_plugin_by_endpoint), + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(wifi), + /* K2 */ be_nested_str_weak(up), + /* K3 */ be_nested_str_weak(_mdns_announce_hostname), + /* K4 */ be_nested_str_weak(add_rule), + /* K5 */ be_nested_str_weak(Wifi_X23Connected), + /* K6 */ be_nested_str_weak(matter_mdns_host), + /* K7 */ be_nested_str_weak(eth), + /* K8 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_mdns_announce_hostnames), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C100702, // 0008 GETMET R4 R3 K2 - 0x7C100200, // 0009 CALL R4 1 - 0x1C100801, // 000A EQ R4 R4 R1 - 0x78120000, // 000B JMPF R4 #000D - 0x80040600, // 000C RET 1 R3 - 0x00080503, // 000D ADD R2 R2 K3 - 0x7001FFF1, // 000E JMP #0001 - 0x4C0C0000, // 000F LDNIL R3 - 0x80040600, // 0010 RET 1 R3 + ( &(const binstruction[32]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x94040302, // 0003 GETIDX R1 R1 K2 + 0x78060003, // 0004 JMPF R1 #0009 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x500C0000, // 0006 LDBOOL R3 0 0 + 0x7C040400, // 0007 CALL R1 2 + 0x70020005, // 0008 JMP #000F + 0xB8060000, // 0009 GETNGBL R1 K0 + 0x8C040304, // 000A GETMET R1 R1 K4 + 0x580C0005, // 000B LDCONST R3 K5 + 0x84100000, // 000C CLOSURE R4 P0 + 0x58140006, // 000D LDCONST R5 K6 + 0x7C040800, // 000E CALL R1 4 + 0xB8060000, // 000F GETNGBL R1 K0 + 0x8C040307, // 0010 GETMET R1 R1 K7 + 0x7C040200, // 0011 CALL R1 1 + 0x94040302, // 0012 GETIDX R1 R1 K2 + 0x78060003, // 0013 JMPF R1 #0018 + 0x8C040103, // 0014 GETMET R1 R0 K3 + 0x500C0200, // 0015 LDBOOL R3 1 0 + 0x7C040400, // 0016 CALL R1 2 + 0x70020005, // 0017 JMP #001E + 0xB8060000, // 0018 GETNGBL R1 K0 + 0x8C040304, // 0019 GETMET R1 R1 K4 + 0x580C0008, // 001A LDCONST R3 K8 + 0x84100001, // 001B CLOSURE R4 P1 + 0x58140006, // 001C LDCONST R5 K6 + 0x7C040800, // 001D CALL R1 4 + 0xA0000000, // 001E CLOSE R0 + 0x80000000, // 001F RET 0 }) ) ); @@ -5035,6 +2198,1766 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: autoconf_sensors_list +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(k2l), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(Temperature), + /* K3 */ be_nested_str_weak(_X23Temperature), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(temperature), + /* K7 */ be_nested_str_weak(filter), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(Pressure), + /* K10 */ be_nested_str_weak(_X23Pressure), + /* K11 */ be_nested_str_weak(pressure), + /* K12 */ be_nested_str_weak(Illuminance), + /* K13 */ be_nested_str_weak(_X23Illuminance), + /* K14 */ be_nested_str_weak(illuminance), + /* K15 */ be_nested_str_weak(Humidity), + /* K16 */ be_nested_str_weak(_X23Humidity), + /* K17 */ be_nested_str_weak(humidity), + }), + be_str_weak(autoconf_sensors_list), + &be_const_str_solidified, + ( &(const binstruction[119]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100100, // 0003 GETMET R4 R0 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020013, // 0007 EXBLK 0 #001C + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x94140204, // 000A GETIDX R5 R1 R4 + 0x6018000F, // 000B GETGBL R6 G15 + 0x5C1C0A00, // 000C MOVE R7 R5 + 0x60200013, // 000D GETGBL R8 G19 + 0x7C180400, // 000E CALL R6 2 + 0x781A000A, // 000F JMPF R6 #001B + 0x8C180B01, // 0010 GETMET R6 R5 K1 + 0x58200002, // 0011 LDCONST R8 K2 + 0x7C180400, // 0012 CALL R6 2 + 0x781A0006, // 0013 JMPF R6 #001B + 0x00180903, // 0014 ADD R6 R4 K3 + 0x8C1C0504, // 0015 GETMET R7 R2 K4 + 0x60240013, // 0016 GETGBL R9 G19 + 0x7C240000, // 0017 CALL R9 0 + 0x98260B06, // 0018 SETIDX R9 K5 K6 + 0x98260E06, // 0019 SETIDX R9 K7 R6 + 0x7C1C0400, // 001A CALL R7 2 + 0x7001FFEB, // 001B JMP #0008 + 0x580C0008, // 001C LDCONST R3 K8 + 0xAC0C0200, // 001D CATCH R3 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x600C0010, // 001F GETGBL R3 G16 + 0x8C100100, // 0020 GETMET R4 R0 K0 + 0x5C180200, // 0021 MOVE R6 R1 + 0x7C100400, // 0022 CALL R4 2 + 0x7C0C0200, // 0023 CALL R3 1 + 0xA8020013, // 0024 EXBLK 0 #0039 + 0x5C100600, // 0025 MOVE R4 R3 + 0x7C100000, // 0026 CALL R4 0 + 0x94140204, // 0027 GETIDX R5 R1 R4 + 0x6018000F, // 0028 GETGBL R6 G15 + 0x5C1C0A00, // 0029 MOVE R7 R5 + 0x60200013, // 002A GETGBL R8 G19 + 0x7C180400, // 002B CALL R6 2 + 0x781A000A, // 002C JMPF R6 #0038 + 0x8C180B01, // 002D GETMET R6 R5 K1 + 0x58200009, // 002E LDCONST R8 K9 + 0x7C180400, // 002F CALL R6 2 + 0x781A0006, // 0030 JMPF R6 #0038 + 0x0018090A, // 0031 ADD R6 R4 K10 + 0x8C1C0504, // 0032 GETMET R7 R2 K4 + 0x60240013, // 0033 GETGBL R9 G19 + 0x7C240000, // 0034 CALL R9 0 + 0x98260B0B, // 0035 SETIDX R9 K5 K11 + 0x98260E06, // 0036 SETIDX R9 K7 R6 + 0x7C1C0400, // 0037 CALL R7 2 + 0x7001FFEB, // 0038 JMP #0025 + 0x580C0008, // 0039 LDCONST R3 K8 + 0xAC0C0200, // 003A CATCH R3 1 0 + 0xB0080000, // 003B RAISE 2 R0 R0 + 0x600C0010, // 003C GETGBL R3 G16 + 0x8C100100, // 003D GETMET R4 R0 K0 + 0x5C180200, // 003E MOVE R6 R1 + 0x7C100400, // 003F CALL R4 2 + 0x7C0C0200, // 0040 CALL R3 1 + 0xA8020013, // 0041 EXBLK 0 #0056 + 0x5C100600, // 0042 MOVE R4 R3 + 0x7C100000, // 0043 CALL R4 0 + 0x94140204, // 0044 GETIDX R5 R1 R4 + 0x6018000F, // 0045 GETGBL R6 G15 + 0x5C1C0A00, // 0046 MOVE R7 R5 + 0x60200013, // 0047 GETGBL R8 G19 + 0x7C180400, // 0048 CALL R6 2 + 0x781A000A, // 0049 JMPF R6 #0055 + 0x8C180B01, // 004A GETMET R6 R5 K1 + 0x5820000C, // 004B LDCONST R8 K12 + 0x7C180400, // 004C CALL R6 2 + 0x781A0006, // 004D JMPF R6 #0055 + 0x0018090D, // 004E ADD R6 R4 K13 + 0x8C1C0504, // 004F GETMET R7 R2 K4 + 0x60240013, // 0050 GETGBL R9 G19 + 0x7C240000, // 0051 CALL R9 0 + 0x98260B0E, // 0052 SETIDX R9 K5 K14 + 0x98260E06, // 0053 SETIDX R9 K7 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x7001FFEB, // 0055 JMP #0042 + 0x580C0008, // 0056 LDCONST R3 K8 + 0xAC0C0200, // 0057 CATCH R3 1 0 + 0xB0080000, // 0058 RAISE 2 R0 R0 + 0x600C0010, // 0059 GETGBL R3 G16 + 0x8C100100, // 005A GETMET R4 R0 K0 + 0x5C180200, // 005B MOVE R6 R1 + 0x7C100400, // 005C CALL R4 2 + 0x7C0C0200, // 005D CALL R3 1 + 0xA8020013, // 005E EXBLK 0 #0073 + 0x5C100600, // 005F MOVE R4 R3 + 0x7C100000, // 0060 CALL R4 0 + 0x94140204, // 0061 GETIDX R5 R1 R4 + 0x6018000F, // 0062 GETGBL R6 G15 + 0x5C1C0A00, // 0063 MOVE R7 R5 + 0x60200013, // 0064 GETGBL R8 G19 + 0x7C180400, // 0065 CALL R6 2 + 0x781A000A, // 0066 JMPF R6 #0072 + 0x8C180B01, // 0067 GETMET R6 R5 K1 + 0x5820000F, // 0068 LDCONST R8 K15 + 0x7C180400, // 0069 CALL R6 2 + 0x781A0006, // 006A JMPF R6 #0072 + 0x00180910, // 006B ADD R6 R4 K16 + 0x8C1C0504, // 006C GETMET R7 R2 K4 + 0x60240013, // 006D GETGBL R9 G19 + 0x7C240000, // 006E CALL R9 0 + 0x98260B11, // 006F SETIDX R9 K5 K17 + 0x98260E06, // 0070 SETIDX R9 K7 R6 + 0x7C1C0400, // 0071 CALL R7 2 + 0x7001FFEB, // 0072 JMP #005F + 0x580C0008, // 0073 LDCONST R3 K8 + 0xAC0C0200, // 0074 CATCH R3 1 0 + 0xB0080000, // 0075 RAISE 2 R0 R0 + 0x80040400, // 0076 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_attribute_expansion +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(start), + /* K6 */ be_nested_str_weak(is_direct), + /* K7 */ be_nested_str_weak(next_attribute), + /* K8 */ be_nested_str_weak(get_pi), + }), + be_str_weak(process_attribute_expansion), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x88140302, // 0002 GETMBR R5 R1 K2 + 0xB81A0600, // 0003 GETNGBL R6 K3 + 0x8C180D04, // 0004 GETMET R6 R6 K4 + 0x5C200000, // 0005 MOVE R8 R0 + 0x7C180400, // 0006 CALL R6 2 + 0x8C1C0D05, // 0007 GETMET R7 R6 K5 + 0x5C240600, // 0008 MOVE R9 R3 + 0x5C280800, // 0009 MOVE R10 R4 + 0x5C2C0A00, // 000A MOVE R11 R5 + 0x7C1C0800, // 000B CALL R7 4 + 0x8C1C0D06, // 000C GETMET R7 R6 K6 + 0x7C1C0200, // 000D CALL R7 1 + 0x4C200000, // 000E LDNIL R8 + 0x8C240D07, // 000F GETMET R9 R6 K7 + 0x7C240200, // 0010 CALL R9 1 + 0x5C201200, // 0011 MOVE R8 R9 + 0x4C280000, // 0012 LDNIL R10 + 0x2024120A, // 0013 NE R9 R9 R10 + 0x78260005, // 0014 JMPF R9 #001B + 0x5C240400, // 0015 MOVE R9 R2 + 0x8C280D08, // 0016 GETMET R10 R6 K8 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C1000, // 0018 MOVE R11 R8 + 0x7C240400, // 0019 CALL R9 2 + 0x7001FFF3, // 001A JMP #000F + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(is_root_commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(publish_result), + /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), + /* K4 */ be_nested_str_weak(Matter), + /* K5 */ be_nested_str_weak(commissioning_open), + /* K6 */ be_nested_str_weak(mdns_remove_PASE), + /* K7 */ be_nested_str_weak(commissioning_iterations), + /* K8 */ be_nested_str_weak(commissioning_discriminator), + /* K9 */ be_nested_str_weak(commissioning_salt), + /* K10 */ be_nested_str_weak(commissioning_w0), + /* K11 */ be_nested_str_weak(commissioning_L), + /* K12 */ be_nested_str_weak(commissioning_admin_fabric), + }), + be_str_weak(stop_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x78060004, // 0002 JMPF R1 #0008 + 0xB8060200, // 0003 GETNGBL R1 K1 + 0x8C040302, // 0004 GETMET R1 R1 K2 + 0x580C0003, // 0005 LDCONST R3 K3 + 0x58100004, // 0006 LDCONST R4 K4 + 0x7C040600, // 0007 CALL R1 3 + 0x4C040000, // 0008 LDNIL R1 + 0x90020A01, // 0009 SETMBR R0 K5 R1 + 0x8C040106, // 000A GETMET R1 R0 K6 + 0x7C040200, // 000B CALL R1 1 + 0x4C040000, // 000C LDNIL R1 + 0x90020E01, // 000D SETMBR R0 K7 R1 + 0x4C040000, // 000E LDNIL R1 + 0x90021001, // 000F SETMBR R0 K8 R1 + 0x4C040000, // 0010 LDNIL R1 + 0x90021201, // 0011 SETMBR R0 K9 R1 + 0x4C040000, // 0012 LDNIL R1 + 0x90021401, // 0013 SETMBR R0 K10 R1 + 0x4C040000, // 0014 LDNIL R1 + 0x90021601, // 0015 SETMBR R0 K11 R1 + 0x4C040000, // 0016 LDNIL R1 + 0x90021801, // 0017 SETMBR R0 K12 R1 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clean_remotes +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_clean_remotes, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(http_remotes), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(plugins), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_nested_str_weak(http_remote), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(keys), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), + /* K13 */ be_nested_str_weak(addr), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(close), + /* K16 */ be_nested_str_weak(remove), + }), + be_str_weak(clean_remotes), + &be_const_str_solidified, + ( &(const binstruction[80]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x780A004B, // 0002 JMPF R2 #004F + 0x60080013, // 0003 GETGBL R2 G19 + 0x7C080000, // 0004 CALL R2 0 + 0x600C0010, // 0005 GETGBL R3 G16 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020003, // 0008 EXBLK 0 #000D + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x98080902, // 000B SETIDX R2 R4 K2 + 0x7001FFFB, // 000C JMP #0009 + 0x580C0003, // 000D LDCONST R3 K3 + 0xAC0C0200, // 000E CATCH R3 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100104, // 0011 GETMBR R4 R0 K4 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA802000F, // 0013 EXBLK 0 #0024 + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x8C140305, // 0016 GETMET R5 R1 K5 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200006, // 0018 LDCONST R8 K6 + 0x7C140600, // 0019 CALL R5 3 + 0x4C180000, // 001A LDNIL R6 + 0x20180A06, // 001B NE R6 R5 R6 + 0x781A0005, // 001C JMPF R6 #0023 + 0x8C180507, // 001D GETMET R6 R2 K7 + 0x5C200A00, // 001E MOVE R8 R5 + 0x58240002, // 001F LDCONST R9 K2 + 0x7C180600, // 0020 CALL R6 3 + 0x00180D08, // 0021 ADD R6 R6 K8 + 0x98080A06, // 0022 SETIDX R2 R5 R6 + 0x7001FFEF, // 0023 JMP #0014 + 0x580C0003, // 0024 LDCONST R3 K3 + 0xAC0C0200, // 0025 CATCH R3 1 0 + 0xB0080000, // 0026 RAISE 2 R0 R0 + 0x600C0012, // 0027 GETGBL R3 G18 + 0x7C0C0000, // 0028 CALL R3 0 + 0x60100010, // 0029 GETGBL R4 G16 + 0x8C140509, // 002A GETMET R5 R2 K9 + 0x7C140200, // 002B CALL R5 1 + 0x7C100200, // 002C CALL R4 1 + 0xA8020008, // 002D EXBLK 0 #0037 + 0x5C140800, // 002E MOVE R5 R4 + 0x7C140000, // 002F CALL R5 0 + 0x94180405, // 0030 GETIDX R6 R2 R5 + 0x1C180D02, // 0031 EQ R6 R6 K2 + 0x781A0002, // 0032 JMPF R6 #0036 + 0x8C18070A, // 0033 GETMET R6 R3 K10 + 0x5C200A00, // 0034 MOVE R8 R5 + 0x7C180400, // 0035 CALL R6 2 + 0x7001FFF6, // 0036 JMP #002E + 0x58100003, // 0037 LDCONST R4 K3 + 0xAC100200, // 0038 CATCH R4 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x60100010, // 003A GETGBL R4 G16 + 0x5C140600, // 003B MOVE R5 R3 + 0x7C100200, // 003C CALL R4 1 + 0xA802000D, // 003D EXBLK 0 #004C + 0x5C140800, // 003E MOVE R5 R4 + 0x7C140000, // 003F CALL R5 0 + 0xB81A1600, // 0040 GETNGBL R6 K11 + 0x881C0B0D, // 0041 GETMBR R7 R5 K13 + 0x001E1807, // 0042 ADD R7 K12 R7 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x7C180400, // 0044 CALL R6 2 + 0x8C180B0F, // 0045 GETMET R6 R5 K15 + 0x7C180200, // 0046 CALL R6 1 + 0x88180101, // 0047 GETMBR R6 R0 K1 + 0x8C180D10, // 0048 GETMET R6 R6 K16 + 0x88200B0D, // 0049 GETMBR R8 R5 K13 + 0x7C180400, // 004A CALL R6 2 + 0x7001FFF1, // 004B JMP #003E + 0x58100003, // 004C LDCONST R4 K3 + 0xAC100200, // 004D CATCH R4 1 0 + 0xB0080000, // 004E RAISE 2 R0 R0 + 0x80000000, // 004F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_init, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(get_option), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(MATTER_OPTION), + /* K5 */ be_nested_str_weak(UI), + /* K6 */ be_nested_str_weak(profiler), + /* K7 */ be_nested_str_weak(Profiler), + /* K8 */ be_nested_str_weak(started), + /* K9 */ be_nested_str_weak(tick), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(plugins_config_remotes), + /* K14 */ be_nested_str_weak(next_ep), + /* K15 */ be_const_int(2), + /* K16 */ be_nested_str_weak(ipv4only), + /* K17 */ be_nested_str_weak(disable_bridge_mode), + /* K18 */ be_nested_str_weak(load_param), + /* K19 */ be_nested_str_weak(sessions), + /* K20 */ be_nested_str_weak(Session_Store), + /* K21 */ be_nested_str_weak(load_fabrics), + /* K22 */ be_nested_str_weak(message_handler), + /* K23 */ be_nested_str_weak(MessageHandler), + /* K24 */ be_nested_str_weak(events), + /* K25 */ be_nested_str_weak(EventHandler), + /* K26 */ be_nested_str_weak(ui), + /* K27 */ be_nested_str_weak(wifi), + /* K28 */ be_nested_str_weak(up), + /* K29 */ be_nested_str_weak(eth), + /* K30 */ be_nested_str_weak(start), + /* K31 */ be_nested_str_weak(add_rule), + /* K32 */ be_nested_str_weak(Wifi_X23Connected), + /* K33 */ be_nested_str_weak(matter_start), + /* K34 */ be_nested_str_weak(Eth_X23Connected), + /* K35 */ be_nested_str_weak(_init_basic_commissioning), + /* K36 */ be_nested_str_weak(add_driver), + /* K37 */ be_nested_str_weak(register_commands), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[102]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x88100904, // 0004 GETMBR R4 R4 K4 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0004, // 0006 JMPT R2 #000C + 0xB80A0600, // 0007 GETNGBL R2 K3 + 0x8C080505, // 0008 GETMET R2 R2 K5 + 0x5C100000, // 0009 MOVE R4 R0 + 0x7C080400, // 000A CALL R2 2 + 0x80000400, // 000B RET 0 + 0xB80A0600, // 000C GETNGBL R2 K3 + 0xB80E0600, // 000D GETNGBL R3 K3 + 0x8C0C0707, // 000E GETMET R3 R3 K7 + 0x7C0C0200, // 000F CALL R3 1 + 0x900A0C03, // 0010 SETMBR R2 K6 R3 + 0x50080000, // 0011 LDBOOL R2 0 0 + 0x90021002, // 0012 SETMBR R0 K8 R2 + 0x9002130A, // 0013 SETMBR R0 K9 K10 + 0x60080012, // 0014 GETGBL R2 G18 + 0x7C080000, // 0015 CALL R2 0 + 0x90021602, // 0016 SETMBR R0 K11 R2 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x90021802, // 0018 SETMBR R0 K12 R2 + 0x60080013, // 0019 GETGBL R2 G19 + 0x7C080000, // 001A CALL R2 0 + 0x90021A02, // 001B SETMBR R0 K13 R2 + 0x90021D0F, // 001C SETMBR R0 K14 K15 + 0x50080000, // 001D LDBOOL R2 0 0 + 0x90022002, // 001E SETMBR R0 K16 R2 + 0x50080000, // 001F LDBOOL R2 0 0 + 0x90022202, // 0020 SETMBR R0 K17 R2 + 0x8C080112, // 0021 GETMET R2 R0 K18 + 0x7C080200, // 0022 CALL R2 1 + 0xB80A0600, // 0023 GETNGBL R2 K3 + 0x8C080514, // 0024 GETMET R2 R2 K20 + 0x5C100000, // 0025 MOVE R4 R0 + 0x7C080400, // 0026 CALL R2 2 + 0x90022602, // 0027 SETMBR R0 K19 R2 + 0x88080113, // 0028 GETMBR R2 R0 K19 + 0x8C080515, // 0029 GETMET R2 R2 K21 + 0x7C080200, // 002A CALL R2 1 + 0xB80A0600, // 002B GETNGBL R2 K3 + 0x8C080517, // 002C GETMET R2 R2 K23 + 0x5C100000, // 002D MOVE R4 R0 + 0x7C080400, // 002E CALL R2 2 + 0x90022C02, // 002F SETMBR R0 K22 R2 + 0xB80A0600, // 0030 GETNGBL R2 K3 + 0x8C080519, // 0031 GETMET R2 R2 K25 + 0x5C100000, // 0032 MOVE R4 R0 + 0x7C080400, // 0033 CALL R2 2 + 0x90023002, // 0034 SETMBR R0 K24 R2 + 0xB80A0600, // 0035 GETNGBL R2 K3 + 0x8C080505, // 0036 GETMET R2 R2 K5 + 0x5C100000, // 0037 MOVE R4 R0 + 0x7C080400, // 0038 CALL R2 2 + 0x90023402, // 0039 SETMBR R0 K26 R2 + 0xB80A0200, // 003A GETNGBL R2 K1 + 0x8C08051B, // 003B GETMET R2 R2 K27 + 0x7C080200, // 003C CALL R2 1 + 0x9408051C, // 003D GETIDX R2 R2 K28 + 0x740A0004, // 003E JMPT R2 #0044 + 0xB80A0200, // 003F GETNGBL R2 K1 + 0x8C08051D, // 0040 GETMET R2 R2 K29 + 0x7C080200, // 0041 CALL R2 1 + 0x9408051C, // 0042 GETIDX R2 R2 K28 + 0x780A0001, // 0043 JMPF R2 #0046 + 0x8C08011E, // 0044 GETMET R2 R0 K30 + 0x7C080200, // 0045 CALL R2 1 + 0xB80A0200, // 0046 GETNGBL R2 K1 + 0x8C08051B, // 0047 GETMET R2 R2 K27 + 0x7C080200, // 0048 CALL R2 1 + 0x9408051C, // 0049 GETIDX R2 R2 K28 + 0x740A0005, // 004A JMPT R2 #0051 + 0xB80A0200, // 004B GETNGBL R2 K1 + 0x8C08051F, // 004C GETMET R2 R2 K31 + 0x58100020, // 004D LDCONST R4 K32 + 0x84140000, // 004E CLOSURE R5 P0 + 0x58180021, // 004F LDCONST R6 K33 + 0x7C080800, // 0050 CALL R2 4 + 0xB80A0200, // 0051 GETNGBL R2 K1 + 0x8C08051D, // 0052 GETMET R2 R2 K29 + 0x7C080200, // 0053 CALL R2 1 + 0x9408051C, // 0054 GETIDX R2 R2 K28 + 0x740A0005, // 0055 JMPT R2 #005C + 0xB80A0200, // 0056 GETNGBL R2 K1 + 0x8C08051F, // 0057 GETMET R2 R2 K31 + 0x58100022, // 0058 LDCONST R4 K34 + 0x84140001, // 0059 CLOSURE R5 P1 + 0x58180021, // 005A LDCONST R6 K33 + 0x7C080800, // 005B CALL R2 4 + 0x8C080123, // 005C GETMET R2 R0 K35 + 0x7C080200, // 005D CALL R2 1 + 0xB80A0200, // 005E GETNGBL R2 K1 + 0x8C080524, // 005F GETMET R2 R2 K36 + 0x5C100000, // 0060 MOVE R4 R0 + 0x7C080400, // 0061 CALL R2 2 + 0x8C080125, // 0062 GETMET R2 R0 K37 + 0x7C080200, // 0063 CALL R2 1 + 0xA0000000, // 0064 CLOSE R0 + 0x80000000, // 0065 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ + be_nested_proto( + 12, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(eth), + /* K9 */ be_nested_str_weak(find), + /* K10 */ be_nested_str_weak(up), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K13 */ be_const_int(3), + /* K14 */ be_nested_str_weak(remove_service), + /* K15 */ be_nested_str_weak(_matter), + /* K16 */ be_nested_str_weak(_tcp), + /* K17 */ be_nested_str_weak(hostname_eth), + /* K18 */ be_nested_str_weak(wifi), + /* K19 */ be_nested_str_weak(hostname_wifi), + /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K21 */ be_nested_str_weak(_X7C), + /* K22 */ be_const_int(2), + }), + be_str_weak(mdns_remove_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x8C180D08, // 0011 GETMET R6 R6 K8 + 0x7C180200, // 0012 CALL R6 1 + 0x8C180D09, // 0013 GETMET R6 R6 K9 + 0x5820000A, // 0014 LDCONST R8 K10 + 0x7C180400, // 0015 CALL R6 2 + 0x781A000D, // 0016 JMPF R6 #0025 + 0xB81A1600, // 0017 GETNGBL R6 K11 + 0x601C0018, // 0018 GETGBL R7 G24 + 0x5820000C, // 0019 LDCONST R8 K12 + 0x58240008, // 001A LDCONST R9 K8 + 0x5C280A00, // 001B MOVE R10 R5 + 0x7C1C0600, // 001C CALL R7 3 + 0x5820000D, // 001D LDCONST R8 K13 + 0x7C180400, // 001E CALL R6 2 + 0x8C18050E, // 001F GETMET R6 R2 K14 + 0x5820000F, // 0020 LDCONST R8 K15 + 0x58240010, // 0021 LDCONST R9 K16 + 0x5C280A00, // 0022 MOVE R10 R5 + 0x882C0111, // 0023 GETMBR R11 R0 K17 + 0x7C180A00, // 0024 CALL R6 5 + 0xB81A0E00, // 0025 GETNGBL R6 K7 + 0x8C180D12, // 0026 GETMET R6 R6 K18 + 0x7C180200, // 0027 CALL R6 1 + 0x8C180D09, // 0028 GETMET R6 R6 K9 + 0x5820000A, // 0029 LDCONST R8 K10 + 0x7C180400, // 002A CALL R6 2 + 0x781A000D, // 002B JMPF R6 #003A + 0xB81A1600, // 002C GETNGBL R6 K11 + 0x601C0018, // 002D GETGBL R7 G24 + 0x5820000C, // 002E LDCONST R8 K12 + 0x58240012, // 002F LDCONST R9 K18 + 0x5C280A00, // 0030 MOVE R10 R5 + 0x7C1C0600, // 0031 CALL R7 3 + 0x5820000D, // 0032 LDCONST R8 K13 + 0x7C180400, // 0033 CALL R6 2 + 0x8C18050E, // 0034 GETMET R6 R2 K14 + 0x5820000F, // 0035 LDCONST R8 K15 + 0x58240010, // 0036 LDCONST R9 K16 + 0x5C280A00, // 0037 MOVE R10 R5 + 0x882C0113, // 0038 GETMBR R11 R0 K19 + 0x7C180A00, // 0039 CALL R6 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC0C0002, // 003C CATCH R3 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8161600, // 003E GETNGBL R5 K11 + 0x60180008, // 003F GETGBL R6 G8 + 0x5C1C0600, // 0040 MOVE R7 R3 + 0x7C180200, // 0041 CALL R6 1 + 0x001A2806, // 0042 ADD R6 K20 R6 + 0x00180D15, // 0043 ADD R6 R6 K21 + 0x601C0008, // 0044 GETGBL R7 G8 + 0x5C200800, // 0045 MOVE R8 R4 + 0x7C1C0200, // 0046 CALL R7 1 + 0x00180C07, // 0047 ADD R6 R6 R7 + 0x581C0016, // 0048 LDCONST R7 K22 + 0x7C140400, // 0049 CALL R5 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _start_udp +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__start_udp, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_received), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(UDPServer), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(start), + }), + be_str_weak(_start_udp), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x4C080000, // 0003 LDNIL R2 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540615A3, // 0006 LDINT R1 5540 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x600C0008, // 0008 GETGBL R3 G8 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C0C0200, // 000A CALL R3 1 + 0x000E0403, // 000B ADD R3 K2 R3 + 0x58100003, // 000C LDCONST R4 K3 + 0x7C080400, // 000D CALL R2 2 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x8C080505, // 000F GETMET R2 R2 K5 + 0x5C100000, // 0010 MOVE R4 R0 + 0x58140006, // 0011 LDCONST R5 K6 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C080800, // 0013 CALL R2 4 + 0x90020002, // 0014 SETMBR R0 K0 R2 + 0x88080100, // 0015 GETMBR R2 R0 K0 + 0x8C080507, // 0016 GETMET R2 R2 K7 + 0x84100000, // 0017 CLOSURE R4 P0 + 0x7C080400, // 0018 CALL R2 2 + 0xA0000000, // 0019 CLOSE R0 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: adjust_next_ep +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(next_ep), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(adjust_next_ep), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000A, // 0005 EXBLK 0 #0011 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x600C0009, // 0008 GETGBL R3 G9 + 0x5C100400, // 0009 MOVE R4 R2 + 0x7C0C0200, // 000A CALL R3 1 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0x28100604, // 000C GE R4 R3 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x00100703, // 000E ADD R4 R3 K3 + 0x90020404, // 000F SETMBR R0 K2 R4 + 0x7001FFF4, // 0010 JMP #0006 + 0x58040004, // 0011 LDCONST R1 K4 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _trigger_read_sensors +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(read_sensors), + /* K3 */ be_nested_str_weak(loglevel), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), + /* K7 */ be_nested_str_weak(load), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(plugins), + /* K10 */ be_nested_str_weak(parse_sensors), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), + }), + be_str_weak(_trigger_read_sensors), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0200, // 0001 GETNGBL R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E0200, // 0004 GETNGBL R3 K1 + 0x8C0C0703, // 0005 GETMET R3 R3 K3 + 0x58140004, // 0006 LDCONST R5 K4 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0006, // 0008 JMPF R3 #0010 + 0xB80E0A00, // 0009 GETNGBL R3 K5 + 0x60100008, // 000A GETGBL R4 G8 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C100200, // 000C CALL R4 1 + 0x00120C04, // 000D ADD R4 K6 R4 + 0x58140004, // 000E LDCONST R5 K4 + 0x7C0C0400, // 000F CALL R3 2 + 0x4C0C0000, // 0010 LDNIL R3 + 0x1C0C0403, // 0011 EQ R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x80000600, // 0013 RET 0 + 0x8C0C0307, // 0014 GETMET R3 R1 K7 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x4C100000, // 0017 LDNIL R4 + 0x20100604, // 0018 NE R4 R3 R4 + 0x7812000D, // 0019 JMPF R4 #0028 + 0x58100008, // 001A LDCONST R4 K8 + 0x6014000C, // 001B GETGBL R5 G12 + 0x88180109, // 001C GETMBR R6 R0 K9 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160006, // 001F JMPF R5 #0027 + 0x88140109, // 0020 GETMBR R5 R0 K9 + 0x94140A04, // 0021 GETIDX R5 R5 R4 + 0x8C140B0A, // 0022 GETMET R5 R5 K10 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C140400, // 0024 CALL R5 2 + 0x0010090B, // 0025 ADD R4 R4 K11 + 0x7001FFF3, // 0026 JMP #001B + 0x70020006, // 0027 JMP #002F + 0xB8120A00, // 0028 GETNGBL R4 K5 + 0x60140008, // 0029 GETGBL R5 G8 + 0x5C180400, // 002A MOVE R6 R2 + 0x7C140200, // 002B CALL R5 1 + 0x00161805, // 002C ADD R5 K12 R5 + 0x58180004, // 002D LDCONST R6 K4 + 0x7C100400, // 002E CALL R4 2 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _instantiate_plugins_from_config +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ + be_nested_proto( + 17, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(k2l_num), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Plugin_Root), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), + /* K10 */ be_nested_str_weak(root), + /* K11 */ be_nested_str_weak(), + /* K12 */ be_nested_str_weak(Plugin_Aggregator), + /* K13 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K14 */ be_nested_str_weak(aggregator), + /* K15 */ be_nested_str_weak(find), + /* K16 */ be_nested_str_weak(type), + /* K17 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), + /* K18 */ be_const_int(3), + /* K19 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), + /* K20 */ be_nested_str_weak(plugins_classes), + /* K21 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K22 */ be_nested_str_weak(_X27_X20skipping), + /* K23 */ be_nested_str_weak(conf_to_log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_nested_str_weak(stop_iteration), + /* K27 */ be_nested_str_weak(tasmota), + /* K28 */ be_nested_str_weak(publish_result), + /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), + /* K30 */ be_nested_str_weak(Matter), + }), + be_str_weak(_instantiate_plugins_from_config), + &be_const_str_solidified, + ( &(const binstruction[146]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x880C0101, // 0003 GETMBR R3 R0 K1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0xB8160600, // 0005 GETNGBL R5 K3 + 0x8C140B04, // 0006 GETMET R5 R5 K4 + 0x5C1C0000, // 0007 MOVE R7 R0 + 0x58200005, // 0008 LDCONST R8 K5 + 0x60240013, // 0009 GETGBL R9 G19 + 0x7C240000, // 000A CALL R9 0 + 0x7C140800, // 000B CALL R5 4 + 0x7C0C0400, // 000C CALL R3 2 + 0xB80E0C00, // 000D GETNGBL R3 K6 + 0x58100007, // 000E LDCONST R4 K7 + 0x58140008, // 000F LDCONST R5 K8 + 0x7C0C0400, // 0010 CALL R3 2 + 0xB80E0C00, // 0011 GETNGBL R3 K6 + 0x60100018, // 0012 GETGBL R4 G24 + 0x58140009, // 0013 LDCONST R5 K9 + 0x58180005, // 0014 LDCONST R6 K5 + 0x581C000A, // 0015 LDCONST R7 K10 + 0x5820000B, // 0016 LDCONST R8 K11 + 0x7C100800, // 0017 CALL R4 4 + 0x58140008, // 0018 LDCONST R5 K8 + 0x7C0C0400, // 0019 CALL R3 2 + 0x880C0101, // 001A GETMBR R3 R0 K1 + 0x8C0C0702, // 001B GETMET R3 R3 K2 + 0xB8160600, // 001C GETNGBL R5 K3 + 0x8C140B0C, // 001D GETMET R5 R5 K12 + 0x5C1C0000, // 001E MOVE R7 R0 + 0xB8220600, // 001F GETNGBL R8 K3 + 0x8820110D, // 0020 GETMBR R8 R8 K13 + 0x60240013, // 0021 GETGBL R9 G19 + 0x7C240000, // 0022 CALL R9 0 + 0x7C140800, // 0023 CALL R5 4 + 0x7C0C0400, // 0024 CALL R3 2 + 0xB80E0C00, // 0025 GETNGBL R3 K6 + 0x60100018, // 0026 GETGBL R4 G24 + 0x58140009, // 0027 LDCONST R5 K9 + 0xB81A0600, // 0028 GETNGBL R6 K3 + 0x88180D0D, // 0029 GETMBR R6 R6 K13 + 0x581C000E, // 002A LDCONST R7 K14 + 0x5820000B, // 002B LDCONST R8 K11 + 0x7C100800, // 002C CALL R4 4 + 0x58140008, // 002D LDCONST R5 K8 + 0x7C0C0400, // 002E CALL R3 2 + 0x600C0010, // 002F GETGBL R3 G16 + 0x5C100400, // 0030 MOVE R4 R2 + 0x7C0C0200, // 0031 CALL R3 1 + 0xA8020055, // 0032 EXBLK 0 #0089 + 0x5C100600, // 0033 MOVE R4 R3 + 0x7C100000, // 0034 CALL R4 0 + 0x1C140905, // 0035 EQ R5 R4 K5 + 0x78160000, // 0036 JMPF R5 #0038 + 0x7001FFFA, // 0037 JMP #0033 + 0xA802003E, // 0038 EXBLK 0 #0078 + 0x60140008, // 0039 GETGBL R5 G8 + 0x5C180800, // 003A MOVE R6 R4 + 0x7C140200, // 003B CALL R5 1 + 0x94140205, // 003C GETIDX R5 R1 R5 + 0x8C180B0F, // 003D GETMET R6 R5 K15 + 0x58200010, // 003E LDCONST R8 K16 + 0x7C180400, // 003F CALL R6 2 + 0x4C1C0000, // 0040 LDNIL R7 + 0x1C1C0C07, // 0041 EQ R7 R6 R7 + 0x781E0005, // 0042 JMPF R7 #0049 + 0xB81E0C00, // 0043 GETNGBL R7 K6 + 0x58200011, // 0044 LDCONST R8 K17 + 0x58240012, // 0045 LDCONST R9 K18 + 0x7C1C0400, // 0046 CALL R7 2 + 0xA8040001, // 0047 EXBLK 1 1 + 0x7001FFE9, // 0048 JMP #0033 + 0x1C1C0D0A, // 0049 EQ R7 R6 K10 + 0x781E0005, // 004A JMPF R7 #0051 + 0xB81E0C00, // 004B GETNGBL R7 K6 + 0x58200013, // 004C LDCONST R8 K19 + 0x58240012, // 004D LDCONST R9 K18 + 0x7C1C0400, // 004E CALL R7 2 + 0xA8040001, // 004F EXBLK 1 1 + 0x7001FFE1, // 0050 JMP #0033 + 0x881C0114, // 0051 GETMBR R7 R0 K20 + 0x8C1C0F0F, // 0052 GETMET R7 R7 K15 + 0x5C240C00, // 0053 MOVE R9 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x4C200000, // 0055 LDNIL R8 + 0x1C200E08, // 0056 EQ R8 R7 R8 + 0x78220009, // 0057 JMPF R8 #0062 + 0xB8220C00, // 0058 GETNGBL R8 K6 + 0x60240008, // 0059 GETGBL R9 G8 + 0x5C280C00, // 005A MOVE R10 R6 + 0x7C240200, // 005B CALL R9 1 + 0x00262A09, // 005C ADD R9 K21 R9 + 0x00241316, // 005D ADD R9 R9 K22 + 0x58280008, // 005E LDCONST R10 K8 + 0x7C200400, // 005F CALL R8 2 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7001FFD0, // 0061 JMP #0033 + 0x5C200E00, // 0062 MOVE R8 R7 + 0x5C240000, // 0063 MOVE R9 R0 + 0x5C280800, // 0064 MOVE R10 R4 + 0x5C2C0A00, // 0065 MOVE R11 R5 + 0x7C200600, // 0066 CALL R8 3 + 0x88240101, // 0067 GETMBR R9 R0 K1 + 0x8C241302, // 0068 GETMET R9 R9 K2 + 0x5C2C1000, // 0069 MOVE R11 R8 + 0x7C240400, // 006A CALL R9 2 + 0xB8260C00, // 006B GETNGBL R9 K6 + 0x60280018, // 006C GETGBL R10 G24 + 0x582C0009, // 006D LDCONST R11 K9 + 0x5C300800, // 006E MOVE R12 R4 + 0x5C340C00, // 006F MOVE R13 R6 + 0x8C380117, // 0070 GETMET R14 R0 K23 + 0x5C400A00, // 0071 MOVE R16 R5 + 0x7C380400, // 0072 CALL R14 2 + 0x7C280800, // 0073 CALL R10 4 + 0x582C0008, // 0074 LDCONST R11 K8 + 0x7C240400, // 0075 CALL R9 2 + 0xA8040001, // 0076 EXBLK 1 1 + 0x7002000F, // 0077 JMP #0088 + 0xAC140002, // 0078 CATCH R5 0 2 + 0x7002000C, // 0079 JMP #0087 + 0xB81E0C00, // 007A GETNGBL R7 K6 + 0x60200008, // 007B GETGBL R8 G8 + 0x5C240A00, // 007C MOVE R9 R5 + 0x7C200200, // 007D CALL R8 1 + 0x00223008, // 007E ADD R8 K24 R8 + 0x00201119, // 007F ADD R8 R8 K25 + 0x60240008, // 0080 GETGBL R9 G8 + 0x5C280C00, // 0081 MOVE R10 R6 + 0x7C240200, // 0082 CALL R9 1 + 0x00201009, // 0083 ADD R8 R8 R9 + 0x58240008, // 0084 LDCONST R9 K8 + 0x7C1C0400, // 0085 CALL R7 2 + 0x70020000, // 0086 JMP #0088 + 0xB0080000, // 0087 RAISE 2 R0 R0 + 0x7001FFA9, // 0088 JMP #0033 + 0x580C001A, // 0089 LDCONST R3 K26 + 0xAC0C0200, // 008A CATCH R3 1 0 + 0xB0080000, // 008B RAISE 2 R0 R0 + 0xB80E3600, // 008C GETNGBL R3 K27 + 0x8C0C071C, // 008D GETMET R3 R3 K28 + 0x5814001D, // 008E LDCONST R5 K29 + 0x5818001E, // 008F LDCONST R6 K30 + 0x7C0C0600, // 0090 CALL R3 3 + 0x80000000, // 0091 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns), + /* K1 */ be_nested_str_weak(get_device_id), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(reverse), + /* K4 */ be_nested_str_weak(get_fabric_compressed), + /* K5 */ be_nested_str_weak(tohex), + /* K6 */ be_nested_str_weak(_X2D), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(find), + /* K13 */ be_nested_str_weak(up), + /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K15 */ be_nested_str_weak(hostname_eth), + /* K16 */ be_nested_str_weak(add_service), + /* K17 */ be_nested_str_weak(_matter), + /* K18 */ be_nested_str_weak(_tcp), + /* K19 */ be_nested_str_weak(_I), + /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K21 */ be_nested_str_weak(add_subtype), + /* K22 */ be_nested_str_weak(wifi), + /* K23 */ be_nested_str_weak(hostname_wifi), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K25 */ be_nested_str_weak(_X7C), + /* K26 */ be_const_int(2), + }), + be_str_weak(mdns_announce_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[115]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA802005F, // 0001 EXBLK 0 #0062 + 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C100304, // 0008 GETMET R4 R1 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140905, // 000A GETMET R5 R4 K5 + 0x7C140200, // 000B CALL R5 1 + 0x00140B06, // 000C ADD R5 R5 K6 + 0x8C180705, // 000D GETMET R6 R3 K5 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x001E1005, // 0011 ADD R7 K8 R5 + 0x58200009, // 0012 LDCONST R8 K9 + 0x7C180400, // 0013 CALL R6 2 + 0xB81A1400, // 0014 GETNGBL R6 K10 + 0x8C180D0B, // 0015 GETMET R6 R6 K11 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180D0C, // 0017 GETMET R6 R6 K12 + 0x5820000D, // 0018 LDCONST R8 K13 + 0x7C180400, // 0019 CALL R6 2 + 0x781A001E, // 001A JMPF R6 #003A + 0xB81A0E00, // 001B GETNGBL R6 K7 + 0x601C0018, // 001C GETGBL R7 G24 + 0x5820000E, // 001D LDCONST R8 K14 + 0x5824000B, // 001E LDCONST R9 K11 + 0x5C280A00, // 001F MOVE R10 R5 + 0x882C010F, // 0020 GETMBR R11 R0 K15 + 0x7C1C0800, // 0021 CALL R7 4 + 0x58200009, // 0022 LDCONST R8 K9 + 0x7C180400, // 0023 CALL R6 2 + 0x8C180510, // 0024 GETMET R6 R2 K16 + 0x58200011, // 0025 LDCONST R8 K17 + 0x58240012, // 0026 LDCONST R9 K18 + 0x542A15A3, // 0027 LDINT R10 5540 + 0x4C2C0000, // 0028 LDNIL R11 + 0x5C300A00, // 0029 MOVE R12 R5 + 0x8834010F, // 002A GETMBR R13 R0 K15 + 0x7C180E00, // 002B CALL R6 7 + 0x8C180905, // 002C GETMET R6 R4 K5 + 0x7C180200, // 002D CALL R6 1 + 0x001A2606, // 002E ADD R6 K19 R6 + 0xB81E0E00, // 002F GETNGBL R7 K7 + 0x00222806, // 0030 ADD R8 K20 R6 + 0x58240009, // 0031 LDCONST R9 K9 + 0x7C1C0400, // 0032 CALL R7 2 + 0x8C1C0515, // 0033 GETMET R7 R2 K21 + 0x58240011, // 0034 LDCONST R9 K17 + 0x58280012, // 0035 LDCONST R10 K18 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x8830010F, // 0037 GETMBR R12 R0 K15 + 0x5C340C00, // 0038 MOVE R13 R6 + 0x7C1C0C00, // 0039 CALL R7 6 + 0xB81A1400, // 003A GETNGBL R6 K10 + 0x8C180D16, // 003B GETMET R6 R6 K22 + 0x7C180200, // 003C CALL R6 1 + 0x8C180D0C, // 003D GETMET R6 R6 K12 + 0x5820000D, // 003E LDCONST R8 K13 + 0x7C180400, // 003F CALL R6 2 + 0x781A001E, // 0040 JMPF R6 #0060 + 0xB81A0E00, // 0041 GETNGBL R6 K7 + 0x601C0018, // 0042 GETGBL R7 G24 + 0x5820000E, // 0043 LDCONST R8 K14 + 0x58240016, // 0044 LDCONST R9 K22 + 0x5C280A00, // 0045 MOVE R10 R5 + 0x882C0117, // 0046 GETMBR R11 R0 K23 + 0x7C1C0800, // 0047 CALL R7 4 + 0x58200009, // 0048 LDCONST R8 K9 + 0x7C180400, // 0049 CALL R6 2 + 0x8C180510, // 004A GETMET R6 R2 K16 + 0x58200011, // 004B LDCONST R8 K17 + 0x58240012, // 004C LDCONST R9 K18 + 0x542A15A3, // 004D LDINT R10 5540 + 0x4C2C0000, // 004E LDNIL R11 + 0x5C300A00, // 004F MOVE R12 R5 + 0x88340117, // 0050 GETMBR R13 R0 K23 + 0x7C180E00, // 0051 CALL R6 7 + 0x8C180905, // 0052 GETMET R6 R4 K5 + 0x7C180200, // 0053 CALL R6 1 + 0x001A2606, // 0054 ADD R6 K19 R6 + 0xB81E0E00, // 0055 GETNGBL R7 K7 + 0x00222806, // 0056 ADD R8 K20 R6 + 0x58240009, // 0057 LDCONST R9 K9 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C1C0515, // 0059 GETMET R7 R2 K21 + 0x58240011, // 005A LDCONST R9 K17 + 0x58280012, // 005B LDCONST R10 K18 + 0x5C2C0A00, // 005C MOVE R11 R5 + 0x88300117, // 005D GETMBR R12 R0 K23 + 0x5C340C00, // 005E MOVE R13 R6 + 0x7C1C0C00, // 005F CALL R7 6 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7002000F, // 0061 JMP #0072 + 0xAC0C0002, // 0062 CATCH R3 0 2 + 0x7002000C, // 0063 JMP #0071 + 0xB8160E00, // 0064 GETNGBL R5 K7 + 0x60180008, // 0065 GETGBL R6 G8 + 0x5C1C0600, // 0066 MOVE R7 R3 + 0x7C180200, // 0067 CALL R6 1 + 0x001A3006, // 0068 ADD R6 K24 R6 + 0x00180D19, // 0069 ADD R6 R6 K25 + 0x601C0008, // 006A GETGBL R7 G8 + 0x5C200800, // 006B MOVE R8 R4 + 0x7C1C0200, // 006C CALL R7 1 + 0x00180C07, // 006D ADD R6 R6 R7 + 0x581C001A, // 006E LDCONST R7 K26 + 0x7C140400, // 006F CALL R5 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete_deferred +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_commissioning_complete_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read_sensors_scheduler +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(probe_sensor_time), + /* K1 */ be_nested_str_weak(probe_sensor_timestamp), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(time_reached), + /* K5 */ be_nested_str_weak(_trigger_read_sensors), + /* K6 */ be_nested_str_weak(millis), + }), + be_str_weak(read_sensors_scheduler), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060000, // 0003 JMPF R1 #0005 + 0x80000200, // 0004 RET 0 + 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x1C040302, // 0006 EQ R1 R1 K2 + 0x74060004, // 0007 JMPT R1 #000D + 0xB8060600, // 0008 GETNGBL R1 K3 + 0x8C040304, // 0009 GETMET R1 R1 K4 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x7C040400, // 000B CALL R1 2 + 0x78060006, // 000C JMPF R1 #0014 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0xB8060600, // 000F GETNGBL R1 K3 + 0x8C040306, // 0010 GETMET R1 R1 K6 + 0x880C0100, // 0011 GETMBR R3 R0 K0 + 0x7C040400, // 0012 CALL R1 2 + 0x90020201, // 0013 SETMBR R0 K1 R1 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_remove_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(plugins_config), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(plugins_persist), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins), + /* K12 */ be_nested_str_weak(get_endpoint), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(clean_remotes), + /* K15 */ be_nested_str_weak(save_param), + /* K16 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_remove_endpoint), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0008, // 0001 GETGBL R3 G8 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x4C140000, // 0005 LDNIL R5 + 0x88180101, // 0006 GETMBR R6 R0 K1 + 0x8C180D02, // 0007 GETMET R6 R6 K2 + 0x5C200600, // 0008 MOVE R8 R3 + 0x7C180400, // 0009 CALL R6 2 + 0x741A0004, // 000A JMPT R6 #0010 + 0xB81A0600, // 000B GETNGBL R6 K3 + 0x001E0803, // 000C ADD R7 K4 R3 + 0x58200005, // 000D LDCONST R8 K5 + 0x7C180400, // 000E CALL R6 2 + 0x80000C00, // 000F RET 0 + 0xB81A0600, // 0010 GETNGBL R6 K3 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x58200006, // 0012 LDCONST R8 K6 + 0x5C240200, // 0013 MOVE R9 R1 + 0x7C1C0400, // 0014 CALL R7 2 + 0x58200007, // 0015 LDCONST R8 K7 + 0x7C180400, // 0016 CALL R6 2 + 0x88180101, // 0017 GETMBR R6 R0 K1 + 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C180400, // 001A CALL R6 2 + 0x50180200, // 001B LDBOOL R6 1 0 + 0x90021206, // 001C SETMBR R0 K9 R6 + 0x5818000A, // 001D LDCONST R6 K10 + 0x601C000C, // 001E GETGBL R7 G12 + 0x8820010B, // 001F GETMBR R8 R0 K11 + 0x7C1C0200, // 0020 CALL R7 1 + 0x141C0C07, // 0021 LT R7 R6 R7 + 0x781E000D, // 0022 JMPF R7 #0031 + 0x881C010B, // 0023 GETMBR R7 R0 K11 + 0x941C0E06, // 0024 GETIDX R7 R7 R6 + 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 + 0x7C1C0200, // 0026 CALL R7 1 + 0x1C1C0207, // 0027 EQ R7 R1 R7 + 0x781E0005, // 0028 JMPF R7 #002F + 0x881C010B, // 0029 GETMBR R7 R0 K11 + 0x8C1C0F08, // 002A GETMET R7 R7 K8 + 0x5C240C00, // 002B MOVE R9 R6 + 0x7C1C0400, // 002C CALL R7 2 + 0x70020002, // 002D JMP #0031 + 0x70020000, // 002E JMP #0030 + 0x00180D0D, // 002F ADD R6 R6 K13 + 0x7001FFEC, // 0030 JMP #001E + 0x8C1C010E, // 0031 GETMET R7 R0 K14 + 0x7C1C0200, // 0032 CALL R7 1 + 0x8C1C010F, // 0033 GETMET R7 R0 K15 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0110, // 0035 GETMET R7 R0 K16 + 0x7C1C0200, // 0036 CALL R7 1 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_add_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K4 */ be_nested_str_weak(_X27_X20skipping), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(next_ep), + /* K7 */ be_nested_str_weak(plugins), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(type), + /* K10 */ be_nested_str_weak(keys), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K13 */ be_nested_str_weak(conf_to_log), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_persist), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(save_param), + /* K19 */ be_nested_str_weak(signal_endpoints_changed), + }), + be_str_weak(bridge_add_endpoint), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120008, // 0006 JMPF R4 #0010 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0x60140008, // 0008 GETGBL R5 G8 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C140200, // 000A CALL R5 1 + 0x00160605, // 000B ADD R5 K3 R5 + 0x00140B04, // 000C ADD R5 R5 K4 + 0x58180005, // 000D LDCONST R6 K5 + 0x7C100400, // 000E CALL R4 2 + 0x80000800, // 000F RET 0 + 0x88100106, // 0010 GETMBR R4 R0 K6 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x5C180600, // 0014 MOVE R6 R3 + 0x5C1C0000, // 0015 MOVE R7 R0 + 0x5C200800, // 0016 MOVE R8 R4 + 0x5C240400, // 0017 MOVE R9 R2 + 0x7C180600, // 0018 CALL R6 3 + 0x881C0107, // 0019 GETMBR R7 R0 K7 + 0x8C1C0F08, // 001A GETMET R7 R7 K8 + 0x5C240C00, // 001B MOVE R9 R6 + 0x7C1C0400, // 001C CALL R7 2 + 0x601C0013, // 001D GETGBL R7 G19 + 0x7C1C0000, // 001E CALL R7 0 + 0x981E1201, // 001F SETIDX R7 K9 R1 + 0x60200010, // 0020 GETGBL R8 G16 + 0x8C24050A, // 0021 GETMET R9 R2 K10 + 0x7C240200, // 0022 CALL R9 1 + 0x7C200200, // 0023 CALL R8 1 + 0xA8020004, // 0024 EXBLK 0 #002A + 0x5C241000, // 0025 MOVE R9 R8 + 0x7C240000, // 0026 CALL R9 0 + 0x94280409, // 0027 GETIDX R10 R2 R9 + 0x981C120A, // 0028 SETIDX R7 R9 R10 + 0x7001FFFA, // 0029 JMP #0025 + 0x5820000B, // 002A LDCONST R8 K11 + 0xAC200200, // 002B CATCH R8 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0xB8220400, // 002D GETNGBL R8 K2 + 0x60240018, // 002E GETGBL R9 G24 + 0x5828000C, // 002F LDCONST R10 K12 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300200, // 0031 MOVE R12 R1 + 0x8C34010D, // 0032 GETMET R13 R0 K13 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C340400, // 0034 CALL R13 2 + 0x7C240800, // 0035 CALL R9 4 + 0x5828000E, // 0036 LDCONST R10 K14 + 0x7C200400, // 0037 CALL R8 2 + 0x8820010F, // 0038 GETMBR R8 R0 K15 + 0x98200A07, // 0039 SETIDX R8 R5 R7 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x90022008, // 003B SETMBR R0 K16 R8 + 0x88200106, // 003C GETMBR R8 R0 K6 + 0x00201111, // 003D ADD R8 R8 K17 + 0x90020C08, // 003E SETMBR R0 K6 R8 + 0x8C200112, // 003F GETMET R8 R0 K18 + 0x7C200200, // 0040 CALL R8 1 + 0x8C200113, // 0041 GETMET R8 R0 K19 + 0x7C200200, // 0042 CALL R8 1 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_root_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(commissioning_admin_fabric), + }), + be_str_weak(is_root_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060003, // 0003 JMPF R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x74060000, // 0007 JMPT R1 #0009 + 0x50040001, // 0008 LDBOOL R1 0 1 + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_operational_discovery +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(mdns), + /* K2 */ be_nested_str_weak(stop_basic_commissioning), + /* K3 */ be_nested_str_weak(mdns_announce_op_discovery), + }), + be_str_weak(start_operational_discovery), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100103, // 0004 GETMET R4 R0 K3 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C100400, // 0006 CALL R4 2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: MtrInfo ********************************************************************/ @@ -5110,12 +4033,12 @@ be_local_closure(class_Matter_Device_MtrInfo, /* name */ /******************************************************************** -** Solidified function: every_250ms +** Solidified function: signal_endpoints_changed ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_every_250ms, /* name */ +be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ be_nested_proto( - 4, /* nstack */ + 7, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5124,405 +4047,29 @@ be_local_closure(class_Matter_Device_every_250ms, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(read_sensors_scheduler), + /* K0 */ be_nested_str_weak(attribute_updated), /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(every_250ms), - /* K4 */ be_const_int(1), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x14080202, // 0006 LT R2 R1 R2 - 0x780A0005, // 0007 JMPF R2 #000E - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C080503, // 000A GETMET R2 R2 K3 - 0x7C080200, // 000B CALL R2 1 - 0x00040304, // 000C ADD R1 R1 K4 - 0x7001FFF4, // 000D JMP #0003 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_random_passcode -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(134217727), - /* K5 */ be_const_int(99999998), - /* K6 */ be_nested_str_weak(PASSCODE_INVALID), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(generate_random_passcode), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x780E001D, // 0003 JMPF R3 #0022 - 0x8C0C0301, // 0004 GETMET R3 R1 K1 - 0x54160003, // 0005 LDINT R5 4 - 0x7C0C0400, // 0006 CALL R3 2 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 - 0x58140003, // 0008 LDCONST R5 K3 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x2C0C0704, // 000B AND R3 R3 K4 - 0x5C080600, // 000C MOVE R2 R3 - 0x240C0505, // 000D GT R3 R2 K5 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7001FFF1, // 000F JMP #0002 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x1C140404, // 0016 EQ R5 R2 R4 - 0x78160000, // 0017 JMPF R5 #0019 - 0x4C080000, // 0018 LDNIL R2 - 0x7001FFF9, // 0019 JMP #0014 - 0x580C0007, // 001A LDCONST R3 K7 - 0xAC0C0200, // 001B CATCH R3 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x4C0C0000, // 001D LDNIL R3 - 0x200C0403, // 001E NE R3 R2 R3 - 0x780E0000, // 001F JMPF R3 #0021 - 0x80040400, // 0020 RET 1 R2 - 0x7001FFDF, // 0021 JMP #0002 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrJoin -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_MtrJoin, /* name */ - be_nested_proto( - 8, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(start_root_basic_commissioning), - /* K1 */ be_nested_str_weak(stop_basic_commissioning), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrJoin), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60140009, // 0000 GETGBL R5 G9 - 0x5C180600, // 0001 MOVE R6 R3 - 0x7C140200, // 0002 CALL R5 1 - 0x78160002, // 0003 JMPF R5 #0007 - 0x8C180100, // 0004 GETMET R6 R0 K0 - 0x7C180200, // 0005 CALL R6 1 - 0x70020001, // 0006 JMP #0009 - 0x8C180101, // 0007 GETMET R6 R0 K1 - 0x7C180200, // 0008 CALL R6 1 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x8C180D03, // 000A GETMET R6 R6 K3 - 0x7C180200, // 000B CALL R6 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_expansion -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), + /* K2 */ be_const_int(3), /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(start), - /* K6 */ be_nested_str_weak(is_direct), - /* K7 */ be_nested_str_weak(next_attribute), - /* K8 */ be_nested_str_weak(get_pi), + /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), }), - be_str_weak(process_attribute_expansion), + be_str_weak(signal_endpoints_changed), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x88140302, // 0002 GETMBR R5 R1 K2 - 0xB81A0600, // 0003 GETNGBL R6 K3 - 0x8C180D04, // 0004 GETMET R6 R6 K4 - 0x5C200000, // 0005 MOVE R8 R0 - 0x7C180400, // 0006 CALL R6 2 - 0x8C1C0D05, // 0007 GETMET R7 R6 K5 - 0x5C240600, // 0008 MOVE R9 R3 - 0x5C280800, // 0009 MOVE R10 R4 - 0x5C2C0A00, // 000A MOVE R11 R5 - 0x7C1C0800, // 000B CALL R7 4 - 0x8C1C0D06, // 000C GETMET R7 R6 K6 - 0x7C1C0200, // 000D CALL R7 1 - 0x4C200000, // 000E LDNIL R8 - 0x8C240D07, // 000F GETMET R9 R6 K7 - 0x7C240200, // 0010 CALL R9 1 - 0x5C201200, // 0011 MOVE R8 R9 - 0x4C280000, // 0012 LDNIL R10 - 0x2024120A, // 0013 NE R9 R9 R10 - 0x78260005, // 0014 JMPF R9 #001B - 0x5C240400, // 0015 MOVE R9 R2 - 0x8C280D08, // 0016 GETMET R10 R6 K8 - 0x7C280200, // 0017 CALL R10 1 - 0x5C2C1000, // 0018 MOVE R11 R8 - 0x7C240400, // 0019 CALL R9 2 - 0x7001FFF3, // 001A JMP #000F - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_friendly_name -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_name), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_plugin_by_friendly_name), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x1C080500, // 0006 EQ R2 R2 K0 - 0x780A0001, // 0007 JMPF R2 #000A - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - 0x58080000, // 000A LDCONST R2 K0 - 0x600C000C, // 000B GETGBL R3 G12 - 0x88100101, // 000C GETMBR R4 R0 K1 - 0x7C0C0200, // 000D CALL R3 1 - 0x140C0403, // 000E LT R3 R2 R3 - 0x780E0010, // 000F JMPF R3 #0021 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x940C0602, // 0011 GETIDX R3 R3 R2 - 0x8C100702, // 0012 GETMET R4 R3 K2 - 0x7C100200, // 0013 CALL R4 1 - 0x4C140000, // 0014 LDNIL R5 - 0x20140805, // 0015 NE R5 R4 R5 - 0x78160007, // 0016 JMPF R5 #001F - 0x6014000C, // 0017 GETGBL R5 G12 - 0x5C180800, // 0018 MOVE R6 R4 - 0x7C140200, // 0019 CALL R5 1 - 0x24140B00, // 001A GT R5 R5 K0 - 0x78160002, // 001B JMPF R5 #001F - 0x1C140801, // 001C EQ R5 R4 R1 - 0x78160000, // 001D JMPF R5 #001F - 0x80040600, // 001E RET 1 R3 - 0x00080503, // 001F ADD R2 R2 K3 - 0x7001FFE9, // 0020 JMP #000B - 0x4C0C0000, // 0021 LDNIL R3 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save_param -********************************************************************/ -extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_save_param, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Device, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(update_remotes_info), - /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), - /* K3 */ be_nested_str_weak(root_discriminator), - /* K4 */ be_nested_str_weak(root_passcode), - /* K5 */ be_nested_str_weak(ipv4only), - /* K6 */ be_nested_str_weak(true), - /* K7 */ be_nested_str_weak(false), - /* K8 */ be_nested_str_weak(disable_bridge_mode), - /* K9 */ be_nested_str_weak(next_ep), - /* K10 */ be_nested_str_weak(debug), - /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), - /* K14 */ be_nested_str_weak(dump), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_config_remotes), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), - /* K19 */ be_nested_str_weak(_X7D), - /* K20 */ be_nested_str_weak(FILENAME), - /* K21 */ be_nested_str_weak(w), - /* K22 */ be_nested_str_weak(write), - /* K23 */ be_nested_str_weak(close), - /* K24 */ be_nested_str_weak(log), - /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K26 */ be_nested_str_weak(_X20and_X20configuration), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_const_int(2), - /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K30 */ be_nested_str_weak(_X7C), - }), - be_str_weak(save_param), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x88140104, // 0006 GETMBR R5 R0 K4 - 0x88180105, // 0007 GETMBR R6 R0 K5 - 0x781A0001, // 0008 JMPF R6 #000B - 0x58180006, // 0009 LDCONST R6 K6 - 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x781E0001, // 000D JMPF R7 #0010 - 0x581C0006, // 000E LDCONST R7 K6 - 0x70020000, // 000F JMP #0011 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x88200109, // 0011 GETMBR R8 R0 K9 - 0x7C080C00, // 0012 CALL R2 6 - 0x880C010A, // 0013 GETMBR R3 R0 K10 - 0x780E0000, // 0014 JMPF R3 #0016 - 0x0008050B, // 0015 ADD R2 R2 K11 - 0x880C010C, // 0016 GETMBR R3 R0 K12 - 0x780E000E, // 0017 JMPF R3 #0027 - 0x0008050D, // 0018 ADD R2 R2 K13 - 0x8C0C030E, // 0019 GETMET R3 R1 K14 - 0x8814010F, // 001A GETMBR R5 R0 K15 - 0x7C0C0400, // 001B CALL R3 2 - 0x00080403, // 001C ADD R2 R2 R3 - 0x600C000C, // 001D GETGBL R3 G12 - 0x88100110, // 001E GETMBR R4 R0 K16 - 0x7C0C0200, // 001F CALL R3 1 - 0x240C0711, // 0020 GT R3 R3 K17 - 0x780E0004, // 0021 JMPF R3 #0027 - 0x00080512, // 0022 ADD R2 R2 K18 - 0x8C0C030E, // 0023 GETMET R3 R1 K14 - 0x88140110, // 0024 GETMBR R5 R0 K16 - 0x7C0C0400, // 0025 CALL R3 2 - 0x00080403, // 0026 ADD R2 R2 R3 - 0x00080513, // 0027 ADD R2 R2 K19 - 0xA8020017, // 0028 EXBLK 0 #0041 - 0x600C0011, // 0029 GETGBL R3 G17 - 0x88100114, // 002A GETMBR R4 R0 K20 - 0x58140015, // 002B LDCONST R5 K21 - 0x7C0C0400, // 002C CALL R3 2 - 0x8C100716, // 002D GETMET R4 R3 K22 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x8C100717, // 0030 GETMET R4 R3 K23 - 0x7C100200, // 0031 CALL R4 1 - 0xB8123000, // 0032 GETNGBL R4 K24 - 0x60140018, // 0033 GETGBL R5 G24 - 0x58180019, // 0034 LDCONST R6 K25 - 0x881C010C, // 0035 GETMBR R7 R0 K12 - 0x781E0001, // 0036 JMPF R7 #0039 - 0x581C001A, // 0037 LDCONST R7 K26 - 0x70020000, // 0038 JMP #003A - 0x581C001B, // 0039 LDCONST R7 K27 - 0x7C140400, // 003A CALL R5 2 - 0x5818001C, // 003B LDCONST R6 K28 - 0x7C100400, // 003C CALL R4 2 - 0xA8040001, // 003D EXBLK 1 1 - 0x80040400, // 003E RET 1 R2 - 0xA8040001, // 003F EXBLK 1 1 - 0x70020010, // 0040 JMP #0052 - 0xAC0C0002, // 0041 CATCH R3 0 2 - 0x7002000D, // 0042 JMP #0051 - 0xB8163000, // 0043 GETNGBL R5 K24 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x001A3A06, // 0047 ADD R6 K29 R6 - 0x00180D1E, // 0048 ADD R6 R6 K30 - 0x601C0008, // 0049 GETGBL R7 G8 - 0x5C200800, // 004A MOVE R8 R4 - 0x7C1C0200, // 004B CALL R7 1 - 0x00180C07, // 004C ADD R6 R6 R7 - 0x581C001C, // 004D LDCONST R7 K28 - 0x7C140400, // 004E CALL R5 2 - 0x80040400, // 004F RET 1 R2 - 0x70020000, // 0050 JMP #0052 - 0xB0080000, // 0051 RAISE 2 R0 R0 - 0x80000000, // 0052 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x580C0001, // 0001 LDCONST R3 K1 + 0x5412001C, // 0002 LDINT R4 29 + 0x58140002, // 0003 LDCONST R5 K2 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C040A00, // 0005 CALL R1 5 + 0x8C040100, // 0006 GETMET R1 R0 K0 + 0xB80E0600, // 0007 GETNGBL R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x5412001C, // 0009 LDINT R4 29 + 0x58140002, // 000A LDCONST R5 K2 + 0x50180000, // 000B LDBOOL R6 0 0 + 0x7C040A00, // 000C CALL R1 5 + 0x80000000, // 000D RET 0 }) ) ); @@ -5706,33 +4253,487 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */ /******************************************************************** -** Solidified function: get_plugin_remote_info +** Solidified function: start_operational_discovery_deferred ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ +be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_operational_discovery), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_operational_discovery_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: save_param +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_save_param, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(update_remotes_info), + /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), + /* K3 */ be_nested_str_weak(root_discriminator), + /* K4 */ be_nested_str_weak(root_passcode), + /* K5 */ be_nested_str_weak(ipv4only), + /* K6 */ be_nested_str_weak(true), + /* K7 */ be_nested_str_weak(false), + /* K8 */ be_nested_str_weak(disable_bridge_mode), + /* K9 */ be_nested_str_weak(next_ep), + /* K10 */ be_nested_str_weak(debug), + /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), + /* K12 */ be_nested_str_weak(plugins_persist), + /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), + /* K14 */ be_nested_str_weak(dump), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(plugins_config_remotes), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), + /* K19 */ be_nested_str_weak(_X7D), + /* K20 */ be_nested_str_weak(FILENAME), + /* K21 */ be_nested_str_weak(w), + /* K22 */ be_nested_str_weak(write), + /* K23 */ be_nested_str_weak(close), + /* K24 */ be_nested_str_weak(log), + /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K26 */ be_nested_str_weak(_X20and_X20configuration), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_const_int(2), + /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K30 */ be_nested_str_weak(_X7C), + }), + be_str_weak(save_param), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x88140104, // 0006 GETMBR R5 R0 K4 + 0x88180105, // 0007 GETMBR R6 R0 K5 + 0x781A0001, // 0008 JMPF R6 #000B + 0x58180006, // 0009 LDCONST R6 K6 + 0x70020000, // 000A JMP #000C + 0x58180007, // 000B LDCONST R6 K7 + 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x781E0001, // 000D JMPF R7 #0010 + 0x581C0006, // 000E LDCONST R7 K6 + 0x70020000, // 000F JMP #0011 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x88200109, // 0011 GETMBR R8 R0 K9 + 0x7C080C00, // 0012 CALL R2 6 + 0x880C010A, // 0013 GETMBR R3 R0 K10 + 0x780E0000, // 0014 JMPF R3 #0016 + 0x0008050B, // 0015 ADD R2 R2 K11 + 0x880C010C, // 0016 GETMBR R3 R0 K12 + 0x780E000E, // 0017 JMPF R3 #0027 + 0x0008050D, // 0018 ADD R2 R2 K13 + 0x8C0C030E, // 0019 GETMET R3 R1 K14 + 0x8814010F, // 001A GETMBR R5 R0 K15 + 0x7C0C0400, // 001B CALL R3 2 + 0x00080403, // 001C ADD R2 R2 R3 + 0x600C000C, // 001D GETGBL R3 G12 + 0x88100110, // 001E GETMBR R4 R0 K16 + 0x7C0C0200, // 001F CALL R3 1 + 0x240C0711, // 0020 GT R3 R3 K17 + 0x780E0004, // 0021 JMPF R3 #0027 + 0x00080512, // 0022 ADD R2 R2 K18 + 0x8C0C030E, // 0023 GETMET R3 R1 K14 + 0x88140110, // 0024 GETMBR R5 R0 K16 + 0x7C0C0400, // 0025 CALL R3 2 + 0x00080403, // 0026 ADD R2 R2 R3 + 0x00080513, // 0027 ADD R2 R2 K19 + 0xA8020017, // 0028 EXBLK 0 #0041 + 0x600C0011, // 0029 GETGBL R3 G17 + 0x88100114, // 002A GETMBR R4 R0 K20 + 0x58140015, // 002B LDCONST R5 K21 + 0x7C0C0400, // 002C CALL R3 2 + 0x8C100716, // 002D GETMET R4 R3 K22 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x8C100717, // 0030 GETMET R4 R3 K23 + 0x7C100200, // 0031 CALL R4 1 + 0xB8123000, // 0032 GETNGBL R4 K24 + 0x60140018, // 0033 GETGBL R5 G24 + 0x58180019, // 0034 LDCONST R6 K25 + 0x881C010C, // 0035 GETMBR R7 R0 K12 + 0x781E0001, // 0036 JMPF R7 #0039 + 0x581C001A, // 0037 LDCONST R7 K26 + 0x70020000, // 0038 JMP #003A + 0x581C001B, // 0039 LDCONST R7 K27 + 0x7C140400, // 003A CALL R5 2 + 0x5818001C, // 003B LDCONST R6 K28 + 0x7C100400, // 003C CALL R4 2 + 0xA8040001, // 003D EXBLK 1 1 + 0x80040400, // 003E RET 1 R2 + 0xA8040001, // 003F EXBLK 1 1 + 0x70020010, // 0040 JMP #0052 + 0xAC0C0002, // 0041 CATCH R3 0 2 + 0x7002000D, // 0042 JMP #0051 + 0xB8163000, // 0043 GETNGBL R5 K24 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x001A3A06, // 0047 ADD R6 K29 R6 + 0x00180D1E, // 0048 ADD R6 R6 K30 + 0x601C0008, // 0049 GETGBL R7 G8 + 0x5C200800, // 004A MOVE R8 R4 + 0x7C1C0200, // 004B CALL R7 1 + 0x00180C07, // 004C ADD R6 R6 R7 + 0x581C001C, // 004D LDCONST R7 K28 + 0x7C140400, // 004E CALL R5 2 + 0x80040400, // 004F RET 1 R2 + 0x70020000, // 0050 JMP #0052 + 0xB0080000, // 0051 RAISE 2 R0 R0 + 0x80000000, // 0052 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: load_param +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_load_param, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[36]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(FILENAME), + /* K2 */ be_nested_str_weak(read), + /* K3 */ be_nested_str_weak(close), + /* K4 */ be_nested_str_weak(json), + /* K5 */ be_nested_str_weak(load), + /* K6 */ be_nested_str_weak(root_discriminator), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(distinguish), + /* K9 */ be_nested_str_weak(root_passcode), + /* K10 */ be_nested_str_weak(passcode), + /* K11 */ be_nested_str_weak(ipv4only), + /* K12 */ be_nested_str_weak(disable_bridge_mode), + /* K13 */ be_nested_str_weak(next_ep), + /* K14 */ be_nested_str_weak(nextep), + /* K15 */ be_nested_str_weak(plugins_config), + /* K16 */ be_nested_str_weak(config), + /* K17 */ be_nested_str_weak(debug), + /* K18 */ be_nested_str_weak(log), + /* K19 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(adjust_next_ep), + /* K22 */ be_nested_str_weak(check_config_ep), + /* K23 */ be_nested_str_weak(plugins_persist), + /* K24 */ be_nested_str_weak(plugins_config_remotes), + /* K25 */ be_nested_str_weak(remotes), + /* K26 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), + /* K27 */ be_nested_str_weak(io_error), + /* K28 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), + /* K29 */ be_nested_str_weak(_X7C), + /* K30 */ be_const_int(2), + /* K31 */ be_nested_str_weak(random), + /* K32 */ be_nested_str_weak(get), + /* K33 */ be_const_int(0), + /* K34 */ be_nested_str_weak(generate_random_passcode), + /* K35 */ be_nested_str_weak(save_param), + }), + be_str_weak(load_param), + &be_const_str_solidified, + ( &(const binstruction[133]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0xA8020054, // 0002 EXBLK 0 #0058 + 0x600C0011, // 0003 GETGBL R3 G17 + 0x88100101, // 0004 GETMBR R4 R0 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C100702, // 0006 GETMET R4 R3 K2 + 0x7C100200, // 0007 CALL R4 1 + 0x8C140703, // 0008 GETMET R5 R3 K3 + 0x7C140200, // 0009 CALL R5 1 + 0xA4160800, // 000A IMPORT R5 K4 + 0x8C180B05, // 000B GETMET R6 R5 K5 + 0x5C200800, // 000C MOVE R8 R4 + 0x7C180400, // 000D CALL R6 2 + 0x8C1C0D07, // 000E GETMET R7 R6 K7 + 0x58240008, // 000F LDCONST R9 K8 + 0x88280106, // 0010 GETMBR R10 R0 K6 + 0x7C1C0600, // 0011 CALL R7 3 + 0x90020C07, // 0012 SETMBR R0 K6 R7 + 0x8C1C0D07, // 0013 GETMET R7 R6 K7 + 0x5824000A, // 0014 LDCONST R9 K10 + 0x88280109, // 0015 GETMBR R10 R0 K9 + 0x7C1C0600, // 0016 CALL R7 3 + 0x90021207, // 0017 SETMBR R0 K9 R7 + 0x601C0017, // 0018 GETGBL R7 G23 + 0x8C200D07, // 0019 GETMET R8 R6 K7 + 0x5828000B, // 001A LDCONST R10 K11 + 0x502C0000, // 001B LDBOOL R11 0 0 + 0x7C200600, // 001C CALL R8 3 + 0x7C1C0200, // 001D CALL R7 1 + 0x90021607, // 001E SETMBR R0 K11 R7 + 0x601C0017, // 001F GETGBL R7 G23 + 0x8C200D07, // 0020 GETMET R8 R6 K7 + 0x5828000C, // 0021 LDCONST R10 K12 + 0x502C0000, // 0022 LDBOOL R11 0 0 + 0x7C200600, // 0023 CALL R8 3 + 0x7C1C0200, // 0024 CALL R7 1 + 0x90021807, // 0025 SETMBR R0 K12 R7 + 0x8C1C0D07, // 0026 GETMET R7 R6 K7 + 0x5824000E, // 0027 LDCONST R9 K14 + 0x8828010D, // 0028 GETMBR R10 R0 K13 + 0x7C1C0600, // 0029 CALL R7 3 + 0x90021A07, // 002A SETMBR R0 K13 R7 + 0x8C1C0D07, // 002B GETMET R7 R6 K7 + 0x58240010, // 002C LDCONST R9 K16 + 0x7C1C0400, // 002D CALL R7 2 + 0x90021E07, // 002E SETMBR R0 K15 R7 + 0x601C0017, // 002F GETGBL R7 G23 + 0x8C200D07, // 0030 GETMET R8 R6 K7 + 0x58280011, // 0031 LDCONST R10 K17 + 0x7C200400, // 0032 CALL R8 2 + 0x7C1C0200, // 0033 CALL R7 1 + 0x90022207, // 0034 SETMBR R0 K17 R7 + 0x881C010F, // 0035 GETMBR R7 R0 K15 + 0x4C200000, // 0036 LDNIL R8 + 0x201C0E08, // 0037 NE R7 R7 R8 + 0x781E000D, // 0038 JMPF R7 #0047 + 0xB81E2400, // 0039 GETNGBL R7 K18 + 0x60200018, // 003A GETGBL R8 G24 + 0x58240013, // 003B LDCONST R9 K19 + 0x8828010F, // 003C GETMBR R10 R0 K15 + 0x7C200400, // 003D CALL R8 2 + 0x58240014, // 003E LDCONST R9 K20 + 0x7C1C0400, // 003F CALL R7 2 + 0x8C1C0115, // 0040 GETMET R7 R0 K21 + 0x7C1C0200, // 0041 CALL R7 1 + 0x8C1C0116, // 0042 GETMET R7 R0 K22 + 0x7C1C0200, // 0043 CALL R7 1 + 0x5C080E00, // 0044 MOVE R2 R7 + 0x501C0200, // 0045 LDBOOL R7 1 0 + 0x90022E07, // 0046 SETMBR R0 K23 R7 + 0x8C1C0D07, // 0047 GETMET R7 R6 K7 + 0x58240019, // 0048 LDCONST R9 K25 + 0x60280013, // 0049 GETGBL R10 G19 + 0x7C280000, // 004A CALL R10 0 + 0x7C1C0600, // 004B CALL R7 3 + 0x90023007, // 004C SETMBR R0 K24 R7 + 0x881C0118, // 004D GETMBR R7 R0 K24 + 0x781E0006, // 004E JMPF R7 #0056 + 0xB81E2400, // 004F GETNGBL R7 K18 + 0x60200008, // 0050 GETGBL R8 G8 + 0x88240118, // 0051 GETMBR R9 R0 K24 + 0x7C200200, // 0052 CALL R8 1 + 0x00223408, // 0053 ADD R8 K26 R8 + 0x58240014, // 0054 LDCONST R9 K20 + 0x7C1C0400, // 0055 CALL R7 2 + 0xA8040001, // 0056 EXBLK 1 1 + 0x70020011, // 0057 JMP #006A + 0xAC0C0002, // 0058 CATCH R3 0 2 + 0x7002000E, // 0059 JMP #0069 + 0x2014071B, // 005A NE R5 R3 K27 + 0x7816000B, // 005B JMPF R5 #0068 + 0xB8162400, // 005C GETNGBL R5 K18 + 0x60180008, // 005D GETGBL R6 G8 + 0x5C1C0600, // 005E MOVE R7 R3 + 0x7C180200, // 005F CALL R6 1 + 0x001A3806, // 0060 ADD R6 K28 R6 + 0x00180D1D, // 0061 ADD R6 R6 K29 + 0x601C0008, // 0062 GETGBL R7 G8 + 0x5C200800, // 0063 MOVE R8 R4 + 0x7C1C0200, // 0064 CALL R7 1 + 0x00180C07, // 0065 ADD R6 R6 R7 + 0x581C001E, // 0066 LDCONST R7 K30 + 0x7C140400, // 0067 CALL R5 2 + 0x70020000, // 0068 JMP #006A + 0xB0080000, // 0069 RAISE 2 R0 R0 + 0x880C0106, // 006A GETMBR R3 R0 K6 + 0x4C100000, // 006B LDNIL R4 + 0x1C0C0604, // 006C EQ R3 R3 R4 + 0x780E000A, // 006D JMPF R3 #0079 + 0x8C0C031F, // 006E GETMET R3 R1 K31 + 0x5814001E, // 006F LDCONST R5 K30 + 0x7C0C0400, // 0070 CALL R3 2 + 0x8C0C0720, // 0071 GETMET R3 R3 K32 + 0x58140021, // 0072 LDCONST R5 K33 + 0x5818001E, // 0073 LDCONST R6 K30 + 0x7C0C0600, // 0074 CALL R3 3 + 0x54120FFE, // 0075 LDINT R4 4095 + 0x2C0C0604, // 0076 AND R3 R3 R4 + 0x90020C03, // 0077 SETMBR R0 K6 R3 + 0x50080200, // 0078 LDBOOL R2 1 0 + 0x880C0109, // 0079 GETMBR R3 R0 K9 + 0x4C100000, // 007A LDNIL R4 + 0x1C0C0604, // 007B EQ R3 R3 R4 + 0x780E0003, // 007C JMPF R3 #0081 + 0x8C0C0122, // 007D GETMET R3 R0 K34 + 0x7C0C0200, // 007E CALL R3 1 + 0x90021203, // 007F SETMBR R0 K9 R3 + 0x50080200, // 0080 LDBOOL R2 1 0 + 0x780A0001, // 0081 JMPF R2 #0084 + 0x8C0C0123, // 0082 GETMET R3 R0 K35 + 0x7C0C0200, // 0083 CALL R3 1 + 0x80000000, // 0084 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_manual_pairing_code +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(root_discriminator), + /* K1 */ be_nested_str_weak(root_passcode), + /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(Verhoeff), + /* K5 */ be_nested_str_weak(checksum), + }), + be_str_weak(compute_manual_pairing_code), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x540A0FFE, // 0001 LDINT R2 4095 + 0x2C040202, // 0002 AND R1 R1 R2 + 0x540A0009, // 0003 LDINT R2 10 + 0x3C040202, // 0004 SHR R1 R1 R2 + 0x88080100, // 0005 GETMBR R2 R0 K0 + 0x540E02FF, // 0006 LDINT R3 768 + 0x2C080403, // 0007 AND R2 R2 R3 + 0x540E0005, // 0008 LDINT R3 6 + 0x38080403, // 0009 SHL R2 R2 R3 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x54123FFE, // 000B LDINT R4 16383 + 0x2C0C0604, // 000C AND R3 R3 R4 + 0x30080403, // 000D OR R2 R2 R3 + 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x5412000D, // 000F LDINT R4 14 + 0x3C0C0604, // 0010 SHR R3 R3 R4 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140002, // 0012 LDCONST R5 K2 + 0x5C180200, // 0013 MOVE R6 R1 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x5C200600, // 0015 MOVE R8 R3 + 0x7C100800, // 0016 CALL R4 4 + 0xB8160600, // 0017 GETNGBL R5 K3 + 0x88140B04, // 0018 GETMBR R5 R5 K4 + 0x8C140B05, // 0019 GETMET R5 R5 K5 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x7C140400, // 001B CALL R5 2 + 0x00100805, // 001C ADD R4 R4 R5 + 0x80040800, // 001D RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_send +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_msg_send, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config_remotes), - /* K1 */ be_nested_str_weak(find), + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(send_UDP), }), - be_str_weak(get_plugin_remote_info), + be_str_weak(msg_send), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ + ( &(const binstruction[ 5]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x5C100200, // 0002 MOVE R4 R1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -5740,10 +4741,184 @@ be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ /******************************************************************** -** Solidified function: clean_remotes +** Solidified function: button_pressed ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_clean_remotes, /* name */ +be_local_closure(class_Matter_Device_button_pressed, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(button_handler), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + }), + be_str_weak(button_pressed), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x540E000F, // 0000 LDINT R3 16 + 0x3C0C0403, // 0001 SHR R3 R2 R3 + 0x541200FE, // 0002 LDINT R4 255 + 0x2C0C0604, // 0003 AND R3 R3 R4 + 0x54120007, // 0004 LDINT R4 8 + 0x3C100404, // 0005 SHR R4 R2 R4 + 0x541600FE, // 0006 LDINT R5 255 + 0x2C100805, // 0007 AND R4 R4 R5 + 0x541600FE, // 0008 LDINT R5 255 + 0x2C140405, // 0009 AND R5 R2 R5 + 0x541A0017, // 000A LDINT R6 24 + 0x3C180406, // 000B SHR R6 R2 R6 + 0x541E00FE, // 000C LDINT R7 255 + 0x2C180C07, // 000D AND R6 R6 R7 + 0x8C1C0100, // 000E GETMET R7 R0 K0 + 0x00240B01, // 000F ADD R9 R5 K1 + 0x20280604, // 0010 NE R10 R3 R4 + 0x782A0001, // 0011 JMPF R10 #0014 + 0x58280001, // 0012 LDCONST R10 K1 + 0x70020000, // 0013 JMP #0015 + 0x58280002, // 0014 LDCONST R10 K2 + 0x780E0001, // 0015 JMPF R3 #0018 + 0x582C0002, // 0016 LDCONST R11 K2 + 0x70020000, // 0017 JMP #0019 + 0x582C0001, // 0018 LDCONST R11 K1 + 0x5C300C00, // 0019 MOVE R12 R6 + 0x7C1C0A00, // 001A CALL R7 5 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(started), + /* K1 */ be_nested_str_weak(autoconf_device), + /* K2 */ be_nested_str_weak(_start_udp), + /* K3 */ be_nested_str_weak(UDP_PORT), + /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), + }), + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x8C040104, // 0008 GETMET R1 R0 K4 + 0x7C040200, // 0009 CALL R1 1 + 0x50040200, // 000A LDBOOL R1 1 0 + 0x90020001, // 000B SETMBR R0 K0 R1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_http_remote +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_register_http_remote, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(http_remotes), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(get_timeout), + /* K3 */ be_nested_str_weak(set_timeout), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(HTTP_remote), + /* K6 */ be_nested_str_weak(plugins_config_remotes), + /* K7 */ be_nested_str_weak(set_info), + }), + be_str_weak(register_http_remote), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x600C0013, // 0004 GETGBL R3 G19 + 0x7C0C0000, // 0005 CALL R3 0 + 0x90020003, // 0006 SETMBR R0 K0 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x8C100901, // 0009 GETMET R4 R4 K1 + 0x5C180200, // 000A MOVE R6 R1 + 0x7C100400, // 000B CALL R4 2 + 0x78120009, // 000C JMPF R4 #0017 + 0x88100100, // 000D GETMBR R4 R0 K0 + 0x940C0801, // 000E GETIDX R3 R4 R1 + 0x8C140702, // 000F GETMET R5 R3 K2 + 0x7C140200, // 0010 CALL R5 1 + 0x14140405, // 0011 LT R5 R2 R5 + 0x78160002, // 0012 JMPF R5 #0016 + 0x8C140703, // 0013 GETMET R5 R3 K3 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C140400, // 0015 CALL R5 2 + 0x70020011, // 0016 JMP #0029 + 0xB8120800, // 0017 GETNGBL R4 K4 + 0x8C100905, // 0018 GETMET R4 R4 K5 + 0x5C180000, // 0019 MOVE R6 R0 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x5C200400, // 001B MOVE R8 R2 + 0x7C100800, // 001C CALL R4 4 + 0x5C0C0800, // 001D MOVE R3 R4 + 0x88100106, // 001E GETMBR R4 R0 K6 + 0x8C100901, // 001F GETMET R4 R4 K1 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x78120003, // 0022 JMPF R4 #0027 + 0x8C100707, // 0023 GETMET R4 R3 K7 + 0x88180106, // 0024 GETMBR R6 R0 K6 + 0x94180C01, // 0025 GETIDX R6 R6 R1 + 0x7C100400, // 0026 CALL R4 2 + 0x88100100, // 0027 GETMBR R4 R0 K0 + 0x98100203, // 0028 SETIDX R4 R1 R3 + 0x80040600, // 0029 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_config_ep +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_check_config_ep, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ @@ -5753,108 +4928,102 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(http_remotes), - /* K2 */ be_const_int(0), + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_config), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(http_remote), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(keys), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(close), - /* K16 */ be_nested_str_weak(remove), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(remove), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), + /* K12 */ be_nested_str_weak(next_ep), + /* K13 */ be_const_int(1), }), - be_str_weak(clean_remotes), + be_str_weak(check_config_ep), &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x780A004B, // 0002 JMPF R2 #004F - 0x60080013, // 0003 GETGBL R2 G19 - 0x7C080000, // 0004 CALL R2 0 - 0x600C0010, // 0005 GETGBL R3 G16 - 0x88100101, // 0006 GETMBR R4 R0 K1 + ( &(const binstruction[77]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x600C0010, // 0003 GETGBL R3 G16 + 0x88100100, // 0004 GETMBR R4 R0 K0 + 0x8C100901, // 0005 GETMET R4 R4 K1 + 0x7C100200, // 0006 CALL R4 1 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020003, // 0008 EXBLK 0 #000D + 0xA8020007, // 0008 EXBLK 0 #0011 0x5C100600, // 0009 MOVE R4 R3 0x7C100000, // 000A CALL R4 0 - 0x98080902, // 000B SETIDX R2 R4 K2 - 0x7001FFFB, // 000C JMP #0009 - 0x580C0003, // 000D LDCONST R3 K3 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100104, // 0011 GETMBR R4 R0 K4 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA802000F, // 0013 EXBLK 0 #0024 - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x8C140305, // 0016 GETMET R5 R1 K5 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200006, // 0018 LDCONST R8 K6 - 0x7C140600, // 0019 CALL R5 3 - 0x4C180000, // 001A LDNIL R6 - 0x20180A06, // 001B NE R6 R5 R6 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180507, // 001D GETMET R6 R2 K7 - 0x5C200A00, // 001E MOVE R8 R5 - 0x58240002, // 001F LDCONST R9 K2 - 0x7C180600, // 0020 CALL R6 3 - 0x00180D08, // 0021 ADD R6 R6 K8 - 0x98080A06, // 0022 SETIDX R2 R5 R6 - 0x7001FFEF, // 0023 JMP #0014 - 0x580C0003, // 0024 LDCONST R3 K3 - 0xAC0C0200, // 0025 CATCH R3 1 0 - 0xB0080000, // 0026 RAISE 2 R0 R0 - 0x600C0012, // 0027 GETGBL R3 G18 - 0x7C0C0000, // 0028 CALL R3 0 - 0x60100010, // 0029 GETGBL R4 G16 - 0x8C140509, // 002A GETMET R5 R2 K9 - 0x7C140200, // 002B CALL R5 1 - 0x7C100200, // 002C CALL R4 1 - 0xA8020008, // 002D EXBLK 0 #0037 - 0x5C140800, // 002E MOVE R5 R4 - 0x7C140000, // 002F CALL R5 0 - 0x94180405, // 0030 GETIDX R6 R2 R5 - 0x1C180D02, // 0031 EQ R6 R6 K2 - 0x781A0002, // 0032 JMPF R6 #0036 - 0x8C18070A, // 0033 GETMET R6 R3 K10 - 0x5C200A00, // 0034 MOVE R8 R5 - 0x7C180400, // 0035 CALL R6 2 - 0x7001FFF6, // 0036 JMP #002E - 0x58100003, // 0037 LDCONST R4 K3 - 0xAC100200, // 0038 CATCH R4 1 0 - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x60100010, // 003A GETGBL R4 G16 - 0x5C140600, // 003B MOVE R5 R3 - 0x7C100200, // 003C CALL R4 1 - 0xA802000D, // 003D EXBLK 0 #004C - 0x5C140800, // 003E MOVE R5 R4 - 0x7C140000, // 003F CALL R5 0 - 0xB81A1600, // 0040 GETNGBL R6 K11 - 0x881C0B0D, // 0041 GETMBR R7 R5 K13 - 0x001E1807, // 0042 ADD R7 K12 R7 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x7C180400, // 0044 CALL R6 2 - 0x8C180B0F, // 0045 GETMET R6 R5 K15 - 0x7C180200, // 0046 CALL R6 1 - 0x88180101, // 0047 GETMBR R6 R0 K1 - 0x8C180D10, // 0048 GETMET R6 R6 K16 - 0x88200B0D, // 0049 GETMBR R8 R5 K13 - 0x7C180400, // 004A CALL R6 2 - 0x7001FFF1, // 004B JMP #003E - 0x58100003, // 004C LDCONST R4 K3 - 0xAC100200, // 004D CATCH R4 1 0 - 0xB0080000, // 004E RAISE 2 R0 R0 - 0x80000000, // 004F RET 0 + 0x8C140502, // 000B GETMET R5 R2 K2 + 0x601C0009, // 000C GETGBL R7 G9 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C1C0200, // 000E CALL R7 1 + 0x7C140400, // 000F CALL R5 2 + 0x7001FFF7, // 0010 JMP #0009 + 0x580C0003, // 0011 LDCONST R3 K3 + 0xAC0C0200, // 0012 CATCH R3 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x600C0010, // 0014 GETGBL R3 G16 + 0x5C100400, // 0015 MOVE R4 R2 + 0x7C0C0200, // 0016 CALL R3 1 + 0xA8020030, // 0017 EXBLK 0 #0049 + 0x5C100600, // 0018 MOVE R4 R3 + 0x7C100000, // 0019 CALL R4 0 + 0x1C140904, // 001A EQ R5 R4 K4 + 0x7816000B, // 001B JMPF R5 #0028 + 0xB8160A00, // 001C GETNGBL R5 K5 + 0x58180006, // 001D LDCONST R6 K6 + 0x581C0007, // 001E LDCONST R7 K7 + 0x7C140400, // 001F CALL R5 2 + 0x88140100, // 0020 GETMBR R5 R0 K0 + 0x8C140B08, // 0021 GETMET R5 R5 K8 + 0x601C0008, // 0022 GETGBL R7 G8 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C1C0200, // 0024 CALL R7 1 + 0x7C140400, // 0025 CALL R5 2 + 0x50040200, // 0026 LDBOOL R1 1 0 + 0x7002001F, // 0027 JMP #0048 + 0xB8161200, // 0028 GETNGBL R5 K9 + 0x88140B0A, // 0029 GETMBR R5 R5 K10 + 0x1C140805, // 002A EQ R5 R4 R5 + 0x7816001B, // 002B JMPF R5 #0048 + 0x50040200, // 002C LDBOOL R1 1 0 + 0xB8160A00, // 002D GETNGBL R5 K5 + 0x60180018, // 002E GETGBL R6 G24 + 0x581C000B, // 002F LDCONST R7 K11 + 0x5C200800, // 0030 MOVE R8 R4 + 0x8824010C, // 0031 GETMBR R9 R0 K12 + 0x7C180600, // 0032 CALL R6 3 + 0x581C0007, // 0033 LDCONST R7 K7 + 0x7C140400, // 0034 CALL R5 2 + 0x60140008, // 0035 GETGBL R5 G8 + 0x8818010C, // 0036 GETMBR R6 R0 K12 + 0x7C140200, // 0037 CALL R5 1 + 0x88180100, // 0038 GETMBR R6 R0 K0 + 0x601C0008, // 0039 GETGBL R7 G8 + 0x5C200800, // 003A MOVE R8 R4 + 0x7C1C0200, // 003B CALL R7 1 + 0x88200100, // 003C GETMBR R8 R0 K0 + 0x941C1007, // 003D GETIDX R7 R8 R7 + 0x98180A07, // 003E SETIDX R6 R5 R7 + 0x88140100, // 003F GETMBR R5 R0 K0 + 0x8C140B08, // 0040 GETMET R5 R5 K8 + 0x601C0008, // 0041 GETGBL R7 G8 + 0x5C200800, // 0042 MOVE R8 R4 + 0x7C1C0200, // 0043 CALL R7 1 + 0x7C140400, // 0044 CALL R5 2 + 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x00140B0D, // 0046 ADD R5 R5 K13 + 0x90021805, // 0047 SETMBR R0 K12 R5 + 0x7001FFCE, // 0048 JMP #0018 + 0x580C0003, // 0049 LDCONST R3 K3 + 0xAC0C0200, // 004A CATCH R3 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80040200, // 004C RET 1 R1 }) ) ); @@ -5862,13 +5031,318 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ /******************************************************************** -** Solidified function: msg_received +** Solidified function: mdns_remove_op_discovery_all_fabrics ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_msg_received, /* name */ +be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_remove_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery_all_fabrics +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(active_fabrics), + /* K2 */ be_nested_str_weak(get_device_id), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_announce_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x780E0005, // 000A JMPF R3 #0011 + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0104, // 000E GETMET R3 R0 K4 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58040005, // 0012 LDCONST R1 K5 + 0xAC040200, // 0013 CATCH R1 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_random_passcode +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_nested_str_weak(get), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(134217727), + /* K5 */ be_const_int(99999998), + /* K6 */ be_nested_str_weak(PASSCODE_INVALID), + /* K7 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(generate_random_passcode), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x780E001D, // 0003 JMPF R3 #0022 + 0x8C0C0301, // 0004 GETMET R3 R1 K1 + 0x54160003, // 0005 LDINT R5 4 + 0x7C0C0400, // 0006 CALL R3 2 + 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x58140003, // 0008 LDCONST R5 K3 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C0C0600, // 000A CALL R3 3 + 0x2C0C0704, // 000B AND R3 R3 K4 + 0x5C080600, // 000C MOVE R2 R3 + 0x240C0505, // 000D GT R3 R2 K5 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7001FFF1, // 000F JMP #0002 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100106, // 0011 GETMBR R4 R0 K6 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x1C140404, // 0016 EQ R5 R2 R4 + 0x78160000, // 0017 JMPF R5 #0019 + 0x4C080000, // 0018 LDNIL R2 + 0x7001FFF9, // 0019 JMP #0014 + 0x580C0007, // 001A LDCONST R3 K7 + 0xAC0C0200, // 001B CATCH R3 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x4C0C0000, // 001D LDNIL R3 + 0x200C0403, // 001E NE R3 R2 R3 + 0x780E0000, // 001F JMPF R3 #0021 + 0x80040400, // 0020 RET 1 R2 + 0x7001FFDF, // 0021 JMP #0002 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_commissioning_open +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + }), + be_str_weak(is_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_plugin_by_endpoint +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(get_endpoint), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_plugin_by_endpoint), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C100702, // 0008 GETMET R4 R3 K2 + 0x7C100200, // 0009 CALL R4 1 + 0x1C100801, // 000A EQ R4 R4 R1 + 0x78120000, // 000B JMPF R4 #000D + 0x80040600, // 000C RET 1 R3 + 0x00080503, // 000D ADD R2 R2 K3 + 0x7001FFF1, // 000E JMP #0001 + 0x4C0C0000, // 000F LDNIL R3 + 0x80040600, // 0010 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: conf_to_log +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_conf_to_log, /* name */ be_nested_proto( 9, /* nstack */ - 4, /* argc */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(k2l), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(conf_to_log), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x58080001, // 0001 LDCONST R2 K1 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100302, // 0003 GETMET R4 R1 K2 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA802000B, // 0007 EXBLK 0 #0014 + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x1C140903, // 000A EQ R5 R4 K3 + 0x78160000, // 000B JMPF R5 #000D + 0x7001FFFA, // 000C JMP #0008 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180004, // 000E LDCONST R6 K4 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x94200004, // 0010 GETIDX R8 R0 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x00080405, // 0012 ADD R2 R2 R5 + 0x7001FFF3, // 0013 JMP #0008 + 0x580C0005, // 0014 LDCONST R3 K5 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x80040400, // 0017 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: received_ack +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_received_ack, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -5876,19 +5350,17 @@ be_local_closure(class_Matter_Device_msg_received, /* name */ &be_class_Matter_Device, 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(msg_received), + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(received_ack), }), - be_str_weak(msg_received), + be_str_weak(received_ack), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -5947,12 +5419,276 @@ be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ /******************************************************************** -** Solidified function: start +** Solidified function: get_plugin_class_arg ********************************************************************/ extern const bclass be_class_Matter_Device; -be_local_closure(class_Matter_Device_start, /* name */ +be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins_classes), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_nested_str_weak(), + }), + be_str_weak(get_plugin_class_arg), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x70020000, // 0006 JMP #0008 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: k2l +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_k2l, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 4, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Device), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), + }), + be_str_weak(k2l), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020005, // 000B EXBLK 0 #0012 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140502, // 000E GETMET R5 R2 K2 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x7C140400, // 0010 CALL R5 2 + 0x7001FFF9, // 0011 JMP #000C + 0x580C0003, // 0012 LDCONST R3 K3 + 0xAC0C0200, // 0013 CATCH R3 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x600C0010, // 0015 GETGBL R3 G16 + 0x6010000C, // 0016 GETGBL R4 G12 + 0x5C140400, // 0017 MOVE R5 R2 + 0x7C100200, // 0018 CALL R4 1 + 0x04100904, // 0019 SUB R4 R4 K4 + 0x40120804, // 001A CONNECT R4 K4 R4 + 0x7C0C0200, // 001B CALL R3 1 + 0xA8020010, // 001C EXBLK 0 #002E + 0x5C100600, // 001D MOVE R4 R3 + 0x7C100000, // 001E CALL R4 0 + 0x94140404, // 001F GETIDX R5 R2 R4 + 0x5C180800, // 0020 MOVE R6 R4 + 0x241C0D05, // 0021 GT R7 R6 K5 + 0x781E0008, // 0022 JMPF R7 #002C + 0x041C0D04, // 0023 SUB R7 R6 K4 + 0x941C0407, // 0024 GETIDX R7 R2 R7 + 0x241C0E05, // 0025 GT R7 R7 R5 + 0x781E0004, // 0026 JMPF R7 #002C + 0x041C0D04, // 0027 SUB R7 R6 K4 + 0x941C0407, // 0028 GETIDX R7 R2 R7 + 0x98080C07, // 0029 SETIDX R2 R6 R7 + 0x04180D04, // 002A SUB R6 R6 K4 + 0x7001FFF4, // 002B JMP #0021 + 0x98080C05, // 002C SETIDX R2 R6 R5 + 0x7001FFEE, // 002D JMP #001D + 0x580C0003, // 002E LDCONST R3 K3 + 0xAC0C0200, // 002F CATCH R3 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040400, // 0031 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ + be_nested_proto( + 13, /* nstack */ + 8, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + &be_class_Matter_Device, + }), + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(commissioning_open), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(millis), + /* K3 */ be_nested_str_weak(commissioning_iterations), + /* K4 */ be_nested_str_weak(commissioning_discriminator), + /* K5 */ be_nested_str_weak(commissioning_salt), + /* K6 */ be_nested_str_weak(commissioning_w0), + /* K7 */ be_nested_str_weak(commissioning_L), + /* K8 */ be_nested_str_weak(commissioning_admin_fabric), + /* K9 */ be_nested_str_weak(wifi), + /* K10 */ be_nested_str_weak(up), + /* K11 */ be_nested_str_weak(eth), + /* K12 */ be_nested_str_weak(mdns_announce_PASE), + /* K13 */ be_nested_str_weak(add_rule), + /* K14 */ be_nested_str_weak(Wifi_X23Connected), + /* K15 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(start_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xB8220200, // 0000 GETNGBL R8 K1 + 0x8C201102, // 0001 GETMET R8 R8 K2 + 0x7C200200, // 0002 CALL R8 1 + 0x542603E7, // 0003 LDINT R9 1000 + 0x08240209, // 0004 MUL R9 R1 R9 + 0x00201009, // 0005 ADD R8 R8 R9 + 0x90020008, // 0006 SETMBR R0 K0 R8 + 0x90020602, // 0007 SETMBR R0 K3 R2 + 0x90020803, // 0008 SETMBR R0 K4 R3 + 0x90020A04, // 0009 SETMBR R0 K5 R4 + 0x90020C05, // 000A SETMBR R0 K6 R5 + 0x90020E06, // 000B SETMBR R0 K7 R6 + 0x90021007, // 000C SETMBR R0 K8 R7 + 0xB8220200, // 000D GETNGBL R8 K1 + 0x8C201109, // 000E GETMET R8 R8 K9 + 0x7C200200, // 000F CALL R8 1 + 0x9420110A, // 0010 GETIDX R8 R8 K10 + 0x74220004, // 0011 JMPT R8 #0017 + 0xB8220200, // 0012 GETNGBL R8 K1 + 0x8C20110B, // 0013 GETMET R8 R8 K11 + 0x7C200200, // 0014 CALL R8 1 + 0x9420110A, // 0015 GETIDX R8 R8 K10 + 0x78220002, // 0016 JMPF R8 #001A + 0x8C20010C, // 0017 GETMET R8 R0 K12 + 0x7C200200, // 0018 CALL R8 1 + 0x7002000B, // 0019 JMP #0026 + 0xB8220200, // 001A GETNGBL R8 K1 + 0x8C20110D, // 001B GETMET R8 R8 K13 + 0x5828000E, // 001C LDCONST R10 K14 + 0x842C0000, // 001D CLOSURE R11 P0 + 0x5830000C, // 001E LDCONST R12 K12 + 0x7C200800, // 001F CALL R8 4 + 0xB8220200, // 0020 GETNGBL R8 K1 + 0x8C20110D, // 0021 GETMET R8 R8 K13 + 0x5828000F, // 0022 LDCONST R10 K15 + 0x842C0001, // 0023 CLOSURE R11 P1 + 0x5830000C, // 0024 LDCONST R12 K12 + 0x7C200800, // 0025 CALL R8 4 + 0xA0000000, // 0026 CLOSE R0 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_basic_commissioning +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ + be_nested_proto( + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5960,28 +5696,446 @@ be_local_closure(class_Matter_Device_start, /* name */ 0, /* has sup protos */ &be_class_Matter_Device, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(started), - /* K1 */ be_nested_str_weak(autoconf_device), - /* K2 */ be_nested_str_weak(_start_udp), - /* K3 */ be_nested_str_weak(UDP_PORT), - /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(count_active_fabrics), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start_root_basic_commissioning), }), - be_str_weak(start), + be_str_weak(_init_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040302, // 0003 EQ R1 R1 K2 + 0x78060001, // 0004 JMPF R1 #0007 + 0x8C040103, // 0005 GETMET R1 R0 K3 + 0x7C040200, // 0006 CALL R1 1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_plugin_by_friendly_name +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(get_name), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_plugin_by_friendly_name), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x1C080500, // 0006 EQ R2 R2 K0 + 0x780A0001, // 0007 JMPF R2 #000A + 0x4C080000, // 0008 LDNIL R2 + 0x80040400, // 0009 RET 1 R2 + 0x58080000, // 000A LDCONST R2 K0 + 0x600C000C, // 000B GETGBL R3 G12 + 0x88100101, // 000C GETMBR R4 R0 K1 + 0x7C0C0200, // 000D CALL R3 1 + 0x140C0403, // 000E LT R3 R2 R3 + 0x780E0010, // 000F JMPF R3 #0021 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x940C0602, // 0011 GETIDX R3 R3 R2 + 0x8C100702, // 0012 GETMET R4 R3 K2 + 0x7C100200, // 0013 CALL R4 1 + 0x4C140000, // 0014 LDNIL R5 + 0x20140805, // 0015 NE R5 R4 R5 + 0x78160007, // 0016 JMPF R5 #001F + 0x6014000C, // 0017 GETGBL R5 G12 + 0x5C180800, // 0018 MOVE R6 R4 + 0x7C140200, // 0019 CALL R5 1 + 0x24140B00, // 001A GT R5 R5 K0 + 0x78160002, // 001B JMPF R5 #001F + 0x1C140801, // 001C EQ R5 R4 R1 + 0x78160000, // 001D JMPF R5 #001F + 0x80040600, // 001E RET 1 R3 + 0x00080503, // 001F ADD R2 R2 K3 + 0x7001FFE9, // 0020 JMP #000B + 0x4C0C0000, // 0021 LDNIL R3 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device_map +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ + be_nested_proto( + 19, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(START_ENDPOINT), + /* K3 */ be_nested_str_weak(light), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(channels), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_const_int(0), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_nested_str_weak(light1), + /* K12 */ be_const_int(2), + /* K13 */ be_nested_str_weak(light2), + /* K14 */ be_nested_str_weak(light3), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(cmd), + /* K17 */ be_nested_str_weak(Status_X2013), + /* K18 */ be_nested_str_weak(log), + /* K19 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(contains), + /* K22 */ be_nested_str_weak(StatusSHT), + /* K23 */ be_nested_str_weak(SHT), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), + /* K25 */ be_nested_str_weak(Relay1), + /* K26 */ be_nested_str_weak(Relay2), + /* K27 */ be_nested_str_weak(push), + /* K28 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), + /* K29 */ be_nested_str_weak(TiltConfig), + /* K30 */ be_nested_str_weak(shutter_X2Btilt), + /* K31 */ be_nested_str_weak(shutter), + /* K32 */ be_nested_str_weak(get_power), + /* K33 */ be_nested_str_weak(relay), + /* K34 */ be_nested_str_weak(load), + /* K35 */ be_nested_str_weak(read_sensors), + /* K36 */ be_nested_str_weak(autoconf_sensors_list), + /* K37 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(autoconf_device_map), + &be_const_str_solidified, + ( &(const binstruction[196]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x60080013, // 0001 GETGBL R2 G19 + 0x7C080000, // 0002 CALL R2 0 + 0xB80E0200, // 0003 GETNGBL R3 K1 + 0x880C0702, // 0004 GETMBR R3 R3 K2 + 0x50100000, // 0005 LDBOOL R4 0 0 + 0xA4160600, // 0006 IMPORT R5 K3 + 0x8C180B04, // 0007 GETMET R6 R5 K4 + 0x7C180200, // 0008 CALL R6 1 + 0x4C1C0000, // 0009 LDNIL R7 + 0x201C0C07, // 000A NE R7 R6 R7 + 0x781E0024, // 000B JMPF R7 #0031 + 0x601C000C, // 000C GETGBL R7 G12 + 0x8C200D05, // 000D GETMET R8 R6 K5 + 0x58280006, // 000E LDCONST R10 K6 + 0x582C0007, // 000F LDCONST R11 K7 + 0x7C200600, // 0010 CALL R8 3 + 0x7C1C0200, // 0011 CALL R7 1 + 0x24200F08, // 0012 GT R8 R7 K8 + 0x7822001C, // 0013 JMPF R8 #0031 + 0x1C200F09, // 0014 EQ R8 R7 K9 + 0x78220007, // 0015 JMPF R8 #001E + 0x60200008, // 0016 GETGBL R8 G8 + 0x5C240600, // 0017 MOVE R9 R3 + 0x7C200200, // 0018 CALL R8 1 + 0x60240013, // 0019 GETGBL R9 G19 + 0x7C240000, // 001A CALL R9 0 + 0x9826150B, // 001B SETIDX R9 K10 K11 + 0x98081009, // 001C SETIDX R2 R8 R9 + 0x70020010, // 001D JMP #002F + 0x1C200F0C, // 001E EQ R8 R7 K12 + 0x78220007, // 001F JMPF R8 #0028 + 0x60200008, // 0020 GETGBL R8 G8 + 0x5C240600, // 0021 MOVE R9 R3 + 0x7C200200, // 0022 CALL R8 1 + 0x60240013, // 0023 GETGBL R9 G19 + 0x7C240000, // 0024 CALL R9 0 + 0x9826150D, // 0025 SETIDX R9 K10 K13 + 0x98081009, // 0026 SETIDX R2 R8 R9 + 0x70020006, // 0027 JMP #002F + 0x60200008, // 0028 GETGBL R8 G8 + 0x5C240600, // 0029 MOVE R9 R3 + 0x7C200200, // 002A CALL R8 1 + 0x60240013, // 002B GETGBL R9 G19 + 0x7C240000, // 002C CALL R9 0 + 0x9826150E, // 002D SETIDX R9 K10 K14 + 0x98081009, // 002E SETIDX R2 R8 R9 + 0x50100200, // 002F LDBOOL R4 1 0 + 0x000C0709, // 0030 ADD R3 R3 K9 + 0xB81E1E00, // 0031 GETNGBL R7 K15 + 0x8C1C0F10, // 0032 GETMET R7 R7 K16 + 0x58240011, // 0033 LDCONST R9 K17 + 0x50280200, // 0034 LDBOOL R10 1 0 + 0x7C1C0600, // 0035 CALL R7 3 + 0x60200012, // 0036 GETGBL R8 G18 + 0x7C200000, // 0037 CALL R8 0 + 0xB8262400, // 0038 GETNGBL R9 K18 + 0x60280008, // 0039 GETGBL R10 G8 + 0x5C2C0E00, // 003A MOVE R11 R7 + 0x7C280200, // 003B CALL R10 1 + 0x002A260A, // 003C ADD R10 K19 R10 + 0x582C0014, // 003D LDCONST R11 K20 + 0x7C240400, // 003E CALL R9 2 + 0x4C240000, // 003F LDNIL R9 + 0x20240E09, // 0040 NE R9 R7 R9 + 0x7826004D, // 0041 JMPF R9 #0090 + 0x8C240F15, // 0042 GETMET R9 R7 K21 + 0x582C0016, // 0043 LDCONST R11 K22 + 0x7C240400, // 0044 CALL R9 2 + 0x78260049, // 0045 JMPF R9 #0090 + 0x941C0F16, // 0046 GETIDX R7 R7 K22 + 0x58240008, // 0047 LDCONST R9 K8 + 0x50280200, // 0048 LDBOOL R10 1 0 + 0x782A0045, // 0049 JMPF R10 #0090 + 0x60280008, // 004A GETGBL R10 G8 + 0x5C2C1200, // 004B MOVE R11 R9 + 0x7C280200, // 004C CALL R10 1 + 0x002A2E0A, // 004D ADD R10 K23 R10 + 0x8C2C0F15, // 004E GETMET R11 R7 K21 + 0x5C341400, // 004F MOVE R13 R10 + 0x7C2C0400, // 0050 CALL R11 2 + 0x742E0000, // 0051 JMPT R11 #0053 + 0x7002003C, // 0052 JMP #0090 + 0x942C0E0A, // 0053 GETIDX R11 R7 R10 + 0xB8322400, // 0054 GETNGBL R12 K18 + 0x60340018, // 0055 GETGBL R13 G24 + 0x58380018, // 0056 LDCONST R14 K24 + 0x5C3C1400, // 0057 MOVE R15 R10 + 0x60400008, // 0058 GETGBL R16 G8 + 0x5C441600, // 0059 MOVE R17 R11 + 0x7C400200, // 005A CALL R16 1 + 0x7C340600, // 005B CALL R13 3 + 0x58380014, // 005C LDCONST R14 K20 + 0x7C300400, // 005D CALL R12 2 + 0x8C301705, // 005E GETMET R12 R11 K5 + 0x58380019, // 005F LDCONST R14 K25 + 0x543DFFFE, // 0060 LDINT R15 -1 + 0x7C300600, // 0061 CALL R12 3 + 0x8C341705, // 0062 GETMET R13 R11 K5 + 0x583C001A, // 0063 LDCONST R15 K26 + 0x5441FFFE, // 0064 LDINT R16 -1 + 0x7C340600, // 0065 CALL R13 3 + 0x24381908, // 0066 GT R14 R12 K8 + 0x783A0002, // 0067 JMPF R14 #006B + 0x8C38111B, // 0068 GETMET R14 R8 K27 + 0x04401909, // 0069 SUB R16 R12 K9 + 0x7C380400, // 006A CALL R14 2 + 0x24381B08, // 006B GT R14 R13 K8 + 0x783A0002, // 006C JMPF R14 #0070 + 0x8C38111B, // 006D GETMET R14 R8 K27 + 0x04401B09, // 006E SUB R16 R13 K9 + 0x7C380400, // 006F CALL R14 2 + 0xB83A2400, // 0070 GETNGBL R14 K18 + 0x603C0018, // 0071 GETGBL R15 G24 + 0x5840001C, // 0072 LDCONST R16 K28 + 0x5C441800, // 0073 MOVE R17 R12 + 0x5C481A00, // 0074 MOVE R18 R13 + 0x7C3C0600, // 0075 CALL R15 3 + 0x58400014, // 0076 LDCONST R16 K20 + 0x7C380400, // 0077 CALL R14 2 + 0x8C381705, // 0078 GETMET R14 R11 K5 + 0x5840001D, // 0079 LDCONST R16 K29 + 0x7C380400, // 007A CALL R14 2 + 0x783A0002, // 007B JMPF R14 #007F + 0x943C1D0C, // 007C GETIDX R15 R14 K12 + 0x243C1F08, // 007D GT R15 R15 K8 + 0x743E0000, // 007E JMPT R15 #0080 + 0x503C0001, // 007F LDBOOL R15 0 1 + 0x503C0200, // 0080 LDBOOL R15 1 0 + 0x60400008, // 0081 GETGBL R16 G8 + 0x5C440600, // 0082 MOVE R17 R3 + 0x7C400200, // 0083 CALL R16 1 + 0x60440013, // 0084 GETGBL R17 G19 + 0x7C440000, // 0085 CALL R17 0 + 0x783E0001, // 0086 JMPF R15 #0089 + 0x5848001E, // 0087 LDCONST R18 K30 + 0x70020000, // 0088 JMP #008A + 0x5848001F, // 0089 LDCONST R18 K31 + 0x98461412, // 008A SETIDX R17 K10 R18 + 0x98463E09, // 008B SETIDX R17 K31 R9 + 0x98082011, // 008C SETIDX R2 R16 R17 + 0x000C0709, // 008D ADD R3 R3 K9 + 0x00241309, // 008E ADD R9 R9 K9 + 0x7001FFB7, // 008F JMP #0048 + 0x6024000C, // 0090 GETGBL R9 G12 + 0xB82A1E00, // 0091 GETNGBL R10 K15 + 0x8C281520, // 0092 GETMET R10 R10 K32 + 0x7C280200, // 0093 CALL R10 1 + 0x7C240200, // 0094 CALL R9 1 + 0x58280008, // 0095 LDCONST R10 K8 + 0x78120000, // 0096 JMPF R4 #0098 + 0x04241309, // 0097 SUB R9 R9 K9 + 0x142C1409, // 0098 LT R11 R10 R9 + 0x782E0011, // 0099 JMPF R11 #00AC + 0x8C2C1105, // 009A GETMET R11 R8 K5 + 0x5C341400, // 009B MOVE R13 R10 + 0x7C2C0400, // 009C CALL R11 2 + 0x4C300000, // 009D LDNIL R12 + 0x1C2C160C, // 009E EQ R11 R11 R12 + 0x782E0009, // 009F JMPF R11 #00AA + 0x602C0008, // 00A0 GETGBL R11 G8 + 0x5C300600, // 00A1 MOVE R12 R3 + 0x7C2C0200, // 00A2 CALL R11 1 + 0x60300013, // 00A3 GETGBL R12 G19 + 0x7C300000, // 00A4 CALL R12 0 + 0x98321521, // 00A5 SETIDX R12 K10 K33 + 0x00341509, // 00A6 ADD R13 R10 K9 + 0x9832420D, // 00A7 SETIDX R12 K33 R13 + 0x9808160C, // 00A8 SETIDX R2 R11 R12 + 0x000C0709, // 00A9 ADD R3 R3 K9 + 0x00281509, // 00AA ADD R10 R10 K9 + 0x7001FFEB, // 00AB JMP #0098 + 0x8C2C0322, // 00AC GETMET R11 R1 K34 + 0xB8361E00, // 00AD GETNGBL R13 K15 + 0x8C341B23, // 00AE GETMET R13 R13 K35 + 0x7C340200, // 00AF CALL R13 1 + 0x7C2C0400, // 00B0 CALL R11 2 + 0x8C300124, // 00B1 GETMET R12 R0 K36 + 0x5C381600, // 00B2 MOVE R14 R11 + 0x7C300400, // 00B3 CALL R12 2 + 0x60340010, // 00B4 GETGBL R13 G16 + 0x5C381800, // 00B5 MOVE R14 R12 + 0x7C340200, // 00B6 CALL R13 1 + 0xA8020007, // 00B7 EXBLK 0 #00C0 + 0x5C381A00, // 00B8 MOVE R14 R13 + 0x7C380000, // 00B9 CALL R14 0 + 0x603C0008, // 00BA GETGBL R15 G8 + 0x5C400600, // 00BB MOVE R16 R3 + 0x7C3C0200, // 00BC CALL R15 1 + 0x98081E0E, // 00BD SETIDX R2 R15 R14 + 0x000C0709, // 00BE ADD R3 R3 K9 + 0x7001FFF7, // 00BF JMP #00B8 + 0x58340025, // 00C0 LDCONST R13 K37 + 0xAC340200, // 00C1 CATCH R13 1 0 + 0xB0080000, // 00C2 RAISE 2 R0 R0 + 0x80040400, // 00C3 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_active_endpoints +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins), + /* K1 */ be_nested_str_weak(get_endpoint), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_active_endpoints), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020011, // 0005 EXBLK 0 #0018 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140901, // 0008 GETMET R5 R4 K1 + 0x7C140200, // 0009 CALL R5 1 + 0x78060002, // 000A JMPF R1 #000E + 0x1C180B02, // 000B EQ R6 R5 K2 + 0x781A0000, // 000C JMPF R6 #000E + 0x7001FFF7, // 000D JMP #0006 + 0x8C180503, // 000E GETMET R6 R2 K3 + 0x5C200A00, // 000F MOVE R8 R5 + 0x7C180400, // 0010 CALL R6 2 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C180504, // 0014 GETMET R6 R2 K4 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x7C180400, // 0016 CALL R6 2 + 0x7001FFED, // 0017 JMP #0006 + 0x580C0005, // 0018 LDCONST R3 K5 + 0xAC0C0200, // 0019 CATCH R3 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x80040400, // 001B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrJoin +********************************************************************/ +extern const bclass be_class_Matter_Device; +be_local_closure(class_Matter_Device_MtrJoin, /* name */ + be_nested_proto( + 8, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Device, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(start_root_basic_commissioning), + /* K1 */ be_nested_str_weak(stop_basic_commissioning), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(resp_cmnd_done), + }), + be_str_weak(MtrJoin), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x8C040104, // 0008 GETMET R1 R0 K4 - 0x7C040200, // 0009 CALL R1 1 - 0x50040200, // 000A LDBOOL R1 1 0 - 0x90020001, // 000B SETMBR R0 K0 R1 + 0x60140009, // 0000 GETGBL R5 G9 + 0x5C180600, // 0001 MOVE R6 R3 + 0x7C140200, // 0002 CALL R5 1 + 0x78160002, // 0003 JMPF R5 #0007 + 0x8C180100, // 0004 GETMET R6 R0 K0 + 0x7C180200, // 0005 CALL R6 1 + 0x70020001, // 0006 JMP #0009 + 0x8C180101, // 0007 GETMET R6 R0 K1 + 0x7C180200, // 0008 CALL R6 1 + 0xB81A0400, // 0009 GETNGBL R6 K2 + 0x8C180D03, // 000A GETMET R6 R6 K3 + 0x7C180200, // 000B CALL R6 1 0x80000000, // 000C RET 0 }) ) @@ -5995,39 +6149,85 @@ be_local_closure(class_Matter_Device_start, /* name */ be_local_class(Matter_Device, 34, NULL, - be_nested_map(112, + be_nested_map(115, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(commissioning_salt, -1), be_const_var(15) }, - { be_const_key_weak(msg_send, 0), be_const_closure(class_Matter_Device_msg_send_closure) }, - { be_const_key_weak(bridge_remove_endpoint, -1), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, - { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, - { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, - { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, - { be_const_key_weak(root_discriminator, -1), be_const_var(26) }, - { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, - { be_const_key_weak(hostname_wifi, -1), be_const_var(21) }, - { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, - { be_const_key_weak(plugins_config, -1), be_const_var(3) }, - { be_const_key_weak(get_active_endpoints, -1), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(start_commissioning_complete, 110), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, + { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, + { be_const_key_weak(remove_fabric, 17), be_const_closure(class_Matter_Device_remove_fabric_closure) }, + { be_const_key_weak(_mdns_announce_hostname, 36), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, + { be_const_key_weak(add_read_sensors_schedule, -1), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, + { be_const_key_weak(every_second, 109), be_const_closure(class_Matter_Device_every_second_closure) }, + { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, + { be_const_key_weak(commissioning_w0, -1), be_const_var(16) }, { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_Device_msg_received_closure) }, - { be_const_key_weak(http_remotes, 41), be_const_var(25) }, - { be_const_key_weak(commissioning_instance_eth, 40), be_const_var(20) }, - { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, - { be_const_key_weak(hostname_eth, -1), be_const_var(22) }, - { be_const_key_weak(start_operational_discovery, 47), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, - { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, - { be_const_key_weak(add_read_sensors_schedule, 38), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, - { be_const_key_weak(events, 62), be_const_var(11) }, - { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, - { be_const_key_weak(_start_udp, 75), be_const_closure(class_Matter_Device__start_udp_closure) }, - { be_const_key_weak(compute_qrcode_content, 70), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, - { be_const_key_weak(get_plugin_remote_info, 93), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, - { be_const_key_weak(_instantiate_plugins_from_config, 107), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, - { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(udp_server, -1), be_const_var(5) }, - { be_const_key_weak(sessions, -1), be_const_var(8) }, + { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) }, + { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(33) }, + { be_const_key_weak(get_active_endpoints, 81), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(commissioning_salt, -1), be_const_var(15) }, + { be_const_key_weak(autoconf_device, 84), be_const_closure(class_Matter_Device_autoconf_device_closure) }, + { be_const_key_weak(ipv4only, -1), be_const_var(28) }, + { be_const_key_weak(PASE_TIMEOUT, 37), be_const_int(600) }, + { be_const_key_weak(ui, 6), be_const_var(9) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, + { be_const_key_weak(button_handler, -1), be_const_closure(class_Matter_Device_button_handler_closure) }, + { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, + { be_const_key_weak(find_plugin_by_friendly_name, 86), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, + { be_const_key_weak(debug, 95), be_const_var(31) }, + { be_const_key_weak(events, 52), be_const_var(11) }, { be_const_key_weak(resolve_attribute_read_solo, -1), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) }, - { be_const_key_weak(started, 15), be_const_var(0) }, + { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, + { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, + { be_const_key_weak(button_multi_pressed, 98), be_const_closure(class_Matter_Device_button_multi_pressed_closure) }, + { be_const_key_weak(udp_server, 76), be_const_var(5) }, + { be_const_key_weak(message_handler, -1), be_const_var(7) }, + { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, + { be_const_key_weak(plugins, -1), be_const_var(1) }, + { be_const_key_weak(invoke_request, 9), be_const_closure(class_Matter_Device_invoke_request_closure) }, + { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, + { be_const_key_weak(disable_bridge_mode, 11), be_const_var(29) }, + { be_const_key_weak(start_basic_commissioning, 77), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, + { be_const_key_weak(sessions, -1), be_const_var(8) }, + { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, + { be_const_key_weak(MtrInfo_one, 79), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, + { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(24) }, + { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, + { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, + { be_const_key_weak(save_before_restart, 103), be_const_closure(class_Matter_Device_save_before_restart_closure) }, + { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, + { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, + { be_const_key_weak(next_ep, -1), be_const_var(30) }, + { be_const_key_weak(conf_to_log, -1), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, + { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, + { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, + { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, + { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, + { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, + { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, + { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, + { be_const_key_weak(find_plugin_by_endpoint, 64), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, + { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, + { be_const_key_weak(is_commissioning_open, 74), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, + { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, + { be_const_key_weak(init, 45), be_const_closure(class_Matter_Device_init_closure) }, + { be_const_key_weak(read_sensors_scheduler, 87), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, + { be_const_key_weak(bridge_remove_endpoint, 12), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, + { be_const_key_weak(http_remotes, -1), be_const_var(25) }, + { be_const_key_weak(tick, -1), be_const_var(10) }, + { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, + { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, + { be_const_key_weak(_trigger_read_sensors, 96), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, + { be_const_key_weak(MtrUpdate, -1), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, + { be_const_key_weak(commissioning_open, -1), be_const_var(12) }, + { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, + { be_const_key_weak(hostname_wifi, 78), be_const_var(21) }, + { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, + { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, + { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, + { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(18) }, + { be_const_key_weak(compute_manual_pairing_code, 93), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(12, ( (struct bvalue*) &(const bvalue[]) { @@ -6044,43 +6244,33 @@ be_local_class(Matter_Device, be_const_int(12345678), be_const_int(87654321), })) ) } )) }, - { be_const_key_weak(bridge_add_endpoint, 85), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, + { be_const_key_weak(VENDOR_ID, 68), be_const_int(65521) }, + { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, 101), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) }, + { be_const_key_weak(commissioning_iterations, -1), be_const_var(13) }, { be_const_key_weak(profiler, -1), be_const_var(6) }, - { be_const_key_weak(MtrUpdate, -1), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, - { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, - { be_const_key_weak(save_param, 77), be_const_closure(class_Matter_Device_save_param_closure) }, - { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, - { be_const_key_weak(init, 2), be_const_closure(class_Matter_Device_init_closure) }, - { be_const_key_weak(process_attribute_expansion, 105), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, - { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, - { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, - { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, - { be_const_key_weak(register_commands, 34), be_const_closure(class_Matter_Device_register_commands_closure) }, - { be_const_key_weak(every_250ms, 50), be_const_closure(class_Matter_Device_every_250ms_closure) }, - { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, - { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, - { be_const_key_weak(conf_to_log, -1), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, - { be_const_key_weak(probe_sensor_time, -1), be_const_var(32) }, - { be_const_key_weak(next_ep, 49), be_const_var(30) }, - { be_const_key_weak(mdns_pase_eth, 57), be_const_var(23) }, - { be_const_key_weak(tick, -1), be_const_var(10) }, - { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(24) }, - { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, - { be_const_key_weak(remove_fabric, 65), be_const_closure(class_Matter_Device_remove_fabric_closure) }, - { be_const_key_weak(probe_sensor_timestamp, 76), be_const_var(33) }, - { be_const_key_weak(mdns_announce_PASE, 37), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, - { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, - { be_const_key_weak(ui, 24), be_const_var(9) }, - { be_const_key_weak(PRODUCT_ID, 92), be_const_int(32768) }, - { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, - { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, - { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, - { be_const_key_weak(plugins_classes, 44), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, + { be_const_key_weak(commissioning_discriminator, -1), be_const_var(14) }, + { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) }, + { be_const_key_weak(button_pressed, -1), be_const_closure(class_Matter_Device_button_pressed_closure) }, + { be_const_key_weak(msg_send, 35), be_const_closure(class_Matter_Device_msg_send_closure) }, + { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, 55), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(probe_sensor_time, 47), be_const_var(32) }, + { be_const_key_weak(get_plugin_class_displayname, 70), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, + { be_const_key_weak(root_discriminator, -1), be_const_var(26) }, + { be_const_key_weak(signal_endpoints_changed, 4), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, + { be_const_key_weak(PBKDF_ITERATIONS, 58), be_const_int(1000) }, + { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, + { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, + { be_const_key_weak(stop, 51), be_const_closure(class_Matter_Device_stop_closure) }, + { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(received_ack, -1), be_const_closure(class_Matter_Device_received_ack_closure) }, + { be_const_key_weak(plugins_classes, 38), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(53, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, - { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, + { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) }, { be_const_key_weak(v_contact, 36), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) }, { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) }, @@ -6089,29 +6279,29 @@ be_local_class(Matter_Device, { be_const_key_weak(shutter, -1), be_const_class(be_class_Matter_Plugin_Shutter) }, { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) }, { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) }, - { be_const_key_weak(http_pressure, 32), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, + { be_const_key_weak(http_pressure, 12), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) }, { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) }, - { be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) }, + { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, { be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) }, - { be_const_key_weak(v_illuminance, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, - { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, - { be_const_key_weak(temperature, 29), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, + { be_const_key_weak(v_illuminance, 29), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) }, + { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(temperature, 20), be_const_class(be_class_Matter_Plugin_Sensor_Temp) }, { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) }, { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) }, { be_const_key_weak(http_occupancy, 6), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) }, - { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) }, + { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) }, { be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) }, { be_const_key_weak(root, -1), be_const_class(be_class_Matter_Plugin_Root) }, { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) }, - { be_const_key_weak(v_temp, 20), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, + { be_const_key_weak(v_temp, 15), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) }, { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) }, { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) }, { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) }, - { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) }, + { be_const_key_weak(contact, 52), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, { be_const_key_weak(light2, 27), be_const_class(be_class_Matter_Plugin_Light2) }, { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) }, - { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) }, + { be_const_key_weak(gensw_btn, -1), be_const_class(be_class_Matter_Plugin_Sensor_GenericSwitch_Btn) }, { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) }, { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) }, { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) }, @@ -6120,66 +6310,33 @@ be_local_class(Matter_Device, { be_const_key_weak(v_rain, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) }, { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) }, { be_const_key_weak(http_waterleak, 45), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) }, - { be_const_key_weak(contact, 1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) }, + { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) }, { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) }, { be_const_key_weak(airquality, 35), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) }, { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) }, { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) }, - { be_const_key_weak(http_temperature, 15), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, + { be_const_key_weak(http_temperature, 41), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) }, { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) }, - { be_const_key_weak(v_humidity, 12), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, + { be_const_key_weak(v_humidity, 1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) }, { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) }, { be_const_key_weak(aggregator, 11), be_const_class(be_class_Matter_Plugin_Aggregator) }, { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, - { be_const_key_weak(gensw, -1), be_const_class(be_class_Matter_Plugin_Sensor_GenericSwitch) }, + { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, })) ) } )) }, { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) }, - { be_const_key_weak(mdns_remove_PASE, 86), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, - { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, - { be_const_key_weak(debug, 84), be_const_var(31) }, - { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, - { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, - { be_const_key_weak(received_ack, 69), be_const_closure(class_Matter_Device_received_ack_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, - { be_const_key_weak(plugins_config_remotes, 80), be_const_var(4) }, - { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, - { be_const_key_weak(message_handler, 99), be_const_var(7) }, - { be_const_key_weak(compute_manual_pairing_code, 68), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, - { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, - { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) }, - { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, - { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, - { be_const_key_weak(commissioning_w0, -1), be_const_var(16) }, - { be_const_key_weak(start_commissioning_complete_deferred, 67), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, - { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, - { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(18) }, - { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, - { be_const_key_weak(start_commissioning_complete, 56), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, - { be_const_key_weak(FILENAME, 12), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(commissioning_open, -1), be_const_var(12) }, - { be_const_key_weak(MtrInfo, -1), be_const_closure(class_Matter_Device_MtrInfo_closure) }, - { be_const_key_weak(invoke_request, 45), be_const_closure(class_Matter_Device_invoke_request_closure) }, - { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, - { be_const_key_weak(commissioning_discriminator, 103), be_const_var(14) }, - { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, - { be_const_key_weak(is_root_commissioning_open, 39), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, - { be_const_key_weak(find_plugin_by_friendly_name, -1), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, - { be_const_key_weak(disable_bridge_mode, -1), be_const_var(29) }, - { be_const_key_weak(UDP_PORT, 36), be_const_int(5540) }, - { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, - { be_const_key_weak(register_http_remote, 33), be_const_closure(class_Matter_Device_register_http_remote_closure) }, - { be_const_key_weak(stop, 31), be_const_closure(class_Matter_Device_stop_closure) }, - { be_const_key_weak(mdns_announce_op_discovery, 27), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(plugins, -1), be_const_var(1) }, - { be_const_key_weak(ipv4only, 16), be_const_var(28) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) }, - { be_const_key_weak(save_before_restart, 14), be_const_closure(class_Matter_Device_save_before_restart_closure) }, - { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, - { be_const_key_weak(k2l, 8), be_const_static_closure(class_Matter_Device_k2l_closure) }, - { be_const_key_weak(commissioning_iterations, 3), be_const_var(13) }, + { be_const_key_weak(k2l, -1), be_const_static_closure(class_Matter_Device_k2l_closure) }, + { be_const_key_weak(plugins_config, -1), be_const_var(3) }, + { be_const_key_weak(hostname_eth, 33), be_const_var(22) }, + { be_const_key_weak(every_250ms, 28), be_const_closure(class_Matter_Device_every_250ms_closure) }, + { be_const_key_weak(register_commands, 21), be_const_closure(class_Matter_Device_register_commands_closure) }, + { be_const_key_weak(MtrInfo, 20), be_const_closure(class_Matter_Device_MtrInfo_closure) }, { be_const_key_weak(root_passcode, -1), be_const_var(27) }, - { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) }, + { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, + { be_const_key_weak(mdns_pase_eth, -1), be_const_var(23) }, + { be_const_key_weak(started, -1), be_const_var(0) }, + { be_const_key_weak(commissioning_instance_eth, 7), be_const_var(20) }, + { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, + { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, })), be_str_weak(Matter_Device) ); From 363cd8d79e42324e079b964cfcb34d45beb8c1ff Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 5 Jul 2024 11:59:16 +0200 Subject: [PATCH 131/252] Update changelogs --- CHANGELOG.md | 4 ++-- RELEASENOTES.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42406f0ae..0717d2f40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,8 +13,8 @@ All notable changes to this project will be documented in this file. - Support for Sonoff POWCT Ring (#21131) - NeoPool data validation and communication statistics default enabled for ESP32 only (#21721) - `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724) -- Berry `int64` added `low32()` and `high32()` methods, used in Matter -- Matter support for 'Generic Switch' based on Tasmota Buttons +- Berry `int64` added `low32()` and `high32()` methods, used in Matter (#21728) +- Matter support for 'Generic Switch' based on Tasmota Buttons (#21731) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 0ff1d4566..737de22c9 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -135,6 +135,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry `math.min()` and `math.max()` [#21705](https://github.com/arendst/Tasmota/issues/21705) - Berry `FUNC_ANY_KEY` event calling `any_key()` [#21708](https://github.com/arendst/Tasmota/issues/21708) - Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second [#21711](https://github.com/arendst/Tasmota/issues/21711) +- Berry `int64` added `low32()` and `high32()` methods, used in Matter [#21728](https://github.com/arendst/Tasmota/issues/21728) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) @@ -142,6 +143,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter Fan support (virtual only) [#21637](https://github.com/arendst/Tasmota/issues/21637) - Matter show event name in logs [#21649](https://github.com/arendst/Tasmota/issues/21649) - Matter full support of events [#21698](https://github.com/arendst/Tasmota/issues/21698) +- Matter support for 'Generic Switch' based on Tasmota Buttons [#21731](https://github.com/arendst/Tasmota/issues/21731) ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) From fee5251bd455b72b7a372d2019ee8b98249a6ece Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 5 Jul 2024 15:30:31 +0200 Subject: [PATCH 132/252] Fix universal display power regression (#21726) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/tasmota_xdrv_driver/xdrv_13_display.ino | 9 ++++----- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0717d2f40..34683759d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ All notable changes to this project will be documented in this file. ### Fixed - Berry `bytes.resize()` for large sizes (#21716) +- On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 (#21726) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 737de22c9..b09b5e27b 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -167,6 +167,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter refactor reading of multiple attributes to reduce memory pressure [#21675](https://github.com/arendst/Tasmota/issues/21675) ### Fixed +- On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 [#21726](https://github.com/arendst/Tasmota/issues/21726) - Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663) - Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660) - ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino index b0350afef..8c0151232 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino @@ -1892,12 +1892,11 @@ void DisplayInitDriver(void) { UpdateDevicesPresent(1); if (!PinUsed(GPIO_BACKLIGHT)) { -// if (TasmotaGlobal.light_type && (4 == Settings->display_model)) { - if (TasmotaGlobal.light_type && // Assume PWM channel - ((4 == Settings->display_model) || // ILI9341 legacy - (17 == Settings->display_model)) // Universal + if ((LT_PWM1 == TasmotaGlobal.light_type) && // Single PWM light channel + ((4 == Settings->display_model) || // ILI9341 legacy + (17 == Settings->display_model)) // Universal ) { - UpdateDevicesPresent(-1); // Assume PWM channel is used for backlight + UpdateDevicesPresent(-1); // Assume PWM channel is used for backlight } } disp_device = TasmotaGlobal.devices_present; From 2f62c156f9ca5b291f5b3318d3b3524b9dc3e351 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 7 Jul 2024 09:54:53 +0200 Subject: [PATCH 133/252] Matter remove longpress announce (#21742) --- ...atter_Plugin_2_Sensor_GenericSwitch_Btn.be | 2 +- ...Matter_Plugin_2_Sensor_GenericSwitch_Btn.h | 41 ++++++++----------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch_Btn.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch_Btn.be index 6a13c97e6..377259cca 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch_Btn.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch_Btn.be @@ -88,7 +88,7 @@ class Matter_Plugin_Sensor_GenericSwitch_Btn : Matter_Plugin_Device return tlv_solo.set(TLV.U1, 5) # up to penta press elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- - return tlv_solo.set(TLV.U4, 0x02 | 0x04 | 0x08 | 0x10) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchLongPress + MomentarySwitchMultiPress + return tlv_solo.set(TLV.U4, 0x16 #-0x02 | 0x04 | 0x10-#) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchMultiPress end end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h index 18f3a86ce..5ce9b2ded 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h @@ -37,14 +37,14 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ + ( &(const binstruction[48]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 0x88180503, // 0003 GETMBR R6 R2 K3 0x541E003A, // 0004 LDINT R7 59 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0024, // 0006 JMPF R7 #002C + 0x781E001F, // 0006 JMPF R7 #0027 0x1C1C0D04, // 0007 EQ R7 R6 K4 0x781E0005, // 0008 JMPF R7 #000F 0x8C1C0705, // 0009 GETMET R7 R3 K5 @@ -52,7 +52,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, 0x58280007, // 000B LDCONST R10 K7 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 - 0x7002001C, // 000E JMP #002C + 0x70020017, // 000E JMP #0027 0x1C1C0D08, // 000F EQ R7 R6 K8 0x781E0005, // 0010 JMPF R7 #0017 0x8C1C0709, // 0011 GETMET R7 R3 K9 @@ -60,7 +60,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, 0x8828010A, // 0013 GETMBR R10 R0 K10 0x7C1C0600, // 0014 CALL R7 3 0x80040E00, // 0015 RET 1 R7 - 0x70020014, // 0016 JMP #002C + 0x7002000F, // 0016 JMP #0027 0x1C1C0D07, // 0017 EQ R7 R6 K7 0x781E0005, // 0018 JMPF R7 #001F 0x8C1C0705, // 0019 GETMET R7 R3 K5 @@ -68,29 +68,24 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, 0x542A0004, // 001B LDINT R10 5 0x7C1C0600, // 001C CALL R7 3 0x80040E00, // 001D RET 1 R7 - 0x7002000C, // 001E JMP #002C + 0x70020007, // 001E JMP #0027 0x541EFFFB, // 001F LDINT R7 65532 0x1C1C0C07, // 0020 EQ R7 R6 R7 - 0x781E0009, // 0021 JMPF R7 #002C + 0x781E0004, // 0021 JMPF R7 #0027 0x8C1C0705, // 0022 GETMET R7 R3 K5 0x8824090B, // 0023 GETMBR R9 R4 K11 - 0x542A0003, // 0024 LDINT R10 4 - 0x302A0E0A, // 0025 OR R10 K7 R10 - 0x542E0007, // 0026 LDINT R11 8 - 0x3028140B, // 0027 OR R10 R10 R11 - 0x542E000F, // 0028 LDINT R11 16 - 0x3028140B, // 0029 OR R10 R10 R11 - 0x7C1C0600, // 002A CALL R7 3 - 0x80040E00, // 002B RET 1 R7 - 0x601C0003, // 002C GETGBL R7 G3 - 0x5C200000, // 002D MOVE R8 R0 - 0x7C1C0200, // 002E CALL R7 1 - 0x8C1C0F0C, // 002F GETMET R7 R7 K12 - 0x5C240200, // 0030 MOVE R9 R1 - 0x5C280400, // 0031 MOVE R10 R2 - 0x5C2C0600, // 0032 MOVE R11 R3 - 0x7C1C0800, // 0033 CALL R7 4 - 0x80040E00, // 0034 RET 1 R7 + 0x542A0015, // 0024 LDINT R10 22 + 0x7C1C0600, // 0025 CALL R7 3 + 0x80040E00, // 0026 RET 1 R7 + 0x601C0003, // 0027 GETGBL R7 G3 + 0x5C200000, // 0028 MOVE R8 R0 + 0x7C1C0200, // 0029 CALL R7 1 + 0x8C1C0F0C, // 002A GETMET R7 R7 K12 + 0x5C240200, // 002B MOVE R9 R1 + 0x5C280400, // 002C MOVE R10 R2 + 0x5C2C0600, // 002D MOVE R11 R3 + 0x7C1C0800, // 002E CALL R7 4 + 0x80040E00, // 002F RET 1 R7 }) ) ); From 99374ae45b39ef1874bd58b727c1d066e6f55ffb Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 7 Jul 2024 18:54:29 +0200 Subject: [PATCH 134/252] Tasmota Platform 2024.07.10 (#21745) * Tasmota Platform 2024.07.10 * Update IDF 5.2.2 based Platform --- platformio_override_sample.ini | 2 +- platformio_tasmota32.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index dd45bcfe8..8ad34f25b 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -77,7 +77,7 @@ lib_extra_dirs = ${library.lib_extra_dirs} [env:tasmota32_base] ; *** Uncomment next lines ";" to enable development Tasmota Arduino version ESP32 -;platform = https://github.com/Jason2866/platform-espressif32/releases/download/2024.07.20/platform-espressif32.zip +;platform = https://github.com/Jason2866/platform-espressif32/releases/download/2024.07.21/platform-espressif32.zip ;platform_packages = framework-arduinoespressif32 @ ; framework-arduino-solo1 @ diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 1cade16c7..2a3f83e25 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -81,7 +81,7 @@ lib_ignore = ${esp32_defaults.lib_ignore} ccronexpr [core32] -platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.06.11/platform-espressif32.zip +platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.07.10/platform-espressif32.zip platform_packages = build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From 7cb8a3f9680e2f0b36ccbcbfafc3fcc976f4af6b Mon Sep 17 00:00:00 2001 From: Christian Baars Date: Sun, 7 Jul 2024 19:50:33 +0200 Subject: [PATCH 135/252] Berry: add cam module, img class (#21743) * cam module, img class --- .../.github/ISSUE_TEMPLATE/bug_report.md | 30 + lib/libesp32/JPEGDEC/CMakeLists.txt | 8 + lib/libesp32/JPEGDEC/LICENSE | 204 + lib/libesp32/JPEGDEC/Makefile | 17 + lib/libesp32/JPEGDEC/README.md | 63 + lib/libesp32/JPEGDEC/demo.jpg | Bin 0 -> 158501 bytes .../ILI9431_t3_slideshow.ino | 104 + .../examples/M5Stack/M5Core2/M5Core2.ino | 61 + .../JPEGDEC/examples/M5Stack/M5Core2/batman.h | 845 + .../examples/M5Stack/M5Core2/ncc1701.h | 318 + .../examples/M5Stack/M5Core2/thumb_test.h | 1286 ++ .../examples/M5Stack/M5Fire/M5Fire.ino | 61 + .../JPEGDEC/examples/M5Stack/M5Fire/batman.h | 845 + .../JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h | 318 + .../examples/M5Stack/M5Fire/thumb_test.h | 1286 ++ .../examples/M5Stack/M5Stack/M5Stack.ino | 61 + .../JPEGDEC/examples/M5Stack/M5Stack/batman.h | 845 + .../examples/M5Stack/M5Stack/ncc1701.h | 318 + .../examples/M5Stack/M5Stack/thumb_test.h | 1286 ++ .../examples/M5Stack/M5StickC/M5StickC.ino | 61 + .../examples/M5Stack/M5StickC/batman.h | 845 + .../examples/M5Stack/M5StickC/ncc1701.h | 318 + .../examples/M5Stack/M5StickC/thumb_test.h | 1286 ++ .../M5Stack/M5StickCPlus/M5StickCPlus.ino | 61 + .../examples/M5Stack/M5StickCPlus/batman.h | 845 + .../examples/M5Stack/M5StickCPlus/ncc1701.h | 318 + .../M5Stack/M5StickCPlus/thumb_test.h | 1286 ++ .../JPEGDEC/examples/M5Stack/README.md | 34 + .../JPEGDEC/examples/M5Stack/batman.jpg | Bin 0 -> 13342 bytes .../JPEGDEC/examples/M5Stack/ncc1701.jpg | Bin 0 -> 4912 bytes .../adafruit_gfx_demo/adafruit_gfx_demo.ino | 72 + .../examples/adafruit_gfx_demo/thumb_test.h | 1286 ++ .../examples/epd_demo/Grayscale_IL0398.cpp | 369 + .../examples/epd_demo/Grayscale_IL0398.h | 49 + .../JPEGDEC/examples/epd_demo/epd_demo.ino | 112 + .../JPEGDEC/examples/epd_demo/lange.h | 13860 ++++++++++++++++ .../examples/esp32_jpeg/esp32_jpeg.ino | 92 + .../jpeg_perf_test/jpeg_perf_test.ino | 55 + lib/libesp32/JPEGDEC/library.json | 20 + lib/libesp32/JPEGDEC/library.properties | 10 + lib/libesp32/JPEGDEC/linux/main.c | 301 + lib/libesp32/JPEGDEC/linux/makefile | 13 + lib/libesp32/JPEGDEC/perf.jpg | Bin 0 -> 196175 bytes lib/libesp32/JPEGDEC/squirrel_dither.jpg | Bin 0 -> 484456 bytes lib/libesp32/JPEGDEC/src/JPEGDEC.cpp | 250 + lib/libesp32/JPEGDEC/src/JPEGDEC.h | 309 + lib/libesp32/JPEGDEC/src/jpeg.inl | 4967 ++++++ lib/libesp32/JPEGDEC/src/my_cm4_simd.h | 57 + lib/libesp32/JPEGDEC/src/s3_simd_420.S | 128 + lib/libesp32/JPEGDEC/src/s3_simd_444.S | 109 + lib/libesp32/JPEGDEC/src/s3_simd_dequant.S | 64 + lib/libesp32/JPEGDEC/test_images/sciopero.h | 2292 +++ lib/libesp32/JPEGDEC/test_images/st_peters.h | 1845 ++ lib/libesp32/JPEGDEC/test_images/thumb_test.h | 1286 ++ lib/libesp32/JPEGDEC/test_images/tulips.h | 3504 ++++ lib/libesp32/berry/default/be_modtab.c | 14 + lib/libesp32/berry_tasmota/src/be_cam_lib.c | 31 + lib/libesp32/berry_tasmota/src/be_img_lib.c | 39 + platformio_tasmota32.ini | 1 + .../xdrv_52_3_berry_img.ino | 499 + .../xdrv_52_3_berry_webcam.ino | 164 + .../xdrv_81_esp32_webcam.ino | 27 +- 62 files changed, 44827 insertions(+), 8 deletions(-) create mode 100644 lib/libesp32/JPEGDEC/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 lib/libesp32/JPEGDEC/CMakeLists.txt create mode 100644 lib/libesp32/JPEGDEC/LICENSE create mode 100755 lib/libesp32/JPEGDEC/Makefile create mode 100644 lib/libesp32/JPEGDEC/README.md create mode 100644 lib/libesp32/JPEGDEC/demo.jpg create mode 100644 lib/libesp32/JPEGDEC/examples/ILI9431_t3_slideshow/ILI9431_t3_slideshow.ino create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/M5Core2.ino create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/batman.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/ncc1701.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/thumb_test.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/M5Fire.ino create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/batman.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/thumb_test.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/M5Stack.ino create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/batman.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/ncc1701.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/thumb_test.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/M5StickC.ino create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/batman.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/ncc1701.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/thumb_test.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/M5StickCPlus.ino create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/batman.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/ncc1701.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/thumb_test.h create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/README.md create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/batman.jpg create mode 100644 lib/libesp32/JPEGDEC/examples/M5Stack/ncc1701.jpg create mode 100644 lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/adafruit_gfx_demo.ino create mode 100644 lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/thumb_test.h create mode 100644 lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.cpp create mode 100644 lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.h create mode 100644 lib/libesp32/JPEGDEC/examples/epd_demo/epd_demo.ino create mode 100644 lib/libesp32/JPEGDEC/examples/epd_demo/lange.h create mode 100644 lib/libesp32/JPEGDEC/examples/esp32_jpeg/esp32_jpeg.ino create mode 100644 lib/libesp32/JPEGDEC/examples/jpeg_perf_test/jpeg_perf_test.ino create mode 100644 lib/libesp32/JPEGDEC/library.json create mode 100644 lib/libesp32/JPEGDEC/library.properties create mode 100644 lib/libesp32/JPEGDEC/linux/main.c create mode 100755 lib/libesp32/JPEGDEC/linux/makefile create mode 100644 lib/libesp32/JPEGDEC/perf.jpg create mode 100644 lib/libesp32/JPEGDEC/squirrel_dither.jpg create mode 100644 lib/libesp32/JPEGDEC/src/JPEGDEC.cpp create mode 100644 lib/libesp32/JPEGDEC/src/JPEGDEC.h create mode 100644 lib/libesp32/JPEGDEC/src/jpeg.inl create mode 100644 lib/libesp32/JPEGDEC/src/my_cm4_simd.h create mode 100644 lib/libesp32/JPEGDEC/src/s3_simd_420.S create mode 100644 lib/libesp32/JPEGDEC/src/s3_simd_444.S create mode 100644 lib/libesp32/JPEGDEC/src/s3_simd_dequant.S create mode 100644 lib/libesp32/JPEGDEC/test_images/sciopero.h create mode 100644 lib/libesp32/JPEGDEC/test_images/st_peters.h create mode 100644 lib/libesp32/JPEGDEC/test_images/thumb_test.h create mode 100644 lib/libesp32/JPEGDEC/test_images/tulips.h create mode 100644 lib/libesp32/berry_tasmota/src/be_cam_lib.c create mode 100644 lib/libesp32/berry_tasmota/src/be_img_lib.c create mode 100644 tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_img.ino create mode 100644 tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_webcam.ino diff --git a/lib/libesp32/JPEGDEC/.github/ISSUE_TEMPLATE/bug_report.md b/lib/libesp32/JPEGDEC/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..802914060 --- /dev/null +++ b/lib/libesp32/JPEGDEC/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,30 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Before you create this issue** +This library takes compressed JPEG data and outputs pixels to your callback functions. If your problem is related to LCD displays, SD cards, or any other issue that has nothing to do with this library, please stop here. If you need help with your private or commercial project, please email me (bitbank@pobox.com) to ask about paid consulting. Github issues are for submitting actual bugs. + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Image file you're having trouble with** +If applicable, add images to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/lib/libesp32/JPEGDEC/CMakeLists.txt b/lib/libesp32/JPEGDEC/CMakeLists.txt new file mode 100644 index 000000000..041313837 --- /dev/null +++ b/lib/libesp32/JPEGDEC/CMakeLists.txt @@ -0,0 +1,8 @@ +set(srcs + "src/JPEGDEC.cpp" + "src/jpeg.inl" +) +idf_component_register(SRCS ${srcs} + REQUIRES "jpegdec" + INCLUDE_DIRS "src" +) diff --git a/lib/libesp32/JPEGDEC/LICENSE b/lib/libesp32/JPEGDEC/LICENSE new file mode 100644 index 000000000..326e04a2c --- /dev/null +++ b/lib/libesp32/JPEGDEC/LICENSE @@ -0,0 +1,204 @@ +Copyright 2020 BitBank Software, Inc. All rights reserved. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 BitBank Software, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/lib/libesp32/JPEGDEC/Makefile b/lib/libesp32/JPEGDEC/Makefile new file mode 100755 index 000000000..7629f12f2 --- /dev/null +++ b/lib/libesp32/JPEGDEC/Makefile @@ -0,0 +1,17 @@ +CFLAGS=-D__LINUX__ -c -Wall -O2 +LIBS = +CXX = g++ + +all: demo + +demo: main.o JPEGDEC.o + $(CXX) main.o JPEGDEC.o $(LIBS) -o demo + +main.o: main.cpp + $(CXX) $(CFLAGS) main.cpp + +JPEGDEC.o: JPEGDEC.cpp + $(CXX) $(CFLAGS) JPEGDEC.cpp + +clean: + rm -rf *.o demo diff --git a/lib/libesp32/JPEGDEC/README.md b/lib/libesp32/JPEGDEC/README.md new file mode 100644 index 000000000..573d7b1f8 --- /dev/null +++ b/lib/libesp32/JPEGDEC/README.md @@ -0,0 +1,63 @@ +JPEGDEC
+----------------------------------- +Copyright (c) 2020 BitBank Software, Inc.
+Written by Larry Bank
+larry@bitbanksoftware.com
+
+**I optimize other people's code for a living. This library is a good example of the kind of work I do for my commercial clients; it contains many unique and clever optimizations that allows it to perform better than anything else available. I'm happy to contribute optimized libraries to the open source community in addition to working on commercial projects. Whatever platform you're using, I can make significant improvements to your native code. Please contact me so that I can show you how.**
+
+![JPEGDEC](/demo.jpg?raw=true "JPEGDEC") +
+I started working with image and video files around 1989 and soon turned my interest into a Document Imaging product based on my own imaging library. Over the years I added support for more and more formats until I had supported all of the standard ones, including DICOM. I sold my Document Imaging business in 1997. I started over with a new library design in 2000 and added even more formats. Over the years, I found uses for my imaging code in projects such as retro gaming. I recently went looking to see if there was a good JPEG viewer for Arduino and only found ones which sacrificed speed to work on MCUs with almost no RAM. I thought it would be possible to create an optimized JPEG decoder that could run on any MCU with at least 20K of RAM, so I started modifying my old JPEG code for this purpose. There are a lot of clever optimizations contained in the code that I kept as trade secrets for many years. I decided that it's time to share the code with the community. This code doesn't look like other JPEG libraries because I wrote it from a "blank sheet". It took many hundreds of hours of work to get it working correctly and find all of the optimizations. If you appreciate my work, please consider sponsoring me. + +
+ +Features:
+---------
+- Supports any MCU with at least 20K of RAM (Cortex-M0+ is the simplest I've tested) +- Optimized for speed; the main limitation will be how fast you can copy the pixels to the display. You can use DMA assisted SPI to help. +- JPEG image data can come from memory (FLASH/RAM), SDCard or any media you provide. +- Simple class and callback design allows you to easily add JPEG support to any application. +- The C code doing the heavy lifting is completely portable and has no external dependencies. +- Includes fast downscaling options (1/2, 1/4, 1/8). +- Includes option to detect and decode the embedded Exif thumbnail +- Supports Baseline Huffman images (grayscale or YCbCr)
+- Includes optional Floyd-Steinberg dithering to 1, 2 or 4-bpp grayscale output; useful for e-paper displays
+ +
+

+ +

+
+ +**A note about performance**
+The chart above gives you an idea of how the code performs on various MCUs with the different scaling options. The test image used is both large in dimension and large in terms of the compressed data size. The two factors that have the most influence on performance are the compressed data size and the output scaling options. This is because the time to decode JPEG data scales mostly linearly with the amount of data to decode. To get the fastest decode speed, choose the lowest acceptable quality for your image; this will produce the smallest compressed data size. When you must use an image that is too large, the scaling options allow you to display it at a lower resolution than the original.
+ +
+

+ +

+
+ +**Floyd-Steinberg dithering**
+I added the option to dither the output to 1, 2 or 4-bit per pixel grayscale using the FS error diffusion algorithm. It creates a pleasant output without visible blocking nor repeating patterns. This seemed useful for generating output suitable for high resolution e-paper displays. The image above was decoded from a 800x600 color JPEG and rendered as 2-bits per pixels (4 gray levels) on a 400x300 4.2" e-paper display. See the Wiki for info on how to use this option. + +Acquiring JPEG files to play: +---------------------------- +You'll notice that the images provided in the test_images folder have been turned into C code. Each byte is now in the form 0xAB so that it can be compiled into your program and stored in FLASH memory alongside your other code. You can use a command line tool I wrote called image_to_c (https://github.com/bitbank2/image_to_c) or an older Linux tool called xxd to convert a binary file into this type of text. Make sure to add a const/PROGMEM modifier in front of the JPEG data array to ensure that it gets written to FLASH and not RAM by your build environment. + +The Callback functions: +----------------------- +One of the ways to allow this code to run on any embedded platform was to define a set of callback functions. These isolate the JPEG decoding logic from the display and file I/O. This allows the core code to run on any system, but you need to help it a little. At a minimum, your code must provide a function to draw (or store) each block of image pixels emitted by the library. If you're displaying a JPEG file from memory (RAM or FLASH), this is the only function you need to provide. In the examples folder there are multiple sketches to show how this is done on various display libraries. For reading from SD cards, 4 other functions must be provided: open, close, read, seek. There is an example for implementing these in the examples folder as well. +Note: +If you're using the ESP32 or ESP8266 (or another MCU which uses the Harvard Architecture) and decoding JPEG images stored in RAM or FLASH, you'll need to use the correct open function (openRAM or openFLASH). For MCUs based on the ARM Cortex-M, they are interchangeable. + +The API: +-------- +Please consult the Wiki for detailed info about each method exposed by the JPEGDEC class. + + +If you find this code useful, please consider becoming a sponsor or sending a donation. + +[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SR4F44J2UR8S4) + diff --git a/lib/libesp32/JPEGDEC/demo.jpg b/lib/libesp32/JPEGDEC/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30506b07c395ac38717871d6c1afe56b863471d2 GIT binary patch literal 158501 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 z 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%0D#lv0vL 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 +#include +#include +#include + +#define TFT_DC 9 +#define TFT_CS 10 + +ILI9341_t3 tft = ILI9341_t3(TFT_CS, TFT_DC); +JPEGDEC jpeg; + +// Setup - initialize ILI9341 display, wait for serial monitor, open SD card +void setup() { + pinMode(34, INPUT_PULLDOWN); + pinMode(33, OUTPUT); + digitalWrite(33, HIGH); // pushbuttons short pins 33 & 34 together + Serial.begin(115200); + tft.begin(); + tft.setRotation(3); + tft.fillScreen(ILI9341_BLACK); + tft.setTextColor(ILI9341_YELLOW); + tft.setTextSize(2); + tft.println("Waiting for Arduino Serial Monitor..."); + + while (!Serial && millis() < 3000); // wait up to 3 seconds for Arduino Serial Monitor + Serial.println("ILI9341 Slideshow"); + tft.fillScreen(ILI9341_BLACK); + tft.setCursor(0, 0); + + while (!SD.begin(BUILTIN_SDCARD)) { + Serial.println("Unable to access SD Card"); + tft.println("Unable to access SD Card"); + delay(1000); + } +} + +// Functions to access a file on the SD card +File myfile; + +void * myOpen(const char *filename, int32_t *size) { + myfile = SD.open(filename); + *size = myfile.size(); + return &myfile; +} +void myClose(void *handle) { + if (myfile) myfile.close(); +} +int32_t myRead(JPEGFILE *handle, uint8_t *buffer, int32_t length) { + if (!myfile) return 0; + return myfile.read(buffer, length); +} +int32_t mySeek(JPEGFILE *handle, int32_t position) { + if (!myfile) return 0; + return myfile.seek(position); +} + +// Function to draw pixels to the display +int JPEGDraw(JPEGDRAW *pDraw) { + //Serial.printf("jpeg draw: x,y=%d,%d, cx,cy = %d,%d\n", + //pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight); +// for (int i=0; iiWidth*pDraw->iHeight; i++) { +// pDraw->pPixels[i] = __builtin_bswap16(pDraw->pPixels[i]); +// } + tft.writeRect(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight, pDraw->pPixels); + return 1; +} + +// Main loop, scan for all .JPG files on the card and display them +void loop() { + int filecount = 0; + tft.setCursor(0, 0); + File dir = SD.open("/"); + while (true) { + File entry = dir.openNextFile(); + if (!entry) break; + if (entry.isDirectory() == false) { + const char *name = entry.name(); + const int len = strlen(name); + if (len > 3 && strcasecmp(name + len - 3, "JPG") == 0) { + Serial.print("File: "); + Serial.println(name); + tft.print("File: "); + tft.println(name); + jpeg.open((const char *)name, myOpen, myClose, myRead, mySeek, JPEGDraw); + jpeg.decode(0,0,0); + jpeg.close(); + filecount = filecount + 1; + if (digitalRead(34) == LOW) { + // skip delay between images when pushbutton is pressed + delay(1000); + } + } + } + entry.close(); + } + if (filecount == 0) { + Serial.println("No .JPG files found"); + tft.println("No .JPG files found"); + delay(2000); + } +} diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/M5Core2.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/M5Core2.ino new file mode 100644 index 000000000..ab187fa0f --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/M5Core2.ino @@ -0,0 +1,61 @@ +// JPEGDEC example for Adafruit GFX displays + +#include "JPEGDEC.h" +// Sample image (truncated) containing a 320x240 Exif thumbnail +// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive. + +#include "thumb_test.h" +//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm +//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm + +#include + +#define DISPLAY_WIDTH 320 +#define DISPLAY_HEIGHT 240 + + +JPEGDEC jpeg; + +int JPEGDraw(JPEGDRAW *pDraw) +{ + + M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels); + return 1; +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + + Serial.println("Starting..."); + +M5.begin(true, true, true, true); +M5.Lcd.fillScreen(TFT_BLACK); +} /* setup() */ + +void loop() { +int i; +long lTime; +int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH}; +int iCenterX[4] = {0,80,120,140}; +int iCenterY[4] = {0,60,90,105}; + + for (i=0; i<4; i++) + { + M5.Lcd.fillScreen(TFT_BLACK); + M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it + if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw)) + + { + lTime = micros(); + if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); } + { + lTime = micros() - lTime; + Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime); + } + jpeg.close(); + } + delay(2000); // pause between images + } // for i +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/batman.h new file mode 100644 index 000000000..4aeccde5a --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/batman.h @@ -0,0 +1,845 @@ +// +// batman-5 +// Data size = 13342 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t batman[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47, + 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01, + 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04, + 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11, + 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42, + 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2, + 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c, + 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00, + 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01, + 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71, + 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2, + 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00, + 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5, + 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44, + 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52, + 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44, + 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8, + 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b, + 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92, + 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23, + 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75, + 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d, + 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d, + 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1, + 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48, + 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a, + 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0, + 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48, + 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea, + 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94, + 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0, + 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27, + 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd, + 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2, + 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51, + 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3, + 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38, + 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a, + 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d, + 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c, + 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd, + 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3, + 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64, + 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad, + 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7, + 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14, + 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed, + 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9, + 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51, + 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb, + 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a, + 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56, + 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82, + 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a, + 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f, + 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a, + 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82, + 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d, + 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10, + 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7, + 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99, + 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9, + 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35, + 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42, + 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90, + 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a, + 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f, + 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f, + 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94, + 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9, + 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a, + 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44, + 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a, + 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85, + 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed, + 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e, + 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04, + 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21, + 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e, + 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91, + 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0, + 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47, + 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48, + 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8, + 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8, + 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59, + 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3, + 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb, + 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b, + 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa, + 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b, + 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5, + 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b, + 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e, + 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d, + 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a, + 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15, + 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65, + 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0, + 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac, + 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89, + 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a, + 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71, + 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed, + 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3, + 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12, + 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13, + 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78, + 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9, + 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42, + 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7, + 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae, + 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25, + 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7, + 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69, + 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e, + 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7, + 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0, + 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2, + 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36, + 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4, + 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9, + 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21, + 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29, + 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43, + 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48, + 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79, + 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9, + 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29, + 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14, + 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd, + 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a, + 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04, + 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1, + 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25, + 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14, + 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8, + 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7, + 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7, + 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a, + 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93, + 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21, + 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7, + 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39, + 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8, + 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43, + 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79, + 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a, + 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96, + 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47, + 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b, + 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff, + 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa, + 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53, + 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51, + 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a, + 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b, + 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1, + 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b, + 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a, + 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef, + 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20, + 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b, + 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d, + 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95, + 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4, + 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48, + 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b, + 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e, + 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d, + 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00, + 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44, + 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec, + 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb, + 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f, + 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a, + 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46, + 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1, + 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93, + 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b, + 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22, + 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13, + 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46, + 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d, + 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2, + 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee, + 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90, + 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92, + 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a, + 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc, + 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12, + 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6, + 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6, + 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae, + 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4, + 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5, + 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28, + 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39, + 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e, + 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85, + 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a, + 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc, + 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2, + 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51, + 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77, + 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca, + 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c, + 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4, + 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58, + 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11, + 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e, + 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4, + 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08, + 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24, + 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49, + 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61, + 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca, + 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56, + 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64, + 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93, + 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea, + 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e, + 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43, + 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96, + 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d, + 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a, + 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f, + 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87, + 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88, + 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4, + 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf, + 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00, + 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7, + 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72, + 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8, + 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25, + 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24, + 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb, + 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf, + 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80, + 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70, + 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa, + 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d, + 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d, + 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22, + 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28, + 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a, + 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8, + 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b, + 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63, + 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7, + 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77, + 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69, + 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24, + 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01, + 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75, + 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e, + 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6, + 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67, + 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71, + 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96, + 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a, + 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0, + 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68, + 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40, + 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8, + 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6, + 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f, + 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b, + 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33, + 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89, + 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44, + 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee, + 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5, + 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb, + 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4, + 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b, + 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0, + 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae, + 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec, + 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b, + 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff, + 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98, + 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e, + 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00, + 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb, + 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24, + 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82, + 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91, + 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53, + 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e, + 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee, + 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69, + 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93, + 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28, + 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12, + 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77, + 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5, + 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50, + 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22, + 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b, + 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58, + 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c, + 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42, + 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e, + 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4, + 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72, + 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94, + 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54, + 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05, + 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc, + 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35, + 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed, + 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12, + 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a, + 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f, + 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d, + 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1, + 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d, + 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f, + 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97, + 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c, + 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4, + 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a, + 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95, + 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5, + 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47, + 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3, + 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe, + 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a, + 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01, + 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29, + 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49, + 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68, + 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33, + 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c, + 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac, + 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00, + 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76, + 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa, + 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf, + 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb, + 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25, + 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53, + 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8, + 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51, + 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18, + 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39, + 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35, + 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c, + 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6, + 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4, + 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9, + 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7, + 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43, + 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c, + 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94, + 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8, + 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05, + 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf, + 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65, + 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f, + 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82, + 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b, + 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b, + 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3, + 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c, + 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15, + 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8, + 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24, + 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc, + 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c, + 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e, + 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba, + 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0, + 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3, + 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75, + 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2, + 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1, + 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11, + 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50, + 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e, + 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e, + 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c, + 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5, + 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4, + 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9, + 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07, + 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c, + 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63, + 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e, + 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57, + 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a, + 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc, + 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47, + 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd, + 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b, + 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60, + 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b, + 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7, + 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb, + 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82, + 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07, + 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99, + 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f, + 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32, + 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f, + 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6, + 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95, + 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78, + 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d, + 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16, + 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5, + 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e, + 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4, + 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94, + 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82, + 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27, + 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97, + 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb, + 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74, + 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74, + 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1, + 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21, + 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4, + 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c, + 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b, + 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75, + 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc, + 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b, + 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6, + 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d, + 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16, + 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda, + 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76, + 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a, + 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f, + 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f, + 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f, + 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6, + 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71, + 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1, + 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8, + 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f, + 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c, + 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f, + 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6, + 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e, + 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae, + 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70, + 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf, + 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17, + 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30, + 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03, + 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f, + 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b, + 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24, + 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e, + 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77, + 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc, + 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d, + 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d, + 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9, + 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43, + 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef, + 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3, + 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0, + 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1, + 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd, + 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b, + 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef, + 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76, + 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1, + 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a, + 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61, + 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e, + 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1, + 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5, + 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39, + 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00, + 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d, + 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9, + 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3, + 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e, + 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f, + 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b, + 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4, + 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0, + 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab, + 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6, + 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e, + 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef, + 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad, + 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24, + 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d, + 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91, + 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4, + 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61, + 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69, + 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe, + 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55, + 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d, + 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9, + 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17, + 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7, + 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c, + 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd, + 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c, + 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38, + 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1, + 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00, + 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf, + 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb, + 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4, + 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1, + 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9, + 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd, + 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97, + 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53, + 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54, + 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15, + 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e, + 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30, + 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5, + 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb, + 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8, + 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc, + 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7, + 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc, + 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83, + 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae, + 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2, + 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2, + 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1, + 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41, + 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a, + 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c, + 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4, + 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96, + 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69, + 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe, + 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37, + 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c, + 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d, + 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2, + 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a, + 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f, + 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e, + 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a, + 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57, + 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b, + 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b, + 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a, + 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba, + 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6, + 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36, + 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5, + 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97, + 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1, + 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8, + 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f, + 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd, + 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d, + 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2, + 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00, + 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5, + 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01, + 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca, + 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0, + 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83, + 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90, + 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd, + 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b, + 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17, + 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99, + 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52, + 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93, + 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d, + 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63, + 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74, + 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11, + 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb, + 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97, + 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b, + 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c, + 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4, + 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f, + 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b, + 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0, + 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33, + 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c, + 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f, + 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe, + 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c, + 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b, + 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76, + 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20, + 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6, + 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d, + 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87, + 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a, + 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0, + 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee, + 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24, + 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5, + 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a, + 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9, + 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78, + 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1, + 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15, + 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a, + 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa, + 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7, + 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f, + 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc, + 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b, + 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b, + 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8, + 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40, + 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa, + 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67, + 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81, + 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1, + 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5, + 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90, + 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01, + 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce, + 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad, + 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8, + 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff, + 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c, + 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23, + 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99, + 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea, + 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23, + 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37, + 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20, + 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23, + 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3, + 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3, + 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d, + 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65, + 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70, + 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78, + 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde, + 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d, + 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28, + 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c, + 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff, + 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4, + 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72, + 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f, + 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b, + 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d, + 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69, + 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87, + 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba, + 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59, + 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90, + 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5, + 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc, + 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32, + 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47, + 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84, + 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2, + 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb, + 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59, + 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28, + 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb, + 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d, + 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68, + 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e, + 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19, + 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96, + 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5, + 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20, + 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f, + 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72, + 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad, + 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5, + 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17, + 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40, + 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2, + 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8, + 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83, + 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81, + 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb, + 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35, + 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53, + 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9, + 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20, + 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32, + 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11, + 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46, + 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0, + 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02, + 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7, + 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe, + 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69, + 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba, + 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a, + 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47, + 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d, + 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93, + 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45, + 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43, + 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2, + 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74, + 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6, + 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb, + 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3, + 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1, + 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78, + 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36, + 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e, + 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b, + 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58, + 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49, + 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c, + 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94, + 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72, + 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22, + 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0, + 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f, + 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde, + 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6, + 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11, + 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac, + 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b, + 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71, + 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1, + 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1, + 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6, + 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71, + 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b, + 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3, + 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05, + 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38, + 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04, + 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad, + 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5, + 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43, + 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27, + 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86, + 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b, + 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea, + 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7, + 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40, + 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b, + 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94, + 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d, + 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1, + 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9, + 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87, + 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf, + 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4, + 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f, + 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc, + 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4, + 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a, + 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5, + 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c, + 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6, + 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91, + 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23, + 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24, + 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6, + 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1, + 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42, + 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9, + 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed, + 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11, + 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34, + 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44, + 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74, + 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23, + 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c, + 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee, + 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5, + 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b, + 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94, + 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12, + 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02, + 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18, + 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce, + 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01, + 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb, + 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe, + 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e, + 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63, + 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a, + 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94, + 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19, + 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e, + 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e, + 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1, + 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea, + 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0, + 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54, + 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a, + 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94, + 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11, + 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a, + 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/ncc1701.h new file mode 100644 index 000000000..d10383d16 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/ncc1701.h @@ -0,0 +1,318 @@ +// +// ncc1701 +// Data size = 4912 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t ncc1701[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48, + 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a, + 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09, + 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21, + 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15, + 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2, + 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4, + 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13, + 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a, + 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5, + 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb, + 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4, + 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8, + 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40, + 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29, + 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58, + 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b, + 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14, + 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0, + 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a, + 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61, + 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb, + 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8, + 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87, + 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94, + 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7, + 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5, + 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f, + 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb, + 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14, + 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47, + 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42, + 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b, + 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79, + 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74, + 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7, + 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe, + 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e, + 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70, + 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55, + 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd, + 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf, + 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25, + 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9, + 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2, + 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b, + 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77, + 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed, + 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e, + 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c, + 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70, + 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb, + 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98, + 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e, + 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d, + 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7, + 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2, + 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19, + 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21, + 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea, + 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5, + 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86, + 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4, + 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7, + 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb, + 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5, + 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4, + 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69, + 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4, + 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d, + 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0, + 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e, + 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53, + 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5, + 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8, + 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12, + 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96, + 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6, + 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36, + 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f, + 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25, + 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55, + 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae, + 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e, + 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27, + 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69, + 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90, + 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6, + 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6, + 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3, + 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b, + 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d, + 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38, + 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad, + 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62, + 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3, + 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba, + 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2, + 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6, + 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2, + 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf, + 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f, + 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9, + 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc, + 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92, + 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89, + 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f, + 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d, + 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94, + 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5, + 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16, + 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90, + 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64, + 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1, + 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b, + 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93, + 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63, + 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6, + 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19, + 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0, + 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76, + 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15, + 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd, + 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71, + 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7, + 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2, + 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9, + 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92, + 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d, + 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c, + 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae, + 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09, + 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb, + 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e, + 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20, + 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09, + 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53, + 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d, + 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7, + 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31, + 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b, + 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52, + 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e, + 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74, + 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86, + 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b, + 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4, + 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9, + 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae, + 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92, + 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1, + 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2, + 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04, + 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff, + 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1, + 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29, + 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9, + 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33, + 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51, + 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec, + 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99, + 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35, + 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4, + 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19, + 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72, + 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42, + 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2, + 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61, + 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb, + 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a, + 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d, + 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e, + 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce, + 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94, + 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b, + 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b, + 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c, + 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d, + 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05, + 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b, + 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a, + 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b, + 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95, + 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37, + 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70, + 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf, + 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3, + 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f, + 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50, + 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb, + 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0, + 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d, + 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d, + 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4, + 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a, + 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10, + 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5, + 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87, + 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7, + 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00, + 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3, + 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73, + 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b, + 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c, + 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae, + 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16, + 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10, + 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9, + 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47, + 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c, + 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba, + 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00, + 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b, + 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f, + 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68, + 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8, + 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23, + 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e, + 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d, + 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b, + 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92, + 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe, + 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca, + 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c, + 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35, + 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb, + 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60, + 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31, + 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f, + 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18, + 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15, + 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9, + 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4, + 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0, + 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d, + 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14, + 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15, + 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3, + 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1, + 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0, + 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23, + 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2, + 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7, + 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd, + 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11, + 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3, + 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00, + 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54, + 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c, + 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09, + 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b, + 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53, + 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5, + 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a, + 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c, + 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03, + 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69, + 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31, + 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0, + 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6, + 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b, + 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0, + 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7, + 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52, + 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30, + 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25, + 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78, + 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5, + 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c, + 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57, + 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda, + 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed, + 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56, + 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4, + 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71, + 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2, + 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e, + 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb, + 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b, + 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6, + 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21, + 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0, + 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9, + 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c, + 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47, + 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45, + 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73, + 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60, + 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5, + 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51, + 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/thumb_test.h new file mode 100644 index 000000000..0b43b0074 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/thumb_test.h @@ -0,0 +1,1286 @@ +// +// thumb_test +// +const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a, + 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0, + 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f, + 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00, + 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06, + 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00, + 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d, + 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45, + 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a, + 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02, + 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00, + 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00, + 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00, + 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01, + 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00, + 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90, + 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00, + 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00, + 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00, + 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00, + 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39, + 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30, + 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00, + 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00, + 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, + 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56, + 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07, + 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40, + 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01, + 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98, + 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01, + 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48, + 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11, + 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22, + 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83, + 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93, + 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22, + 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11, + 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01, + 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61, + 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1, + 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27, + 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88, + 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, + 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, + 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02, + 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61, + 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52, + 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a, + 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47, + 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67, + 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86, + 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2, + 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9, + 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09, + 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35, + 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20, + 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31, + 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d, + 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00, + 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0, + 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8, + 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f, + 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3, + 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc, + 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a, + 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4, + 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a, + 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93, + 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66, + 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b, + 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3, + 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99, + 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a, + 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c, + 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c, + 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46, + 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e, + 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c, + 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa, + 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e, + 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42, + 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2, + 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b, + 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64, + 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6, + 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66, + 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79, + 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73, + 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a, + 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1, + 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b, + 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a, + 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97, + 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4, + 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c, + 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a, + 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f, + 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27, + 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86, + 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65, + 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7, + 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78, + 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b, + 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35, + 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02, + 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34, + 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28, + 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71, + 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f, + 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e, + 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f, + 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf, + 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29, + 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2, + 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf, + 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0, + 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02, + 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f, + 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73, + 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff, + 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04, + 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00, + 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48, + 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01, + 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e, + 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f, + 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd, + 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38, + 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce, + 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3, + 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa, + 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2, + 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6, + 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00, + 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79, + 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd, + 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e, + 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69, + 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27, + 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c, + 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c, + 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4, + 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64, + 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4, + 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7, + 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e, + 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4, + 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8, + 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9, + 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2, + 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf, + 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d, + 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7, + 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63, + 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f, + 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74, + 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11, + 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca, + 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d, + 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1, + 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53, + 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c, + 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28, + 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50, + 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7, + 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c, + 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09, + 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48, + 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8, + 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39, + 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1, + 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1, + 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea, + 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14, + 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf, + 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c, + 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3, + 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41, + 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4, + 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74, + 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9, + 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7, + 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c, + 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1, + 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b, + 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa, + 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00, + 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3, + 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f, + 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70, + 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff, + 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18, + 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4, + 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7, + 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a, + 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7, + 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc, + 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9, + 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b, + 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2, + 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2, + 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf, + 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1, + 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5, + 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66, + 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f, + 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60, + 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d, + 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a, + 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f, + 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f, + 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f, + 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54, + 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29, + 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02, + 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35, + 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75, + 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56, + 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6, + 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83, + 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34, + 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7, + 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6, + 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8, + 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9, + 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f, + 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f, + 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f, + 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed, + 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68, + 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2, + 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16, + 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca, + 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8, + 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8, + 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6, + 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1, + 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80, + 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51, + 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41, + 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00, + 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff, + 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f, + 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93, + 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7, + 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7, + 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22, + 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75, + 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94, + 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf, + 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff, + 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe, + 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51, + 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c, + 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4, + 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce, + 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8, + 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea, + 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c, + 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6, + 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0, + 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43, + 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18, + 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2, + 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00, + 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9, + 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0, + 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9, + 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80, + 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf, + 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00, + 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5, + 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d, + 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c, + 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff, + 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd, + 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00, + 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64, + 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc, + 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8, + 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf, + 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90, + 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37, + 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea, + 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2, + 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb, + 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0, + 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93, + 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c, + 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d, + 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87, + 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c, + 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7, + 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9, + 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc, + 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07, + 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f, + 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a, + 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b, + 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3, + 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f, + 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0, + 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10, + 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5, + 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12, + 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde, + 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66, + 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0, + 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00, + 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff, + 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f, + 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff, + 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8, + 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a, + 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7, + 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03, + 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c, + 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7, + 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45, + 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1, + 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2, + 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7, + 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e, + 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd, + 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06, + 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06, + 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88, + 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a, + 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50, + 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34, + 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2, + 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c, + 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a, + 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63, + 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7, + 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0, + 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc, + 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff, + 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41, + 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29, + 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57, + 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6, + 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf, + 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7, + 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21, + 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff, + 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55, + 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92, + 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6, + 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75, + 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29, + 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2, + 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68, + 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd, + 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1, + 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd, + 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f, + 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3, + 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77, + 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d, + 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6, + 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52, + 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba, + 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f, + 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65, + 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe, + 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb, + 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0, + 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e, + 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29, + 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8, + 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae, + 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a, + 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56, + 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64, + 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9, + 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c, + 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57, + 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac, + 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8, + 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51, + 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26, + 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61, + 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53, + 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67, + 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb, + 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98, + 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda, + 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb, + 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad, + 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef, + 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38, + 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb, + 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd, + 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92, + 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a, + 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab, + 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e, + 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7, + 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61, + 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd, + 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff, + 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa, + 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02, + 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2, + 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff, + 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d, + 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91, + 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0, + 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00, + 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5, + 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86, + 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96, + 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7, + 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea, + 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2, + 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80, + 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7, + 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62, + 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff, + 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e, + 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69, + 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98, + 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01, + 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49, + 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c, + 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9, + 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a, + 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc, + 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd, + 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7, + 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe, + 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23, + 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38, + 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0, + 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5, + 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07, + 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c, + 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6, + 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b, + 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61, + 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00, + 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00, + 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee, + 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00, + 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00, + 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00, + 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00, + 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00, + 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00, + 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00, + 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00, + 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00, + 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00, + 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00, + 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00, + 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00, + 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00, + 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00, + 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00, + 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00, + 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00, + 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00, + 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00, + 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00, + 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00, + 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff, + 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00, + 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff, + 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a, + 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00, + 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01, + 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87, + 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69, + 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19, + 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00, + 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12, + 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06, + 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06, + 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3, + 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02, + 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e, + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d, + 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42, + 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2, + 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab, + 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2, + 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13, + 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b, + 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15, + 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00, + 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13, + 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65, + 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83, + 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b, + 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00, + 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a, + 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01, + 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73, + 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c, + 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73, + 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c, + 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33, + 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31, + 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31, + 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00, + 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02, + 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05, + 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09, + 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08, + 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04, + 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00, + 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01, + 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03, + 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04, + 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01, + 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86, + 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79, + 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55, + 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78, + 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b, + 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a, + 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29, + 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99, + 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5, + 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb, + 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48, + 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c, + 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e, + 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29, + 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a, + 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3, + 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4, + 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26, + 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e, + 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91, + 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29, + 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f, + 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b, + 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe, + 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf, + 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57, + 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01, + 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8, + 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6, + 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01, + 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36, + 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb, + 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15, + 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85, + 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef, + 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb, + 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54, + 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5, + 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90, + 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f, + 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c, + 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14, + 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c, + 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55, + 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10, + 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79, + 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6, + 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a, + 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9, + 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad, + 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11, + 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24, + 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e, + 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19, + 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8, + 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69, + 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf, + 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47, + 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6, + 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef, + 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0, + 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23, + 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25, + 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0, + 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77, + 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07, + 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c, + 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b, + 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb, + 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32, + 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf, + 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94, + 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a, + 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda, + 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d, + 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99, + 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7, + 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4, + 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde, + 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93, + 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e, + 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00, + 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc, + 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9, + 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a, + 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e, + 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16, + 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3, + 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5, + 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23, + 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc, + 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d, + 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98, + 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a, + 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9, + 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf, + 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8, + 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7, + 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c, + 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d, + 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f, + 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec, + 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2, + 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61, + 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2, + 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32, + 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa, + 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6, + 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8, + 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a, + 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07, + 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea, + 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61, + 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81, + 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0, + 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f, + 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11, + 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3, + 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a, + 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e, + 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1, + 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43, + 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10, + 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a, + 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98, + 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38, + 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71, + 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a, + 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78, + 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32, + 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06, + 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac, + 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61, + 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b, + 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54, + 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa, + 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d, + 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54, + 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32, + 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8, + 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68, + 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00, + 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09, + 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42, + 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52, + 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68, + 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19, + 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b, + 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1, + 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80, + 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37, + 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4, + 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8, + 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e, + 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d, + 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21, + 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9, + 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30, + 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e, + 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66, + 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b, + 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e, + 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6, + 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d, + 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31, + 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc, + 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a, + 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91, + 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c, + 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2, + 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92, + 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63, + 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f, + 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67, + 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e, + 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07, + 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6, + 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b, + 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7, + 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18, + 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e, + 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f, + 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4, + 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8, + 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8, + 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f, + 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9, + 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8, + 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d, + 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80, + 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e, + 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82, + 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7, + 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80, + 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a, + 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3, + 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6, + 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53, + 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4, + 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25, + 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b, + 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea, + 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a, + 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95, + 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83, + 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9, + 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca, + 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e, + 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42, + 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46, + 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca, + 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8, + 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b, + 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2, + 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82, + 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e, + 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49, + 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50, + 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d, + 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae, + 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6, + 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38, + 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb, + 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90, + 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00, + 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1, + 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9, + 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a, + 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5, + 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27, + 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5, + 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86, + 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64, + 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10, + 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a, + 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62, + 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6, + 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab, + 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69, + 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4, + 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8, + 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07, + 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8, + 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58, + 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4, + 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48, + 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf, + 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e, + 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b, + 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83, + 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1, + 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75, + 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0, + 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60, + 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff, + 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65, + 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80, + 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d, + 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a, + 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c, + 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30, + 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23, + 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc, + 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e, + 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3, + 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8, + 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27, + 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80, + 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08, + 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d, + 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f, + 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d, + 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60, + 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55, + 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa, + 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82, + 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00, + 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe, + 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff, + 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58, + 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b, + 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3, + 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0, + 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf, + 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54, + 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4, + 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c, + 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39, + 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16, + 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98, + 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f, + 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45, + 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb, + 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81, + 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47, + 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d, + 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e, + 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38, + 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff, + 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61, + 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd, + 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde, + 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab, + 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d, + 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5, + 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01, + 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde, + 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6, + 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1, + 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2, + 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf, + 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d, + 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f, + 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0, + 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4, + 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4, + 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65, + 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b, + 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb, + 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c, + 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68, + 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa, + 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51, + 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06, + 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83, + 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9, + 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a, + 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0, + 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7, + 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc, + 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18, + 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10, + 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5, + 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae, + 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80, + 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81, + 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95, + 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95, + 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d, + 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc, + 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29, + 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b, + 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e, + 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a, + 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9, + 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56, + 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc, + 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb, + 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9, + 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc, + 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4, + 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78, + 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1, + 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8, + 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e, + 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48, + 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15, + 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f, + 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90, + 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8, + 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44, + 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c, + 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29, + 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35, + 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d, + 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8, + 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0, + 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34, + 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30, + 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44, + 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36, + 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c, + 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44, + 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2, + 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96, + 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd, + 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35, + 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e, + 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa, + 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d, + 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9, + 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62, + 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3, + 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53, + 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2, + 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32, + 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6, + 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92, + 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9, + 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad, + 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99, + 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e, + 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45, + 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96, + 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3, + 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60, + 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d, + 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b, + 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76, + 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca, + 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14, + 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6, + 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01, + 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67, + 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c, + 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09, + 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90, + 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb, + 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c, + 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2, + 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7, + 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55, + 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73, + 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9, + 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd, + 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78, + 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77, + 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e, + 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a, + 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16, + 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d, + 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea, + 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13, + 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde, + 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7, + 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d, + 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd, + 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4, + 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95, + 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72, + 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93, + 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a, + 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87, + 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed, + 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10, + 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20, + 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98, + 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa, + 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea, + 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0, + 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23, + 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22, + 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24, + 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8, + 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/M5Fire.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/M5Fire.ino new file mode 100644 index 000000000..f599728bf --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/M5Fire.ino @@ -0,0 +1,61 @@ +// JPEGDEC example for Adafruit GFX displays + +#include "JPEGDEC.h" +// Sample image (truncated) containing a 320x240 Exif thumbnail +// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive. + +#include "thumb_test.h" +//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm +//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm + +#include + +#define DISPLAY_WIDTH 320 +#define DISPLAY_HEIGHT 240 + + +JPEGDEC jpeg; + +int JPEGDraw(JPEGDRAW *pDraw) +{ + + M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels); + return 1; +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + + Serial.println("Starting..."); + +M5.Lcd.begin(); +M5.Lcd.fillScreen(TFT_BLACK); +} /* setup() */ + +void loop() { +int i; +long lTime; +int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH}; +int iCenterX[4] = {0,80,120,140}; +int iCenterY[4] = {0,60,90,105}; + + for (i=0; i<4; i++) + { + M5.Lcd.fillScreen(TFT_BLACK); + M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it + if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw)) + + { + lTime = micros(); + if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); } + { + lTime = micros() - lTime; + Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime); + } + jpeg.close(); + } + delay(2000); // pause between images + } // for i +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/batman.h new file mode 100644 index 000000000..4aeccde5a --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/batman.h @@ -0,0 +1,845 @@ +// +// batman-5 +// Data size = 13342 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t batman[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47, + 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01, + 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04, + 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11, + 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42, + 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2, + 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c, + 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00, + 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01, + 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71, + 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2, + 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00, + 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5, + 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44, + 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52, + 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44, + 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8, + 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b, + 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92, + 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23, + 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75, + 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d, + 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d, + 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1, + 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48, + 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a, + 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0, + 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48, + 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea, + 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94, + 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0, + 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27, + 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd, + 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2, + 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51, + 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3, + 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38, + 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a, + 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d, + 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c, + 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd, + 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3, + 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64, + 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad, + 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7, + 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14, + 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed, + 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9, + 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51, + 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb, + 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a, + 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56, + 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82, + 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a, + 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f, + 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a, + 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82, + 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d, + 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10, + 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7, + 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99, + 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9, + 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35, + 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42, + 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90, + 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a, + 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f, + 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f, + 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94, + 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9, + 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a, + 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44, + 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a, + 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85, + 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed, + 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e, + 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04, + 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21, + 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e, + 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91, + 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0, + 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47, + 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48, + 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8, + 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8, + 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59, + 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3, + 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb, + 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b, + 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa, + 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b, + 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5, + 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b, + 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e, + 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d, + 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a, + 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15, + 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65, + 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0, + 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac, + 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89, + 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a, + 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71, + 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed, + 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3, + 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12, + 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13, + 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78, + 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9, + 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42, + 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7, + 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae, + 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25, + 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7, + 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69, + 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e, + 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7, + 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0, + 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2, + 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36, + 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4, + 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9, + 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21, + 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29, + 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43, + 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48, + 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79, + 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9, + 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29, + 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14, + 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd, + 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a, + 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04, + 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1, + 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25, + 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14, + 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8, + 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7, + 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7, + 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a, + 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93, + 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21, + 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7, + 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39, + 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8, + 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43, + 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79, + 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a, + 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96, + 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47, + 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b, + 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff, + 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa, + 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53, + 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51, + 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a, + 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b, + 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1, + 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b, + 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a, + 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef, + 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20, + 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b, + 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d, + 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95, + 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4, + 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48, + 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b, + 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e, + 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d, + 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00, + 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44, + 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec, + 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb, + 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f, + 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a, + 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46, + 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1, + 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93, + 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b, + 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22, + 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13, + 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46, + 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d, + 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2, + 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee, + 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90, + 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92, + 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a, + 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc, + 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12, + 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6, + 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6, + 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae, + 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4, + 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5, + 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28, + 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39, + 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e, + 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85, + 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a, + 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc, + 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2, + 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51, + 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77, + 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca, + 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c, + 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4, + 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58, + 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11, + 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e, + 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4, + 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08, + 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24, + 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49, + 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61, + 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca, + 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56, + 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64, + 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93, + 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea, + 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e, + 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43, + 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96, + 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d, + 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a, + 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f, + 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87, + 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88, + 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4, + 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf, + 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00, + 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7, + 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72, + 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8, + 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25, + 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24, + 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb, + 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf, + 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80, + 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70, + 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa, + 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d, + 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d, + 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22, + 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28, + 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a, + 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8, + 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b, + 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63, + 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7, + 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77, + 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69, + 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24, + 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01, + 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75, + 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e, + 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6, + 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67, + 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71, + 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96, + 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a, + 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0, + 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68, + 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40, + 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8, + 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6, + 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f, + 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b, + 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33, + 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89, + 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44, + 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee, + 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5, + 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb, + 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4, + 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b, + 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0, + 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae, + 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec, + 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b, + 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff, + 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98, + 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e, + 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00, + 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb, + 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24, + 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82, + 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91, + 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53, + 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e, + 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee, + 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69, + 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93, + 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28, + 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12, + 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77, + 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5, + 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50, + 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22, + 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b, + 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58, + 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c, + 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42, + 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e, + 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4, + 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72, + 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94, + 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54, + 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05, + 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc, + 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35, + 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed, + 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12, + 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a, + 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f, + 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d, + 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1, + 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d, + 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f, + 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97, + 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c, + 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4, + 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a, + 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95, + 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5, + 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47, + 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3, + 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe, + 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a, + 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01, + 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29, + 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49, + 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68, + 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33, + 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c, + 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac, + 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00, + 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76, + 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa, + 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf, + 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb, + 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25, + 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53, + 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8, + 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51, + 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18, + 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39, + 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35, + 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c, + 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6, + 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4, + 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9, + 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7, + 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43, + 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c, + 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94, + 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8, + 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05, + 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf, + 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65, + 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f, + 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82, + 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b, + 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b, + 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3, + 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c, + 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15, + 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8, + 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24, + 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc, + 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c, + 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e, + 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba, + 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0, + 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3, + 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75, + 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2, + 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1, + 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11, + 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50, + 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e, + 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e, + 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c, + 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5, + 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4, + 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9, + 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07, + 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c, + 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63, + 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e, + 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57, + 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a, + 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc, + 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47, + 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd, + 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b, + 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60, + 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b, + 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7, + 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb, + 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82, + 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07, + 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99, + 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f, + 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32, + 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f, + 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6, + 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95, + 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78, + 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d, + 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16, + 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5, + 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e, + 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4, + 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94, + 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82, + 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27, + 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97, + 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb, + 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74, + 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74, + 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1, + 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21, + 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4, + 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c, + 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b, + 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75, + 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc, + 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b, + 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6, + 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d, + 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16, + 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda, + 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76, + 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a, + 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f, + 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f, + 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f, + 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6, + 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71, + 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1, + 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8, + 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f, + 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c, + 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f, + 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6, + 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e, + 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae, + 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70, + 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf, + 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17, + 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30, + 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03, + 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f, + 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b, + 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24, + 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e, + 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77, + 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc, + 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d, + 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d, + 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9, + 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43, + 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef, + 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3, + 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0, + 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1, + 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd, + 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b, + 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef, + 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76, + 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1, + 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a, + 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61, + 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e, + 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1, + 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5, + 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39, + 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00, + 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d, + 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9, + 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3, + 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e, + 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f, + 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b, + 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4, + 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0, + 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab, + 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6, + 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e, + 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef, + 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad, + 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24, + 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d, + 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91, + 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4, + 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61, + 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69, + 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe, + 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55, + 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d, + 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9, + 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17, + 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7, + 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c, + 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd, + 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c, + 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38, + 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1, + 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00, + 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf, + 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb, + 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4, + 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1, + 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9, + 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd, + 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97, + 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53, + 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54, + 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15, + 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e, + 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30, + 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5, + 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb, + 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8, + 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc, + 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7, + 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc, + 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83, + 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae, + 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2, + 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2, + 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1, + 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41, + 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a, + 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c, + 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4, + 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96, + 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69, + 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe, + 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37, + 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c, + 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d, + 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2, + 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a, + 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f, + 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e, + 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a, + 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57, + 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b, + 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b, + 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a, + 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba, + 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6, + 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36, + 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5, + 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97, + 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1, + 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8, + 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f, + 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd, + 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d, + 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2, + 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00, + 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5, + 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01, + 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca, + 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0, + 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83, + 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90, + 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd, + 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b, + 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17, + 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99, + 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52, + 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93, + 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d, + 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63, + 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74, + 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11, + 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb, + 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97, + 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b, + 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c, + 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4, + 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f, + 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b, + 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0, + 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33, + 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c, + 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f, + 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe, + 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c, + 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b, + 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76, + 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20, + 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6, + 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d, + 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87, + 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a, + 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0, + 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee, + 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24, + 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5, + 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a, + 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9, + 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78, + 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1, + 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15, + 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a, + 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa, + 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7, + 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f, + 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc, + 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b, + 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b, + 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8, + 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40, + 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa, + 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67, + 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81, + 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1, + 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5, + 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90, + 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01, + 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce, + 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad, + 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8, + 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff, + 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c, + 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23, + 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99, + 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea, + 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23, + 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37, + 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20, + 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23, + 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3, + 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3, + 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d, + 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65, + 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70, + 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78, + 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde, + 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d, + 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28, + 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c, + 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff, + 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4, + 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72, + 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f, + 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b, + 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d, + 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69, + 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87, + 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba, + 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59, + 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90, + 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5, + 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc, + 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32, + 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47, + 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84, + 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2, + 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb, + 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59, + 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28, + 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb, + 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d, + 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68, + 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e, + 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19, + 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96, + 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5, + 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20, + 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f, + 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72, + 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad, + 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5, + 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17, + 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40, + 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2, + 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8, + 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83, + 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81, + 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb, + 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35, + 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53, + 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9, + 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20, + 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32, + 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11, + 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46, + 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0, + 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02, + 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7, + 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe, + 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69, + 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba, + 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a, + 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47, + 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d, + 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93, + 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45, + 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43, + 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2, + 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74, + 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6, + 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb, + 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3, + 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1, + 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78, + 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36, + 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e, + 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b, + 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58, + 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49, + 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c, + 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94, + 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72, + 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22, + 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0, + 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f, + 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde, + 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6, + 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11, + 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac, + 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b, + 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71, + 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1, + 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1, + 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6, + 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71, + 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b, + 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3, + 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05, + 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38, + 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04, + 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad, + 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5, + 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43, + 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27, + 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86, + 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b, + 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea, + 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7, + 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40, + 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b, + 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94, + 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d, + 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1, + 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9, + 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87, + 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf, + 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4, + 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f, + 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc, + 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4, + 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a, + 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5, + 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c, + 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6, + 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91, + 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23, + 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24, + 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6, + 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1, + 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42, + 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9, + 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed, + 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11, + 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34, + 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44, + 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74, + 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23, + 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c, + 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee, + 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5, + 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b, + 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94, + 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12, + 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02, + 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18, + 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce, + 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01, + 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb, + 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe, + 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e, + 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63, + 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a, + 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94, + 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19, + 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e, + 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e, + 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1, + 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea, + 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0, + 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54, + 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a, + 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94, + 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11, + 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a, + 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h new file mode 100644 index 000000000..d10383d16 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h @@ -0,0 +1,318 @@ +// +// ncc1701 +// Data size = 4912 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t ncc1701[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48, + 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a, + 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09, + 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21, + 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15, + 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2, + 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4, + 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13, + 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a, + 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5, + 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb, + 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4, + 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8, + 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40, + 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29, + 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58, + 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b, + 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14, + 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0, + 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a, + 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61, + 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb, + 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8, + 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87, + 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94, + 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7, + 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5, + 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f, + 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb, + 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14, + 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47, + 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42, + 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b, + 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79, + 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74, + 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7, + 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe, + 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e, + 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70, + 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55, + 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd, + 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf, + 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25, + 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9, + 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2, + 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b, + 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77, + 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed, + 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e, + 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c, + 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70, + 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb, + 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98, + 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e, + 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d, + 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7, + 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2, + 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19, + 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21, + 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea, + 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5, + 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86, + 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4, + 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7, + 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb, + 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5, + 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4, + 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69, + 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4, + 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d, + 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0, + 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e, + 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53, + 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5, + 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8, + 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12, + 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96, + 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6, + 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36, + 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f, + 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25, + 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55, + 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae, + 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e, + 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27, + 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69, + 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90, + 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6, + 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6, + 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3, + 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b, + 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d, + 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38, + 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad, + 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62, + 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3, + 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba, + 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2, + 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6, + 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2, + 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf, + 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f, + 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9, + 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc, + 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92, + 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89, + 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f, + 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d, + 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94, + 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5, + 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16, + 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90, + 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64, + 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1, + 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b, + 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93, + 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63, + 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6, + 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19, + 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0, + 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76, + 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15, + 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd, + 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71, + 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7, + 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2, + 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9, + 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92, + 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d, + 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c, + 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae, + 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09, + 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb, + 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e, + 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20, + 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09, + 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53, + 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d, + 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7, + 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31, + 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b, + 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52, + 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e, + 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74, + 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86, + 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b, + 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4, + 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9, + 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae, + 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92, + 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1, + 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2, + 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04, + 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff, + 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1, + 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29, + 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9, + 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33, + 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51, + 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec, + 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99, + 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35, + 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4, + 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19, + 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72, + 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42, + 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2, + 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61, + 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb, + 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a, + 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d, + 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e, + 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce, + 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94, + 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b, + 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b, + 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c, + 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d, + 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05, + 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b, + 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a, + 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b, + 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95, + 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37, + 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70, + 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf, + 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3, + 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f, + 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50, + 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb, + 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0, + 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d, + 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d, + 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4, + 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a, + 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10, + 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5, + 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87, + 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7, + 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00, + 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3, + 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73, + 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b, + 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c, + 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae, + 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16, + 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10, + 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9, + 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47, + 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c, + 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba, + 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00, + 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b, + 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f, + 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68, + 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8, + 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23, + 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e, + 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d, + 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b, + 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92, + 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe, + 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca, + 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c, + 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35, + 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb, + 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60, + 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31, + 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f, + 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18, + 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15, + 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9, + 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4, + 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0, + 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d, + 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14, + 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15, + 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3, + 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1, + 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0, + 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23, + 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2, + 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7, + 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd, + 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11, + 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3, + 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00, + 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54, + 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c, + 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09, + 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b, + 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53, + 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5, + 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a, + 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c, + 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03, + 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69, + 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31, + 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0, + 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6, + 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b, + 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0, + 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7, + 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52, + 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30, + 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25, + 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78, + 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5, + 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c, + 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57, + 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda, + 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed, + 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56, + 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4, + 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71, + 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2, + 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e, + 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb, + 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b, + 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6, + 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21, + 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0, + 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9, + 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c, + 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47, + 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45, + 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73, + 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60, + 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5, + 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51, + 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/thumb_test.h new file mode 100644 index 000000000..0b43b0074 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/thumb_test.h @@ -0,0 +1,1286 @@ +// +// thumb_test +// +const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a, + 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0, + 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f, + 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00, + 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06, + 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00, + 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d, + 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45, + 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a, + 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02, + 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00, + 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00, + 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00, + 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01, + 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00, + 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90, + 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00, + 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00, + 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00, + 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00, + 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39, + 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30, + 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00, + 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00, + 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, + 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56, + 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07, + 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40, + 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01, + 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98, + 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01, + 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48, + 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11, + 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22, + 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83, + 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93, + 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22, + 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11, + 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01, + 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61, + 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1, + 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27, + 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88, + 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, + 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, + 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02, + 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61, + 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52, + 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a, + 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47, + 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67, + 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86, + 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2, + 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9, + 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09, + 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35, + 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20, + 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31, + 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d, + 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00, + 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0, + 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8, + 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f, + 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3, + 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc, + 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a, + 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4, + 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a, + 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93, + 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66, + 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b, + 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3, + 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99, + 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a, + 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c, + 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c, + 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46, + 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e, + 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c, + 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa, + 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e, + 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42, + 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2, + 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b, + 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64, + 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6, + 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66, + 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79, + 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73, + 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a, + 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1, + 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b, + 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a, + 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97, + 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4, + 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c, + 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a, + 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f, + 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27, + 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86, + 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65, + 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7, + 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78, + 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b, + 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35, + 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02, + 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34, + 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28, + 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71, + 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f, + 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e, + 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f, + 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf, + 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29, + 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2, + 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf, + 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0, + 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02, + 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f, + 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73, + 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff, + 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04, + 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00, + 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48, + 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01, + 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e, + 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f, + 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd, + 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38, + 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce, + 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3, + 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa, + 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2, + 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6, + 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00, + 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79, + 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd, + 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e, + 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69, + 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27, + 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c, + 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c, + 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4, + 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64, + 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4, + 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7, + 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e, + 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4, + 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8, + 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9, + 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2, + 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf, + 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d, + 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7, + 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63, + 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f, + 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74, + 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11, + 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca, + 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d, + 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1, + 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53, + 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c, + 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28, + 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50, + 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7, + 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c, + 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09, + 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48, + 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8, + 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39, + 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1, + 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1, + 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea, + 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14, + 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf, + 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c, + 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3, + 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41, + 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4, + 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74, + 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9, + 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7, + 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c, + 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1, + 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b, + 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa, + 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00, + 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3, + 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f, + 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70, + 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff, + 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18, + 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4, + 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7, + 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a, + 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7, + 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc, + 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9, + 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b, + 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2, + 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2, + 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf, + 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1, + 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5, + 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66, + 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f, + 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60, + 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d, + 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a, + 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f, + 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f, + 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f, + 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54, + 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29, + 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02, + 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35, + 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75, + 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56, + 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6, + 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83, + 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34, + 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7, + 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6, + 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8, + 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9, + 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f, + 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f, + 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f, + 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed, + 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68, + 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2, + 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16, + 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca, + 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8, + 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8, + 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6, + 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1, + 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80, + 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51, + 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41, + 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00, + 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff, + 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f, + 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93, + 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7, + 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7, + 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22, + 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75, + 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94, + 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf, + 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff, + 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe, + 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51, + 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c, + 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4, + 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce, + 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8, + 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea, + 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c, + 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6, + 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0, + 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43, + 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18, + 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2, + 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00, + 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9, + 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0, + 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9, + 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80, + 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf, + 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00, + 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5, + 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d, + 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c, + 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff, + 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd, + 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00, + 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64, + 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc, + 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8, + 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf, + 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90, + 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37, + 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea, + 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2, + 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb, + 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0, + 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93, + 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c, + 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d, + 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87, + 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c, + 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7, + 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9, + 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc, + 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07, + 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f, + 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a, + 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b, + 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3, + 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f, + 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0, + 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10, + 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5, + 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12, + 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde, + 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66, + 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0, + 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00, + 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff, + 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f, + 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff, + 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8, + 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a, + 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7, + 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03, + 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c, + 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7, + 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45, + 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1, + 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2, + 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7, + 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e, + 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd, + 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06, + 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06, + 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88, + 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a, + 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50, + 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34, + 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2, + 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c, + 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a, + 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63, + 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7, + 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0, + 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc, + 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff, + 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41, + 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29, + 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57, + 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6, + 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf, + 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7, + 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21, + 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff, + 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55, + 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92, + 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6, + 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75, + 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29, + 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2, + 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68, + 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd, + 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1, + 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd, + 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f, + 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3, + 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77, + 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d, + 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6, + 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52, + 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba, + 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f, + 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65, + 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe, + 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb, + 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0, + 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e, + 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29, + 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8, + 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae, + 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a, + 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56, + 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64, + 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9, + 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c, + 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57, + 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac, + 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8, + 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51, + 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26, + 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61, + 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53, + 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67, + 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb, + 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98, + 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda, + 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb, + 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad, + 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef, + 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38, + 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb, + 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd, + 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92, + 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a, + 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab, + 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e, + 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7, + 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61, + 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd, + 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff, + 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa, + 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02, + 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2, + 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff, + 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d, + 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91, + 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0, + 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00, + 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5, + 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86, + 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96, + 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7, + 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea, + 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2, + 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80, + 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7, + 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62, + 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff, + 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e, + 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69, + 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98, + 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01, + 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49, + 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c, + 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9, + 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a, + 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc, + 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd, + 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7, + 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe, + 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23, + 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38, + 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0, + 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5, + 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07, + 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c, + 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6, + 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b, + 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61, + 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00, + 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00, + 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee, + 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00, + 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00, + 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00, + 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00, + 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00, + 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00, + 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00, + 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00, + 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00, + 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00, + 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00, + 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00, + 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00, + 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00, + 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00, + 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00, + 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00, + 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00, + 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00, + 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00, + 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00, + 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00, + 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff, + 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00, + 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff, + 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a, + 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00, + 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01, + 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87, + 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69, + 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19, + 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00, + 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12, + 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06, + 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06, + 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3, + 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02, + 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e, + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d, + 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42, + 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2, + 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab, + 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2, + 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13, + 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b, + 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15, + 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00, + 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13, + 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65, + 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83, + 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b, + 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00, + 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a, + 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01, + 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73, + 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c, + 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73, + 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c, + 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33, + 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31, + 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31, + 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00, + 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02, + 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05, + 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09, + 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08, + 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04, + 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00, + 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01, + 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03, + 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04, + 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01, + 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86, + 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79, + 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55, + 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78, + 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b, + 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a, + 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29, + 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99, + 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5, + 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb, + 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48, + 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c, + 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e, + 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29, + 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a, + 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3, + 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4, + 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26, + 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e, + 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91, + 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29, + 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f, + 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b, + 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe, + 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf, + 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57, + 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01, + 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8, + 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6, + 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01, + 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36, + 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb, + 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15, + 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85, + 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef, + 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb, + 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54, + 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5, + 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90, + 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f, + 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c, + 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14, + 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c, + 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55, + 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10, + 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79, + 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6, + 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a, + 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9, + 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad, + 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11, + 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24, + 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e, + 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19, + 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8, + 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69, + 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf, + 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47, + 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6, + 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef, + 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0, + 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23, + 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25, + 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0, + 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77, + 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07, + 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c, + 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b, + 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb, + 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32, + 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf, + 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94, + 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a, + 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda, + 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d, + 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99, + 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7, + 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4, + 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde, + 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93, + 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e, + 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00, + 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc, + 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9, + 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a, + 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e, + 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16, + 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3, + 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5, + 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23, + 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc, + 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d, + 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98, + 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a, + 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9, + 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf, + 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8, + 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7, + 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c, + 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d, + 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f, + 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec, + 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2, + 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61, + 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2, + 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32, + 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa, + 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6, + 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8, + 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a, + 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07, + 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea, + 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61, + 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81, + 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0, + 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f, + 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11, + 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3, + 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a, + 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e, + 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1, + 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43, + 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10, + 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a, + 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98, + 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38, + 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71, + 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a, + 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78, + 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32, + 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06, + 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac, + 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61, + 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b, + 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54, + 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa, + 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d, + 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54, + 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32, + 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8, + 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68, + 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00, + 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09, + 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42, + 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52, + 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68, + 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19, + 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b, + 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1, + 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80, + 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37, + 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4, + 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8, + 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e, + 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d, + 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21, + 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9, + 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30, + 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e, + 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66, + 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b, + 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e, + 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6, + 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d, + 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31, + 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc, + 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a, + 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91, + 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c, + 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2, + 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92, + 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63, + 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f, + 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67, + 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e, + 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07, + 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6, + 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b, + 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7, + 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18, + 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e, + 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f, + 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4, + 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8, + 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8, + 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f, + 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9, + 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8, + 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d, + 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80, + 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e, + 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82, + 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7, + 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80, + 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a, + 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3, + 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6, + 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53, + 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4, + 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25, + 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b, + 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea, + 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a, + 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95, + 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83, + 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9, + 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca, + 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e, + 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42, + 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46, + 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca, + 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8, + 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b, + 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2, + 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82, + 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e, + 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49, + 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50, + 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d, + 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae, + 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6, + 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38, + 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb, + 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90, + 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00, + 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1, + 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9, + 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a, + 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5, + 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27, + 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5, + 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86, + 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64, + 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10, + 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a, + 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62, + 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6, + 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab, + 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69, + 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4, + 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8, + 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07, + 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8, + 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58, + 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4, + 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48, + 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf, + 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e, + 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b, + 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83, + 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1, + 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75, + 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0, + 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60, + 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff, + 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65, + 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80, + 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d, + 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a, + 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c, + 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30, + 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23, + 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc, + 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e, + 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3, + 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8, + 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27, + 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80, + 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08, + 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d, + 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f, + 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d, + 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60, + 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55, + 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa, + 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82, + 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00, + 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe, + 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff, + 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58, + 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b, + 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3, + 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0, + 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf, + 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54, + 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4, + 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c, + 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39, + 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16, + 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98, + 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f, + 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45, + 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb, + 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81, + 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47, + 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d, + 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e, + 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38, + 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff, + 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61, + 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd, + 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde, + 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab, + 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d, + 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5, + 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01, + 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde, + 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6, + 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1, + 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2, + 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf, + 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d, + 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f, + 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0, + 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4, + 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4, + 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65, + 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b, + 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb, + 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c, + 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68, + 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa, + 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51, + 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06, + 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83, + 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9, + 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a, + 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0, + 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7, + 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc, + 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18, + 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10, + 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5, + 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae, + 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80, + 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81, + 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95, + 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95, + 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d, + 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc, + 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29, + 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b, + 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e, + 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a, + 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9, + 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56, + 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc, + 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb, + 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9, + 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc, + 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4, + 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78, + 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1, + 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8, + 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e, + 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48, + 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15, + 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f, + 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90, + 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8, + 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44, + 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c, + 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29, + 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35, + 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d, + 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8, + 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0, + 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34, + 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30, + 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44, + 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36, + 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c, + 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44, + 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2, + 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96, + 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd, + 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35, + 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e, + 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa, + 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d, + 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9, + 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62, + 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3, + 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53, + 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2, + 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32, + 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6, + 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92, + 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9, + 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad, + 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99, + 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e, + 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45, + 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96, + 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3, + 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60, + 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d, + 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b, + 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76, + 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca, + 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14, + 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6, + 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01, + 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67, + 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c, + 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09, + 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90, + 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb, + 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c, + 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2, + 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7, + 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55, + 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73, + 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9, + 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd, + 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78, + 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77, + 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e, + 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a, + 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16, + 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d, + 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea, + 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13, + 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde, + 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7, + 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d, + 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd, + 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4, + 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95, + 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72, + 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93, + 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a, + 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87, + 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed, + 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10, + 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20, + 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98, + 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa, + 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea, + 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0, + 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23, + 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22, + 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24, + 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8, + 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/M5Stack.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/M5Stack.ino new file mode 100644 index 000000000..f27c46f31 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/M5Stack.ino @@ -0,0 +1,61 @@ +// JPEGDEC example for Adafruit GFX displays + +#include "JPEGDEC.h" +// Sample image (truncated) containing a 320x240 Exif thumbnail +// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive. + +#include "thumb_test.h" +//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm +//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm + +#include + +#define DISPLAY_WIDTH 320 +#define DISPLAY_HEIGHT 240 + + +JPEGDEC jpeg; + +int JPEGDraw(JPEGDRAW *pDraw) +{ + + M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels); + return 1; +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + + Serial.println("Starting..."); + +M5.begin(); +M5.Lcd.fillScreen(TFT_BLACK); +} /* setup() */ + +void loop() { +int i; +long lTime; +int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH}; +int iCenterX[4] = {0,80,120,140}; +int iCenterY[4] = {0,60,90,105}; + + for (i=0; i<4; i++) + { + M5.Lcd.fillScreen(TFT_BLACK); + M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it + if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw)) + + { + lTime = micros(); + if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); } + { + lTime = micros() - lTime; + Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime); + } + jpeg.close(); + } + delay(2000); // pause between images + } // for i +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/batman.h new file mode 100644 index 000000000..4aeccde5a --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/batman.h @@ -0,0 +1,845 @@ +// +// batman-5 +// Data size = 13342 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t batman[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47, + 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01, + 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04, + 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11, + 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42, + 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2, + 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c, + 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00, + 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01, + 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71, + 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2, + 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00, + 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5, + 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44, + 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52, + 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44, + 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8, + 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b, + 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92, + 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23, + 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75, + 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d, + 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d, + 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1, + 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48, + 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a, + 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0, + 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48, + 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea, + 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94, + 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0, + 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27, + 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd, + 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2, + 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51, + 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3, + 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38, + 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a, + 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d, + 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c, + 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd, + 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3, + 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64, + 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad, + 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7, + 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14, + 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed, + 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9, + 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51, + 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb, + 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a, + 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56, + 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82, + 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a, + 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f, + 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a, + 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82, + 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d, + 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10, + 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7, + 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99, + 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9, + 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35, + 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42, + 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90, + 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a, + 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f, + 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f, + 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94, + 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9, + 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a, + 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44, + 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a, + 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85, + 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed, + 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e, + 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04, + 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21, + 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e, + 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91, + 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0, + 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47, + 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48, + 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8, + 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8, + 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59, + 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3, + 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb, + 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b, + 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa, + 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b, + 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5, + 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b, + 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e, + 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d, + 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a, + 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15, + 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65, + 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0, + 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac, + 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89, + 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a, + 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71, + 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed, + 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3, + 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12, + 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13, + 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78, + 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9, + 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42, + 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7, + 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae, + 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25, + 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7, + 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69, + 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e, + 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7, + 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0, + 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2, + 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36, + 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4, + 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9, + 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21, + 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29, + 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43, + 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48, + 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79, + 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9, + 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29, + 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14, + 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd, + 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a, + 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04, + 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1, + 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25, + 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14, + 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8, + 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7, + 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7, + 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a, + 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93, + 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21, + 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7, + 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39, + 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8, + 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43, + 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79, + 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a, + 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96, + 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47, + 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b, + 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff, + 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa, + 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53, + 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51, + 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a, + 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b, + 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1, + 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b, + 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a, + 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef, + 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20, + 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b, + 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d, + 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95, + 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4, + 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48, + 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b, + 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e, + 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d, + 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00, + 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44, + 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec, + 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb, + 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f, + 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a, + 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46, + 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1, + 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93, + 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b, + 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22, + 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13, + 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46, + 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d, + 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2, + 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee, + 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90, + 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92, + 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a, + 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc, + 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12, + 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6, + 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6, + 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae, + 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4, + 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5, + 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28, + 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39, + 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e, + 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85, + 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a, + 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc, + 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2, + 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51, + 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77, + 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca, + 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c, + 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4, + 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58, + 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11, + 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e, + 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4, + 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08, + 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24, + 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49, + 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61, + 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca, + 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56, + 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64, + 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93, + 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea, + 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e, + 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43, + 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96, + 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d, + 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a, + 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f, + 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87, + 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88, + 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4, + 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf, + 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00, + 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7, + 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72, + 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8, + 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25, + 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24, + 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb, + 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf, + 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80, + 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70, + 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa, + 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d, + 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d, + 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22, + 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28, + 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a, + 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8, + 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b, + 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63, + 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7, + 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77, + 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69, + 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24, + 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01, + 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75, + 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e, + 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6, + 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67, + 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71, + 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96, + 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a, + 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0, + 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68, + 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40, + 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8, + 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6, + 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f, + 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b, + 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33, + 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89, + 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44, + 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee, + 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5, + 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb, + 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4, + 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b, + 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0, + 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae, + 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec, + 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b, + 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff, + 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98, + 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e, + 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00, + 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb, + 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24, + 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82, + 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91, + 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53, + 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e, + 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee, + 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69, + 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93, + 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28, + 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12, + 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77, + 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5, + 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50, + 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22, + 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b, + 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58, + 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c, + 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42, + 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e, + 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4, + 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72, + 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94, + 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54, + 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05, + 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc, + 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35, + 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed, + 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12, + 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a, + 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f, + 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d, + 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1, + 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d, + 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f, + 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97, + 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c, + 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4, + 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a, + 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95, + 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5, + 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47, + 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3, + 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe, + 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a, + 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01, + 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29, + 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49, + 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68, + 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33, + 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c, + 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac, + 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00, + 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76, + 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa, + 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf, + 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb, + 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25, + 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53, + 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8, + 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51, + 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18, + 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39, + 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35, + 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c, + 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6, + 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4, + 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9, + 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7, + 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43, + 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c, + 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94, + 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8, + 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05, + 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf, + 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65, + 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f, + 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82, + 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b, + 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b, + 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3, + 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c, + 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15, + 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8, + 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24, + 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc, + 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c, + 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e, + 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba, + 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0, + 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3, + 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75, + 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2, + 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1, + 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11, + 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50, + 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e, + 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e, + 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c, + 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5, + 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4, + 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9, + 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07, + 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c, + 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63, + 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e, + 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57, + 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a, + 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc, + 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47, + 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd, + 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b, + 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60, + 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b, + 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7, + 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb, + 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82, + 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07, + 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99, + 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f, + 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32, + 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f, + 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6, + 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95, + 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78, + 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d, + 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16, + 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5, + 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e, + 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4, + 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94, + 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82, + 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27, + 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97, + 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb, + 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74, + 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74, + 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1, + 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21, + 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4, + 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c, + 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b, + 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75, + 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc, + 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b, + 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6, + 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d, + 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16, + 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda, + 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76, + 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a, + 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f, + 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f, + 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f, + 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6, + 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71, + 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1, + 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8, + 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f, + 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c, + 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f, + 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6, + 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e, + 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae, + 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70, + 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf, + 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17, + 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30, + 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03, + 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f, + 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b, + 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24, + 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e, + 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77, + 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc, + 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d, + 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d, + 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9, + 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43, + 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef, + 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3, + 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0, + 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1, + 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd, + 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b, + 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef, + 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76, + 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1, + 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a, + 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61, + 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e, + 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1, + 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5, + 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39, + 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00, + 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d, + 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9, + 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3, + 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e, + 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f, + 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b, + 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4, + 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0, + 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab, + 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6, + 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e, + 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef, + 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad, + 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24, + 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d, + 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91, + 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4, + 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61, + 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69, + 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe, + 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55, + 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d, + 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9, + 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17, + 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7, + 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c, + 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd, + 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c, + 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38, + 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1, + 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00, + 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf, + 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb, + 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4, + 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1, + 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9, + 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd, + 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97, + 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53, + 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54, + 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15, + 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e, + 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30, + 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5, + 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb, + 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8, + 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc, + 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7, + 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc, + 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83, + 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae, + 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2, + 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2, + 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1, + 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41, + 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a, + 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c, + 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4, + 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96, + 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69, + 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe, + 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37, + 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c, + 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d, + 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2, + 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a, + 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f, + 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e, + 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a, + 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57, + 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b, + 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b, + 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a, + 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba, + 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6, + 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36, + 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5, + 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97, + 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1, + 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8, + 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f, + 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd, + 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d, + 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2, + 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00, + 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5, + 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01, + 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca, + 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0, + 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83, + 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90, + 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd, + 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b, + 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17, + 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99, + 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52, + 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93, + 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d, + 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63, + 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74, + 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11, + 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb, + 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97, + 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b, + 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c, + 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4, + 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f, + 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b, + 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0, + 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33, + 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c, + 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f, + 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe, + 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c, + 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b, + 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76, + 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20, + 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6, + 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d, + 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87, + 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a, + 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0, + 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee, + 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24, + 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5, + 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a, + 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9, + 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78, + 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1, + 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15, + 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a, + 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa, + 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7, + 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f, + 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc, + 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b, + 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b, + 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8, + 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40, + 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa, + 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67, + 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81, + 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1, + 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5, + 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90, + 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01, + 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce, + 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad, + 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8, + 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff, + 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c, + 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23, + 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99, + 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea, + 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23, + 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37, + 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20, + 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23, + 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3, + 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3, + 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d, + 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65, + 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70, + 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78, + 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde, + 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d, + 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28, + 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c, + 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff, + 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4, + 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72, + 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f, + 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b, + 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d, + 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69, + 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87, + 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba, + 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59, + 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90, + 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5, + 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc, + 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32, + 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47, + 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84, + 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2, + 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb, + 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59, + 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28, + 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb, + 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d, + 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68, + 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e, + 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19, + 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96, + 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5, + 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20, + 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f, + 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72, + 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad, + 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5, + 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17, + 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40, + 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2, + 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8, + 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83, + 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81, + 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb, + 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35, + 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53, + 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9, + 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20, + 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32, + 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11, + 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46, + 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0, + 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02, + 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7, + 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe, + 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69, + 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba, + 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a, + 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47, + 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d, + 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93, + 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45, + 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43, + 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2, + 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74, + 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6, + 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb, + 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3, + 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1, + 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78, + 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36, + 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e, + 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b, + 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58, + 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49, + 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c, + 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94, + 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72, + 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22, + 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0, + 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f, + 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde, + 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6, + 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11, + 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac, + 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b, + 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71, + 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1, + 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1, + 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6, + 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71, + 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b, + 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3, + 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05, + 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38, + 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04, + 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad, + 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5, + 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43, + 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27, + 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86, + 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b, + 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea, + 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7, + 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40, + 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b, + 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94, + 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d, + 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1, + 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9, + 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87, + 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf, + 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4, + 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f, + 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc, + 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4, + 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a, + 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5, + 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c, + 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6, + 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91, + 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23, + 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24, + 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6, + 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1, + 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42, + 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9, + 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed, + 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11, + 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34, + 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44, + 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74, + 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23, + 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c, + 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee, + 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5, + 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b, + 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94, + 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12, + 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02, + 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18, + 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce, + 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01, + 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb, + 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe, + 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e, + 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63, + 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a, + 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94, + 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19, + 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e, + 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e, + 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1, + 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea, + 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0, + 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54, + 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a, + 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94, + 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11, + 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a, + 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/ncc1701.h new file mode 100644 index 000000000..d10383d16 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/ncc1701.h @@ -0,0 +1,318 @@ +// +// ncc1701 +// Data size = 4912 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t ncc1701[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48, + 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a, + 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09, + 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21, + 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15, + 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2, + 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4, + 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13, + 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a, + 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5, + 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb, + 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4, + 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8, + 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40, + 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29, + 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58, + 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b, + 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14, + 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0, + 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a, + 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61, + 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb, + 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8, + 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87, + 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94, + 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7, + 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5, + 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f, + 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb, + 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14, + 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47, + 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42, + 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b, + 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79, + 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74, + 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7, + 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe, + 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e, + 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70, + 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55, + 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd, + 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf, + 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25, + 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9, + 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2, + 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b, + 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77, + 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed, + 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e, + 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c, + 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70, + 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb, + 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98, + 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e, + 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d, + 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7, + 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2, + 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19, + 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21, + 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea, + 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5, + 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86, + 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4, + 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7, + 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb, + 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5, + 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4, + 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69, + 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4, + 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d, + 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0, + 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e, + 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53, + 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5, + 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8, + 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12, + 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96, + 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6, + 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36, + 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f, + 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25, + 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55, + 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae, + 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e, + 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27, + 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69, + 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90, + 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6, + 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6, + 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3, + 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b, + 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d, + 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38, + 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad, + 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62, + 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3, + 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba, + 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2, + 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6, + 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2, + 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf, + 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f, + 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9, + 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc, + 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92, + 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89, + 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f, + 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d, + 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94, + 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5, + 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16, + 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90, + 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64, + 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1, + 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b, + 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93, + 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63, + 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6, + 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19, + 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0, + 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76, + 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15, + 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd, + 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71, + 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7, + 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2, + 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9, + 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92, + 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d, + 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c, + 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae, + 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09, + 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb, + 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e, + 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20, + 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09, + 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53, + 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d, + 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7, + 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31, + 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b, + 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52, + 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e, + 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74, + 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86, + 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b, + 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4, + 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9, + 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae, + 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92, + 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1, + 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2, + 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04, + 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff, + 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1, + 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29, + 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9, + 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33, + 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51, + 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec, + 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99, + 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35, + 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4, + 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19, + 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72, + 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42, + 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2, + 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61, + 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb, + 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a, + 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d, + 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e, + 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce, + 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94, + 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b, + 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b, + 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c, + 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d, + 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05, + 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b, + 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a, + 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b, + 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95, + 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37, + 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70, + 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf, + 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3, + 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f, + 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50, + 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb, + 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0, + 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d, + 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d, + 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4, + 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a, + 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10, + 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5, + 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87, + 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7, + 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00, + 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3, + 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73, + 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b, + 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c, + 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae, + 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16, + 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10, + 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9, + 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47, + 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c, + 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba, + 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00, + 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b, + 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f, + 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68, + 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8, + 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23, + 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e, + 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d, + 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b, + 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92, + 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe, + 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca, + 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c, + 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35, + 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb, + 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60, + 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31, + 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f, + 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18, + 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15, + 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9, + 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4, + 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0, + 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d, + 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14, + 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15, + 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3, + 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1, + 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0, + 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23, + 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2, + 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7, + 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd, + 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11, + 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3, + 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00, + 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54, + 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c, + 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09, + 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b, + 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53, + 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5, + 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a, + 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c, + 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03, + 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69, + 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31, + 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0, + 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6, + 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b, + 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0, + 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7, + 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52, + 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30, + 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25, + 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78, + 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5, + 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c, + 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57, + 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda, + 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed, + 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56, + 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4, + 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71, + 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2, + 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e, + 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb, + 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b, + 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6, + 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21, + 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0, + 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9, + 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c, + 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47, + 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45, + 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73, + 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60, + 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5, + 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51, + 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/thumb_test.h new file mode 100644 index 000000000..0b43b0074 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/thumb_test.h @@ -0,0 +1,1286 @@ +// +// thumb_test +// +const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a, + 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0, + 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f, + 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00, + 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06, + 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00, + 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d, + 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45, + 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a, + 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02, + 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00, + 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00, + 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00, + 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01, + 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00, + 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90, + 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00, + 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00, + 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00, + 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00, + 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39, + 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30, + 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00, + 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00, + 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, + 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56, + 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07, + 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40, + 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01, + 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98, + 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01, + 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48, + 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11, + 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22, + 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83, + 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93, + 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22, + 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11, + 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01, + 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61, + 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1, + 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27, + 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88, + 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, + 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, + 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02, + 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61, + 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52, + 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a, + 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47, + 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67, + 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86, + 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2, + 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9, + 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09, + 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35, + 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20, + 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31, + 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d, + 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00, + 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0, + 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8, + 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f, + 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3, + 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc, + 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a, + 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4, + 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a, + 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93, + 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66, + 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b, + 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3, + 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99, + 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a, + 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c, + 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c, + 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46, + 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e, + 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c, + 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa, + 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e, + 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42, + 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2, + 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b, + 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64, + 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6, + 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66, + 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79, + 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73, + 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a, + 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1, + 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b, + 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a, + 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97, + 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4, + 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c, + 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a, + 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f, + 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27, + 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86, + 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65, + 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7, + 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78, + 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b, + 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35, + 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02, + 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34, + 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28, + 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71, + 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f, + 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e, + 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f, + 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf, + 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29, + 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2, + 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf, + 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0, + 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02, + 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f, + 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73, + 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff, + 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04, + 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00, + 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48, + 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01, + 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e, + 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f, + 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd, + 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38, + 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce, + 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3, + 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa, + 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2, + 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6, + 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00, + 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79, + 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd, + 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e, + 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69, + 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27, + 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c, + 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c, + 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4, + 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64, + 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4, + 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7, + 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e, + 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4, + 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8, + 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9, + 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2, + 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf, + 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d, + 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7, + 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63, + 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f, + 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74, + 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11, + 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca, + 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d, + 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1, + 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53, + 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c, + 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28, + 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50, + 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7, + 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c, + 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09, + 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48, + 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8, + 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39, + 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1, + 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1, + 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea, + 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14, + 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf, + 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c, + 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3, + 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41, + 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4, + 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74, + 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9, + 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7, + 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c, + 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1, + 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b, + 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa, + 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00, + 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3, + 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f, + 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70, + 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff, + 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18, + 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4, + 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7, + 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a, + 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7, + 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc, + 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9, + 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b, + 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2, + 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2, + 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf, + 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1, + 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5, + 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66, + 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f, + 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60, + 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d, + 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a, + 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f, + 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f, + 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f, + 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54, + 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29, + 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02, + 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35, + 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75, + 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56, + 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6, + 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83, + 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34, + 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7, + 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6, + 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8, + 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9, + 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f, + 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f, + 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f, + 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed, + 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68, + 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2, + 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16, + 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca, + 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8, + 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8, + 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6, + 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1, + 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80, + 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51, + 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41, + 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00, + 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff, + 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f, + 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93, + 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7, + 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7, + 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22, + 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75, + 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94, + 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf, + 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff, + 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe, + 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51, + 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c, + 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4, + 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce, + 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8, + 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea, + 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c, + 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6, + 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0, + 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43, + 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18, + 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2, + 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00, + 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9, + 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0, + 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9, + 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80, + 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf, + 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00, + 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5, + 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d, + 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c, + 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff, + 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd, + 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00, + 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64, + 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc, + 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8, + 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf, + 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90, + 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37, + 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea, + 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2, + 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb, + 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0, + 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93, + 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c, + 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d, + 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87, + 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c, + 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7, + 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9, + 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc, + 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07, + 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f, + 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a, + 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b, + 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3, + 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f, + 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0, + 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10, + 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5, + 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12, + 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde, + 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66, + 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0, + 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00, + 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff, + 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f, + 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff, + 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8, + 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a, + 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7, + 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03, + 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c, + 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7, + 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45, + 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1, + 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2, + 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7, + 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e, + 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd, + 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06, + 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06, + 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88, + 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a, + 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50, + 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34, + 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2, + 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c, + 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a, + 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63, + 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7, + 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0, + 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc, + 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff, + 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41, + 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29, + 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57, + 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6, + 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf, + 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7, + 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21, + 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff, + 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55, + 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92, + 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6, + 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75, + 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29, + 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2, + 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68, + 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd, + 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1, + 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd, + 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f, + 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3, + 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77, + 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d, + 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6, + 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52, + 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba, + 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f, + 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65, + 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe, + 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb, + 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0, + 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e, + 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29, + 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8, + 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae, + 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a, + 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56, + 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64, + 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9, + 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c, + 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57, + 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac, + 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8, + 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51, + 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26, + 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61, + 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53, + 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67, + 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb, + 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98, + 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda, + 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb, + 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad, + 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef, + 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38, + 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb, + 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd, + 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92, + 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a, + 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab, + 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e, + 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7, + 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61, + 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd, + 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff, + 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa, + 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02, + 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2, + 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff, + 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d, + 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91, + 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0, + 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00, + 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5, + 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86, + 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96, + 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7, + 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea, + 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2, + 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80, + 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7, + 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62, + 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff, + 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e, + 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69, + 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98, + 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01, + 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49, + 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c, + 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9, + 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a, + 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc, + 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd, + 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7, + 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe, + 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23, + 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38, + 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0, + 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5, + 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07, + 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c, + 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6, + 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b, + 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61, + 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00, + 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00, + 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee, + 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00, + 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00, + 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00, + 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00, + 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00, + 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00, + 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00, + 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00, + 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00, + 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00, + 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00, + 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00, + 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00, + 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00, + 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00, + 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00, + 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00, + 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00, + 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00, + 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00, + 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00, + 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00, + 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff, + 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00, + 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff, + 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a, + 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00, + 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01, + 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87, + 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69, + 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19, + 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00, + 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12, + 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06, + 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06, + 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3, + 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02, + 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e, + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d, + 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42, + 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2, + 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab, + 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2, + 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13, + 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b, + 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15, + 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00, + 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13, + 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65, + 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83, + 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b, + 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00, + 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a, + 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01, + 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73, + 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c, + 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73, + 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c, + 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33, + 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31, + 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31, + 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00, + 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02, + 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05, + 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09, + 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08, + 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04, + 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00, + 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01, + 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03, + 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04, + 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01, + 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86, + 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79, + 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55, + 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78, + 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b, + 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a, + 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29, + 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99, + 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5, + 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb, + 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48, + 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c, + 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e, + 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29, + 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a, + 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3, + 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4, + 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26, + 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e, + 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91, + 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29, + 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f, + 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b, + 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe, + 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf, + 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57, + 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01, + 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8, + 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6, + 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01, + 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36, + 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb, + 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15, + 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85, + 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef, + 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb, + 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54, + 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5, + 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90, + 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f, + 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c, + 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14, + 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c, + 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55, + 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10, + 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79, + 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6, + 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a, + 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9, + 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad, + 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11, + 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24, + 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e, + 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19, + 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8, + 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69, + 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf, + 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47, + 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6, + 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef, + 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0, + 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23, + 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25, + 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0, + 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77, + 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07, + 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c, + 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b, + 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb, + 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32, + 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf, + 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94, + 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a, + 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda, + 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d, + 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99, + 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7, + 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4, + 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde, + 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93, + 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e, + 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00, + 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc, + 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9, + 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a, + 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e, + 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16, + 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3, + 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5, + 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23, + 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc, + 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d, + 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98, + 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a, + 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9, + 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf, + 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8, + 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7, + 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c, + 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d, + 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f, + 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec, + 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2, + 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61, + 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2, + 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32, + 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa, + 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6, + 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8, + 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a, + 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07, + 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea, + 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61, + 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81, + 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0, + 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f, + 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11, + 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3, + 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a, + 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e, + 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1, + 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43, + 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10, + 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a, + 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98, + 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38, + 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71, + 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a, + 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78, + 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32, + 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06, + 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac, + 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61, + 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b, + 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54, + 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa, + 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d, + 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54, + 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32, + 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8, + 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68, + 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00, + 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09, + 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42, + 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52, + 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68, + 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19, + 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b, + 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1, + 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80, + 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37, + 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4, + 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8, + 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e, + 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d, + 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21, + 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9, + 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30, + 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e, + 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66, + 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b, + 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e, + 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6, + 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d, + 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31, + 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc, + 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a, + 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91, + 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c, + 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2, + 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92, + 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63, + 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f, + 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67, + 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e, + 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07, + 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6, + 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b, + 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7, + 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18, + 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e, + 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f, + 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4, + 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8, + 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8, + 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f, + 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9, + 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8, + 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d, + 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80, + 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e, + 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82, + 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7, + 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80, + 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a, + 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3, + 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6, + 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53, + 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4, + 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25, + 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b, + 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea, + 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a, + 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95, + 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83, + 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9, + 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca, + 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e, + 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42, + 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46, + 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca, + 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8, + 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b, + 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2, + 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82, + 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e, + 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49, + 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50, + 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d, + 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae, + 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6, + 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38, + 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb, + 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90, + 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00, + 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1, + 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9, + 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a, + 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5, + 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27, + 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5, + 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86, + 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64, + 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10, + 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a, + 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62, + 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6, + 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab, + 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69, + 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4, + 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8, + 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07, + 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8, + 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58, + 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4, + 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48, + 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf, + 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e, + 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b, + 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83, + 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1, + 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75, + 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0, + 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60, + 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff, + 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65, + 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80, + 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d, + 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a, + 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c, + 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30, + 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23, + 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc, + 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e, + 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3, + 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8, + 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27, + 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80, + 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08, + 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d, + 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f, + 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d, + 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60, + 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55, + 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa, + 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82, + 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00, + 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe, + 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff, + 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58, + 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b, + 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3, + 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0, + 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf, + 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54, + 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4, + 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c, + 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39, + 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16, + 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98, + 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f, + 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45, + 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb, + 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81, + 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47, + 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d, + 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e, + 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38, + 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff, + 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61, + 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd, + 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde, + 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab, + 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d, + 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5, + 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01, + 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde, + 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6, + 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1, + 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2, + 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf, + 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d, + 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f, + 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0, + 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4, + 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4, + 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65, + 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b, + 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb, + 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c, + 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68, + 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa, + 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51, + 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06, + 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83, + 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9, + 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a, + 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0, + 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7, + 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc, + 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18, + 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10, + 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5, + 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae, + 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80, + 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81, + 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95, + 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95, + 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d, + 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc, + 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29, + 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b, + 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e, + 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a, + 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9, + 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56, + 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc, + 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb, + 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9, + 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc, + 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4, + 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78, + 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1, + 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8, + 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e, + 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48, + 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15, + 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f, + 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90, + 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8, + 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44, + 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c, + 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29, + 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35, + 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d, + 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8, + 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0, + 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34, + 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30, + 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44, + 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36, + 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c, + 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44, + 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2, + 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96, + 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd, + 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35, + 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e, + 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa, + 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d, + 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9, + 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62, + 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3, + 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53, + 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2, + 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32, + 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6, + 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92, + 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9, + 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad, + 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99, + 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e, + 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45, + 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96, + 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3, + 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60, + 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d, + 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b, + 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76, + 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca, + 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14, + 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6, + 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01, + 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67, + 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c, + 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09, + 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90, + 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb, + 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c, + 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2, + 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7, + 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55, + 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73, + 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9, + 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd, + 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78, + 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77, + 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e, + 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a, + 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16, + 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d, + 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea, + 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13, + 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde, + 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7, + 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d, + 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd, + 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4, + 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95, + 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72, + 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93, + 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a, + 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87, + 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed, + 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10, + 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20, + 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98, + 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa, + 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea, + 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0, + 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23, + 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22, + 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24, + 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8, + 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/M5StickC.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/M5StickC.ino new file mode 100644 index 000000000..839429993 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/M5StickC.ino @@ -0,0 +1,61 @@ +// JPEGDEC example for Adafruit GFX displays + +#include "JPEGDEC.h" +// Sample image (truncated) containing a 320x240 Exif thumbnail +// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive. + +#include "thumb_test.h" +//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm +//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm + +#include + +#define DISPLAY_WIDTH 80 +#define DISPLAY_HEIGHT 160 + + +JPEGDEC jpeg; + +int JPEGDraw(JPEGDRAW *pDraw) +{ + + M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels); + return 1; +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + + Serial.println("Starting..."); + +M5.begin(); +M5.Lcd.fillScreen(TFT_BLACK); +} /* setup() */ + +void loop() { +int i; +long lTime; +int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH}; +int iCenterX[4] = {0,0,0,0}; +int iCenterY[4] = {0,0,0,0}; + + for (i=0; i<4; i++) + { + M5.Lcd.fillScreen(TFT_BLACK); + M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it + if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw)) + + { + lTime = micros(); + if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); } + { + lTime = micros() - lTime; + Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime); + } + jpeg.close(); + } + delay(2000); // pause between images + } // for i +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/batman.h new file mode 100644 index 000000000..4aeccde5a --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/batman.h @@ -0,0 +1,845 @@ +// +// batman-5 +// Data size = 13342 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t batman[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47, + 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01, + 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04, + 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11, + 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42, + 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2, + 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c, + 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00, + 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01, + 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71, + 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2, + 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00, + 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5, + 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44, + 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52, + 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44, + 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8, + 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b, + 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92, + 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23, + 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75, + 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d, + 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d, + 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1, + 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48, + 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a, + 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0, + 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48, + 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea, + 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94, + 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0, + 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27, + 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd, + 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2, + 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51, + 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3, + 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38, + 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a, + 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d, + 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c, + 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd, + 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3, + 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64, + 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad, + 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7, + 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14, + 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed, + 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9, + 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51, + 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb, + 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a, + 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56, + 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82, + 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a, + 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f, + 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a, + 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82, + 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d, + 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10, + 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7, + 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99, + 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9, + 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35, + 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42, + 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90, + 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a, + 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f, + 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f, + 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94, + 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9, + 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a, + 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44, + 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a, + 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85, + 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed, + 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e, + 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04, + 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21, + 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e, + 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91, + 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0, + 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47, + 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48, + 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8, + 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8, + 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59, + 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3, + 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb, + 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b, + 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa, + 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b, + 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5, + 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b, + 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e, + 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d, + 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a, + 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15, + 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65, + 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0, + 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac, + 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89, + 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a, + 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71, + 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed, + 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3, + 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12, + 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13, + 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78, + 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9, + 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42, + 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7, + 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae, + 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25, + 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7, + 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69, + 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e, + 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7, + 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0, + 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2, + 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36, + 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4, + 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9, + 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21, + 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29, + 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43, + 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48, + 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79, + 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9, + 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29, + 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14, + 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd, + 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a, + 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04, + 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1, + 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25, + 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14, + 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8, + 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7, + 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7, + 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a, + 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93, + 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21, + 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7, + 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39, + 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8, + 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43, + 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79, + 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a, + 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96, + 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47, + 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b, + 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff, + 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa, + 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53, + 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51, + 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a, + 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b, + 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1, + 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b, + 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a, + 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef, + 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20, + 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b, + 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d, + 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95, + 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4, + 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48, + 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b, + 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e, + 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d, + 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00, + 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44, + 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec, + 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb, + 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f, + 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a, + 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46, + 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1, + 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93, + 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b, + 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22, + 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13, + 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46, + 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d, + 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2, + 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee, + 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90, + 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92, + 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a, + 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc, + 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12, + 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6, + 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6, + 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae, + 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4, + 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5, + 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28, + 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39, + 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e, + 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85, + 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a, + 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc, + 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2, + 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51, + 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77, + 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca, + 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c, + 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4, + 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58, + 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11, + 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e, + 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4, + 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08, + 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24, + 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49, + 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61, + 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca, + 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56, + 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64, + 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93, + 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea, + 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e, + 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43, + 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96, + 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d, + 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a, + 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f, + 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87, + 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88, + 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4, + 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf, + 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00, + 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7, + 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72, + 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8, + 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25, + 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24, + 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb, + 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf, + 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80, + 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70, + 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa, + 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d, + 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d, + 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22, + 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28, + 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a, + 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8, + 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b, + 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63, + 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7, + 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77, + 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69, + 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24, + 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01, + 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75, + 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e, + 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6, + 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67, + 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71, + 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96, + 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a, + 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0, + 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68, + 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40, + 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8, + 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6, + 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f, + 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b, + 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33, + 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89, + 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44, + 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee, + 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5, + 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb, + 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4, + 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b, + 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0, + 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae, + 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec, + 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b, + 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff, + 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98, + 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e, + 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00, + 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb, + 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24, + 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82, + 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91, + 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53, + 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e, + 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee, + 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69, + 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93, + 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28, + 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12, + 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77, + 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5, + 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50, + 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22, + 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b, + 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58, + 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c, + 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42, + 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e, + 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4, + 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72, + 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94, + 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54, + 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05, + 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc, + 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35, + 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed, + 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12, + 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a, + 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f, + 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d, + 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1, + 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d, + 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f, + 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97, + 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c, + 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4, + 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a, + 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95, + 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5, + 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47, + 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3, + 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe, + 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a, + 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01, + 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29, + 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49, + 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68, + 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33, + 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c, + 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac, + 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00, + 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76, + 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa, + 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf, + 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb, + 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25, + 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53, + 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8, + 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51, + 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18, + 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39, + 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35, + 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c, + 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6, + 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4, + 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9, + 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7, + 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43, + 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c, + 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94, + 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8, + 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05, + 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf, + 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65, + 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f, + 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82, + 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b, + 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b, + 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3, + 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c, + 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15, + 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8, + 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24, + 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc, + 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c, + 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e, + 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba, + 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0, + 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3, + 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75, + 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2, + 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1, + 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11, + 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50, + 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e, + 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e, + 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c, + 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5, + 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4, + 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9, + 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07, + 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c, + 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63, + 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e, + 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57, + 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a, + 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc, + 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47, + 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd, + 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b, + 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60, + 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b, + 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7, + 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb, + 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82, + 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07, + 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99, + 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f, + 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32, + 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f, + 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6, + 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95, + 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78, + 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d, + 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16, + 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5, + 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e, + 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4, + 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94, + 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82, + 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27, + 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97, + 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb, + 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74, + 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74, + 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1, + 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21, + 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4, + 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c, + 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b, + 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75, + 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc, + 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b, + 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6, + 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d, + 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16, + 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda, + 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76, + 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a, + 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f, + 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f, + 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f, + 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6, + 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71, + 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1, + 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8, + 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f, + 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c, + 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f, + 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6, + 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e, + 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae, + 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70, + 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf, + 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17, + 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30, + 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03, + 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f, + 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b, + 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24, + 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e, + 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77, + 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc, + 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d, + 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d, + 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9, + 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43, + 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef, + 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3, + 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0, + 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1, + 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd, + 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b, + 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef, + 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76, + 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1, + 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a, + 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61, + 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e, + 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1, + 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5, + 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39, + 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00, + 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d, + 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9, + 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3, + 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e, + 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f, + 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b, + 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4, + 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0, + 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab, + 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6, + 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e, + 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef, + 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad, + 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24, + 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d, + 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91, + 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4, + 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61, + 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69, + 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe, + 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55, + 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d, + 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9, + 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17, + 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7, + 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c, + 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd, + 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c, + 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38, + 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1, + 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00, + 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf, + 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb, + 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4, + 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1, + 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9, + 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd, + 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97, + 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53, + 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54, + 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15, + 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e, + 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30, + 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5, + 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb, + 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8, + 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc, + 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7, + 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc, + 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83, + 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae, + 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2, + 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2, + 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1, + 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41, + 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a, + 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c, + 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4, + 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96, + 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69, + 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe, + 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37, + 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c, + 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d, + 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2, + 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a, + 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f, + 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e, + 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a, + 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57, + 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b, + 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b, + 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a, + 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba, + 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6, + 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36, + 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5, + 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97, + 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1, + 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8, + 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f, + 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd, + 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d, + 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2, + 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00, + 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5, + 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01, + 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca, + 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0, + 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83, + 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90, + 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd, + 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b, + 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17, + 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99, + 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52, + 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93, + 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d, + 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63, + 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74, + 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11, + 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb, + 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97, + 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b, + 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c, + 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4, + 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f, + 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b, + 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0, + 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33, + 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c, + 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f, + 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe, + 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c, + 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b, + 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76, + 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20, + 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6, + 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d, + 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87, + 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a, + 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0, + 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee, + 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24, + 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5, + 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a, + 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9, + 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78, + 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1, + 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15, + 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a, + 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa, + 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7, + 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f, + 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc, + 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b, + 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b, + 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8, + 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40, + 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa, + 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67, + 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81, + 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1, + 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5, + 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90, + 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01, + 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce, + 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad, + 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8, + 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff, + 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c, + 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23, + 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99, + 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea, + 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23, + 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37, + 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20, + 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23, + 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3, + 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3, + 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d, + 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65, + 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70, + 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78, + 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde, + 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d, + 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28, + 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c, + 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff, + 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4, + 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72, + 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f, + 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b, + 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d, + 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69, + 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87, + 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba, + 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59, + 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90, + 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5, + 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc, + 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32, + 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47, + 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84, + 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2, + 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb, + 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59, + 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28, + 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb, + 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d, + 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68, + 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e, + 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19, + 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96, + 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5, + 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20, + 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f, + 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72, + 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad, + 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5, + 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17, + 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40, + 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2, + 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8, + 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83, + 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81, + 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb, + 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35, + 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53, + 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9, + 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20, + 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32, + 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11, + 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46, + 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0, + 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02, + 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7, + 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe, + 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69, + 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba, + 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a, + 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47, + 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d, + 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93, + 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45, + 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43, + 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2, + 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74, + 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6, + 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb, + 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3, + 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1, + 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78, + 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36, + 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e, + 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b, + 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58, + 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49, + 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c, + 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94, + 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72, + 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22, + 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0, + 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f, + 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde, + 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6, + 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11, + 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac, + 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b, + 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71, + 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1, + 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1, + 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6, + 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71, + 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b, + 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3, + 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05, + 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38, + 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04, + 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad, + 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5, + 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43, + 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27, + 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86, + 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b, + 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea, + 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7, + 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40, + 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b, + 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94, + 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d, + 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1, + 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9, + 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87, + 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf, + 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4, + 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f, + 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc, + 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4, + 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a, + 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5, + 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c, + 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6, + 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91, + 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23, + 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24, + 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6, + 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1, + 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42, + 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9, + 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed, + 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11, + 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34, + 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44, + 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74, + 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23, + 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c, + 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee, + 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5, + 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b, + 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94, + 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12, + 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02, + 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18, + 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce, + 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01, + 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb, + 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe, + 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e, + 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63, + 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a, + 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94, + 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19, + 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e, + 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e, + 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1, + 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea, + 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0, + 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54, + 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a, + 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94, + 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11, + 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a, + 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/ncc1701.h new file mode 100644 index 000000000..d10383d16 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/ncc1701.h @@ -0,0 +1,318 @@ +// +// ncc1701 +// Data size = 4912 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t ncc1701[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48, + 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a, + 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09, + 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21, + 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15, + 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2, + 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4, + 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13, + 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a, + 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5, + 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb, + 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4, + 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8, + 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40, + 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29, + 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58, + 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b, + 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14, + 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0, + 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a, + 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61, + 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb, + 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8, + 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87, + 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94, + 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7, + 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5, + 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f, + 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb, + 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14, + 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47, + 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42, + 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b, + 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79, + 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74, + 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7, + 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe, + 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e, + 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70, + 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55, + 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd, + 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf, + 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25, + 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9, + 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2, + 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b, + 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77, + 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed, + 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e, + 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c, + 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70, + 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb, + 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98, + 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e, + 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d, + 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7, + 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2, + 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19, + 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21, + 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea, + 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5, + 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86, + 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4, + 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7, + 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb, + 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5, + 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4, + 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69, + 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4, + 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d, + 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0, + 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e, + 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53, + 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5, + 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8, + 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12, + 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96, + 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6, + 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36, + 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f, + 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25, + 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55, + 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae, + 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e, + 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27, + 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69, + 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90, + 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6, + 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6, + 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3, + 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b, + 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d, + 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38, + 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad, + 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62, + 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3, + 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba, + 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2, + 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6, + 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2, + 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf, + 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f, + 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9, + 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc, + 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92, + 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89, + 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f, + 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d, + 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94, + 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5, + 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16, + 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90, + 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64, + 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1, + 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b, + 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93, + 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63, + 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6, + 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19, + 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0, + 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76, + 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15, + 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd, + 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71, + 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7, + 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2, + 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9, + 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92, + 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d, + 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c, + 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae, + 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09, + 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb, + 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e, + 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20, + 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09, + 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53, + 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d, + 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7, + 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31, + 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b, + 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52, + 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e, + 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74, + 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86, + 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b, + 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4, + 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9, + 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae, + 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92, + 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1, + 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2, + 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04, + 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff, + 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1, + 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29, + 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9, + 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33, + 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51, + 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec, + 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99, + 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35, + 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4, + 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19, + 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72, + 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42, + 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2, + 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61, + 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb, + 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a, + 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d, + 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e, + 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce, + 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94, + 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b, + 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b, + 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c, + 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d, + 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05, + 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b, + 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a, + 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b, + 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95, + 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37, + 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70, + 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf, + 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3, + 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f, + 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50, + 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb, + 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0, + 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d, + 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d, + 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4, + 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a, + 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10, + 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5, + 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87, + 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7, + 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00, + 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3, + 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73, + 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b, + 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c, + 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae, + 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16, + 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10, + 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9, + 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47, + 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c, + 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba, + 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00, + 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b, + 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f, + 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68, + 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8, + 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23, + 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e, + 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d, + 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b, + 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92, + 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe, + 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca, + 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c, + 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35, + 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb, + 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60, + 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31, + 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f, + 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18, + 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15, + 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9, + 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4, + 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0, + 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d, + 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14, + 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15, + 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3, + 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1, + 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0, + 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23, + 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2, + 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7, + 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd, + 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11, + 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3, + 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00, + 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54, + 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c, + 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09, + 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b, + 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53, + 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5, + 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a, + 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c, + 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03, + 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69, + 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31, + 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0, + 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6, + 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b, + 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0, + 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7, + 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52, + 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30, + 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25, + 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78, + 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5, + 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c, + 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57, + 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda, + 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed, + 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56, + 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4, + 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71, + 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2, + 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e, + 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb, + 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b, + 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6, + 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21, + 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0, + 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9, + 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c, + 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47, + 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45, + 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73, + 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60, + 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5, + 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51, + 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/thumb_test.h new file mode 100644 index 000000000..0b43b0074 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/thumb_test.h @@ -0,0 +1,1286 @@ +// +// thumb_test +// +const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a, + 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0, + 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f, + 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00, + 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06, + 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00, + 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d, + 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45, + 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a, + 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02, + 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00, + 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00, + 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00, + 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01, + 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00, + 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90, + 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00, + 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00, + 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00, + 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00, + 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39, + 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30, + 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00, + 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00, + 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, + 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56, + 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07, + 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40, + 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01, + 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98, + 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01, + 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48, + 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11, + 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22, + 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83, + 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93, + 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22, + 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11, + 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01, + 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61, + 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1, + 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27, + 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88, + 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, + 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, + 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02, + 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61, + 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52, + 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a, + 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47, + 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67, + 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86, + 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2, + 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9, + 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09, + 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35, + 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20, + 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31, + 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d, + 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00, + 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0, + 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8, + 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f, + 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3, + 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc, + 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a, + 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4, + 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a, + 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93, + 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66, + 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b, + 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3, + 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99, + 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a, + 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c, + 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c, + 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46, + 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e, + 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c, + 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa, + 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e, + 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42, + 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2, + 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b, + 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64, + 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6, + 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66, + 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79, + 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73, + 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a, + 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1, + 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b, + 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a, + 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97, + 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4, + 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c, + 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a, + 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f, + 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27, + 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86, + 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65, + 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7, + 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78, + 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b, + 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35, + 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02, + 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34, + 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28, + 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71, + 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f, + 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e, + 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f, + 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf, + 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29, + 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2, + 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf, + 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0, + 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02, + 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f, + 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73, + 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff, + 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04, + 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00, + 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48, + 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01, + 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e, + 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f, + 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd, + 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38, + 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce, + 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3, + 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa, + 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2, + 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6, + 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00, + 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79, + 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd, + 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e, + 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69, + 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27, + 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c, + 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c, + 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4, + 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64, + 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4, + 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7, + 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e, + 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4, + 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8, + 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9, + 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2, + 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf, + 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d, + 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7, + 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63, + 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f, + 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74, + 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11, + 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca, + 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d, + 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1, + 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53, + 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c, + 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28, + 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50, + 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7, + 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c, + 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09, + 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48, + 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8, + 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39, + 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1, + 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1, + 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea, + 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14, + 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf, + 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c, + 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3, + 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41, + 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4, + 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74, + 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9, + 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7, + 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c, + 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1, + 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b, + 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa, + 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00, + 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3, + 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f, + 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70, + 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff, + 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18, + 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4, + 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7, + 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a, + 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7, + 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc, + 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9, + 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b, + 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2, + 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2, + 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf, + 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1, + 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5, + 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66, + 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f, + 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60, + 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d, + 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a, + 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f, + 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f, + 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f, + 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54, + 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29, + 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02, + 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35, + 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75, + 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56, + 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6, + 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83, + 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34, + 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7, + 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6, + 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8, + 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9, + 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f, + 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f, + 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f, + 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed, + 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68, + 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2, + 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16, + 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca, + 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8, + 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8, + 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6, + 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1, + 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80, + 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51, + 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41, + 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00, + 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff, + 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f, + 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93, + 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7, + 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7, + 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22, + 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75, + 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94, + 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf, + 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff, + 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe, + 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51, + 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c, + 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4, + 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce, + 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8, + 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea, + 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c, + 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6, + 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0, + 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43, + 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18, + 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2, + 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00, + 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9, + 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0, + 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9, + 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80, + 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf, + 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00, + 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5, + 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d, + 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c, + 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff, + 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd, + 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00, + 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64, + 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc, + 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8, + 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf, + 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90, + 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37, + 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea, + 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2, + 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb, + 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0, + 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93, + 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c, + 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d, + 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87, + 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c, + 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7, + 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9, + 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc, + 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07, + 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f, + 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a, + 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b, + 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3, + 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f, + 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0, + 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10, + 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5, + 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12, + 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde, + 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66, + 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0, + 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00, + 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff, + 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f, + 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff, + 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8, + 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a, + 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7, + 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03, + 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c, + 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7, + 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45, + 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1, + 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2, + 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7, + 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e, + 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd, + 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06, + 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06, + 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88, + 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a, + 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50, + 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34, + 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2, + 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c, + 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a, + 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63, + 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7, + 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0, + 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc, + 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff, + 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41, + 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29, + 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57, + 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6, + 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf, + 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7, + 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21, + 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff, + 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55, + 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92, + 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6, + 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75, + 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29, + 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2, + 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68, + 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd, + 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1, + 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd, + 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f, + 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3, + 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77, + 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d, + 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6, + 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52, + 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba, + 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f, + 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65, + 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe, + 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb, + 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0, + 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e, + 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29, + 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8, + 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae, + 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a, + 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56, + 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64, + 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9, + 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c, + 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57, + 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac, + 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8, + 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51, + 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26, + 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61, + 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53, + 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67, + 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb, + 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98, + 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda, + 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb, + 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad, + 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef, + 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38, + 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb, + 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd, + 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92, + 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a, + 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab, + 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e, + 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7, + 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61, + 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd, + 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff, + 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa, + 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02, + 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2, + 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff, + 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d, + 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91, + 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0, + 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00, + 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5, + 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86, + 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96, + 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7, + 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea, + 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2, + 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80, + 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7, + 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62, + 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff, + 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e, + 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69, + 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98, + 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01, + 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49, + 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c, + 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9, + 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a, + 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc, + 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd, + 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7, + 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe, + 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23, + 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38, + 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0, + 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5, + 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07, + 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c, + 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6, + 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b, + 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61, + 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00, + 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00, + 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee, + 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00, + 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00, + 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00, + 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00, + 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00, + 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00, + 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00, + 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00, + 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00, + 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00, + 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00, + 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00, + 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00, + 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00, + 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00, + 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00, + 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00, + 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00, + 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00, + 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00, + 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00, + 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00, + 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff, + 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00, + 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff, + 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a, + 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00, + 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01, + 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87, + 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69, + 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19, + 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00, + 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12, + 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06, + 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06, + 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3, + 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02, + 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e, + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d, + 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42, + 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2, + 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab, + 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2, + 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13, + 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b, + 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15, + 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00, + 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13, + 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65, + 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83, + 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b, + 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00, + 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a, + 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01, + 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73, + 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c, + 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73, + 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c, + 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33, + 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31, + 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31, + 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00, + 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02, + 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05, + 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09, + 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08, + 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04, + 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00, + 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01, + 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03, + 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04, + 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01, + 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86, + 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79, + 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55, + 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78, + 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b, + 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a, + 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29, + 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99, + 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5, + 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb, + 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48, + 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c, + 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e, + 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29, + 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a, + 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3, + 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4, + 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26, + 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e, + 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91, + 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29, + 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f, + 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b, + 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe, + 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf, + 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57, + 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01, + 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8, + 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6, + 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01, + 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36, + 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb, + 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15, + 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85, + 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef, + 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb, + 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54, + 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5, + 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90, + 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f, + 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c, + 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14, + 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c, + 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55, + 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10, + 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79, + 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6, + 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a, + 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9, + 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad, + 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11, + 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24, + 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e, + 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19, + 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8, + 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69, + 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf, + 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47, + 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6, + 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef, + 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0, + 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23, + 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25, + 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0, + 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77, + 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07, + 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c, + 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b, + 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb, + 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32, + 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf, + 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94, + 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a, + 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda, + 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d, + 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99, + 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7, + 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4, + 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde, + 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93, + 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e, + 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00, + 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc, + 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9, + 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a, + 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e, + 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16, + 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3, + 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5, + 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23, + 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc, + 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d, + 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98, + 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a, + 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9, + 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf, + 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8, + 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7, + 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c, + 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d, + 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f, + 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec, + 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2, + 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61, + 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2, + 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32, + 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa, + 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6, + 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8, + 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a, + 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07, + 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea, + 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61, + 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81, + 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0, + 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f, + 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11, + 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3, + 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a, + 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e, + 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1, + 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43, + 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10, + 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a, + 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98, + 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38, + 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71, + 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a, + 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78, + 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32, + 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06, + 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac, + 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61, + 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b, + 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54, + 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa, + 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d, + 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54, + 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32, + 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8, + 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68, + 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00, + 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09, + 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42, + 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52, + 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68, + 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19, + 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b, + 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1, + 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80, + 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37, + 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4, + 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8, + 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e, + 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d, + 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21, + 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9, + 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30, + 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e, + 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66, + 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b, + 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e, + 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6, + 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d, + 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31, + 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc, + 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a, + 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91, + 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c, + 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2, + 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92, + 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63, + 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f, + 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67, + 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e, + 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07, + 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6, + 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b, + 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7, + 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18, + 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e, + 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f, + 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4, + 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8, + 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8, + 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f, + 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9, + 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8, + 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d, + 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80, + 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e, + 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82, + 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7, + 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80, + 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a, + 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3, + 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6, + 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53, + 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4, + 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25, + 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b, + 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea, + 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a, + 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95, + 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83, + 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9, + 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca, + 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e, + 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42, + 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46, + 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca, + 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8, + 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b, + 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2, + 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82, + 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e, + 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49, + 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50, + 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d, + 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae, + 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6, + 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38, + 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb, + 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90, + 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00, + 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1, + 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9, + 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a, + 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5, + 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27, + 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5, + 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86, + 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64, + 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10, + 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a, + 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62, + 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6, + 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab, + 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69, + 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4, + 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8, + 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07, + 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8, + 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58, + 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4, + 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48, + 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf, + 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e, + 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b, + 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83, + 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1, + 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75, + 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0, + 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60, + 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff, + 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65, + 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80, + 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d, + 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a, + 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c, + 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30, + 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23, + 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc, + 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e, + 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3, + 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8, + 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27, + 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80, + 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08, + 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d, + 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f, + 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d, + 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60, + 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55, + 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa, + 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82, + 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00, + 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe, + 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff, + 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58, + 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b, + 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3, + 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0, + 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf, + 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54, + 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4, + 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c, + 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39, + 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16, + 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98, + 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f, + 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45, + 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb, + 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81, + 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47, + 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d, + 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e, + 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38, + 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff, + 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61, + 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd, + 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde, + 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab, + 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d, + 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5, + 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01, + 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde, + 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6, + 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1, + 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2, + 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf, + 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d, + 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f, + 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0, + 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4, + 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4, + 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65, + 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b, + 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb, + 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c, + 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68, + 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa, + 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51, + 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06, + 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83, + 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9, + 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a, + 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0, + 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7, + 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc, + 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18, + 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10, + 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5, + 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae, + 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80, + 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81, + 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95, + 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95, + 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d, + 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc, + 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29, + 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b, + 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e, + 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a, + 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9, + 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56, + 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc, + 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb, + 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9, + 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc, + 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4, + 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78, + 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1, + 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8, + 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e, + 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48, + 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15, + 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f, + 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90, + 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8, + 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44, + 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c, + 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29, + 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35, + 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d, + 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8, + 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0, + 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34, + 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30, + 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44, + 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36, + 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c, + 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44, + 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2, + 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96, + 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd, + 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35, + 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e, + 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa, + 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d, + 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9, + 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62, + 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3, + 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53, + 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2, + 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32, + 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6, + 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92, + 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9, + 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad, + 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99, + 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e, + 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45, + 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96, + 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3, + 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60, + 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d, + 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b, + 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76, + 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca, + 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14, + 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6, + 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01, + 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67, + 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c, + 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09, + 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90, + 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb, + 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c, + 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2, + 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7, + 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55, + 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73, + 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9, + 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd, + 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78, + 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77, + 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e, + 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a, + 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16, + 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d, + 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea, + 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13, + 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde, + 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7, + 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d, + 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd, + 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4, + 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95, + 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72, + 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93, + 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a, + 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87, + 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed, + 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10, + 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20, + 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98, + 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa, + 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea, + 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0, + 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23, + 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22, + 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24, + 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8, + 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/M5StickCPlus.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/M5StickCPlus.ino new file mode 100644 index 000000000..e6a43dfc4 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/M5StickCPlus.ino @@ -0,0 +1,61 @@ +// JPEGDEC example for Adafruit GFX displays + +#include "JPEGDEC.h" +// Sample image (truncated) containing a 320x240 Exif thumbnail +// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive. + +#include "thumb_test.h" +//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm +//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm + +#include + +#define DISPLAY_WIDTH 135 +#define DISPLAY_HEIGHT 240 + + +JPEGDEC jpeg; + +int JPEGDraw(JPEGDRAW *pDraw) +{ + + M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels); + return 1; +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + + Serial.println("Starting..."); + +M5.begin(); +M5.Lcd.fillScreen(TFT_BLACK); +} /* setup() */ + +void loop() { +int i; +long lTime; +int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH}; +int iCenterX[4] = {0,0,0,0}; +int iCenterY[4] = {0,0,0,0}; + + for (i=0; i<4; i++) + { + M5.Lcd.fillScreen(TFT_BLACK); + M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it + if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw)) + + { + lTime = micros(); + if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); } + { + lTime = micros() - lTime; + Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime); + } + jpeg.close(); + } + delay(2000); // pause between images + } // for i +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/batman.h new file mode 100644 index 000000000..4aeccde5a --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/batman.h @@ -0,0 +1,845 @@ +// +// batman-5 +// Data size = 13342 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t batman[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47, + 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01, + 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04, + 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11, + 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42, + 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2, + 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c, + 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00, + 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01, + 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71, + 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2, + 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00, + 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5, + 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44, + 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52, + 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44, + 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29, + 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a, + 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94, + 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8, + 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b, + 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92, + 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23, + 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75, + 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d, + 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d, + 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1, + 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48, + 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a, + 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0, + 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48, + 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea, + 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94, + 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0, + 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27, + 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd, + 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2, + 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51, + 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3, + 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38, + 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a, + 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d, + 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c, + 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd, + 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3, + 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64, + 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad, + 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7, + 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14, + 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed, + 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9, + 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51, + 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb, + 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a, + 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56, + 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82, + 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a, + 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f, + 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a, + 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82, + 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d, + 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10, + 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7, + 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99, + 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9, + 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35, + 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42, + 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90, + 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a, + 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f, + 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f, + 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94, + 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9, + 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a, + 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44, + 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a, + 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85, + 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed, + 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e, + 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04, + 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21, + 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e, + 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91, + 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0, + 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47, + 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48, + 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8, + 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8, + 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59, + 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3, + 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb, + 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b, + 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa, + 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b, + 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5, + 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b, + 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e, + 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d, + 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a, + 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15, + 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65, + 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0, + 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac, + 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89, + 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a, + 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71, + 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed, + 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3, + 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12, + 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13, + 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78, + 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9, + 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42, + 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7, + 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae, + 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25, + 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7, + 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69, + 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e, + 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7, + 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0, + 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2, + 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36, + 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4, + 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9, + 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21, + 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29, + 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43, + 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48, + 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79, + 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9, + 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29, + 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14, + 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd, + 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a, + 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04, + 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1, + 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25, + 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14, + 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8, + 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7, + 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7, + 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a, + 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93, + 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21, + 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7, + 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39, + 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8, + 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43, + 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79, + 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a, + 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96, + 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47, + 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b, + 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff, + 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa, + 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53, + 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51, + 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a, + 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b, + 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1, + 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b, + 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a, + 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef, + 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20, + 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b, + 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d, + 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95, + 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4, + 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48, + 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b, + 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e, + 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d, + 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00, + 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44, + 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec, + 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb, + 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f, + 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a, + 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46, + 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1, + 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93, + 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b, + 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22, + 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13, + 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46, + 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d, + 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2, + 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee, + 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90, + 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92, + 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a, + 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc, + 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12, + 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6, + 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6, + 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae, + 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4, + 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5, + 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28, + 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39, + 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e, + 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85, + 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a, + 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc, + 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2, + 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51, + 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77, + 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca, + 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c, + 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4, + 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58, + 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11, + 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e, + 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4, + 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08, + 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24, + 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49, + 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61, + 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca, + 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56, + 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64, + 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93, + 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea, + 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e, + 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43, + 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96, + 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d, + 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a, + 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f, + 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87, + 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88, + 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4, + 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf, + 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00, + 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7, + 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72, + 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8, + 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25, + 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24, + 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb, + 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf, + 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80, + 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70, + 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa, + 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d, + 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d, + 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22, + 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28, + 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a, + 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8, + 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b, + 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63, + 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7, + 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77, + 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69, + 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24, + 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01, + 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75, + 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e, + 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6, + 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67, + 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71, + 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96, + 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a, + 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0, + 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68, + 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40, + 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8, + 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6, + 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f, + 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b, + 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33, + 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89, + 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44, + 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee, + 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5, + 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb, + 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4, + 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b, + 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0, + 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae, + 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec, + 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b, + 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff, + 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98, + 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e, + 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00, + 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb, + 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24, + 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82, + 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91, + 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53, + 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e, + 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee, + 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69, + 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93, + 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28, + 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12, + 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77, + 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5, + 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50, + 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22, + 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b, + 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58, + 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c, + 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42, + 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e, + 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4, + 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72, + 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94, + 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54, + 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05, + 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc, + 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35, + 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed, + 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12, + 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a, + 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f, + 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d, + 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1, + 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d, + 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f, + 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97, + 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c, + 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4, + 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a, + 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95, + 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5, + 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47, + 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3, + 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe, + 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a, + 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01, + 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29, + 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49, + 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68, + 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33, + 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c, + 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac, + 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00, + 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76, + 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa, + 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf, + 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb, + 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25, + 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53, + 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8, + 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51, + 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18, + 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39, + 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35, + 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c, + 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6, + 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4, + 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9, + 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7, + 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43, + 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c, + 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94, + 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8, + 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05, + 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf, + 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65, + 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f, + 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82, + 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b, + 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b, + 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3, + 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c, + 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15, + 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8, + 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24, + 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc, + 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c, + 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e, + 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba, + 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0, + 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3, + 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75, + 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2, + 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1, + 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11, + 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50, + 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e, + 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e, + 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c, + 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5, + 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4, + 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9, + 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07, + 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c, + 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63, + 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e, + 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57, + 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a, + 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc, + 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47, + 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd, + 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b, + 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60, + 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b, + 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7, + 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb, + 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82, + 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07, + 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99, + 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f, + 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32, + 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f, + 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6, + 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95, + 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78, + 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d, + 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16, + 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5, + 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e, + 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4, + 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94, + 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82, + 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27, + 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97, + 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb, + 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74, + 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74, + 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1, + 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21, + 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4, + 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c, + 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b, + 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75, + 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc, + 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b, + 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6, + 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d, + 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16, + 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda, + 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76, + 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a, + 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f, + 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f, + 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f, + 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6, + 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71, + 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1, + 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8, + 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f, + 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c, + 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f, + 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6, + 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e, + 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae, + 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70, + 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf, + 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17, + 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30, + 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03, + 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f, + 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b, + 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24, + 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e, + 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77, + 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc, + 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d, + 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d, + 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9, + 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43, + 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef, + 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3, + 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0, + 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1, + 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd, + 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b, + 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef, + 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76, + 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1, + 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a, + 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61, + 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e, + 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1, + 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5, + 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39, + 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00, + 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d, + 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9, + 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3, + 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e, + 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f, + 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b, + 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4, + 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0, + 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab, + 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6, + 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e, + 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef, + 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad, + 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24, + 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d, + 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91, + 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4, + 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61, + 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69, + 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe, + 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55, + 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d, + 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9, + 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17, + 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7, + 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c, + 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd, + 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c, + 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38, + 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1, + 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00, + 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf, + 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb, + 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4, + 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1, + 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9, + 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd, + 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97, + 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53, + 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54, + 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15, + 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e, + 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30, + 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5, + 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb, + 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8, + 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc, + 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7, + 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc, + 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83, + 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae, + 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2, + 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2, + 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1, + 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41, + 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a, + 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c, + 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4, + 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96, + 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69, + 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe, + 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37, + 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c, + 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d, + 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2, + 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a, + 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f, + 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e, + 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a, + 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57, + 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b, + 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b, + 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a, + 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba, + 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6, + 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36, + 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5, + 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97, + 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1, + 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8, + 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f, + 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd, + 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d, + 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2, + 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00, + 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5, + 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01, + 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca, + 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0, + 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83, + 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90, + 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd, + 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b, + 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17, + 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99, + 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52, + 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93, + 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d, + 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63, + 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74, + 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11, + 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb, + 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97, + 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b, + 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c, + 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4, + 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f, + 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b, + 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0, + 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33, + 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c, + 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f, + 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe, + 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c, + 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b, + 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76, + 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20, + 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6, + 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d, + 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87, + 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a, + 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0, + 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee, + 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24, + 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5, + 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a, + 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9, + 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78, + 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1, + 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15, + 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a, + 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa, + 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7, + 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f, + 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc, + 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b, + 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b, + 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8, + 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40, + 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa, + 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67, + 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81, + 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1, + 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5, + 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90, + 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01, + 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce, + 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad, + 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8, + 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff, + 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c, + 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23, + 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99, + 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea, + 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23, + 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37, + 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20, + 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23, + 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3, + 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3, + 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d, + 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65, + 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70, + 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78, + 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde, + 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d, + 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28, + 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c, + 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff, + 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4, + 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72, + 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f, + 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b, + 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d, + 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69, + 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87, + 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba, + 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59, + 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90, + 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5, + 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc, + 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32, + 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47, + 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84, + 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2, + 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb, + 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59, + 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28, + 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb, + 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d, + 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68, + 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e, + 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19, + 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96, + 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5, + 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20, + 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f, + 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72, + 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad, + 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5, + 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17, + 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40, + 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2, + 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8, + 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83, + 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81, + 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb, + 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35, + 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53, + 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9, + 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20, + 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32, + 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11, + 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46, + 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0, + 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02, + 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7, + 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe, + 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69, + 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba, + 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a, + 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47, + 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d, + 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93, + 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45, + 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43, + 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2, + 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74, + 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6, + 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb, + 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3, + 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1, + 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78, + 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36, + 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e, + 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b, + 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58, + 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49, + 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c, + 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94, + 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72, + 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22, + 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0, + 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f, + 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde, + 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6, + 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11, + 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac, + 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b, + 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71, + 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1, + 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1, + 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6, + 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71, + 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b, + 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3, + 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05, + 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38, + 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04, + 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad, + 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5, + 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43, + 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27, + 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86, + 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b, + 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea, + 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7, + 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40, + 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b, + 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94, + 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d, + 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1, + 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9, + 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87, + 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf, + 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4, + 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f, + 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc, + 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4, + 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a, + 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5, + 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c, + 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6, + 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91, + 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23, + 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24, + 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6, + 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1, + 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42, + 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9, + 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed, + 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11, + 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34, + 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44, + 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74, + 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23, + 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c, + 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee, + 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5, + 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b, + 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94, + 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12, + 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02, + 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18, + 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce, + 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01, + 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb, + 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe, + 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e, + 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63, + 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a, + 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94, + 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19, + 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e, + 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e, + 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1, + 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea, + 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0, + 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54, + 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a, + 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94, + 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11, + 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a, + 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12, + 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5, + 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29, + 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51, + 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/ncc1701.h new file mode 100644 index 000000000..d10383d16 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/ncc1701.h @@ -0,0 +1,318 @@ +// +// ncc1701 +// Data size = 4912 bytes +// +// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp +// +// for non-Arduino builds... +#ifndef PROGMEM +#define PROGMEM +#endif +const uint8_t ncc1701[] PROGMEM = { + 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48, + 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, + 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, + 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, + 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, + 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, + 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, + 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, + 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a, + 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09, + 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21, + 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15, + 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2, + 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4, + 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13, + 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a, + 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5, + 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb, + 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4, + 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8, + 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40, + 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29, + 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58, + 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b, + 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14, + 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0, + 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a, + 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61, + 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb, + 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8, + 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87, + 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94, + 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7, + 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5, + 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f, + 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb, + 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14, + 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47, + 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42, + 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b, + 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79, + 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74, + 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7, + 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe, + 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e, + 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70, + 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55, + 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd, + 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf, + 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25, + 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9, + 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2, + 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b, + 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77, + 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed, + 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e, + 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c, + 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70, + 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb, + 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98, + 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e, + 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d, + 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7, + 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2, + 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19, + 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21, + 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea, + 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5, + 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86, + 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4, + 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7, + 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb, + 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5, + 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4, + 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69, + 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4, + 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d, + 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0, + 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e, + 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53, + 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5, + 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8, + 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12, + 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96, + 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6, + 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36, + 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f, + 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25, + 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55, + 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae, + 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e, + 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27, + 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69, + 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90, + 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6, + 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6, + 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3, + 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b, + 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d, + 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38, + 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad, + 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62, + 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3, + 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba, + 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2, + 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6, + 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2, + 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf, + 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f, + 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9, + 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc, + 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92, + 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89, + 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f, + 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d, + 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94, + 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5, + 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16, + 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90, + 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64, + 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1, + 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b, + 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93, + 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63, + 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6, + 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19, + 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0, + 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76, + 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15, + 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd, + 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71, + 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7, + 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2, + 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9, + 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92, + 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d, + 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c, + 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae, + 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09, + 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb, + 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e, + 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20, + 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09, + 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53, + 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d, + 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7, + 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31, + 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b, + 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52, + 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e, + 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74, + 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86, + 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b, + 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4, + 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9, + 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae, + 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92, + 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1, + 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2, + 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04, + 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff, + 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1, + 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29, + 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9, + 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33, + 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51, + 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec, + 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99, + 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35, + 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4, + 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19, + 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72, + 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42, + 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2, + 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61, + 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb, + 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a, + 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d, + 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e, + 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce, + 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94, + 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b, + 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b, + 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c, + 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d, + 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05, + 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b, + 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a, + 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b, + 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95, + 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37, + 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70, + 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf, + 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3, + 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f, + 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50, + 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb, + 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0, + 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d, + 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d, + 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4, + 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a, + 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10, + 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5, + 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87, + 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7, + 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00, + 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3, + 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73, + 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b, + 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c, + 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae, + 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16, + 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10, + 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9, + 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47, + 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c, + 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba, + 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00, + 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b, + 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f, + 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68, + 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8, + 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23, + 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e, + 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d, + 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b, + 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92, + 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe, + 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca, + 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c, + 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35, + 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb, + 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60, + 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31, + 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f, + 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18, + 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15, + 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9, + 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4, + 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0, + 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d, + 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14, + 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15, + 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3, + 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1, + 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0, + 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23, + 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2, + 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7, + 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd, + 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11, + 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3, + 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00, + 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54, + 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c, + 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09, + 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b, + 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53, + 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5, + 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a, + 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c, + 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03, + 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69, + 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31, + 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0, + 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6, + 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b, + 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0, + 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7, + 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52, + 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30, + 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25, + 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78, + 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5, + 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c, + 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28, + 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57, + 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda, + 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed, + 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56, + 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4, + 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71, + 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2, + 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e, + 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb, + 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b, + 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6, + 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21, + 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0, + 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9, + 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c, + 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47, + 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45, + 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73, + 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60, + 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5, + 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51, + 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/thumb_test.h new file mode 100644 index 000000000..0b43b0074 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/thumb_test.h @@ -0,0 +1,1286 @@ +// +// thumb_test +// +const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a, + 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0, + 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f, + 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00, + 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06, + 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00, + 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d, + 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45, + 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a, + 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02, + 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00, + 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00, + 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00, + 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01, + 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00, + 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90, + 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00, + 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00, + 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00, + 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00, + 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39, + 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30, + 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00, + 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00, + 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, + 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56, + 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07, + 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40, + 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01, + 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98, + 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01, + 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48, + 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11, + 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22, + 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83, + 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93, + 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22, + 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11, + 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01, + 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61, + 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1, + 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27, + 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88, + 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, + 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, + 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02, + 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61, + 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52, + 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a, + 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47, + 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67, + 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86, + 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2, + 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9, + 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09, + 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35, + 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20, + 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31, + 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d, + 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00, + 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0, + 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8, + 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f, + 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3, + 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc, + 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a, + 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4, + 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a, + 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93, + 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66, + 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b, + 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3, + 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99, + 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a, + 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c, + 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c, + 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46, + 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e, + 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c, + 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa, + 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e, + 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42, + 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2, + 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b, + 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64, + 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6, + 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66, + 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79, + 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73, + 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a, + 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1, + 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b, + 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a, + 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97, + 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4, + 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c, + 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a, + 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f, + 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27, + 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86, + 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65, + 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7, + 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78, + 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b, + 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35, + 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02, + 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34, + 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28, + 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71, + 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f, + 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e, + 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f, + 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf, + 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29, + 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2, + 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf, + 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0, + 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02, + 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f, + 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73, + 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff, + 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04, + 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00, + 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48, + 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01, + 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e, + 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f, + 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd, + 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38, + 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce, + 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3, + 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa, + 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2, + 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6, + 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00, + 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79, + 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd, + 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e, + 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69, + 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27, + 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c, + 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c, + 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4, + 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64, + 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4, + 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7, + 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e, + 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4, + 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8, + 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9, + 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2, + 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf, + 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d, + 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7, + 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63, + 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f, + 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74, + 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11, + 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca, + 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d, + 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1, + 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53, + 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c, + 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28, + 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50, + 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7, + 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c, + 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09, + 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48, + 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8, + 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39, + 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1, + 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1, + 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea, + 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14, + 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf, + 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c, + 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3, + 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41, + 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4, + 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74, + 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9, + 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7, + 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c, + 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1, + 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b, + 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa, + 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00, + 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3, + 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f, + 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70, + 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff, + 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18, + 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4, + 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7, + 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a, + 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7, + 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc, + 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9, + 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b, + 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2, + 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2, + 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf, + 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1, + 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5, + 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66, + 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f, + 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60, + 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d, + 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a, + 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f, + 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f, + 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f, + 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54, + 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29, + 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02, + 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35, + 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75, + 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56, + 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6, + 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83, + 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34, + 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7, + 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6, + 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8, + 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9, + 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f, + 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f, + 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f, + 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed, + 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68, + 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2, + 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16, + 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca, + 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8, + 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8, + 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6, + 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1, + 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80, + 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51, + 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41, + 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00, + 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff, + 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f, + 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93, + 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7, + 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7, + 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22, + 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75, + 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94, + 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf, + 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff, + 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe, + 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51, + 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c, + 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4, + 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce, + 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8, + 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea, + 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c, + 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6, + 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0, + 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43, + 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18, + 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2, + 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00, + 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9, + 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0, + 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9, + 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80, + 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf, + 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00, + 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5, + 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d, + 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c, + 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff, + 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd, + 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00, + 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64, + 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc, + 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8, + 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf, + 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90, + 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37, + 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea, + 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2, + 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb, + 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0, + 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93, + 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c, + 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d, + 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87, + 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c, + 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7, + 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9, + 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc, + 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07, + 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f, + 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a, + 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b, + 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3, + 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f, + 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0, + 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10, + 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5, + 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12, + 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde, + 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66, + 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0, + 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00, + 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff, + 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f, + 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff, + 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8, + 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a, + 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7, + 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03, + 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c, + 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7, + 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45, + 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1, + 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2, + 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7, + 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e, + 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd, + 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06, + 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06, + 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88, + 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a, + 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50, + 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34, + 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2, + 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c, + 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a, + 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63, + 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7, + 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0, + 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc, + 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff, + 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41, + 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29, + 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57, + 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6, + 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf, + 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7, + 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21, + 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff, + 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55, + 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92, + 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6, + 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75, + 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29, + 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2, + 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68, + 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd, + 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1, + 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd, + 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f, + 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3, + 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77, + 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d, + 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6, + 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52, + 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba, + 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f, + 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65, + 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe, + 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb, + 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0, + 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e, + 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29, + 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8, + 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae, + 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a, + 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56, + 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64, + 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9, + 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c, + 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57, + 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac, + 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8, + 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51, + 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26, + 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61, + 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53, + 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67, + 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb, + 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98, + 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda, + 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb, + 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad, + 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef, + 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38, + 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb, + 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd, + 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92, + 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a, + 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab, + 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e, + 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7, + 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61, + 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd, + 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff, + 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa, + 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02, + 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2, + 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff, + 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d, + 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91, + 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0, + 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00, + 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5, + 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86, + 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96, + 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7, + 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea, + 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2, + 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80, + 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7, + 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62, + 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff, + 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e, + 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69, + 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98, + 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01, + 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49, + 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c, + 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9, + 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a, + 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc, + 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd, + 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7, + 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe, + 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23, + 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38, + 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0, + 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5, + 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07, + 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c, + 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6, + 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b, + 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61, + 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00, + 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00, + 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee, + 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00, + 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00, + 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00, + 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00, + 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00, + 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00, + 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00, + 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00, + 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00, + 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00, + 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00, + 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00, + 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00, + 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00, + 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00, + 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00, + 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00, + 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00, + 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00, + 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00, + 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00, + 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00, + 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff, + 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00, + 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff, + 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a, + 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00, + 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01, + 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87, + 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69, + 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19, + 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00, + 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12, + 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06, + 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06, + 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3, + 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02, + 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e, + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d, + 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42, + 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2, + 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab, + 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2, + 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13, + 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b, + 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15, + 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00, + 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13, + 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65, + 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83, + 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b, + 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00, + 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a, + 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01, + 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73, + 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c, + 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73, + 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c, + 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33, + 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31, + 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31, + 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00, + 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02, + 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05, + 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09, + 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08, + 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04, + 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00, + 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01, + 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03, + 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04, + 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01, + 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86, + 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79, + 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55, + 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78, + 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b, + 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a, + 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29, + 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99, + 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5, + 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb, + 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48, + 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c, + 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e, + 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29, + 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a, + 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3, + 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4, + 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26, + 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e, + 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91, + 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29, + 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f, + 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b, + 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe, + 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf, + 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57, + 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01, + 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8, + 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6, + 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01, + 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36, + 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb, + 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15, + 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85, + 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef, + 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb, + 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54, + 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5, + 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90, + 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f, + 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c, + 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14, + 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c, + 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55, + 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10, + 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79, + 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6, + 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a, + 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9, + 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad, + 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11, + 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24, + 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e, + 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19, + 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8, + 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69, + 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf, + 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47, + 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6, + 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef, + 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0, + 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23, + 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25, + 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0, + 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77, + 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07, + 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c, + 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b, + 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb, + 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32, + 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf, + 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94, + 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a, + 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda, + 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d, + 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99, + 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7, + 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4, + 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde, + 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93, + 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e, + 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00, + 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc, + 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9, + 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a, + 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e, + 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16, + 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3, + 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5, + 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23, + 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc, + 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d, + 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98, + 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a, + 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9, + 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf, + 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8, + 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7, + 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c, + 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d, + 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f, + 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec, + 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2, + 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61, + 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2, + 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32, + 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa, + 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6, + 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8, + 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a, + 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07, + 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea, + 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61, + 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81, + 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0, + 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f, + 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11, + 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3, + 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a, + 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e, + 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1, + 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43, + 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10, + 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a, + 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98, + 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38, + 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71, + 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a, + 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78, + 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32, + 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06, + 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac, + 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61, + 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b, + 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54, + 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa, + 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d, + 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54, + 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32, + 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8, + 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68, + 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00, + 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09, + 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42, + 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52, + 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68, + 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19, + 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b, + 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1, + 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80, + 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37, + 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4, + 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8, + 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e, + 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d, + 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21, + 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9, + 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30, + 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e, + 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66, + 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b, + 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e, + 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6, + 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d, + 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31, + 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc, + 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a, + 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91, + 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c, + 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2, + 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92, + 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63, + 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f, + 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67, + 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e, + 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07, + 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6, + 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b, + 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7, + 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18, + 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e, + 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f, + 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4, + 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8, + 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8, + 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f, + 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9, + 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8, + 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d, + 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80, + 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e, + 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82, + 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7, + 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80, + 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a, + 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3, + 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6, + 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53, + 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4, + 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25, + 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b, + 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea, + 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a, + 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95, + 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83, + 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9, + 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca, + 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e, + 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42, + 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46, + 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca, + 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8, + 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b, + 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2, + 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82, + 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e, + 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49, + 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50, + 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d, + 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae, + 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6, + 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38, + 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb, + 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90, + 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00, + 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1, + 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9, + 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a, + 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5, + 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27, + 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5, + 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86, + 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64, + 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10, + 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a, + 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62, + 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6, + 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab, + 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69, + 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4, + 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8, + 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07, + 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8, + 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58, + 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4, + 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48, + 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf, + 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e, + 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b, + 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83, + 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1, + 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75, + 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0, + 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60, + 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff, + 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65, + 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80, + 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d, + 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a, + 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c, + 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30, + 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23, + 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc, + 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e, + 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3, + 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8, + 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27, + 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80, + 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08, + 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d, + 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f, + 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d, + 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60, + 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55, + 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa, + 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82, + 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00, + 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe, + 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff, + 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58, + 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b, + 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3, + 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0, + 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf, + 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54, + 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4, + 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c, + 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39, + 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16, + 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98, + 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f, + 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45, + 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb, + 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81, + 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47, + 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d, + 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e, + 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38, + 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff, + 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61, + 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd, + 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde, + 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab, + 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d, + 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5, + 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01, + 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde, + 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6, + 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1, + 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2, + 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf, + 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d, + 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f, + 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0, + 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4, + 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4, + 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65, + 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b, + 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb, + 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c, + 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68, + 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa, + 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51, + 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06, + 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83, + 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9, + 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a, + 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0, + 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7, + 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc, + 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18, + 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10, + 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5, + 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae, + 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80, + 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81, + 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95, + 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95, + 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d, + 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc, + 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29, + 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b, + 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e, + 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a, + 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9, + 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56, + 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc, + 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb, + 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9, + 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc, + 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4, + 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78, + 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1, + 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8, + 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e, + 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48, + 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15, + 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f, + 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90, + 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8, + 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44, + 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c, + 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29, + 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35, + 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d, + 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8, + 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0, + 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34, + 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30, + 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44, + 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36, + 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c, + 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44, + 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2, + 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96, + 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd, + 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35, + 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e, + 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa, + 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d, + 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9, + 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62, + 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3, + 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53, + 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2, + 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32, + 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6, + 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92, + 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9, + 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad, + 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99, + 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e, + 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45, + 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96, + 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3, + 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60, + 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d, + 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b, + 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76, + 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca, + 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14, + 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6, + 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01, + 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67, + 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c, + 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09, + 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90, + 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb, + 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c, + 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2, + 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7, + 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55, + 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73, + 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9, + 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd, + 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78, + 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77, + 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e, + 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a, + 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16, + 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d, + 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea, + 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13, + 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde, + 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7, + 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d, + 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd, + 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4, + 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95, + 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72, + 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93, + 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a, + 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87, + 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed, + 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10, + 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20, + 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98, + 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa, + 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea, + 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0, + 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23, + 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22, + 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24, + 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8, + 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc}; diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/README.md b/lib/libesp32/JPEGDEC/examples/M5Stack/README.md new file mode 100644 index 000000000..0e61c399b --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/M5Stack/README.md @@ -0,0 +1,34 @@ +These are slightly modified versions of the adafruit_gfx_demo. +Extra Images were included: +The Star Ship ENTERPRISE "NCC-1701" from http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm +And an image of "Batman" from https://all-free-download.com/free-vector/download/batman-5_132955.html + +The JPEGDraw function was changed for use with the M5Stack devices. + + M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels); + +Another small change was to add a check if the image had a thumbnail or not, and call the correct jpg decode routine. + if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); } + +To display the other images, uncomment the image you want to display, comment the others. +Also uncomment the line with the name of the image you want to display, and comment the others. +if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw)) + //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw)) + +M5Stack, M5Core2 and M5Fire sketches are almost the same, the difference is how you start the screen on the Fire, and M5Core2. +M5StickC and M5StickCPlus are the same with the difference being which library is used (either M5StickC.h or M5StickkCPlus.h) and display size between the two devices. + +Tested on: +M5Stack Gray +M5Stack Fire +M5StickC +M5StickC Plus +M5Core2 + +Untested: (should work with M5Stack, but unable to test) +M5Stack Basic (should work) +M5Go Lite +M5Go + +Feb 22, 2021 - LeRoy Miller, KD8BXP diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/batman.jpg b/lib/libesp32/JPEGDEC/examples/M5Stack/batman.jpg new file mode 100644 index 0000000000000000000000000000000000000000..228f7384fcfc6c7f4aae270972df59cc003d90a4 GIT binary patch literal 13342 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 literal 0 HcmV?d00001 diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/ncc1701.jpg b/lib/libesp32/JPEGDEC/examples/M5Stack/ncc1701.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92af83686f16ab0b49398b4b1c5b0fe0b78ad9a4 GIT binary patch literal 4912 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 +// Sample image (truncated) containing a 320x240 Exif thumbnail +#include "thumb_test.h" + +#include "SPI.h" +#include "Adafruit_GFX.h" +#include "Adafruit_ILI9341.h" + +#define DISPLAY_WIDTH 320 +#define DISPLAY_HEIGHT 240 + +// PyPortal-specific pins +#define SD_CS 32 // SD card select +#define TFT_D0 34 // Data bit 0 pin (MUST be on PORT byte boundary) +#define TFT_WR 26 // Write-strobe pin (CCL-inverted timer output) +#define TFT_DC 10 // Data/command pin +#define TFT_CS 11 // Chip-select pin +#define TFT_RST 24 // Reset pin +#define TFT_RD 9 // Read-strobe pin +#define TFT_BACKLIGHT 25 // Backlight enable (active high) + +Adafruit_ILI9341 tft(tft8bitbus, TFT_D0, TFT_WR, TFT_DC, TFT_CS, TFT_RST, TFT_RD); +JPEGDEC jpeg; + +int JPEGDraw(JPEGDRAW *pDraw) +{ +// Serial.printf("jpeg draw: x,y=%d,%d, cx,cy = %d,%d\n", pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight); +// Serial.printf("Pixel 0 = 0x%04x\n", pDraw->pPixels[0]); + tft.dmaWait(); // Wait for prior writePixels() to finish + tft.setAddrWindow(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight); + tft.writePixels(pDraw->pPixels, pDraw->iWidth * pDraw->iHeight, true, false); // Use DMA, big-endian + return 1; +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + //while (!Serial); + Serial.println("Starting..."); + pinMode(TFT_BACKLIGHT, OUTPUT); + digitalWrite(TFT_BACKLIGHT, HIGH); // Backlight on + + // put your setup code here, to run once: + tft.begin(); + tft.setRotation(3); // PyPortal native orientation +} /* setup() */ + +void loop() { +int i; +long lTime; +int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH}; +int iCenterX[4] = {0,80,120,140}; +int iCenterY[4] = {0,60,90,105}; + + for (i=0; i<4; i++) + { + tft.fillScreen(ILI9341_BLACK); + tft.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it + if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw)) + { + lTime = micros(); + if (jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i])) + { + lTime = micros() - lTime; + Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime); + } + jpeg.close(); + } + delay(2000); // pause between images + } // for i +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/thumb_test.h b/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/thumb_test.h new file mode 100644 index 000000000..0b43b0074 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/thumb_test.h @@ -0,0 +1,1286 @@ +// +// thumb_test +// +const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a, + 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0, + 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f, + 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00, + 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06, + 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00, + 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d, + 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45, + 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a, + 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02, + 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00, + 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00, + 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00, + 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01, + 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00, + 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90, + 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00, + 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00, + 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00, + 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00, + 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39, + 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30, + 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00, + 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00, + 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, + 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56, + 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07, + 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40, + 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01, + 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98, + 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01, + 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48, + 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11, + 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22, + 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83, + 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93, + 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22, + 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11, + 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01, + 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61, + 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1, + 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27, + 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88, + 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, + 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, + 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02, + 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61, + 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52, + 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a, + 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47, + 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67, + 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86, + 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2, + 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9, + 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09, + 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35, + 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20, + 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31, + 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d, + 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00, + 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0, + 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8, + 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f, + 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3, + 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc, + 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a, + 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4, + 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a, + 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93, + 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66, + 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b, + 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3, + 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99, + 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a, + 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c, + 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c, + 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46, + 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e, + 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c, + 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa, + 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e, + 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42, + 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2, + 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b, + 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64, + 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6, + 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66, + 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79, + 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73, + 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a, + 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1, + 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b, + 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a, + 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97, + 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4, + 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c, + 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a, + 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f, + 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27, + 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86, + 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65, + 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7, + 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78, + 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b, + 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35, + 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02, + 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34, + 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28, + 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71, + 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f, + 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e, + 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f, + 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf, + 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29, + 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2, + 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf, + 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0, + 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02, + 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f, + 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73, + 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff, + 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04, + 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00, + 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48, + 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01, + 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e, + 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f, + 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd, + 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38, + 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce, + 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3, + 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa, + 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2, + 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6, + 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00, + 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79, + 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd, + 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e, + 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69, + 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27, + 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c, + 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c, + 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4, + 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64, + 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4, + 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7, + 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e, + 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4, + 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8, + 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9, + 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2, + 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf, + 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d, + 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7, + 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63, + 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f, + 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74, + 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11, + 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca, + 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d, + 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1, + 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53, + 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c, + 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28, + 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50, + 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7, + 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c, + 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09, + 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48, + 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8, + 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39, + 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1, + 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1, + 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea, + 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14, + 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf, + 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c, + 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3, + 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41, + 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4, + 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74, + 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9, + 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7, + 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c, + 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1, + 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b, + 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa, + 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00, + 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3, + 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f, + 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70, + 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff, + 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18, + 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4, + 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7, + 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a, + 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7, + 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc, + 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9, + 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b, + 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2, + 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2, + 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf, + 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1, + 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5, + 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66, + 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f, + 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60, + 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d, + 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a, + 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f, + 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f, + 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f, + 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54, + 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29, + 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02, + 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35, + 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75, + 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56, + 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6, + 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83, + 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34, + 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7, + 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6, + 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8, + 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9, + 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f, + 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f, + 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f, + 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed, + 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68, + 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2, + 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16, + 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca, + 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8, + 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8, + 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6, + 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1, + 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80, + 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51, + 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41, + 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00, + 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff, + 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f, + 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93, + 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7, + 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7, + 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22, + 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75, + 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94, + 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf, + 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff, + 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe, + 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51, + 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c, + 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4, + 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce, + 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8, + 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea, + 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c, + 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6, + 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0, + 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43, + 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18, + 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2, + 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00, + 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9, + 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0, + 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9, + 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80, + 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf, + 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00, + 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5, + 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d, + 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c, + 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff, + 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd, + 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00, + 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64, + 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc, + 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8, + 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf, + 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90, + 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37, + 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea, + 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2, + 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb, + 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0, + 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93, + 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c, + 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d, + 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87, + 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c, + 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7, + 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9, + 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc, + 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07, + 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f, + 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a, + 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b, + 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3, + 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f, + 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0, + 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10, + 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5, + 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12, + 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde, + 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66, + 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0, + 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00, + 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff, + 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f, + 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff, + 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8, + 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a, + 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7, + 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03, + 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c, + 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7, + 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45, + 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1, + 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2, + 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7, + 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e, + 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd, + 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06, + 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06, + 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88, + 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a, + 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50, + 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34, + 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2, + 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c, + 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a, + 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63, + 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7, + 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0, + 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc, + 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff, + 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41, + 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29, + 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57, + 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6, + 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf, + 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7, + 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21, + 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff, + 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55, + 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92, + 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6, + 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75, + 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29, + 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2, + 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68, + 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd, + 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1, + 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd, + 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f, + 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3, + 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77, + 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d, + 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6, + 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52, + 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba, + 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f, + 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65, + 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe, + 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb, + 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0, + 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e, + 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29, + 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8, + 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae, + 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a, + 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56, + 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64, + 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9, + 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c, + 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57, + 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac, + 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8, + 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51, + 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26, + 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61, + 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53, + 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67, + 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb, + 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98, + 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda, + 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb, + 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad, + 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef, + 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38, + 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb, + 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd, + 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92, + 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a, + 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab, + 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e, + 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7, + 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61, + 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd, + 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff, + 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa, + 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02, + 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2, + 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff, + 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d, + 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91, + 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0, + 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00, + 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5, + 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86, + 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96, + 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7, + 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea, + 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2, + 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80, + 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7, + 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62, + 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff, + 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e, + 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69, + 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98, + 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01, + 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49, + 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c, + 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9, + 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a, + 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc, + 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd, + 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7, + 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe, + 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23, + 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38, + 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0, + 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5, + 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07, + 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c, + 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6, + 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b, + 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61, + 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00, + 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00, + 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee, + 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00, + 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00, + 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00, + 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00, + 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00, + 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00, + 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00, + 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00, + 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00, + 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00, + 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00, + 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00, + 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00, + 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00, + 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00, + 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00, + 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00, + 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00, + 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00, + 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00, + 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00, + 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00, + 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff, + 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00, + 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff, + 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a, + 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00, + 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01, + 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87, + 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69, + 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19, + 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00, + 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12, + 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06, + 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06, + 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3, + 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02, + 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e, + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d, + 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42, + 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2, + 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab, + 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2, + 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13, + 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b, + 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15, + 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00, + 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13, + 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65, + 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83, + 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b, + 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00, + 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a, + 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01, + 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73, + 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c, + 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73, + 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c, + 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33, + 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31, + 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31, + 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00, + 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02, + 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05, + 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09, + 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08, + 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04, + 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00, + 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01, + 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03, + 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04, + 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01, + 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86, + 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79, + 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55, + 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78, + 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b, + 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a, + 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29, + 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99, + 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5, + 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb, + 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48, + 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c, + 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e, + 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29, + 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a, + 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3, + 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4, + 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26, + 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e, + 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91, + 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29, + 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f, + 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b, + 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe, + 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf, + 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57, + 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01, + 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8, + 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6, + 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01, + 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36, + 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb, + 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15, + 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85, + 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef, + 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb, + 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54, + 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5, + 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90, + 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f, + 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c, + 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14, + 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c, + 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55, + 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10, + 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79, + 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6, + 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a, + 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9, + 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad, + 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11, + 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24, + 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e, + 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19, + 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8, + 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69, + 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf, + 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47, + 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6, + 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef, + 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0, + 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23, + 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25, + 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0, + 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77, + 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07, + 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c, + 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b, + 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb, + 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32, + 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf, + 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94, + 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a, + 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda, + 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d, + 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99, + 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7, + 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4, + 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde, + 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93, + 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e, + 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00, + 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc, + 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9, + 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a, + 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e, + 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16, + 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3, + 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5, + 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23, + 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc, + 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d, + 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98, + 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a, + 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9, + 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf, + 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8, + 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7, + 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c, + 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d, + 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f, + 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec, + 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2, + 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61, + 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2, + 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32, + 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa, + 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6, + 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8, + 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a, + 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07, + 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea, + 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61, + 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81, + 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0, + 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f, + 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11, + 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3, + 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a, + 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e, + 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1, + 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43, + 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10, + 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a, + 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98, + 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38, + 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71, + 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a, + 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78, + 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32, + 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06, + 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac, + 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61, + 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b, + 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54, + 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa, + 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d, + 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54, + 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32, + 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8, + 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68, + 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00, + 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09, + 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42, + 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52, + 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68, + 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19, + 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b, + 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1, + 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80, + 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37, + 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4, + 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8, + 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e, + 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d, + 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21, + 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9, + 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30, + 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e, + 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66, + 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b, + 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e, + 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6, + 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d, + 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31, + 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc, + 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a, + 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91, + 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c, + 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2, + 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92, + 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63, + 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f, + 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67, + 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e, + 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07, + 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6, + 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b, + 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7, + 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18, + 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e, + 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f, + 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4, + 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8, + 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8, + 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f, + 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9, + 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8, + 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d, + 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80, + 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e, + 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82, + 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7, + 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80, + 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a, + 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3, + 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6, + 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53, + 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4, + 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25, + 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b, + 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea, + 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a, + 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95, + 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83, + 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9, + 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca, + 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e, + 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42, + 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46, + 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca, + 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8, + 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b, + 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2, + 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82, + 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e, + 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49, + 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50, + 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d, + 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae, + 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6, + 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38, + 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb, + 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90, + 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00, + 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1, + 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9, + 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a, + 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5, + 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27, + 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5, + 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86, + 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64, + 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10, + 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a, + 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62, + 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6, + 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab, + 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69, + 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4, + 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8, + 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07, + 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8, + 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58, + 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4, + 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48, + 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf, + 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e, + 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b, + 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83, + 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1, + 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75, + 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0, + 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60, + 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff, + 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65, + 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80, + 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d, + 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a, + 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c, + 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30, + 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23, + 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc, + 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e, + 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3, + 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8, + 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27, + 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80, + 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08, + 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d, + 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f, + 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d, + 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60, + 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55, + 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa, + 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82, + 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00, + 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe, + 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff, + 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58, + 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b, + 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3, + 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0, + 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf, + 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54, + 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4, + 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c, + 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39, + 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16, + 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98, + 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f, + 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45, + 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb, + 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81, + 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47, + 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d, + 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e, + 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38, + 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff, + 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61, + 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd, + 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde, + 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab, + 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d, + 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5, + 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01, + 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde, + 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6, + 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1, + 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2, + 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf, + 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d, + 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f, + 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0, + 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4, + 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4, + 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65, + 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b, + 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb, + 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c, + 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68, + 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa, + 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51, + 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06, + 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83, + 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9, + 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a, + 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0, + 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7, + 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc, + 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18, + 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10, + 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5, + 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae, + 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80, + 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81, + 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95, + 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95, + 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d, + 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc, + 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29, + 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b, + 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e, + 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a, + 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9, + 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56, + 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc, + 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb, + 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9, + 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc, + 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4, + 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78, + 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1, + 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8, + 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e, + 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48, + 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15, + 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f, + 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90, + 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8, + 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44, + 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c, + 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29, + 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35, + 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d, + 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8, + 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0, + 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34, + 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30, + 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44, + 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36, + 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c, + 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44, + 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2, + 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96, + 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd, + 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35, + 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e, + 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa, + 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d, + 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9, + 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62, + 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3, + 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53, + 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2, + 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32, + 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6, + 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92, + 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9, + 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad, + 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99, + 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e, + 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45, + 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96, + 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3, + 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60, + 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d, + 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b, + 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76, + 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca, + 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14, + 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6, + 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01, + 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67, + 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c, + 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09, + 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90, + 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb, + 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c, + 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2, + 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7, + 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55, + 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73, + 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9, + 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd, + 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78, + 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77, + 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e, + 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a, + 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16, + 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d, + 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea, + 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13, + 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde, + 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7, + 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d, + 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd, + 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4, + 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95, + 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72, + 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93, + 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a, + 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87, + 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed, + 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10, + 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20, + 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98, + 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa, + 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea, + 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0, + 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23, + 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22, + 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24, + 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8, + 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc}; diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.cpp b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.cpp new file mode 100644 index 000000000..0ecb17b48 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.cpp @@ -0,0 +1,369 @@ +// slimmed down version of the Open Book IL0398 driver. +// https://github.com/joeycastillo/The-Open-Book/blob/master/src/Grayscale_IL0398.cpp + +#include "Grayscale_IL0398.h" + +#define BUSY_WAIT 500 + +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } +#endif +/**************************************************************************/ +/*! + @brief constructor if using external SRAM chip and software SPI + @param width the width of the display in pixels + @param height the height of the display in pixels + @param SID the SID pin to use + @param SCLK the SCLK pin to use + @param DC the data/command pin to use + @param RST the reset pin to use + @param CS the chip select pin to use + @param SRCS the SRAM chip select pin to use + @param MISO the MISO pin to use + @param BUSY the busy pin to use +*/ +/**************************************************************************/ +Grayscale_IL0398::Grayscale_IL0398(int width, int height, + int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, + int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY) : + Adafruit_EPD(width, height, SID, SCLK, DC, RST, CS, SRCS, MISO, BUSY) { + + buffer1_size = ((uint32_t)width * (uint32_t)height) / 8; + buffer2_size = buffer1_size; + + if (SRCS >= 0) { + use_sram = true; + buffer1_addr = 0; + buffer2_addr = buffer1_size; + buffer1 = buffer2 = NULL; + } else { + buffer1 = (uint8_t *)malloc(buffer1_size); + buffer2 = (uint8_t *)malloc(buffer2_size); + } +} + +// constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset +/**************************************************************************/ +/*! + @brief constructor if using on-chip RAM and hardware SPI + @param width the width of the display in pixels + @param height the height of the display in pixels + @param DC the data/command pin to use + @param RST the reset pin to use + @param CS the chip select pin to use + @param SRCS the SRAM chip select pin to use + @param BUSY the busy pin to use +*/ +/**************************************************************************/ +Grayscale_IL0398::Grayscale_IL0398(int width, int height, + int8_t DC, int8_t RST, + int8_t CS, int8_t SRCS, int8_t BUSY, SPIClass *spi) : + Adafruit_EPD(width, height, DC, RST, CS, SRCS, BUSY, spi) { + + buffer1_size = ((uint32_t)width * (uint32_t)height) / 8; + buffer2_size = buffer1_size; + + if (SRCS >= 0) { + use_sram = true; + buffer1_addr = 0; + buffer2_addr = 0; + buffer1 = buffer2 = NULL; + } else { + buffer1 = (uint8_t *)malloc(buffer1_size); + buffer2 = (uint8_t *)malloc(buffer1_size); + } +} + +/**************************************************************************/ +/*! + @brief wait for busy signal to end +*/ +/**************************************************************************/ +void Grayscale_IL0398::busy_wait(void) +{ + if (_busy_pin > -1) { + do { + EPD_command(IL0398_GETSTATUS); + delay(10); + } while (!digitalRead(_busy_pin)); //wait for busy high + delay(200); + } else { + delay(BUSY_WAIT); + } + +} + +/**************************************************************************/ +/*! + @brief begin communication with and set up the display. + @param reset if true the reset pin will be toggled. +*/ +/**************************************************************************/ +void Grayscale_IL0398::begin(bool reset) +{ + Adafruit_EPD::begin(reset); + setBlackBuffer(0, true); + powerDown(); +} + +/**************************************************************************/ +/*! + @brief signal the display to update +*/ +/**************************************************************************/ +void Grayscale_IL0398::update() +{ + EPD_command(IL0398_DISPLAY_REFRESH); + delay(100); + + busy_wait(); + if (_busy_pin <= -1) { + delay(5000); + } +} + +const unsigned char Grayscale_IL0398::LUT_VCOM_GRAYSCALE[] PROGMEM = +{ + 0x00, 0x0A, 0x00, 0x00, 0x00, 0x01, + 0x60, 0x14, 0x14, 0x00, 0x00, 0x01, + 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x13, 0x0A, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, + 0x00 +}; + +const unsigned char Grayscale_IL0398::LUT_WW_GRAYSCALE[] PROGMEM = +{ + 0x40, 0x0A, 0x00, 0x00, 0x00, 0x01, + 0x90, 0x14, 0x14, 0x00, 0x00, 0x01, + 0x10, 0x14, 0x0A, 0x00, 0x00, 0x01, + 0xA0, 0x13, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +const unsigned char Grayscale_IL0398::LUT_WB_GRAYSCALE[] PROGMEM = +{ + 0x40, 0x0A, 0x00, 0x00, 0x00, 0x01, + 0x90, 0x14, 0x14, 0x00, 0x00, 0x01, + 0x00, 0x14, 0x0A, 0x00, 0x00, 0x01, + 0x99, 0x0B, 0x04, 0x04, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +const unsigned char Grayscale_IL0398::LUT_BW_GRAYSCALE[] PROGMEM = +{ + 0x40, 0x0A, 0x00, 0x00, 0x00, 0x01, + 0x90, 0x14, 0x14, 0x00, 0x00, 0x01, + 0x00, 0x14, 0x0A, 0x00, 0x00, 0x01, + 0x99, 0x0C, 0x01, 0x03, 0x04, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +const unsigned char Grayscale_IL0398::LUT_BB_GRAYSCALE[] PROGMEM = +{ + 0x80, 0x0A, 0x00, 0x00, 0x00, 0x01, + 0x90, 0x14, 0x14, 0x00, 0x00, 0x01, + 0x20, 0x14, 0x0A, 0x00, 0x00, 0x01, + 0x50, 0x13, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/**************************************************************************/ +/*! + @brief start up the display. Same as init, but here for compatibility with + Adafruit_EPD; you can call Grayscale_IL0398::init with more options. +*/ +/**************************************************************************/ +void Grayscale_IL0398::powerUp() { + uint8_t buf[5]; + + hardwareReset(); + + buf[0] = 0x03; // Panel will generate VDH and VDL (1<<0) and VGH and VGL (1<<1) + buf[1] = 0x00; // VCOMH=VDH+VCOMDC and VCOML=VDL+VCOMDC; VGH and VGL are 16v and -16v respectively + buf[2] = 0x2b; // VDH= 11V + buf[3] = 0x2b; // VDL=-11V + buf[4] = 0x13; // VDHR=6.2V + EPD_command(IL0398_POWER_SETTING, buf, 5); + + buf[0] = 0x17; // phase A: soft start 10ms, driving strength 3, off time 6.58us + buf[1] = 0x17; // phase B: soft start 10ms, driving strength 3, off time 6.58us + buf[2] = 0x17; // phase C: driving strength 3, off time 6.58us + EPD_command(IL0398_BOOSTER_SOFT_START, buf, 3); + + buf[0] = 0x3F; // (1<<4) sets display to monochrome and (1<<5) enables custom LUTs + EPD_command(IL0398_PANEL_SETTING, buf, 1); + + buf[0] = 0x3C; // 50 Hz + EPD_command(IL0398_PLL, buf, 1); + + buf[0] = (HEIGHT >> 8) & 0xFF; + buf[1] = HEIGHT & 0xFF; + buf[2] = (WIDTH >> 8) & 0xFF; + buf[3] = WIDTH & 0xFF; + EPD_command(IL0398_RESOLUTION, buf, 4); + + buf[0] = 0x12; // VCOM_DC = -1.5v + EPD_command(IL0398_VCM_DC_SETTING, buf, 1); + + buf[0] = 0xD7; // 0x57 for black border. 0x97 for white border. 0xD7 for floating border. + EPD_command(IL0398_VCOM, buf, 1); + + EPD_command(IL0398_LUT1, LUT_VCOM_GRAYSCALE, sizeof(LUT_VCOM_GRAYSCALE)); + EPD_command(IL0398_LUTWW, LUT_WW_GRAYSCALE, sizeof(LUT_WW_GRAYSCALE)); + EPD_command(IL0398_LUTBW, LUT_BW_GRAYSCALE, sizeof(LUT_BW_GRAYSCALE)); + EPD_command(IL0398_LUTWB, LUT_WB_GRAYSCALE, sizeof(LUT_WB_GRAYSCALE)); + EPD_command(IL0398_LUTBB, LUT_BB_GRAYSCALE, sizeof(LUT_BB_GRAYSCALE)); + + EPD_command(IL0398_POWER_ON); + busy_wait(); + + delay(20); +} + +/**************************************************************************/ +/*! + @brief wind down the display +*/ +/**************************************************************************/ +void Grayscale_IL0398::powerDown() +{ + uint8_t buf[4]; + + // power off + buf[0] = 0xF7; // border floating + EPD_command(IL0398_VCOM, buf, 1); + EPD_command(IL0398_POWER_OFF); + busy_wait(); + buf[0] = 0xA5; // deep sleep + EPD_command(IL0398_DEEP_SLEEP, buf, 1); + delay(100); +} + +/**************************************************************************/ +/*! + @brief draw a single pixel on the screen + @param x the x axis position + @param y the y axis position + @param color the color of the pixel +*/ +/**************************************************************************/ +void Grayscale_IL0398::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) + return; + + uint8_t *pByte1; + uint8_t *pByte2; + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + EPD_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + EPD_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + uint16_t addr = ( (uint32_t)(WIDTH - 1 - x) * (uint32_t)HEIGHT + y)/8; + + if (use_sram) { + uint8_t byte1 = sram.read8(blackbuffer_addr + addr); + uint8_t byte2 = sram.read8(colorbuffer_addr + addr); + pByte1 = &byte1; + pByte2 = &byte2; + } else { + pByte1 = black_buffer + addr; + pByte2 = color_buffer + addr; + } + + switch (color) { + case EPD_BLACK: + *pByte1 &= ~(1 << (7 - (y%8))); + *pByte2 &= ~(1 << (7 - (y%8))); + break; + case EPD_DARK: + *pByte1 |= (1 << (7 - (y%8))); + *pByte2 &= ~(1 << (7 - (y%8))); + break; + case EPD_LIGHT: + *pByte1 &= ~(1 << (7 - (y%8))); + *pByte2 |= (1 << (7 - (y%8))); + break; + case EPD_WHITE: + *pByte1 |= (1 << (7 - (y%8))); + *pByte2 |= (1 << (7 - (y%8))); + break; + } + + if (use_sram) { + sram.write8(addr, *pByte1); + sram.write8(addr + buffer1_size, *pByte2); + } +} + +/**************************************************************************/ +/*! + @brief Send the specific command to start writing to EPD display RAM + @param index The index for which buffer to write (0 or 1 or tri-color displays) + Ignored for monochrome displays. + @returns The byte that is read from SPI at the same time as sending the command +*/ +/**************************************************************************/ +uint8_t Grayscale_IL0398::writeRAMCommand(uint8_t index) { + if (index == 0) { + return EPD_command(IL0398_DTM2, false); + } + if (index == 1) { + return EPD_command(IL0398_DTM1, false); + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Some displays require setting the RAM address pointer + @param x X address counter value + @param y Y address counter value +*/ +/**************************************************************************/ +void Grayscale_IL0398::setRAMAddress(uint16_t x, uint16_t y) { + // on this chip we do nothing +} + +/*! + * @file Adafruit_IL0398.cpp + * + * Forked from Adafruit_IL0398.cpp; copyright notce below. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + * + * Written by Dean Miller for Adafruit Industries. + * Open Book additions by Joey Castillo. + * + * BSD license, all text here must be included in any redistribution. + * + */ diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.h b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.h new file mode 100644 index 000000000..7ab9477ea --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.h @@ -0,0 +1,49 @@ +// slimmed down version of the Open Book IL0398 driver. +// https://github.com/joeycastillo/The-Open-Book/blob/master/src/Grayscale_IL0398.h + +/**************************************************************************/ +/*! + @brief Class for interfacing with IL0398 EPD drivers +*/ +/**************************************************************************/ + +#include "Adafruit_EPD.h" + +class Grayscale_IL0398 : public Adafruit_EPD { + public: + Grayscale_IL0398(int width, int height, int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1); + Grayscale_IL0398(int width, int height, int8_t DC, int8_t RST, int8_t CS, int8_t SRCS, int8_t BUSY = -1, SPIClass *spi = &SPI); + + void begin(bool reset=true); + void powerUp(); + void update(); + void powerDown(); + void drawPixel(int16_t x, int16_t y, uint16_t color); +protected: + uint8_t writeRAMCommand(uint8_t index); + void setRAMAddress(uint16_t x, uint16_t y); + void busy_wait(); + +private: + static const unsigned char LUT_VCOM_GRAYSCALE[]; + static const unsigned char LUT_WW_GRAYSCALE[]; + static const unsigned char LUT_WB_GRAYSCALE[]; + static const unsigned char LUT_BW_GRAYSCALE[]; + static const unsigned char LUT_BB_GRAYSCALE[]; +}; + +/*! + * @file Grayscale_IL0398.h + * + * Forked from Adafruit_IL0398.h; copyright notce below. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + * + * Written by Dean Miller for Adafruit Industries. + * Open Book additions by Joey Castillo. + * + * BSD license, all text here must be included in any redistribution. + * + */ diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/epd_demo.ino b/lib/libesp32/JPEGDEC/examples/epd_demo/epd_demo.ino new file mode 100644 index 000000000..7ab7fa4a1 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/epd_demo/epd_demo.ino @@ -0,0 +1,112 @@ +// JPEGDEC example for 4.2" monochrome E-Paper displays +// Does not work with tri-color 4.2" displays! + +#include +#include "SPI.h" +#include "Adafruit_GFX.h" + +#include "Grayscale_IL0398.h" +#include "lange.h" // Demo photographs, grayscale, sized 300x400 + +#define DISPLAY_WIDTH 300 +#define DISPLAY_HEIGHT 400 + +// set these values to match the pins and the SPI bus for your display +#define EPD_CS 44 +#define EPD_DC 45 +#define EPD_RST 46 +#define EPD_BSY 47 +#define EPD_DISPLAY_BUS &SPI1 + +// adds a basic Floyd-Steinberg dither to each block of pixels rendered. +bool dither = true; + +JPEGDEC jpeg; +Grayscale_IL0398 display(DISPLAY_WIDTH, DISPLAY_HEIGHT, EPD_DC, EPD_RST, EPD_CS, -1, EPD_BSY, EPD_DISPLAY_BUS); + +int JPEGDraw(JPEGDRAW *pDraw) +{ + int x = pDraw->x; + int y = pDraw->y; + int w = pDraw->iWidth; + int h = pDraw->iHeight; + + for(int i = 0; i < w * h; i++) + { + pDraw->pPixels[i] = (pDraw->pPixels[i] & 0x7e0) >> 5; // extract just the six green channel bits. + } + + if (dither) + { + for(int16_t j = 0; j < h; j++) + { + for(int16_t i = 0; i < w; i++) + { + int8_t oldPixel = constrain(pDraw->pPixels[i + j * w], 0, 0x3F); + int8_t newPixel = oldPixel & 0x38; // or 0x30 to dither to 2-bit directly. much improved tonal range, but more horizontal banding between blocks. + pDraw->pPixels[i + j * w] = newPixel; + int quantError = oldPixel - newPixel; + if(i + 1 < w) pDraw->pPixels[i + 1 + j * w] += quantError * 7 / 16; + if((i - 1 >= 0) && (j + 1 < h)) pDraw->pPixels[i - 1 + (j + 1) * w] += quantError * 3 / 16; + if(j + 1 < h) pDraw->pPixels[i + (j + 1) * w] += quantError * 5 / 16; + if((i + 1 < w) && (j + 1 < h)) pDraw->pPixels[i + 1 + (j + 1) * w] += quantError * 1 / 16; + } // for i + } // for j + } // if dither + + for(int16_t i = 0; i < w; i++) + { + for(int16_t j = 0; j < h; j++) + { + switch (constrain(pDraw->pPixels[i + j * w] >> 4, 0, 3)) + { + case 0: + display.writePixel(x+i, y+j, EPD_BLACK); + break; + case 1: + display.writePixel(x+i, y+j, EPD_DARK); + break; + case 2: + display.writePixel(x+i, y+j, EPD_LIGHT); + break; + case 3: + display.writePixel(x+i, y+j, EPD_WHITE); + break; + } // switch + } // for j + } // for i + return 1; +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + //while (!Serial) delay(1000); + Serial.println("Starting..."); + display.begin(); + display.fillRect(0, 0, 300, 400, EPD_BLACK); + display.display(); +} /* setup() */ + +const uint8_t * images[] = {demo_001_jpg, demo_002_jpg, demo_003_jpg, demo_004_jpg, demo_005_jpg, demo_006_jpg, demo_007_jpg, demo_008_jpg}; +size_t imageLengths[] = {demo_001_jpg_len, demo_002_jpg_len, demo_003_jpg_len, demo_004_jpg_len, demo_005_jpg_len, demo_006_jpg_len, demo_007_jpg_len, demo_008_jpg_len}; + +void loop() { + int i; + long lTime; + + for (i=0; i<8; i++) + { + if (jpeg.openFLASH((uint8_t *)images[i], imageLengths[i], JPEGDraw)) + { + lTime = micros(); + if (jpeg.decode((300 - jpeg.getWidth()) / 2, (400 - jpeg.getHeight()) / 2, 0)) + { + lTime = micros() - lTime; + Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth(), jpeg.getHeight(), (int)lTime); + } + jpeg.close(); + } + display.display(); + delay(4000); // pause between images + } // for i +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/lange.h b/lib/libesp32/JPEGDEC/examples/epd_demo/lange.h new file mode 100644 index 000000000..ac657255f --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/epd_demo/lange.h @@ -0,0 +1,13860 @@ +// +// Public domain photographs by Dorothea Lange for the U.S. Farm Security Administration +// see: https://www.loc.gov/rr/print/res/071_fsab.html +// + +const uint8_t demo_001_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x11, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xe2, 0x0e, 0x3b, 0x27, 0xbc, 0x28, 0x9a, 0x5b, 0xd9, + 0x58, 0x21, 0x37, 0x09, 0x29, 0x09, 0xa5, 0x82, 0x12, 0x14, 0xb0, 0xf6, + 0x45, 0x21, 0x34, 0xa4, 0xa6, 0x23, 0x1e, 0xb4, 0xbd, 0x0a, 0xe3, 0x8f, + 0xc4, 0xa2, 0x42, 0x77, 0xc0, 0x6e, 0x9c, 0xa4, 0xa6, 0xb7, 0xa4, 0x3c, + 0x11, 0x45, 0x35, 0x44, 0x96, 0xfe, 0x25, 0x37, 0x64, 0x46, 0xfd, 0x14, + 0x94, 0x8f, 0xd1, 0xaf, 0xc1, 0x37, 0xa2, 0xc2, 0x74, 0x0a, 0x64, 0x41, + 0xd1, 0x4a, 0xb0, 0x41, 0x49, 0x48, 0x4d, 0x4d, 0x1d, 0x91, 0x6b, 0xa2, + 0xb3, 0xcb, 0x41, 0x52, 0x0d, 0x92, 0x8c, 0xc6, 0xed, 0x09, 0x29, 0x88, + 0xc7, 0xa8, 0x7e, 0x60, 0x4e, 0x71, 0xd8, 0x5c, 0x08, 0x6b, 0x40, 0xee, + 0x20, 0x22, 0x86, 0xa9, 0x37, 0x43, 0x09, 0x29, 0x7a, 0xea, 0x60, 0x3f, + 0x41, 0xa3, 0xe4, 0x15, 0xa6, 0x69, 0xc0, 0x13, 0xe4, 0x02, 0x0b, 0x79, + 0x44, 0x0e, 0x21, 0xc0, 0x0e, 0x12, 0x52, 0x7d, 0xef, 0xe7, 0x76, 0xbe, + 0x49, 0xc3, 0x9f, 0x3a, 0x92, 0x90, 0x70, 0x02, 0x08, 0x06, 0x7b, 0xa7, + 0x80, 0x92, 0x98, 0xbd, 0xce, 0x2d, 0x32, 0x4e, 0xbc, 0x25, 0x5b, 0xdc, + 0x01, 0x83, 0x09, 0x38, 0x49, 0x4d, 0xb4, 0x80, 0x92, 0x93, 0x35, 0xce, + 0x03, 0x52, 0x54, 0x1e, 0x5c, 0x48, 0x20, 0xf0, 0xa6, 0x04, 0x05, 0x06, + 0x6a, 0x4c, 0xa4, 0xa6, 0x5b, 0x9c, 0xf7, 0xb4, 0x93, 0xc2, 0x35, 0x4e, + 0x81, 0xa7, 0x74, 0x36, 0x30, 0x46, 0x83, 0x8e, 0xea, 0x70, 0x00, 0x10, + 0x34, 0x49, 0x4c, 0xc9, 0xf2, 0xd1, 0x49, 0xb2, 0xa0, 0x7b, 0x04, 0xed, + 0x24, 0x6a, 0x52, 0x52, 0x58, 0x26, 0x20, 0xfc, 0xd4, 0xc0, 0x27, 0x59, + 0xf7, 0x77, 0x28, 0x6d, 0x76, 0x9a, 0xfc, 0x42, 0x70, 0xe8, 0x1a, 0x24, + 0xa4, 0xa1, 0xee, 0xd7, 0x5e, 0x34, 0xd5, 0x29, 0x27, 0x93, 0x03, 0x92, + 0xa0, 0xd7, 0x76, 0x3c, 0xa9, 0x57, 0xa9, 0x24, 0xf1, 0xe6, 0x92, 0x99, + 0x13, 0x10, 0x41, 0xf8, 0x78, 0x21, 0x6e, 0x24, 0xe8, 0xe5, 0x2b, 0x1c, + 0x48, 0xf6, 0xe8, 0x84, 0x04, 0x7b, 0x8e, 0x83, 0xc5, 0x25, 0x31, 0xbd, + 0xef, 0xd8, 0x1a, 0xd3, 0xa9, 0x30, 0x00, 0xf1, 0x46, 0x64, 0xd7, 0x58, + 0x04, 0xc9, 0xee, 0x7c, 0xd0, 0x80, 0x1f, 0xce, 0x1e, 0x4f, 0xd1, 0x1e, + 0x5f, 0xed, 0x55, 0xae, 0xbe, 0xc3, 0x67, 0xa6, 0xdd, 0x0f, 0xf0, 0xf1, + 0x49, 0x4b, 0xe4, 0x59, 0x68, 0x05, 0xcd, 0x7f, 0xf2, 0x5a, 0x07, 0xe2, + 0x50, 0x99, 0x71, 0x2c, 0x12, 0x01, 0x21, 0x3b, 0x86, 0xe2, 0x1a, 0xdd, + 0x5a, 0x02, 0x8d, 0x75, 0x96, 0x9d, 0xa7, 0x81, 0xe2, 0x92, 0x92, 0x34, + 0xbc, 0x9d, 0x27, 0xe0, 0x51, 0xa1, 0xdb, 0x76, 0xf7, 0xe5, 0x33, 0x1b, + 0xdf, 0x51, 0xe6, 0xa5, 0xb5, 0xdb, 0xb8, 0xf9, 0xf7, 0x8e, 0x38, 0x49, + 0x4f, 0x30, 0x42, 0x62, 0x3b, 0xa7, 0x07, 0x44, 0xe5, 0x25, 0x31, 0x4d, + 0x0a, 0x40, 0xa6, 0x73, 0x88, 0x49, 0x4c, 0x21, 0xc4, 0xf2, 0x88, 0xd1, + 0xe2, 0x99, 0xba, 0xea, 0xa6, 0x21, 0x25, 0x31, 0x70, 0x0a, 0x33, 0xa2, + 0x77, 0x28, 0xea, 0x52, 0x52, 0xb9, 0x45, 0x61, 0x86, 0x90, 0x42, 0x8b, + 0x1b, 0xe2, 0xa4, 0x7c, 0x12, 0x52, 0xec, 0x12, 0x7c, 0x91, 0xda, 0x02, + 0x85, 0x62, 0x11, 0x12, 0x53, 0x36, 0x89, 0x4e, 0x5a, 0x39, 0x49, 0xbc, + 0x29, 0x1f, 0x14, 0x94, 0xa1, 0xa9, 0x46, 0x0d, 0x06, 0x0a, 0x13, 0x11, + 0xf7, 0x00, 0x35, 0xe1, 0x25, 0x32, 0x89, 0x4e, 0x1c, 0x38, 0x55, 0x9f, + 0x99, 0x5b, 0x09, 0x04, 0xc0, 0x0a, 0x0d, 0xea, 0x38, 0xa7, 0x87, 0x41, + 0xf0, 0x84, 0x94, 0xde, 0x1a, 0xea, 0x93, 0xb4, 0x2a, 0xbd, 0x59, 0xb5, + 0x1d, 0x67, 0x45, 0x62, 0xbb, 0x18, 0xf6, 0xee, 0x04, 0x10, 0x92, 0x96, + 0xdc, 0xe0, 0x7c, 0x94, 0x8f, 0x3e, 0x01, 0x48, 0x6a, 0xd4, 0xd1, 0x3a, + 0x14, 0x94, 0x91, 0x9a, 0xf7, 0xd0, 0xa9, 0x09, 0x92, 0x07, 0x0a, 0x2c, + 0x1d, 0x94, 0xc0, 0xe6, 0x52, 0x52, 0xce, 0xd3, 0xe2, 0x9c, 0x3b, 0x45, + 0x09, 0x97, 0x42, 0x90, 0xf0, 0x49, 0x4c, 0xc1, 0x81, 0xfc, 0x54, 0xa6, + 0x75, 0x07, 0x94, 0x29, 0x93, 0x1d, 0x94, 0xdb, 0xa8, 0xf2, 0x49, 0x4c, + 0xdb, 0xa0, 0xd7, 0xba, 0x93, 0x20, 0x34, 0xeb, 0xaf, 0x65, 0x19, 0xe2, + 0x4f, 0x09, 0xc1, 0x27, 0x84, 0x94, 0xa9, 0xd6, 0x0f, 0xcc, 0xa1, 0xbc, + 0xfa, 0x8e, 0x8f, 0xcd, 0x6f, 0x23, 0xc7, 0xc8, 0xa9, 0x3c, 0x19, 0xda, + 0xdd, 0x49, 0xe7, 0xc9, 0x26, 0xb4, 0x34, 0x68, 0x34, 0x01, 0x25, 0x31, + 0xb1, 0xcd, 0x0d, 0x92, 0x27, 0xe1, 0xe2, 0xa8, 0xc0, 0x05, 0xfd, 0xec, + 0x71, 0xf7, 0x1e, 0x74, 0xec, 0x11, 0xac, 0xb5, 0xe4, 0xee, 0x6f, 0xd1, + 0x06, 0x19, 0x1f, 0x94, 0xa6, 0x8f, 0xcf, 0x1d, 0xf9, 0x09, 0x29, 0x8b, + 0x5f, 0xb4, 0x44, 0x7c, 0x54, 0xac, 0x31, 0x63, 0x4f, 0x10, 0x96, 0xd2, + 0x75, 0x83, 0x03, 0xba, 0x6b, 0x07, 0x04, 0xf3, 0xd9, 0x25, 0x26, 0x67, + 0x3d, 0xc8, 0xf1, 0x44, 0xdd, 0xac, 0xf6, 0xe3, 0x95, 0x5a, 0xbb, 0x02, + 0x2e, 0xfd, 0x66, 0x7d, 0xbe, 0x13, 0xaa, 0x4a, 0x79, 0x90, 0x52, 0x2f, + 0x84, 0xc0, 0x94, 0xa0, 0x92, 0x92, 0x98, 0x17, 0x90, 0xe9, 0x53, 0x9d, + 0xc3, 0x54, 0xfb, 0x14, 0xa2, 0x12, 0x52, 0x30, 0xe7, 0x07, 0x44, 0x68, + 0x89, 0x3a, 0x24, 0xa2, 0x49, 0x29, 0x29, 0x89, 0x3a, 0xa9, 0x34, 0x28, + 0xf0, 0xa6, 0xd4, 0x94, 0xca, 0x61, 0x3b, 0x7d, 0xce, 0x42, 0x73, 0x8c, + 0xc0, 0x46, 0xab, 0x84, 0x94, 0x94, 0x29, 0xa8, 0x04, 0x40, 0x92, 0x99, + 0x05, 0x2f, 0x8a, 0x88, 0x51, 0xb1, 0xdb, 0x47, 0x9f, 0x9a, 0x4a, 0x48, + 0x6c, 0x6b, 0x04, 0xbb, 0x85, 0x4f, 0x23, 0xa9, 0x76, 0xae, 0x7c, 0x8c, + 0x7f, 0x7a, 0xad, 0x91, 0x93, 0xbc, 0x96, 0x83, 0x23, 0xc7, 0xc5, 0x01, + 0xac, 0x2f, 0x3a, 0xa4, 0xa5, 0xde, 0xfb, 0x1f, 0x27, 0x58, 0x26, 0x62, + 0x52, 0x6b, 0x1e, 0x79, 0x1f, 0x82, 0x33, 0x31, 0xc7, 0x8f, 0xdc, 0x89, + 0xe9, 0x11, 0xc1, 0xfc, 0x52, 0x52, 0x36, 0x3c, 0x37, 0x93, 0x07, 0xe0, + 0x8a, 0xdb, 0xe3, 0xb8, 0x9f, 0x11, 0xfd, 0xea, 0x0f, 0x2e, 0x68, 0xf7, + 0x80, 0xe0, 0xab, 0x3d, 0xc0, 0x9f, 0x6f, 0x1e, 0x05, 0x25, 0x3a, 0x94, + 0x75, 0x37, 0xd2, 0x76, 0xbc, 0x98, 0xf3, 0xd5, 0x68, 0xd3, 0x9d, 0x8f, + 0x74, 0x6b, 0x04, 0xf6, 0x5c, 0xce, 0xf2, 0x74, 0x94, 0x99, 0x6b, 0xd8, + 0xef, 0x69, 0xf9, 0x24, 0xa7, 0xb3, 0xa5, 0xa3, 0x9f, 0xb9, 0x22, 0xd9, + 0x2b, 0x27, 0xa6, 0x75, 0x2f, 0x68, 0xae, 0xc3, 0x2c, 0x3a, 0x02, 0x79, + 0x69, 0xf3, 0xf2, 0x5b, 0x00, 0x02, 0x3f, 0x8a, 0x4a, 0x60, 0x3c, 0xb5, + 0x4e, 0x46, 0x93, 0xc2, 0x78, 0x8d, 0x02, 0x91, 0x1a, 0x24, 0xa4, 0x5a, + 0xf6, 0xed, 0xca, 0x23, 0x44, 0x80, 0xa0, 0x66, 0x4f, 0x87, 0x8a, 0x4d, + 0xb0, 0x01, 0xae, 0x83, 0x80, 0x52, 0x52, 0x47, 0x93, 0x12, 0x35, 0xf1, + 0x4c, 0xcb, 0x5c, 0xdd, 0x00, 0x92, 0x74, 0x01, 0x49, 0xa0, 0x38, 0xc9, + 0xe0, 0xeb, 0x28, 0x2e, 0xb1, 0xac, 0x3b, 0xb9, 0x26, 0x76, 0x37, 0x8d, + 0x3c, 0x4f, 0x92, 0x4a, 0x6c, 0x86, 0xfe, 0x8c, 0x99, 0xd7, 0xbb, 0xbc, + 0xd5, 0x5b, 0xf2, 0x1c, 0x66, 0xb6, 0x8f, 0xd1, 0x81, 0xef, 0x77, 0xef, + 0x1f, 0xdd, 0x08, 0x16, 0xf5, 0x07, 0x38, 0x8a, 0x9a, 0xe1, 0x1d, 0xf6, + 0xe8, 0x3e, 0xf2, 0xa1, 0xea, 0x8b, 0x1f, 0xb4, 0x01, 0x1d, 0x80, 0x29, + 0x29, 0x9b, 0x24, 0x9d, 0xc7, 0xb7, 0x00, 0x70, 0x14, 0xe4, 0x01, 0xaf, + 0x7e, 0x7c, 0x15, 0x63, 0x65, 0x75, 0x9e, 0x61, 0x48, 0x5a, 0x08, 0xdc, + 0x0e, 0xe0, 0x92, 0x93, 0x33, 0x71, 0x71, 0x0d, 0x26, 0x3b, 0xa9, 0xd8, + 0xd0, 0x44, 0x78, 0x77, 0x0a, 0x0c, 0x7b, 0x34, 0x20, 0x4c, 0xf0, 0x53, + 0x93, 0xa7, 0xc5, 0x25, 0x31, 0x6e, 0xd1, 0x20, 0xfd, 0xea, 0x7b, 0x46, + 0xd8, 0xdc, 0x78, 0xe7, 0x44, 0x29, 0xda, 0x63, 0x8d, 0x74, 0x47, 0xdc, + 0x3f, 0x77, 0x44, 0x94, 0xf3, 0x63, 0x44, 0x82, 0x52, 0x90, 0x32, 0x52, + 0x53, 0x30, 0x98, 0x94, 0xf2, 0xa2, 0x75, 0x29, 0x29, 0x62, 0x4a, 0x70, + 0x25, 0x38, 0x84, 0xf2, 0x02, 0x4a, 0x50, 0x09, 0x9c, 0xdd, 0x12, 0x06, + 0x4a, 0x99, 0x02, 0x12, 0x52, 0x20, 0xdd, 0x75, 0x46, 0x67, 0x82, 0x1b, + 0x04, 0x94, 0x76, 0xb7, 0x49, 0x49, 0x4a, 0x1c, 0xa2, 0x4c, 0x28, 0x70, + 0x94, 0xca, 0x4a, 0x4d, 0xb8, 0x06, 0xca, 0xa1, 0x95, 0x7e, 0xe3, 0xb0, + 0x1d, 0x3b, 0x94, 0xb2, 0xf2, 0xc8, 0xfd, 0x13, 0x39, 0xfc, 0xe2, 0xa9, + 0x80, 0x4f, 0x29, 0x29, 0x23, 0x6b, 0x6f, 0x72, 0x3e, 0x12, 0x8a, 0xc6, + 0xb3, 0xb4, 0x14, 0xd5, 0xd7, 0x3f, 0x9b, 0xf7, 0xa3, 0x0a, 0x01, 0xd7, + 0xe8, 0xa4, 0xa5, 0x36, 0x02, 0x91, 0x35, 0x76, 0xf6, 0x3b, 0xcd, 0x39, + 0xc7, 0xae, 0x3d, 0xcf, 0x8f, 0x34, 0x32, 0x5b, 0x58, 0x83, 0x60, 0x73, + 0x7c, 0xd2, 0x52, 0x9e, 0xd6, 0x3d, 0xb0, 0x40, 0xdd, 0xd9, 0xcd, 0x28, + 0x2e, 0xc5, 0x35, 0xd0, 0x2e, 0x71, 0x07, 0x79, 0x2d, 0x6b, 0x41, 0xd7, + 0x4e, 0x4a, 0x77, 0x8a, 0x9d, 0xee, 0x63, 0xb5, 0xf0, 0x9d, 0x52, 0x36, + 0x88, 0x0d, 0x0d, 0xf7, 0x03, 0x32, 0x92, 0x91, 0x54, 0xd1, 0xba, 0x1c, + 0x24, 0x1f, 0xbc, 0x29, 0x5b, 0x44, 0x19, 0x1c, 0x1e, 0xea, 0xcb, 0x3d, + 0x0b, 0x5b, 0xb9, 0xbe, 0xd3, 0xdc, 0x77, 0x69, 0x4c, 0xf6, 0xfb, 0x76, + 0xbf, 0x91, 0xcf, 0xf7, 0xa4, 0xa4, 0x38, 0x6e, 0x15, 0xe4, 0x37, 0xd4, + 0x30, 0xd9, 0x05, 0xdf, 0x00, 0xba, 0x4c, 0x5b, 0xc7, 0xa6, 0xd6, 0x9d, + 0x74, 0xf9, 0x85, 0xcd, 0x91, 0xbb, 0x4e, 0x1c, 0x3e, 0x89, 0xfe, 0x0a, + 0xf6, 0x06, 0x49, 0xfa, 0x2e, 0xd1, 0xed, 0xef, 0xe2, 0x12, 0x53, 0xbe, + 0xdf, 0x73, 0x81, 0xf1, 0x46, 0x3c, 0x42, 0x1d, 0x2f, 0x6b, 0x9a, 0x1c, + 0x0c, 0x93, 0xc0, 0x52, 0xb2, 0xd6, 0xd6, 0x0e, 0xe2, 0x00, 0xf3, 0xe1, + 0x25, 0x22, 0xb4, 0x86, 0x8f, 0x24, 0x01, 0x65, 0x6f, 0x20, 0x13, 0xdf, + 0x5f, 0xf5, 0x08, 0x59, 0x17, 0xbe, 0xcd, 0x03, 0xda, 0xc6, 0x7d, 0xe7, + 0xee, 0x59, 0xf7, 0x5c, 0xc0, 0x60, 0x97, 0xbf, 0xfb, 0x44, 0x7e, 0x0d, + 0xd1, 0x25, 0x3b, 0x8e, 0xca, 0xa6, 0x03, 0x03, 0x80, 0x03, 0x99, 0x30, + 0x56, 0x26, 0x7e, 0x61, 0xb6, 0xd7, 0xb8, 0x18, 0x68, 0x21, 0x8d, 0x03, + 0xc0, 0x6a, 0x55, 0x6b, 0x5a, 0xf3, 0xee, 0xac, 0x38, 0x1e, 0x60, 0x9d, + 0x10, 0x4b, 0x4b, 0x8c, 0x11, 0x07, 0xe2, 0x92, 0x96, 0x7d, 0xaf, 0x3e, + 0xd1, 0xa9, 0xef, 0x3c, 0x05, 0x2a, 0xdc, 0x58, 0xcd, 0xe6, 0xc0, 0x1f, + 0x3a, 0x56, 0x47, 0x3f, 0x31, 0xc2, 0x8f, 0xa0, 0xf1, 0xee, 0x07, 0xee, + 0x43, 0x7b, 0x1c, 0x4f, 0xe0, 0x92, 0x92, 0x8b, 0xdc, 0xf7, 0x4b, 0xa5, + 0xce, 0x3a, 0x09, 0x56, 0xbd, 0x6f, 0xb3, 0x90, 0xfd, 0xd3, 0x3a, 0x39, + 0x87, 0x4f, 0xb9, 0x54, 0xa6, 0xbd, 0x74, 0xe4, 0x77, 0x2a, 0x6e, 0xa4, + 0xce, 0xed, 0xdb, 0x8f, 0x72, 0x92, 0x9b, 0x55, 0xf5, 0x27, 0x87, 0x97, + 0x7a, 0x6e, 0xdb, 0xdc, 0x8d, 0x74, 0xf8, 0x2d, 0x36, 0x3d, 0xb6, 0xb1, + 0xb6, 0x33, 0x50, 0xe1, 0x2d, 0x58, 0xad, 0xbf, 0xd3, 0x1b, 0x3b, 0x78, + 0xc4, 0xab, 0x58, 0x17, 0xec, 0xaf, 0x64, 0xee, 0x64, 0xe8, 0x7c, 0x35, + 0x94, 0x94, 0xe8, 0xd8, 0x74, 0x03, 0x83, 0xe2, 0x9e, 0x4f, 0xa7, 0x1d, + 0xe3, 0x9f, 0x34, 0x20, 0xf0, 0xe3, 0xa6, 0xa0, 0x77, 0x45, 0xd3, 0xfd, + 0x9d, 0x92, 0x53, 0xce, 0xee, 0x0a, 0x4d, 0x72, 0x66, 0xb7, 0xc5, 0x38, + 0x00, 0x24, 0xa6, 0x49, 0x26, 0x49, 0x25, 0x24, 0xd2, 0x14, 0x5c, 0x54, + 0x77, 0x24, 0x35, 0x49, 0x4c, 0x82, 0x47, 0xc1, 0x20, 0x21, 0x20, 0x24, + 0xa4, 0xa6, 0x75, 0x88, 0x46, 0xec, 0xa0, 0xd0, 0x9c, 0x94, 0x94, 0xa2, + 0x83, 0x6d, 0xdb, 0x1a, 0x63, 0xb2, 0x31, 0xfa, 0x24, 0x9f, 0x05, 0x9d, + 0x90, 0xf9, 0x76, 0xd1, 0xdb, 0x9f, 0x8a, 0x4a, 0x44, 0x49, 0x26, 0x7b, + 0x95, 0x26, 0x69, 0xe6, 0x54, 0x14, 0xcf, 0xb5, 0xb0, 0x3e, 0x91, 0xe5, + 0x25, 0x33, 0x37, 0xb9, 0x9a, 0x34, 0xc9, 0xee, 0x53, 0x8b, 0x5e, 0xe1, + 0x2e, 0xb2, 0x7c, 0x8c, 0xa6, 0xab, 0x1a, 0xeb, 0x0f, 0xb5, 0x84, 0xab, + 0xb5, 0xf4, 0x3c, 0xdb, 0x46, 0xed, 0xbb, 0x47, 0x9a, 0x4a, 0x68, 0x3a, + 0xe7, 0x9d, 0x25, 0x30, 0x6d, 0x8f, 0xd0, 0x02, 0x57, 0x51, 0xd3, 0xfe, + 0xab, 0x4b, 0x77, 0x5d, 0xa9, 0x2b, 0x77, 0x0f, 0xea, 0xd6, 0x2d, 0x60, + 0x12, 0x04, 0xa4, 0xa7, 0xcf, 0x3e, 0xcd, 0x74, 0xc6, 0xd3, 0xaa, 0xbb, + 0x8d, 0x80, 0xed, 0xa4, 0xbe, 0x44, 0xf7, 0x5d, 0xf5, 0x9d, 0x1f, 0x14, + 0x0f, 0xa2, 0xd9, 0xf8, 0x2a, 0x57, 0xf4, 0xf6, 0x31, 0xa7, 0x6b, 0x41, + 0xf1, 0x49, 0x4f, 0x2a, 0xcc, 0x60, 0x58, 0x46, 0xd8, 0x70, 0x55, 0x5f, + 0xbb, 0x56, 0xce, 0xa3, 0x49, 0x2b, 0x57, 0x3a, 0x97, 0x31, 0xee, 0x73, + 0x04, 0x11, 0xa3, 0x87, 0x62, 0xb1, 0x6e, 0x25, 0xce, 0x30, 0x61, 0xde, + 0x09, 0x29, 0x1b, 0x9d, 0x05, 0x48, 0x58, 0x43, 0x83, 0x81, 0xd4, 0x77, + 0x42, 0x71, 0x9f, 0x88, 0x49, 0x8e, 0xd6, 0x12, 0x53, 0xd2, 0x74, 0xec, + 0xc6, 0xba, 0xa9, 0x3a, 0x10, 0x09, 0x00, 0x78, 0xf8, 0x04, 0x9e, 0xc3, + 0x79, 0xf5, 0xad, 0x99, 0x33, 0xb5, 0x93, 0xa3, 0x47, 0x82, 0xca, 0xe9, + 0xd6, 0xec, 0x7b, 0x99, 0x3a, 0xe8, 0xe6, 0xfc, 0x41, 0x0a, 0xf6, 0x46, + 0x4c, 0xb4, 0xb1, 0x87, 0x48, 0xed, 0xc0, 0xf8, 0x24, 0xa4, 0x19, 0x6e, + 0x65, 0x6d, 0xdc, 0xc0, 0x0b, 0x9d, 0xa3, 0x4f, 0x6d, 0x39, 0x2a, 0x96, + 0xdb, 0x09, 0x92, 0x4b, 0x81, 0x13, 0x3c, 0x05, 0x72, 0xfa, 0xc5, 0xb6, + 0x86, 0xf0, 0xca, 0xda, 0x04, 0x7c, 0x34, 0xfc, 0x4a, 0xa8, 0xeb, 0x9c, + 0x49, 0xab, 0x86, 0x70, 0x23, 0xb1, 0x49, 0x4b, 0x3a, 0x40, 0x00, 0x99, + 0x9e, 0x35, 0x49, 0xd5, 0x91, 0x05, 0xce, 0x90, 0xac, 0x59, 0x4b, 0x36, + 0x51, 0xbb, 0x59, 0x6f, 0xde, 0x64, 0xcf, 0xe4, 0x40, 0xb0, 0x99, 0x21, + 0xa3, 0x83, 0x01, 0x25, 0x23, 0x22, 0x35, 0x60, 0xf9, 0xa6, 0x13, 0xcc, + 0xc2, 0x3d, 0x35, 0xb9, 0xa6, 0x5f, 0xa8, 0x26, 0x0f, 0x92, 0x6c, 0x9a, + 0x1d, 0x45, 0xc0, 0x37, 0x83, 0xee, 0x1f, 0xd5, 0x3c, 0x24, 0xa4, 0x20, + 0xb9, 0xa4, 0x77, 0x05, 0x58, 0x6d, 0x95, 0x90, 0x03, 0x99, 0xaf, 0xcd, + 0x44, 0xfa, 0x65, 0xb0, 0x06, 0xd2, 0x35, 0xd3, 0x50, 0x8b, 0x5b, 0x6b, + 0x78, 0x04, 0x98, 0x77, 0x88, 0x10, 0x92, 0x91, 0x90, 0xd0, 0x65, 0xb1, + 0xf0, 0x52, 0xad, 0xc6, 0xb7, 0x87, 0x33, 0x9f, 0x0e, 0xc7, 0xe4, 0x9e, + 0xc0, 0xe6, 0x98, 0xb0, 0x4c, 0xf0, 0xf1, 0xcf, 0xcf, 0xc5, 0x04, 0xc8, + 0xe4, 0xcb, 0x7c, 0x39, 0x84, 0x94, 0xea, 0x55, 0x68, 0xd0, 0x81, 0x04, + 0xea, 0x47, 0x9a, 0xb7, 0xea, 0x0d, 0xb3, 0xaf, 0x1f, 0x35, 0x8b, 0x46, + 0x41, 0x6c, 0x07, 0x1f, 0x64, 0xf3, 0xe0, 0xaf, 0x6e, 0x33, 0xce, 0x90, + 0x92, 0x9c, 0xe9, 0x51, 0x2a, 0x3a, 0xa9, 0x4a, 0x4a, 0x50, 0x4e, 0x54, + 0x78, 0x4a, 0x52, 0x52, 0xf1, 0x2a, 0x40, 0x26, 0x02, 0x42, 0x43, 0x94, + 0x94, 0x91, 0xbc, 0x27, 0x6c, 0x4a, 0x84, 0xa7, 0x94, 0x94, 0x98, 0x42, + 0x72, 0x84, 0x1c, 0x88, 0x0a, 0x4a, 0x61, 0x7b, 0xf6, 0x52, 0x4f, 0x7e, + 0x02, 0xcc, 0x3a, 0xea, 0xaf, 0x75, 0x07, 0x43, 0x58, 0xd1, 0xde, 0x49, + 0x54, 0x52, 0x53, 0x2a, 0xc0, 0x2e, 0x13, 0xc0, 0xd4, 0xad, 0x3e, 0x9d, + 0x81, 0xeb, 0xbf, 0xd4, 0x78, 0xf6, 0x8e, 0x56, 0x75, 0x20, 0x97, 0x47, + 0x8e, 0x8b, 0xa7, 0xc0, 0xad, 0xad, 0x63, 0x6b, 0x06, 0x0b, 0x9b, 0xaa, + 0x4a, 0x75, 0xfa, 0x67, 0x4d, 0xa7, 0x68, 0x76, 0xcd, 0x7e, 0x0b, 0x5d, + 0x98, 0xf5, 0x86, 0x11, 0xb3, 0xe8, 0x89, 0xe1, 0x3e, 0x15, 0x4c, 0x15, + 0x33, 0x52, 0x74, 0xd5, 0x1a, 0xe6, 0x96, 0xbc, 0x3a, 0x4c, 0x70, 0x60, + 0x76, 0x49, 0x4c, 0x18, 0x1a, 0x1a, 0x20, 0x00, 0x65, 0x17, 0x71, 0x0d, + 0xe4, 0x05, 0x5d, 0xa1, 0x87, 0x7b, 0x65, 0xce, 0x83, 0xa2, 0x2e, 0xe8, + 0x68, 0x10, 0x78, 0xef, 0xaa, 0x4a, 0x47, 0x65, 0x8e, 0x7e, 0x9c, 0xc2, + 0xa5, 0x90, 0xe2, 0x5d, 0x03, 0x8e, 0xea, 0xd9, 0x10, 0xc9, 0x2d, 0x32, + 0xe3, 0xf8, 0x2a, 0xd7, 0x31, 0xbb, 0xb4, 0x91, 0xe2, 0x92, 0x9c, 0xac, + 0xdc, 0x70, 0xf6, 0x17, 0x77, 0x5c, 0x9e, 0x7d, 0x06, 0xbb, 0x09, 0xec, + 0x57, 0x6b, 0x93, 0xa3, 0x76, 0x8e, 0xfc, 0x2c, 0x0e, 0xb1, 0x5b, 0x7d, + 0x29, 0x8e, 0xda, 0x14, 0x94, 0xf3, 0x9a, 0xa5, 0xc6, 0xa9, 0x89, 0x32, + 0x9a, 0x4a, 0x4a, 0x4b, 0x5b, 0xe1, 0xc0, 0x8e, 0x55, 0xc1, 0x6e, 0xe7, + 0xb6, 0x75, 0x11, 0x04, 0x7c, 0x74, 0x59, 0xe0, 0xc1, 0x95, 0x61, 0x8e, + 0xdd, 0xe4, 0x46, 0xa3, 0xf8, 0xa4, 0xa7, 0x53, 0x27, 0x6d, 0x34, 0xbe, + 0xce, 0xef, 0x73, 0x87, 0xf9, 0xa7, 0x6f, 0xf1, 0x2a, 0x83, 0x6b, 0xdc, + 0x03, 0xa2, 0x74, 0x25, 0x5d, 0xea, 0x2d, 0x2e, 0xc3, 0xa1, 0xe3, 0x50, + 0xf7, 0x3d, 0xe4, 0x78, 0x09, 0xd0, 0xa0, 0xd1, 0x1b, 0x58, 0xdf, 0xdf, + 0xfc, 0x83, 0x54, 0x94, 0xd9, 0xa9, 0x8d, 0x7e, 0x3b, 0x1a, 0x7e, 0x95, + 0x4e, 0x83, 0xe3, 0xb5, 0xff, 0x00, 0xed, 0x55, 0x43, 0x43, 0x72, 0x1e, + 0x5d, 0xc0, 0x25, 0x58, 0xa9, 0xc5, 0x97, 0xbd, 0xa7, 0x87, 0x68, 0x7e, + 0x3c, 0x8f, 0xc8, 0xa1, 0x92, 0xd6, 0x8b, 0x1a, 0x47, 0x0e, 0x99, 0x8f, + 0x10, 0x52, 0x52, 0xce, 0x2e, 0x7b, 0x0f, 0xb4, 0x01, 0xf9, 0xb0, 0x9f, + 0x25, 0x9b, 0xfd, 0x27, 0x91, 0xfe, 0x0c, 0x36, 0x7c, 0xc2, 0x21, 0x6f, + 0x0d, 0xee, 0x11, 0x83, 0x3d, 0x4a, 0xcb, 0x5b, 0xad, 0x95, 0x7b, 0x8b, + 0x7b, 0x91, 0xdd, 0x25, 0x39, 0x70, 0x18, 0x48, 0x23, 0x9d, 0x14, 0x9b, + 0xba, 0xb3, 0xb9, 0x9a, 0xb7, 0x92, 0x39, 0xd1, 0x58, 0x75, 0x6d, 0x36, + 0x80, 0x38, 0xe0, 0x0f, 0x22, 0x86, 0x7d, 0xaf, 0x96, 0x1e, 0x4b, 0x80, + 0xf8, 0x24, 0xa5, 0xe5, 0xaf, 0x05, 0xb3, 0x3d, 0xf6, 0x9f, 0xca, 0xd2, + 0x82, 0x1b, 0xb4, 0x96, 0x82, 0x76, 0x9d, 0x61, 0x11, 0x8e, 0x6b, 0x9e, + 0x34, 0x88, 0xe4, 0x79, 0x15, 0x17, 0x87, 0xb2, 0xd2, 0x07, 0x0d, 0x20, + 0x83, 0xe4, 0x52, 0x52, 0x27, 0x31, 0x81, 0xce, 0xda, 0x7d, 0xb2, 0x7e, + 0x63, 0xc5, 0x5b, 0xf7, 0x7d, 0x9f, 0xe5, 0x13, 0xe4, 0xaa, 0xd8, 0xc3, + 0xea, 0x96, 0xb7, 0x9e, 0x40, 0xfc, 0xa1, 0x68, 0xed, 0xfd, 0x5b, 0xe4, + 0x92, 0x9c, 0xb4, 0x8a, 0x72, 0x0a, 0x81, 0x29, 0x29, 0x79, 0x4a, 0x54, + 0x0b, 0x94, 0x77, 0xea, 0x92, 0x9b, 0x01, 0x3e, 0x88, 0x2c, 0xb0, 0x22, + 0x13, 0xa2, 0x4a, 0x5c, 0xb9, 0x38, 0x2a, 0x2d, 0x6b, 0x9c, 0x74, 0x08, + 0xa2, 0xa7, 0x24, 0xa5, 0xc2, 0x9b, 0x52, 0xf4, 0xc8, 0x00, 0xc6, 0x9e, + 0x29, 0x0e, 0x12, 0x53, 0x53, 0x38, 0x93, 0x63, 0x7c, 0x21, 0x55, 0x57, + 0xf2, 0xe9, 0x2f, 0x66, 0xe6, 0x8d, 0x5b, 0xf9, 0x15, 0x04, 0x94, 0xd8, + 0xc2, 0x1b, 0xaf, 0x63, 0x7c, 0x5c, 0xba, 0x9c, 0x1a, 0x5c, 0x72, 0x77, + 0x34, 0x4b, 0x58, 0x17, 0x29, 0x8d, 0x60, 0xaa, 0xd6, 0xbc, 0xf0, 0xdf, + 0xee, 0x5b, 0x38, 0xb9, 0x7d, 0x4b, 0xd1, 0x2f, 0xa5, 0x9a, 0x3b, 0x80, + 0x12, 0x53, 0xd7, 0xe2, 0x66, 0x59, 0x5b, 0xbd, 0x3b, 0x03, 0x84, 0x7d, + 0x13, 0xe2, 0x15, 0xe1, 0x94, 0xc7, 0x86, 0x90, 0xfd, 0x4a, 0xf3, 0xec, + 0x8e, 0xa9, 0xd6, 0xb4, 0xad, 0xe5, 0xcc, 0x03, 0xc4, 0x42, 0xb9, 0xd2, + 0x3a, 0x96, 0x4f, 0xac, 0xda, 0x32, 0x4e, 0x8f, 0xe1, 0xc7, 0xc5, 0x25, + 0x3d, 0x77, 0xda, 0x6b, 0x26, 0xd0, 0x5e, 0x65, 0xa7, 0x54, 0xc5, 0xf7, + 0xda, 0x3f, 0x47, 0x05, 0x87, 0xbc, 0xf6, 0x54, 0xba, 0x86, 0x3b, 0xfd, + 0x11, 0x91, 0x8f, 0xce, 0xd8, 0x70, 0xf8, 0x77, 0x5c, 0x6e, 0x46, 0x77, + 0x52, 0xad, 0xee, 0x6b, 0x6e, 0x73, 0x5b, 0xdc, 0x03, 0xa2, 0x4a, 0x7d, + 0x01, 0xd9, 0x35, 0x56, 0x66, 0xe7, 0xb5, 0x91, 0xa4, 0x25, 0xf6, 0x9c, + 0x7b, 0xc1, 0xf4, 0xdc, 0x6d, 0x03, 0xb0, 0x2b, 0xce, 0x1b, 0x9d, 0x93, + 0x6b, 0x83, 0x2d, 0x79, 0x83, 0xc9, 0xd5, 0xdf, 0x82, 0xd3, 0xc7, 0xcc, + 0x66, 0x30, 0x06, 0x9c, 0xa2, 0x1c, 0x74, 0x24, 0x82, 0x1b, 0xff, 0x00, + 0x49, 0x25, 0x3d, 0x26, 0x5b, 0xd8, 0x24, 0x86, 0xf1, 0xd8, 0xf2, 0x16, + 0x3f, 0x52, 0xa4, 0xd9, 0x41, 0x8e, 0x7b, 0x29, 0xd4, 0xdc, 0xd7, 0x3c, + 0x3f, 0xd5, 0x16, 0x31, 0xe3, 0xe8, 0x9f, 0x3f, 0x02, 0xae, 0x3e, 0x80, + 0xea, 0x37, 0x18, 0x1a, 0x40, 0x6f, 0x72, 0x52, 0x53, 0xc3, 0x5a, 0xc2, + 0xcb, 0x0b, 0x5d, 0xc8, 0x50, 0x5a, 0xdd, 0x63, 0x10, 0x30, 0x8b, 0x00, + 0xd7, 0x87, 0x2c, 0xa0, 0xd2, 0x4c, 0x24, 0xa5, 0xf6, 0x3f, 0x66, 0xf8, + 0x3b, 0x26, 0x27, 0xb4, 0xa7, 0xac, 0x90, 0x74, 0xed, 0xaa, 0xba, 0xda, + 0x6e, 0xa6, 0xb6, 0xd6, 0x44, 0xd7, 0x7e, 0x9b, 0x4f, 0x89, 0xd2, 0x55, + 0x06, 0xc8, 0x29, 0x29, 0xd7, 0xb7, 0x22, 0x31, 0x70, 0xdc, 0x20, 0xb4, + 0x07, 0xb5, 0xc0, 0xf7, 0x1b, 0xbd, 0xc3, 0xee, 0x51, 0xc3, 0x61, 0x7e, + 0x59, 0x03, 0x56, 0xb5, 0xa4, 0xb4, 0x9f, 0x03, 0xc2, 0xab, 0x5b, 0x83, + 0xf1, 0x9d, 0x43, 0x8c, 0x6d, 0x3b, 0xd8, 0x7c, 0x37, 0x68, 0xef, 0xc8, + 0xb5, 0x3a, 0x65, 0x6d, 0xc7, 0xa5, 0xd9, 0x36, 0x9d, 0xb2, 0x06, 0xd9, + 0xee, 0x07, 0x1f, 0x8a, 0x4a, 0x5e, 0xf6, 0x06, 0xde, 0xf8, 0x1a, 0x86, + 0xb4, 0x8f, 0x8b, 0x5d, 0x07, 0xf2, 0xa8, 0x5a, 0xdd, 0xb9, 0x0e, 0x27, + 0xe8, 0x3c, 0x82, 0x3c, 0x9d, 0x10, 0xa5, 0x40, 0x76, 0x43, 0x8d, 0xa4, + 0xfd, 0x36, 0xd8, 0xd1, 0x3d, 0xf8, 0x77, 0xf0, 0x53, 0xc8, 0x7f, 0xa0, + 0xe7, 0x3e, 0xc6, 0x97, 0x32, 0x01, 0x69, 0x1c, 0x82, 0xef, 0x04, 0x94, + 0xc2, 0xdb, 0xbd, 0x36, 0x6c, 0x60, 0x1e, 0xab, 0x8c, 0x38, 0x8f, 0x14, + 0x06, 0x7a, 0xd5, 0x5d, 0xf6, 0x96, 0x9f, 0xa2, 0x77, 0x03, 0xe6, 0x7b, + 0x22, 0x39, 0xf8, 0xd5, 0x86, 0x33, 0xf4, 0x84, 0xc0, 0x82, 0x40, 0xf8, + 0xf6, 0x2a, 0x45, 0xcd, 0x23, 0xd3, 0x00, 0xed, 0x68, 0xdc, 0xe1, 0xf1, + 0x49, 0x4c, 0xed, 0xf4, 0xef, 0x69, 0xca, 0xa8, 0x41, 0xdb, 0xfa, 0x46, + 0x0f, 0xcd, 0xfe, 0x57, 0xc1, 0x56, 0x6b, 0x78, 0x77, 0x60, 0xd2, 0xef, + 0xf3, 0xb8, 0x53, 0x22, 0xca, 0xed, 0xac, 0x56, 0x4b, 0x6c, 0x8d, 0xce, + 0x23, 0xc3, 0x98, 0x8f, 0x82, 0x9e, 0x53, 0x9b, 0xe9, 0x96, 0x40, 0xaa, + 0xe3, 0xab, 0x99, 0x30, 0x35, 0xf0, 0x49, 0x4e, 0x7c, 0x0d, 0xe3, 0x5d, + 0x4f, 0x08, 0xd7, 0x38, 0x6d, 0xae, 0xc7, 0x79, 0xb1, 0xca, 0xbb, 0xc3, + 0x9a, 0xd0, 0x4f, 0xb5, 0xc3, 0xc7, 0xcb, 0x54, 0x5b, 0x5c, 0x1d, 0x43, + 0xa3, 0x5d, 0x1a, 0xf1, 0xf1, 0x1a, 0x24, 0xa6, 0x4f, 0x69, 0xf5, 0xea, + 0x77, 0xe7, 0x40, 0x25, 0x68, 0x6c, 0xf6, 0xc4, 0x69, 0xe0, 0xb3, 0xe9, + 0xb3, 0xd4, 0xc9, 0x64, 0xea, 0x4b, 0x41, 0x72, 0xd6, 0xd9, 0xec, 0xdf, + 0xd9, 0x25, 0x39, 0x02, 0xa3, 0x1a, 0xa1, 0xd9, 0x54, 0x02, 0x55, 0xc7, + 0x80, 0x10, 0x2f, 0x3e, 0xd4, 0x94, 0xe6, 0xbb, 0x42, 0x52, 0x53, 0x2d, + 0x92, 0x54, 0x76, 0x90, 0x92, 0x96, 0x6f, 0xd2, 0x57, 0x6b, 0xa9, 0xcf, + 0x88, 0x1f, 0xec, 0x55, 0x2a, 0x63, 0x9c, 0xf0, 0x07, 0xcc, 0xf9, 0x2d, + 0x2a, 0xe0, 0x80, 0xc6, 0x12, 0x1b, 0xe5, 0xa4, 0xfc, 0xca, 0x4a, 0x66, + 0x2b, 0xad, 0x83, 0x49, 0x73, 0xbf, 0x92, 0x3f, 0xbd, 0x36, 0xfb, 0x19, + 0xf9, 0xbb, 0x7f, 0xad, 0xfe, 0xc4, 0x4d, 0xf7, 0x54, 0x08, 0xa5, 0x85, + 0xa4, 0xfe, 0x74, 0x6e, 0x3f, 0xe7, 0x39, 0x57, 0xba, 0xac, 0xa7, 0x8d, + 0xd6, 0x38, 0x86, 0xf8, 0xb8, 0xc0, 0x49, 0x49, 0x45, 0x93, 0xdb, 0x6c, + 0xf7, 0x1f, 0xc5, 0x39, 0x3a, 0x13, 0x0d, 0x31, 0xc8, 0xfe, 0x3a, 0x2a, + 0x2d, 0x7d, 0x6d, 0xd3, 0x79, 0x71, 0xf2, 0xe1, 0x1a, 0x49, 0x00, 0xb4, + 0x90, 0x7c, 0xc7, 0x64, 0x94, 0x94, 0x5d, 0x8c, 0x46, 0xd7, 0x83, 0x59, + 0xf1, 0x1a, 0x85, 0x9f, 0x90, 0xca, 0xf7, 0x93, 0x51, 0x90, 0x89, 0x79, + 0xfd, 0xe1, 0x0a, 0xb1, 0x22, 0x74, 0x49, 0x49, 0x70, 0xeb, 0x16, 0x5a, + 0x1a, 0x78, 0xe5, 0x69, 0x63, 0xb3, 0xa9, 0xda, 0xfd, 0x98, 0xce, 0x34, + 0xd6, 0xde, 0x1e, 0x44, 0x4f, 0xc1, 0x55, 0xe9, 0x1e, 0xdc, 0xd6, 0xbb, + 0xc0, 0x2f, 0x40, 0xc3, 0xc4, 0xaa, 0xca, 0x81, 0x80, 0x49, 0x03, 0x54, + 0x94, 0xf3, 0x58, 0x3d, 0x0b, 0x7b, 0xcd, 0x9d, 0x51, 0xe6, 0xe0, 0x41, + 0x26, 0x1c, 0x4b, 0xb7, 0x1e, 0x21, 0x35, 0x7d, 0x18, 0xb2, 0xe6, 0x16, + 0x93, 0xb5, 0xae, 0x11, 0xf7, 0xf0, 0xba, 0xab, 0xf0, 0x8f, 0xe6, 0x82, + 0x7c, 0xa6, 0x07, 0xe0, 0xb3, 0x9f, 0x8e, 0x2a, 0xcd, 0xa1, 0x93, 0x2e, + 0x2e, 0x04, 0xb4, 0x70, 0x02, 0x4a, 0x77, 0x32, 0xe8, 0x61, 0xc3, 0x0c, + 0x22, 0x0c, 0x09, 0x8d, 0x17, 0x23, 0x91, 0xd2, 0x6a, 0x36, 0xbd, 0xef, + 0x21, 0xa6, 0x7d, 0x80, 0x89, 0x5d, 0x76, 0x75, 0x81, 0xad, 0x63, 0x0c, + 0x00, 0xe1, 0xaa, 0xa5, 0x55, 0x74, 0x5b, 0x61, 0xae, 0xd1, 0xb8, 0x1f, + 0xf5, 0x94, 0x94, 0xf3, 0xb4, 0xf4, 0x7c, 0x57, 0x35, 0xac, 0xb5, 0xa5, + 0xcd, 0x69, 0x3a, 0x8d, 0x09, 0xdd, 0xe2, 0x56, 0xcd, 0x1d, 0x17, 0x0d, + 0xf4, 0x0a, 0xbd, 0x06, 0x96, 0x73, 0xee, 0x3b, 0xbb, 0x47, 0x0b, 0x52, + 0xbc, 0x36, 0xd4, 0x63, 0x96, 0x8f, 0x25, 0x64, 0x06, 0x30, 0x70, 0x12, + 0x53, 0x84, 0xdf, 0xab, 0x54, 0x63, 0x0f, 0xd0, 0xde, 0xf6, 0xb2, 0x64, + 0x30, 0xea, 0x07, 0xc3, 0xc1, 0x0e, 0xea, 0x5d, 0x4b, 0x0b, 0x5a, 0x5b, + 0xa7, 0x78, 0xd5, 0x69, 0xe5, 0x5e, 0x35, 0xd7, 0xe2, 0xb2, 0xb2, 0xef, + 0x1b, 0x4a, 0x4a, 0x70, 0xfa, 0x86, 0xcb, 0x2b, 0x73, 0x0f, 0xf7, 0xac, + 0x71, 0x8c, 0x58, 0x77, 0x01, 0xb9, 0xab, 0x4f, 0x21, 0xe3, 0xdc, 0x63, + 0x99, 0x50, 0xc6, 0xda, 0x6b, 0x2d, 0x3a, 0xbc, 0x8e, 0x3c, 0x3c, 0xca, + 0x4a, 0x63, 0x3b, 0xa8, 0x6f, 0xa9, 0xcd, 0x72, 0xe6, 0x3b, 0xc8, 0x09, + 0x8f, 0x92, 0xc4, 0x1c, 0xca, 0xdd, 0xcb, 0x6b, 0x59, 0x8c, 0xf0, 0x47, + 0x97, 0xf6, 0x8f, 0xfb, 0x16, 0x23, 0xdb, 0xb4, 0xc7, 0xcc, 0x1f, 0x24, + 0x94, 0x9e, 0xa1, 0x25, 0xaf, 0xec, 0x34, 0x70, 0xf1, 0x90, 0xb4, 0x2b, + 0x6b, 0xef, 0x7b, 0x5d, 0x73, 0xa2, 0xbf, 0xa3, 0x5d, 0x63, 0x52, 0x63, + 0xf7, 0x47, 0x97, 0x8a, 0xa3, 0x8c, 0xdd, 0xc3, 0x69, 0x30, 0x08, 0xd7, + 0xe1, 0xdd, 0x5f, 0x66, 0x60, 0xac, 0x3b, 0x69, 0xdb, 0x6b, 0xa3, 0x73, + 0xc7, 0x2c, 0x69, 0x1a, 0x35, 0xbf, 0x04, 0x94, 0xdf, 0x18, 0xef, 0xc7, + 0x2c, 0x70, 0x00, 0x35, 0x84, 0x38, 0xb4, 0x98, 0x30, 0x74, 0x20, 0xfc, + 0x94, 0xb2, 0xea, 0x6e, 0x46, 0x19, 0x65, 0x47, 0x73, 0x83, 0x61, 0x87, + 0xf7, 0xf6, 0xf1, 0xf3, 0x84, 0x2a, 0x6d, 0xa4, 0x30, 0x7d, 0xa1, 0x9e, + 0xa5, 0x16, 0x00, 0x1e, 0xee, 0x48, 0x3e, 0x32, 0x95, 0xf4, 0xdb, 0x88, + 0xd1, 0x66, 0x33, 0xbd, 0x6c, 0x43, 0xab, 0x83, 0x7f, 0x37, 0xcf, 0xc8, + 0x84, 0x94, 0xd1, 0xb9, 0xa0, 0xe4, 0xb0, 0x91, 0x1b, 0x98, 0xc3, 0x1d, + 0xb8, 0x82, 0x9d, 0x84, 0x9b, 0x5d, 0xb8, 0xc0, 0x73, 0xb8, 0x3f, 0x72, + 0xb3, 0x68, 0xc7, 0xcf, 0x63, 0x1c, 0xc7, 0x0a, 0xf2, 0xaa, 0xfc, 0xd3, + 0x03, 0x78, 0x3a, 0xe9, 0xd9, 0x50, 0xbd, 0x96, 0x51, 0x73, 0xb4, 0x20, + 0x13, 0xb8, 0x4f, 0x8f, 0x82, 0x4a, 0x6e, 0xd1, 0x93, 0x5d, 0x5e, 0xb6, + 0x6b, 0xc4, 0xed, 0x3b, 0x6b, 0x07, 0xb9, 0x9d, 0x16, 0x56, 0x4d, 0xef, + 0xc9, 0x7e, 0xe7, 0x77, 0x32, 0xa5, 0x91, 0x6e, 0xf6, 0x36, 0xb6, 0xe9, + 0x53, 0x49, 0x20, 0xf8, 0x97, 0x72, 0x4a, 0xaa, 0xf3, 0xc4, 0x70, 0x04, + 0x24, 0xa4, 0xce, 0x7f, 0xb0, 0x09, 0xd0, 0x04, 0x5d, 0xde, 0xc6, 0x30, + 0x0f, 0xa6, 0xd8, 0x0a, 0xab, 0x4b, 0x4c, 0x6e, 0xfa, 0x23, 0xb2, 0x2d, + 0x99, 0x0d, 0xdf, 0x23, 0x52, 0xd1, 0x0d, 0xf0, 0x07, 0xc5, 0x25, 0x37, + 0x30, 0x31, 0xcf, 0xa8, 0x6c, 0x26, 0x44, 0xc0, 0xf9, 0x2d, 0x89, 0x3b, + 0x36, 0x79, 0x2c, 0xfe, 0x9a, 0x5a, 0x68, 0x69, 0x02, 0x00, 0x57, 0x25, + 0xfb, 0x77, 0x76, 0x49, 0x4e, 0x5b, 0xaf, 0x67, 0x8a, 0x0d, 0xb6, 0xb4, + 0x83, 0x0a, 0xa8, 0xae, 0xc2, 0x9c, 0xd6, 0xe1, 0xca, 0x4a, 0x60, 0x5d, + 0xaa, 0x2b, 0x44, 0xf2, 0x80, 0xed, 0x0a, 0x9d, 0x4e, 0x33, 0x09, 0x29, + 0x37, 0xf3, 0x4d, 0xde, 0xd1, 0x26, 0x75, 0x45, 0xab, 0x28, 0x3b, 0xda, + 0xc1, 0xb3, 0xc8, 0x09, 0xfc, 0xa8, 0x6d, 0x00, 0xb1, 0xcd, 0x3c, 0x92, + 0x23, 0xee, 0x50, 0xa8, 0xb4, 0x3b, 0x61, 0x25, 0x8e, 0x98, 0x90, 0x25, + 0x25, 0x3a, 0xf5, 0xd8, 0x6a, 0x68, 0xd4, 0x6e, 0x3a, 0xed, 0x3e, 0xe3, + 0xf3, 0xf0, 0x40, 0x7b, 0x0e, 0x43, 0xe5, 0xc4, 0xd8, 0xef, 0xde, 0x76, + 0x8c, 0x6a, 0x9b, 0x2a, 0xad, 0x95, 0xcc, 0x8d, 0x7b, 0x77, 0x3f, 0xd6, + 0x2a, 0x16, 0xb5, 0xf0, 0xed, 0xe6, 0x18, 0x34, 0x0d, 0x9e, 0x4a, 0x4a, + 0x66, 0xce, 0x9e, 0x1c, 0x09, 0x0e, 0x6f, 0xde, 0x10, 0xad, 0x63, 0x6a, + 0x05, 0xa5, 0xdf, 0x25, 0x06, 0xd1, 0x90, 0x4e, 0xf3, 0xed, 0x8f, 0xa2, + 0x38, 0x8f, 0x82, 0x05, 0xce, 0x7e, 0xe2, 0x1c, 0x77, 0x1e, 0xe0, 0x04, + 0x94, 0x8a, 0xcd, 0x74, 0x9d, 0x02, 0x09, 0x81, 0xf1, 0x4e, 0xe7, 0x4f, + 0x68, 0x51, 0x02, 0x52, 0x53, 0x7b, 0xa3, 0xb8, 0x0c, 0x92, 0x0f, 0x25, + 0xa6, 0x17, 0x71, 0xd2, 0xf3, 0x25, 0x81, 0xbd, 0xf8, 0x85, 0xe7, 0x95, + 0x58, 0x69, 0xb5, 0xaf, 0x1f, 0x9b, 0xcf, 0xc1, 0x74, 0xb8, 0x59, 0x85, + 0x85, 0xa6, 0x52, 0x53, 0xd9, 0xd9, 0x90, 0x05, 0x73, 0x3f, 0x15, 0x89, + 0x84, 0xe3, 0x91, 0xd4, 0xbd, 0x43, 0xc3, 0x49, 0x83, 0xf0, 0x43, 0xca, + 0xce, 0x71, 0xa0, 0x57, 0x5e, 0xaf, 0xb3, 0xda, 0xdf, 0x9a, 0x1f, 0x4e, + 0xce, 0xab, 0xa6, 0xe4, 0x3a, 0xac, 0xb1, 0xee, 0x11, 0xb4, 0xf6, 0x3e, + 0x69, 0x29, 0xde, 0xea, 0x44, 0x17, 0x01, 0xe1, 0x10, 0x55, 0x27, 0x58, + 0xfc, 0x7b, 0x18, 0xe7, 0x0f, 0xd1, 0xbb, 0x93, 0xdc, 0x20, 0x75, 0x1f, + 0xac, 0x18, 0xee, 0x73, 0x5c, 0xcd, 0x47, 0x24, 0x0d, 0x65, 0x07, 0x13, + 0x2a, 0xce, 0xa9, 0x68, 0xad, 0x95, 0xb9, 0x95, 0x0f, 0xa4, 0xe7, 0x0e, + 0xc9, 0x29, 0xe8, 0x2a, 0xcc, 0x6b, 0xc6, 0xa4, 0x00, 0x35, 0x05, 0x42, + 0xfc, 0xa6, 0x81, 0xb4, 0x1d, 0x4a, 0xc8, 0xbf, 0x1b, 0x2b, 0x01, 0xd2, + 0xdf, 0x7d, 0x47, 0x8f, 0x10, 0xa1, 0xf6, 0xbd, 0xed, 0xdc, 0x0e, 0xbd, + 0xc2, 0x4a, 0x67, 0x99, 0x7e, 0xdd, 0x01, 0x59, 0x17, 0xdc, 0x4b, 0x4c, + 0x92, 0x7c, 0xcf, 0x28, 0xf7, 0xda, 0x5c, 0xed, 0x55, 0x1b, 0x01, 0x2e, + 0x02, 0x52, 0x52, 0x27, 0xb2, 0x6b, 0x24, 0xfd, 0xdf, 0x15, 0x6a, 0x9c, + 0x71, 0x5d, 0x21, 0xb6, 0xd8, 0x1a, 0xd8, 0x92, 0x78, 0xd3, 0x9d, 0x4a, + 0xa7, 0xd4, 0x5e, 0x6a, 0xc6, 0x76, 0xdd, 0x0e, 0x9a, 0xfc, 0xd6, 0x4d, + 0xf9, 0xd9, 0x39, 0x0d, 0x0d, 0xb1, 0xe4, 0xb4, 0x76, 0x1a, 0x04, 0x94, + 0xdc, 0xcc, 0xea, 0x0c, 0xbe, 0xe2, 0xc6, 0xff, 0x00, 0x34, 0xdd, 0x01, + 0xf1, 0x3e, 0x2a, 0x9e, 0x43, 0x44, 0xc8, 0xec, 0x82, 0xde, 0x51, 0x09, + 0x91, 0xaf, 0x82, 0x4a, 0x67, 0x4b, 0xc8, 0xde, 0xd1, 0xcb, 0x9b, 0x03, + 0xe4, 0xa3, 0x8e, 0x4e, 0xee, 0x7e, 0x97, 0xb6, 0x7c, 0x0f, 0x64, 0x3f, + 0x73, 0x60, 0xf8, 0xf0, 0x42, 0x93, 0x1c, 0x77, 0xc9, 0x1a, 0x1e, 0x52, + 0x53, 0xa5, 0x43, 0xdf, 0x5d, 0x37, 0x34, 0x9d, 0x1b, 0x0e, 0x0d, 0x3e, + 0x7c, 0xa2, 0x61, 0xf5, 0x2a, 0xd9, 0xa3, 0x89, 0x6f, 0x60, 0xe1, 0xf9, + 0x0a, 0xa6, 0x6d, 0x75, 0xb4, 0x96, 0x8d, 0x5e, 0x74, 0x27, 0xc9, 0x06, + 0x9a, 0x88, 0x7e, 0xd7, 0x0d, 0x12, 0x53, 0x67, 0x37, 0x22, 0xab, 0x9d, + 0x35, 0x97, 0x97, 0x4f, 0xc4, 0x04, 0x21, 0x6e, 0x53, 0x99, 0xe9, 0xb8, + 0x17, 0xb3, 0xf3, 0x67, 0x91, 0xf0, 0x56, 0xab, 0xa1, 0xa0, 0x71, 0xaa, + 0x23, 0x6a, 0x6c, 0xea, 0x0a, 0x4a, 0x68, 0x0c, 0x7b, 0x9f, 0x32, 0x23, + 0xc4, 0x76, 0x4c, 0xfc, 0x4b, 0x5a, 0xd9, 0xdb, 0xa2, 0xd2, 0xd8, 0xea, + 0xcc, 0xd6, 0x43, 0x87, 0x81, 0x53, 0xfb, 0x76, 0x43, 0x00, 0x05, 0x8c, + 0x3f, 0x10, 0x09, 0x49, 0x4e, 0x3d, 0x74, 0x1d, 0xd0, 0xe1, 0xa4, 0x21, + 0xb9, 0x80, 0x38, 0x01, 0xc1, 0x5b, 0x99, 0x17, 0x59, 0x68, 0x6b, 0xdd, + 0x58, 0x6b, 0x47, 0xe6, 0xb4, 0x01, 0xa7, 0x75, 0x95, 0x90, 0xc6, 0xee, + 0xf5, 0x1a, 0x23, 0x88, 0x1e, 0x49, 0x29, 0xd6, 0xe9, 0xd5, 0xb7, 0xec, + 0xc0, 0x46, 0xad, 0xe4, 0xad, 0x8d, 0x8d, 0xfb, 0x14, 0xc6, 0xaa, 0x86, + 0x0b, 0x43, 0x31, 0xdb, 0xbb, 0x97, 0x2d, 0x6d, 0x9f, 0xab, 0x47, 0xcd, + 0x25, 0x3c, 0xb3, 0xaa, 0x8e, 0x02, 0x5f, 0x65, 0x2e, 0x12, 0xad, 0x8a, + 0xc1, 0x28, 0xbb, 0x40, 0x10, 0x92, 0x9e, 0x7f, 0x2a, 0xbf, 0x4e, 0xc8, + 0x41, 0x6c, 0xce, 0x8a, 0xe7, 0x52, 0x11, 0x6a, 0xab, 0x5f, 0x24, 0xa4, + 0xa6, 0x7b, 0xcc, 0xfc, 0x13, 0xdf, 0x51, 0xae, 0xd0, 0xee, 0x03, 0xa0, + 0x8f, 0x9a, 0xd0, 0xe9, 0xd8, 0x2d, 0xb0, 0x7d, 0xa7, 0x20, 0x11, 0x43, + 0x24, 0x9f, 0x33, 0xd8, 0x21, 0x1a, 0xec, 0xce, 0xbc, 0xbb, 0x6c, 0x37, + 0xf3, 0x63, 0x88, 0x49, 0x4d, 0x9c, 0x67, 0x32, 0xd6, 0x86, 0xb8, 0x6e, + 0x70, 0xd5, 0xa4, 0x23, 0xbd, 0x95, 0x87, 0x17, 0xbb, 0xe9, 0x4c, 0xc7, + 0x3c, 0xf9, 0x2a, 0x43, 0x22, 0xcc, 0x07, 0xfa, 0x76, 0x4b, 0xda, 0x78, + 0xdb, 0xed, 0xd3, 0xce, 0x15, 0xcd, 0xed, 0xc8, 0x60, 0x75, 0x6e, 0xdf, + 0x3f, 0x99, 0xa3, 0x4b, 0x7e, 0x49, 0x29, 0x1d, 0xb7, 0x48, 0x22, 0x76, + 0xfe, 0x2e, 0x54, 0x2d, 0xde, 0xe9, 0xf6, 0x98, 0xf3, 0xd1, 0x59, 0xb6, + 0xa8, 0x27, 0xdb, 0x07, 0xbc, 0x7f, 0xa8, 0x55, 0xac, 0x6c, 0x0d, 0x4c, + 0x24, 0xa6, 0xb3, 0x98, 0x41, 0xd7, 0x44, 0xd1, 0x24, 0x00, 0x35, 0x29, + 0xc9, 0x13, 0x0d, 0xd4, 0xf8, 0xa2, 0x34, 0x1a, 0x9b, 0xeb, 0x1f, 0xa5, + 0xc3, 0x07, 0x9f, 0x8f, 0xc9, 0x25, 0x20, 0xb3, 0x47, 0x11, 0xcc, 0x68, + 0xb4, 0xb0, 0xef, 0x3e, 0x93, 0x09, 0xed, 0xed, 0x3f, 0x2e, 0x16, 0x61, + 0xe5, 0x6c, 0xfd, 0x5f, 0xe9, 0xd7, 0x75, 0x17, 0xd9, 0x8e, 0xd1, 0xb5, + 0x9a, 0x13, 0x61, 0xe0, 0x1e, 0x3e, 0xf4, 0x94, 0xec, 0xe1, 0x96, 0x3a, + 0xca, 0xed, 0x3a, 0xc0, 0xf6, 0xfc, 0x54, 0xf3, 0x71, 0xab, 0xc8, 0x82, + 0xf2, 0x04, 0xcf, 0x25, 0x57, 0xbb, 0x13, 0x27, 0xa6, 0x17, 0xd7, 0x2e, + 0xba, 0xba, 0xc1, 0x3e, 0xa8, 0x69, 0x00, 0x4f, 0x8a, 0x58, 0x58, 0xd6, + 0x65, 0x86, 0xba, 0xeb, 0x83, 0x0b, 0xb5, 0x73, 0x36, 0xee, 0xd0, 0xf1, + 0xca, 0x4a, 0x65, 0x8b, 0xd1, 0xda, 0xdb, 0x7d, 0xd7, 0x02, 0xde, 0x40, + 0x90, 0xba, 0x1c, 0x1c, 0x5a, 0xf1, 0xda, 0x36, 0xb8, 0x19, 0xf0, 0x20, + 0xac, 0xd6, 0x7d, 0x5f, 0xac, 0x9d, 0xc7, 0x2a, 0x59, 0xd8, 0x06, 0x89, + 0xfc, 0x52, 0xb3, 0xa4, 0x62, 0x34, 0x98, 0xba, 0xd3, 0x1d, 0x81, 0x00, + 0xff, 0x00, 0xd1, 0x49, 0x4e, 0xe5, 0xce, 0x0e, 0x96, 0x12, 0x20, 0xf2, + 0xb1, 0x32, 0xf1, 0x46, 0xe7, 0xbe, 0x90, 0x1b, 0x63, 0x7e, 0x93, 0x7f, + 0x35, 0xe3, 0xc5, 0x31, 0xe9, 0x74, 0xb4, 0xee, 0x65, 0xd7, 0x30, 0x92, + 0x36, 0xcb, 0xc9, 0xfc, 0xaa, 0xc3, 0x3d, 0x3a, 0x2b, 0x2d, 0x7d, 0x9e, + 0xa3, 0xc7, 0x24, 0xf8, 0x24, 0xa7, 0x1e, 0xd8, 0xdf, 0x1c, 0x77, 0x82, + 0x87, 0xb5, 0xa3, 0x5e, 0x4a, 0x3d, 0x83, 0xd4, 0xb5, 0xc7, 0xb1, 0x40, + 0xc8, 0x7b, 0x2a, 0x61, 0x3d, 0xc2, 0x4a, 0x72, 0xba, 0xc5, 0xa3, 0x6e, + 0xc1, 0xdc, 0x81, 0x1f, 0x0d, 0x56, 0x4a, 0xb9, 0x9e, 0x1c, 0xe2, 0x1e, + 0xef, 0x1f, 0xca, 0xaa, 0x06, 0x93, 0xc7, 0xe5, 0x49, 0x4b, 0x8d, 0x39, + 0xe5, 0x49, 0xe2, 0x1a, 0x35, 0xd5, 0x3b, 0x6a, 0x2d, 0xf7, 0xbf, 0x81, + 0xac, 0x29, 0x51, 0x60, 0x0f, 0xdc, 0xee, 0x4f, 0x07, 0xc1, 0x25, 0x31, + 0xae, 0xb7, 0xda, 0xe8, 0x68, 0xf7, 0x77, 0x57, 0xe9, 0xc6, 0x0d, 0x86, + 0xd9, 0xf4, 0x95, 0xc6, 0x9c, 0x5c, 0x86, 0xd6, 0xdc, 0x56, 0x93, 0x71, + 0x1e, 0xf6, 0x34, 0x78, 0x77, 0x28, 0x79, 0x78, 0xee, 0xae, 0xb7, 0x3c, + 0xbf, 0xf4, 0xcd, 0x3f, 0x44, 0x70, 0x21, 0x25, 0x24, 0xaf, 0x16, 0xb6, + 0xeb, 0x1a, 0xa8, 0x5f, 0x8a, 0x0f, 0xb9, 0xba, 0x14, 0xf8, 0xd9, 0x1e, + 0xa3, 0x43, 0xbc, 0x91, 0x5c, 0xe2, 0x42, 0x4a, 0x45, 0x4e, 0x90, 0x1d, + 0xf3, 0x56, 0x3d, 0x8e, 0x22, 0x74, 0x85, 0x4f, 0x7e, 0xd7, 0xcf, 0x0a, + 0xf5, 0x01, 0x8e, 0x00, 0xba, 0x09, 0x29, 0x29, 0x76, 0x51, 0xbc, 0xfb, + 0x7e, 0xf5, 0x61, 0xbd, 0x3d, 0x80, 0x4b, 0x9c, 0x24, 0xf0, 0x8b, 0x51, + 0x68, 0x3b, 0x60, 0x00, 0x55, 0x81, 0x48, 0x77, 0x07, 0x4f, 0x1e, 0xc9, + 0x29, 0xcf, 0xb7, 0x04, 0x90, 0x4c, 0x92, 0xb2, 0xf2, 0x30, 0x1c, 0xd7, + 0x88, 0x33, 0xa8, 0x90, 0x56, 0xe6, 0x66, 0x4d, 0x38, 0x95, 0x97, 0x58, + 0x64, 0x03, 0xf7, 0xfd, 0xeb, 0x3e, 0xab, 0x6c, 0xca, 0x77, 0xaa, 0x61, + 0xb5, 0xfe, 0x63, 0x40, 0x89, 0xf3, 0x29, 0x29, 0x3b, 0x04, 0x35, 0xac, + 0xe2, 0x22, 0x16, 0xa6, 0xf6, 0xfa, 0x1f, 0x28, 0x85, 0x42, 0xba, 0x9d, + 0xbc, 0x3d, 0xdc, 0x2b, 0x5e, 0xa5, 0x31, 0xf4, 0x84, 0xf8, 0x24, 0xa6, + 0x8b, 0x71, 0xdc, 0x58, 0x6c, 0x03, 0xda, 0x3b, 0x94, 0x37, 0x40, 0x5b, + 0x0c, 0x68, 0x0d, 0x75, 0x4e, 0x6f, 0xe8, 0x9c, 0x0f, 0x1e, 0x05, 0x4b, + 0x67, 0x4a, 0xe9, 0x3d, 0x3f, 0xd4, 0xba, 0x97, 0xe5, 0x5a, 0xe3, 0x0e, + 0x79, 0x6e, 0xed, 0xb3, 0xc4, 0x00, 0x92, 0x9e, 0x27, 0xa9, 0x8f, 0xd2, + 0xca, 0xb3, 0xd0, 0x7a, 0x2e, 0x47, 0x52, 0xb6, 0x43, 0x48, 0xa1, 0xa7, + 0xde, 0xf3, 0xf9, 0x02, 0xd4, 0xc4, 0xe8, 0x67, 0xaf, 0x65, 0x7d, 0xa3, + 0x63, 0xb1, 0xb0, 0x83, 0xa4, 0xe9, 0x05, 0xc3, 0xf9, 0x2b, 0xb5, 0xc7, + 0xc4, 0xa3, 0x17, 0x1d, 0xb8, 0xf8, 0xec, 0x0c, 0x63, 0x34, 0x10, 0x92, + 0x9e, 0x73, 0xa9, 0xf4, 0x91, 0xb2, 0x9c, 0x2a, 0x0e, 0xd6, 0x01, 0x2e, + 0x68, 0xfe, 0x28, 0x3f, 0xb2, 0x6a, 0xc2, 0xa4, 0x03, 0xf4, 0xbb, 0x95, + 0xd2, 0x5b, 0x48, 0x92, 0xf8, 0xf7, 0x78, 0xfc, 0x16, 0x46, 0x75, 0x9b, + 0x89, 0x61, 0x6c, 0x8f, 0x14, 0x94, 0xf3, 0x7d, 0x4f, 0x19, 0xa4, 0x12, + 0x20, 0x9e, 0x43, 0x82, 0xce, 0xa0, 0xea, 0x1a, 0x24, 0x11, 0xf9, 0xdc, + 0x2d, 0x1c, 0xba, 0x9f, 0x5b, 0x9c, 0x1b, 0x30, 0x78, 0x05, 0x66, 0xdc, + 0xd7, 0x02, 0x2e, 0x1e, 0xdf, 0x16, 0x8e, 0x3e, 0x29, 0x29, 0xb4, 0xea, + 0xed, 0x3f, 0x46, 0xcf, 0xbc, 0xff, 0x00, 0xbd, 0x0a, 0xcc, 0x77, 0x1d, + 0x6c, 0x25, 0xe7, 0xc1, 0xa2, 0x07, 0xde, 0x53, 0x57, 0x91, 0x63, 0x86, + 0x8e, 0x81, 0xe4, 0x88, 0x6c, 0x60, 0x12, 0xf3, 0x3e, 0x6e, 0x3f, 0x93, + 0xc5, 0x25, 0x35, 0xcd, 0x0e, 0x3e, 0x15, 0x56, 0x39, 0x8e, 0x7f, 0xda, + 0x55, 0x7b, 0xed, 0x6b, 0xbd, 0xac, 0x10, 0xd1, 0xa0, 0x1e, 0x00, 0x23, + 0x5d, 0x63, 0xed, 0x9d, 0x83, 0x6d, 0x63, 0xf3, 0x8e, 0x8a, 0x5d, 0x2b, + 0xa6, 0xd9, 0xd4, 0xfa, 0x85, 0x58, 0x55, 0xcf, 0xbc, 0xcb, 0xdf, 0xfb, + 0xac, 0x1f, 0x48, 0xa4, 0xa7, 0x47, 0xea, 0xb7, 0xd5, 0xab, 0x3a, 0xce, + 0x47, 0xa9, 0x68, 0x2d, 0xc4, 0xac, 0xc3, 0x88, 0xd0, 0xbc, 0xf8, 0x0f, + 0x87, 0x75, 0xe8, 0x2f, 0x75, 0x18, 0x0c, 0xaf, 0xa7, 0x74, 0xea, 0xd8, + 0xc7, 0xc4, 0x0d, 0xa3, 0x46, 0x37, 0xf7, 0x8a, 0x3d, 0x54, 0x51, 0xd2, + 0x7a, 0x73, 0x28, 0xc5, 0x68, 0x66, 0x81, 0x95, 0xb7, 0xbc, 0x7f, 0x79, + 0x43, 0x18, 0xf5, 0x62, 0xed, 0x73, 0xcf, 0xa9, 0x97, 0x7e, 0xa2, 0x7b, + 0x04, 0x94, 0xe7, 0xf5, 0x56, 0xd1, 0xd3, 0x7a, 0x6d, 0xce, 0x73, 0x8d, + 0xb6, 0x39, 0xa4, 0x92, 0xed, 0x4b, 0x9c, 0x7b, 0xc2, 0xe4, 0x31, 0x45, + 0xd7, 0xd1, 0x5d, 0xac, 0x05, 0xaf, 0x20, 0x41, 0xf1, 0x5d, 0xaf, 0x50, + 0xfb, 0x3e, 0x25, 0x56, 0x65, 0x65, 0x3b, 0x73, 0xb6, 0xf7, 0xe2, 0x17, + 0x17, 0x87, 0xd5, 0xab, 0xbb, 0x2a, 0xc0, 0xd0, 0x19, 0x58, 0x71, 0xf4, + 0xc0, 0xf0, 0x49, 0x4e, 0x8d, 0x3d, 0x2f, 0xa8, 0x3a, 0x0b, 0x9c, 0x63, + 0x9f, 0xa4, 0x55, 0xdd, 0xb7, 0x63, 0x00, 0xd7, 0x07, 0x3c, 0x9d, 0x1a, + 0x5a, 0x27, 0xef, 0x45, 0xc4, 0xcb, 0x0e, 0xac, 0x03, 0x10, 0x78, 0x33, + 0xf8, 0x2b, 0xa3, 0x2f, 0x18, 0x0d, 0xb2, 0x09, 0x49, 0x4e, 0x5b, 0xd9, + 0x90, 0xd7, 0x6f, 0x26, 0x09, 0xe1, 0xbe, 0x6a, 0x9d, 0xae, 0xb9, 0xe4, + 0x87, 0x11, 0xbb, 0xbc, 0x68, 0x16, 0x8e, 0x76, 0x65, 0x46, 0x60, 0x85, + 0x83, 0x6e, 0x61, 0x73, 0x9d, 0xe9, 0x82, 0xe2, 0x7e, 0xe4, 0x94, 0x9e, + 0xcb, 0x1b, 0x45, 0x44, 0xbc, 0xcb, 0xca, 0xa0, 0x43, 0xef, 0x78, 0x73, + 0xb4, 0x68, 0xec, 0x8a, 0xda, 0x2c, 0xb0, 0xef, 0xb7, 0x53, 0xf8, 0x23, + 0x36, 0xb8, 0x02, 0x44, 0x04, 0x94, 0xe5, 0x75, 0x0a, 0x7f, 0x40, 0x5c, + 0x47, 0xd1, 0x59, 0x6d, 0x63, 0x9d, 0xc2, 0xdf, 0xcd, 0x61, 0x7d, 0x6e, + 0x1d, 0xe0, 0xac, 0xbc, 0x2a, 0xb7, 0x5b, 0x63, 0x60, 0x7b, 0x61, 0xda, + 0xc7, 0xef, 0x0f, 0x14, 0x94, 0xd6, 0x6b, 0xc8, 0x05, 0x8e, 0xe3, 0xf2, + 0x29, 0x30, 0x36, 0x06, 0xe6, 0x9f, 0x92, 0xbd, 0x7f, 0x4f, 0x73, 0xc0, + 0x2d, 0x10, 0x48, 0xfc, 0x92, 0x3f, 0x82, 0xa4, 0x45, 0xcc, 0x77, 0xa7, + 0x60, 0xdb, 0x1e, 0x29, 0x29, 0xd0, 0xc3, 0xcd, 0x6e, 0x34, 0x7a, 0x43, + 0x69, 0x3c, 0x34, 0x72, 0x55, 0xdb, 0x31, 0x72, 0x2e, 0x22, 0xdc, 0xa6, + 0xfa, 0x15, 0x58, 0x24, 0x0f, 0xce, 0x31, 0xe5, 0xd9, 0x64, 0xe3, 0x5c, + 0x2a, 0x76, 0x8c, 0x05, 0xc7, 0x88, 0xfa, 0x52, 0xb7, 0x2a, 0xc4, 0xba, + 0xe6, 0x57, 0x7e, 0x75, 0xcd, 0x6d, 0x07, 0x8a, 0x9a, 0xe9, 0x74, 0x0e, + 0xc4, 0xf6, 0x49, 0x4e, 0x5f, 0x4f, 0xa6, 0xc7, 0xdc, 0xea, 0xab, 0x12, + 0xd6, 0x9d, 0x1e, 0x78, 0x85, 0xb2, 0xde, 0x96, 0xe7, 0x37, 0xdc, 0xe2, + 0x27, 0xb8, 0x08, 0xdd, 0x3a, 0xba, 0x4b, 0xec, 0x75, 0x4d, 0x0d, 0xa8, + 0xbe, 0x18, 0x00, 0xd2, 0x16, 0xb6, 0xd8, 0xe0, 0x42, 0x4a, 0x79, 0x0e, + 0xa7, 0x87, 0x93, 0x88, 0xed, 0xe0, 0x8b, 0x2a, 0xee, 0x47, 0x21, 0x2c, + 0x3b, 0x37, 0x34, 0x16, 0x95, 0xa3, 0xd7, 0x32, 0x2a, 0xad, 0xa5, 0xbc, + 0xb8, 0xf7, 0x58, 0x38, 0x97, 0x8a, 0xad, 0x20, 0xe8, 0xc7, 0xea, 0x3c, + 0x02, 0x4a, 0x77, 0xe9, 0x78, 0x24, 0x49, 0x93, 0xe6, 0xad, 0xfd, 0xa3, + 0x6b, 0x4e, 0xe3, 0xed, 0x1c, 0xc7, 0x80, 0x58, 0xce, 0xb9, 0xb1, 0x2d, + 0x77, 0xcd, 0x49, 0xb7, 0xd8, 0xf6, 0x8a, 0xc6, 0xa4, 0x91, 0xa7, 0x8f, + 0xc5, 0x25, 0x2f, 0x92, 0x7e, 0xd3, 0x7f, 0xab, 0x68, 0x26, 0xb1, 0xf4, + 0x19, 0xdb, 0xc7, 0x55, 0x26, 0xe8, 0xe0, 0xe1, 0xa4, 0x9e, 0x3b, 0x68, + 0xa4, 0xd6, 0x31, 0xac, 0x8d, 0x01, 0x32, 0x4b, 0x7c, 0x86, 0x92, 0x50, + 0xfd, 0x4f, 0x57, 0x27, 0xd3, 0x68, 0xd1, 0xa2, 0x5c, 0x52, 0x53, 0x3c, + 0xfe, 0xa1, 0x76, 0x3b, 0x19, 0x65, 0x6d, 0xdc, 0x06, 0x84, 0x2c, 0xdf, + 0xda, 0x57, 0xee, 0xf5, 0xf6, 0xf7, 0x9d, 0xbd, 0x96, 0xbb, 0xea, 0xae, + 0xca, 0x4b, 0x5d, 0x0e, 0x11, 0xc2, 0xcf, 0xfb, 0x3b, 0x63, 0xd2, 0xdb, + 0xdf, 0x8f, 0x24, 0x94, 0xf4, 0x55, 0x5f, 0xb8, 0x0d, 0xda, 0x3d, 0xb1, + 0xce, 0x9a, 0xff, 0x00, 0x2a, 0x78, 0x56, 0xdb, 0x7c, 0xeb, 0xc0, 0x8d, + 0x42, 0x36, 0x4e, 0x2d, 0x39, 0x22, 0x40, 0xf4, 0xad, 0x9d, 0x1c, 0x3f, + 0x3b, 0xe2, 0xb3, 0x6c, 0xf5, 0xb1, 0x1c, 0x3d, 0x66, 0x90, 0xd0, 0x63, + 0x77, 0x35, 0x99, 0x3d, 0xff, 0x00, 0x75, 0x25, 0x3a, 0xf4, 0xdc, 0xea, + 0x9a, 0x20, 0x01, 0x5f, 0x87, 0x80, 0x57, 0x2a, 0xc9, 0xad, 0xfc, 0x1e, + 0x7b, 0x1e, 0x56, 0x4d, 0x59, 0x6d, 0xb5, 0xa1, 0x91, 0xb4, 0xbb, 0xe8, + 0xfc, 0x3c, 0x8a, 0x2d, 0x98, 0xc5, 0x9b, 0x4e, 0xed, 0x7b, 0x00, 0x7b, + 0xf8, 0xca, 0x4a, 0x74, 0xec, 0x78, 0x7b, 0x7c, 0xd6, 0x46, 0x4b, 0x1b, + 0xbb, 0xc0, 0xa9, 0x3b, 0x36, 0xca, 0x88, 0x65, 0x9c, 0x9e, 0xfe, 0x2a, + 0xbd, 0xf6, 0x87, 0x02, 0x66, 0x3c, 0xd2, 0x53, 0x4f, 0x26, 0x86, 0xb8, + 0x92, 0x75, 0x01, 0x67, 0xe5, 0xe1, 0x54, 0x6b, 0x2e, 0x68, 0x82, 0x16, + 0x83, 0xfd, 0xfa, 0xcf, 0xb0, 0xaa, 0x99, 0x66, 0x19, 0x33, 0xcf, 0x29, + 0x29, 0xe7, 0x1c, 0x1e, 0xcb, 0x0b, 0x4e, 0x9e, 0x1e, 0x0a, 0x6d, 0x0c, + 0x07, 0x73, 0xfd, 0xc4, 0x70, 0x0f, 0x0a, 0xed, 0x18, 0x94, 0xd8, 0x2f, + 0xca, 0xca, 0x7e, 0xda, 0x6a, 0x1a, 0x78, 0x97, 0x1e, 0x10, 0x31, 0x71, + 0x6f, 0xea, 0x16, 0x1a, 0xb0, 0xaa, 0x91, 0xf9, 0xcf, 0x76, 0x8c, 0x68, + 0xfe, 0x51, 0x49, 0x4d, 0x5b, 0x5e, 0xeb, 0x3c, 0x87, 0x6f, 0xfc, 0xc4, + 0x2e, 0xd7, 0xea, 0x0d, 0x7d, 0x3a, 0x8a, 0xdf, 0x7b, 0xdc, 0x0e, 0x45, + 0x9a, 0x12, 0x79, 0x80, 0x78, 0x0a, 0x86, 0x37, 0x42, 0xc3, 0xc5, 0xf7, + 0x5e, 0x7d, 0x7b, 0x46, 0x9b, 0x9e, 0x21, 0x93, 0xe0, 0x1a, 0x89, 0x9f, + 0x4b, 0xf1, 0xc3, 0x72, 0xb1, 0x86, 0xc3, 0x58, 0x93, 0x1a, 0x02, 0xdf, + 0x08, 0x1e, 0x09, 0x29, 0xed, 0x6a, 0x3f, 0x6f, 0xc9, 0xf5, 0xa7, 0xf4, + 0x35, 0x98, 0x60, 0xed, 0x03, 0x92, 0xa9, 0x59, 0x93, 0x5d, 0xdd, 0x70, + 0xb3, 0x76, 0xef, 0x44, 0x00, 0x40, 0xe1, 0xb3, 0x2b, 0x07, 0xa1, 0xf5, + 0xeb, 0x2b, 0xb3, 0xd0, 0xb1, 0xde, 0xc3, 0xa8, 0xf9, 0xa2, 0x7d, 0xb7, + 0x1f, 0x0b, 0xa8, 0x5c, 0xf6, 0x9d, 0xcd, 0xc8, 0x20, 0xc9, 0xec, 0x42, + 0x4a, 0x45, 0xfe, 0x30, 0x5a, 0xe1, 0x8f, 0x59, 0x6c, 0xed, 0xde, 0x01, + 0x83, 0xa4, 0x47, 0x75, 0xc3, 0x52, 0xf7, 0xb1, 0xe1, 0xcc, 0xfa, 0x4b, + 0xd0, 0xfa, 0xe6, 0x35, 0xdd, 0x6f, 0xa6, 0x16, 0x52, 0xe8, 0x73, 0x4e, + 0xf6, 0x0e, 0xce, 0x2d, 0x1f, 0x45, 0x79, 0xfd, 0x2d, 0x2c, 0xb8, 0xb1, + 0xe3, 0x6b, 0x9a, 0x60, 0x83, 0xc8, 0x33, 0x09, 0x29, 0xbe, 0xce, 0xa5, + 0x95, 0x53, 0x0b, 0x88, 0xd0, 0x72, 0x02, 0x93, 0x7a, 0xd5, 0xd6, 0x18, + 0x03, 0x6f, 0xcd, 0x5a, 0x6f, 0x4f, 0x16, 0xd4, 0x74, 0xd1, 0xc2, 0x16, + 0x48, 0xc6, 0x7d, 0x19, 0x26, 0x8b, 0x34, 0x77, 0x69, 0xee, 0x3c, 0x52, + 0x53, 0xa6, 0xd7, 0x5b, 0x70, 0x97, 0xb8, 0x9f, 0x25, 0x76, 0x86, 0x31, + 0xac, 0x40, 0xc3, 0xc6, 0x79, 0x10, 0x5a, 0xb4, 0xa9, 0xc6, 0xd9, 0xf4, + 0xb4, 0x94, 0x94, 0xc1, 0xa2, 0x46, 0xa3, 0xe4, 0x91, 0x66, 0x86, 0x4a, + 0x33, 0xc0, 0x6f, 0x08, 0x65, 0xcd, 0xda, 0x65, 0x25, 0x34, 0x72, 0x18, + 0x0b, 0x49, 0x3c, 0x42, 0xa7, 0xd3, 0x28, 0x26, 0xcb, 0xdf, 0xd8, 0x9f, + 0x4e, 0x24, 0x09, 0xef, 0xdd, 0x59, 0xcc, 0xbc, 0x34, 0x18, 0xed, 0xc1, + 0x45, 0xe8, 0x95, 0xce, 0x13, 0xde, 0xe3, 0xf4, 0xee, 0xdd, 0x1a, 0x77, + 0x69, 0x13, 0xb4, 0xf3, 0xc2, 0x4a, 0x6c, 0xd3, 0x41, 0xb1, 0xc2, 0xb1, + 0x00, 0x00, 0x07, 0x70, 0x26, 0x27, 0xe8, 0xfc, 0xd0, 0xfa, 0x87, 0x46, + 0x65, 0xcd, 0x2f, 0x80, 0xe2, 0x06, 0x84, 0x48, 0xf9, 0x85, 0x7e, 0x86, + 0xb4, 0x59, 0xb5, 0xd2, 0x0c, 0xed, 0x91, 0x32, 0x00, 0xd1, 0x17, 0x20, + 0x91, 0x5e, 0x86, 0x46, 0x90, 0x79, 0x9f, 0xb9, 0x25, 0x3c, 0x5e, 0x46, + 0x0e, 0x5e, 0x23, 0xbd, 0xb2, 0x5a, 0x35, 0x95, 0x6f, 0xa4, 0xe3, 0xdd, + 0x9c, 0xfd, 0xd6, 0xb8, 0x8c, 0x76, 0xf2, 0xd0, 0x4f, 0xb8, 0xf8, 0x7c, + 0x16, 0xd5, 0xd5, 0x82, 0xc7, 0xba, 0xc1, 0x03, 0x50, 0x27, 0x59, 0x74, + 0x01, 0xb5, 0x2c, 0x2c, 0x6f, 0x4d, 0x8d, 0xa6, 0xa1, 0x04, 0xf3, 0x09, + 0x29, 0xd3, 0xc6, 0xa9, 0x8d, 0x68, 0x0d, 0x00, 0x47, 0x10, 0x8e, 0xf1, + 0xed, 0x3f, 0x95, 0x2c, 0x7a, 0x0d, 0x6d, 0x82, 0x49, 0x29, 0x5c, 0x40, + 0x61, 0xf1, 0x49, 0x4f, 0x19, 0xf5, 0x8c, 0x9f, 0x5d, 0xa2, 0x79, 0x95, + 0x9f, 0x8c, 0xf0, 0xf9, 0x61, 0x89, 0xe0, 0x03, 0xc1, 0x0a, 0xdf, 0xd6, + 0x07, 0xef, 0xcb, 0x11, 0xd8, 0x12, 0x56, 0x63, 0x18, 0xe7, 0xb8, 0x35, + 0x80, 0xb9, 0xc7, 0x80, 0x35, 0x29, 0x29, 0xd5, 0xc1, 0xac, 0x54, 0xc8, + 0x00, 0xbe, 0xe3, 0xe1, 0xa8, 0x60, 0x56, 0xeb, 0xa2, 0xc2, 0x01, 0x2d, + 0x20, 0x1e, 0xdc, 0x12, 0x51, 0x31, 0x19, 0x7d, 0x74, 0x06, 0xbc, 0x8a, + 0x68, 0x1e, 0xde, 0x60, 0x93, 0xdc, 0x23, 0x3f, 0x2a, 0xa6, 0x56, 0xea, + 0xcc, 0x43, 0x86, 0xad, 0x1c, 0xeb, 0xa7, 0x3e, 0x61, 0x25, 0x22, 0x6b, + 0x09, 0x78, 0x6b, 0x35, 0x27, 0x5d, 0x07, 0xcf, 0x94, 0xcd, 0xaf, 0x6c, + 0x8a, 0xc4, 0xb9, 0xfc, 0xbb, 0x99, 0x09, 0xaa, 0xdf, 0x53, 0xda, 0x1a, + 0x76, 0x63, 0xb8, 0x81, 0xe2, 0x75, 0xfe, 0x08, 0xf8, 0xe5, 0xb5, 0x90, + 0x47, 0xb8, 0x36, 0x40, 0x33, 0x3c, 0x1d, 0x52, 0x52, 0x6a, 0xba, 0x79, + 0x14, 0x12, 0xe7, 0x1d, 0xe5, 0x03, 0xec, 0x06, 0x22, 0x4f, 0xa9, 0xe3, + 0xe4, 0xb5, 0xe8, 0xb1, 0xaf, 0x6e, 0xe4, 0xb7, 0xb3, 0x7c, 0xc6, 0xbc, + 0x24, 0xa7, 0x51, 0xec, 0x88, 0x2f, 0xe4, 0xf0, 0x54, 0x5d, 0xe9, 0xb9, + 0x85, 0xb6, 0x44, 0x47, 0x75, 0x66, 0x39, 0xf0, 0xf1, 0x3c, 0x20, 0x39, + 0xbe, 0xed, 0xdd, 0x8f, 0x6f, 0x12, 0x92, 0x9c, 0xe7, 0xf4, 0xd0, 0xc3, + 0xea, 0x63, 0xbb, 0x67, 0x7f, 0x48, 0xea, 0xcf, 0x97, 0x71, 0xf2, 0x50, + 0x6e, 0x53, 0xe8, 0x7e, 0xcc, 0x80, 0x6a, 0x79, 0x3e, 0xd1, 0x66, 0xad, + 0x3f, 0xd5, 0x7f, 0x1f, 0x7a, 0xd1, 0x77, 0xb0, 0x6e, 0x02, 0x09, 0xe5, + 0x41, 0xe0, 0x5a, 0x3d, 0x3b, 0x00, 0x73, 0x5d, 0xf4, 0x9a, 0xe1, 0xb8, + 0x24, 0xa6, 0xa5, 0xae, 0x75, 0x83, 0x6b, 0x84, 0x03, 0xdd, 0x66, 0x65, + 0x59, 0x66, 0x34, 0x4e, 0xac, 0xef, 0xdf, 0x45, 0x7b, 0x27, 0x13, 0x23, + 0x19, 0xff, 0x00, 0xa9, 0x9d, 0xf5, 0x7f, 0xdc, 0x67, 0x99, 0x1f, 0xf5, + 0xb7, 0x1e, 0x3e, 0x0a, 0xbf, 0xe8, 0xb2, 0x69, 0x7e, 0xc6, 0x90, 0xe1, + 0xa5, 0x8c, 0x76, 0x8e, 0x69, 0xf0, 0x20, 0xa4, 0xa6, 0xb8, 0xc9, 0x63, + 0x9b, 0xa1, 0xd1, 0x52, 0xc8, 0xb7, 0xd4, 0x3b, 0x46, 0x9e, 0x2a, 0x9e, + 0x47, 0xab, 0x85, 0x63, 0x98, 0x4e, 0xea, 0x89, 0xf6, 0x9f, 0x0f, 0x22, + 0xb4, 0xba, 0x2e, 0x1f, 0xda, 0x83, 0xb3, 0x2d, 0xd3, 0x1a, 0xa3, 0xaf, + 0xf2, 0x9c, 0x3b, 0x24, 0xa6, 0xce, 0x27, 0x4d, 0x19, 0x58, 0xe5, 0xaf, + 0x6e, 0xca, 0x1d, 0x12, 0x7b, 0xb8, 0x0f, 0x05, 0xa4, 0xca, 0xe9, 0xc4, + 0xa9, 0xb5, 0xd0, 0xc1, 0x5d, 0x6d, 0x10, 0x00, 0xe3, 0xef, 0x44, 0xda, + 0x44, 0x6d, 0xe4, 0xc7, 0x3c, 0x04, 0x26, 0xb5, 0xd6, 0xb5, 0xcf, 0x77, + 0xb5, 0xac, 0x3a, 0x37, 0xc2, 0x12, 0x52, 0x23, 0x51, 0xbd, 0xe1, 0xc5, + 0xda, 0xd7, 0xaf, 0x9e, 0x9e, 0x29, 0xf2, 0x76, 0xfa, 0x64, 0xb8, 0x92, + 0x08, 0x33, 0xe0, 0x47, 0xc1, 0x4c, 0x0a, 0x8e, 0xba, 0x87, 0x11, 0x3c, + 0xf0, 0x0f, 0x82, 0x05, 0xf7, 0x17, 0x53, 0x63, 0x60, 0x16, 0x92, 0x20, + 0xf0, 0x4f, 0x92, 0x4a, 0x71, 0x2d, 0xa9, 0xd5, 0x3f, 0x73, 0x34, 0x2d, + 0xd5, 0xbe, 0x63, 0xc1, 0x5b, 0x6d, 0x3f, 0x6c, 0xab, 0xd4, 0x61, 0x3e, + 0xa3, 0x35, 0x6f, 0x81, 0x4b, 0x25, 0xa5, 0x94, 0x35, 0xc7, 0x86, 0xb8, + 0x6e, 0xf2, 0x04, 0x42, 0x58, 0x76, 0x8c, 0x6b, 0x04, 0x1f, 0x65, 0x9a, + 0xb4, 0xf9, 0xf8, 0x24, 0xa7, 0x6b, 0xa1, 0x67, 0x3c, 0xb3, 0xd3, 0x77, + 0xe6, 0xe8, 0x47, 0x81, 0x51, 0xeb, 0x1f, 0x56, 0x70, 0xb2, 0xac, 0xfb, + 0x6d, 0x12, 0xcc, 0x87, 0x3b, 0x73, 0xc3, 0x78, 0x77, 0xc5, 0x50, 0x65, + 0xbe, 0x86, 0x68, 0xb6, 0xb7, 0x6c, 0x16, 0xeb, 0xe5, 0x2b, 0xa1, 0xa3, + 0x29, 0xc6, 0xbd, 0xee, 0x82, 0x63, 0x50, 0x92, 0x9c, 0x8c, 0x5e, 0x9e, + 0xfd, 0x9b, 0x37, 0x1f, 0x30, 0xaa, 0x75, 0x8f, 0xab, 0xf6, 0xda, 0xc1, + 0x6d, 0x53, 0xeb, 0x33, 0x56, 0x9f, 0x1f, 0x22, 0xba, 0x36, 0xfd, 0x9e, + 0xc0, 0x5d, 0x4b, 0xbd, 0xf3, 0xee, 0x08, 0xe1, 0xec, 0x7b, 0x36, 0x9f, + 0x6b, 0xbc, 0x0f, 0x7f, 0x82, 0x4a, 0x7c, 0xff, 0x00, 0x17, 0x2a, 0xea, + 0xce, 0xc7, 0x02, 0x1c, 0xdd, 0x08, 0xf3, 0x0b, 0x4e, 0xab, 0xdc, 0xfd, + 0x4c, 0xab, 0x3f, 0x58, 0x7a, 0x5f, 0xa5, 0xfa, 0xed, 0x22, 0x08, 0xfe, + 0x74, 0x78, 0x8f, 0x15, 0x93, 0x56, 0x43, 0xf6, 0x8d, 0x44, 0x24, 0xa6, + 0xf5, 0x96, 0x13, 0x3a, 0xaa, 0xf7, 0x64, 0x86, 0xb4, 0x99, 0xd1, 0x47, + 0xd4, 0x6b, 0xa4, 0x93, 0x31, 0xe2, 0xa9, 0x5c, 0x1f, 0x91, 0x6e, 0xc6, + 0xe8, 0xd1, 0xca, 0x4a, 0x63, 0x6b, 0x9d, 0x63, 0x1c, 0xf3, 0xc4, 0x68, + 0x17, 0x45, 0xd3, 0xb1, 0xdc, 0xde, 0x99, 0x43, 0x4f, 0xe7, 0xd4, 0xd7, + 0x16, 0xee, 0x6f, 0x3b, 0xc8, 0xfa, 0x3f, 0xda, 0x58, 0x16, 0xd6, 0xe0, + 0xd1, 0x53, 0x47, 0x80, 0x5d, 0x8d, 0x54, 0x16, 0xe3, 0x36, 0x96, 0xba, + 0x36, 0x92, 0xd0, 0x3d, 0xad, 0x1b, 0x6d, 0x60, 0x7b, 0x7d, 0xa5, 0x25, + 0x34, 0xeb, 0x74, 0x16, 0xb8, 0xc4, 0x49, 0xdc, 0xdd, 0x47, 0x79, 0xd0, + 0x1f, 0x27, 0x29, 0xde, 0xf0, 0x63, 0xb0, 0x71, 0xf9, 0x69, 0xfe, 0xf5, + 0x1c, 0xa1, 0xb0, 0x40, 0x24, 0x00, 0x64, 0x34, 0x69, 0x33, 0xde, 0x35, + 0x1c, 0x47, 0x09, 0xde, 0xf9, 0x73, 0x5a, 0x27, 0x6b, 0x75, 0x33, 0xf0, + 0x94, 0x94, 0xd0, 0x78, 0x2f, 0xbf, 0x60, 0xf1, 0x26, 0x3f, 0x05, 0xb3, + 0x87, 0x8e, 0xd6, 0xb6, 0x4f, 0x25, 0x66, 0x61, 0x8d, 0xf6, 0x9b, 0x4f, + 0x0e, 0x24, 0x82, 0x7c, 0xd5, 0xdb, 0xba, 0x9d, 0x74, 0x1f, 0x4e, 0xb6, + 0xfa, 0x96, 0x78, 0x8f, 0xa2, 0x12, 0x53, 0x76, 0xc9, 0x6f, 0x1c, 0x2a, + 0x59, 0x56, 0xed, 0x63, 0x8c, 0xfc, 0x95, 0x1b, 0xf3, 0xb2, 0xed, 0xd5, + 0xce, 0xd8, 0x7f, 0x75, 0xa7, 0x41, 0xf7, 0x05, 0x99, 0x7e, 0x46, 0x73, + 0xe4, 0x34, 0x92, 0x1b, 0xf4, 0xc3, 0x8c, 0x8f, 0xbf, 0xb2, 0x4a, 0x69, + 0xbd, 0x83, 0x27, 0x3a, 0xc7, 0x3b, 0xe8, 0x03, 0x05, 0xdd, 0x82, 0xd5, + 0xab, 0x02, 0x9a, 0x18, 0xd6, 0x56, 0xdf, 0x4e, 0x7e, 0x93, 0xdb, 0xc9, + 0x3f, 0x12, 0xab, 0xe3, 0x61, 0xda, 0xee, 0x0e, 0xc6, 0xeb, 0xcf, 0xe7, + 0xb8, 0xf7, 0x85, 0x7f, 0x19, 0xe5, 0x9b, 0xaa, 0x78, 0xf7, 0x6b, 0x3f, + 0x2d, 0x4a, 0x4a, 0x6a, 0x9e, 0x95, 0xac, 0xef, 0x26, 0x7d, 0xdb, 0x26, + 0x43, 0x94, 0x32, 0x31, 0x6a, 0xab, 0x73, 0x9a, 0xdd, 0xac, 0x68, 0x87, + 0xc9, 0x9d, 0xaa, 0xfb, 0xee, 0xa8, 0x80, 0xf6, 0x41, 0x03, 0x4a, 0x8b, + 0x4c, 0x89, 0x3f, 0x05, 0x5f, 0x3e, 0xca, 0x72, 0x29, 0x22, 0x34, 0xb1, + 0xbb, 0x6c, 0x23, 0x99, 0x49, 0x4d, 0x7a, 0xad, 0xac, 0xe2, 0x92, 0xdf, + 0x75, 0x62, 0x60, 0x8e, 0x24, 0x21, 0x63, 0xcb, 0x6b, 0x27, 0xc6, 0x0c, + 0x79, 0x94, 0xef, 0x61, 0xab, 0x0b, 0xd3, 0x26, 0x1a, 0xc6, 0x80, 0xd1, + 0xc4, 0xca, 0x8d, 0x6d, 0x6b, 0x1a, 0xd6, 0x33, 0x8d, 0x12, 0x53, 0x75, + 0x97, 0xdc, 0xc6, 0x00, 0x41, 0x08, 0xde, 0xb9, 0xf4, 0xf7, 0x4e, 0xbe, + 0x08, 0xce, 0xaf, 0x75, 0x0c, 0x9d, 0x0c, 0x77, 0x41, 0xf4, 0xf5, 0xdb, + 0x1f, 0x34, 0x94, 0xf5, 0x4f, 0x80, 0x4b, 0x62, 0x74, 0xd4, 0xa1, 0x10, + 0x40, 0x04, 0x89, 0x8e, 0x3f, 0xbd, 0x15, 0xe7, 0x80, 0x38, 0x8e, 0x7f, + 0x2a, 0x16, 0xe3, 0xa1, 0xfc, 0xdf, 0x14, 0x94, 0xc2, 0xc2, 0x24, 0x41, + 0x81, 0xc3, 0x8a, 0x1c, 0x8d, 0xba, 0x0e, 0x0c, 0xcf, 0x74, 0xf6, 0x49, + 0x98, 0xe3, 0x45, 0x16, 0x1d, 0xc3, 0x4d, 0x23, 0xf8, 0x24, 0xa5, 0xac, + 0x00, 0x89, 0xfd, 0xdd, 0x61, 0x51, 0xcd, 0xc5, 0x36, 0xbb, 0xd7, 0xa2, + 0x1b, 0x90, 0xc1, 0xf0, 0x0f, 0x68, 0xfc, 0xd7, 0xff, 0x00, 0x7a, 0xbe, + 0xf8, 0x89, 0x3a, 0x1e, 0x34, 0xec, 0x86, 0xd6, 0x0d, 0x63, 0x96, 0xfd, + 0xc9, 0x29, 0xe6, 0x7a, 0xad, 0x2c, 0xbe, 0x87, 0x39, 0x8c, 0xfd, 0x30, + 0xd1, 0xf5, 0xf0, 0x65, 0x74, 0x38, 0x78, 0x94, 0x63, 0x60, 0x53, 0x88, + 0x0c, 0x6c, 0x6b, 0x77, 0x11, 0xf9, 0xce, 0x06, 0x4f, 0xde, 0x4a, 0xa7, + 0xd4, 0x31, 0xda, 0xdb, 0x68, 0xbe, 0xc7, 0x6c, 0x1e, 0xa3, 0x43, 0x8f, + 0xef, 0x36, 0x75, 0x6a, 0xba, 0xcf, 0x4d, 0x96, 0x7a, 0x4f, 0x11, 0xb8, + 0x4d, 0x67, 0x90, 0x4a, 0x4a, 0x66, 0xe6, 0xba, 0xca, 0xdc, 0x08, 0x32, + 0xd2, 0x24, 0x9e, 0x10, 0x36, 0x80, 0x65, 0xb2, 0xe0, 0x34, 0x73, 0x4e, + 0x80, 0x85, 0x68, 0xc4, 0x6d, 0x73, 0xbd, 0xc7, 0x58, 0xed, 0x1c, 0xa8, + 0xbd, 0xad, 0x73, 0x77, 0x00, 0x4c, 0x01, 0xc4, 0xb7, 0x92, 0x92, 0x9a, + 0xb6, 0x41, 0x0e, 0x73, 0xc7, 0xb7, 0xb4, 0x76, 0x8e, 0x38, 0x54, 0xaf, + 0x69, 0xac, 0x49, 0x9d, 0xae, 0x31, 0x04, 0x0e, 0x4a, 0xd0, 0xb5, 0xb6, + 0x6c, 0x22, 0x36, 0x03, 0xae, 0x86, 0x20, 0x8f, 0x25, 0x56, 0xd3, 0x0d, + 0x2d, 0x78, 0xd4, 0x6a, 0x3c, 0x87, 0x88, 0x49, 0x4d, 0x53, 0xe9, 0xfa, + 0x7b, 0x1c, 0xdf, 0x69, 0x6c, 0x38, 0xf8, 0xf9, 0x2c, 0xac, 0xba, 0xee, + 0xc7, 0x67, 0xe8, 0xc9, 0x75, 0x33, 0x20, 0x72, 0x59, 0xf3, 0x5a, 0x8e, + 0x73, 0x84, 0x17, 0x70, 0x4c, 0x17, 0x1f, 0x05, 0x1b, 0xeb, 0x71, 0xdc, + 0xd7, 0x37, 0x68, 0x6b, 0x7b, 0x70, 0x7c, 0x12, 0x53, 0x8e, 0xdc, 0xeb, + 0x2c, 0x6e, 0xc7, 0x99, 0x03, 0x83, 0xdc, 0x2b, 0xdd, 0x3f, 0xac, 0x5f, + 0x59, 0xf4, 0x1e, 0xf9, 0x1d, 0x9c, 0xb1, 0xc5, 0x4e, 0x6d, 0xb6, 0x55, + 0x30, 0xf6, 0x1d, 0x3c, 0x08, 0x53, 0x6b, 0x1c, 0xe3, 0xa6, 0x8e, 0xe6, + 0x12, 0x53, 0xd9, 0x60, 0x67, 0x31, 0xb6, 0x43, 0x80, 0xdc, 0x7f, 0x3b, + 0xc4, 0x2d, 0x67, 0x6c, 0xb5, 0x92, 0xd3, 0xce, 0xb0, 0xb8, 0x9c, 0x2c, + 0xa7, 0x9f, 0xd1, 0xd9, 0xed, 0xb1, 0xbc, 0x13, 0xdd, 0x6c, 0xe2, 0x67, + 0xd8, 0x00, 0x6b, 0x9d, 0x09, 0x29, 0xbf, 0x98, 0x1e, 0xfa, 0x1c, 0xc8, + 0xde, 0xd8, 0x20, 0x8e, 0xf0, 0x57, 0x03, 0x6b, 0xed, 0xc7, 0xb9, 0xf5, + 0x6b, 0xec, 0x71, 0x1f, 0x72, 0xf4, 0x3a, 0xaf, 0x63, 0xdb, 0x00, 0x6e, + 0x27, 0x91, 0xe6, 0xb9, 0xff, 0x00, 0xac, 0x98, 0x35, 0x33, 0xf5, 0x8a, + 0xc6, 0xa4, 0xc3, 0xc7, 0xe4, 0x49, 0x4e, 0x66, 0x14, 0xd9, 0x56, 0xf3, + 0xac, 0xfe, 0x55, 0xa5, 0x85, 0x85, 0x24, 0xb8, 0xf2, 0x7b, 0xa0, 0xe0, + 0x63, 0x34, 0x52, 0x1b, 0x3e, 0x64, 0x2d, 0xac, 0x7d, 0x95, 0xd7, 0xae, + 0x91, 0xc2, 0x4a, 0x69, 0x7d, 0x91, 0x8d, 0xbe, 0xb9, 0x83, 0xee, 0x6c, + 0xf6, 0xef, 0xc2, 0xd3, 0x3d, 0x43, 0x07, 0x05, 0xa5, 0x97, 0xde, 0xda, + 0x88, 0x0d, 0xf6, 0xc8, 0x12, 0xea, 0x9f, 0xb7, 0xf3, 0xa5, 0xc7, 0x45, + 0x8f, 0xd4, 0xb2, 0x2c, 0xff, 0x00, 0x00, 0x7d, 0x32, 0x24, 0xef, 0x8e, + 0x0f, 0x8f, 0xcb, 0xb2, 0xe6, 0x6f, 0xa2, 0xf7, 0x66, 0xb9, 0x96, 0x92, + 0xeb, 0x1e, 0x77, 0x12, 0xe3, 0xb8, 0x99, 0x1b, 0xa4, 0x94, 0x94, 0xf6, + 0x99, 0x19, 0xd8, 0x17, 0x32, 0xc3, 0x8d, 0x73, 0x5e, 0x00, 0x70, 0x86, + 0x90, 0x34, 0x69, 0x25, 0xbc, 0x68, 0x74, 0x08, 0x02, 0xd7, 0x16, 0xcf, + 0x2d, 0x0c, 0x24, 0x77, 0xd4, 0xe8, 0xb0, 0x30, 0xb0, 0x1d, 0x5d, 0x81, + 0xce, 0x12, 0x26, 0x16, 0xce, 0xe6, 0x31, 0xbb, 0xb8, 0x10, 0x23, 0xe1, + 0xc9, 0xf2, 0x49, 0x49, 0x0d, 0x82, 0xa6, 0x0a, 0xc1, 0xda, 0xe7, 0x08, + 0x2e, 0xf0, 0x4c, 0x1c, 0xc8, 0x75, 0x6e, 0xd4, 0xe9, 0x31, 0xd8, 0x21, + 0x34, 0x8b, 0x03, 0x9c, 0x4e, 0xe7, 0x73, 0xfd, 0xae, 0xc1, 0x30, 0x8b, + 0x6a, 0x87, 0x9d, 0x8e, 0x13, 0xbe, 0x0f, 0x22, 0x63, 0x94, 0x94, 0x9a, + 0xf1, 0x4d, 0x55, 0xba, 0xd7, 0x6e, 0x34, 0xb7, 0x40, 0x4f, 0x30, 0x39, + 0x85, 0x57, 0x1a, 0xab, 0x7a, 0x8c, 0xdb, 0x1e, 0x9e, 0x13, 0x75, 0x6b, + 0x66, 0x3d, 0x42, 0xdf, 0xe0, 0x15, 0x8b, 0xda, 0xcc, 0x8a, 0xcd, 0x3b, + 0xa2, 0xab, 0x5b, 0xb6, 0x4f, 0x8f, 0xc1, 0x2a, 0x1e, 0x31, 0x9a, 0x0e, + 0xd9, 0xad, 0xbf, 0xa3, 0x23, 0xb3, 0x4f, 0x10, 0x92, 0x9b, 0x2f, 0x66, + 0x8e, 0x68, 0x1a, 0x88, 0xda, 0xd2, 0x78, 0xf1, 0x12, 0xa8, 0x65, 0x57, + 0x65, 0xc1, 0xcd, 0x92, 0x01, 0x10, 0x08, 0xd0, 0xc1, 0xf6, 0x93, 0xf2, + 0x5a, 0x5b, 0x18, 0xf8, 0x71, 0x91, 0x5b, 0x84, 0x86, 0x8e, 0x67, 0xb3, + 0x4a, 0xaf, 0x6b, 0x1a, 0xf2, 0xd7, 0xb5, 0x84, 0x06, 0xcc, 0x98, 0x06, + 0x0f, 0x3c, 0x24, 0xa4, 0x14, 0x31, 0xb4, 0xd5, 0x5d, 0x75, 0x0d, 0xac, + 0xa4, 0x7b, 0x5d, 0xe2, 0xe9, 0x93, 0x3e, 0x68, 0x4f, 0x68, 0x89, 0xd0, + 0xb6, 0xcd, 0x41, 0x13, 0x20, 0x9d, 0x75, 0x85, 0x64, 0xb4, 0x18, 0xad, + 0xa4, 0xcf, 0x2e, 0x24, 0x47, 0x3a, 0xa8, 0x3b, 0x19, 0xae, 0x01, 0xae, + 0x3a, 0x13, 0x23, 0x88, 0x27, 0x83, 0x29, 0x29, 0xa5, 0x0e, 0xca, 0x68, + 0x64, 0x98, 0x03, 0x68, 0x3f, 0x0f, 0x8a, 0x83, 0x9e, 0xea, 0x0b, 0x60, + 0x4e, 0xd2, 0xb4, 0x76, 0x55, 0x88, 0x4d, 0x8d, 0xed, 0xa0, 0x6f, 0x1f, + 0x39, 0x54, 0xda, 0xe6, 0xd9, 0x63, 0xa4, 0x6e, 0x13, 0x20, 0x24, 0xa7, + 0x5f, 0x1f, 0x22, 0xac, 0xda, 0x00, 0x3a, 0x3c, 0x78, 0x27, 0xf4, 0xfd, + 0xd1, 0x3a, 0x71, 0x2a, 0xad, 0x19, 0x0d, 0x60, 0xfd, 0x1b, 0x76, 0x1e, + 0xe8, 0xf1, 0x67, 0xa5, 0xea, 0x6e, 0xf6, 0xce, 0xe4, 0x94, 0xf4, 0x96, + 0x16, 0xfe, 0x69, 0xd0, 0x70, 0x84, 0xf8, 0xdc, 0x0f, 0xdc, 0x3c, 0x7c, + 0x54, 0xdc, 0xd2, 0xe1, 0xa7, 0x3d, 0xe7, 0xbe, 0x8a, 0x3b, 0x5c, 0x06, + 0xe7, 0x09, 0x2e, 0xe0, 0x79, 0x24, 0xa4, 0x24, 0x6f, 0x25, 0xa3, 0x53, + 0xdc, 0xf7, 0x51, 0x2c, 0x2d, 0x90, 0x35, 0xf1, 0x52, 0x0d, 0x70, 0x7b, + 0xbd, 0xd0, 0x7b, 0x79, 0xa6, 0x16, 0x03, 0x23, 0x80, 0x07, 0xcb, 0xe6, + 0x92, 0x96, 0x70, 0x6b, 0xec, 0xda, 0x62, 0x3b, 0x37, 0x5d, 0x54, 0x40, + 0x01, 0xe4, 0x0d, 0x03, 0xb8, 0x9f, 0x2d, 0x13, 0x87, 0x4b, 0xc3, 0xb9, + 0x06, 0x40, 0x6f, 0xfa, 0xf8, 0xa7, 0xf4, 0x9c, 0x5c, 0x6c, 0x71, 0x80, + 0x3c, 0x3b, 0x04, 0x94, 0xd3, 0xea, 0xf5, 0x1b, 0xfa, 0x7d, 0xad, 0x68, + 0x97, 0x56, 0x0b, 0xdb, 0xf1, 0x6e, 0xa8, 0x96, 0x62, 0x9b, 0x69, 0xad, + 0xf5, 0x7f, 0x32, 0x5a, 0x0e, 0xd2, 0x35, 0x1b, 0xa3, 0xe8, 0x9e, 0xc8, + 0xd6, 0x7a, 0x34, 0x56, 0xfc, 0x8b, 0x35, 0x63, 0x01, 0x73, 0x8c, 0xce, + 0x91, 0xaa, 0xad, 0xd2, 0xb2, 0x06, 0x4f, 0x4f, 0xa6, 0xea, 0xc9, 0xda, + 0x46, 0xdd, 0xbe, 0x40, 0x96, 0x80, 0x7e, 0xe4, 0x94, 0xb6, 0x3e, 0x4b, + 0x98, 0xe3, 0x46, 0x48, 0x76, 0xf2, 0x62, 0xbb, 0x0e, 0x9b, 0xff, 0x00, + 0xda, 0x3f, 0x14, 0x53, 0x6c, 0x87, 0x34, 0xc8, 0xed, 0xf2, 0xf8, 0x04, + 0x5b, 0xa9, 0x6d, 0xcc, 0x73, 0x2c, 0x68, 0x74, 0xc0, 0xdb, 0xfb, 0xb1, + 0xf8, 0xaa, 0x6d, 0xb1, 0xf8, 0xae, 0x6d, 0x79, 0x3a, 0xd6, 0x4f, 0xe8, + 0xed, 0x8f, 0xfa, 0x2e, 0xf3, 0x49, 0x49, 0xde, 0x06, 0xc9, 0x3a, 0x81, + 0xe1, 0xc6, 0x8b, 0x3f, 0x3a, 0xb2, 0xcd, 0x43, 0xa1, 0xc6, 0x63, 0x5e, + 0x76, 0x8d, 0x55, 0x9c, 0xbb, 0xae, 0xaa, 0x5e, 0xc1, 0x34, 0x69, 0x31, + 0xaf, 0xfb, 0xfc, 0x55, 0x6f, 0x52, 0xac, 0x90, 0x7d, 0x32, 0x1e, 0x1d, + 0xdf, 0xc4, 0xa4, 0xa6, 0x8b, 0xd8, 0xfb, 0x07, 0xd2, 0xf6, 0x38, 0x71, + 0x3d, 0xf9, 0xec, 0x89, 0x73, 0x41, 0x02, 0x09, 0x24, 0x88, 0x0e, 0x24, + 0x98, 0x08, 0xf4, 0x6d, 0x77, 0xa9, 0x8e, 0x5b, 0xb7, 0xd3, 0xf7, 0x30, + 0x69, 0x31, 0xcc, 0x6b, 0xe6, 0x87, 0x77, 0xb6, 0xb6, 0x3b, 0x68, 0x69, + 0x13, 0xba, 0x7e, 0x29, 0x29, 0xc3, 0xea, 0x35, 0xfa, 0x19, 0x55, 0xdc, + 0xdd, 0x5a, 0xef, 0x69, 0xfe, 0x0a, 0x36, 0x1d, 0x4d, 0x8c, 0xd2, 0x21, + 0xc3, 0xf8, 0xab, 0xfd, 0x52, 0xa7, 0xdd, 0x8d, 0xb3, 0x49, 0x60, 0xdc, + 0x08, 0xef, 0x0b, 0x3e, 0x87, 0x36, 0xca, 0x1b, 0xbf, 0x59, 0x96, 0x9d, + 0x63, 0x94, 0x94, 0xdc, 0xad, 0x87, 0x21, 0xa1, 0xf5, 0x40, 0x7b, 0x79, + 0x9d, 0x20, 0xad, 0x8e, 0x9d, 0x4b, 0x72, 0x46, 0xdb, 0x63, 0xd4, 0x1a, + 0x10, 0x0f, 0xf7, 0x2c, 0x3c, 0x0a, 0xdd, 0xea, 0x32, 0x08, 0x0e, 0xe2, + 0x0b, 0x41, 0x3a, 0x78, 0x4a, 0xec, 0x3a, 0x7f, 0x4c, 0xb1, 0xc5, 0xb6, + 0x49, 0x33, 0xc9, 0x80, 0x92, 0x9b, 0x58, 0xbd, 0x31, 0xb4, 0x0d, 0xd3, + 0x26, 0x34, 0xee, 0xb2, 0x7a, 0xfd, 0x3f, 0xa2, 0x21, 0xc2, 0x37, 0x11, + 0x1d, 0xfb, 0xae, 0xac, 0xd0, 0x2a, 0x60, 0x07, 0x52, 0x3c, 0x57, 0x29, + 0xf5, 0x9e, 0xc6, 0xef, 0xad, 0xa0, 0x40, 0x06, 0x74, 0x49, 0x4e, 0x45, + 0x61, 0xcc, 0x70, 0xf0, 0x5a, 0x2c, 0x7b, 0x4d, 0x5a, 0xf2, 0xb2, 0xc5, + 0xb1, 0xe6, 0x9c, 0xe4, 0xbf, 0x81, 0x26, 0x7f, 0x35, 0xbd, 0xfc, 0x12, + 0x52, 0xfd, 0x52, 0xbf, 0xd5, 0x1d, 0x7b, 0xda, 0x64, 0xb9, 0xad, 0xaa, + 0x0c, 0x6a, 0x4f, 0x23, 0xc7, 0x85, 0x3c, 0x9c, 0x56, 0xbb, 0xaf, 0x35, + 0xe4, 0x1f, 0x7d, 0x0e, 0x76, 0xd3, 0xcb, 0x4b, 0x4e, 0xd1, 0xff, 0x00, + 0x44, 0x84, 0xaf, 0x17, 0xe4, 0xb7, 0xed, 0x16, 0xb7, 0x63, 0x29, 0x69, + 0x75, 0x74, 0x01, 0x25, 0xad, 0x69, 0x13, 0xee, 0x77, 0x24, 0x15, 0xab, + 0x7b, 0x03, 0xf3, 0x1b, 0x91, 0x2d, 0x25, 0xcc, 0xb5, 0x9b, 0xfe, 0x8c, + 0xed, 0xf4, 0xa2, 0x47, 0xe6, 0xa4, 0xa6, 0xa3, 0x71, 0xcb, 0x5c, 0x48, + 0x9e, 0x26, 0x23, 0xe0, 0xab, 0x64, 0xbe, 0x5d, 0xee, 0x11, 0xb8, 0xea, + 0x07, 0x80, 0xed, 0xf7, 0xab, 0xed, 0x2c, 0x36, 0x35, 0xf1, 0x06, 0x3b, + 0xf8, 0x7c, 0x56, 0x7b, 0xce, 0xfb, 0x37, 0x02, 0x5c, 0x43, 0x4c, 0x1f, + 0x89, 0x29, 0x29, 0x67, 0x45, 0x8c, 0x0c, 0x68, 0x87, 0x1d, 0x41, 0x95, + 0x1c, 0x56, 0x9f, 0x7b, 0x5e, 0x60, 0x9e, 0xe0, 0x78, 0xe8, 0x9e, 0xda, + 0xe7, 0x64, 0x38, 0x30, 0xf2, 0x40, 0xec, 0x78, 0x51, 0x75, 0x5b, 0x1b, + 0xbc, 0x38, 0x91, 0xd8, 0x7c, 0x39, 0x49, 0x49, 0x3d, 0x56, 0xb6, 0xb1, + 0xfc, 0x91, 0xb4, 0x9d, 0x35, 0x33, 0x20, 0x2b, 0x14, 0xbe, 0xab, 0x83, + 0xde, 0xee, 0x1d, 0xc8, 0xf0, 0x59, 0xf6, 0x0a, 0x9e, 0xd7, 0x36, 0x48, + 0xd7, 0x76, 0xe1, 0xe2, 0x39, 0x40, 0xae, 0x9b, 0x5a, 0xe1, 0xe8, 0xdd, + 0xb0, 0xbb, 0x52, 0xd3, 0xe2, 0x92, 0x9d, 0xc6, 0x16, 0xd4, 0x7d, 0x17, + 0xbf, 0xd8, 0x64, 0x82, 0x0c, 0x10, 0x39, 0x95, 0x17, 0x64, 0x06, 0xb8, + 0x6d, 0xb0, 0x06, 0x40, 0x92, 0x78, 0x30, 0xb1, 0x5d, 0x56, 0x4b, 0x41, + 0x75, 0x85, 0xce, 0xdb, 0xa4, 0xfc, 0xf8, 0x41, 0x73, 0xad, 0x27, 0x69, + 0x77, 0xb5, 0xdc, 0x9e, 0xda, 0x24, 0xa7, 0x5a, 0xdc, 0xb6, 0x87, 0x12, + 0xd3, 0x10, 0x39, 0x03, 0xe9, 0x08, 0x55, 0x6e, 0xea, 0x6d, 0x2e, 0xfd, + 0x18, 0x9f, 0x1d, 0x34, 0xdc, 0x07, 0x2b, 0x3d, 0xce, 0x20, 0x12, 0xe3, + 0xc7, 0x0a, 0x00, 0x38, 0x9d, 0xa0, 0x44, 0x19, 0x01, 0x25, 0x26, 0xbb, + 0x2e, 0xfb, 0xde, 0xd6, 0x97, 0x1d, 0xa4, 0xc6, 0xab, 0x56, 0x86, 0x39, + 0xa2, 0x19, 0x1a, 0x72, 0xb2, 0xbd, 0x07, 0x52, 0x6a, 0x76, 0xd2, 0x77, + 0x91, 0x20, 0xf0, 0xd5, 0xb3, 0x5e, 0xbb, 0xb4, 0x9d, 0x40, 0x84, 0x94, + 0xca, 0xba, 0x5a, 0x49, 0xd6, 0x5c, 0x79, 0x0a, 0x5b, 0x32, 0x76, 0x7a, + 0x5b, 0xff, 0x00, 0x47, 0x3f, 0x34, 0x5a, 0xe9, 0x73, 0x25, 0xcd, 0xe0, + 0xf6, 0x4f, 0x0e, 0x89, 0x84, 0x94, 0xf4, 0x76, 0x12, 0x09, 0x6b, 0x4c, + 0x77, 0x31, 0xe6, 0xa2, 0x1e, 0x48, 0x27, 0x93, 0x13, 0xf0, 0x08, 0xf7, + 0xd4, 0x08, 0x9f, 0xbf, 0xc2, 0x02, 0xa4, 0xeb, 0x25, 0x8e, 0x04, 0xce, + 0xba, 0xf6, 0xe1, 0x25, 0x32, 0xad, 0xb2, 0x4b, 0x8e, 0xa0, 0xc9, 0x42, + 0xb2, 0xb9, 0x30, 0xc3, 0x02, 0x7f, 0x15, 0x20, 0xf0, 0x59, 0x0d, 0xf1, + 0xdb, 0xb7, 0xc2, 0x7c, 0x13, 0x56, 0xcd, 0xa1, 0xcd, 0x06, 0x67, 0xc5, + 0x25, 0x2c, 0xcd, 0xcd, 0x22, 0x67, 0x4e, 0x08, 0xd7, 0xe6, 0xac, 0x17, + 0x31, 0xad, 0x92, 0x41, 0x1c, 0xc2, 0xab, 0x91, 0x65, 0x8c, 0x00, 0x31, + 0xa5, 0xce, 0x76, 0x90, 0x10, 0xb1, 0xec, 0xdc, 0x08, 0x78, 0xd7, 0x99, + 0xee, 0x92, 0x93, 0x59, 0xb6, 0xca, 0x5c, 0xd8, 0x06, 0xb3, 0x21, 0xcd, + 0x1c, 0x47, 0xcf, 0x95, 0x9b, 0xd2, 0x1a, 0xdc, 0x2b, 0x2d, 0xc1, 0xa5, + 0xee, 0x75, 0x60, 0xef, 0x6b, 0x07, 0xd2, 0x60, 0xb0, 0x96, 0xc7, 0xde, + 0xb4, 0x65, 0xcd, 0x3b, 0x9a, 0xdf, 0x69, 0xd3, 0x55, 0x81, 0x85, 0x79, + 0x67, 0x5e, 0xcc, 0xac, 0x0d, 0x2f, 0xad, 0xa5, 0x9e, 0x41, 0xa7, 0xb2, + 0x4a, 0x76, 0xef, 0x19, 0xc1, 0xae, 0xf4, 0xdc, 0x5c, 0x1a, 0x74, 0xd3, + 0x43, 0xf0, 0x2a, 0xa5, 0xd7, 0xe4, 0x55, 0x54, 0x64, 0x63, 0x6f, 0xdd, + 0xf4, 0x8f, 0x33, 0x3c, 0xe8, 0xb4, 0x19, 0x9c, 0x59, 0xec, 0xb3, 0x40, + 0x3b, 0x77, 0x1c, 0xf9, 0xa9, 0x3d, 0xcd, 0x69, 0x27, 0x78, 0x70, 0x23, + 0xb6, 0xa7, 0xc1, 0x25, 0x38, 0x98, 0xd9, 0x7b, 0x1d, 0xb7, 0x5f, 0x41, + 0xa7, 0x42, 0xed, 0x5d, 0x58, 0x3d, 0xb5, 0xe4, 0x20, 0xe4, 0xe0, 0x3a, + 0xa7, 0x1c, 0x9c, 0x37, 0x6d, 0xdd, 0xab, 0x99, 0xc8, 0x33, 0xc2, 0xb9, + 0x93, 0x8c, 0xeb, 0x9c, 0x2c, 0xa9, 0xbb, 0x4e, 0x83, 0x9f, 0xa5, 0xe4, + 0xa9, 0xb3, 0xda, 0x1e, 0xe6, 0xb4, 0xb1, 0x9c, 0x59, 0x59, 0x3e, 0x1f, + 0x9c, 0xd9, 0xfc, 0x89, 0x29, 0x8b, 0x72, 0x03, 0xec, 0xae, 0xc0, 0xd7, + 0x36, 0xfa, 0x44, 0x64, 0x31, 0xd1, 0xdf, 0xf3, 0x9b, 0xf2, 0x45, 0x22, + 0xac, 0x8d, 0x1a, 0x09, 0x8d, 0x40, 0xd2, 0x37, 0x77, 0x55, 0xb3, 0xf6, + 0xd9, 0x5b, 0x72, 0xb1, 0x4e, 0xe2, 0xc1, 0x05, 0xfd, 0xdc, 0xde, 0xed, + 0x45, 0xc2, 0x0d, 0xbf, 0x1a, 0xab, 0x43, 0xf4, 0x30, 0x67, 0xc3, 0xc7, + 0xf2, 0x24, 0xa4, 0x8e, 0xa0, 0x38, 0x3d, 0xa0, 0x0d, 0x44, 0x47, 0xfa, + 0xf6, 0x5c, 0xfe, 0xc1, 0x4e, 0x4d, 0x94, 0x11, 0xdc, 0xb9, 0xa0, 0xf8, + 0x82, 0xba, 0x2b, 0x05, 0x5f, 0x45, 0xb2, 0x23, 0x42, 0x79, 0xe6, 0x4a, + 0xce, 0xbb, 0x14, 0x59, 0xd4, 0x28, 0x78, 0x8d, 0xa0, 0xc3, 0x87, 0xf5, + 0x75, 0x49, 0x49, 0x6a, 0xa0, 0xb5, 0xcc, 0x81, 0xee, 0x6c, 0x39, 0xdf, + 0x12, 0xbb, 0x9e, 0x99, 0x92, 0xcb, 0x31, 0x58, 0x23, 0x50, 0x38, 0xf3, + 0x5c, 0xc5, 0x34, 0x17, 0x5b, 0x3d, 0x8f, 0x2b, 0x7b, 0x06, 0xb7, 0x52, + 0x09, 0x1f, 0x44, 0xa4, 0xa6, 0xf6, 0x45, 0xe6, 0x08, 0x5c, 0x7f, 0xd6, + 0x37, 0x93, 0x6b, 0x01, 0x3c, 0xff, 0x00, 0x05, 0xd5, 0x39, 0xc1, 0xc0, + 0xbf, 0xc1, 0x72, 0x3f, 0x58, 0x6c, 0x0e, 0xcd, 0x6b, 0x3b, 0x06, 0xfe, + 0x54, 0x94, 0xe7, 0xd4, 0xc9, 0x1e, 0x2a, 0xc6, 0x13, 0x76, 0x66, 0xd6, + 0x26, 0x3d, 0x49, 0x64, 0xe9, 0xa6, 0xe1, 0xa7, 0x3e, 0x68, 0x74, 0x39, + 0xbb, 0x4e, 0xbc, 0x21, 0xe4, 0x5b, 0xb4, 0xee, 0x6e, 0x85, 0xbc, 0x7c, + 0x42, 0x4a, 0x7a, 0x2b, 0x4d, 0x57, 0xe2, 0x5b, 0xb9, 0xa1, 0xde, 0xc3, + 0x64, 0x90, 0x5e, 0xed, 0x7f, 0x47, 0x67, 0xe3, 0xaa, 0x03, 0x5c, 0xe7, + 0x51, 0x89, 0x69, 0x76, 0xa3, 0x1f, 0x7b, 0xc9, 0xd0, 0x93, 0x64, 0x3b, + 0x53, 0xdf, 0x45, 0x6a, 0xa7, 0x0b, 0xb1, 0x1c, 0xe6, 0xb4, 0xed, 0xc8, + 0xaf, 0xdb, 0xb9, 0xc0, 0x69, 0x73, 0x0f, 0x66, 0xff, 0x00, 0x2d, 0xaa, + 0x86, 0x0f, 0xbb, 0xa3, 0x50, 0x75, 0x07, 0x66, 0xd1, 0xac, 0x8f, 0x63, + 0x5a, 0xd3, 0xe6, 0x35, 0x49, 0x4c, 0x4d, 0xad, 0x2e, 0x1a, 0x46, 0xd6, + 0x98, 0xe3, 0xb0, 0x2a, 0x9b, 0x36, 0x9b, 0x5e, 0xd0, 0xdd, 0xc4, 0x06, + 0x8e, 0x7f, 0x93, 0xaa, 0x33, 0xe5, 0x8c, 0x7c, 0x02, 0xe2, 0x1a, 0x41, + 0x23, 0x4e, 0x56, 0x71, 0xbb, 0xd3, 0xca, 0xbb, 0xb0, 0x04, 0x40, 0x13, + 0xa2, 0x4a, 0x6e, 0xd9, 0x8e, 0xdb, 0x07, 0xd2, 0x68, 0xfd, 0xce, 0x4f, + 0xde, 0x86, 0xdb, 0x4b, 0x36, 0xb6, 0xcf, 0xd1, 0x90, 0x47, 0xc0, 0x0e, + 0xea, 0x1e, 0xa8, 0xb9, 0xc4, 0x82, 0x43, 0x48, 0x81, 0xb4, 0xea, 0x0f, + 0x28, 0x16, 0xd6, 0xf2, 0x01, 0x7b, 0xe4, 0x79, 0x8d, 0x7c, 0x92, 0x52, + 0x5b, 0x2a, 0x73, 0x49, 0x6b, 0x1d, 0xb9, 0x8d, 0x07, 0x69, 0xe6, 0x67, + 0xcd, 0x53, 0x7d, 0x8e, 0xad, 0xe5, 0xc3, 0x5e, 0xfa, 0xff, 0x00, 0x14, + 0xff, 0x00, 0xa4, 0x69, 0xf6, 0xbc, 0xe9, 0xa8, 0x01, 0x08, 0x92, 0xe3, + 0xef, 0x80, 0x26, 0x4e, 0xa9, 0x29, 0x9b, 0xb2, 0xac, 0x73, 0x75, 0x12, + 0x4c, 0xcf, 0x31, 0xaa, 0x8b, 0x43, 0xec, 0x0d, 0x60, 0x6e, 0xd6, 0xb7, + 0x41, 0xe4, 0xa6, 0xc7, 0xe3, 0xb6, 0x1a, 0x48, 0x33, 0x1e, 0xe5, 0x31, + 0x95, 0x8e, 0xc3, 0x24, 0x98, 0x1d, 0xbc, 0x92, 0x53, 0x1f, 0xb2, 0x16, + 0x81, 0x63, 0xe6, 0x47, 0x3a, 0x6a, 0x8a, 0xcc, 0x70, 0xe0, 0x5c, 0x01, + 0xd4, 0x18, 0x71, 0x1f, 0xc5, 0x0a, 0xde, 0xa5, 0x5b, 0x9f, 0xb6, 0xb3, + 0x31, 0xc1, 0x02, 0x27, 0xe2, 0x82, 0xfc, 0x8b, 0x6c, 0x30, 0xdf, 0x68, + 0x27, 0xe8, 0x8e, 0x12, 0x53, 0xa6, 0x36, 0xbf, 0x1a, 0xb0, 0x39, 0x6b, + 0xe1, 0x17, 0x14, 0xbb, 0xd7, 0x8f, 0x12, 0xb3, 0xf1, 0xd8, 0x45, 0x8d, + 0x12, 0x48, 0x00, 0xb8, 0xad, 0x5e, 0x9d, 0x65, 0x5b, 0x0d, 0x96, 0x69, + 0x02, 0x02, 0x4a, 0x4f, 0x9f, 0x92, 0xda, 0xd8, 0xda, 0x68, 0x77, 0xe9, + 0x0e, 0xaf, 0x28, 0x1e, 0xae, 0x47, 0xd9, 0xa2, 0x75, 0xfd, 0xef, 0x35, + 0x8d, 0xd4, 0x5f, 0x65, 0xb9, 0x25, 0xf4, 0x92, 0x07, 0x62, 0x11, 0x77, + 0x66, 0xfd, 0x83, 0xe9, 0x9e, 0x79, 0x49, 0x4f, 0xa0, 0x64, 0x65, 0xd6, + 0x74, 0x91, 0x3f, 0x9d, 0x1e, 0x2a, 0x8b, 0xdd, 0xa1, 0x6b, 0x0f, 0xb9, + 0xf1, 0xa0, 0xe6, 0x25, 0x66, 0xe4, 0xe3, 0xe5, 0x63, 0xbb, 0x73, 0x5c, + 0x5e, 0xc3, 0xaf, 0xc1, 0x58, 0xc5, 0xc9, 0x36, 0xb0, 0x0e, 0x2c, 0x3a, + 0x47, 0x7f, 0x8a, 0x4a, 0x6c, 0x87, 0x16, 0xde, 0xed, 0xdf, 0x45, 0xdc, + 0x47, 0x32, 0xa6, 0x5e, 0x58, 0x3d, 0x48, 0xf3, 0x43, 0xca, 0xac, 0x36, + 0x1c, 0x78, 0xd0, 0xe8, 0x83, 0x66, 0x68, 0x04, 0x48, 0xdd, 0x5f, 0x73, + 0xf9, 0x12, 0x53, 0x66, 0x82, 0x58, 0x4d, 0xa7, 0xe9, 0x38, 0xfb, 0x89, + 0x3c, 0x79, 0x22, 0xec, 0x68, 0x7e, 0xe6, 0xfe, 0x77, 0x92, 0x15, 0x2e, + 0x16, 0x36, 0x47, 0xd1, 0x3c, 0xcf, 0x64, 0x8b, 0xde, 0x3d, 0x80, 0x9f, + 0x07, 0x14, 0x94, 0xbe, 0x58, 0x25, 0x86, 0xaa, 0xdb, 0xba, 0xc3, 0xc0, + 0x9d, 0x02, 0xe5, 0x85, 0xdf, 0x66, 0xfa, 0xd3, 0x41, 0xb6, 0x36, 0xb8, + 0x0a, 0xde, 0xee, 0xc0, 0xbe, 0x7f, 0x21, 0x21, 0x75, 0x61, 0xde, 0xc2, + 0x00, 0x8f, 0x0f, 0x1f, 0x9a, 0xe5, 0xfa, 0x96, 0x03, 0xee, 0xf5, 0xaf, + 0x68, 0xf7, 0x07, 0x17, 0x03, 0xdc, 0x6d, 0xe1, 0x25, 0x3d, 0x2d, 0x98, + 0xed, 0xb2, 0x5f, 0x00, 0x13, 0xe0, 0x62, 0x7e, 0x4a, 0xb5, 0x98, 0xd7, + 0x57, 0x20, 0x34, 0x8d, 0xbe, 0x06, 0x7e, 0x5a, 0xa1, 0xe3, 0xe6, 0x91, + 0x8d, 0x5d, 0xa3, 0x5d, 0xed, 0x04, 0x9f, 0x37, 0x09, 0x25, 0x0e, 0xfe, + 0xab, 0x9a, 0xcd, 0x7d, 0x30, 0xe6, 0x8e, 0x0c, 0x73, 0xe6, 0x92, 0x94, + 0x6c, 0xb4, 0x12, 0xd7, 0x0d, 0xc7, 0xb4, 0x6b, 0x06, 0x3b, 0xaa, 0xb7, + 0x3e, 0x4e, 0xdb, 0x68, 0x2e, 0x13, 0xca, 0x93, 0xba, 0xd6, 0x56, 0xd2, + 0xd1, 0x84, 0x5e, 0xe7, 0x73, 0x03, 0x68, 0x84, 0x23, 0x99, 0xd5, 0x49, + 0x31, 0x84, 0xd6, 0xb7, 0xc1, 0xc5, 0x25, 0x35, 0x67, 0x1e, 0x97, 0x59, + 0xe9, 0x07, 0x30, 0xbc, 0x7b, 0xab, 0x71, 0xf6, 0x99, 0xf0, 0x1e, 0x29, + 0xfa, 0x3d, 0xb5, 0xb1, 0xd6, 0xd2, 0xd3, 0x35, 0xbb, 0xf4, 0x8c, 0x6f, + 0x3b, 0x49, 0xfa, 0x4d, 0x3f, 0x02, 0xa5, 0x7d, 0xbd, 0x5e, 0xc7, 0x34, + 0x7d, 0x9e, 0x9a, 0xc9, 0xd1, 0xb3, 0x13, 0x0b, 0x3a, 0xeb, 0xb2, 0x71, + 0x72, 0x05, 0xb7, 0x63, 0x8a, 0xa4, 0xc3, 0xac, 0x60, 0xd0, 0xb4, 0xe8, + 0x66, 0x12, 0x53, 0xbb, 0x75, 0x8d, 0x75, 0x67, 0x6c, 0x6c, 0x3a, 0x97, + 0x01, 0x10, 0x54, 0x31, 0xd9, 0xba, 0xdd, 0xc7, 0xb0, 0xd3, 0xe6, 0x83, + 0x8e, 0xe6, 0xfa, 0x63, 0x6b, 0xa7, 0x99, 0x57, 0xf0, 0x86, 0xe6, 0x6e, + 0x3c, 0xb8, 0xe9, 0xf0, 0x09, 0x29, 0xd0, 0xc1, 0xa8, 0x6e, 0xe3, 0x5f, + 0x35, 0xb1, 0x5b, 0x36, 0xb0, 0x8e, 0xca, 0xa6, 0x15, 0x5b, 0x4e, 0xe3, + 0xe0, 0xaf, 0x13, 0xed, 0x23, 0xba, 0x4a, 0x43, 0x60, 0x6b, 0x29, 0xf1, + 0x2b, 0x84, 0xeb, 0x96, 0x83, 0xd4, 0x5c, 0x3b, 0x34, 0x2e, 0xe7, 0x20, + 0x86, 0xd6, 0x67, 0x98, 0x5e, 0x7b, 0xd5, 0x9c, 0x1d, 0x9f, 0x63, 0xb9, + 0xdc, 0x92, 0x98, 0xd6, 0xf3, 0xf9, 0xaa, 0x37, 0x17, 0x1e, 0x51, 0x31, + 0x5a, 0xd2, 0x35, 0x56, 0x6c, 0xa0, 0x42, 0x4a, 0x77, 0x7e, 0xad, 0xb9, + 0xf7, 0xf4, 0xd6, 0xd6, 0x01, 0x05, 0x9b, 0xaa, 0x0e, 0x00, 0x73, 0x3e, + 0xa3, 0x25, 0xc5, 0x51, 0xa4, 0xfe, 0xa4, 0xd6, 0x02, 0x08, 0xa8, 0xbd, + 0x83, 0xc8, 0x1b, 0x1f, 0xc9, 0xef, 0x02, 0x11, 0x3e, 0xae, 0xb8, 0xb4, + 0xdd, 0x8e, 0x0c, 0x3b, 0x4b, 0x6b, 0x10, 0x5d, 0xee, 0x67, 0x97, 0x0a, + 0x65, 0xac, 0xae, 0xec, 0x86, 0x34, 0x45, 0x66, 0xd7, 0x58, 0xd9, 0xd2, + 0x03, 0xe1, 0xe3, 0x4f, 0xed, 0x24, 0xa6, 0x9b, 0x9f, 0x14, 0xb9, 0xd2, + 0x37, 0x1e, 0x5a, 0x7e, 0x20, 0x68, 0xa8, 0x48, 0x73, 0xf2, 0x6d, 0x78, + 0xd4, 0x97, 0x12, 0x27, 0x90, 0x16, 0xcd, 0xd4, 0xd6, 0x44, 0x3b, 0x47, + 0x69, 0x3e, 0x44, 0x11, 0xfc, 0x16, 0x5d, 0x58, 0xe1, 0xf5, 0xbc, 0x1d, + 0x03, 0x9c, 0x4c, 0x1e, 0xe0, 0x72, 0x12, 0x52, 0x0e, 0x9e, 0x2c, 0xa2, + 0xeb, 0x6d, 0xb4, 0x7e, 0x8d, 0xed, 0xf6, 0x32, 0x66, 0x3b, 0x83, 0xa2, + 0x0d, 0xf7, 0xbd, 0xd6, 0x38, 0x92, 0x3d, 0xe2, 0x1a, 0xdf, 0x0d, 0x55, + 0xd7, 0xd6, 0xe6, 0xb1, 0xc1, 0xad, 0x10, 0xde, 0x00, 0xfa, 0x40, 0x0f, + 0x10, 0xb3, 0xae, 0xa1, 0xc1, 0xdb, 0xe2, 0x3b, 0x83, 0x32, 0x92, 0x91, + 0x3b, 0x74, 0xc0, 0x3e, 0x48, 0x45, 0x8e, 0x26, 0x66, 0x11, 0xeb, 0x71, + 0x20, 0xc9, 0x98, 0xe3, 0xc9, 0x49, 0xcd, 0xf6, 0x87, 0x0f, 0xbd, 0x25, + 0x34, 0x4b, 0x07, 0xab, 0x00, 0xcb, 0x7b, 0x13, 0xa4, 0xfc, 0x93, 0xdd, + 0xed, 0xd0, 0x76, 0x1f, 0x95, 0x18, 0xb0, 0x7a, 0x80, 0xf0, 0x3b, 0xaa, + 0xce, 0x3b, 0xad, 0x71, 0x3f, 0x44, 0x14, 0x94, 0x92, 0x9d, 0xb5, 0xb7, + 0xd4, 0x77, 0xd2, 0xec, 0x13, 0xb1, 0xef, 0x27, 0x77, 0x12, 0x74, 0x01, + 0x0d, 0xa1, 0xd6, 0x1d, 0xd1, 0x23, 0x80, 0x17, 0x59, 0xf5, 0x4f, 0xa2, + 0x32, 0xef, 0xd7, 0xb2, 0x19, 0x3b, 0x5c, 0x7d, 0x36, 0x9d, 0x40, 0x8e, + 0xe9, 0x29, 0xac, 0xde, 0x99, 0x91, 0x8b, 0xd3, 0xce, 0x66, 0x48, 0xd8, + 0xfb, 0x61, 0xac, 0xac, 0x72, 0x07, 0xf2, 0xbc, 0xd5, 0x43, 0x60, 0xf4, + 0xc3, 0x1a, 0x7d, 0xc7, 0xb0, 0x5d, 0x67, 0xd6, 0x86, 0x81, 0x45, 0x35, + 0x76, 0xd4, 0xc2, 0xc2, 0xc4, 0xc3, 0x68, 0x67, 0xa9, 0xb3, 0x7c, 0xfd, + 0xe1, 0x25, 0x35, 0x6a, 0xad, 0xe2, 0x26, 0xa2, 0xe0, 0x79, 0x21, 0x5c, + 0xfb, 0x39, 0xf4, 0xe3, 0xd3, 0x76, 0xce, 0x63, 0xba, 0xb1, 0x4e, 0xf6, + 0x3f, 0x6b, 0x7e, 0xe5, 0xa3, 0x0e, 0xf4, 0xa7, 0xf3, 0x92, 0x53, 0x6f, + 0x21, 0xad, 0x71, 0x83, 0x24, 0xbb, 0xb0, 0xe1, 0x65, 0xe5, 0x61, 0x3a, + 0x97, 0xfa, 0xc0, 0xed, 0x02, 0x20, 0x71, 0x0a, 0xfd, 0x59, 0x95, 0x3c, + 0x6e, 0x2d, 0xd8, 0x75, 0x1c, 0xa1, 0xe5, 0x5a, 0x6c, 0x67, 0x88, 0x1a, + 0x1f, 0xbf, 0x44, 0x94, 0x96, 0xbb, 0xd9, 0x7e, 0x2b, 0x9a, 0xe1, 0x36, + 0x13, 0xc9, 0xe6, 0x55, 0x6a, 0x6b, 0x6b, 0x1a, 0xea, 0x6c, 0x6c, 0xb9, + 0xc4, 0xbb, 0x4d, 0x41, 0x3e, 0x1f, 0x20, 0xaa, 0xdb, 0x7b, 0xfa, 0x7d, + 0x95, 0xdb, 0x02, 0xca, 0xcb, 0xa5, 0xed, 0xf8, 0x05, 0xa6, 0xeb, 0x06, + 0x4d, 0x55, 0xdd, 0x4c, 0x00, 0xed, 0x64, 0x76, 0xee, 0x12, 0x53, 0x43, + 0x1e, 0xef, 0x42, 0xe2, 0xd2, 0x65, 0xae, 0xf1, 0xec, 0xb4, 0x1b, 0x64, + 0x89, 0x02, 0x0f, 0x7d, 0x55, 0x6c, 0xca, 0x05, 0xd5, 0x87, 0x81, 0xee, + 0xe5, 0xae, 0x1a, 0x6a, 0xab, 0x57, 0x65, 0x8e, 0x67, 0xb5, 0xfa, 0x8d, + 0x1e, 0x3b, 0xa4, 0xa7, 0x58, 0x0d, 0xfa, 0x1f, 0x8f, 0xc1, 0x57, 0xab, + 0x1c, 0x3c, 0x58, 0x0f, 0x04, 0xba, 0x50, 0xb1, 0xf3, 0x0b, 0x08, 0x65, + 0x9a, 0x0e, 0x35, 0xee, 0xb4, 0x71, 0xfd, 0x10, 0xd2, 0x5b, 0xac, 0xeb, + 0x1e, 0x69, 0x29, 0xa1, 0x81, 0x82, 0xdb, 0x30, 0xc8, 0x67, 0xb5, 0xf8, + 0xee, 0x7b, 0x27, 0xe7, 0x2d, 0xfb, 0xa5, 0x44, 0x55, 0x6b, 0x08, 0x6b, + 0xf4, 0x73, 0x34, 0x32, 0x3b, 0xfc, 0x55, 0x7a, 0xfa, 0xbb, 0x3a, 0x67, + 0x5e, 0xb3, 0x17, 0x24, 0xed, 0xc5, 0xcc, 0x01, 0xc0, 0xf3, 0xb2, 0xd1, + 0xed, 0x9d, 0x3c, 0x42, 0xd4, 0xfb, 0x7e, 0x15, 0xba, 0x16, 0x38, 0x02, + 0x61, 0xaf, 0x77, 0x0e, 0x3f, 0x1f, 0xef, 0x49, 0x48, 0x1d, 0xb2, 0x21, + 0x8d, 0x27, 0x69, 0x12, 0x40, 0x40, 0xb1, 0xf6, 0xee, 0x20, 0x34, 0x16, + 0x91, 0xcb, 0x9d, 0xfc, 0x16, 0x85, 0x9e, 0x9b, 0x40, 0x75, 0x6c, 0x24, + 0x1f, 0x6c, 0x1e, 0x7e, 0x50, 0x83, 0x2e, 0x61, 0x7b, 0x03, 0x18, 0xd2, + 0x34, 0x93, 0xac, 0x8f, 0x87, 0xc1, 0x25, 0x34, 0xac, 0xad, 0xd6, 0x34, + 0x58, 0xd3, 0xb0, 0xb7, 0x83, 0x00, 0xfc, 0x62, 0x56, 0x56, 0x6d, 0x17, + 0xd9, 0xbb, 0x7d, 0x8e, 0x2d, 0xf0, 0x76, 0x92, 0xb5, 0xad, 0xa3, 0x28, + 0xee, 0xd9, 0x6f, 0xa7, 0xdc, 0x80, 0x04, 0x41, 0xf8, 0xcc, 0x2c, 0xcb, + 0xe8, 0xcf, 0x60, 0x2d, 0x39, 0x0c, 0x03, 0x9e, 0x35, 0x49, 0x4d, 0x0e, + 0x99, 0x73, 0x98, 0x5f, 0x8d, 0x69, 0xda, 0xe6, 0x99, 0x03, 0xc4, 0x76, + 0xf8, 0xae, 0x93, 0x0a, 0xb0, 0x3d, 0x36, 0xf8, 0x05, 0xce, 0x61, 0xe2, + 0xdb, 0x67, 0x53, 0xad, 0xee, 0x76, 0xe3, 0x58, 0x25, 0xd1, 0xdf, 0xc9, + 0x75, 0xd8, 0x75, 0x8d, 0xc0, 0xf8, 0xe8, 0x92, 0x9d, 0x2a, 0x59, 0xb6, + 0xbf, 0x32, 0x13, 0xc3, 0xbb, 0xe8, 0x8d, 0xa3, 0x58, 0x3c, 0x90, 0x4b, + 0xbd, 0xc6, 0x4f, 0xcb, 0xe2, 0x92, 0x9a, 0x5d, 0x46, 0xc2, 0x29, 0x71, + 0x3a, 0xae, 0x36, 0xf6, 0x55, 0x92, 0x0b, 0x1e, 0x40, 0xb3, 0xf4, 0x8e, + 0x6b, 0x83, 0x75, 0x1f, 0x9c, 0x24, 0xf7, 0x0b, 0xa9, 0xeb, 0x0f, 0x73, + 0x6a, 0x3e, 0x2b, 0x91, 0xa6, 0xcd, 0xb7, 0x34, 0x58, 0x25, 0xe6, 0xb7, + 0x09, 0x07, 0x59, 0x2e, 0xda, 0x3f, 0x04, 0x94, 0x83, 0x15, 0xcf, 0x6d, + 0x9b, 0x5d, 0xcb, 0x74, 0x2b, 0x50, 0x09, 0x12, 0x50, 0xb2, 0x71, 0x9a, + 0xdb, 0xfd, 0x56, 0x9d, 0x43, 0xbd, 0x32, 0xd2, 0x20, 0xc3, 0x40, 0xd5, + 0x5b, 0xad, 0x9e, 0xc4, 0x94, 0xae, 0x9d, 0x71, 0xc6, 0xce, 0xae, 0xce, + 0x00, 0x27, 0x76, 0xb1, 0x21, 0x5e, 0x70, 0x9b, 0x1f, 0x0e, 0x02, 0xb9, + 0x21, 0xae, 0x1f, 0x44, 0xc9, 0xd0, 0x82, 0x7c, 0x95, 0x07, 0xd4, 0xf6, + 0x80, 0xf8, 0x20, 0xfd, 0x20, 0x78, 0xe3, 0xcc, 0xf0, 0xb4, 0x0b, 0x58, + 0xca, 0x6b, 0x00, 0x6e, 0x70, 0x20, 0xc4, 0xeb, 0xaf, 0x8c, 0xa4, 0xa5, + 0xdd, 0x58, 0x74, 0x68, 0x49, 0x81, 0x13, 0xc6, 0xbd, 0xd5, 0x5a, 0x1b, + 0xb7, 0x18, 0x19, 0x3a, 0x12, 0xe0, 0x74, 0xec, 0x7c, 0xfb, 0xab, 0xc2, + 0x41, 0x2e, 0x2d, 0xe1, 0xa6, 0x27, 0x8d, 0x01, 0x94, 0x1a, 0x8b, 0x1d, + 0x8e, 0xc0, 0xe9, 0x93, 0x05, 0xbe, 0x00, 0xf9, 0x04, 0x94, 0xd5, 0x20, + 0x96, 0xb8, 0x88, 0x04, 0xe8, 0x74, 0xd6, 0x0e, 0xab, 0x2f, 0x2d, 0x9f, + 0xa3, 0x22, 0x74, 0x6f, 0x00, 0x05, 0xac, 0xf6, 0xba, 0xa7, 0xb8, 0xf3, + 0x3d, 0xb4, 0xf0, 0x54, 0x5d, 0x59, 0x2d, 0x78, 0x22, 0x27, 0xb0, 0xfc, + 0x52, 0x53, 0x90, 0xf0, 0x5b, 0xc1, 0x8e, 0xd0, 0x93, 0x5f, 0xd8, 0x1e, + 0x7c, 0x78, 0x53, 0xbd, 0xa2, 0x35, 0xe4, 0x72, 0xa9, 0xef, 0x74, 0xe8, + 0x92, 0x9b, 0x0f, 0x78, 0xda, 0x7c, 0xb5, 0x56, 0xba, 0x17, 0x43, 0xb3, + 0xa8, 0x4d, 0xcf, 0x69, 0x35, 0x4e, 0x8d, 0xfd, 0xe4, 0x1e, 0x9d, 0x83, + 0x6f, 0x53, 0xcb, 0xaf, 0x0d, 0x86, 0x05, 0x92, 0x5e, 0xf8, 0x9d, 0xad, + 0x68, 0x97, 0x15, 0xe8, 0xdf, 0x57, 0xc5, 0x78, 0xbd, 0x3f, 0xec, 0xe6, + 0xbf, 0x6d, 0x76, 0x3a, 0xb2, 0x62, 0x08, 0x0d, 0x3a, 0x6e, 0xf9, 0x24, + 0xa7, 0x9c, 0xb7, 0xa1, 0x43, 0x36, 0x06, 0x6c, 0x64, 0x7b, 0x8e, 0x82, + 0x02, 0xe9, 0xb0, 0x29, 0xa7, 0x1f, 0x1e, 0xaa, 0x6a, 0x68, 0x6d, 0x6c, + 0x68, 0x0d, 0x6f, 0x92, 0x97, 0x55, 0x35, 0x0c, 0x77, 0x12, 0x43, 0x7d, + 0x43, 0xb4, 0x0f, 0xde, 0xf2, 0x0a, 0x36, 0x6d, 0xc7, 0x02, 0xe7, 0x38, + 0x0a, 0x8c, 0x7c, 0x92, 0x53, 0x8d, 0xf5, 0xa2, 0xdd, 0xd9, 0x0d, 0x68, + 0xfc, 0xc6, 0xc2, 0xa1, 0x4b, 0xdf, 0x5d, 0x6d, 0x03, 0x83, 0xe0, 0xa7, + 0xd6, 0x2c, 0xfb, 0x45, 0xae, 0xb1, 0xba, 0x82, 0x74, 0x43, 0xc7, 0x36, + 0x00, 0x01, 0x29, 0x29, 0x35, 0x4d, 0x9b, 0x24, 0x19, 0x27, 0xba, 0xd4, + 0xf4, 0x0f, 0xa1, 0x2a, 0x96, 0x25, 0x6d, 0x2f, 0x92, 0x56, 0xbe, 0x9e, + 0x9c, 0x7e, 0x6a, 0x4a, 0x7c, 0xfb, 0x2e, 0xeb, 0xea, 0xbb, 0x57, 0xbb, + 0x6b, 0x78, 0xd4, 0xc4, 0x2d, 0x6c, 0x3c, 0xe3, 0x6d, 0x4d, 0x68, 0x71, + 0xdc, 0x60, 0xfd, 0xc9, 0xec, 0xe9, 0xc2, 0xf2, 0xe9, 0x6e, 0xd1, 0x12, + 0x7e, 0x2a, 0xb5, 0x54, 0x65, 0xf4, 0xd7, 0x7e, 0x88, 0x6e, 0xac, 0xf2, + 0xd3, 0xfc, 0x0a, 0x4a, 0x76, 0x7a, 0x80, 0x6d, 0xb8, 0x63, 0x43, 0xea, + 0x36, 0x77, 0x4f, 0x71, 0xa7, 0x0b, 0x37, 0xa7, 0xe6, 0x5b, 0x8a, 0x4d, + 0x66, 0x4d, 0x73, 0xf4, 0x4f, 0x64, 0xee, 0xea, 0x62, 0xe7, 0xb6, 0xb1, + 0xec, 0x76, 0xbb, 0x83, 0xb9, 0xf8, 0xa6, 0xfb, 0x38, 0x73, 0xcb, 0xda, + 0x65, 0xde, 0x49, 0x29, 0xe8, 0x2b, 0xb2, 0xbb, 0x6b, 0xdc, 0x0e, 0x87, + 0xb7, 0x81, 0xee, 0xa8, 0xdf, 0x5f, 0xa3, 0x66, 0xe8, 0x86, 0xbf, 0x47, + 0x7f, 0x05, 0x56, 0xbb, 0xdf, 0x8f, 0xec, 0x74, 0xec, 0xd0, 0x13, 0xdc, + 0x2b, 0x0d, 0xcb, 0xab, 0x21, 0x86, 0xa7, 0x80, 0x0f, 0x63, 0xf0, 0xee, + 0x92, 0x97, 0x3a, 0xb4, 0xb5, 0xdf, 0x27, 0x0e, 0xe1, 0x1a, 0xab, 0x36, + 0x37, 0xb9, 0xf1, 0x55, 0x45, 0xa0, 0x7b, 0x5d, 0xf4, 0x9b, 0xa0, 0xf3, + 0xfb, 0x93, 0xdb, 0x94, 0xd6, 0x56, 0x4f, 0x27, 0xcb, 0xb2, 0x4a, 0x72, + 0xfa, 0xdb, 0xeb, 0xb7, 0x26, 0x81, 0x53, 0x0b, 0xf2, 0x43, 0x87, 0xa6, + 0xd1, 0xcf, 0x32, 0xb7, 0xf0, 0x1f, 0x5e, 0x3b, 0x36, 0x64, 0x36, 0x71, + 0xde, 0x64, 0x38, 0xeb, 0xb5, 0xd1, 0xdc, 0x78, 0x2a, 0x5f, 0x56, 0x2a, + 0x66, 0x6e, 0x4f, 0x51, 0xc9, 0x7c, 0x39, 0xf5, 0xfa, 0x75, 0xb1, 0xc7, + 0x90, 0x1d, 0xb8, 0x98, 0xf8, 0xc2, 0xdb, 0xaf, 0x1c, 0x55, 0x6b, 0xeb, + 0x26, 0x6b, 0x30, 0x08, 0xd0, 0x68, 0x92, 0x9a, 0xe7, 0x2b, 0x22, 0x90, + 0xe8, 0xc7, 0x7d, 0x94, 0x69, 0xe9, 0x39, 0x90, 0xf3, 0x07, 0xf9, 0x28, + 0x6d, 0xcc, 0xba, 0xdd, 0x5d, 0x50, 0xa8, 0xea, 0x06, 0xe0, 0x49, 0xdb, + 0xfb, 0xc7, 0xcd, 0x58, 0x39, 0x4c, 0x65, 0xde, 0x8e, 0x21, 0x6b, 0xac, + 0x24, 0x82, 0xf9, 0x96, 0xb7, 0xcc, 0xc1, 0x85, 0x4f, 0x2f, 0xa6, 0x67, + 0x5f, 0x5f, 0xf4, 0xeb, 0x4e, 0x92, 0x76, 0x10, 0xc6, 0xeb, 0xf9, 0xad, + 0x8d, 0x52, 0x52, 0xef, 0xb6, 0xd0, 0xc2, 0xf7, 0x68, 0xc3, 0xda, 0x3e, + 0x97, 0x65, 0x8f, 0xd6, 0x32, 0x29, 0x15, 0x37, 0xd1, 0xb3, 0xf4, 0xc0, + 0x83, 0xa8, 0x13, 0x1f, 0xba, 0x02, 0x1d, 0xbd, 0x27, 0xa8, 0xbd, 0xc6, + 0xa7, 0xdf, 0x69, 0x11, 0x04, 0x17, 0x18, 0xfc, 0x54, 0xeb, 0xe8, 0x21, + 0xa0, 0x39, 0xcf, 0x3b, 0x87, 0x32, 0x41, 0x31, 0xdf, 0x84, 0x94, 0x9f, + 0xea, 0xfd, 0x77, 0x5b, 0x5f, 0xaf, 0x70, 0x01, 0xc4, 0xc3, 0x40, 0x1b, + 0x74, 0xf3, 0x95, 0xd2, 0xd2, 0xc1, 0xed, 0xd2, 0x16, 0x7e, 0x05, 0x40, + 0x31, 0xa0, 0x08, 0x03, 0xb7, 0x92, 0xd4, 0xa0, 0xc1, 0x26, 0x35, 0x09, + 0x29, 0xb3, 0x26, 0x22, 0x66, 0x10, 0x2c, 0x71, 0x6e, 0xbe, 0x1d, 0xd4, + 0xdc, 0xfd, 0x47, 0x89, 0x50, 0xbc, 0x00, 0xcd, 0x4e, 0x89, 0x29, 0xc5, + 0xeb, 0x77, 0x46, 0x3d, 0x8e, 0xfd, 0xd6, 0x9f, 0xbe, 0x17, 0x25, 0x88, + 0xf7, 0x58, 0xc6, 0x64, 0x4c, 0xba, 0xa2, 0x3d, 0x46, 0xf3, 0x2d, 0x1c, + 0xe8, 0xba, 0x2e, 0xb7, 0x60, 0xfb, 0x2d, 0x8d, 0x1c, 0x91, 0x13, 0xf1, + 0x5c, 0xd6, 0x2b, 0xdb, 0x8d, 0x91, 0x10, 0x43, 0x1d, 0xe2, 0x92, 0x9d, + 0x86, 0x5a, 0x2d, 0xa8, 0x08, 0xe0, 0x17, 0x0d, 0x77, 0x37, 0x75, 0x8e, + 0xda, 0x34, 0xe4, 0x68, 0xae, 0xe0, 0xb2, 0x90, 0x0b, 0xed, 0x76, 0xf0, + 0xc1, 0x2e, 0x03, 0x56, 0x88, 0x13, 0xf3, 0x59, 0x35, 0xdb, 0xe8, 0x64, + 0x6c, 0x74, 0xed, 0x8d, 0xf4, 0xcf, 0x66, 0x34, 0x18, 0x6c, 0xf9, 0x39, + 0x15, 0xbf, 0x6a, 0xfb, 0x7d, 0x0c, 0x64, 0xb3, 0x1e, 0x26, 0xe8, 0xe1, + 0xef, 0x1a, 0x16, 0x9f, 0xee, 0x49, 0x4d, 0x9c, 0xe6, 0xd9, 0x95, 0x91, + 0x45, 0x1b, 0xa2, 0x08, 0xc8, 0xc8, 0x6f, 0x60, 0x5a, 0x7d, 0x8d, 0xf8, + 0x95, 0xa9, 0x2d, 0x73, 0x1a, 0x08, 0x93, 0xc1, 0x88, 0x55, 0x18, 0x1b, + 0xeb, 0xd8, 0x40, 0x0d, 0xac, 0x39, 0xbb, 0x1b, 0x20, 0xd8, 0x34, 0xdc, + 0x01, 0x3d, 0xd1, 0x34, 0x6f, 0xe9, 0x67, 0x42, 0x08, 0x74, 0x24, 0xa6, + 0xcb, 0x76, 0xb2, 0xbb, 0xac, 0x04, 0xe9, 0x59, 0x1f, 0x90, 0x77, 0xf8, + 0xaa, 0x4e, 0x71, 0xa8, 0x30, 0x68, 0x41, 0x10, 0x67, 0x52, 0x9f, 0x2a, + 0xf6, 0xb5, 0x8f, 0xac, 0x19, 0x7b, 0x9c, 0xc6, 0xf9, 0x93, 0xc9, 0x03, + 0xf0, 0x56, 0xac, 0xc3, 0x66, 0xd3, 0x66, 0x51, 0xf4, 0x6b, 0x89, 0xd7, + 0xe9, 0x49, 0x84, 0x94, 0xd2, 0x7b, 0xb7, 0xbe, 0x49, 0x05, 0xba, 0x0d, + 0x20, 0x7e, 0x08, 0x76, 0xd6, 0x01, 0x21, 0xa2, 0x01, 0x26, 0x4f, 0xe0, + 0xb4, 0x1c, 0xfc, 0x0c, 0x61, 0xea, 0xb2, 0x96, 0xbd, 0xb1, 0x3b, 0xdc, + 0x77, 0x13, 0xfc, 0x11, 0x31, 0xec, 0xe9, 0x5d, 0x49, 0xed, 0x6b, 0x6b, + 0x04, 0xbc, 0x6a, 0xf6, 0xfb, 0x63, 0xee, 0xee, 0x92, 0x9e, 0x43, 0x21, + 0xba, 0xba, 0x34, 0x00, 0x98, 0x59, 0xce, 0x20, 0x38, 0x9e, 0xc3, 0x58, + 0x5d, 0xb7, 0x56, 0xfa, 0x9d, 0x7e, 0xd7, 0x3b, 0xa6, 0xdc, 0xdb, 0x7b, + 0xfa, 0x6f, 0xd1, 0xde, 0x70, 0xee, 0x0a, 0xe4, 0x33, 0xfa, 0x5f, 0x51, + 0xe9, 0xe6, 0x73, 0x71, 0xdf, 0x53, 0x49, 0xd1, 0xc4, 0x7b, 0x49, 0xfe, + 0xb0, 0xd1, 0x25, 0x3d, 0x1f, 0xd5, 0x1a, 0x5c, 0xc0, 0xdb, 0xb5, 0x6b, + 0xad, 0x2f, 0x87, 0x71, 0x0c, 0x88, 0x99, 0xf9, 0x2e, 0xc7, 0x17, 0xa7, + 0x83, 0x63, 0xb2, 0x43, 0x9c, 0xda, 0xec, 0xf7, 0x1a, 0xff, 0x00, 0x35, + 0xce, 0x02, 0x37, 0x78, 0xac, 0x0f, 0xab, 0x6d, 0x65, 0xb8, 0x14, 0x0a, + 0xce, 0xd1, 0xe9, 0xb6, 0x4c, 0x7e, 0xef, 0xd2, 0xfb, 0xd7, 0x5f, 0x53, + 0xa6, 0x98, 0x26, 0x60, 0x4a, 0x4a, 0x70, 0xac, 0x79, 0xcd, 0xea, 0x17, + 0x50, 0x5c, 0xd0, 0x29, 0x6e, 0xc6, 0xb4, 0xf6, 0x27, 0x92, 0x83, 0x9e, + 0x71, 0x72, 0x6a, 0xfb, 0x23, 0xad, 0x2c, 0xbe, 0x91, 0x20, 0x4c, 0x49, + 0x0a, 0x8f, 0xd6, 0xb2, 0xec, 0x4b, 0x19, 0xd5, 0x71, 0x0c, 0x3c, 0x9d, + 0x99, 0x00, 0x71, 0x3d, 0x97, 0x2d, 0x9f, 0xd5, 0xee, 0xcc, 0x75, 0x6e, + 0xd5, 0xb6, 0xee, 0x02, 0x47, 0x29, 0x29, 0xd7, 0xbe, 0xf7, 0xda, 0xd6, + 0xb9, 0xc2, 0x27, 0x41, 0xf2, 0xd1, 0x3d, 0x44, 0x8d, 0x64, 0xeb, 0xe2, + 0x91, 0x6f, 0xa9, 0x40, 0x61, 0x10, 0xe6, 0x89, 0x95, 0x06, 0xde, 0x05, + 0x6e, 0x6b, 0xbe, 0x90, 0xd0, 0x14, 0x94, 0xdf, 0xe9, 0xf6, 0x03, 0x61, + 0xde, 0xb6, 0x77, 0x0f, 0x4b, 0xca, 0x56, 0x3f, 0x4b, 0xac, 0x38, 0x49, + 0xd5, 0x6d, 0xfa, 0x6d, 0xf4, 0x3e, 0x69, 0x29, 0xa8, 0xea, 0x1a, 0xd7, + 0x38, 0x34, 0x6b, 0x1a, 0x28, 0xd9, 0x88, 0xdb, 0x36, 0x02, 0x25, 0x4e, + 0x5d, 0xbf, 0x6e, 0xef, 0x71, 0x02, 0x7c, 0x14, 0xac, 0x73, 0xea, 0xa9, + 0xd7, 0x59, 0xed, 0x65, 0x60, 0x99, 0xf3, 0xe0, 0x42, 0x4a, 0x78, 0xfe, + 0xbb, 0x41, 0x6f, 0x50, 0x1f, 0x66, 0x30, 0x58, 0x20, 0xb8, 0x7c, 0x78, + 0x45, 0xc3, 0xea, 0x16, 0xd3, 0xed, 0xb4, 0x00, 0xf3, 0xf9, 0xd1, 0xa1, + 0x47, 0xae, 0x93, 0x7d, 0xcf, 0xb4, 0x89, 0xde, 0x64, 0x15, 0x1c, 0xfc, + 0x66, 0xb5, 0x8d, 0x11, 0xaf, 0x8a, 0x4a, 0x6c, 0xc5, 0xb6, 0x0f, 0x52, + 0x23, 0xf8, 0xa6, 0xb0, 0x54, 0x58, 0xd2, 0xcf, 0x6b, 0xc7, 0xe0, 0x56, + 0x7e, 0x3f, 0x51, 0xb7, 0x14, 0xfa, 0x4f, 0x1e, 0xa5, 0x27, 0x82, 0x79, + 0x6a, 0xb5, 0xeb, 0xd3, 0x68, 0x2f, 0xa5, 0xc0, 0xf8, 0x8e, 0xe3, 0xe4, + 0x52, 0x53, 0x1b, 0x72, 0xdc, 0xd1, 0xef, 0x6c, 0x39, 0xba, 0x07, 0xb5, + 0x53, 0xb2, 0xf7, 0xb9, 0x84, 0x13, 0x00, 0xf1, 0x08, 0xd7, 0x58, 0x5c, + 0x21, 0xc4, 0x40, 0xf0, 0x55, 0x1c, 0xf0, 0x39, 0x29, 0x29, 0x17, 0x4d, + 0xeb, 0x39, 0x7d, 0x2b, 0x35, 0xcf, 0xc7, 0x01, 0xed, 0xb6, 0x05, 0x95, + 0x1e, 0x1f, 0x1c, 0x7c, 0xf5, 0x5d, 0xc1, 0xbd, 0x99, 0x65, 0xa2, 0xd6, + 0x06, 0x5a, 0x04, 0x35, 0xa7, 0xf3, 0x67, 0x9d, 0x57, 0x9e, 0xb5, 0xec, + 0xab, 0x36, 0xab, 0x9d, 0xf4, 0x59, 0x63, 0x5c, 0x7e, 0x00, 0x82, 0xbd, + 0x1b, 0x1b, 0x1b, 0xed, 0x4d, 0x0f, 0x04, 0x17, 0x0d, 0x49, 0x1c, 0x90, + 0x7c, 0x52, 0x52, 0x0f, 0xd9, 0x77, 0xb0, 0x6f, 0xa2, 0x1a, 0xc1, 0xfb, + 0xb0, 0x3e, 0xf4, 0x16, 0xe6, 0x0c, 0x62, 0x19, 0x63, 0xde, 0x36, 0xea, + 0x60, 0x18, 0x3e, 0x5b, 0xb8, 0x5b, 0x34, 0xb2, 0xcc, 0x72, 0xd6, 0xb9, + 0xfe, 0xa5, 0x70, 0x79, 0xe5, 0xb3, 0xe0, 0x15, 0x7c, 0xb7, 0x87, 0xb3, + 0xd2, 0x6d, 0x7e, 0xa6, 0xed, 0x4b, 0x0e, 0x89, 0x29, 0xcb, 0xb7, 0xa8, + 0xe1, 0xe5, 0x3f, 0xd1, 0x0f, 0x1e, 0xab, 0xa4, 0x56, 0xc6, 0x0d, 0xc4, + 0xb8, 0xfe, 0xf2, 0x3b, 0xa9, 0xf4, 0x71, 0xf6, 0xba, 0x37, 0xd8, 0x76, + 0x92, 0x07, 0x82, 0x26, 0x2d, 0x0d, 0x65, 0x8e, 0x1b, 0x03, 0x45, 0x70, + 0xd0, 0x44, 0x44, 0xbb, 0x57, 0x44, 0x0f, 0x0d, 0x11, 0x5f, 0x51, 0xb7, + 0x66, 0xef, 0xa2, 0x25, 0xc7, 0xe2, 0x92, 0x99, 0x53, 0x56, 0xd0, 0xd1, + 0x1a, 0x8e, 0xca, 0xc3, 0x46, 0xd6, 0xc9, 0xd7, 0xc4, 0x21, 0xb8, 0x06, + 0xb7, 0xdb, 0xa6, 0x9d, 0x91, 0x9a, 0x25, 0xba, 0x84, 0x94, 0xc2, 0x65, + 0xe2, 0x3e, 0x6a, 0x39, 0x8e, 0x3b, 0x43, 0x41, 0xf8, 0x7c, 0x91, 0x58, + 0x36, 0xba, 0x5c, 0xa9, 0xe6, 0x38, 0xee, 0x84, 0x94, 0xf3, 0x9f, 0x58, + 0x5e, 0xdf, 0x45, 0xb5, 0x4c, 0x39, 0xef, 0x10, 0x7c, 0xc0, 0x95, 0x92, + 0x43, 0x6f, 0xc7, 0x20, 0x8d, 0xb6, 0x33, 0x9e, 0xc4, 0x1f, 0x05, 0x6f, + 0xeb, 0x33, 0xc3, 0xae, 0x65, 0x6d, 0x30, 0xf6, 0xcb, 0xc0, 0xf3, 0x1a, + 0x2c, 0xc6, 0x5e, 0xe2, 0x0b, 0xdd, 0xcb, 0x86, 0xb3, 0xde, 0x34, 0xfb, + 0xc2, 0x4a, 0x74, 0x3a, 0x60, 0x7e, 0x4b, 0x4e, 0x4e, 0x40, 0x1b, 0x71, + 0x78, 0x9f, 0xcf, 0x27, 0xf2, 0xc2, 0xd1, 0xc6, 0xb4, 0xd7, 0x45, 0x76, + 0x1f, 0x6c, 0x37, 0xf9, 0xc8, 0xe1, 0xd6, 0x12, 0xf0, 0x40, 0xfd, 0xee, + 0xd2, 0x8f, 0xd2, 0x70, 0xe8, 0xc8, 0xe9, 0x35, 0xb8, 0xcf, 0xe9, 0x37, + 0x12, 0x07, 0x79, 0x24, 0x4f, 0xcf, 0x80, 0xb3, 0x3a, 0x8e, 0x4b, 0xbe, + 0xda, 0xf7, 0xfd, 0x0c, 0x7a, 0x40, 0xa9, 0xaf, 0xff, 0x00, 0x49, 0x02, + 0x00, 0x1e, 0x4d, 0x1d, 0xd2, 0x53, 0x66, 0x9b, 0x49, 0x2e, 0xdc, 0x23, + 0x71, 0x25, 0xc0, 0xeb, 0x13, 0xd9, 0x1b, 0xd6, 0x73, 0xec, 0x00, 0x37, + 0xd4, 0x79, 0x86, 0xb5, 0x8d, 0x3f, 0x48, 0xf8, 0x42, 0xc8, 0xaa, 0xfb, + 0x2f, 0xb1, 0xb4, 0xd2, 0xd3, 0x63, 0xde, 0x7d, 0xad, 0x01, 0x74, 0x58, + 0x75, 0x57, 0xd2, 0x71, 0xc3, 0xde, 0x3d, 0x4c, 0xcb, 0x74, 0x31, 0xae, + 0xdf, 0xe4, 0xb5, 0x25, 0x25, 0x6d, 0x38, 0xbd, 0x36, 0xa1, 0x76, 0x44, + 0x59, 0x94, 0x35, 0xdd, 0xc8, 0x61, 0x3c, 0xed, 0x9e, 0xfe, 0x6b, 0x2d, + 0xc7, 0xad, 0xfd, 0x60, 0xbf, 0xd2, 0xc5, 0xaf, 0xf5, 0x76, 0x98, 0x75, + 0xa7, 0xda, 0xc0, 0x3c, 0xdc, 0x55, 0xfa, 0xb0, 0x7e, 0xd3, 0x6f, 0xaf, + 0x9a, 0xef, 0x69, 0x32, 0x28, 0x9f, 0x6f, 0xf6, 0x8f, 0x75, 0xb3, 0x4f, + 0x56, 0xc5, 0xae, 0x31, 0x71, 0x5b, 0x36, 0xb6, 0x00, 0xaa, 0xb1, 0x3f, + 0x38, 0x1d, 0x92, 0x52, 0x0c, 0x1f, 0xa9, 0x95, 0x32, 0xbd, 0x99, 0x79, + 0x6e, 0x79, 0x3c, 0xd6, 0xcd, 0x1b, 0xff, 0x00, 0x4a, 0x53, 0x64, 0x7d, + 0x55, 0xc6, 0xc6, 0x0e, 0x7e, 0x0d, 0xd6, 0x53, 0x60, 0xe7, 0x59, 0x07, + 0xe2, 0x16, 0xe5, 0x20, 0x90, 0x2d, 0xb3, 0x47, 0xf6, 0x6c, 0xf0, 0x50, + 0xac, 0x73, 0x8c, 0xbb, 0x99, 0xe6, 0x0e, 0x89, 0x29, 0x06, 0x16, 0x4b, + 0x1d, 0x47, 0xa7, 0x3b, 0xac, 0x60, 0x01, 0xce, 0xec, 0x5c, 0x06, 0xaa, + 0xcd, 0xd4, 0x55, 0x7d, 0x4e, 0xae, 0xc6, 0x87, 0xd6, 0xe1, 0x0e, 0x61, + 0x12, 0xd2, 0x0f, 0x88, 0x2b, 0x9b, 0xba, 0xe1, 0x85, 0x98, 0xe7, 0x30, + 0x96, 0x55, 0x69, 0x97, 0x8e, 0x60, 0x9e, 0x61, 0x74, 0xd4, 0x3d, 0xb6, + 0x54, 0xd7, 0xb0, 0xc8, 0x22, 0x41, 0xec, 0x42, 0x4a, 0x72, 0x3f, 0x63, + 0x9c, 0x12, 0xd1, 0xd3, 0xdc, 0x1b, 0x50, 0x98, 0xa5, 0xd3, 0x1a, 0x99, + 0x86, 0x95, 0x6f, 0x17, 0x3d, 0xcd, 0x70, 0xaf, 0x25, 0x86, 0xa7, 0x8e, + 0x01, 0xe1, 0xde, 0x6d, 0x3c, 0x15, 0x7b, 0x69, 0x1a, 0x48, 0x93, 0xd9, + 0x35, 0xd8, 0xec, 0x7b, 0x0b, 0x2d, 0x68, 0x7b, 0x3c, 0x12, 0x53, 0x91, + 0xf5, 0x9f, 0x1e, 0xac, 0xae, 0x91, 0x90, 0x1a, 0x65, 0xec, 0x87, 0x37, + 0x5e, 0xf3, 0x24, 0x95, 0xe7, 0xd4, 0xe1, 0xdb, 0xf6, 0x9a, 0x9a, 0xe1, + 0x0d, 0x0e, 0x12, 0xbb, 0xce, 0xab, 0xd3, 0xb2, 0x29, 0xc2, 0xbd, 0xf8, + 0xee, 0x36, 0xd1, 0xb4, 0xee, 0x61, 0xfa, 0x4d, 0x03, 0xcf, 0xba, 0xe4, + 0xf1, 0x9e, 0xe3, 0x73, 0x06, 0xe2, 0x41, 0xe4, 0x24, 0xa6, 0xe9, 0xb7, + 0xd3, 0x73, 0x9b, 0xca, 0xae, 0xf0, 0x1e, 0x64, 0x0d, 0xbd, 0xe1, 0x11, + 0xd5, 0x7a, 0xd7, 0x48, 0x1a, 0x35, 0x16, 0xd6, 0x81, 0x5c, 0x38, 0x00, + 0x47, 0x04, 0x24, 0xa6, 0x78, 0x79, 0x4d, 0xa4, 0x6b, 0xcf, 0x80, 0x5b, + 0xbf, 0x69, 0x1f, 0x60, 0xf5, 0xe0, 0xed, 0x95, 0xcb, 0xd0, 0x5c, 0x7b, + 0x72, 0x57, 0x49, 0xb0, 0xfe, 0xc4, 0x98, 0xef, 0xc2, 0x4a, 0x4f, 0x8f, + 0xb2, 0xcb, 0x5f, 0x60, 0x00, 0x86, 0x9d, 0xa3, 0xbc, 0x69, 0xaa, 0xa5, + 0xd7, 0xac, 0x2f, 0xf4, 0xf1, 0x9a, 0x64, 0x1d, 0x5c, 0x3c, 0xc2, 0xd3, + 0x6d, 0x62, 0x8a, 0x87, 0xe6, 0xba, 0x24, 0xfc, 0x56, 0x3d, 0xce, 0xf5, + 0xf2, 0xdd, 0xac, 0xec, 0x11, 0xf3, 0x49, 0x48, 0x58, 0xd6, 0xd2, 0xc0, + 0xc0, 0x37, 0x3e, 0x3b, 0x76, 0x55, 0xed, 0xc6, 0xb2, 0xc7, 0x0d, 0xe6, + 0x40, 0x04, 0x95, 0x7c, 0x56, 0x03, 0x75, 0x3e, 0xe7, 0x77, 0x4d, 0xb5, + 0xd1, 0xaf, 0x03, 0x44, 0x94, 0xe4, 0x5b, 0x80, 0x1e, 0x25, 0xbf, 0xd9, + 0xf3, 0x54, 0x2c, 0xc0, 0xbd, 0xb2, 0xf0, 0x36, 0x91, 0xdc, 0x2e, 0xa9, + 0x94, 0x07, 0x40, 0x03, 0x40, 0x87, 0x93, 0x5b, 0x18, 0xc9, 0x8d, 0x07, + 0x8a, 0x4a, 0x78, 0xcb, 0xf2, 0x6c, 0xa9, 0xc1, 0xb6, 0x09, 0x3e, 0x28, + 0x0f, 0xcd, 0xde, 0x35, 0x6a, 0xb7, 0xd4, 0xaa, 0xf5, 0x32, 0x09, 0x03, + 0x49, 0x54, 0xec, 0xa3, 0x68, 0x3e, 0x29, 0x29, 0x03, 0xdf, 0xb8, 0xaf, + 0x4d, 0xfa, 0xa7, 0x96, 0xfc, 0xce, 0x95, 0x43, 0xda, 0xff, 0x00, 0x73, + 0x1b, 0xe9, 0x5b, 0x27, 0xbb, 0x74, 0xfc, 0x8b, 0xcc, 0x48, 0x82, 0xbb, + 0xcf, 0xa8, 0xe0, 0x55, 0xd1, 0xec, 0xb9, 0xfa, 0x57, 0xeb, 0xb9, 0xce, + 0x9e, 0xf0, 0xd6, 0xc4, 0x4a, 0x4a, 0x7a, 0x3c, 0xcc, 0xd6, 0x54, 0xc6, + 0xfa, 0x67, 0x76, 0xf3, 0xb0, 0x3c, 0x7e, 0x73, 0x81, 0x8d, 0xaa, 0xb3, + 0xf1, 0x73, 0x5d, 0xd5, 0x2b, 0x2e, 0x3b, 0x70, 0xeb, 0x69, 0xde, 0xd1, + 0xf4, 0xad, 0xb2, 0x3f, 0xea, 0x5a, 0x7e, 0xf5, 0x56, 0xeb, 0x2e, 0xb3, + 0x66, 0x6d, 0x82, 0x03, 0x88, 0xfb, 0x3d, 0x7c, 0x6d, 0x68, 0xe5, 0xd1, + 0xe2, 0x42, 0xd8, 0xc2, 0x78, 0xb0, 0x32, 0xdb, 0x18, 0x19, 0x61, 0x6b, + 0xbd, 0x93, 0x3f, 0x9c, 0x7b, 0xfd, 0xc9, 0x29, 0xa9, 0x75, 0x54, 0xd1, + 0x7e, 0xba, 0x4c, 0x06, 0x6d, 0xd6, 0x49, 0x92, 0x64, 0x79, 0xc2, 0x76, + 0x01, 0x1a, 0x8e, 0xca, 0x1d, 0x55, 0x9b, 0x5f, 0xbe, 0xbd, 0x5e, 0x3e, + 0x97, 0xc2, 0x41, 0xd2, 0x3c, 0x02, 0x55, 0x3b, 0x7f, 0xbb, 0x9f, 0x00, + 0x92, 0x97, 0x2d, 0x97, 0x19, 0xfa, 0x23, 0x82, 0x88, 0xd2, 0x4b, 0x7f, + 0x22, 0x88, 0x27, 0xf3, 0xa3, 0x54, 0x8b, 0x9d, 0xc1, 0xd4, 0xa4, 0xa6, + 0x6f, 0x30, 0xcf, 0x3f, 0x15, 0x43, 0x26, 0x0c, 0x9e, 0xfd, 0x95, 0xd7, + 0x38, 0x35, 0xa5, 0x66, 0xe4, 0x59, 0xb4, 0x92, 0xed, 0x00, 0xd4, 0x93, + 0xe0, 0x12, 0x53, 0xc6, 0xf5, 0xf2, 0xeb, 0xfa, 0xa3, 0xda, 0xc6, 0x39, + 0xfe, 0x9b, 0x5a, 0xd8, 0x68, 0x26, 0x0f, 0xd2, 0x3c, 0x7c, 0x55, 0x3a, + 0x83, 0x1a, 0xed, 0x8e, 0x90, 0xfe, 0x5a, 0xd2, 0x0f, 0x3f, 0x05, 0xd6, + 0xe0, 0xd5, 0xf6, 0xb2, 0x6e, 0x73, 0xb6, 0x31, 0xe6, 0x44, 0x68, 0x48, + 0xf1, 0x25, 0x74, 0x5d, 0x37, 0xa3, 0x61, 0x30, 0x7d, 0xb9, 0xf4, 0xb4, + 0xbd, 0xbf, 0xcc, 0xb9, 0xc0, 0x17, 0x4f, 0x8c, 0x94, 0x94, 0xf2, 0xf8, + 0x58, 0xfd, 0x75, 0xfd, 0x23, 0xec, 0x98, 0x98, 0xee, 0xae, 0xf2, 0xf2, + 0x3d, 0x4b, 0x46, 0xc0, 0xca, 0x9d, 0xee, 0x96, 0x13, 0xdf, 0x77, 0x92, + 0x47, 0xea, 0x47, 0x56, 0xbd, 0x85, 0xb6, 0xe5, 0x55, 0xb4, 0x91, 0x05, + 0xcd, 0x74, 0x88, 0x1c, 0x37, 0xc9, 0x76, 0xec, 0x86, 0x00, 0x62, 0x79, + 0x30, 0x89, 0x73, 0xf6, 0x52, 0x5c, 0x63, 0x71, 0xd3, 0xfd, 0x81, 0x25, + 0x3c, 0xff, 0x00, 0x45, 0xfa, 0xb7, 0x8b, 0xd3, 0x69, 0x89, 0x2e, 0xb9, + 0xdf, 0x4e, 0xce, 0xe7, 0xfd, 0x88, 0xb9, 0x58, 0x34, 0x63, 0xee, 0x71, + 0x79, 0x0f, 0x7e, 0x81, 0xcf, 0x33, 0xf2, 0x1e, 0x0b, 0x48, 0x4b, 0x48, + 0x9f, 0x0f, 0xe2, 0xab, 0xe7, 0x60, 0xe3, 0xf5, 0x3a, 0x8d, 0x19, 0x25, + 0xcd, 0x68, 0x87, 0x31, 0xec, 0x3b, 0x5e, 0x1d, 0xe4, 0x52, 0x53, 0xcb, + 0xf5, 0x0c, 0xcc, 0x86, 0x64, 0xd5, 0x86, 0xe6, 0x96, 0x36, 0xd3, 0x1e, + 0xa8, 0xfa, 0x21, 0x83, 0x57, 0x10, 0x7c, 0x61, 0x69, 0x55, 0xd5, 0xbe, + 0xc9, 0x84, 0xd7, 0xe3, 0x61, 0x39, 0x8d, 0x22, 0x48, 0xad, 0x85, 0xce, + 0x23, 0xb1, 0x71, 0x02, 0x4c, 0x85, 0xd0, 0xe3, 0xe0, 0x55, 0x45, 0x4d, + 0xae, 0xa2, 0xdd, 0x8d, 0x10, 0x09, 0x1e, 0xef, 0x99, 0x46, 0x66, 0x33, + 0x5d, 0xab, 0x9e, 0x00, 0x1e, 0x09, 0x29, 0xe7, 0xba, 0x7f, 0x50, 0xcb, + 0xea, 0x6c, 0x16, 0x6e, 0x6d, 0x15, 0x73, 0xb1, 0xc7, 0xf4, 0x84, 0x0d, + 0x3e, 0x88, 0xe1, 0x6b, 0x36, 0xac, 0xa6, 0x09, 0xf4, 0xff, 0x00, 0x44, + 0x47, 0x0d, 0xd4, 0xa3, 0xfd, 0x8f, 0xa7, 0xd7, 0x7f, 0xda, 0x45, 0x40, + 0xdd, 0x1b, 0x7d, 0x43, 0xcc, 0x78, 0x2b, 0x03, 0x25, 0xb3, 0xed, 0x49, + 0x4e, 0x0e, 0x67, 0x4e, 0x7d, 0xd2, 0x5c, 0x3d, 0xa7, 0xc4, 0x14, 0x3c, + 0x3e, 0x9b, 0xd5, 0x31, 0x81, 0xfb, 0x1e, 0x4f, 0xa6, 0xc8, 0x9d, 0xb6, + 0x34, 0xb9, 0x9f, 0x8a, 0xe8, 0x5d, 0x7e, 0x86, 0x34, 0x1e, 0x2a, 0xb3, + 0xee, 0xf1, 0x27, 0x69, 0xd0, 0x8f, 0xe2, 0x92, 0x9e, 0x7a, 0xc6, 0xfd, + 0x73, 0xf7, 0x16, 0x5b, 0x56, 0xe1, 0xf9, 0xa5, 0x80, 0xff, 0x00, 0x9a, + 0x56, 0x5e, 0x4f, 0x5c, 0xfa, 0xe9, 0xd3, 0x8e, 0xfc, 0x8a, 0x9a, 0x6b, + 0x6f, 0x2e, 0xf4, 0xe5, 0xbf, 0x38, 0xe1, 0x75, 0xf5, 0x67, 0x35, 0x96, + 0x1a, 0xc0, 0x26, 0x15, 0xc0, 0xe6, 0xdc, 0xc3, 0xa0, 0xd7, 0x47, 0x02, + 0x92, 0x9e, 0x57, 0x1b, 0xeb, 0x5d, 0x3d, 0x43, 0xa6, 0xde, 0x2d, 0x6f, + 0xa5, 0x7b, 0x98, 0x41, 0xdb, 0xf4, 0x4c, 0xf6, 0x85, 0x93, 0x4e, 0x3d, + 0x02, 0xc0, 0xf6, 0x34, 0xc8, 0x12, 0x1d, 0x2b, 0x7f, 0xad, 0xfd, 0x5e, + 0xc0, 0xad, 0x8e, 0xea, 0x38, 0xec, 0xf4, 0x6e, 0x66, 0xae, 0xd8, 0x36, + 0xb5, 0xe3, 0x8f, 0x73, 0x78, 0x58, 0x95, 0xb9, 0xe0, 0xb9, 0x85, 0xa4, + 0x08, 0x3a, 0xf6, 0x49, 0x4b, 0xd0, 0x44, 0xba, 0x62, 0x4f, 0x08, 0x59, + 0x36, 0x1d, 0x9b, 0x76, 0x80, 0x7c, 0x50, 0x85, 0x45, 0xee, 0x30, 0xe2, + 0xd2, 0xdd, 0x74, 0x47, 0x24, 0x1a, 0xcc, 0xea, 0x38, 0x92, 0x92, 0x98, + 0x63, 0x07, 0xb9, 0xcd, 0x68, 0x3a, 0x2e, 0xbb, 0xd1, 0x1f, 0xb3, 0x3d, + 0x09, 0xfc, 0xd5, 0x83, 0xd3, 0x71, 0x1b, 0x66, 0xd7, 0xcf, 0x1a, 0xc2, + 0xe8, 0xff, 0x00, 0xc1, 0x47, 0x94, 0x24, 0xa4, 0x79, 0x2d, 0x79, 0x1a, + 0xe9, 0x1a, 0x98, 0x59, 0xd8, 0xb8, 0x6f, 0x70, 0x75, 0x9c, 0xb9, 0xe4, + 0xb8, 0x9f, 0x25, 0xa8, 0xf6, 0xfa, 0x8d, 0x91, 0x32, 0xf2, 0x1a, 0x01, + 0xec, 0xaf, 0x36, 0x8a, 0x6a, 0x66, 0xd0, 0x35, 0x02, 0x12, 0x53, 0x85, + 0x6d, 0x41, 0xa0, 0x08, 0x88, 0x50, 0x0d, 0x68, 0xf7, 0x6d, 0x1f, 0xed, + 0x57, 0xb3, 0x03, 0x77, 0x18, 0x8d, 0x39, 0x54, 0x84, 0x38, 0xc7, 0x03, + 0x99, 0x49, 0x49, 0x40, 0x0d, 0x6c, 0xbb, 0x9f, 0x0e, 0xeb, 0x37, 0x3e, + 0xc6, 0xbc, 0x96, 0x19, 0xd6, 0x20, 0x2b, 0xcf, 0x02, 0xb6, 0x97, 0x1f, + 0xc4, 0xac, 0x9b, 0x5c, 0xed, 0xce, 0xb1, 0xc3, 0xd8, 0x26, 0x3f, 0x2a, + 0x4a, 0x73, 0x32, 0xea, 0x68, 0x27, 0x4d, 0x79, 0x95, 0x9b, 0x94, 0xd1, + 0x10, 0x3e, 0x21, 0x6b, 0x64, 0x6e, 0x75, 0x65, 0xe7, 0xb9, 0x85, 0x9f, + 0x7d, 0x64, 0xd5, 0xba, 0x38, 0xd0, 0x94, 0x94, 0xe6, 0xfa, 0x0e, 0xb6, + 0xfa, 0xea, 0x66, 0x8e, 0xb5, 0xcd, 0x6b, 0x67, 0xc5, 0xc6, 0x17, 0xa7, + 0x8c, 0x1a, 0x2b, 0xc5, 0xc7, 0xe9, 0xcc, 0xf6, 0x51, 0x40, 0x6b, 0x03, + 0x06, 0x9b, 0xe4, 0xea, 0xe7, 0x7f, 0x5b, 0x95, 0xe7, 0x38, 0x95, 0xbd, + 0xf9, 0xf4, 0x7a, 0x7a, 0x39, 0x8e, 0x0f, 0x93, 0xfc, 0x83, 0xb9, 0x77, + 0xe7, 0xaa, 0x62, 0x64, 0xdb, 0x51, 0x32, 0xd7, 0x6e, 0x1a, 0x79, 0xfc, + 0x52, 0x53, 0x6f, 0x2a, 0xb3, 0x60, 0x05, 0x82, 0x03, 0x5b, 0x0d, 0xe2, + 0x01, 0x22, 0x21, 0x4a, 0xa1, 0x60, 0x10, 0xdd, 0x03, 0x40, 0x88, 0xf3, + 0xd7, 0x94, 0x67, 0xd4, 0xc7, 0x54, 0x00, 0x90, 0x08, 0x92, 0x0f, 0x0a, + 0xae, 0x30, 0x73, 0x6c, 0xdb, 0xbb, 0x58, 0x23, 0x99, 0xfa, 0x27, 0x94, + 0x94, 0xc3, 0xa8, 0x8b, 0xe5, 0x82, 0x97, 0x6c, 0xb1, 0xd0, 0x24, 0x7e, + 0x73, 0x8f, 0xd2, 0x1f, 0x31, 0xe2, 0x95, 0x15, 0x1a, 0xeb, 0x0d, 0x8d, + 0x44, 0x68, 0x79, 0x1f, 0x15, 0x3b, 0xde, 0xc7, 0x3d, 0x86, 0x4e, 0xf0, + 0x4c, 0xc0, 0x91, 0x33, 0x20, 0xea, 0x87, 0x82, 0xd9, 0xa7, 0x73, 0x9f, + 0xbc, 0xbd, 0xc4, 0x97, 0xfe, 0xf1, 0x9e, 0x61, 0x25, 0x25, 0xd7, 0x45, + 0x17, 0x12, 0xcd, 0x49, 0x94, 0xf6, 0x3a, 0x0c, 0x03, 0xc2, 0x5b, 0x77, + 0x89, 0x1c, 0x78, 0x78, 0xa4, 0xa4, 0x7b, 0xc1, 0x69, 0x3c, 0x2c, 0x4e, + 0xb1, 0x92, 0x59, 0x4d, 0x84, 0x77, 0x10, 0x07, 0x8c, 0xad, 0x9b, 0xe2, + 0xb6, 0xc3, 0x78, 0x5c, 0xfe, 0x4b, 0x5d, 0x97, 0x9c, 0xcc, 0x56, 0x89, + 0x0d, 0x05, 0xee, 0xf8, 0x9d, 0x02, 0x4a, 0x77, 0xba, 0x06, 0x28, 0xb3, + 0x11, 0x9e, 0xde, 0x5a, 0x3f, 0x12, 0x17, 0x46, 0xe6, 0x81, 0x5b, 0x5b, + 0xc0, 0x67, 0x01, 0x67, 0xf4, 0xda, 0xbe, 0xc7, 0x5b, 0x01, 0xd0, 0x40, + 0x61, 0xff, 0x00, 0x5f, 0x8a, 0xd2, 0xdc, 0xdd, 0xc4, 0x78, 0xb6, 0x35, + 0x49, 0x4d, 0x3b, 0x4e, 0xcd, 0xbd, 0xe2, 0x42, 0xab, 0x7d, 0xce, 0x78, + 0x04, 0x9f, 0xd1, 0x8e, 0x1b, 0xe6, 0xac, 0x65, 0x93, 0xb4, 0x83, 0xc9, + 0xe3, 0xe2, 0xa8, 0xd4, 0xf7, 0xc6, 0xd7, 0x01, 0xbb, 0xbb, 0x52, 0x53, + 0x60, 0xbc, 0x96, 0xb5, 0xd1, 0x31, 0xf9, 0x3b, 0xa8, 0x9b, 0xb6, 0xcb, + 0xe2, 0x47, 0x82, 0x66, 0xbd, 0xad, 0x66, 0xa7, 0x50, 0x74, 0x52, 0x6c, + 0x49, 0x05, 0xba, 0x3b, 0xba, 0x4a, 0x6b, 0xb3, 0xa9, 0x07, 0xb7, 0xda, + 0xd2, 0xc3, 0x3a, 0xb4, 0x88, 0x53, 0xaf, 0xa8, 0x19, 0x8d, 0xa4, 0xa7, + 0x7d, 0x14, 0xc9, 0x9f, 0x69, 0x1f, 0x8a, 0x0f, 0xa7, 0xbf, 0xda, 0x01, + 0x68, 0xed, 0x1a, 0x14, 0x94, 0x9d, 0xd9, 0xed, 0x6e, 0x85, 0xb2, 0x9d, + 0xb9, 0x5e, 0x0c, 0x20, 0x7e, 0x08, 0x0d, 0xa6, 0xd9, 0xf1, 0x8f, 0x14, + 0x53, 0x4b, 0x88, 0xe3, 0xe2, 0x12, 0x52, 0x61, 0x92, 0xd7, 0xea, 0x75, + 0xf2, 0x4c, 0x6f, 0xc6, 0x76, 0x8e, 0x26, 0x3c, 0x21, 0x53, 0xb2, 0xb7, + 0xb3, 0x56, 0xb4, 0xe8, 0xa2, 0x0d, 0xaf, 0x69, 0x23, 0x51, 0xe2, 0x92, + 0x9d, 0x21, 0x5e, 0x2b, 0xa0, 0xb7, 0x9e, 0xd0, 0xad, 0x56, 0x31, 0xc4, + 0x02, 0x34, 0xf3, 0x58, 0x95, 0xe5, 0xd8, 0xc2, 0x19, 0x5b, 0x0b, 0xdd, + 0xc7, 0x1c, 0x79, 0xab, 0xf4, 0x57, 0x65, 0xc4, 0x0b, 0x0e, 0xd2, 0x35, + 0x84, 0x94, 0x8b, 0xeb, 0x2b, 0x88, 0xe9, 0x36, 0xb6, 0xb3, 0x01, 0xce, + 0x68, 0x68, 0xf0, 0xd5, 0x72, 0x46, 0xe7, 0x0a, 0xdc, 0x1d, 0xfb, 0xbf, + 0x88, 0x5d, 0x47, 0xd6, 0x06, 0xfa, 0x78, 0xad, 0x1f, 0x4c, 0x39, 0xc3, + 0x43, 0xe4, 0xb0, 0x1f, 0x5b, 0x2d, 0xaf, 0x6b, 0xa0, 0x69, 0xc0, 0xec, + 0x92, 0x9a, 0xb8, 0xce, 0x0d, 0x69, 0x91, 0x32, 0x24, 0x21, 0x58, 0xef, + 0x69, 0x13, 0xa2, 0xb2, 0xe0, 0xc0, 0xc0, 0xd2, 0x60, 0xb7, 0x4d, 0x15, + 0x63, 0x54, 0x87, 0x01, 0xac, 0x70, 0x92, 0x9d, 0xae, 0x84, 0x03, 0xeb, + 0x81, 0xd9, 0x74, 0x1e, 0x91, 0xf4, 0xe6, 0x17, 0x37, 0xd0, 0x6c, 0xd9, + 0xed, 0x3a, 0x10, 0x75, 0x5d, 0x6c, 0x8f, 0xb3, 0x6e, 0x49, 0x4b, 0x16, + 0xb4, 0x8d, 0xfb, 0x46, 0xe6, 0x70, 0xa9, 0xe5, 0x65, 0xb9, 0xa4, 0xc8, + 0x84, 0x7b, 0x2c, 0xf6, 0xb8, 0x6b, 0xe2, 0xb2, 0xb2, 0x43, 0x9f, 0x2d, + 0x07, 0xb7, 0xdc, 0x92, 0x90, 0xe4, 0xe4, 0xb8, 0xba, 0x00, 0xd4, 0xea, + 0x87, 0x51, 0x26, 0x49, 0xd5, 0xca, 0x0f, 0x07, 0x71, 0x1c, 0xc7, 0x7e, + 0xc8, 0x39, 0x96, 0xd9, 0x4e, 0x23, 0x9c, 0xc3, 0x0e, 0x3e, 0xd1, 0xf3, + 0xd1, 0x25, 0x25, 0xbe, 0xe0, 0xe3, 0xb7, 0xb2, 0xa9, 0x90, 0x25, 0xb0, + 0xdd, 0x07, 0x1f, 0x05, 0x56, 0xbb, 0x36, 0x45, 0x64, 0x3b, 0x7b, 0x44, + 0x19, 0x3a, 0x19, 0xee, 0x14, 0xdd, 0x75, 0x6e, 0x61, 0x6b, 0xad, 0x8f, + 0x74, 0xed, 0x12, 0x92, 0x90, 0xe4, 0x1d, 0xc1, 0xac, 0x68, 0x30, 0xd5, + 0x5e, 0xda, 0xf6, 0xd0, 0xf0, 0xf1, 0xab, 0xb8, 0x1f, 0x05, 0x69, 0xf6, + 0x37, 0x91, 0x26, 0x01, 0xfb, 0xd6, 0x56, 0x57, 0x50, 0x36, 0xbf, 0x6b, + 0x3f, 0x37, 0x42, 0x7c, 0x12, 0x52, 0x3e, 0x9c, 0x63, 0x22, 0xc7, 0xfe, + 0xeb, 0x63, 0xef, 0x44, 0x76, 0x75, 0xd8, 0xd9, 0x21, 0xf5, 0x19, 0x93, + 0xee, 0x61, 0xd4, 0x10, 0xaa, 0x63, 0xe4, 0xb2, 0xb3, 0x63, 0x4f, 0xd2, + 0x71, 0xe5, 0x3b, 0x58, 0x4b, 0xcd, 0x8f, 0xe0, 0x24, 0xa7, 0xbf, 0xe9, + 0xf9, 0xed, 0xca, 0xc7, 0x6d, 0xcd, 0x26, 0x36, 0xed, 0xd9, 0xc9, 0x04, + 0x91, 0x2a, 0xc3, 0xf1, 0xc3, 0xee, 0xf5, 0x5b, 0x0d, 0x74, 0x90, 0xd3, + 0xe0, 0x38, 0x3f, 0x7a, 0xe1, 0xba, 0x4f, 0x5c, 0x76, 0x16, 0x60, 0x0f, + 0x93, 0x8a, 0xf3, 0x16, 0x0f, 0xdd, 0xed, 0xb8, 0x2e, 0xe7, 0x16, 0xd6, + 0xb8, 0xfa, 0x92, 0x2c, 0x96, 0x80, 0xc0, 0xd3, 0xd8, 0xf7, 0x49, 0x4d, + 0x7e, 0xa8, 0x1c, 0xda, 0x6b, 0x6b, 0x09, 0x3b, 0xec, 0x0d, 0x2e, 0x1a, + 0x18, 0xe2, 0x25, 0x58, 0xa1, 0x9e, 0x95, 0x41, 0xa3, 0x40, 0x02, 0x17, + 0x52, 0xda, 0x7d, 0x06, 0x12, 0xd0, 0xe2, 0xed, 0xc0, 0x3f, 0xb1, 0x6e, + 0xa7, 0x5f, 0x13, 0xd9, 0x59, 0x61, 0x01, 0xa0, 0x78, 0x8e, 0xe9, 0x29, + 0x18, 0x61, 0x7b, 0xa5, 0xc8, 0xa6, 0x2b, 0x64, 0x04, 0xc1, 0xe0, 0x68, + 0x04, 0x38, 0xa1, 0x5c, 0xe7, 0xb5, 0xba, 0x98, 0x00, 0x70, 0x92, 0x9a, + 0xb9, 0x44, 0x9e, 0xfc, 0xa5, 0xd1, 0x70, 0xd9, 0x60, 0x76, 0x7b, 0x46, + 0xe6, 0xdb, 0x2d, 0x0e, 0xf0, 0xd8, 0xe2, 0xd5, 0x5f, 0x32, 0xc7, 0x6c, + 0x73, 0x19, 0xfc, 0xe3, 0xe5, 0xad, 0x8f, 0x12, 0xaf, 0xfd, 0x54, 0xc8, + 0xc7, 0x66, 0x03, 0x71, 0x5c, 0x77, 0x36, 0x36, 0xc7, 0x70, 0xf8, 0x87, + 0x34, 0xf9, 0xa4, 0xa7, 0x72, 0xe6, 0xb7, 0xd1, 0xd8, 0x04, 0xba, 0x34, + 0x43, 0xa7, 0x24, 0x3e, 0xa1, 0x32, 0x5e, 0xdd, 0x1f, 0xf1, 0x53, 0x16, + 0x31, 0xc7, 0x4e, 0x46, 0x84, 0x79, 0xaa, 0x39, 0x16, 0x8c, 0x6b, 0x3d, + 0x58, 0x3b, 0x5d, 0xa5, 0x83, 0xe3, 0xdd, 0x25, 0x36, 0x72, 0x1a, 0x2e, + 0x88, 0x90, 0x0f, 0x72, 0xa8, 0xb9, 0x9e, 0x9b, 0xf7, 0x13, 0x31, 0x00, + 0x8f, 0xe2, 0xac, 0x1c, 0xaa, 0xf7, 0x86, 0x12, 0x03, 0x1d, 0xab, 0x08, + 0x29, 0xad, 0x6d, 0x45, 0xd3, 0x3a, 0xb8, 0x41, 0x3e, 0x20, 0x24, 0xa5, + 0x1c, 0x7a, 0xc8, 0x0f, 0x00, 0x00, 0x62, 0x7e, 0x2a, 0xe5, 0x98, 0xed, + 0xd8, 0x36, 0xea, 0x63, 0x95, 0x52, 0xa8, 0xda, 0x01, 0x93, 0x04, 0x7c, + 0xc2, 0xd0, 0x04, 0x06, 0x69, 0xa9, 0x49, 0x4d, 0x56, 0x00, 0xea, 0xc6, + 0xe6, 0x80, 0xf1, 0xa1, 0x1e, 0x69, 0x3e, 0x82, 0x78, 0xd1, 0x46, 0xc7, + 0x16, 0xd8, 0x48, 0xfc, 0xed, 0x47, 0xc7, 0xba, 0x28, 0xb5, 0xb0, 0x09, + 0xd1, 0x25, 0x22, 0xf4, 0x60, 0xc4, 0x7c, 0x52, 0x15, 0x91, 0x11, 0xa1, + 0xf3, 0x4e, 0xfc, 0xba, 0x5a, 0x75, 0x2a, 0x96, 0x5f, 0x5b, 0xc1, 0xc6, + 0x6c, 0xdb, 0x6b, 0x5b, 0x1e, 0x25, 0x25, 0x37, 0x4d, 0x26, 0xc2, 0x5c, + 0x74, 0x68, 0xfc, 0x53, 0x86, 0xd2, 0xcd, 0x1c, 0x04, 0x78, 0x2e, 0x5b, + 0x33, 0xeb, 0x8d, 0x60, 0x11, 0x8b, 0x53, 0xef, 0x3e, 0x23, 0x41, 0xf8, + 0xac, 0x3b, 0xfe, 0xb3, 0x75, 0x5c, 0xc7, 0x9a, 0xd9, 0xba, 0xaf, 0x16, + 0x81, 0xee, 0xfc, 0x52, 0x53, 0xdf, 0xdb, 0xd4, 0xb0, 0x71, 0x41, 0x73, + 0xde, 0xd6, 0x00, 0xb0, 0xb2, 0x7e, 0xb8, 0xe2, 0x0c, 0x82, 0x71, 0x5a, + 0x6d, 0x00, 0x41, 0x3c, 0x09, 0x2b, 0x97, 0x6e, 0x16, 0x7e, 0x53, 0xa6, + 0xdd, 0xd1, 0xfb, 0xd6, 0x1d, 0xcb, 0x43, 0x1f, 0xa6, 0x51, 0x8a, 0xd2, + 0xe7, 0xbb, 0x7b, 0xdc, 0x3e, 0x8f, 0x29, 0x29, 0x26, 0x7f, 0x5b, 0xea, + 0x1d, 0x40, 0xb3, 0x7e, 0xda, 0xea, 0x69, 0x3b, 0x5a, 0x39, 0xd7, 0xc4, + 0xaa, 0xaf, 0xea, 0x0d, 0xc7, 0x6c, 0xd8, 0x64, 0xf9, 0x15, 0x3c, 0xac, + 0x57, 0x16, 0x7b, 0x5a, 0xe6, 0x11, 0xd8, 0xac, 0x96, 0x61, 0x43, 0xdc, + 0xe7, 0xea, 0xe0, 0xee, 0x4a, 0x4a, 0x76, 0xf1, 0x6e, 0x37, 0x56, 0xeb, + 0x5f, 0xed, 0x24, 0xfb, 0x5b, 0xe4, 0xad, 0xb3, 0x0d, 0xd6, 0x6d, 0x74, + 0xc3, 0xa7, 0x8e, 0xd0, 0xaa, 0xd2, 0x03, 0x18, 0xd6, 0x81, 0xc8, 0x57, + 0xf1, 0xac, 0x7b, 0x59, 0x04, 0x4c, 0x14, 0x94, 0x96, 0x8a, 0xc5, 0x4e, + 0x32, 0x21, 0xde, 0x2b, 0x7f, 0x7f, 0xf9, 0x3f, 0x74, 0xea, 0xb2, 0x31, + 0x18, 0x72, 0xac, 0x05, 0xdf, 0x46, 0x60, 0x2e, 0x8b, 0xec, 0x6d, 0xf4, + 0x3d, 0x3f, 0x24, 0x94, 0xd4, 0xb5, 0xae, 0xdb, 0xbb, 0xb0, 0x54, 0x72, + 0x09, 0xed, 0xf3, 0x2b, 0x5b, 0x28, 0x34, 0x37, 0x9d, 0x0a, 0xcc, 0xbd, + 0xa1, 0xcd, 0x1d, 0xa3, 0x84, 0x94, 0xd1, 0x89, 0x31, 0xf9, 0x16, 0x5f, + 0x5d, 0xb4, 0xb4, 0x51, 0x8e, 0x34, 0x16, 0x3e, 0x4c, 0x72, 0x00, 0xff, + 0x00, 0x6a, 0xd9, 0x15, 0xb8, 0x12, 0x67, 0x93, 0x21, 0x73, 0x9d, 0x62, + 0xed, 0xdd, 0x59, 0x95, 0x8d, 0x45, 0x6d, 0xfc, 0x4a, 0x4a, 0x4a, 0xf1, + 0x2c, 0x6e, 0xe1, 0x11, 0xa0, 0x70, 0xe5, 0x54, 0x78, 0xb9, 0xb6, 0x98, + 0x01, 0xe0, 0x6b, 0x33, 0xaf, 0xf9, 0xaa, 0xe3, 0x48, 0x20, 0x6e, 0xfa, + 0x23, 0xb7, 0x9a, 0xac, 0x59, 0xb9, 0xce, 0x70, 0xe3, 0xcd, 0x25, 0x34, + 0x3a, 0x86, 0x4b, 0xc0, 0x6b, 0x58, 0xd2, 0x2e, 0x77, 0xe6, 0xb7, 0xc1, + 0x66, 0x1b, 0x5f, 0xee, 0x31, 0xef, 0x3f, 0x49, 0x5b, 0xea, 0x39, 0x8f, + 0x07, 0xd3, 0x63, 0x88, 0xed, 0xa1, 0xed, 0xf1, 0x59, 0xd5, 0x87, 0x39, + 0xe0, 0x04, 0x94, 0xc4, 0x93, 0x33, 0xdd, 0x5a, 0x65, 0xce, 0xb2, 0xb0, + 0xce, 0xe1, 0x56, 0x7b, 0x61, 0xe5, 0xbe, 0x6b, 0x7f, 0xa3, 0x7d, 0x51, + 0xea, 0xb9, 0xc1, 0xb7, 0xbc, 0x0c, 0x6a, 0x09, 0xe6, 0xc9, 0x0f, 0x23, + 0xc4, 0x31, 0x25, 0x34, 0xa8, 0xc3, 0x17, 0xbc, 0x54, 0xd3, 0x0e, 0x3d, + 0xe2, 0x57, 0x63, 0xd0, 0xea, 0xb3, 0x0e, 0xb6, 0xd1, 0x6b, 0x8b, 0xda, + 0xc9, 0xd8, 0xe3, 0xc8, 0x1c, 0xc2, 0x25, 0x3d, 0x17, 0x13, 0x01, 0xa1, + 0x94, 0x0d, 0xce, 0xe5, 0xce, 0x3c, 0x92, 0x3c, 0x54, 0x9c, 0x2e, 0xf5, + 0x5a, 0x1a, 0x09, 0x24, 0x81, 0xb5, 0xa0, 0x9e, 0x52, 0x53, 0x51, 0x99, + 0x27, 0xa9, 0x75, 0x13, 0x73, 0xbf, 0x9a, 0xa7, 0xd9, 0x53, 0x41, 0x24, + 0x11, 0xdd, 0xfa, 0xf7, 0xec, 0xb7, 0xea, 0x2c, 0x0d, 0x9e, 0x57, 0x2f, + 0x4b, 0x5f, 0xd3, 0xac, 0x73, 0x1d, 0xf4, 0x03, 0xdc, 0x1a, 0xef, 0x9c, + 0xc1, 0x5b, 0xd8, 0x75, 0x67, 0xe5, 0xb7, 0x7d, 0x15, 0x38, 0x30, 0xeb, + 0xb9, 0xde, 0xd6, 0x9f, 0x84, 0xa4, 0xa6, 0xd0, 0x68, 0x7b, 0xa6, 0x61, + 0x55, 0xea, 0x16, 0x32, 0xa6, 0xf3, 0x2e, 0x2a, 0xf3, 0x7a, 0x56, 0x78, + 0x6e, 0x85, 0x81, 0xdf, 0x1f, 0xf6, 0x2a, 0x39, 0x9d, 0x23, 0xa9, 0x06, + 0x38, 0xfa, 0x7e, 0xab, 0x80, 0x30, 0x1a, 0x66, 0x52, 0x53, 0xc7, 0xf5, + 0x4e, 0xa3, 0x93, 0xfb, 0x42, 0xa6, 0x63, 0x02, 0xe3, 0x43, 0xb7, 0x98, + 0xee, 0xef, 0xdd, 0xfb, 0x96, 0x83, 0x59, 0x9a, 0xf7, 0xfd, 0xb2, 0x8a, + 0x5d, 0x8b, 0x6b, 0xe3, 0x7c, 0xb8, 0x6c, 0x3f, 0x24, 0x7e, 0x9f, 0xd1, + 0x32, 0x83, 0xc9, 0x7d, 0x0f, 0xf5, 0x89, 0x25, 0xdb, 0xc4, 0x09, 0x3e, + 0x24, 0xae, 0x8e, 0x9e, 0x9a, 0xca, 0x83, 0x5d, 0x91, 0x16, 0xb8, 0x11, + 0xb5, 0x83, 0xe8, 0x37, 0xe5, 0xdd, 0x25, 0x39, 0x14, 0x5d, 0xd7, 0xad, + 0xfa, 0x34, 0x8b, 0x88, 0x1f, 0xce, 0x02, 0x5b, 0x3f, 0x33, 0xa1, 0x56, + 0x0e, 0x37, 0xd6, 0x3b, 0xa1, 0xaf, 0x65, 0x2d, 0x6f, 0xf2, 0x9c, 0x49, + 0xfc, 0x02, 0xdb, 0x73, 0xc8, 0x21, 0xa3, 0x46, 0xf6, 0x00, 0x78, 0x22, + 0x6f, 0x1e, 0x09, 0x29, 0xe7, 0xd9, 0xd2, 0xfa, 0x9b, 0x3d, 0xbe, 0x93, + 0x1e, 0xd9, 0xd4, 0x07, 0x8d, 0x3e, 0x1b, 0xa1, 0x58, 0x14, 0x75, 0x76, + 0xff, 0x00, 0xda, 0x60, 0x40, 0xd1, 0xb1, 0x63, 0x78, 0x5a, 0xc2, 0xe6, + 0x06, 0xce, 0xe0, 0x02, 0x0b, 0x33, 0x2b, 0x04, 0xb9, 0xc7, 0x69, 0x9d, + 0x40, 0x33, 0x29, 0x29, 0xca, 0xb6, 0xfe, 0xab, 0x50, 0x1b, 0x70, 0x2e, + 0x77, 0x69, 0x6e, 0xd7, 0x0f, 0xc1, 0xca, 0x14, 0xe7, 0x75, 0xb7, 0xbb, + 0x6f, 0xa4, 0xca, 0xcf, 0x66, 0xd8, 0x48, 0x3f, 0x74, 0x2d, 0x5b, 0x7e, + 0xb0, 0x60, 0x52, 0xed, 0x8e, 0xb0, 0x7a, 0x87, 0x86, 0x37, 0xdc, 0x7e, + 0xe0, 0x89, 0x5f, 0x51, 0xc6, 0xcb, 0x67, 0xe9, 0x69, 0x7e, 0xc3, 0xdd, + 0xcc, 0x30, 0x92, 0x9c, 0x8b, 0x07, 0x5f, 0x27, 0x70, 0xaa, 0xa2, 0x07, + 0x21, 0xae, 0x33, 0xf2, 0x98, 0x50, 0xa3, 0xf4, 0xef, 0xf4, 0x73, 0x6d, + 0xca, 0xa2, 0xd2, 0x60, 0xb8, 0x30, 0x31, 0xa3, 0xe0, 0x48, 0x74, 0xad, + 0xa7, 0x62, 0x92, 0x3d, 0x6c, 0x17, 0x8b, 0x1b, 0xde, 0xa7, 0x1f, 0xfa, + 0x93, 0xdb, 0xe6, 0x9a, 0xbb, 0xaa, 0xc9, 0x6b, 0xaa, 0xb1, 0xbb, 0x2c, + 0x1a, 0x39, 0x8e, 0x10, 0xe0, 0x52, 0x53, 0xcd, 0x75, 0x0f, 0xab, 0xfd, + 0x56, 0x87, 0xfa, 0xb5, 0xe4, 0xbf, 0x3b, 0x1c, 0x6a, 0x5b, 0x3b, 0x2c, + 0x03, 0xe0, 0xdd, 0x0f, 0xc9, 0x4b, 0x1f, 0xea, 0xff, 0x00, 0x4a, 0xea, + 0x55, 0x02, 0xe6, 0x96, 0x59, 0xfb, 0xc0, 0xfb, 0x81, 0xf9, 0xae, 0xa6, + 0xa7, 0xc4, 0x31, 0xc7, 0x50, 0xb3, 0xf3, 0xba, 0x55, 0xa2, 0xf7, 0x66, + 0xf4, 0xf7, 0x6d, 0x71, 0xd6, 0xca, 0x7b, 0x38, 0xf8, 0x84, 0x94, 0xe0, + 0xfe, 0xc6, 0xbb, 0xa3, 0xda, 0x0d, 0xed, 0x17, 0x61, 0x3f, 0x4f, 0x59, + 0xa3, 0xe8, 0x4f, 0x1b, 0xc7, 0x65, 0xac, 0xde, 0x91, 0xd3, 0xf2, 0xc8, + 0x8a, 0xda, 0xe3, 0x12, 0x0c, 0x05, 0x7b, 0x0b, 0x3f, 0xd4, 0xaf, 0x65, + 0xc2, 0x47, 0x0e, 0x69, 0x1f, 0x81, 0x95, 0x57, 0x2b, 0xa5, 0x64, 0x51, + 0x67, 0xda, 0xfa, 0x35, 0x92, 0x00, 0xf7, 0x62, 0x3c, 0xfb, 0x4f, 0xf5, + 0x0f, 0x6f, 0x82, 0x4a, 0x61, 0x95, 0xf5, 0x67, 0x1b, 0x23, 0x1d, 0xd5, + 0x35, 0xee, 0xc6, 0x7f, 0xe6, 0x5d, 0x59, 0x88, 0x3e, 0x63, 0xb8, 0x47, + 0xe9, 0xfd, 0x1f, 0x07, 0xa6, 0x52, 0x03, 0x8b, 0x6c, 0xb6, 0x35, 0xb0, + 0x92, 0xe7, 0x1f, 0x39, 0x72, 0x16, 0x2f, 0x5a, 0x17, 0x8f, 0x43, 0x29, + 0xa6, 0x8b, 0xf5, 0x0e, 0xad, 0xfa, 0x19, 0x1e, 0x08, 0x7d, 0x45, 0x96, + 0xbb, 0x68, 0x61, 0x3b, 0x0e, 0x84, 0xf8, 0x04, 0x94, 0xd5, 0xeb, 0x46, + 0xa3, 0x69, 0xb6, 0x92, 0x3d, 0xda, 0x3c, 0x01, 0xf8, 0xac, 0x1b, 0xea, + 0x1e, 0x96, 0x83, 0x92, 0xb5, 0xec, 0xc1, 0xc8, 0x1a, 0xbb, 0x50, 0xaa, + 0xe5, 0x63, 0x9a, 0xf1, 0xd8, 0x22, 0x1d, 0x32, 0x92, 0x98, 0x57, 0x5b, + 0xfd, 0xae, 0x6b, 0x87, 0xb4, 0x0d, 0x15, 0x86, 0x17, 0x1f, 0xa2, 0xef, + 0x79, 0xfc, 0xd4, 0xec, 0xa7, 0x71, 0x68, 0x6b, 0x65, 0xc4, 0x49, 0x29, + 0x9c, 0xd8, 0xc9, 0x68, 0x1a, 0x39, 0xbc, 0xa4, 0xa7, 0x5b, 0xa5, 0x56, + 0xe6, 0x6d, 0x6b, 0xf9, 0x26, 0x4a, 0xe9, 0x67, 0xb7, 0xf2, 0x26, 0x3e, + 0x6b, 0x23, 0xa6, 0xb0, 0xbc, 0x34, 0xf7, 0x5a, 0x7b, 0xff, 0x00, 0x5b, + 0xf4, 0x7b, 0xfa, 0x5f, 0xc5, 0x25, 0x21, 0xc8, 0x63, 0x9e, 0x08, 0xf1, + 0x59, 0xb7, 0x35, 0xc2, 0x5b, 0xc9, 0x1c, 0x2d, 0xab, 0x62, 0x26, 0x27, + 0xc7, 0xc5, 0x52, 0x7d, 0x00, 0xb8, 0x3c, 0x80, 0x27, 0xc3, 0x94, 0x94, + 0xe6, 0xbd, 0x8e, 0xd8, 0xed, 0xde, 0xdd, 0x3b, 0x2e, 0x2a, 0xcf, 0xd3, + 0x75, 0x7b, 0x9c, 0x4e, 0x81, 0xd1, 0x3f, 0x05, 0xe8, 0x39, 0x34, 0x0f, + 0x49, 0xc0, 0xce, 0x83, 0xba, 0xf3, 0xc6, 0x07, 0x55, 0x91, 0x73, 0x87, + 0x0e, 0x79, 0x92, 0x3b, 0x6a, 0x92, 0x9d, 0x47, 0x35, 0xa1, 0x90, 0x08, + 0x33, 0xca, 0xa1, 0xd4, 0xf3, 0x59, 0x87, 0x4f, 0xa4, 0xc3, 0x37, 0x59, + 0xa8, 0x03, 0xb0, 0xf1, 0x51, 0xc8, 0xcc, 0x14, 0x30, 0xbd, 0xb2, 0xfb, + 0x4f, 0xd1, 0x6f, 0x82, 0x17, 0x4e, 0xe9, 0xdf, 0x6a, 0x79, 0xca, 0xcd, + 0x3b, 0xdc, 0xee, 0x18, 0x52, 0x53, 0x89, 0x0e, 0x7d, 0xbf, 0xa4, 0x92, + 0x49, 0xd5, 0x6d, 0xf4, 0xef, 0xab, 0xfd, 0x43, 0xa8, 0x34, 0xbf, 0x0a, + 0x92, 0xea, 0xdb, 0xa3, 0xac, 0x3e, 0xd6, 0xfd, 0xe5, 0x76, 0x3d, 0x2b, + 0x17, 0x0e, 0xa6, 0x86, 0x0a, 0x58, 0x7d, 0x48, 0x12, 0x06, 0xab, 0x7d, + 0xcd, 0xa7, 0x16, 0x96, 0xd0, 0xc0, 0xda, 0x99, 0xc0, 0x0d, 0xd0, 0x7e, + 0x09, 0x29, 0xc1, 0xe8, 0x3f, 0x55, 0x71, 0xba, 0x6b, 0x3d, 0x7b, 0xeb, + 0x6d, 0xd9, 0x8e, 0x32, 0x6d, 0x70, 0x90, 0xc1, 0xe0, 0xc9, 0xfc, 0xab, + 0x57, 0x21, 0xc5, 0xb7, 0x06, 0xf0, 0x1e, 0x22, 0x7f, 0x95, 0xe6, 0xae, + 0x3e, 0xfa, 0xe9, 0xab, 0xdf, 0xa9, 0x02, 0x00, 0x1a, 0x92, 0xb2, 0xf2, + 0xf2, 0xea, 0xb1, 0x81, 0x80, 0x1d, 0xee, 0x30, 0xe0, 0x92, 0x91, 0xde, + 0x6d, 0xa4, 0x12, 0x6a, 0x0e, 0x6f, 0x72, 0xc3, 0x0e, 0x8f, 0x83, 0x95, + 0x5a, 0xb2, 0xb7, 0x58, 0xd7, 0x63, 0x38, 0xee, 0x04, 0x68, 0x39, 0xe7, + 0xb8, 0x57, 0x31, 0xf0, 0xf2, 0xb3, 0x6a, 0x26, 0xd7, 0xed, 0xa4, 0x18, + 0x16, 0x11, 0xab, 0x80, 0xf0, 0xf1, 0x5a, 0x38, 0xdd, 0x37, 0x1a, 0x8f, + 0x75, 0x6c, 0x9b, 0x0f, 0x36, 0x3b, 0x57, 0x14, 0x94, 0xe7, 0x61, 0x74, + 0x5f, 0x57, 0x3a, 0xcc, 0xdc, 0xf0, 0x1e, 0xe7, 0x39, 0xc6, 0xaa, 0x07, + 0xd0, 0xad, 0xb3, 0x23, 0x77, 0x8b, 0x97, 0x40, 0x0c, 0x08, 0x1a, 0x0e, + 0xc1, 0x35, 0x75, 0x86, 0x0f, 0x3e, 0xe5, 0x38, 0x12, 0xe3, 0xe4, 0x92, + 0x97, 0x09, 0xc1, 0x4a, 0x13, 0xa4, 0xa5, 0x10, 0x0f, 0x2a, 0x22, 0xb6, + 0x9e, 0xca, 0x49, 0x24, 0xa4, 0x4e, 0xa8, 0x12, 0x83, 0x63, 0x68, 0x63, + 0x98, 0xcb, 0x23, 0x75, 0x86, 0x1a, 0x3b, 0x98, 0x56, 0xd0, 0x6d, 0xc5, + 0xaa, 0xe7, 0x07, 0xbc, 0x7b, 0x99, 0xf4, 0x1c, 0x39, 0x6c, 0xf8, 0x24, + 0xa6, 0xad, 0x9d, 0x2f, 0x0a, 0xd0, 0x7d, 0x4a, 0x5b, 0x60, 0xf0, 0x74, + 0x91, 0xf9, 0x50, 0x3f, 0x60, 0xf4, 0xad, 0xc4, 0x8c, 0x7d, 0xb3, 0xcb, + 0x43, 0x9c, 0x07, 0xdc, 0x1c, 0xad, 0xb1, 0xb9, 0x58, 0xce, 0x8b, 0x0f, + 0xad, 0x4f, 0x67, 0xf0, 0xf6, 0xff, 0x00, 0x58, 0x77, 0x56, 0x46, 0xc7, + 0x8d, 0x12, 0x53, 0x9b, 0x4f, 0x44, 0xe9, 0x54, 0x3f, 0xd4, 0xab, 0x19, + 0xad, 0x79, 0xef, 0xa9, 0xfc, 0xa5, 0x5d, 0x6d, 0x6d, 0x6f, 0x02, 0x21, + 0x49, 0xde, 0xcf, 0xa5, 0xc7, 0x8a, 0x98, 0x00, 0x8d, 0x12, 0x53, 0x5e, + 0xcc, 0x70, 0x5d, 0xea, 0xd4, 0x76, 0x5b, 0xe3, 0xd9, 0xde, 0x4e, 0x0a, + 0xa6, 0x4e, 0x0f, 0xdb, 0xd9, 0xb8, 0x38, 0xe3, 0xe6, 0xd5, 0xa3, 0x6c, + 0x6f, 0x23, 0xc0, 0x3b, 0xf7, 0x9a, 0x56, 0x98, 0x6a, 0x85, 0x95, 0x93, + 0xef, 0x64, 0x0b, 0x1b, 0xc1, 0xf1, 0x1e, 0x05, 0x25, 0x3c, 0xfe, 0x37, + 0xed, 0x09, 0x35, 0xe4, 0xb7, 0xf4, 0x8c, 0x3b, 0x4b, 0x9b, 0xde, 0x3b, + 0xad, 0x4c, 0x52, 0xf8, 0x2d, 0x77, 0x2d, 0x46, 0x17, 0x52, 0xf0, 0x4b, + 0xa1, 0xaf, 0x1a, 0x39, 0xa7, 0x90, 0x54, 0x2f, 0xba, 0x9c, 0x5a, 0x8d, + 0x8e, 0xfa, 0x4e, 0xd0, 0x34, 0x72, 0x4f, 0x82, 0x4a, 0x47, 0x7d, 0x38, + 0xce, 0xb6, 0x01, 0xdb, 0x7b, 0xc7, 0x03, 0xf3, 0xbe, 0x2a, 0x96, 0xfc, + 0x9c, 0x77, 0x1d, 0xbc, 0x0d, 0x08, 0x2a, 0xc6, 0x0d, 0x17, 0x3a, 0xc7, + 0x65, 0x5a, 0x3d, 0xee, 0xe0, 0x78, 0x0f, 0x05, 0x66, 0xda, 0xab, 0x79, + 0x9d, 0x37, 0x1d, 0x08, 0x3e, 0x29, 0x29, 0xcc, 0xc9, 0xa7, 0x0b, 0xaa, + 0xd7, 0xb6, 0xef, 0x65, 0xc3, 0xe8, 0xd8, 0xd3, 0x0f, 0x69, 0x54, 0xeb, + 0xb7, 0x2f, 0xa6, 0xb8, 0x53, 0x9e, 0x3d, 0x4a, 0x26, 0x2b, 0xca, 0x68, + 0xf6, 0x9f, 0x27, 0x8f, 0xcd, 0x2b, 0x5a, 0xdc, 0x2a, 0xdd, 0xee, 0xd1, + 0xae, 0x1c, 0x10, 0xa5, 0x5d, 0x6e, 0xd8, 0x6b, 0xb4, 0x0b, 0x18, 0xe1, + 0x04, 0x1d, 0x41, 0x07, 0xc5, 0x25, 0x20, 0x01, 0x96, 0x06, 0xc1, 0x05, + 0xae, 0xe1, 0x63, 0x75, 0x6a, 0xa2, 0xd8, 0xec, 0x16, 0xbd, 0xb8, 0x16, + 0x60, 0x7e, 0x9f, 0x0c, 0x1b, 0x31, 0xf9, 0x75, 0x1c, 0x96, 0x79, 0xb2, + 0x7b, 0x2c, 0xec, 0xe2, 0xdb, 0xef, 0x2f, 0x1c, 0x13, 0xf8, 0x24, 0xa4, + 0x55, 0x63, 0xb8, 0xd6, 0x20, 0xec, 0x31, 0xf4, 0x95, 0x40, 0x1d, 0xf6, + 0xb8, 0x82, 0xe8, 0x30, 0x1c, 0xae, 0x5a, 0xd9, 0xd0, 0x02, 0xd0, 0xd1, + 0xf2, 0x2a, 0xf7, 0x4b, 0xc4, 0xae, 0xd8, 0x76, 0x84, 0xa4, 0xa7, 0x5b, + 0xa6, 0x53, 0xb6, 0xb0, 0x48, 0x88, 0x0a, 0xa7, 0xda, 0x2d, 0xff, 0x00, + 0x9d, 0xdf, 0x65, 0xd7, 0xd3, 0xfb, 0x1f, 0xa9, 0xe5, 0xf4, 0xa2, 0x56, + 0xcd, 0x6c, 0x0c, 0x60, 0x68, 0xec, 0x9b, 0xd1, 0xab, 0xd6, 0xf5, 0xf6, + 0x0f, 0x5b, 0x6e, 0xcd, 0xf1, 0xae, 0xd9, 0xdd, 0xb6, 0x7c, 0x25, 0x25, + 0x3f, 0xff, 0xd9 +}; +size_t demo_001_jpg_len = 18375; + +const uint8_t demo_002_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00, + 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, + 0x34, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00, + 0x62, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, + 0x35, 0x00, 0x39, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xe4, 0x98, 0x18, 0x46, 0xe2, 0xc1, 0x1f, 0x04, 0x4f, + 0x42, 0x98, 0x00, 0xb5, 0xa3, 0xce, 0x13, 0xed, 0xed, 0x32, 0xa4, 0x5a, + 0xdf, 0xce, 0x3f, 0x24, 0x94, 0x88, 0xb7, 0x15, 0xae, 0x82, 0x1b, 0x03, + 0xcb, 0xfd, 0x89, 0xc5, 0x58, 0xee, 0x98, 0x63, 0x75, 0xf2, 0xff, 0x00, + 0x62, 0x99, 0x6b, 0x65, 0x28, 0x06, 0x07, 0x1e, 0x32, 0x92, 0x98, 0x7a, + 0x34, 0x03, 0x06, 0xb1, 0xf1, 0x84, 0x8d, 0x38, 0xdd, 0x98, 0x11, 0x0e, + 0xde, 0xe5, 0x36, 0x9e, 0x29, 0x29, 0x08, 0x66, 0x39, 0xe6, 0xa8, 0x6f, + 0x67, 0x24, 0xea, 0xf1, 0xe3, 0x46, 0x6b, 0xf1, 0x28, 0xa1, 0xfb, 0x19, + 0x65, 0x64, 0x48, 0x7e, 0xbf, 0x34, 0x32, 0xe6, 0xc7, 0x74, 0x94, 0x84, + 0xb6, 0xbf, 0xdd, 0x8f, 0x99, 0xfe, 0xf4, 0x37, 0x00, 0x78, 0x9f, 0xbc, + 0xa3, 0x17, 0x0e, 0x23, 0x44, 0xd2, 0xde, 0x7b, 0x77, 0x49, 0x48, 0x58, + 0xd7, 0xd8, 0xed, 0xad, 0x92, 0x7e, 0x25, 0x5a, 0xa7, 0x1e, 0xb1, 0x2c, + 0xb6, 0x4b, 0xfb, 0xea, 0x44, 0x28, 0x57, 0x5b, 0xea, 0xb3, 0x79, 0x1e, + 0xce, 0x49, 0x02, 0x74, 0x47, 0x6d, 0xed, 0xaf, 0x7d, 0x85, 0xd2, 0xdd, + 0x35, 0xee, 0x52, 0x52, 0x23, 0x4b, 0x1b, 0x68, 0x02, 0x79, 0x10, 0x64, + 0xae, 0x8d, 0x94, 0x8b, 0x00, 0x69, 0xe3, 0x8f, 0xc0, 0xae, 0x6d, 0xb6, + 0x9b, 0xf2, 0x1a, 0xee, 0xdb, 0x84, 0x0f, 0x20, 0xba, 0xe6, 0x56, 0xe1, + 0x58, 0xb2, 0x43, 0x20, 0x80, 0x67, 0xbf, 0x60, 0x92, 0x9c, 0xde, 0xa6, + 0xcb, 0x06, 0x09, 0x63, 0x80, 0xd9, 0x20, 0xb4, 0xce, 0xb0, 0x42, 0xe5, + 0x6e, 0x11, 0x6b, 0x87, 0x81, 0x5d, 0x87, 0x5c, 0x04, 0x63, 0xfa, 0x7f, + 0xcb, 0x6f, 0xfd, 0xf9, 0x72, 0x19, 0x02, 0x2f, 0x78, 0xf3, 0x29, 0x29, + 0x1a, 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x24, 0x92, 0x49, + 0x29, 0x49, 0x24, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x9d, 0x4e, 0x90, + 0x76, 0x9d, 0xc0, 0x49, 0x21, 0xc3, 0xf2, 0x2d, 0x10, 0xf3, 0xab, 0x5c, + 0x0c, 0xfd, 0xd0, 0xaa, 0xf4, 0x40, 0x5a, 0xcd, 0xe1, 0xbb, 0x89, 0xdc, + 0x3e, 0x1a, 0x8d, 0x56, 0x8d, 0xb4, 0x96, 0x43, 0x89, 0x9f, 0x12, 0x92, + 0x9c, 0x8c, 0xaa, 0x98, 0xeb, 0x9c, 0x48, 0xfc, 0x4a, 0x17, 0xa3, 0x5f, + 0x81, 0xfb, 0xca, 0xb3, 0x94, 0x22, 0xe7, 0x0e, 0x62, 0x10, 0xbe, 0x09, + 0x29, 0x80, 0xa2, 0xb3, 0xe3, 0xf7, 0x94, 0xbd, 0x0a, 0xfb, 0x13, 0xf7, + 0x95, 0x28, 0x4e, 0x20, 0xf0, 0x92, 0x98, 0x9a, 0x19, 0xd8, 0xbb, 0xef, + 0x4c, 0x71, 0xda, 0x1b, 0x3b, 0x8f, 0xde, 0x88, 0x9b, 0x43, 0xdd, 0x25, + 0x23, 0xf4, 0x07, 0x89, 0xfb, 0xd3, 0x1a, 0x23, 0xf3, 0x8f, 0x97, 0x08, + 0xba, 0xf7, 0xe3, 0xb1, 0x4d, 0x27, 0xc5, 0x25, 0x23, 0xf4, 0x3f, 0x94, + 0x7f, 0x04, 0xde, 0x83, 0xbf, 0x78, 0xfe, 0x08, 0xa1, 0xc4, 0x19, 0x94, + 0xa4, 0xf8, 0xa4, 0xa4, 0xdb, 0x72, 0x4b, 0x60, 0x52, 0xef, 0x8c, 0x0f, + 0xef, 0x51, 0xf4, 0xae, 0x3a, 0x9a, 0xac, 0x9f, 0x92, 0xdc, 0x01, 0xa3, + 0x95, 0x0b, 0x40, 0x0d, 0xd3, 0xef, 0x94, 0x94, 0xe3, 0x0a, 0x2f, 0xff, + 0x00, 0x47, 0x69, 0xfb, 0x92, 0xf4, 0xed, 0x1c, 0xd4, 0xf9, 0xf3, 0x5a, + 0x75, 0x3e, 0x49, 0x04, 0xeb, 0xe6, 0x54, 0x6e, 0x30, 0x67, 0xe6, 0x61, + 0x25, 0x39, 0x8e, 0xaf, 0x22, 0x49, 0xd8, 0xf1, 0x3e, 0x49, 0x0f, 0x5a, + 0x3e, 0x83, 0xbf, 0xcd, 0x56, 0x28, 0xb6, 0xcc, 0x8c, 0x9d, 0xa0, 0x0f, + 0x49, 0xbc, 0xf9, 0xad, 0x4f, 0x4c, 0x06, 0xfb, 0x5a, 0x07, 0x64, 0x94, + 0xe1, 0x96, 0xda, 0x7f, 0xc1, 0xbf, 0xfc, 0xd2, 0x9b, 0x65, 0x91, 0xfc, + 0xdb, 0xff, 0x00, 0xcd, 0x2b, 0x67, 0xd2, 0xda, 0x46, 0xe2, 0x00, 0xec, + 0x9c, 0x30, 0x4f, 0xb9, 0x25, 0x38, 0x8e, 0x63, 0xb4, 0xf6, 0x3b, 0xe3, + 0xb5, 0xca, 0x22, 0xbf, 0xe4, 0x3f, 0xfc, 0xd7, 0x7f, 0x72, 0xe8, 0x4b, + 0x2b, 0x00, 0x1d, 0xb0, 0x42, 0x11, 0x68, 0x07, 0x50, 0x00, 0xec, 0x92, + 0x9c, 0xa6, 0xdc, 0x1a, 0x20, 0xb5, 0xd1, 0xc4, 0x6d, 0x33, 0xf9, 0x14, + 0x6c, 0x65, 0x2f, 0x97, 0x16, 0x99, 0x3d, 0xf6, 0x9f, 0xee, 0x5a, 0xc0, + 0x01, 0xa0, 0xf9, 0xa9, 0x08, 0x00, 0xc3, 0x74, 0x09, 0x29, 0xc5, 0xa9, + 0x95, 0xd7, 0x63, 0x75, 0x23, 0xdc, 0x39, 0x69, 0x1d, 0xfe, 0x0b, 0xb5, + 0x14, 0x97, 0xd2, 0xe6, 0x91, 0x20, 0xc1, 0x8f, 0x86, 0xab, 0x9f, 0xba, + 0xce, 0x00, 0x3d, 0xc7, 0xe5, 0x5d, 0x46, 0x3b, 0x5c, 0x5a, 0x5a, 0x34, + 0xd0, 0xeb, 0xf2, 0x49, 0x4e, 0x37, 0x5b, 0x05, 0xd8, 0xb5, 0xbc, 0x0f, + 0xa5, 0x63, 0x7f, 0x21, 0x5c, 0x6e, 0x58, 0x2d, 0xca, 0xb4, 0x1e, 0x43, + 0x8a, 0xed, 0xfa, 0xa5, 0x66, 0xd6, 0x63, 0x63, 0xcf, 0xe9, 0x1c, 0xe6, + 0x41, 0xed, 0x30, 0x57, 0x1b, 0xd5, 0x6a, 0x75, 0x3d, 0x4b, 0x26, 0xa7, + 0x10, 0x5c, 0xc7, 0x90, 0x48, 0xe1, 0x25, 0x35, 0x12, 0x49, 0x24, 0x94, + 0xa4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92, + 0x52, 0x92, 0x49, 0x24, 0x94, 0xf4, 0x3f, 0x57, 0xd9, 0x34, 0x6e, 0xe0, + 0x80, 0xf8, 0xfc, 0x16, 0xab, 0xab, 0x69, 0x6b, 0x77, 0x6b, 0xc2, 0xa3, + 0xf5, 0x76, 0xb0, 0xfc, 0x31, 0x3a, 0x6a, 0xe3, 0xf8, 0x85, 0xa9, 0x7d, + 0x60, 0xb0, 0x47, 0x22, 0x00, 0x3f, 0x24, 0x94, 0xf3, 0xb9, 0xdb, 0xce, + 0x4b, 0xdc, 0x1a, 0x43, 0x01, 0xdb, 0xc1, 0x3c, 0x68, 0xab, 0x3c, 0xb8, + 0x8f, 0xa2, 0xe1, 0xe5, 0xb5, 0xca, 0xe7, 0x54, 0xb2, 0xc6, 0x66, 0x3a, + 0xb0, 0x7d, 0xbe, 0xd3, 0x1d, 0xa6, 0x10, 0x01, 0x76, 0xd9, 0xd7, 0x54, + 0x94, 0x88, 0x3c, 0x40, 0x99, 0xfb, 0x8f, 0xf7, 0x27, 0x16, 0xb0, 0x1d, + 0x5d, 0xf8, 0x14, 0x56, 0x38, 0x03, 0x2e, 0x6e, 0xbf, 0x18, 0x4e, 0xfa, + 0x58, 0x61, 0xcd, 0xd3, 0xe2, 0x92, 0x90, 0x1b, 0x6b, 0x07, 0xe9, 0x0f, + 0x9c, 0xa6, 0x16, 0xd5, 0x11, 0xbc, 0x04, 0x43, 0x5b, 0x8f, 0x6f, 0x9f, + 0x75, 0x03, 0xea, 0x0e, 0x35, 0x49, 0x4b, 0x7a, 0xd5, 0xfe, 0xf8, 0x3f, + 0x12, 0x9c, 0x5b, 0x57, 0xef, 0x37, 0xef, 0x4b, 0x52, 0x75, 0x10, 0xac, + 0x57, 0x53, 0x03, 0x01, 0x73, 0x41, 0x3e, 0x30, 0x12, 0x53, 0x5f, 0xd4, + 0xa8, 0xfe, 0x73, 0x47, 0xcc, 0x26, 0xdf, 0x57, 0xef, 0x0f, 0xbc, 0x29, + 0x8a, 0x01, 0xb3, 0x76, 0xd0, 0x5b, 0xe0, 0xac, 0x7a, 0x54, 0xec, 0xfa, + 0x29, 0x29, 0xd6, 0xb2, 0x4d, 0x91, 0x06, 0x13, 0x58, 0x34, 0x20, 0xf7, + 0xe1, 0x67, 0x32, 0xee, 0xa9, 0x64, 0xef, 0x7b, 0x5a, 0xe0, 0x78, 0xf4, + 0xc7, 0xf0, 0x46, 0x73, 0x73, 0xda, 0xc0, 0x4d, 0xed, 0x3e, 0x42, 0xb1, + 0x13, 0xf7, 0xa4, 0xa6, 0x74, 0xfb, 0x2c, 0x20, 0x81, 0x07, 0xc5, 0x36, + 0x5c, 0xfa, 0x6e, 0x00, 0xeb, 0x1a, 0xf9, 0xaa, 0xbe, 0xb6, 0x63, 0x49, + 0xf7, 0xb4, 0xcf, 0x8b, 0x27, 0xf8, 0xa8, 0x3a, 0xcc, 0xb7, 0x03, 0x2e, + 0x6c, 0x1e, 0x4e, 0xcf, 0xf6, 0xa4, 0xa6, 0xde, 0x13, 0xf1, 0xe9, 0xa8, + 0x17, 0xb8, 0x31, 0xc7, 0xb7, 0x8a, 0xd3, 0x63, 0x98, 0xf6, 0xee, 0x69, + 0x99, 0xf9, 0xac, 0x16, 0xb7, 0x2e, 0x61, 0x8e, 0x69, 0xf2, 0xda, 0x3f, + 0x8a, 0xb3, 0x41, 0xce, 0x6c, 0x6c, 0x2c, 0x6c, 0xfe, 0x6e, 0xc3, 0xfd, + 0xe9, 0x29, 0xd2, 0xb0, 0x37, 0xf3, 0xb8, 0xe5, 0x44, 0x01, 0xc8, 0x41, + 0x35, 0xe7, 0xf0, 0x5f, 0x51, 0x27, 0xf9, 0x2e, 0xff, 0x00, 0xc9, 0x27, + 0x15, 0xe7, 0xc7, 0xd2, 0xa8, 0x7f, 0x65, 0xff, 0x00, 0xf9, 0x24, 0x94, + 0xd8, 0x03, 0x73, 0x7f, 0x04, 0x22, 0xce, 0xc5, 0x0f, 0xfc, 0xa0, 0xce, + 0x45, 0x31, 0xf0, 0x7f, 0xfe, 0x49, 0x39, 0xb7, 0x35, 0xd0, 0xdd, 0xb5, + 0x99, 0xf0, 0x0f, 0x1f, 0xc5, 0x25, 0x2b, 0xd3, 0x93, 0xed, 0x33, 0x07, + 0x59, 0xec, 0xa6, 0x18, 0x75, 0xd7, 0xe4, 0x50, 0xdd, 0x66, 0x63, 0x01, + 0x86, 0xd6, 0x5c, 0x01, 0x96, 0xcb, 0xa6, 0x07, 0x72, 0x82, 0xcb, 0xf3, + 0xad, 0x67, 0xa8, 0xda, 0x99, 0x1e, 0x65, 0xdf, 0xdc, 0x92, 0x99, 0x5e, + 0xd9, 0x70, 0x24, 0xf7, 0x1f, 0x95, 0x75, 0xb8, 0xb1, 0x12, 0x74, 0x1f, + 0xec, 0x5c, 0x7b, 0x06, 0x55, 0xcf, 0x12, 0x18, 0x35, 0xd6, 0x5c, 0xe1, + 0xfc, 0x17, 0x61, 0x4e, 0x95, 0xfc, 0x52, 0x53, 0x89, 0xd4, 0xae, 0x0c, + 0xbe, 0x97, 0x91, 0x3b, 0x2d, 0x68, 0x8f, 0x1d, 0xbb, 0x97, 0x21, 0xd6, + 0x1e, 0xdb, 0x3a, 0xa6, 0x4b, 0xd8, 0x08, 0x6b, 0xac, 0x24, 0x02, 0xba, + 0xce, 0xb2, 0xd7, 0xb2, 0xe0, 0x23, 0x4d, 0xec, 0x77, 0xdf, 0xb9, 0x71, + 0xf9, 0xff, 0x00, 0xd3, 0x2e, 0xfe, 0xb9, 0x49, 0x4d, 0x74, 0x92, 0x49, + 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, + 0x24, 0x94, 0xa4, 0x92, 0x49, 0x25, 0x3d, 0x77, 0xd5, 0xb6, 0x6e, 0xc0, + 0x6f, 0x6f, 0xa7, 0xf9, 0x42, 0xd5, 0xb9, 0x90, 0x01, 0xf1, 0xe4, 0x2c, + 0xef, 0xab, 0x5a, 0x74, 0xfa, 0xbf, 0x94, 0x5e, 0x3f, 0x15, 0xb1, 0x7b, + 0x7d, 0xa0, 0x69, 0xf0, 0x49, 0x4f, 0x29, 0xd5, 0x58, 0x5f, 0x9e, 0xfd, + 0xa0, 0x98, 0x0d, 0xe3, 0xb6, 0x88, 0x4c, 0xa5, 0xd1, 0xa8, 0xd3, 0xe0, + 0xac, 0xf5, 0x26, 0x5b, 0xfb, 0x41, 0xc1, 0x8f, 0xda, 0x5c, 0x07, 0x03, + 0xc9, 0x41, 0x98, 0x79, 0x44, 0x97, 0x7a, 0xa2, 0x23, 0xb8, 0x3f, 0xde, + 0x92, 0x98, 0xb6, 0xa6, 0xf0, 0x44, 0xfc, 0x94, 0xc5, 0x40, 0x0d, 0x1a, + 0x63, 0xcd, 0x23, 0x8d, 0x93, 0x31, 0xea, 0x00, 0x07, 0x06, 0x21, 0x07, + 0xec, 0xe4, 0xb8, 0x87, 0xe4, 0xb5, 0xce, 0x1f, 0x9a, 0x5d, 0xcf, 0xe2, + 0x92, 0x99, 0x3a, 0xb1, 0x32, 0x1a, 0x7f, 0x2a, 0x1b, 0x81, 0x27, 0x88, + 0x56, 0x86, 0x26, 0x4b, 0x84, 0x07, 0x34, 0x0f, 0x11, 0x2a, 0x36, 0x61, + 0x64, 0xed, 0xd4, 0xb3, 0xef, 0x29, 0x29, 0xa6, 0xe6, 0xc9, 0x11, 0xa2, + 0x33, 0x24, 0xb7, 0x4d, 0x74, 0x85, 0x30, 0xd7, 0xfa, 0x7e, 0x9f, 0xa6, + 0xdd, 0xdf, 0xbd, 0xaf, 0x03, 0xe4, 0x98, 0x55, 0x63, 0x41, 0x1b, 0x06, + 0xbe, 0x67, 0xfb, 0x92, 0x52, 0x99, 0x3c, 0x71, 0xe4, 0xa7, 0x27, 0x6c, + 0x26, 0x14, 0xdd, 0xfb, 0x83, 0xe1, 0x3f, 0xec, 0x4d, 0xe9, 0xd9, 0xba, + 0x36, 0x8e, 0x63, 0xe9, 0x1f, 0xee, 0x49, 0x4d, 0xec, 0xa7, 0xc3, 0x4b, + 0x81, 0x01, 0xce, 0xe7, 0xcd, 0x03, 0x18, 0xe4, 0x5a, 0xc3, 0x20, 0x32, + 0xb0, 0x7e, 0x9b, 0xbf, 0x84, 0xa3, 0x38, 0x9f, 0x88, 0x4e, 0x1c, 0x36, + 0x8d, 0x3e, 0xe4, 0x94, 0x8c, 0xd0, 0xd2, 0x64, 0xc9, 0xfe, 0x50, 0xd3, + 0xf2, 0x24, 0xdc, 0x70, 0x07, 0x6f, 0xba, 0x51, 0x98, 0xf8, 0x3e, 0x28, + 0xa6, 0xdd, 0xa2, 0x4f, 0xe4, 0x49, 0x4d, 0x1b, 0x30, 0x19, 0x61, 0xf6, + 0xb6, 0x1f, 0xe2, 0x02, 0xbd, 0x8e, 0x4b, 0x1a, 0x1a, 0xe3, 0x24, 0x68, + 0x60, 0x19, 0x43, 0x77, 0x54, 0xae, 0x9f, 0xcc, 0x7b, 0xcf, 0x90, 0x8f, + 0xca, 0xac, 0x57, 0x93, 0x5d, 0xa4, 0x3c, 0x56, 0xe6, 0x93, 0xc8, 0x70, + 0x49, 0x49, 0x04, 0x1d, 0x40, 0xfb, 0xd3, 0xb7, 0x98, 0x84, 0x2b, 0x6f, + 0x7b, 0x3e, 0x83, 0x74, 0xef, 0xa2, 0x19, 0xc9, 0xb0, 0x9e, 0x22, 0x12, + 0x53, 0x6c, 0xb1, 0xa4, 0x79, 0xf9, 0xc2, 0x61, 0x59, 0x0d, 0x24, 0x46, + 0xee, 0xc7, 0x85, 0x53, 0xd6, 0xb5, 0x48, 0x64, 0x5b, 0x1b, 0x49, 0xf8, + 0x24, 0xa6, 0x54, 0xd6, 0xda, 0x85, 0xa1, 0xed, 0x97, 0x3c, 0x44, 0x78, + 0xc9, 0x92, 0x54, 0x6b, 0x61, 0x0d, 0xda, 0x09, 0x9f, 0xb9, 0x4b, 0xf4, + 0x81, 0x85, 0xd3, 0xbb, 0xc5, 0x45, 0xb7, 0xbc, 0x08, 0x6b, 0x62, 0x79, + 0x25, 0x25, 0x32, 0x03, 0x68, 0x90, 0xde, 0xfc, 0xae, 0x89, 0x9b, 0xbd, + 0x03, 0xb4, 0xc1, 0xd0, 0x4f, 0xcc, 0x2e, 0x64, 0x1f, 0x50, 0x6c, 0x70, + 0x05, 0xa6, 0x27, 0x91, 0xdd, 0x75, 0x35, 0x36, 0x6a, 0x21, 0x25, 0x38, + 0x7f, 0x58, 0x44, 0x16, 0x1f, 0x12, 0xdf, 0xb8, 0x12, 0xb8, 0x8c, 0xff, + 0x00, 0xe9, 0xb7, 0x7f, 0x5c, 0xae, 0xe7, 0xeb, 0x1b, 0x46, 0xda, 0xdd, + 0xdb, 0x73, 0x7f, 0x2a, 0xe1, 0xba, 0x87, 0xf4, 0xdb, 0xbf, 0xae, 0x52, + 0x53, 0x5d, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, + 0x24, 0x94, 0xa4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4f, 0x67, + 0xf5, 0x6b, 0x6f, 0xec, 0xea, 0x77, 0x90, 0x3d, 0xce, 0x8f, 0x89, 0x72, + 0xd3, 0xb9, 0xbb, 0xaf, 0x71, 0x07, 0xf3, 0x03, 0x63, 0xe0, 0x4c, 0xac, + 0xbf, 0xab, 0x95, 0x07, 0xf4, 0xca, 0x67, 0xf7, 0x8f, 0xe0, 0xe5, 0xb3, + 0x65, 0x61, 0x8e, 0xd3, 0xe0, 0x92, 0x9e, 0x67, 0xa9, 0xc0, 0xea, 0x2e, + 0x68, 0x31, 0xed, 0x6c, 0x11, 0xf0, 0x45, 0xa9, 0xa7, 0xd3, 0xdc, 0x0c, + 0x83, 0xf9, 0x50, 0x3a, 0xb1, 0xff, 0x00, 0x29, 0x38, 0x73, 0x01, 0xb0, + 0x3e, 0x48, 0xb5, 0x92, 0xd6, 0x80, 0x00, 0xf9, 0x24, 0xa5, 0xe5, 0xdd, + 0xc4, 0x81, 0xe2, 0x81, 0x93, 0x89, 0x4d, 0x9e, 0xe6, 0xb0, 0x07, 0x78, + 0x85, 0x6c, 0x35, 0xe6, 0x7d, 0xb3, 0x1c, 0xa1, 0x1c, 0xca, 0x5a, 0xef, + 0x4d, 0xc1, 0xc1, 0xdf, 0x0d, 0x12, 0x52, 0xf4, 0xb9, 0xcc, 0xaf, 0x69, + 0x06, 0x06, 0x81, 0x1c, 0x58, 0xd2, 0xdd, 0x74, 0x51, 0x9d, 0xc2, 0x79, + 0x1e, 0x29, 0x8b, 0x01, 0x09, 0x29, 0x8b, 0xc5, 0x60, 0xee, 0xd6, 0x7c, + 0x90, 0xdd, 0x73, 0x40, 0xfa, 0x27, 0xf0, 0x52, 0x70, 0x70, 0x4c, 0x5a, + 0x1d, 0xca, 0x4a, 0x46, 0xeb, 0x8d, 0x90, 0xd6, 0xcb, 0x60, 0xff, 0x00, + 0xaf, 0x09, 0xbd, 0xbe, 0xa4, 0xc9, 0xff, 0x00, 0x6a, 0x45, 0xbb, 0x5d, + 0x3c, 0x7c, 0x13, 0x6f, 0x66, 0xe9, 0x9d, 0x52, 0x53, 0xd0, 0x8e, 0x91, + 0x81, 0xff, 0x00, 0x71, 0xd9, 0xf0, 0xda, 0xa1, 0x67, 0x4c, 0xe9, 0xe3, + 0xfe, 0xd3, 0xb2, 0x3b, 0xe8, 0xb5, 0xfe, 0x3f, 0x35, 0x17, 0xd6, 0x1c, + 0x39, 0x84, 0x94, 0xe1, 0x8c, 0x2e, 0x92, 0x4b, 0x7d, 0x8c, 0x6c, 0xf1, + 0xac, 0x22, 0x9e, 0x93, 0x86, 0xe6, 0xfb, 0x2b, 0x1a, 0xf7, 0x04, 0xff, + 0x00, 0x7a, 0x6c, 0xce, 0x9f, 0x6e, 0xff, 0x00, 0x50, 0x00, 0xf1, 0x3d, + 0xb4, 0x44, 0xc5, 0x17, 0x56, 0x20, 0x8f, 0x6f, 0x61, 0xcc, 0x24, 0xa7, + 0x2b, 0x33, 0xa6, 0xbb, 0x1d, 0xe2, 0xc6, 0x30, 0x3d, 0x93, 0xab, 0x5d, + 0xbb, 0x4f, 0x98, 0x2a, 0x75, 0x63, 0x50, 0xe6, 0x82, 0xea, 0x48, 0xf8, + 0x3d, 0xcb, 0x4f, 0x35, 0xc5, 0xd5, 0xc6, 0xaa, 0xbe, 0x31, 0x73, 0x61, + 0xaf, 0x04, 0x4f, 0x12, 0x92, 0x91, 0x0e, 0x9f, 0x86, 0xe2, 0x0e, 0xc7, + 0x4f, 0x89, 0x73, 0xbf, 0xf2, 0x48, 0x83, 0xa6, 0x61, 0x9d, 0x36, 0x90, + 0x7f, 0xac, 0xff, 0x00, 0xef, 0x57, 0x5b, 0x00, 0x46, 0x91, 0xdb, 0x45, + 0x21, 0xe4, 0x92, 0x9c, 0xf7, 0x74, 0xbc, 0x68, 0xd0, 0x38, 0x7c, 0x1e, + 0xff, 0x00, 0xef, 0x51, 0xaf, 0xa6, 0x51, 0xf9, 0xdb, 0xbf, 0xcf, 0x77, + 0xf7, 0xad, 0x22, 0x7c, 0x00, 0x42, 0x73, 0x9c, 0xd3, 0xc0, 0x27, 0xe6, + 0x12, 0x53, 0x57, 0xec, 0x15, 0x0d, 0x01, 0x77, 0x90, 0xde, 0xef, 0xef, + 0x48, 0xf4, 0xca, 0x3c, 0x5d, 0xaf, 0x3e, 0xf7, 0x7f, 0x7a, 0xb8, 0xd7, + 0x07, 0x7e, 0x6e, 0xaa, 0x73, 0xe5, 0xaa, 0x4a, 0x73, 0x8f, 0x4d, 0xc7, + 0x6c, 0x10, 0x5e, 0x08, 0x3a, 0x45, 0x8f, 0xff, 0x00, 0xc9, 0x2e, 0x9a, + 0x9d, 0x19, 0x1e, 0x2b, 0x16, 0xc3, 0xe5, 0xc2, 0xd0, 0x76, 0x55, 0x6d, + 0xc5, 0x7d, 0x8f, 0x04, 0x80, 0xd9, 0x76, 0xdd, 0x4e, 0x9a, 0xa4, 0xa6, + 0x87, 0xd6, 0x20, 0xd3, 0x4b, 0x35, 0xe1, 0xed, 0xfc, 0xab, 0x83, 0xea, + 0x1f, 0xd3, 0x6e, 0xfe, 0xb1, 0x5d, 0xcf, 0xd6, 0x26, 0x0d, 0x94, 0xd9, + 0x3f, 0x48, 0x03, 0x1e, 0x52, 0x0a, 0xe1, 0xba, 0x87, 0xf4, 0xdb, 0xbf, + 0xac, 0x52, 0x53, 0x5d, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, + 0x92, 0x49, 0x24, 0x94, 0xa4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, + 0x4f, 0x6f, 0xf5, 0x60, 0x81, 0xd2, 0xaa, 0x9f, 0x17, 0x47, 0xf9, 0xcb, + 0x4e, 0xf7, 0x89, 0x93, 0x33, 0x3a, 0x2c, 0xcf, 0xab, 0x0e, 0x60, 0xe9, + 0x75, 0xb4, 0x9d, 0x49, 0x74, 0x7f, 0x9c, 0xb5, 0x2d, 0x6c, 0xf0, 0x23, + 0xc2, 0x52, 0x53, 0x83, 0x99, 0x8d, 0x4d, 0x9d, 0x49, 0xe6, 0xc6, 0xb4, + 0xe8, 0xde, 0x44, 0xf6, 0x44, 0x3d, 0x3b, 0x1b, 0x6c, 0x8a, 0xd9, 0x1f, + 0x04, 0x67, 0xb4, 0x7e, 0xd0, 0x7b, 0x88, 0x97, 0x43, 0x47, 0xca, 0x15, + 0xd6, 0x00, 0x74, 0x22, 0x07, 0x9c, 0xff, 0x00, 0x72, 0x4a, 0x71, 0x9b, + 0x83, 0x40, 0x0f, 0x1b, 0x01, 0x30, 0x4e, 0x9a, 0x2c, 0xe6, 0x7f, 0x3b, + 0xb5, 0xd8, 0xcd, 0x78, 0x9f, 0x17, 0x02, 0xba, 0x87, 0xd3, 0x59, 0xfc, + 0xdf, 0xc0, 0xff, 0x00, 0x72, 0x09, 0xc6, 0xa9, 0xae, 0x96, 0xb7, 0xdc, + 0x3c, 0x8a, 0x4a, 0x69, 0xd3, 0x85, 0x43, 0xc0, 0xdd, 0x4e, 0xcf, 0xed, + 0x39, 0x1b, 0xf6, 0x5e, 0x31, 0xfc, 0xd2, 0x3e, 0x0e, 0x77, 0xf7, 0xab, + 0xac, 0x3e, 0xff, 0x00, 0x76, 0x95, 0x81, 0xa7, 0xef, 0x12, 0xa6, 0x0b, + 0x08, 0xd0, 0xf1, 0xe6, 0x92, 0x9c, 0xe3, 0xd2, 0xb1, 0x79, 0xda, 0x7f, + 0xce, 0x77, 0xf7, 0xa6, 0x3d, 0x2b, 0x1c, 0xf0, 0x08, 0xfe, 0xd3, 0xbf, + 0xf2, 0x4b, 0x54, 0x00, 0x7b, 0x4c, 0xf9, 0x26, 0x70, 0x81, 0xd8, 0x79, + 0x24, 0xa7, 0x23, 0xf6, 0x3e, 0x3c, 0x6b, 0xba, 0x7f, 0xac, 0xef, 0xfc, + 0x92, 0x8f, 0xec, 0x6c, 0x6d, 0xdc, 0x3b, 0xfc, 0xe3, 0xfd, 0xea, 0xf5, + 0xae, 0x76, 0xef, 0x73, 0xa0, 0x76, 0x4d, 0xea, 0x0e, 0x37, 0x98, 0x89, + 0x9f, 0xe0, 0x92, 0x9b, 0xbf, 0xb4, 0xaa, 0x1c, 0xb2, 0xef, 0xfb, 0x69, + 0xdf, 0xdc, 0x90, 0xea, 0x98, 0xc3, 0xe9, 0x36, 0xe1, 0xe3, 0xfa, 0x27, + 0xff, 0x00, 0x72, 0xd0, 0x21, 0xba, 0x69, 0xa1, 0xef, 0xae, 0x8a, 0x0e, + 0x15, 0x6b, 0xba, 0x07, 0xf1, 0x49, 0x4e, 0x5d, 0x9d, 0x57, 0x1d, 0xd9, + 0x05, 0xa3, 0xd5, 0xf4, 0x76, 0xc0, 0xfd, 0x1b, 0xf9, 0xd3, 0xf3, 0x61, + 0x0d, 0xdd, 0x4a, 0x80, 0x74, 0x16, 0x47, 0x8f, 0xa4, 0xff, 0x00, 0xfc, + 0x8a, 0xd6, 0xf4, 0x59, 0x32, 0x00, 0xf2, 0x51, 0x7d, 0x0c, 0x20, 0x8e, + 0x3e, 0xef, 0xee, 0x49, 0x4e, 0x0d, 0xdd, 0x4a, 0xed, 0xe0, 0xd7, 0x51, + 0x7d, 0x47, 0x47, 0x1d, 0x96, 0x4c, 0x7d, 0xc8, 0x9f, 0xb4, 0xf1, 0x76, + 0x89, 0xdc, 0xd8, 0xd4, 0xcb, 0x1d, 0xa1, 0xff, 0x00, 0x35, 0x47, 0xaa, + 0x74, 0x77, 0x1f, 0xd2, 0x52, 0xe7, 0xb5, 0xc3, 0x5d, 0x1c, 0x55, 0x9e, + 0x9e, 0xdb, 0x85, 0x20, 0x5a, 0xe2, 0xe3, 0x1a, 0xee, 0x49, 0x48, 0x8f, + 0x55, 0xc1, 0x74, 0x34, 0x5d, 0x07, 0xbf, 0xb5, 0xff, 0x00, 0xf9, 0x14, + 0x46, 0x75, 0x2e, 0x9e, 0x09, 0x3e, 0xae, 0x9e, 0x3b, 0x1f, 0xff, 0x00, + 0x91, 0x4f, 0x66, 0x3d, 0x4e, 0xb2, 0x4b, 0x00, 0x3e, 0x23, 0xc3, 0xe4, + 0xae, 0x56, 0x18, 0x1b, 0x0d, 0x10, 0x3c, 0xbf, 0xdc, 0x92, 0x9a, 0x9f, + 0xb4, 0xf0, 0x3f, 0xd2, 0x0f, 0xf3, 0x5d, 0xff, 0x00, 0x91, 0x4e, 0xfe, + 0xa1, 0xd3, 0x8e, 0xdf, 0x7c, 0xc9, 0x82, 0x43, 0x5d, 0xa0, 0xff, 0x00, + 0x35, 0x5d, 0x2c, 0x0e, 0xf2, 0xf9, 0x0f, 0xee, 0x4d, 0xe9, 0x3b, 0xb3, + 0xe3, 0xe2, 0xd6, 0x9f, 0xe0, 0x92, 0x9a, 0x83, 0x3b, 0xa5, 0x8d, 0x45, + 0xc0, 0x7c, 0x9d, 0xff, 0x00, 0x91, 0x48, 0xf5, 0x0e, 0x9c, 0x7f, 0xc3, + 0x37, 0xfe, 0x97, 0xf7, 0x2b, 0x62, 0x8b, 0x48, 0x80, 0xf0, 0x3e, 0x2c, + 0x6f, 0xf7, 0x26, 0xf4, 0x2f, 0xff, 0x00, 0x48, 0xcd, 0x3c, 0x6b, 0x1f, + 0xdc, 0x92, 0x9a, 0x2e, 0xce, 0xc0, 0xff, 0x00, 0x4c, 0xdf, 0x86, 0xbf, + 0xdc, 0xb5, 0x8b, 0x2b, 0xf4, 0x5d, 0xb8, 0x01, 0xb9, 0xa4, 0x7f, 0x5b, + 0x4f, 0x05, 0x4e, 0xca, 0xae, 0x03, 0x52, 0xc3, 0xa7, 0xee, 0x91, 0xf9, + 0x1c, 0xb4, 0xaa, 0x25, 0xd4, 0xed, 0xf2, 0xe5, 0x25, 0x39, 0x9f, 0x58, + 0xb6, 0x9c, 0x6a, 0xde, 0xc8, 0x3b, 0x80, 0x83, 0xf3, 0x0b, 0x80, 0xcf, + 0xfe, 0x99, 0x6e, 0x91, 0xee, 0xe1, 0x77, 0xff, 0x00, 0x58, 0x48, 0x76, + 0x2b, 0x3c, 0x43, 0x9b, 0xf1, 0xe5, 0x70, 0x1d, 0x43, 0xfa, 0x6d, 0xdf, + 0xd6, 0x49, 0x4d, 0x74, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, + 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5, 0x2a, 0xd8, 0xeb, + 0x1e, 0xd6, 0x37, 0x97, 0x18, 0x0a, 0x2a, 0xe7, 0x4d, 0xad, 0xa6, 0xd7, + 0x58, 0xee, 0x18, 0x34, 0xf8, 0x94, 0x94, 0xf5, 0x9d, 0x12, 0xb6, 0xb3, + 0x11, 0x8d, 0x98, 0x0c, 0x90, 0x3e, 0x32, 0xb4, 0xac, 0x73, 0x43, 0x01, + 0x3e, 0x0b, 0x37, 0xa4, 0x10, 0xfc, 0x3a, 0xcc, 0xe8, 0x5e, 0x75, 0x1e, + 0x4e, 0x57, 0x72, 0x03, 0x8c, 0x09, 0x81, 0xe0, 0x92, 0x9c, 0xbb, 0x2e, + 0xb5, 0x99, 0xd6, 0x5a, 0xc6, 0x97, 0x35, 0xc1, 0xa0, 0x81, 0x1d, 0x87, + 0x82, 0xb2, 0x72, 0x8b, 0xdb, 0x2f, 0x65, 0xcd, 0x03, 0xc0, 0x73, 0xf8, + 0xaa, 0x96, 0xe4, 0x7a, 0x59, 0xce, 0x01, 0xae, 0x74, 0x47, 0x0d, 0x91, + 0xc2, 0xb5, 0xbe, 0xab, 0x3d, 0xe6, 0xbb, 0x03, 0xbf, 0xa8, 0xe8, 0xfb, + 0xa1, 0x25, 0x20, 0x76, 0x46, 0xd3, 0x3b, 0x2c, 0x78, 0xf0, 0x70, 0x3f, + 0xde, 0xab, 0x7e, 0xd0, 0xcd, 0xae, 0xe3, 0x34, 0x87, 0xd2, 0x7b, 0x6c, + 0x87, 0x00, 0xb6, 0x1b, 0x92, 0x1a, 0xd0, 0xd1, 0x5b, 0xbf, 0xed, 0xb2, + 0x3f, 0x82, 0xc8, 0xce, 0xa2, 0xd3, 0x98, 0xdc, 0xaa, 0x05, 0x9b, 0xb9, + 0x73, 0x5c, 0x1d, 0x1f, 0x71, 0x09, 0x29, 0xb3, 0x5e, 0x73, 0xb9, 0x65, + 0x56, 0x09, 0xf0, 0xac, 0xe9, 0xf3, 0x52, 0x19, 0xef, 0xdd, 0x01, 0xb6, + 0xf9, 0x8f, 0x49, 0xdf, 0xdc, 0xa7, 0x8f, 0x98, 0x59, 0x1e, 0xa5, 0x6e, + 0x9f, 0x36, 0x93, 0xf8, 0xa9, 0x9c, 0x96, 0xb5, 0xa5, 0xcd, 0x70, 0x24, + 0x99, 0x83, 0x33, 0xf0, 0xd4, 0x04, 0x94, 0x89, 0xfd, 0x47, 0x69, 0xd8, + 0xe1, 0x60, 0x73, 0xb8, 0x06, 0xb7, 0x83, 0xf9, 0x10, 0xbf, 0x68, 0xd2, + 0x0e, 0x81, 0xed, 0x70, 0xef, 0xb1, 0xf3, 0xff, 0x00, 0x52, 0xad, 0x5c, + 0xfc, 0x5c, 0x82, 0xdb, 0x8b, 0x48, 0xb1, 0xb0, 0x60, 0x12, 0x46, 0x9f, + 0x04, 0x27, 0x39, 0xde, 0xae, 0xf6, 0x87, 0x3a, 0x4f, 0xb8, 0x98, 0x88, + 0xf2, 0xdc, 0x92, 0x91, 0x3b, 0xaa, 0xb4, 0xe8, 0x5e, 0xef, 0xfb, 0x6d, + 0xff, 0x00, 0xf9, 0x15, 0x0f, 0xda, 0x2c, 0x89, 0xde, 0x63, 0xc3, 0xd3, + 0x7f, 0xf7, 0x2b, 0xec, 0x6b, 0x4e, 0xa1, 0xae, 0x1e, 0x3a, 0xb5, 0x1b, + 0x63, 0x39, 0xdc, 0xe9, 0xf8, 0x84, 0x94, 0x9a, 0xbc, 0xa7, 0x35, 0xda, + 0x93, 0xb4, 0xa2, 0x3a, 0xea, 0x9f, 0xf4, 0x81, 0x95, 0x9e, 0xda, 0x73, + 0xde, 0xef, 0xe7, 0x2b, 0x9f, 0x12, 0xc7, 0x47, 0xfd, 0x5a, 0x91, 0xab, + 0xa8, 0xb4, 0xc7, 0xa9, 0x49, 0xfe, 0xcb, 0xbf, 0xf2, 0x49, 0x29, 0xbe, + 0x32, 0x18, 0x04, 0x4f, 0x1e, 0x49, 0x1c, 0x86, 0x11, 0xa3, 0xbf, 0x28, + 0x54, 0x1c, 0x3a, 0x80, 0x12, 0xe7, 0x53, 0xfe, 0x63, 0xbf, 0xf2, 0x4a, + 0x1b, 0xb3, 0x3f, 0xe0, 0x67, 0xfa, 0xae, 0xff, 0x00, 0xc9, 0x24, 0xa7, + 0x42, 0xcb, 0xea, 0x88, 0x2f, 0x6e, 0xbc, 0x49, 0x84, 0x36, 0xb9, 0xad, + 0xd3, 0x48, 0xf2, 0x21, 0x65, 0x65, 0xd9, 0x70, 0xaf, 0x75, 0xfe, 0x83, + 0x44, 0xc0, 0x3b, 0x5e, 0x75, 0x3f, 0xda, 0x4f, 0x5b, 0x72, 0x99, 0xb5, + 0x95, 0xd9, 0x43, 0xe7, 0x98, 0xdf, 0xa6, 0x93, 0xe2, 0x92, 0x9b, 0xee, + 0xb7, 0xdf, 0xa4, 0x8f, 0xb9, 0x15, 0x97, 0xf9, 0x7f, 0xaf, 0xde, 0xa8, + 0x1c, 0x6c, 0xfd, 0xa1, 0xf1, 0x4f, 0x8e, 0x9b, 0xd4, 0x43, 0x7a, 0x80, + 0xd3, 0x6d, 0x53, 0xfd, 0xa4, 0x94, 0xeb, 0x0b, 0xe7, 0xc4, 0x22, 0x7a, + 0xe0, 0x81, 0xdf, 0xe6, 0xb2, 0x01, 0xea, 0x3b, 0x4c, 0x36, 0xae, 0x3f, + 0x94, 0xa6, 0xc3, 0xd4, 0x80, 0x82, 0xda, 0xbe, 0x32, 0xef, 0xee, 0x49, + 0x4e, 0xa7, 0xaa, 0x7c, 0x0a, 0x46, 0xf7, 0x03, 0xa4, 0xca, 0xcc, 0xdd, + 0xd4, 0x3f, 0x76, 0xbf, 0x3d, 0x5d, 0xfd, 0xc9, 0x81, 0xce, 0x3a, 0x96, + 0xd7, 0xf7, 0xbb, 0xfb, 0x92, 0x53, 0xa1, 0x65, 0xf2, 0xd2, 0x0e, 0xba, + 0x44, 0x2b, 0x78, 0xff, 0x00, 0x44, 0x7c, 0x16, 0x13, 0x9f, 0x98, 0x01, + 0x96, 0xb0, 0xc7, 0x9b, 0xbf, 0xb9, 0x6d, 0x50, 0xe2, 0xe6, 0xf9, 0x01, + 0xaf, 0xdc, 0x92, 0x9c, 0xde, 0xbe, 0x0f, 0xa0, 0xc7, 0x79, 0xb4, 0x7c, + 0x8b, 0x82, 0xe1, 0x7a, 0x8f, 0xf4, 0xdb, 0xbf, 0xac, 0xbb, 0x9e, 0xba, + 0x43, 0xb1, 0x87, 0x88, 0x2d, 0x11, 0xf3, 0x5c, 0x2e, 0x7f, 0xf4, 0xcb, + 0x7f, 0xac, 0x92, 0x9a, 0xe9, 0x41, 0x1c, 0xad, 0xee, 0x9d, 0xd2, 0x31, + 0x71, 0xf1, 0x99, 0x9f, 0xd4, 0xce, 0x8f, 0x1b, 0xa9, 0xa2, 0x60, 0x91, + 0xe2, 0xef, 0x8a, 0xb0, 0x7a, 0x8e, 0x1e, 0x4b, 0x9b, 0x5b, 0x71, 0x45, + 0x38, 0xe3, 0xf3, 0xb6, 0xb5, 0xc0, 0x79, 0x90, 0x44, 0xfe, 0x29, 0x29, + 0xe6, 0x52, 0x5d, 0x19, 0x6f, 0x48, 0x7e, 0xeb, 0x2c, 0xa1, 0xbe, 0xa1, + 0x30, 0xdd, 0x8e, 0x9d, 0x64, 0xf2, 0xd0, 0x61, 0x66, 0xf5, 0x3a, 0xdb, + 0x3b, 0xa9, 0x6e, 0xda, 0x9a, 0x76, 0xc4, 0x7b, 0xa3, 0xb1, 0x29, 0x29, + 0xce, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5, 0x63, 0x1f, + 0x25, 0xd4, 0xb1, 0xed, 0x00, 0x10, 0x75, 0x92, 0x35, 0x98, 0x80, 0xab, + 0xab, 0x16, 0xd4, 0xda, 0xb1, 0x6a, 0x90, 0x45, 0x96, 0x92, 0xe3, 0x3f, + 0xba, 0x34, 0x6f, 0xde, 0x92, 0x9e, 0xb7, 0xea, 0xd4, 0x7e, 0xcd, 0xa7, + 0x77, 0x1e, 0xe3, 0xff, 0x00, 0x49, 0x5e, 0xb1, 0xe5, 0xd7, 0x38, 0x4e, + 0x8d, 0x68, 0xd3, 0xcd, 0x50, 0xfa, 0xbc, 0xe3, 0xfb, 0x36, 0x81, 0xcc, + 0x87, 0x0f, 0xfa, 0x45, 0x5e, 0xb0, 0x16, 0xda, 0xff, 0x00, 0x80, 0x22, + 0x12, 0x53, 0x97, 0x73, 0x9d, 0xfb, 0x44, 0xd6, 0xc1, 0xb9, 0xc4, 0x34, + 0x6d, 0x1d, 0xe4, 0x2d, 0x9a, 0xea, 0x73, 0x58, 0x37, 0x19, 0x31, 0xc1, + 0xe7, 0xe6, 0xb2, 0x2c, 0xb5, 0xd5, 0xe7, 0x17, 0x57, 0x63, 0x5a, 0xf7, + 0x00, 0x35, 0x61, 0x71, 0xe1, 0x5d, 0xaf, 0xf6, 0x95, 0xba, 0xb5, 0xe1, + 0xcd, 0xff, 0x00, 0x8a, 0x3f, 0xf9, 0x30, 0x92, 0x9b, 0x9b, 0xa0, 0x44, + 0xa8, 0xfd, 0xc4, 0xaa, 0x37, 0x62, 0xe5, 0x96, 0x93, 0x6c, 0x34, 0x7f, + 0x57, 0xff, 0x00, 0x52, 0x2a, 0x78, 0x58, 0xc5, 0xf7, 0xbc, 0xe2, 0xdf, + 0x5e, 0xf6, 0xfd, 0x36, 0x90, 0x47, 0xfd, 0xfd, 0x25, 0x3a, 0xb6, 0x09, + 0xef, 0xc2, 0xae, 0xe0, 0x67, 0xf8, 0xa6, 0x75, 0x59, 0x73, 0xfc, 0xfe, + 0x38, 0x23, 0xc9, 0xc7, 0xf2, 0x12, 0x9f, 0xec, 0xf9, 0x87, 0xfc, 0x2d, + 0x1f, 0xe6, 0x59, 0xfd, 0xe9, 0x29, 0x25, 0x5b, 0x4f, 0xd2, 0x30, 0x02, + 0x85, 0x95, 0xdd, 0x6b, 0xbf, 0x46, 0xcd, 0x95, 0x9e, 0x0f, 0x6d, 0x7b, + 0x93, 0x29, 0x9b, 0x8b, 0x9c, 0x4c, 0x36, 0xda, 0x09, 0x3d, 0xa2, 0xc0, + 0x9d, 0xd4, 0x75, 0x16, 0xe9, 0xba, 0x80, 0x39, 0xe5, 0xc1, 0x25, 0x26, + 0xda, 0xda, 0xc4, 0x0e, 0x3c, 0x53, 0x6f, 0x1e, 0x08, 0x2e, 0x6e, 0x7b, + 0x01, 0xf5, 0x1f, 0x8e, 0x00, 0x1e, 0x2f, 0x27, 0xf0, 0x4d, 0xb3, 0xa9, + 0x4c, 0xc5, 0x11, 0xfb, 0xd2, 0xed, 0xbe, 0x29, 0x29, 0xd9, 0xaa, 0xbd, + 0x66, 0x20, 0x29, 0x9a, 0x9a, 0xee, 0xda, 0x29, 0x07, 0x16, 0x08, 0xda, + 0x79, 0x2a, 0x2e, 0xc8, 0x03, 0x42, 0x39, 0xe0, 0x78, 0xa4, 0xa6, 0xa6, + 0x5b, 0x7d, 0x90, 0xd1, 0xaf, 0x8f, 0x65, 0x5a, 0xba, 0x9e, 0xc6, 0xcb, + 0xe3, 0x5d, 0x4c, 0x2b, 0xf6, 0x3c, 0xb8, 0x18, 0x61, 0x27, 0xb6, 0x85, + 0x0b, 0xd6, 0x9e, 0x58, 0x5a, 0x3e, 0x05, 0x25, 0x39, 0x79, 0x15, 0x8c, + 0x92, 0xe7, 0x47, 0xb2, 0xae, 0x09, 0xe0, 0x94, 0x85, 0x4d, 0x6d, 0xb5, + 0xbd, 0xcf, 0x01, 0x8e, 0x6c, 0xb8, 0x78, 0x04, 0x5c, 0xac, 0x9a, 0xf0, + 0xda, 0xf7, 0x3a, 0xb3, 0x63, 0x1e, 0x75, 0x80, 0x74, 0x4a, 0xba, 0xa8, + 0xb1, 0xde, 0xb6, 0xa7, 0x76, 0xb2, 0x92, 0x9b, 0xec, 0xb1, 0x8f, 0x68, + 0x2c, 0xd5, 0xbc, 0x05, 0x06, 0x55, 0x2f, 0x3e, 0x01, 0x0c, 0x3b, 0x69, + 0xdc, 0xd2, 0x76, 0xf6, 0x1d, 0x95, 0x3c, 0xbe, 0xae, 0x29, 0xb7, 0xd2, + 0x61, 0x80, 0x1f, 0xb5, 0xce, 0xf8, 0x0d, 0xce, 0xfc, 0xa0, 0x24, 0xa7, + 0x47, 0x27, 0x50, 0x2b, 0x60, 0xd0, 0x73, 0x0a, 0xb3, 0x9a, 0xe6, 0x34, + 0x8d, 0xce, 0x69, 0x6c, 0xb8, 0xba, 0x74, 0x1e, 0x01, 0x36, 0x06, 0x75, + 0xf7, 0xdc, 0xfa, 0x71, 0x68, 0xf5, 0xf6, 0x6b, 0x6e, 0x43, 0xcc, 0x34, + 0x13, 0xfb, 0xa1, 0x13, 0x2f, 0x07, 0x3f, 0x2d, 0xfb, 0x09, 0x2c, 0xaa, + 0x75, 0x68, 0x1b, 0x40, 0xf8, 0xc1, 0xd5, 0x25, 0x25, 0xa3, 0x32, 0xb7, + 0x3b, 0xd2, 0x7b, 0x47, 0xa8, 0x40, 0x24, 0x76, 0x82, 0x39, 0x09, 0xc8, + 0x6c, 0x68, 0x21, 0x57, 0xea, 0x14, 0x1c, 0x26, 0x35, 0xd4, 0x38, 0xc3, + 0x7d, 0xc4, 0x3b, 0xb4, 0x73, 0x05, 0x17, 0x12, 0xf6, 0xe4, 0x63, 0x32, + 0xdd, 0x7d, 0xe3, 0x5f, 0x92, 0x4a, 0x63, 0x73, 0x9a, 0x1a, 0x67, 0x41, + 0xe2, 0xae, 0x63, 0x93, 0xb2, 0x06, 0x9b, 0x87, 0x2a, 0xad, 0xf5, 0x02, + 0xd7, 0x00, 0x60, 0x11, 0xdd, 0x5a, 0xa4, 0xb4, 0x55, 0x27, 0xf3, 0x40, + 0xd5, 0x25, 0x34, 0x3a, 0xeb, 0x81, 0xc7, 0x68, 0x06, 0x48, 0x73, 0x7e, + 0xf5, 0xc6, 0xd9, 0xb3, 0xf6, 0xbc, 0xd8, 0x3d, 0x9e, 0xa0, 0x2e, 0x05, + 0x75, 0x5d, 0x69, 0xdb, 0xab, 0xad, 0xc3, 0xb9, 0x1f, 0x74, 0xae, 0x47, + 0x37, 0x71, 0xea, 0x2f, 0x00, 0x7b, 0x8b, 0xc4, 0x0f, 0x3d, 0x12, 0x53, + 0xa0, 0xec, 0xab, 0x3a, 0xa6, 0x73, 0x31, 0x40, 0x0e, 0x75, 0x8f, 0x0d, + 0xdc, 0xe0, 0x4c, 0x0e, 0x03, 0x47, 0x90, 0x5e, 0x87, 0xd3, 0xbe, 0xaa, + 0x74, 0xbc, 0x7a, 0x1a, 0x2f, 0x06, 0xeb, 0x23, 0xdc, 0x0e, 0x8c, 0x9f, + 0xea, 0xae, 0x27, 0xea, 0x97, 0x4f, 0x23, 0xaf, 0x13, 0x61, 0x91, 0x8e, + 0x1c, 0xe0, 0xe1, 0xa8, 0x30, 0x76, 0xc8, 0x2b, 0xb7, 0xb7, 0xeb, 0x16, + 0x2b, 0x2f, 0x18, 0xd8, 0xed, 0x37, 0xd9, 0x21, 0xae, 0xdb, 0x3e, 0xd2, + 0x7c, 0x74, 0x49, 0x4c, 0x3a, 0xb7, 0xd5, 0xde, 0x9b, 0x76, 0x33, 0x8e, + 0x2d, 0x4d, 0xa2, 0xf6, 0x8f, 0x63, 0x98, 0x20, 0x18, 0xec, 0x57, 0x9b, + 0xf5, 0x6b, 0xac, 0x16, 0x3e, 0x87, 0xc0, 0x80, 0x1b, 0x1e, 0x24, 0x19, + 0x95, 0xe9, 0x3d, 0x47, 0xac, 0xd9, 0x87, 0x73, 0x28, 0xb3, 0x1d, 0xef, + 0xad, 0xe3, 0x71, 0x7b, 0x1a, 0x5d, 0x1f, 0xe6, 0xaf, 0x3c, 0xfa, 0xd1, + 0x8e, 0xda, 0xfa, 0x83, 0xaf, 0xac, 0xb8, 0xd5, 0x79, 0x2f, 0x60, 0x73, + 0x62, 0x01, 0x83, 0xf3, 0xe5, 0x25, 0x38, 0xa9, 0x24, 0x92, 0x4a, 0x52, + 0x49, 0x24, 0x92, 0x99, 0xd4, 0xd0, 0xfb, 0x58, 0xc3, 0xa0, 0x73, 0x80, + 0x3f, 0x32, 0xac, 0x75, 0x3b, 0x7d, 0x4c, 0xc7, 0x81, 0xf4, 0x6b, 0x86, + 0x34, 0x0f, 0x06, 0xaa, 0xa0, 0x90, 0x41, 0x1a, 0x11, 0xa8, 0x29, 0x12, + 0x5c, 0x4b, 0x89, 0x92, 0x75, 0x25, 0x25, 0x3d, 0x97, 0xd5, 0xe3, 0xfa, + 0x86, 0x3f, 0xc1, 0xda, 0xff, 0x00, 0x69, 0x68, 0xda, 0x0b, 0x5c, 0xf2, + 0x78, 0x3a, 0x4a, 0xca, 0xfa, 0xb8, 0x40, 0xc2, 0xa0, 0x93, 0x10, 0x5d, + 0xf9, 0x56, 0x95, 0xc4, 0x9b, 0x1f, 0xf8, 0x24, 0xa7, 0x3f, 0xd0, 0xb1, + 0xd9, 0xae, 0x73, 0x5b, 0x2d, 0x81, 0x04, 0x18, 0x3c, 0x2d, 0x8a, 0x3d, + 0x56, 0x08, 0x04, 0xf9, 0x87, 0x09, 0xfc, 0x90, 0xb1, 0x61, 0xe7, 0xa8, + 0x18, 0xdd, 0x10, 0x35, 0x1c, 0x0d, 0x16, 0xd5, 0x45, 0xd0, 0x06, 0xfd, + 0x7c, 0xd2, 0x52, 0x47, 0xbd, 0xe4, 0x16, 0xed, 0x06, 0x3c, 0x42, 0xce, + 0x38, 0x2c, 0xae, 0xff, 0x00, 0x5e, 0xb6, 0xed, 0x73, 0xbe, 0x94, 0x77, + 0xfb, 0xc2, 0xbb, 0x66, 0x47, 0xa4, 0x25, 0xdb, 0x88, 0xef, 0xb4, 0x6e, + 0x55, 0xea, 0xea, 0x78, 0xd7, 0x3c, 0xd6, 0x1c, 0xea, 0xdf, 0xe1, 0x63, + 0x36, 0xca, 0x4a, 0x49, 0x55, 0xef, 0xaf, 0x48, 0x03, 0xe2, 0x07, 0xe5, + 0x94, 0x4c, 0x3c, 0xc7, 0x5d, 0xd4, 0x2c, 0xa0, 0xc6, 0xd3, 0x43, 0x88, + 0xf8, 0x82, 0xa0, 0xed, 0xce, 0x13, 0x21, 0xc3, 0xe0, 0xab, 0x61, 0xb1, + 0xcd, 0xea, 0xd5, 0x3c, 0x88, 0x69, 0x05, 0xa7, 0xb7, 0x29, 0x29, 0x23, + 0x33, 0x2c, 0x90, 0x4b, 0x80, 0xed, 0x1a, 0xff, 0x00, 0x72, 0x59, 0x17, + 0xd7, 0x55, 0x6e, 0xbc, 0xb5, 0x8e, 0x70, 0x13, 0x30, 0x65, 0x4d, 0xf5, + 0x00, 0xf7, 0x82, 0xcf, 0xa2, 0xe2, 0x01, 0x0a, 0x87, 0x52, 0x75, 0x67, + 0x16, 0xc6, 0x86, 0xc1, 0x09, 0x29, 0xb7, 0x90, 0x2a, 0xf5, 0x9e, 0xdb, + 0x46, 0xed, 0x03, 0x48, 0x98, 0xd1, 0x3c, 0xb2, 0x77, 0xed, 0x6e, 0xd8, + 0x8d, 0x9d, 0x94, 0x32, 0x60, 0xbe, 0xa7, 0x80, 0x3f, 0x49, 0x53, 0x1c, + 0x7e, 0x30, 0xa1, 0xae, 0xc8, 0x81, 0x1e, 0x10, 0x92, 0x91, 0x5d, 0x84, + 0xc6, 0xc1, 0x68, 0x20, 0x11, 0xe2, 0xe3, 0xf9, 0x4a, 0x8b, 0x30, 0xda, + 0xee, 0x5a, 0xef, 0xbc, 0xff, 0x00, 0x7a, 0xbf, 0xb1, 0xff, 0x00, 0xba, + 0x9e, 0x08, 0x1a, 0x84, 0x94, 0xd2, 0xfb, 0x08, 0x31, 0xa1, 0xff, 0x00, + 0x38, 0xff, 0x00, 0x7a, 0x83, 0xf0, 0x48, 0xe3, 0xfe, 0xa9, 0xca, 0xfc, + 0x83, 0xa4, 0x9f, 0x91, 0x4b, 0xd2, 0x2e, 0x1c, 0x92, 0x12, 0x53, 0x4a, + 0xdc, 0x7a, 0x19, 0x58, 0xf6, 0x07, 0x8e, 0xe5, 0xce, 0x77, 0xf7, 0xaa, + 0xf5, 0x63, 0x54, 0xf7, 0x12, 0xd6, 0x96, 0x7c, 0x09, 0xe3, 0xef, 0x5a, + 0x56, 0x62, 0x4e, 0x93, 0x13, 0xc4, 0xa8, 0xb7, 0x1c, 0xb1, 0x25, 0x23, + 0xa7, 0xa7, 0x56, 0x48, 0x12, 0x63, 0xc3, 0x73, 0xa3, 0xf2, 0xac, 0xbe, + 0xb2, 0xca, 0x85, 0x62, 0xd6, 0x7b, 0x83, 0x5e, 0x4b, 0x80, 0xef, 0xef, + 0x01, 0xdf, 0xdc, 0xba, 0x0a, 0xe9, 0xb3, 0x63, 0xbf, 0x36, 0x44, 0x02, + 0xb2, 0x3a, 0xab, 0xa9, 0x26, 0xac, 0x7a, 0x1c, 0x3d, 0x27, 0x4d, 0x2f, + 0x7f, 0x60, 0xfe, 0x47, 0xfd, 0x24, 0x94, 0xf4, 0x9d, 0x2b, 0x09, 0xec, + 0xe9, 0xa4, 0xe1, 0x39, 0xac, 0x75, 0x87, 0x7f, 0xb9, 0xbb, 0xb4, 0x20, + 0x44, 0xc1, 0x09, 0xf1, 0x71, 0x7a, 0xa5, 0x6c, 0xba, 0xcc, 0x87, 0xb4, + 0xba, 0x09, 0xad, 0xac, 0xdc, 0x5b, 0x1f, 0xda, 0x26, 0x13, 0xe3, 0xde, + 0xf7, 0xd0, 0xc6, 0xd0, 0xed, 0xa7, 0x60, 0x69, 0x9f, 0x10, 0x21, 0x43, + 0x2a, 0xec, 0xca, 0xea, 0xdb, 0x5b, 0x6d, 0xab, 0x43, 0xbb, 0x6b, 0x98, + 0xfd, 0xde, 0x70, 0x4a, 0x4a, 0x71, 0x7a, 0xbb, 0xfa, 0xab, 0xb0, 0x72, + 0x05, 0xf5, 0x8d, 0xb0, 0xdd, 0x97, 0x48, 0x89, 0x24, 0x0d, 0xb1, 0x00, + 0xa1, 0xe3, 0xe0, 0x54, 0xda, 0x18, 0xeb, 0xcb, 0xa7, 0xd3, 0x07, 0x68, + 0x73, 0x87, 0x23, 0xc0, 0x1e, 0x65, 0x4f, 0xeb, 0x06, 0x6b, 0xc7, 0x4d, + 0x38, 0xf6, 0xce, 0xcb, 0xdc, 0xdd, 0xa5, 0xda, 0x38, 0x09, 0x0e, 0xe3, + 0xca, 0x11, 0x7a, 0x69, 0x36, 0xe1, 0x52, 0xeb, 0x3e, 0x9b, 0x26, 0x23, + 0xc3, 0xb4, 0xa4, 0xa4, 0x63, 0xa6, 0x50, 0x5a, 0x09, 0x0f, 0xd4, 0x4f, + 0xf3, 0x8f, 0xff, 0x00, 0xc9, 0x2d, 0x5a, 0xc8, 0x18, 0xe4, 0x3b, 0x40, + 0x06, 0xbf, 0x00, 0x10, 0x89, 0xf2, 0x98, 0xd7, 0x84, 0x76, 0xb4, 0x1c, + 0x72, 0x39, 0x24, 0x42, 0x4a, 0x73, 0x3a, 0xd5, 0x2d, 0x6e, 0x38, 0x2d, + 0x27, 0x70, 0x2d, 0x8f, 0x0e, 0x7c, 0x17, 0x19, 0x9a, 0xe7, 0x37, 0x3a, + 0xc7, 0x7e, 0x73, 0x5c, 0x0f, 0xcc, 0x42, 0xed, 0xba, 0xe1, 0x23, 0x18, + 0x9f, 0x36, 0x8f, 0xc5, 0x71, 0x1d, 0x40, 0xce, 0x65, 0xbf, 0x1f, 0xe0, + 0x92, 0x9f, 0x42, 0xe8, 0xd9, 0x38, 0x37, 0xb5, 0xbd, 0x43, 0x1a, 0xc6, + 0x97, 0xd8, 0xd0, 0x1f, 0x54, 0x8d, 0xd5, 0x81, 0x12, 0xc2, 0xcf, 0x23, + 0xdf, 0xba, 0xda, 0x6e, 0x55, 0x36, 0x3a, 0x69, 0xad, 0xa6, 0xe3, 0xa9, + 0x2e, 0xd0, 0x00, 0x17, 0x9b, 0x7d, 0x5a, 0xa7, 0x2a, 0x8c, 0xec, 0x7c, + 0xb2, 0x36, 0x63, 0x5c, 0xe7, 0x52, 0x1e, 0xe3, 0x01, 0xe4, 0x88, 0xf6, + 0x8e, 0xf0, 0x48, 0x5d, 0xad, 0x56, 0xe2, 0x87, 0xbb, 0x1f, 0x2d, 0xad, + 0xd7, 0x42, 0xd7, 0x77, 0x49, 0x49, 0xdf, 0xd4, 0xaf, 0xf5, 0xb7, 0x5f, + 0xf6, 0x73, 0x1a, 0x06, 0x31, 0xdb, 0x9c, 0xef, 0x81, 0xf2, 0x5c, 0x5f, + 0xd7, 0x3c, 0xfa, 0xb2, 0x72, 0xea, 0xa6, 0xbf, 0xa5, 0x50, 0x73, 0xac, + 0xf2, 0x2f, 0x88, 0x1f, 0x70, 0x95, 0xd9, 0x66, 0x64, 0x60, 0xe3, 0xd1, + 0x65, 0xed, 0xd9, 0x63, 0xa9, 0x63, 0x9c, 0xc6, 0x34, 0x6a, 0x20, 0x76, + 0x5e, 0x5f, 0x95, 0x91, 0x66, 0x56, 0x45, 0x99, 0x16, 0x7d, 0x3b, 0x1c, + 0x5c, 0x7f, 0xb9, 0x25, 0x22, 0x49, 0x24, 0xa1, 0x25, 0x29, 0x24, 0x92, + 0x49, 0x4b, 0xed, 0x20, 0x07, 0x76, 0x3c, 0x7c, 0x93, 0x24, 0x92, 0x4a, + 0x7a, 0xef, 0xab, 0xe0, 0x9c, 0x0a, 0xa3, 0xf9, 0x5a, 0x7f, 0x69, 0x69, + 0xbc, 0xfb, 0xb5, 0xef, 0xaa, 0xcb, 0xfa, 0xbc, 0xe1, 0xf6, 0x2a, 0x87, + 0xf5, 0xa7, 0xef, 0x5a, 0x6f, 0xda, 0xdb, 0x20, 0x6b, 0x3a, 0x04, 0x94, + 0xe7, 0xfa, 0x54, 0x59, 0x9b, 0x60, 0xb1, 0xa0, 0x93, 0x11, 0x33, 0x3c, + 0x2b, 0xac, 0xc2, 0xc4, 0x03, 0x5a, 0x9a, 0x7c, 0xf5, 0x51, 0xa9, 0xb5, + 0x9c, 0x87, 0x00, 0x0b, 0xac, 0x20, 0x70, 0xd9, 0xed, 0xe3, 0x21, 0x5c, + 0x74, 0x8d, 0x20, 0xb7, 0x5f, 0x09, 0xff, 0x00, 0xa9, 0x29, 0x29, 0xa3, + 0x95, 0x86, 0xc6, 0xb0, 0x9a, 0x31, 0xeb, 0xdd, 0xdb, 0x76, 0xef, 0xef, + 0x54, 0xf0, 0xf0, 0x2d, 0xb2, 0xc7, 0x1c, 0xba, 0x6b, 0x8f, 0xcd, 0xdb, + 0x21, 0x6d, 0x93, 0xed, 0xef, 0xfe, 0x6b, 0x92, 0xdb, 0x03, 0x46, 0x92, + 0x7c, 0xe0, 0x7f, 0x14, 0x94, 0xd2, 0xfb, 0x06, 0x30, 0x98, 0xa8, 0x0f, + 0x83, 0x9d, 0xfd, 0xe8, 0x34, 0x63, 0xd3, 0x56, 0x5b, 0x2c, 0x6b, 0x0c, + 0xb1, 0xc0, 0x8f, 0x73, 0xb4, 0xd5, 0x5e, 0xf4, 0xed, 0x79, 0x98, 0x20, + 0x79, 0x46, 0xbf, 0x8a, 0xaf, 0x6e, 0xec, 0x63, 0xbd, 0xf3, 0xb0, 0x73, + 0x22, 0x7f, 0xbd, 0x25, 0x26, 0xce, 0xc2, 0xa1, 0xf9, 0x76, 0xbc, 0xb4, + 0xee, 0x79, 0x92, 0x43, 0x9c, 0x39, 0xf2, 0x05, 0x66, 0x67, 0xf4, 0xea, + 0x05, 0x44, 0xb5, 0xa4, 0x3b, 0xfa, 0xc7, 0xfb, 0xd6, 0xce, 0x7b, 0x89, + 0x7d, 0x56, 0x37, 0x56, 0xd9, 0x5b, 0x5d, 0x3f, 0xea, 0x16, 0x47, 0x50, + 0xbc, 0x37, 0x6b, 0x6c, 0x0e, 0xf7, 0x9d, 0x36, 0xc1, 0xfc, 0x12, 0x53, + 0xa0, 0x70, 0x31, 0xf2, 0x71, 0xb1, 0x2c, 0xb1, 0xa4, 0xb9, 0xb5, 0x06, + 0xc8, 0x71, 0x1a, 0x0f, 0x81, 0x51, 0xfd, 0x8d, 0x87, 0xfb, 0xae, 0xff, + 0x00, 0x3d, 0xdf, 0xde, 0xac, 0x62, 0xb5, 0xee, 0xe9, 0xb8, 0xfb, 0x7e, + 0x93, 0x65, 0xa5, 0x2f, 0x4f, 0x27, 0x76, 0xdd, 0xc3, 0xf8, 0xfe, 0x54, + 0x94, 0x87, 0xd5, 0xb0, 0x8f, 0xe6, 0xec, 0xfb, 0x87, 0xf7, 0xa9, 0xb6, + 0xe2, 0x1b, 0x06, 0xa7, 0xff, 0x00, 0x9b, 0xfe, 0xd4, 0x47, 0x4b, 0x66, + 0x60, 0x27, 0xa9, 0xbe, 0xa1, 0x3e, 0x03, 0x94, 0x94, 0x82, 0x41, 0xff, + 0x00, 0x04, 0xff, 0x00, 0x8e, 0xd4, 0xa2, 0xcf, 0xcd, 0x0e, 0x1f, 0x2f, + 0xf6, 0xab, 0x0d, 0xe7, 0x5d, 0x02, 0x9b, 0xe0, 0x1d, 0x81, 0xc9, 0x29, + 0xcd, 0xba, 0xbe, 0xa1, 0x6c, 0x0a, 0xec, 0x78, 0x23, 0x40, 0x03, 0x25, + 0x5e, 0x3d, 0x23, 0xad, 0xe3, 0xd2, 0xdb, 0xac, 0x8b, 0x24, 0x7b, 0x98, + 0xd1, 0x2f, 0x13, 0xd8, 0xb4, 0x2d, 0xbe, 0x91, 0xd3, 0xa8, 0x6c, 0x67, + 0xbd, 0xbb, 0xae, 0x20, 0x8a, 0xa7, 0x86, 0x8f, 0xde, 0x8f, 0x35, 0x6e, + 0xdb, 0xcf, 0xac, 0xd6, 0xb4, 0x7d, 0x12, 0x25, 0xde, 0x65, 0x25, 0x3c, + 0x96, 0x63, 0xb3, 0xb1, 0xf1, 0xb7, 0xdb, 0x5b, 0xaa, 0x93, 0x13, 0x63, + 0x4b, 0x04, 0x78, 0x09, 0xee, 0xb3, 0xa9, 0xe8, 0x7d, 0x47, 0x37, 0x11, + 0xed, 0xdb, 0xe9, 0xb5, 0xa1, 0xd6, 0x17, 0xb8, 0x19, 0x30, 0x37, 0x40, + 0xf3, 0xd1, 0x75, 0x9f, 0x5a, 0x2c, 0xff, 0x00, 0x23, 0xbd, 0xe4, 0x4b, + 0x83, 0xeb, 0x73, 0x67, 0xf7, 0x83, 0xa4, 0x2d, 0x76, 0x65, 0x62, 0xbf, + 0xa7, 0xd7, 0x99, 0x7b, 0xdb, 0x4d, 0x57, 0x56, 0xd7, 0x17, 0x38, 0xc0, + 0x1b, 0xdb, 0x31, 0xaa, 0x4a, 0x79, 0x4c, 0x46, 0x64, 0x57, 0x45, 0x59, + 0x15, 0x19, 0xdc, 0xc6, 0xb9, 0xcd, 0x3d, 0xcc, 0x22, 0xbf, 0xab, 0x5d, + 0x60, 0xf4, 0xcd, 0x1e, 0xfe, 0xc4, 0x8f, 0xe2, 0xad, 0xd3, 0x55, 0x47, + 0x19, 0xbf, 0x67, 0xb1, 0xb7, 0x53, 0xa8, 0xae, 0xc6, 0x99, 0x04, 0x03, + 0x09, 0x86, 0x05, 0xa5, 0xe1, 0xad, 0x6c, 0xd8, 0xed, 0x07, 0x82, 0x4a, + 0x78, 0x1c, 0xbb, 0xee, 0xcf, 0xea, 0x77, 0x37, 0x24, 0xed, 0x15, 0x87, + 0x0a, 0xdb, 0x1a, 0x00, 0x0f, 0xf1, 0x5d, 0x36, 0x15, 0x95, 0xd5, 0x89, + 0x50, 0x6e, 0xe3, 0x2d, 0x07, 0x46, 0xbb, 0xbf, 0xc9, 0x5a, 0xeb, 0xbf, + 0x57, 0xb1, 0xf1, 0xf0, 0xc6, 0x4d, 0x2e, 0x0d, 0xb5, 0x8d, 0x6d, 0x37, + 0xd8, 0xee, 0xed, 0x2e, 0x9d, 0xc3, 0xcc, 0x13, 0xf7, 0x21, 0xe3, 0x52, + 0xd7, 0x31, 0x8c, 0xad, 0xc0, 0xb5, 0xad, 0x01, 0xa4, 0x1d, 0x08, 0x03, + 0xc5, 0x25, 0x2c, 0xec, 0x86, 0x6d, 0x3a, 0x3c, 0x9f, 0x26, 0x3b, 0xfb, + 0x95, 0xda, 0x8f, 0xe8, 0xc7, 0x89, 0x02, 0x09, 0x54, 0xed, 0x86, 0x7b, + 0x41, 0xfb, 0xb5, 0x56, 0x99, 0x24, 0x34, 0xf6, 0x11, 0xa7, 0xc9, 0x25, + 0x34, 0x3a, 0xcb, 0x5f, 0x6b, 0x4d, 0x75, 0xb4, 0xbd, 0xe4, 0x86, 0xb5, + 0x8d, 0x12, 0x49, 0x27, 0xb2, 0xa3, 0x8d, 0xf5, 0x17, 0x23, 0x2b, 0x25, + 0xd7, 0x75, 0x1b, 0xbe, 0xcd, 0x59, 0x20, 0xec, 0x60, 0xde, 0xf2, 0x3c, + 0xdd, 0xf4, 0x5b, 0xf8, 0xae, 0xab, 0xa6, 0x52, 0xc7, 0x3a, 0xdc, 0x87, + 0x09, 0x20, 0x86, 0xb7, 0xcb, 0x49, 0x2a, 0xcd, 0xee, 0x60, 0x73, 0x20, + 0x91, 0x3a, 0x0e, 0xe0, 0x88, 0x49, 0x4e, 0x01, 0xc0, 0xb7, 0x0d, 0xe3, + 0x12, 0xf7, 0xb6, 0xfc, 0x2a, 0x61, 0x98, 0xae, 0x21, 0xa1, 0xf8, 0xe4, + 0x90, 0xe6, 0xee, 0x0d, 0x89, 0x1a, 0x72, 0xa7, 0x94, 0x1b, 0x63, 0x5c, + 0xcb, 0xd9, 0xee, 0x6f, 0x88, 0xd4, 0x7c, 0x0a, 0xd1, 0x2c, 0xa4, 0x17, + 0xba, 0xc6, 0xb5, 0xee, 0xfa, 0x05, 0xf1, 0xa9, 0x61, 0xd2, 0x0a, 0xcb, + 0x19, 0x2f, 0xa7, 0x24, 0xd1, 0x90, 0x7d, 0x5c, 0x70, 0x45, 0x6d, 0xb0, + 0xea, 0x5b, 0x3c, 0x07, 0x79, 0x78, 0x14, 0x94, 0xc6, 0x9c, 0x6a, 0xdd, + 0x8c, 0xfa, 0xeb, 0x91, 0xbd, 0xa4, 0x6e, 0xee, 0x34, 0xe5, 0x52, 0xbf, + 0xea, 0x93, 0x7a, 0x8e, 0x25, 0x56, 0xb4, 0x8c, 0x7c, 0xed, 0x92, 0xe3, + 0x1e, 0xcb, 0x08, 0xd3, 0xdd, 0x1f, 0x95, 0x75, 0x0e, 0x6e, 0x2d, 0x35, + 0x03, 0x63, 0x9b, 0x5d, 0x2d, 0xfa, 0x44, 0xf7, 0xf2, 0xf9, 0xaa, 0x59, + 0x99, 0x2f, 0xce, 0x61, 0x66, 0x1b, 0xad, 0xc2, 0xda, 0x76, 0xb2, 0xd2, + 0xd0, 0x09, 0x1d, 0xc8, 0x06, 0x60, 0x24, 0xa7, 0xce, 0xf3, 0x3a, 0x1f, + 0x56, 0xc2, 0xdc, 0x72, 0x31, 0x6c, 0x6b, 0x1b, 0xcd, 0x81, 0xbb, 0x99, + 0xfe, 0x7b, 0x64, 0x2a, 0x5d, 0xe0, 0x2f, 0x4e, 0xc7, 0xa7, 0xa9, 0xd0, + 0x1a, 0xe1, 0x9e, 0xfb, 0x48, 0x12, 0xe6, 0xbd, 0x8c, 0x21, 0xf1, 0xc8, + 0x30, 0x27, 0x55, 0xcb, 0xfd, 0x6e, 0xc1, 0xc5, 0xf5, 0x5b, 0x9f, 0x89, + 0x58, 0xa7, 0x7b, 0x83, 0x6f, 0x63, 0x7e, 0x8e, 0xe3, 0xa8, 0x77, 0x97, + 0x9a, 0x4a, 0x79, 0xf6, 0xd2, 0xc8, 0xd4, 0x8f, 0xbd, 0x3f, 0xa5, 0x5f, + 0x8b, 0x7e, 0xf4, 0xe6, 0xb0, 0x09, 0x0a, 0x25, 0x9a, 0x24, 0xa5, 0x8d, + 0x6d, 0x8e, 0x47, 0xde, 0x14, 0x1d, 0x5c, 0x70, 0x41, 0xf9, 0xa2, 0x6c, + 0x11, 0xc9, 0x51, 0x2d, 0x1e, 0x69, 0x29, 0xe9, 0xfa, 0x08, 0x23, 0x09, + 0x9d, 0xc0, 0x9f, 0xca, 0xb4, 0xcd, 0x60, 0xd8, 0xd7, 0x13, 0xa8, 0x95, + 0x9d, 0xf5, 0x7c, 0x01, 0x89, 0x5c, 0xf8, 0x3b, 0xf2, 0xad, 0x39, 0x9b, + 0x07, 0x6f, 0x00, 0x92, 0x90, 0x56, 0x6c, 0xaf, 0x35, 0xce, 0x63, 0x5e, + 0x5b, 0xb4, 0x7d, 0x16, 0x97, 0x6b, 0xa7, 0x82, 0xb3, 0xea, 0x37, 0x53, + 0xe9, 0x5c, 0xe7, 0x13, 0xa3, 0xb6, 0xb8, 0x11, 0xe4, 0x98, 0x5e, 0x28, + 0x73, 0xdc, 0x44, 0xbb, 0xb0, 0x9e, 0x56, 0x66, 0x65, 0x99, 0x39, 0x19, + 0x0d, 0xb0, 0xda, 0xe6, 0x39, 0xbc, 0x35, 0xa4, 0xed, 0x01, 0x25, 0x3a, + 0x87, 0x39, 0xed, 0x66, 0xd1, 0x55, 0xa4, 0xf6, 0xfd, 0x11, 0x9f, 0xca, + 0x81, 0x56, 0x7e, 0x59, 0x73, 0xbd, 0x6a, 0xec, 0x2d, 0xfc, 0xd2, 0x2a, + 0xec, 0x83, 0x5e, 0x4b, 0xeb, 0xd5, 0xc4, 0xbc, 0x8e, 0x67, 0x9f, 0x92, + 0x26, 0x13, 0x9c, 0xfb, 0x5c, 0xff, 0x00, 0x54, 0xbe, 0xb7, 0xea, 0xd1, + 0xd8, 0x24, 0xa6, 0x6d, 0xea, 0x76, 0x6b, 0x15, 0xda, 0x08, 0xd0, 0xfe, + 0x8b, 0xb7, 0xde, 0x81, 0x7e, 0x50, 0xb4, 0x8f, 0x59, 0x97, 0xbb, 0xf9, + 0x25, 0xb0, 0x3e, 0xe0, 0xaf, 0x16, 0x8d, 0xfb, 0xc7, 0xc3, 0xe2, 0x99, + 0xfb, 0x48, 0x26, 0x24, 0x04, 0x94, 0xbe, 0x56, 0x43, 0x46, 0x06, 0x25, + 0xcd, 0x6b, 0xe0, 0x82, 0xc2, 0xd6, 0xb6, 0x5c, 0x23, 0xcb, 0xb2, 0xcb, + 0xbb, 0x32, 0x86, 0x9d, 0x28, 0xb3, 0xd4, 0xfd, 0xfb, 0x1a, 0x64, 0x7e, + 0x55, 0xac, 0xe0, 0x1d, 0xd3, 0x9c, 0x22, 0x7d, 0x2b, 0x26, 0x3c, 0x9c, + 0xb3, 0xde, 0x4b, 0xa4, 0x06, 0xf9, 0x72, 0x42, 0x4a, 0x6d, 0xe2, 0x65, + 0xef, 0xe9, 0x16, 0x5a, 0x03, 0x9d, 0xe9, 0xbe, 0x36, 0xb4, 0x41, 0x3f, + 0x04, 0x1f, 0xda, 0x15, 0x6c, 0xfa, 0x39, 0x1b, 0xe3, 0xc3, 0xbf, 0xde, + 0x8f, 0xd3, 0x3f, 0xa1, 0x64, 0xb1, 0xc0, 0x43, 0x61, 0xc4, 0x7c, 0x90, + 0xbd, 0x6a, 0xf9, 0x86, 0xc7, 0x82, 0x4a, 0x6d, 0xef, 0xdc, 0x49, 0x20, + 0xc7, 0xf1, 0x53, 0x6b, 0x83, 0x5d, 0xed, 0xe0, 0xf2, 0x4f, 0x0b, 0x3d, + 0xdf, 0x6c, 0x65, 0x7b, 0xcd, 0xa0, 0xf0, 0x20, 0x55, 0x3c, 0xe9, 0xe2, + 0xa5, 0x19, 0xed, 0x1e, 0xeb, 0x20, 0x72, 0x4f, 0xa3, 0xa7, 0xe5, 0x49, + 0x4e, 0x83, 0x9e, 0x03, 0xa4, 0x08, 0xf1, 0x46, 0xa5, 0x9f, 0x68, 0xb5, + 0x8d, 0x63, 0x84, 0x13, 0xee, 0x8e, 0xc3, 0xb9, 0x59, 0x42, 0xbc, 0xa2, + 0xdd, 0xdf, 0x68, 0x6f, 0xc3, 0xd3, 0x1f, 0xf9, 0x25, 0x36, 0x8c, 0x97, + 0x51, 0x76, 0xfc, 0xb3, 0x8e, 0xd1, 0x1f, 0xa5, 0x63, 0x36, 0x99, 0x3d, + 0xb9, 0x29, 0x29, 0xea, 0x99, 0x95, 0x8e, 0xfb, 0x7e, 0xcb, 0x5b, 0xc0, + 0x75, 0x60, 0x4b, 0x01, 0xe1, 0xbd, 0x87, 0xcd, 0x57, 0xb5, 0xff, 0x00, + 0xac, 0xd0, 0xce, 0xee, 0x2f, 0xb0, 0xfc, 0x84, 0x05, 0xcd, 0x60, 0xdb, + 0x82, 0x6e, 0xa9, 0xcc, 0x87, 0xe7, 0x62, 0x07, 0x35, 0x97, 0x02, 0x41, + 0xb0, 0x38, 0x7d, 0x23, 0xe2, 0x7e, 0x2a, 0xef, 0xd5, 0xee, 0xa9, 0x77, + 0x54, 0xce, 0x7f, 0xda, 0x69, 0x75, 0x57, 0xe3, 0x34, 0xb1, 0xcd, 0x8f, + 0x68, 0xf1, 0xf9, 0xa4, 0xa6, 0xdf, 0xd6, 0x9b, 0x5a, 0x3a, 0x57, 0xa4, + 0x4f, 0xba, 0xc7, 0x02, 0x07, 0x8e, 0xc1, 0xaa, 0x87, 0x47, 0xc0, 0x77, + 0x51, 0xe9, 0x18, 0x9f, 0x6a, 0xb0, 0xbe, 0xac, 0x62, 0xe1, 0x5b, 0x0f, + 0x10, 0x38, 0x9f, 0x18, 0x44, 0xeb, 0xed, 0x76, 0x46, 0x35, 0x55, 0x57, + 0x4f, 0xad, 0x66, 0xf8, 0x60, 0x98, 0x32, 0xf0, 0x7c, 0xc6, 0x8a, 0xd7, + 0x41, 0x65, 0xf4, 0xe0, 0x3e, 0xab, 0xeb, 0xf4, 0x76, 0xbd, 0xc0, 0x32, + 0x41, 0x8e, 0xdc, 0x84, 0x94, 0xce, 0xac, 0x4b, 0x28, 0xac, 0x57, 0x5e, + 0xd3, 0x40, 0xd6, 0xb0, 0x46, 0xac, 0x9d, 0x48, 0xd3, 0xb4, 0xa8, 0xb2, + 0xde, 0xa5, 0x8d, 0x60, 0xb8, 0x86, 0xdd, 0x43, 0xa1, 0xaf, 0xa9, 0x8d, + 0xf7, 0xb2, 0x7f, 0x39, 0xa7, 0xbc, 0x78, 0x2b, 0xef, 0xd1, 0xa4, 0xd6, + 0xef, 0x70, 0xfc, 0xd3, 0xdd, 0x56, 0xce, 0xcb, 0xab, 0x03, 0x13, 0xd7, + 0xb8, 0xc3, 0x5a, 0x09, 0xdb, 0x3c, 0x9e, 0x04, 0xa4, 0xa7, 0x37, 0xeb, + 0x4f, 0x52, 0xa5, 0xbd, 0x21, 0xd4, 0x54, 0xf6, 0x59, 0x66, 0x51, 0x0c, + 0x6b, 0x5a, 0x64, 0x80, 0x0e, 0xe7, 0x13, 0xe0, 0xab, 0xfd, 0x59, 0xe8, + 0xf4, 0x9c, 0x17, 0x5d, 0x92, 0xd2, 0x45, 0xba, 0x56, 0x24, 0x82, 0x00, + 0xfc, 0xef, 0xbd, 0x63, 0x61, 0xe2, 0x59, 0xd5, 0x3a, 0xa0, 0x73, 0xb5, + 0x6d, 0xae, 0x2e, 0x7b, 0x80, 0x8d, 0x39, 0x71, 0x5d, 0xb5, 0xce, 0x6e, + 0x2e, 0x38, 0x63, 0x00, 0x6b, 0x5b, 0xb5, 0x8c, 0x68, 0xff, 0x00, 0x34, + 0x24, 0xa7, 0x37, 0x33, 0xa5, 0xd1, 0x56, 0x3b, 0xae, 0xa6, 0xc2, 0xd7, + 0xb4, 0x10, 0x1a, 0xf8, 0x3b, 0xf4, 0xe0, 0x70, 0xa9, 0xb5, 0xc4, 0x30, + 0x38, 0x6b, 0xa0, 0xd3, 0xc5, 0x69, 0xf5, 0x6b, 0x2a, 0x0d, 0xac, 0x38, + 0x4e, 0xd7, 0x02, 0x7e, 0x61, 0x62, 0x3b, 0xa8, 0x53, 0x82, 0x58, 0x5f, + 0xef, 0xbe, 0x41, 0xaa, 0x96, 0xfb, 0x9e, 0xef, 0x0f, 0x6f, 0xf0, 0x49, + 0x4f, 0x4d, 0x55, 0x6c, 0xc5, 0xa0, 0x31, 0xde, 0xdd, 0x03, 0x9c, 0x4e, + 0x9a, 0x9e, 0x55, 0x1c, 0xcc, 0x47, 0xe4, 0x5d, 0x45, 0xcc, 0x2e, 0x0c, + 0x69, 0x2e, 0x21, 0xa7, 0xc0, 0x1e, 0xde, 0x05, 0x73, 0x5d, 0x4b, 0xa9, + 0xf5, 0x77, 0x3b, 0x19, 0xf9, 0x20, 0x63, 0xd7, 0x98, 0xf2, 0xd6, 0x17, + 0x9d, 0xcf, 0x68, 0xfd, 0xe2, 0xc1, 0x11, 0xf7, 0xaa, 0xb8, 0xce, 0xea, + 0xde, 0xbb, 0x86, 0x2e, 0x68, 0x75, 0xf3, 0xfa, 0x3a, 0xc8, 0x2c, 0xdd, + 0xac, 0x1d, 0xd3, 0xed, 0x10, 0x92, 0x9e, 0xba, 0xe0, 0xd1, 0x5e, 0xe3, + 0xa1, 0xdc, 0x24, 0x4f, 0x75, 0x54, 0x63, 0xd6, 0xf0, 0xf7, 0x3b, 0x51, + 0x1e, 0xe6, 0xc4, 0xcc, 0x76, 0x28, 0x75, 0x9c, 0xce, 0x32, 0xae, 0xaa, + 0xeb, 0x21, 0xa1, 0xc2, 0xb1, 0x02, 0x62, 0x4f, 0x7f, 0x14, 0x77, 0xb4, + 0xb5, 0xae, 0x30, 0x4b, 0x9b, 0x0e, 0x23, 0xf2, 0xa4, 0xa6, 0x57, 0xd2, + 0xed, 0xcd, 0x78, 0x02, 0xd6, 0x81, 0xa3, 0x49, 0xfe, 0x6c, 0x7f, 0x25, + 0x3f, 0xa8, 0xc0, 0x25, 0xcd, 0x20, 0xf7, 0x05, 0x0e, 0xf0, 0xda, 0xe7, + 0x93, 0xbf, 0x53, 0x3c, 0x14, 0xa9, 0x6b, 0xac, 0x2e, 0x71, 0x88, 0x1c, + 0x42, 0x4a, 0x57, 0xda, 0x1a, 0x25, 0xec, 0x3f, 0xcd, 0x83, 0xe3, 0xdb, + 0xb2, 0xc3, 0xfa, 0xc5, 0x49, 0xbf, 0x0f, 0x3b, 0x68, 0x91, 0x8f, 0x55, + 0x0f, 0x76, 0x9f, 0x9e, 0xe7, 0xeb, 0xf7, 0x05, 0xa9, 0x96, 0xc6, 0x55, + 0x8a, 0xfd, 0xe7, 0xd8, 0xe2, 0xd6, 0xbc, 0x91, 0x1c, 0xb8, 0x21, 0x55, + 0x50, 0xcb, 0xc2, 0xea, 0xcd, 0xff, 0x00, 0x4e, 0xd7, 0x31, 0xa0, 0x7f, + 0x21, 0x9e, 0xd4, 0x94, 0xf0, 0x4c, 0x32, 0xc6, 0x9e, 0x74, 0x48, 0x8d, + 0x27, 0x45, 0x1a, 0xbf, 0x9b, 0x1f, 0x3f, 0xca, 0xa4, 0x4c, 0x76, 0x99, + 0xf0, 0x49, 0x4b, 0x6d, 0x1d, 0xdc, 0x3e, 0xf5, 0x07, 0x34, 0x78, 0xfe, + 0x2a, 0x73, 0xe4, 0x7f, 0x05, 0x03, 0x13, 0xa8, 0x23, 0xee, 0x49, 0x4f, + 0x51, 0xf5, 0x7d, 0xa1, 0xd8, 0x95, 0x83, 0x1c, 0x1d, 0x7b, 0x7d, 0x25, + 0xa6, 0xf1, 0xb1, 0xdb, 0x86, 0xb1, 0xc9, 0x59, 0xbf, 0x57, 0x84, 0xe1, + 0xb3, 0xe0, 0xe3, 0xff, 0x00, 0x49, 0x1b, 0xab, 0xe4, 0x3a, 0x8c, 0x4b, + 0x1c, 0xce, 0x62, 0x27, 0xb0, 0x94, 0x94, 0xd4, 0xb7, 0xa9, 0x07, 0xe5, + 0x6d, 0xad, 0xbb, 0xde, 0xe3, 0xb2, 0xb6, 0xf9, 0xa9, 0x64, 0x5d, 0x55, + 0x4e, 0x15, 0xb9, 0xfe, 0xf6, 0x9f, 0x7f, 0xf5, 0xbb, 0x85, 0x4b, 0xea, + 0xc6, 0x3d, 0xb9, 0x5d, 0x44, 0x58, 0x1a, 0x6c, 0x75, 0x4c, 0x75, 0xb1, + 0xe6, 0x3e, 0x8f, 0xfd, 0x25, 0xa1, 0x4f, 0xd5, 0xc7, 0x66, 0xdb, 0x70, + 0x7b, 0x2f, 0xaa, 0xc8, 0x24, 0x3d, 0xc3, 0x68, 0xdd, 0x1a, 0xe8, 0x79, + 0x92, 0x92, 0x9a, 0xef, 0xcb, 0xa8, 0x0d, 0xed, 0x33, 0x1a, 0xc7, 0x90, + 0x4b, 0x0f, 0x34, 0x55, 0x9a, 0x2b, 0x9f, 0xd1, 0x5d, 0xc7, 0x80, 0x2e, + 0xff, 0x00, 0x6a, 0xcb, 0x1d, 0x2b, 0xaa, 0x8c, 0x81, 0x40, 0xa9, 0xee, + 0x97, 0x41, 0x70, 0x69, 0xdb, 0xf1, 0x95, 0x5c, 0x1b, 0xea, 0xc9, 0x6d, + 0x2f, 0xfe, 0x72, 0xb7, 0x16, 0x47, 0x9c, 0xff, 0x00, 0x7a, 0x4a, 0x7b, + 0x47, 0x48, 0x28, 0x42, 0xcb, 0x35, 0x6b, 0x80, 0xf9, 0x29, 0xb1, 0xd6, + 0xfd, 0x9d, 0x9e, 0xa3, 0xb7, 0x59, 0x12, 0xe7, 0x10, 0x1a, 0x75, 0xf2, + 0x0a, 0xb6, 0xfb, 0x0b, 0xcb, 0x43, 0xbb, 0x83, 0xaf, 0xc0, 0xa4, 0xa7, + 0x4b, 0x15, 0xdb, 0xf1, 0x32, 0xab, 0xee, 0x1a, 0x1c, 0x07, 0xc1, 0x66, + 0x39, 0xc4, 0xf7, 0x85, 0x73, 0xa3, 0x39, 0xff, 0x00, 0x6a, 0xb6, 0x9b, + 0x1d, 0xb8, 0xbe, 0xb7, 0x0d, 0x7b, 0x9f, 0x15, 0x99, 0x71, 0x7b, 0x2c, + 0x02, 0x63, 0xdd, 0x04, 0x24, 0xa7, 0x5b, 0xa4, 0xc1, 0x19, 0x0c, 0xfd, + 0xe6, 0x7f, 0xb1, 0x56, 0xd3, 0x88, 0x56, 0x7a, 0x41, 0x1f, 0x6d, 0x35, + 0x9e, 0x1e, 0xc3, 0xfc, 0x0a, 0x8e, 0xcf, 0xd6, 0x3d, 0x1d, 0x3e, 0x9e, + 0xd9, 0x8f, 0x34, 0x94, 0xc9, 0x97, 0x3f, 0x61, 0x0e, 0x74, 0x00, 0x9a, + 0xcc, 0x87, 0x1a, 0x9e, 0xd9, 0x9f, 0x69, 0xfc, 0x8a, 0xb9, 0x71, 0x70, + 0xd7, 0x40, 0x78, 0xf8, 0xa9, 0xd8, 0x65, 0x86, 0x47, 0xe6, 0x9f, 0xc8, + 0x92, 0x92, 0xb5, 0xa4, 0x0d, 0x39, 0x27, 0x8f, 0x8a, 0xb1, 0x96, 0xea, + 0xf1, 0x71, 0x7d, 0x26, 0xba, 0x5e, 0x04, 0xbd, 0xdf, 0xca, 0x43, 0x2d, + 0x76, 0xe2, 0x47, 0x00, 0xac, 0xbe, 0xad, 0x95, 0x0d, 0x35, 0x8e, 0x5c, + 0x92, 0x9a, 0xb4, 0xdd, 0x43, 0x9e, 0x5f, 0x93, 0x53, 0xdc, 0xe7, 0x9d, + 0xb5, 0x3f, 0x1e, 0x03, 0x98, 0xef, 0x1d, 0xae, 0xfa, 0x5f, 0x7a, 0xd9, + 0xe9, 0xdd, 0x4e, 0xdc, 0x4c, 0xb0, 0x32, 0x9b, 0xef, 0x20, 0xb0, 0x59, + 0xc3, 0x6c, 0x1f, 0x90, 0x3b, 0x45, 0x99, 0xd2, 0xb1, 0xa4, 0x8c, 0x87, + 0x70, 0xd1, 0x0c, 0xf8, 0x9e, 0x4a, 0xde, 0xc3, 0xc5, 0xc7, 0xc8, 0xa7, + 0x25, 0x99, 0x20, 0x3a, 0x97, 0x34, 0x17, 0x03, 0xa1, 0x1b, 0x24, 0xee, + 0x1e, 0x04, 0x78, 0xa4, 0xa7, 0x3f, 0xeb, 0x77, 0x50, 0xf5, 0xac, 0xc3, + 0xc7, 0xa6, 0xc3, 0xb5, 0x8d, 0xde, 0xed, 0xa6, 0x3d, 0xce, 0x3a, 0x4f, + 0x81, 0x10, 0xb1, 0xaa, 0xc9, 0xc9, 0xa0, 0x93, 0x45, 0xcf, 0xad, 0xc4, + 0xcc, 0xb1, 0xe4, 0x12, 0x7c, 0xfc, 0x51, 0x1b, 0x9b, 0x89, 0x7b, 0xdd, + 0x8f, 0x97, 0xb8, 0xd6, 0xc2, 0x45, 0x19, 0x27, 0xe9, 0x35, 0xa7, 0xe8, + 0xef, 0x53, 0xbf, 0x02, 0xea, 0xd8, 0x1e, 0xc6, 0x7a, 0xec, 0xe4, 0x5b, + 0x59, 0x90, 0x47, 0xc0, 0x4c, 0x24, 0xa6, 0xd3, 0x3e, 0xb1, 0xf5, 0xba, + 0xf1, 0xff, 0x00, 0xa5, 0x39, 0xde, 0xf8, 0x05, 0xed, 0x6b, 0x8c, 0x47, + 0x1c, 0x28, 0xd9, 0xf5, 0x8b, 0xac, 0xd8, 0x76, 0x59, 0x7b, 0x5d, 0x3c, + 0xb1, 0xcc, 0x69, 0x69, 0x1e, 0x0e, 0x1b, 0x55, 0x07, 0x5d, 0x58, 0x60, + 0xac, 0x34, 0xb4, 0xcc, 0xf3, 0xac, 0xc4, 0x78, 0x28, 0x3a, 0xab, 0x68, + 0xb4, 0xd5, 0x6b, 0x5c, 0xcb, 0x34, 0x25, 0xaf, 0x10, 0xed, 0x44, 0xa4, + 0xa7, 0xa7, 0xfa, 0xaa, 0xfa, 0xee, 0xdf, 0x77, 0xa7, 0xb3, 0x21, 0x96, + 0x38, 0x3d, 0xcd, 0x24, 0x56, 0xd6, 0x11, 0xfb, 0x8b, 0x40, 0xe6, 0x7d, + 0xaf, 0x25, 0xd7, 0x3c, 0xed, 0xa6, 0xb2, 0x76, 0x0f, 0x21, 0xdf, 0xe2, + 0x57, 0x31, 0xd1, 0x73, 0x72, 0x5b, 0x5e, 0x7e, 0x36, 0x2b, 0x66, 0xeb, + 0x98, 0x0b, 0x1d, 0x1a, 0x34, 0xea, 0x0e, 0xaa, 0xcd, 0xf9, 0xf7, 0x43, + 0x7a, 0x6f, 0x4f, 0x1e, 0xbe, 0x73, 0xf9, 0x0c, 0xd5, 0xac, 0xf1, 0x32, + 0x78, 0x8f, 0x14, 0x94, 0xcf, 0xaf, 0xfd, 0x62, 0xf4, 0x89, 0xae, 0xb2, + 0x1f, 0x92, 0x60, 0xb4, 0x34, 0x68, 0xcd, 0x3f, 0x3b, 0xcd, 0x5e, 0xe8, + 0xfd, 0x34, 0x61, 0xe2, 0x55, 0xd4, 0x03, 0xc5, 0xd9, 0xd9, 0x20, 0x3d, + 0xf9, 0x0f, 0x1c, 0x34, 0xf0, 0xc6, 0x03, 0xc0, 0xf1, 0x3d, 0xd6, 0x20, + 0xfa, 0xbf, 0x65, 0x38, 0xb9, 0x62, 0xe7, 0x0b, 0x72, 0xdc, 0x04, 0xbd, + 0xba, 0x8d, 0x0e, 0xe2, 0x1b, 0x2b, 0x6b, 0x07, 0x2c, 0x55, 0xd2, 0x28, + 0x6d, 0x9a, 0x1a, 0x4e, 0xcf, 0x70, 0x31, 0x1c, 0x8f, 0xca, 0x92, 0x9c, + 0x5f, 0xad, 0x77, 0x5f, 0x94, 0x2a, 0x7f, 0xa6, 0x6b, 0xf4, 0xe5, 0xad, + 0x00, 0xcc, 0x99, 0xdd, 0xb9, 0xbd, 0xd5, 0x5e, 0x98, 0xcc, 0x8c, 0xeb, + 0x00, 0xb2, 0xe7, 0x54, 0xf8, 0x01, 0xce, 0x6f, 0xd2, 0x70, 0xf1, 0x3e, + 0x6a, 0xdf, 0x5b, 0xca, 0xc7, 0xb1, 0xa4, 0xd6, 0x6a, 0x19, 0x73, 0xfa, + 0x36, 0x57, 0xef, 0x71, 0x07, 0x92, 0x4f, 0xe6, 0xc0, 0x58, 0x9d, 0x2e, + 0xfc, 0xba, 0xb2, 0x1a, 0xea, 0xde, 0x6b, 0x60, 0x77, 0xb8, 0x44, 0xb6, + 0x26, 0x48, 0x49, 0x4f, 0x75, 0x8b, 0xd3, 0xb1, 0xb1, 0x00, 0xd8, 0xe7, + 0x39, 0xee, 0x1a, 0xbd, 0xc6, 0x49, 0x56, 0x2c, 0xb0, 0x97, 0x90, 0x0c, + 0xb5, 0xde, 0xd3, 0x1d, 0xbe, 0x28, 0x38, 0x6e, 0x17, 0xd2, 0xdb, 0x1b, + 0x13, 0xf1, 0x95, 0x0c, 0x8c, 0xba, 0xf0, 0x68, 0x7d, 0x97, 0xeb, 0x2e, + 0xd0, 0x37, 0x97, 0x3b, 0xb0, 0x09, 0x29, 0x3d, 0xc3, 0xd7, 0xae, 0xb7, + 0xc9, 0x25, 0xa3, 0x8f, 0x11, 0xc1, 0x9f, 0x84, 0x27, 0x65, 0x82, 0xb6, + 0x92, 0xc6, 0x4c, 0x72, 0x1b, 0xaa, 0xa9, 0x83, 0x7d, 0xb9, 0x4c, 0x7d, + 0xa1, 0x84, 0x1e, 0xc2, 0x41, 0xdb, 0x3d, 0xa4, 0x2b, 0x53, 0x63, 0x5a, + 0xd7, 0x34, 0x12, 0x1c, 0x26, 0x23, 0x83, 0xdd, 0x25, 0x35, 0xba, 0x93, + 0xeb, 0xc8, 0xc1, 0x73, 0x58, 0x64, 0xee, 0x6b, 0xcc, 0x7f, 0x24, 0x83, + 0x09, 0xfa, 0x31, 0x63, 0x31, 0x06, 0xed, 0x4d, 0x8f, 0x26, 0x3e, 0x70, + 0xa1, 0x9f, 0x8a, 0x6d, 0xc7, 0xbd, 0xd5, 0x4b, 0x1c, 0x2b, 0x73, 0x8e, + 0xd1, 0x12, 0x40, 0x9e, 0x50, 0xba, 0x40, 0x75, 0xd4, 0x31, 0xc1, 0xa7, + 0xd3, 0x10, 0x18, 0xd0, 0x60, 0xfc, 0x4a, 0x4a, 0x78, 0xac, 0xaa, 0x1d, + 0x8d, 0x93, 0x76, 0x39, 0x10, 0x6b, 0xb1, 0xed, 0xfb, 0x9c, 0x42, 0x11, + 0xec, 0xb6, 0xfe, 0xb5, 0xe3, 0x7a, 0x3d, 0x50, 0xda, 0x07, 0xb7, 0x25, + 0xbe, 0xa7, 0xf6, 0xa7, 0x6b, 0xbf, 0x22, 0xc4, 0x8d, 0x42, 0x4a, 0x58, + 0xa8, 0x95, 0x30, 0x09, 0xd0, 0x28, 0x96, 0x99, 0x88, 0x49, 0x4f, 0x51, + 0xf5, 0x78, 0x4e, 0x23, 0x3c, 0x48, 0x31, 0xfe, 0x72, 0xb5, 0x9b, 0x8c, + 0x32, 0x2a, 0xb6, 0x99, 0xda, 0x2d, 0x6c, 0x4c, 0x4c, 0x2a, 0xfd, 0x04, + 0x1f, 0xb0, 0xd7, 0xa7, 0x67, 0x71, 0xfd, 0x65, 0xa5, 0x63, 0x5a, 0x1c, + 0x09, 0x70, 0x81, 0xcb, 0x8c, 0x01, 0xaf, 0x8a, 0x4a, 0x73, 0x7e, 0xa8, + 0xb1, 0xfd, 0x3b, 0xa9, 0xe5, 0xd3, 0x70, 0xf7, 0x6d, 0x6e, 0xcf, 0xe5, + 0x34, 0x1e, 0x42, 0xea, 0x2f, 0xea, 0x02, 0xb1, 0xb9, 0x8e, 0xa9, 0x8e, + 0x33, 0xb9, 0x8f, 0xdc, 0x23, 0xfc, 0xd0, 0xb3, 0x9f, 0xd3, 0xb2, 0xeb, + 0x76, 0xf2, 0xc2, 0x41, 0x32, 0x2c, 0x66, 0xb0, 0x23, 0xc9, 0x0a, 0xee, + 0xa7, 0x75, 0x55, 0x86, 0x5d, 0x8a, 0x32, 0x1a, 0xdd, 0x03, 0x9a, 0x52, + 0x53, 0xa0, 0xdc, 0xea, 0x5d, 0x4c, 0x82, 0xcb, 0x08, 0xfa, 0x65, 0x9d, + 0x8f, 0xce, 0x17, 0x19, 0xd3, 0x70, 0x2c, 0xcb, 0xcf, 0xbf, 0xa8, 0xdc, + 0xd8, 0xa1, 0xaf, 0x71, 0xac, 0x9f, 0xce, 0x79, 0x3a, 0x47, 0x90, 0x5d, + 0x05, 0x56, 0x66, 0xe6, 0xbd, 0x8e, 0xf4, 0x43, 0x2a, 0x2e, 0x0c, 0x6b, + 0x66, 0x40, 0x9f, 0xdf, 0x52, 0xc8, 0xaa, 0xff, 0x00, 0xda, 0x23, 0x1a, + 0xaf, 0x7d, 0x15, 0x33, 0x7b, 0xc8, 0xd3, 0x71, 0xfa, 0x20, 0x34, 0x78, + 0x24, 0xa4, 0x6f, 0x27, 0x60, 0xd3, 0x95, 0x59, 0xad, 0x22, 0xf2, 0x08, + 0x8e, 0x26, 0x7e, 0x6b, 0x52, 0x97, 0xd7, 0x5b, 0xed, 0xab, 0x22, 0x90, + 0xdb, 0xa9, 0x6e, 0xfa, 0x9c, 0x09, 0x2d, 0x7b, 0x49, 0xd1, 0xde, 0xee, + 0xe3, 0x49, 0x0b, 0x3b, 0x73, 0xbd, 0x7d, 0xee, 0xd4, 0x93, 0x27, 0xee, + 0x25, 0x25, 0x33, 0xc1, 0x21, 0x9d, 0x51, 0x8f, 0xec, 0x20, 0x1f, 0xed, + 0x68, 0xab, 0x75, 0x3a, 0xf6, 0x65, 0xd8, 0xd8, 0xe2, 0xcf, 0xcb, 0xaa, + 0x2d, 0x4f, 0x06, 0xcf, 0x55, 0xbc, 0x7b, 0x5d, 0xfc, 0x51, 0x3a, 0xdb, + 0x07, 0xda, 0x4b, 0xe7, 0xe9, 0x86, 0xbb, 0xf0, 0x49, 0x4a, 0xe9, 0xee, + 0xdb, 0xd4, 0x6b, 0xed, 0x20, 0xb7, 0xf0, 0x56, 0xb6, 0x1f, 0xda, 0x71, + 0xfc, 0xad, 0xdf, 0x84, 0xaa, 0x38, 0xba, 0x67, 0x55, 0xac, 0x7b, 0x82, + 0xd7, 0xf4, 0xbf, 0xca, 0x5b, 0xbf, 0x93, 0xb9, 0x25, 0x39, 0x02, 0xb3, + 0xf2, 0x52, 0xb0, 0x90, 0xd7, 0xb3, 0xc1, 0x93, 0xf7, 0xca, 0x55, 0xec, + 0x87, 0x6b, 0xa8, 0xe5, 0x49, 0xe0, 0x3b, 0x71, 0xfe, 0x44, 0x24, 0xa5, + 0x7a, 0x96, 0xb9, 0xef, 0x69, 0x30, 0x1b, 0x1f, 0x79, 0x0a, 0x87, 0x50, + 0xa4, 0xd9, 0x63, 0x49, 0x3a, 0x06, 0x93, 0xf3, 0x6a, 0xd0, 0x1f, 0x4d, + 0xfd, 0x80, 0x30, 0xaa, 0xe6, 0x44, 0x13, 0xdf, 0x63, 0xbf, 0x22, 0x4a, + 0x6c, 0x56, 0xe6, 0x8f, 0xd1, 0xb1, 0xbb, 0x5a, 0xc0, 0x22, 0x3c, 0xd4, + 0xfa, 0x86, 0x57, 0xd9, 0x7a, 0x3b, 0x8b, 0x09, 0x6d, 0xb9, 0x2f, 0x34, + 0xb6, 0x39, 0xd9, 0x12, 0xf4, 0x1a, 0x8e, 0xa7, 0xcd, 0xad, 0x54, 0x3a, + 0xc6, 0x60, 0xc8, 0xba, 0xba, 0x6b, 0x3e, 0xcc, 0x46, 0x06, 0x0f, 0x3b, + 0x5e, 0x77, 0x3c, 0xa4, 0xa7, 0x3a, 0xa6, 0x43, 0x7c, 0xdc, 0x75, 0x47, + 0xa6, 0xdc, 0x8c, 0x57, 0x6e, 0xc6, 0xb5, 0xd4, 0xb8, 0xea, 0x43, 0x75, + 0x6f, 0x3d, 0xda, 0x54, 0x76, 0xc0, 0x6b, 0x7c, 0x14, 0xac, 0x75, 0x6e, + 0x3a, 0x1d, 0xa4, 0x08, 0x24, 0xf1, 0xf2, 0x29, 0x29, 0xb9, 0x47, 0x57, + 0xcc, 0x6d, 0xcc, 0x76, 0x43, 0x2a, 0xb9, 0x8d, 0x21, 0xcf, 0x73, 0x5a, + 0xd6, 0xdb, 0x03, 0xf7, 0x49, 0x69, 0x12, 0xa5, 0x95, 0xd7, 0xb3, 0x2f, + 0xb1, 0xe6, 0x9a, 0x8d, 0x94, 0x17, 0x9b, 0x36, 0xe4, 0xb5, 0x8e, 0x2c, + 0x24, 0x7e, 0xf3, 0x1a, 0x26, 0x56, 0x73, 0xb4, 0x30, 0x5e, 0xd1, 0xa0, + 0xef, 0x3a, 0x7c, 0x95, 0x9c, 0x5c, 0x4a, 0xee, 0x65, 0xb9, 0x01, 0x8e, + 0x3e, 0x90, 0x87, 0x38, 0x48, 0x6c, 0x47, 0x7f, 0xe0, 0x92, 0x9a, 0x99, + 0x3d, 0x57, 0xa9, 0x5e, 0x05, 0x46, 0xc1, 0x55, 0x4e, 0x99, 0x65, 0x40, + 0x30, 0x69, 0xf0, 0x5b, 0x78, 0x21, 0xf8, 0x1d, 0x35, 0xd6, 0x61, 0xbc, + 0xd1, 0x6b, 0xc6, 0xe7, 0xb8, 0x43, 0x8b, 0xcf, 0x6d, 0xdb, 0x81, 0x95, + 0x81, 0x8f, 0x58, 0xb3, 0x26, 0xba, 0xc8, 0x2f, 0xde, 0x5c, 0xd0, 0x07, + 0x72, 0x41, 0x8f, 0xc5, 0x76, 0x3f, 0xb3, 0xbd, 0x2c, 0x32, 0xdb, 0x1d, + 0xf9, 0xbc, 0x7c, 0x92, 0x52, 0xf5, 0xd8, 0x76, 0x56, 0x5f, 0xab, 0xde, + 0x25, 0xc4, 0x08, 0x97, 0x46, 0xa8, 0x79, 0x18, 0xee, 0xc9, 0xc0, 0x14, + 0xc9, 0x1b, 0xc0, 0x1b, 0xbc, 0x24, 0x29, 0x56, 0x74, 0xaf, 0xc9, 0xa4, + 0xfe, 0x0b, 0x9b, 0xb7, 0xeb, 0x15, 0xee, 0xa8, 0x53, 0x59, 0x7e, 0x3d, + 0x8c, 0x30, 0xd3, 0xd9, 0xd1, 0xc7, 0xc1, 0x25, 0x37, 0x6d, 0xe9, 0x58, + 0xdd, 0x33, 0x05, 0xe2, 0xbf, 0x75, 0xaf, 0x2d, 0xdd, 0x63, 0xb9, 0x22, + 0x66, 0x07, 0x80, 0x59, 0x8c, 0xc3, 0xc8, 0x17, 0xbf, 0x25, 0xe3, 0x6d, + 0x04, 0xed, 0x6c, 0xe9, 0xb8, 0x91, 0xd8, 0x79, 0x78, 0xa9, 0x3b, 0xeb, + 0x05, 0xd7, 0xd6, 0x6b, 0xcb, 0x60, 0xb0, 0x4f, 0xd3, 0x6f, 0xb5, 0xc0, + 0xf9, 0x88, 0x85, 0x2c, 0x8b, 0x73, 0x33, 0x19, 0x5e, 0xc6, 0xbd, 0x95, + 0x01, 0x15, 0xb7, 0x46, 0x88, 0x03, 0xf1, 0x49, 0x4d, 0xdc, 0x3e, 0xad, + 0x6e, 0x21, 0x75, 0x45, 0xc1, 0xad, 0x78, 0x22, 0x4e, 0xa1, 0xa7, 0xb1, + 0x45, 0x75, 0xf9, 0xd7, 0xe4, 0x55, 0x6e, 0x5d, 0x0e, 0x75, 0x14, 0xb6, + 0x5a, 0xea, 0x5a, 0x5e, 0xd2, 0x4f, 0xe7, 0x12, 0xd9, 0x58, 0xed, 0xc0, + 0x73, 0x9a, 0x5d, 0x75, 0xae, 0x00, 0x6a, 0x7d, 0xd1, 0xa2, 0x6a, 0xab, + 0xa8, 0x18, 0xc7, 0x7d, 0xaf, 0x77, 0x8b, 0x1c, 0xe0, 0xdf, 0xf3, 0x92, + 0x53, 0xa7, 0x9d, 0xd7, 0xef, 0xa7, 0x31, 0x8e, 0xe9, 0xac, 0x70, 0xa1, + 0x8c, 0x01, 0xe6, 0x0e, 0xaf, 0x9f, 0xce, 0x04, 0x76, 0x50, 0x7f, 0x5f, + 0xeb, 0x39, 0x56, 0x7e, 0x83, 0x28, 0xb2, 0x41, 0x77, 0xa3, 0xb4, 0x37, + 0x6c, 0x7f, 0x2e, 0x0c, 0xa5, 0x88, 0x3e, 0xcf, 0x69, 0xb2, 0xc7, 0x19, + 0x7b, 0x5c, 0xdd, 0xbb, 0x9d, 0xa6, 0xe1, 0x1d, 0xe7, 0xef, 0x50, 0xbb, + 0x23, 0x76, 0xd0, 0xd6, 0x39, 0xc5, 0xbf, 0x4c, 0x91, 0xdb, 0xcc, 0x94, + 0x94, 0xdc, 0xc2, 0xea, 0x99, 0xdf, 0x64, 0xb2, 0xcc, 0xec, 0x87, 0x59, + 0x8b, 0x04, 0x5b, 0x5d, 0x7e, 0xe7, 0x81, 0xc3, 0xa5, 0xce, 0xe3, 0x9e, + 0x00, 0x57, 0xba, 0x6b, 0x71, 0xb1, 0xf0, 0xcd, 0xcc, 0x70, 0xaf, 0xd4, + 0xf7, 0x54, 0x0c, 0xc8, 0x61, 0xfa, 0x24, 0x97, 0x72, 0x61, 0x60, 0x7d, + 0xa2, 0xcc, 0x3b, 0x1d, 0x6b, 0x6a, 0x9a, 0x1e, 0xdd, 0xb9, 0x0c, 0x07, + 0xe9, 0xd6, 0xed, 0x24, 0x88, 0xe4, 0x4a, 0xd0, 0xe9, 0x74, 0x3a, 0x80, + 0x72, 0x43, 0xcd, 0x6c, 0x07, 0xe8, 0x80, 0xd3, 0xb9, 0xbf, 0x9a, 0x7d, + 0xd3, 0x02, 0x3c, 0x92, 0x52, 0x5f, 0xad, 0x74, 0xbe, 0xce, 0x9f, 0x8d, + 0x94, 0xe1, 0x2e, 0xae, 0xc2, 0xc9, 0xfe, 0x4b, 0xdb, 0x23, 0xfe, 0xa5, + 0x72, 0x90, 0x49, 0x11, 0xca, 0xec, 0x7a, 0x9d, 0xa3, 0x27, 0xa3, 0x65, + 0xb9, 0xe5, 0xb0, 0x36, 0xb9, 0x83, 0x76, 0xe7, 0x48, 0x70, 0x3d, 0xe1, + 0x72, 0x35, 0x8f, 0xd2, 0x03, 0xc7, 0x3c, 0xa4, 0xa5, 0xb6, 0xc3, 0x4f, + 0x88, 0xd6, 0x54, 0x5e, 0xc8, 0x6c, 0xcc, 0x8f, 0x25, 0x70, 0x30, 0x1f, + 0x0d, 0x50, 0x45, 0x7b, 0xdf, 0xe8, 0xb4, 0x17, 0xbd, 0xe4, 0x35, 0x80, + 0x6a, 0x4b, 0x89, 0x80, 0x12, 0x53, 0xd1, 0x7d, 0x5f, 0x04, 0xe0, 0xd4, + 0xd6, 0xf2, 0x58, 0xef, 0xc1, 0xc8, 0xd9, 0x38, 0x2f, 0xea, 0x6c, 0x06, + 0xcb, 0x5f, 0x46, 0x3d, 0xb0, 0x28, 0x7b, 0x36, 0xba, 0xb2, 0xee, 0xde, + 0xa0, 0xe7, 0x55, 0x6a, 0xfc, 0x1a, 0xfa, 0x2f, 0x4d, 0xc6, 0xe9, 0xce, + 0x25, 0xd9, 0xb9, 0x30, 0xcb, 0xee, 0x6f, 0x0c, 0x6b, 0x8c, 0x9a, 0xd9, + 0xf9, 0x09, 0x59, 0x56, 0x66, 0x54, 0x6d, 0x38, 0xad, 0xa9, 0xc7, 0x01, + 0xb6, 0x0a, 0x8e, 0xa4, 0x39, 0xee, 0x3e, 0xe7, 0x00, 0x7f, 0x93, 0xe4, + 0x92, 0x9e, 0xd3, 0x06, 0x9b, 0x2a, 0xc4, 0xaa, 0xbb, 0x1d, 0x36, 0x56, + 0xc0, 0xd7, 0x38, 0x1d, 0x24, 0x08, 0xd2, 0x75, 0x85, 0xce, 0x75, 0x5a, + 0xf0, 0xea, 0xfa, 0xc1, 0x8c, 0xdb, 0x1b, 0xb2, 0xbb, 0x29, 0x73, 0x40, + 0xac, 0xfa, 0x72, 0xf6, 0x99, 0x60, 0x3b, 0x60, 0x6b, 0xc6, 0xab, 0x4b, + 0xa4, 0xf5, 0x2a, 0x1f, 0x8e, 0xf1, 0x45, 0x86, 0xea, 0x6b, 0x79, 0x63, + 0x1e, 0xee, 0x60, 0x01, 0xc9, 0xef, 0x12, 0xb9, 0xcf, 0xad, 0x0e, 0x19, + 0x3d, 0x5e, 0xa7, 0x07, 0xfa, 0x41, 0xb4, 0x82, 0x2c, 0x3c, 0x35, 0xcd, + 0x71, 0x2d, 0x32, 0x92, 0x9e, 0x93, 0x1a, 0xea, 0xf3, 0xc0, 0xc8, 0xc4, + 0xb8, 0x3b, 0xd2, 0x3e, 0xd3, 0xf4, 0x5d, 0x0d, 0x3e, 0xea, 0xae, 0x1d, + 0xfe, 0x29, 0xf2, 0x72, 0x8f, 0xaa, 0x4d, 0x6c, 0xac, 0xb9, 0xc3, 0xdb, + 0x6b, 0xa7, 0xc4, 0xe8, 0x1a, 0xd1, 0xd8, 0xf9, 0xac, 0x2e, 0x97, 0xd7, + 0x8d, 0x59, 0x07, 0x1f, 0x3f, 0x60, 0xb2, 0xe0, 0xd7, 0x37, 0x29, 0xad, + 0x00, 0xd8, 0x23, 0x4d, 0xe4, 0x44, 0x95, 0xbc, 0xfa, 0x0d, 0xf4, 0xb9, + 0xd4, 0x58, 0x6b, 0x2f, 0x1f, 0x4d, 0xbf, 0x95, 0x25, 0x23, 0xc7, 0x19, + 0x59, 0x35, 0x5d, 0x91, 0x7b, 0x99, 0x5e, 0xc3, 0xb6, 0x8d, 0xd2, 0xc0, + 0xe0, 0x74, 0x73, 0x5d, 0xbc, 0xf3, 0x1e, 0x0b, 0x25, 0xf4, 0xdf, 0x46, + 0x6f, 0xa5, 0x90, 0xdd, 0xae, 0x69, 0xd0, 0x8e, 0x1c, 0xdd, 0xa7, 0xdc, + 0x0f, 0x70, 0xb5, 0xf3, 0x8f, 0xa1, 0x8f, 0x53, 0xae, 0xb1, 0xe6, 0x93, + 0x0d, 0x36, 0xb3, 0x52, 0xcb, 0x07, 0x72, 0xc2, 0xae, 0xd1, 0x88, 0x32, + 0xb1, 0x19, 0x5d, 0xc5, 0xb7, 0x57, 0x04, 0xd5, 0x7b, 0x20, 0x81, 0x3f, + 0x9c, 0xc1, 0xcb, 0x7c, 0xdb, 0xc2, 0x4a, 0x79, 0xaa, 0x9b, 0xe3, 0xc6, + 0xd0, 0x8d, 0xd5, 0xa5, 0xf5, 0x62, 0xd8, 0x06, 0x8e, 0x61, 0x04, 0xf9, + 0xb4, 0x68, 0x9b, 0x23, 0x1a, 0xcc, 0x4b, 0xdf, 0x4d, 0x9c, 0xb4, 0x48, + 0x23, 0x87, 0x34, 0xf0, 0x42, 0x2d, 0xc3, 0xd4, 0xe9, 0x4c, 0x71, 0xff, + 0x00, 0x04, 0xf2, 0x3e, 0xf4, 0x94, 0xd0, 0x61, 0xd9, 0x9d, 0x5b, 0xbb, + 0x08, 0x27, 0xef, 0x0b, 0xa6, 0xda, 0x3d, 0x4f, 0x52, 0x7f, 0x36, 0x27, + 0xe6, 0xb9, 0xab, 0x34, 0xb1, 0xae, 0x68, 0xfc, 0xdf, 0xee, 0x5d, 0x26, + 0xef, 0xd0, 0xef, 0xfe, 0x44, 0xfe, 0x12, 0x92, 0x9e, 0x7d, 0x9a, 0x17, + 0xc8, 0x9f, 0x04, 0x52, 0x3d, 0xa7, 0xe0, 0x80, 0xd7, 0x08, 0x76, 0xaa, + 0xc4, 0xcd, 0x67, 0xc2, 0x0a, 0x4a, 0x67, 0xe9, 0x6e, 0x73, 0x89, 0x1c, + 0x92, 0x42, 0xa7, 0x9b, 0x4f, 0xb3, 0x73, 0x24, 0xfb, 0x5d, 0xba, 0x7b, + 0x68, 0xaf, 0x49, 0x3b, 0x83, 0x7b, 0x18, 0x55, 0x72, 0x1c, 0x0d, 0x6e, + 0x68, 0x33, 0xf4, 0x87, 0xe0, 0x92, 0x95, 0x5b, 0x0f, 0xa4, 0xd3, 0xdf, + 0x60, 0xd5, 0x51, 0x77, 0x4b, 0xb3, 0x1a, 0xe3, 0x55, 0xcd, 0xf5, 0x2d, + 0x92, 0xf2, 0x5a, 0xe0, 0xe0, 0x67, 0xfa, 0xab, 0x4d, 0xc0, 0xb7, 0x19, + 0x8e, 0x04, 0x02, 0x5a, 0x39, 0x1e, 0x4b, 0x3b, 0x26, 0xe2, 0xd6, 0xc3, + 0x9c, 0xef, 0x20, 0x4f, 0xf0, 0x49, 0x48, 0x2d, 0xad, 0xed, 0x74, 0x00, + 0xd6, 0x44, 0xe8, 0x48, 0xfe, 0x25, 0x42, 0xd6, 0x7b, 0x23, 0xd3, 0x0e, + 0xd3, 0x48, 0x8f, 0xfb, 0xe9, 0x55, 0x32, 0x4e, 0xb6, 0xbb, 0x98, 0x00, + 0x7e, 0x2a, 0xbe, 0x8e, 0xb0, 0x03, 0xd9, 0xa3, 0xf1, 0x49, 0x4e, 0x86, + 0x55, 0x41, 0xb7, 0x41, 0xac, 0x83, 0x0d, 0x1a, 0x1f, 0x25, 0xd4, 0x37, + 0x1a, 0xde, 0x93, 0xf5, 0x57, 0x32, 0x83, 0x58, 0x7d, 0xf9, 0x12, 0xe7, + 0xbd, 0x8e, 0x6b, 0xc3, 0x03, 0x80, 0x1e, 0xed, 0xa7, 0xb0, 0x5c, 0xd7, + 0x4f, 0xc4, 0xb6, 0xec, 0xdc, 0x6a, 0x05, 0x87, 0x6d, 0x8f, 0x68, 0x2d, + 0x93, 0x04, 0x77, 0xe7, 0xc9, 0x6e, 0x7d, 0x70, 0x7d, 0x15, 0xb6, 0xaa, + 0xfe, 0x86, 0xbf, 0x49, 0xba, 0x1d, 0xbe, 0x09, 0x29, 0xcf, 0xfa, 0xa7, + 0xd2, 0x2d, 0xcb, 0xcd, 0x6e, 0x7d, 0xa2, 0x31, 0x71, 0x89, 0xda, 0x7f, + 0x7e, 0xc2, 0x20, 0x01, 0xf0, 0xe4, 0xae, 0x8b, 0xad, 0x32, 0xc0, 0xd2, + 0xda, 0x87, 0xb8, 0xfb, 0x63, 0xc8, 0xac, 0x2c, 0x3f, 0xad, 0x2c, 0xc7, + 0xc7, 0xc7, 0xc2, 0xa1, 0xa2, 0xb6, 0x56, 0x5a, 0xd1, 0x1f, 0x9e, 0x27, + 0x59, 0xf8, 0xad, 0x8e, 0xa1, 0xd4, 0x4b, 0x6e, 0x73, 0x23, 0xd4, 0x6b, + 0x80, 0xdb, 0x1c, 0xa4, 0xa6, 0xb0, 0xac, 0xb0, 0x40, 0x3f, 0x45, 0xa4, + 0x0f, 0x90, 0x5c, 0x9f, 0x56, 0xfb, 0x4b, 0x1b, 0x5d, 0x59, 0x41, 0x8e, + 0x9a, 0xd9, 0xb6, 0xc6, 0xeb, 0x1a, 0x93, 0x27, 0xb8, 0x24, 0x2d, 0x6b, + 0x7a, 0xa7, 0x5a, 0xda, 0xf7, 0x37, 0x19, 0xc1, 0x8d, 0x04, 0x97, 0x1a, + 0xce, 0x8d, 0xf3, 0xf9, 0x2c, 0x4b, 0x33, 0x1b, 0x7b, 0xc3, 0xb2, 0x00, + 0xb0, 0x06, 0x96, 0xb7, 0x69, 0x80, 0x09, 0xfc, 0xe3, 0xe3, 0x09, 0x29, + 0xbf, 0x57, 0x4a, 0xe9, 0x77, 0x74, 0xe1, 0x93, 0x5d, 0xa5, 0xd7, 0x36, + 0x37, 0x80, 0xe1, 0x13, 0x31, 0x05, 0xa4, 0x4a, 0x0b, 0x5b, 0x65, 0x22, + 0xca, 0x6a, 0x79, 0xae, 0xbd, 0xd1, 0xa7, 0xd2, 0x33, 0x1d, 0xfb, 0x2c, + 0xd3, 0x5b, 0xc5, 0xfb, 0x6a, 0x70, 0xb0, 0x3d, 0xde, 0xd7, 0xfe, 0x6b, + 0xbe, 0x20, 0xad, 0x16, 0x58, 0x4b, 0x1a, 0x20, 0x37, 0xc4, 0x0e, 0xd0, + 0x92, 0x98, 0x5a, 0xcd, 0xee, 0x1e, 0xa3, 0xdd, 0x61, 0x27, 0x67, 0xb8, + 0xc8, 0x1d, 0xc2, 0x7a, 0xac, 0xb4, 0x13, 0x4e, 0xc6, 0x4f, 0xee, 0xba, + 0x41, 0xfe, 0xc9, 0x0a, 0x1b, 0xe2, 0x90, 0xe3, 0xdd, 0xe0, 0xfd, 0xc4, + 0x23, 0xde, 0xda, 0x9e, 0x21, 0xe0, 0x87, 0x8d, 0x5a, 0xe0, 0x60, 0xa4, + 0xa6, 0x66, 0xcb, 0x6b, 0x69, 0x73, 0xe9, 0x69, 0x67, 0x72, 0x1e, 0xe9, + 0x1f, 0x79, 0x51, 0xc9, 0xb0, 0x7a, 0xac, 0xa9, 0x87, 0xda, 0xe2, 0x09, + 0x03, 0x82, 0xa9, 0x3c, 0xe4, 0x11, 0xe9, 0x92, 0x40, 0x71, 0xe4, 0x77, + 0x45, 0x66, 0x97, 0x52, 0x5d, 0xc9, 0x74, 0xfc, 0x82, 0x4a, 0x6e, 0x64, + 0x38, 0xb6, 0xb9, 0x3a, 0xcd, 0x0f, 0x05, 0xa7, 0xc5, 0xa5, 0x68, 0x74, + 0xeb, 0xee, 0x6e, 0x0d, 0x56, 0x0a, 0xb7, 0x31, 0xc2, 0x44, 0x1f, 0x0e, + 0xf0, 0x5a, 0xe2, 0x55, 0x0c, 0xa9, 0xd8, 0x20, 0x49, 0x1b, 0xc0, 0xfe, + 0xd0, 0xe1, 0x6b, 0x37, 0xa6, 0x75, 0x5c, 0x0e, 0x9f, 0x5d, 0xd4, 0x5a, + 0xdb, 0xf6, 0x34, 0x39, 0xd8, 0xcf, 0x64, 0x76, 0x92, 0x1a, 0xe0, 0x65, + 0x25, 0x21, 0xea, 0x37, 0x63, 0x57, 0xd2, 0xcb, 0x7d, 0x43, 0x6d, 0xd9, + 0x26, 0x18, 0x37, 0x17, 0x86, 0x34, 0x10, 0x5d, 0xab, 0x80, 0x5c, 0xf3, + 0x46, 0xc7, 0x69, 0xaf, 0x80, 0x89, 0x56, 0xf2, 0xba, 0x86, 0x2e, 0x55, + 0xbe, 0xa3, 0x9c, 0x6b, 0x6b, 0x8e, 0xe3, 0x59, 0x6b, 0x8c, 0x38, 0x81, + 0xbb, 0xc9, 0x57, 0x19, 0x18, 0x8c, 0x27, 0x6d, 0xa7, 0x5e, 0x0e, 0xd7, + 0x68, 0x92, 0x97, 0x73, 0xa3, 0x58, 0xe3, 0xc9, 0x69, 0xfd, 0x54, 0x68, + 0xb3, 0xeb, 0x06, 0x24, 0xb4, 0x43, 0x1c, 0xf7, 0x8d, 0x3b, 0xb5, 0x8e, + 0x20, 0xac, 0x97, 0x64, 0xe3, 0xc6, 0x8e, 0xdc, 0x4f, 0x7d, 0xae, 0x95, + 0x6f, 0xa2, 0x75, 0x1a, 0xb0, 0xba, 0xae, 0x36, 0x43, 0xdf, 0xb6, 0xb6, + 0xbb, 0x6d, 0x84, 0xb5, 0xd0, 0x18, 0xf1, 0xb5, 0xc7, 0x41, 0xe6, 0x92, + 0x9e, 0x9f, 0xeb, 0x25, 0x2c, 0x19, 0xb8, 0x4f, 0xbd, 0xcf, 0x60, 0xb2, + 0xcd, 0xdb, 0xc6, 0xa3, 0x73, 0x67, 0xf2, 0xac, 0xbc, 0x1c, 0x11, 0xd4, + 0x6c, 0xcf, 0x7d, 0x40, 0x7a, 0x76, 0x1f, 0xd1, 0x87, 0xc8, 0xda, 0xe1, + 0x1e, 0xe8, 0x1c, 0x1f, 0x35, 0xd2, 0x75, 0x7e, 0x95, 0x67, 0x55, 0x6b, + 0x1c, 0x5f, 0x53, 0xa9, 0x03, 0x75, 0x60, 0x38, 0xb8, 0xbc, 0x38, 0x6b, + 0x11, 0xa4, 0x78, 0x15, 0xc2, 0xe7, 0x63, 0xe6, 0x61, 0x66, 0x7a, 0x67, + 0x21, 0xee, 0x7b, 0x06, 0xd6, 0x81, 0x2d, 0x7b, 0x7c, 0x07, 0x74, 0x94, + 0xf4, 0xbd, 0x26, 0xaa, 0xaa, 0xa1, 0xf5, 0xd2, 0x21, 0x8d, 0xb0, 0x8e, + 0x77, 0x02, 0x46, 0x84, 0xce, 0x9d, 0xd6, 0xce, 0x3f, 0x46, 0xe9, 0xf9, + 0xb3, 0x66, 0x4d, 0x62, 0xcb, 0x1a, 0x36, 0xb4, 0xc9, 0xd2, 0x41, 0xf0, + 0xf8, 0xae, 0x73, 0xa3, 0x97, 0x53, 0x88, 0xca, 0x8e, 0xae, 0xd4, 0x92, + 0x7c, 0x4e, 0xab, 0x57, 0x07, 0xac, 0xd7, 0x87, 0xd4, 0x6d, 0xa2, 0xe7, + 0x4b, 0x1c, 0xc6, 0x98, 0x9d, 0x43, 0xb5, 0xd7, 0xcd, 0x25, 0x3c, 0xc7, + 0x57, 0xa9, 0xb5, 0xe7, 0xfd, 0x89, 0xff, 0x00, 0xa2, 0xc6, 0xac, 0x8a, + 0x46, 0xd8, 0x75, 0x9b, 0x5b, 0xc9, 0xda, 0x24, 0xfc, 0xca, 0xd9, 0xe8, + 0xd9, 0xa2, 0xdc, 0x56, 0xb2, 0xb7, 0xbb, 0x6d, 0x3e, 0xd6, 0x93, 0xcb, + 0x9a, 0x38, 0x25, 0x4b, 0xeb, 0x1e, 0x16, 0x1f, 0xed, 0x1a, 0x7a, 0xc9, + 0x6e, 0xfe, 0x9d, 0x94, 0x3d, 0x2c, 0x9b, 0x2b, 0x24, 0x16, 0x58, 0x44, + 0x35, 0xce, 0x8e, 0xc5, 0x3d, 0x1d, 0x39, 0xdd, 0x3e, 0xe9, 0xda, 0xf1, + 0x45, 0xa2, 0x18, 0x1d, 0xf4, 0x40, 0x03, 0x48, 0x3e, 0x69, 0x29, 0xd6, + 0xc5, 0xa6, 0xac, 0xbd, 0xd5, 0x5a, 0x61, 0xce, 0x1e, 0xd9, 0x3a, 0x48, + 0xfc, 0x11, 0x30, 0x70, 0xb2, 0x71, 0xac, 0x2c, 0xac, 0x0f, 0x4c, 0x9d, + 0x5a, 0x3f, 0x1d, 0x16, 0x68, 0xb9, 0x92, 0x5a, 0x4e, 0x9c, 0x4a, 0xb1, + 0x8d, 0xd7, 0xb2, 0x29, 0x7b, 0xaa, 0xcc, 0x6f, 0xa8, 0xe6, 0xb8, 0x36, + 0xab, 0x46, 0x82, 0xd0, 0xed, 0x46, 0xe0, 0x38, 0x3a, 0x6a, 0x92, 0x97, + 0xeb, 0x86, 0xb7, 0x7a, 0x6d, 0x2d, 0x22, 0xea, 0xe6, 0x49, 0x10, 0x76, + 0xf8, 0x15, 0x4b, 0x1f, 0xf4, 0x98, 0x39, 0x55, 0x78, 0x00, 0xf1, 0xf7, + 0x29, 0x5d, 0x73, 0xf2, 0x6e, 0x7d, 0xb6, 0x44, 0x9e, 0xdd, 0x80, 0xf0, + 0x4b, 0x0b, 0xf9, 0xf7, 0x30, 0xff, 0x00, 0x84, 0x63, 0x9a, 0x92, 0x9a, + 0x20, 0x4d, 0x75, 0x11, 0xac, 0xb4, 0x7e, 0x40, 0xb7, 0x37, 0x0f, 0xd9, + 0xfb, 0xfb, 0xfa, 0x7f, 0x8e, 0xd5, 0x89, 0xb0, 0xb1, 0x8c, 0x69, 0x3a, + 0xb4, 0x6d, 0x3f, 0x2d, 0x16, 0xae, 0xe3, 0xfb, 0x23, 0xfb, 0x3b, 0x7f, + 0xe9, 0x24, 0xa7, 0x38, 0x30, 0x6d, 0x4a, 0xea, 0xf6, 0xd0, 0xf7, 0x8d, + 0x0b, 0x5a, 0x4a, 0x23, 0x48, 0xd0, 0x25, 0x96, 0xe0, 0x31, 0x2d, 0x27, + 0xf7, 0x0a, 0x4a, 0x67, 0xb3, 0x74, 0xfc, 0x78, 0xf8, 0x25, 0x65, 0x65, + 0xf5, 0x10, 0x74, 0xd1, 0xc3, 0xe1, 0xa1, 0x56, 0x5a, 0xd1, 0xa9, 0x03, + 0x84, 0x8b, 0x61, 0x92, 0x39, 0x83, 0xf9, 0x12, 0x53, 0x47, 0xa8, 0x02, + 0xcc, 0x4a, 0x5a, 0x4c, 0x49, 0x1f, 0x80, 0x95, 0x87, 0x63, 0xcd, 0x8f, + 0xd4, 0xe9, 0x3c, 0xfc, 0xd6, 0xbf, 0x5c, 0x96, 0xb6, 0x91, 0xb4, 0x86, + 0x35, 0x8e, 0x71, 0x7c, 0xe9, 0xbb, 0xda, 0x36, 0xc2, 0xc7, 0x64, 0x6d, + 0x92, 0x47, 0x9a, 0x4a, 0x6b, 0x65, 0x3e, 0x59, 0x64, 0x8d, 0x7c, 0x55, + 0x26, 0x12, 0x6f, 0x6c, 0x73, 0x03, 0xf0, 0x56, 0x72, 0xa7, 0x63, 0xbc, + 0x0a, 0x06, 0x1d, 0x66, 0xdc, 0xec, 0x7a, 0x81, 0xfe, 0x71, 0xc1, 0x92, + 0x39, 0x12, 0x61, 0x25, 0x3d, 0x2f, 0xd5, 0x6a, 0x9d, 0x6f, 0x52, 0x75, + 0xae, 0x78, 0x73, 0x71, 0xeb, 0x24, 0x19, 0xfc, 0xe3, 0xed, 0x0a, 0xb7, + 0xd6, 0xab, 0xcd, 0x99, 0x46, 0xb2, 0xe9, 0x35, 0xb7, 0xf1, 0x28, 0x35, + 0x75, 0xcc, 0xbe, 0x99, 0x91, 0x91, 0x57, 0x4d, 0x6b, 0x1b, 0x56, 0xe8, + 0xfd, 0x20, 0xdc, 0xf7, 0x01, 0xc4, 0x9e, 0x14, 0x32, 0xda, 0xcc, 0xaa, + 0x19, 0xd4, 0xb2, 0x09, 0x63, 0xb2, 0x4b, 0x99, 0x65, 0x6d, 0x1a, 0x07, + 0x33, 0xf3, 0x9a, 0x92, 0x9c, 0x8a, 0xf2, 0x2e, 0xad, 0x86, 0xb6, 0x10, + 0x1a, 0x4c, 0xf0, 0x26, 0x7c, 0x8f, 0x2b, 0xa9, 0xfa, 0xac, 0xe7, 0x64, + 0xd1, 0x65, 0xd7, 0x0d, 0xf6, 0x54, 0xf0, 0xca, 0xec, 0x77, 0x21, 0xa4, + 0x49, 0x0b, 0x9f, 0x34, 0x74, 0xf1, 0xc3, 0xec, 0x9f, 0x03, 0x03, 0xf8, + 0x2d, 0x3e, 0x9f, 0x9f, 0x9b, 0x87, 0x8e, 0x71, 0xb0, 0x68, 0x2f, 0x6b, + 0x9c, 0x5c, 0x5c, 0x58, 0xe7, 0x1d, 0xc7, 0x4f, 0x82, 0x4a, 0x7a, 0xa1, + 0xc1, 0x9e, 0xe0, 0xac, 0x6a, 0x7a, 0x2f, 0x4b, 0xb1, 0x85, 0xce, 0xa0, + 0x6e, 0x7e, 0xae, 0x74, 0x91, 0x13, 0xe1, 0xae, 0x8a, 0xbf, 0xda, 0x3e, + 0xb3, 0xda, 0x65, 0x95, 0xb9, 0x9e, 0x65, 0xad, 0x67, 0xfd, 0x52, 0xc6, + 0x3d, 0x63, 0x32, 0x08, 0x6d, 0xf6, 0x0d, 0xbd, 0x81, 0x8f, 0xc8, 0x92, + 0x92, 0x75, 0x3e, 0x98, 0xde, 0x9f, 0x9a, 0x19, 0x53, 0xcb, 0xea, 0x30, + 0xe1, 0x3f, 0x48, 0x6b, 0xc1, 0x23, 0x94, 0x1a, 0x5c, 0x0c, 0xc9, 0x81, + 0xa9, 0x94, 0xce, 0xc8, 0xcc, 0x7e, 0xef, 0x5d, 0xee, 0x7e, 0xe6, 0xb4, + 0xcb, 0x8c, 0x98, 0x3a, 0x8f, 0xc0, 0xa1, 0xb1, 0xd2, 0xc7, 0x03, 0xf0, + 0x49, 0x49, 0x5c, 0x26, 0x8a, 0xdb, 0xf1, 0x3f, 0x8a, 0xb8, 0xe6, 0x0b, + 0x03, 0x77, 0x6a, 0x23, 0xe6, 0xaa, 0xba, 0x07, 0xa6, 0xde, 0xca, 0xe3, + 0xcb, 0x00, 0x13, 0xd8, 0x24, 0xa4, 0x44, 0xb4, 0x39, 0xac, 0x2c, 0x30, + 0xd7, 0x0d, 0x7c, 0x50, 0x9e, 0x77, 0x66, 0x80, 0x04, 0x6c, 0x1c, 0x78, + 0x14, 0xb2, 0xad, 0x86, 0x82, 0xde, 0x09, 0x13, 0x1f, 0x72, 0x86, 0x2f, + 0xe9, 0x32, 0x9e, 0xe6, 0xf0, 0x34, 0xfb, 0x92, 0x53, 0x75, 0xce, 0x77, + 0xab, 0x4c, 0xc1, 0x02, 0xc0, 0x7e, 0x3e, 0x4b, 0xb4, 0xc4, 0xc8, 0xab, + 0x27, 0xa7, 0xd7, 0x63, 0x4e, 0x8e, 0x1d, 0xfc, 0x57, 0x1c, 0x69, 0x16, + 0xd9, 0x04, 0xed, 0x6d, 0x5f, 0xa5, 0x73, 0xbc, 0x1a, 0xcd, 0x7f, 0x1e, + 0x16, 0xbf, 0x45, 0xcd, 0xae, 0xee, 0x9a, 0x7d, 0x4f, 0x67, 0xa5, 0x7b, + 0xc3, 0x40, 0xf0, 0xfa, 0x43, 0xee, 0x94, 0x94, 0xe8, 0x5d, 0x9d, 0x89, + 0x8a, 0xe1, 0x5d, 0xa5, 0x80, 0x81, 0xf9, 0xc5, 0xa3, 0x4f, 0x9a, 0x13, + 0xfa, 0xd7, 0x4d, 0x60, 0x97, 0x3e, 0xb0, 0x3c, 0x64, 0x7f, 0x05, 0xcb, + 0xfd, 0x62, 0x6d, 0x79, 0x31, 0x99, 0x54, 0xec, 0x63, 0x18, 0xcd, 0x7f, + 0x15, 0x83, 0x25, 0x25, 0x3e, 0x88, 0xce, 0xb1, 0x81, 0x68, 0x2e, 0xae, + 0xea, 0xc3, 0x47, 0x32, 0xe0, 0x0f, 0xdc, 0x61, 0x10, 0x75, 0x3c, 0x38, + 0xfe, 0x93, 0x48, 0x31, 0xc6, 0xf6, 0xff, 0x00, 0x7a, 0xf3, 0x79, 0x29, + 0x49, 0x49, 0x4f, 0xa7, 0xf4, 0xfe, 0xb0, 0xeb, 0x5e, 0xec, 0x4c, 0x6b, + 0xe9, 0xb5, 0xcf, 0x69, 0xd8, 0xd6, 0x91, 0x2d, 0x20, 0x4c, 0x8e, 0x56, + 0x07, 0x52, 0xc1, 0xcd, 0x1d, 0x51, 0x9e, 0xa5, 0x7b, 0x98, 0x77, 0x39, + 0xee, 0x6f, 0xbb, 0x57, 0x1d, 0x49, 0xfb, 0x96, 0x67, 0xd4, 0xb3, 0x3f, + 0x58, 0x28, 0x9f, 0xdc, 0xb7, 0xfe, 0xa1, 0xcb, 0xd0, 0x5f, 0x8c, 0x2c, + 0x3e, 0xab, 0xdb, 0x2e, 0xd3, 0xe2, 0x92, 0x9e, 0x61, 0x8f, 0xa6, 0xb6, + 0x93, 0xba, 0x1a, 0xc1, 0xa9, 0xf0, 0x85, 0x2a, 0x3a, 0x60, 0xc9, 0x69, + 0xcb, 0xb1, 0xa7, 0x75, 0xa3, 0x50, 0x7b, 0x03, 0xf4, 0x7f, 0x05, 0xd0, + 0xdf, 0xd1, 0xb0, 0x7d, 0xb6, 0x58, 0xc0, 0x6c, 0x99, 0xdd, 0xd8, 0x9f, + 0x30, 0xa2, 0x6b, 0x35, 0xd5, 0xb4, 0x68, 0x1b, 0x05, 0xbe, 0x40, 0x24, + 0xa7, 0x36, 0x9b, 0x47, 0x4b, 0xc7, 0x7e, 0x26, 0x45, 0x27, 0x37, 0x06, + 0xc6, 0xc3, 0x9b, 0xf4, 0xdd, 0xfd, 0x57, 0x7f, 0x02, 0x8d, 0x93, 0x90, + 0xeb, 0xab, 0x1f, 0xb3, 0xe7, 0xec, 0x86, 0xaf, 0x4f, 0xd3, 0xb0, 0xfb, + 0x6b, 0x77, 0xe6, 0xbb, 0x5d, 0x5d, 0x0a, 0xc3, 0x99, 0xa1, 0xb0, 0x7f, + 0x68, 0xf9, 0xf8, 0x84, 0x27, 0x3c, 0x58, 0x1b, 0xa0, 0x27, 0x53, 0x23, + 0x40, 0x52, 0x53, 0x83, 0x8b, 0x96, 0xeb, 0x9a, 0x59, 0x68, 0xdb, 0x6d, + 0x44, 0xb6, 0xc1, 0xe0, 0xe1, 0xca, 0x3d, 0xaf, 0x96, 0xd0, 0xf0, 0x77, + 0x0f, 0x5d, 0x83, 0x4f, 0x98, 0xfe, 0x2a, 0xdb, 0xb0, 0x31, 0x6e, 0xbe, + 0xd7, 0xbd, 0xbb, 0x6d, 0x2e, 0x73, 0x5f, 0xb7, 0x49, 0x73, 0x44, 0x89, + 0x8f, 0x16, 0xc2, 0x0e, 0x4d, 0x6c, 0x6d, 0x4c, 0x0c, 0x80, 0x19, 0x65, + 0x64, 0x00, 0x47, 0xef, 0x84, 0x94, 0xd8, 0xad, 0xb2, 0xed, 0x3b, 0x85, + 0x1a, 0x88, 0x17, 0xd6, 0x78, 0x87, 0x01, 0xf7, 0xe8, 0xa6, 0xc6, 0xbd, + 0xae, 0xd0, 0x1d, 0x3b, 0xa1, 0xed, 0x7e, 0xdd, 0xf0, 0x41, 0x1e, 0xee, + 0x3c, 0x12, 0x53, 0x1c, 0x8a, 0xc8, 0xbd, 0xed, 0x8e, 0x1c, 0xac, 0xee, + 0x6f, 0xec, 0xcd, 0x9d, 0xf7, 0xc7, 0xf1, 0x4d, 0x94, 0xd0, 0x6f, 0x2e, + 0xec, 0xf0, 0x08, 0xfb, 0x93, 0x6c, 0xfd, 0x5e, 0x24, 0x7d, 0x39, 0xe7, + 0xf9, 0x29, 0x29, 0xc1, 0x1d, 0x7b, 0xa6, 0xb8, 0x7f, 0x38, 0xf6, 0x1f, + 0xe5, 0x30, 0xff, 0x00, 0xdf, 0x65, 0x36, 0x5f, 0x57, 0xc5, 0x7e, 0x1d, + 0xad, 0xae, 0xf6, 0xbd, 0xdb, 0x61, 0xad, 0xd4, 0x13, 0xaf, 0x98, 0x08, + 0x23, 0xea, 0xf6, 0x31, 0x1a, 0x17, 0x6b, 0xc6, 0xa9, 0x0f, 0xab, 0xb8, + 0xc4, 0xf2, 0xef, 0x84, 0xa4, 0xa6, 0x75, 0x7d, 0x71, 0x20, 0xcd, 0xb8, + 0xc0, 0xff, 0x00, 0x55, 0xc4, 0x7e, 0x59, 0x4b, 0x2b, 0xeb, 0x81, 0x73, + 0x1a, 0xdc, 0x5a, 0x0d, 0x67, 0xf3, 0xcb, 0xc8, 0x77, 0xc8, 0x27, 0xff, + 0x00, 0x9b, 0xb8, 0x9a, 0x08, 0x77, 0x99, 0x94, 0xff, 0x00, 0xf3, 0x77, + 0x0c, 0x72, 0xd7, 0x1f, 0x1f, 0x71, 0x49, 0x4a, 0x3d, 0x7e, 0xce, 0xae, + 0x3d, 0x13, 0x43, 0x69, 0x0c, 0x21, 0xc4, 0xee, 0x2e, 0x07, 0xb7, 0x70, + 0x13, 0xbe, 0xb7, 0x39, 0xfb, 0x6b, 0xac, 0x92, 0x4e, 0xd6, 0xb7, 0x99, + 0xf8, 0x29, 0xb3, 0xa5, 0xe3, 0xe0, 0xb1, 0xcf, 0xa9, 0xae, 0xf7, 0xc3, + 0x5d, 0xac, 0xe9, 0xcc, 0xad, 0x8e, 0x9f, 0x84, 0x71, 0x6b, 0x19, 0x56, + 0xff, 0x00, 0x3b, 0x60, 0xfd, 0x18, 0x3c, 0x35, 0xa7, 0xbf, 0xc5, 0x25, + 0x35, 0x71, 0xfe, 0xaf, 0x63, 0x31, 0x9e, 0xa7, 0x51, 0x76, 0xf7, 0x9d, + 0x4d, 0x2d, 0x30, 0xc6, 0x8f, 0xe5, 0x38, 0x73, 0xf2, 0x52, 0x7d, 0x58, + 0x94, 0x16, 0xbe, 0x8a, 0x69, 0xc6, 0x0d, 0xfa, 0x0f, 0x73, 0x01, 0xb2, + 0x7c, 0x5a, 0x39, 0x1f, 0x35, 0x1e, 0xa3, 0xd4, 0x5b, 0x5b, 0x77, 0x4e, + 0xa7, 0x56, 0x0f, 0xfb, 0xf1, 0xf8, 0xf6, 0x5c, 0xf6, 0x4e, 0x55, 0xd6, + 0xe2, 0xbb, 0x2c, 0xd8, 0xe6, 0xc5, 0xa2, 0xb0, 0xd0, 0x79, 0x04, 0x6e, + 0x71, 0x25, 0x25, 0x3a, 0x99, 0x1d, 0x3f, 0x13, 0x28, 0x39, 0xf8, 0xee, + 0x68, 0xb6, 0x24, 0xc0, 0xdb, 0xba, 0x3c, 0x95, 0x2e, 0xa8, 0xef, 0x4f, + 0xa7, 0xe0, 0x54, 0xd3, 0x1b, 0x5a, 0x5c, 0x47, 0x9b, 0x8c, 0x95, 0x99, + 0x65, 0xb7, 0xd3, 0xad, 0x56, 0x97, 0xb1, 0xc2, 0x46, 0xa6, 0x5b, 0xbb, + 0xb1, 0xf3, 0xf8, 0x2d, 0x8c, 0xac, 0x2f, 0xb4, 0x62, 0x11, 0xcd, 0xf8, + 0xb5, 0x56, 0x76, 0xf8, 0x88, 0x97, 0x24, 0xa7, 0x12, 0xe6, 0x43, 0x83, + 0x87, 0x0e, 0xd4, 0x2b, 0xdf, 0xf3, 0xa3, 0xaa, 0x34, 0x6d, 0xa4, 0xb2, + 0xb6, 0x8e, 0xdb, 0x43, 0xbb, 0x47, 0xe7, 0x4a, 0xad, 0x4b, 0x05, 0xcd, + 0xf4, 0x8f, 0x2d, 0x70, 0x20, 0xf9, 0x13, 0x05, 0x74, 0xa3, 0xa1, 0x74, + 0xe1, 0xa7, 0xa0, 0x3e, 0x26, 0x52, 0x53, 0x80, 0xef, 0xac, 0xfd, 0x69, + 0xc0, 0x83, 0x78, 0x00, 0xf8, 0x31, 0x9f, 0xf9, 0x15, 0x5f, 0x0e, 0xa1, + 0x65, 0x64, 0x38, 0xc1, 0xb1, 0xdb, 0x41, 0xf8, 0xc0, 0x5d, 0x4b, 0x7a, + 0x2f, 0x4f, 0x1c, 0xe3, 0xb2, 0x3c, 0xc1, 0x4a, 0xce, 0x9d, 0x81, 0x4d, + 0x65, 0xcc, 0xc7, 0x6b, 0x4b, 0x4c, 0x88, 0x27, 0x9f, 0x84, 0xa4, 0xa7, + 0x99, 0xcf, 0x79, 0x66, 0x61, 0x63, 0x07, 0xd0, 0x86, 0x81, 0xe5, 0x10, + 0xa5, 0x43, 0x37, 0x39, 0xe0, 0xf8, 0xad, 0x07, 0x37, 0x1c, 0xe0, 0x5d, + 0x75, 0x95, 0xb4, 0xdb, 0x65, 0xe4, 0xd5, 0x64, 0x7b, 0x80, 0x69, 0x88, + 0x9f, 0x05, 0x42, 0x87, 0x68, 0xf2, 0x7b, 0x9d, 0x3f, 0x22, 0x4a, 0x66, + 0x48, 0x75, 0xcd, 0xfe, 0x49, 0x1a, 0x2b, 0x36, 0x8d, 0xc6, 0x67, 0x42, + 0x34, 0x55, 0x2b, 0x00, 0xe4, 0x01, 0xd9, 0x5c, 0x7e, 0x90, 0x12, 0x53, + 0x43, 0x24, 0x16, 0xd5, 0xa1, 0xfc, 0xe1, 0x28, 0xdd, 0x29, 0xa7, 0x71, + 0x3d, 0xe1, 0x43, 0x28, 0x03, 0x53, 0x80, 0xe7, 0x9f, 0x92, 0x3f, 0x49, + 0x6c, 0x87, 0x9f, 0x2e, 0x52, 0x53, 0xab, 0x85, 0x8d, 0x76, 0x5f, 0xaf, + 0x8f, 0x48, 0x1b, 0xec, 0xd8, 0xc2, 0x4e, 0x81, 0xad, 0x1e, 0xf7, 0xb9, + 0xc7, 0xc3, 0x40, 0xb7, 0xf0, 0xbe, 0xa7, 0x9a, 0xeb, 0x7b, 0x3e, 0xd0, + 0x6b, 0xaa, 0xcf, 0x71, 0x20, 0x4b, 0xde, 0xe2, 0xdd, 0xa5, 0xda, 0xe8, + 0xd1, 0xe0, 0x10, 0xfe, 0xad, 0xfa, 0x54, 0x62, 0x32, 0xc2, 0xdf, 0x7d, + 0xf6, 0x38, 0xb8, 0xb8, 0x49, 0x20, 0x18, 0x6f, 0xdd, 0xb4, 0xae, 0xa5, + 0xb7, 0x07, 0xd5, 0xbd, 0xbe, 0xef, 0xe4, 0xf7, 0x49, 0x4f, 0x15, 0xd6, + 0x3a, 0x03, 0x71, 0x3a, 0x26, 0x43, 0x6f, 0xb5, 0xa1, 0x94, 0x31, 0xbb, + 0x0f, 0xd1, 0x73, 0xcb, 0x4e, 0x9c, 0xc8, 0xd5, 0x70, 0x0b, 0xda, 0xb3, + 0xe9, 0xa3, 0x2f, 0x0d, 0xf5, 0xbd, 0x81, 0xf5, 0xbc, 0x7b, 0x98, 0xe0, + 0x0c, 0x81, 0xac, 0x41, 0x5c, 0xbb, 0xfa, 0x7e, 0x0d, 0x4e, 0x73, 0x3e, + 0xc9, 0x44, 0xb7, 0x82, 0x6b, 0x6c, 0x79, 0x24, 0xa7, 0xcf, 0x52, 0x5e, + 0x80, 0xdc, 0x2e, 0x9c, 0xdf, 0xa3, 0x87, 0x46, 0xa6, 0x49, 0x2c, 0x07, + 0x53, 0xf1, 0x4c, 0x71, 0xb0, 0x41, 0x8f, 0xb2, 0x51, 0xff, 0x00, 0x6d, + 0xb7, 0xfb, 0x92, 0x53, 0xce, 0xfd, 0x4b, 0x00, 0xfd, 0x60, 0xa4, 0xf8, + 0x32, 0xc2, 0x3f, 0xcc, 0x72, 0xf4, 0xca, 0xe2, 0x01, 0x32, 0x78, 0x1a, + 0xac, 0x1e, 0x95, 0x4e, 0x23, 0x73, 0x9a, 0x6b, 0xa6, 0xaa, 0x9c, 0x1a, + 0xef, 0x7b, 0x18, 0xd6, 0x9e, 0x3c, 0x42, 0xdf, 0x61, 0x1b, 0xc4, 0x88, + 0x10, 0x02, 0x4a, 0x5b, 0x30, 0xce, 0xc6, 0xb7, 0xe9, 0x4f, 0xe0, 0x02, + 0xa8, 0xf1, 0x21, 0xc0, 0x7b, 0x64, 0x00, 0x3e, 0x2a, 0x59, 0x97, 0x46, + 0x4d, 0x6d, 0x33, 0xa8, 0x74, 0x0f, 0xb9, 0x54, 0xbe, 0xed, 0xb7, 0x39, + 0xbb, 0x88, 0x3b, 0x44, 0x1e, 0xdf, 0x24, 0x94, 0xc2, 0xf7, 0x00, 0xc7, + 0xb1, 0xbe, 0xd7, 0x69, 0x3d, 0xd0, 0x6a, 0xaf, 0x60, 0x6f, 0x70, 0xfd, + 0x00, 0x44, 0xfc, 0xd2, 0xe7, 0x0d, 0x40, 0xe7, 0xcd, 0x43, 0xd7, 0x6b, + 0x06, 0xd7, 0x49, 0x24, 0x98, 0x1e, 0x29, 0x29, 0x70, 0xd6, 0xfd, 0xbc, + 0x07, 0x91, 0xb6, 0xda, 0x83, 0xfe, 0x25, 0xbe, 0xc3, 0xff, 0x00, 0x44, + 0xaf, 0x37, 0xca, 0xa9, 0xd8, 0xd9, 0x77, 0x53, 0xc1, 0xa6, 0xc7, 0x36, + 0x7f, 0xaa, 0x61, 0x7a, 0x05, 0xae, 0x73, 0x6d, 0xc5, 0xb9, 0xda, 0x80, + 0xe2, 0x1d, 0xe4, 0x1d, 0xa2, 0xa5, 0xd4, 0x71, 0x31, 0x7e, 0xd4, 0xf7, + 0x9a, 0x58, 0xe2, 0xf0, 0x1e, 0x5c, 0xe6, 0x82, 0x4c, 0xf2, 0x4a, 0x4a, + 0x78, 0xa3, 0x93, 0x90, 0x79, 0xb5, 0xe7, 0xfb, 0x45, 0x47, 0xd5, 0xb3, + 0xf7, 0xdd, 0xf7, 0x95, 0xd4, 0x9c, 0x7c, 0x5d, 0xdf, 0xcc, 0xd5, 0x1d, + 0xfd, 0xad, 0xf9, 0x42, 0x81, 0x6e, 0x13, 0x5a, 0x4b, 0xea, 0xad, 0x84, + 0x76, 0x2d, 0x12, 0x92, 0x95, 0xf5, 0x90, 0x1c, 0x9e, 0x91, 0xd3, 0xb3, + 0x5b, 0xfb, 0xa0, 0x3c, 0xff, 0x00, 0x59, 0xa3, 0xf8, 0xb5, 0x73, 0x5e, + 0xab, 0xbd, 0x2f, 0x4e, 0x7d, 0xbb, 0xb7, 0x7c, 0xe2, 0x17, 0x69, 0x43, + 0xf1, 0xaf, 0xe8, 0xbb, 0xee, 0x69, 0xf4, 0x69, 0x76, 0xad, 0x0d, 0x06, + 0x00, 0x3d, 0x9a, 0x81, 0xb7, 0xa7, 0x46, 0xef, 0xb3, 0x37, 0xd1, 0x89, + 0xdf, 0x2d, 0x9f, 0xfa, 0x98, 0x49, 0x4e, 0xa3, 0xf0, 0xee, 0x6f, 0xe6, + 0xee, 0x1d, 0xe0, 0xa8, 0x86, 0x41, 0xd4, 0x44, 0x76, 0x90, 0xb4, 0xf2, + 0xf2, 0xb0, 0xb0, 0x65, 0xf9, 0x56, 0xb2, 0xae, 0xf0, 0x4f, 0xb8, 0xfc, + 0x1a, 0x35, 0x2b, 0x8a, 0xea, 0xdf, 0x59, 0x2d, 0xbb, 0x39, 0xce, 0xc3, + 0x60, 0x65, 0x2d, 0x88, 0xdc, 0x25, 0xce, 0x8e, 0xe5, 0x25, 0x3d, 0x28, + 0x0d, 0x8e, 0xdf, 0x32, 0xa3, 0xed, 0x89, 0x91, 0xaf, 0x1a, 0xae, 0x3e, + 0xcf, 0xac, 0x1d, 0x4a, 0xc7, 0x17, 0x17, 0xb5, 0xa4, 0xea, 0x76, 0xb1, + 0xa3, 0xf8, 0x28, 0x7e, 0xdc, 0xea, 0x5f, 0xe9, 0x7f, 0xe8, 0xb7, 0xfb, + 0x92, 0x53, 0xda, 0x32, 0x96, 0xde, 0xe0, 0x5d, 0xad, 0x75, 0x9d, 0xce, + 0x9e, 0x09, 0xec, 0x12, 0xcb, 0xc8, 0x2e, 0x24, 0x3c, 0xcb, 0x1a, 0x24, + 0xcf, 0xee, 0xf6, 0x6f, 0x1f, 0x9c, 0x54, 0x30, 0x85, 0xf5, 0x74, 0xda, + 0x86, 0x41, 0x9b, 0xac, 0x6e, 0xfb, 0x0f, 0xb6, 0x44, 0xeb, 0x02, 0x20, + 0x68, 0x21, 0x65, 0xf5, 0x6c, 0xad, 0x98, 0xfe, 0x98, 0x20, 0x39, 0xf2, + 0x5d, 0x1e, 0x69, 0x29, 0xc8, 0xea, 0x39, 0x4f, 0xc9, 0xbc, 0xbc, 0xbb, + 0xdb, 0x3a, 0x00, 0xae, 0x62, 0x61, 0xb6, 0xea, 0x31, 0x69, 0x78, 0x05, + 0x87, 0xd5, 0xb9, 0xf3, 0xde, 0x3d, 0x83, 0xfe, 0xa5, 0x64, 0xbc, 0xcb, + 0x9b, 0xde, 0x47, 0xf1, 0x5b, 0xdb, 0xcd, 0x15, 0x17, 0xd6, 0x60, 0x53, + 0x8c, 0xc6, 0x8f, 0x8b, 0xc6, 0xe3, 0xf9, 0x52, 0x53, 0x91, 0x8c, 0xdd, + 0xf7, 0x35, 0x91, 0x21, 0xc4, 0x00, 0x3e, 0x70, 0xaf, 0x5b, 0x97, 0xe8, + 0xfd, 0x60, 0x20, 0x1f, 0xd1, 0xb8, 0xfa, 0x6e, 0x1d, 0x88, 0xe1, 0x56, + 0xe9, 0x0d, 0x2e, 0xbe, 0x97, 0x01, 0xa9, 0xb1, 0xad, 0x9f, 0x9c, 0x93, + 0xf7, 0x21, 0x75, 0x22, 0x3d, 0x67, 0x5c, 0x07, 0xb8, 0xd8, 0x48, 0x77, + 0x78, 0x05, 0x25, 0x2d, 0x92, 0xc3, 0x8d, 0x9a, 0xf6, 0xb4, 0xc0, 0x6b, + 0xa1, 0xa4, 0x78, 0x4c, 0xb5, 0x75, 0x58, 0xfd, 0x45, 0xb6, 0xd1, 0x5d, + 0x8e, 0x69, 0xf7, 0x8d, 0x48, 0x23, 0xe9, 0x0f, 0xa4, 0xb0, 0xb2, 0x71, + 0x99, 0x97, 0xd4, 0x31, 0x19, 0xba, 0x3e, 0xd8, 0xd6, 0x43, 0xbc, 0x0b, + 0x84, 0x0f, 0xc5, 0x5a, 0xfa, 0xbd, 0x49, 0xbe, 0xeb, 0x7a, 0x7d, 0xae, + 0x35, 0x5a, 0xd9, 0x20, 0x40, 0x24, 0xb9, 0x9a, 0x39, 0xba, 0xa4, 0xa7, + 0x55, 0xd9, 0xb5, 0x11, 0xb5, 0xb2, 0xe7, 0x9e, 0x00, 0xd5, 0x0f, 0x2a, + 0xe0, 0xdc, 0x6d, 0xcf, 0x05, 0xaf, 0x82, 0xe7, 0x03, 0xa1, 0x1b, 0x41, + 0x2a, 0xf3, 0x7a, 0x56, 0xcd, 0x24, 0x1d, 0xbc, 0x92, 0x48, 0x2b, 0x3b, + 0xac, 0xd0, 0xe6, 0x30, 0x50, 0xc6, 0xc5, 0x96, 0xb5, 0xac, 0x89, 0x9d, + 0x6c, 0x70, 0x68, 0x49, 0x4e, 0x4f, 0x51, 0x9a, 0xf0, 0x71, 0x6a, 0x88, + 0x8a, 0xf7, 0xbb, 0xfa, 0xcf, 0xd5, 0x54, 0x15, 0x06, 0xe2, 0x36, 0xd6, + 0xea, 0x77, 0xba, 0xb7, 0x9f, 0x08, 0x6b, 0x48, 0xfe, 0x2a, 0xdf, 0x56, + 0x31, 0x98, 0xec, 0x5e, 0x45, 0x4e, 0x0c, 0x3d, 0xf4, 0x62, 0x23, 0x30, + 0x85, 0x0c, 0xc8, 0xa6, 0xe2, 0x62, 0xec, 0x76, 0x65, 0xd4, 0x40, 0x24, + 0x4f, 0xfb, 0xf4, 0x49, 0x4e, 0x76, 0x20, 0xdd, 0x7c, 0x9d, 0x34, 0x56, + 0xde, 0x60, 0x91, 0xe4, 0xaa, 0xd2, 0xed, 0xbb, 0x9f, 0xc9, 0x3a, 0x4a, + 0x26, 0xf2, 0x49, 0x9e, 0x23, 0x94, 0x94, 0xd7, 0xbf, 0xb9, 0xf2, 0x2a, + 0xc6, 0x03, 0x85, 0x38, 0xe1, 0xe4, 0xfd, 0x39, 0xdb, 0xe7, 0xa2, 0xab, + 0x7e, 0xad, 0xf3, 0x57, 0x58, 0x05, 0x74, 0x36, 0xb3, 0xf9, 0xad, 0x1f, + 0xed, 0x49, 0x4f, 0x71, 0xf5, 0x79, 0xad, 0x18, 0x6c, 0x63, 0x9b, 0x0f, + 0x00, 0x43, 0x8e, 0xa2, 0x48, 0x9f, 0xe2, 0xb4, 0xac, 0x86, 0x3b, 0x6b, + 0xa6, 0xb2, 0x01, 0x87, 0xb7, 0x43, 0xaf, 0xe0, 0xa9, 0x74, 0x2b, 0x2b, + 0x6e, 0x0d, 0x4e, 0x24, 0x0a, 0xdc, 0xd5, 0xa7, 0xbf, 0x1e, 0xd1, 0x06, + 0xc6, 0xba, 0x3c, 0xd2, 0x52, 0x3a, 0xde, 0xd0, 0xc0, 0x1a, 0x64, 0x44, + 0x3b, 0xcf, 0xcd, 0x63, 0xf5, 0x0a, 0x62, 0xd0, 0x58, 0x09, 0x04, 0x10, + 0x63, 0x58, 0x82, 0xb5, 0x72, 0x1b, 0x56, 0x33, 0x1d, 0x66, 0xf0, 0x1b, + 0x1f, 0x44, 0x95, 0x41, 0xb6, 0xfa, 0x80, 0xb9, 0xd0, 0x1b, 0x3e, 0xdf, + 0x81, 0x49, 0x4e, 0x7b, 0xaa, 0xb0, 0x88, 0xd8, 0xef, 0x23, 0x05, 0x0d, + 0xcc, 0xb6, 0x67, 0x63, 0xa7, 0xc2, 0x0a, 0xd3, 0x7d, 0x95, 0xb1, 0xa4, + 0xbd, 0xdb, 0x47, 0x89, 0x3e, 0x29, 0xc9, 0x11, 0xcc, 0xa4, 0xa6, 0xaf, + 0x4e, 0x0f, 0xfb, 0x60, 0x76, 0xc2, 0x06, 0xd7, 0x6a, 0x44, 0x0e, 0x21, + 0x6d, 0x0b, 0x08, 0x21, 0xd0, 0x61, 0xa3, 0x5f, 0x9a, 0xcf, 0x65, 0x90, + 0x64, 0x6a, 0x60, 0xe8, 0xac, 0xd0, 0x5c, 0xfa, 0x9c, 0x5e, 0xe9, 0x2e, + 0xee, 0x7c, 0xbb, 0x24, 0xa6, 0xa6, 0x5d, 0xed, 0xfb, 0x65, 0x60, 0x49, + 0x0d, 0x61, 0x3a, 0xf9, 0x94, 0x2c, 0xaa, 0xc5, 0xa4, 0x90, 0xed, 0xba, + 0x01, 0x2a, 0xbe, 0x63, 0xe7, 0xab, 0xc7, 0x66, 0xd4, 0xd1, 0xf3, 0x2e, + 0x2a, 0xfb, 0x01, 0x7b, 0xbb, 0x44, 0x4a, 0x4a, 0x6b, 0x3d, 0x8e, 0x66, + 0x3e, 0xa7, 0x5e, 0x37, 0x2a, 0x0f, 0xc9, 0x0d, 0xb6, 0xb0, 0x27, 0xc6, + 0x5d, 0xc6, 0x8b, 0x5b, 0x32, 0xb6, 0x7a, 0x0f, 0x24, 0x49, 0x10, 0x42, + 0xce, 0xda, 0xd6, 0x30, 0x3b, 0x61, 0x3b, 0xb8, 0x31, 0x30, 0x01, 0xd7, + 0xef, 0x49, 0x49, 0x72, 0x5d, 0x34, 0xd4, 0x41, 0x89, 0x13, 0xaa, 0xa9, + 0xd5, 0x9c, 0xe6, 0x8a, 0x5e, 0x41, 0x2e, 0x76, 0xe6, 0x98, 0x1c, 0x46, + 0xbf, 0x72, 0xbf, 0x6d, 0x61, 0xd5, 0xb5, 0xc0, 0x4c, 0x73, 0x3e, 0x01, + 0x03, 0xab, 0x54, 0xdb, 0x70, 0xdc, 0xe7, 0xb1, 0xd6, 0xb5, 0xa4, 0x12, + 0xda, 0xc9, 0x0e, 0xd7, 0x4e, 0xc9, 0x29, 0xc0, 0xb9, 0xf6, 0xb6, 0xaf, + 0x50, 0xfb, 0x58, 0x49, 0x1a, 0x9d, 0x74, 0x8e, 0x3e, 0xf5, 0x9b, 0xb8, + 0x1b, 0x88, 0x7b, 0xe4, 0xcf, 0x60, 0x0c, 0x41, 0x57, 0x5b, 0x6d, 0x59, + 0xf7, 0x9e, 0x9f, 0x8b, 0x8d, 0x61, 0x73, 0xcf, 0xd2, 0xdf, 0xf4, 0x60, + 0x46, 0xe3, 0xb9, 0xab, 0x4a, 0x9f, 0xaa, 0xf8, 0xb8, 0xf0, 0xec, 0x9b, + 0x4d, 0xb6, 0xf3, 0xb1, 0xbe, 0xd6, 0x79, 0x49, 0xe4, 0xa4, 0xa5, 0x74, + 0x47, 0xc6, 0x36, 0x4e, 0x30, 0x3b, 0x8c, 0x6f, 0x9f, 0x32, 0x3c, 0x15, + 0x6f, 0x52, 0xad, 0xdb, 0xb6, 0xb7, 0x77, 0x3b, 0x7b, 0x6e, 0xf1, 0x85, + 0xa5, 0x85, 0x45, 0x35, 0x64, 0xd8, 0x05, 0x66, 0xbb, 0x1d, 0xed, 0xd0, + 0x97, 0x31, 0xcd, 0x3d, 0xc1, 0x23, 0x9f, 0x25, 0x9f, 0xff, 0x00, 0x37, + 0x32, 0xfe, 0xd5, 0xbf, 0xed, 0x23, 0xec, 0xfb, 0xb7, 0xcc, 0x1f, 0x53, + 0xfa, 0x91, 0xc2, 0x4a, 0x73, 0x9b, 0x53, 0x9b, 0xba, 0xcb, 0x3d, 0xce, + 0x3c, 0xbd, 0xda, 0x9f, 0xbc, 0xaa, 0x42, 0xdc, 0xba, 0x72, 0xef, 0x18, + 0xee, 0x35, 0xfa, 0xad, 0x35, 0x5a, 0x74, 0x8d, 0x8e, 0x89, 0x06, 0x56, + 0xd5, 0x8d, 0xc7, 0xc7, 0x27, 0x71, 0xdd, 0x60, 0xd4, 0x0f, 0xa6, 0xff, + 0x00, 0xfc, 0x8b, 0x56, 0x45, 0xd7, 0x97, 0x5e, 0xf2, 0x04, 0x19, 0xd0, + 0x0d, 0x52, 0x53, 0x4a, 0xe6, 0x38, 0x3c, 0xb8, 0x88, 0x92, 0x63, 0xe4, + 0xae, 0xf4, 0x1c, 0x36, 0xe6, 0x75, 0x3a, 0xab, 0x78, 0x26, 0xb6, 0x7e, + 0x92, 0xc0, 0x23, 0xe8, 0xb3, 0x58, 0xd7, 0xc4, 0xe8, 0x84, 0xe7, 0x06, + 0xf6, 0xd0, 0xce, 0xe3, 0xaf, 0x2b, 0xa0, 0xfa, 0xbb, 0x40, 0xc7, 0xc5, + 0xbb, 0x2c, 0xb7, 0x5b, 0x9d, 0xb1, 0x80, 0xf8, 0x37, 0xf7, 0x4e, 0xa7, + 0xe9, 0x14, 0x94, 0xea, 0x65, 0xdc, 0x08, 0x33, 0x1b, 0x49, 0xd7, 0xda, + 0x20, 0x86, 0xfc, 0x75, 0x1a, 0xae, 0x77, 0xa9, 0x5a, 0xe2, 0xf2, 0x1d, + 0xc9, 0xd7, 0xe4, 0xb5, 0x72, 0x5d, 0xbf, 0xf4, 0x60, 0x80, 0x5f, 0x00, + 0x18, 0x8e, 0x3e, 0x2b, 0x17, 0xa8, 0xd9, 0xba, 0xf7, 0x88, 0x82, 0xdd, + 0x3e, 0xe4, 0x94, 0xd3, 0xad, 0x86, 0xdb, 0xeb, 0x60, 0xd3, 0x79, 0x03, + 0xef, 0x30, 0xb6, 0xf3, 0xc1, 0xfb, 0x16, 0x5b, 0x99, 0xf9, 0xd6, 0x00, + 0x23, 0xf7, 0x43, 0x9a, 0x16, 0x6f, 0x49, 0x60, 0x77, 0x51, 0xc7, 0x27, + 0x86, 0x12, 0xf7, 0x7c, 0x1b, 0xee, 0x8f, 0xc1, 0x6d, 0xbb, 0x18, 0xbb, + 0xa3, 0xbb, 0x36, 0xb7, 0xcb, 0x36, 0xb9, 0xcf, 0x0e, 0xd3, 0x59, 0x83, + 0x1f, 0x34, 0x94, 0xe4, 0xf4, 0x70, 0x0e, 0x65, 0x0d, 0xe5, 0xad, 0xde, + 0xe1, 0x1d, 0xf6, 0xb4, 0xa0, 0xe7, 0x3e, 0x69, 0x03, 0x80, 0x0c, 0x91, + 0xa6, 0xa7, 0xe2, 0x8d, 0xd1, 0x25, 0xb9, 0x2e, 0xb3, 0x48, 0xaa, 0x87, + 0x98, 0x22, 0x64, 0xb8, 0x7f, 0xe6, 0x48, 0x57, 0x17, 0x1a, 0x1e, 0xe0, + 0x06, 0x9c, 0x4f, 0x10, 0x7b, 0xea, 0x92, 0x9d, 0x1e, 0x8d, 0x5f, 0xda, + 0x7a, 0x87, 0x48, 0x73, 0x88, 0x0d, 0xac, 0x17, 0x38, 0x9d, 0x04, 0x54, + 0x4b, 0x95, 0x8e, 0xbc, 0xea, 0xfa, 0x7f, 0x5e, 0xaf, 0xaa, 0x61, 0x3c, + 0x39, 0x96, 0xb8, 0x58, 0x43, 0x78, 0xf5, 0x1b, 0xa3, 0xc4, 0xff, 0x00, + 0x28, 0x2c, 0x7a, 0xc1, 0x77, 0x4f, 0xc7, 0x82, 0x41, 0x6b, 0xac, 0x06, + 0x3c, 0x1c, 0x42, 0x0d, 0xd8, 0xd7, 0x35, 0xfb, 0x89, 0x80, 0xe1, 0x2c, + 0x64, 0xfe, 0x77, 0x90, 0x49, 0x4f, 0x57, 0xd4, 0x7e, 0xb0, 0x1c, 0x8a, + 0xe3, 0x1e, 0x90, 0xc6, 0x58, 0x01, 0x0e, 0x71, 0x25, 0xd0, 0x7b, 0xe9, + 0x10, 0xb3, 0x2f, 0xc9, 0x73, 0x5b, 0x8f, 0x75, 0x8f, 0x20, 0x1b, 0x41, + 0xde, 0x4e, 0xbe, 0xc1, 0x22, 0x0f, 0xc4, 0xac, 0x23, 0x63, 0xe1, 0xa0, + 0x19, 0x04, 0x16, 0x89, 0xd4, 0x09, 0x5a, 0xd9, 0xbb, 0xb1, 0xdb, 0x8b, + 0x57, 0x2f, 0x65, 0x73, 0x11, 0xa4, 0xb8, 0xf8, 0x24, 0xa6, 0x9b, 0xec, + 0x36, 0xe5, 0xd9, 0x63, 0x89, 0x79, 0x76, 0xe7, 0x13, 0xc9, 0x33, 0xf1, + 0x47, 0xcb, 0xca, 0xf5, 0x0d, 0x2f, 0x01, 0xec, 0x68, 0x1f, 0x67, 0x2e, + 0x7c, 0x70, 0x47, 0x04, 0x4c, 0xe9, 0x0a, 0xa5, 0x26, 0x1c, 0xf7, 0x1e, + 0xc3, 0x5f, 0xbd, 0x3e, 0x46, 0xec, 0x8b, 0x1a, 0xc3, 0xb6, 0xa7, 0x00, + 0x60, 0x1f, 0xbb, 0x5f, 0x34, 0x94, 0xc9, 0xdb, 0x6b, 0x6b, 0x6b, 0x6e, + 0xb2, 0x49, 0xdd, 0xd9, 0x4e, 0x43, 0x5a, 0xe7, 0x3b, 0x84, 0x17, 0x54, + 0x7d, 0x50, 0xd0, 0x61, 0xac, 0x10, 0x39, 0xec, 0xad, 0x57, 0x8f, 0x5b, + 0x87, 0xb8, 0x6e, 0x03, 0x89, 0xf1, 0x49, 0x4d, 0x29, 0xf5, 0x6e, 0x63, + 0x07, 0x03, 0xdc, 0xef, 0x80, 0xec, 0xae, 0x3f, 0x69, 0x61, 0x1e, 0x23, + 0x54, 0x21, 0x8d, 0xbf, 0x24, 0xd5, 0x4c, 0x6f, 0x71, 0x0d, 0x63, 0xbb, + 0x0d, 0xca, 0x19, 0x63, 0x37, 0x07, 0x23, 0xec, 0xb9, 0x75, 0xfb, 0xf4, + 0xd0, 0x19, 0xdc, 0xd3, 0xc1, 0x69, 0x09, 0x29, 0xde, 0xfa, 0xb1, 0xf5, + 0x91, 0x98, 0x8d, 0xfd, 0x99, 0x9e, 0x40, 0x63, 0x49, 0xfb, 0x3d, 0xae, + 0xfa, 0x3a, 0xfe, 0x63, 0xff, 0x00, 0x81, 0x5b, 0xb7, 0xf5, 0x3a, 0x00, + 0x26, 0x2b, 0x60, 0xe4, 0x96, 0xf2, 0xbc, 0xf2, 0xd2, 0xc1, 0xa3, 0x8e, + 0xe8, 0xfc, 0xde, 0xea, 0xc7, 0x4e, 0xae, 0xec, 0x87, 0x59, 0x5e, 0xd7, + 0x3e, 0xb6, 0xb7, 0xe8, 0x82, 0x4e, 0xd9, 0x29, 0x29, 0xea, 0x9b, 0xd4, + 0xfa, 0x73, 0x9f, 0xeb, 0x64, 0xe4, 0xb0, 0x37, 0xf3, 0x59, 0xbb, 0x71, + 0x3f, 0x18, 0x9f, 0xb9, 0x3d, 0xdf, 0x59, 0xfa, 0x4d, 0x7c, 0x58, 0xeb, + 0x3f, 0xaa, 0xd3, 0xfc, 0x61, 0x73, 0x6f, 0xe9, 0x16, 0x56, 0x24, 0x35, + 0xce, 0x9e, 0x06, 0xb1, 0xf8, 0x21, 0x59, 0x86, 0xc7, 0xd6, 0xc9, 0xf6, + 0xed, 0xf6, 0x93, 0xaf, 0xf1, 0x49, 0x4f, 0x46, 0x3e, 0xb6, 0xf4, 0xb7, + 0x7b, 0x4b, 0x6d, 0x8f, 0x1d, 0xa0, 0xfe, 0x47, 0x2b, 0x54, 0xf5, 0xfe, + 0x93, 0x73, 0x4c, 0x65, 0x35, 0x87, 0xc2, 0xcf, 0x61, 0xff, 0x00, 0xa4, + 0x17, 0x26, 0xce, 0x94, 0xcb, 0x8c, 0x53, 0xac, 0x46, 0xee, 0x74, 0x9f, + 0x3e, 0xe8, 0xaf, 0xe8, 0x4d, 0x07, 0x4b, 0x1c, 0x20, 0x02, 0x77, 0x0d, + 0x3e, 0x09, 0x29, 0xec, 0xa8, 0xcc, 0xc3, 0xb1, 0xed, 0xf4, 0x6f, 0xae, + 0xc7, 0x9e, 0x1a, 0xd7, 0x35, 0xc4, 0xfd, 0xc5, 0x69, 0x56, 0xd0, 0xda, + 0x1a, 0x0b, 0x75, 0x3a, 0xc7, 0x9a, 0xe2, 0x7a, 0x0f, 0x4e, 0xae, 0x9e, + 0xad, 0x53, 0x81, 0x20, 0xb1, 0xaf, 0x3a, 0xf7, 0xf6, 0xc2, 0xee, 0xa4, + 0xfa, 0x20, 0x90, 0x23, 0xb1, 0xee, 0x92, 0x9e, 0x6f, 0x29, 0xf3, 0xd7, + 0x1c, 0x22, 0x61, 0xac, 0xef, 0xa4, 0x00, 0xb6, 0x81, 0x61, 0x68, 0xb0, + 0x6b, 0x23, 0x48, 0x58, 0x85, 0x81, 0xdd, 0x5a, 0xdb, 0x0b, 0xa3, 0x8d, + 0x38, 0xd3, 0xc9, 0x6e, 0x62, 0xfd, 0x03, 0xc0, 0xf0, 0x3e, 0x09, 0x29, + 0x59, 0x00, 0x7d, 0x9c, 0x88, 0x91, 0x0a, 0x98, 0xac, 0x1d, 0x22, 0x4f, + 0xe6, 0xf8, 0x00, 0x56, 0x86, 0x40, 0x26, 0xa7, 0x98, 0xe4, 0x6a, 0x7b, + 0xac, 0xf6, 0x98, 0xd3, 0x4f, 0x12, 0x52, 0x52, 0x76, 0xd2, 0x03, 0x1a, + 0x1b, 0xa0, 0x6c, 0x82, 0x00, 0x4a, 0xca, 0xdc, 0xcc, 0x4b, 0x08, 0x68, + 0x2f, 0x82, 0x40, 0x7f, 0xd1, 0xd3, 0xc5, 0x1a, 0x98, 0x73, 0x1b, 0x1c, + 0x9e, 0x0f, 0x01, 0x48, 0xb0, 0x90, 0xfa, 0xdd, 0xa6, 0xe1, 0xac, 0x71, + 0xa8, 0xec, 0x92, 0x9c, 0x4c, 0x6c, 0x9c, 0x83, 0xa5, 0x38, 0xec, 0x30, + 0x20, 0xba, 0xa2, 0xd3, 0xfd, 0xc5, 0x4b, 0xa8, 0xdb, 0x91, 0x4e, 0x29, + 0xb4, 0x38, 0x35, 0xcc, 0x6c, 0xc0, 0x00, 0xbd, 0xcf, 0xec, 0xd1, 0x2b, + 0x3c, 0x60, 0xe5, 0x92, 0x5f, 0x89, 0x98, 0xd0, 0x41, 0x20, 0xbc, 0xb0, + 0xb1, 0xed, 0x23, 0xb3, 0xb6, 0x95, 0x26, 0xe0, 0x5c, 0xf2, 0x0e, 0x75, + 0xe3, 0x26, 0xdf, 0xcd, 0x60, 0x92, 0xd9, 0x8e, 0x4c, 0xf6, 0x49, 0x48, + 0xe8, 0xeb, 0x79, 0xb7, 0x61, 0x4e, 0x55, 0x41, 0x97, 0x31, 0xc2, 0x08, + 0x1e, 0xd7, 0x81, 0xac, 0xc0, 0xe1, 0x68, 0xfa, 0xe7, 0x66, 0xe9, 0x1f, + 0x4b, 0xe5, 0xcc, 0xfe, 0x44, 0x21, 0x89, 0x8a, 0xca, 0xb6, 0xd7, 0x53, + 0x78, 0x82, 0x00, 0x83, 0x31, 0x06, 0x15, 0x4f, 0xb4, 0xd7, 0xf6, 0x6f, + 0x4e, 0x4f, 0xa9, 0x3b, 0x76, 0x41, 0x9d, 0xdb, 0x76, 0x7d, 0xe9, 0x29, + 0xcf, 0x7e, 0xd6, 0xb2, 0x18, 0x00, 0x1f, 0x95, 0x63, 0x3a, 0x1d, 0x63, + 0x8f, 0x1a, 0x9f, 0xca, 0xb4, 0xad, 0xb7, 0xc3, 0x8e, 0x01, 0x55, 0x2b, + 0xc2, 0xb7, 0xe9, 0x3d, 0xae, 0x60, 0x74, 0xc3, 0x83, 0x49, 0x1f, 0x34, + 0x94, 0x84, 0x00, 0xc3, 0x0d, 0x77, 0x7d, 0x67, 0x85, 0xd5, 0xb5, 0xbf, + 0x67, 0xc3, 0xa6, 0x91, 0x00, 0x06, 0x82, 0xe8, 0x30, 0x1c, 0x7e, 0x91, + 0xd7, 0xe2, 0x56, 0x26, 0x37, 0x4e, 0x73, 0xf2, 0x18, 0xd6, 0x9f, 0x51, + 0xa5, 0xe3, 0x71, 0x68, 0xd2, 0x06, 0xbc, 0xf0, 0xb6, 0x6f, 0x79, 0xb2, + 0xe9, 0x9f, 0xa4, 0x44, 0x81, 0xac, 0xc9, 0xef, 0xe0, 0x92, 0x90, 0xdc, + 0x59, 0x2d, 0x7b, 0xc9, 0x1e, 0x90, 0x24, 0xcf, 0x73, 0x1b, 0xb9, 0x58, + 0x17, 0xdd, 0xbc, 0xb8, 0x9e, 0x4e, 0xab, 0x73, 0xae, 0xbb, 0x1e, 0x8c, + 0x4c, 0x71, 0x51, 0x9c, 0x8c, 0x86, 0xef, 0xb4, 0x4f, 0x00, 0xb8, 0xed, + 0xfc, 0x17, 0x36, 0xe3, 0x3f, 0x3e, 0x42, 0x4a, 0x75, 0xba, 0x23, 0x40, + 0xc6, 0xcd, 0xcb, 0x77, 0x15, 0x54, 0x6b, 0x1f, 0xd6, 0xb2, 0x00, 0xfc, + 0x25, 0x6f, 0x61, 0xe2, 0x3a, 0xcf, 0xab, 0xae, 0x61, 0xb3, 0xdb, 0x6d, + 0x4e, 0x10, 0x78, 0x69, 0x0e, 0x77, 0xf1, 0x0b, 0x02, 0xb2, 0xec, 0x5e, + 0x8c, 0xda, 0x9d, 0xf4, 0xb2, 0x9d, 0xeb, 0x91, 0x3d, 0x98, 0x0b, 0x58, + 0x0f, 0xc7, 0x95, 0xad, 0x5d, 0xce, 0xc7, 0xfa, 0xaf, 0x8f, 0x53, 0x8b, + 0x9a, 0xeb, 0x74, 0x6f, 0xf5, 0x77, 0xb9, 0xee, 0x03, 0xe4, 0x12, 0x53, + 0x99, 0xd2, 0xda, 0x3d, 0x2e, 0xa3, 0x91, 0x30, 0xca, 0xaa, 0x6d, 0x4d, + 0x3e, 0x6e, 0x70, 0xd7, 0xfe, 0x8a, 0xa8, 0xdd, 0xe3, 0x1a, 0xc3, 0xa1, + 0x64, 0x00, 0x24, 0x4f, 0xdc, 0xaf, 0xd7, 0xfa, 0xaf, 0xd5, 0xa2, 0xf7, + 0x0f, 0x76, 0x4d, 0xcd, 0x86, 0x8e, 0xe1, 0x82, 0x7f, 0x8a, 0xa5, 0x8e, + 0xf1, 0x77, 0xaa, 0xfb, 0x9a, 0xed, 0x8d, 0x67, 0xb0, 0x34, 0x86, 0xa4, + 0xa4, 0xb8, 0xbb, 0x46, 0x05, 0x53, 0xfe, 0x91, 0xfa, 0x7d, 0xc9, 0xc7, + 0xa7, 0x6d, 0xae, 0x0e, 0x33, 0xb5, 0xb0, 0x09, 0xed, 0xe6, 0xa3, 0x43, + 0x76, 0x61, 0xd5, 0xe0, 0x5c, 0xf7, 0x0f, 0xc0, 0x7f, 0x04, 0x07, 0x49, + 0xa9, 0xe4, 0x98, 0x78, 0x24, 0x81, 0xe5, 0x09, 0x29, 0x7c, 0x68, 0xae, + 0xfa, 0xec, 0x74, 0x3a, 0xa7, 0x3b, 0x53, 0xdb, 0x53, 0x05, 0x69, 0xf5, + 0x8a, 0xad, 0x39, 0x32, 0xca, 0xcb, 0xc8, 0xda, 0xd6, 0x11, 0xa8, 0x80, + 0x35, 0x3a, 0x2c, 0x9a, 0x2c, 0xc7, 0xb3, 0x1d, 0x8c, 0xb1, 0xdb, 0x5d, + 0x51, 0x30, 0x38, 0x90, 0x55, 0xdc, 0x8e, 0xa1, 0x8f, 0x95, 0x91, 0x8e, + 0xd2, 0x1e, 0xda, 0xea, 0x69, 0x2f, 0x73, 0x5d, 0x06, 0x7c, 0x41, 0x3e, + 0x41, 0x25, 0x35, 0x5a, 0xdf, 0x41, 0xc4, 0xde, 0x43, 0x37, 0x41, 0x8e, + 0x5d, 0xa1, 0xf0, 0x49, 0xec, 0x75, 0xc5, 0xf7, 0x35, 0x85, 0xb5, 0xc1, + 0xd4, 0xf2, 0x7e, 0x0a, 0xb3, 0x1a, 0xc7, 0xd8, 0xf7, 0xbc, 0xb9, 0xcc, + 0x69, 0x9d, 0x79, 0x89, 0x5a, 0x10, 0x1c, 0xc8, 0x69, 0x22, 0x74, 0x3e, + 0x43, 0xcd, 0x25, 0x34, 0x03, 0xef, 0x6c, 0x9a, 0xec, 0x74, 0x1f, 0x18, + 0xfe, 0x2a, 0x0e, 0xbf, 0x24, 0x08, 0xde, 0x75, 0x45, 0x32, 0x0b, 0x99, + 0xe0, 0x75, 0x3f, 0x04, 0x3b, 0x07, 0x64, 0x94, 0xec, 0xf4, 0x4a, 0x83, + 0xad, 0xc6, 0x71, 0x74, 0x81, 0xee, 0x3f, 0x22, 0x54, 0xbe, 0xb4, 0xed, + 0xfb, 0x7d, 0x0e, 0x89, 0xdd, 0x54, 0x1f, 0x19, 0x0e, 0x28, 0x7d, 0x30, + 0xd8, 0xca, 0x1a, 0xfa, 0x44, 0xb8, 0x08, 0x20, 0xf9, 0x9d, 0x4a, 0x87, + 0x5b, 0xb2, 0xcb, 0x2c, 0xa5, 0xcf, 0x04, 0x6c, 0x90, 0x27, 0xcf, 0x54, + 0x94, 0xd0, 0x6d, 0x35, 0x0d, 0x46, 0xa4, 0xf6, 0x1c, 0xfe, 0x2b, 0x5f, + 0xea, 0xd9, 0x34, 0xf5, 0x07, 0x0d, 0xc5, 0xa0, 0xd6, 0x49, 0x1e, 0x3a, + 0x8d, 0x0a, 0xca, 0x2d, 0x69, 0x99, 0x00, 0xe9, 0xca, 0xb7, 0xd1, 0x5e, + 0xe6, 0x65, 0xcd, 0x7a, 0x9d, 0x8e, 0xe7, 0xe2, 0x12, 0x53, 0xd9, 0x7a, + 0xe3, 0x90, 0x7f, 0x8a, 0x66, 0xba, 0xbb, 0x0c, 0x96, 0xb4, 0xf9, 0xc4, + 0xac, 0xd1, 0x91, 0x6b, 0x7e, 0x97, 0x7e, 0xf3, 0xa7, 0xe0, 0xa6, 0xcc, + 0xc6, 0x0f, 0x69, 0x1b, 0x5c, 0x7f, 0x2a, 0x4a, 0x74, 0x22, 0xb1, 0xf9, + 0xad, 0xfb, 0x82, 0x52, 0xc9, 0xfa, 0x0d, 0x3e, 0x26, 0x02, 0xcf, 0x66, + 0x75, 0x6f, 0x96, 0xd6, 0x77, 0x3c, 0x72, 0x07, 0x20, 0xfc, 0xd1, 0x05, + 0xc7, 0x61, 0x97, 0x00, 0xef, 0xbd, 0x25, 0x3a, 0x18, 0xed, 0x63, 0xed, + 0x00, 0x35, 0xad, 0xf0, 0x22, 0x25, 0x5d, 0x79, 0x2d, 0xa8, 0x07, 0x08, + 0xd2, 0x01, 0x58, 0x55, 0xe5, 0x16, 0x38, 0x3e, 0xb7, 0x49, 0x1f, 0x25, + 0x70, 0xf5, 0x3b, 0x1e, 0xd0, 0xc7, 0xb0, 0x16, 0x8d, 0x64, 0x76, 0x49, + 0x4d, 0x76, 0xd4, 0xd7, 0x5c, 0xe7, 0x38, 0x97, 0x6b, 0xae, 0x9d, 0x8a, + 0xd0, 0xc4, 0x3b, 0x0b, 0xdb, 0x33, 0xba, 0x0e, 0xbc, 0x4a, 0xcb, 0x7e, + 0x56, 0x3d, 0x59, 0x01, 0x8e, 0xb9, 0xac, 0x7b, 0xb5, 0x20, 0x9d, 0xba, + 0x7f, 0x69, 0x5e, 0x63, 0xc0, 0x6e, 0xf6, 0x8d, 0xec, 0x3c, 0x96, 0x99, + 0xfc, 0x89, 0x29, 0xbd, 0x92, 0xef, 0xd1, 0x38, 0x6b, 0x3b, 0x79, 0x0b, + 0x3d, 0xaf, 0x63, 0x01, 0x78, 0x27, 0x4d, 0x1d, 0x23, 0x95, 0x64, 0x90, + 0xea, 0x49, 0x74, 0x88, 0x04, 0x9f, 0x20, 0x02, 0xc3, 0x67, 0x5f, 0xe9, + 0x76, 0x45, 0x4c, 0x7b, 0xac, 0xb1, 0xc7, 0x68, 0x1b, 0x4c, 0x7e, 0x29, + 0x29, 0xdd, 0xab, 0xd5, 0xda, 0x1f, 0x5c, 0x78, 0xb4, 0x3b, 0x8f, 0xc1, + 0x1c, 0xbe, 0xc1, 0xe0, 0x03, 0x80, 0x2e, 0x3e, 0x73, 0xd9, 0x66, 0xd3, + 0xd5, 0x71, 0xab, 0xa9, 0xad, 0x7b, 0x88, 0x70, 0x93, 0xc1, 0x3f, 0x91, + 0x47, 0x27, 0xeb, 0x0e, 0x0e, 0x3e, 0xd7, 0x38, 0x3e, 0xc2, 0xe1, 0x2c, + 0xda, 0xdf, 0x96, 0xbb, 0x88, 0x8e, 0x12, 0x53, 0xcd, 0xe4, 0xf5, 0x0a, + 0x70, 0xfa, 0xb6, 0x58, 0xa9, 0xf3, 0x8d, 0x65, 0xce, 0xdc, 0xf1, 0x30, + 0xd7, 0x10, 0x0b, 0xa0, 0x7f, 0x5b, 0x45, 0xa3, 0x55, 0xac, 0xa8, 0x0b, + 0x18, 0x37, 0xd7, 0x66, 0xbe, 0xa0, 0x23, 0x71, 0x95, 0xcd, 0xe7, 0xda, + 0x32, 0x32, 0xae, 0x7d, 0x75, 0x16, 0x36, 0xeb, 0x1c, 0xf0, 0xce, 0x4e, + 0xa4, 0xee, 0x6f, 0xf1, 0x56, 0x3a, 0x7e, 0x70, 0xe9, 0xe3, 0xec, 0xd7, + 0x3c, 0xb9, 0xa4, 0xc9, 0x81, 0x22, 0xb3, 0xfc, 0x99, 0xe7, 0xcd, 0x25, + 0x3d, 0x0c, 0xbd, 0xde, 0xf6, 0x98, 0x67, 0x7e, 0xc4, 0x26, 0xf4, 0x6c, + 0x9f, 0xb5, 0x76, 0xf0, 0xef, 0x3c, 0x6e, 0xfb, 0x93, 0x7a, 0x98, 0xd5, + 0xb3, 0xd6, 0xbe, 0xc9, 0x6b, 0x40, 0x25, 0xee, 0x3a, 0x47, 0xc3, 0x85, + 0x4b, 0xfe, 0x75, 0x63, 0x7d, 0xa7, 0xd3, 0xf4, 0xdd, 0xf6, 0x7e, 0x3d, + 0x6e, 0xff, 0x00, 0x1d, 0xbe, 0x09, 0x29, 0x2d, 0x78, 0x58, 0xfb, 0x8f, + 0xd9, 0x9d, 0x5e, 0x58, 0x01, 0xc6, 0xd2, 0xed, 0x1a, 0xcd, 0xa7, 0x4e, + 0x34, 0x92, 0x8d, 0x6d, 0xb8, 0xff, 0x00, 0xa2, 0x39, 0x14, 0x93, 0xb9, + 0xc1, 0x95, 0x54, 0xc1, 0xbc, 0xcc, 0x6a, 0x74, 0x5a, 0x57, 0x61, 0x56, + 0xe8, 0x7d, 0x6f, 0x34, 0x06, 0x99, 0xf6, 0x3b, 0x63, 0x60, 0x73, 0xed, + 0x20, 0xb7, 0xf0, 0x40, 0xac, 0xd7, 0x43, 0xac, 0x35, 0x38, 0xfa, 0x80, + 0x48, 0x7b, 0xe0, 0x3a, 0x0f, 0xf6, 0x63, 0xee, 0x09, 0x29, 0xab, 0x25, + 0xe5, 0xd6, 0x86, 0x1a, 0x58, 0xcd, 0xcc, 0x65, 0x64, 0xc6, 0xe1, 0xd9, + 0xdb, 0x42, 0xa6, 0xe7, 0x4b, 0x9c, 0xe3, 0x3a, 0x6e, 0x33, 0xc4, 0xc0, + 0xd3, 0xda, 0xae, 0x59, 0x91, 0x90, 0x59, 0x61, 0xb9, 0xac, 0x63, 0xac, + 0x70, 0x78, 0x15, 0x99, 0xdc, 0x38, 0xdc, 0x66, 0x08, 0x3a, 0x2c, 0xb7, + 0x59, 0x0d, 0x73, 0x84, 0x49, 0xfb, 0xf9, 0x9d, 0x4f, 0x74, 0x94, 0xe7, + 0xf5, 0x3c, 0x97, 0xe4, 0x65, 0x3d, 0xe7, 0x81, 0x0d, 0x6f, 0x93, 0x5a, + 0x36, 0x81, 0xf7, 0x2a, 0xd8, 0x38, 0xbf, 0x6e, 0xcb, 0x65, 0x1e, 0xab, + 0x29, 0x1c, 0x97, 0xd8, 0x60, 0x40, 0xe6, 0x3c, 0xd4, 0xef, 0xbc, 0x81, + 0xbb, 0x63, 0x01, 0x3f, 0xc9, 0x08, 0x4c, 0xb6, 0xd6, 0x80, 0x44, 0x07, + 0x3f, 0xe8, 0x00, 0x23, 0xe6, 0x7f, 0x82, 0x4a, 0x7a, 0x4c, 0xbe, 0x8f, + 0x91, 0x66, 0x38, 0xaf, 0x16, 0xca, 0x6e, 0x71, 0x3c, 0x4b, 0x5a, 0xff, + 0x00, 0x6e, 0x90, 0x0b, 0xb8, 0x08, 0xfd, 0x63, 0x1b, 0x24, 0x1c, 0x4c, + 0x63, 0x56, 0xea, 0xa8, 0xa0, 0xd6, 0xdd, 0xa4, 0x12, 0xfb, 0x5c, 0xdd, + 0xa7, 0x6f, 0xf6, 0x56, 0x1e, 0xe7, 0x59, 0x9f, 0x40, 0x6b, 0xdc, 0x5a, + 0x5f, 0x5b, 0x1d, 0xac, 0x07, 0x0d, 0xdb, 0x23, 0x4f, 0x14, 0xfd, 0x4b, + 0x26, 0xf6, 0x66, 0x5f, 0xe9, 0xd8, 0x59, 0xe9, 0x5c, 0xef, 0x44, 0x03, + 0xa3, 0x5a, 0xd3, 0xb4, 0x06, 0xfd, 0xc9, 0x29, 0x9e, 0x4d, 0x96, 0x16, + 0x55, 0x88, 0xf6, 0xed, 0xaf, 0x15, 0xa5, 0xa1, 0xa4, 0x47, 0xb8, 0x99, + 0x74, 0xcf, 0x9a, 0x88, 0x6b, 0x7e, 0xcf, 0x7b, 0x8c, 0xfd, 0x11, 0x04, + 0x09, 0x83, 0xe0, 0xaa, 0xdb, 0x9b, 0x90, 0x58, 0x3d, 0x7b, 0x5d, 0x61, + 0x80, 0x1a, 0x1c, 0x66, 0x00, 0xf8, 0xab, 0x58, 0x8d, 0x73, 0xba, 0x5d, + 0xd6, 0xbc, 0x9f, 0x7b, 0x89, 0x13, 0xc1, 0xda, 0x3b, 0x24, 0xa4, 0x65, + 0xee, 0xaf, 0x0f, 0x15, 0x9d, 0xcb, 0x5c, 0xf8, 0x1f, 0xca, 0x71, 0x42, + 0xa9, 0xb7, 0x3d, 0xce, 0xda, 0xc0, 0x1a, 0x0c, 0x10, 0x79, 0xdc, 0x46, + 0x9f, 0x8a, 0xd2, 0x18, 0xbb, 0xdb, 0x50, 0x88, 0xf4, 0xeb, 0x63, 0x79, + 0xf2, 0x9f, 0xe2, 0xa1, 0x76, 0x0e, 0x43, 0x2d, 0xf5, 0x71, 0x9b, 0xbf, + 0x74, 0x6f, 0x68, 0x30, 0x64, 0x70, 0x75, 0x49, 0x4e, 0x7b, 0x7a, 0x7d, + 0x8d, 0x78, 0x0e, 0x23, 0x75, 0x9a, 0x01, 0x1c, 0xeb, 0xa9, 0x56, 0xeb, + 0xc1, 0x17, 0x35, 0xd5, 0x30, 0x08, 0x69, 0x9b, 0x08, 0xd3, 0x73, 0x80, + 0xfa, 0x23, 0xc8, 0x27, 0xb2, 0xbc, 0xba, 0x58, 0x72, 0x72, 0x37, 0x7a, + 0xad, 0x00, 0x31, 0xed, 0xda, 0x59, 0x5b, 0x67, 0xdc, 0xd7, 0x0e, 0x64, + 0xa8, 0xd5, 0xd4, 0xf2, 0xac, 0x60, 0x1e, 0xad, 0x60, 0xb7, 0x8d, 0xc0, + 0x8f, 0xc6, 0x02, 0x4a, 0x68, 0xe2, 0x90, 0x1c, 0xf1, 0xe5, 0xf0, 0xe0, + 0xa3, 0x9c, 0x86, 0xd8, 0xf0, 0xc0, 0x03, 0x41, 0x3a, 0x89, 0xfe, 0x2a, + 0xcb, 0x6b, 0xc7, 0x6b, 0xa6, 0xcc, 0x66, 0x92, 0xff, 0x00, 0x6e, 0xea, + 0x2c, 0xdd, 0xa9, 0xf2, 0x04, 0xa4, 0xce, 0x9b, 0xe9, 0x58, 0xf2, 0xf2, + 0x4f, 0x00, 0x0e, 0xe2, 0x52, 0x53, 0x49, 0xc3, 0x75, 0x82, 0x74, 0x93, + 0xaf, 0x82, 0x6b, 0xeb, 0x00, 0x6e, 0xd7, 0x4e, 0xe8, 0xb9, 0x2c, 0x2c, + 0x2c, 0xec, 0x48, 0xd4, 0x78, 0x6d, 0x30, 0x87, 0x63, 0x1c, 0x59, 0xa7, + 0x1d, 0xcf, 0x60, 0x92, 0x9b, 0x78, 0xd6, 0x96, 0xd5, 0x53, 0x00, 0xd2, + 0x24, 0x91, 0xe2, 0x51, 0x7a, 0xa3, 0x5c, 0xec, 0x36, 0x3d, 0xe6, 0x5e, + 0xd7, 0x09, 0x3f, 0x15, 0x0c, 0x36, 0xc5, 0x6d, 0xd6, 0x7b, 0x80, 0x3c, + 0x15, 0x8c, 0xd0, 0x1d, 0x86, 0xf0, 0x48, 0x92, 0xd9, 0x03, 0xe1, 0xaa, + 0x4a, 0x72, 0x5a, 0x7d, 0xb2, 0x78, 0x2a, 0xf7, 0x49, 0x64, 0xe4, 0x82, + 0x0e, 0xbb, 0x0e, 0x83, 0x5e, 0xea, 0x83, 0x4c, 0xb0, 0x2b, 0xbd, 0x31, + 0xa0, 0x66, 0x7f, 0x60, 0x81, 0xac, 0x78, 0x24, 0xa7, 0x67, 0x4e, 0x09, + 0x83, 0xe7, 0xaa, 0x97, 0xa4, 0xcd, 0xa4, 0x4e, 0x9c, 0x90, 0x46, 0x88, + 0x00, 0x53, 0x3c, 0x0f, 0x8c, 0xca, 0xb0, 0xc8, 0x20, 0x35, 0xba, 0x47, + 0x29, 0x29, 0x8f, 0xd9, 0x99, 0x3b, 0x86, 0x9e, 0x3a, 0x27, 0x75, 0x15, + 0xcc, 0xc9, 0xd4, 0x79, 0xa9, 0x97, 0x13, 0xa1, 0xe3, 0xc2, 0x54, 0x4b, + 0xc8, 0xed, 0xa7, 0x71, 0xd9, 0x25, 0x2e, 0x2a, 0xda, 0x3d, 0x84, 0x03, + 0xf0, 0x4e, 0x2d, 0x73, 0x0b, 0x77, 0x12, 0x01, 0xef, 0xe0, 0xa0, 0xc1, + 0x63, 0xa5, 0xa1, 0xdf, 0x7f, 0xe4, 0x52, 0xd9, 0x6b, 0x47, 0xba, 0x63, + 0xba, 0x4a, 0x73, 0xfa, 0xa5, 0x3f, 0x69, 0xb7, 0x7c, 0xcc, 0x36, 0x27, + 0xb2, 0xcb, 0x38, 0xd6, 0x54, 0xe0, 0x6a, 0x7b, 0x9a, 0x47, 0x3b, 0x49, + 0x1f, 0x91, 0x74, 0xf5, 0x50, 0x1e, 0xd7, 0x4e, 0xba, 0xfe, 0x0a, 0xae, + 0x56, 0x33, 0x59, 0x01, 0xa3, 0x49, 0x04, 0xfc, 0x25, 0x25, 0x38, 0xd6, + 0x59, 0xd5, 0x69, 0xb5, 0xd8, 0xd6, 0x65, 0xda, 0x43, 0x7f, 0x37, 0x7b, + 0xa0, 0x87, 0x09, 0xf1, 0x44, 0xe9, 0xf4, 0x1a, 0xf2, 0xaa, 0x7b, 0x87, + 0xd1, 0x70, 0x31, 0xf0, 0x5a, 0x79, 0xf8, 0xec, 0xb3, 0xa8, 0x10, 0xd0, + 0x08, 0x2c, 0x6c, 0xfc, 0x75, 0x45, 0xa7, 0x09, 0xac, 0xf7, 0x8e, 0xc3, + 0x44, 0x94, 0xe8, 0xdb, 0xb1, 0xc3, 0x46, 0x09, 0x3c, 0x03, 0xc6, 0xbe, + 0x61, 0x53, 0x76, 0x15, 0x36, 0x19, 0x71, 0x24, 0x81, 0x0d, 0x02, 0x34, + 0xf9, 0xc7, 0x65, 0x69, 0xb5, 0x00, 0xd9, 0x1a, 0x82, 0x3b, 0xe8, 0x90, + 0x63, 0x5a, 0x35, 0x1a, 0x7e, 0x44, 0x94, 0xd0, 0xbf, 0x0e, 0x96, 0xb7, + 0xd5, 0x71, 0x0d, 0xf4, 0xf5, 0x6b, 0xb8, 0xe1, 0x64, 0x3d, 0xb8, 0x82, + 0x5d, 0x5b, 0xa5, 0xc4, 0x68, 0x76, 0x38, 0x82, 0x08, 0x20, 0x7b, 0x63, + 0x42, 0xba, 0x43, 0x45, 0x37, 0x69, 0x1b, 0xd8, 0x7b, 0x72, 0xa3, 0xf6, + 0x3a, 0x1d, 0xf9, 0x93, 0xf1, 0x30, 0x92, 0x9e, 0x58, 0xe2, 0xb6, 0xcd, + 0xa1, 0xf6, 0x3c, 0xb0, 0x1d, 0xad, 0x1b, 0x4e, 0xc0, 0x07, 0x7d, 0x4f, + 0x01, 0x4b, 0xec, 0xb8, 0xbb, 0x7e, 0x8b, 0xf7, 0xc6, 0xef, 0xa0, 0x26, + 0x3e, 0x13, 0xf3, 0x5d, 0x48, 0xc3, 0xc7, 0x68, 0x2d, 0x0d, 0x20, 0x76, + 0x77, 0x30, 0x9b, 0xec, 0xd4, 0x4c, 0x47, 0xbb, 0xc7, 0x68, 0x49, 0x4d, + 0xcb, 0x0d, 0x36, 0xb4, 0x34, 0x92, 0x5a, 0x47, 0xb8, 0x8d, 0x04, 0x14, + 0x0f, 0xb3, 0xe3, 0xbe, 0xb8, 0x16, 0x39, 0xf5, 0x6a, 0x36, 0x97, 0x4b, + 0x75, 0xe6, 0x42, 0x08, 0x6d, 0x65, 0xe0, 0xdb, 0x58, 0x36, 0x34, 0xe8, + 0x35, 0x21, 0xa3, 0xc0, 0x76, 0x46, 0xdc, 0x49, 0x22, 0x20, 0x71, 0xa0, + 0xd2, 0x12, 0x53, 0x4b, 0xa9, 0x7a, 0x35, 0xd2, 0xda, 0xd9, 0xb4, 0x06, + 0xc8, 0x31, 0xa0, 0x80, 0x34, 0x95, 0x8c, 0xf7, 0x18, 0x2d, 0x04, 0xe9, + 0x11, 0x3f, 0x35, 0xa9, 0xd4, 0xf4, 0xad, 0x81, 0xa7, 0x99, 0x82, 0x04, + 0xf6, 0x59, 0x94, 0xd4, 0x6e, 0x7b, 0x6b, 0xae, 0x25, 0xef, 0x01, 0xb1, + 0x2e, 0xd6, 0x1d, 0xe2, 0x92, 0x9c, 0xab, 0xb6, 0xba, 0xc3, 0x23, 0xda, + 0xdd, 0x20, 0x69, 0x2e, 0xf0, 0x44, 0xc6, 0x6b, 0x8b, 0x9d, 0x73, 0xe0, + 0x16, 0x82, 0x64, 0xe8, 0x26, 0x34, 0xfb, 0x94, 0x86, 0x35, 0x8e, 0x79, + 0x73, 0x84, 0x00, 0x60, 0x37, 0xb8, 0xd7, 0xf2, 0xa8, 0x66, 0xda, 0x19, + 0x59, 0xc7, 0x67, 0x62, 0x03, 0xc8, 0xee, 0x79, 0x29, 0x29, 0x1b, 0xee, + 0x77, 0xad, 0x50, 0xa4, 0x90, 0x18, 0x01, 0x67, 0x8e, 0xef, 0x14, 0x47, + 0x0d, 0xc4, 0x99, 0x90, 0xdd, 0x1a, 0x7f, 0x7a, 0x39, 0x28, 0x35, 0x6d, + 0x63, 0xc3, 0x9d, 0xcc, 0x43, 0x7c, 0x8f, 0x12, 0x8f, 0x66, 0xd6, 0xd7, + 0xb8, 0xe8, 0x00, 0x80, 0x92, 0x9a, 0xce, 0x00, 0x9d, 0xce, 0xd4, 0xf8, + 0x95, 0xd1, 0x1a, 0x3d, 0x3e, 0x91, 0x87, 0x8e, 0x40, 0x0f, 0xb8, 0x82, + 0x7f, 0xeb, 0x8e, 0x9f, 0xc8, 0xb9, 0xec, 0x6a, 0xce, 0x56, 0x55, 0x54, + 0x0d, 0x05, 0x8f, 0x0d, 0xfb, 0xca, 0xea, 0x73, 0x1a, 0xd7, 0xf5, 0x1a, + 0xa8, 0xa8, 0x43, 0x29, 0x05, 0xd0, 0x3c, 0x47, 0xb1, 0xbf, 0x8a, 0x4a, + 0x6c, 0x55, 0x5b, 0x5c, 0xdd, 0x43, 0x84, 0x9e, 0x48, 0x02, 0x7e, 0x0a, + 0x66, 0xaa, 0x58, 0xe3, 0x32, 0x4b, 0x46, 0xba, 0xf0, 0xa5, 0x04, 0xf8, + 0x0f, 0x32, 0x49, 0xfc, 0x90, 0x86, 0xf6, 0x0d, 0xb0, 0x7d, 0xda, 0xcc, + 0x8d, 0x35, 0x49, 0x4b, 0x16, 0x07, 0x72, 0x61, 0x86, 0x41, 0x1f, 0x4a, + 0x67, 0xc9, 0x56, 0x1d, 0x2f, 0x0d, 0xba, 0x30, 0x18, 0x3e, 0x07, 0xf8, + 0x19, 0x46, 0x75, 0xc0, 0x38, 0x06, 0x81, 0xe7, 0xbb, 0xb0, 0xee, 0x84, + 0x32, 0xe9, 0x73, 0x8e, 0xd2, 0x4c, 0x78, 0x08, 0x11, 0xf1, 0x49, 0x4e, + 0x47, 0x53, 0xae, 0xbc, 0x0b, 0xd8, 0x5b, 0x50, 0x75, 0x6f, 0x12, 0xd7, + 0xcc, 0x38, 0x38, 0x1d, 0x78, 0x56, 0xfa, 0x4e, 0x63, 0x1e, 0xe3, 0x45, + 0xf0, 0x5e, 0x7d, 0xf5, 0xb8, 0x93, 0xee, 0x9e, 0x42, 0x27, 0x51, 0xae, + 0xbc, 0xdc, 0x63, 0x5b, 0x75, 0x73, 0x4e, 0xe6, 0x3b, 0xc0, 0xff, 0x00, + 0x71, 0x58, 0x40, 0xba, 0x93, 0xe9, 0x5e, 0x0b, 0x0b, 0x75, 0x6b, 0xbb, + 0x8f, 0x31, 0xe2, 0x92, 0x9d, 0x5e, 0xac, 0xc8, 0x7d, 0x4f, 0x6b, 0x9b, + 0xce, 0xd7, 0x30, 0xfd, 0x26, 0xc9, 0xfa, 0x4a, 0xbe, 0x55, 0x36, 0xb2, + 0xa3, 0xbb, 0x88, 0xe4, 0x21, 0xd4, 0x1f, 0x92, 0x22, 0xb7, 0x17, 0x39, + 0xa2, 0x4b, 0xdc, 0x36, 0xb4, 0x37, 0xf1, 0x2a, 0xd5, 0xb8, 0xd9, 0x4c, + 0xac, 0x80, 0x7d, 0x56, 0x4c, 0x7a, 0x4e, 0x0e, 0xdd, 0xf2, 0x74, 0x04, + 0x94, 0x9f, 0x06, 0xc7, 0x3b, 0x16, 0xb6, 0x35, 0xa2, 0x60, 0xc1, 0xe3, + 0xbf, 0x8a, 0x25, 0xac, 0x71, 0xac, 0x8d, 0xa1, 0xc4, 0x8d, 0x0e, 0x9f, + 0xc5, 0x47, 0x0e, 0xb7, 0x0a, 0x19, 0x5b, 0x86, 0xd8, 0x9d, 0xc2, 0x24, + 0x89, 0xd5, 0x58, 0xd9, 0x50, 0x77, 0xb4, 0xed, 0x27, 0x4e, 0x39, 0x49, + 0x4e, 0x2d, 0x0d, 0x65, 0xe2, 0x5a, 0xcd, 0x85, 0xa0, 0x93, 0x07, 0x4f, + 0xc5, 0x1b, 0x0b, 0xdb, 0x98, 0x21, 0xa4, 0xba, 0x0e, 0xe7, 0x72, 0xd8, + 0xe7, 0x48, 0x50, 0xad, 0x96, 0xb4, 0x3e, 0x8a, 0x41, 0x36, 0x6e, 0xd7, + 0x49, 0x86, 0x83, 0xfc, 0x51, 0x71, 0x0d, 0x8d, 0xcb, 0x0e, 0x35, 0x39, + 0x8f, 0x01, 0xc6, 0x00, 0xd1, 0xd1, 0xcc, 0x24, 0xa7, 0x55, 0xae, 0xf0, + 0x68, 0x12, 0x7c, 0x0a, 0x23, 0x6d, 0xf6, 0xea, 0xd8, 0x27, 0xc7, 0x45, + 0x16, 0x3c, 0xbd, 0xa0, 0xea, 0x3c, 0x88, 0x2d, 0x84, 0x8d, 0x3c, 0x3b, + 0x76, 0x9d, 0xb4, 0x49, 0x4c, 0xdb, 0x36, 0x41, 0x73, 0x40, 0xdb, 0xc4, + 0x72, 0x88, 0x64, 0x80, 0x36, 0x82, 0x3b, 0xea, 0x85, 0xbd, 0xcd, 0x10, + 0x48, 0x91, 0xc1, 0x22, 0x3f, 0x22, 0x98, 0x7b, 0x80, 0x13, 0x24, 0x76, + 0xd1, 0x25, 0x33, 0xda, 0x34, 0x2d, 0x30, 0x7b, 0x4a, 0x26, 0xcd, 0x24, + 0x99, 0x77, 0x92, 0xac, 0xe2, 0x41, 0x06, 0x04, 0x77, 0x92, 0xa2, 0xdc, + 0x82, 0x06, 0xad, 0x73, 0x75, 0x82, 0x08, 0x3f, 0xc2, 0x52, 0x53, 0x7f, + 0x1d, 0xae, 0x0e, 0x70, 0x77, 0x3c, 0xa8, 0x65, 0x31, 0xae, 0x63, 0x8f, + 0x3a, 0x28, 0xe0, 0xda, 0x6c, 0xb0, 0xc1, 0x91, 0xdf, 0x91, 0xf9, 0x51, + 0x33, 0x34, 0x69, 0x1d, 0xc9, 0x89, 0x49, 0x4d, 0x56, 0x56, 0x0e, 0x55, + 0x84, 0x81, 0x3b, 0x5b, 0xf9, 0x15, 0xa7, 0xb4, 0x32, 0xbd, 0x15, 0x7a, + 0xcc, 0xdc, 0x27, 0x92, 0xd8, 0x3f, 0x25, 0x66, 0xf1, 0x0c, 0xf1, 0x9d, + 0x12, 0x53, 0x16, 0xdc, 0x58, 0xd0, 0x1c, 0x41, 0x6c, 0x77, 0xd3, 0xfd, + 0x8a, 0x7e, 0xb3, 0x26, 0x20, 0xc1, 0xee, 0xab, 0x3b, 0x63, 0x40, 0xd0, + 0x6b, 0xe2, 0x9c, 0x58, 0x5d, 0xf4, 0x44, 0x24, 0xa4, 0xb1, 0x53, 0xb5, + 0xd8, 0x24, 0x71, 0x13, 0xaf, 0xcb, 0x45, 0x30, 0xf6, 0xb7, 0x41, 0x13, + 0x1a, 0x04, 0x1d, 0xc0, 0xf3, 0x20, 0xf8, 0x95, 0x1b, 0x1e, 0xe6, 0x09, + 0xa8, 0x97, 0x11, 0xdb, 0xc7, 0xf8, 0x24, 0xa4, 0xe2, 0xd8, 0x3a, 0xe8, + 0x0f, 0xca, 0x52, 0xde, 0xde, 0x60, 0x4f, 0xef, 0x4a, 0xa4, 0x32, 0x32, + 0xc9, 0x22, 0x1a, 0xd1, 0xe1, 0xc9, 0x44, 0xf5, 0xb2, 0x63, 0x6e, 0xd6, + 0xcc, 0x4c, 0xf9, 0x24, 0xa4, 0xcd, 0x2f, 0x61, 0x2d, 0x2f, 0x75, 0xdb, + 0x7b, 0xbb, 0x6b, 0x40, 0xfb, 0x80, 0x53, 0xda, 0xf2, 0x3d, 0xed, 0xf3, + 0xd3, 0x99, 0xfb, 0xd3, 0x35, 0x85, 0x86, 0x44, 0x99, 0xf3, 0x95, 0x20, + 0xf1, 0x59, 0xdc, 0xe7, 0x11, 0xd9, 0x25, 0x39, 0x9d, 0x64, 0x01, 0x5b, + 0x0c, 0x6c, 0x92, 0x67, 0x58, 0xec, 0xb3, 0x71, 0xb2, 0x0d, 0x0d, 0xfb, + 0x40, 0x05, 0xc6, 0xa7, 0xb5, 0xc0, 0x71, 0xd9, 0xde, 0x0b, 0x57, 0xac, + 0xbd, 0xaf, 0xc7, 0x69, 0x6b, 0xb7, 0x16, 0xbb, 0x5e, 0xe6, 0x08, 0xf3, + 0x58, 0xb4, 0xb9, 0xa1, 0x96, 0x35, 0xa7, 0x88, 0x7c, 0xc7, 0x81, 0xd7, + 0xf2, 0xa4, 0xa6, 0xb9, 0x7d, 0xcd, 0x65, 0x99, 0x4f, 0x0e, 0x6b, 0x9c, + 0x4b, 0xa1, 0xdc, 0xbb, 0x71, 0xe4, 0xf8, 0x6a, 0xa9, 0xb5, 0x9b, 0xc3, + 0x01, 0x70, 0x97, 0x12, 0xe7, 0x1f, 0xf5, 0xf8, 0x2e, 0x83, 0x33, 0x1f, + 0xa7, 0xd1, 0x8e, 0xf6, 0x89, 0xf5, 0x1c, 0x77, 0x1b, 0x27, 0xdc, 0x48, + 0x58, 0x17, 0x00, 0x2d, 0x0c, 0x88, 0x76, 0x93, 0xf0, 0x49, 0x4c, 0xec, + 0x75, 0x6f, 0xac, 0x00, 0x3d, 0xe6, 0xc7, 0x46, 0x93, 0x20, 0x68, 0xd0, + 0x13, 0x64, 0xb6, 0xc0, 0x03, 0x5c, 0xd3, 0x03, 0xb7, 0xc1, 0x13, 0x13, + 0x63, 0xde, 0xca, 0xa0, 0xfa, 0x9b, 0xe1, 0xaf, 0x1e, 0x04, 0x09, 0x95, + 0xb6, 0xfe, 0x97, 0x50, 0xdf, 0xb9, 0x92, 0xd6, 0x81, 0x1a, 0xf6, 0x23, + 0xe0, 0x92, 0x9c, 0xff, 0x00, 0xab, 0x98, 0xcc, 0x76, 0x65, 0x99, 0x2e, + 0x10, 0xdc, 0x66, 0x17, 0x00, 0x7b, 0xb9, 0xfe, 0xd6, 0xad, 0x3c, 0x33, + 0x37, 0x5b, 0x91, 0xc8, 0x2e, 0x0c, 0x69, 0x27, 0xf3, 0x58, 0x23, 0xf2, + 0x94, 0x12, 0xda, 0xfa, 0x76, 0x0b, 0xbd, 0x29, 0xdf, 0x90, 0x74, 0x69, + 0x33, 0x00, 0x1d, 0xac, 0xfc, 0x65, 0x3b, 0x1c, 0xda, 0xc3, 0x68, 0x68, + 0x71, 0xf4, 0xc0, 0x69, 0x2d, 0xe0, 0x9e, 0x5c, 0x7e, 0xf4, 0x94, 0xe8, + 0xb5, 0xe4, 0x8d, 0xbb, 0xc0, 0x27, 0xb4, 0xa7, 0x2c, 0x2e, 0x6c, 0x17, + 0x41, 0xf2, 0x28, 0x15, 0xd8, 0x4c, 0x7b, 0x40, 0x8f, 0x25, 0x61, 0xae, + 0x7c, 0x12, 0x5a, 0x20, 0x73, 0xf0, 0x49, 0x4c, 0x0d, 0x05, 0xd3, 0xcc, + 0x71, 0xa9, 0x10, 0x91, 0xa0, 0x47, 0xb8, 0x02, 0x8b, 0xb8, 0x93, 0xae, + 0xa1, 0x47, 0xd5, 0x1b, 0xbb, 0xed, 0x49, 0x4d, 0x7b, 0x31, 0x9a, 0x44, + 0x34, 0x36, 0x7e, 0x6a, 0xbb, 0xba, 0x7b, 0x1e, 0x49, 0x78, 0xdd, 0x1c, + 0x48, 0x5a, 0x12, 0x3e, 0x7e, 0x29, 0x32, 0x4b, 0xda, 0xc3, 0x1b, 0x67, + 0x53, 0x3d, 0x92, 0x53, 0x55, 0xb8, 0xde, 0x86, 0x3b, 0x8b, 0x2a, 0x25, + 0xef, 0x86, 0x8d, 0x0f, 0x07, 0xb6, 0x89, 0xf2, 0x03, 0xab, 0xc0, 0x16, + 0x35, 0xc4, 0x3c, 0x49, 0x70, 0x99, 0x83, 0xde, 0x7b, 0xad, 0xd0, 0x2b, + 0x32, 0x77, 0x36, 0x40, 0xd1, 0xcb, 0x2b, 0xad, 0x7a, 0x47, 0x1d, 0xcc, + 0x64, 0x1b, 0xac, 0x1b, 0x5a, 0xe1, 0xd8, 0x92, 0x92, 0x9c, 0x6c, 0x47, + 0xda, 0x58, 0x5c, 0x5c, 0x49, 0x71, 0x9d, 0x51, 0x89, 0xb0, 0x88, 0x79, + 0x23, 0xcc, 0x68, 0x89, 0x8d, 0x80, 0xea, 0xda, 0x03, 0x86, 0xe3, 0xe3, + 0xe6, 0xa7, 0x6d, 0x04, 0x34, 0xb8, 0x03, 0xaf, 0x1a, 0x24, 0xa4, 0xb8, + 0xd8, 0x8c, 0x65, 0x0f, 0xb9, 0xb1, 0xb1, 0xcd, 0x24, 0x13, 0xce, 0xee, + 0xe5, 0x09, 0x80, 0xec, 0x6d, 0xad, 0x6c, 0xc1, 0x30, 0xf6, 0x99, 0x80, + 0x7c, 0x8e, 0xab, 0x57, 0x13, 0x0a, 0xb7, 0x61, 0xd3, 0xb9, 0xce, 0x73, + 0x43, 0x41, 0xd8, 0x0c, 0x36, 0x4f, 0xc1, 0x4d, 0xf8, 0x55, 0x44, 0x70, + 0xc1, 0xac, 0x11, 0x31, 0xf0, 0x3c, 0xa4, 0xa7, 0x30, 0x5a, 0xe7, 0x88, + 0x2e, 0xf9, 0x22, 0x32, 0x0f, 0x07, 0xe4, 0x10, 0x5a, 0x06, 0xf7, 0x36, + 0x24, 0x35, 0xc4, 0x07, 0x0f, 0x24, 0x71, 0x2e, 0x1e, 0xd6, 0xea, 0x12, + 0x52, 0xe5, 0x8d, 0x26, 0x60, 0x11, 0xf8, 0xa9, 0x12, 0x26, 0x08, 0x89, + 0xee, 0x97, 0xbb, 0x4d, 0xda, 0x14, 0xe7, 0xda, 0x75, 0x06, 0x12, 0x52, + 0x27, 0xb6, 0x34, 0x6c, 0x3c, 0xf8, 0x70, 0x53, 0xb7, 0x7b, 0x8c, 0xc4, + 0x79, 0x72, 0xa7, 0xb9, 0x87, 0xf3, 0x48, 0x07, 0xba, 0x89, 0x3a, 0xe9, + 0x3f, 0x04, 0x94, 0x97, 0x1d, 0xfe, 0x9d, 0xad, 0xec, 0x26, 0x14, 0xf3, + 0x6c, 0x91, 0x33, 0xb4, 0x4f, 0x3c, 0xaa, 0xb2, 0x5c, 0x40, 0x88, 0x33, + 0x1a, 0xa3, 0xbc, 0x93, 0x40, 0x0f, 0x02, 0x44, 0x7c, 0xd2, 0x52, 0x3a, + 0x9e, 0xc3, 0x65, 0x6e, 0x03, 0xe2, 0x7c, 0x44, 0x23, 0xe4, 0x58, 0xcd, + 0xb0, 0xd3, 0xaf, 0x69, 0xe0, 0x20, 0x56, 0x5a, 0x1c, 0x40, 0x00, 0x90, + 0x3b, 0x26, 0xb1, 0xe4, 0x38, 0x17, 0x37, 0x6f, 0x82, 0x4a, 0x5c, 0x58, + 0xe3, 0x30, 0x41, 0x23, 0xcb, 0x44, 0xc5, 0xc5, 0xc7, 0xe8, 0x96, 0x91, + 0xc4, 0x7d, 0x1f, 0xb9, 0x28, 0xa9, 0xc0, 0x18, 0xf7, 0x73, 0xe0, 0x51, + 0x1b, 0x4d, 0x67, 0x58, 0x2d, 0x3e, 0x65, 0x25, 0x22, 0x36, 0xbc, 0x0d, + 0xb2, 0x01, 0x1e, 0x23, 0x45, 0x20, 0x5f, 0xcb, 0x9a, 0x07, 0xc3, 0x44, + 0x43, 0x48, 0x00, 0xc4, 0x91, 0xcc, 0x4c, 0xa9, 0x36, 0xa6, 0xb4, 0x68, + 0xd3, 0xe6, 0x79, 0x49, 0x48, 0x40, 0x60, 0xd5, 0xa0, 0xf8, 0xc0, 0x4b, + 0x4f, 0x03, 0xbb, 0xc7, 0x5e, 0x11, 0xdc, 0x23, 0xdd, 0xb4, 0x9f, 0x92, + 0x6d, 0xed, 0xe2, 0x7f, 0x14, 0x94, 0xdb, 0xdb, 0x23, 0x71, 0x1f, 0x01, + 0xfe, 0xc5, 0x01, 0x24, 0x43, 0xd8, 0x1c, 0x5b, 0xe1, 0x27, 0x5f, 0x89, + 0x56, 0x5c, 0x6b, 0x77, 0xd2, 0x31, 0xe1, 0xaf, 0x29, 0x9a, 0x2a, 0xdb, + 0xa3, 0x49, 0x1d, 0xa6, 0x52, 0x53, 0x91, 0xd4, 0xd8, 0xd3, 0x87, 0x63, + 0x63, 0x56, 0xeb, 0x31, 0xe6, 0xb9, 0xdc, 0x51, 0xba, 0xd7, 0x57, 0xc6, + 0xe6, 0xb9, 0xa0, 0x79, 0x91, 0xa2, 0xed, 0xdf, 0x45, 0x36, 0xd6, 0xfa, + 0xdc, 0xdd, 0x9b, 0xc1, 0x6f, 0x1e, 0x22, 0x17, 0x0d, 0xee, 0xc5, 0xcb, + 0x2d, 0x7e, 0x8e, 0xad, 0xd0, 0x7e, 0x45, 0x25, 0x36, 0x71, 0xf0, 0x2f, + 0xcd, 0x73, 0x1e, 0x29, 0xb5, 0xd5, 0x9e, 0x5e, 0x4c, 0x30, 0x9e, 0xf0, + 0x56, 0xa5, 0x1f, 0x56, 0x58, 0xc7, 0xfa, 0xd9, 0x07, 0xf4, 0xce, 0x77, + 0x88, 0x22, 0x4f, 0x92, 0xb1, 0xd0, 0x2f, 0x63, 0x2d, 0xbb, 0x09, 0xc7, + 0xbf, 0xad, 0x47, 0xfc, 0x5b, 0xb5, 0x74, 0x7c, 0xd6, 0xbb, 0xec, 0x0e, + 0xb0, 0x00, 0x78, 0x9d, 0x08, 0x8d, 0x52, 0x53, 0x92, 0xee, 0x87, 0x45, + 0x76, 0xb0, 0xd6, 0xc9, 0x73, 0x7d, 0xdc, 0xc0, 0xd0, 0xfc, 0x95, 0x7b, + 0x29, 0xbc, 0x64, 0x16, 0xd9, 0x87, 0xb2, 0xad, 0x77, 0x58, 0xe7, 0x87, + 0x71, 0xae, 0x82, 0x4a, 0xda, 0xb1, 0xce, 0xf5, 0x65, 0xa4, 0x68, 0xd8, + 0x24, 0xfc, 0x89, 0x58, 0x1d, 0x53, 0xa9, 0x5c, 0x6c, 0xb6, 0xa6, 0x02, + 0xdf, 0x53, 0xdb, 0x58, 0x00, 0x12, 0xed, 0xc0, 0x7e, 0x58, 0x49, 0x4d, + 0x56, 0x7a, 0x99, 0xd9, 0xbb, 0x99, 0xad, 0x74, 0xfd, 0x06, 0x0d, 0x7d, + 0xfd, 0x89, 0xf8, 0x72, 0xb5, 0x69, 0xe9, 0xcc, 0x60, 0xfd, 0x23, 0x01, + 0xf3, 0xd5, 0x57, 0xe8, 0xf4, 0x33, 0x0a, 0xb7, 0xee, 0x70, 0x36, 0x93, + 0xee, 0x77, 0xfa, 0xf9, 0xab, 0x96, 0xe4, 0xb8, 0xee, 0x0c, 0x73, 0xb8, + 0xd4, 0x8e, 0x12, 0x52, 0xee, 0xc5, 0xa1, 0xa0, 0x10, 0x0b, 0x7e, 0xf4, + 0x8d, 0x60, 0x6a, 0x1b, 0xcf, 0x9e, 0xa8, 0x61, 0xd6, 0x98, 0x82, 0xe7, + 0x93, 0xce, 0xe1, 0x2a, 0xdb, 0x0b, 0xa7, 0xdc, 0x27, 0xc8, 0x24, 0xa4, + 0x11, 0xb8, 0x43, 0x41, 0xf9, 0xa6, 0x15, 0x3a, 0x48, 0x22, 0x7b, 0xa3, + 0xbd, 0xf5, 0x6b, 0xed, 0x23, 0xcf, 0xc1, 0x22, 0x1b, 0xc8, 0xd3, 0xcf, + 0xc7, 0xee, 0x49, 0x48, 0x83, 0x04, 0x0d, 0xdc, 0xa9, 0x59, 0x43, 0x4d, + 0x64, 0x6e, 0x2d, 0x77, 0x67, 0x37, 0x47, 0x0f, 0x81, 0x08, 0xcd, 0x63, + 0x49, 0x03, 0xe6, 0xa6, 0x58, 0x52, 0x53, 0x94, 0x70, 0xf2, 0xa7, 0x4c, + 0xfb, 0xc3, 0x49, 0xee, 0x5a, 0x7f, 0x2b, 0x51, 0x6b, 0xc2, 0x0c, 0x73, + 0x5c, 0xf7, 0xbe, 0xd7, 0x83, 0xcb, 0xe0, 0xcf, 0xcf, 0x80, 0xad, 0x8a, + 0x8b, 0xbe, 0x83, 0x40, 0xd7, 0x53, 0xe5, 0xe5, 0x0a, 0x5b, 0x5c, 0x34, + 0x12, 0x42, 0x4a, 0x51, 0xa4, 0x06, 0x8d, 0x15, 0x53, 0x85, 0x53, 0x5c, + 0x48, 0x0e, 0xd7, 0xc5, 0xc6, 0x3e, 0x41, 0x5f, 0x63, 0x09, 0xe7, 0x88, + 0xf0, 0x51, 0x35, 0xc7, 0xd2, 0x69, 0x3f, 0x24, 0x94, 0xe6, 0x3e, 0xee, + 0xad, 0x8c, 0x4b, 0x31, 0xe9, 0x6d, 0xd5, 0x0e, 0x3d, 0xfb, 0x4f, 0xdc, + 0x42, 0x0f, 0xdb, 0x7a, 0xcd, 0x8e, 0xf4, 0xce, 0x33, 0x6a, 0x2e, 0xd0, + 0x17, 0x5b, 0xdb, 0xe4, 0xb6, 0x21, 0xa2, 0x41, 0xe3, 0xe1, 0xaa, 0x13, + 0xc5, 0x64, 0x89, 0x6f, 0xbb, 0xb1, 0x89, 0x8f, 0xc1, 0x25, 0x20, 0xc7, + 0xc5, 0x63, 0x04, 0x69, 0xbf, 0x97, 0x47, 0x8f, 0x74, 0x71, 0x48, 0x1f, + 0x03, 0xd9, 0x4b, 0x64, 0x91, 0xb7, 0x88, 0x4d, 0xe9, 0x90, 0xed, 0x5b, + 0xa7, 0x8a, 0x4a, 0x60, 0xf7, 0xed, 0x3b, 0x4b, 0x09, 0x3d, 0xb6, 0x89, + 0x4a, 0x0f, 0x92, 0x2e, 0xd7, 0x11, 0x22, 0x20, 0x78, 0xa7, 0x15, 0xb4, + 0xeb, 0xc4, 0x24, 0xa4, 0x05, 0x8d, 0x3d, 0xa5, 0x0d, 0xe0, 0xb4, 0x68, + 0xad, 0x16, 0x46, 0x92, 0x49, 0xf9, 0x20, 0xd8, 0xd7, 0x36, 0x1e, 0xc0, + 0x0b, 0x87, 0xe6, 0xbb, 0xba, 0x4a, 0x5f, 0x13, 0x19, 0xc5, 0xc2, 0xdb, + 0x78, 0x3f, 0x45, 0xb1, 0xf9, 0x55, 0x2e, 0xb5, 0x98, 0x31, 0x08, 0x0f, + 0x98, 0x71, 0xf6, 0x79, 0xf9, 0x2b, 0x16, 0xe7, 0x65, 0x57, 0xb3, 0x63, + 0x1c, 0x5a, 0x5d, 0xfa, 0x42, 0x35, 0xda, 0xcf, 0x97, 0x24, 0xaa, 0xd9, + 0x14, 0xb7, 0xa8, 0x5e, 0xdb, 0x63, 0x6b, 0x2b, 0x1e, 0xd0, 0xf6, 0x99, + 0x24, 0xf3, 0x12, 0x92, 0x9a, 0xd8, 0x19, 0x62, 0xfc, 0xc6, 0xd3, 0x05, + 0x84, 0x82, 0x40, 0x3d, 0xfc, 0x56, 0xee, 0x5d, 0x05, 0xf5, 0x0f, 0x4c, + 0x4d, 0x8d, 0x1a, 0x7c, 0x16, 0x58, 0xc1, 0x7d, 0x17, 0x33, 0x26, 0xbf, + 0x7f, 0xa7, 0xcb, 0x40, 0xd6, 0x0e, 0x84, 0xab, 0xa3, 0xab, 0xb4, 0x5e, + 0x6b, 0x6b, 0xb7, 0x56, 0x18, 0x1e, 0x09, 0x04, 0x1d, 0x0c, 0x39, 0xba, + 0xf7, 0xee, 0x12, 0x52, 0x0a, 0x9a, 0xd1, 0x24, 0x81, 0x3d, 0xc7, 0x1f, + 0x82, 0x38, 0x78, 0x0d, 0xd7, 0x50, 0x79, 0x41, 0x7e, 0x5e, 0x3d, 0x99, + 0x3b, 0x76, 0xed, 0x73, 0xf9, 0x74, 0x18, 0x71, 0xf1, 0xe1, 0x1d, 0xb5, + 0xb4, 0xf0, 0xe2, 0x92, 0x97, 0x05, 0xbb, 0x65, 0xb1, 0x01, 0x30, 0xdd, + 0xf4, 0x81, 0xd3, 0xc9, 0x0d, 0xdb, 0x98, 0xf1, 0x22, 0x5b, 0xfb, 0xd1, + 0xf7, 0x77, 0x44, 0x6b, 0xc9, 0xe3, 0x54, 0x94, 0xbb, 0xdc, 0xf2, 0xd8, + 0x68, 0xf8, 0xea, 0x9b, 0x63, 0xb6, 0xcc, 0xe9, 0x11, 0xfe, 0xa5, 0x4b, + 0xd4, 0x3b, 0xa2, 0x20, 0x79, 0x27, 0xf5, 0x1b, 0x3b, 0xa3, 0xc9, 0x25, + 0x37, 0x4b, 0x47, 0x2d, 0xd3, 0xc0, 0xa6, 0x01, 0xe7, 0x83, 0xaf, 0x9f, + 0x0a, 0x66, 0xb0, 0x63, 0x88, 0xf0, 0x48, 0xb5, 0xad, 0xe4, 0xe9, 0xe2, + 0x12, 0x53, 0x08, 0x20, 0x7b, 0xdf, 0x31, 0xcc, 0x2e, 0x5f, 0xeb, 0x4e, + 0x10, 0xab, 0x25, 0xb9, 0x75, 0xcf, 0xa7, 0x77, 0x3e, 0x4f, 0x1c, 0xfd, + 0xeb, 0xa8, 0xb1, 0x95, 0xbd, 0xb0, 0xd7, 0xb9, 0xbd, 0x89, 0x6f, 0x92, + 0xca, 0xcd, 0xc7, 0xb6, 0xe6, 0xbe, 0x8b, 0x1a, 0xeb, 0x2a, 0x70, 0xd3, + 0x4d, 0x41, 0xec, 0x5b, 0x1d, 0xd2, 0x53, 0x87, 0x89, 0x91, 0x69, 0x65, + 0x57, 0xe3, 0x9f, 0xd6, 0xf1, 0x89, 0x2c, 0x07, 0xf3, 0xda, 0x79, 0x6a, + 0xdd, 0xc7, 0xfa, 0xc3, 0xd3, 0x6d, 0x1e, 0xa5, 0xa7, 0xd1, 0x7c, 0x7b, + 0xd8, 0xe9, 0x71, 0xdd, 0xdf, 0x6e, 0x9c, 0x2e, 0x5e, 0xdc, 0x7c, 0xbe, + 0x9d, 0x60, 0x75, 0x8c, 0x7b, 0x2b, 0x27, 0xda, 0xf2, 0x08, 0x08, 0xe1, + 0xd8, 0x59, 0x04, 0xd9, 0x76, 0x8f, 0xfd, 0xe6, 0x90, 0x27, 0xe2, 0x0a, + 0x4a, 0x6e, 0x75, 0x0f, 0xac, 0x42, 0xf7, 0x7a, 0x78, 0x20, 0xc9, 0x2e, + 0x13, 0x07, 0xdc, 0x0c, 0x7f, 0x72, 0x06, 0x36, 0x25, 0x98, 0xee, 0x16, + 0xd8, 0x77, 0x67, 0x59, 0xfc, 0xdb, 0x3b, 0x54, 0xd7, 0x72, 0xe3, 0x3d, + 0xfc, 0x14, 0x71, 0x4d, 0x4d, 0x78, 0x6e, 0x0d, 0x7e, 0xf2, 0x60, 0xde, + 0xe1, 0x20, 0x7c, 0x3c, 0xd7, 0x41, 0x85, 0x82, 0xda, 0x46, 0xf7, 0x8d, + 0xd6, 0x3b, 0x57, 0x3c, 0xea, 0x49, 0xf3, 0x49, 0x4d, 0x7c, 0x7c, 0x51, + 0x5d, 0x63, 0xd4, 0x71, 0x11, 0xd9, 0xdc, 0x7c, 0xd5, 0xaa, 0xc5, 0x64, + 0x49, 0x80, 0x3c, 0x91, 0x5e, 0xf7, 0x13, 0x1b, 0x5b, 0x03, 0x82, 0x40, + 0x24, 0xff, 0x00, 0x14, 0xe5, 0xf5, 0xb5, 0x9b, 0xec, 0xda, 0xc6, 0x81, + 0x24, 0x0e, 0xc7, 0xe6, 0x02, 0x4a, 0x44, 0x1a, 0x0b, 0x86, 0xd7, 0x12, + 0x38, 0x02, 0x08, 0x1f, 0x19, 0x46, 0x14, 0x1d, 0x4b, 0x84, 0xf8, 0x00, + 0x53, 0xd2, 0xcf, 0x54, 0x03, 0x58, 0x25, 0x8e, 0xd5, 0xb1, 0xed, 0x6f, + 0xe1, 0x1a, 0xa8, 0x0b, 0x9e, 0x2b, 0xdc, 0x21, 0x8e, 0x3c, 0x34, 0x90, + 0xe3, 0xa1, 0xd7, 0xe8, 0x94, 0x94, 0xa6, 0xe2, 0xd7, 0x64, 0xcf, 0x1d, + 0x84, 0xce, 0xa9, 0xfd, 0x36, 0x54, 0x63, 0xe9, 0x47, 0x63, 0xe7, 0xc2, + 0x83, 0xaf, 0xb6, 0x49, 0x24, 0x34, 0x0e, 0x4c, 0x69, 0xf8, 0xa6, 0x0f, + 0x75, 0x8e, 0x9d, 0xd2, 0x0f, 0xc5, 0x25, 0x24, 0x6b, 0xcc, 0x10, 0x19, + 0xb4, 0x8e, 0x79, 0x4f, 0x53, 0x37, 0x1d, 0xce, 0x93, 0x27, 0xbf, 0xf0, + 0x4e, 0x2b, 0xf6, 0x44, 0x3b, 0xdd, 0xe1, 0xc9, 0x53, 0x75, 0x6f, 0x60, + 0x6b, 0x9b, 0xc8, 0x9d, 0x4e, 0x9f, 0x2e, 0x12, 0x52, 0xe0, 0xd4, 0xc3, + 0x24, 0x89, 0x1d, 0xc0, 0x94, 0x2b, 0x7d, 0x73, 0xee, 0xae, 0x1c, 0x27, + 0x89, 0xda, 0xa4, 0x29, 0xa7, 0x7c, 0x93, 0xb1, 0xe7, 0x58, 0x99, 0x93, + 0xf7, 0x22, 0xb6, 0x86, 0x36, 0x49, 0xf7, 0x0f, 0xcd, 0xf8, 0xa4, 0xa6, + 0xbb, 0xac, 0xc8, 0x68, 0xd5, 0x85, 0xd3, 0xa7, 0xb4, 0x85, 0x59, 0xaf, + 0xca, 0x87, 0x6d, 0x01, 0xb3, 0xc6, 0xf7, 0xb9, 0xda, 0xfc, 0x00, 0x0b, + 0x47, 0x63, 0x0e, 0xae, 0xfa, 0x51, 0x3a, 0x28, 0xfa, 0x01, 0xc3, 0xf3, + 0x84, 0xf8, 0x84, 0x94, 0xd3, 0x0e, 0xb5, 0xc0, 0x0e, 0x5d, 0xdc, 0x8d, + 0x25, 0x10, 0x0b, 0x06, 0x90, 0x61, 0x11, 0xd5, 0x3e, 0x9d, 0x40, 0x31, + 0xdf, 0x90, 0xa7, 0xbd, 0xce, 0x03, 0x4d, 0x3e, 0x09, 0x29, 0x19, 0xb1, + 0xe3, 0x43, 0xa0, 0xf1, 0x84, 0xfe, 0xa1, 0x81, 0x02, 0x53, 0xef, 0x91, + 0xa8, 0x8f, 0x25, 0x2f, 0x6c, 0x71, 0xcf, 0x09, 0x29, 0x51, 0x22, 0x40, + 0x82, 0x53, 0x31, 0xae, 0xff, 0x00, 0x08, 0x01, 0x70, 0xe0, 0x89, 0xfe, + 0x2a, 0x60, 0x38, 0xe8, 0xd3, 0xc7, 0x00, 0x8f, 0x14, 0xc5, 0x8f, 0x73, + 0xa0, 0xc8, 0x23, 0xc2, 0x52, 0x52, 0xee, 0x6c, 0x8d, 0x14, 0x0d, 0x46, + 0x09, 0x9f, 0x92, 0x99, 0x0f, 0x1c, 0xce, 0x89, 0xdb, 0xaf, 0x1f, 0x72, + 0x4a, 0x40, 0x6a, 0x98, 0x91, 0x07, 0xb7, 0x3f, 0x8a, 0x86, 0xd7, 0x03, + 0xab, 0x49, 0x23, 0xee, 0x56, 0xdc, 0x08, 0x04, 0x37, 0x9f, 0x05, 0x16, + 0x0b, 0x00, 0xf7, 0xe8, 0x7b, 0x81, 0xc7, 0xde, 0x92, 0x9a, 0xf0, 0x5d, + 0xa6, 0xd2, 0x3e, 0x70, 0x52, 0x01, 0xc0, 0xed, 0x83, 0xf1, 0x56, 0xb6, + 0xb4, 0x92, 0x79, 0xd7, 0x54, 0xa1, 0xa6, 0x0f, 0x27, 0xb2, 0x4a, 0x6b, + 0x39, 0x80, 0xf8, 0x12, 0x3c, 0xd2, 0x78, 0x0d, 0x68, 0x3a, 0x07, 0x1f, + 0x8c, 0x2b, 0x1e, 0x97, 0x30, 0x64, 0xf8, 0x11, 0xc2, 0x83, 0xeb, 0x27, + 0x53, 0x27, 0xe4, 0x92, 0x91, 0x4b, 0x1c, 0xdf, 0x77, 0xf7, 0x28, 0x96, + 0xd6, 0xf3, 0xec, 0x22, 0x46, 0xa6, 0x39, 0x28, 0xc3, 0x1d, 0xce, 0x33, + 0x00, 0xb7, 0xc7, 0xfd, 0x90, 0x93, 0x71, 0xa3, 0xe9, 0x34, 0x37, 0xf1, + 0x49, 0x48, 0x5a, 0xd7, 0x34, 0x41, 0xd0, 0x4e, 0x84, 0xea, 0xa5, 0xb1, + 0xbc, 0x4f, 0xcf, 0x49, 0x45, 0xf4, 0xe4, 0x9d, 0x48, 0x9e, 0xca, 0x3e, + 0x9b, 0xb8, 0x93, 0xf1, 0x49, 0x4c, 0xcd, 0xc6, 0x3d, 0xa2, 0x7c, 0x0f, + 0x2a, 0x16, 0x5d, 0x71, 0x6f, 0xe8, 0x99, 0x31, 0xc9, 0x76, 0x88, 0xf9, + 0x0c, 0x60, 0xdc, 0x18, 0xf1, 0x2d, 0x02, 0x5a, 0x48, 0x03, 0xfa, 0xc1, + 0x53, 0x39, 0xb5, 0xd2, 0x08, 0xb8, 0x80, 0xdd, 0xfb, 0x03, 0xdb, 0xc1, + 0xd3, 0xf9, 0x33, 0xaa, 0x4a, 0x48, 0x0d, 0xa5, 0xa1, 0xde, 0x91, 0xde, + 0x44, 0x1e, 0x62, 0x7e, 0x49, 0x30, 0xbc, 0x4f, 0xa8, 0xd0, 0x01, 0x89, + 0xe7, 0xb7, 0x1c, 0xa8, 0xb7, 0x39, 0xbb, 0xb6, 0xd6, 0xdb, 0x1c, 0x0f, + 0x0e, 0x0c, 0x74, 0x37, 0xe2, 0x9f, 0x26, 0xec, 0xdb, 0x5a, 0xdf, 0xb2, + 0x31, 0xac, 0xfd, 0xf7, 0x5c, 0xd2, 0x3f, 0x27, 0x29, 0x29, 0x57, 0xd8, + 0xe7, 0xb4, 0x57, 0x01, 0xcd, 0x77, 0xd3, 0x91, 0x2d, 0x23, 0xe0, 0x56, + 0x5d, 0xdd, 0x0b, 0x1e, 0xc7, 0x1b, 0x8d, 0x05, 0xa2, 0x67, 0x68, 0x6e, + 0xd6, 0xff, 0x00, 0x05, 0xa6, 0x2d, 0xc9, 0x01, 0xad, 0xb7, 0xd2, 0xaa, + 0xc7, 0x68, 0x5c, 0xd6, 0x6e, 0x27, 0xe6, 0xfe, 0x14, 0x2d, 0xaa, 0xa2, + 0xe6, 0x8b, 0x1b, 0xeb, 0x38, 0xfe, 0x7d, 0x8e, 0x91, 0xf0, 0x00, 0x98, + 0xfc, 0x12, 0x53, 0x55, 0x95, 0xb2, 0x90, 0xd6, 0xd6, 0xe6, 0xb0, 0xb7, + 0x96, 0xb6, 0x1c, 0x47, 0xdc, 0xad, 0x37, 0x27, 0x6b, 0x64, 0x30, 0x90, + 0x7b, 0xba, 0x7f, 0x01, 0xfe, 0xd4, 0x42, 0xd7, 0xfa, 0x65, 0xb5, 0xb0, + 0x57, 0x1d, 0xc4, 0x44, 0xf8, 0xf0, 0xab, 0xb9, 0xb7, 0x3a, 0x5a, 0xe7, + 0x6e, 0x98, 0x0e, 0x80, 0x92, 0x92, 0x0b, 0xab, 0x7e, 0xaf, 0x73, 0xa7, + 0xc3, 0x40, 0x35, 0xf8, 0x7f, 0x7a, 0x15, 0xcd, 0xa9, 0xcd, 0x80, 0x44, + 0x6b, 0x3b, 0x89, 0x21, 0xde, 0x44, 0xa9, 0xb7, 0x1a, 0x1d, 0xb4, 0x88, + 0x8d, 0x41, 0x9f, 0xca, 0x8f, 0x5b, 0x1a, 0xd9, 0x2c, 0x60, 0x81, 0xcc, + 0x82, 0x67, 0xef, 0x49, 0x4e, 0x76, 0x36, 0x1d, 0x75, 0xee, 0x76, 0x24, + 0x31, 0xef, 0x8d, 0xe2, 0x09, 0x63, 0xa0, 0xe9, 0xa0, 0x21, 0x58, 0xab, + 0x04, 0xb7, 0x75, 0x8e, 0x21, 0xaf, 0x77, 0x2e, 0x6b, 0x40, 0x93, 0xf0, + 0x6a, 0xb6, 0xed, 0xa0, 0xc0, 0x02, 0x4c, 0x19, 0x8e, 0xde, 0x48, 0x6d, + 0xc6, 0x02, 0xf3, 0x71, 0xba, 0xd2, 0x47, 0x0c, 0x91, 0xe9, 0x8f, 0xec, + 0xa4, 0xa6, 0x35, 0xe2, 0x97, 0x12, 0x34, 0x27, 0xf3, 0x89, 0xf0, 0x47, + 0x63, 0x59, 0x43, 0xa5, 0xce, 0x0e, 0xdf, 0xcc, 0x4f, 0x29, 0xec, 0x74, + 0x00, 0xed, 0x60, 0xf6, 0x05, 0x45, 0xa1, 0xe4, 0xc8, 0x3c, 0xf3, 0x1a, + 0x7c, 0x92, 0x52, 0x5f, 0x57, 0x69, 0x05, 0x83, 0x76, 0x9c, 0x0e, 0xc9, + 0x39, 0xc5, 0xc4, 0x4c, 0xc1, 0x3c, 0x11, 0xfd, 0xe8, 0x8d, 0x24, 0x56, + 0x59, 0x10, 0x4f, 0xe7, 0x77, 0x48, 0x41, 0x06, 0x7b, 0x72, 0x79, 0x49, + 0x48, 0x2e, 0x0c, 0x6f, 0x0d, 0x0e, 0x77, 0xe4, 0x52, 0xa4, 0x39, 0xa0, + 0x92, 0xe0, 0x7c, 0x87, 0x28, 0xdb, 0x00, 0x61, 0x8a, 0xf7, 0x11, 0xc3, + 0x4c, 0x7f, 0x15, 0x11, 0xb6, 0x7d, 0xa3, 0x5e, 0xe0, 0x84, 0x94, 0xc0, + 0xbe, 0x60, 0xf7, 0xef, 0xa7, 0x8a, 0x8b, 0xcd, 0x80, 0x11, 0x12, 0x23, + 0x44, 0x60, 0xc2, 0x48, 0x70, 0x81, 0xe4, 0x78, 0x2a, 0x46, 0xbd, 0x08, + 0x20, 0xc7, 0x78, 0x80, 0x92, 0x9a, 0xe1, 0xfb, 0x99, 0xb6, 0xc3, 0xaf, + 0x84, 0xa7, 0x98, 0x74, 0xb4, 0x19, 0xef, 0x07, 0xfb, 0xd1, 0x4d, 0x2d, + 0x02, 0x1b, 0x3f, 0x35, 0x13, 0x58, 0x89, 0x7b, 0x89, 0xd7, 0xc9, 0x25, + 0x23, 0x75, 0x6e, 0x27, 0x71, 0xf7, 0x0f, 0x23, 0xc7, 0xdc, 0x96, 0xc6, + 0xb8, 0x09, 0x3c, 0x70, 0x8a, 0x1a, 0x0b, 0x81, 0x0d, 0x1a, 0x7d, 0xc8, + 0x80, 0x35, 0xc2, 0x40, 0x00, 0x8e, 0x02, 0x4a, 0x6b, 0x06, 0x96, 0x19, + 0x9f, 0xbb, 0x54, 0x5d, 0xa0, 0xb4, 0x13, 0x3e, 0x23, 0xc9, 0x4b, 0x6b, + 0xc8, 0x0e, 0x1b, 0x5c, 0x5b, 0xcb, 0x41, 0xfe, 0x2a, 0x43, 0xdc, 0x34, + 0x6c, 0x78, 0x82, 0x20, 0xa4, 0xa4, 0x00, 0xb5, 0xce, 0x99, 0xed, 0xf4, + 0x78, 0xfe, 0x09, 0xcb, 0xdb, 0xc3, 0x5a, 0x74, 0xf1, 0x2a, 0xc0, 0xaa, + 0x44, 0xf7, 0xff, 0x00, 0x5f, 0x15, 0x1b, 0x2a, 0x69, 0x3e, 0x7e, 0x29, + 0x29, 0x18, 0x35, 0xb9, 0xbe, 0xf3, 0x2e, 0xec, 0x90, 0x80, 0x0e, 0xd1, + 0xf0, 0x4c, 0xea, 0x80, 0x13, 0x24, 0x79, 0x4e, 0x89, 0x9b, 0xa0, 0x87, + 0x48, 0x13, 0xa4, 0x1f, 0xee, 0x49, 0x4c, 0x1c, 0x1c, 0xe3, 0x2e, 0x83, + 0xe4, 0x12, 0x1b, 0x9a, 0xed, 0x38, 0xfd, 0xde, 0xca, 0x64, 0xfb, 0xb9, + 0xfe, 0xf5, 0x12, 0xd2, 0x7c, 0xbe, 0x09, 0x29, 0x9f, 0xa9, 0xa6, 0xad, + 0x33, 0xc4, 0xa4, 0x24, 0x92, 0x7b, 0x1e, 0x13, 0xd7, 0xb4, 0x0d, 0x75, + 0x1e, 0x25, 0x4d, 0xcd, 0xac, 0x8d, 0x3b, 0x78, 0x24, 0xa4, 0x7e, 0xf1, + 0xf4, 0x76, 0xa8, 0x9d, 0xf2, 0x37, 0x7e, 0x08, 0xa2, 0x06, 0x91, 0x30, + 0x91, 0x0e, 0x70, 0xd6, 0x7e, 0xe4, 0x94, 0x87, 0x6e, 0x9b, 0xb5, 0x1e, + 0x4a, 0x1a, 0x6f, 0x99, 0x3c, 0xf8, 0xff, 0x00, 0x05, 0x37, 0x08, 0x3a, + 0x76, 0x4b, 0x70, 0xdb, 0xbe, 0x74, 0xe6, 0x23, 0x54, 0x94, 0xff, 0x00, + 0xff, 0xd9 +}; +size_t demo_002_jpg_len = 20678; + +const uint8_t demo_003_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00, + 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00, + 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x31, 0x00, + 0x34, 0x00, 0x38, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xee, 0x0a, 0x81, 0x53, 0x72, 0x81, 0x49, 0x4b, 0x15, + 0x02, 0xde, 0xe3, 0x43, 0xe2, 0xa6, 0x54, 0x4a, 0x4a, 0x63, 0xba, 0x34, + 0x77, 0xdf, 0xd9, 0x3a, 0x49, 0xa0, 0x8f, 0xa3, 0xc7, 0x82, 0x4a, 0x52, + 0x49, 0x02, 0x0f, 0xc7, 0xc1, 0x3a, 0x4a, 0x52, 0x49, 0x27, 0x84, 0x94, + 0xb2, 0x8d, 0xb6, 0xd7, 0x43, 0x0d, 0x96, 0x38, 0x35, 0xa1, 0x07, 0x33, + 0x3a, 0x9c, 0x46, 0x1d, 0xde, 0xeb, 0x3b, 0x30, 0x7f, 0x15, 0xcf, 0x64, + 0x5f, 0x97, 0x95, 0x90, 0xf7, 0xe4, 0x3e, 0x1a, 0x08, 0x65, 0x18, 0xed, + 0x12, 0xe7, 0xc8, 0xd4, 0xfc, 0x8a, 0x4a, 0x6d, 0xe7, 0x75, 0x57, 0x5f, + 0x53, 0x8b, 0x0f, 0xa7, 0x8e, 0xd9, 0x93, 0xc4, 0xc7, 0x89, 0x50, 0xc6, + 0xc7, 0xbb, 0x26, 0x96, 0xbe, 0xa8, 0xc7, 0xa1, 0xe0, 0x07, 0xd8, 0xef, + 0xa7, 0x63, 0x46, 0xbb, 0x83, 0x4f, 0x9f, 0x8f, 0xdc, 0xa7, 0x8b, 0xd3, + 0x83, 0x58, 0x1f, 0x99, 0x04, 0x37, 0x5a, 0xe9, 0x99, 0x6b, 0x7b, 0xeb, + 0xe2, 0x51, 0xf2, 0x72, 0xc0, 0x69, 0x8f, 0x6b, 0x47, 0x8a, 0x4a, 0x41, + 0x73, 0xe9, 0xc5, 0xaf, 0xd2, 0xa0, 0x6d, 0x07, 0xe9, 0x38, 0xea, 0xe7, + 0x1f, 0x12, 0x56, 0x1f, 0x52, 0xea, 0x98, 0xf8, 0x62, 0x6c, 0xf7, 0xda, + 0x7e, 0x8d, 0x40, 0xeb, 0x3e, 0x7e, 0x0a, 0x8f, 0x57, 0xfa, 0xc0, 0x0b, + 0xcd, 0x58, 0x47, 0x73, 0xc6, 0x86, 0xee, 0xc3, 0xfa, 0xbf, 0xde, 0xb0, + 0x1e, 0xe7, 0x17, 0xef, 0x71, 0x2f, 0x7b, 0xbe, 0x91, 0x3a, 0x92, 0x52, + 0x53, 0x63, 0x2f, 0x3b, 0x23, 0x32, 0xcd, 0xf9, 0x0e, 0xf6, 0xfe, 0x6b, + 0x47, 0xd1, 0x6a, 0x0c, 0x17, 0xf3, 0xf4, 0x54, 0x5a, 0x3c, 0x75, 0xf2, + 0x46, 0x90, 0xd1, 0x25, 0x25, 0x23, 0x0d, 0x84, 0xb7, 0x46, 0x8d, 0xd4, + 0xa4, 0x5c, 0x0f, 0xf7, 0x24, 0x0c, 0x71, 0xf8, 0xa4, 0xa5, 0x06, 0x93, + 0xa9, 0x52, 0x0c, 0x03, 0xcd, 0x38, 0x29, 0xe4, 0xf1, 0xd9, 0x25, 0x2c, + 0x1a, 0x06, 0xa0, 0x42, 0x98, 0x8e, 0xe9, 0xa0, 0x77, 0x52, 0x69, 0x84, + 0x94, 0xc8, 0x3b, 0xc0, 0x4a, 0x7d, 0xee, 0x1c, 0x40, 0xfc, 0x54, 0x65, + 0x49, 0xb5, 0xda, 0xff, 0x00, 0xa2, 0xc2, 0x7c, 0xce, 0x9f, 0x95, 0x25, + 0x2c, 0x75, 0xe6, 0x4f, 0xc5, 0x29, 0xed, 0x10, 0x88, 0x31, 0xac, 0xe5, + 0xce, 0x0d, 0x1e, 0x5a, 0x94, 0xde, 0x83, 0x64, 0x6e, 0x9d, 0x0f, 0x8f, + 0x3f, 0x72, 0x4a, 0x42, 0x5d, 0xaf, 0xf0, 0x53, 0xae, 0x8b, 0xec, 0x70, + 0x6d, 0x75, 0xb9, 0xce, 0x77, 0x00, 0xe8, 0xb4, 0x30, 0x70, 0x2f, 0xcb, + 0xb7, 0x66, 0x33, 0x34, 0x1f, 0x49, 0xdc, 0x35, 0xbf, 0x12, 0xba, 0x8e, + 0x9f, 0xd3, 0x71, 0xba, 0x73, 0x7d, 0xc4, 0x1b, 0x9c, 0x3d, 0xd6, 0x3a, + 0x27, 0xfb, 0x21, 0x25, 0x38, 0x98, 0x3f, 0x54, 0xed, 0xb1, 0xad, 0xb3, + 0x36, 0xef, 0x48, 0x1d, 0x7d, 0x26, 0x09, 0x77, 0xcd, 0xc7, 0x45, 0xbd, + 0x47, 0x4c, 0xc3, 0xaa, 0xa0, 0xd6, 0x57, 0xb9, 0xad, 0xec, 0xe3, 0x23, + 0xee, 0xd0, 0x2b, 0x3e, 0xa0, 0x33, 0xe9, 0xb1, 0xd6, 0x48, 0xd0, 0x81, + 0xb5, 0xbf, 0x7b, 0xa1, 0x1e, 0xb2, 0xf3, 0x4b, 0x86, 0xd6, 0x54, 0x7b, + 0x03, 0xef, 0x3f, 0xc1, 0x25, 0x30, 0xad, 0xa1, 0xa0, 0x06, 0x34, 0x31, + 0xbe, 0x00, 0x40, 0xfc, 0x14, 0xbd, 0x4a, 0xd9, 0xfc, 0xeb, 0x9a, 0xdf, + 0x89, 0x41, 0xf4, 0x9c, 0x47, 0xe9, 0x2c, 0x7b, 0xbc, 0x81, 0xd8, 0x3f, + 0xe8, 0xc2, 0x9b, 0x2b, 0x65, 0x7e, 0xe6, 0xb0, 0x0f, 0x38, 0x93, 0xf7, + 0xa4, 0xa4, 0x2f, 0xb2, 0xc7, 0x58, 0x3d, 0x09, 0x7d, 0x5a, 0xef, 0x1b, + 0x62, 0x7c, 0x3d, 0xce, 0x2d, 0x52, 0x15, 0xe5, 0x3e, 0x20, 0x32, 0xa1, + 0xe2, 0x65, 0xe7, 0xf0, 0x80, 0xa5, 0xea, 0xf2, 0xe7, 0x38, 0x31, 0xa3, + 0x92, 0xe3, 0x03, 0xf1, 0x42, 0xfd, 0xa1, 0x8f, 0x24, 0x52, 0xe3, 0x73, + 0xbc, 0x2a, 0x05, 0xff, 0x00, 0x8b, 0x44, 0x7e, 0x29, 0x29, 0xb2, 0xcc, + 0x7d, 0xc3, 0x6d, 0x97, 0x3d, 0xe3, 0xc0, 0x1d, 0x83, 0xfe, 0x84, 0x27, + 0xfb, 0x36, 0x1c, 0xc7, 0xa4, 0xdf, 0xbb, 0xdd, 0x3f, 0xd6, 0xe5, 0x56, + 0x19, 0x59, 0xaf, 0x11, 0x5d, 0x02, 0xbf, 0x3b, 0x9e, 0x07, 0xfd, 0x16, + 0x6e, 0x43, 0xd9, 0xd4, 0x67, 0x77, 0xaf, 0x54, 0xfe, 0xef, 0xa6, 0x76, + 0xff, 0x00, 0x9d, 0xba, 0x52, 0x53, 0xd3, 0x13, 0xe3, 0xa2, 0x89, 0x53, + 0x70, 0x50, 0x88, 0xe3, 0xee, 0x49, 0x4c, 0x4a, 0x62, 0x9c, 0x9f, 0x1d, + 0x0a, 0x64, 0x94, 0xb2, 0x49, 0x24, 0x92, 0x96, 0x2d, 0x07, 0x94, 0xda, + 0x8e, 0x75, 0x1e, 0x2a, 0x4a, 0x36, 0xdb, 0x5d, 0x2c, 0x36, 0x5a, 0xe0, + 0xd6, 0x8e, 0xe5, 0x25, 0x32, 0x1e, 0x3d, 0x96, 0x6e, 0x6f, 0x55, 0x0d, + 0x77, 0xa1, 0x8b, 0xef, 0xb0, 0xcc, 0xb8, 0x6b, 0x11, 0xa9, 0x85, 0x4f, + 0x3b, 0xa9, 0x59, 0x91, 0x2c, 0xa6, 0x6a, 0xab, 0xb9, 0xe2, 0x47, 0x9a, + 0x05, 0x14, 0x8c, 0x8b, 0x5c, 0x68, 0x2e, 0x6d, 0x03, 0x4f, 0x54, 0xe8, + 0xf7, 0x03, 0xe1, 0xe0, 0x3c, 0xd2, 0x53, 0x0a, 0xcd, 0x97, 0x5b, 0x63, + 0x1b, 0xfa, 0x4b, 0x89, 0x1e, 0xf7, 0x13, 0xb6, 0xbe, 0xe4, 0xbb, 0xc4, + 0x9f, 0x05, 0x6f, 0x03, 0xa6, 0x55, 0x84, 0xe7, 0xe4, 0x3d, 0xe6, 0xec, + 0x87, 0xe8, 0xeb, 0x5f, 0xc9, 0xf2, 0x68, 0xe1, 0xa3, 0xc8, 0x22, 0xd5, + 0x4d, 0x74, 0x08, 0xac, 0x06, 0x88, 0x59, 0x3d, 0x67, 0xeb, 0x16, 0x2e, + 0x00, 0x2c, 0x1f, 0xa5, 0xc9, 0xfc, 0xda, 0x47, 0x6f, 0x37, 0x1e, 0xc9, + 0x29, 0xbd, 0xd4, 0xba, 0x9d, 0x18, 0x75, 0x1b, 0xb2, 0x1e, 0x1a, 0xd1, + 0xc0, 0xee, 0x4f, 0x80, 0x0b, 0x88, 0xeb, 0x3d, 0x7b, 0x2f, 0x3c, 0x16, + 0x56, 0xd3, 0x4e, 0x21, 0xed, 0xf9, 0xce, 0xfe, 0xb7, 0xf7, 0x2a, 0x99, + 0x59, 0xb9, 0x19, 0xb7, 0xfd, 0xa3, 0x31, 0xdb, 0xfc, 0x1a, 0x3e, 0x8b, + 0x07, 0x90, 0x4c, 0xe7, 0x6f, 0x10, 0x34, 0x6f, 0xe5, 0x49, 0x4d, 0x46, + 0xcc, 0xfb, 0x7e, 0xf4, 0x7a, 0xc1, 0x1d, 0xbe, 0x24, 0xa9, 0x6c, 0x00, + 0x78, 0x28, 0x97, 0xc6, 0x8d, 0xfb, 0xd2, 0x52, 0xe5, 0xc1, 0xa7, 0xcd, + 0x46, 0x5c, 0xe3, 0x25, 0x20, 0x34, 0xf3, 0x53, 0x6b, 0x0f, 0x82, 0x4a, + 0x5a, 0x0a, 0x90, 0x6a, 0x9b, 0x6b, 0x3d, 0xf4, 0x44, 0x15, 0x0e, 0x4e, + 0xa9, 0x29, 0x16, 0x81, 0x49, 0xac, 0x7b, 0xbe, 0x8b, 0x49, 0x44, 0x63, + 0x7d, 0xc5, 0xa0, 0x0f, 0x28, 0xe5, 0x1b, 0x46, 0x8d, 0x4c, 0x24, 0xa4, + 0x2d, 0xc7, 0xb0, 0xf3, 0x03, 0xf1, 0x45, 0x6e, 0x2d, 0x7d, 0xc9, 0x72, + 0x93, 0x49, 0x77, 0xd1, 0x04, 0xfe, 0x03, 0xf1, 0x53, 0x1e, 0xa0, 0xec, + 0xd6, 0xf9, 0x9d, 0x4a, 0x4a, 0x64, 0xca, 0x9a, 0xc6, 0xcb, 0x5a, 0x3e, + 0x41, 0x23, 0x66, 0xdf, 0xa4, 0x40, 0xf8, 0x95, 0x17, 0x07, 0x97, 0x36, + 0x5c, 0x4b, 0x7f, 0x3b, 0x58, 0xfb, 0xa1, 0x1f, 0x1b, 0x15, 0xd9, 0x0f, + 0x0d, 0xc7, 0xaa, 0x5c, 0x4c, 0x03, 0x1f, 0x89, 0x29, 0x29, 0x03, 0x37, + 0xd8, 0xe0, 0xca, 0xd8, 0xe7, 0xb9, 0xc6, 0x00, 0x03, 0x93, 0xf3, 0x5b, + 0x58, 0x9f, 0x56, 0x32, 0xad, 0xda, 0xfc, 0x97, 0xb2, 0x90, 0x75, 0x35, + 0x8f, 0x73, 0xbe, 0x7c, 0x05, 0x7f, 0x07, 0x06, 0x8c, 0x00, 0x1d, 0x63, + 0xc3, 0xaf, 0x77, 0x2e, 0xd0, 0x6d, 0xf2, 0x68, 0xe5, 0x68, 0x32, 0xc2, + 0x5a, 0x62, 0xb7, 0xb8, 0x9f, 0xa2, 0x48, 0xda, 0x3e, 0xf7, 0x42, 0x4a, + 0x63, 0x56, 0x16, 0x3d, 0x0c, 0x15, 0x34, 0x9d, 0x83, 0xf3, 0x1b, 0xed, + 0x1f, 0xf4, 0x61, 0x4e, 0xa6, 0x56, 0xc2, 0x76, 0xd6, 0x1b, 0xfb, 0xa6, + 0x35, 0x2a, 0x26, 0xbc, 0xb7, 0x6a, 0x76, 0x56, 0x0f, 0x1c, 0xbc, 0xff, + 0x00, 0x00, 0xa5, 0xf6, 0x72, 0x75, 0xb2, 0xd7, 0xbf, 0xc8, 0x1d, 0xa3, + 0xfe, 0x8c, 0x24, 0xa6, 0x56, 0xd8, 0xd6, 0x09, 0xb1, 0xe1, 0xa3, 0xcf, + 0x45, 0x06, 0x65, 0xb1, 0xdf, 0x41, 0x8e, 0xb7, 0xfa, 0xad, 0x31, 0xf7, + 0x98, 0x0a, 0x6c, 0xaa, 0x96, 0x19, 0x65, 0x6d, 0x04, 0x77, 0x3a, 0x9f, + 0xc5, 0x4c, 0xc5, 0x66, 0x5e, 0x7f, 0xb8, 0x24, 0xa6, 0x1b, 0xb2, 0x9e, + 0xd1, 0xb6, 0xb6, 0x55, 0xa9, 0x92, 0xf7, 0x6e, 0x3f, 0x73, 0x3f, 0xbd, + 0x45, 0xf4, 0x5a, 0xe1, 0xfa, 0x4b, 0xdd, 0x07, 0xb5, 0x60, 0x56, 0x3e, + 0xff, 0x00, 0x71, 0xfc, 0x53, 0x8c, 0x9a, 0xc9, 0x86, 0x9d, 0xe7, 0xb0, + 0x60, 0x2e, 0xfc, 0x92, 0xa6, 0x4e, 0x43, 0xc4, 0x32, 0x92, 0x07, 0x8b, + 0xc8, 0x6f, 0xe0, 0x24, 0xa4, 0xa6, 0x83, 0x71, 0x71, 0x3d, 0x57, 0x01, + 0x54, 0xd8, 0xce, 0x5d, 0x60, 0x2f, 0x33, 0xe4, 0x5f, 0x2a, 0xe8, 0x12, + 0x00, 0x02, 0x3e, 0x1c, 0x28, 0xba, 0x8b, 0x86, 0xb6, 0x5a, 0xd6, 0xff, + 0x00, 0x51, 0xbf, 0xf7, 0xe7, 0xff, 0x00, 0x72, 0x23, 0x28, 0xa1, 0xff, + 0x00, 0x4f, 0x75, 0xbf, 0xd6, 0x76, 0x9f, 0x70, 0x80, 0x92, 0x90, 0x5a, + 0xfc, 0x71, 0xb7, 0xd4, 0x73, 0x49, 0x06, 0x43, 0x41, 0x93, 0xf7, 0x0d, + 0x53, 0x7a, 0xde, 0xd9, 0xf4, 0x6d, 0xd9, 0xce, 0xed, 0x87, 0x9f, 0x87, + 0x3f, 0x82, 0xb2, 0xea, 0x9a, 0x1b, 0xb6, 0xa6, 0x8a, 0xc7, 0x83, 0x00, + 0x1f, 0x91, 0x0b, 0xd0, 0xb6, 0x38, 0x1f, 0x0e, 0xf1, 0xf1, 0x49, 0x4f, + 0x42, 0x42, 0x81, 0x53, 0x3e, 0x6a, 0x25, 0x25, 0x30, 0x20, 0x42, 0x84, + 0x11, 0xc7, 0xdc, 0x51, 0x0a, 0x8a, 0x4a, 0x60, 0x08, 0x3a, 0x70, 0x7c, + 0x13, 0xa7, 0x20, 0x46, 0xbc, 0x2c, 0xdc, 0xde, 0xaa, 0x2a, 0x9a, 0xf1, + 0xce, 0xf7, 0xfe, 0xff, 0x00, 0x20, 0x7c, 0x3c, 0x52, 0x53, 0x67, 0x2f, + 0x36, 0xac, 0x51, 0xee, 0xf7, 0x58, 0x78, 0x60, 0xe7, 0xe6, 0xb0, 0x73, + 0xb2, 0xec, 0xb8, 0x0b, 0x6e, 0x24, 0x35, 0xda, 0x56, 0xd1, 0xc9, 0xd6, + 0x21, 0xad, 0x08, 0x5e, 0xb3, 0x9c, 0x5c, 0x09, 0x36, 0x5e, 0xe2, 0x09, + 0xf0, 0x68, 0x3d, 0xdc, 0x51, 0xf1, 0x71, 0xb6, 0x38, 0x5b, 0x61, 0xdf, + 0x61, 0xee, 0x7b, 0x0f, 0x06, 0x8e, 0xc9, 0x29, 0x8d, 0x78, 0xae, 0xb8, + 0x87, 0xde, 0xd0, 0xc6, 0x69, 0xb7, 0x1c, 0x71, 0xf1, 0x79, 0xef, 0xf0, + 0x56, 0x6d, 0xb9, 0xb8, 0x8c, 0x73, 0xf4, 0xd0, 0x6a, 0x49, 0x80, 0x02, + 0x16, 0x7f, 0x50, 0xc6, 0xc1, 0xab, 0xd6, 0xca, 0x78, 0x68, 0xfc, 0xd6, + 0xfe, 0x73, 0x8f, 0x90, 0x5c, 0x67, 0x52, 0xeb, 0x59, 0x1d, 0x51, 0xc5, + 0xaf, 0x3e, 0x96, 0x20, 0x32, 0x2a, 0x69, 0xd4, 0xf8, 0x6e, 0x49, 0x4e, + 0x8f, 0x55, 0xfa, 0xcf, 0x6d, 0xf6, 0x3a, 0x8e, 0x9e, 0xed, 0xad, 0x1a, + 0x1b, 0xcf, 0x61, 0xfc, 0x9f, 0xef, 0x58, 0x37, 0xd7, 0x58, 0x12, 0xe7, + 0x17, 0x5a, 0xed, 0x77, 0xcc, 0x97, 0x1f, 0x35, 0x23, 0x75, 0x6c, 0x0d, + 0xd0, 0x0d, 0xbf, 0x45, 0xc3, 0xcf, 0xc4, 0x2a, 0xed, 0x78, 0xb1, 0xee, + 0x3c, 0x0e, 0xc9, 0x29, 0x60, 0xc3, 0x32, 0x79, 0xfc, 0x11, 0x24, 0x37, + 0x5f, 0xc1, 0x41, 0xf7, 0x01, 0xed, 0x60, 0xd5, 0x45, 0xba, 0x99, 0x27, + 0x54, 0x94, 0xc8, 0x97, 0x3c, 0xf8, 0x0f, 0x04, 0xe1, 0x8a, 0x40, 0x78, + 0x34, 0x94, 0x9c, 0x5e, 0xd0, 0x09, 0x80, 0x92, 0x99, 0x35, 0x8a, 0x63, + 0x60, 0xe4, 0x80, 0x7c, 0x10, 0x77, 0x13, 0xa1, 0x93, 0x28, 0xac, 0x1a, + 0x6b, 0xcf, 0x92, 0x4a, 0x66, 0x1e, 0x3b, 0x09, 0xfc, 0x3f, 0x2a, 0x76, + 0xb8, 0x9d, 0x01, 0x02, 0x3e, 0x6a, 0x2d, 0x69, 0x76, 0x82, 0x5d, 0xe4, + 0x35, 0x46, 0x66, 0x35, 0xdc, 0x86, 0x44, 0xf8, 0x94, 0x94, 0xa6, 0x81, + 0xf9, 0xc4, 0x9f, 0xc0, 0x29, 0x02, 0x07, 0xd1, 0x10, 0x3c, 0x82, 0x95, + 0x78, 0xee, 0x7e, 0x8f, 0x76, 0xd2, 0x3f, 0x34, 0x0f, 0xef, 0x46, 0x18, + 0xf5, 0x81, 0x26, 0x5d, 0xf1, 0x29, 0x29, 0xae, 0x5f, 0xac, 0xce, 0xa5, + 0x4d, 0xad, 0xb9, 0xdf, 0x45, 0x87, 0xe2, 0x74, 0xfc, 0xab, 0x43, 0x18, + 0xd2, 0xd1, 0xb4, 0x55, 0xb9, 0xe7, 0x46, 0x86, 0x8f, 0xe0, 0xb5, 0x70, + 0x7a, 0x76, 0x35, 0x6e, 0xf5, 0x73, 0x9c, 0x37, 0x8d, 0x5b, 0x8e, 0x3d, + 0xd1, 0xfd, 0x68, 0xfc, 0x89, 0x29, 0xce, 0xe9, 0x7f, 0x56, 0xf2, 0x73, + 0x4f, 0xad, 0x73, 0xbd, 0x1a, 0x4f, 0xe7, 0x72, 0xe7, 0x7f, 0x56, 0x57, + 0x4b, 0x47, 0x4e, 0xc2, 0xc2, 0xc7, 0xf4, 0xea, 0x92, 0xd6, 0x8d, 0x77, + 0x3a, 0x27, 0xcd, 0xdb, 0x61, 0x45, 0xf9, 0x39, 0x4e, 0x21, 0x98, 0xd5, + 0x38, 0x37, 0xbb, 0xdf, 0x0c, 0x00, 0x79, 0x07, 0x6b, 0xf8, 0x28, 0x3a, + 0xbb, 0xec, 0xac, 0xd7, 0x63, 0x9a, 0x43, 0x84, 0x38, 0x41, 0x74, 0x83, + 0xf7, 0x04, 0x94, 0xd8, 0xc7, 0x7b, 0x5b, 0x03, 0xd3, 0x6b, 0x4b, 0x84, + 0x8f, 0x4f, 0x56, 0xfd, 0xf0, 0x11, 0x5f, 0x75, 0x35, 0x36, 0x6c, 0x7b, + 0x5b, 0x1f, 0xbc, 0x40, 0xfc, 0xab, 0x2e, 0x99, 0x39, 0xaf, 0xc4, 0xb1, + 0xcf, 0xf4, 0x99, 0x58, 0x73, 0x58, 0xd7, 0x6c, 0x07, 0x58, 0xe2, 0xb8, + 0xd1, 0x5c, 0xae, 0xb6, 0xd6, 0xe0, 0x28, 0xa5, 0x8d, 0x3f, 0xbd, 0xb6, + 0x5d, 0xfe, 0x71, 0xd5, 0x25, 0x33, 0x19, 0x2c, 0x78, 0xdd, 0x53, 0x5f, + 0x76, 0xba, 0x6c, 0x69, 0x80, 0x3f, 0xac, 0x60, 0x29, 0x4e, 0x4b, 0xe0, + 0x35, 0x8d, 0xab, 0xfa, 0xee, 0xdc, 0x7e, 0xe6, 0x7f, 0x7a, 0x2c, 0x3c, + 0x0d, 0xd6, 0xbf, 0xef, 0xe3, 0xf1, 0x42, 0x76, 0x4d, 0x03, 0x87, 0xef, + 0x70, 0xec, 0xd0, 0x5d, 0xf9, 0x12, 0x53, 0x13, 0x8f, 0x69, 0x0e, 0x26, + 0xd7, 0x39, 0xe3, 0x86, 0xb0, 0x0a, 0xc7, 0xdf, 0xee, 0x2a, 0x6d, 0xc6, + 0xa4, 0x00, 0xe7, 0xb0, 0x3e, 0xce, 0xe5, 0xd2, 0xff, 0x00, 0xfa, 0xa9, + 0x51, 0x76, 0x4b, 0x9e, 0x25, 0xb5, 0xc4, 0xfe, 0x73, 0xc8, 0x1f, 0x80, + 0x94, 0x27, 0x3e, 0xe0, 0xd8, 0x36, 0xed, 0x1f, 0xc8, 0x1a, 0xfd, 0xee, + 0x9f, 0xc8, 0x92, 0x9b, 0x80, 0x38, 0x69, 0x30, 0x3c, 0x07, 0xfb, 0x14, + 0x1f, 0x91, 0x4b, 0x34, 0x7d, 0x80, 0x1f, 0x02, 0x75, 0xfb, 0x95, 0x12, + 0x77, 0x7d, 0x37, 0x39, 0xe0, 0xf6, 0x73, 0x8c, 0x7d, 0xc2, 0x02, 0x43, + 0x63, 0x44, 0x30, 0x00, 0x7c, 0xb4, 0x49, 0x49, 0xdd, 0x76, 0x2e, 0xf0, + 0xed, 0x8f, 0xb1, 0xdd, 0xb4, 0x81, 0x3f, 0xdb, 0x85, 0x0b, 0x72, 0xec, + 0xd0, 0x31, 0xad, 0x67, 0xcc, 0x9f, 0xc9, 0x0a, 0xbe, 0x41, 0xb1, 0xb5, + 0x97, 0x34, 0x1d, 0x46, 0xa4, 0x90, 0xdf, 0xc5, 0xc8, 0x55, 0x3e, 0x96, + 0x9d, 0xcc, 0x97, 0xbc, 0xea, 0x76, 0x07, 0x58, 0x67, 0xe2, 0x01, 0x09, + 0x29, 0xb3, 0xea, 0x58, 0x74, 0x7b, 0xdc, 0x4f, 0x94, 0x37, 0xf2, 0x09, + 0x52, 0xf4, 0xc6, 0xdd, 0xd0, 0x7e, 0x32, 0x7f, 0x2c, 0xca, 0x0e, 0xeb, + 0x8e, 0xad, 0xaa, 0x3f, 0xe3, 0x1c, 0x1b, 0xf8, 0x0d, 0xc5, 0x13, 0x7d, + 0xde, 0x9e, 0xdf, 0x66, 0xef, 0x83, 0xe3, 0xef, 0xff, 0x00, 0x62, 0x4a, + 0x7a, 0xae, 0xca, 0x24, 0x78, 0x27, 0x29, 0x8a, 0x4a, 0x60, 0x67, 0xba, + 0x1d, 0x96, 0x57, 0x5b, 0x0b, 0xde, 0xe0, 0x1a, 0x3b, 0xa3, 0x15, 0x93, + 0xd6, 0x80, 0x0d, 0xae, 0xcf, 0x71, 0x20, 0x90, 0x58, 0xde, 0xe3, 0xfb, + 0xd2, 0x53, 0x5b, 0x37, 0xa8, 0x59, 0x90, 0xff, 0x00, 0x4a, 0xb3, 0xb2, + 0x9e, 0xf2, 0x62, 0x63, 0x5f, 0x71, 0x59, 0xac, 0xb2, 0xfc, 0xab, 0x0b, + 0x70, 0xc6, 0xca, 0x7e, 0x8b, 0xf2, 0x9c, 0x3e, 0x90, 0xee, 0xda, 0xc7, + 0x7f, 0x8f, 0x0a, 0xcb, 0x3a, 0x73, 0xb2, 0x5e, 0x2c, 0xca, 0x96, 0x50, + 0x0c, 0xb7, 0x14, 0x6b, 0x3e, 0x1e, 0xab, 0xbb, 0xfc, 0x3e, 0xf4, 0x6c, + 0xcc, 0x9a, 0x30, 0xe9, 0x75, 0xb6, 0x10, 0xca, 0x98, 0x35, 0x8f, 0xc0, + 0x24, 0xa4, 0x74, 0xe2, 0xd5, 0x43, 0x05, 0x75, 0x8e, 0xf2, 0x67, 0x53, + 0x3d, 0xc9, 0x3d, 0xca, 0xce, 0xea, 0xff, 0x00, 0x58, 0xb1, 0xba, 0x7e, + 0xea, 0x28, 0x1e, 0xbe, 0x54, 0x46, 0xd1, 0xf4, 0x59, 0xfd, 0x62, 0xb2, + 0x7a, 0x9f, 0xd6, 0x5b, 0xb2, 0x41, 0xc6, 0xc0, 0x9a, 0x98, 0x47, 0xbe, + 0xd3, 0xa3, 0x8f, 0x90, 0xf0, 0x59, 0x98, 0x27, 0x0a, 0xb2, 0x4e, 0x4c, + 0xfa, 0xc7, 0x82, 0xef, 0xa2, 0x7e, 0x7f, 0xde, 0x92, 0x91, 0x64, 0x1c, + 0xfc, 0xa9, 0xce, 0xcb, 0x26, 0xc8, 0xd0, 0x6e, 0xd3, 0x4f, 0x16, 0x8f, + 0x05, 0x56, 0xe7, 0x80, 0x62, 0x21, 0xc3, 0xb7, 0x0a, 0xe6, 0x6f, 0x51, + 0x6f, 0xba, 0xaa, 0x4e, 0xf6, 0x91, 0x04, 0x9e, 0x07, 0x90, 0x54, 0x2a, + 0xa6, 0xdb, 0xdd, 0xa6, 0xa3, 0xbb, 0x8f, 0x09, 0x29, 0x87, 0xb9, 0xee, + 0x1d, 0xcf, 0x82, 0xb3, 0x45, 0x63, 0x66, 0xe8, 0xd4, 0xa2, 0x16, 0xd5, + 0x8e, 0xd8, 0x68, 0x92, 0x74, 0x73, 0xfb, 0x4a, 0x7c, 0x76, 0xfe, 0x88, + 0x4f, 0x8f, 0xf1, 0x49, 0x4d, 0x70, 0xc0, 0x6c, 0x76, 0x9d, 0xd1, 0xda, + 0x18, 0xd0, 0x24, 0xc2, 0x1e, 0xc9, 0xbd, 0xc3, 0xb4, 0xf0, 0xaf, 0x55, + 0x4b, 0x40, 0x10, 0xd1, 0xf1, 0x84, 0x94, 0x84, 0x00, 0x75, 0x68, 0x2e, + 0xf8, 0x04, 0xe7, 0x1e, 0xcb, 0x34, 0xfa, 0x31, 0xe3, 0xfe, 0xc5, 0x6c, + 0xb9, 0x8c, 0xfa, 0x6e, 0x03, 0xe6, 0x91, 0xbe, 0x98, 0xf6, 0x4b, 0xfc, + 0xc7, 0xfb, 0x52, 0x52, 0x1a, 0xf0, 0x5a, 0x3e, 0x93, 0xa5, 0x1c, 0x63, + 0xd4, 0xd1, 0xa3, 0x27, 0xcc, 0xea, 0xa3, 0xea, 0x59, 0xd9, 0xa0, 0x7c, + 0x75, 0x4a, 0x6c, 0x77, 0x2f, 0x3f, 0x01, 0xa2, 0x4a, 0x6c, 0x00, 0xd1, + 0x02, 0x40, 0xfc, 0x02, 0x85, 0x96, 0xd7, 0x30, 0x1f, 0xc7, 0xee, 0xea, + 0x84, 0xd6, 0x34, 0x6b, 0x12, 0x7c, 0x4e, 0xbf, 0x95, 0x39, 0x01, 0x25, + 0x2d, 0x63, 0xdc, 0xf1, 0x0d, 0x64, 0x78, 0x38, 0x98, 0xfc, 0x8a, 0xce, + 0x0f, 0x4f, 0xcf, 0xce, 0x76, 0xda, 0xce, 0xda, 0xc7, 0xd3, 0xb2, 0x34, + 0x1f, 0x7a, 0xb9, 0xd3, 0xba, 0x48, 0xb4, 0x0b, 0xb2, 0xdc, 0x59, 0x57, + 0x22, 0xb6, 0xc9, 0x73, 0xbe, 0x3e, 0x01, 0x6f, 0xd7, 0x65, 0x55, 0x56, + 0x2b, 0xa6, 0xad, 0xac, 0x03, 0x40, 0x48, 0x68, 0xfb, 0x9b, 0x29, 0x29, + 0x16, 0x27, 0x46, 0xc3, 0xc3, 0x00, 0x81, 0xea, 0x5b, 0x1a, 0xdb, 0x61, + 0x24, 0xfc, 0x87, 0x01, 0x5a, 0x1e, 0xdd, 0x1a, 0x20, 0x79, 0x08, 0x42, + 0x36, 0x5c, 0x40, 0xd8, 0x43, 0x49, 0xec, 0xd1, 0xaf, 0xde, 0x54, 0x03, + 0x1e, 0x4c, 0xd8, 0x4b, 0xbc, 0x89, 0x31, 0xf7, 0x24, 0xa4, 0xc6, 0xd6, + 0xb4, 0x92, 0x48, 0x04, 0xf6, 0x27, 0x55, 0x0b, 0x2f, 0x03, 0xe8, 0xcf, + 0xc8, 0x47, 0xfd, 0x52, 0x83, 0x60, 0x1d, 0x00, 0x1f, 0x04, 0xcf, 0x11, + 0xab, 0xb4, 0x9d, 0x35, 0xee, 0x4a, 0x4a, 0x46, 0xd7, 0x16, 0xe5, 0x1b, + 0xc0, 0x87, 0x16, 0x6c, 0x20, 0xeb, 0xa4, 0xcf, 0x92, 0x3f, 0xda, 0x2c, + 0x78, 0xf6, 0xd8, 0x5a, 0x3b, 0xed, 0x1b, 0x50, 0x5f, 0x5b, 0x83, 0x4d, + 0x84, 0x90, 0xd6, 0x02, 0xe2, 0x07, 0x3a, 0x2a, 0x98, 0xd9, 0xc7, 0x39, + 0x9b, 0xb0, 0xc5, 0x6e, 0x69, 0xec, 0xf7, 0xea, 0x3e, 0x2c, 0x68, 0x90, + 0x92, 0x9b, 0xce, 0x1e, 0xef, 0x77, 0xb9, 0xde, 0x2e, 0xd7, 0xf2, 0xa2, + 0x35, 0xed, 0x68, 0xf7, 0x15, 0x4f, 0xd1, 0xc9, 0x7c, 0x1b, 0x2d, 0xdb, + 0xe2, 0x2a, 0x00, 0x7f, 0xd2, 0x76, 0xe2, 0x97, 0xd9, 0x29, 0xe5, 0xfb, + 0xad, 0x71, 0xe7, 0x7b, 0x8b, 0xbf, 0x0e, 0x12, 0x53, 0x62, 0xcc, 0xcc, + 0x46, 0x18, 0x36, 0xb6, 0x47, 0x0d, 0x99, 0x3f, 0x73, 0x64, 0xa1, 0xfd, + 0xab, 0xd5, 0x74, 0x57, 0x5b, 0xdc, 0x7b, 0x08, 0x0c, 0x1f, 0xf4, 0xc8, + 0x3f, 0x82, 0x5b, 0x5b, 0x58, 0xf6, 0x34, 0x34, 0x7f, 0x24, 0x47, 0xe4, + 0x55, 0xba, 0x73, 0x2b, 0x37, 0xd9, 0x74, 0x6c, 0x3b, 0x88, 0x73, 0xdf, + 0xa4, 0xc7, 0xc4, 0xa4, 0xa6, 0xd9, 0x19, 0x6e, 0x81, 0xec, 0xac, 0x78, + 0x99, 0x79, 0xff, 0x00, 0xbe, 0xa1, 0x7a, 0x6f, 0x0f, 0x87, 0x5c, 0xf8, + 0xef, 0xb6, 0x18, 0x3f, 0xe8, 0x89, 0xfc, 0x55, 0xc7, 0x5f, 0x85, 0xc3, + 0x6d, 0xf5, 0x1d, 0xe1, 0x58, 0x2f, 0xff, 0x00, 0xa9, 0x55, 0xec, 0x16, + 0x5d, 0xfc, 0xdd, 0x56, 0x35, 0x87, 0x43, 0x64, 0xb5, 0xa4, 0x0f, 0x10, + 0x26, 0x52, 0x52, 0xf1, 0x4d, 0x44, 0x34, 0x06, 0xee, 0x27, 0x42, 0xe1, + 0x27, 0xef, 0x7c, 0x94, 0x5d, 0xcf, 0x81, 0xa9, 0x50, 0xab, 0x18, 0x12, + 0x0b, 0x19, 0x2e, 0xec, 0xf7, 0x99, 0x3f, 0x7a, 0xbd, 0x4f, 0x4d, 0xb2, + 0xe6, 0x07, 0xba, 0xe0, 0xc0, 0x7b, 0x35, 0xb2, 0x47, 0x97, 0xb8, 0xc7, + 0xe0, 0x92, 0x9a, 0x3e, 0xa0, 0x04, 0x33, 0x52, 0xe3, 0xd8, 0x0f, 0xee, + 0x4a, 0x2c, 0xfa, 0x5b, 0x87, 0xc1, 0x69, 0x33, 0xa4, 0xd2, 0xd7, 0x0f, + 0x51, 0xd6, 0x5b, 0x26, 0x1c, 0x0b, 0x88, 0x1a, 0x8f, 0x06, 0x6d, 0x47, + 0xfd, 0x9b, 0x87, 0xb7, 0x6f, 0xd9, 0xeb, 0x8e, 0x78, 0x13, 0xf7, 0xf2, + 0x92, 0x9d, 0x14, 0xc9, 0xe5, 0x31, 0x49, 0x4b, 0x15, 0x9d, 0x75, 0x93, + 0x92, 0xf9, 0xe1, 0x80, 0x34, 0x2b, 0xd6, 0xbc, 0x57, 0x5b, 0x9e, 0x78, + 0x68, 0x95, 0xca, 0x5b, 0xd4, 0xb2, 0xb2, 0xb2, 0x1f, 0x85, 0xd2, 0x6b, + 0x19, 0x39, 0x4e, 0x33, 0x6d, 0xc7, 0xf9, 0xaa, 0x41, 0xee, 0xf7, 0x7f, + 0x04, 0x94, 0xdb, 0xea, 0x5d, 0x57, 0x1f, 0x05, 0x8d, 0x36, 0x12, 0xeb, + 0x2c, 0xd2, 0xba, 0x58, 0x37, 0x59, 0x61, 0xec, 0x1a, 0xd5, 0x9d, 0x7f, + 0xd5, 0xbe, 0xb5, 0xd6, 0x69, 0xfb, 0x4e, 0x65, 0x8d, 0xc6, 0xef, 0x4e, + 0x06, 0xbc, 0x7f, 0xc2, 0x38, 0x7e, 0x72, 0xdb, 0xe9, 0x3f, 0x57, 0xe8, + 0xc0, 0xb3, 0xed, 0x79, 0x0f, 0x39, 0x7d, 0x45, 0xe3, 0xdf, 0x92, 0xff, + 0x00, 0xcd, 0xfe, 0x4d, 0x6d, 0xfc, 0xd0, 0xb5, 0xd2, 0x53, 0xe5, 0x7d, + 0x4f, 0xa7, 0x59, 0xd3, 0xed, 0x35, 0xe4, 0xd2, 0x68, 0x79, 0xe2, 0x04, + 0xb1, 0xdf, 0x0e, 0xdf, 0x72, 0xc2, 0xb9, 0xe5, 0xce, 0x23, 0xb0, 0x5e, + 0xd5, 0x99, 0x53, 0x2d, 0xc7, 0x73, 0x5f, 0x50, 0xb8, 0x01, 0x3e, 0x99, + 0x01, 0xd3, 0xe4, 0x03, 0xbb, 0xae, 0x0e, 0xcf, 0xaa, 0x97, 0xf5, 0x2b, + 0xaf, 0xbb, 0x0b, 0x10, 0xe1, 0xb1, 0xb3, 0x15, 0xd8, 0x4b, 0x65, 0xfe, + 0x1e, 0xef, 0xe1, 0xa2, 0x4a, 0x79, 0x5a, 0x68, 0x69, 0x1b, 0xed, 0x30, + 0xde, 0xcd, 0xee, 0x55, 0xda, 0x9e, 0x1d, 0xfa, 0x36, 0x00, 0xc0, 0x38, + 0x6f, 0x04, 0xab, 0x39, 0x1d, 0x20, 0xe3, 0xbb, 0xec, 0xd9, 0x2c, 0x76, + 0x36, 0x43, 0x7b, 0xbf, 0x87, 0x7f, 0x03, 0xf2, 0x55, 0x2c, 0xc7, 0xc8, + 0xc7, 0x03, 0xd4, 0x87, 0xd7, 0xdb, 0xfd, 0x89, 0x29, 0x9f, 0xa0, 0xed, + 0x74, 0xf6, 0xb8, 0x10, 0x67, 0x88, 0xf1, 0x52, 0xc5, 0x67, 0xe8, 0x87, + 0xc4, 0xa3, 0x51, 0x91, 0x73, 0x58, 0x00, 0x68, 0xb1, 0x80, 0x70, 0x74, + 0x74, 0x7c, 0x7b, 0xa5, 0x8a, 0xd1, 0xe9, 0x0f, 0xeb, 0x1f, 0xca, 0x92, + 0x9a, 0x45, 0x87, 0xed, 0x36, 0x41, 0x88, 0x28, 0xfb, 0x5c, 0x47, 0xb9, + 0xc4, 0xf9, 0x70, 0x84, 0xf7, 0xec, 0xcb, 0xb8, 0x44, 0xea, 0xa4, 0x2e, + 0x7b, 0x8c, 0x34, 0x40, 0xf1, 0x49, 0x4c, 0xfd, 0x31, 0xc0, 0x1c, 0xf2, + 0x95, 0x4e, 0x60, 0x0e, 0x06, 0x1a, 0xe0, 0x7c, 0x53, 0x38, 0x3c, 0x98, + 0xdd, 0x3e, 0x49, 0xc3, 0x20, 0x70, 0x92, 0x99, 0x9b, 0x07, 0x99, 0x4f, + 0xbc, 0xc7, 0x01, 0xbf, 0x12, 0x8f, 0x89, 0xd2, 0xb3, 0x73, 0x44, 0xd3, + 0x54, 0xd7, 0xfe, 0x91, 0xc7, 0x6b, 0x7e, 0xf5, 0x6f, 0x1b, 0xa0, 0xdf, + 0x74, 0x39, 0xef, 0xad, 0x8c, 0x92, 0x26, 0x49, 0x30, 0x0c, 0x18, 0xd1, + 0x25, 0x34, 0x6a, 0xaa, 0xfc, 0x87, 0x8a, 0xe9, 0x97, 0x39, 0xdd, 0x9a, + 0x3f, 0x29, 0x5b, 0xf8, 0x1d, 0x26, 0x8c, 0x51, 0xbe, 0xd0, 0x2d, 0xbf, + 0xf7, 0x9d, 0xa8, 0x6f, 0xf5, 0x41, 0x56, 0xf1, 0xea, 0xc4, 0xc5, 0xaf, + 0xd3, 0xa5, 0xbc, 0x72, 0x46, 0xa5, 0xc7, 0xcc, 0x84, 0xce, 0xcc, 0xd7, + 0x6b, 0x6b, 0x3b, 0x87, 0x0d, 0x30, 0xd9, 0xfc, 0xa9, 0x29, 0x24, 0xd8, + 0x1f, 0xa0, 0x73, 0xda, 0xee, 0x4e, 0x9b, 0x59, 0x09, 0x4c, 0x9d, 0xa1, + 0xb3, 0xf2, 0x43, 0x76, 0x7e, 0xd2, 0x6b, 0x70, 0xf4, 0xcf, 0x01, 0xe6, + 0x00, 0x3f, 0x02, 0xe5, 0x4f, 0x2f, 0xad, 0xe1, 0xd1, 0x11, 0x92, 0xd7, + 0x38, 0x72, 0xd6, 0x9d, 0xda, 0xff, 0x00, 0x65, 0x25, 0x3a, 0x01, 0xf6, + 0x80, 0xff, 0x00, 0x4d, 0x92, 0xe1, 0xc6, 0xe3, 0x00, 0xfe, 0x5f, 0x04, + 0x0c, 0x5c, 0x8c, 0xab, 0x4b, 0x85, 0xce, 0x63, 0x34, 0x91, 0xb0, 0x4f, + 0xc7, 0x57, 0x2c, 0x2b, 0xbe, 0xb0, 0x57, 0x61, 0x2d, 0xa9, 0xb7, 0x5a, + 0x1c, 0x21, 0xdb, 0x7d, 0x80, 0xf9, 0x77, 0x28, 0x6d, 0xea, 0x3d, 0x55, + 0xc2, 0x31, 0xf1, 0xdb, 0x4b, 0x63, 0x68, 0x2f, 0x92, 0x63, 0xfb, 0x50, + 0x92, 0x9e, 0x8a, 0xcb, 0xe8, 0x69, 0x03, 0x71, 0x7b, 0xbb, 0xff, 0x00, + 0xa8, 0x84, 0x0c, 0xbc, 0xd8, 0x65, 0x6c, 0x68, 0x6b, 0x77, 0x58, 0xcd, + 0xa2, 0x75, 0x89, 0x1a, 0xf8, 0xac, 0x07, 0x53, 0xd5, 0x2e, 0xfe, 0x7b, + 0x27, 0x60, 0x3c, 0xb5, 0x9a, 0x7e, 0x48, 0x44, 0xc3, 0xe9, 0x8c, 0x66, + 0x65, 0x36, 0xbd, 0xee, 0xb1, 0xed, 0x7b, 0x48, 0x24, 0xf7, 0x05, 0x25, + 0x3d, 0x38, 0x05, 0xd4, 0xb9, 0xae, 0x82, 0xe7, 0x34, 0xfe, 0x4f, 0x35, + 0xcb, 0xfd, 0x54, 0xb6, 0xaa, 0xf2, 0xdc, 0x1e, 0x75, 0x35, 0xb8, 0x43, + 0x41, 0x71, 0xe4, 0x76, 0x6c, 0xae, 0x95, 0xe1, 0xcd, 0xb2, 0x49, 0x68, + 0x69, 0x61, 0x11, 0x1e, 0xe9, 0x3e, 0x6b, 0x0b, 0xea, 0xb0, 0x2d, 0x7d, + 0xad, 0x6e, 0x84, 0xb0, 0x83, 0xe3, 0xa3, 0x84, 0xa4, 0xa7, 0xa1, 0x37, + 0x12, 0x3d, 0x95, 0x3c, 0x81, 0xfb, 0xc4, 0x30, 0x7e, 0x3a, 0xfe, 0x0a, + 0x05, 0xd9, 0x76, 0x1f, 0x6f, 0xa7, 0x48, 0xf1, 0x87, 0x58, 0x7f, 0x1d, + 0xa1, 0x11, 0xcf, 0xad, 0x9f, 0x49, 0xc0, 0x79, 0x12, 0x93, 0x1e, 0xe3, + 0xad, 0x75, 0xbd, 0xc3, 0xc9, 0xa7, 0xf2, 0x94, 0x94, 0xc7, 0xec, 0x6e, + 0xb4, 0x1f, 0x5b, 0x22, 0xc3, 0xe1, 0xb4, 0x86, 0x37, 0x5f, 0x26, 0x00, + 0x7f, 0x14, 0x4a, 0x7a, 0x6e, 0x0d, 0x2f, 0x6e, 0xda, 0x43, 0x8f, 0x3b, + 0xdd, 0xef, 0xf9, 0xcb, 0xa5, 0x48, 0x0c, 0x92, 0x7f, 0x9a, 0xdb, 0x23, + 0x97, 0xbc, 0x01, 0xff, 0x00, 0x47, 0x72, 0x95, 0x74, 0x64, 0x17, 0x02, + 0x6f, 0x1b, 0x9b, 0xa4, 0x34, 0x13, 0xcf, 0xf5, 0xb4, 0xfc, 0x12, 0x52, + 0x67, 0xb9, 0xac, 0x70, 0x8a, 0xf7, 0xc8, 0xd0, 0x34, 0x68, 0x13, 0x4b, + 0x1b, 0x5f, 0xb8, 0x0a, 0xa6, 0x61, 0xa4, 0x89, 0x4b, 0xd1, 0x0e, 0xd1, + 0xee, 0x7b, 0xfc, 0x8b, 0xa0, 0x7d, 0xcd, 0x84, 0xff, 0x00, 0x67, 0xa9, + 0xa0, 0x96, 0xb1, 0xa0, 0xf8, 0xc0, 0x94, 0x94, 0xca, 0xa8, 0xd0, 0x81, + 0xf7, 0xad, 0x1c, 0x58, 0xf4, 0x80, 0xf3, 0x2a, 0x83, 0x76, 0xb2, 0xb0, + 0x49, 0x03, 0xb1, 0x3f, 0x15, 0x77, 0x10, 0xfe, 0x8c, 0x8f, 0x02, 0x52, + 0x53, 0x4b, 0xeb, 0x3e, 0x46, 0x46, 0x2f, 0x47, 0xb7, 0x27, 0x16, 0xc7, + 0x55, 0x75, 0x65, 0xb0, 0xe6, 0xf8, 0x17, 0x00, 0x7f, 0x05, 0xcb, 0xfa, + 0xf9, 0x7e, 0xa4, 0xfd, 0xae, 0xff, 0x00, 0x52, 0x7e, 0x97, 0xa8, 0xee, + 0x7f, 0x22, 0xea, 0xbe, 0xb2, 0xb7, 0x7f, 0x42, 0xcd, 0x11, 0x31, 0x51, + 0x77, 0xf9, 0xa4, 0x39, 0x71, 0xbe, 0xb0, 0xd9, 0xeb, 0x76, 0x8d, 0xfc, + 0xf6, 0x8d, 0xc9, 0x29, 0xf4, 0xb2, 0x99, 0x3a, 0x62, 0x92, 0x9a, 0xf9, + 0x78, 0xb5, 0x65, 0xe3, 0xbf, 0x1a, 0xd2, 0xe1, 0x5d, 0x82, 0x1c, 0x58, + 0xe2, 0xc7, 0x7c, 0x88, 0x50, 0xc2, 0xc1, 0xc4, 0xc0, 0xa0, 0x63, 0xe2, + 0x56, 0x2a, 0xa9, 0xbd, 0x87, 0x24, 0xf8, 0xb8, 0xf7, 0x2a, 0xc9, 0x4c, + 0x92, 0x96, 0x49, 0x24, 0x92, 0x52, 0x93, 0xca, 0x64, 0x92, 0x52, 0x3c, + 0x9c, 0x4c, 0x5c, 0xca, 0xcd, 0x59, 0x35, 0x36, 0xd6, 0x1e, 0xce, 0x1c, + 0x7c, 0x0f, 0x65, 0xcc, 0xf5, 0x3f, 0xa9, 0xf6, 0x06, 0xb9, 0xdd, 0x3d, + 0xfe, 0xad, 0x67, 0x53, 0x8d, 0x67, 0x3f, 0xd9, 0x72, 0xea, 0xd3, 0xa4, + 0xa7, 0xca, 0x5f, 0xd3, 0x6c, 0xc7, 0xb5, 0xcc, 0x82, 0xc7, 0x03, 0x0e, + 0xa6, 0xc9, 0x69, 0x1f, 0x02, 0xa5, 0x88, 0xd1, 0xe9, 0x09, 0xec, 0xe3, + 0xf9, 0x57, 0xa5, 0xe6, 0xf4, 0xdc, 0x2e, 0xa1, 0x5f, 0xa7, 0x95, 0x58, + 0x7e, 0x90, 0xd7, 0x8d, 0x1e, 0xdf, 0xea, 0xb9, 0x79, 0xbd, 0x0d, 0x0d, + 0x0f, 0x68, 0xe1, 0xb6, 0x3d, 0xa0, 0x9f, 0x00, 0xe2, 0x12, 0x53, 0x99, + 0x7b, 0x49, 0xce, 0xb4, 0x41, 0x3a, 0xf0, 0x8a, 0xca, 0xac, 0x71, 0xd2, + 0x03, 0x54, 0x88, 0x61, 0xea, 0x17, 0x17, 0x18, 0xd4, 0x7e, 0x45, 0x71, + 0x86, 0xb0, 0x21, 0xad, 0x73, 0xbf, 0x0f, 0xca, 0x92, 0x9a, 0x8e, 0xc6, + 0x7b, 0x40, 0x21, 0xdc, 0x89, 0xf0, 0x4f, 0x75, 0x75, 0x11, 0x53, 0x24, + 0x17, 0x93, 0xee, 0xd7, 0xc9, 0x6a, 0x63, 0x74, 0xbc, 0x8e, 0xa9, 0xba, + 0x9a, 0xb6, 0xd4, 0xc6, 0x89, 0x75, 0x8e, 0x24, 0xfc, 0x06, 0x8b, 0x6b, + 0x07, 0xea, 0xae, 0x05, 0x1e, 0x9b, 0xb2, 0x09, 0xba, 0xd6, 0xf7, 0x3a, + 0x30, 0x1f, 0xea, 0xf7, 0x49, 0x4d, 0x8e, 0x9e, 0xc6, 0xb7, 0xa7, 0x63, + 0x33, 0xe8, 0x96, 0xd6, 0xd1, 0x11, 0x0b, 0x9e, 0xbb, 0xac, 0xe0, 0xe3, + 0xbd, 0xf4, 0x39, 0xb6, 0x5d, 0x73, 0x1e, 0xf6, 0xba, 0xb6, 0x8d, 0x04, + 0x3d, 0xd1, 0xaf, 0x1c, 0x2e, 0x9e, 0xcf, 0x65, 0x8e, 0x60, 0x92, 0x01, + 0xfc, 0x17, 0x09, 0x65, 0x65, 0xdd, 0x7a, 0xed, 0xba, 0x1f, 0x5d, 0xdf, + 0x74, 0x94, 0x94, 0xe9, 0x1f, 0xac, 0x19, 0xaf, 0x61, 0xaf, 0x13, 0x0f, + 0x63, 0x7b, 0x17, 0x49, 0xfc, 0x90, 0x15, 0x72, 0x7a, 0xdd, 0xda, 0xba, + 0xd1, 0x48, 0x3c, 0xed, 0x80, 0x7e, 0xf1, 0x25, 0x5f, 0x0d, 0x1e, 0x0a, + 0x61, 0xa6, 0x12, 0x53, 0x95, 0xfb, 0x20, 0xd8, 0x67, 0x22, 0xf7, 0xda, + 0x7c, 0xc9, 0xfe, 0x32, 0x8f, 0x5f, 0x4c, 0xc4, 0xae, 0x22, 0xb0, 0x7c, + 0xce, 0xaa, 0xf8, 0xa8, 0xf7, 0x52, 0x15, 0x04, 0x94, 0xd6, 0x6d, 0x4c, + 0x6e, 0x8d, 0x68, 0x1f, 0x01, 0x0a, 0x61, 0x87, 0xb0, 0x56, 0x03, 0x07, + 0x82, 0x90, 0xac, 0xa4, 0xa6, 0xaf, 0xa4, 0x4a, 0x9d, 0x6c, 0xdb, 0x63, + 0x08, 0xec, 0xe1, 0xf9, 0x51, 0xbd, 0x32, 0x42, 0x71, 0x5c, 0x47, 0x92, + 0x4a, 0x6d, 0xb9, 0xa6, 0xc7, 0x07, 0xcf, 0x07, 0xc1, 0x60, 0x7d, 0x57, + 0xa9, 0x8e, 0xea, 0xae, 0xae, 0xd9, 0x70, 0x1e, 0xa8, 0x2d, 0x92, 0x1b, + 0xa1, 0xf0, 0x0b, 0xa3, 0x70, 0x01, 0xe1, 0x8d, 0x82, 0x1e, 0x60, 0x11, + 0xc4, 0xf2, 0xb9, 0xbf, 0xab, 0x62, 0xe1, 0xd6, 0x9c, 0xd6, 0x96, 0x87, + 0xb5, 0xf6, 0x87, 0xb9, 0xd2, 0x67, 0x99, 0xd0, 0x42, 0x4a, 0x7b, 0x31, + 0x5d, 0x4c, 0x3f, 0xa3, 0x63, 0x59, 0xfd, 0x50, 0x02, 0x79, 0x92, 0x35, + 0x88, 0x41, 0x73, 0x6d, 0x73, 0xe0, 0xda, 0x47, 0xf5, 0x40, 0x1f, 0xde, + 0x50, 0xdf, 0x5b, 0x0e, 0xae, 0x25, 0xce, 0xe3, 0xdc, 0x49, 0xfc, 0xa9, + 0x29, 0xb0, 0x5f, 0x53, 0x7e, 0x93, 0xc6, 0xbd, 0xa5, 0x47, 0xd5, 0x82, + 0x03, 0x18, 0xf7, 0x4f, 0x70, 0xd8, 0x1f, 0x7b, 0xa1, 0x4e, 0xb0, 0x1a, + 0xd0, 0x1a, 0x03, 0x74, 0xec, 0x21, 0x4f, 0x52, 0x24, 0xa4, 0xa4, 0x2e, + 0xf5, 0xa0, 0xbb, 0x68, 0x6c, 0x6b, 0x05, 0xd3, 0xa7, 0xf6, 0x50, 0x6d, + 0xb6, 0xd8, 0x68, 0xae, 0x6c, 0x2f, 0x1b, 0xbd, 0x82, 0x00, 0x6f, 0x8c, + 0xba, 0x51, 0xad, 0xba, 0x8d, 0xae, 0x66, 0xf1, 0xb8, 0x82, 0x34, 0x32, + 0x75, 0xf8, 0x2a, 0xfb, 0xec, 0x14, 0x06, 0x56, 0x1d, 0xb8, 0x30, 0x34, + 0x38, 0x36, 0x3d, 0xc3, 0xbc, 0xba, 0x12, 0x53, 0x6c, 0xd4, 0x0d, 0x20, + 0x38, 0x4c, 0x41, 0x8f, 0x31, 0x05, 0x5d, 0xc3, 0xe1, 0xe3, 0xb8, 0x3f, + 0x95, 0x55, 0x13, 0xe9, 0x00, 0x7c, 0x07, 0x2a, 0xce, 0x14, 0x0d, 0xfe, + 0x26, 0x09, 0x49, 0x4b, 0x75, 0x5a, 0xfd, 0x4e, 0x9b, 0x95, 0x5f, 0xef, + 0x53, 0x60, 0xff, 0x00, 0xa2, 0x57, 0x9d, 0x7a, 0xbf, 0xe4, 0xad, 0xd1, + 0xaf, 0xa1, 0xb7, 0xe7, 0x1b, 0x57, 0xa7, 0x5e, 0xdd, 0xf4, 0xbd, 0xbe, + 0x2d, 0x70, 0xfb, 0xc1, 0x5e, 0x55, 0x27, 0xf6, 0x66, 0xce, 0xfb, 0xfd, + 0x3f, 0xfa, 0x49, 0x29, 0xf5, 0xd4, 0xc5, 0x39, 0x4c, 0x92, 0x98, 0x94, + 0xc5, 0x3a, 0x64, 0x94, 0xb2, 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, + 0xa5, 0x29, 0x02, 0xa2, 0x9c, 0x24, 0xa6, 0x43, 0x90, 0xbc, 0xc1, 0x82, + 0x1f, 0x68, 0x1a, 0x93, 0x75, 0x80, 0x01, 0xfd, 0x62, 0xbd, 0x3c, 0x72, + 0xb9, 0x7e, 0x9f, 0xd2, 0x6a, 0xc5, 0x71, 0xb5, 0xce, 0x0e, 0xb5, 0xd6, + 0x5a, 0x5c, 0x79, 0x10, 0xe2, 0x60, 0x09, 0xf0, 0x49, 0x4f, 0x1a, 0xfa, + 0x5f, 0x4f, 0x53, 0xb9, 0x96, 0xb4, 0xb5, 0xc3, 0x69, 0x20, 0xf2, 0x24, + 0x02, 0xb7, 0x7a, 0x6f, 0x47, 0x17, 0x91, 0x6e, 0x4b, 0xfd, 0x3a, 0x79, + 0x0c, 0x1a, 0xbd, 0xdf, 0x21, 0xc2, 0xa5, 0xd5, 0xbd, 0x31, 0xf5, 0xa2, + 0xe7, 0xb9, 0xa1, 0xcd, 0x0e, 0xa8, 0x90, 0x7c, 0x21, 0xab, 0xb1, 0xc1, + 0x16, 0x0a, 0xcb, 0x8b, 0xc3, 0x83, 0x89, 0x2d, 0x20, 0x01, 0x0d, 0x3c, + 0x0d, 0x34, 0xd1, 0x25, 0x2a, 0x96, 0x57, 0x4d, 0x62, 0xbc, 0x6a, 0x1c, + 0x18, 0x38, 0x11, 0xb0, 0x1f, 0x9b, 0xc8, 0x44, 0x03, 0x25, 0xda, 0x86, + 0x31, 0x9f, 0xd6, 0x25, 0xc7, 0xee, 0x6c, 0x7e, 0x54, 0x4d, 0xf5, 0x83, + 0xab, 0xc7, 0xc2, 0x65, 0x2f, 0x54, 0x13, 0x00, 0x17, 0x7c, 0x04, 0x7e, + 0x58, 0x49, 0x4e, 0x7d, 0xcd, 0x73, 0x6e, 0x70, 0x71, 0x05, 0xd3, 0xa9, + 0x02, 0x07, 0xcb, 0x95, 0xc6, 0x86, 0xff, 0x00, 0x97, 0xf2, 0x07, 0xfc, + 0x2b, 0xbf, 0x21, 0x5d, 0xa6, 0x44, 0xba, 0xe7, 0x3a, 0x20, 0x9e, 0xdf, + 0x25, 0xc7, 0xb8, 0x6d, 0xfa, 0xc5, 0x78, 0x3f, 0xe9, 0x0f, 0xe4, 0x49, + 0x4e, 0x8c, 0x6a, 0x88, 0xc1, 0xb9, 0xdb, 0x53, 0x46, 0xaa, 0x75, 0x0f, + 0xd2, 0x7c, 0x92, 0x53, 0x3f, 0x4e, 0x13, 0xb1, 0x92, 0x60, 0x29, 0x91, + 0xa1, 0x52, 0xa4, 0x0d, 0xc9, 0x29, 0x6f, 0x44, 0xe9, 0x2a, 0x6d, 0xa7, + 0x44, 0x72, 0x3d, 0xa0, 0xfc, 0x54, 0xda, 0x04, 0x7c, 0x8a, 0x4a, 0x6b, + 0xb6, 0x81, 0x00, 0xc7, 0x70, 0x35, 0x4e, 0x6a, 0x80, 0x7e, 0x13, 0xf8, + 0xa3, 0xb4, 0x0f, 0x4f, 0xfb, 0x41, 0x2d, 0xb2, 0x08, 0xf1, 0x11, 0xf8, + 0xa4, 0xa6, 0xbd, 0x6e, 0x3c, 0x76, 0xec, 0xb9, 0xce, 0x9a, 0xf3, 0x8f, + 0xf5, 0x96, 0xc6, 0x86, 0x97, 0x03, 0x73, 0xdb, 0x00, 0x4f, 0xd3, 0x05, + 0x74, 0x4c, 0xab, 0x73, 0x9c, 0x64, 0x8d, 0xa1, 0xc0, 0x47, 0xc5, 0x60, + 0x62, 0xb4, 0x7f, 0xce, 0x77, 0x87, 0x13, 0x3e, 0xbe, 0x80, 0x7c, 0x12, + 0x53, 0xd5, 0x83, 0x79, 0x71, 0x22, 0xbd, 0xb1, 0xfb, 0xce, 0x03, 0xf2, + 0x4a, 0x67, 0x57, 0x7b, 0x89, 0x2e, 0x7b, 0x19, 0xf0, 0x05, 0xdf, 0x94, + 0x85, 0x23, 0x65, 0x2d, 0xfa, 0x6e, 0x0d, 0xfe, 0xb9, 0x83, 0xf7, 0x1d, + 0x53, 0x7a, 0xcc, 0x3f, 0x40, 0x39, 0xdf, 0xd5, 0x61, 0x3f, 0x8f, 0x09, + 0x29, 0x8b, 0x59, 0xbf, 0x73, 0x4d, 0xf6, 0x1d, 0xbc, 0xc4, 0x30, 0x7f, + 0xd1, 0x6a, 0x93, 0x59, 0x47, 0x60, 0x1f, 0x1f, 0xbc, 0x4b, 0xff, 0x00, + 0xea, 0xa5, 0x30, 0x7e, 0x5b, 0xac, 0x01, 0xb4, 0x81, 0x54, 0x6a, 0x5e, + 0xe0, 0x1d, 0x3f, 0x06, 0xee, 0x53, 0x66, 0x33, 0xc1, 0x71, 0x68, 0x65, + 0x65, 0xda, 0xba, 0x01, 0x71, 0x27, 0xfe, 0x8a, 0x4a, 0x5c, 0x18, 0x1e, + 0xd0, 0x1a, 0x3c, 0xb4, 0xfc, 0x89, 0xe5, 0xc5, 0x21, 0x8a, 0x49, 0xf7, + 0xda, 0xf8, 0x3d, 0x9b, 0x0d, 0x1f, 0x80, 0x95, 0x21, 0x89, 0x8f, 0x1a, + 0xb7, 0x77, 0x9b, 0xc9, 0x77, 0xfd, 0x51, 0x29, 0x29, 0x9b, 0x64, 0xd6, + 0x3e, 0x01, 0x58, 0xc3, 0x3e, 0xf7, 0x7c, 0x02, 0xac, 0x08, 0x1e, 0xc0, + 0x21, 0xb1, 0x1a, 0x23, 0xe1, 0x69, 0x67, 0x8c, 0xb5, 0x25, 0x37, 0x9c, + 0x25, 0xa4, 0x78, 0xaf, 0x29, 0xf6, 0xfa, 0xdf, 0x64, 0xfc, 0xef, 0xb6, + 0x44, 0x79, 0x6f, 0x5e, 0xac, 0x78, 0x5e, 0x5f, 0xe8, 0x9f, 0xf9, 0xdb, + 0xe9, 0x46, 0x9f, 0x6d, 0xff, 0x00, 0xbf, 0xee, 0x49, 0x4f, 0xab, 0x15, + 0x12, 0xa6, 0x42, 0x89, 0x49, 0x4c, 0x13, 0x15, 0x22, 0x13, 0x24, 0xa6, + 0x29, 0xd2, 0x49, 0x25, 0x2c, 0x92, 0x74, 0x92, 0x52, 0xc9, 0xd2, 0x49, + 0x25, 0x2e, 0x16, 0x39, 0x70, 0x0e, 0x73, 0xbb, 0x35, 0xcf, 0xd1, 0x6c, + 0x05, 0xca, 0xe7, 0x61, 0x64, 0xdf, 0x6b, 0xac, 0xa9, 0xd6, 0xb9, 0x85, + 0xce, 0x06, 0xa6, 0x3c, 0x56, 0xdd, 0x3c, 0x7b, 0xa4, 0xa7, 0x9f, 0xce, + 0x87, 0xfd, 0x69, 0x78, 0x27, 0xda, 0xe7, 0xd5, 0x31, 0xe1, 0x0d, 0x5d, + 0xb0, 0x15, 0x8d, 0x03, 0x06, 0x9e, 0x3a, 0xfe, 0x55, 0xc2, 0x3a, 0x8b, + 0x6a, 0xfa, 0xc0, 0x2b, 0x0d, 0x6d, 0x4e, 0x6b, 0xab, 0x3b, 0x49, 0x36, + 0x01, 0x3b, 0x63, 0x5d, 0x25, 0x77, 0x66, 0x97, 0x12, 0x66, 0xc7, 0x7f, + 0x64, 0x06, 0xa4, 0xa4, 0x84, 0x88, 0x11, 0xa7, 0x90, 0x08, 0x45, 0xd5, + 0x34, 0x99, 0x2d, 0x67, 0x78, 0x9d, 0x49, 0x2a, 0x43, 0x1e, 0xa9, 0xf7, + 0x02, 0xff, 0x00, 0xeb, 0x12, 0x7f, 0x2a, 0x90, 0xa9, 0x8c, 0x27, 0x68, + 0x03, 0xc0, 0x84, 0x94, 0xd1, 0xbd, 0xe3, 0x79, 0x20, 0xc8, 0x3c, 0x15, + 0xc7, 0xe4, 0x4f, 0xfc, 0xe3, 0xb8, 0xf1, 0x36, 0x37, 0xf2, 0x05, 0xd8, + 0x65, 0xcf, 0xac, 0x77, 0x1e, 0xc3, 0xf2, 0x2e, 0x47, 0x26, 0x3f, 0xe7, + 0x15, 0x9e, 0x6f, 0x67, 0xe4, 0x09, 0x29, 0xd5, 0x11, 0x32, 0x35, 0x53, + 0xab, 0xf9, 0xd1, 0xf0, 0x4d, 0x11, 0xa0, 0x4f, 0x5f, 0xf3, 0xa1, 0x25, + 0x36, 0x23, 0xda, 0x52, 0xa7, 0xe9, 0x27, 0x3c, 0x25, 0x58, 0xf7, 0x24, + 0xa6, 0xcc, 0x7e, 0x8c, 0x7c, 0x4a, 0x71, 0xc0, 0xf8, 0x14, 0xc4, 0xc5, + 0x64, 0x9d, 0x00, 0x3a, 0xfc, 0x16, 0x17, 0x50, 0xeb, 0x79, 0x70, 0xfa, + 0xf1, 0x1b, 0xe9, 0x31, 0xa0, 0x81, 0x69, 0x12, 0xe7, 0x7c, 0x3b, 0x04, + 0x94, 0xef, 0x34, 0xc3, 0x48, 0x3e, 0x47, 0xf1, 0x54, 0x7a, 0x96, 0x69, + 0xc7, 0x60, 0x63, 0x4f, 0xbd, 0xdd, 0xbb, 0xc4, 0xf6, 0x5c, 0x8d, 0xfd, + 0x43, 0x39, 0xad, 0x8b, 0x32, 0x6c, 0x73, 0x9c, 0x3d, 0xc3, 0x71, 0xef, + 0xd9, 0x52, 0xbb, 0xa8, 0x64, 0xbc, 0xc3, 0xde, 0x5f, 0x11, 0x04, 0x9f, + 0x73, 0x60, 0x46, 0x85, 0x25, 0x3d, 0xde, 0x25, 0xe6, 0xc6, 0x96, 0xd5, + 0xf4, 0xda, 0x7f, 0x48, 0xd3, 0xd8, 0x78, 0x4a, 0xc6, 0x6d, 0x6c, 0xb3, + 0xeb, 0x0b, 0x9e, 0x5b, 0x3b, 0xae, 0x64, 0xb6, 0x4f, 0x90, 0xd5, 0x53, + 0xfa, 0xbd, 0xd5, 0x2b, 0x6e, 0x6e, 0xdc, 0x87, 0x96, 0x1b, 0x18, 0x1b, + 0x3f, 0x98, 0x5c, 0xd1, 0xa1, 0x77, 0x9a, 0xb6, 0xe7, 0xb8, 0xf5, 0xef, + 0x52, 0x87, 0xb0, 0x31, 0xcf, 0xa9, 0xe1, 0xe7, 0xdc, 0x35, 0xda, 0x92, + 0x9e, 0xcf, 0xd2, 0xa6, 0xb3, 0xec, 0x63, 0x5a, 0x7c, 0x80, 0x09, 0x89, + 0xd7, 0x8f, 0x9c, 0xa4, 0x69, 0x71, 0xfa, 0x77, 0xb8, 0xf8, 0xed, 0x0d, + 0x6f, 0xf7, 0xa6, 0xfb, 0x3e, 0x3f, 0x2e, 0xdc, 0xff, 0x00, 0xeb, 0x38, + 0x94, 0x94, 0xaf, 0x56, 0xb6, 0x99, 0x73, 0x9a, 0xdf, 0x89, 0x09, 0x7d, + 0xa6, 0xb3, 0xf4, 0x49, 0x77, 0xf5, 0x41, 0x2a, 0x4d, 0xae, 0xa6, 0x11, + 0xb2, 0xb6, 0x8f, 0x30, 0x02, 0x90, 0x7c, 0x98, 0x1d, 0x92, 0x53, 0x11, + 0x63, 0xc8, 0xf6, 0x54, 0xf3, 0xfd, 0x68, 0x6f, 0xe5, 0x2a, 0x25, 0xf9, + 0x3a, 0xfe, 0x8d, 0x8d, 0xf8, 0xb8, 0xbb, 0xf2, 0x00, 0x88, 0x6c, 0x68, + 0xd4, 0x98, 0x08, 0x27, 0x26, 0xa0, 0xe8, 0xde, 0x0f, 0x90, 0xf7, 0x7e, + 0x44, 0x94, 0xcd, 0xa1, 0xc4, 0x0d, 0xf1, 0xba, 0x3d, 0xd1, 0xc2, 0x36, + 0x0c, 0x0b, 0x00, 0x06, 0x46, 0xb0, 0x84, 0xc7, 0xee, 0x01, 0xc2, 0x75, + 0xd0, 0x48, 0x8f, 0xca, 0x9f, 0xa7, 0x37, 0x69, 0x6f, 0x94, 0x82, 0x3c, + 0xe5, 0x25, 0x3a, 0x6e, 0xfa, 0x27, 0xc9, 0x79, 0xf6, 0xc7, 0x7f, 0xcf, + 0xcf, 0x4b, 0xf3, 0x7e, 0xd5, 0xea, 0x47, 0xf6, 0x25, 0x7a, 0x01, 0x3e, + 0xd3, 0xf0, 0x5c, 0x4f, 0xa5, 0xff, 0x00, 0xaf, 0x0a, 0x7b, 0x47, 0xa9, + 0xff, 0x00, 0x81, 0xc2, 0x4a, 0x7b, 0xf2, 0x98, 0xa9, 0x26, 0x29, 0x29, + 0x81, 0x4c, 0xa4, 0x54, 0x4a, 0x4a, 0x62, 0x92, 0x72, 0x9a, 0x12, 0x52, + 0x92, 0x4e, 0x92, 0x4a, 0x59, 0x24, 0xe9, 0x24, 0xa5, 0x05, 0x92, 0xc6, + 0xea, 0xe8, 0xe4, 0xbd, 0xeb, 0x58, 0x2c, 0x66, 0xb3, 0x75, 0x9b, 0xc1, + 0x23, 0x6b, 0xec, 0x1b, 0x7b, 0x12, 0x4c, 0x6b, 0xf0, 0x84, 0x94, 0xf2, + 0x99, 0xee, 0x2d, 0xfa, 0xd6, 0xe0, 0xd6, 0xef, 0x3b, 0xa9, 0xee, 0x07, + 0x66, 0xae, 0xc0, 0xbe, 0xf9, 0xd4, 0x31, 0xa3, 0xe2, 0x5d, 0xfd, 0xcb, + 0x8a, 0xcc, 0x0e, 0xa7, 0xeb, 0x3f, 0xe9, 0x9d, 0xb9, 0xe4, 0xd4, 0x49, + 0x03, 0x99, 0x0d, 0xe0, 0x05, 0xda, 0x3e, 0xd2, 0x4f, 0xb5, 0x8e, 0x20, + 0x79, 0x47, 0xfd, 0x54, 0x24, 0xa5, 0xe6, 0xd3, 0xfe, 0x12, 0x3f, 0xaa, + 0xd0, 0x3f, 0x2c, 0xa8, 0x8a, 0xa4, 0xfe, 0x91, 0xcf, 0xb0, 0x9e, 0x25, + 0xc4, 0x0f, 0xb9, 0xb0, 0x14, 0x5d, 0x75, 0x9f, 0xba, 0x01, 0xfe, 0x53, + 0xbf, 0xb8, 0x21, 0xfd, 0xa2, 0xc3, 0xa8, 0x31, 0x1f, 0xc9, 0xfe, 0xf2, + 0x92, 0x91, 0xe4, 0xd6, 0xd6, 0xbc, 0xb5, 0xa3, 0x68, 0x8e, 0xde, 0x6b, + 0x90, 0xc9, 0x69, 0xaf, 0xae, 0xb9, 0xa4, 0x97, 0x16, 0x9a, 0xc6, 0xe3, + 0xc9, 0xd1, 0xbc, 0xae, 0xba, 0xc7, 0x1b, 0x3d, 0xee, 0x32, 0x4e, 0x9f, + 0xeb, 0x0b, 0x91, 0xea, 0x7e, 0xde, 0xb7, 0x61, 0x1c, 0xfb, 0x08, 0xf9, + 0x00, 0x92, 0x9d, 0xa3, 0xca, 0x93, 0x3f, 0x9d, 0x67, 0xc1, 0x28, 0x33, + 0xaa, 0x93, 0x63, 0xd4, 0x6a, 0x4a, 0x4e, 0x46, 0x8a, 0x0e, 0xb5, 0x94, + 0x82, 0xf7, 0x98, 0x68, 0x45, 0x72, 0xcf, 0xcd, 0x78, 0x73, 0x9b, 0x58, + 0xf1, 0xff, 0x00, 0x62, 0x4a, 0x6d, 0xe2, 0xe2, 0xe5, 0x75, 0x32, 0x64, + 0xfa, 0x78, 0xfc, 0x6d, 0x6f, 0x2e, 0xf9, 0xa3, 0xe6, 0x74, 0xba, 0xaa, + 0x64, 0x10, 0xd8, 0x68, 0x80, 0x00, 0x5a, 0x7d, 0x28, 0x37, 0x1f, 0x05, + 0xa3, 0x6e, 0xd2, 0xd1, 0xf9, 0x55, 0x1e, 0xad, 0x93, 0x50, 0x64, 0xb1, + 0xed, 0x2f, 0x98, 0xda, 0x5c, 0x24, 0x8e, 0xe9, 0x29, 0xe5, 0x7a, 0x8e, + 0x26, 0x38, 0x96, 0xed, 0x13, 0xf0, 0x58, 0x39, 0x18, 0x45, 0xa0, 0xb9, + 0x83, 0x8e, 0xcb, 0xa9, 0xcc, 0xaa, 0x93, 0x8c, 0xdb, 0x5e, 0xe9, 0xbe, + 0xd2, 0x48, 0x68, 0xec, 0xce, 0x02, 0xca, 0xb5, 0x82, 0x22, 0x0c, 0x1f, + 0x24, 0x94, 0xe2, 0x53, 0x50, 0x7b, 0x5c, 0x47, 0xd2, 0x6b, 0x49, 0x23, + 0xc8, 0x77, 0x1f, 0x05, 0xa9, 0x60, 0x38, 0xd9, 0x6c, 0x35, 0x38, 0xb8, + 0x43, 0x08, 0x27, 0xf3, 0xbb, 0xe8, 0xa8, 0x5d, 0x59, 0xc7, 0xb6, 0x78, + 0x9d, 0x41, 0x57, 0xab, 0xb1, 0xb7, 0x7a, 0x2f, 0x1f, 0x9a, 0xdd, 0xa4, + 0x78, 0x41, 0x49, 0x4f, 0xa0, 0xb3, 0x29, 0x96, 0x31, 0xaf, 0x6b, 0x5d, + 0x2e, 0x68, 0x74, 0x18, 0x1c, 0x89, 0xf3, 0x50, 0x37, 0x58, 0x49, 0xfa, + 0x2d, 0xf0, 0xe4, 0xff, 0x00, 0x72, 0x4c, 0x15, 0x55, 0x5b, 0x1a, 0x5e, + 0xd6, 0x80, 0xd0, 0x00, 0x98, 0x3a, 0x05, 0x11, 0x65, 0x64, 0xe9, 0xee, + 0x3f, 0xc9, 0x05, 0xdf, 0x90, 0x24, 0xa6, 0x7e, 0xf2, 0x06, 0xeb, 0x0f, + 0xc1, 0xa0, 0x0f, 0xcb, 0x2a, 0x4c, 0xad, 0xa7, 0xdc, 0x77, 0x9f, 0x12, + 0xe7, 0x1f, 0xe1, 0x0a, 0x2d, 0x7b, 0x88, 0xd2, 0x97, 0x0f, 0x19, 0x86, + 0xfe, 0x52, 0x88, 0x1d, 0x71, 0x6e, 0x8c, 0x63, 0x7c, 0xcb, 0xa4, 0x8f, + 0x90, 0x6a, 0x4a, 0x47, 0xfa, 0x20, 0xf2, 0x03, 0x04, 0xf8, 0xc4, 0x9f, + 0xc5, 0x4b, 0xdd, 0xc7, 0x01, 0x31, 0x16, 0x92, 0x5c, 0x5e, 0xd0, 0x4f, + 0xee, 0xb7, 0xfb, 0xca, 0x70, 0xc7, 0x1f, 0xa5, 0x63, 0xcf, 0xcc, 0x37, + 0xfe, 0xa4, 0x04, 0x94, 0x96, 0xb6, 0x9d, 0x9a, 0xf2, 0x09, 0x4f, 0x8b, + 0xed, 0xbb, 0xe6, 0x47, 0xde, 0x54, 0x6a, 0x01, 0xad, 0x2d, 0x1c, 0x03, + 0xdc, 0x93, 0xf8, 0x99, 0x52, 0x64, 0x7d, 0xa0, 0x1e, 0x3d, 0xc3, 0xf1, + 0x49, 0x4e, 0x90, 0x12, 0xd2, 0x3c, 0x57, 0x2b, 0xe9, 0x8f, 0xf9, 0xef, + 0xea, 0x76, 0xfb, 0x2c, 0xcf, 0xcb, 0x6a, 0xea, 0xc2, 0xc6, 0xfb, 0x3f, + 0xfd, 0x93, 0x7a, 0xd1, 0xff, 0x00, 0x68, 0xe3, 0xe7, 0xea, 0x24, 0xa7, + 0xa2, 0x29, 0x93, 0x94, 0xc9, 0x29, 0x89, 0x4c, 0x9c, 0xa6, 0x49, 0x4b, + 0x26, 0x52, 0x4d, 0x09, 0x29, 0x64, 0xe9, 0x42, 0x74, 0x94, 0xb2, 0x49, + 0xd2, 0x84, 0x94, 0xb0, 0x1a, 0xac, 0x5a, 0x5c, 0x5c, 0x1c, 0x7b, 0x9b, + 0xad, 0x9f, 0x93, 0x8a, 0xdc, 0x1c, 0xac, 0x2c, 0x59, 0xf7, 0x81, 0xda, + 0xfb, 0xbf, 0xea, 0xca, 0x4a, 0x79, 0x5e, 0xa2, 0xfd, 0x9f, 0x5a, 0x83, + 0x89, 0x81, 0xfa, 0x12, 0x49, 0xf8, 0x35, 0x75, 0x6f, 0xba, 0x90, 0x74, + 0xb0, 0x13, 0xe0, 0x0c, 0xae, 0x57, 0xaa, 0xd6, 0xc3, 0xf5, 0x9d, 0xbb, + 0xda, 0x1c, 0x22, 0xad, 0x0f, 0x1d, 0x97, 0x69, 0xb4, 0x34, 0xfb, 0x61, + 0xbf, 0x01, 0xa7, 0xe0, 0x92, 0x9a, 0x4e, 0x25, 0xda, 0x80, 0xe3, 0xf0, + 0x69, 0xfe, 0x2a, 0x02, 0x9b, 0x1d, 0xf9, 0x87, 0xe2, 0xe2, 0x07, 0xf7, + 0xad, 0x02, 0xe0, 0x06, 0xa6, 0x3f, 0x04, 0x23, 0x75, 0x0d, 0x92, 0xe7, + 0x89, 0xf8, 0xcf, 0xe4, 0x49, 0x4d, 0x57, 0x52, 0x6a, 0x68, 0x63, 0xa2, + 0x7e, 0x96, 0x86, 0x57, 0x27, 0xd5, 0x9b, 0xfe, 0x5e, 0xf8, 0x8a, 0xff, + 0x00, 0x82, 0xeb, 0x72, 0x1e, 0xdb, 0x1c, 0x1c, 0xce, 0x00, 0x8e, 0x08, + 0xfc, 0xab, 0x93, 0xeb, 0x32, 0x3a, 0xe3, 0x7c, 0xd9, 0x5f, 0xe5, 0x49, + 0x4e, 0xc1, 0x02, 0x52, 0x6f, 0xf3, 0x8d, 0x49, 0xdc, 0xa4, 0xd9, 0x2f, + 0x67, 0xc5, 0x25, 0x36, 0x4a, 0xc6, 0xb0, 0xec, 0xea, 0x81, 0xae, 0xe0, + 0x39, 0xb0, 0x3b, 0x6a, 0x56, 0xda, 0xa1, 0x65, 0x00, 0xf5, 0x26, 0x17, + 0x49, 0x6b, 0x98, 0x49, 0x68, 0x12, 0x49, 0x6f, 0xd0, 0xff, 0x00, 0xa4, + 0x42, 0x4a, 0x77, 0xf2, 0xad, 0xca, 0xa3, 0x1c, 0xb7, 0x1d, 0x8d, 0x71, + 0x7b, 0x48, 0x2e, 0x7b, 0xb6, 0x35, 0xa2, 0x3c, 0xa4, 0xca, 0xe4, 0x7a, + 0x57, 0x47, 0xea, 0x9d, 0x43, 0xab, 0x54, 0xfb, 0xa9, 0x02, 0xa6, 0xd8, + 0x1d, 0x73, 0xfd, 0xc1, 0xbb, 0x5a, 0x64, 0x81, 0xbb, 0x53, 0x2b, 0xb8, + 0x07, 0x1e, 0xca, 0x48, 0x71, 0xdc, 0xe0, 0x60, 0x81, 0xe4, 0x81, 0x7f, + 0xed, 0x1c, 0x76, 0xba, 0xcc, 0x0a, 0xdb, 0x64, 0xb0, 0xed, 0x6b, 0xbb, + 0xbf, 0xf3, 0x41, 0x49, 0x4f, 0x33, 0xf5, 0xc2, 0x8f, 0x4b, 0xa9, 0x9f, + 0x40, 0x43, 0x1e, 0xd0, 0x63, 0xb4, 0x8d, 0x34, 0x59, 0x2d, 0x7d, 0xac, + 0x10, 0xe7, 0x35, 0xed, 0xec, 0x0b, 0x75, 0x5a, 0x5d, 0x68, 0x75, 0xc3, + 0xe9, 0x5f, 0xd4, 0x9b, 0x48, 0xb9, 0xc4, 0x0b, 0x43, 0x4e, 0xe0, 0xd6, + 0x99, 0x80, 0xd1, 0x3e, 0x4a, 0xa3, 0x76, 0x39, 0xba, 0x8d, 0xae, 0xf0, + 0x49, 0x4e, 0x2f, 0x56, 0x6f, 0xba, 0xb7, 0x01, 0x00, 0xca, 0x06, 0x0d, + 0xcd, 0x6d, 0x81, 0x8e, 0xfa, 0x27, 0xf0, 0x2b, 0x43, 0xab, 0x86, 0x36, + 0x91, 0xf3, 0x21, 0x62, 0xd7, 0x3b, 0x81, 0x49, 0x4f, 0xac, 0x63, 0x36, + 0xb1, 0x8f, 0x51, 0x6b, 0x40, 0x96, 0x37, 0x50, 0x07, 0x80, 0x53, 0x27, + 0xb4, 0xaa, 0x5d, 0x39, 0xf6, 0xdd, 0xd3, 0xf1, 0x9e, 0x5f, 0xa3, 0xab, + 0x6e, 0xa2, 0x06, 0xa0, 0x44, 0x70, 0x51, 0x8b, 0x00, 0xe4, 0xb9, 0xc7, + 0xcd, 0xc7, 0xf8, 0x42, 0x4a, 0x4a, 0xe2, 0xc0, 0x35, 0x30, 0x7c, 0xf4, + 0x42, 0x75, 0xf5, 0x0f, 0xcf, 0x1f, 0x23, 0x3f, 0x91, 0x0c, 0x32, 0xb2, + 0xe3, 0x0d, 0x69, 0x23, 0x99, 0x1b, 0x8f, 0xf1, 0x53, 0xda, 0x5a, 0x20, + 0xbf, 0x68, 0x3f, 0x04, 0x94, 0xb1, 0xc9, 0xae, 0x23, 0x5f, 0x90, 0x29, + 0x8e, 0x51, 0x02, 0x36, 0x68, 0x7c, 0x48, 0xfe, 0x12, 0x9f, 0xd3, 0xdd, + 0x04, 0x19, 0x09, 0xbd, 0x00, 0xde, 0x61, 0xa0, 0xff, 0x00, 0xaf, 0x72, + 0x12, 0x52, 0x6c, 0x4b, 0x77, 0xb1, 0xc4, 0x8f, 0xce, 0x8e, 0xff, 0x00, + 0xc5, 0x17, 0x50, 0xf9, 0xf0, 0x20, 0xa1, 0xe1, 0x8a, 0xe1, 0xc1, 0x8e, + 0x0e, 0x1a, 0x13, 0xb4, 0x83, 0xf9, 0x11, 0x5c, 0x3d, 0xce, 0xf1, 0x30, + 0x92, 0x9d, 0x46, 0xea, 0xaa, 0xfa, 0x5f, 0xe5, 0x2f, 0x57, 0xfe, 0x07, + 0x6f, 0xfd, 0x35, 0x66, 0xb3, 0x21, 0x46, 0x3f, 0x4d, 0x3e, 0x51, 0xf8, + 0xca, 0x4a, 0x6d, 0x94, 0xc9, 0xd2, 0x29, 0x29, 0x8a, 0x65, 0x24, 0xc9, + 0x29, 0x8a, 0x49, 0xd3, 0xa4, 0xa6, 0x30, 0x9d, 0x24, 0x92, 0x52, 0x92, + 0x4f, 0x1e, 0x29, 0xb8, 0x49, 0x4a, 0x1f, 0x05, 0x8b, 0x8e, 0x36, 0x9b, + 0x3f, 0xe3, 0x6c, 0xfc, 0x5c, 0x56, 0xd8, 0x04, 0xac, 0x80, 0xd2, 0xd7, + 0x58, 0x39, 0xfd, 0x23, 0xcf, 0xde, 0x92, 0x9e, 0x2f, 0xaf, 0x58, 0xf6, + 0x7d, 0x62, 0x05, 0xa6, 0x0e, 0xda, 0x8c, 0xf7, 0xe0, 0x2e, 0xa9, 0xcf, + 0x79, 0x79, 0x6b, 0xb7, 0x47, 0x62, 0x5d, 0xcf, 0x8e, 0x80, 0xf6, 0x5c, + 0xa7, 0xd6, 0x7d, 0xec, 0xfa, 0xc1, 0xec, 0x12, 0x4d, 0x75, 0x91, 0xf7, + 0x2e, 0x99, 0xb5, 0xe5, 0x38, 0x87, 0x39, 0x8d, 0x6b, 0xbb, 0x13, 0xda, + 0x79, 0xf1, 0x49, 0x4c, 0xdc, 0xd1, 0x32, 0x40, 0xfb, 0xa5, 0x22, 0x76, + 0xf7, 0xd0, 0xf8, 0x27, 0x38, 0xb6, 0x90, 0x0b, 0xec, 0xf6, 0xff, 0x00, + 0x27, 0xfd, 0x89, 0x0c, 0x46, 0x9d, 0x39, 0xef, 0x2e, 0x93, 0xa7, 0xcc, + 0xa4, 0xa6, 0x25, 0xc1, 0xc3, 0x99, 0x3c, 0x2e, 0x57, 0xeb, 0x01, 0xdb, + 0xd5, 0x98, 0xef, 0xf8, 0x36, 0x9f, 0xb8, 0x95, 0xd5, 0xd8, 0xd6, 0x32, + 0x5a, 0xc1, 0x1f, 0x25, 0xca, 0x7d, 0x63, 0x00, 0x75, 0x2a, 0xff, 0x00, + 0xe2, 0xc7, 0xe5, 0x29, 0x29, 0xd8, 0x6f, 0xb8, 0x35, 0xdc, 0x48, 0x06, + 0x3e, 0x2a, 0x6d, 0xfa, 0x6c, 0x50, 0x69, 0x24, 0x0f, 0x80, 0xfc, 0x8a, + 0x60, 0x6a, 0x0f, 0x82, 0x4a, 0x6c, 0x17, 0x05, 0x4a, 0xfb, 0x83, 0x33, + 0xf1, 0x2f, 0x6d, 0x81, 0x81, 0x8f, 0x0c, 0x79, 0x3a, 0x8d, 0xaf, 0x3b, + 0x5d, 0x28, 0xd6, 0x3a, 0x58, 0x4c, 0xc6, 0x9c, 0xae, 0x7f, 0xa9, 0x8c, + 0x7f, 0x51, 0xce, 0x63, 0xf7, 0x3a, 0x23, 0xe0, 0xe1, 0xa4, 0xa4, 0xa7, + 0xad, 0xb2, 0xfc, 0x9a, 0xb3, 0xab, 0xb3, 0x6c, 0x52, 0xca, 0x9e, 0x32, + 0x09, 0x31, 0x0d, 0x6b, 0xce, 0xd7, 0x47, 0x92, 0xb2, 0x73, 0xf2, 0x5e, + 0x45, 0x74, 0xb5, 0xa1, 0x83, 0x9b, 0xac, 0x78, 0x6b, 0x41, 0x3a, 0x8d, + 0x39, 0x2b, 0x3e, 0xfc, 0x8f, 0xb4, 0xd9, 0x8d, 0xb4, 0xfe, 0x8f, 0x23, + 0x12, 0xd0, 0x5f, 0xfb, 0xd2, 0x1a, 0xf5, 0x9d, 0xf5, 0x7f, 0x3b, 0xed, + 0x58, 0xd6, 0x60, 0xdc, 0xff, 0x00, 0xd3, 0x62, 0xb8, 0xb4, 0xb8, 0xf2, + 0xea, 0xff, 0x00, 0x34, 0xfc, 0xb8, 0x49, 0x4d, 0x6e, 0xaf, 0x91, 0x97, + 0x79, 0x8b, 0xac, 0xad, 0xef, 0x63, 0x8c, 0x86, 0xbc, 0xbb, 0x43, 0xc7, + 0xe6, 0x8e, 0x15, 0x16, 0xbd, 0xc0, 0x80, 0x5b, 0xb6, 0x3c, 0xe5, 0x5a, + 0xea, 0x58, 0xd5, 0xe3, 0xe4, 0x4d, 0x4e, 0xdc, 0x5d, 0xa9, 0x68, 0x1a, + 0x05, 0x42, 0xdb, 0x83, 0x04, 0x9d, 0x12, 0x53, 0x57, 0xac, 0x3f, 0x73, + 0x18, 0x3c, 0x4a, 0xa2, 0x68, 0x7b, 0x19, 0x5b, 0x88, 0xfe, 0x72, 0x63, + 0xe4, 0x61, 0x59, 0xaa, 0xca, 0xf2, 0xb3, 0xd8, 0xdc, 0xa7, 0x8a, 0x71, + 0xc1, 0xe5, 0xdc, 0x69, 0x3f, 0x94, 0xab, 0x7d, 0x4d, 0xd8, 0xf7, 0x67, + 0x83, 0x41, 0x06, 0x8a, 0x9b, 0x1e, 0xdf, 0xa2, 0x3c, 0x00, 0xf1, 0x49, + 0x4f, 0x61, 0xd3, 0x6d, 0x7d, 0x7d, 0x3f, 0x1c, 0x32, 0xa7, 0xb9, 0xbe, + 0x9b, 0x04, 0x68, 0x3b, 0x72, 0x35, 0x56, 0x5f, 0x76, 0x48, 0x61, 0x22, + 0xa6, 0x01, 0xd8, 0xb9, 0xff, 0x00, 0x4a, 0x7c, 0x36, 0xff, 0x00, 0x7a, + 0xad, 0xd3, 0x47, 0xad, 0xd3, 0x71, 0xc3, 0x9b, 0xec, 0x0d, 0x6c, 0x12, + 0x79, 0x01, 0x5d, 0x0e, 0xa5, 0xb3, 0x24, 0x4f, 0x6d, 0x52, 0x53, 0x59, + 0xb4, 0xbd, 0xf2, 0x5a, 0x40, 0x7b, 0xc6, 0xad, 0x68, 0x27, 0x8f, 0x32, + 0xe0, 0x84, 0xea, 0xaf, 0x63, 0xe1, 0x84, 0x83, 0x1c, 0x92, 0x07, 0xf0, + 0x2a, 0xe3, 0x0b, 0x5b, 0xb8, 0x89, 0x97, 0x9e, 0xc0, 0x90, 0xa3, 0xee, + 0x70, 0xd1, 0x87, 0x4e, 0x26, 0x07, 0xe5, 0x29, 0x29, 0x17, 0xa4, 0xed, + 0x9e, 0xe2, 0x5e, 0xfe, 0xe1, 0xee, 0x77, 0xf0, 0x2a, 0x4c, 0xa9, 0x90, + 0x09, 0x63, 0x01, 0x3e, 0x53, 0xf8, 0x94, 0x40, 0xdb, 0x1c, 0xe0, 0x76, + 0x01, 0xf1, 0x77, 0xf7, 0x02, 0x9c, 0xd6, 0xf9, 0x82, 0xe6, 0xb7, 0xc8, + 0x02, 0x7f, 0x88, 0x49, 0x49, 0x31, 0xff, 0x00, 0x39, 0xbc, 0xc0, 0xd3, + 0x40, 0x07, 0xe0, 0x8e, 0xe1, 0xae, 0x9c, 0x90, 0x85, 0x8e, 0xdd, 0xa5, + 0xc4, 0x9d, 0xc2, 0x3c, 0x21, 0x10, 0x88, 0x74, 0xf8, 0xe8, 0x92, 0x9b, + 0xf8, 0xe6, 0x58, 0x3e, 0x03, 0xf2, 0x29, 0x7f, 0x84, 0xf9, 0xff, 0x00, + 0x04, 0x2c, 0x53, 0x35, 0x30, 0xf9, 0x04, 0x6f, 0xf0, 0x92, 0x92, 0x9b, + 0x25, 0x31, 0x4e, 0x53, 0x24, 0xa5, 0x93, 0x27, 0x4b, 0xe4, 0x92, 0x96, + 0x49, 0x25, 0x57, 0xa9, 0x66, 0x7d, 0x8f, 0x18, 0xbc, 0x10, 0x2c, 0x76, + 0x95, 0x83, 0xdc, 0xf7, 0x3f, 0x20, 0x92, 0x92, 0x3f, 0x26, 0x9a, 0xdc, + 0xd6, 0x39, 0xc0, 0x3d, 0xe4, 0x86, 0x83, 0xc9, 0xdb, 0xc9, 0x4f, 0x76, + 0x4d, 0x14, 0x56, 0x6d, 0xbe, 0xc6, 0xd6, 0xc1, 0xcb, 0x9c, 0x60, 0x2f, + 0x3f, 0xea, 0x99, 0x46, 0xcb, 0xa5, 0xcf, 0x2f, 0x78, 0x33, 0xf8, 0xf8, + 0x2c, 0xbb, 0x3a, 0x9e, 0x4e, 0x53, 0xe9, 0xab, 0x2a, 0xe7, 0x11, 0x41, + 0x01, 0xa1, 0xc7, 0x80, 0x3c, 0x12, 0x53, 0xe8, 0xae, 0xeb, 0xf8, 0x4e, + 0x1f, 0xa1, 0xf5, 0x6c, 0x6c, 0x80, 0xeb, 0x19, 0x53, 0xc8, 0x03, 0xc4, + 0x69, 0xaf, 0x82, 0x7a, 0x3a, 0xe6, 0x05, 0xce, 0xd5, 0xe6, 0x96, 0xf0, + 0xc6, 0x58, 0xd7, 0x31, 0xef, 0x3c, 0x7e, 0x70, 0xd7, 0xe4, 0xbc, 0xcb, + 0x23, 0xab, 0xdf, 0xbe, 0x1b, 0x6d, 0x9b, 0x9b, 0xa0, 0x21, 0xe6, 0x46, + 0xb3, 0xa1, 0x47, 0xc0, 0xfa, 0xd9, 0x9d, 0x8b, 0x69, 0x75, 0xb1, 0x92, + 0xc8, 0x80, 0xdb, 0xbd, 0xe4, 0x01, 0xd8, 0x4c, 0x8f, 0xc1, 0x25, 0x3e, + 0xaf, 0x55, 0xa6, 0xcd, 0x43, 0x0b, 0x5b, 0xd8, 0xbb, 0x4f, 0xc1, 0x66, + 0x1d, 0x2d, 0xb7, 0xfe, 0x31, 0xcb, 0x07, 0xa6, 0x7f, 0x8c, 0x1c, 0x4b, + 0x0b, 0x59, 0x95, 0x4b, 0xb1, 0xda, 0x39, 0x73, 0x7d, 0xec, 0x1f, 0xd9, + 0x89, 0x0b, 0x72, 0x9b, 0xe8, 0xcb, 0xad, 0xf7, 0xd0, 0xf6, 0xd9, 0x55, + 0x8f, 0x2e, 0x6d, 0x8c, 0x32, 0x0e, 0x89, 0x29, 0xe2, 0xfe, 0xb3, 0x12, + 0xdf, 0xac, 0x40, 0xc4, 0xcd, 0x75, 0xc0, 0x5d, 0x6f, 0xda, 0x9c, 0x07, + 0xd0, 0x02, 0x06, 0xbb, 0x9c, 0x34, 0x8f, 0x84, 0xae, 0x4b, 0xeb, 0x69, + 0x15, 0xf5, 0xf0, 0xe0, 0x7f, 0xc1, 0x33, 0xf8, 0xae, 0x8c, 0xdd, 0x57, + 0xa4, 0x1c, 0xda, 0x1f, 0x63, 0x61, 0xa7, 0xe8, 0x1d, 0xbe, 0x3d, 0xd2, + 0x52, 0x77, 0xdb, 0x63, 0x9a, 0x1c, 0x5c, 0xd0, 0xc1, 0xae, 0x92, 0x7f, + 0xb9, 0x43, 0xd7, 0x68, 0x1a, 0xda, 0x1b, 0x3a, 0x88, 0x1d, 0xbf, 0x15, + 0x1a, 0xb2, 0x3e, 0xd0, 0xd7, 0x01, 0x8e, 0xed, 0xae, 0x90, 0x08, 0x2d, + 0x12, 0x7c, 0xc1, 0x4c, 0xdd, 0x09, 0x03, 0x1a, 0xb0, 0x41, 0x13, 0xb9, + 0xe4, 0xc7, 0x7d, 0x20, 0x24, 0xa5, 0x1b, 0x05, 0xa7, 0xda, 0xe2, 0xe0, + 0x34, 0x71, 0x3e, 0x3e, 0x50, 0xb9, 0xaf, 0xac, 0x8c, 0x73, 0xb3, 0xe8, + 0xd8, 0xd2, 0xe3, 0xe9, 0xf0, 0xd0, 0x4f, 0x73, 0xe0, 0xba, 0x6f, 0x4d, + 0xec, 0x9d, 0xc1, 0xa0, 0x9d, 0x46, 0xc0, 0x63, 0xe7, 0xb9, 0x13, 0x05, + 0xff, 0x00, 0xad, 0x5a, 0xce, 0xfe, 0x9b, 0x1d, 0xf8, 0xb8, 0x24, 0xa7, + 0x2a, 0xaa, 0xb2, 0x1c, 0x1b, 0x15, 0x3f, 0x50, 0x3f, 0x34, 0xf8, 0x23, + 0xb7, 0x0b, 0x34, 0x9f, 0xe6, 0xc8, 0x1e, 0x64, 0x2d, 0xd2, 0x0f, 0x7d, + 0x02, 0x01, 0xc8, 0xa2, 0xa9, 0xf5, 0x6f, 0x63, 0x75, 0xd3, 0x73, 0x9a, + 0xd8, 0xfc, 0x52, 0x53, 0x9a, 0x7a, 0x56, 0x55, 0x8c, 0xda, 0xe2, 0xd6, + 0x83, 0xe7, 0x3f, 0xc1, 0x56, 0xbb, 0xea, 0xb1, 0xb4, 0x40, 0xbc, 0x30, + 0x9f, 0xa4, 0xed, 0xbb, 0x89, 0x5a, 0xb6, 0x75, 0xae, 0x93, 0x50, 0x3b, + 0xf3, 0x2a, 0xd3, 0x90, 0x1d, 0xbb, 0xfe, 0xa6, 0x55, 0x57, 0x7d, 0x65, + 0xe8, 0xed, 0x3a, 0x5e, 0x5f, 0xe4, 0xc6, 0x38, 0xff, 0x00, 0x04, 0x94, + 0x92, 0x9e, 0x98, 0x31, 0xf1, 0xf0, 0x69, 0x73, 0xcb, 0xdf, 0x8f, 0xba, + 0xb6, 0xba, 0x3e, 0x93, 0x5c, 0x1d, 0x00, 0xae, 0x63, 0xac, 0x63, 0xfd, + 0x8d, 0xd7, 0x3f, 0x1c, 0x9a, 0xf2, 0x31, 0x6c, 0x8d, 0xed, 0xef, 0x5b, + 0xf9, 0x07, 0xe0, 0xef, 0xca, 0xbb, 0x1c, 0x2c, 0xaa, 0xb3, 0xdb, 0x56, + 0x45, 0x6d, 0x7b, 0x6b, 0x2e, 0x3e, 0x9e, 0xf0, 0x5b, 0x31, 0xa6, 0xe8, + 0xf0, 0x5c, 0xb7, 0xd6, 0x2a, 0xdc, 0xdc, 0x9c, 0xa6, 0x34, 0xe8, 0xf0, + 0x09, 0xef, 0x20, 0x90, 0x7f, 0x82, 0x4a, 0x70, 0xaa, 0xca, 0xce, 0xca, + 0x71, 0x3b, 0xc4, 0x0e, 0x5c, 0x75, 0xd0, 0x20, 0x12, 0xe7, 0xfb, 0x9c, + 0x77, 0x14, 0x40, 0xe3, 0x8d, 0x51, 0x1c, 0x3d, 0xe3, 0x6c, 0x76, 0x83, + 0xdd, 0x13, 0x0f, 0x0a, 0xfc, 0xa8, 0x0c, 0x05, 0xb5, 0xf7, 0xb0, 0x8d, + 0x23, 0xcb, 0xc5, 0x25, 0x22, 0xc0, 0xc3, 0x7e, 0x4e, 0x47, 0xd1, 0x0e, + 0xad, 0xa7, 0xde, 0x5d, 0xa8, 0xf8, 0x2d, 0x2c, 0x7c, 0x21, 0x66, 0x40, + 0x6d, 0x75, 0x86, 0x61, 0x34, 0x49, 0x71, 0xe5, 0xee, 0x07, 0x9e, 0x64, + 0x05, 0xa5, 0x6e, 0x3d, 0x58, 0x38, 0x5b, 0x31, 0x9b, 0x2e, 0x78, 0x86, + 0x09, 0xd7, 0x73, 0xbb, 0xb9, 0xc7, 0xc3, 0x92, 0x55, 0xaf, 0xab, 0xbd, + 0x07, 0x2e, 0xdc, 0x36, 0x58, 0x75, 0x75, 0xce, 0x9b, 0x2d, 0x71, 0x91, + 0xa6, 0x9f, 0x31, 0x1c, 0x24, 0xa6, 0x78, 0xae, 0x75, 0x55, 0x32, 0x8a, + 0xab, 0x6e, 0xc6, 0x4c, 0x17, 0x0d, 0xc4, 0x0f, 0x89, 0x57, 0x69, 0xb6, + 0xf2, 0xe0, 0xd6, 0x0d, 0xee, 0x3d, 0x9a, 0x3f, 0xb9, 0x6a, 0x9c, 0x4a, + 0x28, 0xc7, 0xfb, 0x1e, 0x38, 0x1e, 0xa1, 0xd6, 0xeb, 0x9c, 0x35, 0x6b, + 0x46, 0xb2, 0x7f, 0x80, 0x52, 0xaa, 0xca, 0x71, 0x98, 0xfb, 0x2b, 0x01, + 0xb8, 0xf5, 0xb6, 0x3d, 0x48, 0x83, 0x63, 0x92, 0x53, 0x9e, 0xdb, 0x8b, + 0xac, 0x35, 0xbc, 0x16, 0xb8, 0x72, 0xd7, 0x27, 0x88, 0xf9, 0xf8, 0x2c, + 0xe7, 0x5c, 0xe7, 0xdc, 0x6d, 0xfc, 0xe7, 0x12, 0xe3, 0x0b, 0x56, 0xaa, + 0xa8, 0xb2, 0xb6, 0xd9, 0xb0, 0x1d, 0xc2, 0x75, 0x24, 0xfe, 0x54, 0x94, + 0x8f, 0x78, 0x04, 0x6e, 0x20, 0x7c, 0x4a, 0x63, 0x63, 0x49, 0x89, 0x93, + 0xe5, 0xaf, 0xe4, 0x56, 0x9b, 0x53, 0x07, 0x0c, 0x03, 0xe0, 0x00, 0x53, + 0xd4, 0x79, 0x24, 0xa6, 0xbd, 0x33, 0xbb, 0x82, 0x04, 0x6a, 0x5c, 0x08, + 0x1f, 0x8a, 0x39, 0x1e, 0xe0, 0x7b, 0x77, 0x48, 0xb7, 0xba, 0x4e, 0x93, + 0xfc, 0x52, 0x52, 0x7c, 0x33, 0xfa, 0x30, 0x3c, 0x24, 0x7d, 0xc4, 0xab, + 0x1f, 0x9f, 0xf2, 0x58, 0xff, 0x00, 0x6e, 0xbf, 0x1a, 0xf6, 0x54, 0xda, + 0x83, 0xa8, 0x2e, 0x2e, 0xb6, 0xd2, 0x7f, 0x9b, 0x69, 0x71, 0x13, 0x1f, + 0x15, 0xad, 0xb8, 0x4e, 0xe9, 0x1b, 0x76, 0xcc, 0xf6, 0x8f, 0x8a, 0x4a, + 0x6d, 0xa6, 0x3e, 0x65, 0x3c, 0x1f, 0x14, 0xa0, 0x24, 0xa5, 0xbe, 0x01, + 0x34, 0x78, 0xa9, 0x24, 0x92, 0x9a, 0xf9, 0xb6, 0x0a, 0x71, 0x2d, 0x78, + 0x3b, 0x48, 0x69, 0xda, 0x7c, 0xe3, 0x45, 0xc5, 0x65, 0x67, 0x5d, 0x60, + 0x06, 0xdb, 0x5d, 0x64, 0x48, 0x61, 0x76, 0xa5, 0xad, 0x9f, 0x15, 0xb3, + 0xf5, 0x97, 0x32, 0xd6, 0x83, 0x54, 0x80, 0xce, 0x1a, 0x3f, 0x7b, 0xcc, + 0xaa, 0xdd, 0x2f, 0xa2, 0xd7, 0x9b, 0x58, 0xb6, 0xf1, 0xfa, 0x26, 0x7d, + 0x1a, 0xc1, 0x80, 0x48, 0xee, 0x92, 0x9e, 0x47, 0x32, 0xf0, 0xdd, 0xf7, + 0x12, 0x08, 0x70, 0xe6, 0x0a, 0xc5, 0xbf, 0x24, 0xbd, 0xda, 0x68, 0x07, + 0x07, 0xcd, 0x77, 0xbd, 0x6f, 0xa7, 0x60, 0xd6, 0xc2, 0x45, 0x6d, 0xdb, + 0xc4, 0xf8, 0x42, 0xe4, 0x72, 0xa9, 0xa7, 0x71, 0x15, 0xb4, 0x0f, 0x82, + 0x4a, 0x72, 0xb7, 0x12, 0x64, 0x9d, 0x7b, 0xa4, 0x23, 0x95, 0x65, 0xd8, + 0xe2, 0x09, 0x01, 0x57, 0x2d, 0x20, 0xc2, 0x4a, 0x49, 0x45, 0xaf, 0xaa, + 0xc0, 0xf6, 0x38, 0xb4, 0x8e, 0xed, 0x30, 0x57, 0x5f, 0xd1, 0x72, 0x1d, + 0x88, 0xe6, 0x5f, 0x55, 0x9f, 0xa9, 0x5e, 0xe0, 0x1f, 0x60, 0x69, 0x00, + 0x39, 0xdd, 0xad, 0x6f, 0xd1, 0xfe, 0xd0, 0x5c, 0x7e, 0x3d, 0x7e, 0xad, + 0xbe, 0x99, 0x70, 0x66, 0xe0, 0x76, 0xb9, 0xda, 0x09, 0x03, 0x45, 0xb3, + 0xf5, 0x70, 0xe6, 0x64, 0x3d, 0xf8, 0x78, 0xf6, 0x8a, 0xcb, 0x9a, 0x5c, + 0x5a, 0xe2, 0x4b, 0x5c, 0xde, 0xe3, 0x67, 0x05, 0x25, 0x3a, 0x5f, 0x5a, + 0x4c, 0x75, 0xd6, 0x38, 0xf7, 0xa5, 0x9c, 0x7c, 0xd7, 0x52, 0x5c, 0xed, + 0x8d, 0x73, 0xa0, 0xd6, 0xe6, 0x82, 0x66, 0x79, 0xed, 0xca, 0xe3, 0x3a, + 0xb5, 0x59, 0x2d, 0xea, 0x15, 0xd5, 0x96, 0x00, 0xb2, 0xa6, 0x35, 0x81, + 0xcc, 0x24, 0x02, 0xdf, 0xcd, 0xf8, 0x2e, 0xcf, 0x17, 0x13, 0x1d, 0xf8, + 0xd4, 0xb9, 0xcc, 0x0f, 0x25, 0x8d, 0x32, 0xe2, 0x5c, 0x78, 0x1f, 0xbd, + 0x29, 0x29, 0x83, 0x83, 0x6b, 0x1b, 0x81, 0x6b, 0x48, 0xe0, 0x48, 0x84, + 0xb7, 0xd4, 0x09, 0x70, 0x70, 0x32, 0x01, 0x3b, 0x75, 0x33, 0xf2, 0x56, + 0x45, 0x35, 0x00, 0x61, 0x8d, 0x1f, 0x00, 0x02, 0x4d, 0xa5, 0xad, 0x25, + 0xc3, 0x97, 0x72, 0x92, 0x9a, 0x97, 0x34, 0x64, 0x54, 0x58, 0xcb, 0x2d, + 0xad, 0xc7, 0x8b, 0x2b, 0x69, 0x04, 0x7f, 0x9e, 0x21, 0x65, 0x33, 0xa1, + 0xf5, 0x31, 0x63, 0xac, 0xfb, 0x7d, 0xc0, 0xb8, 0x6d, 0xdc, 0x3d, 0xa4, + 0xb4, 0x6a, 0x3f, 0x38, 0x2e, 0x8b, 0x68, 0x1a, 0x98, 0x03, 0xcf, 0x44, + 0x37, 0xe4, 0x63, 0xb4, 0x82, 0xeb, 0x1a, 0x27, 0xcc, 0x24, 0xa7, 0x17, + 0xfe, 0x6e, 0xb6, 0xc0, 0x3e, 0xd1, 0x75, 0xd6, 0x3a, 0x35, 0x2f, 0xb4, + 0xeb, 0xf2, 0x01, 0xca, 0x63, 0xa1, 0x74, 0x9a, 0x21, 0xcf, 0xa9, 0xae, + 0xd4, 0x0d, 0x77, 0xbc, 0xc9, 0x31, 0xe2, 0x16, 0xb7, 0xaf, 0x4c, 0xe8, + 0xed, 0xd3, 0xc4, 0x02, 0x7f, 0x22, 0x3e, 0x2d, 0x5f, 0x6a, 0x78, 0x6b, + 0x5a, 0x5a, 0xd1, 0xf4, 0xdc, 0x5a, 0x46, 0x9f, 0x3e, 0xe9, 0x29, 0xa3, + 0x4f, 0x45, 0xc1, 0xd4, 0xd5, 0x8e, 0xc7, 0x06, 0x89, 0x27, 0x60, 0x81, + 0xfe, 0x74, 0xad, 0x4c, 0x5e, 0x91, 0x8b, 0x53, 0x43, 0xed, 0xad, 0xa0, + 0x93, 0xa3, 0x00, 0x00, 0x6b, 0xe3, 0xb4, 0x05, 0x72, 0xc6, 0xb1, 0x98, + 0xcf, 0x65, 0x40, 0x36, 0x3d, 0xbf, 0x32, 0x9e, 0xf7, 0x8d, 0xd5, 0xb4, + 0x6b, 0x12, 0xe3, 0xfd, 0x9d, 0x3f, 0x29, 0x49, 0x4d, 0x5c, 0xcd, 0xbe, + 0xa9, 0x65, 0x7a, 0x7a, 0x75, 0xc4, 0x08, 0xf6, 0x93, 0xdb, 0xee, 0x5c, + 0x77, 0x5a, 0x0d, 0x76, 0x61, 0x1e, 0x15, 0x41, 0xf3, 0x2b, 0xa1, 0xfa, + 0xc3, 0x98, 0xdc, 0x36, 0x3d, 0xf4, 0x88, 0xb6, 0xdf, 0xa4, 0x7c, 0x76, + 0x88, 0x0b, 0x89, 0xca, 0xba, 0xc7, 0xcb, 0x81, 0xfd, 0x2d, 0x9c, 0x9f, + 0x00, 0x92, 0x91, 0x55, 0x4b, 0x2f, 0xc8, 0x97, 0x34, 0x11, 0x5c, 0x06, + 0xce, 0xa2, 0x56, 0xee, 0x3d, 0x12, 0x1a, 0x08, 0xf8, 0x05, 0x4f, 0xa7, + 0x61, 0x80, 0x18, 0x0f, 0x1c, 0x92, 0x7c, 0x57, 0x51, 0xd1, 0x70, 0x1b, + 0x6d, 0xfb, 0xde, 0xd9, 0xae, 0xb1, 0x24, 0x1e, 0x09, 0xec, 0x12, 0x53, + 0x85, 0x95, 0x8e, 0xec, 0xfe, 0xaf, 0x8d, 0xd3, 0xb6, 0xb8, 0xe3, 0xb4, + 0x8f, 0xb4, 0x11, 0xc7, 0xe9, 0x27, 0x63, 0x5c, 0x7c, 0xe1, 0x76, 0xcf, + 0x15, 0xe3, 0xd4, 0xca, 0xa9, 0x1b, 0x6b, 0xa8, 0x08, 0x68, 0x1d, 0x86, + 0x8d, 0x68, 0xf8, 0x95, 0xcd, 0xbf, 0x29, 0xf5, 0xf5, 0xbc, 0xb6, 0xb5, + 0xe6, 0x9a, 0xab, 0xca, 0xab, 0xd4, 0x7b, 0x5b, 0xa7, 0xf3, 0x70, 0xc6, + 0xb8, 0x8e, 0x7b, 0xe8, 0xba, 0x5d, 0x2c, 0x70, 0xb5, 0xa7, 0xd8, 0xe6, + 0x00, 0x48, 0xef, 0x06, 0x61, 0x25, 0x20, 0x6d, 0x75, 0xd7, 0x51, 0x76, + 0x5f, 0xf3, 0x97, 0x3b, 0x73, 0xd9, 0xce, 0xe8, 0xd4, 0x37, 0x45, 0x8b, + 0x9d, 0x97, 0x66, 0x5d, 0x93, 0xf4, 0x6b, 0x1a, 0x31, 0x9e, 0x01, 0x6c, + 0x66, 0xc3, 0x9a, 0xf6, 0xd4, 0x43, 0xb2, 0x5e, 0x0c, 0x6b, 0xf4, 0x58, + 0x7f, 0x00, 0xb3, 0x99, 0x8d, 0x8d, 0x8b, 0x50, 0xbb, 0x36, 0xc0, 0xf7, + 0x1e, 0x2a, 0x69, 0x1a, 0x13, 0xc4, 0xc7, 0x3a, 0x24, 0xa7, 0x30, 0x57, + 0x0e, 0x31, 0xf1, 0x5a, 0x38, 0xd7, 0xbd, 0x94, 0x35, 0xad, 0x6b, 0x4f, + 0x3a, 0x92, 0x7f, 0x80, 0x59, 0xe6, 0xc6, 0xba, 0xc7, 0x16, 0x37, 0x68, + 0x26, 0x47, 0x78, 0x08, 0x94, 0xdc, 0xc0, 0x1c, 0x1e, 0xf0, 0xc1, 0x3a, + 0x12, 0x63, 0xee, 0x49, 0x4e, 0x81, 0xc9, 0xb8, 0xf7, 0x68, 0xf8, 0x02, + 0x7f, 0xef, 0xc8, 0x6f, 0xba, 0xc7, 0x68, 0x6d, 0x3a, 0x73, 0xb4, 0x06, + 0xff, 0x00, 0x02, 0xab, 0xfd, 0xa6, 0xb2, 0x40, 0x69, 0x2e, 0xf3, 0x6b, + 0x5c, 0x7f, 0x20, 0x49, 0xcf, 0x73, 0xe6, 0x29, 0xb4, 0xf7, 0x1e, 0xd8, + 0xff, 0x00, 0xaa, 0x84, 0x94, 0xd9, 0xa5, 0xee, 0x73, 0xc3, 0x49, 0x79, + 0x06, 0x75, 0x26, 0x7f, 0x22, 0xb6, 0xd6, 0xe8, 0x44, 0xff, 0x00, 0xa8, + 0x54, 0x71, 0x0d, 0xbe, 0xab, 0x4b, 0xeb, 0x2c, 0x6c, 0x90, 0x4b, 0x9c, + 0xdf, 0x0f, 0x00, 0x4a, 0xb6, 0x3d, 0x4d, 0xc3, 0x5f, 0x03, 0xa7, 0x81, + 0x49, 0x4d, 0x17, 0xd8, 0x1b, 0x9f, 0xb7, 0x70, 0x69, 0x7d, 0x64, 0x34, + 0x38, 0x81, 0xb8, 0x87, 0x6a, 0x07, 0x8f, 0xd2, 0x4d, 0xeb, 0xbf, 0xfe, + 0x6d, 0xf3, 0xae, 0xff, 0x00, 0x4a, 0x7f, 0x93, 0xbb, 0x84, 0xb2, 0xb1, + 0xe8, 0xb3, 0x28, 0x3a, 0xca, 0xc3, 0xdc, 0xc2, 0x0b, 0x66, 0x63, 0xee, + 0x5a, 0xfe, 0x8d, 0x7f, 0x64, 0xf4, 0xb6, 0x37, 0xd3, 0xdb, 0xf4, 0x20, + 0x47, 0xdc, 0x92, 0x9d, 0x44, 0x92, 0x49, 0x25, 0x2c, 0x92, 0x74, 0x92, + 0x53, 0xcd, 0xfd, 0x65, 0x14, 0xb5, 0xd5, 0xee, 0x0d, 0x16, 0x48, 0xd9, + 0xe3, 0x0a, 0xce, 0x09, 0x14, 0xf4, 0xd6, 0x19, 0x6b, 0x5b, 0x13, 0xee, + 0x21, 0xb3, 0x3e, 0x65, 0x1b, 0xae, 0x74, 0xb6, 0xe5, 0xd2, 0x6f, 0x69, + 0x0d, 0xb6, 0xa6, 0x93, 0x24, 0x72, 0x06, 0xb0, 0xb9, 0x6f, 0xac, 0xb8, + 0xdd, 0x4e, 0xcc, 0x06, 0x8a, 0x68, 0x8c, 0x6a, 0xda, 0xd2, 0x1f, 0x23, + 0x75, 0x92, 0x07, 0x03, 0x9d, 0x12, 0x52, 0xfd, 0x53, 0xa9, 0x60, 0xd9, + 0xb9, 0x9e, 0xa0, 0xb1, 0x9b, 0x88, 0x1b, 0x35, 0x1b, 0x87, 0x9a, 0xe6, + 0x6d, 0x2d, 0x76, 0xac, 0x12, 0x64, 0xe8, 0x06, 0xab, 0x67, 0xa4, 0xfd, + 0x5f, 0xc8, 0x1d, 0x07, 0x37, 0x37, 0x32, 0xb3, 0x53, 0xbd, 0xae, 0xc7, + 0x6b, 0xb4, 0x27, 0x6f, 0xd2, 0x31, 0xf8, 0x2c, 0xa6, 0x30, 0x58, 0xf0, + 0x0c, 0x80, 0x39, 0x8e, 0x7c, 0x92, 0x53, 0x5f, 0x63, 0xc9, 0x82, 0xd2, + 0x3e, 0x2a, 0xae, 0x5d, 0x3b, 0x3d, 0xdf, 0x7a, 0xd3, 0x14, 0xdd, 0x58, + 0x05, 0xce, 0xdd, 0xa6, 0xa3, 0xb7, 0xc9, 0x03, 0x22, 0xbf, 0x52, 0xb3, + 0x3c, 0xa4, 0xa7, 0x24, 0x00, 0x5c, 0xd0, 0x7c, 0x42, 0xdc, 0xa2, 0xb7, + 0xf4, 0xec, 0xfa, 0xb2, 0xf1, 0xf7, 0x08, 0x3a, 0xcf, 0x76, 0x9f, 0xf6, + 0x20, 0xf4, 0x5e, 0x9e, 0xcc, 0xfe, 0xaf, 0x8d, 0x89, 0x1e, 0xdb, 0x1c, + 0x5a, 0x74, 0x98, 0xda, 0x37, 0x49, 0x5d, 0x1b, 0xba, 0x33, 0xe9, 0x73, + 0xe8, 0x79, 0xdc, 0xda, 0xdf, 0xe9, 0xb9, 0xc3, 0xf7, 0x5c, 0xdd, 0x0f, + 0xc4, 0x14, 0x94, 0xd4, 0xfa, 0xd6, 0xf1, 0xfb, 0x53, 0x1e, 0xd6, 0xc6, + 0xdb, 0x31, 0xd8, 0xef, 0x8f, 0xd2, 0xd5, 0x74, 0xfd, 0x2f, 0x27, 0xd6, + 0xe9, 0xf8, 0xee, 0x6b, 0xff, 0x00, 0xc1, 0xb7, 0x86, 0x47, 0x6f, 0xe5, + 0x2e, 0x4f, 0xeb, 0x1d, 0x6f, 0xa7, 0x2f, 0x0a, 0xab, 0x75, 0x75, 0x54, + 0x06, 0x6e, 0x1d, 0xc3, 0x5c, 0xe8, 0x2b, 0xa5, 0xe9, 0xb6, 0xbd, 0x9d, + 0x3a, 0x8f, 0xd1, 0x97, 0x12, 0xc0, 0x41, 0x71, 0x63, 0x74, 0x23, 0xf9, + 0x29, 0x29, 0xba, 0xe7, 0xba, 0x4c, 0xb9, 0xc4, 0x7c, 0x87, 0xe4, 0x09, + 0x8b, 0x40, 0xfc, 0xe7, 0x1f, 0x22, 0xe3, 0xfd, 0xea, 0x06, 0xdb, 0x0e, + 0xbe, 0x9b, 0x00, 0xf3, 0x79, 0xfe, 0x0d, 0x4d, 0xeb, 0xde, 0xe2, 0x1a, + 0x3d, 0x26, 0x7f, 0x65, 0xce, 0xfe, 0x2d, 0x49, 0x4a, 0x73, 0x2b, 0x99, + 0xd8, 0xdf, 0xba, 0x7f, 0x2a, 0x8e, 0xe7, 0x02, 0x23, 0xdb, 0x3c, 0x00, + 0x00, 0xfe, 0x09, 0x1f, 0x5c, 0xf3, 0x68, 0x9f, 0xe4, 0xb0, 0x7f, 0xdf, + 0x89, 0x50, 0x12, 0x49, 0x06, 0xd7, 0xf9, 0xc6, 0xd1, 0xf9, 0x1a, 0x92, + 0x92, 0x0d, 0xee, 0x3a, 0xc9, 0x25, 0x6f, 0xd3, 0x5b, 0x31, 0x31, 0xc3, + 0x66, 0x23, 0x57, 0x38, 0xf7, 0x72, 0xe7, 0xeb, 0x65, 0x4d, 0xb1, 0x8f, + 0x77, 0xa9, 0x66, 0xc2, 0x08, 0x0e, 0xb1, 0xd0, 0x63, 0x55, 0x64, 0xf5, + 0xdb, 0xcb, 0xa5, 0xcc, 0x63, 0x18, 0x34, 0x2d, 0x71, 0x23, 0x5f, 0x8a, + 0x4a, 0x74, 0x9e, 0xf6, 0xba, 0xc7, 0x30, 0x7f, 0x84, 0xda, 0xe3, 0xf1, + 0x69, 0xed, 0xf2, 0x4f, 0x90, 0x43, 0x6b, 0xe7, 0xdc, 0xfd, 0x07, 0x8c, + 0x4c, 0x95, 0x57, 0x23, 0x26, 0xab, 0x45, 0x65, 0xae, 0x0e, 0x25, 0xa0, + 0x8d, 0x84, 0xc8, 0x71, 0xe3, 0x58, 0x41, 0xcc, 0xb9, 0xe2, 0xa9, 0x7b, + 0xa6, 0xc2, 0x20, 0x91, 0xa4, 0x00, 0x92, 0x9c, 0x2f, 0xac, 0x37, 0x6f, + 0x07, 0x5d, 0x49, 0xd8, 0xd1, 0xe4, 0x17, 0x3d, 0xb4, 0xbf, 0x25, 0xac, + 0xec, 0x34, 0xfb, 0xd5, 0xdc, 0xec, 0x9f, 0x5b, 0x20, 0xeb, 0x2c, 0x67, + 0x08, 0x7d, 0x3e, 0x83, 0x65, 0xc2, 0xc3, 0xf4, 0x66, 0x67, 0xe0, 0x92, + 0x9d, 0xcc, 0x1c, 0x79, 0x73, 0x18, 0xd1, 0xee, 0x74, 0x34, 0x1f, 0x8a, + 0xeb, 0xf1, 0xa8, 0x66, 0x3d, 0x42, 0xa6, 0x08, 0x0d, 0xe4, 0xf8, 0x9f, + 0x15, 0xcf, 0x74, 0xb6, 0x0f, 0xb7, 0x53, 0xcc, 0x03, 0x3f, 0x70, 0xfc, + 0x8b, 0xa5, 0xee, 0x92, 0x9e, 0x2b, 0xeb, 0x16, 0x46, 0x6f, 0x4a, 0xea, + 0x97, 0x5b, 0x5c, 0x1c, 0x6c, 0xe6, 0x86, 0x92, 0x40, 0xf6, 0x58, 0x34, + 0x07, 0x55, 0xd1, 0x74, 0xdb, 0x99, 0x6d, 0x04, 0x58, 0x76, 0xd3, 0x54, + 0x43, 0xa6, 0x03, 0xcb, 0x86, 0xe3, 0xf7, 0x2c, 0x0f, 0xae, 0x3b, 0x7e, + 0xd9, 0x5b, 0x6f, 0x31, 0x8f, 0x1b, 0x8b, 0x7b, 0x3c, 0x8e, 0x1a, 0x4a, + 0xbd, 0xd3, 0xf1, 0x8e, 0x27, 0x4e, 0xc7, 0xa0, 0x92, 0xe2, 0xc6, 0x02, + 0x4b, 0xb9, 0x97, 0x7b, 0xa3, 0xe5, 0x30, 0x92, 0x9d, 0x5c, 0x8c, 0xee, + 0x9f, 0x4b, 0x23, 0xf3, 0x75, 0xfa, 0x2c, 0x90, 0xb9, 0xbc, 0x9c, 0x8e, + 0x9d, 0x7d, 0xc4, 0x62, 0x58, 0xd0, 0xff, 0x00, 0xdc, 0x82, 0xd7, 0x0f, + 0xec, 0xb9, 0x17, 0xa8, 0xdb, 0xec, 0x2b, 0x8f, 0xc9, 0x7e, 0xfb, 0xcb, + 0x87, 0x63, 0xa1, 0xee, 0x12, 0x53, 0xd2, 0x0b, 0x1e, 0xd7, 0x00, 0xf1, + 0x24, 0x9d, 0x08, 0xee, 0x15, 0xbc, 0x7b, 0x3d, 0x16, 0x81, 0x07, 0x73, + 0xc9, 0x73, 0x8f, 0xfb, 0x56, 0x4f, 0x4a, 0xc8, 0xc9, 0xbd, 0x85, 0xb6, + 0xfb, 0x8d, 0x64, 0x6d, 0xb3, 0xb9, 0x04, 0x70, 0x56, 0xcb, 0x29, 0x6b, + 0xf6, 0xb4, 0xe4, 0x06, 0x39, 0xc3, 0xe8, 0x40, 0x2e, 0x1f, 0x79, 0x49, + 0x49, 0x0d, 0xce, 0x3f, 0x0d, 0x12, 0x0e, 0x3a, 0x95, 0x2f, 0xb0, 0x00, + 0x35, 0xc8, 0xb0, 0xf9, 0x0d, 0xa3, 0xfe, 0xfa, 0x97, 0xd8, 0xa9, 0x3a, + 0x17, 0x5a, 0xe3, 0xde, 0x6c, 0x23, 0xf2, 0x42, 0x4a, 0x5d, 0x80, 0x97, + 0x01, 0xe6, 0xac, 0x82, 0x45, 0x8d, 0x1c, 0x37, 0x69, 0xfb, 0xc4, 0x42, + 0xae, 0xcc, 0x2c, 0x66, 0x38, 0x58, 0xd6, 0x12, 0xe6, 0x19, 0x04, 0xbd, + 0xc7, 0x8f, 0x89, 0x56, 0x6b, 0x24, 0xb9, 0xa7, 0xe3, 0xa1, 0xf3, 0x84, + 0x94, 0x8d, 0xb5, 0x4e, 0x4b, 0xcc, 0x7d, 0x10, 0x0a, 0xd1, 0xd7, 0xd3, + 0x88, 0xed, 0xf2, 0x54, 0xe9, 0x1f, 0xac, 0xbc, 0x1f, 0x01, 0xf9, 0x4a, + 0xb5, 0xae, 0xe8, 0xdc, 0x27, 0x8d, 0xa9, 0x29, 0xd1, 0x49, 0x36, 0x89, + 0x40, 0x49, 0x4b, 0xa4, 0x9a, 0x12, 0xd7, 0xc5, 0x25, 0x29, 0xcd, 0x0f, + 0x69, 0x69, 0xe1, 0xc0, 0x83, 0xf3, 0x59, 0xd7, 0x5b, 0x5e, 0x36, 0x36, + 0xec, 0x87, 0x43, 0x28, 0x1a, 0xc7, 0x83, 0x56, 0x96, 0xab, 0x8d, 0xfa, + 0xd9, 0x7e, 0x57, 0x4e, 0xea, 0x0c, 0xb8, 0x7e, 0x97, 0x0b, 0x24, 0x07, + 0x3e, 0x97, 0x7d, 0x1d, 0xec, 0xd1, 0xc3, 0xca, 0x74, 0x29, 0x29, 0xb1, + 0xd6, 0xfa, 0xf6, 0x2e, 0x47, 0x49, 0xf4, 0xaa, 0xb1, 0xa2, 0xf7, 0x86, + 0xee, 0xaa, 0x7e, 0x83, 0x5e, 0x25, 0xbb, 0xbe, 0x4b, 0x8f, 0xc6, 0x7d, + 0x6f, 0x81, 0x21, 0xc0, 0xf0, 0xf0, 0xb5, 0xf3, 0x7e, 0xb0, 0xf4, 0xfe, + 0xa1, 0x48, 0xf4, 0xba, 0x76, 0xfb, 0x80, 0x00, 0x39, 0xcc, 0x04, 0x13, + 0x11, 0xb4, 0x16, 0x89, 0x20, 0x2e, 0x7e, 0xb7, 0x8a, 0xac, 0xd8, 0xfd, + 0xcd, 0x74, 0xc4, 0x38, 0x10, 0x92, 0x9b, 0xd7, 0x08, 0x1a, 0x70, 0xab, + 0x7a, 0x76, 0x5a, 0xe1, 0x4d, 0x4d, 0xdf, 0x6d, 0x84, 0x35, 0x8d, 0x1c, + 0x97, 0x1d, 0x00, 0x52, 0x7d, 0xb0, 0xde, 0x55, 0xff, 0x00, 0xaa, 0xb4, + 0x1c, 0xae, 0xbf, 0x8c, 0x06, 0xad, 0xa8, 0x9b, 0x5d, 0xfd, 0x81, 0xa7, + 0xe3, 0x09, 0x29, 0xdc, 0xfa, 0x9d, 0xf5, 0x4b, 0x27, 0xa7, 0x64, 0x7e, + 0xd2, 0xea, 0x03, 0x65, 0xe1, 0xa5, 0xb5, 0x52, 0x08, 0x24, 0x6e, 0xd1, + 0xce, 0x79, 0x1a, 0x4c, 0x68, 0xb6, 0x2c, 0xad, 0xae, 0xca, 0xca, 0x0e, + 0x00, 0x82, 0xf6, 0xe9, 0xe5, 0x0b, 0x65, 0x64, 0x49, 0x39, 0x99, 0x63, + 0xc1, 0xcd, 0x8f, 0xc5, 0x25, 0x3c, 0x5f, 0xd7, 0x76, 0x86, 0x75, 0x4c, + 0x68, 0xd0, 0x7a, 0x5f, 0xf7, 0xe7, 0x2d, 0x9e, 0x99, 0x7d, 0x5f, 0xb3, + 0x71, 0xa5, 0xe2, 0x45, 0x60, 0x11, 0x3a, 0xe9, 0xa2, 0xca, 0xfa, 0xea, + 0xd9, 0xea, 0xb8, 0x80, 0x8d, 0x7d, 0x2e, 0x3f, 0xb4, 0xe5, 0xd1, 0x74, + 0x96, 0xb5, 0x9d, 0x2f, 0x18, 0x96, 0x4f, 0xb3, 0xf3, 0x7d, 0xb1, 0xa9, + 0xe6, 0x12, 0x52, 0x3f, 0x56, 0xb7, 0x18, 0x69, 0x2e, 0xf8, 0x35, 0xc7, + 0xf8, 0x24, 0x5f, 0xb4, 0xc9, 0x63, 0xe3, 0xcd, 0xa4, 0x7e, 0x58, 0x57, + 0x1d, 0xb5, 0xe2, 0x03, 0x0f, 0x6d, 0x5a, 0x49, 0x2a, 0x2e, 0xb3, 0x07, + 0x1e, 0xbd, 0xce, 0xb4, 0xee, 0xec, 0x2c, 0x71, 0x24, 0xa4, 0xa6, 0xb0, + 0xb5, 0xd1, 0x02, 0xa2, 0xe0, 0x78, 0x98, 0xfe, 0xf5, 0x12, 0xeb, 0x89, + 0x81, 0x49, 0x07, 0xe7, 0xfc, 0x01, 0x56, 0x1d, 0x9f, 0x84, 0x1b, 0x22, + 0xc6, 0x17, 0x76, 0x8d, 0xc7, 0xef, 0x43, 0xab, 0xaa, 0x63, 0x3d, 0xce, + 0x63, 0x5c, 0x5f, 0xb6, 0x46, 0xd6, 0x34, 0x93, 0x3f, 0x24, 0x94, 0xc0, + 0xfa, 0xcd, 0x6b, 0x9e, 0x59, 0x0d, 0x68, 0x25, 0xdc, 0xf6, 0xf8, 0xc2, + 0xc7, 0x3d, 0x44, 0x35, 0xfe, 0xad, 0x8c, 0xf5, 0xaf, 0x79, 0xfd, 0x1d, + 0x7f, 0x9a, 0xd0, 0x78, 0xf1, 0x92, 0x56, 0xeb, 0xf3, 0x43, 0x5a, 0x5c, + 0xdc, 0x6b, 0x88, 0x1e, 0xe2, 0x76, 0xc0, 0xe3, 0xcd, 0x57, 0xe9, 0x5d, + 0x27, 0xd2, 0x71, 0xcc, 0xca, 0x03, 0xed, 0x56, 0x19, 0x6b, 0x7b, 0x56, + 0x0f, 0x61, 0xe6, 0x92, 0x9b, 0x78, 0x27, 0x33, 0xec, 0xde, 0xa6, 0x58, + 0x6d, 0x64, 0xea, 0xda, 0x9b, 0x30, 0xd1, 0xfc, 0xaf, 0x35, 0x9b, 0xd5, + 0xf3, 0xcb, 0x28, 0x79, 0x69, 0xd5, 0xde, 0xc6, 0xad, 0x4e, 0xa7, 0x78, + 0xa6, 0xa1, 0x5c, 0xfb, 0x8f, 0x2b, 0x90, 0xea, 0x39, 0x06, 0xdb, 0x05, + 0x60, 0xfb, 0x58, 0x92, 0x9a, 0x2f, 0x71, 0x6d, 0x67, 0xf7, 0x9e, 0x63, + 0xef, 0x5d, 0x07, 0x4f, 0xa4, 0x57, 0x53, 0x1b, 0x11, 0x01, 0x73, 0xf5, + 0x8f, 0x57, 0x29, 0x8c, 0x1c, 0x33, 0xdc, 0x7f, 0x82, 0xe9, 0xb1, 0xb6, + 0x96, 0x36, 0x0e, 0x80, 0x0e, 0x12, 0x53, 0xa9, 0xd1, 0x84, 0xe7, 0x71, + 0xf4, 0x03, 0x8c, 0xf8, 0x69, 0x1f, 0xc5, 0x74, 0x07, 0x85, 0x8f, 0xd1, + 0xb1, 0x9f, 0x55, 0x8e, 0xbd, 0xc2, 0x1a, 0x5b, 0x0d, 0x07, 0x93, 0x27, + 0x9f, 0x82, 0xd6, 0x7b, 0xc0, 0x6e, 0xee, 0xc1, 0x25, 0x3c, 0xc7, 0xd7, + 0x06, 0x32, 0xf7, 0xe2, 0x63, 0x92, 0x03, 0xac, 0xb5, 0xad, 0xf7, 0x78, + 0x48, 0x24, 0x0f, 0xb9, 0x5f, 0xb8, 0x83, 0x3f, 0x91, 0x56, 0xfa, 0xc5, + 0x57, 0xda, 0x6d, 0xc5, 0x6d, 0x6d, 0x9b, 0x19, 0x73, 0x5f, 0xb8, 0xfe, + 0x6b, 0x5a, 0x43, 0x8b, 0xbf, 0x04, 0x57, 0x3f, 0x74, 0x9e, 0xc9, 0x29, + 0xc4, 0xeb, 0x37, 0x7a, 0x55, 0x1d, 0x7b, 0x42, 0xe5, 0xe6, 0x5d, 0xe7, + 0xdd, 0x6d, 0x75, 0xfc, 0xa6, 0xb9, 0xc2, 0xa6, 0xf3, 0xdd, 0x65, 0x62, + 0x52, 0x6e, 0xb9, 0xac, 0xec, 0x4e, 0xbf, 0x0e, 0xe9, 0x29, 0xdf, 0xe9, + 0x35, 0x96, 0x63, 0x32, 0x44, 0x17, 0x19, 0xf9, 0x15, 0xa0, 0xdc, 0x1c, + 0x50, 0xfd, 0xdb, 0x89, 0x33, 0x27, 0x68, 0x24, 0xcf, 0xc6, 0x10, 0xf0, + 0x19, 0x2f, 0x63, 0x48, 0x80, 0x23, 0xf0, 0x5a, 0x36, 0x3a, 0x03, 0xbb, + 0xf8, 0x24, 0xa6, 0x42, 0xd6, 0xed, 0xfa, 0x2f, 0xff, 0x00, 0x34, 0xff, + 0x00, 0x15, 0x0f, 0x5c, 0x0d, 0x05, 0x4f, 0x23, 0xcf, 0x68, 0xfc, 0xae, + 0x43, 0x69, 0x29, 0xcb, 0xa4, 0xc1, 0x3e, 0x69, 0x29, 0x23, 0xaf, 0x79, + 0x30, 0x2a, 0x86, 0x9f, 0x17, 0x0f, 0xe1, 0x28, 0xad, 0x33, 0x67, 0x91, + 0x74, 0x03, 0xf2, 0x55, 0x49, 0xd6, 0x0e, 0x8a, 0xc3, 0x79, 0x68, 0xed, + 0xb8, 0x9f, 0xb9, 0x25, 0x33, 0xc6, 0x27, 0xed, 0x56, 0x07, 0x08, 0x81, + 0x01, 0x5e, 0x81, 0x13, 0x1a, 0xf2, 0xa9, 0xb1, 0xa3, 0xed, 0x45, 0xc3, + 0x82, 0xd2, 0x23, 0xe0, 0x55, 0xd8, 0xd3, 0xcd, 0x25, 0x37, 0x65, 0x2d, + 0x12, 0x49, 0x25, 0x2d, 0x1e, 0x09, 0xf5, 0x4b, 0x44, 0xb4, 0x49, 0x4a, + 0xd5, 0x51, 0xeb, 0x1d, 0x2e, 0x9e, 0xad, 0x82, 0xfc, 0x4b, 0x7d, 0xa4, + 0xeb, 0x5d, 0x9f, 0xb8, 0xf1, 0xc1, 0x57, 0xb4, 0x51, 0xb2, 0xca, 0xea, + 0x61, 0x7d, 0xaf, 0x0c, 0x60, 0xe5, 0xce, 0x20, 0x01, 0xf3, 0x29, 0x29, + 0xf2, 0x1c, 0xca, 0x73, 0xba, 0x76, 0x55, 0x98, 0x97, 0xcd, 0x76, 0x52, + 0x60, 0x8e, 0xde, 0x44, 0x79, 0x15, 0x59, 0xf6, 0xba, 0x77, 0x39, 0xdb, + 0x89, 0xd6, 0x4a, 0xea, 0x7e, 0xbd, 0xe4, 0xe2, 0x66, 0xe4, 0xd0, 0xdc, + 0x47, 0x32, 0xc7, 0xd4, 0xc3, 0xbe, 0xc6, 0x6b, 0x3b, 0x8e, 0x8d, 0x91, + 0xe1, 0xfc, 0x57, 0x17, 0x75, 0x59, 0x2d, 0x20, 0x77, 0x3c, 0x01, 0xca, + 0x4a, 0x67, 0x6e, 0x59, 0xe0, 0x15, 0xb7, 0xf5, 0x37, 0xac, 0xe3, 0x74, + 0xee, 0xae, 0x2c, 0xcc, 0x21, 0xb5, 0x5c, 0xc3, 0x57, 0xaa, 0x78, 0xac, + 0xb8, 0x82, 0x1c, 0x7c, 0xb4, 0x82, 0xb2, 0xf1, 0x3e, 0xae, 0xf5, 0x6c, + 0x92, 0x1c, 0x29, 0x35, 0xb0, 0xfe, 0x7d, 0xbe, 0xd1, 0xf7, 0x73, 0xf8, + 0x2d, 0xbc, 0x6f, 0xa9, 0xe1, 0x90, 0xec, 0x9b, 0xe6, 0x39, 0x15, 0x8d, + 0xa3, 0xfc, 0xe7, 0x24, 0xa7, 0xd3, 0x9a, 0xe6, 0xbd, 0xa1, 0xed, 0x70, + 0x73, 0x5d, 0xab, 0x5c, 0x0c, 0x82, 0x3c, 0xa1, 0x65, 0xbd, 0xb1, 0x9d, + 0x95, 0xe7, 0xb0, 0xfd, 0xe1, 0xcb, 0x9e, 0xc1, 0x77, 0xec, 0xca, 0xbe, + 0xcd, 0x87, 0x91, 0x63, 0x2b, 0x24, 0x48, 0xdc, 0x5e, 0xd6, 0x9f, 0x8b, + 0xb4, 0x1f, 0x25, 0xa3, 0x65, 0xf9, 0xb8, 0x4f, 0x75, 0xd9, 0x0f, 0xaa, + 0xc0, 0xf0, 0xd0, 0x4b, 0x9e, 0x18, 0xe7, 0x40, 0xd3, 0x6c, 0x80, 0x09, + 0xd5, 0x25, 0x3c, 0xf7, 0xd7, 0x70, 0x4f, 0x51, 0xc3, 0x33, 0x1f, 0xa3, + 0x3a, 0x8f, 0xeb, 0x15, 0xaf, 0xd2, 0x71, 0xe9, 0x1d, 0x33, 0x1d, 0xe4, + 0x3d, 0xc7, 0x6c, 0xc9, 0x7b, 0xbc, 0x4f, 0x9a, 0xc4, 0xfa, 0xd3, 0x78, + 0xea, 0x17, 0x62, 0x5f, 0x8e, 0xd3, 0xb5, 0x8d, 0x73, 0x5f, 0x22, 0x76, + 0x92, 0x67, 0x58, 0x5d, 0x27, 0x4b, 0xc2, 0x7f, 0xec, 0xdc, 0x76, 0x3a, + 0xc1, 0x06, 0xb1, 0xc3, 0x4f, 0x7d, 0x7c, 0x52, 0x52, 0x07, 0xec, 0xaa, + 0xe0, 0xf2, 0xd1, 0xb4, 0x93, 0xa3, 0xb5, 0xd3, 0xc7, 0x55, 0x53, 0x37, + 0xae, 0xf4, 0x8c, 0x2b, 0x0b, 0x1e, 0x5a, 0xeb, 0x44, 0x1d, 0xac, 0x60, + 0x3f, 0x7f, 0x9a, 0xad, 0xf5, 0xb7, 0x2d, 0xd8, 0x34, 0xb2, 0x8a, 0xdc, + 0x4d, 0xf6, 0x83, 0xb5, 0xdc, 0x6d, 0x68, 0xfa, 0x45, 0x71, 0x6c, 0xad, + 0xf6, 0x99, 0x12, 0x7c, 0xfc, 0x52, 0x53, 0xd3, 0x67, 0x7d, 0x73, 0x2e, + 0x61, 0x6e, 0x0d, 0x45, 0x8f, 0x31, 0xb5, 0xf6, 0x01, 0xa7, 0x8e, 0x80, + 0xaa, 0x1d, 0x37, 0xeb, 0x1f, 0xd8, 0xed, 0x6b, 0xee, 0xae, 0x40, 0x66, + 0xc2, 0xe6, 0x68, 0x4e, 0xb3, 0x27, 0xc4, 0xac, 0xf1, 0x84, 0xe0, 0x75, + 0x41, 0xbb, 0x1c, 0xb7, 0x51, 0xf7, 0x24, 0xa7, 0xd3, 0xba, 0x2e, 0x7d, + 0x1d, 0x5e, 0xb7, 0x64, 0x50, 0x4f, 0xa3, 0x5e, 0x8e, 0xdc, 0x23, 0xdd, + 0xe0, 0xb4, 0xdd, 0x0d, 0xfd, 0x23, 0x8c, 0x31, 0xba, 0xae, 0x67, 0xfc, + 0x5f, 0x5c, 0x2c, 0xe9, 0x37, 0x62, 0x30, 0x45, 0x95, 0xde, 0x4b, 0xfc, + 0x61, 0xed, 0x1b, 0x4f, 0xe0, 0x56, 0xe7, 0x5c, 0xbc, 0x51, 0x88, 0xe6, + 0x0f, 0x04, 0x94, 0xf3, 0xfd, 0x4b, 0xa8, 0x1b, 0xae, 0xb6, 0xd2, 0x7d, + 0xa3, 0x40, 0xb9, 0xdb, 0x6d, 0x27, 0x73, 0xce, 0x92, 0xad, 0x65, 0x5b, + 0xbb, 0xd8, 0x3e, 0x25, 0x65, 0x66, 0xda, 0x5a, 0xd2, 0xd1, 0xca, 0x4a, + 0x49, 0xd3, 0xb2, 0x0b, 0xf2, 0xdd, 0x53, 0x39, 0x78, 0xf7, 0x3b, 0xf7, + 0x40, 0x2b, 0xaa, 0xc1, 0xba, 0x8a, 0x1f, 0x5b, 0x5e, 0xf0, 0x18, 0x08, + 0x2e, 0x2e, 0xe2, 0x27, 0x59, 0x5c, 0xe7, 0xd5, 0xbe, 0x99, 0x97, 0x9b, + 0x71, 0xa7, 0x18, 0x16, 0xb9, 0xc2, 0x6e, 0xb8, 0xfd, 0x16, 0x35, 0x77, + 0x58, 0x3f, 0x56, 0xb0, 0x70, 0xc8, 0xb1, 0xe5, 0xd9, 0x37, 0x0f, 0xcf, + 0xb0, 0xc8, 0x07, 0xc9, 0xbc, 0x24, 0xa7, 0x5b, 0xed, 0x78, 0xee, 0x64, + 0xd6, 0xed, 0xc0, 0xf0, 0x47, 0x87, 0xc5, 0x02, 0xdc, 0xbb, 0x1c, 0xdd, + 0x8d, 0xf6, 0x83, 0x3a, 0xf7, 0x52, 0x73, 0x5a, 0xc1, 0x10, 0xaa, 0xb8, + 0xfb, 0xb5, 0x49, 0x4c, 0x1c, 0xd7, 0xd8, 0xe9, 0x24, 0x92, 0x7b, 0x95, + 0x57, 0x3a, 0xff, 0x00, 0xb3, 0x54, 0x47, 0x96, 0xaa, 0xe3, 0xad, 0xae, + 0xb0, 0x49, 0x23, 0x45, 0xce, 0x75, 0x9c, 0x93, 0x65, 0x4f, 0x2d, 0x3e, + 0x29, 0x29, 0xc2, 0xca, 0xb8, 0xdf, 0x73, 0xac, 0x3d, 0xce, 0x8b, 0x43, + 0xa5, 0xd3, 0xb5, 0x86, 0xd3, 0xc9, 0xd1, 0xab, 0x2e, 0xa6, 0x39, 0xef, + 0x0d, 0x1d, 0xd6, 0xee, 0x34, 0x56, 0xc0, 0xde, 0xcd, 0xd0, 0x24, 0xa7, + 0x57, 0xa7, 0xb4, 0x38, 0x96, 0xb9, 0xc5, 0x8e, 0x8d, 0x0b, 0x62, 0x74, + 0xe7, 0xe9, 0x02, 0xaf, 0x8c, 0x66, 0xf2, 0x6c, 0xb0, 0xfc, 0xc0, 0xfc, + 0x8d, 0x0a, 0x97, 0x4f, 0x68, 0x61, 0x36, 0x90, 0xe7, 0x01, 0x2d, 0x01, + 0xad, 0x2e, 0xd4, 0xf3, 0x30, 0xaf, 0x8b, 0x41, 0x32, 0x2b, 0xb0, 0xcf, + 0x6d, 0xb0, 0x3f, 0x12, 0x12, 0x53, 0x1f, 0xb2, 0xd6, 0x75, 0x3b, 0xcf, + 0xc5, 0xee, 0xfe, 0xf4, 0xe3, 0x07, 0x1f, 0xf7, 0x60, 0xf8, 0x92, 0x4f, + 0xe5, 0x2a, 0x6d, 0xb1, 0xee, 0x9f, 0xd0, 0xbf, 0x4f, 0x1d, 0xa3, 0xfe, + 0xfc, 0x91, 0xb5, 0xe4, 0xec, 0x35, 0x10, 0x39, 0xd5, 0xcd, 0x1f, 0x92, + 0x52, 0x53, 0x03, 0x87, 0x43, 0x1d, 0xf4, 0x1a, 0x7e, 0x21, 0x3d, 0x2e, + 0x9d, 0x7c, 0x1d, 0xac, 0x71, 0x33, 0x09, 0xf7, 0xd8, 0xe2, 0x41, 0x6b, + 0x40, 0xfe, 0xb1, 0xff, 0x00, 0xc8, 0xa6, 0x63, 0x5c, 0xdd, 0xd2, 0x34, + 0xfa, 0x43, 0xef, 0x49, 0x49, 0xd8, 0x22, 0xf0, 0x4f, 0x71, 0x0a, 0xef, + 0x9f, 0x75, 0x4e, 0x62, 0xc6, 0x7d, 0xc8, 0xfb, 0xdd, 0x3b, 0x52, 0x52, + 0x6b, 0x3a, 0xa7, 0x4d, 0xaf, 0xe9, 0xe4, 0x30, 0x47, 0x9c, 0xfe, 0x45, + 0x5c, 0x75, 0xfe, 0x9e, 0xe0, 0xe2, 0xd0, 0xf2, 0x26, 0x1a, 0x76, 0x9f, + 0x70, 0xf1, 0x0b, 0x8a, 0x3d, 0x63, 0xa7, 0x08, 0x63, 0x4f, 0xa8, 0xd7, + 0x6b, 0xb8, 0x33, 0x8f, 0xeb, 0x38, 0xc4, 0x2c, 0xfc, 0xfe, 0xbf, 0x6d, + 0xf5, 0xec, 0xc0, 0xaf, 0xd2, 0x64, 0xc1, 0xb1, 0xdf, 0x4c, 0x9f, 0x2f, + 0x04, 0x94, 0xf6, 0x59, 0x9f, 0x5d, 0xfa, 0x76, 0x13, 0x9e, 0x2e, 0xad, + 0xc4, 0xb4, 0xc3, 0x58, 0xdf, 0xa6, 0x7e, 0x3d, 0x82, 0xbb, 0x47, 0xd6, + 0x9e, 0x8b, 0x91, 0x82, 0xcc, 0xa6, 0xde, 0x1a, 0x1f, 0xcd, 0x5a, 0x9b, + 0x1a, 0xee, 0xed, 0x2d, 0x0b, 0xc8, 0xec, 0xa3, 0x29, 0xcf, 0x79, 0x7e, + 0xae, 0x1a, 0x9d, 0x57, 0x45, 0xd0, 0xb1, 0x0d, 0x46, 0xa6, 0x3c, 0x6e, + 0x79, 0xfd, 0x23, 0xc0, 0xe2, 0x63, 0xda, 0x3f, 0x22, 0x4a, 0x7b, 0xdf, + 0xdb, 0x6d, 0xb5, 0xc1, 0xb8, 0xd5, 0x9d, 0xb1, 0x2e, 0x7d, 0x9a, 0x44, + 0xf0, 0x03, 0x42, 0xc9, 0xeb, 0x9b, 0x33, 0xb1, 0xde, 0xec, 0xc7, 0x3b, + 0x65, 0x3f, 0xa4, 0x6b, 0x5b, 0xa0, 0x91, 0xfc, 0x9e, 0x0a, 0x9d, 0x43, + 0xd3, 0x6c, 0x1d, 0x7b, 0x9f, 0x32, 0xb3, 0x33, 0x3a, 0x86, 0x48, 0xcd, + 0x35, 0x3d, 0x95, 0xd7, 0x88, 0x00, 0xf5, 0x2d, 0xbb, 0xe8, 0x10, 0x79, + 0x82, 0x92, 0x9a, 0xfd, 0x37, 0xa7, 0x62, 0x66, 0xd5, 0xea, 0x9d, 0xee, + 0x33, 0x0e, 0x04, 0xc6, 0xa3, 0xcc, 0x05, 0xaf, 0x4e, 0x06, 0x0e, 0x2e, + 0xb5, 0x54, 0xc6, 0x38, 0x72, 0xf8, 0x97, 0x7f, 0x9c, 0x65, 0x04, 0x75, + 0x0c, 0x26, 0x56, 0xdf, 0xb3, 0xd8, 0xc7, 0x32, 0x3d, 0x8d, 0x64, 0x1f, + 0xc9, 0xc2, 0x06, 0x46, 0x49, 0xdb, 0xba, 0xd3, 0xa7, 0x2d, 0xa9, 0x87, + 0x53, 0xf1, 0xfe, 0xf4, 0x94, 0xd9, 0xbf, 0x35, 0x8c, 0x6c, 0xb4, 0x80, + 0xde, 0x37, 0x99, 0x93, 0xfd, 0x50, 0xb1, 0xf2, 0xba, 0x89, 0x0f, 0x00, + 0x92, 0x5c, 0x75, 0x03, 0x52, 0x7e, 0x70, 0xa3, 0x91, 0x7d, 0xb6, 0xb8, + 0x31, 0xb0, 0x6d, 0x70, 0xd0, 0x7e, 0x6b, 0x5b, 0xe3, 0xf0, 0x42, 0xaf, + 0x19, 0xf3, 0xb9, 0xda, 0xb9, 0xdc, 0x38, 0xfe, 0x2e, 0x49, 0x4a, 0x7e, + 0x65, 0xb7, 0x1d, 0xac, 0x10, 0xe1, 0xc9, 0x02, 0x1a, 0xdf, 0x3f, 0x8a, + 0x8d, 0x98, 0xa6, 0xff, 0x00, 0x75, 0xce, 0x36, 0xd8, 0x7f, 0x78, 0xc9, + 0xf9, 0xca, 0xb0, 0xc6, 0x35, 0xa2, 0x1a, 0x3d, 0xa0, 0xe8, 0x7f, 0x79, + 0xc9, 0xdb, 0xa9, 0x2d, 0xf9, 0x13, 0xf1, 0x49, 0x4d, 0x67, 0xe2, 0x3c, + 0xd4, 0x06, 0xf7, 0x12, 0xc3, 0xc3, 0x4c, 0x02, 0x3c, 0x17, 0x67, 0xd2, + 0xf2, 0xab, 0x77, 0x4f, 0xc7, 0x80, 0xe7, 0x6c, 0xac, 0x07, 0x69, 0xc1, + 0x68, 0x83, 0xc9, 0x5c, 0xb6, 0xe2, 0xdd, 0x46, 0xb0, 0x03, 0x5c, 0x3e, + 0x08, 0xb8, 0xb6, 0xbb, 0x12, 0xd6, 0xdb, 0x51, 0xfa, 0x1e, 0xe0, 0x3b, + 0x39, 0xa4, 0xfd, 0x12, 0x92, 0x9c, 0x6f, 0xae, 0x39, 0x2f, 0xbf, 0xad, + 0xdb, 0xaf, 0xb1, 0x8d, 0x6b, 0x18, 0x0f, 0x60, 0x44, 0xcf, 0xe2, 0xab, + 0xe1, 0xd4, 0xc8, 0x68, 0x1c, 0x00, 0xa7, 0xf5, 0x8c, 0x0b, 0xfa, 0xd1, + 0x7b, 0x34, 0x16, 0x06, 0x17, 0x34, 0x76, 0xd0, 0x23, 0x62, 0x54, 0xe0, + 0x7d, 0x8c, 0xdc, 0x07, 0x79, 0x01, 0x25, 0x36, 0x86, 0x23, 0x5c, 0xdd, + 0x10, 0x2e, 0xc0, 0x0e, 0x69, 0x95, 0xa1, 0x45, 0xdf, 0x98, 0xf6, 0x96, + 0x3a, 0x34, 0x07, 0xfd, 0x88, 0x79, 0x37, 0x10, 0x36, 0x31, 0x85, 0xee, + 0x3c, 0xc6, 0x9f, 0x89, 0x49, 0x4c, 0x3e, 0xa3, 0xe5, 0xb7, 0xa7, 0xf5, + 0xe7, 0x63, 0xd8, 0x61, 0x99, 0x75, 0x96, 0x01, 0xc0, 0x2f, 0x6f, 0xbd, + 0x9f, 0x90, 0xad, 0x8e, 0xbd, 0x95, 0x65, 0xde, 0xa9, 0xf0, 0x25, 0x71, + 0x99, 0xd5, 0xdd, 0x5d, 0x9e, 0xa4, 0x1a, 0xde, 0xd3, 0xb9, 0xae, 0x07, + 0x50, 0x47, 0x06, 0x42, 0xd9, 0xe8, 0xee, 0xea, 0x9d, 0x7a, 0x8b, 0x65, + 0xe0, 0x59, 0x56, 0xd0, 0xe7, 0x96, 0x98, 0x78, 0x3e, 0x24, 0x70, 0x74, + 0x49, 0x4d, 0x27, 0x12, 0xca, 0xdc, 0xf7, 0x9d, 0x3c, 0x4a, 0xcb, 0x73, + 0x8d, 0xd6, 0x6e, 0xfc, 0xd1, 0xf4, 0x7f, 0xbd, 0x1b, 0x37, 0x31, 0xd9, + 0x8e, 0x65, 0x4d, 0x1b, 0x2b, 0x61, 0x82, 0x27, 0xe9, 0x10, 0x79, 0x52, + 0xd9, 0x45, 0x5b, 0x5a, 0x09, 0x2e, 0x77, 0x03, 0x92, 0x92, 0x9e, 0xdb, + 0xea, 0x3b, 0xf1, 0xe9, 0xe9, 0x97, 0x93, 0xfc, 0xeb, 0xad, 0xf7, 0xfc, + 0x03, 0x46, 0xdf, 0xe2, 0xb7, 0x2d, 0xea, 0x0d, 0xe1, 0xbc, 0x2e, 0x0f, + 0xa3, 0x67, 0x5b, 0x82, 0xf7, 0xc5, 0x56, 0x59, 0x5d, 0xa2, 0x1c, 0x1a, + 0xd3, 0xa1, 0x1c, 0x15, 0xd0, 0x17, 0x75, 0x0b, 0x2b, 0x0f, 0x18, 0x96, + 0x00, 0xe1, 0x22, 0x76, 0x83, 0x07, 0xc8, 0xb9, 0x25, 0x37, 0xad, 0xea, + 0x5b, 0xa5, 0xad, 0xe7, 0xc5, 0x67, 0x65, 0xf5, 0x41, 0x4c, 0x97, 0x3a, + 0x4f, 0x80, 0x54, 0x6f, 0x3d, 0x54, 0x92, 0xd6, 0xe1, 0x5c, 0x47, 0x90, + 0x68, 0x1f, 0xf5, 0x45, 0x66, 0xdd, 0x57, 0x50, 0xdd, 0xfa, 0x4a, 0x0d, + 0x23, 0xb9, 0x7c, 0x93, 0xf9, 0x12, 0x52, 0x5c, 0xae, 0xaf, 0x91, 0x64, + 0x86, 0x12, 0x25, 0x54, 0xf5, 0xf2, 0x6c, 0x61, 0xad, 0xdc, 0x1e, 0x5c, + 0x51, 0x19, 0x8e, 0x79, 0x79, 0x94, 0x66, 0x0d, 0xb1, 0xa2, 0x4a, 0x63, + 0x45, 0x6d, 0x60, 0x10, 0x41, 0x77, 0xe7, 0x2b, 0x60, 0x38, 0x76, 0x22, + 0x35, 0x94, 0x31, 0x3e, 0x1a, 0xa2, 0x56, 0x0c, 0x77, 0xf9, 0x24, 0xa7, + 0x7b, 0xa7, 0xff, 0x00, 0x43, 0x27, 0xbe, 0xe7, 0x72, 0xad, 0xb5, 0xd2, + 0x07, 0x63, 0xe3, 0xda, 0x53, 0x60, 0x52, 0x2c, 0xc2, 0xa5, 0xf6, 0x13, + 0xb9, 0xed, 0x0e, 0x3b, 0x7d, 0xa3, 0x5f, 0x82, 0x31, 0xc7, 0xaa, 0x3b, + 0xe9, 0xc7, 0xb8, 0xff, 0x00, 0x7a, 0x4a, 0x47, 0xb9, 0xdf, 0x15, 0x2d, + 0x44, 0x0f, 0x14, 0xbe, 0xcb, 0x54, 0xce, 0xa6, 0x79, 0x97, 0x38, 0xff, + 0x00, 0x15, 0x5b, 0xa8, 0x30, 0xe3, 0xe2, 0xdf, 0x7b, 0x18, 0xc2, 0xd6, + 0x34, 0x16, 0x00, 0x0e, 0xe0, 0x7f, 0x38, 0x92, 0x4a, 0x4a, 0x6b, 0x75, + 0x1e, 0xb3, 0x56, 0x09, 0x73, 0x36, 0x17, 0xb9, 0xa2, 0x5d, 0xae, 0x82, + 0x7b, 0x2c, 0x1b, 0xbe, 0xb5, 0x67, 0x49, 0x73, 0x08, 0x6d, 0x3a, 0xb4, + 0x07, 0x01, 0xaa, 0xa7, 0x40, 0xcd, 0xeb, 0x59, 0x46, 0x9c, 0x66, 0x93, + 0x04, 0x97, 0x13, 0xc7, 0xcd, 0x1b, 0x2b, 0xa4, 0x57, 0x8d, 0x63, 0x59, + 0x7e, 0xe7, 0xbd, 0xbf, 0x20, 0x27, 0xc9, 0x25, 0x3a, 0x95, 0x7d, 0x76, + 0xc4, 0x73, 0x6b, 0x19, 0x35, 0x39, 0x96, 0xe9, 0xb9, 0xcc, 0x20, 0xb7, + 0xe2, 0xba, 0x1f, 0xda, 0xdd, 0x3b, 0xf6, 0x6f, 0xdb, 0x7e, 0xd0, 0xdf, + 0xb3, 0xff, 0x00, 0xa5, 0x9f, 0xce, 0xf0, 0xf1, 0x9f, 0x25, 0xe6, 0x7d, + 0x43, 0x1d, 0xcc, 0x2e, 0x1e, 0x99, 0x05, 0xa7, 0x43, 0xe0, 0x3c, 0xc2, + 0xad, 0x16, 0xfa, 0x5e, 0x9c, 0xbb, 0x67, 0xd2, 0xdb, 0x26, 0x26, 0x22, + 0x52, 0x53, 0xb1, 0x87, 0xd4, 0xf3, 0x33, 0xa8, 0xc8, 0xc6, 0xb9, 0xc0, + 0xd6, 0xd1, 0x5b, 0x40, 0x00, 0x09, 0x05, 0xe0, 0x6a, 0x97, 0x50, 0xa8, + 0x57, 0x94, 0xf6, 0x81, 0x03, 0x73, 0x60, 0x7c, 0x90, 0xfa, 0x35, 0x5e, + 0xdc, 0xa7, 0x70, 0x03, 0xa9, 0x13, 0xf1, 0x7a, 0xb1, 0xd5, 0xbf, 0xa5, + 0xc4, 0xce, 0xad, 0x49, 0x4b, 0x65, 0x32, 0xa0, 0x2a, 0x24, 0x48, 0xd9, + 0x2f, 0x8e, 0x4e, 0xaa, 0xf3, 0x31, 0x6d, 0xb9, 0xad, 0x77, 0xa8, 0xea, + 0x6b, 0x74, 0x38, 0x36, 0xb3, 0xb5, 0xc6, 0x47, 0xe7, 0x38, 0x7e, 0x45, + 0x50, 0xd7, 0xeb, 0x64, 0x63, 0xd3, 0x3f, 0x48, 0x37, 0x70, 0xf2, 0x26, + 0x7f, 0x22, 0xd9, 0x70, 0x82, 0x00, 0x10, 0x06, 0x89, 0x29, 0xab, 0xf6, + 0x1a, 0xcc, 0x97, 0x3e, 0xd3, 0xe6, 0x6c, 0x77, 0xf7, 0xa4, 0x70, 0x31, + 0xb6, 0x8d, 0xe0, 0xd9, 0xb4, 0xcb, 0x43, 0xdc, 0x5c, 0x01, 0x3c, 0xc4, + 0x95, 0x60, 0x19, 0x9e, 0xe4, 0xf2, 0x98, 0x91, 0xa0, 0x49, 0x48, 0xc6, + 0x2d, 0x03, 0x50, 0xc0, 0x08, 0xe0, 0x8d, 0x35, 0x42, 0x7e, 0x33, 0x46, + 0xe2, 0xc7, 0x16, 0x92, 0x7b, 0xeb, 0xf9, 0x51, 0xdd, 0x64, 0x02, 0xa0, + 0x74, 0xf9, 0x0f, 0xc5, 0x25, 0x22, 0x65, 0x5b, 0x0b, 0x8c, 0xcb, 0x9e, + 0x43, 0x67, 0xc8, 0x6a, 0x52, 0xf5, 0x7d, 0x33, 0x0e, 0xfa, 0x2e, 0xe0, + 0xfe, 0xe8, 0x1c, 0xa3, 0x0d, 0x00, 0x91, 0xf4, 0x04, 0x9f, 0x89, 0x55, + 0xb3, 0x69, 0x73, 0xab, 0x96, 0xea, 0x34, 0xde, 0xdf, 0x89, 0x49, 0x49, + 0x4c, 0x38, 0x7b, 0x48, 0xf4, 0xf8, 0x6f, 0x9e, 0x8a, 0x0c, 0x3a, 0x9f, + 0x88, 0x54, 0xf0, 0x72, 0xdc, 0xed, 0xf8, 0xcf, 0x31, 0x63, 0x0c, 0x80, + 0x7c, 0x01, 0x84, 0x76, 0x58, 0x43, 0xe0, 0x69, 0x32, 0x3e, 0xe4, 0x94, + 0xd9, 0xac, 0x48, 0x79, 0x3c, 0x7f, 0x73, 0x8a, 0x89, 0x26, 0x0b, 0x7b, + 0xb4, 0x90, 0x3e, 0x1c, 0xa8, 0xe3, 0x3b, 0x71, 0x78, 0xef, 0x2f, 0x1f, + 0x8a, 0x9c, 0x6e, 0x71, 0x8e, 0xee, 0x1a, 0x79, 0x10, 0x92, 0x9c, 0x7c, + 0xe6, 0x91, 0xd4, 0xab, 0xb2, 0x24, 0x5a, 0xc9, 0x93, 0xd8, 0xb4, 0x16, + 0xa3, 0x63, 0xe1, 0xb3, 0x21, 0xb2, 0xe7, 0xb8, 0x6a, 0x22, 0x0f, 0x82, + 0x97, 0x54, 0xa6, 0xd6, 0x1a, 0xb2, 0x43, 0x37, 0x55, 0x49, 0x15, 0xda, + 0xef, 0xdc, 0xf5, 0x0f, 0xb4, 0xfd, 0xe1, 0x3f, 0x4c, 0xb4, 0x34, 0xed, + 0x77, 0x64, 0x94, 0xde, 0xae, 0xb0, 0xc7, 0xfb, 0x5a, 0x26, 0x3d, 0xac, + 0x1e, 0x00, 0x44, 0xaa, 0xf9, 0x2c, 0x17, 0xcb, 0x6d, 0x91, 0x07, 0x58, + 0xe4, 0x2b, 0x22, 0xe0, 0xdb, 0x03, 0x98, 0xef, 0x74, 0xc9, 0x00, 0x03, + 0x23, 0xc0, 0xca, 0x1e, 0x45, 0xe5, 0xd6, 0x17, 0x58, 0x35, 0x26, 0x64, + 0x81, 0x31, 0xe1, 0xa0, 0x09, 0x29, 0xcb, 0xca, 0xa8, 0x03, 0x0d, 0xfe, + 0x6c, 0xf6, 0xf0, 0x85, 0xd7, 0xfd, 0x4c, 0xa1, 0x87, 0xa0, 0x34, 0x81, + 0x02, 0xf7, 0x59, 0xbe, 0x39, 0x12, 0x76, 0x9f, 0xba, 0x17, 0x3b, 0xf6, + 0x5f, 0xb6, 0x66, 0xd3, 0x89, 0x51, 0x87, 0x5e, 0xed, 0x80, 0xf3, 0x13, + 0xc9, 0xf9, 0x05, 0xdd, 0xe3, 0xe0, 0xe1, 0xe1, 0x51, 0x5e, 0x2d, 0x0c, + 0x6b, 0x2a, 0xac, 0x6d, 0x60, 0xf1, 0x3c, 0x9e, 0x79, 0x27, 0x94, 0x94, + 0xf9, 0x56, 0x4e, 0x05, 0xdd, 0x37, 0x32, 0xdc, 0x4c, 0x86, 0x96, 0xbe, + 0xa7, 0x44, 0x1e, 0xed, 0x3f, 0x45, 0xc3, 0xc8, 0x85, 0xd1, 0x7d, 0x52, + 0xe9, 0x95, 0x75, 0x0c, 0xa7, 0x3b, 0x22, 0xb1, 0xb1, 0xe0, 0xb6, 0xb7, + 0x91, 0xa8, 0x2d, 0x05, 0xd2, 0xcf, 0xe2, 0xa7, 0xf5, 0xcb, 0xa7, 0xdb, + 0x7f, 0x5a, 0xc4, 0x6b, 0x18, 0x19, 0x5d, 0x94, 0xc7, 0xa8, 0x07, 0x3b, + 0x5c, 0x77, 0x4f, 0xc2, 0x42, 0xea, 0x3e, 0xac, 0x61, 0xe3, 0xd5, 0x8e, + 0xdb, 0x5b, 0xa1, 0xaa, 0x58, 0xd6, 0x8f, 0x00, 0x21, 0x25, 0x33, 0xc7, + 0xfa, 0xb9, 0xe9, 0x38, 0x07, 0xb9, 0xa5, 0xa3, 0x92, 0x24, 0x9f, 0xb8, + 0xe8, 0xb6, 0x99, 0x45, 0x35, 0xb0, 0x56, 0xd6, 0x0d, 0xad, 0x10, 0x04, + 0x05, 0x30, 0x41, 0x00, 0x8e, 0x0a, 0x62, 0x61, 0xc3, 0xc2, 0x12, 0x52, + 0xc2, 0xaa, 0xc6, 0xbb, 0x1a, 0x0f, 0xc0, 0x2c, 0xbc, 0xd6, 0x51, 0x66, + 0x49, 0xae, 0xc6, 0x07, 0x6d, 0x6b, 0x9c, 0xe1, 0x1c, 0xc3, 0x4c, 0x2d, + 0x50, 0x75, 0x3e, 0x4b, 0x2f, 0x2d, 0xbf, 0xae, 0xbd, 0xe7, 0x40, 0x2a, + 0x71, 0x3e, 0x7a, 0x42, 0x4a, 0x72, 0xd9, 0xd1, 0xf1, 0x32, 0x2b, 0x61, + 0x03, 0x63, 0xde, 0xe2, 0x3c, 0xbe, 0x2a, 0x95, 0xdd, 0x1d, 0xac, 0xbe, + 0xea, 0x59, 0x2f, 0x35, 0x1e, 0x47, 0x84, 0x05, 0xbf, 0xd2, 0xeb, 0x69, + 0xda, 0xe3, 0xae, 0xd2, 0xed, 0x3e, 0x03, 0xfd, 0xaa, 0x96, 0x55, 0x39, + 0x0d, 0xb2, 0xcc, 0x97, 0xb0, 0xb5, 0x96, 0xb8, 0x8d, 0xd3, 0xe3, 0xdb, + 0x44, 0x94, 0xe2, 0x3f, 0x05, 0xa0, 0x8d, 0xa4, 0x9f, 0x88, 0x51, 0x76, + 0x35, 0x95, 0x82, 0xe1, 0xee, 0x68, 0x1a, 0xc7, 0x30, 0xb4, 0x9c, 0xc0, + 0xe0, 0x4f, 0x70, 0x9b, 0x4d, 0xa3, 0xc9, 0x25, 0x37, 0x7a, 0x63, 0xec, + 0x18, 0x14, 0x8f, 0x4d, 0xce, 0x21, 0xa5, 0xb3, 0xa0, 0xd0, 0x13, 0x1c, + 0x95, 0x64, 0xbe, 0xcf, 0xf4, 0x67, 0xef, 0x6f, 0xf7, 0xa8, 0x60, 0xbe, + 0x71, 0xc3, 0x4f, 0xe6, 0x92, 0xd1, 0x1e, 0x1d, 0x91, 0x8f, 0x10, 0x92, + 0x98, 0x6e, 0x71, 0x00, 0x6c, 0x20, 0xf7, 0xd4, 0x20, 0xe6, 0xb4, 0xdb, + 0x89, 0x6b, 0x1c, 0xd3, 0xf4, 0x49, 0x80, 0xee, 0x63, 0xc5, 0x59, 0xf3, + 0x48, 0xf0, 0x41, 0xe0, 0xa4, 0xa7, 0x1b, 0x05, 0xd8, 0x1d, 0x2b, 0x26, + 0xea, 0x31, 0x60, 0xdb, 0xe9, 0xd7, 0x65, 0xcf, 0x77, 0x0d, 0x75, 0x87, + 0x6c, 0x08, 0xf3, 0xfc, 0xab, 0x2b, 0xad, 0x67, 0x43, 0x9e, 0xfa, 0x00, + 0xb6, 0xf0, 0x64, 0xc6, 0xbb, 0x48, 0xee, 0x47, 0x92, 0x6e, 0xbf, 0x55, + 0x95, 0x9c, 0x90, 0xf0, 0x6b, 0x76, 0x55, 0x94, 0x80, 0xe1, 0xc3, 0x59, + 0x5b, 0x4c, 0x38, 0xbb, 0xc3, 0x7c, 0x15, 0x1f, 0xab, 0xb8, 0x65, 0xb6, + 0xfe, 0xd9, 0xbd, 0xec, 0x6d, 0x6c, 0x0f, 0xaa, 0x01, 0x2e, 0xf5, 0x2c, + 0x07, 0x6b, 0x9d, 0xaf, 0x62, 0x92, 0x9a, 0x58, 0xbd, 0x17, 0xa8, 0x66, + 0xd4, 0xec, 0xeb, 0x03, 0xab, 0xa4, 0x33, 0x73, 0x8b, 0x8f, 0xb9, 0xee, + 0xf2, 0x54, 0xb6, 0x53, 0xbb, 0xd5, 0xef, 0x11, 0x1d, 0xa7, 0xc6, 0x3e, + 0x0b, 0x67, 0x37, 0xaa, 0x5f, 0x56, 0x4e, 0x47, 0xd8, 0xaa, 0xb0, 0xf4, + 0xc7, 0x92, 0xd7, 0xba, 0xc2, 0x58, 0xc6, 0x91, 0xd9, 0xbb, 0xbb, 0xa8, + 0xfd, 0x94, 0x7e, 0xdb, 0xe0, 0x7f, 0x40, 0xdd, 0xe9, 0x48, 0x9d, 0xfe, + 0x84, 0x6d, 0xdb, 0xe3, 0xe4, 0x92, 0x9a, 0x5d, 0x11, 0x80, 0xd7, 0x98, + 0x38, 0x05, 0xd4, 0xe9, 0xe7, 0xea, 0x23, 0xf5, 0x9a, 0x9a, 0x72, 0x01, + 0x88, 0x3b, 0x04, 0x79, 0xea, 0x75, 0x40, 0xe9, 0x1b, 0x9b, 0x5e, 0x43, + 0xb8, 0x05, 0xf4, 0x8f, 0xfa, 0x6a, 0xdf, 0x54, 0x61, 0x7e, 0x75, 0x75, + 0x83, 0x25, 0xc1, 0x8d, 0x1f, 0x32, 0x92, 0x90, 0xd7, 0x53, 0x9b, 0xd7, + 0xd8, 0xd2, 0x20, 0x32, 0xa6, 0x38, 0xfc, 0xab, 0xff, 0x00, 0x6a, 0xe8, + 0xe8, 0xe9, 0x39, 0xf9, 0x7b, 0x5c, 0xca, 0xcb, 0x58, 0xed, 0x43, 0xdf, + 0xa3, 0x63, 0xc5, 0x66, 0x7d, 0x8d, 0xcd, 0xea, 0xb9, 0x19, 0x67, 0xe8, + 0x10, 0xda, 0xea, 0xf9, 0x35, 0xa1, 0xcb, 0xd0, 0x2a, 0x68, 0xae, 0x96, + 0x30, 0x7e, 0x6b, 0x40, 0xfb, 0x82, 0x4a, 0x71, 0x2b, 0xfa, 0xaf, 0x4b, + 0x58, 0x7d, 0x5b, 0x9c, 0x5e, 0x7b, 0xb0, 0x00, 0x07, 0xde, 0x81, 0x67, + 0xd5, 0xba, 0x5a, 0x4b, 0x8e, 0x43, 0x88, 0x1c, 0xe8, 0x16, 0xfd, 0xaf, + 0x80, 0x55, 0x3b, 0x5e, 0x60, 0xcf, 0x00, 0xeb, 0x29, 0x29, 0xc1, 0xea, + 0x1d, 0x31, 0x95, 0xd6, 0x05, 0x2d, 0x97, 0xb6, 0x1d, 0xa7, 0x26, 0x67, + 0x4f, 0xc1, 0x66, 0x9a, 0x2e, 0xd8, 0x5d, 0xb0, 0xed, 0x04, 0x02, 0x7c, + 0xfc, 0x16, 0xbe, 0x51, 0xb1, 0xd9, 0xad, 0x61, 0x31, 0x58, 0x6f, 0xd2, + 0xf8, 0x13, 0x2b, 0x1c, 0xde, 0x5e, 0x76, 0xb3, 0xdb, 0x59, 0x71, 0x73, + 0x5b, 0xfe, 0xbe, 0x49, 0x29, 0x68, 0x7e, 0x8d, 0x23, 0xbc, 0x91, 0xf0, + 0x51, 0x25, 0xc4, 0xb4, 0x11, 0xa1, 0x3b, 0x9d, 0xf0, 0x1c, 0x22, 0x36, + 0x0e, 0xb3, 0xcf, 0x1f, 0x00, 0x81, 0x7d, 0xe1, 0x8d, 0x27, 0xb9, 0x1a, + 0x01, 0xe1, 0xd9, 0x25, 0x39, 0xdd, 0x41, 0x82, 0xab, 0x19, 0x98, 0x04, + 0x58, 0xd1, 0xb9, 0xf1, 0xdc, 0x38, 0xf0, 0x7e, 0x48, 0x82, 0xe6, 0x3d, + 0xf5, 0x3d, 0x9a, 0xb2, 0xcd, 0x41, 0xf3, 0x54, 0xba, 0x9d, 0xd9, 0x0e, + 0x9a, 0x76, 0x92, 0x63, 0x79, 0x77, 0x68, 0x40, 0xe9, 0x56, 0x18, 0x73, + 0x6d, 0x7c, 0x06, 0x19, 0x13, 0xcb, 0x4c, 0x11, 0xf9, 0x4a, 0x4a, 0x77, + 0x31, 0x64, 0x5e, 0x5b, 0xfc, 0xa3, 0xf8, 0x84, 0x5a, 0xde, 0x7d, 0x4d, + 0xa7, 0xbc, 0x7f, 0xaf, 0xe0, 0xab, 0xe3, 0x97, 0x3a, 0xd0, 0xf6, 0x34, + 0xba, 0x40, 0x97, 0x70, 0x37, 0x77, 0x47, 0x6b, 0x0b, 0x7d, 0xce, 0xb1, + 0xa1, 0xda, 0xf9, 0xea, 0x52, 0x52, 0x77, 0x60, 0x65, 0xf5, 0x36, 0xbf, + 0x03, 0x1a, 0xc6, 0x55, 0x5e, 0x40, 0x6f, 0xda, 0x5e, 0xf1, 0x24, 0x57, + 0x5b, 0xb7, 0x7b, 0x07, 0x8c, 0xc2, 0xcf, 0xea, 0xfd, 0x3b, 0xf6, 0x3f, + 0x52, 0xf4, 0x1a, 0xf2, 0xea, 0x5e, 0xd0, 0xfa, 0xde, 0x62, 0x48, 0x3a, + 0x1d, 0xd1, 0xde, 0x42, 0xb4, 0x3a, 0xd1, 0xe9, 0x2c, 0x7d, 0xcd, 0xab, + 0xd7, 0xb1, 0xe3, 0x6b, 0x5c, 0x7d, 0xa1, 0x91, 0xdc, 0xf7, 0x21, 0x73, + 0x3d, 0x47, 0xac, 0x66, 0x75, 0x0c, 0xbf, 0xb4, 0xe4, 0xbf, 0x7b, 0xe3, + 0x68, 0x03, 0x46, 0x86, 0xf8, 0x00, 0x92, 0x9d, 0x7a, 0xde, 0x5d, 0xb8, + 0x34, 0x17, 0x3c, 0x6a, 0xd0, 0x1d, 0xb4, 0x7c, 0xd0, 0x6b, 0xab, 0x21, + 0x96, 0x39, 0xf9, 0x16, 0x97, 0x49, 0x9f, 0x4c, 0x19, 0x68, 0xfb, 0xd5, + 0x6c, 0x5c, 0x9a, 0x5c, 0x35, 0x78, 0x1e, 0x47, 0x42, 0x9b, 0x37, 0xa8, + 0x56, 0xd6, 0xec, 0xa1, 0xdb, 0x9c, 0x74, 0x91, 0xc0, 0x49, 0x4f, 0x43, + 0xd3, 0x7a, 0x23, 0xfa, 0x86, 0x3b, 0x73, 0xd9, 0x99, 0x66, 0x25, 0x8d, + 0x7b, 0x85, 0x4e, 0xab, 0x90, 0x1b, 0xed, 0x3a, 0xe8, 0xae, 0x8f, 0xab, + 0x34, 0x31, 0xf5, 0xdf, 0x46, 0x6e, 0x43, 0x72, 0x6a, 0x78, 0xb1, 0xb7, + 0x3d, 0xde, 0xa7, 0xbc, 0x7e, 0x76, 0xd7, 0x68, 0xb9, 0x9e, 0x91, 0xd4, + 0x3a, 0xb6, 0x13, 0x21, 0x96, 0xb9, 0x94, 0x09, 0x2d, 0xa5, 0xda, 0xb6, + 0x4e, 0xa4, 0xc1, 0x5b, 0x14, 0xfd, 0x64, 0xca, 0x00, 0x8b, 0xd8, 0xdb, + 0x1a, 0x78, 0x23, 0xda, 0xe1, 0x1f, 0x81, 0x49, 0x4e, 0x9e, 0x6e, 0x5e, + 0x45, 0xe6, 0xaa, 0xb2, 0xf6, 0x9b, 0x28, 0xdc, 0xe7, 0x96, 0x08, 0x06, + 0x4e, 0xd6, 0x98, 0x93, 0x12, 0x04, 0xc2, 0xe8, 0x3a, 0x65, 0xf8, 0xc2, + 0x8a, 0xe8, 0xac, 0x7a, 0x61, 0x82, 0x4f, 0x8b, 0xc9, 0xe4, 0xfc, 0xd7, + 0x31, 0x5d, 0xac, 0xc8, 0xdd, 0x93, 0x6c, 0xcd, 0x90, 0x4b, 0x47, 0x03, + 0xc0, 0x2b, 0x74, 0x64, 0xd8, 0x1e, 0xd8, 0x1b, 0x76, 0x10, 0x63, 0xc1, + 0x25, 0x3d, 0x83, 0x09, 0x2d, 0x13, 0xca, 0x4f, 0x80, 0x27, 0xc1, 0x56, + 0xc2, 0xbc, 0x5b, 0x5e, 0x9c, 0xf2, 0xac, 0xb8, 0x4b, 0x48, 0x49, 0x4c, + 0x43, 0xa5, 0xbb, 0x87, 0x75, 0x99, 0x9e, 0x5c, 0x2e, 0xb1, 0xc3, 0xe8, + 0x9a, 0xf6, 0xcf, 0x99, 0x2b, 0x49, 0xb0, 0x2b, 0xfc, 0x8b, 0x3b, 0xab, + 0x37, 0x6b, 0x19, 0x1c, 0xb8, 0xeb, 0xf2, 0x49, 0x4c, 0xba, 0x40, 0x1b, + 0x5e, 0x7b, 0x83, 0xfc, 0x14, 0x7a, 0xc5, 0xb1, 0x8b, 0xe9, 0x00, 0x3f, + 0x48, 0x34, 0x9e, 0xc7, 0x90, 0xa1, 0xd2, 0xdf, 0xb7, 0x23, 0x6f, 0x01, + 0xe0, 0x8f, 0x98, 0x43, 0xeb, 0x66, 0x2f, 0x68, 0xe6, 0x58, 0x34, 0xf8, + 0x4a, 0x4a, 0x72, 0x2b, 0xc9, 0x22, 0x43, 0x81, 0x12, 0x36, 0x90, 0x46, + 0x9a, 0xa4, 0x0c, 0x46, 0xb3, 0x3a, 0x7d, 0xea, 0x6c, 0xb1, 0xac, 0x6c, + 0xbb, 0x56, 0x4c, 0x13, 0xe1, 0xf1, 0x52, 0x6b, 0x28, 0x25, 0xce, 0x68, + 0x07, 0xc0, 0x1e, 0x12, 0x53, 0x3a, 0x4c, 0x92, 0x09, 0x20, 0x79, 0x12, + 0x3f, 0x22, 0x30, 0x6b, 0x00, 0xef, 0xfe, 0x73, 0xbf, 0xbd, 0x56, 0xa8, + 0x90, 0xf2, 0x07, 0xb8, 0x89, 0x1c, 0xc7, 0x05, 0x18, 0xfa, 0x84, 0xff, + 0x00, 0x37, 0xff, 0x00, 0x4e, 0x3f, 0x82, 0x4a, 0x67, 0xb1, 0x8e, 0x1a, + 0x82, 0x62, 0x7b, 0x9f, 0xef, 0x49, 0xb5, 0x56, 0x4c, 0x16, 0xc8, 0xfb, + 0xd3, 0x03, 0x60, 0xd3, 0x60, 0x1e, 0x3e, 0xff, 0x00, 0xfc, 0xc5, 0x38, + 0x75, 0x83, 0xf3, 0x1b, 0xfe, 0x71, 0xff, 0x00, 0xc8, 0xa4, 0xa5, 0xee, + 0xe9, 0x8e, 0xcc, 0xa4, 0xd7, 0x5d, 0x4c, 0xda, 0x60, 0x17, 0xbc, 0xc3, + 0x40, 0xfb, 0x8e, 0xa1, 0x73, 0xf9, 0xdd, 0x3f, 0x2f, 0xa6, 0x17, 0x36, + 0x86, 0xfb, 0x58, 0x77, 0x5b, 0x4b, 0xa7, 0x61, 0x23, 0xf3, 0x87, 0xc5, + 0x77, 0xf5, 0x52, 0xda, 0x68, 0x6d, 0x4d, 0x00, 0x40, 0xd7, 0xb8, 0x24, + 0xf3, 0x3f, 0x15, 0x8d, 0xd7, 0x5e, 0x19, 0x87, 0x93, 0x63, 0x07, 0x0c, + 0x0d, 0x04, 0xf9, 0x03, 0x21, 0x25, 0x38, 0xcd, 0x75, 0x35, 0xe2, 0xb3, + 0xaa, 0xfd, 0x61, 0x68, 0x36, 0xbb, 0xdf, 0x8b, 0x84, 0x4c, 0x86, 0xc7, + 0x0f, 0x70, 0xf1, 0x77, 0xe4, 0x5c, 0xc7, 0xed, 0x47, 0x7e, 0xd6, 0xfd, + 0xa7, 0x1f, 0xa4, 0xf5, 0x37, 0xed, 0x9e, 0xd3, 0xf4, 0x67, 0xe0, 0xb5, + 0xfe, 0xb9, 0x35, 0xd7, 0x37, 0x17, 0x31, 0x8e, 0x9a, 0xec, 0xad, 0xa5, + 0x8d, 0xec, 0x25, 0xb2, 0xb2, 0x3f, 0x60, 0xdd, 0xfc, 0xef, 0xda, 0x19, + 0xf6, 0x5f, 0x4f, 0x7f, 0xab, 0xde, 0x62, 0x76, 0xed, 0x49, 0x4e, 0x8f, + 0x47, 0xc3, 0x7b, 0xdb, 0x7b, 0x00, 0xd4, 0x5b, 0x53, 0x4c, 0xf6, 0xf7, + 0x15, 0x6f, 0x39, 0x82, 0xae, 0xb7, 0x40, 0x7c, 0x34, 0x34, 0xd7, 0x24, + 0xf1, 0x3d, 0x96, 0x87, 0x43, 0x6e, 0x38, 0xc6, 0x7e, 0x45, 0x41, 0xcf, + 0xb8, 0xda, 0xd3, 0x91, 0x58, 0x83, 0xa3, 0x0f, 0xb5, 0xcd, 0x0a, 0xbf, + 0x5a, 0xe9, 0x99, 0xd9, 0xfd, 0x40, 0xde, 0xca, 0xf6, 0x54, 0x76, 0x00, + 0xe7, 0x10, 0x3b, 0x44, 0xc2, 0x4a, 0x5f, 0x31, 0xd1, 0x7d, 0x91, 0xd9, + 0xcb, 0xb4, 0xa5, 0xe2, 0xcc, 0x7a, 0xde, 0x0c, 0x87, 0x30, 0x19, 0xf9, + 0x2e, 0x0d, 0xe4, 0x8d, 0x1c, 0x77, 0x38, 0x68, 0x49, 0xee, 0x42, 0xd4, + 0xe9, 0x1f, 0x58, 0x3e, 0xce, 0xdf, 0xb2, 0xe5, 0x1f, 0xd1, 0xc1, 0xf4, + 0xdd, 0xfb, 0xbe, 0x45, 0x25, 0x3d, 0x15, 0xa4, 0x10, 0xb3, 0xf2, 0x6e, + 0x0c, 0x69, 0x25, 0xd1, 0xac, 0x23, 0x9b, 0xd9, 0x63, 0x03, 0xd8, 0xe0, + 0xe0, 0x78, 0x20, 0xac, 0xcc, 0xdb, 0x1a, 0x20, 0x9e, 0x09, 0xd4, 0x24, + 0xa7, 0x37, 0x3f, 0x39, 0xcf, 0x6d, 0x81, 0x90, 0x03, 0x86, 0xc0, 0x47, + 0x87, 0x1f, 0xc5, 0x67, 0x87, 0x47, 0x03, 0x81, 0x01, 0x4e, 0xff, 0x00, + 0x75, 0xb6, 0x10, 0x46, 0xd6, 0x1f, 0xca, 0x84, 0xd9, 0x3b, 0x47, 0x8e, + 0xa9, 0x29, 0x99, 0xd0, 0x10, 0x0f, 0x02, 0x12, 0x15, 0x37, 0x41, 0x12, + 0xe8, 0x0d, 0x9f, 0xca, 0x90, 0x83, 0x03, 0xce, 0x53, 0xcc, 0x00, 0x4f, + 0x83, 0x9d, 0xf7, 0xa4, 0xa6, 0x87, 0x54, 0x7b, 0x45, 0x2f, 0x2c, 0xd0, + 0x36, 0x77, 0x1f, 0x21, 0xa4, 0x2e, 0x7b, 0x12, 0xc7, 0xd2, 0xef, 0x51, + 0xb0, 0xe1, 0xc3, 0x9a, 0x55, 0xee, 0xb5, 0x6d, 0xbe, 0xca, 0xc1, 0x8a, + 0x8f, 0x3f, 0xca, 0x70, 0x03, 0x55, 0x9e, 0xc6, 0x38, 0xb3, 0x70, 0x69, + 0x81, 0xa9, 0x78, 0xd6, 0x07, 0x9a, 0x4a, 0x76, 0xdb, 0xd5, 0x71, 0x80, + 0x00, 0xb9, 0xd7, 0x11, 0xf9, 0x8d, 0xf6, 0x34, 0x7c, 0x51, 0x3f, 0x6b, + 0xdd, 0x11, 0x55, 0x55, 0xd7, 0xe7, 0x1b, 0x8f, 0xf0, 0x59, 0x37, 0xed, + 0x6d, 0x78, 0xe3, 0x63, 0x43, 0xc8, 0x2e, 0x75, 0x8d, 0x74, 0xef, 0x04, + 0xe9, 0x23, 0xb4, 0x22, 0x31, 0xd2, 0x12, 0x53, 0x66, 0xcc, 0xdc, 0x8b, + 0xed, 0x0d, 0xb9, 0xc1, 0xcd, 0xe4, 0x40, 0x02, 0x0f, 0xc9, 0x39, 0xe9, + 0x98, 0xf7, 0x8f, 0xa3, 0xb5, 0xdf, 0xbc, 0xdd, 0x15, 0x76, 0x98, 0xbe, + 0xb3, 0xfc, 0xa0, 0x3e, 0xf5, 0xb6, 0xca, 0xf6, 0x00, 0x7b, 0x0e, 0x7e, + 0x05, 0x25, 0x3c, 0xd3, 0xf0, 0x2f, 0x6b, 0xdd, 0x58, 0xad, 0xc4, 0x82, + 0x40, 0xd3, 0x94, 0xe7, 0xa6, 0xe5, 0x34, 0x07, 0x3d, 0xbb, 0x07, 0x89, + 0x23, 0xf8, 0x2e, 0x91, 0xd5, 0x43, 0x89, 0x1a, 0xce, 0xa9, 0xac, 0xa0, + 0x39, 0x81, 0xae, 0x1c, 0x6b, 0x09, 0x29, 0xa9, 0x53, 0xc5, 0xb8, 0xed, + 0x93, 0xef, 0x00, 0x07, 0x4f, 0x88, 0xd2, 0x52, 0xb9, 0x9b, 0x04, 0x81, + 0xca, 0x3d, 0x38, 0xa3, 0x60, 0x2d, 0xe4, 0x38, 0x83, 0xf0, 0x0a, 0x39, + 0x22, 0x2c, 0xa9, 0x9d, 0x8b, 0xda, 0x3f, 0x10, 0x92, 0x9d, 0x6c, 0x79, + 0x15, 0xb3, 0x4d, 0x06, 0x92, 0x39, 0x95, 0x72, 0x8a, 0x8b, 0x75, 0x23, + 0xbe, 0xba, 0xa5, 0x50, 0x0d, 0x05, 0xba, 0x68, 0x65, 0x16, 0xbd, 0x79, + 0xe4, 0xa4, 0xa7, 0x47, 0x0e, 0xf3, 0x4b, 0xda, 0xe0, 0x74, 0x3a, 0x38, + 0x79, 0x15, 0xba, 0x08, 0x70, 0x07, 0xb1, 0x12, 0xb9, 0x96, 0x92, 0xd6, + 0x6b, 0xcc, 0xe8, 0xba, 0x2c, 0x53, 0x38, 0xd5, 0x13, 0xdd, 0xa3, 0xf2, + 0x24, 0xa6, 0x51, 0x3a, 0x76, 0x0a, 0x87, 0x55, 0x6c, 0xed, 0xd2, 0x64, + 0x40, 0x1e, 0x6b, 0x41, 0xbe, 0x6a, 0xbe, 0x43, 0x37, 0xd8, 0x67, 0xb4, + 0x1f, 0xb9, 0x25, 0x39, 0x78, 0x6f, 0xd9, 0x93, 0x51, 0xfe, 0x50, 0x07, + 0xe7, 0xa2, 0x7e, 0xb4, 0x27, 0x21, 0x8e, 0xe4, 0x39, 0xa2, 0x3e, 0x45, + 0x56, 0x0e, 0x2c, 0x76, 0xe1, 0xa1, 0x6b, 0xa4, 0x7d, 0xea, 0xe6, 0x70, + 0x6d, 0xf8, 0xf5, 0x5d, 0x5e, 0xbb, 0x01, 0x0e, 0xf2, 0x04, 0xa4, 0xa7, + 0x2c, 0xb2, 0x0c, 0x8d, 0x27, 0x92, 0x3b, 0xa4, 0x1b, 0x13, 0xa6, 0x9c, + 0xa2, 0x48, 0xff, 0x00, 0x62, 0x5d, 0xa1, 0x25, 0x23, 0xc7, 0x11, 0x60, + 0x10, 0x4e, 0x84, 0xfe, 0x2a, 0xc0, 0x9f, 0x04, 0x06, 0x34, 0x17, 0x71, + 0x30, 0x22, 0x11, 0x0d, 0x40, 0x92, 0x40, 0x68, 0x3e, 0x30, 0x92, 0x92, + 0xc7, 0x88, 0xec, 0x96, 0xa0, 0x8d, 0x35, 0x41, 0xf4, 0xda, 0x22, 0x5a, + 0xd3, 0xf2, 0x0a, 0x40, 0x31, 0xdf, 0xe0, 0x9a, 0x0f, 0x13, 0xb4, 0x24, + 0xa7, 0xa1, 0xb2, 0xc0, 0xec, 0x51, 0x61, 0x21, 0xad, 0x73, 0x64, 0x9f, + 0x88, 0x5c, 0xdf, 0x57, 0x71, 0x6f, 0x4a, 0xb6, 0x5f, 0xbf, 0x7e, 0xe3, + 0xb8, 0xe8, 0x4f, 0x82, 0xd0, 0xa7, 0x2a, 0xd6, 0x63, 0x7a, 0x2c, 0x81, + 0xb6, 0x40, 0x31, 0xae, 0xbd, 0x82, 0xc9, 0xfa, 0xc9, 0x6e, 0xce, 0x9e, + 0xe6, 0x93, 0x26, 0x35, 0x29, 0x29, 0xce, 0xc8, 0xac, 0xe6, 0xfd, 0x56, + 0xc4, 0x78, 0xd5, 0xf5, 0x34, 0xb6, 0x7f, 0xa8, 0xe2, 0xdf, 0xe0, 0xb2, + 0xbe, 0xdd, 0x4f, 0xec, 0x4f, 0xb3, 0x47, 0xeb, 0x5b, 0xf6, 0xcf, 0x7d, + 0x9c, 0xad, 0xcf, 0xab, 0xaf, 0xae, 0xfe, 0x83, 0xe8, 0xfe, 0x75, 0x6f, + 0x7b, 0x5d, 0xfd, 0xa3, 0xb8, 0x2e, 0x77, 0xec, 0x4e, 0xfd, 0xa9, 0xe8, + 0x46, 0x9b, 0xb7, 0x7c, 0x92, 0x53, 0xa1, 0xf5, 0x67, 0x2b, 0x25, 0xbd, + 0x5a, 0xba, 0xab, 0x21, 0x8d, 0x35, 0x96, 0xb8, 0xb8, 0x12, 0x3c, 0x75, + 0xe3, 0xb8, 0x5d, 0x95, 0xa3, 0x21, 0xd0, 0x7d, 0x40, 0xf3, 0x30, 0x18, + 0x1a, 0x00, 0x33, 0xf7, 0x95, 0xc3, 0xd3, 0x92, 0xec, 0x0c, 0x86, 0xbc, + 0x19, 0x71, 0x20, 0xb1, 0xde, 0x03, 0xb8, 0x5d, 0x7f, 0xd5, 0xb6, 0x63, + 0xe6, 0xe4, 0xdb, 0xd4, 0x9f, 0x59, 0x37, 0xb5, 0xde, 0x9b, 0x6c, 0x71, + 0x27, 0xdd, 0xb7, 0xdf, 0x03, 0x40, 0x34, 0x80, 0x92, 0x9e, 0x7a, 0xf7, + 0xc1, 0x74, 0x8e, 0xe7, 0xe1, 0xca, 0xa8, 0xe2, 0xe8, 0xf7, 0x38, 0x13, + 0xcc, 0x85, 0xad, 0xd6, 0xf0, 0x1f, 0x56, 0x4d, 0xce, 0x68, 0x8c, 0x72, + 0xe2, 0x01, 0x1a, 0x8f, 0x82, 0xca, 0x2d, 0x68, 0xa3, 0x71, 0x8e, 0xe0, + 0x14, 0x94, 0x93, 0x13, 0xa8, 0xe4, 0x61, 0x99, 0x63, 0x89, 0x67, 0x76, + 0x1d, 0x44, 0x2d, 0x1b, 0x7a, 0x95, 0x39, 0x54, 0xfa, 0x84, 0x86, 0xb9, + 0x84, 0x02, 0xd3, 0xe6, 0xb1, 0x37, 0x6e, 0x01, 0xa3, 0xb9, 0x1a, 0xf9, + 0x05, 0x10, 0xe0, 0x6c, 0x88, 0xee, 0x4c, 0x79, 0x70, 0x3f, 0x22, 0x4a, + 0x6c, 0x1b, 0x03, 0x9e, 0xf3, 0xfb, 0xe7, 0xdb, 0x03, 0x98, 0x0a, 0x62, + 0xca, 0xc7, 0xb8, 0x11, 0xa8, 0xd1, 0x04, 0x90, 0x03, 0x08, 0xf1, 0x29, + 0xea, 0x01, 0xde, 0x8c, 0x76, 0x2e, 0x49, 0x49, 0xc3, 0xd9, 0x26, 0x08, + 0xd1, 0xa9, 0xad, 0xb6, 0xb6, 0x82, 0x09, 0x88, 0x81, 0xf2, 0x4c, 0xd1, + 0x0e, 0x6c, 0xfe, 0x6e, 0xbf, 0x7a, 0x57, 0x0d, 0xcd, 0xdb, 0xa4, 0x49, + 0xfc, 0x44, 0xa4, 0xa7, 0x2f, 0xaa, 0xe3, 0xbb, 0x2a, 0xb6, 0x1a, 0xbf, + 0x32, 0x48, 0xf3, 0x95, 0x88, 0x25, 0xb2, 0xc3, 0x2d, 0x3c, 0x38, 0x71, + 0xf7, 0xae, 0x96, 0xa8, 0x70, 0x2d, 0x3d, 0x8f, 0xe2, 0xa9, 0xf5, 0x3e, + 0x9e, 0x6d, 0x69, 0xba, 0xb1, 0x16, 0x37, 0x9f, 0xe5, 0x04, 0x94, 0xe5, + 0x35, 0xa1, 0x1e, 0xb7, 0x76, 0x55, 0x5b, 0xbf, 0x76, 0xde, 0xfc, 0xa3, + 0x32, 0xab, 0x49, 0x80, 0x47, 0x8a, 0x4a, 0x6d, 0x34, 0x6e, 0xb2, 0xb6, + 0x8d, 0x49, 0x70, 0x5d, 0x09, 0x02, 0x21, 0x63, 0xf4, 0xfc, 0x57, 0x07, + 0x0b, 0x6c, 0xd4, 0xb7, 0x81, 0xe0, 0xb5, 0xe4, 0x40, 0xf1, 0x09, 0x29, + 0x6d, 0xc5, 0xbc, 0xfe, 0x67, 0x74, 0x58, 0x0f, 0x6c, 0x85, 0x11, 0x1b, + 0xbc, 0x9d, 0xc7, 0xc5, 0x26, 0xfb, 0x03, 0xbc, 0x1a, 0x09, 0x1f, 0x04, + 0x94, 0xb5, 0x2d, 0x3e, 0x97, 0xf6, 0x8f, 0xe5, 0x55, 0x33, 0x21, 0xb6, + 0xd4, 0xe3, 0xc0, 0x7b, 0x4f, 0xfd, 0x25, 0x7e, 0xb6, 0x16, 0xb1, 0x9d, + 0x89, 0xd4, 0xfc, 0xd6, 0x6f, 0x59, 0x25, 0xb5, 0xee, 0x1a, 0x11, 0x24, + 0x7c, 0x42, 0x4a, 0x7a, 0x37, 0x07, 0x07, 0x9e, 0xda, 0xea, 0x8d, 0x58, + 0x32, 0x0a, 0x83, 0x48, 0xb5, 0x95, 0x59, 0xdd, 0xcc, 0x04, 0xfc, 0xc2, + 0x20, 0x11, 0xa0, 0x49, 0x49, 0xc7, 0x7f, 0x35, 0xbd, 0x83, 0xee, 0xc3, + 0xa7, 0xfa, 0xbf, 0x91, 0x60, 0x83, 0x00, 0x3b, 0xb1, 0xd0, 0xad, 0xde, + 0x9a, 0x67, 0x0a, 0xaf, 0x81, 0xfc, 0xa5, 0x25, 0x36, 0x47, 0x25, 0x03, + 0x20, 0x86, 0x6f, 0x7b, 0x8c, 0x0d, 0xb1, 0x28, 0xc0, 0xea, 0x50, 0x32, + 0xd8, 0x1e, 0xd8, 0x70, 0x91, 0xc4, 0x24, 0xa7, 0x06, 0xf0, 0xd6, 0x58, + 0x58, 0x3c, 0x01, 0xfb, 0xc2, 0x35, 0x19, 0x55, 0xd3, 0x8e, 0xf6, 0x46, + 0xe7, 0xb8, 0xf0, 0x78, 0x84, 0xfd, 0x4a, 0xb6, 0xb2, 0xf1, 0x1d, 0xda, + 0x09, 0xfc, 0x8a, 0xab, 0x5a, 0x5c, 0x4c, 0x68, 0x3b, 0x92, 0x92, 0x98, + 0x11, 0xf2, 0x4c, 0x5c, 0x74, 0xfc, 0x51, 0x1c, 0xf6, 0x00, 0x58, 0xd0, + 0x1c, 0xe1, 0xf9, 0xc7, 0xf8, 0x20, 0xea, 0x7e, 0x29, 0x29, 0x76, 0x17, + 0x97, 0xc5, 0x60, 0x39, 0xc7, 0xb1, 0x30, 0x34, 0xf3, 0x82, 0x89, 0x39, + 0x42, 0x41, 0xad, 0xa0, 0xf8, 0x6f, 0xff, 0x00, 0xcc, 0x54, 0x31, 0x80, + 0xf5, 0x99, 0xe1, 0x27, 0xf2, 0x2b, 0x76, 0x09, 0xef, 0x30, 0x92, 0x9a, + 0xe0, 0xe5, 0x7f, 0xa3, 0x67, 0xfd, 0xb9, 0xff, 0x00, 0x98, 0xa9, 0x0f, + 0xb4, 0xc7, 0xf3, 0x6c, 0x9f, 0xf8, 0xcf, 0xfc, 0xc5, 0x4c, 0x37, 0xc4, + 0xc7, 0xc5, 0x3b, 0x7e, 0x30, 0x92, 0x99, 0xd2, 0x1f, 0xb4, 0x97, 0xc0, + 0xd6, 0x4c, 0x1d, 0xc3, 0xf2, 0x05, 0xcf, 0xfd, 0x66, 0xc9, 0xdd, 0x43, + 0xc4, 0xad, 0xab, 0x2d, 0xda, 0xc3, 0x58, 0x3a, 0xb9, 0x72, 0xdf, 0x58, + 0x0b, 0xbd, 0x2d, 0x7f, 0x38, 0xc7, 0xdc, 0x92, 0x99, 0x7d, 0x50, 0xca, + 0xdb, 0x6e, 0x4e, 0x39, 0xe1, 0xed, 0xdc, 0xdf, 0x8b, 0x79, 0xfc, 0x0a, + 0xd5, 0xfb, 0x2b, 0x3e, 0xdf, 0xeb, 0x46, 0xb0, 0x81, 0xf5, 0x67, 0x0a, + 0xa6, 0xfd, 0x5d, 0xb7, 0xa8, 0xbe, 0x18, 0xfa, 0xb2, 0x9c, 0xe0, 0xf2, + 0x39, 0x66, 0xd6, 0xd6, 0xe6, 0x92, 0xb4, 0xb6, 0x8d, 0xfb, 0x92, 0x53, + 0xc7, 0x6b, 0x6d, 0x4d, 0x6b, 0x5c, 0x1d, 0xb0, 0xc8, 0x71, 0x3a, 0x00, + 0x79, 0x95, 0xdb, 0x7d, 0x52, 0xea, 0x34, 0xfe, 0xce, 0xb9, 0x9a, 0x7e, + 0xa4, 0x3e, 0x97, 0x1b, 0xb7, 0x99, 0x98, 0xf9, 0x2e, 0x03, 0x18, 0x92, + 0xf3, 0xe0, 0xf1, 0xb5, 0xe3, 0xcc, 0xf7, 0x5a, 0xdd, 0x16, 0xcb, 0xe8, + 0xb1, 0xfa, 0x96, 0xb2, 0xd6, 0xec, 0x73, 0x7c, 0x60, 0xc8, 0x49, 0x4f, + 0x6d, 0xd3, 0x05, 0x59, 0x98, 0xf9, 0x35, 0x5e, 0x37, 0xb5, 0xef, 0x3b, + 0x81, 0xf3, 0xd4, 0x2e, 0x6f, 0xae, 0x74, 0xc3, 0xd3, 0xdd, 0xe9, 0x02, + 0x5c, 0xc7, 0x82, 0xf6, 0x13, 0xe0, 0x67, 0x45, 0xb9, 0xf5, 0x7d, 0xe4, + 0xe4, 0xdf, 0x5c, 0xe9, 0x2c, 0x77, 0xe5, 0x0a, 0xff, 0x00, 0x5e, 0xc7, + 0xc7, 0xc8, 0xc7, 0x0c, 0xb8, 0x70, 0x0e, 0xd7, 0x77, 0x1a, 0x24, 0xa7, + 0xcf, 0x18, 0x61, 0xc2, 0x7c, 0x4a, 0x13, 0x5e, 0xe1, 0x7b, 0x67, 0xb8, + 0x02, 0x11, 0x19, 0x5d, 0x96, 0x65, 0x57, 0x5d, 0x7e, 0xe7, 0x38, 0x96, + 0xb4, 0x78, 0x93, 0xa2, 0x0d, 0x92, 0x2e, 0x8e, 0x1c, 0x0c, 0x47, 0x98, + 0x84, 0x94, 0xdb, 0x9d, 0x00, 0x3f, 0xbc, 0x7f, 0x8a, 0x7c, 0x63, 0x04, + 0x03, 0xd8, 0xba, 0x3e, 0xf4, 0xc4, 0x47, 0xbb, 0x90, 0x5c, 0x0a, 0x81, + 0x25, 0x8f, 0x0e, 0xec, 0x1c, 0x41, 0xf9, 0xa4, 0xa6, 0xcf, 0xf8, 0x48, + 0x27, 0x91, 0x0a, 0x6f, 0x05, 0xc0, 0xf8, 0xf2, 0x3e, 0x21, 0x30, 0x1b, + 0xdd, 0xbb, 0x88, 0x11, 0xf1, 0x52, 0x63, 0xa5, 0xc5, 0xbd, 0xe2, 0x52, + 0x53, 0x4d, 0xbe, 0xdb, 0x8e, 0xdf, 0xce, 0x13, 0x1f, 0x94, 0x2b, 0x24, + 0x6e, 0xae, 0x3c, 0x47, 0x2a, 0x06, 0xa8, 0xb4, 0x38, 0x68, 0x58, 0x7f, + 0x02, 0x8c, 0xe2, 0x22, 0x5b, 0xc1, 0x1a, 0x7e, 0x54, 0x94, 0xf3, 0x39, + 0xb5, 0x7a, 0x19, 0x4e, 0x81, 0xed, 0x3e, 0xe0, 0x3c, 0x8f, 0x65, 0x2c, + 0x47, 0xcd, 0x85, 0xbc, 0xc0, 0x80, 0x7c, 0x91, 0xba, 0xdb, 0x40, 0x7b, + 0x1e, 0x3c, 0xc4, 0xfc, 0x75, 0x54, 0xb0, 0x5d, 0x16, 0x90, 0x52, 0x53, + 0xbd, 0x88, 0xef, 0xa4, 0x0f, 0x8a, 0xb8, 0xd7, 0x01, 0xa2, 0xce, 0xc7, + 0xb6, 0x1c, 0x64, 0xfc, 0x15, 0xa6, 0x59, 0x30, 0x92, 0x9b, 0x4e, 0x3e, + 0xcd, 0x39, 0x1a, 0x85, 0x07, 0xc1, 0x0d, 0x0e, 0x89, 0x24, 0x6a, 0x95, + 0x67, 0x9d, 0x34, 0x44, 0xae, 0xa6, 0x4c, 0xbb, 0x52, 0x3b, 0x1f, 0xee, + 0x49, 0x4c, 0xeb, 0x73, 0xde, 0xd3, 0x23, 0x50, 0x60, 0x2c, 0xae, 0xb5, + 0x3e, 0x8f, 0xc8, 0xca, 0xd8, 0x76, 0x8b, 0x37, 0xab, 0x55, 0xbe, 0xa1, + 0x3d, 0xa6, 0x52, 0x53, 0xd0, 0x61, 0x38, 0x3f, 0x15, 0x8e, 0x03, 0xe8, + 0x00, 0x07, 0xc2, 0x24, 0x7e, 0x08, 0xc3, 0x5d, 0x47, 0x62, 0xb2, 0xba, + 0x16, 0x43, 0xdd, 0x8d, 0x48, 0x1e, 0xe0, 0xfa, 0x87, 0xc6, 0x6a, 0x3e, + 0x9b, 0xbf, 0x82, 0xd5, 0xdb, 0x04, 0x11, 0xdd, 0x25, 0x26, 0xac, 0x4b, + 0x20, 0xf6, 0x5b, 0xbd, 0x30, 0xce, 0x1b, 0x3c, 0x89, 0x1f, 0x8a, 0xc0, + 0xad, 0xd2, 0x08, 0xee, 0x3f, 0x15, 0xb9, 0xd2, 0x08, 0x38, 0x62, 0x3b, + 0x38, 0x84, 0x94, 0xdb, 0x07, 0xdc, 0xef, 0x92, 0x85, 0xad, 0xdc, 0x35, + 0xf1, 0x53, 0x1f, 0x4d, 0xc3, 0xe0, 0x99, 0xd1, 0x12, 0x52, 0x53, 0x8f, + 0xd6, 0x00, 0x0e, 0x63, 0xfb, 0x91, 0x1f, 0x72, 0xa1, 0x53, 0x5f, 0x6b, + 0x9c, 0xd6, 0x73, 0x05, 0xc7, 0xc2, 0x02, 0xd7, 0xea, 0xd5, 0x97, 0xd2, + 0xd7, 0x34, 0x49, 0x69, 0xec, 0xb3, 0xb0, 0x59, 0x67, 0xa8, 0x61, 0x84, + 0x87, 0xb4, 0xb5, 0x25, 0x35, 0xec, 0xac, 0xd4, 0xe1, 0xb9, 0xc0, 0xcf, + 0x82, 0x67, 0x9f, 0x25, 0x67, 0xa9, 0x52, 0x19, 0xe9, 0xb8, 0x40, 0x00, + 0x46, 0xd1, 0xdb, 0x45, 0x52, 0x65, 0xba, 0xea, 0x52, 0x52, 0xf4, 0x0d, + 0xd6, 0xb5, 0xa6, 0x22, 0x75, 0x95, 0x7b, 0xd2, 0xa4, 0x18, 0xd8, 0x35, + 0x54, 0xf1, 0x44, 0xdc, 0x20, 0x6e, 0x80, 0x74, 0x56, 0xfd, 0x7f, 0xe4, + 0x8f, 0xbd, 0x25, 0x33, 0xf4, 0xa9, 0xef, 0x5b, 0x53, 0xfa, 0x14, 0xff, + 0x00, 0xa3, 0x6f, 0xdc, 0xa2, 0x2c, 0x3c, 0xed, 0xfc, 0x42, 0xb7, 0x83, + 0x4b, 0xad, 0xb7, 0x7b, 0x9b, 0x0c, 0x61, 0xe4, 0x91, 0xa9, 0xec, 0x92, + 0x98, 0xbb, 0x07, 0x1d, 0x94, 0x9f, 0x55, 0x80, 0x3d, 0xd0, 0x5a, 0x1a, + 0x3d, 0xe2, 0x16, 0x16, 0x77, 0x41, 0xaf, 0x36, 0x9b, 0x5f, 0x96, 0x1f, + 0x43, 0x2a, 0x25, 0xc0, 0xb5, 0xcd, 0x27, 0x6f, 0x9c, 0x8e, 0xeb, 0xa9, + 0x73, 0x68, 0xbb, 0x24, 0xb5, 0xc6, 0x5e, 0xcd, 0x48, 0xed, 0xe4, 0xb1, + 0xfe, 0xb0, 0xe6, 0xf4, 0xec, 0x6a, 0xeb, 0xc4, 0xca, 0x7b, 0xea, 0xa0, + 0xbb, 0xd4, 0xbf, 0x63, 0x4b, 0xb7, 0x86, 0xfe, 0x69, 0x73, 0x78, 0x04, + 0xf3, 0xe4, 0x92, 0x9e, 0x73, 0x13, 0xea, 0xc7, 0x55, 0xb7, 0x05, 0xcd, + 0xc0, 0xb1, 0xc7, 0x12, 0xf7, 0x12, 0xda, 0xad, 0x71, 0xad, 0xaf, 0xd4, + 0x6d, 0x27, 0xc7, 0xe3, 0x0b, 0x5f, 0xf6, 0x3e, 0x7f, 0xd8, 0xbe, 0xc5, + 0xf6, 0x8a, 0xfe, 0xdb, 0xe9, 0x7a, 0x7e, 0xa6, 0xbb, 0x77, 0xc4, 0x2b, + 0xb5, 0x7d, 0x6c, 0xe8, 0x57, 0x02, 0x31, 0x72, 0xd8, 0xe7, 0xb2, 0x1b, + 0x5d, 0x5a, 0xb4, 0x9f, 0xea, 0x87, 0x81, 0x2a, 0x8f, 0xab, 0x6f, 0xad, + 0xea, 0xc9, 0x9d, 0xdb, 0xe2, 0x4f, 0x8c, 0xc4, 0xa4, 0xa7, 0x88, 0x68, + 0x0d, 0xba, 0x66, 0x1a, 0x4f, 0x21, 0x59, 0xc8, 0xc9, 0x7b, 0x6c, 0xf4, + 0xdb, 0xed, 0x88, 0x92, 0x3e, 0xf4, 0x1b, 0x58, 0x1a, 0xf7, 0x35, 0xbc, + 0x37, 0x40, 0xa3, 0x69, 0x6b, 0x5c, 0x6c, 0xb7, 0xc0, 0x06, 0xb3, 0xbb, + 0xa0, 0x47, 0xc8, 0x24, 0xa7, 0xba, 0xfa, 0xa1, 0x61, 0xc9, 0xb5, 0xd7, + 0x76, 0xf4, 0x61, 0xdf, 0xd6, 0xdd, 0x08, 0x9f, 0x58, 0x73, 0x8f, 0xda, + 0x0e, 0x3d, 0x60, 0xbd, 0xc1, 0xa4, 0x38, 0x0e, 0x1a, 0x1d, 0xa4, 0x95, + 0x5f, 0xea, 0x03, 0xc1, 0xe9, 0xf9, 0x99, 0x2f, 0x3a, 0xb5, 0xf1, 0xf0, + 0x6b, 0x5b, 0xb9, 0x64, 0x65, 0xe7, 0x5f, 0x91, 0x90, 0xe7, 0xb8, 0x91, + 0x5d, 0xae, 0x3b, 0x9a, 0x38, 0x89, 0xff, 0x00, 0x62, 0x4a, 0x6a, 0x74, + 0xef, 0x67, 0x57, 0xc3, 0xf0, 0x16, 0xb7, 0x4f, 0x1d, 0x42, 0x06, 0x6d, + 0x7b, 0x73, 0xee, 0x3f, 0xf0, 0x8f, 0xfc, 0xaa, 0xcd, 0x45, 0x98, 0x3d, + 0x63, 0x16, 0xd2, 0xe0, 0x5a, 0xdb, 0x1a, 0xed, 0xee, 0xe3, 0x69, 0x8d, + 0x7e, 0xe2, 0x87, 0xd5, 0xe6, 0xae, 0xa1, 0x70, 0x3f, 0xe9, 0x1d, 0xfe, + 0xc4, 0x94, 0xdb, 0xcc, 0xc0, 0x75, 0x38, 0xb8, 0xd9, 0x0c, 0x3b, 0x99, + 0x65, 0x6c, 0xb1, 0xff, 0x00, 0xc9, 0x73, 0x8c, 0x42, 0xa1, 0x68, 0x99, + 0xfe, 0xb0, 0xfc, 0x56, 0xc5, 0xf1, 0x93, 0xd1, 0x6b, 0x34, 0xb8, 0xb8, + 0xd1, 0x55, 0x25, 0xed, 0xe6, 0x35, 0x70, 0xfc, 0xab, 0x1c, 0xc9, 0x26, + 0x74, 0x1a, 0x14, 0x94, 0xbd, 0x37, 0x39, 0x97, 0x35, 0x84, 0xc0, 0x32, + 0xdf, 0xbb, 0xdc, 0x11, 0xec, 0x71, 0x6b, 0xd8, 0xf1, 0xf0, 0x2a, 0x9d, + 0xed, 0x20, 0x12, 0x3e, 0x90, 0xd5, 0xa7, 0xcc, 0x2b, 0x55, 0x3c, 0x5f, + 0x8e, 0xc7, 0x71, 0xb8, 0x7e, 0x23, 0x42, 0x92, 0x92, 0xbc, 0x83, 0x0e, + 0x1d, 0xc7, 0xe4, 0x51, 0xa6, 0x05, 0x7b, 0x7b, 0x09, 0x03, 0xe1, 0xc8, + 0xfc, 0x0a, 0x10, 0x2e, 0x0d, 0xda, 0xed, 0x36, 0xbb, 0x43, 0xf1, 0x44, + 0x88, 0xd4, 0x24, 0xa7, 0x2f, 0xac, 0x32, 0x71, 0xdd, 0xfc, 0x87, 0x02, + 0x3e, 0x05, 0x63, 0x56, 0x5c, 0xd3, 0x2d, 0xd0, 0xf8, 0xad, 0xec, 0xf6, + 0x9b, 0x29, 0xb3, 0x43, 0xf4, 0x48, 0xf9, 0x85, 0x84, 0xcd, 0x08, 0x07, + 0x9f, 0x04, 0x94, 0xd8, 0xae, 0xdb, 0xbf, 0x7c, 0xcf, 0x65, 0x69, 0x99, + 0x57, 0x54, 0xe0, 0x1c, 0xf9, 0x27, 0xb1, 0x55, 0x2b, 0x11, 0xa9, 0x3f, + 0x04, 0xee, 0x3b, 0xce, 0xc7, 0x7c, 0x8a, 0x4a, 0x77, 0xf0, 0xf2, 0x9b, + 0x68, 0x9e, 0x08, 0xe4, 0x2b, 0xac, 0x3f, 0xa4, 0x85, 0xcf, 0xe0, 0x9b, + 0x6a, 0xb9, 0x95, 0x9f, 0x70, 0x3a, 0x03, 0xc4, 0x8f, 0x35, 0xd0, 0x30, + 0x17, 0x41, 0xe3, 0xb2, 0x4a, 0x48, 0xe2, 0x35, 0x93, 0xc7, 0x0a, 0xa7, + 0x51, 0x6e, 0xfa, 0x1c, 0x5b, 0xc8, 0x0a, 0xd9, 0x02, 0x20, 0xf8, 0xa0, + 0x64, 0x40, 0x63, 0x81, 0xee, 0x38, 0x49, 0x48, 0xfa, 0x13, 0xb6, 0x61, + 0x54, 0xf6, 0xf3, 0x8f, 0x73, 0x83, 0xbf, 0xa9, 0x69, 0xda, 0x7f, 0x18, + 0x5d, 0x2c, 0x83, 0xa2, 0xe5, 0x7e, 0xaf, 0xd8, 0xcf, 0x53, 0x22, 0x87, + 0xfd, 0x10, 0xf8, 0x77, 0xf5, 0x6c, 0x1c, 0xfc, 0x88, 0x5d, 0x2e, 0x31, + 0x3b, 0x4b, 0x5f, 0xf4, 0xdb, 0xed, 0x77, 0xc4, 0x68, 0x92, 0x99, 0x90, + 0x43, 0xa7, 0x82, 0xb6, 0xfa, 0x2c, 0xfd, 0x95, 0xdf, 0xd7, 0x31, 0xf7, + 0x05, 0x8e, 0xe0, 0x62, 0x7c, 0x39, 0x5b, 0x5d, 0x1c, 0x01, 0x85, 0x3e, + 0x2e, 0x71, 0x3f, 0x91, 0x25, 0x27, 0xd5, 0xb7, 0x07, 0x1e, 0x1e, 0xe2, + 0xdf, 0x94, 0x08, 0xfc, 0x42, 0x29, 0x00, 0xc8, 0x2a, 0xbe, 0x58, 0x3f, + 0x67, 0x2e, 0x07, 0xdc, 0x08, 0x70, 0x3f, 0x34, 0x76, 0x58, 0x2c, 0x63, + 0x5e, 0xde, 0x1e, 0x01, 0x49, 0x48, 0xb2, 0x59, 0xea, 0x54, 0xe6, 0x9e, + 0x20, 0xe8, 0xb2, 0xa9, 0xac, 0xd5, 0x43, 0x9e, 0x4e, 0xa0, 0x12, 0x35, + 0xe3, 0xc5, 0x6d, 0x58, 0x25, 0xa7, 0xcc, 0x2c, 0x8f, 0x44, 0x31, 0x97, + 0xd2, 0x4e, 0xaf, 0x1e, 0xdf, 0x8a, 0x4a, 0x73, 0xf3, 0x2e, 0x16, 0xbe, + 0x1b, 0xf4, 0x40, 0x1a, 0xfc, 0x46, 0xaa, 0xb8, 0x25, 0x4c, 0x8d, 0x75, + 0xed, 0xca, 0x67, 0x68, 0x92, 0x93, 0x61, 0x09, 0x79, 0x77, 0x70, 0x39, + 0xf9, 0xab, 0x18, 0xd4, 0x31, 0xd9, 0x0f, 0x2e, 0x6c, 0xeb, 0xa7, 0xcf, + 0x95, 0x5f, 0x11, 0xc5, 0xaf, 0x23, 0x4d, 0xa7, 0xf2, 0x85, 0xa3, 0x47, + 0xf3, 0x92, 0x92, 0x9c, 0x2c, 0x3b, 0x3a, 0xad, 0xbd, 0x7a, 0xfe, 0x95, + 0x50, 0x6b, 0xf1, 0xe9, 0x74, 0xb9, 0xee, 0x6f, 0xd0, 0xa8, 0xc1, 0xe4, + 0x77, 0xd7, 0x45, 0xd8, 0x08, 0xa5, 0xa2, 0xba, 0xd8, 0x76, 0x34, 0x72, + 0xb0, 0xe9, 0xcb, 0xbb, 0x13, 0x3b, 0x2f, 0xd1, 0xa5, 0x9f, 0xa5, 0x78, + 0x36, 0x58, 0xe9, 0xdc, 0xe8, 0x68, 0x00, 0x93, 0x3c, 0x78, 0x22, 0x62, + 0xfd, 0x65, 0xc3, 0xbf, 0x22, 0xcc, 0x6b, 0x4b, 0x98, 0xe1, 0xc3, 0xe0, + 0xba, 0xb3, 0x1e, 0x2e, 0x1f, 0x47, 0xe6, 0x92, 0x9d, 0x3c, 0x77, 0x4f, + 0xa8, 0x4c, 0x6f, 0x9d, 0xa6, 0x3f, 0x37, 0xc5, 0x70, 0xdf, 0x59, 0x32, + 0xe8, 0xca, 0xc8, 0xbf, 0x15, 0xce, 0xf6, 0x07, 0x57, 0x58, 0x7c, 0xea, + 0xed, 0xc7, 0x61, 0x81, 0xe4, 0x75, 0x5d, 0x55, 0xb9, 0x5f, 0x66, 0xc4, + 0x7b, 0xf9, 0xbe, 0xf7, 0x1f, 0x4a, 0xb1, 0xaf, 0xb6, 0x74, 0x3a, 0x79, + 0x6a, 0xbc, 0xdf, 0xae, 0x80, 0x6f, 0x63, 0x98, 0x77, 0x3a, 0xbd, 0xce, + 0x2e, 0x1f, 0x87, 0xe4, 0x49, 0x4c, 0x3a, 0x6f, 0x46, 0x39, 0x02, 0xe7, + 0xda, 0x4b, 0x19, 0x8a, 0x76, 0x92, 0x39, 0x2f, 0x9e, 0x07, 0x87, 0x0b, + 0x5b, 0xf6, 0xe5, 0x9f, 0x65, 0xf4, 0x37, 0x7e, 0xb7, 0x3e, 0x97, 0xad, + 0xdf, 0x6c, 0x7d, 0x3f, 0xeb, 0x7f, 0xbd, 0x6e, 0xd8, 0x2a, 0xc8, 0xe9, + 0x35, 0xdd, 0x4b, 0x43, 0x45, 0xec, 0x16, 0x10, 0xd1, 0x12, 0xe7, 0x89, + 0x71, 0x31, 0xe6, 0xb8, 0xef, 0xb3, 0x1f, 0xda, 0x3e, 0x9f, 0x9c, 0xa4, + 0xa6, 0x2f, 0xb6, 0x1e, 0xe7, 0xfe, 0x71, 0x24, 0x80, 0xab, 0x96, 0xd9, + 0x75, 0x9d, 0xdc, 0xe7, 0x72, 0x4a, 0x2d, 0x58, 0xee, 0x7b, 0x86, 0xed, + 0x1a, 0xe4, 0x67, 0xdd, 0x56, 0x38, 0xda, 0xcd, 0x5d, 0xe1, 0xfd, 0xe9, + 0x29, 0xd9, 0xe8, 0x3d, 0x46, 0xbe, 0x92, 0xdb, 0x68, 0xbd, 0xf1, 0x46, + 0x4b, 0x1c, 0xdb, 0x0f, 0x83, 0xa3, 0xda, 0xef, 0xe0, 0x86, 0xe7, 0x01, + 0x8e, 0x0f, 0x98, 0x3f, 0x7a, 0xe7, 0xec, 0xbd, 0xf7, 0x38, 0xc9, 0x92, + 0x79, 0xf2, 0x5a, 0x98, 0x6e, 0x2f, 0xc0, 0xb1, 0xbc, 0xec, 0x70, 0x8f, + 0x82, 0x4a, 0x4d, 0x69, 0xaa, 0xc6, 0xb3, 0x73, 0x26, 0xc6, 0x98, 0xde, + 0x4e, 0x9b, 0x47, 0x02, 0x14, 0xfa, 0xb3, 0x0d, 0x8d, 0xc5, 0xc8, 0x1a, + 0x9b, 0x69, 0x63, 0x9c, 0x7c, 0x5c, 0xcf, 0xd1, 0xbb, 0xf1, 0x6a, 0x13, + 0x8c, 0x03, 0xf1, 0x1f, 0x71, 0x46, 0x75, 0xad, 0xb3, 0x0c, 0x50, 0x67, + 0xd4, 0xa5, 0xce, 0x35, 0x1f, 0xe4, 0xbb, 0x52, 0xdf, 0xbf, 0x54, 0x94, + 0x93, 0xa1, 0x5e, 0x19, 0x79, 0xc5, 0xb1, 0xc4, 0x55, 0x94, 0x0d, 0x4e, + 0xf2, 0x27, 0x56, 0x47, 0xf6, 0xbf, 0x2a, 0x1e, 0x6d, 0x07, 0x1f, 0x22, + 0xda, 0x5c, 0x20, 0xb4, 0x90, 0x55, 0x40, 0xd7, 0x4b, 0xa1, 0xf0, 0x44, + 0x16, 0x80, 0x3b, 0x85, 0xa3, 0xd5, 0x0b, 0xee, 0xbe, 0xbb, 0xce, 0xbf, + 0x69, 0xa5, 0x96, 0x38, 0xf8, 0xba, 0x03, 0x5d, 0xf8, 0x84, 0x94, 0xd0, + 0x76, 0xba, 0x1e, 0x08, 0x52, 0xe9, 0xce, 0x01, 0xee, 0xc6, 0x71, 0x80, + 0xf3, 0x35, 0x93, 0xc0, 0x7f, 0xfb, 0x42, 0x1b, 0xcb, 0x8c, 0x06, 0x8f, + 0x8a, 0x1d, 0x84, 0x8f, 0x73, 0x74, 0x31, 0x33, 0xe6, 0xd4, 0x94, 0xde, + 0xb5, 0x85, 0xcd, 0x71, 0x12, 0x09, 0x83, 0x1f, 0x04, 0xf3, 0x1e, 0xee, + 0xc3, 0x5f, 0xbf, 0x44, 0x6b, 0x7f, 0x4b, 0x55, 0x39, 0x23, 0xe8, 0xde, + 0xd3, 0xbc, 0x8e, 0x1b, 0x63, 0x74, 0x70, 0xf9, 0xf3, 0xf3, 0x55, 0x8f, + 0xf3, 0x32, 0x92, 0x90, 0x5c, 0x0b, 0xab, 0x77, 0xc1, 0xd0, 0x3c, 0xd6, + 0x15, 0xae, 0x75, 0x99, 0x2e, 0x2d, 0xd7, 0x86, 0x8f, 0x90, 0x85, 0xd0, + 0x38, 0x68, 0xf0, 0x7c, 0xff, 0x00, 0x15, 0x83, 0x86, 0xd2, 0xeb, 0x09, + 0x3c, 0xa4, 0xa4, 0xaf, 0xc7, 0x3b, 0x67, 0x9e, 0xee, 0x03, 0xb7, 0x9a, + 0x93, 0x6b, 0x1b, 0x78, 0x91, 0xe5, 0xc8, 0xf8, 0x2b, 0xf5, 0xb0, 0x02, + 0xd0, 0x3b, 0xf2, 0xa4, 0x69, 0x11, 0xb5, 0xba, 0x36, 0x66, 0x3c, 0xd2, + 0x52, 0x1a, 0x31, 0x9e, 0x19, 0xea, 0xbf, 0x56, 0xc7, 0xb4, 0x03, 0xac, + 0xf8, 0xad, 0xaa, 0x1c, 0x0d, 0x4d, 0x27, 0xba, 0xa9, 0x8b, 0x50, 0xf4, + 0xde, 0x08, 0xe5, 0x5a, 0xc5, 0xd6, 0xa2, 0xce, 0xed, 0x49, 0x49, 0x86, + 0xa3, 0xc1, 0x51, 0xea, 0x59, 0x0d, 0xa1, 0xa0, 0xbb, 0xf3, 0x81, 0x00, + 0x79, 0xab, 0x6e, 0x3b, 0x5a, 0x49, 0xf9, 0x2c, 0x3e, 0xa9, 0x69, 0xb6, + 0xc6, 0x77, 0x0d, 0x9e, 0x12, 0x53, 0x5f, 0xa6, 0xe5, 0x5b, 0x8b, 0x9d, + 0xeb, 0xd8, 0x26, 0xbb, 0x34, 0xb0, 0x0f, 0x0f, 0x1f, 0x92, 0xed, 0xe9, + 0xb1, 0xae, 0x2c, 0xb1, 0xa7, 0x73, 0x6d, 0x6c, 0x87, 0x0e, 0x0c, 0x69, + 0x3f, 0x91, 0x70, 0xf5, 0xb0, 0x8d, 0xef, 0x76, 0x80, 0x9f, 0x68, 0xf2, + 0x5d, 0x07, 0x40, 0xc9, 0x73, 0xb1, 0x9d, 0x53, 0xb5, 0x18, 0xf6, 0xb4, + 0xb4, 0xff, 0x00, 0x26, 0xe0, 0x5a, 0x47, 0xf9, 0xcd, 0x49, 0x4f, 0x42, + 0xe9, 0x8f, 0x25, 0xb1, 0xd2, 0x5f, 0xfe, 0x4e, 0x77, 0xf2, 0x5c, 0xe0, + 0x3e, 0x71, 0xfd, 0xeb, 0x17, 0x70, 0x8d, 0x56, 0xd7, 0x4c, 0x69, 0x6e, + 0x03, 0x47, 0xfa, 0x4b, 0x24, 0x7c, 0x27, 0xfd, 0x89, 0x29, 0xb5, 0x7b, + 0x66, 0xa7, 0x56, 0x4f, 0xee, 0xfe, 0x54, 0x3e, 0x9c, 0xf0, 0x69, 0x35, + 0xf7, 0x63, 0x8f, 0xe3, 0xaa, 0x2d, 0xa4, 0x17, 0x39, 0xa4, 0xf8, 0x7e, + 0x50, 0xa9, 0x60, 0xbb, 0x65, 0xee, 0x13, 0xa1, 0xe4, 0x79, 0x84, 0x94, + 0xea, 0x11, 0xa2, 0xcd, 0xca, 0x66, 0xd7, 0x97, 0x44, 0x93, 0xa0, 0x5a, + 0x4a, 0xae, 0x73, 0x09, 0xa9, 0xd1, 0xe1, 0xa9, 0x49, 0x4f, 0x3b, 0x70, + 0x8b, 0x5d, 0xa4, 0x6a, 0x54, 0x1c, 0x11, 0xb2, 0x07, 0xe9, 0x09, 0x42, + 0x70, 0xd1, 0x25, 0x25, 0xc5, 0x9d, 0xcd, 0x1d, 0x8c, 0xab, 0xf4, 0x98, + 0x76, 0x9a, 0x85, 0x47, 0x0c, 0x6b, 0xed, 0x77, 0xa8, 0xe0, 0x7d, 0xc0, + 0x7e, 0x68, 0x77, 0x01, 0x5e, 0xa9, 0xbb, 0x4e, 0x9a, 0x49, 0x27, 0xef, + 0x49, 0x4e, 0x46, 0x78, 0xbe, 0xce, 0xaf, 0x7e, 0x3d, 0x6e, 0xf6, 0x06, + 0xb1, 0xe5, 0x93, 0xce, 0xe6, 0xc6, 0xef, 0xc1, 0x5a, 0xe9, 0xd5, 0xd7, + 0x8d, 0x5d, 0x82, 0xb0, 0x07, 0x77, 0xc7, 0x77, 0x79, 0xaa, 0x1d, 0x57, + 0xd4, 0xab, 0xeb, 0x1e, 0x31, 0x61, 0xd6, 0xec, 0x7d, 0x84, 0x9e, 0xf0, + 0x5c, 0xad, 0xe1, 0x92, 0xda, 0x2c, 0x93, 0xae, 0xb3, 0xf1, 0x49, 0x4f, + 0x35, 0xd4, 0xfa, 0xce, 0x5e, 0x1e, 0x6b, 0xd9, 0x5b, 0xf7, 0x52, 0xe0, + 0x43, 0xab, 0x3e, 0x07, 0x9d, 0xa7, 0xb2, 0xcf, 0xb1, 0xf5, 0x65, 0xe3, + 0xd9, 0x73, 0x5c, 0x0b, 0xdc, 0xf1, 0xb9, 0x9d, 0xdb, 0xe0, 0x3e, 0xe4, + 0x1e, 0xb2, 0xe2, 0xec, 0xd7, 0xa1, 0x74, 0xd6, 0x02, 0xeb, 0x5e, 0x78, + 0x00, 0x04, 0x94, 0xf6, 0x7f, 0x57, 0x9f, 0xbf, 0xa1, 0xb1, 0x87, 0x9a, + 0x4b, 0xeb, 0x8f, 0x81, 0x91, 0xf8, 0x15, 0x83, 0xb3, 0xfc, 0xaf, 0x2b, + 0x7f, 0xa1, 0x86, 0x0e, 0x9d, 0x0c, 0x1f, 0x48, 0xb8, 0xb8, 0x8e, 0xee, + 0xf1, 0xfb, 0x96, 0x4f, 0xa7, 0xfe, 0x57, 0xfe, 0x09, 0x29, 0xc1, 0xb3, + 0x2c, 0xb8, 0xfb, 0x4c, 0x0f, 0x04, 0x02, 0xe2, 0xed, 0x4f, 0x7e, 0xea, + 0x30, 0xd6, 0x9f, 0x12, 0xa2, 0xe3, 0xf3, 0x49, 0x4c, 0xc3, 0x80, 0xd0, + 0x2b, 0xfd, 0x37, 0x23, 0x61, 0xb2, 0xa7, 0x1f, 0x6d, 0x83, 0xf1, 0x59, + 0xcd, 0x3d, 0xd1, 0x18, 0xed, 0xae, 0x99, 0x49, 0x4e, 0xcb, 0x8e, 0xee, + 0xdc, 0xb7, 0xf2, 0x27, 0x24, 0x8f, 0x71, 0xf2, 0x28, 0x34, 0xbc, 0xba, + 0xaa, 0xdd, 0x3d, 0xc8, 0xf8, 0xa2, 0x4c, 0xb7, 0x9f, 0x16, 0x94, 0x94, + 0xc5, 0x80, 0x07, 0xcf, 0x3a, 0xc7, 0xc9, 0x6d, 0x65, 0xd7, 0x3d, 0x1f, + 0xa6, 0xe4, 0x77, 0x68, 0xb2, 0xa3, 0xf0, 0x0f, 0x24, 0x2c, 0x49, 0x04, + 0x69, 0xa9, 0xfe, 0xe5, 0xd0, 0x54, 0x7e, 0xd1, 0xf5, 0x71, 0xcc, 0x31, + 0x38, 0xd6, 0xb8, 0x92, 0x7f, 0x35, 0xa4, 0x07, 0x04, 0x94, 0xe2, 0x9d, + 0x44, 0x0e, 0x08, 0x41, 0xdb, 0x2c, 0x6c, 0xfe, 0xe9, 0x47, 0x6e, 0xad, + 0x03, 0xf9, 0x3a, 0xfe, 0x09, 0x9a, 0xcd, 0x19, 0xe6, 0x0f, 0xf0, 0x49, + 0x4d, 0xde, 0x8b, 0x6d, 0x45, 0xc7, 0x07, 0x22, 0x3d, 0x1c, 0x81, 0x35, + 0xb9, 0xdc, 0x32, 0xd0, 0x21, 0xa7, 0xe7, 0xc2, 0x1e, 0x4d, 0x2f, 0xa1, + 0xa6, 0x9b, 0x04, 0x3d, 0x93, 0x3f, 0x7e, 0x8a, 0xa6, 0x83, 0x6c, 0x78, + 0x15, 0xad, 0xd5, 0x61, 0xfe, 0x95, 0xa7, 0xf3, 0xb1, 0xe9, 0x71, 0x3e, + 0x32, 0xd0, 0xdf, 0xe0, 0x92, 0x9c, 0xc2, 0x06, 0xf2, 0x0f, 0xc5, 0x61, + 0xe1, 0xff, 0x00, 0x38, 0xff, 0x00, 0x89, 0xfc, 0xab, 0x6c, 0xea, 0xe9, + 0xf8, 0x80, 0xb1, 0xb0, 0xf5, 0x7b, 0xcf, 0x99, 0xfc, 0xa9, 0x29, 0xd4, + 0xad, 0xba, 0xb7, 0xbc, 0xab, 0x2d, 0x6e, 0x83, 0xc9, 0x57, 0xab, 0x96, + 0xc2, 0xb4, 0x38, 0x49, 0x49, 0x28, 0x00, 0x12, 0x89, 0x51, 0x0d, 0xb0, + 0x8f, 0xdf, 0x0a, 0x15, 0x0d, 0x10, 0x7d, 0x76, 0x8b, 0x9c, 0xd7, 0x12, + 0xd2, 0x00, 0x8f, 0x34, 0x94, 0x96, 0xdb, 0x37, 0x34, 0xc8, 0x88, 0x30, + 0x56, 0x36, 0x45, 0x8d, 0x63, 0xdc, 0x4b, 0x77, 0x12, 0x08, 0x1c, 0x8d, + 0xa4, 0xf0, 0x56, 0xd5, 0x8e, 0xdf, 0x54, 0x8e, 0x0f, 0x0a, 0x8e, 0x55, + 0x13, 0x05, 0xb3, 0xb4, 0xfd, 0x2f, 0x23, 0xd8, 0xa4, 0xa7, 0x30, 0x38, + 0x1e, 0x4c, 0xfe, 0x45, 0xb1, 0xf5, 0x7f, 0x71, 0xc0, 0xea, 0x57, 0x0d, + 0x76, 0xba, 0xa2, 0x3e, 0x15, 0x9d, 0xc5, 0x63, 0x5f, 0x35, 0x83, 0xc9, + 0x1d, 0xa5, 0x74, 0x5f, 0x54, 0x69, 0x0f, 0xe9, 0x79, 0x80, 0xeb, 0xea, + 0x38, 0x83, 0xfe, 0x6f, 0xfb, 0x52, 0x53, 0xb4, 0xc8, 0x7b, 0x03, 0x87, + 0x0e, 0x12, 0x17, 0x47, 0x82, 0x03, 0x31, 0x71, 0x2b, 0xee, 0x46, 0xef, + 0xbc, 0x17, 0x7f, 0x15, 0xca, 0xf4, 0xe7, 0x97, 0x63, 0x35, 0xa7, 0x52, + 0xcf, 0x69, 0xf9, 0x2d, 0x9c, 0x6c, 0xb7, 0x55, 0x95, 0x53, 0x4f, 0xb9, + 0xac, 0xac, 0xc8, 0xf8, 0xc0, 0x49, 0x4e, 0xc3, 0xd9, 0x2f, 0x2d, 0xe4, + 0xb8, 0x19, 0x54, 0xa8, 0x90, 0xf2, 0xee, 0xee, 0x71, 0x8f, 0xbd, 0x5c, + 0xa7, 0x21, 0x96, 0x19, 0x1f, 0x48, 0xaa, 0x8c, 0x90, 0x74, 0xfc, 0xd2, + 0xed, 0x7e, 0x69, 0x29, 0xd1, 0x61, 0x25, 0xa1, 0x2b, 0x1a, 0x1d, 0x5b, + 0x81, 0xee, 0x14, 0x6a, 0x7e, 0xe6, 0xa9, 0x83, 0x3a, 0x24, 0xa7, 0x9a, + 0xcd, 0xac, 0xb2, 0xe2, 0xd0, 0x34, 0xe7, 0xe4, 0xab, 0xb9, 0xc1, 0xa1, + 0xce, 0x77, 0x0d, 0x04, 0x9f, 0x80, 0xd5, 0x6a, 0x75, 0x7a, 0xc3, 0x6d, + 0x69, 0xf1, 0x6c, 0x7d, 0xcb, 0x26, 0xf6, 0x97, 0xd7, 0x65, 0x6d, 0x20, + 0x39, 0xed, 0x2d, 0x04, 0xe8, 0x01, 0x22, 0x12, 0x52, 0x3f, 0xa9, 0xfe, + 0x9e, 0x67, 0x43, 0x0e, 0xb0, 0x49, 0x6e, 0x45, 0x86, 0x41, 0x20, 0xc9, + 0x76, 0xfe, 0x47, 0xf5, 0x96, 0xeb, 0x41, 0xe7, 0xe2, 0x16, 0x57, 0xd5, + 0x2e, 0x9f, 0xfb, 0x3b, 0xa5, 0x3a, 0x87, 0xda, 0x2d, 0x73, 0xec, 0xde, + 0xe0, 0x01, 0x6e, 0xc2, 0x40, 0x1b, 0x75, 0xf8, 0x2d, 0x76, 0x83, 0xbc, + 0x8e, 0xd3, 0xca, 0x4a, 0x79, 0x3f, 0xae, 0xb6, 0xe4, 0xd5, 0xd4, 0xfa, + 0x51, 0xc5, 0xb0, 0xd5, 0x65, 0x92, 0xc0, 0xe1, 0xd8, 0xef, 0x6f, 0x8f, + 0xc5, 0x6d, 0xd8, 0xfa, 0x5c, 0xc7, 0xdb, 0x4b, 0x83, 0xea, 0xb1, 0xbb, + 0x9a, 0xe6, 0x99, 0x6b, 0xbc, 0xc1, 0x0b, 0x1b, 0xeb, 0xeb, 0x5d, 0x5d, + 0xbd, 0x33, 0x24, 0x7f, 0x83, 0xb1, 0xda, 0xf9, 0xcb, 0x1c, 0xb7, 0x32, + 0x69, 0xaa, 0x8a, 0x4b, 0x29, 0x63, 0x6b, 0xad, 0xb5, 0xfb, 0x58, 0xd0, + 0x00, 0x03, 0x5e, 0x00, 0x49, 0x4f, 0x9d, 0xf5, 0x53, 0x39, 0x96, 0x7c, + 0x55, 0xcf, 0xab, 0xfd, 0x2e, 0xce, 0xa2, 0xe1, 0x8e, 0xd3, 0xb1, 0xb6, + 0x3c, 0xb9, 0xf6, 0x44, 0xc3, 0x6b, 0x13, 0xf8, 0x93, 0x0a, 0x8f, 0x51, + 0x3b, 0xb2, 0xec, 0x3e, 0x6b, 0xa9, 0xe8, 0x3d, 0x37, 0xad, 0xd7, 0xd2, + 0xab, 0xbf, 0xa7, 0x3a, 0x86, 0x0c, 0x80, 0x5c, 0x5c, 0xe9, 0xf5, 0x22, + 0x4f, 0xef, 0x68, 0x12, 0x53, 0x67, 0xa3, 0x35, 0xd5, 0xb7, 0x23, 0x19, + 0xf0, 0x2c, 0xa2, 0xd7, 0x31, 0xe0, 0x19, 0x82, 0x21, 0x54, 0xf4, 0xdb, + 0xfb, 0x5f, 0x82, 0xaf, 0x74, 0xec, 0x2e, 0xad, 0x89, 0x6d, 0xaf, 0xea, + 0x5e, 0xe7, 0x5b, 0xb7, 0x65, 0x92, 0x1d, 0x3b, 0x41, 0x1f, 0x9a, 0xab, + 0xec, 0x3f, 0xb6, 0x3e, 0x49, 0x29, 0xff, 0xd9 +}; +size_t demo_003_jpg_len = 19604; + +const uint8_t demo_004_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00, + 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00, + 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x38, 0x00, + 0x36, 0x00, 0x30, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0x2e, 0x3b, 0xf7, 0x7a, 0xae, 0x1f, 0x44, 0xba, 0x01, + 0xf2, 0xd2, 0x0f, 0xe2, 0xab, 0x66, 0x86, 0xdb, 0x8e, 0x31, 0x6b, 0x33, + 0x6b, 0x09, 0x6b, 0xf4, 0x3a, 0x35, 0xff, 0x00, 0x72, 0x86, 0x15, 0x4f, + 0xaa, 0xa6, 0x1b, 0x35, 0x78, 0xda, 0xe2, 0xff, 0x00, 0x02, 0xf7, 0x09, + 0x1f, 0x70, 0x5b, 0x5b, 0x58, 0x5c, 0x06, 0xd9, 0xf5, 0x1e, 0xd0, 0x4e, + 0x9d, 0x9d, 0x29, 0x29, 0xe4, 0xbe, 0xb2, 0xe2, 0x9a, 0x33, 0xaa, 0xc7, + 0xfa, 0x5e, 0x8d, 0x2d, 0x69, 0x3e, 0x64, 0x97, 0x15, 0x96, 0x01, 0x8d, + 0x47, 0x1f, 0x7a, 0xd8, 0xfa, 0xc7, 0x7b, 0x9d, 0xd7, 0x72, 0x1a, 0x04, + 0x86, 0x86, 0x37, 0xe7, 0xb4, 0x13, 0xf9, 0x55, 0x20, 0xea, 0x4b, 0xbd, + 0xcd, 0x88, 0xf2, 0xff, 0x00, 0x50, 0x92, 0x90, 0x31, 0xfb, 0x44, 0x11, + 0xcf, 0x1e, 0x21, 0x58, 0xae, 0xac, 0x6b, 0x1b, 0xed, 0x74, 0xb8, 0x9f, + 0xa3, 0xa4, 0xfd, 0xc5, 0x10, 0x62, 0xb5, 0xec, 0xdc, 0xc2, 0x08, 0xed, + 0xc6, 0xbf, 0xc1, 0x0f, 0xec, 0xa5, 0xbf, 0x49, 0xb1, 0xf1, 0xd0, 0xa4, + 0xa6, 0x0f, 0xc4, 0xad, 0xe3, 0xdb, 0xdf, 0xc4, 0x41, 0x08, 0x18, 0x58, + 0x1b, 0xba, 0x9d, 0x15, 0x11, 0x23, 0x7c, 0x91, 0xe4, 0xdf, 0x77, 0xf0, + 0x57, 0x98, 0xdb, 0x2b, 0x7f, 0x26, 0x74, 0x8d, 0xdd, 0xd1, 0xba, 0x7b, + 0x7d, 0x4e, 0xb1, 0x8f, 0xd8, 0xeb, 0x23, 0xe5, 0xaa, 0x4a, 0x7a, 0x01, + 0x51, 0x6e, 0x18, 0x73, 0x7e, 0x93, 0xec, 0x79, 0x02, 0x3b, 0x00, 0x3f, + 0x24, 0x2d, 0x1e, 0x88, 0x5a, 0xc7, 0xef, 0x79, 0xf7, 0x34, 0x13, 0xf0, + 0x00, 0x39, 0x67, 0x37, 0x2b, 0x21, 0xbd, 0x41, 0x98, 0x6e, 0xa8, 0x0c, + 0x20, 0xd3, 0x16, 0x89, 0x2e, 0x6b, 0xac, 0x3b, 0x67, 0xef, 0x01, 0x69, + 0xd2, 0xd6, 0x51, 0xea, 0x38, 0x99, 0x6e, 0xc7, 0x44, 0x69, 0xf4, 0x74, + 0xfc, 0xa9, 0x29, 0x1f, 0xac, 0x1f, 0x91, 0xbd, 0xa3, 0xda, 0x49, 0x33, + 0xf0, 0x10, 0xaa, 0x65, 0xda, 0xf7, 0xb9, 0xf5, 0x6d, 0xd1, 0xae, 0x01, + 0x84, 0x1f, 0xa5, 0xec, 0x13, 0xf0, 0xe5, 0x17, 0xa7, 0x90, 0xea, 0xfe, + 0x96, 0x8d, 0x07, 0x9e, 0xf2, 0xe4, 0x1c, 0xa0, 0xe6, 0xda, 0x0b, 0x48, + 0x24, 0xbd, 0xd2, 0x7f, 0xcd, 0x09, 0x29, 0x8d, 0xed, 0x61, 0x60, 0x01, + 0xb0, 0xe7, 0x41, 0xd7, 0xc0, 0x18, 0x85, 0x27, 0x52, 0x6f, 0x7d, 0x60, + 0x12, 0x2b, 0x61, 0x2d, 0x73, 0x3b, 0x11, 0x03, 0x95, 0x0a, 0x9e, 0x2f, + 0x73, 0xda, 0xe9, 0xf6, 0x3f, 0x68, 0x71, 0x10, 0x09, 0x81, 0xf4, 0x7c, + 0x55, 0xd6, 0x30, 0x9a, 0xf6, 0xce, 0xd2, 0xe0, 0x49, 0x23, 0x53, 0xe4, + 0x92, 0x90, 0x55, 0xb2, 0xde, 0xa7, 0x75, 0xae, 0xaf, 0x4a, 0x43, 0x19, + 0x4b, 0xf4, 0xfc, 0xe0, 0x4b, 0xa3, 0xe6, 0x55, 0xe3, 0x65, 0x67, 0xd6, + 0xad, 0xa7, 0xdc, 0xcd, 0xb2, 0x3c, 0x9f, 0xba, 0x3f, 0x22, 0x06, 0xcb, + 0x1a, 0x01, 0xa9, 0xa3, 0x73, 0x9c, 0x4e, 0xbc, 0x7b, 0x41, 0x1a, 0xfc, + 0xd5, 0xa3, 0x51, 0x18, 0xb5, 0x9d, 0xa3, 0x79, 0x8f, 0x56, 0x3b, 0x96, + 0x84, 0x94, 0xd3, 0xb1, 0x95, 0x5d, 0x78, 0xa6, 0x25, 0x8d, 0x2d, 0x79, + 0x1c, 0x41, 0x07, 0x48, 0x8f, 0x82, 0x1e, 0x45, 0x57, 0x7d, 0xb4, 0xb5, + 0xcf, 0xdb, 0x5b, 0x43, 0x36, 0x36, 0x3b, 0x09, 0xdd, 0x3f, 0x19, 0x47, + 0xa9, 0xb3, 0x97, 0x65, 0xa5, 0xc4, 0xb6, 0x6b, 0x63, 0x5b, 0x11, 0x1b, + 0x01, 0x27, 0xf2, 0xa0, 0xb5, 0xd7, 0x5f, 0xd4, 0x2e, 0x0f, 0x64, 0x54, + 0xd7, 0x35, 0xb5, 0x99, 0xfa, 0x51, 0xf4, 0xb4, 0x49, 0x4e, 0x45, 0x0f, + 0x71, 0xb6, 0xf7, 0x93, 0xf4, 0xb2, 0x5d, 0xaf, 0x80, 0x68, 0x6b, 0x07, + 0xe2, 0x9f, 0x2d, 0xa3, 0xed, 0x77, 0xb8, 0x19, 0x73, 0x9b, 0x5b, 0x48, + 0xf0, 0xd2, 0x7f, 0x82, 0xaf, 0x8b, 0xfa, 0x7a, 0x8b, 0xaa, 0x88, 0xb6, + 0xd7, 0x3a, 0x49, 0xee, 0x6c, 0x93, 0xf8, 0x2b, 0x0e, 0x05, 0xf9, 0x19, + 0x0f, 0xfc, 0xe3, 0x63, 0x5a, 0xef, 0xec, 0x00, 0x00, 0xfc, 0x52, 0x53, + 0x51, 0xd9, 0x17, 0xbb, 0x2d, 0xcd, 0xfa, 0x5e, 0x96, 0xf2, 0x07, 0xf2, + 0x74, 0x00, 0x7e, 0x08, 0x8e, 0xbb, 0xf5, 0x90, 0x5e, 0x20, 0x0d, 0xa4, + 0x83, 0xda, 0x75, 0x28, 0x58, 0xad, 0x70, 0xce, 0xb1, 0xce, 0x3f, 0x49, + 0xc4, 0x08, 0xfe, 0xb1, 0x71, 0xfc, 0x14, 0x5e, 0xf1, 0x6d, 0xf9, 0x32, + 0x34, 0x0f, 0x8f, 0x93, 0x40, 0x49, 0x4d, 0xdb, 0x71, 0x00, 0xf5, 0x2e, + 0x61, 0x01, 0x96, 0x03, 0xea, 0x37, 0xf9, 0x43, 0xe8, 0x90, 0x8b, 0x76, + 0x0d, 0x45, 0xb0, 0xe6, 0x82, 0x0f, 0x97, 0x92, 0xa0, 0x2d, 0xb5, 0xf8, + 0xb6, 0x10, 0xf9, 0x0f, 0x73, 0x00, 0x3f, 0x07, 0x1d, 0xdf, 0x82, 0xbd, + 0x95, 0x92, 0x1b, 0x6b, 0x08, 0x13, 0xb4, 0xbb, 0x5f, 0xec, 0xca, 0x4a, + 0x72, 0x73, 0x3a, 0x25, 0x2f, 0xba, 0x90, 0xc1, 0x1e, 0xa3, 0xc8, 0x3e, + 0x10, 0x1a, 0x5c, 0xb3, 0x72, 0x7a, 0x43, 0xa8, 0xc9, 0x65, 0x63, 0xe8, + 0xbc, 0x13, 0x1f, 0x35, 0xd3, 0x53, 0x7d, 0x77, 0xe4, 0x56, 0xd1, 0xf4, + 0xaa, 0x63, 0x9e, 0x47, 0xf5, 0x80, 0x08, 0x79, 0xb5, 0x35, 0xd7, 0xd7, + 0x68, 0xe0, 0xb5, 0x8d, 0x1f, 0xda, 0x32, 0x92, 0x93, 0xf4, 0x8c, 0x36, + 0x61, 0xd8, 0xf2, 0x46, 0xd6, 0x57, 0x53, 0x4b, 0x8f, 0xc7, 0xba, 0xbc, + 0xd7, 0x01, 0x63, 0x9c, 0x04, 0x43, 0xbe, 0xf8, 0x44, 0xb2, 0xb1, 0xe9, + 0x64, 0x87, 0x37, 0xdb, 0xb1, 0xac, 0x20, 0xf0, 0x41, 0x94, 0x21, 0xdf, + 0xc2, 0x49, 0xfc, 0xa9, 0x29, 0xe7, 0x31, 0xf3, 0x3a, 0x97, 0x4d, 0xc9, + 0x75, 0xf4, 0x9f, 0x5a, 0xa9, 0x20, 0xb2, 0xdf, 0x70, 0x82, 0x66, 0x03, + 0x86, 0xa1, 0x69, 0x63, 0xf5, 0xcc, 0x4b, 0x72, 0xdf, 0x7d, 0x8d, 0x76, + 0x1d, 0xb7, 0xe9, 0x6b, 0x6d, 0xf7, 0x52, 0xf3, 0xff, 0x00, 0x18, 0xde, + 0x3e, 0x68, 0x34, 0xd2, 0x5b, 0x8f, 0xea, 0x57, 0x50, 0x75, 0x4e, 0x77, + 0x77, 0x6e, 0x3b, 0x40, 0x8d, 0xad, 0x9e, 0xdd, 0xd4, 0x5f, 0x56, 0x0d, + 0xae, 0x04, 0x31, 0xf5, 0xc6, 0x8e, 0xda, 0x67, 0x5f, 0x36, 0x94, 0x94, + 0xec, 0xb2, 0x81, 0x65, 0x84, 0x10, 0x36, 0x58, 0x37, 0x31, 0xe0, 0xcb, + 0x4f, 0x94, 0xff, 0x00, 0x15, 0x5b, 0x27, 0x07, 0xd3, 0x25, 0xc3, 0xd8, + 0x63, 0x99, 0x21, 0xd0, 0x7c, 0xc2, 0xa5, 0x45, 0x8c, 0xc5, 0x71, 0x76, + 0x2d, 0xfe, 0x93, 0x5d, 0xcb, 0x59, 0xf4, 0x67, 0xf9, 0x55, 0x3f, 0x42, + 0xad, 0xbb, 0xab, 0x38, 0x80, 0xdb, 0x29, 0xf5, 0x67, 0x97, 0x53, 0xc8, + 0xf1, 0x2e, 0xa9, 0xda, 0xff, 0x00, 0x9a, 0x4a, 0x4a, 0x6a, 0x64, 0x51, + 0x6d, 0x2d, 0xf7, 0x89, 0x69, 0xe0, 0xf1, 0xf8, 0xfd, 0x12, 0xad, 0xf4, + 0x36, 0xb1, 0xb8, 0x17, 0x39, 0x8d, 0x87, 0xda, 0xf7, 0x30, 0xc8, 0x89, + 0xd0, 0x05, 0x67, 0x16, 0xcc, 0x6c, 0xec, 0x73, 0x65, 0x0f, 0x24, 0x30, + 0x6d, 0x7b, 0x08, 0xef, 0x1d, 0xda, 0x75, 0xd1, 0x13, 0xa7, 0x50, 0xda, + 0x68, 0xaa, 0xbe, 0xc6, 0xc7, 0x3e, 0x3c, 0x24, 0xf0, 0x92, 0x91, 0xf5, + 0x9c, 0x2b, 0xb3, 0x31, 0xad, 0xa2, 0xb2, 0x43, 0x9e, 0x2b, 0xaf, 0xca, + 0x1d, 0x63, 0x41, 0xfc, 0x12, 0xff, 0x00, 0x98, 0x9d, 0x0a, 0xa6, 0x02, + 0x5d, 0x73, 0x88, 0xdc, 0x27, 0x7c, 0x13, 0x3c, 0x1d, 0x1b, 0xf9, 0xab, + 0x56, 0xa0, 0xd2, 0xe7, 0x92, 0x60, 0x17, 0xb0, 0x79, 0x7d, 0x29, 0x51, + 0xbf, 0xa8, 0xb2, 0x7d, 0x4f, 0xa5, 0x41, 0x0c, 0x15, 0xed, 0xe5, 0xce, + 0x2e, 0x2d, 0x71, 0xf8, 0x24, 0xa7, 0x8f, 0xea, 0x9f, 0x57, 0x33, 0xfa, + 0x79, 0x2f, 0xa8, 0x8c, 0xec, 0x7e, 0xc5, 0xa3, 0x6d, 0xed, 0xf8, 0xb4, + 0x72, 0xb2, 0xbd, 0x5a, 0xb6, 0xc4, 0xbb, 0x74, 0xc7, 0xa5, 0x07, 0xd4, + 0x9f, 0x08, 0x5e, 0x86, 0x32, 0xb1, 0xed, 0x69, 0xb7, 0x77, 0x04, 0xc7, + 0x9c, 0x18, 0x3c, 0xaa, 0x1f, 0xb3, 0x71, 0x3e, 0xdb, 0xfb, 0x5b, 0xd2, + 0xfd, 0x2e, 0xc9, 0xf5, 0x64, 0xfd, 0x2d, 0xdb, 0x67, 0xc2, 0x76, 0xa4, + 0xa4, 0x35, 0x34, 0x6f, 0x60, 0x33, 0xb5, 0xa5, 0xb3, 0xf0, 0x0a, 0xdb, + 0x5f, 0x78, 0xcf, 0xc7, 0xac, 0x80, 0xea, 0x48, 0xb5, 0xee, 0xfd, 0xed, + 0xcd, 0xfa, 0x3f, 0x95, 0x53, 0x27, 0xdc, 0x1a, 0x3f, 0x78, 0x4f, 0xde, + 0x02, 0xbf, 0x51, 0x16, 0x75, 0x06, 0xf7, 0xd9, 0x5b, 0xe3, 0xe6, 0x40, + 0x49, 0x4f, 0x37, 0x9d, 0x5d, 0x6f, 0xea, 0x79, 0x76, 0x3a, 0x08, 0xf5, + 0x48, 0x3e, 0x22, 0x04, 0x2a, 0x8e, 0x64, 0xcc, 0xb6, 0x24, 0xf7, 0x57, + 0x2e, 0x67, 0xa9, 0x93, 0x93, 0x76, 0xd9, 0x63, 0xad, 0xb0, 0xcb, 0x23, + 0x77, 0xd2, 0x3c, 0x8e, 0x0a, 0x8b, 0x29, 0x6b, 0x99, 0xb9, 0x8f, 0xf5, + 0x1a, 0xde, 0x7b, 0x11, 0xe4, 0x5a, 0x92, 0x9c, 0xff, 0x00, 0xb3, 0xbc, + 0x3c, 0x35, 0x87, 0x5f, 0xe4, 0x19, 0xff, 0x00, 0x6a, 0x23, 0x2d, 0xc8, + 0x61, 0x87, 0x7b, 0xa3, 0x89, 0x10, 0x7e, 0xfd, 0x15, 0xa0, 0xda, 0xc8, + 0x12, 0xd1, 0x20, 0xf1, 0x10, 0x7e, 0xf5, 0x61, 0x95, 0x6f, 0x70, 0xdc, + 0xcd, 0xed, 0xec, 0xdd, 0x26, 0x7b, 0xf3, 0xca, 0x4a, 0x6b, 0x0b, 0xc1, + 0xd2, 0xea, 0xe7, 0x70, 0x90, 0x63, 0xbf, 0x8c, 0x8f, 0xee, 0x56, 0x3a, + 0x33, 0x2b, 0xb3, 0xab, 0xfa, 0x95, 0x48, 0x6b, 0x2a, 0x74, 0x83, 0xcc, + 0x92, 0x3c, 0x11, 0xce, 0x23, 0x46, 0x9e, 0x99, 0x1a, 0x71, 0x3f, 0xde, + 0xa7, 0xd0, 0xea, 0xac, 0x65, 0xe4, 0x90, 0x23, 0x68, 0x63, 0x63, 0x88, + 0x99, 0x3d, 0xd2, 0x53, 0xa2, 0x5d, 0x6b, 0xb2, 0x4b, 0x44, 0x86, 0xd6, + 0xc6, 0xc7, 0xc5, 0xd3, 0xa2, 0xbc, 0x4e, 0xdc, 0x7c, 0x82, 0xe1, 0xfe, + 0x0a, 0x3f, 0xce, 0x78, 0x1f, 0xc1, 0x55, 0x2e, 0xd8, 0x1c, 0x47, 0x0f, + 0xb0, 0x89, 0xf2, 0x69, 0x8d, 0x11, 0x72, 0xb7, 0x3b, 0xa7, 0xd9, 0xb1, + 0xdb, 0x6c, 0xb1, 0xf5, 0x34, 0x38, 0x89, 0xd0, 0x39, 0xce, 0x3a, 0x7c, + 0x92, 0x53, 0x1c, 0x0a, 0xc0, 0x68, 0x1f, 0xbc, 0x01, 0xfb, 0x8f, 0xfb, + 0x15, 0x7c, 0xa7, 0x0f, 0x58, 0x9e, 0xda, 0x98, 0xf9, 0xca, 0xbd, 0x4f, + 0x6f, 0xdd, 0x01, 0xbf, 0x90, 0x95, 0x95, 0x98, 0x5c, 0xc1, 0x6b, 0xda, + 0x0b, 0x88, 0x02, 0x23, 0xf9, 0x44, 0x0f, 0xe2, 0x92, 0x99, 0xb4, 0x0d, + 0x1d, 0x1f, 0x44, 0xee, 0x8f, 0x03, 0x0a, 0xde, 0x3e, 0x80, 0x07, 0x73, + 0xb6, 0x3f, 0x15, 0x56, 0xa3, 0x2c, 0xd3, 0x40, 0xed, 0x08, 0xef, 0xaa, + 0xb5, 0x59, 0x20, 0x39, 0xfc, 0xc4, 0x00, 0x3e, 0x09, 0x29, 0x2b, 0x1c, + 0x0b, 0xdb, 0xdb, 0x6c, 0x83, 0xf3, 0x47, 0xba, 0xd0, 0xd6, 0x56, 0xde, + 0x46, 0xd9, 0x3e, 0x52, 0x4f, 0xf0, 0x41, 0xa8, 0x38, 0xdc, 0xc6, 0xcf, + 0x62, 0x5d, 0x3d, 0xe5, 0x4f, 0xa8, 0x10, 0xdf, 0x50, 0xf6, 0x00, 0x34, + 0x0f, 0x80, 0x84, 0x94, 0xc3, 0x11, 0xa2, 0xc6, 0x6f, 0xe2, 0x1c, 0x5f, + 0x1f, 0x15, 0x07, 0x3a, 0xb1, 0xbf, 0x25, 0xd2, 0x3d, 0x1a, 0xec, 0x7e, + 0x9c, 0x68, 0xd9, 0xd5, 0x12, 0xb0, 0x29, 0x63, 0x58, 0x04, 0x6f, 0x66, + 0xe3, 0x1c, 0x4b, 0xbb, 0xaa, 0x3d, 0x4e, 0xe3, 0x57, 0x4a, 0xcf, 0x20, + 0xc7, 0xe8, 0x2c, 0x68, 0x8f, 0xe5, 0x08, 0xfe, 0x29, 0x29, 0xc2, 0xe8, + 0x8d, 0x03, 0x1f, 0x1d, 0xad, 0xd0, 0xbd, 0x9e, 0xa1, 0x3c, 0x89, 0x24, + 0x8f, 0xe0, 0xac, 0x51, 0x5b, 0xda, 0xeb, 0x9c, 0xe3, 0xab, 0xef, 0xb1, + 0xff, 0x00, 0x2d, 0xdb, 0x47, 0xe4, 0x42, 0xc0, 0xae, 0xdc, 0x46, 0xe2, + 0xd1, 0x6c, 0x17, 0xb9, 0xa1, 0xb2, 0x38, 0x02, 0x09, 0x83, 0xf3, 0x2a, + 0xe8, 0x23, 0x7f, 0xc4, 0x91, 0x1f, 0xda, 0x71, 0x29, 0x29, 0xa7, 0x8f, + 0x55, 0x82, 0xd0, 0xf7, 0x88, 0x2e, 0x75, 0x8e, 0xf9, 0x13, 0x0d, 0xfc, + 0x15, 0x59, 0x0d, 0x6e, 0x55, 0xc4, 0xc3, 0x7d, 0x42, 0xdf, 0xfa, 0x50, + 0xb5, 0xab, 0x6f, 0xd1, 0x11, 0x20, 0x44, 0xfd, 0xcb, 0x39, 0xb4, 0x32, + 0xda, 0x00, 0x79, 0x3b, 0x5e, 0xfd, 0xce, 0x07, 0xc0, 0x12, 0xee, 0xc9, + 0x29, 0x7b, 0x18, 0x1b, 0x8d, 0xec, 0x10, 0x0b, 0xc9, 0x60, 0xf9, 0xc0, + 0x51, 0xc9, 0xb0, 0xb4, 0x6a, 0xe0, 0x49, 0x97, 0x1f, 0x9b, 0x78, 0xfb, + 0xd1, 0x2d, 0x63, 0xcd, 0x35, 0xd4, 0x3e, 0x98, 0x0d, 0x70, 0x00, 0x71, + 0xac, 0xa0, 0x75, 0x36, 0x3b, 0x53, 0x1e, 0xde, 0x01, 0xf1, 0x20, 0x03, + 0x1f, 0x82, 0x4a, 0x5f, 0x0e, 0xd7, 0x30, 0xdb, 0x78, 0xd0, 0x96, 0x96, + 0x8f, 0x31, 0xc2, 0xd0, 0xb7, 0xf4, 0xb6, 0xe3, 0x33, 0xf7, 0xac, 0x1f, + 0x73, 0x43, 0x42, 0xa3, 0x50, 0x68, 0xdd, 0x40, 0xd1, 0xcc, 0x0c, 0x0e, + 0xf0, 0x93, 0x04, 0xfe, 0x55, 0xa1, 0x88, 0xd0, 0xec, 0xdc, 0x6d, 0xba, + 0x80, 0x09, 0x9f, 0x8b, 0x92, 0x53, 0xb7, 0x94, 0xd0, 0x6a, 0x7b, 0x5b, + 0xf9, 0xc1, 0xb3, 0xf7, 0xc2, 0xa2, 0xff, 0x00, 0xe6, 0xdf, 0x1a, 0x18, + 0x7c, 0x77, 0xd4, 0x82, 0xb4, 0x72, 0xd8, 0x5b, 0x47, 0xaa, 0x0e, 0x84, + 0xb1, 0xbe, 0x72, 0x08, 0x2b, 0x27, 0x26, 0xdf, 0x49, 0x8f, 0x87, 0x43, + 0xf6, 0xd8, 0x5a, 0x40, 0xd2, 0x40, 0x99, 0x49, 0x4e, 0x2d, 0x17, 0xe5, + 0xe2, 0xb4, 0xd7, 0x98, 0xc7, 0x3a, 0xa1, 0x03, 0x75, 0x60, 0x1f, 0xed, + 0x16, 0x68, 0xe5, 0x76, 0xb7, 0x61, 0xe5, 0x7f, 0x47, 0xb5, 0xb6, 0x3b, + 0xbb, 0x38, 0x77, 0xdd, 0xa3, 0x94, 0x69, 0xc8, 0xaa, 0xc6, 0xb5, 0xb9, + 0x4c, 0x1b, 0xbf, 0x7d, 0xba, 0xb7, 0xe6, 0x3b, 0x21, 0x64, 0x74, 0xec, + 0x6b, 0x01, 0xb2, 0xb8, 0x75, 0x8d, 0xe0, 0x8f, 0x3f, 0x31, 0xee, 0x09, + 0x29, 0x35, 0x94, 0x16, 0x0d, 0xcf, 0x68, 0x20, 0x72, 0x79, 0xd3, 0xcd, + 0xcd, 0x55, 0xdc, 0xea, 0xf7, 0x0d, 0xcd, 0xf6, 0x0e, 0x0b, 0x7b, 0x0f, + 0x92, 0x0d, 0x19, 0x1d, 0x4b, 0x1a, 0xdd, 0xac, 0x7f, 0xa8, 0x1b, 0xab, + 0x59, 0x7e, 0xb3, 0xfd, 0x5b, 0x07, 0xf1, 0x56, 0x3e, 0xdd, 0x86, 0xf1, + 0xb7, 0x3a, 0xa7, 0x62, 0x58, 0x78, 0x7f, 0x2c, 0x3f, 0xda, 0x6a, 0x4a, + 0x5d, 0x8d, 0x6b, 0x08, 0xb2, 0x8b, 0x77, 0x80, 0x75, 0x27, 0xe9, 0x6b, + 0xda, 0x64, 0x15, 0xbd, 0xd3, 0xe6, 0xd6, 0xe3, 0xba, 0x77, 0x0d, 0x5c, + 0x27, 0xc2, 0x4a, 0xc1, 0x38, 0xf5, 0xda, 0xd2, 0xea, 0x5e, 0xdb, 0x63, + 0x42, 0x59, 0x0d, 0x3f, 0x18, 0xfa, 0x2e, 0xf9, 0x2d, 0xde, 0x94, 0x0d, + 0x74, 0xe3, 0x10, 0x61, 0xbe, 0x9c, 0x6d, 0x3a, 0x41, 0x05, 0xd2, 0x92, + 0x9b, 0xdb, 0x9a, 0xd0, 0x43, 0x9a, 0x36, 0xef, 0x67, 0xdf, 0xaf, 0xf7, + 0x2c, 0xdc, 0x8d, 0x84, 0xd8, 0xda, 0xc6, 0xd1, 0x49, 0xda, 0xc1, 0x31, + 0x26, 0x77, 0xab, 0x56, 0xdd, 0xb0, 0x57, 0x1e, 0xe7, 0x59, 0x64, 0x0f, + 0x93, 0x5f, 0x2a, 0x9d, 0xb6, 0x0b, 0x6d, 0x75, 0x75, 0xbb, 0x58, 0xde, + 0xe3, 0xe3, 0xb7, 0x73, 0xa0, 0x7e, 0x09, 0x29, 0xad, 0x93, 0x8d, 0x7d, + 0x55, 0x3a, 0xda, 0xc1, 0xb8, 0x7a, 0x76, 0x3b, 0x73, 0x47, 0xd1, 0xf7, + 0x4b, 0x8c, 0x76, 0xec, 0x9f, 0xed, 0x77, 0xfd, 0x93, 0xec, 0xf1, 0xec, + 0xfb, 0x34, 0x72, 0x67, 0x7c, 0x4c, 0xa9, 0xb7, 0xa7, 0x75, 0x2b, 0xb1, + 0x9f, 0x95, 0x84, 0xd3, 0x65, 0x65, 0x8e, 0xad, 0xf5, 0x83, 0xee, 0x71, + 0xd5, 0xdc, 0x72, 0x67, 0x72, 0x7f, 0xd6, 0x7f, 0x68, 0x6e, 0xd8, 0x77, + 0x7a, 0x7f, 0x67, 0xdb, 0xb7, 0xf3, 0x7d, 0x2e, 0x36, 0xf8, 0xa4, 0xa5, + 0x9a, 0xd2, 0x6c, 0xac, 0xff, 0x00, 0xc2, 0x09, 0xfb, 0x8b, 0x91, 0xfa, + 0x65, 0xcc, 0xba, 0xf3, 0x63, 0x08, 0x77, 0xe8, 0x6d, 0x92, 0x0e, 0xef, + 0xa2, 0xf5, 0x59, 0xd6, 0xed, 0xaa, 0xfb, 0x1a, 0x0e, 0xfa, 0x5e, 0xc2, + 0x3e, 0x62, 0x13, 0x74, 0x9f, 0x51, 0x94, 0x67, 0x64, 0x35, 0xa1, 0xb5, + 0xb2, 0xa7, 0x31, 0x84, 0x44, 0x12, 0xe0, 0x5c, 0x4e, 0x9e, 0x69, 0x29, + 0xc3, 0xaa, 0xef, 0x55, 0xaf, 0x16, 0x6e, 0x1b, 0x89, 0x24, 0xb6, 0x27, + 0x5e, 0x02, 0x8b, 0x05, 0x35, 0x59, 0xbe, 0xbb, 0x1c, 0xdb, 0x48, 0x82, + 0xe3, 0xaf, 0x3e, 0x32, 0x8b, 0x8d, 0x5b, 0xc3, 0x18, 0x5e, 0x38, 0x12, + 0x48, 0xf1, 0x29, 0xed, 0xc7, 0x6b, 0x9f, 0xed, 0x69, 0x00, 0xc9, 0x31, + 0xca, 0x4a, 0x6e, 0x16, 0x55, 0x63, 0xab, 0xb0, 0xbb, 0xdc, 0x00, 0x16, + 0x39, 0xb2, 0x27, 0xc7, 0xe8, 0x76, 0xf8, 0xa3, 0xb6, 0x86, 0xed, 0x2f, + 0xa5, 0xfb, 0x9a, 0x34, 0x3e, 0x9b, 0x9a, 0x75, 0xf3, 0x6f, 0xfb, 0x16, + 0x6d, 0x4d, 0x25, 0x9e, 0xd1, 0x06, 0x48, 0x0e, 0xf8, 0x2b, 0x75, 0x31, + 0xed, 0xac, 0x1b, 0x06, 0xf9, 0xd4, 0x9e, 0xf1, 0xfd, 0x6e, 0x52, 0x53, + 0x7d, 0xb1, 0xb3, 0x73, 0x46, 0xe3, 0x1e, 0xd3, 0x05, 0x9f, 0x90, 0xa2, + 0xf4, 0xca, 0x62, 0xdc, 0x92, 0x79, 0xdc, 0x00, 0xff, 0x00, 0x35, 0x53, + 0xde, 0x1f, 0x63, 0x5e, 0x49, 0x96, 0x02, 0x1a, 0x0f, 0x06, 0x7f, 0x8a, + 0xb7, 0x86, 0x4e, 0x3e, 0x05, 0x8e, 0x79, 0x2e, 0x73, 0xec, 0x3e, 0xe3, + 0xa9, 0xd0, 0xc2, 0x4a, 0x67, 0x4d, 0xd9, 0x0e, 0xc7, 0x8c, 0x9a, 0x3d, + 0x07, 0x3b, 0x7b, 0xb1, 0xdd, 0xab, 0xf7, 0x8d, 0xce, 0x71, 0x25, 0xa0, + 0x68, 0x40, 0xfb, 0xd5, 0xcc, 0xd6, 0xb4, 0xe1, 0x56, 0xe0, 0xe9, 0x1e, + 0xad, 0x6d, 0x11, 0xa7, 0xe6, 0xb8, 0xff, 0x00, 0x14, 0x5a, 0x72, 0x9e, + 0xe0, 0xd6, 0x1f, 0x77, 0xa6, 0xc0, 0x02, 0x86, 0x4f, 0xb6, 0xac, 0x76, + 0x44, 0x87, 0x5c, 0xe7, 0x3b, 0xe4, 0xd0, 0x12, 0x53, 0x2a, 0x41, 0x0d, + 0xb1, 0xfd, 0x80, 0xd3, 0xe4, 0xd8, 0x59, 0xd6, 0x49, 0xde, 0x0f, 0x04, + 0xeb, 0x3e, 0x21, 0x69, 0x34, 0x1f, 0x42, 0xc3, 0xf1, 0x8e, 0xde, 0x4b, + 0x36, 0xf6, 0xe8, 0x48, 0xe5, 0xce, 0x74, 0xf9, 0x6b, 0x1f, 0xc1, 0x25, + 0x30, 0xaa, 0xda, 0xc5, 0xed, 0xa4, 0x92, 0x5c, 0x58, 0x5e, 0x48, 0xe0, + 0x06, 0x44, 0x83, 0xf7, 0xab, 0x74, 0x8d, 0xf5, 0x56, 0xe0, 0x75, 0x3b, + 0x89, 0x8f, 0x8a, 0xa6, 0xd1, 0x19, 0x56, 0x38, 0x81, 0xed, 0xa6, 0x34, + 0xe7, 0xdc, 0xe3, 0xfd, 0xca, 0xfe, 0x23, 0x03, 0x6a, 0x61, 0x1a, 0x8d, + 0xbf, 0xc2, 0x52, 0x53, 0x67, 0x70, 0x65, 0x76, 0x58, 0xd0, 0x5e, 0xe6, + 0x81, 0x0d, 0x68, 0x97, 0x7c, 0x82, 0x15, 0xed, 0x2f, 0x61, 0x0e, 0xfa, + 0x45, 0xec, 0x93, 0xe6, 0x54, 0xf1, 0x68, 0x32, 0xf7, 0x09, 0x2e, 0x79, + 0x1b, 0x8f, 0x80, 0x68, 0x4d, 0x91, 0x63, 0x77, 0xb5, 0x83, 0xdc, 0xe2, + 0xfd, 0xe4, 0x0e, 0xc1, 0xa3, 0xba, 0x4a, 0x66, 0xea, 0x1c, 0xd6, 0xbc, + 0x93, 0x3a, 0x35, 0xa3, 0xe0, 0xc0, 0x25, 0x65, 0xf5, 0x5a, 0x4f, 0xec, + 0x7c, 0xb7, 0x19, 0xfd, 0x3b, 0xa9, 0xad, 0xb3, 0xc4, 0xba, 0xc6, 0x08, + 0x1f, 0x25, 0xb0, 0xfb, 0x5b, 0x4e, 0x1d, 0xa6, 0xd3, 0x3d, 0x9a, 0x79, + 0x00, 0x90, 0xd6, 0xf6, 0xf8, 0xac, 0xbf, 0xac, 0x76, 0x1a, 0xfa, 0x6f, + 0x4e, 0xa1, 0xbf, 0x4a, 0xcc, 0x9a, 0xdc, 0x47, 0x8e, 0xdd, 0xcf, 0xfe, + 0x09, 0x29, 0xce, 0xc8, 0x2d, 0x3d, 0x50, 0x56, 0x01, 0x26, 0xba, 0xf4, + 0x8e, 0xd3, 0xdc, 0xfd, 0xc9, 0x06, 0x00, 0x2b, 0x00, 0x6e, 0x20, 0x6e, + 0x1f, 0x13, 0x21, 0x03, 0x22, 0x68, 0xea, 0x72, 0x1a, 0xf7, 0x97, 0x97, + 0x0d, 0xfc, 0xc4, 0xfb, 0xa0, 0xfc, 0x15, 0xfa, 0xd9, 0x58, 0x73, 0x1c, + 0xff, 0x00, 0xa7, 0xe9, 0xb0, 0x3a, 0x7c, 0xa7, 0xff, 0x00, 0x24, 0x92, + 0x91, 0x63, 0x83, 0xfa, 0x67, 0x81, 0xf4, 0x24, 0x9f, 0x90, 0xd1, 0x54, + 0xaf, 0x4c, 0x77, 0x34, 0x08, 0xda, 0xe8, 0x07, 0xc8, 0x06, 0x8f, 0xe2, + 0xad, 0xd2, 0xf7, 0x8a, 0xb2, 0x9c, 0x74, 0x2f, 0x2e, 0xf6, 0xff, 0x00, + 0x54, 0xc0, 0xfb, 0xd0, 0x03, 0x6a, 0x75, 0x0d, 0x6c, 0xfb, 0x5e, 0xed, + 0xbf, 0x12, 0x48, 0x9f, 0xc8, 0x92, 0x9b, 0xe2, 0x8a, 0x8d, 0x16, 0x13, + 0xab, 0xb7, 0x86, 0x7c, 0xb6, 0xc4, 0x2c, 0xac, 0xd0, 0xdb, 0x4d, 0x4d, + 0x1f, 0x9f, 0x73, 0xc6, 0xbe, 0x00, 0xec, 0x5a, 0xb5, 0xb4, 0x33, 0x08, + 0x3d, 0x82, 0x77, 0x59, 0xb8, 0x0e, 0xe7, 0x58, 0xfc, 0x8b, 0x39, 0xd5, + 0x93, 0x9f, 0x45, 0x00, 0x00, 0x2b, 0x93, 0xf3, 0x9d, 0xc5, 0x25, 0x2a, + 0xf0, 0x2b, 0x75, 0xb6, 0x00, 0x0b, 0x86, 0xe7, 0x0d, 0x39, 0xda, 0xd3, + 0x1f, 0x8a, 0xb3, 0xd1, 0x5b, 0x27, 0x1d, 0xce, 0x10, 0xe1, 0x43, 0x1c, + 0x67, 0xc5, 0xda, 0xa0, 0xe5, 0xed, 0x73, 0xde, 0x23, 0xb3, 0xc4, 0xf1, + 0xa4, 0x41, 0x5a, 0x5d, 0x32, 0xa2, 0xcf, 0x44, 0x78, 0x51, 0x58, 0x8f, + 0xec, 0x84, 0x94, 0xe9, 0xe6, 0x01, 0xf6, 0x36, 0xb7, 0xc6, 0xc1, 0x3f, + 0x8a, 0xc2, 0xea, 0x0f, 0xb0, 0x61, 0xdc, 0xfa, 0xe0, 0xbc, 0x54, 0xed, + 0xb3, 0xa6, 0xa4, 0x80, 0xb6, 0x73, 0x1f, 0x35, 0xb1, 0xa3, 0xb3, 0xf5, + 0xf9, 0x02, 0xb1, 0xb3, 0xcb, 0x06, 0x35, 0xc2, 0xc9, 0xda, 0x5a, 0xd6, + 0x98, 0x3e, 0x2e, 0x49, 0x4e, 0x16, 0x37, 0x50, 0x23, 0xdb, 0xd4, 0x18, + 0xea, 0xe6, 0x36, 0xd8, 0xe0, 0x60, 0x7c, 0x5c, 0xcf, 0xe2, 0x15, 0xfa, + 0x6a, 0xdc, 0x0b, 0xf1, 0x6c, 0x6b, 0xda, 0x7b, 0x82, 0x09, 0xff, 0x00, + 0x38, 0x7f, 0x10, 0xa9, 0x96, 0x38, 0x0f, 0x63, 0xa7, 0xc8, 0xa9, 0xd7, + 0x8b, 0x53, 0x9a, 0x2c, 0x6d, 0x6e, 0xad, 0xf3, 0xb5, 0xd7, 0x52, 0x76, + 0x41, 0x3f, 0xd5, 0x30, 0x7e, 0xe4, 0x94, 0x9e, 0xc6, 0xd8, 0x09, 0x6b, + 0xf5, 0x81, 0xdc, 0x47, 0xe2, 0xa4, 0xc1, 0x55, 0x9f, 0xa3, 0x33, 0x5b, + 0x23, 0xb8, 0xdc, 0xd9, 0xe1, 0x46, 0xbb, 0x33, 0x18, 0x21, 0x8f, 0xaf, + 0x3a, 0xbe, 0xed, 0x74, 0x32, 0xc0, 0x3f, 0xac, 0x34, 0xfb, 0xd2, 0x17, + 0x60, 0xb8, 0xfa, 0x56, 0x7a, 0x98, 0x36, 0x1e, 0x1b, 0x67, 0xd0, 0x9f, + 0x8f, 0x09, 0x29, 0x0d, 0x9d, 0x29, 0xb5, 0x7e, 0x9e, 0xb7, 0x9a, 0x01, + 0xd0, 0x5f, 0x51, 0xf6, 0xff, 0x00, 0x68, 0x2e, 0x8f, 0xa4, 0x36, 0xda, + 0xb1, 0xe9, 0xaf, 0x22, 0xc1, 0x6b, 0xeb, 0x05, 0xce, 0xb2, 0x34, 0x33, + 0x2e, 0xd3, 0xe4, 0xb0, 0x8d, 0x16, 0x7a, 0x6e, 0x35, 0x91, 0x63, 0x0e, + 0x9b, 0x99, 0xa8, 0xf9, 0x82, 0xb7, 0x31, 0xdc, 0xc6, 0x36, 0xb6, 0xfd, + 0x02, 0x6b, 0x00, 0x7c, 0xab, 0x94, 0x94, 0x87, 0x3b, 0x77, 0xaf, 0x40, + 0xb0, 0x86, 0x55, 0x8f, 0x6d, 0x56, 0xee, 0xed, 0xaf, 0xa8, 0x1d, 0xbb, + 0xca, 0x0a, 0xa1, 0x95, 0x70, 0xaa, 0xf7, 0x96, 0xb4, 0xbd, 0xce, 0x2e, + 0x15, 0xb5, 0xa2, 0x5d, 0x04, 0x98, 0xd3, 0xe0, 0x16, 0x86, 0x63, 0xcd, + 0x55, 0xbf, 0x28, 0xc6, 0xd0, 0x0b, 0x00, 0x22, 0x4c, 0xbc, 0x06, 0x08, + 0xf8, 0x6e, 0x28, 0xbd, 0x2b, 0x1a, 0xac, 0x8e, 0xb1, 0x5d, 0xc0, 0xe9, + 0x8e, 0x4d, 0x8e, 0x83, 0xaf, 0xb5, 0xb1, 0xaf, 0xcc, 0xa4, 0xa6, 0xd7, + 0xd5, 0xbc, 0xd6, 0x62, 0xf4, 0xec, 0xdb, 0xf3, 0x09, 0xa9, 0x98, 0xf6, + 0x37, 0x73, 0x5c, 0x08, 0x73, 0x7f, 0x46, 0xd8, 0x11, 0xe7, 0x2a, 0xbf, + 0xda, 0x3f, 0x5a, 0xfb, 0x4c, 0xbf, 0xd2, 0xf5, 0xfd, 0x59, 0xef, 0x11, + 0xfd, 0xca, 0xe7, 0xd6, 0x5c, 0x6a, 0xeb, 0xe8, 0xd9, 0x16, 0x56, 0x75, + 0xcc, 0xb9, 0x96, 0x3d, 0xd1, 0x1d, 0x84, 0x7d, 0xc1, 0xa1, 0x65, 0xcb, + 0xfe, 0xcf, 0xbe, 0x34, 0x88, 0x8e, 0xdf, 0x46, 0x52, 0x52, 0x0b, 0x5b, + 0x18, 0xd9, 0x6e, 0x07, 0x47, 0x06, 0x18, 0x56, 0x31, 0xe2, 0xbf, 0xab, + 0xd9, 0x3b, 0x40, 0x1b, 0xd8, 0xef, 0xbc, 0x82, 0x9a, 0xb6, 0x8b, 0x69, + 0x73, 0x40, 0xd1, 0xed, 0x12, 0x7e, 0x21, 0x13, 0x35, 0x85, 0xbd, 0x0d, + 0xec, 0x6c, 0x34, 0xc0, 0x6e, 0x9e, 0x64, 0x36, 0x7f, 0x14, 0x94, 0xf3, + 0x34, 0x53, 0x73, 0x5b, 0x03, 0x5f, 0xea, 0x98, 0x3f, 0x31, 0xc2, 0x38, + 0x73, 0x83, 0xa4, 0xba, 0x1d, 0xac, 0x87, 0x0f, 0x11, 0xe2, 0xd4, 0x17, + 0x58, 0xea, 0x88, 0x0f, 0x81, 0xb8, 0xc6, 0xe3, 0x2d, 0x85, 0x6e, 0x9c, + 0x41, 0x73, 0x5d, 0x6b, 0x6c, 0xdb, 0x4b, 0x61, 0xa0, 0x93, 0x3b, 0x89, + 0x3d, 0xfe, 0x09, 0x29, 0x81, 0x2e, 0x35, 0xec, 0xd4, 0x6d, 0xd3, 0x4f, + 0x74, 0x1f, 0x15, 0x7f, 0x1f, 0x6b, 0x98, 0x18, 0x44, 0xe8, 0x3c, 0xb4, + 0x85, 0x52, 0xd8, 0xa0, 0x06, 0x02, 0x2c, 0x8f, 0xcf, 0x66, 0xb2, 0x3e, + 0x09, 0x99, 0x6b, 0x39, 0x16, 0x91, 0x61, 0x8d, 0x1d, 0x20, 0x04, 0x94, + 0x99, 0xf4, 0x16, 0x8d, 0xcc, 0x76, 0xd3, 0xcc, 0x72, 0x0c, 0xf6, 0x57, + 0xa9, 0x63, 0x9b, 0xd3, 0xab, 0x63, 0xb5, 0x2e, 0x73, 0x64, 0x0e, 0xc4, + 0x9d, 0xcb, 0x3d, 0xce, 0xc9, 0x00, 0x10, 0xf6, 0x90, 0x27, 0x48, 0x90, + 0x7e, 0xe5, 0x2c, 0xfe, 0xbd, 0x8d, 0x8b, 0x43, 0x31, 0xe9, 0x02, 0xec, + 0x81, 0x0e, 0x20, 0x7d, 0x16, 0xba, 0x22, 0x0f, 0xde, 0x92, 0x9d, 0x7a, + 0xf2, 0xb1, 0xf1, 0x1b, 0x66, 0x4e, 0x45, 0x8d, 0x63, 0x1d, 0xe3, 0xcf, + 0xdc, 0xb2, 0xf3, 0xbe, 0xb8, 0xe0, 0x87, 0x30, 0x51, 0x53, 0xae, 0x0c, + 0x73, 0x9c, 0x3f, 0x35, 0xa6, 0x7e, 0x2b, 0x93, 0xce, 0xea, 0x19, 0x19, + 0x0f, 0xdd, 0x7b, 0xf7, 0xbb, 0xf7, 0x7b, 0x0f, 0x90, 0x55, 0x3f, 0x4a, + 0xfe, 0x01, 0xf8, 0x04, 0x94, 0xf6, 0xd8, 0xbf, 0x5d, 0xa9, 0xb9, 0xde, + 0x8b, 0xb1, 0x0b, 0x0d, 0x84, 0x07, 0x38, 0x3b, 0x70, 0x1a, 0xf6, 0x08, + 0xb5, 0x75, 0x7e, 0x93, 0x91, 0x68, 0x15, 0x64, 0x7b, 0xe4, 0xe9, 0x63, + 0x76, 0x4c, 0x9f, 0x89, 0x0b, 0x82, 0x25, 0xed, 0x3a, 0xa2, 0xb6, 0x1c, + 0x24, 0x24, 0xa7, 0xd0, 0x28, 0x66, 0xf7, 0x67, 0x6b, 0x3e, 0xaf, 0xa5, + 0x53, 0x1c, 0x35, 0xd3, 0x6e, 0xe3, 0x07, 0xfb, 0x4a, 0xed, 0x2c, 0x35, + 0xd4, 0x2b, 0x6c, 0x90, 0xc1, 0xb4, 0x4f, 0x90, 0x85, 0xc1, 0xf4, 0xfe, + 0xad, 0x99, 0x85, 0x73, 0x5e, 0xc7, 0x97, 0x31, 0xba, 0x1a, 0xcf, 0xd1, + 0x23, 0xe0, 0xbb, 0xdc, 0x77, 0x8b, 0x2a, 0x65, 0xcc, 0x32, 0x1e, 0x01, + 0x11, 0xc7, 0xb8, 0x4a, 0x4a, 0x6e, 0xb8, 0xb8, 0x52, 0x05, 0x63, 0xde, + 0x58, 0x37, 0x47, 0xc9, 0x51, 0xc5, 0xae, 0xcd, 0xae, 0xf6, 0x96, 0x9b, + 0x88, 0x10, 0x7f, 0x34, 0xef, 0xda, 0xd1, 0x2a, 0xff, 0x00, 0xa6, 0x59, + 0x57, 0xa9, 0x27, 0xc2, 0x07, 0x1f, 0x30, 0x85, 0x49, 0xb2, 0xba, 0x58, + 0xd7, 0xc1, 0xb8, 0x41, 0x74, 0x71, 0x3a, 0x4f, 0x29, 0x29, 0x2b, 0x1a, + 0x6b, 0xc7, 0x7d, 0x5f, 0x48, 0xee, 0x7b, 0x4f, 0xc4, 0x80, 0xb2, 0x7e, + 0xb3, 0x1d, 0xdd, 0x47, 0xa3, 0x54, 0xe1, 0x15, 0xef, 0xb2, 0xc0, 0x07, + 0x83, 0x5a, 0xc6, 0x89, 0x1f, 0x35, 0xa3, 0x45, 0xee, 0x75, 0x95, 0xb5, + 0xdc, 0x59, 0x60, 0x79, 0xf1, 0xd4, 0xcc, 0x2c, 0xbf, 0xac, 0x16, 0x6e, + 0xfa, 0xd3, 0xd3, 0xe9, 0x1f, 0x43, 0x1e, 0x87, 0xbd, 0xc3, 0xfa, 0xce, + 0x8f, 0xfb, 0xea, 0x4a, 0x69, 0x3e, 0x93, 0xf6, 0xd7, 0x39, 0xe6, 0x01, + 0x7b, 0x9c, 0x35, 0xf2, 0x71, 0x84, 0x72, 0x0b, 0xec, 0xb1, 0xa0, 0xc0, + 0x0d, 0x0d, 0x07, 0xcc, 0x08, 0x43, 0x73, 0x3d, 0x5b, 0x03, 0xb9, 0x89, + 0x24, 0x1f, 0x13, 0xb7, 0x55, 0x60, 0x6d, 0x17, 0x3a, 0x47, 0x72, 0x42, + 0x4a, 0x61, 0x73, 0x76, 0xe2, 0x39, 0xce, 0xfc, 0xe2, 0x41, 0x83, 0x3a, + 0xc8, 0x41, 0xa6, 0xa9, 0xc7, 0x0e, 0x78, 0x87, 0x97, 0xc9, 0xef, 0x0e, + 0x0d, 0x2a, 0xc5, 0xc0, 0xbb, 0x14, 0xb6, 0x35, 0xdd, 0x33, 0xf1, 0x0a, + 0x54, 0xd5, 0xfa, 0x2a, 0xdb, 0x27, 0xbb, 0x88, 0xf1, 0x2e, 0x91, 0xaa, + 0x4a, 0x5e, 0xa8, 0x6b, 0xab, 0xa9, 0xda, 0xb5, 0xac, 0x9f, 0xfa, 0x31, + 0xfc, 0x15, 0x1a, 0x5c, 0x3f, 0x68, 0x17, 0xbb, 0xc1, 0xda, 0xf3, 0xa9, + 0x74, 0x08, 0xf9, 0x2d, 0x2c, 0x76, 0x0b, 0x3d, 0xc7, 0xe8, 0x00, 0x5a, + 0xd1, 0xf0, 0xd3, 0x5f, 0xf3, 0x96, 0x41, 0xa7, 0x21, 0xb5, 0xb3, 0xd2, + 0x2d, 0x16, 0x4e, 0xe2, 0xe7, 0x70, 0x5b, 0xb9, 0xc9, 0x29, 0x67, 0x17, + 0x59, 0x46, 0x43, 0x9c, 0xd2, 0xc7, 0x32, 0xb7, 0x00, 0x4f, 0x8b, 0xe4, + 0x48, 0xfb, 0xd7, 0x41, 0x43, 0x48, 0xb8, 0x48, 0xfa, 0x2c, 0x63, 0x7f, + 0xe8, 0xac, 0x6b, 0xd8, 0x45, 0x25, 0xa4, 0x1f, 0x73, 0xea, 0xa8, 0x1f, + 0xeb, 0x3c, 0x38, 0xfe, 0x45, 0xd0, 0x56, 0xc3, 0xf6, 0x87, 0xb7, 0xfa, + 0xbf, 0xf5, 0x21, 0x25, 0x35, 0x72, 0xec, 0x8b, 0x59, 0x54, 0x12, 0x1e, + 0x5e, 0xe2, 0x47, 0x03, 0x68, 0xd3, 0xf2, 0xac, 0xce, 0xa6, 0xf6, 0xd7, + 0x89, 0x6b, 0x9f, 0x3b, 0x66, 0xb1, 0x20, 0x1e, 0x67, 0x77, 0xe6, 0x82, + 0xb4, 0xf3, 0x1a, 0x5b, 0x90, 0xd0, 0x7b, 0xb4, 0x8f, 0xbc, 0xaa, 0x19, + 0x83, 0x75, 0x7e, 0x9e, 0xed, 0xae, 0x7d, 0x80, 0x89, 0xe0, 0xed, 0x6c, + 0xc2, 0x4a, 0x73, 0x31, 0x9b, 0x46, 0x53, 0x49, 0xa2, 0xcf, 0x7c, 0xea, + 0xd3, 0x0e, 0x1f, 0x7b, 0x4a, 0xb8, 0x2a, 0xc8, 0x6c, 0x4f, 0xa6, 0x1b, + 0xb4, 0xb1, 0xd2, 0x1d, 0x13, 0xe2, 0x42, 0xab, 0x6e, 0x0d, 0x72, 0x4d, + 0xd4, 0x43, 0xbf, 0x7d, 0xbf, 0xde, 0x35, 0x50, 0x1f, 0x6a, 0xae, 0x3d, + 0x3c, 0x87, 0x11, 0xd9, 0xb6, 0xfb, 0xc7, 0xc3, 0x5d, 0x7f, 0x14, 0x94, + 0x92, 0xfa, 0x9e, 0x23, 0xd4, 0x11, 0x12, 0x03, 0xd9, 0xdc, 0x8f, 0x12, + 0xa2, 0xfb, 0x6e, 0x75, 0x62, 0xa2, 0xe1, 0xa7, 0x67, 0x09, 0xd3, 0xee, + 0x4e, 0x3a, 0x8b, 0x9a, 0x00, 0xbe, 0x89, 0xf1, 0x75, 0x46, 0x7f, 0xe8, + 0xbf, 0xfb, 0xd4, 0x8d, 0xdd, 0x36, 0xe3, 0x0d, 0xb0, 0x31, 0xc7, 0x86, + 0xbc, 0x1a, 0xcc, 0xfc, 0x1d, 0xa7, 0xdc, 0x92, 0x9a, 0x9e, 0x9d, 0x4c, + 0x24, 0xd6, 0xf7, 0xe3, 0x3b, 0xbb, 0xaa, 0x20, 0xb0, 0xff, 0x00, 0x63, + 0xfd, 0x8b, 0xa1, 0x73, 0x4b, 0x71, 0xf1, 0x8d, 0xa4, 0x3d, 0xe2, 0xb2, + 0x1d, 0x60, 0x11, 0xf9, 0x87, 0x58, 0x0b, 0x35, 0xd8, 0x95, 0xbd, 0x9e, + 0xc7, 0xb4, 0xed, 0x3c, 0x46, 0xdd, 0x7e, 0x2b, 0x4e, 0xd6, 0x1d, 0xb8, + 0xed, 0xe4, 0x19, 0x24, 0x79, 0x40, 0x49, 0x48, 0x7a, 0xc3, 0x5d, 0x6b, + 0x2b, 0xc2, 0x66, 0xf1, 0x63, 0xd8, 0xeb, 0x61, 0xb1, 0x05, 0xad, 0x2d, + 0x69, 0x95, 0xa5, 0xf5, 0x36, 0x8a, 0xda, 0x32, 0x5e, 0xd9, 0xf6, 0x6c, + 0xac, 0x6e, 0xd4, 0x81, 0xa9, 0x22, 0x53, 0x3f, 0x1a, 0xab, 0xef, 0xfb, + 0x4b, 0xb5, 0xb2, 0xba, 0x9c, 0xc6, 0xf8, 0x09, 0x7b, 0xfb, 0x21, 0xf4, + 0x9c, 0x87, 0x74, 0xdb, 0x58, 0xc6, 0x8d, 0xec, 0xc8, 0xb4, 0x56, 0xf1, + 0x31, 0x05, 0xfa, 0x07, 0x77, 0xe1, 0x25, 0x3a, 0x5f, 0x5a, 0xb6, 0xfe, + 0xc8, 0x70, 0x3f, 0xe9, 0x19, 0x03, 0xe6, 0xb1, 0xbd, 0xde, 0x87, 0xa5, + 0x1a, 0xc4, 0x4c, 0xff, 0x00, 0x25, 0x6d, 0x7d, 0x68, 0xc6, 0x75, 0xdd, + 0x34, 0x3d, 0xa2, 0x4d, 0x36, 0x35, 0xf1, 0xda, 0x0f, 0xb0, 0xff, 0x00, + 0xd5, 0x2c, 0xff, 0x00, 0x4f, 0xf5, 0x5f, 0xa3, 0xa6, 0xee, 0x7c, 0xf6, + 0xc2, 0x4a, 0x68, 0xe0, 0x6f, 0x15, 0x37, 0x59, 0x6b, 0x99, 0x3a, 0xf6, + 0xdb, 0x21, 0x37, 0x53, 0xbd, 0xd6, 0x74, 0x8f, 0x58, 0x34, 0xd4, 0x5e, + 0x6a, 0x05, 0xa4, 0x89, 0x6c, 0x99, 0xfe, 0x08, 0x78, 0xd6, 0x7f, 0x36, + 0x1a, 0x20, 0x6d, 0xb1, 0x87, 0xfb, 0x2e, 0x3e, 0x08, 0xfd, 0x52, 0xbd, + 0xdd, 0x1a, 0xb6, 0x81, 0xb8, 0xd9, 0x6b, 0x79, 0x3d, 0x98, 0xd7, 0x24, + 0xa7, 0x16, 0xca, 0xac, 0xb1, 0xa1, 0xa4, 0x92, 0xd8, 0x98, 0x8e, 0xea, + 0x35, 0xb7, 0x60, 0xd8, 0xea, 0xda, 0xf0, 0x0c, 0x8d, 0x63, 0xf0, 0x56, + 0x18, 0x0b, 0x5a, 0x1a, 0x77, 0x57, 0xe3, 0x3e, 0x05, 0x4e, 0xaf, 0x00, + 0xe9, 0xf2, 0x29, 0x29, 0xaf, 0x70, 0xad, 0xcc, 0x25, 0x8c, 0x2d, 0x74, + 0x7d, 0x1e, 0x44, 0xf9, 0x20, 0x8c, 0x82, 0xc8, 0x65, 0xac, 0x04, 0x78, + 0xc2, 0xd4, 0x7b, 0x08, 0x04, 0xba, 0xb0, 0x60, 0x72, 0x10, 0x48, 0x60, + 0x01, 0xaf, 0x6e, 0xd0, 0x74, 0xe3, 0x43, 0xf3, 0x49, 0x4e, 0x7e, 0x56, + 0x4b, 0xe8, 0xc6, 0x17, 0x52, 0xf6, 0xb5, 0xce, 0x26, 0x1b, 0xf8, 0x10, + 0xd5, 0x87, 0x75, 0x8e, 0x2e, 0x75, 0x8e, 0xf6, 0x97, 0x19, 0x8e, 0x56, + 0xaf, 0x57, 0x64, 0x8a, 0x8c, 0xed, 0x00, 0xbb, 0xd8, 0x35, 0x00, 0xe9, + 0xaf, 0xcd, 0x64, 0xde, 0xd3, 0xe9, 0x12, 0x38, 0x9f, 0xe0, 0x92, 0x9a, + 0xd5, 0xb0, 0xd8, 0xff, 0x00, 0x12, 0x4a, 0xe9, 0x30, 0x99, 0xd2, 0xea, + 0xc7, 0x77, 0xab, 0x73, 0x7d, 0x56, 0x89, 0x73, 0x1a, 0xdd, 0xce, 0x8d, + 0x38, 0xec, 0xb0, 0x31, 0x2a, 0xb5, 0xf6, 0x01, 0x5b, 0x77, 0x38, 0x6b, + 0x1c, 0xae, 0x8b, 0x07, 0x0b, 0x14, 0x66, 0xe1, 0xda, 0xf8, 0x71, 0xb9, + 0xe6, 0xbb, 0x5b, 0xb4, 0x35, 0xbe, 0xef, 0x69, 0xda, 0x1a, 0x3c, 0xd2, + 0x53, 0x9b, 0x93, 0x56, 0x36, 0x40, 0x36, 0x63, 0x34, 0xb5, 0xb3, 0x00, + 0xbc, 0x80, 0x49, 0xf8, 0x4c, 0xac, 0xda, 0xa6, 0xbb, 0x5c, 0xd2, 0x22, + 0x3b, 0x15, 0xd8, 0x7e, 0xca, 0xc5, 0xa8, 0xbe, 0x87, 0xb5, 0xad, 0xba, + 0xa2, 0x43, 0x81, 0x1b, 0x4b, 0xda, 0x0f, 0xe3, 0x04, 0x2c, 0x7e, 0xa9, + 0x8b, 0x48, 0xbd, 0xae, 0xac, 0x1d, 0x84, 0x02, 0x7f, 0xac, 0x12, 0x53, + 0x9c, 0xe1, 0xef, 0x0e, 0xec, 0x0f, 0x6f, 0xbd, 0x76, 0xb8, 0xe7, 0xab, + 0xe3, 0xe3, 0x51, 0xf6, 0x7a, 0x2b, 0xcb, 0xc7, 0x0c, 0x61, 0x0c, 0xdc, + 0x6b, 0xb5, 0xb2, 0x26, 0x25, 0xde, 0xd2, 0xb9, 0x3a, 0xf1, 0xc5, 0xf7, + 0xd7, 0x53, 0x74, 0x0e, 0x70, 0x0e, 0x71, 0xed, 0x3c, 0x9f, 0x90, 0x5e, + 0x8d, 0x8d, 0xf6, 0x77, 0xb4, 0x7a, 0x0f, 0x6b, 0xeb, 0x64, 0x35, 0x9b, + 0x08, 0x3a, 0x01, 0x09, 0x29, 0x0e, 0x0f, 0x56, 0x19, 0x87, 0xec, 0x56, + 0xe3, 0x5f, 0x8b, 0x70, 0x93, 0xfa, 0x66, 0x7b, 0x4f, 0x73, 0xfa, 0x46, + 0xcb, 0x51, 0xe5, 0xce, 0x71, 0x9d, 0x01, 0x00, 0xfc, 0x80, 0x95, 0x69, + 0xe0, 0x31, 0x8c, 0x81, 0xa1, 0x79, 0x2e, 0xf9, 0x03, 0xcf, 0xc9, 0x57, + 0x7b, 0xce, 0xdf, 0x6f, 0x3b, 0x60, 0xfd, 0xdf, 0xed, 0x49, 0x4c, 0xb1, + 0x03, 0x5d, 0x99, 0x48, 0xfd, 0xc6, 0x92, 0x7e, 0x41, 0x60, 0x66, 0x9d, + 0xff, 0x00, 0x59, 0xaf, 0x71, 0x92, 0x69, 0xc4, 0x60, 0xf9, 0xb8, 0xb9, + 0xff, 0x00, 0xc5, 0x74, 0x38, 0xe0, 0x35, 0xce, 0xb4, 0x11, 0xbc, 0x07, + 0x81, 0xf0, 0x22, 0x17, 0x3f, 0x60, 0x16, 0xfd, 0x65, 0xea, 0x96, 0x03, + 0xa5, 0x6d, 0xa6, 0xad, 0x3c, 0x45, 0x43, 0xf8, 0xa4, 0xa4, 0x6d, 0x0e, + 0xfb, 0x43, 0x7b, 0x30, 0xd6, 0xcd, 0x7c, 0xcb, 0xff, 0x00, 0xd8, 0x8b, + 0x71, 0xda, 0xe2, 0x01, 0xd5, 0xc6, 0x01, 0xef, 0x25, 0x4b, 0x1d, 0xa2, + 0xcb, 0x1c, 0xe3, 0xae, 0xc3, 0x5b, 0x63, 0xc0, 0xb7, 0x71, 0x4c, 0xf0, + 0x0d, 0xa1, 0xee, 0x1c, 0x6b, 0xf7, 0x4a, 0x4a, 0x67, 0x94, 0x40, 0xa6, + 0x91, 0x3e, 0xd7, 0x38, 0x38, 0x9f, 0x20, 0x27, 0xf8, 0x29, 0x39, 0xb1, + 0x65, 0x60, 0x38, 0x83, 0xb4, 0x39, 0xc3, 0xc4, 0x43, 0xb6, 0x8f, 0xfa, + 0x49, 0xb2, 0x19, 0x38, 0xa1, 0xbd, 0x85, 0x70, 0xd1, 0xf8, 0x29, 0x43, + 0xdd, 0xb1, 0xe6, 0x78, 0x6b, 0x5d, 0xf1, 0x80, 0x92, 0x9b, 0x41, 0xcd, + 0xa7, 0xa7, 0xba, 0xd0, 0x01, 0x86, 0xbb, 0x9d, 0x24, 0xac, 0xfa, 0x01, + 0x1b, 0xbd, 0xb2, 0x45, 0x6c, 0xd0, 0xf6, 0x9e, 0x40, 0x5a, 0x5e, 0x96, + 0xfc, 0x50, 0xc7, 0xf7, 0xdc, 0xf8, 0xfb, 0xff, 0x00, 0x89, 0x55, 0x1a, + 0xc0, 0x5d, 0x61, 0x9f, 0xa6, 0xe0, 0x40, 0xfe, 0xa6, 0xbf, 0xc1, 0x25, + 0x35, 0x0b, 0x09, 0xb3, 0x0d, 0x9d, 0xaf, 0xca, 0x6b, 0xc0, 0xf2, 0x6b, + 0x5e, 0xe5, 0xbf, 0x51, 0x8c, 0xbb, 0x4f, 0x98, 0x8f, 0x88, 0x0b, 0x0c, + 0x34, 0x0e, 0xa7, 0xd2, 0x58, 0x38, 0x71, 0xb2, 0xc8, 0xf2, 0x0d, 0x60, + 0xff, 0x00, 0xbf, 0x2e, 0x82, 0x90, 0x05, 0xb7, 0x38, 0x8f, 0xce, 0x29, + 0x29, 0xa3, 0x9d, 0x22, 0xc6, 0xc8, 0xd4, 0x56, 0x07, 0xcc, 0xb8, 0x95, + 0x89, 0xd6, 0xad, 0xb2, 0x8a, 0xb1, 0xee, 0xa8, 0xb7, 0xd4, 0x16, 0x38, + 0x86, 0xbf, 0x50, 0xef, 0x69, 0x6f, 0x03, 0xe2, 0xb6, 0x73, 0x0f, 0xa9, + 0x7b, 0xe3, 0x50, 0x03, 0x40, 0x1f, 0x00, 0x56, 0x1f, 0x58, 0x63, 0x32, + 0xaa, 0xa5, 0x9e, 0xdf, 0xd1, 0xbd, 0xdb, 0x83, 0xbc, 0x48, 0x69, 0xd0, + 0xfc, 0xd2, 0x53, 0x52, 0x9e, 0xbc, 0xf1, 0xa5, 0xf8, 0xee, 0x23, 0xf3, + 0x9d, 0x51, 0x0f, 0xff, 0x00, 0xa2, 0xe8, 0x2a, 0xc3, 0x7a, 0xd7, 0x4d, + 0xb4, 0xed, 0x7b, 0xc3, 0x4f, 0x66, 0xda, 0xd2, 0xcf, 0xcb, 0xa7, 0xe2, + 0xb3, 0x2c, 0xc7, 0xc8, 0xa2, 0x36, 0x6e, 0xda, 0x3b, 0x38, 0x6f, 0x6a, + 0x8b, 0xee, 0x6b, 0xc6, 0xdb, 0xab, 0x05, 0xde, 0x22, 0x08, 0xfb, 0x9d, + 0xaa, 0x4a, 0x77, 0x03, 0x70, 0xef, 0xd5, 0x95, 0xb5, 0xc2, 0x34, 0x75, + 0x4e, 0x07, 0x5f, 0x94, 0xa0, 0xd9, 0x83, 0x59, 0xf6, 0x41, 0x83, 0xc6, + 0xe8, 0x3f, 0xdc, 0xb2, 0x6b, 0xc1, 0xc1, 0xb7, 0x6f, 0xa6, 0x7d, 0x3b, + 0x63, 0x5d, 0x84, 0x83, 0x2a, 0xc0, 0xc6, 0xea, 0x74, 0xeb, 0x8d, 0x95, + 0x69, 0x81, 0x30, 0xe3, 0xb8, 0x7d, 0xce, 0x94, 0x94, 0xda, 0x6f, 0x4f, + 0x75, 0x44, 0x1a, 0x5e, 0xfa, 0x5b, 0xf9, 0xee, 0xa9, 0xd1, 0xf3, 0xd8, + 0x64, 0x15, 0xb5, 0x63, 0x49, 0x7e, 0x1d, 0x6f, 0x71, 0x73, 0x98, 0xc0, + 0xd2, 0x4e, 0x84, 0xea, 0xd1, 0x30, 0x17, 0x3b, 0x5e, 0x47, 0x5c, 0xb2, + 0xe6, 0x50, 0x5b, 0x4d, 0xa5, 0xee, 0x0d, 0x1b, 0xeb, 0xd9, 0xa9, 0xf3, + 0x64, 0x2e, 0x9a, 0xca, 0xde, 0x72, 0x31, 0xab, 0x80, 0x5d, 0x4d, 0x63, + 0x73, 0xf8, 0x12, 0x06, 0xbc, 0xfc, 0x12, 0x53, 0x63, 0x06, 0xe6, 0x8c, + 0x2b, 0x2f, 0xbb, 0xd8, 0x36, 0x92, 0xe7, 0x73, 0x1e, 0xe7, 0x1f, 0xe2, + 0xa9, 0x65, 0x8d, 0xae, 0x6b, 0x40, 0xda, 0xd1, 0x7e, 0xd9, 0xef, 0xf4, + 0x55, 0xa7, 0x3a, 0xaa, 0x1b, 0x55, 0x1e, 0xb5, 0x6d, 0x69, 0x0c, 0x65, + 0xdb, 0x9d, 0xc0, 0xd8, 0x35, 0x1f, 0xda, 0x3a, 0xaa, 0x19, 0xf9, 0x18, + 0xcf, 0x2d, 0x77, 0xaa, 0xd9, 0x76, 0x41, 0xb1, 0xe1, 0x92, 0x61, 0xbe, + 0x9e, 0xd1, 0xdb, 0x59, 0x49, 0x4e, 0x86, 0x5f, 0x58, 0xb2, 0xdc, 0x66, + 0xe0, 0x96, 0x4b, 0x81, 0x68, 0x7d, 0xb3, 0x20, 0x80, 0x7d, 0xba, 0x78, + 0xe8, 0x8f, 0xbc, 0x7d, 0x97, 0x6e, 0xdf, 0xe5, 0xf1, 0xa7, 0x30, 0xb0, + 0xfe, 0xd9, 0x53, 0x2e, 0x6d, 0x83, 0x73, 0xc0, 0xd4, 0xe9, 0x12, 0x7b, + 0x6a, 0x7b, 0x00, 0xac, 0x7e, 0xdf, 0x67, 0xf4, 0x6f, 0x4b, 0x4f, 0xa3, + 0xb7, 0x78, 0x94, 0x94, 0xc3, 0x19, 0xad, 0x34, 0xb5, 0xc2, 0x0f, 0xbd, + 0xc3, 0x48, 0xe1, 0xce, 0x52, 0xfa, 0xc5, 0x94, 0xcc, 0x5c, 0x7c, 0x46, + 0xec, 0xde, 0xd2, 0xf7, 0x68, 0x3b, 0x06, 0x8f, 0x0f, 0x9a, 0x00, 0x65, + 0x8d, 0xe9, 0xcf, 0x69, 0x96, 0x3f, 0xd4, 0x99, 0x04, 0x8e, 0x1c, 0x0a, + 0x7e, 0xbf, 0x0e, 0xb6, 0x86, 0x47, 0xe6, 0x98, 0x1f, 0x18, 0x49, 0x48, + 0x6b, 0xea, 0x58, 0x16, 0x02, 0xdd, 0xfe, 0x99, 0xd2, 0x03, 0xc1, 0x03, + 0x4f, 0x3d, 0x42, 0xb2, 0x28, 0xaa, 0xc1, 0xbd, 0xbb, 0x5c, 0x06, 0xbb, + 0x9b, 0xac, 0x7c, 0xc1, 0x59, 0x86, 0x96, 0x11, 0x04, 0x02, 0x54, 0x46, + 0x30, 0xf7, 0x08, 0x22, 0x79, 0x2d, 0x30, 0x92, 0x9d, 0x63, 0x51, 0x03, + 0xda, 0x4f, 0xbb, 0xc7, 0x51, 0x0a, 0xad, 0xa2, 0xd0, 0x7e, 0x88, 0x7f, + 0x90, 0x31, 0xf9, 0x50, 0x2b, 0xb3, 0x32, 0xa6, 0x86, 0x57, 0x77, 0xb1, + 0xa0, 0x6d, 0x63, 0xda, 0x1c, 0xd8, 0xf0, 0xf1, 0xfc, 0x54, 0xfe, 0xdb, + 0x78, 0x8f, 0x5e, 0x96, 0xbf, 0xfe, 0x2c, 0xc1, 0xfb, 0x9d, 0xfd, 0xe9, + 0x29, 0xa5, 0xd4, 0x68, 0x7d, 0xd8, 0xa7, 0xd3, 0xac, 0x8b, 0x2b, 0x76, + 0xe2, 0x22, 0x09, 0x11, 0xee, 0xe1, 0x63, 0x92, 0x0d, 0x7a, 0xc1, 0x69, + 0xd2, 0x3b, 0x90, 0x3c, 0x17, 0x59, 0x45, 0xd4, 0xe4, 0x58, 0x05, 0x7b, + 0xab, 0x70, 0x93, 0x0f, 0x6c, 0x7c, 0xe7, 0x85, 0x47, 0xaf, 0x74, 0xac, + 0x57, 0x5c, 0xdb, 0x31, 0xc7, 0xa3, 0x65, 0x84, 0x6e, 0x0d, 0xd5, 0x8e, + 0x71, 0xef, 0xb7, 0xb7, 0xc9, 0x25, 0x3c, 0xde, 0x35, 0x9e, 0x8d, 0xd2, + 0xd7, 0x43, 0xbb, 0x78, 0xe8, 0xba, 0x4a, 0xf2, 0x31, 0x33, 0xf0, 0xda, + 0x2f, 0xb9, 0xd4, 0x5f, 0x4c, 0x6c, 0x7b, 0x34, 0x20, 0x77, 0xf8, 0xca, + 0xcd, 0xab, 0xea, 0xaf, 0x50, 0xbc, 0xbd, 0xd5, 0xdb, 0x54, 0xd6, 0xed, + 0xb0, 0x4b, 0x81, 0x27, 0xcb, 0x45, 0x4c, 0xdb, 0x6e, 0x3e, 0xb3, 0xb4, + 0xcc, 0x07, 0x78, 0x10, 0x92, 0x9d, 0xfa, 0x59, 0xe8, 0xb2, 0xcb, 0x1e, + 0xcb, 0x6e, 0x7b, 0xcb, 0x67, 0x22, 0xd6, 0xec, 0xd4, 0x71, 0xfc, 0xe1, + 0x04, 0xfc, 0x82, 0xa7, 0x97, 0x8d, 0x95, 0x9d, 0x94, 0xca, 0xf1, 0xd8, + 0x5c, 0x1a, 0x25, 0xcf, 0xe1, 0x80, 0x9f, 0x12, 0xb3, 0x19, 0x93, 0x65, + 0xb6, 0x0f, 0x5a, 0xeb, 0x2d, 0xdb, 0xf4, 0x46, 0xe2, 0x75, 0xf2, 0x95, + 0x7e, 0x8c, 0xce, 0xa1, 0xeb, 0x7d, 0x9f, 0x13, 0x20, 0xb5, 0xe6, 0x0b, + 0x69, 0x78, 0x0e, 0xac, 0xcf, 0x3c, 0xea, 0x0a, 0x4a, 0x74, 0xb1, 0xfa, + 0x3f, 0xd9, 0xd8, 0x76, 0xbc, 0x59, 0x73, 0xbe, 0x93, 0xc6, 0x9a, 0x78, + 0x05, 0x17, 0x62, 0x5c, 0xc7, 0xed, 0x69, 0x2c, 0x7f, 0x2d, 0x70, 0x90, + 0x5b, 0xf3, 0x51, 0x7d, 0xfd, 0x63, 0x1c, 0xec, 0xc8, 0xc3, 0x17, 0x0f, + 0xdf, 0xa1, 0xdf, 0xf7, 0xd7, 0x4a, 0x54, 0x75, 0xac, 0x4d, 0xf1, 0x65, + 0xae, 0xc7, 0xb3, 0xf7, 0x2e, 0x69, 0x6f, 0xe3, 0xa8, 0x49, 0x4d, 0xca, + 0xba, 0xa7, 0x58, 0xc7, 0x66, 0xd3, 0x69, 0xb5, 0xa2, 0x44, 0x58, 0x37, + 0x7d, 0xc7, 0x95, 0x62, 0x9f, 0xac, 0x2c, 0x3e, 0xdc, 0x8a, 0x0b, 0x3c, + 0x5f, 0x59, 0xdc, 0x39, 0x1f, 0x9a, 0x75, 0x40, 0x6e, 0x4d, 0x56, 0xea, + 0xe0, 0xdb, 0x1a, 0xf3, 0x0d, 0x7d, 0x66, 0x47, 0xde, 0xd9, 0x0a, 0x2e, + 0xc6, 0xc3, 0x71, 0x07, 0x79, 0x61, 0x3f, 0xbc, 0x20, 0x7d, 0xe9, 0x29, + 0xda, 0xc4, 0xea, 0x18, 0x39, 0x36, 0xbb, 0xd2, 0xbd, 0xbe, 0xed, 0x36, + 0xbb, 0xd8, 0xef, 0xb9, 0xcb, 0x23, 0xa6, 0x1f, 0x57, 0xaa, 0x75, 0x87, + 0x6a, 0x67, 0x24, 0xb6, 0x7e, 0x07, 0x68, 0xfc, 0x8a, 0xad, 0x98, 0x4c, + 0x63, 0x83, 0x5a, 0xfd, 0x5d, 0x25, 0xae, 0x1a, 0x8d, 0x3c, 0xd4, 0x18, + 0xfc, 0xcc, 0x6b, 0x37, 0xd1, 0x61, 0x6f, 0x04, 0x8e, 0xc4, 0xfe, 0x20, + 0xa4, 0xa7, 0x73, 0x1d, 0x82, 0xb2, 0xf0, 0x46, 0x8f, 0xb2, 0x7f, 0xe8, + 0xb8, 0x28, 0x10, 0xdd, 0x49, 0xee, 0x08, 0xd3, 0xee, 0x0b, 0x3e, 0xbe, + 0xb5, 0x7b, 0x00, 0x17, 0x57, 0xea, 0x41, 0x92, 0x40, 0xdb, 0xe1, 0xdc, + 0x48, 0x47, 0xc5, 0xea, 0x38, 0x76, 0xbd, 0xa1, 0xce, 0x35, 0x92, 0xe9, + 0x21, 0xda, 0x81, 0xc9, 0xed, 0x29, 0x29, 0xbf, 0x7e, 0xe1, 0xe9, 0x81, + 0xc1, 0x02, 0x47, 0x94, 0xa1, 0x38, 0xb9, 0xe2, 0xb6, 0x91, 0xb4, 0x3a, + 0xe2, 0x74, 0x3c, 0xec, 0x1d, 0xfe, 0x6a, 0xcb, 0x9a, 0x2e, 0x78, 0x7d, + 0x6e, 0x16, 0x37, 0x40, 0xdd, 0xa4, 0x1e, 0x07, 0x92, 0x46, 0x92, 0xd1, + 0x53, 0x8f, 0xb4, 0x34, 0xbd, 0xc7, 0x5f, 0x14, 0x94, 0xd8, 0x7c, 0x8c, + 0x32, 0xe6, 0x88, 0x7f, 0xa6, 0x7c, 0xf9, 0xf1, 0x54, 0x68, 0x63, 0x5f, + 0x5b, 0xec, 0x22, 0x7d, 0x3f, 0x52, 0x00, 0xe2, 0x60, 0x2b, 0xf7, 0xb6, + 0x30, 0xad, 0x60, 0x06, 0x5e, 0x58, 0xd8, 0xf2, 0xd1, 0xaa, 0xad, 0x15, + 0xc5, 0x26, 0x0c, 0x34, 0xfa, 0xa4, 0x8f, 0x12, 0xe7, 0xc7, 0xf0, 0x49, + 0x4d, 0x2a, 0x9e, 0xcb, 0x7e, 0xb3, 0xe1, 0xd3, 0x5c, 0x11, 0x8f, 0x8b, + 0xb8, 0x81, 0xd9, 0xcf, 0x70, 0xfe, 0x01, 0x6e, 0x54, 0xed, 0x6c, 0x02, + 0x22, 0x4f, 0x0b, 0x98, 0xfa, 0xbb, 0x16, 0x7d, 0x6f, 0xea, 0x11, 0x27, + 0xd3, 0x6e, 0xd1, 0x26, 0x7e, 0x86, 0xd6, 0x7f, 0x05, 0xd2, 0xd6, 0xd8, + 0xae, 0xc7, 0x44, 0x39, 0xdd, 0xfc, 0x52, 0x53, 0x4e, 0xf0, 0x5b, 0x73, + 0xda, 0x35, 0xd4, 0x7e, 0x0d, 0x58, 0xfd, 0x4d, 0x90, 0xea, 0xc1, 0x10, + 0x7d, 0xc5, 0xcd, 0x3a, 0x1f, 0xcd, 0x1f, 0xc1, 0x6c, 0x64, 0x1f, 0xd2, + 0x3c, 0xcf, 0x27, 0x5f, 0xb8, 0x05, 0xcf, 0xf5, 0xcb, 0xde, 0xcc, 0x9a, + 0x83, 0x83, 0x8b, 0x7d, 0x31, 0xfa, 0x48, 0xf5, 0x39, 0x73, 0xa7, 0x49, + 0x94, 0x94, 0x87, 0xdd, 0x5c, 0xea, 0xe6, 0x76, 0x90, 0x64, 0x47, 0x28, + 0x25, 0x8d, 0xbc, 0x90, 0x43, 0x6c, 0x1d, 0xcc, 0x41, 0x53, 0xc5, 0xbd, + 0x96, 0x38, 0x31, 0xd6, 0x01, 0xb8, 0xc4, 0x19, 0x69, 0xfb, 0x9c, 0x02, + 0xb9, 0x66, 0x36, 0x3e, 0xdf, 0xd0, 0x0f, 0x78, 0xe4, 0x4c, 0x9e, 0xe9, + 0x29, 0xcb, 0x75, 0x2c, 0x03, 0x69, 0x82, 0x06, 0x9b, 0x5d, 0xac, 0x7f, + 0x15, 0x37, 0xd9, 0x68, 0x60, 0x6b, 0x1e, 0xf6, 0x76, 0xd5, 0xdb, 0xda, + 0x07, 0x97, 0x71, 0xf2, 0x2a, 0xcb, 0x9a, 0x67, 0x65, 0x87, 0x5e, 0xe1, + 0xc0, 0x7e, 0x54, 0x2b, 0x2a, 0xee, 0xd6, 0xc7, 0xc1, 0x25, 0x26, 0xe9, + 0xd9, 0x99, 0x1f, 0x69, 0xa4, 0x16, 0x1b, 0xbd, 0xed, 0xf7, 0x31, 0xc1, + 0xdc, 0x1e, 0x76, 0xba, 0x1c, 0x8f, 0xd7, 0x7e, 0xd9, 0xfb, 0x67, 0x66, + 0x23, 0xbf, 0x32, 0x5d, 0xbb, 0xe8, 0x86, 0xc9, 0x1a, 0xfd, 0xe8, 0x3d, + 0x1e, 0x3f, 0x69, 0xd0, 0x1c, 0xd0, 0x4f, 0xbb, 0xdc, 0x39, 0x80, 0xd7, + 0x2b, 0x79, 0xd9, 0x17, 0xee, 0xb8, 0xb1, 0xb3, 0x67, 0xa9, 0x0d, 0x6c, + 0xf3, 0xb5, 0xd1, 0xcf, 0x9a, 0x4a, 0x68, 0x59, 0x85, 0xd4, 0x8f, 0xa9, + 0xbb, 0x60, 0xda, 0xe7, 0x06, 0xf2, 0x77, 0x6d, 0xe4, 0xeb, 0x1d, 0xf8, + 0x53, 0xa7, 0xa6, 0x5a, 0xfa, 0x9a, 0xf7, 0xdc, 0xed, 0x79, 0xd9, 0x02, + 0x3f, 0x29, 0x56, 0xb2, 0x9c, 0xf3, 0x53, 0x1b, 0xb4, 0x34, 0xc3, 0x8b, + 0x9a, 0x0c, 0xc1, 0xf5, 0x08, 0xfa, 0x5f, 0x24, 0x6c, 0x42, 0xea, 0xc8, + 0xac, 0x00, 0x2b, 0x6d, 0x6e, 0x73, 0xbc, 0xa7, 0x40, 0x52, 0x53, 0x41, + 0xbd, 0x35, 0x86, 0xd2, 0x1f, 0xbe, 0xc6, 0xed, 0x86, 0x87, 0x3d, 0xc4, + 0x4f, 0x8f, 0x65, 0x7f, 0xf6, 0x76, 0x27, 0xa7, 0x1e, 0x96, 0x3e, 0xdf, + 0x87, 0xbf, 0x74, 0x7d, 0x19, 0x95, 0x3c, 0x5f, 0x59, 0xf9, 0x6e, 0x68, + 0x0e, 0x75, 0x6d, 0xab, 0x7b, 0xc0, 0x1a, 0x09, 0x3c, 0xf9, 0x05, 0x3f, + 0xb3, 0x53, 0xea, 0xc4, 0xfe, 0x93, 0x99, 0x9e, 0xde, 0x3b, 0xbe, 0x09, + 0x29, 0xaf, 0x89, 0x90, 0x2d, 0xa6, 0xe0, 0x6c, 0xde, 0xdd, 0xd2, 0xdf, + 0x2d, 0xa8, 0x3d, 0x7b, 0x32, 0x96, 0xe6, 0x51, 0x5d, 0xaf, 0x2c, 0x79, + 0x61, 0x7f, 0x12, 0x21, 0xc6, 0x07, 0xfd, 0x4a, 0xaf, 0x8b, 0x55, 0xf8, + 0xf5, 0x9a, 0x9e, 0x1a, 0xcb, 0x5e, 0xdf, 0x73, 0x1b, 0xdb, 0x58, 0x9d, + 0x4c, 0xab, 0x5d, 0x47, 0xa6, 0x8c, 0xac, 0xca, 0xec, 0x30, 0xef, 0x4e, + 0x96, 0x31, 0xc1, 0xc0, 0x91, 0xa4, 0x9e, 0x5a, 0xe0, 0x7b, 0xa4, 0xa4, + 0x35, 0x7b, 0xc0, 0x73, 0x1e, 0x1e, 0x3b, 0x47, 0xfa, 0x94, 0x6f, 0x4e, + 0xdd, 0x3b, 0xc2, 0x2b, 0x3a, 0x76, 0x2b, 0x2b, 0xda, 0x2a, 0x0c, 0xb2, + 0x21, 0xae, 0x6b, 0x9d, 0xcf, 0xe5, 0x50, 0x76, 0x36, 0x5d, 0x6e, 0x86, + 0x3c, 0xb9, 0x83, 0xbe, 0x93, 0xf8, 0xa4, 0xa4, 0x52, 0x41, 0x22, 0x62, + 0x0f, 0x7f, 0x14, 0xcf, 0x77, 0x78, 0x07, 0xcd, 0x49, 0xee, 0xb9, 0xa3, + 0xdc, 0xcd, 0xc0, 0xf8, 0x8d, 0xbf, 0x91, 0x1f, 0xa5, 0xf4, 0xfb, 0x7a, + 0xad, 0xe2, 0xaa, 0xd8, 0xea, 0xea, 0x61, 0x1e, 0xad, 0x9d, 0x9a, 0x3f, + 0xbc, 0xa4, 0xa5, 0x74, 0xba, 0x32, 0x72, 0xf2, 0x36, 0x51, 0x5b, 0x9c, + 0x5a, 0x09, 0x26, 0x34, 0x1c, 0x72, 0xee, 0x16, 0xb6, 0x5f, 0xd5, 0xbb, + 0xee, 0x68, 0xba, 0xec, 0x86, 0xd4, 0xe6, 0x6a, 0xda, 0x9a, 0x37, 0x4f, + 0xc5, 0xc6, 0x21, 0x74, 0x54, 0x63, 0xd3, 0x8b, 0x8e, 0xda, 0x71, 0xdb, + 0xb6, 0xb6, 0x08, 0x81, 0xc9, 0x8e, 0x49, 0xf3, 0x41, 0xbd, 0xe6, 0x58, + 0x34, 0xd4, 0x9f, 0x99, 0x1a, 0x84, 0x94, 0xf3, 0x3d, 0x16, 0x92, 0xce, + 0xa2, 0x6a, 0x79, 0x3c, 0x38, 0x90, 0x4f, 0x07, 0x85, 0x95, 0xf5, 0x9b, + 0xea, 0xe5, 0xd8, 0x99, 0x6f, 0xb6, 0x9a, 0x9c, 0xfc, 0x2c, 0x82, 0x5f, + 0x2d, 0x12, 0x2a, 0x79, 0xfa, 0x40, 0xc7, 0x6e, 0xe1, 0x75, 0x59, 0x35, + 0x53, 0x8b, 0xd4, 0x86, 0x59, 0x70, 0x6d, 0x4c, 0x61, 0x75, 0xc2, 0x09, + 0x73, 0xa5, 0xa6, 0x03, 0x40, 0xe4, 0xc8, 0x5c, 0xd5, 0x9f, 0xb6, 0xba, + 0xce, 0x7f, 0xed, 0x17, 0x64, 0x9c, 0x56, 0x52, 0xe0, 0x70, 0xf1, 0xc1, + 0xd0, 0x32, 0x75, 0x91, 0xa4, 0xbb, 0xf7, 0x92, 0x53, 0xcb, 0x8c, 0x5f, + 0x43, 0x20, 0x40, 0x23, 0xc1, 0x6a, 0xf4, 0x6c, 0x0c, 0x9b, 0xf3, 0x1b, + 0x9a, 0xd6, 0x9f, 0x4a, 0xb7, 0x06, 0x97, 0x76, 0x2e, 0x9f, 0xa3, 0xfe, + 0x6c, 0x95, 0xd9, 0xd9, 0xf5, 0x6b, 0x0f, 0xa9, 0xd4, 0xcc, 0xa0, 0x3e, + 0xcb, 0x90, 0xed, 0x2e, 0x0c, 0x1e, 0xc2, 0x41, 0x87, 0xc3, 0x7b, 0x4f, + 0x64, 0x6e, 0xad, 0x55, 0x1d, 0x2f, 0xa6, 0xd7, 0x46, 0x1b, 0x1b, 0x58, + 0xa8, 0x3b, 0xd3, 0x07, 0x89, 0xd0, 0x6e, 0x77, 0xde, 0x92, 0x9c, 0xd6, + 0x52, 0xfb, 0x73, 0x85, 0x4f, 0x78, 0xa4, 0xd4, 0xd2, 0x5b, 0x23, 0xda, + 0xf0, 0xe1, 0x02, 0x4f, 0x68, 0x52, 0xb3, 0xa3, 0xe4, 0x1b, 0x98, 0x6f, + 0xc7, 0x65, 0xd8, 0xc4, 0x38, 0xbd, 0xfa, 0x3d, 0xbf, 0x47, 0xdb, 0xe7, + 0xca, 0x9e, 0x16, 0x55, 0x7d, 0x47, 0x32, 0xbb, 0x29, 0x7b, 0x4b, 0x68, + 0x69, 0x63, 0xeb, 0x03, 0x74, 0x97, 0x01, 0x04, 0x11, 0xaf, 0xde, 0xb6, + 0xeb, 0x21, 0x8e, 0xda, 0xdd, 0x00, 0x3a, 0x47, 0x60, 0xe1, 0x20, 0x24, + 0xa7, 0x8f, 0xcd, 0xfa, 0xbb, 0xd2, 0xbd, 0x56, 0x1c, 0x70, 0xec, 0x4b, + 0xac, 0xb0, 0x30, 0x1a, 0x9c, 0x5b, 0x06, 0x0b, 0x8f, 0xe4, 0x40, 0x7f, + 0x47, 0xea, 0xf5, 0x38, 0xb3, 0x1b, 0x35, 0xb7, 0xb7, 0xb3, 0x2f, 0x6c, + 0x9f, 0xf3, 0x86, 0xab, 0xac, 0xca, 0xc5, 0x1f, 0x6b, 0x61, 0x0d, 0x9a, + 0xdd, 0xba, 0xc7, 0x38, 0x76, 0x74, 0x6d, 0x0b, 0x3e, 0xba, 0xd9, 0xeb, + 0x6e, 0xe5, 0xee, 0xd2, 0x67, 0x48, 0x69, 0x3f, 0xed, 0x49, 0x4f, 0x30, + 0xef, 0xda, 0x15, 0xba, 0x72, 0x30, 0x5e, 0x0d, 0x3b, 0xb7, 0x59, 0x41, + 0xdc, 0xdf, 0x33, 0xb7, 0x44, 0xa8, 0xea, 0x98, 0x37, 0xc0, 0x6d, 0xcd, + 0x1e, 0x01, 0xfe, 0xdf, 0x97, 0xba, 0x3f, 0x2a, 0xe8, 0x6d, 0x1f, 0x67, + 0xe9, 0x7d, 0x40, 0x97, 0x17, 0x3a, 0xba, 0xae, 0x3b, 0x8f, 0xc1, 0xc5, + 0x61, 0x74, 0xfc, 0x2a, 0xc7, 0x45, 0xc6, 0x2e, 0xa9, 0x96, 0x6f, 0x0e, + 0x79, 0xdc, 0xd0, 0x79, 0x49, 0x49, 0x9f, 0x54, 0x6a, 0x1b, 0x20, 0xc1, + 0x1b, 0x75, 0x08, 0x6f, 0xa2, 0xb8, 0x25, 0xc3, 0xe1, 0xa7, 0x7f, 0x81, + 0x49, 0x9d, 0x1f, 0x17, 0x66, 0xfc, 0x7b, 0x2c, 0xc5, 0xb1, 0xbf, 0x4f, + 0xd2, 0x71, 0xd9, 0xba, 0x27, 0xe8, 0x9d, 0x14, 0x1b, 0x57, 0x59, 0xac, + 0x3a, 0x0d, 0x79, 0x4c, 0x12, 0x21, 0xc3, 0xd3, 0x7c, 0x01, 0x3f, 0x9b, + 0xa2, 0x4a, 0x60, 0xca, 0x6c, 0x6b, 0xb7, 0xd5, 0x6b, 0x9a, 0xee, 0xda, + 0xf0, 0xad, 0xb7, 0xac, 0x75, 0x26, 0x30, 0xd5, 0x65, 0x8d, 0xb9, 0x9f, + 0xca, 0x1a, 0xfc, 0x8a, 0xa7, 0x6e, 0x50, 0xa4, 0x81, 0x95, 0x8f, 0x6e, + 0x31, 0x3c, 0xb8, 0x8d, 0xec, 0xff, 0x00, 0x39, 0x9f, 0xdc, 0xa4, 0xc7, + 0xe3, 0x64, 0x82, 0xd6, 0xdc, 0xd2, 0x08, 0xf1, 0x1f, 0xef, 0x49, 0x4e, + 0xe3, 0x3e, 0xb2, 0x61, 0x58, 0xc3, 0x56, 0x4d, 0x4f, 0xa2, 0xcd, 0xc1, + 0xc5, 0xc3, 0xdc, 0xdd, 0x3e, 0xe2, 0xaf, 0x63, 0xdf, 0x8b, 0x91, 0x88, + 0x4e, 0x35, 0xad, 0xb4, 0x82, 0xd0, 0x5a, 0xd2, 0x37, 0x7d, 0x22, 0x4e, + 0x87, 0x58, 0x5c, 0xa3, 0x28, 0x2c, 0xa3, 0x6b, 0x98, 0x64, 0x68, 0x48, + 0x33, 0xc7, 0x05, 0x56, 0x34, 0xed, 0x20, 0xb0, 0x90, 0x46, 0xa1, 0xcd, + 0x24, 0x19, 0xf9, 0x24, 0xa7, 0x63, 0xea, 0x70, 0xf5, 0x3a, 0xef, 0x56, + 0xbf, 0xf3, 0x85, 0x8e, 0x13, 0xde, 0x0b, 0x9f, 0xfd, 0xcb, 0xa5, 0xa2, + 0xa7, 0x1a, 0xe0, 0x98, 0x6e, 0xe9, 0xf9, 0x4a, 0xc3, 0xfa, 0x97, 0x43, + 0x6b, 0x76, 0x7d, 0xe4, 0x43, 0xbd, 0xbb, 0x8f, 0x1a, 0xc1, 0x27, 0xf2, + 0xae, 0x93, 0x19, 0xa5, 0xd5, 0xb5, 0xa7, 0x82, 0x78, 0xf9, 0x24, 0xa7, + 0x27, 0x28, 0x8f, 0x55, 0xd1, 0xc4, 0x93, 0xf8, 0xac, 0x0e, 0xae, 0x1e, + 0xec, 0xcd, 0x08, 0x20, 0x56, 0xd0, 0x44, 0xc1, 0xee, 0x7e, 0x1d, 0xd6, + 0xed, 0xcd, 0x81, 0xf0, 0x1f, 0x94, 0xac, 0x0e, 0xa4, 0xe6, 0x8e, 0xa5, + 0x68, 0x04, 0x13, 0x0c, 0x00, 0x1d, 0x38, 0x68, 0x49, 0x4d, 0x33, 0xb3, + 0x6e, 0xcb, 0x75, 0x91, 0x10, 0xf6, 0x88, 0xfc, 0x53, 0xb6, 0x96, 0xb5, + 0xbb, 0xaa, 0x73, 0x9b, 0xe0, 0x58, 0xed, 0x3f, 0xcd, 0x7c, 0xab, 0x03, + 0x60, 0x6e, 0xe7, 0x34, 0x81, 0xe2, 0xd3, 0x3f, 0x93, 0xfb, 0x94, 0x36, + 0xd4, 0x7e, 0x81, 0x9f, 0x18, 0xf6, 0x99, 0xf9, 0x7f, 0x72, 0x4a, 0x51, + 0x7e, 0x5b, 0x04, 0x12, 0xdb, 0x81, 0xe2, 0x1d, 0xb1, 0xff, 0x00, 0x71, + 0x90, 0xa3, 0xf6, 0x9a, 0xd8, 0x5a, 0xcb, 0x9a, 0x6a, 0xd4, 0x6e, 0x2e, + 0x05, 0xa4, 0x0e, 0xe4, 0x1d, 0x5a, 0x53, 0x92, 0xe6, 0xd6, 0x46, 0xd0, + 0x67, 0x59, 0x23, 0xdc, 0x3e, 0x0e, 0x6f, 0xf7, 0x27, 0x0f, 0x63, 0x9a, + 0x1b, 0x64, 0xb0, 0x1e, 0x1c, 0xe1, 0xb9, 0xbf, 0x82, 0x4a, 0x6c, 0x74, + 0xaf, 0x77, 0x50, 0xc7, 0x73, 0x5e, 0x1e, 0xd7, 0x12, 0x38, 0xe4, 0x10, + 0x51, 0xb2, 0x5d, 0xb3, 0x32, 0xb2, 0xf0, 0x43, 0x7e, 0xd0, 0x01, 0xd3, + 0x99, 0x72, 0x17, 0x4a, 0xc3, 0xa7, 0xf6, 0xa5, 0x76, 0x57, 0x13, 0x53, + 0x4b, 0xc3, 0x9b, 0xa0, 0x27, 0xe8, 0xeb, 0x1a, 0x77, 0x56, 0xef, 0x2d, + 0xfb, 0x68, 0x7b, 0xc4, 0x35, 0xb7, 0x87, 0x6e, 0x3c, 0x40, 0x94, 0x94, + 0xac, 0x96, 0x36, 0xdb, 0x5a, 0xdd, 0x21, 0xed, 0x90, 0x3e, 0x2f, 0x79, + 0x94, 0x5c, 0x56, 0x35, 0xcf, 0xc8, 0x6b, 0x86, 0x81, 0x8c, 0x69, 0x9f, + 0x02, 0x64, 0xa0, 0x3c, 0x38, 0x7d, 0x9c, 0x91, 0xa9, 0xa5, 0x81, 0xc0, + 0xf8, 0x92, 0xff, 0x00, 0x05, 0x62, 0xa6, 0x34, 0x8b, 0xde, 0xc9, 0x74, + 0xbe, 0xae, 0x0c, 0x1d, 0x12, 0x52, 0x07, 0x5f, 0x95, 0x87, 0x9f, 0x68, + 0xdb, 0x14, 0x5b, 0x15, 0x48, 0x3f, 0x98, 0xdd, 0x5b, 0xf2, 0x56, 0xbd, + 0x46, 0x4e, 0xe9, 0xed, 0x33, 0xf3, 0x88, 0x45, 0xb2, 0x8f, 0x53, 0x25, + 0xd5, 0xbb, 0x52, 0xd0, 0xe2, 0x7e, 0x7d, 0xfe, 0x4b, 0x3f, 0xd2, 0x3e, + 0x9c, 0x49, 0x8d, 0xb1, 0xbb, 0xe5, 0xcf, 0xde, 0x92, 0x9b, 0x99, 0xd4, + 0xb5, 0x99, 0xc5, 0xc6, 0x1d, 0xb1, 0xfb, 0x40, 0x88, 0x31, 0x21, 0x52, + 0xcc, 0xea, 0x83, 0x1f, 0xab, 0x5a, 0xc2, 0xd3, 0xe9, 0xb7, 0x6b, 0x63, + 0xb4, 0xed, 0x13, 0xaa, 0xd8, 0xea, 0x75, 0x01, 0x65, 0xb6, 0xb4, 0xea, + 0x0e, 0xfd, 0x79, 0x10, 0x57, 0x31, 0x7d, 0xdf, 0xe5, 0x0c, 0x9d, 0xe7, + 0xdd, 0xea, 0x19, 0x9d, 0x79, 0xf2, 0x72, 0x4a, 0x77, 0x6b, 0xcd, 0xc5, + 0xbd, 0xb3, 0x20, 0xfc, 0x7b, 0x7d, 0xea, 0x39, 0x0d, 0xa3, 0xd2, 0x2f, + 0xf5, 0x5f, 0x50, 0xf1, 0x6c, 0xb8, 0x7d, 0xda, 0xac, 0x5f, 0x52, 0xa0, + 0x34, 0x00, 0x93, 0xe0, 0x76, 0x9f, 0xe2, 0x9c, 0xe4, 0xed, 0x10, 0x1c, + 0xe0, 0x3c, 0xf5, 0x11, 0xf2, 0x49, 0x4c, 0xed, 0xb7, 0x21, 0xd6, 0xfe, + 0xaf, 0x98, 0xc7, 0xb0, 0x0f, 0xa0, 0x5a, 0x47, 0xdf, 0xdd, 0x76, 0x9f, + 0x56, 0x69, 0x7d, 0x5d, 0x31, 0xaf, 0xb6, 0x3d, 0x5b, 0xdc, 0xeb, 0x0c, + 0x78, 0x7d, 0x16, 0xfe, 0x45, 0xe7, 0xd7, 0xe4, 0x96, 0x59, 0x2c, 0x6d, + 0x6e, 0x07, 0x4d, 0xc3, 0xe9, 0x0f, 0xbd, 0x7a, 0x1f, 0x4f, 0xdd, 0x46, + 0x1e, 0x3b, 0x1d, 0xa1, 0x6d, 0x6c, 0x04, 0x78, 0x68, 0x27, 0xf1, 0x49, + 0x4d, 0x9c, 0x5c, 0x80, 0x59, 0x7b, 0x2c, 0x3a, 0xd3, 0x65, 0x80, 0xff, + 0x00, 0x56, 0x77, 0x0f, 0xc0, 0xaa, 0xde, 0xab, 0x6f, 0x6d, 0x56, 0x57, + 0x21, 0x87, 0xdc, 0xd9, 0xe7, 0x52, 0x06, 0xbf, 0x7a, 0xa1, 0x76, 0x45, + 0x94, 0x75, 0x0b, 0x43, 0x0f, 0xf3, 0xa1, 0xb6, 0x34, 0x76, 0x25, 0xa4, + 0xb1, 0xc3, 0xee, 0x21, 0x3f, 0x44, 0xb4, 0xe4, 0xe3, 0xb4, 0x4c, 0x16, + 0xef, 0x61, 0x6f, 0xee, 0x96, 0xbc, 0xc8, 0xfc, 0x12, 0x53, 0x6f, 0x28, + 0xb5, 0xd7, 0x5e, 0x48, 0x90, 0xc6, 0x06, 0xb7, 0xc2, 0x40, 0x5c, 0xa5, + 0x78, 0xf5, 0x8a, 0x4b, 0x9d, 0x2f, 0xe7, 0x57, 0x19, 0xd3, 0xc8, 0x1f, + 0xbd, 0x6d, 0xe7, 0xde, 0x28, 0xe9, 0x76, 0xba, 0xbf, 0xe7, 0x2d, 0xfd, + 0x1b, 0x7f, 0xac, 0xed, 0x0f, 0xf7, 0xac, 0xc2, 0x5b, 0x48, 0xaf, 0x70, + 0xdb, 0x5c, 0x41, 0x74, 0x48, 0x1c, 0x41, 0x29, 0x29, 0xa8, 0x6a, 0xcb, + 0xa1, 0xc1, 0x96, 0x3a, 0xfc, 0x6d, 0xc0, 0x3e, 0xa6, 0xee, 0x78, 0x69, + 0x69, 0xee, 0x04, 0xa2, 0x9a, 0xcb, 0x9e, 0xe7, 0x5c, 0xe2, 0xf0, 0x35, + 0x25, 0xe7, 0x77, 0x6f, 0x39, 0x4f, 0x7d, 0x97, 0x1c, 0x9b, 0x6e, 0xbf, + 0x29, 0xd6, 0xd8, 0xfd, 0x41, 0x73, 0x78, 0x0d, 0xd2, 0x1a, 0x1b, 0x02, + 0x14, 0x1d, 0x91, 0x5d, 0x8e, 0x98, 0x7b, 0x40, 0x00, 0xbb, 0x70, 0x80, + 0x63, 0xba, 0x4a, 0x4d, 0x84, 0xc6, 0x62, 0x65, 0x57, 0x97, 0x50, 0xd8, + 0x43, 0x80, 0xb0, 0x0e, 0xec, 0x77, 0x20, 0xfc, 0x17, 0x5a, 0xc7, 0xb1, + 0xf6, 0x1d, 0xa4, 0x12, 0xe1, 0x1a, 0x78, 0xb7, 0x5f, 0xc8, 0x57, 0x26, + 0xf7, 0x81, 0x58, 0x24, 0x38, 0x6e, 0x8e, 0x7b, 0x48, 0x85, 0xa7, 0x88, + 0xf2, 0x2b, 0xa0, 0x50, 0x4b, 0x5c, 0xfa, 0xdc, 0x00, 0xf0, 0x73, 0x07, + 0x6f, 0x82, 0x4a, 0x6c, 0x64, 0xfa, 0xb9, 0x35, 0xe5, 0x7a, 0x56, 0x6c, + 0x7d, 0x76, 0x35, 0xc0, 0xf3, 0x0d, 0x68, 0x87, 0x01, 0xf1, 0x54, 0xb0, + 0xea, 0xf4, 0xa9, 0xa6, 0xa2, 0x64, 0x57, 0xcb, 0x8f, 0x3c, 0x72, 0xb4, + 0x3a, 0x1c, 0xdb, 0x88, 0xf7, 0x59, 0xa9, 0x7b, 0x9c, 0x5f, 0x3e, 0x7c, + 0xaa, 0x4f, 0xa1, 0xad, 0xea, 0x14, 0xb0, 0xbb, 0x6b, 0x49, 0x73, 0x3b, + 0xfb, 0x9f, 0xd8, 0x24, 0xa6, 0x8e, 0x7b, 0x6f, 0xc7, 0xfa, 0xbb, 0xd4, + 0x6c, 0xbe, 0x7d, 0x47, 0xd4, 0xe0, 0xe8, 0x32, 0xdf, 0xd2, 0x58, 0x00, + 0x8f, 0x93, 0x94, 0xba, 0x75, 0x2c, 0xfd, 0x97, 0x8a, 0x3b, 0x0a, 0x5a, + 0x08, 0xf3, 0xd1, 0x13, 0xeb, 0x75, 0x9b, 0x3e, 0xae, 0xe4, 0x57, 0xc7, + 0xa8, 0x69, 0x63, 0x7c, 0xcb, 0x9e, 0x1f, 0xf9, 0x1a, 0x96, 0x15, 0x71, + 0x45, 0x74, 0xc4, 0x90, 0xd0, 0xd0, 0x7c, 0x12, 0x52, 0x0e, 0x9a, 0xc1, + 0x19, 0x64, 0xea, 0x1f, 0x69, 0x86, 0xfe, 0xe8, 0xd5, 0xaa, 0xc6, 0x03, + 0x3d, 0x49, 0x7d, 0x9a, 0x01, 0xea, 0x71, 0xe0, 0xe7, 0x6d, 0x1f, 0x82, + 0x9e, 0x25, 0x4d, 0x65, 0x16, 0x16, 0x88, 0x2e, 0x25, 0xf3, 0xe3, 0xca, + 0x1f, 0x49, 0x65, 0xa4, 0xda, 0xd7, 0x38, 0x96, 0xb2, 0xaa, 0x9b, 0xf1, + 0x98, 0x24, 0xfd, 0xe9, 0x29, 0x2b, 0x8b, 0x2c, 0xa3, 0xd5, 0xb0, 0x6d, + 0x64, 0x49, 0xdd, 0xda, 0x0c, 0x6a, 0x81, 0x93, 0xd1, 0xba, 0x65, 0xf9, + 0x54, 0x9b, 0x71, 0xd9, 0x16, 0x4c, 0x90, 0x36, 0x92, 0x47, 0x69, 0x6a, + 0xbc, 0x1a, 0x4e, 0x0d, 0x9b, 0x99, 0xa7, 0xa8, 0xf6, 0x8f, 0xea, 0x87, + 0x8f, 0x72, 0x46, 0xaa, 0xf2, 0x8f, 0x4d, 0xb4, 0x4b, 0x46, 0xe3, 0x60, + 0x1d, 0xfe, 0x89, 0x22, 0x52, 0x53, 0x89, 0x99, 0xf5, 0x75, 0xd8, 0xb5, + 0x9b, 0x30, 0x72, 0xac, 0xaa, 0x5c, 0x40, 0xae, 0xcf, 0x7b, 0x60, 0x7c, + 0x75, 0x0b, 0x33, 0x2a, 0x8e, 0xa7, 0x85, 0x36, 0x65, 0xd3, 0xbd, 0x8c, + 0x12, 0xeb, 0x6b, 0x32, 0x23, 0xc6, 0x34, 0x2b, 0xb3, 0xca, 0xa8, 0xbe, + 0xea, 0x5b, 0x20, 0xd6, 0xe6, 0x03, 0xb7, 0xcd, 0xce, 0x04, 0x7e, 0x0b, + 0x33, 0xa9, 0xd8, 0x5f, 0xd3, 0xba, 0xe6, 0xe1, 0xa5, 0x26, 0xca, 0xeb, + 0x3e, 0x4d, 0x63, 0x7f, 0xbd, 0x25, 0x32, 0xfa, 0xa9, 0x78, 0xc8, 0xe9, + 0xd9, 0x56, 0xd6, 0x77, 0x0b, 0x1f, 0xa1, 0x22, 0x0e, 0x80, 0x05, 0xd4, + 0xd1, 0x4e, 0xda, 0x83, 0xc7, 0x20, 0x48, 0x1e, 0x70, 0xb9, 0x1f, 0xa8, + 0xf5, 0xb8, 0x74, 0x46, 0x91, 0xf9, 0xf6, 0x3b, 0xf2, 0xc2, 0xed, 0x18, + 0xd1, 0x5d, 0x11, 0xd8, 0x35, 0x25, 0x3c, 0xad, 0x6d, 0x78, 0xa4, 0x31, + 0xee, 0x97, 0x06, 0xb7, 0xdd, 0xe2, 0x56, 0x07, 0x55, 0xaa, 0xb7, 0x75, + 0x1c, 0x87, 0x32, 0x58, 0xfd, 0xfa, 0x96, 0x99, 0x04, 0x80, 0x3f, 0x34, + 0xc8, 0x5d, 0x28, 0x12, 0x76, 0x88, 0x23, 0x4e, 0x38, 0x8e, 0x4a, 0xc1, + 0xbd, 0xa2, 0xdc, 0xac, 0x8b, 0x01, 0x06, 0x6c, 0x7c, 0x02, 0x3c, 0xcf, + 0xcd, 0x25, 0x34, 0x6a, 0xcc, 0xba, 0xbd, 0x2c, 0xa9, 0x97, 0xd6, 0x74, + 0x76, 0x86, 0xb7, 0x47, 0x1d, 0xa5, 0xb3, 0xf2, 0x44, 0x19, 0x7d, 0x2d, + 0xc2, 0x2c, 0x0f, 0xc7, 0x71, 0xed, 0x63, 0x77, 0x37, 0xfc, 0xe6, 0xca, + 0x93, 0xea, 0xb2, 0xb6, 0xee, 0xf4, 0xa6, 0x39, 0x2c, 0x3a, 0xfd, 0xc7, + 0x54, 0x20, 0xfa, 0x1d, 0xed, 0x3e, 0xd2, 0x39, 0x0e, 0x6a, 0x4a, 0x6c, + 0x3d, 0xb5, 0xda, 0x03, 0x71, 0xec, 0x63, 0xf4, 0x11, 0xb0, 0xcf, 0xe1, + 0x28, 0x36, 0x36, 0xfa, 0xbd, 0xb6, 0x36, 0x4b, 0x7b, 0x8f, 0x04, 0x07, + 0xe1, 0xe3, 0x3b, 0xdc, 0x23, 0x77, 0xf2, 0x4c, 0x1f, 0xc1, 0x13, 0xd0, + 0xcb, 0x7c, 0x1a, 0xf2, 0x5d, 0x20, 0xcc, 0x58, 0x77, 0xff, 0x00, 0xd2, + 0xe5, 0x25, 0x3a, 0x3f, 0x57, 0xf6, 0xfd, 0xb2, 0xd2, 0x3e, 0x97, 0xa5, + 0xed, 0xd3, 0xf9, 0x4d, 0xee, 0x13, 0x67, 0x4b, 0x40, 0x04, 0xcc, 0xb8, + 0xb8, 0x8e, 0xdc, 0xa2, 0x74, 0x53, 0x96, 0x32, 0x9e, 0x72, 0x6b, 0x61, + 0x0c, 0x61, 0xfd, 0x2b, 0x0c, 0x6a, 0x4f, 0x04, 0x47, 0x97, 0x8a, 0x16, + 0x65, 0x81, 0xa1, 0xbb, 0x8e, 0xae, 0x9d, 0xb3, 0xdb, 0x9f, 0xef, 0x49, + 0x4d, 0xf1, 0xb4, 0x8a, 0x99, 0xb6, 0x4b, 0x2b, 0x61, 0x33, 0xe1, 0x12, + 0xa4, 0x48, 0x01, 0xa0, 0x37, 0xf4, 0x4e, 0x73, 0x5d, 0xbc, 0x48, 0x3e, + 0xdd, 0x63, 0x51, 0x0e, 0x94, 0xac, 0x63, 0x06, 0x61, 0x6b, 0xfe, 0x80, + 0xf4, 0x83, 0x87, 0x22, 0x1a, 0x1a, 0x0a, 0xb9, 0x95, 0x7e, 0x53, 0x72, + 0x6f, 0x6b, 0xa1, 0xf4, 0x33, 0x41, 0x8e, 0x46, 0x8e, 0x10, 0x0e, 0xb3, + 0xc4, 0xa4, 0xa4, 0x26, 0xe0, 0x6e, 0xb5, 0xfd, 0xdf, 0xed, 0x64, 0xf8, + 0x77, 0xfc, 0xaa, 0x1e, 0x8b, 0x36, 0xfa, 0x92, 0x26, 0x22, 0x3f, 0x3a, + 0x51, 0x1b, 0x8f, 0x5b, 0xa8, 0x75, 0xd7, 0x17, 0xb2, 0xb6, 0x90, 0xc6, + 0xb6, 0xbd, 0x5e, 0xe2, 0xef, 0x33, 0xe0, 0xa5, 0xf6, 0x01, 0x1f, 0x68, + 0xf5, 0x3f, 0x43, 0x13, 0xea, 0x7e, 0x74, 0xf1, 0xb7, 0x67, 0xef, 0x4f, + 0xc9, 0x25, 0x32, 0xce, 0x16, 0xe4, 0x63, 0xdf, 0x55, 0x6e, 0x0c, 0xb1, + 0xfb, 0xc7, 0xa9, 0xfb, 0xa0, 0x1e, 0x42, 0xe4, 0xb2, 0x2b, 0x79, 0x7d, + 0xdb, 0x46, 0xfb, 0x77, 0x10, 0xeb, 0xa6, 0x64, 0x8d, 0x26, 0x04, 0xae, + 0xc1, 0xde, 0xa6, 0xfb, 0x5a, 0xd8, 0xd1, 0xae, 0x82, 0x47, 0x72, 0xb9, + 0x26, 0x62, 0xb5, 0x85, 0xf6, 0x07, 0xcb, 0x9e, 0x4b, 0x9d, 0xac, 0x19, + 0x27, 0x58, 0x05, 0x25, 0x22, 0x6e, 0x83, 0x6b, 0xb4, 0x8e, 0xd0, 0xa4, + 0xd6, 0x17, 0x92, 0x77, 0x4f, 0x97, 0x82, 0x31, 0xb6, 0xe6, 0x88, 0x77, + 0xbc, 0x76, 0x04, 0x6e, 0xfc, 0xaa, 0xb5, 0x99, 0x01, 0x92, 0x36, 0x47, + 0xc2, 0x42, 0x4a, 0x4f, 0x81, 0x88, 0x32, 0xfa, 0xa6, 0x36, 0x3c, 0x02, + 0x1c, 0xf0, 0x5e, 0x3f, 0x92, 0xcf, 0x73, 0xbf, 0x22, 0xef, 0xae, 0x30, + 0xde, 0x3e, 0x4b, 0x92, 0xfa, 0x9c, 0xcf, 0x5f, 0xa9, 0x5d, 0x90, 0xe9, + 0x8a, 0x6a, 0x81, 0x3a, 0xea, 0xf3, 0x1f, 0x90, 0x2e, 0xb3, 0x23, 0x89, + 0x9d, 0x7c, 0x12, 0x53, 0x91, 0xd5, 0x1c, 0x19, 0xb3, 0x20, 0xe8, 0x5b, + 0x20, 0xfc, 0x1c, 0x16, 0x5f, 0xd5, 0x4b, 0xba, 0x96, 0xdc, 0xe7, 0xb0, + 0x6d, 0xc3, 0x6d, 0xc4, 0x8b, 0x8e, 0xa7, 0x77, 0xe7, 0x31, 0xbd, 0xfb, + 0x09, 0x2a, 0xef, 0x5c, 0xb4, 0x33, 0x0d, 0xfb, 0xf8, 0xda, 0x67, 0xe4, + 0x25, 0x4f, 0xa1, 0x52, 0xcc, 0x7f, 0xab, 0x61, 0xd6, 0x1f, 0xd1, 0xda, + 0xc0, 0xf7, 0x3b, 0xb4, 0xbf, 0xdd, 0xaf, 0xde, 0x92, 0x90, 0x64, 0x58, + 0xe7, 0xd3, 0x4b, 0x27, 0x7c, 0xfb, 0xe3, 0xf9, 0x4f, 0x00, 0x23, 0x3e, + 0xe1, 0x53, 0x0b, 0xf9, 0x03, 0x4d, 0xbc, 0x8e, 0x61, 0x54, 0xae, 0x8f, + 0xb3, 0xd8, 0xca, 0x83, 0xcd, 0x8d, 0x2f, 0x90, 0x49, 0x9d, 0xa2, 0x3e, + 0x88, 0x3e, 0x4a, 0xcd, 0xac, 0x96, 0xed, 0x3c, 0x10, 0x0f, 0xde, 0x65, + 0x25, 0x20, 0x75, 0x6f, 0x17, 0x57, 0x71, 0x6b, 0x1a, 0xc3, 0x06, 0x20, + 0x12, 0xef, 0x2d, 0x15, 0xde, 0xa5, 0x9f, 0x8b, 0x99, 0x55, 0x55, 0xd1, + 0x8e, 0xda, 0x5e, 0x5e, 0x1c, 0x5f, 0x02, 0x76, 0xb6, 0x5a, 0x46, 0x81, + 0x04, 0x8f, 0xd2, 0x57, 0x4b, 0x1a, 0x4e, 0xe0, 0x20, 0xc7, 0x78, 0x50, + 0xdc, 0x1c, 0x01, 0xa8, 0x49, 0x1b, 0x84, 0xc6, 0x9c, 0xeb, 0x09, 0x29, + 0x0e, 0x59, 0x7f, 0xa0, 0x64, 0x9e, 0x09, 0x3e, 0x1a, 0x10, 0x51, 0x01, + 0x9c, 0x07, 0x12, 0x48, 0xd8, 0xdb, 0x22, 0x3c, 0xcf, 0x8a, 0x86, 0x54, + 0x3d, 0xbb, 0x5d, 0xc9, 0x61, 0x04, 0x77, 0x4e, 0xc0, 0x3e, 0xc9, 0xb0, + 0x10, 0x7d, 0x42, 0x5b, 0xa1, 0xfe, 0x52, 0x4a, 0x7a, 0x2e, 0x94, 0xcf, + 0x4f, 0x0e, 0x8a, 0xff, 0x00, 0x38, 0x34, 0x6e, 0xf8, 0x9d, 0x4f, 0xe2, + 0x55, 0x0e, 0xa1, 0x14, 0xf5, 0x66, 0xd8, 0xf7, 0x38, 0x00, 0xf0, 0x58, + 0xd6, 0xfd, 0x19, 0x73, 0x67, 0x73, 0xa3, 0xc2, 0x0a, 0xbd, 0x4e, 0x46, + 0x2e, 0x2d, 0x62, 0xcc, 0x9b, 0x9b, 0x4b, 0x7b, 0x6f, 0x20, 0x05, 0x5f, + 0xa9, 0x1c, 0x6c, 0xab, 0x2b, 0xba, 0xa7, 0xb6, 0xec, 0x7b, 0x98, 0xe6, + 0x38, 0xb0, 0xc8, 0x31, 0xda, 0x47, 0x93, 0x92, 0x53, 0x8f, 0xf5, 0xad, + 0xf5, 0xdf, 0xd2, 0xf1, 0xe8, 0x71, 0x35, 0x87, 0x5e, 0xc2, 0xd7, 0x01, + 0x32, 0x5a, 0xd3, 0x00, 0xab, 0x74, 0x38, 0x31, 0xad, 0xd3, 0x4f, 0x6e, + 0xdf, 0x90, 0x0a, 0x9f, 0x5c, 0xae, 0xab, 0x31, 0xa8, 0xa1, 0xcc, 0x71, + 0x87, 0xee, 0xad, 0xed, 0xd4, 0x30, 0xb6, 0x36, 0xee, 0x57, 0xeb, 0x03, + 0x68, 0x67, 0x04, 0x13, 0x0e, 0xfc, 0xdd, 0x1a, 0x00, 0x49, 0x4c, 0x19, + 0x49, 0xae, 0x8a, 0x59, 0x24, 0x06, 0x83, 0xba, 0x3f, 0xaa, 0x7f, 0x8a, + 0x7e, 0x99, 0x2d, 0x6e, 0x66, 0xef, 0xdf, 0x01, 0xb1, 0xe0, 0xd6, 0xe8, + 0x89, 0x64, 0x0b, 0x5c, 0xc3, 0x00, 0x41, 0x0d, 0x1e, 0x3a, 0x6a, 0xa3, + 0x88, 0xd3, 0xea, 0x3d, 0x83, 0x87, 0x59, 0xcf, 0x94, 0x6a, 0x92, 0x9b, + 0x35, 0x38, 0xd9, 0x8b, 0x6c, 0xb6, 0x22, 0xe7, 0x30, 0x4f, 0x04, 0x0e, + 0xff, 0x00, 0x7a, 0x15, 0x17, 0x52, 0xfb, 0x3d, 0x3a, 0x9f, 0xb9, 0xd8, + 0xcc, 0x73, 0x5e, 0xdf, 0x38, 0x20, 0x8f, 0xc1, 0x59, 0x0d, 0x6b, 0x68, + 0x60, 0x1a, 0x82, 0xe2, 0x7f, 0x12, 0xab, 0xe1, 0xe3, 0x34, 0x65, 0x5b, + 0x74, 0x0d, 0xce, 0x6b, 0x49, 0x3f, 0x10, 0xe3, 0xff, 0x00, 0x7e, 0x49, + 0x49, 0x2e, 0xad, 0xd4, 0xe4, 0xe0, 0xd6, 0xc3, 0x2c, 0xa4, 0x16, 0x96, + 0x8e, 0xfb, 0x6b, 0x31, 0x2b, 0x37, 0xad, 0x69, 0xf5, 0x77, 0xaa, 0x58, + 0x63, 0x7b, 0xac, 0xb6, 0x63, 0xc1, 0xd6, 0x31, 0xa0, 0xfd, 0xc1, 0x6b, + 0x59, 0x58, 0x66, 0x73, 0x9c, 0x49, 0x21, 0xd6, 0xd8, 0xed, 0x4c, 0xc7, + 0xb5, 0x8d, 0xd1, 0x73, 0x5d, 0x5d, 0xb7, 0x55, 0xf5, 0x57, 0x32, 0xdb, + 0x5d, 0x2f, 0xbe, 0xe2, 0x23, 0xc9, 0xd6, 0x37, 0xff, 0x00, 0x22, 0x92, + 0x9d, 0x9f, 0xa9, 0x35, 0x86, 0xf4, 0x7c, 0x36, 0xf8, 0xb5, 0xce, 0xf9, + 0xb9, 0xc7, 0xfb, 0xd7, 0x4f, 0x71, 0x8a, 0x5e, 0x7c, 0x1a, 0x78, 0xf8, + 0x2c, 0x3f, 0xaa, 0x15, 0x16, 0xf4, 0xac, 0x50, 0x7f, 0x36, 0x96, 0x11, + 0xfd, 0xa1, 0x2b, 0x76, 0xc7, 0x06, 0xb1, 0xce, 0x3c, 0x01, 0x29, 0x29, + 0xe7, 0x2e, 0x78, 0x63, 0xbe, 0x8b, 0x8e, 0xd2, 0x01, 0x0d, 0x1a, 0xe8, + 0x7c, 0x17, 0x21, 0x67, 0x59, 0x6b, 0xed, 0x83, 0x4b, 0x9a, 0x24, 0xef, + 0x2e, 0x12, 0x64, 0x9e, 0xdb, 0x7f, 0xb9, 0x75, 0xd9, 0x2e, 0x6f, 0xa1, + 0x91, 0x60, 0xe4, 0x31, 0xef, 0xd7, 0x40, 0x48, 0x6c, 0xae, 0x31, 0xbd, + 0x4b, 0x12, 0xc0, 0xdf, 0xb6, 0x50, 0x71, 0xb7, 0x70, 0xe8, 0xdc, 0xc3, + 0xf0, 0x3c, 0xa4, 0xa7, 0x5f, 0x18, 0x57, 0x99, 0x54, 0xd1, 0x90, 0xc2, + 0xee, 0x0d, 0x65, 0xc0, 0x3b, 0xfc, 0xd7, 0x42, 0x0d, 0x98, 0x57, 0xd4, + 0xe7, 0x1b, 0x6b, 0x8a, 0xc3, 0x67, 0x74, 0x18, 0x24, 0x79, 0x89, 0x40, + 0xaf, 0xa7, 0x61, 0x65, 0x80, 0xec, 0x6b, 0x5b, 0x61, 0xf0, 0x69, 0x04, + 0xc7, 0xc0, 0xea, 0xa7, 0x5b, 0x3a, 0x8e, 0x20, 0x22, 0xab, 0xad, 0xad, + 0xbd, 0xc0, 0x32, 0xd2, 0x3f, 0xaa, 0xed, 0x3f, 0x04, 0x94, 0x86, 0xd6, + 0x51, 0xa9, 0x20, 0xb3, 0xf1, 0x0a, 0x2c, 0x05, 0x83, 0x7d, 0x6f, 0x96, + 0xfd, 0xff, 0x00, 0x95, 0x5c, 0x39, 0x99, 0xb0, 0x0d, 0xf5, 0xd7, 0x90, + 0xce, 0xf2, 0xd0, 0xc7, 0x7f, 0xd1, 0xfe, 0xe5, 0x5d, 0xd7, 0x62, 0x3a, + 0xc8, 0x7e, 0x3b, 0xa9, 0x6f, 0x3b, 0xda, 0x49, 0x8f, 0x8e, 0xd9, 0xfc, + 0x89, 0x29, 0xd4, 0xe8, 0x8f, 0x77, 0xa5, 0x95, 0x75, 0xcd, 0x0d, 0x0d, + 0xda, 0xd0, 0x46, 0x9d, 0x8f, 0x6f, 0x9a, 0xa1, 0xd4, 0x1a, 0xdf, 0x49, + 0xdb, 0xf8, 0x8d, 0xbf, 0xd5, 0x92, 0x35, 0x5a, 0x5d, 0x3e, 0xcc, 0x76, + 0xf4, 0xfc, 0x87, 0x57, 0x60, 0xb1, 0xa5, 0xed, 0x1a, 0x19, 0x82, 0x74, + 0xd7, 0xb8, 0x54, 0x73, 0x81, 0xf4, 0x1c, 0x26, 0x01, 0x2c, 0x03, 0xfb, + 0x56, 0x30, 0x24, 0xa7, 0x57, 0x25, 0xb6, 0x3f, 0xa8, 0x9a, 0x9a, 0x1a, + 0x5c, 0xe7, 0x9a, 0xda, 0x7b, 0x70, 0x39, 0x56, 0xf6, 0xe4, 0x31, 0xad, + 0x19, 0x58, 0xad, 0xb9, 0x95, 0xe8, 0x2d, 0x20, 0xbb, 0x6b, 0x47, 0x01, + 0xc5, 0xbc, 0xfc, 0xc2, 0x86, 0x3b, 0x5b, 0x6f, 0x54, 0x16, 0x81, 0xa0, + 0xc8, 0x70, 0xf3, 0xd0, 0x10, 0x23, 0xee, 0x46, 0x34, 0x00, 0xfb, 0x0e, + 0x3d, 0xaf, 0x8b, 0x1c, 0xe0, 0xe6, 0x10, 0x5a, 0x44, 0x9e, 0x43, 0x81, + 0x82, 0x92, 0x90, 0xd7, 0x65, 0x2f, 0xae, 0xcc, 0x73, 0x66, 0xd6, 0x97, + 0x07, 0x32, 0xc6, 0x8d, 0xc1, 0xa5, 0xa6, 0x00, 0x70, 0xf0, 0x20, 0x23, + 0x4e, 0x3f, 0xd9, 0xbe, 0xcf, 0xeb, 0xb2, 0x67, 0x7e, 0xed, 0x76, 0x6e, + 0x9e, 0x14, 0xef, 0x05, 0x95, 0x53, 0x0c, 0xa9, 0xe0, 0x57, 0x2e, 0x6d, + 0x9e, 0xd7, 0xc7, 0x8b, 0x4e, 0x8a, 0xa4, 0x33, 0x6c, 0xc7, 0xe7, 0xce, + 0xdd, 0xc6, 0x36, 0xcc, 0x6d, 0x98, 0x94, 0x94, 0x9a, 0xc7, 0x00, 0x2c, + 0x61, 0x96, 0xb8, 0xcc, 0x93, 0xf9, 0x57, 0x37, 0xe8, 0x4b, 0x40, 0x06, + 0x67, 0x8d, 0x67, 0x4f, 0x82, 0xe9, 0x32, 0x2c, 0x63, 0xb1, 0xb2, 0x1e, + 0xf8, 0x2e, 0x65, 0x6f, 0x21, 0xc3, 0xb7, 0xb4, 0xae, 0x57, 0x1a, 0xeb, + 0x9a, 0xc0, 0x3d, 0x8f, 0x1c, 0x0d, 0x4b, 0x4f, 0xe3, 0x29, 0x29, 0xb4, + 0x31, 0x03, 0x60, 0x8f, 0x69, 0xef, 0xcb, 0x79, 0xfc, 0x13, 0x8a, 0x2d, + 0x68, 0x24, 0xc9, 0xd3, 0xc0, 0x58, 0xdf, 0xc2, 0x10, 0x7e, 0xd9, 0x90, + 0x22, 0x58, 0xe8, 0x3c, 0xc4, 0x39, 0x19, 0x9d, 0x4b, 0xd3, 0x69, 0xf5, + 0x36, 0x90, 0x04, 0xeb, 0xed, 0x21, 0x25, 0x3a, 0x9d, 0x06, 0xcc, 0x4c, + 0x26, 0x5a, 0x6e, 0xdd, 0x6d, 0xf6, 0x10, 0x7d, 0x1a, 0x18, 0xe7, 0xc0, + 0x03, 0x4d, 0xd0, 0x20, 0x7c, 0x15, 0xcc, 0x9e, 0xa3, 0x9d, 0x61, 0xdd, + 0x4f, 0x4c, 0xc8, 0xf4, 0xbb, 0x48, 0x64, 0x9f, 0x96, 0xe9, 0x55, 0xba, + 0x4d, 0xc2, 0xb6, 0x6e, 0xd3, 0x60, 0x69, 0xb5, 0xd6, 0x46, 0x84, 0x38, + 0xf3, 0xf7, 0x05, 0xa7, 0xd3, 0xbe, 0xb3, 0xf4, 0x0c, 0xfb, 0x46, 0x3d, + 0x19, 0x8d, 0x37, 0x1e, 0x19, 0x60, 0x35, 0xee, 0xfe, 0xae, 0xf0, 0x25, + 0x25, 0x3c, 0xb7, 0x55, 0xfd, 0xb3, 0x97, 0x5b, 0xab, 0x7f, 0x4c, 0xb6, + 0xaa, 0xdf, 0xa0, 0x78, 0x3b, 0xe2, 0x74, 0xf7, 0x34, 0x6a, 0x16, 0xc6, + 0x3e, 0x39, 0xa7, 0xa5, 0xd5, 0x80, 0xe7, 0x86, 0x07, 0x06, 0x80, 0x1f, + 0xce, 0x9f, 0x48, 0x00, 0xb4, 0xbe, 0xb0, 0xf5, 0xba, 0xfa, 0x45, 0x0c, + 0x6d, 0x70, 0x72, 0xb2, 0x1d, 0xb2, 0x96, 0x1e, 0xc0, 0x7d, 0x27, 0x91, + 0xe0, 0xd5, 0xc9, 0x5b, 0x96, 0xcb, 0xae, 0x0f, 0xc8, 0xb2, 0x5c, 0xf3, + 0xab, 0xc9, 0x12, 0x92, 0x9b, 0xb9, 0x0f, 0xa2, 0x97, 0x58, 0x44, 0x35, + 0x8d, 0xdc, 0x18, 0xd6, 0xfd, 0xdc, 0x04, 0x36, 0xe4, 0xd8, 0x5a, 0x5a, + 0x4f, 0xa7, 0x73, 0xc0, 0x2c, 0x0f, 0x1e, 0xc2, 0x23, 0x41, 0xdd, 0x67, + 0xe4, 0xe5, 0x62, 0x56, 0xe2, 0xc2, 0xe9, 0x03, 0xe9, 0x38, 0x4a, 0x9b, + 0xf2, 0x71, 0xf2, 0x2a, 0x1e, 0x9b, 0x1d, 0x6d, 0x23, 0x96, 0xcf, 0xe9, + 0x1a, 0x7f, 0x79, 0xbd, 0xd2, 0x52, 0xd9, 0xfd, 0x63, 0x33, 0x12, 0xb1, + 0x53, 0xe9, 0x75, 0x0f, 0x26, 0x4b, 0xcf, 0xba, 0xb7, 0x47, 0x60, 0x51, + 0x2e, 0xea, 0x1d, 0x4d, 0xd5, 0x87, 0xfa, 0x34, 0xbb, 0xd4, 0x00, 0xb6, + 0xc6, 0x3c, 0x40, 0x8e, 0x7e, 0x97, 0x0b, 0x33, 0x2f, 0x2c, 0x64, 0xed, + 0xc7, 0xbb, 0x29, 0xf7, 0xe2, 0xd6, 0x47, 0xa6, 0xd2, 0xdd, 0xa5, 0xa4, + 0xe9, 0x27, 0xc7, 0x6a, 0x16, 0x55, 0x72, 0x43, 0x9a, 0xea, 0x5e, 0xc0, + 0x20, 0xec, 0xb1, 0xcd, 0x98, 0xef, 0xb3, 0xb4, 0xa4, 0xa7, 0x58, 0x65, + 0x65, 0x6d, 0x0f, 0xbc, 0xb0, 0xeb, 0x07, 0x69, 0x93, 0xa8, 0x57, 0xbe, + 0xae, 0x53, 0x84, 0xfb, 0xef, 0xc2, 0xb2, 0xc2, 0x3e, 0xd2, 0xff, 0x00, + 0x5a, 0x87, 0x03, 0xee, 0x6d, 0x80, 0x7b, 0x9b, 0xe0, 0x74, 0x12, 0xb9, + 0x37, 0x65, 0x57, 0x48, 0x1b, 0x6b, 0x0c, 0x71, 0xe4, 0xb6, 0x78, 0xf9, + 0xab, 0x7d, 0x33, 0xab, 0x57, 0x8b, 0xd5, 0x31, 0x32, 0x2c, 0x91, 0x45, + 0x76, 0x83, 0x61, 0x8d, 0x43, 0x4f, 0xb4, 0xf1, 0xf1, 0x49, 0x4f, 0x66, + 0x3e, 0xad, 0x3e, 0xbc, 0x8b, 0x1f, 0xf6, 0x97, 0x5e, 0x5e, 0x04, 0x39, + 0xe3, 0xde, 0x1b, 0xe1, 0xcc, 0x7e, 0x10, 0x93, 0x71, 0x28, 0xc6, 0x7b, + 0xab, 0xad, 0xae, 0xad, 0x92, 0x1c, 0xf6, 0x11, 0x0c, 0x73, 0x87, 0xe7, + 0x56, 0xe6, 0xfb, 0x75, 0x1c, 0xad, 0x07, 0xe7, 0xd6, 0xc7, 0x31, 0xc2, + 0x44, 0xf7, 0xed, 0xaa, 0xa5, 0x93, 0xd4, 0x06, 0x43, 0x88, 0xac, 0xc3, + 0x0b, 0x76, 0xba, 0x38, 0x24, 0x99, 0xd5, 0x25, 0x38, 0x9d, 0x6a, 0xf6, + 0x37, 0x3b, 0x16, 0x82, 0xf7, 0x07, 0x58, 0x0e, 0xd6, 0x37, 0x40, 0x44, + 0x8f, 0xa5, 0xf7, 0x2d, 0x4a, 0x65, 0xcf, 0x81, 0xc1, 0xdd, 0xf1, 0xe6, + 0x17, 0x3b, 0xd5, 0x88, 0x77, 0xd6, 0x3e, 0x9f, 0x59, 0x3f, 0x42, 0x96, + 0xc9, 0x3a, 0x89, 0x25, 0xf2, 0xba, 0x0c, 0x6b, 0x8b, 0x6c, 0xfa, 0x32, + 0xd0, 0xd7, 0x3b, 0x77, 0x81, 0x04, 0x24, 0xa4, 0xd7, 0x32, 0xb3, 0x90, + 0x1c, 0xe6, 0x87, 0x6d, 0xdd, 0xb5, 0xc7, 0x91, 0x3a, 0x4f, 0xdc, 0x89, + 0x58, 0x2d, 0xb4, 0x35, 0xbd, 0xc3, 0x8c, 0x8e, 0x44, 0xed, 0x0a, 0x0f, + 0x1b, 0x9c, 0x0f, 0x97, 0xf1, 0x47, 0xc6, 0x2d, 0x66, 0x4b, 0x9e, 0x47, + 0x15, 0xbb, 0xef, 0x33, 0xfd, 0xc9, 0x29, 0x28, 0x0e, 0x6e, 0x2d, 0x62, + 0x3d, 0xce, 0x12, 0x3f, 0x82, 0x1f, 0x4d, 0x2e, 0xb6, 0x97, 0xd8, 0xe1, + 0x16, 0x38, 0x06, 0x90, 0x35, 0x00, 0x8d, 0x20, 0x14, 0x5b, 0xc0, 0xfb, + 0x3d, 0x0f, 0x06, 0x3d, 0xa4, 0xff, 0x00, 0xd1, 0x25, 0x37, 0x47, 0xac, + 0xb2, 0xad, 0xa7, 0xdd, 0x0e, 0xd4, 0xf8, 0xf7, 0x49, 0x4a, 0xb9, 0xc7, + 0xed, 0x47, 0xd4, 0x89, 0x2e, 0xb2, 0x23, 0xc8, 0x85, 0xcf, 0x7d, 0x70, + 0x73, 0x4f, 0xd5, 0x6a, 0x3d, 0x3d, 0x5a, 0xeb, 0x1a, 0xe9, 0x1e, 0x07, + 0x72, 0xe8, 0x72, 0x1b, 0xb4, 0xee, 0x3a, 0x98, 0x20, 0x1e, 0xf2, 0x4e, + 0xab, 0x32, 0xec, 0x36, 0xe7, 0x62, 0xe3, 0x60, 0x64, 0x03, 0xb6, 0xd0, + 0xf0, 0x1a, 0x78, 0xdc, 0xd6, 0x3d, 0xe1, 0x25, 0x3b, 0x1f, 0x56, 0x18, + 0x1b, 0xd3, 0x59, 0xe4, 0xca, 0xdb, 0xf7, 0x30, 0x2d, 0x1c, 0xe3, 0x18, + 0xb6, 0x7c, 0x21, 0x55, 0xe8, 0x6c, 0xd9, 0x85, 0xb7, 0xb0, 0x74, 0x0f, + 0x90, 0x08, 0xfd, 0x45, 0xed, 0x6e, 0x3c, 0x11, 0x25, 0xc6, 0x1b, 0xe4, + 0x60, 0x99, 0xfc, 0x12, 0x53, 0x80, 0xf0, 0x1d, 0x85, 0x92, 0xd7, 0x7b, + 0x89, 0xa5, 0xf3, 0xf3, 0x07, 0xb2, 0xe2, 0xfa, 0xb5, 0x2e, 0x66, 0x26, + 0x25, 0x4e, 0xed, 0xbc, 0x8f, 0x87, 0xb5, 0x77, 0x38, 0xf6, 0x31, 0x81, + 0xee, 0x7f, 0x00, 0x09, 0xf8, 0x68, 0x3f, 0x8a, 0xc4, 0xfa, 0xd9, 0x8f, + 0x85, 0x8f, 0x7e, 0x1b, 0x68, 0x6e, 0xda, 0xdf, 0x5b, 0xdc, 0x7b, 0x8d, + 0x5c, 0x92, 0x9e, 0x28, 0xb0, 0xb0, 0xee, 0x69, 0x2d, 0x70, 0xe0, 0x8d, + 0x15, 0xca, 0x3a, 0xe7, 0x55, 0xc6, 0x6e, 0xd1, 0x77, 0xaa, 0xcf, 0xdd, + 0xb4, 0x6f, 0xfc, 0x4e, 0xaa, 0xd9, 0xc3, 0xa6, 0xc6, 0x92, 0xd2, 0x09, + 0xf2, 0xd1, 0x54, 0xb7, 0xa7, 0x10, 0x3d, 0xa7, 0xef, 0x49, 0x4d, 0xca, + 0x7e, 0xb2, 0xb8, 0xda, 0x06, 0x4e, 0x3b, 0x45, 0x7d, 0xcd, 0x53, 0x3f, + 0x18, 0x71, 0x32, 0xb4, 0x19, 0x9b, 0xd2, 0xaf, 0xd6, 0xab, 0x9b, 0x3d, + 0x98, 0xe9, 0x6b, 0xbf, 0xe9, 0x20, 0xe2, 0x74, 0x8a, 0x2b, 0xb2, 0x5e, + 0x03, 0x80, 0x1a, 0x93, 0xe6, 0xad, 0xe4, 0xe2, 0x57, 0x8f, 0x89, 0x56, + 0x5d, 0x75, 0xb6, 0xbc, 0x86, 0xbc, 0x8d, 0xd1, 0xa8, 0x10, 0x23, 0x84, + 0x94, 0xdf, 0xc2, 0x15, 0xbf, 0x12, 0xd6, 0x31, 0xcc, 0xf5, 0x0b, 0x81, + 0xdb, 0x20, 0x39, 0xc0, 0xc7, 0x03, 0xba, 0xa9, 0xd4, 0x9a, 0xdc, 0x6c, + 0x4a, 0xee, 0xbc, 0xec, 0x69, 0xb6, 0x9a, 0xe0, 0xf9, 0x58, 0x1e, 0x4f, + 0xdc, 0xd4, 0x6a, 0x06, 0x26, 0x5e, 0x29, 0xb3, 0x2e, 0xa6, 0xdd, 0xb5, + 0xbc, 0xbd, 0x80, 0x19, 0xf1, 0x0e, 0xe4, 0x2a, 0x59, 0xbd, 0x3b, 0x07, + 0x2a, 0xb6, 0xd0, 0xe3, 0x7d, 0x6c, 0xac, 0xfb, 0x1a, 0x2c, 0x2f, 0x63, + 0x4c, 0x72, 0x05, 0x92, 0x92, 0x9d, 0xd3, 0x8d, 0x6d, 0x36, 0x39, 0xe6, + 0x2c, 0x0e, 0x77, 0xa8, 0xc0, 0xc3, 0xee, 0x1b, 0x89, 0x83, 0xa7, 0xb8, + 0x48, 0x45, 0xc7, 0xb6, 0xcf, 0xa1, 0x43, 0xda, 0x5c, 0x35, 0xda, 0x4c, + 0xba, 0x7f, 0xaa, 0xed, 0x57, 0x3b, 0xd3, 0xf1, 0xf3, 0xfa, 0x76, 0x70, + 0xcc, 0xa3, 0x28, 0x67, 0xb0, 0xb7, 0xd3, 0x7d, 0x37, 0xb8, 0xd6, 0xe2, + 0xd0, 0x20, 0x0d, 0xde, 0xf1, 0xed, 0xec, 0xb4, 0x6e, 0xcd, 0xc1, 0xc9, + 0x63, 0x46, 0x5e, 0x2d, 0xb4, 0x39, 0xa2, 0x37, 0xb9, 0x9e, 0xab, 0x07, + 0xc1, 0xf5, 0x6e, 0x49, 0x4e, 0xc5, 0x8e, 0xb1, 0xcd, 0x63, 0x72, 0x6a, + 0x73, 0x9e, 0xd6, 0x86, 0xee, 0xa8, 0x83, 0x31, 0xe2, 0xc7, 0xff, 0x00, + 0x7a, 0x8f, 0xa6, 0x76, 0xef, 0x83, 0x1f, 0xd5, 0xf7, 0xed, 0x9f, 0xdc, + 0x9e, 0x7e, 0x6b, 0x3b, 0x06, 0xd1, 0x61, 0xdb, 0xd3, 0xfa, 0x8c, 0xed, + 0x7e, 0xd7, 0x34, 0xb8, 0x58, 0x00, 0x23, 0x8d, 0xb6, 0xca, 0xd9, 0xfb, + 0x26, 0x76, 0xef, 0xa7, 0x5e, 0xe8, 0xfa, 0x7e, 0x99, 0xe7, 0xfa, 0xbb, + 0xe2, 0x52, 0x53, 0x95, 0x64, 0x8c, 0x1c, 0xd7, 0x93, 0x27, 0xd3, 0x2d, + 0xd3, 0x40, 0x01, 0xff, 0x00, 0x7a, 0xc3, 0xaa, 0xb7, 0x6c, 0x07, 0xb0, + 0xe6, 0x20, 0xad, 0xce, 0xa3, 0x6b, 0x59, 0xd2, 0xec, 0x63, 0x7d, 0xa5, + 0xc5, 0xad, 0x3f, 0x0d, 0xc1, 0x64, 0x37, 0x7e, 0xcd, 0x76, 0x9d, 0x3b, + 0x8f, 0xe2, 0x92, 0x94, 0xe6, 0xd5, 0x1b, 0x41, 0x2d, 0x31, 0xa8, 0x32, + 0x15, 0x4c, 0x9c, 0x52, 0xd6, 0x8d, 0x86, 0x67, 0xc4, 0xca, 0x3e, 0xfd, + 0xae, 0x0c, 0x74, 0xb7, 0xc4, 0xb4, 0xca, 0x95, 0x8f, 0xae, 0xc6, 0x11, + 0x3e, 0xef, 0xe5, 0x8f, 0xe2, 0x12, 0x53, 0x0c, 0x0e, 0xbc, 0x70, 0xe8, + 0x38, 0x79, 0x03, 0xd8, 0x06, 0xd1, 0x63, 0x40, 0x24, 0x30, 0xf6, 0x8f, + 0x25, 0x89, 0xd4, 0x9b, 0x5f, 0xda, 0xdf, 0x6d, 0x4c, 0x2c, 0xc3, 0xb2, + 0x3d, 0x1b, 0x5c, 0x34, 0x30, 0x04, 0x8d, 0x38, 0x33, 0xd9, 0x5c, 0xca, + 0xc6, 0xad, 0xc4, 0x96, 0x90, 0x48, 0xe6, 0x0c, 0x7e, 0x55, 0x56, 0x9b, + 0x32, 0x31, 0x6c, 0xfd, 0x15, 0x8e, 0x6b, 0x4e, 0xae, 0x6c, 0xfb, 0x5c, + 0x07, 0x88, 0xe0, 0xa4, 0xa6, 0xa5, 0xf9, 0x96, 0xd8, 0x6b, 0x75, 0xb7, + 0xbe, 0xe3, 0x53, 0x76, 0x56, 0x5c, 0x49, 0xda, 0xd9, 0x9d, 0xa2, 0x55, + 0x86, 0x74, 0x9e, 0xa3, 0x97, 0x53, 0x6e, 0x63, 0x03, 0x43, 0xb5, 0x68, + 0x71, 0x3b, 0x88, 0xf1, 0x5d, 0x07, 0x45, 0xc2, 0x19, 0xfb, 0xae, 0xcc, + 0x0c, 0xdd, 0x5b, 0x5a, 0x47, 0xe8, 0xda, 0x35, 0x78, 0x99, 0x91, 0x1e, + 0x0a, 0xc3, 0xaf, 0xcb, 0xc8, 0xb5, 0xf8, 0xf8, 0x4f, 0x68, 0x01, 0xdb, + 0x6c, 0xc8, 0x68, 0xf6, 0x34, 0x0d, 0x36, 0xb2, 0x79, 0x3e, 0x3e, 0x09, + 0x29, 0xe7, 0xbf, 0xe6, 0xee, 0x6b, 0x2a, 0xde, 0x6d, 0xe2, 0x79, 0xd0, + 0x7e, 0x28, 0x07, 0x17, 0x32, 0x97, 0x82, 0xe7, 0x92, 0x4e, 0xa3, 0x6c, + 0xff, 0x00, 0x05, 0xda, 0x3a, 0x8a, 0x68, 0xc7, 0x9b, 0x3d, 0xe1, 0x82, + 0x06, 0xe3, 0x25, 0xe7, 0xb9, 0x25, 0x53, 0xab, 0x14, 0xd9, 0xba, 0xeb, + 0x07, 0xd2, 0xe3, 0xc0, 0x0f, 0x24, 0x94, 0xf3, 0x26, 0x97, 0x88, 0xdd, + 0x21, 0xc7, 0xb4, 0x19, 0x32, 0xaf, 0x60, 0xe2, 0x5b, 0x65, 0x7f, 0xa5, + 0x9d, 0x8f, 0xe1, 0xda, 0x17, 0x00, 0xd5, 0xaa, 0x70, 0xdb, 0x63, 0x9c, + 0xe7, 0x0d, 0x06, 0x80, 0xab, 0x4e, 0xae, 0xba, 0x9d, 0x5d, 0x4d, 0x10, + 0x5c, 0xd2, 0x1b, 0x23, 0x49, 0x02, 0x75, 0x49, 0x4f, 0x3f, 0x95, 0x8d, + 0x53, 0x73, 0xa8, 0x64, 0x17, 0xfb, 0x9a, 0x1e, 0x23, 0xb1, 0xff, 0x00, + 0x7a, 0xa3, 0x77, 0x4a, 0xca, 0x6e, 0x7e, 0x4e, 0x25, 0x0c, 0x2e, 0x14, + 0xbb, 0x40, 0xed, 0x0c, 0x1e, 0x21, 0x6e, 0xdc, 0xd1, 0xf6, 0xbd, 0xc6, + 0x00, 0x6b, 0x86, 0xbd, 0x84, 0x2b, 0xd9, 0x35, 0x46, 0x43, 0xad, 0x71, + 0x26, 0x5b, 0x24, 0xf7, 0x23, 0x54, 0x94, 0xe4, 0xf4, 0xcc, 0x9e, 0xb0, + 0x2a, 0xb3, 0x1b, 0x24, 0xb9, 0xcc, 0x03, 0xf4, 0x6e, 0x79, 0xd5, 0xa3, + 0xb8, 0x92, 0xb6, 0xf1, 0x19, 0xe9, 0x88, 0xfa, 0x4e, 0x77, 0xd2, 0x3e, + 0x1a, 0x05, 0x97, 0x59, 0xb2, 0xc7, 0xda, 0x41, 0xf6, 0x99, 0x03, 0xe6, + 0x76, 0xff, 0x00, 0x15, 0xab, 0x59, 0x2d, 0x21, 0x91, 0x26, 0x35, 0x29, + 0x29, 0xc3, 0xcc, 0x3e, 0xa7, 0xd6, 0xed, 0xbd, 0xaa, 0xad, 0x80, 0x47, + 0x80, 0x60, 0x77, 0xf1, 0x5d, 0x1d, 0x4d, 0x0c, 0xa4, 0x38, 0x6a, 0x08, + 0x89, 0xf8, 0x95, 0xcb, 0xd0, 0xe7, 0xdf, 0xf5, 0xa7, 0x39, 0xe3, 0x96, + 0x0b, 0x00, 0xf8, 0x32, 0x18, 0x3f, 0x22, 0xea, 0x28, 0xdc, 0x69, 0xd8, + 0x47, 0x04, 0x19, 0xfb, 0xd2, 0x52, 0x57, 0xce, 0xe2, 0x27, 0xb2, 0xb5, + 0x8a, 0x37, 0xba, 0xe0, 0x7b, 0xb0, 0x0f, 0xbf, 0x70, 0x55, 0x1e, 0xef, + 0xd2, 0x38, 0x1e, 0x21, 0x5b, 0xc1, 0x63, 0x9c, 0x5e, 0xe1, 0xcb, 0x4b, + 0x67, 0xe1, 0x0e, 0x49, 0x4c, 0x33, 0x2c, 0x3b, 0xeb, 0x6b, 0x67, 0x6e, + 0xd8, 0x6f, 0x84, 0xea, 0xd5, 0x6b, 0xa5, 0x8f, 0xd1, 0x8d, 0x34, 0x0f, + 0xec, 0x83, 0x9d, 0x5e, 0xcb, 0x28, 0x1f, 0x9a, 0xe3, 0x07, 0xe2, 0x0e, + 0xe5, 0x77, 0xa7, 0xd6, 0x2b, 0xa5, 0x8e, 0x76, 0x86, 0x64, 0x7c, 0x80, + 0x49, 0x4d, 0x5c, 0xab, 0x1c, 0xd7, 0x98, 0xe2, 0x49, 0x13, 0xc2, 0x03, + 0x08, 0x19, 0x98, 0x13, 0xa9, 0x06, 0xe2, 0x40, 0xf1, 0xd8, 0x1b, 0xfc, + 0x51, 0xf2, 0x43, 0x8e, 0x84, 0x73, 0x21, 0xa4, 0x7c, 0x4a, 0xab, 0xa9, + 0xeb, 0x15, 0x37, 0x82, 0xc6, 0x58, 0x7e, 0xf2, 0xd1, 0xfc, 0x12, 0x53, + 0xb5, 0xd2, 0xa3, 0xec, 0x82, 0x04, 0x0d, 0xce, 0x8f, 0xbd, 0x47, 0xab, + 0x6d, 0x14, 0x07, 0x11, 0x2f, 0x04, 0x86, 0x7c, 0x4e, 0x88, 0xbd, 0x39, + 0xa1, 0xb8, 0xad, 0x03, 0xc5, 0xdc, 0x7c, 0x4a, 0xa9, 0xd6, 0x6d, 0x83, + 0x53, 0x07, 0x33, 0xf2, 0x49, 0x4e, 0x6b, 0xda, 0xc1, 0x8d, 0x65, 0x8e, + 0x3a, 0x88, 0x0d, 0xf3, 0x3b, 0x9a, 0xd5, 0x83, 0xf5, 0x96, 0xe7, 0x7d, + 0xaf, 0x12, 0x1c, 0x40, 0x14, 0xea, 0x07, 0x1f, 0x48, 0xad, 0xdb, 0x5d, + 0x34, 0x6d, 0x06, 0x77, 0xb8, 0x03, 0x3e, 0x13, 0x2b, 0x98, 0xeb, 0xed, + 0x73, 0x72, 0xa9, 0x05, 0xdb, 0xb6, 0xd5, 0xdf, 0x98, 0x2f, 0x79, 0xe1, + 0x25, 0x30, 0xad, 0xd4, 0x3c, 0x0d, 0xed, 0x13, 0xe6, 0x23, 0xf1, 0x0a, + 0x2f, 0x65, 0x16, 0x1d, 0x95, 0x98, 0xd4, 0x73, 0xdf, 0x54, 0x13, 0x63, + 0x9c, 0xcf, 0x6b, 0x64, 0x78, 0xf3, 0x08, 0x34, 0x7a, 0x9f, 0x68, 0x60, + 0xe6, 0x5c, 0x23, 0x48, 0xee, 0x92, 0x9e, 0x91, 0xb4, 0x13, 0x6b, 0x60, + 0x48, 0x04, 0x48, 0xf1, 0x01, 0x5f, 0xea, 0x5d, 0x32, 0x8c, 0xda, 0x45, + 0x2f, 0x0d, 0x03, 0xdc, 0xe6, 0xb8, 0x68, 0xe0, 0x40, 0x42, 0xc7, 0x65, + 0x9e, 0xd3, 0xa4, 0xe8, 0xb4, 0xad, 0xda, 0xd0, 0x4f, 0x05, 0xac, 0x71, + 0x07, 0xf0, 0x49, 0x4f, 0x9f, 0x5f, 0x4f, 0x50, 0xe9, 0xc3, 0xd6, 0xab, + 0x21, 0xed, 0x66, 0xf2, 0xc0, 0x43, 0x88, 0xf1, 0xfe, 0xe4, 0xd5, 0x75, + 0xdc, 0xf1, 0xed, 0xb9, 0xb5, 0xdf, 0xe6, 0xf6, 0xc3, 0xbf, 0xce, 0x64, + 0x2b, 0xfd, 0x52, 0xc3, 0x6e, 0x3f, 0xa1, 0x1c, 0x5b, 0xbb, 0xf0, 0x3f, + 0xde, 0xb2, 0x5b, 0x48, 0x32, 0x0b, 0x60, 0x0e, 0x1c, 0x92, 0x9d, 0x3a, + 0x7a, 0xd6, 0x1b, 0xb5, 0xc8, 0xa6, 0xc6, 0x18, 0xfa, 0x4c, 0x21, 0xe2, + 0x7f, 0xe8, 0x95, 0x61, 0x9d, 0x47, 0x1d, 0xee, 0x1e, 0x85, 0xe2, 0x7f, + 0x75, 0xc7, 0x69, 0xfb, 0x9d, 0xb5, 0x62, 0xbb, 0x18, 0xf6, 0x98, 0x50, + 0x34, 0xbf, 0xb8, 0x04, 0x79, 0xa4, 0xa7, 0xa5, 0x73, 0xe9, 0xb9, 0xa0, + 0xe4, 0x54, 0xdb, 0x3b, 0x07, 0x90, 0x26, 0x7f, 0xac, 0x8d, 0xf6, 0x91, + 0xe9, 0x7a, 0x5f, 0x6b, 0xc8, 0xf4, 0xf8, 0xf4, 0xbd, 0x47, 0xed, 0xff, + 0x00, 0xaa, 0x9f, 0xc5, 0x72, 0xac, 0x75, 0x95, 0x6b, 0x5b, 0xdd, 0x59, + 0xee, 0x1a, 0x74, 0x44, 0xfd, 0xa1, 0x97, 0x1b, 0x7d, 0x5f, 0x3d, 0xdb, + 0x5b, 0xbb, 0xef, 0x84, 0x94, 0xf5, 0xdd, 0x61, 0xee, 0x6f, 0x4b, 0x0f, + 0x01, 0xce, 0x2e, 0xb1, 0xac, 0x01, 0x80, 0x39, 0xd1, 0xab, 0x8e, 0x87, + 0xe0, 0xb2, 0x46, 0xe7, 0x00, 0x63, 0x68, 0xd0, 0xed, 0x73, 0x0b, 0x0a, + 0xd4, 0xfa, 0xc2, 0xe8, 0xc5, 0xc4, 0xa4, 0x1e, 0x5e, 0x5d, 0x06, 0x3b, + 0x37, 0xfd, 0xab, 0x33, 0x6d, 0xdb, 0x5a, 0x20, 0x96, 0xb4, 0x4c, 0x73, + 0xfd, 0xe9, 0x29, 0x5b, 0x5d, 0x26, 0x64, 0x40, 0xd3, 0x53, 0x13, 0xf3, + 0x0e, 0x4d, 0xe9, 0xcb, 0x39, 0x04, 0x78, 0xe8, 0x48, 0x1f, 0x2d, 0xa8, + 0x8c, 0xae, 0xf1, 0xa3, 0x81, 0x20, 0xe9, 0xe3, 0x08, 0x77, 0x00, 0xcd, + 0xd2, 0xdd, 0x67, 0xda, 0x01, 0x8d, 0x12, 0x53, 0x52, 0xfa, 0x4c, 0x4f, + 0xf7, 0xff, 0x00, 0xb5, 0x56, 0x66, 0x23, 0x9f, 0x76, 0xd3, 0xfb, 0xae, + 0x27, 0xfc, 0xd2, 0xae, 0x17, 0x0b, 0x25, 0xaf, 0x69, 0xdb, 0xe7, 0x07, + 0x40, 0x9b, 0x0e, 0x91, 0xf6, 0xb9, 0x6f, 0x1b, 0x48, 0x3c, 0xf7, 0x49, + 0x4e, 0xd6, 0x3d, 0x26, 0xbc, 0x06, 0x63, 0xd4, 0xe2, 0x0d, 0xad, 0x02, + 0xd7, 0x71, 0xa3, 0x46, 0xd3, 0xfc, 0x51, 0xea, 0x63, 0x69, 0x2d, 0xaa, + 0xa0, 0xd0, 0x63, 0xfc, 0xd6, 0xf9, 0x0f, 0x34, 0x2b, 0x5d, 0x4f, 0xec, + 0xe2, 0xd7, 0x5d, 0xe9, 0x3d, 0xaf, 0x87, 0x99, 0x88, 0x61, 0xf7, 0x7e, + 0x28, 0x54, 0xe4, 0x63, 0x58, 0x3e, 0xcf, 0x89, 0xb8, 0xbe, 0xcf, 0xe7, + 0x2c, 0x68, 0x26, 0x3c, 0xb7, 0x78, 0xfe, 0x44, 0x94, 0xd8, 0x13, 0x9b, + 0x7f, 0xa6, 0xdf, 0xe6, 0xab, 0xe7, 0xc2, 0x51, 0xb3, 0x1a, 0xc6, 0x63, + 0x16, 0x18, 0x01, 0xda, 0x42, 0x95, 0x25, 0x8d, 0x6e, 0xca, 0xdb, 0xb4, + 0x33, 0x86, 0xca, 0x10, 0xdd, 0x6e, 0x44, 0x9e, 0x1b, 0xdb, 0xb2, 0x4a, + 0x64, 0xca, 0x08, 0x63, 0x75, 0xd4, 0x77, 0x55, 0x73, 0x69, 0xb6, 0xdc, + 0xb0, 0x46, 0x8d, 0x6d, 0x67, 0x69, 0x98, 0xf7, 0x48, 0xdd, 0xf8, 0x2d, + 0x1b, 0x49, 0x3a, 0x37, 0xc1, 0x52, 0xc9, 0x02, 0xc7, 0xd7, 0x49, 0x01, + 0xe6, 0x77, 0x44, 0xed, 0x3e, 0xdf, 0xf7, 0xa4, 0xa6, 0xad, 0xb5, 0x16, + 0xdd, 0x54, 0x8d, 0x5d, 0xb4, 0xfe, 0x2a, 0xd7, 0x58, 0x2e, 0xa9, 0xcc, + 0xb7, 0x74, 0x34, 0xb6, 0x08, 0xf3, 0x9e, 0x14, 0x72, 0x43, 0x7d, 0x7c, + 0x68, 0xee, 0xd3, 0xa7, 0xc0, 0xa3, 0x75, 0x71, 0xbf, 0x16, 0x07, 0x68, + 0xd1, 0x25, 0x38, 0x78, 0xd1, 0x07, 0x59, 0x82, 0x35, 0xf9, 0xf0, 0xb7, + 0x6a, 0x0d, 0x2f, 0x6b, 0x00, 0x82, 0x3b, 0x78, 0x2c, 0x4a, 0x49, 0xda, + 0xd0, 0x00, 0x2e, 0x2f, 0x6c, 0x98, 0xee, 0x1c, 0x49, 0x5b, 0x95, 0x39, + 0xc5, 0xe0, 0x71, 0x03, 0x52, 0x52, 0x53, 0xcb, 0x74, 0xab, 0x89, 0xea, + 0x39, 0xb9, 0x32, 0x21, 0xd6, 0x3c, 0x92, 0x79, 0x20, 0xb8, 0x98, 0x0b, + 0xab, 0xa6, 0xdd, 0xcd, 0x7c, 0x68, 0xd6, 0xb9, 0xad, 0x03, 0xe2, 0xd0, + 0xef, 0xe2, 0xb9, 0x0e, 0x82, 0x6a, 0x2e, 0xb5, 0xcf, 0x66, 0xf7, 0x59, + 0x61, 0x15, 0x9e, 0xcd, 0x77, 0x32, 0xba, 0xf6, 0x35, 0xbb, 0x48, 0x60, + 0x90, 0xdb, 0x61, 0xc0, 0x78, 0x80, 0xd6, 0x94, 0x94, 0xc6, 0xdb, 0x7f, + 0x58, 0x75, 0x7d, 0xf6, 0xee, 0x9f, 0x2d, 0xc1, 0xab, 0x4f, 0x06, 0xc0, + 0x1b, 0xb0, 0xf2, 0x76, 0xb6, 0x7f, 0x27, 0xe5, 0x59, 0xbb, 0x03, 0xee, + 0x73, 0xbb, 0xc0, 0x04, 0xf9, 0x02, 0x4a, 0xb9, 0x89, 0x53, 0xad, 0x97, + 0x4c, 0x06, 0xbd, 0x93, 0xdb, 0xce, 0x52, 0x53, 0x63, 0xa8, 0xb1, 0xce, + 0xbe, 0xa6, 0xb7, 0x57, 0x76, 0x9f, 0x15, 0x7b, 0x10, 0x6e, 0xa0, 0xeb, + 0x3a, 0x39, 0xb1, 0xf2, 0x54, 0x2f, 0x3f, 0xae, 0x81, 0xf9, 0xec, 0x68, + 0x3f, 0x74, 0xab, 0xd8, 0x01, 0xfe, 0x81, 0x2d, 0x12, 0x43, 0x9f, 0xcf, + 0x70, 0x52, 0x53, 0x5b, 0x24, 0xc3, 0xd8, 0xd0, 0x38, 0xdb, 0x20, 0x78, + 0xf2, 0xa9, 0xbe, 0x3f, 0x6e, 0x39, 0xff, 0x00, 0xf0, 0x7a, 0x7f, 0x68, + 0x93, 0xfc, 0x15, 0x9c, 0xe7, 0x58, 0xc7, 0xd1, 0xb4, 0x6d, 0xb0, 0xbd, + 0x85, 0xfb, 0xb5, 0xd0, 0xb8, 0x48, 0xfb, 0x95, 0x67, 0x82, 0x3a, 0xbb, + 0x87, 0x60, 0x18, 0xd1, 0xf2, 0x0e, 0x29, 0x29, 0xdd, 0xc2, 0xf6, 0xe2, + 0x34, 0x9d, 0x0f, 0xb8, 0x91, 0xf3, 0x2b, 0x27, 0xab, 0x3c, 0xfd, 0xa0, + 0x1f, 0x03, 0xa2, 0xbf, 0x4d, 0xe1, 0x98, 0x6d, 0x03, 0x57, 0x00, 0xed, + 0x3e, 0x24, 0xac, 0xce, 0xa7, 0xad, 0xe3, 0x59, 0x1b, 0x52, 0x53, 0x4b, + 0x32, 0xd3, 0x55, 0x14, 0x30, 0x0f, 0x77, 0xa8, 0x09, 0x70, 0xe2, 0x47, + 0x65, 0x8d, 0xd6, 0x2b, 0xae, 0xdc, 0xe0, 0xe7, 0x12, 0x26, 0xa6, 0x44, + 0x89, 0x1d, 0xd6, 0xb7, 0x50, 0x61, 0x34, 0xd0, 0x07, 0x67, 0x17, 0x9f, + 0x38, 0x69, 0x59, 0xd9, 0x41, 0x8e, 0xbc, 0x36, 0xc6, 0x90, 0x45, 0x75, + 0xc3, 0xbc, 0x25, 0xb3, 0xaa, 0x4a, 0x73, 0x1f, 0x8e, 0xc6, 0xea, 0xc7, + 0xcf, 0x6d, 0xb3, 0x07, 0xf0, 0x44, 0xc0, 0x63, 0x8e, 0x58, 0x0e, 0xdd, + 0xa0, 0x27, 0x58, 0x20, 0xc2, 0x39, 0x63, 0x41, 0xda, 0x0f, 0x3a, 0x82, + 0x40, 0x29, 0xb1, 0x6b, 0x8c, 0x96, 0x3a, 0x34, 0x27, 0xf1, 0x49, 0x4f, + 0x49, 0x82, 0xd6, 0x6f, 0xad, 0xa7, 0x92, 0xe8, 0x8f, 0x05, 0x63, 0x2f, + 0x22, 0xc6, 0x7b, 0x40, 0x0e, 0x69, 0xfa, 0x41, 0xc3, 0xf3, 0x48, 0x77, + 0x1f, 0x35, 0x57, 0x19, 0xc4, 0x3a, 0xa7, 0x18, 0x10, 0x65, 0x17, 0x22, + 0xc6, 0xb9, 0xe0, 0x8d, 0x67, 0x43, 0xf2, 0x94, 0x94, 0xf3, 0x3f, 0x58, + 0x18, 0xea, 0x6a, 0xae, 0xfa, 0x8c, 0x36, 0xdb, 0x0b, 0x1c, 0xcf, 0x1d, + 0xad, 0x0e, 0x59, 0x36, 0xec, 0x35, 0x35, 0xc1, 0xc0, 0x78, 0xb4, 0xad, + 0xaf, 0xac, 0x8f, 0x07, 0x07, 0x15, 0xbc, 0x93, 0x75, 0xae, 0x9e, 0xe0, + 0x00, 0xd0, 0xb0, 0xed, 0xda, 0xea, 0x9b, 0xc1, 0x70, 0x8d, 0x7f, 0x81, + 0x49, 0x4a, 0x69, 0x89, 0x77, 0x6e, 0xd0, 0x9d, 0xef, 0x03, 0x47, 0x6a, + 0xd3, 0xce, 0x9f, 0xdc, 0xa2, 0x08, 0x78, 0xd7, 0xda, 0x52, 0xb2, 0xad, + 0xfc, 0x1d, 0x42, 0x4a, 0x6c, 0x51, 0x8d, 0xf6, 0x86, 0xd8, 0xe6, 0x80, + 0x1b, 0x53, 0x77, 0x3a, 0x4f, 0x20, 0xf8, 0x20, 0xfa, 0x34, 0x6e, 0x8d, + 0x67, 0xc3, 0xba, 0x55, 0x35, 0xec, 0xd6, 0x75, 0x0a, 0x5e, 0xb0, 0xdd, + 0xbf, 0x6f, 0xba, 0x21, 0x25, 0x3d, 0x0f, 0xd6, 0x86, 0xdd, 0xf6, 0xbc, + 0x6f, 0x4c, 0x02, 0xc6, 0xd4, 0x64, 0x03, 0xc9, 0x9d, 0x56, 0x6b, 0x2c, + 0xb8, 0x11, 0xba, 0xa7, 0x37, 0x5e, 0xdc, 0x2d, 0x5e, 0xa8, 0xc0, 0xfc, + 0x9a, 0xea, 0x3c, 0x86, 0xe8, 0x09, 0xe3, 0x71, 0x95, 0x06, 0x63, 0xb2, + 0x3c, 0xcf, 0x79, 0x49, 0x4d, 0x56, 0xe7, 0x41, 0x87, 0x48, 0x1d, 0x89, + 0xd5, 0x42, 0xcc, 0xaa, 0x5d, 0x32, 0x07, 0x1a, 0x47, 0x9a, 0xb6, 0x71, + 0xdc, 0xe2, 0xed, 0xe4, 0x08, 0xe3, 0xc4, 0xa8, 0x3b, 0x11, 0xae, 0x11, + 0xb5, 0xa4, 0xf9, 0x81, 0x29, 0x29, 0xcd, 0x79, 0x63, 0xdc, 0x0c, 0x00, + 0x0f, 0x87, 0x0a, 0xc7, 0x4f, 0x6b, 0x4d, 0xee, 0x2c, 0x1a, 0x06, 0xcf, + 0xe2, 0x88, 0xec, 0x1a, 0xdd, 0xa3, 0x98, 0x01, 0xf1, 0x6c, 0x85, 0x67, + 0xa6, 0xe2, 0xb6, 0x97, 0xd8, 0x5b, 0x31, 0xa0, 0x20, 0xeb, 0xc6, 0xa9, + 0x29, 0x97, 0xd9, 0xd9, 0x6b, 0xae, 0x2f, 0x6b, 0x5c, 0xc6, 0x58, 0x0f, + 0xbb, 0x81, 0x02, 0x27, 0x5f, 0x8a, 0xbf, 0x8d, 0xe9, 0x16, 0x86, 0x56, + 0xf0, 0xd6, 0xf8, 0x35, 0xba, 0xaa, 0x74, 0xbe, 0xa7, 0xba, 0xd6, 0x3b, + 0xc4, 0x9d, 0x34, 0x9d, 0x55, 0xec, 0x59, 0x10, 0x18, 0x1a, 0xd1, 0xf8, + 0xa4, 0xa5, 0x5d, 0x58, 0xa5, 0x87, 0xd2, 0x9d, 0x79, 0x25, 0x2c, 0x7a, + 0xe1, 0xa5, 0xc0, 0xf3, 0xac, 0xa2, 0xda, 0xdf, 0x53, 0xc4, 0xce, 0x84, + 0x25, 0xb3, 0x60, 0x90, 0x23, 0xc8, 0xa4, 0xa6, 0x0e, 0x13, 0xc4, 0xca, + 0xce, 0xca, 0xb2, 0x33, 0x9a, 0xd2, 0x40, 0x15, 0xd4, 0x49, 0x3e, 0x6f, + 0x77, 0xf7, 0x35, 0x68, 0x17, 0x3b, 0x69, 0x77, 0x66, 0x8d, 0x57, 0x30, + 0xdc, 0x87, 0x65, 0xe6, 0xe4, 0x64, 0x3a, 0x7e, 0xce, 0xd7, 0x06, 0x8d, + 0xbf, 0x4a, 0xc2, 0x04, 0x06, 0x35, 0x25, 0x3b, 0x35, 0x7e, 0x97, 0x22, + 0xa2, 0x35, 0x15, 0xd6, 0x49, 0xd6, 0x7e, 0x93, 0xb4, 0xfc, 0x8a, 0xee, + 0x4d, 0x5e, 0xae, 0x3d, 0x8c, 0xfc, 0xe7, 0x30, 0x90, 0x7b, 0xc8, 0xd5, + 0x50, 0xe9, 0xd5, 0x3e, 0x86, 0x9b, 0x6f, 0x1e, 0xeb, 0x0c, 0x91, 0xd8, + 0x78, 0x34, 0x4f, 0x80, 0x5a, 0x01, 0xfb, 0x8b, 0x5e, 0xed, 0x37, 0x0d, + 0x5a, 0xdd, 0x4c, 0x04, 0x94, 0xe2, 0x62, 0x6d, 0xb3, 0xde, 0x34, 0xd4, + 0x49, 0x3a, 0x71, 0x12, 0x56, 0x91, 0x2d, 0x65, 0x36, 0x3c, 0xf6, 0x6b, + 0xdc, 0x7e, 0x4d, 0x2a, 0x96, 0x26, 0xda, 0xde, 0xea, 0xf6, 0x92, 0x1a, + 0x4c, 0xcf, 0xc4, 0xf6, 0x28, 0xd9, 0x85, 0xad, 0xc0, 0xca, 0x03, 0x57, + 0xfa, 0x36, 0x11, 0xfe, 0x69, 0x09, 0x29, 0xe7, 0xbe, 0xad, 0x5a, 0xc2, + 0x1f, 0x44, 0xc5, 0xa1, 0xc2, 0xd1, 0xe6, 0xd0, 0x0c, 0xfd, 0xcb, 0xb2, + 0x63, 0x62, 0x0f, 0x01, 0xf7, 0x49, 0x1d, 0xf5, 0x2b, 0x80, 0xe8, 0x04, + 0x8e, 0xa0, 0x1a, 0xd7, 0x16, 0x39, 0xec, 0x73, 0x5a, 0x40, 0x9f, 0x02, + 0x79, 0xf2, 0x0b, 0xd0, 0xdc, 0xf6, 0x83, 0x53, 0x3c, 0x5c, 0x7f, 0xe8, + 0x94, 0x94, 0x8e, 0xb6, 0x6e, 0x36, 0x90, 0xee, 0x06, 0x9f, 0x91, 0x5f, + 0xc1, 0x35, 0xb3, 0x1d, 0x9b, 0xbe, 0x93, 0xde, 0x01, 0x1d, 0xfb, 0x00, + 0xb3, 0xad, 0x70, 0x68, 0x7c, 0x7e, 0x74, 0xc0, 0x08, 0xd8, 0x6f, 0x78, + 0xba, 0x96, 0xfe, 0x68, 0x76, 0xa3, 0xc9, 0x25, 0x26, 0x73, 0xc5, 0xb9, + 0xf6, 0x39, 0xa6, 0x0e, 0xd0, 0x1a, 0x4e, 0x9a, 0x44, 0x4a, 0xd2, 0xc2, + 0xa9, 0xf5, 0xbe, 0x77, 0x1d, 0x82, 0xb7, 0x7b, 0x3b, 0x6e, 0xde, 0x75, + 0x59, 0x16, 0xfb, 0x7a, 0x85, 0xae, 0x69, 0xe0, 0x86, 0xc7, 0xc4, 0x85, + 0xb5, 0x87, 0xb5, 0xb4, 0xee, 0xe5, 0xc4, 0x10, 0x7f, 0xce, 0x27, 0xf8, + 0xa4, 0xa7, 0x37, 0xaa, 0xba, 0xb7, 0x5d, 0x8f, 0x6b, 0xc8, 0x6b, 0x5a, + 0xf1, 0xee, 0xf3, 0x32, 0xd1, 0xf9, 0x50, 0x1e, 0xef, 0xf2, 0xa1, 0x9e, + 0xef, 0x20, 0xfc, 0x81, 0x56, 0xb2, 0xdb, 0xea, 0xbd, 0xad, 0x89, 0x1b, + 0x83, 0x87, 0xe5, 0x54, 0x64, 0x33, 0xa8, 0xb4, 0xf8, 0xea, 0xe3, 0xe6, + 0xe1, 0xaa, 0x4a, 0x75, 0x58, 0xfd, 0xb4, 0xcf, 0x66, 0x81, 0x3e, 0x6b, + 0x3b, 0xa9, 0x3c, 0xb9, 0xc2, 0xc0, 0x00, 0x71, 0x04, 0x34, 0x1f, 0x33, + 0x0a, 0xe6, 0x66, 0x56, 0x37, 0x4f, 0xe9, 0xe7, 0x2a, 0xf3, 0x0c, 0x1b, + 0x74, 0x1a, 0xb8, 0x97, 0x76, 0x0b, 0x96, 0xb3, 0xeb, 0x05, 0xf9, 0x96, + 0x07, 0x57, 0x50, 0xaf, 0x1d, 0x9c, 0x13, 0xab, 0x8e, 0xb2, 0x25, 0x25, + 0x3a, 0x3d, 0x45, 0xe2, 0xb3, 0x43, 0x4e, 0xb2, 0x5c, 0xd2, 0x3f, 0xb2, + 0xa9, 0x65, 0xd7, 0x5b, 0xf2, 0xcb, 0xc8, 0xf7, 0x6d, 0x60, 0x90, 0x60, + 0x88, 0x68, 0xf0, 0x56, 0x3e, 0xd0, 0xcc, 0xd6, 0xb4, 0x97, 0x9d, 0xed, + 0xd4, 0x08, 0x04, 0x70, 0xa0, 0xec, 0x77, 0x3c, 0x8d, 0x66, 0xc6, 0x73, + 0xc1, 0x90, 0x92, 0x9a, 0x8e, 0xc7, 0xd8, 0x37, 0x35, 0xef, 0xf2, 0xe0, + 0x80, 0xa3, 0x8a, 0x2c, 0xfb, 0x5d, 0x63, 0x70, 0x73, 0x64, 0x9e, 0x20, + 0xcc, 0x29, 0xda, 0x2c, 0xa5, 0xbb, 0xee, 0x79, 0x15, 0xcf, 0x31, 0xa6, + 0xbf, 0x09, 0x4b, 0x1f, 0x6b, 0xb2, 0x2a, 0x2d, 0x32, 0xdd, 0x75, 0x1a, + 0x8e, 0x3c, 0x42, 0x4a, 0x76, 0xf1, 0xdb, 0xba, 0xc6, 0x83, 0xc0, 0x06, + 0x62, 0x12, 0xc9, 0x6b, 0x59, 0x68, 0xad, 0xa6, 0x09, 0x1b, 0x80, 0x3f, + 0xeb, 0xe6, 0xa7, 0x82, 0x07, 0xac, 0x5d, 0xb4, 0x18, 0x6f, 0x24, 0x79, + 0x84, 0xd9, 0x7e, 0x9b, 0xb3, 0x5a, 0x75, 0x10, 0xc3, 0x23, 0xe6, 0x12, + 0x53, 0x83, 0xf5, 0x8f, 0x15, 0xfe, 0x96, 0x14, 0x4b, 0x9a, 0x3d, 0x47, + 0x18, 0xf3, 0x23, 0x55, 0x8b, 0xe8, 0x1d, 0xa4, 0x1e, 0xde, 0x21, 0x74, + 0x1f, 0x5a, 0x1e, 0x43, 0xf0, 0x45, 0x33, 0xa5, 0x6f, 0x76, 0x87, 0x5d, + 0x48, 0x0b, 0x28, 0x5d, 0x77, 0x79, 0x23, 0xc0, 0x89, 0xfc, 0xb2, 0x92, + 0x9a, 0x46, 0x97, 0x33, 0x91, 0xa1, 0xe3, 0xc1, 0x2d, 0x5a, 0x38, 0x57, + 0x6c, 0xb5, 0xa5, 0xa5, 0xa5, 0xad, 0x23, 0xbc, 0x08, 0x3a, 0xa0, 0x96, + 0xd2, 0x5a, 0x76, 0xcf, 0xc8, 0xcf, 0xe5, 0x84, 0x94, 0x89, 0xaf, 0x23, + 0x9d, 0x7c, 0x8a, 0x96, 0xf6, 0x44, 0xec, 0xf9, 0xa4, 0xc6, 0x89, 0xe6, + 0x47, 0x79, 0x46, 0xf4, 0x59, 0xf4, 0xb6, 0x08, 0xe3, 0x6e, 0xf1, 0x09, + 0x29, 0xd1, 0xea, 0x39, 0xd5, 0xe4, 0x75, 0x37, 0xba, 0xa2, 0x76, 0xd6, + 0x03, 0x01, 0xec, 0x76, 0xf2, 0x42, 0x93, 0x2f, 0x04, 0x7d, 0x25, 0x5e, + 0xbc, 0x6b, 0xea, 0xbd, 0xcc, 0x7d, 0x0f, 0x20, 0xb8, 0xc1, 0xdb, 0xed, + 0x89, 0xf1, 0x0a, 0xe3, 0xaa, 0xda, 0x5a, 0xd3, 0x59, 0x69, 0x77, 0x88, + 0x20, 0xa4, 0xa5, 0x38, 0xbe, 0x00, 0xe5, 0x41, 0xce, 0xb0, 0x98, 0x7b, + 0x51, 0xeb, 0x80, 0x3b, 0x8d, 0xba, 0x47, 0x79, 0x4e, 0x43, 0x62, 0x05, + 0x85, 0xbe, 0x20, 0x84, 0x94, 0x80, 0xc9, 0xd4, 0x7d, 0xc5, 0x5e, 0xe9, + 0xad, 0x36, 0x57, 0x63, 0x9e, 0x03, 0x43, 0x64, 0x9f, 0x93, 0x55, 0x27, + 0xc3, 0x64, 0xee, 0x07, 0xc0, 0xa2, 0xe1, 0xd8, 0xef, 0x49, 0xcc, 0x99, + 0xdc, 0x1d, 0x3e, 0x1a, 0xc3, 0x52, 0x53, 0x57, 0x1a, 0xe6, 0xb6, 0xe7, + 0x97, 0x6a, 0x09, 0x26, 0x07, 0x31, 0x3f, 0xec, 0x5a, 0x43, 0x21, 0x80, + 0x0f, 0x46, 0x35, 0xfc, 0xd7, 0x0d, 0x42, 0xcb, 0xc1, 0x63, 0x41, 0x7e, + 0xfd, 0x5c, 0xe9, 0x01, 0xff, 0x00, 0xd5, 0xd6, 0x3f, 0x15, 0x71, 0xa7, + 0x79, 0xec, 0xf2, 0x0f, 0xb5, 0xc7, 0x94, 0x94, 0xde, 0xab, 0x79, 0x3b, + 0x9c, 0x20, 0xf0, 0x08, 0x32, 0x14, 0xde, 0xc7, 0x96, 0xc4, 0x93, 0xe2, + 0x65, 0x42, 0xa2, 0xeb, 0x58, 0x37, 0x37, 0x6f, 0xcc, 0x27, 0xb0, 0xb8, + 0x68, 0x4c, 0x0f, 0x88, 0x49, 0x4e, 0x7f, 0x5a, 0xcc, 0xfb, 0x26, 0x2b, + 0x69, 0xac, 0xfe, 0x9e, 0xff, 0x00, 0x65, 0x60, 0x19, 0x3a, 0xf7, 0xf9, + 0x26, 0xc2, 0xc1, 0xaa, 0x9a, 0xeb, 0x66, 0xd2, 0xd2, 0xc0, 0x00, 0x23, + 0xf1, 0x2b, 0x2f, 0xab, 0x1b, 0x07, 0x55, 0xc6, 0xc9, 0x0c, 0x36, 0x86, + 0x07, 0x6f, 0x13, 0xc3, 0x01, 0x1c, 0x2d, 0x8c, 0x5b, 0x30, 0xf2, 0x75, + 0xa6, 0xcf, 0x77, 0x3b, 0x1c, 0x61, 0xc9, 0x29, 0xb7, 0xe9, 0xd0, 0xd3, + 0x2e, 0xd4, 0x8e, 0x24, 0xca, 0x06, 0x69, 0x2d, 0xc5, 0x75, 0x95, 0x8d, + 0xcf, 0x00, 0xed, 0x04, 0xed, 0xfc, 0x88, 0x8d, 0x00, 0x11, 0x32, 0xab, + 0xf5, 0x27, 0x13, 0x4b, 0x88, 0x90, 0xc0, 0x23, 0xe3, 0x3a, 0x24, 0xa6, + 0xad, 0x36, 0x59, 0xe9, 0x3d, 0xe0, 0x02, 0xf6, 0x33, 0xda, 0xe2, 0x39, + 0x24, 0xf7, 0x51, 0xea, 0x0e, 0xb1, 0xdd, 0x2a, 0xfd, 0xc3, 0xde, 0x68, + 0x20, 0x86, 0xf7, 0x73, 0x8c, 0x42, 0x9e, 0x31, 0xda, 0xf2, 0xd8, 0xfd, + 0x18, 0x6c, 0x9f, 0x19, 0x1f, 0xee, 0x4b, 0x65, 0x79, 0x38, 0x45, 0x97, + 0x82, 0x1b, 0x68, 0x0d, 0x73, 0x64, 0x83, 0x13, 0xba, 0x24, 0x78, 0xc2, + 0x4a, 0x79, 0xbe, 0x89, 0x89, 0x6b, 0x7a, 0x8d, 0x5e, 0xa4, 0x32, 0x64, + 0x6d, 0xdc, 0x37, 0xea, 0x23, 0xe8, 0x8d, 0x42, 0xee, 0x40, 0x73, 0x6f, + 0xa8, 0x9e, 0x35, 0xe3, 0x50, 0xb9, 0xcc, 0x2a, 0xb0, 0x6a, 0xce, 0xc7, + 0x6e, 0x2b, 0x20, 0x35, 0xc4, 0xee, 0x8d, 0x49, 0x91, 0xc9, 0x26, 0x57, + 0x44, 0xe7, 0xb4, 0x5f, 0x5b, 0x24, 0x07, 0x6d, 0x2e, 0x03, 0xcb, 0x4e, + 0xc9, 0x29, 0x8d, 0xd2, 0xe0, 0xd0, 0x3c, 0x48, 0x47, 0xa4, 0x8a, 0xef, + 0x61, 0x1a, 0xea, 0xa9, 0x5a, 0xff, 0x00, 0x7b, 0x18, 0xd3, 0xa8, 0x78, + 0xdc, 0x3c, 0x37, 0x09, 0x56, 0xf7, 0x0f, 0x59, 0xa4, 0x73, 0x3a, 0xc7, + 0x12, 0x92, 0x99, 0x31, 0xe1, 0xf9, 0xaf, 0xe4, 0x07, 0x39, 0x90, 0x7e, + 0x30, 0x57, 0x41, 0x45, 0x61, 0xac, 0x9f, 0x12, 0x41, 0x1f, 0x35, 0xcd, + 0xe3, 0x92, 0x72, 0x6c, 0x3f, 0xcb, 0x64, 0xfc, 0x02, 0xe8, 0x31, 0x9c, + 0x6c, 0xc7, 0x0f, 0x69, 0x82, 0x0c, 0x9f, 0x31, 0xaa, 0x4a, 0x45, 0x7e, + 0xdf, 0x58, 0x03, 0x00, 0x6e, 0xd3, 0xe4, 0x16, 0x4d, 0x24, 0x3f, 0x3b, + 0x7f, 0xd2, 0x87, 0x3a, 0x01, 0xf8, 0x94, 0x77, 0xe4, 0x87, 0xe6, 0xb2, + 0x93, 0xa1, 0x2f, 0x24, 0x7c, 0x27, 0xfd, 0x8a, 0x9e, 0x3b, 0xcb, 0x33, + 0x59, 0x07, 0x4d, 0xe4, 0x13, 0x3a, 0x72, 0x7b, 0x24, 0xa4, 0xdf, 0x59, + 0x43, 0x5d, 0xd1, 0xa3, 0x8d, 0xb6, 0x56, 0x4e, 0x9d, 0x89, 0x8f, 0xe2, + 0xb9, 0xca, 0xa8, 0x63, 0x80, 0x07, 0x46, 0x37, 0x52, 0x38, 0x9f, 0x8a, + 0xe8, 0xfa, 0xf4, 0xdb, 0xd2, 0x72, 0x03, 0x47, 0xb8, 0xed, 0xda, 0x38, + 0xd4, 0x38, 0x2e, 0x7e, 0x8c, 0x2b, 0x5c, 0xc0, 0xec, 0x82, 0x1a, 0xc1, + 0xdb, 0x86, 0xfc, 0xc9, 0x49, 0x4d, 0x9a, 0xf2, 0x29, 0x60, 0x0d, 0xa8, + 0x6e, 0x23, 0xb3, 0x78, 0xfb, 0xd2, 0xbe, 0xbe, 0xa1, 0x92, 0xcf, 0xd0, + 0x57, 0xb1, 0xe0, 0x1d, 0xaf, 0x0f, 0x87, 0x09, 0xf3, 0x85, 0x4c, 0xf5, + 0x1e, 0x9d, 0x8e, 0xed, 0x95, 0x3b, 0xed, 0x36, 0x8d, 0x36, 0xd5, 0xc7, + 0xcd, 0xe7, 0x45, 0x4b, 0x3b, 0xaa, 0xf5, 0xe7, 0x30, 0xfa, 0x4d, 0x18, + 0xb4, 0x70, 0x4d, 0x64, 0x39, 0xd0, 0x7c, 0x5d, 0xcf, 0xdc, 0x92, 0x9d, + 0x5a, 0xf2, 0x4d, 0x4c, 0x15, 0x66, 0x06, 0x87, 0xfd, 0x17, 0x32, 0xc2, + 0x1a, 0xe9, 0xf0, 0xf3, 0x46, 0xaf, 0x1f, 0x19, 0x96, 0x07, 0x53, 0x41, + 0xa1, 0xda, 0xee, 0xf0, 0x2b, 0x1f, 0xa4, 0xf4, 0x5a, 0x2f, 0x65, 0x79, + 0xf9, 0x97, 0x3a, 0xe7, 0x3c, 0x97, 0x0a, 0x8f, 0x1e, 0xd3, 0x1e, 0xe3, + 0xc9, 0xe1, 0x6e, 0x12, 0x59, 0x63, 0x63, 0x51, 0xa9, 0x9f, 0x8a, 0x4a, + 0x74, 0xf0, 0x03, 0xbd, 0x47, 0xb1, 0xba, 0xcb, 0x47, 0xe5, 0x09, 0x65, + 0xd4, 0xef, 0xb4, 0x78, 0x3f, 0x69, 0x3f, 0x2f, 0x14, 0xdd, 0x2a, 0x0d, + 0x8e, 0x93, 0x1a, 0x68, 0x78, 0xee, 0x0a, 0x3e, 0x47, 0xbb, 0x28, 0xbe, + 0x37, 0x6d, 0x61, 0x04, 0x93, 0x1a, 0x12, 0x12, 0x53, 0xcd, 0x75, 0xa0, + 0xe7, 0xdb, 0x8e, 0xd7, 0x34, 0x9f, 0x4e, 0xb3, 0xa8, 0x3e, 0x2e, 0xff, + 0x00, 0x62, 0xa2, 0xc9, 0x71, 0x21, 0xa0, 0xb4, 0xb4, 0x72, 0x08, 0x2b, + 0x43, 0xeb, 0x0d, 0x4e, 0x76, 0x4e, 0x3b, 0xda, 0x40, 0x1e, 0x89, 0xf7, + 0x0d, 0x48, 0x3b, 0x8a, 0xcc, 0x65, 0x6f, 0x24, 0xbb, 0x68, 0xdc, 0x78, + 0x70, 0xd0, 0xfc, 0xe1, 0x25, 0x2f, 0x63, 0xc8, 0x78, 0xa8, 0x92, 0x43, + 0xf8, 0xd0, 0x14, 0x37, 0xd3, 0xb4, 0x9f, 0x1f, 0xba, 0x51, 0x9d, 0x69, + 0x6b, 0x46, 0xea, 0x9b, 0xa7, 0x0e, 0x20, 0x6b, 0xe7, 0xa7, 0xf7, 0x20, + 0xb2, 0x77, 0x4b, 0xef, 0x86, 0x38, 0x18, 0x04, 0x06, 0xc7, 0xdc, 0x0a, + 0x4a, 0x46, 0x18, 0x58, 0xed, 0x27, 0xc7, 0xef, 0x56, 0x61, 0xde, 0x97, + 0xa9, 0x0a, 0x74, 0xd0, 0xdb, 0x1a, 0x40, 0x7b, 0x4d, 0x80, 0xfb, 0x67, + 0xe8, 0x91, 0xfd, 0x6f, 0xf6, 0x2b, 0xbf, 0x66, 0x3f, 0x65, 0xf5, 0x36, + 0x8d, 0xfc, 0xec, 0x9d, 0x3d, 0x39, 0xe6, 0x7f, 0x14, 0x94, 0xd0, 0x6f, + 0x53, 0xea, 0xc2, 0x1d, 0xea, 0x87, 0x47, 0x78, 0x3f, 0xc4, 0x2b, 0x0c, + 0xeb, 0x7d, 0x63, 0x66, 0xe2, 0x01, 0x13, 0x04, 0xc2, 0x9d, 0x9f, 0x67, + 0x78, 0xd1, 0x92, 0x39, 0x1e, 0xd2, 0x00, 0xfc, 0x10, 0x9c, 0x71, 0x1b, + 0x24, 0x93, 0x1c, 0x00, 0xc9, 0x09, 0x29, 0x71, 0xd7, 0xb3, 0x0e, 0x8f, + 0xc7, 0x04, 0xf8, 0xc0, 0x48, 0xf5, 0x9d, 0xc7, 0x6b, 0xe8, 0x00, 0x8f, + 0x22, 0x9d, 0xb8, 0xd4, 0x58, 0x1a, 0x18, 0xf7, 0xb4, 0xf2, 0x4b, 0xa0, + 0xfd, 0xca, 0x26, 0xb6, 0x9d, 0x0d, 0xa4, 0xb4, 0x6b, 0x05, 0xb2, 0x04, + 0x24, 0xa6, 0x4e, 0xcd, 0xaa, 0xd1, 0x02, 0x93, 0xf2, 0x24, 0x2b, 0x58, + 0x30, 0x4f, 0xb2, 0x41, 0x88, 0x01, 0xc4, 0x15, 0x41, 0xd8, 0xfb, 0x89, + 0x8b, 0x1b, 0xa7, 0x00, 0x8d, 0xba, 0x27, 0xac, 0x5d, 0x47, 0xbd, 0xae, + 0x86, 0x8e, 0x44, 0xc8, 0x49, 0x4e, 0x8d, 0x14, 0x96, 0xbd, 0xcc, 0x22, + 0x60, 0x19, 0x31, 0xde, 0x13, 0xd4, 0x03, 0x8f, 0x01, 0x37, 0x4e, 0xbd, + 0xf7, 0x53, 0x68, 0x77, 0xd2, 0x6b, 0xc7, 0xf9, 0xae, 0x07, 0xf8, 0xa2, + 0x56, 0x20, 0x03, 0xdd, 0xda, 0x42, 0x4a, 0x6d, 0x81, 0xa0, 0x04, 0xc0, + 0x1f, 0x8a, 0x05, 0xef, 0x2c, 0x10, 0xd6, 0xea, 0x74, 0x6c, 0x6a, 0x51, + 0x87, 0xb5, 0xba, 0xc9, 0xf1, 0x08, 0x2e, 0xb2, 0xd6, 0x3c, 0xed, 0x68, + 0x2f, 0x77, 0x1d, 0xf6, 0x0f, 0x8a, 0x4a, 0x71, 0xaf, 0xaa, 0xdb, 0x7a, + 0xa8, 0xa6, 0x9b, 0x7d, 0x3c, 0x9a, 0x6a, 0x05, 0xcc, 0x30, 0x43, 0x83, + 0x8c, 0x90, 0x47, 0xdc, 0xaf, 0x55, 0x61, 0xab, 0x4c, 0xaa, 0x5a, 0xd8, + 0xd0, 0x5b, 0x58, 0x96, 0xfc, 0xc7, 0x21, 0x66, 0x63, 0xe2, 0x32, 0xde, + 0xa7, 0x79, 0x2e, 0x7b, 0x32, 0x2b, 0x74, 0xd5, 0x70, 0xd7, 0x76, 0x9a, + 0xeb, 0xe3, 0x2b, 0x76, 0xa2, 0xfb, 0x3d, 0xb6, 0x01, 0xea, 0x8e, 0x48, + 0xe1, 0xe3, 0xc4, 0x24, 0xa4, 0xed, 0x97, 0xb5, 0xae, 0x07, 0x70, 0x23, + 0x47, 0x37, 0x5d, 0x15, 0x6e, 0xa2, 0x03, 0x68, 0xd8, 0x7f, 0x38, 0xb4, + 0x7c, 0xa6, 0x55, 0xca, 0x6b, 0xae, 0xa6, 0xb9, 0xf5, 0x88, 0x9d, 0x5c, + 0x06, 0x80, 0xfc, 0x42, 0xa3, 0x98, 0x5d, 0x60, 0x63, 0xc8, 0xda, 0xc2, + 0xef, 0x6b, 0x4f, 0x3c, 0x14, 0x94, 0xd6, 0x26, 0xa6, 0x51, 0x6d, 0xee, + 0x90, 0x1a, 0xd2, 0x27, 0xc3, 0xdd, 0xb5, 0x0b, 0x27, 0x71, 0xc2, 0x7f, + 0xa7, 0x0d, 0x78, 0xb1, 0xa0, 0x17, 0x7b, 0x40, 0x82, 0x79, 0x3d, 0x82, + 0xb2, 0x40, 0x76, 0x24, 0x11, 0x3b, 0x80, 0x03, 0xe6, 0x65, 0x2b, 0x89, + 0xa9, 0x8c, 0x00, 0xc1, 0x73, 0x8c, 0x48, 0x06, 0x40, 0x04, 0x9e, 0x7c, + 0x12, 0x53, 0x95, 0xd3, 0x68, 0xf4, 0x3a, 0xa5, 0x34, 0xbd, 0xc4, 0x90, + 0x64, 0x49, 0x9f, 0x39, 0xf9, 0xae, 0x8d, 0xfe, 0x98, 0xcb, 0x0f, 0x71, + 0xf7, 0xb6, 0xa2, 0x78, 0xfc, 0xd9, 0x58, 0x78, 0xf7, 0x13, 0xd5, 0x2b, + 0xbb, 0x60, 0x7b, 0xdc, 0xdd, 0xc7, 0x69, 0x10, 0x4b, 0xb4, 0x90, 0xb6, + 0xdd, 0xf4, 0xb6, 0x39, 0xc5, 0xdf, 0xa3, 0xda, 0x67, 0x93, 0x07, 0xba, + 0x4a, 0x69, 0x65, 0x5a, 0x2b, 0x7d, 0x77, 0x7e, 0x6d, 0x8e, 0x61, 0x1f, + 0x08, 0xe5, 0x68, 0xe3, 0x56, 0x0b, 0xdc, 0x01, 0x97, 0x5b, 0xbd, 0xd1, + 0xe7, 0x1a, 0xaa, 0x19, 0x8c, 0x6b, 0x9f, 0x53, 0x40, 0x07, 0x69, 0xd0, + 0x78, 0x40, 0x85, 0x7f, 0xa5, 0x06, 0x8c, 0xd6, 0x39, 0xdc, 0xb5, 0xae, + 0x68, 0x3f, 0x14, 0x94, 0x8f, 0x04, 0xb5, 0x95, 0xd9, 0x2e, 0x32, 0x1b, + 0x1b, 0xbb, 0xf1, 0x12, 0xb4, 0xac, 0xb2, 0xda, 0xb1, 0xc3, 0x1a, 0xe8, + 0x73, 0x9b, 0x5b, 0x1c, 0xef, 0x22, 0x46, 0xef, 0xc1, 0x64, 0xe0, 0xb1, + 0xce, 0xc8, 0xbb, 0x77, 0xd0, 0x2e, 0x2c, 0x00, 0x71, 0xc0, 0x2b, 0x5d, + 0xd5, 0xb9, 0xac, 0x73, 0x9e, 0x64, 0x3c, 0xd4, 0x1a, 0x3c, 0x23, 0x76, + 0xbf, 0x8a, 0x4a, 0x68, 0x65, 0x39, 0xd5, 0xf5, 0x66, 0xec, 0x1e, 0xc0, + 0x1f, 0x0e, 0x3c, 0xc8, 0x12, 0x14, 0x71, 0xe9, 0xbd, 0xf7, 0x55, 0x60, + 0xa9, 0xc4, 0x07, 0x07, 0x39, 0xc5, 0xba, 0x46, 0xbd, 0xd6, 0xae, 0x0e, + 0x2d, 0x2d, 0x63, 0x5d, 0x6c, 0x5d, 0x73, 0x7e, 0x93, 0xcf, 0x8f, 0x1a, + 0x02, 0xa5, 0x99, 0x6e, 0xd2, 0xd0, 0x5f, 0xb5, 0x8e, 0x20, 0x10, 0x7c, + 0x0e, 0x92, 0x12, 0x53, 0xce, 0x7d, 0x6c, 0xea, 0x99, 0x98, 0x15, 0x54, + 0xca, 0x45, 0x7f, 0xa5, 0xfa, 0x3b, 0xa5, 0xce, 0x90, 0x35, 0x3b, 0x7e, + 0x8e, 0x8b, 0x98, 0x18, 0x9d, 0x5f, 0xa9, 0xd7, 0xf6, 0x8c, 0x87, 0xbe, + 0xf6, 0x34, 0xc6, 0xd9, 0x00, 0x0f, 0x96, 0x80, 0x2e, 0xa3, 0xeb, 0x4e, + 0x18, 0xc8, 0xc2, 0x7b, 0xeb, 0x22, 0xcb, 0x31, 0xf5, 0x04, 0x6b, 0xa0, + 0x21, 0xce, 0xfc, 0x02, 0xc7, 0xe9, 0x59, 0x4f, 0x9f, 0x41, 0xba, 0xb6, + 0xc8, 0xf6, 0x76, 0x3f, 0x14, 0x94, 0xd6, 0xaa, 0x86, 0x51, 0xbc, 0x1c, + 0x77, 0xd7, 0xe9, 0x8f, 0x71, 0x77, 0xb9, 0xa3, 0x8f, 0xce, 0x6f, 0xc5, + 0x2a, 0xee, 0xa3, 0x21, 0xde, 0x8b, 0x6c, 0x24, 0xbc, 0x10, 0xc6, 0xc1, + 0xe4, 0xf0, 0xba, 0x26, 0x66, 0x62, 0x32, 0x8c, 0x8c, 0x2c, 0xeb, 0x2b, + 0xa0, 0x86, 0x39, 0x8c, 0xab, 0x6e, 0xd3, 0xb9, 0xe4, 0x79, 0x44, 0x68, + 0xb2, 0x70, 0x83, 0xad, 0xca, 0x0c, 0x6b, 0x37, 0x9a, 0xa5, 0xc4, 0x73, + 0xb6, 0x3f, 0x73, 0xe2, 0x92, 0x9b, 0x8d, 0x2f, 0xc6, 0xa9, 0x94, 0xb5, + 0x8d, 0x73, 0x2b, 0x6c, 0x08, 0x91, 0xc2, 0x7a, 0x32, 0x1d, 0x65, 0x90, + 0xe6, 0x6d, 0x11, 0x3c, 0xc8, 0xe4, 0x21, 0x59, 0x90, 0x37, 0x11, 0xb4, + 0x82, 0x39, 0x6c, 0xc1, 0x4f, 0x55, 0x8d, 0x7b, 0x8b, 0x99, 0xc6, 0xd8, + 0x23, 0xce, 0x52, 0x53, 0xbb, 0xd3, 0x8f, 0xb8, 0x81, 0xac, 0x89, 0x28, + 0xd9, 0x4f, 0x2c, 0xb5, 0xdb, 0xa4, 0x7b, 0x38, 0xed, 0x25, 0x57, 0xe9, + 0x40, 0x3a, 0xc3, 0xb8, 0xc6, 0x9a, 0x28, 0xe5, 0x0b, 0x3e, 0xd0, 0xea, + 0x5d, 0xab, 0x1c, 0x04, 0x4f, 0x89, 0x2e, 0x26, 0x52, 0x53, 0x9d, 0xd4, + 0xc0, 0xb2, 0xfa, 0x9a, 0x5c, 0x25, 0xb5, 0x00, 0x46, 0x9e, 0x2e, 0x28, + 0x0c, 0xa8, 0x01, 0xa6, 0x9e, 0x44, 0x29, 0xf5, 0x7a, 0x2b, 0xfb, 0x78, + 0x05, 0xa3, 0x70, 0xad, 0xba, 0x9f, 0x29, 0x54, 0xfd, 0x00, 0x0c, 0xb5, + 0xce, 0x69, 0x3e, 0x04, 0xc0, 0x49, 0x49, 0x6f, 0xa9, 0xd1, 0x03, 0x50, + 0x50, 0x83, 0x1a, 0xd6, 0xc3, 0x9b, 0xc7, 0x3a, 0x76, 0x4a, 0x6f, 0x1a, + 0x1b, 0x5d, 0x1f, 0xca, 0xf7, 0x7e, 0x54, 0x85, 0xb7, 0x4c, 0x4b, 0x5c, + 0x3b, 0x88, 0x8f, 0xc8, 0x92, 0x92, 0xe2, 0x62, 0xb6, 0xdb, 0x07, 0xb7, + 0xd9, 0xcb, 0x8f, 0x83, 0x47, 0x3f, 0x7f, 0x0b, 0x5a, 0x34, 0xdf, 0xb4, + 0xfc, 0x23, 0x4d, 0xbc, 0x42, 0x86, 0x2d, 0x4e, 0x6d, 0x6d, 0x0e, 0x01, + 0xb6, 0x58, 0x03, 0x9f, 0x13, 0xa3, 0x47, 0xd1, 0x1f, 0xc5, 0x68, 0xed, + 0x6f, 0xa7, 0xe9, 0x69, 0xba, 0x26, 0x7b, 0xfc, 0x12, 0x53, 0x92, 0xf1, + 0x70, 0x6e, 0xc2, 0x74, 0x99, 0x07, 0x59, 0x92, 0xaa, 0xb9, 0x96, 0x3b, + 0x56, 0xbb, 0x74, 0x68, 0x20, 0xbb, 0x4f, 0xbd, 0x50, 0x75, 0xfd, 0x5f, + 0x24, 0x34, 0x3b, 0x3a, 0xdd, 0xac, 0xfa, 0x3b, 0x88, 0x9f, 0xe0, 0xa7, + 0x66, 0x35, 0xe6, 0xc1, 0x6d, 0xb9, 0x16, 0xbd, 0xe0, 0x40, 0x78, 0x71, + 0x6c, 0x7c, 0x1b, 0xc2, 0x4a, 0x6f, 0x53, 0x8f, 0x73, 0xdf, 0x04, 0x81, + 0xfd, 0x91, 0xba, 0x7e, 0x6a, 0x57, 0x52, 0x6b, 0xe4, 0x73, 0xf4, 0xa5, + 0xba, 0x4f, 0xc7, 0x45, 0x41, 0xb7, 0xe7, 0x54, 0x62, 0xab, 0xeb, 0x7f, + 0x7d, 0xb6, 0xb4, 0xbb, 0x8f, 0xbd, 0x19, 0xdd, 0x77, 0xa8, 0xd6, 0x76, + 0xdd, 0x81, 0x5b, 0xfb, 0x6f, 0xa9, 0xee, 0x60, 0x3f, 0x2d, 0x52, 0x53, + 0x27, 0xb4, 0x08, 0x3e, 0x90, 0x3d, 0x87, 0x6f, 0xe2, 0x83, 0x7d, 0xc2, + 0xaa, 0x1f, 0x6b, 0xda, 0xed, 0xad, 0x13, 0xb4, 0x12, 0x27, 0xe1, 0xb8, + 0x29, 0xd7, 0xd6, 0x5a, 0xe3, 0xbb, 0x2b, 0x0e, 0xe0, 0xdd, 0x48, 0x34, + 0xbf, 0x71, 0x1f, 0xe7, 0x14, 0x1e, 0xa7, 0xd6, 0x31, 0x72, 0xf0, 0x9f, + 0x8e, 0x2b, 0xb9, 0xae, 0x22, 0x01, 0xb2, 0xb6, 0xf3, 0x3d, 0xdc, 0xd3, + 0x29, 0x29, 0x3f, 0x41, 0xcb, 0x6d, 0xd6, 0xdc, 0x1a, 0xc7, 0xb3, 0x70, + 0x1a, 0x3a, 0x39, 0x98, 0xe7, 0xe6, 0xb4, 0x68, 0x2f, 0xf5, 0x08, 0x78, + 0x82, 0xc3, 0x0b, 0x9e, 0xe9, 0xef, 0xfb, 0x3d, 0x95, 0x3a, 0xb7, 0xd8, + 0x0b, 0xcb, 0x5a, 0x43, 0x49, 0x82, 0x27, 0x88, 0x27, 0xc5, 0x74, 0x5b, + 0xcb, 0xf2, 0x1c, 0x1c, 0xd8, 0x79, 0xd4, 0x37, 0xe3, 0xaa, 0x4a, 0x6c, + 0x03, 0x20, 0xc9, 0x86, 0x8e, 0xca, 0x37, 0x09, 0xae, 0x67, 0x68, 0x3d, + 0xd4, 0x8b, 0x1c, 0xd6, 0x11, 0x25, 0xc1, 0x07, 0x22, 0xd1, 0x4e, 0x13, + 0x9e, 0xf0, 0x77, 0x4f, 0xb5, 0xbd, 0xf5, 0x49, 0x4d, 0x2e, 0x99, 0x5f, + 0xab, 0x7e, 0x5b, 0x0c, 0x8f, 0x78, 0xf4, 0xdd, 0xe3, 0xb4, 0x6a, 0x15, + 0xc1, 0x41, 0x63, 0xb4, 0x73, 0xb7, 0x03, 0xa2, 0xab, 0xd2, 0xab, 0xb5, + 0xb4, 0x6e, 0x77, 0xd3, 0x73, 0xdc, 0xe9, 0x1d, 0x8f, 0x82, 0xd4, 0x3e, + 0xf1, 0x24, 0xc3, 0x87, 0x3e, 0x7e, 0x69, 0x29, 0x93, 0x6c, 0x02, 0xbf, + 0xd2, 0xf6, 0xd5, 0xd0, 0xb2, 0xba, 0x86, 0x6b, 0x9d, 0x9a, 0xc6, 0xed, + 0x3e, 0x93, 0x1b, 0x22, 0x78, 0x83, 0xe1, 0xe6, 0x56, 0x9d, 0x9b, 0x18, + 0xcd, 0x48, 0x83, 0xcc, 0xaa, 0x56, 0x74, 0x97, 0x65, 0x38, 0xb9, 0x99, + 0x0c, 0x2e, 0x30, 0x3d, 0x27, 0x02, 0x40, 0x03, 0xb6, 0x89, 0x29, 0x83, + 0xaf, 0xa7, 0x68, 0xac, 0x1f, 0x76, 0xe0, 0x00, 0x3a, 0x7d, 0x1f, 0x72, + 0x56, 0x4b, 0xea, 0x6d, 0x5a, 0x3a, 0xf7, 0xb5, 0xfe, 0x9e, 0xee, 0x03, + 0xc8, 0xd5, 0x45, 0xdd, 0x0f, 0xa8, 0x9b, 0xc5, 0xe5, 0xd5, 0x13, 0x04, + 0x16, 0xee, 0xfd, 0xed, 0x7f, 0x39, 0x49, 0x9d, 0x23, 0xa8, 0x7a, 0x8d, + 0x36, 0x02, 0xed, 0x83, 0x7b, 0x08, 0x21, 0xc5, 0xdf, 0xd5, 0xda, 0x52, + 0x53, 0x9f, 0xd2, 0xe9, 0x7d, 0x7d, 0x48, 0x33, 0xd3, 0x2c, 0x3b, 0x7d, + 0xe4, 0xf0, 0x5d, 0xcf, 0xb7, 0xc9, 0x6e, 0xd9, 0x4c, 0x66, 0x17, 0xe9, + 0xab, 0x00, 0xf9, 0x0d, 0xd2, 0xaa, 0x63, 0xd1, 0x73, 0x5d, 0x7e, 0x4b, + 0xa8, 0x3b, 0xab, 0x25, 0xa5, 0xad, 0x92, 0xf0, 0x47, 0xf2, 0x44, 0xf2, + 0xac, 0x7d, 0xb7, 0x71, 0x06, 0xca, 0xad, 0x69, 0x70, 0x8d, 0x58, 0x62, + 0x47, 0x9a, 0x4a, 0x47, 0x7d, 0x4d, 0x6b, 0xec, 0x11, 0x0e, 0x78, 0x2f, + 0x07, 0xc6, 0x76, 0x83, 0x0a, 0x58, 0xd5, 0xbd, 0x98, 0xc0, 0xb5, 0xc5, + 0xa6, 0xb0, 0x3d, 0xe3, 0x9d, 0x1c, 0x3c, 0x53, 0x66, 0x64, 0x35, 0xef, + 0x63, 0x6b, 0x69, 0x05, 0x82, 0x1e, 0xe2, 0x08, 0x81, 0xa6, 0x8a, 0x2e, + 0xcc, 0xa6, 0xba, 0xfd, 0x37, 0x3c, 0x6d, 0xdb, 0xae, 0xb1, 0xc1, 0xd7, + 0x94, 0x94, 0x92, 0x86, 0xda, 0xe1, 0x73, 0x98, 0x48, 0x77, 0xac, 0x08, + 0x23, 0xf7, 0x43, 0x80, 0x8f, 0xb9, 0x68, 0x75, 0x0c, 0x97, 0x34, 0x0a, + 0xd9, 0x24, 0x00, 0xd9, 0xd3, 0xc2, 0x7b, 0xac, 0xfc, 0x4c, 0x8a, 0xda, + 0xdd, 0xa1, 0xc2, 0x1e, 0x66, 0x64, 0x70, 0x8b, 0xd4, 0xb3, 0x03, 0x72, + 0x58, 0xd6, 0x43, 0xab, 0x76, 0xdd, 0xc4, 0x11, 0xce, 0x9a, 0xa4, 0xa6, + 0xed, 0x4e, 0xf4, 0xc0, 0x02, 0xcd, 0xa1, 0xfe, 0xea, 0xde, 0x46, 0xe6, + 0xbc, 0x1d, 0x60, 0xf9, 0x84, 0x3c, 0xe3, 0xa0, 0xde, 0x44, 0x3b, 0xb0, + 0x32, 0xd2, 0x0e, 0x92, 0xd9, 0xfc, 0x42, 0x26, 0x33, 0x18, 0x47, 0xa6, + 0x3d, 0xcc, 0x71, 0x1e, 0xc2, 0x3b, 0x9f, 0x0f, 0x34, 0x7c, 0xac, 0x46, + 0x3e, 0xbf, 0x4e, 0xdf, 0xd1, 0x9e, 0xc3, 0x8d, 0x47, 0x70, 0x92, 0x9e, + 0x6f, 0x1b, 0xa5, 0xe3, 0xe0, 0xe6, 0x0c, 0xac, 0x70, 0xed, 0x0e, 0xf7, + 0x51, 0xb8, 0xec, 0xb0, 0x38, 0x13, 0x04, 0x1f, 0xed, 0x05, 0x81, 0x98, + 0xc1, 0xd3, 0xf3, 0x8b, 0x58, 0x63, 0x1e, 0xdf, 0xd2, 0x63, 0xba, 0x7f, + 0x34, 0xfe, 0x61, 0x3f, 0xbc, 0xde, 0x0a, 0xeb, 0x2d, 0xd4, 0x19, 0x10, + 0xfa, 0x89, 0x0d, 0x3f, 0xf1, 0x67, 0x70, 0x43, 0xca, 0xe8, 0xb4, 0xf5, + 0x6c, 0x6c, 0xa6, 0x63, 0xd4, 0x1d, 0x92, 0xf6, 0x07, 0xd4, 0x74, 0x03, + 0xd4, 0x1a, 0x8d, 0x7b, 0x48, 0x49, 0x4f, 0x30, 0xfb, 0xd9, 0x98, 0xe1, + 0x4d, 0x3b, 0x8d, 0xee, 0x70, 0x32, 0xf0, 0x0e, 0xd3, 0x3c, 0xef, 0x07, + 0x8f, 0x92, 0xdb, 0xc7, 0xa1, 0xb8, 0x56, 0xd7, 0x45, 0xce, 0x22, 0xf7, + 0x16, 0xdc, 0xd7, 0x35, 0xa7, 0xdd, 0xa1, 0x04, 0x79, 0x46, 0xa1, 0x36, + 0x0f, 0x45, 0xc5, 0xe8, 0xf6, 0xd9, 0x45, 0xb6, 0xb3, 0x2f, 0xaa, 0x5a, + 0xc8, 0xf4, 0x2a, 0xd5, 0x95, 0x37, 0xc5, 0xee, 0xf8, 0xab, 0x96, 0xe1, + 0xb5, 0xf7, 0x35, 0xc1, 0xc3, 0x7e, 0x30, 0x21, 0xec, 0x1a, 0x34, 0x4b, + 0x7d, 0xc0, 0x79, 0x89, 0x49, 0x4d, 0xe7, 0x74, 0xfc, 0x6e, 0xa2, 0xd8, + 0xc8, 0x68, 0x6d, 0xa5, 0xb2, 0xdb, 0xdb, 0xa3, 0xc7, 0x87, 0xc7, 0xe6, + 0xb0, 0x5d, 0x87, 0x91, 0xd3, 0x72, 0x1f, 0x8d, 0x91, 0xf1, 0x63, 0xbb, + 0x3d, 0xa7, 0x87, 0x05, 0xb1, 0x83, 0x98, 0xd7, 0x32, 0x18, 0xed, 0x59, + 0x20, 0xeb, 0xc4, 0x7c, 0x55, 0xfd, 0xf8, 0x7d, 0x46, 0xb1, 0x5d, 0xa1, + 0x96, 0x16, 0x6a, 0x35, 0x04, 0xee, 0xe3, 0x91, 0xfc, 0x12, 0x53, 0x9d, + 0xd3, 0x2c, 0x0d, 0xb3, 0x71, 0xe0, 0x8f, 0xef, 0x50, 0xcc, 0xc8, 0x1f, + 0x6c, 0x79, 0x27, 0xda, 0xdd, 0xbf, 0x95, 0x5a, 0xa3, 0xa5, 0xe5, 0xe3, + 0x5a, 0x43, 0x9b, 0xba, 0xb9, 0x01, 0x84, 0x6b, 0x31, 0x31, 0x3e, 0x0b, + 0x2b, 0x3d, 0xe0, 0xdf, 0x90, 0x20, 0xef, 0x67, 0xd3, 0x69, 0xd0, 0x82, + 0x0a, 0x4a, 0x61, 0xd6, 0x25, 0xfd, 0x43, 0x70, 0x98, 0x35, 0xb2, 0x7e, + 0xed, 0x74, 0x55, 0x88, 0x80, 0x09, 0x06, 0x4f, 0x07, 0xb7, 0xdf, 0x28, + 0x99, 0x52, 0xec, 0x8d, 0xe6, 0x64, 0xb5, 0x9a, 0xfc, 0xbc, 0x54, 0x37, + 0x96, 0x82, 0xd6, 0x8e, 0x79, 0x49, 0x48, 0x1c, 0xf7, 0xee, 0xda, 0x3e, + 0x9c, 0x68, 0xd8, 0xd7, 0xf8, 0xab, 0x3d, 0x36, 0xa7, 0x64, 0x64, 0x80, + 0xf6, 0xfe, 0x8d, 0x83, 0x73, 0xcc, 0x47, 0x1d, 0xbe, 0x68, 0x0e, 0xa5, + 0x8e, 0x6e, 0xe2, 0x4f, 0xb7, 0x82, 0x34, 0x23, 0xe6, 0x65, 0x6f, 0xd0, + 0xcd, 0xb5, 0x34, 0x16, 0xc5, 0x97, 0x41, 0xb0, 0x0e, 0x62, 0x3d, 0xa0, + 0xa4, 0xa4, 0xd4, 0xb7, 0x79, 0x75, 0xa4, 0x18, 0x1c, 0x8f, 0x3e, 0xc1, + 0x07, 0xed, 0x23, 0xed, 0x3f, 0x68, 0xdd, 0xed, 0xd9, 0x1b, 0x63, 0x4d, + 0xb3, 0xf4, 0xbe, 0xfd, 0x51, 0x6d, 0xfd, 0x1d, 0x7e, 0x83, 0x9c, 0x75, + 0x83, 0x61, 0x1a, 0x6d, 0x6f, 0x70, 0x3c, 0xe1, 0x52, 0x87, 0x7f, 0x3f, + 0x1f, 0xa2, 0xdd, 0xb3, 0x6c, 0x69, 0xb5, 0x25, 0x38, 0xbe, 0xd6, 0xba, + 0x01, 0x71, 0x1d, 0xa4, 0x22, 0x0d, 0xe1, 0xbe, 0x63, 0x53, 0xac, 0xcf, + 0x92, 0xb7, 0x56, 0x3b, 0xd9, 0x05, 0xed, 0x6b, 0xb7, 0x76, 0x74, 0x8f, + 0xb9, 0x27, 0xd6, 0x4f, 0xd2, 0x63, 0x40, 0x9d, 0x40, 0x8e, 0xe9, 0x29, + 0xa5, 0xeb, 0x36, 0xc2, 0x03, 0x40, 0xac, 0xce, 0xb0, 0x3f, 0xb9, 0x10, + 0x5e, 0xe6, 0xe8, 0x08, 0x74, 0x70, 0x9c, 0xe3, 0xb0, 0x12, 0x76, 0xe8, + 0x39, 0x24, 0x7f, 0x71, 0x43, 0x2d, 0x2d, 0x1f, 0x44, 0xb9, 0xa0, 0x70, + 0x47, 0xf1, 0x49, 0x4c, 0x5f, 0x95, 0xb9, 0xd0, 0x06, 0xd2, 0xed, 0x34, + 0x42, 0xb3, 0x17, 0x73, 0x40, 0x7d, 0x6e, 0x23, 0xe9, 0x17, 0x4c, 0xfc, + 0x38, 0x45, 0x6e, 0xf0, 0xe0, 0xf6, 0x54, 0x40, 0xec, 0x67, 0x4f, 0xc8, + 0xa4, 0xd7, 0xda, 0xe7, 0x38, 0xbf, 0xd9, 0xa0, 0x97, 0xc9, 0x3f, 0x72, + 0x4a, 0x63, 0xd3, 0xab, 0x65, 0xdd, 0x5b, 0x12, 0x86, 0x86, 0x90, 0x6c, + 0x69, 0x8d, 0x67, 0xdb, 0xee, 0xfe, 0x0b, 0x77, 0x24, 0xb4, 0x75, 0x0b, + 0x1a, 0xd1, 0xee, 0x04, 0x03, 0xe5, 0xa2, 0xca, 0xe9, 0x99, 0x06, 0x8e, + 0xaf, 0x89, 0x69, 0x73, 0x1e, 0xd1, 0x60, 0x9d, 0x20, 0xfb, 0xbd, 0xb3, + 0xf8, 0xad, 0x9b, 0x71, 0x9e, 0x73, 0x9d, 0x68, 0x3a, 0x98, 0xfc, 0x89, + 0x29, 0x9e, 0x39, 0x7b, 0xdc, 0x7c, 0x07, 0x72, 0xb0, 0xba, 0xd6, 0x7d, + 0x99, 0x59, 0x7f, 0x63, 0xc1, 0x74, 0xed, 0x21, 0x86, 0xc1, 0xfb, 0xc7, + 0x4d, 0x16, 0xa7, 0x51, 0xbe, 0xc9, 0x1d, 0x3b, 0x0b, 0x4b, 0xec, 0xfe, + 0x7e, 0xcf, 0xdc, 0x6f, 0x97, 0x9a, 0xa3, 0x56, 0x26, 0x2e, 0x0d, 0xe1, + 0x8c, 0xf7, 0xbe, 0xbd, 0x6c, 0x1d, 0xc6, 0xed, 0x37, 0x14, 0x94, 0xbe, + 0x16, 0xcc, 0x6a, 0xfe, 0xc9, 0x8e, 0xfd, 0xfb, 0x35, 0xf7, 0x9d, 0x5c, + 0x7f, 0x38, 0xeb, 0xe2, 0x55, 0xb6, 0xb6, 0xe0, 0x65, 0xee, 0x83, 0x12, + 0x00, 0x45, 0x38, 0xf5, 0xbf, 0x6d, 0x80, 0x03, 0x1f, 0x45, 0xde, 0x1e, + 0x68, 0xbb, 0xf1, 0x71, 0xd8, 0x2c, 0xc9, 0xb0, 0x01, 0xda, 0x7b, 0x94, + 0x94, 0xc2, 0xb6, 0xd8, 0x58, 0xe7, 0xd9, 0x5e, 0xea, 0xc0, 0x24, 0xb9, + 0xc7, 0x88, 0x59, 0x54, 0xf5, 0xcc, 0x37, 0x90, 0xe7, 0x66, 0x31, 0xbb, + 0x49, 0x21, 0xa6, 0x40, 0xfb, 0x88, 0x57, 0xae, 0xeb, 0x58, 0xb6, 0xbc, + 0x63, 0xb4, 0xb8, 0x52, 0x75, 0xdc, 0x06, 0x84, 0x8f, 0x15, 0x41, 0xcf, + 0xa7, 0xd6, 0x35, 0xd6, 0x1a, 0xf0, 0x3b, 0xed, 0x07, 0xe5, 0x10, 0x92, + 0x9b, 0xed, 0xea, 0x59, 0x1f, 0xce, 0x62, 0xe4, 0xb1, 0xf5, 0x4f, 0xe6, + 0xbd, 0xae, 0x1f, 0x02, 0x0c, 0xc2, 0xb7, 0x8d, 0x92, 0xf7, 0x8d, 0xd2, + 0x1b, 0xa9, 0xf7, 0x83, 0xed, 0xfe, 0xcc, 0x2c, 0xb6, 0xd5, 0x4d, 0x84, + 0x87, 0x55, 0x5b, 0x83, 0x84, 0x1f, 0x68, 0xe0, 0xfc, 0x94, 0x9d, 0xd2, + 0xba, 0x5d, 0x92, 0xef, 0xb3, 0x06, 0xf8, 0xfa, 0x72, 0xdf, 0xba, 0x0a, + 0x4a, 0x6f, 0x0c, 0xeb, 0xf0, 0xec, 0x7d, 0xcc, 0x79, 0xb5, 0xb6, 0x11, + 0xb8, 0xb0, 0x13, 0xa8, 0xf1, 0x95, 0x7d, 0x99, 0xd7, 0x5a, 0xc3, 0x63, + 0x2d, 0x6c, 0x91, 0x0d, 0x6b, 0xc4, 0x6b, 0x3e, 0x0b, 0x04, 0x74, 0xcc, + 0x46, 0x34, 0xb5, 0x8c, 0xb5, 0xa7, 0x90, 0xe6, 0xda, 0xf0, 0x7f, 0xea, + 0x94, 0x5b, 0xd3, 0xa1, 0x9e, 0xcb, 0xf2, 0xab, 0x73, 0x78, 0x8b, 0xb7, + 0x0f, 0xb9, 0xcd, 0x29, 0x29, 0xda, 0xb7, 0xa8, 0x64, 0x56, 0x00, 0xbf, + 0x1c, 0x09, 0x3a, 0x9d, 0x81, 0xcd, 0x3e, 0x7a, 0x38, 0x2a, 0xd9, 0x19, + 0xdd, 0x36, 0xd6, 0xb7, 0xd7, 0xc6, 0x65, 0xa7, 0x56, 0xed, 0x7d, 0x51, + 0x00, 0xf8, 0x12, 0x7b, 0xac, 0xe0, 0x7a, 0xa3, 0x7d, 0x8c, 0xcf, 0x78, + 0x8e, 0xd6, 0xd6, 0xd7, 0x0f, 0xbd, 0xb0, 0x84, 0xfa, 0xfa, 0xd1, 0x3f, + 0xcf, 0xe3, 0xbd, 0xae, 0xd0, 0xb8, 0xb5, 0xc0, 0xf8, 0x78, 0xa4, 0xa7, + 0x4c, 0x5f, 0xd0, 0xdd, 0x01, 0xf8, 0xed, 0x67, 0x68, 0x87, 0x00, 0x3c, + 0xb4, 0x95, 0x5b, 0x2d, 0xf8, 0xd6, 0x7b, 0xb1, 0x98, 0xd6, 0xd6, 0x06, + 0x85, 0xa2, 0x01, 0x20, 0xf3, 0xd9, 0x67, 0xe6, 0x74, 0xee, 0xa5, 0x53, + 0x77, 0x7a, 0x95, 0x3f, 0xbc, 0x35, 0xce, 0x6f, 0x3f, 0xd6, 0x0a, 0xd6, + 0x0b, 0x2d, 0x18, 0x55, 0x9b, 0x63, 0x7b, 0x5a, 0x43, 0xc4, 0xce, 0x84, + 0x9e, 0xe9, 0x29, 0xe9, 0x7e, 0xae, 0xb8, 0x5e, 0xff, 0x00, 0x54, 0xea, + 0x1a, 0xdd, 0x3e, 0x27, 0x45, 0xbb, 0x6d, 0x4c, 0xba, 0xb3, 0x5d, 0x8d, + 0x0e, 0x07, 0x99, 0xfe, 0x0b, 0x92, 0xe8, 0x79, 0xb8, 0xd8, 0xb9, 0x95, + 0x62, 0xd8, 0xe8, 0x6d, 0xb5, 0x39, 0xe1, 0xee, 0x20, 0x00, 0x58, 0x77, + 0x1d, 0x7c, 0x81, 0x95, 0x57, 0xaa, 0x7d, 0x61, 0xcd, 0xcd, 0xc9, 0x78, + 0xc3, 0xb5, 0xcf, 0xc0, 0x06, 0x2b, 0x6d, 0x40, 0xb0, 0xbc, 0x47, 0x2e, + 0x3f, 0x48, 0xfe, 0x44, 0x94, 0xdc, 0xea, 0x78, 0xad, 0xc0, 0xcc, 0x79, + 0x7e, 0x63, 0x5f, 0x45, 0x91, 0xb2, 0x87, 0x10, 0x5f, 0x5e, 0x90, 0x67, + 0xbe, 0xaa, 0xa5, 0x59, 0x94, 0x0a, 0x5e, 0xc1, 0x91, 0xe9, 0x93, 0x59, + 0x03, 0x6c, 0xce, 0xe2, 0x08, 0x03, 0xda, 0x3e, 0xf5, 0x4d, 0xa0, 0x46, + 0xfb, 0x5a, 0x01, 0x3c, 0xcf, 0x28, 0x56, 0x75, 0x0c, 0x4a, 0x4c, 0x00, + 0x0b, 0x92, 0x52, 0x3e, 0x85, 0x8d, 0x97, 0x83, 0x6b, 0xb2, 0x76, 0x87, + 0x39, 0xec, 0xd8, 0x03, 0xa4, 0x89, 0x99, 0xdc, 0x7c, 0x55, 0xdd, 0xb6, + 0x54, 0x1e, 0x2c, 0xb4, 0x31, 0xb6, 0x39, 0xcf, 0x76, 0xba, 0x97, 0x3b, + 0x95, 0x8f, 0x95, 0xd7, 0xac, 0x92, 0xda, 0x8f, 0xc0, 0x35, 0x0f, 0x05, + 0x96, 0xe7, 0x5e, 0x6c, 0xce, 0xf5, 0x3e, 0xce, 0xd0, 0x48, 0x00, 0x90, + 0xe7, 0x38, 0xf1, 0x10, 0x92, 0x9d, 0xaa, 0xab, 0xa4, 0x02, 0x1a, 0xd1, + 0x13, 0xa9, 0xf3, 0x44, 0x7b, 0x74, 0x1b, 0x40, 0xda, 0xdd, 0x43, 0x86, + 0xa3, 0xf0, 0xd4, 0x2c, 0xbb, 0x7a, 0x6f, 0x51, 0x23, 0x6e, 0x03, 0xdf, + 0x5d, 0x7f, 0xf0, 0xae, 0x1c, 0x7f, 0x64, 0x2a, 0xdf, 0xb2, 0x7a, 0xde, + 0x25, 0x9f, 0x68, 0x17, 0xef, 0x78, 0xd4, 0xb4, 0x1d, 0x0a, 0x4a, 0x7a, + 0xae, 0x97, 0xd7, 0x9b, 0x8e, 0x1c, 0xcc, 0x97, 0x9f, 0x42, 0xb0, 0x77, + 0x3a, 0x64, 0xd7, 0xdf, 0xb7, 0xd2, 0x0a, 0x3d, 0x4b, 0x1a, 0xb7, 0xd8, + 0xfc, 0xfc, 0x17, 0x35, 0xf8, 0xd6, 0x30, 0x97, 0x3a, 0x41, 0x01, 0xc6, + 0x3b, 0xf9, 0xc2, 0xe7, 0xe9, 0x36, 0x8b, 0x3d, 0x7b, 0xf6, 0xd6, 0xe0, + 0x36, 0xec, 0x70, 0x04, 0x38, 0x11, 0x32, 0x36, 0x9f, 0xcd, 0x77, 0x0a, + 0xe3, 0x5f, 0x50, 0x1e, 0x93, 0x2c, 0x8b, 0x6d, 0x8f, 0x74, 0x6e, 0x00, + 0xf3, 0xf4, 0x7b, 0xa4, 0xa6, 0x56, 0x83, 0x7b, 0xc3, 0xda, 0x41, 0xdc, + 0xd6, 0x68, 0x08, 0xfd, 0xd1, 0xd9, 0x41, 0xd5, 0xdc, 0xd2, 0x00, 0x13, + 0xf2, 0xd5, 0x5b, 0x2e, 0xa1, 0xf0, 0x0b, 0x00, 0x77, 0x7e, 0x07, 0x68, + 0xd1, 0x0f, 0xec, 0xec, 0x16, 0x4f, 0xa8, 0x7d, 0x20, 0x34, 0x66, 0xde, + 0xfe, 0x33, 0x29, 0x29, 0x58, 0x34, 0x7a, 0xf9, 0x20, 0xbd, 0xbe, 0xca, + 0xe1, 0xcf, 0x24, 0x72, 0x7b, 0x05, 0xd0, 0x62, 0xd4, 0x1a, 0x2c, 0xc9, + 0xb0, 0x48, 0x83, 0x07, 0xe1, 0xe0, 0xa9, 0x52, 0xec, 0x2a, 0xf1, 0xdb, + 0x5b, 0x4b, 0x83, 0xf9, 0x79, 0xdb, 0xc9, 0x56, 0xf2, 0xba, 0xbe, 0x05, + 0x6d, 0xad, 0x95, 0xb5, 0xee, 0x6d, 0x43, 0x41, 0xb7, 0x93, 0xe2, 0x64, + 0xa4, 0xa6, 0xa6, 0x55, 0x26, 0xd7, 0xd7, 0x41, 0x07, 0x7d, 0xa6, 0x6c, + 0x8e, 0x5a, 0x0f, 0x23, 0xf8, 0x2a, 0x9f, 0x69, 0xa7, 0xf6, 0x9f, 0xd8, + 0x37, 0x7e, 0xad, 0x1e, 0x94, 0xf6, 0xf5, 0x26, 0x67, 0xef, 0xf6, 0xa8, + 0xe5, 0x75, 0x4b, 0x5a, 0xdb, 0xec, 0xc2, 0xaa, 0xcb, 0x32, 0xdc, 0xdd, + 0xb5, 0x07, 0x00, 0xd6, 0x89, 0xfc, 0xe9, 0x2e, 0xed, 0xca, 0xc4, 0xff, + 0x00, 0x28, 0xfa, 0x3e, 0x9f, 0xd8, 0xac, 0xf5, 0xe7, 0xe9, 0x7a, 0x8d, + 0xfb, 0xe6, 0x12, 0x53, 0x73, 0xfe, 0x7c, 0x74, 0xf7, 0x80, 0x1f, 0x84, + 0xf6, 0x78, 0x96, 0xbc, 0x1f, 0xca, 0x02, 0x8f, 0xfc, 0xea, 0xe8, 0x96, + 0x1f, 0xd2, 0x51, 0x6b, 0x47, 0x93, 0x5a, 0x4f, 0xfd, 0x52, 0xe3, 0x52, + 0x49, 0x4f, 0x5a, 0x7e, 0xb0, 0xf4, 0x22, 0x08, 0x15, 0xdc, 0x0c, 0xf3, + 0xb5, 0xb1, 0xf3, 0x1b, 0x93, 0xbb, 0xab, 0x74, 0x02, 0xe0, 0xf6, 0xde, + 0x5b, 0xb8, 0x4b, 0x99, 0xe9, 0x3b, 0x43, 0xe1, 0xae, 0x8b, 0x91, 0x49, + 0x25, 0x3d, 0x73, 0xfa, 0xcf, 0x48, 0xb1, 0xf2, 0x6d, 0xf6, 0x0d, 0x01, + 0x15, 0xb9, 0xae, 0xff, 0x00, 0xa2, 0xa4, 0xce, 0xa5, 0xd1, 0x5c, 0xdd, + 0xbe, 0xac, 0x92, 0x74, 0xdc, 0x1e, 0xd0, 0x0f, 0xdc, 0xb8, 0xf4, 0x92, + 0x53, 0xde, 0x9e, 0x9f, 0x8b, 0x94, 0x2a, 0x7d, 0x6e, 0x67, 0xe8, 0xdc, + 0xd7, 0x02, 0xc7, 0xb4, 0xf0, 0x41, 0x13, 0x0b, 0x43, 0xf6, 0x8b, 0x1b, + 0x90, 0x59, 0x25, 0xcf, 0x2f, 0x88, 0xf0, 0x12, 0xbc, 0xfb, 0xa4, 0x3c, + 0x57, 0xd5, 0x31, 0x1e, 0xef, 0xa2, 0x2e, 0xac, 0x9f, 0xf3, 0x82, 0xee, + 0x0d, 0x38, 0x55, 0x0b, 0x73, 0xde, 0xf2, 0x5a, 0xe9, 0x3b, 0x78, 0xfc, + 0x52, 0x53, 0x3b, 0xed, 0x6e, 0x0d, 0x36, 0x64, 0x81, 0xea, 0x65, 0xe4, + 0x38, 0x8a, 0x5b, 0xe2, 0xe3, 0xfc, 0x1a, 0xa9, 0xf4, 0xfc, 0x47, 0xd3, + 0xb9, 0xf7, 0xbb, 0x7e, 0x45, 0x87, 0x7d, 0xae, 0x3d, 0xdc, 0x7f, 0xb9, + 0x52, 0x67, 0x52, 0xca, 0xcf, 0xc9, 0x6b, 0xaa, 0xa4, 0x8a, 0xc4, 0x37, + 0xd5, 0x76, 0xa1, 0x95, 0x03, 0xee, 0x0d, 0xf3, 0x3e, 0x2b, 0x5b, 0x1c, + 0xef, 0xab, 0xd4, 0x70, 0x87, 0x12, 0x64, 0x79, 0xca, 0x4a, 0x65, 0xe8, + 0x17, 0xe8, 0xe2, 0x48, 0x23, 0x8e, 0x00, 0x52, 0x38, 0x55, 0x53, 0xad, + 0x97, 0x34, 0x54, 0x79, 0xaa, 0xcf, 0x70, 0x3f, 0x05, 0x30, 0xf0, 0x07, + 0xb4, 0x41, 0xf3, 0x51, 0x75, 0x0c, 0xb6, 0x1c, 0xf6, 0x87, 0x59, 0xc4, + 0x9e, 0xc9, 0x29, 0x76, 0x8e, 0x9c, 0x59, 0xea, 0x52, 0xd0, 0x08, 0x30, + 0xd8, 0x1c, 0x95, 0x59, 0xd8, 0xec, 0x04, 0xb8, 0x44, 0x93, 0x24, 0xc2, + 0xa3, 0xd7, 0x3a, 0xc3, 0xba, 0x55, 0x95, 0x53, 0x4b, 0x1a, 0xe7, 0x19, + 0x73, 0xc1, 0xd2, 0x3c, 0x3e, 0xf5, 0x45, 0x9f, 0x5d, 0x2f, 0xd4, 0x59, + 0x8e, 0x08, 0xed, 0x0e, 0x8f, 0xfb, 0xea, 0x4a, 0x77, 0x6b, 0x63, 0x58, + 0x41, 0xd6, 0x3c, 0x51, 0x8e, 0xa6, 0x5a, 0x77, 0x0e, 0xfe, 0x21, 0x60, + 0x8f, 0xae, 0xb5, 0xb8, 0xb0, 0x3b, 0x08, 0x34, 0x03, 0xee, 0x21, 0xf2, + 0x7e, 0x52, 0x02, 0x57, 0xfd, 0x71, 0xaf, 0xda, 0xdc, 0x6a, 0x48, 0x1c, + 0x39, 0xcf, 0x03, 0x70, 0x1e, 0x40, 0x3a, 0x12, 0x53, 0xd0, 0x4e, 0xa4, + 0x11, 0x13, 0xc1, 0x3c, 0x28, 0x10, 0x41, 0x3b, 0xbd, 0xf1, 0xe1, 0xa2, + 0xc2, 0xa7, 0xeb, 0x69, 0xdc, 0x1a, 0x58, 0x6d, 0xed, 0xb7, 0x60, 0x1b, + 0xbf, 0xcd, 0x2b, 0x77, 0x0f, 0x26, 0xdc, 0xd6, 0x87, 0x8c, 0x0c, 0x9a, + 0xe7, 0xbb, 0xd9, 0xb1, 0xbf, 0x27, 0x3b, 0x6c, 0xa4, 0xa4, 0x4f, 0x0d, + 0x23, 0xda, 0x3f, 0x8c, 0x20, 0xd8, 0x5a, 0xe6, 0x80, 0xe1, 0xc7, 0x87, + 0x0b, 0x54, 0x74, 0x9b, 0x6d, 0x70, 0xf7, 0x8a, 0xc7, 0xee, 0xfd, 0x37, + 0x4f, 0xc0, 0x69, 0xf8, 0xab, 0x95, 0x7d, 0x5a, 0xa0, 0xeb, 0x71, 0x73, + 0xa3, 0x58, 0x24, 0x0f, 0xc1, 0xbf, 0xde, 0x92, 0x9e, 0x4f, 0x39, 0xee, + 0x78, 0xf6, 0x3e, 0x64, 0x46, 0xde, 0xf2, 0x14, 0xba, 0x35, 0x3d, 0x66, + 0xdf, 0xd0, 0x0c, 0x3b, 0x5c, 0xc0, 0x7d, 0xb7, 0x16, 0x96, 0x33, 0x69, + 0xec, 0x4b, 0xa0, 0x2e, 0xee, 0x8c, 0x1e, 0x9b, 0x8a, 0x40, 0xae, 0x8a, + 0xc3, 0xa3, 0x9d, 0xb2, 0x47, 0xcc, 0xc9, 0x56, 0x03, 0x5e, 0xe6, 0xee, + 0x27, 0x70, 0xe0, 0x34, 0x7f, 0x04, 0x94, 0xf1, 0xd9, 0x1f, 0x54, 0xed, + 0xb9, 0xac, 0x7e, 0x55, 0xec, 0xa9, 0xe2, 0x40, 0xd1, 0xce, 0x3b, 0x1d, + 0xf4, 0x9b, 0x2d, 0x8e, 0x41, 0x58, 0x79, 0xdd, 0x17, 0xaa, 0xf4, 0x5a, + 0x85, 0xac, 0xbd, 0x99, 0x18, 0xd3, 0xb4, 0x3e, 0xb2, 0x41, 0x68, 0x3f, + 0x47, 0x78, 0x70, 0x10, 0xbb, 0x3e, 0xa0, 0xef, 0x57, 0x2a, 0xc1, 0x59, + 0xdc, 0xd6, 0xfb, 0x74, 0x31, 0xee, 0x01, 0x51, 0xcf, 0xc4, 0x39, 0x38, + 0x17, 0x63, 0x12, 0x5c, 0x4b, 0x48, 0x93, 0xa7, 0xbb, 0xf3, 0x7f, 0x14, + 0x94, 0xf3, 0x18, 0xed, 0x39, 0x2d, 0x1f, 0x68, 0x7b, 0x9e, 0x3b, 0xb4, + 0x1d, 0xa3, 0xfb, 0xd6, 0x96, 0x4b, 0xa1, 0xad, 0x6b, 0x80, 0xb1, 0xb0, + 0x06, 0xd7, 0x00, 0xed, 0x00, 0x8e, 0xeb, 0x03, 0x13, 0x21, 0xec, 0x79, + 0xad, 0xe0, 0x87, 0xb0, 0x96, 0xb8, 0x1e, 0x41, 0x1a, 0x15, 0xa4, 0xfb, + 0xc1, 0xae, 0x77, 0x6b, 0xdc, 0x1e, 0x52, 0x52, 0x7c, 0x6b, 0x3a, 0x25, + 0x2e, 0xd8, 0x36, 0xe3, 0xd8, 0x3e, 0x93, 0x5c, 0xdd, 0xdf, 0x71, 0x47, + 0xc8, 0xea, 0xb5, 0x55, 0x43, 0xac, 0xc6, 0x60, 0xb7, 0x67, 0xd2, 0xb3, + 0x40, 0xc6, 0x8f, 0x32, 0x4c, 0x2c, 0x37, 0x65, 0x74, 0xfa, 0x9f, 0x75, + 0xf9, 0x55, 0x0b, 0xee, 0x60, 0x68, 0xa5, 0x87, 0x82, 0x4c, 0xcf, 0xc9, + 0x66, 0xe5, 0xf5, 0x0c, 0x9c, 0xc8, 0xad, 0xf0, 0xca, 0x5a, 0x65, 0x94, + 0x56, 0x36, 0xb0, 0x1f, 0x18, 0xf1, 0xf3, 0x49, 0x4e, 0x9d, 0xdf, 0x59, + 0xb2, 0x1e, 0x21, 0xaf, 0x23, 0xc8, 0x34, 0x2a, 0x8e, 0xeb, 0x39, 0x16, + 0x3b, 0x57, 0x39, 0xde, 0x5c, 0x2a, 0x2c, 0xa6, 0x75, 0xfb, 0x91, 0xaa, + 0x63, 0x5a, 0xe3, 0x3a, 0x7b, 0x52, 0x53, 0x60, 0x65, 0x65, 0x39, 0xde, + 0xda, 0x89, 0x3e, 0x2e, 0x5b, 0x9d, 0x2f, 0xa7, 0x50, 0xe6, 0x33, 0x36, + 0xdb, 0x0d, 0x96, 0x7e, 0x75, 0x67, 0xda, 0x18, 0xef, 0xc6, 0x56, 0x7d, + 0x8e, 0x01, 0x81, 0xc3, 0x42, 0x4c, 0x7c, 0xd5, 0xbe, 0x99, 0x95, 0xe9, + 0xd8, 0x2b, 0x7f, 0xd0, 0xb3, 0xda, 0xe3, 0xe0, 0x7b, 0x14, 0x94, 0xea, + 0x39, 0x8c, 0xf5, 0xbd, 0xba, 0xd6, 0x78, 0x3d, 0xd2, 0xb5, 0xc2, 0xab, + 0x76, 0x10, 0x48, 0x89, 0x0e, 0x8e, 0xc9, 0xed, 0xc6, 0x73, 0x5d, 0x3a, + 0x88, 0x31, 0x12, 0xa2, 0xec, 0x67, 0x96, 0xc9, 0xd2, 0x3f, 0x3b, 0xfd, + 0xc5, 0x25, 0x25, 0x65, 0xcd, 0x23, 0x57, 0x41, 0xef, 0x23, 0x44, 0x0c, + 0xd6, 0xd8, 0x59, 0xfa, 0x1b, 0x5b, 0x32, 0x0c, 0x83, 0x3a, 0x28, 0x06, + 0xd8, 0xc7, 0x12, 0x21, 0xd1, 0xa7, 0x8a, 0x71, 0xbc, 0xb4, 0x96, 0xb0, + 0x10, 0x79, 0x69, 0x09, 0x29, 0x86, 0xe6, 0x82, 0x0b, 0x86, 0xed, 0x38, + 0x05, 0x13, 0xd4, 0xaf, 0x9d, 0xae, 0x98, 0x85, 0x5d, 0xcd, 0x2c, 0x74, + 0x96, 0x0d, 0xbd, 0x80, 0xd0, 0x8f, 0x98, 0x51, 0xf5, 0xb5, 0xfa, 0x2e, + 0x8f, 0x0f, 0x34, 0x94, 0xf1, 0xc9, 0x2b, 0x54, 0x61, 0x97, 0xd0, 0xfb, + 0xdf, 0xa0, 0x91, 0x5d, 0x43, 0xf7, 0x9e, 0x75, 0x3f, 0x26, 0xb7, 0x9f, + 0x92, 0x18, 0xc5, 0xb5, 0xce, 0xd9, 0x5b, 0x5c, 0xf7, 0xfe, 0xeb, 0x41, + 0x27, 0x4f, 0x20, 0x92, 0x90, 0xa4, 0xa6, 0x58, 0xf6, 0xb8, 0xd4, 0x59, + 0xef, 0x24, 0x08, 0x23, 0xdd, 0x3e, 0x08, 0xf8, 0xde, 0xad, 0x19, 0x4d, + 0xb5, 0x95, 0x38, 0x59, 0x8a, 0xe0, 0xfb, 0x43, 0x99, 0xea, 0x06, 0x6c, + 0x70, 0x04, 0xbd, 0x8e, 0x1d, 0x8f, 0x8a, 0x4a, 0x44, 0x29, 0x1f, 0x67, + 0x7d, 0xc5, 0xe0, 0x39, 0xaf, 0x6b, 0x05, 0x44, 0x1d, 0xc7, 0x70, 0x71, + 0x2e, 0xf0, 0xd2, 0x3f, 0x14, 0x43, 0x81, 0x7d, 0x75, 0xd8, 0xfc, 0x80, + 0x68, 0x73, 0x1a, 0x1c, 0xca, 0xed, 0x6b, 0x9a, 0xfb, 0x24, 0xfe, 0x60, + 0x8e, 0xc3, 0x52, 0xb7, 0x32, 0xad, 0xea, 0xb9, 0x9d, 0x36, 0xfc, 0xc6, + 0x58, 0xd7, 0xe2, 0xdb, 0x79, 0x39, 0x98, 0xec, 0x01, 0xb5, 0xef, 0xf6, + 0x6a, 0x46, 0xdf, 0x69, 0x71, 0x93, 0x32, 0x8f, 0xd5, 0x7a, 0xb5, 0x58, + 0xd6, 0x3e, 0xf6, 0xf4, 0x9f, 0xb3, 0x5a, 0xfa, 0x5d, 0x4e, 0x35, 0xbe, + 0xb1, 0x7d, 0x40, 0x58, 0x36, 0x9b, 0x2b, 0x6c, 0x6d, 0x77, 0xb4, 0x90, + 0x7e, 0x5c, 0x24, 0xa7, 0x96, 0xa5, 0xc5, 0x96, 0xb1, 0xe3, 0x96, 0xb8, + 0x1f, 0xb8, 0xae, 0xfd, 0xd8, 0x0d, 0xcd, 0xf4, 0xc5, 0xce, 0x03, 0x1a, + 0x91, 0xf4, 0x01, 0xfa, 0x4f, 0xef, 0x21, 0x70, 0x4c, 0xa2, 0xd8, 0xaa, + 0xc2, 0xd2, 0x2b, 0xb1, 0xe5, 0x8c, 0x77, 0x62, 0xe6, 0xed, 0xdc, 0x3e, + 0x5b, 0x82, 0xed, 0x2b, 0xc8, 0x32, 0x5f, 0x5b, 0xa5, 0xb2, 0x65, 0x25, + 0x36, 0xed, 0xf4, 0x40, 0x14, 0x63, 0xb4, 0x35, 0x8d, 0x82, 0x63, 0x85, + 0x1c, 0x62, 0x7d, 0x09, 0x1d, 0xdc, 0x67, 0xef, 0x53, 0x63, 0x1a, 0xdc, + 0x62, 0xe3, 0xf4, 0xdf, 0x24, 0x9f, 0x8a, 0x1f, 0x4f, 0x87, 0x50, 0x41, + 0x30, 0x5a, 0xe9, 0x84, 0x94, 0xd9, 0xad, 0xa5, 0xad, 0xde, 0xfe, 0x7b, + 0x21, 0xe5, 0x64, 0x7d, 0x9a, 0xa3, 0x71, 0x1a, 0x8e, 0x07, 0x9a, 0x30, + 0x63, 0xde, 0x24, 0x09, 0x83, 0xdf, 0xb2, 0xcc, 0xba, 0xd3, 0x99, 0x9d, + 0xe9, 0x0d, 0x68, 0xa3, 0x93, 0xd9, 0xd6, 0x14, 0x94, 0xf3, 0xfd, 0x79, + 0x97, 0x5f, 0x93, 0x53, 0x83, 0x5d, 0x65, 0xb6, 0x02, 0xe3, 0xb4, 0x12, + 0x75, 0x3c, 0x68, 0x83, 0x8f, 0xf5, 0x77, 0xaa, 0xdd, 0x0e, 0x75, 0x43, + 0x1d, 0x87, 0x4d, 0xf7, 0xb8, 0x56, 0x35, 0xf2, 0x3a, 0xfe, 0x0b, 0x76, + 0xbc, 0x9c, 0x8c, 0x5c, 0x8d, 0x18, 0xeb, 0x71, 0xce, 0xe2, 0xe6, 0x88, + 0x68, 0x6b, 0xbc, 0x64, 0xab, 0x56, 0xf5, 0x46, 0xd7, 0x58, 0x65, 0xbe, + 0x9d, 0x7a, 0x83, 0x0e, 0x70, 0xb4, 0x9f, 0xf3, 0x66, 0x3c, 0x52, 0x53, + 0x43, 0x07, 0xea, 0x66, 0x3d, 0xaf, 0x03, 0x23, 0xa8, 0x34, 0x91, 0x3b, + 0x99, 0x4b, 0x49, 0xe3, 0x9f, 0x73, 0xe3, 0xf2, 0x2e, 0x87, 0x0f, 0xea, + 0xb7, 0xd5, 0xfc, 0x68, 0x2d, 0xc4, 0xfb, 0x4b, 0x87, 0x2f, 0xbd, 0xce, + 0x20, 0xfc, 0x07, 0xb5, 0xa7, 0xee, 0x55, 0xa9, 0xcc, 0xbf, 0x26, 0x2d, + 0xc0, 0x73, 0x6c, 0x8d, 0x1e, 0xc1, 0x21, 0xdf, 0xd9, 0x0e, 0x08, 0xb4, + 0xf5, 0xc7, 0x51, 0x66, 0xcc, 0xea, 0x5c, 0xda, 0x8e, 0x8e, 0x0d, 0x91, + 0x63, 0x3c, 0xf6, 0x9e, 0x47, 0xc0, 0xa4, 0xa7, 0x6e, 0x9c, 0x4c, 0x56, + 0xd4, 0xe1, 0x8f, 0x5d, 0x78, 0xec, 0x07, 0x5f, 0x41, 0xad, 0xac, 0x8f, + 0x08, 0x2c, 0x0a, 0x2f, 0xba, 0xaa, 0xbf, 0x9e, 0xb4, 0xfa, 0x4d, 0x81, + 0x24, 0xeb, 0xf1, 0xd7, 0x55, 0x40, 0x59, 0x5b, 0x43, 0xaf, 0xc1, 0xb5, + 0xd7, 0x56, 0xe1, 0xb8, 0x10, 0xf7, 0x0f, 0xc0, 0xa3, 0x62, 0xf5, 0x1c, + 0x4e, 0xa6, 0xcf, 0xb3, 0x64, 0xb3, 0xd3, 0xc8, 0x66, 0x83, 0x81, 0xee, + 0xe0, 0xc1, 0xfe, 0x09, 0x29, 0xd2, 0x26, 0xb0, 0x37, 0x30, 0x38, 0xc4, + 0x90, 0x1b, 0xe3, 0xcf, 0x23, 0xc5, 0x5b, 0xa6, 0xc7, 0xdc, 0xd9, 0x68, + 0x35, 0x6b, 0x05, 0xae, 0x12, 0x56, 0x05, 0x95, 0x75, 0x3e, 0x94, 0x0b, + 0xb1, 0xf2, 0x5b, 0x65, 0x00, 0x49, 0x65, 0xd1, 0x0d, 0x9e, 0x35, 0x1c, + 0x2a, 0x35, 0xf5, 0xce, 0xa3, 0x55, 0x9f, 0x69, 0x7d, 0xbe, 0xa6, 0xd2, + 0x49, 0xaf, 0xb4, 0x78, 0x40, 0x49, 0x4f, 0x60, 0x5b, 0x53, 0x01, 0x71, + 0xd2, 0x35, 0x7b, 0xcf, 0x97, 0x3a, 0xae, 0x6f, 0x27, 0x0f, 0x3a, 0xec, + 0x87, 0x5f, 0x55, 0xee, 0x35, 0x92, 0x5c, 0xd7, 0x87, 0x1d, 0xcd, 0x8e, + 0xe1, 0xbc, 0x2b, 0x98, 0xfd, 0x4a, 0xae, 0xa5, 0x8c, 0x2c, 0xac, 0x12, + 0x06, 0x96, 0x55, 0xf9, 0xc0, 0xcf, 0x70, 0x16, 0x96, 0x35, 0x0d, 0xa6, + 0x82, 0xdd, 0xbc, 0x81, 0x3e, 0x69, 0x29, 0xe7, 0xab, 0xa7, 0x22, 0x8b, + 0x0b, 0x72, 0x88, 0x24, 0x90, 0xf6, 0x39, 0xb3, 0x06, 0x79, 0x9f, 0x34, + 0x7a, 0xec, 0x6d, 0xae, 0x71, 0x61, 0x83, 0x53, 0xcd, 0x76, 0x34, 0xf8, + 0x11, 0xcf, 0xc3, 0x55, 0x67, 0xa9, 0xdb, 0x89, 0x45, 0x47, 0x2c, 0x31, + 0xd2, 0x08, 0xf7, 0xb1, 0xa5, 0xdc, 0xfb, 0x75, 0xda, 0xb2, 0xb1, 0x9e, + 0xf6, 0x75, 0x4b, 0x83, 0x36, 0xbe, 0xbb, 0x98, 0x2d, 0x2e, 0x04, 0x01, + 0x0d, 0x31, 0x21, 0x25, 0x3c, 0xcf, 0x5d, 0xaf, 0xd1, 0xeb, 0x77, 0x96, + 0xb7, 0x69, 0x21, 0xae, 0x70, 0x88, 0xd4, 0x88, 0x2e, 0x54, 0x45, 0xdb, + 0x9c, 0x47, 0x98, 0x01, 0x69, 0xfd, 0x6d, 0x6b, 0x9b, 0xd4, 0x31, 0xed, + 0x3a, 0x7a, 0xb5, 0x10, 0x67, 0xf9, 0x2e, 0x3f, 0xc0, 0xac, 0x7a, 0xc3, + 0x89, 0xde, 0x01, 0xda, 0x09, 0x3f, 0xc1, 0x25, 0x35, 0xb2, 0xe4, 0xdb, + 0xf3, 0x85, 0x1a, 0xd8, 0x39, 0x3f, 0x25, 0x2c, 0xbd, 0x2d, 0x3e, 0x7f, + 0xc4, 0x28, 0xb5, 0xc1, 0x25, 0x26, 0x6b, 0xc3, 0x41, 0xf0, 0xec, 0xa3, + 0x59, 0x90, 0xef, 0x12, 0x43, 0x7f, 0x15, 0x17, 0x58, 0x22, 0x07, 0x2a, + 0x6c, 0xa6, 0xe6, 0x51, 0x5e, 0x4b, 0xab, 0x70, 0xa1, 0xee, 0x21, 0xb6, + 0xc1, 0xda, 0x5c, 0x3b, 0x4f, 0x8a, 0x4a, 0x6f, 0x58, 0xe9, 0xa9, 0xbf, + 0xd6, 0xd1, 0x4a, 0x82, 0x1c, 0xd3, 0x3e, 0x25, 0x57, 0x2e, 0x0e, 0xad, + 0x84, 0x71, 0x28, 0xd4, 0x3e, 0x00, 0x1d, 0x9d, 0x29, 0x29, 0xb5, 0x91, + 0xf5, 0x9b, 0x3a, 0xa7, 0xfa, 0x2e, 0xa6, 0xab, 0x43, 0x1a, 0x06, 0xf2, + 0x1c, 0x1c, 0x74, 0x81, 0x30, 0xe8, 0x54, 0xdb, 0xf5, 0xa3, 0xaa, 0x30, + 0xe8, 0x59, 0xe4, 0x0b, 0x41, 0x52, 0xb1, 0xae, 0xf4, 0x6f, 0x78, 0x30, + 0x1e, 0xd6, 0xb1, 0xc4, 0xf9, 0x3b, 0xfd, 0xab, 0x3e, 0xfa, 0x85, 0x55, + 0xd4, 0xeb, 0x23, 0xf4, 0x8d, 0xdc, 0x00, 0xe7, 0x9d, 0x25, 0x25, 0x3a, + 0x6d, 0xfa, 0xdf, 0xd4, 0x07, 0x34, 0xd0, 0xef, 0x19, 0x69, 0xd7, 0xee, + 0x72, 0x28, 0xfa, 0xe5, 0x92, 0x04, 0x1c, 0x2c, 0x71, 0xe6, 0x03, 0xc1, + 0xff, 0x00, 0xaa, 0x5c, 0xf9, 0xb1, 0xd1, 0xb4, 0x68, 0x3c, 0x16, 0xaf, + 0x4b, 0xe9, 0x47, 0x32, 0xb2, 0xeb, 0x75, 0x68, 0x32, 0xd0, 0x0f, 0xe0, + 0x7e, 0x29, 0x29, 0xb5, 0xff, 0x00, 0x3b, 0x1a, 0xf3, 0xfa, 0x5c, 0x36, + 0x8f, 0xea, 0x3c, 0xff, 0x00, 0xdf, 0x81, 0x52, 0xff, 0x00, 0x9c, 0xb8, + 0x71, 0xfc, 0xc3, 0xe7, 0xf7, 0x64, 0x42, 0xbf, 0x4f, 0xd5, 0x9e, 0x9d, + 0x65, 0x4d, 0x77, 0xa7, 0x2e, 0x7c, 0x43, 0x43, 0xc9, 0x3a, 0xf7, 0x00, + 0x2b, 0x1f, 0xf3, 0x1e, 0xad, 0xbe, 0xa7, 0xd9, 0xdd, 0x1f, 0xbb, 0xbf, + 0xdd, 0x1e, 0x3b, 0x79, 0x49, 0x4e, 0x0d, 0xed, 0x2c, 0x35, 0x32, 0xb1, + 0xba, 0xac, 0x61, 0x04, 0x81, 0xa1, 0x73, 0x8f, 0xbd, 0xc7, 0xe2, 0x74, + 0xfb, 0x91, 0xf1, 0x70, 0xf3, 0xd9, 0x75, 0xb9, 0x5d, 0x39, 0xce, 0xac, + 0xd6, 0xc3, 0x61, 0x2c, 0x7e, 0xd7, 0xed, 0xd3, 0x73, 0x47, 0x73, 0xca, + 0x26, 0x25, 0x4f, 0x6e, 0x2e, 0x53, 0x2e, 0x96, 0xee, 0xa8, 0x79, 0xfb, + 0x83, 0xd9, 0x1f, 0x09, 0x57, 0x30, 0xfa, 0x76, 0x55, 0x18, 0xed, 0xcc, + 0x17, 0xec, 0xf5, 0x77, 0x30, 0x55, 0x0f, 0x0e, 0x82, 0x36, 0x93, 0x31, + 0xb7, 0xf1, 0x49, 0x4d, 0x7c, 0x3f, 0xd9, 0x36, 0xe3, 0x33, 0x3f, 0xa8, + 0x5f, 0x65, 0x7d, 0x4a, 0xb2, 0xf7, 0xd0, 0xea, 0x5b, 0xfa, 0x4b, 0x1e, + 0x0e, 0xe6, 0xd9, 0x6d, 0x8f, 0xdc, 0x1c, 0x77, 0x70, 0x9b, 0x13, 0x12, + 0xe7, 0x10, 0xcc, 0x4c, 0xe7, 0xe2, 0xf5, 0xcc, 0x9b, 0xb7, 0x66, 0xb1, + 0xef, 0x65, 0x74, 0x96, 0x12, 0xe7, 0x6e, 0x0e, 0x07, 0xdd, 0x13, 0xab, + 0x75, 0xf8, 0x2b, 0xf5, 0x61, 0xd7, 0x8d, 0x7b, 0x2d, 0x2c, 0x66, 0x48, + 0x15, 0xc1, 0x6d, 0xa0, 0x39, 0xb2, 0x75, 0xd0, 0x2b, 0x63, 0x0f, 0xa5, + 0xb5, 0xb5, 0xe4, 0x64, 0x62, 0x37, 0x2b, 0x2f, 0x63, 0x9e, 0xe2, 0x3d, + 0xd5, 0x34, 0x34, 0xfa, 0x82, 0x18, 0xd8, 0x88, 0xef, 0x29, 0x29, 0xcf, + 0xa2, 0xac, 0xce, 0x8f, 0x99, 0x7f, 0x47, 0xfb, 0x53, 0x6e, 0xa8, 0x81, + 0x63, 0x85, 0x44, 0x8d, 0xc5, 0xc0, 0x13, 0x3c, 0xf3, 0xa4, 0x84, 0x3c, + 0xce, 0x91, 0x46, 0x51, 0x63, 0xec, 0x0d, 0x0d, 0xae, 0xb8, 0x6c, 0x38, + 0xb5, 0xa3, 0x59, 0xdb, 0xf1, 0x32, 0xac, 0x50, 0x08, 0x7d, 0x6f, 0x6e, + 0xb8, 0xec, 0x61, 0xf4, 0xdb, 0xb3, 0x63, 0x98, 0xe7, 0x99, 0x73, 0x4b, + 0xbf, 0x38, 0x0f, 0x12, 0x8d, 0x43, 0xf1, 0x9c, 0x4e, 0xe6, 0xc6, 0xc6, + 0xba, 0xce, 0xfb, 0x48, 0x6f, 0xb8, 0xfc, 0xd2, 0x53, 0x91, 0x67, 0x4c, + 0xe9, 0xb5, 0xfd, 0x9b, 0x63, 0x5c, 0xc7, 0xb5, 0xf2, 0xf1, 0xbb, 0xf3, + 0xa4, 0x6b, 0x07, 0xf3, 0x60, 0x05, 0x73, 0x1d, 0xcc, 0x6e, 0x58, 0x6b, + 0x9d, 0xba, 0xcb, 0x4b, 0x80, 0x68, 0xe1, 0xba, 0xf2, 0x7c, 0xd5, 0x5c, + 0x8b, 0x9f, 0x7b, 0xdb, 0xa1, 0xd8, 0x5c, 0xd2, 0x09, 0xf1, 0x06, 0x76, + 0x85, 0xa9, 0x8d, 0x45, 0x47, 0xaa, 0x48, 0xd0, 0x81, 0x24, 0xc4, 0x8d, + 0x00, 0xfb, 0x92, 0x53, 0x7a, 0xda, 0xc7, 0xa7, 0xb6, 0x3f, 0xdc, 0xb3, + 0x18, 0xdb, 0x18, 0xe2, 0x68, 0x13, 0x61, 0x90, 0x0f, 0xe6, 0x81, 0xdf, + 0xe6, 0xb4, 0x33, 0xb3, 0xb1, 0xe9, 0xd5, 0xcf, 0x0d, 0x59, 0xb8, 0x99, + 0x38, 0x8e, 0xbc, 0x8c, 0x7b, 0xf7, 0xbd, 0xd2, 0x45, 0x7c, 0x02, 0x7e, + 0x69, 0x29, 0x24, 0x67, 0xd9, 0x2c, 0x0f, 0x3a, 0xfd, 0x26, 0x81, 0x00, + 0x4f, 0x79, 0x50, 0xd1, 0x8d, 0x38, 0xd8, 0xce, 0x04, 0xd6, 0x43, 0x9f, + 0x67, 0x8b, 0xdd, 0xfd, 0xc1, 0x4a, 0xdc, 0xcf, 0x55, 0xa6, 0x97, 0xd8, + 0x68, 0x27, 0x42, 0x47, 0xe7, 0x79, 0x29, 0xd7, 0x55, 0x6c, 0xad, 0xbe, + 0x9c, 0x1d, 0x61, 0xc7, 0xb4, 0xc6, 0x89, 0x29, 0xe7, 0xba, 0x93, 0xf3, + 0x6a, 0xcd, 0xb7, 0xd2, 0x2e, 0x73, 0x04, 0x07, 0x37, 0x58, 0x9d, 0xba, + 0xf0, 0x83, 0x4e, 0x66, 0x28, 0x6c, 0x5d, 0x4e, 0xd2, 0x62, 0x5c, 0xcd, + 0x49, 0xf9, 0x76, 0x46, 0xea, 0x96, 0x3d, 0xd9, 0xd7, 0x34, 0x12, 0x1a, + 0x1d, 0x10, 0x0f, 0x82, 0xa6, 0xca, 0x1c, 0x1d, 0xc4, 0x83, 0xdf, 0xba, + 0x4a, 0x75, 0x71, 0xf2, 0x19, 0x43, 0xfd, 0x4c, 0x3b, 0xda, 0x2b, 0x7c, + 0xfb, 0x5c, 0x3d, 0xb3, 0xe6, 0x34, 0x32, 0xba, 0x4c, 0x4f, 0xac, 0x7d, + 0x3b, 0x2e, 0xb6, 0xd5, 0xd5, 0x1a, 0xcf, 0x56, 0x21, 0x8f, 0x68, 0x3b, + 0x5e, 0x23, 0x92, 0x0f, 0x75, 0xc9, 0xd4, 0xd7, 0x52, 0x41, 0xad, 0xad, + 0x7c, 0xe8, 0x74, 0xd7, 0x51, 0xdb, 0xcc, 0x29, 0xfa, 0x42, 0xe6, 0x11, + 0x61, 0x73, 0xc6, 0xa3, 0xdc, 0x22, 0x3f, 0x8a, 0x4a, 0x7a, 0x0c, 0xda, + 0xfa, 0x73, 0x1a, 0xe7, 0xe0, 0x5b, 0xef, 0x79, 0x10, 0xd6, 0x48, 0x1a, + 0x78, 0x8e, 0xcb, 0x2d, 0xcf, 0x8b, 0x7d, 0x6b, 0x1c, 0xe6, 0x3c, 0x9d, + 0x4c, 0x13, 0x31, 0xfb, 0xca, 0x9d, 0x58, 0x6c, 0xc6, 0xb5, 0xa5, 0xd6, + 0x96, 0x18, 0x96, 0xea, 0x74, 0x56, 0x8b, 0x9a, 0xff, 0x00, 0xa4, 0x01, + 0xed, 0xba, 0x42, 0x4a, 0x74, 0x5d, 0x7b, 0xec, 0xa8, 0x3b, 0xd4, 0x2f, + 0x27, 0x43, 0xa9, 0x3f, 0xf5, 0x4a, 0x1e, 0xd1, 0x53, 0x83, 0x8e, 0xd9, + 0x9e, 0x7b, 0xe9, 0xc4, 0xac, 0xf6, 0x9b, 0x6a, 0x7e, 0xd2, 0x3d, 0x84, + 0xc8, 0x31, 0xcc, 0x76, 0x56, 0x5f, 0x93, 0x51, 0x15, 0xb7, 0x6b, 0x89, + 0x82, 0xf2, 0xd7, 0x10, 0x23, 0xb1, 0x49, 0x49, 0xe9, 0xbf, 0x22, 0x87, + 0xb2, 0xdc, 0x72, 0xe6, 0x96, 0x6b, 0xa6, 0xbd, 0xb8, 0x3e, 0x4b, 0xa6, + 0x66, 0x56, 0x6e, 0x5d, 0x2c, 0xb5, 0xb7, 0x0a, 0xaa, 0x80, 0x43, 0x9a, + 0xd2, 0xe2, 0xef, 0x0f, 0x69, 0x5c, 0xd0, 0x63, 0x3d, 0x36, 0x5b, 0x6c, + 0x92, 0xe8, 0xfd, 0x15, 0x64, 0xed, 0x3e, 0x03, 0xdb, 0xac, 0xab, 0xfd, + 0x2f, 0xa8, 0x37, 0x04, 0x3a, 0xbb, 0xda, 0xfd, 0xa2, 0x7d, 0x36, 0x83, + 0x27, 0x6b, 0x8e, 0xe0, 0x20, 0xeb, 0xa2, 0x4a, 0x76, 0x72, 0xaf, 0xc7, + 0xc4, 0x69, 0xb1, 0xe7, 0xd5, 0x2f, 0xf6, 0xdb, 0x02, 0x37, 0x1f, 0x26, + 0x0d, 0x3e, 0x2b, 0x0a, 0x9b, 0xa9, 0xfb, 0x7b, 0xef, 0x65, 0x5e, 0x9d, + 0x55, 0x8f, 0x4c, 0x34, 0x12, 0x4d, 0x91, 0xa8, 0x2e, 0x0a, 0x7d, 0x4f, + 0x3d, 0xd7, 0x10, 0xe6, 0x8d, 0x8d, 0x75, 0x72, 0xc1, 0xc8, 0x91, 0xfe, + 0xf5, 0x53, 0xa7, 0xb1, 0xce, 0x21, 0xc4, 0x12, 0xe1, 0x04, 0x47, 0xef, + 0x39, 0x25, 0x34, 0x7e, 0xb6, 0xbf, 0x75, 0x98, 0x96, 0x3f, 0xda, 0xf2, + 0x2c, 0x22, 0x7c, 0x34, 0xfe, 0xe5, 0xcf, 0x32, 0xc2, 0xd3, 0xbd, 0xae, + 0x20, 0xce, 0x84, 0x18, 0x56, 0xfa, 0xfe, 0x6b, 0xf3, 0x3a, 0x8b, 0xde, + 0xdf, 0xe6, 0x6a, 0xfd, 0x15, 0x73, 0xc1, 0x6b, 0x0c, 0x38, 0xfc, 0xdc, + 0xab, 0xb4, 0x54, 0x43, 0x4d, 0x63, 0xf4, 0x6e, 0x3b, 0x49, 0xd4, 0xb9, + 0x84, 0xff, 0x00, 0xae, 0x89, 0x29, 0x06, 0x63, 0xa5, 0xe0, 0xf7, 0xee, + 0x50, 0x5a, 0x5c, 0x4c, 0x01, 0x24, 0xf0, 0x02, 0xb7, 0x97, 0x47, 0xa6, + 0x7d, 0x27, 0x6a, 0xf0, 0x49, 0x7b, 0x87, 0xe4, 0x6a, 0xb7, 0x83, 0x4d, + 0x21, 0xad, 0x38, 0xcd, 0x3e, 0xad, 0x8d, 0x9d, 0xef, 0xe4, 0x6b, 0x06, + 0x21, 0x25, 0x20, 0xa3, 0xa4, 0x65, 0xbd, 0x86, 0xcb, 0x5a, 0x6b, 0xaf, + 0xb9, 0x22, 0x5d, 0xa7, 0x83, 0x56, 0xae, 0x5d, 0x79, 0x0f, 0xe8, 0x03, + 0x18, 0x4f, 0xd9, 0xf1, 0x47, 0xab, 0x5e, 0x9b, 0x64, 0x87, 0x6b, 0xb8, + 0x1d, 0x67, 0xdc, 0x75, 0x4e, 0xcc, 0xcb, 0x9a, 0xe2, 0xc7, 0xd7, 0xb9, + 0xce, 0x10, 0xdd, 0xae, 0x30, 0x1c, 0x39, 0xfb, 0xd1, 0x32, 0x32, 0x9e, + 0xde, 0x99, 0x96, 0xc3, 0x4b, 0x86, 0xe6, 0x6d, 0x2e, 0x9e, 0xc6, 0x23, + 0x74, 0xff, 0x00, 0x04, 0x94, 0xe0, 0xd4, 0x7f, 0x46, 0xc1, 0xe2, 0x4a, + 0x2b, 0x6c, 0x2d, 0x0c, 0x33, 0xc7, 0xf7, 0xa1, 0x51, 0x55, 0x96, 0x16, + 0x35, 0x90, 0x23, 0x5d, 0xce, 0x21, 0xad, 0x12, 0x7b, 0x92, 0x8e, 0xf1, + 0x55, 0x6e, 0x0d, 0x6b, 0x85, 0xb3, 0x23, 0x4f, 0xa2, 0x00, 0xf0, 0xf1, + 0x49, 0x4d, 0xfe, 0x97, 0x7b, 0xbe, 0xd0, 0x2a, 0x0d, 0x6b, 0x85, 0xa7, + 0x63, 0x77, 0xc0, 0x6e, 0xe2, 0x7d, 0xa7, 0x55, 0xd2, 0xd9, 0xfe, 0x2e, + 0x9b, 0x99, 0x77, 0xda, 0x32, 0x72, 0x05, 0x1b, 0x80, 0x06, 0x9a, 0xdb, + 0xbc, 0x02, 0x3c, 0x1c, 0x5c, 0x3e, 0xe8, 0x5c, 0x96, 0x3d, 0x36, 0xe5, + 0xbd, 0xb4, 0x52, 0xc2, 0xfb, 0x5d, 0xf4, 0x23, 0x48, 0x3e, 0x67, 0xb2, + 0xef, 0x71, 0xfa, 0x97, 0x52, 0xa7, 0x05, 0x94, 0x65, 0x3c, 0x3b, 0x26, + 0x96, 0x01, 0x6b, 0xc7, 0x07, 0xb7, 0x87, 0x3e, 0x29, 0x29, 0xc7, 0xb3, + 0xfc, 0x57, 0xed, 0x70, 0x76, 0x3f, 0x50, 0x98, 0xed, 0x65, 0x7f, 0xc5, + 0xae, 0xfe, 0x0b, 0x67, 0xa7, 0xfd, 0x53, 0x7e, 0x2e, 0x30, 0xa5, 0xf6, + 0xb0, 0xbc, 0x10, 0x43, 0x9a, 0xd2, 0x22, 0x09, 0x31, 0xf0, 0x5a, 0xd8, + 0x96, 0x39, 0xf4, 0xb5, 0xe0, 0x82, 0x79, 0x99, 0xfb, 0x91, 0xc5, 0xfb, + 0x9b, 0x35, 0x89, 0x8f, 0x3d, 0x38, 0x49, 0x4e, 0x55, 0x7d, 0x06, 0xcc, + 0x7b, 0xea, 0xb1, 0x8d, 0x65, 0x8c, 0xa9, 0xc5, 0xfa, 0x9f, 0x71, 0x27, + 0x51, 0xe1, 0xa4, 0xa3, 0xfd, 0xa7, 0xa9, 0xfd, 0xaf, 0x67, 0xd9, 0x46, + 0xc8, 0x8d, 0xdb, 0x75, 0xe3, 0x9d, 0xfb, 0xb6, 0xf3, 0xd9, 0x5e, 0x65, + 0xbb, 0x9a, 0x0b, 0x84, 0x1f, 0x12, 0xa5, 0xea, 0x7e, 0x6e, 0xe1, 0x33, + 0x1c, 0x84, 0x94, 0xf1, 0x9d, 0x3b, 0x17, 0x15, 0xf7, 0x96, 0xe4, 0x35, + 0xd6, 0x53, 0x60, 0x0c, 0x73, 0x1b, 0xcf, 0xd2, 0x0e, 0x9d, 0x35, 0xd2, + 0x11, 0xb3, 0x2b, 0xb5, 0x96, 0x7d, 0x99, 0xd6, 0xbd, 0xf4, 0x55, 0xa5, + 0x6d, 0xd4, 0x06, 0x48, 0xfa, 0x30, 0x47, 0x2a, 0x2d, 0x75, 0xd8, 0x75, + 0xd8, 0xfa, 0xe1, 0xce, 0x91, 0xc1, 0x26, 0x39, 0xef, 0xca, 0x09, 0xcd, + 0xea, 0x36, 0x38, 0x32, 0xca, 0xab, 0xad, 0xe7, 0x53, 0x3b, 0xa4, 0x41, + 0xee, 0x49, 0x49, 0x4c, 0x77, 0x6c, 0x64, 0x07, 0x19, 0x12, 0x24, 0xf2, + 0x67, 0xc1, 0x4f, 0xd7, 0xb2, 0xba, 0xc3, 0xaa, 0x3b, 0x77, 0x98, 0x04, + 0x1f, 0x2d, 0x47, 0xc1, 0x43, 0xa8, 0x58, 0xc7, 0x37, 0xd6, 0xd0, 0x3b, + 0x41, 0x63, 0x46, 0x9a, 0x78, 0xa1, 0x62, 0x12, 0xcf, 0x71, 0x01, 0xce, + 0xf7, 0x45, 0x66, 0x48, 0xf6, 0xf0, 0x0a, 0x4a, 0x4f, 0x4d, 0x2d, 0xcb, + 0xb0, 0x63, 0x39, 0xed, 0x6e, 0xe1, 0xb9, 0xef, 0x26, 0x03, 0x5a, 0x35, + 0xe7, 0xcc, 0xa5, 0xeb, 0xe3, 0x97, 0x5d, 0x45, 0x92, 0xfb, 0x1b, 0x5e, + 0xd0, 0x4f, 0x3b, 0x67, 0xe7, 0xa2, 0x0e, 0x5d, 0xed, 0xa9, 0xe1, 0xf5, + 0x80, 0x5e, 0xf3, 0xf9, 0xda, 0x82, 0x4f, 0xd2, 0x6a, 0xa1, 0x56, 0x45, + 0xbe, 0x8b, 0x99, 0x25, 0x97, 0x6a, 0xeb, 0x4b, 0xb5, 0x26, 0x5c, 0x3d, + 0xa7, 0x9e, 0xc9, 0x29, 0x8d, 0x98, 0xd5, 0x8b, 0x18, 0x2b, 0x73, 0x5e, + 0xf0, 0x5b, 0xb7, 0xdc, 0x4b, 0xbd, 0xc6, 0x38, 0x2a, 0xe3, 0x6f, 0x26, + 0xeb, 0x1d, 0x25, 0x81, 0x84, 0x8d, 0xcc, 0x1a, 0xc8, 0xf0, 0xfb, 0x95, + 0x3c, 0x5a, 0x2b, 0xb6, 0xd7, 0x32, 0xc0, 0xed, 0xad, 0x79, 0x7b, 0x8b, + 0x98, 0x1d, 0x1c, 0xb4, 0x01, 0xb7, 0x95, 0xd1, 0x60, 0xf4, 0xcb, 0x18, + 0xc9, 0x36, 0x87, 0xd0, 0xd8, 0x35, 0xbf, 0x6b, 0x63, 0xce, 0x12, 0x53, + 0x93, 0x97, 0x75, 0x36, 0x5a, 0x7e, 0xd3, 0x88, 0xfa, 0xc1, 0xd4, 0x5c, + 0xe0, 0x0b, 0x1d, 0xdf, 0xf3, 0x50, 0x9f, 0xd3, 0x71, 0xac, 0x87, 0xb1, + 0xa5, 0x8e, 0x1a, 0x87, 0x56, 0x3f, 0x21, 0xd1, 0x74, 0x59, 0x3d, 0x32, + 0xca, 0x1a, 0x6d, 0xdf, 0xba, 0x87, 0x7d, 0x27, 0x36, 0x40, 0xf8, 0xc4, + 0xe9, 0xf1, 0x0b, 0x32, 0xe6, 0x1c, 0x4d, 0xce, 0x6b, 0xde, 0x69, 0x0c, + 0xf5, 0x1e, 0x40, 0x0e, 0x86, 0x8e, 0x79, 0x00, 0xa4, 0xa4, 0x23, 0x12, + 0xbb, 0x6a, 0x2c, 0xbd, 0xc6, 0xc7, 0xfe, 0x6d, 0x8f, 0x68, 0x07, 0xe6, + 0x42, 0x93, 0x18, 0x6a, 0xa1, 0x94, 0x81, 0xac, 0xb9, 0xc6, 0x7b, 0x91, + 0x10, 0x95, 0x39, 0xcf, 0xb3, 0x4c, 0x3b, 0xe9, 0xca, 0x3d, 0xe8, 0x78, + 0xf4, 0xae, 0xf1, 0x88, 0xd3, 0xf2, 0x22, 0x0c, 0xcc, 0x7b, 0x01, 0x17, + 0x32, 0xcc, 0x7b, 0x1a, 0x25, 0xa1, 0xed, 0x88, 0x77, 0x84, 0xf7, 0x94, + 0x94, 0xf3, 0x39, 0x4d, 0x16, 0x75, 0x4b, 0x9a, 0x1a, 0x03, 0x9d, 0x61, + 0x03, 0x58, 0x92, 0x63, 0xfb, 0xd0, 0xde, 0xc7, 0x6e, 0x78, 0x63, 0xa4, + 0x34, 0x90, 0x1d, 0xc4, 0xc1, 0x89, 0x57, 0x72, 0x71, 0x9a, 0xde, 0xa8, + 0x72, 0xed, 0x7b, 0x5f, 0x4b, 0xed, 0xde, 0xca, 0xda, 0x49, 0x74, 0xc4, + 0x89, 0xd2, 0x04, 0xc2, 0xcc, 0x7b, 0xaa, 0x34, 0x1b, 0x1c, 0x5e, 0xdc, + 0x92, 0xf9, 0x65, 0x42, 0x48, 0x82, 0x61, 0x25, 0x25, 0xa9, 0xd7, 0x82, + 0x03, 0x79, 0x1c, 0x03, 0xa1, 0x3f, 0x02, 0x8e, 0x2c, 0x3c, 0x96, 0x90, + 0x47, 0x32, 0x55, 0x13, 0xd4, 0x1f, 0xab, 0x4b, 0x0e, 0xe1, 0xc1, 0x1e, + 0x3f, 0x05, 0xbf, 0xf5, 0x6a, 0xa7, 0x64, 0x5b, 0x71, 0xcc, 0xc7, 0x23, + 0xf4, 0x60, 0xd6, 0x6c, 0x6c, 0x8e, 0x75, 0x20, 0x39, 0x25, 0x20, 0xf4, + 0x5b, 0x75, 0x56, 0x3e, 0xb0, 0x5e, 0x5a, 0x03, 0x9e, 0xdf, 0x29, 0x8d, + 0x13, 0x51, 0x5c, 0x98, 0xb6, 0x59, 0x5e, 0xd3, 0x04, 0x6a, 0x77, 0x76, + 0x0b, 0x7a, 0xcc, 0x2a, 0xb7, 0x6d, 0x65, 0x7e, 0x98, 0xfc, 0xed, 0x9e, + 0xd9, 0xed, 0xdb, 0xc9, 0x50, 0xbb, 0x13, 0x1d, 0xb7, 0xb0, 0x31, 0xa7, + 0x7b, 0xcc, 0x06, 0x13, 0xcc, 0x24, 0xa4, 0x47, 0x75, 0xb5, 0x87, 0x10, + 0x2c, 0xa8, 0x08, 0x73, 0x40, 0xd4, 0x0f, 0x81, 0xfc, 0xa8, 0x6e, 0xe9, + 0xf4, 0x17, 0x35, 0xdb, 0xac, 0x67, 0xb7, 0x4f, 0x77, 0x6e, 0x04, 0x02, + 0x9b, 0x1f, 0x36, 0x9a, 0x7a, 0x89, 0xa6, 0xfa, 0x2c, 0xaa, 0xd6, 0x87, + 0x35, 0xd5, 0x12, 0x4f, 0xbc, 0x69, 0xe5, 0x21, 0xd2, 0xaf, 0xdb, 0x9b, + 0x81, 0xea, 0x57, 0x65, 0x44, 0x8a, 0x9d, 0xa4, 0x39, 0xa7, 0xdb, 0xb7, + 0xda, 0x44, 0xf9, 0x24, 0xa6, 0x8b, 0x2b, 0xcf, 0xb0, 0x91, 0x4d, 0xd6, + 0x16, 0x8e, 0x37, 0x46, 0x9f, 0x82, 0xb9, 0x4e, 0x16, 0x61, 0x0c, 0xba, + 0xfb, 0x41, 0xb1, 0xba, 0x01, 0x1d, 0x87, 0x12, 0xad, 0xd3, 0xd4, 0xba, + 0x75, 0x56, 0x9f, 0x49, 0xc6, 0xcb, 0xa2, 0x5b, 0x53, 0x19, 0xba, 0x74, + 0x9f, 0xa2, 0x3c, 0x91, 0x4e, 0x4d, 0x16, 0x62, 0x3b, 0x22, 0xbb, 0x5b, + 0xea, 0x07, 0x6d, 0x18, 0xe4, 0x43, 0x88, 0x3a, 0x6e, 0x49, 0x48, 0xb2, + 0x71, 0x0b, 0x9d, 0x53, 0x7d, 0xa2, 0xbb, 0x1c, 0x58, 0x49, 0xec, 0xe3, + 0x13, 0xc7, 0x82, 0xb5, 0xf5, 0x83, 0x17, 0x1f, 0xa3, 0x74, 0xa3, 0x66, + 0x36, 0xe7, 0x38, 0x07, 0x35, 0xd6, 0x93, 0xcd, 0x96, 0x37, 0xda, 0x7e, + 0x32, 0xb2, 0xc6, 0x6c, 0x64, 0x34, 0x57, 0x07, 0x63, 0x5c, 0xe6, 0xeb, + 0xcb, 0xb5, 0xe3, 0xcf, 0x45, 0x23, 0x93, 0x67, 0x5f, 0xb6, 0x8c, 0x6e, + 0xa5, 0x73, 0xd8, 0xc7, 0x7d, 0x11, 0x1e, 0xc0, 0xf6, 0x8d, 0x0b, 0x9a, + 0xd8, 0xe7, 0xc5, 0x25, 0x3c, 0x70, 0xc6, 0xb2, 0xda, 0xb7, 0xb9, 0xd0, + 0xca, 0xc4, 0x01, 0xdd, 0xc4, 0x99, 0xd3, 0xef, 0x45, 0xa8, 0xb6, 0xb0, + 0xe3, 0x4b, 0xb7, 0x56, 0xd6, 0xc6, 0xba, 0x6f, 0x3f, 0x9d, 0xf3, 0x1d, + 0x97, 0x4c, 0xcf, 0xaa, 0x2d, 0xb4, 0xfa, 0x97, 0xb9, 0xd6, 0x58, 0x1c, + 0x40, 0x0d, 0x86, 0x32, 0x3f, 0x34, 0x36, 0x75, 0x84, 0x66, 0xfd, 0x50, + 0xaa, 0x36, 0x30, 0xba, 0xb7, 0xbc, 0xc8, 0x69, 0xda, 0xf0, 0x1c, 0x3b, + 0xf0, 0x3f, 0x2a, 0x4a, 0x79, 0xec, 0x7c, 0x37, 0xe6, 0xd5, 0x5b, 0xc8, + 0x86, 0x03, 0xb6, 0x4f, 0xd2, 0x21, 0xbe, 0x1f, 0x24, 0x5b, 0x0b, 0x7d, + 0x6f, 0x4e, 0xba, 0x9d, 0x50, 0xaf, 0x56, 0x83, 0xbb, 0xda, 0x7b, 0x8f, + 0x82, 0xe8, 0xdd, 0xf5, 0x5b, 0x3b, 0x1a, 0xad, 0xf4, 0xda, 0xcb, 0xb6, + 0x72, 0x08, 0xd8, 0xef, 0x81, 0x1a, 0x84, 0x21, 0x4e, 0x17, 0xba, 0xbc, + 0xc3, 0xb5, 0xda, 0x07, 0xcf, 0xb4, 0x83, 0xe0, 0x0f, 0x29, 0x29, 0xca, + 0x69, 0xc2, 0x00, 0x4b, 0x81, 0xb6, 0x01, 0x20, 0x12, 0xdf, 0x98, 0xd0, + 0x09, 0x43, 0xce, 0xaf, 0x1a, 0xca, 0x1c, 0xc6, 0x38, 0xb2, 0xc7, 0x0f, + 0x67, 0x32, 0x63, 0x58, 0x23, 0xc0, 0xa3, 0x66, 0x59, 0xd0, 0x1e, 0x1b, + 0x8f, 0x88, 0x2f, 0x37, 0xf0, 0xcb, 0x27, 0x73, 0x74, 0xe4, 0x41, 0xd5, + 0x41, 0xf8, 0xc1, 0x96, 0x36, 0xe7, 0x0d, 0xde, 0xa4, 0xb5, 0xb2, 0x60, + 0xed, 0xf2, 0x03, 0xc8, 0x24, 0xa7, 0x05, 0xad, 0x73, 0xab, 0x3e, 0xc2, + 0xe2, 0xcf, 0xa4, 0x75, 0x3b, 0x7e, 0x29, 0xf1, 0x68, 0xbb, 0x31, 0xe2, + 0xaa, 0x81, 0x00, 0x19, 0xdf, 0xe0, 0x16, 0xd5, 0x78, 0x35, 0x86, 0x34, + 0x09, 0x34, 0xbe, 0xc9, 0xb0, 0xb7, 0xe9, 0x11, 0xdf, 0x53, 0xe0, 0x60, + 0xab, 0xf8, 0x58, 0x37, 0x74, 0xe6, 0x96, 0x43, 0x0b, 0x4c, 0x3d, 0xaf, + 0x23, 0xdd, 0x07, 0xdb, 0xa0, 0x6c, 0x7c, 0x52, 0x52, 0x0e, 0x9f, 0x8e, + 0xdc, 0x0b, 0x5b, 0x4d, 0xdb, 0x9d, 0x49, 0x90, 0xdb, 0x3e, 0x8e, 0xc7, + 0x9d, 0x77, 0x69, 0xe5, 0xa6, 0xa8, 0xd9, 0xdd, 0x7f, 0x13, 0x69, 0xa2, + 0xbb, 0x1c, 0x32, 0x03, 0x36, 0xb9, 0xfa, 0x96, 0xb9, 0xdc, 0xff, 0x00, + 0xb1, 0x5d, 0xa7, 0x26, 0xbd, 0xc4, 0x5a, 0x19, 0x6b, 0x26, 0x08, 0x0d, + 0x3a, 0xca, 0x1e, 0x4f, 0x49, 0xc3, 0xbd, 0xed, 0xb3, 0x19, 0xa1, 0x8e, + 0x6f, 0xba, 0x07, 0x1e, 0xde, 0xe9, 0x29, 0xb3, 0xd2, 0xfe, 0xb6, 0xf4, + 0xbb, 0x18, 0x71, 0x2f, 0xdd, 0x89, 0x77, 0xd1, 0x1b, 0xe7, 0x6c, 0x8e, + 0x24, 0x8e, 0x3c, 0xd6, 0xbf, 0x4a, 0xcc, 0x36, 0xd3, 0x65, 0x5b, 0x9b, + 0xa3, 0xdc, 0x7d, 0x9e, 0xe8, 0x69, 0xd4, 0x42, 0xe2, 0x1f, 0xd0, 0x58, + 0x6e, 0xf5, 0x76, 0x93, 0x4b, 0x64, 0x38, 0x93, 0xb9, 0xee, 0x24, 0xe9, + 0xa7, 0x78, 0x41, 0x77, 0x4f, 0xc8, 0xc6, 0xbd, 0xbf, 0x64, 0xc8, 0x7d, + 0x42, 0x76, 0x87, 0x07, 0x39, 0xa4, 0x1e, 0x75, 0x84, 0x94, 0xfa, 0x16, + 0x45, 0xd9, 0x01, 0xee, 0x65, 0x56, 0x07, 0x87, 0x34, 0xb0, 0x87, 0x0d, + 0x41, 0x89, 0xe1, 0x0b, 0xf6, 0xc5, 0xbb, 0xbd, 0x1f, 0x4d, 0xb1, 0x1e, + 0x06, 0x27, 0xe8, 0x7e, 0x55, 0xc8, 0x9e, 0xa7, 0xd6, 0xb1, 0x0c, 0xb6, + 0xdf, 0x5d, 0xe1, 0xc4, 0x1d, 0xe3, 0xda, 0x64, 0x6b, 0x27, 0x9f, 0x35, + 0x6f, 0xfe, 0x73, 0x65, 0xfa, 0x3b, 0xbe, 0xca, 0xcf, 0xb5, 0x47, 0x3b, + 0x4f, 0xd1, 0xfb, 0x92, 0x53, 0x72, 0x9b, 0xed, 0x6d, 0x6f, 0x36, 0xc5, + 0x41, 0x93, 0x2e, 0x33, 0x05, 0xc2, 0x23, 0x9f, 0x14, 0xd1, 0x43, 0xab, + 0x37, 0xdc, 0xf2, 0x1e, 0x41, 0x00, 0x17, 0x6e, 0x07, 0x71, 0x9f, 0xa5, + 0xae, 0x88, 0x9d, 0x48, 0x19, 0xa0, 0x34, 0x16, 0xd6, 0xca, 0x99, 0x53, + 0xdf, 0x71, 0x02, 0x75, 0x3b, 0x9c, 0x5b, 0xe3, 0xa4, 0xac, 0xeb, 0x18, + 0xfc, 0x7b, 0x77, 0x7a, 0x66, 0xda, 0x6f, 0x71, 0x14, 0xb8, 0x49, 0x92, + 0x3b, 0x10, 0x08, 0x8d, 0x74, 0x49, 0x4d, 0x7c, 0x97, 0x9a, 0x32, 0x4d, + 0x77, 0xb7, 0xe9, 0x06, 0x80, 0x01, 0xf6, 0x6e, 0xfe, 0x21, 0x68, 0xbd, + 0xa6, 0xa7, 0xd3, 0x88, 0xdd, 0xa1, 0xd7, 0x01, 0x36, 0xf3, 0x1b, 0xb9, + 0x8f, 0x33, 0xc2, 0x7c, 0x5b, 0x3a, 0x60, 0x2f, 0xb7, 0x24, 0x16, 0x64, + 0xd4, 0x3f, 0x41, 0x53, 0x41, 0x3b, 0xb6, 0x0f, 0x13, 0xa7, 0xd2, 0xd1, + 0x07, 0x7d, 0x35, 0xd8, 0xc7, 0xbc, 0x38, 0x5b, 0x74, 0x10, 0x1c, 0x49, + 0x68, 0x70, 0xd4, 0xbd, 0xbd, 0xc3, 0x92, 0x53, 0x5d, 0x8d, 0xb5, 0xc7, + 0x24, 0x5f, 0xfc, 0xe3, 0x1d, 0x01, 0xa3, 0xb3, 0xda, 0x20, 0x9d, 0x15, + 0x6c, 0x67, 0xbb, 0x79, 0x60, 0x1b, 0x89, 0x07, 0x74, 0x91, 0xee, 0x3e, + 0x24, 0xab, 0x8e, 0xc5, 0x1e, 0x9b, 0xf2, 0x5a, 0x40, 0xd4, 0x7a, 0x4c, + 0x99, 0xdc, 0xf6, 0x39, 0xa5, 0xd2, 0x20, 0x69, 0xfd, 0xea, 0x23, 0xa3, + 0xe7, 0xd6, 0xeb, 0x2b, 0xa7, 0x1a, 0xcb, 0x1a, 0xf8, 0x71, 0x7b, 0x1a, + 0x35, 0x64, 0xee, 0xdb, 0xf2, 0x49, 0x4e, 0x7b, 0x9b, 0x9d, 0x56, 0x4d, + 0x97, 0x61, 0x99, 0xa4, 0x38, 0x0b, 0xab, 0x0e, 0xfc, 0xf6, 0xeb, 0x23, + 0xc9, 0x6f, 0x7d, 0x5e, 0xfa, 0xc4, 0xeb, 0xf3, 0x5b, 0x83, 0x92, 0xd0, + 0xca, 0xec, 0x3b, 0xe9, 0x74, 0x6d, 0xf7, 0x01, 0xf4, 0x4f, 0x64, 0x1a, + 0xba, 0x7d, 0x15, 0xd1, 0x95, 0x99, 0x8c, 0xe0, 0xe0, 0xc6, 0x35, 0xaf, + 0x6d, 0x8c, 0x2c, 0x7b, 0x0c, 0xc3, 0x86, 0xde, 0x1d, 0x33, 0xd9, 0x67, + 0xe4, 0x74, 0xfb, 0x5e, 0x68, 0x63, 0x1a, 0x68, 0xa6, 0x8f, 0xd2, 0x58, + 0xf3, 0xa6, 0xd0, 0x7e, 0x8f, 0xe0, 0x92, 0x9f, 0x44, 0xb3, 0x2b, 0x00, + 0x54, 0xe1, 0x69, 0x6f, 0xa2, 0x79, 0x71, 0x22, 0x09, 0x3d, 0xb5, 0x59, + 0x78, 0xf8, 0x75, 0xdf, 0x98, 0xf3, 0x5e, 0x3e, 0xda, 0xe9, 0x3a, 0x43, + 0xf7, 0x02, 0xdf, 0x36, 0x71, 0xaf, 0x82, 0xe1, 0xb3, 0x73, 0xb2, 0x28, + 0xcb, 0xbe, 0xb6, 0x9d, 0xf4, 0xbd, 0xbb, 0xc5, 0x4f, 0x12, 0xc0, 0x40, + 0x04, 0x44, 0xf1, 0xa8, 0xd1, 0x4b, 0x1b, 0xeb, 0x47, 0x55, 0x93, 0xb6, + 0xc2, 0xd7, 0x3b, 0x9d, 0xa0, 0x09, 0x8f, 0x82, 0x4a, 0x68, 0x75, 0x2c, + 0x6c, 0xeb, 0xba, 0xb6, 0x45, 0x99, 0x75, 0xdc, 0x2e, 0x7d, 0x8e, 0x26, + 0x5a, 0x77, 0x34, 0x4f, 0xb7, 0xe5, 0x0b, 0x42, 0x96, 0xf5, 0x2a, 0x30, + 0x89, 0xb8, 0x9c, 0x8a, 0xea, 0x25, 0xcd, 0x71, 0x92, 0xe6, 0x08, 0x03, + 0xbe, 0xb1, 0xae, 0xab, 0x4b, 0xa7, 0x75, 0xbc, 0x8c, 0xac, 0xca, 0x71, + 0xf3, 0x80, 0x7b, 0x5e, 0xed, 0xad, 0xb5, 0xc3, 0x51, 0xa4, 0xf2, 0xba, + 0x5b, 0x2a, 0xc1, 0x6d, 0x0e, 0x06, 0xea, 0xe1, 0xed, 0x20, 0x33, 0x82, + 0xe3, 0x07, 0xdb, 0xf3, 0x09, 0x29, 0xe4, 0xaa, 0xea, 0x0f, 0x38, 0xac, + 0xc7, 0xc7, 0x6c, 0x55, 0xc3, 0xde, 0x5a, 0x1c, 0xfd, 0x7e, 0x94, 0x11, + 0xc4, 0xaa, 0x14, 0xf4, 0xda, 0xb2, 0x1f, 0xfa, 0x32, 0xed, 0x1a, 0x03, + 0x1c, 0x5a, 0x4f, 0x3f, 0x3f, 0x15, 0xab, 0x4e, 0x0e, 0x3b, 0x1d, 0x5d, + 0xac, 0x71, 0x2c, 0x67, 0xb6, 0x26, 0x37, 0xb4, 0xfd, 0x15, 0x70, 0xd7, + 0x8b, 0x8f, 0xb8, 0x56, 0xdf, 0x4c, 0x9f, 0x7b, 0x3d, 0x30, 0x0b, 0x98, + 0xe9, 0x3b, 0x44, 0xbb, 0xf7, 0x7b, 0x24, 0xa6, 0xae, 0x17, 0x4f, 0xc3, + 0x6d, 0x2d, 0x7d, 0xf4, 0xd7, 0xf6, 0x86, 0x38, 0x8a, 0x89, 0x04, 0x1f, + 0x61, 0x31, 0xbd, 0xbf, 0x35, 0x7f, 0x07, 0x22, 0xaa, 0x0b, 0xde, 0x5c, + 0x03, 0xec, 0x71, 0x1b, 0x9c, 0x39, 0x68, 0xf0, 0x95, 0x5e, 0xd6, 0x0c, + 0x86, 0x36, 0xe7, 0x69, 0x77, 0xa8, 0x4d, 0xae, 0x3f, 0x48, 0x99, 0xf7, + 0x1f, 0x99, 0x09, 0x5e, 0xc9, 0x2f, 0xd8, 0x22, 0xa7, 0x38, 0x7d, 0x2e, + 0x5b, 0xe4, 0x92, 0x9b, 0x39, 0x19, 0xa3, 0x73, 0x41, 0x6f, 0xa9, 0x0e, + 0x91, 0xb7, 0x50, 0x47, 0x7e, 0x15, 0x19, 0x7b, 0xb3, 0xc5, 0x91, 0xe9, + 0xd7, 0x3b, 0x8e, 0xe1, 0x07, 0x4e, 0xea, 0x76, 0xd2, 0xe7, 0xd8, 0xd2, + 0xd7, 0xfb, 0x5f, 0x21, 0xa7, 0xb0, 0x23, 0x4e, 0xc9, 0xf2, 0x2a, 0x6b, + 0x81, 0x01, 0xbf, 0x9e, 0x09, 0x8d, 0x48, 0x9d, 0x1c, 0x39, 0xee, 0x92, + 0x9c, 0x6f, 0x52, 0xfe, 0xa1, 0x7e, 0x45, 0xf7, 0x7e, 0x88, 0xd6, 0x2c, + 0x8b, 0xc8, 0x92, 0x5e, 0xe7, 0x34, 0x72, 0x3b, 0x80, 0xac, 0xd0, 0xca, + 0x5f, 0x47, 0xa2, 0xf7, 0x80, 0x2e, 0x1b, 0x4b, 0xa3, 0x76, 0xd7, 0x91, + 0x3b, 0xe3, 0xc0, 0xeb, 0x2b, 0x42, 0xfa, 0xea, 0xf4, 0x8b, 0x58, 0xc0, + 0xf2, 0xe7, 0x90, 0xd0, 0x38, 0x86, 0x83, 0x1c, 0xfc, 0x54, 0x19, 0x82, + 0x5c, 0xcd, 0x3d, 0xba, 0x02, 0x36, 0x69, 0x2e, 0xee, 0x20, 0x78, 0x14, + 0x94, 0xe7, 0x3b, 0xa6, 0xe4, 0x55, 0x91, 0x5d, 0xd8, 0xcf, 0xf4, 0x8b, + 0x23, 0xd4, 0xba, 0x76, 0x10, 0x24, 0xd6, 0x59, 0xe7, 0xed, 0x46, 0xc8, + 0xa6, 0x96, 0xbe, 0x9c, 0x56, 0x38, 0x86, 0x54, 0x1c, 0xfa, 0xaf, 0x02, + 0x07, 0xb7, 0x58, 0x7b, 0x41, 0x3a, 0x38, 0x48, 0x47, 0xaa, 0x2d, 0xa8, + 0x82, 0x46, 0xf6, 0x18, 0x76, 0xbe, 0xd7, 0x06, 0x0f, 0x0f, 0x81, 0x85, + 0x67, 0x27, 0x23, 0x1b, 0xec, 0x8c, 0xc4, 0xf4, 0xd8, 0xc6, 0xec, 0x20, + 0xb9, 0xba, 0x9b, 0x1d, 0x1b, 0x4c, 0xbf, 0xb2, 0x4a, 0x69, 0x61, 0x61, + 0x93, 0x4b, 0xac, 0xae, 0xc0, 0xc0, 0x77, 0x6c, 0x07, 0xdc, 0x5a, 0x5c, + 0x0b, 0x5c, 0xe4, 0x5a, 0xc3, 0x71, 0xde, 0xc3, 0xea, 0x6f, 0x2c, 0x21, + 0xa0, 0x8d, 0x3e, 0x7a, 0xf7, 0x51, 0x0d, 0x7d, 0x4f, 0x60, 0x0e, 0x15, + 0xd4, 0xd1, 0xec, 0xf1, 0x73, 0x40, 0x31, 0x3e, 0x09, 0xc5, 0x76, 0xd9, + 0x89, 0x66, 0x4d, 0xcd, 0x2d, 0xad, 0xa4, 0x16, 0x90, 0x3d, 0xae, 0x83, + 0xba, 0x44, 0x79, 0x24, 0xa7, 0x7b, 0x1b, 0x38, 0x3a, 0xa1, 0xea, 0x11, + 0xb8, 0x7d, 0x31, 0xc3, 0xa4, 0x7d, 0xea, 0x56, 0x65, 0x07, 0x9d, 0x8f, + 0x30, 0x0f, 0xba, 0x7b, 0x1f, 0x05, 0x80, 0x0d, 0xa1, 0xdb, 0x34, 0x16, + 0xb7, 0x50, 0xf9, 0xe5, 0xae, 0xf8, 0x26, 0x7d, 0xce, 0x66, 0xca, 0x9e, + 0xff, 0x00, 0x7d, 0x9a, 0x86, 0xf3, 0xc6, 0xa9, 0x29, 0xd6, 0xc4, 0xea, + 0x4f, 0xab, 0xd6, 0xaa, 0xe3, 0x23, 0x79, 0x93, 0xcf, 0x90, 0x85, 0x9f, + 0xd6, 0x6b, 0x6e, 0x63, 0xeb, 0x0d, 0x0e, 0x16, 0x0f, 0xe6, 0xee, 0x1c, + 0xe8, 0x3f, 0x38, 0x26, 0x64, 0x7a, 0x6e, 0xb1, 0xd1, 0x2c, 0x96, 0x82, + 0x79, 0xf7, 0x70, 0x0a, 0x83, 0xdd, 0x6f, 0xe8, 0xdf, 0x5b, 0x1c, 0xe7, + 0x44, 0x6c, 0x92, 0x34, 0xf8, 0x7e, 0x44, 0x94, 0xd5, 0xa7, 0x05, 0xb4, + 0x34, 0x58, 0xc0, 0x1d, 0x60, 0x10, 0xe7, 0x0e, 0x1c, 0x49, 0xe4, 0x11, + 0xa2, 0x2d, 0xf4, 0x5e, 0xca, 0xc1, 0xf4, 0xcb, 0xa4, 0xc8, 0x6b, 0x49, + 0x24, 0x4e, 0xa3, 0xe4, 0xa6, 0x19, 0x75, 0x65, 0xfb, 0x6a, 0x3e, 0x98, + 0x1b, 0x83, 0xeb, 0x71, 0x04, 0x3b, 0xc3, 0xbc, 0xc2, 0xb1, 0x0e, 0xfe, + 0x73, 0x21, 0xf0, 0x74, 0x3e, 0x04, 0x77, 0x8f, 0xbd, 0x25, 0x35, 0xe9, + 0xfb, 0x50, 0xa5, 0xa0, 0x8d, 0xaf, 0x13, 0xfc, 0xe0, 0x12, 0x08, 0x3c, + 0x8f, 0x1f, 0x9a, 0xb3, 0x50, 0x7e, 0xaf, 0xb5, 0xd2, 0xf1, 0x23, 0xef, + 0x03, 0x95, 0x17, 0xe4, 0xd5, 0x90, 0xc1, 0xb2, 0x64, 0x10, 0x18, 0xfe, + 0x3e, 0x8f, 0x6d, 0x7c, 0x54, 0xe5, 0xa1, 0xee, 0x69, 0x00, 0x38, 0x09, + 0x26, 0x7c, 0xb4, 0x09, 0x29, 0xab, 0xf4, 0x4b, 0xb7, 0x3b, 0xdc, 0x1c, + 0x48, 0x1a, 0x46, 0xa2, 0x5c, 0x4f, 0xc1, 0x5b, 0xa6, 0xcc, 0x76, 0xc3, + 0xdb, 0x6b, 0x9f, 0xb8, 0x09, 0x6b, 0xc6, 0xd1, 0xa7, 0x2b, 0x3d, 0xec, + 0xbb, 0xd4, 0xd8, 0xea, 0xe7, 0x79, 0x86, 0x9d, 0x20, 0xf8, 0x6a, 0x11, + 0x5d, 0x56, 0xfd, 0x8f, 0xb0, 0x17, 0x3d, 0xa0, 0x00, 0xd6, 0xf7, 0x00, + 0x76, 0xd5, 0x25, 0x3a, 0x67, 0x1f, 0x0c, 0x3a, 0xcc, 0x8f, 0xd1, 0xd5, + 0x69, 0x6c, 0xbe, 0xd6, 0x38, 0xb1, 0xa4, 0x7f, 0x2d, 0xbf, 0x44, 0xac, + 0xfc, 0x8e, 0xad, 0xd3, 0x32, 0x1c, 0x2a, 0xc5, 0x05, 0xd6, 0x4f, 0xba, + 0xf6, 0x8d, 0xac, 0x26, 0x3e, 0x52, 0xaa, 0xdf, 0xd2, 0xe8, 0xb9, 0xc2, + 0xcb, 0xc5, 0x96, 0xb0, 0x0f, 0x63, 0x1a, 0xed, 0x04, 0x77, 0x81, 0xca, + 0x9e, 0x26, 0x0e, 0x2d, 0x7a, 0xd0, 0xc2, 0xe0, 0x24, 0xeb, 0xc0, 0xf3, + 0xed, 0xf9, 0x12, 0x53, 0x2a, 0xaf, 0xc3, 0x7b, 0xa1, 0xb3, 0xe9, 0x99, + 0x86, 0xf3, 0x04, 0xe8, 0x49, 0x4d, 0xf6, 0x3c, 0x6d, 0xdf, 0x4b, 0x4d, + 0xbb, 0x76, 0xce, 0xb3, 0xe2, 0xac, 0x0c, 0x4a, 0xac, 0x78, 0x76, 0xd0, + 0xd3, 0xa1, 0x30, 0x39, 0x27, 0x9e, 0x23, 0x45, 0x3f, 0x42, 0xbf, 0xb5, + 0x7a, 0x1b, 0x3f, 0x49, 0xbe, 0x36, 0xed, 0xf9, 0xee, 0xf1, 0xf3, 0x49, + 0x4f, 0x47, 0x95, 0xd1, 0xab, 0xcd, 0xa5, 0xa6, 0xe7, 0x38, 0xd8, 0xc7, + 0x39, 0xf6, 0x96, 0x89, 0x05, 0xda, 0x93, 0x1d, 0xfb, 0xc6, 0x8b, 0x2f, + 0xad, 0x11, 0x7b, 0xeb, 0xa2, 0xba, 0xec, 0x73, 0xc3, 0x61, 0xc4, 0x6a, + 0x58, 0x22, 0x37, 0x69, 0xe1, 0xe1, 0xf1, 0x50, 0xaf, 0xa9, 0xcd, 0x15, + 0x57, 0x66, 0x55, 0x96, 0x33, 0x40, 0x6b, 0x0c, 0x0d, 0x0f, 0xd6, 0x40, + 0x3e, 0x52, 0xb4, 0x71, 0xba, 0xa3, 0x9f, 0x5b, 0xc5, 0x6d, 0x63, 0x2d, + 0x0d, 0x60, 0xde, 0x20, 0x17, 0x07, 0x4f, 0x8f, 0x82, 0x4a, 0x71, 0xf0, + 0x7a, 0x70, 0xbb, 0x68, 0xb4, 0x06, 0x97, 0x87, 0x10, 0xfd, 0xdc, 0x1e, + 0xd3, 0x3c, 0x49, 0x4f, 0x6f, 0x4d, 0xcb, 0x7e, 0x63, 0x71, 0xed, 0xad, + 0xc0, 0x30, 0x7e, 0x8e, 0xb1, 0xab, 0x43, 0x41, 0x81, 0xa8, 0x93, 0xe6, + 0xb7, 0x69, 0xcb, 0xa4, 0x5b, 0x63, 0xdc, 0xd0, 0x5b, 0x0c, 0x61, 0xb0, + 0x34, 0x34, 0x13, 0x12, 0x0c, 0x77, 0xf0, 0x5a, 0x95, 0x58, 0xdb, 0x0e, + 0xf3, 0x0d, 0x76, 0xbb, 0x60, 0xcc, 0xb4, 0x24, 0xa7, 0x98, 0xb3, 0xa2, + 0xe4, 0x8b, 0x5b, 0x5d, 0x75, 0xd6, 0x58, 0xc6, 0xed, 0x2e, 0xb7, 0x87, + 0x1d, 0xd2, 0x40, 0x03, 0xc7, 0x52, 0x4f, 0xf7, 0x2d, 0x3b, 0xba, 0x45, + 0xb9, 0x55, 0xd7, 0x8e, 0xf7, 0x39, 0xb5, 0xd4, 0xd1, 0xab, 0x09, 0x6b, + 0x1f, 0xe2, 0x1c, 0xd9, 0x99, 0x1f, 0x18, 0x2b, 0x40, 0xd9, 0x4d, 0xa5, + 0x8f, 0xb0, 0xec, 0x01, 0xc4, 0x19, 0x30, 0x37, 0x04, 0x60, 0xe6, 0x87, + 0x18, 0xd3, 0x8d, 0xa0, 0x1e, 0x74, 0xf0, 0x49, 0x4e, 0x1d, 0x1d, 0x29, + 0xb8, 0x98, 0x4d, 0xc5, 0xdd, 0xbf, 0x19, 0x96, 0x39, 0xfb, 0x83, 0x7d, + 0xcf, 0x30, 0xd7, 0x6d, 0x8f, 0xeb, 0x02, 0xa8, 0xf5, 0x2c, 0x49, 0xbe, + 0xc6, 0x96, 0xee, 0xaa, 0x3e, 0x84, 0xc8, 0x68, 0x68, 0x92, 0x67, 0xc3, + 0x4d, 0x65, 0x6e, 0xe5, 0xef, 0xa0, 0xb9, 0xd2, 0x76, 0xde, 0x44, 0x78, + 0x31, 0xdf, 0xbd, 0xe5, 0xa2, 0xc6, 0xce, 0x7d, 0xcc, 0xde, 0xd6, 0xb4, + 0x9a, 0x1e, 0xd0, 0x41, 0xdb, 0x13, 0xb8, 0xfb, 0x99, 0xbb, 0x93, 0xaa, + 0x4a, 0x73, 0x6f, 0xf4, 0x20, 0x86, 0xd4, 0x2e, 0x6d, 0xad, 0x12, 0xed, + 0xb0, 0x1f, 0xc8, 0x1e, 0xde, 0x61, 0x65, 0xbf, 0x0e, 0xaa, 0xee, 0xfd, + 0x1d, 0x2d, 0xae, 0x04, 0x7a, 0x2c, 0x06, 0x1c, 0xef, 0xe5, 0x3f, 0x98, + 0xf2, 0x5b, 0xae, 0x02, 0xc7, 0xef, 0x73, 0x88, 0xac, 0x91, 0xb8, 0xf1, + 0x04, 0x0e, 0xff, 0x00, 0xc9, 0x51, 0xac, 0x8d, 0xe4, 0x44, 0x8d, 0xd3, + 0x5b, 0x40, 0xd0, 0x0d, 0x4f, 0x3f, 0x34, 0x94, 0xf3, 0xc7, 0xa6, 0xe6, + 0xb4, 0x3e, 0xe6, 0x13, 0xbb, 0x52, 0xc6, 0x0f, 0x6b, 0x98, 0xcf, 0x0d, + 0x78, 0x95, 0x6a, 0x9a, 0x72, 0x6c, 0x61, 0x01, 0xae, 0x63, 0x2a, 0x6b, + 0x4e, 0xe8, 0x71, 0x6b, 0x5e, 0x4f, 0x0e, 0x92, 0xb4, 0x0b, 0xa9, 0x1b, + 0x8b, 0x2b, 0x30, 0xd2, 0x47, 0xb9, 0xdb, 0xa4, 0xff, 0x00, 0x2f, 0xc0, + 0x29, 0xd1, 0x65, 0xc5, 0x96, 0xb1, 0xad, 0x1e, 0x9b, 0x88, 0x73, 0xa4, + 0x90, 0x64, 0x7b, 0xb5, 0xf1, 0x10, 0x92, 0x90, 0x1a, 0xab, 0x6b, 0x7f, + 0x47, 0xb9, 0x8d, 0xa8, 0x87, 0x16, 0x72, 0xd8, 0x77, 0xee, 0x9f, 0x25, + 0x17, 0x39, 0xb7, 0x0b, 0x0d, 0x95, 0x87, 0x59, 0xbd, 0xb3, 0xc8, 0x22, + 0x4f, 0x6d, 0x3c, 0xd5, 0xea, 0x9a, 0xc6, 0xb8, 0xb9, 0xee, 0x3e, 0xf7, + 0x34, 0xb4, 0x1d, 0x01, 0x04, 0x38, 0xb7, 0xef, 0xd7, 0x45, 0x2a, 0xaa, + 0xa3, 0x16, 0xf2, 0xf2, 0x43, 0xf7, 0x19, 0xd9, 0xac, 0x12, 0x4f, 0x6f, + 0x1d, 0x52, 0x52, 0x1c, 0x66, 0x59, 0x73, 0x43, 0x6c, 0x9a, 0xce, 0xdf, + 0x65, 0x64, 0x41, 0x68, 0x9d, 0xce, 0x71, 0xf3, 0x42, 0x73, 0xed, 0x61, + 0x0c, 0xf4, 0x9d, 0xea, 0x5a, 0xef, 0x4c, 0x41, 0xd3, 0x6b, 0x7f, 0x3b, + 0xe2, 0x55, 0xaf, 0xb4, 0x34, 0x5a, 0xeb, 0x20, 0x87, 0x9f, 0x6f, 0x88, + 0x20, 0x15, 0x2b, 0x3d, 0x37, 0x1f, 0x5f, 0x76, 0xd7, 0x07, 0x1f, 0xa5, + 0xc0, 0x23, 0x4d, 0x12, 0x53, 0x94, 0xe3, 0x92, 0xd7, 0x7a, 0x87, 0xf4, + 0x6c, 0x73, 0xdc, 0xd2, 0x62, 0x3d, 0xec, 0xd7, 0x83, 0xca, 0x95, 0xc1, + 0xfe, 0x93, 0xf2, 0x58, 0x1c, 0x6b, 0x23, 0x68, 0x6b, 0x48, 0xdc, 0x5e, + 0x4b, 0x46, 0xef, 0x2f, 0x15, 0xa7, 0x63, 0x5e, 0x1a, 0xc0, 0xda, 0xc5, + 0x81, 0x84, 0xb9, 0xb2, 0x27, 0xe9, 0x73, 0x0a, 0x36, 0x63, 0x30, 0xd6, + 0x3d, 0x59, 0x6e, 0xff, 0x00, 0x69, 0x60, 0xe2, 0x39, 0x93, 0xe0, 0x92, + 0x9c, 0xdd, 0xd6, 0x11, 0xa0, 0xd1, 0xba, 0xb4, 0x79, 0x91, 0xba, 0x0f, + 0xdc, 0xa6, 0x32, 0x76, 0x46, 0xe7, 0x86, 0xbc, 0x19, 0x0e, 0x3c, 0x38, + 0x73, 0xa2, 0xbb, 0xe8, 0xb5, 0x80, 0x16, 0xb8, 0x1a, 0x83, 0x48, 0x77, + 0xb4, 0x7c, 0xb8, 0xe7, 0x95, 0x46, 0xcc, 0x50, 0xfd, 0xb8, 0xf5, 0x86, + 0x4e, 0x8f, 0xde, 0x44, 0x10, 0x1a, 0x35, 0x89, 0x9f, 0x34, 0x94, 0xc4, + 0xd3, 0x4d, 0x95, 0xd9, 0x6b, 0x5c, 0x1a, 0xe1, 0xee, 0x80, 0xe8, 0x7b, + 0xe7, 0x9d, 0x36, 0xf3, 0xf3, 0x4c, 0x4d, 0x36, 0x8f, 0xa6, 0x1a, 0xe1, + 0xab, 0x9a, 0xed, 0x08, 0x03, 0x83, 0xaf, 0xf7, 0xa5, 0x90, 0xd0, 0xf0, + 0xda, 0x98, 0xe3, 0x59, 0xa7, 0x41, 0xb4, 0x06, 0xee, 0x6f, 0x67, 0x38, + 0xc6, 0xa7, 0xcd, 0x21, 0x8d, 0x76, 0xc6, 0xb5, 0x9b, 0x5b, 0x04, 0x90, + 0x09, 0xe6, 0x74, 0x21, 0xda, 0x71, 0x01, 0x25, 0x33, 0xaf, 0x06, 0xc9, + 0x04, 0xdc, 0xd7, 0x3c, 0xed, 0x6b, 0x4b, 0xb5, 0x26, 0x24, 0xed, 0x3a, + 0xf8, 0x70, 0x9f, 0x1e, 0xaf, 0x4a, 0xe7, 0xd2, 0xf7, 0x1f, 0x47, 0x77, + 0xa6, 0x0f, 0xd1, 0x2d, 0xdd, 0xa8, 0xdd, 0xdb, 0x6f, 0x64, 0xf8, 0xfd, + 0x38, 0xc3, 0xdd, 0x79, 0x96, 0x32, 0x5d, 0x00, 0x19, 0x2e, 0x3c, 0xc9, + 0x27, 0xc9, 0x4a, 0xca, 0xb3, 0x59, 0x04, 0x80, 0x18, 0xd3, 0xbd, 0xfb, + 0x88, 0x74, 0x34, 0x7d, 0x1f, 0x99, 0x49, 0x4c, 0xbe, 0xce, 0xea, 0xb6, + 0xfb, 0x36, 0x5a, 0xd3, 0xab, 0xbe, 0x97, 0xbb, 0x80, 0x7f, 0x09, 0x4c, + 0x6b, 0x6d, 0xba, 0x30, 0xb4, 0x31, 0xda, 0x02, 0x39, 0x1d, 0x88, 0x51, + 0x7d, 0xf7, 0x51, 0x6d, 0x4f, 0x73, 0xa6, 0xc2, 0x43, 0x5a, 0x00, 0x10, + 0x66, 0x7d, 0xce, 0x0d, 0xe6, 0x1a, 0xa3, 0x45, 0x85, 0x8c, 0x77, 0x1d, + 0xce, 0xd1, 0x1f, 0x9b, 0xac, 0x47, 0xc0, 0x24, 0xa6, 0xcd, 0x78, 0xf4, + 0x0a, 0x5b, 0x53, 0xdf, 0x15, 0x9b, 0x09, 0x25, 0xbd, 0xe3, 0xc8, 0xa1, + 0x9a, 0xda, 0xdf, 0x54, 0x87, 0x40, 0x1a, 0xb5, 0xb1, 0xdc, 0x79, 0xfc, + 0x12, 0x65, 0x4e, 0xb4, 0x35, 0x95, 0x01, 0xa4, 0xba, 0xce, 0x7b, 0x46, + 0xba, 0xa7, 0xb7, 0x0b, 0x2b, 0xd7, 0x6d, 0x6c, 0x2c, 0x7b, 0xac, 0x6e, + 0xe2, 0xe9, 0x86, 0xf6, 0xd3, 0xee, 0x49, 0x4c, 0x45, 0xa0, 0xb7, 0x6d, + 0x24, 0x8d, 0x7d, 0xcd, 0x12, 0x7e, 0x3c, 0xa8, 0x3e, 0xaf, 0x50, 0x7a, + 0x8e, 0xb2, 0x43, 0xb8, 0x00, 0xfb, 0x8e, 0xbf, 0x95, 0x17, 0x21, 0xaf, + 0xa8, 0x11, 0x5f, 0xbc, 0x00, 0x01, 0x0d, 0x12, 0x5b, 0x1c, 0xaa, 0xbe, + 0x9d, 0xce, 0xa8, 0xfa, 0x5b, 0x6c, 0x78, 0x3a, 0x8e, 0x00, 0x1e, 0x24, + 0xf6, 0x49, 0x4c, 0xd9, 0x56, 0x38, 0xb0, 0x1a, 0xac, 0x2d, 0xb5, 0xbe, + 0xef, 0x4d, 0xd3, 0x31, 0xc9, 0x52, 0x11, 0x61, 0x3f, 0xa4, 0xd8, 0x09, + 0x9d, 0xc2, 0x1d, 0xc0, 0x3f, 0xc5, 0x66, 0x51, 0x98, 0xda, 0xcb, 0xac, + 0x79, 0x76, 0x92, 0x03, 0x79, 0x2c, 0x77, 0x1c, 0xab, 0x61, 0xe4, 0xd0, + 0xe7, 0x43, 0x4f, 0xba, 0x4b, 0x64, 0x0d, 0x4f, 0x9a, 0x4a, 0x6d, 0xb6, + 0xcd, 0xa0, 0x30, 0xb8, 0x3f, 0x4d, 0x1d, 0x11, 0x3f, 0x30, 0xa0, 0x1e, + 0xd7, 0x11, 0xb8, 0x10, 0x3d, 0xa1, 0xcd, 0x76, 0x8e, 0xf2, 0xe1, 0x41, + 0xc2, 0xd2, 0xc1, 0x63, 0x01, 0x21, 0xe0, 0x07, 0x34, 0x6a, 0x3b, 0x7d, + 0xca, 0x5e, 0xbd, 0x6f, 0xb4, 0x6f, 0x1b, 0x62, 0x41, 0x03, 0x5d, 0x47, + 0x04, 0x1e, 0xe9, 0x29, 0x98, 0x36, 0x02, 0xe8, 0x04, 0x96, 0x88, 0x69, + 0x3e, 0x67, 0x8f, 0x92, 0x40, 0x5b, 0xbd, 0xde, 0x91, 0x12, 0x7f, 0x33, + 0xfe, 0x8f, 0xe2, 0xa7, 0x93, 0x94, 0xeb, 0x6e, 0x63, 0x3d, 0x47, 0x3d, + 0xb5, 0x8d, 0xad, 0x2e, 0xee, 0x06, 0x9e, 0x08, 0x4e, 0xa6, 0xaf, 0x6b, + 0xdb, 0x35, 0x6b, 0xab, 0x84, 0x00, 0x75, 0xf1, 0x3e, 0x29, 0x29, 0x20, + 0xb5, 0xd8, 0xed, 0xb2, 0xc8, 0xdd, 0xb4, 0x7b, 0x7c, 0x67, 0xf3, 0x81, + 0x94, 0x4f, 0xda, 0x79, 0x5b, 0x3d, 0x5f, 0x48, 0x6d, 0xdf, 0xbf, 0x7c, + 0x1f, 0x52, 0x63, 0x6c, 0x24, 0xd7, 0xd6, 0xe7, 0x83, 0x67, 0xb7, 0x78, + 0x21, 0xfe, 0x04, 0xf1, 0x3f, 0x35, 0x0f, 0x4d, 0xd3, 0xbb, 0xd4, 0xd2, + 0x63, 0x83, 0xb6, 0x3f, 0x72, 0x52, 0x53, 0x46, 0xa2, 0xfc, 0x7b, 0xcd, + 0xde, 0x9b, 0xfd, 0x17, 0xd8, 0x5e, 0xd6, 0xbb, 0xc1, 0xd3, 0x00, 0x7c, + 0x96, 0xcd, 0x0d, 0x16, 0x37, 0x75, 0x7b, 0x7d, 0x42, 0x48, 0x78, 0x32, + 0x5e, 0xe6, 0x83, 0xf4, 0x5a, 0x07, 0x81, 0x2a, 0x6d, 0xc3, 0xae, 0xa7, + 0xec, 0xbe, 0xed, 0xf7, 0x63, 0x92, 0xe6, 0x4f, 0xbb, 0xe9, 0xfb, 0x62, + 0x07, 0x3a, 0x2d, 0x4c, 0x3e, 0x9d, 0x5d, 0x33, 0x92, 0xd0, 0xe0, 0x43, + 0x48, 0xd8, 0xe1, 0x10, 0x1d, 0xe6, 0x39, 0x29, 0x29, 0x0e, 0x0e, 0x16, + 0x4d, 0x95, 0xbd, 0xf7, 0x35, 0xd5, 0xb5, 0x96, 0x43, 0x58, 0xed, 0x1c, + 0xe0, 0x04, 0x1d, 0x3e, 0xf5, 0xa2, 0x43, 0x28, 0x06, 0xca, 0x44, 0x16, + 0xbb, 0x6b, 0x84, 0x18, 0x6b, 0x3e, 0x96, 0xd6, 0x8f, 0xe2, 0x86, 0x32, + 0x28, 0xa5, 0xaf, 0x71, 0x7f, 0xa9, 0x63, 0xc3, 0x5b, 0xb7, 0x50, 0x41, + 0x1d, 0xbc, 0xb9, 0x4d, 0x57, 0x53, 0xc7, 0xaa, 0x97, 0xd2, 0x6d, 0x6b, + 0xee, 0x0d, 0x96, 0xed, 0x92, 0x4e, 0xe1, 0xde, 0x52, 0x52, 0x5c, 0xba, + 0x9a, 0xfa, 0x9d, 0x65, 0xad, 0x3e, 0x93, 0x08, 0x73, 0x2b, 0x68, 0x97, + 0x48, 0x33, 0xb9, 0x46, 0xd0, 0x2d, 0xc8, 0x6f, 0xd9, 0xdc, 0x65, 0xed, + 0x16, 0xb6, 0x34, 0x8d, 0xc3, 0x6c, 0xbb, 0xca, 0x14, 0xd9, 0xd4, 0x2a, + 0xaa, 0x9b, 0x1d, 0x69, 0x1b, 0x6a, 0x86, 0xb1, 0xcd, 0xe1, 0xda, 0x7f, + 0x7a, 0xac, 0x3a, 0xb8, 0x0d, 0x37, 0xed, 0x1a, 0x88, 0x66, 0xa2, 0x74, + 0xff, 0x00, 0x78, 0x49, 0x4d, 0x96, 0xd0, 0xeb, 0x05, 0x6d, 0xb9, 0xce, + 0xdf, 0x4e, 0xe2, 0xe0, 0x35, 0x6d, 0x8d, 0xe3, 0x59, 0xe1, 0x03, 0x23, + 0x0e, 0xec, 0x8a, 0x85, 0x76, 0x7b, 0x1b, 0xbf, 0x71, 0xe2, 0x43, 0x7b, + 0x41, 0x55, 0x99, 0xd6, 0x2c, 0xb9, 0xdb, 0xc4, 0x87, 0x7d, 0x18, 0x11, + 0x11, 0x3a, 0xca, 0x8d, 0xbd, 0x45, 0xf0, 0x19, 0xb7, 0x77, 0xb4, 0xb7, + 0x71, 0x32, 0x03, 0x5c, 0x62, 0x4a, 0x4a, 0x62, 0xee, 0x9e, 0xd6, 0x36, + 0xdb, 0x18, 0xcd, 0xc1, 0xa0, 0x16, 0x56, 0xf1, 0xee, 0x81, 0x23, 0xf1, + 0x54, 0x32, 0xf1, 0xed, 0x6d, 0xec, 0x03, 0xda, 0x08, 0x07, 0x6b, 0x62, + 0x1a, 0xd0, 0x04, 0xcf, 0x9e, 0xa8, 0xf6, 0xe7, 0xb8, 0x86, 0x5a, 0x4b, + 0x77, 0x31, 0xa0, 0x41, 0xd2, 0x4c, 0xc7, 0x74, 0x2c, 0x8c, 0x9a, 0xc5, + 0x95, 0xb8, 0x8d, 0xc5, 0xcd, 0x89, 0x77, 0xee, 0x81, 0xaa, 0x4a, 0x73, + 0xda, 0x6f, 0x73, 0x2d, 0x0c, 0x01, 0xc6, 0x5c, 0xd9, 0xe0, 0x4f, 0x9f, + 0xf6, 0x4a, 0x93, 0x26, 0xb0, 0xf0, 0xf0, 0x5a, 0xd7, 0x47, 0x79, 0x07, + 0xc9, 0x4e, 0xeb, 0xc3, 0x5e, 0xc0, 0xc6, 0x6d, 0x00, 0x88, 0x98, 0x83, + 0x2a, 0x25, 0xf4, 0xd8, 0x06, 0xd3, 0x2d, 0x67, 0x27, 0x98, 0x8f, 0x8f, + 0xc1, 0x25, 0x32, 0xa5, 0xe6, 0x1c, 0x01, 0x1e, 0x99, 0x6f, 0xb6, 0x7b, + 0x90, 0x63, 0x9f, 0x9a, 0xb0, 0xfa, 0x99, 0x6b, 0xeb, 0x7c, 0x81, 0xb1, + 0xa1, 0x8d, 0x06, 0x7b, 0x6a, 0xe2, 0x23, 0xee, 0x55, 0x0b, 0x1d, 0x6b, + 0x3d, 0x3a, 0xa1, 0xc0, 0xc9, 0x68, 0x70, 0x00, 0x41, 0x89, 0x45, 0xaf, + 0x30, 0xbe, 0xf6, 0xb2, 0x96, 0x19, 0xa8, 0x13, 0xaf, 0x63, 0xf4, 0xbe, + 0xe2, 0x52, 0x52, 0xee, 0x73, 0x45, 0x82, 0xb6, 0x6e, 0x6c, 0x99, 0x1d, + 0xc1, 0x1c, 0x19, 0x2a, 0x4c, 0xd8, 0xdd, 0xe4, 0x0d, 0xee, 0x1a, 0xb6, + 0x66, 0x20, 0x29, 0x66, 0x90, 0xc7, 0x6e, 0x63, 0x7d, 0x8f, 0x3b, 0xda, + 0x7c, 0x34, 0x9f, 0xf6, 0x2a, 0xcc, 0xca, 0x1b, 0xc6, 0xcd, 0xdb, 0x40, + 0x97, 0x00, 0x7e, 0x92, 0x4a, 0x6c, 0x9b, 0x9e, 0xf6, 0xed, 0x2e, 0x89, + 0x88, 0x20, 0x98, 0xd1, 0x02, 0xcc, 0xa2, 0xd6, 0x96, 0x09, 0x79, 0xdc, + 0x43, 0x7f, 0x38, 0x92, 0xdd, 0x1d, 0x08, 0xf5, 0x12, 0xc0, 0x4d, 0x92, + 0x7d, 0x47, 0xc3, 0x03, 0x04, 0x9d, 0xb1, 0xaf, 0xdc, 0xa1, 0x76, 0x35, + 0xe1, 0xae, 0x76, 0x2b, 0xbd, 0x5b, 0x18, 0x7d, 0xa0, 0x46, 0xf2, 0x0f, + 0x27, 0x5d, 0x7e, 0xe4, 0x94, 0xd6, 0xb6, 0xf2, 0x0b, 0x5b, 0x63, 0x03, + 0x24, 0x69, 0xaf, 0x24, 0xfb, 0x87, 0xb0, 0x6a, 0xac, 0x9b, 0x3d, 0x46, + 0x35, 0xec, 0xa9, 0x80, 0x8e, 0x2c, 0xdb, 0x05, 0xe7, 0x83, 0x3f, 0x25, + 0x5a, 0xab, 0x1c, 0xf7, 0xec, 0xb4, 0x3b, 0xd4, 0x68, 0xf7, 0x3b, 0x69, + 0x69, 0x23, 0xb9, 0x93, 0xdd, 0x58, 0x01, 0xec, 0xa3, 0xd5, 0xac, 0x6e, + 0x73, 0x9c, 0x5a, 0x2a, 0x3e, 0xd1, 0x1d, 0x8a, 0x4a, 0x64, 0xfa, 0xfd, + 0x9b, 0xf4, 0x0f, 0x68, 0x82, 0x0f, 0x6e, 0xff, 0x00, 0x24, 0x23, 0x65, + 0xcd, 0x05, 0xce, 0x82, 0xd7, 0xf8, 0x08, 0x2c, 0x31, 0xcf, 0x9a, 0x35, + 0x8d, 0xca, 0x65, 0x55, 0xbe, 0xbd, 0x3d, 0x68, 0x6b, 0xc0, 0xed, 0x1c, + 0xca, 0x05, 0xae, 0x8b, 0x18, 0xc6, 0x3b, 0x56, 0xc0, 0x23, 0x99, 0x9d, + 0x38, 0xf9, 0xa4, 0xa5, 0xbe, 0xd3, 0x67, 0xa1, 0xb4, 0x97, 0x3d, 0xaf, + 0x04, 0xed, 0x3a, 0x1f, 0xdd, 0x2a, 0x0e, 0x7b, 0xac, 0x16, 0x52, 0x1d, + 0xb7, 0x68, 0x6c, 0x8d, 0x7e, 0x88, 0x1f, 0x96, 0x51, 0x5e, 0xcb, 0x2e, + 0x73, 0xea, 0x75, 0xfb, 0x6c, 0x06, 0x5b, 0x02, 0x36, 0x34, 0x6a, 0x41, + 0x85, 0x1b, 0x2c, 0x11, 0x60, 0x6b, 0x43, 0x25, 0xda, 0x02, 0x3f, 0x70, + 0xef, 0xed, 0xf0, 0x49, 0x4a, 0x2d, 0x19, 0x00, 0x6f, 0x1a, 0xb0, 0x07, + 0x8e, 0xda, 0xc7, 0x8a, 0xac, 0xdc, 0x77, 0xee, 0x78, 0xb7, 0xd9, 0xb8, + 0xc9, 0x2d, 0x3d, 0xa2, 0x08, 0x9f, 0x3e, 0x11, 0xec, 0xf5, 0xcb, 0xdb, + 0x63, 0x58, 0x3d, 0x17, 0x34, 0x92, 0xd1, 0xcc, 0x8e, 0x27, 0xe5, 0xa2, + 0x58, 0xd8, 0xcd, 0x2f, 0x36, 0xb5, 0xe0, 0x31, 0xcd, 0xda, 0x6b, 0x00, + 0xc8, 0x04, 0xea, 0xe2, 0x92, 0x98, 0xe3, 0xe4, 0xe6, 0xe3, 0xd4, 0xf7, + 0x54, 0xea, 0xeb, 0x6b, 0xa4, 0xbd, 0xd6, 0x09, 0x3e, 0x71, 0x1e, 0x4a, + 0xad, 0xef, 0xc9, 0x78, 0x73, 0x49, 0x07, 0xd3, 0x1f, 0x47, 0x5d, 0xbb, + 0x7b, 0x80, 0x07, 0x82, 0x97, 0xa6, 0xd1, 0xba, 0x5d, 0x2f, 0x6c, 0x96, + 0x12, 0x26, 0x3f, 0x75, 0xd1, 0xf0, 0x4c, 0xea, 0x3d, 0x3a, 0xde, 0x43, + 0x9c, 0xeb, 0x8b, 0x58, 0xf6, 0x92, 0x77, 0x12, 0x39, 0x20, 0x24, 0xa6, + 0x14, 0x5e, 0x71, 0xdd, 0x5e, 0xcb, 0xcb, 0xac, 0x23, 0xda, 0xd6, 0xcc, + 0x09, 0xfd, 0xe0, 0x55, 0xa7, 0xe4, 0x63, 0xbe, 0xaf, 0xb4, 0x56, 0x7d, + 0x37, 0x3b, 0xda, 0xf3, 0xcb, 0x0c, 0xaa, 0x99, 0x94, 0xbb, 0x17, 0x1e, + 0xbc, 0x96, 0x01, 0xfa, 0x40, 0xe7, 0x00, 0x3e, 0x93, 0x4b, 0xa4, 0x12, + 0x47, 0x94, 0xa6, 0xb7, 0x14, 0xb6, 0xac, 0x6c, 0x6a, 0xdc, 0x25, 0xc3, + 0x7d, 0x86, 0x74, 0x97, 0x00, 0x92, 0x97, 0xa4, 0x31, 0xde, 0xa3, 0x48, + 0x6c, 0x17, 0x12, 0x1c, 0xc1, 0x3f, 0x12, 0x55, 0x82, 0xc0, 0x18, 0xd7, + 0x35, 0xad, 0x2d, 0x03, 0x4d, 0xba, 0x0d, 0x7b, 0xc6, 0xbc, 0x42, 0xa8, + 0xf2, 0xe0, 0x7e, 0xcf, 0x5c, 0xd6, 0xe3, 0xb8, 0x69, 0xc3, 0xa2, 0x55, + 0xf7, 0x56, 0xe2, 0xc2, 0xc8, 0x21, 0xac, 0x6b, 0x40, 0x20, 0xc1, 0x2e, + 0x23, 0x72, 0x4a, 0x62, 0xf7, 0x8a, 0xa0, 0xd2, 0x49, 0x7b, 0x62, 0x5a, + 0x3c, 0xc7, 0x21, 0x14, 0x0a, 0x9a, 0x5d, 0x7f, 0x0f, 0x2d, 0x98, 0x1f, + 0x9c, 0x4f, 0xd1, 0x54, 0xab, 0xb6, 0xd3, 0xea, 0x1b, 0x80, 0xd0, 0xb5, + 0x9a, 0x71, 0xa9, 0x30, 0xe0, 0x7b, 0xc2, 0x72, 0xeb, 0x1f, 0x61, 0x0d, + 0x74, 0x5a, 0xd2, 0x5a, 0xd6, 0x90, 0x79, 0x68, 0xf1, 0xee, 0x92, 0x93, + 0x17, 0x54, 0xe8, 0x69, 0x6c, 0xce, 0xa1, 0xc2, 0x0f, 0x3d, 0xf4, 0x4e, + 0x72, 0x1c, 0xd6, 0x86, 0xbb, 0x4d, 0xce, 0x00, 0x46, 0xba, 0x9d, 0x54, + 0x69, 0x76, 0x4b, 0xe9, 0xc9, 0x75, 0x54, 0x97, 0x1d, 0x90, 0xe6, 0x06, + 0xfd, 0x17, 0x03, 0xac, 0x13, 0xe2, 0x12, 0x38, 0x99, 0x0e, 0x6b, 0x2c, + 0x70, 0x35, 0x40, 0xdc, 0xf7, 0x10, 0x41, 0x0d, 0x02, 0x41, 0x8f, 0x14, + 0x94, 0xca, 0xd6, 0xbe, 0xeb, 0x9a, 0xca, 0xce, 0xdd, 0xc7, 0x70, 0x9f, + 0x01, 0xa9, 0xd1, 0x5c, 0xfb, 0x2b, 0xa3, 0xd4, 0x97, 0xee, 0xf5, 0x36, + 0xc6, 0xe1, 0x3f, 0x08, 0xe2, 0x23, 0x55, 0x41, 0xd6, 0xed, 0xa9, 0x8e, + 0x82, 0x2d, 0x6b, 0x24, 0xbb, 0x50, 0x65, 0xd2, 0x23, 0xca, 0x02, 0xb5, + 0xfb, 0x43, 0x23, 0xec, 0x71, 0x02, 0x3f, 0xd2, 0x40, 0xdd, 0xe1, 0x3b, + 0x92, 0x53, 0x6e, 0x97, 0xd4, 0x1c, 0xf0, 0xe2, 0x5c, 0xda, 0xa0, 0xbc, + 0x37, 0xc4, 0xc8, 0x04, 0x1f, 0x25, 0xa1, 0x89, 0xf6, 0xa6, 0xd3, 0x66, + 0xb2, 0x20, 0xec, 0x7b, 0x89, 0xfb, 0xfe, 0xe4, 0xdd, 0x33, 0x16, 0x97, + 0xcd, 0xb7, 0xb4, 0x06, 0x58, 0xc6, 0x90, 0xd9, 0x89, 0x78, 0x3e, 0x0a, + 0xdd, 0xd8, 0xb7, 0xdb, 0x43, 0xf1, 0xe8, 0x6e, 0xd2, 0xf3, 0x25, 0xe7, + 0x80, 0xd4, 0x94, 0xd5, 0xca, 0x6b, 0x9d, 0x8a, 0xdf, 0xd1, 0x37, 0xd4, + 0xdb, 0xb6, 0x5a, 0x23, 0x59, 0x8e, 0x54, 0x3d, 0x0f, 0x41, 0xd5, 0xd6, + 0x40, 0xb2, 0xcd, 0xbb, 0x83, 0x9c, 0x07, 0xb0, 0x3b, 0x48, 0x2e, 0xee, + 0x8f, 0x91, 0x97, 0x65, 0xb6, 0xbb, 0x1e, 0xc6, 0xfa, 0x0c, 0xc5, 0x6f, + 0xab, 0x61, 0x03, 0x50, 0xd0, 0x7b, 0x79, 0x95, 0x95, 0x58, 0x2e, 0x26, + 0xd7, 0xd8, 0x45, 0x05, 0xc1, 0xa1, 0xdc, 0xf3, 0xae, 0xbe, 0x1c, 0xa4, + 0xa4, 0xb7, 0x6f, 0xb4, 0xb8, 0x9f, 0x75, 0x4e, 0x68, 0x02, 0xb6, 0x88, + 0x3a, 0x14, 0xc7, 0x11, 0x95, 0x37, 0xd3, 0xb2, 0x05, 0x61, 0xba, 0x80, + 0x7d, 0xd3, 0x32, 0x63, 0xf2, 0x27, 0x65, 0x76, 0x17, 0x3a, 0xb6, 0xe8, + 0x26, 0x4b, 0xa7, 0x41, 0xe0, 0xa3, 0x7e, 0x3d, 0xc1, 0xc0, 0x83, 0xea, + 0x3d, 0xc7, 0x81, 0xed, 0x0d, 0x68, 0xe4, 0x92, 0x92, 0x96, 0xb2, 0xff, + 0x00, 0x46, 0xb0, 0x29, 0x68, 0x73, 0x5c, 0x5b, 0xa0, 0x3d, 0xb5, 0xe7, + 0xe0, 0x9e, 0xcb, 0x47, 0xb9, 0xbb, 0x8b, 0x5c, 0xc1, 0xb9, 0xd1, 0xa4, + 0x83, 0xee, 0x84, 0x13, 0x5b, 0xee, 0xb7, 0x16, 0xb8, 0x2e, 0x16, 0x1d, + 0x5d, 0x10, 0x3f, 0x3b, 0x5d, 0x7b, 0x23, 0xe2, 0x63, 0xbb, 0x63, 0x9e, + 0x40, 0x7d, 0x8d, 0x2e, 0xe0, 0xeb, 0x1c, 0xa4, 0xa6, 0xb5, 0x9b, 0x5a, + 0xe6, 0x87, 0x6a, 0xd7, 0xc3, 0xbc, 0x65, 0xc7, 0xb2, 0x95, 0xed, 0xa9, + 0xd6, 0xee, 0x79, 0x06, 0x00, 0x68, 0x1e, 0x00, 0x6a, 0x51, 0x1f, 0x59, + 0x93, 0xbc, 0x41, 0x69, 0x86, 0xcf, 0x62, 0x7b, 0x8f, 0x82, 0x86, 0x4d, + 0x21, 0xb6, 0x56, 0xd6, 0x3a, 0x03, 0x8c, 0xee, 0xef, 0xc2, 0x4a, 0x6a, + 0xd9, 0x4b, 0xa7, 0xd5, 0x63, 0xc0, 0x2e, 0x3b, 0x8e, 0xef, 0x76, 0x82, + 0x74, 0x8e, 0xc8, 0x55, 0x56, 0xe7, 0xd2, 0xea, 0xde, 0xf9, 0xb9, 0xd0, + 0x7d, 0xa3, 0xd8, 0x1a, 0xee, 0x42, 0xba, 0xfa, 0x6a, 0x6b, 0x4d, 0x6e, + 0x04, 0x39, 0xcd, 0x83, 0x0a, 0x43, 0x16, 0xe6, 0xe3, 0xb9, 0xc5, 0xe2, + 0xa9, 0x20, 0x8d, 0x38, 0x1d, 0xe7, 0xcd, 0x25, 0x35, 0xda, 0xeb, 0x1e, + 0x0d, 0x6c, 0xa2, 0x29, 0x87, 0x34, 0x97, 0x18, 0x27, 0x5f, 0xbf, 0x54, + 0x66, 0x1a, 0xe9, 0x0f, 0x14, 0x30, 0x17, 0x35, 0xa4, 0x13, 0xf3, 0x8e, + 0x53, 0x36, 0x9b, 0xc0, 0xdf, 0x63, 0x83, 0x1c, 0x47, 0xbc, 0x01, 0xed, + 0xf8, 0x8f, 0x92, 0x23, 0x1c, 0x03, 0x0b, 0x1a, 0x37, 0x34, 0x88, 0x73, + 0xcf, 0x09, 0x29, 0xac, 0x2c, 0xf5, 0xb1, 0x6c, 0x64, 0xfb, 0x80, 0xf6, + 0x1e, 0x7d, 0xa4, 0x8d, 0xdf, 0x72, 0x77, 0x86, 0x32, 0x8d, 0xef, 0x73, + 0x46, 0xdf, 0xdd, 0x11, 0xbc, 0x81, 0xd9, 0x31, 0x79, 0xf5, 0x18, 0xf2, + 0x03, 0x45, 0x6e, 0x70, 0xd9, 0xdc, 0xb3, 0xbf, 0xcc, 0xa8, 0xe4, 0xe2, + 0xde, 0x72, 0x0d, 0xd6, 0x9f, 0x61, 0x86, 0xd6, 0xd1, 0xab, 0x43, 0x47, + 0xd1, 0x3e, 0x49, 0x29, 0x2b, 0x72, 0x4d, 0xcc, 0x65, 0x5b, 0x76, 0x17, + 0x49, 0x27, 0x8d, 0xad, 0x07, 0xe9, 0xe9, 0xe6, 0x93, 0xde, 0xc7, 0xb5, + 0x8f, 0x02, 0x1d, 0xab, 0x2b, 0x69, 0x3a, 0xed, 0x1d, 0xcf, 0xc5, 0x49, + 0x83, 0x6b, 0xeb, 0xa3, 0x68, 0x2c, 0xb6, 0xb2, 0x09, 0x23, 0x57, 0x13, + 0xa9, 0xf9, 0x22, 0x0c, 0x16, 0x17, 0xd9, 0xac, 0xdc, 0xc8, 0x81, 0x32, + 0x0b, 0x7c, 0xa7, 0xe0, 0x92, 0x90, 0xfe, 0x99, 0xcc, 0x2f, 0x92, 0xeb, + 0x47, 0x0c, 0xe6, 0x4f, 0x89, 0x44, 0x6d, 0x81, 0xad, 0xaa, 0xd6, 0xd6, + 0xe7, 0x3e, 0x18, 0x5e, 0xd7, 0x73, 0xfa, 0x43, 0xcf, 0xc9, 0x5c, 0xa7, + 0x19, 0xa4, 0x3c, 0xb2, 0x1c, 0x1d, 0x0c, 0xf1, 0x2d, 0xfc, 0xe7, 0x6a, + 0x96, 0x5b, 0x19, 0x61, 0x22, 0xb0, 0x5a, 0xfa, 0xdc, 0x1a, 0x22, 0x48, + 0x3b, 0x78, 0x6f, 0xe2, 0x92, 0x91, 0x7a, 0xad, 0xbb, 0x1d, 0xed, 0x68, + 0x24, 0xd3, 0x23, 0x49, 0x92, 0x47, 0x82, 0xa7, 0x6d, 0x64, 0xdc, 0xdc, + 0x80, 0xdd, 0xc6, 0xb2, 0x03, 0x89, 0x1f, 0x48, 0x11, 0xed, 0xfc, 0x8a, + 0xc5, 0x4f, 0xb2, 0xa7, 0x7a, 0x9e, 0x9b, 0x87, 0xae, 0xe3, 0xea, 0x00, + 0xd3, 0xb5, 0x9a, 0x11, 0xba, 0x39, 0xd5, 0x4e, 0xf6, 0x90, 0xd3, 0x46, + 0xe3, 0x25, 0xc5, 0xe0, 0xc4, 0x81, 0xe4, 0x3c, 0x92, 0x52, 0x2a, 0x6a, + 0xad, 0xf4, 0x9b, 0x09, 0x35, 0x1d, 0xc3, 0x79, 0x74, 0xea, 0xdf, 0x05, + 0x27, 0xd2, 0xef, 0xb2, 0xd8, 0xd6, 0x1d, 0xed, 0x7d, 0x8d, 0x63, 0x60, + 0x09, 0xdb, 0x0e, 0xd7, 0xef, 0x42, 0x0f, 0xdd, 0x8a, 0xda, 0x49, 0x75, + 0x82, 0x4b, 0x1c, 0xf7, 0x72, 0x47, 0x70, 0x7c, 0x55, 0x8c, 0x77, 0x32, + 0xb6, 0x0a, 0x88, 0x86, 0xbd, 0xfb, 0x1a, 0xe6, 0xf6, 0xef, 0xc1, 0x49, + 0x4d, 0x61, 0x8f, 0x7d, 0xac, 0xae, 0xb6, 0x70, 0x0b, 0xb7, 0xbf, 0xc2, + 0x3f, 0x3b, 0xf0, 0x47, 0x75, 0x4c, 0xa0, 0x39, 0x95, 0x1d, 0xd7, 0x55, + 0x5b, 0x5e, 0xe2, 0x3c, 0x5d, 0x3e, 0xa0, 0xf9, 0x08, 0x56, 0x1c, 0x43, + 0x00, 0x68, 0x78, 0x24, 0x02, 0xd7, 0x11, 0x0e, 0x93, 0xbb, 0x53, 0xf8, + 0x26, 0xa6, 0x8f, 0x7f, 0xb7, 0xdc, 0xf9, 0x86, 0x09, 0xfa, 0x4e, 0xf3, + 0xf1, 0x49, 0x4e, 0x7d, 0xb5, 0xb2, 0xd6, 0xbb, 0x26, 0xb6, 0x90, 0xc1, + 0xad, 0x9b, 0x75, 0x73, 0x4f, 0x04, 0xc7, 0x82, 0x66, 0x57, 0x5d, 0x8e, + 0x70, 0xb1, 0xa7, 0x70, 0x04, 0x89, 0x3c, 0x03, 0x1a, 0x68, 0xae, 0xba, + 0x97, 0x62, 0x93, 0x76, 0x3c, 0x00, 0xf2, 0xe8, 0x67, 0x66, 0xbb, 0xf3, + 0x98, 0xe0, 0xaa, 0xda, 0xf6, 0x7a, 0x84, 0xbb, 0xf4, 0x76, 0x11, 0x2f, + 0x69, 0xec, 0x7c, 0x74, 0x49, 0x4d, 0x70, 0x1e, 0xd0, 0x60, 0xef, 0x78, + 0x27, 0x60, 0x8d, 0xd0, 0x01, 0xf3, 0xee, 0x9e, 0xf0, 0xd7, 0xb9, 0x96, + 0x53, 0x58, 0xf7, 0x68, 0xed, 0xbc, 0x0e, 0xff, 0x00, 0xea, 0x11, 0x5a, + 0x59, 0x5b, 0x58, 0xf7, 0xc8, 0x7e, 0xbb, 0xdd, 0xf2, 0xe6, 0x54, 0xd8, + 0x47, 0xa6, 0x19, 0x51, 0xd4, 0x8d, 0xe1, 0xc7, 0xe8, 0xcf, 0x91, 0x09, + 0x29, 0x05, 0x54, 0x3e, 0x86, 0xb9, 0xf3, 0xed, 0x2e, 0xd4, 0xbb, 0xe9, + 0x4b, 0x87, 0x65, 0x3b, 0x88, 0x7b, 0xcb, 0xb7, 0x13, 0x55, 0x70, 0x18, + 0x07, 0xd2, 0x93, 0xaf, 0x2a, 0x76, 0x43, 0xea, 0xb1, 0x84, 0x6e, 0x35, + 0xb9, 0xbb, 0xc8, 0xe3, 0x70, 0xf6, 0xe9, 0xf0, 0x08, 0x37, 0x90, 0x3d, + 0x46, 0xb0, 0x43, 0x5c, 0xe8, 0x2c, 0x3a, 0x4c, 0x7e, 0xe9, 0xec, 0x92, + 0x91, 0xdc, 0xf6, 0x34, 0xed, 0x6d, 0x45, 0xe0, 0x1d, 0xda, 0x71, 0xb8, + 0x77, 0x1f, 0xc5, 0x4a, 0x8b, 0x85, 0x43, 0x7b, 0x8e, 0xb2, 0x0b, 0x0c, + 0x72, 0x7c, 0x08, 0x4c, 0xe1, 0x15, 0xb9, 0xd5, 0xd8, 0xe6, 0x06, 0x88, + 0xd4, 0x6b, 0xa9, 0x8f, 0x9a, 0x23, 0x71, 0x9a, 0xea, 0x77, 0xb7, 0xda, + 0xe6, 0x38, 0x87, 0x81, 0xf9, 0xc4, 0x73, 0xf8, 0x24, 0xa4, 0x4d, 0xc8, + 0xb8, 0x9f, 0x4e, 0x9d, 0xed, 0x0e, 0x86, 0x92, 0x09, 0x6f, 0x6d, 0x77, + 0x78, 0xab, 0x57, 0xda, 0xeb, 0xdf, 0x4d, 0x76, 0xbc, 0x96, 0x54, 0x67, + 0x93, 0xac, 0x7c, 0x14, 0x1c, 0xd7, 0x35, 0xd3, 0x58, 0x05, 0xaf, 0xda, + 0x00, 0x3d, 0xa7, 0xc7, 0xe0, 0x82, 0xfa, 0xb2, 0x1c, 0x2d, 0x15, 0xb8, + 0xcc, 0x9d, 0xa0, 0x6b, 0x00, 0xe8, 0x92, 0x99, 0x5d, 0x45, 0x2e, 0x75, + 0x85, 0xe6, 0x43, 0xa4, 0x90, 0x0e, 0x92, 0x14, 0x37, 0xfe, 0xad, 0xb2, + 0x1b, 0x33, 0x11, 0xa4, 0x71, 0x1b, 0x53, 0x8a, 0x5d, 0x65, 0x62, 0x4f, + 0xd3, 0x69, 0x6b, 0x88, 0x22, 0x77, 0x37, 0x47, 0x15, 0x5f, 0xec, 0x83, + 0xfa, 0x3f, 0xa9, 0xae, 0xd9, 0x99, 0xf3, 0xe5, 0x25, 0x3f, 0xff, 0xd9 +}; +size_t demo_004_jpg_len = 27708; + +const uint8_t demo_005_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00, + 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, + 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00, + 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xef, 0xe5, 0x24, 0x2d, 0xc9, 0xc3, 0x92, 0x52, 0x44, + 0x94, 0x37, 0xa7, 0xdc, 0x92, 0x99, 0xa6, 0x4c, 0x0a, 0x74, 0x94, 0xba, + 0x1d, 0x97, 0x36, 0xbe, 0x79, 0x52, 0x7b, 0xc3, 0x18, 0x5c, 0x78, 0x0b, + 0x1f, 0x27, 0x25, 0xc0, 0x39, 0xc4, 0xeb, 0xa9, 0x27, 0xc9, 0x25, 0x2b, + 0x27, 0x31, 0x8d, 0x7e, 0xe3, 0xac, 0xac, 0xdc, 0xab, 0x2b, 0x75, 0xbb, + 0x5e, 0x60, 0x11, 0xf8, 0x2a, 0xb9, 0x59, 0x2e, 0x7d, 0x6f, 0x78, 0xec, + 0x44, 0x7c, 0x15, 0x7c, 0xdb, 0xbd, 0xb8, 0xf7, 0x03, 0xa3, 0x99, 0x1f, + 0x30, 0x61, 0x25, 0x36, 0x7e, 0xce, 0xd3, 0xfc, 0xdb, 0xb6, 0xbb, 0xcd, + 0x41, 0xd4, 0xd8, 0xd9, 0xf5, 0x29, 0x16, 0x78, 0xb9, 0xba, 0x1f, 0xbc, + 0x2c, 0xe7, 0x64, 0xda, 0x3d, 0x40, 0xd2, 0x43, 0x88, 0xe5, 0x56, 0x6f, + 0x51, 0xcb, 0x66, 0xad, 0x73, 0xa0, 0x72, 0x7b, 0x24, 0xa5, 0xb3, 0xf0, + 0xe8, 0xaa, 0xe3, 0x75, 0x60, 0xb7, 0x77, 0xd3, 0x04, 0x99, 0x95, 0x4d, + 0xc2, 0xbd, 0xbb, 0x89, 0x8d, 0xbd, 0xd5, 0xcb, 0x7a, 0xa5, 0xb6, 0xd4, + 0xfa, 0xae, 0x1e, 0xd3, 0xf9, 0xc0, 0x6a, 0x15, 0x3b, 0x2c, 0xa6, 0xa1, + 0xea, 0x4e, 0xe7, 0x01, 0xa3, 0xc8, 0x8d, 0xbf, 0xd4, 0x1f, 0xc5, 0x25, + 0x28, 0x5b, 0xe8, 0x10, 0xf0, 0xd2, 0xc8, 0xd5, 0xad, 0xe0, 0xfc, 0x5d, + 0xe1, 0xf0, 0x56, 0x19, 0x9f, 0x46, 0x4e, 0x3b, 0x9d, 0x31, 0x73, 0x38, + 0x6f, 0x92, 0xa1, 0x5d, 0x2f, 0xcd, 0x69, 0xb0, 0xcd, 0x55, 0x13, 0x00, + 0x89, 0x2e, 0x71, 0xf9, 0xaa, 0xc6, 0x91, 0x4e, 0x41, 0x60, 0x78, 0xda, + 0xc8, 0x8f, 0x19, 0x3e, 0x29, 0x29, 0xd0, 0x60, 0x00, 0x4f, 0x9c, 0xa7, + 0x78, 0x69, 0x77, 0xc7, 0x58, 0x51, 0x76, 0x46, 0x38, 0x12, 0xd7, 0x8d, + 0x62, 0x47, 0x82, 0x1f, 0xda, 0x28, 0x9f, 0xe7, 0x02, 0x4a, 0x5e, 0xc6, + 0x8d, 0x84, 0x2c, 0xfb, 0x6a, 0x63, 0xde, 0x49, 0xed, 0xa0, 0xf8, 0x05, + 0x6a, 0xcc, 0x9a, 0x1d, 0xa0, 0x78, 0xd1, 0x57, 0x2f, 0x69, 0x71, 0x82, + 0x35, 0x3f, 0x82, 0x4a, 0x67, 0xb1, 0xa1, 0xb0, 0x0c, 0x00, 0x9d, 0xcc, + 0x1f, 0x25, 0x03, 0x6b, 0x5b, 0x23, 0x77, 0x8a, 0x5e, 0xbd, 0x7e, 0x29, + 0x29, 0x20, 0x63, 0x46, 0x9c, 0xa8, 0xe4, 0xb4, 0x7a, 0x4c, 0x31, 0xdf, + 0x54, 0xc2, 0xe6, 0x9f, 0x15, 0x27, 0x10, 0xf6, 0x80, 0x67, 0x6f, 0x70, + 0x92, 0x90, 0x54, 0xca, 0x77, 0x02, 0x74, 0x2a, 0xed, 0x75, 0xd4, 0xe7, + 0xb6, 0x4c, 0x46, 0x8a, 0xad, 0x6f, 0xf4, 0x49, 0x96, 0x87, 0x03, 0xd8, + 0xa2, 0xee, 0x69, 0x7e, 0xe6, 0x02, 0x1b, 0xa6, 0xe6, 0x9e, 0xd2, 0x92, + 0x9d, 0x6e, 0x97, 0x8f, 0x5b, 0x4d, 0x8e, 0x02, 0x37, 0x0b, 0x1a, 0x7c, + 0xc4, 0x05, 0x3a, 0x2e, 0x65, 0x61, 0xa1, 0xbc, 0xa5, 0xd1, 0xc3, 0x8e, + 0xf8, 0x3c, 0x3b, 0xbf, 0x9b, 0x55, 0x50, 0x08, 0x7e, 0x9d, 0x89, 0xfb, + 0x82, 0x4a, 0x7a, 0x0c, 0x3e, 0xa0, 0x1b, 0x0e, 0x71, 0x00, 0x8e, 0x21, + 0x6e, 0xe1, 0xfd, 0x62, 0x60, 0x7e, 0xcb, 0x8e, 0xe6, 0x78, 0xf7, 0x5c, + 0x33, 0x6c, 0x25, 0xc0, 0x0f, 0x9a, 0xb1, 0x5d, 0x8e, 0xda, 0x75, 0xd7, + 0xb2, 0x4a, 0x7d, 0x3a, 0xbb, 0x19, 0x6b, 0x1b, 0x65, 0x67, 0x73, 0x1c, + 0x24, 0x10, 0xa6, 0xb9, 0x4f, 0xaa, 0x5d, 0x55, 0xce, 0x79, 0xc3, 0xb4, + 0xfb, 0x5f, 0xad, 0x7f, 0xd6, 0x03, 0x51, 0xf3, 0x5d, 0x5a, 0x4a, 0x52, + 0x49, 0x92, 0x94, 0x94, 0xba, 0x49, 0xa5, 0x29, 0x49, 0x4b, 0xa4, 0x9a, + 0x52, 0x94, 0x94, 0x81, 0x3a, 0x49, 0xd2, 0x52, 0xc9, 0xc2, 0x65, 0x36, + 0x80, 0x92, 0x97, 0x0a, 0x49, 0xa0, 0x27, 0x49, 0x4e, 0x76, 0x7e, 0x4c, + 0xdc, 0x31, 0xda, 0x7e, 0x88, 0xdd, 0x60, 0xf8, 0xf0, 0xb1, 0x3a, 0x8e, + 0x41, 0x66, 0x25, 0xce, 0xf1, 0xf6, 0xb7, 0xf8, 0xa6, 0x39, 0x5b, 0xfa, + 0x96, 0x75, 0xc4, 0xe8, 0xeb, 0x8d, 0x2c, 0xf8, 0x56, 0xdd, 0x55, 0x3e, + 0xac, 0xfd, 0xb8, 0x1b, 0x0e, 0xbe, 0xed, 0xc9, 0x29, 0xae, 0x1c, 0x4f, + 0x4f, 0xb1, 0xde, 0x23, 0xf0, 0x08, 0x4e, 0x3e, 0xa7, 0x4b, 0xc7, 0x77, + 0x81, 0x70, 0x3f, 0x27, 0x24, 0x2c, 0xff, 0x00, 0x25, 0x90, 0x3c, 0x76, + 0x9f, 0x9a, 0x6c, 0x70, 0x5f, 0xd2, 0xeb, 0x68, 0xfc, 0xdb, 0x5c, 0x0f, + 0xc3, 0x42, 0x92, 0x9a, 0xaf, 0x13, 0x68, 0x6c, 0xc6, 0xee, 0x49, 0xf3, + 0x56, 0x6d, 0xc7, 0xaa, 0xbc, 0x7a, 0x88, 0x13, 0x0f, 0x82, 0x7c, 0x67, + 0x45, 0x52, 0xd2, 0x06, 0x43, 0x5d, 0x33, 0xdd, 0x68, 0xe4, 0x3b, 0xd4, + 0xc6, 0x70, 0x6f, 0xe6, 0x89, 0x07, 0xe1, 0xaa, 0x4a, 0x4c, 0xec, 0x6c, + 0x7d, 0xec, 0x3b, 0x41, 0x0e, 0x86, 0xf1, 0xdf, 0xc5, 0x73, 0xfd, 0x6b, + 0x04, 0x51, 0x96, 0xca, 0x29, 0x23, 0xd3, 0xb5, 0xd2, 0xd6, 0x9d, 0x43, + 0x27, 0xe9, 0x42, 0xdf, 0xab, 0x20, 0x3f, 0x15, 0xb6, 0x81, 0xee, 0x6b, + 0x37, 0xfc, 0xc0, 0x58, 0x59, 0x56, 0xba, 0xc6, 0x3f, 0x22, 0xc2, 0x26, + 0x08, 0xac, 0x7c, 0x79, 0x29, 0x29, 0xcd, 0x7b, 0x4e, 0xfb, 0x1b, 0x4d, + 0x8f, 0x68, 0x68, 0x9d, 0x1c, 0x63, 0x98, 0x08, 0x2c, 0xad, 0xd5, 0xbf, + 0x5e, 0x4f, 0x33, 0xdd, 0x58, 0x00, 0xb5, 0xb6, 0x38, 0xfd, 0x27, 0x16, + 0x0f, 0xbf, 0xdd, 0x08, 0xae, 0x6e, 0xe6, 0xcc, 0x70, 0x92, 0x9a, 0xef, + 0xa9, 0xb2, 0x50, 0x4d, 0x60, 0x1f, 0xf6, 0xab, 0xa5, 0xa0, 0xc4, 0x20, + 0xd8, 0xcf, 0x74, 0x0f, 0x92, 0x4a, 0x6b, 0x0a, 0xc0, 0xf9, 0x79, 0x95, + 0x2b, 0x31, 0xdd, 0x5b, 0xda, 0x08, 0x12, 0x44, 0x8d, 0x7c, 0x54, 0xf5, + 0x12, 0x3b, 0xf7, 0x45, 0xbe, 0x3f, 0x42, 0xe1, 0xf9, 0xc0, 0xbb, 0xe1, + 0xf9, 0xa4, 0x7d, 0xe1, 0x25, 0x35, 0x0b, 0x08, 0x20, 0x91, 0xca, 0x90, + 0x6e, 0x9f, 0xec, 0x53, 0xb0, 0x6a, 0xd2, 0x74, 0x1c, 0x24, 0x35, 0x49, + 0x4a, 0x60, 0x3e, 0x28, 0x92, 0x7b, 0x28, 0xb4, 0x76, 0x0a, 0x70, 0x92, + 0x96, 0x89, 0x29, 0xeb, 0x71, 0x06, 0x4f, 0xc0, 0xa6, 0x4e, 0x47, 0xbb, + 0xe2, 0x92, 0x9d, 0x7e, 0x9a, 0x5c, 0x6d, 0x70, 0x6f, 0x12, 0xcf, 0xc0, + 0x20, 0x9f, 0xa4, 0xe2, 0x3c, 0x48, 0xfc, 0x51, 0xfa, 0x13, 0x66, 0xbb, + 0x6c, 0x77, 0x22, 0x3f, 0x22, 0xaf, 0x4c, 0x97, 0x13, 0xe1, 0xac, 0x7c, + 0x52, 0x52, 0x56, 0x30, 0xb4, 0x71, 0xee, 0x2a, 0x7b, 0x61, 0x8e, 0x3e, + 0x4a, 0x4d, 0x6e, 0xb2, 0x4a, 0x2d, 0xec, 0xdb, 0x8e, 0x5d, 0xd8, 0x8d, + 0x0a, 0x4a, 0x5b, 0xa7, 0xe4, 0xbb, 0x17, 0x22, 0xbb, 0x18, 0x75, 0x69, + 0x0e, 0x6f, 0x6d, 0x5b, 0xee, 0x85, 0xe9, 0x74, 0xda, 0xdb, 0xa9, 0x65, + 0xcc, 0xd5, 0xb6, 0x34, 0x39, 0xbf, 0x02, 0x25, 0x79, 0x53, 0x9d, 0xb4, + 0x32, 0xcf, 0xdd, 0x70, 0x3f, 0x25, 0xdf, 0x7d, 0x56, 0xcc, 0x17, 0xf4, + 0xff, 0x00, 0x40, 0x99, 0x7d, 0x0e, 0x20, 0x0f, 0xe4, 0x1d, 0x5a, 0x92, + 0x9d, 0xa4, 0xc9, 0xd4, 0x4a, 0x4a, 0x54, 0xa5, 0x29, 0x92, 0x49, 0x4c, + 0x93, 0x24, 0x92, 0x4a, 0x60, 0x12, 0x48, 0x05, 0x20, 0x12, 0x53, 0x14, + 0xe2, 0x53, 0xc0, 0x48, 0x04, 0x94, 0xc8, 0x27, 0x55, 0xf3, 0xb3, 0x29, + 0xc0, 0xc3, 0xb7, 0x32, 0xe0, 0x4d, 0x74, 0x89, 0x21, 0xa2, 0x5c, 0x7b, + 0x00, 0x07, 0xc5, 0x73, 0xd4, 0xe7, 0xf5, 0x5c, 0xf7, 0xfd, 0xb9, 0xc5, + 0xd8, 0x94, 0xb8, 0x45, 0x38, 0xe5, 0xc4, 0x3b, 0x6f, 0xef, 0x39, 0xa3, + 0x83, 0xf1, 0x49, 0x4e, 0x3b, 0x9c, 0x5a, 0xfb, 0x58, 0x09, 0x96, 0xd8, + 0xf9, 0xfe, 0xb5, 0x96, 0x12, 0x7f, 0xe8, 0x84, 0x3c, 0x9c, 0x8f, 0xb5, + 0x62, 0x82, 0x0c, 0xe8, 0x47, 0xdd, 0xa2, 0x0f, 0x57, 0x75, 0xd8, 0xcc, + 0xbf, 0x76, 0x8f, 0xb6, 0xe0, 0x64, 0xf7, 0x69, 0x0a, 0x95, 0xaf, 0x7d, + 0x34, 0xe3, 0xb7, 0xbb, 0xd8, 0x5d, 0xf7, 0xb8, 0x98, 0x49, 0x4d, 0x8a, + 0x1e, 0x4f, 0x4f, 0xb1, 0xbd, 0xda, 0x41, 0x3f, 0x91, 0x59, 0xe9, 0x8e, + 0x9e, 0x99, 0x74, 0x9d, 0x19, 0x61, 0x24, 0xf9, 0x10, 0x0a, 0xa9, 0x88, + 0xef, 0x52, 0x8b, 0x9e, 0xde, 0x1c, 0x36, 0x96, 0xf9, 0xca, 0x37, 0x48, + 0x2e, 0x38, 0xd9, 0xb4, 0x8e, 0x43, 0x99, 0xa7, 0xde, 0x12, 0x53, 0x5b, + 0x21, 0xdb, 0x9d, 0x31, 0x10, 0xee, 0x0f, 0x82, 0xbb, 0x45, 0x9b, 0x80, + 0x61, 0xe1, 0xc2, 0x08, 0x55, 0x32, 0x5a, 0x37, 0x10, 0x7e, 0x91, 0xd0, + 0x47, 0x92, 0x95, 0x05, 0xc1, 0x80, 0x8e, 0xc7, 0x53, 0xdd, 0x25, 0x36, + 0xb0, 0xb4, 0xaa, 0xcc, 0x77, 0x72, 0xc7, 0x16, 0xfc, 0x8a, 0xc7, 0xb9, + 0x8e, 0x36, 0xb7, 0x1d, 0xe3, 0x5d, 0x1b, 0xff, 0x00, 0x4a, 0x4f, 0xe0, + 0xb5, 0x58, 0x43, 0x73, 0x88, 0xe0, 0x5a, 0xcd, 0xdf, 0x36, 0xac, 0xbb, + 0x5c, 0xe7, 0xdd, 0x7d, 0xcd, 0xf7, 0x3b, 0xdc, 0x1b, 0x1e, 0x2e, 0x3b, + 0x47, 0xe0, 0x92, 0x9a, 0x8e, 0x33, 0x59, 0xb2, 0x34, 0x7d, 0xa4, 0x8f, + 0x83, 0x74, 0x08, 0xcd, 0x9d, 0xe4, 0x72, 0x0f, 0x64, 0x37, 0x01, 0xe8, + 0x35, 0x83, 0xfc, 0x18, 0x13, 0x1a, 0xea, 0x4c, 0xa2, 0x58, 0xcb, 0x18, + 0xe6, 0xbc, 0x88, 0x0e, 0x00, 0x13, 0x3a, 0x4f, 0x82, 0x4a, 0x60, 0x49, + 0x68, 0x93, 0xd8, 0xc2, 0x6b, 0x3d, 0xdf, 0x2d, 0x52, 0xb9, 0xa5, 0xae, + 0x88, 0xe4, 0xa7, 0x34, 0xda, 0x5a, 0x2c, 0x8d, 0x1d, 0xc7, 0x8c, 0x24, + 0xa4, 0x2f, 0x60, 0x3e, 0xe1, 0xa1, 0x50, 0x22, 0x39, 0xe5, 0x58, 0xda, + 0xe0, 0xe6, 0xcb, 0x75, 0x06, 0x35, 0x9f, 0xee, 0x4e, 0xec, 0x79, 0x27, + 0x78, 0x2d, 0x6c, 0xc4, 0xf2, 0x3f, 0x06, 0xa4, 0xa6, 0xb5, 0xba, 0xeb, + 0xe6, 0x0a, 0x60, 0x64, 0xc2, 0x3d, 0xe1, 0xcd, 0x60, 0x65, 0x63, 0xf4, + 0x64, 0x6e, 0x92, 0x20, 0xca, 0x13, 0x40, 0x89, 0x49, 0x4b, 0xb5, 0x3e, + 0x89, 0x43, 0x47, 0x8e, 0xa9, 0x01, 0x2e, 0x88, 0xfb, 0xd2, 0x52, 0xb4, + 0x94, 0x9d, 0x10, 0x0f, 0xc9, 0x23, 0xf0, 0x80, 0xa3, 0x61, 0xda, 0xdf, + 0x29, 0xd5, 0x25, 0x3b, 0x5d, 0x21, 0xe6, 0xbc, 0x3b, 0x8f, 0x89, 0xd3, + 0xee, 0x59, 0x6c, 0xc9, 0x35, 0x37, 0x65, 0x5a, 0xb8, 0x99, 0x7b, 0x8f, + 0xe4, 0x5a, 0x1d, 0x31, 0xa5, 0xd8, 0x6f, 0x8d, 0x46, 0xe7, 0x4f, 0xdc, + 0xb3, 0xa9, 0x6b, 0x37, 0x13, 0xc3, 0x5b, 0xca, 0x4a, 0x4e, 0x32, 0x72, + 0x03, 0x4b, 0xec, 0x74, 0x00, 0x11, 0x31, 0xae, 0x7b, 0xb1, 0xee, 0x6d, + 0x8e, 0x27, 0x78, 0x0e, 0xd7, 0xc6, 0x55, 0x0b, 0xf2, 0x0d, 0xa4, 0x35, + 0xba, 0x30, 0x7e, 0x2a, 0xe5, 0x00, 0xfa, 0x4f, 0x1f, 0xc9, 0x1f, 0xde, + 0x92, 0x93, 0x1f, 0x75, 0x2e, 0x6c, 0xea, 0x78, 0xfc, 0xab, 0xa4, 0xfa, + 0x9f, 0x97, 0xe9, 0xe7, 0xb2, 0x82, 0x74, 0xbd, 0x85, 0xbf, 0xda, 0x68, + 0xdd, 0xfc, 0x17, 0x30, 0xc7, 0xcd, 0x61, 0xfe, 0x1a, 0xfd, 0xca, 0xef, + 0x40, 0xcc, 0xf4, 0x7a, 0x95, 0x39, 0x2f, 0x1f, 0xa3, 0xa9, 0xdb, 0x9c, + 0x47, 0xee, 0x99, 0x04, 0x7c, 0x52, 0x53, 0xea, 0x29, 0x8a, 0xa9, 0x83, + 0xd5, 0xb0, 0xb3, 0xe4, 0x50, 0xff, 0x00, 0x78, 0xd4, 0xd6, 0xed, 0x1d, + 0x1e, 0x2a, 0xe1, 0x49, 0x4c, 0x12, 0x4e, 0x53, 0x24, 0xa5, 0x25, 0x29, + 0x92, 0x49, 0x4b, 0x02, 0xa4, 0xa0, 0x9c, 0x14, 0x94, 0xca, 0x14, 0x82, + 0x8a, 0x90, 0x49, 0x48, 0xf2, 0xa8, 0xfb, 0x4e, 0x35, 0xb4, 0x6e, 0x2d, + 0xf5, 0x1a, 0x5a, 0x1c, 0x39, 0x69, 0x3c, 0x11, 0xf0, 0x5c, 0xe5, 0x16, + 0x90, 0x1d, 0x4b, 0xd8, 0xf6, 0xba, 0x92, 0x58, 0x4b, 0xb5, 0x97, 0x37, + 0x42, 0x57, 0x50, 0xb9, 0xaf, 0xac, 0x57, 0xd5, 0x8b, 0x9f, 0x48, 0x02, + 0x5f, 0x90, 0x21, 0xcd, 0x1c, 0x83, 0xf4, 0x5a, 0xef, 0x9f, 0xf0, 0x49, + 0x4e, 0x6f, 0x52, 0xc7, 0x66, 0x55, 0x46, 0xbb, 0xc4, 0xb0, 0xfd, 0x12, + 0x3e, 0x90, 0xf3, 0x0b, 0x9b, 0xea, 0x61, 0xed, 0x2c, 0x07, 0x50, 0xd8, + 0x6b, 0x08, 0xd7, 0x40, 0x21, 0x74, 0x76, 0xdf, 0xb9, 0xa0, 0x82, 0x0b, + 0x0f, 0xe7, 0x0d, 0x65, 0x64, 0xe7, 0xd7, 0x5d, 0x8d, 0x73, 0x49, 0xd3, + 0xc7, 0xba, 0x4a, 0x6b, 0x74, 0xeb, 0xc5, 0x16, 0xba, 0x93, 0xf4, 0x5c, + 0xc9, 0x71, 0x3e, 0x3c, 0xab, 0xdd, 0x14, 0x1f, 0x5b, 0x2c, 0x91, 0xa3, + 0xc3, 0x5d, 0x1f, 0xda, 0x23, 0xf8, 0xac, 0x7a, 0xdc, 0x1b, 0x94, 0x37, + 0xe8, 0x03, 0x4c, 0xf9, 0xc0, 0x95, 0xa9, 0xf5, 0x7a, 0xff, 0x00, 0x56, + 0xec, 0x88, 0x33, 0x15, 0xe9, 0x3f, 0xd6, 0x49, 0x4c, 0x2e, 0xa2, 0xe7, + 0xde, 0xe0, 0xc1, 0x24, 0x19, 0x85, 0x62, 0xba, 0x0d, 0x6c, 0xb0, 0x59, + 0x0d, 0x2e, 0x6e, 0xe6, 0xb6, 0x7c, 0x10, 0xb2, 0x33, 0xee, 0xc7, 0xb4, + 0xfa, 0x71, 0xa9, 0xd4, 0xc7, 0x6f, 0x8a, 0x8e, 0x4d, 0x87, 0x7b, 0x4b, + 0xb5, 0x24, 0x73, 0xda, 0x0a, 0x4a, 0x5a, 0xc0, 0xf1, 0x5b, 0x1e, 0xff, + 0x00, 0x6d, 0x8d, 0x0e, 0x1f, 0x22, 0x35, 0xd4, 0x2a, 0x55, 0xe4, 0x3b, + 0x19, 0xb5, 0xbd, 0xac, 0x0f, 0x2f, 0x71, 0xdc, 0x27, 0x69, 0x86, 0x81, + 0x3b, 0x4f, 0x62, 0xac, 0xee, 0x71, 0xc1, 0x2d, 0x70, 0x1c, 0x12, 0xd7, + 0x02, 0x66, 0x07, 0xb4, 0x82, 0x0f, 0x98, 0x54, 0xee, 0x79, 0x6b, 0xd8, + 0xc0, 0xd9, 0x06, 0xa9, 0x81, 0xfc, 0xa7, 0x4a, 0x4a, 0x6c, 0x3f, 0x33, + 0xa7, 0x65, 0x07, 0x11, 0x61, 0xaa, 0xc7, 0x76, 0xb0, 0x41, 0xf9, 0xa3, + 0xb8, 0xe1, 0xfa, 0x41, 0x97, 0x64, 0x54, 0xd6, 0xc0, 0x92, 0x5c, 0xdf, + 0xc8, 0xb0, 0x72, 0xe9, 0x71, 0x8b, 0x36, 0xed, 0xdc, 0x78, 0x55, 0x6c, + 0xa9, 0xcd, 0x82, 0x7b, 0xa4, 0xa7, 0xa0, 0xc1, 0x6b, 0x59, 0x9b, 0xea, + 0xb1, 0xed, 0xbe, 0xaa, 0xa7, 0x6b, 0x9a, 0x67, 0x74, 0xb4, 0x80, 0x99, + 0xce, 0x68, 0x7d, 0x6c, 0x61, 0xfd, 0x23, 0x1d, 0xb4, 0x82, 0x79, 0x0e, + 0x12, 0x27, 0xee, 0x58, 0xb8, 0xd7, 0xba, 0x90, 0x40, 0xde, 0x3f, 0xe2, + 0xdd, 0xb6, 0x7e, 0x28, 0xb4, 0xe7, 0xd9, 0x41, 0x3f, 0x67, 0xa8, 0x7a, + 0x8e, 0xff, 0x00, 0x08, 0xf3, 0xb9, 0xc9, 0x29, 0xde, 0x35, 0xd9, 0x5d, + 0x53, 0x61, 0x04, 0x93, 0x33, 0xc0, 0x2a, 0xb6, 0xc7, 0x92, 0x75, 0x33, + 0x3a, 0xb8, 0x44, 0x42, 0xc1, 0xbe, 0xdc, 0xab, 0x9f, 0xbe, 0xe7, 0xb9, + 0xce, 0x3e, 0x25, 0x3b, 0x7d, 0x78, 0xdb, 0xbd, 0xdb, 0x7c, 0x25, 0x25, + 0x37, 0x6e, 0xbc, 0x1c, 0x81, 0x58, 0x32, 0xd6, 0x68, 0xe8, 0xd4, 0x49, + 0xfe, 0xe5, 0x16, 0x8e, 0x60, 0x69, 0xae, 0x88, 0x78, 0xd5, 0x7b, 0x8e, + 0x9a, 0xc0, 0x2a, 0xcd, 0x75, 0x82, 0xe2, 0x3b, 0xa4, 0xa6, 0x2e, 0x00, + 0x8f, 0x05, 0x08, 0x3b, 0x9b, 0xf1, 0x08, 0xef, 0xa8, 0xb1, 0xa2, 0x50, + 0xdc, 0x20, 0x8f, 0x22, 0x3f, 0x2a, 0x4a, 0x62, 0xf0, 0x47, 0x2a, 0x0f, + 0xd5, 0x8e, 0x1e, 0x48, 0xb6, 0x83, 0xa1, 0xf8, 0x21, 0x59, 0xf4, 0x5c, + 0x92, 0x9d, 0x9e, 0x88, 0x1a, 0x7a, 0x65, 0x87, 0xbe, 0xe7, 0xcf, 0xc8, + 0x05, 0x84, 0x5e, 0xe3, 0x5e, 0x87, 0x42, 0x75, 0x0b, 0xa0, 0xfa, 0xaf, + 0x43, 0xee, 0xe9, 0xb9, 0x40, 0xb4, 0xc7, 0xbb, 0xd3, 0x3d, 0x89, 0x2d, + 0x82, 0xb0, 0x32, 0x1a, 0xda, 0xc0, 0x60, 0x90, 0xf2, 0x75, 0x07, 0x4d, + 0x46, 0x89, 0x29, 0x8b, 0x04, 0xb8, 0x42, 0xd2, 0xa1, 0xc5, 0xac, 0x11, + 0xaf, 0x8a, 0xcb, 0x63, 0xcc, 0xc7, 0x1e, 0x4a, 0xe3, 0x1e, 0xe6, 0xb4, + 0x34, 0x6a, 0xe7, 0x7d, 0x10, 0x12, 0x52, 0x72, 0xe7, 0x3e, 0xd1, 0x4d, + 0x7c, 0x34, 0xc9, 0x3d, 0xa0, 0xf8, 0xab, 0x75, 0xb1, 0xb5, 0x01, 0x5b, + 0x74, 0x1c, 0xa1, 0xe2, 0xd2, 0xd6, 0x08, 0x1a, 0xb9, 0xc7, 0xdc, 0x7c, + 0xd1, 0x2f, 0xb9, 0xe7, 0xf4, 0x35, 0xc4, 0xfe, 0x7b, 0xfc, 0x3e, 0x09, + 0x29, 0x36, 0x2e, 0x7b, 0xf1, 0x33, 0x69, 0xb2, 0xb7, 0x7b, 0xeb, 0x78, + 0x20, 0x0f, 0x09, 0xd4, 0x7c, 0xd7, 0xa8, 0x83, 0x22, 0x7c, 0x57, 0x9d, + 0xfd, 0x55, 0xe9, 0x94, 0xe4, 0xf5, 0x66, 0x35, 0xe3, 0x7b, 0x28, 0x06, + 0xe7, 0x93, 0xf9, 0xc5, 0xa4, 0x6d, 0x1f, 0x79, 0x5e, 0x88, 0x52, 0x52, + 0xc5, 0x45, 0x3c, 0x94, 0x92, 0x53, 0x12, 0x99, 0x4d, 0x32, 0x4a, 0x46, + 0x9d, 0x32, 0x74, 0x94, 0xb8, 0x2a, 0x40, 0xa8, 0x29, 0x04, 0x94, 0x90, + 0x15, 0x95, 0xd6, 0xb1, 0x71, 0x5d, 0x65, 0x59, 0x2f, 0x60, 0x39, 0x0c, + 0x05, 0xac, 0x77, 0xf2, 0x56, 0xa0, 0x58, 0x1d, 0x53, 0x2b, 0xd4, 0xc8, + 0x70, 0x07, 0xda, 0xdf, 0x68, 0xf9, 0x24, 0xa7, 0x9b, 0xea, 0x20, 0x61, + 0xbe, 0xb6, 0x56, 0xdd, 0xb8, 0xee, 0x9d, 0x07, 0x01, 0xd3, 0x2a, 0x8d, + 0xa7, 0x70, 0x2f, 0xf0, 0x1e, 0xe5, 0xb7, 0x99, 0x5b, 0x2d, 0xa5, 0xcd, + 0x70, 0x04, 0x15, 0xce, 0xbf, 0x7d, 0x36, 0x1a, 0xce, 0xad, 0x3a, 0x0f, + 0x82, 0x4a, 0x6a, 0xe4, 0x41, 0xf7, 0x0f, 0xa4, 0x3f, 0x22, 0xb5, 0xf5, + 0x5d, 0xd1, 0x9b, 0x73, 0x3b, 0x1a, 0x88, 0xff, 0x00, 0xa4, 0xd5, 0x45, + 0xc4, 0xc1, 0x95, 0x6b, 0xea, 0xfb, 0xc5, 0x7d, 0x59, 0xa3, 0xb5, 0xac, + 0x73, 0x7e, 0x71, 0xbb, 0xf8, 0x24, 0xa6, 0xc6, 0x6d, 0x7b, 0x6e, 0x7b, + 0x4f, 0x2d, 0x33, 0xf7, 0xa7, 0x73, 0xbd, 0x6c, 0x61, 0xaf, 0xba, 0xa2, + 0x64, 0x77, 0x80, 0x11, 0xfa, 0xa4, 0x36, 0xf7, 0x4e, 0x92, 0x75, 0x54, + 0xeb, 0x6b, 0xb7, 0x0d, 0x63, 0x70, 0x23, 0xef, 0x05, 0x25, 0x31, 0xae, + 0xe6, 0xbb, 0x11, 0xd5, 0x8f, 0xa6, 0xc7, 0x1d, 0x7c, 0x9d, 0xaa, 0x13, + 0xf5, 0xea, 0x25, 0x91, 0x21, 0x8c, 0x0c, 0xfb, 0x82, 0x86, 0x35, 0x6f, + 0xdf, 0x53, 0x4f, 0xf8, 0x47, 0xc4, 0x7c, 0x00, 0xfe, 0xf5, 0x2a, 0x5c, + 0x1f, 0xd4, 0xde, 0xf8, 0xd0, 0x97, 0x7e, 0x44, 0x94, 0xd8, 0xbb, 0x1c, + 0x58, 0xe6, 0xb6, 0x78, 0x82, 0x55, 0x1c, 0xea, 0x58, 0xd7, 0x86, 0xb7, + 0x50, 0xb6, 0x3d, 0x3f, 0x79, 0x3e, 0x21, 0x66, 0xe7, 0x37, 0xf4, 0x92, + 0x38, 0x94, 0x94, 0xd3, 0x6d, 0x20, 0x36, 0x54, 0xab, 0xa4, 0x18, 0x31, + 0xa2, 0x36, 0xd8, 0x6e, 0x9d, 0xd4, 0xa8, 0x69, 0x0e, 0xf9, 0xca, 0x4a, + 0x56, 0x46, 0x18, 0x0d, 0x07, 0xef, 0x55, 0xc5, 0x7a, 0xc7, 0x75, 0xa7, + 0x7b, 0xda, 0xe2, 0xd6, 0x91, 0xcf, 0xe0, 0x83, 0x75, 0x2c, 0x35, 0x8b, + 0x18, 0x75, 0x1f, 0x24, 0x94, 0xd5, 0xac, 0x43, 0xb4, 0xe7, 0x6f, 0xf1, + 0x56, 0x6a, 0xa8, 0xb9, 0xc4, 0xf3, 0x3f, 0xc1, 0x57, 0xad, 0xbe, 0xe1, + 0xde, 0x66, 0x27, 0xe2, 0x16, 0x86, 0x18, 0x06, 0xc8, 0x03, 0x41, 0xa7, + 0x84, 0x4a, 0x4a, 0x6b, 0x58, 0x3f, 0x34, 0xf7, 0x43, 0xb5, 0x9b, 0x5a, + 0x3c, 0x64, 0x7e, 0x55, 0x69, 0xd5, 0x4d, 0x8e, 0x27, 0x81, 0xc2, 0x15, + 0xcc, 0x21, 0xc0, 0x1d, 0x75, 0x68, 0x1f, 0x7a, 0x4a, 0x41, 0x6c, 0x10, + 0x16, 0xb7, 0x4a, 0xfa, 0xb0, 0x73, 0xb1, 0xfe, 0xdb, 0x96, 0xf3, 0x55, + 0x04, 0x8d, 0x8c, 0x02, 0x5c, 0xe6, 0xf1, 0xb8, 0xf8, 0x05, 0x9d, 0x5b, + 0x2a, 0xb7, 0xa8, 0x63, 0x51, 0x74, 0xfa, 0x56, 0xd8, 0xd6, 0xbf, 0x6f, + 0x30, 0x4c, 0x2f, 0x48, 0xc7, 0xa9, 0x8d, 0x68, 0xaf, 0x68, 0xd9, 0x1b, + 0x36, 0x76, 0xdb, 0x10, 0x07, 0xdc, 0x92, 0x9c, 0xdc, 0x2e, 0x9c, 0xcc, + 0x6a, 0xfe, 0xcf, 0x00, 0x06, 0xfd, 0x10, 0xd1, 0x0d, 0x70, 0x1d, 0xd7, + 0x0b, 0xd7, 0xb1, 0x2c, 0xc5, 0xea, 0x57, 0x57, 0x7b, 0x76, 0x6f, 0x71, + 0x7d, 0x47, 0xb3, 0x9a, 0x4f, 0x21, 0x7a, 0x25, 0xd8, 0xe6, 0xbd, 0xb4, + 0x97, 0xbb, 0xd3, 0x79, 0xd1, 0xed, 0x30, 0x43, 0x5b, 0xa9, 0xd7, 0xc7, + 0xb2, 0xc7, 0xfa, 0xc5, 0x82, 0xfe, 0xa1, 0xd2, 0x2e, 0xb2, 0xc6, 0x83, + 0x91, 0x82, 0x7d, 0x4a, 0x6c, 0x03, 0x57, 0x57, 0xf9, 0xc1, 0xdf, 0x24, + 0x94, 0xf0, 0x76, 0x40, 0xb6, 0x47, 0x04, 0x02, 0xaf, 0x63, 0x36, 0x21, + 0xc4, 0x7b, 0x8f, 0x7f, 0x00, 0xa9, 0x1d, 0x5d, 0x59, 0xf2, 0x2a, 0xe5, + 0x4f, 0xe1, 0x25, 0x36, 0xf7, 0x6d, 0x88, 0x22, 0x4f, 0x1f, 0xde, 0x9d, + 0xd6, 0x32, 0xb6, 0xf3, 0xa9, 0xef, 0xde, 0x7c, 0x55, 0x37, 0xe4, 0x06, + 0xbb, 0x48, 0x27, 0xb0, 0xf8, 0x22, 0x52, 0x1d, 0x75, 0x9b, 0xdf, 0xcf, + 0x20, 0x0e, 0x12, 0x53, 0xe8, 0x5f, 0x53, 0x7a, 0x69, 0xc7, 0xc1, 0xfb, + 0x75, 0xa3, 0xf4, 0xb9, 0x40, 0x16, 0x83, 0xda, 0xb1, 0xf4, 0x7e, 0xfe, + 0x57, 0x44, 0xb0, 0xbe, 0xa8, 0x66, 0xfa, 0xfd, 0x33, 0xec, 0xee, 0x32, + 0xfc, 0x63, 0xb7, 0xfb, 0x2e, 0xd5, 0xab, 0x75, 0x25, 0x2c, 0x53, 0x27, + 0x29, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0x8d, 0x24, 0x92, 0x49, 0x4b, + 0xa7, 0x01, 0x32, 0x93, 0x52, 0x53, 0x0c, 0xab, 0x7d, 0x1c, 0x6b, 0x2c, + 0xf0, 0x1a, 0x7c, 0x4e, 0x81, 0x72, 0x77, 0x3e, 0x5d, 0x3d, 0x96, 0xff, + 0x00, 0x5b, 0xb8, 0x36, 0x86, 0x53, 0xde, 0xc3, 0x3f, 0x20, 0xb9, 0xcb, + 0x4c, 0x3a, 0x67, 0xe4, 0x92, 0x91, 0x64, 0x59, 0x0c, 0x58, 0x79, 0xa4, + 0x39, 0xc3, 0xf0, 0x5a, 0x19, 0x77, 0x76, 0x95, 0x93, 0x7b, 0xc3, 0x9e, + 0x4f, 0xdc, 0x92, 0x9a, 0x96, 0xce, 0xb3, 0xf1, 0x42, 0xae, 0xe7, 0xe3, + 0xdf, 0x5d, 0xec, 0xe6, 0xb7, 0x07, 0x7d, 0xc5, 0x12, 0xd7, 0x77, 0xf0, + 0x55, 0xde, 0x7d, 0xa0, 0x8d, 0x37, 0x24, 0xa7, 0xa4, 0xeb, 0x0f, 0x6b, + 0xde, 0xcb, 0x1a, 0x24, 0x3c, 0x07, 0x03, 0xda, 0x1c, 0x25, 0x57, 0x65, + 0x2e, 0xd2, 0xd9, 0x1a, 0x1d, 0x04, 0xf8, 0x26, 0xa6, 0xc1, 0x77, 0x4d, + 0xc4, 0x71, 0xd5, 0xed, 0x06, 0xb3, 0xfd, 0x93, 0xa7, 0xe0, 0x89, 0x4b, + 0x81, 0x9a, 0x9d, 0x1a, 0x19, 0x09, 0x29, 0x83, 0xea, 0x0c, 0xca, 0xa4, + 0x03, 0x21, 0xbb, 0xae, 0xd3, 0xb3, 0x5c, 0xd2, 0x07, 0xe4, 0x54, 0x30, + 0xb5, 0xc8, 0x2e, 0xf3, 0x2b, 0x46, 0xd9, 0x6d, 0x99, 0x0f, 0x8f, 0x68, + 0xa5, 0xac, 0x69, 0xf3, 0x3a, 0xc2, 0xa1, 0xd3, 0xe3, 0x79, 0x27, 0xb2, + 0x4a, 0x75, 0x5e, 0xed, 0xad, 0x1b, 0x74, 0x90, 0x66, 0x56, 0x7e, 0x53, + 0x41, 0xa8, 0x90, 0x3e, 0x6a, 0xed, 0xda, 0x86, 0x9f, 0x00, 0xe1, 0xa2, + 0x03, 0xab, 0x26, 0x92, 0x66, 0x4b, 0x86, 0x89, 0x29, 0xaa, 0xd8, 0x75, + 0x6d, 0x00, 0x70, 0x8b, 0x45, 0x47, 0x7c, 0x1e, 0xe8, 0x75, 0x80, 0x2b, + 0x1e, 0x45, 0x5e, 0xc6, 0x00, 0xeb, 0xe1, 0xa8, 0x49, 0x4d, 0x4b, 0x8b, + 0x9d, 0x61, 0x6f, 0x81, 0x81, 0x1e, 0x45, 0x4a, 0xdd, 0xa2, 0xbd, 0xb1, + 0x02, 0x0e, 0xbe, 0x32, 0x84, 0xe2, 0xe0, 0xf7, 0x92, 0x79, 0x30, 0x13, + 0xfd, 0x21, 0x13, 0x30, 0x34, 0x49, 0x4c, 0x71, 0xeb, 0x25, 0xcc, 0x6b, + 0xb9, 0x24, 0xfd, 0xc4, 0x68, 0xae, 0xe3, 0xd7, 0xe9, 0x65, 0x39, 0xb1, + 0xa1, 0x68, 0x70, 0xf3, 0xd5, 0x52, 0x65, 0x87, 0xd5, 0x25, 0xdc, 0xc8, + 0x3f, 0x8c, 0x7f, 0x15, 0x6f, 0x22, 0xc7, 0x7a, 0xd5, 0xb9, 0xbc, 0xb9, + 0x85, 0xbf, 0x71, 0x49, 0x4c, 0x9c, 0x48, 0x79, 0x27, 0x82, 0xab, 0x58, + 0x77, 0x5b, 0x58, 0x3f, 0xbe, 0x27, 0xe1, 0x28, 0x86, 0xc2, 0xea, 0xda, + 0x1c, 0x21, 0xdc, 0xa0, 0xbc, 0xc3, 0x81, 0x32, 0x0e, 0xe4, 0x94, 0xd6, + 0xb9, 0xe4, 0x64, 0x35, 0xf5, 0x9d, 0xaf, 0x69, 0x05, 0xae, 0x3d, 0x8c, + 0xae, 0xb3, 0x2b, 0xeb, 0x9e, 0x1d, 0x6d, 0x65, 0x3d, 0x34, 0xfd, 0xa7, + 0x22, 0x09, 0x7b, 0xde, 0xd2, 0xda, 0xd8, 0x00, 0xd7, 0xcc, 0xea, 0xb8, + 0xfc, 0xb1, 0x2f, 0x91, 0xf0, 0x56, 0xba, 0x07, 0x4d, 0xb3, 0x36, 0xec, + 0x9f, 0x4d, 0xbb, 0x9e, 0xd6, 0x06, 0x37, 0xb7, 0xb9, 0xe7, 0xfb, 0x82, + 0x4a, 0x7a, 0x9f, 0xab, 0xdd, 0x63, 0x37, 0xab, 0x30, 0x9c, 0x8c, 0xa6, + 0x82, 0xd3, 0xad, 0x3b, 0x5a, 0x37, 0x49, 0x8d, 0x17, 0x4a, 0xda, 0x18, + 0xf0, 0x5a, 0xed, 0x24, 0x41, 0x5c, 0xa6, 0x37, 0xd5, 0x40, 0xcc, 0x3a, + 0xea, 0x76, 0x58, 0xab, 0x29, 0x92, 0x77, 0x56, 0xd2, 0x40, 0x71, 0x33, + 0xa3, 0xa5, 0xa5, 0x3e, 0x2f, 0x54, 0xeb, 0x98, 0x79, 0x56, 0x62, 0xe4, + 0xe4, 0x36, 0xf7, 0x53, 0xa1, 0x0f, 0x00, 0x87, 0x08, 0x96, 0xb8, 0x6d, + 0x82, 0x92, 0x9c, 0x3f, 0xad, 0xb8, 0x58, 0xf8, 0x3d, 0x6a, 0xca, 0xf1, + 0xd9, 0xe9, 0xd4, 0x5a, 0xd7, 0x86, 0x81, 0x00, 0x17, 0x0d, 0x63, 0xe6, + 0x16, 0x58, 0x7c, 0x37, 0x45, 0xab, 0xf5, 0xaf, 0x2e, 0xfc, 0xcc, 0xba, + 0xec, 0xb5, 0xac, 0x91, 0x58, 0xdb, 0x6d, 0x44, 0x96, 0xbd, 0xb3, 0xaf, + 0xd2, 0xee, 0xd3, 0xca, 0xc6, 0x63, 0x83, 0xac, 0x81, 0xa8, 0x09, 0x29, + 0xb7, 0x46, 0x30, 0x70, 0xdc, 0xee, 0x55, 0xca, 0x98, 0x19, 0xc2, 0x0d, + 0x4e, 0x80, 0x00, 0xec, 0x8a, 0x1e, 0x4a, 0x4a, 0x7a, 0x0f, 0xaa, 0xf9, + 0xbf, 0x64, 0xea, 0x6c, 0x61, 0x31, 0x5d, 0xff, 0x00, 0xa3, 0x77, 0xc4, + 0xfd, 0x1f, 0xc5, 0x77, 0xab, 0xca, 0x2a, 0xb4, 0xb6, 0xc6, 0xbc, 0x18, + 0x20, 0x82, 0x0f, 0x98, 0x5e, 0x9f, 0x83, 0x92, 0x32, 0xf0, 0xe9, 0xc8, + 0x1f, 0xe1, 0x18, 0x09, 0xf8, 0xf7, 0xfc, 0x52, 0x52, 0x72, 0x99, 0x39, + 0x2a, 0x32, 0x92, 0x94, 0x92, 0x69, 0x4e, 0x92, 0x91, 0xa7, 0x4c, 0x9d, + 0x25, 0x2e, 0x14, 0xc0, 0x51, 0x09, 0xae, 0xb0, 0x53, 0x4b, 0xed, 0x3f, + 0x9a, 0x09, 0xf9, 0xa4, 0xa7, 0x07, 0xab, 0x5d, 0xea, 0xe6, 0x39, 0xa3, + 0x51, 0x58, 0xdb, 0xfd, 0xeb, 0x17, 0x29, 0xf1, 0x3e, 0x4a, 0xf3, 0xdc, + 0xf7, 0x17, 0xd8, 0x75, 0x73, 0x8c, 0x92, 0xb2, 0x3a, 0x85, 0xa4, 0x08, + 0x49, 0x4e, 0x76, 0x4d, 0xf2, 0x4a, 0xa0, 0xfb, 0x14, 0xf2, 0x6c, 0xd4, + 0xaa, 0x6e, 0x7c, 0xa4, 0xa6, 0xef, 0x4e, 0xe9, 0x79, 0xbd, 0x63, 0x25, + 0xd8, 0xb8, 0x6d, 0x0e, 0xb1, 0xac, 0x75, 0x87, 0x71, 0x81, 0x0d, 0xf3, + 0xf3, 0x3a, 0x05, 0x57, 0xa8, 0xf4, 0xfc, 0xee, 0x9c, 0xe6, 0xd3, 0x9b, + 0x43, 0xa8, 0x71, 0x12, 0xd0, 0xf1, 0xf4, 0x84, 0xf6, 0x8e, 0x57, 0xa4, + 0xfd, 0x4a, 0xe8, 0xdf, 0xb3, 0x7a, 0x60, 0xc8, 0xb9, 0xb1, 0x95, 0x99, + 0x0f, 0x7c, 0xf2, 0xd6, 0x7e, 0x63, 0x7f, 0x8a, 0xca, 0xff, 0x00, 0x19, + 0x78, 0x85, 0xd4, 0x61, 0x65, 0x81, 0xa3, 0x5c, 0xfa, 0x9c, 0x7f, 0xac, + 0x37, 0x37, 0xf2, 0x14, 0x94, 0xe0, 0xf4, 0xf6, 0x1f, 0xd9, 0x15, 0x3b, + 0xf9, 0x67, 0x5f, 0xeb, 0x7f, 0xb9, 0x0c, 0x87, 0x36, 0xdd, 0xfc, 0xf9, + 0xf8, 0xa3, 0xf4, 0xb2, 0x3f, 0x61, 0x6e, 0x70, 0x91, 0x53, 0xc8, 0x23, + 0xe7, 0xfe, 0xd4, 0x4f, 0x52, 0xb7, 0x53, 0xfd, 0x5d, 0x48, 0xe3, 0x8d, + 0x52, 0x53, 0x5f, 0x31, 0xc0, 0x51, 0x90, 0x41, 0xd6, 0xc7, 0xe9, 0xf0, + 0x68, 0x03, 0xf2, 0xaa, 0x98, 0x23, 0xe9, 0xf6, 0x80, 0xa5, 0xab, 0xba, + 0x7d, 0x27, 0xbb, 0xe5, 0xc4, 0xff, 0x00, 0x58, 0x95, 0x2c, 0x26, 0x0d, + 0xfb, 0x7b, 0x12, 0x3e, 0xe4, 0x94, 0xde, 0xbf, 0x46, 0x4c, 0x70, 0x78, + 0xf8, 0xa6, 0x73, 0x43, 0xa9, 0xdc, 0x07, 0x02, 0x14, 0xaf, 0x70, 0xf4, + 0x9c, 0x79, 0x3d, 0x82, 0x13, 0xde, 0x5b, 0x8d, 0x58, 0x7f, 0x24, 0x9d, + 0x3e, 0x26, 0x12, 0x53, 0x9d, 0xa8, 0x1b, 0x47, 0x8a, 0xd0, 0xc2, 0xd1, + 0xbb, 0x7b, 0x90, 0x40, 0x2a, 0x95, 0x4d, 0x2e, 0x07, 0x4d, 0x77, 0x42, + 0xb7, 0x56, 0xe6, 0x3d, 0x8e, 0x71, 0x0c, 0x11, 0x26, 0x7b, 0x4a, 0x4a, + 0x6b, 0x3c, 0xc6, 0xe6, 0xf7, 0x05, 0x35, 0x24, 0xbc, 0x47, 0x1e, 0x6a, + 0x77, 0x96, 0x07, 0x19, 0x24, 0x97, 0x46, 0xa1, 0xa6, 0x39, 0x8e, 0xe9, + 0x0d, 0x00, 0x6b, 0x58, 0xe3, 0xa9, 0x3a, 0xe9, 0xf9, 0x25, 0x25, 0x21, + 0x0d, 0xfa, 0x0e, 0x32, 0x24, 0x1f, 0xc1, 0x5c, 0xb7, 0x41, 0x53, 0x8e, + 0xb0, 0x1c, 0x00, 0x40, 0x7b, 0xda, 0x18, 0x03, 0x8b, 0x1a, 0x5a, 0x34, + 0x04, 0xeb, 0x3f, 0x7a, 0xb1, 0x95, 0x66, 0x31, 0xaa, 0xb6, 0xb2, 0xe6, + 0x17, 0xce, 0xa3, 0xb8, 0x91, 0xf1, 0x49, 0x4c, 0x36, 0xee, 0x6b, 0x0c, + 0xea, 0x75, 0x80, 0x87, 0x6c, 0x36, 0x7b, 0xed, 0x20, 0xfd, 0xc5, 0x18, + 0xdb, 0x53, 0x43, 0x5a, 0xeb, 0x5b, 0x2d, 0x11, 0xc8, 0x1f, 0x3e, 0x55, + 0x5b, 0x9f, 0x48, 0xdd, 0xb6, 0xc0, 0xe9, 0x33, 0xa6, 0xa9, 0x29, 0xad, + 0x68, 0x1b, 0xc8, 0x3e, 0x2b, 0xa4, 0xfa, 0xa8, 0xd3, 0x46, 0x33, 0xaf, + 0xdb, 0x3e, 0xb5, 0xae, 0xd2, 0x3e, 0x93, 0x2b, 0x68, 0x6f, 0xe5, 0x2b, + 0x9c, 0xba, 0x1e, 0x5a, 0xe6, 0x7b, 0x83, 0xa2, 0x00, 0xd4, 0xea, 0xbb, + 0x1c, 0x5c, 0x77, 0xe1, 0x74, 0xec, 0x19, 0xf6, 0xfa, 0x6d, 0x9b, 0x87, + 0x7f, 0x7c, 0x97, 0x4f, 0xc3, 0x72, 0x4a, 0x6f, 0xdf, 0x96, 0x5a, 0xe7, + 0x3b, 0xdb, 0xb4, 0x70, 0x49, 0x12, 0x3e, 0x45, 0x65, 0x75, 0x31, 0xe9, + 0x5f, 0x8d, 0x9a, 0xd7, 0x87, 0x59, 0x64, 0x83, 0xa4, 0x12, 0xd1, 0xf9, + 0xa7, 0xc5, 0x4b, 0x36, 0xec, 0x8a, 0x1e, 0x45, 0x94, 0x8b, 0x58, 0x4e, + 0x84, 0x3b, 0x9f, 0xca, 0xa9, 0xf5, 0x5c, 0x9c, 0x6a, 0x8e, 0x1e, 0x4d, + 0xde, 0xda, 0xd9, 0xbc, 0x81, 0xc9, 0x2e, 0x90, 0x20, 0x0f, 0x92, 0x4a, + 0x73, 0x3e, 0xb1, 0x8c, 0x86, 0x75, 0x52, 0xd3, 0x06, 0xb6, 0x86, 0xd9, + 0x50, 0xda, 0x00, 0xdb, 0x60, 0x07, 0x5f, 0x1d, 0x44, 0x2a, 0xdd, 0x63, + 0x0c, 0x62, 0x65, 0xb3, 0x22, 0x96, 0x6c, 0xc6, 0xce, 0xad, 0xb9, 0x34, + 0x01, 0xc3, 0x77, 0xfd, 0x36, 0x0f, 0xea, 0xba, 0x42, 0xb1, 0xd4, 0xba, + 0xa5, 0x7d, 0x53, 0x22, 0x9b, 0x1b, 0x5f, 0xa7, 0xb1, 0x86, 0xb9, 0x99, + 0x25, 0xa0, 0xee, 0x13, 0xf7, 0x95, 0xbf, 0xfb, 0x3b, 0xf6, 0xcf, 0xd4, + 0xb6, 0x1a, 0x86, 0xec, 0xae, 0x9a, 0xfb, 0x3d, 0x38, 0xe4, 0xb4, 0x1d, + 0xce, 0x6f, 0xcd, 0xa7, 0xf0, 0x49, 0x4f, 0x27, 0x55, 0x88, 0xcd, 0xb2, + 0x74, 0x54, 0x2b, 0x7c, 0x18, 0x2a, 0xdd, 0x7a, 0x94, 0x94, 0xd9, 0x61, + 0xee, 0xbb, 0xef, 0xa9, 0xd9, 0x62, 0xdc, 0x07, 0xe3, 0x93, 0xee, 0xa1, + 0xd2, 0x07, 0xf2, 0x5f, 0xaf, 0xe5, 0x95, 0xe7, 0xe2, 0x02, 0xe9, 0x3e, + 0xa8, 0x65, 0xfa, 0x1d, 0x49, 0x8c, 0x27, 0xdb, 0x90, 0xd3, 0x59, 0xf8, + 0xfd, 0x26, 0xfe, 0x44, 0x94, 0xf7, 0x4e, 0x2a, 0x1b, 0x91, 0x1c, 0x10, + 0xca, 0x4a, 0x58, 0x94, 0xb7, 0x14, 0x94, 0x7b, 0xa4, 0xa6, 0x69, 0x04, + 0x93, 0x84, 0x94, 0xc8, 0x2c, 0xfe, 0xb1, 0x71, 0xda, 0xcc, 0x66, 0xf2, + 0xff, 0x00, 0x73, 0xbe, 0x01, 0x68, 0x05, 0x85, 0x9f, 0x78, 0x76, 0x5d, + 0xa7, 0xc0, 0xed, 0x1f, 0x06, 0xa4, 0xa6, 0x96, 0x41, 0x8f, 0x68, 0xd6, + 0x07, 0x01, 0x63, 0xf5, 0x0c, 0x6b, 0xde, 0xd2, 0xe0, 0xcf, 0x86, 0xa1, + 0x6d, 0xe8, 0xe7, 0x78, 0x4f, 0x74, 0xef, 0xa4, 0x11, 0x25, 0x25, 0x3e, + 0x77, 0x92, 0x6c, 0xad, 0xe5, 0x96, 0x0d, 0xae, 0xf0, 0x2b, 0x63, 0xea, + 0x7f, 0x42, 0x3d, 0x5b, 0xa9, 0x0b, 0x2e, 0x6f, 0xea, 0x78, 0xb0, 0xfb, + 0xa7, 0x87, 0x1f, 0xcc, 0x67, 0xcf, 0xbf, 0x92, 0xd5, 0xcf, 0xe9, 0x34, + 0x64, 0x88, 0x7b, 0x41, 0xf0, 0x3d, 0xc7, 0xc0, 0xad, 0xbf, 0xaa, 0x1f, + 0x62, 0xc0, 0xc1, 0x76, 0x11, 0xb0, 0x36, 0xf7, 0x58, 0xe7, 0x9d, 0xda, + 0x17, 0x4c, 0x01, 0xaf, 0xc0, 0x24, 0xa7, 0xa4, 0x59, 0xbf, 0x58, 0x7a, + 0x68, 0xea, 0x9d, 0x26, 0xfc, 0x60, 0x26, 0xc0, 0x37, 0xd5, 0xfd, 0x76, + 0x6a, 0x3e, 0xfe, 0x16, 0x92, 0x74, 0x94, 0xf9, 0x7e, 0x03, 0x5b, 0x5f, + 0x4f, 0xcb, 0xc4, 0x70, 0x87, 0x02, 0x2c, 0x00, 0xf7, 0x1a, 0x03, 0xf9, + 0x16, 0x65, 0xd9, 0x21, 0xdb, 0xeb, 0x06, 0x03, 0x01, 0x3f, 0x3e, 0x3f, + 0x8a, 0xec, 0xfa, 0xff, 0x00, 0x45, 0x15, 0x5d, 0x65, 0xf8, 0xe2, 0x1e, + 0xe9, 0x7b, 0x47, 0x62, 0x1d, 0xf4, 0x9a, 0xb8, 0xc7, 0xe1, 0x57, 0x5e, + 0x25, 0x85, 0xcf, 0x8b, 0x7d, 0x52, 0xc3, 0x1a, 0xe8, 0x06, 0xe0, 0x92, + 0x9b, 0x0d, 0xa9, 0xa3, 0x13, 0x1c, 0x6b, 0x3b, 0x04, 0x8f, 0x8e, 0xa9, + 0xf0, 0xbd, 0xd9, 0x20, 0x68, 0x00, 0x28, 0xf7, 0x80, 0xca, 0xd8, 0xc1, + 0xcd, 0x61, 0xad, 0x3f, 0xe6, 0x84, 0x1a, 0x0b, 0x06, 0x48, 0x6b, 0x39, + 0x91, 0xc2, 0x4a, 0x6d, 0x39, 0xbf, 0xa2, 0xfa, 0x6d, 0x06, 0x1b, 0x2d, + 0x1f, 0x4b, 0x9e, 0xfa, 0x85, 0x52, 0xcb, 0xb1, 0x5b, 0xb5, 0xa6, 0xcd, + 0xef, 0x00, 0x9d, 0xac, 0x3b, 0xcc, 0xf3, 0xf9, 0xba, 0x7e, 0x29, 0xf2, + 0xb0, 0x6a, 0x7b, 0xcb, 0xbb, 0x97, 0x16, 0x98, 0xee, 0x3c, 0xd3, 0xb6, + 0xba, 0xeb, 0x60, 0x0d, 0x68, 0x1e, 0xc3, 0xaf, 0xc9, 0x25, 0x34, 0x8b, + 0xc9, 0x2e, 0x8a, 0x9d, 0x23, 0xb9, 0x20, 0x77, 0xf9, 0xa9, 0x54, 0x6c, + 0x2d, 0xde, 0xda, 0xda, 0x0b, 0x35, 0xdc, 0xe2, 0x4f, 0xe4, 0x84, 0x76, + 0x9d, 0xd6, 0x99, 0x04, 0x87, 0x35, 0x3b, 0x03, 0x45, 0x0e, 0x6c, 0x6a, + 0x47, 0xfb, 0x12, 0x53, 0x0b, 0xeb, 0xb0, 0x86, 0xd8, 0x6d, 0x25, 0xcf, + 0x03, 0x80, 0x07, 0x3f, 0x24, 0xff, 0x00, 0x64, 0xa8, 0x91, 0xbc, 0x97, + 0x38, 0x68, 0x77, 0x12, 0x64, 0xc7, 0xc5, 0x10, 0x02, 0xea, 0xd8, 0x4b, + 0x75, 0x02, 0x00, 0xf8, 0x26, 0xb1, 0xcf, 0xd8, 0x0f, 0x7d, 0xd1, 0x09, + 0x29, 0x8d, 0x83, 0x1e, 0xaa, 0x6a, 0x73, 0x58, 0x20, 0x3f, 0x51, 0x02, + 0x20, 0xa6, 0x25, 0x96, 0x0d, 0x5a, 0x24, 0xbe, 0x34, 0x00, 0x0d, 0x74, + 0x51, 0x7b, 0x43, 0xb1, 0x4f, 0x3a, 0x6a, 0x7c, 0xbb, 0x2b, 0x36, 0x51, + 0x5b, 0x6a, 0x2e, 0x61, 0xd7, 0xda, 0xe9, 0x3e, 0x23, 0x69, 0x49, 0x48, + 0x03, 0x2b, 0xd9, 0x21, 0xa0, 0x3a, 0x44, 0xe9, 0xe0, 0x9d, 0xce, 0x22, + 0xa0, 0x0b, 0x61, 0xb0, 0x42, 0x29, 0xd8, 0xfd, 0x2b, 0x3a, 0x40, 0x80, + 0xe1, 0x07, 0xf2, 0x94, 0x0b, 0xda, 0xf7, 0x33, 0x53, 0xa6, 0x9f, 0x72, + 0x4a, 0x47, 0x88, 0xfc, 0x4c, 0x2c, 0xd6, 0xdf, 0x73, 0x4f, 0xa2, 0xf0, + 0x43, 0x8b, 0x67, 0xda, 0x79, 0xdd, 0x01, 0x74, 0x7d, 0x47, 0xa9, 0x33, + 0x2b, 0x00, 0x8c, 0x07, 0xee, 0x16, 0x8d, 0x6c, 0x3a, 0x18, 0xe3, 0x4f, + 0x8a, 0xe6, 0x5e, 0x0b, 0xeb, 0x68, 0xd0, 0x89, 0x30, 0x81, 0x45, 0xf9, + 0x78, 0xaf, 0x2c, 0xa4, 0xcd, 0x64, 0xce, 0xc3, 0xc7, 0xc9, 0x25, 0x3d, + 0x17, 0x57, 0x37, 0x74, 0xce, 0x9d, 0x86, 0xea, 0xde, 0x66, 0xea, 0xda, + 0xd2, 0xd3, 0xaf, 0xb8, 0x37, 0xb4, 0xac, 0x5c, 0xd7, 0xbf, 0x2b, 0xa7, + 0xe3, 0xb4, 0xc9, 0xf4, 0x43, 0xb6, 0xcf, 0xee, 0x92, 0x0a, 0xea, 0x3e, + 0xbb, 0x53, 0x14, 0xf4, 0xf6, 0x44, 0x96, 0x03, 0x20, 0x7f, 0x54, 0x05, + 0xcd, 0x33, 0xdb, 0x8e, 0xe1, 0x1f, 0x42, 0x67, 0xe0, 0x44, 0xa4, 0xa7, + 0x3f, 0x1c, 0x86, 0xed, 0x27, 0x96, 0x91, 0xf8, 0xe8, 0xbd, 0x0b, 0xfc, + 0x5f, 0x58, 0x5d, 0x8b, 0x9b, 0x57, 0x66, 0x5a, 0xd7, 0x0f, 0xed, 0x36, + 0x0f, 0xfd, 0x4a, 0xf3, 0xfb, 0x03, 0x01, 0x21, 0x9a, 0xee, 0x20, 0x01, + 0xf3, 0x5e, 0xab, 0xf5, 0x4f, 0xa4, 0x3b, 0xa4, 0xf4, 0x8a, 0xeb, 0xb4, + 0x46, 0x4d, 0xc7, 0xd5, 0xbf, 0xc9, 0xce, 0xe1, 0xbf, 0xd9, 0x1a, 0x24, + 0xa7, 0x80, 0xfa, 0xe1, 0xd1, 0x8f, 0x49, 0xea, 0xcf, 0x35, 0x36, 0x31, + 0xb2, 0x26, 0xda, 0x7c, 0x04, 0xfd, 0x26, 0xfc, 0x8a, 0xcb, 0xa2, 0xce, + 0x17, 0xa5, 0x7d, 0x79, 0xe9, 0xcd, 0xcc, 0xe8, 0x56, 0x5c, 0x04, 0xdb, + 0x88, 0x45, 0xac, 0x3f, 0xc9, 0x98, 0x78, 0xfb, 0xb5, 0xf9, 0x2f, 0x31, + 0xa6, 0xbb, 0x1c, 0xf8, 0x68, 0x94, 0x94, 0xdf, 0x61, 0xdc, 0xaf, 0x62, + 0x3d, 0xf5, 0x39, 0xb6, 0xd6, 0x7d, 0xf5, 0x90, 0xf6, 0xfc, 0x5b, 0xaa, + 0x1e, 0x1e, 0x11, 0x8f, 0x79, 0xec, 0xad, 0xb3, 0x11, 0xcc, 0x74, 0xb7, + 0xdc, 0x3b, 0xf8, 0xa4, 0xa7, 0xd1, 0xb1, 0x72, 0x19, 0x95, 0x8b, 0x56, + 0x43, 0x3e, 0x8d, 0xac, 0x0e, 0x1f, 0x30, 0xa6, 0x42, 0xc2, 0xfa, 0xa5, + 0x96, 0x5d, 0x8d, 0x66, 0x13, 0x8e, 0xb4, 0x9d, 0xcc, 0x07, 0xf7, 0x5d, + 0xc8, 0xf9, 0x15, 0xbe, 0x42, 0x4a, 0x47, 0x09, 0xa1, 0x4c, 0xa6, 0x49, + 0x4a, 0x84, 0xe1, 0x32, 0x90, 0x49, 0x4a, 0x73, 0xb6, 0x31, 0xce, 0xfd, + 0xd0, 0x4f, 0xdc, 0xb9, 0x3c, 0x8b, 0x5c, 0x4c, 0x9f, 0xce, 0xd5, 0xcb, + 0xad, 0x73, 0x77, 0x34, 0xb4, 0xf7, 0x04, 0x7d, 0xeb, 0x81, 0xbb, 0x2d, + 0xed, 0xba, 0xca, 0x1f, 0xf4, 0xab, 0x3b, 0x1c, 0x3b, 0xcb, 0x4c, 0x14, + 0x94, 0xe8, 0xb3, 0x21, 0xa0, 0x80, 0x79, 0x3c, 0x9f, 0x04, 0x51, 0x7e, + 0xed, 0x01, 0x9d, 0x56, 0x37, 0xa9, 0xa8, 0x3d, 0x8a, 0xb1, 0x4d, 0xc7, + 0x77, 0x84, 0x68, 0x92, 0x9d, 0x3d, 0xad, 0x77, 0x3c, 0xf2, 0x55, 0x7b, + 0x30, 0xda, 0xe3, 0x00, 0xcc, 0xf6, 0xf8, 0xa9, 0x57, 0x60, 0x31, 0xa8, + 0x8e, 0xe8, 0xac, 0x7b, 0x5d, 0xfc, 0x12, 0x53, 0x3c, 0x2c, 0xcc, 0xfc, + 0x3f, 0x6e, 0xff, 0x00, 0x5a, 0xa1, 0xa7, 0xa6, 0xfd, 0x63, 0xe0, 0xee, + 0x56, 0x95, 0x7d, 0x6d, 0xa6, 0x3d, 0x5a, 0x1e, 0xdf, 0x36, 0xc3, 0x87, + 0xf0, 0x59, 0x86, 0xc0, 0x34, 0x01, 0x31, 0xb4, 0x9e, 0x07, 0xc1, 0x25, + 0x3a, 0x79, 0x79, 0xd8, 0x77, 0xd3, 0xa0, 0x76, 0xf6, 0xea, 0xd6, 0x96, + 0x9e, 0xfa, 0x10, 0xb8, 0xdc, 0xde, 0x85, 0x6b, 0x6d, 0x7f, 0xd9, 0x6a, + 0x36, 0xb5, 0xf6, 0x3a, 0xd9, 0xe0, 0x0d, 0xdc, 0x37, 0xe4, 0xb7, 0xc5, + 0x87, 0xb0, 0x92, 0xa6, 0xcb, 0x1c, 0x07, 0xbd, 0x25, 0x3c, 0xbd, 0xbd, + 0x33, 0xa8, 0x87, 0x5c, 0xf3, 0x49, 0xf7, 0x10, 0xe0, 0x4e, 0xbc, 0x7c, + 0x10, 0xb1, 0xba, 0x7e, 0x75, 0x99, 0x6d, 0xf4, 0xe8, 0x71, 0xf1, 0x71, + 0x10, 0x07, 0xcc, 0xae, 0xd2, 0xb0, 0xc7, 0xeb, 0xb4, 0x1f, 0x88, 0x4b, + 0x2a, 0xcb, 0x2a, 0x60, 0xf4, 0xc6, 0x9d, 0xca, 0x4a, 0x79, 0xeb, 0x3a, + 0x06, 0x77, 0xa6, 0xe7, 0xc3, 0x5c, 0xe3, 0x24, 0x34, 0x3b, 0xbf, 0xdc, + 0xb3, 0xee, 0xa2, 0xda, 0x2c, 0xdb, 0x75, 0x46, 0xb2, 0x1b, 0xb4, 0x69, + 0xa1, 0xf9, 0xae, 0xaf, 0x1b, 0x35, 0x96, 0xc8, 0x71, 0xd4, 0x72, 0x8f, + 0x6d, 0x78, 0xd6, 0xb2, 0x1f, 0xc9, 0xe0, 0x8e, 0x52, 0x53, 0xe7, 0xf6, + 0xb9, 0xc1, 0xad, 0x3c, 0x8d, 0x0c, 0xf8, 0x41, 0xd5, 0x4c, 0x07, 0x7a, + 0xd6, 0x0f, 0x3f, 0xcb, 0xfe, 0xd5, 0xd6, 0x66, 0x74, 0xfe, 0x9e, 0xf6, + 0x6d, 0x75, 0x6c, 0x79, 0x3e, 0x03, 0x63, 0xbf, 0xe8, 0xae, 0x7f, 0xaa, + 0x62, 0xb7, 0x00, 0xfa, 0xfb, 0x1e, 0xfa, 0x1f, 0xa6, 0xf6, 0x89, 0xda, + 0xe9, 0x90, 0x1d, 0x25, 0x25, 0x21, 0xc3, 0xa9, 0xcd, 0xa6, 0x1c, 0x40, + 0x3e, 0xa1, 0x69, 0x9f, 0x18, 0x42, 0xb2, 0xa2, 0x29, 0xe6, 0x4b, 0xb7, + 0x1f, 0x29, 0x6a, 0x76, 0x67, 0x96, 0xcf, 0xa3, 0x8a, 0xf7, 0x0d, 0xdb, + 0x86, 0xe2, 0xd6, 0x88, 0x32, 0x35, 0xfa, 0x5e, 0x2a, 0x57, 0xdb, 0xd4, + 0x5c, 0xd2, 0x0d, 0x75, 0x31, 0x8d, 0xf7, 0x6d, 0x3b, 0xdd, 0xcf, 0x9c, + 0x84, 0x94, 0x89, 0xcd, 0x27, 0x1d, 0xc0, 0x7e, 0x70, 0x68, 0x1a, 0x1e, + 0xe6, 0x0a, 0xd4, 0x66, 0x31, 0xbf, 0xa7, 0xd8, 0x47, 0xd2, 0x14, 0xcc, + 0x92, 0x34, 0xd2, 0x34, 0xf8, 0x42, 0xc9, 0xa5, 0xd9, 0xd6, 0x52, 0x48, + 0x6d, 0x40, 0x0d, 0x35, 0x97, 0x1e, 0x67, 0x89, 0x43, 0xaa, 0x9c, 0xe7, + 0x65, 0x35, 0x96, 0x64, 0x3a, 0xb6, 0xb8, 0x38, 0x43, 0x74, 0x68, 0x03, + 0xc0, 0x7c, 0xd2, 0x53, 0xa8, 0xec, 0x5a, 0xa9, 0x65, 0x56, 0x3f, 0x43, + 0x13, 0xf8, 0xaa, 0x36, 0x96, 0x7a, 0x46, 0x67, 0x70, 0x3a, 0x48, 0xed, + 0x28, 0xb6, 0x56, 0x5c, 0xc0, 0xca, 0xdf, 0x73, 0x83, 0x38, 0x2e, 0x22, + 0x3f, 0x22, 0x9d, 0x1d, 0x07, 0xaa, 0xe6, 0xd4, 0x6d, 0xa6, 0xc0, 0xca, + 0xfb, 0x3a, 0xd3, 0xa1, 0xf1, 0x8d, 0x09, 0x49, 0x49, 0xfe, 0xae, 0xf4, + 0x1f, 0xda, 0xcf, 0x75, 0x96, 0x97, 0x57, 0x89, 0x4c, 0x07, 0x16, 0xc6, + 0xe7, 0xbc, 0xeb, 0xb5, 0xa4, 0xf8, 0x0e, 0x4a, 0xd0, 0xc8, 0xfa, 0x9b, + 0x43, 0xf2, 0xfd, 0x3c, 0x5b, 0x8d, 0x7e, 0xe1, 0x2d, 0x77, 0xbe, 0x01, + 0xe4, 0xce, 0x8a, 0xcf, 0x41, 0x6e, 0x4f, 0x49, 0xe9, 0xcf, 0xc3, 0xb9, + 0xd5, 0xbe, 0xc7, 0x3d, 0xcf, 0xf5, 0x1b, 0x31, 0x0e, 0xf2, 0x80, 0xae, + 0x55, 0x90, 0x2b, 0x71, 0x78, 0x3b, 0x9e, 0x67, 0xdc, 0x47, 0x8f, 0x82, + 0x4a, 0x61, 0xf5, 0x8f, 0x0e, 0xbc, 0x9c, 0x8a, 0x37, 0x32, 0xcb, 0xab, + 0x0d, 0xd8, 0x0d, 0x6e, 0x6b, 0x4b, 0x7c, 0x5f, 0xee, 0x99, 0xd3, 0xb2, + 0xe4, 0x2e, 0xa7, 0xd2, 0xb7, 0x23, 0x1e, 0x77, 0xb1, 0xa4, 0xb7, 0x70, + 0xef, 0xb7, 0x49, 0xfc, 0x17, 0x61, 0x6e, 0x6b, 0x0c, 0xd6, 0x39, 0x76, + 0xae, 0x21, 0x67, 0x7e, 0xce, 0xc1, 0x0f, 0x75, 0xae, 0x0f, 0x7b, 0x9e, + 0x49, 0x71, 0x26, 0x39, 0xf8, 0x24, 0xa7, 0x0f, 0xea, 0x47, 0x4d, 0x39, + 0x5f, 0x58, 0xab, 0x16, 0xb4, 0x3e, 0xbc, 0x30, 0xeb, 0x9f, 0x3a, 0x8d, + 0xcd, 0xf6, 0xb3, 0xee, 0x73, 0xa5, 0x7a, 0xa9, 0x20, 0x09, 0x3a, 0x05, + 0xc3, 0x62, 0xdb, 0x4f, 0x4d, 0xbd, 0xf7, 0xe1, 0x30, 0x53, 0x6b, 0xc6, + 0xd7, 0x3b, 0x99, 0x1c, 0xeb, 0x28, 0x79, 0x5d, 0x4b, 0x23, 0x28, 0x93, + 0x75, 0x8e, 0xb0, 0x78, 0x13, 0x00, 0x7c, 0x00, 0xd1, 0x25, 0x3d, 0x0f, + 0xd6, 0x0e, 0xb1, 0x86, 0xcc, 0x4b, 0xb0, 0x99, 0xfa, 0x7b, 0x6f, 0x63, + 0xab, 0x73, 0x58, 0x44, 0x34, 0x38, 0x44, 0xb8, 0xae, 0x36, 0x8c, 0x16, + 0x34, 0xfd, 0x1d, 0xa3, 0xc0, 0x2b, 0x2c, 0xb6, 0x93, 0x20, 0x73, 0xe0, + 0x9a, 0xcb, 0xe2, 0x23, 0xe6, 0x92, 0x99, 0x86, 0x35, 0x81, 0x44, 0xd8, + 0xd1, 0x11, 0xc0, 0xfc, 0x15, 0x67, 0xde, 0xe9, 0x3e, 0x05, 0x01, 0xd7, + 0x1e, 0x7c, 0x12, 0x53, 0xd1, 0x74, 0x1c, 0xca, 0xf1, 0xfa, 0x95, 0x6f, + 0x26, 0x19, 0x77, 0xe8, 0xdf, 0xe4, 0x5d, 0xc7, 0xe2, 0xbb, 0x22, 0xbc, + 0xb2, 0xbc, 0x93, 0xbc, 0x00, 0x75, 0xdd, 0x01, 0x7a, 0x9b, 0x41, 0xd8, + 0x27, 0x98, 0x12, 0x92, 0x98, 0x95, 0x14, 0x9c, 0x60, 0xa8, 0xee, 0x49, + 0x4c, 0xd3, 0x84, 0xa3, 0xc1, 0x28, 0x29, 0x29, 0x90, 0x5c, 0x5f, 0xd7, + 0x4e, 0x98, 0xfc, 0x7c, 0x96, 0xf5, 0x5a, 0x1a, 0x7d, 0x2b, 0x21, 0xb9, + 0x11, 0xc3, 0x5e, 0x34, 0x0e, 0x3f, 0x15, 0xda, 0x04, 0x9e, 0xc6, 0x58, + 0xc2, 0xc7, 0xb4, 0x39, 0x8e, 0x10, 0xe6, 0xb8, 0x48, 0x20, 0xf6, 0x20, + 0xa4, 0xa7, 0xcb, 0x2a, 0xce, 0x0e, 0x20, 0x1d, 0x15, 0xca, 0xb2, 0x9a, + 0xe3, 0x06, 0x02, 0xe9, 0xfa, 0x87, 0xd4, 0x9e, 0x93, 0x92, 0x0b, 0xb1, + 0x41, 0xc3, 0xbb, 0xc5, 0x9e, 0xe6, 0x1f, 0x8b, 0x1c, 0x7f, 0x24, 0x2e, + 0x5b, 0xa9, 0x74, 0x0e, 0xaf, 0xd2, 0x66, 0xc7, 0xd7, 0xea, 0xd2, 0x3f, + 0xc3, 0xd5, 0x2e, 0x6f, 0xf6, 0x87, 0x21, 0x25, 0x37, 0x5b, 0x94, 0xd1, + 0xa4, 0xf6, 0x44, 0x66, 0x6b, 0x4c, 0x00, 0xb9, 0xc6, 0xe6, 0xbe, 0x22, + 0x51, 0x06, 0x7b, 0x9a, 0x04, 0x18, 0x49, 0x4f, 0x4c, 0xcc, 0x81, 0xdb, + 0x95, 0x31, 0x73, 0x9c, 0x17, 0x37, 0x5f, 0x52, 0x7c, 0xc9, 0x74, 0xf7, + 0xf8, 0x2b, 0xd8, 0xdd, 0x49, 0xa5, 0xc0, 0x4f, 0x3c, 0x04, 0x94, 0xec, + 0xb2, 0xd3, 0xe0, 0xa6, 0x2d, 0x00, 0x02, 0xf5, 0x5e, 0x8c, 0x86, 0xd8, + 0x76, 0xb2, 0x0b, 0xbb, 0xa9, 0xdc, 0x4c, 0xc1, 0x3a, 0x69, 0x29, 0x29, + 0xba, 0xdc, 0x9a, 0xea, 0x60, 0x2f, 0x70, 0x12, 0x7d, 0xb2, 0xa6, 0xf7, + 0x7a, 0xac, 0x86, 0xc1, 0xdd, 0xdf, 0x95, 0x99, 0xd4, 0x71, 0x2c, 0xc9, + 0xc7, 0xa9, 0xd5, 0x3a, 0x36, 0x69, 0x03, 0xba, 0xcf, 0xa3, 0xa9, 0x1e, + 0x9d, 0x68, 0x66, 0x46, 0xf0, 0xdf, 0x1e, 0xc9, 0x29, 0x2f, 0x52, 0xc6, + 0xea, 0x78, 0x4e, 0xfb, 0x4e, 0x23, 0x7d, 0x46, 0x72, 0xfa, 0xc7, 0x3a, + 0x78, 0x2a, 0xf8, 0xff, 0x00, 0x58, 0xa9, 0xba, 0x5a, 0xe2, 0x6a, 0xb4, + 0x68, 0xea, 0xdd, 0xa7, 0xe0, 0x56, 0xf5, 0x5d, 0x56, 0xbb, 0x6b, 0xde, + 0x08, 0x70, 0x3c, 0x01, 0xd9, 0x66, 0x75, 0x86, 0x74, 0xab, 0x9b, 0xbb, + 0x22, 0xa6, 0x39, 0xfd, 0x9e, 0xdd, 0x1d, 0x3f, 0x10, 0x92, 0x9c, 0xab, + 0x3a, 0x8b, 0xec, 0xb8, 0xbb, 0xd4, 0x3f, 0x4a, 0x47, 0xe4, 0x5a, 0x34, + 0xe7, 0xd6, 0xea, 0xcd, 0x77, 0x00, 0xe6, 0x3c, 0x43, 0x9a, 0x78, 0x20, + 0xac, 0x27, 0xf4, 0xb7, 0x6e, 0xdd, 0x8a, 0xf2, 0xe6, 0x9d, 0x76, 0xbb, + 0x9f, 0xbd, 0x05, 0xee, 0xc8, 0xa6, 0x45, 0xac, 0x76, 0xdf, 0x10, 0x34, + 0x49, 0x4e, 0xe5, 0x98, 0xd4, 0x09, 0x76, 0x39, 0x96, 0x1d, 0x36, 0x77, + 0x6c, 0x14, 0x1c, 0x90, 0x03, 0x08, 0x23, 0x42, 0x27, 0x4f, 0x05, 0x91, + 0x56, 0x53, 0xdc, 0xf1, 0x0f, 0x81, 0x3d, 0xbb, 0x2d, 0xfe, 0x95, 0xd4, + 0x6b, 0xae, 0xbb, 0x6c, 0x73, 0x59, 0x67, 0xa4, 0x5b, 0xef, 0xb1, 0xa1, + 0xcf, 0xe0, 0x93, 0x1d, 0xb4, 0x02, 0x52, 0x53, 0x47, 0x17, 0x17, 0x25, + 0xf8, 0xef, 0xb5, 0x95, 0x38, 0x56, 0xdd, 0x4b, 0xe0, 0xed, 0x03, 0xfa, + 0xc5, 0x68, 0x63, 0x74, 0x3c, 0x9c, 0x97, 0x51, 0x92, 0xc7, 0xd7, 0x5d, + 0x6c, 0xfa, 0x65, 0xee, 0xf7, 0x71, 0xd9, 0xa0, 0x14, 0x2c, 0xae, 0xb5, + 0x7f, 0x51, 0x68, 0xa0, 0x92, 0x1a, 0x08, 0x05, 0xa0, 0xc7, 0x0e, 0xdd, + 0xa0, 0xf3, 0x5b, 0x38, 0x97, 0x6d, 0xc3, 0x6e, 0xe1, 0xb6, 0xc7, 0x12, + 0x5d, 0xdc, 0x0f, 0x04, 0x94, 0xbb, 0xba, 0x46, 0x33, 0x5d, 0xbe, 0xdb, + 0xb7, 0xb4, 0x19, 0x2d, 0x0d, 0x80, 0xe1, 0xf1, 0x95, 0x0c, 0xbc, 0xe7, + 0x86, 0xfa, 0x78, 0xb5, 0xc8, 0x68, 0x81, 0x1a, 0x35, 0xa1, 0x0f, 0x2f, + 0x30, 0x31, 0x9e, 0xf3, 0x12, 0x3f, 0xd8, 0xb2, 0x2f, 0xeb, 0xed, 0xac, + 0x16, 0xd4, 0x26, 0x7d, 0xa0, 0x0f, 0x1f, 0x04, 0x94, 0xda, 0xc7, 0xab, + 0x2e, 0xfc, 0x80, 0xeb, 0x9f, 0xb4, 0x38, 0xfb, 0x59, 0x3a, 0x95, 0xa7, + 0x60, 0x6d, 0x60, 0x35, 0xc0, 0x13, 0x0a, 0x5d, 0x1f, 0xa6, 0xbf, 0x0e, + 0xa3, 0x99, 0x9c, 0xfd, 0xd9, 0x57, 0x34, 0x7e, 0x8f, 0xb5, 0x6d, 0xe7, + 0x6f, 0xc7, 0xc5, 0x3d, 0xf6, 0x54, 0xe7, 0x17, 0x00, 0x25, 0x25, 0x35, + 0x1c, 0x6b, 0x8d, 0xc0, 0x7d, 0x15, 0x5e, 0xcc, 0xb0, 0x0c, 0x77, 0xed, + 0xe0, 0x95, 0xf9, 0x20, 0x3c, 0xb4, 0x08, 0xf1, 0x54, 0x2d, 0x7e, 0xb3, + 0xd8, 0xf2, 0x12, 0x52, 0x3c, 0x8c, 0xbf, 0xd2, 0x15, 0x55, 0xd7, 0xbb, + 0x74, 0x8e, 0x3c, 0x14, 0x2f, 0x9f, 0x52, 0x50, 0x8d, 0xa0, 0x72, 0x92, + 0x9b, 0x21, 0xee, 0x9f, 0x08, 0xe5, 0x38, 0xc8, 0x23, 0x42, 0x74, 0x54, + 0x8d, 0xe7, 0xe4, 0x86, 0xeb, 0xd2, 0x53, 0x76, 0xcb, 0xc6, 0xb0, 0xab, + 0xba, 0xd9, 0x3a, 0x2a, 0xc6, 0xd3, 0xe2, 0xac, 0x60, 0x74, 0xee, 0xa3, + 0xd4, 0xad, 0xf4, 0xf0, 0x68, 0x75, 0xce, 0xee, 0x40, 0x86, 0x37, 0xfa, + 0xce, 0x3a, 0x04, 0x94, 0xde, 0xfa, 0xbf, 0x89, 0x67, 0x52, 0xeb, 0x38, + 0xf8, 0xec, 0x12, 0xc6, 0xb8, 0x59, 0x6b, 0xbb, 0x06, 0x33, 0x53, 0xfd, + 0xcb, 0xd5, 0x96, 0x37, 0xd5, 0x9f, 0xab, 0xd5, 0xf4, 0x4c, 0x42, 0x1e, + 0x45, 0x99, 0x97, 0x41, 0xbe, 0xd1, 0xc7, 0x93, 0x1b, 0xe4, 0x16, 0xc1, + 0x20, 0x24, 0xa6, 0x2f, 0x68, 0x43, 0xd8, 0x7e, 0x4a, 0x6e, 0x76, 0xa9, + 0xb7, 0x77, 0x49, 0x4c, 0xb7, 0x27, 0xe5, 0x34, 0x25, 0xc2, 0x4a, 0x5c, + 0x27, 0x95, 0x14, 0x92, 0x53, 0x34, 0x94, 0x66, 0x12, 0x94, 0x94, 0xe5, + 0xe7, 0xfd, 0x57, 0xe8, 0xb9, 0xe4, 0xbe, 0xdc, 0x71, 0x5d, 0xa7, 0xfc, + 0x25, 0x5f, 0xa3, 0x77, 0xe1, 0xa1, 0xf9, 0x85, 0x89, 0x91, 0xfe, 0x2f, + 0x2a, 0x71, 0xfd, 0x5f, 0x35, 0xcd, 0x1e, 0x16, 0x30, 0x3b, 0xf1, 0x69, + 0x6a, 0xec, 0x25, 0x3c, 0xa4, 0xa7, 0x83, 0x7f, 0xf8, 0xbe, 0xea, 0x2d, + 0xfe, 0x6b, 0x2a, 0x97, 0x7f, 0x58, 0x39, 0xbf, 0x93, 0x72, 0x1b, 0xbe, + 0xa4, 0xf5, 0xca, 0x86, 0xe6, 0x1a, 0x6c, 0x77, 0x83, 0x5e, 0x47, 0xfd, + 0x53, 0x42, 0xf4, 0x05, 0x0b, 0xef, 0xab, 0x1e, 0xa7, 0x5d, 0x6b, 0xb6, + 0xd6, 0xc1, 0x2e, 0x29, 0x29, 0xf3, 0x4c, 0x96, 0xe7, 0xf4, 0x0b, 0x6b, + 0xfd, 0xa0, 0xd1, 0x51, 0xb6, 0x4b, 0x3d, 0xc1, 0xd3, 0xb7, 0x9f, 0xa2, + 0x4f, 0x8a, 0x1d, 0xdd, 0x70, 0x5c, 0xe0, 0xef, 0x50, 0x01, 0xe4, 0x55, + 0xef, 0xac, 0x39, 0x6d, 0xeb, 0x99, 0x15, 0xde, 0xda, 0xe2, 0xaa, 0xe6, + 0xb6, 0x09, 0x92, 0x43, 0x7d, 0xd3, 0xf3, 0x58, 0xc3, 0xa3, 0x65, 0xde, + 0x0f, 0xa3, 0x8d, 0x63, 0xc6, 0xe0, 0xcf, 0x6b, 0x0f, 0x00, 0x49, 0x3c, + 0x24, 0xa7, 0x7e, 0xce, 0xa7, 0x75, 0x55, 0xe3, 0xbd, 0xba, 0xd5, 0x63, + 0x41, 0x3e, 0x12, 0xad, 0xd1, 0x7e, 0x0e, 0x6b, 0x4b, 0x6c, 0x63, 0x4f, + 0x62, 0xb3, 0x3e, 0xc9, 0x7e, 0x1e, 0x3e, 0x3d, 0x19, 0x95, 0xed, 0x66, + 0xd2, 0xd1, 0x24, 0x18, 0xd7, 0x4d, 0xd1, 0xdd, 0x40, 0x74, 0xc7, 0x87, + 0xfa, 0xf8, 0x17, 0x16, 0x38, 0x6b, 0xb4, 0xea, 0x0f, 0x94, 0x24, 0xa6, + 0xd6, 0x57, 0x47, 0x7e, 0x2c, 0xdf, 0xd3, 0x6c, 0x80, 0x35, 0x75, 0x0f, + 0x3e, 0xd3, 0xfd, 0x55, 0x85, 0x95, 0x9c, 0xeb, 0x2c, 0xdb, 0x67, 0xb1, + 0xe3, 0x90, 0x74, 0x5a, 0x36, 0xf5, 0x7c, 0xaa, 0x81, 0xaa, 0xe6, 0xec, + 0xb0, 0x69, 0x27, 0x83, 0xf0, 0x59, 0x0f, 0x22, 0xd7, 0x97, 0xd9, 0x04, + 0x92, 0x92, 0x9b, 0x15, 0x64, 0x91, 0xae, 0xef, 0xb8, 0xa4, 0xec, 0xb7, + 0x11, 0x13, 0x23, 0xef, 0x55, 0xac, 0xaa, 0xb7, 0x6b, 0x02, 0x50, 0xdb, + 0x43, 0x9e, 0xe0, 0x19, 0x27, 0x5e, 0x25, 0x25, 0x33, 0x7b, 0x6b, 0xb5, + 0xc4, 0x91, 0x04, 0x6a, 0x23, 0x43, 0x28, 0x95, 0x64, 0x3d, 0xd8, 0x96, + 0x63, 0x38, 0x0a, 0x43, 0x8c, 0x17, 0xb4, 0x41, 0x71, 0x69, 0x91, 0xba, + 0x15, 0xfe, 0x9f, 0x82, 0x59, 0x6b, 0xac, 0x76, 0xa4, 0xb5, 0xcc, 0x68, + 0x07, 0x8d, 0xdd, 0xe7, 0xc5, 0x0d, 0x98, 0x94, 0xf4, 0xcc, 0x86, 0xbb, + 0x23, 0x6b, 0xd8, 0xf0, 0x76, 0x9e, 0x7e, 0xf0, 0x92, 0x91, 0xe2, 0x57, + 0x75, 0xb6, 0xcd, 0x35, 0x17, 0x81, 0x1b, 0x9d, 0x13, 0x24, 0x2e, 0x8d, + 0xb5, 0xe7, 0xbe, 0xa6, 0xd5, 0x55, 0x20, 0x18, 0xf7, 0x17, 0xb8, 0x34, + 0x2c, 0x43, 0xd4, 0x2a, 0xaa, 0xcd, 0xd8, 0xae, 0xd8, 0xdf, 0x01, 0xa0, + 0x9f, 0x24, 0x87, 0x5b, 0xc8, 0x13, 0xba, 0xcf, 0xc5, 0x25, 0x3b, 0x2e, + 0xe8, 0xf5, 0x97, 0xb5, 0xd9, 0xf9, 0x3b, 0xf5, 0xd6, 0x9a, 0xf4, 0x04, + 0x78, 0x17, 0x1d, 0x55, 0x87, 0xf5, 0x1e, 0x95, 0x88, 0xc6, 0x56, 0xca, + 0x6b, 0x02, 0xb3, 0x35, 0xb4, 0x34, 0x1d, 0xa7, 0x8d, 0xc3, 0xcd, 0x72, + 0xd6, 0xf5, 0x27, 0x58, 0x49, 0x36, 0xeb, 0xf1, 0x55, 0x1d, 0x93, 0x2e, + 0x92, 0xed, 0xc7, 0xb2, 0x4a, 0x7a, 0x7c, 0xce, 0xbc, 0x1e, 0x0c, 0x70, + 0xb2, 0x2e, 0xeb, 0x16, 0x4f, 0xe8, 0xce, 0xab, 0x2f, 0x7d, 0xf6, 0x70, + 0xd8, 0x1f, 0x7a, 0x35, 0x74, 0x88, 0xf7, 0x24, 0xa6, 0xed, 0x19, 0x76, + 0x5a, 0x65, 0xe6, 0x4f, 0x74, 0xb2, 0x2c, 0x86, 0xce, 0xee, 0x12, 0xaf, + 0xd3, 0x63, 0x7d, 0xaa, 0x16, 0x63, 0x59, 0x92, 0xd2, 0x59, 0xdb, 0xe8, + 0x8f, 0x12, 0x92, 0x9a, 0xb6, 0x5a, 0xd0, 0xdd, 0xc4, 0xea, 0x78, 0x95, + 0x54, 0xd9, 0xb9, 0xd0, 0xd3, 0x24, 0xe8, 0x3e, 0x2a, 0x62, 0x8d, 0xce, + 0x97, 0x8d, 0x7c, 0xd2, 0xbf, 0x1c, 0x30, 0x6f, 0x68, 0x82, 0xdd, 0x47, + 0xcb, 0x54, 0x94, 0xd9, 0x6f, 0x42, 0xeb, 0x96, 0x46, 0xcc, 0x0c, 0x83, + 0xf1, 0xad, 0xc3, 0xf2, 0x85, 0x6a, 0x8f, 0xa9, 0x7f, 0x59, 0x32, 0x08, + 0xfd, 0x5b, 0xd2, 0x69, 0xef, 0x6b, 0xda, 0xdf, 0xc0, 0x12, 0x7f, 0x05, + 0xea, 0x58, 0xef, 0xf5, 0x28, 0xaa, 0xcf, 0xdf, 0x63, 0x5d, 0xf7, 0x89, + 0x53, 0x2e, 0x84, 0x94, 0xf1, 0xbd, 0x27, 0xfc, 0x5e, 0x63, 0xd4, 0x45, + 0xbd, 0x56, 0xef, 0xb4, 0x38, 0x7f, 0x80, 0xaa, 0x5b, 0x5f, 0xf6, 0x9d, + 0xf4, 0x8f, 0xe0, 0xba, 0xea, 0x29, 0xc7, 0xc5, 0xa9, 0xb4, 0xe3, 0xd6, + 0xda, 0xaa, 0x66, 0x8d, 0x63, 0x00, 0x68, 0x1f, 0x20, 0xa4, 0x5c, 0xa2, + 0x5c, 0x92, 0x99, 0x97, 0xa8, 0x17, 0x28, 0x92, 0x9a, 0x52, 0x52, 0x89, + 0x4d, 0x25, 0x32, 0x52, 0x92, 0x9b, 0x02, 0x0e, 0xa0, 0xc8, 0xf2, 0x49, + 0x79, 0xe7, 0xd4, 0x8e, 0xaf, 0x9a, 0x7a, 0x98, 0xc6, 0xb2, 0xd7, 0xd9, + 0x45, 0x80, 0xcb, 0x1c, 0x64, 0x07, 0x1e, 0xeb, 0xd1, 0x48, 0x49, 0x4c, + 0x12, 0x25, 0x3c, 0x26, 0x84, 0x94, 0xb1, 0x94, 0x84, 0xa7, 0x84, 0xa1, + 0x25, 0x28, 0x29, 0x4a, 0x8c, 0x27, 0x49, 0x4b, 0xca, 0xa2, 0xe7, 0x37, + 0x39, 0xcf, 0x63, 0xdb, 0xfa, 0x16, 0x12, 0xd8, 0x70, 0xe5, 0xc3, 0x9d, + 0x11, 0x73, 0x33, 0x1b, 0x89, 0x5e, 0xf2, 0xc7, 0x3c, 0xf6, 0x0d, 0x13, + 0xaf, 0x9a, 0xc8, 0xb3, 0xac, 0x5f, 0x8e, 0xd6, 0x59, 0x91, 0x53, 0xdc, + 0xec, 0x87, 0xc3, 0x19, 0x4b, 0x0b, 0x9c, 0x27, 0xe8, 0xcb, 0x46, 0xa9, + 0x29, 0xd5, 0xa7, 0x07, 0x1f, 0x1d, 0xa0, 0x52, 0xc6, 0xd6, 0xd1, 0xd8, + 0x00, 0x07, 0xe0, 0x13, 0x39, 0x8d, 0x79, 0x2c, 0x7d, 0xc4, 0xcc, 0x92, + 0xd6, 0x68, 0x00, 0x55, 0x6f, 0xb2, 0xd2, 0xc6, 0xfa, 0x8f, 0xf4, 0x9a, + 0x75, 0x2d, 0x3a, 0xbf, 0xee, 0x0a, 0x8d, 0xdd, 0x4a, 0xca, 0xd8, 0x59, + 0x8e, 0xd2, 0x27, 0x97, 0x9f, 0xa4, 0x52, 0x53, 0xa1, 0x7e, 0x27, 0x4f, + 0x7b, 0x0d, 0x56, 0xd4, 0x6d, 0x61, 0xe4, 0x38, 0xf2, 0xb1, 0x33, 0x7a, + 0x4e, 0x36, 0x2b, 0x4d, 0x98, 0x2f, 0x75, 0x5e, 0x35, 0xb9, 0xdb, 0x84, + 0x79, 0x77, 0x52, 0x63, 0xfa, 0x8e, 0x46, 0x90, 0xf7, 0x0f, 0x01, 0xa7, + 0xe2, 0xa1, 0x73, 0xb2, 0xa8, 0x3b, 0x1e, 0xc6, 0x35, 0xdc, 0xfb, 0x8c, + 0x94, 0x94, 0xf3, 0xbd, 0x4e, 0xeb, 0x4b, 0x36, 0x5b, 0x51, 0x99, 0x3e, + 0xe8, 0xd2, 0x3e, 0x2b, 0x30, 0x51, 0x53, 0x84, 0x90, 0xba, 0x5b, 0x7e, + 0xd1, 0x67, 0x61, 0x1e, 0x43, 0x45, 0x4a, 0xda, 0xac, 0x9f, 0xa3, 0xca, + 0x4a, 0x71, 0xbe, 0xce, 0xd7, 0x3a, 0x2b, 0x69, 0x27, 0xc7, 0xb2, 0xbd, + 0x55, 0x4d, 0x60, 0x99, 0xd4, 0x04, 0xee, 0x63, 0xc1, 0x20, 0x94, 0x3d, + 0xa6, 0x63, 0x90, 0x92, 0x9b, 0x95, 0x64, 0x6c, 0x6f, 0xb4, 0xf7, 0xe0, + 0x21, 0xe4, 0xba, 0xbc, 0x87, 0x37, 0x77, 0xd3, 0x6f, 0x0e, 0xfe, 0xf4, + 0x0d, 0x40, 0x13, 0xc7, 0x80, 0x53, 0x65, 0x37, 0x3f, 0x56, 0x36, 0x47, + 0xef, 0x1d, 0x12, 0x53, 0x4a, 0xca, 0xcd, 0x56, 0x12, 0x59, 0xa7, 0x6f, + 0x0f, 0x92, 0x4d, 0xaa, 0x97, 0x49, 0x3a, 0x6e, 0xd6, 0x0a, 0xd5, 0x18, + 0xa4, 0x88, 0xb8, 0x98, 0xee, 0x34, 0x54, 0x72, 0x9a, 0x28, 0xb3, 0xda, + 0xd9, 0xa4, 0xf0, 0x7c, 0x3e, 0x29, 0x29, 0xae, 0xea, 0xab, 0x1c, 0x37, + 0x54, 0xf3, 0x53, 0x39, 0x20, 0x26, 0x7b, 0x58, 0x47, 0x04, 0x05, 0x06, + 0xfa, 0x2d, 0xed, 0xaf, 0x96, 0xa9, 0x29, 0x27, 0xda, 0x58, 0x3e, 0x88, + 0x27, 0xe4, 0x97, 0xda, 0x5e, 0x78, 0x10, 0x86, 0x6c, 0xec, 0xd6, 0xfd, + 0xfa, 0x24, 0x3d, 0x7b, 0x08, 0x6b, 0x5b, 0x24, 0xf0, 0x06, 0xa5, 0x25, + 0x36, 0xb1, 0x5d, 0x61, 0x71, 0x24, 0x13, 0xa2, 0xe8, 0xb1, 0x71, 0xc3, + 0x6b, 0x60, 0xf0, 0x12, 0x4a, 0xc8, 0xc0, 0xc7, 0xb6, 0xa6, 0x87, 0x58, + 0x76, 0xb9, 0xce, 0x88, 0xfe, 0xaf, 0x65, 0xd0, 0xb4, 0x00, 0xc0, 0xde, + 0x34, 0x49, 0x4e, 0x37, 0x54, 0xc3, 0x6d, 0x76, 0xb7, 0x25, 0x8d, 0x8a, + 0xee, 0x24, 0x1f, 0x27, 0x8f, 0xef, 0x54, 0x6f, 0xaa, 0x58, 0xe6, 0x9f, + 0xf5, 0xec, 0xba, 0x3c, 0xba, 0x85, 0xb8, 0x37, 0x36, 0x35, 0x0d, 0xdc, + 0xd8, 0xec, 0xe6, 0xea, 0xb0, 0xdc, 0x03, 0xcc, 0x1e, 0xe2, 0x12, 0x53, + 0xe8, 0x3f, 0x57, 0xf2, 0x3e, 0xd1, 0xd1, 0x70, 0xec, 0xee, 0x2b, 0x0c, + 0x3f, 0x1a, 0xfd, 0x9f, 0xc1, 0x5a, 0xbe, 0xc7, 0x30, 0x12, 0x3b, 0x09, + 0x58, 0xdf, 0x52, 0xae, 0x36, 0xf4, 0x40, 0xc2, 0x67, 0xd1, 0xba, 0xc6, + 0x0f, 0x81, 0x3b, 0xc4, 0xff, 0x00, 0x9c, 0xb6, 0x32, 0x2b, 0x2e, 0x63, + 0xbe, 0x05, 0x25, 0x30, 0xaa, 0xd7, 0x3c, 0x02, 0x7b, 0x89, 0x53, 0x25, + 0x42, 0xaa, 0xb6, 0x34, 0x6b, 0xd9, 0x4e, 0x27, 0x82, 0x92, 0x96, 0x94, + 0xd2, 0xa5, 0xb5, 0x36, 0xd4, 0x94, 0xc6, 0x52, 0x4f, 0xb5, 0x28, 0x09, + 0x29, 0xf3, 0xef, 0xa8, 0xd9, 0x58, 0xd8, 0xbd, 0x58, 0x8b, 0xfd, 0x86, + 0xd6, 0x96, 0xb1, 0xc7, 0x80, 0x7c, 0xd7, 0x63, 0x97, 0xf5, 0xab, 0x0b, + 0x17, 0x3c, 0x62, 0xbe, 0x0d, 0x7d, 0xed, 0x04, 0x1d, 0x4f, 0x92, 0xf3, + 0xe3, 0xd1, 0x33, 0x9a, 0xe2, 0x77, 0x34, 0x0e, 0x46, 0xa9, 0xcf, 0x44, + 0xca, 0x78, 0x9d, 0xcd, 0x98, 0xee, 0x65, 0x25, 0x3e, 0xa3, 0x87, 0xd4, + 0xb0, 0xf3, 0x28, 0x17, 0xd5, 0x6b, 0x4b, 0x64, 0x8e, 0x47, 0x21, 0x1d, + 0xb7, 0x52, 0xff, 0x00, 0xa0, 0xf6, 0xba, 0x34, 0x30, 0x41, 0xd5, 0x79, + 0x4d, 0x3d, 0x17, 0x2d, 0x92, 0xd3, 0x76, 0xd6, 0x9d, 0x7d, 0xa4, 0xf2, + 0xac, 0x57, 0xd3, 0xb2, 0xaa, 0x05, 0xac, 0xc9, 0x73, 0x41, 0x32, 0x60, + 0x91, 0xa8, 0x49, 0x4f, 0xa7, 0x92, 0xdf, 0x10, 0xa3, 0x65, 0xd4, 0xd5, + 0x06, 0xc7, 0xb5, 0xa0, 0xf0, 0x49, 0x01, 0x79, 0xa8, 0x7f, 0x56, 0xa8, + 0xfa, 0x62, 0xd7, 0x5b, 0x53, 0xb5, 0x73, 0x9c, 0x49, 0x28, 0x8f, 0xfb, + 0x45, 0xb0, 0x6f, 0xb4, 0x90, 0xdf, 0xa2, 0x1d, 0x24, 0x04, 0x94, 0xfa, + 0x2f, 0xaf, 0x46, 0xff, 0x00, 0x4f, 0xd4, 0x6e, 0xfe, 0x76, 0xc8, 0x95, + 0x39, 0x6c, 0xc4, 0x89, 0xf0, 0x5e, 0x6a, 0xd0, 0x4d, 0xad, 0xb3, 0xd7, + 0x8b, 0x1b, 0xf4, 0x5c, 0x09, 0x0a, 0xce, 0x2e, 0x55, 0xf4, 0x65, 0xfd, + 0xa0, 0xe4, 0xb8, 0xba, 0x0b, 0x41, 0x07, 0x5f, 0xc5, 0x25, 0x3d, 0xe5, + 0x8f, 0x63, 0x49, 0x0e, 0x84, 0x1b, 0x32, 0x29, 0x06, 0x46, 0xae, 0x03, + 0x48, 0xf0, 0x59, 0xbd, 0x22, 0xc1, 0xd4, 0x30, 0x9c, 0x0d, 0x8e, 0x75, + 0xb5, 0x3c, 0x82, 0xf2, 0x75, 0x21, 0xde, 0xe0, 0xa1, 0x6f, 0x4d, 0x71, + 0x71, 0xf4, 0x2c, 0x76, 0xe1, 0xf9, 0xba, 0x88, 0x49, 0x4d, 0x86, 0xe6, + 0xd6, 0xe7, 0x90, 0xe6, 0x6a, 0x3b, 0x7f, 0xa8, 0x51, 0x76, 0x63, 0x27, + 0xf4, 0x74, 0x03, 0xfc, 0xa3, 0x00, 0x2c, 0xfb, 0x30, 0xf3, 0x98, 0x4e, + 0xae, 0x9f, 0x3f, 0xf6, 0x29, 0xd5, 0x66, 0x48, 0x68, 0x0e, 0xac, 0x1f, + 0x12, 0xd9, 0xd5, 0x25, 0x36, 0xaf, 0xca, 0xbc, 0x36, 0x65, 0xb5, 0x83, + 0xa7, 0x78, 0x27, 0xe4, 0xb3, 0x45, 0xf5, 0xdc, 0xe7, 0x30, 0xfb, 0xc9, + 0x3a, 0x97, 0x08, 0x02, 0x3e, 0x3d, 0xd5, 0xf7, 0x8f, 0x55, 0xbb, 0x48, + 0x21, 0xdd, 0x81, 0xf3, 0x40, 0x3d, 0x3e, 0x75, 0xf5, 0x1a, 0xc7, 0x4c, + 0xea, 0xe1, 0xf9, 0x12, 0x53, 0x4d, 0xd4, 0x50, 0x6c, 0x70, 0xa4, 0xec, + 0x2d, 0x12, 0x61, 0xdb, 0x41, 0x3f, 0x04, 0x2b, 0x2a, 0x2e, 0x26, 0x48, + 0x88, 0xef, 0xca, 0xbc, 0xec, 0x27, 0x34, 0xcb, 0x6d, 0x13, 0xc8, 0x20, + 0x02, 0x81, 0x66, 0x1b, 0x0b, 0xa6, 0xc7, 0xb9, 0xd1, 0xca, 0x4a, 0x73, + 0x5f, 0x45, 0x33, 0xef, 0x3f, 0x20, 0x86, 0x71, 0x2b, 0x2e, 0x25, 0xb2, + 0xe6, 0x1e, 0x3c, 0x95, 0xeb, 0x7d, 0x16, 0xcb, 0x58, 0xc2, 0xe3, 0xe2, + 0x4a, 0x88, 0xa9, 0xe6, 0x0e, 0xc7, 0x03, 0xda, 0x12, 0x52, 0x16, 0x63, + 0xd6, 0xdf, 0xcc, 0x1e, 0x5a, 0x6a, 0x9f, 0xd1, 0x2e, 0x78, 0x0c, 0x10, + 0x0f, 0x82, 0xb9, 0x4e, 0x1b, 0x9e, 0x65, 0xdc, 0x78, 0x2b, 0x81, 0x95, + 0x52, 0x09, 0x80, 0x23, 0x92, 0x92, 0x9c, 0xef, 0xb3, 0x0d, 0x9e, 0xe3, + 0xee, 0xec, 0xaa, 0x5d, 0x5b, 0x00, 0x33, 0x04, 0x79, 0xf0, 0xad, 0xe5, + 0x65, 0x07, 0x13, 0xb3, 0x4f, 0x3f, 0x15, 0x9e, 0x6b, 0xb2, 0xc2, 0x77, + 0x7d, 0xc9, 0x29, 0xcd, 0xbd, 0xb5, 0xee, 0x8a, 0x46, 0x9f, 0x82, 0x83, + 0x71, 0xad, 0x73, 0x80, 0x00, 0x01, 0xe2, 0xb5, 0xd9, 0x83, 0xae, 0x81, + 0x58, 0x18, 0x8c, 0x60, 0x92, 0x92, 0x9c, 0xa3, 0x83, 0x5d, 0x55, 0x17, + 0xdb, 0xee, 0x3d, 0x87, 0x02, 0x54, 0x7a, 0x3b, 0x5c, 0x33, 0xc0, 0x3d, + 0xc1, 0xda, 0xaf, 0x5e, 0xc3, 0x6b, 0xa0, 0x0d, 0x02, 0x8d, 0x74, 0x7a, + 0x57, 0x54, 0x5b, 0x1b, 0xf7, 0xb6, 0x27, 0xe3, 0x1f, 0xc5, 0x25, 0x37, + 0x8e, 0x3b, 0x9b, 0x6d, 0x54, 0xb8, 0x7b, 0x58, 0x34, 0x3e, 0x27, 0x92, + 0xad, 0xb7, 0x47, 0x49, 0x32, 0x40, 0xe0, 0x6a, 0x89, 0x65, 0x0c, 0x71, + 0x33, 0xa8, 0x69, 0xed, 0xd8, 0xfc, 0x53, 0x6c, 0xae, 0xa7, 0x01, 0xa0, + 0x27, 0x80, 0x12, 0x53, 0x0c, 0xbc, 0x86, 0xb3, 0x03, 0x21, 0xc1, 0xa5, + 0xb2, 0xc2, 0x00, 0xee, 0x49, 0xd1, 0x62, 0x06, 0xc0, 0x6b, 0x86, 0xb3, + 0xaf, 0xcd, 0x74, 0x4f, 0x6d, 0x57, 0x51, 0x7d, 0x66, 0x27, 0xd3, 0x33, + 0xf2, 0x12, 0x02, 0xe7, 0x98, 0x08, 0x68, 0x11, 0xd9, 0x25, 0x3d, 0x3f, + 0xd4, 0x76, 0x96, 0xe0, 0xe5, 0x08, 0x86, 0xfa, 0xe4, 0x83, 0xe2, 0x76, + 0x89, 0x5d, 0x0d, 0xa3, 0xd8, 0xef, 0x82, 0xe1, 0xb0, 0xf3, 0xf3, 0x70, + 0xe9, 0x34, 0xe2, 0xbf, 0x63, 0x5e, 0xe2, 0xf7, 0x1d, 0x39, 0xd0, 0x7f, + 0x04, 0xf7, 0xf5, 0x5e, 0xb3, 0x60, 0x73, 0x3d, 0x53, 0x0e, 0x1c, 0xc8, + 0x1a, 0xa4, 0xa7, 0xb7, 0x03, 0xd8, 0x3e, 0x0a, 0x0c, 0x81, 0x58, 0x93, + 0x1f, 0x15, 0xc3, 0x3f, 0x3f, 0xab, 0x58, 0xc0, 0xc3, 0x7b, 0xda, 0x07, + 0xee, 0x98, 0x28, 0x16, 0xdd, 0xd4, 0x2c, 0x60, 0x6d, 0x99, 0x16, 0x38, + 0x08, 0x81, 0xbb, 0xc3, 0xe0, 0x92, 0x9f, 0x42, 0xd3, 0xc4, 0x26, 0x96, + 0x93, 0x00, 0x82, 0x42, 0xf3, 0xdf, 0x57, 0x3d, 0xa0, 0xd7, 0xf6, 0x8b, + 0x08, 0x77, 0x23, 0x79, 0x53, 0xa7, 0x23, 0x3e, 0x99, 0x75, 0x76, 0xbe, + 0x78, 0x27, 0x77, 0x82, 0x4a, 0x7b, 0xf8, 0x4a, 0x17, 0x09, 0x66, 0x6f, + 0x55, 0x7b, 0x40, 0x37, 0xbe, 0x07, 0x70, 0xe8, 0x43, 0xfb, 0x4f, 0x54, + 0xdd, 0xfd, 0x22, 0xc9, 0x8f, 0xde, 0xd1, 0x25, 0x25, 0x65, 0xe2, 0xc6, + 0xee, 0x25, 0x28, 0x93, 0x31, 0xa2, 0xce, 0x68, 0xb3, 0xd4, 0xda, 0xc2, + 0xe8, 0x53, 0x77, 0xae, 0xe2, 0xea, 0xf7, 0x90, 0x07, 0x2e, 0x49, 0x4d, + 0xe2, 0xf1, 0x07, 0xb0, 0x4d, 0xea, 0xd5, 0x10, 0x4c, 0x95, 0x45, 0x95, + 0x5a, 0x5a, 0x37, 0xbf, 0x70, 0x9e, 0xca, 0x56, 0x52, 0x6b, 0x60, 0x33, + 0x27, 0xc0, 0x24, 0xa6, 0xe3, 0xdd, 0xa7, 0xb3, 0x48, 0x08, 0x1b, 0xec, + 0xb0, 0x06, 0xbb, 0x4e, 0xd2, 0x80, 0x7d, 0x42, 0xd9, 0x26, 0x0f, 0x61, + 0xe4, 0x9e, 0xb0, 0x48, 0xd2, 0x77, 0x1e, 0x07, 0x74, 0x94, 0xc8, 0xd4, + 0xc8, 0x2d, 0x07, 0x51, 0xe2, 0x83, 0x6b, 0x03, 0x00, 0x3b, 0xa7, 0xe1, + 0xc2, 0x9b, 0x66, 0x4b, 0x0b, 0x49, 0x1d, 0xdc, 0x54, 0xbd, 0x23, 0x1a, + 0xe8, 0x0a, 0x4a, 0x7b, 0x2f, 0xaa, 0xd8, 0x82, 0x9e, 0x8c, 0xcb, 0x39, + 0x75, 0xee, 0x75, 0x8e, 0x23, 0xc2, 0x76, 0x81, 0xf8, 0x2d, 0x27, 0x82, + 0xdf, 0xa2, 0x20, 0x9e, 0x4a, 0xcf, 0xfa, 0xa7, 0x70, 0xb3, 0xa4, 0x36, + 0x92, 0x65, 0xf4, 0x39, 0xcc, 0x77, 0xc1, 0xc7, 0x70, 0xfc, 0xaa, 0xfd, + 0xe7, 0xd1, 0x74, 0x7e, 0x69, 0xe1, 0x25, 0x31, 0x2f, 0x00, 0x43, 0xc7, + 0x1c, 0xf7, 0x40, 0x37, 0x52, 0xe2, 0x40, 0x6c, 0x0f, 0x08, 0x82, 0x9f, + 0xd7, 0x61, 0x24, 0x13, 0xaf, 0x65, 0x17, 0x33, 0x7b, 0x4e, 0x80, 0x83, + 0xe7, 0x21, 0x25, 0x20, 0xbd, 0xa1, 0xc7, 0xda, 0x3d, 0xa3, 0xf2, 0x2a, + 0x8f, 0xa9, 0xa5, 0xf1, 0xb3, 0x64, 0xf0, 0xac, 0xd9, 0x53, 0xb6, 0xfb, + 0x09, 0x1e, 0x52, 0x82, 0x69, 0xb4, 0x82, 0xfd, 0xc4, 0xc7, 0x24, 0xf0, + 0x92, 0x9a, 0xa6, 0xa6, 0xb4, 0x18, 0x71, 0x74, 0x21, 0x7a, 0x59, 0x47, + 0x51, 0x24, 0x1d, 0x4c, 0xca, 0xb8, 0xdb, 0x0d, 0x73, 0xba, 0x3c, 0x04, + 0x29, 0x0b, 0x2d, 0xb7, 0x46, 0x08, 0x49, 0x4d, 0x3a, 0xf1, 0x43, 0x06, + 0xeb, 0x8e, 0xbe, 0x08, 0xb5, 0xb5, 0xd6, 0x18, 0x60, 0xd8, 0xcf, 0xc4, + 0xab, 0xb5, 0xf4, 0xfb, 0x6d, 0x8f, 0x53, 0xe8, 0xfd, 0xc8, 0xce, 0xa6, + 0x9c, 0x61, 0x0e, 0x00, 0x1e, 0xc3, 0xc5, 0x25, 0x20, 0x6d, 0x4d, 0xaa, + 0xad, 0xc4, 0xe8, 0x3b, 0xac, 0x8b, 0xef, 0xb2, 0xe7, 0xb9, 0x8d, 0x1b, + 0x59, 0x3c, 0x77, 0x3f, 0x15, 0xa1, 0x7d, 0xc6, 0xd3, 0x1c, 0xf8, 0x00, + 0x85, 0x56, 0x3d, 0x60, 0x9b, 0x09, 0x81, 0xdc, 0x9f, 0xe0, 0x92, 0x9a, + 0x0c, 0xc3, 0x79, 0xd4, 0x8e, 0x11, 0xdb, 0x88, 0x1b, 0xac, 0x2b, 0x4f, + 0xbe, 0x96, 0x88, 0x69, 0xe3, 0xc0, 0x21, 0x3b, 0x21, 0xbc, 0x1d, 0x3c, + 0x25, 0x25, 0x31, 0x21, 0xac, 0x6f, 0x98, 0x55, 0x6c, 0x24, 0xc8, 0xed, + 0xe6, 0xa7, 0x6b, 0xb7, 0x1d, 0xad, 0x3a, 0x4f, 0x29, 0xea, 0x64, 0xe8, + 0xe1, 0x3f, 0xca, 0xec, 0x92, 0x90, 0x8a, 0xe3, 0x91, 0xf3, 0x08, 0x8c, + 0xc3, 0x73, 0xa1, 0xc0, 0x71, 0xa8, 0x91, 0xc1, 0x56, 0x58, 0xc6, 0x8e, + 0x44, 0xab, 0x75, 0x56, 0xe7, 0xc4, 0x7d, 0xc9, 0x29, 0xaa, 0x5b, 0x6d, + 0x16, 0x8c, 0x86, 0x7f, 0x35, 0x64, 0xef, 0xa8, 0xfe, 0x6b, 0x8f, 0xd2, + 0x2d, 0xf2, 0x3c, 0xc2, 0xb0, 0x5f, 0x8d, 0x90, 0x00, 0x90, 0xe7, 0x19, + 0x96, 0x9e, 0xd0, 0x91, 0xcb, 0xc5, 0xad, 0xe6, 0x93, 0x0f, 0x6d, 0x64, + 0xba, 0xd7, 0x9f, 0xa2, 0x0e, 0x9e, 0xd6, 0x8e, 0xea, 0x87, 0x50, 0xea, + 0x26, 0xf2, 0xca, 0xf1, 0xb1, 0xf6, 0x17, 0x3c, 0x06, 0xb8, 0xfb, 0x74, + 0x9d, 0x60, 0x37, 0x5e, 0x3c, 0x52, 0x52, 0xba, 0xb6, 0x4d, 0x78, 0x95, + 0x7d, 0x9d, 0x83, 0xf4, 0x96, 0x8e, 0xdd, 0x9a, 0x74, 0x2e, 0x59, 0x75, + 0x38, 0x16, 0x6d, 0x8d, 0x7b, 0x2b, 0x3d, 0x4b, 0x22, 0xab, 0xab, 0x6b, + 0x5c, 0xd0, 0x2d, 0xad, 0xdb, 0x5a, 0x34, 0xdc, 0xd6, 0xc6, 0xa0, 0xc2, + 0x06, 0x2b, 0x4e, 0xef, 0x8a, 0x4a, 0x59, 0xb6, 0xfb, 0x76, 0xcc, 0x47, + 0x64, 0xa7, 0x71, 0x1a, 0xeb, 0xda, 0x54, 0x6c, 0xc7, 0xb1, 0xb7, 0x17, + 0xb4, 0x1e, 0x4c, 0x8f, 0x25, 0x1f, 0x4e, 0xcb, 0x3d, 0xc1, 0x90, 0xde, + 0xc3, 0xb9, 0x49, 0x49, 0x0b, 0xbb, 0x12, 0x27, 0x84, 0xde, 0xa3, 0x5b, + 0xde, 0x4a, 0x61, 0x86, 0xfd, 0x81, 0xc4, 0x12, 0x3b, 0xf9, 0x27, 0x65, + 0x04, 0x89, 0x1c, 0x03, 0xca, 0x4a, 0x57, 0xaa, 0x09, 0x05, 0xa3, 0xe2, + 0x90, 0xb0, 0x82, 0x44, 0x44, 0xa4, 0x1a, 0xc0, 0x4c, 0x02, 0xf7, 0x4e, + 0xa0, 0x04, 0x4a, 0xaf, 0xa9, 0xae, 0xf7, 0xd7, 0x07, 0xc0, 0xea, 0x92, + 0x91, 0xeb, 0x03, 0x5e, 0x13, 0xee, 0x3e, 0x1a, 0x29, 0xda, 0xca, 0x9e, + 0xf9, 0x61, 0xf8, 0x88, 0x43, 0xf4, 0x1b, 0xbe, 0x37, 0x1f, 0x82, 0x4a, + 0x65, 0xbe, 0x98, 0x0e, 0xfa, 0x24, 0xe8, 0x41, 0xec, 0x14, 0x4d, 0xd5, + 0x02, 0x43, 0x48, 0x3a, 0x72, 0x02, 0x45, 0x8d, 0x0d, 0x93, 0x6b, 0x49, + 0x76, 0x84, 0x0e, 0xff, 0x00, 0x04, 0xd5, 0xb5, 0xa6, 0x5b, 0x1a, 0x0d, + 0x41, 0x29, 0x29, 0x25, 0x76, 0x34, 0x80, 0x41, 0x86, 0x9d, 0x36, 0xa7, + 0x75, 0x95, 0x30, 0x90, 0x1c, 0x64, 0xeb, 0x11, 0xc2, 0x8b, 0x5f, 0x5f, + 0xa8, 0x46, 0xc0, 0x5b, 0xda, 0x07, 0x74, 0xd1, 0x24, 0x97, 0xc0, 0x1f, + 0x8f, 0xc1, 0x25, 0x29, 0x8e, 0xac, 0x41, 0x04, 0x12, 0x78, 0x90, 0x91, + 0xb4, 0xba, 0x76, 0xeb, 0x07, 0xb0, 0xee, 0xa4, 0xef, 0x48, 0x37, 0x68, + 0x24, 0xb6, 0x65, 0xa6, 0x27, 0xe4, 0x93, 0x2d, 0x20, 0x03, 0x41, 0x97, + 0x0f, 0xa4, 0x38, 0x3a, 0xa4, 0xa5, 0xbd, 0xaf, 0x3c, 0xed, 0x74, 0x6b, + 0xa7, 0x05, 0x41, 0xce, 0xad, 0xc0, 0xea, 0xe2, 0x74, 0xd5, 0x18, 0xb8, + 0x35, 0x8e, 0x75, 0xad, 0x9f, 0x1d, 0xa3, 0x5d, 0x50, 0x9d, 0x76, 0x3b, + 0x84, 0x06, 0x16, 0x0e, 0xce, 0x77, 0x74, 0x94, 0xed, 0xfd, 0x53, 0xb4, + 0xb7, 0x2b, 0x22, 0xb6, 0x13, 0xb7, 0xd3, 0x0e, 0x77, 0xc5, 0xa6, 0x3f, + 0x8a, 0xea, 0x1c, 0x6a, 0xbd, 0x9b, 0x5d, 0xee, 0x07, 0xba, 0xe7, 0xbe, + 0xa7, 0x54, 0xc2, 0x32, 0xed, 0x10, 0x4f, 0xb5, 0x9e, 0x71, 0xa9, 0x5b, + 0x36, 0x57, 0x58, 0x74, 0xbc, 0x9a, 0xde, 0x78, 0x7b, 0x74, 0x07, 0xe2, + 0x38, 0x49, 0x4d, 0x4c, 0xac, 0x3b, 0xeb, 0x97, 0x57, 0xfa, 0x46, 0x8e, + 0x3c, 0x55, 0x3a, 0xf2, 0xaf, 0xad, 0xc5, 0xae, 0x90, 0x16, 0xc0, 0x6e, + 0x44, 0x4b, 0x5e, 0xcb, 0x5b, 0xda, 0x4c, 0x1f, 0xe2, 0x85, 0x66, 0x37, + 0xac, 0x21, 0xf5, 0x00, 0x7c, 0x41, 0x07, 0x94, 0x94, 0xd6, 0xaa, 0xe6, + 0x58, 0x41, 0x74, 0x13, 0xdb, 0x5f, 0xe0, 0x8a, 0xe0, 0xd2, 0xcd, 0xba, + 0x00, 0xee, 0xea, 0xb5, 0xbd, 0x3e, 0xda, 0xbd, 0xcd, 0xd0, 0x0f, 0x82, + 0x54, 0x0b, 0x04, 0x9b, 0x66, 0x1a, 0x26, 0x75, 0xe1, 0x25, 0x36, 0x2b, + 0xc2, 0xc6, 0x80, 0x4c, 0xb8, 0x8d, 0x41, 0x84, 0x61, 0x66, 0x25, 0x0d, + 0x93, 0x1f, 0x25, 0x83, 0x97, 0xd6, 0x99, 0x5f, 0xb2, 0x96, 0x92, 0x78, + 0xd0, 0x1e, 0x56, 0x6b, 0xf2, 0x7a, 0x85, 0xf2, 0x1b, 0x22, 0x4e, 0x92, + 0x92, 0x9e, 0x97, 0x27, 0xac, 0xb1, 0xa2, 0x2b, 0x1f, 0x79, 0xd1, 0x64, + 0xdf, 0xd4, 0x1b, 0x63, 0xa5, 0xce, 0xd7, 0xcc, 0xe8, 0xa9, 0x57, 0xd3, + 0x32, 0x2d, 0x6c, 0xdd, 0x63, 0x8f, 0xe0, 0xa6, 0x3a, 0x4b, 0x07, 0x0d, + 0x2e, 0x3e, 0x29, 0x29, 0x93, 0xba, 0x83, 0x58, 0x0f, 0xb9, 0xa9, 0x8f, + 0x54, 0xad, 0xc4, 0x6e, 0x71, 0x71, 0x1f, 0x9a, 0xd1, 0xa2, 0x2d, 0x7d, + 0x35, 0x80, 0x89, 0x6e, 0xbe, 0x6a, 0xdd, 0x38, 0x14, 0x36, 0x77, 0x34, + 0x02, 0x7b, 0x24, 0xa6, 0x9d, 0x59, 0xed, 0xb6, 0x01, 0xac, 0xc7, 0x68, + 0x0a, 0x76, 0x0b, 0xad, 0xd2, 0xb1, 0xb5, 0xbe, 0x25, 0x1e, 0xc6, 0x53, + 0xf4, 0x6a, 0x61, 0x7b, 0xbb, 0x06, 0xe8, 0x14, 0x2a, 0xc3, 0xba, 0x66, + 0xd3, 0xe9, 0xb3, 0xc2, 0x75, 0x49, 0x4c, 0x6a, 0xa3, 0x58, 0x2d, 0xde, + 0xf1, 0xfe, 0xba, 0xab, 0x62, 0x88, 0xf7, 0x3f, 0x42, 0x0e, 0x80, 0x70, + 0x90, 0xb6, 0xaa, 0x86, 0xca, 0x46, 0xbe, 0x30, 0xa3, 0x6d, 0xbb, 0x75, + 0x7b, 0x83, 0x7c, 0x5c, 0x52, 0x53, 0x37, 0x3c, 0x34, 0x80, 0xd1, 0x24, + 0xa1, 0xdb, 0x91, 0xe9, 0x30, 0xc7, 0xd3, 0x32, 0x02, 0xc8, 0xcd, 0xfa, + 0xc5, 0xd3, 0x71, 0xcb, 0x98, 0xd7, 0x7a, 0xf6, 0x0e, 0x7d, 0x3d, 0x40, + 0x3f, 0x15, 0x0c, 0x1b, 0xb2, 0x3a, 0x98, 0xf5, 0x63, 0xd3, 0xaa, 0x62, + 0x3b, 0x94, 0x94, 0xb9, 0xca, 0xad, 0x99, 0x16, 0x31, 0x87, 0xd6, 0xbe, + 0xc7, 0x49, 0x6f, 0x66, 0x98, 0xe3, 0x49, 0x46, 0x27, 0xec, 0x74, 0xbb, + 0x2e, 0xd3, 0xbf, 0x26, 0x08, 0xad, 0xae, 0xd1, 0x81, 0xc7, 0x4e, 0x39, + 0xd1, 0x06, 0xac, 0x26, 0xd5, 0x97, 0x96, 0xc1, 0xed, 0x71, 0x70, 0x82, + 0x39, 0x82, 0xd6, 0xca, 0x97, 0x52, 0xc6, 0xf4, 0xfa, 0x63, 0x48, 0xff, + 0x00, 0x07, 0x60, 0xd3, 0xfa, 0xc0, 0xa4, 0xa7, 0x3a, 0x91, 0x6d, 0xb6, + 0x9b, 0x2c, 0xd5, 0xee, 0x24, 0xb8, 0xf9, 0x95, 0x7b, 0x1a, 0x03, 0xc4, + 0xf3, 0x23, 0xf1, 0x55, 0x70, 0x89, 0x26, 0x1d, 0xdf, 0x88, 0x57, 0x19, + 0x5b, 0x41, 0x0e, 0x93, 0xc8, 0x94, 0x94, 0xcf, 0x2e, 0xf7, 0xd5, 0x7b, + 0x9a, 0xd2, 0x09, 0x1a, 0x80, 0x7c, 0xf5, 0x55, 0xd9, 0x97, 0x6d, 0x6e, + 0x26, 0xd6, 0x80, 0xd3, 0xfb, 0xba, 0xc2, 0xb7, 0x92, 0xca, 0xc5, 0x9e, + 0xa3, 0x80, 0x73, 0x8b, 0x46, 0xbf, 0x0d, 0x15, 0x3d, 0xfb, 0x9c, 0x7d, + 0x9a, 0x44, 0x00, 0x08, 0x94, 0x94, 0x94, 0xe7, 0x87, 0x32, 0x18, 0xed, + 0x3b, 0xe9, 0xa2, 0x05, 0x79, 0x2f, 0x65, 0xdb, 0x3f, 0xc1, 0x1d, 0x40, + 0x03, 0xba, 0x08, 0x6d, 0xcf, 0x25, 0x8c, 0xab, 0xd3, 0x60, 0x3a, 0x92, + 0x64, 0xb9, 0x15, 0xaf, 0x2c, 0x7f, 0xbc, 0x6e, 0xda, 0x22, 0x3f, 0x86, + 0x89, 0x29, 0x27, 0xda, 0xda, 0x09, 0xdb, 0x00, 0x70, 0x7b, 0x6a, 0x88, + 0x5c, 0xd7, 0xb5, 0xae, 0x3a, 0x1f, 0x35, 0x55, 0xdf, 0xa7, 0x78, 0x0d, + 0xa8, 0x87, 0x0e, 0x24, 0x40, 0x29, 0x3f, 0x7d, 0x83, 0x61, 0xf6, 0x39, + 0xa7, 0xb2, 0x4a, 0x4e, 0xe6, 0x1d, 0x43, 0x4f, 0xb8, 0xf7, 0x52, 0xf4, + 0xab, 0x8f, 0x4b, 0x7f, 0xe9, 0x38, 0xde, 0xab, 0xcb, 0xeb, 0xac, 0xbc, + 0xba, 0x1a, 0x34, 0x24, 0xf3, 0x25, 0x47, 0x69, 0x9f, 0xa6, 0x37, 0x73, + 0x3d, 0xd2, 0x53, 0x32, 0xd6, 0x31, 0xd2, 0xd3, 0x3b, 0x75, 0xdd, 0x1f, + 0x91, 0x16, 0x8b, 0x45, 0x9e, 0xd8, 0xee, 0x48, 0x31, 0x08, 0x6e, 0xc3, + 0x0f, 0x87, 0x36, 0xe9, 0x2d, 0xd0, 0x80, 0x54, 0xeb, 0xc6, 0x82, 0xd0, + 0x1e, 0xe3, 0xb7, 0x93, 0x29, 0x29, 0x8b, 0x8e, 0xe7, 0x9d, 0x62, 0xc6, + 0xf3, 0xae, 0x8a, 0x26, 0xa0, 0xf0, 0xe7, 0x4c, 0xba, 0x23, 0x6c, 0xa2, + 0x59, 0x56, 0xa5, 0xc5, 0xb2, 0x26, 0x5a, 0x48, 0x53, 0x0d, 0x7b, 0x40, + 0x2d, 0x66, 0xe7, 0x38, 0x41, 0x9d, 0x12, 0x52, 0x20, 0x1c, 0x2b, 0x00, + 0x6b, 0xae, 0xb0, 0x35, 0x43, 0x7d, 0x4d, 0xae, 0x20, 0x99, 0x71, 0x98, + 0x03, 0x50, 0x3c, 0xca, 0xb3, 0xf6, 0x7b, 0x9c, 0x59, 0x67, 0x94, 0x00, + 0xde, 0x24, 0x2a, 0xce, 0xaa, 0xf6, 0xbe, 0x09, 0x75, 0x85, 0xd2, 0x40, + 0x8d, 0x07, 0xc5, 0x25, 0x25, 0x0d, 0x73, 0x9e, 0xd0, 0xeb, 0x46, 0xd1, + 0xae, 0xd0, 0x61, 0x4d, 0xff, 0x00, 0x67, 0x24, 0x86, 0xb0, 0x49, 0x80, + 0x86, 0x03, 0x18, 0x5a, 0x5e, 0xc0, 0x6c, 0x22, 0x09, 0xe0, 0x22, 0xb9, + 0xb6, 0xb9, 0xe5, 0xd5, 0xb5, 0xad, 0x68, 0x00, 0x69, 0xca, 0x4a, 0x74, + 0x7e, 0xac, 0xe6, 0xb7, 0x17, 0xaa, 0x7d, 0x90, 0x90, 0x1b, 0x78, 0xda, + 0xe1, 0xe0, 0xe1, 0xab, 0x7f, 0xb9, 0x75, 0xf7, 0x56, 0xcb, 0x5a, 0x5a, + 0x7e, 0xee, 0xe3, 0xcd, 0x79, 0xe3, 0xaa, 0xad, 0xc5, 0xdb, 0x88, 0x36, + 0x01, 0x27, 0xe3, 0xdb, 0x85, 0xd0, 0x74, 0xae, 0xb5, 0x99, 0x63, 0x0b, + 0x2f, 0xfd, 0x35, 0x95, 0x33, 0x70, 0x78, 0x10, 0x48, 0x11, 0xa1, 0xf1, + 0x49, 0x4e, 0xbb, 0xe8, 0xcc, 0xa1, 0xc5, 0xd5, 0x90, 0xf6, 0xf6, 0x04, + 0x28, 0x8c, 0xab, 0x9b, 0xfd, 0x26, 0x8d, 0x3f, 0x7a, 0xb3, 0xaf, 0xcc, + 0x21, 0x62, 0xfd, 0x64, 0xc6, 0xb5, 0xae, 0xf5, 0xd8, 0xfa, 0x76, 0x9d, + 0xbb, 0x88, 0x96, 0xcf, 0xc4, 0x29, 0xd9, 0xd4, 0x2b, 0xbb, 0xfa, 0x35, + 0xf4, 0xba, 0x79, 0x0e, 0x70, 0x05, 0x25, 0x33, 0x39, 0x58, 0x8e, 0x30, + 0x6b, 0x2e, 0x91, 0xf9, 0xdd, 0x90, 0xf2, 0x1b, 0x8f, 0x65, 0x6f, 0x15, + 0xbd, 0xd5, 0xb9, 0xe2, 0x25, 0xba, 0xc0, 0xf8, 0x02, 0xab, 0xdb, 0x5b, + 0x6c, 0xac, 0xd9, 0x90, 0xea, 0xe9, 0x68, 0x30, 0x1c, 0xc2, 0x1c, 0x0c, + 0xfc, 0x0a, 0xce, 0xb6, 0xa6, 0x83, 0x14, 0xe4, 0xc8, 0xf1, 0xe1, 0x25, + 0x2c, 0x31, 0xd9, 0x59, 0x6d, 0x54, 0xb1, 0xf6, 0x80, 0xe2, 0x5c, 0xf7, + 0x88, 0x24, 0x9f, 0xbd, 0x5a, 0x66, 0x39, 0x6e, 0xae, 0x66, 0xdd, 0x7b, + 0xac, 0xdb, 0x2d, 0xbe, 0xb2, 0x00, 0xc8, 0x92, 0x7f, 0x74, 0xcf, 0xe4, + 0x28, 0x6f, 0xb2, 0xf7, 0x7d, 0x3b, 0x9c, 0x7c, 0xc9, 0x80, 0x92, 0x9d, + 0x87, 0xbd, 0xb5, 0xc8, 0x73, 0x80, 0x6f, 0x72, 0x99, 0xb9, 0x98, 0x00, + 0x6b, 0x68, 0x71, 0xf0, 0x03, 0xfb, 0x96, 0x2d, 0x95, 0xe2, 0xb1, 0xa5, + 0xd7, 0x5e, 0xc9, 0x99, 0x97, 0x58, 0x27, 0xf2, 0xa0, 0x36, 0xfc, 0x27, + 0x58, 0x2a, 0xa6, 0xd7, 0x5a, 0xe3, 0xf9, 0xb5, 0x07, 0x3b, 0xf1, 0x88, + 0x49, 0x4f, 0x40, 0x7a, 0x86, 0x1b, 0x4c, 0x80, 0x49, 0x3c, 0x71, 0x2a, + 0x0e, 0xea, 0x35, 0x39, 0xb2, 0xca, 0x8e, 0xbc, 0x6e, 0x27, 0x55, 0x90, + 0xc7, 0x16, 0xb7, 0x6b, 0x31, 0xdc, 0x5d, 0x3a, 0x97, 0x39, 0xa3, 0xf1, + 0xd5, 0x33, 0xf2, 0xf2, 0x29, 0x6f, 0xa6, 0xda, 0xda, 0x4f, 0x9b, 0x89, + 0x77, 0xe0, 0x12, 0x53, 0x72, 0xce, 0xb1, 0xe9, 0xba, 0x08, 0x65, 0x4d, + 0x3c, 0x16, 0x91, 0xdb, 0x94, 0x1b, 0x73, 0xda, 0x5a, 0x5f, 0x6d, 0xbe, + 0x95, 0x23, 0x5d, 0xef, 0x31, 0x3f, 0x09, 0xd5, 0x64, 0xf5, 0x0b, 0x6f, + 0x66, 0x3b, 0xaf, 0xb9, 0xc1, 0xbb, 0x44, 0xb5, 0x8d, 0x68, 0x89, 0xe0, + 0x73, 0x2b, 0x9d, 0xae, 0xf7, 0x64, 0xda, 0x3d, 0x77, 0x97, 0x3c, 0xe8, + 0x1c, 0xe3, 0x29, 0x29, 0xea, 0x6c, 0xeb, 0xf5, 0x6c, 0x73, 0x70, 0x6b, + 0x36, 0x96, 0xf3, 0x63, 0xa4, 0x03, 0xe7, 0x1c, 0xac, 0x2c, 0xee, 0xa3, + 0xd4, 0x2c, 0xbf, 0xf5, 0xa7, 0xb9, 0xd5, 0x96, 0xcb, 0x6b, 0x1c, 0x4f, + 0x6f, 0xc5, 0x6c, 0xf4, 0x5c, 0x26, 0xfa, 0xbb, 0x1e, 0x3d, 0xb6, 0x02, + 0x10, 0xba, 0xb6, 0x13, 0x69, 0xba, 0x87, 0x11, 0xad, 0x6f, 0x73, 0x5d, + 0xe0, 0x1a, 0x04, 0xc9, 0x49, 0x4e, 0x1d, 0x58, 0x6e, 0x68, 0xdc, 0xff, + 0x00, 0xa6, 0xee, 0x47, 0x82, 0xee, 0xba, 0x0e, 0x30, 0xaf, 0xa7, 0xd2, + 0x38, 0x91, 0xbb, 0xef, 0xd5, 0x71, 0xb6, 0xd8, 0x72, 0x32, 0xeb, 0xa6, + 0x82, 0x0b, 0x5a, 0x43, 0xde, 0xe1, 0xa8, 0x80, 0xbb, 0xfe, 0x96, 0xd0, + 0x30, 0x68, 0x3f, 0xc8, 0x02, 0x07, 0x96, 0x89, 0x29, 0xac, 0x5a, 0x3e, + 0xdf, 0x93, 0xa6, 0xb0, 0xc3, 0xff, 0x00, 0x45, 0x0b, 0xa9, 0x00, 0xee, + 0x97, 0x6c, 0xf6, 0x2d, 0x3f, 0x71, 0x08, 0x8e, 0x33, 0xd4, 0x72, 0x9a, + 0x39, 0xda, 0xc1, 0xff, 0x00, 0x45, 0x2c, 0xa6, 0x17, 0xf4, 0xfb, 0xd9, + 0xdc, 0xb0, 0x9f, 0xbb, 0x54, 0x94, 0xf3, 0xd5, 0xd8, 0x41, 0x6e, 0xde, + 0x66, 0x15, 0xfa, 0x5d, 0xbd, 0xae, 0x31, 0x13, 0xc8, 0x54, 0x6a, 0x20, + 0x19, 0x63, 0x64, 0x8e, 0xe8, 0xb8, 0x97, 0x3d, 0xce, 0x33, 0xa2, 0x4a, + 0x6e, 0xe5, 0xb9, 0x95, 0x35, 0x8e, 0x78, 0x04, 0x6c, 0x32, 0xee, 0x20, + 0x4a, 0xa4, 0xcc, 0xba, 0x0c, 0x06, 0x58, 0xd7, 0x30, 0x8d, 0x04, 0x41, + 0x95, 0x63, 0x30, 0x17, 0x3c, 0xb6, 0x64, 0xb1, 0xa0, 0x01, 0xf1, 0x12, + 0xb3, 0x9d, 0x4d, 0x0f, 0x32, 0x43, 0x59, 0xb4, 0xc8, 0x31, 0xac, 0x94, + 0x94, 0xd9, 0xae, 0xd7, 0xb9, 0xbb, 0xea, 0x7b, 0x41, 0xe0, 0x92, 0x3b, + 0x28, 0x82, 0xd6, 0x3d, 0xcf, 0x99, 0x27, 0x9f, 0x8f, 0x92, 0x83, 0x5b, + 0x5b, 0x19, 0x15, 0xea, 0x41, 0xd7, 0xc9, 0x38, 0xfb, 0x45, 0x6d, 0xdc, + 0x35, 0x71, 0xe2, 0x7c, 0x12, 0x53, 0x68, 0xd9, 0x90, 0xfa, 0xa5, 0xa4, + 0x79, 0xc9, 0xd4, 0x21, 0x6c, 0xa8, 0x7e, 0x6c, 0x3a, 0x35, 0x32, 0x93, + 0x9d, 0x79, 0x31, 0x2d, 0x68, 0x89, 0x3f, 0x14, 0x0b, 0x0e, 0xfd, 0xdb, + 0x5f, 0xc1, 0x83, 0x23, 0x59, 0x49, 0x49, 0xcb, 0x58, 0x40, 0x01, 0xb3, + 0x5f, 0xe7, 0x03, 0xae, 0xa8, 0x73, 0x56, 0xe8, 0xd8, 0xdf, 0x1f, 0x92, + 0x85, 0x55, 0xdc, 0xe9, 0xf4, 0xc8, 0x20, 0x68, 0x77, 0x77, 0x44, 0xd6, + 0x7d, 0x2d, 0xad, 0x98, 0x8d, 0xdd, 0xa7, 0xe2, 0x92, 0x92, 0xbe, 0x97, + 0x56, 0xcd, 0xad, 0xe1, 0xdf, 0x8f, 0xcd, 0x2a, 0xb0, 0xae, 0x6b, 0x37, + 0x87, 0x41, 0x91, 0xa1, 0x28, 0x6c, 0xc9, 0xde, 0x77, 0x43, 0x60, 0x6a, + 0xd9, 0x28, 0x55, 0xe6, 0x5d, 0xfe, 0x14, 0x87, 0x17, 0x92, 0x36, 0xcc, + 0xec, 0xf0, 0x29, 0x29, 0xb6, 0xef, 0xb4, 0xfb, 0xa2, 0xdd, 0xbb, 0x46, + 0x80, 0x8d, 0xcd, 0x27, 0xe2, 0xa5, 0x5d, 0xd6, 0x9a, 0xbe, 0xce, 0xd0, + 0x1d, 0x6d, 0xa0, 0x83, 0x3f, 0x45, 0x52, 0x76, 0x46, 0x45, 0x5a, 0x38, + 0x3e, 0xf8, 0xe1, 0xa2, 0x06, 0xa8, 0x6d, 0xbf, 0x27, 0x73, 0x77, 0xb6, + 0x1e, 0xef, 0x70, 0x8d, 0x00, 0xf8, 0xa4, 0xa7, 0x41, 0xd7, 0x8a, 0xd8, + 0x2a, 0xde, 0x03, 0xdb, 0xed, 0x70, 0x93, 0xa4, 0xa1, 0x0b, 0xb2, 0x5b, + 0x78, 0x61, 0x6b, 0x63, 0x8d, 0xcd, 0x71, 0x2a, 0xbb, 0x32, 0x9f, 0xb5, + 0xc0, 0x35, 0xaf, 0x23, 0x57, 0x36, 0x07, 0x3e, 0x28, 0xb5, 0xde, 0xfb, + 0xab, 0xf5, 0x05, 0x62, 0x01, 0xda, 0xe7, 0x13, 0xb3, 0xee, 0x05, 0x25, + 0x36, 0x1f, 0x58, 0x00, 0xbf, 0x63, 0x88, 0x7e, 0x82, 0x4c, 0xa1, 0x7a, + 0x37, 0x9b, 0x58, 0x77, 0x11, 0x8e, 0x20, 0x73, 0xaf, 0xcd, 0x4e, 0xa7, + 0x59, 0xeb, 0x0d, 0x65, 0xb5, 0x92, 0x43, 0x66, 0x04, 0xf9, 0xf8, 0xa0, + 0xbf, 0x31, 0xfb, 0xde, 0xed, 0xcd, 0xac, 0x03, 0xf4, 0x39, 0x25, 0xde, + 0x01, 0x25, 0x2d, 0x63, 0x0d, 0x2e, 0x7c, 0x35, 0xde, 0xef, 0xce, 0x02, + 0x7d, 0xab, 0x53, 0xea, 0x9b, 0x6e, 0x77, 0x54, 0x78, 0xb1, 0xc5, 0xd5, + 0xbe, 0x9b, 0x01, 0x69, 0xed, 0xc2, 0xc9, 0xaf, 0x34, 0xed, 0x39, 0x16, + 0x1d, 0xac, 0xfc, 0xd1, 0x12, 0x4f, 0x8e, 0x8b, 0x7f, 0xea, 0x83, 0xdb, + 0x6e, 0x56, 0x4e, 0x44, 0x47, 0xd0, 0xae, 0x7f, 0xaf, 0x2e, 0xff, 0x00, + 0xbe, 0xa4, 0xa7, 0x53, 0x0f, 0x12, 0xb3, 0x65, 0xf8, 0xef, 0x12, 0xd7, + 0x8d, 0xcd, 0x3e, 0x6d, 0xd0, 0xfe, 0x05, 0x50, 0xcb, 0xe8, 0xd5, 0xb6, + 0xc2, 0xe0, 0xdf, 0x81, 0x5a, 0xb5, 0x9d, 0x99, 0x26, 0x3b, 0x3b, 0x5f, + 0x87, 0x75, 0x72, 0xd6, 0x07, 0x0f, 0x1f, 0x8a, 0x4a, 0x79, 0xa3, 0xd3, + 0xea, 0xb1, 0x81, 0xae, 0x67, 0x02, 0x10, 0x7f, 0x62, 0xe2, 0x93, 0xc6, + 0xab, 0xa4, 0x7e, 0x2b, 0x7b, 0x69, 0x2a, 0xb5, 0x98, 0xc5, 0xae, 0x04, + 0x72, 0x92, 0x9c, 0x41, 0xd1, 0x31, 0x87, 0xe6, 0x7f, 0x05, 0x37, 0x74, + 0x9c, 0x3a, 0x5b, 0xea, 0x58, 0xc1, 0xb7, 0xb4, 0xea, 0x49, 0xf2, 0x5a, + 0x96, 0x9a, 0xeb, 0x61, 0x75, 0x9f, 0xd9, 0x1d, 0xc9, 0x54, 0x45, 0x37, + 0xe6, 0xd9, 0x02, 0x20, 0x71, 0xe0, 0xd0, 0x92, 0x9c, 0xdf, 0xd9, 0xed, + 0xca, 0xb8, 0x35, 0x95, 0x01, 0xfb, 0xad, 0x03, 0x40, 0x3c, 0x4a, 0xb8, + 0x28, 0xc6, 0xc5, 0xaf, 0xd1, 0xc6, 0x1e, 0xe3, 0xfc, 0xe5, 0xbe, 0x3f, + 0xc9, 0x6f, 0x92, 0xb6, 0xed, 0x94, 0xb3, 0xd0, 0xa3, 0x59, 0xd2, 0xcb, + 0x3b, 0xbb, 0xe0, 0x99, 0xb5, 0x57, 0x5d, 0x65, 0xc4, 0x71, 0xaa, 0x4a, + 0x6a, 0xd8, 0xd2, 0xc6, 0x48, 0xd3, 0xc0, 0xf0, 0xa9, 0xb1, 0xa0, 0x97, + 0x58, 0xfd, 0x63, 0xc3, 0x55, 0x62, 0xef, 0x57, 0x2a, 0xdf, 0x4d, 0x93, + 0xb7, 0x92, 0x4a, 0xa3, 0xd5, 0xb3, 0x2a, 0xe9, 0xd8, 0xfb, 0x1a, 0x77, + 0x59, 0xc3, 0x47, 0x89, 0xfe, 0xe0, 0x92, 0x9c, 0x3f, 0xac, 0x39, 0x7b, + 0xed, 0x18, 0xe3, 0xe8, 0xc4, 0xbb, 0xe3, 0xd9, 0x66, 0x9c, 0x47, 0xb5, + 0x9e, 0xab, 0x3f, 0x49, 0x49, 0xfc, 0xf6, 0xf6, 0xf8, 0xf8, 0x2b, 0xf6, + 0x74, 0xf7, 0x5f, 0x53, 0x6e, 0x0e, 0xfd, 0x60, 0x8d, 0xce, 0x27, 0x87, + 0x13, 0xaa, 0xaf, 0x86, 0x73, 0x31, 0xb2, 0x45, 0x55, 0xb7, 0xf4, 0x96, + 0x1d, 0xbe, 0x9b, 0x84, 0x87, 0x4f, 0x88, 0x49, 0x4e, 0xdf, 0xd5, 0xeb, + 0x33, 0x6c, 0x22, 0xc7, 0x3f, 0xf4, 0x14, 0x68, 0xd0, 0x40, 0x97, 0x3b, + 0xe3, 0xe4, 0xae, 0xfd, 0x6c, 0x01, 0xcd, 0xa9, 0xa0, 0xc3, 0x2f, 0x73, + 0x03, 0x88, 0xf0, 0x25, 0x59, 0xc5, 0xc6, 0x66, 0x3e, 0x3b, 0x6a, 0x63, + 0x03, 0x63, 0x90, 0x38, 0xdc, 0x75, 0x2a, 0x8f, 0xd6, 0x36, 0x3b, 0x27, + 0x0a, 0x96, 0xb7, 0xe9, 0x37, 0xdb, 0xe5, 0xed, 0x3c, 0xfd, 0xc5, 0x25, + 0x3c, 0xd5, 0x0e, 0xb1, 0xae, 0x7e, 0x2e, 0x38, 0xf7, 0x58, 0xe2, 0x1d, + 0x67, 0x7d, 0x81, 0x7a, 0x27, 0x47, 0x7f, 0xea, 0xde, 0x9c, 0xce, 0xc0, + 0x0b, 0x7e, 0x04, 0x2f, 0x3f, 0xac, 0x88, 0x38, 0xb8, 0x63, 0x73, 0x9e, + 0x3f, 0x4b, 0x77, 0x72, 0x07, 0x31, 0xe0, 0xd5, 0xd8, 0xf4, 0x5c, 0x87, + 0x0a, 0xb1, 0x6c, 0x76, 0x81, 0xcd, 0x0d, 0x77, 0xe4, 0x49, 0x4d, 0x81, + 0x3f, 0xb5, 0xf2, 0xc7, 0x95, 0x7f, 0xf5, 0x0a, 0xcb, 0xd8, 0x4d, 0x45, + 0x83, 0xf3, 0xda, 0x47, 0xe0, 0xa9, 0xb5, 0xe7, 0xf6, 0xf6, 0x4b, 0x3b, + 0x16, 0x56, 0x7e, 0xe0, 0xb5, 0x2a, 0x68, 0x30, 0x92, 0x9e, 0x45, 0xa7, + 0x65, 0x6f, 0x26, 0x1a, 0x1a, 0xd5, 0x57, 0x1f, 0x31, 0x8d, 0x74, 0xb0, + 0x12, 0x7c, 0xfc, 0xd1, 0xed, 0x60, 0x07, 0x25, 0xa4, 0xe8, 0xc7, 0x38, + 0x47, 0x90, 0x30, 0xa9, 0xe3, 0x35, 0xbe, 0xa0, 0x68, 0x9e, 0x65, 0x25, + 0x3b, 0x4f, 0xa8, 0xda, 0xe6, 0xd9, 0xba, 0x0b, 0x80, 0xdd, 0x1c, 0xf0, + 0x96, 0x4e, 0x36, 0x38, 0xc7, 0x03, 0x74, 0x58, 0xc3, 0xaf, 0x79, 0x28, + 0x2e, 0xb7, 0xd3, 0xc8, 0x20, 0x34, 0x9d, 0x00, 0x3a, 0x12, 0x24, 0x04, + 0x1b, 0xb2, 0x5e, 0xe7, 0xcd, 0x75, 0x17, 0x10, 0x64, 0x89, 0xd7, 0xf1, + 0x49, 0x49, 0x76, 0xd1, 0x58, 0x12, 0xd7, 0x3b, 0xbb, 0xe3, 0x48, 0x4f, + 0x48, 0xc2, 0xb5, 0xc6, 0x0d, 0xad, 0x11, 0x2e, 0x6b, 0x87, 0x1e, 0x4a, + 0x2c, 0xb7, 0x25, 0xe1, 0xed, 0x7d, 0x5e, 0x9e, 0x93, 0xe2, 0x93, 0x2c, + 0xbe, 0x1a, 0x5f, 0x59, 0x2d, 0x3a, 0x36, 0x3c, 0x4f, 0x72, 0x92, 0x97, + 0xb6, 0x9c, 0x6b, 0x9c, 0x58, 0xdd, 0xcc, 0x9e, 0x65, 0x2f, 0xb3, 0xe3, + 0x30, 0x80, 0x1f, 0xb8, 0x1d, 0x76, 0xce, 0x93, 0xe6, 0x88, 0xd1, 0xb6, + 0xf1, 0x5b, 0x5a, 0x25, 0xe3, 0xdf, 0x05, 0x0f, 0x2e, 0xb6, 0xb1, 0xa1, + 0xae, 0xa7, 0x70, 0x6f, 0xd1, 0x2c, 0x30, 0xe9, 0x29, 0x29, 0x9d, 0x8e, + 0xc7, 0x63, 0x5a, 0x24, 0x7a, 0x87, 0xe9, 0x00, 0x74, 0xf9, 0x26, 0xd9, + 0x57, 0x1b, 0x46, 0xde, 0x66, 0x4c, 0xfd, 0xc8, 0x63, 0x1a, 0xd7, 0x34, + 0x0a, 0xaa, 0xda, 0xf8, 0xd2, 0x75, 0x31, 0xf1, 0x53, 0xdd, 0x66, 0xde, + 0x47, 0xab, 0x11, 0x12, 0x26, 0x78, 0x49, 0x4d, 0x37, 0xe3, 0xf4, 0xfb, + 0xc8, 0x77, 0xac, 0xea, 0xea, 0x60, 0x8d, 0xd5, 0x6a, 0x27, 0xcd, 0x3b, + 0x6a, 0xae, 0xaa, 0x80, 0xc6, 0xfd, 0x2b, 0xdc, 0x48, 0xf5, 0x63, 0x90, + 0x3c, 0x91, 0xea, 0xa3, 0x25, 0xad, 0xd8, 0x4d, 0x7e, 0x99, 0xd4, 0xb5, + 0xb1, 0xc8, 0x4e, 0xeb, 0x4b, 0x5c, 0x1a, 0xe2, 0xc6, 0x6d, 0x33, 0xbb, + 0x41, 0xc7, 0x69, 0x49, 0x49, 0x43, 0x4d, 0xb8, 0xa2, 0xcb, 0xda, 0xda, + 0x9a, 0xcd, 0x5c, 0xfe, 0x1c, 0xe8, 0xf2, 0x43, 0xae, 0xfe, 0x9c, 0xda, + 0xb7, 0x16, 0x97, 0x76, 0x93, 0xd8, 0x9e, 0x15, 0x77, 0x5f, 0x91, 0x91, + 0x60, 0x6b, 0x06, 0xea, 0x86, 0x92, 0xdd, 0x47, 0xf5, 0x94, 0x5a, 0xdb, + 0x3d, 0x71, 0xa0, 0x7d, 0x00, 0x6b, 0x20, 0x6a, 0xe4, 0x94, 0xda, 0x06, + 0x97, 0xc6, 0xc0, 0xd6, 0x38, 0xe9, 0xb1, 0xa2, 0x49, 0xf3, 0xd1, 0x49, + 0x94, 0xb6, 0xb7, 0x97, 0x59, 0x58, 0x86, 0xeb, 0x3f, 0x0e, 0xfa, 0xa0, + 0x07, 0xde, 0xe7, 0xb8, 0x8d, 0xb5, 0x57, 0x58, 0xf6, 0x35, 0xa3, 0xdc, + 0x4f, 0x89, 0x52, 0xfb, 0x23, 0x8b, 0x45, 0x8f, 0xbb, 0x78, 0xbf, 0x8e, + 0xd1, 0xb7, 0xb1, 0x09, 0x29, 0xb7, 0x73, 0x69, 0xb0, 0x17, 0xd5, 0x0d, + 0xb1, 0xf1, 0x0d, 0x06, 0x46, 0xaa, 0xb1, 0xc5, 0x6b, 0xfd, 0xf7, 0x89, + 0xb2, 0x76, 0xc3, 0x4e, 0x93, 0xf2, 0x43, 0x65, 0x4e, 0xc6, 0x7b, 0x9e, + 0x6c, 0x60, 0x6c, 0x6b, 0x03, 0xb8, 0xf8, 0xa9, 0xfa, 0x8f, 0xb1, 0xcc, + 0x77, 0xd1, 0x04, 0x48, 0x7c, 0xe8, 0x7c, 0x04, 0x24, 0xa6, 0x39, 0xcd, + 0xb9, 0xb9, 0x0c, 0xae, 0xb6, 0x56, 0x3d, 0x20, 0x27, 0xb9, 0x92, 0xba, + 0xcf, 0xab, 0x8d, 0xdb, 0x87, 0x4d, 0x90, 0x01, 0xba, 0xf7, 0x38, 0xc4, + 0x70, 0xc6, 0xc2, 0xe5, 0x9e, 0x69, 0x73, 0xdc, 0xdd, 0xfb, 0xde, 0x1b, + 0xab, 0x8f, 0xb4, 0x40, 0x5d, 0x87, 0x4c, 0xa9, 0xb4, 0x53, 0xd3, 0xa9, + 0x6f, 0xe6, 0xd2, 0xeb, 0x0f, 0xc5, 0xe0, 0xbb, 0xf8, 0xa4, 0xa4, 0xb9, + 0x30, 0xcc, 0xbf, 0x09, 0x2a, 0xe0, 0x74, 0xb7, 0xc4, 0x2a, 0xbd, 0x46, + 0x05, 0xac, 0x7f, 0x1c, 0x27, 0x7d, 0xfe, 0x9d, 0x01, 0xcd, 0x82, 0xe3, + 0xdb, 0xc1, 0x25, 0x36, 0x4b, 0xda, 0x04, 0xbc, 0x80, 0x3c, 0x4a, 0xaf, + 0x76, 0x65, 0x30, 0x43, 0x06, 0xe3, 0xe2, 0x74, 0x0b, 0x38, 0xba, 0xeb, + 0xdf, 0x22, 0x5e, 0x7f, 0x00, 0xac, 0x35, 0xd4, 0x63, 0x69, 0x6f, 0xe9, + 0x2e, 0xfd, 0xcd, 0x20, 0x24, 0xa6, 0x23, 0x0d, 0xf9, 0x0f, 0x2f, 0x79, + 0xf6, 0xf7, 0x71, 0xe3, 0xe4, 0x9a, 0xdb, 0x1a, 0xd6, 0xfa, 0x18, 0xfe, + 0xd6, 0x7e, 0x73, 0xbb, 0xb9, 0x4a, 0xdc, 0x9b, 0xad, 0x6e, 0xa4, 0x6d, + 0x1f, 0x9a, 0x38, 0x43, 0x0d, 0xfc, 0xe7, 0x1e, 0x7c, 0x52, 0x53, 0x06, + 0xd6, 0x39, 0xfb, 0x95, 0x7c, 0xbb, 0x0b, 0xe2, 0x9a, 0xf5, 0x27, 0x98, + 0x56, 0x6d, 0x2d, 0x0d, 0xd7, 0xbe, 0x83, 0xcd, 0x66, 0x75, 0x1e, 0xa3, + 0x8f, 0xd2, 0xaa, 0xdd, 0x01, 0xf9, 0x56, 0x03, 0xb1, 0xa4, 0xcc, 0x7f, + 0xb1, 0x25, 0x27, 0xb5, 0xd4, 0xe0, 0xd0, 0x5d, 0x63, 0xc0, 0x71, 0xfd, + 0xe2, 0x04, 0x95, 0xc3, 0xf5, 0x0f, 0xb5, 0x64, 0xfa, 0xb9, 0x97, 0xe8, + 0x43, 0xf6, 0x86, 0xf6, 0x0d, 0xf2, 0xf2, 0x52, 0xcb, 0x76, 0x67, 0x50, + 0x16, 0xe6, 0x58, 0xe1, 0x66, 0xcf, 0xa4, 0x27, 0x51, 0xf0, 0x6f, 0x82, + 0x3f, 0x4a, 0x61, 0xb7, 0x0c, 0xb5, 0xfe, 0xe6, 0x97, 0x38, 0x06, 0x9d, + 0x74, 0x49, 0x48, 0xba, 0x67, 0x50, 0x68, 0xdb, 0x8f, 0x79, 0x81, 0xc3, + 0x1e, 0x7f, 0x21, 0x5b, 0xf4, 0x63, 0xd5, 0x65, 0xb5, 0x5e, 0x44, 0xba, + 0x99, 0xda, 0x47, 0x98, 0x85, 0xce, 0xf5, 0x0e, 0x99, 0xf6, 0x72, 0xc7, + 0xd2, 0x77, 0x36, 0xc7, 0x6d, 0x0c, 0xee, 0x09, 0xf0, 0x5d, 0x3f, 0x4a, + 0xc3, 0xfb, 0x36, 0x33, 0x29, 0x02, 0x5c, 0x07, 0xbc, 0xff, 0x00, 0x28, + 0xea, 0x52, 0x53, 0x68, 0x93, 0xb4, 0xf6, 0xf0, 0x59, 0x3d, 0x50, 0x97, + 0x62, 0x3d, 0xa3, 0xb6, 0xf8, 0xf9, 0xb5, 0x6c, 0xe4, 0xd7, 0xb2, 0xb2, + 0x67, 0xc1, 0x64, 0x65, 0xc1, 0xa0, 0xb7, 0xb8, 0x2d, 0x73, 0x87, 0x93, + 0xa4, 0x24, 0xa7, 0x0b, 0x02, 0xe6, 0x1a, 0x86, 0x2d, 0x4c, 0x22, 0xeb, + 0xdd, 0xb2, 0xcb, 0x3f, 0x92, 0x4f, 0x6f, 0x92, 0xea, 0x1b, 0x65, 0x2c, + 0x1e, 0x85, 0x4f, 0x05, 0xd5, 0x34, 0x7b, 0x5b, 0xf9, 0xa0, 0x70, 0xb9, + 0xcd, 0xf8, 0x98, 0x45, 0xed, 0xa0, 0x39, 0xd9, 0x4e, 0x04, 0x07, 0x1e, + 0x18, 0x0f, 0x82, 0xbf, 0xd3, 0x2f, 0xc4, 0xab, 0x6e, 0x35, 0x41, 0xd6, + 0xe4, 0x5b, 0x26, 0xdb, 0x47, 0xd1, 0x6c, 0x09, 0x8f, 0x82, 0x4a, 0x75, + 0xa9, 0x76, 0xee, 0xb9, 0xbf, 0xfd, 0x25, 0x6d, 0xfc, 0x80, 0xad, 0xfa, + 0xc6, 0xa4, 0x05, 0xcd, 0x63, 0x38, 0x8e, 0xa2, 0xc7, 0x77, 0x00, 0x0f, + 0xbb, 0x45, 0xd2, 0xb3, 0x89, 0xef, 0xd9, 0x25, 0x3c, 0x9f, 0x51, 0xac, + 0xb6, 0xec, 0xc1, 0xc0, 0x16, 0x7f, 0xd5, 0x6a, 0xb3, 0xf0, 0xea, 0xac, + 0xdd, 0x30, 0x49, 0x9d, 0x16, 0xcf, 0x5d, 0x69, 0x16, 0x5f, 0xc0, 0x0e, + 0xd8, 0xe9, 0xf9, 0x47, 0xf0, 0x59, 0x5d, 0x39, 0xd0, 0xf7, 0x39, 0xd0, + 0x00, 0x04, 0xc9, 0xd2, 0x20, 0x24, 0xa6, 0xd5, 0xf9, 0xfe, 0x8c, 0xb9, + 0xad, 0x91, 0x27, 0x64, 0x7e, 0x71, 0x1e, 0x29, 0xac, 0xcd, 0x66, 0xc1, + 0x63, 0xe8, 0x8b, 0x0e, 0xa1, 0xc4, 0x68, 0xa9, 0xd8, 0x5e, 0x68, 0x63, + 0xaa, 0xad, 0xf7, 0x6c, 0x24, 0xcb, 0x4f, 0xb6, 0x3e, 0x08, 0x42, 0xfb, + 0x32, 0x1f, 0xdd, 0xee, 0x69, 0x97, 0x37, 0x80, 0x07, 0x80, 0x09, 0x29, + 0xd2, 0x36, 0x34, 0x8d, 0xfb, 0xc8, 0xb0, 0x8f, 0x71, 0x02, 0x74, 0x28, + 0x76, 0x66, 0x57, 0x8e, 0x5a, 0xd6, 0x6e, 0x7f, 0xef, 0x35, 0xc7, 0x43, + 0x2a, 0x0c, 0xac, 0xb4, 0x68, 0xe8, 0x73, 0xe4, 0x41, 0xe4, 0x7c, 0x02, + 0x9d, 0xa1, 0x9b, 0x43, 0x1a, 0x24, 0x7e, 0xf3, 0x9b, 0x1f, 0x7a, 0x4a, + 0x47, 0x5d, 0xb6, 0x32, 0xf0, 0xfa, 0xbd, 0x8d, 0x76, 0xac, 0x27, 0xc3, + 0xba, 0x9e, 0xda, 0xdc, 0x0b, 0x9c, 0xf3, 0xa9, 0x3b, 0x9c, 0xe9, 0x12, + 0x67, 0x48, 0x84, 0x3c, 0xac, 0x77, 0xbd, 0xad, 0x63, 0x1d, 0x2e, 0x77, + 0xd1, 0xdb, 0xf9, 0x14, 0x5c, 0xcb, 0x4b, 0x5b, 0x5b, 0xcc, 0x3c, 0x0d, + 0x4b, 0x78, 0x1e, 0x49, 0x29, 0x2d, 0xb9, 0x38, 0xfb, 0x1d, 0xea, 0x39, + 0xe6, 0x48, 0x04, 0xd7, 0x21, 0x03, 0xd1, 0xc4, 0xf4, 0xf6, 0xee, 0x7c, + 0x73, 0x13, 0xac, 0x4f, 0x8a, 0x0f, 0xa3, 0x73, 0xc1, 0x6e, 0xed, 0xc1, + 0xc7, 0x40, 0x3c, 0x54, 0xff, 0x00, 0x66, 0xf5, 0x1d, 0xbc, 0xb2, 0x7c, + 0x27, 0x58, 0xf8, 0x24, 0xa6, 0x15, 0x59, 0x8b, 0x5d, 0xa3, 0x75, 0xda, + 0x8f, 0x10, 0x47, 0xc9, 0x5a, 0xab, 0x1d, 0x97, 0x3c, 0xd9, 0x6d, 0x43, + 0xd2, 0x99, 0x6b, 0x77, 0x4e, 0x9e, 0x61, 0x0a, 0x9b, 0xaa, 0x73, 0xf6, + 0x7a, 0x62, 0xcd, 0xdf, 0x9b, 0x12, 0x7f, 0x22, 0xb0, 0xda, 0xd8, 0xf6, + 0x16, 0xbe, 0xd3, 0x5e, 0xe9, 0x96, 0x86, 0xc0, 0xfe, 0xaa, 0x4a, 0x48, + 0x00, 0x2c, 0xf5, 0x2b, 0x25, 0xa1, 0xb2, 0x1a, 0xc6, 0x90, 0x0e, 0xdf, + 0x12, 0x10, 0xeb, 0x7b, 0x9a, 0xe3, 0xb2, 0xbb, 0x1c, 0x40, 0x2e, 0xde, + 0x07, 0xe7, 0x78, 0xa5, 0x91, 0x46, 0x55, 0x0c, 0x16, 0x63, 0x06, 0x8a, + 0xc7, 0xb5, 0x8d, 0x1e, 0xe7, 0xc9, 0xee, 0x54, 0x58, 0x72, 0x2b, 0x9a, + 0xb4, 0x87, 0x37, 0xdd, 0x2e, 0x3f, 0x34, 0x94, 0xb0, 0xb7, 0x21, 0xee, + 0x69, 0x7f, 0xb2, 0xaf, 0xa4, 0x4b, 0xb4, 0x3b, 0xb8, 0x12, 0x99, 0xcd, + 0x7b, 0xdc, 0xd0, 0x1c, 0xd7, 0x96, 0xea, 0x48, 0x9d, 0x20, 0xa5, 0x8f, + 0x9a, 0xd7, 0xb8, 0x39, 0xf4, 0x30, 0x37, 0x74, 0x6e, 0xd7, 0x48, 0xfd, + 0xd5, 0x3f, 0x5d, 0x85, 0xee, 0x36, 0x80, 0x76, 0x09, 0xe3, 0xe9, 0x4a, + 0x4a, 0x5a, 0xec, 0x67, 0x64, 0x31, 0x8d, 0x0c, 0x6f, 0xa4, 0x64, 0xbe, + 0x5c, 0x77, 0x7d, 0xc8, 0x3f, 0x68, 0xae, 0xc7, 0x37, 0x1a, 0xb6, 0x8d, + 0xb5, 0xf2, 0xe9, 0xec, 0x15, 0xaa, 0xae, 0x2f, 0x05, 0xef, 0x73, 0x58, + 0xd7, 0x38, 0x0f, 0x4c, 0xea, 0x00, 0xf8, 0x0d, 0x75, 0x52, 0xd9, 0x87, + 0x5b, 0x8e, 0xca, 0x81, 0x0f, 0x92, 0xe0, 0x04, 0x70, 0x52, 0x53, 0x56, + 0xb3, 0x5d, 0xd7, 0x36, 0xba, 0xd8, 0x2d, 0x73, 0x9c, 0xd6, 0x0d, 0xdc, + 0xcb, 0x8c, 0x2f, 0x41, 0xb9, 0xfe, 0x9e, 0x61, 0x73, 0x44, 0x8a, 0x6b, + 0xda, 0x07, 0xca, 0x17, 0x1f, 0xd1, 0x71, 0xeb, 0xc9, 0xeb, 0xb8, 0x84, + 0x37, 0x6e, 0xc7, 0x07, 0x39, 0xb3, 0xd9, 0x80, 0xbb, 0xf8, 0x2e, 0xbb, + 0x7b, 0x0d, 0xf9, 0x0f, 0x7b, 0x77, 0x34, 0x48, 0x8f, 0x18, 0x09, 0x29, + 0xcf, 0xea, 0x15, 0x5f, 0x95, 0x88, 0xcc, 0x96, 0x34, 0xc1, 0x01, 0xc0, + 0xcf, 0x82, 0x9f, 0x4e, 0xc7, 0xc8, 0x7b, 0x1a, 0xeb, 0x1b, 0xb5, 0x8d, + 0xe7, 0x71, 0x89, 0x08, 0x4e, 0xb3, 0xd6, 0xe9, 0x4c, 0xf4, 0x8b, 0x9a, + 0xc6, 0x87, 0xb4, 0x36, 0x78, 0x87, 0x15, 0x57, 0x07, 0x22, 0xd7, 0x8d, + 0xaf, 0x79, 0x70, 0x06, 0x35, 0x29, 0x29, 0xd3, 0xc8, 0xc8, 0xb0, 0x0d, + 0xb4, 0x8f, 0x4d, 0x83, 0xb0, 0xe7, 0xef, 0x54, 0xc6, 0xae, 0xdc, 0x48, + 0x99, 0xd4, 0xa5, 0x9b, 0x9b, 0x8d, 0x8b, 0x53, 0x5d, 0x7b, 0xf6, 0xce, + 0x81, 0xa3, 0x52, 0x48, 0x5c, 0xe6, 0x4f, 0x5f, 0xcc, 0xf5, 0xe2, 0xa6, + 0x8a, 0x98, 0xc7, 0x49, 0x69, 0xd7, 0x74, 0x7e, 0xf1, 0xf0, 0x3e, 0x49, + 0x29, 0xd2, 0xea, 0x1d, 0x70, 0xd2, 0xdb, 0x2b, 0xc1, 0x2d, 0xb2, 0xda, + 0xf5, 0xb1, 0xc3, 0x50, 0xc6, 0xf0, 0x48, 0xf1, 0x84, 0x4e, 0x81, 0xd5, + 0x3e, 0xd3, 0x8a, 0xea, 0xee, 0x7e, 0xeb, 0xea, 0x71, 0x24, 0xbb, 0x59, + 0x6b, 0x8c, 0xcf, 0xde, 0xb0, 0xec, 0xbe, 0x9a, 0xb3, 0x59, 0x9f, 0x48, + 0xfd, 0x0d, 0xba, 0xba, 0xbf, 0xdd, 0x9d, 0x2c, 0x61, 0xfb, 0xe5, 0x3d, + 0x61, 0xdd, 0x2b, 0xaa, 0x32, 0xc6, 0x92, 0x31, 0x6d, 0x82, 0x0f, 0x8d, + 0x6f, 0xfe, 0xe4, 0x94, 0xeb, 0x67, 0xfd, 0x61, 0xa2, 0x8b, 0xcd, 0x7b, + 0x4d, 0xae, 0x6e, 0x9a, 0x68, 0xd6, 0xff, 0x00, 0xb5, 0x63, 0x75, 0x0c, + 0xcc, 0x3e, 0xa6, 0x0b, 0xb6, 0x9a, 0x72, 0xc0, 0x1b, 0x09, 0x32, 0x1e, + 0x3f, 0x74, 0x9e, 0xca, 0x35, 0xe3, 0xd5, 0x91, 0xd5, 0x9f, 0x46, 0x44, + 0x80, 0xe7, 0xbe, 0x40, 0xd0, 0x92, 0x24, 0x8d, 0x50, 0xfa, 0x9f, 0x46, + 0x38, 0xf3, 0x6e, 0x39, 0x2e, 0x60, 0xe5, 0x87, 0x52, 0x07, 0x8f, 0x9a, + 0x4a, 0x73, 0x5b, 0x75, 0x94, 0x1b, 0x1a, 0x34, 0xde, 0xd2, 0xc7, 0x34, + 0xff, 0x00, 0xaf, 0x64, 0x36, 0xfa, 0xd5, 0x10, 0xe6, 0xee, 0x61, 0xe4, + 0x11, 0x21, 0x4f, 0x6b, 0xaf, 0xe3, 0x5b, 0x00, 0xff, 0x00, 0x38, 0x0f, + 0xe2, 0x15, 0xee, 0x95, 0x6e, 0x53, 0xec, 0x6e, 0x35, 0x70, 0xea, 0x81, + 0xdc, 0xed, 0xc2, 0x61, 0xbd, 0xf9, 0x49, 0x4d, 0xae, 0x87, 0x55, 0xf9, + 0x36, 0x9c, 0xab, 0xde, 0xe7, 0xb6, 0xaf, 0x65, 0x7b, 0xb5, 0xd4, 0xf2, + 0x7e, 0x4b, 0xac, 0xc6, 0x60, 0x65, 0x5b, 0x8f, 0x27, 0x85, 0x43, 0x16, + 0x96, 0x88, 0x6b, 0x00, 0x68, 0x9e, 0x00, 0x80, 0xb5, 0x0c, 0x34, 0x01, + 0xf7, 0x24, 0xa4, 0x37, 0x33, 0xd5, 0x70, 0x61, 0x30, 0xd8, 0xdc, 0xf3, + 0xe0, 0xd0, 0xb2, 0x8d, 0x47, 0x21, 0xd9, 0x36, 0xb7, 0xf3, 0xe4, 0x34, + 0x79, 0x37, 0x85, 0xa5, 0x9f, 0x67, 0xd9, 0xb1, 0xdd, 0x59, 0x93, 0x75, + 0xc2, 0x5d, 0xdb, 0x6b, 0x3b, 0x05, 0x52, 0x81, 0xb2, 0xa6, 0x34, 0xfc, + 0x4f, 0xcd, 0x25, 0x3c, 0xe6, 0x7b, 0x1a, 0x1c, 0xd1, 0x5d, 0x73, 0x6d, + 0xa2, 0x5c, 0xef, 0xe4, 0xb7, 0x48, 0x1f, 0x12, 0xb6, 0x7a, 0x7e, 0x0b, + 0x30, 0x6a, 0xda, 0xe1, 0x39, 0x0f, 0x13, 0x63, 0xa3, 0x41, 0xfc, 0x91, + 0xf0, 0x52, 0x66, 0x0b, 0x9f, 0x99, 0x55, 0x6d, 0x6f, 0xb2, 0xab, 0x37, + 0x3a, 0x7c, 0x00, 0x96, 0xfe, 0x30, 0xaf, 0xe4, 0xb0, 0xb2, 0x7c, 0x00, + 0xd1, 0x25, 0x34, 0x2a, 0x8f, 0xb6, 0x8f, 0x3d, 0x17, 0x4f, 0x56, 0xad, + 0x07, 0xc4, 0x68, 0xb9, 0x5a, 0x9d, 0x39, 0x6d, 0xf8, 0x80, 0xba, 0x9a, + 0x38, 0x02, 0x60, 0x8f, 0xf7, 0xa4, 0xa7, 0x07, 0xeb, 0x23, 0x40, 0x79, + 0xfe, 0x55, 0x5f, 0x8b, 0x5d, 0xfe, 0xd5, 0x81, 0x8b, 0x3e, 0x95, 0xae, + 0x6b, 0x43, 0xa4, 0x6d, 0x87, 0x18, 0x10, 0xed, 0x0c, 0xae, 0x9b, 0xeb, + 0x1b, 0x03, 0x99, 0x59, 0x3d, 0xdb, 0x63, 0x3e, 0xf1, 0x21, 0x73, 0x58, + 0xd6, 0xfa, 0x58, 0xc4, 0x00, 0xd7, 0x3e, 0xc3, 0x2d, 0xdd, 0xc0, 0x0d, + 0xf8, 0xfc, 0x52, 0x52, 0xcf, 0xcf, 0xb2, 0x86, 0x8a, 0x43, 0x00, 0x68, + 0x3a, 0x01, 0x24, 0x2b, 0x38, 0x57, 0x1c, 0x97, 0x38, 0xd8, 0x45, 0x3f, + 0x9c, 0x21, 0xb3, 0xb9, 0x0d, 0x97, 0xe5, 0x3e, 0x04, 0x37, 0xb9, 0x2e, + 0x30, 0x7e, 0x69, 0x1a, 0xd9, 0x73, 0x23, 0x71, 0x61, 0x6e, 0xbb, 0xc0, + 0x82, 0x7e, 0x09, 0x29, 0x7b, 0x3a, 0x83, 0x31, 0xf2, 0x83, 0x8d, 0x61, + 0xcd, 0x27, 0x61, 0xb7, 0xe3, 0xe0, 0x12, 0x6e, 0x65, 0x4e, 0xdc, 0xe7, + 0xbd, 0xdb, 0x4e, 0xac, 0x69, 0x12, 0xd9, 0xed, 0x24, 0x21, 0x37, 0x1e, + 0xef, 0x4c, 0x54, 0x40, 0x0c, 0x7c, 0xb8, 0x58, 0xf3, 0xc4, 0x15, 0x76, + 0x86, 0x06, 0xd4, 0x00, 0x6b, 0x36, 0x6a, 0x1e, 0x48, 0x3a, 0xcf, 0x82, + 0x4a, 0x6a, 0x97, 0xd6, 0xe6, 0xb3, 0xde, 0x6a, 0x71, 0x24, 0x39, 0xcd, + 0x32, 0x40, 0x45, 0x36, 0x63, 0x0a, 0x5c, 0xda, 0x81, 0xdb, 0x30, 0xd2, + 0x64, 0x93, 0xa7, 0x27, 0xc1, 0x56, 0xb7, 0x13, 0x1d, 0x80, 0x8a, 0xc1, + 0x7b, 0xac, 0x74, 0x01, 0xfb, 0xa0, 0x23, 0xd9, 0x56, 0xda, 0x48, 0xac, + 0x86, 0xf1, 0xbb, 0x52, 0x3e, 0xe4, 0x94, 0xb1, 0x60, 0xba, 0xa6, 0x39, + 0xaf, 0x97, 0xd6, 0x64, 0x46, 0x9a, 0xfc, 0xd1, 0x25, 0xdc, 0xc7, 0xe9, + 0x23, 0xe8, 0x4a, 0x58, 0xf4, 0x54, 0x0b, 0xde, 0xf6, 0xee, 0x88, 0xd8, + 0x4e, 0x9a, 0x21, 0xfa, 0x57, 0xfd, 0xa7, 0xd5, 0xf4, 0x84, 0x47, 0xd2, + 0x9d, 0x76, 0xf8, 0xa4, 0xa5, 0xdf, 0x97, 0x79, 0x61, 0x76, 0x3e, 0xda, + 0xc1, 0xd4, 0x0e, 0xe4, 0x21, 0xbe, 0xbb, 0xbd, 0x09, 0xc5, 0x8b, 0x5f, + 0xae, 0xf6, 0x07, 0x02, 0x47, 0x72, 0xb5, 0xc6, 0x56, 0x35, 0xc1, 0xd4, + 0x5b, 0x4b, 0x05, 0x3b, 0x0b, 0xb7, 0x6d, 0x10, 0x00, 0xf0, 0x70, 0xe0, + 0xca, 0xc3, 0xa6, 0xe6, 0xb6, 0xed, 0xb5, 0x17, 0x36, 0xc2, 0xe8, 0x68, + 0x02, 0x79, 0xf1, 0x29, 0x29, 0x2d, 0x6e, 0xcd, 0xac, 0xb1, 0xb6, 0x6c, + 0xad, 0xbc, 0x90, 0xe7, 0x4b, 0x84, 0xf9, 0x26, 0x75, 0x57, 0xd9, 0xef, + 0xf5, 0x03, 0x9a, 0xe2, 0x01, 0x6b, 0x81, 0xd0, 0x79, 0x29, 0x65, 0xfe, + 0x8e, 0xc3, 0xea, 0x89, 0xba, 0x40, 0x3b, 0xa1, 0xd2, 0x87, 0x53, 0x03, + 0xdb, 0xb4, 0x1d, 0xa4, 0x13, 0xa0, 0xd0, 0x0f, 0x0e, 0x12, 0x53, 0x64, + 0xf4, 0xc6, 0x56, 0x06, 0xeb, 0x1c, 0xf7, 0xbb, 0xdc, 0xd6, 0x81, 0x11, + 0xdf, 0x54, 0x7f, 0x4a, 0x97, 0xda, 0xd0, 0xc6, 0xcd, 0x84, 0x0d, 0xdb, + 0xb8, 0x07, 0xbe, 0x8a, 0x8e, 0x45, 0xcd, 0x64, 0x17, 0x5a, 0xe0, 0xf2, + 0x35, 0x33, 0xf9, 0xc3, 0xc1, 0x43, 0xed, 0x7e, 0xb9, 0x63, 0x6a, 0x69, + 0xf5, 0xb9, 0x24, 0x77, 0xf3, 0x49, 0x4d, 0xd0, 0xe0, 0xeb, 0x5c, 0x1c, + 0xd8, 0x73, 0x5d, 0x0d, 0x33, 0xed, 0x31, 0xe5, 0x08, 0x47, 0xd5, 0x16, + 0xb9, 0xf9, 0x2f, 0x64, 0xff, 0x00, 0x83, 0x0c, 0x3d, 0xbc, 0x51, 0x4d, + 0x39, 0x4f, 0x1b, 0xc8, 0x9d, 0xc2, 0x1c, 0xe6, 0x9f, 0xce, 0x23, 0xf3, + 0x82, 0xaf, 0x6b, 0x6e, 0x71, 0x65, 0x66, 0xbd, 0x9b, 0x04, 0x07, 0x1f, + 0xa4, 0x7e, 0x69, 0x29, 0xe8, 0xfe, 0xab, 0x57, 0x59, 0xea, 0x56, 0xb9, + 0x8e, 0x93, 0x55, 0x44, 0x96, 0xe9, 0xf9, 0xc4, 0x36, 0x65, 0x6b, 0xb4, + 0x86, 0xd1, 0x6d, 0x8f, 0x20, 0x02, 0x5c, 0x49, 0x26, 0x02, 0xcc, 0xfa, + 0x99, 0x8d, 0x6d, 0x38, 0x79, 0xd9, 0x57, 0x19, 0x7b, 0xdc, 0x2b, 0x1f, + 0x06, 0x34, 0xbb, 0xf8, 0xab, 0x1d, 0x58, 0x7f, 0x91, 0x6d, 0x07, 0xbb, + 0x49, 0xfc, 0x52, 0x52, 0x0e, 0x90, 0xe6, 0xdd, 0xd3, 0xad, 0x60, 0x32, + 0x19, 0x75, 0x8d, 0x04, 0x6b, 0xa1, 0x82, 0xaa, 0xe3, 0xfb, 0x2f, 0x7d, + 0x67, 0xb1, 0x41, 0xfa, 0x97, 0x6b, 0x7e, 0xc5, 0x97, 0x59, 0x3f, 0x46, + 0xc0, 0xed, 0x7b, 0x03, 0x21, 0x3e, 0x66, 0x4d, 0x15, 0x75, 0x3f, 0x4d, + 0xb6, 0x0f, 0x50, 0xcc, 0xb4, 0x1f, 0xca, 0x92, 0x99, 0x75, 0xec, 0x53, + 0x7e, 0x2b, 0x6f, 0xaf, 0x57, 0x55, 0xf4, 0xa3, 0xf7, 0x4f, 0x7f, 0xbd, + 0x61, 0xd7, 0x48, 0xc8, 0x60, 0xa9, 0xd0, 0x2f, 0x6e, 0x94, 0x93, 0xf9, + 0xc3, 0xfd, 0x19, 0x3f, 0x93, 0xee, 0x5b, 0x96, 0xf5, 0x5a, 0x0b, 0x5e, + 0xca, 0x1d, 0xbe, 0xea, 0xce, 0xe7, 0xb2, 0x0e, 0xac, 0x69, 0xf7, 0xb7, + 0xee, 0x54, 0x3a, 0xbe, 0x07, 0xd9, 0xb6, 0xdf, 0x4e, 0xb8, 0xd6, 0x6a, + 0xd3, 0xa9, 0xda, 0x4e, 0xba, 0xff, 0x00, 0x04, 0x94, 0xe4, 0x16, 0xb9, + 0xae, 0x21, 0xda, 0x11, 0x20, 0x83, 0xa7, 0x92, 0xd0, 0xb5, 0xf5, 0xe5, + 0xf4, 0x76, 0xb4, 0x02, 0x6f, 0xc4, 0x74, 0x7f, 0xd6, 0xce, 0xa9, 0x9a, + 0x2b, 0xea, 0x35, 0x80, 0x7d, 0xb9, 0xcd, 0x1a, 0x13, 0x00, 0x5c, 0x3c, + 0xff, 0x00, 0x95, 0xf9, 0x55, 0x7a, 0x32, 0x2e, 0xc1, 0xb9, 0xc3, 0x6c, + 0xb5, 0xd2, 0xcb, 0xab, 0x77, 0x71, 0xdc, 0x7c, 0x52, 0x52, 0x0c, 0x97, + 0x3d, 0xde, 0x9e, 0x65, 0x52, 0x1f, 0x5e, 0xd6, 0xd8, 0xff, 0x00, 0x07, + 0xb7, 0xe8, 0xbb, 0xe6, 0x15, 0xba, 0xba, 0xd5, 0x4f, 0x00, 0x64, 0x4d, + 0x6f, 0x8e, 0x79, 0x69, 0x54, 0x99, 0x65, 0x74, 0x64, 0x92, 0x1d, 0xbf, + 0x1e, 0xcf, 0x6b, 0xc1, 0xfd, 0xd3, 0xe2, 0x3c, 0x95, 0xab, 0xfa, 0x2b, + 0x1e, 0x77, 0x53, 0x66, 0xd6, 0x9e, 0x01, 0xd4, 0x7c, 0x8a, 0x4a, 0x69, + 0x07, 0xd7, 0x67, 0x53, 0x63, 0xb1, 0xf4, 0x69, 0x78, 0x8d, 0x23, 0xe2, + 0x56, 0xee, 0x1e, 0x1d, 0x58, 0xc5, 0xe5, 0x9a, 0x9b, 0x1c, 0x5c, 0xe7, + 0x1f, 0xc8, 0xab, 0x60, 0xf4, 0x9a, 0xf1, 0xdc, 0x6d, 0xb1, 0xdb, 0xec, + 0xed, 0xa4, 0x06, 0xad, 0x6a, 0x2b, 0x2f, 0x20, 0x0d, 0x21, 0x25, 0x37, + 0x31, 0x2b, 0x8f, 0x71, 0xe7, 0x80, 0xae, 0xd2, 0xd6, 0x37, 0x75, 0xf6, + 0xff, 0x00, 0x37, 0x50, 0x92, 0x3c, 0x4f, 0x60, 0x83, 0x5d, 0x7a, 0x34, + 0x37, 0x52, 0x74, 0x1f, 0x15, 0x3c, 0xe7, 0x01, 0x5b, 0x71, 0xab, 0x12, + 0x18, 0x7d, 0xdf, 0xca, 0x7a, 0x4a, 0x73, 0x6f, 0x7b, 0xb2, 0xb2, 0x5d, + 0x65, 0x9c, 0x4e, 0xe7, 0x47, 0xe0, 0x13, 0x6e, 0xfd, 0x28, 0x69, 0x1e, + 0x73, 0xe7, 0x2a, 0xd3, 0xa8, 0x6d, 0x2c, 0x21, 0xd1, 0x23, 0x57, 0x7c, + 0x55, 0x30, 0x2c, 0x7b, 0xc1, 0x68, 0xef, 0xcf, 0x92, 0x4a, 0x74, 0x2b, + 0xaf, 0x6e, 0x43, 0x9d, 0xfb, 0xed, 0x69, 0xfb, 0xb4, 0x55, 0xf3, 0xcf, + 0xb4, 0xc7, 0x75, 0x7b, 0x6c, 0x54, 0xc7, 0x8e, 0x5d, 0x20, 0xfc, 0x96, + 0x7e, 0x70, 0x22, 0xad, 0x79, 0x94, 0x94, 0xe7, 0xd0, 0xdf, 0xd6, 0x19, + 0xfd, 0x65, 0xd4, 0x54, 0x62, 0x3c, 0xc0, 0x3f, 0x72, 0xe6, 0x6a, 0xd2, + 0xc6, 0x9f, 0x07, 0x05, 0xd1, 0xb4, 0xfb, 0x6b, 0x23, 0xe1, 0xf7, 0xa4, + 0xa7, 0x3f, 0xaf, 0xb7, 0x76, 0x3b, 0x1d, 0xfb, 0xb6, 0x37, 0xf1, 0x05, + 0xab, 0x9a, 0xad, 0xee, 0xc7, 0x06, 0xbb, 0x29, 0x69, 0xa8, 0x43, 0x0b, + 0x8c, 0x13, 0xae, 0xa4, 0xfc, 0x02, 0xea, 0x3a, 0xd6, 0xb8, 0x97, 0x7f, + 0x24, 0x35, 0xdf, 0x73, 0x82, 0xe4, 0x72, 0xb0, 0xae, 0xbb, 0x3b, 0xda, + 0xed, 0xa2, 0xcf, 0xa0, 0x0f, 0x60, 0x44, 0xca, 0x4a, 0x48, 0xee, 0xa3, + 0xd3, 0xea, 0x63, 0x99, 0x53, 0x44, 0x92, 0x06, 0xf8, 0x30, 0x55, 0xa7, + 0xbf, 0x17, 0x40, 0x1d, 0xb5, 0xc0, 0x03, 0xbc, 0x0d, 0x63, 0xcd, 0x66, + 0xb7, 0xa0, 0xda, 0x04, 0xd5, 0x70, 0x75, 0xb3, 0xaf, 0xb7, 0x41, 0xf7, + 0xab, 0x43, 0x07, 0x33, 0x0e, 0xbd, 0x8e, 0xac, 0xbc, 0xbb, 0xe9, 0xb9, + 0xbd, 0xe7, 0xcf, 0xc1, 0x25, 0x28, 0xe5, 0x52, 0x2d, 0xf5, 0x83, 0x4b, + 0x98, 0x46, 0xd9, 0xe7, 0x8e, 0xf0, 0x94, 0xd5, 0x65, 0x5e, 0xeb, 0x77, + 0x3f, 0x42, 0xd0, 0x35, 0xe7, 0xcf, 0xb2, 0x6b, 0x71, 0x5f, 0x7d, 0x2d, + 0xb5, 0x8e, 0x6b, 0x48, 0x90, 0x58, 0x79, 0x93, 0xe0, 0xa3, 0x8b, 0xd3, + 0x4d, 0x6e, 0x69, 0x69, 0x3b, 0x9d, 0xa6, 0x84, 0x01, 0xf8, 0xa4, 0xa4, + 0x59, 0x47, 0xa8, 0x63, 0x37, 0xf4, 0x5f, 0x40, 0x8d, 0x08, 0xec, 0x4f, + 0x2a, 0x58, 0xce, 0xb2, 0xd0, 0xe0, 0xe1, 0xdb, 0x5f, 0x97, 0x75, 0x6f, + 0xa8, 0x60, 0xe5, 0xd7, 0x0d, 0xb2, 0xc6, 0x96, 0xbf, 0xde, 0x03, 0x49, + 0x30, 0xab, 0x62, 0xbd, 0x95, 0xbd, 0xda, 0x92, 0x5e, 0x22, 0x09, 0xfc, + 0xa9, 0x29, 0x0d, 0xf6, 0x5f, 0x43, 0xf6, 0xd7, 0x63, 0x9e, 0xc7, 0x0d, + 0x01, 0x88, 0x27, 0xc9, 0x4b, 0xed, 0x7d, 0x43, 0xd2, 0x9f, 0x48, 0xcc, + 0x46, 0xdf, 0x2e, 0x13, 0x13, 0x6e, 0xe0, 0x48, 0x6b, 0xc3, 0x49, 0x27, + 0x48, 0xdb, 0xf7, 0x26, 0xdc, 0xff, 0x00, 0x5f, 0xd2, 0xf5, 0xbd, 0xb1, + 0xe1, 0xac, 0xf3, 0xca, 0x4a, 0x6c, 0x64, 0x8c, 0x81, 0x4f, 0xa2, 0x38, + 0x74, 0x77, 0xd3, 0x6f, 0x8a, 0x25, 0x19, 0x18, 0xd5, 0x10, 0x39, 0x78, + 0x1d, 0xa7, 0xb0, 0xe5, 0x12, 0xac, 0x5c, 0xe0, 0xe7, 0x7a, 0x95, 0xb9, + 0xef, 0x7b, 0x46, 0xda, 0x98, 0x37, 0x1f, 0x9c, 0xe8, 0x10, 0x6c, 0xbb, + 0x29, 0xcf, 0x75, 0x0c, 0xa0, 0xb1, 0xec, 0x3b, 0x2c, 0xb1, 0xe0, 0x6d, + 0x68, 0x1e, 0x04, 0x77, 0x29, 0x29, 0x76, 0xba, 0xb9, 0x36, 0x64, 0x1d, + 0xe0, 0xf0, 0x7e, 0x89, 0x3f, 0x00, 0xa3, 0x45, 0xd8, 0x86, 0xb7, 0x6c, + 0xad, 0xcd, 0x7b, 0x4c, 0x32, 0x64, 0xf7, 0xee, 0xa5, 0x8f, 0x7d, 0x05, + 0xcc, 0xc6, 0x73, 0x1c, 0xfb, 0xaa, 0x10, 0xcd, 0xde, 0xdd, 0x46, 0xba, + 0xad, 0x46, 0x65, 0x74, 0xe7, 0x50, 0x7e, 0xdb, 0x4d, 0x6c, 0xb8, 0x6a, + 0xd6, 0xb0, 0x9d, 0xce, 0xf0, 0x82, 0x39, 0x29, 0x29, 0xcb, 0x65, 0xb8, + 0xee, 0x7b, 0xcd, 0xd8, 0xde, 0xa5, 0x60, 0xfd, 0x22, 0x36, 0x9e, 0x14, + 0xb1, 0xea, 0x69, 0xaa, 0xcc, 0x8a, 0x0d, 0x20, 0x72, 0x24, 0x9f, 0x6b, + 0x7c, 0x37, 0x0e, 0x0a, 0xb3, 0x95, 0x83, 0x4b, 0x0d, 0x61, 0xb6, 0xee, + 0xad, 0xe0, 0xb8, 0xb5, 0xc6, 0x4b, 0x0f, 0x84, 0xaa, 0xf5, 0x3f, 0x05, + 0x96, 0x8a, 0x5c, 0xdd, 0xcc, 0x98, 0x0d, 0x61, 0xf6, 0x93, 0xfc, 0xa0, + 0x34, 0x49, 0x4b, 0x53, 0x8d, 0x8e, 0xfa, 0x4b, 0xdd, 0x9f, 0x6d, 0x64, + 0x6b, 0xbb, 0x6c, 0xb7, 0xf8, 0x22, 0xe2, 0xbb, 0x01, 0xb4, 0x6e, 0x7b, + 0x9f, 0x93, 0x6f, 0x6b, 0x08, 0x20, 0x9f, 0x1d, 0x0a, 0xa1, 0x93, 0xd4, + 0x05, 0xf6, 0xb9, 0x9b, 0x21, 0xbb, 0x88, 0x68, 0x1e, 0x03, 0x41, 0x01, + 0x14, 0xda, 0xf6, 0x44, 0xd7, 0x1b, 0x9a, 0x76, 0x8d, 0xc2, 0x4e, 0x91, + 0x11, 0x3a, 0x24, 0xa7, 0xba, 0xe9, 0x4c, 0x6d, 0x3d, 0x0d, 0xa5, 0xa6, + 0x45, 0xa5, 0xef, 0x9f, 0x89, 0xda, 0x3f, 0x22, 0x07, 0x57, 0x20, 0xf4, + 0xcb, 0x58, 0xd2, 0x09, 0x6b, 0x08, 0x20, 0x78, 0x8d, 0x55, 0xd6, 0xd5, + 0xf6, 0x6e, 0x99, 0x89, 0x8f, 0xc6, 0xca, 0xeb, 0x69, 0x1e, 0x60, 0x6e, + 0x3f, 0x8a, 0xc3, 0xdf, 0x5d, 0xb8, 0x99, 0xd6, 0x54, 0x66, 0xbb, 0x1e, + 0xe2, 0xd9, 0xd0, 0x83, 0xb4, 0x13, 0x3f, 0x04, 0x94, 0xf3, 0x9f, 0x57, + 0xa6, 0xdb, 0xb3, 0x70, 0xb7, 0xec, 0x6d, 0xd0, 0x49, 0xf2, 0xdc, 0xad, + 0xfd, 0x64, 0xe9, 0x96, 0xe1, 0x0a, 0x73, 0x6b, 0x26, 0xc7, 0x53, 0x0d, + 0xb5, 0xf1, 0x13, 0x07, 0xda, 0x48, 0xf8, 0x68, 0x56, 0x4f, 0x4a, 0xb7, + 0xd0, 0xeb, 0x7b, 0x4f, 0x16, 0x87, 0x33, 0xe6, 0x46, 0x9f, 0x8a, 0xde, + 0x68, 0xea, 0x59, 0xa2, 0xef, 0xb4, 0x35, 0xd6, 0x62, 0xe4, 0x34, 0xb5, + 0xce, 0x3a, 0x35, 0xa4, 0x70, 0x5b, 0x3f, 0xc1, 0x25, 0x39, 0xf8, 0x96, + 0xb3, 0xf6, 0xc5, 0x57, 0x37, 0xf9, 0xbc, 0x81, 0xbb, 0xe4, 0xf6, 0x90, + 0x7f, 0x15, 0xd3, 0xc5, 0x36, 0x62, 0x8a, 0xa0, 0x3a, 0xad, 0xb1, 0xb7, + 0x91, 0xb7, 0xb7, 0xc9, 0x70, 0xf8, 0x6e, 0x7d, 0x19, 0xd4, 0xd3, 0x76, + 0xa2, 0xab, 0x36, 0x41, 0xf0, 0x25, 0x75, 0x5d, 0x47, 0xd4, 0xa7, 0x15, + 0x97, 0xe3, 0x0d, 0xaf, 0xc7, 0xd7, 0x68, 0x1a, 0x6c, 0x3a, 0x10, 0x42, + 0x4a, 0x71, 0xfa, 0x97, 0x4d, 0x38, 0xae, 0x37, 0x50, 0x49, 0xa6, 0x66, + 0x47, 0xe6, 0x1e, 0xca, 0xae, 0x56, 0x50, 0xc8, 0xa9, 0x8e, 0xb3, 0xfa, + 0x43, 0x3d, 0xae, 0x7f, 0x6b, 0x07, 0x69, 0xfe, 0x50, 0x5d, 0x26, 0x36, + 0x4d, 0x59, 0x98, 0xe2, 0xd0, 0xdf, 0xa5, 0x2d, 0x7b, 0x4f, 0x8f, 0x04, + 0x2c, 0x6e, 0xa7, 0xd1, 0xdc, 0xc9, 0xbb, 0x10, 0x12, 0xce, 0x5d, 0x57, + 0x24, 0x79, 0xb5, 0x25, 0x38, 0xdb, 0x43, 0xa4, 0x90, 0xb7, 0xba, 0x35, + 0xc2, 0xea, 0x1d, 0x43, 0xa0, 0xbe, 0x9f, 0x1e, 0xec, 0xec, 0x7e, 0x4b, + 0x09, 0x8e, 0x60, 0xb1, 0xa2, 0xc0, 0x4b, 0x3f, 0x3a, 0x39, 0x8f, 0x25, + 0x6d, 0xf5, 0xe4, 0xf4, 0xac, 0x96, 0x64, 0x0f, 0x75, 0x33, 0xf4, 0xc7, + 0x0e, 0x69, 0xec, 0x52, 0x53, 0xd0, 0x36, 0x92, 0xe3, 0x03, 0xe4, 0x55, + 0xcc, 0x7a, 0xf6, 0xb4, 0x03, 0xf3, 0x21, 0x56, 0xc7, 0x78, 0xba, 0x2c, + 0x67, 0xd1, 0x78, 0x05, 0xa4, 0xf8, 0x2d, 0x3c, 0x4a, 0x7d, 0x57, 0x6d, + 0x98, 0x6b, 0x7d, 0xcf, 0x71, 0xe0, 0x00, 0x92, 0x93, 0xd3, 0x15, 0x52, + 0xec, 0x83, 0xcf, 0xd1, 0xa4, 0x79, 0xf7, 0x72, 0x86, 0x35, 0x0e, 0x33, + 0x7b, 0xc7, 0xb4, 0x4e, 0xcf, 0x89, 0xee, 0xa7, 0x07, 0x2b, 0x20, 0x31, + 0x9a, 0x31, 0x9a, 0x0f, 0x00, 0xd1, 0xdd, 0x58, 0xc9, 0x86, 0x8f, 0x49, + 0x9a, 0x35, 0xa0, 0x08, 0x49, 0x4e, 0x6e, 0x43, 0x41, 0x24, 0x9d, 0x7c, + 0x50, 0xaa, 0x80, 0x7f, 0x20, 0x4f, 0x71, 0x71, 0xf6, 0x8f, 0xbd, 0x3e, + 0x3d, 0x50, 0x44, 0xf3, 0xdd, 0x25, 0x37, 0x83, 0x49, 0xc6, 0x6b, 0xff, + 0x00, 0x94, 0x7f, 0x22, 0xca, 0xea, 0x6f, 0x0c, 0xa5, 0xcf, 0x76, 0x8d, + 0x6e, 0xa7, 0xe0, 0xb7, 0x5e, 0xd8, 0xc1, 0xf8, 0x10, 0x7e, 0x5c, 0x2e, + 0x3b, 0xad, 0x75, 0x1f, 0x5d, 0xb9, 0x78, 0xcc, 0x6c, 0x0a, 0x5b, 0xab, + 0x89, 0xd4, 0x90, 0xe0, 0x1c, 0x92, 0x99, 0xd1, 0x60, 0x76, 0xd7, 0x8d, + 0x03, 0xa0, 0x89, 0xf3, 0x5d, 0x31, 0x04, 0x62, 0x35, 0xe3, 0xb6, 0xa3, + 0xe5, 0xaa, 0xe5, 0xe8, 0x6e, 0xd6, 0xb0, 0x7e, 0x6c, 0x37, 0xf2, 0x2e, + 0xaa, 0xa3, 0x38, 0x2c, 0x9f, 0x04, 0x94, 0xd6, 0xea, 0x2c, 0x36, 0xe3, + 0xdc, 0xd8, 0x90, 0xea, 0xdd, 0xf9, 0x25, 0x73, 0xcc, 0x73, 0x45, 0x15, + 0xda, 0xe7, 0x35, 0xa1, 0xed, 0x0d, 0xd4, 0x80, 0x74, 0xd3, 0x92, 0xba, + 0x6b, 0x3d, 0xd5, 0x34, 0x98, 0xe3, 0x69, 0xf9, 0x68, 0xb8, 0xdb, 0x6d, + 0x66, 0x39, 0x65, 0x4f, 0xd8, 0xe7, 0x07, 0xbd, 0xad, 0x6b, 0xc1, 0x77, + 0x0e, 0xfc, 0xd0, 0x3b, 0xea, 0x92, 0x9b, 0xb7, 0x64, 0xd0, 0x32, 0x1c, + 0x6b, 0x3e, 0xa5, 0xb5, 0x80, 0x1e, 0xd1, 0xa3, 0x4f, 0xcf, 0xba, 0xb2, + 0x7a, 0xd5, 0x43, 0xa7, 0x97, 0xd9, 0x49, 0x19, 0x40, 0x90, 0xe6, 0x88, + 0xd0, 0xf6, 0xe5, 0x64, 0xfa, 0x2e, 0xac, 0x7d, 0x9d, 0xcf, 0xdb, 0x63, + 0xe0, 0x17, 0xba, 0x38, 0x71, 0xee, 0x7c, 0x91, 0x1f, 0x87, 0x91, 0x8e, + 0xe3, 0x55, 0xc4, 0x0a, 0x1d, 0xa3, 0x5e, 0x1c, 0x4e, 0xe9, 0xef, 0x09, + 0x29, 0x13, 0xd8, 0x2d, 0xa1, 0xb6, 0x0c, 0x8f, 0x46, 0xe2, 0x74, 0x90, + 0x36, 0xc7, 0x79, 0x45, 0x66, 0x55, 0x58, 0x38, 0xe5, 0xaf, 0xad, 0xb9, + 0x40, 0x7b, 0x85, 0xa7, 0xda, 0x0b, 0xbc, 0x00, 0x50, 0xfb, 0x01, 0xbe, + 0xcd, 0xa5, 0xa5, 0xcc, 0x6f, 0xb5, 0xa7, 0x74, 0x48, 0x51, 0xfb, 0x05, + 0x8e, 0xb9, 0xf5, 0x35, 0xc5, 0xb4, 0xeb, 0xb0, 0x86, 0xc9, 0x1f, 0x32, + 0x92, 0x98, 0xbf, 0xa9, 0xf5, 0x57, 0x3d, 0xaf, 0x7d, 0x55, 0xb5, 0xf0, + 0x36, 0x4f, 0x1b, 0x4e, 0xa1, 0x3b, 0x2a, 0xb5, 0xa1, 0xcf, 0x21, 0xb2, + 0x79, 0x27, 0x43, 0x27, 0xc0, 0x78, 0x22, 0xd9, 0x8e, 0x19, 0x8d, 0x5b, + 0x6e, 0x9b, 0x1f, 0x50, 0x8f, 0x6b, 0x9a, 0x1d, 0x04, 0xe9, 0x21, 0x35, + 0x58, 0xc5, 0xcc, 0x0f, 0xd4, 0x54, 0xc2, 0x35, 0x26, 0x4b, 0x8f, 0xfb, + 0x12, 0x53, 0x9e, 0xf2, 0xfd, 0xc5, 0xb7, 0x36, 0x00, 0x99, 0x20, 0xf2, + 0x89, 0xf6, 0x27, 0x7d, 0x93, 0xd5, 0xf4, 0xce, 0xf9, 0xdd, 0xe9, 0xf6, + 0xd9, 0xfb, 0xd2, 0xb4, 0x2e, 0x68, 0xb2, 0x6e, 0xbb, 0xe8, 0xb1, 0xc1, + 0xa1, 0xa5, 0xba, 0x40, 0x1f, 0xba, 0x14, 0xe0, 0x6f, 0xf5, 0x3e, 0xd3, + 0xf9, 0xbc, 0x40, 0x9d, 0xbf, 0xbb, 0xb5, 0x25, 0x34, 0x72, 0xf3, 0x72, + 0x68, 0x16, 0x32, 0x5d, 0x6d, 0xb6, 0xb6, 0x2c, 0xb0, 0x38, 0x90, 0x00, + 0xd4, 0xed, 0xda, 0xab, 0xe3, 0xdd, 0x92, 0x58, 0xec, 0x61, 0x53, 0xde, + 0xc3, 0x0f, 0x22, 0x76, 0xe9, 0xcc, 0x83, 0xe2, 0x99, 0xac, 0x75, 0x95, + 0xb4, 0x80, 0xe6, 0x12, 0x48, 0xdf, 0xa8, 0xf6, 0xab, 0x38, 0xd8, 0xf6, + 0x5e, 0xf1, 0x4b, 0x1c, 0x5b, 0x60, 0x9f, 0x52, 0xe7, 0xea, 0xc0, 0xcf, + 0x39, 0x49, 0x4d, 0xc2, 0xf6, 0xbe, 0x1f, 0x45, 0x01, 0xb7, 0x30, 0x09, + 0xb1, 0xfa, 0xaa, 0x96, 0x7d, 0xa0, 0x5f, 0xeb, 0x07, 0x56, 0xc6, 0xb4, + 0x4f, 0xb9, 0xbb, 0xb6, 0x9f, 0xe4, 0x84, 0x66, 0xe3, 0x5c, 0xda, 0x43, + 0x3d, 0x60, 0x6a, 0x92, 0xd6, 0xde, 0xd0, 0x5a, 0x0c, 0x6a, 0x43, 0xb9, + 0x40, 0xae, 0xaa, 0x45, 0xee, 0x36, 0xe5, 0x8d, 0xae, 0x88, 0x0d, 0x1b, + 0x81, 0x29, 0x29, 0x93, 0xb2, 0x1f, 0x90, 0xcf, 0x4a, 0xc7, 0xbf, 0x22, + 0xa3, 0xa9, 0x76, 0x8c, 0x0d, 0x8f, 0x00, 0x10, 0x06, 0x1f, 0xd9, 0xde, + 0x2c, 0xa1, 0xae, 0x12, 0x25, 0xbb, 0x9c, 0x1c, 0x04, 0xf9, 0x05, 0x26, + 0x3a, 0x9c, 0x6b, 0x1c, 0xe3, 0x6b, 0x6c, 0x24, 0x96, 0xee, 0xf0, 0x9e, + 0xd1, 0xd9, 0x1d, 0xf8, 0x02, 0xeb, 0x43, 0x5b, 0x94, 0xc6, 0x70, 0x0b, + 0xf8, 0x6b, 0x8f, 0x83, 0xa7, 0x84, 0x94, 0x86, 0x8a, 0x3f, 0x45, 0x04, + 0x43, 0x67, 0x71, 0x13, 0xac, 0x93, 0xe2, 0x51, 0x31, 0xab, 0xdd, 0x93, + 0x4e, 0x38, 0xa4, 0x39, 0xd6, 0x3d, 0xad, 0x0e, 0xe3, 0xe9, 0xb8, 0x08, + 0x31, 0xe0, 0xa0, 0x30, 0x5c, 0xcc, 0x8f, 0x4e, 0xcb, 0x19, 0x73, 0x5a, + 0x3d, 0xde, 0x93, 0xa4, 0x47, 0x98, 0x5a, 0x1f, 0x57, 0xb0, 0x2d, 0xbb, + 0xeb, 0x06, 0x1b, 0x9a, 0xf9, 0xa2, 0x97, 0x1b, 0x08, 0x83, 0x1e, 0xc6, + 0x93, 0xa7, 0xcd, 0x25, 0x3d, 0xc6, 0x7d, 0x8c, 0x65, 0x8d, 0x0e, 0x20, + 0x31, 0x92, 0x49, 0x3c, 0x00, 0x34, 0x58, 0xb5, 0xe1, 0x1c, 0x7c, 0x2c, + 0xd6, 0x48, 0x2d, 0xfd, 0x35, 0x8d, 0x3e, 0x4e, 0x00, 0x35, 0x5a, 0xeb, + 0x43, 0xd6, 0xdd, 0x44, 0xed, 0xf5, 0x9c, 0xca, 0x67, 0xc3, 0x71, 0x93, + 0xf8, 0x2a, 0xd4, 0x53, 0x7e, 0x37, 0x43, 0xb2, 0xab, 0xdd, 0xbe, 0xc7, + 0x17, 0xb0, 0x38, 0x99, 0x96, 0x89, 0x29, 0x29, 0xe1, 0xb2, 0x8f, 0xd9, + 0xba, 0x8e, 0x26, 0x48, 0x1a, 0x4b, 0x5c, 0x7e, 0x2d, 0x7a, 0xee, 0x30, + 0xc9, 0xfb, 0x3d, 0xf4, 0x7f, 0xa1, 0xb1, 0xc5, 0xbf, 0xd5, 0x7f, 0xbd, + 0xbf, 0x95, 0x71, 0x9d, 0x62, 0xb9, 0xc7, 0xa2, 0xc1, 0xc3, 0x1c, 0xe6, + 0xfd, 0xfa, 0xad, 0xc7, 0xb7, 0x37, 0x2e, 0xaa, 0xfe, 0xcc, 0x1c, 0x7d, + 0x7a, 0x6b, 0x36, 0xed, 0xd0, 0x1d, 0xa3, 0x6f, 0xb8, 0xa4, 0xa7, 0x2b, + 0xac, 0xe3, 0x86, 0xe4, 0x37, 0x2e, 0x92, 0x20, 0x3c, 0x6e, 0x8d, 0x41, + 0x82, 0xba, 0x8a, 0x47, 0xa8, 0x0b, 0x1d, 0xa8, 0xb1, 0xa4, 0x10, 0x7c, + 0x08, 0x5c, 0xdf, 0x53, 0xae, 0xcc, 0x1e, 0x9e, 0xdc, 0x7b, 0x80, 0xde, + 0xe2, 0x40, 0x2d, 0xd4, 0x0d, 0x67, 0x53, 0xe2, 0xb7, 0xfa, 0x7b, 0xcb, + 0xea, 0xa9, 0xdc, 0x93, 0x58, 0x27, 0xe2, 0x40, 0x49, 0x4e, 0x7f, 0x43, + 0xa6, 0xca, 0x5b, 0x92, 0xc7, 0x83, 0x0d, 0xb3, 0x6f, 0x94, 0xb7, 0x42, + 0xaf, 0x9f, 0xb8, 0x2b, 0x2f, 0x68, 0x68, 0x0e, 0x00, 0x6e, 0x23, 0x5e, + 0xd2, 0x50, 0x1e, 0xe2, 0x49, 0x11, 0xa0, 0x11, 0x09, 0x29, 0xca, 0xea, + 0x1d, 0x22, 0x9c, 0x9f, 0x7d, 0x71, 0x5d, 0xc7, 0xb8, 0x1e, 0xd7, 0x7c, + 0x53, 0xe1, 0x32, 0xc7, 0xe3, 0xb7, 0x1f, 0x29, 0x9f, 0xcd, 0x1d, 0x8e, + 0x69, 0xd4, 0x38, 0x0e, 0x23, 0xc4, 0x2b, 0xee, 0x1d, 0xa0, 0x7f, 0x72, + 0x55, 0xd6, 0xe7, 0xbc, 0x36, 0xb0, 0x5c, 0xf3, 0xc0, 0x09, 0x29, 0x9e, + 0x16, 0x38, 0x60, 0x6e, 0x3d, 0x0d, 0x30, 0x3e, 0x88, 0xec, 0x04, 0xcf, + 0x7e, 0xcb, 0x4a, 0xeb, 0x1b, 0x53, 0x06, 0x35, 0x47, 0x76, 0xbf, 0xa5, + 0x7f, 0x8b, 0xbc, 0x10, 0x5a, 0x46, 0x2d, 0x7e, 0x95, 0x6e, 0x9b, 0x9d, + 0xf4, 0xde, 0x3b, 0x0f, 0x00, 0xad, 0xf4, 0xfc, 0x76, 0x98, 0xb9, 0xe3, + 0x40, 0x7d, 0x83, 0xc7, 0xcd, 0x25, 0x36, 0xf1, 0x28, 0xf4, 0x6a, 0xd7, + 0x47, 0xbb, 0x53, 0xe5, 0xe4, 0xab, 0x64, 0xbc, 0x4b, 0xbc, 0x79, 0x9e, + 0xea, 0xf3, 0xdc, 0x40, 0xf3, 0x59, 0x59, 0x2e, 0x1b, 0x88, 0xf8, 0x24, + 0xa6, 0xb3, 0x8b, 0x64, 0xc0, 0x8d, 0x54, 0xea, 0x22, 0x65, 0x0c, 0x99, + 0x33, 0xe2, 0x8d, 0x43, 0x7d, 0xc3, 0xbc, 0xa4, 0xa7, 0x58, 0xb2, 0x70, + 0x9c, 0x3f, 0x91, 0x23, 0xe5, 0xaa, 0xf3, 0xae, 0xbf, 0xbe, 0x9e, 0xa5, + 0x70, 0x60, 0x9f, 0xb4, 0xb4, 0x00, 0xdf, 0x1d, 0xd0, 0x0c, 0x7c, 0xc2, + 0xf4, 0xa6, 0x8f, 0xd0, 0x86, 0x78, 0x88, 0x3f, 0x72, 0xe0, 0xfe, 0xb1, + 0xba, 0xf1, 0x65, 0x35, 0xd2, 0x3d, 0xee, 0x79, 0x69, 0x20, 0x6a, 0x23, + 0xcf, 0xb7, 0x9a, 0x4a, 0x5b, 0x05, 0xe0, 0xd2, 0xd0, 0x79, 0x6f, 0xb4, + 0xfc, 0xb4, 0x5d, 0x66, 0x3f, 0xbb, 0x05, 0x9a, 0xf6, 0x5c, 0x57, 0x4d, + 0xb0, 0x97, 0xd9, 0x5b, 0xb8, 0x9d, 0xcb, 0xb3, 0xc3, 0x76, 0xec, 0x06, + 0xf9, 0x24, 0xa4, 0x6c, 0x24, 0xb4, 0x8e, 0xc0, 0xfe, 0x55, 0xc9, 0xf5, + 0x1a, 0x1a, 0xdc, 0xcb, 0x36, 0xc9, 0xb5, 0x84, 0xbc, 0x38, 0x18, 0xda, + 0xd7, 0x0d, 0x57, 0x59, 0x43, 0xbd, 0x8e, 0x69, 0x3c, 0xc8, 0xfb, 0xb5, + 0x5c, 0xd7, 0x5b, 0xa4, 0x9c, 0xf6, 0xbc, 0x1d, 0xad, 0x7b, 0x76, 0xbb, + 0xcf, 0x59, 0xfe, 0x29, 0x29, 0xa4, 0xd6, 0x7a, 0xe1, 0xd6, 0x35, 0xa1, + 0x8e, 0x70, 0x01, 0xcf, 0x76, 0xba, 0x37, 0xc1, 0x5b, 0xc5, 0xf4, 0x65, + 0xac, 0xca, 0x23, 0x26, 0xe6, 0x91, 0x1a, 0x98, 0x03, 0xe6, 0x7b, 0x26, + 0x66, 0x2d, 0x35, 0x88, 0xd2, 0xc8, 0x6c, 0xb4, 0x87, 0x69, 0x27, 0xc9, + 0x05, 0x95, 0xd6, 0xc7, 0x6e, 0x93, 0xbc, 0x13, 0xb9, 0xce, 0xf1, 0xf9, + 0xa4, 0xa6, 0xe5, 0x99, 0x0d, 0x60, 0x7d, 0x95, 0x63, 0x7b, 0x77, 0x10, + 0xf7, 0xb9, 0xd2, 0xe8, 0xfe, 0x43, 0x7c, 0x52, 0x6e, 0x4b, 0x9f, 0x58, + 0x2d, 0x86, 0xee, 0xd6, 0xa6, 0x07, 0x7b, 0x83, 0x7f, 0x95, 0xe0, 0x55, + 0x1e, 0xa0, 0x2e, 0x75, 0xed, 0x63, 0x5a, 0x5b, 0x61, 0xd5, 0xef, 0x9f, + 0x6c, 0x78, 0xe9, 0xa2, 0xa0, 0xeb, 0xb2, 0x85, 0x81, 0x8c, 0x97, 0x46, + 0x8e, 0x2e, 0x11, 0xa7, 0x8c, 0x24, 0xa6, 0xf6, 0x55, 0xb8, 0x75, 0x66, + 0x59, 0x79, 0x02, 0xd7, 0xba, 0x20, 0x49, 0xf8, 0x70, 0xa5, 0x5e, 0x5b, + 0xbd, 0x5f, 0x68, 0x74, 0x32, 0x08, 0xd7, 0xda, 0x7f, 0xd8, 0xa9, 0xbe, + 0x90, 0xf6, 0xb4, 0x90, 0xe0, 0x34, 0xdd, 0x6e, 0x92, 0x7c, 0x9a, 0x15, + 0xba, 0xf1, 0xd8, 0x2d, 0x2f, 0x7d, 0xaf, 0xfb, 0x3d, 0x60, 0x6d, 0xad, + 0xda, 0x7b, 0xbc, 0xe3, 0x94, 0x94, 0xcc, 0x5b, 0x93, 0xbc, 0x9f, 0x40, + 0xd8, 0x5f, 0x2e, 0xdd, 0x5e, 0xe0, 0x64, 0xf2, 0x61, 0x57, 0xfd, 0x97, + 0x91, 0xea, 0x7a, 0x9e, 0xa8, 0x9f, 0xa5, 0x1f, 0x9f, 0x1f, 0xde, 0xa7, + 0x6d, 0xfd, 0x48, 0xda, 0xc3, 0x8e, 0xe0, 0xda, 0xc9, 0xe5, 0xe4, 0x4f, + 0x9b, 0xa1, 0x1a, 0x68, 0xf4, 0xe7, 0x7b, 0xbd, 0x69, 0xdd, 0xf4, 0x87, + 0x3f, 0x14, 0x94, 0xbd, 0x81, 0xad, 0xa8, 0x12, 0x43, 0xac, 0x23, 0x6b, + 0x5b, 0xdb, 0x4e, 0x7e, 0x0a, 0xcf, 0xab, 0x45, 0x14, 0x55, 0x8e, 0xdb, + 0x85, 0xef, 0xb0, 0x4f, 0xa4, 0xcd, 0x5c, 0x49, 0xf1, 0x25, 0x54, 0xaa, + 0xa2, 0x1a, 0xdc, 0x8b, 0x1f, 0x5b, 0x1d, 0xba, 0x0f, 0xab, 0xdd, 0x91, + 0xc8, 0xf8, 0xa2, 0xd1, 0x8b, 0x8c, 0xf7, 0xba, 0xfb, 0x32, 0x98, 0xdc, + 0x6a, 0xc6, 0xd7, 0x59, 0x5e, 0x9a, 0x9f, 0xcd, 0x09, 0x29, 0x07, 0x51, + 0x77, 0x50, 0x8a, 0xf1, 0x45, 0x5e, 0x96, 0x2f, 0x0f, 0x87, 0xb4, 0x97, + 0x13, 0xfd, 0x55, 0x45, 0xd5, 0x55, 0xe9, 0xb1, 0xad, 0xb1, 0x86, 0xc0, + 0xf0, 0x1d, 0x49, 0x8f, 0x53, 0x4e, 0x7e, 0x88, 0x5b, 0x98, 0xbf, 0xb2, + 0xfd, 0x59, 0x37, 0x7a, 0xa5, 0xb3, 0xe9, 0x3c, 0x8d, 0x47, 0xc4, 0x19, + 0x0a, 0x93, 0x7a, 0x7b, 0xeb, 0xcd, 0xb6, 0xeb, 0x36, 0x32, 0xa7, 0x13, + 0xb5, 0xda, 0x6f, 0x20, 0xfe, 0xf4, 0x68, 0x12, 0x52, 0x1a, 0xeb, 0xc7, + 0xb2, 0xd2, 0x4e, 0x18, 0x24, 0xe8, 0xd2, 0x0c, 0x31, 0x80, 0x7e, 0x77, + 0x92, 0xb2, 0x72, 0xb1, 0xc5, 0xbe, 0x9b, 0xda, 0xd7, 0x30, 0x0d, 0x9b, + 0x44, 0xee, 0x69, 0x1f, 0x9e, 0x20, 0x6b, 0xf3, 0x56, 0x32, 0x7a, 0x6f, + 0x50, 0x6e, 0x1b, 0x47, 0x4f, 0x73, 0x5b, 0x4b, 0x89, 0x36, 0x69, 0x03, + 0xe0, 0xe9, 0xd5, 0x64, 0x86, 0x5f, 0x89, 0x67, 0xa7, 0x7b, 0xf5, 0x1f, + 0x4c, 0xb7, 0x59, 0xd7, 0x90, 0x92, 0x9b, 0xed, 0xae, 0xbc, 0x50, 0x6f, + 0xa1, 0xb3, 0x51, 0x3a, 0x58, 0x79, 0xf8, 0x2d, 0xaf, 0xa9, 0xcd, 0x16, + 0x65, 0xdf, 0x7e, 0xc7, 0xb5, 0xec, 0xad, 0xdb, 0xde, 0xf2, 0x60, 0x9b, + 0x1c, 0x36, 0xc3, 0x7e, 0x01, 0x72, 0xc2, 0xf0, 0xc9, 0x75, 0xcf, 0x2f, + 0x0d, 0x74, 0x34, 0x68, 0x41, 0x03, 0x5d, 0x57, 0x69, 0xf5, 0x4a, 0xec, + 0x7b, 0x3a, 0x66, 0x56, 0x5d, 0x2c, 0xd8, 0x0b, 0xf6, 0x4f, 0x33, 0xb1, + 0xb3, 0xcf, 0xf6, 0x92, 0x52, 0x3e, 0xb0, 0xe1, 0x90, 0x5d, 0x8a, 0xd7, + 0x6c, 0xc8, 0xb8, 0xb9, 0xf4, 0x3a, 0x60, 0x6e, 0xa8, 0x82, 0x35, 0xf3, + 0x4f, 0x43, 0xb2, 0x2c, 0xe9, 0x78, 0x15, 0x65, 0x69, 0x73, 0xf7, 0xfa, + 0x80, 0xe8, 0x75, 0x71, 0x68, 0xfc, 0x16, 0x6f, 0x59, 0xb1, 0xb9, 0x37, + 0xb3, 0x06, 0x81, 0xfa, 0xe3, 0x48, 0x7b, 0x6c, 0xe0, 0x01, 0xb4, 0xb8, + 0x89, 0xe5, 0x5f, 0x65, 0x97, 0x1a, 0x30, 0x3d, 0x69, 0xf5, 0x5a, 0xc6, + 0x07, 0xcf, 0x8c, 0xca, 0x4a, 0x79, 0xac, 0xfa, 0x4b, 0xb0, 0xad, 0x63, + 0x87, 0xba, 0xbb, 0x1c, 0xd8, 0xef, 0x20, 0x0f, 0xee, 0x5d, 0x1f, 0xd5, + 0x9b, 0x5b, 0x67, 0x45, 0xa4, 0xf7, 0x6c, 0xb5, 0xdf, 0x23, 0xa7, 0xe0, + 0xa8, 0xf5, 0x7c, 0x53, 0x59, 0xc8, 0x70, 0xfa, 0x36, 0xbc, 0x3c, 0x78, + 0x4e, 0xd2, 0x0f, 0xe2, 0x9f, 0xea, 0xab, 0xec, 0xc6, 0xc6, 0x7e, 0x3d, + 0xed, 0xda, 0x1e, 0xff, 0x00, 0xd1, 0x92, 0x44, 0x13, 0x06, 0x63, 0xee, + 0x49, 0x4d, 0x9e, 0xa7, 0x45, 0x77, 0x02, 0xd7, 0xb0, 0x38, 0x4f, 0x04, + 0x48, 0x4d, 0x86, 0xe3, 0xba, 0x3c, 0x87, 0xe0, 0xac, 0xe5, 0xb4, 0x1d, + 0xde, 0x67, 0x45, 0x47, 0x18, 0xed, 0xb4, 0x81, 0xf2, 0x49, 0x4e, 0x8f, + 0x2d, 0x20, 0xe8, 0xaa, 0xbf, 0x42, 0x67, 0x9f, 0x15, 0x66, 0xb7, 0x4c, + 0xcf, 0xde, 0xa4, 0xec, 0x17, 0x58, 0x0b, 0xde, 0xef, 0x4e, 0xa1, 0xcb, + 0x8f, 0x7f, 0x82, 0x4a, 0x73, 0xda, 0xc7, 0x5c, 0xf0, 0xc6, 0x6b, 0xe2, + 0x7b, 0x0f, 0x32, 0xac, 0xba, 0xfa, 0xb1, 0x5a, 0xea, 0x71, 0xce, 0xeb, + 0x4e, 0x8f, 0xb7, 0xc3, 0xc9, 0xa8, 0x77, 0xe4, 0x30, 0x37, 0xd2, 0xc7, + 0x6e, 0xd6, 0xf7, 0x77, 0x77, 0x25, 0x87, 0x88, 0xeb, 0x48, 0x7b, 0xf4, + 0xab, 0x9f, 0x37, 0x7c, 0x12, 0x52, 0x7e, 0x9f, 0x8a, 0xeb, 0xdc, 0x1c, + 0xed, 0x2b, 0x1f, 0x4b, 0x9f, 0x71, 0xf0, 0x5b, 0xad, 0x6b, 0x5b, 0x00, + 0x69, 0x03, 0x40, 0x81, 0x40, 0x6b, 0x18, 0xd6, 0xb4, 0x6d, 0x03, 0x88, + 0x08, 0xde, 0x63, 0xb2, 0x4a, 0x63, 0x73, 0x84, 0x13, 0xe0, 0xb3, 0x6f, + 0x20, 0xbd, 0xdf, 0x82, 0xbd, 0x90, 0xef, 0x61, 0x8d, 0x4a, 0xcc, 0xb1, + 0xd2, 0x60, 0x88, 0x49, 0x48, 0x9c, 0x4c, 0x8f, 0x82, 0xb5, 0x8e, 0x49, + 0x2d, 0x11, 0xdd, 0x55, 0xe4, 0x85, 0x73, 0x14, 0x7e, 0x91, 0xbe, 0x1d, + 0x92, 0x53, 0xae, 0xc1, 0xec, 0xd7, 0xb2, 0xe2, 0xfe, 0xb4, 0xb6, 0xfa, + 0xdd, 0x63, 0xb1, 0xe7, 0x7e, 0xf0, 0xe1, 0x1c, 0xed, 0x77, 0x2b, 0xb4, + 0x1a, 0x36, 0x17, 0x27, 0xf5, 0xac, 0x96, 0x56, 0xe7, 0x34, 0x6a, 0xe6, + 0x11, 0xf3, 0x06, 0x3f, 0x8a, 0x4a, 0x79, 0xce, 0x9a, 0xe2, 0x32, 0x9b, + 0xaf, 0xd2, 0x04, 0x2e, 0xe7, 0x00, 0x7e, 0xa3, 0xf0, 0x5e, 0x79, 0xd3, + 0xec, 0x86, 0x54, 0xfe, 0xec, 0x30, 0x7e, 0x45, 0x7a, 0x27, 0x4d, 0xf7, + 0x60, 0xe9, 0xdf, 0xfb, 0x92, 0x52, 0x2a, 0x74, 0x36, 0x48, 0xd0, 0x10, + 0x67, 0xc7, 0xc5, 0x60, 0x7d, 0x62, 0xc9, 0x7e, 0x1b, 0x85, 0xcd, 0x01, + 0xc2, 0x40, 0x2d, 0x77, 0x1a, 0xf9, 0xad, 0xd6, 0xc9, 0x7b, 0x98, 0x3b, + 0x82, 0x35, 0xf8, 0x2c, 0x9e, 0xb9, 0x8a, 0xcc, 0xcc, 0x57, 0x35, 0xe7, + 0x6e, 0x81, 0xdb, 0xb9, 0x8d, 0xba, 0xa4, 0xa7, 0x9e, 0xb3, 0xae, 0x35, + 0xc1, 0xa6, 0xb6, 0x34, 0x38, 0x89, 0x2c, 0x6b, 0x78, 0x3f, 0xd6, 0x52, + 0xa7, 0xed, 0x37, 0x3d, 0x84, 0xb4, 0xd8, 0xf3, 0xab, 0x1a, 0xed, 0x79, + 0xe7, 0x55, 0x59, 0x9d, 0x38, 0x3a, 0x5e, 0xc2, 0x5e, 0xc6, 0x38, 0x41, + 0x02, 0x34, 0xf9, 0x2d, 0x1e, 0x9e, 0xdb, 0x29, 0xb9, 0xc7, 0x73, 0xb6, + 0x1d, 0x76, 0x6e, 0x83, 0x3e, 0x09, 0x29, 0x3e, 0x36, 0x46, 0x05, 0x36, + 0x39, 0xf9, 0xd4, 0xbc, 0xed, 0x80, 0x41, 0x24, 0x89, 0x02, 0x47, 0xc9, + 0x4f, 0x3b, 0xeb, 0x0e, 0x15, 0xf4, 0xd8, 0xcc, 0x4c, 0x77, 0x58, 0x5c, + 0x00, 0x2e, 0x02, 0x36, 0x9e, 0xc2, 0x42, 0xa3, 0xd4, 0x32, 0xee, 0xdc, + 0xe6, 0xb9, 0xa4, 0x30, 0x8e, 0x20, 0x11, 0x3d, 0xa5, 0x46, 0x8c, 0x8b, + 0x71, 0xaf, 0x65, 0x78, 0xdb, 0x3d, 0x6b, 0x21, 0xce, 0xdb, 0xc1, 0xf9, + 0x0e, 0x12, 0x52, 0xe2, 0xdc, 0xcb, 0xf1, 0xdc, 0xca, 0x65, 0xb6, 0xc3, + 0x5f, 0x66, 0x85, 0xa5, 0xbb, 0x7b, 0xca, 0x07, 0xdb, 0x72, 0x72, 0xae, + 0x66, 0x33, 0xac, 0x63, 0x9b, 0x59, 0x86, 0xc0, 0x80, 0x5d, 0x1c, 0x92, + 0x39, 0x56, 0xf3, 0x3a, 0xbe, 0x7d, 0x6c, 0x76, 0x95, 0x12, 0xe3, 0x0f, + 0xf4, 0xe1, 0xce, 0x00, 0x76, 0x84, 0x1c, 0x6d, 0xef, 0xc9, 0x65, 0xad, + 0x6b, 0x68, 0x65, 0x84, 0x6e, 0x04, 0x82, 0x1a, 0xd3, 0xcb, 0xb4, 0x49, + 0x4a, 0x2c, 0xb2, 0x87, 0x8d, 0xd7, 0xef, 0xb2, 0xe6, 0x10, 0x59, 0xb2, + 0x43, 0x47, 0x94, 0xa0, 0x7d, 0x83, 0x33, 0x6f, 0xaf, 0xb7, 0xf4, 0x7c, + 0x6e, 0xef, 0x3f, 0x05, 0x7f, 0x26, 0xec, 0x96, 0xfa, 0x8f, 0xc5, 0x2c, + 0xb1, 0xb2, 0x43, 0x1f, 0xa0, 0x74, 0x1f, 0x19, 0x55, 0xfe, 0xdb, 0x9d, + 0x1e, 0x9e, 0xf1, 0xbb, 0xd3, 0x89, 0xd7, 0x7e, 0xe8, 0xfb, 0x92, 0x53, + 0x5d, 0xb8, 0xfd, 0x47, 0x26, 0x4b, 0xd8, 0x4b, 0xc8, 0xd0, 0xb5, 0x9b, + 0x88, 0x1e, 0x32, 0xad, 0xd6, 0xfa, 0x2a, 0xc4, 0x18, 0x45, 0xa3, 0xd3, + 0x0f, 0x0e, 0x24, 0x89, 0x7b, 0x9f, 0xf9, 0x11, 0x31, 0x05, 0xf5, 0xb9, + 0xde, 0x85, 0x82, 0xaa, 0x5c, 0x36, 0x58, 0x77, 0x10, 0xe3, 0x3e, 0x48, + 0xa7, 0x01, 0xee, 0x78, 0xda, 0x4b, 0xd9, 0x5e, 0x8d, 0x6e, 0x84, 0xc9, + 0xe4, 0xa4, 0xa6, 0xbb, 0x72, 0x05, 0x54, 0xe4, 0xbe, 0xc6, 0x0f, 0x53, + 0x46, 0x30, 0x4c, 0x01, 0xdb, 0x48, 0xe5, 0x36, 0x25, 0xb9, 0x16, 0xb1, + 0xcc, 0xca, 0xfa, 0x2d, 0x06, 0x5e, 0x64, 0x6f, 0x1e, 0x03, 0x45, 0x74, + 0xf4, 0xfa, 0x6a, 0xaa, 0x1a, 0x3d, 0x5b, 0x01, 0x04, 0xbc, 0x8d, 0x01, + 0xe7, 0xfd, 0x61, 0x06, 0xfc, 0x6b, 0x6f, 0x25, 0xb7, 0x59, 0xea, 0x39, + 0xc4, 0x6e, 0x63, 0x4c, 0x12, 0x3b, 0x7c, 0x02, 0x4a, 0x40, 0xde, 0xa9, + 0xd4, 0x09, 0x18, 0xb4, 0x5a, 0xda, 0xeb, 0x20, 0xb4, 0x86, 0x8d, 0xc7, + 0x6f, 0x3c, 0xbb, 0xc9, 0x57, 0x37, 0xd8, 0xfb, 0x0b, 0x2c, 0xad, 0xd0, + 0x3d, 0x81, 0xc6, 0x23, 0x5f, 0xe5, 0x79, 0xab, 0x78, 0xfd, 0x3e, 0xa7, + 0xd8, 0x5c, 0xea, 0xf6, 0x3d, 0xba, 0x02, 0x64, 0x08, 0x1e, 0x6a, 0xdb, + 0x71, 0x5b, 0x63, 0x41, 0x70, 0x0e, 0x6b, 0x0c, 0xfb, 0x4c, 0xeb, 0xf0, + 0x49, 0x4e, 0x43, 0xb0, 0x37, 0x34, 0x8d, 0x6b, 0x60, 0xd5, 0xc4, 0x90, + 0x4e, 0xab, 0xbb, 0xe8, 0x58, 0xec, 0xc2, 0xfa, 0xb1, 0x43, 0x18, 0x08, + 0xf5, 0x4b, 0x9e, 0x67, 0x93, 0xb9, 0xdc, 0xfd, 0xc1, 0x73, 0x76, 0xf4, + 0xfc, 0x1c, 0x86, 0x17, 0xdc, 0x5c, 0xd3, 0xc6, 0xa4, 0x81, 0xf8, 0x2e, + 0xbf, 0x22, 0xa1, 0x8d, 0xd3, 0xf1, 0x31, 0x40, 0xfa, 0x2c, 0x6b, 0x7f, + 0xcd, 0x68, 0x49, 0x4e, 0x17, 0x58, 0xa5, 0xcc, 0xc5, 0x67, 0x51, 0xc3, + 0x60, 0x39, 0x35, 0xbc, 0x97, 0xb9, 0xa2, 0x49, 0x6c, 0x6d, 0x33, 0xf0, + 0xf0, 0x45, 0xf5, 0x09, 0xab, 0x08, 0xb8, 0xcb, 0xf6, 0x56, 0x5e, 0x7c, + 0xe0, 0x12, 0xb3, 0xb3, 0xf2, 0xae, 0xe8, 0xec, 0xbf, 0x15, 0x85, 0xce, + 0x17, 0xfe, 0x9a, 0x8b, 0x0f, 0xe6, 0xb9, 0xc7, 0xdc, 0x0a, 0xd8, 0xb8, + 0xe1, 0x39, 0x95, 0x3e, 0xc7, 0xbf, 0xd4, 0x73, 0x18, 0x5d, 0x03, 0x49, + 0x20, 0x13, 0x12, 0x92, 0x91, 0xf5, 0x71, 0xba, 0xb7, 0x0f, 0x02, 0xab, + 0x74, 0xba, 0x99, 0x7d, 0x62, 0xb7, 0x82, 0x76, 0xb8, 0x39, 0xb0, 0x60, + 0x82, 0xd3, 0x2b, 0x5b, 0x38, 0xf4, 0xe7, 0x31, 0xe0, 0xb1, 0xee, 0x31, + 0xcf, 0xcb, 0xe2, 0xa9, 0x74, 0x8b, 0xb0, 0xab, 0xb1, 0xc6, 0xb6, 0xbf, + 0x78, 0x3e, 0xd9, 0xe0, 0x14, 0x94, 0xdc, 0xbb, 0x0e, 0xfb, 0x44, 0xb5, + 0x86, 0x3c, 0xf4, 0x54, 0x9b, 0x80, 0xea, 0xf2, 0x01, 0xb2, 0xc6, 0x56, + 0x3b, 0xeb, 0x2a, 0xf6, 0x4e, 0x55, 0xef, 0x06, 0x5e, 0x47, 0xc3, 0x41, + 0xf8, 0x2c, 0x9b, 0x18, 0xe7, 0x5a, 0x0b, 0x1a, 0x5c, 0x4f, 0xcd, 0x25, + 0x3a, 0xb5, 0x9c, 0x2a, 0x06, 0xed, 0xc6, 0xe7, 0x73, 0x1f, 0x9a, 0xa1, + 0x99, 0x7b, 0xef, 0xe7, 0x8e, 0xcc, 0x1c, 0x21, 0x63, 0x61, 0x64, 0xd8, + 0x01, 0x70, 0xd8, 0x3c, 0x5d, 0xa7, 0xe0, 0xb5, 0x68, 0xc4, 0x65, 0x2c, + 0xfd, 0xe7, 0xc7, 0xd2, 0x3f, 0xc1, 0x25, 0x39, 0x38, 0xf8, 0x3f, 0x9d, + 0x70, 0xe3, 0x86, 0x7f, 0x7a, 0xd0, 0x60, 0x1a, 0x0f, 0x92, 0x89, 0x23, + 0x79, 0x00, 0x6a, 0x34, 0x4f, 0x5c, 0x92, 0x92, 0x9b, 0x55, 0xc4, 0x4f, + 0xe4, 0x52, 0x74, 0xce, 0x9c, 0x79, 0xa5, 0x5f, 0xd1, 0x07, 0x84, 0x8e, + 0xae, 0x49, 0x48, 0x2e, 0x3e, 0xd8, 0x8d, 0x7b, 0xac, 0xcb, 0x49, 0xdd, + 0xf0, 0x5a, 0x36, 0x43, 0x2b, 0xf1, 0x3a, 0xf3, 0xf1, 0x59, 0xd6, 0x72, + 0x49, 0xf9, 0x24, 0xa6, 0x2d, 0x3a, 0x8d, 0x15, 0xec, 0x36, 0x93, 0x60, + 0x21, 0x51, 0x6f, 0x32, 0xb4, 0xb0, 0x5b, 0x3a, 0x94, 0x94, 0xe8, 0x47, + 0xb3, 0x45, 0xcb, 0x7d, 0x6d, 0x3b, 0x31, 0x5c, 0xf8, 0x92, 0xdd, 0xc4, + 0x7c, 0xc7, 0xfb, 0x17, 0x50, 0x67, 0x6c, 0x05, 0xcb, 0xfd, 0x6b, 0x3b, + 0x70, 0x2d, 0x79, 0x13, 0xb0, 0x83, 0xf7, 0xe8, 0x92, 0x9e, 0x2f, 0x0e, + 0xb7, 0x56, 0xd2, 0x1c, 0x7d, 0xcf, 0xf7, 0x06, 0x78, 0x79, 0xaf, 0x46, + 0xe8, 0x6e, 0xf5, 0x3a, 0x6d, 0x6e, 0xe6, 0x40, 0x9f, 0xb9, 0x79, 0x9e, + 0x21, 0xb2, 0xdc, 0x93, 0x61, 0x3c, 0x0d, 0x7e, 0x7a, 0x42, 0xf4, 0x4f, + 0xab, 0x0f, 0xdf, 0xd3, 0x0b, 0x7b, 0xb1, 0xc4, 0x7d, 0xfa, 0xa4, 0xa4, + 0xcd, 0xf6, 0xe5, 0x11, 0xe3, 0xa2, 0xa3, 0x96, 0xd9, 0x63, 0x99, 0xe4, + 0x46, 0xaa, 0xe5, 0x87, 0x6e, 0x48, 0xf3, 0x3f, 0xc5, 0x03, 0x25, 0x9f, + 0xa4, 0x23, 0x89, 0x49, 0x4f, 0x39, 0x7e, 0x6e, 0x43, 0x28, 0xfb, 0x16, + 0x2d, 0x61, 0xd5, 0x6a, 0xfb, 0x6d, 0x88, 0xe3, 0xf3, 0x41, 0x3e, 0x6a, + 0xbe, 0x26, 0x51, 0xba, 0xc6, 0xb1, 0xa1, 0xa1, 0xcf, 0x9f, 0x6b, 0x08, + 0xdf, 0xa7, 0x27, 0x71, 0x44, 0xca, 0xba, 0xea, 0x6e, 0xc8, 0xa2, 0xb8, + 0xd5, 0xc0, 0x6a, 0xdd, 0xda, 0x73, 0xc1, 0x41, 0x75, 0x45, 0xf7, 0x40, + 0xac, 0x57, 0x63, 0x8c, 0x92, 0xdf, 0x6b, 0x7e, 0x49, 0x29, 0x2f, 0xa6, + 0xe3, 0x64, 0xdc, 0x0d, 0x6d, 0x27, 0x69, 0x69, 0x13, 0xa0, 0xef, 0x23, + 0x94, 0x5c, 0x66, 0x62, 0xba, 0xd7, 0x58, 0xca, 0x3d, 0x2f, 0xcd, 0x69, + 0x27, 0xdc, 0x63, 0xc3, 0xc2, 0x54, 0x19, 0x8f, 0x92, 0xe7, 0x37, 0xd6, + 0x25, 0xb1, 0xa6, 0xbc, 0x01, 0xd8, 0x23, 0xfd, 0x8e, 0xdb, 0x5c, 0x43, + 0x49, 0x01, 0xbd, 0x80, 0xd0, 0x13, 0xf9, 0xc1, 0xc9, 0x29, 0x13, 0xaf, + 0xc6, 0x79, 0xb6, 0x8c, 0x7a, 0xeb, 0x0e, 0xac, 0x97, 0x1d, 0x36, 0xb9, + 0xda, 0x76, 0x27, 0xe9, 0x21, 0xd7, 0x7d, 0x0c, 0xad, 0xcf, 0x75, 0x63, + 0x7b, 0x81, 0x0e, 0xde, 0x60, 0x91, 0xfc, 0x9f, 0x0d, 0x51, 0x22, 0x8f, + 0x5c, 0xd7, 0x61, 0x25, 0xcc, 0x69, 0x07, 0x6f, 0xd1, 0x98, 0x8e, 0x53, + 0x5b, 0xd3, 0x71, 0xcb, 0x2a, 0x0f, 0x73, 0x89, 0x8d, 0xcd, 0xd7, 0x5d, + 0x7c, 0x49, 0x49, 0x4d, 0x6c, 0xd7, 0xef, 0x6d, 0x78, 0xec, 0xad, 0xcd, + 0x68, 0x1b, 0xe7, 0xdb, 0x00, 0x9f, 0x34, 0x0f, 0xb4, 0x5d, 0x1b, 0x61, + 0xbb, 0x62, 0x27, 0x5d, 0xf3, 0xe3, 0xb9, 0x5b, 0x38, 0x95, 0x32, 0xc3, + 0x6b, 0x05, 0x96, 0x6d, 0xd0, 0x87, 0xba, 0x44, 0x0f, 0x90, 0x94, 0xfe, + 0xb1, 0x98, 0xf4, 0x0c, 0x4c, 0xc4, 0x18, 0x49, 0x4c, 0xab, 0xad, 0xa5, + 0xec, 0x7d, 0x50, 0x31, 0xfb, 0xbb, 0xf3, 0x9c, 0x7b, 0xc0, 0x2a, 0xe3, + 0x2b, 0x6b, 0x9c, 0x5b, 0xbc, 0xb0, 0x10, 0x1c, 0xe0, 0xd3, 0x24, 0xc7, + 0x67, 0x25, 0x8f, 0xd3, 0x1c, 0xd7, 0xb9, 0xd7, 0x59, 0xb9, 0xcf, 0x00, + 0x11, 0x31, 0xf2, 0x84, 0x4b, 0xb1, 0xdd, 0x8c, 0x77, 0xd6, 0x37, 0x39, + 0xe2, 0x01, 0xf1, 0xfb, 0x92, 0x52, 0x62, 0xda, 0xa3, 0x77, 0xa9, 0xb0, + 0x46, 0x91, 0xc9, 0x8e, 0xca, 0xaf, 0xa4, 0xfa, 0xa6, 0xda, 0x9c, 0xda, + 0xe0, 0xcb, 0xec, 0x71, 0xed, 0x3e, 0x2a, 0x2d, 0x19, 0x3b, 0xff, 0x00, + 0x4b, 0x05, 0xce, 0xfa, 0x00, 0x02, 0x40, 0x1d, 0xe1, 0x4e, 0xe6, 0x3b, + 0xec, 0xcf, 0x7e, 0xc0, 0xf6, 0xb4, 0xc4, 0x3b, 0xb1, 0xec, 0x92, 0x90, + 0xd9, 0x75, 0x6e, 0xc8, 0xdd, 0x4b, 0xbd, 0x49, 0x1a, 0x44, 0xf2, 0x7b, + 0xeb, 0xa2, 0x2d, 0x6e, 0x70, 0x63, 0xc6, 0xe9, 0xba, 0x62, 0x47, 0xb5, + 0xa3, 0xe1, 0x1c, 0xa0, 0x52, 0xdd, 0xcf, 0x16, 0x39, 0xad, 0x1e, 0x90, + 0xd5, 0xad, 0x98, 0x93, 0xda, 0x3b, 0xa6, 0x79, 0xbd, 0x84, 0x39, 0xa7, + 0xf4, 0x87, 0xfc, 0x1b, 0x75, 0xda, 0x3c, 0xd2, 0x53, 0x62, 0xb6, 0xe4, + 0x65, 0xf5, 0x0c, 0x4c, 0x5a, 0x64, 0xd6, 0xfb, 0x58, 0x2d, 0x9e, 0x5c, + 0xd0, 0x44, 0x98, 0xf0, 0x5d, 0x6f, 0x5f, 0xc9, 0x66, 0x39, 0x75, 0xae, + 0x04, 0xb2, 0x86, 0x49, 0x03, 0x99, 0x71, 0xec, 0xb0, 0xfe, 0xa7, 0xd1, + 0xeb, 0xf5, 0x71, 0x71, 0xe2, 0xa6, 0x39, 0xfa, 0x49, 0x13, 0xf4, 0x63, + 0x71, 0xf8, 0xad, 0x8e, 0xad, 0x91, 0x8a, 0xcb, 0x1e, 0xec, 0xa8, 0xf4, + 0xad, 0x7f, 0xa7, 0xa8, 0x91, 0xe1, 0xaa, 0x4a, 0x71, 0x3e, 0xb0, 0xd4, + 0xfc, 0xfc, 0x5c, 0x43, 0x8e, 0xdd, 0xec, 0x71, 0x6b, 0x8b, 0xbb, 0x86, + 0xbb, 0x4f, 0xf7, 0xad, 0x3c, 0xbe, 0x95, 0x95, 0xa0, 0x6b, 0x44, 0x08, + 0x03, 0x5e, 0xc0, 0x40, 0x55, 0x71, 0x1f, 0x6d, 0x79, 0xa7, 0x07, 0x64, + 0xd2, 0x25, 0xd4, 0x3f, 0xc1, 0x80, 0xe9, 0xf1, 0x5d, 0x4e, 0x43, 0x04, + 0xa4, 0xa7, 0x22, 0xfe, 0x97, 0x90, 0xe1, 0x32, 0xd1, 0x20, 0x77, 0x3f, + 0xdc, 0xb3, 0xb0, 0x3a, 0x5d, 0xed, 0xc8, 0x70, 0xdc, 0xd8, 0x9e, 0x75, + 0x5d, 0x4b, 0xd9, 0xb9, 0xad, 0xf8, 0x05, 0x4a, 0x8a, 0xf6, 0xe4, 0x9f, + 0x89, 0x49, 0x4c, 0x9b, 0x85, 0x43, 0x1a, 0x0b, 0x9b, 0xb9, 0xdd, 0xc9, + 0xd7, 0x54, 0x1b, 0x18, 0x01, 0x88, 0x02, 0x3b, 0x0d, 0x16, 0x9b, 0x98, + 0x08, 0x8f, 0xc1, 0x56, 0xb9, 0x83, 0xfb, 0x92, 0x53, 0x5a, 0x9e, 0xf1, + 0xdb, 0xb2, 0xb4, 0x41, 0xda, 0x86, 0xca, 0xf5, 0xf8, 0xab, 0x5b, 0x7d, + 0xa7, 0xc9, 0x25, 0x39, 0xcf, 0xae, 0x09, 0xff, 0x00, 0x5e, 0x52, 0xad, + 0x92, 0xe1, 0xf8, 0xab, 0x0f, 0x68, 0x2e, 0xd4, 0x41, 0xf0, 0x53, 0xae, + 0xb1, 0xdd, 0x25, 0x29, 0xac, 0x21, 0xa1, 0x40, 0x80, 0x01, 0x9e, 0x15, + 0xa8, 0x80, 0x3c, 0xd0, 0x5f, 0xc1, 0xf3, 0x49, 0x4d, 0x1b, 0xfe, 0x81, + 0xd3, 0x4e, 0x02, 0xce, 0x7b, 0x4c, 0xe9, 0xc7, 0x75, 0xa7, 0x96, 0x24, + 0x06, 0x8e, 0xff, 0x00, 0xc1, 0x50, 0x78, 0x33, 0xf0, 0x49, 0x4c, 0x2b, + 0x6e, 0xbf, 0xdc, 0xb5, 0x30, 0xd8, 0x76, 0xcf, 0x0b, 0x92, 0xea, 0xbf, + 0x59, 0x31, 0xf1, 0xaa, 0x7d, 0x58, 0x4f, 0xdf, 0x95, 0x30, 0x1e, 0x04, + 0xb1, 0xbe, 0x3a, 0xf7, 0x2b, 0xac, 0xe8, 0x96, 0xfd, 0xa3, 0xa6, 0xe2, + 0xde, 0xe3, 0x26, 0xda, 0xda, 0xe2, 0x7c, 0x49, 0x1a, 0xa4, 0xa6, 0xdb, + 0x81, 0x8f, 0x05, 0xcb, 0xfd, 0x6f, 0x00, 0x74, 0xcc, 0x82, 0xef, 0x01, + 0xff, 0x00, 0x54, 0x17, 0x58, 0xf6, 0x88, 0x5c, 0x97, 0xd7, 0x72, 0x47, + 0x4c, 0xb0, 0x0e, 0x5c, 0xe6, 0x01, 0xfe, 0x72, 0x4a, 0x78, 0x36, 0x5a, + 0xe6, 0xd4, 0x29, 0xa7, 0x5b, 0x2c, 0x3e, 0xe2, 0x3f, 0x20, 0x5d, 0xff, + 0x00, 0xd5, 0x27, 0x91, 0x55, 0xb5, 0xbb, 0x42, 0x40, 0x74, 0x76, 0x91, + 0xa1, 0x5c, 0x1e, 0xf1, 0x88, 0xcd, 0x8c, 0x13, 0x92, 0xe1, 0xee, 0x77, + 0x3b, 0x67, 0xb0, 0xf3, 0x5d, 0x5f, 0xd5, 0x1c, 0x92, 0x31, 0xd9, 0x63, + 0xcc, 0x96, 0xbc, 0xb1, 0xe4, 0xf8, 0x79, 0xfc, 0x8a, 0x4a, 0x76, 0xf2, + 0xa5, 0x99, 0x2d, 0x3d, 0xa5, 0x3e, 0x63, 0x46, 0x8f, 0xf3, 0xe5, 0x13, + 0x2d, 0xbf, 0xa7, 0x93, 0xc1, 0xfc, 0x53, 0xe5, 0x30, 0x7a, 0x21, 0xc3, + 0xb8, 0x94, 0x94, 0xf3, 0xb9, 0xfe, 0x8d, 0x2e, 0x7b, 0xde, 0xd2, 0x0b, + 0xc7, 0xba, 0xc0, 0x95, 0x06, 0x8b, 0xda, 0xd0, 0xc3, 0xf4, 0x4f, 0xd2, + 0x7e, 0x87, 0xe4, 0xad, 0xe7, 0x51, 0xea, 0xd2, 0xd8, 0x8d, 0x4c, 0x12, + 0x56, 0x4d, 0x98, 0xcf, 0x63, 0x76, 0xd0, 0xe1, 0x0d, 0x9d, 0xc5, 0xdb, + 0xb5, 0x27, 0xc9, 0x25, 0x25, 0xea, 0x74, 0x1d, 0x1b, 0x5b, 0x8c, 0x11, + 0xa1, 0xe5, 0xa0, 0xa8, 0x57, 0x93, 0x76, 0x15, 0x6c, 0xaa, 0xc6, 0x9b, + 0x47, 0x62, 0x0a, 0x58, 0xd8, 0xaf, 0xaa, 0xa7, 0x3e, 0xe7, 0x3a, 0xca, + 0x9f, 0xae, 0xd7, 0x7e, 0x71, 0xf2, 0x09, 0x99, 0x98, 0x5d, 0x61, 0x6f, + 0xa5, 0xee, 0xaa, 0x00, 0x1e, 0x44, 0x4c, 0xc9, 0x49, 0x4d, 0xe6, 0xfa, + 0x76, 0xb3, 0xd5, 0xa8, 0x6d, 0x70, 0xfc, 0xd2, 0x20, 0x93, 0x1a, 0xaa, + 0x95, 0xd3, 0xeb, 0xda, 0x2c, 0xb1, 0xf6, 0x32, 0xce, 0x00, 0x9f, 0x6f, + 0xe4, 0xd1, 0x49, 0xf9, 0xe5, 0xec, 0x01, 0xaf, 0x0d, 0x78, 0x30, 0x5c, + 0x47, 0x0a, 0x54, 0xbb, 0x63, 0xb7, 0x18, 0x71, 0x26, 0x75, 0xe3, 0xe4, + 0x12, 0x53, 0x69, 0xaf, 0xa8, 0x45, 0x0e, 0x92, 0xef, 0xcc, 0x91, 0xed, + 0x3f, 0x35, 0x1f, 0x7f, 0xd0, 0x86, 0xcf, 0x8f, 0x68, 0x89, 0xe1, 0x41, + 0x9b, 0x8d, 0x8e, 0xbb, 0x74, 0xd7, 0x1e, 0xd0, 0x67, 0xf2, 0x20, 0xfa, + 0xef, 0xf5, 0x3d, 0x5d, 0xa2, 0x66, 0x7e, 0x89, 0xfb, 0xbe, 0xe4, 0x94, + 0xff, 0x00, 0xff, 0xd9 +}; +size_t demo_005_jpg_len = 20176; + +const uint8_t demo_006_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00, + 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, + 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00, + 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00, + 0x38, 0x00, 0x31, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xef, 0xd2, 0x51, 0x92, 0x53, 0x84, 0x94, 0xba, 0x75, + 0x14, 0xe9, 0x29, 0x74, 0x93, 0x4a, 0x52, 0x92, 0x97, 0x49, 0x32, 0x49, + 0x29, 0x74, 0x93, 0x26, 0x25, 0x25, 0x2e, 0x9d, 0x44, 0x14, 0xe9, 0x29, + 0x49, 0xd2, 0x4c, 0x92, 0x94, 0x92, 0x4a, 0x24, 0xa4, 0xa6, 0x49, 0x4a, + 0x86, 0xe4, 0xb7, 0x14, 0x94, 0xcd, 0x25, 0x0d, 0xc9, 0xe5, 0x25, 0x32, + 0x49, 0x46, 0x4a, 0x52, 0x92, 0x99, 0x24, 0xa1, 0xb9, 0x29, 0x49, 0x4c, + 0xd2, 0x50, 0x2e, 0x29, 0x6e, 0x49, 0x4c, 0xe5, 0x29, 0x50, 0xdc, 0x98, + 0x99, 0x49, 0x4c, 0xf7, 0x04, 0xb7, 0x84, 0x22, 0xa3, 0x25, 0x25, 0x26, + 0xde, 0x12, 0xde, 0x10, 0x24, 0xa7, 0x98, 0x49, 0x49, 0xb7, 0x84, 0xb7, + 0x84, 0x0d, 0xc5, 0x2d, 0xe5, 0x25, 0x27, 0xde, 0x97, 0xa8, 0x15, 0x70, + 0xe2, 0x52, 0x2e, 0x49, 0x4d, 0x8f, 0x50, 0x26, 0xf5, 0x02, 0x04, 0xa5, + 0xb8, 0xa4, 0xa4, 0xe0, 0xa7, 0xee, 0xa2, 0x01, 0x4f, 0xaa, 0x4a, 0x66, + 0x92, 0x60, 0x4a, 0x62, 0x52, 0x52, 0xa5, 0x38, 0x2a, 0x24, 0xa7, 0x6a, + 0x4a, 0x64, 0x92, 0x49, 0x24, 0xa5, 0x26, 0x22, 0x53, 0xa4, 0x92, 0x90, + 0xe4, 0xe4, 0xe3, 0xe1, 0xe3, 0xbf, 0x27, 0x25, 0xe2, 0xba, 0x6b, 0x12, + 0xf7, 0x9e, 0xdd, 0xbb, 0x2e, 0x43, 0x3f, 0xfc, 0x60, 0x5b, 0x5e, 0x55, + 0x94, 0xe1, 0xe1, 0xb6, 0xcc, 0x76, 0x98, 0x6d, 0xcf, 0x7b, 0x9a, 0x5c, + 0x3c, 0x43, 0x43, 0x74, 0x5b, 0xff, 0x00, 0x5a, 0x85, 0x7f, 0xb0, 0x72, + 0x8b, 0xc6, 0xe0, 0xd0, 0xd2, 0x04, 0x91, 0xae, 0xe6, 0x81, 0xc2, 0xf3, + 0xa6, 0x53, 0x0d, 0x24, 0xfd, 0x22, 0x23, 0x6f, 0x6d, 0x52, 0x53, 0x7e, + 0xaf, 0xad, 0x5f, 0x59, 0xe9, 0xaf, 0x65, 0x39, 0x0d, 0xba, 0xb6, 0x4e, + 0xc3, 0x73, 0x5a, 0xeb, 0x0b, 0x49, 0xd3, 0x73, 0xbb, 0x95, 0x2a, 0xfe, + 0xbc, 0x7d, 0x63, 0xa4, 0x87, 0x5e, 0x6b, 0xb1, 0xad, 0x32, 0xe6, 0xba, + 0xb0, 0xd2, 0x47, 0x84, 0xb6, 0x16, 0x53, 0xab, 0xb6, 0x91, 0xfb, 0xc1, + 0xdc, 0xb7, 0xc1, 0x35, 0x76, 0xc8, 0xdb, 0x63, 0x77, 0x57, 0xe0, 0x79, + 0x49, 0x4f, 0x55, 0x57, 0xf8, 0xc6, 0x17, 0x3e, 0xa6, 0x33, 0x14, 0x30, + 0xff, 0x00, 0x85, 0xdc, 0xe9, 0x9f, 0x26, 0x71, 0x1f, 0x35, 0xd7, 0xe2, + 0x65, 0x51, 0x9b, 0x8b, 0x5e, 0x56, 0x3b, 0xb7, 0x55, 0x68, 0x96, 0x9f, + 0xca, 0x0f, 0x98, 0x2b, 0xc7, 0x72, 0x70, 0xa9, 0x2e, 0xdf, 0x8c, 0xfd, + 0x8e, 0x1a, 0x86, 0x9f, 0xef, 0x5d, 0x47, 0xd4, 0x2e, 0xb9, 0x6d, 0x19, + 0x6e, 0xe9, 0x39, 0x9a, 0x33, 0x20, 0x97, 0x52, 0xe3, 0xc7, 0xa9, 0xdc, + 0x0f, 0xeb, 0x04, 0x94, 0xf7, 0xa7, 0x44, 0xd2, 0xa6, 0xe0, 0x86, 0x52, + 0x52, 0xe9, 0xc1, 0x51, 0x49, 0x25, 0x33, 0xdc, 0x9a, 0x54, 0x40, 0x4e, + 0x02, 0x4a, 0x51, 0x29, 0x25, 0xa2, 0x52, 0x92, 0x94, 0x98, 0x94, 0x89, + 0x51, 0x94, 0x94, 0xbc, 0xa5, 0x2a, 0x32, 0x94, 0xa4, 0xa6, 0x60, 0xa5, + 0x00, 0xa8, 0x02, 0x9f, 0x72, 0x4a, 0x5c, 0x85, 0x10, 0x09, 0xee, 0x9c, + 0x94, 0x92, 0x52, 0xe1, 0x80, 0xf2, 0x54, 0xbd, 0x06, 0xa4, 0xc1, 0xac, + 0x94, 0x42, 0xe0, 0x38, 0x49, 0x4d, 0x77, 0xd4, 0x5b, 0xa8, 0x4c, 0x02, + 0xb0, 0x4a, 0x81, 0x00, 0xa4, 0xa4, 0x25, 0xa4, 0x26, 0x44, 0x32, 0xa3, + 0x1f, 0x7a, 0x4a, 0x6c, 0x04, 0xe0, 0x26, 0x09, 0xe5, 0x25, 0x2e, 0xa2, + 0x53, 0xca, 0x62, 0x52, 0x52, 0xd1, 0xaa, 0x90, 0x50, 0x94, 0xb7, 0x24, + 0xa4, 0x89, 0xa5, 0x47, 0x72, 0x79, 0x49, 0x4c, 0xa5, 0x25, 0x09, 0xd5, + 0x65, 0x7d, 0x65, 0xea, 0xb9, 0x5d, 0x27, 0x0e, 0xbc, 0xac, 0x70, 0xd2, + 0x3d, 0x40, 0xdb, 0x0b, 0x81, 0x20, 0x02, 0x0c, 0x71, 0xe2, 0x52, 0x52, + 0x4f, 0xac, 0xc0, 0x1e, 0x87, 0x94, 0x0f, 0x83, 0x48, 0xf8, 0x87, 0xb5, + 0x79, 0xc0, 0xbb, 0x6b, 0xc9, 0x03, 0x53, 0xac, 0xf9, 0x2d, 0x8c, 0xcf, + 0xaf, 0x2e, 0xea, 0x38, 0x76, 0x61, 0xdf, 0x43, 0x18, 0x1e, 0x47, 0xbe, + 0xb7, 0xeb, 0xa1, 0x07, 0x87, 0x7c, 0x16, 0x43, 0x7a, 0x97, 0x4f, 0x6c, + 0x87, 0xb0, 0xb5, 0xbd, 0x8e, 0xdd, 0xee, 0xfc, 0xa9, 0x29, 0x15, 0x82, + 0xd7, 0x89, 0xd7, 0x69, 0xe3, 0xe0, 0x83, 0xb5, 0xed, 0x69, 0x31, 0xa1, + 0xee, 0x55, 0xab, 0xba, 0xde, 0x03, 0x49, 0x34, 0xd7, 0x63, 0xcf, 0xf2, + 0xa1, 0x83, 0xf8, 0xaa, 0x16, 0xf5, 0x66, 0x3f, 0xdb, 0xe8, 0x80, 0xde, + 0xf2, 0xe2, 0x7f, 0x22, 0x4a, 0x62, 0xe0, 0xe7, 0x48, 0x08, 0x4d, 0xb2, + 0xfa, 0x2d, 0x6d, 0xac, 0x25, 0xae, 0x61, 0x05, 0xae, 0x1d, 0x88, 0xe1, + 0x19, 0xbd, 0x4a, 0x90, 0xdd, 0xa2, 0xb6, 0x8f, 0x3d, 0x7f, 0xbd, 0x0e, + 0xcc, 0xb6, 0x3f, 0x96, 0xb4, 0xf9, 0x6b, 0xfd, 0xe9, 0x29, 0xf6, 0x4e, + 0x95, 0x9a, 0x3a, 0x87, 0x4c, 0xc6, 0xcc, 0x1a, 0xfa, 0xd5, 0xb5, 0xce, + 0xfe, 0xb4, 0x43, 0xbf, 0x15, 0x60, 0xb4, 0xaf, 0x33, 0xe8, 0x3f, 0x5e, + 0x6f, 0xe9, 0x18, 0xad, 0xc2, 0x76, 0x33, 0x6f, 0xc7, 0x61, 0x25, 0xb0, + 0xf2, 0xd7, 0x80, 0xe3, 0x24, 0x09, 0x04, 0x2e, 0xc3, 0xa2, 0xfd, 0x73, + 0xe9, 0x1d, 0x62, 0xd6, 0xe3, 0x33, 0x7e, 0x3e, 0x53, 0xfe, 0x8d, 0x56, + 0x8f, 0xa5, 0x1a, 0xfb, 0x5c, 0xd9, 0x05, 0x25, 0x3b, 0x27, 0x44, 0xd2, + 0x88, 0xe6, 0x28, 0x6d, 0x29, 0x29, 0x60, 0x53, 0xee, 0x4d, 0xb4, 0xa7, + 0x8d, 0x12, 0x52, 0xd2, 0x9a, 0x52, 0x4c, 0x92, 0x94, 0x4a, 0x69, 0x4f, + 0x0a, 0x29, 0x29, 0x49, 0x24, 0x99, 0x25, 0x2f, 0x2a, 0x40, 0x4a, 0x82, + 0x9b, 0x4a, 0x4a, 0x5f, 0x69, 0x52, 0x0d, 0xd1, 0x29, 0x4c, 0x5c, 0x7b, + 0x24, 0xa5, 0x11, 0x1d, 0xd2, 0x05, 0x36, 0xa5, 0x34, 0xa4, 0xa6, 0x73, + 0x29, 0xa0, 0x85, 0x10, 0xee, 0xc9, 0xc9, 0x49, 0x4b, 0xea, 0x9f, 0x48, + 0x95, 0x19, 0x4d, 0x29, 0x29, 0x34, 0x27, 0x51, 0x05, 0x29, 0x49, 0x4b, + 0x92, 0x98, 0x94, 0xc4, 0xa6, 0x29, 0x29, 0x69, 0x4a, 0x53, 0x4a, 0x64, + 0x94, 0xbc, 0xa7, 0xde, 0xa0, 0x92, 0x4a, 0x48, 0x0e, 0xa9, 0xef, 0xc7, + 0xa3, 0x2b, 0x1d, 0xf8, 0xf9, 0x0c, 0x16, 0x53, 0x68, 0xda, 0xf6, 0x1e, + 0x08, 0x2a, 0x00, 0xc2, 0x9b, 0x5c, 0x52, 0x53, 0xc0, 0x75, 0xdf, 0xf1, + 0x79, 0x91, 0x51, 0x76, 0x47, 0x4c, 0xb5, 0xaf, 0xa5, 0xa0, 0xb9, 0xd5, + 0xd8, 0x61, 0xed, 0x68, 0xd4, 0xc1, 0xe1, 0xd0, 0x3e, 0x0b, 0x95, 0x77, + 0x4d, 0x7d, 0x7b, 0x89, 0x71, 0x31, 0xa0, 0x5e, 0xbd, 0xd7, 0x72, 0x46, + 0x3f, 0x4a, 0xbd, 0xd3, 0xab, 0xdb, 0xe9, 0xb7, 0xe2, 0xed, 0x3f, 0x22, + 0xf3, 0x8b, 0x06, 0xfd, 0x00, 0xe5, 0x25, 0x3c, 0xf0, 0xc7, 0xb5, 0xd6, + 0x0a, 0xc0, 0x3b, 0x8a, 0xb4, 0xde, 0x92, 0xfd, 0x0b, 0xdd, 0xb6, 0x7b, + 0xf2, 0xb7, 0x29, 0xe9, 0xcc, 0xac, 0x7d, 0xa9, 0xef, 0x1a, 0x92, 0x03, + 0x7c, 0x41, 0x48, 0x34, 0x5d, 0x64, 0x70, 0x07, 0x10, 0x92, 0x9c, 0x9f, + 0xd8, 0xdb, 0x40, 0x74, 0x97, 0x0f, 0x14, 0x5b, 0xba, 0x55, 0x15, 0xe2, + 0x0b, 0x5c, 0x0e, 0xf3, 0x20, 0x46, 0xba, 0xc7, 0x75, 0xab, 0x60, 0xb2, + 0x90, 0x18, 0xe0, 0x87, 0x9a, 0x28, 0x38, 0xec, 0x97, 0xea, 0x4c, 0x40, + 0x31, 0xaa, 0x4a, 0x79, 0x8b, 0xab, 0x75, 0x56, 0x9a, 0xc4, 0xcb, 0x62, + 0x7e, 0x2b, 0xa5, 0xfa, 0x93, 0xd0, 0x73, 0xf3, 0x7a, 0x9d, 0x1d, 0x41, + 0xad, 0xf4, 0xf0, 0xf1, 0xac, 0x0e, 0x7d, 0x84, 0x8d, 0x5c, 0xcd, 0x76, + 0x81, 0xca, 0xa7, 0x60, 0xac, 0xd0, 0xec, 0x66, 0x52, 0x1d, 0x93, 0x7b, + 0xb7, 0xb6, 0xd9, 0xf7, 0x00, 0x06, 0xa0, 0x83, 0xd9, 0x77, 0xbf, 0x51, + 0xba, 0x3b, 0xfa, 0x6f, 0x48, 0xf5, 0x6e, 0x91, 0x7e, 0x69, 0x16, 0xb9, + 0xbf, 0xba, 0xc8, 0xf6, 0x0f, 0x8c, 0x6b, 0xf3, 0x49, 0x4f, 0x46, 0x54, + 0x61, 0x27, 0x14, 0xc0, 0xa4, 0xa5, 0xe0, 0x21, 0xbb, 0x52, 0x88, 0x4a, + 0x1f, 0x74, 0x94, 0xc4, 0x85, 0x15, 0x32, 0xa2, 0x92, 0x94, 0x98, 0xea, + 0x9d, 0x32, 0x4a, 0x59, 0x24, 0xe9, 0x92, 0x52, 0xca, 0x40, 0xf8, 0x26, + 0x29, 0x24, 0xa5, 0xe6, 0x53, 0x84, 0xc1, 0x3c, 0xa4, 0xa5, 0xca, 0x89, + 0x4a, 0x53, 0x4a, 0x4a, 0x52, 0x79, 0x4c, 0x96, 0xa9, 0x29, 0x90, 0x29, + 0x48, 0x50, 0x94, 0xa5, 0x25, 0x26, 0x4a, 0x54, 0x65, 0x3c, 0xa4, 0xa6, + 0x5a, 0x26, 0x29, 0x92, 0x49, 0x4b, 0x15, 0x12, 0xa4, 0x9a, 0x12, 0x53, + 0x14, 0x94, 0xc3, 0x53, 0xfa, 0x7a, 0x24, 0xa6, 0x0a, 0x5b, 0x9a, 0xc0, + 0x5e, 0xf3, 0xb5, 0xad, 0xd4, 0x93, 0xd9, 0x0a, 0xdb, 0xea, 0xa4, 0x02, + 0xf7, 0x72, 0x76, 0x81, 0xdc, 0x9f, 0x00, 0x15, 0x5c, 0x8a, 0x3a, 0x86, + 0x70, 0xd8, 0x03, 0x71, 0xf1, 0xf9, 0xfd, 0x24, 0x97, 0x9f, 0x8b, 0x5b, + 0xfc, 0x4a, 0x4a, 0x73, 0x7a, 0xc6, 0x78, 0xce, 0x21, 0x8d, 0x11, 0x8e, + 0xc9, 0x89, 0xe5, 0xc7, 0xc5, 0x73, 0x57, 0xb5, 0x94, 0x35, 0xd0, 0x41, + 0x20, 0xc8, 0xf8, 0x2e, 0xbe, 0xcf, 0xab, 0xd6, 0x38, 0x0d, 0xb7, 0x87, + 0x8e, 0xed, 0xd9, 0xb7, 0x48, 0xed, 0xee, 0xf1, 0x5c, 0x9f, 0xd6, 0x7e, + 0x95, 0x99, 0xd3, 0xdc, 0xdb, 0xcf, 0xba, 0xa7, 0x48, 0x7c, 0x72, 0xdf, + 0x02, 0x7e, 0x29, 0x29, 0xc6, 0xb7, 0x31, 0xee, 0x78, 0x64, 0x9d, 0x80, + 0xab, 0xfd, 0x33, 0x22, 0xba, 0xac, 0x75, 0xb6, 0x7b, 0xb6, 0x8f, 0x68, + 0xf1, 0x2b, 0x05, 0xd6, 0xfb, 0x89, 0x45, 0x66, 0x64, 0x34, 0xc7, 0x82, + 0x4a, 0x76, 0xb2, 0xb3, 0x9b, 0x7b, 0x9c, 0x4b, 0x83, 0x67, 0xb9, 0x55, + 0x32, 0xeb, 0xdd, 0x43, 0xed, 0xa2, 0xed, 0x86, 0xa6, 0x17, 0x38, 0x0d, + 0x77, 0x00, 0xaa, 0x32, 0xd2, 0xd8, 0x3b, 0x77, 0xcf, 0x32, 0x27, 0x55, + 0x1e, 0xa2, 0xf9, 0x2c, 0x63, 0x07, 0xa6, 0x1c, 0xc9, 0x7b, 0x40, 0x8d, + 0x7e, 0x23, 0xb2, 0x4a, 0x74, 0xba, 0x4d, 0x55, 0x3f, 0xa8, 0xe0, 0x5b, + 0x92, 0x05, 0x8d, 0x2e, 0xac, 0x92, 0x7b, 0x87, 0x3b, 0x83, 0xf7, 0xaf, + 0x5a, 0xe0, 0x2f, 0x1e, 0xc2, 0xb1, 0xcd, 0xc6, 0xc5, 0xb3, 0xbd, 0x6e, + 0x22, 0x7f, 0xaa, 0xed, 0xc1, 0x7a, 0xf3, 0x5e, 0x1f, 0x53, 0x5e, 0x38, + 0x70, 0x0e, 0x1f, 0x31, 0x29, 0x29, 0x8b, 0x8e, 0xa9, 0x4a, 0x89, 0x29, + 0x4a, 0x4a, 0x65, 0x29, 0xa5, 0x34, 0xa6, 0x25, 0x25, 0x2e, 0x99, 0x32, + 0x49, 0x29, 0x49, 0x93, 0xa6, 0x49, 0x4a, 0x4d, 0x29, 0x24, 0x92, 0x94, + 0x92, 0x78, 0x49, 0x25, 0x2c, 0x92, 0x74, 0xa1, 0x25, 0x2c, 0x99, 0x49, + 0x28, 0x49, 0x4c, 0x52, 0x4f, 0x09, 0x24, 0xa5, 0xa1, 0x34, 0x29, 0x24, + 0x92, 0x99, 0xa4, 0x9a, 0x52, 0x05, 0x25, 0x32, 0x4e, 0xa3, 0x29, 0x4a, + 0x4a, 0x51, 0x49, 0x34, 0xa7, 0x49, 0x4a, 0x05, 0x07, 0x3f, 0x30, 0xe2, + 0x62, 0xba, 0xd6, 0xb7, 0x7d, 0xa6, 0x19, 0x4d, 0x63, 0x97, 0xd8, 0xed, + 0x1a, 0x11, 0x90, 0x6e, 0x0d, 0x73, 0x98, 0xf7, 0x09, 0x75, 0x73, 0xb2, + 0x7b, 0x13, 0xa1, 0x29, 0x29, 0xad, 0x85, 0x8f, 0xf6, 0x56, 0x8b, 0x32, + 0x0f, 0xab, 0x96, 0xe9, 0x2e, 0x71, 0xd7, 0x69, 0x76, 0xae, 0x0d, 0x56, + 0x7d, 0x77, 0x14, 0x22, 0xe0, 0x4c, 0x95, 0x12, 0xf0, 0x12, 0x52, 0x71, + 0x68, 0x08, 0x59, 0xd8, 0xd4, 0xf5, 0x2c, 0x47, 0xe3, 0xd9, 0xa1, 0x70, + 0x21, 0xae, 0xe6, 0x0a, 0x0b, 0xad, 0x00, 0x49, 0x2a, 0xb7, 0xda, 0xf6, + 0xba, 0x67, 0xe0, 0x3c, 0x92, 0x53, 0xe6, 0xf9, 0x9d, 0x13, 0x3e, 0x9e, + 0xb2, 0x7a, 0x55, 0x75, 0x39, 0xd6, 0xd8, 0xfd, 0xb4, 0x02, 0x3e, 0x9b, + 0x4f, 0x0e, 0x9e, 0x22, 0x17, 0x61, 0x4f, 0xf8, 0xb1, 0xc7, 0xfb, 0x19, + 0x17, 0xe6, 0xbf, 0xed, 0xa5, 0xba, 0x16, 0x01, 0xe9, 0x35, 0xde, 0x1b, + 0x4f, 0xb9, 0xc3, 0xe6, 0x16, 0x9b, 0xb3, 0xa8, 0xaf, 0x32, 0xac, 0x97, + 0xd6, 0x1e, 0xfc, 0x72, 0xed, 0x8e, 0x03, 0xdc, 0x1a, 0xe1, 0x0e, 0x00, + 0xfc, 0x17, 0x4a, 0xc7, 0x07, 0xb5, 0xaf, 0x69, 0x96, 0xb8, 0x02, 0x0f, + 0x91, 0xd5, 0x25, 0x3e, 0x63, 0xd5, 0xfe, 0xac, 0xd9, 0xf5, 0x79, 0xd5, + 0x01, 0x94, 0x32, 0x1b, 0x78, 0x21, 0xad, 0xdb, 0xb4, 0x82, 0x22, 0x4f, + 0x27, 0xc5, 0x63, 0x75, 0x06, 0x01, 0x79, 0xfe, 0x48, 0x03, 0xe7, 0x01, + 0x7a, 0x8f, 0x5e, 0xe9, 0xb8, 0x1d, 0x43, 0xd3, 0x39, 0x13, 0xbe, 0xaf, + 0xa2, 0xe6, 0x98, 0x22, 0x75, 0xf8, 0x2f, 0x3c, 0xeb, 0xfd, 0x2a, 0xec, + 0x3b, 0x8d, 0x8d, 0x77, 0xad, 0x49, 0x24, 0xef, 0x02, 0x0b, 0x7f, 0xac, + 0x12, 0x52, 0x56, 0xe3, 0x06, 0xfd, 0x5e, 0xc3, 0xc8, 0x8f, 0xa5, 0x75, + 0xcd, 0x27, 0xe0, 0x5b, 0x0b, 0xd1, 0xba, 0x3d, 0xfe, 0xbf, 0x47, 0xc4, + 0xb7, 0x92, 0x6a, 0x68, 0x3f, 0x16, 0xfb, 0x7f, 0x82, 0xe3, 0xc6, 0x30, + 0x77, 0xd4, 0x5c, 0x5b, 0x3b, 0xb2, 0xe7, 0x38, 0xff, 0x00, 0x69, 0xce, + 0x6a, 0xe8, 0x7e, 0xa6, 0xdb, 0xea, 0xf4, 0x36, 0x30, 0x9d, 0x6a, 0xb1, + 0xec, 0xf9, 0x4e, 0xef, 0xe2, 0x92, 0x9d, 0x72, 0x53, 0x4a, 0x93, 0x9a, + 0xa2, 0x42, 0x4a, 0x5a, 0x52, 0x94, 0xa1, 0x38, 0x69, 0x49, 0x4a, 0x4a, + 0x53, 0xed, 0x25, 0x3f, 0xa6, 0x92, 0x98, 0xa4, 0xa4, 0x18, 0x9f, 0xd3, + 0x49, 0x48, 0xd3, 0x29, 0x96, 0x15, 0x12, 0x08, 0xe5, 0x25, 0x29, 0x28, + 0x4e, 0x92, 0x4a, 0x52, 0x49, 0x93, 0xa4, 0xa5, 0x8a, 0x64, 0xe9, 0x24, + 0xa5, 0x92, 0x49, 0x28, 0x94, 0x94, 0xb2, 0x4a, 0x5b, 0x0c, 0x48, 0x4d, + 0x07, 0xc1, 0x25, 0x2d, 0x29, 0x4a, 0x64, 0xbc, 0xd2, 0x53, 0x29, 0x4a, + 0x53, 0x27, 0x09, 0x29, 0x74, 0x81, 0x49, 0x3a, 0x4a, 0x58, 0x95, 0x5a, + 0xc7, 0xcc, 0xa3, 0xd9, 0xf4, 0x55, 0x57, 0x38, 0x14, 0x94, 0xc0, 0x38, + 0x13, 0x07, 0x8e, 0xe5, 0x01, 0xce, 0x75, 0xf5, 0x3c, 0xd6, 0x4b, 0x01, + 0x3b, 0x6b, 0x70, 0xe7, 0xcc, 0xea, 0x9b, 0x22, 0xcd, 0xb5, 0xd9, 0x06, + 0x0c, 0x47, 0xdf, 0xa2, 0xa9, 0xd5, 0x33, 0xbe, 0xc7, 0xd3, 0x1d, 0x65, + 0x62, 0x1c, 0x40, 0xaa, 0x9f, 0xeb, 0x3b, 0x49, 0xf9, 0x0d, 0x52, 0x53, + 0x26, 0x75, 0x0c, 0x3b, 0xee, 0xbb, 0x11, 0x8f, 0x26, 0xea, 0x7e, 0x99, + 0x23, 0xda, 0x48, 0xd1, 0xdb, 0x4f, 0x92, 0x15, 0xaf, 0xec, 0x3e, 0x88, + 0xee, 0x56, 0x3f, 0x44, 0xa2, 0xc7, 0xe6, 0xed, 0xd4, 0x9d, 0x86, 0x5d, + 0xcf, 0x82, 0xdb, 0x7d, 0x13, 0x0d, 0x26, 0x24, 0x13, 0xe7, 0xa2, 0x4a, + 0x6a, 0x5e, 0xc3, 0xba, 0xb7, 0x70, 0x01, 0x04, 0xc7, 0x71, 0xc1, 0x0b, + 0xa3, 0xfa, 0xbd, 0x69, 0x38, 0x1e, 0x83, 0x9c, 0x0b, 0xb1, 0x9c, 0x6b, + 0xfe, 0xc8, 0xd5, 0x9f, 0x82, 0xc0, 0x7d, 0x64, 0xd0, 0x1d, 0x3a, 0x83, + 0x1f, 0x25, 0x4b, 0x13, 0xab, 0xdd, 0x81, 0xd7, 0xfd, 0x19, 0x9a, 0x2f, + 0xad, 0xa6, 0xde, 0xe0, 0x72, 0xd0, 0x61, 0x25, 0x3d, 0x3e, 0x75, 0xde, + 0xff, 0x00, 0xd2, 0x44, 0x38, 0xed, 0x0e, 0x00, 0x81, 0xfd, 0x57, 0x4f, + 0xe0, 0xb9, 0x4c, 0xfb, 0xda, 0x32, 0x0b, 0x0c, 0xba, 0xa3, 0xa7, 0x98, + 0xf2, 0xf3, 0x5d, 0x0f, 0x51, 0x6b, 0x9d, 0x4b, 0x9e, 0x60, 0xb7, 0x87, + 0xb4, 0x68, 0xd7, 0x8f, 0x21, 0x3c, 0x85, 0xcb, 0x64, 0x3b, 0x75, 0x8e, + 0x61, 0xfe, 0x71, 0x9e, 0xe0, 0x4f, 0xe7, 0x33, 0xf7, 0xbf, 0xbd, 0x25, + 0x3a, 0x6d, 0xcf, 0xad, 0xbd, 0x0e, 0xee, 0x94, 0xea, 0xc3, 0x6b, 0xda, + 0x5d, 0x8f, 0x63, 0x66, 0x37, 0x6e, 0xdf, 0x0e, 0x0a, 0xe7, 0xd4, 0x1b, + 0x7f, 0x57, 0xcb, 0xc7, 0x3c, 0xb5, 0xed, 0x78, 0x1f, 0x10, 0x47, 0xf0, + 0x54, 0x3a, 0x1e, 0x0d, 0x9d, 0x41, 0xee, 0xa1, 0xe2, 0x19, 0x5b, 0x5c, + 0x5e, 0x47, 0x81, 0x1e, 0xd1, 0xf3, 0x2a, 0x7f, 0x52, 0x1d, 0xe9, 0xf5, + 0x5b, 0x98, 0x4f, 0xf3, 0x95, 0x10, 0x47, 0x9b, 0x48, 0x3f, 0xde, 0x92, + 0x9e, 0xd5, 0xc1, 0x40, 0x84, 0x57, 0x28, 0x24, 0xa6, 0x21, 0xaa, 0x60, + 0x00, 0x14, 0x65, 0x4a, 0x52, 0x52, 0xe2, 0x13, 0x73, 0xf0, 0x4c, 0xa4, + 0x12, 0x52, 0xa0, 0x04, 0xda, 0xa9, 0x24, 0x52, 0x53, 0x04, 0xa2, 0x74, + 0x48, 0x94, 0x9a, 0x75, 0xd1, 0x25, 0x2d, 0xe9, 0x28, 0x96, 0x10, 0x8d, + 0x29, 0x8c, 0x24, 0xa4, 0x29, 0x94, 0xdc, 0x14, 0x52, 0x52, 0xca, 0x4d, + 0x6c, 0xa6, 0x53, 0x60, 0x10, 0x92, 0x96, 0x73, 0x34, 0xf3, 0x4c, 0x2b, + 0x70, 0x12, 0xa7, 0x2a, 0x40, 0xa4, 0xa6, 0x03, 0x40, 0x9f, 0x45, 0x23, + 0xaa, 0x68, 0x49, 0x4d, 0x72, 0x21, 0x32, 0x22, 0x6d, 0xa1, 0x25, 0x30, + 0x09, 0xd4, 0xb6, 0x84, 0xb6, 0x84, 0x94, 0xc6, 0x53, 0xca, 0x96, 0xd0, + 0x9b, 0x6a, 0x4a, 0x47, 0x69, 0xf6, 0x15, 0x9c, 0xeb, 0x08, 0x30, 0xb4, + 0x32, 0x04, 0x31, 0x66, 0xda, 0x35, 0x49, 0x48, 0x2e, 0x3e, 0xa3, 0x1e, + 0xc9, 0xd1, 0xc3, 0xb7, 0x20, 0xf2, 0xb3, 0xba, 0xf5, 0x39, 0x79, 0x19, + 0x38, 0xf8, 0xd5, 0x54, 0x5d, 0x45, 0x2d, 0x2e, 0x24, 0x44, 0x6f, 0x77, + 0xf7, 0x05, 0x78, 0x56, 0x4e, 0x43, 0x63, 0xc7, 0x5f, 0x82, 0x33, 0xe8, + 0xac, 0x9f, 0x50, 0xe8, 0x27, 0x93, 0xcb, 0x8a, 0x4a, 0x43, 0xd1, 0xf0, + 0xec, 0xc2, 0xc5, 0xb6, 0xdb, 0xe0, 0x3d, 0xda, 0x86, 0x83, 0x3b, 0x47, + 0xc7, 0xcd, 0x20, 0xe2, 0x59, 0x65, 0x87, 0xb3, 0x43, 0x47, 0xcd, 0x1f, + 0x29, 0xfb, 0x31, 0xb6, 0x8e, 0x5e, 0x60, 0x0f, 0x82, 0x09, 0xf6, 0xe2, + 0xed, 0xee, 0x4a, 0x4a, 0x47, 0x3f, 0xaa, 0x3f, 0xef, 0xfb, 0x96, 0x0e, + 0x60, 0x6d, 0x7d, 0x67, 0xa7, 0x64, 0x3c, 0xec, 0x65, 0x92, 0xc7, 0x98, + 0xd3, 0x43, 0x31, 0xf8, 0xae, 0x83, 0x6c, 0xe3, 0xbc, 0x7f, 0x24, 0xfe, + 0x45, 0xcd, 0x7d, 0x62, 0x70, 0x38, 0x98, 0xb6, 0x34, 0xfb, 0xab, 0xb2, + 0x01, 0xf2, 0x2d, 0x49, 0x4e, 0xce, 0x7b, 0x45, 0x39, 0xfb, 0x5b, 0x7e, + 0xe0, 0xe6, 0x7a, 0x95, 0xd4, 0xef, 0x0f, 0x06, 0x15, 0x93, 0xd4, 0xdc, + 0xd0, 0x6b, 0xc8, 0xac, 0x6d, 0x73, 0x1c, 0x24, 0x79, 0x1f, 0xa4, 0x16, + 0x8e, 0x55, 0x6c, 0xbf, 0x03, 0x1e, 0xf2, 0xd9, 0x75, 0x7a, 0xcc, 0xea, + 0xd6, 0xbc, 0x02, 0x08, 0xf9, 0xaa, 0x0d, 0xc7, 0xbf, 0x39, 0xec, 0xa2, + 0xb1, 0xbe, 0xd7, 0x39, 0xac, 0x8f, 0x19, 0xee, 0x52, 0x53, 0xd9, 0x7d, + 0x55, 0xc2, 0x66, 0x3f, 0x4c, 0x6d, 0xe0, 0xcb, 0xf2, 0x8e, 0xf7, 0x79, + 0x01, 0xed, 0x6b, 0x57, 0x3b, 0xd2, 0x3f, 0x53, 0xfa, 0xd4, 0xfa, 0xb8, + 0x02, 0xfb, 0x2b, 0x8f, 0x27, 0x6e, 0x8f, 0xca, 0xbb, 0x6c, 0x5a, 0x1b, + 0x8d, 0x8f, 0x56, 0x3b, 0x3e, 0x8d, 0x4d, 0x0d, 0x1f, 0x20, 0xb8, 0x6e, + 0xb0, 0x7e, 0xc5, 0xf5, 0xb9, 0xef, 0x1a, 0x07, 0x3e, 0xab, 0x87, 0xcc, + 0x09, 0xfc, 0x42, 0x4a, 0x7b, 0xd7, 0x21, 0x92, 0xa6, 0xed, 0x75, 0x50, + 0xee, 0x92, 0x94, 0x01, 0x2a, 0x41, 0xa9, 0xda, 0xa4, 0x92, 0x98, 0x10, + 0x46, 0xa9, 0x02, 0xa7, 0x1a, 0x21, 0xb8, 0x42, 0x4a, 0x65, 0x2a, 0x25, + 0xca, 0x24, 0xa6, 0x94, 0x94, 0xc8, 0x94, 0xc0, 0xc1, 0x51, 0x94, 0x92, + 0x52, 0x4d, 0xc9, 0x12, 0xa0, 0x13, 0xa4, 0xa6, 0x50, 0xa2, 0x42, 0x7d, + 0xc9, 0x8b, 0xa5, 0x25, 0x2a, 0x12, 0x12, 0x9a, 0x4a, 0x74, 0x94, 0xba, + 0x52, 0x61, 0x31, 0xd5, 0x21, 0xe0, 0x92, 0x99, 0x07, 0x12, 0x13, 0x77, + 0x52, 0x10, 0x14, 0x76, 0xea, 0x92, 0x98, 0x24, 0x94, 0x25, 0x09, 0x29, + 0x49, 0x27, 0x01, 0x3e, 0xd4, 0x94, 0xb2, 0x4a, 0x5a, 0x04, 0xd1, 0xdc, + 0x24, 0xa4, 0x19, 0x3f, 0x40, 0xac, 0xbb, 0x3d, 0xcc, 0x91, 0xc8, 0xfe, + 0x0b, 0x57, 0x20, 0x4b, 0x0a, 0xcb, 0x88, 0x7b, 0x98, 0x7b, 0xea, 0x3e, + 0x69, 0x29, 0xac, 0x2c, 0x6b, 0x6e, 0x6d, 0x87, 0xe8, 0xb7, 0x52, 0x3b, + 0x9f, 0x2f, 0x9a, 0x21, 0xb1, 0xdb, 0xf7, 0xdf, 0xfc, 0xe9, 0xfa, 0x15, + 0x0e, 0x18, 0x15, 0x70, 0x62, 0xf6, 0x09, 0xda, 0x5a, 0xee, 0x4e, 0xab, + 0x42, 0x9c, 0x7a, 0xd8, 0x7d, 0x47, 0xfd, 0x37, 0x6b, 0xaf, 0x30, 0x92, + 0x9a, 0x99, 0x6e, 0x9b, 0xab, 0xab, 0xf7, 0x1b, 0x27, 0xe2, 0x54, 0x2c, + 0x32, 0xc8, 0x1c, 0x02, 0xa2, 0xe7, 0xfa, 0x97, 0x59, 0x69, 0xfc, 0xe2, + 0x61, 0x23, 0xf4, 0x7e, 0x25, 0x25, 0x33, 0x1f, 0xcd, 0x1f, 0x02, 0x0f, + 0xe4, 0x5c, 0x9f, 0xd6, 0x07, 0xfe, 0xab, 0x5b, 0x7f, 0x96, 0x3f, 0x22, + 0xeb, 0x9b, 0xf4, 0x3e, 0x4b, 0x8c, 0xeb, 0xee, 0x7d, 0xad, 0xa9, 0xa4, + 0x06, 0xc3, 0xc6, 0x92, 0x92, 0x9d, 0xf6, 0x0b, 0x1d, 0xd3, 0xf1, 0x29, + 0xaf, 0xe9, 0x5c, 0xc1, 0x56, 0x9e, 0x6d, 0x04, 0x7e, 0x21, 0x74, 0x1f, + 0x57, 0xba, 0x0b, 0xba, 0x6e, 0xfc, 0x8c, 0x92, 0x0e, 0x45, 0x82, 0x03, + 0x41, 0x90, 0xc1, 0xdf, 0x5f, 0x12, 0xa1, 0xf5, 0x6b, 0x06, 0xb3, 0x8c, + 0xdb, 0xad, 0x68, 0x73, 0xaa, 0x86, 0xd3, 0x3a, 0x86, 0xc0, 0x12, 0x42, + 0xdd, 0x71, 0x49, 0x4b, 0x82, 0xb8, 0x5f, 0xaf, 0x75, 0x9a, 0xba, 0xbe, + 0x2e, 0x43, 0x74, 0xf5, 0x29, 0x82, 0x7c, 0xd8, 0xe3, 0xff, 0x00, 0x92, + 0x5d, 0xc0, 0x2b, 0x96, 0xfa, 0xff, 0x00, 0x4c, 0xe3, 0x61, 0x64, 0x47, + 0xd0, 0xb1, 0xcc, 0x27, 0xfa, 0xed, 0x9f, 0xfb, 0xea, 0x4a, 0x7a, 0x4c, + 0x3b, 0x7d, 0x7c, 0x2c, 0x7b, 0x86, 0xbb, 0xeb, 0x63, 0xa7, 0xe2, 0x02, + 0x22, 0xcf, 0xfa, 0xb3, 0x77, 0xad, 0xd0, 0xf1, 0x89, 0xe5, 0xa0, 0xb0, + 0xff, 0x00, 0x64, 0x95, 0xa5, 0x1a, 0xa4, 0xa4, 0x57, 0x5c, 0xda, 0x2b, + 0xde, 0x79, 0x3a, 0x34, 0x78, 0x95, 0x97, 0x7f, 0x51, 0xbe, 0x41, 0x75, + 0xbb, 0x3b, 0xed, 0x6e, 0x8a, 0x7d, 0x5a, 0xf2, 0x2e, 0x6d, 0x60, 0xfd, + 0x11, 0xaf, 0x6d, 0x4f, 0xe0, 0xb0, 0x32, 0x1e, 0x66, 0x27, 0x8f, 0x34, + 0x94, 0xeb, 0x7e, 0xdf, 0xb2, 0xb3, 0xa3, 0xc3, 0x80, 0xe7, 0x76, 0xbf, + 0x74, 0x42, 0xd1, 0xc1, 0xea, 0xb4, 0x67, 0x7b, 0x07, 0xb2, 0xd8, 0x9d, + 0xbd, 0x9d, 0x1c, 0xc2, 0xe2, 0x6e, 0x16, 0x13, 0x22, 0x49, 0xf0, 0xd5, + 0x5a, 0xe8, 0xb6, 0x39, 0xbd, 0x53, 0x17, 0x69, 0xd4, 0xd8, 0x01, 0x8f, + 0x03, 0xa1, 0xed, 0xe0, 0x92, 0x9e, 0xd9, 0xc0, 0xa8, 0x23, 0xb9, 0x88, + 0x65, 0xa9, 0x29, 0x82, 0x70, 0x42, 0x72, 0x13, 0x42, 0x4a, 0x54, 0xa4, + 0x0a, 0x50, 0x94, 0x24, 0xa5, 0x4a, 0x49, 0x41, 0x4c, 0x92, 0x99, 0x27, + 0x51, 0x49, 0x25, 0x32, 0x4b, 0x40, 0x99, 0x32, 0x4a, 0x5e, 0x53, 0xee, + 0x51, 0x49, 0x25, 0x2e, 0x92, 0x64, 0x92, 0x53, 0x30, 0x9e, 0x54, 0x25, + 0x29, 0x49, 0x4c, 0xb9, 0x49, 0x46, 0x52, 0xd5, 0x25, 0x23, 0xc8, 0x7b, + 0x59, 0x5c, 0xb8, 0xc6, 0xa0, 0x7d, 0xe6, 0x16, 0x56, 0x40, 0xda, 0xed, + 0xdd, 0xda, 0x7f, 0x05, 0x67, 0xad, 0x63, 0xbe, 0xcc, 0x41, 0x65, 0x2d, + 0x9b, 0x69, 0x7b, 0x6c, 0x1a, 0xc7, 0xd1, 0xec, 0xab, 0x64, 0x3a, 0x1d, + 0xee, 0xee, 0x92, 0x9c, 0xfc, 0xc9, 0xae, 0xcf, 0x50, 0x76, 0x21, 0xc3, + 0xc0, 0xf7, 0x57, 0x45, 0xaf, 0xf4, 0x49, 0x27, 0x73, 0x8b, 0x01, 0x71, + 0xfe, 0x53, 0x95, 0x6b, 0x98, 0x5f, 0x59, 0x67, 0x71, 0xc7, 0xc1, 0x59, + 0x0f, 0x63, 0x70, 0x59, 0x69, 0xd3, 0x7c, 0x0d, 0xa7, 0xb6, 0xdd, 0x12, + 0x53, 0x55, 0xad, 0xda, 0x35, 0xe4, 0xa7, 0x7e, 0x80, 0x0e, 0xe9, 0x52, + 0x1d, 0x75, 0xde, 0x43, 0x55, 0x2b, 0x75, 0xb3, 0x4e, 0x02, 0x4a, 0x48, + 0xdf, 0xa3, 0x0b, 0x85, 0xeb, 0x8e, 0x75, 0xb9, 0xb5, 0x54, 0x01, 0x89, + 0xd0, 0x0e, 0x4b, 0x89, 0x85, 0xde, 0x56, 0xdf, 0x1f, 0x05, 0xc0, 0xf5, + 0x77, 0x13, 0x9c, 0x48, 0x70, 0x69, 0xab, 0x51, 0x33, 0x24, 0xcc, 0xe9, + 0x09, 0x29, 0xf4, 0xef, 0xab, 0x74, 0xdb, 0x4f, 0x48, 0xa5, 0x97, 0x1d, + 0xd6, 0x0f, 0xa4, 0xef, 0x12, 0x34, 0x5a, 0x0e, 0x54, 0xfa, 0x0d, 0xc3, + 0x23, 0xa5, 0x53, 0x78, 0xe2, 0xc1, 0xb8, 0x7c, 0xc2, 0xb8, 0xe4, 0x94, + 0xb0, 0x58, 0xdf, 0x5c, 0xa8, 0x37, 0x74, 0x1b, 0x1c, 0x39, 0xa5, 0xec, + 0x7f, 0xe3, 0xb7, 0xfe, 0xfc, 0xb6, 0x42, 0xad, 0xd6, 0x6a, 0xf5, 0xfa, + 0x3e, 0x65, 0x71, 0x33, 0x53, 0x88, 0x1f, 0xd5, 0x1b, 0xbf, 0x82, 0x4a, + 0x72, 0x7e, 0xa5, 0x65, 0x30, 0x74, 0x9b, 0x19, 0x63, 0x83, 0x45, 0x76, + 0x4e, 0xbe, 0x0e, 0x01, 0x6c, 0x59, 0x9f, 0x5b, 0x67, 0x63, 0x49, 0xf3, + 0x77, 0xb4, 0x2e, 0x3b, 0xea, 0xb5, 0x8e, 0x1e, 0xbb, 0x00, 0x71, 0x00, + 0x07, 0x10, 0xd0, 0x49, 0x03, 0xc6, 0x07, 0xc5, 0x6f, 0x7a, 0xcd, 0x7c, + 0x6c, 0x1b, 0x92, 0x52, 0x3c, 0xa3, 0xeb, 0x58, 0xeb, 0x5a, 0xe8, 0x7b, + 0x8c, 0xeb, 0xc7, 0x87, 0xc1, 0x65, 0xe4, 0xd7, 0x76, 0xe2, 0xed, 0x84, + 0xb7, 0xb9, 0x1a, 0xfe, 0x49, 0x5b, 0x24, 0x9e, 0xe2, 0x38, 0x98, 0x08, + 0x45, 0x81, 0xc7, 0x51, 0x23, 0x90, 0x7c, 0xc2, 0x4a, 0x79, 0xe7, 0xb9, + 0xb1, 0xe1, 0xe6, 0x79, 0x94, 0x6c, 0x2a, 0xf6, 0xe7, 0xd4, 0x2c, 0x9a, + 0xdc, 0x1c, 0x26, 0x66, 0x46, 0x8b, 0x6e, 0xdc, 0x13, 0x64, 0x16, 0xd8, + 0xe0, 0x5b, 0x04, 0x1e, 0x47, 0xe3, 0x2a, 0xb5, 0xfd, 0x3e, 0x1c, 0x5d, + 0xef, 0xad, 0xe4, 0xe8, 0xed, 0xa0, 0x8d, 0x7c, 0xf5, 0xd3, 0xcd, 0x25, + 0x37, 0xc5, 0x99, 0x0c, 0xd5, 0x97, 0x3d, 0xbd, 0xfe, 0x94, 0x89, 0xf8, + 0x19, 0x57, 0x70, 0x73, 0x2c, 0xbd, 0xc6, 0xab, 0x80, 0xde, 0x06, 0xe6, + 0xbc, 0x69, 0xb8, 0x77, 0x91, 0xe2, 0xb9, 0xcb, 0x7a, 0x86, 0x17, 0x4c, + 0x11, 0x93, 0x96, 0xd2, 0x7f, 0xd1, 0x30, 0xfa, 0x8f, 0x3f, 0xe6, 0xf0, + 0xb6, 0x3a, 0x2f, 0x52, 0xe8, 0xd9, 0x36, 0x4d, 0x19, 0x95, 0xd9, 0x7b, + 0x84, 0x0a, 0xf5, 0x61, 0x00, 0xf8, 0x07, 0x80, 0x49, 0x49, 0x4e, 0xb1, + 0x0a, 0x30, 0x8c, 0x5a, 0xa0, 0x5a, 0x52, 0x53, 0x08, 0x4f, 0x09, 0xd3, + 0x24, 0xa5, 0xd3, 0x68, 0x94, 0xa6, 0x49, 0x4a, 0x84, 0xf1, 0x09, 0x4a, + 0x52, 0x92, 0x95, 0x05, 0x36, 0xa9, 0xc1, 0xd1, 0x3a, 0x4a, 0x60, 0x53, + 0x22, 0x26, 0xdb, 0xaa, 0x4a, 0x62, 0x92, 0x49, 0x24, 0xa5, 0xd2, 0x4c, + 0x92, 0x4a, 0x5d, 0x20, 0x92, 0x41, 0x25, 0x21, 0xce, 0xfe, 0x87, 0x6f, + 0x9b, 0x60, 0x7c, 0x4e, 0x81, 0x53, 0x75, 0x2d, 0xbe, 0xbe, 0x7d, 0xc3, + 0x43, 0xf1, 0x47, 0xeb, 0x06, 0xc6, 0x74, 0xeb, 0x5e, 0xc9, 0xdc, 0xd8, + 0x20, 0x01, 0x32, 0x67, 0x82, 0xab, 0x55, 0x97, 0x82, 0x05, 0x75, 0x32, + 0xf1, 0xf6, 0x82, 0xc0, 0xf2, 0xc3, 0xa1, 0x23, 0x49, 0x10, 0x92, 0x9a, + 0xcf, 0xc7, 0x7b, 0x48, 0x69, 0xe6, 0x61, 0xa7, 0xc4, 0x78, 0x28, 0xdd, + 0x83, 0xbc, 0x87, 0x39, 0xc7, 0x68, 0xd1, 0x95, 0x8f, 0x05, 0x78, 0xdf, + 0x4d, 0xbc, 0x1f, 0x73, 0x4c, 0xc1, 0xe7, 0x45, 0x9d, 0x76, 0x76, 0x5b, + 0xee, 0x2d, 0xa6, 0xb3, 0xa6, 0x80, 0xa4, 0xa4, 0x9b, 0x59, 0x89, 0x51, + 0x04, 0xfe, 0x9a, 0xcf, 0xcd, 0xf0, 0x08, 0x0d, 0x92, 0xed, 0x79, 0xee, + 0xa7, 0xe9, 0x0c, 0x76, 0x1c, 0x8c, 0xb7, 0x4d, 0xce, 0xfa, 0x0c, 0x28, + 0x55, 0x17, 0x18, 0x3d, 0xdd, 0xa9, 0x49, 0x4d, 0x96, 0x7d, 0x28, 0xd5, + 0x71, 0x79, 0xb8, 0x0d, 0xcf, 0xeb, 0x2d, 0xc5, 0x2e, 0x35, 0xfb, 0x1c, + 0xe7, 0x38, 0x09, 0x30, 0x0a, 0xec, 0xaa, 0x71, 0xdd, 0x3a, 0x72, 0xb9, + 0xac, 0x36, 0x97, 0xfd, 0x65, 0xc9, 0xd3, 0x56, 0x30, 0x37, 0xe6, 0xe7, + 0x24, 0xa7, 0x77, 0xea, 0x8e, 0x6e, 0x66, 0x06, 0x63, 0xfe, 0xae, 0xe7, + 0x99, 0x0d, 0x67, 0xab, 0x84, 0xf2, 0x20, 0xba, 0xb3, 0xaa, 0xea, 0xdc, + 0xb9, 0xef, 0xac, 0xf8, 0xa7, 0x11, 0xdd, 0x3b, 0xae, 0x52, 0x3d, 0xdd, + 0x35, 0xed, 0x65, 0xe0, 0x72, 0x68, 0x7c, 0x34, 0xfd, 0xc5, 0x6f, 0xb2, + 0xea, 0xef, 0xa9, 0x97, 0x54, 0xed, 0xd5, 0xd8, 0xd0, 0xe6, 0x3b, 0xc4, + 0x11, 0x21, 0x25, 0x2e, 0x9d, 0xcc, 0x16, 0x54, 0xfa, 0xcf, 0x0f, 0x69, + 0x69, 0xf9, 0x88, 0x51, 0x95, 0x36, 0x14, 0x94, 0xf0, 0xbf, 0x54, 0x5e, + 0x68, 0xeb, 0x9e, 0x89, 0xd3, 0x78, 0x7b, 0x0f, 0xc4, 0x7f, 0xe7, 0x2b, + 0xb7, 0xbf, 0x1b, 0x1a, 0xef, 0xe7, 0x6a, 0x6b, 0xfc, 0xc8, 0x13, 0xf7, + 0xae, 0x12, 0xa3, 0xf6, 0x3f, 0xad, 0x64, 0x70, 0x1b, 0x94, 0x47, 0xc9, + 0xce, 0xfe, 0xe7, 0x2e, 0xfd, 0xe5, 0x25, 0x34, 0xad, 0xe9, 0x18, 0x76, + 0xd6, 0xf6, 0x30, 0x3a, 0xa7, 0xbd, 0xa5, 0xad, 0xb1, 0xaf, 0x77, 0xb4, + 0xf6, 0x20, 0x13, 0x1a, 0x2f, 0x30, 0xce, 0xea, 0x7f, 0x5a, 0x3a, 0x6e, + 0x4b, 0xb1, 0x72, 0xef, 0xba, 0xb7, 0xb4, 0x90, 0xdd, 0xcd, 0x03, 0x7c, + 0x69, 0xb9, 0xba, 0x6a, 0x0a, 0xf5, 0x90, 0xe5, 0x22, 0xca, 0xac, 0x2d, + 0x2f, 0x63, 0x5e, 0x58, 0x65, 0xa5, 0xc0, 0x18, 0x3e, 0x52, 0x92, 0x9f, + 0x2b, 0xb9, 0x9f, 0x5c, 0xc7, 0x4d, 0xfd, 0xa7, 0x7d, 0x97, 0xd7, 0x86, + 0x34, 0x24, 0x9d, 0x8e, 0x0d, 0xec, 0xe2, 0xcd, 0x0e, 0xdf, 0x35, 0x8c, + 0xeb, 0xf3, 0x2f, 0x33, 0x75, 0xf6, 0x59, 0xfd, 0x67, 0x93, 0xf9, 0x4a, + 0xf4, 0x9f, 0xf1, 0x85, 0x79, 0x67, 0x44, 0x65, 0x00, 0x90, 0x2f, 0xb9, + 0xa1, 0xdf, 0xd5, 0x60, 0x2f, 0xfc, 0xa0, 0x2f, 0x3c, 0xaa, 0xa9, 0x03, + 0xc1, 0x25, 0x22, 0x65, 0x5d, 0xbf, 0x14, 0x66, 0xd6, 0xe6, 0x10, 0x44, + 0x82, 0x35, 0x04, 0x78, 0xa3, 0x0a, 0xc0, 0x45, 0x6b, 0x7d, 0xb0, 0x52, + 0x53, 0xad, 0xd2, 0xfe, 0xb4, 0xf5, 0x3c, 0x28, 0x76, 0xf7, 0x64, 0x56, + 0xcf, 0xe7, 0x31, 0xde, 0x64, 0x16, 0xf8, 0xb0, 0x9d, 0x41, 0x5d, 0xbf, + 0x4a, 0xeb, 0xdd, 0x3b, 0xab, 0xb0, 0x7d, 0x9d, 0xf1, 0x6c, 0x49, 0xa5, + 0xda, 0x3c, 0x79, 0x8f, 0x10, 0xbc, 0xcd, 0xad, 0xda, 0x64, 0x68, 0x46, + 0xb2, 0xab, 0xbe, 0xdb, 0xb1, 0x72, 0xc3, 0xe9, 0x71, 0xad, 0xc0, 0xfa, + 0x95, 0xb9, 0xa6, 0x08, 0x3d, 0xe2, 0x12, 0x53, 0xec, 0x6e, 0x62, 0x19, + 0x0b, 0x8d, 0xe8, 0x7f, 0x5f, 0x1c, 0x0b, 0x71, 0xfa, 0xb0, 0xdc, 0xde, + 0x06, 0x4b, 0x46, 0xa3, 0xfa, 0xed, 0x1c, 0xfc, 0x97, 0x6b, 0x5d, 0x94, + 0xe4, 0x54, 0xdb, 0xa9, 0x78, 0xb2, 0xb7, 0x89, 0x6b, 0xda, 0x64, 0x10, + 0x92, 0x91, 0xc2, 0x4a, 0x45, 0xb0, 0xa2, 0x92, 0x96, 0x49, 0x4a, 0x13, + 0xc2, 0x4a, 0x62, 0x94, 0xa7, 0x21, 0x34, 0x24, 0xa5, 0x4a, 0x52, 0x9a, + 0x12, 0x49, 0x4a, 0x49, 0x34, 0xa4, 0x92, 0x97, 0x49, 0x24, 0x92, 0x52, + 0xea, 0x4d, 0x0a, 0x21, 0x0f, 0x32, 0xff, 0x00, 0xb3, 0x61, 0x5f, 0x90, + 0x0c, 0x1a, 0xeb, 0x73, 0x9a, 0x62, 0x7d, 0xd1, 0xed, 0xd3, 0xbe, 0xa9, + 0x29, 0xc9, 0xeb, 0x19, 0x37, 0xe6, 0x5a, 0xfe, 0x9f, 0x59, 0x34, 0x62, + 0xd4, 0xe6, 0x9b, 0xef, 0x04, 0xb5, 0xef, 0x8f, 0x76, 0xc6, 0x7c, 0xcf, + 0x2b, 0x97, 0xb0, 0x65, 0xdd, 0x75, 0x99, 0x4c, 0x02, 0xca, 0xc7, 0xe8, + 0xf5, 0x97, 0x3e, 0x1a, 0x79, 0x1a, 0x83, 0x0b, 0x63, 0x75, 0xcd, 0xa2, + 0x9a, 0xf2, 0xac, 0x36, 0x5e, 0x5a, 0x5d, 0x75, 0x87, 0x92, 0xe8, 0x97, + 0x7e, 0x25, 0x50, 0xb3, 0x1a, 0xbf, 0x45, 0xee, 0xc7, 0x26, 0xb7, 0x36, + 0x1c, 0x20, 0xf2, 0x3b, 0xa4, 0xa6, 0xa6, 0xec, 0xfa, 0xcf, 0xab, 0x8f, + 0x64, 0xf7, 0xda, 0x5c, 0x4f, 0xe0, 0xf1, 0xfc, 0x56, 0xc7, 0x49, 0xea, + 0x99, 0x99, 0x18, 0xee, 0x7d, 0x9b, 0x69, 0x7d, 0x0e, 0x8b, 0x5a, 0x47, + 0x2d, 0x89, 0xdc, 0x35, 0x2b, 0x3b, 0x6d, 0xbb, 0x3f, 0x48, 0x45, 0x9d, + 0xc1, 0x3e, 0xd7, 0x7d, 0xe8, 0x7d, 0x2e, 0xca, 0x5f, 0xd4, 0x2d, 0xc7, + 0xc9, 0xdd, 0x4b, 0x6c, 0xac, 0x86, 0x39, 0xc7, 0x70, 0xdc, 0x0a, 0x4a, + 0x74, 0x98, 0xfb, 0x32, 0x5c, 0x2e, 0xb4, 0x97, 0x3a, 0xc3, 0xed, 0x1e, + 0x01, 0x5c, 0x6b, 0x7d, 0xce, 0xda, 0x34, 0x68, 0xda, 0x10, 0x69, 0x76, + 0x3b, 0x5f, 0xb6, 0xb9, 0x79, 0x60, 0xda, 0xd9, 0x10, 0x20, 0x77, 0x56, + 0x41, 0x76, 0xd8, 0x90, 0x01, 0xfb, 0x92, 0x53, 0x0a, 0xdb, 0x06, 0x09, + 0x93, 0xe0, 0x35, 0x59, 0xfd, 0x37, 0x01, 0xcc, 0xfa, 0xcf, 0x92, 0xe3, + 0xf4, 0x2d, 0x35, 0x3d, 0xba, 0xcf, 0xb6, 0x09, 0x23, 0xef, 0x6a, 0xd4, + 0x6b, 0x63, 0x40, 0x89, 0x43, 0x5e, 0xcc, 0xec, 0x6b, 0x1a, 0xcd, 0xc1, + 0xce, 0x35, 0xbe, 0x4c, 0x10, 0xd7, 0x0f, 0xa5, 0xe7, 0x05, 0x25, 0x3a, + 0x9d, 0x53, 0x0f, 0xf6, 0x8f, 0x4e, 0xbf, 0x0b, 0x7f, 0xa7, 0xeb, 0xb7, + 0x6e, 0xf8, 0x98, 0xd6, 0x78, 0x53, 0xc6, 0xc7, 0x66, 0x2e, 0x2d, 0x38, + 0xb5, 0xc9, 0x65, 0x2c, 0x6d, 0x6d, 0x27, 0x98, 0x68, 0x84, 0x65, 0x12, + 0x92, 0x94, 0xa6, 0xd4, 0x35, 0x36, 0xa4, 0xa7, 0x84, 0xfa, 0xca, 0xcf, + 0xb3, 0xfd, 0x62, 0xb2, 0xc1, 0xa6, 0xef, 0x4e, 0xc1, 0xf1, 0x80, 0x3f, + 0x82, 0xef, 0x03, 0x83, 0xd8, 0xd7, 0x8e, 0x1c, 0x01, 0xfb, 0xc4, 0xae, + 0x3b, 0xeb, 0xbd, 0x7b, 0x3a, 0x86, 0x3d, 0xa0, 0x7d, 0x3a, 0xa0, 0x9f, + 0x36, 0xbb, 0xfd, 0xab, 0xa8, 0xe9, 0x56, 0xfa, 0xdd, 0x2f, 0x16, 0xce, + 0x66, 0xa6, 0x83, 0xf2, 0x1b, 0x7f, 0x82, 0x4a, 0x4c, 0x54, 0xd8, 0x54, + 0x0a, 0x9b, 0x39, 0x49, 0x4f, 0x1b, 0xfe, 0x31, 0x32, 0x25, 0xd8, 0x78, + 0x9b, 0x84, 0x00, 0xeb, 0x5c, 0xd8, 0xef, 0xf4, 0x5a, 0x67, 0xef, 0x5c, + 0x95, 0x50, 0x42, 0xdd, 0xff, 0x00, 0x18, 0x61, 0xed, 0xeb, 0x74, 0x13, + 0xf4, 0x5f, 0x8e, 0xdd, 0xbf, 0x10, 0xe7, 0x82, 0xb0, 0xea, 0x6c, 0x80, + 0x92, 0x93, 0x34, 0x0e, 0xff, 0x00, 0x7a, 0x8b, 0x5e, 0x1f, 0x0e, 0x02, + 0x07, 0x65, 0x00, 0xf2, 0xc7, 0x16, 0x1e, 0x1d, 0x25, 0xa5, 0x45, 0xa6, + 0x18, 0x3c, 0x52, 0x53, 0x60, 0x38, 0x48, 0x6c, 0xcc, 0xf2, 0x81, 0x9b, + 0x56, 0xfa, 0x1b, 0x60, 0xfa, 0x55, 0x98, 0x3f, 0x02, 0xa4, 0xd8, 0x10, + 0x3b, 0x9e, 0xe8, 0xd5, 0x80, 0xff, 0x00, 0x52, 0xa3, 0xc3, 0xc2, 0x4a, + 0x72, 0x76, 0x8e, 0x65, 0x6d, 0xfd, 0x5d, 0xfa, 0xcf, 0x95, 0xd1, 0x6e, + 0x0c, 0x24, 0xdb, 0x84, 0xe3, 0x36, 0xd3, 0xe1, 0xe2, 0xe6, 0x78, 0x1f, + 0xca, 0xb2, 0xbd, 0x32, 0x67, 0x76, 0x84, 0x72, 0x84, 0xf0, 0x1b, 0xc1, + 0xd4, 0x24, 0xa7, 0xda, 0xea, 0xba, 0xac, 0x9a, 0x19, 0x91, 0x43, 0x83, + 0xea, 0xb5, 0xa1, 0xec, 0x70, 0xe0, 0xb5, 0xc2, 0x41, 0x51, 0x21, 0x73, + 0x5f, 0xe2, 0xf3, 0x39, 0xd9, 0x1d, 0x26, 0xec, 0x37, 0x99, 0xfb, 0x1d, + 0x90, 0xc9, 0xec, 0xcb, 0x06, 0xf0, 0x3e, 0x46, 0x57, 0x4e, 0xe1, 0x05, + 0x25, 0x2d, 0x10, 0x94, 0xa6, 0x49, 0x25, 0x2f, 0x2a, 0x25, 0x29, 0x48, + 0xa4, 0xa5, 0x24, 0x92, 0x49, 0x29, 0x8a, 0x49, 0x93, 0xa4, 0xa5, 0x27, + 0x4c, 0x9c, 0x24, 0xa5, 0xc2, 0xce, 0xeb, 0x99, 0xcc, 0xc7, 0xa8, 0x54, + 0x78, 0x8d, 0xef, 0x81, 0x27, 0x9f, 0x68, 0x81, 0xe2, 0x56, 0x9b, 0x02, + 0xe6, 0x3a, 0xce, 0x49, 0x75, 0x97, 0x3d, 0x80, 0x39, 0xce, 0x78, 0xad, + 0xb2, 0x24, 0x47, 0x09, 0x29, 0xa3, 0xf6, 0xba, 0xae, 0x78, 0xf7, 0x82, + 0xe8, 0x20, 0x35, 0xc0, 0xb1, 0xda, 0xf3, 0xa3, 0xa1, 0x2b, 0x0b, 0x5a, + 0xdd, 0x83, 0xda, 0xc0, 0x34, 0x94, 0x53, 0xd5, 0xb1, 0x76, 0x59, 0x8f, + 0x95, 0x88, 0xcb, 0x69, 0x1a, 0x6e, 0x02, 0x1d, 0xba, 0x20, 0xb9, 0xae, + 0x33, 0xaa, 0xca, 0xa7, 0x32, 0xaa, 0xf7, 0xb5, 0xa5, 0xcf, 0x61, 0xd1, + 0xad, 0x07, 0x51, 0xf1, 0x07, 0x44, 0x94, 0xd8, 0xb2, 0x96, 0x8a, 0xcb, + 0xb7, 0x6e, 0x68, 0x88, 0x50, 0x03, 0xd1, 0x6d, 0x57, 0x96, 0x86, 0xb0, + 0x38, 0x13, 0xdc, 0xba, 0x0a, 0x2d, 0x6f, 0x0e, 0xa7, 0x75, 0xac, 0x86, + 0x03, 0x31, 0xc0, 0x3e, 0x65, 0x57, 0xcd, 0x6d, 0xb7, 0xbd, 0xbb, 0xac, + 0x0d, 0xad, 0xba, 0xb4, 0x0e, 0x07, 0x60, 0x92, 0x9d, 0xa1, 0xf4, 0x43, + 0x9b, 0x1e, 0xef, 0x74, 0x8f, 0x3d, 0x55, 0x8a, 0x8e, 0xe1, 0x1d, 0xc2, + 0xe7, 0x6d, 0xea, 0xd9, 0x18, 0x58, 0xf5, 0x51, 0x53, 0x05, 0xaf, 0x68, + 0x23, 0xd4, 0xb0, 0x9e, 0x07, 0x1a, 0x0e, 0x56, 0x7b, 0xfa, 0xf7, 0x58, + 0x74, 0xc5, 0xa2, 0xa0, 0x7f, 0xd1, 0xb4, 0x03, 0xf7, 0x99, 0x29, 0x29, + 0xed, 0xb6, 0xdb, 0x12, 0x5e, 0x58, 0xc1, 0xcb, 0x89, 0x0d, 0x0b, 0x2b, + 0x37, 0xeb, 0x5e, 0x07, 0x4e, 0x24, 0x62, 0x7e, 0xb9, 0x92, 0xcd, 0x4c, + 0x1f, 0x60, 0x83, 0xdd, 0xdd, 0xfe, 0x4b, 0x94, 0xb2, 0xdc, 0x9c, 0x83, + 0xbb, 0x22, 0xd7, 0xdb, 0xfd, 0x77, 0x17, 0x7e, 0x09, 0x51, 0x81, 0xf6, + 0xbe, 0xa7, 0x8b, 0x82, 0xc3, 0xb7, 0xed, 0x56, 0x31, 0xa6, 0x3b, 0x36, + 0x65, 0xc7, 0xee, 0x49, 0x4f, 0xad, 0x51, 0x73, 0x32, 0x71, 0xaa, 0xc9, + 0x60, 0x21, 0x97, 0x31, 0xb6, 0x34, 0x1e, 0x40, 0x70, 0x9d, 0x53, 0x95, + 0x3d, 0x8d, 0xae, 0xb6, 0xd6, 0xc1, 0x0c, 0x60, 0x0d, 0x68, 0xf0, 0x00, + 0x40, 0x43, 0x29, 0x29, 0x4a, 0x4d, 0x51, 0x52, 0x6a, 0x4a, 0x79, 0xaf, + 0xaf, 0x55, 0x4e, 0x36, 0x25, 0xc0, 0x7d, 0x17, 0xb9, 0x87, 0xfb, 0x40, + 0x1f, 0xe0, 0xb4, 0x3e, 0xaa, 0x5d, 0xea, 0xf4, 0x4a, 0xc1, 0x32, 0x6b, + 0x73, 0x99, 0xf8, 0xee, 0xfe, 0x28, 0x7f, 0x5c, 0xaa, 0x2f, 0xe8, 0x6e, + 0x78, 0xe6, 0xab, 0x18, 0xff, 0x00, 0xc7, 0x6f, 0xf1, 0x55, 0x7e, 0xa3, + 0x5b, 0xbb, 0x0b, 0x22, 0xa3, 0xf9, 0xaf, 0x6b, 0x87, 0xf6, 0x84, 0x7f, + 0x04, 0x94, 0xf4, 0x45, 0x3b, 0x0e, 0xa9, 0x3b, 0x94, 0xc1, 0x25, 0x3c, + 0xa7, 0xf8, 0xc5, 0xc1, 0x75, 0x98, 0xd8, 0x9d, 0x41, 0x82, 0x45, 0x0e, + 0x35, 0x5a, 0x7c, 0x1b, 0x64, 0x16, 0x9f, 0xbd, 0xbf, 0x8a, 0xe3, 0x69, + 0x72, 0xf5, 0x4e, 0xbb, 0x8b, 0xf6, 0xde, 0x89, 0x9b, 0x8f, 0x30, 0x5d, + 0x53, 0x8b, 0x4f, 0x9b, 0x3d, 0xe3, 0xf1, 0x0b, 0xc9, 0xa8, 0x76, 0x89, + 0x29, 0x2d, 0xed, 0x24, 0x07, 0x0e, 0x5b, 0xaf, 0xc9, 0x35, 0x47, 0x70, + 0x12, 0x51, 0x58, 0x41, 0xd1, 0xdc, 0x1e, 0xe8, 0x00, 0xba, 0xa2, 0xe6, + 0x11, 0x07, 0xb7, 0xc1, 0x25, 0x26, 0x99, 0xb0, 0x22, 0x31, 0xd0, 0xf6, + 0xb8, 0x72, 0x0e, 0xa1, 0x06, 0xb0, 0x5a, 0x0d, 0x8e, 0xd4, 0xf0, 0xd1, + 0xe6, 0xa7, 0x5b, 0x76, 0x02, 0xf7, 0x7d, 0xe9, 0x29, 0x16, 0x75, 0x45, + 0x97, 0x97, 0xb6, 0x76, 0x59, 0xa8, 0x3d, 0xa7, 0xb8, 0x55, 0x1e, 0x74, + 0xd7, 0x45, 0xd7, 0x7d, 0x5a, 0x66, 0x2e, 0x73, 0xaf, 0xe9, 0x59, 0xad, + 0x0f, 0xab, 0x31, 0x84, 0xd4, 0x4f, 0xe6, 0xd8, 0xc1, 0x2d, 0x73, 0x4f, + 0x67, 0x41, 0x2b, 0x98, 0xcf, 0xc1, 0xea, 0x38, 0x03, 0x6e, 0x5e, 0x25, + 0x95, 0x41, 0x20, 0x5a, 0xf6, 0x96, 0x87, 0x76, 0xf8, 0x76, 0x49, 0x4f, + 0x51, 0xfe, 0x2d, 0x33, 0x76, 0xe7, 0x66, 0xe1, 0x46, 0x96, 0xd6, 0xdb, + 0x43, 0xbb, 0xcd, 0x67, 0x6c, 0x7f, 0xd3, 0x5d, 0xf3, 0xc2, 0xe1, 0x7f, + 0xc5, 0x8e, 0x1b, 0x4b, 0xb3, 0xb3, 0x9e, 0xdf, 0xd2, 0x0d, 0x95, 0x31, + 0xdf, 0xc9, 0x32, 0xe7, 0x7e, 0x40, 0xbb, 0x8c, 0x9b, 0xea, 0xa1, 0x86, + 0xcb, 0x5c, 0x1a, 0x02, 0x4a, 0x59, 0x32, 0xcf, 0xe9, 0x9d, 0x61, 0xbd, + 0x4a, 0xeb, 0xd9, 0x55, 0x67, 0xd1, 0xa6, 0x22, 0xef, 0xcd, 0x73, 0x89, + 0xfa, 0x21, 0x68, 0x24, 0xa5, 0x24, 0x99, 0x24, 0x94, 0xa4, 0xe9, 0x92, + 0x49, 0x4b, 0x76, 0x4c, 0x0c, 0xa8, 0x9b, 0xa9, 0x23, 0x6e, 0xf1, 0x3f, + 0x14, 0x98, 0xfa, 0xe3, 0xe9, 0x08, 0x49, 0x4c, 0xd3, 0x85, 0x10, 0xf6, + 0x13, 0xf4, 0x82, 0x96, 0xe6, 0x78, 0x84, 0x94, 0xcc, 0x68, 0x09, 0xf0, + 0x04, 0xae, 0x33, 0x2a, 0xc2, 0x69, 0xdf, 0xba, 0x09, 0x79, 0x31, 0xde, + 0x40, 0xf1, 0xec, 0xbb, 0x36, 0x59, 0x59, 0x1c, 0x88, 0x3a, 0x2e, 0x23, + 0xa9, 0xdb, 0x5e, 0x1f, 0xa9, 0x55, 0x8c, 0x0f, 0x2d, 0xb5, 0xdb, 0x09, + 0x71, 0x11, 0x1a, 0x70, 0x39, 0x49, 0x4e, 0x7d, 0x8f, 0xc8, 0xb4, 0x6a, + 0xdd, 0xad, 0x6f, 0x10, 0x9e, 0xac, 0x3a, 0x9c, 0x43, 0xcc, 0x47, 0x73, + 0xdd, 0x26, 0xe5, 0x97, 0xb7, 0x51, 0x0d, 0xf0, 0x52, 0xa9, 0xc4, 0xbb, + 0x6b, 0x78, 0x72, 0x4a, 0x6e, 0x3e, 0xe6, 0x7a, 0x6f, 0x80, 0x03, 0x22, + 0x1d, 0x2b, 0x26, 0xb7, 0x06, 0x17, 0xd6, 0xf2, 0x00, 0x66, 0xac, 0x93, + 0xda, 0x78, 0x56, 0x6f, 0x7e, 0xca, 0xcd, 0x7e, 0xd0, 0x4f, 0x24, 0xea, + 0xa9, 0x38, 0x87, 0x16, 0x8b, 0x9a, 0x1c, 0x38, 0xdc, 0xc4, 0x94, 0x8f, + 0x34, 0xfa, 0x95, 0x92, 0xc7, 0x10, 0xe6, 0x90, 0xe8, 0x07, 0x48, 0x1e, + 0x28, 0x61, 0xa1, 0xcd, 0x0e, 0xf1, 0xe7, 0xe2, 0x8d, 0x90, 0xc6, 0x7a, + 0x60, 0xd6, 0xe9, 0x67, 0xe7, 0x78, 0xc7, 0x64, 0x0a, 0x2d, 0x69, 0xb8, + 0xd6, 0x7e, 0x8b, 0xc4, 0x37, 0xfa, 0xc1, 0x25, 0x28, 0x8d, 0xa7, 0xc9, + 0x6e, 0x7d, 0x4b, 0xc5, 0x66, 0x47, 0x5d, 0xae, 0xf7, 0xea, 0x71, 0xaa, + 0x7b, 0x9b, 0x3e, 0x2e, 0x86, 0x83, 0xf8, 0x95, 0x8f, 0x73, 0x63, 0x80, + 0xac, 0x74, 0x4c, 0xe3, 0x83, 0xd5, 0x71, 0x72, 0x09, 0x2d, 0x68, 0xb0, + 0x36, 0xc2, 0x3f, 0x71, 0xde, 0xd7, 0x7e, 0x54, 0x94, 0xfa, 0x8d, 0x88, + 0x45, 0x4a, 0xfb, 0x36, 0x34, 0xb8, 0x89, 0x85, 0x00, 0xe0, 0xf6, 0x87, + 0x0e, 0xfa, 0xa4, 0xa5, 0xd3, 0x8e, 0x50, 0xdc, 0xed, 0x01, 0x53, 0x6c, + 0xe8, 0x92, 0x9a, 0x9d, 0x7e, 0xaf, 0x5b, 0xa2, 0x66, 0x30, 0x6a, 0x45, + 0x65, 0xc3, 0xfb, 0x3e, 0xef, 0xe0, 0xb9, 0xcf, 0xa8, 0x97, 0x01, 0x93, + 0x7d, 0x33, 0xf4, 0xeb, 0x91, 0xf1, 0x69, 0xff, 0x00, 0x6a, 0xeb, 0xee, + 0xac, 0x5d, 0x8f, 0x6d, 0x5d, 0x9e, 0xc7, 0x37, 0xef, 0x04, 0x2e, 0x0b, + 0xea, 0x7d, 0x86, 0x9e, 0xb2, 0xc6, 0x3b, 0xf3, 0xb7, 0x30, 0xfc, 0xc1, + 0xfe, 0x29, 0x29, 0xef, 0x9c, 0x13, 0x04, 0x47, 0x05, 0x08, 0x49, 0x4c, + 0xc3, 0x43, 0xd8, 0x58, 0xed, 0x43, 0x81, 0x07, 0xe0, 0x57, 0x8d, 0x59, + 0x5b, 0xa8, 0xc9, 0xb6, 0x87, 0x68, 0x6b, 0x7b, 0x98, 0x47, 0xf5, 0x49, + 0x6f, 0xf0, 0x5e, 0xcc, 0xc5, 0xe5, 0xdf, 0x5b, 0x31, 0x7e, 0xcb, 0xf5, + 0x8f, 0x2d, 0xad, 0xfa, 0x36, 0xed, 0xb8, 0x47, 0x6f, 0x50, 0x49, 0xfc, + 0x65, 0x25, 0x39, 0xed, 0x3a, 0x26, 0xb4, 0xb7, 0x7b, 0x1c, 0xe3, 0x12, + 0x23, 0xee, 0x48, 0x03, 0x12, 0x14, 0x6c, 0x7b, 0x40, 0x6e, 0xee, 0xce, + 0x12, 0x92, 0x99, 0x9b, 0x5e, 0x08, 0x0d, 0x64, 0x8f, 0xcd, 0x95, 0x2d, + 0xaf, 0x74, 0x17, 0x9d, 0x4f, 0x0d, 0x1c, 0x27, 0xaf, 0xd3, 0x2e, 0xfa, + 0x72, 0x4f, 0x87, 0x31, 0xe6, 0x8a, 0x0b, 0x78, 0x60, 0xd7, 0xc4, 0xa4, + 0xa6, 0x78, 0x97, 0x59, 0x8f, 0x90, 0xcb, 0x69, 0x30, 0xfa, 0x5c, 0x1c, + 0xd3, 0xfc, 0xa1, 0xaa, 0xec, 0xfe, 0xb4, 0x65, 0xe3, 0xf5, 0x0f, 0xab, + 0x12, 0xd8, 0x2f, 0xca, 0x0c, 0x75, 0x6d, 0xee, 0x1c, 0xd2, 0x09, 0xfb, + 0xa2, 0x17, 0x17, 0x5d, 0x71, 0xdf, 0xfd, 0xe8, 0x99, 0x59, 0x19, 0x15, + 0x62, 0x93, 0x5b, 0x89, 0x14, 0x82, 0x7d, 0x32, 0x24, 0x10, 0xee, 0x4f, + 0xc9, 0x25, 0x37, 0xfe, 0xa7, 0xf5, 0x5f, 0xd9, 0x2d, 0xca, 0x6d, 0xa3, + 0x73, 0x2c, 0x6b, 0x48, 0x03, 0xf7, 0xda, 0x74, 0xfc, 0xab, 0xa2, 0x67, + 0x4e, 0xcf, 0xeb, 0x4f, 0xf5, 0xfa, 0x91, 0x76, 0x3e, 0x19, 0xd5, 0xb4, + 0x0d, 0x2c, 0xb0, 0x7f, 0x2b, 0xf7, 0x47, 0xe2, 0xb1, 0xfe, 0xa4, 0xf4, + 0xbc, 0x9c, 0xac, 0x86, 0xf5, 0x37, 0x39, 0xa3, 0x0e, 0xaf, 0xcd, 0x20, + 0x3b, 0xd4, 0xb0, 0x83, 0xc7, 0x86, 0xd9, 0x1a, 0xae, 0xe9, 0xc5, 0x25, + 0x20, 0xaa, 0x9a, 0x71, 0xea, 0x6d, 0x34, 0x30, 0x57, 0x53, 0x04, 0x35, + 0x8d, 0x10, 0x02, 0x92, 0x72, 0x9a, 0x12, 0x52, 0xc9, 0x27, 0x84, 0xa1, + 0x25, 0x2c, 0x96, 0xa9, 0x42, 0x50, 0x92, 0x9e, 0x69, 0x85, 0xee, 0x69, + 0x24, 0xea, 0x0c, 0x00, 0x9c, 0x5b, 0x71, 0xfc, 0xed, 0x02, 0x08, 0x0f, + 0xda, 0xef, 0x74, 0x89, 0xdc, 0x7e, 0x6a, 0x42, 0xd0, 0x60, 0x12, 0x08, + 0xfc, 0xdf, 0x32, 0x92, 0x93, 0x1b, 0x6e, 0x06, 0x01, 0xe7, 0xba, 0x46, + 0xdc, 0x96, 0x80, 0xe7, 0x3a, 0x27, 0xe8, 0xa0, 0xba, 0xe2, 0x60, 0x11, + 0x2f, 0xdc, 0x24, 0x79, 0x29, 0xdb, 0x68, 0x22, 0x5c, 0x22, 0x34, 0x1e, + 0x69, 0x29, 0x2b, 0x2d, 0xc8, 0xd3, 0x59, 0x5c, 0xf6, 0x6d, 0xd8, 0xd9, + 0x3d, 0x4e, 0xff, 0x00, 0x59, 0xe7, 0x7d, 0x2e, 0x83, 0x59, 0xd3, 0xe6, + 0xb7, 0x19, 0x6c, 0x49, 0xe1, 0xcd, 0x3b, 0x8a, 0xe7, 0x3e, 0xb5, 0xf4, + 0xbb, 0x7d, 0x46, 0xf5, 0x6c, 0x6d, 0x0b, 0xa0, 0x5c, 0x07, 0x20, 0xf6, + 0x72, 0x4a, 0x44, 0x72, 0x31, 0x6c, 0xb8, 0x6e, 0x7e, 0xda, 0xc6, 0x81, + 0xb1, 0xa2, 0xb7, 0x6e, 0xda, 0x19, 0xbe, 0x97, 0x87, 0x33, 0xb1, 0x3f, + 0xc1, 0x60, 0x63, 0xdd, 0xea, 0xb4, 0x38, 0xe8, 0xf0, 0x61, 0xc3, 0xf8, + 0xad, 0x4c, 0xfb, 0x59, 0x4b, 0x19, 0x8e, 0xcd, 0x37, 0x34, 0x38, 0xf7, + 0x82, 0x42, 0x4a, 0x6a, 0x3f, 0x28, 0xd8, 0x5c, 0xe7, 0xfc, 0x14, 0xb1, + 0x8b, 0x89, 0xf6, 0xcc, 0x1e, 0x15, 0x46, 0x30, 0xd8, 0xed, 0xad, 0x92, + 0xd1, 0xa9, 0x57, 0xf0, 0x5c, 0x19, 0x6e, 0xc9, 0xf7, 0x7e, 0x6c, 0xa4, + 0xa4, 0x56, 0x19, 0xaf, 0xd0, 0xa1, 0xa4, 0x3a, 0x7f, 0x48, 0xe7, 0x3a, + 0x43, 0x88, 0xe3, 0x6e, 0x9a, 0x72, 0xaa, 0xba, 0x9c, 0x86, 0x7b, 0x8c, + 0x37, 0x6e, 0xa0, 0xf9, 0xab, 0x8e, 0xd5, 0xff, 0x00, 0x46, 0x0f, 0x8b, + 0x54, 0x2d, 0x2e, 0x2d, 0xe6, 0x7f, 0x04, 0x94, 0xd9, 0x61, 0xf5, 0xa8, + 0x16, 0x68, 0x64, 0x6b, 0xf1, 0x1c, 0xaa, 0xae, 0x02, 0x4e, 0xba, 0xa7, + 0xc4, 0x16, 0xba, 0x87, 0xb1, 0x9c, 0x07, 0x1d, 0x52, 0x14, 0xb9, 0xa0, + 0x93, 0xf4, 0x92, 0x53, 0xdc, 0xf4, 0xee, 0xaf, 0x6e, 0x67, 0x4e, 0xa1, + 0xcf, 0xf7, 0x38, 0x34, 0x35, 0xc7, 0xf9, 0x4d, 0xd3, 0x55, 0x61, 0xbd, + 0x55, 0xf5, 0x82, 0x36, 0xc8, 0x03, 0x45, 0xcc, 0xfd, 0x5b, 0xca, 0x3f, + 0xa4, 0xc4, 0x3d, 0xce, 0xf6, 0xff, 0x00, 0x15, 0xb6, 0xe0, 0x24, 0xcc, + 0x24, 0xa6, 0xd7, 0xed, 0x57, 0xec, 0xf7, 0x34, 0x40, 0x29, 0xdb, 0xd5, + 0xec, 0x24, 0xef, 0x6c, 0x56, 0x74, 0x11, 0xca, 0xa0, 0xd7, 0xb7, 0xd4, + 0x73, 0x49, 0x80, 0x3b, 0x1e, 0x11, 0x09, 0x61, 0xf7, 0x11, 0x06, 0x62, + 0x3b, 0x4a, 0x4a, 0x74, 0xcf, 0x55, 0x7d, 0x64, 0x48, 0x0e, 0x61, 0xd4, + 0x1f, 0x25, 0xc5, 0xe1, 0x58, 0x71, 0xba, 0xeb, 0x9e, 0xdd, 0x36, 0x5d, + 0xb8, 0x0f, 0x2d, 0xd2, 0xba, 0x26, 0x81, 0x3b, 0x3b, 0x3b, 0xb1, 0xf1, + 0x5c, 0xff, 0x00, 0x50, 0x67, 0xd9, 0xfa, 0xcb, 0x88, 0xe1, 0xd0, 0xef, + 0xc1, 0x25, 0x3d, 0x81, 0xeb, 0x62, 0x49, 0x23, 0x43, 0xa0, 0x85, 0x06, + 0xf5, 0xa0, 0xc6, 0xc3, 0x86, 0xe3, 0x3d, 0xfc, 0x15, 0x0d, 0x8c, 0x2d, + 0x0e, 0x1c, 0x18, 0x30, 0xa2, 0xfa, 0xc1, 0x23, 0x69, 0x13, 0xe0, 0x92, + 0x9d, 0x8a, 0xba, 0xed, 0x04, 0xc1, 0x69, 0x0b, 0x81, 0xfa, 0xdb, 0x94, + 0x32, 0xfe, 0xb0, 0xdc, 0xf6, 0x03, 0xb4, 0x32, 0xb6, 0x8f, 0x80, 0x6c, + 0xfe, 0x52, 0xba, 0x96, 0xd7, 0x26, 0x36, 0xc9, 0x98, 0x5c, 0xb7, 0xd6, + 0x3c, 0x6c, 0x8a, 0xba, 0xc8, 0xb0, 0x34, 0x8a, 0x2f, 0xac, 0x1f, 0x53, + 0x80, 0x0b, 0x44, 0x38, 0x6e, 0xf9, 0x24, 0xa6, 0x80, 0x78, 0x15, 0x81, + 0xc4, 0x05, 0x5e, 0x43, 0x9f, 0xae, 0xbd, 0xe1, 0x47, 0xd5, 0xd0, 0x91, + 0xc0, 0xe1, 0x13, 0x11, 0xb2, 0x4b, 0x8f, 0x27, 0x8d, 0x12, 0x52, 0x76, + 0x8d, 0xac, 0xd4, 0x06, 0x34, 0xf6, 0xee, 0x54, 0x83, 0xbb, 0x06, 0xfd, + 0xea, 0x65, 0xa0, 0x6b, 0x1e, 0xef, 0xde, 0x3c, 0xa1, 0x9e, 0x52, 0x52, + 0x46, 0xda, 0x42, 0x27, 0xae, 0x74, 0x7f, 0x87, 0x3f, 0x15, 0x58, 0xf9, + 0xe8, 0x86, 0xf7, 0xc5, 0x6f, 0x09, 0x29, 0xf4, 0xee, 0x9d, 0xd7, 0x31, + 0x2d, 0xc0, 0xa2, 0xc0, 0xd0, 0xc2, 0xe6, 0x0d, 0xcc, 0x68, 0x01, 0xa1, + 0xc3, 0x43, 0x00, 0x22, 0x3b, 0xad, 0x63, 0x69, 0xe2, 0xb9, 0x0f, 0xab, + 0x2f, 0xf5, 0xb0, 0xac, 0xae, 0x25, 0xd5, 0xbf, 0x4f, 0x83, 0x87, 0xfb, + 0x16, 0x99, 0xa9, 0xfa, 0xee, 0x68, 0x81, 0xc1, 0x25, 0x25, 0x3a, 0x39, + 0x99, 0xe6, 0xd7, 0x6f, 0xa6, 0xc0, 0xd0, 0x04, 0x06, 0x93, 0xa2, 0x15, + 0x39, 0xd9, 0x4c, 0x01, 0xdb, 0x9a, 0xe7, 0x0e, 0x5b, 0x3a, 0x42, 0xaa, + 0x28, 0xdd, 0xb7, 0x8f, 0x18, 0x51, 0x0c, 0x73, 0x5a, 0x4c, 0x41, 0x27, + 0xf0, 0x49, 0x4e, 0xf9, 0xea, 0x58, 0xa2, 0xa0, 0xed, 0xe0, 0xbe, 0x38, + 0xf3, 0x54, 0xb2, 0x3a, 0x95, 0xf6, 0x33, 0x6d, 0x5e, 0xc3, 0x3c, 0xac, + 0xcf, 0x4d, 0xc0, 0x7c, 0x78, 0x09, 0x8b, 0x6d, 0x1a, 0x9e, 0x3e, 0x3d, + 0xd2, 0x53, 0xbf, 0x8d, 0x9f, 0x5b, 0xab, 0x68, 0xb8, 0xed, 0x7f, 0x05, + 0x13, 0xed, 0x98, 0xff, 0x00, 0xbe, 0x39, 0x5c, 0xef, 0xe9, 0x63, 0x40, + 0x64, 0xa5, 0x36, 0x47, 0x92, 0x4a, 0x43, 0xb5, 0xe1, 0x81, 0xee, 0x2d, + 0xdc, 0x35, 0x06, 0x79, 0xf1, 0xf8, 0xa1, 0x1b, 0xaf, 0xb2, 0xd0, 0xfa, + 0x99, 0x2c, 0x67, 0x0f, 0xef, 0xf7, 0x79, 0x27, 0xfb, 0x1b, 0xdc, 0xca, + 0xdc, 0x2e, 0x6b, 0xf6, 0xce, 0xf0, 0x24, 0x40, 0xed, 0x28, 0x79, 0x85, + 0xcc, 0x7b, 0x3d, 0x01, 0xb0, 0x10, 0x1c, 0xe3, 0x3a, 0x6e, 0xee, 0x7c, + 0x82, 0x4a, 0x53, 0xb2, 0x2f, 0x32, 0xc1, 0xf4, 0x5c, 0x63, 0x77, 0xe7, + 0x49, 0x5a, 0x0d, 0xa8, 0x86, 0x34, 0xda, 0x36, 0xb8, 0x0d, 0x03, 0x8e, + 0xa5, 0x55, 0xa3, 0x24, 0xb5, 0xbe, 0xa9, 0x6f, 0xa8, 0x40, 0xd5, 0xe0, + 0x68, 0x0f, 0x8c, 0x29, 0x93, 0x63, 0xed, 0xdf, 0xb8, 0xba, 0x44, 0xe8, + 0x64, 0xff, 0x00, 0x72, 0x4a, 0x64, 0x03, 0xd9, 0xbc, 0x9d, 0x1a, 0xfd, + 0x09, 0x45, 0xba, 0x9a, 0xef, 0xc2, 0x7e, 0x33, 0x8c, 0x7a, 0x8d, 0x3a, + 0x9e, 0xd1, 0xc4, 0x7c, 0xd4, 0x58, 0xe6, 0x8b, 0x4b, 0x1c, 0x41, 0x3c, + 0x41, 0xd3, 0x58, 0x9e, 0x13, 0x39, 0xd0, 0xe2, 0x6c, 0x2d, 0x0d, 0x70, + 0x81, 0xde, 0x25, 0x25, 0x3c, 0x55, 0x38, 0x77, 0x53, 0xd4, 0x9d, 0x87, + 0x73, 0x60, 0xba, 0x5a, 0x47, 0xe2, 0x0a, 0x9e, 0x5b, 0xc3, 0xb2, 0x5e, + 0xd0, 0x77, 0x06, 0xfb, 0x41, 0xf2, 0x6e, 0x92, 0xba, 0x4f, 0xac, 0x6c, + 0xc7, 0xa2, 0x9a, 0xfa, 0x8b, 0xa0, 0x64, 0xd6, 0x0d, 0x74, 0x6d, 0xe1, + 0xc1, 0xc2, 0x35, 0xf8, 0x2e, 0x52, 0x80, 0x6c, 0x3b, 0x8a, 0x4a, 0x6d, + 0xe0, 0x38, 0x56, 0x4d, 0x4f, 0x10, 0x2c, 0xe1, 0xc8, 0x82, 0x97, 0x36, + 0xe0, 0x5a, 0x67, 0x69, 0xfb, 0x94, 0x1d, 0x54, 0xd6, 0x40, 0xe5, 0xba, + 0x8f, 0x82, 0xb5, 0x82, 0xe8, 0x61, 0xdc, 0x37, 0x6b, 0x06, 0x52, 0x53, + 0x17, 0xb7, 0x6e, 0xad, 0xee, 0x24, 0x15, 0x56, 0xe2, 0xd2, 0xc3, 0x26, + 0x1d, 0xd8, 0xf8, 0xab, 0xf9, 0x0f, 0xaa, 0xcf, 0x63, 0x06, 0xd6, 0xb3, + 0x40, 0xc1, 0xe0, 0xb3, 0xb2, 0x5b, 0xb5, 0xfb, 0x35, 0xf9, 0xa4, 0xa4, + 0x9d, 0x2a, 0xd2, 0xd3, 0x6d, 0x71, 0xba, 0x20, 0x91, 0xf1, 0xd1, 0x1b, + 0x2a, 0xb3, 0x0d, 0xdf, 0x3e, 0xee, 0xde, 0x4a, 0x96, 0x15, 0xa6, 0x8e, + 0xa5, 0x51, 0x03, 0x73, 0x1e, 0x76, 0x39, 0xa3, 0x49, 0x05, 0x68, 0x75, + 0x2c, 0xda, 0x85, 0xa1, 0xac, 0x6f, 0xb4, 0x71, 0x29, 0x29, 0x16, 0x2d, + 0x8f, 0xc7, 0xb9, 0xb6, 0xb4, 0x99, 0x61, 0x1a, 0xf9, 0x2e, 0xab, 0xd5, + 0xae, 0xd6, 0x56, 0x5a, 0x74, 0xb4, 0x6e, 0x07, 0xc0, 0x2e, 0x2f, 0xed, + 0x6c, 0x0e, 0x80, 0xd5, 0xd5, 0x74, 0x22, 0xeb, 0x7a, 0x45, 0x77, 0x3c, + 0x68, 0xd7, 0xbe, 0x09, 0xe3, 0x42, 0x92, 0x92, 0x99, 0x36, 0x48, 0xf9, + 0xff, 0x00, 0x04, 0x72, 0xf0, 0x76, 0x4c, 0x92, 0x5a, 0x26, 0x3c, 0x65, + 0x46, 0xd7, 0xb0, 0x7d, 0x16, 0xc1, 0x3a, 0xee, 0xf3, 0x45, 0xad, 0xad, + 0x71, 0xdc, 0x40, 0xf3, 0xf8, 0x47, 0x29, 0x29, 0x15, 0x96, 0x39, 0x80, + 0x1d, 0x5c, 0xe0, 0xe1, 0xb7, 0xcc, 0x15, 0x9b, 0xd7, 0xc3, 0x5b, 0x9b, + 0x8d, 0x68, 0x00, 0x07, 0xb2, 0x34, 0xf2, 0x3f, 0xed, 0x5a, 0xb7, 0xb5, + 0x84, 0xb3, 0x69, 0xd0, 0x12, 0x4b, 0x8e, 0x9c, 0xf0, 0x16, 0x67, 0x5f, + 0x67, 0xe8, 0x31, 0xed, 0x1a, 0xec, 0x71, 0x68, 0x3e, 0x5c, 0xa4, 0xa7, + 0x4b, 0x1d, 0xcc, 0xb3, 0x1d, 0x92, 0x48, 0x25, 0xb1, 0x3f, 0x82, 0x30, + 0x01, 0xa3, 0x6d, 0x9f, 0x4e, 0x34, 0xff, 0x00, 0x7a, 0xa7, 0xd3, 0x6c, + 0xac, 0xd0, 0xc9, 0x6f, 0x32, 0x39, 0xe1, 0x1d, 0xfe, 0xa5, 0x6d, 0x0f, + 0x07, 0xd4, 0xab, 0x70, 0xd4, 0xe8, 0xe1, 0xe4, 0x92, 0x99, 0xd4, 0xe6, + 0x92, 0xe0, 0x5d, 0xb5, 0xc0, 0xf2, 0xb3, 0x7e, 0xb8, 0x3c, 0x8e, 0x9c, + 0xd6, 0xb9, 0xbb, 0xd8, 0xe7, 0x02, 0xed, 0xbe, 0x31, 0xa1, 0x5a, 0x5b, + 0xab, 0x1b, 0x8c, 0x8f, 0x77, 0x04, 0xf3, 0xf1, 0x59, 0xdd, 0x59, 0xfe, + 0xb3, 0xc6, 0x2b, 0xda, 0x76, 0xba, 0xbd, 0xce, 0x77, 0xe6, 0xf8, 0x72, + 0x92, 0x9e, 0x26, 0xa6, 0x9b, 0x9d, 0x03, 0x46, 0x8f, 0xc1, 0x69, 0x50, + 0xc1, 0x58, 0xef, 0x03, 0x85, 0x52, 0xad, 0xb8, 0xf7, 0xdd, 0x5b, 0xf9, + 0x6b, 0xa0, 0x0f, 0x9a, 0xbc, 0x01, 0x0d, 0x25, 0xda, 0x92, 0x65, 0x25, + 0x30, 0xb1, 0xee, 0x27, 0xc1, 0x44, 0x72, 0x9e, 0xcd, 0x0c, 0x70, 0x7b, + 0xa6, 0x98, 0xd5, 0x25, 0x2b, 0x42, 0x7e, 0x08, 0x36, 0xfd, 0x03, 0xe6, + 0x42, 0x26, 0xa0, 0x13, 0xe3, 0xa4, 0xa8, 0x5a, 0x62, 0xb8, 0x1c, 0x94, + 0x94, 0xf4, 0x1f, 0x52, 0x1c, 0xc3, 0x66, 0x65, 0x6e, 0xe4, 0xb1, 0x8e, + 0x03, 0xca, 0x48, 0x3f, 0x95, 0x74, 0x8e, 0x6b, 0x5c, 0x27, 0xe6, 0x02, + 0xe4, 0xfe, 0xa4, 0x41, 0xcd, 0xcb, 0x1b, 0xa1, 0xc6, 0xa1, 0xb4, 0x1e, + 0xf0, 0xf0, 0xba, 0x87, 0x58, 0xda, 0xec, 0x73, 0x59, 0xc4, 0x7e, 0x54, + 0x94, 0xa6, 0x3a, 0x48, 0x11, 0x1a, 0x10, 0x9f, 0x68, 0x23, 0x42, 0x06, + 0xe1, 0xa9, 0xf3, 0x94, 0x9c, 0x0b, 0x62, 0xd8, 0x89, 0xd0, 0x8e, 0x07, + 0x1c, 0xa1, 0x17, 0x9b, 0x37, 0x56, 0xd0, 0x26, 0xb0, 0x1c, 0x4f, 0xcf, + 0x44, 0x94, 0xbd, 0x2d, 0x65, 0xa4, 0xee, 0x10, 0xe6, 0xe8, 0x04, 0xe9, + 0xa7, 0x74, 0x47, 0x54, 0xd7, 0x02, 0x64, 0x76, 0x82, 0x84, 0xe9, 0x6f, + 0xe9, 0x2b, 0xd2, 0x62, 0x7c, 0x20, 0xe8, 0xac, 0x3c, 0xd7, 0x53, 0x0f, + 0x72, 0x07, 0xb8, 0xf9, 0x91, 0xc2, 0x4a, 0x46, 0x6b, 0x2c, 0x61, 0xee, + 0x4e, 0x80, 0xa8, 0xfa, 0x2c, 0x99, 0x8f, 0x6f, 0x87, 0x9a, 0x60, 0x4b, + 0x9b, 0xc9, 0xf1, 0x9f, 0x25, 0x3d, 0xc7, 0x74, 0xc7, 0x94, 0xf9, 0xf2, + 0x92, 0x9c, 0xeb, 0x45, 0x4d, 0x3b, 0x00, 0x21, 0xe0, 0x35, 0xae, 0x03, + 0x56, 0x3b, 0x5d, 0x54, 0x2d, 0xdd, 0x4e, 0x4e, 0xfb, 0x7e, 0x84, 0x97, + 0x12, 0x46, 0xed, 0x38, 0x01, 0x4a, 0xbc, 0xb7, 0x58, 0xe0, 0x2e, 0xf4, + 0xeb, 0x2d, 0xd0, 0x13, 0xab, 0x5c, 0x3c, 0x7c, 0x93, 0x0a, 0xaf, 0x75, + 0xd5, 0xda, 0xdb, 0x77, 0x31, 0xb2, 0x08, 0x1e, 0xe6, 0x93, 0xdc, 0xba, + 0x7c, 0x12, 0x52, 0xff, 0x00, 0x6d, 0xa6, 0xca, 0xbd, 0x16, 0x56, 0xe7, + 0x35, 0xcf, 0x1a, 0x1f, 0x66, 0xd2, 0x7b, 0x95, 0x66, 0xba, 0x6a, 0x71, + 0x0d, 0xb1, 0xdb, 0x43, 0x24, 0x35, 0x83, 0x49, 0x1c, 0xca, 0x19, 0xb6, + 0xab, 0x18, 0x1f, 0x59, 0x6d, 0x8f, 0x60, 0x24, 0xb7, 0xe8, 0x99, 0x1c, + 0xfc, 0xca, 0x1d, 0xb6, 0x5b, 0x68, 0xda, 0xd6, 0x92, 0xd2, 0x0b, 0x9a, + 0x09, 0xd4, 0x69, 0xf9, 0xde, 0x41, 0x25, 0x27, 0x67, 0xa2, 0xe0, 0x0d, + 0x63, 0x70, 0x20, 0xba, 0x4f, 0xc7, 0x90, 0x93, 0x6a, 0x16, 0x89, 0x70, + 0x16, 0x07, 0x0f, 0x6f, 0xe6, 0x81, 0x0a, 0xb5, 0x83, 0x26, 0x96, 0x39, + 0xa3, 0x63, 0x6c, 0x74, 0x16, 0x3b, 0xb1, 0x68, 0xd4, 0xc0, 0xec, 0x51, + 0xad, 0xbb, 0x2d, 0x8c, 0x6b, 0x76, 0x81, 0x75, 0xa3, 0xf4, 0x63, 0xc3, + 0x8d, 0x52, 0x53, 0xcd, 0xfd, 0x69, 0xba, 0xcb, 0x73, 0xeb, 0xc4, 0x03, + 0x6b, 0x2a, 0x60, 0x25, 0xa3, 0xf7, 0x9d, 0xfe, 0xc4, 0x0c, 0x4a, 0x36, + 0x33, 0xe2, 0xb4, 0x3a, 0xff, 0x00, 0x4c, 0xcb, 0xa7, 0x2a, 0xbc, 0xac, + 0x97, 0x35, 0xce, 0xb8, 0x00, 0xe8, 0x3a, 0xca, 0x1b, 0x69, 0x2c, 0xdb, + 0xd8, 0x10, 0x92, 0x9a, 0xcf, 0xf5, 0x2b, 0x78, 0x23, 0xbf, 0x05, 0x59, + 0xb0, 0xb6, 0x9a, 0x7d, 0x40, 0xdd, 0xb6, 0x38, 0x41, 0xf0, 0x3e, 0x68, + 0xf6, 0x63, 0x80, 0xd0, 0xe7, 0x1d, 0x06, 0xab, 0x1f, 0x37, 0x38, 0x5f, + 0x7f, 0xb2, 0x43, 0x04, 0x00, 0xce, 0x75, 0x1a, 0x68, 0x92, 0x92, 0xd6, + 0xf2, 0x0c, 0x9f, 0xcd, 0xd4, 0x94, 0x07, 0x39, 0xd6, 0x58, 0x6c, 0x3a, + 0x84, 0x52, 0x0e, 0xd2, 0x06, 0xbb, 0xb9, 0x4d, 0x64, 0x35, 0xbe, 0xd1, + 0xed, 0x23, 0x8f, 0x04, 0x94, 0xcb, 0x0f, 0x05, 0xef, 0xb5, 0x99, 0xb7, + 0x45, 0x78, 0xac, 0x32, 0x1e, 0x4c, 0x17, 0xb8, 0x7e, 0x6b, 0x47, 0x3c, + 0xa1, 0x66, 0x3d, 0xb6, 0xe4, 0x12, 0x0e, 0x93, 0x2a, 0xbb, 0xec, 0xbb, + 0x60, 0x61, 0x74, 0xb4, 0x70, 0x3c, 0x15, 0xae, 0x9d, 0xd2, 0xf2, 0xfa, + 0x85, 0x77, 0x1c, 0x77, 0x31, 0xbe, 0x90, 0x04, 0x87, 0x93, 0xb9, 0xd2, + 0x63, 0x4d, 0x12, 0x53, 0x45, 0xe7, 0xfe, 0x91, 0x80, 0xbb, 0x3e, 0x89, + 0x60, 0xa7, 0xa5, 0xe3, 0xd2, 0xf9, 0x12, 0x0b, 0xc0, 0x8f, 0xde, 0x24, + 0x85, 0x97, 0xd3, 0x3e, 0xab, 0xbd, 0xf6, 0x36, 0xec, 0xff, 0x00, 0x75, + 0x4d, 0xe2, 0xaa, 0xa7, 0xdc, 0xe1, 0xd9, 0xce, 0x3f, 0xc1, 0x6e, 0xde, + 0xf3, 0x49, 0x14, 0x31, 0x8c, 0xac, 0xb0, 0x69, 0xde, 0x1a, 0x34, 0x49, + 0x4c, 0xc1, 0x99, 0x03, 0xb4, 0xea, 0x3b, 0x03, 0xc2, 0x6c, 0xad, 0xb5, + 0x56, 0xc6, 0x07, 0xcd, 0x8e, 0xd6, 0xc1, 0x1f, 0x31, 0xaa, 0x6a, 0x45, + 0x36, 0x57, 0xea, 0x13, 0xbc, 0x49, 0x1f, 0xa3, 0x33, 0x2e, 0xe6, 0x20, + 0xa9, 0xfe, 0x8b, 0x20, 0x0b, 0x2c, 0x63, 0xd8, 0xc1, 0xfa, 0x23, 0x04, + 0x17, 0x82, 0x38, 0x2e, 0x04, 0x78, 0x24, 0xa6, 0x15, 0xe5, 0xb9, 0xef, + 0x0d, 0x20, 0x16, 0x7d, 0x1e, 0x3b, 0x76, 0x55, 0xfa, 0xb5, 0x2e, 0x3d, + 0x30, 0x3c, 0x7d, 0x02, 0xf9, 0x13, 0xe5, 0xa2, 0xb4, 0xea, 0xe9, 0xa1, + 0xed, 0xf4, 0x2c, 0x36, 0x36, 0x60, 0x87, 0x08, 0x73, 0x49, 0xf1, 0x4d, + 0x98, 0x4d, 0x9d, 0x32, 0xda, 0xdd, 0x02, 0x09, 0x70, 0x03, 0xc4, 0x72, + 0x92, 0x9a, 0xbd, 0x2a, 0xc7, 0x3b, 0x1f, 0x6e, 0xdd, 0xc0, 0x1d, 0x44, + 0xc7, 0x2a, 0xe6, 0x4d, 0xae, 0x65, 0x6f, 0xa5, 0xce, 0x86, 0x91, 0x2e, + 0x23, 0x9d, 0xd1, 0xc7, 0xcd, 0x67, 0xfd, 0x5f, 0x0f, 0xb5, 0xce, 0xa4, + 0x10, 0xd2, 0x44, 0x82, 0x75, 0xe3, 0xc9, 0x5f, 0xcd, 0xaf, 0x13, 0x04, + 0x7a, 0x99, 0xaf, 0x37, 0xd8, 0x5d, 0x35, 0x63, 0x8e, 0x5c, 0x7b, 0x6e, + 0x03, 0xf2, 0x24, 0xa5, 0x63, 0xb3, 0x1e, 0xba, 0x1d, 0x9b, 0x94, 0xef, + 0x4a, 0x90, 0x21, 0xa0, 0xfe, 0x77, 0x98, 0x95, 0x9b, 0x9f, 0x9d, 0xd4, + 0xb3, 0xa8, 0xb2, 0xec, 0x4a, 0xfd, 0x3c, 0x1a, 0x9a, 0x76, 0x57, 0xfe, + 0x12, 0xe1, 0xc6, 0xe6, 0x8e, 0x48, 0x1e, 0x28, 0xcf, 0xa6, 0xfc, 0xf7, + 0x0c, 0x8c, 0xf3, 0x0e, 0xe7, 0x1f, 0x17, 0xf3, 0x1a, 0x07, 0x05, 0xfd, + 0xa7, 0xc0, 0x70, 0xad, 0xb4, 0xc3, 0xfd, 0x47, 0xfd, 0x20, 0x20, 0xb5, + 0xb0, 0x3b, 0xf6, 0x49, 0x4f, 0x3b, 0xd3, 0xbe, 0xaf, 0x01, 0x85, 0x6e, + 0x76, 0x6c, 0x9c, 0x8b, 0x19, 0xbe, 0x86, 0x49, 0x1b, 0x35, 0xe5, 0xfe, + 0x7e, 0x48, 0x76, 0xb1, 0xb5, 0xb7, 0xde, 0xf0, 0xd0, 0x38, 0xe0, 0x7e, + 0x57, 0x2e, 0xa5, 0xfb, 0x5f, 0x85, 0x9b, 0x4d, 0xde, 0xfa, 0xcd, 0x65, + 0xcd, 0x2e, 0x11, 0x0e, 0x02, 0x57, 0x1a, 0x6a, 0xae, 0xcb, 0xaa, 0x60, + 0x60, 0x24, 0xbd, 0xa3, 0xc7, 0x44, 0x94, 0xb6, 0xfa, 0x41, 0x99, 0xdf, + 0xf3, 0x03, 0xfb, 0xd2, 0xf5, 0x5a, 0x08, 0xd3, 0x9e, 0x03, 0x44, 0xfe, + 0x25, 0x17, 0x39, 0x86, 0xac, 0x9f, 0xb3, 0x10, 0x1b, 0xe9, 0x12, 0xd2, + 0xd0, 0x23, 0x82, 0x86, 0x00, 0xdc, 0x5d, 0xd9, 0x80, 0x47, 0xc4, 0x84, + 0x94, 0xd8, 0xe9, 0x58, 0xe7, 0xa8, 0x75, 0x01, 0x53, 0x80, 0x15, 0xb1, + 0xae, 0x7b, 0x87, 0x26, 0x1b, 0xfe, 0xf5, 0x53, 0xa8, 0x96, 0x0b, 0xac, + 0x0c, 0xd1, 0x81, 0xee, 0x0d, 0x1e, 0x40, 0x98, 0x5a, 0x7f, 0x56, 0xdc, + 0x2b, 0xbb, 0x2e, 0xe7, 0x7d, 0x16, 0x63, 0xbf, 0x77, 0xf6, 0x8b, 0x40, + 0x58, 0xb9, 0x04, 0xba, 0x09, 0xe4, 0x82, 0x4f, 0xc4, 0xa4, 0xa7, 0x5f, + 0xea, 0x73, 0x6c, 0xfd, 0xa3, 0x63, 0xeb, 0x89, 0x6d, 0x4e, 0x24, 0x13, + 0x13, 0xab, 0x57, 0x5c, 0xf6, 0xd6, 0x5e, 0x5e, 0xc7, 0x48, 0x76, 0x84, + 0x1d, 0x1a, 0x0a, 0xe4, 0xfe, 0xa6, 0x06, 0x1e, 0xa0, 0xf6, 0x3f, 0x87, + 0xd6, 0xe8, 0x9f, 0xe4, 0xc3, 0x97, 0x55, 0x68, 0x63, 0x4d, 0x9e, 0x99, + 0x9a, 0xac, 0x24, 0xc3, 0x88, 0x10, 0x07, 0x7f, 0xbd, 0x25, 0x2c, 0xd7, + 0xdc, 0xe0, 0x6a, 0xb0, 0x43, 0x5e, 0x09, 0x6b, 0xa6, 0x75, 0x1f, 0xde, + 0x86, 0x48, 0x6c, 0x6c, 0xd4, 0xfd, 0x13, 0xe3, 0x24, 0xf0, 0xa0, 0x09, + 0xaf, 0x6b, 0xcb, 0xe4, 0x4c, 0x96, 0x90, 0x64, 0xc2, 0x8d, 0xed, 0x35, + 0xda, 0x1f, 0xac, 0xb8, 0xee, 0x82, 0x7f, 0x7b, 0xe8, 0x94, 0x94, 0x91, + 0xce, 0x69, 0xdc, 0xfd, 0x61, 0xd2, 0x36, 0x1f, 0xcd, 0x8d, 0x11, 0x1e, + 0xfd, 0xc3, 0xda, 0x0c, 0x40, 0x55, 0x7d, 0xd5, 0xb5, 0xe5, 0xd2, 0x0c, + 0x10, 0x1c, 0x78, 0x98, 0x47, 0x73, 0x76, 0xd4, 0x2b, 0x06, 0x4b, 0xd8, + 0x1d, 0x3d, 0xa4, 0xa4, 0xa6, 0x20, 0xbc, 0xc1, 0x69, 0xdb, 0xce, 0xa7, + 0xbe, 0xaa, 0xcc, 0x9f, 0x4f, 0x6c, 0x0d, 0xf1, 0x1d, 0xbc, 0x15, 0x60, + 0x1a, 0xda, 0x9a, 0xe2, 0x48, 0x73, 0x44, 0x78, 0xfb, 0x89, 0xd1, 0x3f, + 0xae, 0xcd, 0x91, 0xdb, 0x64, 0xef, 0xef, 0xf1, 0x49, 0x4e, 0x73, 0x1c, + 0xc6, 0x1d, 0x8f, 0x68, 0xb0, 0xb8, 0xcb, 0x5c, 0x7b, 0x0f, 0x04, 0xee, + 0xba, 0xa6, 0xee, 0x64, 0x86, 0x97, 0x68, 0xe2, 0xc2, 0x3e, 0x8f, 0x86, + 0xa8, 0xac, 0xab, 0xd4, 0x25, 0xcf, 0x60, 0x70, 0x32, 0x47, 0x6f, 0x9c, + 0x09, 0x53, 0xcd, 0x7e, 0x26, 0xd6, 0x3f, 0x1c, 0x30, 0x35, 0xa3, 0x6e, + 0xd7, 0x68, 0xe2, 0xef, 0xde, 0x29, 0x29, 0xa9, 0x51, 0xde, 0x1c, 0xda, + 0x4c, 0x56, 0x0f, 0xd2, 0x9f, 0xc4, 0x22, 0xdb, 0xf6, 0xaa, 0x30, 0x6c, + 0xb1, 0xac, 0x0e, 0x6b, 0xa6, 0x5c, 0x44, 0x92, 0x09, 0xee, 0xa3, 0x8f, + 0x4b, 0xf7, 0x3e, 0xca, 0x43, 0x76, 0xb2, 0x36, 0xb9, 0xa0, 0x7e, 0x00, + 0xab, 0x59, 0x4f, 0xc8, 0xb6, 0xb7, 0xd5, 0x6b, 0xb6, 0x31, 0xec, 0x04, + 0x34, 0x46, 0x84, 0x4f, 0x33, 0xdc, 0xf2, 0x92, 0x9c, 0x86, 0x1b, 0x8d, + 0x6d, 0x7b, 0x65, 0xad, 0xb7, 0x80, 0x34, 0x03, 0xc8, 0x4a, 0xd5, 0xe9, + 0x76, 0xe4, 0x59, 0x95, 0x5d, 0x79, 0x1a, 0x50, 0xc7, 0x13, 0x5b, 0x88, + 0xfa, 0x4e, 0x8e, 0xee, 0xee, 0xb3, 0x0d, 0x0f, 0x66, 0x25, 0x6e, 0x7c, + 0xcd, 0x6e, 0xf6, 0x34, 0x98, 0x03, 0xc6, 0x7e, 0x2a, 0xd7, 0x4e, 0xca, + 0xb4, 0xbc, 0x02, 0xe2, 0xfa, 0xec, 0xd1, 0xa1, 0x80, 0x7b, 0x5c, 0xde, + 0xc4, 0x76, 0x49, 0x4c, 0xfe, 0xb4, 0xbb, 0xd4, 0xca, 0xa8, 0xb4, 0xcb, + 0x5a, 0xe2, 0x15, 0x17, 0x1f, 0x7b, 0x1b, 0x13, 0x2a, 0xe7, 0x52, 0xaa, + 0xcb, 0x71, 0x9d, 0x7c, 0x7b, 0x58, 0x46, 0xa7, 0x99, 0x9f, 0xf6, 0xaa, + 0x34, 0xd6, 0xe7, 0xe5, 0x56, 0x3b, 0x40, 0x24, 0x24, 0xa6, 0x5d, 0x5a, + 0xd1, 0x56, 0x11, 0x3a, 0xee, 0x77, 0xb4, 0x7c, 0xd7, 0x38, 0xd6, 0xb5, + 0xa2, 0x79, 0x2b, 0x73, 0xad, 0x3f, 0x7d, 0xa7, 0x14, 0x68, 0xd1, 0xaf, + 0xdc, 0xb1, 0x1f, 0x59, 0xad, 0xdb, 0x4f, 0x29, 0x29, 0xd1, 0x6b, 0x3d, + 0x6a, 0x05, 0x90, 0x03, 0x8f, 0xb4, 0x8f, 0x82, 0x0b, 0x9c, 0x43, 0x4b, + 0x1d, 0xa8, 0xed, 0xe4, 0xa7, 0x83, 0x70, 0x68, 0x2c, 0x7c, 0x8e, 0xf2, + 0x3c, 0x21, 0x33, 0xc0, 0x24, 0xcf, 0xc8, 0xa4, 0xa6, 0xab, 0xc6, 0x8b, + 0x5f, 0xea, 0xae, 0x49, 0xa3, 0x2d, 0xc0, 0x18, 0xde, 0xc3, 0xcf, 0x06, + 0x08, 0x3a, 0xac, 0xb7, 0x36, 0x26, 0x35, 0x1e, 0x08, 0xdd, 0x2b, 0x20, + 0x62, 0xe6, 0xd3, 0x69, 0xfa, 0x25, 0xc5, 0x8f, 0x1e, 0x2d, 0x78, 0xda, + 0x7f, 0x2a, 0x4a, 0x7b, 0x43, 0x6b, 0x43, 0x5f, 0xb5, 0xe2, 0xb6, 0x6e, + 0xde, 0xd3, 0xc8, 0x69, 0xfc, 0xe6, 0xfc, 0xd5, 0x3a, 0x9d, 0x55, 0xc5, + 0xf6, 0x17, 0x6d, 0x63, 0x81, 0xda, 0xe7, 0x49, 0x33, 0xc2, 0x9b, 0x71, + 0x4d, 0x6d, 0xf6, 0x6d, 0x34, 0x9d, 0x00, 0x26, 0x0b, 0xbe, 0x01, 0x11, + 0xce, 0x2c, 0x6e, 0xd6, 0x30, 0x38, 0xb8, 0x6c, 0x66, 0x83, 0x57, 0x0e, + 0xff, 0x00, 0x20, 0x52, 0x53, 0x1a, 0x9f, 0xe8, 0xe3, 0x3b, 0x6e, 0x8e, + 0x2d, 0xed, 0xa9, 0xdd, 0xc9, 0x84, 0xf8, 0xf6, 0x5a, 0xe6, 0xbc, 0x5e, + 0x08, 0xb1, 0xec, 0x05, 0xba, 0x46, 0xa3, 0x51, 0xbb, 0xce, 0x11, 0x59, + 0x8d, 0x65, 0x2d, 0x6e, 0xf6, 0xb4, 0x96, 0x6b, 0x24, 0xeb, 0xf1, 0x51, + 0xa9, 0xcd, 0x65, 0xae, 0x78, 0x6b, 0x88, 0x26, 0x79, 0xf0, 0x09, 0x29, + 0x16, 0x45, 0x4c, 0xb0, 0x35, 0xf5, 0x58, 0x3d, 0x56, 0x8d, 0x7f, 0x96, + 0x3c, 0x11, 0x70, 0xb1, 0x4e, 0x55, 0x57, 0x06, 0xb4, 0xef, 0x0d, 0xda, + 0x1a, 0x7b, 0x18, 0xf7, 0x13, 0xe0, 0xad, 0xfd, 0x90, 0xde, 0x4b, 0x8b, + 0x83, 0x28, 0x1e, 0xe1, 0x63, 0xb9, 0x6c, 0xf2, 0xd0, 0x55, 0x5c, 0x8e, + 0xa7, 0x5b, 0x5a, 0xec, 0x2e, 0x99, 0x0c, 0x68, 0x3f, 0xa5, 0xbd, 0xdd, + 0xfc, 0xcf, 0x8a, 0x4a, 0x71, 0x7a, 0x4d, 0xd7, 0xe3, 0xe4, 0xbd, 0xd4, + 0x09, 0xb5, 0xa1, 0xcd, 0x68, 0xec, 0x4c, 0x2d, 0x2f, 0xb1, 0x3d, 0xb5, + 0xbb, 0x35, 0xe4, 0xdf, 0x96, 0x44, 0x59, 0x27, 0xe8, 0x6e, 0xec, 0xcf, + 0x0f, 0x05, 0x97, 0x57, 0xea, 0xfd, 0x45, 0xec, 0xdc, 0x09, 0x0e, 0xd1, + 0xc3, 0x50, 0x44, 0xae, 0x81, 0x96, 0x56, 0x5c, 0xed, 0x3d, 0x37, 0x91, + 0xb4, 0xf2, 0x34, 0xf2, 0x1c, 0x24, 0xa4, 0x2d, 0xc0, 0xba, 0xf7, 0xb1, + 0xd6, 0x11, 0x4b, 0x4b, 0x36, 0xec, 0x27, 0xdc, 0xe8, 0x11, 0x21, 0xa1, + 0x4b, 0x22, 0x8a, 0x6b, 0x26, 0xe0, 0xd7, 0x48, 0x20, 0x4d, 0x87, 0x6b, + 0x1c, 0x47, 0x6f, 0x6c, 0x94, 0xa6, 0xe6, 0xed, 0x60, 0x24, 0xb9, 0xa6, + 0x09, 0x00, 0x9f, 0x70, 0x52, 0x22, 0xfa, 0xde, 0x5c, 0x5f, 0xb8, 0x91, + 0x30, 0x24, 0x82, 0x7c, 0x40, 0x49, 0x4a, 0xbe, 0xc1, 0x66, 0x0e, 0x51, + 0xb6, 0xa3, 0x55, 0x95, 0xd4, 0xe0, 0x35, 0x90, 0x44, 0x69, 0xaf, 0x75, + 0xc7, 0xe2, 0xbb, 0x6e, 0x7d, 0x0e, 0x3f, 0xe9, 0x18, 0x07, 0x99, 0x26, + 0x02, 0xec, 0xfa, 0x85, 0xd6, 0x0e, 0x8b, 0x79, 0xb0, 0xc6, 0xf0, 0x01, + 0x69, 0x1e, 0xe0, 0x4e, 0x9f, 0x8a, 0xe4, 0xab, 0xb2, 0x8a, 0x31, 0xac, + 0x7b, 0xe0, 0xde, 0xcb, 0x6a, 0xb5, 0xb3, 0xc8, 0x65, 0x67, 0x73, 0xa3, + 0xe3, 0xa0, 0x49, 0x4d, 0xdf, 0xae, 0x18, 0xec, 0xa7, 0xaa, 0x56, 0x58, + 0xd8, 0x36, 0xd6, 0xd7, 0x58, 0x7b, 0x6e, 0xd4, 0x48, 0xf9, 0x0d, 0x56, + 0x3c, 0x03, 0x51, 0x3e, 0x2b, 0xa3, 0xfa, 0xdb, 0x65, 0x19, 0x57, 0x60, + 0x1a, 0x2c, 0x6d, 0x8f, 0x14, 0xbc, 0xbc, 0x34, 0x83, 0xb5, 0xbb, 0x81, + 0x6e, 0xef, 0x0e, 0x4a, 0xe7, 0xe8, 0x6b, 0x2c, 0xf6, 0x35, 0xda, 0x34, + 0xed, 0x24, 0x24, 0xa4, 0x98, 0x0e, 0x0c, 0xc5, 0xea, 0x0f, 0x3f, 0xe8, + 0x03, 0x00, 0xf3, 0x75, 0x8c, 0x0b, 0x3e, 0xff, 0x00, 0xa1, 0x59, 0x1c, + 0x19, 0x08, 0xc1, 0xda, 0x58, 0xd9, 0x20, 0x09, 0xd3, 0xc6, 0x3c, 0x50, + 0x0e, 0xb4, 0xb3, 0xf9, 0x2e, 0x3f, 0x88, 0x49, 0x4d, 0x8e, 0x89, 0x73, + 0xaa, 0xea, 0x78, 0x9a, 0xe8, 0xe7, 0x96, 0x11, 0xfd, 0x6f, 0x62, 0xee, + 0x32, 0x2a, 0x79, 0x7b, 0x1a, 0x40, 0xda, 0xc6, 0xc1, 0x77, 0x1d, 0xf7, + 0x1d, 0x17, 0x9d, 0x54, 0xe2, 0xcb, 0xe9, 0x78, 0xe5, 0xaf, 0x9f, 0xb8, + 0x82, 0xbd, 0x10, 0x5e, 0xc7, 0xd8, 0x0b, 0x61, 0xc0, 0x91, 0xe4, 0x27, + 0xb0, 0x9f, 0x04, 0x94, 0x8e, 0xc3, 0xea, 0x38, 0xee, 0xd3, 0x49, 0x69, + 0x1d, 0xa1, 0x42, 0xcf, 0x73, 0x4b, 0x89, 0x2e, 0xf6, 0xe8, 0x7c, 0xc4, + 0x01, 0x28, 0x8e, 0x66, 0x45, 0x9f, 0xcd, 0xbc, 0xbf, 0x73, 0xa7, 0x75, + 0x50, 0x60, 0x0f, 0x82, 0x10, 0xa2, 0xdb, 0x04, 0x6e, 0xf4, 0xb5, 0x24, + 0x93, 0xfb, 0xa7, 0xc7, 0xcd, 0x25, 0x32, 0x65, 0x80, 0xb9, 0x8e, 0x70, + 0x36, 0x12, 0x44, 0x82, 0x38, 0x52, 0xb1, 0xaf, 0x16, 0x87, 0xee, 0x9d, + 0xbc, 0x02, 0x75, 0xd7, 0xe0, 0x95, 0x86, 0xca, 0x4f, 0xa5, 0x58, 0x0e, + 0xdd, 0x11, 0xae, 0xae, 0x1f, 0xc1, 0x0d, 0xa7, 0xde, 0xe0, 0xe0, 0x49, + 0x70, 0xf6, 0xf9, 0x0f, 0x19, 0x29, 0x29, 0x9e, 0x44, 0x4c, 0x38, 0x86, + 0x03, 0xfc, 0xd9, 0x9f, 0x71, 0x9e, 0xc7, 0xb4, 0x79, 0xa8, 0xc9, 0xf4, + 0xe7, 0x6f, 0xba, 0x36, 0x70, 0x37, 0x47, 0x1c, 0xf1, 0x0a, 0x37, 0xbe, + 0xaf, 0x58, 0x56, 0xff, 0x00, 0x73, 0x62, 0x41, 0x91, 0x12, 0x3e, 0x0a, + 0x3f, 0x68, 0xab, 0x77, 0xad, 0xfc, 0x9d, 0xbb, 0xfb, 0xed, 0xfc, 0x89, + 0x29, 0xcf, 0x0e, 0x34, 0x07, 0x30, 0x58, 0x5c, 0xf2, 0x25, 0xed, 0x32, + 0x34, 0x0a, 0x37, 0x82, 0xea, 0xeb, 0xba, 0xa7, 0x07, 0xd5, 0x3b, 0x9a, + 0x62, 0x49, 0x3d, 0xd9, 0x03, 0x5d, 0xc1, 0x5d, 0x38, 0x35, 0xe4, 0x34, + 0xd9, 0x63, 0xb5, 0x74, 0xb4, 0x10, 0x4c, 0xc7, 0x90, 0x46, 0xc7, 0xc7, + 0x66, 0x35, 0x46, 0xb6, 0x12, 0x47, 0x66, 0x9d, 0x37, 0x1f, 0x1d, 0x12, + 0x53, 0x59, 0x95, 0xd8, 0xc3, 0x5b, 0xb6, 0xb9, 0x92, 0x64, 0x34, 0x88, + 0x89, 0xf0, 0xf2, 0x45, 0xb3, 0x26, 0x92, 0xe1, 0x5b, 0x4d, 0x87, 0x25, + 0xda, 0x38, 0x01, 0xed, 0x03, 0xfb, 0xd4, 0xac, 0xb2, 0xad, 0xed, 0x0e, + 0x1b, 0x9e, 0x3b, 0x3f, 0x5e, 0x74, 0xd2, 0x44, 0x24, 0xe7, 0xe3, 0x34, + 0x16, 0xc9, 0x16, 0xb4, 0x80, 0x4b, 0x41, 0x80, 0x0f, 0x3a, 0x84, 0x94, + 0xcb, 0x1b, 0xa5, 0xd5, 0xf6, 0x5f, 0xd6, 0x2c, 0x01, 0xa5, 0xf3, 0xef, + 0x27, 0xda, 0x4f, 0x1a, 0xfe, 0x28, 0xc2, 0xec, 0x6a, 0x1d, 0x65, 0x55, + 0x56, 0x5c, 0x1a, 0x0b, 0x0b, 0xeb, 0x80, 0x04, 0x08, 0x9f, 0x3f, 0x8a, + 0xae, 0x6e, 0x37, 0xb5, 0x95, 0x59, 0xf4, 0x18, 0xe3, 0xe9, 0x81, 0xa6, + 0xa0, 0x72, 0xe8, 0x51, 0xad, 0xe3, 0x76, 0xc2, 0x1c, 0xfd, 0x9a, 0x03, + 0xda, 0x3f, 0x3b, 0xe4, 0x12, 0x52, 0x89, 0x75, 0x94, 0x58, 0xc7, 0xd8, + 0x03, 0x00, 0x90, 0xcf, 0xde, 0x25, 0x2c, 0x7a, 0x80, 0x70, 0xb4, 0x8f, + 0xa2, 0xd2, 0x54, 0xf6, 0xd6, 0x68, 0x2e, 0x93, 0x2d, 0x74, 0x6d, 0x6f, + 0xba, 0x07, 0x3b, 0xa1, 0x3e, 0x6d, 0x8d, 0xa7, 0x1a, 0xc2, 0x74, 0x90, + 0x03, 0x7e, 0xe9, 0x49, 0x4f, 0x29, 0x9d, 0x6d, 0xb6, 0x65, 0xbe, 0xc3, + 0x30, 0x09, 0x83, 0xe0, 0x8b, 0xb1, 0xb9, 0x0c, 0x87, 0x0d, 0xaf, 0x6f, + 0x7e, 0xe8, 0x21, 0xfb, 0x9e, 0xfe, 0xf3, 0xca, 0x23, 0x45, 0xad, 0xb0, + 0x7f, 0xa3, 0xfc, 0xc7, 0x78, 0x7f, 0x25, 0x25, 0x32, 0xf4, 0xcb, 0x5d, + 0xa1, 0x04, 0x91, 0xaf, 0x99, 0x43, 0x20, 0x9f, 0x6f, 0xdd, 0xfd, 0xc8, + 0x96, 0xbb, 0x6f, 0xb5, 0xdf, 0x44, 0x9d, 0x3e, 0x29, 0x31, 0x8f, 0xdc, + 0x4b, 0x86, 0xe0, 0xed, 0x64, 0x24, 0xa6, 0xb1, 0xd1, 0xd1, 0x12, 0x7c, + 0x94, 0x6e, 0x04, 0x30, 0x38, 0x68, 0x41, 0xe7, 0xbc, 0xab, 0x96, 0x52, + 0x09, 0x93, 0xed, 0x3c, 0xee, 0x55, 0x33, 0x5c, 0xd6, 0x56, 0xe0, 0xd8, + 0x70, 0x1c, 0x91, 0xe2, 0x92, 0x9e, 0xb7, 0x0b, 0x2e, 0x9c, 0x8e, 0x90, + 0xdc, 0xb6, 0xc1, 0x70, 0x10, 0xe6, 0x9e, 0x7d, 0x40, 0x76, 0xb8, 0x7c, + 0x15, 0x8c, 0x17, 0x93, 0x6d, 0x77, 0x3b, 0xb0, 0xdc, 0x1a, 0x38, 0x24, + 0x98, 0x3f, 0x82, 0xcf, 0xe9, 0x98, 0x95, 0x33, 0x1b, 0x0b, 0x0e, 0x8d, + 0x5a, 0x6b, 0x17, 0xdc, 0x75, 0x32, 0xe7, 0xb6, 0x63, 0x45, 0xa6, 0x31, + 0xef, 0x6b, 0xa0, 0x02, 0xe1, 0xfb, 0x82, 0x41, 0x1f, 0x7c, 0x14, 0x94, + 0x8f, 0x21, 0xde, 0x9e, 0x4b, 0xe9, 0x23, 0xde, 0xc7, 0x7e, 0x8a, 0x7b, + 0xb4, 0xea, 0x1d, 0xf7, 0x15, 0x66, 0xae, 0x9f, 0x4d, 0x4c, 0x19, 0xb9, + 0xee, 0x73, 0x03, 0x35, 0x65, 0x64, 0xed, 0xfc, 0x15, 0x8c, 0x8b, 0xb1, + 0xb0, 0x99, 0x5d, 0xb9, 0x20, 0x3f, 0x21, 0x8d, 0x86, 0x56, 0x35, 0x83, + 0xdb, 0xe3, 0x1c, 0x2c, 0xbb, 0x2c, 0xca, 0xc8, 0xbd, 0xb9, 0x19, 0xae, + 0x6b, 0x6a, 0x91, 0xb2, 0xb7, 0x1f, 0x1e, 0x34, 0xee, 0x92, 0x99, 0xe4, + 0xe5, 0xdf, 0xd4, 0x48, 0x00, 0xfa, 0x18, 0x40, 0xc3, 0x00, 0x07, 0xdc, + 0x7e, 0x48, 0x75, 0xe3, 0xdd, 0x8f, 0xec, 0xa5, 0xf5, 0xcb, 0xe6, 0x40, + 0x68, 0x3a, 0x1e, 0xde, 0xed, 0x55, 0xc7, 0x17, 0x11, 0xb5, 0xd5, 0x6d, + 0xdb, 0xc3, 0x62, 0x34, 0x27, 0xb1, 0xe1, 0x0f, 0x29, 0xef, 0xc6, 0xa5, + 0xae, 0xac, 0x1d, 0xcf, 0x73, 0x58, 0xc6, 0x7f, 0x29, 0xc7, 0xbc, 0x78, + 0x0d, 0x52, 0x53, 0x83, 0x99, 0x57, 0xa5, 0x9e, 0x1a, 0x74, 0x88, 0xfe, + 0xee, 0x56, 0xf0, 0xb1, 0xd6, 0xfa, 0x75, 0x96, 0xb0, 0x6e, 0x60, 0x32, + 0x64, 0xee, 0x1f, 0x0f, 0x15, 0x93, 0xd6, 0xea, 0xa9, 0x99, 0x14, 0x3e, + 0xbd, 0x5a, 0x1a, 0x1a, 0x75, 0x26, 0x5c, 0x39, 0x5a, 0x18, 0x6c, 0x2e, + 0xa5, 0x8f, 0xdd, 0xb1, 0xf3, 0x02, 0x44, 0xb4, 0xf9, 0x42, 0x4a, 0x49, + 0x7b, 0xdd, 0x58, 0xde, 0x6e, 0x6b, 0x6a, 0x68, 0xdd, 0xb5, 0xad, 0x71, + 0xdd, 0xdb, 0x53, 0x2a, 0xad, 0xfd, 0x42, 0xa7, 0xda, 0xda, 0x05, 0xc4, + 0x56, 0xd1, 0x25, 0x9d, 0xa4, 0xf7, 0x3f, 0x04, 0x6b, 0x6c, 0x71, 0xa9, + 0xcc, 0x7b, 0x43, 0x6c, 0x04, 0xb7, 0x60, 0x11, 0x01, 0xc3, 0x6c, 0x22, + 0x57, 0x40, 0x0f, 0x0d, 0x7b, 0x5a, 0x01, 0x9d, 0xd0, 0x3c, 0x3c, 0xdd, + 0x33, 0x29, 0x29, 0xc7, 0xea, 0x9d, 0x42, 0x7a, 0x7d, 0x35, 0xd3, 0x91, + 0xea, 0x35, 0xd6, 0x80, 0xf2, 0x1a, 0x5b, 0x30, 0x74, 0x99, 0xe7, 0x95, + 0x8b, 0x96, 0x43, 0xa9, 0x6c, 0xfd, 0x27, 0x12, 0x27, 0xc6, 0x0c, 0x2d, + 0xaf, 0xad, 0x2d, 0xd3, 0x1d, 0xa0, 0xc9, 0x2e, 0xdc, 0x20, 0x40, 0xd0, + 0x8d, 0x17, 0x3b, 0x98, 0x5d, 0xea, 0xd2, 0xce, 0xc2, 0x5d, 0x1f, 0xda, + 0x25, 0x25, 0x27, 0xa9, 0xa6, 0xa6, 0xe4, 0x11, 0xed, 0x21, 0x8c, 0x03, + 0xe6, 0x54, 0x70, 0x89, 0x6b, 0xc1, 0x07, 0x93, 0xaf, 0xde, 0x8e, 0xe6, + 0xfb, 0x2c, 0x23, 0x59, 0x0c, 0xd3, 0xe6, 0xe4, 0x1c, 0x66, 0x9f, 0x59, + 0xa3, 0xb4, 0x9e, 0x7e, 0x49, 0x29, 0x19, 0x2e, 0xf5, 0xad, 0x00, 0x13, + 0x01, 0xc4, 0xc7, 0x61, 0xe2, 0x50, 0xec, 0x65, 0xb8, 0xf5, 0x86, 0xda, + 0xd2, 0xcd, 0xe1, 0xb6, 0x30, 0x1e, 0xed, 0x26, 0x01, 0x57, 0x2a, 0x19, + 0x98, 0x7d, 0x41, 0x99, 0x8d, 0x6b, 0x9b, 0x4d, 0x86, 0x0b, 0xda, 0x37, + 0x82, 0xd7, 0x1f, 0x73, 0x5c, 0xd1, 0x3f, 0x71, 0x47, 0xcb, 0x16, 0xf5, + 0x6c, 0x77, 0xba, 0xa6, 0xb9, 0xb6, 0x9b, 0x77, 0x34, 0x58, 0x03, 0x43, + 0x9a, 0xf2, 0x2b, 0x63, 0x43, 0x9d, 0xc0, 0x6e, 0xa4, 0x0f, 0x3f, 0x24, + 0x94, 0xe1, 0x17, 0xea, 0x0f, 0x83, 0x97, 0x7f, 0x8a, 0xc3, 0x66, 0x3d, + 0x19, 0x21, 0xf1, 0x5e, 0xd0, 0x4c, 0xe8, 0x24, 0x40, 0x85, 0xcd, 0x8f, + 0xa9, 0x3d, 0x5c, 0x50, 0x6c, 0xb5, 0xf5, 0x56, 0xe2, 0x46, 0xc6, 0x17, + 0x6e, 0x2e, 0xec, 0xef, 0xa2, 0x0f, 0x0b, 0xa6, 0xc7, 0x6d, 0xb8, 0xd8, + 0x74, 0x62, 0x3e, 0x1e, 0x2b, 0x6b, 0x5b, 0x71, 0x6f, 0x12, 0x3b, 0xa4, + 0xa4, 0xc1, 0xb7, 0x57, 0xfa, 0x66, 0xbf, 0x61, 0xe4, 0x1d, 0x34, 0x9f, + 0xea, 0xf2, 0x96, 0xe7, 0x58, 0xc0, 0xfb, 0x09, 0x1b, 0xa4, 0x1d, 0x0b, + 0x5a, 0x4f, 0x64, 0xed, 0x35, 0x3a, 0xe1, 0x59, 0xee, 0x48, 0x13, 0xa8, + 0x24, 0x7f, 0xb1, 0x0a, 0xf6, 0xfa, 0x36, 0x3a, 0xa7, 0x92, 0x76, 0x9d, + 0xcd, 0xda, 0x0e, 0xa0, 0xea, 0xd2, 0x12, 0x52, 0x37, 0x31, 0xc5, 0xe1, + 0xac, 0x97, 0x86, 0x70, 0xe1, 0xc0, 0xff, 0x00, 0x5f, 0x34, 0x8c, 0xde, + 0xdd, 0x81, 0xc0, 0x35, 0xaf, 0xd4, 0xc1, 0x24, 0x1d, 0x47, 0xdc, 0x4a, + 0x25, 0x56, 0x33, 0xd3, 0x71, 0x63, 0x65, 0xaf, 0x70, 0x6e, 0x9e, 0x3c, + 0x98, 0x01, 0x49, 0x98, 0xe6, 0x80, 0xd7, 0x6d, 0xdd, 0xbc, 0x9d, 0xe7, + 0x82, 0x27, 0x5f, 0x77, 0x82, 0x4a, 0x42, 0xea, 0x1b, 0xef, 0x69, 0x76, + 0xcd, 0x8d, 0x05, 0xae, 0x03, 0x9d, 0x64, 0xe9, 0xfd, 0xc8, 0x1b, 0x3f, + 0x41, 0x30, 0x36, 0x44, 0xee, 0x8f, 0x6c, 0xf3, 0x2a, 0xed, 0xc2, 0xb6, + 0x17, 0x34, 0xb7, 0xd4, 0x79, 0xfa, 0x24, 0x70, 0x1b, 0xde, 0x55, 0x7f, + 0xfb, 0x41, 0xe9, 0xce, 0xb3, 0xbb, 0x6c, 0xeb, 0xfb, 0xbf, 0x91, 0x25, + 0x25, 0xa2, 0xbb, 0x7d, 0x31, 0x65, 0xc5, 0xb5, 0x9e, 0x5e, 0x79, 0x23, + 0xb1, 0x00, 0x7c, 0x54, 0x5d, 0x97, 0x59, 0xb5, 0xa5, 0x8e, 0x63, 0x6a, + 0x61, 0xf7, 0x6f, 0x31, 0xa1, 0x45, 0xc8, 0xa9, 0xd6, 0x64, 0xef, 0x7b, + 0x4b, 0x45, 0x82, 0x01, 0x27, 0x9d, 0x3c, 0x3c, 0x7f, 0x2a, 0x83, 0x7a, + 0x7e, 0x3d, 0xc1, 0xb5, 0xb5, 0xcc, 0x66, 0x9b, 0x49, 0x71, 0x05, 0xb2, + 0x3f, 0x7b, 0xcd, 0x25, 0x2e, 0xeb, 0x2a, 0xc8, 0x6e, 0xda, 0xc0, 0x78, + 0x1a, 0xb9, 0xcc, 0xf8, 0xca, 0x03, 0x6d, 0xaa, 0xe7, 0x3c, 0xb8, 0x43, + 0x9a, 0x21, 0xa6, 0x08, 0x04, 0xf6, 0x32, 0x79, 0xd1, 0x5c, 0xf4, 0x7e, + 0xca, 0x7d, 0x36, 0x31, 0xa0, 0x00, 0x04, 0xf0, 0x08, 0x1e, 0x1a, 0x6a, + 0xa3, 0x63, 0x39, 0x35, 0xb0, 0x35, 0xc0, 0x48, 0x8e, 0xde, 0x5a, 0x24, + 0xa6, 0xb5, 0xce, 0xd9, 0xac, 0x41, 0xfc, 0xe0, 0x47, 0x10, 0x79, 0xf9, + 0x85, 0x02, 0xeb, 0x7d, 0x57, 0xd5, 0x59, 0x2d, 0x61, 0x83, 0xbc, 0xf6, + 0x9e, 0xc8, 0xed, 0xf5, 0x9a, 0xf8, 0x73, 0xb7, 0x7a, 0x82, 0x1c, 0xd6, + 0xea, 0x7c, 0x65, 0x43, 0x2a, 0x5a, 0x03, 0xdc, 0x07, 0xb7, 0xda, 0x4c, + 0x89, 0x8f, 0x1d, 0x12, 0x53, 0x3a, 0xe9, 0x64, 0xb9, 0xa1, 0xd0, 0x46, + 0xa5, 0xcd, 0xee, 0x55, 0x2f, 0xac, 0x97, 0x86, 0x54, 0xd1, 0x31, 0xa4, + 0x47, 0x8a, 0xd2, 0xc0, 0xdf, 0x4b, 0xbd, 0x51, 0x32, 0x20, 0x31, 0xc3, + 0x8e, 0x35, 0x05, 0x73, 0x3d, 0x6a, 0xd7, 0x65, 0x67, 0xb8, 0x7e, 0x6b, + 0x34, 0x49, 0x4d, 0x2c, 0x66, 0x17, 0xc9, 0xed, 0xdd, 0x5e, 0x66, 0xd6, + 0xe8, 0x46, 0xe6, 0xbf, 0x48, 0xf0, 0x28, 0x74, 0x32, 0x00, 0x03, 0xb7, + 0x64, 0x61, 0xed, 0x70, 0x91, 0xa7, 0x8a, 0x4a, 0x6b, 0x58, 0x2b, 0xdd, + 0xb1, 0xee, 0x2f, 0x6c, 0xe8, 0x47, 0x2a, 0x21, 0xcf, 0xa9, 0xc0, 0x13, + 0xb9, 0x9f, 0x9a, 0xe4, 0xae, 0x20, 0x5e, 0xf7, 0xe8, 0x5a, 0x4e, 0xbe, + 0x12, 0x51, 0x19, 0xb0, 0x38, 0x35, 0xe6, 0x5a, 0xe4, 0x94, 0xb3, 0xdc, + 0x2d, 0xd5, 0xc4, 0x82, 0x55, 0x4c, 0xb6, 0x45, 0x65, 0xb3, 0x22, 0x79, + 0x56, 0x33, 0xc3, 0x31, 0xc9, 0x7d, 0x04, 0xb9, 0x80, 0xfc, 0xb8, 0x54, + 0x1f, 0x6b, 0xad, 0x61, 0x2e, 0x1d, 0xf8, 0x1a, 0x24, 0xa7, 0xb7, 0xfa, + 0xb1, 0x40, 0xc9, 0xe9, 0xb5, 0x39, 0xac, 0x0e, 0xf6, 0x80, 0x6d, 0xfd, + 0xd2, 0x34, 0xfc, 0x16, 0x96, 0x56, 0x7d, 0x38, 0x73, 0x4e, 0x2f, 0xe9, + 0xb2, 0x9d, 0xa1, 0x24, 0xf0, 0xb2, 0xfa, 0x7e, 0x4b, 0xf1, 0x7a, 0x4e, + 0x3f, 0x4c, 0xc2, 0xf6, 0x96, 0x32, 0x6f, 0xb8, 0xf0, 0x1c, 0xff, 0x00, + 0x73, 0xbf, 0x12, 0xa7, 0x4d, 0x58, 0x95, 0x4c, 0x38, 0xe4, 0x38, 0x9f, + 0x76, 0xe0, 0x41, 0x31, 0xaf, 0x23, 0x54, 0x94, 0xc6, 0x8a, 0x5d, 0x75, + 0x8f, 0xb3, 0x25, 0xc1, 0xf7, 0xb0, 0x0b, 0x43, 0xbb, 0x34, 0x0e, 0xc3, + 0xe4, 0xe9, 0x47, 0xc9, 0xc5, 0x65, 0xd8, 0xf5, 0x3e, 0xd0, 0xd7, 0x5b, + 0x5c, 0x8d, 0xb2, 0x40, 0x03, 0x96, 0xed, 0x8e, 0xc9, 0x57, 0x5b, 0x67, + 0xed, 0x01, 0xae, 0xad, 0x80, 0x11, 0x0f, 0x32, 0xe3, 0xbb, 0xf3, 0x3c, + 0xf9, 0x4c, 0xc6, 0x52, 0xd7, 0x1a, 0x72, 0x1e, 0xe6, 0x5c, 0xf1, 0x31, + 0xb4, 0xba, 0x07, 0xf2, 0x9d, 0xb8, 0x13, 0xf2, 0xd1, 0x25, 0x32, 0x37, + 0xd8, 0x5b, 0x58, 0x6b, 0x3f, 0x47, 0x01, 0xa4, 0x30, 0x69, 0x1c, 0xce, + 0xa8, 0x4f, 0xb1, 0xd6, 0xe5, 0x07, 0x72, 0xea, 0x5a, 0x3d, 0x36, 0x73, + 0xab, 0xb9, 0x3f, 0x72, 0x36, 0x23, 0xa9, 0x6d, 0x56, 0xb8, 0xb9, 0xcf, + 0xac, 0x98, 0x25, 0xed, 0x2c, 0xe0, 0xfc, 0x75, 0xd1, 0x0f, 0x23, 0x15, + 0xf5, 0x56, 0x5d, 0x45, 0xa3, 0xd3, 0x71, 0xdf, 0x75, 0xa0, 0x03, 0x63, + 0x8c, 0xfb, 0x18, 0xdf, 0xdd, 0x09, 0x29, 0xcf, 0xeb, 0x35, 0x16, 0xd3, + 0x4d, 0xc5, 0xa5, 0xb0, 0xf7, 0x07, 0x03, 0xc8, 0x27, 0xc9, 0x5c, 0xe9, + 0x84, 0xbf, 0x1e, 0x5a, 0x41, 0x2d, 0x23, 0xcc, 0x81, 0xcc, 0x80, 0xaa, + 0x75, 0x5a, 0x2f, 0xfb, 0x1b, 0xaf, 0x92, 0xea, 0x5d, 0x04, 0xb9, 0xc6, + 0x61, 0xe1, 0xdb, 0x48, 0xf2, 0x42, 0xe9, 0x85, 0xd6, 0xb1, 0xc6, 0xbb, + 0x3d, 0x37, 0xd7, 0x0e, 0x63, 0xa6, 0x1b, 0xfd, 0xa4, 0x94, 0xde, 0xbd, + 0xb6, 0xdb, 0x65, 0x6d, 0x23, 0x73, 0x8d, 0x83, 0x6c, 0x48, 0xdc, 0x06, + 0xa6, 0x27, 0xe0, 0xae, 0xe3, 0xbe, 0x80, 0xe8, 0xb9, 0xe1, 0xef, 0x69, + 0xd1, 0x8d, 0xd7, 0xdd, 0xe0, 0x4f, 0xe5, 0x55, 0x1f, 0x63, 0x08, 0xa5, + 0xc3, 0x5b, 0x5b, 0x67, 0xbd, 0xc3, 0xe8, 0xf0, 0x5b, 0xfc, 0x54, 0xed, + 0x0c, 0xc5, 0xae, 0xb7, 0x31, 0xae, 0x36, 0x58, 0x00, 0xda, 0xd8, 0x27, + 0x68, 0x3a, 0xc0, 0xed, 0x29, 0x29, 0xc6, 0xfa, 0xe1, 0x7b, 0x9f, 0x6e, + 0x2b, 0x8e, 0x83, 0xe9, 0x31, 0xa3, 0x40, 0x06, 0xe8, 0xed, 0xf0, 0x59, + 0x59, 0xd5, 0x7a, 0x91, 0x93, 0x58, 0x97, 0x30, 0x06, 0xda, 0xdf, 0x0f, + 0x02, 0xae, 0x7d, 0x6b, 0xb5, 0xcf, 0xc9, 0xa1, 0xc4, 0x6d, 0x68, 0x60, + 0xda, 0xcf, 0xdc, 0x00, 0x9f, 0x6c, 0xac, 0xd7, 0x66, 0x1c, 0x6c, 0xc6, + 0xbd, 0xda, 0xd4, 0xf0, 0x1b, 0x63, 0x7c, 0x5a, 0x42, 0x4a, 0x6c, 0x6f, + 0x02, 0x9b, 0x1c, 0xd3, 0xf4, 0x8b, 0x67, 0x9e, 0xca, 0xbd, 0x4f, 0x8b, + 0x98, 0x4f, 0x73, 0x28, 0xf9, 0x75, 0xd7, 0x8d, 0x5b, 0x9b, 0xa0, 0xa9, + 0xf0, 0xe6, 0x3a, 0x7e, 0x93, 0x4f, 0xf7, 0x29, 0x63, 0x60, 0x63, 0x67, + 0xdd, 0x8f, 0x47, 0x4d, 0xca, 0x16, 0x5e, 0xe0, 0x4d, 0x8d, 0xb4, 0x7a, + 0x7b, 0x60, 0xcf, 0xb4, 0x1f, 0x01, 0xe6, 0x92, 0x9a, 0x87, 0x2b, 0x23, + 0x13, 0x30, 0xd9, 0x8e, 0xf3, 0x5b, 0x9c, 0x20, 0x96, 0x98, 0x31, 0x3c, + 0x4f, 0xc9, 0x6c, 0x74, 0x3f, 0x43, 0x2c, 0xd6, 0xcc, 0x96, 0x8c, 0x50, + 0xfb, 0x4d, 0xd4, 0x06, 0x38, 0x97, 0xd9, 0xb4, 0x87, 0x9d, 0x1f, 0x3e, + 0xd0, 0x47, 0x2b, 0x17, 0xab, 0x57, 0x6f, 0xed, 0x67, 0xe1, 0xb0, 0x43, + 0xeb, 0x70, 0xa8, 0x6a, 0x20, 0xc7, 0x79, 0xfc, 0x55, 0x8f, 0xab, 0x6c, + 0x65, 0x7d, 0x53, 0x12, 0xd7, 0x12, 0xf7, 0x3b, 0xd5, 0x96, 0x0d, 0x21, + 0xad, 0x6c, 0x34, 0xcf, 0x99, 0x94, 0x94, 0xf7, 0x4e, 0xca, 0x14, 0xb8, + 0x35, 0xa4, 0x38, 0x19, 0x15, 0xb4, 0x68, 0x67, 0x93, 0xca, 0x0e, 0xea, + 0x8b, 0x1c, 0x4e, 0xe0, 0xe3, 0xc9, 0xd0, 0x73, 0xc6, 0x88, 0x39, 0x16, + 0x52, 0xeb, 0x18, 0x29, 0x6e, 0xf7, 0xb7, 0xdc, 0x4c, 0xc3, 0x5b, 0x07, + 0xcf, 0x95, 0x6d, 0xdb, 0xae, 0xd8, 0xe6, 0x08, 0x6d, 0x60, 0xc8, 0xec, + 0x7b, 0xfd, 0x27, 0x76, 0x94, 0x94, 0xd7, 0xf5, 0x6b, 0x6b, 0x6c, 0x73, + 0x98, 0xe0, 0x60, 0xc3, 0xe4, 0x44, 0x11, 0x07, 0xe6, 0xab, 0x37, 0x2a, + 0xc7, 0x34, 0x5c, 0xd9, 0x69, 0x64, 0x32, 0xc7, 0x7e, 0x70, 0x69, 0x9d, + 0x84, 0x1f, 0xc1, 0x58, 0xac, 0x1a, 0x9c, 0x34, 0x75, 0xb2, 0x26, 0x59, + 0x0e, 0x69, 0x2e, 0xd0, 0x0e, 0xc8, 0x2d, 0xba, 0x6f, 0xf4, 0xdd, 0xb5, + 0xb5, 0x5c, 0x0b, 0x7d, 0x38, 0x69, 0x25, 0xdc, 0xb4, 0xbb, 0x98, 0xf0, + 0x09, 0x29, 0x88, 0x0e, 0x1b, 0x0c, 0x3a, 0x47, 0xb9, 0xed, 0x20, 0xcc, + 0xf2, 0x23, 0xe2, 0xa5, 0x65, 0xa4, 0x07, 0x86, 0xf1, 0x12, 0x47, 0x12, + 0x5a, 0x67, 0x52, 0x7c, 0x93, 0x91, 0x61, 0xa1, 0xcc, 0x20, 0x1d, 0xed, + 0xf6, 0x3d, 0xa6, 0x5c, 0x40, 0xf1, 0xf9, 0xa1, 0x5d, 0x61, 0x6b, 0x03, + 0x27, 0xe9, 0xb4, 0xb8, 0x88, 0x3a, 0xe9, 0x1f, 0x79, 0x49, 0x49, 0xdb, + 0x69, 0x15, 0x6d, 0x69, 0x06, 0x23, 0x47, 0x6b, 0x00, 0xfd, 0xe8, 0x51, + 0x5f, 0xa9, 0xf2, 0xdb, 0xba, 0x74, 0xe6, 0x67, 0x6f, 0xc7, 0xcd, 0x57, + 0xf5, 0x9e, 0xf6, 0xb4, 0x35, 0xde, 0x9b, 0x44, 0x4b, 0x08, 0x03, 0x41, + 0xc3, 0xa4, 0x95, 0x1f, 0x4e, 0xbd, 0x9e, 0xb4, 0x37, 0x6f, 0xd3, 0x8f, + 0x51, 0xb1, 0xbe, 0x78, 0xfe, 0x29, 0x29, 0xb6, 0xfc, 0x9b, 0x6d, 0x6b, + 0x9a, 0xdb, 0x0b, 0x9c, 0xc0, 0x37, 0x30, 0x1f, 0x70, 0x03, 0x4d, 0xdc, + 0x29, 0xd9, 0x53, 0x1a, 0xd1, 0x6b, 0x5e, 0x62, 0xcf, 0xa5, 0x02, 0x46, + 0x9d, 0x88, 0xf1, 0x54, 0x71, 0xad, 0xc9, 0x79, 0x7b, 0x6b, 0x04, 0xd4, + 0xe2, 0x0e, 0xe7, 0x08, 0x0e, 0xdb, 0xa1, 0x25, 0x1a, 0xaa, 0xec, 0xad, + 0xed, 0x6d, 0xa7, 0xd4, 0x93, 0xab, 0xdc, 0xed, 0x07, 0x10, 0x12, 0x53, + 0x77, 0xd5, 0x67, 0xa0, 0x29, 0x63, 0xdc, 0xf8, 0x3b, 0xab, 0x83, 0xab, + 0x4f, 0x98, 0x53, 0xf5, 0x6d, 0x67, 0xe9, 0x00, 0x35, 0xf6, 0x3a, 0xf2, + 0x7e, 0x05, 0x26, 0x54, 0xd6, 0xb0, 0x16, 0xb8, 0x4f, 0x3e, 0x33, 0xf0, + 0x55, 0xac, 0xba, 0x8a, 0x2e, 0x7b, 0x2f, 0x2f, 0xb5, 0xe7, 0x68, 0x69, + 0x07, 0x6b, 0x1b, 0xb8, 0x76, 0x03, 0xc1, 0x25, 0x30, 0xb1, 0xd9, 0x16, + 0x82, 0xf9, 0x23, 0x71, 0x30, 0xd0, 0x35, 0x81, 0xa4, 0x08, 0xec, 0x4a, + 0x4f, 0xac, 0xbb, 0xd8, 0xe2, 0x2b, 0x2f, 0x1c, 0x9f, 0x15, 0x7e, 0x8c, + 0xb6, 0xec, 0x15, 0xec, 0x1b, 0x5b, 0xa8, 0xb1, 0xba, 0x82, 0xa3, 0xd4, + 0x31, 0xec, 0xbd, 0xd5, 0x9a, 0x1c, 0x03, 0x22, 0x5c, 0xd2, 0x4e, 0xa7, + 0xe0, 0x92, 0x9a, 0x14, 0x3d, 0xf5, 0xfe, 0x7b, 0x9c, 0x00, 0x26, 0x4f, + 0x80, 0x05, 0x63, 0x6d, 0x2f, 0xb1, 0xef, 0x8e, 0x4f, 0x7d, 0x56, 0xfd, + 0xa2, 0xca, 0x58, 0x5b, 0x73, 0x77, 0x34, 0x36, 0x1a, 0x06, 0x86, 0x3c, + 0x95, 0x4f, 0xb2, 0x35, 0xb5, 0x1b, 0xa8, 0x3e, 0xad, 0x6d, 0xd5, 0xc3, + 0xf3, 0xdb, 0xf1, 0x09, 0x29, 0xa8, 0xda, 0x9b, 0x58, 0xdc, 0xed, 0x3c, + 0x50, 0x6d, 0x0e, 0x70, 0x20, 0x70, 0x89, 0x63, 0xdd, 0x6b, 0xa0, 0x0f, + 0x69, 0x51, 0x79, 0x2c, 0x01, 0xb6, 0x83, 0xb5, 0xd3, 0x04, 0x79, 0x24, + 0xa7, 0x3d, 0xe7, 0x63, 0x8b, 0x4e, 0xa3, 0xc9, 0x35, 0x5f, 0x48, 0x4f, + 0x27, 0xee, 0x09, 0xed, 0x6b, 0x9b, 0x36, 0x48, 0x3f, 0xba, 0x3b, 0xa1, + 0x32, 0xc2, 0xfb, 0xb7, 0x0f, 0xa4, 0x7b, 0x1e, 0x12, 0x53, 0x6e, 0xd7, + 0x4d, 0x1b, 0x39, 0x04, 0x1d, 0xc1, 0x67, 0x55, 0x57, 0xb9, 0xac, 0x9f, + 0x6b, 0x9e, 0x01, 0x3e, 0x53, 0x0a, 0xe6, 0x4d, 0xb6, 0x30, 0xb2, 0x6b, + 0xf6, 0x38, 0x46, 0xe6, 0xeb, 0x0a, 0xb6, 0x21, 0x73, 0xf2, 0x2a, 0xac, + 0x09, 0x2e, 0x78, 0x81, 0xf3, 0x49, 0x4f, 0x75, 0x53, 0x05, 0x75, 0xfb, + 0x18, 0x3d, 0x10, 0x0b, 0x7d, 0x46, 0xf2, 0xd2, 0x34, 0xf0, 0x50, 0x0e, + 0xab, 0xd4, 0x26, 0xed, 0xbe, 0xd1, 0x0d, 0x0c, 0x8f, 0x7c, 0x0d, 0xc5, + 0x49, 0xf9, 0xe2, 0xfb, 0x4b, 0x6d, 0x6d, 0x81, 0xd0, 0x08, 0x81, 0xed, + 0x90, 0x74, 0x81, 0xd9, 0x08, 0x63, 0x36, 0xfb, 0xf5, 0x20, 0x47, 0x2d, + 0xed, 0xb4, 0xf6, 0xd0, 0xa4, 0xa6, 0x15, 0x64, 0x55, 0x92, 0xf7, 0x0b, + 0xc1, 0xd8, 0x47, 0xb0, 0x1e, 0xdf, 0x08, 0x3a, 0x22, 0x39, 0xd5, 0x5b, + 0x6d, 0x4c, 0x2e, 0x73, 0x5f, 0x58, 0x20, 0xb8, 0xc9, 0xf6, 0x91, 0x23, + 0x9d, 0x64, 0x76, 0x50, 0xb0, 0xe3, 0xe2, 0x5e, 0xed, 0xa0, 0x06, 0xb2, + 0x77, 0x01, 0x2f, 0xd4, 0xe8, 0x34, 0xe5, 0x35, 0x99, 0x8c, 0x6b, 0x1c, + 0xfd, 0xb2, 0xe6, 0xc3, 0xac, 0x1c, 0x12, 0x07, 0x07, 0x48, 0xd3, 0x54, + 0x94, 0x8a, 0xcb, 0x4b, 0xad, 0x6d, 0x5a, 0xec, 0x1c, 0x03, 0x27, 0xe1, + 0xb8, 0x7c, 0x11, 0xdd, 0x63, 0xeb, 0xb0, 0x3c, 0x10, 0xda, 0xf7, 0x86, + 0x5a, 0xc6, 0xb7, 0x7e, 0xe1, 0xc6, 0xdf, 0x87, 0x9a, 0xad, 0x7f, 0x51, + 0x65, 0xc2, 0x8b, 0xb6, 0xb1, 0xa5, 0xc1, 0xbb, 0x75, 0xe0, 0x8d, 0xda, + 0x4f, 0x8a, 0x88, 0xc8, 0x7d, 0xcc, 0x71, 0xd8, 0xda, 0x2a, 0x73, 0x9a, + 0x1a, 0x7e, 0x94, 0xbb, 0x5d, 0x36, 0xe9, 0xca, 0x4a, 0x6c, 0xf5, 0x4b, + 0x01, 0xc5, 0xbe, 0x9f, 0xb4, 0x82, 0x4b, 0x5c, 0xe1, 0x49, 0x10, 0x5e, + 0x3d, 0xae, 0x10, 0x4e, 0x9a, 0x19, 0x58, 0xfd, 0x1e, 0xc3, 0x2e, 0x63, + 0x40, 0x97, 0x0e, 0x09, 0x22, 0x63, 0xb6, 0x9f, 0x05, 0xb8, 0x31, 0x31, + 0xf2, 0xab, 0x7d, 0x05, 0xc6, 0xac, 0x80, 0x21, 0xa3, 0x69, 0x00, 0xc0, + 0xd0, 0x49, 0x27, 0x4d, 0x57, 0x39, 0xd2, 0x1d, 0xe9, 0xe5, 0x37, 0x76, + 0xa5, 0xaf, 0x20, 0xf6, 0x49, 0x4e, 0xdd, 0xb9, 0x14, 0x51, 0x4b, 0x4b, + 0x2b, 0xe5, 0xcc, 0x73, 0xd8, 0xe1, 0xb0, 0xcb, 0x4e, 0xa0, 0xb6, 0x15, + 0xcf, 0xe7, 0xeb, 0x19, 0x75, 0x5b, 0x01, 0xc4, 0xee, 0x6d, 0xa5, 0xad, + 0x89, 0x1a, 0x0e, 0x3b, 0x76, 0x55, 0xac, 0x21, 0x8c, 0x24, 0x7a, 0x55, + 0x97, 0x98, 0x73, 0xac, 0x7e, 0xe3, 0x07, 0xc0, 0x9f, 0xa4, 0x49, 0xf0, + 0x42, 0xc7, 0x7e, 0x45, 0x4d, 0x73, 0x9e, 0x6b, 0xba, 0x93, 0xa3, 0x2b, + 0xd9, 0x20, 0x1f, 0x37, 0x24, 0xa6, 0xcf, 0xa9, 0x60, 0xca, 0x0e, 0x2d, + 0x16, 0x3e, 0xd6, 0x8a, 0xdc, 0xd8, 0x1b, 0x4b, 0x84, 0x91, 0xaf, 0xc1, + 0x3d, 0x78, 0xf8, 0x4e, 0xca, 0xde, 0x31, 0x58, 0xcc, 0x90, 0x61, 0xee, + 0x2d, 0x0f, 0x20, 0xf3, 0xdc, 0x68, 0x3e, 0x48, 0x4e, 0x35, 0xbe, 0xa0, + 0xf7, 0x49, 0x73, 0x08, 0x73, 0x9b, 0x5c, 0x80, 0xd6, 0xfe, 0x29, 0x85, + 0xc2, 0xab, 0x8d, 0xae, 0x70, 0xd6, 0x03, 0x5e, 0xe7, 0x3e, 0x4b, 0x62, + 0x5a, 0x06, 0xe8, 0x1c, 0x1e, 0xc9, 0x29, 0xc1, 0xbe, 0x86, 0xe4, 0xdf, + 0x99, 0xd2, 0xc9, 0x8c, 0x8c, 0x6b, 0x5d, 0x6e, 0x29, 0x20, 0x7d, 0x12, + 0x77, 0x6d, 0xf0, 0xee, 0x81, 0xf5, 0x7f, 0x2b, 0x7f, 0x5d, 0xa0, 0x5d, + 0x8f, 0x50, 0xb5, 0xa4, 0xc3, 0x98, 0xdd, 0x85, 0xa5, 0x8d, 0x77, 0xe6, + 0xb2, 0x1b, 0xf8, 0x28, 0xf5, 0xfb, 0xdd, 0x8d, 0xd6, 0x99, 0x99, 0x41, + 0x87, 0x6d, 0x63, 0xa7, 0x89, 0x89, 0x69, 0xfc, 0x8b, 0x47, 0x13, 0x19, + 0xb9, 0x1d, 0x53, 0x13, 0xab, 0xe0, 0xc6, 0xc7, 0x93, 0xeb, 0x0f, 0xdc, + 0x7e, 0xd2, 0x26, 0x12, 0x52, 0x5f, 0xac, 0xc1, 0xf8, 0x79, 0xb6, 0x75, + 0x0a, 0x9c, 0x1a, 0xd7, 0x54, 0xc0, 0xc0, 0xc6, 0x00, 0x4d, 0x8e, 0xf6, + 0x3b, 0xf4, 0x80, 0x69, 0xc2, 0x17, 0xd5, 0xeb, 0x9e, 0xfc, 0xca, 0xdb, + 0x65, 0x8f, 0x04, 0x62, 0xba, 0xc1, 0x4c, 0xc9, 0x7b, 0x89, 0x8d, 0xce, + 0x3f, 0x03, 0x31, 0xf0, 0x5a, 0x1d, 0x58, 0xbb, 0x2a, 0xfc, 0x5c, 0x2b, + 0xed, 0x14, 0x8b, 0x8b, 0xd9, 0x63, 0xa2, 0x43, 0xda, 0xc8, 0x76, 0xc7, + 0x0f, 0x30, 0x34, 0xf3, 0x85, 0x8f, 0xf5, 0x65, 0xf4, 0x5f, 0xd6, 0x72, + 0x9f, 0x5d, 0x6e, 0xd8, 0xea, 0xdc, 0x6a, 0x6b, 0x9d, 0xee, 0x00, 0x39, + 0xbf, 0x9c, 0x04, 0x24, 0xa7, 0xa4, 0x0d, 0x75, 0x8c, 0x05, 0xa2, 0x36, + 0x4e, 0xd2, 0xe1, 0x12, 0x0f, 0xfb, 0x41, 0x52, 0x6b, 0x7d, 0x36, 0x06, + 0x18, 0x7c, 0x9d, 0xae, 0x68, 0xd5, 0xce, 0x9e, 0xd2, 0x79, 0x0a, 0xcb, + 0x6c, 0xaa, 0xf1, 0x5d, 0x6f, 0x27, 0xe8, 0x17, 0x0f, 0x09, 0xe7, 0x5f, + 0x14, 0x11, 0x5b, 0x45, 0xc0, 0x35, 0xc3, 0x51, 0xb8, 0x69, 0x0d, 0x00, + 0x89, 0x11, 0x01, 0x25, 0x35, 0x33, 0x2f, 0xb9, 0x96, 0xb6, 0xb6, 0x81, + 0xb5, 0xad, 0x1b, 0xaa, 0x10, 0x37, 0x38, 0x9f, 0xcf, 0x70, 0xf0, 0x1d, + 0x92, 0xf4, 0x9e, 0xf6, 0x8b, 0x5b, 0x5e, 0xf6, 0x02, 0x26, 0xa8, 0x68, + 0x35, 0x7f, 0x24, 0xed, 0xd7, 0xe6, 0x8d, 0x6e, 0x23, 0x72, 0x58, 0xd7, + 0xd8, 0xd8, 0x70, 0x20, 0x3c, 0xfd, 0x12, 0xde, 0xfa, 0x47, 0x3a, 0x23, + 0xd5, 0x48, 0xad, 0xaf, 0x7d, 0x36, 0x10, 0xca, 0xc0, 0xdf, 0x59, 0x00, + 0xb5, 0xdb, 0xbb, 0x4f, 0x74, 0x94, 0x91, 0xbb, 0x3d, 0x72, 0x6c, 0xac, + 0x6f, 0x60, 0x0e, 0xae, 0xc6, 0x9d, 0xc6, 0x08, 0x98, 0x25, 0x57, 0xbb, + 0x1b, 0xd6, 0xc9, 0x2f, 0xae, 0x1a, 0xee, 0x4b, 0x89, 0x82, 0x1a, 0xe1, + 0xf9, 0xb2, 0xa6, 0x2c, 0xfd, 0x11, 0x71, 0x69, 0x63, 0xa9, 0x2e, 0xf4, + 0xda, 0x3b, 0xb0, 0xeb, 0xb0, 0xfc, 0x0a, 0x8e, 0x4d, 0x6f, 0x37, 0x3a, + 0x96, 0x8d, 0x5c, 0xcf, 0x69, 0x71, 0x80, 0x23, 0x50, 0x49, 0x49, 0x4d, + 0x5f, 0xb1, 0xd4, 0xf2, 0x32, 0x32, 0x71, 0x40, 0xb4, 0x98, 0x7b, 0xe9, + 0x78, 0xf7, 0x83, 0xfb, 0xc0, 0x80, 0x0f, 0xc8, 0x2b, 0x1f, 0x63, 0x7f, + 0xd9, 0xf6, 0xef, 0xa3, 0xd3, 0xf5, 0x37, 0x7a, 0x5e, 0x99, 0x9d, 0x9f, + 0xd6, 0xe6, 0x50, 0x6a, 0x65, 0xf6, 0x36, 0xbf, 0xb5, 0x5a, 0x0b, 0xd8, + 0xf2, 0xe6, 0x58, 0xc3, 0xed, 0xda, 0x34, 0x21, 0xdf, 0x14, 0x3f, 0xb4, + 0x64, 0x6e, 0xf5, 0xf7, 0x9d, 0x9b, 0xfe, 0x94, 0x7b, 0x66, 0x66, 0x25, + 0x25, 0x35, 0xf3, 0x1c, 0x2b, 0x6b, 0x1a, 0x1e, 0xd3, 0x50, 0x6c, 0xfb, + 0x35, 0x93, 0xde, 0x50, 0xdb, 0x95, 0x6b, 0x6b, 0x34, 0x5b, 0xfa, 0x3a, + 0xdf, 0x07, 0xd3, 0x20, 0x12, 0x7c, 0xf8, 0x2a, 0xaf, 0x53, 0xc8, 0xc4, + 0x65, 0x85, 0xb8, 0xa4, 0xbe, 0xf6, 0x9d, 0xd6, 0xb4, 0xf1, 0x59, 0xfa, + 0x3a, 0xf8, 0x92, 0x7e, 0xe4, 0x3c, 0x02, 0xdb, 0x2d, 0x0f, 0xb1, 0xa4, + 0xba, 0xad, 0x43, 0x7b, 0x12, 0x22, 0x1b, 0x0d, 0x1e, 0x29, 0x29, 0xdb, + 0x65, 0xb9, 0x77, 0x58, 0xda, 0xa8, 0x6f, 0xe8, 0x59, 0xa7, 0xa8, 0xc0, + 0x5b, 0x22, 0x3c, 0x75, 0x4a, 0xdb, 0x45, 0x21, 0xf7, 0xe5, 0x56, 0xdf, + 0x54, 0xb8, 0xb6, 0xba, 0x8f, 0x27, 0x6e, 0x9b, 0x9d, 0xa7, 0x0a, 0x15, + 0x5b, 0x97, 0x53, 0x9d, 0xe9, 0x17, 0x1a, 0x9e, 0x0b, 0x84, 0x70, 0x0c, + 0xf1, 0xee, 0xf3, 0xf0, 0x42, 0x2e, 0xbb, 0x26, 0x99, 0xbc, 0x17, 0xdd, + 0x43, 0xdc, 0xd7, 0x33, 0x4f, 0x88, 0x49, 0x4d, 0x8c, 0x1b, 0x89, 0x68, + 0x71, 0x10, 0xd8, 0xda, 0x7b, 0x36, 0x15, 0xb6, 0x39, 0xec, 0x24, 0xef, + 0x3e, 0x4c, 0x02, 0x00, 0x54, 0x71, 0x9e, 0x20, 0xd4, 0x5e, 0xd6, 0x9e, + 0x43, 0x75, 0x89, 0xf0, 0x05, 0xca, 0xfd, 0x2e, 0x04, 0x83, 0x67, 0xb8, + 0x79, 0x10, 0x35, 0xf9, 0xa4, 0xa4, 0x59, 0x65, 0xce, 0xac, 0x3a, 0xcd, + 0x49, 0x99, 0x59, 0xbe, 0xad, 0x95, 0xd8, 0x2c, 0xa8, 0xec, 0x73, 0x7b, + 0x8f, 0xe2, 0xb5, 0x73, 0x62, 0xc6, 0xc3, 0x1a, 0xe6, 0xb4, 0x4e, 0xd9, + 0xee, 0x07, 0x70, 0xb1, 0xad, 0xb0, 0x00, 0xe0, 0x39, 0x09, 0x29, 0xb4, + 0xd1, 0x5e, 0x5f, 0xe9, 0x2a, 0x68, 0x66, 0x46, 0xbb, 0xea, 0x1c, 0x3f, + 0xcd, 0xbf, 0xdc, 0xa9, 0xe6, 0x38, 0x7a, 0x6d, 0x6f, 0xd0, 0x20, 0xf0, + 0xab, 0xb2, 0xf7, 0x36, 0x1e, 0xd7, 0x6d, 0x70, 0x32, 0x08, 0xe4, 0x42, + 0xd3, 0xc7, 0xb3, 0x17, 0xae, 0xb0, 0xd1, 0x61, 0x6d, 0x1d, 0x4c, 0x0f, + 0xd1, 0xbf, 0xf3, 0x6d, 0x8f, 0x1f, 0x34, 0x94, 0xe1, 0x5a, 0xc6, 0xf3, + 0x33, 0xac, 0x42, 0x03, 0x98, 0x58, 0xf9, 0xed, 0xd8, 0xa3, 0xe5, 0xd1, + 0x91, 0x89, 0x69, 0xa7, 0x25, 0xa5, 0x97, 0x36, 0x77, 0x34, 0xff, 0x00, + 0x05, 0x57, 0x1b, 0x20, 0x96, 0xbe, 0xb3, 0xa8, 0x3e, 0xe0, 0x3c, 0xc2, + 0x4a, 0x4c, 0xe7, 0x10, 0xcb, 0x09, 0x33, 0x30, 0x15, 0xbf, 0xaa, 0xd8, + 0xf5, 0xdb, 0xd5, 0xc5, 0xb6, 0x98, 0x65, 0x0d, 0x2e, 0x02, 0x26, 0x5e, + 0x7d, 0xad, 0x1f, 0x8a, 0xa3, 0x74, 0x1a, 0xc3, 0xab, 0x92, 0xcf, 0xce, + 0x1d, 0xdb, 0xf1, 0x5d, 0x0f, 0xd5, 0xec, 0x53, 0x8d, 0x8c, 0xcb, 0x8b, + 0x0b, 0xac, 0xb4, 0xfa, 0x85, 0xbc, 0x0d, 0x9c, 0x37, 0x54, 0x94, 0xec, + 0xe5, 0x65, 0x32, 0xbc, 0x93, 0x4b, 0x9a, 0xd1, 0x58, 0x63, 0x5c, 0xf7, + 0x9e, 0x46, 0xe2, 0x43, 0x47, 0xe0, 0xa8, 0x66, 0xb9, 0xd8, 0xd6, 0x01, + 0x57, 0xb5, 0xcf, 0xd4, 0x39, 0xa3, 0x5f, 0x1e, 0x38, 0x57, 0x1d, 0x4b, + 0x6d, 0xca, 0xb6, 0xe7, 0x99, 0x0f, 0xae, 0x76, 0xc7, 0x61, 0x22, 0x15, + 0x57, 0x63, 0xb5, 0xf2, 0xc0, 0xf2, 0xdd, 0xad, 0x86, 0x92, 0x74, 0xd7, + 0x5f, 0xf6, 0x24, 0xa6, 0xb9, 0xc9, 0xae, 0xc0, 0x47, 0xa6, 0x19, 0x63, + 0x01, 0x73, 0x9d, 0xb4, 0xc9, 0x20, 0x49, 0xf6, 0x85, 0x51, 0x8d, 0x65, + 0x9a, 0xbd, 0xb6, 0x17, 0x9a, 0xdd, 0x5b, 0x5a, 0xd9, 0x00, 0x87, 0x70, + 0x01, 0xfe, 0x4a, 0xb0, 0xfc, 0x7b, 0x59, 0x67, 0xb4, 0xfb, 0x6c, 0x6e, + 0xcd, 0x3f, 0xd7, 0xba, 0xbb, 0x46, 0x36, 0x5e, 0xdf, 0xa2, 0xd6, 0x59, + 0x5b, 0x40, 0x6b, 0xdd, 0xa1, 0x03, 0xf3, 0xa0, 0x84, 0x94, 0xe6, 0xb7, + 0x11, 0xb5, 0x52, 0x1d, 0x46, 0xe8, 0xac, 0x41, 0x69, 0xfa, 0x4d, 0x27, + 0x9e, 0x7b, 0xa1, 0xd5, 0xf6, 0x8a, 0x99, 0x60, 0xb2, 0xa2, 0x5c, 0xf1, + 0xb6, 0xa6, 0x93, 0x26, 0x4e, 0x9b, 0x9c, 0x7b, 0x7c, 0x42, 0xda, 0xfb, + 0x3d, 0x15, 0xbb, 0xd4, 0xb9, 0xc4, 0xbd, 0xda, 0x39, 0xd2, 0x48, 0xd5, + 0x40, 0xd9, 0x83, 0x93, 0x60, 0xa0, 0x50, 0xf7, 0x33, 0x69, 0x97, 0x97, + 0xc0, 0xd3, 0xc8, 0x6b, 0xaf, 0x8a, 0x4a, 0x68, 0xe1, 0x88, 0xdf, 0x49, + 0xc8, 0xd8, 0xf7, 0x90, 0xe1, 0x70, 0x1b, 0xcb, 0x74, 0x8f, 0x29, 0x82, + 0x16, 0x5d, 0x6d, 0xf4, 0x3a, 0xad, 0xd5, 0xee, 0x0e, 0xd9, 0x64, 0x87, + 0x0e, 0x1c, 0x26, 0x41, 0x1f, 0x15, 0xb8, 0xdc, 0x7c, 0x66, 0xd8, 0x5b, + 0x8f, 0x8c, 0x1a, 0x1b, 0xf4, 0x8b, 0x9d, 0xa3, 0x40, 0xe3, 0x55, 0x85, + 0xd5, 0x5a, 0x68, 0xea, 0xef, 0x9d, 0x37, 0xb5, 0xaf, 0xd3, 0xcc, 0x24, + 0xa7, 0x6b, 0x27, 0x0f, 0x6b, 0x8e, 0x43, 0x2d, 0x7b, 0xb1, 0xee, 0x7e, + 0xdd, 0xae, 0xd4, 0xd4, 0xe3, 0xa9, 0x69, 0xfe, 0x4c, 0x6a, 0x0a, 0xaf, + 0x9b, 0x8b, 0x63, 0x4b, 0x4d, 0x4e, 0x2d, 0x2e, 0x31, 0x5b, 0xc4, 0xb0, + 0xb8, 0x01, 0x20, 0xee, 0x6f, 0x75, 0x79, 0xae, 0xdd, 0x8a, 0x5c, 0x1c, + 0x3d, 0x3b, 0x58, 0xd6, 0x5d, 0x5c, 0x9d, 0x5a, 0xe1, 0xa1, 0xf2, 0x20, + 0xa2, 0xe0, 0x74, 0xe0, 0x40, 0xad, 0xad, 0x65, 0x6c, 0xac, 0x92, 0xc9, + 0x3b, 0x84, 0x9f, 0x29, 0xd7, 0xc9, 0x25, 0x20, 0xc5, 0xcb, 0xc9, 0xc7, + 0xb8, 0x51, 0x90, 0x3d, 0x7c, 0x8a, 0xbd, 0xaf, 0x74, 0x82, 0xe8, 0x70, + 0x9d, 0xae, 0x3c, 0x39, 0x1a, 0xde, 0x95, 0x4d, 0xcd, 0x07, 0x10, 0x3a, + 0xaa, 0xc1, 0xdc, 0x6a, 0x24, 0x96, 0x35, 0xd3, 0x3a, 0x4f, 0x1c, 0x98, + 0x51, 0x3d, 0x14, 0x6c, 0xba, 0xc2, 0xf6, 0xba, 0x1e, 0x5f, 0x71, 0x0e, + 0xdc, 0x63, 0xe9, 0x06, 0x8d, 0x34, 0x27, 0xcd, 0x58, 0xc1, 0xa7, 0x19, + 0xf1, 0x6b, 0x9c, 0x58, 0x4f, 0xe6, 0xc9, 0x80, 0x3f, 0x32, 0x7c, 0x4c, + 0xf8, 0x94, 0x94, 0xf2, 0x3f, 0x58, 0x6a, 0x7e, 0x56, 0x5d, 0x6c, 0x0d, + 0x6e, 0x38, 0xa9, 0x81, 0x8e, 0x7d, 0x8e, 0x21, 0xa4, 0x97, 0x12, 0xdf, + 0x71, 0x1d, 0xd1, 0x7a, 0x0d, 0xd5, 0x74, 0xdc, 0xbf, 0xb1, 0xdf, 0x6b, + 0x8b, 0xee, 0x20, 0x06, 0x01, 0xec, 0xdc, 0xee, 0x36, 0xbb, 0xb8, 0xf3, + 0xfb, 0x97, 0x43, 0xd5, 0xfe, 0xab, 0x57, 0x99, 0x7b, 0x6f, 0x75, 0x96, + 0x1b, 0x20, 0x7a, 0x91, 0xee, 0xdc, 0x07, 0xdc, 0x04, 0xf9, 0x2c, 0xca, + 0x7e, 0xae, 0xdd, 0x0e, 0xc6, 0xcb, 0x75, 0x6d, 0x65, 0x76, 0x13, 0x89, + 0x7b, 0x74, 0xb5, 0x84, 0x19, 0xf8, 0x16, 0xf8, 0x83, 0xf1, 0x49, 0x49, + 0x7a, 0xbd, 0x8d, 0xfb, 0x45, 0x2d, 0x6e, 0xcb, 0x1e, 0xe6, 0x3b, 0xda, + 0xe7, 0x43, 0xda, 0xe1, 0x05, 0x8e, 0x6c, 0xf8, 0x44, 0x18, 0xf1, 0x58, + 0x9d, 0x19, 0xd9, 0x18, 0x9d, 0x66, 0x5a, 0x07, 0xa6, 0xf3, 0xe9, 0xfb, + 0x80, 0xd5, 0x8f, 0x82, 0xdf, 0x87, 0x65, 0xd0, 0xdf, 0x85, 0x5b, 0xb6, + 0xb7, 0x30, 0x36, 0xd2, 0xc2, 0x5c, 0xc2, 0x0e, 0xe7, 0x34, 0x78, 0x12, + 0xdd, 0x27, 0xc5, 0x1d, 0xa2, 0xb7, 0x57, 0x58, 0x65, 0x6d, 0x63, 0x04, + 0x32, 0x62, 0x4c, 0xb7, 0xe8, 0xea, 0x3c, 0x92, 0x53, 0x65, 0xf8, 0xd8, + 0xb5, 0x1a, 0x32, 0x5d, 0x6b, 0x81, 0x71, 0xda, 0xf6, 0x81, 0x20, 0x16, + 0xea, 0x14, 0x9d, 0x91, 0x83, 0x8f, 0x68, 0xaf, 0xd4, 0x22, 0xc6, 0xe9, + 0x5e, 0xe1, 0xba, 0x41, 0x13, 0xc3, 0x4e, 0xba, 0x14, 0x1c, 0x9a, 0x72, + 0x4e, 0x2c, 0xb3, 0x6d, 0x81, 0xf6, 0x89, 0xa8, 0xbb, 0x69, 0x2c, 0x8d, + 0x7e, 0x29, 0x66, 0x57, 0x8e, 0x5b, 0x55, 0x8e, 0x70, 0x16, 0x38, 0x6c, + 0x0c, 0xfd, 0xd2, 0xc3, 0x0e, 0xd0, 0x76, 0xe0, 0x24, 0xa6, 0xc5, 0xde, + 0x93, 0x71, 0xec, 0x78, 0xba, 0x1b, 0xf4, 0x8b, 0x9b, 0x21, 0xf2, 0x3b, + 0x00, 0x7e, 0x0a, 0x0c, 0x68, 0xb3, 0x18, 0x0d, 0xfe, 0x9b, 0x1a, 0x0d, + 0xaf, 0x71, 0x3a, 0x96, 0x47, 0xb0, 0x7c, 0x4c, 0xa0, 0xda, 0xd7, 0xfa, + 0x66, 0xb6, 0x33, 0x79, 0xb3, 0xe8, 0xf8, 0xb4, 0x46, 0xd9, 0x3f, 0x08, + 0x43, 0xab, 0xed, 0x2e, 0xa1, 0x86, 0xb6, 0xba, 0xc6, 0x35, 0x8d, 0xda, + 0xdd, 0xa4, 0x8d, 0x3c, 0xc2, 0x4a, 0x42, 0xcb, 0x6f, 0x81, 0xb7, 0x7b, + 0x1e, 0xd7, 0xee, 0x69, 0x22, 0x0b, 0x8f, 0xf2, 0x7e, 0xf5, 0x6a, 0xfb, + 0x9c, 0xff, 0x00, 0x46, 0xcb, 0x60, 0x11, 0xa3, 0x8c, 0xc8, 0x20, 0x19, + 0x43, 0x75, 0xb6, 0x3d, 0x8d, 0x1b, 0x03, 0xec, 0x2e, 0x87, 0x38, 0xc6, + 0xd9, 0xe4, 0xeb, 0x3a, 0x9f, 0x20, 0xa5, 0x69, 0x61, 0xa5, 0x9b, 0x87, + 0xb8, 0x13, 0xb9, 0xbe, 0x71, 0x3c, 0x76, 0x49, 0x4b, 0xd7, 0x8a, 0x5c, + 0xe7, 0x97, 0x57, 0xe9, 0x56, 0x40, 0xdc, 0xf6, 0xb8, 0x12, 0xe6, 0xf1, + 0x01, 0xb2, 0x3e, 0xe0, 0x9f, 0xec, 0x59, 0x11, 0x3e, 0xa5, 0x7f, 0x64, + 0x8d, 0xde, 0xbf, 0x79, 0xe3, 0x6e, 0xc8, 0xe5, 0x2a, 0xeb, 0x70, 0x7e, + 0xe1, 0x24, 0x96, 0x81, 0xce, 0x9e, 0x33, 0x07, 0xe2, 0x9f, 0xd6, 0x1e, + 0xb7, 0xa1, 0x0e, 0xf5, 0xb8, 0xd9, 0x3e, 0xcf, 0xf3, 0xbc, 0x61, 0x25, + 0x39, 0x97, 0xe3, 0xde, 0xdb, 0x5f, 0x91, 0xd3, 0xa4, 0xf0, 0x59, 0x6b, + 0x9c, 0x0f, 0xb5, 0xda, 0x90, 0x59, 0x12, 0x7c, 0x51, 0x6a, 0xa3, 0x25, + 0xff, 0x00, 0xa7, 0xb5, 0xf6, 0x54, 0x49, 0xda, 0x6d, 0xb0, 0x80, 0xf8, + 0x89, 0x30, 0x1b, 0xc0, 0xd5, 0x4e, 0xec, 0x7b, 0xb7, 0xee, 0x05, 0xe7, + 0x1d, 0xc7, 0x70, 0xc7, 0x86, 0xb5, 0xe1, 0xbc, 0x31, 0xb1, 0xd9, 0x13, + 0x31, 0xd6, 0x1d, 0x96, 0x07, 0x16, 0xd5, 0x51, 0x0d, 0x32, 0x3f, 0x34, + 0x08, 0x9d, 0x7b, 0x93, 0xdd, 0x25, 0x36, 0x2c, 0x16, 0x1c, 0x02, 0x6a, + 0x7b, 0x8b, 0xc1, 0x1e, 0x99, 0x77, 0x2e, 0xf3, 0xf7, 0x78, 0xac, 0x91, + 0x91, 0x96, 0xcb, 0x5f, 0x4d, 0x75, 0xfa, 0x8f, 0xb7, 0xdc, 0xe7, 0x8e, + 0xd0, 0x3d, 0xda, 0xf6, 0x1a, 0x23, 0xdd, 0xd4, 0xf1, 0x0b, 0xe1, 0xf7, + 0x58, 0x1c, 0x38, 0x6b, 0x84, 0x83, 0x1e, 0x60, 0x84, 0xd5, 0x57, 0x87, + 0x6d, 0x64, 0xb5, 0x96, 0x99, 0x1f, 0x42, 0x61, 0xa6, 0x75, 0xd4, 0xb4, + 0xc9, 0xe5, 0x25, 0x29, 0xd6, 0x17, 0x06, 0xba, 0xe6, 0x0a, 0x9f, 0xba, + 0x24, 0x10, 0x5a, 0xe0, 0x39, 0x2d, 0x78, 0xd1, 0x5c, 0x98, 0x26, 0x35, + 0x6b, 0xc6, 0xe6, 0x19, 0xd0, 0xaa, 0x95, 0x62, 0xd8, 0xfd, 0xde, 0xe0, + 0xc6, 0x09, 0x86, 0x86, 0x1d, 0x23, 0x8d, 0x35, 0x3c, 0x79, 0xa3, 0x32, + 0x92, 0xda, 0xb7, 0xc9, 0x3f, 0xba, 0x75, 0x29, 0x29, 0xb0, 0xc3, 0xa3, + 0x59, 0xb8, 0x3c, 0x8e, 0x40, 0x20, 0x80, 0x4f, 0x3c, 0x2c, 0x5b, 0x9a, + 0xd6, 0x64, 0x5a, 0xc7, 0x0f, 0xce, 0x2b, 0x61, 0xd6, 0xb2, 0x6b, 0x2d, + 0x10, 0xed, 0xa6, 0x7e, 0x23, 0x55, 0x93, 0xd5, 0x88, 0x17, 0xb2, 0xf6, + 0x36, 0x45, 0xa2, 0x67, 0xcf, 0xba, 0x4a, 0x68, 0xd8, 0xdd, 0x8e, 0x20, + 0x70, 0xab, 0xee, 0xf4, 0xec, 0x6b, 0xaa, 0x25, 0xb6, 0x34, 0x82, 0x1c, + 0x3b, 0x10, 0x8f, 0xb4, 0x39, 0xdb, 0x9f, 0x21, 0xb3, 0x24, 0x28, 0x43, + 0x4d, 0x90, 0x06, 0x80, 0x49, 0xf9, 0xa4, 0xa7, 0xa0, 0xa2, 0xcc, 0x6f, + 0xad, 0x38, 0x5f, 0x67, 0xba, 0x2a, 0xea, 0xf8, 0xed, 0xf6, 0x3f, 0x8f, + 0x50, 0x2e, 0x2e, 0xd6, 0x5d, 0x83, 0x98, 0xea, 0xaf, 0x69, 0x65, 0x95, + 0x3a, 0x1e, 0xc3, 0xe4, 0xaf, 0x55, 0x75, 0xb8, 0xb9, 0x63, 0x26, 0x82, + 0x58, 0xfa, 0xcc, 0xb4, 0x8f, 0xc8, 0xba, 0x0e, 0xb1, 0x83, 0x8f, 0xf5, + 0x97, 0xa5, 0xb7, 0xac, 0x62, 0x34, 0x0c, 0xec, 0x71, 0x19, 0x35, 0x8e, + 0x5c, 0x07, 0x3f, 0x77, 0x64, 0x94, 0xf3, 0x75, 0x97, 0xd5, 0xd4, 0xd9, + 0x5d, 0x63, 0x73, 0x2d, 0x2d, 0x6b, 0x58, 0x78, 0x73, 0x5f, 0xdb, 0xf1, + 0x5d, 0xf1, 0x65, 0x74, 0x50, 0x21, 0xa1, 0xad, 0xa9, 0xa1, 0xb1, 0xe4, + 0x34, 0x5c, 0x97, 0x49, 0xa5, 0xb9, 0xae, 0xe9, 0x79, 0x4d, 0x12, 0xfc, + 0x6b, 0x9d, 0x4d, 0xdf, 0xd5, 0x00, 0xd9, 0x59, 0x2b, 0xb5, 0x6d, 0x4d, + 0x2d, 0x75, 0xb9, 0x4e, 0x8a, 0x48, 0xfa, 0x3d, 0xdc, 0x92, 0x9c, 0x8f, + 0x5d, 0xd6, 0xdc, 0xd0, 0xc6, 0x97, 0xbe, 0x36, 0x6a, 0x3c, 0xe7, 0xfd, + 0x4a, 0xba, 0xe3, 0x5d, 0x2d, 0x6f, 0xac, 0x5a, 0xc2, 0x00, 0xdc, 0xd3, + 0xa9, 0xf2, 0x08, 0x39, 0x39, 0x50, 0xe2, 0xcc, 0x7a, 0xc6, 0x3d, 0x7e, + 0x20, 0x7b, 0x88, 0xf3, 0x28, 0x45, 0xd4, 0xb9, 0xbb, 0x80, 0x16, 0x40, + 0xf7, 0x4f, 0x62, 0x92, 0x9b, 0x02, 0xea, 0x1d, 0x36, 0x07, 0x41, 0x27, + 0xb8, 0x4c, 0xeb, 0x60, 0xb9, 0xf5, 0x38, 0x3d, 0xc6, 0x04, 0x97, 0x47, + 0xe0, 0x55, 0x5b, 0x6a, 0x24, 0x7b, 0xa3, 0x67, 0x21, 0xbe, 0x3f, 0x14, + 0xa9, 0x6d, 0x4e, 0x2e, 0xa9, 0xcd, 0x0e, 0x64, 0xcc, 0x73, 0xa8, 0x49, + 0x4c, 0xad, 0x75, 0x4c, 0x25, 0xf7, 0xb1, 0xd2, 0x5e, 0x1a, 0x66, 0x43, + 0x4c, 0xf7, 0x1b, 0x8c, 0x21, 0x5a, 0xfa, 0x9b, 0x94, 0x1a, 0xc7, 0xfb, + 0x5f, 0xf4, 0x58, 0x0c, 0xb6, 0x4f, 0x8e, 0x9c, 0xf8, 0x22, 0x5d, 0x91, + 0x66, 0x3b, 0x18, 0xd6, 0xbb, 0x60, 0x98, 0x7f, 0x04, 0x1d, 0xc7, 0x4f, + 0x69, 0x9f, 0x82, 0x85, 0x19, 0xd8, 0x17, 0xdc, 0xea, 0x2c, 0xc7, 0x6b, + 0x2c, 0x78, 0xd9, 0xea, 0x56, 0xe0, 0xd7, 0x11, 0xf0, 0xf9, 0xf6, 0x49, + 0x4d, 0xb7, 0xe3, 0xd1, 0xe8, 0x45, 0xe7, 0x51, 0x05, 0x90, 0x76, 0xcf, + 0x97, 0x9a, 0xc2, 0xeb, 0x83, 0x12, 0x9c, 0x9c, 0x7b, 0xed, 0xa8, 0xd8, + 0x6d, 0x64, 0x06, 0x87, 0x96, 0x86, 0xc1, 0xe0, 0xf7, 0x5b, 0xec, 0xc3, + 0x0c, 0xa0, 0xb3, 0x1a, 0xd1, 0x94, 0xf6, 0xba, 0x5c, 0x1d, 0x1b, 0x9a, + 0xde, 0x7c, 0xf5, 0xf8, 0x2c, 0x1f, 0xac, 0xd8, 0xd7, 0x33, 0x12, 0x8c, + 0x87, 0xf2, 0xc7, 0x9a, 0xe2, 0x20, 0xed, 0xe4, 0x49, 0x49, 0x4e, 0x8e, + 0x2e, 0x4d, 0x6f, 0xc1, 0x0f, 0xf4, 0x99, 0xb2, 0x03, 0x4b, 0x20, 0xb8, + 0x81, 0x3a, 0x73, 0xca, 0xb5, 0x56, 0x46, 0x23, 0xdb, 0xe9, 0x10, 0x58, + 0xd2, 0x25, 0xa0, 0x1d, 0xba, 0xf7, 0x73, 0x0f, 0x61, 0xe6, 0xb3, 0xbe, + 0xae, 0x38, 0x3f, 0x11, 0xc1, 0xee, 0x3f, 0x48, 0x37, 0x68, 0x12, 0x35, + 0x92, 0x09, 0xf0, 0x57, 0x4b, 0x59, 0x8b, 0xea, 0x71, 0x68, 0x74, 0x10, + 0xc2, 0x08, 0x00, 0xbb, 0x5d, 0xad, 0x89, 0x3c, 0x14, 0x94, 0xc4, 0x74, + 0xfa, 0x83, 0xec, 0x76, 0x3e, 0x45, 0x85, 0xf7, 0x49, 0x79, 0x73, 0xa0, + 0xb8, 0x4c, 0x9d, 0xc2, 0x20, 0xf9, 0x7e, 0x55, 0x2c, 0x76, 0x54, 0x1a, + 0xef, 0x56, 0xe7, 0xba, 0xca, 0x37, 0x3d, 0xed, 0x32, 0xd2, 0x5a, 0xed, + 0x79, 0x11, 0x20, 0x21, 0x9b, 0xaa, 0x82, 0xe7, 0x17, 0x55, 0xb8, 0x8d, + 0x5d, 0xb5, 0x81, 0xb2, 0x3e, 0x8f, 0x78, 0x06, 0x13, 0x63, 0x64, 0xdc, + 0xfd, 0x2f, 0x64, 0x96, 0xfe, 0x8d, 0xe1, 0xe3, 0x56, 0xb1, 0xc7, 0x40, + 0x09, 0xe4, 0x49, 0x49, 0x4c, 0xe9, 0xcd, 0xb8, 0xb5, 0xed, 0x63, 0x9b, + 0x6d, 0x1e, 0xe6, 0x96, 0xd9, 0x0e, 0x88, 0xec, 0x40, 0x87, 0x04, 0x1f, + 0xb7, 0x59, 0xea, 0xb1, 0xaf, 0xa8, 0xd4, 0x6c, 0x24, 0x39, 0xad, 0xed, + 0x02, 0x37, 0xbf, 0x9f, 0xc1, 0x1b, 0xf6, 0x5b, 0x58, 0x1f, 0x60, 0x02, + 0x6c, 0x20, 0xc4, 0x40, 0x2d, 0x6f, 0x79, 0x72, 0x67, 0x30, 0x17, 0x01, + 0x74, 0xb5, 0xcd, 0xe4, 0x9d, 0x34, 0xf1, 0x09, 0x29, 0x6b, 0x6d, 0x67, + 0xda, 0x1d, 0x43, 0x5e, 0xd0, 0xf2, 0x01, 0x63, 0x1c, 0xe3, 0xb9, 0xf0, + 0x21, 0xd1, 0xdb, 0xfb, 0xd1, 0x69, 0x7d, 0x62, 0xb7, 0x31, 0xcd, 0x1b, + 0xa4, 0x11, 0xa6, 0xba, 0x2a, 0xbf, 0xa1, 0xdd, 0x0f, 0xac, 0x38, 0x87, + 0xc3, 0x1e, 0x47, 0xb8, 0x4f, 0x87, 0xe2, 0x8d, 0x5d, 0x1b, 0x5a, 0x5c, + 0xc1, 0xee, 0x26, 0x4b, 0xc7, 0xe7, 0x3b, 0xb9, 0x49, 0x49, 0x99, 0x73, + 0x9f, 0x0e, 0x2d, 0x77, 0xab, 0xc8, 0x3d, 0x9a, 0x11, 0x08, 0x6f, 0xd9, + 0x1e, 0xf2, 0xf6, 0xbd, 0xf5, 0x3b, 0x78, 0x0c, 0x92, 0x5a, 0x5c, 0x23, + 0x4d, 0x23, 0x95, 0x96, 0xfb, 0x1c, 0x32, 0xc9, 0xb5, 0xed, 0x6d, 0x71, + 0x2d, 0x69, 0x9e, 0x4c, 0x09, 0xd3, 0x95, 0x6a, 0x90, 0x1e, 0x2c, 0x0e, + 0x33, 0xea, 0x54, 0x5a, 0xd6, 0x10, 0x4b, 0x4b, 0x9a, 0x77, 0x8e, 0x38, + 0xd0, 0x14, 0x94, 0x84, 0xe7, 0xd8, 0xdc, 0xf1, 0x55, 0x75, 0x7a, 0x0c, + 0x2d, 0x1b, 0xb2, 0x6c, 0xfd, 0x2b, 0xb6, 0xf7, 0xdb, 0x32, 0xd1, 0xe6, + 0x85, 0x73, 0x8e, 0x65, 0x85, 0x86, 0xfb, 0x9e, 0x64, 0x87, 0xba, 0xe2, + 0x59, 0x5f, 0x83, 0x03, 0x23, 0x68, 0xf3, 0x43, 0xb3, 0xa6, 0xe6, 0xdd, + 0x91, 0x55, 0xcd, 0xb4, 0x36, 0x59, 0xfa, 0x46, 0x98, 0x2e, 0x0e, 0x06, + 0x24, 0x37, 0xfa, 0xa1, 0x5c, 0xa7, 0x1e, 0x83, 0x68, 0xad, 0xbe, 0xa9, + 0x0d, 0x06, 0x64, 0x87, 0x82, 0x5b, 0xc7, 0xc1, 0x25, 0x22, 0x65, 0x14, + 0xe3, 0xb6, 0x86, 0xe4, 0x3f, 0xd4, 0x2f, 0x70, 0x0c, 0xf4, 0x64, 0x6a, + 0x1d, 0x3b, 0x9f, 0xae, 0x9e, 0x05, 0x58, 0xc7, 0x2e, 0xfb, 0x3b, 0x2f, + 0x70, 0x10, 0xeb, 0x4b, 0xf6, 0xf9, 0x4f, 0x09, 0xf2, 0x3a, 0x3b, 0x58, + 0xf1, 0x7e, 0xe1, 0xe8, 0x81, 0x15, 0x36, 0x0c, 0xb3, 0xdc, 0x1d, 0x04, + 0xfc, 0x94, 0x89, 0x9c, 0x70, 0xf6, 0x3a, 0x65, 0xc2, 0x07, 0xee, 0xc0, + 0xe0, 0x0f, 0x04, 0x94, 0xcb, 0xa8, 0x3c, 0xb7, 0x2c, 0xd1, 0x57, 0xd0, + 0x6b, 0x1a, 0xe0, 0xf3, 0x33, 0x07, 0x83, 0xe7, 0x3a, 0x25, 0xf6, 0x5c, + 0xbf, 0xb0, 0x7d, 0xb3, 0x6b, 0x38, 0x98, 0x9f, 0xce, 0xdd, 0x1f, 0x4a, + 0x7c, 0x35, 0x49, 0xb6, 0xdd, 0x91, 0x8e, 0x06, 0x45, 0x63, 0x65, 0x7b, + 0xa1, 0xd2, 0x01, 0x6b, 0x98, 0x34, 0xdc, 0xe3, 0xc0, 0x12, 0x83, 0xe8, + 0xe4, 0xfa, 0x1e, 0x97, 0xac, 0xdf, 0x42, 0x3d, 0x6d, 0xb2, 0x3c, 0x3f, + 0xbf, 0x44, 0x94, 0x8e, 0xbc, 0x83, 0x5e, 0x45, 0xc2, 0xda, 0xc3, 0x2b, + 0xac, 0x82, 0x1c, 0xd2, 0x1c, 0x49, 0x3a, 0x30, 0x13, 0x3c, 0xfc, 0x94, + 0x9d, 0x57, 0xda, 0x31, 0x9d, 0x12, 0xc6, 0xb6, 0x1c, 0x20, 0xeb, 0xbb, + 0xc1, 0x49, 0xd4, 0xf4, 0xfa, 0x6b, 0x71, 0xb5, 0xfe, 0x9b, 0x43, 0xa4, + 0x30, 0xcb, 0x9c, 0xf7, 0x9e, 0x7b, 0xfe, 0x6f, 0x0a, 0xb3, 0x2f, 0xf4, + 0x2b, 0xb5, 0x8e, 0x21, 0xe5, 0xc6, 0x0b, 0xc0, 0x3b, 0x40, 0xd4, 0x8e, + 0x12, 0x53, 0x7f, 0x0b, 0x17, 0xa7, 0x8a, 0x4b, 0xae, 0xa5, 0xb6, 0x64, + 0xb4, 0xfe, 0x92, 0xc9, 0x9f, 0xa3, 0xa8, 0x04, 0x15, 0x58, 0x64, 0x8b, + 0xf2, 0xde, 0x31, 0xe8, 0x05, 0x84, 0x81, 0x63, 0x9b, 0xa3, 0xfe, 0xf8, + 0x3a, 0x7c, 0x12, 0xa5, 0xd6, 0xdb, 0x63, 0x9f, 0xba, 0x28, 0x78, 0x02, + 0x40, 0x22, 0x63, 0x93, 0x04, 0x29, 0x5b, 0x61, 0xc7, 0x86, 0x62, 0x09, + 0x73, 0xcc, 0x3e, 0x1b, 0xba, 0x27, 0xb9, 0xe1, 0x25, 0x36, 0xf7, 0x52, + 0x5c, 0xc0, 0x5b, 0xba, 0x4c, 0x06, 0x92, 0x41, 0x31, 0xe4, 0x9c, 0xd4, + 0x3d, 0x27, 0x58, 0xe1, 0xa9, 0x30, 0xd6, 0x08, 0x01, 0xa3, 0xb0, 0x0a, + 0xb6, 0x6e, 0x55, 0x58, 0x0d, 0xa9, 0xa5, 0xcd, 0x7e, 0x4d, 0xae, 0x1e, + 0xa8, 0x60, 0x32, 0x1a, 0xe1, 0xb6, 0x62, 0x78, 0x94, 0x27, 0x64, 0x7a, + 0xcd, 0x70, 0xac, 0xec, 0x78, 0xfd, 0xef, 0xcc, 0x81, 0x20, 0xc3, 0xd2, + 0x52, 0x46, 0xd7, 0xf4, 0x83, 0xb4, 0x73, 0x3b, 0x79, 0x1d, 0x16, 0x75, + 0xe3, 0xd6, 0xe9, 0x62, 0xc0, 0x7f, 0x99, 0xb4, 0xb4, 0xf9, 0x02, 0xaf, + 0xb3, 0x73, 0x1e, 0x03, 0xed, 0x16, 0xb8, 0x8d, 0x5c, 0x04, 0x48, 0x23, + 0x42, 0xb3, 0xb0, 0x01, 0xb4, 0xe6, 0x62, 0x13, 0xf4, 0x9a, 0x5c, 0x07, + 0x9b, 0x4a, 0x4a, 0x73, 0x9c, 0x77, 0x09, 0xec, 0xa6, 0xd6, 0xc9, 0x9e, + 0x22, 0x0c, 0xf6, 0xe1, 0x43, 0x7c, 0x36, 0x23, 0xdc, 0x3b, 0xf0, 0xad, + 0x62, 0x60, 0x66, 0xe6, 0xee, 0x6d, 0x15, 0x17, 0x07, 0x00, 0x03, 0x8e, + 0x8d, 0xfb, 0xca, 0x4a, 0x71, 0xed, 0x79, 0x32, 0xef, 0x12, 0xb6, 0x3e, + 0xab, 0x65, 0x66, 0x63, 0x67, 0xb4, 0xd2, 0xc3, 0x65, 0x4f, 0x1b, 0x6f, + 0x60, 0xe3, 0x69, 0xef, 0xf2, 0x56, 0xbf, 0x61, 0xf4, 0x7e, 0x96, 0xcf, + 0x5b, 0xad, 0xe5, 0x0b, 0x6d, 0x1a, 0xb7, 0x12, 0x83, 0x24, 0xfc, 0x48, + 0x59, 0x5d, 0x5b, 0xeb, 0x0d, 0x8e, 0x68, 0xc7, 0xe9, 0xb5, 0x0c, 0x0c, + 0x62, 0x38, 0x67, 0xd3, 0x23, 0xf9, 0x4e, 0x49, 0x4f, 0x5b, 0x87, 0xd3, + 0x30, 0x3a, 0x5e, 0x76, 0x45, 0x94, 0xee, 0x79, 0xcb, 0x26, 0xd6, 0x57, + 0x1f, 0xa3, 0x64, 0x78, 0x79, 0xea, 0xa7, 0x91, 0x94, 0xfb, 0x6c, 0xda, + 0xee, 0x46, 0x9b, 0x47, 0x65, 0x9d, 0xf5, 0x3b, 0x2e, 0xcc, 0xce, 0x9a, + 0xfc, 0x6c, 0x97, 0x6e, 0x34, 0xba, 0x2a, 0x79, 0x3e, 0xe2, 0x0e, 0xb1, + 0xf2, 0x56, 0x32, 0x3f, 0x41, 0x7b, 0xaa, 0xe7, 0x69, 0x27, 0x6b, 0x74, + 0x3f, 0xee, 0x09, 0x29, 0x7c, 0xbb, 0x47, 0xd9, 0xc3, 0x36, 0x90, 0xe3, + 0xf9, 0xdd, 0xa3, 0xc1, 0x63, 0xfd, 0xa1, 0xcd, 0xb4, 0xd4, 0x6c, 0xf6, + 0x3b, 0x50, 0x79, 0xd7, 0xb2, 0xd1, 0x19, 0x16, 0xee, 0xd8, 0x6a, 0x26, + 0x79, 0x70, 0x97, 0x4c, 0xf1, 0xa2, 0xab, 0x76, 0x25, 0x75, 0x97, 0xdb, + 0x61, 0x63, 0x18, 0x35, 0xdd, 0x60, 0x24, 0x36, 0x78, 0xd1, 0x25, 0x3a, + 0x78, 0x95, 0x0c, 0xdc, 0x47, 0xb2, 0x7f, 0x4b, 0x5f, 0xb9, 0xa0, 0x1f, + 0xa4, 0xd3, 0xe2, 0xa8, 0x53, 0x7d, 0x6c, 0x73, 0x8c, 0xf7, 0xd8, 0xdd, + 0xaf, 0x03, 0xdc, 0x3b, 0x3a, 0x44, 0xab, 0xbd, 0x36, 0xbb, 0x2a, 0xca, + 0x6d, 0xed, 0xb3, 0xf4, 0x67, 0xbb, 0x47, 0xb5, 0xcd, 0xe2, 0x13, 0x75, + 0x8e, 0x98, 0xe6, 0xda, 0x72, 0xf1, 0xda, 0x3d, 0x32, 0x37, 0x10, 0x39, + 0xdc, 0x4e, 0xb0, 0x0e, 0x9d, 0xd2, 0x53, 0x5f, 0x26, 0xb7, 0x13, 0xea, + 0x00, 0x0f, 0xab, 0x00, 0xb8, 0xbc, 0x00, 0x0f, 0xf1, 0xfb, 0xd4, 0x19, + 0x5b, 0x2a, 0xdd, 0x66, 0x45, 0x72, 0xd0, 0x09, 0xb2, 0x34, 0x2e, 0x68, + 0xec, 0x07, 0x99, 0x53, 0xae, 0xa1, 0x75, 0x76, 0x52, 0xf3, 0xb8, 0x08, + 0x87, 0x34, 0xeb, 0x20, 0x79, 0x01, 0x09, 0x56, 0xd7, 0xd7, 0x57, 0xd9, + 0xde, 0xd3, 0xf6, 0x76, 0x09, 0xdc, 0x40, 0xe7, 0xb4, 0x34, 0x6a, 0x75, + 0x49, 0x4c, 0xe9, 0xb0, 0x97, 0x9b, 0x29, 0x63, 0x69, 0xae, 0x40, 0x63, + 0x1a, 0x1c, 0xc2, 0x23, 0xe4, 0x3e, 0x6a, 0xf6, 0x5d, 0xd8, 0x59, 0x38, + 0xfe, 0x8f, 0x52, 0x60, 0x75, 0x4e, 0xd6, 0x41, 0x92, 0xd2, 0x0c, 0x6e, + 0xd1, 0x51, 0xc2, 0xaf, 0xd2, 0x7c, 0x5a, 0x5c, 0xf2, 0xf7, 0x6e, 0x36, + 0x58, 0x34, 0x24, 0xf8, 0x41, 0x31, 0xa2, 0x1e, 0x79, 0x26, 0x80, 0xca, + 0x84, 0xda, 0xe6, 0x96, 0x90, 0x08, 0x27, 0x53, 0xe0, 0x21, 0x25, 0x2f, + 0x8d, 0xd3, 0x2d, 0xe9, 0x17, 0xbd, 0xf5, 0xd8, 0x5f, 0x8a, 0x46, 0xea, + 0x9e, 0x3f, 0xef, 0xfd, 0xa3, 0xcd, 0x3e, 0x4e, 0xdc, 0x96, 0xbd, 0xcc, + 0x7f, 0xa3, 0x6d, 0x90, 0x0c, 0x1d, 0xf0, 0xdf, 0x6c, 0xfc, 0x9d, 0x27, + 0xcd, 0x37, 0x41, 0xea, 0x6d, 0x7e, 0x39, 0xc5, 0xc8, 0x1a, 0x34, 0x96, + 0xc3, 0xb8, 0x8f, 0x9a, 0x36, 0x56, 0x17, 0xd9, 0xfd, 0xf5, 0x01, 0xf6, + 0x62, 0x64, 0x90, 0x60, 0xb4, 0x7e, 0x70, 0xfe, 0xe4, 0x94, 0xd3, 0xa1, + 0xed, 0x0d, 0x6b, 0xec, 0x64, 0xb1, 0xc4, 0x34, 0x07, 0x6a, 0x20, 0x0f, + 0x7b, 0xa3, 0xcb, 0x84, 0x6b, 0xdc, 0x5e, 0xe1, 0x53, 0x1e, 0x41, 0x20, + 0x6d, 0xd8, 0x20, 0x6c, 0xe3, 0xfd, 0xca, 0xb5, 0x99, 0x53, 0x6d, 0x75, + 0xb9, 0xc4, 0x07, 0x4f, 0xf3, 0x70, 0x5b, 0xee, 0x27, 0x9d, 0x35, 0xd7, + 0x55, 0x6f, 0x02, 0x81, 0x60, 0x7b, 0x85, 0x25, 0xb6, 0x31, 0xc4, 0x81, + 0xc4, 0x99, 0x8f, 0x3f, 0x0d, 0x12, 0x53, 0x62, 0xa7, 0x56, 0xeb, 0x1b, + 0x73, 0xcb, 0xf6, 0x35, 0xb1, 0xa3, 0xb4, 0x25, 0x9a, 0x6d, 0x8e, 0x3b, + 0x27, 0x7d, 0x98, 0xa5, 0xdf, 0xa4, 0x00, 0x3e, 0xc7, 0x7e, 0x74, 0x8d, + 0x47, 0x1f, 0x04, 0x28, 0x73, 0x85, 0xd4, 0x3d, 0xa1, 0x9e, 0x90, 0x90, + 0xd1, 0xa0, 0xd7, 0x90, 0x48, 0x55, 0x6d, 0xca, 0x65, 0x6d, 0x0e, 0xdd, + 0x2d, 0x63, 0x37, 0x58, 0x20, 0x39, 0x84, 0x89, 0x2e, 0x20, 0x91, 0xf0, + 0x00, 0x24, 0xa6, 0xe6, 0x45, 0x6f, 0x63, 0x2d, 0xb6, 0x0f, 0xaa, 0xc6, + 0x13, 0x58, 0x6e, 0xba, 0x4f, 0xdc, 0x50, 0xeb, 0xcd, 0x2d, 0xc2, 0xaa, + 0xf6, 0x80, 0xd8, 0x8d, 0xa3, 0xce, 0x7b, 0xf2, 0xa9, 0x60, 0xf5, 0x0b, + 0x60, 0x1c, 0x89, 0x34, 0x5a, 0x47, 0xa4, 0x01, 0x92, 0x0f, 0x25, 0xcc, + 0x3d, 0x80, 0x95, 0xa7, 0x97, 0x8c, 0xdc, 0x8a, 0x1c, 0x03, 0x88, 0x2d, + 0x1b, 0xbd, 0xb0, 0x0b, 0x80, 0x1e, 0xe2, 0x92, 0x9a, 0xb7, 0xbd, 0xbe, + 0xb5, 0xc0, 0x34, 0x3e, 0xca, 0x49, 0xf6, 0x98, 0xe1, 0xda, 0x82, 0x3e, + 0x45, 0x0f, 0x13, 0xa9, 0xd0, 0xfc, 0x90, 0xe1, 0x0c, 0x66, 0x81, 0x8d, + 0x3c, 0xba, 0x3d, 0xb1, 0xf7, 0x27, 0xbe, 0xcc, 0x6d, 0x98, 0xf9, 0xad, + 0xc8, 0x0c, 0x63, 0xda, 0x18, 0xe3, 0x63, 0x60, 0xb8, 0xd6, 0x3d, 0x3f, + 0x77, 0x81, 0xd0, 0x2a, 0x17, 0x9f, 0xb2, 0xb8, 0x9a, 0x03, 0x1c, 0xcb, + 0xcc, 0xb5, 0xf3, 0xc9, 0x3f, 0x9a, 0x92, 0x9b, 0x39, 0xb9, 0x42, 0x9b, + 0xc3, 0x2a, 0xac, 0xd6, 0x43, 0x77, 0x56, 0xee, 0x77, 0x3b, 0x8e, 0x54, + 0xb1, 0xee, 0x37, 0xfe, 0x9d, 0xee, 0x0d, 0xb0, 0x18, 0x12, 0x60, 0xee, + 0xed, 0xdf, 0x5e, 0x11, 0x33, 0x5b, 0x51, 0x0c, 0xb9, 0xd2, 0xd2, 0x1a, + 0xc3, 0xb8, 0x72, 0x01, 0x13, 0x1f, 0x8a, 0xa7, 0x75, 0x85, 0x84, 0x31, + 0xec, 0xda, 0xd3, 0x0f, 0x6b, 0x5a, 0x41, 0xdd, 0xb4, 0xc1, 0x3a, 0x7e, + 0x29, 0x29, 0xd4, 0xce, 0xea, 0x0c, 0xaa, 0xb7, 0xb7, 0xd4, 0x3b, 0xcf, + 0x31, 0xf9, 0xd0, 0x20, 0xee, 0x9d, 0x00, 0xfe, 0x2a, 0x1d, 0x3e, 0xc1, + 0x77, 0x4f, 0x93, 0x22, 0xc0, 0xf2, 0x1f, 0x3c, 0xc8, 0x59, 0x79, 0x4e, + 0xb2, 0xdc, 0xa6, 0x31, 0xe0, 0x59, 0x50, 0x06, 0xc9, 0x20, 0x7b, 0x83, + 0x74, 0x04, 0x1f, 0x1e, 0xcb, 0x47, 0xa7, 0xe4, 0x0b, 0xb1, 0x67, 0x67, + 0xa6, 0xe2, 0xe3, 0xb8, 0x6b, 0xf9, 0x4f, 0x29, 0x29, 0x63, 0x95, 0x4d, + 0x96, 0xba, 0xa2, 0x4b, 0x40, 0x1b, 0xac, 0x2d, 0x88, 0x3b, 0x3b, 0x1f, + 0x25, 0x67, 0xd7, 0xc8, 0xdf, 0xb2, 0x1b, 0xeb, 0xc6, 0xcf, 0x4f, 0xfe, + 0x0a, 0x37, 0x6c, 0xf0, 0xdd, 0x0b, 0x2f, 0x18, 0xd2, 0xc7, 0xe4, 0x55, + 0x59, 0x36, 0xde, 0xe7, 0xee, 0x77, 0xa7, 0x06, 0x24, 0xe8, 0xd6, 0xee, + 0x22, 0x75, 0xee, 0xb4, 0x3f, 0x66, 0x9f, 0x4f, 0xd2, 0xf5, 0x1b, 0xf6, + 0x88, 0xdd, 0xb6, 0x7f, 0x4b, 0xe9, 0x73, 0xb3, 0x74, 0xf3, 0x29, 0x29, + 0xb2, 0xea, 0x29, 0xb3, 0x65, 0x6e, 0x6b, 0x6c, 0x70, 0x6c, 0x82, 0xee, + 0x34, 0xe7, 0x5f, 0x15, 0x45, 0xd9, 0x8d, 0x66, 0x51, 0xa5, 0xb5, 0x07, + 0xb8, 0x59, 0xe9, 0x1e, 0xda, 0xc0, 0x3f, 0x70, 0x95, 0x13, 0xd5, 0x5d, + 0x9c, 0xdf, 0x44, 0x51, 0xe8, 0xd2, 0xcf, 0xe6, 0xcc, 0xfb, 0x89, 0x55, + 0x73, 0x30, 0xb1, 0xdb, 0x8f, 0x8f, 0x96, 0xf2, 0xe1, 0x95, 0x75, 0x9e, + 0xf2, 0xd8, 0x03, 0x70, 0x1a, 0x02, 0x47, 0xdd, 0x3f, 0x7a, 0x4a, 0x75, + 0x3a, 0x8e, 0x6b, 0xb1, 0xaf, 0xa3, 0x1a, 0xaa, 0xe5, 0xcf, 0x69, 0x73, + 0x9c, 0x41, 0x86, 0xf6, 0x1f, 0xed, 0x55, 0xaa, 0xea, 0x1b, 0x98, 0x2d, + 0xa5, 0xed, 0x24, 0x92, 0xd7, 0x16, 0xf1, 0xb8, 0x7d, 0xca, 0x9d, 0x5d, + 0x27, 0x25, 0xb5, 0xbd, 0xd9, 0x77, 0xba, 0xba, 0x1c, 0xe2, 0x1e, 0xdb, + 0x8b, 0xac, 0x99, 0x9f, 0xa0, 0x36, 0xc8, 0x74, 0x77, 0x94, 0x4a, 0xef, + 0xc3, 0x6b, 0xfd, 0x3c, 0x6a, 0x59, 0xea, 0x82, 0xd0, 0xd2, 0xe2, 0x41, + 0x76, 0xc2, 0x35, 0xdc, 0xf1, 0xaf, 0x9c, 0xa4, 0xa6, 0xc7, 0x4d, 0x18, + 0x58, 0xf7, 0x3e, 0xcb, 0xd9, 0x65, 0xec, 0xc8, 0x70, 0x16, 0x39, 0xce, + 0xd1, 0xae, 0x07, 0x99, 0xe4, 0x00, 0xa3, 0x94, 0xce, 0x8d, 0x87, 0xd4, + 0x85, 0x78, 0xcc, 0x78, 0x7d, 0xbb, 0x9a, 0xe3, 0xb8, 0x90, 0xd9, 0x83, + 0xee, 0x99, 0x27, 0xc9, 0x42, 0xec, 0x0b, 0x9b, 0x95, 0x7e, 0x50, 0xbd, + 0xce, 0xae, 0xd2, 0x1c, 0xda, 0x81, 0x12, 0xe7, 0x81, 0x04, 0x9d, 0x04, + 0x34, 0x4e, 0x81, 0x12, 0xea, 0x9b, 0x91, 0x59, 0x61, 0x6f, 0xa6, 0xe7, + 0x37, 0x61, 0xb4, 0x90, 0x1c, 0xe6, 0x8f, 0xf8, 0x4e, 0xc1, 0x25, 0x27, + 0xd8, 0x2a, 0xc7, 0x3b, 0x5c, 0x5e, 0xe2, 0xe1, 0x13, 0xa8, 0x68, 0xd0, + 0xf3, 0xe6, 0xab, 0x61, 0x74, 0xec, 0xaa, 0xb3, 0xbe, 0xd2, 0xc0, 0x1e, + 0xcb, 0x0f, 0xba, 0x0e, 0xa1, 0xa7, 0x99, 0x56, 0xdd, 0x65, 0x95, 0x07, + 0x51, 0x8a, 0x0b, 0x0d, 0x0d, 0x60, 0x0e, 0x71, 0xdc, 0x5c, 0x0b, 0x41, + 0x92, 0x78, 0x3a, 0xa1, 0xe4, 0x65, 0x5f, 0x55, 0x55, 0x3c, 0xb4, 0x3d, + 0x8e, 0x27, 0xd5, 0x6f, 0xd1, 0x2e, 0x3f, 0x10, 0x92, 0x9a, 0x59, 0x38, + 0xf8, 0x78, 0x39, 0x0f, 0x7b, 0xa7, 0x21, 0xc4, 0xcb, 0x58, 0x07, 0xb0, + 0x7c, 0x4a, 0xa9, 0x97, 0xd5, 0xfa, 0x96, 0x43, 0x4d, 0x62, 0xc3, 0x5b, + 0x38, 0x15, 0x33, 0xda, 0x23, 0xc3, 0x45, 0xd7, 0x63, 0x5b, 0xd3, 0x72, + 0x71, 0x98, 0xd3, 0x5b, 0x59, 0xea, 0x0d, 0x1a, 0xe5, 0x9b, 0xd5, 0x7e, + 0xac, 0xd7, 0x6b, 0x0d, 0x98, 0x44, 0xb1, 0xfa, 0x1d, 0xa7, 0x8d, 0x3c, + 0x12, 0x53, 0xc7, 0xb8, 0x58, 0xe7, 0x06, 0xd6, 0xd2, 0xf7, 0x38, 0xeb, + 0xa1, 0x25, 0x56, 0xbc, 0x17, 0x5a, 0x7c, 0xa0, 0x0f, 0x92, 0xd7, 0xbb, + 0x07, 0x24, 0x9b, 0x2b, 0x76, 0xfa, 0xae, 0xd3, 0xd7, 0x63, 0x7d, 0xbb, + 0x98, 0x0c, 0xee, 0x1f, 0xc5, 0x67, 0xbf, 0x1a, 0xc6, 0xd8, 0x5a, 0xe0, + 0x49, 0x9e, 0x52, 0x53, 0xd2, 0x7d, 0x5f, 0xbb, 0x13, 0x16, 0x9c, 0x56, + 0x1a, 0xdc, 0x72, 0x0e, 0xfb, 0x1d, 0x68, 0xe1, 0xbb, 0xbe, 0x8b, 0x4f, + 0xc6, 0x16, 0xfe, 0x6d, 0x7f, 0x68, 0xa5, 0x99, 0x54, 0x38, 0x89, 0x1e, + 0xe0, 0x39, 0x2d, 0xf0, 0x55, 0x19, 0xd3, 0x0b, 0xa9, 0xa6, 0xda, 0x00, + 0x60, 0xa2, 0xa6, 0x31, 0xf6, 0x68, 0xed, 0xcd, 0x68, 0xf7, 0x40, 0xf0, + 0x0e, 0x2b, 0x53, 0x05, 0x84, 0x97, 0x53, 0x32, 0xc2, 0xd0, 0xea, 0xc1, + 0x32, 0x67, 0xbf, 0xc8, 0xa4, 0xa7, 0x1a, 0x96, 0xec, 0x7b, 0xea, 0x6d, + 0xbe, 0x93, 0xc0, 0x6c, 0x70, 0xe3, 0xb4, 0xfe, 0x08, 0x87, 0xf4, 0x8e, + 0x2c, 0xb8, 0xcc, 0xf2, 0xed, 0x0c, 0xc7, 0x70, 0x11, 0xb3, 0x28, 0x38, + 0xf9, 0x4d, 0x7e, 0xd6, 0xb8, 0xd9, 0xed, 0x69, 0x76, 0x81, 0xbf, 0x1d, + 0xa3, 0xb4, 0x28, 0x32, 0x9c, 0xbb, 0xa6, 0xcd, 0xec, 0x2c, 0xac, 0x10, + 0x5a, 0xdd, 0x65, 0xc3, 0xb8, 0x3d, 0xbe, 0x69, 0x29, 0x8d, 0xce, 0xc6, + 0xa3, 0x5c, 0x73, 0x63, 0x5a, 0xef, 0x76, 0xc8, 0xd5, 0xce, 0x1a, 0x6d, + 0x03, 0x85, 0xa3, 0x8d, 0xe9, 0xe4, 0x62, 0xfa, 0x0e, 0x92, 0x1c, 0x35, + 0x0e, 0x10, 0x7e, 0x0b, 0x3d, 0xb5, 0xff, 0x00, 0x86, 0xd8, 0x0b, 0xa3, + 0x69, 0x71, 0xfb, 0xcf, 0x70, 0x8b, 0x8c, 0xeb, 0xc5, 0xaf, 0x7b, 0x5a, + 0x0d, 0x0c, 0xfe, 0x6c, 0x37, 0xbc, 0x8d, 0x52, 0x53, 0x5a, 0xca, 0x2d, + 0xa6, 0xff, 0x00, 0x44, 0x45, 0x75, 0xb7, 0x50, 0x09, 0x00, 0x38, 0xbb, + 0x4f, 0xfb, 0xea, 0x70, 0xc6, 0x39, 0xe4, 0x3d, 0xce, 0x6b, 0x9a, 0x0b, + 0xc6, 0xd8, 0x12, 0x00, 0xfa, 0x3a, 0xf2, 0xb5, 0xad, 0xa5, 0x99, 0xb4, + 0x36, 0xc0, 0x40, 0x80, 0x7d, 0xd0, 0xb3, 0x9f, 0x53, 0x9e, 0xc9, 0xc7, + 0x21, 0xdb, 0x5d, 0xed, 0x71, 0xf0, 0xe0, 0xa4, 0xa6, 0x9b, 0xb1, 0x69, + 0x7c, 0x5a, 0x5b, 0x0d, 0x64, 0xba, 0x5f, 0x3e, 0xd2, 0x4e, 0x90, 0x3c, + 0x50, 0x9f, 0x46, 0x16, 0x5d, 0x87, 0x21, 0x86, 0xc6, 0x38, 0x38, 0x13, + 0x63, 0x0b, 0xf6, 0x3c, 0x0e, 0xd0, 0xfd, 0x3e, 0xe5, 0x69, 0xe2, 0xef, + 0x50, 0xbe, 0xcd, 0xa5, 0xae, 0x30, 0xed, 0xd3, 0x11, 0x1e, 0x03, 0xc9, + 0x58, 0xc7, 0xc0, 0x69, 0x60, 0x76, 0x33, 0x5d, 0x66, 0xbf, 0x48, 0x9d, + 0x8d, 0x03, 0xc0, 0x78, 0xe8, 0x92, 0x9c, 0x76, 0xd1, 0x53, 0x6c, 0x15, + 0x97, 0x39, 0xd6, 0x38, 0x82, 0xc2, 0x18, 0x4e, 0xa4, 0xf9, 0x79, 0xad, + 0x9a, 0xb2, 0x28, 0x7d, 0x67, 0x1a, 0xd0, 0x66, 0xc0, 0x61, 0xa7, 0x49, + 0xec, 0x79, 0x54, 0x1d, 0x5e, 0x55, 0x1d, 0x41, 0x99, 0xa5, 0xae, 0xad, + 0xad, 0x26, 0xb7, 0x33, 0xc4, 0x90, 0x76, 0xba, 0x15, 0xab, 0xdb, 0x55, + 0xdb, 0x5d, 0x6d, 0x3b, 0x1d, 0x51, 0x05, 0x8f, 0x69, 0x00, 0xfc, 0x48, + 0x07, 0xcd, 0x25, 0x35, 0xc6, 0x13, 0xaa, 0x16, 0xb5, 0x8e, 0x68, 0x93, + 0x38, 0xda, 0x7b, 0x80, 0x1e, 0x24, 0xa2, 0xe1, 0xe3, 0xdc, 0xeb, 0x6c, + 0xb2, 0xf3, 0x0c, 0x60, 0x6c, 0x36, 0x7e, 0x9b, 0x88, 0xf1, 0x9f, 0x15, + 0x6f, 0xec, 0xa3, 0x2b, 0x18, 0x02, 0x7d, 0xcc, 0x32, 0xd7, 0x8e, 0xc4, + 0x7f, 0x7a, 0x0e, 0xcb, 0x6c, 0x00, 0x37, 0xf4, 0x6f, 0x61, 0x2d, 0x20, + 0x89, 0xe7, 0x82, 0x92, 0x90, 0x35, 0xec, 0xad, 0xe1, 0xde, 0xa0, 0x73, + 0x49, 0x8b, 0x09, 0xf6, 0xc8, 0xe0, 0xc0, 0x3f, 0xc5, 0x43, 0x27, 0x1e, + 0x8a, 0x5e, 0xe6, 0x7a, 0x7b, 0x9a, 0xe2, 0x1a, 0x4b, 0x39, 0x13, 0xfb, + 0xc0, 0xe9, 0x08, 0x19, 0x19, 0x77, 0x57, 0x68, 0x06, 0xb6, 0xe4, 0x54, + 0x44, 0xee, 0x80, 0x00, 0xec, 0x79, 0xd5, 0x5f, 0xfd, 0x1d, 0xb8, 0xe2, + 0xfb, 0x98, 0x6b, 0x73, 0xda, 0x03, 0x81, 0xd0, 0x88, 0xe0, 0x14, 0x94, + 0xd6, 0xaf, 0x1d, 0xae, 0x73, 0x58, 0xd0, 0xd7, 0x36, 0x99, 0x01, 0xed, + 0xd3, 0x68, 0x3a, 0xc6, 0x8a, 0xcb, 0x5e, 0xf6, 0x3d, 0xce, 0x24, 0x34, + 0x01, 0x2c, 0x24, 0xfe, 0x72, 0x1d, 0x78, 0x42, 0xb1, 0x66, 0x45, 0x64, + 0x9b, 0x2c, 0x86, 0x82, 0xdf, 0x69, 0x03, 0x4d, 0x3b, 0xcc, 0x21, 0xe4, + 0x8b, 0x59, 0xb8, 0x02, 0x76, 0x90, 0x41, 0x31, 0x00, 0x71, 0xac, 0xa4, + 0xa4, 0xdd, 0x43, 0x01, 0xf9, 0x9d, 0x36, 0xc1, 0x56, 0xdd, 0xe2, 0xdf, + 0x51, 0x95, 0xc4, 0x01, 0xba, 0x03, 0xc7, 0x9c, 0xc2, 0xa1, 0x67, 0x4e, + 0x0d, 0x67, 0xd8, 0xb2, 0x36, 0x02, 0xdd, 0x03, 0x5a, 0x67, 0x6b, 0x9b, + 0xdc, 0x2d, 0x4c, 0x13, 0xbc, 0xb1, 0xa1, 0xe6, 0x76, 0x11, 0x13, 0x20, + 0xc0, 0x9f, 0xbd, 0x36, 0x4e, 0xe6, 0xef, 0xb9, 0xb4, 0xef, 0x7b, 0x8b, + 0x5a, 0xdd, 0xbf, 0x49, 0xda, 0x1f, 0x04, 0x94, 0xd5, 0xaf, 0x0a, 0xd6, + 0x63, 0xd6, 0xcb, 0xc8, 0x70, 0x2c, 0xdb, 0x24, 0xfd, 0x22, 0xd7, 0x3a, + 0x34, 0xf8, 0x10, 0xa6, 0xec, 0x36, 0xe6, 0x52, 0xea, 0x0b, 0x5a, 0xdb, + 0xeb, 0x1b, 0xeb, 0xb0, 0x48, 0xd2, 0x61, 0xc0, 0xc7, 0x90, 0x44, 0x66, + 0xe0, 0xdd, 0xb6, 0x02, 0x76, 0x82, 0x43, 0x41, 0x1d, 0xd1, 0xb1, 0xb7, + 0x1b, 0x6a, 0xb0, 0x48, 0x6e, 0xbb, 0x99, 0xe7, 0x10, 0x67, 0xc5, 0x25, + 0x39, 0x9f, 0x64, 0x60, 0x64, 0x1f, 0x63, 0x40, 0xec, 0x75, 0x11, 0xe1, + 0x3f, 0x8a, 0xb5, 0x8b, 0x41, 0x7b, 0xc6, 0x33, 0x64, 0x38, 0x09, 0x71, + 0x3a, 0xea, 0x44, 0xa4, 0xfa, 0x2d, 0x75, 0xb6, 0x92, 0xcd, 0xc1, 0xae, + 0x3c, 0x93, 0xab, 0x1b, 0xfe, 0xba, 0x2b, 0xdd, 0x19, 0x95, 0x9b, 0xaf, + 0xbc, 0xb9, 0xe3, 0x69, 0xf7, 0xba, 0xc8, 0x0d, 0xe3, 0xf3, 0x48, 0x03, + 0x4e, 0xc9, 0x29, 0x05, 0x55, 0x55, 0xd3, 0xe9, 0x37, 0x5e, 0x1a, 0xdb, + 0x9d, 0x21, 0xa6, 0x07, 0xb5, 0xb3, 0x32, 0x4c, 0x2a, 0xde, 0x9b, 0xfd, + 0x3f, 0xb5, 0x6e, 0x3f, 0x68, 0xdb, 0x3c, 0x7b, 0x63, 0xc7, 0x77, 0x0a, + 0xce, 0x75, 0x39, 0x36, 0x5a, 0x73, 0x2d, 0x60, 0x76, 0x3e, 0xe0, 0x1a, + 0x1a, 0x43, 0xdb, 0xb4, 0x7d, 0x13, 0xa7, 0x6f, 0x10, 0xab, 0x6e, 0x7e, + 0xef, 0x52, 0x35, 0xdd, 0xf4, 0x34, 0xfa, 0x3e, 0x30, 0x92, 0x9f, 0xff, + 0xd9 +}; +size_t demo_006_jpg_len = 18553; + +const uint8_t demo_007_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00, + 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00, + 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x37, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x37, 0x00, + 0x33, 0x00, 0x35, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xa1, 0xfb, 0x68, 0xb1, 0xdb, 0x69, 0xad, 0xce, 0xdc, + 0xcd, 0x01, 0xdb, 0xb8, 0x11, 0xae, 0x9e, 0xee, 0x15, 0x4c, 0x9e, 0xad, + 0x99, 0x7d, 0x82, 0xd2, 0xd8, 0x24, 0xc3, 0x3d, 0x82, 0x74, 0xfd, 0xed, + 0x83, 0x70, 0x95, 0x96, 0x1a, 0xf3, 0x69, 0x2c, 0x06, 0xa6, 0x83, 0x0f, + 0x77, 0x3b, 0x49, 0x3e, 0x2d, 0x82, 0x8c, 0xe7, 0xec, 0x23, 0x65, 0xc5, + 0xd6, 0x48, 0x0e, 0x0c, 0x2f, 0x0d, 0x22, 0x20, 0xc9, 0x71, 0x49, 0x4d, + 0xd3, 0x98, 0xfa, 0x0f, 0xe9, 0x5c, 0x3d, 0x37, 0x0f, 0x1b, 0x03, 0x43, + 0x86, 0xbe, 0x33, 0xdf, 0xc5, 0x48, 0x66, 0x9b, 0x1c, 0x5e, 0xfb, 0x58, + 0xe8, 0xfa, 0x0d, 0xdc, 0xf6, 0xb4, 0x03, 0xf0, 0x79, 0x3d, 0xbb, 0xac, + 0xeb, 0x9e, 0x1c, 0xdd, 0xc0, 0x38, 0x35, 0xa0, 0x43, 0x8c, 0xf7, 0x3a, + 0xfb, 0x91, 0xb1, 0x6a, 0x7d, 0xf3, 0x65, 0xf6, 0x34, 0x32, 0xb1, 0x00, + 0x58, 0x06, 0xd3, 0xdb, 0xda, 0x63, 0x94, 0x94, 0xea, 0xee, 0xba, 0x9b, + 0x2c, 0x73, 0x9d, 0x5e, 0xd7, 0x00, 0xe7, 0x08, 0x31, 0xba, 0x03, 0x5b, + 0xf4, 0xdc, 0x01, 0x46, 0x66, 0x44, 0x3f, 0x66, 0x55, 0x95, 0xb4, 0x86, + 0x82, 0x5b, 0xa0, 0x71, 0x1d, 0xb7, 0x4b, 0x9d, 0xaf, 0x92, 0xe7, 0xdc, + 0xc6, 0x9b, 0x1b, 0xb1, 0xac, 0x76, 0xa4, 0xb9, 0xdd, 0xbf, 0x1d, 0x15, + 0xa6, 0x59, 0x5b, 0xea, 0x6d, 0x75, 0xd2, 0xc6, 0xdb, 0xbc, 0x12, 0xef, + 0x16, 0xf0, 0x44, 0xc7, 0x74, 0x94, 0xee, 0x3f, 0x2f, 0x0a, 0xc6, 0x8d, + 0xcf, 0x20, 0x1f, 0xa5, 0x0e, 0x83, 0x1f, 0x87, 0xe4, 0x4a, 0x9b, 0xab, + 0xd8, 0x76, 0x38, 0xdc, 0xd2, 0x67, 0x52, 0x26, 0x39, 0xd6, 0x7b, 0x2a, + 0x2c, 0xcb, 0x61, 0x2e, 0xde, 0xd1, 0x53, 0x18, 0xcd, 0xa4, 0x30, 0x7b, + 0x43, 0xb8, 0x0e, 0xf0, 0x9f, 0x25, 0x3a, 0xb0, 0x45, 0x96, 0x31, 0xb5, + 0x7b, 0xec, 0x6b, 0x65, 0xed, 0x63, 0xa0, 0x30, 0x9f, 0xde, 0x3d, 0xb9, + 0x49, 0x4d, 0xe7, 0xde, 0xd0, 0x43, 0x72, 0x69, 0x0d, 0xf5, 0x0c, 0x54, + 0x09, 0x16, 0x07, 0x0f, 0x80, 0x04, 0x28, 0x58, 0x19, 0x55, 0x65, 0xf1, + 0xb1, 0xd3, 0xee, 0x23, 0x46, 0x9f, 0x32, 0x20, 0x70, 0x9a, 0xbe, 0x9b, + 0x98, 0xf6, 0x96, 0x32, 0xd0, 0xd7, 0xc0, 0x97, 0x19, 0xdb, 0xfe, 0x6c, + 0x29, 0xd7, 0xd2, 0xf2, 0x9a, 0xdd, 0xee, 0x9d, 0xed, 0xfa, 0x60, 0x18, + 0x91, 0xcc, 0xc8, 0x29, 0x29, 0x4e, 0xcb, 0xc5, 0xf6, 0x31, 0xfe, 0xe7, + 0x9f, 0x6c, 0x08, 0x74, 0x83, 0xae, 0x9d, 0xbb, 0x2b, 0x0e, 0x0e, 0x6d, + 0x47, 0xd3, 0x1b, 0x01, 0xd0, 0x6e, 0x23, 0x40, 0x78, 0x6e, 0x85, 0x52, + 0xb6, 0xbb, 0x09, 0xb4, 0x53, 0x4b, 0xda, 0xf2, 0x00, 0xb0, 0x1d, 0xc4, + 0x7f, 0x9d, 0x0e, 0xfc, 0x10, 0x98, 0x33, 0x0d, 0x7e, 0x9f, 0xa6, 0xe3, + 0x4b, 0xe0, 0x0d, 0xc0, 0x96, 0xf8, 0x6d, 0xe4, 0x7e, 0x54, 0x94, 0xde, + 0x7d, 0x8d, 0xac, 0x45, 0x85, 0x8e, 0x0c, 0x80, 0xf6, 0x92, 0x03, 0x9a, + 0x0f, 0x30, 0x35, 0x25, 0x57, 0x7e, 0x75, 0x96, 0x38, 0x9a, 0x36, 0xd6, + 0xd7, 0xc6, 0xd0, 0x41, 0x69, 0xe7, 0x53, 0xb9, 0x3d, 0x7d, 0x2b, 0x2f, + 0x6f, 0xac, 0xcd, 0x8c, 0x3b, 0x44, 0x6e, 0x60, 0x0e, 0x31, 0xa1, 0xd0, + 0xf1, 0xe4, 0x83, 0x6e, 0x37, 0x51, 0xa5, 0xdb, 0xe0, 0xd9, 0xe9, 0xcb, + 0xab, 0xda, 0x00, 0xd2, 0x3d, 0xda, 0x30, 0x24, 0xa5, 0x1b, 0x6e, 0xde, + 0xda, 0x6b, 0xa9, 0xae, 0xb0, 0xc9, 0x99, 0xd1, 0xde, 0x3a, 0x80, 0x7f, + 0x14, 0xff, 0x00, 0x6a, 0x7b, 0x24, 0x5d, 0x4b, 0x58, 0x1b, 0xf4, 0xde, + 0xd7, 0x38, 0xc7, 0x9e, 0x8d, 0xf2, 0xf1, 0x42, 0x66, 0x26, 0x43, 0xeb, + 0xf5, 0x2b, 0xa3, 0x7d, 0xac, 0x21, 0xe7, 0x73, 0x5c, 0x6c, 0xe6, 0x74, + 0x23, 0xc9, 0x58, 0x19, 0xa6, 0xd7, 0x7e, 0x91, 0xb6, 0x0d, 0x48, 0x15, + 0x39, 0xa1, 0xce, 0x12, 0x34, 0x2d, 0x03, 0x53, 0xaa, 0x4a, 0x4e, 0xcb, + 0xf1, 0x89, 0x21, 0xf5, 0x16, 0x6d, 0x00, 0x9b, 0x5c, 0xd2, 0xf2, 0xd9, + 0xee, 0xd7, 0x68, 0xaa, 0x64, 0x64, 0x56, 0x2f, 0x7d, 0x55, 0x3f, 0xd6, + 0x22, 0x20, 0x37, 0xda, 0xe0, 0x3e, 0x6e, 0xe5, 0x56, 0x76, 0x1d, 0xe6, + 0xd7, 0x3a, 0xbb, 0xb6, 0x89, 0x3b, 0x89, 0x76, 0xcd, 0x41, 0xd5, 0xb1, + 0xaf, 0xe4, 0x57, 0xb1, 0xf1, 0xb3, 0xd9, 0x31, 0x5e, 0xd0, 0x4e, 0xef, + 0xb4, 0x9a, 0xc3, 0xde, 0x24, 0x0d, 0x5a, 0x23, 0xb1, 0x1d, 0xd2, 0x52, + 0x26, 0x87, 0xdf, 0x67, 0xa4, 0xc6, 0x58, 0xf2, 0x35, 0x0d, 0x63, 0x37, + 0x91, 0xfd, 0x62, 0xe7, 0x46, 0x9f, 0x04, 0x8e, 0x51, 0xa4, 0x43, 0xa8, + 0x75, 0x85, 0xa4, 0xb4, 0x92, 0x76, 0xc7, 0x6d, 0x76, 0x87, 0x04, 0x61, + 0x8a, 0xf2, 0xc3, 0x7e, 0x63, 0xdc, 0xeb, 0xdc, 0xe8, 0x69, 0x61, 0x1b, + 0x88, 0x1a, 0x08, 0xad, 0xbb, 0x3c, 0xf5, 0x21, 0x18, 0x61, 0xdb, 0x75, + 0xad, 0x15, 0xbd, 0xdf, 0x67, 0x6e, 0xad, 0x61, 0x9a, 0xcc, 0xe9, 0xa3, + 0xb6, 0x89, 0x2d, 0xf8, 0xa4, 0xa4, 0x03, 0x25, 0xce, 0x3b, 0x4d, 0x1b, + 0x1a, 0xfd, 0x0c, 0x3f, 0xb3, 0xc7, 0x98, 0x85, 0x4e, 0xbc, 0xfa, 0x9b, + 0x68, 0x65, 0x61, 0xcc, 0xad, 0x87, 0x61, 0x36, 0xcc, 0xfb, 0x78, 0xf7, + 0x1d, 0x0f, 0x8e, 0x8b, 0x55, 0xd8, 0x0c, 0x32, 0x32, 0xb7, 0x58, 0xd6, + 0x92, 0xe0, 0x43, 0xdc, 0x5c, 0xc1, 0x11, 0xd8, 0x05, 0x9f, 0x93, 0x82, + 0xe0, 0xea, 0x43, 0x6b, 0xb8, 0xd7, 0xa8, 0xac, 0x90, 0xe2, 0x19, 0x27, + 0xcc, 0x98, 0x9f, 0x82, 0x4a, 0x5e, 0xbc, 0x96, 0xdd, 0xb1, 0xce, 0x0e, + 0x05, 0xee, 0x24, 0x17, 0x0e, 0xdf, 0x07, 0x3b, 0x44, 0xbd, 0x66, 0x07, + 0x91, 0x6b, 0xc3, 0x2b, 0x7c, 0x90, 0x5c, 0x09, 0xda, 0x40, 0x81, 0x1b, + 0x67, 0x9f, 0x04, 0x5a, 0x2b, 0xfd, 0x9c, 0xf7, 0xb5, 0xf0, 0xf3, 0x66, + 0xd2, 0xfb, 0xab, 0x25, 0xcd, 0x82, 0x74, 0x6e, 0xbb, 0x87, 0xcd, 0x57, + 0xca, 0x65, 0x64, 0x06, 0x63, 0x56, 0xe7, 0x0f, 0x50, 0xd8, 0xe7, 0x90, + 0x49, 0x61, 0x6e, 0xbe, 0xdf, 0xa3, 0x22, 0x25, 0x25, 0x32, 0xab, 0x38, + 0x3e, 0xba, 0xe9, 0x2f, 0x10, 0xed, 0x3d, 0xfb, 0x76, 0xb6, 0x3b, 0x6e, + 0xfe, 0xf0, 0x88, 0xec, 0xab, 0xd8, 0xdf, 0x6b, 0x5d, 0x6b, 0x1b, 0xc3, + 0x61, 0xda, 0x9f, 0x10, 0x1a, 0xd2, 0x10, 0xee, 0xa7, 0x36, 0x97, 0x56, + 0xea, 0xc0, 0xd9, 0x5b, 0x88, 0x0e, 0x69, 0x20, 0x39, 0xae, 0xd3, 0x73, + 0xc3, 0x7f, 0xbd, 0x4f, 0x65, 0xce, 0x78, 0x04, 0x38, 0x00, 0x76, 0x17, + 0x49, 0x8d, 0x47, 0xe6, 0x9e, 0xe5, 0x25, 0x35, 0xdf, 0x60, 0x33, 0x5b, + 0x8e, 0xf2, 0x06, 0xa1, 0xf5, 0xbf, 0x73, 0x4f, 0x31, 0x24, 0xeb, 0x3f, + 0x05, 0x3a, 0x32, 0xd9, 0xe9, 0xed, 0xda, 0x7d, 0x52, 0x36, 0xb4, 0x19, + 0x76, 0xdf, 0x28, 0x02, 0x74, 0xf3, 0x2a, 0x02, 0x9c, 0xd1, 0xea, 0x3d, + 0x8d, 0x0f, 0x68, 0x76, 0xc0, 0x1e, 0x26, 0xc6, 0x96, 0xc7, 0xd1, 0x6c, + 0x80, 0xa7, 0x75, 0x0c, 0xa9, 0xc1, 0xb7, 0xda, 0xe7, 0x97, 0x44, 0x56, + 0xe6, 0x1a, 0xf7, 0x3b, 0xb6, 0xac, 0x31, 0x32, 0x92, 0x9b, 0x15, 0x3f, + 0x12, 0x96, 0xb5, 0xcf, 0x05, 0xd6, 0x46, 0xd1, 0x63, 0x9c, 0x5a, 0x35, + 0xd4, 0x89, 0x23, 0x99, 0xf2, 0x42, 0xc8, 0x17, 0x5b, 0x36, 0x56, 0x3d, + 0x30, 0xdf, 0xa3, 0xf4, 0x8c, 0x47, 0xe2, 0x65, 0x3c, 0xb8, 0x7e, 0x8d, + 0xd5, 0xd9, 0x8d, 0x6b, 0xf5, 0x70, 0x76, 0xad, 0x7c, 0x0f, 0xcd, 0x70, + 0x97, 0x7c, 0x92, 0x73, 0xb1, 0x59, 0x6b, 0x5a, 0xe7, 0x1a, 0xec, 0x8d, + 0xef, 0xb5, 0xae, 0x36, 0x43, 0x47, 0x33, 0x5c, 0x1e, 0x7c, 0x12, 0x52, + 0x3a, 0xac, 0xb0, 0x56, 0x1b, 0x75, 0x85, 0x8d, 0x0e, 0x21, 0xde, 0xcf, + 0xa4, 0xe1, 0xaf, 0x2e, 0xf0, 0x47, 0xaf, 0xd7, 0x2d, 0x16, 0x6f, 0x71, + 0x1c, 0x40, 0x70, 0x20, 0x09, 0xe6, 0x34, 0x4f, 0x56, 0x07, 0x51, 0xc9, + 0x79, 0xdc, 0x3d, 0x3a, 0xa4, 0xb7, 0xd4, 0x7c, 0x7a, 0x9b, 0x48, 0x1f, + 0x74, 0x85, 0x79, 0x9d, 0x1f, 0x02, 0xaa, 0x99, 0x49, 0x69, 0x7c, 0x19, + 0x73, 0xc9, 0x26, 0x4f, 0xdf, 0xc2, 0x4a, 0x72, 0x6c, 0x2e, 0x66, 0xd7, + 0xb5, 0xc5, 0x8f, 0xe2, 0xdd, 0x8f, 0xd5, 0xc7, 0xc5, 0xcd, 0x93, 0xf9, + 0x11, 0x18, 0x1c, 0xd3, 0xbf, 0xd6, 0xdc, 0x1c, 0x01, 0x92, 0xe2, 0xe6, + 0x80, 0x7c, 0xa4, 0x15, 0x7e, 0xfe, 0x8b, 0xba, 0xc2, 0x6b, 0xb9, 0xd5, + 0xb0, 0x83, 0xbc, 0x3b, 0xdf, 0xfe, 0x69, 0x3c, 0x2a, 0x56, 0x51, 0x93, + 0x55, 0xbe, 0x8b, 0xd8, 0x1f, 0x40, 0x68, 0x3b, 0xdc, 0xf2, 0x1b, 0xde, + 0x3d, 0xb0, 0x75, 0xd3, 0xba, 0x4a, 0x66, 0xe6, 0xda, 0x58, 0x5c, 0xd6, + 0x0d, 0xc1, 0xa3, 0x97, 0x16, 0x83, 0xe2, 0xb2, 0x9f, 0x63, 0x1f, 0x77, + 0xa7, 0x5b, 0x83, 0x6c, 0x0e, 0x22, 0x1c, 0xed, 0xee, 0x88, 0xe5, 0xbf, + 0x47, 0xef, 0x57, 0x2c, 0xea, 0x36, 0x8b, 0x05, 0x57, 0x30, 0x0a, 0x98, + 0x0c, 0x31, 0xde, 0xa6, 0xd2, 0x0f, 0x8b, 0x81, 0x2d, 0x2a, 0xab, 0xec, + 0xc7, 0x7b, 0x63, 0x71, 0x04, 0x38, 0xb8, 0x80, 0x48, 0x0c, 0x07, 0xf7, + 0x63, 0xdc, 0x41, 0x1e, 0x29, 0x29, 0xb7, 0x5e, 0x60, 0x63, 0x58, 0xda, + 0xda, 0xe7, 0x6e, 0x71, 0x0e, 0x36, 0x38, 0xf3, 0xda, 0x7f, 0xd9, 0x29, + 0xbe, 0xd9, 0xd4, 0x3d, 0x7f, 0x4f, 0x7b, 0x62, 0x7f, 0x9b, 0x93, 0xe1, + 0xc4, 0xf3, 0xf8, 0xaa, 0x7f, 0x6d, 0xad, 0xc7, 0xd3, 0xaa, 0xc7, 0x58, + 0x74, 0x0c, 0x6f, 0x30, 0x3b, 0xf7, 0x4f, 0xea, 0x59, 0xf6, 0x8d, 0xbe, + 0x9d, 0x9e, 0x8f, 0xfa, 0x3d, 0x8e, 0x98, 0x8f, 0xa3, 0x1c, 0x42, 0x4a, + 0x4c, 0x70, 0x68, 0x0c, 0x7b, 0x40, 0x2d, 0x65, 0x4e, 0x32, 0xc9, 0xda, + 0x4e, 0x80, 0x8e, 0x39, 0xf8, 0x95, 0x7a, 0xce, 0x90, 0xcc, 0x8f, 0xd2, + 0xe3, 0x56, 0x1b, 0x20, 0x87, 0x3a, 0x44, 0x0d, 0x0e, 0x91, 0xe2, 0xb4, + 0xb2, 0x3a, 0x4d, 0x0e, 0xa2, 0xc0, 0x08, 0x75, 0x6e, 0x68, 0xf5, 0x1e, + 0xf3, 0xd9, 0xa6, 0x7b, 0x7c, 0x11, 0xa9, 0x69, 0xc6, 0xac, 0x0a, 0xc7, + 0xaa, 0xd2, 0x49, 0xf6, 0xc0, 0xda, 0x26, 0x37, 0x24, 0xa7, 0x36, 0xae, + 0x86, 0xd2, 0xda, 0x2a, 0xcc, 0xab, 0xe8, 0x00, 0x48, 0x98, 0x1c, 0x47, + 0xf1, 0x57, 0x28, 0xfa, 0xbb, 0x81, 0x48, 0x70, 0xc7, 0xac, 0x35, 0xa4, + 0xee, 0xf7, 0x0d, 0xff, 0x00, 0x71, 0x72, 0xd1, 0x7e, 0x7e, 0x09, 0xad, + 0xd7, 0xbe, 0xd6, 0x8a, 0xaa, 0x3b, 0x5e, 0x4e, 0x90, 0xfe, 0x22, 0x3c, + 0x65, 0x1d, 0x9b, 0x8b, 0x89, 0xad, 0xbc, 0x80, 0x5b, 0x27, 0x44, 0x94, + 0xe4, 0xdd, 0xd1, 0x30, 0x9c, 0xc7, 0x81, 0x4b, 0x7d, 0x42, 0xd1, 0x2e, + 0x88, 0x31, 0xe5, 0x1e, 0x0a, 0x97, 0x50, 0xe9, 0xdd, 0x3b, 0xa7, 0x61, + 0x36, 0xec, 0x80, 0xeb, 0x09, 0x70, 0xab, 0x6c, 0x9d, 0xc7, 0x74, 0x9d, + 0x3c, 0x22, 0x0a, 0xe9, 0x99, 0x5f, 0xa6, 0x09, 0x6f, 0x7e, 0x01, 0x33, + 0x0b, 0x2f, 0xeb, 0x3e, 0x05, 0xb9, 0x18, 0x4d, 0xbf, 0x1c, 0x6e, 0x7e, + 0x34, 0xbf, 0x6c, 0xfd, 0x26, 0xbb, 0x47, 0xfc, 0xc4, 0x24, 0xa7, 0x3a, + 0xae, 0xb3, 0xd0, 0xe2, 0x9c, 0x56, 0x56, 0x59, 0xb2, 0x00, 0x0e, 0x0d, + 0x99, 0x8e, 0x49, 0x9d, 0x4a, 0x2e, 0x3b, 0xb0, 0xb2, 0x01, 0xae, 0x90, + 0xe7, 0x52, 0x64, 0x6e, 0x24, 0x10, 0x76, 0x19, 0x0d, 0x3c, 0x38, 0x2e, + 0x66, 0xea, 0xab, 0xc8, 0x6f, 0xa8, 0xe8, 0x8e, 0x23, 0xb8, 0xf3, 0x5a, + 0x9f, 0x57, 0x7a, 0x6d, 0x97, 0x31, 0xf7, 0xbd, 0x9f, 0xa1, 0x73, 0x86, + 0xd2, 0x49, 0x83, 0x13, 0x24, 0x09, 0xf3, 0x84, 0x94, 0xef, 0xc3, 0x9a, + 0xe2, 0x4f, 0xd2, 0x71, 0xd1, 0x48, 0xd5, 0x75, 0x85, 0xa1, 0xe4, 0x7a, + 0x64, 0xc8, 0x68, 0x90, 0xf2, 0x7c, 0xcf, 0x10, 0x9b, 0xec, 0x4d, 0x0e, + 0x75, 0x95, 0x6e, 0x10, 0x27, 0x69, 0x3a, 0x9d, 0x34, 0x12, 0xe9, 0x85, + 0x11, 0x57, 0x55, 0xf6, 0x3c, 0x32, 0xb2, 0x26, 0x3d, 0xce, 0x89, 0xfb, + 0xa5, 0x25, 0x26, 0xb6, 0xb2, 0xcd, 0x75, 0x8d, 0xa5, 0xa7, 0x5e, 0x02, + 0x7d, 0xad, 0x05, 0xac, 0xec, 0xd1, 0xf7, 0x69, 0xfe, 0xd4, 0xfb, 0xf3, + 0x8b, 0x5a, 0xd7, 0x57, 0x5b, 0x6c, 0x12, 0x24, 0x38, 0xed, 0xff, 0x00, + 0xa9, 0x50, 0xc7, 0xb2, 0xe2, 0xf7, 0xba, 0xd6, 0x8d, 0x1c, 0x5a, 0xd0, + 0x35, 0x30, 0x52, 0x53, 0x3f, 0x4f, 0x48, 0xe7, 0x74, 0xea, 0x7c, 0xd4, + 0x5f, 0x58, 0x86, 0xef, 0xf7, 0x6c, 0x01, 0xb1, 0xf1, 0x4f, 0x7d, 0xef, + 0xac, 0x54, 0xd6, 0xd6, 0x6d, 0x0e, 0x71, 0xdd, 0x1a, 0x40, 0x6f, 0x8f, + 0x0a, 0x58, 0xd5, 0xbe, 0x1a, 0xf0, 0xdf, 0x6e, 0xee, 0x5e, 0x7b, 0x70, + 0x92, 0x99, 0x35, 0xd4, 0x93, 0xb1, 0xae, 0x1b, 0x9b, 0xa9, 0x6f, 0x10, + 0x0f, 0x0a, 0xa9, 0xc6, 0xa3, 0x22, 0xc3, 0x69, 0x6e, 0xe7, 0x71, 0xea, + 0x0e, 0xc0, 0x76, 0x50, 0xcd, 0xfb, 0x4d, 0x79, 0xac, 0x34, 0x54, 0x2e, + 0x2e, 0x63, 0x9b, 0x68, 0x10, 0x1a, 0xd1, 0x22, 0x27, 0x59, 0xf8, 0x21, + 0xe3, 0x59, 0x95, 0x5d, 0x9e, 0x9d, 0x98, 0xb6, 0x34, 0xb8, 0xe9, 0xe9, + 0x80, 0x19, 0x1e, 0x22, 0x5c, 0x12, 0x53, 0x64, 0xe3, 0x62, 0xe3, 0x35, + 0xa7, 0x6b, 0x5a, 0x03, 0xe4, 0xe8, 0x35, 0x30, 0x60, 0xfc, 0x54, 0x9d, + 0x71, 0x15, 0x9b, 0x1e, 0x36, 0x1e, 0x40, 0xe4, 0x8f, 0x00, 0x7c, 0xd5, + 0x17, 0xd9, 0x69, 0xb9, 0xf6, 0x8a, 0x1e, 0x2a, 0xa5, 0xe3, 0x52, 0xe9, + 0x82, 0xee, 0x5c, 0x04, 0x9f, 0xc1, 0x5a, 0xf5, 0x1b, 0x64, 0xb1, 0xcd, + 0xd8, 0xd6, 0x6a, 0xee, 0x49, 0x3a, 0x48, 0xec, 0x92, 0x96, 0xaf, 0x1e, + 0x96, 0xc5, 0xd6, 0x86, 0x82, 0x60, 0x49, 0xfc, 0xe2, 0x7b, 0x7d, 0xe8, + 0xac, 0xa9, 0x96, 0x37, 0x41, 0x00, 0x93, 0xa0, 0x3e, 0x0a, 0x6e, 0xbe, + 0xbf, 0x4c, 0x54, 0x01, 0x1e, 0xd9, 0x69, 0x2d, 0x31, 0xce, 0x9d, 0x92, + 0xad, 0xc3, 0x69, 0x01, 0xb1, 0x04, 0xb4, 0x88, 0x8f, 0xee, 0x49, 0x4c, + 0x5b, 0x5b, 0x0b, 0x4c, 0x0d, 0x04, 0x6a, 0x3b, 0xc2, 0x56, 0xb6, 0x6c, + 0x32, 0x74, 0x23, 0xe8, 0xfc, 0x14, 0xeb, 0x7b, 0x47, 0xb4, 0x34, 0xb4, + 0x76, 0x04, 0x40, 0xf8, 0x26, 0xba, 0xc6, 0xb4, 0x17, 0x96, 0xe8, 0xd3, + 0xac, 0x73, 0xae, 0x82, 0x02, 0x4a, 0x45, 0x6d, 0x2c, 0x35, 0x81, 0x5b, + 0x5a, 0x1c, 0x4e, 0x9e, 0x1c, 0x78, 0x6a, 0xa4, 0x69, 0xa8, 0xd6, 0x61, + 0xa1, 0xbd, 0xa4, 0x08, 0x99, 0xf0, 0x4c, 0xfb, 0x76, 0xb4, 0x6e, 0x0e, + 0x3d, 0xcc, 0x03, 0xa7, 0xdc, 0xa3, 0x65, 0x96, 0xb1, 0xa1, 0x86, 0x1c, + 0x4b, 0x4e, 0xbc, 0x1d, 0x39, 0x09, 0x29, 0x8b, 0x31, 0x6b, 0x0c, 0x6b, + 0x5e, 0x24, 0xb1, 0x80, 0x03, 0xdb, 0x4f, 0x34, 0x60, 0xd1, 0x5b, 0x77, + 0xb1, 0xbe, 0xd0, 0x35, 0x0a, 0xbe, 0x2e, 0x4b, 0x20, 0xb6, 0xe7, 0xc1, + 0x23, 0x47, 0x1e, 0x09, 0x04, 0x8d, 0x11, 0x1d, 0x99, 0x5d, 0x62, 0x04, + 0x97, 0x3c, 0xed, 0x68, 0xf9, 0x73, 0xe4, 0x12, 0x52, 0x1a, 0x98, 0x6f, + 0x79, 0xb1, 0x81, 0xa2, 0xbb, 0x09, 0x24, 0x9f, 0xa5, 0x33, 0xe1, 0xf0, + 0xee, 0xa5, 0x7e, 0x0f, 0xaa, 0x61, 0xc4, 0x16, 0x82, 0x1c, 0x1a, 0xe1, + 0x20, 0x16, 0xf0, 0x53, 0xe3, 0x13, 0x5b, 0x59, 0x5c, 0x82, 0x00, 0xd0, + 0x03, 0x31, 0x1a, 0x6a, 0x8a, 0xfc, 0x8a, 0xab, 0x97, 0x3c, 0xc1, 0x30, + 0x3e, 0x5d, 0xa1, 0x25, 0x21, 0xd9, 0x4d, 0xd5, 0x81, 0x90, 0xc0, 0x4e, + 0x84, 0x6e, 0x1c, 0x18, 0xf3, 0xf0, 0x41, 0xca, 0xaf, 0x0c, 0x52, 0x69, + 0x7b, 0x58, 0x05, 0xad, 0x73, 0x5e, 0xd0, 0x03, 0x65, 0xa7, 0xda, 0x49, + 0x81, 0xf0, 0x53, 0x17, 0xd0, 0x40, 0x7b, 0x5c, 0x1d, 0x12, 0x62, 0x74, + 0xe6, 0x0f, 0x2b, 0x37, 0xac, 0xe4, 0x3b, 0x17, 0x16, 0xcb, 0x29, 0x3b, + 0x2e, 0x35, 0x91, 0x24, 0x8d, 0x03, 0x8c, 0x18, 0xfe, 0x52, 0x4a, 0x73, + 0x19, 0xf5, 0x9a, 0xde, 0x9f, 0x5d, 0x38, 0x6f, 0xa8, 0xdf, 0x5e, 0x39, + 0x73, 0x1f, 0x6f, 0xef, 0xb4, 0x1f, 0x63, 0x9a, 0xef, 0xea, 0xab, 0xd5, + 0xfd, 0x62, 0xaa, 0xed, 0xae, 0x65, 0x2e, 0x79, 0xfa, 0x25, 0xc1, 0xfa, + 0x01, 0xce, 0x8c, 0x31, 0xaa, 0xe6, 0xb1, 0xba, 0xad, 0xb5, 0x1d, 0x97, + 0x81, 0x73, 0x06, 0x90, 0xe1, 0xaf, 0xde, 0xad, 0x57, 0x99, 0xd0, 0x6d, + 0x21, 0xf7, 0xe3, 0x1a, 0xdf, 0xde, 0x07, 0xb7, 0xfe, 0x81, 0x1f, 0x91, + 0x25, 0x3d, 0x2f, 0xfc, 0xe0, 0xc6, 0x75, 0x8d, 0xa5, 0xf5, 0x59, 0x4e, + 0xff, 0x00, 0x68, 0xb2, 0xc1, 0x0d, 0x9f, 0x88, 0x56, 0xf0, 0xb2, 0x2b, + 0xcd, 0x63, 0xb2, 0x29, 0xd2, 0xa2, 0xf2, 0xd0, 0x5c, 0x27, 0x76, 0xcd, + 0x3b, 0x9d, 0x17, 0x37, 0x45, 0x7d, 0x3f, 0x2e, 0xfa, 0x99, 0x87, 0x79, + 0xa0, 0xbb, 0xda, 0x19, 0x5b, 0xb4, 0x9d, 0x5d, 0x2e, 0x6d, 0x92, 0x65, + 0x6f, 0x60, 0xe3, 0x7d, 0x94, 0xed, 0x17, 0x3d, 0xc5, 0xcf, 0x3b, 0xc1, + 0x80, 0x1e, 0x63, 0xe9, 0x43, 0x46, 0x89, 0x29, 0x9d, 0x98, 0xd5, 0xdb, + 0xea, 0x31, 0xcd, 0x76, 0xd3, 0xf4, 0xa7, 0x46, 0x91, 0xe5, 0xac, 0x2a, + 0x4f, 0xe8, 0xf8, 0x97, 0x06, 0xb0, 0x53, 0x5b, 0x44, 0x7b, 0xda, 0xd2, + 0x0b, 0xbd, 0xa4, 0x6d, 0xd4, 0x42, 0xd6, 0xca, 0x7c, 0xe3, 0xfa, 0x4d, + 0x6c, 0xb9, 0xde, 0xdd, 0xdf, 0x9a, 0x34, 0xe4, 0xa0, 0xe2, 0xd7, 0x76, + 0x3b, 0x3d, 0xcd, 0x63, 0xc9, 0xd1, 0xc4, 0x18, 0xf9, 0x81, 0xb5, 0x25, + 0x34, 0x8f, 0x49, 0xc2, 0x23, 0x6b, 0xeb, 0x04, 0xb4, 0x88, 0xe7, 0x51, + 0xe6, 0x8d, 0xfb, 0x3b, 0x1e, 0x27, 0x7b, 0xb6, 0xcc, 0xfa, 0x72, 0x62, + 0x7c, 0x22, 0x55, 0xd7, 0x87, 0xce, 0xf6, 0xd4, 0xe2, 0xf1, 0x00, 0x01, + 0xb6, 0x0c, 0x6b, 0x1c, 0xa9, 0xfb, 0xe3, 0x77, 0xd9, 0xce, 0xee, 0x76, + 0xc8, 0x94, 0x94, 0xe5, 0xbc, 0x61, 0x5a, 0xd0, 0x6b, 0xbc, 0xee, 0x82, + 0xd6, 0x53, 0x49, 0xf6, 0xc9, 0xd3, 0xf7, 0x78, 0xfb, 0x91, 0x2b, 0x12, + 0xc7, 0x07, 0x3a, 0x18, 0x1c, 0x5b, 0x31, 0xb7, 0x74, 0x79, 0xff, 0x00, + 0xb5, 0x60, 0x39, 0x99, 0xd5, 0xd8, 0xd7, 0x33, 0x73, 0x5d, 0x00, 0x97, + 0xf0, 0x4f, 0xc4, 0x89, 0xdc, 0xa0, 0x72, 0x6e, 0xdc, 0xe7, 0x3c, 0xd6, + 0xdd, 0xbf, 0x4a, 0xa1, 0x2d, 0xd3, 0xf9, 0x3a, 0x91, 0x31, 0xdd, 0x25, + 0x3d, 0x0f, 0xd8, 0x31, 0xa9, 0xaf, 0xed, 0x0f, 0x71, 0x0d, 0xaa, 0x49, + 0x7e, 0x9a, 0x1f, 0x88, 0x0a, 0xed, 0x77, 0x06, 0xeb, 0xea, 0xfb, 0x47, + 0x1a, 0xb6, 0x0c, 0x88, 0x07, 0x42, 0xb9, 0xa6, 0x67, 0xe3, 0xbe, 0xb6, + 0xb5, 0xad, 0xac, 0x35, 0x87, 0x73, 0x6c, 0xb0, 0x17, 0x13, 0xf1, 0x2e, + 0x57, 0x31, 0xf2, 0xb7, 0xd4, 0x1f, 0x5b, 0x98, 0x0e, 0x83, 0x63, 0x85, + 0x70, 0x0f, 0x3c, 0xf9, 0x82, 0x92, 0x9d, 0xda, 0xef, 0xea, 0x0e, 0xb0, + 0x6d, 0xb0, 0xbf, 0x67, 0xd3, 0x6e, 0xd6, 0x91, 0xa8, 0xed, 0xc1, 0xfc, + 0x55, 0x4e, 0xa5, 0x9b, 0xd6, 0x19, 0x6e, 0xc6, 0x54, 0x0d, 0x7a, 0x12, + 0x18, 0x24, 0xb4, 0x13, 0x07, 0x78, 0x99, 0xe2, 0x78, 0x95, 0x5a, 0x9c, + 0xbf, 0x4d, 0xfe, 0xa6, 0xd0, 0xd7, 0x3f, 0xd8, 0xe1, 0xb4, 0xf3, 0xe0, + 0x1c, 0xdd, 0x35, 0x57, 0x99, 0x73, 0x5c, 0x77, 0x31, 0xc5, 0x80, 0xc1, + 0x71, 0xd4, 0xfb, 0x86, 0x87, 0x91, 0xfc, 0x12, 0x52, 0x62, 0x68, 0xc8, + 0x82, 0x6a, 0xa8, 0xb3, 0x42, 0xd6, 0xed, 0x6b, 0xa0, 0xb6, 0x39, 0x74, + 0x6a, 0xae, 0x1d, 0x9b, 0x18, 0xc1, 0xb4, 0x1e, 0xe1, 0xb0, 0x34, 0xed, + 0x01, 0x64, 0xd9, 0x7d, 0x54, 0x9d, 0xad, 0x32, 0x37, 0x7e, 0xe4, 0x49, + 0xf8, 0xb7, 0xb2, 0x87, 0xda, 0xe5, 0xd6, 0x3c, 0x52, 0x43, 0xea, 0x12, + 0x5d, 0x0e, 0x1a, 0x0e, 0xfe, 0xe8, 0x49, 0x4d, 0xbb, 0xb3, 0x2e, 0x6e, + 0x48, 0x6d, 0x65, 0x90, 0xe6, 0xea, 0xcd, 0x66, 0x47, 0x8b, 0xbb, 0x2b, + 0x75, 0xe5, 0xdb, 0xb3, 0xdf, 0x47, 0x02, 0x5a, 0x5a, 0xee, 0x7c, 0xb5, + 0x58, 0xb4, 0x64, 0x35, 0xf6, 0xbb, 0x21, 0xcc, 0x78, 0x73, 0xc4, 0x91, + 0xec, 0x3d, 0xbb, 0x0f, 0xcd, 0xe1, 0x1a, 0x8e, 0xb6, 0x1d, 0x41, 0xb3, + 0xd0, 0x2d, 0x66, 0x87, 0x7b, 0xe7, 0x89, 0x81, 0xe0, 0x92, 0x9b, 0xe3, + 0x3c, 0xdc, 0xfd, 0xac, 0x63, 0xea, 0x03, 0x47, 0x1b, 0x1a, 0xd1, 0xf1, + 0xd3, 0x71, 0x25, 0x45, 0x97, 0x58, 0xfb, 0x3d, 0x5b, 0x18, 0x29, 0x63, + 0x44, 0x0a, 0xc3, 0x85, 0x8e, 0xfe, 0xb1, 0xdb, 0xe3, 0xd9, 0x54, 0xc9, + 0xbf, 0x21, 0xa4, 0xbe, 0x9a, 0x01, 0x73, 0x0f, 0xe9, 0x43, 0x64, 0x9f, + 0x81, 0xe4, 0x0f, 0x8a, 0xb3, 0x57, 0x54, 0xdb, 0x20, 0x57, 0xb4, 0x86, + 0xc9, 0x74, 0x82, 0x4c, 0x78, 0xa4, 0xa6, 0xd5, 0x65, 0x82, 0x1c, 0xfd, + 0x03, 0x7b, 0x79, 0x93, 0x13, 0xe2, 0x95, 0xf6, 0x50, 0xe6, 0xec, 0x71, + 0x73, 0xa7, 0x48, 0x66, 0xa7, 0xcc, 0x7b, 0x55, 0x4c, 0x9c, 0xd3, 0x6b, + 0x5a, 0x5e, 0xdd, 0xa0, 0x38, 0x38, 0x16, 0x98, 0x26, 0x3c, 0x60, 0x78, + 0xa8, 0x9e, 0xa0, 0x34, 0xad, 0xae, 0x0c, 0x88, 0x71, 0x76, 0x9f, 0x76, + 0xa9, 0x29, 0x2b, 0x58, 0xca, 0x41, 0x14, 0x63, 0x38, 0xcb, 0x84, 0xea, + 0xd6, 0x98, 0xe2, 0x75, 0x3a, 0xa6, 0x6e, 0x45, 0xc1, 0xfe, 0xad, 0x94, + 0x7a, 0x6d, 0x61, 0x86, 0x09, 0xdc, 0xe2, 0x3c, 0x7d, 0xba, 0x09, 0x59, + 0xee, 0xea, 0x59, 0x4f, 0x97, 0xb0, 0x18, 0xd4, 0x46, 0xe0, 0x5b, 0x00, + 0xc4, 0xcb, 0x5a, 0x50, 0x3f, 0x6a, 0xe5, 0x34, 0xbb, 0xed, 0x4d, 0x1b, + 0x39, 0x60, 0x6e, 0xef, 0x84, 0x13, 0xb4, 0x4a, 0x4a, 0x6e, 0x87, 0xd7, + 0x60, 0x73, 0xc3, 0x76, 0x07, 0x19, 0x7b, 0x4b, 0x83, 0x43, 0xa0, 0xcb, + 0x77, 0x4c, 0xf0, 0x8a, 0x2d, 0x7e, 0xd0, 0xf6, 0x35, 0x8e, 0x07, 0x52, + 0x01, 0x04, 0x48, 0xf9, 0x85, 0x49, 0xb9, 0x34, 0x5e, 0x22, 0xba, 0xb7, + 0xb8, 0x76, 0x23, 0xdd, 0x3e, 0x5a, 0x02, 0x95, 0xcf, 0xb5, 0xcd, 0x68, + 0xb1, 0xae, 0x0c, 0x71, 0xf7, 0x02, 0xed, 0xa2, 0x07, 0xc0, 0x04, 0x94, + 0xdd, 0x6e, 0x56, 0x53, 0x65, 0xd6, 0xd6, 0xd3, 0x07, 0xf7, 0x83, 0x5a, + 0x1b, 0xff, 0x00, 0x4a, 0x4a, 0x57, 0xf5, 0x4a, 0x9a, 0x5c, 0x2b, 0x82, + 0xf3, 0xf4, 0x64, 0x81, 0xf8, 0x09, 0x3f, 0x82, 0x08, 0xcc, 0xa6, 0xa0, + 0x5a, 0xe6, 0xcb, 0x07, 0x0e, 0x0e, 0x0e, 0x1f, 0x34, 0x27, 0xe4, 0xe3, + 0x5e, 0x4f, 0xb3, 0x79, 0x76, 0xac, 0x6b, 0x35, 0x25, 0x91, 0xaf, 0x6f, + 0x14, 0x94, 0xdb, 0x39, 0xd6, 0xb0, 0xed, 0x0d, 0x6e, 0xba, 0x8f, 0x11, + 0xf8, 0x85, 0x07, 0xdc, 0xeb, 0x36, 0x8b, 0xa7, 0x7c, 0xc8, 0x75, 0x7a, + 0x01, 0xe2, 0x4b, 0x5d, 0x3c, 0x05, 0x41, 0xd7, 0x57, 0xcb, 0xa9, 0x73, + 0x0e, 0xa6, 0x6c, 0x6c, 0x3c, 0x79, 0x8f, 0x25, 0x0c, 0x61, 0x73, 0x72, + 0x1c, 0xe2, 0x5d, 0xb4, 0x80, 0x1a, 0xe0, 0x77, 0x19, 0x76, 0xb3, 0xa0, + 0x88, 0x49, 0x4d, 0xeb, 0xee, 0xc8, 0x65, 0x52, 0xfb, 0x5b, 0x5b, 0xc8, + 0x20, 0x10, 0xd1, 0xae, 0x9c, 0xc9, 0x2e, 0x1f, 0x82, 0x0d, 0x0c, 0x25, + 0x87, 0xf4, 0x8e, 0x7b, 0x86, 0xbb, 0x9e, 0xf9, 0xdd, 0xe2, 0x35, 0xd6, + 0x15, 0x6c, 0x87, 0xfa, 0xec, 0xb3, 0x78, 0x2d, 0xd0, 0x00, 0x25, 0xa4, + 0x38, 0xea, 0x7b, 0x78, 0x42, 0x0e, 0xca, 0x49, 0x67, 0xa8, 0xe7, 0xba, + 0xbf, 0x6e, 0xd0, 0xc6, 0xb1, 0xbf, 0x39, 0x3e, 0x69, 0x29, 0xd1, 0x19, + 0xa5, 0xf8, 0xa7, 0x1d, 0xb5, 0xb8, 0xe4, 0x56, 0x60, 0x39, 0xd1, 0x03, + 0xb9, 0x27, 0x88, 0xf8, 0x26, 0xaf, 0x21, 0x96, 0x09, 0x01, 0xce, 0x20, + 0xc1, 0x0c, 0x81, 0x07, 0xce, 0x48, 0xd1, 0x50, 0x68, 0xa2, 0xc7, 0x92, + 0x0c, 0x07, 0x4b, 0x4b, 0x5d, 0x2e, 0x73, 0xa0, 0xcf, 0x6d, 0x39, 0x4a, + 0x69, 0xa2, 0xb7, 0x06, 0x59, 0xe9, 0x11, 0xa1, 0x7f, 0x81, 0xf3, 0x99, + 0x49, 0x4d, 0xc1, 0x6e, 0x3b, 0xac, 0xd8, 0x1d, 0xb6, 0xda, 0xcc, 0xb4, + 0x82, 0x09, 0x69, 0x3e, 0x5a, 0xa3, 0x8a, 0xed, 0x30, 0xeb, 0x2e, 0x2f, + 0x68, 0xd4, 0x4b, 0x03, 0x79, 0xd3, 0xb4, 0x2c, 0xfc, 0x7a, 0xb1, 0xdd, + 0xfa, 0x57, 0xb9, 0xaf, 0x73, 0xf4, 0x2f, 0x6b, 0x9b, 0x2e, 0x3f, 0x15, + 0x6e, 0x9c, 0x9a, 0xc3, 0x5c, 0xc6, 0x39, 0xce, 0x6b, 0x0e, 0xd0, 0x1f, + 0x0e, 0xfb, 0xa4, 0x84, 0x94, 0x98, 0x6d, 0x67, 0xb0, 0x41, 0xa9, 0xba, + 0xb8, 0x02, 0x78, 0xf2, 0x95, 0x1b, 0x68, 0xc2, 0xbf, 0x14, 0xb6, 0xea, + 0xfd, 0x56, 0x90, 0x4b, 0x47, 0xa6, 0x79, 0x33, 0xe0, 0x0f, 0x09, 0xa8, + 0xc8, 0x60, 0x7b, 0xf7, 0xd6, 0xc6, 0x56, 0xd2, 0x75, 0x8d, 0xae, 0x3f, + 0x22, 0x9b, 0x23, 0x26, 0xb7, 0x83, 0x53, 0x65, 0xad, 0x89, 0x25, 0xa2, + 0x64, 0x0e, 0xdc, 0xa4, 0xa7, 0x84, 0xcb, 0xe9, 0xf9, 0x58, 0xef, 0x8b, + 0x18, 0x44, 0xf7, 0x83, 0xf7, 0x14, 0x06, 0xd3, 0x63, 0x88, 0x6b, 0x5b, + 0xb9, 0xc7, 0x80, 0x17, 0xa1, 0xb7, 0x1b, 0x1c, 0xed, 0x05, 0xa4, 0x17, + 0x09, 0xf7, 0x34, 0x71, 0xf7, 0xc2, 0x8d, 0x58, 0xf8, 0x6d, 0x07, 0x6b, + 0x00, 0x0d, 0x30, 0x65, 0xa0, 0x70, 0x63, 0xc1, 0x25, 0x3c, 0xe7, 0x42, + 0xe9, 0x59, 0x54, 0xdc, 0x32, 0x2c, 0xac, 0x81, 0xfb, 0xc4, 0x09, 0x1e, + 0x61, 0x6f, 0x64, 0xdf, 0x70, 0xb1, 0x82, 0x82, 0xd7, 0x39, 0xbc, 0xb5, + 0xc7, 0x61, 0xfe, 0xc9, 0xd7, 0x5f, 0x92, 0x2d, 0x85, 0x8f, 0x24, 0x3a, + 0xc0, 0xd1, 0xa8, 0x23, 0x83, 0xe4, 0x44, 0x35, 0xbf, 0x04, 0x36, 0x0c, + 0x4a, 0xc1, 0xd9, 0x24, 0xf2, 0xf6, 0x82, 0x76, 0x98, 0xd6, 0x75, 0x04, + 0x4a, 0x4a, 0x47, 0x65, 0xfd, 0x42, 0xd2, 0xd6, 0xec, 0x7b, 0x1a, 0x35, + 0x25, 0xa1, 0x8e, 0x24, 0xfd, 0xe3, 0xf2, 0x2b, 0x3f, 0x68, 0xb8, 0x7b, + 0xed, 0x01, 0x86, 0x34, 0x79, 0x11, 0x13, 0xd9, 0x08, 0xe4, 0x12, 0xc6, + 0x9d, 0xaf, 0x66, 0xef, 0x03, 0xfd, 0xca, 0xb9, 0x78, 0x7b, 0xe5, 0xdb, + 0x6c, 0x8e, 0x4d, 0x8d, 0xf0, 0xf0, 0x3a, 0x94, 0x94, 0xdb, 0x66, 0x56, + 0x5b, 0x1d, 0xbe, 0xd7, 0xd4, 0xea, 0xf8, 0x0d, 0x68, 0x73, 0x5c, 0x0f, + 0xce, 0x51, 0x7f, 0x69, 0x3f, 0x74, 0xc0, 0x8d, 0xbc, 0x6e, 0xf7, 0x7d, + 0xca, 0x8e, 0xcd, 0xc2, 0x1f, 0xa6, 0xef, 0x76, 0xd8, 0x3a, 0x1f, 0x20, + 0x3f, 0xb9, 0x2f, 0x42, 0xcf, 0x43, 0x7e, 0xc7, 0x44, 0xed, 0xdf, 0xb1, + 0xdf, 0x4a, 0x67, 0x6f, 0x8a, 0x4a, 0x69, 0x55, 0x81, 0x99, 0x92, 0xdf, + 0xb2, 0xd5, 0x5b, 0x03, 0xda, 0x46, 0xcb, 0x0c, 0x6d, 0x04, 0x77, 0x8f, + 0x82, 0x25, 0xfd, 0x2b, 0xa8, 0x54, 0xe0, 0xd0, 0xda, 0x9c, 0x3b, 0x3a, + 0x46, 0x84, 0x08, 0x92, 0xd2, 0xbb, 0x7c, 0x5c, 0x1a, 0x2a, 0x68, 0x60, + 0x60, 0x98, 0x97, 0xba, 0x39, 0x27, 0xbc, 0xa1, 0xba, 0x86, 0x3b, 0x22, + 0x4b, 0x74, 0xd1, 0xbe, 0x3f, 0xee, 0x49, 0x4f, 0x2a, 0xde, 0x87, 0x6d, + 0xd8, 0xcd, 0x6b, 0x5b, 0x16, 0x98, 0x93, 0x24, 0x54, 0x7c, 0xf6, 0x70, + 0xa9, 0xe5, 0xe2, 0x5f, 0x8a, 0x2d, 0xb6, 0xca, 0xc0, 0x35, 0x17, 0x16, + 0x3a, 0x82, 0x40, 0x6e, 0xdd, 0x37, 0x3c, 0x13, 0xb9, 0x7a, 0x05, 0x8c, + 0xaa, 0x8a, 0x8d, 0x8d, 0x8d, 0xcd, 0x69, 0xda, 0x3b, 0x6b, 0xc2, 0xe7, + 0x7a, 0xcd, 0x37, 0x57, 0xd0, 0xb2, 0x4e, 0xc1, 0x0e, 0x60, 0x36, 0x39, + 0xdf, 0x48, 0x97, 0x11, 0x3b, 0x47, 0xc5, 0x25, 0x3c, 0xc7, 0xdb, 0xf2, + 0x2e, 0x68, 0x73, 0x9c, 0xeb, 0x1a, 0xd2, 0x0b, 0x41, 0x73, 0x80, 0x07, + 0xcb, 0x5d, 0x21, 0x31, 0xea, 0xd9, 0x4d, 0x2d, 0x01, 0xee, 0xd2, 0x78, + 0x73, 0xb4, 0x8f, 0x89, 0x54, 0x9a, 0x7d, 0x81, 0xa3, 0xc7, 0x81, 0xa1, + 0xe1, 0x48, 0xb4, 0x3c, 0xb5, 0x9c, 0x90, 0x0c, 0x47, 0x23, 0x52, 0x92, + 0x9b, 0xd8, 0x3d, 0x4a, 0xfb, 0xaf, 0xd9, 0x75, 0xaf, 0x35, 0xbc, 0x16, + 0xb8, 0x02, 0x5d, 0xa1, 0x3b, 0x75, 0x9e, 0x47, 0x8a, 0xdb, 0x6d, 0x17, + 0x55, 0x5b, 0x9d, 0xb7, 0x6b, 0x00, 0x80, 0xed, 0xc6, 0x76, 0xff, 0x00, + 0x27, 0xb7, 0x7f, 0x05, 0xcf, 0x74, 0x99, 0x19, 0xb5, 0xc7, 0x79, 0xd4, + 0x76, 0x9d, 0x17, 0x6b, 0x87, 0x63, 0x0d, 0x7b, 0x6f, 0x01, 0xc5, 0xda, + 0x6d, 0x3f, 0x9c, 0x47, 0x84, 0xf6, 0x49, 0x4e, 0x5e, 0x2e, 0x38, 0xc9, + 0xa8, 0x33, 0xd3, 0xb9, 0xee, 0x73, 0xa1, 0xd4, 0xb4, 0x06, 0x11, 0x11, + 0x1b, 0x9c, 0xe3, 0xf4, 0x56, 0x95, 0x3d, 0x26, 0xef, 0x41, 0xae, 0x7b, + 0x1b, 0x4b, 0xa4, 0xef, 0x61, 0x32, 0x40, 0x9e, 0x49, 0xaf, 0x6f, 0x2b, + 0x62, 0x8a, 0x6a, 0x61, 0xdc, 0xd0, 0x1a, 0x38, 0xda, 0x38, 0x46, 0xb5, + 0xcc, 0xd6, 0x44, 0x07, 0x36, 0x12, 0x53, 0xcb, 0x31, 0xae, 0xae, 0xeb, + 0x5a, 0xef, 0xd0, 0x19, 0x00, 0x54, 0x03, 0xdc, 0x47, 0x9f, 0xc5, 0xc9, + 0xfe, 0xce, 0xca, 0xec, 0x69, 0xb9, 0x86, 0xb0, 0x79, 0x2f, 0x64, 0x09, + 0x3a, 0x8e, 0x56, 0xfb, 0x31, 0xb1, 0xde, 0xe6, 0x3d, 0xec, 0x1e, 0xa3, + 0x08, 0x73, 0x5e, 0x46, 0xad, 0x9d, 0x39, 0x44, 0x7b, 0xab, 0xb2, 0xc0, + 0xc2, 0xcd, 0xcd, 0x69, 0x20, 0x92, 0x34, 0x91, 0xf1, 0x49, 0x4f, 0x38, + 0x59, 0x75, 0x92, 0xf6, 0x6f, 0x00, 0xfd, 0x12, 0x04, 0xcc, 0x76, 0x6f, + 0x82, 0x7c, 0x7c, 0x7b, 0xf3, 0x37, 0xb6, 0xcd, 0xcc, 0x0e, 0x1a, 0x3f, + 0x6e, 0xc2, 0x08, 0x6c, 0xf2, 0x00, 0x32, 0x25, 0x74, 0x2c, 0xc7, 0x05, + 0xed, 0x71, 0xd1, 0xac, 0x10, 0xdf, 0x3e, 0xf2, 0x54, 0xde, 0xc6, 0xb4, + 0x70, 0x65, 0xc7, 0x48, 0x49, 0x4f, 0x21, 0x6f, 0x48, 0xea, 0x54, 0x35, + 0xae, 0xab, 0xf4, 0xae, 0x6e, 0xb6, 0x35, 0x8e, 0x25, 0xc1, 0xbe, 0x3e, + 0xe3, 0xdd, 0x37, 0xec, 0xdc, 0xdc, 0x86, 0xb4, 0xda, 0x4b, 0x5d, 0x59, + 0xdd, 0x5b, 0x81, 0x8d, 0xa7, 0xb6, 0x8f, 0x5d, 0x75, 0x54, 0xd6, 0xc2, + 0x6c, 0x81, 0xea, 0x11, 0x0e, 0x70, 0xee, 0x04, 0xc7, 0xe5, 0x55, 0xcb, + 0x7d, 0x6b, 0x78, 0xda, 0xc1, 0xa4, 0x46, 0xa9, 0x29, 0xca, 0x67, 0x49, + 0x65, 0x97, 0xd7, 0x71, 0x04, 0x38, 0x02, 0x5e, 0xd6, 0xce, 0xd7, 0x39, + 0xd1, 0x24, 0xf9, 0xe8, 0xa7, 0x67, 0x49, 0x0e, 0x26, 0x2c, 0x2d, 0x33, + 0xdc, 0x02, 0x7c, 0x39, 0xd1, 0x6d, 0x36, 0xb6, 0xb6, 0xc1, 0x00, 0x7c, + 0xfc, 0x78, 0x50, 0xda, 0xfd, 0xd0, 0x06, 0x84, 0x99, 0xed, 0xde, 0x52, + 0x53, 0xcd, 0xe7, 0x74, 0xfc, 0xca, 0x43, 0x8b, 0x4c, 0xe3, 0x06, 0x89, + 0xda, 0xe8, 0x2d, 0x74, 0xf2, 0x46, 0x9a, 0x7c, 0xd3, 0x62, 0xf4, 0xfc, + 0xbb, 0x6c, 0x6b, 0x31, 0xec, 0xd8, 0x06, 0x8f, 0x76, 0xa4, 0x0f, 0x1d, + 0x0c, 0x85, 0xd3, 0x58, 0x0b, 0x83, 0x9b, 0xe9, 0x87, 0x36, 0x00, 0x92, + 0x74, 0xe7, 0xc2, 0x14, 0x6a, 0x65, 0xac, 0x7f, 0x2d, 0x6b, 0x00, 0xec, + 0x3b, 0x9f, 0xf7, 0x24, 0xa7, 0x9e, 0xea, 0x18, 0x58, 0x78, 0xd6, 0x06, + 0x7a, 0xc6, 0xfb, 0x87, 0xd2, 0xa5, 0xed, 0x2e, 0x2d, 0x9f, 0xce, 0x96, + 0xb4, 0xe9, 0xdd, 0x12, 0x9a, 0x81, 0x69, 0xaa, 0xaa, 0x9c, 0x5d, 0x70, + 0x30, 0xe9, 0x80, 0x47, 0x78, 0xec, 0xb5, 0xad, 0x71, 0x16, 0x58, 0x5d, + 0xb7, 0x61, 0x89, 0x2e, 0xee, 0xe8, 0xe0, 0x2c, 0xeb, 0x69, 0xca, 0x24, + 0x3a, 0xa7, 0x35, 0xbb, 0x8f, 0xb6, 0x09, 0x6c, 0x41, 0xe0, 0xc0, 0x3b, + 0xbe, 0x69, 0x29, 0xae, 0xee, 0x95, 0x71, 0xf5, 0x1b, 0x55, 0x4e, 0x6d, + 0x64, 0x80, 0xc0, 0xf7, 0x07, 0x38, 0x88, 0xd6, 0x60, 0xfc, 0x94, 0x1f, + 0xd2, 0x73, 0xef, 0xdb, 0x4d, 0xbb, 0x69, 0xac, 0x01, 0x24, 0xc1, 0x26, + 0x7b, 0x37, 0x6f, 0x84, 0x2d, 0x6a, 0x5b, 0xd4, 0x9d, 0x50, 0xb2, 0xd1, + 0x4e, 0xe7, 0x09, 0x6c, 0x6e, 0x69, 0xf2, 0x91, 0xe2, 0x8e, 0xc7, 0xe5, + 0x10, 0x0d, 0xdb, 0x18, 0xfd, 0x43, 0x43, 0x09, 0x32, 0x3c, 0x75, 0x84, + 0x94, 0xe4, 0x51, 0xd0, 0xf2, 0x40, 0x65, 0x5f, 0x69, 0x6b, 0x68, 0x60, + 0xfc, 0xda, 0xc6, 0xe9, 0x9d, 0x22, 0x56, 0x80, 0xe9, 0x18, 0x4c, 0x07, + 0x78, 0xdc, 0x5d, 0x05, 0xc5, 0xc7, 0x4f, 0x86, 0x90, 0xa1, 0x6d, 0xbd, + 0x69, 0x96, 0x96, 0x62, 0xe2, 0x51, 0x65, 0x42, 0x36, 0xbd, 0xf6, 0x16, + 0x93, 0xe7, 0x1d, 0xa1, 0x30, 0x3f, 0x58, 0x6d, 0x70, 0x77, 0xa1, 0x8c, + 0xc8, 0xd0, 0x9d, 0xef, 0x70, 0x1d, 0xe7, 0xc5, 0x25, 0x34, 0xef, 0xe8, + 0xd8, 0xaf, 0x0e, 0xbb, 0x19, 0xad, 0xae, 0x26, 0x06, 0xde, 0x4f, 0xc6, + 0x25, 0x46, 0xae, 0x8a, 0xea, 0x8e, 0x8f, 0x68, 0xd2, 0x45, 0x60, 0x16, + 0xfc, 0x60, 0xb6, 0x09, 0x5a, 0x7e, 0x9f, 0x51, 0xd9, 0xb5, 0xe7, 0x1c, + 0x36, 0x3d, 0xf0, 0x1e, 0x60, 0xf9, 0x19, 0xd5, 0x0d, 0xd5, 0x66, 0x9c, + 0x96, 0xb9, 0xf7, 0x54, 0xda, 0x84, 0x83, 0xb5, 0xae, 0xdc, 0x67, 0xfa, + 0xdf, 0x04, 0x94, 0xe7, 0xf5, 0x2e, 0x94, 0xe7, 0x61, 0xb2, 0xca, 0x2c, + 0xfd, 0x66, 0xb7, 0x08, 0x63, 0xbb, 0x83, 0xcb, 0x04, 0xf0, 0x55, 0x4a, + 0xf1, 0xba, 0xcb, 0x1b, 0x5b, 0x9c, 0x69, 0x71, 0x2e, 0x1b, 0x99, 0x3a, + 0xb7, 0x49, 0xfa, 0x5b, 0x79, 0x84, 0x3e, 0xb7, 0xd7, 0x33, 0xb1, 0x7a, + 0x8f, 0xa5, 0x53, 0x98, 0x5b, 0x5b, 0x40, 0x6b, 0x8b, 0x44, 0xea, 0x06, + 0xe5, 0x45, 0xff, 0x00, 0x59, 0x3a, 0xa3, 0x88, 0x0e, 0x7b, 0x4d, 0x6f, + 0x96, 0xc0, 0x6b, 0x41, 0x07, 0xc8, 0xa4, 0xa7, 0x71, 0xf4, 0x75, 0x17, + 0x4c, 0x06, 0x96, 0x1d, 0x60, 0x92, 0x78, 0xf1, 0x8d, 0x13, 0x33, 0xa5, + 0xe5, 0x1d, 0xc2, 0xc7, 0x37, 0x6e, 0xae, 0x8f, 0x19, 0xd6, 0x06, 0x8e, + 0x58, 0x4e, 0xfa, 0xcb, 0xd4, 0xd8, 0xd0, 0x1a, 0x5b, 0xed, 0xf1, 0x60, + 0x91, 0xd8, 0x7e, 0x45, 0xbd, 0xd1, 0xfa, 0xa6, 0x4e, 0x6e, 0x2d, 0x56, + 0x17, 0xd6, 0x72, 0x1e, 0x1c, 0xe7, 0xb0, 0xcb, 0x44, 0x03, 0x00, 0xb7, + 0x6a, 0x4a, 0x64, 0x3a, 0x46, 0x43, 0x81, 0x71, 0x20, 0x87, 0x99, 0xdb, + 0x2e, 0x1a, 0x1e, 0xc6, 0x00, 0x44, 0xfd, 0x98, 0xf0, 0x43, 0x18, 0xe6, + 0x80, 0x23, 0x73, 0x9e, 0x37, 0x69, 0xe1, 0xf4, 0x55, 0xc3, 0x65, 0xf5, + 0xb4, 0x97, 0x56, 0x5f, 0xdf, 0xf4, 0x6e, 0x04, 0xfc, 0x00, 0x20, 0x20, + 0xb3, 0xa8, 0x3d, 0xae, 0x7b, 0x8e, 0x16, 0x5b, 0x9a, 0xe8, 0xd7, 0x66, + 0xbf, 0xf5, 0x49, 0x29, 0xad, 0x67, 0x48, 0x7b, 0x1a, 0xf6, 0x17, 0xb4, + 0xd2, 0xe0, 0x36, 0xcb, 0x64, 0x8e, 0xe7, 0xc7, 0xba, 0xac, 0xec, 0x7b, + 0xeb, 0x6e, 0xd1, 0x4d, 0x85, 0xf3, 0x0d, 0x76, 0xd6, 0x91, 0xa1, 0xd0, + 0xab, 0x4f, 0xfa, 0xc3, 0x8f, 0xf6, 0x96, 0x54, 0xfa, 0xaf, 0xac, 0x19, + 0x0e, 0xad, 0xf5, 0x92, 0xef, 0x8c, 0x47, 0x6f, 0x8a, 0x76, 0xf5, 0xee, + 0x8d, 0xba, 0x77, 0x90, 0x4f, 0x3f, 0xa3, 0x20, 0xfe, 0x01, 0x25, 0x34, + 0xbe, 0xc3, 0x9d, 0xb9, 0x97, 0x37, 0x6b, 0x1f, 0xa9, 0x87, 0x34, 0x34, + 0x43, 0x84, 0x1e, 0x42, 0x2f, 0xd9, 0x32, 0xb7, 0xc6, 0xef, 0x77, 0x33, + 0xbd, 0xb1, 0x3e, 0x3f, 0xcd, 0xca, 0xd1, 0x6e, 0x7e, 0x05, 0xcd, 0xf5, + 0x2b, 0xbc, 0x6d, 0x67, 0x8b, 0xb6, 0x10, 0x4f, 0xf5, 0xa0, 0xa8, 0xfe, + 0xd0, 0xe9, 0x9f, 0x4b, 0xed, 0x8c, 0xf0, 0xfa, 0x43, 0xc7, 0xe1, 0x29, + 0x29, 0xcc, 0x3d, 0x6f, 0x37, 0x70, 0xa6, 0xb7, 0x5d, 0x6b, 0xcf, 0x00, + 0x86, 0xb1, 0xa0, 0x9f, 0x12, 0x09, 0xd3, 0xe2, 0x8c, 0xce, 0xa9, 0xd4, + 0x6b, 0x7c, 0xda, 0x5b, 0x46, 0xe2, 0x0b, 0xdc, 0x5c, 0xeb, 0x8b, 0x80, + 0xe0, 0x34, 0x30, 0x40, 0x92, 0xb0, 0x71, 0x72, 0x70, 0x23, 0xf4, 0xb6, + 0xd4, 0xd0, 0xdf, 0x6c, 0x34, 0x47, 0xfd, 0x5b, 0x9c, 0x4f, 0xdc, 0x8a, + 0x7a, 0xa7, 0x4e, 0x63, 0xe5, 0xb7, 0x96, 0x06, 0x37, 0x40, 0xd8, 0x83, + 0x1d, 0xfd, 0xbc, 0x9f, 0x24, 0x94, 0xf4, 0x59, 0x3d, 0x7d, 0xb6, 0x45, + 0x56, 0x30, 0xd5, 0x5b, 0x75, 0xf5, 0x24, 0x35, 0xaf, 0xf0, 0x8e, 0x64, + 0x2c, 0xae, 0xaf, 0xd4, 0xea, 0xbf, 0x0e, 0xda, 0xc5, 0x96, 0x39, 0xf0, + 0x03, 0x60, 0x83, 0x51, 0x92, 0x25, 0xbf, 0x76, 0xaa, 0x8b, 0x7a, 0x97, + 0x4f, 0xb0, 0xbd, 0xa6, 0x4d, 0x6e, 0xd4, 0xbd, 0xc1, 0xcc, 0x6b, 0xc1, + 0xe5, 0xbc, 0xbb, 0xc1, 0x13, 0x3d, 0xd8, 0xe7, 0x0d, 0xde, 0x8d, 0x6e, + 0x69, 0xe4, 0x1d, 0xe5, 0xf1, 0xaf, 0x60, 0x52, 0x53, 0x93, 0xe9, 0xb9, + 0xbe, 0xd7, 0x08, 0xd7, 0x50, 0x7b, 0x29, 0x57, 0x53, 0x83, 0x9a, 0xed, + 0x62, 0x24, 0x7d, 0xe5, 0x20, 0xeb, 0x9f, 0x61, 0x2f, 0x12, 0xe9, 0xd2, + 0x04, 0x22, 0x34, 0x8f, 0x5a, 0xb6, 0x4c, 0x35, 0xa2, 0x0c, 0xf9, 0x8d, + 0x74, 0x49, 0x4c, 0x2a, 0x7d, 0x94, 0xda, 0x0b, 0x4e, 0xdb, 0x1a, 0xf9, + 0x0e, 0x00, 0x13, 0xcc, 0xc7, 0x81, 0x5b, 0xb4, 0xe7, 0xdd, 0x6d, 0x6c, + 0x61, 0xb1, 0xc0, 0x03, 0x3b, 0x85, 0x64, 0x7c, 0xa5, 0xba, 0x85, 0x8a, + 0x5b, 0x58, 0xb8, 0x6d, 0xfa, 0x0d, 0x78, 0x13, 0xc9, 0x27, 0xc5, 0x5e, + 0xa6, 0xca, 0xc0, 0x96, 0xbb, 0x6b, 0x9d, 0x04, 0x34, 0x3b, 0x66, 0x9f, + 0x71, 0xd5, 0x25, 0x3a, 0xd8, 0xfd, 0x52, 0xca, 0x1c, 0x5a, 0x72, 0x9c, + 0xd2, 0xdd, 0x18, 0x5c, 0x0d, 0x8d, 0x27, 0xce, 0x5a, 0x15, 0xaa, 0xfa, + 0xde, 0x53, 0xdc, 0x2c, 0xb5, 0xb5, 0x90, 0xcf, 0x6e, 0xf9, 0x1b, 0x09, + 0x3e, 0x02, 0x77, 0x2c, 0x4a, 0xf3, 0x36, 0x9f, 0xd1, 0x7a, 0x9e, 0xa0, + 0x90, 0xe2, 0xc2, 0xd2, 0x36, 0xf8, 0xcc, 0x49, 0xd7, 0xc9, 0x12, 0xee, + 0xa2, 0x76, 0xc5, 0x9e, 0xa1, 0xaf, 0x4d, 0x1f, 0x59, 0xe4, 0x77, 0x0e, + 0x0e, 0x6a, 0x4a, 0x75, 0xef, 0xea, 0x79, 0xd6, 0x02, 0x48, 0xb2, 0x8f, + 0x69, 0x70, 0xad, 0xac, 0xd0, 0x80, 0x62, 0x7e, 0x9b, 0x4a, 0x7a, 0xba, + 0xb6, 0x45, 0x7b, 0x2b, 0x25, 0x8f, 0x2e, 0x99, 0xdc, 0xe2, 0xc8, 0xf8, + 0xfd, 0x21, 0xdf, 0xc5, 0x63, 0x53, 0x95, 0x56, 0x43, 0x43, 0xdf, 0xea, + 0x31, 0x84, 0x43, 0x4b, 0x6b, 0x71, 0x69, 0xf8, 0x7b, 0x8f, 0xe2, 0x56, + 0x8e, 0x1b, 0xf1, 0x2e, 0x33, 0x40, 0x79, 0xdb, 0xf4, 0x5c, 0x6a, 0x3b, + 0x5b, 0xe3, 0xab, 0x81, 0xf0, 0x49, 0x4d, 0xd6, 0xf5, 0xab, 0x40, 0x86, + 0xb0, 0x1b, 0x01, 0xda, 0x7f, 0x48, 0xc0, 0xcd, 0x07, 0x3a, 0x9e, 0xde, + 0x49, 0xac, 0xeb, 0x37, 0x3e, 0xf2, 0xcb, 0x6c, 0x6d, 0x4c, 0x6c, 0x01, + 0x00, 0xc1, 0x77, 0x24, 0xee, 0x2d, 0x8d, 0x3e, 0x28, 0x5f, 0x68, 0xf4, + 0x9c, 0xe2, 0x09, 0x75, 0x6e, 0x74, 0x0d, 0xc0, 0xb4, 0x8f, 0x13, 0xc7, + 0x05, 0x51, 0xbe, 0xf3, 0x6b, 0x9c, 0xdc, 0x6b, 0x48, 0xda, 0x64, 0xb7, + 0x7b, 0xbe, 0xef, 0x77, 0xf7, 0x24, 0xa7, 0x57, 0xf6, 0xb6, 0x49, 0x05, + 0xae, 0x10, 0xcf, 0xf4, 0x8c, 0x6e, 0xe3, 0x1f, 0xd9, 0xdc, 0xa1, 0x8d, + 0x98, 0xfa, 0x85, 0x86, 0xa7, 0x1b, 0x5e, 0xe7, 0x6f, 0x8b, 0x37, 0x6d, + 0x01, 0xc4, 0x4c, 0x69, 0x31, 0xe4, 0xb1, 0xe8, 0x07, 0x68, 0x70, 0x6b, + 0xc3, 0xc1, 0x20, 0x6d, 0x0d, 0x22, 0x49, 0x93, 0x06, 0x00, 0xfc, 0xaa, + 0xdd, 0x59, 0x57, 0x33, 0xd4, 0x05, 0xa1, 0x84, 0xfb, 0x64, 0x82, 0x6c, + 0xdd, 0x1d, 0xf6, 0xca, 0x4a, 0x75, 0x8f, 0x50, 0xb4, 0x99, 0x96, 0xba, + 0x3b, 0x34, 0x49, 0xff, 0x00, 0xaa, 0x41, 0xfd, 0xb2, 0xc6, 0xdc, 0xe7, + 0x3b, 0xd8, 0xc3, 0x07, 0x6b, 0x83, 0x9c, 0xed, 0xdd, 0xe3, 0x64, 0xe9, + 0xf2, 0x54, 0x3e, 0xd5, 0xf6, 0x7c, 0x7d, 0xd6, 0x07, 0x58, 0xf6, 0x89, + 0x7b, 0xfd, 0x32, 0xc7, 0x69, 0xc7, 0x60, 0x87, 0xf6, 0xb9, 0x7b, 0x89, + 0x0f, 0x75, 0x7c, 0x81, 0x1c, 0x69, 0xc8, 0x92, 0x3f, 0x22, 0x4a, 0x75, + 0x87, 0x5c, 0x3e, 0xb3, 0x59, 0xe8, 0x3b, 0x61, 0x04, 0xee, 0x21, 0xcd, + 0x27, 0x8d, 0x1a, 0xd3, 0xaf, 0xde, 0x8a, 0x7a, 0xbb, 0x5a, 0x09, 0xfb, + 0x3b, 0xa5, 0xda, 0x46, 0xf6, 0x8d, 0x47, 0x63, 0xb9, 0x61, 0xd9, 0x9a, + 0x40, 0xd2, 0x60, 0x09, 0xdc, 0x5c, 0xd2, 0x3c, 0x87, 0xb4, 0x21, 0x57, + 0x94, 0xd6, 0x56, 0x5c, 0xe1, 0x21, 0xda, 0x8f, 0x6b, 0x5c, 0x24, 0xf8, + 0xb9, 0xc6, 0x4a, 0x4a, 0x75, 0xaa, 0xce, 0x75, 0x8d, 0x75, 0x97, 0x54, + 0xd0, 0x41, 0x30, 0x5a, 0xf0, 0x19, 0x24, 0xf9, 0xa8, 0xd1, 0xd4, 0xab, + 0x25, 0xe6, 0xea, 0x1c, 0x24, 0x6d, 0x6c, 0xbb, 0x74, 0x37, 0xc1, 0xba, + 0x78, 0xf8, 0x2c, 0xc3, 0x91, 0x55, 0x8d, 0x32, 0x5e, 0x58, 0x7d, 0xc4, + 0x02, 0x06, 0x83, 0xf2, 0x26, 0x76, 0x55, 0x7b, 0x1a, 0xfa, 0xd9, 0x2e, + 0x27, 0x49, 0x63, 0x77, 0x47, 0x72, 0x3e, 0x5e, 0x29, 0x29, 0xe8, 0x2b, + 0xea, 0x98, 0xb5, 0xd6, 0xd1, 0x6b, 0x5e, 0xd0, 0xdd, 0x0b, 0x88, 0xfc, + 0x7f, 0xd4, 0x23, 0x37, 0xa9, 0xf4, 0xf2, 0x43, 0x7d, 0x50, 0x26, 0x41, + 0x0e, 0x99, 0x1d, 0xff, 0x00, 0x8a, 0xc3, 0x19, 0x6c, 0x24, 0x8d, 0xae, + 0x7b, 0x04, 0x6a, 0xe3, 0x13, 0xf9, 0x14, 0x2b, 0xea, 0x75, 0x02, 0xe6, + 0xb8, 0x80, 0x01, 0xda, 0x1a, 0x08, 0xed, 0xcf, 0xdc, 0x92, 0x9e, 0x8f, + 0xed, 0x38, 0xd5, 0x54, 0x2e, 0x75, 0x8d, 0x75, 0x63, 0x40, 0xe1, 0xae, + 0xbf, 0x29, 0x41, 0x1d, 0x6b, 0xa6, 0xec, 0x07, 0xd5, 0x24, 0x3b, 0x4d, + 0x5a, 0x63, 0xe7, 0xe0, 0xb0, 0x2c, 0xb1, 0x8e, 0xb7, 0xd5, 0x69, 0x2d, + 0x93, 0x24, 0x35, 0xc7, 0xdd, 0xdb, 0xf9, 0x5f, 0x91, 0x2b, 0x32, 0x30, + 0xda, 0x3d, 0xf5, 0x93, 0x6c, 0x43, 0x01, 0x9d, 0x52, 0x53, 0xbd, 0x97, + 0xd4, 0x71, 0x2b, 0xb1, 0xb5, 0x9b, 0x1a, 0xed, 0xe0, 0x48, 0x6c, 0x97, + 0x80, 0x78, 0x3e, 0x10, 0x83, 0x6f, 0x52, 0xc1, 0xdc, 0x4d, 0x9b, 0x83, + 0x43, 0x77, 0x07, 0x96, 0xc0, 0xfc, 0x57, 0x3d, 0x75, 0xcc, 0xad, 0xaf, + 0x0c, 0xd5, 0xcf, 0xd6, 0x58, 0xd1, 0x3e, 0x52, 0xe7, 0x26, 0x63, 0xdb, + 0x6d, 0x70, 0xfa, 0xdc, 0xcd, 0x0e, 0xdd, 0xd6, 0x11, 0x3e, 0x5a, 0x14, + 0x94, 0xe6, 0xf5, 0xdb, 0x2b, 0xbb, 0x3d, 0xf7, 0x54, 0x65, 0x86, 0x36, + 0x93, 0xdc, 0x00, 0x15, 0x4a, 0x1c, 0x3d, 0x6a, 0x8d, 0x83, 0x7b, 0x45, + 0x86, 0x58, 0x34, 0x91, 0xfc, 0x11, 0x73, 0xc6, 0xdc, 0x90, 0xd0, 0x20, + 0x46, 0xbf, 0x0e, 0xda, 0xea, 0x83, 0x5b, 0x00, 0xb0, 0x90, 0x63, 0x57, + 0x19, 0x49, 0x48, 0x49, 0xdc, 0x1d, 0xac, 0x9e, 0xde, 0x3a, 0x4c, 0x2e, + 0xa7, 0xea, 0xe7, 0xb7, 0x06, 0x89, 0xd0, 0x16, 0xbe, 0x63, 0xb9, 0x9d, + 0x17, 0x2a, 0x2b, 0x73, 0x9b, 0x00, 0x6b, 0xa9, 0x3f, 0x00, 0x4a, 0xd5, + 0xe9, 0x99, 0xd9, 0x94, 0xb6, 0xb1, 0x53, 0xbf, 0x47, 0x13, 0x07, 0x89, + 0xe7, 0x8e, 0xfe, 0x69, 0x29, 0xec, 0x5a, 0xdb, 0x1d, 0x3e, 0xe0, 0xd7, + 0x09, 0xda, 0xd7, 0x70, 0x7c, 0xf9, 0x44, 0x6e, 0x65, 0x0d, 0xa8, 0x38, + 0xbc, 0x36, 0xb6, 0xfd, 0x27, 0x38, 0x80, 0x07, 0x91, 0xd7, 0xc5, 0x62, + 0xe6, 0x75, 0x8c, 0x1c, 0xac, 0x46, 0xb3, 0x69, 0xf5, 0xc3, 0x9a, 0x5c, + 0xd0, 0xc7, 0x6c, 0x3f, 0xbc, 0x5a, 0xed, 0x3e, 0x5a, 0xaa, 0xb6, 0x3a, + 0xbb, 0x58, 0xe3, 0x73, 0xcf, 0xb8, 0x06, 0x80, 0xf3, 0xa0, 0x0d, 0xe0, + 0x06, 0xf8, 0x7c, 0xd2, 0x53, 0xb9, 0x67, 0x53, 0xc3, 0x39, 0x4c, 0x02, + 0xd6, 0x02, 0xd0, 0x03, 0x6c, 0x0d, 0x3b, 0xa5, 0xc6, 0x36, 0xef, 0xda, + 0x44, 0x78, 0xa9, 0xb0, 0xe0, 0x97, 0x0b, 0x9b, 0x6b, 0x49, 0xf7, 0x00, + 0xed, 0xc0, 0x01, 0xdc, 0xf6, 0xf2, 0x5c, 0xfd, 0x76, 0x1b, 0x1e, 0x2b, + 0x63, 0x41, 0x63, 0x81, 0x04, 0x82, 0x49, 0xf9, 0x6a, 0xa6, 0xfd, 0xfb, + 0x76, 0xb4, 0xee, 0x23, 0x96, 0x82, 0x74, 0x3e, 0x3b, 0x64, 0xa4, 0xa7, + 0xa4, 0x6f, 0xa5, 0x6c, 0xb9, 0x8e, 0xde, 0xd3, 0xa4, 0x80, 0x08, 0xd3, + 0xfb, 0x2a, 0xb7, 0xa7, 0xd2, 0xbe, 0xd1, 0xe9, 0xc5, 0x1e, 0xb6, 0xe8, + 0xdb, 0xb5, 0x9b, 0xf7, 0x73, 0xc4, 0x4f, 0x9a, 0xc0, 0x65, 0xd6, 0xd4, + 0x21, 0xaf, 0xb0, 0x07, 0x34, 0x82, 0x1a, 0xe2, 0x1a, 0x0c, 0xf3, 0x0d, + 0xe4, 0x14, 0xfe, 0xab, 0xb6, 0x6f, 0x81, 0xea, 0x71, 0xf3, 0x88, 0xdd, + 0xb7, 0x94, 0x94, 0xe6, 0x0a, 0x59, 0x03, 0x65, 0x4c, 0xd2, 0x34, 0x0d, + 0x09, 0x9a, 0xd2, 0x2e, 0xb0, 0x08, 0x6c, 0xb5, 0x8e, 0x6c, 0x76, 0x91, + 0xb4, 0xff, 0x00, 0xd4, 0xab, 0xb5, 0xd2, 0x09, 0xf5, 0x07, 0x3f, 0x47, + 0xca, 0x10, 0x2e, 0x6b, 0x46, 0x4d, 0x50, 0x7e, 0x93, 0x5e, 0xc3, 0xa6, + 0x92, 0xd2, 0x1d, 0xff, 0x00, 0x7e, 0x49, 0x48, 0xc8, 0x74, 0x01, 0x3e, + 0x3c, 0x68, 0x9a, 0x5d, 0x02, 0x4c, 0xf9, 0x9e, 0x55, 0x8d, 0x9a, 0x68, + 0x3f, 0xd7, 0xc4, 0xa1, 0x59, 0x4b, 0x83, 0x41, 0x1a, 0x13, 0xdf, 0xfb, + 0x92, 0x53, 0x55, 0xee, 0x70, 0x74, 0x34, 0xc6, 0x9f, 0x34, 0x4c, 0x2d, + 0x8e, 0xc8, 0x6f, 0xa8, 0x03, 0xb7, 0x7b, 0x40, 0xef, 0xaa, 0x6b, 0x69, + 0x78, 0x7b, 0x5d, 0xa3, 0x41, 0x91, 0xe2, 0x4f, 0x74, 0xec, 0xa8, 0x31, + 0xed, 0x78, 0x1f, 0x40, 0x83, 0x25, 0x25, 0x34, 0xb3, 0x05, 0x95, 0x1c, + 0x8a, 0x4b, 0xa4, 0x8b, 0x40, 0x67, 0x90, 0x24, 0x15, 0x0c, 0xdc, 0xab, + 0xb0, 0xb3, 0x5d, 0x5b, 0x0e, 0xe6, 0x30, 0x36, 0x03, 0xa7, 0xbb, 0x44, + 0xf1, 0x0a, 0xd7, 0x51, 0xac, 0x7d, 0xb0, 0xba, 0x62, 0x5d, 0x5b, 0x9d, + 0x3a, 0xf0, 0x7f, 0xd8, 0xa8, 0x75, 0x93, 0x39, 0x85, 0xda, 0xea, 0xd6, + 0xf3, 0xa7, 0x64, 0x94, 0x87, 0xed, 0xa4, 0x82, 0x1d, 0x5b, 0x49, 0x3c, + 0xb8, 0x97, 0x4f, 0x33, 0xfb, 0xc8, 0x9f, 0xb4, 0xde, 0x2a, 0x75, 0x42, + 0xa6, 0x6d, 0x78, 0x03, 0xb9, 0x88, 0xee, 0xd9, 0x3c, 0xaa, 0x49, 0x24, + 0xa7, 0x45, 0x9d, 0x66, 0xf1, 0x1b, 0xd8, 0x1e, 0xd1, 0xf9, 0xb2, 0x40, + 0x45, 0xa7, 0xeb, 0x0e, 0x4d, 0x2e, 0xd1, 0xa4, 0xd7, 0xac, 0xb3, 0x79, + 0x03, 0x5f, 0x82, 0xc9, 0x49, 0x25, 0x3d, 0x2d, 0x5f, 0x5a, 0xb1, 0xf6, + 0x01, 0x65, 0x0f, 0x0e, 0x1f, 0xca, 0xde, 0x27, 0xc7, 0xdc, 0x83, 0x7f, + 0xd6, 0x1c, 0x7b, 0x9e, 0x5f, 0xb2, 0xc6, 0x39, 0xda, 0x69, 0xb4, 0xfc, + 0xff, 0x00, 0x35, 0x60, 0x24, 0x92, 0x9d, 0xba, 0xfa, 0xf5, 0x4c, 0xd0, + 0xd6, 0xf7, 0x6b, 0xf4, 0x8b, 0xcf, 0x1f, 0xd5, 0x98, 0x94, 0x67, 0x7d, + 0x65, 0x61, 0x90, 0xd6, 0xbd, 0x81, 0xdc, 0x91, 0x04, 0x8f, 0x86, 0xe2, + 0x57, 0x3c, 0x92, 0x4a, 0x7a, 0x46, 0x7d, 0x64, 0xa0, 0xd6, 0x6a, 0x7e, + 0xf6, 0x83, 0x32, 0x60, 0x03, 0xf8, 0x4f, 0xe4, 0x45, 0x7f, 0x5b, 0xc1, + 0xb1, 0xa0, 0xb2, 0xe2, 0x1f, 0xf9, 0xc1, 0xec, 0x1f, 0x81, 0xd1, 0x72, + 0xc9, 0x24, 0xa7, 0x79, 0xd9, 0xf4, 0xc8, 0x71, 0xbc, 0x07, 0x71, 0x0d, + 0x80, 0xd0, 0xde, 0x60, 0x6d, 0x46, 0x6f, 0x57, 0xc2, 0x30, 0x7d, 0x8c, + 0x2d, 0xf3, 0x2e, 0xdc, 0x7e, 0x63, 0x4f, 0xbd, 0x73, 0x69, 0x24, 0xa7, + 0xa7, 0xab, 0xac, 0x63, 0x11, 0xba, 0xc7, 0xea, 0x4f, 0x01, 0xcd, 0x1a, + 0x7c, 0x0f, 0x9f, 0x8a, 0xb0, 0x7a, 0x9e, 0x04, 0x92, 0xdb, 0x5a, 0x4c, + 0xc1, 0x2f, 0x2d, 0xff, 0x00, 0xa9, 0x0e, 0x82, 0xb9, 0x04, 0x92, 0x53, + 0xd8, 0x1e, 0xa5, 0x53, 0xdd, 0xfc, 0xfd, 0x7b, 0x00, 0xe0, 0x3d, 0x8d, + 0x71, 0xfc, 0x7c, 0x7c, 0xd2, 0xab, 0x27, 0x1a, 0xba, 0x49, 0x16, 0x34, + 0x3c, 0x02, 0xe8, 0xdc, 0xcf, 0xfc, 0x94, 0x12, 0xb8, 0xf4, 0x92, 0x53, + 0xd8, 0xe3, 0x75, 0x3e, 0x9c, 0xef, 0x7b, 0xae, 0xda, 0x5a, 0x34, 0x91, + 0xb4, 0x98, 0xf0, 0xda, 0x0a, 0x35, 0x9d, 0x57, 0xa7, 0xd2, 0xe9, 0x73, + 0xc1, 0x25, 0xb2, 0x09, 0x93, 0x33, 0xd9, 0x71, 0x09, 0x24, 0xa7, 0xb2, + 0xbe, 0xea, 0xef, 0xa1, 0xe6, 0xb7, 0x36, 0xba, 0xde, 0x3e, 0x91, 0x78, + 0x61, 0x70, 0xf0, 0xf1, 0x40, 0xc6, 0xbb, 0x0a, 0xad, 0xc4, 0x5c, 0xd7, + 0x59, 0x64, 0x17, 0x00, 0x77, 0xc1, 0x68, 0xdb, 0xa0, 0x9e, 0x17, 0x28, + 0xae, 0x74, 0xc0, 0x4d, 0xe7, 0x49, 0xf6, 0x98, 0xf8, 0x92, 0x12, 0x53, + 0xa5, 0x90, 0xfb, 0x1c, 0xf7, 0x0d, 0xb1, 0x24, 0xf7, 0x98, 0x03, 0x8f, + 0xc0, 0xa9, 0x32, 0x64, 0x02, 0x3b, 0x96, 0x8f, 0x1d, 0x51, 0x29, 0x6e, + 0xe7, 0xbc, 0x38, 0xeb, 0xbc, 0x8d, 0x78, 0xd0, 0x35, 0x20, 0x58, 0xdb, + 0x5a, 0x46, 0xa6, 0x5c, 0x41, 0xf2, 0xd4, 0x24, 0xa6, 0x16, 0x52, 0x1b, + 0x48, 0xd3, 0x51, 0x32, 0x7c, 0xa7, 0x88, 0x4b, 0x11, 0xd6, 0x16, 0x06, + 0xb5, 0xb3, 0x01, 0xa4, 0x6a, 0x43, 0x7e, 0xf1, 0xa2, 0x77, 0x9d, 0x2c, + 0x9d, 0x3d, 0xc4, 0x7e, 0x2b, 0x5f, 0xa4, 0x60, 0xb7, 0x3f, 0xa7, 0x0a, + 0x6b, 0x73, 0x19, 0x92, 0xc7, 0x87, 0x03, 0xcb, 0x9a, 0xd1, 0x1a, 0x11, + 0xe0, 0x52, 0x52, 0x1a, 0x6b, 0x01, 0xbb, 0x9a, 0xdb, 0x2b, 0xdf, 0xf4, + 0x64, 0x0e, 0x0f, 0x3a, 0x82, 0xac, 0x3d, 0xb6, 0x35, 0xc7, 0xde, 0xd6, + 0xb4, 0x10, 0x41, 0x27, 0x53, 0x01, 0x0a, 0xe6, 0xe7, 0x57, 0x63, 0xe9, + 0x34, 0xbe, 0xca, 0xa8, 0x79, 0x68, 0xb5, 0xb5, 0xb0, 0x0d, 0x3b, 0xed, + 0x82, 0x7b, 0x21, 0x8e, 0xa0, 0x2b, 0xa9, 0xc1, 0xec, 0x6e, 0xe6, 0x99, + 0x82, 0xdd, 0xaf, 0x76, 0xe3, 0x26, 0x37, 0x86, 0x84, 0x94, 0xcc, 0x58, + 0xed, 0xac, 0x2d, 0xb0, 0xb8, 0xbb, 0xe8, 0xfb, 0x9a, 0xc1, 0xbb, 0x9d, + 0x74, 0x2a, 0x6c, 0xa2, 0x08, 0x79, 0x21, 0xa4, 0x99, 0x71, 0xd8, 0x48, + 0x9e, 0x4f, 0xb9, 0xb1, 0x2a, 0xaf, 0xdb, 0xb1, 0x4e, 0xb5, 0x1d, 0x9a, + 0x6a, 0xfb, 0x2b, 0x6b, 0x64, 0xf9, 0x16, 0x6e, 0x28, 0x87, 0x22, 0xb7, + 0xb4, 0xea, 0x21, 0xa4, 0x0d, 0x06, 0x84, 0x78, 0xea, 0xd6, 0x94, 0x94, + 0x91, 0xfe, 0x98, 0x7b, 0x60, 0x92, 0xc9, 0x9d, 0xcc, 0x9f, 0x84, 0x13, + 0xb7, 0xf8, 0xa2, 0x4b, 0xbc, 0xf6, 0x73, 0x1b, 0xf5, 0xf8, 0x4a, 0xaa, + 0xfb, 0xec, 0xaa, 0xa9, 0xb6, 0x96, 0x0a, 0x9a, 0x74, 0x3a, 0x97, 0x09, + 0xd3, 0x9e, 0x20, 0xf8, 0x4a, 0x8f, 0xdb, 0x7a, 0x7f, 0x3e, 0xa3, 0xbd, + 0x4f, 0x1d, 0xa2, 0x3f, 0xcd, 0xdd, 0xc2, 0x4a, 0x4e, 0xd7, 0x08, 0x87, + 0x38, 0x80, 0x75, 0x20, 0x0e, 0x15, 0x4c, 0x87, 0x1f, 0xb5, 0x52, 0xe0, + 0x7d, 0x8c, 0x7c, 0x47, 0x1a, 0xb8, 0x16, 0xca, 0xb9, 0x00, 0xd6, 0x5a, + 0x7c, 0x04, 0xb4, 0x7f, 0x7a, 0xad, 0x93, 0x51, 0x6d, 0x0e, 0xb1, 0xa3, + 0x56, 0xed, 0x7b, 0x47, 0x3f, 0x45, 0xcd, 0x77, 0xe4, 0x09, 0x29, 0x30, + 0x96, 0xbd, 0x8c, 0x22, 0x77, 0x93, 0xc7, 0x92, 0x56, 0x03, 0xc7, 0x24, + 0x72, 0x7b, 0x05, 0x29, 0x1b, 0x84, 0x34, 0xf3, 0xa9, 0x8e, 0xc4, 0x24, + 0xf0, 0xd2, 0x7e, 0x89, 0x88, 0x80, 0x27, 0x93, 0xe2, 0x92, 0x9a, 0xb7, + 0xc0, 0xda, 0xee, 0x60, 0xea, 0xe3, 0xd9, 0x2d, 0xb2, 0x67, 0xe9, 0x48, + 0xd3, 0xc1, 0x4b, 0x21, 0x8e, 0x75, 0x71, 0x1e, 0xf1, 0x05, 0xad, 0xf3, + 0x4d, 0x43, 0x6c, 0xf4, 0xda, 0x1e, 0x43, 0x5c, 0x39, 0x13, 0xf8, 0x4a, + 0x4a, 0x6a, 0xf5, 0x46, 0xb8, 0x5a, 0xdb, 0x48, 0x80, 0xf0, 0xd2, 0x0f, + 0xdd, 0xfc, 0x56, 0x67, 0x55, 0x03, 0xd4, 0x69, 0xf1, 0x68, 0x5a, 0xfd, + 0x61, 0xad, 0xf4, 0x18, 0x41, 0x92, 0xc0, 0xd0, 0x7e, 0x4e, 0x8d, 0x3e, + 0xf5, 0x93, 0xd4, 0xde, 0x1e, 0x2b, 0x70, 0x33, 0xec, 0x68, 0x3f, 0x20, + 0x92, 0x9c, 0xf4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49, + 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5, 0x26, 0x31, 0xf6, 0x3c, + 0x57, 0x5b, 0x4b, 0x9e, 0xe3, 0x0d, 0x68, 0x12, 0x49, 0x51, 0x5d, 0xaf, + 0xd4, 0x9e, 0x88, 0xc7, 0xd4, 0x73, 0xef, 0x6e, 0xaf, 0xd1, 0x87, 0xf7, + 0x59, 0xe5, 0xfd, 0x6f, 0xc8, 0x92, 0x9e, 0x6b, 0x2b, 0xa0, 0x75, 0x7c, + 0x4a, 0x45, 0xf7, 0xe3, 0x38, 0x56, 0x7b, 0xb6, 0x1d, 0x1f, 0x1d, 0xb3, + 0x0a, 0x95, 0xb4, 0x5d, 0x4c, 0x0b, 0xab, 0x75, 0x7b, 0x84, 0xb7, 0x70, + 0x2d, 0x91, 0xe2, 0x25, 0x7b, 0x50, 0x60, 0x60, 0x23, 0x6f, 0xb4, 0x0e, + 0x3c, 0x63, 0xc1, 0x72, 0xff, 0x00, 0x5b, 0x7a, 0x5d, 0x59, 0x98, 0xaf, + 0x73, 0x1a, 0x3d, 0x4a, 0xc1, 0x75, 0x6e, 0x03, 0xc3, 0xe1, 0xe2, 0x92, + 0x9f, 0x3a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa4, 0x92, + 0x49, 0x25, 0x29, 0x5f, 0xe9, 0x40, 0x8b, 0x4b, 0x87, 0x24, 0x47, 0xe2, + 0x15, 0x05, 0xa3, 0xd2, 0xdb, 0xcb, 0xa6, 0x20, 0x4f, 0xdc, 0x52, 0x53, + 0xa5, 0x5b, 0x83, 0x8b, 0xde, 0x34, 0x6b, 0xad, 0x7f, 0x97, 0x01, 0xa0, + 0xe8, 0x8e, 0x03, 0x5b, 0xbc, 0xb9, 0xa0, 0xba, 0x07, 0x6e, 0x00, 0x25, + 0x47, 0x13, 0x75, 0x80, 0xd8, 0xf1, 0xfe, 0x1a, 0xcd, 0x34, 0xd4, 0xfb, + 0x10, 0xf2, 0x8b, 0x98, 0xd7, 0x6d, 0x3a, 0xbb, 0x68, 0x3e, 0x10, 0x37, + 0x68, 0x92, 0x99, 0x64, 0x30, 0x6e, 0x73, 0x04, 0x77, 0x90, 0x3b, 0x70, + 0x56, 0xf7, 0xd5, 0x8a, 0x1e, 0xec, 0x56, 0xdc, 0x08, 0x0d, 0xc7, 0x7f, + 0x60, 0x66, 0x1d, 0x1b, 0xb8, 0xe7, 0x8d, 0x02, 0xc1, 0xb1, 0xaf, 0x67, + 0x03, 0x5f, 0x09, 0xee, 0x49, 0x5b, 0xdd, 0x0c, 0x38, 0x74, 0x7c, 0x8b, + 0xcb, 0x9c, 0xda, 0x9a, 0xc2, 0xd2, 0xc6, 0x90, 0xcd, 0xee, 0x22, 0x1b, + 0x2e, 0x3c, 0x6b, 0xdd, 0x25, 0x3a, 0x77, 0x75, 0x5c, 0x6c, 0x56, 0x9a, + 0xcb, 0xde, 0xe7, 0xb4, 0x19, 0x2d, 0x6f, 0x9f, 0x87, 0x2b, 0x3b, 0x37, + 0xa5, 0x3f, 0xac, 0x86, 0x58, 0xfc, 0x67, 0xb8, 0x41, 0xdb, 0x75, 0x80, + 0x35, 0xd0, 0xed, 0x63, 0x90, 0xad, 0x3a, 0x8a, 0xa8, 0x6d, 0x35, 0xd7, + 0x55, 0x8f, 0xc8, 0x6b, 0x09, 0xc8, 0x36, 0x92, 0xe2, 0x08, 0x00, 0x35, + 0xb2, 0x74, 0x76, 0xaa, 0x2c, 0xf5, 0x5b, 0xf9, 0xb6, 0xb4, 0x12, 0x43, + 0x5c, 0xc7, 0x6d, 0x00, 0xf7, 0xe1, 0x25, 0x3c, 0xef, 0x54, 0xfa, 0xbd, + 0x4f, 0x4a, 0x15, 0xbe, 0xd6, 0x65, 0x91, 0x6c, 0xed, 0x34, 0x16, 0xd8, + 0x01, 0x1d, 0x8e, 0xba, 0x2c, 0xf1, 0x46, 0x16, 0xd7, 0x83, 0x87, 0x9d, + 0x63, 0xdd, 0x1b, 0x6c, 0x78, 0x87, 0x37, 0xe0, 0x06, 0x86, 0x7c, 0xd7, + 0x4d, 0x90, 0xfc, 0x97, 0xde, 0x5a, 0xef, 0x51, 0xce, 0x6c, 0x0f, 0x7b, + 0x8b, 0x87, 0xf9, 0xc6, 0x02, 0x21, 0xb9, 0xd5, 0x00, 0xdb, 0x2e, 0x63, + 0x49, 0x3e, 0xd0, 0xd1, 0xbb, 0xf1, 0x29, 0x29, 0xe6, 0x29, 0xa4, 0x02, + 0x0b, 0x70, 0xf2, 0xc1, 0x1c, 0x02, 0x26, 0x7e, 0x3c, 0x2b, 0x5f, 0x60, + 0xbf, 0xec, 0xff, 0x00, 0x6a, 0xfb, 0x09, 0xd9, 0xbe, 0x7d, 0x3f, 0x76, + 0xef, 0x08, 0x8d, 0xd3, 0x0b, 0xa2, 0xfb, 0x48, 0x60, 0x05, 0xee, 0xba, + 0xcd, 0xc6, 0x1b, 0xb2, 0x8b, 0x1f, 0x24, 0xf9, 0xb5, 0x80, 0x29, 0x7a, + 0xf6, 0x7a, 0x31, 0xf6, 0x5c, 0x98, 0xf5, 0x27, 0x67, 0xa3, 0x66, 0xfe, + 0x3c, 0x36, 0x7f, 0x1f, 0x9a, 0x4a, 0x70, 0xd8, 0xe3, 0xcc, 0xc0, 0x88, + 0x8d, 0x42, 0x1b, 0x6e, 0xb3, 0x7c, 0x06, 0x82, 0xce, 0x5c, 0x67, 0x59, + 0x1a, 0x42, 0x41, 0xc1, 0xc0, 0x39, 0xa2, 0x58, 0x78, 0x20, 0xe8, 0x93, + 0x88, 0xd6, 0x3e, 0x90, 0x12, 0xe9, 0xe0, 0x0f, 0x8a, 0x4a, 0x61, 0x77, + 0xaa, 0xe2, 0xdd, 0x8f, 0xdb, 0x07, 0xdc, 0x20, 0x6a, 0x3e, 0x2a, 0x5b, + 0x89, 0x76, 0xe1, 0xa9, 0x6f, 0x07, 0xcd, 0x45, 0xcd, 0x78, 0x1b, 0x88, + 0x81, 0xce, 0xe9, 0x11, 0xf8, 0x95, 0x37, 0x31, 0xec, 0x0d, 0x70, 0x23, + 0xdd, 0xc0, 0xe0, 0xeb, 0xe5, 0x12, 0x92, 0x99, 0xef, 0x7d, 0x8e, 0x1b, + 0x8f, 0xbb, 0xc5, 0x43, 0x32, 0xb6, 0x6d, 0x2c, 0xb7, 0xe0, 0xe0, 0x0c, + 0x41, 0x6f, 0xe7, 0x4a, 0x8e, 0x3d, 0xb6, 0xb7, 0x25, 0xcc, 0xb0, 0x7a, + 0x6c, 0x2d, 0x90, 0xe2, 0x44, 0xb8, 0x1d, 0x08, 0xd7, 0x85, 0x62, 0xd6, + 0xb2, 0xea, 0x2a, 0xba, 0xa7, 0x07, 0x35, 0xc4, 0xb2, 0xda, 0xdd, 0x21, + 0xcd, 0x23, 0x91, 0xe7, 0xfd, 0xc9, 0x29, 0xcf, 0xea, 0x6e, 0x0f, 0xc6, + 0x04, 0x6b, 0xa3, 0x9a, 0x08, 0xf8, 0x07, 0x7f, 0x05, 0x8f, 0x90, 0xe7, + 0x3b, 0x1a, 0xa7, 0x38, 0x47, 0x60, 0x7c, 0x40, 0x5b, 0x79, 0xa3, 0x6e, + 0x3d, 0x80, 0x30, 0xb5, 0xa0, 0x8d, 0xa4, 0x88, 0x3c, 0xc1, 0x58, 0xb7, + 0x99, 0xc1, 0xac, 0x44, 0x16, 0x92, 0x0f, 0xde, 0x92, 0x9a, 0x69, 0x24, + 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x2b, + 0xfd, 0x23, 0xa3, 0xe5, 0xf5, 0x7c, 0x9f, 0x43, 0x18, 0x00, 0x1a, 0x26, + 0xcb, 0x1d, 0xf4, 0x58, 0x3c, 0xd5, 0x05, 0xd3, 0x7d, 0x5f, 0xea, 0x4c, + 0xc3, 0xe9, 0x8f, 0xae, 0x98, 0x19, 0x36, 0x5a, 0x4b, 0x8f, 0x80, 0x01, + 0xb0, 0x92, 0x9d, 0x2a, 0xbe, 0xa4, 0x74, 0x8c, 0x5a, 0xc3, 0xba, 0x86, + 0x6b, 0x9c, 0xe2, 0x0e, 0x8c, 0x86, 0x37, 0x4f, 0x0d, 0xda, 0xad, 0x21, + 0xd6, 0x3a, 0x5f, 0x4f, 0xa9, 0x94, 0x63, 0xda, 0x03, 0x18, 0xd0, 0xd6, + 0xb4, 0xf8, 0x0d, 0x17, 0x2f, 0x95, 0x75, 0xef, 0x06, 0xc7, 0x39, 0xd6, + 0x5c, 0xfd, 0x01, 0x71, 0xd6, 0x4c, 0xf8, 0xa1, 0x74, 0xce, 0x99, 0x65, + 0x8f, 0x75, 0x99, 0x32, 0x03, 0x4f, 0xbd, 0xff, 0x00, 0x4b, 0xf2, 0x24, + 0xa7, 0xac, 0x3f, 0x5b, 0x69, 0x24, 0x30, 0x58, 0xd2, 0x4f, 0x1a, 0x09, + 0x42, 0x7f, 0xd6, 0x0c, 0x5b, 0x9b, 0xb6, 0xfd, 0x41, 0xe0, 0xe8, 0x0f, + 0xde, 0x0c, 0xa1, 0x62, 0xe1, 0x74, 0xac, 0x81, 0x15, 0x12, 0xe2, 0xc1, + 0x26, 0x5a, 0x5a, 0x60, 0x7c, 0x55, 0x4c, 0xce, 0x9d, 0xd3, 0xf2, 0xea, + 0xb1, 0xb8, 0x8e, 0x3e, 0xb3, 0x06, 0x80, 0xb4, 0x89, 0xfb, 0xd2, 0x52, + 0xcd, 0xe9, 0x9f, 0x56, 0x1e, 0xe2, 0xf0, 0xc8, 0x2e, 0xdd, 0x21, 0xcf, + 0x76, 0xdd, 0x55, 0x3e, 0xb1, 0xd1, 0x3a, 0x48, 0xc6, 0x7d, 0xfd, 0x38, + 0x96, 0x3a, 0xb1, 0xb8, 0x8d, 0xc5, 0xed, 0x20, 0x0d, 0x74, 0x70, 0x07, + 0xf1, 0x54, 0x31, 0x5b, 0x6e, 0x30, 0xf4, 0x2f, 0x83, 0x23, 0x73, 0x60, + 0xcc, 0x4f, 0x64, 0xb3, 0xb3, 0x05, 0x54, 0xbe, 0x9a, 0xdc, 0x66, 0xd1, + 0x04, 0x76, 0x8f, 0x14, 0x94, 0xe3, 0xa5, 0xd9, 0x24, 0xa7, 0x48, 0x49, + 0x4a, 0x4f, 0xda, 0x53, 0x25, 0x3a, 0x42, 0x4a, 0x52, 0xd5, 0xe9, 0x4c, + 0x26, 0xb7, 0xeb, 0x13, 0xdf, 0xc3, 0x55, 0x94, 0xb5, 0x3a, 0x63, 0x9c, + 0xdc, 0x77, 0x96, 0x98, 0xed, 0xf7, 0x90, 0x92, 0x9d, 0x7c, 0x02, 0x03, + 0x6c, 0xee, 0x05, 0xef, 0x00, 0x1f, 0xec, 0xea, 0x95, 0xd4, 0xb5, 0xe4, + 0x31, 0xd2, 0x7f, 0x48, 0x35, 0xfe, 0xc9, 0x29, 0xba, 0x69, 0x69, 0xab, + 0x73, 0xc6, 0xc1, 0xea, 0x90, 0xff, 0x00, 0xeb, 0x4c, 0xf7, 0x47, 0x73, + 0x1f, 0xeb, 0x00, 0x44, 0xc5, 0xac, 0x3a, 0xf6, 0xf6, 0x78, 0x24, 0xa4, + 0x02, 0xd3, 0x05, 0xc6, 0x0b, 0xa6, 0x41, 0xf8, 0x92, 0xb6, 0x7e, 0xaf, + 0x35, 0xf6, 0xe4, 0x32, 0xab, 0x0e, 0xec, 0x36, 0xb7, 0xd5, 0xb2, 0xb7, + 0x0f, 0x61, 0x73, 0x49, 0xdb, 0xaf, 0x8f, 0x1f, 0x25, 0x99, 0x6f, 0xa2, + 0xd0, 0xfb, 0x1c, 0x24, 0x16, 0xc0, 0x68, 0xf2, 0xff, 0x00, 0x7a, 0xb5, + 0xd3, 0xdf, 0x68, 0xa9, 0xbe, 0x99, 0x73, 0x21, 0xa1, 0xc4, 0x86, 0xcb, + 0x49, 0xf0, 0x49, 0x4f, 0x51, 0x94, 0xec, 0x37, 0xbc, 0x02, 0xca, 0xee, + 0x69, 0xd1, 0xec, 0x17, 0x35, 0x90, 0x49, 0x9e, 0x1c, 0xe0, 0x99, 0xac, + 0xe8, 0x75, 0x80, 0x3d, 0x06, 0x3c, 0xba, 0x65, 0xcd, 0x6e, 0xf1, 0x23, + 0x9d, 0x4a, 0xc7, 0xbd, 0xf6, 0x1b, 0x07, 0xe9, 0x40, 0xd1, 0xa5, 0xef, + 0x73, 0x46, 0xd1, 0x27, 0x52, 0x21, 0xc5, 0x3d, 0xad, 0x6b, 0x6f, 0xb4, + 0x53, 0x7b, 0xde, 0xda, 0xce, 0xdb, 0x9a, 0xf6, 0x86, 0x3b, 0x73, 0x4e, + 0x8f, 0xdb, 0x23, 0x73, 0x49, 0xf0, 0x49, 0x4e, 0xc5, 0xef, 0xe9, 0x36, + 0xb1, 0xad, 0x75, 0x4d, 0x75, 0x6d, 0x1a, 0x13, 0x4c, 0x86, 0xc7, 0xf5, + 0x9a, 0x87, 0x4f, 0x52, 0xaf, 0x73, 0x59, 0x8f, 0x82, 0x59, 0x53, 0x7f, + 0x3f, 0xda, 0xc1, 0xf2, 0xda, 0x21, 0x66, 0x3e, 0xf7, 0x91, 0xe9, 0x5c, + 0xf2, 0xd0, 0x7e, 0x9b, 0x7b, 0xea, 0x35, 0xd6, 0x36, 0x81, 0xf2, 0x44, + 0xa2, 0xe1, 0x60, 0xdb, 0x58, 0x9a, 0xe2, 0x36, 0xb7, 0xcb, 0xbc, 0xa4, + 0xa7, 0x51, 0xfd, 0x4e, 0xc0, 0x48, 0x6d, 0x02, 0x47, 0x05, 0xd6, 0xb4, + 0x0f, 0xed, 0x6d, 0x0e, 0x2a, 0x3f, 0x6c, 0xcb, 0x9d, 0xde, 0xa5, 0x13, + 0x1f, 0xcd, 0xfb, 0xb6, 0x73, 0xfb, 0xdc, 0xac, 0x2c, 0xa3, 0x6d, 0x55, + 0x97, 0x12, 0xd7, 0xbf, 0x58, 0x6c, 0x90, 0xf0, 0x3e, 0x61, 0x55, 0xfb, + 0x5b, 0xbe, 0x96, 0xf7, 0xfa, 0x71, 0xb7, 0x6e, 0xe3, 0xcf, 0xf5, 0xbc, + 0x12, 0x53, 0x42, 0xaa, 0xea, 0xaf, 0x71, 0x6c, 0x82, 0xe2, 0x4b, 0x88, + 0xf3, 0x44, 0x21, 0xad, 0x60, 0xf6, 0xf1, 0xc0, 0xd2, 0x07, 0xc0, 0x70, + 0xab, 0xbb, 0x3f, 0x05, 0xa3, 0x5b, 0x98, 0x23, 0xb3, 0x49, 0x74, 0xff, + 0x00, 0x9b, 0x28, 0x56, 0xf5, 0x2c, 0x0b, 0x5a, 0x58, 0xf2, 0xf7, 0x8d, + 0x23, 0x6b, 0x5d, 0x3a, 0x79, 0xe8, 0x92, 0x9b, 0x9a, 0x18, 0x7b, 0x75, + 0x7c, 0x73, 0xce, 0x9e, 0x49, 0x53, 0x63, 0x6c, 0x04, 0xd6, 0x67, 0xcc, + 0x73, 0xf1, 0x99, 0x59, 0xf5, 0xf5, 0x2c, 0x4a, 0x9f, 0xfa, 0x2c, 0x7b, + 0x4b, 0xdc, 0x20, 0x03, 0xac, 0x81, 0xf1, 0x2a, 0x63, 0x3a, 0xf0, 0xcf, + 0xd0, 0x60, 0xb9, 0xac, 0xe6, 0x26, 0x04, 0x9f, 0x80, 0x49, 0x4e, 0x80, + 0x61, 0x76, 0xa0, 0x6e, 0x8e, 0x7e, 0x0a, 0xce, 0x23, 0x77, 0xb8, 0xd3, + 0x31, 0xbb, 0x40, 0x47, 0x88, 0xff, 0x00, 0x62, 0xc8, 0x6e, 0x67, 0x55, + 0xdc, 0x23, 0x11, 0x93, 0xd8, 0x3c, 0x93, 0xf7, 0xea, 0x14, 0xa9, 0xca, + 0xeb, 0xd5, 0xbb, 0x7b, 0x3d, 0x26, 0x9d, 0x35, 0x2c, 0x0e, 0x00, 0x8f, + 0x0d, 0xd2, 0x92, 0x9d, 0x3c, 0xf6, 0xdd, 0x5b, 0x32, 0x31, 0xda, 0xd7, + 0x1c, 0x77, 0x86, 0x93, 0x6b, 0x87, 0xb5, 0xe4, 0x02, 0x5a, 0x5b, 0xaa, + 0xe5, 0xf3, 0x98, 0x19, 0x49, 0x68, 0xee, 0xf7, 0x1f, 0x91, 0x82, 0xb6, + 0xee, 0xcb, 0xfa, 0xc5, 0x97, 0xed, 0xca, 0xcc, 0x9a, 0xc1, 0xfa, 0x2d, + 0x63, 0x1a, 0x24, 0x7f, 0x55, 0xb2, 0xb3, 0x3a, 0xcd, 0x5e, 0x9d, 0x55, + 0xf9, 0x89, 0xfe, 0x1f, 0xc1, 0x25, 0x38, 0xe9, 0x24, 0x92, 0x4a, 0x52, + 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x22, 0x53, 0x75, 0x94, + 0xbb, 0x73, 0x0c, 0x78, 0x8e, 0xc5, 0x0d, 0x24, 0x94, 0xde, 0x3d, 0x49, + 0xce, 0xd5, 0xc2, 0x1c, 0x35, 0x1f, 0x15, 0xd9, 0xfd, 0x54, 0xea, 0x38, + 0xd9, 0xac, 0x7b, 0x1a, 0xcd, 0xaf, 0x66, 0xd3, 0x6b, 0x4c, 0x44, 0xba, + 0x75, 0x6f, 0x96, 0x8b, 0x81, 0xaa, 0x9b, 0x6e, 0x76, 0xca, 0x98, 0xe7, + 0xbb, 0xc1, 0xa0, 0x9e, 0x57, 0x75, 0x85, 0xd1, 0xed, 0xe8, 0x57, 0xe1, + 0xb1, 0xa3, 0xdd, 0x7d, 0x2e, 0xfb, 0x53, 0xcf, 0xfa, 0x69, 0x0e, 0x6b, + 0x7e, 0x00, 0x08, 0x09, 0x29, 0xe8, 0x6d, 0x65, 0x75, 0x02, 0xea, 0xea, + 0x26, 0x41, 0x1e, 0xd1, 0xbb, 0x95, 0x57, 0x3b, 0x22, 0x8c, 0x1e, 0x9d, + 0x65, 0xc4, 0x6d, 0xda, 0xd9, 0x78, 0xef, 0xf0, 0x0a, 0x36, 0xdf, 0x85, + 0x60, 0x9b, 0xdc, 0x2b, 0xb3, 0x82, 0xd7, 0x4c, 0xac, 0x4e, 0xac, 0xf7, + 0xf5, 0x1b, 0xa8, 0xe9, 0x18, 0xf2, 0xda, 0x6e, 0xdc, 0x5f, 0x66, 0xba, + 0x06, 0xf0, 0x7e, 0x1b, 0x92, 0x53, 0xca, 0x67, 0x67, 0xbb, 0x27, 0x29, + 0xf7, 0x56, 0x3d, 0x36, 0x1f, 0x6b, 0x1b, 0xe0, 0xd1, 0xc2, 0xa8, 0x49, + 0x26, 0x49, 0x93, 0xe2, 0xac, 0x75, 0x0e, 0x9f, 0x93, 0xd3, 0xb2, 0x9f, + 0x8b, 0x94, 0xdd, 0xb6, 0x37, 0x83, 0xd9, 0xcd, 0x3c, 0x39, 0xbe, 0x45, + 0x56, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5, + 0xb1, 0xd1, 0x60, 0xd4, 0xf1, 0x12, 0x66, 0x7f, 0x22, 0xc7, 0x5a, 0xfd, + 0x1b, 0x6f, 0xa7, 0x66, 0xe7, 0x06, 0xb7, 0xf3, 0x89, 0xe3, 0x90, 0x92, + 0x9d, 0xae, 0x8c, 0xd2, 0xfa, 0xee, 0xf4, 0xdd, 0xb4, 0xfa, 0xef, 0x00, + 0x8d, 0x48, 0x92, 0x07, 0xf1, 0x56, 0x83, 0x76, 0xd7, 0x60, 0x68, 0x9b, + 0x03, 0x80, 0x73, 0x4f, 0x20, 0x86, 0xc6, 0xef, 0x35, 0x4b, 0xa0, 0x37, + 0x73, 0x2f, 0xd4, 0xff, 0x00, 0x3f, 0x67, 0xc3, 0xf3, 0x79, 0x0a, 0xf7, + 0x17, 0xdc, 0xd1, 0xa8, 0x68, 0x64, 0xc6, 0xb2, 0x60, 0x94, 0x94, 0xd1, + 0xb2, 0xbf, 0x52, 0xa0, 0x1a, 0xf2, 0x34, 0x1b, 0xa7, 0xc4, 0x47, 0xe0, + 0x8f, 0x82, 0x1a, 0x2d, 0xa4, 0x17, 0x7a, 0x64, 0xd7, 0x2c, 0xb0, 0xb8, + 0xb3, 0x82, 0x64, 0x83, 0x20, 0x70, 0xa2, 0xea, 0xc1, 0xdd, 0x59, 0x03, + 0xda, 0x48, 0x8e, 0xde, 0xd7, 0x15, 0xb3, 0xd3, 0x30, 0x99, 0x9b, 0x84, + 0xda, 0x4b, 0x80, 0x7d, 0x6f, 0x2e, 0xd3, 0x9e, 0x21, 0x25, 0x39, 0xe6, + 0xec, 0x7a, 0x6f, 0x6f, 0xd9, 0xac, 0x16, 0xb4, 0x9f, 0xd3, 0x06, 0xb4, + 0x07, 0x38, 0x4e, 0xba, 0x9f, 0xe2, 0xab, 0xd9, 0x7e, 0x5d, 0x80, 0x5b, + 0x65, 0x9a, 0x83, 0xea, 0x02, 0xe7, 0x6f, 0x7f, 0x3e, 0xd0, 0x1d, 0xca, + 0xd5, 0xb7, 0xea, 0xe5, 0xbe, 0xbb, 0xed, 0xa2, 0xd6, 0x50, 0xe9, 0xdd, + 0xb1, 0xcc, 0x16, 0x17, 0x46, 0xb3, 0xea, 0x38, 0x70, 0x50, 0xff, 0x00, + 0xe6, 0xbd, 0x96, 0x34, 0xfa, 0xf9, 0x27, 0x63, 0x3f, 0x9b, 0x86, 0x92, + 0x01, 0xf0, 0x89, 0xe7, 0xe0, 0x92, 0x9a, 0x6e, 0xc8, 0xad, 0xac, 0xdb, + 0x60, 0x2c, 0x78, 0x32, 0x0e, 0x9c, 0x1f, 0xde, 0x6a, 0x9f, 0xdb, 0x69, + 0x01, 0xd6, 0x13, 0xb5, 0xf2, 0x1e, 0x1e, 0xc1, 0xed, 0xd3, 0xbf, 0x75, + 0x17, 0xfd, 0x58, 0xea, 0x86, 0xc6, 0x07, 0xd8, 0xd6, 0xd4, 0x64, 0xb8, + 0xb7, 0x73, 0x9d, 0xa4, 0x47, 0xb5, 0xc3, 0xe9, 0x15, 0x63, 0x23, 0xa2, + 0xfb, 0x5c, 0xcc, 0x66, 0x5d, 0x50, 0x88, 0x9b, 0x36, 0xb9, 0xbb, 0x87, + 0x1e, 0xd2, 0x26, 0x12, 0x53, 0x45, 0xb9, 0xb6, 0xe4, 0x64, 0xb1, 0xe5, + 0xe5, 0xaf, 0x10, 0x7d, 0xc7, 0x8d, 0x74, 0x91, 0xa4, 0xab, 0x3f, 0xab, + 0x6f, 0xf5, 0x7f, 0xc2, 0xee, 0xdd, 0x30, 0x7e, 0xf5, 0x56, 0xbe, 0x8d, + 0xd6, 0x6d, 0x02, 0xcd, 0x80, 0x3b, 0x70, 0xdc, 0x7d, 0xac, 0x80, 0x34, + 0x90, 0x0b, 0x42, 0xb7, 0xff, 0x00, 0x37, 0xaa, 0xf5, 0x3d, 0x0f, 0xb4, + 0xbf, 0xed, 0x5f, 0x4a, 0x37, 0x69, 0x11, 0xf4, 0x76, 0xcc, 0xed, 0xf3, + 0x49, 0x4d, 0x3a, 0x3a, 0x36, 0x23, 0x08, 0x71, 0x63, 0x43, 0x4f, 0x11, + 0xaf, 0x21, 0x5b, 0x66, 0x0e, 0x30, 0x2d, 0xf4, 0xeb, 0x04, 0xf8, 0x91, + 0x1f, 0x82, 0x76, 0x3f, 0x69, 0xd0, 0x93, 0x22, 0x67, 0xcd, 0x11, 0xee, + 0x1b, 0x44, 0xc9, 0x26, 0x74, 0x1d, 0x82, 0x4a, 0x68, 0x75, 0x0a, 0xab, + 0xaa, 0xfc, 0x6b, 0x84, 0x48, 0x7b, 0xab, 0x76, 0x9f, 0xbe, 0xd9, 0x1f, + 0xf5, 0x2a, 0xdb, 0x5d, 0x5f, 0xa0, 0xd6, 0xe8, 0xd7, 0x12, 0x21, 0xb1, + 0xc7, 0xfb, 0x55, 0x7e, 0xa8, 0xf6, 0x8c, 0x41, 0x70, 0x6c, 0x7a, 0x2f, + 0xae, 0xc9, 0xf2, 0x0e, 0x13, 0xf8, 0x2a, 0xd5, 0xe4, 0xdd, 0x61, 0xb0, + 0x4f, 0xa6, 0x4b, 0xa0, 0x16, 0xea, 0xe8, 0xf2, 0xf0, 0xf8, 0xa4, 0xa6, + 0xde, 0x45, 0xad, 0x6d, 0xa5, 0x8c, 0x13, 0xe5, 0x23, 0x74, 0x8f, 0x15, + 0x19, 0x6d, 0xb5, 0xc3, 0x84, 0x72, 0x01, 0xef, 0xc1, 0x9e, 0x38, 0x55, + 0xad, 0xc5, 0xfb, 0x31, 0xaf, 0xdb, 0xfa, 0x40, 0xe9, 0x06, 0x66, 0x24, + 0xc9, 0x20, 0xa3, 0x36, 0xb8, 0x66, 0xb2, 0x08, 0x1f, 0x44, 0x6a, 0x24, + 0xf7, 0x29, 0x29, 0x8d, 0x34, 0x9a, 0xde, 0xf8, 0x27, 0xdc, 0x44, 0x41, + 0x9e, 0xde, 0x2a, 0x87, 0xd6, 0x3a, 0xda, 0xdc, 0x5a, 0x1c, 0x04, 0x6a, + 0xe6, 0x9f, 0xbc, 0x15, 0xa8, 0xc0, 0xd7, 0x77, 0x33, 0xe4, 0xa9, 0x7d, + 0x62, 0x60, 0xb3, 0xa7, 0x6f, 0x6e, 0xa2, 0xb7, 0x83, 0x23, 0xc0, 0xe9, + 0xca, 0x4a, 0x79, 0x64, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, + 0x49, 0x24, 0x92, 0x52, 0x97, 0x71, 0xf5, 0x3f, 0xea, 0x86, 0x1e, 0x5e, + 0x1b, 0x7a, 0xa7, 0x53, 0x69, 0xb4, 0x58, 0x4f, 0xa1, 0x47, 0x0d, 0xda, + 0xdd, 0x37, 0xbf, 0xc6, 0x4f, 0x01, 0x71, 0x2c, 0x63, 0x9e, 0xf6, 0xb1, + 0xa2, 0x5c, 0xe2, 0x00, 0x1e, 0x67, 0x45, 0xec, 0xb8, 0x2c, 0xaf, 0x0b, + 0x1f, 0x1b, 0x05, 0x9a, 0x32, 0xba, 0xc3, 0x1b, 0xf1, 0x68, 0x83, 0xf8, + 0xa4, 0xa7, 0x2f, 0xaf, 0x63, 0x51, 0x8d, 0x56, 0x30, 0xc6, 0x63, 0x69, + 0x6d, 0x6f, 0x92, 0xd6, 0x34, 0x36, 0x1a, 0x46, 0x87, 0xda, 0x3b, 0x10, + 0xb1, 0xfe, 0xae, 0x61, 0xf5, 0x07, 0xe3, 0x64, 0x0b, 0x6c, 0xfb, 0x43, + 0x0b, 0xc3, 0xe1, 0xf3, 0xbc, 0x13, 0xae, 0xf6, 0x9d, 0x4f, 0xc9, 0x75, + 0x19, 0x06, 0xab, 0xb1, 0x2e, 0x7d, 0x90, 0x7d, 0x9a, 0x4f, 0x6e, 0xc2, + 0x7e, 0x6b, 0x27, 0xa1, 0xdc, 0x6a, 0xc8, 0x76, 0x30, 0x70, 0x63, 0xec, + 0xf6, 0xb4, 0x48, 0x79, 0x96, 0xf8, 0xb4, 0x1e, 0x21, 0x25, 0x27, 0xfb, + 0x13, 0x6c, 0x6b, 0x7d, 0x4f, 0x74, 0xf0, 0xe1, 0xaa, 0x8e, 0x4e, 0x15, + 0x1d, 0x2b, 0x12, 0xfe, 0xa4, 0xe8, 0x76, 0x43, 0x2a, 0x21, 0x80, 0xf1, + 0x3c, 0x86, 0x8f, 0x9f, 0x2b, 0x4e, 0xdf, 0xb4, 0x12, 0xd6, 0xd0, 0x2b, + 0x36, 0x35, 0xde, 0xf7, 0xba, 0x76, 0xb0, 0x77, 0x86, 0xf7, 0x3e, 0x4b, + 0x3b, 0xac, 0xd6, 0xc6, 0x60, 0x3b, 0xed, 0x36, 0x17, 0xd9, 0x61, 0xd8, + 0x2c, 0x71, 0xda, 0xd9, 0x8d, 0xc7, 0x4d, 0x1a, 0x07, 0x92, 0x4a, 0x73, + 0x7e, 0xad, 0xd4, 0xec, 0xac, 0x17, 0x1e, 0xa2, 0xf3, 0x98, 0xf7, 0xdb, + 0xb4, 0x8c, 0x88, 0xb5, 0xb1, 0xfc, 0x90, 0xf9, 0x84, 0xdd, 0x7b, 0xea, + 0x3e, 0x15, 0x98, 0xb6, 0x64, 0xf4, 0xc6, 0xfa, 0x39, 0x2c, 0x05, 0xde, + 0x88, 0x33, 0x5d, 0x91, 0xa9, 0x6b, 0x43, 0xbe, 0x89, 0xf0, 0xd6, 0x16, + 0x8f, 0xd5, 0x61, 0x57, 0xd9, 0xad, 0xa9, 0xc0, 0x7a, 0x9b, 0xb7, 0x37, + 0xfa, 0xa7, 0x82, 0x3e, 0x6a, 0xf1, 0xc8, 0xb1, 0xf9, 0x0f, 0xa8, 0x9d, + 0x18, 0xe2, 0x0f, 0xc2, 0x52, 0x53, 0xe3, 0xe4, 0x46, 0x87, 0x94, 0x95, + 0xce, 0xb1, 0x5b, 0x6b, 0xea, 0xb9, 0x8c, 0x68, 0x86, 0xb6, 0xeb, 0x00, + 0x1e, 0x1e, 0xe2, 0xa9, 0xa4, 0xa5, 0x24, 0x92, 0x49, 0x29, 0x4b, 0x5b, + 0xa3, 0xc3, 0xa9, 0xb6, 0xb2, 0x24, 0xb8, 0x11, 0x3f, 0x18, 0x59, 0x2b, + 0x5f, 0xa1, 0xc7, 0xe9, 0x3e, 0x06, 0x3f, 0x04, 0x94, 0xec, 0xfd, 0x5f, + 0x0c, 0x18, 0xb9, 0x24, 0x89, 0xfd, 0x62, 0xc1, 0xa6, 0xbf, 0xe8, 0xd6, + 0x85, 0xed, 0x01, 0xb9, 0x16, 0x88, 0x02, 0x2b, 0x87, 0x40, 0x31, 0x02, + 0x3b, 0xaa, 0x7d, 0x05, 0x8f, 0x6e, 0x26, 0x40, 0x82, 0xd3, 0xf6, 0x8b, + 0xa7, 0xcb, 0x46, 0x2b, 0x79, 0xaf, 0x6f, 0xd8, 0xb2, 0xb7, 0x70, 0xe0, + 0xd0, 0xd0, 0x44, 0xfb, 0x8e, 0x83, 0x9f, 0x82, 0x4a, 0x47, 0x75, 0x60, + 0xbd, 0xe4, 0x77, 0x79, 0x12, 0x74, 0xd7, 0xfd, 0x7c, 0x56, 0xaf, 0xd5, + 0xc2, 0xd6, 0x64, 0x1a, 0x8c, 0x07, 0x38, 0x38, 0x0f, 0x38, 0x33, 0x0a, + 0x85, 0x75, 0x87, 0xbd, 0xee, 0x3a, 0x80, 0xf7, 0x01, 0xe3, 0xa0, 0x61, + 0xfe, 0x2a, 0xd7, 0x4e, 0xb0, 0x55, 0x9b, 0x48, 0x79, 0xd8, 0xd7, 0x3f, + 0x68, 0x20, 0x19, 0x90, 0x67, 0xe0, 0x92, 0x9e, 0xa4, 0xd4, 0xd7, 0x80, + 0xd7, 0x00, 0x41, 0xe5, 0x3f, 0xa0, 0xcd, 0x00, 0x03, 0x68, 0xe0, 0x47, + 0x74, 0x2c, 0x9b, 0x9f, 0x8f, 0x0e, 0x75, 0x8d, 0x0d, 0x3c, 0x17, 0x08, + 0xf8, 0xf7, 0x43, 0x66, 0x63, 0x9c, 0x75, 0x70, 0x11, 0xf1, 0x8d, 0x78, + 0xe5, 0x25, 0x36, 0x1d, 0x40, 0x73, 0x81, 0xec, 0xde, 0x3e, 0x2a, 0x4e, + 0xa5, 0x8e, 0xd4, 0xf3, 0x1c, 0xf8, 0x2a, 0xe7, 0x25, 0xf3, 0x2c, 0x70, + 0x22, 0x38, 0xed, 0xf1, 0x41, 0x75, 0xb6, 0xfa, 0x85, 0xed, 0x3f, 0x48, + 0x41, 0x6c, 0x7f, 0x19, 0x49, 0x4d, 0x8b, 0x8d, 0x6d, 0x77, 0xa4, 0xd0, + 0x05, 0x84, 0x68, 0x48, 0x91, 0xf0, 0xd1, 0x4b, 0xec, 0xf4, 0xcf, 0xa9, + 0xe9, 0x8d, 0xfc, 0x7d, 0x11, 0x3f, 0x0f, 0x15, 0x4d, 0xed, 0x2f, 0x70, + 0x73, 0x77, 0x07, 0xb4, 0x16, 0xb4, 0xf7, 0x01, 0xdc, 0xc2, 0xcb, 0xfb, + 0x11, 0xfb, 0x56, 0xef, 0xb7, 0x5d, 0x33, 0x1f, 0x67, 0xf5, 0xdd, 0xe9, + 0xcf, 0x86, 0xcf, 0xe0, 0x92, 0x9c, 0x66, 0x39, 0xdb, 0x40, 0x03, 0x6c, + 0x69, 0x3f, 0x77, 0x28, 0xad, 0xdd, 0x1e, 0xd1, 0x3a, 0xea, 0x4f, 0x08, + 0x55, 0x90, 0x07, 0x89, 0xe0, 0x7e, 0x2a, 0xc3, 0x00, 0xda, 0x0b, 0xb5, + 0x8d, 0x40, 0x49, 0x4d, 0x6c, 0xda, 0xbd, 0x6c, 0x3b, 0x58, 0xd9, 0x71, + 0x73, 0x1c, 0xdf, 0x98, 0x06, 0x16, 0x3e, 0x25, 0xd7, 0xd4, 0x05, 0xc1, + 0xa5, 0xcc, 0x21, 0xae, 0x71, 0x11, 0x3a, 0x88, 0xd6, 0x57, 0x4c, 0x2a, + 0xb8, 0x00, 0xf6, 0x91, 0xab, 0x88, 0x6b, 0x1b, 0xab, 0xbe, 0xef, 0x39, + 0x59, 0x1d, 0x26, 0x9f, 0x66, 0xc7, 0x8d, 0x2b, 0x7b, 0xaa, 0x23, 0xc7, + 0x6b, 0x88, 0xd7, 0xe4, 0x92, 0x92, 0xe1, 0xd2, 0xfc, 0x82, 0xfc, 0x8b, + 0x49, 0xda, 0xc0, 0x7d, 0x3e, 0x04, 0xb8, 0x09, 0xd4, 0x29, 0xd8, 0x38, + 0x1d, 0xbc, 0xbf, 0x8a, 0xdb, 0x38, 0xd8, 0x58, 0x34, 0x31, 0xa1, 0xae, + 0x78, 0xb4, 0x17, 0x92, 0x3c, 0x7c, 0xbf, 0x22, 0xc8, 0x05, 0xe3, 0x19, + 0xa4, 0x01, 0xb6, 0xd2, 0x23, 0xb9, 0xf6, 0x92, 0xde, 0x47, 0x8a, 0x4a, + 0x45, 0x54, 0xcc, 0x73, 0xe4, 0x38, 0x08, 0x7d, 0x4a, 0x91, 0x67, 0x4d, + 0xca, 0xac, 0x11, 0xa5, 0x7b, 0xc0, 0xfe, 0xa1, 0x0e, 0xfe, 0x08, 0xd5, + 0x80, 0xe2, 0x23, 0xdc, 0x38, 0xd2, 0x51, 0x03, 0x77, 0x7a, 0x95, 0xff, + 0x00, 0xa4, 0x69, 0x66, 0x9d, 0xf7, 0x08, 0x29, 0x29, 0xe0, 0xd2, 0x48, + 0x82, 0x09, 0x07, 0x90, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x94, 0x92, + 0x49, 0x24, 0xa6, 0xff, 0x00, 0x41, 0xac, 0x59, 0xd6, 0xb0, 0x18, 0xee, + 0x0e, 0x45, 0x73, 0xf2, 0x70, 0x2b, 0xd5, 0x32, 0xc7, 0xb0, 0x91, 0xa3, + 0xeb, 0xd4, 0x7c, 0xc4, 0xaf, 0x2b, 0xe8, 0x5b, 0xbf, 0x6d, 0x60, 0x6c, + 0x12, 0xef, 0xb4, 0x57, 0x03, 0xfb, 0x41, 0x7a, 0x7d, 0xd9, 0x41, 0xcf, + 0x32, 0xc2, 0xdd, 0xd5, 0xfb, 0xfb, 0x89, 0x1a, 0xb6, 0x0f, 0xde, 0x92, + 0x91, 0x74, 0x7c, 0x9b, 0x2e, 0xc7, 0x15, 0xe4, 0x7a, 0x62, 0x9b, 0xac, + 0x7d, 0x55, 0x82, 0x46, 0xfb, 0x8b, 0x67, 0x76, 0xed, 0xfc, 0x92, 0x9f, + 0x1b, 0xa8, 0xf4, 0xea, 0x7a, 0x85, 0xb8, 0xad, 0x65, 0x74, 0xb6, 0xbd, + 0xe3, 0x7b, 0x04, 0xce, 0xd2, 0x34, 0xf6, 0x8d, 0x3b, 0xa7, 0xa8, 0x62, + 0xe3, 0xf4, 0x86, 0xe5, 0xb9, 0xad, 0x22, 0xb0, 0x6f, 0xa5, 0xce, 0x00, + 0x86, 0xda, 0x49, 0xd4, 0x4f, 0x07, 0x71, 0x85, 0xcf, 0x51, 0x63, 0xa0, + 0xbc, 0x07, 0x6e, 0x7b, 0xa7, 0x49, 0xef, 0xe6, 0x92, 0x9e, 0xc6, 0x87, + 0x63, 0xd9, 0xbe, 0xca, 0x9e, 0x1c, 0x1e, 0xe0, 0xe2, 0x41, 0xe7, 0x40, + 0x3f, 0x82, 0xa9, 0xd5, 0xba, 0x86, 0x1e, 0x36, 0x39, 0x65, 0x85, 0x96, + 0x92, 0xe1, 0xba, 0xa3, 0x0e, 0xd2, 0x75, 0x1e, 0x01, 0x60, 0xb1, 0xac, + 0xc8, 0x73, 0xc3, 0x9c, 0xef, 0x50, 0x33, 0x42, 0x0c, 0x12, 0x01, 0x1a, + 0x14, 0xae, 0xa6, 0xb6, 0x37, 0xd3, 0x10, 0xd6, 0x8d, 0x0f, 0xc5, 0x25, + 0x3a, 0x95, 0x65, 0x60, 0xe3, 0x61, 0x1e, 0xa1, 0x8b, 0x8e, 0xd6, 0x55, + 0xb4, 0xd9, 0x79, 0xa8, 0x6a, 0xdd, 0xa7, 0x52, 0x7e, 0x03, 0xb0, 0x42, + 0xe9, 0xb9, 0xcc, 0xcf, 0xb1, 0x97, 0x55, 0x31, 0x74, 0x39, 0xdb, 0x84, + 0x18, 0x68, 0x84, 0xdd, 0x24, 0xd5, 0x7e, 0x16, 0x6e, 0x1d, 0x90, 0xe6, + 0x39, 0x90, 0x47, 0x8b, 0x5c, 0x36, 0xb9, 0x4f, 0xa4, 0x52, 0xdc, 0x7a, + 0x0b, 0xa3, 0x5a, 0x9a, 0x5a, 0x3e, 0x5a, 0x24, 0xa7, 0xce, 0x7a, 0xd4, + 0x9e, 0xaf, 0x9a, 0x4f, 0xfa, 0x7b, 0x3f, 0xea, 0x8a, 0xa4, 0xad, 0xf5, + 0x67, 0xef, 0xea, 0x99, 0x6f, 0xf1, 0xb9, 0xff, 0x00, 0xf5, 0x45, 0x54, + 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x96, 0xc7, 0x43, 0x6c, 0xb6, 0xd8, + 0x99, 0x00, 0xc4, 0x78, 0xcb, 0x56, 0x3a, 0xdd, 0xfa, 0xbe, 0xdd, 0xd5, + 0xda, 0xd0, 0x35, 0xd7, 0xef, 0xf6, 0xa4, 0xa7, 0x6b, 0xa4, 0x37, 0x66, + 0x2d, 0xcd, 0x99, 0x9c, 0x8b, 0x64, 0xf3, 0xe1, 0xcf, 0xdc, 0x8d, 0xd5, + 0x2b, 0x8c, 0x4c, 0x8d, 0xb0, 0x36, 0xb0, 0x6e, 0xf9, 0x3d, 0xc3, 0xba, + 0x0f, 0x4c, 0xc7, 0x16, 0xf4, 0xbd, 0x96, 0x4e, 0xef, 0x59, 0xee, 0xdd, + 0xc4, 0xb9, 0xa7, 0x95, 0x63, 0xa8, 0x55, 0x65, 0x98, 0x77, 0xb5, 0xbc, + 0xba, 0xb2, 0x46, 0xb1, 0xc3, 0xa7, 0xf8, 0xa4, 0xa4, 0xd8, 0xac, 0xb2, + 0xcb, 0x5e, 0xda, 0xbd, 0xa5, 0xa4, 0xba, 0x62, 0x41, 0x96, 0xb3, 0x85, + 0xaf, 0x82, 0xd6, 0x9a, 0xc7, 0xa9, 0xef, 0x2d, 0x3a, 0xe9, 0xdf, 0x85, + 0x9b, 0x8a, 0xdf, 0xb3, 0x32, 0xd0, 0x5c, 0x5b, 0x68, 0x6e, 0xc7, 0xbd, + 0xbe, 0x6c, 0x60, 0x2e, 0xef, 0xc1, 0x5a, 0x9d, 0x3d, 0xac, 0xf4, 0x34, + 0x04, 0xc7, 0xd2, 0x70, 0x1a, 0x93, 0xe3, 0x09, 0x29, 0xba, 0x71, 0xab, + 0x35, 0xb9, 0xbb, 0x4d, 0x81, 0xc2, 0x03, 0x5e, 0x4b, 0xb6, 0x8f, 0x08, + 0x71, 0x2a, 0x15, 0x52, 0xfa, 0x43, 0x80, 0x00, 0x56, 0xd6, 0xc3, 0x1a, + 0xe8, 0x9f, 0x80, 0x1c, 0x08, 0xf8, 0xab, 0x15, 0xdb, 0x30, 0x1c, 0xd0, + 0x1c, 0x3d, 0xa0, 0x12, 0x03, 0x89, 0xf2, 0x53, 0x6b, 0xfd, 0x6d, 0xcd, + 0xac, 0x07, 0x6c, 0x30, 0xe6, 0x9e, 0xc7, 0xee, 0x49, 0x4d, 0x59, 0x69, + 0x7b, 0x18, 0xca, 0x9e, 0xcd, 0xc2, 0x37, 0x18, 0xd9, 0x3f, 0x29, 0x25, + 0x42, 0xc0, 0xea, 0xde, 0x41, 0x70, 0x7c, 0x4c, 0x06, 0x8d, 0x76, 0x8d, + 0x65, 0x59, 0xfb, 0x31, 0x78, 0x3b, 0xaa, 0x04, 0x76, 0x2d, 0x74, 0x48, + 0xec, 0xa9, 0xe5, 0xe1, 0x39, 0xce, 0x2e, 0xc6, 0x9c, 0x7b, 0x9b, 0x10, + 0xf0, 0xe1, 0x20, 0x7c, 0xc4, 0x14, 0x94, 0xa6, 0x5f, 0x53, 0xcf, 0xe9, + 0x18, 0xe0, 0x0f, 0x01, 0xdc, 0x7e, 0x0a, 0x13, 0x85, 0xeb, 0xfa, 0x7f, + 0x67, 0x6c, 0xfe, 0xf6, 0xd1, 0x13, 0xf1, 0x55, 0x2e, 0xa3, 0x29, 0x87, + 0x7b, 0xf2, 0x03, 0xc1, 0x9f, 0x7b, 0xb6, 0x32, 0x7b, 0xfb, 0x9a, 0xd8, + 0xd3, 0xb6, 0x88, 0xb1, 0x83, 0xe9, 0xc7, 0xac, 0xef, 0x5b, 0xf7, 0xb6, + 0xfb, 0x7e, 0x11, 0x3f, 0xc5, 0x25, 0x38, 0x14, 0x9f, 0x64, 0x44, 0x34, + 0x8d, 0x3c, 0x7c, 0x51, 0x2b, 0x77, 0x24, 0x69, 0x10, 0xd3, 0xf3, 0xf0, + 0xff, 0x00, 0x62, 0x15, 0x4d, 0x3c, 0x9d, 0x4f, 0x7f, 0x9a, 0x38, 0xe6, + 0x35, 0x7b, 0xbc, 0x7b, 0x24, 0xa6, 0x4d, 0x0e, 0x0c, 0xf6, 0x72, 0x7f, + 0x38, 0xf9, 0x78, 0xaa, 0x18, 0x2d, 0x75, 0x39, 0x79, 0x4c, 0x06, 0x7f, + 0x4c, 0x1d, 0xf2, 0x78, 0x0e, 0xd1, 0x5f, 0x0d, 0x6e, 0xe2, 0x1c, 0x4c, + 0xf2, 0xd1, 0x3d, 0x95, 0x3d, 0x6a, 0xea, 0x6f, 0x9d, 0x05, 0xb4, 0xb5, + 0xde, 0x7e, 0xc7, 0x16, 0x98, 0xf9, 0x14, 0x94, 0xec, 0x54, 0xfa, 0xec, + 0xb0, 0x0c, 0x87, 0xb6, 0xba, 0xd8, 0xd2, 0x0b, 0x9e, 0x40, 0x68, 0x13, + 0xc7, 0x91, 0x59, 0xce, 0xba, 0x97, 0x16, 0x53, 0x45, 0x85, 0xed, 0xaf, + 0x57, 0x3a, 0x20, 0x4c, 0xed, 0xf6, 0xa7, 0x7c, 0x3d, 0x81, 0x8f, 0x12, + 0xd7, 0x0f, 0x73, 0x4f, 0x87, 0x9a, 0xab, 0x8c, 0xd3, 0x5d, 0x97, 0x32, + 0x64, 0xb3, 0x68, 0x07, 0xf7, 0x86, 0xbd, 0xbe, 0x09, 0x29, 0x35, 0x7a, + 0x10, 0xd7, 0x73, 0xc9, 0x6f, 0x7d, 0x7b, 0x2b, 0x2d, 0x0d, 0xad, 0xec, + 0xdb, 0xa0, 0x99, 0x86, 0x0f, 0x13, 0x3c, 0xaa, 0xce, 0xda, 0xdb, 0x83, + 0x7c, 0x8e, 0x83, 0x88, 0x07, 0xb9, 0xf9, 0xab, 0x53, 0x3b, 0x0b, 0x75, + 0xed, 0x0d, 0xd0, 0x24, 0xa7, 0x81, 0xce, 0xac, 0xd5, 0x9b, 0x91, 0x51, + 0x11, 0xb2, 0xc7, 0xb6, 0x3e, 0x0e, 0x28, 0x0b, 0x53, 0xeb, 0x25, 0x7e, + 0x9f, 0x59, 0xc8, 0x88, 0x87, 0x6d, 0x7e, 0x9c, 0x7b, 0x9a, 0x09, 0x59, + 0x69, 0x29, 0x49, 0x24, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x9d, 0x0f, + 0xab, 0xee, 0x0c, 0xeb, 0x98, 0x0e, 0x3c, 0x0b, 0xeb, 0xff, 0x00, 0xaa, + 0x0b, 0xd4, 0xee, 0xc3, 0x6b, 0xb7, 0x3c, 0x80, 0x41, 0x69, 0x13, 0xf9, + 0xc4, 0xf8, 0x93, 0x30, 0xbc, 0x87, 0x16, 0xef, 0x43, 0x26, 0x9b, 0xc7, + 0xf8, 0x27, 0xb5, 0xff, 0x00, 0xe6, 0x90, 0x57, 0xb2, 0x36, 0xdf, 0x53, + 0x15, 0xc6, 0xb8, 0x3b, 0xdb, 0x2d, 0x77, 0x23, 0x51, 0xa2, 0x4a, 0x71, + 0x2f, 0xca, 0xb3, 0x03, 0xa4, 0x62, 0xe2, 0xdc, 0x37, 0x1b, 0x5e, 0xe0, + 0x00, 0xd7, 0xda, 0x5c, 0xf7, 0x03, 0xfc, 0x56, 0x5d, 0x77, 0x63, 0x7a, + 0x6f, 0xb1, 0xf7, 0x56, 0x5c, 0xd7, 0x35, 0xad, 0x3a, 0x9d, 0x35, 0xdc, + 0x4c, 0x70, 0xae, 0xf5, 0x2b, 0xbd, 0x6e, 0xa8, 0xd6, 0x0f, 0x75, 0x78, + 0xac, 0xda, 0xd2, 0x46, 0x92, 0x47, 0x97, 0x92, 0x8b, 0x83, 0x2b, 0x01, + 0xcc, 0x64, 0x57, 0x01, 0xb6, 0x09, 0x99, 0xfe, 0x52, 0x4a, 0x43, 0x56, + 0x40, 0xb1, 0xa5, 0xf8, 0xc3, 0xd8, 0xc9, 0x0f, 0xb4, 0xb7, 0x6e, 0xf3, + 0xfc, 0x9d, 0xda, 0xc0, 0x4e, 0xfb, 0x5d, 0xb8, 0x6b, 0xf4, 0xa4, 0x91, + 0x01, 0x58, 0x22, 0x58, 0xe6, 0xf0, 0x0f, 0x86, 0x9e, 0x0b, 0x3d, 0xb6, + 0x64, 0x3b, 0x25, 0xde, 0xa3, 0x06, 0xc0, 0x0c, 0x38, 0x7c, 0x74, 0x49, + 0x4d, 0xcc, 0x1c, 0x83, 0x56, 0x45, 0x67, 0x86, 0xd8, 0x4b, 0x5f, 0x1d, + 0xc3, 0xbc, 0x7e, 0x6b, 0x4e, 0x9b, 0x5c, 0x29, 0xb2, 0xb7, 0x08, 0x7b, + 0x6d, 0x73, 0x0c, 0xf7, 0x0d, 0x74, 0x85, 0x8a, 0x41, 0xf4, 0x58, 0x5b, + 0x3b, 0xa6, 0x7e, 0x0a, 0xc6, 0x6f, 0x50, 0x66, 0x26, 0x1b, 0xb3, 0x49, + 0xfc, 0xd7, 0x58, 0x3c, 0xed, 0x23, 0x68, 0x1f, 0x7a, 0x4a, 0x78, 0x3e, + 0xa2, 0x00, 0xea, 0x19, 0x40, 0x6a, 0x3d, 0x6b, 0x20, 0xff, 0x00, 0x68, + 0xaa, 0xc9, 0xc9, 0x2e, 0x25, 0xc4, 0xc9, 0x3a, 0x92, 0x99, 0x25, 0x29, + 0x24, 0x92, 0x49, 0x4a, 0x5b, 0xdf, 0x57, 0x1e, 0x58, 0x2d, 0x20, 0xc7, + 0xb5, 0xda, 0xc4, 0xfe, 0xea, 0xc1, 0x5b, 0xff, 0x00, 0x56, 0x98, 0x2c, + 0xb1, 0xf5, 0x93, 0xb4, 0x16, 0x9f, 0xfb, 0xea, 0x4a, 0x77, 0xfa, 0x25, + 0xbe, 0xbd, 0x57, 0xd4, 0xfd, 0x1b, 0x5e, 0x53, 0xda, 0x00, 0xd4, 0x86, + 0xb9, 0xa1, 0xce, 0x3e, 0x7a, 0xad, 0x8b, 0xba, 0x3e, 0x43, 0x85, 0x81, + 0xa5, 0xa5, 0x8e, 0xa1, 0xc4, 0x3b, 0x81, 0x33, 0x3a, 0x8d, 0x56, 0x1f, + 0x41, 0x65, 0xb5, 0x7d, 0xb2, 0xc8, 0x2d, 0x8c, 0x92, 0xe6, 0x13, 0xfc, + 0x96, 0xc4, 0xca, 0xe8, 0x2a, 0xea, 0x39, 0x2e, 0xb4, 0xb6, 0xd0, 0xd7, + 0x30, 0xb4, 0xeb, 0x1c, 0xcc, 0x8e, 0x52, 0x53, 0x43, 0x0e, 0xce, 0xa3, + 0x93, 0xb0, 0xd1, 0x80, 0x6a, 0xf5, 0x5b, 0x36, 0x5d, 0x7b, 0xc6, 0xd0, + 0x23, 0x6c, 0xfa, 0x6c, 0x13, 0xac, 0x68, 0x16, 0xbf, 0x4f, 0xc5, 0xea, + 0x0c, 0x6f, 0xa5, 0x96, 0x58, 0x19, 0x3e, 0xdf, 0x40, 0x16, 0x13, 0xfd, + 0xad, 0xc5, 0xca, 0xc5, 0x17, 0xd4, 0xfa, 0x6b, 0x7d, 0x45, 0x84, 0x9a, + 0xda, 0x05, 0x8c, 0xed, 0x1a, 0xc1, 0xf3, 0xf2, 0x56, 0x9a, 0x2c, 0x01, + 0xae, 0x6c, 0x16, 0x3b, 0x57, 0xba, 0x7d, 0xd1, 0xcc, 0x08, 0xf1, 0x49, + 0x4b, 0x7a, 0x4d, 0xaf, 0xdd, 0x1b, 0x8f, 0x12, 0xe2, 0x4c, 0x0f, 0xe4, + 0xf3, 0xaa, 0x19, 0xce, 0xc4, 0xc5, 0xaf, 0x7d, 0x8f, 0x0c, 0x2f, 0xd5, + 0xc3, 0x6e, 0xd7, 0x1f, 0x8b, 0x79, 0x40, 0xea, 0x3d, 0x49, 0xf8, 0x95, + 0x1d, 0xc5, 0xa6, 0xd3, 0x21, 0xad, 0x6f, 0x0d, 0x6f, 0x6f, 0x8a, 0xe5, + 0x32, 0x72, 0x9f, 0x6b, 0x9d, 0x63, 0xcc, 0x93, 0xe2, 0x92, 0x9d, 0xfc, + 0xcf, 0xad, 0x74, 0xd4, 0xd2, 0x71, 0xaa, 0x2e, 0xd8, 0x27, 0x73, 0xf4, + 0x6c, 0x0f, 0xe4, 0xb7, 0x55, 0xcb, 0x75, 0x0f, 0xad, 0x77, 0x5f, 0x5b, + 0x9f, 0x7d, 0xae, 0x65, 0x6f, 0x27, 0x6d, 0x4c, 0x1b, 0x4b, 0x84, 0x6b, + 0xe6, 0x07, 0xc5, 0x51, 0xcf, 0xcf, 0x65, 0x7a, 0x39, 0xde, 0xd1, 0xa1, + 0x03, 0x92, 0x7c, 0x02, 0xe7, 0xb2, 0x2d, 0x16, 0xd8, 0x5e, 0xd0, 0x5a, + 0xd3, 0xc0, 0x26, 0x52, 0x53, 0x65, 0xf9, 0xcd, 0xb3, 0x2f, 0xd6, 0x26, + 0xc0, 0xdd, 0x74, 0x2f, 0xdd, 0x13, 0xfc, 0x14, 0xbf, 0x69, 0xbf, 0x7c, + 0x6c, 0x64, 0x4f, 0x30, 0x78, 0x54, 0x12, 0x49, 0x4f, 0x79, 0x48, 0x21, + 0xc4, 0x3c, 0x82, 0x3d, 0xb0, 0x07, 0x91, 0xe5, 0x58, 0x20, 0x8d, 0x75, + 0x8e, 0x40, 0x1f, 0x7a, 0x18, 0xa8, 0xb6, 0xfd, 0xb5, 0x90, 0xf0, 0x5b, + 0x24, 0xf7, 0x02, 0x4b, 0x7b, 0xab, 0x0d, 0x6b, 0xc6, 0x87, 0x4f, 0x33, + 0xe3, 0xdd, 0x25, 0x2a, 0x04, 0x07, 0x7d, 0x19, 0x11, 0xb4, 0xf3, 0xc4, + 0x2c, 0xfc, 0xa6, 0x91, 0x97, 0x86, 0xfe, 0x24, 0xd9, 0x51, 0x27, 0xbc, + 0x8d, 0xc3, 0xfe, 0xa5, 0x69, 0xd9, 0x5b, 0x5a, 0xdd, 0xdb, 0xc0, 0x8e, + 0xfc, 0xeb, 0xca, 0xa3, 0xd4, 0x44, 0x57, 0x55, 0xbf, 0xe8, 0xef, 0xad, + 0xc4, 0x9f, 0x07, 0x1d, 0x87, 0xfe, 0xa9, 0x25, 0x25, 0x30, 0x44, 0x70, + 0x66, 0x60, 0xf3, 0xf1, 0x2a, 0xbd, 0x6d, 0x23, 0x36, 0xc9, 0xfc, 0xea, + 0xda, 0x7e, 0xe8, 0x6f, 0xf0, 0x57, 0x2d, 0x63, 0x64, 0x90, 0x26, 0x74, + 0x11, 0xdf, 0x54, 0x27, 0x57, 0x19, 0x75, 0xd8, 0xd0, 0x48, 0x75, 0x6e, + 0x6b, 0x8f, 0xc0, 0xee, 0x49, 0x4c, 0x6c, 0xae, 0x5e, 0x3d, 0xa3, 0xda, + 0x24, 0x89, 0xd3, 0x8e, 0xff, 0x00, 0x35, 0x61, 0xa0, 0x3e, 0xa6, 0x97, + 0x6a, 0xd0, 0x24, 0xf6, 0x68, 0xee, 0xa3, 0x6b, 0x4f, 0xa8, 0x1b, 0x12, + 0x00, 0x12, 0xd1, 0xd9, 0x1a, 0x81, 0x35, 0x86, 0xba, 0x5d, 0xb4, 0x0d, + 0x38, 0x02, 0x34, 0x49, 0x4f, 0x27, 0xf5, 0xbe, 0x80, 0xdc, 0xba, 0x2f, + 0x6f, 0x16, 0xd5, 0x07, 0xe2, 0xc3, 0xfd, 0xc4, 0x2c, 0x05, 0xd8, 0x7d, + 0x70, 0xa5, 0x87, 0xa6, 0xe3, 0x5e, 0x00, 0x05, 0x97, 0x16, 0x69, 0xe0, + 0xf6, 0xee, 0xff, 0x00, 0xbe, 0xae, 0x3d, 0x25, 0x29, 0x24, 0x92, 0x49, + 0x4a, 0x49, 0x24, 0x92, 0x52, 0x97, 0xa0, 0x74, 0x1e, 0xba, 0xda, 0xfe, + 0xac, 0x9b, 0x1c, 0xe2, 0x1f, 0x8c, 0x3d, 0x07, 0x19, 0x33, 0xcf, 0xb0, + 0xff, 0x00, 0x9a, 0x7f, 0x05, 0xe7, 0xeb, 0x6f, 0xea, 0xd3, 0xc3, 0xdf, + 0x93, 0x8b, 0x69, 0x3f, 0x66, 0x75, 0x62, 0xeb, 0x20, 0x4c, 0x1a, 0x8f, + 0xb7, 0x4f, 0xed, 0x24, 0xa7, 0xa1, 0xc4, 0xcf, 0xc3, 0xb8, 0x07, 0x0b, + 0x47, 0xa8, 0xf2, 0x5e, 0xe2, 0x41, 0x99, 0x2a, 0xe3, 0x5c, 0x08, 0xda, + 0xe8, 0x32, 0x7e, 0xf0, 0x7e, 0x4b, 0x32, 0x9c, 0x8c, 0x2b, 0x6c, 0x63, + 0x18, 0xcb, 0x1f, 0x63, 0xe1, 0xa1, 0xc0, 0x01, 0xaf, 0xc2, 0x74, 0x5a, + 0x8d, 0xaa, 0x01, 0x30, 0xe2, 0x01, 0x00, 0x6e, 0x8f, 0xef, 0x49, 0x4b, + 0x3a, 0x1b, 0x4b, 0xa5, 0xc0, 0x76, 0x68, 0x1c, 0xf3, 0xe6, 0x85, 0xb4, + 0x92, 0x7b, 0xcf, 0x87, 0xc5, 0x35, 0xd0, 0xc6, 0x13, 0xb5, 0xc4, 0x92, + 0x5a, 0x03, 0x44, 0x9d, 0xdc, 0x8f, 0xc8, 0xa5, 0x51, 0x12, 0xd9, 0xdc, + 0x46, 0xbd, 0xb5, 0x49, 0x4c, 0x36, 0x86, 0x30, 0x97, 0x01, 0x10, 0x47, + 0x3a, 0x95, 0xcf, 0x75, 0xfc, 0xaf, 0x57, 0x11, 0x95, 0xb4, 0x90, 0xd6, + 0x58, 0x65, 0xbf, 0x29, 0xd5, 0x74, 0xd7, 0x6d, 0x2d, 0xda, 0x43, 0x81, + 0xd3, 0x5d, 0x07, 0x3f, 0x12, 0xb9, 0x3e, 0xbb, 0x4d, 0x94, 0xb7, 0xdc, + 0xef, 0x63, 0xac, 0x1b, 0x1a, 0x46, 0xba, 0x37, 0x52, 0x4c, 0x79, 0xa4, + 0xa7, 0x15, 0x2e, 0xc9, 0x25, 0xd9, 0x25, 0x29, 0x39, 0xe0, 0x26, 0x4e, + 0x78, 0x1f, 0x0f, 0xe2, 0x92, 0x96, 0x5b, 0xff, 0x00, 0x56, 0x47, 0xeb, + 0x4e, 0x93, 0x03, 0x64, 0xc9, 0xed, 0xa0, 0x58, 0x0b, 0xa0, 0xfa, 0xb2, + 0xe7, 0x0c, 0xa9, 0x60, 0x93, 0xb4, 0xff, 0x00, 0xd4, 0x84, 0x94, 0xf4, + 0x3d, 0x32, 0xd6, 0x3d, 0x99, 0x35, 0x99, 0x69, 0x65, 0xe5, 0xae, 0x9e, + 0x60, 0xb6, 0x47, 0xe5, 0x5a, 0xb8, 0xbb, 0x1d, 0x75, 0xad, 0x71, 0xfa, + 0x0d, 0x1e, 0xe6, 0xf7, 0xf7, 0x44, 0x80, 0xb1, 0x7a, 0x6d, 0x6e, 0x7d, + 0xbd, 0x48, 0x91, 0xab, 0x6f, 0x06, 0x3c, 0xcd, 0x61, 0x6e, 0x74, 0xf1, + 0x53, 0xee, 0xb0, 0x5b, 0xa4, 0x55, 0x0d, 0x23, 0xc5, 0x87, 0x70, 0xd5, + 0x25, 0x3a, 0xb5, 0x88, 0x6b, 0x1d, 0x5b, 0x44, 0x40, 0x6b, 0x1b, 0xf4, + 0x40, 0x2e, 0xd7, 0xb2, 0x9e, 0x45, 0xb5, 0xe3, 0x32, 0x5a, 0xd0, 0xd8, + 0xd1, 0xbe, 0x25, 0xc7, 0x95, 0x4f, 0x1b, 0x3a, 0xa1, 0x45, 0x77, 0x38, + 0x97, 0x31, 0x95, 0x87, 0x30, 0xc6, 0xdd, 0xce, 0x23, 0xf3, 0x7c, 0x67, + 0x8d, 0x16, 0x76, 0x76, 0x65, 0x8e, 0x15, 0x3d, 0xfe, 0xd2, 0x75, 0x22, + 0x67, 0xdc, 0xe0, 0x5d, 0xca, 0x4a, 0x68, 0x75, 0x2c, 0xa7, 0xdd, 0x90, + 0xf9, 0x33, 0x1a, 0x05, 0x99, 0x99, 0x70, 0xa2, 0x87, 0x58, 0x4e, 0xa0, + 0x68, 0xa7, 0x75, 0xbe, 0xf9, 0x07, 0xbe, 0xab, 0x27, 0xaf, 0x5d, 0x34, + 0xb0, 0x0e, 0x0e, 0x81, 0x25, 0x38, 0xf9, 0x37, 0xfa, 0xcf, 0x91, 0xa0, + 0x08, 0x29, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa7, 0xd0, 0x2c, 0x86, + 0x5a, 0xc7, 0xb8, 0xea, 0x1a, 0x41, 0x68, 0x8e, 0xe7, 0x95, 0x64, 0x6e, + 0x89, 0xe6, 0x7f, 0x39, 0x50, 0xbf, 0x18, 0x3e, 0xf7, 0x1b, 0x37, 0x16, + 0xda, 0x37, 0x30, 0x00, 0x49, 0x98, 0x82, 0x27, 0xc9, 0x5d, 0xa5, 0xce, + 0x0d, 0x88, 0x00, 0x33, 0xdb, 0xfc, 0x9d, 0x12, 0x53, 0x38, 0x3b, 0x5c, + 0x40, 0x91, 0x00, 0xee, 0x77, 0xf7, 0x20, 0x66, 0xd4, 0xfb, 0xfa, 0x76, + 0x43, 0xaa, 0x6b, 0xac, 0x8a, 0x8b, 0xf7, 0x76, 0x05, 0x83, 0x7f, 0xf0, + 0x56, 0x4c, 0x11, 0x00, 0x4c, 0xc8, 0x97, 0x4f, 0xe4, 0x51, 0x6d, 0x8e, + 0x63, 0x4d, 0x6e, 0x71, 0x15, 0x59, 0x2d, 0x77, 0x61, 0xc4, 0x24, 0xa6, + 0x0d, 0x73, 0x6d, 0x6d, 0x76, 0x03, 0xb8, 0x3d, 0xad, 0x3f, 0x37, 0x6b, + 0xf7, 0x26, 0x7b, 0x0e, 0xec, 0x72, 0x38, 0xde, 0x41, 0x23, 0xb8, 0x73, + 0x4c, 0x7e, 0x45, 0x5b, 0x09, 0xce, 0x18, 0x34, 0xb7, 0xf3, 0xab, 0x1b, + 0x1d, 0xe2, 0x76, 0x3b, 0x6e, 0x9f, 0x72, 0xb3, 0x17, 0x17, 0x68, 0xc3, + 0xb2, 0xb2, 0x1c, 0x74, 0xe2, 0x3c, 0x12, 0x53, 0x27, 0x02, 0x1e, 0x38, + 0xdd, 0x12, 0x47, 0xc3, 0x4d, 0x54, 0xb1, 0xec, 0x6b, 0xac, 0x70, 0x6c, + 0xb9, 0xa6, 0x5d, 0x07, 0x40, 0x24, 0x6e, 0x42, 0x68, 0x79, 0xb1, 0xcf, + 0x20, 0x11, 0xa1, 0x68, 0xdc, 0x37, 0x48, 0x70, 0x77, 0x8a, 0x2e, 0x3e, + 0x3b, 0x58, 0xe2, 0xf7, 0x38, 0x6d, 0x1a, 0x43, 0x43, 0xb5, 0x8d, 0x07, + 0x68, 0x49, 0x4d, 0x2f, 0xac, 0xb5, 0x7d, 0xa3, 0xa0, 0xdf, 0x60, 0xd0, + 0x54, 0xea, 0xec, 0x00, 0x44, 0x68, 0xed, 0x87, 0x8f, 0xeb, 0x2e, 0x09, + 0x7a, 0x5e, 0x70, 0xc6, 0xcc, 0xe9, 0x39, 0x58, 0xf5, 0x8d, 0xcd, 0x7d, + 0x2f, 0x2c, 0x77, 0x8b, 0x9a, 0x37, 0x37, 0xfe, 0x90, 0x5e, 0x68, 0x92, + 0x94, 0x92, 0x49, 0x24, 0xa5, 0x24, 0x92, 0x49, 0x29, 0x4b, 0x67, 0xea, + 0xcb, 0xac, 0x39, 0x76, 0xe3, 0xb0, 0x4b, 0x72, 0x59, 0xe9, 0x58, 0xe0, + 0x63, 0x6b, 0x1c, 0x46, 0xbf, 0x7c, 0x2c, 0x65, 0xb7, 0xf5, 0x52, 0xda, + 0xeb, 0xcf, 0xb3, 0x78, 0x2e, 0x2e, 0xa8, 0x86, 0x86, 0x89, 0x3f, 0x49, + 0xae, 0xfe, 0x09, 0x29, 0xe9, 0xf0, 0xba, 0x4d, 0x38, 0x0e, 0x7e, 0x46, + 0xe3, 0x6b, 0x8c, 0x32, 0xb0, 0x60, 0x06, 0xfe, 0xf1, 0x1e, 0x2a, 0xcb, + 0xe5, 0x9e, 0xd3, 0x3a, 0x83, 0xa2, 0x95, 0x79, 0x35, 0xdc, 0xe0, 0x77, + 0x02, 0x5a, 0x3e, 0x81, 0x90, 0xe0, 0x7e, 0x05, 0x47, 0x25, 0xc1, 0xd6, + 0xb5, 0xe3, 0x52, 0xd9, 0x13, 0xe0, 0x92, 0x98, 0xe4, 0xbc, 0x83, 0x8e, + 0xd1, 0x13, 0x65, 0x86, 0x7e, 0x4c, 0x71, 0x4a, 0xc6, 0x06, 0x34, 0x16, + 0xea, 0x41, 0x0a, 0xb6, 0x6d, 0x83, 0xd4, 0xc4, 0x33, 0x23, 0xd4, 0x77, + 0xfe, 0x7b, 0x7a, 0x96, 0x3d, 0xa0, 0x87, 0x31, 0xba, 0xed, 0x2d, 0x99, + 0x3f, 0x34, 0x94, 0xd9, 0xb1, 0xbe, 0x2d, 0x89, 0x02, 0x27, 0x50, 0x24, + 0x79, 0x2e, 0x67, 0xeb, 0x3b, 0xd8, 0xca, 0xc6, 0x2e, 0xd2, 0x48, 0x70, + 0xb5, 0xb6, 0x76, 0x83, 0x2d, 0x85, 0xd2, 0xdb, 0x78, 0x60, 0x2e, 0x3c, + 0x01, 0xc9, 0x5c, 0xbf, 0xd6, 0x0c, 0xb1, 0x91, 0x41, 0x01, 0xa7, 0xe9, + 0x34, 0xee, 0x22, 0x38, 0xd3, 0xf8, 0xa4, 0xa7, 0x9d, 0x4e, 0x78, 0x09, + 0x93, 0x92, 0x20, 0x79, 0x24, 0xa5, 0x93, 0xbb, 0x86, 0xfc, 0x3f, 0x89, + 0x4c, 0x97, 0x82, 0x4a, 0x52, 0xe8, 0x3e, 0xab, 0x11, 0xf6, 0xa2, 0x60, + 0xba, 0x5a, 0x5a, 0x00, 0xf1, 0xda, 0xb9, 0xf5, 0xbb, 0xf5, 0x59, 0xc1, + 0xb9, 0x72, 0xee, 0x35, 0xef, 0x1c, 0xb5, 0x25, 0x3d, 0x37, 0x49, 0xb7, + 0x65, 0xdd, 0x4a, 0xb2, 0xd0, 0x5d, 0x6d, 0xcc, 0x00, 0xcc, 0x41, 0x35, + 0x8d, 0x56, 0xa6, 0x2b, 0x09, 0x71, 0x6d, 0x9e, 0xd7, 0x6e, 0x00, 0x1f, + 0x10, 0x5c, 0x74, 0x59, 0xbd, 0x32, 0xa6, 0xdd, 0xd4, 0xb2, 0xeb, 0x00, + 0x9f, 0xd3, 0x52, 0x1c, 0xd6, 0xe8, 0x7f, 0x9a, 0x1c, 0x4a, 0xdf, 0x6d, + 0x25, 0xb6, 0x9d, 0xa7, 0x74, 0x39, 0xba, 0x44, 0x39, 0xb3, 0x3a, 0x10, + 0x52, 0x53, 0x21, 0x63, 0x69, 0x21, 0xf6, 0x68, 0xd6, 0xc0, 0x90, 0x09, + 0xd2, 0x76, 0x81, 0x03, 0xb6, 0xab, 0x3f, 0xab, 0x50, 0xed, 0xaf, 0xd3, + 0x73, 0x6a, 0xb0, 0x3a, 0x7b, 0xc3, 0xbc, 0x82, 0xd4, 0xb6, 0xb6, 0xb6, + 0xd2, 0x44, 0x90, 0x01, 0x97, 0x03, 0xa8, 0x9f, 0x05, 0x5b, 0x2e, 0x9b, + 0x45, 0x62, 0xc6, 0xd8, 0xeb, 0x76, 0x30, 0xb5, 0xd5, 0xc0, 0x73, 0xac, + 0x1a, 0x10, 0x49, 0x31, 0xa8, 0x49, 0x4f, 0x21, 0x98, 0xc2, 0xdb, 0x1d, + 0x1c, 0x72, 0x16, 0x3f, 0x54, 0x66, 0xec, 0x69, 0xe4, 0xb3, 0xfb, 0xd7, + 0x45, 0x9d, 0x58, 0x6b, 0xf5, 0x23, 0x61, 0xfa, 0x27, 0xb7, 0xc1, 0x62, + 0xe6, 0x56, 0x4b, 0x5e, 0xc3, 0xa8, 0x3a, 0x6a, 0x92, 0x9e, 0x75, 0x25, + 0x27, 0xb1, 0xcc, 0x71, 0x6b, 0xb9, 0x0a, 0x29, 0x29, 0x49, 0x24, 0x92, + 0x4a, 0x7d, 0x1c, 0x9b, 0x3d, 0x47, 0x34, 0x5a, 0x1a, 0xd1, 0xa3, 0x9a, + 0xc0, 0x5f, 0x27, 0xbf, 0x97, 0xe2, 0xa6, 0xc7, 0x57, 0x5b, 0x5a, 0x36, + 0xba, 0x60, 0xf1, 0x0d, 0x68, 0x93, 0xe6, 0x4a, 0x0d, 0x4d, 0x35, 0xb0, + 0x32, 0xb1, 0x2d, 0x1a, 0x6a, 0x49, 0x23, 0xe6, 0x89, 0xb1, 0xe4, 0x6d, + 0x2e, 0x10, 0x7e, 0xff, 0x00, 0xc1, 0x25, 0x24, 0x37, 0x4b, 0xc9, 0x6b, + 0x04, 0xf2, 0x37, 0xb8, 0xbb, 0xf2, 0x42, 0x0b, 0xed, 0xba, 0x19, 0x01, + 0x9a, 0xbe, 0x1d, 0x00, 0x68, 0x3b, 0xbb, 0xdd, 0x3e, 0x0a, 0x62, 0xbd, + 0xb1, 0x2e, 0xe3, 0x41, 0xd9, 0x42, 0xdb, 0x58, 0x1a, 0x5d, 0x00, 0x11, + 0xac, 0xf9, 0x77, 0xf1, 0x49, 0x4b, 0x35, 0xd6, 0xd6, 0xd7, 0x54, 0xc7, + 0x10, 0xc7, 0x12, 0xe8, 0x6f, 0xb5, 0xbb, 0x8e, 0xba, 0x81, 0xe2, 0x95, + 0x2f, 0x79, 0xac, 0x32, 0xd6, 0xfb, 0x88, 0xf7, 0x1d, 0x48, 0x27, 0xcb, + 0x77, 0x64, 0x06, 0xe6, 0xd3, 0xb7, 0xda, 0x47, 0x3a, 0x91, 0xe3, 0xfd, + 0x9d, 0x51, 0x06, 0x43, 0x09, 0x1e, 0xe1, 0xe7, 0x0f, 0x10, 0x0a, 0x4a, + 0x4c, 0xe2, 0xe0, 0xcd, 0x00, 0x04, 0x1d, 0x20, 0x22, 0x30, 0x90, 0x46, + 0xe9, 0x33, 0xca, 0xae, 0xcb, 0x3d, 0x42, 0xf7, 0x35, 0xc3, 0xc0, 0x92, + 0xe9, 0x1f, 0x81, 0x53, 0x70, 0x7b, 0x75, 0x3b, 0x4f, 0xca, 0x3f, 0x2a, + 0x4a, 0x6c, 0x34, 0xd7, 0x21, 0xad, 0x03, 0x6b, 0xb9, 0x03, 0xc3, 0xba, + 0xf3, 0x4c, 0x9a, 0xbd, 0x1c, 0x8b, 0x69, 0xff, 0x00, 0x46, 0xf7, 0x33, + 0xfc, 0xd3, 0x0b, 0xbf, 0x75, 0xf6, 0x35, 0xec, 0x65, 0x50, 0xf7, 0x1f, + 0xcd, 0x93, 0xa3, 0x7b, 0xb8, 0xc9, 0x8f, 0xc1, 0x71, 0xbf, 0x58, 0x6a, + 0xf4, 0xba, 0xce, 0x5b, 0x7f, 0x79, 0xfb, 0xc7, 0xfd, 0x70, 0x07, 0xff, + 0x00, 0x14, 0x94, 0xe7, 0x24, 0x92, 0x49, 0x29, 0x49, 0x24, 0x92, 0x4a, + 0x52, 0xd5, 0xfa, 0xb0, 0xe0, 0xde, 0xb1, 0x4c, 0x98, 0x90, 0xf0, 0x3c, + 0xc9, 0x69, 0xd1, 0x65, 0x2d, 0x3f, 0xab, 0x96, 0x32, 0xbe, 0xb1, 0x8f, + 0xbc, 0x48, 0x71, 0x2c, 0xf8, 0x17, 0x02, 0x01, 0xfb, 0xd2, 0x53, 0xdd, + 0x3e, 0xa6, 0xba, 0x1c, 0x00, 0x24, 0xf0, 0x62, 0x7f, 0xda, 0xab, 0x64, + 0x02, 0xc7, 0x81, 0x1a, 0x2d, 0x22, 0xd0, 0xf6, 0xb5, 0xcc, 0x77, 0xb4, + 0x8e, 0xcb, 0x2f, 0x3e, 0x05, 0xba, 0x93, 0xf1, 0x12, 0x52, 0x53, 0x9b, + 0xd6, 0xed, 0x2c, 0xaa, 0x9d, 0xa4, 0x8d, 0xaf, 0xe5, 0xbc, 0x83, 0x04, + 0x22, 0x74, 0x2d, 0xa6, 0x8b, 0x4b, 0x89, 0x71, 0x2f, 0x1f, 0x4b, 0xe1, + 0xe4, 0xa8, 0xf5, 0xe7, 0x8f, 0x42, 0xbd, 0x80, 0x82, 0x6c, 0x6f, 0x3f, + 0x35, 0x77, 0xa2, 0xba, 0x31, 0x25, 0xc3, 0xf3, 0xf5, 0xf9, 0x24, 0xa6, + 0xf6, 0x61, 0x24, 0x6d, 0x04, 0x12, 0x07, 0x0b, 0x9a, 0xeb, 0xef, 0x70, + 0xaa, 0xb6, 0x1d, 0x24, 0xf1, 0xf0, 0x0b, 0xa5, 0xcb, 0x73, 0x36, 0x6e, + 0x6c, 0x89, 0x23, 0x50, 0xb9, 0xbf, 0xac, 0x85, 0xb1, 0x48, 0xfc, 0xed, + 0x49, 0x3d, 0xd2, 0x53, 0x84, 0x92, 0x49, 0x24, 0xa5, 0x24, 0x92, 0x49, + 0x29, 0x4b, 0x67, 0xea, 0xdb, 0x05, 0x99, 0x5b, 0x0f, 0x72, 0x3f, 0x21, + 0xf0, 0x58, 0xcb, 0x6f, 0xea, 0xb1, 0x3f, 0xb4, 0x18, 0x3f, 0x94, 0xdf, + 0x2e, 0xc5, 0x25, 0x3d, 0x7d, 0x18, 0xe3, 0x12, 0xfb, 0x6f, 0x0e, 0x2e, + 0x76, 0x4b, 0xd8, 0xf7, 0x01, 0xa6, 0xd2, 0xc1, 0xb1, 0xbf, 0x91, 0x6b, + 0x63, 0x64, 0x1b, 0xae, 0x06, 0xc7, 0x1f, 0x51, 0xb3, 0xee, 0x00, 0x6b, + 0x03, 0xb9, 0xee, 0xb1, 0xdb, 0x3e, 0xbe, 0x43, 0x89, 0x9d, 0xcf, 0x64, + 0x8f, 0x80, 0x8f, 0xe0, 0xac, 0xb2, 0xc0, 0xca, 0xad, 0x20, 0xc3, 0xb5, + 0xe7, 0x91, 0x22, 0x12, 0x53, 0xbd, 0x6b, 0x59, 0x58, 0xdc, 0xd6, 0x9d, + 0xce, 0xf6, 0x92, 0x07, 0xe2, 0x56, 0x76, 0x75, 0xce, 0x20, 0x52, 0xc9, + 0x69, 0x77, 0x26, 0x34, 0x00, 0x72, 0xae, 0x54, 0xe2, 0x71, 0x2a, 0x7b, + 0x89, 0x70, 0x7b, 0x5b, 0x2f, 0x1e, 0xf0, 0x34, 0xda, 0x75, 0xf8, 0xf7, + 0x54, 0x73, 0x5c, 0x1a, 0xdb, 0x7d, 0x30, 0x44, 0x16, 0xeb, 0xac, 0x34, + 0x36, 0x0f, 0xf0, 0x49, 0x4e, 0x1e, 0x5d, 0x77, 0x59, 0x7d, 0x80, 0xd6, + 0x20, 0x6c, 0x60, 0xdb, 0xaf, 0xaa, 0xd2, 0x3e, 0x93, 0x81, 0x98, 0xfe, + 0x0b, 0x1f, 0xa8, 0xe2, 0x65, 0x63, 0xcb, 0xdb, 0x5b, 0xdc, 0xc2, 0x62, + 0x00, 0xdd, 0xa7, 0xc5, 0x74, 0x7b, 0xcd, 0xb7, 0xff, 0x00, 0x36, 0x1e, + 0x1c, 0x01, 0xdc, 0x03, 0x80, 0x91, 0xaf, 0xd3, 0x1a, 0x29, 0xda, 0xcc, + 0x87, 0x30, 0xfa, 0x85, 0x9b, 0x08, 0xf6, 0xb4, 0x6a, 0x27, 0xe2, 0x92, + 0x9e, 0x16, 0xcc, 0x4b, 0x72, 0x35, 0x35, 0x90, 0x7e, 0xe2, 0x15, 0x4b, + 0x3a, 0x7e, 0x5b, 0x08, 0xfd, 0x19, 0x33, 0xa8, 0x5d, 0xcd, 0xb8, 0x60, + 0x80, 0xe2, 0xd6, 0x17, 0x1d, 0x1e, 0x44, 0x9f, 0xc8, 0xa0, 0x31, 0xeb, + 0x00, 0x83, 0x5d, 0x87, 0xdc, 0x5c, 0x1c, 0x1b, 0xc0, 0xf0, 0x97, 0x14, + 0x94, 0xf0, 0xae, 0xc5, 0xc9, 0x6c, 0x07, 0x54, 0xf1, 0x3c, 0x7b, 0x4e, + 0xaa, 0x3e, 0x8d, 0xb1, 0x3b, 0x1d, 0x13, 0x13, 0x07, 0x9f, 0x05, 0xda, + 0xd5, 0x4d, 0x96, 0x3d, 0xc6, 0xb9, 0xab, 0xd3, 0x30, 0x1a, 0x48, 0x0e, + 0xd7, 0xc2, 0x3b, 0x2b, 0xbf, 0xb2, 0xdb, 0xf6, 0x7d, 0xba, 0xef, 0xfa, + 0x73, 0xaf, 0x33, 0x3c, 0xfc, 0x52, 0x52, 0xc1, 0xc5, 0xd2, 0xd9, 0x93, + 0x1c, 0x47, 0x64, 0x9a, 0xe7, 0x02, 0x78, 0x10, 0x0c, 0x14, 0x32, 0xd7, + 0x96, 0x92, 0xd7, 0x1d, 0x07, 0x7d, 0x06, 0x88, 0x58, 0xed, 0xf5, 0x5b, + 0xea, 0xbd, 0xcf, 0xf8, 0x40, 0x03, 0xe4, 0x92, 0x9b, 0x02, 0xdd, 0xce, + 0x00, 0x4b, 0x9c, 0x3c, 0xbd, 0xbf, 0x18, 0xe1, 0x31, 0xb2, 0x96, 0xbc, + 0x87, 0xb8, 0x82, 0x5c, 0x1a, 0x0c, 0xfd, 0x27, 0x73, 0x09, 0xf7, 0x00, + 0x5a, 0x58, 0xd2, 0x5c, 0x4e, 0x85, 0xdc, 0x15, 0x17, 0x55, 0xfa, 0x6a, + 0xae, 0xb6, 0x1c, 0x58, 0x49, 0x12, 0xe3, 0x1f, 0x08, 0x49, 0x48, 0x46, + 0x2d, 0x06, 0xd7, 0x1a, 0xbf, 0x3c, 0x6e, 0xf7, 0xf0, 0xde, 0x67, 0xe5, + 0xdd, 0x4b, 0x17, 0x1a, 0xba, 0x1d, 0x61, 0xac, 0xc3, 0x6c, 0xf7, 0x16, + 0x0d, 0x19, 0x3e, 0x2e, 0x3a, 0x9d, 0x7c, 0x02, 0x27, 0xa8, 0xc7, 0xd8, + 0xe6, 0x12, 0x1b, 0x77, 0x2e, 0x04, 0xc1, 0xda, 0x7e, 0x8c, 0x08, 0x98, + 0x2a, 0x4e, 0xb5, 0x95, 0xd8, 0x5b, 0x70, 0x0d, 0xad, 0xad, 0x91, 0x6b, + 0xdc, 0xd0, 0x24, 0xf6, 0x6b, 0x38, 0x01, 0x25, 0x30, 0x7b, 0xdd, 0x45, + 0x6e, 0xb9, 0xb5, 0x1b, 0x6d, 0x76, 0xd0, 0x62, 0x1a, 0x20, 0x7e, 0xee, + 0xb3, 0xa2, 0x37, 0xa8, 0xf7, 0x56, 0x2c, 0x97, 0x03, 0xc9, 0x0c, 0x68, + 0xdd, 0xe3, 0x07, 0x71, 0x05, 0x55, 0xb7, 0xaa, 0x74, 0x9a, 0xe3, 0x7e, + 0x4d, 0x6e, 0x79, 0xe7, 0xdc, 0x6c, 0xfc, 0x2b, 0x0e, 0x51, 0xff, 0x00, + 0x9c, 0x58, 0x40, 0xc5, 0x35, 0x64, 0x5d, 0x3a, 0x34, 0x57, 0x58, 0x68, + 0x27, 0xe2, 0xf3, 0x29, 0x29, 0x26, 0x25, 0x76, 0x6b, 0x91, 0x68, 0xdd, + 0x7d, 0x84, 0x86, 0x7a, 0x90, 0x76, 0xb6, 0x79, 0xff, 0x00, 0x62, 0xe7, + 0xbe, 0xb8, 0x56, 0x47, 0x53, 0x65, 0xa4, 0x47, 0xab, 0x4b, 0x4f, 0xcd, + 0xa4, 0xb3, 0xf8, 0x2d, 0xb7, 0xf5, 0x1c, 0xab, 0xad, 0xaf, 0x67, 0x4b, + 0x03, 0x69, 0x0e, 0x63, 0xef, 0xb2, 0x48, 0x3f, 0xbd, 0x0d, 0x0a, 0x87, + 0xd7, 0x0a, 0xec, 0x76, 0x36, 0x0e, 0x4b, 0xda, 0x1a, 0xe2, 0x6c, 0x63, + 0xa3, 0xc4, 0xc3, 0xa3, 0xf2, 0xa4, 0xa7, 0x96, 0x49, 0x24, 0x92, 0x52, + 0x92, 0x49, 0x24, 0x94, 0xa5, 0x63, 0xa7, 0xd9, 0xe9, 0x67, 0x63, 0xd9, + 0x31, 0xb6, 0xc6, 0x12, 0x7c, 0xb7, 0x05, 0x5d, 0x49, 0x9a, 0x3d, 0xa7, + 0xcc, 0x24, 0xa7, 0xd4, 0x28, 0x73, 0x43, 0x0b, 0x74, 0xd7, 0x51, 0xf2, + 0xe5, 0x65, 0xe7, 0x12, 0x6c, 0xdb, 0xba, 0x5a, 0x0f, 0xb6, 0x3c, 0x56, + 0x86, 0x23, 0x65, 0xa1, 0xa3, 0xe8, 0xb6, 0x5b, 0x3e, 0x7c, 0xac, 0x5c, + 0xe7, 0x39, 0xb9, 0xae, 0xac, 0xbb, 0x46, 0x1e, 0xdd, 0xca, 0x4a, 0x73, + 0x7a, 0xed, 0x9f, 0xab, 0x57, 0x0d, 0xd1, 0xaf, 0x69, 0x92, 0xb6, 0x3a, + 0x4d, 0x75, 0xfd, 0x88, 0x5c, 0x34, 0x04, 0x9d, 0x3c, 0xa5, 0x62, 0x75, + 0xa2, 0xd3, 0x4d, 0x6c, 0x9d, 0xce, 0xf5, 0x06, 0xef, 0xc5, 0x6c, 0x60, + 0x1f, 0x4f, 0x06, 0xaa, 0xc4, 0xc8, 0x1f, 0x94, 0xa4, 0xa6, 0xed, 0xad, + 0x63, 0xaa, 0x3b, 0x88, 0x3a, 0x88, 0x10, 0xb9, 0x3f, 0xac, 0x44, 0x1b, + 0x2a, 0x02, 0x09, 0x82, 0x5c, 0x42, 0xeb, 0xde, 0xcd, 0xcc, 0x0d, 0x64, + 0x12, 0x47, 0xdc, 0xb8, 0xde, 0xbe, 0x23, 0x21, 0xad, 0xf0, 0x2e, 0xd7, + 0xc7, 0x84, 0x94, 0xe5, 0x24, 0x92, 0x49, 0x29, 0x49, 0x24, 0x92, 0x4a, + 0x52, 0xd9, 0xfa, 0xae, 0xed, 0xbd, 0x45, 0x86, 0x60, 0xef, 0x6c, 0x0e, + 0xe7, 0x95, 0x8c, 0xb5, 0xfe, 0xac, 0xc7, 0xed, 0x2a, 0xa7, 0x43, 0xbd, + 0x90, 0x7e, 0x26, 0x12, 0x53, 0xda, 0x96, 0xcd, 0xb7, 0xec, 0x70, 0xaf, + 0xdc, 0x36, 0xbc, 0x8d, 0xdb, 0x4c, 0xfe, 0xee, 0x8a, 0x6d, 0xae, 0xb7, + 0x38, 0x33, 0x91, 0x6b, 0xc3, 0x4c, 0xf1, 0x1a, 0xc9, 0xfc, 0x14, 0x18, + 0xd0, 0xec, 0xac, 0x96, 0x8d, 0x4b, 0x5c, 0xc9, 0xf9, 0x92, 0x47, 0xe4, + 0x44, 0x1f, 0xce, 0xb7, 0x49, 0xfa, 0x44, 0x47, 0x90, 0xff, 0x00, 0x6a, + 0x4a, 0x6d, 0xe2, 0xb9, 0xb8, 0xf6, 0xbe, 0xba, 0x01, 0xf4, 0x2b, 0x74, + 0x43, 0x4e, 0x92, 0xe1, 0x32, 0x01, 0x3e, 0x25, 0x57, 0xce, 0xea, 0xf4, + 0xe2, 0xbe, 0x9a, 0x5b, 0x5b, 0xc0, 0xbd, 0xc7, 0xd4, 0x70, 0x13, 0xb7, + 0x64, 0x13, 0x21, 0xa7, 0x59, 0x4e, 0xc9, 0x65, 0x96, 0x38, 0xb7, 0x92, + 0xd2, 0x5b, 0xac, 0x18, 0x1e, 0x4a, 0x86, 0x73, 0xed, 0xbb, 0x22, 0x8f, + 0x41, 0xa3, 0x70, 0x73, 0x81, 0x9d, 0x4e, 0xa3, 0x9d, 0x7e, 0x09, 0x29, + 0xb7, 0x8f, 0x7d, 0xd9, 0x15, 0x9b, 0x2d, 0x63, 0x85, 0x00, 0x9d, 0x1e, + 0x03, 0x74, 0x9d, 0x39, 0xfc, 0x54, 0xb6, 0x63, 0xb0, 0xed, 0xc7, 0xa9, + 0xa0, 0xc4, 0x9d, 0xa3, 0x73, 0x60, 0xf9, 0xe8, 0x04, 0xa8, 0xd5, 0x57, + 0x53, 0xb1, 0xa1, 0xad, 0x61, 0x81, 0x04, 0x7a, 0xa0, 0x01, 0x03, 0xb1, + 0xf1, 0x56, 0x5b, 0x81, 0x79, 0x0d, 0xdd, 0xb5, 0xa5, 0xda, 0xb9, 0x8d, + 0xf7, 0xf1, 0xf2, 0x10, 0x92, 0x90, 0x7d, 0xba, 0xbd, 0xa0, 0x8d, 0xc0, + 0x87, 0x7d, 0x17, 0x6d, 0x60, 0x70, 0xf1, 0x94, 0xcd, 0xc8, 0xa7, 0x21, + 0xe2, 0x80, 0xe6, 0x36, 0xe2, 0xe1, 0x15, 0x93, 0x3b, 0x87, 0xd2, 0xe5, + 0xb2, 0x38, 0x56, 0x5b, 0xd2, 0xb1, 0xab, 0xc9, 0x0e, 0xda, 0xf6, 0xd7, + 0x3e, 0xd6, 0xee, 0x96, 0x9f, 0xee, 0x57, 0x2c, 0xc4, 0xc6, 0x69, 0x6b, + 0x9f, 0x58, 0x04, 0x00, 0x6b, 0x31, 0x24, 0x6d, 0xf0, 0x23, 0x54, 0x94, + 0xe7, 0xfa, 0x4c, 0x36, 0x16, 0xb1, 0x9a, 0x30, 0x3a, 0x5c, 0xce, 0x40, + 0x1d, 0xa0, 0x2a, 0xfe, 0xae, 0x4f, 0xda, 0x3f, 0x99, 0xb3, 0xec, 0xfb, + 0x66, 0x3d, 0x3f, 0x6c, 0x4f, 0xd3, 0xdd, 0xcc, 0xc7, 0x68, 0x5a, 0x2e, + 0xab, 0x14, 0xb8, 0x7a, 0xc1, 0xce, 0x82, 0x43, 0x5c, 0x24, 0x6b, 0xcc, + 0x79, 0x14, 0x7d, 0xdf, 0xa0, 0x88, 0x3f, 0x47, 0xe8, 0xeb, 0x31, 0xc4, + 0xfd, 0xc9, 0x29, 0xe3, 0x0f, 0x59, 0xc4, 0x66, 0x43, 0x8b, 0xf2, 0x2a, + 0x34, 0xc0, 0x0d, 0x63, 0x25, 0xee, 0xdd, 0xe3, 0x2c, 0x09, 0x8f, 0xd6, + 0x0c, 0x06, 0x98, 0xaa, 0xab, 0xed, 0x3d, 0xb6, 0x30, 0x34, 0x69, 0xfd, + 0x62, 0xae, 0x62, 0xf4, 0xba, 0x45, 0x60, 0xb6, 0x86, 0x35, 0xc6, 0x0f, + 0xc8, 0x79, 0xa3, 0x8c, 0x5a, 0x8b, 0x5c, 0x0b, 0x40, 0x8d, 0x1d, 0x1e, + 0x72, 0xdf, 0xfb, 0xf2, 0x4a, 0x73, 0x7f, 0x69, 0x75, 0x1b, 0x4c, 0x63, + 0xf4, 0xc2, 0xd2, 0x0e, 0x86, 0xd7, 0xcf, 0x3e, 0x50, 0x8f, 0xe9, 0xfd, + 0x66, 0xb5, 0xb2, 0xd7, 0xd3, 0x8c, 0x01, 0xfc, 0xc6, 0x4c, 0x69, 0xc7, + 0xb9, 0x6b, 0xb1, 0xad, 0x69, 0x88, 0x97, 0x34, 0x34, 0x91, 0xe0, 0x60, + 0xf2, 0x55, 0xb6, 0x90, 0xd1, 0xa7, 0x73, 0xab, 0xbb, 0x03, 0xe4, 0x92, + 0x9e, 0x63, 0x2b, 0xa2, 0xe7, 0xbb, 0x1a, 0xec, 0x8b, 0xf3, 0xad, 0xb2, + 0xc0, 0xdd, 0xd0, 0x3f, 0x47, 0x20, 0x72, 0x3d, 0xa8, 0x95, 0xfd, 0x59, + 0xe9, 0xc2, 0xe9, 0x7b, 0x5d, 0x6b, 0x4f, 0xe7, 0x3c, 0x92, 0xb7, 0xad, + 0xac, 0xde, 0xcb, 0x1a, 0x07, 0xf3, 0x8d, 0x2d, 0x97, 0x78, 0x90, 0x46, + 0x8a, 0xae, 0x0d, 0x81, 0xf8, 0xf4, 0x9b, 0x07, 0xb8, 0xb1, 0xb3, 0xf1, + 0x6e, 0x85, 0x25, 0x23, 0xab, 0xa5, 0xf4, 0xfa, 0xcc, 0x55, 0x4b, 0x00, + 0xed, 0xa0, 0x9f, 0xc5, 0x10, 0x61, 0xd0, 0x1e, 0x1d, 0xb4, 0x0d, 0x8e, + 0x0e, 0x9f, 0xf3, 0x9b, 0xa7, 0xc8, 0xab, 0x5b, 0x37, 0x3f, 0x48, 0x22, + 0x34, 0x49, 0xcd, 0x70, 0x80, 0x79, 0x1f, 0xef, 0xd1, 0x25, 0x22, 0x65, + 0x4d, 0x75, 0x20, 0x01, 0x11, 0xdc, 0xe8, 0x56, 0x5f, 0xd7, 0x0a, 0x3d, + 0x5e, 0x85, 0xea, 0x19, 0xdd, 0x45, 0xcd, 0x77, 0xc8, 0xcb, 0x3f, 0xef, + 0xcb, 0x66, 0xb6, 0xfb, 0x4b, 0x5d, 0xc4, 0x9d, 0x7c, 0xbc, 0xca, 0xab, + 0xd7, 0x29, 0x39, 0x3d, 0x13, 0x31, 0xbd, 0x85, 0x25, 0xc0, 0x71, 0xad, + 0x7e, 0xef, 0xfb, 0xea, 0x4a, 0x7c, 0xc9, 0x24, 0x92, 0x49, 0x4a, 0x49, + 0x24, 0x92, 0x52, 0x92, 0x1a, 0x6a, 0x92, 0x49, 0x29, 0xf4, 0xec, 0x19, + 0x7e, 0x38, 0xb7, 0xf7, 0xda, 0xd7, 0xb6, 0x3c, 0xc4, 0xac, 0x7e, 0xa4, + 0xcf, 0xd3, 0x9b, 0x01, 0xfa, 0x46, 0x24, 0x78, 0xad, 0x8c, 0x16, 0x8f, + 0xb0, 0xd2, 0xea, 0xcc, 0x87, 0x54, 0xd2, 0xc0, 0xed, 0x23, 0xda, 0x16, + 0x6f, 0x53, 0x6b, 0x8b, 0x09, 0x70, 0x2d, 0xf0, 0x24, 0x68, 0x7e, 0x09, + 0x29, 0xe7, 0x7a, 0xb5, 0xa1, 0xae, 0xc6, 0x04, 0xc8, 0xde, 0x5c, 0x7c, + 0x20, 0x40, 0x5b, 0x78, 0x4f, 0x25, 0xbf, 0xa3, 0xd4, 0xb4, 0xfb, 0x5b, + 0xe2, 0x25, 0x73, 0xdd, 0x78, 0x8f, 0x5e, 0x96, 0xb7, 0x86, 0xd6, 0x3f, + 0x12, 0x56, 0xc7, 0x4a, 0xfa, 0x02, 0x0f, 0x60, 0x7e, 0x70, 0x92, 0x9d, + 0xdf, 0x51, 0xaf, 0x6b, 0x47, 0x0f, 0x33, 0xd8, 0xfe, 0x55, 0xc9, 0x7d, + 0x67, 0xaf, 0x65, 0xf5, 0x1f, 0x1d, 0xdf, 0x94, 0x2e, 0xa6, 0x97, 0xee, + 0x04, 0x1f, 0x6b, 0xbc, 0x0f, 0x07, 0xcc, 0x2e, 0x73, 0xeb, 0x63, 0x40, + 0x75, 0x1a, 0x6a, 0x0b, 0xa4, 0xfc, 0x61, 0x25, 0x3c, 0xea, 0x49, 0x24, + 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x2d, 0x7f, 0xab, 0x0d, 0x0e, 0xea, + 0x75, 0x07, 0x09, 0x1b, 0xd8, 0x7e, 0xe7, 0x2c, 0x85, 0xb1, 0xf5, 0x5c, + 0x7f, 0x95, 0x6b, 0xfe, 0xb3, 0x3f, 0xea, 0xda, 0x92, 0x9e, 0xe2, 0x8a, + 0xff, 0x00, 0x5c, 0xcc, 0x2e, 0xfa, 0x4e, 0xf4, 0xdc, 0x47, 0x94, 0xbf, + 0x89, 0xf8, 0x29, 0xbd, 0xcd, 0xa7, 0xf4, 0x96, 0x93, 0xa0, 0x30, 0x63, + 0x5f, 0x71, 0xe1, 0x2a, 0x1a, 0xf7, 0x66, 0x65, 0x3a, 0x41, 0xdc, 0x58, + 0xdd, 0xbf, 0xd5, 0x2f, 0xfe, 0xf4, 0x4c, 0x8a, 0xdb, 0xb7, 0xc0, 0x69, + 0xa1, 0xd7, 0xcf, 0xf8, 0xa4, 0xa4, 0x42, 0xcf, 0x51, 0x8e, 0x7b, 0x78, + 0x03, 0xb7, 0x3e, 0xd2, 0x52, 0xa9, 0xbb, 0x6c, 0xad, 0xe1, 0xa7, 0x57, + 0x1d, 0xe7, 0xc3, 0xdb, 0xca, 0x58, 0xd5, 0xfa, 0x74, 0xb8, 0x33, 0x40, + 0x77, 0x11, 0xe6, 0xe2, 0xe4, 0x76, 0x6d, 0x67, 0xa2, 0xe3, 0xac, 0xba, + 0x20, 0xf9, 0x84, 0x94, 0xdb, 0x63, 0x6c, 0x0e, 0x69, 0x2d, 0xdd, 0x2e, + 0xdb, 0xb9, 0xba, 0x7a, 0x6d, 0x20, 0xfb, 0x93, 0xbb, 0xf6, 0x90, 0x24, + 0xe3, 0xb5, 0x8e, 0x61, 0x03, 0x63, 0x5c, 0xe2, 0x1d, 0xcf, 0x8e, 0xa1, + 0x33, 0x58, 0xd3, 0x61, 0xd8, 0xc1, 0xac, 0x17, 0x1e, 0x38, 0xd1, 0x1e, + 0xdb, 0x1d, 0xb3, 0x63, 0x44, 0xbb, 0x89, 0x98, 0x81, 0xde, 0x21, 0x25, + 0x20, 0x6b, 0xfa, 0x84, 0xb4, 0xbb, 0x17, 0x50, 0x44, 0x93, 0x60, 0x82, + 0x3b, 0x95, 0x6c, 0x56, 0x1a, 0xe1, 0x61, 0x61, 0xd2, 0x76, 0x07, 0x1d, + 0xdc, 0xf8, 0x0e, 0xcb, 0x0e, 0xcb, 0xba, 0x9e, 0x33, 0xac, 0x38, 0xf9, + 0x04, 0xd6, 0xd7, 0xc0, 0xaa, 0xe1, 0xbd, 0xb0, 0x20, 0xed, 0x0e, 0xfa, + 0x41, 0x1f, 0xf6, 0xa7, 0x58, 0x70, 0x6f, 0xa7, 0x81, 0x5b, 0x7c, 0x4b, + 0xae, 0x2e, 0x1e, 0x71, 0x15, 0x84, 0x94, 0xea, 0xb7, 0x67, 0xd0, 0x02, + 0x20, 0xfe, 0x90, 0x9f, 0x03, 0xa8, 0x09, 0xbe, 0xce, 0x37, 0xce, 0xbb, + 0x22, 0x76, 0x49, 0x8f, 0x09, 0xe5, 0x65, 0xb5, 0xfd, 0x5d, 0xf7, 0x36, + 0xeb, 0x8d, 0x6d, 0x60, 0x8d, 0xd4, 0x31, 0xa6, 0x08, 0x1f, 0xca, 0x26, + 0x56, 0xbf, 0xad, 0x57, 0xa7, 0xba, 0x74, 0x8e, 0x35, 0x9f, 0x84, 0x78, + 0xa4, 0xa7, 0x9c, 0xc3, 0xb0, 0xdb, 0x81, 0x8d, 0x74, 0xea, 0xfa, 0xdb, + 0xbb, 0xfa, 0xd1, 0x07, 0xf1, 0x4e, 0xed, 0xa1, 0xc2, 0x41, 0x87, 0x0d, + 0xb3, 0xf1, 0x11, 0xf7, 0xa1, 0xe2, 0x11, 0x56, 0x3b, 0xea, 0x1f, 0xe0, + 0x6d, 0xb1, 0x9f, 0x01, 0xbc, 0x91, 0xf8, 0x15, 0x2b, 0xa9, 0x05, 0x9b, + 0x4f, 0xd0, 0x26, 0x04, 0x76, 0x9d, 0x3f, 0x8a, 0x4a, 0x5b, 0x11, 0xb6, + 0xb5, 0xd6, 0x32, 0xc9, 0x25, 0xa1, 0xa0, 0x4f, 0x80, 0xf6, 0xc9, 0x5a, + 0x15, 0xb3, 0x7e, 0xd2, 0x4e, 0xe8, 0x1a, 0x7e, 0xe8, 0x3e, 0x28, 0x00, + 0xc8, 0xe3, 0x48, 0x90, 0x3b, 0xf8, 0xa3, 0xd4, 0x5c, 0x00, 0x04, 0x07, + 0x41, 0xd0, 0x37, 0x48, 0xf8, 0xa4, 0xa5, 0x48, 0x76, 0xa3, 0xde, 0xe6, + 0x9e, 0x78, 0x68, 0x54, 0xb1, 0x1a, 0xd6, 0x32, 0xc6, 0x7f, 0xa3, 0xb2, + 0xc6, 0xcf, 0x3a, 0x17, 0x6e, 0x1f, 0x81, 0x57, 0x9d, 0x02, 0xd7, 0x54, + 0x4e, 0xe3, 0x1b, 0x98, 0xd0, 0x20, 0x41, 0xd7, 0x95, 0x4d, 0x90, 0xdc, + 0x8c, 0x90, 0x44, 0x6f, 0xd9, 0x60, 0x1f, 0xd6, 0x6e, 0xd7, 0x7f, 0xd4, + 0xa4, 0xa6, 0xcc, 0x0f, 0x6b, 0x87, 0x71, 0x3a, 0x70, 0x9c, 0xb6, 0x49, + 0x27, 0x53, 0xe1, 0xe5, 0xaf, 0xf7, 0xa6, 0x6b, 0x80, 0xad, 0xae, 0x1c, + 0x47, 0xfb, 0x52, 0xf5, 0x36, 0xb6, 0x5d, 0xac, 0x4e, 0xa9, 0x29, 0x76, + 0x02, 0x1e, 0xe6, 0x7c, 0xfe, 0x00, 0x84, 0x4a, 0xe9, 0x37, 0x63, 0x59, + 0x41, 0x87, 0x36, 0xc0, 0xe6, 0x3c, 0x7c, 0x74, 0xfc, 0x85, 0x0b, 0x77, + 0xbc, 0xfe, 0xf0, 0xfe, 0xff, 0x00, 0x04, 0x5a, 0x81, 0xdc, 0x5d, 0xc0, + 0x06, 0x4f, 0xcf, 0x44, 0x94, 0xf9, 0x13, 0xd8, 0x58, 0xf7, 0x31, 0xda, + 0x16, 0x92, 0x08, 0x3e, 0x21, 0x45, 0x5f, 0xeb, 0xb4, 0x1c, 0x7e, 0xb3, + 0x9b, 0x54, 0x44, 0x5c, 0xe2, 0x07, 0x93, 0x8e, 0xe1, 0xf8, 0x15, 0x41, + 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0xe0, 0x49, 0x03, 0xc5, + 0x25, 0x3e, 0x93, 0x45, 0xa3, 0x1f, 0x0b, 0x16, 0x8b, 0x35, 0x6f, 0xa4, + 0xc6, 0x97, 0x46, 0x80, 0x40, 0x12, 0xaa, 0x3b, 0xd1, 0x2d, 0x7b, 0x6c, + 0x77, 0xb6, 0x0f, 0xa5, 0xb8, 0xea, 0x34, 0xf3, 0xf3, 0x57, 0x2d, 0x69, + 0xa2, 0xca, 0xd8, 0xc6, 0x8b, 0x25, 0x9b, 0x80, 0xee, 0x0b, 0x7d, 0xba, + 0x7f, 0x72, 0xa3, 0x97, 0x5b, 0x6c, 0xb0, 0x1b, 0xdb, 0xee, 0x63, 0x86, + 0x9c, 0x6a, 0x00, 0xfc, 0x12, 0x53, 0xca, 0xf5, 0xd6, 0xed, 0xc9, 0xae, + 0x0c, 0xfb, 0x23, 0xee, 0x25, 0x6e, 0xf4, 0xfc, 0x67, 0x59, 0x8f, 0x4d, + 0xf4, 0x10, 0x0e, 0xd6, 0xc8, 0x98, 0xed, 0xac, 0x2c, 0x3e, 0xbe, 0x5d, + 0xf6, 0xb6, 0x83, 0xc0, 0x6e, 0x9f, 0x79, 0x2b, 0xa2, 0xfa, 0xbc, 0xc0, + 0xde, 0x9a, 0xd6, 0xbf, 0x9d, 0x23, 0xe1, 0x09, 0x29, 0xbf, 0x8c, 0xe3, + 0x71, 0xf7, 0x1d, 0xb6, 0x33, 0xe9, 0x0e, 0xcb, 0x9d, 0xfa, 0xd6, 0xf0, + 0xed, 0x80, 0x0e, 0x1f, 0xcf, 0xc9, 0x74, 0x4d, 0xc6, 0x78, 0xb7, 0x75, + 0x66, 0x7f, 0x7b, 0x77, 0x11, 0xe6, 0xb9, 0xcf, 0xac, 0x0f, 0xf5, 0xe9, + 0xb2, 0xe0, 0x3d, 0xa2, 0xc6, 0x86, 0xfc, 0x00, 0x84, 0x94, 0xf3, 0xa9, + 0x24, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x94, 0xb5, 0xfe, 0xad, 0x7f, + 0xca, 0x4d, 0x3e, 0x1b, 0x4f, 0xfd, 0x36, 0xac, 0x85, 0xb1, 0xf5, 0x60, + 0x4f, 0x50, 0x70, 0xfe, 0x40, 0x8f, 0xf3, 0xd8, 0x92, 0x9e, 0xfb, 0x15, + 0x83, 0xed, 0x79, 0x04, 0x0d, 0xce, 0x21, 0x8e, 0x77, 0x91, 0x97, 0xab, + 0x36, 0x52, 0x1c, 0xd3, 0xfb, 0xd1, 0xa0, 0x3d, 0xcf, 0xfa, 0x85, 0x0c, + 0x36, 0x83, 0x91, 0x94, 0x7b, 0x0a, 0xda, 0x7e, 0x30, 0xf7, 0xea, 0xac, + 0x59, 0x58, 0x73, 0x41, 0x00, 0x9d, 0x74, 0x3a, 0xc0, 0x3f, 0xed, 0x49, + 0x4d, 0x36, 0xd7, 0xb2, 0x86, 0x13, 0x32, 0x0c, 0x13, 0xda, 0x1f, 0xfd, + 0xc8, 0xee, 0x6e, 0xd6, 0xb3, 0xfa, 0xff, 0x00, 0xf7, 0xd2, 0x88, 0xda, + 0x62, 0x43, 0x8c, 0x31, 0xad, 0x80, 0x39, 0x6e, 0xaa, 0xb6, 0x7b, 0x89, + 0xa1, 0xbb, 0x77, 0x35, 0xc2, 0xd1, 0xc7, 0xf5, 0x4a, 0x4a, 0x74, 0x19, + 0x3a, 0xcc, 0x84, 0x17, 0x3a, 0x48, 0x70, 0x23, 0x4e, 0x07, 0x74, 0x1c, + 0x7d, 0xee, 0x64, 0x5f, 0x73, 0xbe, 0x50, 0x3f, 0x82, 0x93, 0x9a, 0x09, + 0xda, 0xd0, 0x3d, 0xbf, 0x13, 0xa7, 0xcd, 0x25, 0x32, 0x65, 0x03, 0x23, + 0x7d, 0x4e, 0x1a, 0x1f, 0x76, 0xee, 0xe9, 0x63, 0xe3, 0xe4, 0xd6, 0x43, + 0x74, 0x7d, 0x7c, 0x35, 0xd2, 0x3f, 0x8a, 0x4c, 0x25, 0xa4, 0x17, 0x1d, + 0x1a, 0x09, 0x00, 0x4b, 0x5a, 0x64, 0x7e, 0x77, 0x8f, 0x0a, 0xdb, 0xd8, + 0xd7, 0x9d, 0x44, 0x37, 0x42, 0x0f, 0x60, 0x92, 0x91, 0x3e, 0xa7, 0xb0, + 0xfe, 0x5e, 0xe1, 0x37, 0xa1, 0x6f, 0xd3, 0x83, 0xb5, 0x5b, 0x60, 0x9a, + 0xc7, 0x79, 0xed, 0xe2, 0x9f, 0x6b, 0xa7, 0x91, 0x3f, 0xb9, 0xa4, 0x47, + 0x82, 0x4a, 0x79, 0xc0, 0x03, 0x73, 0x32, 0xab, 0x1f, 0x9d, 0xb2, 0xd9, + 0x3c, 0x0d, 0xcd, 0x0d, 0x27, 0xfe, 0x8a, 0x2d, 0xbf, 0xcd, 0x10, 0xde, + 0x62, 0x40, 0x3f, 0x97, 0xef, 0x4f, 0x65, 0x1b, 0xf3, 0x58, 0xe0, 0x75, + 0xb2, 0x82, 0x07, 0x86, 0xe6, 0x3b, 0x4f, 0xfa, 0xb5, 0x3f, 0xb2, 0x3b, + 0x69, 0xf5, 0x1d, 0x02, 0x21, 0xc5, 0xde, 0xdd, 0xdf, 0x7a, 0x4a, 0x60, + 0xd2, 0x22, 0x3c, 0xcf, 0xc6, 0x25, 0x1b, 0x14, 0x33, 0x73, 0xd8, 0x34, + 0x26, 0x0e, 0xd9, 0xd7, 0x45, 0x06, 0x53, 0x4d, 0x70, 0x5d, 0x64, 0xbb, + 0xf9, 0x32, 0x7e, 0xe4, 0x4a, 0xfd, 0x06, 0x3b, 0x75, 0x60, 0xee, 0x1d, + 0xdd, 0x00, 0x9f, 0xca, 0x92, 0x97, 0xbb, 0x66, 0xc6, 0x99, 0x82, 0x34, + 0x81, 0xdc, 0x8d, 0x35, 0x55, 0x1f, 0x59, 0xfb, 0x4b, 0x5d, 0x11, 0xea, + 0x56, 0xe6, 0xc7, 0x9b, 0x1c, 0x1c, 0x3f, 0x2a, 0x3b, 0x6c, 0xf4, 0x81, + 0xaa, 0xba, 0xc0, 0x69, 0x97, 0x17, 0x1f, 0x71, 0x24, 0xea, 0x75, 0x72, + 0x8d, 0x39, 0x16, 0x5a, 0xc6, 0xd8, 0xf6, 0xba, 0xb7, 0x99, 0xf6, 0x3a, + 0x01, 0x1d, 0xbb, 0x24, 0xa4, 0x8d, 0xc7, 0x76, 0xd2, 0x26, 0x1a, 0x74, + 0xd7, 0x48, 0x44, 0x34, 0xd2, 0x19, 0x06, 0xc0, 0x74, 0xed, 0xaf, 0xe4, + 0x54, 0xdc, 0xec, 0x87, 0x5c, 0x18, 0x1a, 0x0d, 0x5b, 0x4e, 0xe2, 0x75, + 0x20, 0xf6, 0x0a, 0xc5, 0x6c, 0x78, 0x11, 0x32, 0x3c, 0xf4, 0x09, 0x29, + 0x86, 0x26, 0x38, 0xc7, 0xad, 0xc2, 0xd7, 0xba, 0xf7, 0x13, 0x3b, 0x8e, + 0x83, 0xf1, 0xd5, 0x1c, 0x64, 0x55, 0x2d, 0xad, 0xa4, 0x07, 0xd8, 0x0e, + 0xd6, 0xf2, 0x61, 0xbc, 0xc7, 0xc1, 0x3b, 0x2b, 0x6b, 0xa4, 0x1d, 0x4f, + 0x22, 0x06, 0xb3, 0xfd, 0xea, 0x55, 0x56, 0x06, 0xd9, 0xe7, 0x96, 0xc0, + 0x8f, 0xb9, 0x25, 0x3e, 0x75, 0xf5, 0xca, 0xa7, 0x33, 0xab, 0xfa, 0xae, + 0x10, 0xeb, 0xea, 0x63, 0x9d, 0x1f, 0xbc, 0xd9, 0xac, 0xff, 0x00, 0xd4, + 0xac, 0x15, 0xd9, 0x7f, 0x8c, 0x2a, 0x08, 0xb7, 0x16, 0xfe, 0xc7, 0x7b, + 0x7c, 0xb5, 0x0d, 0x70, 0xfe, 0x2b, 0x8d, 0x49, 0x4a, 0x49, 0x24, 0x92, + 0x52, 0x94, 0xe9, 0x6e, 0xfb, 0xab, 0x67, 0xef, 0x38, 0x0f, 0xbc, 0xa8, + 0x2b, 0x18, 0x0d, 0xdd, 0x9d, 0x8e, 0x22, 0x7f, 0x48, 0xc9, 0xff, 0x00, + 0x38, 0x24, 0xa7, 0xd2, 0x72, 0x71, 0x3d, 0x66, 0xc5, 0x6e, 0x87, 0xd4, + 0x49, 0x69, 0xf1, 0x91, 0xc2, 0xc4, 0xba, 0xeb, 0x99, 0xbe, 0xec, 0x80, + 0x43, 0xc3, 0x89, 0x87, 0x68, 0x61, 0xa0, 0x34, 0x1f, 0xc1, 0x6e, 0xd7, + 0x7b, 0x06, 0x27, 0xda, 0x1d, 0x20, 0x90, 0x34, 0xfc, 0x8b, 0x95, 0xea, + 0x99, 0x8e, 0xc9, 0xb4, 0xb0, 0x70, 0x49, 0x00, 0xf2, 0x92, 0x9c, 0xee, + 0xb2, 0xf6, 0xe4, 0x52, 0xdb, 0xc3, 0x43, 0x5c, 0xc7, 0x41, 0x23, 0xbe, + 0xe1, 0xff, 0x00, 0x98, 0xae, 0x83, 0xa4, 0xd7, 0x63, 0x71, 0xe9, 0xe7, + 0x69, 0x63, 0x48, 0x3f, 0x20, 0xb9, 0xee, 0xb0, 0x05, 0x18, 0xd8, 0xf4, + 0x0d, 0x37, 0xcd, 0x87, 0xe5, 0xa0, 0xfc, 0xa5, 0x6c, 0x63, 0xf5, 0x2a, + 0xf1, 0xfa, 0x4e, 0x39, 0x26, 0x6d, 0xd8, 0xdd, 0xac, 0x07, 0x5d, 0x34, + 0x93, 0xf7, 0x24, 0xa7, 0x4b, 0x3b, 0x2c, 0x51, 0x8e, 0x6a, 0x04, 0x17, + 0xdb, 0x23, 0x4f, 0x05, 0xcf, 0x75, 0x61, 0x1d, 0x34, 0xcc, 0x6a, 0xf6, + 0xc7, 0xe5, 0x52, 0x65, 0xd6, 0x65, 0x38, 0xd8, 0xe7, 0x82, 0x5c, 0x62, + 0x3c, 0xbb, 0xe8, 0x14, 0x7a, 0xf3, 0x76, 0x60, 0xd4, 0xdd, 0x67, 0x7c, + 0xeb, 0xfb, 0xb1, 0xa2, 0x4a, 0x79, 0xf4, 0x92, 0x49, 0x25, 0x29, 0x24, + 0x92, 0x49, 0x4a, 0x5b, 0x1f, 0x55, 0x84, 0xf5, 0x38, 0xf1, 0x61, 0xff, + 0x00, 0xaa, 0x6a, 0xc7, 0x5b, 0x5f, 0x54, 0xff, 0x00, 0xe5, 0x76, 0xff, + 0x00, 0x51, 0xdf, 0x94, 0x24, 0xa7, 0xd1, 0xb0, 0xc1, 0x39, 0xb9, 0x6c, + 0x11, 0xfc, 0xd0, 0x88, 0xfe, 0xb9, 0x47, 0xad, 0xfa, 0x6c, 0x77, 0x63, + 0x10, 0xab, 0x61, 0x12, 0xde, 0xa9, 0x90, 0x27, 0xda, 0x68, 0x07, 0xe7, + 0xea, 0x1f, 0x04, 0x6a, 0xa2, 0xc7, 0xc9, 0x1b, 0xa1, 0xc6, 0x7b, 0x1f, + 0x04, 0x94, 0xc8, 0x65, 0x55, 0x6e, 0xf6, 0xb2, 0x7d, 0x84, 0x49, 0x8e, + 0x41, 0xd2, 0x42, 0xab, 0x99, 0xb8, 0xd6, 0xc3, 0xc1, 0xf5, 0x40, 0x81, + 0xf0, 0x72, 0xb4, 0xcc, 0x7a, 0x71, 0xab, 0x71, 0x6b, 0x84, 0x76, 0xf2, + 0x93, 0x3a, 0xa0, 0xe6, 0x31, 0xc7, 0x1d, 0x91, 0xf4, 0xbd, 0x40, 0x74, + 0xf8, 0x1f, 0x14, 0x94, 0xb5, 0x52, 0xe0, 0x7b, 0x7f, 0x72, 0x35, 0x64, + 0x49, 0xdc, 0xd0, 0x60, 0x68, 0xa2, 0xca, 0xde, 0xd6, 0x49, 0x11, 0xe3, + 0xf1, 0x44, 0xac, 0x49, 0xd0, 0xcc, 0xf1, 0x3c, 0x24, 0xa4, 0x6c, 0xdc, + 0xe7, 0xb5, 0x9e, 0x67, 0xee, 0x8e, 0x55, 0xd8, 0x2f, 0x66, 0xe3, 0xc8, + 0x11, 0xfe, 0xa1, 0x57, 0xae, 0x91, 0xea, 0x16, 0x82, 0x49, 0x8d, 0x15, + 0x98, 0x63, 0x47, 0xa9, 0xb4, 0xbb, 0x64, 0xc1, 0x03, 0xdd, 0xf2, 0x49, + 0x4c, 0x31, 0x09, 0x63, 0xce, 0x3b, 0xdc, 0xd7, 0x38, 0x02, 0xe6, 0x99, + 0x87, 0x6d, 0x26, 0x38, 0xf8, 0xa3, 0x43, 0x77, 0x73, 0xe7, 0x1f, 0xc1, + 0x61, 0xdd, 0xd5, 0x59, 0xfb, 0x42, 0xc7, 0x06, 0x16, 0xba, 0x90, 0x2b, + 0x06, 0x06, 0xef, 0xde, 0x9f, 0x9a, 0x2f, 0xed, 0x3b, 0xbd, 0x29, 0xf7, + 0x47, 0x3f, 0x43, 0x5f, 0xf3, 0x52, 0x52, 0x0a, 0xf2, 0xec, 0xba, 0xa1, + 0x61, 0xdc, 0xc1, 0xac, 0x36, 0x36, 0x9f, 0xb9, 0x07, 0x28, 0xde, 0xf3, + 0x5e, 0xd8, 0xdb, 0xbb, 0xf4, 0x85, 0xc7, 0x5d, 0xb1, 0xd9, 0x1c, 0x82, + 0x49, 0x27, 0x50, 0x38, 0x82, 0x7f, 0xb9, 0x38, 0x00, 0x88, 0x0e, 0x13, + 0xcc, 0x01, 0xfd, 0xe9, 0x29, 0x4d, 0xad, 0xc4, 0x02, 0x00, 0x81, 0xdf, + 0x95, 0x20, 0xcd, 0x63, 0xc7, 0xc0, 0x29, 0x4e, 0xd6, 0x88, 0x31, 0x3c, + 0xf6, 0xfe, 0x09, 0xab, 0xa6, 0x2c, 0x7d, 0xa6, 0xc2, 0xe2, 0xf0, 0x06, + 0xd2, 0x7d, 0xad, 0x8e, 0xed, 0x1e, 0x25, 0x25, 0x32, 0x15, 0xc8, 0x2d, + 0xf1, 0x12, 0x24, 0xa9, 0x06, 0x08, 0x81, 0x10, 0x3c, 0x12, 0x8d, 0xba, + 0xc1, 0x83, 0xc2, 0x85, 0x37, 0xb2, 0xe6, 0x6f, 0xfc, 0xcd, 0x5b, 0x2e, + 0xd0, 0xc8, 0x31, 0xc2, 0x4a, 0x67, 0xb6, 0x48, 0xfe, 0xf4, 0x43, 0x58, + 0x3b, 0x87, 0x72, 0x20, 0xc4, 0xf7, 0xef, 0x28, 0x2f, 0xb0, 0x32, 0xb7, + 0x9a, 0x9c, 0xc7, 0x59, 0x07, 0x68, 0x26, 0x04, 0x8f, 0x13, 0x29, 0x9d, + 0x90, 0xda, 0x58, 0x1f, 0x7b, 0x9b, 0x5b, 0x60, 0x6e, 0x7b, 0xec, 0x6b, + 0x1b, 0x3d, 0xe2, 0x52, 0x52, 0x5a, 0xab, 0x6d, 0x75, 0x36, 0xbd, 0xee, + 0x3b, 0x40, 0x1b, 0x9c, 0x44, 0x98, 0xf1, 0x4f, 0x6d, 0x86, 0xb6, 0x3a, + 0xc1, 0x59, 0xb0, 0xb4, 0x4c, 0x37, 0x93, 0x1e, 0x13, 0xdd, 0x64, 0x5d, + 0xf5, 0x97, 0xa7, 0xd5, 0x21, 0x87, 0xd7, 0x27, 0xfd, 0x0c, 0xbf, 0xf1, + 0x88, 0xfc, 0x54, 0x1b, 0xd6, 0x6f, 0xca, 0x1b, 0xb1, 0xba, 0x71, 0x20, + 0x47, 0xbe, 0xd7, 0x06, 0x81, 0xf2, 0x00, 0x94, 0x94, 0x83, 0xeb, 0xc5, + 0x22, 0xfe, 0x99, 0xeb, 0xc0, 0x9a, 0xb6, 0x3f, 0x4e, 0xda, 0x96, 0x1e, + 0x3f, 0xac, 0xbc, 0xf9, 0x7a, 0x4f, 0x54, 0x66, 0x5e, 0x4f, 0x48, 0xcb, + 0x66, 0x53, 0x58, 0xd7, 0x7a, 0x0e, 0x75, 0x4c, 0xac, 0x10, 0xcf, 0x68, + 0xdf, 0xde, 0x75, 0xf6, 0xaf, 0x36, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, + 0x95, 0xee, 0x8d, 0xb5, 0xb9, 0xec, 0xb9, 0xff, 0x00, 0x42, 0x99, 0x79, + 0xfc, 0x83, 0xf1, 0x2a, 0x8c, 0x2b, 0xdd, 0x27, 0x33, 0xec, 0x99, 0x5b, + 0x8b, 0x1b, 0x63, 0x6c, 0x1b, 0x08, 0x79, 0x81, 0xc8, 0x20, 0xca, 0x4a, + 0x76, 0xf2, 0x3a, 0x8f, 0x54, 0xcd, 0x70, 0xa3, 0x04, 0x1f, 0x41, 0xba, + 0x12, 0x34, 0xfc, 0x42, 0xb1, 0x89, 0xd2, 0x5e, 0xdf, 0x75, 0xc4, 0x1b, + 0x5d, 0xd8, 0x19, 0x03, 0xef, 0x57, 0x31, 0x2c, 0xb4, 0xb6, 0x46, 0x37, + 0xa2, 0xf2, 0x63, 0xda, 0x5a, 0x5a, 0xe0, 0x7c, 0x1c, 0xd9, 0x8f, 0x9a, + 0x28, 0x7e, 0x61, 0x7e, 0xe6, 0xe2, 0xc8, 0xe2, 0x43, 0xc1, 0x8f, 0x92, + 0x4a, 0x79, 0x5f, 0xad, 0x16, 0x07, 0x75, 0x47, 0x54, 0xd2, 0x0b, 0x68, + 0x63, 0x58, 0x23, 0xfc, 0xef, 0xe2, 0xb5, 0x3a, 0x00, 0x17, 0xf4, 0xe6, + 0xd2, 0xf6, 0xee, 0x73, 0x4f, 0xb7, 0x4f, 0xcd, 0x27, 0xf8, 0x2c, 0x4e, + 0xbb, 0x51, 0xaf, 0xa9, 0xdc, 0x0f, 0x2e, 0x21, 0xc6, 0x79, 0x04, 0xf6, + 0x5a, 0xfd, 0x1a, 0xda, 0x31, 0xb1, 0x19, 0x63, 0x9e, 0x4b, 0xec, 0x10, + 0xda, 0xeb, 0x05, 0xcf, 0x24, 0x7b, 0x49, 0x80, 0x0c, 0x24, 0xa6, 0xf5, + 0x75, 0xe2, 0xe2, 0x17, 0x58, 0xf8, 0x0e, 0x1a, 0x4f, 0x7f, 0x80, 0x58, + 0xdd, 0x63, 0x21, 0x99, 0x4c, 0x7b, 0xa0, 0x82, 0xd1, 0x2c, 0x69, 0xec, + 0x01, 0x0b, 0x62, 0xbc, 0x1a, 0xac, 0xf7, 0xd9, 0x4d, 0xae, 0x71, 0xd7, + 0xde, 0xc7, 0x4c, 0x7c, 0x21, 0x0f, 0xaa, 0xe2, 0x56, 0xde, 0x97, 0x7d, + 0xb5, 0xb0, 0xb3, 0x63, 0x20, 0x82, 0xd2, 0xd3, 0xc8, 0x8d, 0x0f, 0xc5, + 0x25, 0x3c, 0x72, 0x96, 0xd8, 0x12, 0x78, 0xec, 0x99, 0x15, 0xb4, 0x12, + 0x01, 0x71, 0x80, 0x78, 0xee, 0x92, 0x90, 0xa7, 0x11, 0xdc, 0xa2, 0x1a, + 0x9a, 0x38, 0x32, 0x98, 0xd6, 0x00, 0x99, 0x13, 0xf1, 0x49, 0x4c, 0x34, + 0xf1, 0x5b, 0x3f, 0x54, 0xbf, 0xe5, 0xaa, 0x80, 0xee, 0xd7, 0xfe, 0x45, + 0x8f, 0xb4, 0xad, 0x6f, 0xab, 0x1e, 0xa3, 0x7a, 0xc5, 0x46, 0xb6, 0x6f, + 0x7c, 0x3a, 0x1a, 0x74, 0x1a, 0x88, 0x3f, 0x70, 0x49, 0x4f, 0xa3, 0x50, + 0xd3, 0xfb, 0x5d, 0xec, 0x03, 0x57, 0x63, 0x9d, 0x7f, 0xeb, 0x8a, 0x76, + 0x8b, 0x28, 0x8b, 0x1a, 0x67, 0x79, 0x21, 0xe3, 0xf7, 0x75, 0xfa, 0x4a, + 0x38, 0xaf, 0x1f, 0xb6, 0xdc, 0x01, 0x93, 0xf6, 0x77, 0x69, 0xf0, 0xb1, + 0xab, 0x42, 0xfa, 0xc3, 0xab, 0xf7, 0x47, 0x74, 0x94, 0xd3, 0x73, 0xc5, + 0x84, 0xc1, 0xf6, 0x9f, 0xa2, 0x7b, 0x78, 0x20, 0xe4, 0x92, 0xe7, 0xd3, + 0x4b, 0x75, 0x87, 0xf3, 0x3e, 0x0d, 0x76, 0x89, 0xdc, 0xc2, 0x5f, 0xb2, + 0xb3, 0x00, 0x44, 0xf7, 0xd0, 0x1d, 0x53, 0x5a, 0x43, 0x33, 0x2a, 0x60, + 0xd4, 0x97, 0xc9, 0xed, 0xf9, 0xa5, 0x25, 0x36, 0x00, 0x79, 0x66, 0xd7, + 0x19, 0x8e, 0x27, 0xfd, 0x8a, 0x9e, 0x56, 0x2b, 0xf7, 0x35, 0xef, 0xcb, + 0xb6, 0xb6, 0x6e, 0xd4, 0x56, 0x43, 0x67, 0xcb, 0x41, 0x2b, 0x46, 0x00, + 0x3a, 0xe9, 0x3c, 0x2c, 0xfe, 0xb4, 0x4b, 0x70, 0x5c, 0xe0, 0x35, 0x6b, + 0x98, 0x40, 0x1f, 0xd6, 0x84, 0x94, 0xdf, 0x69, 0x6d, 0x75, 0x83, 0x04, + 0x98, 0x10, 0x7e, 0x97, 0xce, 0x4a, 0xab, 0x9f, 0x93, 0x7d, 0x8c, 0x2d, + 0x69, 0xfb, 0x3b, 0x5a, 0x04, 0x49, 0x1b, 0x89, 0x9e, 0xf0, 0x56, 0x5e, + 0x35, 0xf6, 0xdf, 0x5d, 0x77, 0xb2, 0xeb, 0x18, 0x1b, 0x21, 0xac, 0x71, + 0x81, 0x13, 0xdd, 0xbd, 0xd6, 0x8d, 0x83, 0xd7, 0xaf, 0xf4, 0xad, 0x12, + 0x46, 0x9b, 0x74, 0x49, 0x4e, 0x6e, 0x63, 0x6a, 0xc9, 0xb7, 0xd5, 0x7d, + 0x9b, 0x5e, 0x44, 0x30, 0x30, 0x6d, 0x24, 0x7f, 0x29, 0xe0, 0x89, 0xfb, + 0x90, 0xff, 0x00, 0x67, 0xe4, 0x6d, 0x9f, 0x55, 0xfe, 0x9c, 0x46, 0xdd, + 0xe7, 0x6f, 0xdf, 0xcf, 0xe2, 0xac, 0x8c, 0x4f, 0x4f, 0x40, 0xd9, 0xda, + 0x3d, 0xbf, 0xed, 0x44, 0xde, 0x7d, 0x2d, 0xb2, 0x3d, 0x4e, 0x3d, 0x3f, + 0xfc, 0xc9, 0x25, 0x32, 0xaf, 0x28, 0xe4, 0x59, 0x63, 0x59, 0x49, 0x6f, + 0xa6, 0xed, 0xb2, 0xe3, 0xf4, 0xb4, 0xd4, 0x80, 0x9d, 0xd6, 0x5f, 0x5e, + 0xd3, 0x45, 0x02, 0xdd, 0xa4, 0x6e, 0x6b, 0x4e, 0xa0, 0x1e, 0xf0, 0x16, + 0x4b, 0xbe, 0xb0, 0x66, 0xe4, 0x90, 0x70, 0x7a, 0x79, 0x1b, 0x4e, 0xf0, + 0xeb, 0x9c, 0x06, 0xb1, 0x13, 0xb5, 0x83, 0xf8, 0xa5, 0x8f, 0x5f, 0xd6, + 0x0c, 0xf6, 0x9b, 0xdd, 0x7b, 0x31, 0x9c, 0x49, 0x63, 0xcd, 0x2c, 0x01, + 0xda, 0x1d, 0xb1, 0xbd, 0xd2, 0x52, 0x53, 0xbb, 0x59, 0x7d, 0xfb, 0x88, + 0x2d, 0x6e, 0xcd, 0x5c, 0xc2, 0x08, 0x81, 0xe6, 0x5c, 0x02, 0xcf, 0xc8, + 0xeb, 0x38, 0xf8, 0xb6, 0x1a, 0xef, 0xba, 0xa0, 0x78, 0x86, 0xd8, 0x1d, + 0x1f, 0xd9, 0x63, 0x49, 0x41, 0x1f, 0x56, 0x9a, 0xe6, 0x91, 0x95, 0x75, + 0xb7, 0x97, 0x4c, 0x87, 0xbc, 0x90, 0x4f, 0xc2, 0x61, 0x5d, 0xc5, 0xe8, + 0xb8, 0x14, 0x97, 0x31, 0xb5, 0xb3, 0x73, 0x43, 0x5d, 0x00, 0x78, 0xa4, + 0xa6, 0x87, 0xed, 0xcb, 0x6e, 0x3b, 0x31, 0xb1, 0x5f, 0x90, 0x0f, 0x0e, + 0xda, 0xea, 0xda, 0x7e, 0x6e, 0x20, 0xfe, 0x0a, 0x75, 0x64, 0x75, 0x9b, + 0x01, 0x65, 0x58, 0x94, 0x63, 0x88, 0xfc, 0xf0, 0x6d, 0x3a, 0xf3, 0xe0, + 0x16, 0xb5, 0x0d, 0x73, 0x32, 0xdf, 0x4d, 0x75, 0x45, 0x60, 0x4c, 0xe9, + 0xf9, 0xb1, 0x1f, 0x7a, 0xb4, 0xe6, 0x0f, 0x56, 0x22, 0x01, 0x1c, 0x00, + 0x92, 0x9e, 0x4a, 0xae, 0x93, 0x9b, 0x6d, 0x8e, 0x76, 0x5e, 0x5b, 0x9a, + 0x0b, 0x9c, 0xd2, 0x2a, 0x02, 0xb1, 0xa1, 0xfe, 0x4e, 0xaa, 0xf5, 0x3f, + 0x56, 0x70, 0x18, 0xe1, 0x63, 0xc1, 0xb9, 0xc3, 0x42, 0xe7, 0x92, 0xe3, + 0xff, 0x00, 0x49, 0x6a, 0x9a, 0x59, 0xbe, 0xc9, 0x89, 0x96, 0xbb, 0x4f, + 0x31, 0x1f, 0xc1, 0x58, 0x93, 0x2c, 0xfd, 0xd7, 0x24, 0xa6, 0x9b, 0xfa, + 0x45, 0x02, 0x80, 0xca, 0x5a, 0xd6, 0x19, 0x1a, 0xc0, 0x88, 0x57, 0x31, + 0xb1, 0x6b, 0xae, 0xad, 0x90, 0x34, 0x44, 0xd2, 0x03, 0x4f, 0x0e, 0x91, + 0x1e, 0x3d, 0xd4, 0x9a, 0x47, 0xbb, 0xc9, 0x25, 0x22, 0xcb, 0xa6, 0xbb, + 0xf1, 0x4d, 0x4e, 0x64, 0xcb, 0x0b, 0x74, 0xd0, 0xfb, 0x9a, 0x42, 0xf3, + 0x76, 0xfd, 0x4f, 0xea, 0x6e, 0x25, 0xa1, 0xf5, 0xcf, 0x1f, 0x9d, 0xff, + 0x00, 0x91, 0x5e, 0x98, 0xf6, 0xee, 0x63, 0x48, 0x31, 0x23, 0x5e, 0xdc, + 0x2c, 0xd7, 0x3d, 0x94, 0xb9, 0xcc, 0x8f, 0x73, 0x49, 0xf7, 0xed, 0x9d, + 0xc4, 0x7c, 0xd2, 0x53, 0xc7, 0x33, 0xea, 0x17, 0x53, 0x7b, 0x67, 0xd7, + 0xa4, 0x1f, 0xed, 0xff, 0x00, 0xe4, 0x54, 0xdb, 0xf5, 0x03, 0xa8, 0x6a, + 0x1f, 0x91, 0x4e, 0xef, 0x01, 0xbc, 0xff, 0x00, 0xdf, 0x17, 0x6d, 0x4e, + 0x51, 0xf4, 0x45, 0x65, 0xbb, 0xda, 0x79, 0xdc, 0xdf, 0xf6, 0xa2, 0xb6, + 0xeb, 0xb7, 0x7e, 0xaf, 0x58, 0x6b, 0x3f, 0x3b, 0xb0, 0xfe, 0x25, 0x25, + 0x3c, 0x50, 0xff, 0x00, 0x17, 0x97, 0xec, 0xdc, 0xec, 0xe6, 0x03, 0xe0, + 0x2b, 0x77, 0xf1, 0x21, 0x59, 0xc0, 0xfa, 0x95, 0x8b, 0x87, 0x79, 0xb7, + 0x36, 0xe3, 0x95, 0xe9, 0x80, 0xe6, 0xd6, 0xd6, 0xed, 0x6c, 0xf8, 0xba, + 0x67, 0x70, 0x5d, 0xb5, 0x62, 0xd2, 0xd1, 0x61, 0xd4, 0x90, 0x0c, 0x10, + 0xde, 0xfd, 0xa5, 0x49, 0xf4, 0x0b, 0x5b, 0xb1, 0xec, 0x04, 0x1d, 0x67, + 0x49, 0x06, 0x64, 0x41, 0x8e, 0xc9, 0x29, 0xc7, 0x35, 0xe2, 0x37, 0x0e, + 0xdb, 0x69, 0xfc, 0xc2, 0xe6, 0x3b, 0xbb, 0x43, 0x99, 0xe3, 0x0b, 0x2a, + 0x8b, 0x3a, 0xae, 0x6b, 0x43, 0x2b, 0xc3, 0xbb, 0x11, 0xfc, 0xba, 0xc0, + 0xd6, 0xbd, 0xa4, 0x76, 0xda, 0x49, 0x1c, 0xf9, 0x85, 0xb7, 0xf6, 0x07, + 0xd6, 0xd6, 0x61, 0xb2, 0xa0, 0xda, 0x83, 0x9c, 0xf7, 0x59, 0xba, 0x5e, + 0xfd, 0xc7, 0x71, 0xdc, 0xd8, 0x1a, 0xcf, 0x75, 0xab, 0x53, 0x76, 0x57, + 0xe9, 0xb0, 0x16, 0xed, 0x11, 0xdb, 0x8f, 0x9c, 0xa4, 0xa7, 0x80, 0xbf, + 0xea, 0x46, 0x6e, 0x5d, 0xc7, 0x27, 0x21, 0xe6, 0x92, 0x74, 0x2c, 0x8d, + 0xc7, 0x4e, 0xe4, 0xca, 0xb1, 0x4f, 0xd5, 0xec, 0xde, 0x9a, 0xd2, 0x71, + 0xc7, 0xda, 0x07, 0x2c, 0xc7, 0x07, 0x63, 0x1c, 0xfe, 0xda, 0xbb, 0x85, + 0xdc, 0x12, 0xee, 0xd3, 0xf1, 0xd1, 0x31, 0xae, 0xf2, 0x5a, 0xe1, 0x66, + 0xd6, 0xb4, 0x7d, 0x08, 0x07, 0xef, 0x3c, 0xa4, 0xa7, 0x16, 0x9c, 0x5c, + 0x57, 0x62, 0xb1, 0xd9, 0x82, 0x2c, 0x70, 0x01, 0xf2, 0x4e, 0x8f, 0xee, + 0xdd, 0x0f, 0x8a, 0xab, 0xd4, 0xba, 0x75, 0x39, 0x38, 0x96, 0x61, 0x56, + 0x5f, 0xba, 0xc8, 0x6e, 0xc1, 0x2e, 0x3c, 0xfd, 0x1d, 0x64, 0xfe, 0x6a, + 0xd2, 0xcf, 0xc1, 0xc9, 0xba, 0xab, 0xa9, 0xa9, 0xac, 0x2c, 0xbf, 0x97, + 0x19, 0x96, 0x9f, 0x16, 0xf3, 0xaa, 0x97, 0x4f, 0xe9, 0xd7, 0xd7, 0x6f, + 0xad, 0x92, 0xe6, 0x3a, 0xde, 0x01, 0x0d, 0x88, 0x07, 0x98, 0xf8, 0xa4, + 0xa7, 0x9f, 0xa3, 0xfc, 0x5d, 0x60, 0x91, 0x36, 0x3a, 0xd9, 0x3d, 0xb7, + 0x01, 0x1f, 0xf4, 0x51, 0x07, 0xf8, 0xba, 0xc1, 0x63, 0xa4, 0x5d, 0x70, + 0x1e, 0x4e, 0x69, 0xff, 0x00, 0xbe, 0xae, 0xc7, 0x69, 0x90, 0x49, 0x13, + 0xc6, 0x89, 0x3a, 0xa9, 0xe4, 0x02, 0xee, 0xd2, 0x4c, 0x7d, 0xc9, 0x29, + 0xe4, 0x19, 0xfe, 0x2e, 0xba, 0x5f, 0xd3, 0xb6, 0xcb, 0xde, 0x3c, 0x03, + 0x98, 0x34, 0xff, 0x00, 0x31, 0x1d, 0xdf, 0x51, 0x7a, 0x23, 0x43, 0x05, + 0x78, 0xef, 0xb3, 0x73, 0xb6, 0xb9, 0xde, 0xa1, 0x3b, 0x44, 0x7d, 0x23, + 0xa8, 0xfc, 0x17, 0x54, 0x19, 0x03, 0x58, 0x4d, 0xb4, 0x6e, 0xf0, 0xd2, + 0x74, 0x00, 0x24, 0xa7, 0x9c, 0xff, 0x00, 0x99, 0x1d, 0x0c, 0x37, 0x69, + 0xc7, 0x12, 0x78, 0x3b, 0x9c, 0x7f, 0x8a, 0x93, 0x7e, 0xac, 0x74, 0xec, + 0x27, 0xb6, 0xec, 0x4a, 0x1a, 0xcb, 0x6b, 0x1e, 0xd2, 0x27, 0x77, 0xe2, + 0x56, 0xfb, 0xd8, 0xc7, 0x00, 0x5d, 0xa8, 0x9f, 0x1d, 0x15, 0x3c, 0xab, + 0xea, 0x63, 0x4b, 0x3d, 0x42, 0xd3, 0xc4, 0x1d, 0x7f, 0x2a, 0x4a, 0x68, + 0x61, 0x3e, 0xb7, 0x7d, 0x63, 0xb2, 0xb0, 0x62, 0xc6, 0x63, 0x38, 0xb9, + 0x84, 0x11, 0x01, 0xcf, 0x64, 0x1d, 0x46, 0xab, 0x52, 0xd6, 0xef, 0x21, + 0xad, 0xe0, 0x15, 0x95, 0xd3, 0x59, 0x5b, 0xba, 0xd5, 0xd7, 0xb5, 0xe0, + 0xd8, 0xec, 0x70, 0xc2, 0x3c, 0x03, 0x5d, 0xf7, 0x2d, 0x62, 0x43, 0x09, + 0x27, 0xe8, 0xb6, 0x4f, 0xc5, 0x25, 0x35, 0x3d, 0x1f, 0x4a, 0xc7, 0x46, + 0xa1, 0xdc, 0x85, 0x9d, 0x78, 0xb0, 0x66, 0xd0, 0xe0, 0x74, 0x07, 0x5e, + 0xfe, 0x20, 0x7e, 0x55, 0xa3, 0x66, 0x4d, 0x5b, 0xe5, 0xc1, 0xc3, 0x52, + 0x01, 0x0a, 0x86, 0x45, 0xf4, 0xbb, 0x26, 0x96, 0xb3, 0x52, 0xd7, 0x03, + 0xa7, 0xcd, 0x25, 0x3a, 0xed, 0xf6, 0xd7, 0xb9, 0xe3, 0x5e, 0x1b, 0xf1, + 0x59, 0xdd, 0x4a, 0x3e, 0xc7, 0x61, 0x76, 0x83, 0x42, 0x7e, 0x00, 0xab, + 0xc6, 0xd0, 0x04, 0x1d, 0x5a, 0x74, 0x21, 0x53, 0xea, 0x2f, 0x27, 0x06, + 0xed, 0x90, 0xd2, 0x18, 0x4b, 0x4b, 0x84, 0xb7, 0x4f, 0x14, 0x94, 0xe7, + 0xd2, 0x4d, 0xac, 0xd8, 0x03, 0x4b, 0x4f, 0x04, 0xf7, 0xf9, 0x2b, 0x14, + 0xd7, 0x66, 0xc8, 0x36, 0x18, 0x6f, 0x1a, 0x0f, 0xb9, 0x06, 0x97, 0x41, + 0x15, 0x58, 0xd6, 0xb5, 0xc7, 0x89, 0xf2, 0x1d, 0x91, 0x9d, 0xea, 0x91, + 0xb0, 0x6a, 0x3e, 0xf4, 0x94, 0xd8, 0x78, 0x65, 0x9a, 0x01, 0x23, 0xc5, + 0x37, 0xd8, 0xeb, 0x8f, 0x52, 0x3f, 0xba, 0x10, 0xd8, 0x2e, 0x6b, 0x21, + 0xad, 0x0e, 0x3c, 0x71, 0x1f, 0x04, 0xb7, 0xdd, 0x31, 0xb7, 0x58, 0xe2, + 0x7d, 0xb3, 0xc7, 0x31, 0xfc, 0x12, 0x52, 0xf8, 0xb8, 0xd5, 0x0a, 0x58, + 0x43, 0x40, 0x31, 0x06, 0x11, 0x71, 0x5a, 0xc6, 0x1b, 0xd8, 0x06, 0x81, + 0xdb, 0x80, 0x1f, 0xca, 0x0d, 0x77, 0xe5, 0x4b, 0x11, 0xc0, 0x00, 0x07, + 0x1c, 0x00, 0x8d, 0x56, 0xd6, 0x65, 0x3c, 0x71, 0xb9, 0xad, 0x27, 0xe4, + 0x48, 0xfe, 0x29, 0x29, 0x9b, 0xd8, 0x08, 0x04, 0x0f, 0x9a, 0xae, 0xd6, + 0x96, 0x67, 0x80, 0x62, 0x1f, 0x5c, 0x13, 0xf0, 0x95, 0x69, 0xf1, 0xb4, + 0x96, 0xf1, 0x2a, 0xb6, 0xbe, 0xb3, 0xcb, 0xc4, 0x6c, 0x2d, 0x70, 0x3f, + 0xc9, 0x94, 0x94, 0x9d, 0xa3, 0x6e, 0x4d, 0x4f, 0x6f, 0x0e, 0x6b, 0x98, + 0xef, 0x3d, 0x37, 0x0f, 0xc8, 0x88, 0xf6, 0xb4, 0x58, 0xde, 0x75, 0xe4, + 0x0e, 0x3e, 0x65, 0x31, 0x21, 0xaf, 0x6c, 0xe9, 0xaf, 0xc4, 0x92, 0x9a, + 0xc7, 0x48, 0xf2, 0x1c, 0x1e, 0xd2, 0x92, 0x9a, 0xf7, 0x80, 0xcb, 0x49, + 0x1d, 0xeb, 0x22, 0x3c, 0xda, 0x67, 0xf2, 0x39, 0x26, 0x39, 0xc7, 0x18, + 0xc8, 0xf7, 0xb0, 0x98, 0x1e, 0x23, 0x90, 0x14, 0x72, 0x77, 0x5c, 0x59, + 0xb4, 0x1f, 0xa5, 0x1b, 0x8e, 0x92, 0x1c, 0xd3, 0x29, 0x3b, 0x2b, 0x0f, + 0x1d, 0x8e, 0x75, 0xd7, 0x31, 0x84, 0x01, 0x23, 0x70, 0x9d, 0x3c, 0x86, + 0xa9, 0x29, 0x77, 0x5b, 0x21, 0x84, 0x08, 0x83, 0xdb, 0xb2, 0x23, 0xe5, + 0xcf, 0x3e, 0x6b, 0x16, 0xef, 0xac, 0x5d, 0x3e, 0xb9, 0x2c, 0xad, 0xf7, + 0x3b, 0xf9, 0x20, 0x06, 0xcf, 0xc5, 0xdf, 0xdc, 0xab, 0xd9, 0xf5, 0x9b, + 0x32, 0xd0, 0xd1, 0x4e, 0x3b, 0x6a, 0x92, 0x40, 0xdc, 0x4b, 0x9d, 0xc7, + 0x7e, 0x02, 0x4a, 0x7a, 0x6b, 0x2b, 0x77, 0xd9, 0x25, 0xba, 0x90, 0x78, + 0x59, 0xee, 0x0c, 0x17, 0x45, 0xbf, 0x4b, 0x92, 0x3e, 0x2b, 0x27, 0xed, + 0xfd, 0x4a, 0xff, 0x00, 0xa7, 0x73, 0xa0, 0x8f, 0xa0, 0xdf, 0x68, 0xfb, + 0x9a, 0x8f, 0x53, 0x2e, 0x7c, 0x12, 0x40, 0x27, 0xf3, 0xf9, 0x49, 0x4e, + 0xdd, 0x2d, 0xa1, 0xa7, 0x5a, 0xc7, 0x8c, 0x98, 0x85, 0x69, 0xb7, 0x33, + 0x69, 0x68, 0x01, 0xa0, 0x68, 0x61, 0x63, 0x56, 0xc7, 0x96, 0x06, 0x92, + 0x60, 0x69, 0xa9, 0x3a, 0xfc, 0xd1, 0x98, 0x3f, 0x95, 0xa7, 0x70, 0x4c, + 0xca, 0x4a, 0x75, 0x85, 0xb4, 0xb4, 0x41, 0x30, 0x04, 0x6a, 0x98, 0xe6, + 0x63, 0xb1, 0xa0, 0xb9, 0xf0, 0x0e, 0x80, 0x9f, 0xe0, 0xb2, 0xad, 0xb7, + 0xd4, 0xdc, 0x1c, 0xf1, 0x1c, 0x43, 0x4c, 0x1f, 0x15, 0x54, 0x59, 0x50, + 0x6f, 0xa3, 0xb5, 0xc6, 0xb9, 0x97, 0x6a, 0xee, 0xda, 0xea, 0x79, 0x49, + 0x4f, 0x40, 0xcb, 0x9b, 0x63, 0x4b, 0x98, 0x0c, 0xb2, 0x34, 0x3a, 0x4c, + 0xf0, 0xab, 0xdb, 0x96, 0xea, 0x5e, 0x03, 0xda, 0x5c, 0x48, 0x92, 0x47, + 0xe6, 0x8e, 0xd2, 0x02, 0xad, 0x80, 0x72, 0xed, 0x7b, 0xb3, 0x73, 0x88, + 0xad, 0x8e, 0x66, 0xec, 0x7c, 0x76, 0xe8, 0x2b, 0x68, 0xe5, 0xee, 0x2e, + 0xe5, 0xdf, 0xc1, 0x64, 0xe2, 0xf5, 0x86, 0xe6, 0xe6, 0x65, 0x58, 0xea, + 0xdc, 0x2a, 0x70, 0x35, 0xd4, 0xe3, 0x2d, 0xf6, 0x8d, 0x03, 0x80, 0xef, + 0x3c, 0xca, 0x4a, 0x7a, 0x2f, 0x53, 0x29, 0xe2, 0x6b, 0xa8, 0x90, 0x75, + 0x04, 0xe8, 0x0a, 0xaf, 0x97, 0xd4, 0xdf, 0x87, 0xb4, 0x64, 0x34, 0x30, + 0xbc, 0xfb, 0x44, 0xce, 0xe0, 0x39, 0x54, 0x87, 0x54, 0xcb, 0x65, 0x61, + 0x8d, 0xc8, 0x2f, 0x70, 0x81, 0xb9, 0xc0, 0x4e, 0x88, 0x5b, 0xfd, 0x5b, + 0x0d, 0x97, 0x3f, 0xd7, 0xb2, 0x20, 0x6f, 0x3e, 0xd0, 0x3c, 0x42, 0x4a, + 0x6c, 0x0f, 0xac, 0x55, 0xbb, 0x46, 0x56, 0xe2, 0xe2, 0x76, 0x80, 0x06, + 0x9f, 0x15, 0x61, 0xdd, 0x42, 0xd7, 0x7d, 0x16, 0xfc, 0xf5, 0x1f, 0x82, + 0xcb, 0xb2, 0xb0, 0xe7, 0xef, 0xd8, 0xdf, 0xb8, 0x91, 0x3e, 0x30, 0x84, + 0xea, 0xb7, 0x12, 0xf2, 0xd7, 0x6a, 0x44, 0x00, 0x48, 0x1f, 0x95, 0x25, + 0x3b, 0x3f, 0x6d, 0xbb, 0x46, 0x17, 0xcb, 0xb9, 0xe2, 0x10, 0xdf, 0xd4, + 0x6f, 0x60, 0x71, 0x25, 0xda, 0x71, 0xa0, 0x83, 0xf0, 0xe5, 0x67, 0x07, + 0x38, 0x92, 0x1a, 0x35, 0x10, 0x35, 0xe4, 0x26, 0x3e, 0xab, 0xe1, 0x91, + 0x60, 0x11, 0xa1, 0x02, 0x07, 0xde, 0x12, 0x53, 0xa9, 0x57, 0x50, 0xb6, + 0xff, 0x00, 0x60, 0xb7, 0xd3, 0x74, 0x7b, 0x77, 0x0e, 0x7f, 0x22, 0x9b, + 0xac, 0xcd, 0x0e, 0x1b, 0x1e, 0xd2, 0x3b, 0xcc, 0x92, 0x7c, 0xbc, 0x96, + 0x25, 0x9f, 0x68, 0x63, 0xc3, 0x8e, 0xe7, 0x82, 0x21, 0xcd, 0x76, 0xba, + 0x03, 0x20, 0x85, 0xb7, 0x8b, 0x93, 0x89, 0x95, 0x50, 0x6c, 0x11, 0x63, + 0x46, 0xaf, 0x23, 0xd8, 0x48, 0xf3, 0xf1, 0xf2, 0x49, 0x4c, 0x5f, 0x66, + 0x48, 0xf7, 0x10, 0xf2, 0x1b, 0xcb, 0x5a, 0x77, 0x6a, 0xab, 0x59, 0x6d, + 0x84, 0x3c, 0x57, 0x5e, 0xf7, 0x44, 0xb4, 0x1d, 0x4b, 0x9d, 0xfb, 0xb3, + 0x01, 0x57, 0xc8, 0xcf, 0x1e, 0xab, 0xdb, 0x5c, 0x16, 0x83, 0xb5, 0x91, + 0xdc, 0xf7, 0x21, 0x1f, 0x0d, 0xf6, 0xb4, 0x32, 0xc2, 0x60, 0xb7, 0x52, + 0xd8, 0x96, 0x8f, 0x82, 0x4a, 0x4b, 0x85, 0x83, 0x7e, 0x3d, 0x9e, 0xb3, + 0x83, 0xcd, 0xb6, 0x30, 0x87, 0xb7, 0x64, 0x06, 0x99, 0x1a, 0x04, 0x6b, + 0x5b, 0x9a, 0xe6, 0x8f, 0x5c, 0xe8, 0x39, 0x80, 0x40, 0x3e, 0x08, 0xcd, + 0xea, 0x4f, 0xb4, 0x7e, 0x88, 0x83, 0xac, 0x12, 0xd0, 0x77, 0x0f, 0x93, + 0x93, 0xbb, 0x25, 0xd6, 0x1d, 0xb6, 0x12, 0x0f, 0x3b, 0x52, 0x53, 0x47, + 0xde, 0xc0, 0x09, 0x3b, 0x48, 0xd0, 0xba, 0x24, 0x9f, 0x35, 0x46, 0xdc, + 0x72, 0xfb, 0x5b, 0x73, 0x5e, 0x18, 0x58, 0x66, 0x47, 0xe7, 0x47, 0x1b, + 0x87, 0x2b, 0x6d, 0xee, 0x86, 0xea, 0xcd, 0xd3, 0xe5, 0xd9, 0x03, 0xd3, + 0x64, 0xb8, 0x86, 0xf3, 0xf7, 0x24, 0xa7, 0x3c, 0x5f, 0xd5, 0x6b, 0x20, + 0x3d, 0xf8, 0xdb, 0x27, 0xdc, 0x5c, 0x2c, 0x2f, 0x0d, 0xec, 0x61, 0xa7, + 0xc5, 0x47, 0x2f, 0x2f, 0x2d, 0xb5, 0x01, 0xea, 0xd4, 0x77, 0xb0, 0x91, + 0x65, 0x4d, 0x31, 0x3f, 0xdb, 0x26, 0x15, 0xab, 0xa8, 0x33, 0x0d, 0xa8, + 0x9e, 0xe3, 0x5e, 0x7e, 0xe4, 0x1a, 0xba, 0x68, 0xf4, 0x6d, 0xad, 0xb5, + 0x8a, 0x85, 0xa6, 0x1f, 0x20, 0x78, 0x73, 0x25, 0x25, 0x2b, 0xa7, 0x3f, + 0xed, 0x41, 0xa3, 0x3e, 0xc6, 0x9b, 0x99, 0xf4, 0x08, 0x10, 0x60, 0xf7, + 0x25, 0x68, 0x1c, 0x50, 0xc2, 0x22, 0xc6, 0xbf, 0x4e, 0x38, 0x76, 0x9e, + 0x0a, 0x95, 0x3d, 0x39, 0xa1, 0xcd, 0xd7, 0x7b, 0xc6, 0x8d, 0x8e, 0x21, + 0x5c, 0x60, 0xb0, 0xbc, 0xb5, 0xcd, 0x10, 0xdd, 0x0f, 0xc9, 0x25, 0x30, + 0x03, 0x71, 0xf6, 0x83, 0xf3, 0xe5, 0x3f, 0xa6, 0xee, 0x11, 0x00, 0x69, + 0x70, 0x03, 0xbf, 0x9a, 0x9e, 0xc3, 0xbb, 0x6e, 0xbf, 0x72, 0x4a, 0x69, + 0xe0, 0xcc, 0xc1, 0x10, 0xe9, 0xd2, 0x15, 0xbb, 0xd8, 0x5b, 0x75, 0x2f, + 0x07, 0x47, 0x07, 0xb4, 0x8f, 0x90, 0x77, 0xfd, 0xf5, 0x73, 0x2c, 0xfa, + 0xce, 0x6b, 0x91, 0x4e, 0x21, 0x7c, 0x70, 0x5c, 0x76, 0x8f, 0xfa, 0x32, + 0x9d, 0xfd, 0x6b, 0xaf, 0xe7, 0x53, 0x15, 0xb1, 0x95, 0x10, 0xe0, 0xe6, + 0x16, 0x08, 0x0d, 0xf8, 0xee, 0x99, 0xd0, 0xa4, 0xa7, 0xa7, 0x68, 0x20, + 0xed, 0x71, 0xd0, 0x73, 0xaf, 0x0a, 0xa6, 0x4f, 0x54, 0xe9, 0x98, 0xb3, + 0xeb, 0xe4, 0x31, 0xa4, 0x82, 0xd2, 0xd6, 0x9d, 0xee, 0xed, 0xd9, 0xb2, + 0xb9, 0xb7, 0x74, 0xee, 0xb1, 0x99, 0xa6, 0x55, 0xee, 0x73, 0x7b, 0x82, + 0xff, 0x00, 0xe0, 0x34, 0x45, 0xab, 0xea, 0xd9, 0xac, 0xc9, 0x20, 0xc7, + 0x12, 0x65, 0x25, 0x37, 0xef, 0xfa, 0xd7, 0x88, 0x21, 0xb8, 0xf4, 0x59, + 0x7b, 0xfb, 0x17, 0x43, 0x41, 0x20, 0x6b, 0xe2, 0x55, 0x1b, 0xfe, 0xb0, + 0x75, 0x9c, 0x98, 0x65, 0x35, 0xd7, 0x43, 0x49, 0xec, 0x0b, 0x88, 0xf9, + 0xbb, 0x45, 0xaa, 0xde, 0x95, 0x89, 0x5b, 0x18, 0x68, 0xa7, 0x6d, 0xa3, + 0xe9, 0x3c, 0x9d, 0xda, 0x7c, 0x0a, 0xb7, 0x45, 0x34, 0xd6, 0xcd, 0x29, + 0x00, 0x47, 0x31, 0xee, 0x25, 0x25, 0x3c, 0xef, 0xd9, 0x7a, 0xb6, 0x6b, + 0x47, 0xda, 0x2d, 0x79, 0x68, 0x23, 0xdb, 0x24, 0x0d, 0x3c, 0x95, 0x8a, + 0x7e, 0xaf, 0x93, 0x25, 0xd0, 0x1c, 0x79, 0x5b, 0x4e, 0x75, 0x8d, 0x3e, + 0xda, 0x9c, 0xed, 0xda, 0x93, 0x20, 0x00, 0x9c, 0x65, 0x0d, 0xdb, 0x5d, + 0x59, 0x1d, 0xa7, 0xb2, 0x4a, 0x73, 0x6b, 0xfa, 0xbd, 0x8c, 0xc3, 0xa9, + 0x26, 0x3c, 0x11, 0xc7, 0x4f, 0xc1, 0xa0, 0x00, 0xf8, 0x1f, 0xba, 0x5d, + 0x1c, 0xab, 0xce, 0x20, 0x91, 0x3e, 0xc9, 0x30, 0x1a, 0x4e, 0xa5, 0x46, + 0xdc, 0x3a, 0x6e, 0x11, 0x60, 0x79, 0x73, 0x4c, 0x82, 0x1c, 0x5b, 0xa7, + 0x86, 0x89, 0x29, 0x1b, 0x31, 0xe9, 0xac, 0x97, 0xb5, 0x8c, 0x90, 0x23, + 0x51, 0xb8, 0x6b, 0xde, 0x13, 0x96, 0x8a, 0xd8, 0x3d, 0xb3, 0xe1, 0xa6, + 0x91, 0xc6, 0x88, 0x6e, 0x63, 0x7d, 0x60, 0xca, 0xe9, 0x2f, 0x03, 0x5d, + 0xc5, 0xce, 0x3a, 0x8d, 0x20, 0xea, 0xae, 0x07, 0x52, 0xd6, 0x82, 0xe8, + 0x61, 0x1d, 0xdc, 0x07, 0xf1, 0x49, 0x4d, 0x37, 0x39, 0xd3, 0xc4, 0x79, + 0x05, 0x07, 0x9f, 0x61, 0xec, 0x46, 0xa4, 0x8f, 0xf6, 0x2b, 0x8e, 0x75, + 0x64, 0x4b, 0x40, 0xf3, 0x2a, 0xb5, 0xce, 0x00, 0x18, 0x70, 0x83, 0xdb, + 0x5e, 0x12, 0x53, 0x49, 0xc6, 0x63, 0x68, 0x74, 0x78, 0xc6, 0x8a, 0xdf, + 0x4d, 0xc1, 0x36, 0x97, 0x5d, 0x6f, 0xb7, 0x1d, 0xba, 0x46, 0xb0, 0xf7, + 0x1e, 0xde, 0x61, 0x35, 0x58, 0xa6, 0xf7, 0x8a, 0xd8, 0xef, 0x67, 0x2e, + 0x76, 0xa3, 0x6b, 0x67, 0x58, 0x56, 0x3a, 0xa5, 0xff, 0x00, 0x67, 0xc7, + 0xf4, 0x31, 0x7d, 0x96, 0x3c, 0x7a, 0x74, 0xc7, 0xe6, 0xe9, 0xee, 0x7f, + 0xf6, 0x47, 0xe2, 0x92, 0x9a, 0x1d, 0x6b, 0xa8, 0x9c, 0x97, 0xbf, 0xa7, + 0xe2, 0x49, 0x69, 0x86, 0xe4, 0x5a, 0xde, 0xc0, 0x72, 0xc0, 0x7c, 0x4a, + 0x8b, 0x31, 0x58, 0xd6, 0x86, 0xd2, 0x36, 0xf6, 0x1e, 0x41, 0x3e, 0x0e, + 0x20, 0xc6, 0xa4, 0x56, 0xc1, 0xba, 0x39, 0xee, 0x75, 0xee, 0xad, 0xfb, + 0x58, 0xd9, 0x78, 0xed, 0xc7, 0x82, 0x4a, 0x6a, 0xfa, 0x0e, 0x04, 0x09, + 0xd3, 0xc3, 0xb1, 0xf8, 0x26, 0xba, 0xb7, 0x8d, 0xbb, 0x1a, 0x5e, 0xef, + 0x21, 0x1a, 0x7c, 0xe1, 0x59, 0x2e, 0xa5, 0xce, 0xdc, 0x5b, 0xa7, 0x13, + 0xaf, 0xf7, 0xa9, 0xba, 0xa6, 0x10, 0x4b, 0x1a, 0x66, 0x20, 0x76, 0x84, + 0x94, 0x87, 0x15, 0x96, 0xe9, 0xb4, 0xed, 0x27, 0xb1, 0xef, 0x08, 0xb7, + 0x34, 0xb8, 0xee, 0x3e, 0xd3, 0xfb, 0xa3, 0xba, 0x85, 0x94, 0xe4, 0x12, + 0x06, 0xa1, 0xad, 0xfb, 0xbc, 0x94, 0xc5, 0x76, 0x93, 0xee, 0x70, 0x3e, + 0x5d, 0xd2, 0x52, 0xd5, 0x16, 0x80, 0x37, 0x30, 0xf3, 0xae, 0x9c, 0x2b, + 0x95, 0xd5, 0x5d, 0x84, 0x47, 0x7f, 0x87, 0x75, 0x5e, 0xb7, 0x96, 0x99, + 0x7f, 0xbd, 0xa0, 0xeb, 0x25, 0x58, 0x65, 0xb5, 0x07, 0x02, 0xc6, 0xc4, + 0xf6, 0x3a, 0xa4, 0xa6, 0xc3, 0xf0, 0x2a, 0x2d, 0x05, 0xcc, 0x06, 0x39, + 0x54, 0x8f, 0x48, 0xc6, 0x3b, 0xfd, 0x32, 0xea, 0xc5, 0x9a, 0x3c, 0x30, + 0xc0, 0x20, 0x79, 0x78, 0xab, 0xcc, 0xb2, 0xa2, 0x3d, 0xc4, 0xc9, 0x9d, + 0x3e, 0x08, 0x8d, 0xba, 0xae, 0x7f, 0x04, 0x94, 0xe6, 0xd7, 0xd2, 0x2a, + 0xa6, 0xb0, 0x00, 0xde, 0x46, 0x92, 0xed, 0x49, 0x8f, 0x1e, 0x25, 0x11, + 0xd8, 0x9b, 0x99, 0xe9, 0xb4, 0x9a, 0xc8, 0xee, 0xdd, 0x25, 0x68, 0xfa, + 0x8d, 0x23, 0xda, 0x24, 0x79, 0x26, 0x96, 0x92, 0x41, 0x07, 0xe7, 0xc2, + 0x4a, 0x69, 0x83, 0xd4, 0xab, 0x70, 0x0d, 0xae, 0x81, 0x58, 0xfa, 0x5b, + 0x64, 0x38, 0xfe, 0x10, 0xaa, 0x59, 0x5f, 0x55, 0x7e, 0x5b, 0xad, 0x7b, + 0x3f, 0x43, 0x00, 0x35, 0x80, 0xb4, 0x93, 0xe3, 0x2e, 0x9d, 0x16, 0xc6, + 0xd0, 0x75, 0x1a, 0xfc, 0x4a, 0x60, 0x36, 0xc9, 0xf6, 0xfc, 0x67, 0x54, + 0x94, 0xd3, 0x05, 0xbf, 0x44, 0x9d, 0x9a, 0x4e, 0xa1, 0x48, 0x31, 0x84, + 0x19, 0x71, 0x1f, 0x8c, 0xab, 0x0f, 0x2c, 0x8d, 0x48, 0xd5, 0x09, 0xd4, + 0xd6, 0xe1, 0x31, 0xaf, 0xc6, 0x12, 0x52, 0x31, 0x55, 0x1c, 0x8d, 0x4f, + 0xdc, 0x9c, 0xd2, 0x1e, 0x0b, 0x35, 0x83, 0xa4, 0xcc, 0x7d, 0xc8, 0x82, + 0x96, 0xb4, 0xee, 0x9d, 0xa7, 0xc8, 0xff, 0x00, 0x04, 0xed, 0x73, 0x80, + 0x3b, 0x4c, 0x83, 0xe2, 0x92, 0x9a, 0xe5, 0x8d, 0xaa, 0x24, 0x6f, 0x0d, + 0xf3, 0xd5, 0x04, 0xe5, 0x52, 0xc9, 0x0c, 0x80, 0x20, 0x9d, 0x06, 0x8a, + 0xe3, 0xdd, 0x11, 0xb9, 0x9b, 0xbc, 0x00, 0xee, 0x98, 0x54, 0x2c, 0x6c, + 0xfd, 0x98, 0x49, 0xec, 0x40, 0x49, 0x4d, 0x7a, 0x43, 0xaf, 0x21, 0xd1, + 0xa7, 0x68, 0x0a, 0xdf, 0xa3, 0x6f, 0x13, 0xa4, 0x73, 0x21, 0x0c, 0x8b, + 0x18, 0x36, 0xb6, 0xb0, 0xc1, 0xc4, 0x34, 0xe9, 0x09, 0xb7, 0x98, 0x8d, + 0xe2, 0x38, 0xf9, 0xf2, 0x92, 0x9e, 0x73, 0x1f, 0xa6, 0x30, 0x3b, 0xd8, + 0xc1, 0xa7, 0x0a, 0xdd, 0x74, 0x06, 0x8d, 0xb2, 0x39, 0xe0, 0x05, 0x67, + 0x78, 0x06, 0x5a, 0xde, 0x04, 0x18, 0x50, 0x6b, 0x7b, 0x16, 0x90, 0x35, + 0xf7, 0x46, 0xb3, 0xe2, 0x92, 0x96, 0x78, 0xa8, 0x08, 0xb1, 0xdb, 0x47, + 0x04, 0x4c, 0x25, 0x5e, 0x2d, 0x4f, 0x3f, 0xa3, 0x12, 0x5a, 0x78, 0x91, + 0xf8, 0x4f, 0x28, 0xac, 0xa9, 0xcf, 0x04, 0x41, 0x90, 0x75, 0x24, 0x73, + 0x1e, 0x29, 0xfd, 0x07, 0x37, 0xe9, 0xb3, 0x8e, 0x25, 0x25, 0x21, 0x35, + 0xd4, 0x1c, 0xed, 0xc4, 0xb4, 0xcf, 0x8c, 0x7d, 0xc9, 0x36, 0xda, 0xaa, + 0x30, 0xcb, 0x1c, 0x27, 0x80, 0xe7, 0x4a, 0x9b, 0x70, 0xea, 0xb0, 0xc9, + 0x71, 0x68, 0x3c, 0xb6, 0x25, 0x3b, 0xba, 0x7d, 0x4c, 0x10, 0xd3, 0xed, + 0xe4, 0x69, 0x22, 0x7e, 0x25, 0x25, 0x27, 0x65, 0x8e, 0x7c, 0x06, 0xb8, + 0x3b, 0x49, 0x56, 0x1b, 0x8b, 0xea, 0x34, 0x8b, 0x1b, 0xc6, 0xb3, 0xc1, + 0xfb, 0xd5, 0x2a, 0xb1, 0xdb, 0xac, 0x3d, 0xa6, 0xcf, 0x2d, 0x63, 0xf8, + 0x2b, 0x2c, 0xaa, 0x97, 0x34, 0x6e, 0x7b, 0x9e, 0x46, 0x9e, 0x01, 0x25, + 0x24, 0xb3, 0x1f, 0x1d, 0xe2, 0x1c, 0xed, 0x07, 0x04, 0x90, 0x9c, 0x63, + 0x7a, 0x6d, 0xfd, 0x13, 0xe5, 0xc0, 0xc8, 0xdd, 0xee, 0x31, 0xe0, 0xa0, + 0xfc, 0x7a, 0x8b, 0x9b, 0xfa, 0x39, 0x03, 0x88, 0x31, 0x00, 0x25, 0xe8, + 0x56, 0x0e, 0xd6, 0x12, 0x27, 0xe3, 0x29, 0x29, 0x57, 0x7d, 0xa8, 0x58, + 0x1c, 0x2b, 0x80, 0x79, 0xdb, 0x07, 0x8d, 0x50, 0x1d, 0xea, 0xdc, 0x76, + 0x96, 0x73, 0xc6, 0x93, 0x1f, 0x72, 0x37, 0xa2, 0xc6, 0xb8, 0x97, 0x3c, + 0xc7, 0x24, 0xcf, 0x64, 0xee, 0xbb, 0x1e, 0xb0, 0x25, 0xd0, 0xd1, 0xdc, + 0xcc, 0xcf, 0xc9, 0x25, 0x20, 0xf4, 0x6e, 0x00, 0x37, 0x6b, 0x77, 0x1f, + 0x13, 0x1c, 0x2a, 0xf7, 0xd7, 0x63, 0x80, 0x60, 0x6b, 0x46, 0xed, 0x04, + 0x19, 0x24, 0xf8, 0x2b, 0x37, 0x5e, 0x36, 0x91, 0x5f, 0xd2, 0x8f, 0xbb, + 0xe4, 0x9b, 0x1a, 0xab, 0x37, 0x0b, 0x1f, 0xc9, 0xd7, 0x5f, 0xcd, 0xfe, + 0xe4, 0x94, 0xce, 0x8a, 0x9b, 0x83, 0x8a, 0x77, 0x38, 0x6f, 0xe6, 0xd7, + 0x9d, 0x40, 0x8d, 0x7e, 0xe0, 0xb2, 0xa9, 0x6b, 0xf3, 0xb2, 0x5d, 0x96, + 0xe3, 0xec, 0xfa, 0x34, 0xb4, 0xf1, 0xb4, 0x78, 0xfc, 0x79, 0x2a, 0x79, + 0x59, 0x37, 0x75, 0x1b, 0x36, 0x52, 0xd2, 0x71, 0x2a, 0x3f, 0xa5, 0xd4, + 0x03, 0x63, 0x87, 0x00, 0x7f, 0x72, 0xd2, 0xc4, 0xab, 0x6d, 0x25, 0x8e, + 0xfd, 0x1b, 0xc8, 0x90, 0xd3, 0xc2, 0x4a, 0x47, 0x4d, 0x4e, 0x1b, 0x80, + 0x20, 0x39, 0xbc, 0x81, 0xc6, 0xa8, 0x76, 0x7b, 0x5d, 0x0e, 0xf7, 0x93, + 0xc4, 0x4f, 0x2a, 0xcf, 0xae, 0xca, 0xb7, 0x56, 0xdd, 0x1f, 0x31, 0x31, + 0x22, 0x78, 0xe5, 0x02, 0xd6, 0xbc, 0x17, 0x16, 0xec, 0x3b, 0x0e, 0xae, + 0x0e, 0x31, 0xe6, 0x49, 0x29, 0x29, 0x97, 0xd8, 0xae, 0xb7, 0x46, 0x80, + 0x1d, 0xe1, 0x20, 0x7e, 0x45, 0x0b, 0x69, 0x7d, 0x6e, 0x2c, 0x70, 0x82, + 0x34, 0x24, 0x14, 0x6a, 0xa9, 0xca, 0x7b, 0x43, 0xe8, 0x27, 0x5d, 0x77, + 0xce, 0x9f, 0x8a, 0x95, 0xb4, 0x58, 0xc6, 0x88, 0x79, 0xb6, 0xe9, 0x87, + 0xf6, 0x03, 0xe6, 0x52, 0x53, 0x58, 0x38, 0x81, 0x1c, 0xca, 0x95, 0x75, + 0xda, 0xe7, 0x43, 0x19, 0xb9, 0xc3, 0x91, 0x1d, 0xbc, 0xd5, 0x9a, 0xb0, + 0xdb, 0x65, 0x61, 0xd7, 0x91, 0x55, 0x84, 0x99, 0x6c, 0xee, 0x31, 0xf1, + 0x45, 0xb1, 0xee, 0x0d, 0x2c, 0xa9, 0xc0, 0x16, 0xf0, 0x46, 0x87, 0x4e, + 0xfa, 0x24, 0xa7, 0x35, 0xcd, 0x7b, 0x1d, 0xef, 0xaf, 0x6b, 0x89, 0x30, + 0x08, 0x81, 0x1e, 0x1e, 0x09, 0x85, 0x93, 0xf4, 0x4c, 0x47, 0x74, 0x4b, + 0xad, 0xbe, 0xf7, 0x12, 0xfa, 0xe5, 0x95, 0x88, 0xd0, 0x92, 0x3e, 0x26, + 0x55, 0x7d, 0xa3, 0xdd, 0xb5, 0xbe, 0xde, 0xfa, 0xfd, 0xe9, 0x29, 0xb7, + 0x4b, 0xed, 0x80, 0xd1, 0xc1, 0xd0, 0x12, 0x3f, 0x8a, 0x3b, 0x5f, 0x63, + 0x80, 0x10, 0x07, 0x8c, 0xac, 0xfa, 0xaf, 0x7b, 0x5c, 0x03, 0x64, 0x40, + 0xd0, 0x76, 0x28, 0x8e, 0xbc, 0xc1, 0x91, 0xdb, 0x4d, 0x75, 0x1a, 0xff, + 0x00, 0x14, 0x94, 0xe8, 0x32, 0xd2, 0xd7, 0x90, 0x4e, 0x91, 0xcc, 0x42, + 0x63, 0x9a, 0xd6, 0xba, 0x08, 0x20, 0x41, 0x24, 0x82, 0x08, 0xd1, 0x67, + 0xc0, 0x73, 0x76, 0xed, 0x68, 0xdd, 0xfb, 0xa6, 0x08, 0xee, 0x54, 0x8d, + 0x75, 0x44, 0x3c, 0xe9, 0x00, 0x01, 0xdc, 0xa4, 0xa6, 0xe9, 0xea, 0x38, + 0xe5, 0xb2, 0xdf, 0x73, 0xbf, 0x74, 0x03, 0x3f, 0x25, 0x4a, 0xdc, 0xe1, + 0x32, 0xcd, 0x0f, 0x8e, 0xb0, 0x50, 0xec, 0xad, 0x81, 0xc2, 0xca, 0x9c, + 0x7c, 0xc7, 0x84, 0x7c, 0x10, 0xc1, 0x1e, 0xe0, 0xe8, 0x71, 0x71, 0x99, + 0x84, 0x94, 0x91, 0xd9, 0x57, 0xba, 0x4b, 0xdd, 0x15, 0x9e, 0x1c, 0x44, + 0xfe, 0x45, 0x0a, 0xb3, 0x2c, 0x32, 0x2c, 0x1b, 0x5e, 0x09, 0x0d, 0x6b, + 0x4c, 0xc8, 0xf1, 0x40, 0x7b, 0xac, 0x20, 0xcb, 0x60, 0x4c, 0x02, 0x01, + 0x3a, 0xa1, 0x12, 0xf6, 0x3b, 0x6b, 0xe6, 0x40, 0x11, 0xa6, 0xa9, 0x29, + 0xd1, 0xab, 0xa9, 0xd8, 0xd1, 0x04, 0x12, 0x7c, 0x08, 0xd6, 0x51, 0xff, + 0x00, 0x6b, 0x31, 0x9f, 0x4d, 0xa5, 0x93, 0xf2, 0x83, 0xf3, 0x58, 0xce, + 0x2e, 0x1f, 0xa4, 0x24, 0x86, 0x8e, 0x24, 0x4e, 0x9f, 0x25, 0x0f, 0x52, + 0xb3, 0x64, 0x58, 0xdf, 0x66, 0x84, 0x3d, 0x9a, 0xba, 0x7c, 0x08, 0x29, + 0x29, 0xd6, 0x1d, 0x5e, 0xb6, 0x97, 0x6d, 0x7b, 0x9f, 0xaf, 0x04, 0xb4, + 0x8f, 0xbe, 0x11, 0x47, 0x5b, 0x0e, 0xd1, 0x8d, 0x81, 0xdc, 0xc8, 0x3a, + 0xac, 0x33, 0x5b, 0x2c, 0x24, 0xd6, 0x07, 0x26, 0x01, 0xd0, 0x91, 0xf9, + 0x14, 0xfe, 0xcd, 0x63, 0x04, 0x35, 0xa0, 0xbc, 0xc7, 0xb6, 0x74, 0x8f, + 0x92, 0x4a, 0x75, 0xec, 0xea, 0x21, 0xdf, 0x49, 0xe2, 0x3c, 0x82, 0x96, + 0xeb, 0xb6, 0xef, 0xda, 0x76, 0xfc, 0x96, 0x3b, 0x1a, 0xef, 0x53, 0x8d, + 0x47, 0xd2, 0x9d, 0x74, 0x3d, 0xf5, 0x46, 0xf5, 0x3f, 0x47, 0xf4, 0x4f, + 0x87, 0x1d, 0xbc, 0x52, 0x53, 0xac, 0xd2, 0xc3, 0x59, 0x76, 0xc2, 0x09, + 0xe4, 0x70, 0xa4, 0x01, 0x73, 0xa1, 0xb5, 0xb9, 0xc2, 0x27, 0x70, 0xfc, + 0x8b, 0x23, 0x27, 0x37, 0xa9, 0x1b, 0x37, 0x56, 0xf1, 0xb4, 0x0d, 0x18, + 0x59, 0x2e, 0xec, 0x85, 0x85, 0xd4, 0x3a, 0xae, 0x3b, 0x8b, 0x9c, 0x5d, + 0x7f, 0xbb, 0x71, 0x16, 0x8e, 0x07, 0x71, 0x2d, 0x21, 0x25, 0x3d, 0x1b, + 0x2a, 0xb5, 0xf6, 0x34, 0x1f, 0x6b, 0x48, 0x93, 0x00, 0x18, 0xfe, 0x49, + 0xe2, 0x0f, 0xc9, 0x4f, 0x23, 0x16, 0xb1, 0x51, 0x2d, 0xdd, 0xb9, 0xa0, + 0x91, 0x1a, 0xc9, 0xec, 0x16, 0x18, 0xeb, 0xd9, 0x2f, 0xbb, 0x56, 0x0a, + 0xeb, 0x10, 0x44, 0x07, 0x13, 0xee, 0xd3, 0xda, 0x3e, 0x2a, 0xc6, 0x1f, + 0x57, 0xcb, 0x2f, 0x7b, 0x2c, 0xa3, 0xd3, 0x69, 0x74, 0x56, 0xf2, 0x77, + 0x0f, 0xed, 0x0d, 0x0f, 0xfa, 0xf0, 0x92, 0x97, 0xfb, 0x2e, 0x4e, 0xd2, + 0xed, 0xcf, 0x1e, 0x12, 0xed, 0x15, 0x9a, 0xf1, 0x09, 0x07, 0xd7, 0xb0, + 0x9e, 0xc2, 0x4c, 0x0d, 0x3c, 0x02, 0x37, 0xdb, 0x6a, 0xb1, 0x81, 0xa5, + 0xa1, 0xef, 0x93, 0x2d, 0x61, 0x12, 0x3c, 0x34, 0x3a, 0xaa, 0x17, 0xd9, + 0x73, 0x00, 0x26, 0x5a, 0x44, 0xcb, 0x0f, 0xe5, 0x92, 0x92, 0x9b, 0xac, + 0xc4, 0x1b, 0x89, 0x2e, 0xd0, 0x70, 0xd3, 0xa0, 0xe1, 0x14, 0x30, 0xb7, + 0x82, 0x20, 0x76, 0x1f, 0xde, 0xb2, 0x87, 0x50, 0x78, 0x70, 0x61, 0xb4, + 0x49, 0xf9, 0xe9, 0xfd, 0x94, 0x41, 0x9e, 0x1e, 0xc0, 0x44, 0x6e, 0x13, + 0xa9, 0xd3, 0x77, 0xc0, 0x24, 0xa6, 0xf3, 0xa9, 0x83, 0x33, 0xa9, 0x9f, + 0x77, 0x70, 0x3c, 0x02, 0x5f, 0xa1, 0x8d, 0xa2, 0xce, 0x34, 0x89, 0x13, + 0xf1, 0x59, 0xef, 0xcf, 0xad, 0xac, 0x90, 0x7d, 0x57, 0x83, 0xa3, 0x78, + 0x01, 0x05, 0xb9, 0xf6, 0x3d, 0xee, 0x22, 0xa0, 0x46, 0x9b, 0x5f, 0x3c, + 0xf3, 0x29, 0x29, 0xd1, 0x2c, 0x13, 0xb1, 0x84, 0x47, 0x81, 0xd7, 0x54, + 0x9d, 0x8a, 0x5c, 0xc8, 0x73, 0x9b, 0x3c, 0x68, 0x04, 0x47, 0x60, 0x65, + 0x52, 0x66, 0x46, 0x53, 0x9f, 0xb4, 0x96, 0xd6, 0x0c, 0x46, 0xee, 0x14, + 0xdc, 0xe3, 0x53, 0x43, 0xac, 0x25, 0xf6, 0x78, 0x48, 0x80, 0x3b, 0x24, + 0xa4, 0xf6, 0x62, 0x3a, 0xba, 0x1c, 0xec, 0x73, 0x53, 0xf2, 0x74, 0xda, + 0xdb, 0x49, 0x0d, 0x27, 0xc0, 0xed, 0xd5, 0x53, 0x19, 0x3d, 0x55, 0xec, + 0x38, 0xb9, 0x18, 0xa3, 0x1d, 0xef, 0x70, 0x6d, 0x97, 0xd7, 0x60, 0xb1, + 0xbb, 0x0f, 0xd2, 0x23, 0x82, 0x0f, 0xc5, 0x0e, 0xec, 0xbb, 0x6d, 0x92, + 0x5d, 0x01, 0xa7, 0xb3, 0x4f, 0xfd, 0x52, 0x87, 0xae, 0x41, 0xda, 0x5a, + 0xe6, 0x02, 0x26, 0x4c, 0xf7, 0xef, 0x10, 0x92, 0x99, 0x61, 0xe0, 0xb3, + 0x16, 0xa6, 0x40, 0x78, 0xb9, 0xdc, 0xb1, 0xc4, 0x6c, 0x9f, 0x1d, 0x16, + 0x8b, 0x2a, 0x16, 0x3b, 0x7d, 0x8e, 0x2d, 0x0d, 0x9d, 0x0b, 0xa6, 0x0f, + 0x96, 0xab, 0x2c, 0xbf, 0x24, 0x9d, 0x84, 0x8d, 0xa7, 0xe8, 0xb8, 0x6a, + 0xe9, 0xd7, 0xb0, 0xee, 0x8d, 0xb2, 0xe1, 0x50, 0x71, 0x30, 0x18, 0x0e, + 0xd2, 0xe7, 0x00, 0xed, 0x34, 0x74, 0xb4, 0x14, 0x94, 0xdc, 0x76, 0x2b, + 0x0e, 0xd0, 0x5c, 0xd9, 0x3c, 0x41, 0x74, 0x99, 0xef, 0xf8, 0xa1, 0x57, + 0x83, 0x88, 0xc2, 0x6c, 0x65, 0x6e, 0xb2, 0xc2, 0x75, 0xfa, 0x4d, 0x9f, + 0x18, 0x2e, 0x54, 0xf7, 0x65, 0x58, 0xf3, 0x6b, 0x36, 0x86, 0x90, 0x09, + 0x64, 0xea, 0x63, 0xbf, 0xdc, 0xad, 0xb3, 0x37, 0x25, 0xd5, 0x97, 0x34, + 0x1b, 0x47, 0x6d, 0x9a, 0x71, 0xfd, 0x64, 0x94, 0x96, 0xdc, 0xbc, 0xa6, + 0xc3, 0x68, 0x60, 0xad, 0x83, 0x42, 0xe7, 0x12, 0x4e, 0xbe, 0x01, 0xa1, + 0x12, 0x8c, 0xea, 0x6b, 0x60, 0xa9, 0xe0, 0xbc, 0x83, 0x2e, 0x7e, 0xba, + 0xf8, 0xca, 0x6b, 0x2f, 0x73, 0x60, 0xd9, 0x5f, 0xa9, 0x22, 0x75, 0x74, + 0x80, 0x3c, 0xfb, 0x25, 0xf6, 0xba, 0xc7, 0xb5, 0xd4, 0xb5, 0xae, 0x69, + 0x1a, 0x34, 0x8d, 0x3c, 0x52, 0x53, 0x0b, 0xfa, 0xa3, 0x09, 0x73, 0x69, + 0x6b, 0xc4, 0x0f, 0x10, 0xd1, 0xa7, 0xc4, 0x2a, 0x76, 0xe5, 0xba, 0xa8, + 0xb1, 0xef, 0x0c, 0x98, 0xf7, 0x38, 0xed, 0xe7, 0x81, 0xaa, 0xd1, 0x37, + 0x56, 0x41, 0x7f, 0xa0, 0x24, 0xeb, 0x27, 0x92, 0x80, 0x6a, 0xa3, 0x21, + 0xbb, 0x5f, 0x40, 0x7c, 0x90, 0x43, 0x1c, 0x03, 0xb5, 0x1f, 0x14, 0x94, + 0xd2, 0xae, 0xc2, 0xe3, 0xb9, 0x8f, 0x96, 0x1e, 0x76, 0x99, 0x9f, 0x19, + 0x84, 0x46, 0x82, 0xe6, 0xc5, 0x6d, 0x24, 0x93, 0xa3, 0xa2, 0x3c, 0xa1, + 0x5d, 0x35, 0x32, 0x96, 0x83, 0xe9, 0x88, 0x3d, 0xa0, 0x47, 0xe0, 0x93, + 0x2e, 0x69, 0x86, 0x06, 0x10, 0x39, 0x80, 0xd3, 0xa7, 0xde, 0x92, 0x9a, + 0x8d, 0x16, 0x6f, 0x73, 0x5e, 0x38, 0xef, 0x1d, 0xfc, 0x14, 0x85, 0x6f, + 0x30, 0x44, 0xb4, 0x9f, 0x8a, 0xbe, 0x5a, 0x08, 0xf6, 0x30, 0xee, 0xfd, + 0xe3, 0x3c, 0x25, 0xb2, 0xfe, 0x41, 0x0d, 0x6e, 0x9a, 0x6d, 0x3a, 0xa4, + 0xa6, 0x81, 0xa6, 0xdd, 0xc2, 0xc7, 0x00, 0x37, 0x49, 0x9e, 0xff, 0x00, + 0x14, 0xe3, 0x05, 0xae, 0x71, 0x73, 0x77, 0x87, 0x91, 0xa0, 0x0e, 0x24, + 0x4f, 0xc1, 0x6a, 0xb2, 0xb6, 0x90, 0x04, 0x49, 0x1c, 0xf2, 0x06, 0xaa, + 0x0e, 0xf5, 0x1b, 0xa3, 0x2b, 0x86, 0x0e, 0x08, 0x74, 0x04, 0x94, 0xe7, + 0x7d, 0x9b, 0x25, 0xae, 0x90, 0xf2, 0x2b, 0x23, 0xda, 0xd8, 0x93, 0xa7, + 0x9a, 0x1b, 0xf1, 0xed, 0x99, 0x20, 0xcc, 0x48, 0x1c, 0x09, 0x3c, 0xea, + 0xaf, 0xbd, 0xd7, 0x35, 0xda, 0xb2, 0x34, 0xd2, 0x4c, 0xf1, 0xdd, 0x26, + 0xfd, 0xa0, 0xb7, 0x7e, 0x80, 0x44, 0xcc, 0xf0, 0x92, 0x9c, 0xdb, 0x28, + 0xc8, 0x05, 0xae, 0x80, 0x0b, 0x5c, 0x07, 0x8e, 0xee, 0xd0, 0x07, 0x82, + 0x83, 0xf1, 0x6c, 0x02, 0x23, 0xe8, 0xfb, 0xbc, 0x60, 0x2d, 0x66, 0x49, + 0x6f, 0x62, 0x48, 0x99, 0x99, 0xd1, 0x43, 0xd2, 0x63, 0xb7, 0x6e, 0x12, + 0x1a, 0x60, 0x6b, 0x33, 0x3f, 0x34, 0x94, 0xe3, 0x1a, 0x5e, 0x00, 0x04, + 0x17, 0x3a, 0x74, 0x8f, 0x03, 0xd8, 0xa8, 0xd5, 0x8e, 0xf2, 0x76, 0xb8, + 0x0f, 0x71, 0xf1, 0x20, 0x03, 0xe6, 0xb7, 0x03, 0x2a, 0x0f, 0x3b, 0x40, + 0x24, 0x7c, 0x10, 0xcf, 0xa7, 0xb8, 0x16, 0xd4, 0x1c, 0x7b, 0x76, 0x82, + 0x3e, 0x29, 0x29, 0xc6, 0xf4, 0xdb, 0x50, 0x21, 0xcc, 0x24, 0x3a, 0x4f, + 0xb4, 0x11, 0x11, 0xfb, 0xa9, 0xab, 0x65, 0xcd, 0x1b, 0xde, 0x1d, 0x68, + 0x89, 0x04, 0x06, 0xb5, 0xc1, 0xce, 0xe3, 0x4e, 0xeb, 0x61, 0xcf, 0xd8, + 0xd2, 0xe3, 0x56, 0xd8, 0x3d, 0xf5, 0xfc, 0x56, 0x6f, 0x50, 0xcf, 0xb9, + 0x92, 0xc6, 0xb0, 0x81, 0x3f, 0x49, 0xa0, 0x9d, 0xc3, 0xf8, 0x24, 0xa5, + 0xda, 0xc2, 0x1e, 0x4b, 0x9a, 0x5c, 0x62, 0x76, 0x8d, 0x76, 0xf9, 0x68, + 0x8b, 0x1f, 0xa3, 0x9d, 0x76, 0x7e, 0xec, 0x19, 0x8f, 0x05, 0x9d, 0x89, + 0x99, 0x16, 0x0d, 0xcf, 0x75, 0x41, 0xdf, 0x4d, 0xdc, 0x81, 0x2a, 0xe7, + 0xed, 0x37, 0xc4, 0x6e, 0x77, 0xa5, 0x3b, 0x7d, 0x5d, 0x9a, 0xfc, 0x63, + 0x88, 0x49, 0x4f, 0xff, 0xd9 +}; +size_t demo_007_jpg_len = 22901; + +const uint8_t demo_008_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59, + 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00, + 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, + 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00, + 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65, + 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00, + 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f, + 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e, + 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15, + 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16, + 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e, + 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b, + 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00, + 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03, + 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61, + 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23, + 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07, + 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2, + 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17, + 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, + 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, + 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, + 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, + 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22, + 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52, + 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15, + 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26, + 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36, + 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46, + 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5, + 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, + 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7, + 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xe2, 0x49, 0x3e, 0x9b, 0x47, 0x80, 0x43, 0x3e, 0x0a, + 0x6e, 0x8d, 0x8d, 0x89, 0x9d, 0x66, 0x7f, 0x82, 0x8c, 0x6a, 0x92, 0x91, + 0xff, 0x00, 0x84, 0x1f, 0x14, 0x52, 0xe3, 0xb7, 0x68, 0x03, 0x53, 0x24, + 0xf7, 0xf8, 0x28, 0x11, 0xef, 0x68, 0x1e, 0x2a, 0x6d, 0x99, 0xe1, 0x25, + 0x2c, 0x1a, 0x79, 0xee, 0x8e, 0xe6, 0x1b, 0x05, 0x63, 0x70, 0x9e, 0x25, + 0xba, 0x08, 0xed, 0x3e, 0x6a, 0x04, 0x18, 0x24, 0x7c, 0x15, 0x8c, 0x56, + 0xb5, 0x81, 0x8e, 0x91, 0xcc, 0x94, 0x94, 0xd7, 0xb2, 0x8b, 0x2a, 0xef, + 0x29, 0x9a, 0x4b, 0x9b, 0xa9, 0x5a, 0xc1, 0x95, 0x5f, 0xeb, 0x56, 0x61, + 0xae, 0xe4, 0x38, 0x9e, 0x0f, 0x84, 0xac, 0xa8, 0xd4, 0x81, 0xe3, 0x13, + 0xf0, 0x49, 0x4c, 0x1c, 0xd0, 0x5b, 0xe7, 0xd8, 0xa1, 0x84, 0x57, 0x14, + 0x32, 0x06, 0xed, 0x35, 0x49, 0x49, 0x1d, 0xf4, 0x47, 0xc1, 0x0c, 0x04, + 0x47, 0xfd, 0x11, 0xf0, 0x50, 0x09, 0x29, 0x92, 0x44, 0x77, 0x4e, 0x91, + 0x49, 0x4b, 0xb3, 0x47, 0x26, 0x3c, 0xa7, 0x67, 0xd2, 0x4c, 0xed, 0x1c, + 0x92, 0x94, 0xe1, 0xec, 0x1f, 0x15, 0x16, 0xa9, 0x3b, 0x84, 0x98, 0x92, + 0x99, 0x3f, 0xb0, 0x42, 0xb0, 0x41, 0x84, 0x57, 0x72, 0x86, 0xfe, 0x52, + 0x52, 0x36, 0x7d, 0x2f, 0x92, 0x3b, 0x50, 0x59, 0xf4, 0x91, 0x98, 0x92, + 0x91, 0x34, 0x27, 0x6a, 0x43, 0xba, 0x60, 0x35, 0x84, 0x94, 0xa6, 0x85, + 0x18, 0xf7, 0x1f, 0x81, 0x45, 0x68, 0x51, 0xdb, 0xef, 0xf9, 0x14, 0x94, + 0x8b, 0xc1, 0x19, 0xa3, 0xd9, 0x28, 0x4d, 0x1a, 0xa9, 0x07, 0x11, 0x00, + 0xe8, 0x92, 0x99, 0x80, 0x08, 0x26, 0x40, 0x81, 0xdf, 0xbf, 0xc1, 0x05, + 0xdc, 0xa3, 0x04, 0x27, 0x24, 0xa5, 0xcc, 0x16, 0xa2, 0x61, 0x09, 0xcb, + 0xa0, 0x77, 0x36, 0x30, 0x78, 0x7e, 0x70, 0x43, 0x8f, 0x64, 0xa2, 0xe0, + 0x8f, 0xd7, 0xb1, 0xbc, 0xed, 0xaf, 0x8e, 0x7e, 0x90, 0x49, 0x4f, 0xa6, + 0xd4, 0xe1, 0x56, 0x03, 0x5a, 0xe7, 0x06, 0x89, 0x32, 0x4f, 0xc5, 0x12, + 0x8c, 0x9a, 0xef, 0x0d, 0xf4, 0x5c, 0xd7, 0xbd, 0x9f, 0x48, 0x34, 0xc9, + 0x85, 0x00, 0x03, 0x29, 0x68, 0xfc, 0xe7, 0x77, 0xec, 0x25, 0x67, 0xe4, + 0x65, 0xd3, 0x8a, 0xf6, 0x5e, 0x03, 0xad, 0x76, 0xe8, 0x1b, 0x00, 0x2e, + 0x33, 0xd8, 0xf1, 0xed, 0x49, 0x4e, 0xd5, 0x0c, 0xb9, 0x96, 0x35, 0xee, + 0x10, 0xd9, 0xee, 0x44, 0x91, 0xc2, 0xe3, 0x7a, 0xb7, 0xd4, 0xfe, 0xb3, + 0x9b, 0xd4, 0xf2, 0xb2, 0xa8, 0x15, 0x9a, 0xed, 0xb1, 0xce, 0x6c, 0xbe, + 0x0c, 0x1f, 0x11, 0x0b, 0xa3, 0xb3, 0xae, 0x3b, 0xd0, 0x65, 0xff, 0x00, + 0x67, 0xba, 0x87, 0x57, 0x0f, 0x7d, 0x7e, 0x91, 0xb0, 0x58, 0xd2, 0x63, + 0xdb, 0x67, 0xd1, 0x07, 0xe2, 0xae, 0xd1, 0xd4, 0x06, 0x61, 0x16, 0x62, + 0xd7, 0x68, 0x0d, 0x8f, 0x54, 0xda, 0xdf, 0x49, 0xc0, 0x1e, 0xed, 0x0e, + 0x1e, 0xef, 0x92, 0x4a, 0x78, 0x23, 0xf5, 0x1b, 0xaf, 0x06, 0x93, 0xb6, + 0xad, 0x35, 0xfe, 0x70, 0x70, 0x87, 0xff, 0x00, 0x34, 0x3a, 0x8c, 0xed, + 0xf5, 0xf1, 0xf7, 0x78, 0x6f, 0x77, 0xe5, 0xd8, 0xbd, 0x3d, 0xcf, 0x0e, + 0xf6, 0xba, 0x0f, 0xc4, 0x03, 0xf8, 0x85, 0x4f, 0xec, 0x75, 0x7a, 0x9b, + 0xa2, 0xbd, 0xb1, 0x1e, 0x9e, 0xc1, 0xb6, 0x37, 0x4c, 0xf8, 0xcf, 0x64, + 0x94, 0xf9, 0x37, 0xe6, 0xc2, 0x77, 0x68, 0x47, 0xc1, 0x47, 0xb2, 0x93, + 0xbb, 0x24, 0xa4, 0x7a, 0xef, 0x1e, 0x1d, 0x91, 0xea, 0x12, 0x47, 0xe4, + 0xf1, 0x41, 0x33, 0xbc, 0x2b, 0x14, 0x34, 0xc8, 0xfc, 0xa9, 0x29, 0x9b, + 0x80, 0x80, 0x22, 0x35, 0x3a, 0xa3, 0x1a, 0x8f, 0xaa, 0x6b, 0xe3, 0x69, + 0xd6, 0x13, 0x96, 0xb4, 0xd6, 0xed, 0xc4, 0x78, 0xb4, 0x78, 0x82, 0xac, + 0x32, 0x1e, 0xda, 0xaf, 0x02, 0x7d, 0x41, 0x0e, 0xd3, 0x87, 0x33, 0x47, + 0x04, 0x94, 0xc7, 0x16, 0xd2, 0x2c, 0x7b, 0x8c, 0x92, 0x09, 0xd4, 0x6a, + 0x74, 0x59, 0xfb, 0x1e, 0x3d, 0xe5, 0xa4, 0x31, 0xda, 0xee, 0xed, 0x32, + 0xb4, 0x08, 0x14, 0x55, 0x6d, 0x8e, 0x1f, 0x48, 0x90, 0xcf, 0x19, 0x2a, + 0x95, 0xac, 0xb2, 0xab, 0x3d, 0x33, 0xd8, 0x35, 0xae, 0x1e, 0x71, 0x29, + 0x29, 0x13, 0x84, 0x0e, 0x10, 0x9c, 0x21, 0xdf, 0x72, 0xb1, 0x60, 0x31, + 0xe6, 0x54, 0x32, 0x04, 0x5c, 0x5b, 0x11, 0xb4, 0x06, 0x98, 0xf2, 0x09, + 0x29, 0x6b, 0x34, 0x00, 0x79, 0x04, 0x30, 0x54, 0xec, 0xfe, 0x0a, 0x1b, + 0x4f, 0x25, 0x25, 0x32, 0x04, 0x24, 0x5c, 0x0a, 0x76, 0xd7, 0xa6, 0xaa, + 0x05, 0xa2, 0x74, 0xe1, 0x25, 0x24, 0x61, 0x12, 0xa2, 0xfe, 0x65, 0x36, + 0xd2, 0x38, 0xd0, 0xa6, 0x3a, 0xf3, 0xca, 0x4a, 0x67, 0x32, 0x02, 0x7a, + 0xf9, 0x51, 0x1c, 0x05, 0x26, 0x03, 0x1b, 0xbb, 0x71, 0x3e, 0x69, 0x29, + 0x44, 0xc9, 0x0a, 0x2e, 0xfa, 0x45, 0x49, 0xa3, 0xdc, 0x14, 0x5d, 0xc9, + 0x49, 0x48, 0xdb, 0xf4, 0x91, 0xd9, 0xc2, 0x0b, 0x46, 0xb3, 0xe0, 0x8f, + 0x5e, 0xa0, 0xa4, 0xa4, 0x61, 0x30, 0xfa, 0x4a, 0x4d, 0xee, 0x98, 0x7f, + 0x38, 0x12, 0x52, 0xed, 0x13, 0xa2, 0x44, 0x0d, 0xe7, 0xe0, 0x54, 0x87, + 0x2a, 0x27, 0xe9, 0x9f, 0x81, 0x49, 0x48, 0x87, 0x21, 0x4c, 0xb7, 0x73, + 0x3c, 0xc7, 0x08, 0x7f, 0x9c, 0x00, 0x46, 0x63, 0x4b, 0x80, 0x6f, 0xe2, + 0x92, 0x91, 0xb7, 0x50, 0xa0, 0xed, 0x75, 0x46, 0x73, 0x36, 0xb8, 0x88, + 0x41, 0x78, 0x8d, 0x12, 0x52, 0xe4, 0xfb, 0x21, 0x58, 0xc0, 0x07, 0xf6, + 0x86, 0x27, 0x6f, 0xd2, 0xd7, 0x1f, 0xe7, 0x05, 0x5b, 0x6c, 0x34, 0x9e, + 0xea, 0xd7, 0x4f, 0x1f, 0xe5, 0x3c, 0x30, 0x78, 0xf5, 0x6a, 0xf2, 0xfc, + 0xe0, 0x92, 0x9e, 0xef, 0x36, 0xbe, 0xaf, 0x64, 0xbb, 0x1d, 0xf5, 0x8c, + 0x72, 0x00, 0x6d, 0x6e, 0x6f, 0x71, 0xe6, 0x16, 0x7b, 0x31, 0xba, 0xe5, + 0x0f, 0x16, 0x35, 0xb5, 0x18, 0x76, 0xa6, 0x6c, 0x12, 0x0f, 0x63, 0x2e, + 0x2b, 0xa6, 0xaa, 0xb3, 0x65, 0x0d, 0x8e, 0xc4, 0xfd, 0xf2, 0xa4, 0x2b, + 0xde, 0xc2, 0xd2, 0x01, 0xd4, 0x0f, 0xc5, 0x25, 0x38, 0xb5, 0xb7, 0xeb, + 0x0b, 0x80, 0x61, 0x75, 0x2c, 0x13, 0x0d, 0x00, 0x3b, 0x48, 0xfe, 0xd2, + 0xc3, 0xea, 0x3f, 0x5a, 0xba, 0xce, 0x06, 0x6d, 0xf8, 0x60, 0xd4, 0x4d, + 0x2e, 0xd8, 0x5d, 0xb4, 0x92, 0x63, 0xe2, 0xe5, 0xde, 0x54, 0xc1, 0x33, + 0xdf, 0x91, 0xf9, 0x57, 0x95, 0xfd, 0x61, 0x78, 0x7f, 0x5c, 0xce, 0x70, + 0xe3, 0xd6, 0x78, 0xfb, 0x8c, 0x24, 0xa6, 0xf3, 0x7e, 0xba, 0xf5, 0xd0, + 0x23, 0x7d, 0x67, 0xe2, 0xcf, 0xf6, 0xa2, 0x7f, 0xcf, 0x7e, 0xb1, 0xe9, + 0xf1, 0x5e, 0xfe, 0x37, 0x41, 0x8f, 0xf3, 0x65, 0x73, 0xa0, 0x25, 0xac, + 0x24, 0xa4, 0xca, 0x6e, 0x03, 0xf0, 0x51, 0x03, 0xdc, 0x07, 0x28, 0x8e, + 0x1f, 0x91, 0x25, 0x22, 0x77, 0xd3, 0x6a, 0xb5, 0x59, 0xe0, 0x01, 0xa8, + 0xee, 0x15, 0x76, 0xeb, 0x63, 0x42, 0xb0, 0x58, 0x5b, 0x24, 0x0f, 0x8f, + 0xc1, 0x25, 0x27, 0x07, 0xd6, 0x70, 0x6b, 0x44, 0x01, 0xc9, 0xfe, 0x0a, + 0x56, 0x38, 0xe3, 0x3c, 0x32, 0xbf, 0x75, 0x2e, 0x3b, 0x88, 0xf1, 0x20, + 0x42, 0x0b, 0x1d, 0x03, 0x49, 0x83, 0xcf, 0xfa, 0xf8, 0xab, 0x76, 0x7b, + 0xf1, 0x84, 0xc4, 0x81, 0xf0, 0x49, 0x48, 0x8b, 0xcb, 0x7d, 0xe5, 0x87, + 0x7f, 0xe6, 0x6f, 0xfa, 0x2d, 0xf3, 0x8f, 0x1f, 0x05, 0x00, 0xc2, 0x65, + 0xce, 0x24, 0x93, 0xac, 0x9f, 0x0e, 0xe5, 0x3d, 0x4e, 0x0f, 0x12, 0x75, + 0x3c, 0x72, 0x49, 0xfc, 0x53, 0xb9, 0xec, 0x68, 0x3a, 0xf6, 0x25, 0x25, + 0x24, 0xe9, 0xb8, 0x4d, 0xcc, 0xce, 0x6b, 0x1c, 0x62, 0x9a, 0xfd, 0xf6, + 0x38, 0xf0, 0x1a, 0x35, 0xd5, 0x53, 0xea, 0x22, 0xa3, 0xd4, 0x32, 0x0d, + 0x0e, 0x0e, 0xa4, 0xd8, 0x76, 0x38, 0x70, 0x42, 0xb7, 0x6d, 0x8f, 0xc3, + 0xc1, 0x35, 0x83, 0xb7, 0x23, 0x30, 0x4b, 0xc7, 0x76, 0xd3, 0xd8, 0x1f, + 0x37, 0x2c, 0xd0, 0x34, 0x09, 0x29, 0x4f, 0x12, 0xe8, 0x4e, 0xd6, 0x82, + 0xed, 0x78, 0x02, 0x53, 0xc7, 0xe9, 0x3e, 0xe5, 0x26, 0x81, 0xea, 0xc1, + 0xd2, 0x74, 0x49, 0x4b, 0x6d, 0x73, 0x86, 0x82, 0x1a, 0x91, 0x66, 0x9a, + 0x88, 0x56, 0x5a, 0xc7, 0x12, 0x63, 0x48, 0xe4, 0x76, 0x51, 0x73, 0x41, + 0xd4, 0x99, 0xf0, 0x01, 0x25, 0x35, 0x5c, 0x08, 0x89, 0x49, 0xec, 0xf6, + 0x6f, 0x1f, 0x35, 0x2b, 0x7e, 0x94, 0x22, 0x16, 0xfe, 0xac, 0xe2, 0x7e, + 0x49, 0x29, 0xae, 0xde, 0x14, 0x9a, 0x34, 0x95, 0x16, 0x04, 0x46, 0x0d, + 0x3f, 0x82, 0x4a, 0x58, 0x7d, 0x24, 0x33, 0xc9, 0x45, 0x8d, 0x4a, 0x19, + 0xe5, 0x25, 0x31, 0x1c, 0x22, 0xd4, 0x20, 0x21, 0xff, 0x00, 0x72, 0x35, + 0x51, 0xb0, 0xf6, 0x49, 0x4c, 0x1b, 0xc9, 0x4d, 0x1e, 0xf0, 0xa4, 0x39, + 0x29, 0xa0, 0x6f, 0x09, 0x29, 0x9f, 0x06, 0x14, 0x48, 0xf7, 0x9f, 0x30, + 0x54, 0xdc, 0x25, 0xda, 0x26, 0x8f, 0xd2, 0x19, 0xec, 0xd2, 0x52, 0x53, + 0x56, 0x3d, 0xff, 0x00, 0x34, 0x6a, 0x4f, 0xbc, 0x41, 0x42, 0x1a, 0xbd, + 0x12, 0x90, 0x77, 0xca, 0x4a, 0x49, 0x6f, 0xd2, 0x2e, 0xef, 0xdb, 0xe2, + 0xab, 0xbc, 0x6a, 0xad, 0x58, 0x15, 0x77, 0x0d, 0x52, 0x53, 0x13, 0x1b, + 0x0c, 0x6a, 0x55, 0xbc, 0x00, 0x3f, 0x6a, 0x61, 0x78, 0x9b, 0x6b, 0xff, + 0x00, 0xaa, 0x0a, 0xa1, 0x1a, 0x2b, 0x78, 0x03, 0xfc, 0xab, 0x87, 0x3a, + 0x0f, 0x56, 0xbf, 0xfa, 0xa0, 0x92, 0x9f, 0x55, 0xc7, 0x00, 0x62, 0xd7, + 0xa6, 0xb3, 0xcf, 0xcd, 0x26, 0x8f, 0x71, 0x31, 0xa6, 0xef, 0x70, 0xfc, + 0x14, 0x1a, 0xf2, 0x31, 0xe9, 0x23, 0xc4, 0xfe, 0x54, 0x51, 0xb5, 0xaf, + 0x7c, 0xf2, 0x40, 0x29, 0x29, 0x25, 0x50, 0x1c, 0xd3, 0xf0, 0xd7, 0xf0, + 0x5e, 0x45, 0xd6, 0x89, 0x77, 0x58, 0xce, 0x27, 0x59, 0xc8, 0xb7, 0xfe, + 0xad, 0xcb, 0xd7, 0x1c, 0xf0, 0xc8, 0x70, 0x00, 0xc1, 0x1f, 0x95, 0x79, + 0x17, 0x58, 0x11, 0xd5, 0xb3, 0xbf, 0xf0, 0xc5, 0xbf, 0xf5, 0x65, 0x25, + 0x35, 0x87, 0xd1, 0x9f, 0x8a, 0x5f, 0x98, 0x93, 0x44, 0xb3, 0xe6, 0xa3, + 0xd9, 0x25, 0x36, 0x6a, 0x6e, 0xeb, 0x61, 0x49, 0xfc, 0x90, 0x35, 0x4d, + 0x5b, 0x7d, 0xee, 0xf8, 0x27, 0xfc, 0xe2, 0x92, 0x98, 0xd6, 0x3f, 0x4a, + 0x3e, 0x3f, 0xc5, 0x68, 0x81, 0x13, 0xe1, 0x0a, 0x8d, 0x66, 0x6c, 0x68, + 0x23, 0x8f, 0xef, 0x5a, 0x00, 0x48, 0x25, 0x25, 0x35, 0x5e, 0x22, 0xc3, + 0xb4, 0xed, 0x52, 0x6d, 0xc0, 0xb4, 0xb7, 0xb0, 0xf0, 0xfc, 0xaa, 0x36, + 0xff, 0x00, 0x38, 0xe5, 0x06, 0x34, 0xed, 0x79, 0x07, 0x40, 0x0f, 0xcd, + 0x25, 0x33, 0x65, 0x76, 0xb9, 0xfb, 0x58, 0x04, 0x9f, 0xde, 0x70, 0x03, + 0xf1, 0x2a, 0x4f, 0x2d, 0xa5, 0xe0, 0x87, 0x36, 0xdb, 0x47, 0x70, 0x3d, + 0x8d, 0x3f, 0x3e, 0x50, 0x2b, 0xec, 0x9d, 0xdc, 0xca, 0x4a, 0x62, 0xe7, + 0x3d, 0xee, 0x73, 0xec, 0x71, 0x73, 0x9d, 0xa9, 0x71, 0xe4, 0x94, 0xa3, + 0x84, 0x86, 0xb2, 0x53, 0xa4, 0xa5, 0x38, 0x43, 0xcb, 0xbb, 0x08, 0x4c, + 0xe0, 0x4f, 0xb8, 0x7d, 0xe9, 0xdf, 0x24, 0xbc, 0x0f, 0x29, 0x50, 0x6b, + 0x8b, 0x0c, 0x72, 0x12, 0x53, 0x65, 0x97, 0xc0, 0xec, 0x7c, 0x41, 0xf1, + 0x51, 0x7d, 0xa7, 0x50, 0xdf, 0x68, 0xf2, 0x51, 0x06, 0xb7, 0x79, 0x15, + 0x3f, 0x4a, 0xbe, 0x49, 0x30, 0x92, 0x91, 0xd7, 0x51, 0xb0, 0xc8, 0xe3, + 0xb2, 0x9e, 0x5c, 0x32, 0xb1, 0x50, 0xe7, 0x92, 0x14, 0xc6, 0x43, 0x6b, + 0x6c, 0x33, 0xe9, 0x71, 0x2a, 0xbb, 0xc1, 0x23, 0x73, 0xb9, 0x29, 0x29, + 0x83, 0x02, 0x23, 0x00, 0xf9, 0xf6, 0x50, 0x62, 0x23, 0x4c, 0x32, 0x3b, + 0x93, 0xa2, 0x4a, 0x5a, 0x39, 0x42, 0x23, 0xdc, 0x8b, 0xe2, 0xa1, 0xf9, + 0xc9, 0x29, 0x8c, 0x6a, 0x11, 0x1a, 0x40, 0x67, 0xc4, 0xa8, 0xf7, 0xfb, + 0xd3, 0x86, 0xcb, 0x47, 0xc5, 0x25, 0x2c, 0xde, 0x52, 0x1f, 0x4c, 0x14, + 0x9b, 0xdd, 0x3c, 0x9d, 0xc1, 0x25, 0x24, 0x6c, 0x19, 0x9e, 0x7b, 0x28, + 0xb8, 0x7e, 0x91, 0xc3, 0xf9, 0x25, 0x49, 0xbc, 0x4a, 0x56, 0x69, 0x63, + 0xbf, 0xaa, 0x52, 0x53, 0x52, 0xbd, 0x5e, 0x14, 0xe9, 0xfa, 0x51, 0xe6, + 0xa3, 0x56, 0x96, 0x05, 0x3a, 0x7f, 0x9c, 0xf9, 0xa4, 0xa6, 0xc5, 0xad, + 0x80, 0xaa, 0x3a, 0x63, 0xe2, 0xaf, 0x5e, 0xdd, 0x15, 0x37, 0xb6, 0x08, + 0x1e, 0x09, 0x29, 0x67, 0x0f, 0x6a, 0xb7, 0x82, 0x1c, 0xde, 0xa9, 0x82, + 0x48, 0xe6, 0xd6, 0x47, 0xf9, 0xc1, 0x55, 0x73, 0x74, 0x57, 0xb1, 0x09, + 0xfd, 0xa9, 0x82, 0x4e, 0xb1, 0x6b, 0x23, 0xe4, 0x42, 0x4a, 0x7d, 0x20, + 0x4f, 0xa5, 0x54, 0x0e, 0x09, 0x8f, 0xbd, 0x58, 0x79, 0x97, 0xba, 0x0f, + 0x61, 0x3f, 0x09, 0x55, 0xeb, 0xd6, 0xba, 0xc7, 0x8e, 0xbf, 0x7b, 0x8a, + 0xb0, 0xe1, 0x17, 0xbc, 0x7f, 0x24, 0x7e, 0x54, 0x94, 0xc1, 0xf2, 0x5b, + 0x1d, 0xb4, 0xe3, 0xe2, 0xbc, 0xa3, 0xac, 0x69, 0xd5, 0xb3, 0x7f, 0xe3, + 0xed, 0xff, 0x00, 0xab, 0x2b, 0xd6, 0x5f, 0x5b, 0x9d, 0x0d, 0x6f, 0xd2, + 0x27, 0x43, 0xf3, 0x5e, 0x4f, 0xd6, 0x07, 0xf9, 0x5b, 0x37, 0xbf, 0xe9, + 0xed, 0xff, 0x00, 0xaa, 0x29, 0x29, 0x05, 0x5f, 0xcd, 0x93, 0xe6, 0x87, + 0x07, 0x6a, 0x2d, 0x3f, 0xcd, 0xbb, 0xe2, 0xa3, 0x03, 0xd3, 0x8f, 0x3e, + 0x52, 0x53, 0x65, 0xad, 0xe4, 0xa8, 0x8e, 0x4a, 0x29, 0x69, 0x0c, 0xf8, + 0xa1, 0x86, 0x80, 0x24, 0xfc, 0x92, 0x52, 0xaa, 0xfe, 0x70, 0x69, 0x11, + 0xdd, 0x68, 0x37, 0x82, 0x7c, 0xf8, 0x54, 0xa9, 0x69, 0xde, 0x3c, 0x15, + 0xca, 0x65, 0xcc, 0x91, 0xe7, 0xf9, 0x52, 0x52, 0x0b, 0x41, 0x97, 0x14, + 0x36, 0x82, 0x58, 0xf2, 0x38, 0x00, 0xe8, 0x8f, 0x6c, 0x87, 0x47, 0x8f, + 0x3f, 0x24, 0x16, 0x7d, 0x0b, 0x27, 0x90, 0x0a, 0x4a, 0x46, 0xce, 0x02, + 0x91, 0xd4, 0xa5, 0x5f, 0x0a, 0x51, 0x32, 0x47, 0x64, 0x94, 0x8f, 0xb9, + 0x4f, 0xc9, 0x4e, 0x01, 0x48, 0x0f, 0x70, 0x49, 0x4a, 0x6c, 0xc5, 0xd1, + 0xdf, 0x43, 0xf0, 0x08, 0x47, 0xe9, 0x0f, 0x82, 0xb1, 0x5d, 0x64, 0xfa, + 0xc4, 0x7e, 0x6b, 0x49, 0x28, 0x04, 0x43, 0x87, 0xc1, 0x25, 0x32, 0xdb, + 0x30, 0x13, 0x86, 0x8e, 0x0a, 0x93, 0x46, 0xa1, 0x3c, 0x70, 0x92, 0x98, + 0xed, 0x01, 0xc3, 0x44, 0xad, 0xfa, 0x23, 0xcd, 0x4c, 0xfd, 0x21, 0xe2, + 0x9a, 0xf6, 0xc5, 0x6c, 0x77, 0x88, 0x49, 0x48, 0x47, 0x03, 0xe6, 0x8a, + 0xcd, 0xc1, 0x9a, 0x09, 0x07, 0xbf, 0x82, 0x10, 0xd4, 0x01, 0xf1, 0x56, + 0x18, 0xc7, 0x1a, 0xb4, 0xfa, 0x3f, 0x9d, 0xf2, 0x49, 0x48, 0x8a, 0x80, + 0xe4, 0xa9, 0xc6, 0x8a, 0x1e, 0x29, 0x29, 0x4d, 0x12, 0xe8, 0xf2, 0x2a, + 0x6c, 0x6c, 0x36, 0x3c, 0x14, 0x1a, 0x0e, 0xef, 0x91, 0x44, 0x66, 0xac, + 0x9e, 0xf2, 0x92, 0x91, 0x37, 0x94, 0xe6, 0x34, 0x4e, 0xc1, 0xa9, 0x4c, + 0xe1, 0x09, 0x29, 0x33, 0x74, 0x6c, 0xa8, 0xb8, 0x6e, 0xbe, 0x3c, 0x5a, + 0x7f, 0x22, 0x9b, 0x41, 0xf4, 0xbe, 0x2a, 0x04, 0xed, 0xb8, 0x3b, 0xc0, + 0x1f, 0xc8, 0x92, 0x9a, 0xa2, 0x5b, 0x60, 0xf8, 0xa9, 0xd5, 0xfc, 0xe7, + 0xcd, 0x45, 0xc3, 0xf4, 0x9f, 0x12, 0x89, 0x50, 0xfd, 0x24, 0xf8, 0x14, + 0x94, 0xdb, 0xb4, 0xcb, 0x44, 0x77, 0x54, 0xec, 0x32, 0xe9, 0x0a, 0xf3, + 0xda, 0x4b, 0x34, 0xd2, 0x15, 0x37, 0xb4, 0x02, 0x63, 0xb4, 0x24, 0xa6, + 0x36, 0x7d, 0x1f, 0x8a, 0xbb, 0x8c, 0x67, 0xa8, 0xe1, 0x47, 0x22, 0xe6, + 0x7e, 0x50, 0xa9, 0xd9, 0xab, 0x40, 0x0a, 0xc6, 0x01, 0x3f, 0xb4, 0xf0, + 0xc9, 0xe0, 0xdc, 0xcf, 0xfa, 0xa0, 0x92, 0x9f, 0x4d, 0xaa, 0x03, 0x2b, + 0x2e, 0xf1, 0xff, 0x00, 0xbf, 0x2b, 0x0e, 0x03, 0xd5, 0x71, 0xfe, 0x48, + 0xfc, 0xaa, 0xab, 0x1a, 0x4d, 0x60, 0x01, 0xac, 0x9d, 0x7e, 0x6a, 0xcc, + 0x45, 0xa4, 0x72, 0x4b, 0x04, 0xfd, 0xe9, 0x29, 0x90, 0x61, 0xf5, 0x18, + 0xe9, 0xfc, 0xe1, 0xf9, 0x57, 0x92, 0xf5, 0xa0, 0x07, 0x56, 0xcd, 0x1c, + 0x7e, 0x9e, 0xdd, 0x3f, 0xb4, 0x57, 0xae, 0x48, 0x0e, 0x69, 0x3c, 0xb4, + 0x83, 0xf8, 0xaf, 0x26, 0xeb, 0xc3, 0xfc, 0xb3, 0x9d, 0xff, 0x00, 0x86, + 0x2d, 0xff, 0x00, 0xaa, 0x29, 0x29, 0xab, 0x47, 0xf3, 0x4f, 0xf8, 0x85, + 0x1d, 0xa7, 0xd3, 0xfe, 0xd2, 0x9e, 0x38, 0xfd, 0x1d, 0x9f, 0x24, 0xa3, + 0xf4, 0x73, 0xe6, 0x92, 0x9b, 0xee, 0xac, 0xfa, 0x7e, 0x70, 0xa0, 0x6a, + 0xd0, 0x78, 0x15, 0x6d, 0xcd, 0xf6, 0x7e, 0x45, 0x1b, 0x6b, 0x86, 0xb7, + 0x6a, 0x4a, 0x6b, 0x56, 0x00, 0x2e, 0x3d, 0xc0, 0x56, 0xb1, 0x84, 0xd0, + 0x3e, 0x0a, 0x95, 0x9b, 0x9b, 0x60, 0x1c, 0x12, 0xdf, 0xc2, 0x55, 0xde, + 0x9a, 0xe6, 0xbd, 0xde, 0x94, 0xc9, 0x02, 0x42, 0x4a, 0x47, 0x63, 0x41, + 0x07, 0xcb, 0xf8, 0xa1, 0x35, 0x91, 0x55, 0x86, 0x79, 0x1c, 0x2b, 0x17, + 0x31, 0xc1, 0xd6, 0x34, 0x72, 0x38, 0x50, 0x63, 0x1d, 0xf6, 0x7b, 0x49, + 0x12, 0x43, 0x79, 0xf0, 0x49, 0x4d, 0x46, 0xe8, 0x02, 0x2d, 0x4d, 0x96, + 0xb8, 0x9e, 0x38, 0x53, 0xaa, 0xb0, 0x59, 0x31, 0xaa, 0x99, 0xaf, 0x6e, + 0xe3, 0xf9, 0xae, 0x10, 0x47, 0xdc, 0x92, 0x90, 0xb1, 0xbe, 0xe1, 0x3d, + 0x82, 0x89, 0x6c, 0x10, 0x8e, 0xd1, 0xee, 0xf9, 0x21, 0x91, 0xdd, 0x25, + 0x33, 0xa0, 0x7b, 0x72, 0x4c, 0xc0, 0xdb, 0xc7, 0x8a, 0xa8, 0xe1, 0x36, + 0x7c, 0x82, 0xb8, 0xcd, 0xad, 0xf5, 0x67, 0x97, 0x08, 0x01, 0x56, 0xb0, + 0x45, 0xd1, 0xf0, 0x49, 0x4c, 0xea, 0x6e, 0xbf, 0x22, 0xa4, 0x1b, 0xe2, + 0xa7, 0x4b, 0x24, 0x13, 0xc0, 0x00, 0xfe, 0x44, 0x46, 0x33, 0x49, 0x1a, + 0xa4, 0xa4, 0x05, 0xb0, 0xef, 0x82, 0x85, 0xe3, 0xf4, 0x75, 0xf9, 0x0f, + 0xe2, 0x8e, 0xe1, 0xcf, 0x90, 0x42, 0xb8, 0x7e, 0x85, 0x9f, 0x04, 0x94, + 0x80, 0xc4, 0x35, 0x5b, 0x60, 0x77, 0xd9, 0xe2, 0x34, 0x3a, 0x93, 0xf0, + 0x55, 0x08, 0x80, 0xdf, 0x32, 0xaf, 0x6e, 0xdb, 0x8f, 0xb0, 0xfe, 0x74, + 0x47, 0xe4, 0x29, 0x29, 0xad, 0x12, 0xd0, 0x84, 0x04, 0x92, 0xac, 0x01, + 0xcc, 0x7c, 0x90, 0x40, 0xfa, 0x5f, 0x04, 0x94, 0xb5, 0x40, 0x7a, 0xa0, + 0x1e, 0x08, 0x21, 0x19, 0x95, 0x6d, 0x64, 0x1e, 0x50, 0xaa, 0xfe, 0x72, + 0x7c, 0x01, 0x28, 0x96, 0xd8, 0xe2, 0x00, 0x61, 0x87, 0x14, 0x94, 0x8a, + 0xb1, 0xa9, 0x48, 0xb7, 0x52, 0xa4, 0xc1, 0xa9, 0x84, 0xfb, 0x0e, 0xa7, + 0xc4, 0x68, 0x92, 0x92, 0x35, 0xbf, 0xa2, 0x50, 0x2d, 0xfd, 0x38, 0x07, + 0xc0, 0xfe, 0x44, 0x76, 0x8f, 0x60, 0xf8, 0x28, 0x00, 0x0e, 0x4b, 0x3e, + 0x7f, 0x91, 0x25, 0x34, 0x5f, 0xfc, 0xe0, 0x46, 0xc7, 0x68, 0x73, 0x9e, + 0x3b, 0xcc, 0x81, 0xe4, 0xa3, 0x6b, 0x7f, 0x4a, 0x3e, 0x28, 0xb8, 0xac, + 0xfd, 0x24, 0xf6, 0x05, 0x25, 0x36, 0xed, 0x6c, 0x55, 0xf2, 0x59, 0xee, + 0x6c, 0x12, 0x07, 0x92, 0xd7, 0xbd, 0x9f, 0xa2, 0xf9, 0x2c, 0xdb, 0x40, + 0x04, 0x94, 0x94, 0x84, 0xeb, 0x01, 0x5b, 0xc3, 0x00, 0x75, 0x3c, 0x30, + 0xd1, 0x3b, 0x2e, 0x67, 0xe5, 0x55, 0x49, 0xfe, 0x0a, 0xe7, 0x4f, 0x61, + 0x1d, 0x5b, 0x14, 0x9e, 0x0d, 0xcd, 0xfc, 0x0a, 0x4a, 0x7d, 0x1e, 0xb3, + 0xfa, 0x16, 0x19, 0xee, 0xe9, 0xfb, 0xca, 0x38, 0x70, 0x36, 0x98, 0xfd, + 0xdf, 0xe2, 0xa9, 0xd2, 0xf9, 0x66, 0xd2, 0x62, 0x4b, 0xa3, 0xef, 0x2a, + 0xd3, 0x24, 0x38, 0x4f, 0x10, 0x75, 0xed, 0xa2, 0x4a, 0x64, 0xf2, 0x48, + 0x1e, 0x13, 0xfd, 0xeb, 0xcb, 0x7a, 0xeb, 0x7f, 0xca, 0xd9, 0x87, 0xbf, + 0xac, 0xff, 0x00, 0xca, 0xbd, 0x4d, 0xe4, 0x36, 0x07, 0x62, 0xe1, 0x11, + 0xc9, 0x12, 0xbc, 0xc7, 0xaf, 0x88, 0xea, 0xd9, 0xb1, 0xfe, 0x99, 0xff, + 0x00, 0x95, 0x25, 0x34, 0xb1, 0x1b, 0x35, 0xdd, 0xf2, 0x4b, 0x6f, 0xe8, + 0xfe, 0x6a, 0xcf, 0x4a, 0xad, 0xaf, 0xf5, 0x83, 0xb8, 0x80, 0xa5, 0xe8, + 0x37, 0xd4, 0xd9, 0x1e, 0xdd, 0xf1, 0x29, 0x29, 0xb6, 0xd0, 0x5a, 0x1a, + 0x0e, 0xa4, 0xb7, 0xdd, 0xf1, 0x2a, 0x4d, 0x6e, 0xe0, 0xd0, 0x39, 0x6f, + 0x28, 0xef, 0xa8, 0x8e, 0x3b, 0x42, 0x86, 0xc3, 0x05, 0xc3, 0x8d, 0x34, + 0x49, 0x4e, 0x76, 0x5b, 0x7f, 0x4e, 0x5b, 0xc7, 0xb4, 0x7f, 0x14, 0xdd, + 0x3c, 0x58, 0xcc, 0xca, 0xe0, 0x10, 0x67, 0x55, 0x66, 0xfa, 0xb7, 0xd8, + 0xf7, 0x6b, 0xb9, 0xa1, 0xa3, 0xe5, 0xa9, 0x5a, 0x5d, 0x2b, 0x1d, 0xa6, + 0xb7, 0x64, 0x58, 0x35, 0xe1, 0xa9, 0x29, 0xa9, 0x98, 0xc8, 0x7b, 0xcc, + 0x76, 0x55, 0xeb, 0xdc, 0x71, 0x6f, 0x03, 0x80, 0x04, 0x9f, 0x9a, 0xbf, + 0x98, 0x3d, 0xcf, 0x71, 0xf0, 0xe1, 0x52, 0x65, 0x6f, 0x38, 0xd6, 0xbc, + 0x18, 0x60, 0x1e, 0xe1, 0xe3, 0x29, 0x29, 0x8d, 0x2c, 0x86, 0x4f, 0x68, + 0x52, 0x78, 0x30, 0x23, 0x59, 0x3c, 0x29, 0x52, 0xd9, 0xae, 0x07, 0x82, + 0x33, 0xea, 0x77, 0xb7, 0x61, 0x0d, 0x70, 0x89, 0x27, 0xcd, 0x25, 0x34, + 0xf6, 0x10, 0x4f, 0x88, 0x50, 0x2d, 0xd0, 0x47, 0x72, 0xad, 0x39, 0xa0, + 0xb9, 0xd1, 0xfe, 0xa1, 0x08, 0xb2, 0x76, 0xfc, 0x7f, 0x8a, 0x4a, 0x60, + 0x47, 0xb5, 0xc2, 0x39, 0x3c, 0xf7, 0x55, 0xde, 0x3f, 0x58, 0x8f, 0x87, + 0xe4, 0x57, 0xb2, 0x69, 0x70, 0xad, 0xae, 0x69, 0x89, 0x27, 0x72, 0xab, + 0xb0, 0x8c, 0x92, 0xde, 0xe2, 0x3f, 0x22, 0x4a, 0x4f, 0x5b, 0x4f, 0xa6, + 0xe0, 0x39, 0x31, 0xfc, 0x51, 0x58, 0xd9, 0x66, 0x89, 0x06, 0xed, 0x6e, + 0xe3, 0xc6, 0x83, 0xef, 0x95, 0x31, 0xab, 0x64, 0x68, 0x3b, 0x7d, 0xe9, + 0x29, 0xa9, 0x6b, 0x61, 0xc4, 0x72, 0x85, 0x68, 0xfd, 0x0b, 0x55, 0x8b, + 0x01, 0x9d, 0x7c, 0xd0, 0x1c, 0xcd, 0xdb, 0x5a, 0x7e, 0x8b, 0xb6, 0xcf, + 0xc0, 0x98, 0x49, 0x4d, 0xfe, 0x99, 0xf5, 0x7e, 0xde, 0xa1, 0x4b, 0x2e, + 0x7b, 0xcd, 0x75, 0xfe, 0x68, 0x68, 0x97, 0x1f, 0xbf, 0x85, 0xd0, 0xd1, + 0xf5, 0x6b, 0x05, 0xad, 0xdb, 0x61, 0x75, 0x9b, 0x3b, 0x93, 0xdc, 0xfc, + 0x14, 0xb0, 0x5e, 0x03, 0x59, 0x5d, 0x6d, 0x30, 0xd0, 0x01, 0x00, 0x0e, + 0xc3, 0x40, 0x3f, 0xbd, 0x5f, 0xaa, 0xf7, 0x6c, 0x00, 0xb4, 0xee, 0x7b, + 0xb4, 0x32, 0x20, 0xfc, 0x92, 0x53, 0x41, 0xff, 0x00, 0x56, 0xba, 0x76, + 0xd0, 0xda, 0xdb, 0x05, 0xdc, 0xcf, 0x2b, 0x2f, 0x2f, 0xea, 0xc3, 0x1b, + 0xb8, 0xd4, 0x4b, 0x3b, 0x69, 0xa8, 0xfb, 0x8a, 0xea, 0x8d, 0x87, 0xd5, + 0x82, 0x1c, 0x03, 0x44, 0xea, 0x37, 0x42, 0x15, 0xcc, 0xf5, 0x19, 0x2d, + 0xe4, 0x9d, 0x46, 0x9a, 0xa4, 0xa7, 0x80, 0xc8, 0xe9, 0x39, 0x98, 0xc5, + 0xc4, 0xb7, 0x7b, 0x36, 0x91, 0xb9, 0xbf, 0xf9, 0x1e, 0x55, 0x5a, 0x18, + 0xf7, 0xe4, 0x86, 0xfe, 0xe0, 0x97, 0x2e, 0xc3, 0x2e, 0x9b, 0x37, 0xba, + 0xd0, 0xd9, 0x0d, 0x99, 0x6f, 0x07, 0x4f, 0x25, 0x82, 0xee, 0x9d, 0x93, + 0x8a, 0x2c, 0xc8, 0x70, 0x1e, 0x9d, 0xce, 0x73, 0x98, 0xf0, 0x41, 0xf6, + 0x76, 0xf3, 0x49, 0x4e, 0x7d, 0x1c, 0x99, 0xf1, 0x47, 0x27, 0x58, 0xed, + 0xfe, 0xc4, 0x1a, 0x74, 0x04, 0xab, 0x2d, 0x6b, 0x48, 0x1d, 0xa7, 0xf2, + 0x84, 0x94, 0xb8, 0x12, 0xd0, 0x23, 0xb2, 0x0b, 0x44, 0x65, 0xb0, 0x78, + 0x93, 0xf9, 0x15, 0xb6, 0xed, 0x2d, 0x07, 0xc0, 0x2a, 0xe7, 0xfa, 0x65, + 0x50, 0x27, 0x5f, 0xe0, 0x92, 0x9a, 0xb9, 0x0d, 0x8b, 0xa3, 0xcd, 0x1b, + 0x06, 0xb2, 0xeb, 0x88, 0xfe, 0x51, 0x51, 0xc9, 0x00, 0x5e, 0x27, 0xf7, + 0x86, 0x8a, 0xd7, 0x4c, 0x60, 0x37, 0xbc, 0xf6, 0x6b, 0x8f, 0xe5, 0x49, + 0x4d, 0x8c, 0xdd, 0xb5, 0xb0, 0x0e, 0x01, 0xd4, 0xac, 0xd7, 0x7a, 0x6e, + 0x6c, 0xb7, 0xe3, 0xaf, 0xe2, 0xb5, 0x73, 0x9a, 0x1c, 0x01, 0x76, 0xb1, + 0xdb, 0xe2, 0xb2, 0x9d, 0x59, 0x0f, 0x02, 0x38, 0xd0, 0x84, 0x94, 0xd6, + 0xb4, 0xcd, 0xa1, 0xa3, 0x89, 0x0b, 0x47, 0x1a, 0x3f, 0x69, 0xe3, 0x6d, + 0x33, 0xb6, 0xe6, 0xea, 0x3c, 0xca, 0xa5, 0xe9, 0xc5, 0x9b, 0x8f, 0x00, + 0xea, 0xaf, 0x60, 0xd2, 0x2b, 0xcd, 0xc7, 0x8e, 0x5b, 0x70, 0x9f, 0x9b, + 0xb4, 0x49, 0x4f, 0x7b, 0x43, 0x86, 0xd9, 0xec, 0x4b, 0xbf, 0x2a, 0xb9, + 0xea, 0x38, 0x9d, 0x91, 0xc8, 0x3c, 0x2a, 0x78, 0xcd, 0x8a, 0xda, 0x3c, + 0xce, 0x9f, 0x35, 0x6e, 0xbd, 0x01, 0x24, 0x77, 0x31, 0xf7, 0x24, 0xa6, + 0x57, 0xb0, 0x1d, 0xa4, 0x70, 0xde, 0x00, 0xed, 0x0b, 0xcd, 0x7a, 0xfb, + 0x08, 0xea, 0xd9, 0x93, 0xde, 0xd7, 0xfe, 0x55, 0xe9, 0x2e, 0x32, 0x34, + 0xf3, 0xd5, 0x79, 0xef, 0xd6, 0x06, 0xff, 0x00, 0x95, 0xb2, 0xcf, 0x6f, + 0x50, 0xa4, 0xa6, 0x8f, 0x4d, 0x25, 0xa2, 0xf8, 0xd1, 0xd0, 0x20, 0xa6, + 0x93, 0xe9, 0x7a, 0x9f, 0x9d, 0xbe, 0x7e, 0x6a, 0x78, 0x0d, 0xf7, 0x5c, + 0x3f, 0x92, 0x3f, 0x2a, 0x96, 0xdf, 0xd5, 0xfc, 0xb7, 0xff, 0x00, 0x04, + 0x94, 0xec, 0x9a, 0xc9, 0x1a, 0x0d, 0x49, 0x92, 0x87, 0x5b, 0x0b, 0x77, + 0x07, 0x70, 0x0c, 0xc2, 0xb6, 0x1b, 0xa1, 0x3d, 0xc2, 0x03, 0xd8, 0xe2, + 0x4e, 0xbe, 0xc1, 0xcf, 0xcb, 0x52, 0x92, 0x9a, 0xcc, 0x60, 0x79, 0xc8, + 0xb2, 0x78, 0x64, 0x7e, 0x45, 0xa1, 0x82, 0xd1, 0xfb, 0x3d, 0xa4, 0x1e, + 0x49, 0x55, 0x30, 0xdc, 0x1f, 0x46, 0x5e, 0x90, 0x7d, 0xa1, 0x5b, 0xe9, + 0xe0, 0xfe, 0xcf, 0x6c, 0xf6, 0x27, 0xf2, 0xa4, 0xa6, 0xa6, 0x78, 0x1b, + 0x9d, 0xa7, 0x60, 0xa8, 0xfa, 0x92, 0xc7, 0x56, 0x7f, 0x39, 0xae, 0x31, + 0xf7, 0x2d, 0x2c, 0xc6, 0x88, 0xd3, 0x52, 0x55, 0x03, 0x51, 0x6d, 0x56, + 0xbe, 0x01, 0x21, 0x9a, 0x9f, 0x00, 0x4f, 0x64, 0x94, 0xb6, 0x28, 0x05, + 0x8d, 0xd3, 0x5d, 0x7e, 0xe4, 0x6c, 0x82, 0x77, 0x18, 0xd2, 0x23, 0xf2, + 0x28, 0x62, 0x4f, 0xa4, 0x1c, 0x04, 0xc0, 0x56, 0x6c, 0xa8, 0x00, 0xf2, + 0xe3, 0xee, 0x3a, 0x8f, 0x84, 0x24, 0xa6, 0xa3, 0x44, 0x82, 0x4e, 0xa7, + 0xb2, 0x8b, 0x9b, 0xf4, 0x07, 0xf2, 0x87, 0xe5, 0x46, 0x6b, 0x7d, 0x84, + 0xa8, 0x1f, 0xa7, 0x5e, 0x9c, 0xbc, 0x24, 0xa4, 0x97, 0x33, 0x71, 0x0c, + 0xe3, 0x53, 0xf9, 0x55, 0x3b, 0x18, 0x06, 0x7d, 0x9e, 0x51, 0xf9, 0x16, + 0x85, 0x8c, 0x1f, 0x6a, 0x60, 0xf1, 0x06, 0x55, 0x4b, 0x07, 0xeb, 0xf7, + 0x78, 0x02, 0x3f, 0x22, 0x4a, 0x4d, 0xb0, 0xbe, 0x97, 0x0f, 0x9f, 0xf9, + 0xa3, 0xfd, 0xa9, 0xa2, 0x29, 0x04, 0x1d, 0x78, 0x3f, 0x7a, 0x9b, 0xc8, + 0x63, 0x20, 0xf7, 0x0e, 0x8f, 0xb8, 0x25, 0xb0, 0x31, 0x84, 0x0d, 0x48, + 0xee, 0x52, 0x53, 0x52, 0xee, 0x0b, 0x8f, 0x3c, 0x2a, 0xda, 0xef, 0xae, + 0x48, 0x0d, 0x00, 0x39, 0xc4, 0xf6, 0x6b, 0x4c, 0x95, 0x6a, 0xe1, 0xa1, + 0xdd, 0xcf, 0x8a, 0x0e, 0x4d, 0x40, 0xe2, 0xd6, 0x43, 0x77, 0x39, 0xe0, + 0x36, 0x3e, 0x27, 0x54, 0x94, 0xf4, 0x18, 0xf9, 0x39, 0x39, 0xe4, 0x33, + 0x08, 0x7b, 0x08, 0x96, 0xd9, 0x67, 0xb0, 0x19, 0xfc, 0x55, 0xc6, 0xe2, + 0x75, 0x46, 0x38, 0x4b, 0xa8, 0x86, 0x80, 0x4b, 0x7d, 0xd3, 0xa8, 0xf1, + 0x1c, 0xac, 0xac, 0x50, 0xea, 0xb1, 0x5f, 0x7d, 0x81, 0x95, 0x3d, 0x8e, + 0x86, 0x41, 0x77, 0xa8, 0xf6, 0x0e, 0xe5, 0xd3, 0xa4, 0x7c, 0x15, 0xae, + 0xa1, 0x66, 0x45, 0x9d, 0x2f, 0x1e, 0xf6, 0x0f, 0xd3, 0x96, 0x6e, 0x93, + 0x2d, 0xd0, 0xe8, 0x24, 0x84, 0x94, 0xdf, 0x9e, 0xa8, 0xd6, 0xbd, 0xc0, + 0x55, 0x27, 0xe8, 0x92, 0xe7, 0x81, 0xf3, 0x10, 0xa8, 0xbf, 0xaa, 0x75, + 0x7a, 0xa1, 0xae, 0x6d, 0x2d, 0xd8, 0x60, 0xea, 0x79, 0xfb, 0x91, 0x71, + 0x6a, 0xce, 0xa7, 0x1a, 0x97, 0x59, 0x49, 0x2f, 0x2c, 0x06, 0xc7, 0x30, + 0x92, 0xd1, 0x1f, 0x9a, 0xf1, 0xdf, 0xe2, 0x10, 0x3a, 0xbb, 0x0b, 0x59, + 0x30, 0x03, 0x8c, 0x1d, 0x7f, 0x8a, 0x4a, 0x66, 0xce, 0xae, 0x5d, 0x0d, + 0xcd, 0xac, 0x56, 0xf3, 0x3b, 0x6d, 0xac, 0xee, 0xad, 0xd2, 0x3c, 0xf5, + 0x0a, 0xee, 0x6f, 0x4d, 0xaf, 0x1b, 0xa1, 0x6e, 0xb0, 0x4d, 0x9b, 0x5c, + 0xf8, 0x3a, 0x86, 0x6f, 0x13, 0xb4, 0x79, 0x2e, 0x53, 0xa8, 0xdf, 0x6f, + 0xd9, 0x9b, 0x1b, 0x5a, 0x27, 0x46, 0x3b, 0x49, 0x1f, 0xc9, 0x56, 0xb0, + 0xfa, 0xe6, 0x6d, 0xb8, 0x97, 0x61, 0x65, 0xbc, 0xd9, 0x5d, 0x8d, 0x2d, + 0xa8, 0x9f, 0xcd, 0x31, 0xa4, 0x79, 0x24, 0xa7, 0x1e, 0x97, 0x8d, 0x07, + 0x89, 0x57, 0x18, 0xdd, 0x09, 0xe2, 0x09, 0x2b, 0x3e, 0xb2, 0x5a, 0x47, + 0x91, 0x5a, 0xdd, 0x1f, 0x0b, 0xf6, 0x86, 0x50, 0xc7, 0x73, 0xcb, 0x01, + 0x1b, 0x9c, 0xe0, 0x24, 0xfc, 0x02, 0x4a, 0x61, 0x53, 0x81, 0x67, 0xc2, + 0x50, 0xab, 0x21, 0xd9, 0xb4, 0xfc, 0x4f, 0xe4, 0x5d, 0xcb, 0x3e, 0xa1, + 0xf4, 0xe1, 0x5f, 0xf4, 0x8b, 0xa4, 0x89, 0x9f, 0x6f, 0xf7, 0x2e, 0x43, + 0xa8, 0x60, 0xb7, 0xa7, 0x75, 0x96, 0xe3, 0xb5, 0xe5, 0xec, 0x69, 0x96, + 0xb8, 0x88, 0x30, 0x47, 0x74, 0x94, 0xe7, 0xe4, 0xb0, 0xbf, 0x2d, 0xa3, + 0xc5, 0xc3, 0xf2, 0xab, 0xd8, 0x2c, 0x70, 0xbe, 0xc8, 0xe3, 0x71, 0xfc, + 0x0a, 0xad, 0x1b, 0xb2, 0xdb, 0x3f, 0xbc, 0x15, 0xec, 0x16, 0xfe, 0xb2, + 0xf8, 0xe3, 0x73, 0xa7, 0xef, 0x49, 0x49, 0xf3, 0xaa, 0x77, 0xa5, 0xbb, + 0xbc, 0x72, 0xb2, 0x98, 0xc2, 0xe9, 0x71, 0xe7, 0xba, 0xde, 0xc9, 0x13, + 0x8d, 0xa8, 0xd0, 0x03, 0xaf, 0xcd, 0x63, 0x50, 0xc3, 0x06, 0x35, 0xf7, + 0x47, 0xdc, 0x92, 0x9a, 0xb7, 0x69, 0xcf, 0x88, 0xfc, 0xaa, 0xfe, 0x25, + 0x60, 0x66, 0x50, 0x66, 0x49, 0xb5, 0xa4, 0xf9, 0x7b, 0x95, 0x1c, 0x81, + 0xee, 0xd7, 0xc4, 0x69, 0xf3, 0x5a, 0x38, 0xd5, 0x1f, 0xb7, 0x56, 0x78, + 0x06, 0xc6, 0x39, 0xa7, 0xca, 0x52, 0x53, 0xdb, 0xe3, 0x96, 0xfa, 0x6c, + 0x93, 0xdd, 0xd3, 0xfe, 0x72, 0x23, 0x27, 0x50, 0x7e, 0x8e, 0xe1, 0xb5, + 0x41, 0xad, 0x03, 0x1d, 0x8e, 0xf0, 0x2e, 0x1f, 0x22, 0x51, 0x18, 0x48, + 0x0d, 0x91, 0x24, 0x9f, 0xef, 0x49, 0x4b, 0xb8, 0x9d, 0x83, 0x59, 0xf1, + 0xf1, 0xe1, 0x70, 0x9d, 0x75, 0x85, 0xdd, 0x53, 0x2c, 0x0e, 0xcf, 0x27, + 0xf0, 0x5d, 0xe3, 0x89, 0x1b, 0x64, 0x41, 0xd3, 0x4f, 0x90, 0x5c, 0x1f, + 0xd6, 0x39, 0xfd, 0xab, 0x94, 0x39, 0xfd, 0x21, 0xfc, 0x81, 0x25, 0x39, + 0xd8, 0x8f, 0x15, 0xbe, 0xd2, 0xe0, 0x60, 0xb4, 0x01, 0xf3, 0x28, 0xf1, + 0xfa, 0xbc, 0xff, 0x00, 0x2e, 0x3f, 0x04, 0x2c, 0x46, 0x6e, 0xb2, 0xd6, + 0x9f, 0xdd, 0x07, 0xee, 0x70, 0x57, 0x7d, 0x31, 0xe8, 0xed, 0x8d, 0x77, + 0xa4, 0xa7, 0x57, 0x78, 0x87, 0x34, 0x05, 0x5d, 0xdb, 0x80, 0x31, 0xdc, + 0xc7, 0xdd, 0xca, 0xb2, 0x5a, 0x03, 0xc9, 0x1e, 0x68, 0x4e, 0x20, 0x3c, + 0x40, 0xd1, 0xb3, 0x23, 0xe2, 0x92, 0x91, 0x62, 0x56, 0x5b, 0x5e, 0x46, + 0x91, 0xb8, 0x8e, 0x55, 0xbc, 0x06, 0x4e, 0x0b, 0x44, 0xe8, 0x09, 0x91, + 0xf3, 0x48, 0x34, 0x6d, 0xb0, 0x8d, 0x24, 0xe8, 0xa5, 0xd3, 0xd9, 0xb7, + 0x13, 0x69, 0xe7, 0x71, 0x3f, 0x8a, 0x4a, 0x69, 0xe4, 0xb4, 0xb4, 0xc4, + 0x7f, 0xac, 0x95, 0x52, 0xda, 0xc7, 0xd9, 0xee, 0x73, 0x9d, 0x04, 0x0f, + 0x60, 0xf1, 0x2b, 0x4a, 0xd6, 0x87, 0xee, 0x72, 0xad, 0x75, 0x64, 0x62, + 0xde, 0x63, 0xdb, 0xb6, 0x09, 0xfc, 0x89, 0x29, 0xaf, 0x85, 0x0c, 0x69, + 0x69, 0x32, 0x08, 0x00, 0x04, 0x7c, 0xb6, 0x39, 0xfb, 0x48, 0xd0, 0x03, + 0x04, 0x20, 0x62, 0xb4, 0x1d, 0x86, 0x60, 0x8e, 0xde, 0x50, 0xad, 0x64, + 0x4e, 0xc6, 0xbb, 0xc5, 0xc3, 0x4f, 0x92, 0x4a, 0x40, 0xc6, 0xfe, 0x8e, + 0x3c, 0x50, 0xf6, 0x93, 0x6d, 0x5f, 0xd6, 0x0a, 0xe3, 0x6b, 0x96, 0x4a, + 0x10, 0xaa, 0x32, 0x2a, 0x68, 0xfd, 0xe9, 0x49, 0x4b, 0xe5, 0x30, 0x7a, + 0xcd, 0x6f, 0x1b, 0x81, 0xd5, 0x67, 0xed, 0x27, 0x32, 0xc1, 0x3c, 0x46, + 0xbf, 0x20, 0xb5, 0x6e, 0x68, 0x37, 0x30, 0x3b, 0xfd, 0x75, 0x59, 0xe1, + 0x91, 0x9d, 0x78, 0x1a, 0xc1, 0x01, 0x25, 0x36, 0x4d, 0x41, 0xcd, 0xd4, + 0xcc, 0x34, 0x9f, 0xc5, 0x22, 0xdd, 0x23, 0xb1, 0xd4, 0x2b, 0x14, 0x31, + 0xa4, 0x12, 0x74, 0x04, 0x40, 0xf8, 0x92, 0x50, 0xf6, 0x7b, 0x47, 0xc2, + 0x12, 0x53, 0x99, 0x92, 0x76, 0x87, 0x03, 0xcc, 0xa7, 0x89, 0xaa, 0x82, + 0x75, 0x03, 0x69, 0x8f, 0x9a, 0x7c, 0xb3, 0x3b, 0xb4, 0x44, 0x6b, 0x37, + 0x62, 0x50, 0x5b, 0xc8, 0x00, 0x9f, 0x1e, 0xe9, 0x29, 0xbd, 0x6d, 0xb8, + 0x85, 0x8c, 0xa2, 0xdb, 0x3d, 0x36, 0xb8, 0x0d, 0xef, 0x8d, 0x36, 0x93, + 0x11, 0x3e, 0x25, 0x5f, 0xbf, 0xad, 0x74, 0x8a, 0x9e, 0x29, 0xc6, 0xb9, + 0xb7, 0x86, 0xb4, 0x7a, 0x94, 0x89, 0x92, 0x07, 0xb4, 0xec, 0x31, 0xb4, + 0xb8, 0x0e, 0xdc, 0xac, 0xba, 0x3a, 0x6d, 0x97, 0xde, 0xc1, 0x91, 0xfa, + 0x1a, 0xa0, 0x39, 0xe5, 0xfa, 0x1f, 0x2d, 0x3f, 0xbd, 0x59, 0xb1, 0xae, + 0x65, 0xfb, 0x7a, 0x57, 0x4a, 0x6d, 0xec, 0x68, 0xfe, 0x7d, 0xfa, 0x00, + 0xef, 0xed, 0x7f, 0x04, 0x94, 0xec, 0x8c, 0x96, 0x0a, 0x9a, 0xfa, 0x48, + 0xb2, 0x87, 0x09, 0x6b, 0x81, 0xe4, 0x79, 0xae, 0x7b, 0xaa, 0x65, 0xbb, + 0x2a, 0xd7, 0x03, 0xa3, 0x46, 0x80, 0x7f, 0x7a, 0x2b, 0x33, 0x9c, 0xe0, + 0x5a, 0xda, 0x19, 0x8a, 0xd6, 0x4b, 0x5d, 0x55, 0x64, 0xc6, 0xfe, 0x5d, + 0x32, 0xb3, 0xb2, 0xee, 0x6b, 0x6b, 0x3b, 0x75, 0x82, 0x5c, 0xf3, 0xd9, + 0x25, 0x35, 0xfa, 0xb3, 0x3d, 0x0c, 0x58, 0x32, 0x03, 0x9c, 0xdf, 0x49, + 0xae, 0xe7, 0xe8, 0x99, 0x3f, 0x0d, 0x7f, 0xd6, 0x52, 0xc5, 0xe9, 0xb6, + 0x33, 0xa5, 0x3b, 0x32, 0xeb, 0x36, 0xd8, 0xd7, 0x03, 0x55, 0x03, 0x57, + 0x3d, 0xbe, 0x7d, 0xc2, 0x26, 0x55, 0x79, 0x99, 0xb9, 0x63, 0x2b, 0x0a, + 0x2c, 0x2c, 0x68, 0x15, 0xd2, 0xf8, 0x26, 0x07, 0x2e, 0xaf, 0x78, 0xda, + 0xe9, 0xf2, 0x42, 0x3d, 0x7f, 0xab, 0x52, 0xe3, 0x5d, 0xa7, 0x63, 0xdb, + 0xa3, 0x9a, 0xea, 0xc0, 0x20, 0xf9, 0x8d, 0xa1, 0x25, 0x2b, 0x06, 0xbc, + 0x6b, 0xdc, 0xcb, 0x2f, 0xc6, 0xb5, 0xad, 0x75, 0xad, 0xad, 0xc4, 0x3b, + 0xda, 0x37, 0x7f, 0x27, 0x47, 0x7e, 0x2b, 0xa4, 0x0c, 0xe9, 0xf8, 0x1f, + 0x59, 0xb1, 0x2a, 0xe9, 0xa0, 0x0a, 0x2d, 0xac, 0x7a, 0xb3, 0xba, 0x1a, + 0xe3, 0xda, 0x5c, 0x4e, 0xab, 0x03, 0x13, 0xaa, 0x66, 0xf5, 0x0c, 0xba, + 0xe9, 0xbd, 0xc1, 0xd5, 0x80, 0x49, 0x0d, 0x68, 0x1c, 0x0f, 0x25, 0xa8, + 0x1a, 0x77, 0x36, 0xa6, 0x8f, 0x6f, 0x27, 0xc6, 0x65, 0x25, 0x3e, 0x93, + 0x20, 0x89, 0x07, 0x4f, 0x15, 0xe5, 0xbf, 0x59, 0xdc, 0xe1, 0xf5, 0x8d, + 0x91, 0xc7, 0x8f, 0xde, 0xae, 0xbe, 0x2c, 0x69, 0x63, 0x09, 0x6b, 0x84, + 0x0d, 0xc0, 0x9e, 0xea, 0x97, 0x53, 0xbb, 0xec, 0x6f, 0xa5, 0xad, 0x01, + 0xc5, 0xcc, 0x25, 0xdb, 0xc4, 0xf7, 0x89, 0x49, 0x4d, 0x3f, 0x4e, 0xf6, + 0xe4, 0x55, 0x65, 0xac, 0x73, 0x58, 0xf7, 0x7b, 0x1c, 0x44, 0x07, 0x47, + 0x82, 0xb5, 0x84, 0x4f, 0xdb, 0x2c, 0x11, 0x03, 0x7b, 0x90, 0xb1, 0xfa, + 0xed, 0xb8, 0xf6, 0x9b, 0x7d, 0x2a, 0xde, 0x4b, 0x76, 0x80, 0xe9, 0x86, + 0xf9, 0x80, 0x89, 0x5f, 0xd6, 0x8b, 0x9a, 0xcd, 0x8e, 0xa5, 0x96, 0x1e, + 0x49, 0x98, 0x27, 0xba, 0x4a, 0x74, 0x32, 0xe3, 0xec, 0xe2, 0x7b, 0x03, + 0x23, 0xb2, 0xa0, 0xda, 0xda, 0xd6, 0x4b, 0x7f, 0x3a, 0x5d, 0xf7, 0xab, + 0x38, 0xdd, 0x7a, 0xcc, 0xc0, 0xe6, 0x1c, 0x36, 0x35, 0x81, 0xa7, 0x73, + 0x89, 0xd0, 0x7e, 0x0a, 0xb3, 0x6c, 0x0d, 0xaa, 0x09, 0x10, 0x01, 0x12, + 0x92, 0x9c, 0xfc, 0x9d, 0x1e, 0x07, 0x9b, 0x7f, 0x2a, 0xd6, 0xa0, 0x83, + 0xd4, 0x69, 0x02, 0x74, 0x7b, 0x46, 0xbd, 0xbd, 0xcb, 0x0e, 0xeb, 0x5d, + 0x65, 0x93, 0xfc, 0xa1, 0xf7, 0x4a, 0xda, 0xc5, 0x0e, 0x1d, 0x45, 0x8e, + 0xe4, 0x0b, 0x59, 0xa7, 0x94, 0xa4, 0xa7, 0xb3, 0x00, 0x1c, 0x4a, 0xf5, + 0xd6, 0x4c, 0x8f, 0x9a, 0x98, 0x69, 0xda, 0xc2, 0x0f, 0x7e, 0x3e, 0xf4, + 0xed, 0x68, 0x38, 0x62, 0x39, 0xd7, 0xf2, 0xa4, 0x1d, 0x0d, 0x6f, 0x68, + 0x22, 0x4a, 0x4a, 0x66, 0xe8, 0xb1, 0xa4, 0xbb, 0x43, 0xa4, 0x1f, 0x90, + 0x5c, 0x27, 0xd6, 0x16, 0xff, 0x00, 0x95, 0x72, 0x9d, 0xfc, 0xbf, 0xfb, + 0xe8, 0x5d, 0xe8, 0x2d, 0x0c, 0x9e, 0x47, 0x7f, 0xb9, 0x70, 0x5d, 0x7c, + 0x03, 0xd5, 0xb2, 0xfc, 0x9f, 0xff, 0x00, 0x7d, 0x09, 0x29, 0xcf, 0xc3, + 0x6b, 0xbd, 0x7b, 0x00, 0xe4, 0xb3, 0xf8, 0x85, 0x7b, 0xdf, 0xf6, 0x7d, + 0xdf, 0x9f, 0xbb, 0x95, 0x5b, 0x00, 0x7e, 0xb6, 0xff, 0x00, 0xea, 0x15, + 0xa5, 0xb4, 0xfa, 0x13, 0xb7, 0x59, 0xe1, 0x25, 0x37, 0x4b, 0x49, 0x6f, + 0x97, 0x8a, 0x85, 0x94, 0xb7, 0x6c, 0x93, 0xee, 0x07, 0x8f, 0xc1, 0x58, + 0x00, 0x48, 0x1f, 0x7a, 0x1b, 0xde, 0xd1, 0x0f, 0x22, 0x64, 0x11, 0xf8, + 0xa4, 0xa6, 0x35, 0x99, 0xaf, 0x4f, 0xdf, 0x21, 0x1b, 0x18, 0x45, 0x41, + 0xbe, 0x68, 0x35, 0x6d, 0x14, 0xb9, 0xc0, 0x68, 0xd7, 0x13, 0x3f, 0x72, + 0xb3, 0x8f, 0xab, 0x44, 0x6a, 0x39, 0x49, 0x48, 0x1d, 0x58, 0x87, 0xfc, + 0x90, 0x6e, 0x61, 0xfb, 0x2d, 0xdf, 0xbb, 0xb7, 0x5f, 0x9f, 0x0a, 0xdc, + 0x41, 0xb3, 0xe4, 0x81, 0x70, 0x77, 0xa3, 0x63, 0xa3, 0xda, 0x46, 0xd3, + 0xf3, 0x49, 0x4e, 0x6e, 0x2b, 0x7e, 0x8a, 0xb9, 0x7b, 0x06, 0xc1, 0x1c, + 0x4b, 0x4f, 0xde, 0xaa, 0x62, 0x88, 0x1a, 0xf6, 0x98, 0x57, 0xaf, 0x6f, + 0xb0, 0x02, 0x78, 0x00, 0xa4, 0xa6, 0x2d, 0x03, 0x60, 0x50, 0xda, 0x0e, + 0x5d, 0x31, 0xc9, 0x21, 0x1a, 0xb0, 0x3d, 0x21, 0xe1, 0xdd, 0x41, 0xad, + 0x03, 0x3a, 0x86, 0x8e, 0xee, 0x09, 0x29, 0x9e, 0x4b, 0x1a, 0x2c, 0x69, + 0x3a, 0x41, 0xd0, 0xac, 0xa7, 0x9f, 0xd7, 0xf2, 0x08, 0xe3, 0x7f, 0xf7, + 0x2e, 0x87, 0x32, 0xb6, 0x7a, 0x8d, 0x9e, 0x23, 0x85, 0x80, 0xe6, 0xfe, + 0xbd, 0x7c, 0x7f, 0xa4, 0x84, 0x94, 0xdb, 0x67, 0xd0, 0x00, 0x8f, 0xa4, + 0xf1, 0xf8, 0x0f, 0xf6, 0xa3, 0x55, 0x45, 0xb7, 0xd8, 0xda, 0x68, 0x61, + 0xb2, 0xce, 0x36, 0xb7, 0xf8, 0xa8, 0x55, 0x4d, 0xb6, 0x59, 0x4d, 0x55, + 0x8d, 0xcf, 0x7b, 0xf4, 0x1f, 0x70, 0x5d, 0xae, 0x0e, 0x05, 0x58, 0x58, + 0xc2, 0x9a, 0xe3, 0x71, 0xd6, 0xc7, 0xf7, 0x73, 0x8a, 0x4a, 0x79, 0x7c, + 0x7f, 0xa9, 0xb9, 0x77, 0x5c, 0x5d, 0x9a, 0xf6, 0xd3, 0x41, 0xd4, 0xb6, + 0xb3, 0xb9, 0xe7, 0xc8, 0x76, 0x0b, 0x46, 0xbc, 0x0c, 0x6e, 0x9c, 0xd7, + 0xd7, 0x4e, 0x23, 0x87, 0xa2, 0xdf, 0x65, 0x84, 0x87, 0x92, 0x40, 0x90, + 0x75, 0x33, 0xca, 0xdb, 0x6b, 0x88, 0x8d, 0x7c, 0xb5, 0xf1, 0x08, 0x19, + 0xed, 0x75, 0x98, 0xd6, 0xbd, 0x9f, 0x4c, 0x56, 0xf6, 0xfe, 0x05, 0x25, + 0x3c, 0x86, 0x13, 0xeb, 0xb4, 0x1f, 0x5d, 0xc4, 0xda, 0xf9, 0x71, 0x7f, + 0x8b, 0x8e, 0xba, 0xad, 0x02, 0xd2, 0xda, 0xd9, 0x16, 0x39, 0xcc, 0xb0, + 0x4b, 0x98, 0xc9, 0x60, 0x6f, 0xce, 0x75, 0x59, 0x38, 0x70, 0x36, 0xcf, + 0x81, 0xfc, 0x8a, 0xd6, 0x45, 0xae, 0xa7, 0xa7, 0xda, 0xf0, 0x40, 0x86, + 0x98, 0x91, 0x3a, 0xf2, 0x92, 0x9c, 0xfe, 0xb1, 0x40, 0xc7, 0xb0, 0x5c, + 0xc6, 0xb9, 0x8d, 0x76, 0x8f, 0x0e, 0x32, 0x5c, 0x7c, 0x65, 0x64, 0xbd, + 0xae, 0xb8, 0x9d, 0xfa, 0x4e, 0x80, 0x76, 0x5a, 0x43, 0x27, 0x6f, 0x4f, + 0x2d, 0xc8, 0xb8, 0x5d, 0x63, 0xfd, 0x8c, 0xa8, 0x81, 0x23, 0xf9, 0x41, + 0x02, 0x9a, 0x77, 0x90, 0xd8, 0xfb, 0x92, 0x53, 0xa1, 0xf5, 0x46, 0x8a, + 0xdd, 0x7e, 0x5e, 0x0d, 0xcd, 0x9a, 0xdc, 0xda, 0xed, 0xab, 0xc5, 0x8e, + 0x92, 0xd2, 0x5a, 0xba, 0x4c, 0xbe, 0x81, 0x87, 0xd4, 0x31, 0xdd, 0x4e, + 0x7b, 0x7f, 0x48, 0xc1, 0xfa, 0x1c, 0x96, 0x8f, 0xd2, 0x37, 0xca, 0x7b, + 0xfc, 0x0a, 0xc1, 0xe8, 0x81, 0xd4, 0xf5, 0x5a, 0x23, 0xfc, 0x23, 0x5c, + 0xcd, 0x7c, 0x86, 0xf1, 0xf9, 0x17, 0x66, 0xeb, 0xea, 0x90, 0xc2, 0x4b, + 0x9d, 0x3a, 0x00, 0x27, 0x5f, 0x3e, 0xc9, 0x29, 0xe4, 0xd9, 0xf5, 0x1f, + 0x27, 0x0f, 0x28, 0xdb, 0x89, 0x73, 0x6f, 0x68, 0x69, 0x1b, 0x5e, 0x3d, + 0x37, 0x49, 0xfb, 0xc2, 0x06, 0x40, 0xc9, 0xc3, 0xb4, 0xd7, 0x91, 0x51, + 0xa5, 0xf0, 0x47, 0xbb, 0xb8, 0x3d, 0xc7, 0x88, 0x5d, 0xdb, 0x09, 0x2d, + 0x73, 0x88, 0x82, 0x40, 0x31, 0xe0, 0xaa, 0xf5, 0x8e, 0x98, 0xce, 0xa7, + 0x81, 0x65, 0x11, 0xfa, 0x66, 0x89, 0xa5, 0xfd, 0xc3, 0x87, 0x6f, 0x81, + 0xe0, 0xa4, 0xa7, 0x89, 0x19, 0x2d, 0x6b, 0x25, 0xa3, 0x52, 0x44, 0x9f, + 0x25, 0x5b, 0x31, 0x9f, 0x6a, 0xbd, 0xae, 0xd0, 0xb4, 0x36, 0x3d, 0xdc, + 0xaa, 0xed, 0xba, 0xc6, 0xd9, 0xb4, 0x8e, 0x5d, 0x0e, 0x07, 0xb1, 0x1d, + 0x91, 0x6a, 0xea, 0x38, 0xad, 0xb0, 0x50, 0xe9, 0xf5, 0x4b, 0xa2, 0x03, + 0x49, 0x49, 0x4b, 0x0e, 0x9f, 0x51, 0x80, 0xe6, 0xb4, 0xcf, 0xc1, 0x26, + 0xf4, 0xec, 0x66, 0x98, 0x35, 0x07, 0x77, 0x82, 0x3f, 0xb9, 0x5a, 0xfb, + 0x55, 0x44, 0xed, 0x0d, 0x76, 0xef, 0x0d, 0xa6, 0x54, 0x5d, 0x99, 0x88, + 0xd7, 0x43, 0x9e, 0x03, 0x86, 0x8e, 0x06, 0x46, 0xbe, 0x7a, 0x24, 0xa6, + 0x75, 0xd2, 0xca, 0xa9, 0x2d, 0xaa, 0xaf, 0x4d, 0xa4, 0x3a, 0x79, 0xd7, + 0x4f, 0x35, 0x49, 0xb5, 0x1f, 0x4d, 0xc2, 0x64, 0x38, 0x92, 0x3c, 0x82, + 0xd2, 0x63, 0xdb, 0x60, 0x6f, 0xa4, 0xe0, 0xe6, 0xc3, 0xa6, 0x3b, 0x2a, + 0x75, 0x30, 0xfa, 0x6e, 0x07, 0x4d, 0xa4, 0x8f, 0xc5, 0x25, 0x39, 0x76, + 0xb0, 0x31, 0xda, 0x0e, 0xe3, 0xf2, 0xad, 0xac, 0x16, 0x1f, 0xb5, 0x8d, + 0x75, 0xf5, 0x59, 0xaf, 0xcd, 0x65, 0xe5, 0x32, 0x1e, 0x07, 0x6d, 0x0c, + 0xfc, 0xd6, 0xdd, 0x35, 0xfa, 0x79, 0x95, 0x6d, 0xfd, 0xe6, 0x93, 0xf7, + 0xa4, 0xa7, 0xa8, 0x04, 0x8c, 0x7a, 0xf5, 0xfd, 0xef, 0xca, 0x8a, 0x1b, + 0x35, 0x47, 0x98, 0x3a, 0x7c, 0x54, 0x1b, 0xfc, 0xd5, 0x22, 0x3b, 0x19, + 0xf9, 0x95, 0x2a, 0x60, 0xb6, 0xd0, 0x20, 0x96, 0xf0, 0x7c, 0xa5, 0x25, + 0x2d, 0x90, 0xf1, 0x55, 0x7f, 0x15, 0xc4, 0xf5, 0xb9, 0x77, 0x50, 0xbd, + 0xf1, 0xf4, 0x9c, 0x0f, 0xfd, 0x10, 0xbb, 0x7b, 0xa0, 0x83, 0x33, 0x3a, + 0xc4, 0x7c, 0xd7, 0x1b, 0xd5, 0xd9, 0xfa, 0xe5, 0xfa, 0x6a, 0x08, 0xff, + 0x00, 0xa9, 0x09, 0x29, 0xa3, 0xd3, 0x5b, 0xbb, 0x38, 0xb7, 0xc5, 0xa4, + 0xad, 0x9d, 0x9e, 0xdd, 0xb1, 0xdd, 0x64, 0xf4, 0xa0, 0x7f, 0x69, 0x8f, + 0x36, 0x39, 0x6f, 0xfa, 0x67, 0x8e, 0xe9, 0x29, 0x1b, 0x9f, 0x00, 0x99, + 0xe7, 0x40, 0x85, 0x2d, 0x73, 0x00, 0x98, 0x06, 0x63, 0xef, 0x52, 0x68, + 0x24, 0x35, 0xa7, 0x53, 0x1a, 0x91, 0xe2, 0xa1, 0x6d, 0x7b, 0x6b, 0x10, + 0x38, 0x0e, 0x49, 0x4c, 0x69, 0xb0, 0x36, 0x8b, 0x58, 0x79, 0x04, 0x88, + 0x3e, 0x48, 0xbd, 0x2a, 0xed, 0xf4, 0xea, 0x65, 0xc0, 0x41, 0xf9, 0x15, + 0x92, 0xeb, 0x1e, 0x6c, 0x76, 0xb0, 0x0b, 0x8a, 0xb3, 0xd2, 0xdf, 0xe9, + 0xe5, 0x10, 0x0c, 0xb5, 0xed, 0xd7, 0xfb, 0xd2, 0x53, 0xa7, 0x69, 0xda, + 0x1c, 0x46, 0x93, 0x1f, 0xc5, 0x09, 0xef, 0x6b, 0xf0, 0xee, 0x67, 0xe7, + 0x1f, 0x7f, 0xc9, 0xb0, 0x3f, 0x8a, 0x9e, 0x4f, 0x0e, 0x23, 0xc3, 0x85, + 0x4a, 0xc7, 0x6d, 0x63, 0xff, 0x00, 0x95, 0x5b, 0xbf, 0x02, 0x92, 0x90, + 0x55, 0x21, 0xa4, 0x8e, 0x00, 0x28, 0xf6, 0x3d, 0xcf, 0x68, 0x71, 0xf0, + 0x40, 0xc7, 0x20, 0xd4, 0xf8, 0xe6, 0x38, 0x47, 0x70, 0x86, 0xed, 0x27, + 0x50, 0xd6, 0x90, 0x92, 0x99, 0x35, 0xe0, 0x56, 0x24, 0xfc, 0x65, 0x26, + 0x1f, 0xd7, 0x68, 0x77, 0xf2, 0x81, 0x4c, 0xd6, 0xb1, 0xe1, 0x8c, 0xb5, + 0xa0, 0xd6, 0xe3, 0x0f, 0x07, 0xc0, 0x98, 0x55, 0xb1, 0xaa, 0x34, 0x75, + 0x0f, 0x40, 0xbb, 0xd8, 0xcb, 0x20, 0x49, 0xe2, 0x12, 0x53, 0xb9, 0x69, + 0x0f, 0x2e, 0x79, 0x3f, 0x43, 0x8f, 0x99, 0x58, 0x0e, 0xfe, 0x99, 0x7f, + 0xf5, 0xce, 0xab, 0x53, 0x22, 0xc7, 0xb6, 0xbb, 0x00, 0x9f, 0x76, 0x87, + 0xe4, 0x25, 0x64, 0xd5, 0x06, 0xe7, 0x9f, 0x17, 0x12, 0x92, 0x9d, 0xef, + 0xab, 0x8d, 0x0f, 0xea, 0x5e, 0xa3, 0x86, 0x95, 0xd6, 0x40, 0xf2, 0x2e, + 0x3f, 0xed, 0x5d, 0x60, 0x71, 0x6f, 0x3c, 0x78, 0xf8, 0x2e, 0x5f, 0xea, + 0xdb, 0x00, 0x37, 0xbc, 0x73, 0x2d, 0x1f, 0x70, 0x5d, 0x2b, 0x5e, 0x1e, + 0xdf, 0x1f, 0x14, 0x94, 0xb1, 0x1e, 0xf7, 0x37, 0xcc, 0x39, 0xbe, 0x68, + 0x37, 0x3c, 0x37, 0x1a, 0xf7, 0x38, 0xe8, 0xd6, 0x38, 0x13, 0xf2, 0xd1, + 0x1d, 0xdd, 0x88, 0xd1, 0xcd, 0xe2, 0x56, 0x4f, 0x5f, 0xbb, 0xec, 0xfd, + 0x3e, 0xf6, 0xb7, 0x4f, 0x59, 0xa1, 0xa3, 0xe2, 0x4c, 0x14, 0x94, 0xf3, + 0x7d, 0x3e, 0xbf, 0x50, 0x69, 0xd8, 0x05, 0x6b, 0x23, 0x0c, 0xe6, 0x32, + 0xcc, 0x42, 0xe3, 0x5b, 0x5d, 0x59, 0xfd, 0x20, 0x1a, 0x35, 0xc7, 0xe8, + 0xee, 0xf2, 0x9e, 0x55, 0x7c, 0x1b, 0x1d, 0x45, 0x5a, 0x05, 0xbb, 0xd1, + 0x9a, 0xd7, 0xb2, 0xc3, 0x60, 0x91, 0x69, 0x2d, 0x83, 0xdc, 0x34, 0x0d, + 0x3f, 0x14, 0x94, 0xf1, 0xd5, 0xe0, 0x91, 0x38, 0xf9, 0x6c, 0x2d, 0xb6, + 0xb3, 0xc1, 0xe5, 0xae, 0x0a, 0xe5, 0x6d, 0x86, 0x10, 0xd8, 0xf3, 0x2b, + 0x67, 0xad, 0xf4, 0xd7, 0x82, 0x2f, 0x66, 0xaf, 0xac, 0x43, 0x8f, 0x77, + 0x56, 0x38, 0x71, 0xf3, 0x6f, 0x07, 0xc9, 0x63, 0x93, 0xb1, 0x85, 0xc4, + 0xe8, 0x35, 0x49, 0x4d, 0xff, 0x00, 0xab, 0x98, 0x26, 0xdc, 0xb6, 0xda, + 0xe2, 0x5d, 0x56, 0x13, 0x4c, 0x39, 0xdd, 0xec, 0x78, 0x81, 0xf7, 0x09, + 0x5d, 0x81, 0x6b, 0x36, 0x0d, 0xa2, 0x16, 0x47, 0xd5, 0xdc, 0x67, 0x63, + 0x74, 0x7c, 0x7f, 0x53, 0xf9, 0xeb, 0xc7, 0xad, 0x61, 0xf3, 0x7e, 0xa0, + 0x7c, 0x9b, 0x0b, 0x55, 0x8f, 0x06, 0x5a, 0x74, 0x0d, 0xf6, 0xea, 0x92, + 0x99, 0x49, 0xda, 0x4c, 0xf6, 0x82, 0x8b, 0xbc, 0xb6, 0xb9, 0xe0, 0x93, + 0xa7, 0xcc, 0xa0, 0x13, 0x0d, 0x27, 0xf3, 0x63, 0x5f, 0x92, 0x42, 0xcf, + 0x51, 0xc0, 0x76, 0x68, 0xdd, 0xf3, 0x49, 0x4f, 0x27, 0xf5, 0xb3, 0xa7, + 0x32, 0x8c, 0xaa, 0xf3, 0xeb, 0x00, 0x33, 0x20, 0x1d, 0xe0, 0x7f, 0xa4, + 0x6f, 0x7f, 0x98, 0x5c, 0xc3, 0x7f, 0xa7, 0xe3, 0xb8, 0x77, 0x78, 0x5d, + 0xd7, 0xd6, 0xca, 0x85, 0x9d, 0x15, 0x8f, 0xfc, 0xea, 0xec, 0x07, 0xe4, + 0xef, 0x63, 0xbf, 0x2a, 0xe1, 0x5c, 0x36, 0xe7, 0xe3, 0x8e, 0x3f, 0x48, + 0x3f, 0x2a, 0x4a, 0x76, 0x28, 0x93, 0x93, 0x33, 0xc2, 0xad, 0xd4, 0x9e, + 0xd6, 0x3d, 0xf0, 0x01, 0x25, 0xd2, 0x67, 0xba, 0xb3, 0x8e, 0x26, 0xe7, + 0x90, 0x74, 0x0e, 0x8f, 0xb9, 0x51, 0xea, 0x8c, 0x3e, 0xa9, 0x77, 0x00, + 0x92, 0x92, 0x9b, 0x78, 0x59, 0xcd, 0xb2, 0xdd, 0x81, 0xa1, 0xb3, 0x04, + 0x7c, 0x0c, 0x23, 0xdb, 0x53, 0x6b, 0xdc, 0x00, 0x26, 0x5c, 0x5d, 0x3f, + 0xd6, 0x2b, 0x17, 0x0d, 0xbb, 0xad, 0x68, 0x76, 0xa0, 0x1d, 0x63, 0x98, + 0x2b, 0x76, 0xca, 0x9c, 0xd0, 0x1a, 0x4c, 0x90, 0x22, 0x7c, 0x63, 0xbf, + 0xdc, 0x92, 0x9c, 0x6c, 0xa6, 0x92, 0xe0, 0x07, 0x77, 0x0f, 0xca, 0xb7, + 0x05, 0xd5, 0xbf, 0xa8, 0x56, 0xd6, 0x9f, 0xa2, 0xf0, 0xd2, 0xb2, 0xb2, + 0x9b, 0x06, 0x7f, 0x74, 0x8f, 0xca, 0xaf, 0xe1, 0x56, 0x06, 0x65, 0x56, + 0x4c, 0x97, 0x38, 0x12, 0x3c, 0xe7, 0xfd, 0xa9, 0x29, 0xea, 0x89, 0xfd, + 0x0d, 0x5d, 0xb4, 0x3f, 0x95, 0x3d, 0x51, 0x2f, 0xf3, 0x1c, 0x28, 0xc8, + 0x15, 0x55, 0xf0, 0x3f, 0x95, 0x3d, 0x5f, 0x48, 0x80, 0x22, 0x5a, 0x52, + 0x52, 0x6b, 0x08, 0x76, 0xa3, 0x4f, 0x35, 0xc7, 0x75, 0x7f, 0x6e, 0x6e, + 0x40, 0x76, 0xa4, 0x11, 0xff, 0x00, 0x52, 0x17, 0x62, 0x07, 0xb4, 0x77, + 0x91, 0xc2, 0xe3, 0xba, 0xec, 0x8e, 0xa5, 0x90, 0x3f, 0xab, 0xff, 0x00, + 0x52, 0xd4, 0x94, 0xd0, 0xe9, 0x24, 0x7e, 0xd5, 0x61, 0xfe, 0x4b, 0xbf, + 0x22, 0xe8, 0xb7, 0x69, 0x3d, 0xa5, 0x73, 0x9d, 0x38, 0x47, 0x53, 0xaf, + 0xfa, 0xae, 0xfc, 0x8b, 0x77, 0x77, 0xb2, 0x3b, 0xff, 0x00, 0xb1, 0x25, + 0x33, 0xda, 0x08, 0x3f, 0x95, 0x33, 0x86, 0x9e, 0xfe, 0x48, 0x81, 0x3e, + 0x6a, 0x43, 0xdc, 0x08, 0xf1, 0x98, 0x43, 0x70, 0x2e, 0xf6, 0xc4, 0x41, + 0x09, 0x29, 0xe7, 0xf2, 0x9f, 0xee, 0xb0, 0x8d, 0x36, 0x3c, 0xfe, 0x58, + 0x50, 0xc5, 0xce, 0xb6, 0x8b, 0x03, 0xb6, 0xf9, 0xfc, 0x91, 0x5f, 0x59, + 0x36, 0xdf, 0x5b, 0x86, 0x8e, 0x73, 0x8c, 0xf6, 0x99, 0x41, 0xb4, 0xd4, + 0x5c, 0x41, 0x06, 0x00, 0xd0, 0x77, 0x90, 0x92, 0x9e, 0x80, 0xdc, 0xcb, + 0xaa, 0x16, 0x34, 0xc8, 0x73, 0x41, 0x0a, 0xb5, 0x80, 0xfa, 0x6f, 0x71, + 0x1a, 0x6c, 0x70, 0xfc, 0x42, 0x86, 0x08, 0xdb, 0x4b, 0xd8, 0x4f, 0x11, + 0x1e, 0x52, 0x25, 0x19, 0xc7, 0xf5, 0x4b, 0x41, 0xfd, 0xef, 0xca, 0x12, + 0x53, 0x5f, 0x09, 0x92, 0xd7, 0x01, 0xa1, 0x23, 0x55, 0x62, 0xe6, 0x6d, + 0xf7, 0xf3, 0x02, 0x15, 0x6c, 0x5d, 0xcd, 0x69, 0x3e, 0x5f, 0xdc, 0xac, + 0xdd, 0xb8, 0xb0, 0x0e, 0xc6, 0x25, 0x25, 0x30, 0x0e, 0x06, 0x98, 0x3e, + 0x1f, 0xc6, 0x55, 0x5e, 0xb3, 0x59, 0xf5, 0x1e, 0xf1, 0xf9, 0xec, 0x6b, + 0xc1, 0xf9, 0x05, 0x77, 0xd3, 0x69, 0xac, 0x7f, 0x54, 0xa0, 0xf5, 0x00, + 0xd7, 0xd5, 0x8e, 0x5d, 0xc3, 0x99, 0xb1, 0xc7, 0xe0, 0x7f, 0xda, 0x92, + 0x9c, 0xda, 0xb2, 0x2e, 0x6b, 0x44, 0x3c, 0xc7, 0x71, 0x28, 0xb5, 0x5b, + 0x0e, 0x73, 0xb4, 0x74, 0xea, 0x55, 0xb7, 0x74, 0x76, 0x32, 0xb0, 0x5a, + 0xfd, 0xd3, 0x31, 0xc8, 0x30, 0x04, 0xf9, 0xaa, 0x6d, 0xa9, 0xbb, 0x9c, + 0x1a, 0x1c, 0x08, 0xe6, 0x60, 0xff, 0x00, 0x10, 0x92, 0x9e, 0x93, 0xea, + 0xcd, 0xdb, 0xdb, 0x71, 0x88, 0x01, 0xcd, 0x3f, 0x7c, 0xae, 0x91, 0xa0, + 0x03, 0xaf, 0x1d, 0x88, 0x5c, 0xbf, 0xd5, 0x79, 0x65, 0x97, 0xd4, 0xe0, + 0x64, 0x86, 0xbb, 0x8e, 0xc0, 0x96, 0xae, 0xa2, 0xb9, 0x02, 0x0e, 0xa3, + 0xb2, 0x4a, 0x49, 0xdb, 0x5d, 0x42, 0xe6, 0x7e, 0xb5, 0xd8, 0x0b, 0xb1, + 0xf1, 0xdb, 0xf4, 0x9e, 0x4b, 0xdc, 0x7c, 0x9b, 0xed, 0x5d, 0x46, 0x80, + 0x1f, 0x25, 0xc5, 0xf5, 0x8b, 0xfe, 0xd7, 0xd6, 0xac, 0x0d, 0xd5, 0x94, + 0x01, 0x5c, 0xf9, 0x8d, 0x5d, 0xf8, 0xa4, 0xa4, 0x55, 0xb2, 0x04, 0x79, + 0x2e, 0x8b, 0xa0, 0xb1, 0xae, 0xe9, 0x8f, 0xdd, 0xac, 0x5a, 0xe2, 0x3c, + 0xb4, 0x6a, 0xc1, 0x8d, 0x7c, 0x16, 0xcf, 0x43, 0xca, 0xae, 0xac, 0x3b, + 0x18, 0xf7, 0x00, 0x7d, 0x42, 0x40, 0xf8, 0x80, 0x92, 0x9b, 0x79, 0x24, + 0x35, 0xb0, 0xff, 0x00, 0x75, 0x7e, 0x3c, 0xc4, 0xfe, 0x50, 0xb9, 0x2c, + 0xee, 0x9d, 0x91, 0xf6, 0xd1, 0x8f, 0x53, 0x4b, 0xb1, 0x6d, 0x73, 0x08, + 0xb0, 0x7d, 0x10, 0xc7, 0x38, 0x02, 0x27, 0xc9, 0x75, 0x4f, 0xc9, 0xad, + 0xc4, 0xb1, 0x9e, 0xe6, 0x9f, 0xcd, 0xe2, 0x3c, 0x95, 0x5b, 0xb1, 0x1e, + 0xdd, 0xbb, 0x6d, 0xda, 0xd6, 0xbc, 0x58, 0x5b, 0x12, 0x60, 0x19, 0xda, + 0x3e, 0x29, 0x29, 0xd1, 0xfa, 0x44, 0x35, 0xa7, 0x65, 0x6c, 0xd0, 0x01, + 0xe0, 0x14, 0xcb, 0xab, 0x0c, 0x21, 0xd0, 0x1a, 0x35, 0x92, 0xaa, 0xd4, + 0xf6, 0x44, 0x6e, 0x98, 0xe4, 0x95, 0x2d, 0xed, 0x9f, 0x16, 0x77, 0xee, + 0x12, 0x53, 0x77, 0x96, 0x90, 0x38, 0x20, 0xa1, 0x62, 0x02, 0x29, 0x05, + 0xda, 0x39, 0xc0, 0x13, 0xf2, 0xd0, 0x28, 0xe3, 0x65, 0x57, 0x79, 0x22, + 0xb9, 0xf6, 0xf2, 0x08, 0x84, 0x4a, 0x5c, 0x0c, 0x01, 0xf4, 0x5a, 0x12, + 0x53, 0x5b, 0xad, 0x62, 0x3b, 0x37, 0xa6, 0xe4, 0x63, 0x33, 0xe9, 0x06, + 0x07, 0x30, 0x78, 0xb9, 0xa7, 0x7c, 0x7e, 0x0b, 0xce, 0x2e, 0x71, 0x3d, + 0x42, 0x83, 0xe0, 0xf6, 0xaf, 0x57, 0xac, 0x72, 0x7b, 0x93, 0x25, 0x79, + 0xa7, 0xd6, 0x0c, 0x13, 0x85, 0xf5, 0x91, 0xf5, 0x37, 0x46, 0x3a, 0xc6, + 0xd9, 0x57, 0xf5, 0x6c, 0xf7, 0x47, 0xc8, 0xe8, 0x92, 0x9b, 0xb8, 0x84, + 0x00, 0x4f, 0x89, 0x24, 0xfe, 0x28, 0x59, 0x80, 0x58, 0xe7, 0xc8, 0x27, + 0x6b, 0xb5, 0xfb, 0x91, 0xb1, 0xe3, 0x60, 0xed, 0xa9, 0x9f, 0xb9, 0x3b, + 0xc4, 0xbd, 0xc0, 0x76, 0x70, 0x27, 0xe7, 0x01, 0x25, 0x39, 0xfd, 0x3a, + 0x90, 0xcb, 0xb7, 0x11, 0x33, 0x2b, 0x5d, 0xff, 0x00, 0x44, 0x13, 0xf4, + 0x88, 0x93, 0xf3, 0x42, 0xc6, 0x60, 0x63, 0x1a, 0xd2, 0xd9, 0x7b, 0xbd, + 0xad, 0xf8, 0x9f, 0x6a, 0xb3, 0x63, 0x3d, 0xef, 0x8f, 0xa2, 0xd8, 0x1f, + 0x77, 0xfb, 0x92, 0x53, 0x97, 0x9a, 0xd6, 0xee, 0xe7, 0x49, 0xd4, 0x2b, + 0x98, 0x95, 0x9a, 0xb3, 0xab, 0x24, 0xe9, 0x6c, 0x58, 0xdf, 0x2e, 0x74, + 0x55, 0x73, 0x87, 0xbf, 0x67, 0xef, 0x77, 0x56, 0xf1, 0xd8, 0xf1, 0x9b, + 0x59, 0x78, 0x80, 0xe7, 0x82, 0xcf, 0x81, 0xd3, 0xf8, 0x24, 0xa7, 0xa5, + 0x71, 0x69, 0xa2, 0xbe, 0xf0, 0x0f, 0xe5, 0x4f, 0x53, 0xeb, 0x0e, 0x0e, + 0x1e, 0x04, 0x14, 0x8b, 0x40, 0xc7, 0xa8, 0x77, 0x33, 0xc2, 0x7a, 0x40, + 0x36, 0x36, 0x39, 0x03, 0x9e, 0xe9, 0x29, 0x21, 0x32, 0xd6, 0x91, 0xcc, + 0x69, 0xf8, 0x2e, 0x4b, 0xaf, 0x09, 0xea, 0x59, 0x07, 0xbc, 0xb7, 0xfe, + 0xa5, 0xab, 0xad, 0x0e, 0x21, 0xac, 0x9d, 0x07, 0xfb, 0x97, 0x29, 0xd7, + 0xa3, 0xf6, 0x95, 0xff, 0x00, 0xd9, 0xd7, 0xfb, 0x21, 0x25, 0x39, 0x98, + 0x53, 0xf6, 0xf6, 0x3b, 0xc8, 0xad, 0xa8, 0xf6, 0x79, 0xff, 0x00, 0xb1, + 0x62, 0xe1, 0x7f, 0x4d, 0x6f, 0xdc, 0xb7, 0x3f, 0x32, 0x12, 0x53, 0x21, + 0xc4, 0xf7, 0x12, 0xa1, 0x2e, 0x69, 0x6c, 0xf2, 0x35, 0x3f, 0x05, 0x27, + 0x12, 0x2b, 0xf0, 0x80, 0x87, 0x6b, 0x9c, 0x76, 0xc9, 0xd0, 0x98, 0x29, + 0x29, 0xab, 0x93, 0x8c, 0x5d, 0x56, 0xf6, 0xf0, 0x1c, 0x66, 0x3c, 0x09, + 0x54, 0xbf, 0x67, 0x5f, 0x6b, 0x83, 0x80, 0x86, 0xfd, 0xeb, 0x75, 0x8c, + 0x6b, 0xb1, 0x86, 0x92, 0x0e, 0xa8, 0x95, 0x52, 0xd1, 0x5c, 0x8e, 0x40, + 0x94, 0x94, 0xe6, 0xd7, 0x8d, 0xe9, 0x31, 0xad, 0x92, 0x4e, 0xe0, 0x4f, + 0xdc, 0x50, 0x6c, 0xfc, 0x08, 0xd4, 0x79, 0xad, 0x1b, 0x41, 0x9d, 0x74, + 0xd4, 0x7e, 0x45, 0x50, 0x34, 0x07, 0x99, 0xd7, 0x70, 0x80, 0x92, 0x98, + 0xe3, 0x8e, 0xdc, 0x05, 0x66, 0xe6, 0xe9, 0x20, 0x69, 0xa0, 0x42, 0xa9, + 0x84, 0x47, 0x99, 0x84, 0x7b, 0x24, 0xdb, 0xb7, 0xb4, 0x71, 0xf0, 0x49, + 0x48, 0xa0, 0xfa, 0x62, 0x3c, 0x15, 0x6c, 0xe6, 0xce, 0x33, 0x47, 0x76, + 0x38, 0x8f, 0xbc, 0x7f, 0xb1, 0x5e, 0x2d, 0xda, 0xd0, 0x15, 0x5c, 0xad, + 0x1b, 0x63, 0x63, 0x82, 0xd7, 0x1f, 0x9e, 0x89, 0x29, 0xb5, 0x59, 0x16, + 0x62, 0x54, 0xe8, 0xe4, 0x73, 0xf2, 0x59, 0x4c, 0x11, 0x63, 0x87, 0x99, + 0x93, 0xf3, 0x56, 0xf1, 0x7a, 0x96, 0x23, 0x31, 0x1b, 0x8e, 0xfb, 0x36, + 0xda, 0xc9, 0x04, 0x10, 0x7c, 0x74, 0xd6, 0x3c, 0x15, 0x26, 0xdb, 0x5f, + 0xaa, 0xf3, 0x30, 0xd2, 0x49, 0x1d, 0xbe, 0x09, 0x29, 0xdf, 0xfa, 0xb6, + 0x37, 0x66, 0x59, 0xff, 0x00, 0x12, 0x3f, 0x17, 0x4a, 0xe9, 0xaa, 0x1d, + 0x97, 0x35, 0xf5, 0x72, 0xc6, 0x0c, 0xf7, 0x37, 0x73, 0x76, 0xba, 0xbd, + 0xad, 0xd7, 0x9d, 0xb1, 0xc2, 0xea, 0x98, 0xd0, 0x75, 0x6e, 0xbe, 0x49, + 0x29, 0xa9, 0xd5, 0xf3, 0x46, 0x06, 0x05, 0x97, 0xfe, 0x7c, 0x6d, 0xa8, + 0x78, 0xbd, 0xda, 0x37, 0xfb, 0xd7, 0x13, 0x8a, 0xd3, 0xea, 0x17, 0xb8, + 0xcb, 0x8e, 0xa4, 0xf7, 0x25, 0x5f, 0xeb, 0x7d, 0x49, 0x9d, 0x43, 0x30, + 0x32, 0x97, 0xef, 0xc6, 0xc7, 0x90, 0x1d, 0xf9, 0xae, 0xb2, 0x61, 0xce, + 0x6f, 0x90, 0xe0, 0x15, 0x4e, 0xbd, 0x35, 0xf1, 0x49, 0x4d, 0x91, 0xa9, + 0x2a, 0xe7, 0x4c, 0xa9, 0xef, 0xf5, 0x36, 0x89, 0x01, 0xdc, 0xfc, 0x95, + 0x16, 0x92, 0x01, 0x57, 0x7a, 0x35, 0xaf, 0x66, 0x4b, 0xf5, 0xf6, 0x38, + 0x00, 0x47, 0x9a, 0x4a, 0x74, 0x1d, 0x8f, 0x5b, 0x4d, 0x64, 0xb4, 0x6a, + 0x4e, 0xe3, 0xf0, 0x08, 0x55, 0xd2, 0x24, 0xb9, 0xfe, 0xe6, 0xb8, 0xf3, + 0xdd, 0xbf, 0x05, 0x67, 0x21, 0xf1, 0xb5, 0xdf, 0x1f, 0xc5, 0x47, 0x11, + 0x85, 0xed, 0x70, 0xf0, 0x3a, 0x24, 0xa4, 0x66, 0xbb, 0x1a, 0x0c, 0x19, + 0x1d, 0x8f, 0x2a, 0x17, 0xd8, 0x69, 0xa5, 0xee, 0x7d, 0x87, 0xd8, 0x24, + 0x91, 0xe3, 0xd8, 0x2b, 0x36, 0x34, 0xb4, 0xed, 0x6c, 0xc3, 0xbb, 0xfc, + 0x16, 0x67, 0x51, 0x77, 0xb7, 0x60, 0x1e, 0x70, 0x7c, 0x92, 0x52, 0xfd, + 0x0a, 0xf2, 0xec, 0xbb, 0x1d, 0xbe, 0x03, 0xc9, 0x8a, 0xe7, 0x57, 0x11, + 0xc9, 0x5b, 0x74, 0x11, 0xb0, 0x01, 0xa4, 0xfd, 0xfa, 0xae, 0x57, 0x0c, + 0xd9, 0x45, 0x95, 0xd9, 0x58, 0x01, 0xcc, 0x71, 0x76, 0xe3, 0xdc, 0x1e, + 0x42, 0xe8, 0x70, 0xae, 0x04, 0x97, 0x3d, 0xc2, 0x5c, 0x4c, 0x49, 0xf1, + 0x29, 0x29, 0xd6, 0xac, 0x2e, 0x3f, 0xeb, 0xbd, 0x00, 0x75, 0x5e, 0x9b, + 0x78, 0x1a, 0xd9, 0xec, 0x27, 0xcd, 0x8e, 0x91, 0xff, 0x00, 0x54, 0xba, + 0xf6, 0x38, 0x80, 0x27, 0x45, 0xcb, 0x7d, 0x78, 0x6b, 0x9d, 0x67, 0x49, + 0x78, 0xd5, 0xa2, 0xe7, 0x82, 0x7c, 0xce, 0xd2, 0x07, 0xe0, 0x92, 0x9c, + 0xda, 0x18, 0x43, 0x4f, 0xc4, 0xfe, 0x44, 0xf7, 0x0d, 0xb6, 0x3b, 0xe4, + 0x53, 0xd4, 0xe8, 0x63, 0xbc, 0x49, 0x3f, 0x72, 0x8e, 0x53, 0xa5, 0xfa, + 0x1e, 0xc2, 0x12, 0x53, 0x76, 0x86, 0x56, 0x3d, 0xef, 0xfa, 0x4c, 0xf7, + 0x37, 0xe6, 0x94, 0x12, 0x5d, 0x3c, 0xcc, 0x28, 0x35, 0xb6, 0x59, 0xb0, + 0xb0, 0x7b, 0x49, 0x2d, 0x79, 0xf0, 0x83, 0x28, 0xcf, 0xd4, 0xf3, 0xc9, + 0x27, 0xf1, 0x49, 0x4e, 0x4e, 0x7e, 0x96, 0xb7, 0xcb, 0x5f, 0xc8, 0xad, + 0x57, 0x2f, 0xcc, 0xa8, 0x83, 0xa3, 0x5e, 0xdf, 0xc1, 0xba, 0xaa, 0x99, + 0xdf, 0xce, 0x1d, 0x66, 0x00, 0xfc, 0xa1, 0x5b, 0xc6, 0x83, 0x95, 0x5f, + 0x9d, 0x93, 0xf7, 0x24, 0xa7, 0xa5, 0x7b, 0x67, 0x1a, 0xa7, 0x01, 0xac, + 0x4c, 0x26, 0xa4, 0xcd, 0x9a, 0xe9, 0xa6, 0xa8, 0x8d, 0xf7, 0xd0, 0xc0, + 0x39, 0x0d, 0x3f, 0x91, 0x46, 0xa6, 0xc1, 0x74, 0xf2, 0x06, 0x9f, 0x39, + 0x49, 0x4c, 0xab, 0x73, 0x9c, 0x3d, 0xec, 0xdb, 0x07, 0x4f, 0x3e, 0x17, + 0x2b, 0xd7, 0x34, 0xcf, 0xc8, 0x1d, 0xc3, 0x9b, 0xff, 0x00, 0x52, 0x17, + 0x58, 0x1a, 0x63, 0x43, 0x3c, 0x68, 0x7e, 0x4b, 0x91, 0xeb, 0xa1, 0xcd, + 0xcf, 0xc8, 0x1d, 0xf7, 0x37, 0x5f, 0xec, 0x84, 0x94, 0xd0, 0xc2, 0x3f, + 0xac, 0xb5, 0xc3, 0x59, 0x2b, 0x66, 0x04, 0x73, 0xdb, 0xf8, 0xac, 0x4c, + 0x0f, 0xe7, 0x5b, 0xe3, 0x21, 0x6c, 0x4f, 0x7f, 0x97, 0xe2, 0x92, 0x93, + 0x81, 0x2c, 0x83, 0xca, 0x19, 0x6c, 0xb7, 0x51, 0xa0, 0x33, 0x28, 0x80, + 0xb6, 0x48, 0xf1, 0x88, 0x50, 0xb4, 0xb1, 0xe4, 0x82, 0x74, 0x6e, 0x80, + 0x79, 0xa4, 0xa4, 0xb5, 0x00, 0x31, 0x84, 0x6b, 0xed, 0x47, 0xa8, 0x0d, + 0x91, 0xd8, 0x00, 0x81, 0x41, 0x27, 0x1d, 0xbd, 0x8e, 0xd8, 0xfc, 0x11, + 0x6a, 0x71, 0xdb, 0xaf, 0x3a, 0x24, 0xa4, 0x17, 0x89, 0x74, 0x0e, 0x34, + 0x54, 0x9e, 0x61, 0xcd, 0xd2, 0x62, 0x65, 0x5d, 0xbb, 0xe9, 0x3b, 0xe4, + 0xa8, 0xbe, 0x77, 0x40, 0xe0, 0xc8, 0x29, 0x29, 0x2f, 0xbb, 0x73, 0x74, + 0xd1, 0x4d, 0xcd, 0x8b, 0xbc, 0x22, 0x35, 0x44, 0x60, 0x25, 0x82, 0x34, + 0xf3, 0x4c, 0xff, 0x00, 0xe7, 0x5d, 0x22, 0x49, 0x1a, 0x14, 0x94, 0xbb, + 0xa0, 0x35, 0xa4, 0x2a, 0x59, 0xc4, 0x91, 0x60, 0x1d, 0xda, 0x09, 0xf9, + 0x15, 0x68, 0xb8, 0x96, 0x34, 0x77, 0x54, 0x6f, 0x76, 0xe7, 0xbc, 0x78, + 0xb4, 0x8f, 0xb8, 0x24, 0xa7, 0x21, 0xe2, 0xd3, 0x73, 0x8d, 0x75, 0xb9, + 0xdc, 0x12, 0x5a, 0xd2, 0x7f, 0x22, 0xb7, 0xd3, 0x6a, 0xc8, 0xcd, 0xc9, + 0x18, 0xe1, 0xdb, 0x00, 0x05, 0xd6, 0x12, 0xdd, 0x43, 0x47, 0xc4, 0x29, + 0xf4, 0xa2, 0x0d, 0xef, 0x0e, 0x24, 0x1e, 0xf0, 0xb7, 0xf0, 0x30, 0x9d, + 0x53, 0x2d, 0xb8, 0x82, 0x5d, 0x90, 0xe8, 0x68, 0xfe, 0x48, 0xe1, 0x25, + 0x32, 0xc7, 0xc5, 0xab, 0x01, 0xad, 0xb1, 0x84, 0x39, 0xcd, 0x74, 0xc9, + 0xe7, 0xe0, 0x15, 0x3e, 0xb9, 0xf5, 0x9e, 0xec, 0x9b, 0xdf, 0xd2, 0xb0, + 0x83, 0xa8, 0xc6, 0x04, 0xb2, 0xec, 0x81, 0xa3, 0xad, 0xf1, 0x6b, 0x0f, + 0x66, 0xf9, 0xf7, 0x57, 0x9f, 0x83, 0x65, 0xa3, 0x69, 0x02, 0x49, 0x04, + 0x89, 0x8d, 0xcd, 0xd6, 0x42, 0xa3, 0x9d, 0xd2, 0xee, 0xb1, 0xa4, 0x32, + 0xa7, 0x02, 0x0c, 0xb1, 0xd1, 0x30, 0x47, 0xc1, 0x25, 0x39, 0xb4, 0x06, + 0xb2, 0xb6, 0xb4, 0x08, 0x00, 0x40, 0x1f, 0x05, 0x61, 0xae, 0x11, 0xaa, + 0xcd, 0xf5, 0xed, 0xaa, 0xff, 0x00, 0x46, 0xfa, 0xdd, 0x53, 0xc7, 0x21, + 0xe0, 0xb7, 0xf2, 0xa3, 0xdb, 0x93, 0x58, 0x10, 0x0f, 0xc4, 0xa4, 0xa6, + 0xf6, 0xf0, 0x19, 0xca, 0xb1, 0xd3, 0xb2, 0x6a, 0x63, 0x5e, 0xf2, 0x49, + 0x76, 0xed, 0xa1, 0x8d, 0x12, 0xe2, 0x7c, 0x82, 0xc5, 0x6d, 0xee, 0xb1, + 0xc1, 0x8c, 0x32, 0x5d, 0xa0, 0x5a, 0x18, 0xc7, 0xa8, 0xd4, 0xdf, 0xd1, + 0x0a, 0xe4, 0x79, 0x6a, 0x7e, 0x25, 0x25, 0x3d, 0x0e, 0x3d, 0x79, 0x99, + 0x4f, 0xdf, 0x78, 0x14, 0x51, 0xfb, 0x93, 0x2f, 0x3f, 0x1e, 0xc1, 0x69, + 0x57, 0x5d, 0x40, 0x45, 0x66, 0x7c, 0x63, 0x85, 0xc9, 0x7e, 0xd9, 0xcf, + 0xad, 0xed, 0x66, 0x48, 0x63, 0x5a, 0x79, 0x20, 0x3a, 0x47, 0xca, 0x78, + 0xf8, 0x2d, 0x36, 0xf5, 0x8c, 0x0c, 0x4d, 0xb7, 0x5f, 0x9b, 0x5d, 0x65, + 0xe2, 0x5a, 0xc9, 0xfa, 0x43, 0xe0, 0x92, 0x9d, 0x8b, 0x9b, 0x0c, 0x71, + 0xef, 0xc8, 0xf9, 0x2c, 0x3b, 0xdb, 0xea, 0x38, 0xd8, 0x4e, 0xad, 0x71, + 0x8f, 0x98, 0x85, 0x71, 0xdd, 0x6b, 0xa7, 0xe4, 0x33, 0xf4, 0x19, 0x35, + 0xd8, 0xd7, 0x73, 0xb5, 0xc0, 0x91, 0xf1, 0x59, 0x19, 0x3d, 0x4a, 0xba, + 0xc6, 0xca, 0xc7, 0xaa, 0x5a, 0x4f, 0x1c, 0x7d, 0xe9, 0x29, 0x39, 0xbf, + 0x17, 0x0a, 0x93, 0x6e, 0x51, 0xd4, 0xce, 0xca, 0xdb, 0xab, 0x9d, 0xf0, + 0x0a, 0xd7, 0x45, 0xce, 0xc5, 0xc9, 0x70, 0xa8, 0xb9, 0xad, 0x2e, 0xfa, + 0x2c, 0x77, 0xb1, 0xc0, 0xf8, 0x09, 0xe5, 0x73, 0x2e, 0x36, 0x5d, 0x71, + 0xba, 0xe7, 0x6f, 0xb1, 0xdd, 0xfb, 0x01, 0xe0, 0x3c, 0x02, 0x77, 0x3d, + 0xac, 0x12, 0x4c, 0x42, 0x4a, 0x7d, 0x1d, 0xbb, 0x5b, 0xed, 0x3f, 0x08, + 0x2b, 0x97, 0xfa, 0xeb, 0x9b, 0x48, 0x38, 0x38, 0x4d, 0x13, 0x71, 0xb4, + 0x5c, 0x7f, 0x92, 0xd6, 0xcb, 0x47, 0xde, 0x4a, 0x37, 0xd5, 0xee, 0xb3, + 0x93, 0x91, 0x8e, 0xea, 0xf2, 0x81, 0x7d, 0x4d, 0xfe, 0x63, 0x24, 0xfe, + 0x74, 0x18, 0x2d, 0x3e, 0x31, 0xe2, 0xb9, 0xbf, 0xac, 0x59, 0x2f, 0xc8, + 0xeb, 0xa6, 0xd7, 0x34, 0xb5, 0xad, 0x73, 0x59, 0x5c, 0xf7, 0x6b, 0x0f, + 0x3f, 0x3e, 0x52, 0x53, 0x63, 0x19, 0xdb, 0x9a, 0xe2, 0x7e, 0x5f, 0x82, + 0x8e, 0x5b, 0xda, 0x1e, 0x63, 0x96, 0xb5, 0x45, 0x84, 0x8a, 0x5e, 0x1b, + 0xa3, 0x8c, 0xed, 0x3f, 0x72, 0x8b, 0xd8, 0x5d, 0x7d, 0xa0, 0x99, 0x25, + 0xad, 0xf9, 0xfb, 0x44, 0xa4, 0xa7, 0x57, 0x10, 0x9f, 0x40, 0x91, 0xa9, + 0x90, 0x60, 0x79, 0x80, 0x51, 0x1b, 0xa0, 0x83, 0xe0, 0x07, 0xf1, 0xfe, + 0x28, 0x58, 0xa4, 0x32, 0xa7, 0xe9, 0xc0, 0x03, 0xfe, 0x88, 0x08, 0xc4, + 0x46, 0xef, 0x1d, 0x7f, 0x04, 0x94, 0xe4, 0x66, 0x02, 0x6d, 0x70, 0x1a, + 0xc9, 0x00, 0x7d, 0xea, 0xd6, 0x16, 0xef, 0xb4, 0x30, 0xf7, 0xdf, 0xa2, + 0xa9, 0x96, 0xe1, 0xea, 0x92, 0x34, 0x20, 0x83, 0xf8, 0xab, 0xb8, 0x2d, + 0x2d, 0xbe, 0x92, 0x7b, 0xc3, 0xbf, 0x2a, 0x4a, 0x7a, 0x5a, 0x1e, 0xd3, + 0x55, 0x44, 0x09, 0x6b, 0x9b, 0xf9, 0x65, 0x49, 0xc7, 0x69, 0xb2, 0x35, + 0x10, 0xdd, 0x3e, 0xf5, 0x16, 0x4f, 0xa3, 0x59, 0x3a, 0x3a, 0x23, 0x44, + 0xce, 0x25, 0xcf, 0x73, 0x4f, 0x30, 0xdd, 0x7e, 0x12, 0x92, 0x93, 0x32, + 0x34, 0x1c, 0x71, 0x3f, 0x82, 0xe3, 0xba, 0xee, 0x9d, 0x4f, 0x2d, 0xb3, + 0xc5, 0x91, 0xf7, 0x00, 0xbb, 0x0a, 0xe6, 0x47, 0x7f, 0xf7, 0x95, 0xc7, + 0x75, 0xef, 0xf9, 0x5f, 0x32, 0x75, 0xfd, 0x21, 0x9f, 0xb8, 0x24, 0xa6, + 0x86, 0x18, 0x8b, 0x07, 0xf5, 0x82, 0xd8, 0xed, 0x3d, 0xe5, 0x64, 0x62, + 0xe9, 0x63, 0x7f, 0xac, 0x16, 0xc7, 0xe6, 0xfc, 0xd2, 0x52, 0x46, 0xea, + 0x75, 0xed, 0xaf, 0xe0, 0x83, 0xbb, 0x52, 0x0f, 0x02, 0x49, 0xf9, 0x04, + 0x49, 0x8d, 0x3b, 0x77, 0x4d, 0xb5, 0x9b, 0x1e, 0xef, 0x10, 0x4f, 0xe0, + 0x92, 0x99, 0xd3, 0xfc, 0xcf, 0xcb, 0xf8, 0x23, 0xce, 0x9e, 0x0a, 0xad, + 0x6f, 0x69, 0xaf, 0x6f, 0x7d, 0x21, 0x19, 0x84, 0x10, 0x4f, 0x6f, 0xf6, + 0xa4, 0xa4, 0x6e, 0x32, 0xe7, 0x4a, 0xae, 0xe7, 0x00, 0x4f, 0x9a, 0x23, + 0x8e, 0xae, 0xd5, 0x06, 0x5b, 0xb5, 0xf2, 0x27, 0x4f, 0x6a, 0x4a, 0x4f, + 0x53, 0xf4, 0x09, 0xec, 0x79, 0xde, 0x76, 0x8e, 0x44, 0xca, 0x0d, 0x67, + 0x69, 0x6f, 0x74, 0xe5, 0xf2, 0xe7, 0x03, 0xa4, 0x04, 0x94, 0xa7, 0xbe, + 0x1b, 0x23, 0xb8, 0x95, 0x49, 0xaf, 0x9b, 0xdc, 0x0f, 0x70, 0x7f, 0x22, + 0xb2, 0x63, 0x6c, 0x15, 0x4a, 0x08, 0xc9, 0x9f, 0x10, 0x47, 0xde, 0x92, + 0x95, 0xd1, 0x18, 0x6c, 0xea, 0x8d, 0xac, 0x0d, 0x1f, 0xed, 0xfe, 0x3f, + 0xc1, 0x77, 0x10, 0xd6, 0x80, 0x00, 0xd1, 0xa3, 0x45, 0x83, 0xf5, 0x4f, + 0xa7, 0x16, 0x8b, 0x7a, 0x8d, 0x83, 0xe9, 0xfe, 0x8e, 0x90, 0x7b, 0x06, + 0xfd, 0x37, 0x7f, 0x05, 0xbb, 0xea, 0x34, 0xb5, 0xc4, 0xe9, 0xaa, 0x4a, + 0x40, 0x2c, 0x36, 0x58, 0xe3, 0x05, 0xbb, 0x74, 0xd5, 0x4a, 0xa3, 0xb9, + 0xd1, 0xf9, 0xa3, 0xf1, 0x4b, 0xe9, 0x19, 0x03, 0x9f, 0x15, 0x36, 0xc3, + 0x5a, 0x60, 0x6b, 0xc2, 0x4a, 0x48, 0xfa, 0x71, 0xac, 0x8f, 0x56, 0x96, + 0x59, 0xb3, 0x82, 0xe6, 0x87, 0x47, 0xc2, 0x65, 0x4a, 0xbc, 0x2e, 0x9a, + 0xe0, 0x2c, 0x6e, 0x35, 0x24, 0xbf, 0x5d, 0xdb, 0x1b, 0xaf, 0xe0, 0xa1, + 0x5b, 0x8b, 0xa4, 0x46, 0x83, 0x52, 0x8f, 0x21, 0xdb, 0x49, 0x31, 0xde, + 0x12, 0x53, 0x33, 0x89, 0x85, 0x20, 0x9a, 0x2b, 0x31, 0xe0, 0xd0, 0x23, + 0xf0, 0x50, 0xb7, 0xa3, 0xf4, 0xfb, 0x86, 0x8d, 0x2c, 0xf3, 0x1a, 0xc7, + 0xde, 0xa4, 0x25, 0xae, 0xdd, 0x33, 0x3a, 0x14, 0x72, 0xf6, 0xec, 0x04, + 0x1f, 0xbd, 0x25, 0x3c, 0xff, 0x00, 0x51, 0xe8, 0x38, 0xed, 0x07, 0x66, + 0x53, 0x77, 0x34, 0x4e, 0xd7, 0x89, 0x3f, 0xc5, 0x72, 0x5d, 0x43, 0xa4, + 0x13, 0x90, 0x6a, 0xf5, 0x2b, 0xb3, 0xf7, 0x9c, 0xd9, 0x71, 0x1e, 0x5a, + 0xe8, 0xba, 0x7f, 0xac, 0x36, 0x57, 0x6d, 0xe2, 0x9a, 0x03, 0x85, 0xc7, + 0xdd, 0x6b, 0xda, 0x60, 0x35, 0xbe, 0x07, 0xe3, 0x0b, 0x1a, 0x8b, 0x1b, + 0x65, 0x8f, 0x15, 0x0f, 0xd1, 0x54, 0x76, 0x4f, 0x8b, 0xbf, 0x38, 0xa4, + 0xa6, 0xb6, 0x17, 0x49, 0xa7, 0x18, 0x4b, 0x5b, 0xee, 0x23, 0x57, 0xbb, + 0x53, 0xfe, 0xc5, 0x62, 0xd0, 0x00, 0x1b, 0x75, 0xf8, 0xab, 0x0e, 0x70, + 0x88, 0xe2, 0x39, 0x55, 0x40, 0xb6, 0xeb, 0x05, 0x75, 0x0d, 0xce, 0x77, + 0xe1, 0x3d, 0xca, 0x4a, 0x69, 0xdf, 0x92, 0xe0, 0xe6, 0xd3, 0x43, 0x4d, + 0x97, 0x3c, 0xed, 0x65, 0x6d, 0xd4, 0x92, 0xb7, 0x7a, 0x37, 0xd5, 0xa7, + 0x37, 0xf5, 0xae, 0xad, 0x16, 0xd8, 0x75, 0x65, 0x03, 0x5a, 0xd9, 0xfd, + 0x6f, 0xde, 0x3f, 0x82, 0xb1, 0xd3, 0xba, 0x5d, 0x78, 0x4f, 0xf5, 0x6b, + 0x67, 0xda, 0x2f, 0x2d, 0x8d, 0xe5, 0x85, 0xa5, 0xa4, 0x9d, 0x76, 0x97, + 0x7e, 0x6a, 0xd6, 0x0c, 0xb4, 0x8d, 0xd6, 0xb8, 0xff, 0x00, 0x57, 0x81, + 0xf0, 0x49, 0x4c, 0x9b, 0x8f, 0x5e, 0xd2, 0xd6, 0xb4, 0x35, 0xa3, 0x40, + 0xd0, 0x21, 0xbf, 0x72, 0x1d, 0x98, 0x94, 0x5e, 0xc3, 0x4e, 0x43, 0x1a, + 0xf6, 0x7e, 0x68, 0x23, 0x8f, 0x31, 0xe0, 0x8f, 0xbb, 0xe8, 0xf8, 0x9e, + 0x53, 0xbc, 0x34, 0x10, 0xe1, 0xf7, 0x24, 0xa7, 0x8f, 0xea, 0x38, 0xaf, + 0xc2, 0xc8, 0xf4, 0x1c, 0x7d, 0xae, 0xd6, 0xb7, 0xfe, 0xf3, 0x49, 0x55, + 0x9e, 0xe2, 0xdc, 0xa7, 0x13, 0xe0, 0x01, 0xf8, 0x11, 0x0b, 0xa4, 0xfa, + 0xc3, 0x8a, 0x2f, 0xc7, 0xa6, 0xf3, 0xcd, 0x4f, 0x8f, 0x38, 0x70, 0xff, + 0x00, 0x62, 0xe7, 0xb2, 0x5a, 0xd1, 0x92, 0x40, 0xe5, 0xc1, 0xbf, 0x80, + 0x49, 0x4d, 0xfb, 0x2c, 0xd9, 0x8e, 0xf2, 0xce, 0x4b, 0x9b, 0xf7, 0x18, + 0x47, 0x36, 0x7d, 0x33, 0xe2, 0x62, 0x3e, 0x65, 0x53, 0x1e, 0xec, 0x39, + 0x26, 0x7e, 0x89, 0x27, 0xe1, 0x0a, 0xc3, 0x84, 0x17, 0x6b, 0xa6, 0x83, + 0xef, 0x24, 0xa4, 0xa7, 0x2f, 0x2d, 0xd3, 0x65, 0x8d, 0xf0, 0xd0, 0x7d, + 0xea, 0xf6, 0x01, 0x27, 0x25, 0xa2, 0x78, 0x74, 0x7d, 0xc1, 0x66, 0xe4, + 0x4f, 0xa9, 0x61, 0xf1, 0x3f, 0xc5, 0x5e, 0xe9, 0xc4, 0x1c, 0xa6, 0xc7, + 0x77, 0xfe, 0x46, 0xa4, 0xa7, 0xac, 0x1f, 0xcc, 0x56, 0x46, 0xa4, 0x47, + 0xe4, 0x43, 0x6c, 0x9b, 0x49, 0x3d, 0xc0, 0x31, 0xf7, 0xa3, 0x37, 0x56, + 0x56, 0xd1, 0xa1, 0x80, 0x98, 0x34, 0x7a, 0x80, 0x77, 0x00, 0x7e, 0x52, + 0x92, 0x95, 0x8f, 0xb9, 0xc2, 0x4f, 0x80, 0x3f, 0x89, 0x5c, 0x5f, 0x5e, + 0xb2, 0x3a, 0xc6, 0x60, 0x27, 0x9b, 0x4f, 0xe2, 0x02, 0xed, 0x99, 0xa0, + 0x1e, 0x10, 0x3f, 0x2a, 0xe1, 0xfe, 0xb0, 0x81, 0xfb, 0x67, 0x2a, 0x38, + 0x36, 0x4e, 0xbf, 0xd5, 0x09, 0x29, 0xab, 0x8a, 0x7d, 0xec, 0x3f, 0xca, + 0x0b, 0x6b, 0xbc, 0x79, 0xcf, 0xe0, 0xb1, 0x30, 0xce, 0xad, 0x1f, 0xcb, + 0x6a, 0xda, 0xfc, 0xe4, 0x94, 0xca, 0x1c, 0xe7, 0x69, 0xe6, 0xa0, 0x77, + 0x36, 0x97, 0xf6, 0x01, 0x8e, 0x84, 0x6a, 0x9a, 0x7d, 0x48, 0x3d, 0xa6, + 0x25, 0x3e, 0x43, 0x22, 0x97, 0x47, 0x01, 0xa5, 0x25, 0x35, 0x6a, 0x24, + 0x34, 0x77, 0x3b, 0x64, 0xab, 0x2c, 0x7c, 0x30, 0x76, 0x9f, 0xee, 0x55, + 0x87, 0x12, 0x07, 0x68, 0x46, 0x04, 0x6d, 0x01, 0x25, 0x22, 0x04, 0x9d, + 0xd3, 0xe1, 0x3f, 0x8a, 0x19, 0x9f, 0xca, 0x8b, 0x54, 0x1d, 0xe3, 0xe0, + 0x98, 0x86, 0xed, 0x33, 0xe0, 0x92, 0x96, 0x0e, 0x0d, 0x03, 0xcd, 0x4c, + 0x0f, 0x76, 0xba, 0x92, 0x25, 0x0c, 0xbb, 0x6b, 0x98, 0x3c, 0x51, 0x1b, + 0x60, 0x75, 0x8e, 0x6c, 0x6a, 0x38, 0x3f, 0x95, 0x25, 0x2d, 0xb6, 0x41, + 0x95, 0x4d, 0xed, 0x03, 0x29, 0xba, 0xe9, 0x3c, 0xab, 0xee, 0x1c, 0xfd, + 0xca, 0xa5, 0xad, 0xfd, 0x65, 0x92, 0x40, 0x13, 0xdd, 0x25, 0x3d, 0x8b, + 0x1b, 0x4d, 0x34, 0x32, 0xba, 0x40, 0x6d, 0x41, 0xa0, 0x33, 0xc2, 0x16, + 0x7d, 0xf9, 0x00, 0x3f, 0x65, 0x43, 0xd4, 0xb7, 0xcf, 0xe8, 0xb7, 0xe2, + 0xaa, 0x51, 0x92, 0x1f, 0x50, 0x63, 0x9f, 0xf4, 0x74, 0x80, 0x7b, 0x0e, + 0x34, 0x52, 0xfb, 0x4e, 0x3d, 0x60, 0xc3, 0xbd, 0xde, 0x49, 0x29, 0xb7, + 0x53, 0x8d, 0x44, 0x0b, 0xec, 0x97, 0xda, 0x67, 0xe0, 0x7c, 0x02, 0xb1, + 0x00, 0xb8, 0x34, 0x0e, 0x78, 0x0b, 0x15, 0xf7, 0xb0, 0xb9, 0xaf, 0xb6, + 0x48, 0x6e, 0xa3, 0xe2, 0xb6, 0x7a, 0x73, 0xdd, 0x6e, 0x3b, 0x72, 0x2d, + 0x6e, 0xd2, 0xef, 0xa0, 0x0f, 0x87, 0x8a, 0x4a, 0x6c, 0xb5, 0x85, 0xb5, + 0x86, 0x8e, 0xfc, 0x95, 0x30, 0x03, 0x59, 0x09, 0xda, 0x77, 0x09, 0x8d, + 0x10, 0x9e, 0xf1, 0x30, 0x0a, 0x4a, 0x48, 0x0c, 0x0d, 0x75, 0x4e, 0x2d, + 0x63, 0xbd, 0xbc, 0x89, 0xe1, 0x08, 0x3c, 0x93, 0xaf, 0x05, 0x42, 0xd2, + 0xf6, 0xeb, 0xa7, 0x9f, 0x82, 0x4a, 0x73, 0xfa, 0xa6, 0x2d, 0xa2, 0xab, + 0xe5, 0xed, 0xa9, 0xaf, 0x0e, 0x71, 0xbd, 0xa2, 0x6c, 0x23, 0xe7, 0xe0, + 0xb9, 0xec, 0x7a, 0x46, 0x2e, 0x35, 0x35, 0x01, 0x1b, 0xce, 0xbe, 0x24, + 0x9d, 0x75, 0x5a, 0xbd, 0x5e, 0xd7, 0xdb, 0x60, 0xaf, 0x77, 0xe8, 0x80, + 0x97, 0x99, 0xef, 0xd8, 0x2c, 0x4c, 0x4c, 0x9f, 0xb4, 0xe6, 0x3e, 0xc3, + 0xfc, 0xc6, 0x30, 0x2d, 0xaf, 0xb6, 0xe7, 0xbb, 0xe9, 0x3b, 0xe4, 0x12, + 0x53, 0x66, 0xc7, 0x38, 0x17, 0x4a, 0xd6, 0xfa, 0xb5, 0x8a, 0xd7, 0x0b, + 0xb2, 0xdd, 0xa8, 0x27, 0xd3, 0x67, 0xcb, 0xdc, 0x56, 0x2b, 0xc8, 0xb1, + 0x81, 0xc0, 0xeb, 0x69, 0x2e, 0x68, 0xf0, 0x60, 0xd0, 0x2e, 0xa7, 0xa7, + 0xd4, 0x71, 0xb1, 0x2b, 0xa4, 0x7b, 0x76, 0x89, 0x77, 0xc4, 0xea, 0x52, + 0x53, 0x6c, 0xbc, 0x0d, 0x01, 0xd7, 0x90, 0x54, 0x5c, 0xe2, 0xe1, 0xb4, + 0xf2, 0x53, 0x43, 0x43, 0x77, 0x0e, 0x0e, 0xba, 0xa4, 0xd8, 0x93, 0x3f, + 0x48, 0xff, 0x00, 0x04, 0x94, 0xab, 0xa1, 0x9b, 0x23, 0x80, 0x0a, 0x63, + 0x6e, 0xf7, 0x34, 0x0e, 0xe8, 0x79, 0x4f, 0x05, 0xc0, 0x0f, 0x0d, 0x53, + 0xd6, 0x22, 0xc1, 0xf0, 0xec, 0x92, 0x96, 0xea, 0x60, 0x1e, 0x9f, 0x68, + 0x1a, 0x96, 0xb4, 0x93, 0xf2, 0xd4, 0x2e, 0x37, 0x21, 0xc0, 0xde, 0x08, + 0xe4, 0x81, 0xf9, 0x17, 0x59, 0xd6, 0x6c, 0x35, 0x74, 0xab, 0xdf, 0xc4, + 0xc3, 0x7e, 0xf2, 0x02, 0xe4, 0x2e, 0xf7, 0xda, 0x08, 0xfd, 0xde, 0x12, + 0x53, 0x69, 0xaf, 0xfd, 0x52, 0x1a, 0x75, 0x73, 0x75, 0xf9, 0x38, 0x88, + 0x57, 0x9d, 0xee, 0x9f, 0x88, 0x1f, 0x70, 0x0b, 0x34, 0x81, 0x55, 0x75, + 0xb5, 0xe0, 0x4e, 0xa0, 0x34, 0x99, 0xee, 0x0e, 0xab, 0x40, 0x7b, 0x5a, + 0xed, 0x66, 0x0f, 0xf0, 0x49, 0x4e, 0x55, 0xff, 0x00, 0xce, 0xb8, 0x8e, + 0x67, 0xf8, 0xab, 0x9d, 0x34, 0x39, 0xb9, 0x94, 0xee, 0x31, 0xb9, 0xe4, + 0x8f, 0x86, 0xd5, 0x47, 0x20, 0xfb, 0xdd, 0x1d, 0xbf, 0xbd, 0x5f, 0xe9, + 0xa4, 0x59, 0x9b, 0x4b, 0x89, 0xfa, 0x30, 0xd8, 0xfb, 0xd2, 0x53, 0xd8, + 0x01, 0xfa, 0x26, 0x49, 0xec, 0x35, 0xee, 0x21, 0x26, 0x93, 0xea, 0x4b, + 0xb5, 0x90, 0x98, 0x1f, 0xd0, 0x8e, 0x38, 0x09, 0x44, 0x3d, 0x87, 0xb1, + 0x69, 0x9f, 0xbc, 0x24, 0xa6, 0x40, 0x9f, 0xa5, 0x3a, 0xc7, 0xe4, 0x2b, + 0x8c, 0xfa, 0xc2, 0xdf, 0xf2, 0xbe, 0x41, 0xe2, 0x5c, 0x3f, 0xea, 0x1a, + 0xbb, 0x16, 0x9f, 0x68, 0xf9, 0x8f, 0xc5, 0x72, 0x3f, 0x58, 0x3f, 0xe5, + 0x4b, 0xc7, 0x60, 0x47, 0xfd, 0x43, 0x52, 0x53, 0x93, 0x8a, 0x61, 0xed, + 0x3e, 0x0f, 0x6f, 0xe5, 0x5b, 0x7b, 0xbd, 0xf1, 0xe6, 0xb1, 0x6a, 0xf6, + 0xc7, 0xf5, 0xda, 0xb5, 0xb5, 0xdf, 0x3d, 0xe7, 0xf8, 0x24, 0xa7, 0x4c, + 0x31, 0xbb, 0xc9, 0xf0, 0x1a, 0x7d, 0xea, 0x39, 0x23, 0x6d, 0x0f, 0x3e, + 0x0d, 0xd5, 0x16, 0xb1, 0x32, 0xe1, 0xc6, 0x80, 0x1f, 0x82, 0x8e, 0x61, + 0x1f, 0x65, 0xb0, 0x78, 0x89, 0x49, 0x4d, 0x16, 0xb3, 0x70, 0x13, 0xe3, + 0xf9, 0x12, 0x78, 0x3b, 0x8f, 0xc0, 0x7e, 0x54, 0x7a, 0xdb, 0x0d, 0x6a, + 0x6b, 0x40, 0x02, 0x7e, 0x09, 0x29, 0x05, 0x03, 0xdc, 0xf1, 0xdb, 0x45, + 0x22, 0x3d, 0xa6, 0x3c, 0x0e, 0x9e, 0x49, 0xb1, 0xe0, 0x9b, 0x08, 0x3d, + 0xc2, 0x4e, 0x12, 0xe0, 0xed, 0x74, 0x07, 0x84, 0x94, 0xc0, 0xb2, 0x6c, + 0x68, 0x1d, 0x82, 0x37, 0xa2, 0x7d, 0x62, 0xee, 0x07, 0x6f, 0xb9, 0x41, + 0xa3, 0xf4, 0xa0, 0xfc, 0x91, 0xc3, 0xfd, 0xee, 0x9e, 0x34, 0x01, 0x25, + 0x2c, 0x41, 0x20, 0xe8, 0xaa, 0x5d, 0x50, 0x76, 0x43, 0x01, 0x3a, 0x6a, + 0x3e, 0x64, 0x2b, 0xed, 0x82, 0xd0, 0x7b, 0xaa, 0xaf, 0x07, 0xed, 0x0c, + 0xd3, 0xf3, 0x92, 0x53, 0x91, 0x9e, 0xc7, 0x07, 0x00, 0x24, 0xb8, 0xcc, + 0x38, 0x18, 0x81, 0xf7, 0xa0, 0xd7, 0x95, 0x9d, 0x51, 0x01, 0x97, 0x13, + 0xe4, 0xf0, 0x1d, 0xf9, 0x42, 0xd3, 0x7b, 0x5d, 0xf6, 0xb6, 0x17, 0x6a, + 0xd7, 0x1b, 0x36, 0xfc, 0x23, 0x45, 0x4b, 0x3c, 0xfe, 0xba, 0xf0, 0x3c, + 0x04, 0x0f, 0x92, 0x4a, 0x74, 0xfa, 0x25, 0x5d, 0x47, 0xa8, 0xe4, 0x03, + 0x6b, 0x99, 0xf6, 0x5a, 0xe0, 0xda, 0xe0, 0xcf, 0x73, 0xbc, 0x18, 0x0f, + 0x9a, 0xea, 0xc4, 0x7d, 0x10, 0x34, 0xec, 0x3c, 0x00, 0x50, 0xc1, 0xc3, + 0xaf, 0x0f, 0x0e, 0xba, 0x2a, 0x00, 0xe8, 0x1c, 0xe3, 0xdc, 0xb8, 0x89, + 0x71, 0x46, 0x15, 0xf0, 0x67, 0x94, 0x94, 0xc8, 0x10, 0xd6, 0x79, 0x2a, + 0xce, 0x74, 0xc9, 0x22, 0x02, 0x2b, 0x9c, 0x00, 0x25, 0x05, 0xfc, 0x7b, + 0x4e, 0x81, 0x25, 0x33, 0x69, 0x00, 0x02, 0x47, 0x0a, 0x2e, 0x21, 0xe0, + 0x82, 0x62, 0x78, 0x41, 0xde, 0x03, 0xf6, 0x03, 0xee, 0x89, 0xf9, 0x29, + 0xea, 0xd3, 0xae, 0xa0, 0xf7, 0x49, 0x4e, 0x17, 0x59, 0xc7, 0x76, 0xc0, + 0xc0, 0xe8, 0x7b, 0xc9, 0xef, 0xa7, 0xc4, 0xac, 0x66, 0x63, 0xb9, 0xfb, + 0x31, 0xb1, 0xea, 0x71, 0x6b, 0x46, 0xa4, 0x0d, 0x5d, 0xe3, 0xaf, 0xf1, + 0x5d, 0xb3, 0xf1, 0xe9, 0xb0, 0x87, 0x39, 0xba, 0x8e, 0x0f, 0x81, 0x4c, + 0xdc, 0x7a, 0xaa, 0x6c, 0x31, 0xa0, 0x0f, 0x00, 0x92, 0x9c, 0x3e, 0x8f, + 0xd1, 0x6d, 0x66, 0x43, 0x6e, 0xcc, 0x6e, 0x95, 0x7f, 0x35, 0x5c, 0xc8, + 0xf2, 0x27, 0xc9, 0x74, 0x44, 0x86, 0xeb, 0xd8, 0x72, 0x7c, 0x10, 0x9a, + 0xe2, 0x0c, 0xc2, 0x90, 0x2e, 0xdc, 0x35, 0xf6, 0x78, 0x42, 0x4a, 0x49, + 0x63, 0x9b, 0x04, 0x11, 0xd9, 0x05, 0xad, 0x7c, 0x83, 0x11, 0xe3, 0xaa, + 0x9b, 0x98, 0x49, 0xd3, 0x44, 0x98, 0x0b, 0x01, 0x2f, 0x3d, 0x92, 0x53, + 0x51, 0xee, 0xdd, 0x69, 0x1e, 0x10, 0x15, 0xba, 0xab, 0xf7, 0x17, 0x76, + 0xf3, 0x59, 0xf5, 0xb9, 0xd7, 0x64, 0xb8, 0x47, 0x2e, 0xed, 0xe4, 0xb5, + 0x68, 0x69, 0x2c, 0x6e, 0xe1, 0xab, 0x8c, 0xfc, 0x82, 0x4a, 0x72, 0x7e, + 0xb8, 0x3b, 0xd3, 0xe8, 0xa1, 0xbc, 0x6f, 0xb5, 0x83, 0x4f, 0x9b, 0xbf, + 0x82, 0xe4, 0x1b, 0x79, 0xad, 0xf5, 0x9b, 0xbd, 0xc0, 0x68, 0x48, 0x3d, + 0xbb, 0x6a, 0xba, 0xef, 0xae, 0x25, 0xaf, 0xc0, 0xc7, 0xa4, 0x89, 0x16, + 0x5a, 0x49, 0x03, 0x4d, 0x18, 0xd3, 0x3f, 0x95, 0x72, 0x74, 0xe3, 0xee, + 0x0d, 0x73, 0xb5, 0x60, 0x02, 0x1a, 0x47, 0x87, 0x74, 0x94, 0x9e, 0xf7, + 0x6e, 0xa2, 0xa3, 0x20, 0x43, 0xe1, 0xb1, 0x24, 0x99, 0x89, 0xd5, 0x6a, + 0x12, 0xdf, 0x49, 0xfa, 0xfd, 0xdf, 0x35, 0x9b, 0x97, 0x0e, 0x65, 0x04, + 0x37, 0x68, 0xde, 0xe2, 0x47, 0x1e, 0x0b, 0x49, 0xac, 0x0e, 0x63, 0x80, + 0xd0, 0x4f, 0xf7, 0xa4, 0xa7, 0x1b, 0x22, 0x5b, 0x63, 0x4f, 0x89, 0x1f, + 0x95, 0x68, 0xf4, 0xda, 0xf6, 0xe7, 0xb6, 0x39, 0x2f, 0xd3, 0xee, 0x2a, + 0x86, 0x58, 0x3b, 0xab, 0x91, 0xcb, 0x80, 0xfc, 0x56, 0x9f, 0x4e, 0xd7, + 0xa8, 0x30, 0x11, 0xf4, 0x0b, 0x84, 0xfc, 0x8a, 0x4a, 0x7a, 0xa2, 0xd3, + 0xe9, 0x33, 0x6e, 0xbe, 0xd0, 0x0f, 0x91, 0x29, 0x00, 0x43, 0x9a, 0x3b, + 0xed, 0xfe, 0x21, 0x4e, 0x25, 0x8c, 0x33, 0xae, 0x83, 0xf0, 0x0a, 0x2e, + 0x77, 0xbc, 0x08, 0xd6, 0x0e, 0xbf, 0x30, 0x92, 0x96, 0x6c, 0x73, 0xf1, + 0xfc, 0xa1, 0x72, 0x5d, 0x7c, 0x13, 0xd4, 0xaf, 0x9e, 0x64, 0x7f, 0xd4, + 0x85, 0xd6, 0x34, 0x18, 0x69, 0xf1, 0x04, 0xfe, 0x2b, 0x96, 0xea, 0xa0, + 0x3f, 0x3f, 0x20, 0xf3, 0xee, 0x3a, 0xfc, 0x80, 0x49, 0x4e, 0x4e, 0xc2, + 0x18, 0x0f, 0xf2, 0x9b, 0xf9, 0x56, 0xb4, 0x15, 0x42, 0xc1, 0xb6, 0xb2, + 0x47, 0x88, 0x95, 0xa3, 0x1f, 0xa3, 0x9e, 0xc9, 0x29, 0xd5, 0xdc, 0xd0, + 0x36, 0x81, 0x00, 0x76, 0xf0, 0x40, 0xcd, 0xda, 0x30, 0xdc, 0x4f, 0x2e, + 0x88, 0xfb, 0xd4, 0xc3, 0x46, 0xd2, 0x7c, 0x4a, 0xaf, 0x9e, 0x63, 0x18, + 0x13, 0xe5, 0xf9, 0x52, 0x52, 0xcc, 0x74, 0x32, 0x7c, 0x54, 0x2e, 0x7f, + 0xb6, 0x0a, 0x66, 0xbb, 0xf4, 0x6d, 0xee, 0x50, 0xef, 0x78, 0x88, 0xf1, + 0xee, 0x92, 0x98, 0x62, 0x19, 0x0f, 0xf8, 0xa2, 0x3c, 0xfe, 0x42, 0xab, + 0xe2, 0xbc, 0x80, 0xfe, 0x39, 0x84, 0xd7, 0x64, 0xb5, 0x9a, 0x38, 0x13, + 0xcc, 0x6d, 0x49, 0x4d, 0x96, 0xbe, 0x08, 0x3f, 0x04, 0x85, 0x92, 0xef, + 0x98, 0x27, 0xe0, 0xa3, 0x8a, 0xe6, 0x59, 0xb4, 0x39, 0xb2, 0x4e, 0xa6, + 0x5c, 0x78, 0x56, 0xac, 0xc2, 0xac, 0x3b, 0x6e, 0xc8, 0xdc, 0x01, 0x69, + 0xdc, 0x4f, 0xf1, 0x49, 0x4b, 0x55, 0x60, 0x73, 0x79, 0x9f, 0x05, 0x4d, + 0xce, 0x73, 0xb3, 0x86, 0xba, 0x12, 0x03, 0x5b, 0x3f, 0x8a, 0x96, 0x76, + 0x35, 0xb8, 0xf8, 0xc6, 0xea, 0x43, 0x5b, 0x58, 0x12, 0x5e, 0x1c, 0x79, + 0x1a, 0x42, 0xa1, 0x89, 0x95, 0xbf, 0x22, 0xa7, 0x13, 0x30, 0xe9, 0x9f, + 0x92, 0x4a, 0x6d, 0x66, 0x58, 0x2b, 0xb9, 0x8f, 0x76, 0x84, 0x38, 0x81, + 0x3c, 0x00, 0x41, 0xf0, 0x59, 0xd9, 0x59, 0x57, 0xba, 0xc7, 0x1a, 0x83, + 0x64, 0xeb, 0xea, 0x11, 0xac, 0x01, 0xc2, 0xd3, 0xca, 0xb2, 0xd7, 0x5f, + 0x0d, 0x63, 0x0d, 0x2f, 0x30, 0x37, 0x89, 0xe0, 0x72, 0xaa, 0xd9, 0x43, + 0x9c, 0x08, 0xf4, 0x99, 0xaf, 0xee, 0x92, 0x12, 0x53, 0xe8, 0x14, 0x34, + 0x1a, 0x98, 0xed, 0x4f, 0xb1, 0xa4, 0x7c, 0xda, 0x13, 0x38, 0x68, 0x7c, + 0x5a, 0x89, 0x82, 0xf1, 0x66, 0x0e, 0x3b, 0xc7, 0x7a, 0xd9, 0xff, 0x00, + 0x52, 0x12, 0xb0, 0x46, 0x83, 0xe6, 0x92, 0x9a, 0x16, 0x38, 0xba, 0x47, + 0x8e, 0x9a, 0x72, 0xa0, 0xc6, 0x38, 0x82, 0x0f, 0x1d, 0x91, 0x6d, 0xda, + 0xd7, 0x13, 0xe0, 0x9a, 0x4c, 0x07, 0x4c, 0x8e, 0x52, 0x52, 0x2d, 0xaf, + 0x24, 0x33, 0x96, 0xf8, 0xa2, 0x16, 0x86, 0x88, 0x3f, 0x7a, 0x98, 0x23, + 0xe8, 0xfc, 0x60, 0xa4, 0xf6, 0xcb, 0x41, 0x22, 0x52, 0x53, 0x02, 0x40, + 0xd3, 0xbf, 0x92, 0x79, 0x98, 0x3f, 0x7a, 0x18, 0x24, 0xcc, 0x1d, 0x02, + 0x2b, 0x4c, 0xb6, 0x02, 0x4a, 0x61, 0xb4, 0x6e, 0x2e, 0xd5, 0x44, 0x17, + 0x06, 0x92, 0x06, 0x81, 0x15, 0xbe, 0xe0, 0x41, 0x94, 0xbd, 0x32, 0x3e, + 0x25, 0x25, 0x22, 0xdf, 0xba, 0x08, 0x32, 0x96, 0x43, 0xc8, 0xaf, 0xc3, + 0x44, 0xb6, 0xb8, 0x59, 0xc6, 0x87, 0xc1, 0x2c, 0xa6, 0x82, 0xc0, 0xd2, + 0x35, 0x29, 0x29, 0xa3, 0xd3, 0x01, 0x7e, 0x63, 0xdc, 0x38, 0x68, 0x26, + 0x3e, 0x6b, 0x67, 0x18, 0x97, 0x34, 0xb8, 0x68, 0xdf, 0xa2, 0xd5, 0x9b, + 0xd2, 0xe8, 0x8b, 0xdc, 0x4e, 0x81, 0xc0, 0x8f, 0x9c, 0xad, 0x9a, 0x83, + 0x5a, 0xd8, 0x10, 0x1a, 0xd1, 0xf7, 0x78, 0x92, 0x92, 0x9e, 0x3b, 0xeb, + 0x9d, 0xc5, 0xdd, 0x43, 0x0f, 0x19, 0x8e, 0x03, 0xd1, 0x61, 0xb1, 0xed, + 0x9e, 0xf6, 0x18, 0x1f, 0x83, 0x56, 0x1d, 0x5f, 0x68, 0x93, 0x5b, 0x6c, + 0x68, 0x93, 0xa1, 0x3c, 0x29, 0xe7, 0xe7, 0x7e, 0xd1, 0xea, 0xd9, 0x19, + 0xa0, 0x6e, 0xad, 0xef, 0x22, 0xb1, 0xfc, 0x86, 0xfb, 0x59, 0xf8, 0x05, + 0x7b, 0x1d, 0xc1, 0xe3, 0x68, 0x1b, 0x52, 0x53, 0x56, 0xd6, 0xe7, 0x37, + 0xf4, 0x76, 0x5d, 0x53, 0x9a, 0x35, 0x9d, 0xa6, 0x75, 0xf8, 0x15, 0x7b, + 0xa7, 0xd9, 0x7d, 0xbe, 0xa3, 0x5e, 0x01, 0xad, 0xac, 0x9d, 0xcd, 0x04, + 0x7b, 0x87, 0xc7, 0xe2, 0x81, 0x76, 0x82, 0x16, 0x97, 0x49, 0xa1, 0xe7, + 0x10, 0xbf, 0xdd, 0x0e, 0x24, 0x7b, 0x48, 0x01, 0x25, 0x38, 0xbd, 0x49, + 0xa5, 0x81, 0xbe, 0x4f, 0x1f, 0x94, 0x2d, 0x5c, 0x0f, 0xe9, 0xed, 0xf3, + 0x24, 0xfe, 0x0a, 0xaf, 0x5e, 0xa1, 0xb5, 0x56, 0xc7, 0x33, 0x70, 0x97, + 0x80, 0x5a, 0xee, 0x74, 0x23, 0xb8, 0x47, 0xe9, 0xd6, 0x35, 0xdd, 0x41, + 0xa3, 0x5d, 0xc3, 0x73, 0x63, 0xe0, 0x0a, 0x4a, 0x7a, 0xc2, 0xef, 0xd0, + 0xb4, 0xf7, 0x1b, 0x63, 0xf2, 0x15, 0x13, 0x25, 0xc3, 0xb9, 0x00, 0xeb, + 0xf3, 0x09, 0xc1, 0xfd, 0x13, 0x64, 0x41, 0xf6, 0xa8, 0xeb, 0xb8, 0x4f, + 0xf2, 0xbf, 0x28, 0x49, 0x4a, 0x6b, 0x64, 0x01, 0x31, 0x20, 0x85, 0xc8, + 0x3c, 0x69, 0x1c, 0xc4, 0x89, 0xf8, 0x68, 0xbb, 0x06, 0x88, 0x0d, 0x1e, + 0x6e, 0x5c, 0x93, 0xc6, 0xa7, 0xe2, 0x52, 0x53, 0x5a, 0xd0, 0x7d, 0x17, + 0x2b, 0xff, 0x00, 0xe0, 0x22, 0x3b, 0xaa, 0x97, 0xb6, 0x31, 0xdc, 0x7c, + 0xd5, 0x8d, 0xe3, 0xec, 0xfd, 0xfe, 0x94, 0x24, 0xa7, 0x47, 0xd4, 0x6c, + 0x0d, 0x47, 0x92, 0xab, 0xd4, 0x2e, 0x6b, 0xa8, 0x20, 0x6a, 0x5a, 0x46, + 0x83, 0xc2, 0x55, 0x93, 0x6b, 0x47, 0x31, 0xae, 0x81, 0x48, 0xbd, 0x91, + 0xc0, 0x49, 0x4e, 0x55, 0x77, 0x8d, 0x1a, 0x41, 0x13, 0xaf, 0x08, 0x76, + 0xda, 0xd7, 0x38, 0xc4, 0xc0, 0xf2, 0x5a, 0x62, 0x4b, 0xf7, 0x48, 0xd3, + 0xb2, 0x93, 0x9c, 0xd8, 0xd4, 0x4c, 0x78, 0x24, 0xa7, 0x12, 0x87, 0x0f, + 0x77, 0x61, 0x20, 0xf8, 0x28, 0xdd, 0xad, 0x8d, 0x74, 0x8e, 0x79, 0x5a, + 0xce, 0x73, 0x08, 0x21, 0xba, 0x15, 0x4f, 0x30, 0x56, 0x69, 0x7c, 0x08, + 0x77, 0x2d, 0x3d, 0xd2, 0x53, 0x0a, 0x7d, 0x7b, 0x6d, 0x61, 0xae, 0x1d, + 0x3a, 0x1d, 0x16, 0xb3, 0x05, 0x96, 0x5c, 0x06, 0xa7, 0x6c, 0x87, 0x0e, + 0x20, 0x01, 0xc0, 0x59, 0xdd, 0x27, 0x23, 0x1d, 0x96, 0x4d, 0xae, 0xdb, + 0x1f, 0x76, 0x9c, 0xab, 0xf4, 0xbf, 0x2a, 0xf2, 0xdb, 0x29, 0x61, 0x35, + 0x12, 0x48, 0x77, 0x3a, 0x4a, 0x4a, 0x47, 0xd6, 0x29, 0x8e, 0x99, 0x63, + 0x80, 0x86, 0xb5, 0xa7, 0x42, 0x7b, 0x9d, 0x74, 0x5c, 0xd7, 0x4b, 0xd7, + 0x22, 0x9f, 0xeb, 0x70, 0xba, 0x7e, 0xb3, 0x90, 0x1f, 0xd2, 0xed, 0xa9, + 0xc2, 0x1e, 0xd1, 0xaf, 0xcf, 0x45, 0xce, 0xf4, 0xd0, 0x3d, 0x6a, 0x7c, + 0xc8, 0x49, 0x4e, 0xde, 0x67, 0xf8, 0x26, 0xf7, 0xdd, 0x22, 0x3e, 0x08, + 0x3b, 0x08, 0x83, 0xe2, 0xac, 0xe5, 0x34, 0xfa, 0xb5, 0x0e, 0xd3, 0xfc, + 0x0a, 0x68, 0xd2, 0x3b, 0x24, 0xa7, 0xa8, 0xe8, 0x96, 0x6f, 0xe9, 0x74, + 0x8e, 0xec, 0x96, 0x1f, 0xec, 0x9f, 0xee, 0x56, 0xad, 0xfa, 0x3e, 0x7d, + 0x96, 0x4f, 0xd5, 0xec, 0xa1, 0x5f, 0xa9, 0x89, 0x61, 0x01, 0xbf, 0xce, + 0x31, 0xc7, 0x4f, 0x27, 0x05, 0x6b, 0xa8, 0xf5, 0xac, 0x0c, 0x5a, 0x89, + 0x16, 0x36, 0xdb, 0x7f, 0x36, 0xb6, 0x19, 0x93, 0xe6, 0x47, 0x01, 0x25, + 0x32, 0x35, 0x02, 0x64, 0xf0, 0x10, 0xf6, 0x81, 0x2d, 0x8d, 0x3c, 0x57, + 0x3c, 0xce, 0xb1, 0x99, 0x93, 0xd5, 0x71, 0xab, 0xba, 0xef, 0x4e, 0x87, + 0x93, 0x15, 0xb7, 0xda, 0xd7, 0x12, 0xd3, 0xb4, 0x7d, 0xeb, 0xa5, 0xc5, + 0xa8, 0x3d, 0xb2, 0xef, 0x87, 0xdc, 0x92, 0x98, 0x56, 0xc9, 0xd4, 0x19, + 0x44, 0x73, 0x4e, 0xc2, 0x3f, 0x05, 0x0b, 0xa8, 0x7b, 0x5d, 0xfa, 0x37, + 0xb9, 0xbf, 0x02, 0x80, 0xe7, 0x5e, 0xdf, 0xf0, 0x87, 0x5d, 0x12, 0x52, + 0x76, 0x50, 0x22, 0x5d, 0xdd, 0x10, 0x57, 0x58, 0x1e, 0xe7, 0x01, 0x1e, + 0x6a, 0xa0, 0xf5, 0x9c, 0x36, 0x97, 0x93, 0x3c, 0xca, 0x8b, 0xa8, 0x2e, + 0x92, 0xed, 0x49, 0xee, 0x52, 0x53, 0x61, 0xf6, 0x31, 0x82, 0x03, 0x9b, + 0x3e, 0x65, 0x05, 0xb9, 0x0d, 0x92, 0xed, 0xdf, 0x76, 0xaa, 0x2d, 0xc5, + 0x0d, 0x1a, 0xf2, 0x9c, 0x55, 0x13, 0x03, 0x84, 0x94, 0xcb, 0xed, 0x95, + 0xb7, 0x5d, 0xa5, 0xdf, 0x82, 0x0b, 0xf2, 0x9d, 0x61, 0xf6, 0xd7, 0x03, + 0xc4, 0x99, 0x44, 0x34, 0x89, 0xd4, 0x79, 0x22, 0x55, 0x8d, 0xb8, 0x80, + 0x06, 0x9f, 0xdc, 0x92, 0x96, 0xc6, 0xad, 0xdb, 0x0d, 0xaf, 0xfa, 0x4e, + 0xfa, 0x02, 0x20, 0x09, 0x40, 0xfa, 0xc9, 0x76, 0x6d, 0x7d, 0x1e, 0xea, + 0x7a, 0x7d, 0x2f, 0xbb, 0x2b, 0x28, 0x7a, 0x2d, 0x15, 0x89, 0x2d, 0x6b, + 0xbe, 0x9b, 0xb4, 0xfe, 0x4e, 0x9f, 0x35, 0xa7, 0x65, 0x45, 0xa5, 0x95, + 0x8f, 0x89, 0x5c, 0xf3, 0xbe, 0xb4, 0xbc, 0xf5, 0x8b, 0xf0, 0x31, 0x0b, + 0x4b, 0x31, 0xfd, 0xad, 0x9d, 0x45, 0x85, 0xbf, 0x4e, 0x3e, 0x05, 0x25, + 0x3c, 0xf7, 0x4d, 0xfa, 0xaf, 0xf5, 0x80, 0xd7, 0x07, 0x0d, 0xd5, 0xc7, + 0xef, 0x90, 0xdf, 0xca, 0x56, 0xe6, 0x1f, 0xd5, 0x7e, 0xae, 0xd8, 0x75, + 0x8d, 0x63, 0x3c, 0x8b, 0xe4, 0xfe, 0x12, 0xb5, 0xeb, 0xeb, 0xd9, 0x9f, + 0x9d, 0x8e, 0xc3, 0xf0, 0x24, 0x2b, 0x15, 0xf5, 0x9b, 0x9d, 0xce, 0x34, + 0x7c, 0x1d, 0xfe, 0xc4, 0x94, 0xe3, 0x5b, 0xf5, 0x4f, 0xa8, 0xd9, 0xae, + 0xfa, 0x87, 0xcc, 0xff, 0x00, 0x72, 0x2e, 0x3f, 0xd5, 0xfe, 0xa7, 0x8f, + 0x4b, 0x6a, 0xdc, 0xc3, 0x12, 0x74, 0x3a, 0x73, 0xe6, 0xb6, 0xdb, 0xd5, + 0x1e, 0x7f, 0xed, 0x3b, 0xbf, 0xce, 0x0a, 0x63, 0x3d, 0xce, 0xff, 0x00, + 0x00, 0xef, 0xbc, 0x24, 0xa7, 0x95, 0xea, 0x5f, 0x57, 0x7a, 0xae, 0x54, + 0x06, 0xec, 0xf6, 0x90, 0x75, 0x76, 0x88, 0x38, 0xfd, 0x17, 0xaa, 0xe2, + 0xf5, 0x16, 0x64, 0xdc, 0xc6, 0x8c, 0x76, 0x97, 0x12, 0x43, 0x81, 0xd0, + 0x82, 0x06, 0x9f, 0x15, 0xd8, 0xfa, 0xee, 0x76, 0xbe, 0x8b, 0xfe, 0xf0, + 0xaa, 0x75, 0x17, 0xb9, 0x98, 0x76, 0xda, 0x6b, 0x70, 0x6b, 0x44, 0x92, + 0x48, 0xf1, 0x1e, 0x49, 0x29, 0x76, 0x7d, 0x06, 0xf7, 0xe3, 0xf0, 0x51, + 0x2e, 0x88, 0x23, 0xb3, 0x9c, 0x23, 0xe6, 0x9d, 0x8e, 0x05, 0x8c, 0x81, + 0xda, 0x44, 0x7c, 0x02, 0x00, 0x74, 0x91, 0xe3, 0xbc, 0xa4, 0xa4, 0xed, + 0x82, 0x40, 0xf3, 0x26, 0x3e, 0x21, 0x71, 0x9e, 0xa5, 0x85, 0xc4, 0x18, + 0x70, 0x92, 0x34, 0xec, 0xbb, 0x56, 0x0f, 0xd2, 0x0f, 0xeb, 0x03, 0xf8, + 0x2f, 0x3e, 0xb7, 0xed, 0x4e, 0x71, 0x68, 0x21, 0xa3, 0x71, 0xd4, 0x73, + 0xca, 0x4a, 0x75, 0x2f, 0xc6, 0xb9, 0xd8, 0xae, 0x01, 0x84, 0xba, 0x78, + 0x08, 0x9b, 0x1f, 0xe8, 0x47, 0xa6, 0xed, 0xdc, 0xf0, 0xb3, 0xc3, 0xb2, + 0x1a, 0x1a, 0xfa, 0x9c, 0xed, 0xcd, 0xf3, 0x9d, 0xdf, 0x19, 0x4f, 0xfb, + 0x47, 0xad, 0x47, 0xa7, 0xed, 0xdb, 0xcf, 0xab, 0x1a, 0xed, 0xf0, 0x8f, + 0x8a, 0x4a, 0x6d, 0x0b, 0x73, 0x1f, 0x1a, 0xb4, 0x0f, 0x18, 0x3f, 0x86, + 0xaa, 0x60, 0x65, 0x13, 0xad, 0x82, 0x3c, 0x36, 0x9f, 0xef, 0x56, 0x4e, + 0xd2, 0x7d, 0xbc, 0x79, 0xa7, 0xd5, 0x25, 0x21, 0x0c, 0xc8, 0xef, 0x68, + 0xf9, 0xb5, 0x45, 0xd5, 0xdb, 0xfe, 0x93, 0xee, 0x6f, 0xfb, 0x55, 0x93, + 0x24, 0x68, 0xa0, 0x44, 0x1f, 0x73, 0xa1, 0x25, 0x35, 0xfd, 0x1b, 0x8f, + 0x0f, 0x20, 0x7c, 0x02, 0xaf, 0x91, 0x49, 0x60, 0x82, 0xf2, 0xf7, 0xbf, + 0xe8, 0xb0, 0x01, 0xb9, 0xca, 0xcb, 0xb2, 0x9c, 0xf7, 0x9a, 0xf1, 0xc8, + 0x71, 0x1a, 0x39, 0xe7, 0xe8, 0xb4, 0xff, 0x00, 0x12, 0xa5, 0x55, 0x42, + 0xa9, 0x71, 0x3b, 0x9e, 0xef, 0xa4, 0xf7, 0x72, 0x7c, 0x92, 0x53, 0x9a, + 0xde, 0x9c, 0xf6, 0x91, 0x2e, 0x3b, 0x4f, 0xd2, 0xd2, 0x61, 0x5f, 0xc4, + 0xb7, 0x27, 0x0c, 0xb7, 0x64, 0xb8, 0x30, 0x43, 0x24, 0x01, 0xc8, 0xee, + 0x25, 0x1f, 0x78, 0x8e, 0xc1, 0x3c, 0xb4, 0x02, 0x74, 0x49, 0x4d, 0x2c, + 0xff, 0x00, 0xb4, 0xe6, 0x30, 0xb1, 0xc5, 0xac, 0x07, 0x9f, 0x9f, 0xc1, + 0x54, 0xc3, 0xe9, 0xb6, 0xe3, 0xdd, 0x55, 0x9e, 0xa0, 0x73, 0x58, 0xe0, + 0x48, 0xf1, 0x5a, 0x65, 0x85, 0xc6, 0x60, 0xfc, 0x82, 0x73, 0x59, 0x0d, + 0x98, 0x22, 0x3c, 0x42, 0x4a, 0x56, 0x6b, 0xaa, 0xf5, 0x59, 0xbd, 0xdb, + 0x1c, 0x35, 0x61, 0x8d, 0x0f, 0x92, 0x80, 0xf5, 0x6c, 0x91, 0x4b, 0xeb, + 0x79, 0xf0, 0x26, 0x3f, 0x2a, 0x59, 0xa5, 0xd6, 0x1a, 0xbd, 0x31, 0x2f, + 0xdd, 0xed, 0xf0, 0x1e, 0x7f, 0x24, 0x4a, 0xf1, 0x69, 0x63, 0x43, 0x5d, + 0xee, 0x3c, 0x92, 0x79, 0x24, 0xf2, 0x52, 0x53, 0x52, 0xc7, 0xf5, 0x10, + 0x60, 0x54, 0x0c, 0x78, 0x11, 0xfd, 0xe9, 0xb1, 0xea, 0xca, 0xb6, 0xf1, + 0xf6, 0x86, 0xc3, 0x60, 0xf7, 0x1c, 0xf8, 0x68, 0xae, 0x1c, 0x6c, 0x6f, + 0xe5, 0x02, 0x38, 0x82, 0x42, 0x25, 0x14, 0x91, 0x68, 0x2d, 0x71, 0x3c, + 0xe8, 0xef, 0x34, 0x94, 0xe5, 0x75, 0x6c, 0x67, 0x3a, 0xca, 0x45, 0x63, + 0x59, 0x90, 0x26, 0x20, 0xb7, 0x51, 0xa8, 0x5d, 0x8f, 0xd5, 0xeb, 0xed, + 0xc9, 0xe9, 0xf5, 0xd9, 0x7c, 0x0b, 0x44, 0xb5, 0xf1, 0xac, 0x90, 0x62, + 0x7e, 0x6b, 0x97, 0xea, 0xcd, 0xb9, 0xf6, 0x56, 0x31, 0xe4, 0x38, 0x1d, + 0x22, 0x27, 0xcf, 0x95, 0xbf, 0xf5, 0x39, 0xd7, 0x8c, 0x5b, 0xa8, 0xc8, + 0x1e, 0xf6, 0x3c, 0x38, 0x1d, 0x0f, 0xb5, 0xc3, 0xcb, 0xcc, 0x24, 0xa7, + 0x6a, 0xc6, 0x49, 0x55, 0xdd, 0x40, 0x74, 0x3b, 0xef, 0xf2, 0x2a, 0xed, + 0x91, 0x20, 0x21, 0x32, 0x7d, 0xc0, 0x0f, 0x30, 0x92, 0x9a, 0xcd, 0xc6, + 0xd4, 0x1f, 0x39, 0x2a, 0x66, 0x91, 0x1c, 0x2b, 0x03, 0x91, 0x23, 0xe2, + 0x85, 0x76, 0x4e, 0x3d, 0x72, 0x5f, 0x6b, 0x1a, 0x39, 0xd5, 0xc1, 0x25, + 0x23, 0x75, 0x4a, 0x3e, 0x90, 0x80, 0x84, 0xee, 0xad, 0xd3, 0x9a, 0x09, + 0x39, 0x0d, 0x70, 0x6c, 0xee, 0xdb, 0x26, 0x23, 0xe0, 0x15, 0x13, 0xf5, + 0xa7, 0xa0, 0x86, 0xeb, 0x96, 0x07, 0x3a, 0x6d, 0x7c, 0xff, 0x00, 0xd4, + 0xa4, 0xa7, 0x4f, 0xd3, 0x92, 0x3e, 0x2a, 0xcd, 0x55, 0x43, 0xc7, 0x80, + 0x58, 0x7f, 0xf3, 0xb7, 0xa0, 0x34, 0xb6, 0x32, 0x0b, 0xa3, 0x58, 0x6d, + 0x6f, 0xff, 0x00, 0xc8, 0xad, 0x3e, 0x99, 0xd5, 0xf0, 0x3a, 0x8b, 0x1d, + 0x6e, 0x15, 0x9e, 0xa3, 0x18, 0x76, 0xbc, 0x10, 0x5a, 0xe6, 0x9e, 0x75, + 0x07, 0x54, 0x94, 0xd5, 0xfa, 0xc7, 0x9c, 0xfc, 0x3c, 0x1b, 0x5f, 0x49, + 0xdb, 0x7d, 0x87, 0xd1, 0xa5, 0xff, 0x00, 0xba, 0x48, 0xf7, 0x3b, 0xe4, + 0x17, 0x9e, 0x53, 0x86, 0xfa, 0x32, 0x19, 0x91, 0x5d, 0xd1, 0x63, 0x1d, + 0xbb, 0x59, 0xd7, 0xc6, 0x7e, 0x2b, 0xb1, 0xfa, 0xc4, 0xd7, 0xe5, 0x64, + 0x33, 0x1c, 0x3b, 0xd9, 0x4c, 0x92, 0x3f, 0x96, 0xfd, 0x4f, 0xe0, 0xb1, + 0x8f, 0x47, 0x7b, 0xb8, 0x29, 0x29, 0xd9, 0xc2, 0xca, 0xae, 0xe6, 0x07, + 0xb4, 0x8d, 0x79, 0x1e, 0x05, 0x69, 0x52, 0xe6, 0xae, 0x43, 0xf6, 0x5f, + 0x50, 0xa1, 0xdb, 0xe8, 0xb3, 0x6f, 0x89, 0x07, 0x4f, 0x9a, 0xd3, 0xc6, + 0x39, 0xac, 0x63, 0x45, 0xc6, 0xcd, 0xf1, 0xab, 0x9a, 0x1a, 0xe6, 0x9f, + 0xc8, 0x92, 0x9e, 0xa2, 0xb2, 0xd5, 0x65, 0x9b, 0x57, 0x3b, 0x55, 0xef, + 0x8d, 0x6f, 0x73, 0x7e, 0x35, 0x9f, 0xe0, 0xac, 0xb3, 0x24, 0x01, 0xae, + 0x51, 0xe3, 0x81, 0x53, 0xa5, 0x25, 0x3b, 0xcd, 0x2d, 0x54, 0xba, 0xd6, + 0xd7, 0x74, 0xfb, 0x1a, 0x75, 0x92, 0xdd, 0x3f, 0xb4, 0x15, 0x06, 0xe7, + 0xd0, 0xfa, 0xbd, 0x4a, 0xb2, 0x2d, 0xb8, 0x1e, 0x36, 0xb0, 0x37, 0xe4, + 0x77, 0x70, 0xb3, 0xcb, 0xf3, 0x6e, 0xb3, 0x75, 0xf6, 0x1f, 0x4c, 0x49, + 0x0d, 0xed, 0xe4, 0x92, 0x9d, 0x13, 0xb8, 0x70, 0x79, 0x02, 0x3e, 0x29, + 0xaa, 0x78, 0x73, 0x88, 0x22, 0x08, 0x7c, 0x90, 0xa6, 0xf0, 0xd2, 0x0f, + 0x68, 0x03, 0xf8, 0x28, 0x56, 0xc9, 0x2c, 0x7f, 0x12, 0x49, 0x9f, 0x99, + 0x49, 0x4d, 0xba, 0x64, 0xbf, 0xcb, 0x9f, 0xc1, 0x70, 0x85, 0xd6, 0xbe, + 0xdf, 0x55, 0x84, 0x39, 0xa1, 0xce, 0xde, 0xde, 0xe3, 0x5e, 0x21, 0x77, + 0x54, 0x72, 0xf2, 0x75, 0x8e, 0x57, 0x23, 0x91, 0x84, 0x37, 0x9b, 0x5a, + 0x76, 0x58, 0x49, 0xf7, 0x0e, 0xfa, 0xf7, 0x1d, 0xd2, 0x53, 0x54, 0xe4, + 0xe4, 0x9f, 0xa1, 0x5b, 0x0b, 0x3b, 0x7b, 0xa0, 0x8f, 0xc1, 0x13, 0xed, + 0x57, 0xed, 0x8f, 0x4d, 0xbf, 0x09, 0x52, 0x0e, 0xd8, 0x63, 0x21, 0x9b, + 0x4f, 0x01, 0xe0, 0x7b, 0x4a, 0x36, 0xc6, 0xc4, 0xc6, 0x9e, 0x29, 0x29, + 0xb7, 0xb5, 0xde, 0x0a, 0x41, 0x8e, 0xf0, 0x53, 0xbe, 0xca, 0xe8, 0x69, + 0x75, 0xae, 0x0c, 0x6b, 0x44, 0x9d, 0x78, 0x58, 0xd6, 0xf5, 0x6b, 0xf3, + 0x1e, 0xea, 0x7a, 0x70, 0x37, 0x34, 0x7d, 0x2b, 0x27, 0x6b, 0x1b, 0xf1, + 0x77, 0xf0, 0x09, 0x29, 0xbd, 0x91, 0x95, 0x4e, 0x38, 0xf7, 0x10, 0x5d, + 0xe0, 0x35, 0x2a, 0xb8, 0x65, 0xf9, 0x10, 0xeb, 0x7f, 0x45, 0x59, 0xd4, + 0x56, 0x0f, 0xb8, 0xff, 0x00, 0x5b, 0xc1, 0x3e, 0x2e, 0x17, 0xa7, 0xfa, + 0x5b, 0x66, 0xdb, 0xbb, 0xbc, 0x8f, 0x68, 0x27, 0xf7, 0x02, 0xb4, 0x64, + 0x08, 0x80, 0x92, 0x91, 0x8a, 0xc3, 0x40, 0x6b, 0x40, 0x68, 0x1d, 0x82, + 0x8e, 0xcd, 0xc7, 0xba, 0x28, 0x24, 0xf2, 0xd0, 0x3c, 0xb9, 0x44, 0x0d, + 0xd3, 0x41, 0x12, 0x92, 0x90, 0xfa, 0x62, 0x34, 0x26, 0x53, 0xfa, 0x4e, + 0xd0, 0x93, 0x3e, 0x2a, 0xcb, 0x6b, 0x6b, 0x44, 0x9f, 0xc1, 0x42, 0xc7, + 0xb5, 0x8d, 0xde, 0xee, 0x09, 0x01, 0xa0, 0x72, 0xe2, 0x7b, 0x04, 0x94, + 0xc5, 0xad, 0x20, 0x44, 0xc7, 0x82, 0x16, 0x45, 0x8d, 0xa6, 0xbd, 0xf6, + 0x3e, 0x1b, 0xa0, 0xf9, 0x9d, 0x00, 0x47, 0x63, 0x48, 0xf7, 0x38, 0x82, + 0xee, 0xe0, 0x76, 0xf2, 0x0a, 0x9d, 0x75, 0xfd, 0xb6, 0xf1, 0x91, 0x6f, + 0xb6, 0x9a, 0xe7, 0xec, 0xf5, 0x90, 0x7d, 0xc7, 0x83, 0x63, 0xbf, 0x82, + 0x4a, 0x49, 0x64, 0x34, 0xb0, 0xb7, 0x4e, 0x7f, 0x22, 0x63, 0x7b, 0xf8, + 0x47, 0x7e, 0x23, 0x2c, 0x80, 0x5c, 0x4c, 0x78, 0x26, 0x38, 0xc1, 0xbc, + 0x48, 0x49, 0x4d, 0x7d, 0xf6, 0xf6, 0x1a, 0x23, 0xe0, 0x39, 0xff, 0x00, + 0x69, 0x87, 0x0f, 0xcd, 0x30, 0xa0, 0x6a, 0x77, 0x89, 0x2a, 0x78, 0xed, + 0x73, 0x6d, 0x69, 0x1c, 0xa4, 0xa6, 0x19, 0xe7, 0xd3, 0xbd, 0x85, 0xba, + 0xf2, 0x4c, 0x79, 0xca, 0x3f, 0x4a, 0xeb, 0x0c, 0xe9, 0xf6, 0xda, 0xfb, + 0x2a, 0x7b, 0xc5, 0x81, 0xa2, 0x1b, 0x1a, 0x6d, 0x9f, 0x1f, 0x8a, 0xad, + 0x9b, 0x0e, 0xb7, 0x41, 0x1a, 0x2a, 0x6f, 0x91, 0xa4, 0x80, 0x0a, 0x4a, + 0x6f, 0x75, 0xff, 0x00, 0xac, 0x79, 0x59, 0x4d, 0x60, 0xc5, 0xdf, 0x8a, + 0xc2, 0xe0, 0xc7, 0x43, 0xbd, 0xd0, 0x75, 0x27, 0x48, 0xec, 0x16, 0x2d, + 0x59, 0x3d, 0x44, 0x36, 0x06, 0x6d, 0x8d, 0x61, 0x32, 0x7f, 0x49, 0x66, + 0xa9, 0xef, 0x05, 0xf7, 0xd5, 0x5c, 0x88, 0x6e, 0xe7, 0xb8, 0x7c, 0xb6, + 0x8f, 0xca, 0x8e, 0xca, 0x1c, 0xf3, 0xbd, 0xcd, 0x00, 0x93, 0x20, 0x0e, + 0x02, 0x4a, 0x6c, 0xd2, 0x5e, 0xf6, 0x03, 0x63, 0xdf, 0x64, 0xf9, 0x9f, + 0xc6, 0x4a, 0x2d, 0x40, 0x06, 0x96, 0x46, 0xd0, 0xde, 0x07, 0xc5, 0x2c, + 0x5a, 0xe2, 0x3d, 0x41, 0x0d, 0xf8, 0x94, 0xb3, 0x58, 0xe0, 0xdf, 0x52, + 0xa7, 0x7b, 0x58, 0x61, 0xdf, 0x02, 0x92, 0x95, 0x1b, 0x2c, 0x03, 0xf3, + 0x2c, 0xf6, 0xbb, 0xc9, 0xdd, 0x8f, 0xcd, 0x62, 0xdd, 0x4d, 0x6c, 0xe9, + 0xf6, 0x3c, 0x8f, 0x79, 0x73, 0x5a, 0xd3, 0xdf, 0x43, 0xaa, 0xb9, 0x5e, + 0x43, 0xf7, 0xbe, 0x97, 0xda, 0x74, 0x87, 0x02, 0x40, 0x3e, 0xd3, 0xfd, + 0xc4, 0x21, 0x64, 0x57, 0x47, 0xd9, 0x4d, 0x62, 0xdd, 0xee, 0xdd, 0xbb, + 0x51, 0x1c, 0xa4, 0xa6, 0x8e, 0x1d, 0x6d, 0xe7, 0xc5, 0x6f, 0x74, 0xdb, + 0x8e, 0x1d, 0xe3, 0x23, 0x1d, 0xc1, 0x96, 0x70, 0x74, 0xd1, 0xcd, 0xf0, + 0x70, 0xee, 0xb0, 0xaa, 0x1b, 0x1d, 0xb4, 0x98, 0xd5, 0x6a, 0x61, 0xb8, + 0x6e, 0x87, 0x76, 0xd6, 0x67, 0xc5, 0x25, 0x3b, 0x4f, 0xb1, 0xf7, 0x5c, + 0xfb, 0x5d, 0x13, 0x61, 0xdd, 0xa7, 0x1a, 0xa9, 0x80, 0x63, 0x55, 0x5e, + 0xad, 0xad, 0x6e, 0xe9, 0x1b, 0x4f, 0x98, 0x85, 0x62, 0xb7, 0xd6, 0x4c, + 0x09, 0x3e, 0x3e, 0x09, 0x29, 0x98, 0x00, 0xa8, 0x02, 0x6a, 0x30, 0x09, + 0xd9, 0xfb, 0xbd, 0xc7, 0xc1, 0x1b, 0x69, 0x9f, 0x24, 0x8d, 0x61, 0xcd, + 0xda, 0x40, 0x3f, 0x14, 0x94, 0xa0, 0x64, 0x48, 0xd6, 0x52, 0x92, 0xa2, + 0xc9, 0xad, 0xe1, 0x8f, 0x3e, 0xd7, 0x68, 0xd2, 0x78, 0x9f, 0x09, 0xfe, + 0xf4, 0x57, 0x56, 0x48, 0xd0, 0x11, 0xe6, 0x12, 0x53, 0x4a, 0xf6, 0xd9, + 0x43, 0x8e, 0x46, 0x38, 0x24, 0xf3, 0x6d, 0x43, 0xf3, 0xc7, 0x88, 0xfe, + 0x52, 0x2b, 0x2f, 0xaf, 0x23, 0x1f, 0xd4, 0x61, 0x90, 0x61, 0x1f, 0xd3, + 0x90, 0xa9, 0x1c, 0x23, 0x8f, 0x7b, 0xae, 0xa9, 0xdb, 0x6a, 0x7f, 0xf3, + 0x95, 0xf6, 0xdd, 0x3a, 0x38, 0x78, 0x24, 0xa7, 0x64, 0xe9, 0x3f, 0xd5, + 0x51, 0xa8, 0xfe, 0x81, 0xa4, 0x7e, 0x6c, 0x94, 0xce, 0x7e, 0x87, 0xe0, + 0x52, 0xae, 0x3d, 0x28, 0x22, 0x0c, 0x7e, 0x29, 0x29, 0xb1, 0x4b, 0xa1, + 0xa3, 0xbe, 0xe9, 0x95, 0x90, 0xea, 0xe7, 0xb0, 0x5a, 0xd4, 0x47, 0xa6, + 0x0f, 0xe7, 0x05, 0x9c, 0xe8, 0x8d, 0xdf, 0x80, 0x49, 0x4d, 0x67, 0x57, + 0x22, 0x0b, 0x41, 0xf8, 0xa0, 0xfd, 0x91, 0x9e, 0x7b, 0x79, 0xd9, 0xd9, + 0x5c, 0xd3, 0x98, 0x91, 0xdf, 0xba, 0x24, 0x37, 0x6c, 0xc2, 0x4a, 0x79, + 0xac, 0x3e, 0x8f, 0xd4, 0x7a, 0x94, 0x5d, 0xd5, 0x6d, 0x75, 0x78, 0xe7, + 0x56, 0xd0, 0xd1, 0x0e, 0x77, 0xcb, 0xb0, 0xf8, 0xae, 0x86, 0x9c, 0x6a, + 0x28, 0xa9, 0xb5, 0x55, 0x58, 0x6b, 0x1b, 0xa0, 0x68, 0x57, 0xc5, 0x4c, + 0x22, 0x4f, 0xca, 0x54, 0x5d, 0x5d, 0x6d, 0x3a, 0x24, 0xa6, 0x9b, 0xa9, + 0x69, 0xd6, 0x23, 0xe6, 0xa3, 0xe8, 0x37, 0xf7, 0x49, 0xf0, 0x85, 0x6d, + 0xce, 0x6c, 0xfa, 0x6d, 0x6f, 0xb8, 0x0f, 0x71, 0x03, 0xf2, 0xf8, 0x27, + 0x6f, 0xa7, 0xde, 0x4f, 0x8a, 0x4a, 0x6a, 0x8c, 0x61, 0xc8, 0x6a, 0x7f, + 0xb3, 0xb7, 0xf7, 0x61, 0x5e, 0x6b, 0xab, 0x3a, 0x06, 0x8d, 0x3c, 0x90, + 0x4e, 0x45, 0x76, 0xb8, 0xb6, 0xb0, 0x08, 0x1a, 0x69, 0xae, 0xe3, 0xe4, + 0x92, 0x9a, 0xc7, 0x1e, 0x62, 0x07, 0xc0, 0x0e, 0x49, 0xf0, 0x4c, 0xdc, + 0x07, 0x97, 0xfa, 0x96, 0x9d, 0xf6, 0x0f, 0xa3, 0xdd, 0xac, 0x1e, 0x0d, + 0xfe, 0xf5, 0xa1, 0x4d, 0x2e, 0x61, 0x2e, 0x78, 0x2e, 0xb0, 0xf3, 0x1c, + 0x34, 0x78, 0x04, 0x3c, 0x8c, 0x92, 0xe7, 0x1c, 0x6a, 0x0e, 0xdb, 0x00, + 0x06, 0xd7, 0xe9, 0xfa, 0x36, 0x9f, 0xfb, 0xf1, 0xec, 0x92, 0x9a, 0x16, + 0xd2, 0xeb, 0x2c, 0x75, 0x55, 0x3b, 0xda, 0x34, 0xb5, 0xfc, 0x11, 0xfc, + 0x91, 0xe6, 0x88, 0xda, 0x1c, 0xc0, 0x00, 0x1c, 0x68, 0x02, 0xd0, 0xc5, + 0xab, 0x19, 0xd5, 0x86, 0xd2, 0x25, 0xad, 0xd2, 0x40, 0x9f, 0xc7, 0xba, + 0xb5, 0xf6, 0x71, 0xa7, 0xb3, 0xef, 0x49, 0x4e, 0x47, 0xa4, 0xff, 0x00, + 0x0e, 0x11, 0x71, 0xb0, 0x9d, 0x90, 0xfd, 0xa7, 0x46, 0xc7, 0x69, 0xd4, + 0xfc, 0x56, 0x89, 0xc6, 0x6f, 0xee, 0xc1, 0x3e, 0x49, 0xda, 0xec, 0x8a, + 0x46, 0xc6, 0x16, 0x46, 0xa4, 0x03, 0x32, 0x09, 0xee, 0x52, 0x53, 0x8f, + 0x6e, 0x1b, 0xab, 0x24, 0x3d, 0xa4, 0x10, 0x60, 0x98, 0xee, 0xa0, 0x31, + 0x20, 0x87, 0x83, 0xa8, 0xe1, 0x6d, 0xbd, 0xbe, 0xa8, 0x6b, 0xac, 0x0d, + 0xf5, 0x7f, 0x3c, 0xb6, 0x60, 0xfc, 0x8a, 0x18, 0xa1, 0xa6, 0x34, 0xd3, + 0xb2, 0x4a, 0x70, 0x6c, 0xe9, 0xc6, 0xc7, 0xee, 0x7b, 0xdc, 0x7e, 0x00, + 0x01, 0xf8, 0x21, 0xbb, 0xa6, 0xb4, 0x70, 0x27, 0xe2, 0xba, 0x51, 0x43, + 0x07, 0x65, 0x17, 0xd1, 0x50, 0x12, 0xed, 0x07, 0x74, 0x94, 0xf1, 0x83, + 0x10, 0xbf, 0x33, 0x25, 0xd0, 0x03, 0x29, 0x6b, 0x2a, 0xd7, 0xcc, 0x7a, + 0x8e, 0xfc, 0xa1, 0x69, 0x0a, 0x2a, 0x15, 0xb5, 0xed, 0x87, 0x1d, 0x1b, + 0x1e, 0x13, 0xdc, 0xad, 0x2e, 0x93, 0x88, 0xdb, 0x71, 0xac, 0xc8, 0x73, + 0x41, 0xfb, 0x55, 0xb6, 0x5a, 0x3f, 0xa8, 0x5d, 0xb5, 0x9f, 0xf4, 0x5a, + 0x11, 0x5d, 0xd1, 0x70, 0x9f, 0xcb, 0x0b, 0x35, 0x07, 0xda, 0xe2, 0x04, + 0x8f, 0x2e, 0x12, 0x53, 0x87, 0xea, 0x47, 0xaa, 0xe2, 0x21, 0xb5, 0xbb, + 0xd2, 0x33, 0xdc, 0xc8, 0x12, 0xac, 0x53, 0x4b, 0xf2, 0x6e, 0x75, 0x00, + 0x34, 0x16, 0xb4, 0x13, 0xa4, 0x07, 0x03, 0x3d, 0xb5, 0xf0, 0x5a, 0x96, + 0x74, 0x5c, 0x47, 0xb1, 0xc1, 0xcf, 0x78, 0xde, 0xe0, 0xf2, 0x7d, 0xb3, + 0xb9, 0xa4, 0x11, 0x07, 0x6f, 0x1a, 0x29, 0x8e, 0x9d, 0x53, 0xad, 0x17, + 0x3c, 0xbc, 0x5a, 0x1b, 0xb3, 0xd8, 0x76, 0x88, 0x07, 0x4e, 0x02, 0x4a, + 0x79, 0xf6, 0x74, 0xbc, 0x6b, 0x6f, 0x74, 0x69, 0x76, 0x39, 0x35, 0xdb, + 0x5f, 0x91, 0xf7, 0x03, 0xfd, 0xc8, 0xee, 0xfa, 0xbf, 0x4b, 0xb8, 0x0b, + 0x42, 0xda, 0x29, 0xc1, 0xcd, 0xab, 0x26, 0xb3, 0xb4, 0xe4, 0x45, 0x77, + 0x03, 0xae, 0xf6, 0xc8, 0x6b, 0x1f, 0xaf, 0x70, 0x5c, 0xb5, 0x1a, 0x2b, + 0x31, 0x09, 0x29, 0xe4, 0xad, 0xfa, 0xb1, 0x5b, 0xb4, 0x68, 0xda, 0x7c, + 0x5a, 0x4a, 0x18, 0xe8, 0x59, 0xb4, 0xb6, 0x18, 0xcf, 0x5a, 0x38, 0x20, + 0xc1, 0x23, 0xce, 0x57, 0x64, 0x6b, 0x67, 0x68, 0x43, 0x7b, 0x5b, 0x1c, + 0x69, 0xe4, 0x92, 0x9e, 0x6a, 0xba, 0x29, 0x0c, 0xfb, 0x25, 0xf5, 0x58, + 0xdb, 0x2e, 0x9f, 0x44, 0xc4, 0x10, 0xe6, 0x8d, 0xde, 0xde, 0xda, 0x2b, + 0x38, 0x98, 0x97, 0xfa, 0x15, 0xfa, 0xad, 0x2d, 0xbc, 0x88, 0xb6, 0x62, + 0x01, 0x1e, 0x60, 0x95, 0x7b, 0x3e, 0x8f, 0x52, 0xad, 0xd5, 0xe9, 0x6d, + 0x44, 0x58, 0xc3, 0xe6, 0xde, 0xdf, 0x31, 0xa2, 0x95, 0x4f, 0x6d, 0xb5, + 0xb6, 0xd6, 0xce, 0xd7, 0x8d, 0xc3, 0x44, 0x94, 0xa6, 0xe3, 0x9e, 0xe7, + 0x5f, 0x05, 0x31, 0x54, 0x78, 0x4a, 0x9b, 0x4f, 0x71, 0xf8, 0xa6, 0xb2, + 0xc0, 0xd3, 0x06, 0x35, 0x49, 0x48, 0xdd, 0x8e, 0xc7, 0x08, 0x7c, 0x10, + 0x79, 0x10, 0x86, 0x08, 0xa4, 0x86, 0x3b, 0xdd, 0x59, 0xd0, 0x38, 0xea, + 0x41, 0x3e, 0x28, 0xb3, 0x3a, 0xfd, 0xc8, 0x19, 0x1e, 0xab, 0x3d, 0xcd, + 0x1b, 0x98, 0x7e, 0x93, 0x63, 0x5f, 0x92, 0x4a, 0x63, 0xd4, 0x59, 0x6b, + 0xf1, 0x2d, 0x18, 0x92, 0x32, 0x03, 0x49, 0xab, 0xb0, 0x2e, 0x1d, 0xbe, + 0x6a, 0x8d, 0x39, 0x75, 0x66, 0x63, 0x35, 0xfb, 0x4d, 0x77, 0xb4, 0x86, + 0xd9, 0x59, 0x9d, 0x08, 0xe7, 0x42, 0xaf, 0x57, 0x7c, 0xb6, 0x40, 0x24, + 0x76, 0xee, 0xa8, 0xe5, 0xb2, 0xa3, 0x78, 0xc8, 0x68, 0x2c, 0xb2, 0x08, + 0x79, 0x1c, 0x3b, 0xc3, 0x77, 0x98, 0x49, 0x4d, 0xab, 0x6f, 0x6e, 0xf0, + 0xc9, 0xda, 0x1c, 0x62, 0x4f, 0x1c, 0xad, 0x1b, 0x71, 0xea, 0xa6, 0xa0, + 0xe1, 0x26, 0x08, 0x0e, 0x24, 0xfe, 0x69, 0x30, 0x4a, 0xe6, 0x32, 0x32, + 0x77, 0x5d, 0x48, 0x6c, 0x10, 0xe7, 0x16, 0xb8, 0x83, 0xc4, 0x02, 0x57, + 0x51, 0x47, 0xa5, 0xd4, 0x7a, 0x78, 0x65, 0xbe, 0xef, 0x6e, 0xc7, 0xf6, + 0x32, 0x3b, 0xe8, 0x92, 0x91, 0x32, 0xdd, 0xad, 0xb0, 0x4f, 0x07, 0x4f, + 0xbe, 0x02, 0xac, 0xfe, 0x04, 0xf0, 0x85, 0x9c, 0x3e, 0xc2, 0xea, 0x58, + 0xd2, 0x7d, 0x27, 0x96, 0x89, 0x24, 0x93, 0xed, 0xf1, 0x2a, 0x07, 0x28, + 0x98, 0x86, 0xc8, 0x89, 0x9e, 0xd1, 0xf1, 0x49, 0x49, 0xeb, 0xa6, 0xe7, + 0xee, 0x75, 0x40, 0xbb, 0x64, 0x1d, 0x07, 0x20, 0xa5, 0xbc, 0xc6, 0xcd, + 0xbe, 0xef, 0x05, 0x0e, 0x9d, 0x99, 0x91, 0x8d, 0x6b, 0xc3, 0x68, 0x7b, + 0xea, 0x74, 0xb8, 0xc9, 0x0d, 0x97, 0x49, 0x30, 0xd3, 0xe6, 0x79, 0x95, + 0x77, 0xf6, 0xc6, 0x4f, 0xa7, 0x3f, 0x62, 0xfd, 0x63, 0x8d, 0xb2, 0xde, + 0x12, 0x53, 0x8f, 0x67, 0x5f, 0xc5, 0xd4, 0x36, 0xd6, 0x90, 0x4c, 0x17, + 0x49, 0x31, 0xf0, 0x50, 0xb3, 0xeb, 0x06, 0x3b, 0x9a, 0x59, 0x53, 0xda, + 0xc7, 0x91, 0xa3, 0x8b, 0x4b, 0xb6, 0xc7, 0x27, 0x4e, 0x74, 0xe1, 0x63, + 0x8a, 0x5b, 0x2d, 0x96, 0x76, 0x80, 0x23, 0xfd, 0xaa, 0xc5, 0x58, 0xf8, + 0xc0, 0xee, 0x2c, 0x68, 0x3a, 0xcc, 0x98, 0x3e, 0x49, 0x29, 0xd9, 0xab, + 0xab, 0x60, 0x1a, 0xce, 0xcb, 0x18, 0x01, 0xfc, 0xe9, 0xef, 0x1d, 0xfc, + 0xd0, 0x6a, 0xeb, 0x0c, 0xc8, 0xc8, 0x65, 0x75, 0xbd, 0xad, 0xc5, 0x6b, + 0x43, 0xed, 0x3a, 0x6f, 0xde, 0x26, 0x5a, 0xd9, 0xfc, 0xde, 0x0c, 0xac, + 0xb6, 0xe3, 0xd0, 0xfd, 0x1c, 0xc8, 0x13, 0xce, 0x92, 0x91, 0xc4, 0xaa, + 0x5f, 0xb4, 0x9e, 0x3b, 0x6a, 0x74, 0x1a, 0x44, 0x94, 0x94, 0xe9, 0xf5, + 0x5e, 0xb7, 0x4b, 0xb1, 0x45, 0x38, 0xc4, 0x7a, 0x8f, 0x30, 0xed, 0xa6, + 0x3d, 0xa3, 0xfb, 0xd3, 0xf4, 0x5c, 0xc7, 0x33, 0x18, 0xd9, 0x73, 0x43, + 0x9e, 0xf7, 0x18, 0xd6, 0x40, 0x6b, 0x74, 0x80, 0x56, 0x76, 0x07, 0x4d, + 0x66, 0x66, 0x57, 0xa4, 0x00, 0xac, 0x01, 0xb9, 0xd2, 0x7b, 0x0d, 0x3b, + 0x2d, 0x63, 0xf5, 0x56, 0xcf, 0x53, 0x7d, 0x57, 0xfa, 0x55, 0x46, 0xac, + 0x97, 0x10, 0x52, 0x53, 0x74, 0x75, 0x16, 0x6d, 0x79, 0x0c, 0xda, 0xe8, + 0x26, 0x49, 0xee, 0x07, 0x75, 0xca, 0xe4, 0x5d, 0x6d, 0xd9, 0x16, 0x64, + 0xd7, 0x71, 0xad, 0xae, 0x20, 0xea, 0x25, 0xa6, 0x38, 0x25, 0x6f, 0x59, + 0xf5, 0x7a, 0x90, 0x08, 0xb7, 0x30, 0x35, 0xa4, 0x6d, 0x2d, 0xd7, 0xbf, + 0xcd, 0x56, 0x7f, 0x45, 0xe9, 0x2d, 0x6e, 0xc3, 0x91, 0x63, 0x87, 0x8b, + 0x5a, 0x4c, 0xfe, 0x29, 0x29, 0x54, 0x7d, 0x66, 0xa5, 0x8c, 0x6d, 0x35, + 0xd8, 0x58, 0x18, 0x3e, 0x8b, 0x98, 0x4c, 0x81, 0xf0, 0xf1, 0x56, 0xd9, + 0xf5, 0xaf, 0x14, 0x40, 0x7b, 0xa7, 0xc4, 0x43, 0xbf, 0xb9, 0x51, 0x1d, + 0x13, 0xa6, 0xf1, 0x48, 0xb6, 0x49, 0xfa, 0x44, 0x44, 0xfd, 0xea, 0x63, + 0xea, 0xe8, 0x23, 0x73, 0x09, 0x8f, 0x38, 0x49, 0x4d, 0x83, 0xf5, 0x9a, + 0x8a, 0xed, 0x7d, 0x8f, 0xbf, 0xd4, 0x65, 0x86, 0x2b, 0x6b, 0x5a, 0x7d, + 0x81, 0xa3, 0xf3, 0xfe, 0x25, 0x4a, 0xbf, 0xac, 0xb8, 0x6e, 0x2c, 0x6d, + 0xd6, 0xb0, 0x1d, 0xdb, 0x9c, 0xe0, 0x4c, 0x18, 0x1d, 0xfc, 0x8a, 0xa6, + 0xdf, 0xab, 0xec, 0x69, 0x3b, 0xad, 0x60, 0x27, 0x8e, 0x1c, 0x9c, 0xf4, + 0x1a, 0xb5, 0x8b, 0x03, 0xbb, 0xc6, 0xc9, 0x13, 0xf8, 0x24, 0xa7, 0x43, + 0xfe, 0x71, 0xe1, 0x12, 0xd8, 0xba, 0xa0, 0x0f, 0xd2, 0xf7, 0x7d, 0xc8, + 0xcf, 0xeb, 0xf8, 0x20, 0xb7, 0x65, 0x8c, 0x2d, 0xef, 0xef, 0x69, 0x1e, + 0x1d, 0x96, 0x2f, 0xfc, 0xdb, 0x6e, 0xbb, 0xac, 0x90, 0x7f, 0x34, 0x34, + 0x7f, 0x12, 0x9f, 0xfe, 0x6d, 0x63, 0xba, 0x00, 0x79, 0x1e, 0x23, 0x68, + 0x49, 0x4f, 0x45, 0xfb, 0x57, 0x1b, 0x66, 0xff, 0x00, 0xcd, 0x02, 0x4b, + 0xa4, 0x40, 0x55, 0x72, 0xba, 0xa5, 0x39, 0x3d, 0x3a, 0xe7, 0xe3, 0x3c, + 0x02, 0xe6, 0x38, 0xb4, 0xc8, 0xdd, 0x23, 0xc9, 0x62, 0x8f, 0xaa, 0xdd, + 0x3d, 0xb6, 0x8b, 0x1e, 0xfb, 0x1c, 0xee, 0xed, 0xec, 0xef, 0x88, 0x47, + 0x67, 0x40, 0xe9, 0xcd, 0x78, 0x21, 0x8f, 0xdd, 0xf1, 0xd3, 0xf0, 0x49, + 0x4d, 0x7c, 0x4e, 0xb9, 0xd5, 0x19, 0x5e, 0x36, 0x38, 0x3b, 0x01, 0xf4, + 0xd9, 0x10, 0xd8, 0x63, 0x24, 0x35, 0xce, 0xdc, 0x09, 0x5d, 0x5d, 0xb9, + 0xb4, 0x35, 0xe6, 0xb6, 0xeb, 0x61, 0xed, 0x20, 0x76, 0x59, 0x27, 0xa4, + 0xf4, 0xc2, 0xc1, 0x35, 0xbb, 0x41, 0xfb, 0xca, 0xbf, 0xec, 0x6e, 0x9f, + 0xbb, 0xd5, 0x0c, 0xb0, 0x3c, 0x12, 0x64, 0xd8, 0x4e, 0xa7, 0x94, 0x94, + 0xee, 0x1c, 0xbc, 0x6a, 0xc4, 0xe4, 0x5a, 0xdd, 0x84, 0x13, 0x2e, 0x10, + 0x27, 0x90, 0xb3, 0xed, 0xfa, 0xc3, 0x86, 0xf3, 0x14, 0xb8, 0x96, 0x69, + 0xa8, 0x05, 0xbf, 0x96, 0x10, 0x2a, 0xc2, 0xc5, 0xad, 0x9a, 0xb7, 0x7b, + 0x75, 0x80, 0xe7, 0x17, 0x7e, 0x54, 0x7a, 0x5d, 0x4d, 0x22, 0x6b, 0xa1, + 0x9a, 0xe9, 0x04, 0x03, 0xfc, 0x12, 0x53, 0x4b, 0x2e, 0xf1, 0x90, 0xca, + 0xde, 0xeb, 0xb6, 0x39, 0x8f, 0xdc, 0x1d, 0xb6, 0x41, 0x64, 0xcf, 0xa6, + 0x67, 0x8e, 0x39, 0x53, 0xab, 0xaf, 0x31, 0xb7, 0xd5, 0x55, 0x9a, 0x31, + 0xe6, 0x0b, 0xe3, 0xdb, 0x27, 0xe1, 0xc6, 0xaa, 0xfd, 0x99, 0xd7, 0xda, + 0xc1, 0x56, 0xd6, 0x7a, 0x60, 0xc9, 0x68, 0x6f, 0x0a, 0x9e, 0x47, 0xe9, + 0x58, 0xe1, 0xb1, 0xb1, 0x3a, 0x13, 0xa2, 0x4a, 0x75, 0x46, 0x53, 0x5a, + 0x5d, 0xb5, 0xdb, 0xa0, 0x69, 0xb7, 0x59, 0x2a, 0x15, 0xf5, 0x2a, 0xef, + 0x0c, 0x06, 0x58, 0x5e, 0xdd, 0x41, 0x03, 0x47, 0x77, 0x03, 0xe0, 0xb9, + 0xd7, 0xe3, 0x96, 0xb7, 0x63, 0x5b, 0xb5, 0xc4, 0xce, 0xe6, 0x39, 0xc0, + 0xfe, 0x04, 0x21, 0x7a, 0x79, 0x92, 0x4b, 0x6f, 0x78, 0x03, 0xce, 0x75, + 0x1d, 0xfb, 0xa4, 0xa7, 0x6e, 0xfc, 0xf1, 0x57, 0x4e, 0x75, 0xcd, 0x02, + 0xcb, 0xa9, 0x3b, 0x0b, 0x09, 0xda, 0x49, 0x6b, 0xb6, 0x38, 0xe9, 0xe5, + 0xaa, 0xc0, 0x7d, 0xfd, 0x5e, 0x9c, 0x06, 0x7a, 0x59, 0x0d, 0xdb, 0x63, + 0xde, 0x03, 0x60, 0xee, 0x02, 0x49, 0x1c, 0x0f, 0x03, 0xaf, 0x65, 0x67, + 0x1a, 0x8c, 0x91, 0xa1, 0xb0, 0x98, 0x3b, 0xa2, 0x35, 0x24, 0x99, 0x32, + 0xaf, 0x16, 0xde, 0x59, 0xef, 0x79, 0x00, 0xfc, 0x02, 0x4a, 0x67, 0x89, + 0xd4, 0xb1, 0x1d, 0x8a, 0xdb, 0x5e, 0xed, 0xa4, 0x30, 0x07, 0xee, 0x20, + 0x7b, 0x80, 0x82, 0xab, 0xdb, 0xd7, 0x3a, 0x73, 0x2f, 0xad, 0xad, 0x2e, + 0x3b, 0xe3, 0xdd, 0x23, 0x69, 0x03, 0x9e, 0xe8, 0x56, 0x61, 0xd6, 0x5c, + 0x77, 0x30, 0x3a, 0x44, 0x10, 0x75, 0xf9, 0xa6, 0x6e, 0x0d, 0x2c, 0x61, + 0x05, 0xad, 0x8f, 0x0d, 0xa0, 0x4a, 0x4a, 0x74, 0x47, 0x54, 0xc7, 0x7b, + 0x83, 0x2a, 0x83, 0x22, 0x64, 0xc2, 0x27, 0xdb, 0x68, 0x75, 0x7b, 0x9c, + 0xf6, 0xea, 0x60, 0x02, 0x40, 0x2b, 0x19, 0xd8, 0x14, 0xd8, 0xe9, 0x2d, + 0x1e, 0x40, 0x84, 0xdf, 0xb3, 0xe9, 0x6e, 0x8c, 0xac, 0x7c, 0x74, 0x49, + 0x4d, 0xbb, 0x3a, 0x86, 0x3b, 0x73, 0xa9, 0xae, 0xb7, 0xb7, 0x6d, 0xad, + 0x78, 0x7e, 0xe7, 0x40, 0xdc, 0xd0, 0x0b, 0x64, 0xf6, 0x4f, 0x93, 0xd4, + 0xf0, 0xcc, 0x06, 0x96, 0x38, 0x8d, 0x08, 0x04, 0x1e, 0x3e, 0x7d, 0xd5, + 0x27, 0xe1, 0x54, 0xd1, 0x0e, 0x00, 0xc6, 0xb0, 0xa9, 0x5f, 0x8b, 0x53, + 0x7e, 0x8b, 0x7e, 0x70, 0x92, 0x90, 0x66, 0x1c, 0x43, 0xd4, 0x69, 0xcb, + 0xc7, 0x6f, 0xa7, 0x60, 0x25, 0xaf, 0x68, 0x27, 0x6b, 0xa7, 0x83, 0x1f, + 0x02, 0xba, 0xfe, 0x89, 0x91, 0xb5, 0xee, 0xa8, 0x9d, 0x1e, 0x03, 0x87, + 0xc5, 0x71, 0xc6, 0xbd, 0xa5, 0xae, 0x02, 0x36, 0xad, 0xee, 0x9f, 0x7b, + 0x98, 0x6b, 0xb6, 0x20, 0xb4, 0xc1, 0xf8, 0x24, 0xa7, 0x4b, 0xeb, 0x4d, + 0x37, 0x0e, 0x99, 0x66, 0x46, 0x3c, 0xfa, 0x98, 0xa4, 0x5a, 0xd0, 0x3b, + 0xb4, 0x68, 0xf1, 0xfe, 0x6a, 0xe7, 0x9b, 0xd6, 0x4d, 0x78, 0xc2, 0xd6, + 0x81, 0x6b, 0x5f, 0x13, 0x58, 0x88, 0x04, 0xf8, 0x4f, 0x8f, 0x75, 0xdb, + 0xbb, 0x65, 0xd5, 0x41, 0xd6, 0xbb, 0x1b, 0x04, 0x78, 0x87, 0x08, 0x5c, + 0x1e, 0x4f, 0x4b, 0x38, 0xf9, 0x76, 0xe3, 0xeb, 0xb5, 0x84, 0x00, 0x07, + 0x06, 0x07, 0x3f, 0x30, 0x92, 0x92, 0x57, 0xd7, 0x2e, 0x36, 0x6a, 0xc3, + 0x5b, 0x60, 0x08, 0xdb, 0x20, 0xf9, 0xf9, 0x15, 0x6f, 0xf6, 0xed, 0x7b, + 0x36, 0xef, 0x66, 0xff, 0x00, 0xeb, 0x69, 0xfd, 0xff, 0x00, 0x25, 0x5d, + 0x98, 0x4d, 0x6e, 0xd0, 0x4f, 0x06, 0x60, 0xac, 0x6f, 0x4b, 0xf5, 0xfd, + 0xbd, 0xbd, 0x5f, 0xfb, 0xf2, 0x4a, 0x76, 0x8d, 0x3b, 0x5a, 0x06, 0xd2, + 0x00, 0xee, 0x7f, 0xdc, 0x9a, 0xb0, 0xcd, 0x43, 0x84, 0x78, 0x1f, 0x35, + 0x17, 0x58, 0x48, 0x99, 0x31, 0xdc, 0xa9, 0x06, 0x86, 0xfb, 0x88, 0x1a, + 0xa4, 0xa6, 0x7b, 0x98, 0x0c, 0x40, 0x88, 0xd7, 0xc1, 0x57, 0x36, 0x39, + 0xb2, 0x41, 0x82, 0xad, 0x00, 0xd2, 0xcd, 0x5a, 0x4c, 0xe9, 0xdf, 0xf8, + 0x2a, 0xf9, 0x1b, 0x03, 0x83, 0x43, 0x7d, 0xa0, 0x82, 0xe8, 0x71, 0x92, + 0x92, 0x9b, 0xdd, 0x1f, 0x2c, 0xd4, 0x6c, 0xb8, 0xb2, 0x1c, 0x7d, 0xa1, + 0xed, 0x89, 0x8d, 0x0c, 0x70, 0xae, 0xbb, 0xa8, 0x5b, 0x74, 0xb4, 0xb5, + 0xce, 0x6f, 0x8b, 0x9e, 0x7f, 0x20, 0x54, 0xb1, 0xee, 0xa6, 0xd2, 0xef, + 0xb2, 0x54, 0x2b, 0x63, 0x7b, 0x44, 0x9f, 0xc6, 0x4a, 0x29, 0x66, 0x43, + 0xb5, 0x07, 0x6f, 0xc8, 0x24, 0xa6, 0x63, 0x20, 0x83, 0x3e, 0x93, 0x23, + 0xe1, 0x2a, 0x4e, 0xcb, 0xb3, 0x6f, 0xb4, 0x34, 0x1e, 0xda, 0x28, 0x57, + 0x87, 0x91, 0xba, 0x4b, 0xa5, 0xa4, 0x77, 0x99, 0x95, 0x60, 0xe1, 0x34, + 0x34, 0x3b, 0x92, 0x7b, 0x19, 0x49, 0x48, 0x59, 0x7e, 0x43, 0xb9, 0x74, + 0x7c, 0x34, 0x44, 0x22, 0xd7, 0x6a, 0x4f, 0xc2, 0x65, 0x1a, 0xba, 0x0f, + 0x07, 0x41, 0xe4, 0x88, 0xda, 0x80, 0x33, 0x1f, 0x7f, 0x29, 0x29, 0xaa, + 0xc6, 0x59, 0xdd, 0x1e, 0xaa, 0x9e, 0xf3, 0x04, 0xc0, 0xf1, 0x46, 0xf4, + 0xe0, 0xe9, 0xa2, 0x98, 0x1a, 0x44, 0xc4, 0x73, 0xaa, 0x4a, 0x59, 0xb5, + 0x36, 0x7d, 0xce, 0x3f, 0x20, 0xa2, 0xe7, 0x54, 0x0c, 0x34, 0x12, 0x63, + 0xc5, 0x12, 0x18, 0x07, 0x8a, 0x88, 0xd8, 0x07, 0x1e, 0xef, 0x24, 0x94, + 0xc0, 0x39, 0xa3, 0x46, 0x80, 0x0f, 0x33, 0xa9, 0x2a, 0x1a, 0x12, 0x27, + 0x99, 0xd3, 0xb2, 0x23, 0xdc, 0x07, 0x97, 0x03, 0xcc, 0x92, 0xa1, 0xb0, + 0x17, 0xee, 0x24, 0x47, 0x92, 0x4a, 0x5b, 0xb1, 0x9d, 0x3b, 0x26, 0x05, + 0xa3, 0x91, 0xf1, 0xf2, 0xfc, 0x54, 0xb6, 0xd6, 0x34, 0x71, 0x13, 0xe0, + 0xa2, 0x6c, 0xab, 0x81, 0xa0, 0x1c, 0x94, 0x94, 0xc3, 0x76, 0xee, 0xc2, + 0x07, 0x09, 0xc3, 0x8f, 0x23, 0x48, 0x4e, 0x4d, 0x7f, 0x9b, 0xa8, 0xf1, + 0xff, 0x00, 0x7a, 0x69, 0x60, 0xf2, 0xf3, 0x29, 0x29, 0x13, 0xec, 0x32, + 0x43, 0x41, 0x77, 0xfa, 0xf9, 0x21, 0xb8, 0x5c, 0x5d, 0xb2, 0x08, 0x1f, + 0x87, 0x9a, 0xb8, 0x1b, 0x58, 0xd6, 0x44, 0x94, 0x37, 0x5b, 0x53, 0x46, + 0xe2, 0x35, 0x1a, 0x0f, 0x8a, 0x4a, 0x40, 0x29, 0x92, 0x26, 0x1c, 0xee, + 0xca, 0x62, 0x82, 0x01, 0x10, 0x04, 0xf7, 0x02, 0x4a, 0x23, 0x6e, 0x06, + 0x5c, 0x46, 0xa3, 0x84, 0xc2, 0xc2, 0x49, 0x2e, 0xd0, 0xa4, 0xa5, 0xea, + 0x63, 0x1a, 0x49, 0x70, 0x92, 0x04, 0x00, 0xa4, 0x03, 0x66, 0x76, 0xc9, + 0x51, 0x0e, 0xd4, 0xc7, 0x07, 0xb4, 0x80, 0x13, 0x8b, 0x5a, 0x0e, 0xae, + 0x1f, 0x7a, 0x4a, 0x56, 0xc1, 0xb8, 0x9d, 0xa2, 0x7c, 0xf5, 0x43, 0x2d, + 0x36, 0x3e, 0x1d, 0x00, 0x0f, 0x04, 0xf6, 0x64, 0x56, 0xdd, 0x37, 0xb6, + 0x67, 0x5d, 0x47, 0x74, 0x27, 0x65, 0xe2, 0xb0, 0x81, 0xeb, 0x56, 0x0f, + 0x9b, 0x87, 0xf7, 0xa4, 0xa4, 0xde, 0x88, 0x1a, 0x34, 0x0f, 0x9a, 0x1d, + 0xad, 0x73, 0x78, 0xe4, 0xf6, 0x0a, 0x0f, 0xea, 0x18, 0x91, 0x3f, 0x68, + 0xab, 0xc3, 0xe9, 0xb7, 0x9f, 0xbd, 0x00, 0xf5, 0x4c, 0x1d, 0x5c, 0x72, + 0xaa, 0x8e, 0xde, 0xe0, 0x92, 0x99, 0xbd, 0xac, 0x69, 0x31, 0xac, 0xfc, + 0x95, 0x3b, 0x00, 0x2d, 0x2e, 0x23, 0xe4, 0xa4, 0xee, 0xaf, 0xd3, 0x5c, + 0xe3, 0xfa, 0xc3, 0x04, 0x0e, 0x64, 0x76, 0xf8, 0x2a, 0x77, 0x75, 0x4c, + 0x03, 0x3b, 0x6e, 0x6e, 0x9e, 0x7f, 0xec, 0x49, 0x4c, 0x2d, 0x6e, 0x82, + 0x07, 0x0b, 0x46, 0x82, 0x3d, 0x26, 0x79, 0x68, 0x56, 0x45, 0xfd, 0x4f, + 0x0c, 0x8d, 0x2e, 0x04, 0xf2, 0x20, 0x1f, 0xee, 0x5a, 0x98, 0x84, 0x1a, + 0xdc, 0xce, 0xe4, 0x48, 0x49, 0x4f, 0x49, 0xd2, 0xed, 0x2f, 0xc7, 0xd8, + 0x4c, 0xb9, 0x9f, 0x91, 0x67, 0x75, 0xfc, 0x6d, 0xb7, 0x57, 0x90, 0xd0, + 0x4b, 0x5f, 0xec, 0x79, 0x1e, 0x23, 0x85, 0x3e, 0x95, 0x71, 0x6d, 0xcd, + 0x69, 0xe1, 0xfa, 0x1f, 0x9a, 0xd6, 0xcf, 0xa3, 0xd5, 0xc6, 0x7b, 0x36, + 0xee, 0x78, 0x1b, 0x98, 0x3b, 0xee, 0x1a, 0x84, 0x94, 0xf3, 0x94, 0xb4, + 0x06, 0xe8, 0xdd, 0xa3, 0x9d, 0xc7, 0x95, 0x8f, 0x38, 0xdf, 0x6f, 0xf4, + 0x7e, 0xcf, 0xfa, 0x5f, 0x5b, 0xf9, 0xdd, 0xc6, 0x66, 0x66, 0x61, 0x68, + 0x55, 0xd4, 0x71, 0x49, 0x20, 0x92, 0x1d, 0xdc, 0x6d, 0x32, 0x85, 0xf6, + 0x9c, 0x6d, 0xf1, 0xe9, 0x18, 0xf5, 0xbd, 0x5f, 0x53, 0xbc, 0xf1, 0x31, + 0xca, 0x4a, 0x6d, 0x7e, 0xcf, 0x6b, 0x9b, 0xb9, 0x8e, 0x04, 0x0f, 0x8f, + 0xf1, 0x52, 0x6e, 0x1b, 0x47, 0x69, 0x23, 0xcd, 0x5b, 0x65, 0x7a, 0x19, + 0xd4, 0x26, 0xac, 0xd2, 0xd2, 0x4c, 0x4c, 0x73, 0x04, 0x04, 0x94, 0xd5, + 0x2c, 0x2d, 0x91, 0xb3, 0x5e, 0xd0, 0xdd, 0x3f, 0xea, 0x90, 0x2d, 0xc7, + 0x0f, 0xd5, 0xcd, 0x20, 0x03, 0x13, 0xc2, 0xd2, 0x7b, 0x18, 0xe6, 0xb9, + 0xed, 0x6e, 0xd6, 0x34, 0x4b, 0x9e, 0x4c, 0x81, 0xf3, 0x30, 0x82, 0xcf, + 0x4d, 0xe4, 0x35, 0x8e, 0x24, 0xfe, 0xef, 0x84, 0xfd, 0xe9, 0x29, 0xab, + 0x84, 0xfa, 0x70, 0x9f, 0x61, 0xb5, 0x8e, 0xda, 0xe8, 0xdb, 0xb4, 0x4f, + 0x1f, 0x15, 0x68, 0xf5, 0x7c, 0x70, 0x74, 0xa6, 0xd2, 0x3e, 0x03, 0xf8, + 0x95, 0x2f, 0xb3, 0x59, 0x24, 0xc1, 0xdb, 0xf1, 0x1f, 0xdc, 0x87, 0x66, + 0x28, 0x8e, 0x4e, 0xef, 0x0e, 0x52, 0x53, 0x27, 0x75, 0xdc, 0x71, 0xaf, + 0xa3, 0x64, 0x71, 0xf9, 0xbf, 0xde, 0xa2, 0xff, 0x00, 0xac, 0x15, 0x44, + 0x0c, 0x7b, 0x08, 0xf1, 0x96, 0xaa, 0xee, 0xc7, 0xd3, 0x5f, 0xc7, 0x45, + 0x11, 0x43, 0x08, 0xe3, 0x5f, 0x2e, 0xe9, 0x29, 0x3f, 0xfc, 0xe0, 0x6f, + 0x6c, 0x67, 0x0f, 0x32, 0xf1, 0xfd, 0xc9, 0xbf, 0xe7, 0x07, 0x66, 0xe3, + 0xeb, 0xfd, 0x7f, 0xfc, 0xc5, 0x07, 0xec, 0xc3, 0xe4, 0x7e, 0x4a, 0x5e, + 0x87, 0x71, 0x30, 0x0a, 0x4a, 0x49, 0xfb, 0x76, 0xd2, 0x67, 0xec, 0xd2, + 0x3c, 0xde, 0x78, 0xff, 0x00, 0x35, 0x48, 0xf5, 0xeb, 0xb8, 0x6e, 0x33, + 0x1b, 0x13, 0x32, 0xf2, 0x7e, 0x5f, 0x45, 0x44, 0x54, 0x48, 0x02, 0x5a, + 0x3e, 0x1c, 0xfe, 0x29, 0x9d, 0x40, 0xe7, 0x53, 0xf0, 0xff, 0x00, 0xcc, + 0x52, 0x53, 0x01, 0xd7, 0xf3, 0x8c, 0x8f, 0xb3, 0xd7, 0xf1, 0x92, 0x53, + 0x1e, 0xbb, 0xd4, 0x5c, 0x0c, 0x51, 0x58, 0x3f, 0xda, 0xfe, 0xf4, 0xce, + 0xc7, 0x74, 0x71, 0xa7, 0x69, 0x50, 0x14, 0xba, 0x46, 0x82, 0x7b, 0xeb, + 0xaf, 0xdc, 0x92, 0x96, 0x3d, 0x67, 0xa9, 0x4c, 0x6c, 0xac, 0x78, 0x7b, + 0x4e, 0x9f, 0x8a, 0x5f, 0xb5, 0xba, 0xa7, 0x11, 0x5c, 0xf8, 0xed, 0x3f, + 0x90, 0x94, 0x41, 0x4c, 0x19, 0x3a, 0x0f, 0x3f, 0xf6, 0xa7, 0x15, 0x30, + 0x0d, 0x34, 0x71, 0xe6, 0x4a, 0x4a, 0x6b, 0x9e, 0xa1, 0xd5, 0x04, 0xcd, + 0x8d, 0x20, 0x9f, 0xdc, 0x0a, 0x27, 0x3f, 0xaa, 0x6b, 0xfa, 0x66, 0x8d, + 0x79, 0xd8, 0xd0, 0x55, 0x87, 0x56, 0xd3, 0xf4, 0x80, 0x01, 0x33, 0xa8, + 0x6b, 0x80, 0xdb, 0xa1, 0xf1, 0x09, 0x29, 0xae, 0x7a, 0x87, 0x54, 0x24, + 0x4e, 0x4f, 0xdc, 0xd6, 0xc7, 0xfd, 0x4a, 0x87, 0xda, 0x3a, 0x8b, 0x8c, + 0xbb, 0x21, 0xdf, 0x1d, 0x07, 0xf0, 0x56, 0x5b, 0x40, 0x99, 0xe6, 0x51, + 0x1b, 0x4c, 0x47, 0x87, 0x89, 0x13, 0xfc, 0x52, 0x53, 0x48, 0xd9, 0x9c, + 0xe1, 0xae, 0x4d, 0x91, 0xe0, 0x1d, 0xfd, 0xc9, 0x13, 0x96, 0x47, 0xbe, + 0xfb, 0x7e, 0xf2, 0xb4, 0x3d, 0x02, 0x4c, 0xb7, 0xe2, 0x98, 0x54, 0x09, + 0xdb, 0x00, 0x6a, 0x92, 0x9c, 0xd3, 0x55, 0xce, 0x01, 0xbe, 0xa5, 0x91, + 0xe6, 0xf2, 0xa2, 0xec, 0x77, 0x97, 0x6a, 0xf7, 0x13, 0xdf, 0x53, 0xfd, + 0xeb, 0x55, 0xf4, 0xb4, 0x1d, 0x07, 0xc4, 0x94, 0x03, 0x50, 0xe4, 0x24, + 0xa6, 0x81, 0xc5, 0x21, 0xba, 0x4a, 0x9d, 0x78, 0xed, 0xdb, 0xe9, 0xbb, + 0x5a, 0xdc, 0x65, 0xc3, 0x9d, 0xae, 0x1c, 0x38, 0x2b, 0xc2, 0xb9, 0x01, + 0xa7, 0x89, 0xfa, 0x2a, 0x6d, 0xa6, 0xad, 0xdc, 0x13, 0x3d, 0xc4, 0x68, + 0x92, 0x9c, 0xc7, 0xe0, 0x06, 0x8d, 0x5b, 0xa7, 0x68, 0xee, 0xa2, 0x3a, + 0x49, 0x2d, 0xdc, 0xe0, 0xda, 0xda, 0xee, 0x0d, 0x84, 0x36, 0x7e, 0x1d, + 0xd6, 0xeb, 0x2b, 0x10, 0x5a, 0x5b, 0xea, 0x30, 0x7b, 0x80, 0x3c, 0x83, + 0xe3, 0xf0, 0xf1, 0x54, 0xae, 0x6b, 0x9c, 0xf2, 0xe7, 0xea, 0x4f, 0x8a, + 0x4a, 0x73, 0x5d, 0xd2, 0x6d, 0x6b, 0x5c, 0xe6, 0x34, 0x58, 0xd0, 0x24, + 0xba, 0xb2, 0x1f, 0xf7, 0x81, 0xaa, 0xa8, 0xec, 0x61, 0xdb, 0xef, 0x5a, + 0x84, 0x3e, 0xbb, 0x03, 0x98, 0x4b, 0x5c, 0x3e, 0x8b, 0x87, 0xd2, 0x1f, + 0x34, 0xb2, 0x43, 0x6e, 0xa8, 0x64, 0xb5, 0xa0, 0x59, 0xbb, 0x65, 0xc0, + 0x68, 0x37, 0x1d, 0x5a, 0xfd, 0x3f, 0x7b, 0xf2, 0xa4, 0xa7, 0x1c, 0xe3, + 0x69, 0xe1, 0xf2, 0x51, 0x38, 0xa4, 0x6a, 0x74, 0x95, 0x7c, 0x31, 0xa5, + 0xc6, 0x5c, 0xd8, 0xf0, 0xee, 0x54, 0x1f, 0x4e, 0xd0, 0x4c, 0x6e, 0x03, + 0xc4, 0x24, 0xa6, 0x83, 0xf1, 0xda, 0xd1, 0xe3, 0xe6, 0xba, 0x3c, 0x47, + 0x3b, 0xd3, 0x6b, 0x87, 0x25, 0xad, 0x3f, 0x82, 0xcc, 0xde, 0xf7, 0x34, + 0x35, 0x98, 0xec, 0x79, 0xf2, 0xd3, 0xef, 0x5a, 0xb8, 0x1a, 0xd1, 0x5c, + 0xb7, 0x69, 0x00, 0x34, 0xb7, 0xc1, 0x25, 0x3a, 0x18, 0xef, 0x87, 0x07, + 0x37, 0x83, 0x07, 0xe6, 0xba, 0x6a, 0xdd, 0xea, 0x54, 0xcb, 0x3b, 0xc6, + 0xbf, 0x15, 0xcc, 0xe3, 0x36, 0x3d, 0xbd, 0xc7, 0x1f, 0x25, 0xd0, 0x74, + 0xc3, 0xb9, 0xaf, 0xad, 0xc7, 0x51, 0x04, 0x42, 0x4a, 0x79, 0xfc, 0x9e, + 0x94, 0xda, 0x3a, 0xad, 0xed, 0x0d, 0xf6, 0x3c, 0x1b, 0x19, 0xf0, 0x76, + 0xbf, 0x81, 0x55, 0x3e, 0xc6, 0xef, 0xb4, 0xcc, 0x7b, 0x7f, 0x8a, 0xec, + 0x33, 0x30, 0xdb, 0x61, 0x65, 0xa3, 0xe9, 0x30, 0x16, 0x9f, 0xea, 0x95, + 0x91, 0xf6, 0x5f, 0xd6, 0x22, 0x3c, 0x92, 0x53, 0xff, 0xd9 +}; +size_t demo_008_jpg_len = 17842; diff --git a/lib/libesp32/JPEGDEC/examples/esp32_jpeg/esp32_jpeg.ino b/lib/libesp32/JPEGDEC/examples/esp32_jpeg/esp32_jpeg.ino new file mode 100644 index 000000000..694c27120 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/esp32_jpeg/esp32_jpeg.ino @@ -0,0 +1,92 @@ +// +// JPEG thumbnail decode test +// +// This example sketch decodes an EXIF thumbnail image +// embedded in a 12 megapixel photo taken on a mobile phone +// +// It's written to run on an ESP32 connected to a ILI9341 LCD +// although it can certainly be compiled on other target MCUs and displays +// +#include +#include "JPEGDEC.h" +#include "../test_images/thumb_test.h" + +// These pin definitions are for a custom ESP32 +// board. Please change them to match the display +// and board you're using + +#define CS_PIN 4 +#define DC_PIN 12 +#define LED_PIN 16 +#define RESET_PIN -1 +#define MISO_PIN 19 +#define MOSI_PIN 23 +#define SCK_PIN 18 + +// Static instance of the JPEGDEC structure. It requires about +// 17.5K of RAM. You can allocate it dynamically too. Internally it +// does not allocate or free any memory; all memory management decisions +// are left to you +JPEGDEC jpeg; + +// The LCD display library instance +SPILCD lcd; +// +// Pixel drawing callback +// called once for each set of MCUs (minimum coded units). +// JPEGDEC will try to send as many pixels as it can per call. +// In this case, it's as many as can fit in +// the internal 4K pixel buffer. This allows it to run more +// efficiently than calling this for every MCU. For this demo, the +// MCUs are only 4x4 pixels each since we ask to decode the image +// at 1/4 size +// +int drawMCUs(JPEGDRAW *pDraw) +{ + int iCount; + iCount = pDraw->iWidth * pDraw->iHeight; // number of pixels to draw in this call +// Serial.printf("Draw pos = %d,%d. size = %d x %d\n", pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight); + spilcdSetPosition(&lcd, pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight, DRAW_TO_LCD); + spilcdWriteDataBlock(&lcd, (uint8_t *)pDraw->pPixels, iCount*2, DRAW_TO_LCD | DRAW_WITH_DMA); + return 1; // returning true (1) tells JPEGDEC to continue decoding. Returning false (0) would quit decoding immediately. +} /* drawMCUs() */ + +void setup() +{ + Serial.begin(115200); + while (!Serial) {}; + spilcdInit(&lcd, LCD_ILI9341, FLAGS_NONE, 40000000, CS_PIN, DC_PIN, RESET_PIN, LED_PIN, MISO_PIN, MOSI_PIN, SCK_PIN); + spilcdSetOrientation(&lcd, LCD_ORIENTATION_90); + spilcdFill(&lcd, 0, DRAW_TO_LCD); // erase display to black + spilcdWriteString(&lcd, 46,0,(char *)"JPEG Thumbnail test", 0x7e0,0,FONT_12x16, DRAW_TO_LCD); + delay(4000); +} /* setup() */ + +void loop() { +long lTime; +char szTemp[64]; + + // Open a large JPEG image stored in FLASH memory (included as thumb_test.h) + // This image is 12 megapixels, but has a 320x240 embedded thumbnail in it + if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), drawMCUs)) + { + Serial.println("Successfully opened JPEG image"); + Serial.printf("Image size: %d x %d, orientation: %d, bpp: %d\n", jpeg.getWidth(), + jpeg.getHeight(), jpeg.getOrientation(), jpeg.getBpp()); + if (jpeg.hasThumb()) + Serial.printf("Thumbnail present: %d x %d\n", jpeg.getThumbWidth(), jpeg.getThumbHeight()); + jpeg.setPixelType(RGB565_BIG_ENDIAN); // The SPI LCD wants the 16-bit pixels in big-endian order + lTime = micros(); + // Draw the thumbnail image in the middle of the display (upper left corner = 120,100) at 1/4 scale + if (jpeg.decode(120,100,JPEG_SCALE_QUARTER | JPEG_EXIF_THUMBNAIL)) + { + lTime = micros() - lTime; + sprintf(szTemp, "Successfully decoded image in %d us", (int)lTime); + Serial.println(szTemp); + spilcdWriteString(&lcd, 0, 200, szTemp, 0xffe0, 0, FONT_8x8, DRAW_TO_LCD); + } + jpeg.close(); + } + + delay(10000); // repeat every 10 seconds +} diff --git a/lib/libesp32/JPEGDEC/examples/jpeg_perf_test/jpeg_perf_test.ino b/lib/libesp32/JPEGDEC/examples/jpeg_perf_test/jpeg_perf_test.ino new file mode 100644 index 000000000..f17951160 --- /dev/null +++ b/lib/libesp32/JPEGDEC/examples/jpeg_perf_test/jpeg_perf_test.ino @@ -0,0 +1,55 @@ +// +// Perf Test +// +#include +#include "../test_images/tulips.h" // 640x480 56k byte test image +JPEGDEC jpeg; + +int JPEGDraw(JPEGDRAW *pDraw) +{ + // do nothing + return 1; // continue decode +} /* JPEGDraw() */ + +void setup() { + Serial.begin(115200); + delay(100); // allow time for Serial to start +} /* setup() */ + +void loop() { +long lTime; + + if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) { + lTime = micros(); + if (jpeg.decode(0,0,0)) { // full sized decode + lTime = micros() - lTime; + // Serial.printf("full sized decode in %d us\n", (int)lTime); + } + jpeg.close(); + } + if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) { + lTime = micros(); + if (jpeg.decode(0,0,JPEG_SCALE_HALF)) { // 1/2 sized decode + lTime = micros() - lTime; + // Serial.printf("half sized decode in %d us\n", (int)lTime); + } + jpeg.close(); + } + if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) { + lTime = micros(); + if (jpeg.decode(0,0,JPEG_SCALE_QUARTER)) { // 1/4 sized decode + lTime = micros() - lTime; + // Serial.printf("quarter sized decode in %d us\n", (int)lTime); + } + jpeg.close(); + } + if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) { + lTime = micros(); + if (jpeg.decode(0,0,JPEG_SCALE_EIGHTH)) { // 1/8 sized decode + lTime = micros() - lTime; + // Serial.printf("eighth sized decode in %d us\n", (int)lTime); + } + jpeg.close(); + } + delay(5000); +} /* loop() */ diff --git a/lib/libesp32/JPEGDEC/library.json b/lib/libesp32/JPEGDEC/library.json new file mode 100644 index 000000000..4219b8101 --- /dev/null +++ b/lib/libesp32/JPEGDEC/library.json @@ -0,0 +1,20 @@ +{ + "name": "JPEGDEC", + "version": "1.2.7", + "description": "A fast JPEG library with a unique set of functions to make viewing image on microcontrollers easy. Includes fast downscaling options and the ability to view Exif embedded thumbnails. Supports baseline grayscale and color images with Huffman encoding.", + "repository": + { + "type": "git", + "url": "https://github.com/bitbank2/JPEGDEC" + }, + "authors": + [ + { + "name": "Larry Bank" + } + ], + "license": "Apache License 2.0", + "homepage": "https://github.com/bitbank2/JPEGDEC", + "frameworks": "*", + "platforms": "*" +} diff --git a/lib/libesp32/JPEGDEC/library.properties b/lib/libesp32/JPEGDEC/library.properties new file mode 100644 index 000000000..65f5d4417 --- /dev/null +++ b/lib/libesp32/JPEGDEC/library.properties @@ -0,0 +1,10 @@ +name=JPEGDEC +version=1.5.0 +author=Larry Bank +maintainer=Larry Bank +sentence=Optimized JPEG decoder for MCUs with 32K+ RAM. +paragraph=A fast JPEG library with a unique set of functions to make viewing image on microcontrollers easy. Includes fast downscaling options and the ability to view Exif embedded thumbnails. Supports baseline grayscale and color images with Huffman encoding. +category=Display +url=https://github.com/bitbank2/JPEGDEC +architectures=* +includes=JPEGDEC.h diff --git a/lib/libesp32/JPEGDEC/linux/main.c b/lib/libesp32/JPEGDEC/linux/main.c new file mode 100644 index 000000000..525a8634a --- /dev/null +++ b/lib/libesp32/JPEGDEC/linux/main.c @@ -0,0 +1,301 @@ +// JPEG perf test +// Written by Larry Bank +// +// Will open an arbitrary JPEG file if passed on the command line +// or will use the sample image (tulips) +// +#include +#include +#include +#include "JPEGDEC.h" +#include "jpeg.inl" +#include "../test_images/tulips.h" + +// Human readable error messages +const char *szErrors[] = {"Success", "Invalid parameter", "Decode error", "Unsupported feature", "Invalid file"}; + +/* Windows BMP header for RGB565 images */ +uint8_t winbmphdr_rgb565[138] = + {0x42,0x4d,0,0,0,0,0,0,0,0,0x8a,0,0,0,0x7c,0, + 0,0,0,0,0,0,0,0,0,0,1,0,8,0,3,0, + 0,0,0,0,0,0,0x13,0x0b,0,0,0x13,0x0b,0,0,0,0, + 0,0,0,0,0,0,0,0xf8,0,0,0xe0,0x07,0,0,0x1f,0, + 0,0,0,0,0,0,0x42,0x47,0x52,0x73,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0}; + +/* Windows BMP header for 8/24/32-bit images (54 bytes) */ +uint8_t winbmphdr[54] = + {0x42,0x4d, + 0,0,0,0, /* File size */ + 0,0,0,0,0x36,4,0,0,0x28,0,0,0, + 0,0,0,0, /* Xsize */ + 0,0,0,0, /* Ysize */ + 1,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* number of planes, bits per pel */ + 0,0,0,0}; + +JPEGIMAGE jpg; +uint8_t *pFrame; +int iDestPitch; +//uint8_t ucDitherBuffer[1024 * 16]; +int ucPixelType = RGB565_BIG_ENDIAN; // default output used for SPI LCDs + +// +// Minimal code to save frames as Windows BMP files +// +void WriteBMP(char *fname, uint8_t *pBitmap, uint8_t *pPalette, int cx, int cy, int bpp, int iDestPitch) +{ +FILE * oHandle; +int i, bsize, lsize; +uint32_t *l; +uint8_t *s; +uint8_t *ucTemp; +uint8_t *pHdr; +int iHeaderSize; + + ucTemp = (uint8_t *)malloc(cx * 4); + + if (bpp == 16) { + pHdr = winbmphdr_rgb565; + iHeaderSize = sizeof(winbmphdr_rgb565); + } else { + pHdr = winbmphdr; + iHeaderSize = sizeof(winbmphdr); + } + + oHandle = fopen(fname, "w+b"); + bsize = (cx * bpp) >> 3; + lsize = (bsize + 3) & 0xfffc; /* Width of each line */ + pHdr[26] = 1; // number of planes + pHdr[28] = (uint8_t)bpp; + + /* Write the BMP header */ + l = (uint32_t *)&pHdr[2]; + i =(cy * lsize) + iHeaderSize; + if (bpp <= 8) + i += 1024; + *l = (uint32_t)i; /* Store the file size */ + l = (uint32_t *)&pHdr[34]; // data size + i = (cy * lsize); + *l = (uint32_t)i; // store data size + l = (uint32_t *)&pHdr[18]; + *l = (uint32_t)cx; /* width */ + *(l+1) = (uint32_t)cy; /* height */ + l = (uint32_t *)&pHdr[10]; // OFFBITS + if (bpp <= 8) { + *l = iHeaderSize + 1024; + } else { // no palette + *l = iHeaderSize; + } + fwrite(pHdr, 1, iHeaderSize, oHandle); + if (bpp <= 8) { + if (pPalette == NULL) {// create a grayscale palette + int iDelta, iCount = 1<=0; i--) + { + s = &pBitmap[i*iDestPitch]; + if (bpp == 24) { // swap R/B for Windows BMP byte order + int j, iBpp = bpp/8; + uint8_t *d = ucTemp; + for (j=0; j \n\n"); + + if (argc == 1 || argc == 2) { + rc = PerfTest(argc, argv); + } else if (argc == 3) { + rc = ConvertFileTest(argv, 1); // change the 1 to 2/4/8 for fractional decode + } else { + printf("Invalid number of parameters (re-read the above)\n"); + return rc; + } + return rc; +} /* main() */ diff --git a/lib/libesp32/JPEGDEC/linux/makefile b/lib/libesp32/JPEGDEC/linux/makefile new file mode 100755 index 000000000..2e8020b23 --- /dev/null +++ b/lib/libesp32/JPEGDEC/linux/makefile @@ -0,0 +1,13 @@ +CFLAGS=-c -Wall -O2 -I../src -D__LINUX__ +LIBS = -lm -lpthread + +all: jpegdec + +jpegdec: main.o + $(CC) main.o $(LIBS) -o jpegdec + +main.o: main.c ../src/JPEGDEC.h makefile + $(CC) $(CFLAGS) main.c + +clean: + rm *.o jpegdec diff --git a/lib/libesp32/JPEGDEC/perf.jpg b/lib/libesp32/JPEGDEC/perf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e00faaf63220314f9ab4ca0fb9eadc4c3be9a432 GIT binary patch literal 196175 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 z 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 z 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

NtHloghT5CYzCX?G#P%H8igx1p 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 -%E`(h6U_gCZh4)S4=DY}~XW!^M1V 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 0 && iType < INVALID_PIXEL_TYPE) + _jpeg.ucPixelType = (uint8_t)iType; + else + _jpeg.iError = JPEG_INVALID_PARAMETER; +} /* setPixelType() */ + +void JPEGDEC::setMaxOutputSize(int iMaxMCUs) +{ + if (iMaxMCUs < 1) + iMaxMCUs = 1; // don't allow invalid value + _jpeg.iMaxMCUs = iMaxMCUs; +} /* setMaxOutputSize() */ +// +// Memory initialization +// +int JPEGDEC::openRAM(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw) +{ + memset(&_jpeg, 0, sizeof(JPEGIMAGE)); + _jpeg.ucMemType = JPEG_MEM_RAM; + _jpeg.pfnRead = readRAM; + _jpeg.pfnSeek = seekMem; + _jpeg.pfnDraw = pfnDraw; + _jpeg.pfnOpen = NULL; + _jpeg.pfnClose = NULL; + _jpeg.JPEGFile.iSize = iDataSize; + _jpeg.JPEGFile.pData = pData; + _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start + return JPEGInit(&_jpeg); +} /* openRAM() */ + +int JPEGDEC::openFLASH(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw) +{ + memset(&_jpeg, 0, sizeof(JPEGIMAGE)); + _jpeg.ucMemType = JPEG_MEM_FLASH; + _jpeg.pfnRead = readFLASH; + _jpeg.pfnSeek = seekMem; + _jpeg.pfnDraw = pfnDraw; + _jpeg.pfnOpen = NULL; + _jpeg.pfnClose = NULL; + _jpeg.JPEGFile.iSize = iDataSize; + _jpeg.JPEGFile.pData = pData; + _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start + return JPEGInit(&_jpeg); +} /* openRAM() */ + +int JPEGDEC::getOrientation() +{ + return (int)_jpeg.ucOrientation; +} /* getOrientation() */ + +int JPEGDEC::getLastError() +{ + return _jpeg.iError; +} /* getLastError() */ + +int JPEGDEC::getWidth() +{ + return _jpeg.iWidth; +} /* getWidth() */ + +int JPEGDEC::getHeight() +{ + return _jpeg.iHeight; +} /* getHeight() */ + +int JPEGDEC::hasThumb() +{ + return (int)_jpeg.ucHasThumb; +} /* hasThumb() */ + +int JPEGDEC::getThumbWidth() +{ + return _jpeg.iThumbWidth; +} /* getThumbWidth() */ + +int JPEGDEC::getThumbHeight() +{ + return _jpeg.iThumbHeight; +} /* getThumbHeight() */ + +int JPEGDEC::getBpp() +{ + return (int)_jpeg.ucBpp; +} /* getBpp() */ + +int JPEGDEC::getSubSample() +{ + return (int)_jpeg.ucSubSample; +} /* getSubSample() */ + +void JPEGDEC::setCropArea(int x, int y, int w, int h) +{ + JPEG_setCropArea(&_jpeg, x, y, w, h); +} /* setCropArea() */ + +void JPEGDEC::getCropArea(int *x, int *y, int *w, int *h) +{ + JPEG_getCropArea(&_jpeg, x, y, w, h); +} /* getCropArea() */ + +// +// File (SD/MMC) based initialization +// +int JPEGDEC::open(const char *szFilename, JPEG_OPEN_CALLBACK *pfnOpen, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw) +{ + memset(&_jpeg, 0, sizeof(JPEGIMAGE)); + _jpeg.pfnRead = pfnRead; + _jpeg.pfnSeek = pfnSeek; + _jpeg.pfnDraw = pfnDraw; + _jpeg.pfnOpen = pfnOpen; + _jpeg.pfnClose = pfnClose; + _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start + _jpeg.JPEGFile.fHandle = (*pfnOpen)(szFilename, &_jpeg.JPEGFile.iSize); + if (_jpeg.JPEGFile.fHandle == NULL) + return 0; + return JPEGInit(&_jpeg); + +} /* open() */ + +// +// data stream initialization +// +int JPEGDEC::open(void *fHandle, int iDataSize, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw) +{ + memset(&_jpeg, 0, sizeof(JPEGIMAGE)); + _jpeg.pfnRead = pfnRead; + _jpeg.pfnSeek = pfnSeek; + _jpeg.pfnDraw = pfnDraw; + _jpeg.pfnClose = pfnClose; + _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start + _jpeg.JPEGFile.iSize = iDataSize; + _jpeg.JPEGFile.fHandle = fHandle; + return JPEGInit(&_jpeg); +} /* open() */ + +#ifdef FS_H +static int32_t FileRead(JPEGFILE *handle, uint8_t *buffer, int32_t length) +{ + return ((File *)(handle->fHandle))->read(buffer, length); +} +static int32_t FileSeek(JPEGFILE *handle, int32_t position) +{ + return ((File *)(handle->fHandle))->seek(position); +} +static void FileClose(void *handle) +{ + ((File *)handle)->close(); +} + +int JPEGDEC::open(File &file, JPEG_DRAW_CALLBACK *pfnDraw) +{ + if (!file) return 0; + memset(&_jpeg, 0, sizeof(JPEGIMAGE)); + _jpeg.pfnRead = FileRead; + _jpeg.pfnSeek = FileSeek; + _jpeg.pfnClose = FileClose; + _jpeg.pfnDraw = pfnDraw; + _jpeg.iMaxMCUs = 1000; + _jpeg.JPEGFile.fHandle = &file; + _jpeg.JPEGFile.iSize = file.size(); + return JPEGInit(&_jpeg); +} +#endif // FS_H + +void JPEGDEC::close() +{ + if (_jpeg.pfnClose) + (*_jpeg.pfnClose)(_jpeg.JPEGFile.fHandle); +} /* close() */ + +// +// Decode the image +// returns: +// 1 = good result +// 0 = error +// +int JPEGDEC::decode(int x, int y, int iOptions) +{ + _jpeg.iXOffset = x; + _jpeg.iYOffset = y; + _jpeg.iOptions = iOptions; + return DecodeJPEG(&_jpeg); +} /* decode() */ +// +// set draw callback user pointer variable +// +void JPEGDEC::setUserPointer(void *p) +{ + _jpeg.pUser = p; +} + +int JPEGDEC::decodeDither(int x, int y, uint8_t *pDither, int iOptions) +{ + _jpeg.iXOffset = x; + _jpeg.iYOffset = y; + _jpeg.iOptions = iOptions; + _jpeg.pDitherBuffer = pDither; + return DecodeJPEG(&_jpeg); +} + +int JPEGDEC::decodeDither(uint8_t *pDither, int iOptions) +{ + _jpeg.iOptions = iOptions; + _jpeg.pDitherBuffer = pDither; + return DecodeJPEG(&_jpeg); +} diff --git a/lib/libesp32/JPEGDEC/src/JPEGDEC.h b/lib/libesp32/JPEGDEC/src/JPEGDEC.h new file mode 100644 index 000000000..5c808ec2d --- /dev/null +++ b/lib/libesp32/JPEGDEC/src/JPEGDEC.h @@ -0,0 +1,309 @@ +// +// Copyright 2020 BitBank Software, Inc. All Rights Reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//=========================================================================== +// +#ifndef __JPEGDEC__ +#define __JPEGDEC__ +#if defined( __MACH__ ) || defined( __LINUX__ ) || defined( __MCUXPRESSO ) || defined( ESP_PLATFORM ) +#include +#include +#include +#include +#else +#include +#if !defined(HAL_ESP32_HAL_H_) && defined(__has_include) && __has_include() +#include +#endif +#endif +#ifndef PROGMEM +#define memcpy_P memcpy +#define PROGMEM +#endif +// Cortex-M4/M7 allow unaligned access to SRAM +#if defined(HAL_ESP32_HAL_H_) || defined(TEENSYDUINO) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM7) || defined (__x86_64__) || defined(TEENSYDUINO) +#define ALLOWS_UNALIGNED +#endif + +#if defined (__aarch64__) || defined (__arm64__) +#define HAS_NEON +#define ALLOWS_UNALIGNED +#endif // __aarch64 +// +// JPEG Decoder +// Written by Larry Bank +// Copyright (c) 2020 BitBank Software, Inc. +// +// Designed to decode baseline JPEG images (8 or 24-bpp) +// using less than 22K of RAM +// + +/* Defines and variables */ +#define FILE_HIGHWATER 1536 +#define JPEG_FILE_BUF_SIZE 2048 +#define HUFF_TABLEN 273 +#define HUFF11SIZE (1<<11) +#define DC_TABLE_SIZE 1024 +#define DCTSIZE 64 +#define MAX_MCU_COUNT 6 +#define MAX_COMPS_IN_SCAN 4 +#define MAX_BUFFERED_PIXELS 2048 +#define MCU_SKIP -8 + +// Decoder options +#define JPEG_AUTO_ROTATE 1 +#define JPEG_SCALE_HALF 2 +#define JPEG_SCALE_QUARTER 4 +#define JPEG_SCALE_EIGHTH 8 +#define JPEG_LE_PIXELS 16 +#define JPEG_EXIF_THUMBNAIL 32 +#define JPEG_LUMA_ONLY 64 + +#define MCU0 (DCTSIZE * 0) +#define MCU1 (DCTSIZE * 1) +#define MCU2 (DCTSIZE * 2) +#define MCU3 (DCTSIZE * 3) +#define MCU4 (DCTSIZE * 4) +#define MCU5 (DCTSIZE * 5) + +#if defined(__arm64__) || defined(__aarch64__) || defined (__x86_64__) +#define REGISTER_WIDTH 64 +typedef uint64_t my_ulong; +typedef int64_t my_long; +#else +#define REGISTER_WIDTH 32 +typedef uint32_t my_ulong; +typedef int32_t my_long; +#endif + +// Pixel types (defaults to little endian RGB565) +enum { + RGB565_LITTLE_ENDIAN = 0, + RGB565_BIG_ENDIAN, + RGB8888, + EIGHT_BIT_GRAYSCALE, + FOUR_BIT_DITHERED, + TWO_BIT_DITHERED, + ONE_BIT_DITHERED, + INVALID_PIXEL_TYPE +}; + +enum { + JPEG_MEM_RAM=0, + JPEG_MEM_FLASH +}; + +// Error codes returned by getLastError() +enum { + JPEG_SUCCESS = 0, + JPEG_INVALID_PARAMETER, + JPEG_DECODE_ERROR, + JPEG_UNSUPPORTED_FEATURE, + JPEG_INVALID_FILE +}; + +typedef struct buffered_bits +{ +unsigned char *pBuf; // buffer pointer +my_ulong ulBits; // buffered bits +uint32_t ulBitOff; // current bit offset +} BUFFERED_BITS; + +typedef struct jpeg_file_tag +{ + int32_t iPos; // current file position + int32_t iSize; // file size + uint8_t *pData; // memory file pointer + void * fHandle; // class pointer to File/SdFat or whatever you want +} JPEGFILE; + +typedef struct jpeg_draw_tag +{ + int x, y; // upper left corner of current MCU + int iWidth, iHeight; // size of this pixel block + int iWidthUsed; // clipped size for odd/edges + int iBpp; // bit depth of the pixels (8 or 16) + uint16_t *pPixels; // 16-bit pixels + void *pUser; +} JPEGDRAW; + +// Callback function prototypes +typedef int32_t (JPEG_READ_CALLBACK)(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen); +typedef int32_t (JPEG_SEEK_CALLBACK)(JPEGFILE *pFile, int32_t iPosition); +typedef int (JPEG_DRAW_CALLBACK)(JPEGDRAW *pDraw); +typedef void * (JPEG_OPEN_CALLBACK)(const char *szFilename, int32_t *pFileSize); +typedef void (JPEG_CLOSE_CALLBACK)(void *pHandle); + +/* JPEG color component info */ +typedef struct _jpegcompinfo +{ +// These values are fixed over the whole image +// For compression, they must be supplied by the user interface +// for decompression, they are read from the SOF marker. +unsigned char component_needed; /* do we need the value of this component? */ +unsigned char component_id; /* identifier for this component (0..255) */ +unsigned char component_index; /* its index in SOF or cinfo->comp_info[] */ +//unsigned char h_samp_factor; /* horizontal sampling factor (1..4) */ +//unsigned char v_samp_factor; /* vertical sampling factor (1..4) */ +unsigned char quant_tbl_no; /* quantization table selector (0..3) */ +// These values may vary between scans +// For compression, they must be supplied by the user interface +// for decompression, they are read from the SOS marker. +unsigned char dc_tbl_no; /* DC entropy table selector (0..3) */ +unsigned char ac_tbl_no; /* AC entropy table selector (0..3) */ +// These values are computed during compression or decompression startup +//int true_comp_width; /* component's image width in samples */ +//int true_comp_height; /* component's image height in samples */ +// the above are the logical dimensions of the downsampled image +// These values are computed before starting a scan of the component +//int MCU_width; /* number of blocks per MCU, horizontally */ +//int MCU_height; /* number of blocks per MCU, vertically */ +//int MCU_blocks; /* MCU_width * MCU_height */ +//int downsampled_width; /* image width in samples, after expansion */ +//int downsampled_height; /* image height in samples, after expansion */ +// the above are the true_comp_xxx values rounded up to multiples of +// the MCU dimensions; these are the working dimensions of the array +// as it is passed through the DCT or IDCT step. NOTE: these values +// differ depending on whether the component is interleaved or not!! +// This flag is used only for decompression. In cases where some of the +// components will be ignored (eg grayscale output from YCbCr image), +// we can skip IDCT etc. computations for the unused components. +} JPEGCOMPINFO; + +// +// our private structure to hold a JPEG image decode state +// +typedef struct jpeg_image_tag +{ + int iWidth, iHeight; // image size + int iThumbWidth, iThumbHeight; // thumbnail size (if present) + int iThumbData; // offset to image data + int iXOffset, iYOffset; // placement on the display + int iCropX, iCropY, iCropCX, iCropCY; // crop area + uint8_t ucBpp, ucSubSample, ucHuffTableUsed; + uint8_t ucMode, ucOrientation, ucHasThumb, b11Bit; + uint8_t ucComponentsInScan, cApproxBitsLow, cApproxBitsHigh; + uint8_t iScanStart, iScanEnd, ucFF, ucNumComponents; + uint8_t ucACTable, ucDCTable; + uint8_t ucMemType, ucPixelType; + uint16_t u16MCUFlags; + int iEXIF; // Offset to EXIF 'TIFF' file + int iError; + int iOptions; + int iVLCOff; // current VLC data offset + int iVLCSize; // current quantity of data in the VLC buffer + int iResInterval, iResCount; // restart interval + int iMaxMCUs; // max MCUs of pixels per JPEGDraw call + JPEG_READ_CALLBACK *pfnRead; + JPEG_SEEK_CALLBACK *pfnSeek; + JPEG_DRAW_CALLBACK *pfnDraw; + JPEG_OPEN_CALLBACK *pfnOpen; + JPEG_CLOSE_CALLBACK *pfnClose; + JPEGCOMPINFO JPCI[MAX_COMPS_IN_SCAN]; /* Max color components */ + JPEGFILE JPEGFile; + BUFFERED_BITS bb; + void *pUser; + uint8_t *pDitherBuffer; // provided externally to do Floyd-Steinberg dithering + uint16_t *usPixels; // needs to be 16-byte aligned for S3 SIMD + uint16_t usUnalignedPixels[MAX_BUFFERED_PIXELS+8]; + int16_t *sMCUs; // needs to be 16-byte aligned for S3 SIMD + int16_t sUnalignedMCUs[8+(DCTSIZE * MAX_MCU_COUNT)]; // 4:2:0 needs 6 DCT blocks per MCU + void *pFramebuffer; + int16_t sQuantTable[DCTSIZE*4]; // quantization tables + uint8_t ucFileBuf[JPEG_FILE_BUF_SIZE]; // holds temp data and pixel stack + uint8_t ucHuffDC[DC_TABLE_SIZE * 2]; // up to 2 'short' tables + uint16_t usHuffAC[HUFF11SIZE * 2]; +} JPEGIMAGE; + +#ifdef __cplusplus +#if defined(__has_include) && __has_include() +#include "FS.h" +#endif +#define JPEG_STATIC static +// +// The JPEGDEC class wraps portable C code which does the actual work +// +class JPEGDEC +{ + public: + int openRAM(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw); + int openFLASH(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw); + int open(const char *szFilename, JPEG_OPEN_CALLBACK *pfnOpen, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw); + int open(void *fHandle, int iDataSize, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw); + void setFramebuffer(void *pFramebuffer); + void setCropArea(int x, int y, int w, int h); + void getCropArea(int *x, int *y, int *w, int *h); + +#ifdef FS_H + int open(File &file, JPEG_DRAW_CALLBACK *pfnDraw); +#endif + void close(); + int decode(int x, int y, int iOptions); + int decodeDither(uint8_t *pDither, int iOptions); + int decodeDither(int x, int y, uint8_t *pDither, int iOptions); + int getOrientation(); + int getWidth(); + int getHeight(); + int getBpp(); + void setUserPointer(void *p); + int getSubSample(); + int hasThumb(); + int getThumbWidth(); + int getThumbHeight(); + int getLastError(); + void setPixelType(int iType); // defaults to little endian + void setMaxOutputSize(int iMaxMCUs); + + private: + JPEGIMAGE _jpeg; +}; +#else +#define JPEG_STATIC +int JPEG_openRAM(JPEGIMAGE *pJPEG, uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw); +void JPEG_setFramebuffer(JPEGIMAGE *pJPEG, void *pFramebuffer); +void JPEG_setCropArea(JPEGIMAGE *pJPEG, int x, int y, int w, int h); +void JPEG_getCropArea(JPEGIMAGE *pJPEG, int *x, int *y, int *w, int *h); +int JPEG_openFile(JPEGIMAGE *pJPEG, const char *szFilename, JPEG_DRAW_CALLBACK *pfnDraw); +int JPEG_getWidth(JPEGIMAGE *pJPEG); +int JPEG_getHeight(JPEGIMAGE *pJPEG); +int JPEG_decode(JPEGIMAGE *pJPEG, int x, int y, int iOptions); +int JPEG_decodeDither(JPEGIMAGE *pJPEG, uint8_t *pDither, int iOptions); +void JPEG_close(JPEGIMAGE *pJPEG); +int JPEG_getLastError(JPEGIMAGE *pJPEG); +int JPEG_getOrientation(JPEGIMAGE *pJPEG); +int JPEG_getBpp(JPEGIMAGE *pJPEG); +int JPEG_getSubSample(JPEGIMAGE *pJPEG); +int JPEG_hasThumb(JPEGIMAGE *pJPEG); +int JPEG_getThumbWidth(JPEGIMAGE *pJPEG); +int JPEG_getThumbHeight(JPEGIMAGE *pJPEG); +int JPEG_getLastError(JPEGIMAGE *pJPEG); +void JPEG_setPixelType(JPEGIMAGE *pJPEG, int iType); // defaults to little endian +void JPEG_setMaxOutputSize(JPEGIMAGE *pJPEG, int iMaxMCUs); +#endif // __cplusplus + +#ifdef ALLOWS_UNALIGNED +#define INTELSHORT(p) (*(uint16_t *)p) +#define INTELLONG(p) (*(uint32_t *)p) +#define MOTOSHORT(p) __builtin_bswap16(*(uint16_t *)p) +#if REGISTER_WIDTH == 64 +#define MOTOLONG(p) __builtin_bswap64(*(uint64_t *)p) +#else +#define MOTOLONG(p) __builtin_bswap32(*(uint32_t *)p) +#endif +#else +// Due to unaligned memory causing an exception, we have to do these macros the slow way +#define INTELSHORT(p) ((*p) + (*(p+1)<<8)) +#define INTELLONG(p) ((*p) + (*(p+1)<<8) + (*(p+2)<<16) + (*(p+3)<<24)) +#define MOTOSHORT(p) (((*(p))<<8) + (*(p+1))) +#define MOTOLONG(p) (((*p)<<24) + ((*(p+1))<<16) + ((*(p+2))<<8) + (*(p+3))) +#endif // ALLOWS_UNALIGNED + +#endif // __JPEGDEC__ diff --git a/lib/libesp32/JPEGDEC/src/jpeg.inl b/lib/libesp32/JPEGDEC/src/jpeg.inl new file mode 100644 index 000000000..aad686997 --- /dev/null +++ b/lib/libesp32/JPEGDEC/src/jpeg.inl @@ -0,0 +1,4967 @@ +// +// JPEG Decoder +// +// written by Larry Bank +// bitbank@pobox.com +// Arduino port started 8/2/2020 +// Original JPEG code written 26+ years ago :) +// The goal of this code is to decode baseline JPEG images +// using no more than 18K of RAM (if sent directly to an LCD display) +// +// Copyright 2020 BitBank Software, Inc. All Rights Reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//=========================================================================== +// +#include "JPEGDEC.h" + +#ifdef TEENSYDUINO +#include "my_cm4_simd.h" +//#define HAS_SIMD +#endif + +#if !defined(NO_SIMD) && (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM7)) +//#define HAS_SIMD +#endif + +#if defined (ARDUINO_ARCH_ESP32) && !defined(NO_SIMD) +#include "dsps_fft2r_platform.h" +#if (dsps_fft2r_sc16_aes3_enabled == 1) +#define ESP32S3_SIMD +extern "C" { +void s3_ycbcr_convert_444(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType); +void s3_ycbcr_convert_420(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType); +void s3_dequant(int16_t *pMCU, int16_t *pQuant); +} +int16_t i16_Consts[8] = {0x80, 113, 90, 22, 46, 1,32,2048}; +#endif // S3 SIMD +#endif // ESP32 + +#if defined( __x86_64__ ) && !defined(NO_SIMD) +#define HAS_SSE +#include +#include +#include +//#include // AVX2 +#endif + +#if !defined(HAS_SIMD) && !defined(NO_SIMD) && (defined(__arm64__) || defined(__aarch64__)) +#include +#define HAS_NEON +#endif + +// forward references +static int JPEGInit(JPEGIMAGE *pJPEG); +static int JPEGParseInfo(JPEGIMAGE *pPage, int bExtractThumb); +static void JPEGGetMoreData(JPEGIMAGE *pPage); +static int DecodeJPEG(JPEGIMAGE *pImage); +static int32_t readRAM(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen); +static int32_t seekMem(JPEGFILE *pFile, int32_t iPosition); +#if defined (__MACH__) || defined( __LINUX__ ) || defined( __MCUXPRESSO ) +static int32_t readFile(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen); +static int32_t seekFile(JPEGFILE *pFile, int32_t iPosition); +static void closeFile(void *handle); +#endif +static void JPEGDither(JPEGIMAGE *pJPEG, int iWidth, int iHeight); +/* JPEG tables */ +// zigzag ordering of DCT coefficients +static const unsigned char cZigZag[64] = {0,1,5,6,14,15,27,28, + 2,4,7,13,16,26,29,42, + 3,8,12,17,25,30,41,43, + 9,11,18,24,31,40,44,53, + 10,19,23,32,39,45,52,54, + 20,22,33,38,46,51,55,60, + 21,34,37,47,50,56,59,61, + 35,36,48,49,57,58,62,63}; + +// un-zigzag ordering +static const unsigned char cZigZag2[64] = {0,1,8,16,9,2,3,10, + 17,24,32,25,18,11,4,5, + 12,19,26,33,40,48,41,34, + 27,20,13,6,7,14,21,28, + 35,42,49,56,57,50,43,36, + 29,22,15,23,30,37,44,51, + 58,59,52,45,38,31,39,46, + 53,60,61,54,47,55,62,63}; + +#ifdef HAS_NEON +// 16-bit constants for NEON ycc->rgb conversion +static const int16_t __attribute__((aligned(16))) sYCCRGBConstants[4] = {5742/2, -2925/2, -1409/2, 7258/2}; +// 16-bit constants for IDCT calculation +static const int16_t __attribute__((aligned(16))) s0414[8] = {1697*2,1697*2,1697*2,1697*2,1697*2,1697*2,1697*2,1697*2}; // 1.414213562 - 1.0 +static const int16_t __attribute__((aligned(16))) s1414[8] = {5793*2,5793*2,5793*2,5793*2,5793*2,5793*2,5793*2,5793*2}; // 1.414213562 +static const int16_t __attribute__((aligned(16))) s1847[8] = {7568*2,7568*2,7568*2,7568*2,7568*2,7568*2,7568*2,7568*2}; // 1.8477 +static const int16_t __attribute__((aligned(16))) s2613[8] = {-10703,-10703,-10703,-10703,-10703,-10703,-10703,-10703}; // -2.6131259 +static const int16_t __attribute__((aligned(16))) sp2613[8] = {10703,10703,10703,10703,10703,10703,10703,10703}; // 2.6131259 +static const int16_t __attribute__((aligned(16))) s1082[8] = {4433*2,4433*2,4433*2,4433*2,4433*2,4433*2,4433*2,4433*2}; // 1.08239 +#endif // HAS_NEON + +#ifdef HAS_SSE +#if defined ( __GNUC__ ) || defined( _GCC_ANDROID ) || defined( __APPLE__) +signed short s1402[8] __attribute__((aligned(16))) = { 5742, 5742, 5742, 5742, 5742, 5742, 5742, 5742 }; +signed short s0714[8] __attribute__((aligned(16))) = { -2925, -2925, -2925, -2925, -2925, -2925, -2925, -2925 }; +signed short s0344[8] __attribute__((aligned(16))) = { -1409, -1409, -1409, -1409, -1409, -1409, -1409, -1409 }; +signed short s1772[8] __attribute__((aligned(16))) = { 7258, 7258, 7258, 7258, 7258, 7258, 7258, 7258 }; +// 16-bit constants for IDCT calculation +signed short s0414[8] __attribute__((aligned(16))) = { 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4 }; // 1.414213562 - 1.0 +signed short s1414[8] __attribute__((aligned(16))) = { 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4 }; // 1.414213562 +signed short s1847[8] __attribute__((aligned(16))) = { 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4 }; // 1.8477 +signed short s2613[8] __attribute__((aligned(16))) = { -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2 }; // -2.6131259 +signed short sp2613[8] __attribute__((aligned(16))) = { 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2 }; // 2.6131259 +signed short s1082[8] __attribute__((aligned(16))) = { 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4 }; // 1.08239 +signed short sfastDCT[8] __attribute__((aligned(16))) = { 4096, 4096, 4096, 4096, -815, 2320, 3472, 4096 }; +#else +// 16-bit Constants for SSE ycc->rgb conversion +__declspec(align(16)) signed short s1402[8] = {5742,5742,5742,5742,5742,5742,5742,5742}; +__declspec(align(16)) signed short s0714[8] = {-2925,-2925,-2925,-2925,-2925,-2925,-2925,-2925}; +__declspec(align(16)) signed short s0344[8] = {-1409,-1409,-1409,-1409,-1409,-1409,-1409,-1409}; +__declspec(align(16)) signed short s1772[8] = {7258,7258,7258,7258,7258,7258,7258,7258}; +// 16-bit constants for IDCT calculation +__declspec(align(16)) signed short s0414[8] = {1697*4,1697*4,1697*4,1697*4,1697*4,1697*4,1697*4,1697*4}; // 1.414213562 - 1.0 +__declspec(align(16)) signed short s1414[8] = {5793*4,5793*4,5793*4,5793*4,5793*4,5793*4,5793*4,5793*4}; // 1.414213562 +__declspec(align(16)) signed short s1847[8] = {7568*4,7568*4,7568*4,7568*4,7568*4,7568*4,7568*4,7568*4}; // 1.8477 +__declspec(align(16)) signed short s2613[8] = {-10703*2,-10703*2,-10703*2,-10703*2,-10703*2,-10703*2,-10703*2,-10703*2}; // -2.6131259 +__declspec(align(16)) signed short sp2613[8] = {10703*2,10703*2,10703*2,10703*2,10703*2,10703*2,10703*2,10703*2}; // 2.6131259 +__declspec(align(16)) signed short s1082[8] = {4433*4,4433*4,4433*4,4433*4,4433*4,4433*4,4433*4,4433*4}; // 1.08239 +__declspec(align(16)) signed short sfastDCT[8] = {4096,4096,4096,4096,-815,2320,3472,4096}; +#endif // GCC +#endif // HAS_SSE + +// For AA&N IDCT method, multipliers are equal to quantization +// coefficients scaled by scalefactor[row]*scalefactor[col], where +// scalefactor[0] = 1 +// scalefactor[k] = cos(k*PI/16) * sqrt(2) for k=1..7 +// For integer operation, the multiplier table is to be scaled by +// IFAST_SCALE_BITS. +static const int iScaleBits[64] = {16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520, + 22725, 31521, 29692, 26722, 22725, 17855, 12299, 6270, + 21407, 29692, 27969, 25172, 21407, 16819, 11585, 5906, + 19266, 26722, 25172, 22654, 19266, 15137, 10426, 5315, + 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520, + 12873, 17855, 16819, 15137, 12873, 10114, 6967, 3552, + 8867, 12299, 11585, 10426, 8867, 6967, 4799, 2446, + 4520, 6270, 5906, 5315, 4520, 3552, 2446, 1247}; +// +// Range clip and shift for RGB565 output +// input value is 0 to 255, then another 256 for overflow to FF, then 512 more for negative values wrapping around +// Trims a few instructions off the final output stage +// +static const uint8_t ucRangeTable[] = {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, + 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf, + 0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, + 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef, + 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, + 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, + 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, + 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, + 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, + 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, + 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, + 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f}; + +// +// Convert 8-bit grayscale into RGB565 +// +static const uint16_t usGrayTo565[] = {0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020, // 0 + 0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861, + 0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2, + 0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3, + 0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124, + 0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965, + 0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6, + 0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7, + 0x4208,0x4208,0x4208,0x4208,0x4228,0x4228,0x4228,0x4228, + 0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69, + 0x528a,0x528a,0x528a,0x528a,0x52aa,0x52aa,0x52aa,0x52aa, + 0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb, + 0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c, + 0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x6b6d, + 0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae, + 0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef, + 0x8410,0x8410,0x8410,0x8410,0x8430,0x8430,0x8430,0x8430, + 0x8c51,0x8c51,0x8c51,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71, + 0x9492,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x94b2,0x94b2, + 0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cf3, + 0xa514,0xa514,0xa514,0xa514,0xa534,0xa534,0xa534,0xa534, + 0xad55,0xad55,0xad55,0xad55,0xad75,0xad75,0xad75,0xad75, + 0xb596,0xb596,0xb596,0xb596,0xb5b6,0xb5b6,0xb5b6,0xb5b6, + 0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7, + 0xc618,0xc618,0xc618,0xc618,0xc638,0xc638,0xc638,0xc638, + 0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79, + 0xd69a,0xd69a,0xd69a,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xd6ba, + 0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb, + 0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c, + 0xef5d,0xef5d,0xef5d,0xef5d,0xef7d,0xef7d,0xef7d,0xef7d, + 0xf79e,0xf79e,0xf79e,0xf79e,0xf7be,0xf7be,0xf7be,0xf7be, + 0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff}; +// +// Clip and convert red value into 5-bits for RGB565 +// +static const uint16_t usRangeTableR[] = {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // 0 + 0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800, + 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000, + 0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800, + 0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000, + 0x2800,0x2800,0x2800,0x2800,0x2800,0x2800,0x2800,0x2800, + 0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000, + 0x3800,0x3800,0x3800,0x3800,0x3800,0x3800,0x3800,0x3800, + 0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000, + 0x4800,0x4800,0x4800,0x4800,0x4800,0x4800,0x4800,0x4800, + 0x5000,0x5000,0x5000,0x5000,0x5000,0x5000,0x5000,0x5000, + 0x5800,0x5800,0x5800,0x5800,0x5800,0x5800,0x5800,0x5800, + 0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000, + 0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800, + 0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,0x7000, + 0x7800,0x7800,0x7800,0x7800,0x7800,0x7800,0x7800,0x7800, + 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, + 0x8800,0x8800,0x8800,0x8800,0x8800,0x8800,0x8800,0x8800, + 0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9000, + 0x9800,0x9800,0x9800,0x9800,0x9800,0x9800,0x9800,0x9800, + 0xa000,0xa000,0xa000,0xa000,0xa000,0xa000,0xa000,0xa000, + 0xa800,0xa800,0xa800,0xa800,0xa800,0xa800,0xa800,0xa800, + 0xb000,0xb000,0xb000,0xb000,0xb000,0xb000,0xb000,0xb000, + 0xb800,0xb800,0xb800,0xb800,0xb800,0xb800,0xb800,0xb800, + 0xc000,0xc000,0xc000,0xc000,0xc000,0xc000,0xc000,0xc000, + 0xc800,0xc800,0xc800,0xc800,0xc800,0xc800,0xc800,0xc800, + 0xd000,0xd000,0xd000,0xd000,0xd000,0xd000,0xd000,0xd000, + 0xd800,0xd800,0xd800,0xd800,0xd800,0xd800,0xd800,0xd800, + 0xe000,0xe000,0xe000,0xe000,0xe000,0xe000,0xe000,0xe000, + 0xe800,0xe800,0xe800,0xe800,0xe800,0xe800,0xe800,0xe800, + 0xf000,0xf000,0xf000,0xf000,0xf000,0xf000,0xf000,0xf000, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, // 256 + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 512 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 768 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +// +// Clip and convert green value into 5-bits for RGB565 +// +static const uint16_t usRangeTableG[] = {0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020, // 0 + 0x0040,0x0040,0x0040,0x0040,0x0060,0x0060,0x0060,0x0060, + 0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00a0, + 0x00c0,0x00c0,0x00c0,0x00c0,0x00e0,0x00e0,0x00e0,0x00e0, + 0x0100,0x0100,0x0100,0x0100,0x0120,0x0120,0x0120,0x0120, + 0x0140,0x0140,0x0140,0x0140,0x0160,0x0160,0x0160,0x0160, + 0x0180,0x0180,0x0180,0x0180,0x01a0,0x01a0,0x01a0,0x01a0, + 0x01c0,0x01c0,0x01c0,0x01c0,0x01e0,0x01e0,0x01e0,0x01e0, + 0x0200,0x0200,0x0200,0x0200,0x0220,0x0220,0x0220,0x0220, + 0x0240,0x0240,0x0240,0x0240,0x0260,0x0260,0x0260,0x0260, + 0x0280,0x0280,0x0280,0x0280,0x02a0,0x02a0,0x02a0,0x02a0, + 0x02c0,0x02c0,0x02c0,0x02c0,0x02e0,0x02e0,0x02e0,0x02e0, + 0x0300,0x0300,0x0300,0x0300,0x0320,0x0320,0x0320,0x0320, + 0x0340,0x0340,0x0340,0x0340,0x0360,0x0360,0x0360,0x0360, + 0x0380,0x0380,0x0380,0x0380,0x03a0,0x03a0,0x03a0,0x03a0, + 0x03c0,0x03c0,0x03c0,0x03c0,0x03e0,0x03e0,0x03e0,0x03e0, + 0x0400,0x0400,0x0400,0x0400,0x0420,0x0420,0x0420,0x0420, + 0x0440,0x0440,0x0440,0x0440,0x0460,0x0460,0x0460,0x0460, + 0x0480,0x0480,0x0480,0x0480,0x04a0,0x04a0,0x04a0,0x04a0, + 0x04c0,0x04c0,0x04c0,0x04c0,0x04e0,0x04e0,0x04e0,0x04e0, + 0x0500,0x0500,0x0500,0x0500,0x0520,0x0520,0x0520,0x0520, + 0x0540,0x0540,0x0540,0x0540,0x0560,0x0560,0x0560,0x0560, + 0x0580,0x0580,0x0580,0x0580,0x05a0,0x05a0,0x05a0,0x05a0, + 0x05c0,0x05c0,0x05c0,0x05c0,0x05e0,0x05e0,0x05e0,0x05e0, + 0x0600,0x0600,0x0600,0x0600,0x0620,0x0620,0x0620,0x0620, + 0x0640,0x0640,0x0640,0x0640,0x0660,0x0660,0x0660,0x0660, + 0x0680,0x0680,0x0680,0x0680,0x06a0,0x06a0,0x06a0,0x06a0, + 0x06c0,0x06c0,0x06c0,0x06c0,0x06e0,0x06e0,0x06e0,0x06e0, + 0x0700,0x0700,0x0700,0x0700,0x0720,0x0720,0x0720,0x0720, + 0x0740,0x0740,0x0740,0x0740,0x0760,0x0760,0x0760,0x0760, + 0x0780,0x0780,0x0780,0x0780,0x07a0,0x07a0,0x07a0,0x07a0, + 0x07c0,0x07c0,0x07c0,0x07c0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, // 256 + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 512 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 768 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +// +// Clip and convert blue value into 5-bits for RGB565 +// +static const uint16_t usRangeTableB[] = {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // 0 + 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001, + 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002, + 0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003, + 0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004, + 0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005, + 0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0006, + 0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007, + 0x0008,0x0008,0x0008,0x0008,0x0008,0x0008,0x0008,0x0008, + 0x0009,0x0009,0x0009,0x0009,0x0009,0x0009,0x0009,0x0009, + 0x000a,0x000a,0x000a,0x000a,0x000a,0x000a,0x000a,0x000a, + 0x000b,0x000b,0x000b,0x000b,0x000b,0x000b,0x000b,0x000b, + 0x000c,0x000c,0x000c,0x000c,0x000c,0x000c,0x000c,0x000c, + 0x000d,0x000d,0x000d,0x000d,0x000d,0x000d,0x000d,0x000d, + 0x000e,0x000e,0x000e,0x000e,0x000e,0x000e,0x000e,0x000e, + 0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f, + 0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010, + 0x0011,0x0011,0x0011,0x0011,0x0011,0x0011,0x0011,0x0011, + 0x0012,0x0012,0x0012,0x0012,0x0012,0x0012,0x0012,0x0012, + 0x0013,0x0013,0x0013,0x0013,0x0013,0x0013,0x0013,0x0013, + 0x0014,0x0014,0x0014,0x0014,0x0014,0x0014,0x0014,0x0014, + 0x0015,0x0015,0x0015,0x0015,0x0015,0x0015,0x0015,0x0015, + 0x0016,0x0016,0x0016,0x0016,0x0016,0x0016,0x0016,0x0016, + 0x0017,0x0017,0x0017,0x0017,0x0017,0x0017,0x0017,0x0017, + 0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018, + 0x0019,0x0019,0x0019,0x0019,0x0019,0x0019,0x0019,0x0019, + 0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a, + 0x001b,0x001b,0x001b,0x001b,0x001b,0x001b,0x001b,0x001b, + 0x001c,0x001c,0x001c,0x001c,0x001c,0x001c,0x001c,0x001c, + 0x001d,0x001d,0x001d,0x001d,0x001d,0x001d,0x001d,0x001d, + 0x001e,0x001e,0x001e,0x001e,0x001e,0x001e,0x001e,0x001e, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, // 256 + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 512 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 768 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +#if defined (__MACH__) || defined( __LINUX__ ) || defined( __MCUXPRESSO ) +// +// API for C +// + +// +// Memory initialization +// +int JPEG_openRAM(JPEGIMAGE *pJPEG, uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw) +{ + memset(pJPEG, 0, sizeof(JPEGIMAGE)); + pJPEG->ucMemType = JPEG_MEM_RAM; + pJPEG->pfnRead = readRAM; + pJPEG->pfnSeek = seekMem; + pJPEG->pfnDraw = pfnDraw; + pJPEG->pfnOpen = NULL; + pJPEG->pfnClose = NULL; + pJPEG->JPEGFile.iSize = iDataSize; + pJPEG->JPEGFile.pData = pData; + pJPEG->iMaxMCUs = 1000; // set to an unnaturally high value to start + return JPEGInit(pJPEG); +} /* JPEG_openRAM() */ +// +// File initialization +// +int JPEG_openFile(JPEGIMAGE *pJPEG, const char *szFilename, JPEG_DRAW_CALLBACK *pfnDraw) +{ + memset(pJPEG, 0, sizeof(JPEGIMAGE)); + pJPEG->ucMemType = JPEG_MEM_RAM; + pJPEG->pfnRead = readFile; + pJPEG->pfnSeek = seekFile; + pJPEG->pfnDraw = pfnDraw; + pJPEG->pfnOpen = NULL; + pJPEG->pfnClose = closeFile; + pJPEG->iMaxMCUs = 1000; // set to an unnaturally high value to start + pJPEG->JPEGFile.fHandle = fopen(szFilename, "r+b"); + if (pJPEG->JPEGFile.fHandle == NULL) + return 0; + fseek((FILE *)pJPEG->JPEGFile.fHandle, 0, SEEK_END); + pJPEG->JPEGFile.iSize = (int)ftell((FILE *)pJPEG->JPEGFile.fHandle); + fseek((FILE *)pJPEG->JPEGFile.fHandle, 0, SEEK_SET); + return JPEGInit(pJPEG); +} /* JPEG_openFile() */ + +int JPEG_getLastError(JPEGIMAGE *pJPEG) +{ + return pJPEG->iError; +} /* JPEG_getLastError() */ + +int JPEG_getWidth(JPEGIMAGE *pJPEG) +{ + return pJPEG->iWidth; +} /* JPEG_getWidth() */ + +int JPEG_getHeight(JPEGIMAGE *pJPEG) +{ + return pJPEG->iHeight; +} /* JPEG_getHeight() */ + +int JPEG_getOrientation(JPEGIMAGE *pJPEG) +{ + return (int)pJPEG->ucOrientation; +} /* JPEG_getOrientation() */ + +int JPEG_getBpp(JPEGIMAGE *pJPEG) +{ + return (int)pJPEG->ucBpp; +} /* JPEG_getBpp() */ +int JPEG_getSubSample(JPEGIMAGE *pJPEG) +{ + return (int)pJPEG->ucSubSample; +} /* JPEG_getSubSample() */ +int JPEG_hasThumb(JPEGIMAGE *pJPEG) +{ + return (int)pJPEG->ucHasThumb; +} /* JPEG_hasThumb() */ + +int JPEG_getThumbWidth(JPEGIMAGE *pJPEG) +{ + return pJPEG->iThumbWidth; +} /* JPEG_getThumbWidth() */ + +int JPEG_getThumbHeight(JPEGIMAGE *pJPEG) +{ + return pJPEG->iThumbHeight; +} /* JPEG_getThumbHeight() */ + +void JPEG_setPixelType(JPEGIMAGE *pJPEG, int iType) +{ + pJPEG->ucPixelType = (uint8_t)iType; +} /* JPEG_setPixelType() */ + +void JPEG_setMaxOutputSize(JPEGIMAGE *pJPEG, int iMaxMCUs) +{ + if (iMaxMCUs < 1) + iMaxMCUs = 1; // don't allow invalid value + pJPEG->iMaxMCUs = iMaxMCUs; +} /* JPEG_setMaxOutputSize() */ + +int JPEG_decode(JPEGIMAGE *pJPEG, int x, int y, int iOptions) +{ + pJPEG->iXOffset = x; + pJPEG->iYOffset = y; + pJPEG->iOptions = iOptions; + return DecodeJPEG(pJPEG); +} /* JPEG_decode() */ + +int JPEG_decodeDither(JPEGIMAGE *pJPEG, uint8_t *pDither, int iOptions) +{ + pJPEG->iOptions = iOptions; + pJPEG->pDitherBuffer = pDither; + return DecodeJPEG(pJPEG); +} /* JPEG_decodeDither() */ + +void JPEG_close(JPEGIMAGE *pJPEG) +{ + if (pJPEG->pfnClose) + (*pJPEG->pfnClose)(pJPEG->JPEGFile.fHandle); +} /* JPEG_close() */ + +#endif // !__cplusplus + +// +// Validate/adjust the requested crop area to land on MCU boundaries +// (expand in all directions if needed) +// +void JPEG_setCropArea(JPEGIMAGE *pJPEG, int x, int y, int w, int h) +{ + int mcuCX=0, mcuCY=0; + + if (x < 0) + x = 0; + if (y < 0) + y = 0; + switch (pJPEG->ucSubSample) // set up the parameters for the different subsampling options + { + case 0x00: // fake value to handle grayscale + case 0x01: // fake value to handle sRGB/CMYK + case 0x11: + mcuCX = mcuCY = 8; + break; + case 0x12: + mcuCX = 8; + mcuCY = 16; + break; + case 0x21: + mcuCX = 16; + mcuCY = 8; + break; + case 0x22: + mcuCX = mcuCY = 16; + break; + default: // to suppress compiler warning + break; + } + if (w & (mcuCX-1)) { + w &= ~(mcuCX-1); + w += mcuCX; + } + if (h & (mcuCY-1)) { + h &= ~(mcuCY-1); + h += mcuCY; + } + if (x > pJPEG->iWidth-mcuCX) x = pJPEG->iWidth-mcuCX; + if (y > pJPEG->iHeight-mcuCY) y = pJPEG->iHeight-mcuCY; + if (x + w > pJPEG->iWidth) w = pJPEG->iWidth - mcuCX; + if (y + h > pJPEG->iHeight) h = pJPEG->iHeight - mcuCY; + x &= ~(mcuCX-1); + y &= ~(mcuCY-1); + pJPEG->iCropX = x; pJPEG->iCropY = y; + pJPEG->iCropCX = w; pJPEG->iCropCY = h; +} /* JPEG_setCropArea() */ + +void JPEG_getCropArea(JPEGIMAGE *pJPEG, int *x, int *y, int *w, int *h) +{ + *x = pJPEG->iCropX; *y = pJPEG->iCropY; + *w = pJPEG->iCropCX; *h = pJPEG->iCropCY; +} /* JPEG_getCropArea() */ + +void JPEG_setFramebuffer(JPEGIMAGE *pJPEG, void *pFramebuffer) +{ + pJPEG->pFramebuffer = pFramebuffer; +} /* JPEG_setFramebuffer() */ + +// +// Helper functions for memory based images +// +static int32_t readRAM(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen) +{ + int32_t iBytesRead; + + iBytesRead = iLen; + if ((pFile->iSize - pFile->iPos) < iLen) + iBytesRead = pFile->iSize - pFile->iPos; + if (iBytesRead <= 0) + return 0; + memcpy(pBuf, &pFile->pData[pFile->iPos], iBytesRead); + pFile->iPos += iBytesRead; + return iBytesRead; +} /* readRAM() */ + +static int32_t readFLASH(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen) +{ + int32_t iBytesRead; + + iBytesRead = iLen; + if ((pFile->iSize - pFile->iPos) < iLen) + iBytesRead = pFile->iSize - pFile->iPos; + if (iBytesRead <= 0) + return 0; + memcpy_P(pBuf, &pFile->pData[pFile->iPos], iBytesRead); + pFile->iPos += iBytesRead; + return iBytesRead; +} /* readFLASH() */ + +static int32_t seekMem(JPEGFILE *pFile, int32_t iPosition) +{ + if (iPosition < 0) iPosition = 0; + else if (iPosition >= pFile->iSize) iPosition = pFile->iSize-1; + pFile->iPos = iPosition; + return iPosition; +} /* seekMem() */ + +#if defined (__MACH__) || defined( __LINUX__ ) || defined( __MCUXPRESSO ) + +static void closeFile(void *handle) +{ + fclose((FILE *)handle); +} /* closeFile() */ + +static int32_t seekFile(JPEGFILE *pFile, int32_t iPosition) +{ + if (iPosition < 0) iPosition = 0; + else if (iPosition >= pFile->iSize) iPosition = pFile->iSize-1; + pFile->iPos = iPosition; + fseek((FILE *)pFile->fHandle, iPosition, SEEK_SET); + return iPosition; +} /* seekFile() */ + +static int32_t readFile(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen) +{ + int32_t iBytesRead; + + iBytesRead = iLen; + if ((pFile->iSize - pFile->iPos) < iLen) + iBytesRead = pFile->iSize - pFile->iPos; + if (iBytesRead <= 0) + return 0; + iBytesRead = (int)fread(pBuf, 1, iBytesRead, (FILE *)pFile->fHandle); + pFile->iPos += iBytesRead; + return iBytesRead; +} /* readFile() */ + +#endif // __LINUX__ +// +// The following functions are written in plain C and have no +// 3rd party dependencies, not even the C runtime library +// +// +// Initialize a JPEG file and callback access from a file on SD or memory +// returns 1 for success, 0 for failure +// Fills in the basic image info fields of the JPEGIMAGE structure +// +static int JPEGInit(JPEGIMAGE *pJPEG) +{ + return JPEGParseInfo(pJPEG, 0); // gather info for image +} /* JPEGInit() */ +// +// Unpack the Huffman tables +// +static int JPEGGetHuffTables(uint8_t *pBuf, int iLen, JPEGIMAGE *pJPEG) +{ + int i, j, iOffset, iTableOffset; + uint8_t ucTable, *pHuffVals; + + iOffset = 0; + pHuffVals = (uint8_t *)pJPEG->usPixels; // temp holding area to save RAM + while (iLen > 17) // while there are tables to copy (we may have combined more than 1 table together) + { + ucTable = pBuf[iOffset++]; // get table index + if (ucTable & 0x10) // convert AC offset of 0x10 into offset of 4 + ucTable ^= 0x14; + pJPEG->ucHuffTableUsed |= (1 << ucTable); // mark this table as being defined + if (ucTable <= 7) // tables are 0-3, AC+DC + { + iTableOffset = ucTable * HUFF_TABLEN; + j = 0; // total bits + for (i=0; i<16; i++) + { + j += pBuf[iOffset]; + pHuffVals[iTableOffset+i] = pBuf[iOffset++]; + } + iLen -= 17; // subtract length of bit lengths + if (j == 0 || j > 256 || j > iLen) // bogus bit lengths + { + return -1; + } + iTableOffset += 16; + for (i=0; ib11Bit = 1; // indicate we're using the bigger A/C decode tables + // first do DC components (up to 4 tables of 12-bit codes) + // we can save time and memory for the DC codes by knowing that there exist short codes (<= 6 bits) + // and long codes (>6 bits, but the first 5 bits are 1's). This allows us to create 2 tables: a 6-bit and 7 or 8-bit + // to handle any DC codes + iMaxLength = 12; // assume DC codes can be 12-bits + iMaxMask = 0x7f; // lower 7 bits after truncate 5 leading 1's + if (pJPEG->ucMode == 0xc3) // create 13-bit tables for lossless mode + { + iMaxLength = 13; + iMaxMask = 0xff; + } + for (iTable = 0; iTable < 2; iTable++) + { + if (pJPEG->ucHuffTableUsed & (1<huffdcFast[iTable] = (int *)PILIOAlloc(0x180); // short table = 128 bytes, long table = 256 bytes + pucShort = (unsigned char *)&pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE]; + // pJPEG->huffdc[iTable] = pJPEG->huffdcFast[iTable] + 0x20; // 0x20 longs = 128 bytes + pucLong = (unsigned char *)&pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE + 128]; + pBits = &pJPEG->ucHuffVals[iTable * HUFF_TABLEN]; + p = pBits; + p += 16; // point to bit data + cc = 0; // start with a code of 0 + for (iBitNum = 1; iBitNum <= 16; iBitNum++) + { + iLen = *pBits++; // get number of codes for this bit length + if (iBitNum > iMaxLength && iLen > 0) // we can't handle codes longer a certain length + { + return -1; + } + while (iLen) + { + // if (iBitNum > 6) // do long table + if ((cc >> (iBitNum-5)) == 0x1f) // first 5 bits are 1 - use long table + { + count = iMaxLength - iBitNum; + codestart = cc << count; + pucTable = &pucLong[codestart & iMaxMask]; // use lower 7/8 bits of code + } + else // do short table + { + count = 6 - iBitNum; + if (count < 0) + return -1; // DEBUG - something went wrong + codestart = cc << count; + pucTable = &pucShort[codestart]; + } + ucCode = *p++; // get actual huffman code + if (ucCode == 16 && pJPEG->ucMode == 0xc3) // lossless mode + { + // in lossless mode, this code won't fit in 4 bits, so save it's length in the next slot + ucCode = 255; + pucLong[256] = (unsigned char)iBitNum; + } + // does precalculating the DC value save time on ARM? +#ifndef USE_ARM_ASM + if (ucCode != 0 && (ucCode + iBitNum) <= 6 && pJPEG->ucMode != 0xc2) // we can fit the magnitude value in the code lookup (not for progressive) + { + int k, iLoop; + unsigned char ucCoeff; + unsigned char *d = &pucTable[512]; + unsigned char ucMag = ucCode; + ucCode |= ((iBitNum+ucCode) << 4); // add magnitude bits to length + repeat = 1<ucHuffTableUsed & (1<<(iTable+4))) // if this table is defined + { + pBits = &pJPEG->ucHuffVals[(iTable+4) * HUFF_TABLEN]; + p = pBits; + p += 16; // point to bit data + pShort = &pJPEG->usHuffAC[iTable*HUFF11SIZE]; + pLong = &pJPEG->usHuffAC[iTable*HUFF11SIZE + 1024]; // long codes start here + cc = 0; // start with a code of 0 + // construct the decode table + for (iBitNum = 1; iBitNum <= 16; iBitNum++) + { + iLen = *pBits++; // get number of codes for this bit length + while (iLen) + { + if ((cc >> (iBitNum-4)) == 0xf) // first 4 bits are 1 - use long table + { + count = 16 - iBitNum; + codestart = cc << count; + pTable = &pLong[codestart & 0xfff]; // use lower 12 bits of code + } + else + { + count = 12 - iBitNum; + if (count < 0) // a 13-bit? code - that doesn't fit our optimized scheme, see if we can do a bigger table version + { + return -1; // DEBUG - fatal error, we currently don't support it + } + codestart = cc << count; + pTable = &pShort[codestart]; // 11 bits or shorter + } + code = *p++; // get actual huffman code + if (bThumbnail && code != 0) // add "extra" bits to code length since we skip these codes + { + // get rid of extra bits in code and add increment (1) for AC index + code = ((iBitNum+(code & 0xf)) << 8) | ((code >> 4)+1); + } + else + { + code |= (iBitNum << 8); + } + if (count) // do it as dwords to save time + { + repeat = 1 << (count-1); // store as dwords (/2) + ul = code | (code << 16); + pLongTable = (uint32_t *)pTable; + for (j=0; jusPixels; + for (j=0; j<4; j++) + { + if (pJPEG->ucHuffTableUsed & (1 << j)) + iTablesUsed++; + } + // first do DC components (up to 4 tables of 12-bit codes) + // we can save time and memory for the DC codes by knowing that there exist short codes (<= 6 bits) + // and long codes (>6 bits, but the first 5 bits are 1's). This allows us to create 2 tables: a 6-bit and 7 or 8-bit + // to handle any DC codes + iMaxLength = 12; // assume DC codes can be 12-bits + iMaxMask = 0x7f; // lower 7 bits after truncate 5 leading 1's + for (iTable = 0; iTable < 4; iTable++) + { + if (pJPEG->ucHuffTableUsed & (1 << iTable)) + { + // pJPEG->huffdcFast[iTable] = (int *)PILIOAlloc(0x180); // short table = 128 bytes, long table = 256 bytes + pucShort = &pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE]; + // pJPEG->huffdc[iTable] = pJPEG->huffdcFast[iTable] + 0x20; // 0x20 longs = 128 bytes + pucLong = &pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE + 128]; + pBits = &pHuffVals[iTable * HUFF_TABLEN]; + p = pBits; + p += 16; // point to bit data + cc = 0; // start with a code of 0 + for (iBitNum = 1; iBitNum <= 16; iBitNum++) + { + iLen = *pBits++; // get number of codes for this bit length + if (iBitNum > iMaxLength && iLen > 0) // we can't handle codes longer a certain length + { + return 0; + } + while (iLen) + { + // if (iBitNum > 6) // do long table + if ((cc >> (iBitNum-5)) == 0x1f) // first 5 bits are 1 - use long table + { + count = iMaxLength - iBitNum; + codestart = cc << count; + pucTable = &pucLong[codestart & iMaxMask]; // use lower 7/8 bits of code + } + else // do short table + { + count = 6 - iBitNum; + if (count < 0) + return 0; // DEBUG - something went wrong + codestart = cc << count; + pucTable = &pucShort[codestart]; + } + ucCode = *p++; // get actual huffman code + // does precalculating the DC value save time on ARM? +#ifndef USE_ARM_ASM + if (ucCode != 0 && (ucCode + iBitNum) <= 6 && pJPEG->ucMode != 0xc2) // we can fit the magnitude value in the code lookup (not for progressive) + { + int k, iLoop; + unsigned char ucCoeff; + unsigned char *d = &pucTable[512]; + unsigned char ucMag = ucCode; + ucCode |= ((iBitNum+ucCode) << 4); // add magnitude bits to length + repeat = 1<ucHuffTableUsed & (1 << (iTable+4))) // if this table is defined + { + pBits = &pHuffVals[(iTable+4) * HUFF_TABLEN]; + p = pBits; + p += 16; // point to bit data + if (iTable * HUFF11SIZE >= sizeof(pJPEG->usHuffAC) / 2) + return 0; + pShort = &pJPEG->usHuffAC[iTable*HUFF11SIZE]; + pLong = &pJPEG->usHuffAC[iTable*HUFF11SIZE + 1024]; + cc = 0; // start with a code of 0 + // construct the decode table + for (iBitNum = 1; iBitNum <= 16; iBitNum++) + { + iLen = *pBits++; // get number of codes for this bit length + while (iLen) + { + if ((cc >> (iBitNum-6)) == 0x3f) // first 6 bits are 1 - use long table + { + count = 16 - iBitNum; + codestart = cc << count; + pTable = &pLong[codestart & 0x3ff]; // use lower 10 bits of code + } + else + { + count = 10 - iBitNum; + if (count < 0) // an 11/12-bit? code - that doesn't fit our optimized scheme, see if we can do a bigger table version + { + if (count == -1 && iTablesUsed <= 4) // we need to create "slow" tables + { // DEBUG +// j = JPEGMakeHuffTables_Slow(pJPEG, bThumbnail); + return 0; + } + else + return 0; // DEBUG - fatal error, more than 2 big tables we currently don't support + } + codestart = cc << count; + pTable = &pShort[codestart]; // 10 bits or shorter + } + code = *p++; // get actual huffman code + if (bThumbnail && code != 0) // add "extra" bits to code length since we skip these codes + { + // get rid of extra bits in code and add increment (1) for AC index + code = ((iBitNum+(code & 0xf)) << 8) | ((code >> 4)+1); + } +#ifdef BOGUS // precalculating the AC coeff makes it run slightly slower + else if ((code & 0xf) != 0 && (code + iBitNum) <= 10) // we can fit the magnitude value + huffman code in a single read + { + int k, iLoop; + unsigned short usCoeff; + unsigned short *d = &pTable[4096]; // use unused table slots 2+3 for extra coeff data + unsigned char ucMag = (unsigned char)(code & 0xf); + code |= ((iBitNum + (code & 0xf)) << 8); // add magnitude bits to length + repeat = 1< 1) + { + iType = 4; + } + switch (iType) + { + case 3: /* Short */ + i = TIFFSHORT(p+8, bMotorola); + break; + case 4: /* Long */ + case 7: // undefined (treat it as a long since it's usually a multibyte buffer) + i = TIFFLONG(p+8, bMotorola); + break; + case 6: // signed byte + i = (signed char)p[8]; + break; + case 2: /* ASCII */ + case 5: /* Unsigned Rational */ + case 10: /* Signed Rational */ + i = TIFFLONG(p+8, bMotorola); + break; + default: /* to suppress compiler warning */ + i = 0; + break; + } + return i; + +} /* TIFFVALUE() */ +static void GetTIFFInfo(JPEGIMAGE *pPage, int bMotorola, int iOffset) +{ + int iTag, iTagCount, i; + uint8_t *cBuf = pPage->ucFileBuf; + + iTagCount = TIFFSHORT(&cBuf[iOffset], bMotorola); /* Number of tags in this dir */ + if (iTagCount < 1 || iTagCount > 256) // invalid tag count + return; /* Bad header info */ + /*--- Search the TIFF tags ---*/ + for (i=0; iucOrientation = TIFFVALUE(p, bMotorola); + } + else if (iTag == 256) // width of thumbnail + { + pPage->iThumbWidth = TIFFVALUE(p, bMotorola); + } + else if (iTag == 257) // height of thumbnail + { + pPage->iThumbHeight = TIFFVALUE(p, bMotorola); + } + else if (iTag == 513) // offset to JPEG data + { + pPage->iThumbData = TIFFVALUE(p, bMotorola); + } + } +} /* GetTIFFInfo() */ + +static int JPEGGetSOS(JPEGIMAGE *pJPEG, int *iOff) +{ + int16_t sLen; + int iOffset = *iOff; + int i, j; + uint8_t uc,c,cc; + uint8_t *buf = pJPEG->ucFileBuf; + + sLen = MOTOSHORT(&buf[iOffset]); + iOffset += 2; + + // Assume no components in this scan + for (i=0; i<4; i++) + pJPEG->JPCI[i].component_needed = 0; + + uc = buf[iOffset++]; // get number of components + pJPEG->ucComponentsInScan = uc; + sLen -= 3; + if (uc < 1 || uc > MAX_COMPS_IN_SCAN || sLen != (uc*2+3)) // check length of data packet + return 1; // error + for (i=0; iJPCI[j].component_id == cc) + break; + } + if (j == 4) // error, not found + return 1; + if ((c & 0xf) > 3 || (c & 0xf0) > 0x30) + return 1; // bogus table numbers + pJPEG->JPCI[j].dc_tbl_no = c >> 4; + pJPEG->JPCI[j].ac_tbl_no = c & 0xf; + pJPEG->JPCI[j].component_needed = 1; // mark this component as being included in the scan + } + pJPEG->iScanStart = buf[iOffset++]; // Get the scan start (or lossless predictor) for this scan + pJPEG->iScanEnd = buf[iOffset++]; // Get the scan end for this scan + c = buf[iOffset++]; // successive approximation bits + pJPEG->cApproxBitsLow = c & 0xf; // also point transform in lossless mode + pJPEG->cApproxBitsHigh = c >> 4; + + *iOff = iOffset; + return 0; + +} /* JPEGGetSOS() */ +// +// Remove markers from the data stream to allow faster decode +// Stuffed zeros and restart interval markers aren't needed to properly decode +// the data, but they make reading VLC data slower, so I pull them out first +// +static int JPEGFilter(uint8_t *pBuf, uint8_t *d, int iLen, uint8_t *bFF) +{ +#ifdef HAS_SSE + __m128i xmmIn, xmmOut; + __m128i xmmFF = _mm_cmpeq_epi8(xmmIn, xmmIn); +#endif // HAS_SSE +#ifdef HAS_NEON + uint8x16_t u816FF = vdupq_n_u8(0xff); + uint8x16_t u816In, u816Out; +#ifdef OLD_NEON + uint8x8_t u88Merged; + uint32x2_t u322merged; +#endif // OLD_NEON +#endif // HAS_NEON + + unsigned char c, *s, *pEnd, *pStart; + + pStart = d; + s = pBuf; + pEnd = &s[iLen-1]; // stop just shy of the end to not miss a final marker/stuffed 0 + if (*bFF) // last byte was a FF, check the next one + { + if (s[0] == 0) // stuffed 0, keep the FF + *d++ = 0xff; + s++; + *bFF = 0; + } +#ifdef HAS_SSE + while (s < pEnd-16) + { + xmmIn = _mm_loadu_si128((__m128i*)s); + xmmOut = _mm_cmpeq_epi8(xmmFF, xmmIn); // any FF's in these 16 bytes? + if (_mm_movemask_epi8(xmmOut) == 0) // no FF's, just copy this block + { + _mm_storeu_si128((__m128i*)d, xmmIn); + s += 16; + d += 16; + } + else + { + int i = 16; // do these 16 bytes the slow way + while (i) { + c = *d++ = *s++; + if (c == 0xff) { // marker or stuffed zeros? + if (s[0] != 0) { // it's a marker, skip both + d--; + } + s++; // for stuffed 0's, store the FF, skip the 00 + } // found FF + i--; + } // while processing the 16 "slow" bytes + } + } // while SSE filtering +#endif // HAS_SSE +#ifdef HAS_NEON + while (s < pEnd - 16) + { + u816In = vld1q_u8(s); + u816Out = vceqq_u8(u816FF, u816In); // any FF's in these 16 bytes? +#ifdef OLD_NEON + u88Merged = vpadd_u8(vget_high_u8(u816Out), vget_low_u8(u816Out)); + u322merged = vpadd_u32 (vreinterpret_u32_u8(u88Merged), vreinterpret_u32_u8(u88Merged)); + if (vget_lane_u32 (u322merged, 0) == 0) // no FF's, just copy this block +#else + if (vaddvq_u8(u816Out) == 0) // any byte != 0 means FFs +#endif + { + vst1q_u8(d, u816In); + s += 16; + d += 16; + } + else + { + int i = 16; // do these 16 bytes the slow way + while (i) { + c = *d++ = *s++; + if (c == 0xff) { // marker or stuffed zeros? + if (s[0] != 0) { // it's a marker, skip both + d--; + } + s++; // for stuffed 0's, store the FF, skip the 00 + } // found FF + i--; + } // while processing the 16 "slow" bytes + } // if need to remove stuffed FF's or markers + } // while processing buffer with SIMD +#endif // HAS_NEON + + while (s < pEnd) + { + c = *d++ = *s++; + if (c == 0xff) // marker or stuffed zeros? + { + if (s[0] != 0) // it's a marker, skip both + { + d--; + } + s++; // for stuffed 0's, store the FF, skip the 00 + } + } + if (s == pEnd) // need to test the last byte + { + c = s[0]; + if (c == 0xff) // last byte is FF, take care of it next time through + *bFF = 1; // take care of it next time through + else + *d++ = c; // nope, just store it + } + return (int)(d-pStart); // filtered output length +} /* JPEGFilter() */ +// +// Read and filter more VLC data for decoding +// +static void JPEGGetMoreData(JPEGIMAGE *pPage) +{ + int iDelta = pPage->iVLCSize - pPage->iVLCOff; +// printf("Getting more data...size=%d, off=%d\n", pPage->iVLCSize, pPage->iVLCOff); + // move any existing data down + if (iDelta >= (JPEG_FILE_BUF_SIZE-64) || iDelta < 0) + return; // buffer is already full; no need to read more data + if (pPage->iVLCOff != 0) + { + memcpy(pPage->ucFileBuf, &pPage->ucFileBuf[pPage->iVLCOff], pPage->iVLCSize - pPage->iVLCOff); + pPage->iVLCSize -= pPage->iVLCOff; + pPage->iVLCOff = 0; + pPage->bb.pBuf = pPage->ucFileBuf; // reset VLC source pointer too + } + if (pPage->JPEGFile.iPos < pPage->JPEGFile.iSize && pPage->iVLCSize < JPEG_FILE_BUF_SIZE-64) + { + int i; + // Try to read enough to fill the buffer + i = (*pPage->pfnRead)(&pPage->JPEGFile, &pPage->ucFileBuf[pPage->iVLCSize], JPEG_FILE_BUF_SIZE - pPage->iVLCSize); // max length we can read + // Filter out the markers + pPage->iVLCSize += JPEGFilter(&pPage->ucFileBuf[pPage->iVLCSize], &pPage->ucFileBuf[pPage->iVLCSize], i, &pPage->ucFF); + } +} /* JPEGGetMoreData() */ + +// +// Parse the JPEG header, gather necessary info to decode the image +// Returns 1 for success, 0 for failure +// +static int JPEGParseInfo(JPEGIMAGE *pPage, int bExtractThumb) +{ + int iBytesRead; + int i, iOffset, iTableOffset; + uint8_t ucTable, *s = pPage->ucFileBuf; + uint16_t usMarker, usLen = 0; + int iFilePos = 0; + + pPage->pFramebuffer = NULL; // this must be set AFTER calling this function + // make sure usPixels is 16-byte aligned for S3 SIMD (and possibly others) + i = (int)(int64_t)pPage->usUnalignedPixels; + i &= 15; + if (i == 0) i = 16; // already 16-byte aligned + pPage->usPixels = &pPage->usUnalignedPixels[(16-i)>>1]; + // do the same for the MCU buffers + i = (int)(int64_t)pPage->sUnalignedMCUs; + i &= 15; + if (i == 0) i = 16; + pPage->sMCUs = &pPage->sUnalignedMCUs[(16-i)>>1]; + + if (bExtractThumb) // seek to the start of the thumbnail image + { + iFilePos = pPage->iThumbData; + (*pPage->pfnSeek)(&pPage->JPEGFile, iFilePos); + } + iBytesRead = (*pPage->pfnRead)(&pPage->JPEGFile, s, JPEG_FILE_BUF_SIZE); + if (iBytesRead < 256) // a JPEG file this tiny? probably bad + { + pPage->iError = JPEG_INVALID_FILE; + return 0; + } + iFilePos += iBytesRead; + if (MOTOSHORT(pPage->ucFileBuf) != 0xffd8) + { + pPage->iError = JPEG_INVALID_FILE; + return 0; // not a JPEG file + } + iOffset = 2; /* Start at offset of first marker */ + usMarker = 0; /* Search for SOFx (start of frame) marker */ + while (usMarker != 0xffda && iOffset < pPage->JPEGFile.iSize) + { + if (iOffset >= JPEG_FILE_BUF_SIZE/2) // too close to the end, read more data + { + // Do we need to seek first? + if (iOffset >= JPEG_FILE_BUF_SIZE) + { + iFilePos += (iOffset - iBytesRead); + iOffset = 0; + (*pPage->pfnSeek)(&pPage->JPEGFile, iFilePos); + iBytesRead = 0; // throw away any old data + } + // move existing bytes down + if (iOffset) + { + memcpy(pPage->ucFileBuf, &pPage->ucFileBuf[iOffset], iBytesRead - iOffset); + iBytesRead -= iOffset; + iOffset = 0; + } + i = (*pPage->pfnRead)(&pPage->JPEGFile, &pPage->ucFileBuf[iBytesRead], JPEG_FILE_BUF_SIZE-iBytesRead); + iFilePos += i; + iBytesRead += i; + } + usMarker = MOTOSHORT(&s[iOffset]); + iOffset += 2; + usLen = MOTOSHORT(&s[iOffset]); // marker length + + if (usMarker < 0xffc0 || usMarker == 0xffff) // invalid marker, could be generated by "Arles Image Web Page Creator" or Accusoft + { + iOffset++; + continue; // skip 1 byte and try to resync + } + switch (usMarker) + { + case 0xffc1: + case 0xffc2: + case 0xffc3: + pPage->iError = JPEG_UNSUPPORTED_FEATURE; + return 0; // currently unsupported modes + + case 0xffe1: // App1 (EXIF?) + if (s[iOffset+2] == 'E' && s[iOffset+3] == 'x' && (s[iOffset+8] == 'M' || s[iOffset+8] == 'I')) // the EXIF data we want + { + int bMotorola, IFD, iTagCount; + pPage->iEXIF = iFilePos - iBytesRead + iOffset + 8; // start of TIFF file + // Get the orientation value (if present) + bMotorola = (s[iOffset+8] == 'M'); + IFD = TIFFLONG(&s[iOffset+12], bMotorola); + iTagCount = TIFFSHORT(&s[iOffset+16], bMotorola); + GetTIFFInfo(pPage, bMotorola, IFD+iOffset+8); + // The second IFD defines the thumbnail (if present) + if (iTagCount >= 1 && iTagCount < 32) // valid number of tags for EXIF data 'page' + { + // point to next IFD + IFD += (12 * iTagCount) + 2; + IFD = TIFFLONG(&s[IFD + iOffset + 8], bMotorola); + if (IFD != 0) // Thumbnail present? + { + pPage->ucHasThumb = 1; + GetTIFFInfo(pPage, bMotorola, IFD+iOffset+8); // info for second 'page' of TIFF + pPage->iThumbData += iOffset + 8; // absolute offset in the file + } + } + } + break; + case 0xffc0: // SOFx - start of frame + pPage->ucMode = (uint8_t)usMarker; + pPage->ucBpp = s[iOffset+2]; // bits per sample + pPage->iCropX = pPage->iCropY = 0; // initialize crop rectangle to full image size + pPage->iCropCY = pPage->iHeight = MOTOSHORT(&s[iOffset+3]); + pPage->iCropCX = pPage->iWidth = MOTOSHORT(&s[iOffset+5]); + pPage->ucNumComponents = s[iOffset+7]; + pPage->ucBpp = pPage->ucBpp * pPage->ucNumComponents; /* Bpp = number of components * bits per sample */ + if (pPage->ucNumComponents == 1) + pPage->ucSubSample = 0; // use this to differentiate from color 1:1 + else + { + usLen -= 8; + iOffset += 8; +// pPage->ucSubSample = s[iOffset+9]; // subsampling option for the second color component + for (i=0; iucNumComponents; i++) + { + uint8_t ucSamp; + pPage->JPCI[i].component_id = s[iOffset++]; + pPage->JPCI[i].component_index = (unsigned char)i; + ucSamp = s[iOffset++]; // get the h+v sampling factor + if (i == 0) // Y component? + pPage->ucSubSample = ucSamp; +// pPage->JPCI[i].h_samp_factor = ucSamp >> 4; +// pPage->JPCI[i].v_samp_factor = ucSamp & 0xf; + pPage->JPCI[i].quant_tbl_no = s[iOffset++]; // quantization table number + if (pPage->JPCI[i].quant_tbl_no > 3) + { + pPage->iError = JPEG_DECODE_ERROR; + return 0; // error + } + usLen -= 3; + } + } + break; + case 0xffdd: // Restart Interval + if (usLen == 4) + pPage->iResInterval = MOTOSHORT(&s[iOffset+2]); + break; + case 0xffc4: /* M_DHT */ // get Huffman tables + iOffset += 2; // skip length + usLen -= 2; // subtract length length + if (JPEGGetHuffTables(&s[iOffset], usLen, pPage) != 0) // bad tables? + { + pPage->iError = JPEG_DECODE_ERROR; + return 0; // error + } + break; + case 0xffdb: /* M_DQT */ + /* Get the quantization tables */ + /* first byte has PPPPNNNN where P = precision and N = table number 0-3 */ + iOffset += 2; // skip length + usLen -= 2; // subtract length length + while (usLen > 0) + { + ucTable = s[iOffset++]; // table number + if ((ucTable & 0xf) > 3) // invalid table number + { + pPage->iError = JPEG_DECODE_ERROR; + return 0; + } + iTableOffset = (ucTable & 0xf) * DCTSIZE; + if (ucTable & 0xf0) // if word precision + { + for (i=0; isQuantTable[i+iTableOffset] = MOTOSHORT(&s[iOffset]); + iOffset += 2; + } + usLen -= (DCTSIZE*2 + 1); + } + else // byte precision + { + for (i=0; isQuantTable[i+iTableOffset] = (unsigned short)s[iOffset++]; + } + usLen -= (DCTSIZE + 1); + } + } + break; + } // switch on JPEG marker + iOffset += usLen; + } // while + if (usMarker == 0xffda) // start of image + { + if (pPage->ucBpp != 8) // need to match up table IDs + { + iOffset -= usLen; + JPEGGetSOS(pPage, &iOffset); // get Start-Of-Scan info for decoding + } + if (!JPEGMakeHuffTables(pPage, 0)) //int bThumbnail) DEBUG + { + pPage->iError = JPEG_UNSUPPORTED_FEATURE; + return 0; + } + // Now the offset points to the start of compressed data + i = JPEGFilter(&pPage->ucFileBuf[iOffset], pPage->ucFileBuf, iBytesRead-iOffset, &pPage->ucFF); + pPage->iVLCOff = 0; + pPage->iVLCSize = i; + JPEGGetMoreData(pPage); // read more VLC data + return 1; + } + pPage->iError = JPEG_DECODE_ERROR; + return 0; +} /* JPEGParseInfo() */ +// +// Fix and reorder the quantization table for faster decoding.* +// +static void JPEGFixQuantD(JPEGIMAGE *pJPEG) +{ + int iTable, iTableOffset; + signed short sTemp[DCTSIZE]; + int i; + uint16_t *p; + + for (iTable=0; iTableucNumComponents; iTable++) + { + iTableOffset = iTable * DCTSIZE; + p = (uint16_t *)&pJPEG->sQuantTable[iTableOffset]; + for (i=0; isQuantTable[iTableOffset], sTemp, DCTSIZE*sizeof(short)); // copy back to original spot + + // Prescale for DCT multiplication + p = (uint16_t *)&pJPEG->sQuantTable[iTableOffset]; + for (i=0; i> 12); + } + } +} /* JPEGFixQuantD() */ +// +// Decode the DC and 2-63 AC coefficients of the current DCT block +// For 1/4 and 1/8 scaled images, we don't store most of the AC values since we +// won't use them. For skipped MCUs (outside crop area), we don't decode any AC values +// +static int JPEGDecodeMCU(JPEGIMAGE *pJPEG, int iMCU, int *iDCPredictor) +{ + my_ulong ulCode, ulTemp; + uint8_t *pZig; + signed char cCoeff; + unsigned short *pFast; + unsigned char ucHuff, *pucFast; + uint32_t usHuff; // this prevents an unnecessary & 65535 for shorts + uint32_t ulBitOff; + my_ulong ulBits; // local copies to allow compiler to use register vars + uint8_t *pBuf, *pEnd, *pEnd2; + signed short *pMCU = &pJPEG->sMCUs[iMCU]; + uint16_t u16MCUFlags; + + #define MIN_DCT_THRESHOLD 8 + + ulBitOff = pJPEG->bb.ulBitOff; + ulBits = pJPEG->bb.ulBits; + pBuf = pJPEG->bb.pBuf; + + if (ulBitOff > (REGISTER_WIDTH-17)) { // need to get more data + pBuf += (ulBitOff >> 3); + ulBitOff &= 7; + ulBits = MOTOLONG(pBuf); + } + if (iMCU < 0) { // skip this block (cropped, or grayscale output from color) + pEnd2 = (uint8_t *)&cZigZag2[1]; // we only capture the DC value + } else if (pJPEG->iOptions & (JPEG_SCALE_QUARTER | JPEG_SCALE_EIGHTH)) { // reduced size DCT + pMCU[1] = pMCU[8] = pMCU[9] = 0; + pEnd2 = (uint8_t *)&cZigZag2[5]; // we only need to store the 4 elements we care about + } else { // decode all the AC coefficients + memset(pMCU, 0, 64*sizeof(short)); // pre-fill with zero since we may skip coefficients + pEnd2 = (uint8_t *)&cZigZag2[64]; + } + u16MCUFlags = 0; + pZig = (unsigned char *)&cZigZag2[1]; + pEnd = (unsigned char *)&cZigZag2[64]; + + // get the DC component + pucFast = &pJPEG->ucHuffDC[pJPEG->ucDCTable * DC_TABLE_SIZE]; + ulCode = (ulBits >> (REGISTER_WIDTH - 12 - ulBitOff)) & 0xfff; // get as lower 12 bits + if (ulCode >= 0xf80) // it's a long code + ulCode = (ulCode & 0xff); // point to long table and trim to 7-bits + 0x80 offset into long table + else + ulCode >>= 6; // it's a short code, use first 6 bits only + ucHuff = pucFast[ulCode]; + cCoeff = (signed char)pucFast[ulCode+512]; // get pre-calculated extra bits for "small" values + if (ucHuff == 0) // invalid code + return -1; + ulBitOff += (ucHuff >> 4); // add the Huffman length + ucHuff &= 0xf; // get the actual code (SSSS) + if (ucHuff) // if there is a change to the DC value + { // get the 'extra' bits + if (cCoeff) + { + (*iDCPredictor) += cCoeff; + } + else + { + if (ulBitOff > (REGISTER_WIDTH - 17)) // need to get more data + { + pBuf += (ulBitOff >> 3); + ulBitOff &= 7; + ulBits = MOTOLONG(pBuf); + } + ulCode = ulBits << ulBitOff; + ulTemp = ~(my_ulong)(((my_long)ulCode)>>(REGISTER_WIDTH-1)); // slide sign bit across other 63/31 bits + ulCode >>= (REGISTER_WIDTH - ucHuff); + ulCode -= ulTemp>>(REGISTER_WIDTH-ucHuff); + ulBitOff += ucHuff; // add bit length + (*iDCPredictor) += (int)ulCode; + } + } + if (iMCU >= 0) { // non-skipped block + pMCU[0] = (short)*iDCPredictor; // store in MCU[0] + } + if (pJPEG->ucACTable > 1) // unsupported + return -1; + // Now get the other 63 AC coefficients + pFast = &pJPEG->usHuffAC[pJPEG->ucACTable * HUFF11SIZE]; + if (pJPEG->b11Bit) // 11-bit "slow" tables used + { +// if (pJPEG->pHuffACFast == pJPEG->huffacFast[1]) // second table +// pFast = &pJPEG->ucAltHuff[0]; + while (pZig < pEnd) + { + if (ulBitOff >(REGISTER_WIDTH - 17)) // need to get more data + { + pBuf += (ulBitOff >> 3); + ulBitOff &= 7; + ulBits = MOTOLONG(pBuf); + } + ulCode = (ulBits >> (REGISTER_WIDTH - 16 - ulBitOff)) & 0xffff; // get as lower 16 bits + if (ulCode >= 0xf000) // first 4 bits = 1, use long table + ulCode = (ulCode & 0x1fff); + else + ulCode >>= 4; // use lower 12 bits (short table) + usHuff = pFast[ulCode]; + if (usHuff == 0) // invalid code + return -1; + ulBitOff += (usHuff >> 8); // add length + usHuff &= 0xff; // get code (RRRR/SSSS) + if (usHuff == 0) // no more AC components + { + goto mcu_done; + } + pZig += (usHuff >> 4); // get the skip amount (RRRR) + usHuff &= 0xf; // get (SSSS) - extra length + if (pZig < pEnd2 && usHuff) + { + ulCode = ulBits << ulBitOff; + ulTemp = ~(my_ulong) (((my_long) ulCode) >> (REGISTER_WIDTH-1)); // slide sign bit across other 63 bits + ulCode >>= (REGISTER_WIDTH - usHuff); + ulCode -= ulTemp >> (REGISTER_WIDTH - usHuff); + u16MCUFlags |= 1<<(*pZig & 7); // keep track of occupied columns + u16MCUFlags |= *pZig << 8; // for testing occupied rows + pMCU[*pZig] = (signed short)ulCode; // store AC coefficient (already reordered) + } + ulBitOff += usHuff; // add (SSSS) extra length + pZig++; + if (ulBitOff > (REGISTER_WIDTH - 17)) // need to get more data + { + pBuf += (ulBitOff >> 3); + ulBitOff &= 7; + ulBits = MOTOLONG(pBuf); + } + } // while + } + else // 10-bit "fast" tables used + { + while (pZig < pEnd) + { + if (ulBitOff >(REGISTER_WIDTH - 17)) // need to get more data + { + pBuf += (ulBitOff >> 3); + ulBitOff &= 7; + ulBits = MOTOLONG(pBuf); + } + ulCode = (ulBits >> (REGISTER_WIDTH - 16 - ulBitOff)) & 0xffff; // get as lower 16 bits + if (ulCode >= 0xfc00) // first 6 bits = 1, use long table + ulCode = (ulCode & 0x7ff); // (ulCode & 0x3ff) + 0x400; + else + ulCode >>= 6; // use lower 10 bits (short table) + usHuff = pFast[ulCode]; + if (usHuff == 0) // invalid code + return -1; + ulBitOff += (usHuff >> 8); // add length + usHuff &= 0xff; // get code (RRRR/SSSS) + if (usHuff == 0) // no more AC components + { + goto mcu_done; + } + pZig += (usHuff >> 4); // get the skip amount (RRRR) + usHuff &= 0xf; // get (SSSS) - extra length + if (pZig < pEnd2 && usHuff) + { + ulCode = ulBits << ulBitOff; + ulTemp = ~(my_ulong) (((my_long) ulCode) >> (REGISTER_WIDTH-1)); // slide sign bit across other 63 bits + ulCode >>= (REGISTER_WIDTH - usHuff); + ulCode -= ulTemp >> (REGISTER_WIDTH - usHuff); + u16MCUFlags |= 1<<(*pZig & 7); // keep track of occupied columns + u16MCUFlags |= *pZig << 8; // for testing occupied rows + pMCU[*pZig] = (signed short)ulCode; // store AC coefficient (already reordered) + } + ulBitOff += usHuff; // add (SSSS) extra length + pZig++; + if (ulBitOff >(REGISTER_WIDTH - 17)) // need to get more data + { + pBuf += (ulBitOff >> 3); + ulBitOff &= 7; + ulBits = MOTOLONG(pBuf); + } + } // while + } // 10-bit tables +mcu_done: + pJPEG->bb.pBuf = pBuf; + pJPEG->iVLCOff = (int)(pBuf - pJPEG->ucFileBuf); + pJPEG->bb.ulBitOff = ulBitOff; + pJPEG->bb.ulBits = ulBits; + pJPEG->u16MCUFlags = u16MCUFlags; + return 0; +} /* JPEGDecodeMCU() */ +// +// Inverse DCT +// +static void JPEGIDCT(JPEGIMAGE *pJPEG, int iMCUOffset, int iQuantTable) +{ + int iRow; + unsigned char ucColMask; + int iCol; + signed int tmp6,tmp7,tmp10,tmp11,tmp12,tmp13; + signed int z5,z10,z11,z12,z13; + signed int tmp0,tmp1,tmp2,tmp3,tmp4,tmp5; + signed short *pQuant; + unsigned char *pOutput; + uint16_t u16MCUFlags; + int16_t *pMCUSrc = &pJPEG->sMCUs[iMCUOffset]; +#ifdef HAS_SSE +__m128i mmxRow0, mmxRow1, mmxRow2, mmxRow3, mmxRow4, mmxRow5, mmxRow6, mmxRow7; +__m128i mmxTemp, mmxTemp0, mmxTemp1, mmxTemp2, mmxTemp3, mmxTemp4, mmxTemp5, mmxTemp6, mmxTemp7, mmxTemp10, mmxTemp11, mmxTemp12, mmxTemp13; +__m128i mmxZ5, mmxZ10, mmxZ11, mmxZ12, mmxZ13; +#endif // HAS_SSE +#ifdef HAS_NEON +int16x8_t mmxRow0, mmxRow1, mmxRow2, mmxRow3, mmxRow4, mmxRow5, mmxRow6, mmxRow7; +int16x8_t mmxTemp, mmxTemp0, mmxTemp1, mmxTemp2, mmxTemp3, mmxTemp4, mmxTemp5, mmxTemp6, mmxTemp7, mmxTemp10, mmxTemp11, mmxTemp12, mmxTemp13; +int16x8_t mmxZ5, mmxZ10, mmxZ11, mmxZ12, mmxZ13; +#endif // HAS_NEON + + u16MCUFlags = pJPEG->u16MCUFlags; + + // my shortcut method appears to violate patent 20020080052 + // but the patent is invalidated by prior art: + // http://netilium.org/~mad/dtj/DTJ/DTJK04/ + pQuant = &pJPEG->sQuantTable[iQuantTable * DCTSIZE]; + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) // special case + { + /* Column 0 */ + tmp4 = pMCUSrc[0] * pQuant[0]; + tmp5 = pMCUSrc[8] * pQuant[8]; + tmp0 = tmp4 + tmp5; + tmp2 = tmp4 - tmp5; + /* Column 1 */ + tmp4 = pMCUSrc[1] * pQuant[1]; + tmp5 = pMCUSrc[9] * pQuant[9]; + tmp1 = tmp4 + tmp5; + tmp3 = tmp4 - tmp5; + /* Pass 2: process 2 rows, store into output array. */ + /* Row 0 */ + pOutput = (unsigned char *)pMCUSrc; // store output pixels back into MCU + pOutput[0] = ucRangeTable[(((tmp0 + tmp1)>>5) & 0x3ff)]; + pOutput[1] = ucRangeTable[(((tmp0 - tmp1)>>5) & 0x3ff)]; + /* Row 1 */ + pOutput[2] = ucRangeTable[(((tmp2 + tmp3)>>5) & 0x3ff)]; + pOutput[3] = ucRangeTable[(((tmp2 - tmp3)>>5) & 0x3ff)]; + return; + } +#ifdef HAS_SSE // SSE2 version + // Columns first + // even part + if ((u16MCUFlags & 0x2000) == 0) // rows 4-7 are not populated, simpler calculations + { + // even part + mmxTemp10 = _mm_loadu_si128((__m128i *)&pMCUSrc[0]); // row 0 + mmxTemp1 = _mm_loadu_si128((__m128i *)&pMCUSrc[16]); // row 2 + mmxTemp = _mm_loadu_si128((__m128i *)&pQuant[0]); + mmxTemp2 = _mm_loadu_si128((__m128i *)&pQuant[16]); + mmxTemp10 = _mm_mullo_epi16(mmxTemp10, mmxTemp); // dequant row 0 + mmxTemp1 = _mm_mullo_epi16(mmxTemp1, mmxTemp2); // dequant row 2 + mmxTemp = _mm_loadu_si128((__m128i *)&s0414[0]); // 0.414 + mmxTemp12 = _mm_mulhi_epi16(_mm_slli_epi16(mmxTemp1, 2), mmxTemp); // tmp12 = ((tmp1*106)>>8) + mmxTemp0 = _mm_add_epi16(mmxTemp10, mmxTemp1); // 0+2 + mmxTemp3 = _mm_sub_epi16(mmxTemp10, mmxTemp1); // 0-2 + mmxTemp1 = _mm_add_epi16(mmxTemp10, mmxTemp12); // 10+12 + mmxTemp2 = _mm_sub_epi16(mmxTemp10, mmxTemp12); // 10-12 + // odd part + mmxTemp4 = _mm_loadu_si128((__m128i *)&pMCUSrc[8]); // row 1 + mmxTemp5 = _mm_loadu_si128((__m128i *)&pMCUSrc[24]); // row 3 + mmxTemp = _mm_loadu_si128((__m128i *)&pQuant[8]); + mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[24]); + mmxTemp4 = _mm_mullo_epi16(mmxTemp4, mmxTemp); // dequant row 1 + mmxTemp5 = _mm_mullo_epi16(mmxTemp5, mmxTemp11); // dequant row 3 + mmxTemp7 = _mm_add_epi16(mmxTemp4, mmxTemp5); // tmp7 = tmp4 + tmp5 + mmxTemp = _mm_loadu_si128((__m128i *)&s1414[0]); // load 1.414213562 constant + mmxTemp11 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxTemp4, mmxTemp5), 2), mmxTemp); // tmp11 = (((tmp4-tmp5)*362)>>8) + mmxTemp = _mm_loadu_si128((__m128i *)&s1847[0]); // 1.8477 + mmxZ5 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxTemp4, mmxTemp5), 2), mmxTemp); // z5 = (((tmp4-tmp5)*473)>>8) + mmxTemp = _mm_loadu_si128((__m128i*)&sp2613[0]); // positive 2.6131259 + mmxTemp12 = _mm_mulhi_epi16(_mm_slli_epi16(mmxTemp5, 2), mmxTemp); // tmp12 = ((-tmp5 * -669)>>8) + z5 + // can't make that constant without overflowing, so double it after + mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxTemp12); + mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxZ5); + mmxTemp6 = _mm_sub_epi16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7 + mmxTemp5 = _mm_sub_epi16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6 + mmxTemp = _mm_loadu_si128((__m128i *)&s1082[0]); // 1.08239 + mmxTemp10 = _mm_sub_epi16(_mm_mulhi_epi16(_mm_slli_epi16(mmxTemp4, 2), mmxTemp), mmxZ5); // tmp10 = ((tmp4 * 277)>>8) - z5 + mmxTemp4 = _mm_add_epi16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5 + } + else // need to do full calculation + { + // even part + mmxTemp0 = _mm_loadu_si128((__m128i *)&pMCUSrc[0]); // get row 0 + mmxTemp2 = _mm_loadu_si128((__m128i *)&pMCUSrc[32]); // get row 4 + mmxTemp10 = _mm_loadu_si128((__m128i *)&pQuant[0]); + mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[32]); + mmxTemp0 = _mm_mullo_epi16(mmxTemp0, mmxTemp10); // dequant row 0 + mmxTemp2 = _mm_mullo_epi16(mmxTemp2, mmxTemp11); // dequant row 4 + mmxTemp10 = _mm_add_epi16(mmxTemp0, mmxTemp2); // 0+4 + mmxTemp11 = _mm_sub_epi16(mmxTemp0, mmxTemp2); // 0-4 + mmxTemp1 = _mm_loadu_si128((__m128i *)&pMCUSrc[16]); // get row 2 + mmxTemp3 = _mm_loadu_si128((__m128i *)&pMCUSrc[48]); // get row 6 + mmxTemp = _mm_loadu_si128((__m128i *)&pQuant[16]); + mmxTemp12 = _mm_loadu_si128((__m128i *)&pQuant[48]); + mmxTemp1 = _mm_mullo_epi16(mmxTemp1, mmxTemp); // dequant row 2 + mmxTemp3 = _mm_mullo_epi16(mmxTemp3, mmxTemp12); // dequant row 6 + mmxTemp13 = _mm_add_epi16(mmxTemp1, mmxTemp3); // 1+3 + mmxTemp = _mm_loadu_si128((__m128i *)&s1414[0]); // load 1.414213562 constant + mmxTemp12 = _mm_sub_epi16(_mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxTemp1,mmxTemp3),2), mmxTemp), mmxTemp13); // tmp12 = (((tmp1 - tmp3) * 1.414) - tmp13; + mmxTemp0 = _mm_add_epi16(mmxTemp10, mmxTemp13); // tmp0 = tmp10 + tmp13 + mmxTemp3 = _mm_sub_epi16(mmxTemp10, mmxTemp13); // tmp3 = tmp10 - tmp13 + mmxTemp1 = _mm_add_epi16(mmxTemp11, mmxTemp12); // tmp1 = tmp11 + tmp12 + mmxTemp2 = _mm_sub_epi16(mmxTemp11, mmxTemp12); // tmp2 = tmp11 - tmp12 + // odd part + mmxTemp5 = _mm_loadu_si128((__m128i *)&pMCUSrc[24]); // get row 3 + mmxTemp6 = _mm_loadu_si128((__m128i *)&pMCUSrc[40]); // get row 5 + mmxTemp10 = _mm_loadu_si128((__m128i *)&pQuant[24]); + mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[40]); + mmxTemp5 = _mm_mullo_epi16(mmxTemp5, mmxTemp10); // dequant row 3 + mmxTemp6 = _mm_mullo_epi16(mmxTemp6, mmxTemp11); // dequant row 5 + mmxZ13 = _mm_add_epi16(mmxTemp6, mmxTemp5); // z13 = tmp6 + tmp5; + mmxZ10 = _mm_sub_epi16(mmxTemp6, mmxTemp5); // z10 = tmp6 - tmp5; + mmxTemp4 = _mm_loadu_si128((__m128i *)&pMCUSrc[8]); // get row 1 + mmxTemp7 = _mm_loadu_si128((__m128i *)&pMCUSrc[56]); // get row 7 + mmxTemp10 = _mm_loadu_si128((__m128i *)&pQuant[8]); + mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[56]); + mmxTemp4 = _mm_mullo_epi16(mmxTemp4, mmxTemp10); // dequant row 1 + mmxTemp7 = _mm_mullo_epi16(mmxTemp7, mmxTemp11); // dequant row 7 + mmxZ11 = _mm_add_epi16(mmxTemp4, mmxTemp7); // z11 = tmp4 + tmp7; + mmxZ12 = _mm_sub_epi16(mmxTemp4, mmxTemp7); // z12 = tmp4 - tmp7; + mmxTemp7 = _mm_add_epi16(mmxZ11, mmxZ13); // tmp7 = z11 + z13; + mmxTemp11 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxZ11, mmxZ13),2), mmxTemp); // tmp11 = ((z11 - z13) * 1.1414); + mmxTemp = _mm_loadu_si128((__m128i *)&s1847[0]); // 1.8477 + mmxZ5 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_add_epi16(mmxZ10, mmxZ12),2), mmxTemp); // z5 = ((z10+z12)*1.8477); + mmxTemp = _mm_loadu_si128((__m128i *)&s2613[0]); // -2.6131259 + mmxTemp12 = _mm_mulhi_epi16(_mm_slli_epi16(mmxZ10,2), mmxTemp); // tmp12 = (z10 * -2.6131259) + z5; + // can't make that constant without overflowing, so double it after + mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxTemp12); + mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxZ5); + mmxTemp = _mm_loadu_si128((__m128i *)&s1082[0]); // 1.08239 + mmxTemp6 = _mm_sub_epi16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7 + mmxTemp5 = _mm_sub_epi16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6 + mmxTemp10 = _mm_sub_epi16(_mm_mulhi_epi16(_mm_slli_epi16(mmxZ12,2), mmxTemp), mmxZ5); // tmp10 = (z12 * 1.08239) - z5; + mmxTemp4 = _mm_add_epi16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5; + } + mmxRow0 = _mm_add_epi16(mmxTemp0, mmxTemp7); // row 0 + _mm_storeu_si128((__m128i *)&pMCUSrc[0], mmxRow0); + mmxRow1 = _mm_add_epi16(mmxTemp1, mmxTemp6); // row 1 + _mm_storeu_si128((__m128i *)&pMCUSrc[8], mmxRow1); + mmxRow2 = _mm_add_epi16(mmxTemp2, mmxTemp5); // row 2 + _mm_storeu_si128((__m128i *)&pMCUSrc[16], mmxRow2); + mmxRow3 = _mm_sub_epi16(mmxTemp3, mmxTemp4); // row 3 + _mm_storeu_si128((__m128i *)&pMCUSrc[24], mmxRow3); + mmxRow4 = _mm_add_epi16(mmxTemp3, mmxTemp4); // row 4 + _mm_storeu_si128((__m128i *)&pMCUSrc[32], mmxRow4); + mmxRow5 = _mm_sub_epi16(mmxTemp2, mmxTemp5); // row 5 + _mm_storeu_si128((__m128i *)&pMCUSrc[40], mmxRow5); + mmxRow6 = _mm_sub_epi16(mmxTemp1, mmxTemp6); // row 6 + _mm_storeu_si128((__m128i *)&pMCUSrc[48], mmxRow6); + mmxRow7 = _mm_sub_epi16(mmxTemp0, mmxTemp7); // row 7 + _mm_storeu_si128((__m128i *)&pMCUSrc[56], mmxRow7); +#endif // HAS_SSE +#ifdef HAS_NEON + if ((u16MCUFlags & 0x2000) == 0) // rows 4-7 are not populated, simpler calculations + { + // even part + mmxTemp10 = vld1q_s16(&pMCUSrc[0]); // row 0 + mmxTemp1 = vld1q_s16(&pMCUSrc[16]); // row 2 + mmxTemp = vld1q_s16(&pQuant[0]); + mmxTemp2 = vld1q_s16(&pQuant[16]); + mmxTemp10 = vmulq_s16(mmxTemp10, mmxTemp); // dequant row 0 + mmxTemp1 = vmulq_s16(mmxTemp1, mmxTemp2); // dequant row 2 + mmxTemp = vld1q_s16(&s0414[0]); // 0.414 + mmxTemp12 = vqdmulhq_s16(vshlq_n_s16(mmxTemp1, 2), mmxTemp); // tmp12 = ((tmp1*106)>>8) + mmxTemp0 = vaddq_s16(mmxTemp10, mmxTemp1); // 0+2 + mmxTemp3 = vsubq_s16(mmxTemp10, mmxTemp1); // 0-2 + mmxTemp1 = vaddq_s16(mmxTemp10, mmxTemp12); // 10+12 + mmxTemp2 = vsubq_s16(mmxTemp10, mmxTemp12); // 10-12 + // odd part + mmxTemp4 = vld1q_s16(&pMCUSrc[8]); // row 1 + mmxTemp5 = vld1q_s16(&pMCUSrc[24]); // row 3 + mmxTemp = vld1q_s16(&pQuant[8]); + mmxTemp11 = vld1q_s16(&pQuant[24]); + mmxTemp4 = vmulq_s16(mmxTemp4, mmxTemp); // dequant row 1 + mmxTemp5 = vmulq_s16(mmxTemp5, mmxTemp11); // dequant row 3 + mmxTemp7 = vaddq_s16(mmxTemp4, mmxTemp5); // tmp7 = tmp4 + tmp5 + mmxTemp = vld1q_s16(&s1414[0]); // load 1.414213562 constant + mmxTemp11 = vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxTemp4, mmxTemp5), 2), mmxTemp); // tmp11 = (((tmp4-tmp5)*362)>>8) + mmxTemp = vld1q_s16(&s1847[0]); // 1.8477 + mmxZ5 = vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxTemp4, mmxTemp5), 2), mmxTemp); // z5 = (((tmp4-tmp5)*473)>>8) + mmxTemp = vld1q_s16(&sp2613[0]); // positive 2.6131259 + mmxTemp12 = vqdmulhq_s16(vshlq_n_s16(mmxTemp5, 2), mmxTemp); // tmp12 = ((-tmp5 * -669)>>8) + z5 + // can't make that constant without overflowing, so double it after + mmxTemp12 = vaddq_s16(mmxTemp12, mmxTemp12); + mmxTemp12 = vaddq_s16(mmxTemp12, mmxZ5); + mmxTemp6 = vsubq_s16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7 + mmxTemp5 = vsubq_s16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6 + mmxTemp = vld1q_s16(&s1082[0]); // 1.08239 + mmxTemp10 = vsubq_s16(vqdmulhq_s16(vshlq_n_s16(mmxTemp4, 2), mmxTemp), mmxZ5); // tmp10 = ((tmp4 * 277)>>8) - z5 + mmxTemp4 = vaddq_s16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5 + } + else // need to do full calculation + { + // even part + mmxTemp0 = vld1q_s16(&pMCUSrc[0]); // get row 0 + mmxTemp2 = vld1q_s16(&pMCUSrc[32]); // get row 4 + mmxTemp10 = vld1q_s16(&pQuant[0]); + mmxTemp11 = vld1q_s16(&pQuant[32]); + mmxTemp0 = vmulq_s16(mmxTemp0, mmxTemp10); // dequant row 0 + mmxTemp2 = vmulq_s16(mmxTemp2, mmxTemp11); // dequant row 4 + mmxTemp10 = vaddq_s16(mmxTemp0, mmxTemp2); // 0+4 + mmxTemp11 = vsubq_s16(mmxTemp0, mmxTemp2); // 0-4 + mmxTemp1 = vld1q_s16(&pMCUSrc[16]); // get row 2 + mmxTemp3 = vld1q_s16(&pMCUSrc[48]); // get row 6 + mmxTemp = vld1q_s16(&pQuant[16]); + mmxTemp12 = vld1q_s16(&pQuant[48]); + mmxTemp1 = vmulq_s16(mmxTemp1, mmxTemp); // dequant row 2 + mmxTemp3 = vmulq_s16(mmxTemp3, mmxTemp12); // dequant row 6 + mmxTemp13 = vaddq_s16(mmxTemp1, mmxTemp3); // 1+3 + mmxTemp = vld1q_s16(&s1414[0]); // load 1.414213562 constant + mmxTemp12 = vsubq_s16(vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxTemp1,mmxTemp3),2), mmxTemp), mmxTemp13); // tmp12 = (((tmp1 - tmp3) * 1.414) - tmp13; + mmxTemp0 = vaddq_s16(mmxTemp10, mmxTemp13); // tmp0 = tmp10 + tmp13 + mmxTemp3 = vsubq_s16(mmxTemp10, mmxTemp13); // tmp3 = tmp10 - tmp13 + mmxTemp1 = vaddq_s16(mmxTemp11, mmxTemp12); // tmp1 = tmp11 + tmp12 + mmxTemp2 = vsubq_s16(mmxTemp11, mmxTemp12); // tmp2 = tmp11 - tmp12 + // odd part + mmxTemp5 = vld1q_s16(&pMCUSrc[24]); // get row 3 + mmxTemp6 = vld1q_s16(&pMCUSrc[40]); // get row 5 + mmxTemp10 = vld1q_s16(&pQuant[24]); + mmxTemp11 = vld1q_s16(&pQuant[40]); + mmxTemp5 = vmulq_s16(mmxTemp5, mmxTemp10); // dequant row 3 + mmxTemp6 = vmulq_s16(mmxTemp6, mmxTemp11); // dequant row 5 + mmxZ13 = vaddq_s16(mmxTemp6, mmxTemp5); // z13 = tmp6 + tmp5; + mmxZ10 = vsubq_s16(mmxTemp6, mmxTemp5); // z10 = tmp6 - tmp5; + mmxTemp4 = vld1q_s16(&pMCUSrc[8]); // get row 1 + mmxTemp7 = vld1q_s16(&pMCUSrc[56]); // get row 7 + mmxTemp10 = vld1q_s16(&pQuant[8]); + mmxTemp11 = vld1q_s16(&pQuant[56]); + mmxTemp4 = vmulq_s16(mmxTemp4, mmxTemp10); // dequant row 1 + mmxTemp7 = vmulq_s16(mmxTemp7, mmxTemp11); // dequant row 7 + mmxZ11 = vaddq_s16(mmxTemp4, mmxTemp7); // z11 = tmp4 + tmp7; + mmxZ12 = vsubq_s16(mmxTemp4, mmxTemp7); // z12 = tmp4 - tmp7; + mmxTemp7 = vaddq_s16(mmxZ11, mmxZ13); // tmp7 = z11 + z13; + mmxTemp11 = vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxZ11, mmxZ13),2), mmxTemp); // tmp11 = ((z11 - z13) * 1.1414); + mmxTemp = vld1q_s16(&s1847[0]); // 1.8477 + mmxZ5 = vqdmulhq_s16(vshlq_n_s16(vaddq_s16(mmxZ10, mmxZ12),2), mmxTemp); // z5 = ((z10+z12)*1.8477); + mmxTemp = vld1q_s16(&s2613[0]); // -2.6131259 + mmxTemp12 = vqdmulhq_s16(vshlq_n_s16(mmxZ10,2), mmxTemp); // tmp12 = (z10 * -2.6131259) + z5; + // can't make that constant without overflowing, so double it after + mmxTemp12 = vaddq_s16(mmxTemp12, mmxTemp12); + mmxTemp12 = vaddq_s16(mmxTemp12, mmxZ5); + mmxTemp = vld1q_s16(&s1082[0]); // 1.08239 + mmxTemp6 = vsubq_s16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7 + mmxTemp5 = vsubq_s16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6 + mmxTemp10 = vsubq_s16(vqdmulhq_s16(vshlq_n_s16(mmxZ12,2), mmxTemp), mmxZ5); // tmp10 = (z12 * 1.08239) - z5; + mmxTemp4 = vaddq_s16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5; + } + mmxRow0 = vaddq_s16(mmxTemp0, mmxTemp7); // row 0 + vst1q_s16(&pMCUSrc[0], mmxRow0); + mmxRow1 = vaddq_s16(mmxTemp1, mmxTemp6); // row 1 + vst1q_s16(&pMCUSrc[8], mmxRow1); + mmxRow2 = vaddq_s16(mmxTemp2, mmxTemp5); // row 2 + vst1q_s16(&pMCUSrc[16], mmxRow2); + mmxRow3 = vsubq_s16(mmxTemp3, mmxTemp4); // row 3 + vst1q_s16(&pMCUSrc[24], mmxRow3); + mmxRow4 = vaddq_s16(mmxTemp3, mmxTemp4); // row 4 + vst1q_s16(&pMCUSrc[32], mmxRow4); + mmxRow5 = vsubq_s16(mmxTemp2, mmxTemp5); // row 5 + vst1q_s16(&pMCUSrc[40], mmxRow5); + mmxRow6 = vsubq_s16(mmxTemp1, mmxTemp6); // row 6 + vst1q_s16(&pMCUSrc[48], mmxRow6); + mmxRow7 = vsubq_s16(mmxTemp0, mmxTemp7); // row 7 + vst1q_s16(&pMCUSrc[56], mmxRow7); +#endif // HAS_NEON +#if !defined (HAS_SSE) && !defined(HAS_NEON) + // do columns first + u16MCUFlags |= 1; // column 0 must always be calculated + for (iCol = 0; iCol < 8 && u16MCUFlags; iCol++) + { + if (u16MCUFlags & (1<>8); // used to be 362 - 1 (256) + tmp0 = tmp10 + tmp1; + tmp3 = tmp10 - tmp1; + tmp1 = tmp10 + tmp12; + tmp2 = tmp10 - tmp12; + // odd part + tmp4 = pMCUSrc[iCol+8] * pQuant[iCol+8]; // get 1st row + tmp5 = pMCUSrc[iCol+24]; + if (tmp5) // this value is usually 0 + { + tmp5 *= pQuant[iCol+24]; // get 3rd row + tmp7 = tmp4 + tmp5; + tmp11 = (((tmp4 - tmp5) * 362) >> 8); // 362>>8 = 1.414213562 + z5 = (((tmp4-tmp5) * 473) >> 8); // 473>>8 = 1.8477 + tmp12 = ((-tmp5 * -669)>>8) + z5; // -669>>8 = -2.6131259 + tmp6 = tmp12 - tmp7; + tmp5 = tmp11 - tmp6; + tmp10 = ((tmp4 * 277)>>8) - z5; // 277>>8 = 1.08239 + tmp4 = tmp10 + tmp5; + } + else // simpler case when we only have 1 odd row to calculate + { + tmp7 = tmp4; + tmp5 = (145*tmp4) >> 8; + tmp6 = (217*tmp4) >> 8; + tmp4 = (-51*tmp4) >> 8; + } + pMCUSrc[iCol] = (short)(tmp0 + tmp7); // row0 + pMCUSrc[iCol+8] = (short)(tmp1 + tmp6); // row 1 + pMCUSrc[iCol+16] = (short)(tmp2 + tmp5); // row 2 + pMCUSrc[iCol+24] = (short)(tmp3 - tmp4); // row 3 + pMCUSrc[iCol+32] = (short)(tmp3 + tmp4); // row 4 + pMCUSrc[iCol+40] = (short)(tmp2 - tmp5); // row 5 + pMCUSrc[iCol+48] = (short)(tmp1 - tmp6); // row 6 + pMCUSrc[iCol+56] = (short)(tmp0 - tmp7); // row 7 + } + else // need to do full column calculation + { + // even part + tmp0 = pMCUSrc[iCol] * pQuant[iCol]; + tmp2 = pMCUSrc[iCol+32]; // get 4th row + if (tmp2) // 4th row is most likely 0 + { + tmp2 = tmp2 * pQuant[iCol+32]; + tmp10 = tmp0 + tmp2; + tmp11 = tmp0 - tmp2; + } + else + { + tmp10 = tmp11 = tmp0; + } + tmp1 = pMCUSrc[iCol+16] * pQuant[iCol+16]; // get 2nd row + tmp3 = pMCUSrc[iCol+48]; // get 6th row + if (tmp3) // 6th row is most likely 0 + { + tmp3 = tmp3 * pQuant[iCol+48]; + tmp13 = tmp1 + tmp3; + tmp12 = (((tmp1 - tmp3) * 362) >> 8) - tmp13; // 362>>8 = 1.414213562 + } + else + { + tmp13 = tmp1; + tmp12 = ((tmp1*362)>>8) - tmp1; + } + tmp0 = tmp10 + tmp13; + tmp3 = tmp10 - tmp13; + tmp1 = tmp11 + tmp12; + tmp2 = tmp11 - tmp12; + // odd part + tmp5 = pMCUSrc[iCol+24] * pQuant[iCol+24]; // get 3rd row + tmp6 = pMCUSrc[iCol+40]; // get 5th row + if (tmp6) // very likely that row 5 = 0 + { + tmp6 = tmp6 * pQuant[iCol+40]; + z13 = tmp6 + tmp5; + z10 = tmp6 - tmp5; + } + else + { + z13 = tmp5; + z10 = -tmp5; + } + tmp4 = pMCUSrc[iCol+8] * pQuant[iCol+8]; // get 1st row + tmp7 = pMCUSrc[iCol+56]; // get 7th row + if (tmp7) // very likely that row 7 = 0 + { + tmp7 = tmp7 * pQuant[iCol+56]; + z11 = tmp4 + tmp7; + z12 = tmp4 - tmp7; + } + else + { + z11 = z12 = tmp4; + } + tmp7 = z11 + z13; + tmp11 = (((z11 - z13) * 362) >> 8); // 362>>8 = 1.414213562 + z5 = (((z10 + z12) * 473) >> 8); // 473>>8 = 1.8477 + tmp12 = ((z10 * -669)>>8) + z5; // -669>>8 = -2.6131259 + tmp6 = tmp12 - tmp7; + tmp5 = tmp11 - tmp6; + tmp10 = ((z12 * 277)>>8) - z5; // 277>>8 = 1.08239 + tmp4 = tmp10 + tmp5; + pMCUSrc[iCol] = (short)(tmp0 + tmp7); // row0 + pMCUSrc[iCol+8] = (short)(tmp1 + tmp6); // row 1 + pMCUSrc[iCol+16] = (short)(tmp2 + tmp5); // row 2 + pMCUSrc[iCol+24] = (short)(tmp3 - tmp4); // row 3 + pMCUSrc[iCol+32] = (short)(tmp3 + tmp4); // row 4 + pMCUSrc[iCol+40] = (short)(tmp2 - tmp5); // row 5 + pMCUSrc[iCol+48] = (short)(tmp1 - tmp6); // row 6 + pMCUSrc[iCol+56] = (short)(tmp0 - tmp7); // row 7 + } // full calculation needed + } // if column has data in it + } // for each column +#endif // NO SIMD + // now do rows + u16MCUFlags = pJPEG->u16MCUFlags; + pOutput = (unsigned char *)pMCUSrc; // store output pixels back into MCU + for (iRow=0; iRow<64; iRow+=8) // all rows must be calculated + { + // even part + if ((u16MCUFlags & 0xf0) == 0) // quick and dirty calculation (right 4 columns are all 0's) + { + if ((u16MCUFlags & 0xfc) == 0) // very likely case (1 or 2 columns occupied) + { + // even part + tmp0 = tmp1 = tmp2 = tmp3 = pMCUSrc[iRow+0]; + // odd part + tmp7 = pMCUSrc[iRow+1]; + tmp6 = (tmp7 * 217)>>8; // * 0.8477 + tmp5 = (tmp7 * 145)>>8; // * 0.5663 + tmp4 = -((tmp7 * 51)>>8); // * -0.199 + } + else + { + tmp10 = pMCUSrc[iRow+0]; + tmp13 = pMCUSrc[iRow+2]; + tmp12 = ((tmp13 * 106)>>8); // 2-6 * 1.414 + tmp0 = tmp10 + tmp13; + tmp3 = tmp10 - tmp13; + tmp1 = tmp10 + tmp12; + tmp2 = tmp10 - tmp12; + // odd part + z13 = pMCUSrc[iRow+3]; + z11 = pMCUSrc[iRow+1]; + tmp7 = z11 + z13; + tmp11 = ((z11 - z13)*362)>>8; // * 1.414 + z5 = ((z11 - z13)*473)>>8; // * 1.8477 + tmp10 = ((z11*277)>>8) - z5; // * 1.08239 + tmp12 = ((z13*669)>>8) + z5; // * 2.61312 + tmp6 = tmp12 - tmp7; + tmp5 = tmp11 - tmp6; + tmp4 = tmp10 + tmp5; + } + } + else // need to do the full calculation + { + tmp10 = pMCUSrc[iRow+0] + pMCUSrc[iRow+4]; + tmp11 = pMCUSrc[iRow+0] - pMCUSrc[iRow+4]; + tmp13 = pMCUSrc[iRow+2] + pMCUSrc[iRow+6]; + tmp12 = (((pMCUSrc[iRow+2] - pMCUSrc[iRow+6]) * 362)>>8) - tmp13; // 2-6 * 1.414 + tmp0 = tmp10 + tmp13; + tmp3 = tmp10 - tmp13; + tmp1 = tmp11 + tmp12; + tmp2 = tmp11 - tmp12; + // odd part + z13 = pMCUSrc[iRow+5] + pMCUSrc[iRow+3]; + z10 = pMCUSrc[iRow+5] - pMCUSrc[iRow+3]; + z11 = pMCUSrc[iRow+1] + pMCUSrc[iRow+7]; + z12 = pMCUSrc[iRow+1] - pMCUSrc[iRow+7]; + tmp7 = z11 + z13; + tmp11 = ((z11 - z13)*362)>>8; // * 1.414 + z5 = ((z10 + z12)*473)>>8; // * 1.8477 + tmp10 = ((z12*277)>>8) - z5; // * 1.08239 + tmp12 = ((z10*-669)>>8) + z5; // * 2.61312 + tmp6 = tmp12 - tmp7; + tmp5 = tmp11 - tmp6; + tmp4 = tmp10 + tmp5; + } + // final output stage - scale down and range limit +#ifdef HAS_SIMD + { + uint32_t ul, ulOut; + const uint32_t ulAdj = 0x800080; + ulOut = __SSAT16((((tmp0+tmp7)>>5) & 0xffff) | (((tmp2+tmp5)>>5)<<16), 8); + ulOut = __SADD16(ulOut, ulAdj); // adjust + ul = __SSAT16((((tmp1+tmp6)>>5) & 0xffff) | (((tmp3-tmp4)>>5)<<16), 8); + ul = __SADD16(ul, ulAdj); // adjust + ulOut |= (ul << 8); // combine 4 outputs + *(uint32_t *)pOutput = ulOut; // store first 4 + ulOut = __SSAT16((((tmp3+tmp4)>>5) & 0xffff) | (((tmp1-tmp6)>>5)<<16), 8); + ulOut = __SADD16(ulOut, ulAdj); // adjust + ul = __SSAT16((((tmp2-tmp5)>>5) & 0xffff) | (((tmp0-tmp7)>>5)<<16), 8); + ul = __SADD16(ul, ulAdj); // adjust + ulOut |= (ul << 8); // combine 4 outputs + *(uint32_t *)&pOutput[4] = ulOut; // store second 4 + } +#else + // I've tried various things to speed this up, but it always seems to take the same amount of time +#ifdef HAS_NEON + { + int16x4_t L_in_16x4, R_in_16x4, L_out, R_out; + int8x8_t LR_out_8x8; + int16x8_t LR_out; + L_in_16x4 = vdup_n_s16(tmp0); // suppresses warning of setting lane 0 of uninitialized var + L_in_16x4 = vset_lane_s16(tmp1, L_in_16x4, 1); + L_in_16x4 = vset_lane_s16(tmp2, L_in_16x4, 2); + L_in_16x4 = vset_lane_s16(tmp3, L_in_16x4, 3); + R_in_16x4 = vdup_n_s16(tmp7); + R_in_16x4 = vset_lane_s16(tmp6, R_in_16x4, 1); + R_in_16x4 = vset_lane_s16(tmp5, R_in_16x4, 2); + R_in_16x4 = vset_lane_s16(-tmp4, R_in_16x4, 3); + L_out = vadd_s16(L_in_16x4, R_in_16x4); // tmp0 + tmp7, tmp1 + tmp6, ... + R_out = vsub_s16(L_in_16x4, R_in_16x4); // tmp0 - tmp7, tmp1 - tmp6, ... + R_out = vrev64_s16(R_out); // flip order of 4-7 + LR_out = vcombine_s16(L_out, R_out); + LR_out = vaddq_s16(LR_out, vdupq_n_s16(0x80 << 5)); // adjust output +0x80 + LR_out_8x8 = vqshrun_n_s16(LR_out, 5); // shift, narrow and clip to 0-255 + vst1_u8(pOutput, LR_out_8x8); + } +#else + pOutput[0] = ucRangeTable[(((tmp0 + tmp7)>>5) & 0x3ff)]; + pOutput[1] = ucRangeTable[(((tmp1 + tmp6)>>5) & 0x3ff)]; + pOutput[2] = ucRangeTable[(((tmp2 + tmp5)>>5) & 0x3ff)]; + pOutput[3] = ucRangeTable[(((tmp3 - tmp4)>>5) & 0x3ff)]; + pOutput[4] = ucRangeTable[(((tmp3 + tmp4)>>5) & 0x3ff)]; + pOutput[5] = ucRangeTable[(((tmp2 - tmp5)>>5) & 0x3ff)]; + pOutput[6] = ucRangeTable[(((tmp1 - tmp6)>>5) & 0x3ff)]; + pOutput[7] = ucRangeTable[(((tmp0 - tmp7)>>5) & 0x3ff)]; +#endif // !HAS_NEON +#endif + pOutput += 8; + } // for each row +} /* JPEGIDCT() */ +static void JPEGPutMCU8BitGray(JPEGIMAGE *pJPEG, int x, int iPitch) +{ + int i, j, xcount, ycount; + uint8_t *pDest, *pSrc = (uint8_t *)&pJPEG->sMCUs[0]; + + if (pJPEG->pDitherBuffer) + pDest = &pJPEG->pDitherBuffer[x]; + else + pDest = (uint8_t *)&pJPEG->usPixels[x/2]; + + if (pJPEG->ucSubSample <= 0x11) // single Y + { + if (pJPEG->iOptions & JPEG_SCALE_HALF) // special handling of 1/2 size (pixel averaging) + { + int pix; + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + pix = (pSrc[0] + pSrc[1] + pSrc[8] + pSrc[9] + 2) >> 2; // average 2x2 block + pDest[j] = (uint8_t)pix; + pSrc += 2; + } + pSrc += 8; // skip extra line + pDest += iPitch; + } + return; + } + xcount = ycount = 8; // debug + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + xcount = ycount = 2; + else if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + xcount = ycount = 1; + for (i=0; iucSubSample == 0x21) // stacked horizontally + { + if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + { + // only 2 pixels emitted + pDest[0] = pSrc[0]; + pDest[1] = pSrc[128]; + return; + } /* 1/8 */ + if (pJPEG->iOptions & JPEG_SCALE_HALF) + { + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + int pix; + pix = (pSrc[j*2] + pSrc[j*2+1] + pSrc[j*2 + 8] + pSrc[j*2 + 9] + 2) >> 2; + pDest[j] = (uint8_t)pix; + pix = (pSrc[j*2 + 128] + pSrc[j*2+129] + pSrc[j*2 + 136] + pSrc[j*2 + 137] + 2) >> 2; + pDest[j+4] = (uint8_t)pix; + } + pSrc += 16; + pDest += iPitch; + } + return; + } + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + { + // each MCU contributes a 2x2 block + pDest[0] = pSrc[0]; // Y0 + pDest[1] = pSrc[1]; + pDest[iPitch] = pSrc[2]; + pDest[iPitch+1] = pSrc[3]; + + pDest[2] = pSrc[128]; // Y` + pDest[3] = pSrc[129]; + pDest[iPitch+2] = pSrc[130]; + pDest[iPitch+3] = pSrc[131]; + return; + } + for (i=0; i<8; i++) + { + for (j=0; j<8; j++) + { + pDest[j] = pSrc[j]; + pDest[j+8] = pSrc[128 + j]; + } + pSrc += 8; + pDest += iPitch; + } + } // 0x21 + if (pJPEG->ucSubSample == 0x12) // stacked vertically + { + if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + { + // only 2 pixels emitted + pDest[0] = pSrc[0]; + pDest[iPitch] = pSrc[128]; + return; + } /* 1/8 */ + if (pJPEG->iOptions & JPEG_SCALE_HALF) + { + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + int pix; + pix = (pSrc[j*2] + pSrc[j*2+1] + pSrc[j*2 + 8] + pSrc[j*2 + 9] + 2) >> 2; + pDest[j] = (uint8_t)pix; + pix = (pSrc[j*2 + 128] + pSrc[j*2+129] + pSrc[j*2 + 136] + pSrc[j*2 + 137] + 2) >> 2; + pDest[4*iPitch+j] = (uint8_t)pix; + } + pSrc += 16; + pDest += iPitch; + } + return; + } + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + { + // each MCU contributes a 2x2 block + pDest[0] = pSrc[0]; // Y0 + pDest[1] = pSrc[1]; + pDest[iPitch] = pSrc[2]; + pDest[iPitch+1] = pSrc[3]; + + pDest[iPitch*2] = pSrc[128]; // Y` + pDest[iPitch*2+1] = pSrc[129]; + pDest[iPitch*3] = pSrc[130]; + pDest[iPitch*3+1] = pSrc[131]; + return; + } + for (i=0; i<8; i++) + { + for (j=0; j<8; j++) + { + pDest[j] = pSrc[j]; + pDest[8*iPitch + j] = pSrc[128 + j]; + } + pSrc += 8; + pDest += iPitch; + } + } // 0x12 + if (pJPEG->ucSubSample == 0x22) + { + if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + { + // each MCU contributes 1 pixel + pDest[0] = pSrc[0]; // Y0 + pDest[1] = pSrc[128]; // Y1 + pDest[iPitch] = pSrc[256]; // Y2 + pDest[iPitch + 1] = pSrc[384]; // Y3 + return; + } + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + { + // each MCU contributes 2x2 pixels + pDest[0] = pSrc[0]; // Y0 + pDest[1] = pSrc[1]; + pDest[iPitch] = pSrc[2]; + pDest[iPitch+1] = pSrc[3]; + + pDest[2] = pSrc[128]; // Y1 + pDest[3] = pSrc[129]; + pDest[iPitch+2] = pSrc[130]; + pDest[iPitch+3] = pSrc[131]; + + pDest[iPitch*2] = pSrc[256]; // Y2 + pDest[iPitch*2+1] = pSrc[257]; + pDest[iPitch*3] = pSrc[258]; + pDest[iPitch*3+1] = pSrc[259]; + + pDest[iPitch*2+2] = pSrc[384]; // Y3 + pDest[iPitch*2+3] = pSrc[385]; + pDest[iPitch*3+2] = pSrc[386]; + pDest[iPitch*3+3] = pSrc[387]; + return; + } + if (pJPEG->iOptions & JPEG_SCALE_HALF) + { + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + int pix; + pix = (pSrc[j*2] + pSrc[j*2+1] + pSrc[j*2 + 8] + pSrc[j*2 + 9] + 2) >> 2; + pDest[j] = (uint8_t)pix; // Y0 + pix = (pSrc[j*2+128] + pSrc[j*2+129] + pSrc[j*2 + 136] + pSrc[j*2 + 137] + 2) >> 2; + pDest[j+4] = (uint8_t)pix; // Y1 + pix = (pSrc[j*2+256] + pSrc[j*2+257] + pSrc[j*2 + 264] + pSrc[j*2 + 265] + 2) >> 2; + pDest[iPitch*4 + j] = (uint8_t)pix; // Y2 + pix = (pSrc[j*2+384] + pSrc[j*2+385] + pSrc[j*2 + 392] + pSrc[j*2 + 393] + 2) >> 2; + pDest[iPitch*4 + j + 4] = (uint8_t)pix; // Y3 + } + pSrc += 16; + pDest += iPitch; + } + return; + } +#ifdef ALLOWS_UNALIGNED + for (i=0; i<8; i++) + { + *(uint32_t *)pDest = *(uint32_t *)pSrc; // Y0 + *(uint32_t *)&pDest[4] = *(uint32_t *)&pSrc[4]; // Y0 + *(uint32_t *)&pDest[8] = *(uint32_t *)&pSrc[128]; // Y1 + *(uint32_t *)&pDest[12] = *(uint32_t *)&pSrc[132]; // Y1 + *(uint32_t *)&pDest[iPitch*8] = *(uint32_t *)&pSrc[256]; // Y2 + *(uint32_t *)&pDest[(iPitch*8)+4] = *(uint32_t *)&pSrc[260]; // Y2 + *(uint32_t *)&pDest[(iPitch*8) + 8] = *(uint32_t *)&pSrc[384]; // Y3 + *(uint32_t *)&pDest[(iPitch*8) + 12] = *(uint32_t *)&pSrc[388]; // Y3 + pSrc += 8; + pDest += iPitch; + } +#else + for (i=0; i<8; i++) + { + for (j=0; j<8; j++) + { + pDest[j] = pSrc[j]; // Y0 + pDest[j+8] = pSrc[j+128]; // Y1 + pDest[iPitch*8 + j] = pSrc[j+256]; // Y2 + pDest[iPitch*8 + j + 8] = pSrc[j + 384]; // Y3 + } + pSrc += 8; + pDest += iPitch; + } +#endif + } // 0x22 +} /* JPEGMPutMCU8BitGray() */ + +static void JPEGPutMCUGray(JPEGIMAGE *pJPEG, int x, int iPitch) +{ + uint16_t *usDest = (uint16_t *)&pJPEG->usPixels[x]; + int i, j, xcount, ycount; + uint8_t *pSrc = (uint8_t *)&pJPEG->sMCUs[0]; + + if (pJPEG->iOptions & JPEG_SCALE_HALF) // special handling of 1/2 size (pixel averaging) + { + int pix; + for (i=0; i<4; i++) + { + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + for (j=0; j<4; j++) + { + pix = (pSrc[0] + pSrc[1] + pSrc[8] + pSrc[9] + 2) >> 2; // average 2x2 block + usDest[j] = usGrayTo565[pix]; + pSrc += 2; + } + } + else + { + for (j=0; j<4; j++) + { + pix = (pSrc[0] + pSrc[1] + pSrc[8] + pSrc[9] + 2) >> 2; // average 2x2 block + usDest[j] = __builtin_bswap16(usGrayTo565[pix]); + pSrc += 2; + } + } + pSrc += 8; // skip extra line + usDest += iPitch; + } + return; + } + xcount = ycount = 8; // debug + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + xcount = ycount = 2; + else if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + xcount = ycount = 1; + for (i=0; iucPixelType == RGB565_LITTLE_ENDIAN) + { + for (j=0; j> 14; // G + ulPixel = __USAT16(ulPixel, 6) << 5; // range limit to 6 bits + ulTmp = __SMLAD(7258, iCb, iY) >> 15; // Blue + ulTmp = __USAT16(ulTmp, 5); // range limit to 5 bits + ulPixel |= ulTmp; // now we have G + B + ulTmp = __SMLAD(5742, iCr, iY) >> 15; // Red + ulTmp = __USAT16(ulTmp, 5); // range limit to 5 bits + ulPixel |= (ulTmp << 11); // now we have R + G + B + pDest[0] = (uint16_t)ulPixel; +#else + int iCBB, iCBG, iCRG, iCRR; + unsigned short usPixel; + + iCBB = 7258 * (iCb-0x80); + iCBG = -1409 * (iCb-0x80); + iCRG = -2925 * (iCr-0x80); + iCRR = 5742 * (iCr-0x80); + usPixel = usRangeTableB[((iCBB + iY) >> 12) & 0x3ff]; // blue pixel + usPixel |= usRangeTableG[((iCBG + iCRG + iY) >> 12) & 0x3ff]; // green pixel + usPixel |= usRangeTableR[((iCRR + iY) >> 12) & 0x3ff]; // red pixel + pDest[0] = usPixel; +#endif +} /* JPEGPixelLE() */ + +static void JPEGPixelBE(uint16_t *pDest, int iY, int iCb, int iCr) +{ + int iCBB, iCBG, iCRG, iCRR; + unsigned short usPixel; + + iCBB = 7258 * (iCb-0x80); + iCBG = -1409 * (iCb-0x80); + iCRG = -2925 * (iCr-0x80); + iCRR = 5742 * (iCr-0x80); + usPixel = usRangeTableB[((iCBB + iY) >> 12) & 0x3ff]; // blue pixel + usPixel |= usRangeTableG[((iCBG + iCRG + iY) >> 12) & 0x3ff]; // green pixel + usPixel |= usRangeTableR[((iCRR + iY) >> 12) & 0x3ff]; // red pixel + pDest[0] = __builtin_bswap16(usPixel); +} /* JPEGPixelBE() */ + +static void JPEGPixelRGB(uint32_t *pDest, int iY, int iCb, int iCr) +{ + int iCBB, iCBG, iCRG, iCRR; + uint32_t u32Pixel; + int32_t i32; + + iCBB = 7258 * (iCb-0x80); + iCBG = -1409 * (iCb-0x80); + iCRG = -2925 * (iCr-0x80); + iCRR = 5742 * (iCr-0x80); + u32Pixel = 0xff000000; // Alpha = 0xff + i32 = ((iCBB + iY) >> 12); + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel |= (uint32_t)i32; // blue + i32 = ((iCBG + iCRG + iY) >> 12); // green pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel |= (uint32_t)(i32 << 8); + i32 = ((iCRR + iY) >> 12); // red pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel |= (uint32_t)(i32 << 16); + pDest[0] = u32Pixel; +} /* JPEGPixelRGB() */ + +static void JPEGPixel2LE(uint16_t *pDest, int iY1, int iY2, int iCb, int iCr) +{ + uint32_t ulPixel1, ulPixel2; +// +// Cortex-M4/M7 has some SIMD instructions which can shave a few cycles +// off of this function (e.g. Teensy, Arduino Nano 33 BLE, Portenta, etc) +// +#ifdef HAS_SIMD + uint32_t ulCbCr; + uint32_t ulTmp2 ,ulTmp = 0xfa7f /*-1409*/ | 0xf4930000 /*(-2925 << 16)*/; // for green calc + iCb -= 0x80; iCr -= 0x80; + ulCbCr = (iCb | (iCr << 16)); + //ulCbCr = __SSUB16(ulCbCr, 0x00800080); // dual 16-bit subtraction + ulPixel1 = __SMLAD(ulCbCr, ulTmp, iY1) >> 14; // G for pixel 1 + ulPixel2 = __SMLAD(ulCbCr, ulTmp, iY2) >> 14; // G for pixel 2 + ulPixel1 |= (ulPixel2 << 16); + ulPixel1 = __USAT16(ulPixel1, 6) << 5; // range limit both to 6 bits + ulTmp = __SMLAD(7258, iCb, iY1) >> 15; // Blue 1 + ulTmp2 = __SMLAD(7258, iCb, iY2) >> 15; // Blue 2 + ulTmp = __USAT16(ulTmp | (ulTmp2 << 16), 5); // range limit both to 5 bits + ulPixel1 |= ulTmp; // now we have G + B + ulTmp = __SMLAD(5742, iCr, iY1) >> 15; // Red 1 + ulTmp2 = __SMLAD(5742, iCr, iY2) >> 15; // Red 2 + ulTmp = __USAT16(ulTmp | (ulTmp2 << 16), 5); // range limit both to 5 bits + ulPixel1 |= (ulTmp << 11); // now we have R + G + B + *(uint32_t *)&pDest[0] = ulPixel1; +#else + int iCBB, iCBG, iCRG, iCRR; + iCBB = 7258 * (iCb-0x80); + iCBG = -1409 * (iCb-0x80); + iCRG = -2925 * (iCr-0x80); + iCRR = 5742 * (iCr-0x80); + ulPixel1 = usRangeTableB[((iCBB + iY1) >> 12) & 0x3ff]; // blue pixel + ulPixel1 |= usRangeTableG[((iCBG + iCRG + iY1) >> 12) & 0x3ff]; // green pixel + ulPixel1 |= usRangeTableR[((iCRR + iY1) >> 12) & 0x3ff]; // red pixel + + ulPixel2 = usRangeTableB[((iCBB + iY2) >> 12) & 0x3ff]; // blue pixel + ulPixel2 |= usRangeTableG[((iCBG + iCRG + iY2) >> 12) & 0x3ff]; // green pixel + ulPixel2 |= usRangeTableR[((iCRR + iY2) >> 12) & 0x3ff]; // red pixel + *(uint32_t *)&pDest[0] = (ulPixel1 | (ulPixel2<<16)); +#endif +} /* JPEGPixel2LE() */ + +static void JPEGPixel2BE(uint16_t *pDest, int32_t iY1, int32_t iY2, int32_t iCb, int32_t iCr) +{ + int32_t iCBB, iCBG, iCRG, iCRR; + uint32_t ulPixel1, ulPixel2; + + iCBB = 7258L * (iCb-0x80); + iCBG = -1409L * (iCb-0x80); + iCRG = -2925L * (iCr-0x80); + iCRR = 5742L * (iCr-0x80); + ulPixel1 = usRangeTableB[((iCBB + iY1) >> 12) & 0x3ff]; // blue pixel + ulPixel1 |= usRangeTableG[((iCBG + iCRG + iY1) >> 12) & 0x3ff]; // green pixel + ulPixel1 |= usRangeTableR[((iCRR + iY1) >> 12) & 0x3ff]; // red pixel + + ulPixel2 = usRangeTableB[((iCBB + iY2) >> 12) & 0x3ff]; // blue pixel + ulPixel2 |= usRangeTableG[((iCBG + iCRG + iY2) >> 12) & 0x3ff]; // green pixel + ulPixel2 |= usRangeTableR[((iCRR + iY2) >> 12) & 0x3ff]; // red pixel + *(uint32_t *)&pDest[0] = __builtin_bswap16(ulPixel1) | ((uint32_t)__builtin_bswap16(ulPixel2)<<16); +} /* JPEGPixel2BE() */ + +static void JPEGPixel2RGB(uint32_t *pDest, int32_t iY1, int32_t iY2, int32_t iCb, int32_t iCr) +{ + int32_t iCBB, iCBG, iCRG, iCRR; + uint32_t u32Pixel1, u32Pixel2; + int32_t i32; + + iCBB = 7258L * (iCb-0x80); + iCBG = -1409L * (iCb-0x80); + iCRG = -2925L * (iCr-0x80); + iCRR = 5742L * (iCr-0x80); + i32 = ((iCBB + iY1) >> 12); // blue pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel1 = u32Pixel2 = 0xff000000; // Alpha = 255 + u32Pixel1 |= (uint32_t)i32; // blue + i32 = ((iCBG + iCRG + iY1) >> 12); // green pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel1 |= (uint32_t)(i32 << 8); // green + i32 = ((iCRR + iY1) >> 12); // red pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel1 |= (uint32_t)(i32 << 16); // red + + i32 = ((iCBB + iY2) >> 12); // blue pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel2 |= (uint32_t)i32; + i32 = ((iCBG + iCRG + iY2) >> 12); // green pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel2 |= (uint32_t)(i32 << 8); + i32 = ((iCRR + iY2) >> 12); // red pixel + if (i32 < 0) i32 = 0; + else if (i32 > 255) i32 = 255; + u32Pixel2 |= (uint32_t)(i32 << 16); + pDest[0] = u32Pixel1; + pDest[1] = u32Pixel2; +} /* JPEGPixel2RGB() */ + +static void JPEGPutMCU11(JPEGIMAGE *pJPEG, int x, int iPitch) +{ + int iCr, iCb; + signed int Y; + int iCol; + int iRow; + uint8_t *pY, *pCr, *pCb; + uint16_t *pOutput = &pJPEG->usPixels[x]; + + if (pJPEG->ucPixelType == RGB8888) { + pOutput += x; // 4 bytes per pixel, not 2 + } + + pY = (unsigned char *)&pJPEG->sMCUs[0*DCTSIZE]; + pCb = (unsigned char *)&pJPEG->sMCUs[1*DCTSIZE]; + pCr = (unsigned char *)&pJPEG->sMCUs[2*DCTSIZE]; + + if (pJPEG->iOptions & JPEG_SCALE_HALF) + { + for (iRow=0; iRow<4; iRow++) // up to 8 rows to do + { + for (iCol=0; iCol<4; iCol++) // up to 4x2 cols to do + { + iCr = (pCr[0] + pCr[1] + pCr[8] + pCr[9] + 2) >> 2; + iCb = (pCb[0] + pCb[1] + pCb[8] + pCb[9] + 2) >> 2; + Y = (pY[0] + pY[1] + pY[8] + pY[9]) << 10; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol, Y, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol, Y, iCb, iCr); + else + JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y, iCb, iCr); + pCr += 2; + pCb += 2; + pY += 2; + } // for col + pCr += 8; + pCb += 8; + pY += 8; + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch; + } // for row + return; + } + if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) // special case for 1/8 scaling + { + // only 4 pixels to draw, so no looping needed + iCr = pCr[0]; + iCb = pCb[0]; + Y = (int)(pY[0]) << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput, Y, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput, Y, iCb, iCr); + else + JPEGPixelRGB((uint32_t *)pOutput, Y, iCb, iCr); + return; + } + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) // special case for 1/4 scaling + { + // only 4 pixels to draw, so no looping needed + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelLE(pOutput, Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelLE(pOutput+1, Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelLE(pOutput+iPitch, Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelLE(pOutput+1+iPitch, Y, iCb, iCr); + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelBE(pOutput, Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelBE(pOutput+1, Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelBE(pOutput+iPitch, Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelBE(pOutput+1+iPitch, Y, iCb, iCr); + } else { // RGB8888 + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelRGB((uint32_t *)pOutput, Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelRGB((uint32_t *)&pOutput[2], Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y, iCb, iCr); + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelRGB((uint32_t *)&pOutput[2+iPitch*2], Y, iCb, iCr); + } + return; + } +// full size +#ifdef ESP32S3_SIMD + if (pJPEG->ucPixelType == RGB8888) iPitch *= 2; + for (iRow=0; iRow<8; iRow++) { + s3_ycbcr_convert_444(pY, pCb, pCr, pOutput, i16_Consts, pJPEG->ucPixelType); + pCb += 8; pCr += 8; pY += 8; pOutput += iPitch; + } + return; +#endif // ESP32S3_SIMD + +#ifdef HAS_SSE +// SSE2 version +// R = Y + 1.40200 * Cr +// G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr +// B = Y - 0.22800 * Cb + Cb + Cb + + if (pJPEG->ucPixelType == RGB8888) { + __m128i mmxY, mmxCr, mmxCb, mmxTemp; + __m128i mmxTemp2, mmxR, mmxG, mmxB; + iPitch *= 2; // points to 32-bit values, not 16-bit + mmxTemp2 = _mm_cmpeq_epi16(_mm_setzero_si128(), _mm_setzero_si128()); // fix Cr/Cb values by subtracting 0x80 + mmxTemp2 = _mm_slli_epi16 (mmxTemp2, 15); // now has 0x8000, 0x8000... + for (iRow=0; iRow<8; iRow++) { // do 8 rows + mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr + mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb + mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y + pCr += 8; + pCb += 8; + pY += 8; + mmxCr = _mm_unpacklo_epi8 (_mm_setzero_si128(), mmxCr); // zero-extend 8 Cr values to 16-bits + mmxCb = _mm_unpacklo_epi8 (_mm_setzero_si128(), mmxCb); // zero-extend 8 Cb values to 16-bits + mmxY = _mm_unpacklo_epi8 (mmxY, _mm_setzero_si128()); // zero-extend 8 Y values to 16-bits + mmxCr = _mm_add_epi16(mmxCr, mmxTemp2); // subtract 0x80 + mmxCb = _mm_add_epi16(mmxCb, mmxTemp2); // subtract 0x80 + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxTemp = _mm_loadu_si128((__m128i *)&s1402[0]); // load the 1.402 constant + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // almost ready with R + mmxR = _mm_add_epi16(mmxTemp, mmxY); // now we have 8 R values + mmxTemp = _mm_loadu_si128((__m128i *)&s0714[0]); + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, mmxTemp); + mmxTemp = _mm_loadu_si128((__m128i *)&s0344[0]); // Y -= 0.34414*Cb + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp); + mmxG = _mm_add_epi16(mmxG, mmxTemp); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_loadu_si128((__m128i *)&s1772[0]); // B = Y - 1.772*Cb + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp); + mmxB = _mm_add_epi16(mmxY, mmxTemp); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF + mmxCr = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's + mmxCb = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's + mmxTemp = _mm_unpacklo_epi16(mmxCr, mmxCb); // interleave 4 BG's and 4 RA's + mmxCr = _mm_unpackhi_epi16(mmxCr, mmxCb); // interleave 4 BG's and 4 RA's +// _mm_stream_si128((__m128i*)pOutput, mmxTemp); +// _mm_stream_si128((__m128i*)(pOutput+8), mmxCr); + _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 4 RGBA pixels + _mm_storeu_si128((__m128i *)(pOutput+8), mmxCr); // write 4 RGBA pixels + pOutput += iPitch; + } // for each row + return; + } else { // 16-bpp + __m128i mmxY, mmxCr, mmxCb, mmxTemp; + __m128i mmxTemp2, mmxR, mmxG, mmxB; + for (iRow=0; iRow<8; iRow++) { // do 8 rows + mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr + mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb + mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y + pCr += 8; + pCb += 8; + pY += 8; + mmxTemp = _mm_cmpeq_epi16(mmxY, mmxY); // fix Cr/Cb values by subtracting 0x80 + mmxTemp = _mm_slli_epi16 (mmxTemp, 15); // now has 0x8000, 0x8000... + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxCr = _mm_unpacklo_epi8 (mmxTemp2, mmxCr); // zero-extend 8 Cr values to 16-bits + mmxCb = _mm_unpacklo_epi8 (mmxTemp2, mmxCb); // zero-extend 8 Cb values to 16-bits + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxCr = _mm_add_epi16(mmxCr, mmxTemp); // subtract 0x80 + mmxCb = _mm_add_epi16(mmxCb, mmxTemp); // subtract 0x80 + mmxTemp = _mm_loadu_si128((__m128i *)&s1402[0]); // load the 1.402 constant + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // almost ready with R + mmxR = _mm_add_epi16(mmxTemp, mmxY); // now we have 8 R values + mmxTemp = _mm_loadu_si128((__m128i *)&s0714[0]); + mmxR = _mm_srai_epi16(mmxR, 4); + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // Y-0.71414*Cr + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxG = _mm_add_epi16(mmxY, mmxTemp); + mmxTemp = _mm_loadu_si128((__m128i *)&s0344[0]); // Y -= 0.34414*Cb + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp); + mmxG = _mm_add_epi16(mmxG, mmxTemp); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_loadu_si128((__m128i *)&s1772[0]); // B = Y - 1.772*Cb + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp); + mmxB = _mm_add_epi16(mmxY, mmxTemp); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again + mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp); + mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp); + mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits + mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position + mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits + mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits + mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position + mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G + mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B + _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 8 RGB565 pixels + pOutput += iPitch; + } // for each row + return; + } +#endif // HAS_SSE + + for (iRow=0; iRow<8; iRow++) // up to 8 rows to do + { + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + for (iCol=0; iCol<8; iCol++) // up to 4x2 cols to do + { + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelLE(pOutput+iCol, Y, iCb, iCr); + } // for col + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + for (iCol=0; iCol<8; iCol++) // up to 4x2 cols to do + { + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelBE(pOutput+iCol, Y, iCb, iCr); + } // for col + } else { // RGB888 + for (iCol=0; iCol<8; iCol++) // up to 4x2 cols to do + { + iCr = *pCr++; + iCb = *pCb++; + Y = (int)(*pY++) << 12; + JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y, iCb, iCr); + } // for col + } + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch; + } // for row +} /* JPEGPutMCU11() */ + +static void JPEGPutMCU22(JPEGIMAGE *pJPEG, int x, int iPitch) +{ + uint32_t Cr,Cb; + signed int Y1, Y2, Y3, Y4; + int iRow, iCol, iXCount1, iXCount2, iYCount; + unsigned char *pY, *pCr, *pCb; + int bUseOdd1, bUseOdd2; // special case where 24bpp odd sized image can clobber first column + uint16_t *pOutput = &pJPEG->usPixels[x]; + if (pJPEG->ucPixelType == RGB8888) { + pOutput += x; // 4 bytes per pixel, not 2 + } + pY = (unsigned char *)&pJPEG->sMCUs[0*DCTSIZE]; + pCb = (unsigned char *)&pJPEG->sMCUs[4*DCTSIZE]; + pCr = (unsigned char *)&pJPEG->sMCUs[5*DCTSIZE]; + + if (pJPEG->iOptions & JPEG_SCALE_HALF) // special handling of 1/2 size (pixel averaging) + { + for (iRow=0; iRow<4; iRow++) // 16x16 becomes 8x8 of 2x2 pixels + { + for (iCol=0; iCol<4; iCol++) + { + Y1 = (pY[iCol*2] + pY[iCol*2+1] + pY[iCol*2+8] + pY[iCol*2+9]) << 10; + Cb = pCb[iCol]; + Cr = pCr[iCol]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol, Y1, Cb, Cr); // top left + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr); + Y1 = (pY[iCol*2+(DCTSIZE*2)] + pY[iCol*2+1+(DCTSIZE*2)] + pY[iCol*2+8+(DCTSIZE*2)] + pY[iCol*2+9+(DCTSIZE*2)]) << 10; + Cb = pCb[iCol+4]; + Cr = pCr[iCol+4]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol+4, Y1, Cb, Cr); // top right + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol+4, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[(iCol*2)+8], Y1, Cb, Cr); + Y1 = (pY[iCol*2+(DCTSIZE*4)] + pY[iCol*2+1+(DCTSIZE*4)] + pY[iCol*2+8+(DCTSIZE*4)] + pY[iCol*2+9+(DCTSIZE*4)]) << 10; + Cb = pCb[iCol+32]; + Cr = pCr[iCol+32]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol+iPitch*4, Y1, Cb, Cr); // bottom left + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol+iPitch*4, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[(iCol+iPitch*4)*2], Y1, Cb, Cr); + Y1 = (pY[iCol*2+(DCTSIZE*6)] + pY[iCol*2+1+(DCTSIZE*6)] + pY[iCol*2+8+(DCTSIZE*6)] + pY[iCol*2+9+(DCTSIZE*6)]) << 10; + Cb = pCb[iCol+32+4]; + Cr = pCr[iCol+32+4]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol+4+iPitch*4, Y1, Cb, Cr); // bottom right + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol+4+iPitch*4, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[(iCol+4+iPitch*4)*2], Y1, Cb, Cr); + } + pY += 16; + pCb += 8; + pCr += 8; + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch; + } + return; + } + if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + { + Y1 = pY[0] << 12; // scale to level of conversion table + Cb = pCb[0]; + Cr = pCr[0]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput, Y1, Cb, Cr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)pOutput, Y1, Cb, Cr); + // top right block + Y1 = pY[DCTSIZE*2] << 12; // scale to level of conversion table + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput + 1, Y1, Cb, Cr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput + 1, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[2], Y1, Cb, Cr); + // bottom left block + Y1 = pY[DCTSIZE*4] << 12; // scale to level of conversion table + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iPitch, Y1, Cb, Cr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iPitch, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y1, Cb, Cr); + // bottom right block + Y1 = pY[DCTSIZE*6] << 12; // scale to level of conversion table + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+ 1 + iPitch, Y1, Cb, Cr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+ 1 + iPitch, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[2 + iPitch*2], Y1, Cb, Cr); + return; + } + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) // special case of 1/4 + { + for (iRow=0; iRow<2; iRow++) + { + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + for (iCol=0; iCol<2; iCol++) + { + // top left block + Y1 = pY[iCol] << 12; // scale to level of conversion table + Cb = pCb[0]; + Cr = pCr[0]; + JPEGPixelLE(pOutput + iCol, Y1, Cb, Cr); + // top right block + Y1 = pY[iCol+(DCTSIZE*2)] << 12; // scale to level of conversion table + Cb = pCb[1]; + Cr = pCr[1]; + JPEGPixelLE(pOutput + 2+iCol, Y1, Cb, Cr); + // bottom left block + Y1 = pY[iCol+DCTSIZE*4] << 12; // scale to level of conversion table + Cb = pCb[2]; + Cr = pCr[2]; + JPEGPixelLE(pOutput+iPitch*2 + iCol, Y1, Cb, Cr); + // bottom right block + Y1 = pY[iCol+DCTSIZE*6] << 12; // scale to level of conversion table + Cb = pCb[3]; + Cr = pCr[3]; + JPEGPixelLE(pOutput+iPitch*2 + 2+iCol, Y1, Cb, Cr); + } // for each column + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + for (iCol=0; iCol<2; iCol++) + { + // top left block + Y1 = pY[iCol] << 12; // scale to level of conversion table + Cb = pCb[0]; + Cr = pCr[0]; + JPEGPixelBE(pOutput + iCol, Y1, Cb, Cr); + // top right block + Y1 = pY[iCol+(DCTSIZE*2)] << 12; // scale to level of conversion table + Cb = pCb[1]; + Cr = pCr[1]; + JPEGPixelBE(pOutput + 2+iCol, Y1, Cb, Cr); + // bottom left block + Y1 = pY[iCol+DCTSIZE*4] << 12; // scale to level of conversion table + Cb = pCb[2]; + Cr = pCr[2]; + JPEGPixelBE(pOutput+iPitch*2 + iCol, Y1, Cb, Cr); + // bottom right block + Y1 = pY[iCol+DCTSIZE*6] << 12; // scale to level of conversion table + Cb = pCb[3]; + Cr = pCr[3]; + JPEGPixelBE(pOutput+iPitch*2 + 2+iCol, Y1, Cb, Cr); + } // for each column + } else { // RGB8888 + for (iCol=0; iCol<2; iCol++) + { + // top left block + Y1 = pY[iCol] << 12; // scale to level of conversion table + Cb = pCb[0]; + Cr = pCr[0]; + JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr); + // top right block + Y1 = pY[iCol+(DCTSIZE*2)] << 12; // scale to level of conversion table + Cb = pCb[1]; + Cr = pCr[1]; + JPEGPixelRGB((uint32_t *)&pOutput[(2+iCol)*2], Y1, Cb, Cr); + // bottom left block + Y1 = pY[iCol+DCTSIZE*4] << 12; // scale to level of conversion table + Cb = pCb[2]; + Cr = pCr[2]; + JPEGPixelRGB((uint32_t *)&pOutput[(iPitch*2 + iCol)*2], Y1, Cb, Cr); + // bottom right block + Y1 = pY[iCol+DCTSIZE*6] << 12; // scale to level of conversion table + Cb = pCb[3]; + Cr = pCr[3]; + JPEGPixelRGB((uint32_t *)&pOutput[(iPitch*2 + 2+iCol)*2], Y1, Cb, Cr); + } // for each column + } + pY += 2; // skip 1 line of source pixels + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch; + } + return; + } +// full size +#ifdef ESP32S3_SIMD + if (pJPEG->ucPixelType == RGB8888) iPitch *= 2; + for (iRow=0; iRow<4; iRow++) { // top L+R, 4 pairs of lines x 16 pixels + // each call converts 16 pixels + s3_ycbcr_convert_420(pY, pCb, pCr, pOutput, i16_Consts, pJPEG->ucPixelType); + s3_ycbcr_convert_420(pY+8, pCb, pCr, pOutput+iPitch, i16_Consts, pJPEG->ucPixelType); + pCb += 8; pCr += 8; pY += 16; pOutput += iPitch*2; + } + pY += (256 - 64); + for (iRow=0; iRow<4; iRow++) { // bottom L+R + s3_ycbcr_convert_420(pY, pCb, pCr, pOutput, i16_Consts, pJPEG->ucPixelType); + s3_ycbcr_convert_420(pY+8, pCb, pCr, pOutput+iPitch, i16_Consts, pJPEG->ucPixelType); + pCb += 8; pCr += 8; pY += 16; pOutput += iPitch*2; + } + return; +#endif // ESP32S3_SIMD + +#ifdef HAS_NEON + if (pJPEG->ucPixelType == RGB8888) { + int8x8_t i88Cr, i88Cb; + uint8x16_t u816YL, u816YR; + int16x8_t i168Cr, i168Cb, i168Y, i168Temp; + int16x4_t i164Constants; + int16x8_t i168R, i168G, i168B; + uint8x8_t u88R, u88G, u88B, u88A; + int16x8x2_t i168Crx2, i168Cbx2; + uint8x8x4_t u884Hack; + i164Constants = vld1_s16(&sYCCRGBConstants[0]); // 4 different constants used for "lane" multiplications by scalar + u88A = vdup_n_u8(0xff); // Alpha set to FF + + for (iRow=0; iRow<8; iRow++) { // do 8 rows + i88Cr = vld1_s8((const int8_t *)pCr); // load 1 row of Cr + i88Cb = vld1_s8((const int8_t *) pCb); // load 1 row of Cb + u816YL = vld1q_u8(pY); // load 2 rows of Y (left block) + u816YR = vld1q_u8(pY+128); // load 2 rows of Y (right block) + // top left block + i168Temp = vdupq_n_s16((int16_t)0x8000); // fix Cr/Cb values by subtracting 0x80 + i168Cr = vshll_n_s8(i88Cr, 8); // widen 8 Cr values and shift left 8 + i168Cb = vshll_n_s8(i88Cb, 8); // widen 8 Cb values and shift left 8 + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values + i168Cr = vsubq_s16(i168Cr, i168Temp); // fix Cr/Cb (-0x80) + i168Cb = vsubq_s16(i168Cb, i168Temp); + i168Crx2 = vzipq_s16(i168Cr, i168Cr); // double elements in horizonal direction + i168Cbx2 = vzipq_s16(i168Cb, i168Cb); + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (right block) + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + // ugly hack due to bug in GCC of vst4 intrinsics + u884Hack.val[0] = u88B; + u884Hack.val[1] = u88G; + u884Hack.val[2] = u88R; + u884Hack.val[3] = u88A; + vst4_u8((uint8_t *)pOutput, u884Hack); + // top right block + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values (right block) + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + // ugly hack due to bug in GCC of vst4 intrinsics + u884Hack.val[0] = u88B; + u884Hack.val[1] = u88G; + u884Hack.val[2] = u88R; + u884Hack.val[3] = u88A; + vst4_u8((uint8_t *)(pOutput+16), u884Hack); + // bottom left block + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (bottom right block) + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + // ugly hack due to bug in GCC of vst4 intrinsics + u884Hack.val[0] = u88B; + u884Hack.val[1] = u88G; + u884Hack.val[2] = u88R; + u884Hack.val[3] = u88A; + vst4_u8((uint8_t *)(pOutput+iPitch*2), u884Hack); + // bottom right block + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + // ugly hack due to bug in GCC of vst4 intrinsics + u884Hack.val[0] = u88B; + u884Hack.val[1] = u88G; + u884Hack.val[2] = u88R; + u884Hack.val[3] = u88A; + vst4_u8((uint8_t *)(pOutput+iPitch*2+16), u884Hack); + pCr += 8; + pCb += 8; + if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs + pY += 16 + 192; // skip to other 2 Y blocks + else + pY += 16; + pOutput += 4*iPitch; + } // for each row + return; // 32bpp + } else { // 16bpp + int8x8_t i88Cr, i88Cb; + uint8x16_t u816YL, u816YR; + int16x8_t i168Cr, i168Cb, i168Y, i168Temp; + int16x4_t i164Constants; + int16x8x2_t i168Crx2, i168Cbx2; + int16x8_t i168R, i168G, i168B; + uint8x8_t u88R, u88G, u88B; + uint16x8_t u168Temp, u168Temp2; + uint8_t ucPixelType = pJPEG->ucPixelType; + i164Constants = vld1_s16(&sYCCRGBConstants[0]); // 4 different constants used for "lane" multiplications by scalar + + for (iRow=0; iRow<8; iRow++) { // do 8 rows + i88Cr = vld1_s8((const int8_t *) pCr); // load 1 row of Cr + i88Cb = vld1_s8((const int8_t *) pCb); // load 1 row of Cb + u816YL = vld1q_u8(pY); // load 2 rows of Y (left block) + u816YR = vld1q_u8(pY+128); // load 2 rows of Y (right block) + // top left block + i168Temp = vdupq_n_s16((int16_t) 0x8000); // fix Cr/Cb values by subtracting 0x80 + i168Cr = vshll_n_s8(i88Cr, 8); // widen 8 Cr values and shift left 8 + i168Cb = vshll_n_s8(i88Cb, 8); // widen 8 Cb values and shift left 8 + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values + i168Cr = vsubq_s16(i168Cr, i168Temp); // fix Cr/Cb (-0x80) + i168Cb = vsubq_s16(i168Cb, i168Temp); + i168Crx2 = vzipq_s16(i168Cr, i168Cr); // double elements in horizonal direction + i168Cbx2 = vzipq_s16(i168Cb, i168Cb); + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (right block) + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words + u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements + u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert + if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes + u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp))); + } + vst1q_u16((uint16_t *)pOutput, u168Temp); // top left block + // top right block + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values (right block) + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words + u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements + u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert + if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes + u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp))); + } + vst1q_u16((uint16_t *)(pOutput+8), u168Temp); // top right block + // bottom left block + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (bottom right block) + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words + u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements + u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert + if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes + u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp))); + } + vst1q_u16((uint16_t *)(pOutput+iPitch), u168Temp); // bottom left block + // bottom right block + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402 + i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values + i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414 + u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned + i168G = vaddq_s16(i168Y, i168Temp); + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414 + i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values + u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned + i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772 + i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values + u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned + u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words + u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements + u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words + u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert + if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes + u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp))); + } + vst1q_u16((uint16_t *)(pOutput+iPitch+8), u168Temp); // bottom right block + // advance to next pair of lines + pCr += 8; + pCb += 8; + if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs + pY += 16 + 192; // skip to other 2 Y blocks + else + pY += 16; + pOutput += iPitch*2; + } // for each row + return; + } // 16bpp +#endif // HAS_NEON + +#ifdef HAS_SSE +// SSE2 version +// R = Y + 1.40200 * Cr +// G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr +// B = Y - 0.22800 * Cb + Cb + Cb + + if (pJPEG->ucPixelType == RGB8888) { + __m128i mmxY, mmxCr, mmxCb, mmxTemp; + __m128i mmxTemp2, mmxR, mmxG, mmxB; + __m128i mmxConst1402, mmxConst0714, mmxConst0344, mmxConst1772; + mmxConst0344 = _mm_load_si128((__m128i *)&s0344[0]); + mmxConst1402 = _mm_load_si128((__m128i *)&s1402[0]); + mmxConst0714 = _mm_load_si128((__m128i *)&s0714[0]); + mmxConst1772 = _mm_load_si128((__m128i *)&s1772[0]); + iPitch *= 2; // destination is 32-bit values, not 16 + for (iRow = 0; iRow<8; iRow++) // do 8 pairs of rows in 4 quadrants + { + // left block + mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr + mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb + mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y (top left block) + mmxTemp = _mm_cmpeq_epi16(mmxY, mmxY); // fix Cr/Cb values by subtracting 0x80 + mmxTemp = _mm_slli_epi16 (mmxTemp, 15); // now has 0x8000, 0x8000... + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxCr = _mm_unpacklo_epi8 (mmxTemp2, mmxCr); // zero-extend 8 Cr values to 16-bits + mmxCb = _mm_unpacklo_epi8 (mmxTemp2, mmxCb); // zero-extend 8 Cb values to 16-bits (left shifted 8) + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxCr = _mm_add_epi16(mmxCr, mmxTemp); // subtract 0x80 + mmxCb = _mm_add_epi16(mmxCb, mmxTemp); // subtract 0x80 + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); + mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); + mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF + mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's + mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's + mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + // store first row of pair + _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 4 RGBA pixels + _mm_storeu_si128((__m128i *)(pOutput+8), mmxTemp2); // write 4 RGBA pixels + // second row of left block + mmxY = _mm_loadl_epi64((__m128i *)(pY+8)); // load 1 row of Y (top left block) + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); // Y -= 0.34414*Cb + mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb + mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF + mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's + mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's + mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + // store second row of pair + _mm_storeu_si128((__m128i *)(pOutput+iPitch), mmxTemp); // write 4 RGBA pixels + _mm_storeu_si128((__m128i *)(pOutput+iPitch+8), mmxTemp2); // write 4 RGBA pixels + // right block + mmxY = _mm_loadl_epi64((__m128i *)(pY+128)); // load 1 row of Y (right block) + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); + mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); + mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF + mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's + mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's + mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + // store first row of right block + _mm_storeu_si128((__m128i *)(pOutput+16), mmxTemp); // write 4 RGBA pixels + _mm_storeu_si128((__m128i *)(pOutput+24), mmxTemp2); // write 4 RGBA pixels + // prepare second row of right block + mmxY = _mm_loadl_epi64((__m128i *)(pY+136)); // load 1 row of Y (right block) + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); + mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); + mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF + mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's + mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's + mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's + // store second row of right block + _mm_storeu_si128((__m128i *)(pOutput+iPitch+16), mmxTemp); // write 4 RGBA pixels + _mm_storeu_si128((__m128i *)(pOutput+iPitch+24), mmxTemp2); // write 4 RGBA pixels + + pOutput += iPitch*2; + pCr += 8; + pCb += 8; + if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs + pY += 16 + 192; // skip to other 2 Y blocks + else + pY += 16; + } // for each row + return; + } else { // 16-bit pixels + __m128i mmxY, mmxCr, mmxCb, mmxTemp; + __m128i mmxTemp2, mmxR, mmxG, mmxB; + __m128i mmxConst1402, mmxConst0714, mmxConst0344, mmxConst1772; + mmxConst0344 = _mm_load_si128((__m128i *)&s0344[0]); + mmxConst1402 = _mm_load_si128((__m128i *)&s1402[0]); + mmxConst0714 = _mm_load_si128((__m128i *)&s0714[0]); + mmxConst1772 = _mm_load_si128((__m128i *)&s1772[0]); + for (iRow = 0; iRow<8; iRow++) // do 8 pairs of rows in 4 quadrants + { + // left block + mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr + mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb + mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y (top left block) + mmxTemp = _mm_cmpeq_epi16(mmxY, mmxY); // fix Cr/Cb values by subtracting 0x80 + mmxTemp = _mm_slli_epi16 (mmxTemp, 7); // now has 0xff80, 0xff80... + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxCr = _mm_unpacklo_epi8 (mmxCr, mmxTemp2); // zero-extend 8 Cr values to 16-bits + mmxCb = _mm_unpacklo_epi8 (mmxCb, mmxTemp2); // zero-extend 8 Cb values to 16-bits + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxCr = _mm_add_epi16(mmxCr, mmxTemp); // subtract 0x80 + mmxCb = _mm_add_epi16(mmxCb, mmxTemp); // subtract 0x80 + mmxCr = _mm_slli_epi16(mmxCr, 8); // put in top half of 16-bits + mmxCb = _mm_slli_epi16(mmxCb, 8); // put in top half of 16-bits + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); // Y -= 0.34414*Cb + mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb + mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values + mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again + mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp); + mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp); + mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits + mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position + mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits + mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits + mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position + mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G + mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B + // store first row of pair + _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 8 RGB565 pixels + // second row of left block + mmxY = _mm_loadl_epi64((__m128i *)(pY+8)); // load 1 row of Y (top left block) + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); + mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb + mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values + mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again + mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp); + mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp); + mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits + mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position + mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits + mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits + mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position + mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G + mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B + // store second row of pair + _mm_storeu_si128((__m128i *)(pOutput+iPitch), mmxTemp); // write 8 RGB565 pixels + // right block + mmxY = _mm_loadl_epi64((__m128i *)(pY+128)); // load 1 row of Y (right block) + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); // Y -= 0.34414*Cb + mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb + mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values + mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again + mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp); + mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp); + mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits + mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position + mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits + mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits + mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position + mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G + mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B + // store first row of right block + _mm_storeu_si128((__m128i *)(pOutput+16), mmxTemp); // write 8 RGB565 pixels + // prepare second row of right block + mmxY = _mm_loadl_epi64((__m128i *)(pY+136)); // load 1 row of Y (right block) + mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0 + mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits + mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R + mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values + mmxR = _mm_srai_epi16(mmxR, 4); + mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr + mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); + mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values + mmxG = _mm_srai_epi16(mmxG, 4); + mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate + mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb + mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values + mmxB = _mm_srai_epi16(mmxB, 4); + mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate + mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values + mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again + mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp); + mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp); + mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits + mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position + mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits + mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits + mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position + mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G + mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B + // store second row of right block + _mm_storeu_si128((__m128i *)(pOutput+16+iPitch), mmxTemp); // write 8 RGB565 pixels + + pOutput += iPitch*2; + pCr += 8; + pCb += 8; + if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs + pY += 16 + 192; // skip to other 2 Y blocks + else + pY += 16; + } // for each row + return; + } // 16bpp +#endif // HAS_SSE + /* Reference C code */ + /* Convert YCC pixels into RGB pixels and store in output image */ + iYCount = 4; + bUseOdd1 = bUseOdd2 = 1; // assume odd column can be used + if ((x+15) >= pJPEG->iWidth) + { + iCol = (((pJPEG->iWidth & 15)+1) >> 1); + if (iCol >= 4) + { + iXCount1 = 4; + iXCount2 = iCol-4; + if (pJPEG->iWidth & 1 && (iXCount2 * 2) + 8 + (x * 16) > pJPEG->iWidth) + bUseOdd2 = 0; + } + else + { + iXCount1 = iCol; + iXCount2 = 0; + if (pJPEG->iWidth & 1 && (iXCount1 * 2) + (x * 16) > pJPEG->iWidth) + bUseOdd1 = 0; + } + } + else + iXCount1 = iXCount2 = 4; + for (iRow=0; iRowucPixelType == RGB565_LITTLE_ENDIAN) + { + if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge + { + JPEGPixel2LE(pOutput + (iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2LE(pOutput+iPitch + (iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelLE(pOutput + (iCol<<1), Y1, Cb, Cr); + JPEGPixelLE(pOutput+iPitch + (iCol<<1), Y3, Cb, Cr); + } + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge + { + JPEGPixel2BE(pOutput + (iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2BE(pOutput+iPitch + (iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelBE(pOutput + (iCol<<1), Y1, Cb, Cr); + JPEGPixelBE(pOutput+iPitch + (iCol<<1), Y3, Cb, Cr); + } + } else { // RGB8888 + if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge + { + JPEGPixel2RGB((uint32_t *)&pOutput[iCol<<2], Y1, Y2, Cb, Cr); + JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch + (iCol<<1))], Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelRGB((uint32_t *)&pOutput[iCol<<2], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[(iPitch + (iCol<<1))*2], Y3, Cb, Cr); + } + } // RGB8888 + // for top right block + if (iCol < iXCount2) + { + Y1 = pY[iCol*2+DCTSIZE*2]; + Y2 = pY[iCol*2+1+DCTSIZE*2]; + Y3 = pY[iCol*2+8+DCTSIZE*2]; + Y4 = pY[iCol*2+9+DCTSIZE*2]; + Y1 <<= 12; // scale to level of conversion table + Y2 <<= 12; + Y3 <<= 12; + Y4 <<= 12; + Cb = pCb[iCol+4]; + Cr = pCr[iCol+4]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge + { + JPEGPixel2LE(pOutput + 8+(iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2LE(pOutput+iPitch + 8+(iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelLE(pOutput+ 8+(iCol<<1), Y1, Cb, Cr); + JPEGPixelLE(pOutput+iPitch+ 8+(iCol<<1), Y3, Cb, Cr); + } + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge + { + JPEGPixel2BE(pOutput + 8+(iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2BE(pOutput+iPitch + 8+(iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelBE(pOutput+ 8+(iCol<<1), Y1, Cb, Cr); + JPEGPixelBE(pOutput+iPitch+ 8+(iCol<<1), Y3, Cb, Cr); + } + } else { // RGB8888 + if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge + { + JPEGPixel2RGB((uint32_t *)&pOutput[16+(iCol<<2)], Y1, Y2, Cb, Cr); + JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch + 8+(iCol<<1))], Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelRGB((uint32_t *)&pOutput[16+(iCol<<2)], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch+ 8+(iCol<<1))], Y3, Cb, Cr); + } + } // RGB8888 + } + // for bottom left block + Y1 = pY[iCol*2+DCTSIZE*4]; + Y2 = pY[iCol*2+1+DCTSIZE*4]; + Y3 = pY[iCol*2+8+DCTSIZE*4]; + Y4 = pY[iCol*2+9+DCTSIZE*4]; + Y1 <<= 12; // scale to level of conversion table + Y2 <<= 12; + Y3 <<= 12; + Y4 <<= 12; + Cb = pCb[iCol+32]; + Cr = pCr[iCol+32]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge + { + JPEGPixel2LE(pOutput+iPitch*8+ (iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2LE(pOutput+iPitch*9+ (iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelLE(pOutput+iPitch*8+ (iCol<<1), Y1, Cb, Cr); + JPEGPixelLE(pOutput+iPitch*9+ (iCol<<1), Y3, Cb, Cr); + } + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge + { + JPEGPixel2BE(pOutput+iPitch*8+ (iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2BE(pOutput+iPitch*9+ (iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelBE(pOutput+iPitch*8+ (iCol<<1), Y1, Cb, Cr); + JPEGPixelBE(pOutput+iPitch*9+ (iCol<<1), Y3, Cb, Cr); + } + } else { // RGB8888 + if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge + { + JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*8+ (iCol<<1))], Y1, Y2, Cb, Cr); + JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*9+ (iCol<<1))], Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*8+(iCol<<1))], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*9+ (iCol<<1))], Y3, Cb, Cr); + } + } // RGB8888 + // for bottom right block + if (iCol < iXCount2) + { + Y1 = pY[iCol*2+DCTSIZE*6]; + Y2 = pY[iCol*2+1+DCTSIZE*6]; + Y3 = pY[iCol*2+8+DCTSIZE*6]; + Y4 = pY[iCol*2+9+DCTSIZE*6]; + Y1 <<= 12; // scale to level of conversion table + Y2 <<= 12; + Y3 <<= 12; + Y4 <<= 12; + Cb = pCb[iCol+36]; + Cr = pCr[iCol+36]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge + { + JPEGPixel2LE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2LE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelLE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Cb, Cr); + JPEGPixelLE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Cb, Cr); + } + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge + { + JPEGPixel2BE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Y2, Cb, Cr); + JPEGPixel2BE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelBE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Cb, Cr); + JPEGPixelBE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Cb, Cr); + } + } else { // RGB8888 + if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge + { + JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*8+ 8+(iCol<<1))], Y1, Y2, Cb, Cr); + JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*9+ 8+(iCol<<1))], Y3, Y4, Cb, Cr); + } + else + { + JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*8+ 8+(iCol<<1))], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*9+ 8+(iCol<<1))], Y3, Cb, Cr); + } + } // RGB8888 + } + } // for each column + pY += 16; // skip to next line of source pixels + pCb += 8; + pCr += 8; + pOutput += iPitch*2; + if (pJPEG->ucPixelType == RGB8888) { + pOutput += iPitch*2; + } + } +} /* JPEGPutMCU22() */ + +static void JPEGPutMCU12(JPEGIMAGE *pJPEG, int x, int iPitch) +{ + uint32_t Cr,Cb; + signed int Y1, Y2; + int iRow, iCol, iXCount, iYCount; + uint8_t *pY, *pCr, *pCb; + uint16_t *pOutput = &pJPEG->usPixels[x]; + + if (pJPEG->ucPixelType == RGB8888) { + pOutput += x; // 4 bytes per pixel, not 2 + } + + pY = (uint8_t *)&pJPEG->sMCUs[0*DCTSIZE]; + pCb = (uint8_t *)&pJPEG->sMCUs[2*DCTSIZE]; + pCr = (uint8_t *)&pJPEG->sMCUs[3*DCTSIZE]; + + if (pJPEG->iOptions & JPEG_SCALE_HALF) + { + for (iRow=0; iRow<8; iRow++) + { + for (iCol=0; iCol<4; iCol++) + { + Y1 = (pY[0] + pY[1] + pY[8] + pY[9]) << 10; + Cb = (pCb[0] + pCb[1] + 1) >> 1; + Cr = (pCr[0] + pCr[1] + 1) >> 1; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol, Y1, Cb, Cr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol, Y1, Cb, Cr); + else + JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr); + pCb += 2; + pCr += 2; + pY += 2; + } + pY += 8; + if (iRow == 3) // skip to next Y MCU block + pY += 64; + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch; + } + return; + } + if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + { + Y1 = pY[0] << 12; + Y2 = pY[DCTSIZE*2] << 12; + Cb = pCb[0]; + Cr = pCr[0]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + JPEGPixelLE(pOutput, Y1, Cb, Cr); + JPEGPixelLE(pOutput + iPitch, Y2, Cb, Cr); + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + JPEGPixelBE(pOutput, Y1, Cb, Cr); + JPEGPixelBE(pOutput + iPitch, Y2, Cb, Cr); + } + else { // RGB8888 + JPEGPixelRGB((uint32_t *)pOutput, Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y2, Cb, Cr); + } + return; + } + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + { // draw a 2x4 block + Y1 = pY[0] << 12; + Y2 = pY[2] << 12; + Cb = pCb[0]; + Cr = pCr[0]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + JPEGPixelLE(pOutput, Y1, Cb, Cr); + JPEGPixelLE(pOutput + iPitch, Y2, Cb, Cr); + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + JPEGPixelBE(pOutput, Y1, Cb, Cr); + JPEGPixelBE(pOutput + iPitch, Y2, Cb, Cr); + } else { // RGB8888 + JPEGPixelRGB((uint32_t *)&pOutput, Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y2, Cb, Cr); + } + Y1 = pY[1] << 12; + Y2 = pY[3] << 12; + Cb = pCb[1]; + Cr = pCr[1]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + JPEGPixelLE(pOutput + 1, Y1, Cb, Cr); + JPEGPixelLE(pOutput + 1 + iPitch, Y2, Cb, Cr); + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + JPEGPixelBE(pOutput + 1, Y1, Cb, Cr); + JPEGPixelBE(pOutput + 1 + iPitch, Y2, Cb, Cr); + } else { // RGB8888 + JPEGPixelRGB((uint32_t *)&pOutput[2], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[(1 + iPitch)*2], Y2, Cb, Cr); + } + pY += DCTSIZE*2; // next Y block below + Y1 = pY[0] << 12; + Y2 = pY[2] << 12; + Cb = pCb[2]; + Cr = pCr[2]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + JPEGPixelLE(pOutput + iPitch*2, Y1, Cb, Cr); + JPEGPixelLE(pOutput + iPitch*3, Y2, Cb, Cr); + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + JPEGPixelBE(pOutput + iPitch*2, Y1, Cb, Cr); + JPEGPixelBE(pOutput + iPitch*3, Y2, Cb, Cr); + } else { // RGB8888 + JPEGPixelRGB((uint32_t *)&pOutput[iPitch*4], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[iPitch*6], Y2, Cb, Cr); + } + Y1 = pY[1] << 12; + Y2 = pY[3] << 12; + Cb = pCb[3]; + Cr = pCr[3]; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + { + JPEGPixelLE(pOutput + 1 + iPitch*2, Y1, Cb, Cr); + JPEGPixelLE(pOutput + 1 + iPitch*3, Y2, Cb, Cr); + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + JPEGPixelBE(pOutput + 1 + iPitch*2, Y1, Cb, Cr); + JPEGPixelBE(pOutput + 1 + iPitch*3, Y2, Cb, Cr); + } + else { // RGB8888 + JPEGPixelRGB((uint32_t *)&pOutput[2 + iPitch*4], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[2 + iPitch*6], Y2, Cb, Cr); + } + return; + } +// full size + /* Convert YCC pixels into RGB pixels and store in output image */ + iYCount = 16; + iXCount = 8; + for (iRow=0; iRowucPixelType == RGB565_LITTLE_ENDIAN) + { + JPEGPixelLE(pOutput + iCol, Y1, Cb, Cr); + JPEGPixelLE(pOutput + iPitch + iCol, Y2, Cb, Cr); + } + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + { + JPEGPixelBE(pOutput + iCol, Y1, Cb, Cr); + JPEGPixelBE(pOutput + iPitch + iCol, Y2, Cb, Cr); + } else { // RGB8888 + JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr); + JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch + iCol)], Y2, Cb, Cr); + } // RGB8888 + } + pY += 16; // skip to next 2 lines of source pixels + if (iRow == 6) // next MCU block, skip ahead to correct spot + pY += (128-64); + pCb += 8; + pCr += 8; + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*4 : iPitch*2; // next 2 lines of dest pixels + } +} /* JPEGPutMCU12() */ + +static void JPEGPutMCU21(JPEGIMAGE *pJPEG, int x, int iPitch) +{ + int iCr, iCb; + signed int Y1, Y2; + int iCol; + int iRow; + uint8_t *pY, *pCr, *pCb; + uint16_t *pOutput = &pJPEG->usPixels[x]; + + if (pJPEG->ucPixelType == RGB8888) { + pOutput += x; // 4 bytes per pixel, not 2 + } + + pY = (uint8_t *)&pJPEG->sMCUs[0*DCTSIZE]; + pCb = (uint8_t *)&pJPEG->sMCUs[2*DCTSIZE]; + pCr = (uint8_t *)&pJPEG->sMCUs[3*DCTSIZE]; + + if (pJPEG->iOptions & JPEG_SCALE_HALF) + { + for (iRow=0; iRow<4; iRow++) + { + for (iCol=0; iCol<4; iCol++) + { // left block + iCr = (pCr[0] + pCr[8] + 1) >> 1; + iCb = (pCb[0] + pCb[8] + 1) >> 1; + Y1 = (signed int)(pY[0] + pY[1] + pY[8] + pY[9]) << 10; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol, Y1, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol, Y1, iCb, iCr); + else + JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, iCb, iCr); + // right block + iCr = (pCr[4] + pCr[12] + 1) >> 1; + iCb = (pCb[4] + pCb[12] + 1) >> 1; + Y1 = (signed int)(pY[128] + pY[129] + pY[136] + pY[137]) << 10; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixelLE(pOutput+iCol+4, Y1, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixelBE(pOutput+iCol+4, Y1, iCb, iCr); + else + JPEGPixelRGB((uint32_t *)&pOutput[(iCol+4)*2], Y1, iCb, iCr); + pCb++; + pCr++; + pY += 2; + } + pCb += 12; + pCr += 12; + pY += 8; + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch; + } + return; + } + if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + { // draw 2 pixels + iCr = pCr[0]; + iCb = pCb[0]; + Y1 = (signed int)(pY[0]) << 12; + Y2 = (signed int)(pY[DCTSIZE*2]) << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixel2LE(pOutput, Y1, Y2, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixel2BE(pOutput, Y1, Y2, iCb, iCr); + else + JPEGPixel2RGB((uint32_t *)pOutput, Y1, Y2, iCb, iCr); + return; + } + if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + { // draw 4x2 pixels + // top left + iCr = pCr[0]; + iCb = pCb[0]; + Y1 = (signed int)(pY[0]) << 12; + Y2 = (signed int)(pY[1]) << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixel2LE(pOutput, Y1, Y2, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixel2BE(pOutput, Y1, Y2, iCb, iCr); + else + JPEGPixel2RGB((uint32_t *)pOutput, Y1, Y2, iCb, iCr); + // top right + iCr = pCr[1]; + iCb = pCb[1]; + Y1 = (signed int)pY[DCTSIZE*2] << 12; + Y2 = (signed int)pY[DCTSIZE*2+1] << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixel2LE(pOutput + 2, Y1, Y2, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixel2BE(pOutput + 2, Y1, Y2, iCb, iCr); + else + JPEGPixel2RGB((uint32_t *)&pOutput[4], Y1, Y2, iCb, iCr); + // bottom left + iCr = pCr[2]; + iCb = pCb[2]; + Y1 = (signed int)(pY[2]) << 12; + Y2 = (signed int)(pY[3]) << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixel2LE(pOutput + iPitch, Y1, Y2, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixel2BE(pOutput + iPitch, Y1, Y2, iCb, iCr); + else + JPEGPixel2RGB((uint32_t *)&pOutput[iPitch*2], Y1, Y2, iCb, iCr); + // bottom right + iCr = pCr[3]; + iCb = pCb[3]; + Y1 = (signed int)pY[DCTSIZE*2+2] << 12; + Y2 = (signed int)pY[DCTSIZE*2+3] << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixel2LE(pOutput + iPitch + 2, Y1, Y2, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixel2BE(pOutput + iPitch + 2, Y1, Y2, iCb, iCr); + else + JPEGPixel2RGB((uint32_t *)&pOutput[(iPitch+2)*2], Y1, Y2, iCb, iCr); + return; + } +// Full size + /* Convert YCC pixels into RGB pixels and store in output image */ + for (iRow=0; iRow<8; iRow++) // up to 8 rows to do + { + for (iCol=0; iCol<4; iCol++) // up to 4x2 cols to do + { // left block + iCr = *pCr++; + iCb = *pCb++; + Y1 = (signed int)(*pY++) << 12; + Y2 = (signed int)(*pY++) << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixel2LE(pOutput + iCol*2, Y1, Y2, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixel2BE(pOutput + iCol*2, Y1, Y2, iCb, iCr); + else // RGB8888 + JPEGPixel2RGB((uint32_t *)&pOutput[iCol*4], Y1, Y2, iCb, iCr); + // right block + iCr = pCr[3]; + iCb = pCb[3]; + Y1 = (signed int)pY[126] << 12; + Y2 = (signed int)pY[127] << 12; + if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN) + JPEGPixel2LE(pOutput + 8 + iCol*2, Y1, Y2, iCb, iCr); + else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN) + JPEGPixel2BE(pOutput + 8 + iCol*2, Y1, Y2, iCb, iCr); + else // RGB8888 + JPEGPixel2RGB((uint32_t *)&pOutput[16 + iCol*4], Y1, Y2, iCb, iCr); + } // for col + pCb += 4; + pCr += 4; + pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch; + } // for row +} /* JPEGPutMCU21() */ + +// Dither the 8-bit gray pixels into 1, 2, or 4-bit gray +static void JPEGDither(JPEGIMAGE *pJPEG, int iWidth, int iHeight) +{ +int x, y, xmask=0, iDestPitch=0; +int32_t cNew, lFErr, v=0, h; +int32_t e1,e2,e3,e4; +uint8_t cOut, ucPixelType; // forward errors for gray +uint8_t *pSrc, *pDest, *errors, *pErrors=NULL, *d, *pPixels; // destination 8bpp image +uint8_t pixelmask=0, shift=0; + + ucPixelType = pJPEG->ucPixelType; + errors = (uint8_t *)pJPEG->usPixels; // plenty of space here + errors[0] = errors[1] = errors[2] = 0; + pDest = pSrc = pJPEG->pDitherBuffer; // write the new pixels over the original + switch (ucPixelType) + { + case FOUR_BIT_DITHERED: + iDestPitch = (iWidth+1)/2; + pixelmask = 0xf0; + shift = 4; + xmask = 1; + break; + case TWO_BIT_DITHERED: + iDestPitch = (iWidth+3)/4; + pixelmask = 0xc0; + shift = 2; + xmask = 3; + break; + case ONE_BIT_DITHERED: + iDestPitch = (iWidth+7)/8; + pixelmask = 0x80; + shift = 1; + xmask = 7; + break; + } + for (y=0; y 255) cNew = 255; // clip to uint8_t + cOut <<= shift; // pack new pixels into a byte + cOut |= (cNew >> (8-shift)); // keep top N bits + if ((x & xmask) == xmask) // store it when the byte is full + { + *d++ = cOut; + cOut = 0; + } + // calculate the Floyd-Steinberg error for this pixel + v = cNew - (cNew & pixelmask); // new error for N-bit gray output (always positive) + h = v >> 1; + e1 = (7*h)>>3; // 7/16 + e2 = h - e1; // 1/16 + e3 = (5*h) >> 3; // 5/16 + e4 = h - e3; // 3/16 + // distribute error to neighbors + lFErr = e1 + pErrors[1]; + pErrors[1] = (uint8_t)e2; + pErrors[0] += e3; + pErrors[-1] += e4; + pErrors++; + } // for x + } // for y +} /* JPEGDither() */ + +// +// Decode the image +// returns 0 for error, 1 for success +// +static int DecodeJPEG(JPEGIMAGE *pJPEG) +{ + int cx, cy, x, y, mcuCX, mcuCY; + int iLum0, iLum1, iLum2, iLum3, iCr, iCb; + signed int iDCPred0, iDCPred1, iDCPred2; + int i, iQuant1, iQuant2, iQuant3, iErr; + int iSkipMask, bSkipRow; + uint8_t c; + int iMCUCount, xoff, iPitch, bThumbnail = 0; + int bContinue = 1; // early exit if the DRAW callback wants to stop + uint32_t l, *pl; + unsigned char cDCTable0, cACTable0, cDCTable1, cACTable1, cDCTable2, cACTable2; + JPEGDRAW jd; + int iMaxFill = 16, iScaleShift = 0; + + // Requested the Exif thumbnail + if (pJPEG->iOptions & JPEG_EXIF_THUMBNAIL) + { + if (pJPEG->iThumbData == 0 || pJPEG->iThumbWidth == 0) // doesn't exist + { + pJPEG->iError = JPEG_INVALID_PARAMETER; + return 0; + } + if (!JPEGParseInfo(pJPEG, 1)) // parse the embedded thumbnail file header + return 0; // something went wrong + } + // Fast downscaling options + if (pJPEG->iOptions & JPEG_SCALE_HALF) + iScaleShift = 1; + else if (pJPEG->iOptions & JPEG_SCALE_QUARTER) + { + iScaleShift = 2; + iMaxFill = 1; + } + else if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) + { + iScaleShift = 3; + iMaxFill = 1; + bThumbnail = 1; + } + + // reorder and fix the quantization table for decoding + JPEGFixQuantD(pJPEG); + pJPEG->bb.ulBits = MOTOLONG(&pJPEG->ucFileBuf[0]); // preload first 4/8 bytes + pJPEG->bb.pBuf = pJPEG->ucFileBuf; + pJPEG->bb.ulBitOff = 0; + + cDCTable0 = pJPEG->JPCI[0].dc_tbl_no; + cACTable0 = pJPEG->JPCI[0].ac_tbl_no; + cDCTable1 = pJPEG->JPCI[1].dc_tbl_no; + cACTable1 = pJPEG->JPCI[1].ac_tbl_no; + cDCTable2 = pJPEG->JPCI[2].dc_tbl_no; + cACTable2 = pJPEG->JPCI[2].ac_tbl_no; + iDCPred0 = iDCPred1 = iDCPred2 = mcuCX = mcuCY = 0; + + switch (pJPEG->ucSubSample) // set up the parameters for the different subsampling options + { + case 0x00: // fake value to handle grayscale + case 0x01: // fake value to handle sRGB/CMYK + case 0x11: + cx = (pJPEG->iWidth + 7) >> 3; // number of MCU blocks + cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 3; + iCr = MCU1; + iCb = MCU2; + mcuCX = mcuCY = 8; + break; + case 0x12: + cx = (pJPEG->iWidth + 7) >> 3; // number of MCU blocks + cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 4; + iCr = MCU2; + iCb = MCU3; + mcuCX = 8; + mcuCY = 16; + break; + case 0x21: + cx = (pJPEG->iWidth + 15) >> 4; // number of MCU blocks + cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 3; + iCr = MCU2; + iCb = MCU3; + mcuCX = 16; + mcuCY = 8; + break; + case 0x22: + cx = (pJPEG->iWidth + 15) >> 4; // number of MCU blocks + cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 4; + iCr = MCU4; + iCb = MCU5; + mcuCX = mcuCY = 16; + break; + default: // to suppress compiler warning + cx = cy = 0; + iCr = iCb = 0; + break; + } + // Scale down the MCUs by the requested amount + mcuCX >>= iScaleShift; + mcuCY >>= iScaleShift; + + iQuant1 = pJPEG->sQuantTable[pJPEG->JPCI[0].quant_tbl_no*DCTSIZE]; // DC quant values + iQuant2 = pJPEG->sQuantTable[pJPEG->JPCI[1].quant_tbl_no*DCTSIZE]; + iQuant3 = pJPEG->sQuantTable[pJPEG->JPCI[2].quant_tbl_no*DCTSIZE]; + // luminance values are always in these positions + iLum0 = MCU0; + iLum1 = MCU1; + iLum2 = MCU2; + iLum3 = MCU3; + iErr = 0; + pJPEG->iResCount = pJPEG->iResInterval; + // Calculate how many MCUs we can fit in the pixel buffer to maximize LCD drawing speed + iMCUCount = MAX_BUFFERED_PIXELS / (mcuCX * mcuCY); + if (pJPEG->ucPixelType == RGB8888) { + iMCUCount /= 2; // half as many will fit + } + if (pJPEG->ucPixelType == EIGHT_BIT_GRAYSCALE) + iMCUCount *= 2; // each pixel is only 1 byte + if (iMCUCount > cx) + iMCUCount = cx; // don't go wider than the image + if (iMCUCount > pJPEG->iMaxMCUs) // did the user set an upper bound on how many pixels per JPEGDraw callback? + iMCUCount = pJPEG->iMaxMCUs; + if (pJPEG->ucPixelType > EIGHT_BIT_GRAYSCALE) // dithered, override the max MCU count + iMCUCount = cx; // do the whole row + jd.iBpp = 16; + switch (pJPEG->ucPixelType) + { + case RGB8888: + jd.iBpp = 32; + break; + case EIGHT_BIT_GRAYSCALE: + jd.iBpp = 8; + break; + case FOUR_BIT_DITHERED: + jd.iBpp = 4; + break; + case TWO_BIT_DITHERED: + jd.iBpp = 2; + break; + case ONE_BIT_DITHERED: + jd.iBpp = 1; + break; + } + if (pJPEG->ucPixelType > EIGHT_BIT_GRAYSCALE) + jd.pPixels = (uint16_t *)pJPEG->pDitherBuffer; + else + jd.pPixels = pJPEG->usPixels; + jd.iHeight = mcuCY; + for (y = 0; y < cy && bContinue && iErr == 0; y++) + { + bSkipRow = (y*mcuCY < pJPEG->iCropY); + jd.x = pJPEG->iXOffset; + xoff = 0; // start of new LCD output group + if (pJPEG->pFramebuffer) { // user-supplied buffer is full width + int ty = (y * mcuCY) - pJPEG->iCropY; + iPitch = pJPEG->iCropCX; // size of cropped width + pJPEG->usPixels = (uint16_t *)pJPEG->pFramebuffer; + if (pJPEG->ucPixelType >= EIGHT_BIT_GRAYSCALE) { + pJPEG->usPixels += (ty * iPitch/2); // 1 byte per pixel + } else if (pJPEG->ucPixelType == RGB8888) { + pJPEG->usPixels += (ty * iPitch*2); // 4 bytes per pixel + } else { // 2 bytes per pixel + pJPEG->usPixels += (ty * iPitch); + } + } else { // use our internal buffer to do it a block at a time + iPitch = iMCUCount * mcuCX; // pixels per line of LCD buffer + } + for (x = 0; x < cx && bContinue && iErr == 0; x++) + { + iSkipMask = 0; // assume not skipping + if (bSkipRow || x*mcuCX < pJPEG->iCropX || x*mcuCX >= pJPEG->iCropX+pJPEG->iCropCX) { + iSkipMask = MCU_SKIP; + } + pJPEG->ucACTable = cACTable0; + pJPEG->ucDCTable = cDCTable0; + // do the first luminance component + iErr = JPEGDecodeMCU(pJPEG, iLum0 | iSkipMask, &iDCPred0); + if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time + { + pl = (uint32_t *)&pJPEG->sMCUs[iLum0]; + c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff]; + l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24); + // dct stores byte values + for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table + } + // do the second luminance component + if (pJPEG->ucSubSample > 0x11) // subsampling + { + iErr |= JPEGDecodeMCU(pJPEG, iLum1 | iSkipMask, &iDCPred0); + if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time + { + c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff]; + l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24); + // dct stores byte values + pl = (uint32_t *)&pJPEG->sMCUs[iLum1]; + for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table + } + if (pJPEG->ucSubSample == 0x22) + { + iErr |= JPEGDecodeMCU(pJPEG, iLum2 | iSkipMask, &iDCPred0); + if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time + { + c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff]; + l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24); + // dct stores byte values + pl = (uint32_t *)&pJPEG->sMCUs[iLum2]; + for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table + } + iErr |= JPEGDecodeMCU(pJPEG, iLum3 | iSkipMask, &iDCPred0); + if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time + { + c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff]; + l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24); + // dct stores byte values + pl = (uint32_t *)&pJPEG->sMCUs[iLum3]; + for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table + } + } // if 2:2 subsampling + } // if subsampling used + if (pJPEG->ucSubSample && pJPEG->ucNumComponents == 3) // if color (not CMYK) + { + // first chroma + pJPEG->ucACTable = cACTable1; + pJPEG->ucDCTable = cDCTable1; + if (pJPEG->ucPixelType >= EIGHT_BIT_GRAYSCALE) { + // We're not going to use the color channels, so avoid as much work as possible + iErr |= JPEGDecodeMCU(pJPEG, MCU_SKIP, &iDCPred1); // decode Cr block + iErr |= JPEGDecodeMCU(pJPEG, MCU_SKIP, &iDCPred2); // decode Cb block + } else { + iErr |= JPEGDecodeMCU(pJPEG, iCr | iSkipMask, &iDCPred1); + if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time + { + c = ucRangeTable[((iDCPred1 * iQuant2) >> 5) & 0x3ff]; + l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24); + // dct stores byte values + pl = (uint32_t *)&pJPEG->sMCUs[iCr]; + for (i = 0; iJPCI[1].quant_tbl_no); // second quantization table + } + // second chroma + pJPEG->ucACTable = cACTable2; + pJPEG->ucDCTable = cDCTable2; + iErr |= JPEGDecodeMCU(pJPEG, iCb | iSkipMask, &iDCPred2); + if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time + { + c = ucRangeTable[((iDCPred2 * iQuant3) >> 5) & 0x3ff]; + l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24); + // dct stores byte values + pl = (uint32_t *)&pJPEG->sMCUs[iCb]; + for (i = 0; iJPCI[2].quant_tbl_no); + } + } + } // if color components present + if (!iSkipMask) { // this MCU is not skipped + if (pJPEG->ucPixelType >= EIGHT_BIT_GRAYSCALE) { + JPEGPutMCU8BitGray(pJPEG, xoff, iPitch); // grayscale or color is being drawn as grayscale + } else { + switch (pJPEG->ucSubSample) { + case 0x00: // grayscale + JPEGPutMCUGray(pJPEG, xoff, iPitch); + break; + case 0x11: + JPEGPutMCU11(pJPEG, xoff, iPitch); + break; + case 0x12: + JPEGPutMCU12(pJPEG, xoff, iPitch); + break; + case 0x21: + JPEGPutMCU21(pJPEG, xoff, iPitch); + break; + case 0x22: + JPEGPutMCU22(pJPEG, xoff, iPitch); + break; + } // switch on color option + } // normal MCU drawing + xoff += mcuCX; + } // if not skipped + if (pJPEG->pFramebuffer == NULL && (xoff == iPitch || x == cx-1) && !bSkipRow) // time to draw + { + jd.iWidth = jd.iWidthUsed = iPitch; // width of each LCD block group + jd.pUser = pJPEG->pUser; + if (pJPEG->ucPixelType > EIGHT_BIT_GRAYSCALE) // dither to 4/2/1 bits + JPEGDither(pJPEG, cx * mcuCX, mcuCY); + if ((x+1)*mcuCX > pJPEG->iWidth) { // right edge has clipped pixels + jd.iWidthUsed = iPitch - (cx*mcuCX - pJPEG->iWidth); + } else if (jd.x + iPitch > pJPEG->iCropCX) { // not a full width + jd.iWidthUsed = pJPEG->iCropCX - jd.x; + } + jd.y = pJPEG->iYOffset + (y * mcuCY) - pJPEG->iCropY; + if ((jd.y - pJPEG->iYOffset + mcuCY) > (pJPEG->iHeight>>iScaleShift)) { // last row needs to be trimmed + jd.iHeight = (pJPEG->iHeight>>iScaleShift) - (jd.y - pJPEG->iYOffset); + } + bContinue = (*pJPEG->pfnDraw)(&jd); + jd.x += iPitch; + if ((cx - 1 - x) < iMCUCount) // change pitch for the last set of MCUs on this row + iPitch = (cx - 1 - x) * mcuCX; + xoff = 0; + } + if (pJPEG->iResInterval) + { + if (--pJPEG->iResCount == 0) + { + pJPEG->iResCount = pJPEG->iResInterval; + iDCPred0 = iDCPred1 = iDCPred2 = 0; // reset DC predictors + if (pJPEG->bb.ulBitOff & 7) // need to start at the next even byte + { + pJPEG->bb.ulBitOff += (8 - (pJPEG->bb.ulBitOff & 7)); // new restart interval starts on byte boundary + } + } // if restart interval needs to reset + } // if there is a restart interval + // See if we need to feed it more data + if (pJPEG->iVLCOff >= FILE_HIGHWATER) + JPEGGetMoreData(pJPEG); // need more 'filtered' VLC data + } // for x + } // for y + if (iErr != 0) + pJPEG->iError = JPEG_DECODE_ERROR; + return (iErr == 0); +} /* DecodeJPEG() */ diff --git a/lib/libesp32/JPEGDEC/src/my_cm4_simd.h b/lib/libesp32/JPEGDEC/src/my_cm4_simd.h new file mode 100644 index 000000000..a849c3c60 --- /dev/null +++ b/lib/libesp32/JPEGDEC/src/my_cm4_simd.h @@ -0,0 +1,57 @@ +// +// Adds Cortex-M4/M7 SIMD instruction intrinsics for M4/M7 targets missing +// this support in their board support packages (e.g. Teensyduino) +// +#ifndef __CM4_SIMD__ +#define __CM4_SIMD__ + +#define __SSAT16(ARG1, ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __asm volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + +#define __USAT16(ARG1, ARG2) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __asm volatile ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + +__attribute__((always_inline)) static inline uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __asm volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__((always_inline)) static inline uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __asm volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__((always_inline)) static inline uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __asm volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__((always_inline)) static inline uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __asm ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#endif + diff --git a/lib/libesp32/JPEGDEC/src/s3_simd_420.S b/lib/libesp32/JPEGDEC/src/s3_simd_420.S new file mode 100644 index 000000000..5f0ebf227 --- /dev/null +++ b/lib/libesp32/JPEGDEC/src/s3_simd_420.S @@ -0,0 +1,128 @@ +// +// ESP32-S3 SIMD optimized code +// Written by Larry Bank +// Copyright (c) 2024 BitBank Software, Inc. +// Project started Jan 21, 2024 +// +#ifdef ARDUINO_ARCH_ESP32 +#include "dsps_fft2r_platform.h" +#if (dsps_fft2r_sc16_aes3_enabled == 1) + .text + .align 4 + + .global s3_ycbcr_convert_420 + .type s3_ycbcr_convert_420,@function + +// Convert 16 pixels of YCbCr 4:2:0 to RGB565 +// A2 A3 A4 A5 A6 A7 +// Call as void s3_ycbcr_convert_420(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType); + s3_ycbcr_convert_420: +// supported pixel types: 0 = RGB656_LE, 1 = RGB565_BE, 2 = RGBA8888 + # no idea what this frequency keyword does +# .frequency 1.000 0.000 + .align 4 + entry a1,64 + movi.n a8,2 # iteration count + ee.vld.l.64.ip q0,a2,128 # load left 8 Y values into Q0 and point to right DCT block for next load + ee.vld.l.64.ip q1,a3,0 # load 8 Cb values into Q1 + ee.vld.l.64.ip q2,a4,0 # load 8 Cr values into Q2 + ee.movi.32.a q1,a3,1 # save upper 4 values of Cb for later + ee.movi.32.a q2,a4,1 # save upper 4 values of Cr for later +.convert_420_loop: + ee.vldbc.16.ip q3,a6,2 # get constant 0x80 as 16-bits in all 128 bits of q3 + ee.xorq q4,q4,q4 # load Q4 with 0's + ee.vzip.8 q0,q4 # expand 8-bit Y data to 16-bits + ee.xorq q4,q4,q4 # need to reset to 0's + ee.vzip.8 q1,q4 # expand 8-bit Cb data to 16-bits + ee.xorq q4,q4,q4 + ee.vzip.8 q2,q4 # expand 8-bit Cr data to 16-bits + mv.qr q5,q1 + ee.vzip.16 q1,q5 # duplicate Cb values since it's subsampled + mv.qr q5,q2 + ee.vzip.16 q2,q5 # duplicate Cr values + + ee.vsubs.s16 q1,q1,q3 # subtract 0x0080 from Cb's + ee.vsubs.s16 q2,q2,q3 # subtract 0x0080 from Cr's + ee.vldbc.16.ip q3,a6,2 # get constant 1.77200 as 16-bits in all 128 bits of q3 + movi.n a9,6 # load the shift register with 6 + wsr.sar a9 # put it in the SAR (shift amount register) + ee.vmul.s16 q6,q1,q3 # (Cb *= 1.77200) >> 6 + ee.vldbc.16.ip q3,a6,2 # get constant 1.402 as 16-bits in all 128 bits of q3 + ee.vadds.s16 q6,q6,q0 # Cb += y (8 blue pixels in q6) + ee.vmul.s16 q7,q2,q3 # (Cr *= 1.402) >> 6 + ee.vadds.s16 q7,q7,q0 # Cr += y (8 red pixels in q7) + ee.vldbc.16.ip q3,a6,2 # get constant 0.34414 as 16-bits in all 128 bits of q3 + movi.n a9,0 # load the shift register with 0 + wsr.sar a9 # put it in the SAR (shift amount register) + ee.vmul.s16 q4,q1,q3 # (Cb * 0.34414) >> 0 + ee.vldbc.16.ip q3,a6,2 # get constant 0.71414 as 16-bits in all 128 bits of q3 + ee.vmul.s16 q3,q2,q3 # (Cr * 0.71414) >> 0 + ee.vadds.s16 q3,q3,q4 # (Cb * 0.34414) + (Cr * 0.71414) + ee.vldbc.16.ip q4,a6,2 # get constant 1 (so we can do a 16-bit shift) + movi.n a9,6 # load the shift register with 6 + wsr.sar a9 # put it in the SAR (shift amount register) + ee.vmul.s16 q3,q3,q4 # shift right by 6 + ee.vsubs.s16 q3,q0,q3 # Y - ((Cb * 0.34414) + (Cr * 0.71414)) = green in Q3 +// saturate to 8 bits + ee.xorq q0,q0,q0 + ee.vmax.s16 q3,q3,q0 + ee.vmax.s16 q6,q6,q0 + ee.vmax.s16 q7,q7,q0 + ee.vcmp.eq.s16 q1,q1,q1 # create 255 + ee.vzip.8 q1,q0 + ee.vmin.s16 q3,q3,q1 # clamp to 255 + ee.vmin.s16 q6,q6,q1 + ee.vmin.s16 q7,q7,q1 + beqi a7,2,.rgba8888_output # 32-bit RGBA pixels + movi.n a9,3 # load the shift register with 3 (for blue and red) + wsr.sar a9 # put it in the SAR (shift amount register) + ee.vmul.s16 q6,q4,q6 # shift blue right by 3 + ee.vmul.s16 q7,q4,q7 # shift red right by 3 + movi.n a9,2 # load the shift register with 2 (for green) + wsr.sar a9 # put it in the SAR (shift amount register) + ee.vmul.s16 q3,q4,q3 # shift green right by 2 +// now combine to form RGB565 pixels + movi.n a9,0 + wsr.sar a9 # no shift after multiply + ee.vldbc.16.ip q4,a6,2 # get constant value 32 (to shift green left by 5 bits) + ee.vldbc.16.ip q5,a6,2 # get constant value 2048 (to shift red left by 11 bits) + ee.vmul.s16 q3,q4,q3 # shift green left by 5 + ee.vmul.s16 q7,q5,q7 # shift red left by 11 + ee.orq q6,q6,q3 # combine blue + green + ee.orq q6,q6,q7 # combine blue + green + red + mv.qr q5,q6 # in case we're generating little endian output + beqi a7,0,.rgb565_le # RGB565 little endian? + ee.vunzip.8 q6,q5 # swap the byte order to be big-endian + ee.vzip.8 q5,q6 +.rgb565_le: + ee.vst.128.ip q5,a5,16 # store 8 RGB565 pixels + addi.n a6,a6,-16 # restore pointer to start of 16-bit constants + ee.vld.l.64.ip q0,a2,0 # load right 8 Y values into Q0 + ee.movi.32.q q1,a3,0 # restore second 4 values of Cb + ee.movi.32.q q2,a4,0 # restore second 4 values of Cr + addi.n a8,a8,-1 + bnez.n a8,.convert_420_loop + + # return value of 0 + retw.n +.rgba8888_output: # generate RGBA 32-bit pixels + movi.n a9,8 # shift 8 bits + wsr.sar a9 + ee.vsl.32 q3,q3 # shift green over 8 bits + ee.orq q7,q7,q3 # combine red and green + ee.vcmp.eq.s16 q1,q1,q1 # create FFs + ee.xorq q2,q2,q2 # create 00s + ee.vzip.8 q2,q1 # create FF00 for Alpha + ee.orq q2,q2,q6 # combine blue + alpha + ee.vzip.16 q7,q2 # create RGB8888 pixels + ee.vst.128.ip q7,a5,16 # store 8 x RGB8888 pixels = 32 bytes + ee.vst.128.ip q2,a5,16 + addi.n a6,a6,-16 # restore pointer to start of 16-bit constants + ee.vld.l.64.ip q0,a2,0 # load right 8 Y values into Q0 + ee.movi.32.q q1,a3,0 # restore second 4 values of Cb + ee.movi.32.q q2,a4,0 # restore second 4 values of Cr + addi.n a8,a8,-1 + bnez.n a8,.convert_420_loop + retw.n +#endif // dsps_fft2r_sc16_aes3_enabled +#endif // ESP32 diff --git a/lib/libesp32/JPEGDEC/src/s3_simd_444.S b/lib/libesp32/JPEGDEC/src/s3_simd_444.S new file mode 100644 index 000000000..368a82c8f --- /dev/null +++ b/lib/libesp32/JPEGDEC/src/s3_simd_444.S @@ -0,0 +1,109 @@ +// +// ESP32-S3 SIMD optimized code +// Written by Larry Bank +// Copyright (c) 2024 BitBank Software, Inc. +// Project started Jan 21, 2024 +// +#ifdef ARDUINO_ARCH_ESP32 + +#include "dsps_fft2r_platform.h" +#if (dsps_fft2r_sc16_aes3_enabled == 1) + .text + .align 4 + +// Convert 8 pixels of YCbCr 4:4:4 to RGB565 +// A2 A3 A4 A5 A6 A7 +// Call as void s3_ycbcr_convert_444(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType); +// supported pixel types: 0 = RGB656_LE, 1 = RGB565_BE, 2 = RGBA8888 + .global s3_ycbcr_convert_444 + .type s3_ycbcr_convert_444,@function + +s3_ycbcr_convert_444: + # no idea what this frequency keyword does +# .frequency 1.000 0.000 + entry a1,16 + ee.xorq q4,q4,q4 # load Q4 with 0's + ee.vldbc.16.ip q3,a6,2 # get constant 0x80 as 16-bits in all 128 bits of q3 + ee.vld.l.64.ip q0,a2,0 # load 8 Y values into Q0 + ee.vld.l.64.ip q1,a3,0 # load 8 Cb values into Q1 + ee.vld.l.64.ip q2,a4,0 # load 8 Cr values into Q2 + ee.vzip.8 q0,q4 # expand 8-bit Y data to 16-bits + ee.xorq q4,q4,q4 # need to reset to 0's + ee.vzip.8 q1,q4 # expand 8-bit Cb data to 16-bits + ee.xorq q4,q4,q4 + ee.vzip.8 q2,q4 # expand 8-bit Cr data to 16-bits + + ee.vsubs.s16 q1,q1,q3 # subtract 0x0080 from Cb's + ee.vsubs.s16 q2,q2,q3 # subtract 0x0080 from Cr's + ee.vldbc.16.ip q3,a6,2 # get constant 1.77200 as 16-bits in all 128 bits of q3 + movi.n a2,6 # load the shift register with 6 + wsr.sar a2 # put it in the SAR (shift amount register) + ee.vmul.s16 q6,q1,q3 # (Cb *= 1.77200) >> 6 + ee.vadds.s16 q6,q6,q0 # Cb += y (8 blue pixels in q6) + ee.vldbc.16.ip q3,a6,2 # get constant 1.402 as 16-bits in all 128 bits of q3 + ee.vmul.s16 q7,q2,q3 # (Cr *= 1.402) >> 6 + ee.vadds.s16 q7,q7,q0 # Cr += y (8 red pixels in q7) + ee.vldbc.16.ip q3,a6,2 # get constant 0.34414 as 16-bits in all 128 bits of q3 + movi.n a2,0 # load the shift register with 0 + wsr.sar a2 # put it in the SAR (shift amount register) + ee.vmul.s16 q4,q1,q3 # (Cb * 0.34414) >> 0 + ee.vldbc.16.ip q3,a6,2 # get constant 0.71414 as 16-bits in all 128 bits of q3 + ee.vmul.s16 q3,q2,q3 # (Cr * 0.71414) >> 0 + ee.vadds.s16 q3,q3,q4 # (Cb * 0.34414) + (Cr * 0.71414) + ee.vldbc.16.ip q4,a6,2 # get constant 1 (so we can do a 16-bit shift) + movi.n a2,6 # load the shift register with 6 + wsr.sar a2 # put it in the SAR (shift amount register) + ee.vmul.s16 q3,q3,q4 # shift right by 6 + ee.vsubs.s16 q3,q0,q3 # Y - ((Cb * 0.34414) + (Cr * 0.71414)) = green in Q3 +// saturate to 8 bits + ee.xorq q0,q0,q0 + ee.vmax.s16 q3,q3,q0 + ee.vmax.s16 q6,q6,q0 + ee.vmax.s16 q7,q7,q0 + ee.vcmp.eq.s16 q1,q1,q1 # create 255 + ee.vzip.8 q1,q0 + ee.vmin.s16 q3,q3,q1 # clamp to 255 + ee.vmin.s16 q6,q6,q1 + ee.vmin.s16 q7,q7,q1 +// Now we have RGB888, is that the output pixel type? + beqi a7,2,.rgb8888_output +// either RGB565 LE or BE from here + movi.n a2,3 # load the shift register with 3 (for blue and red) + wsr.sar a2 # put it in the SAR (shift amount register) + ee.vmul.s16 q6,q4,q6 # shift blue right by 3 + ee.vmul.s16 q7,q4,q7 # shift red right by 3 + movi.n a2,2 # load the shift register with 2 (for green) + wsr.sar a2 # put it in the SAR (shift amount register) + ee.vmul.s16 q3,q4,q3 # shift green right by 2 +// now combine to form RGB565 pixels + movi.n a2,0 + wsr.sar a2 # no shift after multiply + ee.vldbc.16.ip q4,a6,2 # get constant value 32 (to shift green left by 5 bits) + ee.vldbc.16.ip q5,a6,2 # get constant value 2048 (to shift red left by 11 bits) + ee.vmul.s16 q3,q4,q3 # shift green left by 5 + ee.vmul.s16 q7,q5,q7 # shift red left by 11 + ee.orq q6,q6,q3 # combine blue + green + ee.orq q6,q6,q7 # combine blue + green + red + mv.qr q5,q6 # in case we're generating little endian output + beqi a7,0,.rgb565_exit # RGB565 little endian? + ee.vunzip.8 q6,q5 # swap the byte order to be big-endian + ee.vzip.8 q5,q6 +.rgb565_exit: + ee.vst.128.ip q5,a5,0 # store the 8 RGB565 pixels + retw.n +// Create RGBA (32-bit) pixels +.rgb8888_output: + movi.n a2,8 # shift 8 bits + wsr.sar a2 + ee.vsl.32 q3,q3 # shift green over 8 bits + ee.orq q7,q7,q3 # combine red and green + ee.vcmp.eq.s16 q1,q1,q1 # create FFs + ee.xorq q2,q2,q2 # create 00s + ee.vzip.8 q2,q1 # create FF00 for Alpha + ee.orq q2,q2,q6 # combine blue + alpha + ee.vzip.16 q7,q2 # create RGB8888 pixels + ee.vst.128.ip q7,a5,16 # store 8 x RGB8888 pixels = 32 bytes + ee.vst.128.ip q2,a5,0 + retw.n # done +#endif // dsps_fft2r_sc16_aes3_enabled +#endif // ESP32 diff --git a/lib/libesp32/JPEGDEC/src/s3_simd_dequant.S b/lib/libesp32/JPEGDEC/src/s3_simd_dequant.S new file mode 100644 index 000000000..1b30f9ed0 --- /dev/null +++ b/lib/libesp32/JPEGDEC/src/s3_simd_dequant.S @@ -0,0 +1,64 @@ +// +// ESP32-S3 SIMD optimized code +// Written by Larry Bank +// Copyright (c) 2024 BitBank Software, Inc. +// Project started Jan 21, 2024 +// +#ifdef ARDUINO_ARCH_ESP32 + +#include "dsps_fft2r_platform.h" +#if (dsps_fft2r_sc16_aes3_enabled == 1) + .text + .align 4 +// +// Inverse DCT dequantization for JPEG decompression +// A2 A3 +// Call as void s3_dequant(int16_t *pMCU, int16_t *pQuant); + .global s3_dequant + .type s3_dequant,@function + +s3_dequant: + # no idea what this frequency keyword does +# .frequency 1.000 0.000 + entry a1,16 + ee.vld.128.ip q0,a2,16 # load MCU rows 0-3 into Q0,Q1,Q2,Q3 + ee.vld.128.ip q4,a3,16 # load quantization values into Q4,Q5,Q6,Q7 + ee.vld.128.ip q1,a2,16 + ee.vld.128.ip q5,a3,16 + ee.vld.128.ip q2,a2,16 + ee.vld.128.ip q6,a3,16 + ee.vld.128.ip q3,a2,16 + ee.vld.128.ip q7,a3,16 + movi.n a4,0 # load the shift register with 0 + wsr.sar a2 # put it in the SAR (shift amount register) + ee.vmul.s16 q0,q0,q4 # de-quantize each row + ee.vmul.s16 q1,q1,q5 + ee.vmul.s16 q2,q2,q6 + ee.vmul.s16 q3,q3,q7 + addi.n a2,a2,64 # point to first row of MCUs to store dequantized values + ee.vst.128.ip q0,a2,16 # write back dequantized rows 0-3 + ee.vst.128.ip q1,a2,16 + ee.vst.128.ip q2,a2,16 + ee.vst.128.ip q3,a2,16 +// repeat for rows 4-7 + ee.vld.128.ip q0,a2,16 # load MCU rows 4-7 into Q0,Q1,Q2,Q3 + ee.vld.128.ip q4,a3,16 # load quantization values into Q4,Q5,Q6,Q7 + ee.vld.128.ip q1,a2,16 + ee.vld.128.ip q5,a3,16 + ee.vld.128.ip q2,a2,16 + ee.vld.128.ip q6,a3,16 + ee.vld.128.ip q3,a2,16 + ee.vld.128.ip q7,a3,16 + + ee.vmul.s16 q0,q0,q4 # de-quantize rows 4-7 + ee.vmul.s16 q1,q1,q5 + ee.vmul.s16 q2,q2,q6 + ee.vmul.s16 q3,q3,q7 + addi.n a2,a2,64 # point to 4th row of MCUs + ee.vst.128.ip q0,a2,16 # write back dequantized rows 4-7 + ee.vst.128.ip q1,a2,16 + ee.vst.128.ip q2,a2,16 + ee.vst.128.ip q3,a2,16 + retw.n # done +#endif // dsps_fft2r_sc16_aes3_enabled +#endif // ESP32 diff --git a/lib/libesp32/JPEGDEC/test_images/sciopero.h b/lib/libesp32/JPEGDEC/test_images/sciopero.h new file mode 100644 index 000000000..4b6cf5322 --- /dev/null +++ b/lib/libesp32/JPEGDEC/test_images/sciopero.h @@ -0,0 +1,2292 @@ +// +// sciopero +// +const uint8_t sciopero[] PROGMEM = { 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x00,0x00,0x01, + 0x00,0x01,0x00,0x00,0xff,0xfe,0x00,0x3b,0x43,0x52,0x45,0x41,0x54,0x4f,0x52,0x3a, + 0x20,0x67,0x64,0x2d,0x6a,0x70,0x65,0x67,0x20,0x76,0x31,0x2e,0x30,0x20,0x28,0x75, + 0x73,0x69,0x6e,0x67,0x20,0x49,0x4a,0x47,0x20,0x4a,0x50,0x45,0x47,0x20,0x76,0x36, + 0x32,0x29,0x2c,0x20,0x71,0x75,0x61,0x6c,0x69,0x74,0x79,0x20,0x3d,0x20,0x39,0x30, + 0x0a,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x03,0x03, + 0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x07,0x06,0x08, + 0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,0x0e,0x11,0x0e, + 0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,0x17,0x18,0x16, + 0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,0x04,0x05,0x04, + 0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, + 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,0x00,0x11,0x08, + 0x01,0x2c,0x01,0x2c,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4, + 0x00,0x1f,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff, + 0xc4,0x00,0xb5,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04, + 0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06, + 0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1, + 0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a, + 0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45, + 0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65, + 0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85, + 0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3, + 0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba, + 0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8, + 0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4, + 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xc4,0x00,0x1f,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,0xc4,0x00,0xb5,0x11,0x00,0x02,0x01,0x02, + 0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03, + 0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81, + 0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1, + 0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a, + 0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54, + 0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74, + 0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92, + 0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9, + 0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, + 0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5, + 0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda, + 0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xf4,0xbf,0x13,0xfe, + 0xd7,0x31,0xeb,0xd6,0xb6,0x36,0x77,0xfa,0x53,0x49,0x69,0x69,0x32,0x4b,0x1c,0x50, + 0xc9,0xe4,0x83,0xb4,0x8c,0x29,0x0a,0x31,0x8e,0x3f,0x53,0x5d,0xed,0x9f,0xfc,0x14, + 0x4b,0x4e,0xdb,0xb2,0xfb,0xc2,0xb3,0x20,0xe8,0x5e,0x0b,0xb0,0x48,0xfc,0x0a,0xff, + 0x00,0x5a,0xf8,0x1f,0x5a,0xd6,0x1a,0x1e,0x4b,0x6e,0x73,0xd0,0x67,0xa5,0x70,0x3e, + 0x2d,0xf1,0xb4,0xfa,0x52,0x2c,0x51,0xb6,0xf9,0x9b,0x9e,0x4f,0x4f,0xf3,0xcd,0x7c, + 0x75,0x1a,0xd5,0x9d,0x67,0x0a,0x3b,0xbf,0x4e,0x87,0xee,0x98,0xec,0x9b,0x27,0xc3, + 0x61,0x5d,0x7c,0x55,0x3b,0x42,0x3d,0x9b,0xeb,0xd9,0x27,0xd4,0xfd,0x49,0xd0,0xff, + 0x00,0x6e,0x3f,0x08,0x7f,0x67,0x5a,0x59,0x2b,0xdf,0xda,0x32,0xab,0x89,0x6e,0xaf, + 0xa2,0x12,0xb9,0x24,0x1d,0xb8,0xd8,0x71,0xd4,0x8e,0x48,0xed,0xd2,0xbd,0x03,0xc0, + 0xff,0x00,0xb4,0x3f,0xc3,0x7b,0xf9,0x6d,0x24,0x7f,0x17,0xdb,0x3d,0xd2,0xc0,0xca, + 0xd2,0xdf,0xb3,0x23,0x96,0x66,0xcb,0x0c,0xb0,0x00,0x0e,0x07,0x03,0x8a,0xfc,0x55, + 0x83,0xe2,0x4e,0xb7,0x6f,0x1a,0xc8,0x81,0x6e,0x10,0xfd,0xe0,0x70,0x31,0xec,0x07, + 0x7a,0xd5,0xb3,0xf8,0xc9,0x72,0x84,0x0b,0x8b,0x36,0x1e,0xea,0x6b,0xd3,0x50,0xc7, + 0x52,0x49,0x72,0xa6,0x97,0xf5,0xe4,0x7c,0x4b,0xa5,0xc3,0x78,0x8b,0xf2,0x55,0x9d, + 0x36,0xfb,0xab,0xfe,0x8f,0xf3,0x3f,0x75,0xee,0xfe,0x20,0x69,0x3e,0x20,0xd2,0xaf, + 0xa3,0xd0,0xb5,0x2b,0x1d,0x45,0xc4,0x0e,0x3c,0xc8,0xee,0x15,0x90,0x1d,0xa7,0xa0, + 0x07,0x2c,0x7d,0x87,0x1d,0xb2,0x2b,0xe2,0xcf,0xda,0x83,0x49,0x96,0xd6,0x6f,0x0f, + 0x41,0x7b,0x71,0x2c,0xda,0x91,0xba,0xb5,0x06,0x39,0x80,0x55,0x45,0xdf,0x3b,0x7c, + 0xb1,0x8e,0x3f,0x8f,0xa9,0xcb,0x73,0xc9,0xaf,0x87,0x6c,0x3e,0x35,0x45,0x16,0x1b, + 0x37,0x10,0x63,0xf8,0x95,0x88,0xc5,0x75,0x76,0x5f,0xb4,0x14,0xd2,0x98,0x41,0xd6, + 0xe7,0x90,0x46,0x43,0x22,0x5c,0xb7,0x98,0x14,0xfa,0x80,0xdd,0x2a,0x9e,0x2e,0xb4, + 0x75,0xa9,0x49,0xfc,0x82,0x3c,0x3f,0x80,0xab,0xfe,0xed,0x8e,0x8b,0xf2,0x7a,0x3f, + 0xcf,0xf4,0x3f,0x56,0xbe,0x22,0x5e,0xdc,0x5a,0x78,0x67,0x52,0x8e,0xc6,0x0b,0x76, + 0xbe,0x8e,0xc2,0x0d,0x92,0x5c,0x16,0x3b,0x98,0xcd,0x1e,0x01,0x39,0xe9,0xf3,0x1e, + 0x95,0xea,0x7e,0x1a,0x43,0x17,0x87,0x74,0xb4,0xfe,0xed,0xac,0x43,0xff,0x00,0x1c, + 0x15,0xf9,0x4d,0x63,0xfb,0x64,0xf8,0xaa,0xfa,0x03,0x0d,0xe6,0xb5,0x6b,0xab,0xc4, + 0xe1,0x54,0x8b,0xb8,0x50,0xb6,0x14,0x82,0x3e,0x60,0x01,0x1d,0x07,0x43,0x5e,0xe1, + 0xe1,0x4f,0xf8,0x28,0xae,0xb3,0x6d,0x6f,0x04,0x1a,0x87,0x87,0xb4,0xeb,0xd8,0xa3, + 0x50,0x80,0xda,0xca,0xd1,0xb6,0x00,0xc7,0x7d,0xc2,0xb3,0xa7,0x98,0x52,0x8d,0x4b, + 0xce,0xeb,0x4b,0x6c,0x45,0x6e,0x14,0xc7,0xaa,0x4b,0xd8,0xb8,0xcf,0x5b,0xe9,0x2f, + 0x4e,0xf6,0x3e,0xf9,0x62,0x76,0x9a,0xf9,0xe7,0xf6,0xae,0x9c,0xc3,0xf0,0xeb,0xe2, + 0x0c,0xa3,0x20,0x2f,0x87,0xe4,0x8b,0x8f,0xf6,0x83,0x0f,0xfd,0x9e,0xb9,0xbd,0x0f, + 0xfe,0x0a,0x0d,0xe0,0xeb,0xe0,0xab,0xa9,0xe8,0xda,0x9e,0x9e,0xc7,0xa9,0x88,0xa4, + 0xcb,0xfc,0xd4,0xfe,0x95,0x61,0x3e,0x3d,0x7c,0x39,0xf8,0x9a,0x6f,0x2d,0x2f,0xbc, + 0x41,0x61,0xa7,0xd9,0xde,0xfc,0xb3,0x43,0xa9,0x40,0xd2,0xb4,0x8b,0x9c,0x85,0x3b, + 0xd7,0x60,0x1c,0x74,0xc7,0xa7,0x26,0xba,0x6a,0xe3,0xa8,0x3b,0x72,0xca,0xef,0xfa, + 0xef,0x6f,0xc4,0xf1,0x27,0x91,0x66,0x54,0x2e,0xea,0x50,0x92,0x5d,0xed,0x7f,0xca, + 0xe5,0x5f,0x87,0x3a,0x96,0x9f,0xe1,0xff,0x00,0x82,0x7e,0x13,0x8a,0xe6,0xfa,0x15, + 0x9e,0xef,0x47,0xb1,0x86,0x1b,0x68,0xf2,0xef,0x92,0x90,0x92,0x5f,0x68,0x3b,0x06, + 0x33,0xcb,0x62,0xbd,0xe3,0xc1,0xb7,0xb7,0x76,0xbe,0x17,0xd2,0xf4,0xfb,0x4b,0x5f, + 0x36,0x4b,0x7b,0x74,0x8d,0xe6,0x6e,0x23,0xdc,0x17,0x9c,0x77,0x3c,0xfa,0xe2,0xb1, + 0xfc,0x37,0xa3,0xfc,0x39,0xd6,0xe0,0x88,0x58,0x5f,0x69,0x9a,0xcb,0x00,0xa0,0x14, + 0xbb,0x49,0x0f,0x1d,0x3e,0x50,0xde,0xc3,0xaf,0x6e,0x2b,0xd2,0x2d,0x92,0x28,0x62, + 0x48,0xe1,0x55,0x48,0xd0,0x05,0x55,0x51,0x80,0x07,0xa0,0x14,0xa9,0x53,0xad,0x56, + 0x7e,0xd1,0xc9,0x45,0x5a,0xda,0x6a,0xfe,0xfd,0x8f,0x32,0xab,0x50,0x8f,0xb3,0x69, + 0xde,0xf7,0xd7,0x43,0x1d,0xbc,0x3f,0x36,0xa4,0x3f,0xe2,0x65,0x70,0xd2,0xa1,0xff, + 0x00,0x96,0x29,0xc2,0x7e,0x23,0xbf,0xe3,0x9a,0xbd,0xa7,0x68,0x36,0x3a,0x4c,0x92, + 0xbd,0xa5,0xac,0x70,0x3c,0xb8,0xde,0xca,0x39,0x6c,0x74,0xc9,0xab,0xf9,0xaa,0xda, + 0x86,0xa9,0x69,0xa4,0xdb,0x3d,0xc5,0xf5,0xd4,0x36,0x76,0xe8,0x32,0xd2,0xcf,0x20, + 0x45,0x5f,0xa9,0x3c,0x57,0x74,0x30,0xf4,0xa9,0xbe,0x7b,0x5d,0xf7,0x7a,0xbf,0xbc, + 0xe5,0xe6,0x93,0xd0,0xb3,0x93,0x46,0x71,0x5e,0x3f,0xe2,0xcf,0xda,0x77,0xc2,0xda, + 0x29,0x68,0x74,0x64,0xb8,0xf1,0x35,0xe6,0x70,0x05,0x90,0xdb,0x06,0x7b,0x66,0x66, + 0xf9,0x48,0xf7,0x4d,0xd5,0xc3,0x6b,0x5f,0x12,0x3c,0x71,0xe2,0x0d,0x2f,0xed,0x9a, + 0xd6,0xb9,0xa7,0x7c,0x3c,0xd2,0x1c,0x90,0x01,0xfd,0xdc,0xee,0xbe,0xcd,0x20,0xdc, + 0xdf,0x54,0x55,0x3c,0x56,0x15,0x71,0xf4,0x29,0x69,0x7b,0xbf,0x23,0x58,0xd0,0x9c, + 0xb5,0xb5,0xbd,0x4f,0x46,0xf8,0xa5,0xf1,0x87,0xc2,0x9a,0x5d,0xae,0xbd,0xe1,0x7b, + 0xad,0x5e,0x2b,0x7d,0x59,0xec,0x64,0x8d,0x83,0xa9,0xf2,0xe3,0x79,0x23,0x6d,0x8a, + 0xcd,0xd0,0x31,0xea,0x17,0xa9,0xaf,0x39,0xf0,0x67,0xc7,0xdf,0xec,0x0f,0x05,0xe8, + 0xde,0x1f,0xf0,0xe7,0x87,0xee,0xbc,0x41,0xab,0x41,0x6c,0x91,0xc9,0x3b,0xa9,0x82, + 0x02,0xe0,0x60,0x95,0x1b,0x4c,0x8c,0x07,0xfb,0x80,0x71,0xd6,0xbe,0x6d,0x83,0xe2, + 0x97,0x86,0xf4,0x5f,0x1a,0x78,0x8e,0x39,0x6d,0xef,0x3c,0x47,0xa9,0xcd,0xa8,0x86, + 0x81,0xae,0x65,0x78,0xad,0xef,0xad,0xd6,0x05,0x54,0x76,0x66,0x06,0x43,0x26,0xfd, + 0xcd,0xd3,0x3d,0x79,0xe4,0xd6,0xb5,0xc7,0xc6,0x1f,0x16,0xeb,0xf1,0x7d,0x8f,0x4c, + 0x96,0xdb,0xc3,0x76,0xd3,0x9c,0x0b,0x1d,0x02,0x1d,0x92,0xc9,0x9e,0xdb,0xd4,0x97, + 0x63,0xff,0x00,0x03,0x07,0xda,0xbc,0x1c,0x46,0x63,0x53,0x9f,0x9a,0x3a,0x69,0xa7, + 0x5d,0xff,0x00,0x03,0xd2,0x86,0x11,0x72,0xd9,0xff,0x00,0x97,0xfc,0x13,0xd9,0x7c, + 0x61,0xe2,0x6f,0x16,0xdf,0xc2,0x27,0xf1,0xbf,0x8d,0xad,0x7c,0x1b,0x62,0xdc,0x8d, + 0x32,0xce,0x43,0x04,0xae,0xbe,0xc8,0x85,0xa6,0x6e,0x3b,0x16,0xc7,0xb5,0x79,0xb4, + 0x9f,0x12,0xfc,0x11,0xe1,0x73,0x22,0x78,0x5f,0xc3,0x57,0x3e,0x23,0xbe,0x27,0x73, + 0x5e,0x6a,0xdf,0xba,0x87,0x77,0x73,0xe5,0xae,0x59,0xbf,0xe0,0x64,0x53,0x3c,0x2b, + 0xfb,0x35,0x78,0xd7,0xc5,0xd2,0x7d,0xaa,0x5d,0x28,0xe9,0xf1,0xca,0x77,0x3d,0xde, + 0xb9,0x21,0x8d,0x9b,0xdf,0xcb,0xc1,0x72,0x7f,0xdf,0x5f,0xc6,0xbd,0x9f,0xc2,0x5f, + 0xb1,0xfe,0x8b,0x6d,0x12,0xcb,0xe2,0x0d,0x5a,0xeb,0x54,0x91,0x46,0x45,0xb5,0xa7, + 0xfa,0x34,0x03,0xaf,0xa6,0x5b,0xf2,0x2b,0xf4,0xae,0x07,0xed,0xf1,0x12,0xd7,0xf1, + 0xfe,0xbf,0x43,0x47,0x2a,0x14,0x55,0xaf,0xf7,0x7f,0x5f,0xa9,0xf3,0xc6,0xbf,0xf1, + 0x27,0xc6,0xbe,0x3b,0x65,0xb0,0xba,0xd5,0xa5,0x82,0xde,0x51,0xb5,0x34,0xad,0x1a, + 0x2f,0x2d,0x58,0x7a,0x6c,0x8f,0x96,0xfc,0x59,0xbe,0x95,0xbf,0xe1,0x6f,0xd9,0x8b, + 0xc6,0x1a,0xcd,0xb4,0x77,0x2d,0xa5,0x43,0xa4,0x59,0xb9,0x05,0x65,0xd5,0x1c,0x6f, + 0x7c,0x9e,0x08,0x89,0x41,0x3d,0xff,0x00,0x89,0x57,0xeb,0x5f,0x67,0xf8,0x7b,0xc1, + 0x1a,0x0f,0x83,0x34,0xc7,0x8b,0x45,0xd2,0x6d,0x34,0xd5,0x68,0xf0,0xc6,0x08,0x80, + 0x79,0x0e,0x3a,0xb3,0x75,0x63,0xee,0x49,0xad,0x2d,0x46,0xea,0xda,0xd1,0xad,0x96, + 0xe2,0x68,0xe0,0x89,0x49,0x72,0x64,0x60,0xa3,0x00,0x71,0xc9,0xf7,0x22,0xb4,0xfa, + 0xa6,0x8e,0x53,0x7a,0xe9,0xf8,0x9c,0xff,0x00,0x5c,0x6b,0x4a,0x71,0xb2,0x3c,0x67, + 0xc2,0x5f,0xb2,0x1f,0x86,0xf4,0xe3,0x1c,0xda,0xf5,0xfd,0xe7,0x88,0x2e,0x17,0x92, + 0x81,0x8d,0xbc,0x03,0xe8,0xaa,0x4b,0xfe,0x05,0xf1,0xed,0x5e,0xb3,0xa1,0xf8,0x0f, + 0xc3,0xbe,0x1d,0x8d,0xa0,0xd3,0x34,0x3b,0x0b,0x18,0x40,0x03,0x6c,0x16,0xea,0xb9, + 0xeb,0xc9,0x38,0xe4,0xf3,0xd4,0xd5,0xa4,0xf1,0x00,0x9b,0x8b,0x1b,0x3b,0x9b,0xc2, + 0x7a,0x3e,0xcf,0x2d,0x3e,0xbb,0x9b,0x19,0x1f,0xee,0xe6,0x9d,0xf6,0x3d,0x56,0xe8, + 0x13,0x2d,0xcc,0x5a,0x78,0x27,0xe6,0x5b,0x65,0xf3,0x5b,0x1c,0x63,0x0e,0xc0,0x01, + 0xdf,0xf8,0x4d,0x7b,0x54,0xe9,0x53,0x51,0x8f,0xb2,0x85,0xfb,0xfd,0xdd,0xd9,0xc1, + 0x3a,0x95,0x27,0xf1,0xc8,0x92,0xe7,0x4c,0xb2,0x86,0x09,0x02,0xaf,0xd9,0xd7,0x6f, + 0x3e,0x54,0x8d,0x18,0xff,0x00,0xc7,0x48,0xac,0xa7,0xd7,0x2c,0xd1,0xd6,0x2d,0x3e, + 0xea,0xee,0xf6,0x46,0x38,0x09,0x69,0x89,0x54,0xfa,0x8d,0xec,0x0a,0x83,0xf5,0x61, + 0x5a,0x16,0xde,0x1e,0xb3,0x3e,0x5c,0xd3,0xab,0xde,0xcc,0xa7,0x76,0xfb,0xb7,0x32, + 0x61,0xba,0xe5,0x41,0xe1,0x4f,0xd0,0x0a,0xe2,0x3e,0x3f,0xb4,0x89,0xe0,0x70,0x21, + 0x59,0xb7,0x99,0x90,0x0f,0xb3,0x2c,0x85,0xfe,0xf0,0x18,0x02,0x37,0x47,0xe9,0x91, + 0xf2,0x92,0x7d,0x8f,0x4a,0xd7,0x92,0x52,0xf7,0x95,0x95,0xed,0xb7,0xf5,0xfa,0x19, + 0xe9,0xb1,0xab,0xa8,0xeb,0x9a,0x8d,0xa4,0x37,0x0e,0xfa,0x8e,0x9f,0x6a,0x90,0xc4, + 0xf7,0x06,0x0b,0x92,0xb2,0xdc,0x15,0x41,0xb9,0xb8,0x46,0x55,0x5e,0x9d,0x72,0x71, + 0x9a,0xf8,0xaf,0xe3,0x5f,0xed,0xd7,0x75,0xf0,0xf3,0xc4,0x33,0x69,0xb0,0x69,0x77, + 0x5e,0x23,0xb9,0x8d,0xc2,0xdb,0x5e,0x9b,0xb0,0xb6,0xae,0x76,0xe4,0x8f,0x26,0x3c, + 0x09,0x14,0x67,0x01,0x8b,0x03,0xc5,0x7a,0x4f,0xc3,0xc4,0x82,0x6d,0x43,0xc4,0xa8, + 0xf1,0x46,0xb7,0x0b,0xa0,0xde,0x87,0x2c,0xd1,0xf9,0xe0,0x14,0xc6,0x18,0xb0,0x8e, + 0x61,0xd7,0xfe,0x5a,0x46,0xdf,0xef,0x7a,0xfc,0x7d,0xe2,0x0f,0x0a,0xe9,0xed,0xe3, + 0x8f,0x06,0x58,0xea,0x71,0xb3,0x58,0x9b,0xa7,0x49,0x8a,0x0f,0x9b,0x60,0xc0,0x38, + 0x18,0x1e,0xb5,0xbd,0x2c,0x2d,0x37,0x2f,0x7a,0xee,0xdd,0xc6,0xe5,0x65,0x71,0x35, + 0x2f,0xda,0x27,0xe2,0xe7,0xc4,0x85,0xf2,0xb4,0x99,0xd3,0xc3,0x96,0x43,0x88,0xe1, + 0xd3,0xe2,0x30,0x98,0xc1,0xea,0x15,0x94,0xef,0xc7,0xb1,0x72,0x2b,0xe8,0x4f,0xd9, + 0xfb,0x47,0xd5,0x7c,0x33,0xf0,0x63,0x77,0x89,0x1a,0xe6,0xea,0xee,0xe3,0x5e,0xb9, + 0xba,0x92,0x7b,0x8b,0x70,0x40,0x1e,0x45,0xb8,0x1c,0x98,0xca,0x8e,0x73,0xcb,0x3a, + 0x1f,0x46,0xcd,0x7d,0x43,0xf0,0xe7,0xf6,0x76,0xf0,0x47,0x86,0x74,0xdb,0x69,0x2c, + 0xf4,0x88,0xe7,0x0c,0x81,0xd6,0x49,0xfe,0x62,0x41,0x19,0x07,0x1c,0x55,0x5f,0x8e, + 0x76,0x76,0x9a,0x3c,0x9e,0x1b,0xb7,0xb3,0x8a,0x3b,0x46,0x5f,0xb4,0x18,0xd6,0x00, + 0xb1,0xb6,0x7f,0x76,0x0e,0xdd,0xae,0x8f,0x9f,0xf7,0x1b,0x27,0xba,0xb7,0x6d,0x77, + 0x4e,0xca,0xc8,0x9b,0xf6,0x3c,0xf7,0xc6,0x93,0xda,0x4f,0xf0,0x85,0xd2,0xee,0xd6, + 0x4b,0xe9,0x1f,0x53,0x69,0x22,0x49,0x16,0x42,0x54,0xac,0x1f,0x2c,0x83,0x79,0x1c, + 0x2f,0x27,0x21,0xe4,0x51,0xea,0x7a,0x0f,0x79,0xf0,0x9d,0xee,0xad,0x73,0xe1,0xdd, + 0x2e,0x3b,0x2b,0x38,0x2d,0xa2,0x16,0xf1,0x93,0x2d,0xec,0xbf,0x30,0xca,0x83,0x8f, + 0x2d,0x73,0xc8,0x27,0x04,0x12,0x3a,0x57,0x89,0xea,0xd6,0xf3,0x2f,0xc2,0xf1,0x0a, + 0xdb,0x2c,0x51,0xc9,0x7c,0xd2,0x33,0x84,0xc3,0x31,0x2f,0x0a,0x1d,0xc3,0xc9,0x53, + 0x9e,0x47,0x2c,0x14,0xf3,0xf7,0x8f,0x19,0xfa,0x71,0x6c,0xe0,0x92,0x30,0x65,0x89, + 0x1c,0x81,0x8c,0xb2,0x8a,0xe2,0x8d,0x2f,0x6b,0x88,0x72,0x4d,0xab,0x2f,0xcf,0xfe, + 0x18,0xd9,0xca,0xd4,0xd2,0x31,0x4f,0x87,0xaf,0x2f,0x1d,0x57,0x50,0xd5,0xee,0x25, + 0x42,0x09,0x31,0x59,0xff,0x00,0xa3,0xa7,0xe6,0x32,0xff,0x00,0xf8,0xf5,0x68,0xdb, + 0x68,0x7a,0x7e,0x9d,0x2b,0x5c,0x45,0x69,0x0c,0x53,0x95,0x01,0xae,0x36,0x8f,0x31, + 0x80,0x18,0xe5,0xba,0x9e,0x07,0x73,0x55,0xef,0xae,0x74,0x9d,0x25,0x84,0xb7,0x17, + 0x11,0xda,0x46,0xa3,0x04,0xf9,0xa5,0x06,0x49,0x18,0x18,0x07,0xad,0x51,0x3a,0xf7, + 0xdb,0xbe,0x5d,0x36,0xc7,0x54,0xb9,0x8d,0xb8,0x32,0xb4,0x5e,0x5a,0x01,0xeb,0x99, + 0xb0,0x48,0xff,0x00,0x77,0x35,0xb4,0x5d,0x2a,0x6d,0xf7,0x5f,0x37,0xb7,0xde,0x65, + 0xef,0x31,0xda,0xe4,0xab,0x25,0xed,0xa5,0xcc,0x6e,0xaf,0x12,0x5b,0xca,0xdb,0x94, + 0x8c,0x10,0x50,0x90,0x41,0xff,0x00,0x80,0xd7,0xcb,0xb6,0x17,0x32,0xdd,0x49,0x13, + 0x3b,0x67,0x62,0x90,0x14,0x90,0x46,0x49,0x24,0x1f,0x5e,0xb8,0xf5,0xe8,0x2b,0xdc, + 0x6f,0xec,0x7c,0x41,0xa7,0x78,0x7a,0xf2,0x0b,0x61,0xa5,0x68,0xcb,0x05,0xa0,0x10, + 0x5b,0xcb,0xbe,0x75,0xb6,0x8b,0x64,0xb9,0x2d,0xb4,0x28,0xc8,0xe8,0x15,0x41,0x03, + 0x1d,0x48,0xaf,0x00,0xb7,0xb5,0xf1,0x3d,0xa7,0x98,0x20,0xd5,0x34,0x1b,0xa8,0x99, + 0xb0,0x64,0xf3,0x1a,0x2d,0xc7,0xdb,0x2a,0x4f,0xe5,0x5e,0x1e,0x26,0x4e,0x72,0x72, + 0x92,0xb3,0x3d,0x2c,0x3e,0x89,0xd8,0xdf,0x9e,0x36,0x80,0x47,0x13,0xdc,0xbb,0x1b, + 0x87,0x23,0x01,0x48,0xe3,0x77,0x50,0x01,0xcf,0x6c,0xf3,0x8f,0xd2,0xbc,0x0b,0xe3, + 0xfc,0x30,0x1f,0x8b,0x5e,0x20,0x53,0xb8,0xec,0x9c,0xa8,0xe0,0xf4,0xce,0x71,0xf7, + 0x87,0xad,0x7a,0xda,0x6b,0xba,0xe2,0xf8,0xd7,0x47,0xd3,0xce,0x9b,0x63,0x70,0x92, + 0xcf,0x6b,0x0c,0x97,0x4b,0x30,0x68,0xce,0xf9,0x30,0xc8,0x98,0x5e,0x76,0xa8,0x07, + 0x9c,0x75,0xaf,0x1d,0xf8,0xba,0xd3,0xdc,0x7c,0x4b,0xf1,0x13,0x8b,0x96,0x00,0xdd, + 0xb9,0xc1,0x63,0xc6,0x79,0xc7,0xb0,0xe6,0xbd,0x2c,0xa1,0x59,0xcd,0xfa,0x19,0xe3, + 0x1a,0x56,0x47,0xcb,0x1a,0x84,0xc6,0xe2,0xf1,0xc9,0x39,0x55,0xed,0xec,0x2b,0xca, + 0xbc,0x7f,0x39,0x97,0x56,0x65,0x1d,0x48,0x09,0xef,0xd3,0x3f,0xd6,0xbd,0x26,0x49, + 0x81,0x46,0xc7,0x56,0x3d,0x6b,0xc9,0x7c,0x69,0x31,0x6d,0x66,0xe0,0xa9,0xe4,0x31, + 0x07,0xd8,0x01,0x8f,0xe9,0x5c,0x39,0x32,0xe6,0xc4,0x4a,0x4f,0xb7,0xea,0x8f,0xd7, + 0x78,0xda,0xa7,0x26,0x5d,0x0a,0x6b,0xac,0x97,0xe0,0x99,0xa5,0xa1,0xba,0xbd,0xb9, + 0x11,0x2b,0xcb,0xb4,0xe3,0x08,0x09,0x03,0xd6,0xb4,0xd7,0xcb,0x62,0x49,0x51,0xbb, + 0xfb,0x84,0x64,0xd7,0x37,0xe1,0xfb,0xb4,0x8e,0xc8,0xa9,0x98,0xe3,0x71,0xe1,0x48, + 0x02,0xba,0x5d,0x2a,0x48,0xae,0x9b,0x72,0x92,0xe0,0x00,0x18,0xe0,0x9c,0x0f,0xc6, + 0xbe,0xb2,0x6a,0xc7,0xe2,0x71,0xd5,0xd8,0xaf,0x7b,0x6d,0x0b,0xba,0xc4,0xd1,0xa9, + 0x1c,0x12,0x10,0x64,0xf3,0x50,0x9d,0x1e,0xd8,0xee,0x66,0x0d,0x16,0x38,0x03,0x77, + 0x39,0xa8,0x6e,0xef,0xe4,0x96,0x47,0x21,0x80,0x0b,0xd0,0x01,0x9e,0x3f,0x95,0x58, + 0x82,0x6c,0x58,0xce,0xf2,0xb6,0x5d,0xd0,0x94,0x19,0xc7,0x3f,0x41,0xf8,0xd0,0xd3, + 0x48,0x69,0xa7,0x21,0x91,0x78,0x66,0xe1,0x63,0x4b,0x9b,0x75,0xb9,0x16,0xec,0xdb, + 0x7c,0xe0,0x87,0x66,0x7e,0xb5,0x62,0x6b,0x5d,0x6a,0xc6,0x50,0xd6,0xf7,0x8c,0xb1, + 0xe3,0xe5,0x1b,0xb0,0xdc,0x0e,0xb8,0xae,0xdf,0xe1,0x9e,0xb1,0x75,0x69,0x69,0x79, + 0x6f,0xb9,0x45,0xbc,0x56,0xaf,0x38,0x18,0x48,0xce,0xe0,0xc3,0x19,0x62,0x37,0x11, + 0xc9,0xe0,0x1c,0x9e,0x2b,0x17,0x51,0xbc,0x6f,0x17,0x78,0xb4,0x5c,0x4d,0x2c,0x56, + 0xf2,0x5c,0xc9,0x1c,0x2c,0xa0,0x12,0x00,0x00,0x2e,0xe2,0x58,0xfb,0x67,0xad,0x79, + 0x8b,0x11,0x39,0x56,0x9d,0x3a,0x91,0x5c,0xb1,0xeb,0xbf,0xe0,0x7b,0x8e,0x84,0x69, + 0x61,0xe9,0x55,0xc3,0xd4,0x6a,0x73,0x7b,0x6d,0xf8,0xaf,0x33,0x37,0x4a,0xf1,0x77, + 0x89,0x62,0x99,0xe3,0x6b,0xe5,0xf2,0xd6,0x32,0xfb,0xa4,0xe7,0x76,0x3b,0x0f,0x73, + 0x5d,0x1d,0xa7,0x8f,0x75,0xc8,0x6d,0xcc,0xb3,0x45,0x1c,0x81,0x62,0xf3,0x8f,0xae, + 0x3d,0x3e,0xb5,0xbf,0x1e,0x83,0xe1,0xcb,0xc6,0x5d,0x31,0x57,0x6d,0xd2,0x82,0xaf, + 0x75,0x11,0x67,0x32,0x36,0xe3,0xc6,0x49,0x55,0x24,0x0c,0x1c,0x01,0x82,0x3b,0xd7, + 0x9d,0xea,0xed,0xf6,0x09,0x6f,0xec,0x4c,0x21,0x64,0x8e,0x5d,0x84,0x06,0xde,0x01, + 0x53,0x8c,0x64,0x70,0x47,0x04,0x57,0x3d,0x1f,0xab,0x63,0x1b,0x4a,0x9d,0x9e,0xfb, + 0x5b,0x4e,0xe7,0xa5,0x5b,0x1b,0x9a,0xe5,0xb1,0x4f,0xeb,0x2e,0x4b,0x6d,0xef,0x67, + 0xd9,0xde,0xe7,0x67,0xa4,0x7c,0x71,0x60,0xe0,0x1b,0x79,0xe2,0x65,0x20,0x16,0x8d, + 0xba,0x57,0xa6,0x78,0x5f,0xf6,0xb6,0xd7,0xfc,0x3d,0xb4,0x58,0x78,0xab,0x54,0xb0, + 0x55,0x00,0xec,0x17,0x4f,0xb7,0x1f,0x4c,0xe2,0xbc,0x67,0x43,0x92,0x15,0xf0,0x84, + 0xc0,0x58,0xbb,0xde,0x4b,0x72,0x48,0x95,0x10,0x6d,0x64,0x0a,0x06,0xdc,0xfd,0x49, + 0xe0,0x57,0x45,0xe3,0x3f,0x84,0x93,0xf8,0x6b,0x47,0xb6,0xbc,0xb8,0xd3,0x91,0x92, + 0x48,0xd0,0xba,0xa3,0x02,0xd1,0xb3,0x05,0xc6,0xe1,0xd7,0x39,0xcd,0x63,0x57,0x0d, + 0x84,0xa7,0x55,0x42,0xee,0x2d,0xed,0xae,0xff,0x00,0x79,0xd5,0x4b,0x88,0x73,0x4a, + 0xb4,0xdc,0xaa,0x42,0x35,0x62,0xb7,0xbc,0x7f,0xca,0xc7,0xd4,0x5e,0x1a,0xff,0x00, + 0x82,0x82,0xf8,0xde,0xd2,0x30,0x8d,0xaf,0xda,0xea,0x2b,0x8c,0x01,0x75,0x02,0x16, + 0x1f,0x88,0x00,0xfe,0x75,0x6e,0xc7,0xf6,0xa5,0xb6,0xf1,0x06,0xb7,0x0e,0xa3,0xe3, + 0x0b,0x4b,0x9f,0x12,0x94,0x25,0x96,0x37,0xd4,0x36,0xa2,0x13,0xfd,0xc4,0x2a,0x55, + 0x7f,0xe0,0x20,0x57,0xc4,0x5a,0x56,0x9d,0x69,0x69,0x7d,0x29,0x7b,0x47,0x9c,0x94, + 0x3b,0x23,0x61,0xb4,0xab,0x9c,0x72,0x07,0x3d,0x2b,0x62,0xf3,0xc3,0x1a,0xed,0xa4, + 0x16,0xf3,0x41,0x14,0x89,0x1d,0xc2,0xef,0x88,0x7f,0x11,0x1c,0x72,0x70,0x7d,0xea, + 0x6a,0xe0,0xa7,0x25,0xcb,0xed,0x9d,0xbc,0xff,0x00,0xe1,0xca,0xa5,0x9c,0x60,0x2a, + 0x26,0xeb,0xe0,0x63,0x7e,0xf1,0xbc,0x7f,0x4f,0xd4,0xfb,0x83,0x54,0xfd,0xa5,0x46, + 0xa6,0x4c,0x3e,0x1f,0x96,0xcf,0xc1,0xd6,0xa7,0x8d,0xf6,0xf6,0x59,0xb8,0xc7,0xbc, + 0xdf,0x33,0x7f,0xdf,0x3b,0x2b,0x2f,0xc2,0xda,0x45,0xb7,0x8f,0xb5,0xb6,0xf3,0x7c, + 0x4f,0xa5,0x2c,0xf2,0x60,0xbd,0xfe,0xb9,0xa8,0x94,0xdd,0x9f,0x4c,0xe5,0x89,0xf6, + 0x6c,0x8f,0x7a,0xf9,0x23,0x48,0xf0,0x9f,0x8c,0x67,0xb5,0x92,0xe0,0xcd,0x15,0xba, + 0x23,0x05,0x08,0xc4,0xb1,0x6c,0x81,0xd3,0xf3,0xf5,0xa7,0xdb,0xea,0x7e,0x26,0xd3, + 0x42,0x9b,0xa4,0xb6,0x75,0xe3,0x04,0x4c,0x01,0xeb,0x8e,0x9c,0xd7,0x9b,0x3c,0xba, + 0xad,0xf7,0x52,0xf9,0xff,0x00,0xc3,0x1d,0x8a,0xb6,0x45,0x5a,0x3e,0xea,0x9d,0x26, + 0xfa,0xd9,0x49,0x7e,0xac,0xfb,0xdb,0xe2,0xcf,0xec,0xd3,0xa1,0x78,0x67,0xe1,0x25, + 0xdf,0x89,0x3f,0xb7,0xd3,0x5f,0xd4,0xec,0xe5,0x81,0xed,0x7e,0xc4,0x12,0x1b,0x64, + 0x73,0x2a,0x0e,0xc4,0x9e,0x84,0x82,0x77,0x01,0xdf,0x1c,0x57,0xd2,0xbf,0x01,0x3c, + 0x25,0x0e,0x87,0xe0,0x3b,0x7b,0xc9,0xb4,0x7b,0x2d,0x2e,0xfb,0x50,0x61,0x3b,0x0b, + 0x58,0x55,0x3e,0x52,0xab,0xb7,0x9e,0x49,0x18,0x19,0xe4,0x9e,0xb9,0xef,0x5f,0x92, + 0x1a,0x5f,0xc4,0xfd,0x5b,0x4c,0x02,0x44,0x7b,0x8b,0x71,0xc0,0x2f,0x0c,0xa4,0x03, + 0xdf,0x1d,0x45,0x7a,0x8f,0x87,0x7f,0x6d,0x2f,0x1d,0xf8,0x6a,0x14,0xb3,0x1e,0x26, + 0xbc,0x10,0xaa,0x6d,0x58,0x6e,0xd8,0x48,0x02,0xf2,0x30,0x0b,0x0c,0x81,0xc1,0xe8, + 0x46,0x31,0x4e,0x31,0xa9,0x45,0x35,0x2a,0x4f,0xf3,0x39,0x67,0x93,0x61,0xf1,0x51, + 0xb6,0x1b,0x1b,0x09,0x3f,0xef,0x7b,0xa7,0xeb,0x1d,0xe6,0xa7,0x69,0xa7,0x26,0x27, + 0x9a,0x24,0x66,0xfb,0xab,0x90,0x19,0x8f,0xa0,0x1d,0x4f,0xe1,0x5c,0x4f,0x8d,0x3e, + 0x31,0xe8,0x5e,0x02,0xb1,0x37,0x1a,0xac,0xf1,0x58,0xa3,0x31,0x50,0xf7,0xd2,0xfd, + 0x9d,0x15,0xb6,0x83,0xb4,0x96,0x19,0x04,0xe7,0x20,0x11,0xcf,0x35,0xf0,0xc6,0x91, + 0xfb,0x79,0xeb,0x86,0x13,0x1b,0xc3,0x67,0x6e,0xd2,0x05,0x59,0x6e,0xb4,0xe0,0x22, + 0x9d,0xc0,0x39,0x27,0x73,0x07,0x19,0xf7,0xc5,0x72,0x7f,0x18,0xfe,0x2b,0xd9,0x7c, + 0x71,0x37,0xa2,0x6d,0x52,0xe2,0xce,0x09,0xed,0x22,0x8a,0x2b,0x1b,0xc6,0xf3,0xa2, + 0x49,0xd2,0x3d,0x86,0x62,0xeb,0xc9,0x2d,0xdc,0xec,0xfc,0xeb,0xa2,0x9e,0x22,0x8c, + 0xa4,0x94,0xe7,0xcb,0xe5,0x63,0x86,0xaf,0x0b,0xe6,0x94,0xd5,0xe1,0x4f,0x9d,0x77, + 0x8b,0x4c,0xfa,0x0b,0xe2,0x0f,0xfc,0x14,0x4f,0xc1,0x7a,0x2c,0xcf,0x6b,0xa4,0xea, + 0x12,0x6b,0x32,0x21,0xc2,0x5b,0xd8,0x41,0xd4,0x8f,0xe1,0x90,0x92,0x4f,0xd1,0x93, + 0xf2,0xae,0xd7,0xc1,0x3f,0x18,0x35,0x6f,0x14,0xf8,0x37,0x47,0xd6,0xb4,0xeb,0x18, + 0x34,0xbb,0xad,0x4a,0xc7,0xed,0x8f,0x2d,0xca,0x9b,0xcb,0xd8,0xf3,0x2c,0x8a,0xa0, + 0x86,0x21,0xb6,0x85,0x51,0xc8,0x0d,0xd4,0xf1,0xeb,0xf2,0xbf,0xec,0xfb,0xf0,0x03, + 0xe1,0x6f,0xd9,0x2d,0x8e,0xb7,0xe3,0x8d,0x3a,0xda,0xf7,0x60,0x0f,0x6f,0xb1,0xa3, + 0x01,0xbb,0xfc,0xce,0x14,0x1a,0xfa,0x8f,0x56,0xd2,0xb4,0xbb,0x3b,0xcb,0x4d,0x1f, + 0x43,0xb9,0x4d,0x43,0x47,0xb3,0xb6,0x86,0x3b,0x77,0x85,0x96,0xe6,0x3c,0x01,0xcb, + 0x00,0xb8,0x75,0x39,0x27,0xe7,0x8d,0x8e,0x3b,0x8e,0x2b,0xd5,0x83,0xa0,0xdd,0xe9, + 0xbb,0xbe,0xe7,0xcf,0x57,0xc1,0xe2,0x70,0xda,0x57,0xa6,0xe2,0xfc,0xd3,0x47,0xab, + 0xfc,0x2a,0xd4,0x6e,0x2e,0x7c,0x65,0xe3,0xb8,0x67,0xb9,0x69,0x2d,0xed,0x6e,0xad, + 0x52,0x35,0x63,0xf2,0x23,0x1b,0x58,0xd9,0xc8,0x1c,0x63,0x25,0xb2,0x78,0x15,0xde, + 0x4d,0xe2,0x7b,0x02,0xcd,0x1c,0x12,0xb5,0xec,0x83,0x82,0x96,0x68,0x66,0xc1,0xf4, + 0x25,0x41,0x03,0xf1,0xc5,0x79,0x77,0xc1,0x8d,0x2b,0x4e,0xd7,0xfc,0x47,0xf1,0x0f, + 0x56,0x96,0x24,0xbc,0xf3,0x35,0x91,0x6e,0xa1,0x9c,0xbc,0x25,0x63,0x86,0x3d,0xac, + 0x14,0x92,0xb9,0xf9,0x8f,0xcc,0x06,0x70,0x05,0x7b,0x04,0x48,0xb1,0x2b,0x2a,0xaa, + 0xaa,0x83,0x80,0xa0,0x60,0x01,0x53,0x4b,0x9d,0x45,0xab,0xe8,0xdb,0x39,0x2a,0x59, + 0x4b,0xee,0x32,0x8d,0xde,0xac,0xd1,0xed,0x86,0xce,0x2b,0x65,0xe0,0x19,0x6e,0xa5, + 0xc9,0xfa,0x84,0x5c,0xe4,0x7d,0x58,0x57,0x98,0xfe,0xd0,0x3e,0x75,0xa7,0x83,0xa0, + 0x4d,0x43,0x50,0x8a,0x7f,0xb4,0x4e,0xa8,0x23,0x68,0xed,0xe3,0x8f,0x23,0x9c,0x01, + 0x38,0x65,0x24,0xfa,0x33,0x0f,0x62,0x0d,0x7a,0xfd,0xf5,0xe4,0x16,0x70,0xef,0xb8, + 0x9a,0x38,0x10,0x72,0x5e,0x46,0x0a,0x00,0x1c,0xe7,0x26,0xbc,0x7b,0xf6,0x82,0xbc, + 0x4d,0x5b,0xc3,0xda,0x55,0xd6,0x99,0x77,0x72,0xc6,0xde,0xe8,0xab,0x3d,0xa7,0x9e, + 0x11,0x95,0xa3,0x6c,0xee,0x68,0x91,0xf2,0xa3,0x68,0xea,0xac,0xa3,0x8c,0x8e,0x95, + 0x71,0x8a,0x8c,0xd4,0x39,0xaf,0x6b,0x7f,0x56,0x27,0x7e,0x87,0x9b,0x7c,0x3d,0x86, + 0x7b,0x05,0xf1,0x11,0xb8,0x32,0xa4,0x6b,0xa2,0xcf,0xe5,0xc6,0xfe,0x72,0x00,0x19, + 0x91,0x72,0xa8,0xfb,0x80,0x1c,0xf5,0x8a,0x5d,0xbe,0xdd,0x08,0xf9,0x33,0xc4,0x88, + 0x2e,0x3e,0x26,0xf8,0x2d,0x32,0x0e,0xe7,0x9d,0xbf,0x54,0xff,0x00,0x1a,0xfa,0x77, + 0xc2,0xbe,0x54,0x7e,0x0a,0xf1,0xe5,0xcc,0x73,0x43,0x3a,0xa6,0x96,0x54,0x88,0x96, + 0x1f,0x2c,0xb1,0x91,0x73,0x9f,0x2d,0xc2,0x13,0xec,0xd1,0x23,0x7d,0x79,0xaf,0x98, + 0xd6,0xc4,0xdc,0x7c,0x5f,0xf0,0x55,0xb3,0x7c,0xdf,0x23,0xbe,0x07,0x1d,0x5e,0x3f, + 0xf0,0xaf,0x42,0x8a,0x5c,0xcd,0x99,0xcf,0xe1,0x3f,0x53,0x34,0x8d,0x52,0xc7,0x4f, + 0xd2,0x6d,0x22,0x79,0xe3,0x42,0xb1,0xaa,0xed,0x0d,0x92,0x30,0x05,0x79,0x6f,0xc7, + 0x8b,0xd7,0xbb,0xd4,0xf4,0x75,0x83,0xcc,0x28,0x20,0x9c,0xb4,0x6b,0xb9,0xb7,0x82, + 0xc8,0x32,0x51,0x43,0xe4,0x71,0xd4,0xc2,0xe3,0xdd,0x7b,0xfa,0xe6,0x8f,0xa2,0xd9, + 0x69,0xf6,0xd1,0x08,0x2d,0xa3,0x42,0x00,0x3b,0xb6,0xf2,0x7f,0x1e,0xb5,0xe3,0x7f, + 0xb4,0x00,0xdf,0xe2,0x5d,0x38,0x49,0x84,0xb4,0x8e,0xd3,0x7b,0x3c,0x88,0x36,0x03, + 0xbc,0xe3,0xe6,0x74,0xd8,0xa7,0x8f,0xf9,0xeb,0x13,0x7b,0xd3,0x9d,0x94,0x2c,0x85, + 0x0e,0x6f,0xb4,0x72,0x7e,0x25,0x7b,0x9b,0x9f,0x86,0x3e,0x1e,0xfb,0x35,0xd4,0x76, + 0x93,0x1b,0xb9,0x0c,0x6c,0x21,0x49,0x54,0x11,0x3c,0x21,0x46,0x37,0xe0,0x0d,0xd8, + 0xce,0x36,0x91,0xc8,0xd8,0x39,0x15,0xef,0xb6,0xbe,0x12,0x9a,0xfa,0x0b,0x67,0xd5, + 0x35,0x9b,0xeb,0xe3,0xb3,0x2e,0x88,0xe2,0xdd,0x18,0x90,0x3b,0x47,0xb4,0xe0,0x60, + 0xf0,0x49,0xeb,0xc9,0x35,0xe0,0xfe,0x25,0x99,0x6e,0x3c,0x3b,0xe0,0x08,0x25,0x9c, + 0xb3,0x4b,0x7a,0x70,0x5e,0x42,0x4b,0x83,0x38,0xc1,0xe6,0x56,0x24,0x7c,0x83,0xbb, + 0x8e,0x9c,0x8e,0x0d,0x7d,0x04,0x7c,0x5b,0xa4,0xda,0x7e,0xe0,0x5e,0xad,0xc5,0xc2, + 0x8d,0xad,0x0d,0xb2,0x99,0xa4,0x52,0x3b,0x6d,0x40,0x4d,0x78,0xcb,0xd9,0x3c,0x4c, + 0xd5,0x5d,0xac,0x8e,0xc7,0x75,0x4e,0x36,0xf3,0x2e,0x59,0xe8,0x5a,0x7e,0x8d,0x1c, + 0x82,0xca,0xce,0x0b,0x62,0xe3,0xe7,0x68,0xd0,0x02,0xde,0xe4,0xf5,0x3f,0x8d,0x5c, + 0x03,0x6c,0x6b,0xf4,0x03,0x8a,0xc4,0x3e,0x20,0xbf,0xd4,0x09,0x8a,0xcb,0x45,0xba, + 0x39,0x1f,0xeb,0xae,0x99,0x60,0x50,0x3d,0x70,0x49,0x7f,0xfc,0x76,0xab,0xdf,0xe9, + 0xba,0xde,0xa7,0x2e,0xd9,0x75,0x58,0x74,0xdb,0x70,0xc7,0x11,0xd9,0xc6,0x4c,0x8e, + 0x3b,0x65,0xd8,0xe0,0x1f,0x60,0xbf,0x8d,0x75,0xca,0xac,0x62,0xaf,0x4e,0x3a,0x7d, + 0xcb,0xf1,0xb1,0x87,0x2d,0xdf,0xbc,0xca,0x1e,0x3d,0x7f,0xf8,0x94,0x78,0x85,0xf0, + 0x36,0x8d,0x35,0xba,0x9c,0x7f,0x0c,0x83,0xaf,0xe3,0x5f,0x3b,0x69,0xfa,0x74,0x09, + 0x6e,0x92,0x15,0x79,0xae,0x59,0x43,0x80,0x0e,0xe5,0xc7,0xcc,0x37,0x67,0xd3,0xa7, + 0x20,0xfd,0x33,0x5e,0xe5,0xe3,0x8d,0x06,0xd0,0x78,0x67,0x57,0x8a,0xfa,0xe7,0x52, + 0xb8,0xb5,0x8a,0xd8,0x3c,0xb2,0xc5,0x71,0xb6,0x69,0x00,0xc1,0xdb,0x90,0x00,0xc7, + 0x3d,0x31,0x5f,0x39,0x5a,0xe8,0x9a,0x1d,0xd4,0xac,0x90,0xde,0xeb,0x96,0xb1,0xb3, + 0x6d,0xf2,0xda,0x68,0xd8,0xf5,0xe0,0x1e,0x00,0x35,0xf3,0xf8,0x99,0x4d,0xc9,0xb9, + 0x1e,0x96,0x1e,0xc9,0x68,0x69,0x5e,0xc5,0x24,0xbe,0x22,0xf0,0xba,0x46,0xdb,0x5e, + 0x7d,0x52,0x14,0x8d,0xe2,0x52,0xc9,0x19,0xdd,0xc6,0x72,0x7a,0x01,0xcf,0x19,0xaf, + 0x9f,0x3e,0x22,0xdf,0x35,0xcf,0x8e,0x75,0xb9,0x01,0x91,0x77,0x5c,0xb7,0xcb,0x9c, + 0x63,0xda,0xbe,0x88,0xf0,0xf6,0x81,0x00,0xf1,0x56,0x85,0x2c,0x7a,0xf6,0xa3,0x78, + 0xd6,0xd7,0x71,0xc8,0xb0,0x30,0x47,0x45,0x1b,0x87,0x5e,0x98,0xeb,0x8c,0x8f,0x5e, + 0x95,0xf3,0x77,0x8d,0xae,0xc3,0xf8,0xbb,0x57,0x65,0x58,0xd8,0x1b,0x97,0xe4,0xfd, + 0x6b,0xd8,0xca,0x7e,0x09,0x18,0x62,0xee,0xda,0xb9,0xf2,0xeb,0xb6,0xd0,0x7d,0x00, + 0xe9,0xef,0x5e,0x31,0xe2,0xc9,0x5a,0x6d,0x5a,0x62,0xad,0xc3,0x33,0x67,0xfe,0xfa, + 0x35,0xec,0x13,0x49,0x88,0x98,0xfe,0x35,0xe2,0xda,0xdb,0x96,0xbb,0x2f,0xc6,0x08, + 0xe0,0xfe,0x3f,0xfd,0x7a,0xcb,0x22,0x8f,0xbd,0x52,0x5e,0x9f,0xa9,0xfa,0x5f,0x1d, + 0x55,0xf7,0x30,0xf4,0xfc,0xe4,0xff,0x00,0x2f,0xf3,0x2f,0xe8,0x29,0xb6,0xd5,0x4a, + 0x9d,0xa4,0x93,0xce,0x40,0xf5,0xf5,0xae,0x9f,0x4e,0x91,0xad,0x2c,0x9d,0xc1,0xcb, + 0xc8,0x0a,0xe7,0x04,0xf1,0xf5,0x3c,0x57,0x3d,0xa2,0x00,0x96,0x31,0x36,0x00,0xc9, + 0xc8,0x6e,0x07,0x73,0x5b,0x33,0x48,0x45,0xaa,0x63,0xe6,0x5e,0x47,0x4c,0xfe,0xa6, + 0xbe,0xa2,0xa2,0xbb,0xb1,0xf9,0x24,0x5d,0xb5,0x19,0x15,0xbb,0x4d,0x01,0x62,0x55, + 0x95,0x47,0x23,0x76,0x4f,0xe4,0x31,0x4d,0x69,0x86,0xc1,0x18,0xe9,0x8c,0x72,0x71, + 0xfa,0x0a,0x64,0x6a,0xd2,0xc7,0xb4,0x93,0xd7,0xee,0xf5,0x1f,0x90,0xab,0xb6,0xd6, + 0x2d,0x2c,0x45,0xfe,0xe8,0x43,0x83,0xfc,0x39,0xfc,0xaa,0x3d,0x46,0x76,0x3f,0x0f, + 0x65,0x78,0x74,0xfd,0x6e,0x74,0x56,0x08,0xb6,0x2d,0x19,0x6c,0xaa,0x63,0x2a,0xc7, + 0xab,0x73,0xdb,0xb7,0x35,0x43,0xc1,0x56,0x0f,0x73,0xe2,0xbb,0x29,0x02,0x99,0x18, + 0x5c,0x2b,0x1d,0xaa,0x0f,0xf1,0x03,0xd5,0xb8,0xfc,0xf8,0xae,0x8b,0xc1,0x9a,0x5a, + 0xc1,0xe1,0x6d,0x66,0x52,0xbc,0xe1,0x13,0x21,0x57,0xe5,0x05,0x5f,0xf8,0x9b,0xa7, + 0xe1,0x5b,0x5f,0x0e,0x7f,0xb3,0xec,0x35,0x88,0x41,0x50,0xed,0x96,0x38,0xdb,0xb8, + 0x9c,0x29,0x3c,0xe7,0x1e,0x95,0xf3,0x93,0x9d,0xbe,0xb3,0x24,0xbf,0xae,0x53,0xea, + 0x63,0x0f,0x77,0x09,0x17,0xfd,0x7b,0xc5,0x0d,0x2f,0x45,0x92,0x6f,0x88,0xb7,0x2b, + 0xbc,0x4b,0x9b,0x89,0x5b,0xcb,0x71,0xe6,0x13,0x8d,0xdf,0x40,0x7e,0xbd,0x2b,0x23, + 0xc7,0x7a,0x21,0x79,0xa7,0x96,0x2b,0x52,0x63,0x49,0x64,0x67,0xbb,0x39,0x21,0xd9, + 0x9f,0xee,0x80,0xa3,0x6f,0x1f,0x5a,0xf4,0xcf,0x04,0x5e,0xda,0xdc,0xfc,0x53,0xba, + 0x6b,0xa8,0x23,0x76,0xcc,0xaa,0x86,0x55,0x2e,0x40,0xf9,0xb2,0x36,0xaf,0x1d,0xcf, + 0x4f,0x6a,0xda,0xbf,0xd7,0xf4,0xcb,0xb8,0xe4,0xb5,0xfb,0x30,0xbe,0x04,0xe1,0xa3, + 0x58,0xcb,0x29,0xeb,0xd8,0x03,0xfc,0xeb,0x9e,0x8d,0x49,0x43,0x10,0x9d,0xb6,0x8c, + 0x7f,0x51,0xe2,0xa2,0xa5,0x86,0x71,0x7d,0x67,0x27,0xf9,0x18,0xff,0x00,0x0e,0x6c, + 0x6e,0xed,0xb4,0xbb,0x0b,0x13,0xa7,0x66,0xdd,0x11,0xfe,0x79,0x5f,0x60,0x6d,0xe0, + 0x9e,0x36,0xe4,0x93,0x92,0x00,0xe9,0xda,0xba,0xd8,0xbc,0x45,0x73,0xa1,0x5f,0xde, + 0x4b,0xad,0xcf,0x1b,0x69,0x92,0x70,0x2d,0x51,0x19,0x01,0xc7,0x18,0xef,0xdb,0xdb, + 0x9a,0xc8,0xb6,0xf1,0xd3,0x69,0x17,0x56,0xc5,0x61,0x86,0xca,0x08,0x64,0x52,0x44, + 0xd3,0x25,0xbf,0xca,0x08,0xe0,0x64,0x93,0xd3,0xda,0xb1,0xfe,0x23,0xd8,0xe9,0x7e, + 0x26,0xb7,0xb8,0xd5,0xf4,0x19,0xed,0x75,0x6b,0xb8,0x9c,0x49,0x3c,0x30,0xc7,0x2b, + 0xaa,0xa6,0x39,0x3b,0xce,0x17,0x8e,0x32,0x31,0xd3,0x27,0x3c,0x57,0x25,0x68,0x42, + 0x58,0x9e,0x6a,0xea,0xca,0x4a,0xd7,0xf3,0xbf,0x7e,0x9d,0x0d,0xf0,0xf3,0xa8,0xf0, + 0xdc,0xb8,0x77,0xac,0x5b,0x6d,0x77,0x56,0xed,0xd7,0xa9,0xa3,0xa2,0x6a,0xfe,0x1d, + 0x5b,0xfd,0x43,0x59,0x92,0x33,0x2f,0xd9,0x40,0x70,0xd1,0xa2,0xa3,0x0e,0xb8,0x04, + 0xb3,0x63,0x3c,0x76,0x19,0xa9,0xbc,0x41,0xe3,0xeb,0x1f,0x13,0xf8,0x71,0x35,0x3b, + 0x7b,0x39,0x92,0x5b,0x79,0x3e,0xce,0x04,0x21,0xd0,0x37,0x4c,0x0c,0xa9,0xe7,0x82, + 0x3b,0xd7,0x96,0xf8,0x7f,0xc4,0x37,0x31,0x78,0x4f,0xc4,0xf3,0x47,0x1d,0xbc,0x12, + 0x2a,0xc6,0xb8,0x8e,0xdc,0x36,0xdc,0xb1,0x07,0x04,0x82,0x07,0xd6,0xb8,0xc6,0xf1, + 0x6e,0xa7,0x3c,0x4b,0x19,0xd4,0x26,0xda,0xa3,0x68,0x45,0x7c,0x60,0x7d,0x06,0x2b, + 0xb2,0x18,0x35,0x5a,0xbc,0xe6,0x9d,0x9c,0x5a,0xb7,0xa5,0x95,0xd7,0xce,0xe6,0x55, + 0x71,0x2b,0x0f,0x87,0xa7,0x19,0x2b,0xa9,0xc5,0xbf,0x9d,0xda,0x4f,0xe5,0x63,0xe9, + 0x1f,0x07,0x6b,0xf6,0x9a,0x87,0x87,0xe4,0x69,0x74,0x6b,0xb8,0xda,0xd5,0x77,0xcb, + 0x2a,0x29,0xf9,0xb2,0xc4,0x8c,0x16,0x6f,0x41,0xd4,0x8a,0xc4,0xb1,0xba,0xd4,0xf5, + 0xdd,0x5d,0xed,0xf4,0xab,0x28,0x85,0xb3,0x3b,0x14,0x2d,0x24,0x45,0x82,0x76,0x2c, + 0x3b,0x76,0xfc,0x6b,0x84,0xf0,0x1d,0xa4,0xda,0xa7,0x81,0xbc,0x53,0x3b,0x6e,0x95, + 0x82,0xc6,0x83,0x7b,0x12,0x7a,0x9e,0x83,0xbf,0x5f,0xc3,0xf1,0xac,0x9f,0x01,0x2c, + 0x96,0xaf,0xaf,0xf9,0xa8,0x15,0xa2,0xd3,0xe5,0x18,0x91,0xfc,0xbc,0x1e,0x3d,0x3a, + 0x9f,0x6a,0xc3,0x91,0xd2,0x78,0x89,0xc6,0x57,0xb3,0x49,0x27,0xaa,0xd5,0x2f,0xf3, + 0x3a,0x63,0x18,0x62,0x3e,0xad,0x4e,0x49,0x2b,0xa6,0xdb,0x5b,0xe8,0xdf,0xe8,0x8f, + 0x4b,0xf1,0xc9,0xd4,0xfc,0x37,0x6e,0x93,0xc7,0x71,0x63,0x73,0x6e,0x0e,0x19,0x63, + 0x96,0x32,0x54,0xe3,0xee,0x90,0x33,0xfc,0xfb,0x56,0x04,0x7a,0x2e,0xab,0xad,0x68, + 0x49,0xa9,0x1b,0x4b,0x39,0x83,0xa9,0x74,0x8e,0x17,0x8c,0xca,0x79,0x3c,0x6d,0x51, + 0x9c,0xe7,0x35,0x53,0xc2,0x7a,0x74,0xf7,0xdf,0x0b,0xf5,0x47,0x94,0x5c,0x3d,0xbb, + 0xdc,0x85,0x20,0x30,0x54,0x1b,0x48,0x27,0xeb,0xff,0x00,0xd6,0xac,0xfb,0x9f,0x10, + 0x5e,0xe8,0x5e,0x0c,0xf0,0xea,0x58,0xcc,0xd1,0x24,0xd2,0x4a,0xce,0xaa,0xa5,0x03, + 0x00,0xfc,0x02,0xdc,0x16,0x07,0x3c,0xfe,0x14,0xd5,0x6a,0xf0,0x8f,0xb3,0x8d,0x9c, + 0xd4,0xad,0x76,0xb7,0x56,0xb9,0x4b,0x09,0x86,0xa9,0x3f,0x6b,0x2b,0xc6,0x1c,0x8a, + 0x56,0x5d,0x1d,0xed,0xd4,0xe4,0x25,0xd2,0xe5,0xfe,0xd6,0xba,0xb4,0x2c,0x63,0xb8, + 0x61,0xb4,0x2c,0x6e,0x32,0x87,0xd3,0x92,0x39,0xf5,0xaa,0x11,0xcd,0xae,0x69,0xd1, + 0xfe,0xef,0x52,0xdc,0x41,0xc0,0x49,0x4e,0xec,0xfa,0xfa,0xd7,0xa1,0xde,0x59,0xc2, + 0x7e,0x2c,0x59,0xaa,0x22,0x0f,0x9e,0x39,0x1d,0x60,0x6e,0x33,0xb7,0x71,0x3b,0x8d, + 0x61,0xf8,0xa7,0xc4,0xdf,0xf0,0x93,0x6b,0x90,0x40,0x6c,0x2d,0xad,0xfc,0x99,0x99, + 0x37,0xc0,0x32,0xd2,0x82,0x40,0xf9,0x98,0xf5,0xe9,0xfa,0x9a,0xf4,0x21,0x8a,0xfa, + 0xc3,0x8c,0x5d,0x34,0xd3,0x8a,0x93,0xbd,0xb4,0x38,0xa5,0x85,0xa9,0x81,0x53,0x9d, + 0x3a,0xee,0x32,0x52,0x71,0x56,0xba,0xbe,0xdd,0x56,0xdb,0x95,0xed,0x7c,0x6b,0xab, + 0xd8,0x45,0x99,0x15,0x88,0x4f,0xbc,0x46,0x40,0x07,0xf1,0xc0,0xfc,0x2b,0x6b,0x49, + 0xf8,0xf3,0x71,0xa3,0xdc,0x29,0x5b,0x8b,0x9b,0x77,0x1f,0xf2,0xd2,0x26,0x23,0xf9, + 0x62,0xb7,0xb5,0x0b,0x2d,0x2b,0x52,0x97,0x56,0xd0,0x34,0xe4,0x93,0x4f,0xbe,0x86, + 0x36,0x75,0x54,0x73,0x24,0x72,0x10,0x01,0x20,0xe5,0xb0,0x38,0xef,0x8e,0x2b,0x83, + 0xf0,0xb7,0x83,0x47,0x89,0x85,0xcb,0xdc,0xcb,0x0d,0xa5,0x95,0xb8,0x25,0xee,0x0a, + 0xee,0x20,0xf6,0x1d,0x40,0xfc,0x49,0xae,0x28,0x7d,0x46,0xb4,0x25,0x52,0x70,0x70, + 0xb5,0xbc,0xb7,0xdb,0x6e,0xe7,0xbd,0xf5,0xfc,0xf3,0x09,0x56,0x34,0x29,0xd6,0x55, + 0x39,0xaf,0xbd,0x9a,0xd3,0x74,0xdb,0x57,0xd0,0xfa,0x13,0xe1,0xef,0xed,0xbf,0xe2, + 0x7f,0x08,0x97,0x1a,0x6f,0x89,0xdd,0x16,0x59,0x3c,0xd9,0x63,0xb9,0x55,0x90,0x48, + 0xf8,0x00,0xb3,0x6f,0x07,0x27,0x00,0x0c,0xe7,0x3c,0x57,0xb8,0x78,0x77,0xfe,0x0a, + 0x1b,0xac,0xde,0xba,0x0d,0x5e,0xde,0x0b,0xdb,0x6c,0x7c,0xcb,0x63,0x29,0xb6,0x67, + 0xf7,0x2c,0x03,0x11,0xf8,0x11,0x5f,0x9f,0x7e,0x25,0xf0,0x6a,0x78,0x77,0x53,0x96, + 0xce,0x65,0x12,0x74,0x64,0x91,0x0f,0xdf,0x04,0x64,0x11,0x83,0xfd,0x6b,0x9c,0x5b, + 0x23,0x6d,0x26,0x6d,0xee,0xe7,0x81,0xb3,0xd1,0x4d,0x74,0xc7,0x2f,0x8d,0x48,0x29, + 0x61,0xeb,0x3b,0x3d,0xba,0xaf,0xd0,0xf3,0xeb,0x67,0x54,0x9d,0x49,0x53,0xcc,0x30, + 0x50,0x72,0x5a,0x36,0xbd,0xd7,0xf7,0xab,0x9f,0xb1,0xde,0x0d,0xfd,0xb5,0x7e,0x16, + 0xea,0x86,0x2f,0xed,0x2d,0x2e,0xf3,0x4d,0xb9,0xc8,0x63,0x3c,0xc0,0x5d,0xe0,0x8e, + 0x99,0x7c,0x97,0x38,0xfa,0x56,0xb7,0xc6,0x5f,0x8a,0xbe,0x14,0xf8,0x8f,0xe1,0xcd, + 0x30,0xf8,0x73,0x57,0xb4,0xd5,0x8c,0x17,0x22,0x67,0x8d,0x42,0x79,0x89,0xf2,0x30, + 0x07,0x63,0xc9,0x13,0x8e,0xb8,0xcc,0x6d,0xbb,0x9e,0x33,0x93,0x5f,0x8e,0x76,0xda, + 0xd6,0xb7,0x6b,0x1e,0x20,0xbd,0x33,0x48,0x0f,0xdc,0x93,0x91,0xf8,0x57,0x4b,0xe1, + 0xcf,0x8a,0x9a,0xc6,0x99,0xab,0x5b,0xc3,0x74,0xc6,0x06,0xdc,0x00,0x92,0x37,0xe8, + 0x7b,0x71,0x55,0xc9,0x8c,0xa0,0xaf,0x68,0xc9,0x2e,0xda,0x33,0x38,0xd3,0xc8,0xb1, + 0xd2,0x51,0x84,0xa7,0x4a,0x4f,0x4d,0x6d,0x28,0xfd,0xfb,0x9f,0xa7,0xfe,0x1c,0xb9, + 0x94,0xf8,0x03,0xc7,0xd7,0x32,0xef,0x33,0x45,0x63,0x02,0x91,0x2b,0x4c,0x65,0x19, + 0x97,0xbf,0x9b,0x1a,0xca,0x07,0x1d,0xdd,0xc7,0x1d,0x47,0x5a,0xf9,0xbf,0x45,0x87, + 0xed,0x3f,0xb4,0x5f,0x85,0xe0,0xce,0x7c,0xbb,0x58,0xcf,0xe7,0x29,0xff,0x00,0x0a, + 0xea,0xbe,0x10,0xfc,0x60,0x8f,0x55,0xf8,0x43,0xe3,0x3d,0x1e,0xf4,0x05,0xbb,0x9e, + 0x18,0xb6,0x94,0x04,0x82,0xca,0xfb,0x87,0xc9,0xf7,0x46,0x72,0xc4,0xb6,0x33,0xc7, + 0x39,0xe0,0x57,0x96,0x78,0x1b,0x5d,0xd5,0xa4,0xfd,0xa1,0xa4,0x92,0x1c,0x4f,0xb6, + 0x68,0x6d,0xa0,0x96,0x58,0xbe,0x58,0x40,0x27,0xe5,0xdc,0x06,0x73,0x92,0x5b,0x19, + 0xaf,0x43,0x0b,0x56,0x35,0x69,0xba,0x91,0xd8,0xf9,0xdc,0xc7,0x03,0x53,0x01,0x5e, + 0x58,0x6a,0xbb,0xaf,0xc7,0xcc,0xfd,0x6c,0x1a,0x85,0xad,0x94,0x28,0x67,0xb8,0x8a, + 0x00,0xdc,0x2f,0x98,0xe1,0x72,0x7d,0x06,0x6b,0xc3,0x3e,0x37,0xdc,0x41,0x27,0x8f, + 0x6c,0x66,0x42,0x9e,0x72,0xd8,0x21,0x8d,0x81,0x45,0x97,0x99,0x24,0xfb,0xa7,0x72, + 0x49,0xdb,0xa2,0x97,0x1f,0xec,0x77,0x3c,0x94,0xfe,0x3b,0xd7,0x6c,0x75,0x48,0x84, + 0x57,0x76,0x96,0x2b,0x19,0xf2,0xe2,0x29,0x01,0x22,0x55,0xe7,0x7b,0x33,0x31,0x19, + 0x38,0xc7,0xce,0x33,0x93,0x90,0x3f,0x88,0x0e,0x8f,0xc6,0x1a,0x4e,0xab,0xe2,0x5b, + 0x9b,0x3b,0xf8,0x04,0xc7,0x4c,0x7b,0x08,0x92,0x4b,0xc9,0x6e,0x04,0x10,0x6e,0xde, + 0xfc,0x33,0x33,0xb2,0x91,0xf3,0x01,0x86,0x85,0xba,0x8e,0x79,0xa7,0xed,0x39,0x93, + 0x47,0x9e,0x91,0x0e,0xa7,0xa5,0xc3,0xa9,0xdd,0xf8,0x02,0xc2,0xff,0x00,0x4d,0x8e, + 0xea,0xda,0xe6,0x78,0x45,0xc2,0x5d,0xc2,0x4e,0x33,0x24,0xcd,0x82,0xad,0x1a,0x60, + 0x9f,0x2c,0x67,0x2a,0x0f,0xd7,0x24,0x9f,0xa3,0x61,0x8a,0x38,0x57,0x11,0xc6,0xa8, + 0xb9,0xc8,0x0a,0x31,0x5f,0x2e,0x47,0xe2,0xfd,0x11,0x7e,0x21,0xf8,0x2f,0x49,0xd3, + 0xae,0xa2,0xd6,0xee,0x34,0x8f,0x21,0x2e,0x2d,0xf4,0x4d,0x97,0x7e,0x59,0x02,0xe3, + 0x39,0x31,0x46,0x14,0x60,0xb2,0x93,0xca,0xe3,0x3f,0x77,0x8c,0x8f,0xa3,0x4e,0xa9, + 0xab,0xdc,0xff,0x00,0xc7,0xb6,0x8a,0xd1,0x03,0xfc,0x57,0xb3,0xaa,0x0f,0xc9,0x37, + 0x9a,0xe3,0xa1,0x38,0xc6,0xa4,0xdd,0xb5,0xf2,0x4d,0xf4,0x37,0x9a,0x6d,0x44,0xd6, + 0x88,0x83,0x3b,0x91,0x8c,0xed,0x1d,0x3e,0xa6,0xa2,0x9a,0x36,0x67,0xdc,0x39,0x04, + 0xe3,0x1e,0x95,0x47,0xec,0x5a,0xbd,0xc4,0x79,0x92,0xee,0x0b,0x49,0x18,0xfc,0xdf, + 0x67,0x88,0xbe,0x07,0xa0,0x2c,0x7a,0xfb,0xe3,0xf0,0xa8,0x9f,0xc2,0x50,0x5c,0x73, + 0x7b,0x7f,0x7d,0x7a,0x3a,0xe2,0x4b,0x83,0x1a,0xff,0x00,0xdf,0x31,0xed,0x07,0xf1, + 0xad,0xa5,0x09,0xd5,0x87,0x27,0x27,0x5b,0xea,0xed,0xfe,0x66,0x49,0x25,0xd4,0xe4, + 0x3e,0x2c,0x5f,0x25,0x87,0x83,0xfc,0x46,0xc6,0xe1,0x62,0x2f,0x1a,0xc1,0x1b,0x33, + 0x05,0xc9,0x6f,0x2c,0x63,0x27,0xea,0x6b,0xe7,0x5d,0x1d,0xbc,0xc7,0x8a,0x38,0x0d, + 0xba,0x64,0x86,0x77,0x2e,0x0e,0xe1,0xd3,0x93,0xfc,0x20,0x0c,0xe4,0x0a,0xf6,0x2f, + 0x8d,0x30,0x68,0xf6,0xd7,0x76,0x7a,0x38,0x4b,0x55,0xb6,0xf2,0xbc,0xd3,0x6c,0xe1, + 0x4a,0xe4,0x92,0x37,0x60,0xf7,0x38,0xeb,0x5e,0x5f,0x6f,0xe1,0x8f,0x0e,0x07,0x3b, + 0x74,0xbb,0x37,0xe4,0xe3,0x80,0x7f,0x95,0x7c,0xfe,0x2a,0xea,0xa4,0xa2,0xfa,0x1e, + 0xa5,0x04,0x94,0x6f,0xdc,0xd3,0xb6,0x9e,0x3f,0xed,0xcd,0x3e,0x46,0x78,0x20,0xb7, + 0x37,0x27,0x68,0xb7,0x89,0x4b,0x7c,0xa1,0xbe,0x66,0x2b,0xd3,0x9c,0x1e,0xbc,0xe0, + 0xfe,0x3f,0x1f,0xf8,0x9a,0x58,0xaf,0xfc,0x41,0xa8,0xdc,0x0b,0xb9,0x00,0x92,0x77, + 0x60,0x14,0x48,0x46,0x0b,0x1e,0xe1,0x48,0xfc,0x8d,0x7d,0x4f,0xab,0xfc,0x3d,0xd1, + 0x2f,0xad,0x19,0xa2,0xb4,0xfb,0x2c,0xc1,0x48,0x49,0x2d,0x6e,0x24,0x89,0xd7,0x23, + 0x1c,0x15,0x60,0x47,0x06,0xbc,0xd9,0xfe,0x09,0x05,0x6d,0xb1,0xdd,0xea,0x01,0x07, + 0x4f,0xf8,0x98,0x4e,0x7f,0x9b,0xd6,0xd8,0x2c,0x75,0x3c,0x2c,0x5c,0x64,0x9e,0xa3, + 0xad,0x41,0xd6,0x69,0xa6,0x7c,0x0f,0x71,0x76,0xb3,0xc1,0x2c,0x71,0xe1,0x9c,0xa9, + 0x03,0x6b,0xa9,0x04,0xe3,0xb7,0x35,0xe6,0xda,0x87,0x86,0x35,0x19,0x80,0x63,0x6b, + 0x29,0xd8,0x48,0xd8,0x17,0x3c,0x7f,0x9c,0x57,0x43,0x3f,0xc3,0x4d,0x66,0xd1,0xca, + 0xa3,0x4a,0x08,0xef,0x95,0x6f,0xea,0x2a,0xbb,0xf8,0x6f,0xc4,0xb6,0x58,0x28,0xf3, + 0x71,0xdc,0xa3,0x0f,0xe5,0x9a,0xfb,0x3c,0x3e,0x5d,0x0c,0x22,0x7e,0xcb,0xa9,0x86, + 0x63,0x9e,0x56,0xcd,0x9c,0x1e,0x25,0xaf,0x76,0xf6,0xb2,0xb6,0xff,0x00,0xf0,0xc6, + 0x65,0x94,0xe7,0x4d,0xb4,0x8e,0x19,0xa1,0x9a,0x37,0x5c,0xe7,0x28,0x71,0x57,0xed, + 0xaf,0xad,0x27,0x5c,0x34,0xc0,0x2a,0xfc,0xc7,0x78,0xc7,0x3f,0x88,0xa7,0x7d,0xbb, + 0xc4,0xb6,0xa7,0x0e,0xde,0x67,0xa8,0x66,0xeb,0xf9,0xd3,0x5b,0x5c,0xd4,0x71,0x8b, + 0x8d,0x2a,0x29,0x7e,0x91,0xa9,0x27,0xf2,0xae,0x87,0x46,0x4c,0xf2,0x15,0x44,0xf6, + 0x66,0xee,0x9f,0x36,0x8e,0x61,0x74,0x99,0xe5,0x52,0xfc,0x29,0x89,0x95,0xc0,0xfc, + 0x0e,0x3d,0xaa,0x3f,0x3a,0x38,0x76,0xc3,0x01,0x2c,0x82,0x4d,0xfd,0x31,0xbb,0xd3, + 0x23,0xff,0x00,0xaf,0x58,0x4d,0xab,0xd8,0x30,0xcd,0xd6,0x84,0x17,0xd4,0x80,0xc9, + 0xfc,0xaa,0x25,0xbd,0xd0,0x9b,0x22,0x35,0xba,0xb4,0xcf,0x68,0xe5,0xe3,0xf5,0xac, + 0x9d,0x22,0xd3,0xea,0x7b,0x0e,0x8d,0xe2,0xff,0x00,0x0e,0x43,0xa3,0x49,0x69,0x77, + 0x04,0xa2,0x79,0xb6,0x79,0xf2,0x47,0x16,0xe2,0xe4,0x75,0xf9,0x8b,0x9d,0xbd,0x4f, + 0x41,0xde,0xb3,0xb4,0xef,0x10,0x8d,0x1f,0xc4,0x82,0xf2,0xd2,0x28,0x5f,0x4f,0x59, + 0x18,0x44,0x93,0x44,0x1c,0xec,0x39,0x00,0x90,0x71,0x93,0x8e,0x7e,0xa2,0xbc,0xe2, + 0x26,0xd3,0xdb,0xfd,0x5e,0xb3,0x71,0x11,0xf4,0x95,0x03,0xd6,0xfc,0x1a,0x82,0xb2, + 0x2c,0x63,0x51,0xb6,0xb8,0x03,0x03,0x74,0x80,0xa9,0xfe,0x55,0xe4,0xac,0xb6,0x10, + 0xe7,0xb3,0x6d,0x4f,0x75,0x73,0xd9,0x96,0x67,0x56,0x6a,0x9f,0x32,0x49,0xc3,0x66, + 0x91,0xed,0x16,0xba,0x9d,0x96,0x8b,0xa8,0xff,0x00,0xc2,0x43,0x15,0xed,0xbc,0xa1, + 0xd0,0x95,0x81,0x4c,0x48,0xca,0x4a,0xfc,0xc0,0xaa,0x64,0x8c,0x93,0xed,0xf9,0x57, + 0x14,0x34,0xfd,0x7b,0xc4,0x2e,0xc4,0xcd,0x79,0x2c,0x2c,0x73,0xcb,0x79,0x71,0x81, + 0xf8,0x91,0x9f,0xc3,0x35,0x9f,0xa0,0xf8,0x92,0x2d,0x1a,0xe3,0xed,0x3f,0xd9,0xf1, + 0x5f,0x32,0xae,0x15,0x44,0xeb,0xc1,0xf5,0x19,0xcf,0x3c,0x7e,0xb5,0x35,0xef,0xc5, + 0x4d,0x60,0xb2,0xaa,0x69,0x12,0x43,0x18,0x3b,0x4b,0x46,0x44,0x87,0x1e,0xbd,0x6b, + 0x8b,0x0f,0x81,0xab,0x86,0x93,0x6b,0xde,0x6e,0xca,0xef,0xb2,0xd8,0xe8,0xc5,0xe3, + 0xe9,0xe2,0x94,0x57,0x2a,0x8a,0x57,0xd1,0x77,0x7d,0x4e,0x8b,0x43,0xf8,0x4a,0x75, + 0x0d,0x62,0xca,0xce,0xe6,0xee,0x3b,0x57,0x98,0x3b,0x03,0x1e,0x64,0x27,0x68,0x1c, + 0x73,0xb7,0xd6,0xba,0xad,0x2b,0xc2,0xd6,0x5e,0x08,0x4d,0x7b,0xed,0x53,0x43,0x3d, + 0xc4,0x76,0x72,0x05,0x89,0xd4,0xfc,0xc7,0x1c,0xe0,0x82,0x7f,0xc2,0xb9,0x68,0x3c, + 0x59,0xa1,0x4d,0xae,0xc7,0x35,0xcd,0xdd,0xc4,0xf2,0x47,0x08,0x2a,0xb2,0xa3,0x11, + 0xbd,0x9b,0x27,0x00,0x0c,0x0c,0x6d,0x1f,0x9d,0x66,0x7c,0x55,0xf8,0x91,0x2f,0x88, + 0xae,0xe1,0xb3,0xfb,0x5a,0x47,0x65,0x1c,0x40,0xf9,0x29,0xb6,0x3c,0x92,0x73,0xc8, + 0x5e,0x3d,0x2b,0x96,0xbd,0x0c,0x56,0x22,0xa2,0xa7,0x7f,0x75,0xda,0xfe,0x56,0x77, + 0xd3,0xb9,0xbe,0x17,0x11,0x85,0xc3,0x41,0xd4,0x6b,0xde,0x57,0xb5,0xba,0xdd,0x5b, + 0x5e,0xc3,0xa0,0x86,0xda,0xe3,0xc1,0xfe,0x23,0x30,0xa1,0x4f,0x34,0xc2,0x7c,0xb3, + 0x26,0xdc,0x61,0xbf,0xba,0x3e,0xf7,0xaf,0xa0,0xe6,0xb8,0x99,0xfc,0x31,0x35,0x8e, + 0x8a,0x9a,0x94,0xc3,0x16,0xd2,0xcb,0xe5,0xa1,0xce,0x0e,0x79,0xff,0x00,0x0a,0xeb, + 0xbc,0x09,0xae,0x7f,0x65,0x49,0x2c,0x8d,0x2c,0x52,0xdb,0x18,0xbc,0xa9,0x2d,0x44, + 0x8a,0x1a,0x50,0x47,0xa9,0x07,0x03,0xa6,0x4f,0xe1,0x58,0xff,0x00,0x10,0xbc,0x58, + 0xda,0xdd,0xe4,0x56,0x50,0x5a,0x8b,0x0b,0x2b,0x55,0x5d,0xb6,0xe4,0x6e,0x60,0x71, + 0xdc,0x9f,0xaf,0x60,0x3e,0x95,0xb5,0x38,0xe2,0x29,0x62,0x65,0x08,0xc6,0xf1,0x6e, + 0xed,0xf9,0x5a,0xd6,0xf5,0x2e,0xac,0xf0,0x95,0xf0,0x71,0x9c,0xe5,0xef,0xc6,0x36, + 0x4b,0xce,0xf7,0xbd,0xfb,0x6a,0x6d,0xf8,0x53,0x56,0x9f,0x4a,0xf8,0x6b,0xe2,0x13, + 0x68,0xf2,0xc7,0x13,0xc9,0x16,0x42,0x28,0xc1,0x3b,0x87,0x52,0x7a,0x76,0xa8,0x7c, + 0x1b,0x78,0xd7,0x9a,0x6f,0x88,0xaf,0x15,0x36,0x4a,0xd6,0x6c,0x8c,0x51,0x37,0xe4, + 0x9c,0xf4,0x3f,0xc3,0xf5,0xab,0x76,0x97,0x1e,0x15,0x7f,0x09,0xbe,0x9c,0xd7,0xd2, + 0xda,0xcb,0x28,0x8c,0xce,0x65,0xdc,0xc7,0xcc,0x55,0x19,0x0a,0x02,0xe3,0x19,0x1d, + 0xcd,0x58,0xf8,0x58,0x60,0x9e,0xcb,0x51,0xd1,0xe6,0x31,0xc4,0xba,0x82,0x04,0x59, + 0x24,0x7f,0x2c,0xee,0x19,0xc7,0x63,0x90,0x73,0xed,0xf9,0x91,0x5c,0x35,0x5b,0xf6, + 0x55,0xe5,0xc8,0xd3,0xe6,0x4f,0x6e,0x9a,0x6d,0xdf,0x63,0xd1,0xa4,0xa3,0x0a,0xd8, + 0x68,0xa9,0xc5,0xae,0x56,0xb4,0x6b,0x7d,0x7e,0xed,0xd1,0x9d,0x1a,0xcb,0x6b,0xf0, + 0xb0,0x94,0x99,0x55,0x9b,0x50,0x1c,0x07,0x25,0xc8,0xd9,0xcf,0x1d,0x31,0x5b,0x0f, + 0x67,0xa0,0x0d,0x0b,0xc3,0xc9,0xac,0xdc,0xcb,0x68,0xd1,0x42,0x25,0x89,0x64,0x25, + 0x92,0x40,0x48,0x27,0x85,0x07,0x1f,0x98,0xad,0xff,0x00,0x18,0xf8,0x4a,0x0f,0x0e, + 0xf8,0x36,0xd7,0x48,0x37,0x44,0xc8,0xf7,0x2b,0x3c,0xa5,0x50,0x18,0xc7,0x05,0x47, + 0x38,0x07,0x9c,0x8c,0x7e,0x35,0xce,0x78,0xab,0xc2,0xf2,0x6a,0xcf,0xa3,0xc1,0x07, + 0x94,0xc9,0x15,0x84,0x59,0x92,0x31,0x8e,0x49,0x23,0x9c,0xf7,0xe0,0xd7,0x3c,0x1c, + 0x71,0x2e,0x2d,0x49,0xc5,0x4a,0x52,0x77,0xeb,0x6b,0x1d,0x7e,0xd1,0xe1,0x61,0x3f, + 0x75,0x49,0xc6,0x11,0x56,0x7b,0x5e,0xe5,0x0d,0x0b,0x56,0x8f,0xc4,0xbf,0x14,0x12, + 0xfd,0xa2,0x8d,0x6d,0xd8,0xb6,0xdf,0xb4,0x0c,0x28,0x55,0x8c,0x80,0x48,0x1d,0x3a, + 0x0e,0x3f,0x53,0x59,0x57,0x5a,0x76,0x97,0x6d,0xe3,0x4d,0x36,0x3d,0x3a,0xf8,0x6a, + 0x50,0x4d,0x3a,0x33,0x3b,0x27,0x96,0xaa,0x4b,0xe3,0x69,0x1d,0x7f,0xfd,0x75,0xbb, + 0xf0,0xfb,0xc3,0x77,0x7a,0x3f,0x89,0xd6,0xe6,0x6b,0x7d,0x91,0xc7,0x13,0x9d,0xe0, + 0x07,0x1f,0x74,0xf6,0x15,0xca,0xf8,0x66,0x25,0x6f,0x1b,0xe9,0xe4,0xa2,0xc0,0x3e, + 0xd4,0x87,0x0c,0x77,0x81,0xf3,0x03,0xd3,0xbf,0xd2,0xbb,0x79,0x23,0x0a,0xb5,0x3d, + 0x9c,0xb4,0x8c,0x12,0xb7,0xde,0x70,0x46,0xa3,0xab,0x46,0x97,0xb5,0x8d,0xdc,0xea, + 0x37,0x7e,0xdf,0x0f,0xe6,0x77,0xb3,0xe9,0x17,0x5a,0x3e,0xb7,0xe2,0x3d,0x76,0xea, + 0xdd,0xa3,0xb1,0x11,0x4a,0xb0,0xba,0xfc,0xa8,0xdb,0xbe,0x55,0xc6,0x3b,0x7f,0x88, + 0xae,0x3a,0x36,0x27,0xe1,0xb5,0xcb,0x2c,0x8d,0x99,0x35,0x25,0x52,0x8a,0x30,0xbc, + 0x26,0x79,0x3f,0xd2,0xb7,0xf5,0x0d,0x4a,0xeb,0xc5,0x10,0x78,0x93,0x4c,0xb8,0xb8, + 0x92,0x54,0xb3,0x96,0x4b,0xc8,0x64,0x9a,0x42,0x02,0x05,0x62,0x0a,0x6d,0xf4,0x20, + 0xf0,0x06,0x31,0x58,0x57,0x31,0x18,0xbe,0x1a,0x5b,0xaf,0xef,0x0a,0x4b,0xa9,0x96, + 0xc7,0x44,0x04,0x47,0x8e,0x3d,0x4d,0x73,0x61,0xe3,0x24,0xa2,0xaa,0x7c,0x5c,0xd1, + 0x5a,0x76,0x4a,0xe8,0xf4,0x71,0x12,0x83,0x94,0x9d,0x2b,0xf2,0xf2,0xcd,0xeb,0xbd, + 0xdb,0xb3,0x2d,0x78,0xd8,0x44,0x34,0xfd,0x21,0x19,0x77,0xcc,0x9a,0x64,0x05,0x7c, + 0xbe,0x8a,0x4e,0x49,0xdd,0xef,0xcd,0x79,0xfe,0xd0,0xf2,0x32,0xfd,0xde,0x71,0x8c, + 0x7f,0x5a,0xf4,0x3f,0x1e,0x4a,0xa9,0x7d,0x6d,0x6b,0x24,0xa3,0xcb,0x8f,0x4e,0x85, + 0x07,0x96,0xa0,0x00,0x42,0xe4,0x7f,0x3f,0xd6,0xbc,0xfe,0xe0,0x14,0x76,0x19,0x0c, + 0x72,0x7e,0xe7,0x02,0xbd,0xec,0xbb,0xfd,0xda,0x07,0xc8,0x66,0xcf,0xfd,0xb2,0xa7, + 0x96,0x9f,0x72,0x26,0xb2,0x21,0x2e,0x92,0x33,0x26,0x14,0x11,0x80,0x39,0x00,0xfa, + 0xf5,0xf7,0xac,0x4d,0x70,0x3a,0x6a,0xf1,0xbb,0xbe,0x08,0x20,0x82,0x07,0x5e,0x78, + 0xfa,0x56,0xac,0x52,0x36,0xd6,0xc0,0xd8,0xc9,0xd0,0xa7,0xf8,0xd7,0x33,0x7d,0x3b, + 0xff,0x00,0x6a,0x22,0x3b,0x96,0xcb,0x2f,0x04,0xd7,0xa6,0xa3,0xad,0xcf,0x21,0x1f, + 0x64,0xfe,0xce,0x6f,0x2e,0xa1,0xe3,0x1b,0x4d,0x1d,0x5d,0x54,0xea,0xb1,0x9b,0x40, + 0x5d,0x8a,0x8d,0xdd,0x79,0x3d,0x86,0x01,0x1f,0x42,0x6b,0xeb,0x9f,0x86,0x7f,0xb0, + 0x26,0xb3,0xe1,0xaf,0x88,0x37,0x3e,0x2a,0xd5,0x7c,0x51,0x63,0x0b,0xcf,0x2e,0xf7, + 0xb6,0xb2,0x81,0xe6,0x2e,0xbc,0xfc,0x85,0x98,0xa8,0x03,0x90,0x7a,0x1e,0x54,0x57, + 0xc4,0xbf,0x06,0xb5,0x37,0xd2,0x7c,0x77,0xe1,0xeb,0x84,0x6d,0xac,0x97,0x91,0x60, + 0x8e,0xd9,0x20,0x1a,0xfd,0x8a,0xb7,0xf0,0xed,0xfe,0xa3,0x0c,0x72,0xdd,0xf8,0x8a, + 0xf9,0xd2,0x45,0x0d,0xe5,0x5a,0x24,0x70,0x47,0x83,0xe8,0x42,0x97,0x1f,0xf7,0xdd, + 0x7c,0xbe,0x51,0x2e,0x6a,0x73,0x85,0xaf,0xa9,0xfa,0x37,0x1a,0x52,0xe4,0xc5,0xd2, + 0xab,0xde,0x3f,0x91,0xca,0xc7,0xfb,0x3f,0xf8,0x5d,0x2f,0x7e,0xd7,0x74,0x67,0x99, + 0x82,0x80,0x62,0x59,0x04,0x71,0x8c,0x77,0x00,0x7c,0xc0,0xfb,0xee,0xec,0x2b,0x1b, + 0xc6,0x9f,0x0b,0x7e,0x15,0x6b,0xa5,0x2c,0xb5,0x8b,0xb2,0xc9,0x14,0x4b,0x02,0xe9, + 0xb1,0x6b,0x13,0x6d,0x08,0xbd,0x07,0x92,0xb2,0x73,0xf9,0x57,0xa4,0x7f,0xc2,0x01, + 0xa1,0xc9,0xcd,0xd5,0x91,0xd4,0x8f,0xae,0xa3,0x2b,0xdd,0x7f,0xe8,0xc2,0xd8,0xfc, + 0x2b,0x52,0xc7,0x4e,0xb4,0xd3,0xdd,0xe3,0xb5,0xb6,0x8a,0xda,0x20,0x00,0x09,0x0a, + 0x05,0x03,0xaf,0x61,0x5e,0xd4,0xa0,0xf4,0x8f,0x2a,0xd7,0xe7,0xfe,0x47,0xe7,0xbc, + 0xd6,0xd5,0x33,0xc5,0xbe,0x1d,0x7c,0x2f,0xf0,0x47,0xc3,0x7b,0x95,0xbf,0xf0,0xdf, + 0x85,0xb5,0x59,0xef,0xa2,0x79,0x0c,0x72,0x47,0x6f,0x24,0x43,0x6b,0x12,0x14,0x7e, + 0xf8,0xa2,0x9f,0x94,0x81,0x5e,0xa2,0x35,0x3f,0x13,0x5e,0x82,0x6d,0xf4,0x5b,0x4b, + 0x25,0x3d,0x1a,0xfa,0xf7,0xe7,0x1f,0xf0,0x08,0xd1,0x81,0xff,0x00,0xbe,0xeb,0xa0, + 0x9c,0x0d,0x83,0x8e,0xe3,0xf9,0xd4,0xa3,0x00,0x76,0xa2,0x9d,0x2e,0x46,0xe0,0x9d, + 0x97,0x90,0x4a,0x7c,0xce,0xec,0xe5,0xe5,0xd2,0xfc,0x4b,0x75,0x1f,0xfa,0x46,0xbf, + 0x05,0x98,0x27,0xa6,0x9f,0x62,0x03,0x0f,0xf8,0x14,0xac,0xe0,0xff,0x00,0xdf,0x22, + 0x9c,0xbe,0x04,0xb5,0x9b,0x26,0xff,0x00,0x50,0xd4,0xf5,0x33,0xdc,0x4f,0x78,0xe8, + 0x87,0xea,0x91,0x95,0x43,0xff,0x00,0x7c,0xd7,0x41,0x33,0x82,0x06,0x0f,0x71,0xfc, + 0xe9,0xd2,0x5c,0x47,0x14,0x65,0x9d,0xd5,0x14,0x77,0x63,0x8a,0xb5,0x08,0x73,0x3b, + 0xeb,0xea,0xc9,0xbb,0xe8,0x78,0x4f,0xc4,0x6f,0x00,0x78,0x4a,0xd3,0x4b,0xd6,0xf5, + 0x47,0xf0,0xde,0x8b,0xf6,0x9b,0x77,0x48,0xa2,0x92,0x6b,0x24,0x6c,0x64,0xf3,0xc6, + 0x39,0x27,0xd4,0xe6,0xbc,0x72,0x38,0x3c,0x24,0x9f,0xbd,0xb8,0xf0,0xce,0x92,0x8a, + 0xd1,0x92,0xa5,0x6d,0x42,0x6e,0x6f,0xf6,0x42,0x1e,0x9d,0xbb,0xe3,0xdc,0xd7,0xb2, + 0xfc,0x68,0xf1,0x35,0x85,0x97,0x83,0xef,0xd4,0xdd,0xdb,0x17,0xb9,0xbd,0x06,0x15, + 0x67,0xc8,0x93,0x6b,0xbe,0x71,0x80,0x78,0xe3,0x19,0xe9,0xef,0x5e,0x0f,0x67,0xae, + 0x5b,0x5f,0xea,0x51,0x49,0x2c,0xf6,0x70,0x44,0xa3,0x1b,0x59,0xb7,0x00,0x33,0x9e, + 0xc3,0xdf,0xa6,0x3b,0x57,0xca,0x57,0xb7,0x3b,0xe5,0xfe,0xb5,0x3d,0x6a,0x2a,0xea, + 0xcc,0xe8,0x34,0xef,0x0f,0x78,0x5b,0xc4,0x3a,0xd4,0x11,0x8f,0x0f,0x0b,0x58,0x4d, + 0x94,0xd2,0x24,0x51,0xb4,0xd0,0x89,0x25,0xc1,0x2a,0x4e,0x1f,0x3b,0x46,0x31,0xc1, + 0xa8,0x3f,0xe1,0x18,0xf0,0xb6,0x49,0x3a,0x6c,0x51,0x02,0x72,0xa1,0xb5,0x7b,0xa4, + 0xc8,0xf5,0xc0,0x9a,0xad,0x69,0xfe,0x24,0x86,0x5d,0x6e,0x7b,0x99,0x2e,0x60,0x2a, + 0xb6,0x93,0xac,0x6c,0x57,0x60,0x42,0x54,0x85,0x00,0x01,0xf8,0x0c,0x7a,0xd5,0x0d, + 0x3e,0xf6,0xd7,0xec,0xf8,0xb8,0x5b,0x67,0x90,0x1f,0xbc,0xf1,0xf3,0x8f,0xfb,0xe0, + 0xd7,0x13,0xba,0x7a,0x9d,0x09,0x2d,0x91,0xf0,0xad,0xf1,0x5b,0x9d,0xb3,0x2f,0xca, + 0xff,0x00,0xc4,0x2a,0x8a,0xca,0xa4,0x9c,0xb0,0x24,0x1a,0x98,0x4c,0x49,0x75,0xe0, + 0x1c,0x55,0x5d,0x91,0x4e,0xca,0xa5,0xd5,0x66,0x7e,0x40,0x27,0xef,0x7f,0x9e,0x6b, + 0xf6,0x56,0x92,0xdc,0xf8,0x45,0xae,0xc4,0xdf,0x2b,0x8c,0x15,0x47,0x1d,0xf3,0x50, + 0xc9,0xa6,0xd9,0x4f,0xfe,0xb2,0xca,0x06,0xcf,0xfb,0x03,0x34,0x35,0xb0,0x43,0x86, + 0xe0,0xd3,0x22,0x3b,0x77,0x61,0x88,0xe7,0x03,0x9a,0x39,0x46,0x43,0x2f,0x85,0xb4, + 0xa9,0x89,0xcd,0x90,0x4f,0xf7,0x58,0xaf,0xf5,0xaa,0x57,0x1f,0x0f,0xf4,0x99,0xc1, + 0x05,0x25,0x50,0x7d,0x18,0x1f,0xe6,0x2b,0x5b,0xcd,0x90,0x1e,0x1b,0x3f,0x5a,0x92, + 0x2b,0xa9,0xb7,0x72,0x15,0xb1,0x53,0xca,0xc2,0xec,0xe4,0x6e,0x7e,0x13,0xe9,0xd2, + 0x9c,0xc7,0x20,0x5f,0xf7,0xa1,0x1f,0xcc,0x62,0xb3,0x67,0xf8,0x40,0xbf,0xf2,0xc6, + 0x68,0xfd,0xbe,0x66,0x5f,0xf1,0xaf,0x5a,0xb2,0xd4,0x6d,0x5e,0x10,0xb3,0xa1,0x56, + 0x1d,0xf6,0xe6,0xa4,0x0d,0x61,0x2b,0x12,0x65,0x8c,0x73,0xc6,0x41,0x1c,0x7e,0x55, + 0x9b,0x4b,0xaa,0x35,0xe6,0x69,0x68,0xcf,0x11,0x9b,0xe1,0x4e,0xa3,0x1f,0x31,0x4a, + 0xe7,0xb0,0xd9,0x28,0x3f,0xcc,0x0a,0xa6,0xfe,0x08,0xf1,0x0d,0x99,0xfd,0xdc,0x97, + 0x18,0xf6,0x5d,0xdf,0xc8,0xd7,0xbe,0x0b,0x3b,0x27,0x3f,0x2c,0x88,0x7b,0xf0,0xf4, + 0xe1,0xa4,0x46,0xdf,0x75,0xcf,0xe0,0x6b,0x27,0x18,0x75,0x45,0xf3,0xd4,0xee,0x7c, + 0xf5,0x25,0xa7,0x89,0x2c,0xd7,0x0e,0xc4,0x81,0xff,0x00,0x3d,0x15,0x87,0xf3,0x15, + 0x56,0x4b,0xcd,0x54,0x13,0xe7,0x58,0x41,0x70,0x3b,0xfc,0xaa,0x4d,0x7d,0x1c,0x74, + 0x53,0x8e,0x24,0x38,0xe9,0xc8,0xaa,0xd7,0x1e,0x1f,0x8e,0x55,0xfd,0xe4,0x50,0xc8, + 0x0f,0x1f,0x3a,0x8a,0x9e,0x48,0x3e,0xa5,0x7b,0x59,0x47,0x73,0xe7,0x61,0xab,0x2c, + 0x32,0x07,0x97,0x47,0x2b,0x20,0x39,0x0c,0xa0,0x8c,0x53,0x66,0xd4,0xec,0x6e,0x67, + 0x69,0x64,0x7b,0xb8,0x64,0x63,0xf3,0x62,0x4e,0x3f,0x23,0x5e,0xf5,0x71,0xe0,0x9b, + 0x29,0x08,0x26,0xc6,0x2e,0x7a,0xed,0x18,0xaa,0x17,0x1f,0x0e,0xf4,0xf9,0x41,0x06, + 0xd1,0xd3,0x3f,0xdd,0x24,0xff,0x00,0x8d,0x66,0xe9,0xc6,0xe6,0x9e,0xdb,0xba,0x3c, + 0x81,0xb5,0x4b,0x6b,0x82,0x0a,0x6a,0x06,0x2c,0x4a,0xd2,0xe1,0xa1,0x07,0x96,0xc7, + 0x1f,0x41,0x8a,0xea,0xec,0xbc,0x5f,0x6e,0x8b,0x68,0xd1,0x3d,0xb2,0xbc,0x0c,0x08, + 0x64,0x5c,0x16,0xc7,0xd7,0xdf,0x15,0xbd,0x7d,0xf0,0x9b,0x4d,0x9c,0x1c,0x23,0x27, + 0xfb,0xc8,0x0f,0xf4,0x15,0x8b,0x73,0xf0,0x7e,0xdd,0x48,0x11,0x4a,0xa5,0xbb,0x03, + 0x95,0xfe,0xa6,0xb1,0x9e,0x1e,0x33,0x5a,0xa3,0x68,0x57,0x6b,0x63,0x76,0x6f,0x1c, + 0x45,0xac,0xc0,0x62,0xbb,0x96,0x78,0xd3,0x8f,0x9a,0x07,0x8c,0x9c,0x8e,0xfd,0x2b, + 0x52,0xd7,0xc5,0x96,0x68,0x90,0x47,0x1e,0xa5,0x7a,0xb1,0x41,0x1f,0x94,0x8b,0x73, + 0x08,0x60,0xa0,0x03,0x80,0x0f,0xa0,0x27,0x38,0xaf,0x3f,0x97,0xe1,0x0d,0xea,0xe7, + 0xc9,0xb8,0x24,0xff,0x00,0xb3,0x27,0xf8,0x8a,0xa7,0x2f,0xc3,0xbf,0x10,0xda,0x03, + 0xe5,0x49,0x23,0x63,0x9e,0x00,0x3f,0xc8,0xd7,0x1c,0xf0,0x14,0xda,0xd3,0xf4,0x3a, + 0xe3,0x8c,0x93,0xea,0x77,0x37,0x7e,0x3f,0xbb,0xd0,0x6f,0x16,0x5b,0x5d,0x4a,0xd6, + 0x61,0x22,0x14,0x20,0xa1,0x5c,0x7a,0xe7,0xa6,0x2a,0x39,0x3c,0x4b,0x2d,0xe6,0xa1, + 0xa7,0xf8,0x84,0xc1,0x66,0x5e,0xd5,0x96,0x39,0x23,0xb5,0x9b,0x0c,0xcc,0x0f,0x07, + 0xe6,0x2c,0x72,0x73,0xd7,0xda,0xbc,0xfd,0xf4,0x8f,0x13,0x59,0x9f,0x9e,0x36,0x75, + 0x1c,0x7c,0xea,0x7f,0xc2,0xa0,0x69,0x75,0x48,0x81,0x49,0x74,0xe8,0x99,0x49,0xc9, + 0x0a,0x00,0xcd,0x61,0x2c,0xb6,0x93,0x7c,0xcd,0x6a,0xd5,0xaf,0xe4,0x75,0x43,0x32, + 0xaf,0x08,0xa8,0x29,0x68,0x9d,0xd2,0xf3,0xee,0x7a,0x2e,0xa5,0xe2,0x31,0xa4,0xc7, + 0x79,0x15,0xcd,0x98,0x4b,0x8b,0xfb,0x69,0x18,0x3e,0xe0,0xe4,0x17,0x7c,0xe4,0x9e, + 0x3b,0x0c,0x66,0xa7,0xf0,0xc6,0xb1,0xa1,0x5e,0x68,0x1f,0xd9,0xba,0xe9,0x68,0xe3, + 0x8a,0x71,0x71,0x0c,0x99,0x62,0x33,0xfc,0x4a,0x42,0x83,0xe9,0x5e,0x5d,0x75,0x78, + 0x6e,0x1c,0x3d,0xd6,0x99,0x3e,0xf0,0x36,0xee,0x47,0x70,0x71,0xe9,0xc1,0xa6,0xa6, + 0xa1,0x66,0x8a,0x17,0xce,0xbd,0xb6,0xe7,0xf8,0x98,0x30,0x1f,0x81,0x15,0x8d,0x4c, + 0xae,0x12,0x83,0x8d,0xda,0x6d,0xa7,0x75,0xe5,0xd8,0xe8,0xa7,0x9a,0xd6,0xa7,0x35, + 0x3d,0x1a,0x49,0xab,0x3d,0x9a,0x6e,0xee,0xff,0x00,0x33,0xd0,0xbc,0x5f,0xac,0xc3, + 0xae,0xf8,0x8a,0xe6,0x64,0x8f,0xf7,0x5b,0x02,0x46,0x0f,0x18,0x55,0x5d,0xa3,0x8e, + 0xdd,0x8d,0x72,0x0c,0x8c,0xca,0x18,0x95,0x18,0x38,0xc0,0x1f,0x8d,0x24,0xda,0xaa, + 0x6a,0x37,0x0f,0x2a,0xea,0x51,0xab,0x37,0x69,0x20,0xc6,0x3f,0x23,0x53,0xda,0x5a, + 0xc8,0xec,0x54,0xdd,0x59,0xcc,0x84,0xe7,0x0b,0x21,0x43,0xff,0x00,0x8f,0x0a,0xea, + 0xa3,0x43,0xea,0xf4,0xe3,0x4e,0x3b,0x23,0xce,0xaf,0x5e,0x58,0x9a,0xb2,0xab,0x3d, + 0xdb,0xb9,0x25,0xa4,0x4a,0xf6,0xd2,0xb0,0x51,0xbb,0xd8,0x74,0xe3,0xad,0x71,0x92, + 0xab,0x5c,0x6b,0x01,0xb0,0x4a,0x89,0x17,0xb7,0xd2,0xbb,0xd4,0xb7,0xbb,0x87,0x70, + 0x4b,0x49,0x25,0x81,0xf2,0x18,0x43,0x22,0x39,0xc7,0xe1,0x5c,0xfc,0xba,0x55,0xdc, + 0x7a,0xa0,0x76,0xb6,0x9d,0x60,0x32,0x7c,0xa1,0xd4,0x8c,0x0e,0xd9,0xad,0x56,0x97, + 0x32,0x4b,0x54,0x7b,0x8f,0x83,0xa6,0x36,0x5a,0xc5,0x84,0xc0,0xe0,0xc5,0x22,0x37, + 0xd3,0x0c,0x0d,0x7e,0xcf,0xf8,0x73,0xc5,0x36,0x11,0x78,0x57,0x43,0x96,0xe6,0xea, + 0x28,0x0c,0xd6,0x50,0xb9,0x69,0x5b,0x6a,0xf2,0x80,0xf5,0x3c,0x57,0xe2,0xce,0x8c, + 0x47,0xda,0x10,0x82,0x0f,0x23,0x90,0x7d,0xeb,0xf6,0x37,0xe1,0x0d,0xa5,0x8b,0xfc, + 0x3b,0xf0,0xe5,0xdc,0x36,0x36,0xeb,0x3b,0xd9,0xc7,0xbe,0x54,0x89,0x43,0x31,0x03, + 0x04,0x93,0x8e,0x4f,0x15,0xf1,0x59,0x64,0xe5,0x4e,0x53,0x51,0xd0,0xfd,0x4f,0x8d, + 0x54,0x65,0x1a,0x13,0xf5,0xfd,0x0e,0x90,0xf8,0xcb,0x4d,0x72,0x7e,0xcf,0x33,0x5e, + 0x7f,0xd7,0xa4,0x12,0x4d,0xfa,0xa2,0x91,0x40,0xd6,0x6e,0xe4,0x53,0x2c,0x1a,0x4d, + 0xe4,0x81,0x9b,0x1f,0x3e,0xc8,0xb0,0x00,0xea,0x43,0x30,0x38,0xfc,0x3b,0x55,0xe9, + 0xf2,0xd2,0x42,0x3b,0x6f,0xce,0x07,0xb0,0x3f,0xfd,0x6a,0x90,0x21,0x23,0xef,0xe7, + 0x92,0x6b,0xdd,0x73,0xa9,0x37,0xab,0xfb,0xb4,0xfc,0xef,0xdc,0xfc,0xb5,0xdb,0xa2, + 0x39,0x7d,0x4f,0xc5,0x7a,0xa6,0x9d,0x7d,0x67,0x6d,0x36,0x94,0xa4,0x5c,0xa3,0xcc, + 0x3c,0x89,0xfc,0xd7,0x54,0x42,0x80,0x92,0xa4,0x28,0xea,0xeb,0xc0,0x27,0xbd,0x56, + 0x8f,0xc5,0x2d,0x38,0xff,0x00,0x4b,0xd5,0xee,0x34,0xf5,0xcf,0x2e,0xba,0x3c,0xb0, + 0xa8,0xff,0x00,0x81,0xca,0x19,0x6b,0x47,0x56,0xc3,0x78,0xcb,0x4a,0x42,0x58,0x67, + 0x4d,0xbb,0x19,0x1d,0xbf,0x79,0x6d,0x55,0x2f,0x0d,0xce,0x94,0x16,0xe8,0xf9,0x92, + 0x24,0x11,0x84,0xfb,0x34,0x11,0x8f,0xde,0x30,0x23,0x05,0x73,0x8e,0xdb,0x86,0x3d, + 0xc7,0x7a,0xf2,0xeb,0x62,0x67,0x46,0xab,0x8a,0xd5,0x7a,0xbf,0xd2,0xc6,0xd1,0x8a, + 0x92,0x2d,0x69,0xb3,0xe9,0x1a,0x8d,0xc9,0x0b,0xe2,0x36,0xd5,0x25,0x07,0x02,0x34, + 0xbc,0x4f,0x4e,0xeb,0x1e,0x3f,0x95,0x5b,0xb8,0xf0,0xe6,0x97,0x66,0xa2,0x58,0x74, + 0x98,0x6f,0xa6,0x04,0x64,0xcd,0xfb,0xc7,0x03,0xb9,0x0c,0xd9,0x39,0xf6,0xac,0xdb, + 0xdd,0x35,0x7c,0x45,0x71,0x13,0x5c,0x5b,0xc1,0x35,0xa2,0x3b,0x66,0x29,0x17,0x78, + 0x90,0x10,0x30,0x70,0x7a,0x11,0x8e,0x9e,0xfe,0xd5,0x88,0xc6,0xc7,0xc1,0xb3,0x6a, + 0x1a,0xa0,0x47,0xb6,0x82,0xdf,0x53,0x8e,0x26,0x11,0x1d,0xa8,0x22,0x68,0x23,0x04, + 0x11,0x90,0x36,0x86,0x62,0xdd,0x3a,0x8a,0xd6,0x18,0xa8,0xb6,0xd3,0x87,0xcf,0xfe, + 0x1c,0x6a,0x0d,0xec,0xcc,0xdf,0x89,0xb2,0x43,0x61,0xe1,0xab,0xc9,0x85,0x8d,0x9c, + 0xeb,0x14,0xc0,0x14,0xb8,0x89,0x4a,0x04,0x12,0xc9,0xc7,0x23,0x03,0xad,0x78,0xb5, + 0x9c,0xf6,0xb7,0x64,0x33,0x68,0x3a,0x3e,0xc2,0x4b,0x31,0x92,0x22,0xd9,0x04,0xf1, + 0x80,0x0f,0xbd,0x7a,0x57,0xc6,0xaf,0x15,0x69,0x7a,0x57,0x85,0x88,0x96,0x7b,0x67, + 0x7b,0xdb,0xc3,0xe4,0x2c,0x92,0x1c,0x38,0x12,0x12,0x58,0x63,0x93,0xc1,0xfd,0x7a, + 0xd7,0x8e,0xd8,0x78,0x9b,0x4d,0x16,0xe2,0x38,0xee,0xec,0xb7,0xb8,0x1e,0x61,0xb8, + 0x2d,0x81,0x93,0xd1,0x78,0xce,0x71,0x9c,0x9e,0xc3,0xb9,0x26,0xbc,0xfa,0xd6,0xe6, + 0x6c,0xf4,0x28,0xaf,0x74,0xe8,0x63,0xd2,0xb4,0x99,0x92,0x49,0x67,0xf0,0xae,0x9b, + 0xf6,0x70,0xc5,0x98,0x24,0x45,0x43,0x60,0x70,0x4e,0x58,0x01,0xff,0x00,0xd7,0xa9, + 0xfc,0x17,0xf0,0xe7,0xc2,0x7a,0xfd,0x85,0xdd,0xd6,0xa1,0xa6,0x20,0x97,0xed,0x4e, + 0xa8,0xb0,0x86,0x0a,0xa9,0x85,0x20,0x71,0xf5,0x35,0x42,0x1d,0x63,0x4e,0x23,0xcb, + 0x37,0xda,0x5a,0xa0,0x1b,0xe4,0xda,0xd9,0x38,0x0b,0x85,0x51,0x9e,0xfc,0xf2,0x3f, + 0xfa,0xd5,0xd8,0xfc,0x33,0xfb,0x3c,0x9a,0x04,0xce,0xe1,0x58,0xb5,0xcb,0x90,0x49, + 0x03,0x23,0x0b,0xee,0x2b,0x8e,0x4e,0xea,0xe8,0xdf,0x97,0xa2,0x3f,0x31,0xcc,0x8a, + 0x66,0x52,0x4f,0xce,0x17,0x21,0x47,0xa6,0x71,0x9a,0xf3,0x1d,0x47,0x55,0x9e,0xda, + 0x58,0xd2,0x43,0xb1,0xa1,0x91,0xd4,0x1c,0x9c,0x8f,0x98,0x9e,0x7f,0x9f,0xe3,0x5d, + 0x0c,0xda,0xc3,0xdb,0xf8,0xe7,0xec,0xcc,0xff,0x00,0x23,0x29,0x40,0x0f,0xba,0x03, + 0xfc,0xc5,0x71,0xde,0x35,0x99,0x6c,0xf5,0xab,0x98,0x80,0xdd,0xb8,0x86,0xe4,0xff, + 0x00,0x7b,0xb7,0xb7,0xff,0x00,0x5a,0xbf,0x52,0xc4,0xcb,0x9e,0x37,0x5d,0x1d,0x8f, + 0x8f,0xa2,0xac,0xf5,0xea,0x8e,0xc7,0xc2,0xfe,0x35,0x5d,0x49,0xe1,0xb1,0xbe,0x23, + 0xcd,0x3c,0x2c,0xe5,0xba,0xf5,0xc6,0x6b,0xa9,0x36,0x2c,0x84,0x91,0xeb,0xc5,0x78, + 0x23,0xdd,0xc8,0xad,0x2a,0x41,0x88,0xd1,0x06,0xe3,0x80,0x49,0x1c,0xfe,0x95,0xdd, + 0xf8,0x3b,0xe2,0x5f,0x92,0x45,0xbe,0xa7,0xba,0x78,0x81,0xc2,0xb9,0x39,0x75,0x1e, + 0xfe,0xb4,0xa8,0x62,0x5c,0x55,0xa6,0x5d,0x4a,0x09,0xeb,0x13,0xbb,0x62,0x50,0xe0, + 0x8f,0xca,0x84,0x90,0x86,0x38,0x1c,0x9e,0x84,0xd6,0x8d,0x84,0xb6,0x3a,0xc4,0x46, + 0x4b,0x39,0x92,0x75,0xea,0x76,0x9e,0x47,0xd4,0x76,0xa5,0x97,0x4f,0x21,0x87,0xcb, + 0xd0,0xd7,0xa8,0xa7,0x19,0x2b,0xa3,0x89,0xa6,0x9d,0x99,0x5a,0xd9,0xdc,0x93,0xd3, + 0xa5,0x2b,0x32,0x33,0x16,0x27,0xaf,0x60,0x2a,0xc2,0x5a,0x94,0x8d,0xc8,0x5e,0xd8, + 0xaa,0xef,0x66,0x55,0x88,0x1d,0x05,0x2d,0x18,0x87,0xa3,0xc4,0x3a,0x21,0x27,0xde, + 0x95,0xa4,0xec,0xbf,0x21,0x3d,0xd6,0xa1,0xf2,0x18,0x60,0x8f,0xd7,0xbd,0x3b,0x6b, + 0x7a,0x73,0x4d,0xa4,0x02,0x89,0xee,0x60,0xe5,0x26,0x93,0x1f,0xef,0x1a,0x7a,0x6b, + 0x37,0xaa,0x31,0xe6,0x96,0xc1,0xfe,0x20,0x0d,0x42,0xc9,0x2e,0xf5,0x65,0x72,0x00, + 0x3c,0xae,0x3a,0xd3,0xd9,0xa3,0x55,0xde,0xe5,0x50,0x0e,0x85,0xbf,0xfa,0xf5,0x95, + 0x93,0x7b,0x15,0x76,0x8b,0x0b,0xe2,0x0b,0x95,0xfb,0xdb,0x18,0x7b,0xad,0x58,0x5f, + 0x13,0xb2,0xae,0x64,0x86,0x30,0x07,0x53,0x9c,0x57,0x3d,0x33,0xca,0xc7,0x29,0x19, + 0x0a,0x4f,0xdf,0x71,0xb4,0x7e,0x5d,0x7f,0x95,0x22,0xc1,0xf7,0x5e,0x46,0x32,0x37, + 0x6c,0xf4,0x07,0xd8,0x7f,0x93,0x51,0xc9,0x1e,0xc3,0xe7,0x67,0x48,0x3c,0x4e,0xb3, + 0x29,0xdb,0x6e,0xc8,0x98,0xfb,0xf9,0xeb,0xf4,0x06,0xa0,0x8f,0x59,0x80,0xb6,0x19, + 0x30,0x09,0xe4,0x91,0x93,0x5c,0x76,0xb9,0xaa,0x79,0x6e,0xa9,0x14,0xfb,0x65,0x19, + 0xcc,0x69,0x86,0x2d,0xfd,0x3f,0x31,0x55,0xed,0xf5,0xbd,0x96,0xcc,0xb7,0x2b,0x1c, + 0x72,0xf1,0xb7,0x6f,0x7f,0xae,0x0f,0xeb,0x5c,0xee,0x50,0x8c,0xac,0x6c,0x93,0x6a, + 0xe7,0xd5,0x3f,0xb3,0x6d,0xe5,0xad,0xe6,0xa9,0xac,0x58,0x25,0xac,0x37,0x86,0x48, + 0x12,0x6d,0x92,0x46,0x0f,0xdd,0x6d,0xa7,0xa8,0xff,0x00,0x6c,0x55,0xbf,0x8f,0xbe, + 0x1c,0xd2,0xac,0xe2,0xd3,0x75,0x08,0x6c,0xa2,0xd3,0x8c,0x93,0x3c,0x32,0x79,0x70, + 0x88,0x83,0x1c,0x02,0x33,0x80,0x33,0xd1,0xab,0xe6,0xaf,0x86,0x5f,0x19,0xf5,0x6f, + 0x85,0x9e,0x24,0x3a,0xb6,0x9d,0x0c,0x37,0xac,0xf0,0x35,0xbb,0x5b,0xdd,0xee,0x28, + 0xca,0xc4,0x1e,0xcc,0x0f,0xf0,0x8a,0xe9,0xbe,0x28,0xfe,0xd4,0xd7,0xdf,0x12,0xfc, + 0x35,0x06,0x9d,0x79,0xa2,0xd9,0xe9,0x6f,0x6f,0x72,0xb3,0xa5,0xc5,0xb3,0xb7,0x24, + 0x06,0x04,0x60,0x8e,0x98,0x6f,0x5a,0xe4,0x95,0x44,0xdd,0xe2,0xcb,0x8c,0x1f,0x32, + 0xba,0x2f,0xff,0x00,0x65,0x2b,0xae,0xe4,0x39,0x52,0x38,0x23,0xa5,0x2b,0x68,0x11, + 0xce,0x0e,0xe4,0x47,0x3f,0xed,0xa8,0x35,0xc2,0xd8,0x7c,0x4a,0xb6,0x6b,0x38,0x9a, + 0xea,0x67,0xb5,0xe3,0x6e,0x48,0x3b,0x7f,0x02,0x38,0xad,0x9b,0x2f,0x88,0x56,0xd7, + 0x0f,0xb2,0x3d,0x56,0x10,0xbb,0x86,0x37,0x38,0x07,0xf0,0xcf,0x5a,0xcb,0xeb,0x09, + 0x74,0x3a,0x3d,0x9a,0x36,0xe5,0xf0,0x2d,0x95,0xc2,0x7c,0xd6,0x16,0xec,0x7d,0x42, + 0x60,0xfe,0x95,0x9f,0x71,0xf0,0xb6,0xc2,0x60,0x7f,0xd0,0x0a,0xfb,0xa4,0x87,0xfa, + 0x9a,0xd3,0xb1,0xf1,0xce,0xe9,0xc8,0x9e,0x78,0x2e,0x62,0x60,0x3e,0x44,0xc0,0xeb, + 0xda,0xba,0x68,0xbc,0x47,0x6b,0x70,0x36,0xc2,0xae,0x84,0x8e,0x19,0x80,0x20,0x7e, + 0x19,0xad,0x61,0x89,0x8c,0xba,0x90,0xe9,0x58,0xf3,0x1b,0xaf,0x83,0x1a,0x6c,0xbc, + 0x88,0x65,0x42,0x7f,0xbc,0x8a,0xdf,0xd2,0xb2,0xa7,0xf8,0x2d,0x6a,0x87,0xe4,0x9c, + 0xa7,0xd5,0x0a,0xff,0x00,0x23,0x5e,0xc8,0xfe,0x24,0xb5,0x8f,0x72,0x98,0xd8,0xba, + 0x81,0xf7,0x7b,0xe7,0xeb,0x54,0xa6,0xf1,0x34,0x73,0x44,0xc4,0x22,0xa8,0x1e,0xab, + 0x82,0x7e,0x99,0xce,0x69,0x7d,0x66,0x9b,0xea,0x54,0x61,0x24,0x78,0xe9,0xf8,0x43, + 0x74,0xa0,0x9b,0x5b,0xe5,0x62,0x3b,0x09,0x30,0x7f,0x51,0x51,0x49,0xe0,0x7f,0x13, + 0xe9,0x31,0xb3,0xc7,0x72,0xfe,0x5a,0x8c,0x92,0x1c,0x7f,0x8d,0x7a,0x45,0xf5,0xc4, + 0x32,0x87,0x9e,0xdd,0x02,0x4e,0x4e,0xe1,0xd0,0x82,0x7d,0xc7,0xff,0x00,0xae,0xb3, + 0xee,0xf5,0x09,0xe6,0x89,0xa0,0x77,0x2e,0x37,0x65,0xb9,0xfd,0x3f,0xfa,0xd5,0xce, + 0xf1,0x10,0xb6,0xa8,0xda,0xcc,0xe0,0xec,0x35,0x0f,0x11,0xd9,0xdc,0xc4,0x1a,0xdd, + 0x6e,0x49,0x20,0x0d,0xf1,0x8c,0x9f,0x4e,0x48,0x1f,0xce,0xbf,0x5d,0x3f,0x62,0x3f, + 0x88,0x37,0x1f,0x11,0x3e,0x01,0xe9,0x17,0x37,0x88,0x12,0xeb,0x4f,0xb8,0x9b,0x4f, + 0x97,0x68,0xc6,0x4a,0x10,0xc0,0x9f,0x7c,0x38,0x1f,0x85,0x7e,0x5a,0x68,0xba,0xdc, + 0x63,0xc5,0xba,0x65,0xba,0x39,0x65,0x17,0x31,0xf9,0x81,0xb9,0x18,0x0c,0x38,0x15, + 0xfa,0x41,0xfb,0x07,0xea,0xfa,0x46,0x81,0xe0,0x8f,0x19,0x78,0x76,0x6d,0x52,0xce, + 0x0b,0xfb,0x6f,0x17,0xea,0x28,0x96,0x92,0x4e,0xab,0x29,0x40,0x22,0x00,0x85,0x27, + 0x24,0x64,0x1e,0x71,0xda,0xb8,0xea,0xc1,0x54,0x49,0xd8,0xdb,0xda,0x49,0xc7,0x95, + 0xbd,0x0f,0xa8,0xf6,0x15,0xbb,0x4f,0x94,0x9c,0x2b,0x70,0x7d,0xc8,0xff,0x00,0x03, + 0x4b,0x7d,0x31,0xb4,0xb6,0x91,0xc2,0x86,0x6e,0x8a,0x99,0xfb,0xcc,0x78,0x03,0xf3, + 0x22,0x96,0x1c,0xc8,0xee,0xe4,0xf4,0x0a,0xbf,0xd7,0xfa,0xd5,0x63,0x38,0xbf,0xd4, + 0xd2,0x20,0x0f,0x95,0x6f,0x97,0x27,0xd5,0xba,0x01,0xff,0x00,0xa1,0x7e,0x42,0xb0, + 0xb2,0x51,0xd3,0x77,0xa2,0xfc,0xbf,0xe0,0x92,0x91,0xe0,0x5f,0x1f,0x3f,0x68,0xa3, + 0xf0,0x5f,0xc7,0x1a,0x5d,0xb5,0xde,0x80,0x35,0x7b,0x89,0x2c,0x24,0x78,0xe6,0xb7, + 0xbb,0xf2,0x44,0x71,0xbc,0xa0,0x60,0xab,0x23,0x64,0xfe,0xe4,0x73,0x90,0x3a,0xf1, + 0x5e,0x79,0x27,0xed,0xe3,0xa7,0xdc,0x23,0x25,0xe7,0x87,0x35,0x78,0xc1,0x39,0xc4, + 0x17,0x70,0x1c,0x73,0xc6,0x0f,0x96,0x0d,0x72,0xbf,0xb6,0xc5,0xbd,0xd7,0x89,0x3e, + 0x3f,0xe8,0x9a,0x35,0x92,0x19,0x6e,0xa5,0xd3,0x6d,0x6d,0xa2,0x8c,0x77,0x91,0xe6, + 0x97,0x03,0xf5,0x15,0xd1,0xfe,0xd4,0x3f,0x07,0xbc,0x31,0xe1,0xef,0x82,0xd6,0x12, + 0x78,0x76,0xca,0xcc,0x6a,0x7e,0x1b,0xbc,0x82,0xc7,0x53,0xbb,0xb7,0x89,0x56,0x59, + 0x0b,0x42,0x33,0xe6,0x30,0x19,0x62,0x59,0xe3,0x3c,0xff,0x00,0x7a,0xbe,0x7b,0x13, + 0x2a,0xd2,0xab,0x59,0xc2,0xdc,0xb0,0xef,0xd7,0x43,0xf5,0xcc,0xb7,0x28,0xc9,0x7e, + 0xad,0x80,0x58,0xc8,0x49,0xd5,0xc4,0x5f,0x54,0xec,0x96,0xb6,0x4d,0xfa,0xbb,0x24, + 0x69,0xdb,0xfe,0xdd,0x3e,0x0a,0x90,0x22,0xdd,0x78,0x63,0xc4,0x72,0x61,0xb7,0x7c, + 0xb3,0xc4,0xd9,0xe7,0xb8,0xf3,0x54,0x1e,0x7b,0xd6,0xa6,0x99,0xf1,0x97,0xc3,0x5f, + 0x1a,0xee,0xed,0x2d,0x34,0xad,0x0e,0xfa,0x0b,0x5f,0xed,0x2f,0x3a,0x78,0xf5,0x58, + 0xe1,0xf2,0xce,0x6d,0xca,0x28,0xc2,0xc8,0xfb,0xb1,0xb4,0x1c,0x9e,0x95,0xcb,0xf8, + 0x8b,0xf6,0x74,0xd0,0x34,0x3f,0xd9,0x76,0xe8,0x1b,0x0b,0x63,0xe3,0xdb,0x1d,0x3a, + 0x1d,0x62,0xee,0x7d,0xbf,0xe9,0x11,0xa3,0xc8,0x58,0xa1,0xf6,0x08,0xae,0xbf,0x54, + 0x35,0xe7,0x7f,0xb3,0x06,0xab,0xa7,0x68,0x8f,0x1d,0xc6,0xa3,0x7b,0x15,0x94,0x4d, + 0x75,0x28,0x32,0x5c,0x30,0x44,0xf9,0x52,0x2e,0xac,0x78,0x1c,0x33,0x0f,0xc6,0xb9, + 0xe7,0x2a,0xd4,0xad,0x4e,0xa4,0x57,0xbd,0x1b,0xe8,0xb5,0x23,0x15,0x95,0x64,0xd3, + 0xc0,0x57,0xc6,0xe0,0x1c,0xef,0x4e,0x6a,0x1a,0xbb,0xa7,0xaa,0xd5,0x79,0x35,0xb1, + 0xf4,0x47,0x89,0xb5,0x9d,0x3e,0xdb,0xc0,0xcf,0x0d,0xc5,0x8d,0xad,0xe4,0xd6,0xb7, + 0x06,0x24,0x89,0xed,0xd1,0xbf,0x77,0xf2,0x85,0xc6,0x47,0x00,0x02,0x7a,0x62,0xb8, + 0x3b,0x2d,0x1b,0x47,0xd5,0x91,0x99,0x74,0x9b,0x28,0xc7,0x99,0x82,0xee,0x36,0xed, + 0x04,0x70,0x3f,0x3c,0xd3,0xbe,0x20,0xf8,0x9b,0x4e,0x58,0x2c,0x1a,0x3b,0xeb,0x77, + 0x92,0x57,0xf3,0x40,0x12,0x2f,0x28,0x51,0x76,0xbf,0xa6,0x0f,0xf4,0xaa,0x9a,0x3f, + 0x8c,0xb4,0x99,0xf6,0xc6,0xd7,0x96,0xf0,0xa1,0x52,0x1d,0x5d,0x86,0x5b,0xf2,0xe3, + 0x9c,0xe3,0xbe,0x07,0x7a,0x57,0x76,0xb9,0xf0,0x96,0x51,0x7c,0xb6,0x35,0x2c,0xbc, + 0x03,0xe1,0xfb,0xa9,0x75,0x7b,0xa7,0xd3,0xe1,0x6b,0x7b,0x58,0x62,0x29,0x10,0x62, + 0xa0,0xb3,0xbe,0xd0,0x49,0xeb,0xfa,0x55,0x59,0xad,0x3c,0x25,0x6c,0x56,0x39,0x34, + 0x83,0x2b,0x2a,0xe3,0x28,0xf2,0x6d,0x51,0xd8,0x0f,0x98,0x7e,0xbc,0xd6,0xdc,0x3a, + 0x9e,0x99,0xfd,0x8f,0xe2,0x30,0xb7,0xb6,0xeb,0x04,0x86,0xd2,0x38,0xd9,0x24,0x00, + 0x30,0x0e,0x49,0xc6,0x3d,0x00,0xcd,0x71,0xd7,0x92,0xd9,0x5c,0x5c,0x3b,0x67,0xce, + 0x50,0x4a,0xab,0x2b,0x85,0x1b,0x41,0xc0,0xe0,0x8f,0x4a,0x95,0xbb,0xbb,0x1a,0xd6, + 0xf7,0x3f,0x33,0x3c,0x69,0x31,0xb2,0xf1,0xf5,0xbc,0xb9,0x0a,0xbe,0x64,0x6e,0x48, + 0xea,0x00,0x03,0x3f,0xd6,0xb1,0xfe,0x21,0x84,0x7d,0x79,0xa6,0x53,0xbb,0xcc,0x55, + 0xc7,0xfd,0xf3,0x90,0x6b,0x4b,0xe2,0xb1,0x16,0xfe,0x2f,0xb2,0x99,0xc0,0x28,0x56, + 0x32,0xc3,0xb6,0x37,0x1c,0xd7,0x3f,0xae,0xdc,0x3d,0xe3,0x30,0x89,0x04,0xa7,0x60, + 0x8d,0x48,0x42,0xc4,0x2e,0x77,0x02,0x3d,0x0f,0x00,0x7d,0x33,0xeb,0x5f,0xa4,0xd6, + 0x95,0xb9,0xa3,0xe6,0x7c,0xa5,0x25,0x75,0x19,0x79,0x19,0x96,0x3a,0x8c,0x4b,0x78, + 0x5a,0x66,0x2b,0x1c,0xff,0x00,0x2b,0xb0,0x39,0xfc,0xc7,0x7e,0xd4,0xe2,0xbf,0x67, + 0x90,0x43,0x2a,0x1b,0x73,0x92,0x0c,0xbc,0x9c,0xe7,0xa0,0x61,0xf8,0x74,0xaa,0x30, + 0xe9,0xf7,0x09,0x3c,0x6b,0x2a,0xac,0x2b,0x93,0x80,0xdc,0x1f,0x5e,0xf5,0xe8,0x13, + 0xc8,0x92,0xdb,0x58,0xdd,0x4c,0xd1,0x49,0x0e,0xa1,0x01,0x8a,0xf2,0x18,0xc0,0x01, + 0x9d,0x4e,0x03,0xf4,0xfb,0xdc,0x03,0xc7,0x53,0xf9,0x56,0x70,0x5d,0x0d,0x64,0xec, + 0x75,0x7f,0x0f,0x21,0xbe,0xf0,0xec,0x81,0xae,0xe0,0x31,0xc3,0x34,0xa2,0x19,0x24, + 0x41,0xb9,0x33,0x81,0xb5,0xb3,0xd9,0x4e,0x7a,0xe7,0x1e,0xd5,0xea,0x3e,0x50,0x66, + 0x2a,0xc9,0x8e,0x32,0x18,0x74,0x35,0x8f,0xe1,0x2d,0x73,0x4d,0x9a,0xc2,0xda,0xc4, + 0x4e,0x1e,0x58,0x21,0x0a,0xd2,0x36,0x48,0x60,0x38,0xfb,0xc7,0x83,0xf9,0xf7,0xe2, + 0xb4,0xad,0xb5,0xa9,0x2e,0x92,0x74,0xd0,0xb4,0x7b,0xdd,0x74,0xc1,0x92,0xcf,0x61, + 0x6b,0x24,0xc9,0x18,0x1f,0x78,0x33,0x28,0xda,0xb8,0xff,0x00,0x68,0x8a,0xeb,0x53, + 0x54,0x63,0xab,0xd0,0xe7,0x70,0x75,0x1d,0xec,0x4a,0xd6,0x23,0xc9,0x90,0x81,0xbb, + 0x38,0xe2,0xa8,0xb5,0xba,0xca,0x5f,0x60,0x2b,0x27,0x3f,0x2b,0xf0,0x47,0xd4,0x57, + 0x3d,0xe2,0x4f,0x89,0x7a,0x86,0x8f,0x00,0xfb,0x56,0x9d,0x6d,0x6d,0xe6,0x91,0xb0, + 0x1b,0xe8,0x59,0x87,0xae,0xe4,0x88,0xc8,0xca,0x79,0x1c,0x1c,0x1e,0xbe,0x86,0xb9, + 0x3b,0x6d,0x66,0x5f,0x1b,0x6b,0x2d,0x19,0xbf,0x82,0xc2,0xe1,0x09,0xf2,0x1e,0x38, + 0xa5,0x90,0x16,0x04,0x64,0x02,0xce,0x39,0xc7,0x6c,0x63,0xad,0x67,0x3c,0x6c,0x21, + 0x1e,0x66,0xee,0x8a,0x8e,0x16,0x53,0x76,0xb1,0xe9,0x01,0x23,0x64,0x5c,0xb2,0xef, + 0xc6,0x0a,0xaf,0xcc,0x41,0xfc,0x2a,0xbc,0x8a,0xd1,0x12,0xac,0xab,0xb9,0x8f,0xc8, + 0x58,0xed,0x04,0x7e,0xbc,0xd7,0x41,0xe1,0x2f,0x86,0x43,0xc6,0x16,0x04,0xeb,0x1e, + 0x21,0xbf,0x95,0x21,0x98,0xa2,0x2d,0xbc,0x51,0x40,0x7e,0x55,0x56,0xce,0x42,0x9e, + 0xed,0x8a,0xe4,0x3e,0x36,0xe9,0x5e,0x15,0xf0,0x6e,0x9f,0x05,0x85,0xbb,0x5c,0xcf, + 0xaf,0x4a,0xcb,0x21,0x37,0x72,0x4c,0xff,0x00,0xbb,0x3b,0xc6,0x72,0x70,0x9d,0x40, + 0xf7,0xaf,0x31,0x67,0x74,0xa5,0x53,0xd9,0xc2,0x2d,0xb3,0x77,0x97,0xce,0x31,0xbc, + 0x9d,0x8a,0xef,0xac,0xda,0x25,0xd1,0x8a,0xe6,0xfe,0x18,0x02,0x91,0xc4,0x67,0x07, + 0xe8,0x73,0xfd,0x2a,0xb3,0x78,0xa7,0x49,0xb3,0x69,0x24,0x81,0x67,0xbb,0x18,0x2a, + 0xce,0x91,0x92,0x41,0xfa,0xbe,0x33,0xf9,0xd7,0x93,0xd9,0xde,0x35,0xd5,0xc2,0xba, + 0x0d,0xa4,0xbe,0xd5,0x42,0x80,0x11,0xcf,0x38,0x27,0xbf,0x5a,0xbb,0x7d,0x0c,0xf6, + 0x17,0x97,0xd6,0xf7,0x73,0x95,0x36,0x92,0xb4,0x0c,0x5d,0xcb,0x2b,0x15,0x38,0x3b, + 0x47,0x19,0x1c,0x7a,0x57,0x53,0xc6,0xce,0x4e,0xc9,0x19,0x2a,0x11,0x5b,0x9d,0x1d, + 0xd7,0x8f,0x2e,0x12,0x57,0x96,0x16,0x47,0x88,0x61,0xbc,0xa6,0x2b,0x9c,0x7a,0x63, + 0x39,0xfc,0x6a,0x8c,0xbe,0x3a,0x97,0x0b,0x34,0x6f,0x87,0x00,0xab,0x2b,0x61,0x57, + 0x39,0xeb,0x8f,0xa7,0xb5,0x73,0x16,0xb1,0x5a,0x4a,0xe1,0x4a,0xce,0x84,0xae,0x57, + 0x18,0xe4,0x0e,0xf8,0xf4,0xf7,0x15,0xb3,0xa3,0xe8,0x96,0x37,0xf7,0x1b,0xa6,0x32, + 0x18,0x5f,0xfd,0x5b,0x08,0x87,0xcd,0x8e,0xa0,0x7c,0xdd,0x47,0x15,0xcf,0xf5,0x99, + 0xee,0xe4,0xcd,0x3d,0x94,0x7b,0x16,0x35,0x3f,0x10,0x43,0xae,0xa4,0x0c,0x55,0x63, + 0x98,0x28,0xf3,0x4a,0xb0,0x01,0x8e,0x78,0xe8,0x72,0x2a,0xb4,0xd7,0x04,0x09,0x0b, + 0x16,0x32,0x13,0x95,0x04,0x7c,0xa7,0xd7,0xbe,0x6b,0x4a,0x0d,0x3b,0x48,0xb4,0x0c, + 0xf3,0xd9,0xcc,0xec,0xa3,0x6e,0xd0,0xfb,0x18,0xf7,0xce,0x0f,0x51,0xee,0x09,0xef, + 0x55,0x2f,0x6d,0x6c,0x67,0xb5,0x4f,0x22,0x4c,0x4c,0x4e,0x0c,0x65,0xfe,0x52,0x3e, + 0xbf,0xfe,0xaa,0x4f,0x10,0x9e,0xa3,0xf6,0x68,0xcb,0x93,0x54,0x3f,0x72,0x30,0xdf, + 0x21,0xc8,0x28,0x72,0x33,0xdc,0x01,0xd7,0xa7,0xd6,0xb3,0xd6,0xfa,0x6f,0xb4,0x34, + 0x72,0x38,0x7e,0x92,0x12,0x41,0x3d,0xb3,0x8e,0x6a,0xda,0xd9,0x9b,0x6b,0x66,0x63, + 0x6e,0xcf,0x04,0xdf,0xea,0xdd,0x5c,0x7c,0xb8,0xf6,0xf5,0xf7,0xac,0xcb,0xbd,0x34, + 0x97,0x6d,0x86,0x56,0x56,0x19,0x5f,0x2c,0x67,0x23,0xdc,0x0e,0x9d,0x28,0x52,0x52, + 0xd4,0x76,0xb0,0xe9,0xb5,0xd9,0x24,0x08,0xd8,0x54,0x45,0x38,0x0a,0xcc,0x39,0xf7, + 0x19,0x1e,0xd5,0x2a,0xeb,0x85,0xa4,0x25,0xe0,0x0e,0x71,0xc9,0x0e,0x08,0x1c,0x7d, + 0x2b,0x2a,0xe3,0x4c,0x76,0x85,0x19,0x8c,0x63,0xe5,0xc1,0x05,0x82,0xb0,0xe7,0x1d, + 0xf0,0x6a,0xbc,0x70,0xcd,0x68,0x85,0x96,0x42,0x06,0x7a,0xa0,0xef,0xf5,0xaa,0xb0, + 0xb5,0x3a,0xa8,0x75,0x15,0x86,0x7f,0x31,0xa4,0x9e,0xdc,0xb0,0xca,0x00,0x99,0x07, + 0xe9,0x90,0x2b,0x5a,0xd3,0xc5,0x73,0x5b,0xa3,0xb4,0x79,0x19,0x18,0x0c,0xd2,0x61, + 0xb3,0xf8,0x60,0x7e,0x9d,0xeb,0x84,0xb7,0x12,0x23,0x02,0x3c,0xb2,0x0f,0x6c,0x72, + 0x7f,0x3a,0xdd,0xfb,0x4b,0x1b,0x74,0x69,0x44,0x92,0x38,0xe8,0x8d,0x82,0xa0,0x76, + 0xef,0xfd,0x2b,0x37,0x02,0xce,0xb5,0xbc,0x5f,0xa8,0x24,0x88,0x0d,0xc3,0x87,0x70, + 0x08,0x0b,0x30,0x38,0xfa,0x8a,0xea,0x6f,0x2e,0xf5,0xbd,0x1f,0x42,0xb3,0xd5,0xae, + 0x67,0xb6,0x96,0xca,0x62,0xa0,0x34,0x57,0x70,0x3b,0xe5,0x81,0x60,0x19,0x15,0xcb, + 0x29,0xc0,0x39,0xc8,0x18,0xe8,0x70,0x78,0xaf,0x30,0x2f,0x73,0x34,0x7e,0x62,0x47, + 0x22,0x67,0x82,0xcd,0xd0,0x7a,0x72,0x07,0x14,0x34,0x81,0x6d,0x53,0xcd,0x5f,0x9c, + 0x9c,0xe4,0x82,0x7e,0x98,0xc5,0x47,0x2b,0x56,0xb1,0x4a,0xce,0xf7,0x3d,0x23,0x52, + 0xf1,0x0f,0x89,0x74,0x3d,0x45,0x6c,0xf5,0x3d,0x37,0xec,0x13,0xc9,0x1f,0x9b,0x14, + 0x52,0x42,0xdb,0xe4,0x43,0x9f,0x98,0x1c,0xf2,0x38,0x3c,0x8f,0x43,0x5e,0xe7,0xf0, + 0x4f,0xe0,0x65,0xdf,0xc6,0xbf,0x0b,0xf8,0xa7,0x59,0xb6,0xf1,0x35,0xbd,0x8c,0x3a, + 0x16,0x9d,0xf6,0xf9,0x6d,0x2d,0x2c,0x9e,0xe6,0xe9,0x9b,0x12,0x91,0x0e,0xc2,0xca, + 0x03,0x1f,0x2b,0x8c,0x6e,0xce,0xe1,0xd7,0xa5,0x7c,0xf3,0xa1,0xea,0x7a,0x96,0x86, + 0xf1,0xdf,0x59,0x4b,0x73,0x67,0xa8,0x5b,0x29,0x96,0x0b,0xc8,0x72,0x92,0xc3,0xf2, + 0x75,0x0c,0x0e,0x54,0xf6,0xeb,0xde,0xbe,0xcb,0xf8,0x0f,0xfb,0x4f,0xbf,0x8a,0x35, + 0x0d,0x27,0x56,0x95,0x12,0xdb,0xc6,0x16,0xda,0x5d,0xd6,0x81,0x7d,0x15,0xac,0x6b, + 0x1a,0xea,0x21,0xa1,0x79,0x2d,0xa6,0x23,0xa6,0xef,0x32,0x35,0xcf,0x65,0xf9,0xcf, + 0x01,0xb1,0x5c,0x55,0x65,0x28,0xa4,0xd2,0xd3,0xab,0x3a,0x5d,0x1b,0x7e,0x87,0xc6, + 0x7e,0x1f,0xb9,0x92,0xdf,0x54,0x81,0xf7,0x6f,0x95,0x58,0xb9,0xf5,0xc8,0x39,0xfe, + 0xb5,0xd5,0x7c,0x70,0xd4,0x25,0xd3,0x3e,0x34,0xf8,0xa9,0xa0,0x91,0xa3,0x12,0x6a, + 0x33,0x4e,0xbb,0x4e,0x3e,0xf3,0x07,0xcf,0xfe,0x3d,0x5c,0x95,0x96,0x3f,0xb7,0x0c, + 0xd9,0x20,0x1c,0x36,0xe3,0xd7,0x07,0x2b,0x4e,0xf8,0xbf,0xae,0xcd,0xa9,0xfc,0x40, + 0xbc,0xbe,0x6d,0xaa,0xf2,0x15,0x3f,0x28,0xc8,0x20,0x47,0x18,0x07,0x9f,0x50,0x01, + 0xfa,0xd7,0xa9,0x49,0xde,0x56,0x39,0x5a,0xb1,0xf6,0xdf,0xfc,0x13,0xfb,0xf6,0x80, + 0xd6,0x07,0x8e,0x4f,0x86,0xb5,0x6d,0x5e,0xe6,0x7d,0x22,0xee,0xd5,0xc4,0x71,0x4e, + 0xed,0x24,0x70,0xca,0xa0,0x30,0x70,0x39,0xda,0x30,0x08,0x27,0xa6,0x3a,0xf4,0xc8, + 0xfd,0x18,0xd3,0xad,0x56,0x10,0xec,0xab,0x85,0x2d,0x90,0xd9,0xc9,0x6e,0x00,0xcf, + 0xe9,0xfa,0xd7,0xe1,0xe7,0xc0,0x5f,0x10,0xde,0x5b,0x78,0x8a,0x19,0x60,0x98,0xdb, + 0xdd,0xc6,0x03,0x45,0x34,0x38,0x8d,0xd4,0x82,0x79,0x0d,0xc7,0xb5,0x7e,0xbf,0x78, + 0x13,0x55,0xf1,0x45,0xf7,0xc3,0xbd,0x0c,0xb3,0x23,0xdc,0xcd,0x14,0x4d,0x2d,0xcc, + 0x28,0xbb,0xf6,0x7f,0x18,0x54,0x66,0x0a,0xad,0xe8,0x49,0x20,0x67,0xee,0x8e,0x00, + 0xe4,0xaf,0x25,0x0a,0xb6,0x6a,0xe8,0xd5,0x42,0xf0,0xba,0x3c,0x73,0xc5,0x2f,0xa2, + 0xc1,0xfb,0x5c,0xf8,0x93,0xc5,0x3a,0xf5,0xed,0xb4,0x16,0x5e,0x15,0xd2,0x22,0x9e, + 0x28,0xa6,0x95,0x55,0xa5,0x9b,0xc9,0xca,0xaa,0x02,0x7e,0x62,0x37,0x31,0xe3,0xb8, + 0x5a,0xe7,0xff,0x00,0x65,0x7f,0x19,0xd9,0xfc,0x51,0xd4,0x7e,0x21,0xe8,0xbe,0x2b, + 0x78,0xde,0x0d,0x5a,0xe6,0x2d,0x68,0xc7,0x33,0x80,0xac,0xeb,0x2e,0xe6,0x1c,0xf6, + 0xe2,0x21,0x8f,0x41,0x5c,0xc7,0xc7,0xff,0x00,0x80,0x5e,0x3c,0xf8,0x81,0xf1,0x4f, + 0x5e,0xd7,0xf4,0x4d,0x32,0x1b,0xbd,0x3e,0x63,0x12,0xc3,0x11,0xbd,0x53,0x70,0xa1, + 0x22,0x48,0xc8,0x65,0x19,0x00,0xe5,0x1b,0xb9,0xfc,0xeb,0x8a,0xff,0x00,0x86,0x46, + 0xf8,0x81,0x0c,0x6a,0x65,0x86,0xc2,0x16,0x65,0x0c,0x56,0x69,0xde,0x20,0xa4,0xff, + 0x00,0x0e,0xe7,0x45,0x5c,0xfd,0x09,0xaf,0x98,0xac,0xf1,0x30,0xc4,0x73,0xc2,0x9d, + 0xe3,0x76,0xf7,0xde,0xfa,0x7e,0x47,0xed,0x78,0x1f,0xec,0x4c,0x4e,0x56,0xa9,0x57, + 0xc6,0xa8,0x55,0x94,0x29,0xc5,0x68,0xff,0x00,0x77,0xc8,0xf9,0xb4,0xef,0x79,0x5d, + 0xbd,0x7f,0x23,0xd8,0x3e,0x16,0x7c,0x55,0x8b,0xe2,0x9f,0xed,0x29,0xe3,0xad,0x3a, + 0xe2,0x6d,0xda,0x2f,0x88,0x74,0xe9,0xf4,0xcb,0x54,0x27,0xe5,0x31,0xc4,0x30,0x84, + 0x7d,0x57,0xcc,0x6f,0xab,0x1a,0xe6,0xbf,0x67,0x1f,0x87,0xb2,0x2f,0x84,0xbc,0x63, + 0x25,0xcd,0xb4,0x6f,0xa8,0x68,0x3a,0xa2,0x32,0x34,0xa8,0x0e,0x0a,0xb3,0x24,0x83, + 0x9e,0xd8,0x4c,0xe3,0xbe,0xd1,0x5f,0x38,0xfc,0x5b,0xf0,0xae,0xb3,0xf0,0x27,0x56, + 0xd3,0x2d,0xfc,0x4b,0x18,0xb4,0x9b,0x51,0x80,0xdc,0xda,0x4b,0x67,0x3a,0x4e,0xae, + 0x80,0xed,0x27,0x72,0x31,0xc7,0x3e,0xb5,0xf6,0xaf,0xec,0x45,0xab,0xe8,0x83,0xe1, + 0x13,0xdc,0xdc,0xdd,0x20,0x3a,0x92,0x3c,0xae,0x93,0x7f,0xac,0x91,0x56,0x69,0x90, + 0x9c,0x75,0x3e,0x94,0x50,0x85,0x7a,0x8f,0xfd,0xa6,0x0e,0x3f,0x13,0xbb,0xdb,0x5b, + 0x68,0x71,0xf1,0x25,0x4c,0xb2,0x86,0x0d,0xac,0xaf,0x11,0x19,0xa9,0x7b,0x28,0xf2, + 0x2d,0xfd,0xc5,0x25,0xcd,0xf3,0x56,0x4f,0x4d,0xce,0x7a,0xfe,0x28,0x5b,0x4e,0xb2, + 0x58,0x2d,0xe3,0xb7,0x56,0x9d,0xa4,0x6f,0x90,0x11,0x21,0xda,0xbb,0xb3,0x91,0xcf, + 0x4f,0xd6,0xa3,0x8b,0x40,0xb7,0x8e,0x55,0x9d,0xed,0x6c,0xa6,0x6e,0xbb,0x25,0xb4, + 0x8d,0xd7,0xf5,0x5a,0x8f,0xc6,0xf7,0x91,0x78,0x4f,0x57,0x4d,0x36,0x77,0x6c,0x46, + 0x44,0x80,0x34,0x6c,0x01,0x04,0x0e,0x73,0x8e,0xbd,0xaa,0x85,0xaf,0xc4,0x7d,0x25, + 0xd5,0x55,0xa7,0x54,0x19,0xc6,0xed,0xc3,0x1f,0xd2,0xb3,0xb3,0x5a,0x1f,0x9d,0x5d, + 0x37,0x73,0xb4,0x57,0xb4,0x3a,0x45,0xcf,0xda,0x3c,0x2f,0xa0,0x3d,0xb4,0x09,0xb9, + 0x5a,0x3d,0x36,0x3d,0xd9,0x24,0x0e,0xa4,0x1c,0x54,0x7e,0x14,0xf8,0x7f,0xe1,0xcd, + 0x4b,0x44,0x86,0x66,0xd2,0x60,0x92,0x62,0xce,0x25,0x25,0x07,0xde,0xde,0x48,0xfa, + 0x0c,0x11,0xc0,0xac,0x05,0xf8,0x8b,0xa6,0x41,0x63,0x79,0x6e,0x97,0xb0,0xed,0xb9, + 0x40,0x84,0x17,0x5f,0x97,0x9c,0xe4,0x66,0xae,0xe8,0x1e,0x21,0xd1,0x6d,0x74,0xf0, + 0x97,0x3a,0xe4,0x76,0x72,0xee,0x27,0xcb,0x0f,0xdb,0xb1,0xe2,0xb1,0x71,0x76,0x29, + 0x35,0x7d,0x11,0xf9,0x71,0xf1,0xea,0xc1,0xec,0x35,0x6b,0x78,0xe4,0xdb,0xe6,0x24, + 0x2a,0xd9,0x8d,0xc3,0x03,0xc9,0x3d,0x41,0x20,0xd7,0x45,0xe0,0xdf,0x84,0x1e,0x11, + 0xf1,0x3f,0x87,0x85,0xfe,0xb9,0xf1,0x4b,0x4e,0xf0,0xf5,0xd0,0x8b,0xcd,0x1a,0x73, + 0xc0,0x4b,0x9c,0xa2,0xb0,0x1b,0x99,0x94,0x0c,0x86,0x03,0xbf,0x20,0xfa,0x55,0xcf, + 0xdb,0x06,0x09,0x60,0xf1,0xf4,0x3e,0x7e,0x9b,0xfd,0x93,0x29,0xb4,0x40,0xd6,0xa1, + 0x91,0x80,0x3b,0x7a,0xfc,0x84,0x8c,0x1f,0xff,0x00,0x5d,0x49,0xf1,0x43,0x5f,0x93, + 0x49,0xd1,0x7c,0x2d,0xa5,0x68,0x5a,0x9c,0xd0,0x69,0xf7,0x3e,0x1d,0xb0,0x9a,0xfa, + 0x08,0xa5,0x70,0xaf,0x72,0xd0,0xa8,0x7d,0xd9,0xeb,0xc0,0x51,0x81,0xc0,0x00,0x01, + 0xd2,0xbe,0xef,0x11,0x39,0x4d,0x2e,0x57,0x66,0xff,0x00,0xaf,0x33,0xe7,0x69,0xc5, + 0x45,0x59,0xad,0x8a,0x1e,0x11,0xf8,0x67,0xf0,0xbe,0x78,0xfc,0x27,0x71,0xa8,0xf8, + 0xa1,0xae,0x6e,0xee,0xef,0x2f,0x63,0xd4,0xad,0xa4,0xbf,0x8a,0x15,0x8e,0x38,0xed, + 0x9e,0x48,0x48,0xe3,0x29,0xbe,0x40,0x8b,0x92,0x79,0x39,0x03,0x9a,0x9b,0x57,0xf0, + 0xef,0x83,0xac,0x7e,0x11,0x69,0x77,0xd6,0x97,0x16,0xff,0x00,0xda,0x9f,0xda,0x21, + 0x25,0x99,0x2e,0x77,0xcd,0xe5,0xfd,0x9d,0x49,0x3e,0x5e,0xef,0x95,0x7c,0xc0,0xfd, + 0x87,0x41,0xea,0x33,0xdd,0x7e,0xcf,0x5a,0x26,0x97,0xe2,0x6f,0x8a,0x3f,0x0f,0xb4, + 0x4d,0x4b,0x49,0xb2,0x9e,0xcb,0xcd,0xb9,0xbb,0x76,0x96,0x04,0x63,0x26,0xcb,0x27, + 0x6d,0x8d,0x90,0x77,0x2e,0x40,0x38,0x3d,0xeb,0xec,0x7b,0xff,0x00,0x84,0xff,0x00, + 0x0b,0x27,0x82,0x38,0x2e,0x7c,0x31,0xe1,0x23,0x24,0x8e,0x4b,0x31,0xd3,0xed,0xf2, + 0xc0,0x28,0xc7,0x3b,0x7f,0xce,0x6b,0xca,0xa9,0x8b,0xf6,0x13,0x57,0x6d,0xf5,0xfc, + 0x59,0xd9,0x0a,0x5e,0xd2,0x3a,0x58,0xf8,0x1b,0xf6,0x80,0xd7,0x74,0x3b,0x3f,0x04, + 0xfc,0x2f,0xb3,0xd0,0x0c,0x06,0x49,0xb4,0x6f,0x3e,0xf2,0x3b,0x40,0xb1,0x34,0xb2, + 0x36,0xd5,0xcc,0xc1,0x39,0x2d,0xf2,0xb7,0x1d,0xfb,0xd7,0xa7,0xfe,0xcb,0x6b,0x73, + 0xa7,0x7c,0x15,0xf8,0xa2,0x85,0x14,0x4b,0x7b,0xa4,0xca,0xc6,0x26,0x8c,0x02,0x13, + 0xcb,0x94,0x70,0x3e,0x8d,0x9a,0xf2,0x7f,0x8d,0xf6,0x5a,0x17,0x86,0xbf,0x68,0x5f, + 0x11,0x69,0x76,0x9a,0x4d,0x8d,0x9d,0x84,0x17,0x49,0x6f,0x04,0x36,0xf1,0x24,0x70, + 0xc6,0x0c,0x4b,0x9c,0x05,0x51,0xdf,0x24,0xf3,0xdc,0xfa,0x57,0x75,0xe1,0xad,0x63, + 0x5f,0x3f,0x0d,0xed,0x24,0xb6,0x9c,0xda,0x5d,0xdb,0xc1,0x75,0xa6,0x5e,0x04,0x21, + 0x44,0xd0,0x39,0x77,0x21,0xb8,0xe9,0x82,0xa0,0x00,0x3b,0x7e,0x5a,0x54,0x72,0xab, + 0x4e,0x31,0xef,0xae,0xbf,0x7f,0xfc,0x03,0x48,0x46,0x31,0xbc,0x8f,0x21,0xf1,0x1e, + 0x89,0x1d,0xcc,0x76,0x88,0x66,0x58,0x7f,0x7d,0xb7,0x9c,0xe0,0x1f,0x4e,0x33,0xef, + 0x5d,0xaf,0xc2,0x9f,0x07,0xd8,0xf8,0xb7,0xc1,0xfa,0xac,0x30,0x42,0x5b,0x55,0xb7, + 0xbd,0x79,0xad,0xa4,0x96,0x4f,0x29,0xd2,0x45,0x09,0x95,0xc1,0x56,0x1c,0xe3,0x19, + 0xe7,0xe9,0xc5,0x70,0xfe,0x24,0x92,0xf0,0x5d,0x45,0x1b,0x40,0x5c,0x49,0x22,0xed, + 0x09,0xce,0x5f,0x38,0xea,0x3f,0xcf,0x15,0xea,0x3f,0x0a,0xda,0xf2,0x3d,0x2e,0xe5, + 0xc4,0x46,0x32,0x26,0x63,0x2b,0x92,0x17,0x71,0x03,0x1e,0xb9,0xce,0x00,0x1d,0x2b, + 0x2c,0x74,0xa5,0x0a,0x37,0x8b,0xec,0x5e,0x15,0xc5,0xcf,0xde,0x3b,0xcf,0x00,0x7c, + 0x55,0xd0,0xac,0xbc,0x19,0x77,0x7b,0xab,0xd9,0x35,0xac,0xf6,0x77,0xcd,0x6f,0x3d, + 0xb3,0x36,0x26,0x81,0x8a,0x2a,0xab,0x30,0x00,0x0c,0x70,0x79,0x03,0xb6,0x3b,0x57, + 0x9f,0x7c,0x60,0x97,0xc3,0xff,0x00,0x11,0xd1,0x75,0x1d,0x3d,0xa4,0xb4,0xd7,0xac, + 0x57,0xc9,0x8e,0x35,0x60,0xd1,0x4b,0x1a,0x96,0x2c,0x0e,0x72,0x41,0x39,0x05,0x4e, + 0x71,0x92,0x47,0x5a,0xe0,0x7c,0x77,0xe2,0x3f,0x33,0xc7,0x7a,0xf4,0x56,0x70,0xcd, + 0x14,0x77,0x12,0x46,0x27,0x48,0xf2,0xdb,0xca,0x80,0x0f,0x18,0x1c,0x92,0x3d,0xeb, + 0x13,0x59,0xd7,0x8a,0xe9,0xd6,0x76,0x86,0x39,0xad,0xdb,0x27,0x12,0x49,0x18,0x5c, + 0x0c,0x93,0x85,0x3d,0x7b,0xb7,0x7e,0xf5,0xc9,0x4b,0x09,0xcb,0x38,0xd6,0x8e,0x8d, + 0xff,0x00,0x90,0xea,0x62,0x13,0x52,0x84,0x95,0xfc,0xcc,0x88,0x2d,0xee,0x24,0xf2, + 0x6e,0x56,0x70,0x58,0x5c,0xac,0x66,0xdd,0xce,0xe6,0xe4,0xf5,0x03,0x18,0xc7,0x51, + 0xd6,0x9d,0xaa,0xb4,0x77,0x77,0x9a,0xa4,0xb2,0x3a,0xc9,0x39,0x77,0x91,0xce,0xd2, + 0x03,0x65,0x8e,0x79,0xce,0x38,0xff,0x00,0x1a,0xd0,0xb2,0xd6,0x44,0x1a,0xcd,0xa5, + 0xd4,0x96,0xb0,0x5d,0x2c,0x4e,0x8a,0xab,0x26,0xe0,0x5d,0x81,0x5f,0x9c,0x01,0xd4, + 0xe4,0x73,0x9e,0x0e,0x6a,0xb3,0x69,0xba,0x82,0xc7,0x7f,0x2c,0x56,0xab,0x1c,0x97, + 0x24,0xb8,0x3b,0x94,0xf1,0xc9,0xc6,0x33,0x8e,0xfe,0x86,0xbd,0xb8,0x35,0x7b,0xb3, + 0xcc,0xb5,0xf4,0x48,0xad,0x2e,0x89,0xaa,0xe8,0x3a,0x74,0x77,0xe9,0x6f,0xbe,0xc1, + 0x86,0xf1,0x28,0x75,0x24,0x02,0x71,0x9c,0x03,0xc0,0x39,0xc6,0x71,0xc9,0xa9,0xe2, + 0x92,0x24,0xb4,0x59,0x64,0xd4,0xac,0x22,0x95,0xa2,0x12,0x08,0x90,0xb3,0xb8,0x04, + 0x8f,0x94,0xe0,0x10,0x1c,0x8f,0xc7,0x8e,0xd5,0x8f,0x25,0xcd,0xfd,0xd6,0xa3,0x1d, + 0xac,0xe2,0xe2,0x49,0x30,0x22,0x68,0xda,0x63,0x82,0xc3,0x85,0x1b,0x78,0xc8,0x03, + 0x80,0x3e,0x9c,0x9e,0x94,0xd1,0x61,0x1c,0x32,0x4b,0x25,0xe5,0xac,0xb3,0xcf,0x13, + 0xb2,0xe1,0xd9,0x81,0x6f,0x5e,0x9d,0x31,0xef,0xf8,0xd5,0x59,0x3d,0xc1,0x9b,0x1a, + 0x96,0xa7,0x15,0xfd,0xec,0x2d,0x67,0x78,0x6d,0xd2,0x44,0x19,0x79,0x54,0xc6,0x01, + 0x03,0x18,0x3d,0x79,0xc0,0x1c,0xe6,0xa1,0x17,0xb7,0x02,0x38,0x51,0x0f,0x98,0xfb, + 0x77,0x0f,0x30,0xf3,0x9e,0x3f,0x0a,0xcd,0x31,0xa6,0xa1,0x6b,0xe6,0x46,0xd3,0x4a, + 0x02,0xaa,0x24,0x57,0x25,0x87,0x94,0xdc,0x64,0x8c,0xbf,0x7f,0xcb,0xe9,0x4f,0x5d, + 0x3e,0xfd,0x6c,0xd5,0xbe,0xd3,0x10,0x8e,0x1f,0x9f,0xcc,0x8a,0x65,0x24,0xf3,0xf4, + 0xef,0x8a,0x6a,0x31,0x5a,0x13,0xb9,0xa9,0xa4,0xdd,0x3c,0x70,0x6c,0x92,0x3f,0xb4, + 0x00,0x48,0xdf,0x0b,0x0c,0x71,0xe9,0xc1,0xa1,0x23,0x4b,0xbb,0x9f,0xde,0x36,0x55, + 0x0f,0xdc,0xce,0xe0,0x3e,0xa4,0x62,0x96,0xcb,0x4b,0xbf,0xb8,0xb4,0x56,0x8a,0xde, + 0x50,0x8a,0x9e,0x72,0xca,0x54,0xc8,0x85,0x73,0xfc,0x47,0xa0,0x19,0xf6,0xfa,0xd2, + 0x5a,0x42,0xad,0x2a,0x88,0x5b,0x73,0xb0,0x1c,0x32,0x61,0x43,0xf7,0x04,0xf2,0x7a, + 0xff,0x00,0x3a,0x12,0x49,0x8e,0xcc,0xee,0xbe,0x21,0x69,0x7a,0x6c,0xda,0x6f,0x86, + 0x26,0xd2,0x74,0xf8,0x61,0xb7,0xb7,0xd1,0xe1,0x8a,0xf2,0x54,0x54,0x5f,0x36,0xe8, + 0xc9,0x2b,0x16,0x27,0x82,0x4e,0xd2,0x80,0x9e,0x7a,0x63,0xb0,0xae,0x46,0xeb,0xc3, + 0x56,0xa6,0x31,0x9b,0x98,0x22,0x96,0x68,0xc4,0xd1,0xac,0x72,0x2c,0x98,0xe8,0x70, + 0x46,0xee,0x0f,0xb6,0x01,0xeb,0xc5,0x5d,0xd7,0xa1,0xb9,0xb5,0xfb,0x0a,0xde,0xf9, + 0x4e,0x1e,0xdb,0x30,0x8b,0x5c,0x38,0x20,0x31,0x38,0x7c,0xb7,0x1c,0xe7,0xf4,0xe2, + 0xad,0xf8,0x3f,0xc2,0x16,0xde,0x2f,0x6d,0x49,0x23,0xb3,0xdd,0x2d,0x9a,0x79,0xe6, + 0xd9,0x24,0xd8,0xe5,0x3f,0x89,0x81,0x27,0x07,0x1c,0x64,0x70,0x79,0xe0,0xe7,0xac, + 0x36,0xa1,0x0b,0xdf,0x44,0x6b,0x05,0xcd,0x2d,0x8a,0x1e,0x1e,0xf8,0x7a,0xda,0xfd, + 0xea,0xdb,0xc7,0x77,0x0c,0x2a,0xd1,0x19,0x22,0x9d,0xfe,0x58,0xce,0xd2,0x03,0x0d, + 0xcf,0xb7,0x91,0x91,0xf9,0xd6,0xa6,0xbb,0xf0,0xaa,0xfb,0x47,0x4b,0x79,0x7c,0xeb, + 0x59,0xed,0x64,0xc2,0xfd,0xa2,0x2b,0x84,0x70,0x0f,0x38,0xce,0x1b,0x8e,0x84,0x67, + 0xa7,0x6a,0xb7,0xa8,0x78,0x27,0xfb,0x3e,0xce,0xda,0x5b,0x4b,0x95,0xbc,0x8c,0xdc, + 0x79,0x44,0x29,0x68,0xd9,0x0b,0x70,0x13,0xef,0x1c,0x0c,0xe3,0xf3,0xef,0x57,0xa1, + 0xf0,0x74,0xfa,0x7c,0x33,0x4b,0x7d,0x19,0x8e,0x14,0x87,0x26,0x4d,0xc1,0xca,0xe4, + 0x74,0xea,0x33,0x8e,0x38,0xac,0x3e,0xb3,0x1b,0xa6,0xa5,0xbf,0x43,0xad,0xe1,0xaa, + 0x59,0xae,0x5f,0x99,0xcb,0x5f,0x78,0x6e,0xf2,0xdb,0xf7,0x4d,0x31,0xc0,0x01,0xc4, + 0x7d,0x14,0x02,0x38,0xee,0x47,0x43,0x5d,0x96,0xb3,0xf0,0x5e,0xfb,0xc3,0xbf,0x0e, + 0x34,0x4f,0x17,0x4f,0x77,0x6e,0xda,0x6e,0xa5,0x37,0x95,0x14,0x51,0x4c,0x0c,0xbb, + 0x83,0x38,0x3b,0x94,0x0e,0x3f,0xd5,0xb5,0x73,0xb7,0x77,0x72,0x69,0x21,0xed,0x64, + 0x53,0x2c,0x8a,0x41,0xf3,0x62,0x7e,0x07,0x19,0x18,0xe3,0xdf,0xaf,0x39,0xc7,0xe3, + 0x5e,0xcd,0xe2,0x6d,0x0b,0x4d,0xbd,0xfd,0x92,0xfc,0x2f,0xaf,0x43,0xa7,0x45,0x16, + 0xba,0x35,0x93,0x66,0xf7,0xaa,0x3f,0x7a,0xd1,0x31,0xb9,0x6d,0xa4,0xfa,0x7c,0x8a, + 0x7d,0x38,0xfa,0xd4,0x57,0xa9,0x38,0x72,0x79,0xbb,0x1c,0xd0,0x85,0xef,0xe8,0x7a, + 0x1e,0xb1,0xff,0x00,0x04,0xf7,0xf8,0xa7,0x61,0xe1,0x69,0xb5,0x48,0xbf,0xb0,0xaf, + 0x6d,0xc5,0xb9,0xbb,0x29,0x6d,0x7c,0x77,0xec,0xd9,0xbb,0xf8,0xe3,0x5e,0x71,0x5e, + 0x21,0xad,0x7c,0x18,0xf8,0x8f,0xf0,0x1f,0x5e,0x8e,0xfb,0x51,0xd2,0x26,0xd3,0x7c, + 0xd8,0xcc,0x1e,0x64,0x17,0x31,0x4d,0x95,0x96,0x39,0x14,0xae,0x50,0xb6,0x32,0x9b, + 0xfb,0x67,0xbf,0x1c,0x57,0xed,0x0d,0xc3,0x47,0x17,0xc3,0x87,0x49,0x43,0x34,0x47, + 0x4c,0xd9,0x23,0x2b,0x01,0xb5,0x7c,0xae,0x49,0x39,0x18,0xc7,0xb5,0x7e,0x76,0x7e, + 0xd0,0xa9,0x1c,0xbe,0x28,0x11,0xc7,0xa8,0xcf,0x76,0x92,0x5b,0xcd,0x2a,0x2a,0xb4, + 0x64,0xae,0xd2,0x51,0x79,0x00,0x64,0x60,0x9e,0x4e,0x4f,0xbd,0x62,0xaa,0x49,0x34, + 0x92,0x56,0x6b,0x53,0x68,0xfe,0xf5,0x7b,0xcf,0x6d,0x8f,0x90,0x6f,0x62,0x63,0x73, + 0x6e,0x23,0xb3,0xfb,0x3a,0x7d,0x99,0x06,0xe8,0xd8,0xb8,0x72,0xa4,0x1d,0xc4,0x9f, + 0x72,0x39,0xf7,0xf7,0xac,0xdf,0x8a,0x36,0xc1,0x7c,0x4d,0x06,0x1b,0x02,0x4b,0x58, + 0x24,0x07,0xdc,0xc1,0x11,0x3f,0xae,0x6b,0x4f,0x4a,0x9c,0xdd,0x3b,0x70,0x41,0x30, + 0xc8,0x36,0x93,0x91,0xc2,0xc4,0x47,0xf2,0xcd,0x2f,0xc4,0x7d,0x03,0x55,0xd5,0x2f, + 0x34,0xeb,0xbd,0x3f,0x4d,0xba,0xbf,0x8e,0x1b,0x18,0xbc,0xe7,0xb6,0x85,0x9c,0x46, + 0x30,0x50,0x16,0x20,0x71,0xfe,0xac,0xf5,0xf4,0xaf,0x52,0x84,0xad,0x2d,0x4c,0x2a, + 0x43,0x5f,0x74,0xb1,0xf0,0x0e,0x31,0x37,0x8d,0xf4,0xeb,0x66,0x3e,0x61,0xba,0xb9, + 0x8e,0x0c,0xb1,0xec,0x58,0x76,0xfa,0x8a,0xfd,0xb9,0x7d,0x33,0x59,0xd1,0xf4,0xfd, + 0x2a,0x1d,0x22,0x6b,0x3b,0x68,0x96,0x01,0x1c,0xdf,0x6b,0x46,0x65,0x0e,0x14,0x05, + 0xc0,0x5c,0x71,0xd7,0x3c,0xf5,0xc5,0x7e,0x29,0xfe,0xcd,0x7a,0x25,0xee,0xb1,0xf1, + 0x9b,0xc1,0xfa,0x7c,0x36,0xd2,0x19,0x64,0xd5,0xad,0x77,0xae,0x0f,0xca,0x9e,0x62, + 0xee,0x63,0xe8,0x02,0xe4,0xd7,0xeb,0x1f,0xed,0x85,0xe2,0x5d,0x4f,0x47,0xf8,0x53, + 0x14,0x3a,0x64,0x8f,0x14,0x7a,0x85,0xe2,0x5a,0xdc,0xcb,0x11,0xc3,0x08,0xf6,0x33, + 0x6d,0xc8,0xe9,0x92,0xa0,0x7e,0x9d,0xeb,0x58,0x61,0x5e,0x37,0x17,0x4f,0x0f,0x17, + 0x6e,0x6d,0x2e,0x73,0x57,0xc4,0x7d,0x57,0x0f,0x2a,0xd2,0x57,0x51,0xd4,0xd9,0x1a, + 0x28,0xbe,0xbb,0x9e,0x58,0xf4,0xdf,0x0d,0xeb,0x37,0x70,0xca,0xf2,0xb2,0x69,0xb7, + 0xa6,0x39,0x03,0x33,0xee,0xf9,0xb1,0xd3,0x24,0x2e,0x73,0xe8,0x7d,0x6b,0xb1,0xf1, + 0x16,0xb9,0x75,0x6b,0xf0,0xe7,0x5f,0xd4,0xb5,0x2b,0x11,0xa7,0x4d,0x6f,0x67,0x31, + 0x08,0x24,0x0e,0x1b,0x11,0xf0,0xc0,0x8e,0x99,0x27,0xa5,0x7c,0x73,0xaf,0xd8,0xda, + 0xfc,0x35,0xb3,0xf0,0x0d,0xdf,0x87,0xa7,0xba,0x8f,0xc5,0x90,0x48,0x60,0xb9,0x01, + 0x15,0x7c,0xe7,0x24,0x48,0x52,0x40,0xbf,0xc4,0x04,0xa8,0xa5,0x49,0x63,0x87,0x00, + 0xfd,0xda,0xfa,0x33,0xf6,0xa1,0xf1,0x34,0x9e,0x1a,0xf8,0x0d,0xe2,0x87,0x20,0x89, + 0xa7,0x81,0x60,0x8c,0x0f,0xef,0x3b,0x01,0x8a,0xbc,0xcb,0x2e,0x86,0x0b,0xd9,0xd4, + 0x84,0xf9,0xa3,0x3b,0xda,0xea,0xcf,0xdd,0x76,0x7a,0x6b,0xa3,0xdd,0x19,0x60,0xb1, + 0x72,0xc5,0x39,0x42,0x71,0xb4,0xa3,0x6d,0x9d,0xd6,0xaa,0xff,0x00,0x7a,0xea,0x7c, + 0x0b,0xfb,0x70,0x69,0x52,0xd8,0x6a,0xbf,0x0c,0xf4,0x92,0xa8,0x1e,0xd7,0xc2,0x76, + 0xf2,0xc8,0xa8,0x30,0x04,0x92,0xcb,0x2b,0xb7,0x1e,0xb9,0xaf,0xb6,0x7f,0x62,0x6d, + 0x29,0x63,0xfd,0x98,0x34,0xcb,0x56,0x25,0x49,0x86,0x4c,0xf1,0x82,0xa5,0x87,0x98, + 0x0f,0xfe,0x3f,0x9a,0xd7,0xbc,0xf8,0x05,0xf0,0xef,0xc4,0x71,0x45,0x73,0xaa,0xe9, + 0xf7,0xda,0xc4,0x90,0xc2,0x91,0x79,0xd7,0x5a,0x48,0x92,0x40,0x01,0x1b,0x42,0x9f, + 0xb3,0xee,0xc7,0x5e,0x9c,0x0c,0xf6,0xae,0xef,0xc3,0xb6,0xba,0x17,0x80,0xfc,0x23, + 0x73,0xa4,0xe8,0x3a,0x7e,0xa5,0x0d,0xac,0x51,0x33,0x45,0x6e,0xf6,0x52,0xc6,0x33, + 0xb0,0x28,0x55,0xdc,0xaa,0x3a,0x01,0xc0,0xf4,0x35,0xe5,0x4f,0x11,0x09,0xc1,0x2b, + 0xec,0x77,0x28,0xb4,0xcf,0x10,0xf8,0xa7,0xa9,0xbc,0xd6,0x7a,0x36,0xe8,0xa4,0x7b, + 0xab,0x15,0x71,0x7e,0x90,0x46,0xcc,0xdb,0x44,0x84,0x1c,0x05,0xc9,0xe8,0x41,0xfc, + 0xeb,0x87,0xd2,0xf5,0x85,0xd5,0xad,0x92,0xe6,0xdc,0xa9,0x82,0x42,0x59,0x0b,0x8f, + 0xe1,0xed,0xd7,0xa7,0x15,0xdd,0xfc,0x5e,0xd6,0x06,0x85,0xe2,0x88,0x2e,0xe1,0xd3, + 0x75,0x25,0x85,0x11,0xd2,0xe2,0x58,0xed,0x1f,0xcb,0x94,0xf9,0xae,0x4e,0x1b,0x18, + 0x24,0x0c,0x7b,0x71,0x5e,0x43,0x67,0xe2,0x6d,0x2a,0xda,0xd9,0x14,0x25,0xc4,0x11, + 0xaa,0xff,0x00,0xcb,0x38,0x25,0x0a,0x47,0xa9,0xc8,0x3f,0xa7,0x15,0xf3,0xaa,0xfb, + 0x74,0x3d,0x55,0x6e,0x44,0xd1,0xd5,0x3c,0x16,0x96,0xf1,0x5f,0x5d,0x3d,0xa5,0xbd, + 0xc3,0x79,0x88,0xb9,0x68,0x81,0xfe,0x1f,0xe5,0xcd,0x40,0xa9,0x6d,0x2a,0x87,0x6b, + 0x0b,0x40,0x5b,0x9c,0x34,0x4b,0x91,0x54,0x2c,0x3c,0x6d,0xa4,0x4d,0x05,0xd0,0x17, + 0x43,0xe7,0x95,0x4a,0x2b,0x23,0x63,0x01,0x47,0x5e,0x38,0xfa,0x1a,0xb4,0x9e,0x27, + 0xd1,0xc8,0xff,0x00,0x8f,0xa8,0x4f,0xb9,0xeb,0xfc,0xa9,0x79,0x14,0x95,0xcf,0x84, + 0xbf,0x6d,0x5d,0x4f,0xed,0xdf,0x15,0xa7,0x42,0x09,0x36,0xf1,0xac,0x2e,0xe4,0xfd, + 0xe2,0xb8,0x04,0xfb,0x0c,0xf4,0x1e,0x98,0xa9,0xfe,0x22,0xe8,0x5e,0x12,0xb9,0xb1, + 0xf0,0xe5,0xc5,0xbe,0xbb,0x67,0x6a,0xa3,0x45,0xb1,0x13,0xc1,0x05,0xc2,0x39,0x49, + 0x45,0xbc,0x7e,0x61,0x3f,0x31,0xc1,0x2c,0xc4,0x11,0x8e,0x08,0x35,0x95,0xfb,0x65, + 0xf8,0x6e,0xc7,0xc2,0x3f,0x15,0x1f,0x47,0xd3,0xfc,0xc3,0x69,0x05,0xb4,0x5b,0x0c, + 0x8d,0xb9,0x89,0x60,0x18,0xe4,0xfd,0x4d,0x75,0x5a,0x8f,0xc3,0xaf,0x0c,0xbe,0x93, + 0xa4,0x79,0x5a,0x2a,0xda,0x4a,0xd6,0x50,0x99,0x16,0x55,0x2c,0xec,0xcd,0x1a,0x96, + 0x27,0x24,0xf0,0x5b,0x2c,0x0f,0xbd,0x7d,0x5d,0x49,0x46,0x2a,0x0d,0x37,0x6f,0xf8, + 0x63,0xc9,0xa5,0x4e,0x75,0x64,0xe1,0x15,0xab,0x7f,0xe6,0x41,0xf0,0x97,0xe2,0x3f, + 0x84,0xbc,0x31,0xf1,0x57,0xc2,0x17,0x7a,0x96,0xb7,0x1c,0x5a,0x4e,0x9f,0x05,0xe2, + 0x4b,0x3e,0xc9,0x24,0x01,0x9a,0xd8,0xa4,0x61,0x95,0x01,0xdd,0x96,0x23,0x23,0x04, + 0x1e,0x73,0xc5,0x7d,0x4b,0xa8,0xfe,0xdd,0xdf,0x0d,0x74,0x6b,0x5b,0x45,0x3a,0xee, + 0xa1,0xab,0x49,0x04,0x5b,0x24,0x96,0xd3,0x4d,0x91,0x04,0x8f,0x81,0x92,0x15,0x82, + 0xe3,0x24,0x66,0xbc,0xd3,0xf6,0x5c,0xf8,0x61,0xe1,0xe7,0xf1,0xd5,0xd4,0xd3,0x68, + 0xf6,0x13,0xc7,0x15,0x8b,0x90,0x2e,0xac,0x62,0x91,0x32,0x5a,0x3c,0x10,0x18,0x10, + 0x08,0xce,0x33,0xf5,0xaf,0xae,0x6c,0xf4,0x8d,0x13,0x49,0x76,0xb7,0x86,0xc7,0x4c, + 0xb4,0xd8,0x43,0x81,0x04,0x31,0x21,0x50,0x73,0xd8,0x01,0x8e,0xd5,0xe1,0x62,0x6a, + 0x51,0x73,0xb3,0x4d,0xdb,0xcf,0xfe,0x01,0xe8,0x2a,0x15,0xa9,0x7b,0xb2,0xb2,0x7f, + 0x79,0xf9,0x33,0xf1,0xab,0xc5,0xf6,0xff,0x00,0x11,0xfe,0x25,0x6b,0x9e,0x24,0xd3, + 0x16,0x58,0x74,0xcb,0xeb,0xa3,0x2a,0x0b,0x94,0x11,0xba,0x8c,0x9d,0xb9,0x00,0x9e, + 0x71,0x9e,0x01,0xaf,0x59,0xbd,0xb5,0xf1,0x66,0xa5,0xe1,0xfb,0x6b,0x2f,0x0b,0xf8, + 0x6e,0xff,0x00,0x58,0x06,0xdd,0x5e,0xea,0xea,0xda,0x2c,0xc6,0x87,0xa7,0x27,0x04, + 0x03,0x82,0x3d,0xf1,0x9e,0xd4,0x7e,0xdc,0x1a,0x9c,0x7a,0x97,0xc6,0x8b,0x1b,0x57, + 0x58,0x96,0xde,0xda,0xca,0x28,0xe2,0x10,0xa6,0x37,0x96,0x95,0x8e,0xe6,0xf5,0x3c, + 0x91,0x9f,0x4c,0x7a,0x57,0x5f,0xa1,0x7c,0x56,0xf1,0x47,0x84,0xac,0xa7,0xf0,0xf6, + 0x8f,0x05,0xcf,0xf6,0x44,0xd2,0x23,0xdc,0x0b,0x68,0x4b,0x17,0x26,0x30,0xa4,0x16, + 0x1e,0xca,0x38,0xf7,0xaf,0x69,0x3b,0x50,0x8b,0x8c,0x7b,0x1c,0x3f,0x6d,0xa6,0xcf, + 0x0d,0xf1,0x9e,0x91,0xaf,0xe9,0xa2,0xdc,0x6b,0x96,0xf7,0x5a,0x54,0xc6,0x64,0x6d, + 0x97,0x37,0x51,0xbe,0x00,0xc8,0x3f,0x74,0x0d,0xa3,0x27,0xa1,0xe6,0xb0,0xc5,0xe7, + 0x93,0x94,0x17,0x64,0x41,0x71,0xcf,0xee,0xa5,0xce,0x72,0x71,0x86,0x5e,0xc7,0x83, + 0xd7,0x07,0x1c,0xd7,0xd3,0x9f,0xb7,0xdd,0xf4,0x53,0x78,0xbb,0xc2,0x96,0x90,0xca, + 0x92,0x44,0xd6,0x38,0x3b,0x08,0x20,0x7c,0xef,0xc7,0x1e,0xc2,0xbe,0x46,0xd0,0x6d, + 0x64,0x8f,0x53,0x9d,0x6e,0x63,0xda,0xbb,0xf8,0x0c,0x3a,0x11,0xc6,0x31,0xf8,0x0a, + 0x8a,0x72,0xf6,0xb4,0x94,0xe5,0xa1,0x55,0x23,0xcb,0x27,0x18,0x97,0x34,0xd8,0x2e, + 0x6e,0xfc,0x45,0x70,0x6c,0xae,0x12,0x29,0x63,0x00,0x6e,0x95,0x58,0xf9,0x9c,0x7b, + 0x02,0x78,0xaa,0x9a,0xfa,0xde,0x41,0x78,0x9f,0x6d,0xbe,0x49,0x63,0x59,0x08,0x45, + 0x43,0x82,0xbc,0x1d,0xa7,0x27,0xa6,0x71,0x8c,0xe0,0x75,0xe6,0xb4,0xac,0xe4,0x9a, + 0xcb,0xc5,0x5a,0x7d,0xe3,0x47,0xe6,0x42,0x66,0x40,0xc8,0xc0,0x6d,0xe4,0x80,0x40, + 0x19,0xa9,0x3c,0x4d,0xa5,0x2e,0xad,0xe2,0x15,0xb6,0x10,0x8b,0x64,0x92,0xe8,0x44, + 0x3c,0xcf,0xdd,0x20,0x63,0xd0,0x67,0xa7,0x42,0x0f,0x27,0x9a,0xae,0x6b,0x54,0x4b, + 0xa5,0x8c,0x94,0x2f,0x0b,0xf9,0x94,0x7c,0x34,0xa6,0xee,0x56,0x94,0xac,0xa2,0xe6, + 0x37,0x08,0xb1,0x04,0xcb,0xb3,0x0e,0x49,0x04,0x91,0x91,0x80,0x73,0x81,0xd7,0x15, + 0xb3,0x6d,0xaa,0x26,0xa3,0x68,0x2d,0xef,0x22,0xfb,0x53,0x2c,0x48,0x85,0xd1,0x01, + 0x78,0xc0,0x3d,0x4e,0xdc,0x64,0x63,0x03,0x2c,0x72,0x0d,0x4d,0x63,0xe1,0xdb,0xaf, + 0x07,0x78,0x98,0x45,0x77,0x67,0x73,0x14,0x72,0x0d,0x8a,0xee,0xc4,0xa3,0xe5,0x41, + 0xdc,0x4e,0x30,0xc0,0xe3,0xea,0x38,0xf4,0xac,0x9c,0x46,0xf6,0xf7,0x71,0x5a,0xbb, + 0xc4,0x0c,0x23,0x09,0x1c,0x5b,0xf7,0x00,0xc4,0xf5,0x1d,0x71,0xcf,0x24,0x76,0xa6, + 0xad,0x53,0x6d,0x89,0x77,0x85,0xae,0x66,0xf8,0x86,0xca,0xce,0x45,0xb7,0xb8,0x57, + 0x95,0x6e,0xce,0x7c,0xe4,0x57,0x12,0x24,0x43,0x8d,0x81,0x4e,0x49,0xcf,0x27,0x20, + 0xf4,0xe3,0x9e,0xa0,0x52,0x1a,0xd5,0xb4,0x8d,0x04,0x16,0xd1,0x8d,0xc3,0x9d,0xa5, + 0xb7,0x12,0xd8,0x3f,0x78,0x91,0x8c,0x64,0x7e,0xb5,0x72,0xeb,0xc2,0x77,0x5a,0x65, + 0x82,0xb9,0x49,0xbc,0xb9,0x4e,0x63,0x95,0xad,0x8b,0x09,0x06,0x33,0x80,0x4f,0xd3, + 0xad,0x6a,0x78,0x37,0x42,0x59,0xf5,0x6b,0x7d,0x3a,0xfa,0xd3,0xec,0xce,0x57,0x7c, + 0x86,0x15,0x32,0xc8,0x10,0x8c,0xe7,0x6a,0xa9,0x39,0xe3,0x1e,0xd8,0xfa,0xe6,0xb9, + 0xe2,0xa1,0xcd,0x7b,0xd8,0x95,0x09,0x4a,0x5c,0xb6,0xdc,0xe7,0x6e,0xee,0xef,0xad, + 0xd5,0x37,0x2c,0x0e,0x58,0x6e,0x02,0x1b,0x60,0x01,0x38,0xe5,0x09,0x18,0xfb,0xb8, + 0xc7,0x1f,0x9d,0x6b,0xf8,0x65,0x6d,0xde,0xdc,0x4b,0xaa,0x58,0x4d,0x70,0xfc,0x3a, + 0xc7,0x0a,0x85,0x56,0x5e,0x73,0x9c,0x7c,0xc7,0xb0,0xc7,0xd7,0xd2,0xbd,0x1b,0x4c, + 0xf8,0x41,0x68,0x2f,0xe2,0x8c,0x5f,0x3e,0xbf,0x1b,0xb6,0xd4,0xb6,0xb6,0x96,0x0b, + 0x69,0xd3,0x39,0xe5,0xfc,0xdc,0xb0,0x51,0xd3,0x80,0x4f,0xf2,0xaf,0x40,0xbe,0xfd, + 0x9f,0xe7,0x8f,0x4d,0x49,0x34,0xb8,0x63,0xb2,0xbd,0xb7,0x90,0xce,0x82,0x4b,0x83, + 0x2f,0x98,0xdb,0x0f,0x00,0xaa,0x28,0x19,0x38,0x1c,0xf4,0x07,0x20,0xe6,0xb2,0x9e, + 0x22,0x9d,0xbd,0x4d,0x55,0x19,0xde,0xcd,0x1e,0x02,0xf6,0x97,0x5a,0x4a,0x5d,0xde, + 0xc6,0xf1,0x47,0x65,0x26,0x11,0x6d,0xae,0x1a,0x44,0x90,0x72,0x4a,0xa2,0x02,0x30, + 0x71,0x82,0x3e,0x61,0x8c,0xf4,0xf5,0xab,0x36,0x1a,0x74,0xd1,0xda,0xda,0x5c,0x4d, + 0x6c,0xaf,0x6c,0xe4,0x30,0x97,0x95,0xc1,0x24,0xf0,0x1b,0x38,0x3f,0xe4,0x57,0xac, + 0xc9,0x3f,0x87,0x34,0xdd,0x3b,0x4d,0xba,0x97,0x4e,0xd5,0x75,0x89,0x2e,0xbe,0x44, + 0x82,0x68,0x61,0x9a,0x34,0x93,0x76,0x0a,0x32,0x95,0xdc,0x36,0xb9,0xda,0x7a,0xf2, + 0x3d,0x45,0x72,0xf7,0xda,0x1e,0xa5,0x2f,0x8a,0x6e,0x91,0xb4,0xe7,0xd3,0x23,0x98, + 0x3b,0x43,0x69,0x30,0x26,0x20,0xd8,0xf9,0xfc,0xbc,0xe1,0x0f,0x52,0x78,0xe9,0xce, + 0x3d,0xa6,0x35,0xdb,0xdd,0x58,0xd3,0xd8,0xae,0x8e,0xe5,0x0d,0x6e,0xc2,0x7b,0x9b, + 0x5b,0x21,0x6f,0xb2,0x05,0x58,0xc0,0x2c,0x8d,0xbb,0x20,0x96,0xcf,0x5e,0xc3,0x3d, + 0x73,0x5b,0x3f,0x0e,0xf4,0x4b,0xff,0x00,0x09,0xeb,0xf6,0xda,0xd4,0x52,0x5a,0xdc, + 0xc5,0xe5,0x32,0x49,0x6b,0xf6,0x80,0xad,0x22,0xb2,0xe3,0x04,0xf3,0x83,0x9c,0x1f, + 0xc2,0xb6,0xbc,0x67,0xe0,0x2b,0xcd,0x1f,0x45,0xf0,0x9d,0xde,0x9e,0x5b,0x50,0x13, + 0x69,0x66,0xea,0xf5,0x10,0xf9,0x89,0x0b,0x89,0xa4,0x5d,0xa7,0x63,0x65,0x4e,0xd0, + 0xa7,0x1c,0x75,0xeb,0xcd,0x72,0x07,0xc7,0x96,0xb6,0x51,0xbc,0x70,0xda,0x69,0x90, + 0xca,0x17,0x28,0xdf,0x65,0x6d,0xe5,0xbd,0x0b,0x79,0x99,0xfe,0x74,0x3e,0x7a,0x91, + 0x6a,0x9b,0xba,0x63,0x85,0xa9,0xca,0xf5,0x11,0xd5,0x78,0xad,0x1a,0x4d,0x31,0xaf, + 0x01,0x5b,0x3b,0xd8,0x19,0x09,0x85,0x65,0x0c,0x26,0x45,0x61,0x8c,0xf4,0xce,0x0e, + 0x3f,0x23,0xeb,0x5b,0x3e,0x28,0xbf,0x8b,0x50,0x8b,0x4d,0xb3,0x89,0x43,0x1d,0x42, + 0x64,0x52,0xa1,0x48,0xc4,0x63,0xe6,0x62,0x47,0xe0,0x3f,0x3a,0xe2,0xbc,0x4b,0x0b, + 0x69,0xba,0x87,0x87,0x6f,0x75,0x66,0x8e,0x7b,0x49,0x6d,0x85,0xc6,0xf8,0xf7,0x6d, + 0x7c,0xfc,0xc0,0x7c,0xc4,0xe7,0xaa,0xf5,0xae,0x8b,0x49,0x80,0xdc,0x89,0x75,0x6b, + 0xe9,0xcb,0xdc,0x94,0x2a,0x21,0x43,0x81,0x0a,0x1e,0x76,0xfd,0x71,0x8c,0xd7,0x9f, + 0x3a,0x7e,0xca,0x30,0x6d,0xed,0x7f,0xf8,0x6f,0x91,0xec,0xd3,0xa9,0xed,0x9c,0x94, + 0x56,0xf6,0xbf,0xf9,0xfc,0xf6,0x33,0x7c,0x73,0xa3,0x45,0x7b,0x21,0xd5,0xe5,0xba, + 0xb6,0x8e,0xe6,0x65,0x40,0x6d,0xa3,0x56,0x50,0x14,0x28,0x03,0x03,0x27,0x9c,0x01, + 0xc5,0x53,0xbe,0xf8,0x8b,0xa8,0x0f,0x87,0xb6,0x5e,0x0b,0x68,0x63,0x3a,0x7c,0x17, + 0xe2,0xff,0x00,0xcf,0x12,0xb9,0x93,0x70,0x57,0x01,0x0a,0x6e,0xda,0x07,0xef,0x18, + 0xe7,0x68,0x27,0xd6,0xb9,0xbd,0x43,0xc4,0xeb,0xaa,0xdc,0x85,0x19,0x8e,0x48,0xf7, + 0xb6,0x41,0xc2,0xe0,0x02,0x40,0x01,0x40,0xc0,0xc0,0xc5,0x75,0x37,0x71,0x78,0x5d, + 0xfe,0x10,0x58,0x5f,0x46,0x90,0x27,0x8c,0x65,0xd7,0x3c,0x96,0xfd,0xf9,0xf3,0x4d, + 0x98,0x83,0x76,0x7c,0xbc,0xfd,0xdd,0xf8,0xf9,0xb1,0xd4,0x91,0x9a,0xf4,0x9d,0x37, + 0x18,0x45,0x54,0xd7,0x53,0xc7,0x9c,0xd4,0xe6,0xdc,0x15,0x8f,0xd9,0xdb,0xcf,0x0b, + 0x0b,0x8f,0x00,0x3c,0x76,0xf2,0xdf,0x3c,0xb2,0xe9,0xa5,0x4a,0xcd,0x79,0x71,0x28, + 0x39,0x8f,0x18,0x09,0xbf,0x04,0xf6,0xe8,0x7e,0x87,0xa5,0x7c,0x11,0xe2,0xcf,0x87, + 0x3e,0x21,0xd2,0xfc,0x75,0x71,0xfd,0xab,0x60,0xd0,0xa1,0xb6,0x9a,0x68,0xe4,0x75, + 0xda,0x04,0x65,0xdc,0xaf,0x50,0x31,0xd7,0xa6,0x2b,0xef,0x7d,0x53,0xc6,0xb6,0x3a, + 0x0f,0xc3,0xc9,0xaf,0x5d,0xbc,0xff,0x00,0xb2,0xe9,0x8d,0x71,0xe5,0xed,0x6f,0x9c, + 0x2a,0x13,0x8e,0x14,0xf0,0x71,0xd7,0x9a,0xfc,0xdf,0xfd,0xb2,0xfe,0x2a,0x0f,0x89, + 0x52,0x59,0xea,0x1a,0x74,0x17,0x3a,0x62,0xe9,0x96,0x88,0xb2,0x79,0x73,0x3e,0x1d, + 0x64,0x7f,0x42,0x17,0x8e,0x0f,0x5a,0xf1,0x70,0xd3,0x94,0x9f,0x27,0x7b,0x1b,0x52, + 0xd1,0x36,0xfa,0x1f,0x2c,0xe8,0x57,0x6f,0x26,0xa6,0xb1,0xab,0x60,0xf9,0x52,0x36, + 0xc1,0xc7,0xfc,0xb1,0xc9,0x3f,0x8e,0x2b,0xea,0x6f,0x83,0xdf,0x14,0xb4,0x4f,0x85, + 0xb0,0x8b,0xbd,0x4e,0x19,0xaf,0x24,0xbf,0xd3,0x22,0x8a,0xc6,0xca,0xda,0xdd,0xa6, + 0x9e,0xf1,0x85,0xd5,0xc7,0xc8,0x8a,0xbd,0x48,0xe7,0x24,0x90,0x00,0x23,0xd7,0x07, + 0xe5,0x4d,0x01,0x55,0x75,0xab,0x7f,0x98,0x13,0x96,0x8b,0x9f,0xfa,0xe5,0x82,0x2b, + 0xd0,0xbc,0x69,0x73,0x69,0x0f,0x85,0x7c,0x19,0x35,0xf9,0x74,0x8a,0x2b,0x59,0xa3, + 0x2f,0x0a,0x86,0x20,0xee,0x0f,0xc0,0x2c,0xbf,0xde,0xf5,0xaf,0x7a,0x74,0xd4,0xfd, + 0xc7,0xb3,0x39,0xe3,0x51,0xc5,0xa6,0xb7,0x3e,0xb1,0xf0,0x5a,0x6a,0xfe,0x28,0xf8, + 0x93,0x07,0xc4,0x8d,0x7a,0xde,0xcb,0xc2,0x86,0xc6,0xd4,0x5a,0x69,0x7a,0x55,0xcd, + 0xc7,0x9b,0x3e,0x0c,0x85,0xda,0x69,0x8a,0xfd,0xd2,0x73,0xb4,0x2f,0x60,0x7b,0x60, + 0x67,0xd0,0xfc,0x69,0xfb,0x61,0x78,0x66,0x2b,0xa9,0xfc,0x1d,0xaf,0xe8,0x13,0x78, + 0xa6,0x27,0x00,0x4e,0x74,0x57,0x32,0x88,0xd8,0x10,0x7b,0x85,0x65,0x75,0xeb,0xf2, + 0xe7,0x04,0x75,0xcd,0x7e,0x75,0x69,0x7e,0x22,0xd2,0x6f,0xfc,0x45,0xa9,0x5f,0xe9, + 0x16,0x2d,0x6b,0x6d,0x67,0x6c,0x27,0x82,0x09,0x65,0x12,0xb2,0xb8,0xd9,0x18,0x62, + 0x73,0xfd,0xf6,0x0f,0x8e,0x83,0xa5,0x7d,0x53,0xf0,0x6f,0x46,0xd3,0xbc,0x0f,0xe0, + 0xad,0x3e,0xfa,0xe1,0x63,0x17,0xba,0x9c,0x69,0x3d,0xc5,0xcb,0x02,0xce,0xc5,0xc6, + 0xe0,0xb9,0xe4,0xe0,0x02,0x38,0xf5,0xc9,0xa9,0xa5,0x4e,0x71,0xa8,0x9a,0x96,0xdb, + 0x74,0xb1,0xe8,0xca,0x34,0xbe,0xaf,0x2a,0xb5,0x63,0x7b,0xbb,0x5a,0xfb,0xbe,0xb7, + 0xf2,0x3d,0x63,0xc1,0xdf,0x1a,0xbe,0x05,0xf8,0x67,0x57,0xb6,0xd5,0xaf,0x25,0xf1, + 0x35,0xb5,0xf4,0x37,0x4f,0x75,0x1a,0xf8,0x8e,0xde,0x47,0x8a,0x39,0x9f,0x01,0xdd, + 0x48,0x18,0x2f,0xf2,0x8e,0x58,0x93,0x95,0x15,0xe8,0xbf,0x19,0x3e,0x27,0x78,0x57, + 0xe3,0x4f,0x85,0xbc,0x2b,0x63,0xe1,0x7d,0x5e,0x1d,0x62,0xda,0xf7,0x5e,0xb6,0x12, + 0xb4,0x00,0xf0,0x23,0x26,0x42,0x08,0x23,0x3f,0xc2,0x33,0xd8,0x64,0x67,0x19,0x15, + 0xe6,0x13,0xf8,0x43,0x48,0xf1,0x36,0x9e,0xdb,0xed,0x2d,0xe6,0x49,0x57,0xe6,0x49, + 0x50,0x32,0xb0,0x3f,0x5e,0x95,0xe7,0x9f,0x03,0xb4,0x4d,0x5f,0xc2,0x5f,0x1b,0xc7, + 0x81,0xb4,0xdb,0xb9,0x21,0xd2,0x06,0xa7,0x6f,0xa9,0x4b,0x66,0xcb,0xbf,0xcc,0x8d, + 0x0a,0xb6,0xd5,0xe0,0xe1,0xb0,0xcb,0xc8,0xc6,0x76,0x0c,0xd3,0xcc,0x27,0x5a,0xbf, + 0xbd,0x39,0xb9,0x3b,0x59,0x5c,0xe4,0xc2,0x61,0xa9,0x2a,0x53,0x74,0xa3,0xcb,0xcb, + 0xad,0xbb,0xab,0xdb,0xf0,0x3f,0x4c,0x6d,0xc3,0xa4,0x10,0x05,0x38,0x51,0x1a,0x8d, + 0xa3,0xe9,0x51,0xeb,0xa4,0xb6,0x85,0xa8,0x67,0x9f,0xf4,0x69,0x3a,0xff,0x00,0xba, + 0x6a,0xa3,0x6b,0xaf,0x04,0x9f,0x67,0x1a,0x56,0xa1,0x2b,0xa2,0xe3,0x74,0x71,0xae, + 0x0f,0x6c,0x83,0xbb,0xa5,0x53,0xd6,0x75,0xab,0xa9,0xf4,0xbb,0xc8,0x93,0x44,0xd4, + 0x14,0xc9,0x0b,0x20,0x69,0x3c,0xa5,0x51,0x90,0x46,0x49,0xf3,0x3a,0x73,0x5e,0x6c, + 0x5b,0x82,0x7a,0xbf,0xc4,0xe4,0x49,0xb6,0x99,0xe3,0x5f,0x15,0x75,0x9b,0x8b,0x6f, + 0x10,0x59,0xc5,0x64,0x76,0x3b,0x23,0x33,0xb3,0x90,0x17,0x1b,0xd9,0x80,0xc9,0xc6, + 0x0f,0x5e,0x41,0xf4,0xaf,0x36,0x92,0xfb,0xfb,0x2b,0x56,0xb9,0xc0,0x5b,0xbb,0x42, + 0x00,0x76,0x31,0xe7,0x00,0xe3,0xe6,0x00,0xf7,0xce,0x7e,0x9d,0x2b,0xab,0xf8,0xb9, + 0x7f,0x79,0x3e,0xbd,0x6e,0xb1,0x68,0x3a,0xc4,0xd6,0xeb,0x0a,0x93,0x34,0x16,0xac, + 0xe9,0x2e,0x00,0x3c,0x6d,0xce,0x46,0x73,0xd7,0x15,0xc1,0x47,0x3c,0x51,0xcc,0xfe, + 0x7e,0x97,0xaa,0xc0,0x1f,0xa2,0xb6,0x9e,0xe3,0x03,0x93,0xe9,0x5e,0x43,0xb2,0x6d, + 0x9e,0xc4,0x6f,0xca,0x91,0x43,0x5c,0xd3,0x35,0x1d,0x03,0xc6,0x1a,0x6d,0xca,0x4e, + 0xe7,0x4b,0xd5,0x6d,0x1a,0x55,0x41,0x8c,0x07,0x57,0xda,0x40,0x39,0x27,0x8e,0x3f, + 0x3a,0xd0,0x92,0xfc,0xdb,0x47,0x02,0x24,0x51,0xe0,0x46,0x3a,0xb1,0x15,0x9b,0xe2, + 0x8d,0x71,0x6d,0xee,0xfc,0x3b,0x6b,0x20,0xb8,0x30,0x43,0x05,0xc4,0xd0,0x34,0xb1, + 0x36,0xe2,0xaf,0x28,0x52,0xb8,0xc6,0x41,0x0d,0x1b,0x7e,0x75,0x89,0xa9,0x78,0xb2, + 0xc9,0x2e,0x7c,0xa2,0xb7,0x65,0xa3,0x50,0x8d,0xe5,0xc2,0xd8,0xc8,0xfc,0xab,0xab, + 0x92,0x75,0x39,0x54,0x55,0xdd,0x91,0x8f,0x32,0x8d,0xdb,0xee,0x7c,0x4d,0xfb,0x62, + 0x5c,0x19,0xfe,0x2f,0xdd,0x87,0x75,0x77,0x10,0xc1,0xb8,0xa7,0xdd,0xdd,0xb0,0x67, + 0x1f,0x8d,0x7a,0xaf,0xc4,0x16,0x66,0x5d,0x35,0xc3,0x60,0xc7,0x69,0x0c,0x61,0x81, + 0xe4,0xed,0x40,0x3f,0x4c,0x57,0x8b,0xfe,0xd4,0x77,0x89,0x77,0xf1,0x5e,0xff,0x00, + 0x6e,0xd2,0x12,0x28,0x95,0xb1,0xd0,0x30,0x8d,0x4f,0xf5,0x15,0xec,0xdf,0x11,0xce, + 0x26,0xb6,0x00,0xaf,0x96,0x61,0x8c,0x26,0x3a,0x05,0xc1,0x02,0xbd,0xfa,0xe9,0x35, + 0x0b,0x7f,0x5b,0x1e,0x4a,0x93,0x8c,0x5b,0xf3,0x3d,0x8b,0xe0,0xea,0xe9,0x5f,0x0c, + 0xaf,0xac,0xfc,0xb8,0x6e,0xbc,0x49,0xac,0x6a,0x6e,0xd6,0xef,0x24,0x30,0xa0,0x8e, + 0xcf,0x60,0x8a,0x46,0xc8,0x7c,0x96,0xc6,0xec,0x96,0x07,0x90,0x2b,0xd6,0xf5,0xef, + 0x8b,0x5a,0x2d,0xb7,0x86,0x6f,0x42,0xe9,0x2d,0x27,0x8a,0x61,0x80,0x5d,0x49,0x75, + 0xf6,0x54,0x36,0xdb,0x7c,0xc0,0xbf,0x31,0xf7,0x5e,0x06,0x7b,0xd7,0x95,0x78,0x16, + 0x5f,0x2f,0xc7,0xf6,0x68,0x13,0x28,0x2f,0x35,0x4e,0x71,0x9c,0x62,0x18,0xd4,0x7f, + 0x2a,0xda,0xd6,0xe1,0xc7,0x82,0x7c,0x6e,0xca,0x30,0xc6,0xca,0xc5,0x07,0xb8,0x32, + 0x33,0x11,0xfa,0x57,0x99,0x1a,0x30,0xa9,0x37,0x29,0xae,0x87,0x52,0xab,0x28,0xc6, + 0xd1,0x67,0xc7,0x3f,0xb4,0xc5,0xf9,0xf1,0x37,0xed,0x13,0x6c,0xce,0x77,0x79,0xf1, + 0x44,0x42,0xe7,0x80,0x0c,0x8e,0xcb,0xf9,0x74,0xaf,0x58,0xf8,0x61,0x79,0x6d,0x27, + 0xc5,0x5b,0x0d,0x3f,0x59,0xd5,0x75,0x0f,0xec,0x10,0xc5,0xaf,0xb4,0xeb,0x1b,0xf9, + 0x21,0x2c,0x12,0x22,0xe7,0x0a,0x8c,0x39,0xf9,0x46,0x7d,0x47,0xb5,0x79,0x47,0xc6, + 0xbb,0x38,0x6d,0xbf,0x68,0x6d,0x28,0x84,0xf2,0x2d,0xa2,0x58,0x61,0x58,0x63,0x5c, + 0x22,0x80,0xec,0x88,0x00,0x1d,0x80,0xe3,0x03,0xa5,0x74,0x1f,0x08,0x77,0x5f,0x7e, + 0xd1,0x17,0x32,0xb0,0x38,0x5b,0x6b,0xf5,0x3e,0xff,0x00,0xe8,0x92,0x01,0x5e,0xc5, + 0xaf,0x4a,0x29,0x76,0x39,0x94,0x97,0x33,0xb9,0xdd,0xff,0x00,0xc1,0x40,0x7c,0x63, + 0xa4,0xf8,0xb7,0xc5,0xde,0x0c,0xd5,0x34,0x98,0x2e,0x2d,0xec,0x64,0xd3,0x55,0xa2, + 0x5b,0x85,0xda,0xe7,0x13,0x4c,0x09,0xc7,0xbe,0x38,0xfc,0x2b,0xe6,0x3d,0x4e,0xf4, + 0x1d,0x54,0xca,0x57,0x72,0x4b,0x87,0x5d,0xc3,0x1c,0xe0,0x67,0x35,0xf4,0x8f,0xed, + 0xa5,0xa3,0xc9,0xe2,0x2f,0x1d,0xfc,0x31,0xd0,0x2d,0xe7,0x16,0xb3,0x4f,0xa3,0xd8, + 0x5b,0x89,0x36,0xee,0xdb,0xbb,0xcd,0xe7,0x1f,0x52,0x2b,0xe6,0xaf,0x8a,0x1e,0x0b, + 0xd4,0xbc,0x03,0xaa,0x59,0xd8,0x6a,0xf2,0x41,0x75,0x2c,0x96,0xe5,0x91,0xe0,0x72, + 0xca,0xc4,0x31,0x19,0xe4,0x02,0x0f,0x18,0xe9,0x58,0x42,0x30,0x4e,0x34,0xba,0xd9, + 0x9d,0x0a,0x52,0xb3,0x9f,0x42,0xe4,0xd7,0x5b,0xb5,0x4b,0x78,0xa3,0xdb,0xe6,0x3c, + 0xaa,0x09,0xdb,0xc6,0xed,0xc3,0x9e,0x7d,0x38,0xe7,0xd8,0x54,0xda,0xce,0x8d,0x13, + 0xcb,0x75,0x7d,0xa9,0x5d,0x34,0xc4,0x06,0x9a,0x34,0x0a,0x7e,0x70,0x83,0xa8,0x18, + 0xc6,0x49,0xc5,0x73,0x3a,0xd5,0xb5,0x84,0x57,0xf6,0x73,0xbd,0x9d,0xc4,0x93,0xdc, + 0x5b,0xab,0x96,0xb7,0x93,0x80,0x41,0xc7,0x46,0xef,0xc5,0x77,0x1a,0x76,0x89,0xa7, + 0xf8,0xe3,0x52,0x44,0xb8,0x7b,0xa8,0xae,0xa5,0xc4,0x3b,0xee,0x1c,0xe1,0x72,0x0f, + 0xcf,0x8e,0x98,0x19,0x27,0x8f,0xeb,0x44,0xa0,0xa9,0xda,0x57,0x2d,0x35,0x3b,0xc5, + 0x44,0x8e,0xc2,0xe2,0x5f,0x18,0xc1,0xa7,0x6a,0x11,0xd9,0x2d,0x8e,0x9e,0x8e,0x6d, + 0xc4,0xa6,0x33,0x21,0x77,0x1f,0x2f,0x5e,0x87,0x00,0xa9,0xed,0x9e,0x07,0x3d,0x6b, + 0x14,0xda,0xcf,0xa4,0x5d,0x45,0x05,0xed,0xba,0x24,0x6b,0xe5,0x3b,0xdb,0xdc,0x13, + 0x10,0x75,0xdd,0xc8,0x6c,0x1e,0x17,0xdf,0xb7,0xe1,0x5e,0x89,0xf0,0xbb,0xc2,0xb6, + 0x11,0x78,0x3f,0x5b,0x8a,0x5b,0x59,0x1b,0x51,0x85,0xda,0x7b,0x79,0x2e,0x93,0x2f, + 0xfe,0xaf,0x1f,0x2f,0xa6,0x18,0x0f,0xce,0xba,0x6f,0x1e,0x78,0x76,0x3f,0x15,0x5a, + 0xc3,0x78,0xd7,0xf6,0xda,0x4f,0xd9,0x60,0xc4,0x6d,0x7a,0x85,0x3c,0xc2,0x4e,0xe0, + 0x01,0x24,0x64,0x7e,0x1c,0x67,0xbe,0x78,0xc1,0x55,0x50,0xa8,0xe9,0xdb,0xdd,0x2a, + 0x54,0xb9,0xa0,0xaa,0x37,0xa9,0xd4,0x5a,0x68,0x9a,0x66,0xae,0xf6,0xf7,0x17,0xb6, + 0x51,0xcd,0xe7,0x40,0x20,0x65,0x90,0xef,0x0a,0x8c,0x30,0xc0,0x76,0xe8,0x7a,0x8e, + 0xb5,0xe0,0x3e,0x10,0x8d,0x7c,0x17,0xe2,0xb9,0x6d,0xe5,0xd8,0xb7,0x3a,0x6e,0xa7, + 0x25,0xa4,0xae,0x40,0xdc,0xe8,0xc3,0x8f,0xc0,0x18,0x9f,0xfe,0xfe,0x0a,0xf4,0x2b, + 0x2d,0x5a,0xfb,0x51,0x82,0xe9,0xee,0xfc,0x63,0x04,0x17,0xac,0xc0,0xc6,0x9a,0x7c, + 0x22,0x55,0x23,0xf8,0xbb,0x13,0x9f,0xca,0xae,0x5b,0x69,0xba,0x21,0x82,0xee,0x7b, + 0xbd,0x56,0xfa,0x5d,0x4e,0xe2,0x4d,0xf2,0xdc,0x2d,0xbe,0xd3,0x27,0x03,0x96,0xf9, + 0x39,0xef,0xc9,0xf5,0xac,0xb0,0x74,0x27,0x4e,0x33,0x84,0xf5,0x4f,0xd4,0xdf,0x13, + 0x5a,0x15,0x25,0x09,0xc3,0x46,0x8f,0x50,0xd3,0xb4,0xfb,0x7d,0x6a,0xcd,0xad,0xaf, + 0xa0,0x82,0xea,0x2f,0xbe,0x91,0xcf,0x18,0x75,0x1e,0xbc,0x1e,0x3d,0x2a,0xfd,0xb7, + 0x85,0x74,0xa4,0x8c,0x47,0x1c,0x93,0x58,0xb6,0x3e,0x54,0xb3,0xbc,0x92,0x0c,0x7f, + 0xc0,0x56,0x40,0x0f,0xe2,0x2b,0xcb,0xac,0x57,0x42,0x79,0xe2,0xf3,0xb5,0x6b,0xeb, + 0x98,0xc6,0x0e,0xd9,0x6e,0xf6,0x71,0xff,0x00,0x7d,0x2e,0x3f,0x2e,0x2b,0x2f,0xc4, + 0xfa,0xdf,0x86,0xb4,0xf8,0x5a,0x6b,0x08,0x67,0xb8,0x91,0x1f,0x3b,0x64,0xd4,0x02, + 0x1c,0x10,0x41,0xc3,0x79,0x9c,0x11,0xbb,0x3c,0xf0,0x71,0x53,0x1c,0x1c,0xa1,0x1e, + 0x54,0xde,0x9f,0xd7,0x71,0xd4,0xaf,0x19,0xcb,0x9a,0xd6,0x3a,0x6f,0x11,0xe8,0xeb, + 0xe0,0x1d,0x3a,0x68,0xa1,0xba,0xb5,0xd4,0x74,0xe5,0x12,0x4c,0x23,0xd4,0xe3,0x06, + 0x64,0x2c,0xdb,0x98,0xa4,0xa3,0xef,0x1c,0xf3,0x82,0x33,0xc7,0xde,0x15,0xe7,0xbf, + 0xdb,0x36,0xfa,0xbe,0x9a,0xd3,0x8f,0x3e,0xfe,0xda,0x1b,0x85,0x91,0x15,0x91,0xb0, + 0x80,0xf1,0x22,0x30,0x39,0x00,0x15,0x3e,0xc3,0x27,0x81,0x8e,0x6b,0x3e,0x6f,0x12, + 0xf8,0x6e,0xf2,0xda,0xdd,0x21,0x79,0xaf,0x25,0x7c,0x23,0xcd,0x77,0x70,0xc3,0x6e, + 0x32,0x49,0xfb,0xe4,0x1c,0x9e,0x08,0xce,0x0f,0x07,0x3c,0x56,0x1c,0x57,0xf6,0x9a, + 0x55,0x8f,0x91,0x34,0x56,0xf2,0xcc,0xaf,0xba,0x3b,0x9b,0x49,0x83,0x6f,0x1d,0xf7, + 0x8d,0xc4,0x7e,0x02,0xbb,0x29,0x61,0x24,0xd5,0xe4,0xb5,0x39,0x2a,0x57,0xb3,0xf7, + 0x59,0xf7,0xdf,0xec,0xff,0x00,0xe0,0x1f,0x82,0xfa,0xb7,0xc3,0x7d,0x22,0xe7,0x53, + 0xbb,0xb6,0x1a,0xe5,0xd5,0x99,0x17,0xb6,0xc6,0xf8,0x7e,0xed,0x8b,0xb1,0x00,0xa0, + 0x3f,0x2f,0x18,0xec,0x38,0xed,0x57,0x3f,0xe1,0x44,0x7e,0xce,0x16,0xb2,0x11,0x3c, + 0x9a,0x39,0x64,0x25,0x59,0x5e,0xe9,0x0f,0x3e,0xf9,0xe8,0x7e,0x98,0xaf,0x8a,0x7e, + 0x1d,0x6b,0x10,0x07,0xd5,0x25,0x6b,0x48,0xe7,0x8c,0xcc,0x80,0x02,0x71,0x81,0xb4, + 0x67,0x18,0x3c,0xf5,0xef,0x5a,0x3e,0x24,0xd4,0xac,0x84,0x85,0xd2,0xde,0x41,0x6d, + 0xbf,0x7a,0xc7,0x9e,0x9e,0xa3,0x39,0xe9,0x5c,0xaa,0x8b,0x85,0x47,0x08,0xb7,0xa9, + 0xa4,0xab,0x2a,0x91,0x52,0x92,0xd4,0xdc,0xfd,0xa6,0x6c,0xfc,0x23,0x7f,0xf1,0x0a, + 0xef,0x40,0xf0,0xe5,0xea,0xc3,0xa2,0x69,0x50,0x2a,0x59,0xad,0x99,0x8d,0xd1,0x9b, + 0xc9,0xb6,0x38,0xc8,0xc6,0x13,0x0f,0x28,0xe0,0x1f,0x99,0x40,0xef,0x5e,0x99,0xfb, + 0x1a,0xda,0xe9,0x3a,0x97,0xfc,0x24,0xab,0x71,0x67,0x63,0xa9,0x35,0xa8,0xb6,0x45, + 0x96,0xf2,0xde,0x39,0xf6,0xb1,0x12,0x86,0x2a,0x5c,0x1e,0xa1,0x57,0xf4,0xf4,0xaf, + 0x94,0xfe,0xdf,0x0d,0xf7,0x8b,0xaf,0x56,0xde,0xdc,0xa3,0x2c,0x6f,0x85,0xea,0x48, + 0xc4,0x7c,0x7b,0xf5,0xaf,0x7a,0xfd,0x87,0x2f,0x6e,0x53,0xc5,0x7e,0x22,0xb2,0xb6, + 0x96,0xd6,0xd7,0xed,0x10,0x23,0x31,0xbb,0xde,0x54,0x15,0x27,0x18,0x0b,0x93,0x9f, + 0x98,0xfb,0x75,0xaa,0xc6,0x51,0xb6,0x19,0xab,0xec,0x89,0xa1,0x55,0xfb,0x4f,0x53, + 0xec,0x6b,0x6f,0x0d,0xe8,0xd1,0x0c,0xdb,0xe9,0x9a,0x5c,0x32,0x0c,0xe5,0xa2,0xb0, + 0x80,0x75,0x1d,0x38,0x4f,0x5a,0xf1,0x3f,0xdb,0x6b,0x46,0xb3,0xb7,0xf8,0x59,0xa1, + 0xdd,0x45,0x6b,0x6f,0x14,0xbf,0xf0,0x90,0x40,0x86,0x48,0xa1,0x55,0x38,0xfb,0x2c, + 0xa7,0x19,0x03,0xa7,0x4f,0xca,0xbd,0xde,0x1d,0x3b,0x52,0xdf,0xb9,0x6f,0x74,0xc1, + 0x80,0xc0,0xcb,0x12,0xcc,0x17,0x77,0x1c,0x74,0xe3,0xae,0x7a,0x62,0xbc,0x3f,0xf6, + 0xd3,0xbc,0x6b,0x6f,0x85,0x9a,0x0c,0x53,0xc9,0x61,0x72,0xa7,0x5d,0x86,0x4f,0xdc, + 0x99,0x37,0x2f,0xfa,0x34,0x8a,0xbf,0x78,0x00,0x41,0xda,0xc6,0xbe,0x67,0x09,0x29, + 0x3a,0xf0,0x57,0xea,0x7a,0x15,0x52,0x50,0x6e,0xc7,0xdf,0x9e,0x3d,0x9d,0xed,0x7e, + 0x11,0xeb,0x92,0xa0,0x52,0xd1,0xe8,0xf3,0x30,0xde,0xa1,0x86,0x44,0x24,0xf2,0x0f, + 0x04,0x57,0xe5,0x9f,0xc6,0xfd,0x4e,0xe7,0x5f,0xb0,0xf1,0x6b,0xde,0xa5,0xac,0x49, + 0x6b,0x65,0x69,0x1a,0x9b,0x78,0x96,0x23,0x82,0xdc,0x93,0x81,0xc9,0xc8,0x23,0xf1, + 0xaf,0xd3,0x0f,0x88,0x37,0xba,0xb3,0x7c,0x1d,0xd7,0xe4,0x78,0x6c,0x55,0x3f,0xb1, + 0xa6,0x63,0x89,0x9c,0x10,0x3c,0x93,0xfe,0xcd,0x7e,0x53,0xfc,0x4d,0xbe,0x32,0xda, + 0x7c,0x40,0x24,0xe2,0x40,0x6c,0xa2,0x20,0x1c,0x82,0x72,0x7a,0x7b,0x71,0x5f,0x43, + 0x19,0xaa,0x95,0x54,0x96,0xd6,0x5f,0x99,0xe6,0xd3,0xba,0x4d,0x1e,0x37,0x05,0xbd, + 0xbd,0xb9,0xb6,0x99,0x5b,0x6b,0x0b,0xbf,0x97,0x23,0xef,0x0c,0x21,0xcf,0xfe,0x3c, + 0x7f,0x3a,0xe8,0xbe,0x2b,0x15,0x1f,0x0b,0xbc,0x31,0x36,0xef,0x94,0xb5,0xd4,0x5d, + 0x73,0x82,0x16,0x25,0xe7,0xf1,0x22,0xb8,0xe9,0x26,0xf3,0xac,0xac,0x43,0xca,0x77, + 0x07,0xc9,0x40,0x0e,0x0f,0x08,0xbc,0x9f,0xf8,0x0d,0x7b,0x0f,0x84,0x7c,0x1f,0xe1, + 0xef,0x1f,0xf8,0x67,0xc2,0x5a,0x6f,0x8a,0x6f,0x5f,0x4c,0xd2,0x16,0xfa,0xf3,0xcd, + 0xbc,0x12,0x84,0xf2,0xff,0x00,0x77,0x0e,0x39,0x23,0x1d,0x78,0xfc,0x6b,0xd9,0xb5, + 0x9a,0x67,0x2a,0x7a,0x33,0xe7,0xff,0x00,0x87,0x5a,0x9c,0x1a,0x76,0xbb,0x24,0x77, + 0x32,0xac,0x16,0xd7,0xb0,0x3d,0xab,0xc8,0xdd,0x14,0xb6,0x0a,0xb1,0xf4,0x01,0xd5, + 0x49,0xf6,0x06,0xbe,0xee,0xf8,0x27,0xac,0x45,0xe2,0xbf,0x04,0xa6,0x9f,0x7d,0x00, + 0x96,0xef,0x44,0x45,0x82,0x6f,0x36,0x31,0xb7,0x00,0x10,0x84,0x13,0xc6,0x76,0x8e, + 0x7e,0x99,0xe8,0x6b,0x94,0xba,0xfd,0x8e,0x3e,0x08,0xcd,0x1e,0xfb,0x0f,0x8a,0x66, + 0x37,0x23,0x20,0x35,0xec,0x0d,0xff,0x00,0xb2,0x54,0x5a,0x17,0xc3,0x09,0x34,0xbf, + 0x07,0xea,0x1a,0x4e,0x85,0xa8,0x5c,0x78,0x83,0x4a,0xb6,0xbc,0xb9,0x5b,0xcd,0x45, + 0x27,0x20,0x1b,0x34,0x86,0x00,0x99,0xda,0x46,0x40,0x79,0xca,0x77,0xe1,0xc8,0xe9, + 0x4a,0xa4,0xd5,0x39,0x46,0x5d,0xf4,0x3d,0x0c,0x2c,0xe3,0x5e,0x8c,0xf0,0xf2,0xd9, + 0x7b,0xd7,0xed,0xb2,0x7a,0x75,0xba,0x3d,0xdd,0xfc,0x53,0xa3,0x78,0x23,0x46,0x37, + 0x57,0xb7,0x4b,0x63,0x07,0x2c,0x22,0x77,0x05,0xc9,0xf4,0x55,0x04,0x93,0xf8,0x52, + 0x7e,0xcb,0x1e,0x0b,0xd5,0x3e,0x2b,0x7c,0x46,0xd6,0xfe,0x20,0xdd,0x41,0x73,0x63, + 0xa7,0x40,0x51,0xed,0x9d,0x14,0xe6,0x4c,0x3a,0x85,0x45,0x38,0xe7,0x84,0xe4,0x8e, + 0xeb,0xef,0x5d,0x8f,0xc2,0xcf,0xd8,0x43,0xc2,0x49,0xa6,0x68,0x7a,0xe6,0xa7,0x67, + 0x7b,0xac,0x25,0xc5,0xa4,0x57,0x6d,0x69,0x25,0xea,0xc7,0x16,0x59,0x15,0xb6,0x9c, + 0x0d,0xc4,0x0c,0x9e,0x33,0x5b,0xde,0x33,0xd4,0x6c,0x2d,0x7c,0x53,0x07,0x86,0x2d, + 0x6f,0xac,0x74,0x6b,0x68,0xc9,0xdb,0xa1,0xc7,0x2a,0x2e,0x02,0x92,0x06,0x23,0x1d, + 0x7e,0x50,0x46,0x6b,0x8d,0xb9,0x62,0x25,0x66,0xac,0xbe,0x67,0x5a,0x9d,0x0a,0x34, + 0x67,0x4e,0x83,0x6d,0xcb,0x46,0xde,0x9a,0x5f,0x64,0x93,0x7b,0x9f,0x57,0x40,0x84, + 0x48,0xcc,0x3a,0xec,0x1f,0xcc,0xd4,0x3a,0xd9,0xdd,0xa3,0xdd,0x2e,0x7e,0xf2,0x15, + 0xfc,0xf8,0xfe,0xb5,0xcf,0xf8,0x26,0x5b,0xeb,0x1f,0x07,0xe8,0xb1,0x8d,0x2e,0x43, + 0xb2,0xca,0x08,0xf6,0xac,0xa9,0xc8,0x08,0x3e,0x6e,0x4f,0xe9,0x57,0x75,0x7d,0x46, + 0xe8,0xe9,0xee,0x25,0xb0,0x96,0xd9,0x1a,0x48,0xd4,0xc9,0x2c,0xb1,0xed,0x50,0x5c, + 0x64,0xf0,0xc4,0xfe,0x95,0x92,0x7c,0x94,0xda,0xd7,0x67,0xd1,0x9e,0x32,0x5e,0xf2, + 0x3e,0x7a,0xf8,0xd5,0xad,0xdf,0x59,0x6a,0xba,0x74,0x56,0xb7,0x26,0xdd,0x3e,0xcc, + 0x16,0x40,0x64,0x2a,0xac,0xa6,0x28,0x8f,0x38,0xe7,0xae,0x79,0x1e,0xfd,0x33,0x9a, + 0xf2,0xbb,0x1d,0x63,0x5a,0xb9,0xf2,0xc2,0xea,0xb7,0x80,0xf9,0xbc,0xa2,0x5c,0xb9, + 0x04,0xfa,0x63,0x71,0xe8,0x00,0xe4,0xfa,0xf5,0xae,0xe3,0xe2,0xfb,0xeb,0xba,0xbe, + 0xae,0xa1,0x3c,0x3d,0x39,0xb4,0x58,0x22,0x2b,0x24,0x6d,0x13,0xbb,0xaf,0x94,0x98, + 0xdc,0x03,0xe5,0x7a,0x74,0x3e,0xb5,0xe7,0xb6,0x1a,0xa9,0xd3,0xaf,0x52,0x17,0xd3, + 0x25,0x13,0x16,0x32,0x08,0xa5,0xf2,0x8f,0x4c,0x67,0xe5,0x2f,0xd8,0x7f,0x3e,0x6b, + 0xe7,0x27,0x52,0x10,0xbb,0x9b,0xb1,0xf4,0x54,0x30,0xf5,0x2b,0x25,0x1a,0x51,0x72, + 0xd3,0xa6,0xbf,0x91,0xa1,0xf1,0x1a,0xfa,0x44,0x97,0xc3,0x81,0x5d,0x95,0xc5,0xa5, + 0xc3,0xb1,0x5e,0xa4,0x9b,0xa9,0x7a,0xff,0x00,0xdf,0x35,0x77,0xc1,0x97,0x5a,0x36, + 0xa1,0xa2,0x87,0xd4,0xe2,0xb3,0xb8,0xbb,0x49,0x19,0x19,0xa6,0x93,0x0c,0x07,0x50, + 0x0f,0xe7,0x55,0xbe,0x21,0xd8,0xeb,0x1a,0xb5,0xf6,0x9d,0x76,0xba,0x05,0xfc,0x5a, + 0x74,0x16,0x0b,0x12,0xcc,0xb1,0xee,0x19,0x32,0xc8,0xfb,0x9b,0x91,0xb7,0x3e,0x60, + 0xc7,0x27,0xa6,0x7b,0xd7,0x27,0x2c,0x3e,0x10,0x9e,0x28,0x0e,0xa5,0xa8,0xdb,0x58, + 0x5f,0xaa,0xb2,0xcd,0x0c,0xd7,0x0b,0x1c,0x80,0x87,0x6c,0x16,0x53,0xd0,0xe3,0x1f, + 0x86,0x2b,0xd6,0xc2,0x56,0xa6,0xeb,0x46,0xf2,0x4b,0xdd,0x5d,0x7c,0x91,0xc9,0x3c, + 0x2d,0x7e,0x46,0xd5,0x36,0xf5,0xec,0xcf,0xcf,0xdf,0x8e,0x3a,0x8d,0xbe,0xb9,0xf1, + 0x0a,0xfe,0xfe,0xd2,0x68,0xe6,0xb5,0x98,0xa3,0x24,0x91,0x9c,0xab,0x01,0x1a,0x03, + 0x8f,0xc7,0x35,0xed,0x7f,0x11,0x3c,0x5d,0xa2,0xea,0x72,0xe9,0xbe,0x5e,0xb7,0xa7, + 0x1f,0xb4,0xac,0x60,0x4a,0x2e,0x17,0x60,0x1b,0x98,0x6e,0xea,0x78,0x1d,0xeb,0xe7, + 0x5f,0x12,0xf9,0xc9,0x60,0x85,0xcc,0x65,0x40,0x00,0xe0,0x73,0x8c,0xfd,0x2a,0x4d, + 0x56,0xd9,0x2f,0xfc,0x3d,0xa0,0x3b,0xaa,0xc8,0xd1,0x89,0x11,0x98,0x01,0x8c,0x2b, + 0xe7,0xf9,0x30,0xfc,0x85,0x7d,0x1b,0xa0,0xa4,0x92,0xbe,0xc7,0x83,0x29,0x5e,0xfe, + 0x6c,0xfb,0xe3,0x46,0xd7,0xfc,0x21,0x6d,0xe3,0x3b,0x79,0x20,0xf1,0x46,0x9b,0x24, + 0x26,0x2d,0x42,0xf5,0xe5,0x1a,0x94,0x24,0x07,0x67,0x5d,0xab,0x90,0x40,0xc1,0xdb, + 0xc0,0xf4,0xf5,0xe4,0x56,0x79,0xf8,0xcb,0xe1,0xcd,0x67,0x4d,0xf1,0xb6,0x8b,0x25, + 0xc4,0x51,0xc7,0x1c,0x36,0x8c,0x6e,0x1e,0x75,0xf2,0xdd,0x63,0xdc,0x1b,0x69,0x07, + 0x9e,0x0e,0x78,0xf4,0xaf,0x87,0xec,0xe2,0x79,0xe2,0x44,0x16,0x76,0xed,0xb9,0x0f, + 0x02,0x35,0x18,0x19,0xc6,0x7f,0x2a,0xa0,0x65,0x37,0xf2,0x88,0xe3,0x85,0x23,0x10, + 0x49,0x92,0xe8,0xa0,0x67,0x00,0x81,0xcf,0xe7,0xf9,0xd7,0x12,0xc2,0x72,0xcb,0xe2, + 0x35,0x55,0x6e,0xad,0xca,0x7a,0x97,0x89,0x3c,0x45,0x6f,0xf1,0x5f,0xe3,0x4d,0xb6, + 0xa1,0xa7,0xc0,0x2d,0x60,0x82,0xe1,0x59,0x1a,0x41,0x82,0x61,0x8a,0x42,0x73,0xf5, + 0x27,0xaf,0xe5,0x5d,0x5f,0xc0,0x69,0x12,0x7f,0x8d,0x5a,0xa5,0xe3,0xe1,0x42,0x5a, + 0xdf,0x36,0xe6,0x7c,0xee,0xca,0x3a,0x64,0x7a,0x75,0x1c,0x57,0x96,0x7c,0x20,0xb0, + 0xf2,0x7c,0x75,0x34,0x8e,0xc5,0x84,0x76,0xb2,0x36,0x48,0xf5,0x3d,0x3d,0xf1,0x58, + 0xba,0x7c,0x56,0xd7,0xd3,0xab,0xaf,0x98,0xac,0x5d,0xcb,0x1d,0xc4,0x99,0x18,0xb3, + 0x11,0x81,0xcf,0x50,0x40,0xae,0xce,0x55,0x18,0xa4,0x88,0x5a,0xbb,0x9f,0x59,0x7e, + 0xd7,0x1a,0xcf,0xf6,0x3f,0xc5,0x58,0x2f,0x04,0x11,0xc9,0x75,0xa4,0x69,0x56,0x11, + 0xdb,0x17,0x20,0x6d,0x3e,0x4e,0xed,0xe3,0x20,0xf2,0x0b,0xe3,0xf0,0xaf,0x9a,0x3c, + 0x7d,0xe2,0x81,0xe3,0x8d,0x4a,0xd6,0xf3,0x54,0xb8,0x56,0x9a,0xd9,0x36,0x26,0xcc, + 0x7f,0x7b,0x73,0x73,0xdf,0xa9,0xae,0x67,0xc4,0x57,0x66,0x2b,0x6b,0x04,0x79,0x66, + 0x4b,0x79,0x65,0x90,0xbe,0xf9,0x77,0x31,0xf9,0x53,0x1d,0x85,0x63,0xdb,0xc5,0x1d, + 0xac,0xd1,0x48,0xbe,0x6d,0xc2,0x48,0x46,0x16,0x5f,0xfe,0xb0,0xa8,0x54,0x62,0xa4, + 0xaa,0x75,0x35,0x53,0x7c,0xbc,0x9d,0x0e,0xf2,0xd7,0x5d,0xb0,0xb5,0xd5,0xa3,0x64, + 0xb3,0x8e,0xe6,0x71,0x0a,0xf9,0x30,0xb8,0x2d,0xb9,0x71,0xc8,0xc7,0x4c,0xe7,0x26, + 0xba,0x9f,0x05,0xf8,0xc2,0x2d,0x3f,0x54,0x95,0x13,0x43,0x97,0x50,0x92,0x66,0x0f, + 0x1a,0x2d,0x90,0x66,0x0c,0x07,0x40,0x37,0x0e,0x31,0x9a,0xf2,0x8f,0x13,0xc7,0x73, + 0x63,0x77,0x61,0x77,0x6a,0x1e,0x27,0x96,0x35,0x02,0x48,0xd4,0xfc,0xbc,0x0e,0x87, + 0xf1,0xae,0xbb,0xc2,0x5a,0xde,0xa9,0x77,0xe1,0x5d,0x6e,0x10,0x6f,0x6e,0xe5,0x68, + 0x64,0x58,0xd9,0x18,0x12,0xa4,0x10,0x01,0x51,0x8c,0xe7,0xaf,0x4a,0xc2,0xb5,0x2b, + 0xae,0x63,0xaa,0x8d,0x44,0xbd,0xd3,0xdd,0x74,0x7f,0x1e,0x78,0x9a,0xfe,0x0d,0x42, + 0x28,0x74,0x88,0x6c,0x5c,0x41,0x94,0x13,0xcd,0x1c,0x44,0xf5,0xfe,0x12,0x09,0xfd, + 0x6b,0x90,0xf1,0x0d,0xbe,0xa9,0xaa,0xf8,0x75,0x35,0x5d,0x72,0xee,0xcf,0x4c,0xb0, + 0x85,0x63,0x5f,0x3a,0x01,0x3f,0x9b,0x1a,0x83,0x80,0x03,0x2e,0x41,0xeb,0x8f,0xc6, + 0xb1,0x7c,0x07,0xe1,0xad,0x73,0x4b,0xb8,0xf0,0xfc,0xef,0xa2,0xde,0x59,0x44,0x1a, + 0x76,0xbd,0xb8,0x96,0xdf,0x6b,0x48,0xa7,0x94,0xdc,0x48,0x2c,0x7b,0xf6,0xa9,0xbc, + 0x4d,0xe3,0xad,0x06,0xfb,0xc2,0x77,0xba,0x12,0x4f,0x33,0xdf,0x3e,0x50,0x46,0x96, + 0xdf,0x2e,0xe5,0x93,0x3c,0xb8,0xc7,0xa7,0xa1,0xae,0x65,0x4f,0x96,0x4a,0x30,0xd7, + 0x6d,0xba,0x0e,0x52,0x4d,0x37,0x2d,0x0f,0x3a,0x4d,0x2e,0x59,0x25,0x32,0x59,0x5f, + 0xdd,0x5e,0x42,0xcc,0x58,0x79,0xa5,0x89,0x1f,0x51,0x93,0x8a,0x7d,0xae,0xa1,0x16, + 0x8d,0xa9,0xc4,0xf7,0x31,0xfd,0xa7,0xca,0xce,0xf8,0x5c,0x70,0xf9,0x1d,0x33,0x5d, + 0xaf,0x83,0x64,0xd2,0xec,0x34,0x89,0x22,0xbd,0xd2,0x6f,0xae,0x2f,0x7c,0xd6,0x92, + 0x39,0x6c,0xe3,0xc1,0xc1,0x50,0x30,0x49,0xeb,0xc8,0xcf,0x4a,0xc0,0xf1,0x15,0xbc, + 0xba,0xaf,0x88,0xac,0xb5,0x18,0x34,0x0d,0x48,0xdb,0xc0,0x62,0x32,0xc0,0xf6,0xfc, + 0xca,0x53,0x03,0x3c,0x63,0x82,0x2b,0xe8,0x23,0x35,0x04,0xe1,0x35,0xa7,0x73,0xce, + 0x71,0x6f,0xde,0x8b,0x28,0xbc,0xb6,0x5a,0xad,0xf1,0x16,0x88,0xf6,0xb2,0x48,0xbb, + 0xbc,0xa0,0xc0,0x82,0x31,0x9e,0x33,0xed,0xda,0xb6,0xad,0xef,0xa6,0xb2,0xf0,0xfd, + 0xc5,0xaa,0x69,0x71,0x5e,0x32,0x07,0x19,0x9e,0x19,0x01,0xe8,0x4e,0x32,0x30,0x2b, + 0x26,0xc3,0x4a,0x9b,0x4d,0xf1,0x25,0xa6,0xa3,0x0f,0x85,0x35,0xab,0xcb,0x28,0xe3, + 0xd9,0x24,0x13,0xc5,0xb5,0x99,0x80,0x21,0x48,0x60,0x08,0x1d,0x47,0x6e,0xde,0xf5, + 0xe8,0xba,0x67,0x8d,0xb5,0x6b,0x5b,0x39,0x52,0xdf,0xc0,0x7a,0x84,0x10,0xab,0x16, + 0xdd,0x71,0x29,0x39,0xcb,0x03,0xd7,0xcb,0x1d,0xeb,0x92,0xae,0x25,0xbf,0x76,0x0a, + 0xeb,0xd4,0xd6,0x14,0xfa,0xcb,0xf2,0x3c,0x6b,0x40,0xd3,0x2e,0x1a,0xdf,0x64,0xa8, + 0xc1,0xc9,0x25,0x47,0x7d,0xa7,0x9f,0xf3,0xf8,0x56,0xa2,0x59,0xcd,0xa7,0xdd,0x86, + 0x78,0x72,0x91,0xb8,0x62,0x26,0x04,0x2e,0x7d,0xfd,0xab,0xd2,0xcd,0xee,0xb3,0x6b, + 0x7f,0x2d,0xcc,0x7e,0x08,0x4b,0x57,0x3f,0x31,0x9d,0xaf,0x9d,0xdf,0x9e,0xca,0x33, + 0xf2,0xf5,0x35,0x07,0x88,0xee,0x3c,0x49,0xe2,0x68,0x66,0xb5,0x6d,0x14,0x59,0xee, + 0x04,0x97,0xfb,0x4b,0x92,0x3a,0x7c,0xa5,0x4b,0x60,0xe7,0xd3,0x15,0xa4,0x71,0x35, + 0x25,0x15,0x64,0x92,0xf5,0x44,0xba,0x30,0x8b,0x7d,0xfd,0x0e,0x2a,0x1f,0x18,0xea, + 0xf6,0xec,0xd1,0x5a,0xa4,0x76,0xe3,0x71,0xcb,0x2c,0x6b,0x18,0x3c,0x7d,0x09,0x23, + 0xf0,0xab,0x62,0x6b,0x9d,0x72,0x33,0xf6,0xad,0x59,0x16,0xe0,0x60,0xf9,0x45,0x18, + 0xf1,0xeb,0xc9,0x03,0xf2,0xac,0x9b,0x5d,0x7e,0xf7,0x4f,0xb2,0x9e,0xce,0x4d,0x36, + 0xce,0x74,0xc9,0x55,0x90,0x67,0x7c,0x67,0xbe,0x0e,0x7d,0x87,0x06,0xae,0x6a,0x1a, + 0xd3,0x6a,0x61,0x67,0x96,0xc4,0x46,0xf0,0xc6,0x90,0xe6,0x29,0x78,0x00,0x74,0xf9, + 0x4e,0x4f,0xeb,0x5b,0xa8,0x53,0x6a,0xfb,0x79,0xe8,0x62,0xdb,0x28,0xe9,0x50,0x6a, + 0x10,0xf8,0xa2,0x58,0x59,0xcc,0x66,0x14,0xf3,0x62,0x95,0x62,0xff,0x00,0x5c,0xb8, + 0x51,0xea,0x38,0xe4,0x8e,0xbd,0xab,0xd6,0xbe,0x1e,0xf8,0xbf,0x5e,0xf8,0x1f,0x25, + 0xb7,0x8d,0x23,0xb1,0xb4,0xbb,0xf0,0xf4,0x97,0xa2,0xce,0xee,0xdc,0xed,0x13,0x82, + 0x57,0x96,0x5e,0x32,0x32,0x37,0x00,0x41,0xc7,0x1c,0x8a,0xf2,0xc8,0xb5,0x29,0x16, + 0x68,0x9a,0xea,0x12,0x63,0x00,0xae,0x24,0x4c,0xa8,0x42,0x3e,0x9c,0xe6,0xa0,0x6b, + 0x6d,0x27,0x59,0xd4,0x2c,0xa0,0xbd,0x73,0xa7,0xd9,0x47,0x20,0x32,0xcb,0x6f,0x00, + 0x67,0xd8,0x5c,0x03,0xb4,0x0c,0x03,0x85,0x24,0xf3,0xdc,0x63,0xbd,0x70,0x57,0xa7, + 0xed,0x2f,0x0d,0xe2,0x74,0xc1,0xf2,0xc5,0x4b,0x69,0x1f,0xae,0x96,0xb7,0x51,0x5d, + 0x59,0xac,0xb0,0x32,0xf9,0x52,0x28,0x6c,0x1f,0x97,0x72,0xb0,0xef,0xe9,0xd3,0xf4, + 0xaf,0x9a,0x3f,0x6e,0x49,0xa0,0xb8,0xf8,0x7f,0xa0,0x8c,0xc6,0x08,0xd6,0xe3,0x2d, + 0xb4,0x8c,0x1f,0xdc,0xcd,0xc9,0x3d,0x87,0xd2,0xbc,0x03,0x48,0xf8,0x4b,0xf0,0x7e, + 0xea,0x14,0x8e,0x0f,0x8b,0x7a,0xae,0x9f,0xe7,0x1e,0x45,0xe6,0x8a,0xf9,0x3d,0x3b, + 0xab,0x90,0x3f,0xfa,0xe6,0xbd,0x47,0xc1,0x3f,0xb1,0x2e,0x93,0xe3,0x6b,0x88,0xef, + 0xbc,0x3f,0xf1,0x76,0x2d,0x4a,0xd2,0x25,0x31,0xfe,0xe7,0x4e,0x59,0x36,0x8e,0x46, + 0x18,0x79,0xd9,0x5c,0x8f,0x51,0x9a,0xf9,0x4a,0x78,0x6a,0x38,0x4a,0x8a,0xa4,0xa6, + 0xf4,0xef,0x16,0x8f,0x45,0xd4,0x95,0x68,0xf2,0xa5,0xf8,0xa3,0xeb,0xcf,0xda,0x33, + 0xf6,0xb8,0xf8,0x7d,0xe1,0x5f,0x82,0x57,0xb6,0x3a,0x36,0xbd,0xa6,0x78,0xaf,0x5a, + 0xd5,0x2c,0x8e,0x9d,0x05,0x8e,0x97,0x7f,0x14,0x9e,0x59,0x68,0x88,0x67,0x95,0x81, + 0x3b,0x11,0x79,0xe4,0xf5,0x38,0x1e,0xb8,0xfc,0xd6,0xd7,0xbc,0x7d,0x1e,0xbd,0xe1, + 0xff,0x00,0x16,0x4f,0x7a,0xd6,0xb6,0x97,0x57,0x97,0x36,0xbe,0x5c,0x71,0xcc,0x09, + 0x70,0x1a,0x42,0xdb,0x47,0x53,0x81,0x8f,0xce,0xbd,0x8f,0x57,0xfd,0x85,0x74,0xf1, + 0xaf,0x26,0x8b,0x0f,0xc5,0xcd,0x22,0x5d,0x55,0x99,0x91,0xec,0x25,0xb6,0x55,0x9c, + 0x0d,0x84,0xe0,0x44,0x26,0xdc,0x48,0xc0,0xe0,0xe3,0x8c,0x9e,0xd8,0x3e,0x21,0xf1, + 0x27,0xe0,0x5c,0xff,0x00,0x0f,0x35,0xab,0xe8,0x5f,0x5b,0x5b,0xe9,0x34,0xeb,0xe2, + 0x0c,0x91,0x42,0x54,0xc9,0x80,0x38,0xc6,0xe3,0x8e,0x7e,0xb5,0xe9,0xe1,0x7e,0xac, + 0xbd,0xd8,0x4a,0xed,0xeb,0xb3,0x39,0x9c,0x6a,0x43,0x5b,0x68,0x71,0x36,0x93,0x2c, + 0xb0,0x22,0xbb,0x0f,0xbd,0x80,0xc4,0x77,0xde,0x78,0xfc,0x96,0xbd,0x51,0xed,0xa7, + 0xd4,0x7e,0x11,0x7d,0x8e,0x06,0x61,0x34,0xb3,0xce,0xa9,0xe5,0xf0,0x46,0x1e,0xdd, + 0xb3,0xfe,0x7b,0x57,0x8f,0xd9,0x44,0x7e,0xd3,0x1c,0x08,0x77,0x49,0x24,0x81,0x94, + 0x74,0x3c,0x93,0xdf,0xea,0xd5,0xea,0x1a,0x84,0xb1,0x49,0xf0,0xa6,0xde,0x27,0xba, + 0x5b,0x13,0xe7,0x49,0xba,0x67,0xc9,0x0b,0x93,0x6f,0xe9,0xcf,0x63,0x5e,0xdb,0x4d, + 0xb4,0x97,0x73,0x92,0x2d,0x24,0xdb,0xec,0x79,0xf1,0xf0,0xd5,0xcd,0xaf,0x88,0xa1, + 0xb0,0xb8,0x9e,0x77,0x72,0xfc,0xc6,0xef,0xbb,0x2b,0xf8,0x57,0xd8,0x3f,0x03,0xae, + 0x60,0xf0,0xaf,0xc2,0xad,0x4b,0x45,0x61,0x2d,0xbd,0xf6,0xa8,0x2f,0x6d,0xed,0xe3, + 0x31,0xb7,0x1b,0x6f,0x6c,0x4b,0x6e,0x3d,0x86,0xd5,0xef,0xd7,0x23,0x15,0xf1,0xaf, + 0x87,0xe4,0x32,0x78,0x9e,0xcc,0x8b,0xd6,0x9f,0xf7,0xaa,0xa0,0xa9,0xe1,0x86,0x47, + 0x3f,0xad,0x7d,0x8b,0xf0,0xaf,0x4b,0x5b,0xcd,0x3f,0xe1,0xf2,0x12,0x55,0xa6,0xd4, + 0x35,0x21,0xc0,0xce,0x4b,0x5e,0xc4,0x06,0x7f,0xef,0xd5,0x72,0x62,0xd4,0xa3,0xec, + 0xdb,0x7b,0x4b,0xf2,0x8b,0x3b,0xb0,0x73,0x8f,0xef,0x12,0x5b,0xc7,0xf3,0x92,0x3f, + 0x52,0x3c,0x29,0x1a,0x5b,0x78,0x6b,0x47,0x82,0x31,0x88,0xd2,0xca,0x15,0x50,0x7b, + 0x01,0x1a,0xe0,0x57,0xc8,0x7e,0x28,0xf0,0x04,0x3a,0x8f,0xc5,0xb3,0xe3,0x0b,0x89, + 0x14,0xde,0xc3,0x03,0xc6,0xab,0xc1,0xdd,0x95,0x1c,0xe7,0xae,0x46,0x09,0x03,0xfd, + 0xb3,0x5f,0x5c,0x68,0x56,0x7a,0xa2,0xe8,0x3a,0x68,0xfb,0x4d,0xa1,0x6f,0xb3,0x47, + 0x95,0x30,0xb0,0xc7,0xc8,0x3b,0xef,0xaf,0x9b,0xfc,0x2f,0xe1,0x0f,0x11,0x5f,0xfc, + 0x4d,0xf1,0x26,0x85,0x7d,0x33,0xdf,0xde,0x5a,0xb2,0xcf,0x12,0xc9,0x14,0x70,0xa4, + 0x50,0x30,0x00,0x6c,0x6c,0xfc,0xe3,0xe6,0xc6,0x7f,0xd9,0x35,0xcd,0x84,0x8b,0xa7, + 0x7f,0x68,0xed,0x7d,0xbc,0xce,0x79,0x4d,0x46,0xe9,0x75,0x3e,0xa6,0xb0,0xb7,0x16, + 0x96,0x56,0xf6,0xe3,0x81,0x14,0x6b,0x18,0x1e,0x80,0x00,0x2b,0x2b,0xc5,0xc7,0x7e, + 0x92,0xca,0x7e,0xe1,0x9a,0x00,0x7d,0x3f,0xd7,0x25,0x5b,0x67,0xd5,0xf7,0x36,0xc8, + 0x2d,0x5b,0x9e,0x82,0x63,0xc0,0xff,0x00,0xbe,0x6b,0x0f,0xc5,0x57,0x9a,0x8c,0x5a, + 0x67,0xfa,0x55,0xa2,0x45,0x09,0x9a,0x2f,0x9c,0x4a,0xbd,0x9c,0x11,0xc7,0xbe,0x2b, + 0xcf,0xad,0xcd,0xcb,0x2b,0x27,0x6d,0x7a,0x05,0x35,0x79,0x23,0xe7,0xef,0x8b,0x9a, + 0xa1,0xb0,0xd7,0xd9,0x62,0x94,0x43,0x24,0xa2,0x35,0xc8,0x4c,0xbb,0x28,0x8d,0x14, + 0xa8,0xe7,0x80,0x70,0x3a,0x57,0xcf,0x97,0xde,0x27,0x87,0x46,0xd7,0xaf,0x35,0x4b, + 0xcb,0x4d,0x50,0x3c,0xb0,0x7d,0x9e,0x61,0x17,0x23,0x0a,0xc0,0x82,0x81,0x64,0xc8, + 0x1c,0x72,0x08,0xe9,0x8f,0xc7,0xd4,0x7f,0x68,0x9f,0x10,0x6b,0xda,0x04,0x7a,0xce, + 0xbc,0x3c,0x25,0x3e,0xa9,0x15,0xa3,0xab,0x45,0x0c,0x37,0x68,0x44,0x9d,0x14,0x02, + 0x10,0xee,0x1c,0xe3,0x20,0x0c,0x8e,0x6b,0xc0,0x7c,0x05,0xf1,0xae,0x4d,0x5b,0xc4, + 0xb1,0x68,0x9e,0x25,0xd1,0x2c,0xac,0x75,0x69,0xf3,0x15,0xb5,0xb4,0x6c,0x37,0xbb, + 0xee,0x23,0x08,0xac,0x41,0x39,0xc3,0x75,0x19,0xca,0xfb,0xd7,0x93,0xf5,0x6f,0xac, + 0xc1,0xbf,0x5b,0xd9,0xea,0x7d,0x86,0x1b,0x13,0x53,0x02,0x94,0xe0,0x96,0xb6,0xdd, + 0x69,0xa7,0x67,0xdc,0xf7,0x1d,0x47,0xf6,0xd1,0xf0,0x9e,0xb7,0xe1,0xdb,0xed,0x36, + 0x11,0xab,0xc1,0xba,0xda,0x28,0x44,0x72,0x58,0x9d,0x80,0xa1,0x5e,0x4b,0x64,0x9f, + 0xe0,0x61,0x8c,0x7f,0x15,0x7c,0x79,0xac,0x78,0xcb,0x4f,0xd6,0x75,0xad,0x42,0xfa, + 0xe6,0xd6,0x76,0x9a,0x7b,0x87,0x90,0xed,0xb6,0x90,0xe0,0x13,0x90,0x0e,0x01,0x19, + 0xc1,0x15,0xed,0xda,0xb7,0x82,0xe2,0xd1,0xf5,0x99,0xac,0xa4,0xd3,0xe4,0x26,0x4b, + 0x38,0x25,0x2a,0xb1,0x13,0xe5,0xb4,0x9b,0xa4,0x3b,0x89,0x27,0x9f,0x9c,0x70,0x3a, + 0x57,0x1d,0xac,0xfc,0x32,0x58,0xa7,0x8a,0xf1,0xb5,0x2d,0x32,0xc9,0x35,0x04,0x37, + 0x11,0xdb,0x4f,0x39,0x49,0x63,0x50,0xcd,0x16,0x1d,0x47,0x42,0x4c,0x44,0xfd,0x08, + 0xae,0xe5,0x97,0x51,0xc5,0x56,0xf7,0xdb,0xd2,0x2b,0x67,0xff,0x00,0x03,0xcc,0xc7, + 0x0d,0x9d,0xe2,0x32,0xea,0x4e,0x34,0x61,0x1d,0x5b,0x6e,0xe9,0xbd,0x7e,0xff,0x00, + 0x23,0xe3,0x7b,0xfd,0x1a,0x5b,0xcd,0x1e,0x5b,0xa0,0x50,0x45,0x1b,0x2a,0xb6,0x5b, + 0x07,0x9e,0xe3,0xd7,0xf9,0xf3,0x53,0xd8,0x69,0x97,0xc3,0xc3,0x11,0x41,0x6f,0x65, + 0x3d,0xd9,0xf3,0xa4,0x0a,0xde,0x4b,0x92,0x03,0xaa,0xe0,0x8d,0xa7,0xaf,0xcb,0xc7, + 0x6a,0x8a,0x58,0xe4,0x96,0xc0,0x4a,0xaa,0xcf,0x02,0x91,0xb8,0x8e,0x81,0x8f,0x4f, + 0xeb,0x5e,0xd9,0xe0,0x0d,0x67,0x36,0xba,0x14,0x62,0x66,0xfb,0x40,0x07,0xed,0x61, + 0x98,0x9d,0xa7,0x20,0x47,0x9c,0xf0,0x3e,0x5c,0xe3,0xda,0xbe,0xe5,0xa4,0x96,0x9b, + 0x9f,0x0f,0x2b,0xb7,0x63,0xc8,0x34,0xcf,0x0f,0x6a,0x50,0x3c,0x56,0xb3,0xb4,0xd6, + 0x13,0xdc,0x2b,0x04,0xfb,0x6a,0x98,0x81,0x1d,0xcf,0xcd,0xd7,0xb0,0xe2,0xb1,0x1a, + 0x69,0x6d,0x57,0x11,0x4c,0x71,0x9c,0xba,0x93,0xf7,0x49,0x27,0xa8,0xf4,0xaf,0x44, + 0xf8,0xaf,0x61,0x71,0xad,0x5f,0x68,0xd6,0x30,0x4f,0x2d,0xd4,0xd0,0xa5,0xc4,0x7b, + 0xb2,0x0b,0x10,0x26,0x72,0x49,0x3f,0x4e,0x73,0x5e,0x5f,0x69,0x73,0x22,0xa4,0x47, + 0x76,0x79,0x38,0x62,0x79,0xce,0x4f,0xf8,0xd6,0x12,0xa6,0xd1,0x51,0x97,0x32,0xb9, + 0xe9,0xff,0x00,0x06,0x2f,0x44,0x12,0x6b,0xf7,0x8e,0xa2,0x66,0x8a,0xca,0x4d,0xb9, + 0x03,0x00,0x90,0x7a,0x7e,0x59,0xff,0x00,0x39,0xae,0x5b,0xc1,0xad,0xa9,0x45,0x75, + 0x6e,0x6d,0x83,0x88,0xe0,0x9b,0xcc,0x9a,0x48,0xe3,0xc9,0x8d,0x07,0xde,0xdc,0x71, + 0xc0,0xc5,0x75,0x5f,0x0e,0x15,0x87,0x85,0x3c,0x53,0x3a,0x01,0x34,0x9b,0x0c,0x4a, + 0x54,0x67,0x27,0x04,0x67,0xf5,0xad,0x4f,0x0e,0x69,0x45,0x34,0x89,0xa2,0x9a,0xee, + 0xd3,0x4f,0x17,0x24,0xf9,0xa6,0xf0,0xf0,0xa0,0x01,0x8e,0x07,0x5e,0x72,0x3a,0xfe, + 0x15,0x94,0xd5,0x95,0x8d,0x61,0xb9,0xc3,0x78,0x8b,0xc1,0x37,0xa9,0xa7,0x68,0xe6, + 0xe1,0x56,0xd4,0x5c,0x3c,0x93,0xa9,0x23,0x3b,0x94,0x81,0xf3,0x7f,0x3f,0xca,0xa7, + 0x93,0x4e,0xb2,0x86,0x2b,0x68,0x0c,0xa3,0x11,0x9d,0x92,0x6d,0x3b,0x7a,0x63,0x24, + 0x9f,0xf0,0x3d,0xab,0xb8,0xd7,0x7c,0x37,0x15,0xeb,0x69,0x7b,0xfc,0x53,0xa5,0x43, + 0xe4,0x06,0x4d,0x81,0x24,0x01,0xd0,0x28,0x00,0xfc,0xaa,0x7a,0xe0,0x1c,0xf7,0xcd, + 0x79,0x45,0xea,0xc9,0x6d,0xa9,0x08,0xd6,0x46,0x92,0x24,0x91,0x9a,0x42,0x89,0x22, + 0x87,0xe7,0x38,0xc6,0x33,0xed,0x4d,0x5e,0x48,0xa9,0x59,0x4b,0xdd,0xd8,0xed,0x8e, + 0xaf,0x67,0x14,0x76,0x70,0xbd,0xd2,0x79,0x16,0x8a,0x7c,0xa8,0xe4,0x5c,0x9c,0x11, + 0x91,0xd7,0x3e,0xdd,0xfb,0x57,0xae,0x7c,0x39,0x7b,0x7b,0xad,0x24,0x4f,0xa7,0x87, + 0xba,0x9a,0x56,0x2a,0x15,0x57,0xcb,0xf3,0x39,0xe0,0x00,0x5b,0xa7,0xd0,0x57,0x81, + 0xcd,0xac,0xc2,0x6d,0x9a,0x5b,0x73,0x77,0x6b,0x70,0x25,0x52,0x1e,0x28,0x32,0x42, + 0xe0,0xf1,0xb8,0x8f,0x71,0xe9,0xd2,0xbb,0x7b,0x8f,0x8a,0x57,0x97,0x36,0x03,0x4f, + 0xd2,0x9f,0x5a,0x88,0xc5,0x07,0x96,0xa6,0xd4,0x4a,0xb2,0x79,0x9b,0x18,0x64,0x90, + 0x7a,0x67,0x1c,0x7b,0x57,0x14,0xe8,0x4a,0x76,0x4c,0xea,0x8d,0x48,0x45,0x5d,0x6e, + 0x7a,0xf4,0x37,0xbe,0x2b,0x95,0x5d,0xd3,0xc1,0xf3,0xb4,0x20,0xb4,0x69,0xe6,0xdc, + 0xaa,0x48,0xd8,0xe0,0x92,0x8b,0x09,0x65,0x04,0x82,0x41,0x27,0x91,0x8f,0x5a,0xf3, + 0x9d,0x76,0xef,0xc6,0x1e,0x0f,0xd2,0x6c,0xef,0xdb,0xc1,0x77,0xb6,0x56,0xf0,0x23, + 0x19,0xa5,0x8a,0x42,0x77,0x06,0xee,0xc0,0x8e,0x31,0x8f,0x4e,0xf5,0xe7,0x1a,0x9f, + 0x88,0x35,0xcd,0xe6,0xe2,0xec,0x6a,0xe2,0x60,0x5c,0x3c,0xd3,0x89,0x30,0x41,0x45, + 0x55,0x18,0x3d,0x39,0xdc,0x7f,0x11,0x5c,0xcf,0x88,0x35,0x18,0xf5,0x7b,0x49,0x04, + 0x71,0x4c,0xb2,0x61,0x37,0x48,0xe1,0x98,0x6e,0x03,0xe6,0x27,0xeb,0x5d,0x34,0xb0, + 0xd1,0x84,0xae,0x92,0x39,0xa5,0x56,0x4d,0x5a,0xe7,0xac,0x78,0x7f,0xe2,0x6f,0x88, + 0x3c,0x6b,0x2c,0x96,0x16,0x36,0x20,0xbb,0xc7,0xbc,0x97,0xb8,0x55,0x38,0x5c,0x67, + 0x07,0x6e,0x73,0xff,0x00,0xd7,0xa7,0xea,0x9a,0xaf,0x8e,0xf4,0xd8,0x74,0xf5,0x97, + 0x4b,0x78,0xe4,0xba,0x7d,0x96,0xfb,0xa6,0x8f,0xe6,0x3b,0x78,0x56,0x1d,0xf8,0x07, + 0xef,0x7a,0xd7,0x9e,0xf8,0x13,0xc7,0xb6,0x5e,0x0a,0xbd,0x86,0xf2,0x3b,0x47,0x9d, + 0x84,0x06,0x27,0xdd,0x2e,0x03,0xb6,0x54,0x92,0x32,0xa7,0x1d,0x3a,0x7b,0xd7,0x65, + 0xae,0x7c,0x6d,0xb6,0xf1,0x3b,0xe9,0xc8,0xba,0x53,0xac,0xb6,0xf7,0x09,0x3a,0x05, + 0x60,0xc5,0x88,0x18,0xc0,0x01,0x07,0x5c,0xfb,0xfd,0x2b,0xae,0x51,0x7c,0xf6,0x8c, + 0x55,0xbc,0xfd,0x08,0x8d,0xb9,0x2f,0x26,0xee,0x67,0xe9,0x9f,0x15,0xf5,0xdb,0x7d, + 0x67,0xcd,0x1a,0x5f,0xda,0x25,0x90,0xfc,0xf6,0xc6,0x45,0x21,0xb2,0x30,0x30,0xbd, + 0x17,0xb7,0x41,0xfc,0xeb,0xaf,0xba,0xf1,0xcf,0x8c,0x04,0x4e,0xef,0xe0,0x99,0xa1, + 0x8c,0x75,0x60,0xab,0xeb,0xfe,0xed,0x79,0x94,0x9a,0xf5,0x9c,0x97,0x91,0xfd,0x9b, + 0x49,0x78,0xa6,0x8d,0xb2,0xe3,0x6b,0x39,0x6c,0x77,0x20,0x8e,0x0f,0x5c,0x9e,0x9e, + 0xc2,0xbd,0x03,0x51,0xf8,0xaf,0x77,0x2d,0xb5,0xcf,0x9b,0xe1,0x4b,0xc4,0x82,0x44, + 0x20,0xb1,0x87,0x68,0x19,0xee,0x4f,0x97,0xfe,0x15,0xcb,0x8a,0xa5,0x0e,0x68,0xca, + 0x9c,0x13,0x7f,0xd6,0xc6,0x94,0x27,0x24,0x9a,0x9c,0x8d,0x9d,0x43,0xc7,0x7e,0x35, + 0xfb,0x22,0xb4,0xbe,0x0f,0x9e,0x05,0x23,0x01,0x81,0xc6,0x7f,0x21,0x58,0x9e,0x21, + 0xf8,0x9d,0xae,0xdb,0x59,0xca,0xfa,0x97,0x86,0xae,0x6d,0xe1,0xce,0x1e,0x41,0x3c, + 0x8a,0x17,0xea,0x47,0x4a,0xdb,0xba,0xf8,0xa3,0x2d,0xfd,0xaa,0x42,0xbe,0x00,0xd5, + 0x90,0x81,0x91,0xf3,0x1e,0x9f,0xf7,0xec,0x55,0x2d,0x6f,0xe2,0x63,0xc9,0x6c,0x23, + 0x8f,0xc2,0xb7,0xb0,0x4b,0x36,0x54,0xb5,0xce,0x76,0x30,0xee,0x31,0xc0,0xae,0x28, + 0x42,0x5c,0xc9,0x3a,0x6a,0xde,0xbf,0xf0,0x4d,0xdc,0xd5,0xbe,0x27,0xf7,0x1e,0x73, + 0x7d,0xf1,0x2c,0xea,0x97,0x27,0xed,0x56,0x82,0xe0,0x27,0x24,0x3b,0x7c,0xd8,0xff, + 0x00,0x7c,0x00,0x4d,0x54,0x5f,0x17,0x45,0x32,0x79,0x7b,0x24,0x28,0x3e,0xe0,0x77, + 0x0d,0xb4,0x7a,0x76,0xe3,0x3c,0xd7,0x61,0x69,0xe0,0xbd,0x4b,0xe2,0x15,0xf4,0xd6, + 0x7a,0x37,0x84,0xb1,0xa9,0x79,0x66,0x46,0x11,0x34,0x51,0x80,0x3f,0xbd,0xcb,0x00, + 0x07,0x23,0xa5,0x4f,0xff,0x00,0x0c,0xbd,0xf1,0x08,0x94,0x29,0xa0,0x2a,0x92,0xb8, + 0x60,0xd7,0xf6,0xfd,0x73,0xdb,0xf7,0x95,0xec,0x53,0xa5,0x16,0xaf,0x14,0x79,0xf5, + 0x2a,0xf2,0xbb,0x33,0x98,0xb5,0xd4,0xe4,0x7b,0x56,0x88,0x5a,0x99,0x23,0xc0,0x21, + 0xb6,0x2e,0x41,0xfc,0xe9,0x25,0x06,0x55,0x02,0x38,0x65,0x61,0xdc,0x6c,0xe7,0xdf, + 0x80,0x4d,0x7a,0xf7,0xfc,0x32,0x2f,0x8b,0xed,0xb4,0x24,0xd5,0x2c,0x6e,0xec,0x57, + 0x52,0xf2,0x95,0xdf,0x45,0x2e,0x72,0x4e,0x39,0x51,0x26,0x76,0xee,0x1f,0x5c,0x1f, + 0x5a,0xd6,0xf8,0x6b,0xf0,0x7b,0xc2,0x5e,0x38,0xb5,0x6b,0x39,0x3c,0x43,0xa8,0xe9, + 0x7e,0x2b,0x87,0x31,0xdd,0x69,0x97,0xb0,0x24,0x6d,0x6b,0x28,0x18,0x1b,0x90,0x92, + 0xce,0x99,0x23,0xe6,0x18,0xe0,0xf3,0x82,0x71,0x5a,0xfb,0x26,0x8c,0x7d,0xb2,0x7b, + 0x1e,0x1a,0x03,0xc7,0x22,0xb6,0xd6,0x89,0x76,0x80,0xae,0x54,0x82,0x0f,0xd4,0x8a, + 0xde,0xf0,0xc6,0xbd,0x7b,0xa1,0x4e,0xd2,0xe9,0xba,0xc6,0xa3,0xa5,0x49,0x30,0x30, + 0x4f,0x3d,0xa5,0xc3,0xc6,0xdb,0x09,0x1b,0x87,0xca,0x41,0x23,0xb9,0x19,0xe6,0xbd, + 0x43,0xc4,0x5f,0xb3,0x6f,0x88,0xb4,0xc7,0x68,0x1a,0x7b,0x29,0x99,0x1b,0x0c,0x77, + 0x15,0xc7,0xa7,0x51,0xce,0x7d,0xab,0x16,0xd7,0xe0,0xbf,0x88,0xf4,0xcb,0xa2,0xa5, + 0xad,0x19,0xd4,0xe4,0xc7,0x26,0xf6,0x56,0x1d,0x71,0xf7,0x08,0x3e,0xb9,0xcd,0x62, + 0xe9,0x39,0xab,0x25,0x71,0xca,0xaa,0x83,0x52,0x6e,0xc8,0xd2,0xf8,0x0d,0xe1,0x3f, + 0x09,0x9f,0x8d,0xfe,0x1f,0x6d,0x4b,0x5f,0x76,0xb4,0x86,0x75,0xbc,0x82,0xe1,0x37, + 0x42,0xb2,0x5d,0x2b,0x06,0x44,0x72,0xdd,0x01,0x23,0x24,0xe7,0x9c,0x63,0x3c,0xd6, + 0xd7,0xed,0x1f,0x34,0xf3,0x6b,0xfa,0xcc,0xd6,0xac,0x5c,0xdc,0x6a,0x8e,0xca,0xea, + 0x71,0xb8,0x01,0x9e,0x3f,0x2a,0xc5,0x4f,0x81,0x7e,0x26,0xbd,0x92,0x31,0x6b,0x04, + 0x2b,0x31,0x04,0xa9,0x59,0x0c,0x63,0x77,0xfb,0x24,0x80,0x33,0xc7,0xad,0x60,0x7c, + 0x46,0xf1,0x6d,0xfe,0xa9,0x75,0x3d,0xad,0xed,0xbb,0x5b,0x5f,0x5b,0x5c,0x83,0x38, + 0x76,0x26,0x41,0x28,0x52,0x1f,0x3e,0x87,0x3f,0x5a,0xf3,0xea,0x61,0x24,0xeb,0xaa, + 0x97,0xe9,0x63,0xb6,0x9e,0x22,0x2e,0x9b,0x89,0xe5,0xb6,0xb7,0xa0,0xea,0xf0,0x02, + 0xa1,0x64,0x46,0x8d,0xb7,0xf5,0x6c,0xaa,0x63,0xf1,0xaf,0x4b,0xd4,0xe7,0xb6,0xb5, + 0xf8,0x5e,0x16,0xe0,0xa4,0x63,0x33,0xc6,0x19,0xf8,0x1b,0x8f,0x95,0x8e,0xbe,0xf5, + 0xc1,0xda,0x68,0x33,0xdf,0x78,0x9e,0xd6,0xd6,0xc6,0xdc,0xcb,0x73,0x2c,0xa8,0x44, + 0x68,0x3e,0x62,0x00,0x20,0xf1,0xfa,0xfe,0x15,0xd7,0xf8,0xdd,0xcd,0xbf,0x80,0x74, + 0xa4,0xb9,0x40,0xe9,0x34,0xd3,0x4e,0xaa,0x83,0x77,0xc9,0xca,0x8c,0x81,0xdf,0x28, + 0x7f,0x2a,0xdd,0xa6,0xd1,0x31,0xb5,0xce,0x13,0xc1,0x29,0x61,0x17,0x88,0x2c,0xe3, + 0x8e,0x48,0x18,0xfd,0xa5,0x01,0x11,0x13,0x83,0xfb,0xcf,0x53,0x9e,0xd8,0xff,0x00, + 0xf5,0xd7,0xde,0xff,0x00,0xb3,0xc6,0x92,0x9a,0x94,0xff,0x00,0x0c,0xe3,0x2b,0xfe, + 0xac,0xea,0xf7,0x4c,0x7b,0x00,0x97,0x17,0x0c,0x09,0xfc,0x54,0x57,0xc0,0x5e,0x14, + 0xb5,0xb5,0x6f,0x17,0x5b,0xcf,0x04,0x97,0x50,0x83,0x7b,0x1b,0xac,0x41,0x08,0x8f, + 0x1b,0x81,0x39,0xe3,0xd8,0xfe,0x55,0xfa,0x15,0xfb,0x31,0x5f,0x48,0xda,0xff,0x00, + 0xc3,0x7d,0x3e,0x07,0x11,0xb4,0xba,0x4e,0xa8,0x19,0xb6,0xee,0xc0,0x7b,0x8b,0xb2, + 0x0f,0xfe,0x3a,0x2b,0x87,0x1c,0xbf,0x77,0x17,0xeb,0xff,0x00,0xa4,0xbf,0xf3,0x3a, + 0xb0,0xad,0x73,0x4f,0xe5,0xff,0x00,0xa5,0x23,0xf4,0x76,0xc1,0x36,0x5a,0xc2,0x9b, + 0x70,0xab,0x1a,0x80,0x7f,0xe0,0x22,0xbc,0x2f,0xe0,0xe5,0xdb,0xea,0xff,0x00,0xb4, + 0x3f,0xc5,0x2b,0xa6,0x95,0xa6,0x5b,0x64,0xb5,0xb7,0x8f,0x73,0x96,0x08,0xa5,0xa4, + 0x3b,0x40,0xed,0xca,0xd7,0xb4,0xc1,0x63,0x7f,0x04,0x4b,0x8d,0x45,0x65,0x21,0x40, + 0xfd,0xed,0xb8,0x3f,0xc8,0x8a,0xf9,0x87,0xf6,0x5a,0xd6,0xee,0x9b,0xe2,0x0f,0xc6, + 0x3b,0xf2,0xd1,0x31,0x6d,0x52,0xde,0x1c,0x98,0x98,0xe7,0x62,0x48,0x78,0x2a,0x78, + 0xe5,0xfd,0x2b,0x9d,0x3b,0x42,0xed,0x6d,0x6e,0xc6,0x09,0x5d,0xe8,0xcf,0xab,0xd5, + 0xfe,0x79,0x3b,0x60,0x81,0xfa,0x57,0x2f,0xf1,0x04,0x96,0xd1,0xa3,0x5e,0xa7,0xcd, + 0x56,0x00,0x9e,0xe3,0x9a,0xb3,0x06,0xa1,0xaa,0x5d,0x43,0xbe,0xde,0xde,0xd6,0x47, + 0x62,0x5b,0x6b,0x4a,0xe8,0x08,0x18,0x1c,0x12,0x87,0x3c,0xe6,0xbc,0xef,0xe3,0x4f, + 0x8b,0x35,0x0f,0x0b,0x78,0x1f,0x52,0xd7,0xb5,0x6b,0x78,0xb4,0xeb,0x1d,0x2a,0x19, + 0x6e,0x5e,0x61,0x32,0x32,0x96,0xf2,0xd9,0x51,0x47,0x39,0x24,0xbb,0x20,0x03,0x6f, + 0x53,0x5e,0x6e,0x26,0xb4,0xe5,0x07,0x4d,0x45,0xeb,0xfe,0x67,0x4e,0x1e,0x9a,0xf6, + 0x8b,0x99,0xa4,0x7c,0x7b,0xfb,0x5a,0x7c,0x5f,0x97,0x4b,0xd7,0xf5,0xaf,0x0e,0xc0, + 0xab,0xf6,0xaf,0xb5,0x4a,0x9e,0x6e,0x46,0x56,0x3f,0x30,0x9c,0x75,0xef,0x93,0xf9, + 0x57,0x80,0x6b,0xff,0x00,0x09,0x74,0x4b,0xbf,0x10,0xf8,0x2e,0xe3,0x4f,0xd7,0xdf, + 0xc4,0x5a,0xae,0xad,0x2c,0x37,0x16,0xab,0x0d,0xdc,0x6a,0xd6,0x50,0x97,0x38,0x67, + 0x51,0xbb,0x6b,0x6e,0x19,0x2b,0x8c,0x8c,0x1c,0xd7,0x97,0x78,0xef,0xe2,0x06,0xad, + 0xe3,0x9f,0x16,0xea,0xda,0x9d,0xdb,0xb5,0xcd,0xfd,0xdb,0x3d,0xc3,0x14,0x04,0xf5, + 0xc6,0x71,0x8f,0xa9,0xad,0xef,0xd9,0x1d,0x85,0x87,0xc4,0x8b,0x7d,0x52,0xf9,0x66, + 0x85,0xad,0xb3,0x23,0x19,0x70,0x3e,0x57,0x1d,0xb7,0x63,0x00,0xef,0x62,0x4e,0x78, + 0xaf,0x42,0x18,0x5a,0x94,0x70,0xeb,0x97,0xe3,0x4b,0x5b,0x75,0xeb,0x63,0xda,0xaf, + 0x8f,0xa3,0x5a,0xb3,0xa5,0x15,0xfb,0xa5,0xb5,0xef,0xba,0x49,0x39,0x79,0x5e,0xd7, + 0xf2,0x3e,0xda,0xf8,0x9f,0x32,0xcb,0xe3,0x99,0xed,0x51,0x64,0x57,0xb4,0xb4,0xb3, + 0xb7,0x91,0xdd,0xf7,0x19,0x58,0x40,0x84,0xb7,0x41,0x82,0x77,0x7f,0x5a,0xe5,0x7c, + 0x5b,0x6b,0xe0,0x88,0x86,0x8e,0x2f,0x52,0xfb,0xed,0xc6,0xc8,0x9b,0x8d,0x8a,0x0a, + 0xee,0x33,0x4b,0xd3,0xdb,0x1b,0x7f,0x5a,0xd7,0xf8,0x95,0xa9,0x34,0x7f,0x13,0xbc, + 0x40,0x23,0xb7,0x9a,0x62,0x5e,0xdc,0x86,0x8d,0x43,0x2e,0x3e,0xcf,0x17,0x19,0x07, + 0xf9,0x7e,0xb5,0xe7,0x1e,0x37,0x73,0xa8,0xea,0x36,0x92,0xb5,0x9d,0xce,0xef,0xb3, + 0x28,0x38,0x38,0xe7,0x73,0x76,0xc7,0x15,0x86,0x15,0xca,0x35,0x2f,0x6e,0x8b,0xf4, + 0x3c,0x9a,0x89,0x4a,0x3b,0xf5,0x3e,0x1a,0x85,0xaf,0xd3,0x43,0x6b,0x64,0x2e,0x20, + 0x60,0x18,0xc6,0x0e,0x37,0x10,0x3b,0xfe,0x55,0x42,0xd2,0xd6,0xee,0x18,0x65,0x32, + 0xa6,0xc2,0x5c,0x15,0x56,0x23,0xa5,0x76,0x36,0x7f,0xd9,0xb1,0xdb,0x16,0xf3,0x42, + 0x38,0xcf,0xca,0xca,0xde,0xd8,0xfe,0x7f,0xa5,0x54,0x92,0x7b,0x29,0x6e,0x14,0x4b, + 0x28,0xd8,0x0f,0x38,0x46,0xe6,0xbe,0xc9,0xc1,0x9e,0x17,0x3d,0xdd,0x8c,0x18,0x8d, + 0xe4,0x52,0xac,0xa8,0xeb,0x1c,0xf9,0xce,0xf0,0xc3,0x23,0x9f,0x5a,0xbd,0xa0,0x68, + 0xee,0xfa,0x95,0x98,0x16,0xf0,0x5d,0xc8,0x24,0x5f,0xdc,0x4a,0x49,0x57,0x6e,0x83, + 0x38,0xeb,0xcf,0x38,0xad,0x2b,0x8d,0x5f,0x4d,0x52,0x56,0x14,0x1b,0xb2,0x7f,0x78, + 0xd1,0x13,0x8f,0xa6,0x45,0x3e,0x2d,0x72,0xcd,0x10,0x09,0x2e,0x09,0x0a,0x38,0x0b, + 0x19,0xe0,0xfa,0xf4,0xeb,0x50,0xe3,0x29,0x2b,0xb4,0x6c,0xe4,0xa2,0xed,0x13,0xac, + 0x5d,0x52,0x18,0x34,0x9d,0x6b,0x48,0xb6,0x92,0xde,0xd6,0x6b,0x87,0x5f,0x9a,0x24, + 0x08,0x87,0x18,0x07,0x90,0x38,0xe4,0x37,0x41,0xe9,0xd7,0xad,0x62,0xdf,0xe8,0x96, + 0xf6,0xda,0x24,0x2e,0x75,0x05,0x9e,0xf0,0xb3,0x0c,0x45,0xe6,0x3b,0x01,0xc7,0x04, + 0x6d,0xe3,0x3c,0x9c,0xe4,0xfe,0x15,0x4a,0x3f,0x13,0x59,0x5b,0xc7,0xfb,0xbd,0xc1, + 0x57,0x81,0x85,0xff,0x00,0x1a,0x43,0xe3,0x3b,0x55,0x3c,0x09,0x3f,0xef,0x91,0xfd, + 0x4d,0x43,0xa7,0xa6,0x80,0xa5,0xa9,0xbc,0x74,0xbb,0x49,0x6c,0xec,0x2f,0x16,0xfd, + 0xbe,0xd2,0x9b,0x14,0xc0,0x61,0x2a,0x46,0x48,0x52,0x07,0x7e,0x95,0x97,0x24,0x16, + 0xa2,0x4b,0x4b,0x56,0xbb,0x65,0x86,0xe6,0x55,0x6b,0x89,0x01,0x2b,0xf2,0xf3,0x95, + 0xce,0x3d,0xf3,0xf9,0x55,0x36,0xf1,0xcd,0xba,0xf4,0x2e,0x0f,0x6f,0xb9,0xd7,0xf3, + 0xaa,0x17,0xbe,0x25,0xb8,0x99,0x0a,0x22,0x7d,0x9e,0x33,0xf3,0x07,0x7c,0x16,0x3f, + 0x4c,0x1a,0x95,0x49,0xde,0xef,0x62,0x9c,0xd5,0xb4,0x3a,0xab,0xdb,0x2f,0x0d,0x5b, + 0x5b,0xec,0x8e,0x60,0xa8,0x32,0x49,0x69,0x98,0xe4,0xfe,0x03,0x9f,0xff,0x00,0x5d, + 0x60,0x69,0x9e,0x2a,0x5d,0x25,0xbc,0xcd,0x31,0x4c,0x57,0x00,0x90,0xf7,0x93,0x93, + 0xb7,0x19,0x38,0xc2,0x7f,0xfa,0xeb,0x91,0xbf,0xd5,0xe3,0x8d,0xc9,0x77,0x69,0x65, + 0xff,0x00,0x6c,0xe4,0xff,0x00,0xf5,0xa9,0x2d,0x75,0x6b,0x41,0xf3,0xdc,0x6f,0x96, + 0x4f,0x42,0x57,0x6a,0xfd,0x06,0x7f,0x5f,0xe5,0x4d,0x42,0x29,0x5b,0x71,0xf3,0x49, + 0xbb,0xec,0x75,0x09,0xa6,0xdc,0xf8,0xa6,0xfe,0x39,0xaf,0xe5,0x9e,0x54,0xb8,0x62, + 0x1a,0xee,0xeb,0x38,0x3c,0x12,0x76,0x22,0x8c,0x01,0xc7,0x60,0x6b,0x7a,0x3f,0x0b, + 0xf8,0x74,0x0f,0x27,0xc9,0x4f,0x31,0x5b,0x61,0x92,0x77,0x71,0xf8,0xfc,0xbc,0x63, + 0xf0,0xae,0x10,0x78,0x8e,0xd5,0x17,0x0a,0x84,0xff,0x00,0xbd,0x20,0xa8,0xc7,0x89, + 0x21,0xc0,0x07,0x70,0xf5,0xc3,0x8a,0x39,0x5e,0xe8,0x77,0xb7,0x43,0xa8,0xd6,0x2c, + 0x2c,0x74,0x0b,0xd1,0xf6,0x18,0xd2,0xe2,0x43,0x10,0x21,0x50,0x6f,0x55,0x25,0x88, + 0x23,0x92,0x79,0xc0,0xcf,0xe3,0x4b,0xa1,0x68,0x60,0xeb,0xf6,0x53,0xa8,0x75,0x91, + 0x24,0x59,0x24,0x6c,0xe3,0x81,0x82,0x47,0x4c,0x70,0x05,0x73,0x51,0x78,0xa6,0x08, + 0x07,0xc8,0xad,0xc9,0xe4,0x33,0x03,0xfd,0x2a,0xed,0xb7,0xc4,0x21,0x6b,0xbc,0xa4, + 0x08,0x59,0x94,0xa9,0x25,0xbb,0x1e,0x0f,0x6f,0x7a,0xce,0xa4,0x65,0x28,0x4a,0x29, + 0x6a,0xc7,0x09,0x28,0xc9,0x49,0xec,0x8d,0x3b,0x3b,0x37,0xf3,0xe4,0xba,0x49,0x1d, + 0x1e,0x62,0xc7,0xcc,0x69,0x39,0x00,0x93,0x91,0x80,0x39,0xcf,0xbd,0x6f,0xeb,0xda, + 0xcc,0x77,0xf6,0x12,0xdb,0xf9,0x97,0x52,0x06,0x51,0xf7,0x9f,0x23,0xae,0x7d,0x2b, + 0x87,0x5f,0x1d,0x08,0xd4,0x08,0xed,0xe2,0xe3,0xb6,0xe6,0xa3,0xfe,0x16,0x03,0xff, + 0x00,0xcf,0xbc,0x23,0xdb,0x0d,0xfe,0x34,0x9d,0x36,0xda,0xd3,0x61,0xdc,0xdf,0xd2, + 0x35,0x69,0xa0,0x67,0x53,0x98,0xbe,0x5c,0x02,0xbc,0x67,0xeb,0x5b,0x09,0x71,0x15, + 0xd4,0x58,0x9a,0x56,0x63,0x8c,0xe0,0x9e,0xf5,0xc3,0x1f,0x1e,0x49,0xb7,0x02,0xde, + 0x2f,0xfb,0xe4,0xff,0x00,0x8d,0x43,0xff,0x00,0x09,0xcc,0x84,0xf1,0x0a,0x03,0xec, + 0xbf,0xfd,0x7a,0xaf,0x67,0x77,0x72,0x53,0x3b,0x9b,0x0b,0xfb,0xad,0x13,0x52,0x82, + 0xf3,0x4e,0xb8,0x92,0xde,0x68,0xce,0x63,0x95,0x1c,0x87,0x53,0xf5,0x15,0xf5,0x37, + 0xc1,0xdf,0x8a,0x8f,0xf1,0x07,0x48,0x36,0xd7,0x8c,0x91,0xeb,0x96,0xa0,0x19,0x54, + 0x0c,0x09,0x97,0xb3,0xa8,0xf5,0xf5,0x03,0xfa,0xd7,0xc3,0xdf,0xf0,0x99,0xcc,0xb9, + 0x38,0xeb,0xec,0x2a,0xff,0x00,0x87,0xbe,0x27,0xea,0xfe,0x17,0xd5,0x61,0xd4,0xb4, + 0xcb,0x96,0xb5,0xbc,0x8b,0x21,0x5c,0x00,0x47,0xd0,0x82,0x30,0x7f,0x1a,0xe9,0xa7, + 0x27,0x13,0x9e,0xa5,0x2e,0x7d,0x4f,0xd1,0x1d,0x7e,0x4d,0x71,0x74,0xf8,0xe4,0xd2, + 0x9a,0x36,0xb8,0x4c,0xe6,0x17,0x18,0xf3,0x06,0x7b,0x13,0xd0,0xd7,0x87,0xfc,0x4f, + 0xf8,0x49,0xe2,0xcf,0x19,0xdd,0x2f,0x88,0xed,0x04,0x3a,0x57,0x8a,0x2c,0xa3,0xdc, + 0x92,0x43,0x37,0x97,0x24,0xdb,0x7a,0x46,0x4a,0xf1,0x9e,0xb8,0x6c,0x8c,0x74,0x39, + 0x07,0x8f,0x12,0x9b,0xf6,0xb4,0xf8,0x8f,0x38,0x3f,0xf1,0x3c,0x54,0xf7,0x4b,0x48, + 0x07,0xfe,0xc9,0x59,0x3a,0x97,0xed,0x1b,0xe3,0xed,0x51,0x0a,0x4d,0xe2,0x2b,0x9d, + 0xa7,0xfe,0x79,0x85,0x43,0xf9,0xa8,0x15,0xac,0xaa,0x27,0xa3,0x30,0x8d,0x19,0x47, + 0x54,0x7b,0x3f,0x80,0x7f,0x68,0x4b,0x3f,0x16,0x88,0x3c,0x33,0xf1,0x25,0xae,0x34, + 0xfb,0xeb,0x59,0x3e,0xce,0x9a,0xc2,0x13,0x1b,0xc2,0xd9,0xc6,0xcb,0x84,0x1d,0xb3, + 0xfc,0x58,0xe3,0xd0,0x72,0x4f,0xd2,0xda,0x57,0xc2,0xb8,0x20,0xd2,0x73,0x6f,0x3c, + 0x4f,0x64,0x32,0xf0,0xdd,0x3d,0xd8,0x90,0x48,0x0e,0x0e,0x43,0x0c,0xe4,0x1c,0xe4, + 0x63,0x8e,0x4d,0x7e,0x5c,0xeb,0x1a,0xde,0xa5,0xa8,0xea,0x92,0x6a,0x73,0xdc,0xc9, + 0x77,0x74,0xff,0x00,0xeb,0x64,0x99,0xd9,0xda,0x41,0xdb,0x24,0x93,0x9c,0x0a,0xed, + 0x3c,0x2d,0xf1,0x77,0xc4,0x76,0x3a,0x3a,0xe9,0xfa,0x67,0x88,0x75,0x2b,0x2b,0x44, + 0x3b,0x85,0xac,0x37,0x2c,0xaa,0x8d,0xea,0x06,0x7a,0x57,0x33,0x6e,0x32,0xe6,0x8b, + 0xd4,0xe9,0x95,0x25,0x38,0xf2,0xcb,0x6e,0xc7,0xe8,0xcc,0x1f,0x0b,0xee,0x05,0xda, + 0xcc,0x97,0x71,0xc6,0xca,0x80,0xac,0x82,0xeb,0x68,0xdc,0x71,0xc8,0x18,0xf4,0xf5, + 0x1c,0xf1,0x5e,0x71,0xfb,0x42,0x7c,0x38,0xb4,0x93,0xfe,0x2a,0x3b,0x74,0x86,0x46, + 0x5f,0x2e,0x3d,0x47,0x69,0x04,0xc8,0x8a,0xca,0x44,0x9c,0x63,0x9c,0x0d,0x84,0x8f, + 0x51,0xd0,0x0a,0xf8,0xd2,0xe3,0xe2,0xaf,0x8c,0x5d,0x88,0x97,0xc4,0x7a,0x93,0xe0, + 0x90,0x33,0x76,0xe7,0x23,0xdb,0x9e,0x95,0x9f,0x71,0xe3,0x9d,0x72,0xfc,0x30,0xb8, + 0xd5,0x6f,0x27,0xdc,0x30,0xc1,0xe6,0x62,0x08,0xf7,0xe6,0xa3,0x91,0xde,0xf7,0x14, + 0x61,0x6b,0x79,0x1e,0xcd,0xe1,0x3d,0x0a,0x5b,0x7f,0x88,0x36,0x13,0xd8,0x09,0x1c, + 0xa4,0xc7,0x79,0x50,0x41,0x11,0xef,0xc1,0xcf,0xb6,0x0e,0x0f,0xd7,0xde,0xb1,0x3c, + 0x49,0x2c,0x52,0x78,0x73,0x46,0x43,0xb2,0x47,0x8f,0x68,0x97,0x76,0x48,0x51,0xfb, + 0xce,0xa0,0x76,0x3f,0x28,0xcd,0x79,0xa6,0x9f,0xac,0xdd,0x89,0xc3,0x8b,0xb9,0x91, + 0xdb,0x20,0x91,0x23,0x02,0x47,0xbf,0x35,0xdc,0x78,0x48,0x4d,0x78,0xda,0x8c,0x06, + 0x79,0x9a,0x33,0x69,0x33,0x6c,0x32,0x31,0x07,0x11,0x31,0x03,0x19,0xf6,0xac,0x9b, + 0xe4,0xd4,0xe8,0xb7,0x36,0x87,0x2f,0xf6,0x71,0x6b,0xaa,0x45,0x7a,0x97,0x08,0xaa, + 0xae,0x87,0x62,0xa1,0xc1,0x23,0xae,0x3e,0xb9,0xfd,0x6b,0xef,0x3f,0xd8,0xda,0xee, + 0x2b,0xff,0x00,0x8a,0x3e,0x06,0x57,0x52,0x52,0x0d,0x22,0x73,0x8f,0x4c,0x86,0x6f, + 0xe7,0x35,0x7c,0x05,0x7e,0xe2,0x06,0x28,0x24,0x2a,0x33,0xc8,0x07,0x03,0xf9,0xd7, + 0xe8,0x07,0xec,0x2b,0xe0,0xbd,0x44,0x6a,0xfa,0x47,0x89,0xd9,0xa3,0x6d,0x36,0xcb, + 0x4c,0x58,0x64,0x79,0x1f,0x0d,0xe6,0x48,0xd6,0xf8,0x00,0x1f,0x6c,0x8f,0xca,0xb8, + 0x73,0x09,0x2f,0x63,0x29,0x49,0xff,0x00,0xc3,0xb3,0x6c,0x2c,0x39,0x65,0xcb,0x05, + 0xb9,0xfa,0x51,0xa9,0x5e,0x8b,0x3d,0x32,0xe6,0x7f,0xf9,0xe5,0x13,0x39,0xc7,0xb0, + 0x27,0xfa,0x57,0xca,0xdf,0xb0,0x7f,0x8b,0x8c,0xbe,0x13,0xf1,0xfe,0xab,0x35,0xb4, + 0xd7,0x31,0x5c,0x78,0x96,0x60,0x25,0x86,0x2c,0x9f,0x96,0x28,0xfe,0xf7,0xfd,0xf5, + 0xfc,0xeb,0xda,0x3c,0x7b,0xe2,0xb2,0xbe,0x0b,0xf1,0x09,0x86,0x41,0x01,0x16,0x37, + 0x18,0xdf,0xd7,0x3e,0x5b,0x01,0x8f,0xc7,0x15,0xe2,0x1f,0xb0,0x83,0x27,0x85,0xbe, + 0x0c,0x6a,0x50,0xac,0x8b,0x2c,0x73,0xf8,0x82,0xf2,0x51,0x33,0xae,0xd2,0xc3,0xe4, + 0x5c,0xf7,0x1f,0xc1,0xeb,0x5e,0x1d,0x2c,0x6b,0x85,0x19,0x55,0xf3,0x4b,0xf3,0x36, + 0x58,0x79,0xdf,0x95,0xa3,0xea,0x3b,0x2d,0x66,0x4d,0x46,0xf2,0xee,0x47,0xb7,0xfb, + 0x3d,0xbc,0x6a,0x0c,0x7b,0xf8,0x66,0x04,0x64,0x93,0xf9,0x57,0xcd,0x7f,0xf0,0x50, + 0x9d,0x49,0x13,0xf6,0x6a,0xd6,0x80,0x98,0xaf,0x99,0x77,0x69,0x19,0x55,0x38,0xdd, + 0x99,0x41,0x39,0x03,0xe8,0x3a,0xfa,0x7b,0x57,0xbf,0x5c,0x78,0x94,0x14,0x72,0xbb, + 0x4a,0x96,0xdb,0x8c,0x73,0xce,0x6b,0xc2,0xff,0x00,0x68,0x69,0x34,0x8f,0x11,0x7c, + 0x3e,0xd7,0x34,0xdd,0x7a,0x18,0xef,0x6c,0x4a,0xac,0xd1,0xc2,0xcc,0xeb,0xf3,0xa1, + 0x05,0x0e,0x54,0x82,0x48,0x61,0xd3,0xb9,0xec,0x6b,0xcf,0xfa,0xc3,0xaf,0x88,0x8c, + 0xda,0xea,0x8e,0x98,0x61,0xa5,0x66,0xde,0x87,0xc2,0x1f,0xb2,0x4e,0xb3,0xa6,0x68, + 0x5a,0x37,0x8b,0xa7,0x92,0xd6,0xda,0x7b,0xcf,0xb5,0x5a,0x46,0x6e,0xef,0xa1,0x67, + 0x82,0x18,0x7f,0x79,0xbb,0x73,0xf4,0x51,0x9d,0xd9,0xe8,0x48,0xfc,0x31,0x91,0x77, + 0xe0,0x9b,0x3d,0x67,0xe2,0xc7,0x8b,0x0a,0xa4,0x11,0x38,0x11,0x5d,0xdb,0x4f,0x1c, + 0x26,0x38,0xf9,0x54,0x60,0xc0,0x77,0x56,0xc7,0x27,0xf8,0xb2,0x4e,0x4e,0x73,0x5d, + 0xd7,0xc3,0xcb,0xfd,0x03,0xe1,0xb7,0x84,0xf5,0x88,0xae,0xa6,0x10,0x47,0xab,0xdd, + 0xcd,0x73,0x35,0xba,0xa3,0x0f,0x2a,0x3f,0xb9,0x1a,0xbb,0x63,0x6a,0x0e,0x0f,0x07, + 0x1f,0x7b,0x8a,0xc7,0xf8,0x6d,0x73,0xe0,0x43,0xe2,0x8b,0xed,0x37,0x4c,0x4d,0x4a, + 0xfb,0xfb,0x46,0x03,0x93,0x75,0x29,0x8a,0x38,0x23,0x0c,0x4b,0x6c,0xc0,0xdc,0x40, + 0x1f,0x28,0xe4,0x0f,0x9f,0xaf,0x19,0x1e,0x86,0x17,0x32,0x8d,0x3c,0x7d,0x57,0x38, + 0xb7,0x15,0xa6,0x8b,0xb1,0xf6,0x38,0xde,0x1d,0x9a,0xc9,0x68,0xd6,0x8c,0x92,0x93, + 0xd5,0xdd,0xdb,0x47,0xaa,0xb7,0x9d,0xba,0x75,0x3b,0xff,0x00,0x0e,0xcd,0x14,0x73, + 0x04,0x87,0x71,0x4d,0x91,0x2a,0x6f,0x6e,0x70,0xb1,0x46,0xa7,0xf0,0xc8,0x38,0xaa, + 0x9f,0x10,0xe0,0x07,0xc4,0x40,0x79,0x6f,0xc5,0xbc,0x3d,0x06,0x3a,0xa0,0x3f,0xd6, + 0x9a,0xd1,0x43,0xa0,0x78,0xc3,0x53,0xd2,0xed,0x65,0x92,0x5b,0x4b,0x2b,0xc9,0x2d, + 0xad,0xde,0x66,0xcb,0xed,0x53,0xea,0x00,0xcd,0x7d,0x4b,0xfb,0x34,0x7c,0x3e,0xd0, + 0x7e,0x27,0x78,0x3b,0x59,0xd4,0xf5,0xcd,0x32,0xd2,0xfe,0xea,0xdf,0x57,0x92,0xc6, + 0x39,0x6e,0x20,0x59,0x18,0x47,0x1c,0x10,0x85,0x19,0x3d,0xb9,0x3f,0x9d,0x74,0x35, + 0xcd,0x5e,0x72,0x87,0x5f,0xf3,0x3e,0x26,0x5e,0xed,0x28,0xa9,0x1f,0x87,0xed,0x7f, + 0x3b,0x0f,0x9a,0x57,0x3f,0x52,0x6a,0x16,0xb8,0x90,0xb7,0xdf,0x38,0xfa,0xd3,0x58, + 0xfb,0xf4,0xa6,0xe7,0x3f,0x5a,0xfb,0x63,0xc4,0xd0,0x79,0x99,0xb1,0xd4,0xfe,0x26, + 0x90,0xc8,0x48,0xe4,0x91,0xed,0x51,0xb1,0xc0,0xa6,0x17,0xc0,0x20,0x73,0x59,0xe8, + 0xca,0xd4,0x9c,0xc8,0x13,0x06,0x49,0x96,0x3c,0xf2,0x03,0x12,0x4f,0xe4,0x01,0xa9, + 0x2d,0xec,0xee,0xae,0xa4,0xc2,0x8d,0xb0,0xf7,0x94,0xf2,0x3f,0x0a,0xab,0xa7,0xb8, + 0xb7,0xbc,0xf3,0x65,0x51,0x22,0x9c,0xe1,0x9b,0xa6,0x6b,0x57,0x50,0xf1,0x09,0x7b, + 0x7f,0x2a,0x30,0x33,0x9e,0xbe,0x95,0x12,0x9f,0x44,0x68,0xa3,0xdc,0xb7,0x69,0xf6, + 0x3d,0x3a,0x1f,0x33,0x05,0xa6,0x52,0x43,0x49,0x2f,0x24,0x11,0xe8,0x3a,0x0a,0xa5, + 0x7b,0xae,0x49,0x70,0xc4,0x45,0x90,0x0f,0xf1,0xb7,0x53,0x59,0x0d,0x23,0x4c,0xdb, + 0x98,0xe4,0xfa,0xd4,0xb1,0xae,0xf0,0x2a,0x77,0xdc,0x36,0xd8,0x72,0x92,0x49,0x66, + 0x39,0x6e,0xb9,0x34,0xe0,0xc7,0xa7,0x5a,0x57,0x4d,0x84,0xf2,0x38,0xc5,0x37,0x39, + 0xcf,0x23,0x14,0x5d,0x58,0x4a,0xf7,0x1f,0x82,0x4f,0x00,0xf1,0xd7,0x34,0x67,0x07, + 0xa5,0x22,0x6f,0x91,0xb0,0x39,0xfa,0x55,0xc8,0xb4,0xbb,0xe9,0x80,0xf2,0xac,0xee, + 0x24,0xcf,0xf7,0x22,0x66,0xfe,0x42,0xa1,0xd4,0x84,0x77,0x66,0xca,0x13,0x96,0xc8, + 0xaa,0x0e,0x7a,0x0f,0xd2,0x80,0x6b,0x5a,0x2f,0x08,0x6b,0xd7,0x07,0xf7,0x5a,0x2e, + 0xa2,0xde,0xeb,0x6a,0xe7,0xfa,0x55,0xb8,0x7e,0x1c,0xf8,0xa6,0x62,0x36,0xe8,0x17, + 0xd9,0x3c,0x8d,0xd0,0x95,0xfe,0x78,0xae,0x69,0x62,0xf0,0xf0,0xf8,0xaa,0x25,0xf3, + 0x47,0x44,0x70,0x98,0x89,0x7c,0x34,0xdb,0xf9,0x33,0x05,0x5b,0x14,0x33,0x31,0xe7, + 0xf0,0xae,0xba,0x0f,0x84,0x9e,0x2f,0x9b,0x1f,0xf1,0x24,0x95,0x7d,0x9e,0x48,0xd7, + 0xf9,0xb5,0x5f,0x4f,0x82,0x3e,0x2d,0x93,0x6e,0xeb,0x08,0xa1,0x2d,0xd3,0x7d,0xcc, + 0x7f,0xd0,0x9a,0xe6,0x96,0x67,0x82,0x8e,0xf5,0xa3,0xf7,0xa3,0x68,0xe5,0xb8,0xc9, + 0x6d,0x46,0x5f,0x73,0x38,0x3d,0xc4,0x75,0x34,0x06,0xf6,0xc7,0x6e,0x2b,0xd0,0x6d, + 0x7e,0x07,0xeb,0xf7,0x77,0x32,0x5b,0x2d,0xd6,0x97,0xf6,0x84,0xe5,0xe3,0xfb,0x56, + 0xe7,0x5f,0xa8,0x55,0x38,0xad,0x1b,0x5f,0xd9,0xff,0x00,0x59,0x9a,0xe6,0x4b,0x7f, + 0xed,0x2d,0x3b,0xcf,0x40,0x19,0xe2,0x47,0x76,0x65,0x07,0xa1,0x23,0x6f,0x19,0xc5, + 0x65,0x3c,0xe3,0x01,0x0d,0xea,0xa3,0x78,0x64,0xf8,0xe9,0xea,0xa9,0x33,0xcc,0x33, + 0x9e,0x45,0x38,0x73,0xce,0x33,0x5e,0xbd,0x6b,0xfb,0x39,0x6a,0x12,0x96,0x07,0x59, + 0x80,0x32,0x9c,0x30,0x5b,0x76,0x38,0x3f,0x89,0x15,0xa5,0x0f,0xec,0xd1,0x36,0x33, + 0x26,0xb4,0xc4,0x7f,0xb1,0x69,0xff,0x00,0xd9,0xd7,0x24,0xf8,0x8b,0x2c,0xa7,0xa3, + 0xab,0xf8,0x3f,0xf2,0x3a,0xa1,0xc3,0xf9,0x8c,0xf6,0xa7,0xf8,0xaf,0xf3,0x3c,0x3d, + 0x47,0xb6,0x29,0xea,0x3d,0xbf,0x3a,0xf7,0xc8,0x3f,0x66,0x8b,0x61,0xfe,0xb7,0x53, + 0xbc,0x6f,0xf7,0x63,0x55,0xff,0x00,0x1a,0xb3,0xff,0x00,0x0c,0xe9,0xa4,0xc1,0x16, + 0xe3,0x36,0xa1,0x70,0x7f,0xba,0x65,0x45,0xcf,0xfe,0x39,0x5c,0xcf,0x8a,0x72,0xcb, + 0xda,0x33,0x6f,0xe5,0xfe,0x67,0x42,0xe1,0xac,0xc6,0xd7,0x71,0x4b,0xe7,0xfe,0x47, + 0xcf,0x2e,0x37,0x1e,0x98,0xaa,0x92,0x5b,0xbc,0x32,0x2c,0xd6,0xc4,0xc5,0x30,0x39, + 0xe9,0xc1,0xaf,0xa8,0x20,0xfd,0x9f,0x3c,0x3c,0xab,0x96,0x82,0xe2,0x43,0xe8,0xf7, + 0x07,0xfa,0x62,0xad,0x47,0xf0,0x23,0xc3,0xa8,0x46,0x34,0xd2,0x7f,0xde,0x96,0x43, + 0xff,0x00,0xb3,0x57,0x2c,0xb8,0xb7,0x00,0xb4,0x4a,0x4f,0xe4,0xbf,0xcc,0xe9,0x8f, + 0x0a,0xe3,0x9e,0xf2,0x8f,0xde,0xff,0x00,0xc8,0xf9,0xca,0xd2,0xf9,0x6e,0xac,0xe3, + 0x4b,0x98,0xf6,0xc8,0x0e,0x4b,0x53,0x14,0x91,0xdf,0x03,0x3d,0x6b,0xea,0x2b,0x4f, + 0x83,0x1e,0x1e,0xb7,0x23,0x1a,0x2c,0x0d,0x8f,0xef,0xc7,0xbb,0xf9,0xd6,0xdd,0x9f, + 0xc3,0x1d,0x2a,0xdd,0x71,0x16,0x91,0x69,0x1f,0xa1,0x5b,0x74,0x1f,0xd2,0xb9,0x1f, + 0x17,0xe1,0xa3,0xf0,0xd3,0x6f,0xfa,0xf9,0x9d,0x31,0xe1,0x3a,0xef,0xe3,0xa8,0x97, + 0xf5,0xf2,0x3e,0x52,0xb0,0x8e,0x59,0x25,0x02,0x18,0xde,0x63,0x9e,0x91,0xa9,0x6f, + 0xe5,0x5f,0x49,0x7e,0xcb,0x9f,0x0e,0x35,0xff,0x00,0x14,0xfc,0x41,0xb0,0x96,0x3b, + 0x19,0x6c,0x60,0x84,0x17,0x79,0xef,0x63,0x31,0x2e,0x02,0x9e,0x80,0x82,0x4e,0x7e, + 0x84,0x7a,0xd7,0xa2,0x7c,0x36,0xf0,0x3a,0xa7,0x88,0x35,0xdb,0x68,0xad,0xc2,0x39, + 0x8e,0xde,0xe1,0x50,0x0c,0x6e,0x4f,0x9d,0x72,0x3e,0x85,0x7f,0x51,0x5e,0xcf,0xe0, + 0x83,0x37,0xc3,0xcd,0x42,0x6d,0x62,0xee,0xc6,0x79,0x2c,0xa2,0x42,0xb2,0x18,0x00, + 0x2c,0x33,0xc0,0xc6,0x6b,0xea,0x29,0xe2,0x5e,0x33,0x0d,0x1a,0xf0,0x5a,0x49,0x5c, + 0xf9,0x6a,0xd8,0x75,0x84,0xc4,0xca,0x84,0x9d,0xf9,0x59,0xda,0xaf,0xc1,0x6b,0xd9, + 0x18,0x85,0x8e,0xc2,0xf4,0x75,0xf9,0x4e,0xd2,0x7f,0x32,0x95,0x5b,0xe0,0x85,0x86, + 0xa9,0x73,0xe0,0x4d,0x60,0x59,0x58,0x3b,0x43,0x75,0xac,0xa3,0xac,0x91,0x0c,0x9c, + 0x2d,0xcc,0x25,0x80,0x00,0xf0,0x02,0xa9,0x39,0xf6,0xab,0xe3,0xe3,0xcf,0x86,0xe6, + 0xb3,0x9d,0xb7,0xdf,0x41,0x2e,0xc6,0x2a,0x24,0x84,0x75,0xc7,0x03,0x22,0xb2,0x3e, + 0x08,0x7c,0x42,0xf0,0xff,0x00,0x87,0x7e,0x1f,0x69,0xb6,0x57,0x97,0xd2,0x45,0x79, + 0xba,0x49,0x25,0x55,0x89,0x8e,0x09,0x91,0xb1,0xce,0x39,0xe3,0x15,0xe7,0x4e,0x9b, + 0x74,0x9a,0x92,0xea,0xbf,0x53,0xa2,0x0e,0x31,0x9a,0xe5,0x7d,0x19,0xde,0xfc,0x7d, + 0xd6,0x75,0x3f,0x0c,0xfc,0x15,0xf1,0xa5,0xe4,0xae,0xde,0x7a,0xd8,0x38,0x40,0xf9, + 0xe3,0x38,0x03,0xae,0x33,0xd4,0xd6,0x17,0xec,0x85,0x1b,0xc5,0xfb,0x3f,0x78,0x70, + 0xcb,0xb0,0x19,0xda,0xea,0x67,0x91,0x98,0x0c,0xb3,0x5c,0x49,0xff,0x00,0xd6,0xae, + 0x6f,0xf6,0x9a,0xf8,0xab,0xa3,0x6a,0x3f,0x01,0x3c,0x61,0x65,0x63,0xa8,0xcd,0x2d, + 0xc4,0xd6,0xab,0x1a,0x46,0x51,0xd4,0x1c,0xca,0x99,0xed,0xe9,0x56,0x3f,0x65,0xef, + 0x88,0x3a,0x55,0x87,0xc0,0x4f,0x07,0x59,0xdd,0x99,0xa4,0x9e,0x2b,0x77,0x66,0x1f, + 0x66,0x2e,0x01,0x32,0xb9,0xc8,0xf9,0x4f,0xad,0x73,0x4b,0x0f,0xfe,0xcb,0x6f,0xef, + 0x7e,0x87,0x47,0xb5,0x4a,0xbf,0xcb,0xf5,0x3d,0xe2,0xe2,0xec,0x5b,0x3e,0x58,0x06, + 0x8d,0x01,0x6d,0xd1,0xb7,0x4c,0xfd,0x39,0xcf,0x5f,0xce,0xbe,0x39,0xfd,0xb5,0xbe, + 0x27,0x78,0xaf,0xc2,0x96,0xd6,0x3a,0x7e,0x8f,0xa1,0xdc,0x38,0xbd,0xc4,0x91,0xea, + 0x4d,0x11,0x74,0x51,0x82,0x30,0xbc,0x11,0x91,0x82,0x4e,0xe2,0x07,0x4e,0x08,0xaf, + 0xa8,0xe4,0xf1,0xce,0x93,0xa9,0x03,0x1e,0xc9,0xdd,0x3a,0xff,0x00,0xc7,0x8c,0x83, + 0x1f,0x8a,0xad,0x79,0xdf,0xc5,0x1f,0x87,0x1a,0x17,0xc4,0x8b,0xdb,0x39,0xf5,0x0b, + 0xe7,0x8c,0x5a,0xc0,0x20,0x84,0x08,0x59,0x19,0x54,0x63,0x03,0x78,0x01,0xc8,0x18, + 0xe8,0xc4,0x8e,0xbc,0x73,0x51,0x85,0xa7,0x1a,0x35,0x39,0xe6,0xae,0x55,0x79,0xb9, + 0xc3,0x96,0x27,0xc9,0xfe,0x34,0xf1,0xcc,0x09,0xf0,0x8b,0x46,0x4d,0x2a,0xc6,0x79, + 0xef,0xbc,0x94,0xb7,0x92,0x5b,0x86,0x5c,0x24,0x81,0x76,0xbc,0xa0,0x83,0xc9,0xdc, + 0x32,0x0e,0x3f,0x8b,0x3d,0xab,0xce,0xb4,0x8f,0x11,0xdd,0xf8,0x03,0xc5,0x7e,0x16, + 0x11,0x79,0x81,0x6f,0x88,0xb7,0xba,0xf2,0x54,0xe0,0x29,0x21,0x54,0x82,0x7b,0x82, + 0x58,0xe7,0xd3,0xd2,0xbd,0x13,0xe2,0x0d,0xbd,0x94,0x1a,0xb7,0x88,0xbc,0x2d,0xa4, + 0x42,0x9e,0x56,0x8f,0x2a,0xb7,0x97,0x86,0x0b,0x30,0x63,0xcb,0x2a,0x86,0x18,0xe4, + 0x77,0xe0,0x64,0x73,0xcd,0x7b,0xa7,0x84,0x74,0xcf,0x85,0x56,0x7a,0x0d,0xb5,0xd6, + 0xb1,0xa4,0x59,0x8b,0xf7,0x96,0x2b,0x84,0xb6,0xbf,0x0e,0x5e,0x12,0x01,0x05,0x18, + 0x23,0x49,0xb9,0x7a,0x1c,0x06,0xdb,0xc0,0x24,0x1a,0xe5,0xca,0xd2,0x8d,0x5a,0xfc, + 0xd1,0xdd,0xbf,0xb9,0xec,0x7d,0xe7,0x16,0x4d,0xbc,0x06,0x02,0x34,0xe7,0x74,0xe0, + 0x9b,0xd5,0x3b,0x49,0x59,0x3f,0xce,0xc7,0x8a,0xeb,0x9a,0x93,0x8f,0x1d,0xf8,0x86, + 0x16,0x6c,0x3a,0x6a,0x97,0x3f,0x30,0x6f,0xfa,0x6a,0x47,0xf4,0xaf,0xb9,0x7f,0x61, + 0x82,0xfa,0x77,0xc2,0x9d,0x76,0x3b,0xa6,0x02,0x56,0xf1,0x05,0xcc,0x83,0x3d,0xd5, + 0xa1,0x80,0xa9,0xfc,0x41,0x06,0xbe,0x6c,0xf1,0x97,0x86,0xbc,0x17,0xe2,0xdd,0x55, + 0x6e,0x6d,0xae,0xb4,0x4d,0x2a,0x28,0xc1,0x0b,0x1d,0x8c,0x17,0x68,0xcf,0x93,0x92, + 0xd2,0x10,0x41,0x76,0x27,0xb9,0x3f,0x40,0x2b,0xd6,0xbe,0x16,0xf8,0xba,0xdf,0xc2, + 0x5e,0x1d,0x96,0xcf,0x4f,0xbf,0x86,0xe2,0x06,0x9f,0x7e,0xeb,0x74,0x91,0x14,0x11, + 0x1a,0x20,0x18,0x76,0x2d,0x9c,0x22,0xf2,0x4f,0x35,0xee,0x46,0x12,0xe6,0x6e,0x27, + 0xe6,0x53,0xe5,0x94,0x6c,0xcf,0x8b,0x2e,0x3f,0x66,0x6f,0x05,0x31,0x22,0x3d,0x32, + 0xf0,0x67,0xfe,0x9a,0x8f,0xe8,0xa2,0xb3,0xee,0xff,0x00,0x65,0xff,0x00,0x0b,0x88, + 0xa4,0x31,0x59,0x5d,0xa1,0x00,0xe0,0x97,0x26,0xbf,0x41,0xae,0xbc,0x05,0xa3,0x42, + 0x3f,0xd5,0xa9,0x3e,0xa0,0x0c,0x56,0x35,0xff,0x00,0x84,0xb4,0xd3,0x1c,0x91,0x2d, + 0xba,0x61,0x94,0x8c,0xd7,0xd3,0xba,0x33,0x6b,0x73,0xc2,0x55,0xe3,0xd8,0xfc,0xc7, + 0xd1,0x7e,0x03,0x68,0x1a,0xce,0x99,0x05,0xec,0x8f,0xa8,0xc6,0xf3,0x02,0xc6,0x38, + 0xa6,0x5d,0x8b,0xc9,0xe9,0x95,0x27,0xf5,0xad,0x01,0xfb,0x3c,0xf8,0x79,0x46,0x41, + 0xd4,0x58,0xfb,0xce,0xbf,0xd1,0x6b,0xdb,0x3c,0x19,0xa2,0xa5,0xbe,0x91,0x71,0x61, + 0x2a,0x0f,0xb4,0x69,0x97,0x97,0x16,0x52,0x92,0x39,0xdc,0x92,0xb0,0xfe,0x58,0xad, + 0x96,0xd3,0x23,0x8d,0x3e,0xe0,0xfc,0x05,0x7e,0x25,0x8e,0xcd,0xf3,0x0a,0x58,0x9a, + 0xb4,0xfd,0xb3,0x49,0x49,0xaf,0xc4,0xfd,0xbb,0x05,0x95,0x60,0x2a,0xe1,0xa9,0xd4, + 0xf6,0x49,0xb7,0x14,0xff,0x00,0x03,0xe7,0x63,0xfb,0x3f,0x68,0x0a,0x46,0xd8,0xae, + 0xdb,0xd4,0x3c,0xf9,0xfe,0x95,0x6e,0xdf,0xe0,0x56,0x85,0x1e,0x07,0xf6,0x6b,0x48, + 0x47,0x77,0x95,0xff,0x00,0xa1,0xaf,0x75,0x6b,0x05,0x63,0xc2,0xe0,0x7a,0x11,0x8a, + 0x16,0xc3,0x20,0x8c,0x7e,0x95,0xc7,0xfd,0xaf,0x8d,0x92,0xd6,0xb3,0xfb,0xce,0xcf, + 0xec,0xac,0x14,0x5d,0xd5,0x18,0xfd,0xc8,0xf1,0xeb,0x6f,0x82,0xbe,0x1f,0x5d,0xbf, + 0xf1,0x22,0x80,0x9e,0xe5,0xcb,0x1f,0xe6,0x6b,0x5a,0xdb,0xe0,0xe6,0x80,0xa4,0x11, + 0xa0,0x69,0xe3,0x1f,0xde,0x85,0x5b,0xf9,0xd7,0xa8,0x45,0xa6,0xef,0x19,0x18,0xfc, + 0x6a,0xd4,0x56,0xaa,0x01,0x0d,0x80,0x6b,0x9a,0x79,0x8e,0x26,0x5b,0xd5,0x97,0xde, + 0xce,0x98,0x60,0x70,0xd0,0x5a,0x52,0x8f,0xdc,0x8f,0x37,0x5f,0x85,0xda,0x5c,0x00, + 0x1b,0x7d,0x17,0x4c,0x46,0xce,0x39,0xb4,0x8f,0xfc,0x2b,0x66,0xcf,0xc0,0xf6,0x50, + 0x20,0xdb,0x63,0x6d,0x19,0xff,0x00,0x62,0x14,0x1f,0xd2,0xbb,0x25,0x89,0x7d,0x45, + 0x48,0x23,0x41,0xc9,0xc6,0x3e,0xb5,0xc9,0x53,0x15,0x52,0x4a,0xce,0x4c,0xe9,0x8e, + 0x1e,0x9c,0x5d,0xe3,0x14,0x73,0x29,0xe1,0x68,0x97,0xee,0xa0,0x5f,0x61,0x81,0xfd, + 0x2a,0x75,0xf0,0xe2,0x8e,0x0b,0x71,0xe9,0xb8,0xd7,0x41,0xba,0x25,0x03,0x25,0x47, + 0xbe,0x69,0x44,0xd0,0x77,0x2b,0x5c,0x6e,0xaa,0x7b,0xb3,0x65,0x14,0xb6,0x31,0x57, + 0xc3,0x70,0x63,0xe6,0x19,0xe3,0x8c,0x93,0x4c,0xb7,0xf0,0xd4,0x50,0x82,0xb9,0xdc, + 0x01,0xfe,0x2e,0x6b,0x73,0xed,0x70,0xf6,0x61,0x81,0xfe,0xcf,0xf8,0xd2,0x7d,0xb6, + 0x15,0xe8,0x19,0xbb,0xfc,0xa0,0x1a,0xcf,0xda,0xa4,0x9a,0xbe,0x8f,0xcc,0x2c,0x9b, + 0xbf,0x53,0xc7,0x75,0xcf,0x06,0x3c,0xbe,0x2a,0xd6,0x6e,0x6e,0xbc,0x3b,0xa8,0x6a, + 0xf6,0xaa,0xd1,0xbc,0x4f,0x0d,0xc1,0x85,0x15,0x04,0x6b,0x9d,0xab,0x91,0xbc,0xe7, + 0x3c,0x0a,0x97,0x55,0xb7,0xf3,0xb5,0x7f,0x0f,0x78,0xaa,0xd3,0x53,0x96,0xe7,0x4e, + 0xbc,0x92,0x4b,0x48,0x91,0xe2,0x44,0x5b,0x53,0x22,0x15,0x5e,0x83,0xb3,0x8c,0x12, + 0x7d,0x2b,0xbc,0xd7,0x34,0xb8,0xb5,0x5b,0xbf,0xb5,0xdb,0xea,0x57,0xba,0x55,0xd6, + 0xcf,0x29,0xa5,0xb5,0x90,0x00,0xeb,0xe8,0x55,0x81,0x19,0xf7,0xc6,0x6a,0x2b,0x3f, + 0x0a,0xe9,0x09,0xe1,0x31,0xe1,0xe5,0x8d,0xe6,0xb1,0x1c,0x92,0xd2,0x1f,0x30,0xb6, + 0xed,0xdb,0xb7,0x0c,0x60,0xe7,0xd2,0xbe,0xa2,0x19,0xb6,0x16,0x30,0xa7,0x29,0xea, + 0xd2,0x51,0x6a,0xcf,0xe1,0x6a,0xcf,0x77,0x6b,0xec,0xd7,0x2d,0xaf,0xad,0xcf,0x9e, + 0xa9,0x97,0xd7,0x72,0x9a,0x8e,0xcd,0xf3,0x27,0xa7,0xc5,0x7b,0xad,0xb5,0xb6,0xe9, + 0xde,0xf6,0xd2,0xc7,0x9e,0x59,0x68,0x56,0xba,0x77,0xc3,0xab,0x5f,0x10,0x59,0x44, + 0x61,0xd7,0x74,0x69,0xcb,0x5e,0x13,0x81,0x2b,0xb0,0x7c,0x4b,0x1c,0x87,0xbe,0x41, + 0xcf,0x3e,0xd5,0xd1,0x68,0xde,0x1f,0xb6,0xf0,0xbf,0x8f,0x6d,0xdd,0x25,0xb9,0xb8, + 0xb3,0xd7,0xad,0x32,0xb3,0x5d,0x4c,0x5d,0x8c,0xc9,0xf3,0x00,0x49,0xf5,0x43,0xc0, + 0xf6,0xae,0x8f,0x59,0xf0,0x8e,0x85,0xac,0xdc,0x79,0xf7,0xd6,0xa8,0x66,0x60,0xbe, + 0x61,0xf3,0x59,0x04,0xd8,0xe9,0xbc,0x2b,0x00,0xdf,0x88,0xad,0x3b,0xc6,0xb3,0xba, + 0xfb,0x37,0x9c,0xb6,0xd2,0x7d,0x99,0xc4,0xb0,0xe5,0x33,0xe5,0xb8,0x1c,0x15,0xe3, + 0x8a,0xc6,0xbe,0x71,0x46,0xa4,0x5a,0xb3,0x7c,0xdc,0xd7,0xdb,0x44,0xec,0xd2,0x4e, + 0xfa,0xa8,0xcb,0x55,0xb6,0x85,0xd1,0xcb,0x67,0x4e,0x49,0xdd,0x2e,0x5e,0x5b,0x6f, + 0xab,0x5a,0x37,0xb6,0x97,0x8e,0x8f,0x73,0x44,0x69,0x30,0xc6,0x41,0x11,0x28,0x3e, + 0xb9,0xa7,0xae,0x9e,0x98,0xe1,0x10,0x56,0x54,0x9a,0xeb,0xe7,0x89,0xb7,0x63,0xd0, + 0x62,0xa3,0x3a,0xe4,0xb8,0xfb,0xdf,0xad,0x7c,0xbf,0xb5,0x5b,0x28,0x9f,0x45,0xc9, + 0xcc,0x6e,0x0b,0x05,0xeb,0x85,0x1f,0x85,0x28,0xb0,0x40,0x09,0x20,0x7d,0x31,0x5c, + 0xef,0xf6,0xc5,0xc3,0x1f,0xf5,0x98,0xfd,0x6a,0x23,0xa9,0xcc,0xc4,0xfe,0xf4,0xd3, + 0x55,0xa4,0xf6,0x45,0x38,0x25,0xd4,0xe8,0xda,0xd5,0x54,0x60,0x30,0x1f,0x5a,0x48, + 0xe1,0x8a,0x2c,0xef,0x95,0x1b,0xd0,0x02,0x2b,0x9b,0x17,0xf2,0xe7,0xfd,0x69,0xfc, + 0xeb,0x85,0xf8,0xc9,0xe2,0x0b,0xfd,0x2f,0xc2,0x22,0x5b,0x1b,0xc9,0x6d,0x6e,0x1a, + 0xe1,0x13,0xcc,0x89,0xb0,0xdb,0x48,0x24,0xf3,0xf8,0x0a,0xeb,0xc2,0x53,0xab,0x8c, + 0xc4,0x42,0x84,0x34,0x72,0x76,0x39,0x71,0x35,0x61,0x85,0xa1,0x3a,0xd3,0xd5,0x45, + 0x5c,0xf6,0x03,0x35,0x9a,0x72,0x5d,0x73,0xf5,0xa3,0xfb,0x66,0xc2,0x01,0x96,0x65, + 0xe3,0xde,0xbe,0x7f,0xf8,0x07,0xe1,0xb3,0xf1,0x3f,0x56,0xd4,0xe1,0xd7,0xf5,0xbd, + 0x45,0x6d,0xed,0x52,0x36,0x0e,0xfa,0xa3,0x40,0x83,0x71,0x7c,0xee,0x62,0x1b,0x8f, + 0x94,0x74,0x15,0xed,0x3a,0x57,0xc1,0x5f,0x02,0xda,0xeb,0x0b,0x6c,0xda,0x7d,0xcf, + 0x89,0xa2,0x72,0x18,0x5d,0xc7,0x75,0x23,0x46,0x41,0xce,0x00,0xdc,0x7e,0x6e,0x31, + 0xce,0x07,0xd2,0xbe,0xf5,0x70,0x96,0x21,0x3b,0x4e,0xba,0xf9,0x2f,0xf8,0x27,0xc3, + 0xcb,0x8a,0xe8,0xbf,0x86,0x93,0xfb,0xcb,0x49,0xf1,0x1b,0x49,0xf0,0xb7,0x89,0xf4, + 0x3d,0x5c,0x5d,0x5b,0xc4,0xb1,0xdc,0x7d,0x92,0xe4,0x3c,0xaa,0x03,0x5b,0xcb,0xf2, + 0xb6,0x79,0xe8,0xac,0x11,0xf3,0xdb,0x69,0xf5,0xaf,0x46,0x93,0xf6,0x87,0xf0,0xae, + 0xaf,0x37,0xf6,0x3d,0xb5,0xe5,0xae,0xa6,0xf7,0x23,0xc8,0x58,0xad,0x98,0xca,0x49, + 0x3d,0x39,0x50,0x40,0x23,0xaf,0x27,0xb5,0x64,0x5c,0x7c,0x29,0xf0,0x06,0x94,0xd0, + 0x2d,0x9f,0x85,0xde,0xd9,0xb8,0xc8,0xba,0x86,0x32,0x0b,0x01,0x9f,0x4c,0xe3,0xfa, + 0x57,0x35,0xaf,0x59,0xe9,0xba,0x7f,0x8d,0x74,0x41,0x6c,0x62,0x8e,0x17,0x59,0x18, + 0x08,0x22,0x08,0x17,0xf7,0x6c,0x9c,0x71,0xd4,0x57,0xda,0x65,0xb8,0x6a,0x99,0x76, + 0x17,0xea,0xce,0x7c,0xc9,0x36,0xf6,0xb7,0xc8,0xf8,0xdc,0xc3,0x15,0x0c,0xc7,0x13, + 0xed,0xd4,0x39,0x6e,0x92,0xde,0xe6,0x9e,0xb4,0x12,0xd7,0x4b,0xbd,0x60,0x0e,0x44, + 0x4d,0x82,0xc3,0x1d,0xb8,0xab,0xde,0x14,0x10,0xa6,0x87,0x63,0xb9,0x55,0x89,0x89, + 0x58,0xe7,0xdc,0x67,0xfa,0xd7,0x9d,0x4f,0xe1,0xed,0x5e,0x54,0x6f,0xb3,0xf8,0x92, + 0x4b,0xe8,0xd9,0x4c,0x6d,0x6b,0x71,0x81,0xb8,0xe3,0xd7,0xb6,0x38,0x3d,0x2a,0xe5, + 0x95,0x97,0x8e,0xb4,0xbb,0x58,0x62,0x56,0xd3,0xee,0x82,0x28,0x50,0xb7,0x31,0xec, + 0x61,0x8c,0x70,0x08,0xcf,0x4a,0xef,0x70,0x4d,0x58,0xe0,0x53,0x69,0xde,0xc7,0xa2, + 0x78,0xab,0x4a,0xb0,0xf1,0x0e,0x85,0x71,0xa7,0x5d,0x40,0xb2,0x5b,0xce,0x00,0x74, + 0xc9,0x19,0xc1,0x07,0xb1,0x1d,0xc5,0x68,0xf8,0x2e,0x38,0x7c,0x33,0xa0,0x59,0xe9, + 0xd6,0x17,0x13,0xda,0x5b,0x5b,0x2e,0xd4,0x89,0x25,0x62,0x14,0x67,0x3f,0xd6,0xbc, + 0xc8,0x78,0xcb,0xc5,0x16,0xe5,0x92,0xeb,0xc3,0x9e,0x66,0xd5,0xe4,0x41,0x78,0xbc, + 0xfd,0x01,0x3f,0xa6,0x2b,0x43,0x4e,0xf8,0x88,0x63,0x75,0x4b,0xdd,0x27,0x52,0xd3, + 0x58,0x9c,0x07,0x9e,0xdc,0x34,0x64,0xff,0x00,0xbc,0x2b,0x17,0x45,0xf2,0xf2,0xa3, + 0x45,0x55,0x5f,0x98,0xf6,0x35,0xf1,0x86,0xa9,0x10,0x22,0x1d,0x4a,0x52,0x07,0x66, + 0xc3,0x7f,0x3a,0x82,0x6f,0x88,0x1a,0xd4,0x7c,0xb4,0xcb,0x30,0x1e,0xab,0x8f,0xe5, + 0x5e,0x79,0x6b,0xf1,0x3b,0x47,0xb9,0x77,0x8c,0x6a,0xf6,0x51,0x32,0x70,0x43,0xe5, + 0x7f,0x5e,0x45,0x5b,0x1e,0x20,0xb6,0xd4,0x62,0xf3,0x21,0xbe,0xb3,0xb9,0x5f,0x58, + 0x6e,0x14,0xff,0x00,0x3c,0x56,0x1e,0xc1,0xa7,0xaa,0x36,0xf6,0xcb,0xa3,0x37,0xb5, + 0xdf,0x15,0x59,0xf8,0x8a,0xda,0x4b,0x7d,0x67,0x40,0xb7,0xbe,0x46,0x18,0x2c,0xb2, + 0xbc,0x4f,0x8c,0x60,0x80,0xc3,0x91,0xf9,0xd5,0x6d,0x1f,0x52,0xf0,0x8e,0x97,0x6f, + 0x0d,0xbc,0x7e,0x19,0x96,0x18,0x21,0x50,0xb1,0xa0,0xbc,0x79,0x02,0x01,0xd0,0x00, + 0xc6,0xb0,0xe4,0x77,0x99,0xb0,0xaa,0x78,0xf4,0xe7,0xf9,0x55,0x77,0x59,0x13,0x3b, + 0x95,0x80,0xf7,0x18,0xad,0xe1,0x49,0x2d,0xc7,0x3a,0x9c,0xf6,0xf2,0x3d,0x06,0x3d, + 0x53,0xe1,0xfd,0xd3,0x87,0x9f,0x43,0x64,0x93,0xfb,0xcd,0x18,0x63,0xfc,0xe9,0x93, + 0xeb,0x7a,0x05,0x94,0xcd,0x16,0x96,0xeb,0x6f,0x6b,0xc1,0xd8,0xdf,0x29,0xce,0x39, + 0xe0,0xd7,0x9e,0x9e,0x47,0x52,0x0f,0xd7,0x35,0x24,0x71,0x02,0xa3,0x2f,0xcd,0x5c, + 0x69,0xa8,0xbb,0xa6,0x62,0xfd,0xe5,0x63,0xdf,0x35,0x3f,0xda,0x4b,0xe1,0x3c,0x2a, + 0xcd,0xff,0x00,0x09,0xa6,0x8c,0xde,0xc2,0xf1,0x0f,0xf5,0xae,0x4b,0x52,0xfd,0xac, + 0x7e,0x13,0xdb,0xe4,0x0f,0x15,0x69,0xcf,0x8e,0x9b,0x65,0x06,0xbe,0x47,0xd0,0xbe, + 0x12,0x78,0x28,0x5d,0xdd,0x2e,0xa9,0xa2,0x0d,0x90,0x7c,0x98,0x84,0xb0,0xcb,0xf5, + 0xc6,0x4b,0x73,0xf8,0x7a,0x57,0xa2,0xd9,0x7c,0x35,0xf8,0x3b,0x6b,0xa7,0x92,0x9e, + 0x14,0xba,0x79,0x82,0x9c,0x19,0xf6,0xed,0xdd,0x8e,0x3d,0x78,0xaf,0x73,0xeb,0x0f, + 0xa1,0xe2,0xfb,0x04,0x71,0x5a,0xdf,0xc6,0xff,0x00,0x07,0x2f,0xc4,0x7f,0x1a,0xdd, + 0xd9,0x6a,0xf6,0xe3,0x4b,0xbe,0xbb,0x86,0xea,0xdd,0xb2,0x76,0xb3,0x34,0x2b,0xe6, + 0x91,0xc7,0x3f,0x38,0x35,0x4a,0xe7,0xf6,0x81,0xf0,0xba,0x7f,0xcc,0x4c,0x49,0x8e, + 0xd1,0xc1,0x23,0x7f,0x4a,0xf5,0x2b,0x1f,0x87,0x5e,0x03,0xb8,0x96,0x35,0xb0,0xd0, + 0xa0,0xb4,0xdc,0x06,0x41,0x85,0x0e,0xe3,0xf5,0xc5,0x75,0x5e,0x27,0xf8,0x57,0x61, + 0xa3,0xf8,0x5a,0x3b,0xed,0x37,0x4b,0x81,0x24,0x8d,0xc2,0xa2,0xc3,0x0f,0xce,0xec, + 0x79,0x00,0xf1,0x9c,0x70,0x49,0xf6,0x06,0xbe,0x1f,0x15,0xc3,0x78,0x6c,0x6e,0x26, + 0x75,0xe7,0x36,0x9c,0xb5,0xb2,0x6b,0xfc,0x8f,0xb7,0xc3,0x71,0x2e,0x27,0x09,0x87, + 0x85,0x08,0x41,0x35,0x15,0x6b,0xbb,0xff,0x00,0x99,0xf3,0xd7,0xfc,0x2f,0xbd,0x22, + 0xe5,0x8a,0xda,0x5b,0x6a,0x37,0x9f,0xf5,0xc2,0xc9,0xcf,0xf3,0xac,0x9d,0x6b,0xf6, + 0x8d,0xb6,0xd1,0x36,0x09,0xf4,0x2d,0x5d,0x3c,0xc3,0x84,0xf3,0xa1,0x58,0xc3,0x7d, + 0x32,0xd5,0xf4,0x97,0x85,0x45,0xca,0x69,0xcb,0x77,0xab,0xe9,0x9a,0xcd,0xf6,0x9f, + 0x1b,0x79,0x57,0x10,0xda,0xdb,0xfd,0x9a,0xdd,0xd0,0x67,0x86,0x71,0xf3,0x30,0xce, + 0x38,0x23,0x1e,0x95,0xf2,0xdf,0xed,0x9b,0x31,0x9f,0xc5,0x5a,0x2b,0xa6,0x94,0xda, + 0x45,0xb4,0x81,0xa4,0xb7,0xb6,0x23,0x91,0x17,0xcd,0xb0,0xfb,0xe4,0x73,0xd2,0xa6, + 0x9f,0x0a,0xe0,0x39,0xac,0xf9,0x9f,0xcf,0xfc,0x90,0xe7,0xc5,0x38,0xf6,0xb4,0x51, + 0x5f,0x2f,0xf3,0x65,0x7b,0x9f,0xda,0x9e,0x65,0x6f,0xf4,0x6d,0x00,0x91,0xd8,0xcb, + 0x72,0x07,0xf2,0x53,0x5e,0xa5,0xe1,0xff,0x00,0x15,0x5e,0xeb,0x3a,0x64,0x17,0x57, + 0x02,0x3b,0x66,0x99,0x16,0x41,0x1a,0x36,0x40,0x04,0x67,0xae,0x2b,0xe3,0x56,0x63, + 0x80,0xb8,0xaf,0xac,0x3c,0x39,0x85,0xd0,0x74,0xe0,0x3a,0xfd,0x9a,0x3f,0xfd,0x04, + 0x57,0xce,0x71,0x3e,0x55,0x85,0xcb,0x69,0xd2,0x58,0x68,0xd9,0xc9,0xbb,0xea,0xde, + 0xd6,0xee,0xcf,0xa5,0xe1,0xcc,0xcf,0x13,0x98,0xce,0xaf,0xd6,0x25,0x75,0x14,0xad, + 0xa2,0x5b,0xdf,0xb1,0xd5,0x9d,0x48,0x8f,0xbd,0x23,0x37,0xd0,0xd3,0xd7,0x56,0x8c, + 0x2e,0x0c,0x3b,0xcf,0xa9,0x6a,0xc8,0x46,0x6c,0x71,0x80,0x69,0xc5,0x9c,0x74,0x61, + 0x8a,0xfc,0xf3,0x92,0xda,0xd8,0xfb,0x83,0x57,0xfb,0x6e,0x40,0x3e,0x48,0x10,0x7a, + 0x75,0xa6,0x9d,0x62,0xe4,0xf0,0x02,0xaf,0xe1,0x59,0x44,0x48,0x7b,0x9a,0x4f,0x9f, + 0x39,0xe4,0x8a,0x2c,0xc7,0xa1,0xa0,0x6f,0xe7,0x39,0xe3,0x19,0xf4,0x5c,0x54,0x96, + 0x42,0xe3,0x52,0xbe,0x82,0xd9,0x65,0x0a,0xf2,0xb6,0xc5,0x2f,0x9c,0x66,0xb3,0x44, + 0x8e,0xbe,0xbc,0x1a,0xd1,0xf0,0xf5,0xe2,0x43,0xe2,0x0d,0x3d,0xee,0x26,0x58,0x60, + 0x12,0x12,0xd2,0x48,0xdb,0x40,0xf9,0x4f,0x52,0x7a,0x57,0x5e,0x0e,0x84,0x2b,0xe2, + 0x69,0xd2,0xa9,0xb4,0x9a,0x4f,0xd1,0xb3,0x97,0x15,0x56,0x54,0x70,0xf5,0x2a,0x41, + 0x6b,0x14,0xda,0xfb,0x8d,0x39,0x3c,0x39,0x71,0x1d,0xb6,0xa7,0x27,0xda,0x62,0x26, + 0xc1,0xf6,0x4b,0x1a,0xe7,0x27,0xe5,0x0d,0x91,0xc7,0x4c,0x37,0xe8,0x6a,0xcd,0x87, + 0x85,0x45,0xe3,0x44,0xb2,0xdf,0x79,0x0c,0xf6,0xa2,0xe8,0xaf,0x96,0x58,0xaa,0x93, + 0xc7,0x71,0xef,0xf9,0x55,0xcb,0x7d,0x6b,0x45,0x83,0x51,0xd6,0xd2,0x6d,0x5a,0x36, + 0x86,0xfd,0x02,0x82,0x8a,0xcc,0x17,0x00,0xae,0x77,0x63,0x04,0xfc,0xdf,0xa5,0x47, + 0x1f,0x8c,0xf4,0x4b,0x5d,0x6a,0xea,0xe1,0x2e,0x6e,0x36,0x34,0x02,0xde,0x36,0x5b, + 0x76,0x21,0x02,0xf4,0xc7,0x73,0xc9,0x27,0xa6,0x2b,0xef,0xe1,0x92,0xe5,0x54,0xe6, + 0xa5,0x51,0xab,0x6a,0xac,0xe5,0xd9,0xbd,0x77,0xea,0xac,0x7c,0x34,0xf3,0x6c,0xd2, + 0xa4,0x1c,0x69,0xc5,0xdf,0x47,0x75,0x17,0xd5,0x2d,0x36,0xe8,0xee,0x43,0xa4,0xf8, + 0x7f,0x4d,0xd5,0xae,0xe6,0xf2,0xb5,0x39,0x64,0xb5,0xb7,0x8b,0xcc,0x95,0xcc,0x0d, + 0x1b,0x64,0x9e,0x00,0x0d,0xdb,0x00,0x9c,0xf3,0xd3,0xde,0x97,0x4b,0xd3,0x34,0x2d, + 0x42,0x2d,0x42,0xf6,0x37,0xbd,0x92,0xd2,0xce,0x20,0xde,0x5b,0x80,0xac,0xed,0xf3, + 0x13,0xdb,0xa6,0x00,0xe3,0x82,0x49,0xea,0x31,0x55,0xe1,0xf1,0xae,0x9b,0x61,0x73, + 0x71,0x21,0xfe,0xd1,0xd4,0xc5,0xd4,0x62,0x29,0xa4,0x91,0x51,0x0e,0xd1,0x9c,0x60, + 0x71,0xea,0x7f,0x3a,0xa9,0x67,0xe2,0xdd,0x2f,0x4a,0x59,0xe0,0xb3,0xd2,0xe7,0x92, + 0xce,0xe5,0x36,0xcc,0x2e,0x27,0x0a,0xe7,0xaf,0x40,0x32,0x3b,0xfa,0x8f,0xd2,0xa5, + 0x61,0xf2,0x9a,0x6e,0x3f,0xc3,0xb5,0xdd,0xee,0xdb,0xd7,0xec,0xf5,0x7a,0x77,0x34, + 0x75,0x73,0x4a,0x8a,0x56,0xe7,0xe9,0x6b,0x24,0xb4,0xfb,0x57,0xd1,0x6b,0xdb,0x62, + 0x7d,0x56,0xca,0xc6,0x5d,0x12,0xd7,0x53,0xb2,0x8a,0x6b,0x65,0x92,0x43,0x1b,0x41, + 0x2b,0x02,0x47,0x2c,0x33,0x9f,0xf8,0x09,0xef,0x58,0x21,0xf0,0x7a,0x1a,0xbd,0xad, + 0x78,0xac,0x6a,0xd6,0xd6,0xd6,0x90,0x5b,0x25,0x85,0x9c,0x1c,0xac,0x6a,0xdb,0x8b, + 0x36,0x3a,0x93,0x8f,0x73,0xf5,0xcd,0x65,0xfd,0xa4,0x02,0x47,0x98,0x0f,0xbe,0x2b, + 0xe4,0x33,0x55,0x87,0x96,0x23,0xfd,0x99,0x2b,0x59,0x5e,0xca,0xca,0xfd,0x6d,0xe4, + 0x7d,0x56,0x5a,0xb1,0x10,0xa1,0x6a,0xf7,0xbd,0xdd,0xae,0xee,0xed,0x7d,0x2e,0xfb, + 0x96,0x0c,0xab,0x8e,0x49,0x06,0x93,0x7f,0x19,0xdf,0x54,0xde,0xfd,0x17,0x39,0x60, + 0x47,0xb0,0xa6,0xa6,0xa5,0x11,0x5c,0x96,0x23,0xf0,0xaf,0x29,0x53,0x76,0xbd,0x8f, + 0x51,0xbb,0x97,0x19,0x87,0xf7,0x89,0xfa,0x0a,0xf3,0xdf,0x8d,0x52,0x13,0xe1,0x48, + 0x86,0x33,0xfe,0x92,0x9c,0x1f,0xa1,0xae,0xc1,0xf5,0x28,0xb1,0xcb,0xf3,0xf5,0xae, + 0x73,0xc5,0xf6,0xfa,0x7f,0x88,0xf4,0xb7,0xb3,0xb9,0xbb,0x6b,0x60,0x19,0x5d,0x24, + 0x40,0x1b,0x04,0x1e,0xe0,0x91,0x9e,0x33,0xde,0xbd,0x7c,0xa9,0xac,0x3e,0x36,0x95, + 0x69,0xec,0x9a,0x6c,0xf3,0x73,0x1a,0x72,0xaf,0x84,0xab,0x4a,0x1b,0xb4,0xd2,0x3b, + 0x2f,0xd8,0x4f,0x55,0xb6,0xd1,0xe6,0xf1,0xc4,0xd2,0xdb,0x69,0x57,0x77,0x2b,0x6f, + 0x6a,0xd0,0xc1,0xab,0xc5,0xbe,0x19,0x70,0x66,0x05,0x33,0x91,0xb4,0x9d,0xc3,0x07, + 0xd4,0x01,0x5d,0x4d,0xef,0x8b,0xa6,0x17,0x09,0x14,0xd7,0x36,0xbe,0x1b,0x8a,0x23, + 0xb7,0xca,0x8a,0xec,0xc6,0xbf,0x2e,0x47,0xb9,0x03,0x8e,0xe2,0xbe,0x6e,0x83,0x4e, + 0xf0,0xb6,0x86,0x92,0x0b,0x9f,0x10,0xcf,0xf3,0x0c,0x3a,0xa5,0xda,0x40,0x18,0x0e, + 0x80,0xe0,0x13,0xfa,0xd5,0x4b,0x9f,0x13,0xfc,0x38,0xb3,0x3f,0x38,0x4b,0xc3,0xe9, + 0x71,0x73,0x3d,0xc6,0x7f,0xf1,0xec,0x7e,0x95,0xfa,0xec,0xb3,0x8a,0x52,0x7f,0xba, + 0xa5,0x39,0x7a,0x44,0xfc,0xa1,0x64,0x75,0xe2,0xbf,0x7d,0x52,0x11,0xf5,0x91,0xf4, + 0x8e,0xb1,0xf1,0x5b,0x4a,0xd1,0xed,0x8c,0x57,0x7e,0x29,0xb5,0xb9,0x19,0x0c,0xae, + 0x97,0x9e,0x60,0x5c,0x0c,0x0c,0x82,0x07,0x38,0xf5,0xae,0x56,0xdf,0xc6,0x56,0x5e, + 0x39,0xf8,0x85,0xa5,0xb6,0x8f,0x34,0xf7,0xf1,0xaa,0x30,0x91,0xb6,0x8d,0xa1,0x88, + 0x6f,0xe2,0x51,0x8c,0x72,0x39,0x38,0xea,0x78,0xe2,0xbc,0x40,0xfc,0x5b,0xf0,0xbe, + 0x9f,0x35,0xb3,0x69,0x1a,0x0d,0xb9,0x68,0xdf,0x7f,0xfa,0x25,0x84,0x61,0x88,0xc7, + 0x4c,0x91,0x93,0x93,0x8e,0xb5,0xe8,0x5f,0x0e,0x7e,0x23,0x6b,0x5e,0x3a,0xd7,0x16, + 0xd6,0xeb,0x4a,0xd4,0xf4,0xdd,0x2b,0x6e,0x56,0x56,0x38,0x52,0x7d,0x0a,0xfa,0x7d, + 0x01,0xae,0xca,0x78,0x95,0x3a,0x5e,0xd2,0xa4,0x1c,0x3d,0x77,0x39,0x27,0x80,0xa8, + 0xab,0x2a,0x58,0x77,0xed,0x3c,0xe3,0xb1,0xec,0xd0,0xdb,0xb3,0xdb,0x4a,0xc6,0xe6, + 0x56,0xc6,0xe3,0xbc,0x60,0xee,0x19,0x27,0xfc,0x91,0x57,0xe7,0x6b,0xe6,0x4b,0x69, + 0x16,0xea,0x71,0x19,0x38,0x65,0xc8,0xc1,0xc8,0xf5,0xe6,0xa8,0x4f,0x12,0x4d,0x6a, + 0x60,0x0c,0xdb,0x71,0x8d,0xdd,0x4d,0x4a,0xb7,0x7b,0xe3,0x89,0x64,0xca,0x88,0xdb, + 0x24,0xa9,0x03,0x3e,0x84,0x72,0x7d,0xaa,0xb5,0x6a,0xe8,0xe5,0xb7,0x2b,0xe5,0x7d, + 0x07,0xc7,0x64,0x64,0xb8,0x91,0x24,0x41,0x33,0xe4,0x14,0x67,0x73,0x9c,0x7e,0x43, + 0xb8,0xed,0x57,0x63,0xba,0x9e,0x2b,0x2b,0x79,0x48,0x2f,0x2c,0x67,0x12,0x21,0xc8, + 0x18,0xe8,0xd8,0x1d,0x6a,0xb7,0xf6,0xa4,0x52,0x5d,0xa4,0x8c,0xcc,0x00,0x42,0xa7, + 0x7b,0x0e,0x79,0x1f,0x9f,0xe1,0x42,0xea,0x98,0xbb,0xbb,0x58,0xe5,0x18,0x65,0x56, + 0xc2,0xe1,0xb1,0xc6,0x0f,0x1f,0x80,0xa4,0xe4,0xf6,0xb0,0x24,0x93,0x26,0xb8,0xb9, + 0xfb,0x4c,0xd2,0x43,0x73,0x67,0x0b,0xac,0xa3,0x29,0xe7,0x44,0x1b,0xea,0x06,0x33, + 0x9f,0xc6,0xb3,0x8f,0x87,0xf4,0x8b,0xbc,0x49,0x36,0x93,0x6b,0x0b,0xc6,0x70,0xc1, + 0x14,0xa9,0x61,0xeb,0xc6,0x07,0x23,0xf5,0xa9,0x6d,0x25,0xcc,0x0d,0x17,0x9a,0xcd, + 0xe5,0x1c,0x29,0xc1,0xe9,0xd4,0x1a,0x63,0xea,0x8b,0x2c,0x26,0x42,0x76,0x3a,0x9c, + 0x3a,0xb6,0x7a,0xf7,0xc5,0x54,0x59,0x2f,0xb9,0x9d,0x71,0xa1,0xe8,0xb0,0xba,0x3c, + 0x09,0x71,0x6e,0x8f,0xc2,0xb4,0x17,0x2c,0x31,0x9f,0xab,0x10,0x3f,0x2a,0x7d,0xa5, + 0xb2,0xa1,0x61,0x6f,0xad,0x6a,0x68,0xf8,0xc8,0x8e,0x47,0x12,0x60,0x7e,0x55,0x65, + 0x6f,0x23,0x7d,0xb2,0x2b,0x16,0x56,0x38,0x23,0x04,0x11,0xef,0x4f,0x69,0xc7,0x75, + 0x67,0xc9,0x3b,0x5f,0xa6,0xdf,0x6f,0x7f,0xfe,0xb5,0x5d,0xd9,0x9b,0xdf,0x42,0x2c, + 0xeb,0x90,0x80,0x63,0xd7,0xbc,0xe5,0xec,0x2e,0xac,0xc0,0x3f,0x89,0xa9,0xf1,0xe2, + 0x13,0xfe,0xac,0xe8,0xf3,0x0f,0xef,0x15,0x65,0x24,0xfd,0x01,0xa8,0xcc,0xca,0xea, + 0xc4,0xc5,0xb9,0xc7,0x07,0x27,0x19,0x1f,0x43,0x52,0x5a,0x49,0x1b,0x40,0xa4,0x65, + 0x73,0xc9,0x56,0xe4,0xaf,0xb7,0x34,0x0b,0x7d,0x8c,0x5d,0x07,0xc6,0x5a,0x0c,0x5a, + 0x03,0xe9,0x92,0xc4,0xd1,0xdd,0x16,0x2e,0x1e,0x51,0x93,0xbd,0xb1,0x92,0x72,0x4f, + 0x7f,0x4e,0xc2,0xb0,0x6f,0xfc,0x4d,0x71,0x65,0xa8,0x5b,0xc9,0x1d,0xda,0x6a,0xb6, + 0xbb,0x72,0xc8,0x90,0xb2,0xa2,0x93,0x83,0x8e,0x9c,0xe3,0x1d,0x6b,0xcf,0x8f,0x83, + 0x7c,0x7d,0x1d,0xc4,0x73,0xff,0x00,0xc4,0x86,0x27,0x43,0x90,0xd2,0x6a,0xf0,0x3e, + 0x3f,0x00,0x5a,0xb7,0xa0,0xba,0xf8,0xa7,0x6b,0x65,0x25,0xb4,0x7e,0x2f,0xf0,0xfd, + 0x94,0x32,0x2e,0xd6,0x45,0x91,0x9f,0x8f,0x4f,0x96,0x0a,0xf4,0x23,0x4e,0x31,0xb9, + 0xca,0xe4,0xd9,0xea,0xbe,0x07,0xf1,0xf4,0xba,0x46,0x24,0xfb,0x26,0xe2,0x5c,0xb1, + 0x56,0x8d,0xb0,0x32,0x7a,0x03,0xc1,0x1d,0xba,0x1e,0xd5,0xea,0x1e,0x1c,0xf8,0xaf, + 0x69,0x1e,0xa3,0x09,0xb8,0x8d,0x5a,0x29,0x57,0xc9,0x91,0x5d,0xfe,0x54,0xdc,0xa5, + 0x77,0x64,0x63,0x07,0x24,0x72,0x73,0xd4,0xd7,0xc4,0xcc,0xfe,0x36,0xd4,0x2f,0x2f, + 0x2d,0x67,0xf1,0xac,0x0a,0xd6,0x72,0xf9,0x4c,0xd6,0xd1,0x4a,0x51,0x89,0x50,0xd9, + 0x5f,0xbb,0xd9,0x87,0x50,0x29,0xcf,0xe1,0x8d,0x4a,0xf5,0xcb,0xea,0x1e,0x33,0xbc, + 0xb8,0x73,0xc9,0x22,0x12,0x7f,0xf4,0x39,0x0d,0x78,0x35,0xf3,0x1c,0x0e,0x1e,0xaf, + 0xef,0x65,0xef,0x47,0xc9,0xff,0x00,0x91,0xef,0xd0,0xca,0xb1,0xd8,0x8a,0x49,0xd3, + 0x87,0xbb,0x2f,0x35,0xfe,0x67,0xdb,0xbf,0x1a,0x7c,0x77,0xaf,0xf8,0x66,0x25,0xb7, + 0xf0,0xe7,0x8b,0x6e,0x6e,0x34,0x6b,0xf8,0x44,0x97,0x36,0x6d,0x70,0x85,0xe2,0x72, + 0x58,0x32,0xba,0xf5,0x52,0x08,0xed,0xfe,0x04,0xfc,0x4b,0xfb,0x5a,0x78,0xde,0x4f, + 0x1f,0x78,0xab,0xc3,0x73,0xb3,0x46,0xd2,0xda,0xe9,0xd1,0x5b,0x4a,0x22,0x65,0x65, + 0x05,0x37,0xae,0x78,0xee,0x78,0x3c,0xf3,0xcd,0x44,0x7c,0x0d,0xa4,0x9c,0xb5,0xce, + 0xb7,0xa9,0x4a,0x4f,0x53,0xba,0x24,0xcf,0xfe,0x38,0x4d,0x52,0xbc,0xf0,0xa7,0x82, + 0x62,0x28,0xf7,0x72,0x4f,0x2b,0x20,0xe1,0xa6,0xbf,0x2b,0x8f,0xcb,0x15,0x8f,0xfa, + 0xc3,0x84,0x4f,0xdc,0x52,0x7e,0x8b,0xfc,0xce,0xa5,0xc3,0x58,0xe6,0xbd,0xfb,0x2f, + 0x56,0x79,0x33,0xc4,0x42,0x83,0xeb,0x5f,0x54,0x69,0x39,0x8b,0x45,0xd3,0xd4,0x82, + 0x3f,0xd1,0xe3,0xff,0x00,0xd0,0x45,0x79,0x28,0xb8,0xf8,0x75,0xa5,0x3a,0xb9,0xfb, + 0x24,0x8c,0xa4,0x10,0x26,0xbb,0x92,0x5e,0x7e,0x9b,0xb1,0xfa,0x56,0xbe,0xa5,0xf1, + 0xf3,0x41,0x90,0xaf,0x99,0x7c,0x24,0x28,0x36,0xa8,0x8a,0x23,0x80,0x3d,0xb0,0x2b, + 0xe6,0x73,0xea,0xd5,0x73,0x9f,0x66,0xb0,0xf4,0x65,0x68,0xdf,0x75,0xde,0xc7,0xd3, + 0xe4,0x78,0x5a,0x79,0x3f,0xb4,0x78,0x9a,0xd1,0xbc,0xad,0xb3,0xed,0x7f,0x4e,0xe7, + 0xa6,0xfd,0xa3,0x07,0xa9,0xfc,0xea,0x44,0xb9,0x38,0xeb,0x5e,0x2d,0x37,0xc7,0xfd, + 0x29,0x4f,0xee,0x61,0xbb,0x9f,0xd3,0x6c,0x78,0xcf,0xe6,0x6a,0xa3,0xfc,0x70,0xbf, + 0xb9,0x6c,0x58,0xf8,0x76,0xfe,0x7c,0xf4,0x3b,0x48,0xfe,0x40,0xd7,0xcc,0xc7,0x23, + 0xc7,0x4b,0x78,0x5b,0xd6,0xcb,0xf3,0x3e,0x9f,0xfb,0x5b,0x05,0x7b,0x2a,0x89,0xfa, + 0x5d,0xfe,0x57,0x3d,0xdb,0xed,0xa0,0x70,0x58,0x53,0x7f,0xb4,0x40,0xe8,0x46,0x07, + 0x6a,0xf0,0x91,0xf1,0x07,0xc7,0x17,0xe7,0x36,0xbe,0x18,0x78,0xb3,0xd0,0xca,0x4f, + 0xf5,0xc5,0x21,0xbd,0xf8,0x9f,0xa8,0x7d,0xdb,0x5b,0x3b,0x25,0x3f,0xde,0x23,0x23, + 0xf5,0x35,0xa4,0x72,0x0a,0xdf,0x6e,0x71,0x5e,0xb2,0x5f,0xa1,0xa2,0xc7,0x73,0x7f, + 0x0e,0x8c,0xe5,0xe9,0x09,0x7e,0xa9,0x1e,0xea,0x35,0x31,0xfd,0xe1,0xf8,0xd4,0x52, + 0xeb,0x09,0xb4,0xe6,0x45,0x1f,0x8d,0x78,0x69,0xf0,0xd7,0xc4,0x0b,0xe1,0xfe,0x93, + 0xe2,0x1b,0x7b,0x5c,0xf6,0x8c,0xff,0x00,0x80,0xa4,0x3f,0x0c,0x35,0x8b,0xac,0xfd, + 0xbb,0xc6,0x17,0x2c,0x0f,0x55,0x8f,0x77,0xff,0x00,0x15,0x5b,0x47,0x23,0xa6,0xbe, + 0x3a,0xeb,0xe4,0x9b,0xfd,0x0d,0x55,0x5c,0x6c,0xfe,0x0c,0x24,0xbe,0x6e,0x2b,0xf3, + 0x67,0xb3,0x49,0xe2,0x3b,0x68,0x3e,0xf4,0xe8,0xb8,0xf5,0x22,0xb3,0x6e,0xbe,0x22, + 0xe8,0xb6,0x87,0xf7,0xda,0x9d,0xb4,0x78,0xfe,0xf4,0xab,0xfe,0x35,0xe5,0x6b,0xf0, + 0x5f,0x4a,0x6e,0x6e,0xb5,0x8b,0xeb,0x93,0xdf,0x2c,0x06,0x7f,0x4a,0xbf,0x6b,0xf0, + 0x87,0xc2,0x90,0xf2,0xd6,0xf3,0x5c,0x11,0xde,0x59,0x88,0xfe,0x55,0xd0,0xb2,0xac, + 0x0c,0x7e,0x2a,0xad,0xfa,0x2f,0xf3,0x65,0x2a,0x39,0xac,0xf6,0xa3,0x18,0xfa,0xcf, + 0xfc,0x93,0x3a,0xdb,0xbf,0x8d,0x3e,0x1a,0xb6,0xc9,0x6d,0x56,0x27,0x23,0xb4,0x79, + 0x6f,0xe5,0x58,0x57,0xbf,0xb4,0x1f,0x87,0xa3,0xf9,0x63,0x69,0xe7,0x3d,0xbc,0xb8, + 0x88,0xfe,0x78,0xa7,0xdb,0xf8,0x1b,0xc2,0xb6,0x6c,0x36,0xe9,0x36,0xa4,0x8e,0xf2, + 0x02,0xf5,0xa1,0x05,0x96,0x93,0x68,0x3f,0x71,0x61,0x6b,0x11,0x1d,0xd2,0x11,0x5a, + 0x47,0x05,0x96,0xc3,0xec,0xca,0x5f,0x34,0xbf,0x43,0x6f,0xa8,0x66,0xb2,0xd1,0xd4, + 0xa7,0x1f,0x45,0x27,0xfa,0xa3,0x9b,0x93,0xe3,0xe8,0x9b,0xe5,0xb2,0xd1,0xaf,0xae, + 0x4f,0x6c,0x20,0xe7,0xf2,0xcd,0x47,0xff,0x00,0x0b,0x63,0xc5,0xd7,0xe0,0x8b,0x3f, + 0x09,0xdc,0x80,0x7a,0x19,0x4b,0x0f,0xe8,0x2b,0xb1,0xfe,0xd3,0xb7,0x80,0x64,0x61, + 0x00,0xf4,0x55,0x5a,0x61,0xd6,0xbc,0xd5,0xcc,0x6e,0x4a,0xf4,0xfb,0xd9,0xad,0xd5, + 0x3c,0x0c,0x7e,0x1c,0x3f,0xde,0xdf,0xfc,0x02,0xd6,0x4d,0x8a,0x93,0xb4,0xf1,0x6f, + 0xe5,0x14,0xbf,0x3b,0x9c,0x77,0xf6,0xef,0xc4,0xdd,0x43,0x1e,0x5e,0x93,0x6b,0x66, + 0x0f,0x79,0x18,0x71,0xff,0x00,0x8f,0x52,0x9d,0x23,0xe2,0x4d,0xf0,0xc4,0xfa,0xd5, + 0x95,0x92,0x1e,0xc9,0x8c,0x8f,0xfc,0x76,0xba,0x96,0xbc,0x95,0xff,0x00,0x8d,0x89, + 0xa6,0x6f,0x90,0x8e,0x49,0x35,0xa2,0xaf,0x08,0xff,0x00,0x0e,0x8c,0x17,0xca,0xff, + 0x00,0x99,0xd3,0x1e,0x1f,0xa3,0x6f,0xde,0xd7,0xa9,0x2f,0xfb,0x7a,0xdf,0x92,0x47, + 0x2a,0xff,0x00,0x0e,0xfc,0x43,0x7b,0x9f,0xb7,0x78,0xd2,0x65,0x07,0xa8,0x87,0x70, + 0xfe,0xa2,0x9b,0x1f,0xc1,0xfd,0x36,0x55,0x22,0xf7,0x5b,0xd4,0x2f,0x58,0x9e,0x79, + 0x1c,0xfe,0x79,0xae,0xaf,0x73,0x67,0xd3,0xf1,0xa8,0xa6,0x95,0xd1,0x0e,0x08,0x0d, + 0x8c,0x02,0x79,0xc5,0x6c,0xb1,0x95,0xd6,0x90,0x69,0x7a,0x24,0xbf,0x42,0xbf,0xb0, + 0x32,0xd4,0xaf,0x3a,0x6e,0x5e,0xb2,0x93,0xfc,0xd9,0x91,0x6d,0xf0,0x87,0xc2,0xb6, + 0xd8,0xdd,0x69,0x71,0x70,0xdf,0xf4,0xd6,0x62,0x33,0xf9,0x56,0xbd,0xaf,0x83,0x3c, + 0x3b,0x62,0x33,0x16,0x89,0x67,0xc7,0x19,0x93,0xe7,0x35,0x8f,0xad,0xde,0x5d,0x59, + 0x69,0xcf,0x22,0x5c,0xbf,0x9a,0x48,0x55,0xc2,0x80,0x07,0x35,0xca,0x36,0xa7,0xa8, + 0x4f,0x9f,0x32,0xf6,0x76,0xff,0x00,0x75,0xf6,0xff,0x00,0x2c,0x57,0xa7,0x87,0xc3, + 0xe3,0x31,0xb1,0xe7,0xf6,0x9a,0x7a,0xb3,0xe7,0x33,0x0c,0xc3,0x26,0xc8,0xea,0xaa, + 0x3f,0x56,0x4e,0x56,0xbe,0x91,0x8f,0xe6,0xfd,0x0f,0x50,0x6b,0xab,0x6d,0x2e,0xdd, + 0x8d,0xbd,0xbd,0xad,0xa0,0x41,0x91,0xe5,0xc4,0xab,0xd3,0xde,0xa7,0xff,0x00,0x84, + 0xd2,0x04,0x00,0x1b,0xa6,0x9d,0xc7,0xf0,0xa1,0x2f,0xf9,0x81,0x5e,0x69,0x79,0xbc, + 0xf8,0x5b,0x73,0xe5,0xe5,0x24,0xe2,0x46,0xe5,0x88,0xdd,0xeb,0x58,0x6b,0xab,0x5e, + 0xcd,0xb6,0x25,0xb8,0x91,0xb1,0xc0,0x54,0xef,0xf9,0x56,0xd8,0x4c,0xb1,0x56,0xe6, + 0x75,0x27,0xf0,0xbb,0x18,0x66,0xdc,0x4d,0x2c,0x1a,0xa5,0x1c,0x3d,0x2f,0x8e,0x2a, + 0x5d,0xad,0x7f,0x24,0x8f,0xb3,0x7c,0x1d,0xa8,0xae,0xbd,0xa4,0x42,0xd1,0x16,0x92, + 0x68,0xa2,0x43,0x32,0x9e,0x4a,0x96,0x07,0x19,0xfc,0x8d,0x6c,0x32,0x6d,0xe1,0xc1, + 0x07,0xe9,0x5e,0x4b,0xf0,0x12,0xde,0xfb,0xc3,0x7a,0x5d,0xe5,0xc6,0xa3,0x04,0xb1, + 0x7d,0xac,0xc6,0xd1,0x16,0x3f,0x3e,0xd0,0x1b,0x9f,0x6f,0xbd,0x5e,0xc7,0x6b,0xe2, + 0xf8,0x6e,0x00,0x5f,0x39,0xb6,0x8e,0x71,0x32,0x2b,0x83,0xff,0x00,0x7d,0x03,0x5e, + 0xeb,0x5c,0x9e,0xea,0xd5,0x23,0xf2,0x59,0x4b,0xda,0xc9,0xce,0x5a,0x36,0xee,0x53, + 0xca,0x91,0x82,0x01,0x1e,0xf4,0xc6,0x85,0x0a,0xb0,0x3c,0xe7,0xae,0x79,0x15,0xba, + 0x2f,0x2c,0x6f,0x4f,0xef,0x2d,0x2c,0xa5,0x27,0xf8,0xa0,0x66,0x89,0x87,0xe4,0x58, + 0x7e,0x82,0x9a,0x74,0xbd,0x32,0x62,0x76,0xcf,0x73,0x6a,0xdd,0x70,0x55,0x65,0x1f, + 0xa1,0x07,0xf4,0xa5,0xce,0xba,0x91,0xec,0xd9,0x80,0x88,0xf0,0x42,0xc9,0x13,0xac, + 0x7c,0xe7,0x90,0x7f,0xa1,0x15,0x1a,0xda,0xb2,0x17,0xf2,0xa7,0x21,0x5c,0x96,0x70, + 0xe9,0xbb,0x9f,0x6f,0x98,0x7e,0xb9,0xad,0xbf,0xf8,0x46,0x5e,0x77,0x22,0xd2,0xfe, + 0xd2,0x77,0xff,0x00,0x9e,0x66,0x5f,0x2d,0xc7,0xe0,0xe0,0x55,0x5b,0xcd,0x07,0x52, + 0xb0,0x05,0xae,0x2d,0x65,0x8d,0x3a,0x09,0x0c,0x7f,0x29,0xfa,0x37,0x4a,0xae,0x64, + 0xfa,0x90,0xd3,0x46,0x51,0x8e,0x4b,0x7d,0xc1,0x97,0xcd,0x52,0x4e,0x1b,0x80,0x70, + 0x7d,0x6a,0x17,0xba,0x61,0x6d,0x24,0x72,0x83,0x19,0x04,0x85,0x25,0x8f,0x4e,0xdf, + 0x37,0x4a,0xb7,0x9e,0xbd,0x7f,0x0a,0x40,0x54,0x67,0x0a,0x0f,0x1d,0x4d,0x5d,0x91, + 0x0d,0xb2,0x0b,0x6b,0xff,0x00,0xb4,0x46,0x9b,0xa6,0x55,0x9a,0x3c,0x61,0x99,0x87, + 0x3c,0x7f,0x23,0x53,0x6c,0xb4,0xbc,0x26,0x46,0x84,0x33,0x67,0x69,0x20,0xe3,0x91, + 0x4d,0x9d,0x56,0xe0,0x2e,0xf0,0x18,0x81,0x8d,0xdd,0xea,0x15,0xb3,0x8c,0x67,0x85, + 0x14,0xec,0x49,0xf2,0xcb,0x6b,0x7f,0x13,0x65,0x3c,0x68,0xf6,0xf1,0x67,0xd4,0x0f, + 0xfe,0x2a,0x9a,0x1b,0xe2,0x7d,0xc8,0xe4,0xda,0xdb,0x03,0xdf,0x8f,0xfe,0xbd,0x75, + 0xa7,0xc4,0x12,0xb8,0x3b,0xee,0x01,0x19,0xf5,0xc5,0x56,0x93,0x5d,0x55,0x18,0x6b, + 0xb5,0xc7,0xbc,0x95,0xf2,0xcf,0x36,0xc4,0x3d,0x14,0x57,0xe3,0xfe,0x67,0xee,0x31, + 0xe0,0xdc,0xb6,0x3f,0x15,0x49,0x3f,0x9a,0xff,0x00,0xe4,0x4e,0x46,0xd3,0xc2,0xbe, + 0x39,0x79,0xee,0x90,0xeb,0x10,0x5b,0x48,0xed,0xe6,0xc8,0x47,0x25,0x89,0xe3,0x3d, + 0x3f,0xd9,0xfd,0x2a,0x63,0xf0,0xdb,0xc4,0x97,0x07,0x17,0x5e,0x2d,0x65,0xcf,0xf7, + 0x09,0xff,0x00,0x11,0x5b,0x11,0xeb,0x90,0x35,0xf4,0x85,0x6e,0x15,0xc7,0x96,0x01, + 0xda,0x73,0xdc,0xd2,0x5e,0x78,0x9e,0xce,0xc7,0x06,0x69,0x1d,0x77,0x74,0x1e,0x5b, + 0x1c,0xfe,0x95,0xcd,0x2c,0x4e,0x22,0xa4,0xfd,0xd8,0x2b,0xbf,0xee,0xab,0xfe,0x47, + 0x6c,0x32,0x3c,0xab,0x0f,0x47,0x9a,0xa4,0xdf,0x2a,0xef,0x36,0x97,0xe0,0xd2,0x32, + 0x47,0xc1,0xb8,0xe6,0xe6,0xf7,0xc4,0xd7,0x12,0x9e,0xe0,0x7f,0xf5,0xc9,0xab,0x30, + 0x7c,0x19,0xf0,0xd2,0x9f,0xdf,0x5d,0xde,0x5c,0x1e,0xe7,0x76,0x07,0xf2,0xa4,0x97, + 0xc7,0xb6,0x7f,0xc1,0x1c,0xcf,0xfe,0xea,0x01,0xfc,0xcd,0x40,0xbe,0x3d,0x12,0x4e, + 0x89,0x1d,0xb4,0x88,0x1d,0x82,0xee,0x77,0x1c,0x67,0xe9,0x5b,0xff,0x00,0xc2,0x93, + 0x57,0xb3,0x4b,0xd2,0xc7,0x34,0x63,0xc3,0x10,0x92,0x87,0xb9,0x26,0xf4,0xdd,0xcb, + 0xf5,0x66,0xcc,0x1f,0x0c,0xfc,0x1f,0x6a,0x3f,0xe3,0xc9,0xa6,0x23,0xbc,0x92,0x13, + 0x9f,0xd6,0xaf,0x5b,0xf8,0x77,0xc3,0x56,0x98,0xf2,0xb4,0x5b,0x4e,0x38,0xc9,0x8c, + 0x13,0xfd,0x6b,0x38,0xdc,0x5e,0x38,0xe1,0xa2,0x4f,0xc0,0x9a,0x9e,0xdd,0xe5,0x0b, + 0xfb,0xd6,0x0e,0xc7,0xb8,0x18,0xaf,0x32,0x75,0xeb,0x4b,0xe2,0x9b,0xfb,0xcf,0xaa, + 0xa3,0x80,0xc1,0x53,0x7f,0xbb,0xa1,0x15,0xff,0x00,0x6e,0xa3,0x6a,0x29,0xec,0xad, + 0xb0,0xb0,0x59,0x5b,0xc4,0x07,0x4d,0xb1,0x01,0x53,0xa6,0xb5,0xb4,0x90,0x06,0x07, + 0xa0,0x00,0x56,0x19,0x90,0x11,0xd3,0xf1,0xa6,0x96,0xe3,0xbd,0x73,0x36,0xde,0xec, + 0xf4,0xa3,0x68,0xe8,0x95,0x8d,0xc9,0x35,0xa6,0x1f,0xc2,0x3f,0xe0,0x4d,0x9a,0x84, + 0xea,0xee,0xc7,0xf8,0x2b,0x27,0x07,0xd7,0x8a,0x3a,0x8e,0x2a,0x6c,0x3b,0x9a,0x33, + 0xea,0xb2,0x47,0x1b,0x48,0xd2,0x2a,0xa0,0x19,0x24,0x0e,0x95,0x4b,0xfb,0x4e,0xee, + 0x6f,0xb9,0x6b,0x21,0xcf,0x42,0xec,0xab,0xfa,0x75,0xaa,0xb7,0x64,0x88,0x90,0x03, + 0xff,0x00,0x2d,0x13,0xff,0x00,0x42,0x15,0x6e,0x12,0x4c,0x8a,0x3d,0xc5,0x69,0x08, + 0xc7,0x4d,0x37,0x30,0xab,0x39,0x24,0xf9,0x5e,0xc8,0xd0,0xd0,0x34,0x4f,0x10,0xf8, + 0xaa,0xf5,0xad,0xb4,0xbb,0x24,0xb9,0x99,0x53,0xcc,0x2a,0x8c,0xcf,0x85,0xc8,0x19, + 0xe8,0x06,0x39,0x1d,0xfb,0xd7,0x5f,0x6d,0xf0,0x1f,0xc7,0xb7,0x40,0x34,0x90,0x5b, + 0xda,0x27,0x72,0xec,0x99,0x1f,0xf8,0xf9,0xfe,0x54,0x78,0x10,0xdd,0xe8,0xba,0x7c, + 0xd7,0x51,0xca,0x21,0x37,0x56,0x11,0xc9,0x19,0x17,0x8d,0x6b,0x94,0xfb,0x4a,0xa1, + 0x06,0x45,0xe5,0x32,0x51,0xba,0x75,0x1f,0x5a,0xf6,0x4d,0x36,0x3b,0x8d,0x56,0xd7, + 0xc4,0xf1,0xdc,0x5d,0xcf,0x24,0x4b,0x2d,0xbb,0xaf,0xdb,0x2d,0x5a,0x61,0x24,0x4b, + 0xb5,0xd9,0x4c,0x6a,0x72,0x41,0x98,0x5c,0xa3,0x2f,0x5c,0x0c,0x74,0x02,0xbf,0x47, + 0xc6,0x70,0xf6,0x17,0x05,0x57,0xd9,0xa6,0xde,0x88,0xfe,0x7c,0xa1,0xc7,0x59,0xa6, + 0x3a,0x97,0x3f,0xbb,0x1d,0x5e,0xc9,0xff,0x00,0x99,0xe4,0xd1,0x7c,0x03,0xd4,0x51, + 0xe4,0x5d,0x4b,0xc5,0xba,0x55,0x9b,0x44,0xca,0xb2,0x47,0xf6,0xa5,0xdc,0x8c,0xdf, + 0x74,0x11,0xb4,0x60,0x9e,0xc3,0x3c,0xd4,0xba,0xd7,0xc0,0xed,0x1b,0x45,0xd1,0xaf, + 0xaf,0x6e,0x3c,0x58,0xb7,0x77,0x10,0x42,0xd2,0x24,0x31,0xa3,0xb2,0xbb,0x7c,0xb8, + 0x04,0x87,0xe8,0x4c,0x91,0xf6,0xfe,0x21,0x5e,0x8f,0xa3,0xf8,0x7f,0x55,0xb2,0x82, + 0xda,0x58,0x2d,0xb5,0x15,0xd4,0x22,0x8a,0xc7,0x12,0x18,0xa0,0x45,0x8e,0x65,0xb6, + 0x78,0xca,0xe5,0x86,0x5a,0x11,0xbc,0x96,0x1c,0xb0,0x67,0x38,0xe7,0x38,0xe4,0xf5, + 0x8f,0x0f,0x6b,0x3a,0x42,0x8b,0xbd,0x6f,0x54,0xd3,0x61,0xb1,0xb4,0xd4,0x2e,0xee, + 0x27,0xb3,0x69,0x63,0x2f,0x73,0x67,0xb6,0xdf,0xc8,0x88,0x29,0xea,0xd9,0x88,0xe4, + 0x77,0xc0,0xf5,0xa5,0x47,0x2e,0xc2,0xc6,0x71,0x4e,0x3d,0x51,0xc7,0x5f,0x88,0xf3, + 0x5a,0xb0,0x7f,0xbe,0x7f,0x24,0xbf,0xc8,0xf1,0x7d,0x43,0x48,0xb7,0xd3,0xf5,0x07, + 0x81,0xa0,0xb7,0x62,0xa8,0xad,0xb9,0x57,0x76,0x49,0xcf,0x73,0x9f,0x4a,0xad,0x0a, + 0x2d,0xbd,0xd4,0xa6,0x24,0x08,0x19,0x14,0x90,0xa3,0x03,0x39,0x3c,0xd6,0xdf,0x89, + 0xef,0xf4,0xcd,0x4b,0x5c,0x79,0xb4,0x8b,0x63,0x6b,0x65,0xe4,0xa2,0x84,0x2d,0x9c, + 0xb6,0x58,0x93,0xd4,0xfa,0x8e,0x33,0x58,0x73,0xcc,0xb0,0xdc,0x1c,0x9c,0x7c,0xa3, + 0xf9,0x9a,0xf9,0x3c,0xe2,0x94,0x69,0xe3,0xaa,0xd3,0xa3,0xf0,0xab,0x7e,0x4b,0xd7, + 0xaf,0x99,0xfb,0x47,0x0d,0x56,0xa9,0x57,0x28,0xa1,0x5f,0x13,0x7e,0x77,0x7b,0xb7, + 0xbe,0xee,0xdb,0xdb,0xa1,0x70,0x4a,0xde,0xb8,0xa0,0x31,0xcf,0x5f,0xd6,0xb3,0x9f, + 0x51,0x8d,0x39,0xde,0x38,0xf7,0xa8,0x24,0xd6,0xe0,0x8f,0xfe,0x5a,0x0f,0xa5,0x78, + 0xf1,0xa3,0x37,0xb2,0x3e,0x8e,0x78,0xaa,0x50,0xd6,0x52,0x46,0xb0,0x73,0xd2,0x9c, + 0x85,0x09,0x1b,0xd8,0x85,0xee,0x57,0x9a,0xc9,0x82,0xfa,0xe2,0xf0,0xff,0x00,0xa3, + 0x5a,0x5c,0x5c,0x67,0xa7,0x95,0x13,0x36,0x7f,0x21,0x5b,0x3a,0x77,0x83,0xfc,0x53, + 0xad,0x91,0xf6,0x4d,0x1a,0x52,0x0f,0x46,0x95,0xd2,0x3f,0xfd,0x08,0x83,0x5d,0x31, + 0xc2,0x55,0x7a,0xf2,0x9e,0x55,0x6c,0xeb,0x05,0x4b,0x49,0x55,0x5f,0x79,0x5e,0xfe, + 0xda,0xca,0xf6,0xdd,0xa1,0x91,0xa6,0x21,0x88,0x3b,0x97,0x00,0x8c,0x1c,0xfb,0xd5, + 0x08,0xb4,0x6d,0x32,0x2e,0xb0,0x33,0xf7,0xcc,0x92,0x93,0xfc,0xb1,0x5d,0xbd,0x9f, + 0xc0,0xff,0x00,0x16,0x5e,0x73,0x71,0x3d,0x8d,0x9a,0xf7,0x0d,0x2b,0x3b,0x7e,0x40, + 0x63,0xf5,0xad,0x41,0xfb,0x3f,0x5d,0xf9,0x39,0x6d,0x74,0x49,0x20,0x23,0x31,0xa4, + 0x3b,0x01,0xf5,0xf9,0x89,0x3f,0x9e,0x3f,0x0a,0xf4,0x68,0xd1,0xc4,0x41,0x72,0x42, + 0x76,0x5e,0xa7,0xc9,0xe3,0x33,0x7c,0x9a,0xb5,0x4f,0x6b,0x5a,0x0a,0x72,0x5a,0x6d, + 0x73,0xce,0x2f,0x26,0x81,0xed,0x7c,0x83,0x1c,0x42,0x2f,0x95,0x76,0x05,0x18,0xc6, + 0x69,0x74,0x3d,0x1e,0x3b,0xab,0xf8,0xed,0xec,0x6d,0x4c,0xb2,0x33,0x00,0xa9,0x12, + 0x57,0xa4,0x5a,0xfc,0x28,0xb5,0xd0,0xae,0x0c,0x97,0xba,0x64,0x9a,0x9a,0xa9,0xc8, + 0xdf,0x3b,0x15,0x1f,0x5d,0x83,0x2d,0xff,0x00,0x7c,0x57,0x73,0xa1,0x6b,0x1a,0x4e, + 0x98,0xa2,0xda,0xdf,0x4b,0x5b,0x06,0xc7,0x29,0x04,0x3f,0x33,0x7b,0xed,0x5c,0xb6, + 0x3d,0xdb,0x15,0xdb,0x4f,0x03,0x28,0xaf,0x7a,0x57,0x3c,0x2c,0x5f,0x13,0xd1,0x9b, + 0xfd,0xcd,0x2d,0x76,0x4d,0xf4,0x2a,0x41,0x63,0x25,0x8d,0xad,0xbc,0x0e,0x36,0x48, + 0xaa,0x17,0x95,0xc6,0x70,0x28,0x8e,0x4d,0x8c,0x41,0x7d,0xc3,0xb0,0x3c,0x1f,0xe5, + 0x5d,0x4c,0x1a,0xa5,0x95,0xfe,0xe0,0x8c,0x8e,0x57,0xa8,0xdc,0x08,0x5f,0xae,0x38, + 0x15,0x24,0x9a,0x7d,0x94,0xeb,0x81,0x02,0x85,0x61,0xc1,0x43,0x8e,0x7f,0x0e,0x2b, + 0xd5,0x55,0x12,0xd1,0xa3,0xf3,0xf9,0xc1,0xca,0x4e,0x57,0x39,0x90,0xcf,0xb7,0x72, + 0x95,0xe3,0xee,0xe0,0xf2,0x4d,0x58,0x83,0x5f,0xbc,0xb7,0x5c,0x89,0x5c,0x6d,0xc6, + 0x72,0x43,0x63,0xfa,0xd6,0x8c,0x9e,0x1c,0x0e,0x41,0x4c,0xa6,0x09,0x20,0x85,0xc7, + 0xd6,0xa9,0xdd,0x68,0x17,0x71,0xc6,0xdb,0x17,0x72,0xf7,0xe0,0x1a,0xd1,0x4a,0x32, + 0x33,0x71,0x94,0x4b,0x09,0xe2,0x7b,0xa6,0x53,0xe6,0x45,0x1c,0xab,0x8c,0xe0,0x13, + 0x9f,0xca,0xae,0xd9,0xf8,0x98,0xdb,0xb6,0xf8,0x9a,0x7b,0x4e,0x39,0xf2,0x9c,0xa8, + 0xfd,0x0f,0xf4,0xae,0x5a,0x6d,0x3e,0x7b,0x60,0x43,0x2b,0x82,0xb8,0xc7,0xca,0x47, + 0xd6,0xa2,0xdc,0x54,0x85,0x65,0x27,0x6f,0xf7,0xc6,0x6a,0x9d,0x38,0xb1,0x29,0xc9, + 0x1d,0xcb,0x6b,0xa2,0xef,0x26,0x57,0x86,0xe1,0xcf,0x1f,0xbe,0x8c,0x6e,0xfc,0xc6, + 0x0f,0xeb,0x4d,0xdf,0x6b,0x20,0xc3,0x44,0xd1,0x93,0xde,0x27,0xdd,0xfa,0x1f,0xf1, + 0xae,0x20,0x5c,0x79,0x6d,0x90,0xcc,0x3e,0x99,0xe4,0x53,0x97,0x51,0x92,0x16,0x20, + 0x12,0xa0,0xf5,0xc9,0xa1,0x53,0x69,0x68,0x3f,0x68,0x9e,0xe8,0xeb,0xe4,0xb3,0x89, + 0x89,0xf2,0xee,0x00,0xf6,0x91,0x0a,0xfe,0xa3,0x22,0x98,0xba,0x6b,0xe0,0xed,0x28, + 0xe3,0xd4,0x48,0xa7,0xfa,0xd6,0x02,0x6b,0x73,0x42,0x87,0x8d,0xf8,0x1d,0x4f,0x19, + 0xfc,0xaa,0x6f,0xed,0xb0,0xdd,0x63,0x52,0x7f,0xda,0x34,0xd4,0x64,0x85,0xee,0x33, + 0xe2,0xf7,0xf1,0x02,0xe7,0x29,0x6a,0xa3,0xea,0x6a,0x16,0xd7,0xa5,0x3f,0x76,0x24, + 0x5f,0xc0,0xd7,0x3a,0x97,0x52,0xc8,0xc0,0x16,0xfc,0x85,0x5c,0xb6,0x84,0xce,0xdf, + 0x34,0xae,0x3e,0x98,0xff,0x00,0x0a,0xed,0x72,0xa5,0x0f,0xb3,0xf8,0x22,0xa3,0x2c, + 0x4d,0x6d,0x1d,0x46,0xfd,0x5b,0x3a,0x9f,0x0a,0xea,0x73,0xcf,0xa9,0x32,0xb1,0x50, + 0xbb,0x79,0x0a,0x31,0x9a,0xb5,0xe2,0x90,0xcf,0xaa,0x2f,0x98,0xd8,0x43,0x1a,0xec, + 0xcf,0x43,0xd7,0x34,0xdf,0x05,0x69,0xf1,0x43,0xa8,0xce,0x4e,0xe9,0x08,0x8d,0x48, + 0xde,0x7a,0x64,0x9f,0x4f,0xa0,0xae,0xce,0xe1,0xa3,0x9d,0x55,0x64,0xb7,0x81,0xc2, + 0xf2,0x03,0xc6,0x1b,0x1f,0x9d,0x7c,0xbe,0x23,0x19,0x1c,0x3e,0x3b,0xda,0xf2,0xdf, + 0x4b,0x1f,0xaa,0x65,0xd9,0x3d,0x5c,0x7e,0x45,0xf5,0x47,0x52,0xcd,0xca,0xf7,0xdf, + 0x66,0x79,0xa9,0x28,0x0e,0x03,0x06,0x3e,0xd5,0xa7,0xa3,0x68,0xd7,0x3a,0x9d,0xe4, + 0x29,0x1c,0x12,0x79,0x61,0x83,0x33,0x94,0x21,0x40,0x1c,0x9e,0x6b,0xb3,0x49,0xda, + 0x3c,0x88,0xc2,0xc6,0x07,0x40,0x8a,0x17,0xf9,0x52,0x34,0xd2,0x33,0x73,0x23,0x1f, + 0xa9,0xa5,0x5b,0x3a,0x72,0x83,0x8c,0x21,0x6b,0xf9,0x8b,0x07,0xc1,0x70,0xa3,0x56, + 0x35,0x2b,0x56,0xe6,0xe5,0x69,0xd9,0x2b,0x5e,0xde,0x77,0x2f,0x0d,0x3e,0x72,0x72, + 0x54,0x28,0xff,0x00,0x69,0x80,0xa2,0xe2,0x35,0x85,0xc2,0x87,0x0f,0xc7,0x25,0x4f, + 0x15,0x43,0xce,0x62,0x70,0x4e,0x78,0xcd,0x34,0xb9,0xcf,0xe3,0x5f,0x2f,0x6e,0xa7, + 0xea,0x1c,0xf6,0x2d,0xee,0x1f,0x85,0x26,0xf1,0xff,0x00,0xd6,0xac,0xe7,0xb8,0x7c, + 0xf5,0xef,0x8a,0xa7,0x35,0xec,0xaa,0x78,0x35,0x4a,0x9d,0xcc,0xe5,0x5d,0x47,0xa1, + 0xba,0x25,0xf5,0x3c,0x53,0x4d,0xca,0x01,0xf7,0xb8,0x15,0xca,0x5c,0xea,0xb7,0x0a, + 0x18,0x86,0x1c,0x7b,0x56,0x45,0xe6,0xbb,0x76,0xa3,0x21,0xc7,0x4c,0xf4,0xae,0xb8, + 0x61,0x1c,0xfa,0x9e,0x6d,0x6c,0xce,0x14,0x17,0x33,0x8b,0x3b,0xb9,0xaf,0x11,0xb6, + 0x2e,0xe0,0x3e,0x75,0xff,0x00,0xd0,0x85,0x59,0x3a,0x95,0xbc,0x0e,0x09,0x95,0x38, + 0x39,0xc6,0x6b,0xc5,0xf5,0x0f,0x13,0xdf,0xa9,0xe2,0x41,0xf2,0x9e,0x38,0xa9,0xb4, + 0x0d,0x52,0xe7,0x56,0xbd,0xf2,0x6e,0x24,0x25,0x5b,0xba,0xf0,0x47,0x15,0xe9,0x47, + 0x2a,0x93,0x49,0xf3,0x1f,0x25,0x5f,0x8b,0xe8,0xd3,0xe6,0x8f,0xb2,0x6e,0xfe,0x87, + 0xba,0xe8,0x3f,0x16,0xaf,0xbc,0x28,0xe8,0xd6,0x97,0xb0,0x96,0x8e,0xdf,0xec,0xc9, + 0xe6,0x40,0xae,0x11,0x37,0xef,0xe0,0x36,0x46,0x77,0x12,0x7f,0x1a,0xb9,0x77,0xf1, + 0xf3,0xc5,0xba,0xb6,0x42,0xeb,0x5a,0x84,0xa4,0x9e,0x96,0xa8,0xb1,0xff,0x00,0xe8, + 0x0a,0x2b,0xcb,0x34,0x29,0x7c,0xab,0x97,0x5d,0x88,0xdb,0x1b,0x01,0x99,0x41,0x35, + 0xe8,0x36,0x77,0xd2,0x85,0x00,0x60,0x0c,0x74,0x02,0xbd,0x7c,0x44,0xb1,0x35,0x65, + 0xcf,0x5a,0xb3,0x93,0xfb,0x8f,0x86,0xa5,0x98,0xe5,0xf4,0x23,0xcb,0x86,0xc1,0x41, + 0x2f,0x3d,0x7f,0x3b,0x89,0x26,0xb9,0xe2,0xff,0x00,0x10,0x1c,0x3a,0x6a,0x77,0x60, + 0xff,0x00,0xcf,0xe5,0xc3,0x63,0xff,0x00,0x1f,0x6a,0x7d,0xb7,0x82,0x7c,0x4b,0x77, + 0xf7,0x96,0xce,0xc4,0x1e,0x49,0x96,0x4c,0xe3,0xfe,0xf9,0x06,0xb4,0x21,0xbd,0x95, + 0x08,0xda,0xd8,0xfa,0x13,0x56,0xe4,0xd7,0x2f,0x0c,0x4d,0x19,0x93,0xe5,0x23,0xb8, + 0xae,0x2f,0xab,0xa9,0x3f,0x79,0xdf,0xd5,0xb3,0xa1,0x67,0xf8,0x98,0xaf,0xdd,0x46, + 0x30,0x5e,0x51,0x48,0xb5,0xa5,0xfc,0x18,0xbf,0xd4,0x5d,0x45,0xc7,0x89,0x20,0x89, + 0x48,0xe4,0x43,0x03,0x31,0xcf,0xa7,0x24,0x57,0x5b,0x61,0xfb,0x3a,0x68,0x0a,0xea, + 0xf7,0x7a,0xf5,0xed,0xcb,0x9c,0x65,0x32,0xa8,0xbf,0x4e,0x06,0x7f,0x5a,0xe7,0x74, + 0x4d,0x62,0xf0,0xe7,0x13,0xb2,0x14,0x1c,0x14,0x38,0x3d,0x2b,0xbb,0xd0,0x35,0x29, + 0xb5,0x16,0xf2,0xe7,0x21,0xf6,0x90,0x03,0x63,0xe6,0xed,0xce,0x6a,0x95,0x38,0x53, + 0x76,0xe5,0x47,0x1d,0x4c,0xd7,0x1d,0x5d,0x7b,0xd5,0x59,0xbb,0xa6,0x7c,0x09,0xf8, + 0x78,0x96,0xf9,0x3a,0x71,0x92,0x60,0x39,0x33,0xcf,0x23,0x83,0xf9,0xb6,0x3f,0x4a, + 0xb8,0x3e,0x0a,0xe9,0x96,0xb0,0x09,0x34,0x6b,0x6b,0x7b,0x66,0xcf,0x29,0x34,0x0b, + 0xc7,0xaf,0xcc,0xbf,0xd7,0xfa,0xd3,0x60,0xb9,0x9a,0xd7,0x25,0x24,0x6c,0xa1,0xc0, + 0xcf,0x7a,0xeb,0xf4,0x8d,0x42,0x4c,0x2b,0xed,0x5d,0xcb,0x8c,0x1c,0xb7,0x7f,0x6c, + 0xe2,0xba,0xa3,0x68,0xec,0x79,0x13,0xab,0x52,0xa7,0xc7,0x26,0xfe,0x67,0x9b,0xea, + 0xfe,0x06,0xd5,0x34,0x60,0xae,0xf6,0x8e,0xc0,0x74,0x92,0xd4,0x02,0x98,0xf5,0xc8, + 0xe4,0x63,0xe9,0x58,0x4e,0xb3,0xd9,0xb6,0x37,0x30,0x71,0xc8,0x51,0xc9,0x1e,0xbd, + 0x39,0xfd,0x2b,0xdc,0xad,0x7c,0x51,0x7f,0x23,0xc8,0xac,0xe8,0x55,0x72,0x06,0x50, + 0x67,0xf3,0xeb,0x5e,0x63,0xe2,0xbf,0x16,0xdd,0xea,0x4d,0x25,0xbc,0xb0,0x5a,0xaa, + 0x83,0xb4,0x3a,0x45,0x86,0xc0,0xc8,0xeb,0x9a,0xea,0x8b,0x91,0xc9,0x25,0x63,0x16, + 0x1f,0x10,0xea,0x16,0x64,0xa8,0xb8,0x38,0xe3,0x89,0x17,0x76,0x47,0xe3,0x5a,0x50, + 0x78,0xb5,0x9d,0x01,0x96,0x10,0xc3,0xf8,0x8a,0x13,0xd3,0xd7,0x1f,0xfd,0x7a,0xe6, + 0x1b,0xf7,0x93,0x85,0x63,0x90,0x40,0xfd,0x71,0x51,0xb1,0x31,0xca,0x81,0x4e,0x07, + 0x7f,0x7e,0x71,0x57,0xec,0xe1,0x2e,0x84,0x2a,0x93,0x8e,0x97,0x3b,0xb8,0x35,0xbb, + 0x4b,0x81,0xf2,0xc8,0x15,0xb3,0xfc,0x5c,0x53,0xae,0x6d,0xed,0x2f,0xd5,0x44,0xf0, + 0xc7,0x38,0x1c,0xe1,0x86,0x45,0x70,0xc4,0xe5,0x03,0x63,0x04,0x9c,0x12,0x3d,0xbf, + 0xfd,0x75,0x6e,0xda,0xea,0x68,0x89,0x09,0x2b,0x28,0x03,0x8c,0x1a,0x9f,0x63,0xfc, + 0xac,0xd1,0x57,0xfe,0x64,0x74,0x92,0x68,0xb1,0x3c,0xa1,0xe2,0xb8,0x78,0xd9,0x7a, + 0x47,0x32,0x2c,0xd1,0x8f,0x65,0x57,0x04,0x2f,0xd5,0x70,0x69,0x5a,0x3b,0x9b,0x45, + 0x24,0x5b,0x6e,0xc7,0x57,0xb3,0xb8,0x65,0x2d,0xee,0x56,0x5f,0x30,0x9f,0xa2,0xb2, + 0x0a,0xa9,0xa2,0x6a,0x53,0xdd,0xb8,0x49,0x48,0x6e,0xbc,0xe3,0x07,0xef,0x11,0x5b, + 0x79,0x21,0x41,0x0c,0x54,0xfb,0x56,0x4d,0xca,0x2e,0xcc,0xd1,0x59,0xab,0xa2,0x8c, + 0x7a,0xe3,0xae,0x04,0x97,0x49,0x01,0xf4,0xbd,0x85,0xa2,0xfc,0x01,0x1b,0xd0,0x7d, + 0x5a,0x45,0xad,0x08,0xf5,0x4b,0x85,0xb5,0x6b,0x96,0xb7,0x2f,0x68,0xbf,0xf2,0xf5, + 0x03,0x89,0xe0,0x1f,0x59,0x50,0x94,0xfc,0x37,0x1a,0x6a,0xa8,0x9e,0x25,0x2e,0x01, + 0x3c,0x8e,0x95,0x95,0x71,0xa0,0x5a,0x40,0xdf,0x6e,0xb7,0xf3,0x2c,0xef,0x07,0x22, + 0x7b,0x59,0x0c,0x52,0x0f,0xf8,0x12,0xe0,0xfe,0xb4,0x7b,0xad,0xda,0xc4,0xb7,0x25, + 0xd4,0xd6,0x17,0xd6,0xb7,0xb0,0xae,0x1d,0x5d,0x5f,0xd3,0xf8,0xbe,0x9e,0xbf,0x85, + 0x41,0x75,0xa7,0xdb,0xc9,0xfc,0x18,0x3d,0x8a,0x9c,0x57,0x19,0xad,0x78,0x8a,0xf7, + 0x4c,0x6f,0x32,0x46,0x5d,0x40,0xb7,0x56,0xba,0x5f,0xde,0x1f,0xac,0xc9,0xb6,0x53, + 0xf8,0xb9,0xad,0xbd,0x66,0x59,0x74,0x5f,0x0e,0xe9,0xda,0x8d,0xbc,0xac,0x5e,0xe5, + 0x41,0x30,0xbf,0x31,0xa7,0xd3,0xb9,0xeb,0xdc,0x9a,0xd1,0x41,0xc5,0xe8,0xc4,0xa4, + 0xa5,0xb9,0x3d,0xce,0x8b,0x0e,0xd2,0x53,0xe6,0x6c,0xf1,0xb8,0xd5,0x19,0x74,0x7f, + 0x2d,0x40,0x0a,0xdc,0x82,0x72,0xa7,0x35,0x6e,0xde,0xed,0x9d,0xe0,0x52,0x91,0xe6, + 0x48,0xcb,0xb3,0x05,0xc1,0xcd,0x69,0x32,0xed,0x4f,0x94,0x95,0xfa,0x55,0xf3,0x35, + 0xa0,0xb9,0x23,0x2d,0x51,0xc9,0x3d,0x8c,0xf1,0x11,0xb5,0x76,0x8c,0x71,0x9e,0xbf, + 0x4a,0x42,0xf2,0xa7,0x0c,0xc1,0x0f,0x70,0x40,0x15,0xd5,0x83,0xb8,0x00,0x40,0x35, + 0x5e,0x45,0x50,0xd9,0xda,0x0e,0x46,0x79,0xad,0x39,0xfb,0x90,0xe9,0xb5,0xd4,0xff, + 0xd9}; diff --git a/lib/libesp32/JPEGDEC/test_images/st_peters.h b/lib/libesp32/JPEGDEC/test_images/st_peters.h new file mode 100644 index 000000000..dffa105a1 --- /dev/null +++ b/lib/libesp32/JPEGDEC/test_images/st_peters.h @@ -0,0 +1,1845 @@ +// +// st_peters +// +const uint8_t st_peters[] PROGMEM = { 0xff,0xd8,0xff,0xdb,0x00,0x43,0x00,0x04,0x03,0x03,0x04,0x03,0x03,0x04,0x04,0x03, + 0x04,0x05,0x04,0x04,0x05,0x06,0x0a,0x07,0x06,0x06,0x06,0x06,0x0d,0x09,0x0a,0x08, + 0x0a,0x0f,0x0d,0x10,0x10,0x0f,0x0d,0x0f,0x0e,0x11,0x13,0x18,0x14,0x11,0x12,0x17, + 0x12,0x0e,0x0f,0x15,0x1c,0x15,0x17,0x19,0x19,0x1b,0x1b,0x1b,0x10,0x14,0x1d,0x1f, + 0x1d,0x1a,0x1f,0x18,0x1a,0x1b,0x1a,0xff,0xdb,0x00,0x43,0x01,0x04,0x05,0x05,0x06, + 0x05,0x06,0x0c,0x07,0x07,0x0c,0x1a,0x11,0x0f,0x11,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, + 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, + 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, + 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0xff,0xc0,0x00,0x11, + 0x08,0x01,0x40,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x02,0x03,0x05,0x06,0x07,0x08,0x01,0x00,0x09,0xff,0xc4, + 0x00,0x42,0x10,0x00,0x02,0x01,0x02,0x05,0x03,0x02,0x04,0x04,0x04,0x04,0x04,0x05, + 0x04,0x03,0x00,0x01,0x02,0x03,0x04,0x11,0x00,0x05,0x12,0x21,0x31,0x06,0x13,0x41, + 0x22,0x51,0x07,0x14,0x61,0x71,0x23,0x32,0x81,0x91,0x08,0x42,0xa1,0xc1,0x15,0x52, + 0xb1,0xf0,0x24,0x33,0xd1,0xe1,0x16,0x25,0x43,0x62,0xf1,0x34,0x72,0x92,0xa2,0x26, + 0x82,0xc2,0xff,0xc4,0x00,0x1b,0x01,0x00,0x02,0x03,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x03,0x04,0x05,0x06,0x07,0xff, + 0xc4,0x00,0x32,0x11,0x00,0x01,0x04,0x01,0x03,0x02,0x04,0x05,0x03,0x04,0x03,0x01, + 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03,0x11,0x21,0x04,0x12,0x31,0x41,0x51,0x05, + 0x13,0x61,0xf0,0x22,0x71,0x81,0x91,0xa1,0x14,0xb1,0xd1,0x32,0x42,0xc1,0xe1,0x06, + 0x15,0x52,0xf1,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xde,0x1f,0x26,0x86,0x9e,0xf6,0x81,0x01,0xd5,0xc9,0x4d,0xc6,0xf8,0x83,0xeb, + 0x5e,0x86,0xa4,0xcf,0x32,0xc8,0xce,0xa6,0x86,0xa1,0x2f,0xda,0x95,0x46,0xca,0x7e, + 0xa3,0xc8,0xc6,0x8f,0x9c,0x65,0x72,0xc8,0xc1,0xe1,0x62,0x15,0x6f,0x75,0xb7,0xf5, + 0xc0,0x15,0x2a,0xe9,0x97,0x90,0xca,0xd6,0x0b,0x71,0xb7,0xf6,0xc7,0x64,0x3c,0x83, + 0x61,0x73,0x08,0x07,0x0b,0x8f,0x6a,0xe1,0x7a,0x79,0xe5,0x8a,0x40,0x35,0xa3,0x15, + 0x6d,0x26,0xe2,0xe0,0xda,0xe3,0xe8,0x79,0xc0,0xc7,0x16,0xfe,0xbb,0xcb,0x63,0xa3, + 0xea,0x1a,0xa4,0x8a,0x74,0x92,0xe5,0x49,0xd2,0x00,0xb6,0xa1,0x7b,0x5b,0x15,0x39, + 0x13,0x4b,0x10,0x0e,0x3b,0x6c,0x76,0xe0,0x0a,0xe7,0x38,0x51,0x48,0x02,0xf8,0x50, + 0xd8,0xe3,0xc5,0xc1,0x31,0x45,0xa9,0x75,0x94,0x25,0x7c,0x90,0x2f,0x87,0xba,0x4a, + 0x97,0xa5,0xa3,0x55,0x63,0x71,0xf5,0xfa,0xe2,0x4a,0x82,0xa1,0xa4,0x95,0x63,0x91, + 0xa4,0x05,0x8d,0x81,0x4e,0x6f,0xf6,0xc0,0xab,0x33,0x28,0x2c,0x09,0xdd,0x6c,0x47, + 0x8f,0xdb,0x04,0xd3,0x44,0x86,0x48,0x99,0x1f,0xb2,0xea,0x35,0x5c,0x7b,0xf8,0xc5, + 0x67,0x21,0x58,0x30,0xac,0xed,0x93,0xc8,0x66,0x14,0xea,0xe2,0x60,0xc9,0x74,0x63, + 0xe9,0x24,0x9f,0xa7,0x83,0x89,0xde,0x98,0xc8,0x27,0x8a,0xb8,0x3d,0x4e,0xb8,0xe2, + 0x45,0x37,0x75,0x6d,0xc3,0x7d,0x70,0xe7,0x48,0xe4,0x6b,0x9b,0x47,0xdf,0x9c,0x09, + 0xa4,0x08,0x50,0x36,0xa3,0xb0,0xbd,0x89,0xfb,0xff,0x00,0xd3,0x1a,0xe6,0x51,0xd3, + 0x6b,0x0c,0x08,0x92,0x01,0x29,0x55,0xb1,0x63,0xcb,0x63,0x03,0xe4,0xac,0x2d,0x4d, + 0x6f,0x55,0x19,0x98,0x65,0x12,0xd3,0x43,0x0f,0xc8,0xc6,0x67,0x8a,0x4b,0x36,0x95, + 0x36,0x2a,0x4f,0xf9,0x6f,0xf5,0xf1,0x85,0x53,0x64,0xeb,0x5c,0xc3,0x51,0x60,0xe8, + 0xa0,0x9b,0x0d,0xef,0xf7,0xfb,0x8b,0x62,0xf6,0x28,0x99,0x20,0x55,0x8c,0x00,0x11, + 0x2c,0x07,0xb6,0xd8,0x1f,0x2e,0x80,0xeb,0x66,0x90,0x0e,0xdc,0x87,0x75,0xb7,0xef, + 0x8c,0xdb,0xd5,0x94,0xa3,0xc6,0x50,0x90,0xd1,0xa9,0x9a,0xe8,0xc0,0x5f,0x57,0xb7, + 0xd3,0x11,0x79,0x94,0x26,0x32,0x52,0x5f,0x5a,0xaa,0x03,0xaa,0xf6,0x0c,0x0e,0x2f, + 0xcf,0x44,0xb2,0xc1,0x22,0x28,0xe5,0x6f,0x72,0x71,0x58,0x93,0x29,0x14,0xf3,0x91, + 0x3a,0x96,0x8d,0xc9,0xf3,0xe3,0x6f,0x18,0x8d,0x72,0x84,0x20,0x72,0xba,0x64,0x57, + 0x8e,0x90,0x40,0xa3,0xb6,0x35,0x23,0x69,0x1b,0x8f,0x3f,0xeb,0x8b,0x1d,0x6c,0x91, + 0x51,0x96,0x10,0xa8,0x11,0xf6,0xc5,0xd5,0x79,0xf6,0xb8,0xc0,0x95,0x54,0x91,0x51, + 0x3c,0x55,0x10,0x36,0x8b,0xaf,0xa8,0xfb,0x0f,0x18,0xad,0x67,0x0f,0x26,0x61,0xdd, + 0x9e,0x95,0xc2,0x4d,0x11,0x31,0xa8,0x2c,0x46,0xb0,0x70,0xe3,0xe2,0x29,0x78,0x47, + 0x66,0x95,0xed,0x47,0x32,0xd1,0xca,0x83,0xb5,0x21,0x28,0x1b,0x92,0x86,0xdb,0x9f, + 0xae,0x2b,0xd4,0x95,0x70,0xd0,0xd4,0xcd,0x4c,0x41,0x9a,0x19,0x59,0x95,0xd0,0x1d, + 0x96,0xe7,0x62,0x2f,0xc6,0xc7,0xfa,0x60,0x7c,0xc3,0x36,0x90,0x01,0xdc,0x0c,0xb3, + 0x46,0x34,0xca,0x1f,0x72,0x0f,0x8f,0xef,0xc6,0x30,0x3c,0xdb,0xf8,0x89,0xa4,0xa1, + 0xce,0xf3,0x40,0xb9,0x25,0x55,0x45,0x3c,0x52,0x4b,0x08,0x70,0x3b,0x4d,0x2b,0x84, + 0x51,0x18,0x0d,0x72,0x09,0x69,0x18,0xdc,0x7e,0x65,0x55,0x37,0x5b,0xde,0xcd,0x24, + 0xd1,0xe9,0x9a,0x0c,0x9d,0x7e,0xbf,0x5f,0x92,0xae,0x9c,0xf3,0xf0,0xab,0x67,0xc5, + 0x5a,0xea,0x6e,0x9e,0xe9,0x3e,0xa5,0x92,0xa2,0x5b,0x03,0x45,0x24,0x30,0xe8,0x46, + 0x76,0xd6,0xeb,0x65,0x3a,0x55,0x83,0x59,0x6e,0x09,0x6b,0x80,0xa0,0x5c,0xfb,0x1e, + 0x36,0xcc,0x5a,0xa6,0x4c,0xcf,0x2e,0x76,0xa7,0xa9,0xa5,0x86,0x3a,0x68,0xea,0x53, + 0xf1,0x19,0xcc,0xda,0xd4,0x99,0x6a,0x49,0x7b,0x0f,0xc6,0x91,0x4e,0xe0,0x71,0xa4, + 0x0b,0x80,0x09,0xb7,0xd4,0xe7,0x39,0xc7,0x57,0x75,0x0e,0x69,0x9c,0x57,0xb5,0x3d, + 0x16,0x65,0x5f,0x10,0x72,0xb2,0x4a,0x22,0x82,0x9d,0x08,0x08,0xc8,0x5d,0xb7,0x50, + 0x55,0x55,0x02,0x9d,0xc8,0x53,0x7d,0xc8,0xc7,0xdd,0x5c,0xd5,0x59,0xa7,0xc3,0xfc, + 0xb1,0x69,0x92,0x5a,0xca,0x9e,0x9e,0xa8,0x92,0x9b,0x3c,0xa5,0x99,0x04,0xb2,0x65, + 0x42,0xe4,0x44,0x10,0x8e,0x21,0x21,0x24,0xd4,0x09,0xd2,0x18,0x29,0x36,0xb8,0xbf, + 0x07,0x53,0xab,0x93,0x5c,0xf7,0x00,0x28,0x01,0x8e,0xe4,0x5f,0x3f,0x63,0xd3,0xb7, + 0xa2,0xbe,0x38,0xfc,0xa1,0xf3,0x54,0xd8,0x33,0x1a,0x58,0x2b,0x8d,0x44,0x8e,0x44, + 0x74,0x0e,0x19,0x29,0xc0,0x90,0xb4,0x8c,0x41,0xb2,0xab,0x8f,0xca,0x41,0x17,0x07, + 0x90,0x6c,0x6e,0x78,0xc3,0x59,0xdc,0x33,0x6b,0x49,0xa6,0x4a,0x88,0x75,0x5d,0xae, + 0x2f,0x20,0x62,0x00,0x5d,0x3a,0xae,0x74,0x9d,0x85,0xc1,0xdf,0x8b,0xf2,0x31,0x1c, + 0xcc,0x92,0xac,0x55,0x31,0x3b,0x58,0xc6,0x5c,0x5d,0x4e,0xa2,0x46,0xc2,0xff,0x00, + 0x5b,0x01,0xfd,0xaf,0x87,0x72,0xda,0xe3,0xdc,0x8a,0x2d,0x71,0x53,0x47,0x34,0x1f, + 0x27,0xae,0x74,0x12,0x24,0x69,0x25,0x95,0xdc,0x82,0x36,0x20,0x1d,0x57,0x1e,0xa1, + 0x60,0x41,0xb8,0x18,0xe5,0x06,0x7c,0x40,0x85,0xa6,0xd0,0x0b,0xa5,0x35,0xa9,0x84, + 0x4c,0x35,0xea,0x2c,0xa0,0x83,0x6f,0xa1,0xbf,0xd6,0xc0,0x1f,0x27,0x7f,0x6c,0x6b, + 0x19,0x5f,0x56,0x66,0x74,0xfd,0x0c,0xf2,0x64,0xb4,0xfd,0x35,0x35,0x36,0x57,0x54, + 0xf3,0x50,0x24,0xe5,0xa2,0xae,0xca,0xd6,0x73,0x28,0xb4,0x32,0xd9,0x18,0xf6,0x9c, + 0x17,0x59,0xda,0x42,0x35,0xb2,0xa8,0xf5,0x16,0x4c,0x55,0x3a,0x37,0xa4,0x33,0xde, + 0xa5,0xea,0x29,0x68,0xfa,0x3f,0x2d,0xa3,0xea,0x09,0x72,0xd1,0x3d,0x44,0x91,0x55, + 0x15,0xec,0xd4,0x22,0x02,0x01,0x2a,0x58,0x03,0xa8,0x13,0xa5,0x43,0x0e,0x2f,0x7d, + 0xb0,0x1b,0x52,0xc7,0x06,0x51,0x98,0x43,0x2f,0x51,0xba,0x43,0x49,0x3b,0x25,0x36, + 0x5d,0x4f,0x09,0x97,0xba,0xdf,0x84,0xa3,0x5c,0xe1,0x44,0x7a,0x19,0x4c,0xa2,0xfa, + 0x8d,0x9a,0x21,0x75,0xb3,0x86,0x1d,0x18,0x1c,0xe6,0x5b,0x87,0xc9,0x0a,0x07,0x0a, + 0xfd,0xd0,0xb4,0xfd,0x21,0x9a,0xe4,0x39,0x9d,0x2f,0x51,0x75,0x4d,0x47,0x47,0xf5, + 0x1d,0x45,0x09,0xa3,0x95,0x73,0x39,0x04,0x70,0xc4,0xe2,0xec,0xf3,0x10,0x8b,0xdc, + 0x70,0xc0,0x2a,0xac,0x25,0x56,0xc5,0xc9,0xd5,0x20,0xd9,0x68,0x31,0x66,0x71,0xcb, + 0x52,0xd9,0x7e,0x50,0xcc,0xb4,0xd3,0xf6,0xd6,0x48,0x8c,0xc7,0xfe,0x2d,0x90,0x6a, + 0x66,0x53,0xb1,0x20,0xb2,0xb1,0x51,0x60,0x4f,0xa4,0x5a,0xf8,0x89,0xa4,0xaa,0x31, + 0xc9,0x2a,0x4d,0x1d,0x2d,0x78,0x92,0x09,0x04,0xa2,0xa1,0x59,0x96,0x20,0x53,0x42, + 0xba,0xd9,0x83,0x83,0x1f,0xa4,0xae,0xfb,0x10,0x2e,0x0a,0xdc,0x60,0xcc,0xb7,0x31, + 0xea,0x0a,0x5e,0x9d,0xac,0x34,0x8e,0xab,0x95,0x3c,0xb1,0x47,0x57,0x50,0x90,0x6a, + 0x36,0x00,0x91,0x16,0xb2,0x47,0xa5,0xb4,0x12,0x50,0x1b,0x13,0x60,0x6d,0x7b,0x63, + 0x3b,0xb6,0x90,0x31,0x5e,0xfe,0xc8,0xd6,0x56,0x85,0xd1,0xfd,0x4a,0x99,0x24,0x94, + 0xb9,0xcf,0x54,0x65,0xd4,0x75,0xbd,0x2b,0x02,0xd4,0x41,0x24,0x39,0x9c,0x4a,0x3e, + 0x76,0x69,0xe9,0xec,0x26,0x08,0x6e,0x58,0x04,0xd2,0xa1,0x57,0xfe,0x5a,0xb2,0xb5, + 0xc9,0x66,0x26,0xd1,0x92,0xfc,0x60,0xc9,0xfa,0x38,0xe4,0xd9,0xdd,0x7c,0x15,0xf9, + 0x97,0x52,0x41,0x4e,0x64,0xaa,0xa3,0x97,0x2f,0x68,0xc5,0x4d,0x0c,0xc8,0xc0,0xc0, + 0x2a,0x9a,0x3e,0xe2,0xa2,0xa5,0x80,0x7d,0x2c,0x34,0x33,0x69,0x23,0xce,0x21,0x43, + 0x15,0x56,0x65,0x9a,0xd2,0xd7,0xe6,0xb1,0x4f,0x3c,0x52,0xe6,0x1d,0xe9,0x23,0xa6, + 0xed,0xd2,0xb9,0x25,0xc3,0xb7,0x6f,0x6e,0xdc,0x4c,0xdc,0x0d,0x2b,0x65,0xf4,0xdf, + 0x6b,0x03,0xb3,0x67,0x9d,0x51,0x95,0xff,0x00,0x8f,0x47,0xd6,0x95,0xb4,0x03,0x24, + 0xcd,0x5e,0x8e,0xbe,0x94,0xc1,0x97,0xd5,0x54,0x66,0x75,0x7f,0x38,0xac,0xa2,0x9a, + 0x7a,0x99,0xeb,0x5c,0x89,0x51,0xc1,0xd2,0x4a,0x17,0xf4,0xa9,0x0d,0xce,0x85,0xa6, + 0x48,0x9a,0xe1,0xe6,0x17,0x65,0xbc,0x74,0xe7,0x1d,0x8f,0x38,0xfb,0x58,0xe1,0x11, + 0x41,0x65,0xb9,0x9d,0x45,0x21,0x92,0x79,0x5a,0x07,0xa3,0x85,0xd8,0x4b,0x05,0x34, + 0x61,0x82,0xd2,0xc7,0xaa,0xc2,0x33,0x23,0x0d,0x52,0x00,0x2c,0xb7,0x20,0x13,0xcd, + 0xf6,0xde,0x3f,0xe7,0x3e,0x56,0xae,0x09,0x67,0x5a,0x67,0x04,0x87,0x78,0xbb,0xbd, + 0xc8,0xd9,0x54,0xea,0x55,0x7e,0x35,0x26,0xd6,0x2b,0x71,0x70,0x6d,0x7e,0x31,0x2f, + 0x9c,0xe5,0x14,0x2f,0x56,0x94,0xd9,0x55,0x6e,0x61,0x99,0x46,0xd4,0xe4,0x2c,0x95, + 0xd4,0x69,0x06,0xa9,0xbf,0x98,0x22,0x2c,0x8d,0x68,0xc1,0x0d,0x67,0x62,0x0b,0x5c, + 0x1b,0x6f,0x8a,0xbc,0x29,0x0d,0x4d,0x69,0x58,0x7b,0x6b,0xde,0x71,0x1c,0x48,0xec, + 0x4e,0x92,0x4e,0xc0,0x9b,0x7b,0x01,0x7b,0x62,0xa1,0x56,0x7d,0x3b,0x25,0x36,0xbf, + 0x66,0xbb,0x22,0x45,0xbd,0xaf,0x81,0x2a,0xf2,0xc4,0x9a,0x22,0xac,0xb7,0x07,0xc6, + 0x15,0x43,0x5e,0x8e,0x8a,0x2f,0x89,0x68,0xca,0xc8,0x3d,0xf1,0xea,0x38,0x54,0x2e, + 0x77,0xeb,0x1f,0x87,0x14,0xd0,0x66,0x75,0xd3,0x53,0xc6,0x62,0x19,0x85,0x83,0x9b, + 0xdc,0x06,0xf7,0xdf,0xc7,0xd3,0x18,0x9e,0x69,0xd3,0xb5,0x19,0x76,0x62,0xf4,0x52, + 0x80,0xb2,0x28,0xf2,0x76,0x3b,0x1b,0x1b,0xfd,0x6d,0x8e,0xe2,0xcd,0xf2,0x98,0x6b, + 0x62,0x65,0x92,0x30,0xe0,0x8d,0xae,0x31,0x8d,0xf5,0xbf,0xc3,0x7a,0x7c,0xec,0xc9, + 0x2a,0x3c,0x91,0x4b,0xa4,0xa8,0x2a,0x7f,0x9b,0xc1,0x38,0xdb,0x0c,0xe5,0xb8,0x2a, + 0x97,0xc7,0xbb,0x85,0xcc,0xd8,0x91,0xa1,0x0a,0xf1,0x95,0x67,0xb5,0x8e,0xa0,0x3d, + 0xc5,0xb7,0xc7,0x99,0xbe,0x57,0x55,0x95,0x56,0x49,0x05,0x62,0x10,0xca,0x6c,0x1a, + 0xdb,0x36,0x05,0x81,0xda,0x36,0xba,0xf3,0x62,0x31,0xd6,0xc3,0x86,0x16,0x2e,0x0e, + 0x54,0xb7,0x6a,0x27,0xb3,0x12,0x42,0x69,0xd4,0x74,0xda,0xfa,0x7c,0x91,0xfa,0xe1, + 0xd8,0x63,0xa5,0x4f,0x51,0x62,0xc4,0x31,0xb0,0x3c,0x9f,0x6d,0xb1,0xe5,0x24,0x67, + 0x30,0xa2,0x48,0x62,0xa7,0x0d,0x34,0x44,0xfa,0x97,0xf3,0xe9,0x3f,0xea,0x2f,0x87, + 0x46,0x43,0x5e,0x95,0x2a,0x25,0xa6,0x78,0xa2,0x36,0xf5,0xc8,0x2c,0x00,0xf3,0xea, + 0xc5,0x58,0xe0,0x95,0x66,0x7a,0x2d,0x37,0xa0,0xb3,0x47,0x2c,0x62,0x65,0xed,0x82, + 0x0b,0x12,0x12,0xc0,0x82,0x7d,0xbd,0xf1,0xb4,0xe4,0x75,0xd1,0xd4,0xc4,0xa5,0x4e, + 0xeb,0xb1,0x07,0x9c,0x60,0x99,0x1d,0x31,0xcb,0x6a,0x23,0x94,0x48,0xe9,0xdc,0x16, + 0x4b,0x9b,0x8d,0xb9,0x07,0x1b,0x27,0x4c,0xd4,0xc4,0xc9,0x19,0x7f,0x4b,0x95,0x06, + 0xc7,0x6d,0xf1,0xce,0x94,0x0b,0xb5,0xa9,0xbc,0x2b,0xb9,0x52,0xe5,0x08,0xd8,0x13, + 0xb8,0xc1,0x15,0x34,0xaa,0x23,0x50,0xbe,0x96,0xb5,0xef,0x6c,0x35,0x03,0x2a,0x32, + 0xeb,0xdc,0x93,0x82,0xa7,0xa8,0xd5,0xb0,0x1c,0x63,0x29,0xe5,0x5a,0x9b,0xa1,0x56, + 0x0d,0x67,0x37,0x5b,0x6f,0xf7,0xc3,0x95,0x94,0x51,0xcd,0x3a,0x29,0x03,0x7d,0xed, + 0xef,0x6c,0x7d,0x11,0x11,0x82,0x79,0xbe,0xe7,0x09,0x15,0x2a,0xd5,0x01,0xc8,0xdc, + 0x6c,0x09,0xf0,0x30,0x28,0xdd,0xa8,0xab,0x9d,0x4d,0x48,0x25,0x80,0x53,0xc5,0xaa, + 0xe5,0xb8,0x5e,0x76,0xc5,0x5a,0x2a,0x77,0x8e,0x0a,0x99,0xaa,0x2c,0xed,0x1d,0x88, + 0x0a,0x3f,0x30,0xe3,0x71,0x8b,0xfe,0x6d,0x22,0xda,0x49,0x58,0x5b,0x4a,0xd8,0x62, + 0x02,0x94,0x45,0xa9,0xc7,0x6d,0x54,0x2c,0x7a,0x59,0x40,0xb8,0x20,0x8c,0x68,0x69, + 0xc2,0x42,0xb2,0x6c,0xff,0x00,0x32,0xa7,0x49,0x4a,0x28,0x24,0xc9,0xea,0x3e,0xa0, + 0xc4,0x6f,0x7f,0x3e,0x37,0xc7,0x20,0x7c,0x44,0xe9,0x1a,0xbe,0x9a,0xcd,0x69,0x28, + 0x72,0xfa,0x1c,0xba,0x9e,0x8a,0xa2,0xb2,0xa3,0x32,0xa5,0xad,0x6a,0x9e,0xc0,0x06, + 0x46,0xd0,0x61,0xfc,0x46,0xed,0xa2,0xa8,0x0a,0x01,0xb5,0xef,0x7f,0x56,0xf6,0x1d, + 0x51,0xf1,0x0a,0x8a,0xbb,0xa7,0xe1,0xcc,0x2b,0x62,0xa1,0x4a,0x81,0x04,0x6e,0xd0, + 0xa9,0x93,0x48,0x75,0x41,0xa8,0x82,0xde,0xfa,0x6f,0xf7,0xb6,0x38,0xdb,0xad,0x33, + 0xe7,0xeb,0x6a,0xa3,0x98,0xcb,0x45,0x3a,0xe7,0xa9,0x50,0xd1,0x25,0x38,0x8c,0x10, + 0xd4,0xce,0x1d,0xb4,0x30,0xb0,0x2a,0x62,0x1e,0x90,0xc6,0xe4,0xea,0x37,0xb1,0x03, + 0x14,0xf8,0x94,0x91,0x36,0x10,0xc3,0xc9,0xcf,0xa5,0x75,0xcf,0xb2,0xab,0x80,0x3f, + 0x79,0x3d,0x10,0xb4,0x79,0x74,0x73,0x55,0xac,0x29,0xd4,0x34,0x70,0xe5,0xf1,0xcf, + 0x2b,0x9a,0xda,0x5a,0x23,0x32,0x24,0x43,0x47,0x71,0xe4,0x8c,0xae,0xa7,0x40,0x2e, + 0x06,0xa2,0x45,0xc7,0x00,0x5c,0xe3,0x4e,0xcc,0x2a,0x3a,0x9b,0xa8,0xb2,0x8c,0xd3, + 0xa0,0xfa,0x27,0xa7,0xe3,0xe9,0x18,0x73,0x24,0x19,0xad,0x34,0x10,0xa7,0xe1,0x57, + 0xd1,0x34,0x7f,0x8a,0xb3,0xca,0xfc,0x4c,0x08,0x8c,0x8d,0x22,0xc0,0x8d,0x17,0x1a, + 0x16,0xed,0x45,0xf0,0xf7,0xa8,0xba,0xab,0xa4,0xa0,0xa6,0xea,0x68,0xe8,0x32,0xea, + 0xdc,0x89,0x16,0x9f,0x20,0x69,0xa6,0x0b,0x23,0x5c,0xab,0x9f,0x44,0x6e,0x13,0x52, + 0x85,0xd2,0x35,0x11,0xbb,0x31,0x6b,0x6d,0x8d,0x27,0xa0,0xfa,0xc0,0x65,0x19,0x74, + 0x5d,0x37,0x35,0x26,0x71,0x9d,0x2d,0x14,0x2d,0x3a,0xd7,0x65,0x14,0x7f,0x3b,0x1b, + 0x26,0xaf,0x5f,0x72,0x38,0x9d,0x99,0x34,0xc8,0x5d,0x14,0xae,0xb5,0x70,0xa2,0xd6, + 0x20,0xa8,0xaf,0x47,0xa5,0x31,0x92,0x24,0x76,0xd0,0xfe,0x30,0x01,0xf5,0x6f,0x7f, + 0x63,0xba,0x79,0x64,0x04,0x5b,0x45,0x91,0xee,0xd7,0x36,0x75,0xdf,0x46,0x66,0x7f, + 0x0f,0x7a,0x82,0x0c,0x93,0x35,0xcc,0x20,0xcc,0xaa,0x12,0x9e,0x09,0x75,0x65,0xec, + 0x59,0x04,0xce,0xa6,0xca,0x08,0xb1,0x04,0x1d,0x4b,0xf7,0x1a,0xad,0xb8,0xc5,0x79, + 0x68,0xa0,0xaf,0xaf,0x8d,0x18,0x4d,0x14,0x0a,0xbe,0xb9,0xe2,0xa7,0x0e,0x51,0x89, + 0xd2,0x09,0xb1,0x00,0x8d,0x44,0x0e,0x76,0xbf,0xd3,0x1d,0x11,0xf1,0xf5,0xfa,0x2b, + 0x3d,0xe9,0x7a,0x6c,0xf7,0xa6,0xeb,0x72,0xac,0xc3,0xa9,0xa3,0xa9,0x8d,0x24,0xf9, + 0x39,0x87,0x7d,0xa0,0xd2,0xc0,0x99,0xe3,0xd6,0xae,0x81,0x2e,0x2c,0x59,0x2f,0xa9, + 0x94,0x1b,0x63,0x10,0x39,0xcc,0xb4,0x7d,0x17,0x06,0x4d,0x97,0xc3,0x12,0x2c,0x19, + 0x9c,0xd5,0xaf,0x52,0x26,0x7d,0x55,0x7a,0xa1,0x58,0xd6,0x27,0x51,0x60,0x04,0x7a, + 0x5c,0x83,0x7d,0xcb,0x9d,0x80,0xdf,0x1c,0x6d,0x54,0x22,0x19,0x9c,0xc0,0xef,0x97, + 0xf8,0x57,0xc6,0xf2,0xf6,0x82,0x54,0x46,0x53,0x51,0x5d,0x93,0x57,0x2c,0xf9,0x5c, + 0x52,0xd5,0xce,0x63,0x92,0x9a,0x68,0xa1,0xac,0x92,0x2e,0xec,0x4c,0x34,0xc8,0x8c, + 0x63,0x2a,0xda,0x59,0x6e,0xa5,0x6f,0x63,0xbd,0xc1,0x02,0xd8,0x92,0x8e,0x04,0x8c, + 0xd6,0x64,0x19,0x7e,0x7c,0x29,0xf2,0xfa,0x99,0x44,0xcb,0x05,0x55,0x43,0x25,0x21, + 0xb4,0x64,0x83,0x39,0x56,0x31,0x87,0x50,0x00,0x5f,0x4b,0x12,0xc5,0x45,0xd6,0xd8, + 0x67,0x26,0xa8,0x87,0xa7,0x3a,0x8a,0x96,0xbe,0x9a,0xbe,0x92,0xa1,0xe8,0x64,0x49, + 0x92,0x43,0x4e,0xd5,0x30,0x19,0x04,0x77,0x0a,0x50,0x85,0x32,0x5a,0xfa,0x2c,0x6c, + 0x2f,0xcd,0xc5,0xef,0xb4,0xb7,0x52,0x7c,0x26,0x8b,0x26,0xed,0x74,0x97,0x49,0x65, + 0x95,0x39,0xe2,0xd3,0xc6,0x6a,0x67,0xcd,0xa8,0xa7,0x14,0xec,0x8f,0x1b,0x47,0x2a, + 0xc4,0x0c,0xa4,0x99,0x86,0xa5,0x62,0xe4,0x05,0x66,0x1e,0x91,0xb8,0x00,0xc2,0x1a, + 0xe6,0x97,0x39,0xe0,0x01,0xdf,0xfc,0x7b,0xff,0x00,0x6c,0xe7,0x6d,0xc5,0x5a,0xe7, + 0xca,0x3a,0x06,0xab,0xb4,0xe9,0x55,0x0f,0x7b,0xb4,0xcd,0xd9,0x96,0x32,0xcc,0xfa, + 0x50,0xb8,0x11,0x28,0x56,0xdc,0x05,0x00,0x96,0xb7,0x23,0x7b,0x5c,0x82,0xf2,0x89, + 0x62,0xcc,0x2b,0xa8,0x11,0x32,0x94,0xae,0x98,0x42,0x61,0x45,0xa7,0xa8,0x78,0xdd, + 0xe6,0x24,0x88,0xa6,0x62,0xe4,0xad,0xc3,0xb2,0x1b,0x0b,0x2b,0x05,0xb5,0x96,0xf7, + 0xc1,0xff,0x00,0x2b,0x9c,0x64,0x11,0xd3,0x66,0x39,0x7d,0x64,0x34,0xf5,0x10,0x24, + 0x12,0x35,0x76,0x5b,0x2b,0x77,0x62,0x90,0xdd,0x7b,0x6a,0x41,0x0c,0x1b,0xd5,0xa5, + 0x99,0x7d,0x37,0xb0,0x04,0x8c,0x25,0x69,0x22,0x81,0xaa,0x1a,0xcf,0x0d,0x1b,0x30, + 0x67,0xa4,0x8e,0x73,0xdb,0x0a,0xaf,0x74,0x0c,0xdf,0x98,0xaa,0x8f,0x7b,0x13,0xfe, + 0x99,0x1c,0xf0,0x3a,0xe5,0x59,0x61,0x5b,0xba,0x12,0xab,0x2a,0xaa,0xea,0x9c,0x91, + 0xba,0xfd,0xa3,0x8f,0x2d,0x6a,0x98,0xa6,0xcd,0x51,0x22,0x59,0x19,0xc2,0x79,0x28, + 0x2c,0x7d,0x45,0x50,0x36,0x96,0x17,0x17,0xdc,0x5e,0xd8,0x4f,0x5c,0x75,0xe4,0xbd, + 0x65,0x2e,0x59,0x3e,0x6d,0x4b,0x43,0x4d,0x36,0x5b,0x95,0xa5,0x25,0x3c,0x14,0x10, + 0x32,0x43,0x14,0x4b,0x2c,0xb2,0x2e,0x84,0xd5,0x68,0xc8,0xee,0x85,0x54,0x5b,0x05, + 0x0a,0xa7,0x9c,0x42,0x8a,0xda,0xfa,0x3c,0xbe,0x58,0x5a,0x69,0xcd,0x24,0x85,0x27, + 0x48,0x15,0x14,0x44,0x64,0xd0,0x54,0xcc,0x6e,0x0d,0xde,0xc4,0xef,0x7d,0x86,0xc6, + 0xfe,0x2b,0x15,0x75,0x55,0x48,0xa8,0xd1,0xbc,0x7d,0xd4,0x91,0x90,0x28,0x2a,0xcc, + 0x0f,0xd0,0x7d,0x37,0xfd,0x48,0xc5,0x11,0x92,0xef,0x87,0xa2,0x1e,0x88,0x88,0x33, + 0x42,0xed,0x54,0x51,0x67,0x50,0xeb,0xdb,0x95,0xd5,0x3b,0x92,0x7b,0x9f,0x24,0x03, + 0xb9,0x1b,0xed,0xb7,0x17,0xc2,0xf2,0xaa,0x6a,0x78,0x2b,0xa1,0x96,0x48,0x22,0x6a, + 0x78,0x1c,0x87,0x88,0xb3,0x6a,0x28,0x6e,0xba,0xc1,0x00,0x82,0x54,0xfa,0xbc,0x5a, + 0xd6,0x18,0x51,0x31,0x2c,0xf7,0x86,0xf1,0x2a,0xc5,0xb4,0x85,0xc1,0x2c,0xd6,0x00, + 0xde,0xdb,0x7e,0x97,0xdb,0x6f,0x6c,0x01,0x33,0x9c,0xc2,0x66,0x55,0x2a,0x1d,0x63, + 0x00,0xc8,0xcf,0xa0,0x85,0x1b,0x59,0x97,0xea,0x48,0xb6,0xf7,0x38,0xb4,0x53,0xf0, + 0x05,0x04,0x17,0xeb,0x0e,0x5f,0x58,0x54,0x80,0x4e,0x2d,0xf9,0x6d,0x5e,0xb5,0x17, + 0x38,0xcd,0xa8,0x2a,0x09,0x61,0x73,0xc6,0x2d,0xb9,0x6d,0x55,0xad,0xbe,0x3d,0x49, + 0x0b,0x32,0xbb,0x29,0x12,0x2d,0xb1,0x03,0x9b,0xe5,0x23,0xfe,0x6c,0x77,0x37,0x3e, + 0xa4,0x1c,0x1c,0x48,0x51,0xcf,0x7b,0x6f,0x83,0x65,0x22,0x44,0x23,0x15,0x70,0x53, + 0xf2,0x17,0x36,0x75,0xe7,0xc3,0xc8,0x26,0x59,0x5a,0x10,0x41,0xd4,0x59,0x09,0xfc, + 0xe0,0x11,0xef,0xe7,0xdb,0xf6,0xc6,0x15,0x2c,0x12,0x51,0x54,0xc9,0x0c,0xea,0xcb, + 0x24,0x4e,0x55,0x83,0x0d,0x37,0xb7,0xd3,0x1d,0xb5,0xd4,0x59,0x77,0x71,0x1d,0xe3, + 0x17,0x00,0x6e,0xa7,0xc8,0xf3,0x8e,0x6c,0xf8,0xa1,0x90,0x98,0xeb,0x65,0xaf,0x88, + 0x6d,0x60,0x18,0x5b,0x72,0x07,0x1f,0xd0,0xe3,0xab,0xa6,0x9b,0x3b,0x4a,0xc9,0x2b, + 0x3a,0x85,0x46,0xc9,0x85,0x4c,0x99,0x85,0x22,0x51,0xef,0x2f,0x70,0x00,0x0f,0x9f, + 0xbe,0x36,0x0c,0x9d,0x59,0xcc,0x94,0x95,0x72,0xaa,0x54,0xae,0xea,0xe4,0x59,0x49, + 0xdf,0x62,0xbe,0xd8,0xc8,0xfa,0x6d,0xcc,0x19,0xed,0x2c,0x8a,0xe6,0x32,0x85,0x89, + 0x23,0xe8,0x31,0xb5,0x65,0xc2,0x46,0x61,0x34,0x89,0xa8,0x3d,0xec,0x6d,0xc2,0x9c, + 0x59,0xa8,0xc1,0x42,0x2e,0x13,0xd4,0xf4,0xa2,0xa2,0x0f,0x94,0xac,0x89,0x29,0xe6, + 0x17,0x31,0x32,0x2e,0xc7,0x6f,0xfa,0xdf,0x13,0x19,0x55,0x4d,0x45,0x0c,0x29,0x04, + 0xf3,0x77,0x00,0x6f,0x4b,0x80,0x36,0x1e,0xc7,0x04,0x65,0xd0,0x17,0x55,0xf9,0x9b, + 0x2b,0x0f,0xf9,0x6f,0xc9,0x1b,0x70,0x70,0x5d,0x25,0x3c,0x31,0x44,0x56,0x75,0x5d, + 0x77,0xdd,0xb1,0x8a,0xd5,0xea,0xcd,0x92,0xd5,0x4d,0x5c,0xa1,0xa6,0x25,0x55,0x76, + 0x22,0xe3,0x16,0x0a,0x54,0x8c,0xca,0x53,0x55,0xed,0xf5,0xc5,0x0a,0x80,0x9a,0x49, + 0xd1,0x10,0x96,0x88,0xb5,0x99,0x83,0x5c,0xe2,0xdb,0x4d,0x2f,0x6d,0xd5,0x9b,0x8f, + 0x0c,0x3f,0xbe,0x2b,0x21,0x32,0x97,0xae,0xb4,0x48,0xc1,0x76,0x00,0x62,0x26,0xa5, + 0x9a,0x08,0x1a,0xae,0x29,0x41,0x52,0x2f,0xa5,0xbd,0xc6,0x1c,0xcc,0x33,0x48,0x5b, + 0x4c,0x62,0x5b,0x48,0xdb,0x8b,0x73,0x8a,0xf4,0x99,0x9c,0x94,0x69,0x69,0x6c,0xf0, + 0x19,0x00,0x52,0x0e,0xf7,0x3c,0x93,0xfa,0x62,0x34,0x1a,0x50,0x95,0x37,0x05,0x78, + 0xaf,0xa7,0x02,0x4f,0x50,0x75,0xd5,0x62,0xb6,0x3f,0x4c,0x47,0xb3,0x45,0x03,0xbc, + 0x8a,0xbd,0xb6,0xb0,0x16,0xfa,0x7b,0x62,0xbb,0x9b,0xf5,0x04,0x34,0xd3,0x23,0x25, + 0x48,0x56,0x6d,0x8c,0x60,0xef,0x87,0x6a,0x73,0x88,0x6a,0x74,0x91,0x27,0xa8,0x2e, + 0xc0,0x70,0x47,0x9b,0xe2,0xe0,0xc2,0x92,0xd6,0x51,0xfc,0x43,0x53,0x36,0x61,0xd2, + 0xf9,0x9e,0x5b,0x49,0x51,0x3a,0x3d,0x5d,0x2e,0xae,0xe5,0x35,0x33,0x55,0x49,0x66, + 0x75,0x0d,0x18,0x89,0x48,0x2c,0x48,0xf6,0xe0,0x13,0xcf,0x18,0xe3,0x5c,0xab,0x27, + 0xce,0x7a,0x8f,0x31,0x8f,0x28,0x97,0x5d,0x09,0xab,0xfc,0x26,0xef,0x44,0x63,0x8a, + 0x1a,0x88,0xee,0x51,0x46,0x95,0x36,0x72,0xe1,0xb6,0xf3,0x76,0x27,0x7d,0xc7,0x74, + 0x75,0xb5,0x9f,0x2d,0xa7,0xa8,0xd2,0xab,0x32,0xca,0x57,0x56,0xaf,0x56,0x9f,0x1f, + 0xdf,0x19,0x14,0x3d,0x03,0x91,0x0e,0xaf,0x6e,0xaa,0x58,0x6a,0x13,0x35,0x32,0x2c, + 0xb6,0x8e,0x62,0x90,0x89,0x02,0x69,0x2f,0xa0,0x0b,0x6a,0x3b,0x12,0x7d,0xc7,0xd4, + 0xe2,0xbd,0x5e,0x81,0xda,0xb6,0xb5,0xcc,0xab,0x18,0xca,0xad,0xb3,0x08,0xc9,0x05, + 0x54,0x32,0x28,0x33,0xfc,0xff,0x00,0xa7,0xa8,0x3a,0xa3,0xa8,0x12,0x01,0x04,0x27, + 0xe7,0x6a,0x27,0xa8,0x90,0xd1,0xcd,0x51,0x0d,0x95,0x9d,0x61,0xd0,0x15,0x62,0x8a, + 0xeb,0xaa,0xed,0x63,0x23,0x6a,0xd4,0xd6,0xd3,0x71,0x2a,0x6b,0xba,0x8b,0x27,0xeb, + 0x79,0x26,0xe9,0x58,0xcd,0x1c,0x79,0xf4,0xc9,0x5a,0xb2,0xd1,0xd1,0x34,0xee,0x62, + 0x99,0x2c,0x75,0x1f,0xf9,0x22,0x54,0x29,0x6b,0x82,0x15,0x75,0xff,0x00,0xf8,0xee, + 0x09,0xf8,0xda,0x96,0x60,0x25,0x12,0x29,0x57,0x56,0xdc,0x30,0x22,0xc4,0x1f,0xd3, + 0x0d,0x64,0xbd,0x23,0x45,0x43,0x53,0x96,0xc3,0x97,0xd5,0x57,0x65,0xf9,0x4d,0x15, + 0x23,0xd1,0x47,0x94,0x41,0x3e,0x9a,0x22,0x8f,0x7d,0x4c,0xd1,0xdb,0x53,0x39,0xb9, + 0x25,0x8b,0x12,0x4f,0x38,0xba,0x5f,0x0c,0x3c,0xb1,0xe6,0xf1,0x9e,0xb6,0x31,0x7f, + 0x6f,0xd8,0x61,0x54,0x35,0x03,0x82,0x31,0xd9,0x73,0x67,0x5b,0x66,0x59,0x95,0x7e, + 0x57,0x2e,0x49,0x94,0x67,0xff,0x00,0xf8,0xa5,0xe8,0x33,0x08,0x92,0xb2,0x55,0x65, + 0x95,0xea,0x2a,0x25,0xfc,0x30,0xf0,0xb9,0x01,0xe4,0x5d,0xb4,0xb6,0xe5,0x55,0x8f, + 0x9d,0x5a,0xb1,0x9f,0x43,0x90,0x66,0x99,0x9e,0x5b,0x32,0xa2,0xa3,0x88,0x64,0x58, + 0xa5,0x51,0x29,0xd6,0xa9,0xea,0xf5,0x32,0xdb,0xf2,0x02,0xae,0x0b,0xde,0xd7,0x52, + 0x0f,0x8b,0xf4,0xe7,0xf1,0x0d,0x93,0x64,0xfd,0x39,0x2f,0x45,0x35,0x3d,0x36,0x6b, + 0x57,0x57,0x48,0x2a,0x97,0x2d,0xa4,0x85,0x0f,0xca,0x29,0x04,0x76,0xf5,0x2d,0xbc, + 0x48,0xf7,0x2a,0xac,0x08,0x00,0x6d,0xc1,0xc7,0x35,0xe7,0xd9,0xf6,0x6c,0x99,0x5c, + 0x34,0xa3,0x30,0x76,0x8a,0x68,0xc8,0xd0,0xfa,0xd5,0x99,0x5c,0xea,0x90,0x36,0xe4, + 0x85,0x2e,0x3f,0x2f,0x07,0x4d,0xc8,0x1b,0xe3,0xc7,0xea,0xa2,0x7c,0x33,0xf9,0x77, + 0x67,0x19,0xc9,0xcf,0xd7,0x38,0xf5,0x5d,0x28,0xdc,0x1c,0xdb,0xa5,0x5a,0xa9,0x99, + 0x62,0x8c,0xc2,0xd0,0x0e,0xfb,0xaa,0x90,0xd1,0xb8,0xb4,0x66,0xf7,0x1e,0xf7,0xda, + 0xc2,0xdb,0x5a,0xe7,0x0f,0xe4,0xd5,0xac,0x64,0x6a,0x62,0xcc,0x86,0x74,0x24,0x59, + 0x42,0x02,0xe3,0x7b,0x9f,0xd2,0xff,0x00,0xbe,0x22,0x67,0x91,0x05,0xcd,0x34,0xf6, + 0x23,0x7d,0x7a,0xac,0x1d,0x87,0x2d,0x6f,0x03,0x9b,0x7f,0x5c,0x4a,0xe5,0x94,0x60, + 0x9f,0x9e,0xac,0x8c,0xbc,0x51,0x0b,0x46,0x0f,0xe6,0x95,0xbc,0x14,0x03,0xcf,0x1c, + 0xf3,0x7c,0x2c,0x81,0xbb,0x0d,0xa6,0xa5,0x39,0x49,0x5f,0x21,0xa2,0xa8,0xa6,0x48, + 0xe8,0x50,0x15,0x8d,0xa6,0xa8,0x90,0x0d,0x61,0x23,0x2c,0xca,0xa8,0xe7,0x74,0xb9, + 0x3b,0x85,0xfc,0xd6,0x17,0xc0,0xd4,0x25,0xa8,0x8d,0x4b,0x55,0xb2,0x3a,0xf6,0x82, + 0xa7,0x70,0x33,0x17,0x70,0xdb,0x94,0x61,0xb0,0x1c,0x73,0xcd,0xf0,0x1d,0x44,0xfd, + 0xb2,0x4f,0x6e,0x5d,0x2d,0xf9,0x84,0x8a,0x41,0x55,0xb6,0xe0,0x83,0xfa,0xfe,0xd8, + 0x67,0x5b,0xd5,0xc3,0xa6,0xfd,0xf8,0x50,0x90,0xfa,0xce,0x95,0x09,0x61,0x60,0xa4, + 0x1f,0x1a,0x79,0xbf,0x9c,0x51,0xb2,0xc7,0xa2,0x96,0xbd,0xcc,0xea,0x27,0xcd,0x02, + 0xf6,0x16,0x57,0x2c,0x0f,0xe0,0xc4,0xc6,0x46,0x64,0xbd,0xcd,0xc0,0xf1,0x7e,0x47, + 0xbd,0xf0,0xd5,0x35,0x21,0xa4,0x29,0xf3,0x68,0xe1,0x0e,0xb5,0xd2,0x1d,0x75,0x6e, + 0x2c,0xc6,0xc4,0xdf,0x7b,0x9d,0xf6,0x3e,0x41,0xdb,0x0b,0xa2,0x44,0xa9,0xa5,0x99, + 0x44,0x91,0x40,0x46,0xfd,0xf5,0x20,0x38,0x51,0x63,0xe7,0x7b,0x5c,0x7e,0xa7,0xed, + 0x8f,0xa7,0x45,0xa7,0x55,0x95,0x12,0x5a,0x9a,0x89,0x9b,0x53,0x4b,0x61,0x22,0x2d, + 0xdb,0x50,0xd2,0x06,0xf7,0xba,0xf9,0xbf,0x9c,0x58,0x31,0xf0,0x85,0x02,0x44,0xc2, + 0x14,0x28,0x94,0xcc,0x63,0xa7,0x2c,0x15,0xd2,0x13,0xea,0x66,0x6b,0x7a,0x45,0xf6, + 0xb9,0xdb,0x7f,0xdf,0x07,0xcb,0x32,0x54,0x3c,0x45,0xe9,0xc8,0x00,0x39,0xed,0x1b, + 0x1b,0x6d,0xc1,0xf6,0xb7,0xed,0x89,0x4c,0x8e,0x80,0xd3,0xd4,0x43,0x2d,0x67,0x6f, + 0xe6,0xcc,0x6c,0x62,0x84,0x0d,0x7d,0xbd,0x2b,0xcf,0xb5,0xf7,0x37,0xb7,0xb8,0xe7, + 0x10,0x15,0x59,0x84,0x2d,0x40,0xdf,0x27,0x03,0x03,0x33,0xaf,0x7a,0xa8,0xc6,0x57, + 0x57,0x27,0x48,0x63,0xc0,0xc5,0x40,0x97,0x90,0x06,0x7d,0x54,0x5f,0xa6,0xb9,0x7b, + 0x07,0xb1,0x5c,0x59,0x68,0x99,0x97,0x15,0xdc,0x9e,0x12,0x40,0xdb,0x6c,0x5a,0xe9, + 0xe0,0xb2,0xa9,0xc7,0xb2,0x72,0xce,0x14,0xf5,0x0c,0xc6,0xc3,0x13,0x0b,0x2e,0xa5, + 0xb6,0x2b,0xd4,0x46,0xc4,0x03,0x89,0xe8,0x54,0x15,0x1b,0xe2,0xa2,0x99,0x45,0x66, + 0xd2,0x48,0x8c,0xaa,0xa3,0x5a,0x10,0x75,0x03,0x8c,0x1f,0xe2,0x0f,0x50,0xa5,0xe6, + 0x4a,0x58,0xa3,0xef,0x23,0x15,0xb4,0x8b,0x75,0xdb,0xfa,0x13,0xf4,0xc7,0x43,0x54, + 0xd3,0x86,0x61,0xf4,0xc6,0x2b,0xf1,0x63,0xa3,0xfb,0x19,0x5d,0x6e,0x6d,0x45,0x17, + 0x72,0x78,0x24,0x13,0x38,0x17,0xbb,0x28,0xfc,0xc0,0xfd,0x2d,0x8d,0x10,0x6d,0xde, + 0x2d,0x56,0xfb,0xac,0x2c,0x02,0x88,0x19,0xf3,0x68,0xd1,0xcb,0x46,0xf2,0x48,0x55, + 0xb4,0x8d,0xc1,0xf3,0x8d,0xf7,0x2d,0x68,0xc5,0x30,0x0d,0xe9,0x2b,0xb1,0x07,0xc6, + 0x30,0x5c,0xaa,0xaf,0xe5,0x2b,0x85,0x43,0x8b,0xde,0xe4,0x91,0xc8,0xbf,0xb6,0x34, + 0x2a,0x2e,0xa1,0x69,0xd2,0x77,0x43,0xf9,0x80,0x6b,0x83,0xc5,0xbf,0xf8,0xc7,0x47, + 0x50,0xc2,0xea,0x59,0x62,0x70,0x0b,0x58,0xa0,0xa8,0x84,0x39,0x49,0x4e,0xf6,0xd8, + 0x9c,0x05,0x99,0xcf,0x2d,0x3c,0xab,0x25,0x20,0xd6,0xcd,0xca,0xea,0xb0,0x23,0x15, + 0x2c,0x97,0xa9,0xd5,0x2a,0xed,0x23,0xa7,0xfc,0xb0,0x6e,0xfb,0x12,0x4e,0x0a,0xcc, + 0xf3,0x73,0x3b,0x6a,0xa2,0x0c,0xc4,0xf2,0xc0,0xec,0x06,0x31,0x6c,0x20,0xad,0x1b, + 0x85,0x2b,0xae,0x59,0x5b,0x1a,0x98,0x8b,0xa8,0x40,0xc7,0xc9,0xe0,0x9c,0x58,0x73, + 0x1a,0x85,0x14,0xba,0x51,0xb4,0x90,0x2e,0x08,0x36,0xdf,0x18,0xdd,0x37,0x51,0xfc, + 0xac,0xca,0xb2,0x3b,0xca,0x97,0xbd,0x88,0xe3,0xfd,0x9c,0x5b,0xa8,0xf3,0x9a,0x8a, + 0x88,0xcc,0xea,0x23,0x96,0x1d,0x24,0x15,0x07,0x7f,0xbe,0x03,0x98,0x42,0x81,0xd6, + 0xbe,0xcc,0x33,0xda,0xea,0xa9,0xe9,0x96,0x92,0x98,0x4b,0x30,0x56,0x66,0xb1,0xb5, + 0xec,0x38,0x1f,0xd7,0x10,0xd5,0x5d,0x4d,0x55,0x53,0x97,0xa4,0x54,0x70,0x99,0x25, + 0x91,0xf4,0xad,0xce,0x9d,0x27,0xdf,0x7f,0xbe,0x03,0x83,0x3c,0x34,0xf9,0xba,0xb7, + 0xaa,0x35,0x53,0x62,0xc4,0xdc,0xb0,0xfe,0xd8,0x51,0xaa,0xa7,0x85,0xe5,0x9e,0x89, + 0xbb,0x45,0xda,0xf2,0x06,0x5d,0xce,0x2e,0x6b,0x6b,0xa2,0x52,0x6f,0xaa,0xa8,0x66, + 0xa7,0x32,0xa5,0xab,0x0b,0x98,0xeb,0x32,0xb2,0x77,0x0e,0xa1,0xe2,0xe7,0x61,0xf6, + 0xc4,0xa3,0x54,0x15,0xa7,0xee,0x47,0x34,0x91,0x32,0x5b,0x47,0x90,0xde,0x6d,0x86, + 0xba,0x97,0x36,0x7a,0xc8,0xe3,0xd6,0x43,0x83,0x70,0xa4,0x9d,0xc5,0xfc,0xe2,0x06, + 0x2a,0xb9,0x44,0x7a,0x0b,0xdd,0x07,0x00,0xef,0x6c,0x6f,0x68,0x2e,0x02,0xd6,0x57, + 0x10,0x0a,0x97,0xce,0x33,0x59,0xab,0x9a,0x18,0xa5,0x93,0x54,0x70,0xa6,0xc0,0x71, + 0xa8,0xf2,0x70,0x14,0x47,0xdb,0x02,0x16,0x67,0x6d,0xf0,0xfc,0x37,0xbe,0x34,0x34, + 0x50,0xa0,0xa8,0x26,0xcd,0xa9,0x13,0x55,0x15,0x1d,0x34,0xb5,0x55,0x72,0x08,0x60, + 0x85,0x4b,0x3b,0x9f,0x03,0xfb,0x93,0xc0,0x1e,0x4e,0x22,0xba,0xa7,0xae,0xd7,0x22, + 0xe8,0x26,0xea,0x2c,0xbe,0xea,0xcc,0x21,0x68,0x4c,0x94,0xe2,0x57,0x8c,0xbb,0x03, + 0xa6,0x48,0xb5,0x02,0x2e,0x2e,0xa6,0xdb,0xa6,0xab,0x90,0x6d,0x63,0xee,0x7d,0x4f, + 0x57,0x59,0x92,0x54,0xc3,0x96,0x50,0x51,0x66,0x55,0x63,0x4b,0xc7,0x4f,0x59,0xf9, + 0x4b,0x29,0xd4,0x0a,0x8b,0x10,0x5c,0x30,0x1a,0x75,0x7a,0x6f,0xf9,0xb6,0xb8,0x38, + 0x46,0x7d,0x36,0x6f,0x95,0xe6,0xd9,0x8f,0x4e,0x51,0x50,0xe6,0x74,0x15,0x54,0x13, + 0x54,0x4b,0x94,0xd3,0xc3,0xa9,0x58,0xa4,0xb1,0xac,0x55,0x12,0xab,0x3b,0xdb,0xb7, + 0x29,0xd6,0x75,0x9d,0x46,0xce,0xf6,0x00,0x36,0xdc,0xaf,0x10,0xd5,0x3f,0x4f,0x80, + 0x30,0x45,0x63,0xb9,0xf5,0xf4,0x16,0xb4,0x41,0x10,0x93,0x27,0xd8,0x41,0xf5,0xe7, + 0xc4,0x7c,0xc7,0xe2,0x4e,0x63,0x1d,0x26,0x7d,0x99,0x55,0xae,0x57,0x41,0x55,0x2c, + 0xf4,0x14,0x0f,0x18,0x89,0xe1,0xd4,0x5b,0xfe,0x65,0xac,0x01,0x54,0xd2,0xb7,0x20, + 0x9f,0x1e,0xf8,0xce,0xeb,0x2a,0xe2,0x86,0x8c,0xd3,0xa4,0x70,0x54,0x95,0x89,0x60, + 0x0a,0x91,0xe8,0x98,0x30,0x42,0x23,0x7b,0xaf,0x3b,0xb9,0x24,0x72,0xc5,0x56,0xf8, + 0x3e,0xba,0xad,0xb2,0x68,0xea,0x28,0xb3,0x0c,0x9a,0x5a,0x3c,0xc2,0x96,0x46,0x57, + 0x82,0xad,0xb5,0x38,0x63,0xa4,0x31,0x6b,0xd9,0xc3,0x7a,0x7f,0x29,0xe2,0xc0,0x9f, + 0x37,0x82,0xa9,0x83,0xbd,0x35,0x45,0x46,0x55,0xdc,0x64,0xa7,0x92,0x29,0x1a,0x48, + 0x63,0x28,0x54,0xb2,0x82,0xa6,0xfc,0x8b,0x35,0xc5,0xfd,0xc7,0xd4,0x63,0xc4,0xbb, + 0xcc,0x74,0x84,0xbc,0xda,0xeb,0x00,0x1a,0x28,0x21,0x0c,0xb0,0x66,0x2f,0x51,0x3d, + 0x55,0x45,0x3c,0x2d,0x4d,0x0a,0x1e,0xdf,0x68,0xc7,0xde,0x28,0xca,0xbd,0xa5,0x08, + 0x84,0x2b,0x69,0xf5,0x5d,0xac,0x3d,0x06,0xfb,0x90,0x0c,0x85,0x62,0xd3,0xd0,0x28, + 0xa0,0xa7,0x88,0x49,0x6d,0xe5,0x95,0xa3,0x28,0xcc,0x4a,0xee,0xe4,0x1f,0xca,0x10, + 0x7a,0x76,0xdb,0x66,0x6b,0x0d,0x43,0x11,0xcd,0x59,0x2b,0xc1,0x05,0x35,0x50,0x8d, + 0x84,0x1d,0xd7,0x87,0x61,0xa8,0x96,0xdd,0x87,0x91,0x6b,0xee,0x76,0xf1,0xf7,0xc1, + 0x59,0x45,0x5b,0xc2,0xff,0x00,0x37,0x57,0x54,0x88,0xf6,0x92,0x35,0x79,0x5d,0xc4, + 0x84,0xe9,0x00,0x8b,0x8d,0xb7,0xbd,0xae,0x6f,0xba,0x8f,0xbe,0x19,0xde,0x89,0x89, + 0x4a,0x8a,0x29,0x69,0x73,0x28,0x69,0x6b,0x29,0xe4,0x92,0xe3,0x80,0xba,0x06,0xb0, + 0x09,0xb8,0x1c,0x37,0xef,0x73,0x71,0xf6,0xc2,0xa2,0xa4,0xab,0x79,0x1f,0xb6,0xf1, + 0x46,0x80,0x37,0x70,0xbb,0x7a,0x5a,0xfc,0x12,0x37,0x3b,0xed,0xbf,0x1e,0x70,0x5c, + 0x2d,0x34,0xf3,0xd4,0xa3,0xa3,0x38,0x55,0x25,0x24,0x66,0x0c,0xc1,0x80,0xd2,0x58, + 0x7d,0x6f,0x6d,0xed,0xe7,0x13,0x59,0x74,0x74,0x54,0x10,0x43,0x53,0x52,0xcf,0x2d, + 0x5c,0x94,0xa5,0x64,0x69,0x09,0x32,0x46,0xfb,0x02,0x16,0xe3,0x4a,0x8b,0x81,0xe7, + 0xeb,0xee,0x31,0x95,0xce,0x23,0xa6,0x52,0xda,0x1f,0x2d,0x9e,0x0a,0x68,0x5d,0x5e, + 0x05,0x99,0xd5,0x49,0x69,0x5a,0x3d,0x28,0xaf,0xb7,0xa5,0x05,0xfe,0xff,0x00,0x5f, + 0xe9,0x81,0xe4,0xcc,0x7b,0xfa,0x4a,0xc2,0xb4,0xfa,0xe5,0x2e,0xe6,0x05,0x0a,0xc5, + 0xf4,0x90,0x38,0xb5,0xb6,0x3e,0x7d,0xf0,0xba,0xa5,0x97,0x4a,0xc5,0x34,0xee,0xcb, + 0x0c,0x37,0x75,0x20,0x11,0xdc,0x26,0xeb,0x63,0xb0,0x07,0xfa,0x9b,0xf8,0xc4,0x4b, + 0x4b,0x2a,0x49,0x3c,0xbd,0xc5,0xf5,0x3e,0x96,0xf4,0x81,0x76,0xf6,0x3f,0x5d,0xf9, + 0xc5,0x02,0x36,0xb8,0x92,0x39,0x53,0x94,0x52,0xbc,0xe6,0xa8,0x24,0x4f,0x28,0x29, + 0x19,0x25,0x51,0xf5,0x33,0x6e,0x0d,0x85,0xad,0x7d,0xb6,0xb6,0xdc,0x7b,0xe2,0x46, + 0x79,0xa6,0x3d,0xa5,0xaa,0x08,0x22,0x52,0x34,0x51,0xa4,0x57,0x76,0x16,0xb9,0xb9, + 0xb9,0xb0,0xf2,0x40,0xe3,0x6f,0x38,0x82,0xcb,0xaa,0x1a,0xa5,0x9e,0xaa,0x39,0x0c, + 0x28,0xa5,0x86,0xab,0x0b,0x9d,0xbe,0xbc,0x8b,0x5e,0xe7,0xf4,0xc7,0x95,0x35,0x3a, + 0x6a,0xc3,0x48,0xc8,0xd2,0xad,0x95,0x7b,0x8c,0x15,0x6c,0x6c,0x6e,0x6c,0x78,0xdc, + 0x1b,0x6d,0x7d,0xb1,0xa1,0xa2,0x9e,0x2c,0x5d,0x28,0x7d,0x57,0xe9,0xf6,0x47,0x54, + 0xaf,0x02,0xea,0xb1,0x27,0x92,0x31,0x67,0x8e,0x75,0xd2,0x31,0x46,0xc9,0x1d,0x20, + 0x1d,0xa4,0xbe,0x95,0x36,0xdf,0x91,0x8b,0x6d,0x3f,0xa8,0x02,0xb7,0xc7,0xb1,0x78, + 0xca,0xce,0x0e,0x14,0x82,0x56,0xac,0x6c,0x37,0xb6,0x25,0x20,0xcd,0x57,0x4f,0x38, + 0xa8,0xe6,0x0c,0xf1,0x90,0x46,0xdb,0xef,0x8f,0xa3,0xab,0xd0,0x97,0x27,0x15,0xed, + 0xb4,0x6d,0x5d,0x96,0xb4,0x4a,0x37,0x6b,0x62,0x37,0x3e,0x0b,0x3e,0x57,0x59,0x1f, + 0x26,0x48,0x99,0x7f,0x71,0x88,0x9a,0x1c,0xc8,0x33,0x59,0xd8,0x7d,0xf0,0x3e,0x79, + 0x9f,0xd3,0xd3,0x21,0x49,0x58,0x00,0x45,0x8d,0xfe,0xb8,0x60,0xd3,0x6a,0x5e,0x17, + 0x2d,0x2e,0x4f,0x3a,0x55,0x49,0x4c,0x0a,0xf7,0x23,0x72,0xbb,0x1e,0x4f,0x8b,0x0c, + 0x5b,0x7a,0x56,0x28,0x7e,0x66,0x6a,0x4a,0xe4,0x01,0x88,0x00,0xf8,0xb8,0xe7,0x0a, + 0xea,0xe8,0xa9,0xb2,0xbc,0xf4,0x55,0xd1,0x0f,0x4d,0x40,0x60,0xc3,0xeb,0x6d,0x88, + 0xf6,0xff,0x00,0xe3,0x11,0xf4,0x19,0x82,0xc9,0x58,0xd3,0xcf,0x72,0xe2,0x3b,0x47, + 0xe7,0x7f,0xaf,0xe9,0xb6,0x3b,0x66,0xe4,0x65,0xae,0x78,0xa6,0xb9,0x11,0xd5,0x0a, + 0x99,0x7d,0x78,0x7a,0x77,0x46,0x8a,0x41,0xa9,0x46,0x9d,0xc5,0xbc,0x7d,0xbe,0xb8, + 0xfb,0xfc,0x4a,0xb2,0x1c,0xb2,0xfa,0x1a,0x13,0x21,0x16,0x37,0xb1,0xb5,0xb9,0x18, + 0x32,0xa2,0x37,0xad,0xa2,0xef,0x94,0x45,0x65,0x7d,0x05,0x67,0x3e,0xa1,0xf5,0x0b, + 0xe3,0xdf,0x11,0xb2,0xd5,0xac,0x51,0x49,0x12,0xb1,0x99,0x23,0xb2,0xd9,0xf7,0x24, + 0x7b,0xdf,0x08,0x05,0x80,0x11,0x26,0x8d,0xa4,0xd0,0x67,0x26,0x91,0x98,0x55,0xa7, + 0x78,0xde,0xeb,0xe2,0xc7,0xea,0x71,0x6c,0xcb,0x33,0x7e,0xec,0x4e,0x32,0xf8,0x5d, + 0x4b,0xee,0x6c,0xba,0x82,0xfe,0xdb,0x0c,0x51,0x23,0x8e,0x29,0x88,0x2e,0xc5,0x6c, + 0x77,0xfb,0x63,0x44,0xe8,0xfa,0xca,0x2a,0x08,0x24,0xa0,0x79,0x56,0x48,0xa7,0x62, + 0x56,0x40,0xba,0x49,0x3f,0x53,0x81,0x2b,0x40,0x17,0x48,0xc6,0xe2,0x4d,0x28,0xea, + 0xc9,0xa3,0x96,0x9a,0x46,0x52,0x35,0xa1,0xb5,0x8a,0x80,0x41,0xbd,0xf9,0xc4,0x3a, + 0x66,0xec,0x5a,0x38,0xe4,0x53,0xa0,0x1f,0x53,0x5f,0x7c,0x4d,0x75,0x2e,0x42,0x99, + 0x62,0x7c,0xc5,0x19,0xd4,0xb2,0x38,0xd3,0xa4,0xdc,0x0f,0xb8,0xc5,0x60,0x3a,0x86, + 0x0b,0x3c,0x56,0xd3,0xe0,0x1b,0x61,0xa3,0x68,0x23,0x08,0x3c,0x90,0x51,0x92,0xca, + 0x65,0xd4,0xb2,0x22,0xbc,0x41,0xc9,0x53,0xed,0x7f,0x63,0xe3,0x03,0x48,0x54,0x49, + 0x60,0x34,0x28,0xda,0xc7,0xfb,0xe1,0xda,0x60,0x1d,0xd5,0x09,0x52,0x37,0x17,0x3f, + 0xdf,0x1a,0x47,0x4d,0xaa,0x50,0xd0,0x49,0x03,0x76,0xe6,0x69,0x94,0x02,0x64,0x8d, + 0x58,0x93,0xc0,0x04,0x6f,0x7d,0xb6,0xc5,0x8e,0x77,0x96,0x38,0x48,0x06,0xf5,0x9c, + 0x04,0x5b,0x5d,0x6f,0x7c,0x3d,0x1c,0x60,0xfd,0x0e,0x2f,0xf5,0x5f,0x0c,0xab,0x67, + 0x76,0x92,0x82,0x90,0xd3,0x46,0xc4,0x69,0x52,0x76,0x5e,0x2f,0xfd,0x31,0x1f,0xff, + 0x00,0x81,0x2b,0xa1,0xd6,0x75,0xc7,0xe8,0x52,0xc5,0x49,0xf5,0xed,0xf4,0xf6,0xfa, + 0xe1,0x9b,0x34,0x67,0xaa,0x53,0x1b,0x87,0x44,0x06,0x5f,0x4f,0xde,0x68,0xd9,0x29, + 0xda,0x69,0x22,0x1a,0x9d,0x87,0x00,0x7d,0x6d,0xfe,0xce,0x32,0x8e,0xb6,0xe8,0xae, + 0x83,0xf8,0x75,0x9e,0xc5,0x99,0xe5,0xf9,0x1d,0x17,0x50,0x66,0xb9,0x85,0x74,0x12, + 0xc3,0x92,0xb5,0x77,0xff,0x00,0x40,0x8b,0x7b,0x3c,0x54,0xaa,0x0c,0xb3,0x21,0x73, + 0xff,0x00,0x2f,0x4b,0x01,0x6b,0xda,0xc2,0xe3,0x68,0xcb,0x67,0xac,0xcb,0x5d,0xa1, + 0x45,0x56,0x32,0xa6,0x85,0x52,0x7d,0x24,0xdb,0x6d,0x40,0x6f,0xcd,0xb6,0xc7,0x32, + 0xfc,0x4a,0xeb,0x7e,0xa1,0xcc,0xba,0xaf,0x2b,0xa4,0x32,0xd2,0xd5,0xcb,0x43,0x58, + 0xf1,0xe5,0xb3,0x65,0x06,0x38,0x2a,0xe7,0x9d,0x75,0x44,0x65,0x12,0xa9,0x2f,0x00, + 0x66,0x24,0x2c,0x64,0x9e,0x0b,0x6c,0x58,0x1c,0x73,0x7c,0x49,0xec,0x63,0x03,0x9c, + 0x2c,0xf4,0xc5,0xf6,0xf7,0xfe,0xd6,0x8d,0x38,0x24,0xd5,0xfc,0xfa,0x2a,0x5f,0xc4, + 0xfa,0x59,0x73,0x6c,0xe2,0xb3,0x37,0xe9,0x9e,0x9d,0xce,0x20,0xca,0x0d,0x39,0x39, + 0x85,0x7c,0x8f,0x2d,0x5c,0x32,0xce,0xae,0x12,0x43,0xae,0xc0,0x46,0xab,0xe9,0x42, + 0x8d,0x66,0x07,0x9b,0x02,0x31,0x42,0xcb,0xe2,0x0b,0x3d,0x3a,0x54,0x8f,0x95,0x64, + 0x91,0x6c,0xef,0x1e,0xbd,0x16,0x60,0xc0,0x08,0xef,0xa5,0xc9,0x1c,0x07,0xb6,0xe2, + 0xd8,0xb7,0xe6,0x5d,0x51,0x2c,0xb4,0x2d,0x47,0x0c,0x50,0xad,0x53,0xd3,0x54,0x49, + 0x59,0x53,0x14,0xef,0x19,0x56,0x9c,0x9f,0x98,0x81,0x9e,0xf6,0x70,0xd6,0xb9,0x0c, + 0x0f,0xe6,0x20,0x1f,0x48,0x26,0xa7,0xa2,0x1a,0x9a,0x99,0xa6,0x84,0x77,0xa4,0x48, + 0x0b,0xab,0xcb,0x25,0x87,0x70,0x0b,0xb9,0xd3,0x63,0x7b,0x5e,0xdb,0x5a,0xfc,0xdf, + 0xc6,0x3c,0x8c,0xcf,0x69,0x93,0x73,0x3e,0x65,0x74,0x99,0x6d,0x14,0x81,0x93,0x32, + 0x9e,0x86,0xbe,0xac,0x51,0x28,0xb4,0xe1,0xe3,0x61,0x51,0x08,0x3a,0xd6,0xe6,0xea, + 0x53,0x85,0xb8,0xb5,0xc0,0xfb,0x71,0x83,0xaa,0x3a,0x75,0x8e,0x4b,0x94,0xd5,0x53, + 0xcb,0x42,0xf4,0xb5,0x9d,0xd7,0x11,0xad,0x6a,0xc9,0x52,0x85,0x08,0x59,0x0b,0xc4, + 0x3d,0x48,0x2e,0x7d,0x37,0xfc,0xc1,0x6e,0x09,0xdf,0x0d,0xcc,0x1f,0x44,0x74,0xcd, + 0x20,0x24,0xde,0xe0,0x5b,0x48,0x16,0x16,0xdc,0x9e,0x7d,0x86,0x3d,0xcb,0xaa,0x62, + 0x9b,0xe6,0xa3,0x85,0xe2,0x89,0x22,0x8d,0x98,0xb3,0x12,0xd2,0x31,0x27,0xc1,0xb6, + 0xf7,0x27,0xcf,0x1f,0x5c,0x67,0x2e,0xf8,0x6c,0x23,0x69,0xe2,0x23,0xa7,0x59,0xa3, + 0x24,0xca,0xae,0x91,0xa8,0x06,0x41,0x64,0x53,0xee,0x00,0x37,0x24,0xdf,0xdb,0xfa, + 0x6e,0x14,0x3d,0x45,0x57,0x06,0x5b,0x2c,0x66,0x5b,0xc6,0xba,0x95,0x55,0x23,0x3d, + 0xd3,0x1d,0xbc,0xc9,0xc2,0x81,0xbd,0x8d,0x89,0xe7,0xc5,0xb0,0xcd,0x54,0xd6,0xa2, + 0x15,0x00,0xcf,0x11,0x63,0x66,0x62,0x07,0xe5,0x1f,0xcb,0x71,0xef,0x7e,0x77,0xfa, + 0xe0,0x7a,0x01,0x34,0x35,0x59,0x7d,0x43,0xb8,0x82,0x39,0xdd,0x87,0x76,0xa0,0x68, + 0x46,0x4e,0x0d,0x89,0xe7,0x6f,0x3e,0xe4,0x61,0x5a,0xc1,0x44,0x9c,0xa2,0xde,0xe5, + 0x4e,0x97,0x94,0x52,0x9f,0x94,0x44,0x9a,0x4f,0xc3,0x31,0x2b,0x1b,0xdc,0xda,0xe5, + 0xb7,0xd2,0x0b,0x0d,0xb6,0xb0,0xf3,0x6c,0x7b,0x2d,0x13,0xc2,0x41,0xcd,0x1c,0xba, + 0x4d,0x11,0x9d,0x83,0x1d,0x0a,0x92,0x13,0x73,0x19,0xf1,0xb0,0xdc,0x83,0xe7,0xec, + 0x30,0x5c,0x15,0xf3,0x43,0x35,0x72,0xd4,0x34,0x72,0x1d,0x02,0x40,0xb1,0x82,0xcc, + 0x41,0x3c,0x13,0xc5,0xff,0x00,0x7f,0xa0,0xf7,0x0a,0x1a,0xc9,0x58,0xcd,0x04,0x86, + 0xd3,0x53,0xdd,0x40,0x9c,0x83,0xa5,0x8d,0x80,0x26,0xe2,0xdc,0xff,0x00,0xa6,0x2a, + 0xcf,0x40,0x12,0xe5,0x09,0x58,0xd3,0x31,0x2e,0xb3,0x24,0xba,0x4e,0x98,0xd6,0x9d, + 0x43,0x6a,0x16,0xfc,0xde,0x06,0xdb,0xfe,0xd8,0x8b,0x31,0x37,0xcc,0x2c,0x42,0x06, + 0xee,0x8b,0x97,0x46,0x03,0x6d,0x85,0x8f,0xd4,0x9e,0x7f,0x6c,0x3d,0x22,0x57,0xab, + 0xb8,0x9c,0x34,0x15,0x25,0xc2,0x6c,0xbe,0xfb,0xeb,0x2d,0xc0,0xe3,0xc7,0xf4,0xc3, + 0x35,0x10,0xc9,0x4f,0x32,0x8a,0x79,0x5a,0xb1,0xda,0xeb,0x3c,0x8b,0x19,0xd2,0x1c, + 0x9d,0x86,0xae,0x0f,0x23,0xf5,0x36,0xc6,0x96,0xd8,0xc7,0x74,0xf4,0xbf,0x49,0x72, + 0x9c,0xc6,0x11,0x7a,0x80,0x6e,0x5e,0xc5,0x85,0xf7,0x18,0xb9,0xe5,0xd9,0xdc,0x2a, + 0xa0,0x96,0x0c,0xb6,0xda,0xc7,0x19,0x54,0x19,0x92,0xc4,0xe5,0x66,0x1a,0x5a,0xde, + 0xa0,0x47,0x3f,0x4b,0xe2,0x6e,0x86,0x55,0x72,0x9f,0x28,0x09,0x8c,0x8f,0x7e,0x31, + 0xed,0xe4,0x87,0xba,0xe6,0x36,0x45,0xa6,0x4b,0x3d,0x35,0x6a,0xd8,0xb0,0xb9,0xe3, + 0x11,0x72,0x03,0x11,0x2b,0x7b,0xae,0x23,0xa8,0xe1,0x66,0x55,0x91,0x25,0x60,0xc4, + 0x5b,0x6c,0x01,0x5d,0x9a,0x4d,0x47,0x53,0xdb,0x90,0x13,0x7f,0xca,0x47,0x0d,0x8c, + 0xc2,0x3c,0xd0,0x56,0x97,0x61,0x7b,0x36,0x70,0x68,0x2b,0x0d,0xee,0xc8,0x64,0xd1, + 0x61,0xe0,0xe0,0x4e,0xa7,0xce,0x25,0xaa,0xcb,0x97,0xe5,0xe0,0x2d,0x24,0x8d,0xa5, + 0x4f,0x95,0x38,0x47,0xce,0xac,0x8c,0xf2,0xb6,0xfd,0xc6,0xe0,0xef,0xbe,0x3d,0x9e, + 0x68,0xd6,0x99,0xa6,0x60,0x1a,0xfb,0xaf,0x9b,0x1c,0x69,0x0c,0x00,0x83,0x4a,0xb2, + 0xeb,0x0a,0x91,0x99,0x65,0x95,0x59,0x8c,0x51,0x09,0xe4,0x01,0xc6,0xea,0x34,0x6e, + 0x3e,0x87,0xf5,0xc4,0x54,0x59,0x5d,0x4c,0x4a,0xe6,0x68,0xc4,0x41,0x00,0xd5,0xa8, + 0x5f,0x9f,0x63,0x8d,0x71,0x5e,0x1c,0xc6,0x86,0x2b,0xaa,0x6b,0xbe,0xa0,0xd6,0xe1, + 0xbc,0x8b,0xe2,0x1f,0x3a,0xca,0x0c,0xf4,0x0d,0x2d,0x3c,0xba,0xbb,0x76,0xd4,0x02, + 0x5c,0x85,0xbf,0x8b,0x7d,0xff,0x00,0xa6,0x34,0x32,0x5f,0xed,0x55,0x16,0x0e,0x54, + 0x0d,0x0d,0x21,0xab,0xa0,0x49,0x90,0x82,0xdb,0xdf,0x40,0x37,0x24,0x7d,0x0f,0x91, + 0x81,0xe4,0xe9,0x82,0x94,0x89,0x35,0x33,0x34,0xaf,0x29,0xf5,0x5b,0x80,0x3c,0xdf, + 0xed,0xce,0x2c,0xdd,0x2c,0xb0,0x54,0xd2,0xbd,0x3d,0x5c,0x5a,0x26,0x86,0x5d,0x2c, + 0x54,0x9d,0x2c,0x3c,0x37,0xed,0x8b,0x98,0x8e,0x08,0x07,0xe4,0x42,0x84,0x69,0x36, + 0x1b,0x62,0xb7,0x48,0x58,0xea,0x09,0x83,0x43,0x85,0xac,0x2a,0xa3,0x23,0xae,0xa6, + 0x52,0xcf,0x01,0x00,0x1b,0x6d,0xed,0xe0,0xe0,0x7a,0x79,0x9e,0x37,0x52,0xa4,0x8d, + 0x26,0xf6,0xc6,0x8d,0x9f,0x98,0xc3,0x4e,0xb2,0x5b,0x4b,0x7e,0x55,0xfe,0x56,0x1e, + 0x71,0x43,0xa8,0x8e,0x30,0xea,0xd1,0xa8,0x52,0xfb,0xec,0x76,0x1f,0x4c,0x6c,0x8d, + 0xc5,0xe3,0x2b,0x3b,0x9b,0xb4,0xe1,0x4b,0x2f,0x51,0x54,0x59,0x04,0xe9,0x1c,0xc8, + 0x2e,0x77,0x1b,0xef,0x88,0xc9,0x43,0xd4,0xca,0xd2,0x90,0x48,0x63,0x61,0xf6,0xf6, + 0xc3,0xb4,0x94,0xd1,0x48,0x1a,0x29,0x5c,0x21,0x3b,0x86,0x3f,0xdb,0x16,0x1c,0xb7, + 0x20,0x42,0x89,0x30,0x97,0xb9,0x1e,0xc1,0xc9,0x16,0x1c,0xec,0x3d,0xf7,0xc4,0xf8, + 0x63,0x53,0x2e,0x55,0xc8,0x13,0x41,0xdd,0x49,0x20,0xf1,0x7b,0x5c,0x0e,0x71,0xad, + 0xf4,0x61,0x5b,0xa0,0x64,0x12,0x4d,0x21,0x56,0x21,0x86,0xc0,0xf3,0xcf,0x38,0x94, + 0xa2,0xe8,0xfa,0x5e,0xd5,0x24,0x0f,0x4c,0x95,0x10,0xc8,0x64,0x3a,0xa4,0x92,0xfa, + 0x1b,0x4d,0xec,0xab,0x6d,0xfc,0xdf,0x71,0xc0,0xe7,0x17,0x7c,0x9f,0xa5,0xe9,0xa8, + 0x68,0xe9,0xe2,0x8c,0x5c,0xc4,0x2c,0x0d,0xf8,0x17,0xe3,0x18,0x26,0xd4,0x31,0xc2, + 0x96,0x98,0xe2,0x2d,0x36,0xa5,0xf2,0xdd,0x4f,0x00,0xef,0x58,0x13,0xbd,0x81,0xbd, + 0xb1,0x50,0xeb,0x88,0x3e,0x56,0x1e,0xf5,0x39,0x78,0x1d,0x5b,0x76,0x55,0xb8,0x20, + 0xe2,0xe1,0x02,0x1a,0x57,0x21,0xb7,0x07,0x8c,0x05,0x9f,0x40,0x33,0x0c,0xbe,0x45, + 0x04,0x2c,0x80,0x7a,0x4e,0x30,0xc6,0xea,0x7d,0xf4,0x5a,0x1c,0x2d,0xb4,0xb9,0x8f, + 0xe2,0x6f,0x57,0x4b,0xd1,0xd9,0x48,0xcf,0x29,0x20,0x57,0x73,0x98,0x53,0x42,0xd0, + 0xb5,0x3b,0x4a,0x48,0x72,0x75,0x69,0x55,0x65,0x3a,0x8d,0xb6,0xe7,0x7b,0x0b,0x6f, + 0x8e,0x2d,0xea,0x39,0xcc,0xf3,0x56,0xd7,0xe9,0x15,0x30,0x56,0x57,0xd4,0x1b,0xd5, + 0x84,0x4a,0xad,0x5a,0x99,0xac,0xea,0x87,0xd2,0xf6,0x73,0xb8,0xf4,0x93,0x70,0x37, + 0x06,0xdd,0xf9,0xd5,0xdd,0x1d,0x49,0x9b,0x64,0x92,0xd2,0x67,0x34,0x4f,0x35,0x2b, + 0xcd,0x1f,0x79,0x4b,0x15,0xdd,0x58,0x32,0x15,0x20,0x83,0x70,0xc0,0x10,0x7e,0x98, + 0xe1,0xaf,0x89,0x23,0x2d,0x7e,0xb5,0xea,0x38,0xe9,0x2b,0x1b,0x32,0x91,0xb3,0x09, + 0x5c,0xc6,0x6a,0x7e,0x65,0x55,0xf5,0x9f,0xfd,0x4b,0x5e,0x53,0x6e,0x76,0x1a,0x6c, + 0x54,0xea,0xe4,0xd3,0xe2,0xec,0x73,0x9a,0xc7,0xdf,0xc2,0x3f,0x75,0x5e,0x98,0x80, + 0x48,0xac,0xa0,0xeb,0xea,0x29,0xe7,0xc9,0x7a,0x64,0x38,0xac,0xa8,0x34,0xb4,0x6c, + 0x73,0x15,0x8e,0x08,0xb5,0x46,0x1e,0xa5,0x8c,0x7f,0x90,0x13,0x27,0xa0,0x81,0x79, + 0x74,0xee,0xca,0xa2,0xc1,0x46,0x23,0x04,0xd4,0xb4,0xb5,0x52,0x1c,0xa2,0xa1,0xd6, + 0x92,0x70,0xfa,0x24,0x54,0x31,0x7f,0xc3,0xdc,0x10,0xac,0x35,0x31,0xf0,0x09,0x56, + 0x2c,0x2f,0x7d,0xcf,0x26,0x06,0x35,0xa8,0x86,0x46,0x88,0x4b,0x25,0x00,0x58,0xce, + 0xb9,0x51,0x8a,0x82,0x83,0xd4,0xa3,0x63,0xef,0xfe,0x83,0x0e,0x54,0xd5,0x43,0x1d, + 0x14,0x6b,0x09,0x69,0x10,0xa0,0xf5,0x48,0xd6,0x3f,0xa0,0x1e,0xd6,0x23,0xdb,0x1e, + 0x6d,0xe2,0xea,0x96,0xec,0xa1,0x2b,0xb3,0x48,0x25,0x90,0xfe,0x11,0x92,0x08,0xc6, + 0x98,0xef,0x25,0x98,0x81,0xb9,0x26,0xdc,0xdc,0xff,0x00,0xaf,0xe9,0x84,0xe4,0xb3, + 0x27,0xcd,0xcb,0x24,0xba,0x75,0x34,0x65,0x62,0x40,0xb7,0x7d,0x5b,0x58,0x0b,0x0b, + 0x01,0xa4,0x9b,0x9f,0xa5,0xb1,0x11,0x25,0xe4,0x72,0xc8,0x77,0xb5,0xec,0x7d,0x86, + 0x27,0x32,0xec,0xb4,0x46,0xaf,0xf3,0x08,0x63,0xab,0xd0,0x5e,0x35,0xd4,0x41,0x54, + 0xdb,0x73,0x63,0xc9,0x07,0x60,0x6d,0x7d,0xae,0x6c,0x71,0x63,0x9a,0xd6,0xb2,0x95, + 0x84,0x00,0x11,0xd9,0x25,0x3b,0x7f,0x8e,0xfe,0x05,0x5d,0x24,0x23,0x4b,0xb9,0x9a, + 0xa5,0x03,0x22,0x71,0x62,0xa0,0x90,0x35,0xee,0x00,0xc4,0xcd,0x5d,0x4a,0x4b,0xdc, + 0xcb,0xa9,0x62,0x86,0x48,0x5c,0xc6,0x15,0xa3,0x90,0x2a,0xc4,0x47,0xe7,0x31,0x9b, + 0xdd,0x6e,0x09,0x63,0x6b,0xda,0xe4,0x5c,0xdf,0x00,0x7f,0x86,0xd2,0xc8,0xd5,0x14, + 0xe6,0x2a,0x68,0x29,0xa0,0x8c,0xcc,0xd3,0x98,0x99,0x89,0x22,0xde,0x96,0x63,0xf9, + 0x4f,0x3f,0xb9,0xb0,0xc3,0x95,0x32,0x3d,0x3e,0x5c,0x94,0xd1,0x0e,0xcd,0x33,0x33, + 0x48,0xf2,0x21,0xb6,0xa3,0xc6,0x85,0x04,0x82,0x14,0x8e,0x01,0x17,0xe7,0x19,0x6e, + 0xdc,0x0f,0xbf,0xba,0x4b,0xc2,0x77,0x34,0x96,0xae,0x8c,0x25,0x5d,0x18,0x99,0x62, + 0x2c,0x51,0x6a,0xd6,0x2b,0x85,0x62,0x6d,0xb0,0xdc,0xef,0x6b,0x0f,0x7d,0xf0,0x15, + 0x34,0xf4,0xf5,0x14,0xcf,0x25,0x51,0xed,0x95,0xe5,0xd4,0xb5,0xae,0x39,0x73,0x7d, + 0xef,0x6e,0x00,0xf2,0x48,0xe4,0xe1,0xf9,0x6a,0x6a,0x32,0xbc,0xb9,0x29,0x3b,0x8b, + 0x4c,0xcf,0x50,0x44,0x50,0x89,0x14,0xb5,0xac,0xa4,0x96,0x3b,0x69,0x17,0x1b,0x5f, + 0xf4,0x38,0x1b,0x34,0xfc,0x68,0x69,0x66,0x79,0x44,0xa3,0x48,0x0c,0xe0,0xde,0xec, + 0x77,0xda,0xdb,0x7d,0x8e,0xf8,0x56,0x6e,0x68,0xe3,0xea,0x82,0x8c,0x9e,0xa6,0x5b, + 0x39,0x86,0x46,0x8e,0xf6,0xba,0x97,0xe7,0xd8,0x37,0xb9,0xff,0x00,0x63,0x1e,0x2d, + 0x59,0x95,0xe9,0xd5,0xed,0x34,0xc2,0x32,0x15,0x42,0x95,0x00,0x16,0xbd,0xac,0x0e, + 0xf6,0xb5,0xef,0xb6,0x1a,0x12,0xbc,0x86,0xec,0xd2,0x01,0x13,0x5c,0x21,0x1a,0x8b, + 0x9b,0xdc,0x8b,0x5f,0xde,0xf8,0x22,0x58,0xcc,0x0f,0x32,0x2b,0xab,0xc6,0xb7,0x2a, + 0xda,0xb4,0x89,0x05,0xb9,0xb1,0xde,0xc3,0x8b,0x11,0xf4,0xc6,0xc0,0x28,0x26,0x3c, + 0x2e,0xf1,0xad,0xa8,0x56,0xa5,0x30,0xe8,0x66,0x2c,0x03,0x16,0x07,0x7b,0xe0,0x2c, + 0xba,0xb6,0x6a,0x69,0x00,0x49,0x4d,0xb8,0xde,0xfb,0x7d,0x6d,0x86,0xda,0xa6,0x49, + 0x24,0x2f,0x70,0x58,0xdb,0x72,0x30,0x87,0x91,0x9a,0x41,0x20,0xf4,0xb7,0x9b,0x63, + 0xe9,0x82,0x3c,0x52,0xf3,0x65,0xf9,0xb5,0xa5,0xe5,0xb9,0xc9,0x68,0x06,0xa3,0xea, + 0xb6,0xfb,0x62,0x0b,0x3b,0xcc,0x2a,0x26,0x91,0x40,0x2b,0xa4,0x5f,0xd7,0x72,0x3f, + 0xa6,0x2b,0xf4,0xb5,0xe6,0x35,0x1d,0xc2,0xee,0x47,0x00,0x1b,0x61,0x13,0xd7,0xcd, + 0x35,0x81,0x36,0x51,0xb8,0x1c,0xef,0x8c,0xed,0xd3,0xed,0x75,0xab,0x4c,0xd6,0x29, + 0x4a,0xd2,0x54,0xd6,0xc9,0x22,0xb2,0xba,0x04,0x53,0x76,0x20,0xf2,0x3d,0xc8,0xc4, + 0xb5,0x5d,0x51,0x5c,0xb1,0xe3,0xee,0x6a,0x71,0x72,0x4f,0xb8,0xb6,0x29,0x41,0xdd, + 0x6f,0xa5,0xad,0x7c,0x1e,0xf9,0x93,0x98,0x3b,0x76,0x07,0xd1,0xa2,0xf6,0xe0,0x61, + 0xdd,0x0d,0x90,0x52,0x89,0x30,0xa6,0x68,0x73,0xe6,0xa7,0xa2,0x45,0x7d,0x80,0x17, + 0xb0,0x3b,0x9d,0xf9,0xc7,0xa7,0xa8,0xd6,0x14,0x74,0x84,0x91,0x7b,0xff,0x00,0x36, + 0xdb,0xe2,0xb4,0x25,0x1a,0x19,0x48,0xbd,0xfd,0xf0,0x33,0x02,0x0e,0xdc,0x61,0xbc, + 0x86,0x95,0x3c,0xd2,0x14,0xcd,0x3e,0x66,0xcd,0x3c,0x67,0x5c,0x91,0xbb,0x3d,0x8b, + 0x23,0x1f,0x3e,0xf8,0xb5,0x54,0xf5,0x18,0x08,0xa6,0x26,0x36,0x26,0xc7,0xdb,0x19, + 0xec,0x77,0x46,0x05,0x49,0x07,0xdf,0x04,0xac,0xac,0x54,0x29,0x26,0xc2,0xf8,0x8e, + 0x80,0x38,0xa0,0xd9,0x48,0x52,0x99,0xa5,0x7f,0x7e,0x40,0x5f,0x76,0xbd,0xcd,0xcd, + 0xec,0x71,0x0f,0x21,0xbb,0xec,0x36,0xc3,0x8d,0xea,0x38,0xf0,0x46,0x4e,0xe0,0x5e, + 0xd8,0x76,0xb0,0x34,0x25,0x2e,0xb4,0xed,0x3a,0x92,0xe0,0x0d,0xfe,0x96,0xc5,0xfb, + 0xa7,0xea,0x23,0x29,0x12,0x40,0xfe,0xb0,0x6d,0x22,0x3e,0xc4,0x81,0xe4,0x62,0x9b, + 0x0e,0x59,0x50,0x63,0x8a,0x60,0x17,0x4b,0xf0,0x03,0xfa,0xad,0x7b,0x71,0xce,0x34, + 0x4e,0x98,0xe9,0x63,0x4d,0x56,0xa7,0x36,0xee,0xd3,0x30,0x5d,0x80,0xb0,0xf5,0x7d, + 0xfd,0xf1,0x9a,0x7d,0xa1,0xbc,0xab,0xe2,0xbb,0x57,0x15,0xac,0xff,0x00,0xcf,0x3a, + 0x66,0x95,0x8c,0x48,0x5d,0x2b,0x65,0x08,0xf0,0xab,0xb3,0xac,0x70,0xa5,0x8a,0xb1, + 0xdd,0x6c,0xce,0x38,0xbd,0xf8,0xc5,0xc2,0x9b,0x30,0xb1,0x55,0x0d,0xce,0x31,0x7a, + 0x8c,0xfa,0x04,0xf8,0xf1,0x94,0xe5,0xc2,0x57,0x34,0xd9,0x56,0x47,0xda,0x3f,0x88, + 0x00,0x59,0x67,0x3d,0xd6,0xbd,0xff,0x00,0x37,0xa0,0xc3,0x70,0x3d,0xf1,0xa2,0x57, + 0x4c,0x69,0xa7,0x56,0x81,0xc0,0x4f,0xbd,0xc0,0xc7,0x9f,0x65,0x48,0xf7,0x05,0xd3, + 0x77,0xc2,0xd0,0x55,0xbe,0x52,0xd5,0x4b,0xa6,0x25,0x66,0x7f,0xfd,0xa2,0xe7,0x18, + 0xef,0x5c,0xfc,0x69,0xe9,0xbe,0x84,0x35,0x54,0xf5,0x59,0x8f,0xf8,0xa6,0x61,0x15, + 0x2c,0xf3,0xad,0x36,0x5e,0xa6,0xa4,0xb3,0x46,0xba,0xbb,0x2c,0xe8,0x19,0x23,0x72, + 0x2e,0x46,0xa2,0x2c,0x15,0x89,0xb0,0x1b,0xc6,0x7c,0x6d,0xcc,0xe5,0xa9,0xf8,0x63, + 0x9a,0x66,0x90,0x66,0x95,0x39,0x54,0x9d,0x3d,0x51,0x4b,0x9b,0x77,0x29,0xe4,0x65, + 0x13,0x08,0xa6,0x5b,0xc6,0xda,0x4a,0xb5,0x9b,0x56,0xd6,0x23,0xd5,0x6f,0x17,0xc7, + 0x3e,0xf4,0x24,0xdd,0x37,0xf1,0x20,0xd2,0xf4,0xfc,0xd9,0xae,0x5f,0x94,0xcf,0x9b, + 0x67,0xb5,0x95,0x99,0x7e,0x59,0x4d,0x49,0x24,0xd5,0x34,0xf4,0xb3,0x0b,0xd5,0xa4, + 0xaa,0xba,0x92,0x29,0x74,0x8b,0x44,0xc0,0xb3,0x0b,0xfa,0xc9,0xd2,0x31,0x5b,0xde, + 0xe8,0xa4,0xf2,0xc0,0x45,0xa0,0x3c,0x6e,0x53,0x3f,0x17,0xbf,0x89,0x3c,0xc3,0x32, + 0xc9,0x27,0xa7,0xe8,0xba,0xee,0xcd,0x16,0x6c,0xa3,0xe4,0xe7,0x5a,0x56,0xa5,0xae, + 0xa3,0x11,0x3a,0x77,0x19,0xdc,0xea,0x56,0x59,0x07,0x71,0x51,0xd3,0xc5,0xef,0x62, + 0xbb,0xf2,0x37,0x52,0xf5,0x56,0x63,0xd4,0x99,0x95,0x56,0x63,0x98,0xd5,0xbd,0x55, + 0x75,0x4c,0x9a,0xea,0xea,0x3b,0x69,0x1f,0x71,0xf5,0x5a,0xf6,0x40,0x07,0x03,0xdb, + 0x93,0x82,0xb3,0x5c,0xcd,0xb3,0x4a,0x9a,0xe6,0x35,0x13,0x2a,0xa3,0xb0,0x48,0xdc, + 0x97,0x5a,0x78,0xf5,0x9b,0x28,0x22,0xcb,0x60,0x00,0xd8,0x2a,0xf9,0x3b,0x5f,0x10, + 0x73,0xd1,0xc5,0x2d,0x60,0x32,0x10,0xe8,0xf2,0xd9,0x63,0x59,0x40,0x3b,0x83,0x62, + 0xc4,0x02,0x07,0xd8,0x0c,0x72,0x24,0x95,0xd2,0x9f,0x88,0xab,0x9a,0xd0,0x0a,0x7a, + 0x95,0x27,0xa8,0x12,0x19,0x67,0x28,0xb1,0x3f,0x73,0x44,0xad,0x60,0x16,0xf7,0x2d, + 0x6b,0x7a,0xb8,0xe3,0xfe,0xb8,0xf2,0xa6,0xb2,0x23,0x36,0x84,0x13,0x4a,0xef,0xa4, + 0xbc,0x81,0x8c,0x8c,0x47,0xf9,0x40,0xf0,0x37,0x3e,0x7c,0xe0,0xed,0x1f,0xe2,0x0f, + 0x0e,0x5f,0x4e,0x81,0x09,0x72,0xcc,0x7d,0x56,0x23,0x6b,0xb3,0xed,0x72,0xb7,0xda, + 0xff,0x00,0x51,0x8f,0xb2,0xfc,0xa6,0xa0,0x14,0x54,0xef,0x51,0xcd,0x19,0x79,0x9a, + 0x75,0x99,0x80,0x10,0x8d,0x21,0x53,0x55,0xec,0x6e,0xc0,0xed,0x60,0x7e,0xb6,0xe3, + 0x30,0x70,0x39,0x3d,0x13,0x82,0x10,0xb5,0x59,0x5d,0x14,0x71,0x95,0xfc,0x45,0x97, + 0xd6,0xcf,0xf8,0x8b,0x29,0x8a,0xd6,0x3a,0x54,0x2d,0xb5,0xb5,0x86,0xe7,0x8d,0xc9, + 0xf1,0x89,0x58,0x56,0x99,0xa9,0xe0,0x8a,0x69,0x66,0xa4,0xd4,0x09,0x08,0xac,0x1e, + 0x46,0xb9,0xba,0xeb,0x24,0xda,0x3b,0x82,0x36,0x16,0xb5,0x89,0x3b,0xd8,0x62,0x3e, + 0x4a,0x86,0x86,0xab,0xe7,0x5a,0x91,0xd8,0x3b,0x90,0x26,0x93,0x52,0xae,0x92,0x48, + 0xb6,0xf6,0xd8,0x83,0xc5,0xb0,0x64,0x13,0x09,0x29,0xa5,0x8c,0xc2,0xc1,0xa5,0xfc, + 0x47,0x10,0x1b,0x77,0x54,0x0b,0x20,0x7b,0xee,0x08,0x60,0x78,0xd8,0xfe,0xe7,0x00, + 0x59,0xab,0x28,0x12,0x57,0x93,0x4c,0xc8,0xc6,0x2a,0x09,0x41,0x80,0x00,0x01,0x8d, + 0x6c,0xc3,0xd5,0x61,0xbb,0xd8,0xdc,0x91,0xf9,0xb7,0xfb,0xd8,0x62,0x1b,0x30,0x86, + 0xaa,0x4f,0x4b,0x15,0xa9,0xd8,0x2a,0x49,0x1b,0x0b,0x6a,0x2d,0xc1,0xbd,0x89,0xff, + 0x00,0x5f,0x27,0x12,0xb9,0x8d,0x70,0x48,0xda,0x33,0x2e,0xa9,0x4d,0xd5,0x8a,0x20, + 0x8c,0x96,0x3e,0x08,0x1b,0x11,0x6b,0xe2,0x12,0x9e,0xa0,0xa4,0x7d,0xd7,0x99,0xb5, + 0x12,0x54,0x28,0x23,0x83,0xcd,0xfe,0x86,0xdf,0xaf,0x18,0x0d,0xb3,0x90,0x10,0x1d, + 0xc2,0x98,0xce,0x62,0x54,0xed,0x99,0x92,0x16,0xac,0x95,0x50,0xb4,0x10,0x2d,0x96, + 0x0d,0xad,0xa4,0x9e,0x06,0xd6,0x36,0xde,0xd7,0xfb,0xe1,0x99,0x2a,0xe1,0xaf,0x82, + 0xfa,0x5d,0x2a,0xe5,0x70,0x8a,0x3b,0xd7,0x57,0x23,0x62,0xe5,0xfe,0xfb,0x69,0x00, + 0x6d,0x6b,0x6d,0x86,0xe2,0x9a,0x9a,0xaa,0x69,0x1c,0x43,0x24,0x8c,0x80,0x14,0x32, + 0x2d,0xf5,0x80,0x40,0xd4,0x6d,0xe6,0xfc,0x0e,0x00,0xf7,0xc3,0x15,0xa9,0x1c,0xcc, + 0xe4,0xa2,0xa9,0x11,0xe9,0x0a,0x91,0x15,0x2b,0x63,0xc9,0xfb,0xf8,0xfb,0x0c,0x06, + 0xb4,0x03,0x47,0xa2,0x23,0xd5,0x1c,0xc9,0x23,0xc7,0x59,0x25,0x2c,0x4f,0x23,0x28, + 0x69,0x24,0x98,0x2d,0xd5,0x11,0xdd,0x55,0x58,0x00,0x36,0xdc,0x80,0x0e,0xf7,0xbe, + 0xd8,0x8a,0x9e,0x19,0x24,0x51,0x6b,0x69,0x43,0xa5,0xca,0x82,0x77,0x27,0x65,0xd4, + 0x46,0xdf,0xf7,0xc3,0xf4,0xd3,0x23,0xbc,0x0b,0x34,0x06,0x69,0x14,0x94,0x0a,0xcd, + 0x76,0xba,0xad,0x90,0x71,0xb5,0xbd,0x87,0xdc,0x9d,0xb0,0x4d,0xbf,0xe1,0xe5,0x98, + 0xc4,0xc6,0x14,0x65,0x1f,0x82,0xe0,0x28,0x26,0xf6,0x17,0x3b,0x8b,0x91,0x7b,0xef, + 0xc6,0x2e,0xb0,0xda,0x47,0x20,0xae,0xd8,0x41,0x6c,0x2c,0xa5,0xce,0x1c,0x09,0x85, + 0x84,0xc7,0xd6,0x0b,0x57,0x92,0xb4,0xc8,0x5b,0x71,0x85,0x5a,0xfc,0xe1,0xdd,0x18, + 0xfb,0x46,0x17,0x6a,0x96,0x99,0x64,0xdb,0x09,0xd1,0x82,0x74,0x63,0xcd,0x18,0x9b, + 0x54,0x43,0x69,0xc7,0xdd,0xbb,0xf8,0xc1,0x3d,0xbc,0x7c,0x23,0xc4,0xda,0xa2,0x1d, + 0x63,0xc3,0xaa,0x98,0x74,0x47,0x85,0x88,0xf0,0x0b,0x51,0xb2,0x9a,0x0b,0x82,0x29, + 0x63,0x53,0x3a,0x89,0x09,0x0a,0xd7,0x17,0x1e,0x30,0xe7,0xcb,0x8b,0x2d,0x98,0x31, + 0x61,0x70,0x07,0x8f,0xbe,0x3c,0xd0,0x63,0x37,0x1c,0xe1,0x36,0xa6,0x0e,0xa5,0x2d, + 0x92,0x66,0x11,0x65,0x92,0x48,0xf3,0x29,0xd6,0x37,0x8d,0x94,0x06,0x20,0xfd,0x6f, + 0x8b,0xb6,0x4d,0xd5,0x90,0x54,0x38,0x49,0xee,0x5e,0x59,0x02,0x5c,0x8e,0x09,0x38, + 0xcd,0x43,0x17,0x16,0x63,0x73,0xe3,0x02,0xe6,0xf9,0xc1,0xe9,0xfc,0x8f,0x34,0xcd, + 0x18,0xdb,0xe4,0x69,0x25,0x9d,0x7f,0xfb,0x82,0xfa,0x7f,0xfd,0x8a,0xe3,0x34,0x90, + 0x31,0xc0,0xb9,0xca,0xe6,0x4a,0xe0,0x68,0x21,0x3a,0x47,0xa8,0x07,0x54,0xf5,0xdf, + 0x51,0xf5,0x0f,0xc9,0x6b,0x8a,0xb7,0x36,0xaa,0x68,0x26,0x6a,0x8d,0x0c,0xb1,0x22, + 0x2c,0x31,0xc6,0x10,0xf9,0xd3,0x08,0x62,0x4f,0x1c,0x62,0xe8,0xbd,0x4d,0x57,0x56, + 0xa9,0x2c,0x73,0xc8,0x88,0xd7,0xdb,0x71,0x6b,0x12,0x0e,0xc7,0x7e,0x41,0xc6,0x3b, + 0xf0,0xc7,0xfe,0x13,0xff,0x00,0x0f,0xd2,0xb0,0x2e,0x57,0x2f,0x2d,0x31,0xb8,0xbd, + 0xe4,0x46,0x72,0x7f,0x5b,0xff,0x00,0x5c,0x6a,0x35,0x2d,0x7a,0x99,0x48,0x24,0x82, + 0x43,0x6e,0x41,0xe4,0x03,0xe3,0x6f,0x38,0xe0,0xf8,0x51,0x0f,0x9d,0xed,0x3d,0x45, + 0xfd,0x8f,0xfb,0x5d,0x5d,0x70,0x2d,0x89,0xa4,0x74,0x35,0xf8,0xff,0x00,0x4b,0x2d, + 0xf8,0xd2,0x6a,0xaa,0xf3,0x8c,0xb6,0x4a,0xee,0xb9,0xff,0x00,0x0f,0xa2,0x30,0xbd, + 0x5d,0x0e,0x48,0xd1,0xcd,0x19,0x69,0xa1,0x00,0x97,0x57,0x8d,0x58,0x12,0x5b,0x60, + 0xcf,0xbc,0x7a,0xb5,0xa8,0xb2,0x13,0x8c,0x2f,0xa7,0xba,0xdf,0x33,0xe9,0x6c,0xce, + 0x5c,0xce,0x9b,0x3b,0xce,0xb2,0xfa,0x8c,0xc2,0x43,0x35,0x5d,0x5e,0x5d,0x50,0x7b, + 0xba,0x19,0x83,0x4b,0xa0,0x1b,0x34,0x85,0x99,0x50,0x1d,0x6c,0x01,0x0a,0x49,0x06, + 0xe2,0xdd,0x1f,0xd7,0x9f,0x0e,0x69,0xba,0xee,0x6c,0xb6,0xa2,0x3a,0x86,0xa0,0xcc, + 0xe9,0x64,0x58,0xfe,0x64,0x4c,0xeb,0xaa,0x94,0xeb,0x2f,0x0a,0x8d,0xd5,0x4b,0x96, + 0x00,0xb9,0x56,0xb0,0xf0,0x6d,0x63,0xca,0x59,0xfe,0x51,0x57,0x94,0x66,0xb5,0xf0, + 0xd7,0xd3,0x56,0x65,0xe2,0x1d,0x42,0x28,0x26,0x47,0xee,0x4a,0xaa,0xc4,0x20,0x0c, + 0x55,0x4b,0x2d,0xd7,0xf3,0x69,0x17,0xb7,0x03,0x81,0x87,0xc5,0xe1,0x92,0x09,0xbc, + 0xc0,0x28,0x13,0xdf,0xdd,0x29,0xa5,0x91,0xaf,0x65,0x5e,0x54,0x2d,0x74,0xef,0x1c, + 0x50,0x45,0x18,0x3a,0x63,0x8d,0x56,0xe6,0x3d,0x22,0x30,0x45,0xc8,0x16,0xdc,0x9b, + 0xef,0xb9,0xbe,0x1b,0xa6,0x9a,0x7d,0x71,0xa5,0xcc,0x7d,0xdd,0x5f,0x8d,0x24,0x67, + 0x53,0x58,0x01,0x6d,0xbc,0x1f,0x4f,0xeb,0x85,0xcd,0x51,0x1e,0xa9,0x5c,0xb9,0x2e, + 0x4e,0xa3,0x62,0x6c,0xcd,0xb5,0xc9,0x6f,0x3f,0xd3,0xce,0x03,0x9a,0xa5,0xda,0x9e, + 0x30,0xce,0x04,0x40,0xfa,0x09,0x6b,0x86,0x51,0xb6,0xca,0x38,0x1c,0xe3,0x82,0xde, + 0x2a,0x96,0xe0,0x8d,0xcb,0xf2,0x9c,0xd2,0xba,0x8e,0xbb,0x36,0xa0,0x65,0x5a,0x2c, + 0xad,0x83,0x55,0x4e,0x2b,0x22,0x85,0xd4,0x35,0xc0,0xf4,0x3b,0x02,0xcc,0xc0,0x90, + 0x00,0x06,0xfb,0xf3,0xbe,0x0d,0xab,0xa8,0xbe,0x57,0x08,0xa4,0x90,0xd4,0x53,0xc6, + 0x59,0x5c,0x19,0x4d,0xd9,0xb5,0x79,0x03,0x70,0x2d,0xc0,0xdb,0xc1,0xdb,0x15,0x68, + 0xa7,0x96,0x09,0xe3,0x92,0x94,0xe8,0x99,0x6f,0x66,0x51,0xbd,0xc8,0xb1,0x38,0x90, + 0xca,0x5b,0x4b,0xd4,0xb3,0xc4,0x9a,0x56,0x1d,0x0f,0xa9,0xed,0xa4,0x1d,0xbf,0x29, + 0xfc,0xc7,0xfd,0x30,0xd2,0x81,0xb4,0x57,0x44,0xc5,0xa8,0x83,0x9b,0x4b,0x24,0x85, + 0x27,0x8e,0x39,0x23,0x1b,0xe9,0x90,0xea,0xd4,0x00,0x1e,0xfc,0x9c,0x2a,0xae,0x78, + 0x9e,0x25,0x77,0x55,0x97,0x51,0x21,0x65,0x91,0xb4,0x30,0x1e,0x54,0x11,0xb5,0x87, + 0x1b,0x83,0x84,0x97,0x49,0xc1,0x48,0x61,0x80,0x12,0xda,0x40,0x68,0xc0,0xf1,0xcd, + 0xfe,0xc0,0xf1,0xfd,0xf0,0x2a,0xc4,0x27,0x45,0xd7,0xa7,0xb4,0x97,0x28,0x5b,0x6d, + 0x27,0xff,0x00,0x77,0xfb,0xdb,0x15,0xd0,0xe5,0x28,0x01,0x3c,0x73,0x27,0xa2,0xa9, + 0xa5,0x31,0xd3,0xa2,0xf6,0x00,0xd1,0x05,0x4c,0x41,0xd0,0x6f,0xb1,0x2a,0x4f,0xaa, + 0xfb,0xde,0xfb,0x7d,0x0e,0x13,0x5e,0x61,0xaf,0xce,0x2a,0x64,0xa3,0xcb,0xd2,0x9a, + 0x0a,0x86,0x33,0x43,0x4d,0x18,0x60,0xb1,0x83,0xe1,0x59,0xb7,0x2b,0xf5,0xe3,0xda, + 0xd8,0x0a,0xa4,0x12,0xd2,0x85,0x76,0x95,0x09,0xd4,0x5a,0x55,0xf5,0x1f,0xfa,0x79, + 0xfe,0x98,0xf6,0x73,0x51,0x52,0x1c,0xcc,0xcc,0xd2,0x1b,0x2f,0xac,0x9b,0x90,0x2c, + 0x00,0x1f,0xa5,0xb6,0xf6,0x18,0xbb,0x76,0x29,0x38,0xa0,0x89,0x8c,0xaa,0xc8,0xd0, + 0xa8,0xed,0xa6,0x8d,0x61,0x4d,0xca,0x93,0xb6,0xe4,0xf9,0x17,0xff,0x00,0x7b,0x63, + 0xda,0x98,0xfe,0x5e,0x46,0x57,0x93,0xf1,0x6e,0x17,0xd0,0xd6,0x08,0x9c,0x9b,0xf8, + 0x27,0xc0,0xfe,0xb8,0x72,0x9a,0x8e,0x78,0xe0,0x5a,0xb2,0x08,0x47,0x52,0x15,0xa4, + 0x65,0xf5,0x0b,0xda,0xe0,0x93,0x7b,0x5f,0x6b,0xf1,0x87,0x28,0xbb,0x12,0x39,0x39, + 0xcd,0x4b,0x53,0x50,0x45,0x04,0x83,0xb7,0x18,0x5e,0xf3,0xbd,0xad,0xdb,0x17,0x16, + 0x17,0x62,0xb7,0x3e,0x17,0x7f,0xa6,0x29,0x3c,0xa8,0x06,0x50,0x34,0x52,0xc3,0x15, + 0x5b,0x1b,0x97,0x8c,0x3d,0xc2,0xb2,0x06,0x06,0xcc,0x2d,0x7b,0xdc,0x7d,0xff,0x00, + 0xe9,0xbe,0x0e,0xcd,0xa4,0x6a,0x7a,0xbe,0xc5,0x5c,0xa2,0x49,0xa0,0x91,0x92,0x64, + 0x48,0xd1,0xbb,0x64,0x82,0xa5,0x41,0xbe,0x92,0x41,0x1f,0xa5,0xee,0x08,0xc3,0x14, + 0x79,0x54,0xb1,0x24,0x95,0x35,0x34,0xce,0x61,0x48,0x75,0x3d,0xa4,0xd2,0x35,0x11, + 0x75,0x0d,0xb1,0xd8,0xda,0xe4,0x6d,0xb7,0x91,0x89,0x6c,0xd7,0x21,0xf9,0x1e,0x91, + 0xca,0xb3,0x39,0x32,0xf4,0x81,0x6b,0x2a,0xe7,0x64,0xad,0x59,0xc3,0x89,0xd1,0x74, + 0xaf,0x6c,0x05,0xba,0xc7,0x62,0xac,0x74,0xb7,0xa9,0xb5,0x5f,0xf2,0x81,0x7b,0x36, + 0xd9,0xf9,0x29,0x80,0x57,0x6f,0x76,0xb1,0xf7,0x6f,0x7c,0x13,0xdb,0xc7,0xda,0x31, + 0xf5,0xca,0x5e,0x2c,0x26,0x3b,0x67,0x1f,0x18,0x8e,0x09,0xd3,0xf4,0xc7,0xba,0x7e, + 0x98,0x94,0xa2,0x13,0xb5,0x8f,0x44,0x67,0xdb,0x04,0x85,0xc2,0xc4,0x63,0x02,0x94, + 0x42,0x68,0x38,0xf4,0x26,0x0b,0xed,0xe3,0xee,0xd8,0xc0,0xa5,0x2d,0x0c,0x13,0x0b, + 0x11,0xe1,0xfe,0xd8,0xc7,0xda,0x2d,0x81,0x49,0xad,0x36,0x17,0x4f,0x1c,0xe1,0x2f, + 0x77,0x20,0x9d,0xf6,0xb6,0x1e,0x03,0x1e,0x14,0xc0,0xa4,0x77,0x26,0x42,0xe2,0x83, + 0xf1,0x9e,0xb8,0xd2,0xf4,0x47,0xc8,0xc7,0x6e,0xf6,0x6d,0x5b,0x15,0x3a,0x8b,0xf2, + 0xab,0xf8,0x8d,0xfd,0x42,0x0f,0xd7,0x1a,0x28,0x4c,0x63,0xbf,0x15,0xab,0x17,0x30, + 0xeb,0xee,0x97,0xc9,0x47,0xae,0x3a,0x34,0x49,0xe5,0x5f,0x05,0xa5,0x90,0x35,0x8f, + 0xff,0x00,0xd2,0x25,0xff,0x00,0xf2,0xc6,0x0f,0x10,0x7f,0x95,0xa6,0x71,0xef,0x8f, + 0xbf,0xfa,0x5a,0xf4,0x8d,0xdf,0x3b,0x47,0x6c,0xab,0x1f,0x4b,0x11,0x1f,0x54,0x51, + 0xa2,0x46,0x58,0xa1,0x10,0x8d,0x3b,0x5a,0xc8,0x57,0x63,0x6f,0xa5,0xb1,0xa1,0xcf, + 0xc5,0x39,0x2d,0xa9,0x9a,0x04,0xd5,0x7e,0x41,0x17,0x5d,0xff,0x00,0x45,0x1f,0xbe, + 0x33,0x9e,0x93,0x3a,0xfa,0x9e,0x86,0x74,0x05,0x48,0xa9,0x2c,0x7b,0x6a,0x1b,0x51, + 0xb1,0xdb,0x8d,0xf7,0x1f,0x7e,0x79,0xc6,0x9b,0x34,0x21,0x61,0xa4,0x1a,0x58,0x36, + 0x87,0x04,0x9e,0x0f,0xa8,0x11,0xf6,0xe4,0xed,0xf5,0xc7,0x96,0xf0,0xb7,0xed,0xd7, + 0x34,0x77,0x04,0x7e,0x2f,0xfc,0x2e,0xde,0xb9,0xb7,0xa6,0x71,0xec,0x41,0xff,0x00, + 0x09,0x84,0x47,0x20,0xb2,0x42,0xf3,0x69,0xdf,0x4a,0x1b,0x13,0xf4,0x04,0xed,0x7f, + 0x6c,0x71,0x6f,0xc5,0x3e,0xb5,0xae,0xeb,0xee,0xa1,0x5a,0xac,0xc2,0x9e,0x2a,0x41, + 0x0c,0x09,0x4f,0x4a,0x02,0x32,0x84,0x88,0x39,0x37,0x25,0xac,0xcd,0x76,0x27,0x9f, + 0xd0,0x01,0x8e,0xa3,0xeb,0x9c,0x8b,0xa9,0x6b,0x2a,0x72,0xdc,0xd7,0xa2,0x6b,0xe0, + 0xa4,0xad,0xcb,0x60,0xa8,0x1d,0xb9,0x89,0x3d,0xd3,0x26,0x95,0x05,0x54,0x90,0x9a, + 0x91,0x4b,0xb8,0x66,0xe0,0x8d,0x81,0x27,0x1c,0x9d,0xd5,0x14,0xb9,0x4c,0x82,0x99, + 0x68,0xdd,0xe2,0xcd,0xa0,0x6d,0x15,0xd1,0x49,0xad,0xe2,0x79,0x8d,0xd8,0xb4,0x6d, + 0x21,0x2c,0x00,0x1a,0x41,0x0c,0x49,0xbf,0x85,0xe4,0xee,0xf1,0xd9,0x1e,0x40,0x8f, + 0x80,0x3f,0x3c,0x71,0xf2,0xce,0x17,0x3f,0x40,0xd6,0xe5,0xdc,0x9f,0xd9,0x55,0x63, + 0x13,0xc7,0x31,0x99,0x82,0x3c,0x71,0x92,0x47,0x71,0xac,0x0b,0x00,0x00,0xd2,0x07, + 0x1b,0xf1,0xf6,0xc3,0x55,0x75,0x52,0x4c,0x6f,0xe2,0x35,0xd3,0xc0,0x3f,0xf6,0x3e, + 0x6e,0x7c,0xdf,0x0b,0xae,0x73,0x3c,0xad,0x1b,0x6a,0x76,0x8c,0x69,0x17,0x16,0x16, + 0x03,0x91,0xfb,0x63,0xc8,0xe9,0x69,0xa4,0xa2,0x95,0x9a,0xb9,0xe3,0xab,0x59,0x11, + 0x22,0x81,0xa3,0xf4,0x4a,0x8d,0xab,0x5b,0x19,0x2f,0xe9,0xb1,0x0b,0xb1,0x06,0xf7, + 0x26,0xe2,0xdb,0xf9,0x30,0x2f,0x2b,0xb2,0x3b,0x94,0xba,0x4d,0x71,0xc2,0xb1,0x88, + 0x15,0xe6,0x77,0x06,0x11,0x12,0x5d,0xd8,0xb0,0xb1,0x1b,0x72,0x36,0xd8,0x0d,0xef, + 0x7c,0x4e,0x27,0x46,0xe7,0x07,0xa3,0x2b,0x3a,0x95,0xea,0x56,0x1c,0x9a,0x0a,0xaa, + 0x78,0xcb,0xa0,0x2f,0xad,0xa4,0x52,0x48,0xd4,0x36,0x0e,0x80,0xa5,0xd1,0x88,0x27, + 0x58,0x23,0x83,0x8a,0xed,0x4c,0x3d,0x8a,0xc7,0x84,0x4d,0x03,0x98,0xae,0xaf,0x34, + 0x4f,0xad,0x01,0x1e,0x15,0x85,0xee,0x2e,0x0d,0x88,0x3b,0xdc,0x11,0xce,0x2e,0x99, + 0x7e,0x6d,0x57,0x45,0xd3,0xf4,0x5f,0xf9,0x9d,0x36,0x61,0x94,0x4f,0x17,0xca,0x55, + 0xc1,0x51,0xeb,0x7a,0x21,0xea,0x36,0x58,0x18,0x9d,0xc2,0xc9,0xe9,0xa8,0x09,0x70, + 0x5c,0x88,0xcd,0xd0,0x9c,0x68,0x89,0x8d,0x25,0xdb,0xc2,0x8e,0xbe,0x42,0x84,0xaa, + 0x8a,0x9a,0x04,0x1a,0x6a,0xd1,0xa1,0x64,0xee,0x47,0x24,0x8e,0x19,0xdd,0x2c,0x74, + 0x8f,0x45,0xc0,0x90,0x9d,0x8a,0x7f,0x29,0x06,0xed,0x7d,0xf1,0x0f,0xf8,0x91,0x86, + 0x8f,0x41,0x50,0xc7,0x6d,0x62,0xf6,0x00,0xdf,0x6f,0x6b,0xff,0x00,0xdb,0x13,0x99, + 0xad,0x7e,0x58,0xd5,0xeb,0x0e,0x4d,0x4d,0xdb,0xa5,0x44,0x58,0xee,0xf1,0xaa,0x2a, + 0xc9,0xa5,0x44,0x81,0x08,0x79,0x35,0x8d,0x44,0xd8,0x86,0xf5,0x02,0x09,0xb6,0x22, + 0xa2,0x8c,0xba,0xf6,0xfb,0xb1,0x9d,0x6c,0x74,0x48,0x1f,0x4e,0xb3,0xa7,0x71,0xf5, + 0x03,0xc9,0xc6,0x47,0x7c,0x0e,0x21,0x11,0xc2,0x00,0x03,0x30,0xd0,0xd2,0x73,0x72, + 0x37,0x23,0xea,0x4d,0xf8,0xc4,0x86,0x53,0x92,0x54,0x67,0x95,0xb4,0xb4,0x99,0x7d, + 0x44,0x66,0xa2,0xa2,0xa1,0x22,0x8f,0xe6,0x25,0x54,0x40,0xce,0x48,0x0c,0xcc,0x6c, + 0x00,0xb8,0xe7,0xed,0xef,0x85,0x44,0xa6,0x49,0x5c,0xb4,0x41,0xa0,0x03,0x44,0x8c, + 0xa0,0xdd,0x0b,0x02,0xba,0xbc,0x6e,0x2f,0x7b,0x79,0x20,0x0b,0xe2,0xd5,0xd3,0xd4, + 0xd0,0x53,0x56,0x49,0xd4,0xed,0x43,0x51,0x53,0xd2,0xf9,0x7d,0x74,0x7a,0x52,0xbc, + 0xe8,0x7a,0x88,0xd1,0x89,0x4a,0x76,0x75,0x42,0x0b,0xb2,0x8b,0x90,0xa3,0x4f,0xa7, + 0x72,0x2e,0x30,0xcd,0x69,0x7f,0x05,0x42,0x68,0x5a,0x98,0xcd,0xa2,0xac,0xe9,0x64, + 0x8b,0x2a,0xce,0x72,0xfa,0x19,0x25,0x9a,0xa9,0xa9,0xea,0x69,0x25,0x96,0x58,0x12, + 0xa6,0x24,0x91,0xd4,0x2c,0x82,0x21,0xa6,0xcb,0x34,0x41,0x81,0x12,0x96,0x23,0x48, + 0x51,0x66,0x6b,0xd4,0xb3,0x6c,0xa6,0x78,0x62,0xcc,0xab,0x04,0xd4,0x30,0xd1,0x89, + 0x9f,0xb6,0x24,0x66,0x32,0xd4,0x15,0x3d,0xbb,0xc6,0x24,0x44,0x76,0x17,0x66,0x04, + 0xdb,0x90,0x6e,0x01,0x18,0x77,0xaa,0xba,0x99,0x3a,0xa3,0xa8,0xa5,0xcc,0x3e,0x56, + 0x8f,0x24,0xa3,0x92,0x55,0x58,0x20,0xa4,0x8d,0x92,0x0a,0x24,0x5b,0x5b,0xb4,0xaa, + 0x01,0xf1,0xc9,0x1a,0x8d,0xc9,0x37,0x24,0x9c,0x2f,0x32,0xca,0xe4,0xc8,0xba,0x4e, + 0x80,0xbd,0x4d,0x14,0xb3,0x67,0x32,0xad,0x42,0xc0,0x64,0x2f,0x51,0xd9,0x54,0x2c, + 0x09,0x42,0xb7,0x8d,0x75,0xb3,0x02,0x49,0x05,0xc8,0xba,0x86,0x4d,0xf1,0x69,0x0c, + 0x37,0xb4,0x60,0x71,0xdf,0xeb,0xf3,0x41,0xa4,0xd6,0x7a,0xa0,0x29,0x23,0xcd,0x73, + 0xfc,0xd2,0x25,0xa9,0x92,0x49,0xe5,0xae,0x24,0xcc,0x62,0x89,0x7b,0xaf,0x18,0x61, + 0xa8,0xec,0x18,0x8d,0xc5,0xf8,0x03,0xc9,0xdb,0x7c,0x47,0x55,0xe5,0xad,0x91,0x67, + 0x35,0xb4,0x79,0x8c,0x31,0xc9,0x3d,0x34,0xce,0x8c,0x24,0x2c,0x51,0xad,0x7b,0x36, + 0xd6,0x6b,0x1d,0x88,0x3b,0x5c,0x11,0xe0,0xe2,0x4b,0x20,0xea,0x9c,0xdb,0xa3,0xab, + 0xea,0x6a,0xb2,0x3a,0xb6,0x41,0x59,0x4a,0x68,0xea,0x2e,0x10,0x34,0x91,0x38,0x02, + 0x45,0x0c,0x41,0x31,0xdf,0x70,0x19,0x48,0x60,0x0d,0xae,0x2e,0x6f,0x75,0xf8,0xa7, + 0xd3,0x59,0x7e,0x53,0x47,0x47,0x51,0x91,0x57,0x52,0x55,0x09,0x16,0x2a,0xda,0x88, + 0xe2,0x8a,0x99,0xbb,0x71,0xce,0xa0,0xa0,0x6a,0x84,0x92,0xf2,0x3f,0x70,0xc8,0xbd, + 0xa0,0xa7,0x40,0x8e,0xe5,0x8a,0xd8,0x90,0x00,0x2c,0x2e,0x1c,0xde,0x7d,0xfb,0xec, + 0x8e,0xe2,0x0d,0x2e,0xbf,0x60,0x8b,0xf9,0x9d,0x07,0xa8,0x2e,0xed,0x6f,0x57,0xb7, + 0xdf,0xe9,0x8f,0xb4,0xaf,0x3a,0x97,0x6e,0x77,0xfe,0xd8,0xa7,0x43,0x5d,0x22,0x26, + 0xb3,0x32,0x98,0x94,0x69,0x11,0x0d,0xf4,0xa9,0x04,0xab,0x00,0x6e,0x4d,0x82,0xdf, + 0x6f,0x6e,0x45,0x8e,0x1c,0x9b,0x39,0x75,0xa3,0x7e,0xf4,0x8b,0x1f,0x65,0x9c,0xa3, + 0x46,0x01,0xbc,0x80,0x6f,0xeb,0xf3,0xc8,0x3f,0xbf,0xd2,0xfd,0x46,0xff,0x00,0xcb, + 0x5c,0xe0,0x49,0x8c,0x0f,0x4e,0x73,0xf3,0xb1,0xfb,0x7d,0x17,0x28,0xf8,0x53,0x47, + 0xf7,0x7b,0xfb,0x2b,0x60,0x0a,0xd6,0x21,0x87,0x17,0xb1,0x36,0x36,0xc2,0xbb,0x78, + 0x85,0xa5,0xcd,0x23,0x34,0x09,0x22,0x54,0x68,0x33,0xaa,0xb2,0x48,0x6c,0x44,0x84, + 0x91,0xc6,0xdc,0x6f,0x6b,0x11,0xcf,0xf5,0x94,0xa7,0xad,0x95,0x85,0xe7,0x8f,0xd2, + 0xa4,0xab,0x37,0x04,0x69,0x04,0x93,0x61,0xb0,0x1c,0x5b,0x1d,0xcd,0x37,0xfc,0x82, + 0x29,0x1a,0xc3,0x20,0xe7,0x92,0x3a,0x1f,0x51,0xcf,0xae,0x2f,0xd2,0xd6,0x39,0x7c, + 0x3d,0xcd,0x27,0x69,0xe3,0xdf,0x29,0xfd,0x1b,0x63,0xdd,0x18,0x7c,0x28,0x3f,0x94, + 0xab,0x73,0xc1,0xbf,0x18,0xfb,0x46,0x3d,0x43,0x5c,0x1e,0x37,0x34,0xd8,0x5c,0xb2, + 0x0b,0x4d,0x14,0xc8,0x5c,0x7b,0xa7,0x0e,0x69,0xc7,0xda,0x70,0x69,0x4b,0x4d,0xdb, + 0x1f,0x05,0xbe,0x1c,0xd1,0x8f,0x42,0x60,0x52,0x96,0x9b,0xd1,0x8f,0x7b,0x78,0x78, + 0x26,0x15,0xa7,0x6e,0x30,0x29,0x1b,0x4c,0xa4,0x26,0x47,0x54,0x51,0xea,0x62,0x00, + 0xfd,0x71,0xcd,0xf3,0x66,0x69,0x9f,0x7c,0x53,0xce,0xf3,0x60,0xea,0x60,0x8e,0x7a, + 0x8e,0xc9,0x61,0x7b,0x47,0x0a,0x76,0x90,0xfd,0xb6,0xbf,0xeb,0x8e,0x82,0xea,0x7c, + 0xea,0x3e,0x99,0xe9,0xbc,0xdb,0x38,0x95,0xc2,0x1a,0x4a,0x57,0x30,0xdc,0xdb,0x54, + 0xcc,0x34,0xc4,0xa3,0xea,0x5c,0xa8,0x03,0x1c,0xbd,0x92,0xe5,0xf2,0x64,0x99,0x65, + 0x44,0x55,0x9d,0xb9,0x2a,0xf3,0x0a,0x55,0x87,0xb6,0x37,0x31,0xa1,0x20,0x9b,0xfd, + 0x58,0xfe,0xd8,0xf3,0x7e,0x35,0x26,0x1b,0x17,0xd7,0xfc,0x7f,0x2b,0xb3,0xe1,0xac, + 0xcb,0x9f,0xf4,0xf7,0xf8,0x5b,0x1e,0x41,0x0c,0xd4,0x99,0xbe,0x5c,0xd5,0x33,0x01, + 0x15,0x64,0xf1,0xbc,0x67,0xb9,0x70,0x6c,0x6f,0xaa,0xe2,0xe7,0x6b,0xdb,0xed,0xb5, + 0xb6,0xc6,0x89,0x4d,0xad,0xe1,0xa7,0x2b,0xa4,0xc2,0xae,0xc0,0x1d,0x5f,0xe6,0x06, + 0xc6,0xc3,0x8b,0x91,0xfd,0x0f,0xb6,0x32,0x3a,0x2c,0xde,0xba,0x89,0x68,0xd6,0x5a, + 0xa9,0x33,0x3a,0xd8,0x66,0xee,0x04,0xa9,0x95,0x12,0xdb,0x83,0xda,0x53,0x1a,0x0d, + 0x80,0x50,0x37,0x04,0xdc,0x93,0xbf,0x18,0xd2,0xb2,0x3c,0xd3,0x2c,0xcd,0xb2,0x49, + 0x33,0xac,0x9e,0x72,0xd0,0xc6,0xad,0x2c,0xb0,0x4b,0x11,0xef,0xc6,0xc9,0xbb,0x44, + 0x55,0x41,0xbc,0x80,0x03,0x60,0x3f,0x36,0xc4,0x73,0x8f,0x33,0x04,0x9e,0x4e,0xa2, + 0x39,0x0f,0x00,0x8b,0xf9,0x5e,0x7f,0x0b,0xb7,0x2b,0x3c,0xc8,0x5e,0xc1,0xd4,0x14, + 0x9e,0xa9,0x19,0xc5,0x25,0x34,0x39,0xc7,0x4f,0xe6,0xcb,0x40,0xf9,0x4a,0xcb,0x3d, + 0x45,0x25,0x44,0x1d,0xda,0x7a,0xc8,0xf4,0x6e,0x1c,0x0f,0x56,0xa5,0xdd,0x96,0xc7, + 0x9d,0xac,0x71,0xc7,0x1d,0x67,0x43,0x4b,0x47,0x9f,0x37,0x62,0xa6,0x2a,0xfa,0x2a, + 0xc2,0xf5,0x11,0x32,0xdb,0xbc,0xea,0xfb,0xe8,0x94,0x7e,0x6e,0xe8,0x27,0xd4,0x08, + 0x04,0x1b,0x80,0x48,0x18,0xee,0xe3,0x16,0x96,0x23,0x63,0x63,0x8a,0xa7,0x51,0x7c, + 0x38,0xca,0x73,0xc4,0xea,0x4a,0xaa,0x4a,0x7a,0x4a,0x3c,0xff,0x00,0x3d,0xa5,0x10, + 0x4b,0x99,0x4f,0x4a,0xb5,0x26,0x32,0x36,0xd6,0x8a,0xdf,0x91,0x8a,0xfa,0x49,0x52, + 0x2f,0xb1,0x37,0x20,0x63,0xd7,0x78,0xa7,0x86,0xbb,0x58,0x2d,0x87,0x23,0xf8,0xe9, + 0xd3,0xb7,0x6e,0xf6,0xbc,0xce,0x97,0x54,0xd8,0x70,0xe0,0xb8,0x56,0xa9,0x5f,0x44, + 0x92,0xd6,0xb8,0x62,0x01,0x05,0x98,0xdc,0x36,0xd6,0x00,0x0f,0xd0,0x62,0x32,0x33, + 0xa2,0xd7,0x88,0xbf,0x21,0x83,0x86,0xd2,0x4d,0xf6,0x20,0x03,0xcf,0xef,0xf6,0xc6, + 0xa1,0xf1,0x43,0xe1,0x75,0x47,0xc3,0xda,0xea,0x2a,0x69,0xa7,0x7a,0xd3,0x3a,0xb2, + 0xc5,0x5b,0xa5,0x60,0x8e,0x76,0xda,0xca,0xaa,0xcc,0x48,0x1b,0x91,0x76,0xb0,0x3a, + 0x4d,0xaf,0x66,0xb5,0x1b,0x25,0x6c,0xae,0x5c,0xe6,0x9a,0x2e,0xab,0xa8,0xad,0xa7, + 0xcb,0x8b,0x98,0xe6,0x7a,0x05,0x59,0x25,0x8a,0xed,0x62,0xc1,0x5b,0x63,0x6d,0xc9, + 0x1c,0x9b,0x5b,0x6b,0xdc,0x78,0x67,0x42,0xf8,0x5e,0x63,0x90,0x51,0x5e,0x8a,0x37, + 0x87,0x37,0x73,0x72,0x11,0x14,0xa0,0x56,0x56,0xcd,0x15,0x12,0xc9,0x95,0xb4,0x90, + 0x2c,0x64,0xc6,0xed,0xb3,0x69,0x0a,0xcc,0xe7,0x9b,0x30,0x0e,0x58,0x02,0xaa,0x35, + 0x9f,0xe5,0x5b,0x60,0x9a,0x3e,0x91,0xea,0x5c,0xcd,0x69,0xf2,0xfc,0x9e,0x0a,0xac, + 0xc2,0x92,0x6a,0x81,0x47,0xdd,0xa4,0x46,0x92,0x00,0xd6,0x59,0x0a,0x92,0x05,0xec, + 0x35,0x6a,0x24,0xd8,0x7a,0x49,0xb9,0xb5,0xf1,0x2f,0xd7,0xc3,0x2e,0x83,0xaa,0x16, + 0x93,0xa7,0x72,0xea,0x4a,0x5c,0xac,0xc3,0x1b,0x41,0x48,0xbd,0xc8,0x9a,0x4d,0x2b, + 0x6e,0xe3,0xa3,0x92,0x61,0x9a,0x45,0x01,0x98,0x6a,0xb0,0xb8,0x22,0xf7,0x18,0xbc, + 0xf4,0x8b,0x66,0xd5,0x79,0xbe,0x51,0x9b,0xf4,0x55,0x55,0x76,0x57,0xd2,0x0f,0x99, + 0xc4,0x4d,0x2d,0x16,0x71,0x19,0x7a,0x4a,0x91,0x10,0x94,0xc7,0x31,0x91,0x17,0xba, + 0x00,0xa7,0x8e,0x46,0x25,0x19,0x40,0x21,0x2e,0x48,0x38,0xd5,0x1c,0x21,0xcf,0x2d, + 0x76,0x73,0xd3,0xdf,0x09,0x5c,0xf2,0xd6,0xd8,0xfc,0xaa,0x7e,0x51,0xd0,0x47,0xa8, + 0x7a,0x85,0xba,0x59,0x2a,0xa3,0xca,0x6a,0xa8,0xc5,0x45,0x4b,0xd5,0x66,0x37,0x86, + 0x37,0x58,0xe2,0x2d,0xb4,0x41,0x49,0x55,0x3a,0x79,0x66,0xb9,0xd5,0xc0,0x26,0xc6, + 0xbd,0xd4,0x94,0xd9,0x74,0x74,0x99,0x72,0x64,0xb9,0xab,0x67,0x6e,0xf1,0x39,0x7a, + 0x85,0xa1,0x7a,0x70,0x02,0x80,0x02,0xa8,0x3f,0x9a,0xd6,0x3a,0x9a,0xc0,0x9b,0x0b, + 0x83,0xc9,0xd1,0xba,0xd7,0xe2,0x19,0xea,0x7c,0xab,0x33,0x81,0x60,0xa8,0xff,0x00, + 0xf9,0x04,0x89,0x99,0xe6,0x31,0x32,0x41,0x51,0x2a,0x11,0x00,0x30,0x40,0x34,0x20, + 0xb4,0x40,0x2a,0x36,0xa5,0x21,0xb6,0x72,0xc0,0x1d,0xb1,0x56,0x3d,0x53,0x5f,0xd7, + 0x39,0xae,0x55,0x43,0x9d,0xd5,0x53,0x0c,0xb2,0x8d,0x56,0x86,0x98,0x53,0xa4,0x94, + 0xc9,0x43,0x4e,0xe5,0x17,0x5a,0x98,0xd0,0xd8,0x5c,0xdc,0x97,0x0d,0x7d,0x46,0xf7, + 0x3a,0x6c,0x25,0x64,0x39,0x63,0x32,0x6f,0x9f,0x67,0x14,0x3f,0x8f,0x54,0x1a,0x5e, + 0x72,0xec,0x7a,0x2a,0x65,0x54,0x62,0x16,0xa6,0x86,0x72,0xf0,0xdd,0x01,0x69,0xe4, + 0xd6,0xb7,0x24,0x9b,0x3d,0x80,0xbe,0x9d,0x2c,0xbc,0x5f,0x82,0x77,0xbe,0x2e,0x1d, + 0x43,0x9c,0x66,0x34,0xcb,0x1d,0x08,0xea,0x0a,0x73,0x94,0xc1,0x40,0x68,0x12,0x4c, + 0xa6,0x42,0x60,0xa9,0x85,0x64,0xb8,0x89,0xb6,0x05,0x75,0x2a,0x87,0x3a,0xb5,0x10, + 0x0a,0x86,0xdf,0xd2,0x27,0x7e,0x31,0x43,0x90,0x36,0x64,0x99,0x57,0x42,0x65,0xc9, + 0x96,0x50,0xe5,0xcd,0x51,0x18,0xa7,0x8c,0x2b,0x2c,0xae,0x92,0x39,0x9e,0x56,0x76, + 0x3a,0xd8,0xad,0x92,0x21,0x7e,0x44,0x6d,0xa4,0x5b,0x76,0x7f,0xe1,0x1e,0x61,0x97, + 0x53,0x75,0x65,0x16,0x5b,0x53,0xd3,0xf9,0xad,0x6d,0x26,0x65,0x2b,0x52,0xcb,0x4b, + 0x4d,0x54,0xd1,0x5e,0x4b,0xc6,0x10,0xdc,0x5b,0x59,0x47,0x25,0xda,0xc0,0x14,0xb8, + 0x23,0xf2,0xe2,0x9f,0x23,0x64,0xde,0x4d,0xf5,0xe7,0xa7,0xbc,0xa3,0xbf,0xe0,0xdf, + 0x5f,0x45,0x55,0xa1,0xc8,0x68,0x73,0x2c,0xf3,0x46,0x57,0x98,0x7c,0xb5,0x6b,0x4e, + 0xb3,0xd2,0xa0,0x54,0xab,0x81,0x23,0xd4,0x35,0x09,0x25,0x60,0xa1,0x84,0x71,0x87, + 0x63,0x25,0x8a,0x92,0x85,0x74,0x8b,0x92,0x20,0x33,0x89,0x68,0x9e,0xbe,0x17,0xc8, + 0xd2,0xa6,0x38,0xd2,0xda,0xa1,0x90,0xac,0x84,0xc8,0xac,0x47,0xa4,0x82,0x75,0x29, + 0x50,0xb6,0x04,0x93,0xc8,0xdc,0x01,0x8e,0x87,0xeb,0x8f,0x86,0xb9,0xf6,0x4b,0x3e, + 0x70,0x99,0x4d,0x1d,0x07,0x50,0xe7,0x75,0x14,0xd5,0xf5,0xbd,0x43,0x4b,0x46,0x85, + 0x68,0xe8,0x19,0xe1,0x7e,0xdb,0x98,0xc0,0x29,0x0b,0x85,0x92,0x46,0x45,0x27,0x51, + 0x5d,0x4c,0xe0,0x06,0x5b,0xe4,0x59,0x5f,0x40,0xd5,0x67,0xf9,0xb5,0x75,0x1e,0x48, + 0x2a,0xea,0xba,0xad,0x2b,0x97,0xe5,0xf2,0x6a,0x7a,0x46,0xec,0xc3,0x1f,0x78,0x2b, + 0x34,0xf2,0x33,0x2e,0x88,0xc0,0x70,0x3d,0x20,0xd8,0x30,0xd5,0xa4,0x5e,0xd7,0x3f, + 0x4a,0xf6,0x1d,0x95,0xc9,0xf7,0x4a,0x36,0x56,0xb8,0x6e,0xbc,0x29,0xaf,0x86,0x59, + 0x6f,0x49,0x55,0xdb,0x3b,0xcf,0x7a,0x83,0x21,0xe9,0xfc,0x83,0x2a,0x99,0x7b,0xf4, + 0xd9,0xac,0x6d,0x5b,0x59,0x39,0x2a,0xe5,0x62,0x4a,0x54,0x16,0xa8,0x41,0x21,0x0d, + 0xa9,0xc2,0xef,0xe9,0x6b,0xa8,0xb6,0x23,0xb3,0xea,0x0a,0x57,0x34,0xbd,0x3b,0xd2, + 0x99,0xff,0x00,0x4f,0x75,0x65,0x0e,0x63,0x3a,0xe6,0x02,0xae,0x9b,0x2b,0x92,0x96, + 0x68,0x6a,0xe5,0xfc,0x03,0x08,0xd7,0x1e,0xb0,0x03,0x59,0xc4,0x48,0x0d,0xd2,0x30, + 0xd6,0x1c,0x62,0xd9,0xf1,0x50,0xf5,0x14,0x3d,0x51,0x2d,0x07,0x5c,0xcd,0xd2,0x9f, + 0xe1,0x63,0x30,0xa7,0xae,0xcd,0x21,0xe9,0xda,0x7f,0x9a,0x83,0x2f,0x9b,0xb3,0xd8, + 0x8f,0xbd,0x35,0x8c,0xab,0x60,0xa4,0x76,0x4b,0xd8,0xf6,0xcd,0x85,0xca,0x16,0xc8, + 0xf2,0x6c,0x9e,0xb3,0x39,0x58,0xd3,0xa7,0xfb,0xf3,0x57,0xc3,0xdb,0x99,0x9d,0x51, + 0xc3,0xc2,0xfa,0xbb,0x6a,0x3b,0x83,0x61,0xae,0x49,0x10,0x29,0x60,0x05,0xca,0xad, + 0xc1,0xe6,0x38,0x06,0x1d,0x80,0x7f,0x25,0x16,0xfc,0x5f,0x19,0x3c,0xfd,0x97,0x42, + 0x65,0xb9,0x93,0x49,0x9e,0xd3,0x53,0xe6,0x66,0x65,0xa4,0x59,0x5a,0x18,0x94,0xc6, + 0x59,0x5e,0xda,0xb5,0x07,0x3b,0x34,0x71,0x82,0xa7,0x7d,0xfd,0x5b,0x58,0x03,0xab, + 0x13,0x35,0x30,0x54,0xc7,0x93,0xd3,0xc7,0x47,0x13,0xd6,0x52,0x4b,0x4e,0x3b,0x73, + 0x34,0xc2,0x46,0x54,0x01,0x8f,0xa6,0x35,0x2a,0xec,0x34,0x9d,0xc8,0xdc,0x8f,0xbd, + 0xf1,0x49,0xeb,0x0a,0x79,0x68,0xea,0x28,0xa7,0x55,0xa4,0xa2,0xa8,0x65,0x64,0xac, + 0xac,0x92,0xb7,0xbe,0xee,0x0b,0x10,0x15,0x52,0x37,0xee,0x49,0xa5,0x6d,0x70,0x55, + 0x4f,0xe5,0xe7,0xc8,0xe3,0x3a,0x5a,0x2c,0xfe,0x09,0x28,0x63,0x8a,0x7c,0xc1,0x35, + 0xc4,0x22,0x88,0xe8,0x26,0x22,0xba,0xac,0xce,0x14,0x38,0x7f,0x4e,0xa3,0x6d,0xef, + 0xcf,0x24,0x63,0xca,0x16,0x97,0x9d,0xcd,0x5a,0x2e,0xb9,0x5a,0xae,0x5d,0x99,0xc8, + 0xf9,0xa5,0x3e,0x5a,0x63,0x32,0x3d,0x2d,0x38,0xa7,0x67,0x91,0xbb,0x65,0x27,0x21, + 0xc9,0x65,0x53,0xe9,0xd1,0xa5,0x35,0x05,0xe0,0x06,0x17,0x22,0xc4,0xe2,0x58,0x67, + 0x54,0xff,0x00,0xe2,0x8d,0x92,0xc2,0xb3,0x1e,0xd4,0x01,0x9e,0x49,0x63,0xd7,0xde, + 0x46,0x02,0xe3,0x52,0x82,0x48,0x0c,0x09,0xb8,0xb2,0x9b,0x11,0xee,0x71,0x9d,0x47, + 0x9f,0xc3,0x4f,0x55,0x44,0x52,0x82,0x79,0x73,0x29,0x24,0x8e,0x10,0x8d,0x48,0xcd, + 0x2c,0x68,0xcf,0xaa,0x56,0x8e,0x26,0x21,0xc2,0xdc,0x15,0xd4,0xc3,0x4b,0x59,0x85, + 0xec,0x06,0x35,0xec,0x8f,0x20,0x87,0x25,0xa4,0x9e,0x64,0x92,0x64,0xa9,0x99,0x3f, + 0x16,0x59,0x6a,0x02,0x33,0x36,0xa6,0x25,0x6f,0xab,0xd4,0x54,0xd8,0x59,0xad,0x60, + 0x83,0xdb,0x7e,0x9e,0x80,0x3e,0x46,0x08,0xae,0x80,0x36,0x4e,0x05,0x00,0x3a,0x72, + 0x72,0x40,0x07,0xa0,0xc2,0xcb,0x33,0x83,0x0e,0xee,0x7a,0x57,0xbe,0xca,0x52,0x8e, + 0x58,0xe5,0xd1,0x23,0x98,0xe1,0x1a,0x03,0x04,0x0f,0xb8,0xb9,0x37,0xbf,0xd8,0x9b, + 0x7b,0x1c,0x48,0x68,0xbf,0x1b,0xe0,0x16,0xf9,0x97,0x82,0x9e,0x3a,0xe9,0xde,0x08, + 0xd6,0xcd,0x23,0xb4,0xd1,0xbb,0xc8,0xdc,0x85,0x24,0x0d,0x2d,0x7b,0x92,0x2d,0xed, + 0x73,0xe3,0x05,0x06,0xb2,0xc6,0xdd,0xd8,0xe0,0x85,0x41,0x5f,0x5b,0x85,0xd8,0x1f, + 0x00,0xfe,0x9b,0xf1,0x8f,0xa1,0xf8,0x5e,0xad,0xe0,0x08,0xe4,0x38,0x00,0x73,0xc8, + 0x3d,0x8e,0x78,0x1c,0x5d,0x0e,0x29,0x70,0xb5,0x51,0x0b,0xdc,0xde,0xa7,0xdf,0xf3, + 0xf5,0x4e,0x76,0x89,0xc7,0xdd,0xaf,0xa6,0x0a,0x8d,0x43,0xa2,0xb2,0xee,0x08,0xc3, + 0xbd,0xaf,0xa6,0x3d,0x10,0x70,0x70,0xb0,0xb9,0xa7,0x18,0x40,0x88,0x8f,0xb6,0x1e, + 0x5a,0x4d,0x50,0x99,0x10,0xec,0xa7,0xd4,0x0e,0x0c,0x40,0x52,0xfa,0x7c,0x8c,0x27, + 0x41,0xb1,0xb7,0x9e,0x70,0x2c,0xa8,0x81,0xed,0x1c,0x7a,0x22,0x3e,0x06,0x0b,0x11, + 0xe1,0x6b,0x11,0x90,0x85,0x51,0x73,0xf4,0xc3,0x28,0xb2,0x7f,0x88,0xd5,0xd0,0x54, + 0x67,0x54,0x59,0x4e,0x63,0x96,0x66,0xf3,0xc3,0x48,0x82,0xae,0x36,0xa7,0x68,0x04, + 0x0f,0x23,0x82,0x16,0x42,0x5a,0x40,0xc1,0x96,0xcc,0xa2,0xe3,0x6b,0xb1,0x17,0xe7, + 0x14,0xba,0x3a,0x1c,0xa6,0x9e,0xaa,0x4a,0x9a,0x9a,0x0c,0xfe,0x5a,0x89,0x80,0x31, + 0xb9,0x9a,0x8a,0x15,0x8d,0x7f,0x98,0x0d,0xf9,0x3b,0x0b,0x9d,0xad,0xe2,0xe6,0xf8, + 0xb9,0x7c,0x45,0x82,0x49,0xfa,0x9e,0x1a,0x8a,0x60,0x4d,0x2c,0xb4,0x71,0x76,0x24, + 0x2d,0x71,0x30,0x17,0x05,0x94,0x73,0xa7,0x51,0x20,0x37,0x0d,0x63,0x6d,0xb7,0xc5, + 0x33,0x32,0xa7,0xaa,0x19,0x5e,0x64,0x23,0x1f,0x88,0x29,0x1c,0x46,0x4a,0xb1,0x00, + 0xed,0x71,0x60,0x09,0x1c,0xf2,0x2e,0x45,0xb6,0x18,0xf9,0x7f,0x88,0x6a,0x1f,0x26, + 0xad,0xe5,0xae,0xb1,0x74,0x17,0xb5,0xd2,0x46,0xd6,0x40,0xc0,0x45,0x61,0x1c,0xdf, + 0xe0,0xf5,0x08,0x42,0x65,0x39,0xcc,0xad,0xea,0x7d,0x0b,0x9b,0xd2,0x02,0x3d,0x87, + 0x06,0xde,0x39,0xfe,0x98,0x7f,0x25,0xad,0xa7,0xe9,0xec,0xd6,0xa2,0xa7,0x21,0xe9, + 0xfc,0xf1,0xeb,0x2a,0x90,0x47,0x35,0x31,0xcf,0x29,0x4a,0x54,0x93,0x7d,0x20,0x03, + 0x15,0xc3,0x86,0x37,0x06,0xff,0x00,0xeb,0x8a,0xc7,0x45,0xc5,0x5b,0x0d,0x05,0x72, + 0xce,0x6a,0x6a,0x27,0x69,0xd1,0x8c,0x92,0x46,0x54,0x8b,0xa7,0x1b,0xdb,0x60,0x76, + 0xe0,0x7d,0xaf,0x7b,0xdb,0xb2,0x29,0x29,0x93,0xaa,0x72,0x24,0xcc,0xab,0xa1,0xcb, + 0x10,0xd7,0xc0,0xcb,0x35,0x61,0x2b,0x10,0x2b,0x22,0x9f,0x5b,0xef,0xa0,0x11,0x7b, + 0x31,0x16,0xb8,0xb1,0x22,0xf7,0xc7,0x3d,0xcf,0x94,0x58,0x25,0x6c,0x01,0x87,0x2b, + 0x65,0xa1,0x9a,0x3c,0xc2,0x86,0x92,0xb2,0x0b,0x98,0xaa,0xa0,0x8e,0x64,0xbf,0xb3, + 0x28,0x3f,0xde,0xd8,0x7e,0x4d,0x10,0x44,0xf2,0xcc,0x42,0x46,0xbb,0xb1,0x3c,0x0c, + 0x42,0xf4,0x75,0x7c,0x23,0xe7,0x7a,0x7a,0x48,0xa4,0xa7,0xae,0xca,0xaa,0x27,0xed, + 0xa3,0x59,0x92,0x5a,0x46,0x9d,0x9a,0x19,0x23,0x91,0x49,0x56,0x5d,0x0e,0x83,0x63, + 0xed,0x8a,0x87,0xc5,0xce,0xb6,0xcc,0xba,0x72,0xb6,0x96,0x8b,0x28,0x96,0xb2,0x90, + 0x22,0x89,0x2a,0xdf,0xe5,0x41,0x46,0x42,0xa4,0x6c,0xc4,0xee,0x34,0xb5,0xfe,0x8e, + 0x8b,0xc7,0x9f,0xa4,0x9f,0x13,0x89,0xba,0x36,0xea,0x5d,0xd6,0xbb,0x72,0x7e,0xdc, + 0x2f,0x16,0x74,0x8f,0x1a,0x83,0x0f,0x6f,0xdb,0xfd,0xab,0x4e,0x5d,0x9e,0xf4,0xef, + 0x5a,0x54,0x7c,0x83,0xd1,0x0a,0xd3,0x0e,0xa9,0x61,0x5a,0xfa,0x00,0xc9,0x72,0x19, + 0x0b,0x2e,0xa0,0x74,0xbd,0x83,0x8b,0x10,0x08,0x00,0xf8,0xc6,0x65,0xfc,0x42,0xfc, + 0x3d,0xe9,0x68,0xf2,0x29,0xba,0xa1,0x93,0x2d,0xc9,0xb3,0x48,0xc5,0xbd,0x0d,0xd9, + 0x7a,0xd6,0xb1,0x0b,0x1c,0x71,0x86,0x09,0xac,0x97,0x2c,0xcd,0xa5,0x89,0x0b,0xbd, + 0x86,0xf8,0x80,0xe9,0x8c,0xde,0x4a,0xde,0xaa,0x8f,0xa9,0x73,0x2c,0xe2,0x3f,0x97, + 0x8e,0x58,0xa4,0x9e,0xa6,0x8e,0x13,0x1b,0xf7,0x5c,0x5c,0xaa,0xc2,0x41,0x12,0xdc, + 0x93,0x21,0x52,0x76,0x1a,0xc0,0x03,0x4a,0xe2,0xdf,0xf1,0x43,0xe3,0x6d,0x04,0x3d, + 0x33,0x2c,0x9d,0x2a,0xc8,0x33,0x0a,0x7c,0xc9,0x40,0x69,0x8a,0x19,0xe1,0x40,0xaa, + 0xc9,0x53,0x14,0x45,0x4e,0xb8,0xde,0xf2,0x46,0xc4,0x32,0xba,0xee,0x45,0xc5,0xef, + 0xc1,0x67,0x88,0xc3,0xac,0xd3,0x48,0xdd,0x49,0x1b,0xba,0x63,0x24,0x77,0xae,0xe0, + 0xe1,0x6d,0x3a,0x77,0xc3,0x33,0x4c,0x57,0x5d,0x57,0x2f,0x74,0xff,0x00,0x5b,0x35, + 0x0e,0x4f,0x9a,0x65,0x59,0xeb,0x47,0x99,0xe5,0x75,0x74,0x2a,0xb1,0xd1,0xbd,0x2a, + 0x48,0x8b,0x34,0x68,0x7b,0x2c,0x64,0x57,0x47,0x40,0xa7,0x4d,0xc8,0x62,0x5b,0x4a, + 0x86,0x57,0x08,0x06,0x24,0xbe,0x1d,0xfc,0x39,0xac,0xea,0x1c,0xfb,0x27,0xa6,0xa8, + 0xca,0xeb,0x68,0xe2,0xcd,0xa1,0x2f,0x43,0x5c,0x29,0xbb,0x91,0x84,0xf5,0x46,0x67, + 0x90,0x12,0xa1,0x22,0x0f,0x63,0xdc,0xd5,0x75,0x20,0x58,0x35,0xf6,0x3b,0xaa,0xe5, + 0xc8,0xf3,0x2c,0xe7,0x38,0xcc,0xe9,0x65,0xc9,0x85,0x2d,0x6d,0x19,0x5c,0xbb,0x2a, + 0xcb,0x97,0xbf,0xf2,0xb2,0x82,0x83,0xb4,0x75,0x47,0x19,0x41,0x72,0xe5,0x0c,0x6b, + 0xbf,0xb3,0x0b,0xde,0xc3,0xf0,0xdf,0xa8,0xf3,0x9e,0x8c,0x96,0x7a,0x5a,0x5c,0xb2, + 0x29,0x73,0x08,0x28,0xeb,0xa3,0xcd,0x62,0x6c,0xc7,0xb5,0x23,0xc1,0x0c,0x6e,0xc6, + 0x78,0x2a,0x35,0x85,0x8f,0xb6,0x41,0x03,0xb2,0x41,0x27,0x50,0x21,0xb8,0xc7,0x26, + 0x36,0xb4,0xca,0xd1,0x21,0xb0,0x3b,0x7c,0xd7,0x4d,0xee,0x76,0xc2,0x59,0x82,0x56, + 0xc7,0xf3,0xdd,0x0d,0x57,0x58,0xb9,0xae,0x62,0xf9,0x43,0x47,0x93,0xa3,0xd1,0xe4, + 0xf3,0xfc,0xaf,0x72,0xb4,0xc7,0x1b,0x2d,0x3a,0x53,0x53,0xa8,0x55,0x5a,0xd9,0x09, + 0xbb,0x6a,0xb4,0x8a,0x82,0x60,0x1c,0x31,0x6b,0x2e,0x01,0xd7,0x52,0x74,0xfe,0x7b, + 0x5a,0x73,0xc7,0xcd,0xe9,0xaa,0xcd,0x5d,0x62,0x50,0x54,0x45,0x2d,0x29,0xa4,0x9f, + 0x2d,0x8d,0x15,0x10,0x49,0x2c,0x51,0x80,0x64,0xb2,0x2e,0xc2,0x21,0xa4,0x69,0xbb, + 0x6e,0x42,0x60,0xaf,0x84,0x39,0x34,0x39,0x97,0x5c,0x64,0x75,0x19,0x7e,0x55,0x9a, + 0xd7,0x55,0x4c,0xc8,0xb0,0xc4,0x99,0xb1,0xa4,0x51,0xa8,0x13,0x34,0x46,0x5d,0x3d, + 0xc0,0x04,0x4c,0xce,0xcc,0x84,0xed,0x20,0xd5,0x65,0x63,0x8e,0x87,0xca,0xbe,0x17, + 0x57,0xfc,0x34,0xeb,0x1e,0x9f,0x3d,0x15,0x91,0xd2,0xf5,0x0e,0x45,0x58,0xad,0x4f, + 0x5b,0x53,0x98,0x94,0x9e,0xab,0x2a,0x06,0xda,0xc4,0x6e,0xca,0xa3,0xb6,0xc8,0x19, + 0x45,0xef,0x76,0x24,0x9d,0x3e,0x91,0x8e,0xa8,0x12,0x6b,0x63,0xfe,0x90,0x05,0xf6, + 0x27,0x3d,0x0f,0xbe,0x02,0xc6,0x4b,0x34,0xaf,0x22,0xcd,0xd7,0xa7,0xbf,0xe5,0x33, + 0x94,0x7f,0x0c,0xdd,0x03,0x92,0xd0,0x65,0xf5,0x15,0x91,0x66,0x95,0xd5,0x74,0xd0, + 0xba,0xcf,0x34,0x06,0x6a,0x71,0x53,0xae,0x37,0x8d,0x64,0x34,0xec,0x4b,0x23,0x28, + 0x75,0x6f,0xcc,0x2e,0x53,0x75,0x00,0x95,0xc3,0xbd,0x3f,0xd0,0x55,0xdf,0x0b,0xe9, + 0xba,0xab,0xaa,0x8d,0x5d,0x76,0x69,0x35,0x1e,0x5b,0x53,0x2e,0x59,0x5d,0x99,0x2c, + 0x11,0x54,0x53,0x4a,0x69,0x84,0x6f,0x34,0xec,0xd2,0xb6,0x95,0x26,0x28,0xca,0xd8, + 0x16,0x3c,0x10,0xc4,0x81,0x8d,0x77,0x32,0x99,0xa9,0xe2,0x96,0xa2,0xaa,0xb1,0xe9, + 0xa4,0x70,0x56,0x08,0x62,0x75,0xb3,0x1e,0x05,0xf5,0x29,0x2e,0x6e,0x6e,0x48,0x02, + 0xc0,0x58,0x02,0x79,0xcd,0x3a,0xdf,0x22,0xeb,0x6a,0x5c,0xd7,0xa6,0xeb,0x72,0x9a, + 0xbc,0x9b,0x31,0xca,0x12,0xb6,0x31,0x15,0x2f,0x51,0x19,0xaa,0xa5,0xa7,0xac,0x70, + 0xc2,0x24,0x48,0x12,0xd1,0xca,0x58,0xaa,0x95,0x2c,0xac,0xd1,0xc8,0xec,0x6e,0xa8, + 0x9a,0x87,0x5a,0x6d,0x34,0x10,0x32,0xd8,0xcc,0x8f,0x76,0xb9,0xf1,0xcd,0x24,0xa6, + 0x9e,0xee,0x7b,0xfe,0xca,0x43,0x35,0xe8,0xb1,0x59,0xf0,0xda,0x9b,0x22,0xab,0xae, + 0x4f,0xf0,0x6a,0x58,0xe9,0xa5,0xcc,0x72,0xd8,0x09,0xa5,0x93,0x30,0x89,0xac,0x5e, + 0x7a,0xc9,0x3d,0x53,0x07,0x7b,0x8a,0x96,0x00,0x02,0x74,0x15,0x25,0x8e,0xe3,0x1e, + 0xe9,0xce,0xb5,0xa2,0xf8,0x09,0xd0,0x92,0xae,0x59,0x51,0x5b,0x9f,0xe7,0x39,0xcd, + 0x55,0x35,0x7d,0x34,0x89,0x41,0x12,0x52,0xd0,0x09,0x62,0xbc,0xd1,0xc5,0xae,0x42, + 0xce,0xcc,0x23,0x54,0x62,0x17,0x48,0xb0,0xb9,0x66,0x8c,0x8c,0x55,0x3a,0x8b,0xad, + 0x3a,0xba,0x93,0x2f,0xea,0xce,0xa4,0xcb,0xf2,0x8a,0xac,0x95,0xf3,0xba,0xb3,0x0d, + 0x5d,0x5b,0xcf,0x05,0x4c,0xb0,0x99,0x1e,0x68,0xe5,0xa6,0x8e,0xa9,0xa3,0x13,0x00, + 0xcf,0x03,0x05,0x88,0x33,0x5a,0x34,0xb9,0x36,0xd2,0x71,0x95,0x57,0x75,0x13,0xd5, + 0x7f,0x83,0xc1,0x36,0x5b,0x34,0xf4,0x51,0xa5,0x33,0xb3,0x48,0xa1,0x6a,0x27,0x54, + 0x41,0x1b,0x76,0xdc,0x2f,0xa1,0x0a,0xa8,0x00,0x00,0xc4,0x14,0x07,0x51,0x20,0xe3, + 0x85,0xa8,0xd5,0xb0,0x10,0x5a,0x29,0xd5,0xca,0xea,0x45,0xa7,0x34,0x5a,0xf3,0x62, + 0xd0,0x1d,0x4b,0x9e,0xc9,0xd4,0x79,0xb5,0x7e,0x7d,0x53,0xd8,0x49,0x33,0x6a,0xba, + 0x9a,0xa9,0xe0,0x86,0x32,0x88,0x8e,0xec,0x59,0x85,0xad,0xa7,0x97,0x20,0x6e,0x4d, + 0x80,0xbd,0xb6,0xc5,0x8f,0xa2,0x24,0x7e,0x88,0x49,0xba,0xb2,0x9f,0xaa,0x5f,0x23, + 0xcf,0x29,0x92,0x27,0xca,0xf2,0xc8,0xa9,0xa4,0x69,0x33,0x48,0xde,0x46,0x57,0x1a, + 0x88,0x0a,0xa8,0x3b,0x7c,0x9d,0x5b,0xd8,0x81,0x75,0xc5,0x36,0x8a,0xa1,0xde,0x3a, + 0x58,0x6b,0x65,0x9e,0x6c,0xa5,0x27,0x69,0x1e,0x05,0x67,0x7e,0xda,0x9d,0x06,0x47, + 0x54,0xd4,0xab,0x76,0x50,0x01,0xdc,0x13,0xa6,0xd7,0x1b,0x1c,0x5d,0x33,0x9e,0xba, + 0xea,0x1e,0xb1,0xa0,0x9e,0x9d,0xfa,0x82,0x4c,0xce,0x88,0x4c,0x66,0x9e,0x9e,0x58, + 0xa0,0xa5,0x73,0x4d,0x4b,0x1e,0x98,0x59,0x82,0xda,0xca,0x11,0xd8,0x2c,0x28,0xcc, + 0xaa,0x6f,0xa6,0xe4,0xdf,0x1c,0x98,0xcd,0x12,0xfe,0xbd,0x3e,0x7f,0x75,0xd0,0x2d, + 0xc5,0x74,0x52,0x74,0x2f,0x55,0xd5,0xfd,0x6b,0x33,0x28,0x69,0xb3,0x3c,0xce,0x76, + 0x71,0x1d,0x1c,0x61,0x14,0x38,0x56,0x27,0x70,0xc9,0x66,0x00,0x29,0x5d,0xfc,0x6f, + 0x8d,0x42,0x2e,0x9c,0xcb,0x2b,0x72,0xd6,0xcd,0x73,0x98,0x23,0x88,0x54,0x4e,0xec, + 0x92,0xa5,0x53,0x14,0x81,0x1d,0x14,0x3c,0x01,0xc0,0x8f,0x62,0x15,0xd6,0x42,0x41, + 0x25,0x98,0x10,0x77,0x27,0x11,0xbd,0x63,0xd2,0x19,0x5d,0x1d,0x15,0x7d,0x76,0x52, + 0x3b,0x13,0xe4,0x75,0x0b,0x35,0x2b,0x4f,0x0b,0x09,0xe9,0x44,0x4e,0x8a,0xcc,0xe5, + 0x10,0xa1,0x88,0xb2,0x39,0x0a,0x54,0x05,0xb9,0x0b,0x7b,0x36,0x21,0xcd,0x7e,0x65, + 0x92,0x52,0x64,0x39,0x8e,0x74,0x61,0xcc,0x32,0x5a,0xa5,0x3a,0x26,0xca,0x5d,0xa0, + 0x9e,0x48,0x64,0x60,0xb7,0x0c,0x41,0x48,0x7f,0xf4,0xd6,0xc7,0x7f,0x48,0xd8,0x10, + 0x6f,0xc2,0x99,0x84,0x81,0xb4,0xd7,0xbf,0x5a,0x56,0x37,0x82,0xac,0x10,0xd1,0xe4, + 0x74,0xb5,0x27,0x2c,0xc8,0xe9,0xb3,0x33,0x2d,0x38,0x2d,0x49,0x5b,0x04,0x49,0x2b, + 0x34,0x4d,0x22,0x02,0x11,0x81,0xba,0x59,0x4b,0xaf,0xa4,0x12,0x2d,0xaa,0xe7,0x49, + 0x38,0xb8,0xd2,0xe7,0xf9,0xd6,0x6c,0xf0,0xe4,0xff,0x00,0xe1,0x34,0x99,0x5c,0x30, + 0x37,0x71,0xea,0xea,0x43,0x34,0x92,0x2e,0xa5,0xd7,0x02,0x69,0x05,0x9e,0xda,0xb7, + 0x91,0x48,0x1e,0x90,0x6e,0x43,0x1c,0x50,0xf2,0xca,0xd6,0x7c,0xf6,0xa7,0x2e,0xa4, + 0xa7,0x7a,0xfa,0x22,0x15,0x2b,0x63,0x98,0xac,0x55,0x48,0xb1,0xb9,0x4b,0x4b,0xa4, + 0xaf,0x69,0xd4,0x31,0x36,0x04,0xee,0x7c,0x6d,0x8d,0x23,0x20,0xcb,0x68,0xb2,0x1a, + 0x6c,0xc9,0x85,0x32,0xc3,0x3c,0xd0,0x85,0x82,0x75,0x62,0x5a,0x99,0x62,0xb0,0x0b, + 0x18,0x0e,0xda,0x15,0x48,0xd4,0xd6,0x24,0x10,0x49,0xc2,0x43,0x20,0x8d,0xf4,0xe7, + 0x10,0x08,0xce,0x4f,0xe6,0xb3,0xf8,0x55,0x3d,0xa5,0xc2,0xeb,0x2a,0x6c,0x41,0x2e, + 0x52,0x92,0xc7,0x2c,0xd3,0xe6,0x55,0x51,0x47,0xde,0x49,0x98,0x2f,0x72,0xeb,0xab, + 0xd0,0xb6,0x01,0x51,0xb4,0x58,0x82,0x05,0xaf,0xe4,0xf3,0x80,0x72,0xee,0xbc,0xab, + 0xa6,0xae,0x78,0xea,0xaa,0xa0,0x08,0xaa,0xc0,0xc7,0x36,0xb9,0x82,0xa8,0xb6,0xe0, + 0xa8,0xbb,0x92,0x4e,0xd6,0x00,0x1b,0x80,0x4a,0x8b,0xd9,0xa8,0x03,0x9a,0x8b,0xd7, + 0xa3,0xbd,0x3d,0x64,0x71,0x2e,0xaa,0x6f,0xc3,0x12,0xb5,0xef,0xab,0x6b,0xaa,0x8d, + 0xc0,0xd8,0xef,0x6d,0xed,0xe2,0x43,0xe6,0x16,0x0a,0x69,0x6b,0x23,0xcb,0x82,0x12, + 0xe1,0xe4,0x10,0x40,0x08,0xd5,0x6d,0x2a,0xe5,0x6c,0x50,0x32,0xd8,0xa8,0x2d,0xb7, + 0x3b,0x8b,0xe0,0xc1,0xaf,0x3a,0x6d,0x56,0xe6,0xfc,0x22,0xc7,0x17,0xfb,0x5e,0x7d, + 0x7b,0xa6,0x7c,0x4d,0x92,0x2d,0xa7,0x3f,0x3f,0xfe,0x2d,0x0b,0x2b,0xcc,0x69,0xb3, + 0x8a,0x71,0x51,0x46,0x4a,0xa9,0xf5,0x08,0xdc,0x81,0x22,0xa1,0xfc,0xa5,0x94,0x1f, + 0x45,0xc6,0xe0,0x1d,0xed,0x6c,0x48,0x68,0xc6,0x6f,0xd3,0x5d,0x71,0x95,0x65,0x75, + 0x99,0x7e,0x58,0x63,0x5a,0x5a,0x7c,0xce,0x45,0xff,0x00,0x8d,0x34,0xef,0xdb,0x9e, + 0xa5,0xd3,0x50,0x22,0x4d,0x47,0xb8,0x64,0x50,0x34,0x85,0xbd,0xbc,0x9e,0x17,0x1a, + 0x91,0x88,0xab,0x15,0x22,0xc4,0x6c,0x71,0xf5,0xfd,0x06,0xba,0x2d,0x74,0x02,0x46, + 0x3a,0xfb,0xf4,0xcf,0xc9,0x79,0x0d,0x44,0x2e,0x82,0x4d,0xa4,0x52,0x17,0xb5,0xf4, + 0xc7,0xa6,0x3d,0xb6,0xc4,0xcd,0x1c,0x34,0xbd,0xb6,0xf9,0x81,0xea,0xbf,0x25,0xad, + 0xb6,0x07,0xab,0x58,0x5a,0x62,0x69,0xc1,0x0a,0x79,0xbf,0xbe,0x36,0x87,0xdb,0xaa, + 0x95,0x45,0xb4,0x2e,0xd0,0x34,0xd4,0x13,0x56,0x4c,0xb1,0x53,0x26,0xb7,0x60,0x48, + 0xb9,0x00,0x6d,0xf5,0x38,0x86,0xf8,0x9b,0x93,0xcf,0x95,0x74,0x15,0x79,0xad,0x92, + 0x96,0x29,0xf3,0x73,0x1e,0x5d,0x96,0x42,0x65,0xd4,0xd5,0x75,0x12,0xb8,0xb2,0x28, + 0x1b,0x00,0x14,0x33,0x31,0x3b,0x00,0x31,0x62,0x44,0xd0,0xc1,0x87,0x20,0xf8,0xc5, + 0x67,0xe2,0x6d,0x7c,0xf9,0xae,0x67,0xf0,0xcf,0x27,0x17,0x1d,0xdc,0xf9,0xa4,0xb0, + 0xe1,0x74,0xa2,0x0f,0xd0,0x58,0x9f,0xdf,0x1c,0x9f,0x18,0x9e,0x58,0x34,0x8f,0x73, + 0x2a,0xab,0x3f,0x55,0xbf,0xc3,0xe3,0x8e,0x59,0xda,0xd7,0x73,0x6b,0x2c,0xea,0xba, + 0x58,0xa1,0xad,0x83,0x2a,0x3d,0xa7,0x4c,0xa3,0x2c,0xa3,0xa2,0xd4,0xb1,0xd9,0x0b, + 0x24,0x64,0xb3,0x01,0xe0,0x5d,0x8e,0xde,0x31,0x11,0x4b,0x97,0x7c,0xed,0x54,0x14, + 0xf4,0xb4,0xf0,0x77,0x9e,0xc6,0xfa,0x00,0x00,0x0b,0x02,0x58,0xf0,0xa3,0x71,0xb9, + 0xf3,0x61,0xb9,0xc1,0x39,0xf5,0x43,0x57,0x67,0x59,0x9d,0x49,0x75,0xd2,0xf5,0x6f, + 0xa9,0x80,0xd5,0xb0,0xb8,0x5d,0xad,0xc5,0x97,0x1f,0x64,0x59,0xb4,0xf9,0x26,0x62, + 0xb2,0x23,0x5e,0x39,0x19,0x52,0x68,0x98,0x5d,0x5c,0x58,0xef,0x6f,0x24,0x0b,0xed, + 0xc1,0x04,0xf0,0x6c,0x47,0xcd,0x23,0x6b,0x6c,0x07,0x70,0xbd,0x9c,0x8e,0x34,0x4b, + 0x53,0x39,0xa6,0x54,0xd9,0x45,0x48,0xa6,0xa8,0xa5,0x82,0x5b,0xdd,0x95,0x9d,0x34, + 0x87,0x1c,0xdd,0x49,0xe2,0xc7,0x90,0x78,0xe3,0x10,0xf9,0xeb,0xd1,0x65,0x35,0x19, + 0x35,0x4d,0x3d,0x2a,0x46,0xb4,0xf3,0xad,0x44,0xdd,0xab,0x07,0x90,0x23,0xa3,0x10, + 0x4f,0x1c,0x0d,0xaf,0xb6,0xf8,0xb1,0x75,0x16,0x72,0xd9,0xdd,0x52,0x24,0x01,0x69, + 0x28,0x69,0xb4,0x88,0x61,0x45,0xd2,0xbb,0x22,0x81,0xb7,0xd0,0x6c,0x07,0xb7,0xb9, + 0xc5,0x6f,0xaa,0x18,0x30,0xa4,0x42,0x60,0x68,0x64,0x85,0xd4,0x99,0x63,0x12,0x01, + 0x75,0xb5,0xed,0x71,0x63,0x7b,0x6f,0x70,0x7e,0xa3,0x16,0x3f,0x64,0x6f,0x71,0x6e, + 0x42,0xa8,0x17,0x16,0x02,0xee,0x55,0xfb,0xe2,0x8f,0x5e,0xe4,0x59,0x26,0x78,0xc9, + 0xd3,0xd3,0x53,0x89,0x6b,0xe8,0x69,0x66,0x0a,0xa8,0xd4,0x8c,0x84,0x49,0x23,0xc8, + 0xae,0x85,0x6d,0xad,0xa1,0x9c,0x1b,0x1b,0x82,0x00,0x20,0xf1,0x8c,0xc7,0x30,0xa5, + 0xcd,0x7a,0xaa,0x9f,0x37,0xa1,0xcd,0x6a,0x68,0x2a,0x23,0x6a,0x11,0x53,0x25,0x5c, + 0xb0,0x16,0x73,0x98,0x23,0xf6,0xd5,0x63,0x94,0xdb,0xb6,0x64,0x88,0x06,0x08,0xc5, + 0x93,0x60,0x06,0x92,0xc0,0x0f,0xaa,0xf3,0x45,0xea,0xba,0x9c,0xc2,0x93,0xa8,0x5a, + 0xb0,0xc5,0x32,0x43,0x0a,0x2d,0x35,0xe7,0x58,0x1e,0x20,0xa8,0x92,0xc2,0xc5,0x41, + 0x52,0x96,0x53,0xa5,0x8e,0xe3,0xd2,0x0f,0x23,0x14,0x6c,0xd2,0x70,0x32,0x7c,0xd6, + 0x86,0x0c,0xd5,0x73,0x08,0x69,0x6a,0x4f,0x65,0x6a,0x22,0xf9,0x69,0xe4,0x4d,0x7a, + 0x5a,0xca,0x35,0x21,0x1a,0xaf,0xe9,0xd6,0x58,0x5e,0xe0,0x58,0x0c,0x26,0x96,0x69, + 0x03,0x76,0x01,0x8e,0xd7,0xf9,0xff,0x00,0x1d,0xd6,0x79,0xc0,0x7b,0xf7,0x75,0x56, + 0x48,0xeb,0xa3,0xae,0x92,0xa6,0xba,0x86,0x68,0xc5,0x35,0x41,0x8e,0x47,0xa4,0x82, + 0x94,0x45,0x1d,0x3c,0x89,0xa7,0x51,0x48,0xcb,0x2d,0xd5,0xec,0xda,0x88,0x03,0x7f, + 0x16,0xc0,0x15,0xca,0x5d,0xa3,0x39,0x74,0x6f,0x45,0x9d,0xa4,0x1a,0x61,0xa9,0x03, + 0x5c,0xd0,0x31,0x7d,0x32,0x2b,0x3f,0x2b,0x66,0x2a,0x14,0x03,0xe9,0xb3,0x6f,0x6e, + 0x47,0xc9,0x6a,0xf2,0x78,0xf3,0x4a,0x4f,0x97,0xaa,0xae,0x83,0x5a,0x87,0x9c,0x54, + 0x20,0x63,0x1b,0x12,0x01,0x2c,0x40,0x17,0x05,0x6e,0xb6,0x02,0xc3,0x51,0x22,0xd7, + 0xb6,0x00,0xcc,0x16,0xab,0x26,0xd1,0x43,0x4e,0x8d,0x55,0x4d,0x2c,0xaf,0xeb,0x11, + 0x18,0x9b,0xb6,0x1c,0x22,0xb1,0x7b,0x9d,0x2c,0xcc,0x01,0xd7,0x75,0xb9,0xdc,0xdc, + 0x5a,0xf9,0x68,0xb9,0xf6,0x4e,0x7d,0x7a,0xa9,0xd1,0x56,0xdf,0xa1,0xb3,0x9a,0x79, + 0x6a,0x22,0x10,0xc6,0xd3,0x6a,0x34,0xc8,0xc9,0x53,0x6b,0x3b,0x02,0x5c,0x47,0xa7, + 0x9b,0xaa,0x95,0x3a,0xac,0x3d,0x44,0x7d,0x70,0x04,0xf5,0x19,0x96,0x4d,0x2d,0x24, + 0x79,0x9a,0xd5,0x08,0x60,0x32,0x34,0x54,0x6c,0x3f,0xe5,0xdf,0x8b,0xad,0xc0,0x0a, + 0x76,0xff,0x00,0xda,0x42,0x9d,0x88,0xdb,0x1a,0x15,0x12,0x00,0xec,0x94,0xd0,0x54, + 0xca,0xf4,0x33,0xc9,0x31,0x07,0x54,0x0f,0x31,0x61,0xa4,0xdc,0xfe,0x50,0x14,0x0e, + 0x7f,0x96,0xc7,0x6b,0x5c,0xe2,0xad,0xd5,0x54,0xf2,0xd1,0xf5,0x13,0xbd,0x6c,0x8b, + 0x57,0x15,0x64,0x62,0x65,0x92,0xc3,0xb8,0x55,0x0f,0x69,0x90,0xec,0x00,0x20,0xa3, + 0x0e,0x2d,0xb0,0x3b,0xe3,0x53,0x1e,0xf0,0x69,0xc5,0x03,0x54,0xb4,0x9e,0x86,0xf8, + 0x91,0x55,0xd0,0xdd,0x42,0x33,0x9c,0x93,0xa3,0xf2,0xe3,0x96,0x66,0x11,0x45,0x06, + 0x6c,0xb4,0xf2,0x76,0x6f,0x06,0xe5,0x55,0x2e,0xec,0x23,0x75,0x37,0xe0,0x58,0x88, + 0xed,0xbe,0xe7,0x1b,0xaf,0x49,0xfc,0x68,0xa5,0xcd,0xb3,0xec,0xb7,0xa7,0xb3,0x68, + 0xa1,0xcb,0xa4,0xae,0x59,0xa3,0xa6,0xad,0x6a,0x8b,0xfe,0x2c,0x65,0x42,0xa3,0x06, + 0x50,0xac,0x5f,0x50,0x01,0x85,0xbd,0x5e,0x0d,0xf1,0xc6,0x92,0x66,0xf5,0x30,0xd0, + 0x22,0x43,0x11,0x2f,0x1d,0x4b,0x76,0xea,0x16,0x45,0x25,0x94,0x28,0x03,0x50,0x5e, + 0x48,0xbe,0xd7,0x1c,0x36,0x18,0x19,0xcc,0xd5,0x81,0xa5,0x93,0x34,0x6a,0x2a,0x8a, + 0x38,0xcc,0xf0,0xc5,0x1c,0x04,0x97,0x9c,0x5e,0xca,0x45,0xac,0x09,0xbd,0xef,0xc6, + 0xf8,0xe9,0xe9,0x3c,0x47,0x53,0xa7,0x20,0x07,0x7c,0x3d,0x96,0x39,0x74,0xb1,0x4d, + 0x92,0x33,0xdd,0x7e,0x92,0x54,0xb5,0x1e,0x45,0x4d,0x3d,0x76,0x65,0x51,0x1d,0x2c, + 0x6a,0xba,0xe6,0xaa,0xaa,0x71,0x72,0x17,0x7e,0x7c,0xdb,0xc2,0xa8,0xfb,0x0b,0x9c, + 0x56,0xba,0xdf,0xaf,0xba,0x73,0xa0,0xfa,0x5e,0x9f,0xad,0x73,0x59,0x1f,0x33,0xa4, + 0x75,0x55,0xca,0x92,0x94,0x16,0x33,0x97,0x21,0x59,0xa1,0x62,0x34,0xa1,0x28,0xe4, + 0x97,0x62,0x2e,0xa2,0xc0,0xfa,0xb7,0xe2,0x67,0xf8,0xd3,0xd5,0x99,0x55,0x36,0x79, + 0x43,0x45,0x9b,0x4f,0x59,0x41,0x9e,0x1a,0x98,0xaa,0x05,0x6c,0x8d,0x24,0xb5,0x09, + 0x51,0x0c,0x70,0xb6,0xad,0x57,0x70,0x15,0x22,0x88,0x21,0x04,0x10,0x63,0x1b,0x91, + 0x75,0xc5,0x1b,0xa8,0xf3,0x85,0xce,0xab,0x9e,0xa2,0xa2,0xba,0xb5,0xe6,0x92,0x35, + 0x32,0xcd,0x5c,0xdd,0xe6,0xa8,0x95,0x54,0x29,0x92,0xd7,0x21,0x76,0x1a,0x46,0xed, + 0xb2,0xdb,0x6e,0x31,0xde,0x9b,0xc6,0x4b,0x9a,0x43,0x1b,0x4b,0x24,0x7e,0x1a,0x01, + 0xb7,0x39,0x6c,0x3f,0xc4,0x1f,0xc7,0x0c,0xbf,0xe2,0xb4,0x39,0x64,0x39,0x25,0x46, + 0x65,0x06,0x5f,0x4b,0x3c,0xda,0x29,0x26,0xa2,0x58,0xe2,0x21,0x95,0x0a,0xc9,0xaf, + 0x5b,0x31,0x94,0x9b,0xa9,0xd8,0x6c,0x2e,0x3f,0x31,0xc6,0x0f,0x2d,0x5f,0xcd,0xcb, + 0xdd,0x9d,0x54,0xca,0x3f,0x28,0x42,0x63,0x0a,0x2f,0xc0,0x02,0xc0,0x79,0xd8,0x7d, + 0x70,0x46,0x5d,0x51,0x48,0xd2,0x88,0x6b,0x1e,0xa1,0x60,0xdc,0x49,0x2c,0x65,0x59, + 0x80,0xff,0x00,0x30,0x56,0xfc,0xd6,0x36,0x24,0x02,0x3f,0x2f,0x8e,0x43,0xb2,0xe5, + 0x10,0xd5,0x19,0xe4,0x7c,0xea,0x88,0xcb,0x1c,0x71,0x4a,0xa1,0xc3,0x8e,0xee,0xb5, + 0xbe,0x90,0x40,0xbe,0xb1,0xc1,0x16,0xe4,0xf3,0xe7,0x1e,0x72,0x49,0x0c,0x8e,0x2f, + 0x77,0x25,0x75,0x99,0x18,0x63,0x43,0x46,0x02,0x88,0x49,0xcb,0xb9,0x13,0x49,0x3c, + 0x34,0xee,0x42,0x4a,0xc8,0x35,0x59,0x6f,0x7b,0x69,0xb8,0x0d,0xc0,0x36,0x24,0x6e, + 0x06,0xe3,0x16,0x1c,0xde,0xb5,0x3f,0xc5,0x5e,0x59,0xeb,0xea,0xf3,0x53,0x62,0x63, + 0x35,0x51,0x96,0x95,0x41,0xbe,0x94,0x66,0x24,0x71,0xcd,0x87,0xa6,0xfc,0x7b,0xe2, + 0x32,0xb6,0x8a,0x68,0x1d,0x0e,0x64,0x22,0x88,0xb2,0x86,0x11,0xc2,0xaa,0xba,0x97, + 0xdc,0xe9,0xfd,0xbd,0xef,0x81,0x0c,0x8b,0x21,0x52,0x8a,0x13,0x48,0xb0,0x04,0x5d, + 0x7e,0x84,0xdf,0x61,0xce,0x10,0x83,0x4a,0xdc,0x1c,0x05,0xdc,0xdd,0x35,0x45,0x26, + 0x43,0x4b,0x9b,0x51,0x45,0x5d,0x1d,0x5d,0x0d,0x6d,0x3e,0x8a,0x3a,0x5a,0xd1,0x27, + 0xcb,0x43,0x1b,0x17,0x63,0x0a,0xc6,0xc6,0xc3,0xd6,0x77,0x27,0x8d,0x17,0xb0,0x0c, + 0x6f,0x5f,0xad,0xf8,0x7d,0xff,0x00,0x97,0x2e,0x5f,0x49,0x32,0xe5,0xd4,0x33,0x48, + 0xf0,0x54,0xd3,0x53,0x52,0xd3,0xc3,0x4e,0xfa,0x8a,0xb8,0x01,0x64,0x26,0xed,0xdc, + 0x52,0x75,0x29,0x52,0x55,0x15,0x6f,0xb0,0xc4,0x6c,0x3d,0x63,0x9b,0x53,0xc9,0x9a, + 0x2e,0x6b,0x20,0xab,0xa4,0xa1,0x8f,0xe6,0xdd,0xd2,0x07,0x7a,0xb6,0xa4,0x8d,0xe3, + 0x43,0x2a,0xa3,0x05,0x06,0x00,0xda,0x94,0x11,0xac,0xae,0x83,0x71,0x63,0x71,0x6e, + 0xc8,0xfa,0x8f,0xff,0x00,0x10,0xe5,0xd1,0x66,0x39,0x35,0x65,0x3d,0x4d,0x1b,0xa9, + 0x83,0xb9,0x03,0x5d,0xfb,0xa5,0x03,0x94,0x78,0xc1,0xb2,0x48,0x06,0x91,0xb9,0xb9, + 0x01,0x81,0xe3,0x7f,0x39,0x2c,0x9a,0x96,0x80,0x1e,0x70,0x38,0xf4,0xf7,0xea,0x83, + 0x58,0xd1,0x65,0xbd,0x55,0x67,0x2f,0xa5,0xca,0x72,0xac,0x9a,0x92,0x9f,0x35,0x58, + 0x63,0xf9,0x09,0xe5,0x9e,0x28,0x69,0x2b,0x26,0x99,0x15,0x1d,0x8b,0x3f,0x76,0x19, + 0x1c,0x3e,0xc0,0xdb,0x50,0x20,0x79,0x03,0x63,0x7f,0x32,0x39,0x28,0x11,0x2a,0xe9, + 0x21,0xaa,0x92,0x48,0x68,0xe4,0x74,0xee,0x7c,0xb7,0x76,0x23,0x7d,0x94,0x91,0xe5, + 0x7c,0x69,0x20,0x0e,0x39,0x6d,0xcc,0x97,0x50,0xd7,0x74,0xb5,0x5e,0x6b,0x55,0x94, + 0xe7,0x53,0xe5,0xd4,0xd5,0xe9,0x34,0x75,0x75,0x0f,0x52,0x02,0x85,0x89,0xe1,0x1a, + 0x81,0x94,0x6c,0xe6,0xc4,0x00,0xd6,0xd1,0x74,0x00,0x8f,0x65,0x55,0x47,0x02,0x65, + 0x11,0x53,0x43,0x04,0x2d,0x03,0xe9,0xf9,0xa9,0x94,0x2c,0x67,0x47,0xa5,0xbb,0xc0, + 0xae,0xa0,0xbb,0xab,0x58,0x6c,0x03,0x1d,0x88,0x06,0xd8,0xa4,0xb8,0x91,0x9b,0xca, + 0x39,0x05,0x48,0x4d,0x93,0xd2,0xd4,0x54,0x8a,0xe8,0xd6,0xa2,0x19,0xa5,0x58,0xe4, + 0xd0,0x95,0x7b,0x23,0xd8,0xb1,0x66,0x5d,0x80,0x16,0xb1,0xb5,0xbd,0x23,0xc0,0x1b, + 0xe1,0x50,0x56,0x56,0x65,0xf9,0x83,0x09,0xe5,0x96,0xbe,0x38,0x51,0x26,0x49,0x48, + 0x31,0xac,0x88,0xd6,0xe0,0x0b,0xd8,0x83,0x64,0xbd,0xc0,0x21,0x5a,0xe0,0x05,0xc3, + 0x34,0x19,0x49,0xa8,0x68,0xe9,0xe9,0xe7,0x95,0xeb,0xe2,0x32,0xcf,0x97,0xe6,0x51, + 0x57,0x85,0x95,0xe5,0x0a,0x03,0x96,0x51,0xa4,0x85,0xd2,0xd6,0xb3,0x06,0x1b,0x93, + 0xb1,0x18,0xcf,0x60,0xeb,0xa7,0xe9,0x38,0x29,0x6a,0x26,0xab,0xcc,0x21,0xa6,0xa9, + 0xa9,0x10,0x49,0x2d,0x54,0x97,0x13,0x4d,0x7d,0x4d,0x2c,0x6e,0x85,0xa3,0xbe,0xa3, + 0xea,0x07,0x81,0xb8,0x03,0x08,0xc6,0x99,0x6d,0xa3,0x3e,0x89,0xf8,0x5a,0xde,0x5d, + 0x55,0x52,0xd2,0xc9,0x97,0x50,0x08,0x60,0x6a,0xaa,0x58,0xcc,0x2d,0x32,0x68,0x94, + 0x28,0x27,0xd3,0xac,0xaf,0xa0,0x06,0xb0,0x16,0x17,0x1b,0x90,0x2c,0x71,0x7b,0xcb, + 0x3a,0x8b,0xbb,0x91,0xe5,0xd3,0x40,0x62,0xa9,0x2d,0x10,0x49,0x26,0x1b,0x02,0xcb, + 0xe9,0x6b,0x28,0xe3,0x71,0x6b,0x1f,0x3e,0x05,0xf1,0x8f,0xd4,0xe6,0x19,0x76,0x6e, + 0xd3,0x07,0x93,0xbe,0x8d,0x48,0xef,0x4c,0x23,0x92,0x47,0x6a,0x66,0x1a,0x59,0xd5, + 0x60,0x1b,0x5f,0x4f,0x95,0xdd,0xae,0x36,0x3a,0x76,0xb3,0x54,0xe6,0xc6,0x87,0xa4, + 0xeb,0xaa,0x62,0xcd,0x21,0xa6,0x92,0x9d,0x96,0x9f,0xb6,0x60,0xd0,0x45,0x89,0x56, + 0x56,0x17,0xba,0x5f,0xd3,0xea,0xde,0xcd,0x6b,0x8d,0xf1,0xe8,0xfc,0x1f,0x5e,0xfd, + 0x16,0xfd,0xb7,0xb6,0xb8,0xf5,0xaf,0x53,0xfb,0x0b,0x58,0x35,0x30,0x36,0x7a,0xbe, + 0x56,0x81,0x47,0xd4,0x6e,0xc1,0x25,0xac,0xde,0x16,0x04,0x5a,0x28,0x1b,0x56,0xaf, + 0xfa,0x0d,0xee,0x7c,0x9d,0x86,0x27,0xa8,0xea,0x69,0xf3,0x2a,0x75,0xa8,0xa3,0x91, + 0x66,0x85,0xb8,0x65,0xff,0x00,0x42,0x3c,0x1f,0xa6,0x29,0x74,0x49,0x0d,0x63,0xc7, + 0x53,0x21,0xf9,0x78,0x2c,0x44,0x74,0xe5,0xc8,0x94,0x05,0xf4,0x0d,0x40,0x0d,0xaf, + 0x6f,0x40,0x5b,0xea,0x0c,0x09,0xb7,0x18,0xbe,0x74,0x16,0x5f,0x95,0xc7,0x5b,0x56, + 0x33,0x19,0xe8,0xa4,0x7a,0xa2,0x3f,0x0c,0xca,0x23,0xb3,0x16,0x21,0x46,0xc4,0x5d, + 0x86,0xe0,0x81,0x7f,0xbd,0xf1,0xec,0x74,0x3a,0xfd,0x43,0x40,0x7b,0xc8,0x2c,0xfa, + 0x93,0xf7,0x27,0xdf,0xa7,0x07,0x97,0x3e,0x9a,0x37,0x9a,0x6e,0x0f,0xe1,0x07,0x9b, + 0x66,0x79,0x7f,0x4f,0x65,0x55,0x79,0xae,0x79,0x52,0x29,0x32,0xfa,0x45,0x0d,0x34, + 0xa4,0x5c,0xee,0x6c,0xaa,0xab,0xcb,0x3b,0x1b,0x05,0x51,0xb9,0x27,0x18,0x57,0x4e, + 0xf5,0x4e,0x67,0xd7,0x7f,0x12,0x13,0xa8,0xf3,0x55,0x6a,0x5c,0xa7,0x24,0xa5,0xa8, + 0xab,0xa0,0xa0,0x46,0x0c,0x20,0x8d,0x22,0xbd,0x89,0xf3,0x23,0x17,0x56,0x77,0x1e, + 0x54,0x2a,0xec,0x06,0x24,0xbf,0x8b,0x19,0xea,0xa0,0xeb,0x5e,0x9f,0xca,0xa9,0xe9, + 0xe4,0xa7,0xc9,0xe1,0xcb,0x1a,0xaa,0x15,0x13,0x21,0x82,0xa2,0x72,0xe5,0x5a,0x55, + 0x45,0x25,0x83,0x22,0xd9,0x2e,0xfe,0xe7,0x48,0x00,0xb1,0x34,0x5f,0x87,0x33,0x76, + 0xb2,0x5e,0xa9,0x94,0x6a,0x27,0xfc,0x2b,0xb0,0x36,0xdf,0x54,0xd5,0x31,0x21,0x17, + 0xb7,0xf9,0x55,0xb1,0xcc,0xf1,0x8f,0x10,0x7e,0xa8,0x79,0x4d,0xc3,0x7f,0x75,0xd2, + 0xf0,0xed,0x23,0x60,0x3e,0x63,0xb2,0x7f,0x64,0xb4,0x77,0x05,0x5a,0x42,0x5c,0xb0, + 0x2c,0xcd,0xa4,0x9f,0x1b,0x9f,0xeb,0x81,0xcb,0x8e,0xcc,0xb5,0x35,0x52,0x4d,0x1d, + 0x32,0xcc,0xc8,0xaa,0x9a,0x57,0x53,0x05,0xb8,0x55,0xd8,0x91,0x65,0x0c,0xc4,0x9d, + 0xbf,0x5c,0x15,0xda,0xa6,0xa9,0xa8,0x3f,0x35,0x1a,0xc9,0xa4,0xed,0xa9,0x8a,0x90, + 0x6d,0xc0,0xb1,0x03,0xfd,0x9c,0x56,0x3a,0xaa,0xb1,0xa9,0x12,0x8e,0x9e,0x98,0x35, + 0x34,0x02,0x4a,0xc9,0x3b,0x6a,0xc4,0x0f,0xf9,0x04,0x6f,0xef,0xb9,0xc7,0x00,0x37, + 0xcc,0x7e,0xd5,0xd7,0xbd,0xad,0xb5,0x23,0x0d,0x67,0xcd,0x0a,0x59,0x68,0xe4,0x9e, + 0x64,0x67,0x4f,0x43,0x30,0x1c,0xc7,0xac,0x0e,0x07,0x22,0xc4,0x7e,0xa3,0x9b,0xe2, + 0x23,0xab,0xf3,0x6a,0x49,0x68,0xa8,0xe8,0xbe,0x75,0x45,0x78,0xd4,0x92,0x53,0xa0, + 0x67,0x93,0xd4,0x7f,0x2e,0xc2,0xc0,0x9d,0xb6,0x3e,0x3e,0x98,0x06,0x17,0xae,0xa8, + 0xc9,0xf3,0x11,0x96,0xcc,0x05,0x44,0x0f,0x4a,0xd1,0x87,0x75,0x00,0x05,0xa7,0x5b, + 0xdb,0x57,0xa7,0x72,0x6d,0xe2,0xf7,0xc6,0x79,0x9b,0xcf,0x2a,0xd6,0xbd,0x43,0xc2, + 0x28,0xe9,0xe6,0x25,0x84,0x4c,0x8f,0xa0,0xdf,0x70,0x05,0xce,0xc0,0x9d,0x5b,0xdf, + 0x6f,0x57,0x8b,0x60,0x3a,0x32,0xd7,0x90,0xaa,0x74,0x96,0xce,0x15,0x91,0xb5,0x53, + 0xe5,0x92,0xcd,0x91,0x4d,0x59,0x58,0x2a,0x21,0x47,0xa9,0x4a,0x7f,0x4c,0x71,0xc8, + 0x84,0x7a,0x24,0x1e,0x4a,0x5c,0x7a,0x88,0x0a,0x0b,0x6c,0x49,0xc3,0x55,0x03,0x37, + 0xaa,0xa8,0xa4,0x96,0x47,0x33,0x53,0x66,0x92,0x27,0xcb,0x08,0x0f,0x68,0xc9,0x50, + 0x6d,0xa4,0xea,0x2a,0x50,0x0d,0x57,0x53,0xc1,0x37,0x22,0xf6,0x38,0x83,0xa1,0xa8, + 0x8f,0x2e,0xad,0xad,0x95,0xe6,0xa8,0xf9,0xa7,0x17,0xa5,0xf9,0x3a,0xa6,0xa7,0x0c, + 0xea,0x54,0x82,0x4a,0x58,0x9b,0x58,0x9d,0x88,0x3a,0x93,0x93,0x6d,0xca,0xca,0x24, + 0x3a,0xaa,0x28,0xe6,0xcc,0x1a,0x96,0x09,0xcf,0x7a,0xa5,0xe5,0x8c,0x31,0xb6,0xab, + 0x99,0x22,0xdc,0x12,0xf7,0x07,0x6e,0x46,0xe4,0x1f,0x18,0x76,0x82,0x30,0xc3,0x95, + 0x99,0xc4,0x1c,0xa3,0x28,0xb2,0x38,0xaa,0xb2,0xe9,0x6b,0x60,0xaa,0x9e,0x7a,0xe5, + 0x96,0x46,0xf9,0x74,0x8e,0x3f,0x4b,0x05,0xf5,0x46,0x7f,0x99,0x58,0x00,0x46,0xa3, + 0xb1,0x27,0x6d,0xc1,0x24,0xba,0x08,0x69,0x33,0x2c,0x9a,0x9e,0x9e,0xa2,0xb3,0xf3, + 0xd1,0x98,0x6a,0x22,0xa8,0x8a,0x4f,0xc2,0x94,0x17,0x74,0x20,0x06,0x07,0x72,0xe3, + 0xf3,0x6e,0x0a,0xec,0x4e,0xd8,0x84,0x9b,0x2f,0x39,0x7d,0x6e,0x67,0xf2,0x75,0xb1, + 0x1a,0x8a,0x3a,0x95,0x82,0x41,0x21,0x1a,0x1e,0x29,0x40,0x22,0x54,0x6b,0xd9,0x45, + 0xc6,0xed,0xea,0xb6,0xa0,0x6f,0x63,0x81,0x2a,0x33,0x3a,0x69,0x18,0x9a,0x39,0x21, + 0x8a,0x9f,0xb8,0x42,0x2d,0xcc,0xa1,0x08,0x52,0xa2,0xcc,0x6e,0x2c,0x4e,0xf6,0xff, + 0x00,0xae,0x2a,0x73,0x1f,0x90,0x4f,0x05,0x11,0x5c,0xab,0x76,0x67,0x97,0xd4,0x65, + 0x94,0xb5,0x3d,0x3f,0x52,0x68,0xb2,0xf9,0x12,0x6f,0x9b,0x4e,0xc2,0x3c,0x61,0xc0, + 0xb2,0x00,0x9f,0xca,0x41,0x0a,0xad,0xc8,0xb9,0xbd,0xcf,0x8c,0x67,0xf9,0x85,0x0f, + 0xca,0x4f,0x51,0x49,0x0c,0xb3,0xcb,0x2c,0x32,0x59,0x52,0x64,0x75,0x93,0x46,0xe6, + 0xe6,0xfe,0xf7,0xf1,0x71,0xb8,0xdc,0xf3,0x89,0x8a,0xbc,0xfe,0xa6,0xab,0x2b,0x8a, + 0x82,0xa6,0xaa,0x59,0x44,0x04,0x4c,0x19,0x98,0xb6,0xe7,0x73,0xb3,0x1f,0x4f,0x00, + 0x01,0x6f,0x7f,0x7c,0x57,0x5e,0x58,0xe4,0x8e,0xa5,0x3e,0x61,0xcc,0x6c,0x7d,0x25, + 0x9e,0xec,0x78,0xdc,0x8e,0x6f,0x6d,0xb9,0x00,0x5b,0x0f,0x16,0xfa,0xf8,0x8a,0x86, + 0xba,0x26,0x22,0x7a,0x8a,0xc9,0xe1,0xa5,0x11,0x49,0xdd,0x63,0xe8,0x50,0x06,0xb2, + 0x2d,0xb2,0x8d,0xef,0xbd,0xc6,0x03,0x9c,0xd4,0x51,0xd4,0x48,0x93,0xc2,0x69,0xa5, + 0x46,0x2a,0xe8,0xfb,0x3a,0x10,0x6d,0x62,0x39,0xb8,0xc3,0x85,0x20,0x0b,0x1a,0x19, + 0x03,0x28,0x42,0xa1,0x6c,0x75,0x5c,0xf2,0x47,0xbd,0xce,0x0c,0xa0,0x8e,0x91,0xb2, + 0xf9,0xd2,0xa2,0x2a,0xc6,0xcc,0xe3,0x91,0x64,0x8e,0xa1,0xa3,0x62,0x91,0x43,0xfc, + 0xc4,0xa0,0xfa,0xd8,0xdf,0x70,0x46,0xdb,0x6c,0x71,0x78,0xc2,0x34,0x10,0x22,0x1a, + 0x88,0xda,0x91,0x04,0x73,0x05,0x99,0x35,0x29,0x40,0xc4,0xbf,0x3b,0xd8,0x73,0x6b, + 0x1d,0xb1,0xf3,0x41,0x58,0x52,0x26,0x9a,0xe9,0x13,0x2f,0xe1,0xb9,0x1a,0x75,0x5c, + 0x91,0x70,0x6d,0xf7,0xdc,0xe2,0xf1,0xd1,0x31,0xa1,0x66,0x97,0x2c,0xcd,0xf3,0x19, + 0x73,0x79,0x10,0xad,0x0d,0x0d,0x04,0xb0,0x99,0x27,0x77,0xb8,0x75,0x65,0x97,0x4e, + 0x82,0xca,0xa2,0xdd,0xb1,0x23,0x1f,0x4a,0xda,0xe4,0x62,0xb7,0x53,0x93,0x56,0x55, + 0xd1,0x9c,0xcb,0x33,0x9f,0x2f,0xa0,0x06,0x46,0xa6,0x45,0x92,0x55,0x89,0xd4,0xc4, + 0x2c,0x50,0xc2,0x9e,0xa5,0xb0,0xb0,0xb9,0x00,0x13,0xb5,0xcb,0x62,0x03,0x7c,0x23, + 0x4a,0x07,0xb2,0x62,0x31,0xd8,0x2c,0x8e,0x7c,0x01,0x7b,0x8f,0x16,0xf2,0x4e,0x0d, + 0xa5,0x9e,0xa0,0x21,0x8e,0x18,0x13,0x52,0x42,0xea,0xd2,0xac,0x2a,0xcc,0xaa,0xc6, + 0xf7,0x26,0xc3,0x72,0x49,0x17,0x24,0x9b,0x1b,0x0b,0x0c,0x7b,0x17,0xcd,0x51,0xcf, + 0x52,0xb4,0x93,0x4c,0x62,0x74,0x29,0x23,0x22,0x08,0xd9,0x91,0xb9,0x1b,0xdc,0xad, + 0xc6,0xdf,0xd3,0x04,0xc2,0x8f,0x4b,0x14,0x72,0x35,0x34,0xf0,0x51,0x4f,0x12,0x8e, + 0xd2,0xb1,0xbd,0x43,0x0d,0x4b,0xa8,0x1b,0x02,0x45,0xc9,0x06,0xd7,0xf3,0x63,0xe0, + 0x4b,0x46,0xd2,0xb2,0x45,0xc9,0xd2,0xad,0x1b,0x30,0x06,0x7a,0x78,0xc6,0xb9,0x23, + 0x91,0xc4,0x28,0xfb,0x7e,0x52,0x40,0xd4,0x77,0xbf,0x16,0x3b,0x6c,0x0e,0x0f,0xa9, + 0xcb,0x97,0x4d,0x7c,0xab,0x4a,0xf4,0xf6,0x97,0xb9,0x45,0x10,0x8c,0x31,0x0a,0xf7, + 0x6d,0xd9,0x01,0xd6,0xc3,0x48,0x16,0x24,0x05,0xdc,0xf3,0x71,0x83,0x0f,0x66,0x16, + 0xa4,0x9e,0x4a,0x55,0x65,0xa6,0x86,0x15,0x68,0xe4,0x20,0x84,0xd0,0x49,0xb1,0x0d, + 0xc7,0xeb,0xf5,0xbd,0xf6,0xc3,0x99,0xe4,0x93,0x65,0xed,0x2a,0xc0,0xd4,0x91,0xb4, + 0x32,0x19,0x17,0xfc,0x39,0x95,0x0a,0x92,0xc4,0x30,0x91,0x2d,0xb1,0xb0,0xf0,0x00, + 0x20,0x13,0x62,0x0e,0x09,0xba,0xb4,0x2d,0x6d,0xbf,0x14,0xa3,0xe9,0xda,0xee,0x87, + 0x56,0xcd,0x23,0xaa,0x86,0x4a,0x69,0x25,0x6a,0x6a,0x9a,0x79,0x94,0xcf,0x14,0x93, + 0x6c,0xf1,0x95,0x73,0xf8,0x91,0x13,0xfc,0x80,0xad,0xbf,0xcd,0xb1,0x26,0xb7,0xd0, + 0xb9,0xdd,0x34,0x72,0x57,0xcf,0x9c,0x85,0xa0,0xa5,0x92,0x9d,0x3f,0xc3,0x6a,0x6b, + 0x63,0xec,0xac,0xf4,0xd0,0x48,0x43,0xa3,0x76,0xce,0x89,0x24,0x0a,0xda,0x83,0x32, + 0xb3,0x0d,0xac,0x40,0x37,0xc2,0xbe,0x2c,0x3d,0x3d,0x3e,0x5f,0x54,0x90,0x9a,0x73, + 0x25,0x5e,0x6c,0x12,0xb0,0xce,0x19,0xdc,0x24,0x63,0x5a,0x22,0x69,0x5d,0x48,0x1c, + 0xab,0x5b,0x41,0xd2,0x47,0x36,0x23,0x6a,0xaf,0x4f,0x64,0xd9,0x4e,0x6b,0x57,0x9b, + 0x4b,0x55,0x51,0x49,0x96,0x64,0x82,0x99,0xaa,0xc9,0xaa,0xa9,0x34,0xb0,0xcd,0x18, + 0x1f,0xf2,0xe3,0xd4,0xa0,0x99,0x08,0x2a,0xab,0xa4,0x12,0x4a,0xee,0x79,0xc7,0x33, + 0x0f,0x8b,0xad,0x7d,0xd4,0x60,0x73,0x9c,0x00,0xe5,0x1b,0xd6,0xdd,0x6b,0x4f,0xd7, + 0x31,0xc1,0x57,0x55,0x94,0x99,0x28,0xf2,0xd9,0xa7,0x8a,0x9e,0xa5,0x04,0x51,0x55, + 0x1a,0x6b,0xaf,0x64,0x48,0xa4,0x90,0x10,0x1b,0xb1,0x16,0x20,0xb1,0x61,0xe9,0xf3, + 0x37,0xd2,0x7d,0x63,0x2e,0x6b,0x3d,0x21,0xea,0x3c,0xab,0x30,0x8e,0xb5,0x23,0x5a, + 0x79,0xe6,0xa4,0x89,0xe1,0x86,0x54,0xee,0x5d,0x4b,0x32,0x06,0x24,0x9d,0x62,0xea, + 0xc0,0xad,0xc2,0x90,0x31,0x96,0xd7,0xe6,0xbd,0x3d,0x45,0x99,0x47,0x36,0x5d,0x92, + 0x35,0x0c,0xb4,0xb5,0x05,0xc4,0x15,0xb2,0xc9,0x50,0xac,0x6e,0x34,0xa4,0xa1,0x82, + 0xfa,0x39,0x24,0x15,0x37,0x02,0xde,0x70,0xff,0x00,0x50,0xe6,0xb4,0x90,0xbd,0x1d, + 0x6f,0x4e,0xe7,0x94,0x52,0x85,0x60,0x63,0xa6,0xcb,0xa9,0xa6,0xa3,0x92,0x09,0xb6, + 0x67,0x72,0x2c,0x05,0xaf,0x6d,0x27,0x51,0xe2,0xde,0x31,0x61,0x81,0xa5,0xa1,0x80, + 0x2b,0x0b,0x76,0x9e,0x6d,0x74,0xd6,0x5b,0x1c,0x90,0x66,0x55,0xd5,0x2d,0xd5,0xd5, + 0x14,0x48,0xbf,0xf0,0xf0,0xa3,0xc0,0x8c,0xca,0xc0,0x17,0x69,0x15,0xf9,0x72,0xb6, + 0x24,0x01,0x7d,0x9c,0xdc,0x90,0x06,0x2a,0x7d,0x6f,0xd0,0xb0,0xd6,0x53,0xcb,0x5d, + 0xf2,0xb4,0x0c,0xdf,0xe2,0xb4,0x6e,0x33,0x4c,0xbe,0x0e,0xc4,0xb5,0x46,0x76,0x2a, + 0xc2,0x5d,0x2e,0x55,0x6f,0xf8,0x4e,0x00,0x5b,0x5f,0x56,0x92,0x2e,0x46,0x2a,0xdd, + 0x01,0xd5,0xf4,0xdd,0x3f,0xd2,0x47,0x2f,0xa8,0xa3,0xab,0xcf,0xa9,0xab,0xa0,0x86, + 0x78,0xe8,0x5e,0x38,0xe5,0xec,0xc8,0xbb,0x1f,0x55,0x8d,0x96,0xdb,0xad,0xd4,0x1f, + 0x17,0xda,0xf8,0xd3,0xf2,0x8e,0xbf,0xa3,0xa0,0x35,0x33,0xe5,0xbd,0x27,0x9f,0x49, + 0x4f,0x53,0x1d,0xd2,0x21,0x97,0x2a,0x6a,0x3a,0xf5,0xe9,0xee,0x33,0x01,0x75,0x56, + 0x36,0xff,0x00,0x28,0xb1,0x16,0xf3,0xca,0x31,0xcb,0x0c,0x96,0xd1,0x7f,0x60,0x96, + 0xc1,0xc2,0x0d,0xa8,0x85,0x6d,0x55,0x73,0xd2,0xc5,0xdb,0xa9,0x7a,0xc7,0x92,0x1a, + 0x84,0x76,0x12,0x92,0x03,0x21,0xb2,0xb3,0x06,0x2b,0xb5,0x81,0x02,0xc4,0x7f,0x9a, + 0xdb,0x54,0x2a,0x3e,0x20,0x49,0x55,0x4d,0x63,0x1c,0x52,0x24,0xec,0x88,0x59,0x67, + 0xed,0x29,0x5e,0x55,0x02,0xb0,0xd4,0x1a,0xde,0xc6,0xe0,0xee,0x47,0x8c,0x4d,0xcf, + 0xf1,0x06,0x7c,0xb2,0xa4,0x1a,0x4e,0x9d,0x49,0x2b,0xe5,0x82,0x34,0x30,0x36,0x5f, + 0x2a,0x0a,0x73,0xdd,0x66,0xb3,0x3e,0x9d,0x7b,0x2e,0x9e,0x01,0x0c,0xce,0xc4,0x00, + 0x4e,0x03,0xcf,0x7e,0x20,0xa4,0x86,0xb6,0x29,0xfa,0x2a,0x1a,0xd8,0x6a,0xa6,0x8a, + 0x6b,0xcf,0x4b,0x2a,0x47,0x51,0x2c,0x67,0xd2,0xec,0x5d,0x4b,0xab,0x00,0x81,0x6e, + 0x34,0x96,0x00,0x06,0xda,0xd8,0xbd,0xa1,0xc4,0xfc,0x51,0xdf,0xd4,0x24,0x18,0x5a, + 0x2f,0x4f,0x66,0xf9,0xaf,0x4f,0x64,0x75,0x44,0xe5,0x4d,0x57,0x99,0xac,0x2a,0x69, + 0xbb,0x92,0xbd,0x4a,0xc5,0x33,0xa5,0x95,0x2e,0x58,0x69,0x55,0xb0,0x3c,0x69,0xdb, + 0x8f,0x50,0xbe,0x49,0x55,0x9d,0xf5,0x57,0x59,0xf5,0x17,0x51,0x56,0x4e,0xc6,0x6c, + 0xcf,0x28,0x55,0x8a,0xa5,0x22,0x04,0x2c,0x69,0x1b,0xe9,0x40,0x06,0xd6,0x25,0x95, + 0x6d,0x61,0x73,0xb1,0xbd,0xee,0x70,0xe4,0x5d,0x69,0xd4,0x39,0x87,0x50,0x31,0x8f, + 0x2c,0x14,0x14,0xec,0xd2,0x34,0xb4,0x60,0xb5,0x82,0x1b,0x00,0x08,0x25,0x2e,0x03, + 0x0f,0x1e,0x01,0xc1,0x94,0xdd,0x5d,0xd5,0x09,0x54,0x2a,0x5f,0x27,0x53,0x51,0x26, + 0xd2,0x3c,0x5a,0x53,0x58,0x25,0x75,0x10,0x55,0xb9,0x24,0x03,0x7d,0xfe,0xe7,0x8c, + 0x68,0x63,0xf5,0x4c,0x88,0xb1,0xa2,0xc1,0x37,0x5e,0xaa,0x16,0xb5,0xce,0xdd,0x59, + 0xe1,0x47,0x67,0xb5,0xb9,0xf5,0x6c,0x59,0x6c,0x59,0xfc,0xb3,0x54,0x1a,0x1a,0x63, + 0x4b,0x47,0x24,0xab,0x64,0x8e,0x1d,0x5a,0xac,0x1e,0xdb,0x80,0x5b,0x7e,0x4a,0x83, + 0x6f,0x18,0xd1,0x7a,0x3b,0xa7,0xe9,0xf2,0x0e,0x88,0xea,0xda,0xbc,0xf9,0xd8,0x56, + 0xc7,0x5b,0x05,0x0c,0x50,0xa3,0x90,0x82,0x55,0x1a,0x94,0x11,0xe6,0xcd,0x23,0x39, + 0x3c,0x1d,0x2b,0xfa,0xd3,0xeb,0xb3,0xbe,0xb0,0xcd,0x65,0xae,0xef,0x52,0x4b,0x0e, + 0x56,0xcc,0xae,0xb4,0xbf,0x24,0x18,0x2b,0x2d,0xad,0xa4,0xb3,0x05,0x46,0x23,0x9f, + 0x16,0x3b,0xec,0x6d,0x8b,0x2e,0x63,0xd6,0xbd,0x4c,0x29,0xd6,0x2c,0xb3,0x20,0xcb, + 0xe7,0x8d,0xd9,0x84,0xd1,0xd5,0xd6,0xc5,0x12,0xbc,0xa2,0x38,0xc7,0x74,0x11,0x31, + 0x07,0x65,0x23,0x62,0x06,0xc3,0x8b,0xe1,0xdd,0x36,0xa0,0xed,0x0e,0x6f,0xcf,0x3f, + 0xca,0xb6,0x32,0x1b,0x78,0x4c,0x54,0xc5,0x22,0x30,0x90,0xc4,0xda,0x25,0x46,0x91, + 0x48,0x5b,0xfa,0x16,0xde,0xab,0x78,0x16,0x37,0x3f,0x42,0x0f,0x9c,0x43,0x66,0xf9, + 0x34,0x75,0x28,0x95,0x35,0x89,0x1c,0xeb,0xa9,0x91,0x10,0xb9,0x56,0x02,0x44,0xb5, + 0xc8,0xb8,0x3b,0x80,0x47,0xd3,0xf5,0xc1,0x99,0x8e,0x7d,0xd5,0x92,0x52,0xe5,0xc3, + 0x2f,0xf9,0x5a,0x4c,0xd4,0x34,0x8b,0x2b,0x45,0x14,0x45,0x12,0x6d,0x5a,0x75,0x77, + 0x9e,0x5d,0x2c,0x96,0x0b,0xa7,0x4d,0x88,0xb6,0xf7,0x18,0x81,0xcd,0x33,0x5e,0xb0, + 0xcd,0x2a,0x57,0xe6,0xe3,0xa6,0xee,0xc6,0xc5,0x99,0xa3,0x11,0xc8,0xf3,0x29,0x3e, + 0x9f,0x51,0x6f,0x72,0x48,0x02,0xdb,0x1f,0xa6,0x1e,0x39,0x25,0x2e,0xbd,0xb4,0x89, + 0x7d,0xe0,0x84,0xfd,0x2d,0x05,0x14,0x51,0xce,0x8d,0x04,0x3f,0x2f,0x50,0x80,0x49, + 0x1c,0xad,0x75,0x91,0x80,0x00,0x0d,0xcf,0x20,0x28,0xe3,0xdb,0x14,0x2e,0xb5,0xa0, + 0x34,0xf5,0x62,0x28,0xe2,0x99,0xd6,0x55,0x88,0x40,0xcd,0x19,0x11,0x85,0xb1,0x05, + 0x4e,0xc2,0xfe,0x0e,0xcd,0x7f,0x1a,0x76,0xc4,0xcd,0x64,0x1d,0x4f,0xa5,0x98,0xc7, + 0x52,0xf0,0x30,0x65,0xd6,0x0d,0x3a,0x05,0x5b,0x8f,0x50,0x1a,0xce,0xe1,0x89,0x07, + 0x7b,0x7d,0xae,0x30,0x56,0x5f,0x43,0x9a,0x4f,0x01,0xff,0x00,0x1f,0xa4,0x82,0x62, + 0x1c,0x2a,0x29,0x95,0x18,0xe9,0xd3,0x6e,0x03,0x5a,0xe4,0x72,0x7f,0xae,0xf8,0xbc, + 0x6f,0x73,0xac,0x84,0xbb,0x81,0x1b,0x69,0x51,0xa9,0xf2,0xe1,0xd4,0x34,0xe1,0x29, + 0xa8,0xe3,0xcb,0x24,0xa5,0x8a,0x38,0x63,0x82,0x2a,0x8e,0xe3,0x4f,0x3a,0x80,0xa3, + 0xf0,0x4d,0xe5,0x0e,0xf6,0x66,0xb8,0xb2,0x2d,0xac,0x00,0xc4,0x4d,0x6e,0x55,0x5b, + 0x43,0x97,0xfc,0xf4,0x94,0xeb,0x40,0x76,0x98,0x99,0x1e,0xcd,0x2c,0x65,0x8a,0x82, + 0x82,0xfb,0x0b,0xa9,0xb8,0x36,0xde,0xc7,0xf9,0x85,0xfa,0x2b,0xa9,0x23,0xe8,0xf9, + 0xfe,0x05,0x41,0xd3,0xd9,0x14,0x39,0x75,0x1f,0x59,0x53,0x53,0xd3,0x3b,0x43,0x4f, + 0x44,0xd1,0xd4,0x34,0xe9,0x31,0x33,0x09,0x2a,0x0e,0xa5,0x60,0x51,0xc8,0xb8,0x71, + 0x73,0xa4,0x5e,0xc0,0x8c,0x64,0x05,0xfa,0xf7,0xe5,0xc5,0x13,0x66,0x59,0xa5,0x46, + 0x5e,0x82,0x35,0x58,0x25,0xce,0x3b,0xb0,0x88,0xc0,0x3b,0x69,0x67,0x2b,0x65,0x0a, + 0xb6,0x5b,0x60,0xb0,0x39,0xd6,0x48,0xac,0xf5,0x56,0x96,0x30,0x0c,0x9b,0x54,0x3a, + 0x1a,0x90,0x95,0xb5,0x0d,0x0c,0x7f,0xf0,0xdd,0xb7,0x90,0x32,0xb6,0x9b,0x10,0xb7, + 0x24,0x6c,0x45,0xc5,0xfc,0xed,0xbe,0x09,0xad,0xce,0x29,0x6a,0x74,0xd4,0xda,0x63, + 0x98,0xbc,0xc1,0xcc,0x61,0x0b,0xab,0x21,0xd8,0x2b,0x02,0x74,0xf8,0x16,0xb6,0xfb, + 0xfd,0x31,0x37,0x92,0x74,0x5e,0x6f,0x0f,0x50,0x51,0x0c,0xf3,0x29,0x92,0x6c,0x9c, + 0xce,0xaf,0x56,0x21,0x99,0x48,0x28,0x77,0x20,0x30,0x60,0x4f,0x8b,0x8d,0xb7,0x18, + 0x99,0xce,0x7a,0x36,0xa7,0xa7,0xf3,0xe9,0x92,0x83,0x29,0x5c,0xf2,0x86,0x9e,0x56, + 0x31,0xf6,0x64,0x52,0x93,0x12,0xaa,0x55,0x99,0xc1,0xd5,0xe9,0x66,0x20,0x81,0x63, + 0xb1,0xb1,0x1c,0xe1,0xb0,0x64,0xdb,0x5d,0x3e,0x8a,0x82,0x3a,0xaa,0x44,0x35,0xdd, + 0xf8,0x92,0x93,0xe5,0x74,0xcd,0x24,0x97,0x89,0x8b,0x6a,0x31,0x9f,0x37,0x5b,0x73, + 0x6d,0xb9,0xdb,0xf4,0xc4,0x4c,0xf3,0x40,0xd2,0x22,0x46,0x04,0x8d,0xe9,0x05,0x0d, + 0xf7,0x36,0xdb,0x6f,0xaf,0x9f,0x6c,0x58,0x33,0xcc,0x83,0x3c,0xa0,0xa7,0x6a,0x8a, + 0xcc,0xae,0xae,0x90,0x77,0xc8,0x32,0x0d,0xd0,0xea,0xbd,0x90,0x58,0x92,0x47,0x23, + 0xde,0xc3,0x06,0x65,0xff,0x00,0x0d,0xb3,0xbe,0xa4,0xa5,0x59,0x3a,0x53,0x2e,0xae, + 0xae,0xcc,0xa2,0x9a,0xf5,0x34,0xa9,0x09,0x42,0x23,0x22,0xeb,0x20,0x0c,0x05,0x80, + 0x21,0x94,0xee,0x6f,0xb1,0xf2,0x70,0xe1,0xbb,0x4a,0x80,0x5a,0xaa,0xad,0x61,0x85, + 0x6f,0x49,0x14,0x71,0x8f,0xcc,0x48,0x16,0x24,0xdc,0x7f,0xfe,0xac,0x3e,0xd8,0x91, + 0xa1,0xcc,0xf3,0x0c,0xaa,0xb5,0x1e,0x8e,0x55,0x8a,0x51,0x19,0x00,0xa8,0x25,0x55, + 0x49,0x17,0x52,0x0d,0xc1,0x1c,0x7f,0xda,0xd8,0xb6,0x27,0xc0,0x8f,0x89,0x75,0x70, + 0xc8,0xa9,0xd1,0xd5,0xe0,0xac,0xaa,0xf2,0x6b,0x28,0x8a,0x43,0x1e,0x43,0x16,0xb1, + 0xdf,0x73,0x6d,0x80,0x17,0x3b,0x71,0x66,0xa3,0xfe,0x1e,0xba,0xe1,0x2a,0x60,0x35, + 0x79,0x6e,0x5e,0xd4,0x8a,0x43,0x48,0xe3,0x36,0x86,0xcd,0x6d,0x3e,0x9b,0xdc,0xef, + 0x72,0x41,0x3b,0x81,0xb9,0xf0,0x2f,0x54,0x92,0xc4,0xdc,0x39,0xc3,0xee,0x89,0x00, + 0x72,0x84,0xca,0xf2,0x8c,0x9a,0x7c,0x82,0x8e,0xb7,0x3e,0x6a,0x0a,0x91,0x3e,0x64, + 0xd4,0x95,0xf4,0xd9,0x7a,0x45,0x0d,0x54,0x09,0x24,0x41,0xa3,0xaa,0x57,0x6d,0x45, + 0x42,0xc8,0x40,0x2c,0x14,0xad,0xb5,0x70,0x6f,0x8a,0xad,0x1e,0x5d,0x1d,0x34,0x46, + 0x21,0x49,0x1b,0xd7,0x24,0xa2,0x20,0xee,0x0e,0xbd,0x7c,0x8d,0x2a,0xdb,0x93,0x6b, + 0x9d,0xb8,0xbf,0x82,0x77,0xd3,0xeb,0xfe,0x0a,0xf5,0xcd,0x4d,0x05,0x54,0x47,0x2f, + 0xc8,0x7b,0xf3,0x5d,0x51,0xc6,0x6c,0xa6,0x48,0xaf,0x62,0x10,0x39,0xe4,0x7a,0x02, + 0x91,0xc1,0xbf,0xdc,0x89,0x7c,0xb7,0xe0,0x07,0x51,0x4f,0x06,0x63,0xf3,0xd9,0x86, + 0x5f,0x4d,0x55,0x99,0x50,0xc1,0x1c,0x69,0x21,0x23,0xe5,0x99,0x98,0x19,0x43,0x6a, + 0x89,0xaf,0x62,0xaa,0xa0,0xa3,0x29,0xb1,0x36,0x36,0x04,0x15,0x6e,0xa2,0x10,0x28, + 0xb8,0x25,0xa2,0x78,0x58,0xb5,0x2e,0x47,0x5f,0x9a,0x4f,0x48,0x20,0xa6,0x9c,0xcb, + 0x54,0xe2,0x38,0x74,0x45,0xac,0xc8,0xcd,0xf9,0x41,0x6b,0xd8,0x5e,0xf7,0xde,0xd6, + 0x1b,0xe2,0xd6,0x32,0xb3,0x97,0xe4,0xf4,0xf5,0xd4,0x52,0xe5,0x95,0xb4,0xdd,0xf8, + 0x23,0xab,0xa8,0x90,0x3b,0x4b,0x97,0x86,0x32,0x81,0x4e,0x23,0x92,0x44,0x25,0x1c, + 0x6b,0x91,0x8a,0x29,0x17,0xd0,0x19,0x81,0x36,0x37,0x6c,0xbf,0xe0,0x07,0x5a,0xc7, + 0x57,0x1c,0xa6,0xbf,0xa6,0x29,0xe6,0x81,0x3b,0x4a,0x64,0xcc,0xa5,0x50,0x81,0x3d, + 0x0d,0x6b,0x43,0xc6,0xfe,0x92,0x4e,0xd7,0xe7,0x03,0xc5,0xfc,0x3a,0xf5,0x5f,0xcd, + 0x49,0x4f,0x3d,0x7f,0x4b,0x53,0xac,0x31,0xc9,0x0a,0x46,0xd9,0x8c,0xc4,0xe8,0x2c, + 0x40,0xff,0x00,0xd2,0x17,0xde,0xdb,0xb1,0xb1,0xd8,0x90,0x4e,0x2c,0x1a,0x88,0xbf, + 0xf4,0x13,0x88,0xdd,0xd9,0x50,0x6a,0x3a,0x6e,0xa9,0x3a,0x45,0xb3,0xea,0x4c,0xd2, + 0x39,0xe8,0xe2,0xcd,0x2a,0x32,0xe9,0x95,0xeb,0x4a,0x4b,0x51,0xa6,0x01,0x51,0x1b, + 0x0a,0x42,0xba,0x95,0x42,0xac,0x80,0x16,0x36,0x2d,0x65,0xf4,0x9e,0x43,0xae,0xd3, + 0x4d,0x0d,0x04,0x55,0x33,0xb6,0x6c,0x69,0x03,0x47,0xac,0x37,0xa2,0x0d,0xc0,0x54, + 0xd5,0x72,0x0a,0x85,0x0a,0xc1,0x94,0xdb,0xd6,0x54,0xa8,0x2b,0xbe,0x93,0x57,0xfc, + 0x3d,0xf5,0xec,0x8c,0x63,0xf9,0x6e,0x93,0x8a,0x5a,0x5e,0xdf,0x75,0xe1,0xcd,0x57, + 0xbb,0x2b,0x2f,0x70,0xab,0xbb,0xdb,0x92,0xae,0x41,0x3b,0x5f,0x42,0x92,0x3c,0x96, + 0xf2,0x5f,0xe1,0x97,0xaa,0xea,0xea,0x22,0x4c,0xde,0xa3,0x25,0xca,0xa8,0x22,0x0a, + 0x66,0x92,0x1c,0xc5,0x27,0x72,0xe9,0x7b,0x02,0x80,0x5c,0xde,0xe4,0x91,0xbd,0xc0, + 0x1e,0x71,0x0e,0xa2,0x1a,0xfe,0xa0,0x98,0x44,0xf3,0x80,0x10,0x59,0x8f,0x4a,0x66, + 0xd9,0xee,0x5b,0x41,0x40,0xf9,0xe5,0x6f,0x50,0xac,0x75,0x0d,0x5a,0x20,0x93,0x2b, + 0x58,0x5a,0xe5,0x34,0x10,0x1d,0x24,0x62,0xb1,0x80,0x09,0x03,0x48,0xe4,0xec,0x0e, + 0x34,0x1c,0x93,0xa3,0xba,0xc2,0x6c,0xb2,0x1c,0xbf,0x29,0xa1,0xcd,0x06,0x4f,0x04, + 0x04,0x22,0x24,0x4d,0x04,0x2c,0x1c,0xdd,0xc0,0x4d,0x81,0x52,0x49,0xba,0xf2,0x45, + 0xaf,0x7b,0x03,0x8e,0xab,0x35,0xf5,0x0a,0xaa,0xb1,0x88,0xe2,0x8e,0xc0,0x5a,0x08, + 0x54,0x59,0x47,0x80,0x6d,0x8f,0xa5,0xcc,0xea,0x5f,0x53,0x77,0xa6,0x66,0x1e,0xa1, + 0xf8,0x83,0xf4,0xfe,0xa3,0x1e,0x71,0xfa,0xe0,0x45,0x06,0xae,0x88,0xd2,0xc6,0xde, + 0x72,0xb1,0x28,0x3a,0x63,0xad,0xea,0x44,0xf1,0x66,0xcb,0x0d,0x5c,0x46,0x25,0x82, + 0x78,0xaa,0x28,0xfb,0x82,0x68,0x41,0x3a,0x75,0x92,0x7d,0x5f,0x99,0xac,0x05,0xc8, + 0xb0,0x1b,0x79,0x6b,0x3b,0xf8,0x33,0x3f,0x55,0x4f,0x4d,0xff,0x00,0x88,0x3a,0x6e, + 0x86,0xa8,0x68,0x54,0x92,0x45,0xa4,0x85,0x2a,0x1f,0x4b,0x29,0x1a,0xa5,0x1e,0xa0, + 0xa0,0x0d,0x21,0x41,0x16,0x17,0xdf,0xc6,0x37,0x29,0x2b,0x0d,0x4b,0x05,0x62,0x51, + 0x80,0xf0,0x77,0x17,0x1b,0xef,0x80,0x64,0x91,0x98,0x01,0xdd,0x74,0xb3,0x10,0x08, + 0x62,0x6f,0xec,0x0f,0xfa,0x63,0x27,0x9e,0xe0,0x6d,0xa2,0xbe,0x89,0xfc,0xa8,0xc1, + 0x14,0xd5,0x91,0x52,0x7f,0x0c,0xdd,0x39,0x48,0xd1,0xb4,0x54,0x73,0x50,0xcb,0x1e, + 0xf1,0x98,0x9e,0xe2,0x32,0x41,0xb8,0x20,0x92,0x0f,0x3e,0x79,0xdb,0xda,0xf8,0x36, + 0xaf,0xf8,0x7b,0xca,0x33,0x08,0x04,0x35,0x95,0x95,0xd2,0x15,0x20,0xc0,0xe9,0x65, + 0x28,0x00,0xb7,0x3b,0x82,0x49,0xb9,0xbf,0x3b,0xfe,0xfa,0xa4,0x71,0x8e,0xe2,0xca, + 0xf5,0x9a,0x0d,0xc2,0x82,0x49,0x20,0x01,0xb7,0x1b,0x6f,0xcf,0xf4,0xc3,0x92,0xce, + 0x14,0xd8,0xcb,0x1b,0xee,0xda,0x75,0x0e,0x7e,0xb6,0xff,0x00,0x7c,0x61,0xff,0x00, + 0x55,0x28,0xfe,0xe5,0x36,0x44,0x6e,0xc5,0x2c,0x7e,0x9b,0xf8,0x7e,0xca,0xf2,0xe9, + 0x92,0x5e,0x9f,0xaf,0xaf,0xcb,0xe5,0xee,0x96,0x69,0x26,0x91,0x9c,0xb2,0x8e,0x14, + 0xe9,0x2b,0xb5,0xcd,0xfe,0xb8,0x32,0x6f,0x83,0xe1,0xca,0x41,0x2f,0x52,0x66,0x55, + 0x12,0xbd,0x9b,0xbb,0x24,0xec,0xc2,0xf7,0x26,0xd7,0xbf,0x91,0xfb,0x58,0x7b,0x63, + 0x54,0x35,0x4d,0x33,0x15,0x6d,0x3a,0x85,0xbf,0x29,0xd4,0xa6,0xd7,0xdf,0xfd,0x70, + 0xd0,0xa9,0x75,0x4b,0xc8,0x80,0x84,0xdf,0x49,0x50,0x07,0xdf,0x7c,0x0f,0xd6,0x4c, + 0x78,0x71,0x44,0x47,0x10,0xc0,0x16,0xb2,0xf8,0x3e,0x03,0x89,0x2a,0x0a,0xc5,0xd4, + 0x52,0x11,0x19,0x2b,0x51,0x2b,0xa3,0x6a,0xa9,0xb8,0xb8,0x20,0xdc,0x90,0x05,0xed, + 0x62,0x7c,0x7d,0x70,0xdb,0x7f,0x0f,0xff,0x00,0x2d,0x1c,0xa4,0xe7,0x94,0xd3,0x4d, + 0x24,0xa4,0xac,0xc6,0x9d,0x95,0xc5,0xce,0xfc,0x35,0xb8,0x24,0xf1,0xc8,0xfd,0x31, + 0xb0,0xad,0x76,0xa8,0xec,0x8c,0x16,0xdc,0x70,0x07,0x36,0xd8,0xff,0x00,0x4c,0x30, + 0xb5,0xd2,0x95,0x60,0xa1,0x92,0x4d,0xcd,0xb7,0x25,0x87,0x37,0xdb,0xeb,0x87,0xfd, + 0x4c,0xc4,0x7f,0x52,0xb0,0xc5,0x1d,0x70,0xb2,0xf3,0xfc,0x3f,0x65,0x33,0x18,0xbe, + 0x73,0x39,0x9d,0x91,0x17,0x6e,0xd5,0x30,0x8e,0xe2,0xfb,0xee,0xc4,0x90,0x76,0xe7, + 0xeb,0x84,0x0f,0x80,0x59,0x74,0x35,0x31,0xcd,0x06,0x64,0xd4,0xc9,0x0a,0x9e,0xd2, + 0xf6,0x15,0x98,0x1b,0xec,0x7d,0x88,0xb5,0xad,0xb7,0x8c,0x6a,0x52,0x57,0x56,0x10, + 0x77,0xd4,0x8b,0xb2,0x15,0x17,0x36,0xb7,0xfb,0xfd,0xb0,0xd4,0x72,0xcc,0xf2,0x1b, + 0x33,0x2b,0x5e,0xdb,0x83,0x7f,0xb5,0xbf,0x5c,0x21,0xd5,0xcd,0xdd,0x03,0x1c,0x7d, + 0x96,0x4e,0xff,0x00,0x02,0x69,0x27,0xab,0x81,0x9b,0x39,0xa9,0xab,0x58,0xed,0xe8, + 0x78,0x59,0x6f,0xc5,0xc0,0xde,0xeb,0x82,0xe5,0xf8,0x0f,0x43,0x24,0x2b,0x1d,0x66, + 0x79,0x53,0x1e,0x8d,0x25,0x34,0x52,0xa9,0x36,0x17,0xbd,0xf7,0xdc,0x92,0x79,0x38, + 0xd3,0x0c,0xf2,0xb3,0xe8,0x91,0xae,0xcc,0x80,0xdd,0x9b,0x7b,0xde,0xf7,0xbf,0x8c, + 0x2d,0xd2,0x49,0xae,0x23,0x3a,0x3d,0x57,0x37,0x37,0xd2,0x7f,0xdf,0xe9,0x83,0xfa, + 0xe9,0x4f,0xf7,0x25,0x11,0x44,0x73,0x4b,0x32,0x8f,0xf8,0x78,0xc8,0x3b,0x7f,0x8b, + 0x9a,0x56,0xcc,0xec,0xba,0x47,0xfc,0x2c,0x48,0x37,0xde,0xe2,0xc2,0xe4,0xdf,0xdf, + 0xd8,0x7b,0x0c,0x2e,0x93,0xf8,0x7a,0xe9,0xd8,0xe4,0x67,0xcc,0x33,0x3a,0xfa,0x94, + 0xb1,0x58,0xc2,0xc7,0x1a,0x15,0x06,0xfb,0x12,0x06,0xff,0x00,0xf6,0xbf,0xd3,0x1a, + 0x6b,0xd2,0x31,0x75,0x78,0xe6,0x91,0x80,0xb8,0x3b,0xe1,0x0c,0x9f,0x2e,0x17,0x5b, + 0x11,0xaa,0xc6,0xc0,0x93,0xab,0x6b,0x8b,0x0f,0xb6,0xff,0x00,0x6b,0xe1,0xbf,0x59, + 0xa8,0x3c,0x39,0x37,0x95,0x17,0x34,0xb3,0xc9,0x7f,0x87,0xee,0x92,0x77,0x95,0x23, + 0xaf,0xcc,0x61,0x33,0xa8,0x50,0x54,0xa0,0x31,0x8e,0x75,0x01,0x6b,0x13,0xb0,0xe7, + 0xc6,0x1e,0x9b,0xf8,0x7a,0xe8,0x57,0xa5,0x11,0x4a,0xf9,0x97,0x7c,0xa9,0x3d,0xd8, + 0xe6,0xdf,0x57,0x3a,0x82,0xf1,0xb6,0xfb,0x0f,0x7c,0x68,0x14,0xf3,0xc1,0x50,0xb1, + 0xf6,0x2a,0x96,0x45,0x70,0x1e,0x32,0xad,0x7b,0x8b,0x80,0x3e,0xdb,0xfb,0xfe,0xb8, + 0x1e,0x3a,0xf8,0x64,0x69,0x74,0x16,0x91,0xa2,0x6b,0x34,0x76,0xb1,0x6e,0x2e,0x41, + 0xfa,0x5c,0x7e,0xff,0x00,0x4c,0x27,0xeb,0x35,0x3f,0xfa,0x28,0x06,0xc2,0x3a,0x2c, + 0xe8,0xff,0x00,0x0f,0x5d,0x27,0x25,0x54,0xd2,0x7c,0xfe,0x6e,0xb4,0xf2,0xb8,0x22, + 0x18,0xc4,0x4a,0x00,0xff,0x00,0x28,0x36,0x26,0xd7,0xfd,0x71,0xea,0x7f,0x0e,0x1d, + 0x23,0xc7,0xf8,0x96,0x75,0x60,0x40,0x37,0x96,0x21,0xa9,0x47,0xf2,0x9f,0x4f,0xfa, + 0x5b,0x17,0xb7,0xea,0x5a,0x58,0x5d,0xe2,0xa8,0x47,0x49,0x23,0x2c,0xac,0xd2,0x11, + 0x62,0x00,0xb8,0xdc,0x72,0x4d,0xb6,0x1e,0x7f,0x7c,0x37,0x27,0x50,0x47,0x4c,0xae, + 0xd5,0x34,0xd2,0x91,0x03,0x2a,0x35,0xf6,0xbe,0xae,0x0e,0xfc,0x81,0xb5,0xfd,0x81, + 0x18,0x3f,0xaa,0xd5,0x75,0x25,0x56,0x7c,0x90,0x68,0x85,0x96,0xe7,0x9f,0xc3,0x2e, + 0x51,0x5f,0x97,0xcd,0x47,0x07,0x54,0x57,0x52,0x24,0xae,0x8c,0x1e,0x5a,0x44,0x96, + 0xda,0x6f,0x6d,0xc1,0x1b,0x12,0xdf,0xa7,0xbe,0x21,0x32,0x0f,0xe1,0xb3,0x28,0xe9, + 0xf1,0x53,0x4f,0x9e,0x67,0x15,0x19,0xc4,0xd3,0x30,0x65,0x6f,0x97,0x44,0x89,0x6d, + 0x7f,0xe5,0x66,0x37,0xde,0xfe,0x71,0xb7,0x26,0x6d,0x24,0x93,0xb4,0x49,0x09,0x46, + 0x0b,0xa8,0xe9,0x42,0xcc,0x00,0x3b,0x92,0x00,0x24,0x5b,0x8f,0xf6,0x30,0xd5,0x4b, + 0xf7,0xc8,0xd3,0xa6,0x49,0x34,0x89,0x51,0x2d,0xa7,0xb8,0xa4,0xdb,0x6f,0x1b,0x1f, + 0x7f,0xed,0x80,0xfd,0x6e,0xa8,0x01,0x44,0xfd,0x87,0xf0,0xb3,0xc9,0xb6,0xbe,0x00, + 0xa9,0xb0,0x7c,0x21,0x5a,0x99,0xa9,0x53,0xff,0x00,0x10,0x48,0x99,0x6d,0x3e,0x85, + 0x8e,0x8a,0x8a,0x9d,0x61,0xed,0xa8,0x16,0x00,0x4b,0xbd,0xed,0x7b,0xee,0x2c,0x74, + 0x80,0x76,0xbe,0x0d,0x83,0xe0,0xc5,0x35,0x2a,0x54,0xb6,0x61,0x9e,0xe6,0x19,0x9d, + 0x4b,0x31,0x68,0x66,0x90,0x88,0x84,0x44,0xa8,0x53,0xf8,0x6a,0x34,0xdf,0x60,0x41, + 0xf0,0x6f,0xf6,0xc5,0x82,0x92,0xa6,0xa6,0x96,0x66,0xf9,0xaf,0xf8,0x7d,0x0f,0xb2, + 0xc4,0xd7,0xd4,0xbb,0x58,0xb0,0xb6,0xde,0xd8,0x91,0x7c,0xea,0x9a,0x39,0x96,0x32, + 0xec,0x25,0x71,0x60,0x24,0x25,0x75,0x0e,0x46,0xe4,0x7b,0x63,0x37,0xeb,0x5e,0x2c, + 0x5a,0xad,0x86,0x1a,0xf8,0x9a,0xa2,0x07,0xc3,0xda,0x6e,0xe4,0x6a,0xa1,0x1a,0x05, + 0xb0,0x64,0x92,0x43,0x7b,0x0f,0xf2,0xb5,0xf6,0xdc,0x03,0xfb,0xfb,0xe2,0x51,0x7a, + 0x3a,0x96,0x38,0x80,0x35,0x15,0x0c,0xa1,0x19,0x2c,0x92,0x81,0xa4,0x93,0xce,0xde, + 0x7d,0xbf,0xad,0xf1,0x1f,0x5d,0xd6,0xd9,0x6e,0x59,0x3c,0x71,0xd5,0x92,0x1e,0x5b, + 0xa0,0x24,0x90,0x01,0xb5,0xd0,0x1b,0x8d,0xf5,0x1d,0xae,0x38,0xdb,0xed,0x8a,0xe9, + 0xf8,0xc1,0xd3,0x8b,0x5c,0x22,0x0c,0xe8,0x0b,0xe8,0x1a,0x9c,0x85,0xbd,0xce,0xad, + 0xc0,0xda,0xc7,0xcf,0xeb,0xb8,0xe2,0x33,0xce,0x97,0xe2,0x0d,0xb0,0xaf,0xdd,0x0d, + 0x70,0x15,0xb4,0x74,0x4e,0x5d,0xf3,0x33,0x3b,0xbd,0x7d,0xa5,0x5f,0x5a,0xb5,0x67, + 0xa5,0xbd,0x3a,0x75,0x0d,0xae,0xa4,0x80,0x3e,0x9b,0x71,0x89,0x06,0xe9,0xec,0xae, + 0xa2,0x47,0x67,0x89,0xe5,0x66,0x26,0xd7,0x90,0xb0,0x06,0xc6,0xf6,0x3f,0xdb,0xdc, + 0x62,0x94,0x9f,0x16,0xb2,0x37,0x9b,0xb3,0x4d,0x20,0x59,0x17,0xf2,0x86,0x1b,0x0b, + 0xed,0x6b,0x7b,0x7f,0x6f,0xbd,0xf0,0x83,0xf1,0x97,0x28,0xcb,0x27,0x8a,0x29,0x6a, + 0x20,0x25,0xd9,0xc4,0x9d,0xb9,0x4f,0xa1,0xd7,0x6f,0x6d,0x81,0xb1,0xdb,0x8b,0x5b, + 0x16,0x6d,0x98,0x9f,0xe9,0xfc,0x28,0x24,0x88,0x74,0x0a,0xe0,0xbd,0x2d,0x93,0xc1, + 0x56,0x6a,0xa1,0xa5,0x65,0x9c,0x69,0xbd,0xea,0x5c,0x02,0x40,0xb0,0x24,0x71,0x7e, + 0x77,0xc3,0x75,0x19,0x0d,0x3c,0xf4,0xcf,0x4e,0x63,0xab,0x86,0x9d,0xc5,0x88,0x8a, + 0xa2,0xd7,0x1e,0x54,0xed,0xe4,0x62,0x9f,0x55,0xf1,0xbb,0x28,0xa4,0x96,0x31,0xdd, + 0x86,0xa8,0x32,0x35,0xda,0x32,0x6f,0x19,0x06,0xfa,0x9a,0xc3,0xf2,0xf2,0x2c,0x3d, + 0xbd,0xb0,0x34,0xdf,0x1b,0xe8,0x55,0x7e,0x62,0x37,0x68,0x9d,0x89,0xed,0x32,0xc7, + 0xaa,0xde,0xe0,0xdc,0x5b,0x6b,0x7f,0xfb,0x0b,0xda,0xd8,0x43,0x1e,0xa9,0xd9,0xdb, + 0xf8,0x55,0x99,0x23,0x3c,0x2d,0x15,0xd3,0xe5,0xda,0x11,0x31,0x8d,0x44,0x8d,0xcb, + 0x37,0x20,0x29,0x24,0xfd,0x00,0xb7,0xf4,0xc3,0x89,0x00,0xa8,0x10,0xbc,0x25,0x11, + 0x65,0x1a,0xd5,0x1d,0x06,0xaf,0x1b,0x11,0xe3,0x63,0x7c,0x67,0xd0,0x75,0xc4,0x55, + 0x99,0x85,0x22,0xa0,0x74,0x98,0xc1,0xaa,0xd2,0x36,0xa0,0x49,0x21,0x4e,0x9e,0x41, + 0x3b,0x7b,0x7e,0x5d,0xb9,0xe5,0x35,0xbf,0x10,0x17,0x2f,0xa5,0x15,0x14,0xfa,0x2a, + 0x9a,0x39,0x3b,0x71,0xc9,0x13,0x5b,0xbc,0x8e,0xfe,0x36,0xba,0x90,0x05,0xc7,0xd5, + 0x77,0xf6,0x36,0x88,0xa5,0xba,0xa5,0xd0,0x12,0xc6,0x05,0x2d,0x11,0xe9,0x60,0x45, + 0xd3,0x50,0xe0,0x13,0xf8,0x7a,0x49,0x23,0x83,0xc1,0xf6,0x3b,0x5b,0xea,0x71,0xf2, + 0xb5,0x3d,0x3c,0x8e,0xa2,0xc8,0x03,0x6a,0x2b,0xa8,0x8f,0x51,0x17,0xde,0xff,0x00, + 0x7b,0xdb,0x18,0x31,0xf8,0x85,0x5d,0x19,0xa1,0xa1,0x4a,0xe3,0x54,0xb0,0xd5,0xc7, + 0xaa,0xa1,0x89,0x1f,0x86,0x62,0x60,0xc0,0x80,0x7f,0xcd,0x23,0x6f,0xe2,0xcb,0xe7, + 0x07,0xcf,0xf1,0x56,0x57,0x92,0xa9,0xe2,0xa7,0x48,0xc8,0x94,0x93,0x26,0xe5,0xc8, + 0x04,0x14,0x04,0x0b,0x6c,0x01,0x3b,0x7b,0x6f,0x8b,0xce,0x8e,0x6e,0x81,0x53,0xe7, + 0x46,0x72,0x56,0xce,0x2b,0x23,0x58,0xc2,0xa9,0xd2,0x85,0x05,0xee,0xbc,0xf9,0xbe, + 0xdf,0xa8,0xf7,0xdb,0x0c,0x49,0x3d,0x34,0x41,0x2f,0xa1,0x49,0xbb,0x28,0x1e,0x17, + 0x55,0x80,0xbd,0xfe,0xff,0x00,0xdf,0x9c,0x60,0xcb,0xf1,0x22,0xbd,0xa8,0x94,0x4f, + 0x2c,0x89,0x24,0xae,0x41,0x48,0xec,0x00,0x60,0x00,0xb8,0x27,0x7e,0x3d,0xbe,0x87, + 0x9b,0xe0,0x0c,0xcb,0xae,0x6b,0xb3,0x29,0x24,0xee,0x05,0x8c,0x24,0x61,0x02,0x86, + 0x27,0x70,0x47,0xaa,0xf6,0xe7,0x60,0x7e,0xf8,0x61,0xa2,0x94,0x9a,0x2a,0xa3,0xa8, + 0x6d,0xf0,0xb6,0x5e,0xa0,0xeb,0x5c,0xb3,0x22,0xcb,0x62,0xad,0x8c,0xa4,0xc1,0xe5, + 0x48,0x0c,0x70,0xbf,0xab,0xd4,0x4a,0xeb,0xb5,0xbc,0x35,0xcf,0xff,0x00,0x23,0x0f, + 0x43,0xd5,0x79,0x74,0xf9,0x6d,0x25,0x4c,0x93,0x43,0x0b,0xcd,0x12,0xb5,0x9c,0x1b, + 0x03,0xc1,0x1e,0x6d,0xbd,0xf1,0xcf,0x35,0xd9,0x85,0x6d,0x74,0x12,0xc5,0x3d,0x45, + 0xfb,0xcc,0x19,0xbd,0x24,0x5a,0xc4,0x1b,0xdb,0xee,0x06,0xd8,0x0f,0xe6,0x1c,0x08, + 0xed,0x3c,0xc1,0x51,0x34,0x9f,0xc4,0xb0,0xb6,0xe3,0x61,0xc5,0xb7,0xe3,0x1a,0x87, + 0x87,0x12,0x28,0xb9,0x21,0xd4,0x13,0xc2,0xe9,0x7a,0x9e,0xa6,0xa2,0x86,0x39,0x1b, + 0xe6,0xe0,0x13,0x12,0x14,0x58,0xdc,0x2e,0xda,0xb7,0x3e,0xdf,0xef,0x63,0x6c,0x57, + 0xb3,0x6f,0x8a,0x74,0x19,0x56,0x62,0xd0,0xc2,0xa2,0xa2,0x17,0xa7,0x2c,0x9a,0x64, + 0xbe,0x86,0x0c,0x01,0x5f,0xa0,0x65,0x20,0x8f,0xb1,0xc6,0x06,0x73,0x06,0x60,0x8c, + 0x5e,0x46,0x64,0x4b,0x6e,0x7d,0xb8,0xdb,0x9f,0x3f,0xd7,0x03,0x54,0x55,0xac,0x95, + 0x31,0x06,0x46,0x21,0x81,0x24,0xda,0xdb,0x71,0x6f,0xeb,0xe2,0xd7,0xfd,0xf0,0xcd, + 0xf0,0xe6,0x8f,0xea,0x75,0xaa,0x5d,0x33,0xbb,0xad,0xec,0xfc,0x5a,0xa2,0x94,0xd8, + 0x54,0x04,0x47,0x2c,0xbf,0xf2,0xc8,0x61,0xb0,0x3c,0xfb,0x6f,0xed,0xc8,0xc0,0xf3, + 0x7c,0x56,0x82,0x42,0x4a,0xd4,0x22,0xaf,0x82,0x0e,0x96,0x8c,0xef,0xbd,0xb7,0x1c, + 0xf8,0x3e,0x39,0xf1,0x8c,0x2b,0xe7,0x14,0xc9,0x25,0x9c,0x0d,0xec,0x58,0x1f,0xfd, + 0xbe,0xdf,0xae,0x3c,0x96,0xa9,0x4a,0xd8,0x49,0x63,0x18,0xd4,0x14,0xad,0xee,0x0f, + 0x3f,0xef,0xfd,0x30,0xff,0x00,0xf5,0xf1,0x04,0x9e,0x6b,0xfb,0xad,0xa6,0x2f,0x8a, + 0xcf,0x14,0xac,0xb2,0xd4,0x2c,0xa3,0x4d,0x94,0xad,0x85,0xed,0xed,0x6f,0x36,0x6f, + 0xe9,0xb0,0xc4,0x7b,0xfc,0x64,0xed,0x98,0x18,0xf7,0x25,0x8b,0xb6,0xc9,0x2e,0xb4, + 0x06,0xe7,0x57,0xb6,0xde,0x09,0x1e,0x3c,0x71,0x6c,0x63,0x72,0x55,0x2f,0x6c,0x90, + 0x3f,0x2d,0xc5,0xd4,0x81,0x60,0x46,0xdf,0xd7,0x0c,0x3d,0x54,0x7d,0xb6,0xe6,0x4b, + 0x70,0x5b,0x8e,0x76,0xbf,0xed,0x8b,0x3f,0x41,0x0f,0x64,0x0c,0xee,0xee,0xb6,0x39, + 0x7e,0x31,0x55,0x18,0x99,0x02,0xae,0xa4,0x6e,0xea,0x48,0x81,0x89,0x2c,0x2f,0xb1, + 0xdf,0x8d,0x3b,0x7f,0x6d,0xf6,0xad,0x57,0xfc,0x4b,0xcd,0x2b,0xaa,0x4c,0xb1,0xcc, + 0x4a,0x59,0x74,0xf7,0x08,0xd4,0x8c,0x06,0xdc,0x71,0xbe,0x9e,0x3f,0xbe,0x28,0x51, + 0x00,0x5b,0xb7,0xac,0xdf,0x72,0xba,0x4e,0xa0,0x7c,0x9f,0xd7,0xef,0x86,0xea,0x03, + 0x59,0xd2,0x39,0x4a,0x84,0xba,0x12,0xdc,0x0b,0x83,0xbf,0xb8,0xf6,0xc5,0x8d,0xd3, + 0x44,0xcc,0x80,0xab,0x33,0x3c,0xf5,0x56,0xb8,0x3e,0x21,0x66,0x59,0x70,0xa4,0x14, + 0xf5,0x05,0x52,0x34,0x96,0x14,0x5d,0xae,0x85,0x8e,0xad,0xcf,0xf3,0x79,0x17,0xe7, + 0x8f,0x6c,0x58,0xe8,0xbe,0x2b,0xe7,0x75,0x13,0xa4,0x0f,0x50,0x52,0x30,0xe4,0x2b, + 0x9f,0xe4,0xb9,0x04,0x1b,0xed,0xbd,0xc0,0xdf,0xff,0x00,0x8c,0x64,0x73,0x46,0xaa, + 0x97,0x42,0xd2,0x29,0x6f,0xcc,0xc6,0xe3,0x63,0xbd,0xad,0xf4,0x36,0xc2,0x97,0x78, + 0xf5,0x43,0x23,0x47,0x6b,0x95,0x62,0x75,0x00,0x34,0xed,0x61,0xe7,0xef,0x88,0xe8, + 0x18,0xee,0x42,0xaf,0xcd,0x78,0xea,0xb5,0x9a,0xdf,0x8b,0x59,0x88,0xcc,0x1e,0xa5, + 0xd5,0x64,0x9d,0xb8,0x2b,0x60,0x01,0x06,0xea,0x58,0x58,0x82,0x6f,0xbe,0xdf,0xde, + 0xd8,0x91,0x8b,0xe2,0xd5,0xe0,0x76,0xcc,0x62,0x61,0x52,0xc1,0x87,0x72,0x37,0x0d, + 0x70,0x00,0x20,0xdf,0x7b,0x1b,0x5c,0x5f,0xf4,0x38,0xc3,0x96,0xa5,0x04,0xea,0xa5, + 0x92,0x53,0x28,0xba,0xeb,0x36,0x27,0x7b,0x91,0xb7,0x9b,0x8f,0xd8,0xe1,0xc8,0xab, + 0x35,0x48,0x7b,0x93,0x2c,0xa5,0x8a,0xad,0x8a,0x10,0x75,0x9e,0x6f,0x7f,0xd6,0xff, + 0x00,0x4b,0x62,0xbf,0xd3,0xc4,0x45,0x52,0x22,0x47,0x77,0x5a,0xae,0x6d,0xf1,0x9e, + 0xb5,0xff,0x00,0xfa,0x56,0xec,0x92,0x44,0x91,0xaa,0xa0,0x08,0xae,0x1a,0xe0,0x85, + 0x3b,0x02,0x45,0xbd,0x40,0x1e,0x30,0xfe,0x59,0xf1,0xb3,0xf1,0x23,0x39,0x82,0x82, + 0xf6,0x64,0xee,0x69,0x6f,0x55,0xb7,0xd2,0xc7,0xca,0x9b,0x01,0x61,0xc1,0x37,0xc6, + 0x32,0xad,0x1d,0x44,0x6a,0xc5,0xdd,0x26,0x54,0x73,0xab,0x92,0x3e,0x82,0xe7,0xd8, + 0x5e,0xff,0x00,0xf7,0xc4,0x79,0x35,0xb4,0x8b,0x26,0xa7,0x01,0x24,0x74,0x95,0x2c, + 0xbb,0x1b,0x83,0xa9,0x48,0xe4,0x11,0xb6,0xfe,0x77,0xc1,0xfd,0x3c,0x45,0xb5,0x48, + 0x79,0xae,0x5b,0xfd,0x6f,0xc6,0x14,0x35,0x2e,0xf9,0x6e,0x65,0x25,0x3e,0x98,0x18, + 0x80,0x49,0x31,0xb3,0xfa,0xb4,0x8b,0x30,0xd8,0x1d,0xb6,0xfa,0x8f,0x63,0x8a,0xe5, + 0x7f,0xc4,0xca,0xdc,0xcd,0x02,0xf7,0x84,0x09,0xa4,0xa4,0x9d,0x85,0xd5,0xdc,0x60, + 0x3d,0x2c,0x63,0x36,0xdc,0x10,0x40,0xb1,0xb0,0x1c,0xdc,0xdf,0x19,0x22,0x57,0x35, + 0xa2,0x2e,0x55,0xa4,0x92,0xca,0x51,0x49,0x04,0x0b,0x80,0x6f,0x7f,0xbf,0x38,0x79, + 0x73,0x35,0xee,0x04,0x72,0xb1,0xa8,0xd9,0x55,0x8d,0xaf,0xb8,0x04,0xfd,0x0f,0x8c, + 0x54,0x34,0x50,0x91,0xc2,0x4d,0xd6,0xa7,0xb3,0x7e,0xa1,0xaa,0xcc,0xea,0x8c,0xf5, + 0x52,0x3c,0x3a,0xde,0xd6,0x91,0xc9,0x61,0xa4,0x00,0x37,0xff,0x00,0x28,0x1b,0xdf, + 0x8c,0x00,0xd9,0x8b,0x4c,0xc8,0x63,0x66,0x66,0x22,0xe4,0x11,0x62,0x3e,0xc3,0xdc, + 0x62,0x2e,0xa3,0xe4,0xea,0xc5,0xaa,0x53,0x8b,0xeb,0x46,0x95,0x82,0x9b,0xec,0x6f, + 0x63,0xbf,0xd3,0x09,0x44,0x54,0x42,0x81,0x54,0x43,0x1a,0x69,0x8c,0x2d,0xc9,0x07, + 0xeb,0xbf,0x3e,0x2f,0x8d,0x2c,0x61,0x63,0x40,0x0a,0x02,0xa6,0x7f,0xc4,0x1d,0x80, + 0xbc,0xa1,0xc9,0x41,0xab,0xd5,0x7d,0xbc,0xed,0xfb,0x63,0xc7,0xcd,0xac,0x4a,0x44, + 0x10,0x6a,0x24,0xae,0xb2,0x05,0xed,0xed,0xe2,0xd8,0xae,0x54,0x55,0xa2,0x2c,0x4c, + 0xa8,0x23,0x00,0x16,0x0f,0x71,0x63,0xef,0xc7,0xfb,0xfd,0x70,0x0b,0x55,0x41,0x1a, + 0x83,0x13,0x1b,0x10,0x4f,0xe6,0xd4,0x40,0xf7,0x23,0xdb,0xda,0xdf,0xae,0x2c,0xa2, + 0x79,0x50,0xb9,0x59,0xff,0x00,0xc5,0x44,0x24,0x2a,0x3a,0x36,0xc1,0x01,0xf2,0x45, + 0xee,0x6f,0xe3,0x8c,0x22,0x2c,0xd4,0x00,0x91,0x4b,0x2b,0xe8,0x17,0xd1,0xea,0x37, + 0xf1,0x6f,0xfe,0x71,0x53,0x6a,0xe6,0x71,0xf9,0x98,0x31,0xdb,0xd0,0x4e,0xe7,0x62, + 0x7f,0x5e,0x31,0xf5,0x63,0x49,0x77,0xee,0x13,0x1b,0x17,0x2c,0x4f,0x04,0xdc,0x82, + 0x06,0xdc,0x1f,0xe9,0xbe,0x0e,0xc0,0x79,0x42,0xd7,0x41,0x51,0xd7,0x54,0x50,0x3e, + 0xaa,0x59,0x1d,0x15,0x0e,0xce,0xce,0x35,0x06,0x3c,0x5b,0xd8,0x81,0xb5,0xfe,0x98, + 0x12,0xa2,0xa0,0xa2,0x2c,0x65,0xda,0x5d,0x27,0xd2,0x58,0xee,0x17,0xfd,0xdf,0xff, + 0x00,0x9c,0x45,0xbb,0x16,0x81,0x47,0xa8,0x4b,0x2b,0x33,0x6a,0x2e,0x0e,0xe7,0x7f, + 0xcc,0x36,0x23,0x61,0x63,0xf5,0xb6,0x18,0x28,0xb3,0xf7,0xae,0x1b,0xb9,0xe8,0x0d, + 0x26,0x92,0x34,0x80,0x01,0x17,0x3c,0x11,0x7d,0xbd,0xef,0x7c,0x35,0x0e,0x69,0x69, + 0xdc,0x4a,0x92,0x8e,0xbe,0x37,0xef,0xcd,0x13,0xad,0x86,0xa3,0xac,0xf0,0x6c,0x38, + 0xfe,0xdb,0xf3,0x71,0x7c,0x29,0xb3,0x0e,0xc4,0xa6,0x20,0x55,0xee,0x75,0x33,0x03, + 0xa5,0xb8,0xe0,0x82,0x7d,0xad,0xfd,0x31,0x17,0x2c,0x5d,0x99,0x2a,0x5a,0x05,0xee, + 0xc4,0xc8,0x4c,0xbf,0x8a,0x19,0x5d,0x2c,0xbe,0x06,0xea,0xc2,0xff,0x00,0x7f,0xcd, + 0x84,0x8a,0xa8,0xda,0x37,0x75,0xd1,0xad,0x89,0x32,0x96,0x1c,0x80,0xa0,0x2b,0x6d, + 0xb8,0x36,0xf7,0xc3,0x0f,0x54,0x96,0x54,0x93,0x66,0x1d,0x98,0xe5,0x05,0x2c,0x89, + 0x70,0xdb,0x7a,0x40,0xbf,0xfa,0x6d,0xfe,0xb8,0x6a,0x4a,0xb6,0x65,0x32,0x4c,0xb6, + 0xd2,0x3d,0x57,0x6b,0x17,0x16,0xdc,0x71,0xc9,0xc4,0x44,0xf5,0x7a,0x9c,0x47,0xdb, + 0x78,0xa4,0x41,0xe0,0x6a,0x42,0xdb,0x83,0x71,0xf5,0xbd,0x8f,0x8b,0xf1,0x81,0xa5, + 0xab,0x30,0x98,0xa5,0x05,0xbb,0x91,0xfe,0x29,0x93,0x4d,0xc0,0x43,0xb6,0xc4,0xf8, + 0xbd,0x81,0xbf,0x9b,0xe0,0xee,0x08,0x17,0x00,0xa4,0x24,0xab,0x92,0x94,0xc6,0x6a, + 0x01,0x87,0xb8,0x0e,0x80,0x6d,0xab,0x63,0xc6,0xc7,0xdb,0x7b,0xf9,0xbe,0x19,0x15, + 0xb7,0x74,0xef,0x30,0x25,0x95,0xb5,0xb2,0xb6,0xa4,0x52,0x05,0xed,0x6f,0x1e,0xd8, + 0x01,0x83,0x55,0xc0,0xff,0x00,0x86,0xfd,0xc7,0x3f,0x84,0xac,0x6c,0xba,0xc1,0xdc, + 0x5c,0xf8,0x2b,0xc5,0xbc,0xfd,0xb0,0xc0,0x81,0xa3,0x88,0xb2,0xaa,0xb8,0x92,0x2f, + 0x43,0x12,0x54,0x3a,0x82,0x18,0x7e,0xb7,0x53,0xed,0xe7,0x8d,0xb1,0x2d,0x2d,0x9a, + 0xb4,0x5b,0x66,0x0a,0xba,0x34,0xf7,0x51,0x99,0x76,0x37,0xb0,0x0a,0x09,0xf3,0xfa, + 0x0e,0x36,0xc2,0x5a,0xa9,0xe5,0x8c,0xc8,0xcf,0xd9,0x8d,0x94,0xd9,0x9d,0xbd,0x36, + 0xf3,0x7f,0x6b,0x8e,0x3e,0xd8,0x5b,0xda,0x41,0x08,0x02,0x35,0xf4,0x17,0x2c,0x00, + 0x61,0x19,0xbd,0xc7,0xfa,0x8d,0xfe,0xa7,0x02,0xa8,0xf4,0x18,0xa4,0x7d,0x52,0x03, + 0xe9,0x65,0x0c,0xc6,0xe2,0xc2,0xd6,0x1c,0xfb,0xf9,0xc2,0xee,0x4a,0x4a,0x72,0x6a, + 0x81,0x1b,0x58,0x92,0xec,0xe6,0xe4,0xab,0x7e,0x5d,0xad,0xbf,0xd0,0xe1,0x7d,0xd1, + 0x1b,0x6a,0x90,0xab,0x68,0xd2,0xa0,0xdc,0x37,0x3b,0x73,0xe7,0x8b,0x78,0xe7,0x0c, + 0xe8,0x0a,0xd5,0x0f,0x4c,0x0b,0xab,0x20,0x60,0xd1,0x9f,0xca,0x2e,0x78,0xb6,0xdf, + 0xf6,0xfa,0xe1,0x50,0x25,0xea,0x0b,0x77,0xa3,0x74,0x91,0x95,0x59,0x95,0x2c,0x4d, + 0xf9,0x1a,0x6d,0xec,0x3c,0xfe,0xf8,0x3b,0x91,0xb5,0xf6,0xa7,0x32,0xd9,0x88,0x45, + 0x12,0x11,0xea,0xbe,0xdb,0x03,0xfa,0x8f,0xbf,0xdf,0x0d,0x09,0x65,0xd4,0x1d,0x4c, + 0x8c,0x85,0x0e,0xbd,0x3e,0x2c,0x79,0xbf,0xd7,0xfe,0x98,0x4c,0xac,0x03,0x33,0x10, + 0x1a,0x06,0x72,0x14,0x1b,0xa9,0x71,0x6d,0x22,0xdf,0x4b,0x83,0xbf,0xd7,0x0e,0xcc, + 0x20,0x8a,0x16,0x91,0x04,0x71,0x37,0x2f,0xeb,0xd5,0xab,0x7b,0xdc,0x8d,0xed,0x71, + 0xb5,0xfe,0x98,0x04,0x92,0x96,0xc9,0xe1,0x10,0x65,0xa9,0x31,0x8d,0x12,0xbc,0x25, + 0x7d,0x46,0x35,0x37,0x0d,0xbf,0x03,0x9f,0xb6,0xf8,0x12,0x4a,0x99,0xa3,0x94,0x33, + 0x8d,0x4f,0xa6,0xee,0x87,0x7b,0xa9,0x1c,0x5e,0xdb,0xff,0x00,0xd2,0xd8,0x18,0xd5, + 0xac,0x32,0xc2,0x8d,0xdc,0x91,0x9c,0x32,0xa3,0x06,0x50,0xe4,0x80,0x08,0x20,0xf0, + 0x79,0xb1,0xfd,0x0f,0xd7,0x0d,0x7c,0xbf,0x7a,0x68,0xc4,0x90,0xc9,0x4d,0x3c,0xa9, + 0xae,0x30,0xcd,0xea,0x71,0xaa,0xde,0x95,0xe6,0xdb,0x6f,0xb8,0x1b,0x62,0x74,0x42, + 0xd3,0xdf,0x38,0x25,0x7d,0x36,0x50,0xea,0x2c,0x23,0x16,0x6d,0x5e,0xc3,0x9b,0xe0, + 0x67,0x91,0xc2,0x2c,0x51,0x85,0x3a,0x4b,0x95,0x50,0x49,0x24,0x93,0x72,0x02,0xdf, + 0x63,0x73,0xfb,0xe1,0xb9,0xa2,0x13,0xb4,0xb1,0xd3,0xa3,0x86,0x45,0x2a,0x5e,0x41, + 0xa6,0xdb,0x6e,0x09,0xe3,0xfe,0xf8,0x76,0x78,0x62,0xa1,0x68,0x8b,0x4a,0xd0,0xc8, + 0x13,0x4b,0xea,0xb6,0x91,0xc6,0xc0,0xf3,0x70,0x47,0x38,0xaf,0x94,0xa7,0x29,0xbe, + 0xe4,0x94,0xb5,0x2c,0x34,0x68,0x8c,0xdc,0x34,0x81,0x35,0x15,0x22,0xd6,0xe3,0xdc, + 0xf3,0x83,0x0d,0x64,0xed,0x4f,0x57,0x15,0x43,0xb0,0x74,0x3a,0x58,0x89,0xfd,0x12, + 0x6e,0x74,0x86,0x4b,0x78,0x24,0x90,0xdf,0x5b,0x7d,0xa3,0xe7,0x88,0xa4,0x2d,0x5d, + 0x34,0x2e,0xda,0xa5,0x5d,0x4b,0x7f,0x41,0x53,0x7b,0x90,0x6d,0xf9,0x89,0xd3,0xee, + 0x0e,0xfe,0xf8,0x0a,0x69,0x0c,0x32,0x54,0xc6,0xf1,0xc9,0x3b,0xaa,0xfa,0x64,0x46, + 0x01,0x18,0x13,0xb8,0xf7,0xf3,0xb1,0xbd,0x8e,0x00,0xb7,0x7c,0x90,0xb2,0x11,0xf2, + 0x56,0x49,0x2c,0x6a,0xc2,0x45,0x55,0x55,0x09,0xa4,0x91,0xe0,0x6d,0x7d,0xb6,0x16, + 0xbd,0xff,0x00,0x7f,0x18,0x19,0xa4,0x9b,0xb6,0x57,0xb8,0x08,0xed,0x85,0x5f,0xe6, + 0xde,0xe6,0xc4,0x5f,0x7d,0xaf,0xe3,0x7d,0xfe,0xb8,0x57,0xa1,0x65,0x71,0x25,0xa9, + 0xd6,0x22,0x03,0xb0,0x50,0x41,0xdf,0xd2,0xde,0xfe,0x76,0x23,0x1e,0x55,0xe9,0xfc, + 0x3d,0x41,0x08,0x70,0x01,0xf1,0x7f,0x57,0x20,0xfd,0x3f,0xdd,0xf1,0x36,0xe1,0x1a, + 0xc5,0xa0,0xda,0x25,0x63,0x1c,0x84,0xad,0xaf,0xa8,0xa9,0x3c,0xaf,0x16,0xdf,0xeb, + 0x87,0x66,0x2d,0x1d,0x32,0x06,0x3f,0x30,0xd7,0x3e,0x96,0x8c,0x86,0x3b,0x01,0xcd, + 0xec,0x7d,0xee,0x3d,0xf0,0x1d,0x6d,0x4c,0x70,0x56,0x08,0x19,0x3b,0x92,0x22,0x95, + 0xd5,0xab,0x95,0xb9,0x37,0xbf,0x9b,0x0d,0xf8,0xfb,0xe1,0xa3,0x98,0x9a,0x95,0x57, + 0x82,0x68,0xdc,0x3f,0xe5,0x41,0xe9,0x25,0x41,0xe7,0x9f,0xdc,0xec,0x2f,0x87,0x6b, + 0x68,0x25,0x4e,0x3e,0x62,0xa9,0x75,0x8e,0xd2,0xc4,0xc2,0xe0,0xdf,0xc9,0xda,0xdf, + 0x43,0xfd,0x30,0xe2,0x4c,0xf3,0x21,0x68,0xe3,0x71,0x1a,0xf0,0xca,0x0e,0x9b,0xde, + 0xd6,0xf6,0x18,0x18,0xc5,0xf3,0x2a,0xe9,0x33,0x69,0x3a,0x86,0x97,0x43,0xb8,0xb9, + 0xbf,0xed,0x7e,0x77,0x38,0xf2,0x2a,0x87,0x56,0xec,0x36,0x92,0x8d,0xac,0xdd,0x97, + 0x48,0x37,0x1c,0x02,0x38,0x1b,0x62,0xc0,0x02,0x8b,0xe9,0xaa,0x8e,0xbb,0x37,0xa1, + 0x88,0x1a,0x6d,0xb5,0xc5,0xbf,0xef,0x81,0x44,0x91,0x97,0xb4,0x6c,0xac,0xe1,0xb6, + 0xd4,0x77,0xff,0x00,0x5d,0xb8,0xfd,0x70,0xaa,0xc6,0xa7,0x5d,0x11,0xcf,0x15,0x44, + 0x4c,0x13,0x52,0x8e,0xe0,0x2a,0x9b,0x71,0xe6,0xd7,0x3e,0x37,0xc3,0x15,0x6e,0x27, + 0x68,0x45,0xd0,0x3c,0x6b,0xc3,0x92,0x7f,0x4d,0x88,0x1e,0xfc,0x7d,0x70,0x68,0x23, + 0xc2,0x6f,0xe7,0x23,0x59,0xe3,0x8e,0xa0,0xcc,0x8a,0xb2,0x33,0xf7,0x52,0x2d,0x45, + 0xbd,0xc8,0x3f,0xa7,0xd7,0x0d,0x4f,0x5a,0xcd,0x53,0x24,0x6c,0x11,0x2c,0x49,0xd8, + 0x9d,0x26,0xe0,0x6e,0x36,0xfb,0x60,0xaf,0x97,0x54,0x40,0xc6,0x0d,0x74,0xc0,0x37, + 0xe4,0xb8,0x64,0x26,0xf6,0x56,0xb9,0xe3,0xf6,0xbf,0xb9,0xc7,0x95,0x94,0x25,0xf5, + 0x4d,0x15,0x23,0xc3,0x2b,0xc6,0x42,0x96,0x52,0xa3,0x58,0x51,0xb7,0xb7,0xdf,0xf5, + 0x38,0x60,0x01,0x44,0x2d,0xda,0x57,0x89,0x5a,0x38,0xa1,0x4e,0xd4,0x9f,0xf3,0x7b, + 0x65,0x34,0x80,0x3c,0xb6,0xfe,0xfe,0x3e,0x96,0xfa,0x61,0x21,0xc4,0x8b,0x0c,0x61, + 0x9e,0x18,0x98,0x10,0x3c,0x09,0x14,0x01,0x70,0x6f,0xb7,0xd7,0xc6,0xe4,0xe3,0xe9, + 0xe6,0x0d,0x2b,0xca,0xac,0x63,0x65,0xfc,0xfa,0x4f,0xe6,0xdf,0x6b,0x9f,0x6b,0x81, + 0xcf,0x18,0x1f,0x5f,0xcb,0xd4,0x24,0x0f,0xe8,0x21,0x4d,0x80,0x50,0x15,0x96,0xe1, + 0x81,0x1b,0x79,0x0d,0xfd,0xf1,0x4e,0xe5,0xa6,0xe9,0x36,0x06,0xb4,0xf9,0xb8,0x92, + 0x28,0xcb,0x23,0x02,0xaa,0x4b,0x5c,0x80,0x00,0x16,0xbd,0xec,0x40,0xf2,0x3d,0xc5, + 0xf0,0xdc,0x34,0xdd,0xd0,0xd1,0xf7,0x0b,0x26,0x8f,0x51,0x26,0xe6,0xd6,0x16,0x24, + 0x9f,0x3f,0xaf,0x8d,0xf1,0x20,0x62,0x96,0x55,0x1a,0x5c,0x15,0x68,0xcd,0xc1,0xdc, + 0xa8,0x3b,0x6a,0x07,0xc7,0xb1,0x38,0x16,0x46,0x8c,0x06,0x88,0xa2,0x22,0x37,0xad, + 0xb7,0x3b,0x82,0xd7,0x27,0xea,0x3f,0xe9,0x89,0x69,0x6d,0x32,0xee,0xdf,0x2b,0xb1, + 0x48,0x98,0x82,0xb2,0x8b,0x0d,0x23,0xd5,0xa8,0x92,0x39,0x07,0x6e,0x37,0x1e,0xde, + 0x70,0x9a,0xb8,0x52,0x51,0x50,0x08,0x47,0x4a,0x85,0x28,0x64,0x57,0x2b,0xa0,0x92, + 0x6f,0xb6,0xe3,0x93,0x7b,0x5f,0xfd,0x30,0x9a,0x8a,0x86,0x8e,0xae,0x59,0x54,0x2a, + 0x5a,0xe5,0x87,0xf9,0x90,0x82,0xd7,0xdf,0x6b,0x72,0x31,0x1e,0x33,0x17,0x7b,0x5c, + 0xee,0xd2,0x1d,0x51,0x03,0x70,0x2d,0xb0,0xb0,0xf3,0xe3,0x02,0xfb,0xaa,0xc9,0x44, + 0xe6,0x0d,0x32,0xd0,0x18,0xdd,0x64,0x12,0x6a,0x76,0x22,0x45,0x07,0x4a,0xda,0xfb, + 0x1f,0x06,0xd7,0x3b,0xed,0xbd,0xf0,0x2a,0x98,0x99,0x60,0x63,0x0c,0xdd,0xb9,0x63, + 0x65,0x88,0x87,0xf4,0x86,0x24,0x9d,0x47,0x72,0x3d,0x81,0x1c,0xee,0x48,0xc3,0xd3, + 0x54,0x22,0xea,0x49,0x96,0x39,0x60,0x90,0x69,0x06,0xc4,0x97,0x1b,0x58,0x86,0xf6, + 0x20,0x9b,0xfb,0xd8,0x0c,0x39,0x64,0x0a,0xc8,0xa8,0xb1,0x44,0xc7,0x5a,0x06,0x22, + 0xea,0x7f,0x4f,0xd7,0xf7,0xc4,0xb5,0x39,0x40,0xc9,0x49,0xdb,0x68,0xd2,0x99,0x41, + 0x86,0x11,0xa2,0xa1,0x81,0xb1,0xb1,0x16,0xdf,0xd8,0x6f,0xce,0xfc,0x5f,0x6c,0x21, + 0xef,0x1d,0x51,0x2b,0x32,0xba,0x33,0x0f,0x5b,0x13,0xe9,0x20,0x5d,0x4d,0x87,0xd0, + 0x10,0x70,0x6b,0x44,0x8f,0xa1,0x7b,0xc2,0x58,0xa6,0x52,0x48,0x3c,0x87,0xb0,0xbe, + 0xfc,0x81,0xc7,0xf5,0xc3,0x62,0x92,0x24,0x95,0x52,0x6b,0x02,0xa2,0xe1,0x5d,0x2d, + 0xe8,0x3c,0xef,0xc5,0xfe,0xfb,0xee,0x39,0xdf,0x0a,0x4a,0x05,0x46,0x44,0xb2,0xc4, + 0xef,0x34,0x2a,0xc4,0x12,0x4b,0x82,0x3d,0x25,0x4e,0xe1,0x87,0xed,0x7f,0xda,0xd8, + 0x32,0x39,0x24,0x7a,0x99,0x22,0x8a,0x36,0x90,0x5b,0xd2,0x5d,0x80,0x36,0x51,0xc0, + 0x36,0xde,0xf6,0x23,0x7f,0xfa,0xe1,0x11,0x94,0xed,0x3c,0x31,0x92,0x10,0x8b,0x19, + 0x0b,0x80,0x6e,0x2d,0xe9,0x37,0xe7,0xd2,0x2f,0xbe,0x09,0x95,0x19,0x48,0xed,0x15, + 0x3a,0x26,0x00,0xc6,0x13,0xd7,0x62,0xcc,0x6c,0x1b,0xca,0xfa,0xbf,0x5c,0x46,0xa0, + 0x02,0x62,0xaa,0x44,0xd1,0x35,0x91,0x3b,0x6c,0x6e,0x11,0xc6,0x8e,0xcb,0x6d,0xbf, + 0x16,0xfd,0x07,0x3c,0xdb,0x0c,0xa2,0x23,0x8f,0x96,0x99,0x5a,0x05,0x2a,0x59,0x18, + 0xcb,0xab,0x4b,0x83,0x60,0x54,0xdb,0xde,0xd7,0xb9,0xde,0xf8,0x1e,0x6d,0x7e,0xa9, + 0x12,0x54,0x10,0xbb,0x1b,0x7a,0xee,0x35,0x58,0x6d,0xfb,0x1f,0x3e,0xff,0x00,0x5c, + 0x2e,0x08,0xd6,0x09,0x99,0x76,0x4b,0x22,0xa8,0x71,0xcd,0x8b,0x5f,0x50,0xf6,0xfa, + 0x9f,0x38,0x6b,0xca,0x23,0x9b,0x48,0x6a,0x74,0xa8,0x96,0x67,0x92,0x26,0x8a,0x33, + 0x09,0x8f,0xf1,0x23,0x00,0xea,0x00,0xea,0xb1,0x1b,0x5f,0x8f,0x16,0xb0,0xfb,0x8c, + 0x3f,0x1d,0x50,0xcb,0x22,0x93,0xb1,0x3c,0x55,0x0a,0x4a,0x1e,0xec,0x77,0x8f,0x41, + 0x71,0x67,0x04,0x5e,0xc7,0x6f,0x36,0xde,0xfe,0x41,0xc3,0xf5,0xc8,0x91,0xc4,0xb1, + 0x9b,0xf7,0x95,0xd6,0xc4,0xb0,0x1d,0xc1,0xc1,0xbd,0xb9,0xda,0xd6,0x3f,0x4c,0x45, + 0xa4,0xea,0x20,0xed,0xa2,0xc8,0xab,0xa9,0x5f,0xd2,0xc3,0x4d,0xcf,0x92,0x0f,0x8d, + 0xbc,0x71,0xfa,0x60,0x6e,0xcd,0xa1,0xfd,0x28,0xea,0x80,0x5a,0x65,0xd2,0x89,0x24, + 0x22,0xea,0xbb,0xec,0x1b,0xc8,0x3b,0xde,0xf6,0x00,0xdf,0xfa,0x8e,0x70,0xda,0xda, + 0x60,0x15,0x19,0x62,0x89,0x1c,0x69,0x08,0x34,0x48,0x7d,0x27,0x6b,0xf2,0xdf,0x5b, + 0x1b,0x9f,0x18,0x12,0xb2,0x56,0xa6,0xa7,0x9d,0xcb,0x9d,0x6a,0xca,0x76,0xb1,0x53, + 0xba,0xd8,0x7d,0x6e,0x0e,0xde,0x70,0x34,0xf3,0x32,0xb3,0xf6,0xa5,0x31,0xa0,0x1a, + 0xb4,0xff,0x00,0x30,0x51,0xb9,0x20,0x91,0xcf,0x9d,0x3f,0xd3,0x7c,0x30,0x39,0x4c, + 0x4d,0x70,0xa5,0x9a,0xae,0xa1,0x61,0x9a,0x13,0x2c,0x71,0x14,0x91,0x48,0x0c,0xba, + 0x81,0xf4,0xec,0x41,0x03,0xc6,0xfb,0x7d,0x78,0x38,0x8a,0x9d,0x20,0x8d,0xa6,0x54, + 0xa5,0x56,0x69,0x35,0x80,0x63,0x20,0xe8,0xd4,0x07,0xa7,0x8d,0xd4,0x9f,0xbf,0xd2, + 0xd7,0xc0,0xef,0x58,0xb1,0x2a,0x3c,0xe6,0x28,0xde,0x69,0x55,0xd9,0x34,0xff,0x00, + 0x2e,0xa0,0xa5,0x88,0xdb,0x81,0xcf,0xdf,0x03,0xd4,0x02,0xb5,0x6d,0x0c,0x52,0x2c, + 0x88,0x7f,0x23,0x06,0xd5,0xb7,0x27,0x49,0x5f,0xb1,0xfd,0x2e,0x7c,0x61,0x6a,0xb8, + 0x48,0x78,0xb4,0xf4,0x91,0x45,0x24,0x0d,0x10,0xee,0xc2,0xe5,0xfd,0x60,0xb1,0x2d, + 0x7f,0xf3,0x2f,0xb5,0xbc,0x8c,0x34,0x1a,0x14,0x90,0x09,0x5d,0x9c,0xaa,0xe9,0x1e, + 0xb0,0xa5,0xae,0x36,0x6f,0x3b,0xff,0x00,0x6d,0xef,0x8f,0xa9,0xcb,0x3c,0xdd,0xaa, + 0xc7,0xd3,0x29,0x5b,0x99,0x4b,0x5c,0x16,0x16,0xfc,0xde,0x38,0xe4,0xf3,0xfb,0x61, + 0x80,0xd5,0x51,0x95,0x11,0xb7,0x62,0x20,0xc1,0x38,0xd2,0x12,0xc7,0x7d,0x40,0x8f, + 0x73,0x7f,0xa5,0xcf,0x83,0x82,0x0f,0x74,0x13,0xfd,0xa8,0x25,0xa7,0x96,0x2a,0x86, + 0x1a,0xb5,0x13,0x1f,0x78,0xde,0xfb,0x6f,0x63,0xca,0xf3,0x6b,0xff,0x00,0xad,0xb0, + 0x3d,0x46,0x47,0x1d,0x3c,0xb1,0x4b,0x4f,0x4a,0xba,0x5d,0x0d,0xc2,0x48,0x01,0x0e, + 0x38,0x00,0x70,0x46,0xe7,0x61,0xc9,0x07,0x8d,0x86,0x13,0xa9,0xa0,0x97,0xbb,0x34, + 0xd7,0x73,0x76,0x20,0x5c,0xb3,0x6c,0x2c,0x40,0x1b,0xdb,0x8f,0xa7,0xf5,0xc7,0xcf, + 0x32,0x6a,0xee,0x99,0x82,0x33,0x1d,0x57,0x08,0x46,0xa2,0x06,0xec,0x3d,0xbd,0xb7, + 0xfe,0xb7,0xc3,0x87,0x56,0x14,0xb4,0x80,0xe4,0xaa,0x2c,0x60,0x3b,0xc8,0xc5,0x4e, + 0xc4,0x11,0xb7,0x36,0x22,0xc2,0xff,0x00,0xae,0xd8,0x1d,0x51,0x6f,0xdd,0x42,0x21, + 0x70,0x0a,0x9f,0x0a,0xc3,0xee,0x76,0xbf,0xdb,0xc1,0xd8,0xe0,0x90,0xda,0xe3,0x3f, + 0xc8,0xff,0x00,0x9b,0x51,0x24,0x9b,0x01,0xb7,0x27,0x6d,0xfc,0x8b,0x1e,0x30,0xd5, + 0x4c,0xc9,0x33,0xac,0xf2,0xe8,0x0c,0x54,0x05,0x57,0x05,0x40,0x20,0x70,0x46,0x00, + 0x4b,0xc2,0x7e,0x30,0x1e,0x86,0x55,0x63,0x26,0xa1,0x17,0x70,0x6c,0x3d,0x20,0x72, + 0xa4,0x1d,0xad,0xf5,0xb8,0x23,0xf5,0xd9,0xa3,0x1a,0xcc,0xa5,0xdd,0x5b,0x50,0xf4, + 0xc6,0x18,0x5c,0xad,0xcd,0xc8,0xb1,0x1c,0xdb,0xe9,0x8f,0x26,0xcc,0x4a,0xcb,0xa2, + 0xe0,0xc8,0xbb,0x0d,0x7b,0x86,0x02,0xc4,0x02,0x3c,0xf1,0xe7,0x6d,0xb1,0xed,0x6d, + 0x5c,0x7d,0xc3,0xdd,0x74,0x57,0x75,0xd4,0x34,0x9d,0x40,0x03,0xb8,0x1b,0x6c,0x08, + 0x04,0x7f,0xa6,0x0d,0x77,0x46,0xd2,0xd2,0x4e,0xc4,0x11,0xeb,0x8e,0x29,0xc1,0x7d, + 0x44,0xc8,0x8b,0x6b,0x71,0xbd,0xbf,0xd3,0x8d,0xf0,0xdb,0x4a,0xac,0xd2,0xe9,0x96, + 0x52,0x65,0x05,0x89,0x43,0xf9,0xae,0x7d,0x87,0xf4,0xc2,0x63,0x48,0xeb,0x6a,0xa3, + 0x8a,0x47,0x5a,0x64,0x60,0x43,0xb8,0x1a,0x82,0x5b,0x92,0x00,0xfd,0x3f,0xa9,0xc1, + 0xb5,0xe3,0xb7,0x14,0x91,0xd7,0x49,0x4d,0x31,0x36,0x30,0xcc,0x4b,0x17,0xdf,0xca, + 0xdb,0xf2,0x0b,0x71,0x7d,0xb6,0xb6,0x0b,0x51,0x19,0x0b,0x57,0x7a,0x95,0x41,0xa9, + 0xe9,0x9e,0x1a,0x73,0x6b,0x80,0xac,0x09,0xf5,0x03,0xa8,0x0d,0xc9,0xb6,0xfe,0x39, + 0xd8,0x78,0x18,0x19,0x99,0xb5,0x44,0xa2,0x49,0x59,0x95,0x09,0x45,0x0c,0x6c,0xc0, + 0x0f,0x7f,0xe6,0x36,0xdc,0x5c,0x7d,0xbd,0xb0,0xaa,0xb8,0x8c,0x93,0x2b,0x49,0x2d, + 0x9a,0x38,0x94,0x14,0x90,0x06,0xd8,0x1d,0xad,0xc7,0xa7,0x63,0x6e,0x6c,0x38,0xe7, + 0x0d,0x84,0x31,0xa4,0x15,0x51,0xaa,0xd3,0xc2,0xa0,0x77,0x22,0xb3,0x14,0xed,0xd8, + 0xd8,0x58,0x8e,0x77,0x00,0x0c,0x55,0x4a,0xdb,0x29,0x68,0x1e,0x5f,0x9d,0xae,0x88, + 0x13,0x1a,0x93,0x62,0xd2,0xea,0xb1,0x2d,0xc1,0x53,0x66,0x20,0x8b,0x0d,0x5c,0x5c, + 0x5b,0x7c,0x30,0x47,0xcc,0xcc,0x24,0x2e,0xa5,0xca,0x80,0xe4,0xc8,0x74,0x84,0xb1, + 0x1a,0x4d,0xb7,0x04,0x81,0x61,0xe0,0xdc,0x79,0xc2,0x25,0x8e,0x48,0xcb,0xc5,0x5a, + 0x20,0x62,0x54,0x84,0x70,0xc1,0x80,0x8c,0x90,0x56,0xd7,0xb5,0xc5,0x8f,0xde,0xc2, + 0xde,0x30,0x3d,0x3d,0x5b,0xaa,0x35,0x83,0x0d,0x08,0xc3,0x4c,0xdb,0x0d,0x4b,0xe7, + 0xe9,0xce,0xdf,0x6f,0xae,0xe1,0x04,0xfd,0x6b,0xa4,0x70,0x52,0x4e,0x46,0xa4,0x63, + 0xa2,0xe4,0x92,0x40,0xb5,0x8a,0xb1,0xb8,0xdc,0x12,0x4f,0xb6,0xf8,0x00,0x44,0xcc, + 0xcf,0x0d,0x1c,0xaa,0x91,0xb1,0x2c,0xcb,0xc6,0xa1,0xf9,0x6e,0x0f,0xde,0xc0,0x5c, + 0xed,0x83,0x7b,0x92,0x53,0x53,0x2c,0x32,0x46,0xec,0x2e,0x49,0xba,0x83,0x62,0x45, + 0xf6,0xf7,0xf6,0xfb,0xe0,0x44,0xae,0x27,0x30,0x88,0x24,0x8a,0x89,0x2f,0xa3,0x59, + 0x3a,0x5d,0xbc,0x90,0xad,0xc5,0xc8,0x27,0x7f,0xb9,0xdf,0x8c,0x02,0x7b,0x25,0x24, + 0x03,0x49,0x6d,0x07,0x6e,0x12,0x64,0x1a,0x1e,0xc1,0xe2,0x01,0x8a,0x9d,0x89,0xbd, + 0xc9,0xd8,0xaf,0x1f,0xb7,0xd7,0x0b,0x4b,0xd5,0x2a,0xcb,0x4f,0x1a,0x47,0x10,0x60, + 0x3b,0x71,0x2e,0x9d,0x0f,0x60,0x06,0xd6,0xe2,0xe2,0xd7,0x17,0xe3,0x7d,0xf0,0xc5, + 0x45,0x29,0x58,0xda,0x3a,0x7d,0x6f,0x04,0x70,0x31,0x11,0xcc,0x6c,0xdb,0xec,0x74, + 0xb0,0xda,0xfb,0xdb,0xea,0x2e,0x46,0x16,0x2b,0x52,0x56,0x86,0x09,0x54,0xc1,0x19, + 0x62,0x23,0xfc,0x56,0x55,0xe5,0x6e,0x34,0xfd,0xce,0xff,0x00,0xa6,0x00,0xf5,0x40, + 0x25,0xbb,0x32,0xca,0xba,0x48,0xd5,0x23,0x6c,0x09,0xdd,0xd8,0x8b,0x5a,0xde,0x08, + 0xb3,0x70,0x37,0xb8,0xc3,0x1b,0x89,0x8b,0x4a,0x64,0x20,0x0b,0x20,0xd3,0x70,0xa6, + 0xf7,0xb7,0xdb,0xcd,0xce,0x1d,0x92,0x86,0x69,0x59,0xd9,0x95,0x4c,0xa9,0x21,0x78, + 0xfd,0x44,0x69,0x1e,0xeb,0xf5,0xdc,0x11,0xfe,0xec,0x0a,0x03,0x35,0x7a,0xb2,0xd5, + 0x44,0xb2,0x3a,0x5d,0x51,0xe4,0xd1,0xa8,0x06,0xe7,0x7d,0xae,0x2c,0x49,0xfa,0x1c, + 0x43,0x94,0x09,0x3c,0x22,0x6a,0x21,0x84,0x6b,0x55,0xb1,0x51,0xa5,0x91,0x88,0xb8, + 0xb7,0x16,0xbf,0xde,0xc7,0xec,0x70,0x05,0x4a,0xca,0x40,0xb2,0xb8,0x94,0x5d,0xb4, + 0x09,0x08,0xb5,0xb9,0x1f,0xfe,0xa0,0xff,0x00,0x7e,0x70,0x55,0x3d,0x50,0x85,0xcc, + 0x55,0x11,0xfa,0x15,0x49,0x45,0x00,0x06,0x8c,0x8d,0xac,0x2f,0xe0,0x5e,0xe3,0xdc, + 0x61,0x25,0x9a,0x12,0xf5,0x31,0xcd,0xa5,0xf6,0x59,0x03,0x1b,0xa9,0x6e,0x41,0x1c, + 0x5e,0xf7,0x1b,0x1f,0x38,0x03,0xd1,0x0b,0x41,0xe8,0xd6,0xb1,0x09,0x02,0x4b,0x2c, + 0x91,0x69,0x56,0x06,0xdb,0x93,0xfd,0x37,0xdb,0x6f,0xef,0x82,0x4b,0x49,0x14,0x71, + 0x99,0x40,0xee,0x85,0x55,0xd1,0x6d,0x24,0x02,0x48,0x04,0x7e,0xdf,0xbe,0x17,0x21, + 0xef,0x36,0x89,0x57,0x53,0x2e,0xa0,0x80,0xa8,0xd8,0xed,0xb5,0x87,0xd2,0xc3,0xce, + 0x3e,0xa1,0xa3,0x69,0xd3,0x4d,0x43,0x08,0xa6,0xd0,0xe2,0x24,0x24,0x10,0x5a,0xe6, + 0xea,0xd6,0xb1,0x1c,0x83,0xfa,0x9d,0xbc,0xe1,0x72,0x4a,0x9f,0x24,0xcd,0x61,0xd7, + 0xdb,0x5f,0xfd,0x31,0xa5,0x95,0xad,0xab,0x4a,0xea,0x20,0x5f,0xf5,0xf4,0xe0,0x58, + 0x75,0xa4,0x51,0xb0,0xf9,0x73,0x34,0x6c,0xb2,0x0d,0x5f,0x9d,0x85,0xaf,0xb0,0xe0, + 0x8b,0x6f,0x63,0xbf,0xb5,0xf8,0xc4,0xc4,0x90,0x41,0x1d,0x3c,0x2e,0xb0,0x88,0x04, + 0xeb,0xb3,0x45,0x3b,0xb4,0x5a,0x4d,0x95,0xec,0xaf,0xea,0x00,0x72,0x45,0xf6,0x6f, + 0x71,0x70,0x01,0xf9,0x60,0xba,0xe2,0x57,0xed,0xbc,0x0a,0x8c,0x80,0x9b,0x6a,0x5b, + 0x8b,0x7d,0xc7,0xbf,0xd0,0xfd,0x30,0xdc,0x28,0x54,0x76,0x67,0x44,0x24,0xca,0x21, + 0x96,0x15,0x70,0xc9,0x50,0x21,0x90,0xfa,0x58,0x11,0x6b,0xab,0x58,0x1d,0xb6,0xbd, + 0xc1,0xe3,0x6f,0x7d,0x85,0xa6,0x9c,0x4d,0x4f,0x40,0xf3,0x69,0x90,0x17,0x28,0xc8, + 0x36,0x2a,0xdc,0x32,0xdf,0x9d,0xb9,0xbf,0x9f,0xe9,0x89,0x12,0x16,0x59,0x6a,0x1e, + 0x56,0x31,0x77,0x62,0xb3,0x82,0xb6,0x04,0x82,0x19,0x6c,0x47,0x91,0xfd,0x78,0xc4, + 0x45,0x3d,0x0c,0xd4,0xfd,0xc7,0x0c,0x5d,0x63,0x73,0xa7,0xb4,0xe0,0xad,0xd9,0x5b, + 0xf3,0x2f,0x27,0x7b,0x9d,0xbf,0xb6,0x18,0x10,0x8d,0xda,0x72,0x1d,0x6b,0x15,0x28, + 0xa7,0x90,0x05,0xdd,0x5d,0x38,0x25,0x43,0x1b,0x8b,0xf8,0x36,0xdf,0x6f,0x6c,0x79, + 0x98,0x21,0x8e,0x9a,0x1f,0x95,0x95,0x5c,0xc1,0x2a,0x58,0xba,0x05,0x6f,0x6e,0x57, + 0x90,0x4b,0x7d,0xc5,0xce,0x25,0xe8,0x22,0x96,0xb6,0x9d,0x54,0xc3,0x14,0xd3,0x42, + 0xe0,0xa0,0x0c,0x23,0x2c,0x0e,0xdb,0xf1,0xa9,0x40,0xb3,0x5f,0xc7,0xd4,0x5c,0x61, + 0x8a,0x68,0xa2,0x66,0x96,0x32,0x9f,0x27,0x30,0x9e,0xc8,0xee,0x49,0xb1,0x37,0x05, + 0x48,0xe6,0xf7,0x1c,0x8f,0xa1,0xe3,0x04,0x12,0xa7,0x2a,0x2a,0x58,0x94,0x3b,0xbc, + 0x65,0xfb,0x63,0x4b,0x6e,0xf7,0x62,0x42,0xe9,0xff,0x00,0xf2,0x17,0x37,0xf1,0xb0, + 0xd8,0x5f,0x05,0xac,0x69,0x2a,0x0e,0xdc,0x92,0x2a,0x54,0x04,0x63,0xb6,0xa5,0x46, + 0x50,0x75,0x15,0x6f,0xfe,0xdb,0x5c,0x7d,0x7e,0x98,0x4d,0x4d,0x23,0x30,0x94,0x8a, + 0x72,0x03,0xfa,0xa4,0x42,0x84,0x3d,0x98,0xf1,0x71,0x7b,0x5b,0x9f,0xb1,0xc2,0xe1, + 0x91,0xe8,0x50,0x45,0xde,0x75,0x62,0xc5,0xd8,0xad,0x95,0x1c,0xdc,0x69,0x36,0x17, + 0xff,0x00,0x5f,0x27,0xdc,0xe1,0x46,0x0e,0x51,0x06,0x94,0x45,0x44,0x93,0xd1,0xca, + 0xb1,0x54,0xea,0x5b,0xb7,0xa1,0x03,0x6a,0x04,0x31,0xd8,0xf3,0xb8,0x26,0xfc,0xe1, + 0x99,0xd5,0xe6,0x8a,0x21,0x4c,0xe0,0x33,0x59,0x9d,0x5e,0x4d,0x66,0x30,0x4d,0xef, + 0x61,0x6b,0xee,0x36,0xfb,0xfd,0x31,0x36,0x60,0x10,0x4d,0x23,0x46,0x44,0xf0,0x4a, + 0xb6,0x7b,0xa6,0xa0,0x11,0xec,0x46,0xaf,0xf2,0xee,0x0e,0xde,0x2e,0x71,0x12,0x62, + 0x55,0x81,0x5e,0x2d,0x1a,0x43,0x8b,0xb0,0x36,0x65,0x28,0x2c,0x01,0xbe,0xe0,0xde, + 0xc0,0x79,0xb1,0x36,0xdf,0x0c,0x30,0xa0,0x34,0x69,0x7c,0xf0,0xf7,0xa9,0xda,0xa0, + 0x2a,0x08,0xd5,0x3f,0x29,0x24,0xb2,0xb0,0xb5,0x9b,0xf5,0x07,0x9d,0xcd,0xf6,0x3b, + 0xf2,0x33,0x54,0x4e,0x92,0x83,0x24,0x2f,0x02,0x03,0x76,0xee,0xa1,0x0a,0xbc,0x6e, + 0x58,0xf9,0xb1,0x1b,0x73,0xbe,0x24,0x21,0x41,0x3c,0x90,0x33,0x6a,0x49,0x63,0x00, + 0x49,0x1c,0x65,0x49,0x60,0x41,0x21,0x80,0x3b,0x1d,0xc5,0xae,0x7d,0xaf,0xf4,0xc1, + 0x15,0xb5,0x2b,0x28,0x32,0x2c,0x82,0x5a,0x69,0x57,0xf0,0xd1,0xd0,0x1d,0x3e,0x08, + 0x6b,0xf3,0xa4,0x9d,0xb7,0x04,0xdb,0x6f,0xa5,0xc0,0x22,0x45,0xe5,0x42,0xc8,0xc2, + 0xa2,0x12,0x10,0xb5,0x34,0xe3,0x62,0xa5,0xb4,0xa9,0xf6,0x24,0xb6,0xe2,0xe3,0x7b, + 0x13,0xb7,0xb6,0x06,0x7a,0x1a,0xa8,0xad,0x0d,0x44,0x36,0x67,0x6d,0x70,0xbb,0x30, + 0x21,0xdb,0xc5,0xad,0xee,0x31,0x2d,0x1e,0x5d,0x35,0x53,0x81,0x98,0x55,0x77,0x9c, + 0xb2,0x24,0x10,0x14,0x29,0xde,0x24,0x0d,0xd1,0x6d,0xa4,0x93,0x71,0xe9,0x62,0x0f, + 0xe8,0x30,0xb9,0x29,0x57,0x2e,0xac,0x5a,0x68,0xe5,0x6b,0xa8,0x62,0x63,0x90,0x69, + 0x31,0xf2,0x2c,0x45,0xae,0x6c,0x6f,0xcd,0xbc,0xed,0x82,0x55,0x75,0x4a,0xbe,0x6b, + 0x3b,0x01,0x2b,0x24,0x55,0x3f,0x87,0x61,0x1f,0x8b,0x91,0x6b,0x12,0x0d,0xed,0x7b, + 0xdc,0x0f,0xa6,0xe3,0x0e,0xf7,0x63,0x78,0xd2,0xa1,0x4b,0x49,0x4d,0x76,0x56,0xd2, + 0xc2,0xca,0x41,0x1a,0x88,0x04,0x93,0xa4,0x7f,0x5e,0x71,0x2f,0x1e,0x48,0x90,0xbb, + 0xb1,0x92,0x36,0x8d,0xb7,0xed,0xd8,0x86,0x17,0x04,0x30,0x26,0xd6,0xb1,0xdb,0x6f, + 0xeb,0x81,0x69,0xb2,0x5a,0x4a,0x55,0x78,0x29,0x6b,0x9b,0x5a,0xb1,0x92,0x3b,0x05, + 0xbb,0x73,0xb7,0x9e,0x37,0xdf,0xe9,0xf5,0xc4,0x04,0x27,0xc6,0xd5,0xa5,0x55,0x54, + 0x89,0x2a,0xf4,0xab,0x2b,0x36,0xa5,0x0a,0xde,0x58,0x16,0x01,0xb5,0x78,0xb6,0x9f, + 0xb0,0xc1,0xd3,0x4c,0x26,0xb7,0x67,0x5d,0x1d,0x41,0x5d,0x50,0x08,0x9b,0x65,0x02, + 0xde,0x9b,0x9f,0xa3,0x1b,0xdb,0x8d,0xf1,0xec,0x94,0xf1,0xe6,0x14,0x74,0xb5,0xd4, + 0x63,0xb7,0x3c,0x54,0xc3,0xbe,0x00,0x01,0x08,0x05,0x48,0x36,0x1c,0x36,0x96,0x37, + 0xf1,0xb8,0x36,0xf1,0x80,0x92,0xaf,0xf0,0xcc,0x57,0xee,0x2c,0x73,0x77,0x89,0x71, + 0xaf,0xd2,0xed,0xb8,0xdf,0x7b,0x69,0xe2,0xdf,0x94,0x81,0xe2,0xf8,0xac,0x04,0xe0, + 0x52,0x90,0xec,0x2c,0x0d,0x45,0x24,0x52,0x46,0x59,0xa9,0x47,0xe3,0xa4,0x97,0x5b, + 0x6a,0x37,0x37,0xde,0xf6,0x24,0x7e,0xc4,0x61,0xa6,0x8b,0xb7,0xda,0x9e,0x09,0x25, + 0x30,0x88,0x43,0x3b,0xbb,0xad,0xc8,0xf2,0x01,0x26,0xf6,0xdf,0xdb,0x6e,0x70,0x9a, + 0x49,0x0c,0x13,0xb4,0x3d,0xb3,0x3d,0x29,0x81,0x66,0x48,0xde,0x3d,0x60,0xa9,0xe4, + 0xa8,0x3b,0x83,0xbd,0x8f,0x3b,0xae,0x1b,0x8d,0x0c,0x31,0x46,0xd5,0x0d,0xdc,0xa5, + 0x96,0x50,0x85,0x91,0xc3,0x58,0x5a,0xe4,0x03,0xfe,0x61,0xa6,0xc4,0x1e,0x3e,0xb7, + 0x18,0x54,0xc5,0x15,0x00,0xb5,0x6a,0xc3,0x3a,0x88,0x8f,0xcc,0x29,0x2e,0xc7,0x75, + 0x04,0x15,0xb1,0xdb,0xff,0x00,0x78,0x3b,0x73,0x63,0x80,0x23,0xa5,0x93,0xb4,0xcb, + 0xd8,0x8e,0x37,0x88,0xb9,0x30,0x68,0x22,0xe7,0x55,0xae,0xb7,0xbe,0xd6,0x04,0x8d, + 0xfe,0xd8,0x79,0x9c,0x47,0x50,0xe0,0x86,0xa9,0x82,0x58,0xc8,0x92,0x40,0x86,0xd1, + 0x3b,0x32,0xaa,0x39,0x07,0xf9,0x75,0x69,0xe3,0xdf,0x9e,0x46,0x1a,0xad,0xd0,0x29, + 0xa4,0x0b,0x23,0xfe,0x0a,0x92,0x43,0x90,0x34,0x30,0xdb,0x7b,0x73,0xe6,0xe3,0xe9, + 0x85,0x72,0x47,0x70,0x93,0x0a,0x77,0x27,0xaa,0x10,0x32,0xe9,0x8e,0x33,0x22,0xc6, + 0x0e,0xe2,0x23,0xbd,0xc0,0xf3,0x6b,0x5f,0xdc,0x6c,0x6d,0xce,0x3d,0x9e,0x05,0x58, + 0x66,0x31,0xc8,0x62,0xac,0xed,0x17,0x4b,0xd9,0xb5,0xdc,0x73,0x63,0xb6,0xd6,0xb6, + 0xdc,0x86,0xb6,0xfb,0x60,0x5a,0x97,0x32,0x49,0x38,0x40,0x88,0xdd,0x93,0x22,0x28, + 0x5f,0x20,0x00,0x77,0x1b,0xf3,0xe3,0xd8,0x8c,0x3b,0x51,0x34,0x68,0xe6,0xef,0x1c, + 0xce,0x2c,0xc1,0xa2,0x6b,0x91,0xc5,0xad,0xf7,0xe3,0xf5,0xc2,0x83,0xd5,0x57,0x78, + 0x5e,0xd4,0x54,0x4c,0xd4,0xdd,0xe8,0xe2,0x68,0x15,0xe3,0xd4,0xea,0x1b,0x4d,0x94, + 0x9b,0x12,0x05,0xc0,0x24,0x1f,0xe5,0xfb,0x62,0x30,0xac,0x10,0x33,0x4a,0x1e,0x69, + 0xd4,0x2e,0xa9,0x84,0x71,0x77,0x04,0x45,0x0f,0x36,0xe7,0xf5,0xb0,0xf3,0x89,0x08, + 0xa9,0x51,0x29,0xea,0x23,0x12,0x05,0x46,0xd2,0xe6,0x20,0xc4,0x69,0x2c,0xa7,0x50, + 0x06,0xfe,0x2d,0x6b,0x73,0xc6,0x19,0x45,0x44,0xbd,0x4b,0xa1,0x99,0x19,0xc9,0x90, + 0x04,0xbf,0xa6,0xd6,0x2b,0x71,0xe0,0xdc,0x8e,0x7f,0x98,0x9f,0x18,0xb0,0x1c,0xa8, + 0x72,0x53,0x95,0x30,0x4e,0xb5,0x72,0xab,0xc3,0x24,0xb1,0x47,0x52,0xa4,0xb7,0x6c, + 0x31,0x7d,0x47,0x7f,0x50,0xbf,0x9b,0x0b,0x71,0xce,0x3c,0xac,0x8d,0x0c,0xc6,0x18, + 0xa5,0x12,0x86,0x1b,0x34,0x60,0xbe,0xa0,0x14,0x32,0x80,0x47,0x9e,0x0f,0xb8,0x38, + 0x72,0x92,0x57,0x02,0x7d,0xde,0x29,0x4c,0x4a,0x19,0x48,0xe4,0xea,0x1a,0x48,0xbe, + 0xf7,0x1e,0x1b,0xe9,0x81,0x25,0x99,0xe4,0xae,0x5d,0x53,0x6a,0x98,0xb8,0x6b,0x90, + 0x40,0x75,0x16,0x0a,0x49,0x1e,0x78,0xdf,0x6d,0xfe,0xf8,0xac,0x90,0x05,0xa8,0x40, + 0xa4,0x85,0x8d,0xc4,0xef,0x28,0x32,0x53,0x33,0x03,0xa0,0xb1,0x37,0x0c,0x6d,0xb8, + 0x06,0xc7,0x8d,0xad,0xf5,0xc3,0xd0,0xc2,0x93,0xc7,0x51,0xd8,0x31,0x1d,0x69,0x78, + 0xf9,0x12,0x6b,0x17,0x04,0x0f,0x16,0x37,0xfc,0xa7,0x92,0x45,0xbc,0x8c,0x3d,0x3d, + 0x4c,0x72,0x46,0xa4,0xfe,0x24,0x71,0x36,0xb6,0xb9,0x25,0xd8,0x03,0x66,0xfd,0x8e, + 0xf7,0xe4,0x82,0x0f,0xd9,0x48,0x6e,0xc6,0x2a,0x5b,0xc7,0x47,0x32,0xac,0x92,0xc3, + 0x72,0xed,0x20,0x5b,0x5e,0xc6,0xd7,0x2d,0xfe,0x5e,0x7f,0x28,0xf2,0x70,0x80,0x02, + 0x50,0x01,0x11,0x12,0x4d,0x3c,0x8f,0x51,0x2c,0x55,0x12,0xd3,0x22,0x90,0xc7,0x4b, + 0x32,0x10,0x6c,0x75,0x5b,0x80,0xc2,0xe3,0x7e,0x78,0xb9,0xc4,0x7e,0xa6,0x0d,0x46, + 0x4b,0x77,0x62,0x8c,0x58,0x12,0x75,0xc6,0x2e,0x2c,0x1b,0x71,0xb7,0xb1,0x1e,0xeb, + 0x7c,0x19,0x96,0x07,0x81,0xbf,0xe2,0x51,0xd6,0x64,0x71,0x34,0x0d,0xa8,0x10,0xcd, + 0xa0,0x1d,0x24,0x8f,0xca,0xf7,0x1e,0x4e,0xf6,0x1e,0xf8,0x7e,0x2a,0x83,0x52,0xe6, + 0x39,0xbb,0x62,0x47,0xb1,0x8d,0xa4,0x83,0x5a,0x6b,0x5d,0x37,0xb9,0xd8,0xdb,0xed, + 0xc5,0xef,0x6c,0x39,0xca,0x7e,0x79,0x55,0xda,0x89,0x91,0xa2,0x11,0x04,0x80,0x4c, + 0xd1,0x9b,0xac,0x60,0x21,0x17,0x3a,0x6d,0x7b,0xef,0x70,0x0d,0x85,0xb8,0x00,0x8f, + 0x37,0x2e,0xa1,0x20,0x8a,0x68,0x7b,0xb2,0xc6,0x89,0x3c,0x7a,0x52,0x50,0x81,0x23, + 0xb9,0x00,0x86,0x75,0x6b,0x15,0x60,0x4f,0x23,0xef,0xbd,0xf1,0xf6,0x67,0x1c,0x53, + 0xc8,0x92,0x26,0x9a,0x7d,0x43,0xe6,0x54,0x9b,0x48,0xcb,0x20,0x7f,0x5a,0x96,0x02, + 0xcc,0x01,0x00,0xaf,0xd0,0x0b,0x73,0x85,0xc9,0x01,0x95,0xa3,0x8e,0x76,0x66,0x89, + 0x42,0xcc,0x58,0x9d,0x40,0x70,0x09,0x55,0x27,0x62,0x08,0xb9,0x1b,0xde,0xe7,0x10, + 0x61,0xc9,0x47,0x28,0x1a,0x28,0x9a,0x29,0x4c,0x1f,0x2e,0xdd,0xe8,0x37,0x68,0x9d, + 0xec,0x54,0x82,0x6e,0xa0,0xff,0x00,0x37,0x9e,0x3f,0xae,0x14,0x69,0x8c,0x55,0x28, + 0x61,0x45,0x31,0xc6,0xa1,0x5d,0x5a,0xc3,0x72,0x2c,0x6c,0x0d,0xb9,0x5f,0x17,0xc2, + 0x2a,0x69,0xd8,0xcb,0x18,0xac,0x12,0xcd,0x11,0x60,0x45,0x40,0xb9,0x27,0x49,0xb7, + 0xdc,0x81,0x72,0x2f,0xc8,0x20,0x60,0xbf,0x96,0x35,0xf0,0xc5,0x2c,0x93,0x33,0x86, + 0x40,0x35,0x91,0xf9,0xd4,0x86,0x2b,0xfb,0x1b,0xe2,0x55,0x25,0xaa,0x29,0xa3,0x43, + 0x09,0x87,0xb7,0xdd,0xed,0xbc,0x3c,0x90,0x4d,0x80,0xb0,0x06,0xff,0x00,0x4e,0x47, + 0x9d,0xf9,0xc3,0xf0,0xd3,0xc1,0xdb,0x8d,0x69,0xdc,0x07,0x6b,0x68,0xbe,0x8b,0x86, + 0x16,0x04,0x05,0x06,0xfc,0xfd,0x4f,0x9d,0xb0,0x2b,0x40,0xd1,0x25,0x3f,0x78,0x87, + 0x76,0x36,0x64,0x0e,0x00,0x4f,0x04,0x91,0xe7,0x71,0xc8,0xe7,0xec,0x70,0xc5,0x45, + 0x35,0x4c,0x54,0xd3,0x4f,0x4e,0x2f,0x1a,0x10,0x74,0xa3,0xdd,0x8a,0xe9,0xb8,0x6b, + 0x6c,0x2d,0x7d,0xb6,0xbe,0x2c,0x6a,0xb1,0x22,0x57,0x14,0x73,0x68,0x0a,0x83,0xd4, + 0x49,0x2a,0xfc,0x1f,0xca,0x48,0x23,0x7b,0xdb,0x6d,0xcf,0x8f,0xbe,0x1e,0xcc,0x28, + 0xe3,0x92,0x9e,0x66,0xee,0x53,0xbe,0x99,0x1b,0x57,0x70,0x15,0x91,0x97,0xc0,0xf2, + 0x2d,0xf7,0xc7,0x95,0xd5,0xf4,0xd0,0xa4,0x91,0xd5,0xfe,0x1b,0xbb,0x77,0xb4,0x38, + 0x2c,0xaf,0xec,0x4b,0x71,0xfc,0xd6,0xfe,0xe3,0x01,0xd2,0xd4,0xc2,0xcf,0xae,0x37, + 0x5e,0xd8,0xb2,0xd8,0x6f,0x71,0xbe,0xc7,0xc8,0x3b,0x61,0xd4,0xe1,0x03,0x47,0x45, + 0x1b,0xd3,0xb1,0x59,0xc4,0x4c,0xde,0x90,0xd7,0x00,0x44,0xa4,0x5b,0x51,0xda,0xcc, + 0x6f,0x7b,0x01,0xc7,0x3b,0x6c,0x70,0xeb,0x54,0xd3,0x88,0xa6,0xa6,0x96,0x66,0x9a, + 0x02,0x3b,0xc4,0x29,0x2a,0x8c,0xd7,0xd2,0x08,0x3b,0x05,0x6b,0x30,0xd8,0xdd,0x4d, + 0xb9,0x3b,0xda,0x5c,0x50,0x53,0x55,0x22,0x40,0x24,0x30,0x4e,0x5c,0x76,0xde,0xe4, + 0x80,0xf7,0x24,0x73,0xb8,0xfd,0xec,0x71,0x1a,0x72,0x86,0x59,0x87,0xcc,0x29,0x8c, + 0x93,0xa0,0xc8,0x06,0xa5,0x00,0xee,0x2c,0x79,0x2b,0x66,0xda,0xdc,0x6f,0xc0,0xc4, + 0x69,0xda,0x38,0x50,0x5d,0x55,0x25,0x54,0xb4,0xb0,0x46,0x23,0x78,0x56,0x60,0xbb, + 0xac,0x9e,0x9f,0x58,0xb7,0xa4,0xb0,0xe4,0x8e,0x0d,0xed,0xfa,0xe3,0xd8,0x63,0x30, + 0xbb,0xa4,0x0c,0xb2,0xd4,0xf6,0x89,0xd3,0x34,0xac,0x5a,0xfc,0xb2,0xa0,0x23,0xd4, + 0xff,0x00,0xca,0x2f,0xf5,0x02,0xe7,0x11,0x95,0xd4,0x3a,0x54,0x56,0x52,0x46,0x52, + 0x7a,0x67,0x00,0xc5,0xa8,0x95,0x95,0x45,0xbd,0x5e,0x48,0x23,0x7b,0x8e,0x3d,0x57, + 0x1e,0xc1,0xee,0xe7,0xcc,0xe5,0x0e,0x93,0xcc,0x5a,0x48,0x77,0x49,0x14,0x10,0xcb, + 0x6e,0x48,0xbe,0xed,0xa4,0xe8,0xdb,0xf5,0xc3,0xdd,0xa1,0x5b,0x93,0x73,0xb2,0x24, + 0x74,0x93,0x54,0x48,0xc6,0x99,0xe1,0xfc,0x54,0x63,0x79,0x0f,0x3a,0x94,0xed,0xb1, + 0xdd,0x74,0xdf,0xdc,0x1f,0x71,0x86,0xdd,0xe5,0xa3,0x57,0x53,0xa2,0xa2,0x9d,0xdc, + 0x15,0xb0,0xd2,0x83,0x55,0x8a,0x38,0x20,0xea,0x50,0x56,0xde,0x76,0x23,0x7b,0xe3, + 0xc9,0xea,0xde,0x66,0x95,0xe1,0x89,0x14,0xcd,0xa5,0x54,0x3d,0xd5,0x1a,0x41,0x7b, + 0xbb,0x16,0x36,0x03,0xf5,0xe4,0x9f,0x7c,0x26,0x29,0x67,0xcb,0xe5,0x85,0x26,0x96, + 0x4a,0x59,0xcc,0x77,0x24,0xcb,0xa7,0x40,0xdc,0x85,0x20,0x78,0x00,0x8f,0x50,0xb7, + 0x38,0x0e,0xf4,0x4b,0x4b,0xff,0xd9}; diff --git a/lib/libesp32/JPEGDEC/test_images/thumb_test.h b/lib/libesp32/JPEGDEC/test_images/thumb_test.h new file mode 100644 index 000000000..0b43b0074 --- /dev/null +++ b/lib/libesp32/JPEGDEC/test_images/thumb_test.h @@ -0,0 +1,1286 @@ +// +// thumb_test +// +const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a, + 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0, + 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f, + 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00, + 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06, + 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00, + 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d, + 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45, + 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a, + 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02, + 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00, + 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00, + 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00, + 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01, + 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00, + 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00, + 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05, + 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90, + 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00, + 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00, + 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00, + 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, + 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00, + 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05, + 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00, + 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00, + 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39, + 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30, + 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00, + 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00, + 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00, + 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37, + 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56, + 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07, + 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40, + 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01, + 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98, + 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03, + 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01, + 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48, + 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11, + 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22, + 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83, + 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93, + 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22, + 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, + 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11, + 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff, + 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01, + 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61, + 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1, + 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27, + 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88, + 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, + 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, + 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, + 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02, + 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61, + 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52, + 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a, + 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47, + 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67, + 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86, + 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4, + 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2, + 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9, + 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, + 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f, + 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09, + 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35, + 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20, + 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31, + 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d, + 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00, + 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0, + 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8, + 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f, + 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3, + 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc, + 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a, + 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4, + 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a, + 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93, + 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66, + 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b, + 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3, + 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99, + 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a, + 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c, + 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c, + 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46, + 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e, + 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c, + 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa, + 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e, + 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42, + 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2, + 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b, + 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64, + 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6, + 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66, + 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79, + 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73, + 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a, + 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1, + 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b, + 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a, + 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97, + 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4, + 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c, + 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a, + 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f, + 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27, + 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86, + 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65, + 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7, + 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78, + 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b, + 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35, + 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02, + 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34, + 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28, + 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71, + 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f, + 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e, + 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f, + 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf, + 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29, + 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2, + 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf, + 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0, + 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02, + 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f, + 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73, + 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff, + 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04, + 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00, + 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48, + 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01, + 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e, + 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f, + 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd, + 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38, + 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce, + 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3, + 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa, + 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2, + 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6, + 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00, + 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79, + 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd, + 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e, + 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69, + 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27, + 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c, + 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c, + 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4, + 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64, + 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4, + 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7, + 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e, + 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4, + 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8, + 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9, + 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2, + 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf, + 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d, + 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7, + 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63, + 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f, + 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74, + 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11, + 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca, + 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d, + 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1, + 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53, + 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c, + 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28, + 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50, + 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7, + 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c, + 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09, + 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48, + 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8, + 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39, + 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1, + 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1, + 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea, + 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14, + 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf, + 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c, + 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3, + 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41, + 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4, + 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74, + 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9, + 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7, + 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c, + 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1, + 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b, + 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa, + 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00, + 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3, + 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f, + 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70, + 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff, + 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18, + 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4, + 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7, + 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a, + 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7, + 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc, + 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9, + 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b, + 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2, + 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2, + 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf, + 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1, + 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5, + 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66, + 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f, + 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60, + 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d, + 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a, + 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f, + 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f, + 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f, + 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54, + 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29, + 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02, + 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35, + 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75, + 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56, + 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6, + 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83, + 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34, + 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7, + 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6, + 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8, + 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9, + 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f, + 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f, + 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f, + 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed, + 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68, + 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2, + 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16, + 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca, + 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8, + 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8, + 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6, + 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1, + 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80, + 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51, + 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41, + 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00, + 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff, + 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f, + 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93, + 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7, + 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7, + 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22, + 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75, + 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94, + 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf, + 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff, + 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe, + 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51, + 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c, + 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4, + 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce, + 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8, + 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea, + 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c, + 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6, + 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0, + 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43, + 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18, + 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2, + 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00, + 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9, + 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0, + 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9, + 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80, + 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf, + 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00, + 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5, + 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d, + 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c, + 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff, + 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd, + 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00, + 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64, + 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc, + 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8, + 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf, + 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90, + 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37, + 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea, + 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2, + 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb, + 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0, + 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93, + 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c, + 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d, + 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87, + 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c, + 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7, + 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9, + 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc, + 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07, + 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f, + 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a, + 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b, + 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3, + 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f, + 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0, + 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10, + 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5, + 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12, + 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde, + 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66, + 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0, + 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00, + 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff, + 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f, + 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff, + 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8, + 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a, + 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7, + 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03, + 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c, + 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7, + 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45, + 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1, + 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2, + 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7, + 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e, + 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd, + 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06, + 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06, + 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88, + 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a, + 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50, + 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34, + 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2, + 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c, + 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a, + 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63, + 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7, + 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0, + 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc, + 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff, + 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41, + 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29, + 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57, + 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6, + 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf, + 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7, + 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21, + 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff, + 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55, + 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92, + 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6, + 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75, + 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29, + 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2, + 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68, + 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd, + 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1, + 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd, + 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f, + 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3, + 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77, + 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d, + 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6, + 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52, + 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba, + 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f, + 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65, + 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe, + 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb, + 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0, + 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e, + 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29, + 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8, + 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae, + 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a, + 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56, + 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64, + 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9, + 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c, + 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57, + 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac, + 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8, + 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51, + 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26, + 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61, + 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53, + 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67, + 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb, + 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98, + 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda, + 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb, + 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad, + 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef, + 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38, + 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb, + 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd, + 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92, + 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a, + 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab, + 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e, + 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7, + 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61, + 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd, + 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff, + 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa, + 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02, + 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2, + 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff, + 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d, + 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91, + 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0, + 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00, + 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5, + 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86, + 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96, + 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7, + 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea, + 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2, + 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80, + 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7, + 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62, + 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff, + 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e, + 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69, + 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98, + 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01, + 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49, + 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c, + 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9, + 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a, + 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc, + 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd, + 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7, + 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe, + 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23, + 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38, + 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0, + 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5, + 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07, + 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c, + 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6, + 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b, + 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61, + 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00, + 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00, + 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee, + 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00, + 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00, + 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00, + 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00, + 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00, + 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00, + 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00, + 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00, + 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00, + 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00, + 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00, + 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00, + 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00, + 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00, + 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00, + 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00, + 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00, + 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00, + 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00, + 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00, + 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00, + 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00, + 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00, + 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff, + 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00, + 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff, + 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a, + 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00, + 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01, + 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87, + 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69, + 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19, + 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00, + 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12, + 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01, + 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06, + 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06, + 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00, + 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3, + 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02, + 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e, + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d, + 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42, + 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2, + 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab, + 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c, + 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2, + 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88, + 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13, + 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b, + 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15, + 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00, + 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13, + 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65, + 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83, + 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b, + 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00, + 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8, + 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76, + 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a, + 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01, + 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73, + 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c, + 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73, + 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c, + 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33, + 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31, + 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31, + 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00, + 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02, + 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05, + 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09, + 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08, + 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04, + 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, + 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00, + 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01, + 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03, + 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01, + 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04, + 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01, + 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86, + 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79, + 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55, + 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78, + 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b, + 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a, + 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29, + 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99, + 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5, + 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb, + 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48, + 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c, + 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e, + 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29, + 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a, + 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3, + 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4, + 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26, + 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e, + 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91, + 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29, + 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f, + 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b, + 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe, + 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf, + 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57, + 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01, + 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8, + 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6, + 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01, + 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36, + 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb, + 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15, + 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85, + 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef, + 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb, + 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54, + 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5, + 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90, + 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f, + 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c, + 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14, + 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c, + 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55, + 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10, + 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79, + 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6, + 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a, + 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9, + 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad, + 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11, + 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24, + 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e, + 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19, + 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8, + 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69, + 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf, + 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47, + 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6, + 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef, + 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0, + 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23, + 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25, + 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0, + 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77, + 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07, + 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c, + 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b, + 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb, + 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32, + 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf, + 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94, + 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a, + 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda, + 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d, + 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99, + 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7, + 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4, + 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde, + 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93, + 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e, + 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00, + 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc, + 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9, + 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a, + 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e, + 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16, + 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3, + 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5, + 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23, + 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc, + 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d, + 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98, + 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a, + 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9, + 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf, + 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8, + 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7, + 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c, + 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d, + 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f, + 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec, + 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2, + 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61, + 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2, + 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32, + 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa, + 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6, + 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8, + 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a, + 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07, + 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea, + 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61, + 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81, + 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0, + 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f, + 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11, + 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3, + 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a, + 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e, + 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1, + 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43, + 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10, + 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a, + 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98, + 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38, + 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71, + 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a, + 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78, + 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32, + 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06, + 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac, + 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61, + 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b, + 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54, + 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa, + 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d, + 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54, + 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32, + 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8, + 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68, + 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00, + 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09, + 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42, + 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52, + 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68, + 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19, + 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b, + 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1, + 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80, + 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37, + 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4, + 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8, + 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e, + 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d, + 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21, + 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9, + 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30, + 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e, + 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66, + 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b, + 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e, + 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6, + 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d, + 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31, + 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc, + 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a, + 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91, + 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c, + 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2, + 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92, + 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63, + 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f, + 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67, + 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e, + 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07, + 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6, + 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b, + 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7, + 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18, + 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e, + 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f, + 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4, + 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8, + 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8, + 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f, + 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9, + 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8, + 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d, + 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80, + 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e, + 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82, + 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7, + 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80, + 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a, + 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3, + 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6, + 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53, + 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4, + 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25, + 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b, + 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea, + 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a, + 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95, + 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83, + 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9, + 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca, + 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e, + 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42, + 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46, + 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca, + 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8, + 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b, + 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2, + 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82, + 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e, + 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49, + 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50, + 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d, + 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae, + 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6, + 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38, + 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb, + 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90, + 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00, + 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1, + 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9, + 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a, + 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5, + 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27, + 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5, + 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86, + 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64, + 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10, + 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a, + 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62, + 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6, + 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab, + 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69, + 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4, + 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8, + 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07, + 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8, + 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58, + 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4, + 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48, + 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf, + 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e, + 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b, + 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83, + 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1, + 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75, + 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0, + 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60, + 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff, + 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65, + 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80, + 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d, + 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a, + 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c, + 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30, + 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23, + 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc, + 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e, + 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3, + 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8, + 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27, + 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80, + 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08, + 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d, + 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f, + 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d, + 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60, + 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55, + 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa, + 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82, + 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00, + 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe, + 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff, + 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58, + 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b, + 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3, + 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0, + 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf, + 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54, + 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4, + 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c, + 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39, + 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16, + 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98, + 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f, + 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45, + 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb, + 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81, + 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47, + 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d, + 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e, + 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38, + 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff, + 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61, + 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd, + 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde, + 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab, + 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d, + 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5, + 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01, + 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde, + 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6, + 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1, + 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2, + 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf, + 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d, + 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f, + 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0, + 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4, + 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4, + 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65, + 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b, + 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb, + 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c, + 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68, + 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa, + 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51, + 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06, + 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83, + 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9, + 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a, + 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0, + 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7, + 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc, + 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18, + 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10, + 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5, + 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae, + 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80, + 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81, + 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95, + 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95, + 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d, + 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc, + 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29, + 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b, + 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e, + 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a, + 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9, + 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56, + 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc, + 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb, + 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9, + 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc, + 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4, + 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78, + 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1, + 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8, + 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e, + 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48, + 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15, + 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f, + 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90, + 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8, + 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44, + 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c, + 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29, + 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35, + 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d, + 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8, + 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0, + 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34, + 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30, + 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44, + 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36, + 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c, + 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44, + 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2, + 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96, + 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd, + 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35, + 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e, + 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa, + 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d, + 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9, + 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62, + 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3, + 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53, + 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2, + 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32, + 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6, + 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92, + 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9, + 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad, + 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99, + 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e, + 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45, + 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96, + 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3, + 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60, + 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d, + 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b, + 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76, + 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca, + 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14, + 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6, + 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01, + 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67, + 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c, + 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09, + 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90, + 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb, + 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c, + 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2, + 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7, + 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55, + 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73, + 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9, + 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd, + 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78, + 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77, + 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e, + 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a, + 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16, + 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d, + 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea, + 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13, + 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde, + 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7, + 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d, + 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd, + 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4, + 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95, + 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72, + 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93, + 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a, + 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87, + 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed, + 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10, + 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20, + 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98, + 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa, + 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea, + 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0, + 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23, + 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22, + 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24, + 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8, + 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc}; diff --git a/lib/libesp32/JPEGDEC/test_images/tulips.h b/lib/libesp32/JPEGDEC/test_images/tulips.h new file mode 100644 index 000000000..edd8e2d88 --- /dev/null +++ b/lib/libesp32/JPEGDEC/test_images/tulips.h @@ -0,0 +1,3504 @@ +// +// tulips +// +const uint8_t tulips[] PROGMEM = { 0xff,0xd8,0xff,0xc0,0x00,0x11,0x08,0x01,0xe0,0x02,0x80,0x03,0x01,0x22,0x00,0x02, + 0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x1f,0x00,0x00,0x01,0x05,0x01,0x01,0x01, + 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05, + 0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,0xc4,0x00,0xb5,0x10,0x00,0x02,0x01,0x03,0x03, + 0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04, + 0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81, + 0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82, + 0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36, + 0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56, + 0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76, + 0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95, + 0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3, + 0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca, + 0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, + 0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xc4,0x00, + 0x1f,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,0xc4, + 0x00,0xb5,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00, + 0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51, + 0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23, + 0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18, + 0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45, + 0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65, + 0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84, + 0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2, + 0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9, + 0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, + 0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5, + 0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xdb,0x00,0x43,0x00,0x02,0x02,0x02,0x02,0x02,0x02, + 0x03,0x02,0x02,0x03,0x04,0x03,0x03,0x03,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x06, + 0x05,0x05,0x05,0x05,0x05,0x06,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x08, + 0x08,0x08,0x08,0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x0b,0x0b,0x0b,0x0b, + 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0xff,0xdb,0x00,0x43,0x01,0x02, + 0x02,0x02,0x03,0x03,0x03,0x05,0x03,0x03,0x05,0x0d,0x09,0x07,0x09,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0xff, + 0xdd,0x00,0x04,0x00,0x28,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11, + 0x00,0x3f,0x00,0xfc,0x75,0xb8,0x88,0x2f,0xcc,0x3f,0x5a,0xcf,0x7f,0x41,0x57,0x2e, + 0x6e,0x17,0xa0,0xeb,0x59,0x8e,0xe1,0xbe,0x6f,0x4a,0xf0,0xe5,0xa1,0xcf,0x07,0xa9, + 0xaf,0xa7,0xcb,0x87,0x19,0xfc,0x2b,0xd0,0xad,0x2e,0x80,0x80,0x0c,0xf4,0xaf,0x30, + 0xb5,0x6d,0x8c,0x18,0xd6,0xf4,0x57,0xfb,0x78,0xdd,0x8a,0xc1,0xc9,0xdc,0x55,0x23, + 0x73,0xb5,0x92,0x7f,0x4a,0xc5,0xbd,0x97,0x72,0x9c,0xd6,0x57,0xf6,0x8e,0xec,0x8c, + 0xf4,0xef,0x50,0x9b,0x93,0x37,0x4e,0xb5,0xcf,0x51,0x6b,0x76,0x55,0x38,0xb4,0xc9, + 0x6d,0xd7,0x74,0x9f,0xca,0xb5,0x13,0x83,0xcf,0x15,0x52,0x04,0xc6,0x1b,0xd6,0xad, + 0xa8,0x6e,0x48,0xc8,0xc5,0x44,0x67,0x64,0x6c,0xcd,0xdb,0x35,0x1b,0x73,0x8e,0xb5, + 0x34,0xed,0x8e,0x07,0x7e,0x0d,0x65,0x25,0xcf,0x96,0x81,0x68,0x5b,0x8c,0xb0,0xe7, + 0x35,0xa3,0xd5,0x68,0x8e,0x7b,0xfb,0xda,0x9a,0x76,0xe8,0xa0,0xf4,0xeb,0x5d,0x0d, + 0x84,0x59,0x20,0xf6,0xee,0x2b,0x02,0xd9,0x80,0x5d,0xef,0x5b,0xd6,0x73,0x05,0xe4, + 0xf3,0x5e,0x7c,0xb5,0x96,0x84,0xcc,0xed,0x2d,0x24,0x48,0xd7,0x8a,0x75,0xde,0xa4, + 0xaa,0xb8,0x06,0xb9,0xa9,0x2f,0xc4,0x69,0x80,0x7d,0xcd,0x60,0x5e,0xea,0xa4,0xee, + 0x39,0xe9,0x5d,0x34,0x68,0x36,0xf4,0x39,0xb9,0x5f,0x35,0xcd,0x2d,0x43,0x54,0xc8, + 0x38,0x35,0xe7,0x9a,0xb6,0xa0,0x5b,0x3c,0xd3,0xaf,0xf5,0x02,0x41,0x20,0xe7,0xd2, + 0xb8,0x8d,0x42,0xeb,0x39,0xaf,0x67,0x0d,0x85,0x4b,0x73,0xae,0x9c,0x3a,0x99,0x7a, + 0x95,0xe1,0x90,0xe0,0x1a,0xe5,0xe4,0xe5,0x8d,0x6a,0x4e,0x4b,0x12,0x5b,0xe9,0x59, + 0xaf,0xc7,0x22,0xbd,0x38,0xc3,0x95,0x58,0xe9,0x48,0xaa,0x46,0x2a,0x26,0x5f,0x4a, + 0xb0,0x41,0xce,0xd3,0x50,0x91,0xeb,0xd0,0x55,0x5a,0xe3,0xb9,0x03,0x0e,0xe2,0xa1, + 0x2b,0xcf,0x15,0x39,0x19,0x15,0x13,0x71,0xc1,0xe6,0x95,0x84,0x42,0x4e,0x29,0x9f, + 0xd2,0xa4,0xc6,0x38,0xa8,0xdb,0xa0,0x26,0xa9,0x00,0x94,0x52,0x51,0xd2,0xa8,0x96, + 0xc7,0x00,0x7b,0x74,0xa9,0x00,0xc7,0x02,0xa3,0x03,0x07,0x1d,0xea,0x65,0xaa,0x8e, + 0x8f,0x52,0x18,0xf0,0xbd,0xba,0xd3,0xd7,0x38,0xc7,0x6a,0x60,0x07,0x19,0x35,0x2a, + 0xfd,0xda,0xd3,0xcc,0x68,0x91,0x73,0xda,0xa7,0x51,0xc0,0xa8,0x57,0xa6,0x7d,0x6a, + 0x45,0xce,0x69,0xdd,0x0e,0xc4,0xa0,0xe3,0xbe,0x3a,0x54,0x80,0x72,0x6a,0x21,0x52, + 0xa9,0x60,0x2a,0x5c,0xfb,0x02,0x44,0xa3,0xdf,0xad,0x28,0xe0,0xe6,0x99,0x9c,0x9a, + 0x70,0x39,0xa3,0x9d,0x0e,0xc3,0xc2,0xfa,0xd3,0xb1,0x93,0xc8,0xe9,0xd2,0x99,0x9f, + 0x5a,0x78,0x39,0x14,0x73,0x26,0x3e,0x54,0x29,0xe4,0x62,0x8c,0x7a,0x73,0x8a,0x29, + 0x4f,0x07,0xd2,0x9f,0x3a,0x0b,0x0e,0x24,0x8c,0x1a,0x76,0x3a,0x67,0xb0,0xa6,0x1c, + 0x8f,0xbd,0x4b,0x9f,0xc7,0x34,0xee,0x85,0x61,0xdc,0xe6,0x82,0x0e,0x70,0x7f,0x0a, + 0x3f,0x0a,0x78,0xc1,0x3c,0x76,0xa5,0x7b,0x02,0x43,0x4a,0x9e,0xe2,0x9d,0xb3,0x1c, + 0x66,0x9c,0x07,0x71,0x4e,0x19,0xcd,0x2b,0x6e,0xae,0x3b,0x08,0x10,0x1a,0x04,0x60, + 0xff,0x00,0x2a,0x9b,0x19,0xfa,0xd4,0x80,0x1e,0x28,0xb0,0xc8,0x3c,0x9c,0x52,0x79, + 0x3d,0xaa,0xe8,0x5c,0x9e,0x47,0xeb,0x4e,0x0b,0xed,0x47,0x27,0x60,0x28,0x79,0x34, + 0x9e,0x51,0x03,0x35,0xa5,0xb3,0x18,0x03,0xf1,0xa8,0xca,0x0c,0xf5,0xa7,0xca,0x80, + 0xcd,0x31,0x91,0xfd,0x2a,0x36,0x42,0x30,0xb5,0xa2,0x57,0x9e,0x7a,0xd4,0x0e,0xa3, + 0x1d,0x2a,0x79,0x7a,0xb0,0x28,0x14,0xc7,0xb6,0x6a,0x33,0xc7,0x15,0x69,0xc6,0x3f, + 0x0a,0xae,0xc0,0xa9,0xf4,0xf4,0xfc,0x6a,0x2d,0xd5,0x01,0x0b,0x71,0xc8,0xe7,0xda, + 0xa0,0x24,0x8e,0xdd,0x6a,0x76,0x1c,0xfd,0x6a,0x36,0xc8,0xe4,0x7e,0x34,0x80,0x8f, + 0x14,0x01,0x91,0x8a,0x3e,0x9c,0xd2,0x73,0x9a,0x0a,0x57,0x6c,0x7e,0xde,0x31,0x8c, + 0x54,0xa8,0x07,0xe5,0x50,0x73,0x52,0xae,0x4f,0x20,0xe6,0x83,0x62,0xd2,0xe7,0xa7, + 0xf5,0xa7,0xe3,0x18,0xc8,0xa8,0xd3,0x9a,0x94,0x7c,0xbd,0x45,0x69,0x18,0xa6,0x86, + 0x90,0xab,0x80,0x48,0xc6,0x29,0xe3,0x3d,0x38,0xa5,0xc6,0x69,0xc3,0xdf,0xbd,0x2e, + 0x4d,0x6c,0x3e,0x83,0x76,0x9c,0xe2,0x9d,0x82,0x30,0x00,0xc5,0x2e,0x4e,0x07,0x14, + 0xb4,0xf9,0x09,0x13,0x04,0xe7,0x3d,0x29,0x06,0x7a,0x63,0x14,0xee,0x83,0xd4,0xd1, + 0xed,0x59,0x34,0x03,0x7a,0x7a,0x0a,0x8c,0xf3,0xc8,0xe2,0xa4,0x38,0x1c,0xe3,0xfa, + 0x54,0x44,0xe3,0x3c,0xfe,0x5d,0xab,0x36,0x93,0x13,0x7a,0x11,0xe6,0x98,0x72,0x45, + 0x3f,0x8e,0xa6,0xa2,0x27,0x38,0x15,0x95,0x8c,0xb9,0x80,0x9e,0xe3,0xf2,0x35,0x19, + 0xe3,0x8e,0xc6,0x95,0xb3,0x9f,0x5a,0x6f,0x4e,0xdc,0xd0,0xd5,0x85,0x70,0xe9,0x4d, + 0xf9,0xbb,0x53,0xf1,0x9e,0x46,0x2a,0x41,0xc9,0xfa,0x7e,0x14,0xbd,0x01,0x76,0x21, + 0x50,0x70,0x09,0x14,0xf0,0xac,0x73,0x81,0x81,0x53,0xa8,0xf4,0xeb,0x52,0x2a,0x8c, + 0x72,0x05,0x22,0x9c,0x59,0xff,0xd0,0xfc,0x4d,0x37,0x1b,0xbe,0xa6,0xad,0x44,0x41, + 0xc7,0x6a,0xc4,0x59,0x09,0xe2,0xb5,0xad,0xd8,0x6d,0xe0,0x57,0x8b,0x35,0x73,0x08, + 0x23,0x44,0x7a,0x8a,0x9c,0x23,0x63,0x3f,0xfd,0x6c,0xd1,0x6d,0x17,0x9a,0x72,0x7a, + 0x56,0xda,0xc0,0x1c,0x05,0x51,0xcf,0x35,0x9c,0x7a,0xa2,0xcc,0x98,0xe3,0x6c,0xfa, + 0xd6,0x9d,0xa4,0x04,0x72,0x7a,0x55,0xe8,0x6c,0x72,0xc0,0x62,0xb5,0xe0,0xb2,0x21, + 0x80,0xdb,0x5c,0x98,0xa5,0x65,0xa3,0x2a,0x24,0xb6,0x16,0x2d,0x27,0x40,0x6b,0x56, + 0x5d,0x31,0x91,0x4f,0x04,0x7a,0xd7,0x4f,0xa1,0xd8,0x29,0x51,0x91,0x93,0xd6,0xba, + 0x2b,0xad,0x3d,0x02,0x1e,0x3a,0xd6,0x38,0x5a,0x4e,0x57,0x93,0x22,0xa4,0xed,0xb1, + 0xe3,0x97,0x50,0x98,0xf3,0xf4,0xfe,0x75,0x95,0x04,0xdb,0x5f,0xf1,0xae,0xdb,0x58, + 0xb2,0x08,0xa4,0xe2,0xb8,0x20,0xbb,0x67,0xf9,0x45,0x69,0x5a,0x9b,0x4d,0x22,0x61, + 0xdc,0xe9,0xad,0xa6,0x67,0xdb,0xc7,0x15,0xb3,0x1c,0xc5,0x00,0xe7,0x18,0xac,0x0b, + 0x60,0x17,0xb7,0xbd,0x5d,0x79,0xb0,0x38,0xfd,0x6b,0xa3,0x0f,0x84,0xbd,0x9b,0x14, + 0xec,0x58,0xb8,0xba,0x73,0x9f,0x61,0x58,0x17,0x73,0x9e,0x72,0x6a,0x69,0xa5,0xc0, + 0x23,0xaf,0xad,0x63,0xcf,0x23,0x30,0x35,0xeb,0xd1,0xc3,0x28,0xea,0xc5,0x05,0xad, + 0xd9,0x99,0x77,0x2f,0x5c,0x74,0xae,0x76,0xe0,0x82,0x4f,0xa8,0xad,0x99,0xf0,0x57, + 0x35,0x8b,0x36,0x17,0xfa,0x57,0x5a,0x49,0x1d,0x0b,0xb9,0x91,0x2e,0x32,0x78,0x23, + 0xbf,0x3e,0xf5,0x41,0xc6,0x7f,0xad,0x68,0xcd,0xb4,0x9a,0xcf,0x73,0x92,0x7e,0xb4, + 0x9e,0xc3,0x2b,0x11,0xd8,0xd4,0x45,0x73,0xf8,0xff,0x00,0x4a,0x98,0x9c,0x9c,0xd4, + 0x27,0xad,0x2d,0xc0,0x8d,0x86,0x7a,0xff,0x00,0x9f,0x4a,0x84,0xa8,0x1c,0xd5,0x8c, + 0x7f,0x0f,0xeb,0x51,0x9c,0xe7,0xda,0xaa,0xc0,0x55,0x23,0x07,0x15,0x1e,0x39,0x03, + 0x26,0xac,0x37,0xd3,0x3c,0xd4,0x78,0xf5,0xe2,0x8b,0x08,0x83,0x04,0x1d,0xb4,0xf0, + 0x0f,0x04,0xf4,0x15,0xaf,0x61,0xa4,0xdd,0x6a,0x12,0x05,0x89,0x0f,0xd7,0xad,0x77, + 0xd6,0x7f,0x0d,0x2f,0xee,0x22,0xde,0xc0,0x83,0xf4,0xac,0x2a,0xe2,0xe9,0x53,0xd2, + 0x52,0x3d,0xdc,0xb7,0x86,0x73,0x2c,0xc2,0x2e,0x58,0x5a,0x2d,0xa3,0xcb,0x14,0x63, + 0x9f,0x5a,0x93,0x81,0x9c,0x0c,0x62,0xbb,0xdb,0xff,0x00,0x00,0x6a,0x76,0x7c,0xa8, + 0x2c,0x3d,0xc5,0x72,0x77,0x5a,0x65,0xe5,0x99,0xdb,0x34,0x78,0x1e,0xb5,0x54,0x71, + 0x74,0x6a,0xbb,0x46,0x66,0x79,0x87,0x0e,0xe6,0x38,0x2f,0xf7,0x9a,0x0d,0x7c,0x8a, + 0x35,0x20,0xe3,0x8a,0x12,0x39,0x1f,0x2a,0xaa,0x4d,0x68,0xc7,0xa5,0xdf,0x48,0x37, + 0x2c,0x4c,0x7f,0x0a,0xe8,0xa9,0x56,0x2b,0x79,0x1e,0x65,0x2c,0x35,0x6a,0x9f,0xc3, + 0x83,0x7e,0x8a,0xe5,0x25,0xe3,0xaf,0x4a,0x7e,0xe1,0x81,0xfa,0x56,0x9c,0x7a,0x26, + 0xa4,0xe7,0x1f,0x67,0x7e,0x7d,0xaa,0x69,0x34,0x1d,0x4e,0x15,0xdd,0x24,0x0c,0x06, + 0x3a,0xe3,0xa5,0x60,0xf1,0x34,0x93,0xb7,0x3a,0x3b,0x56,0x4f,0x8e,0x71,0xe6,0x54, + 0x25,0x6f,0x46,0x65,0x03,0x9f,0x6a,0x78,0xea,0x29,0x8e,0x92,0x46,0xdb,0x24,0x52, + 0x31,0xd8,0x8c,0x52,0x83,0x93,0x80,0x2b,0x4e,0x64,0xf6,0x67,0x9f,0x28,0x4a,0x2f, + 0x95,0xad,0x49,0x43,0x7e,0x15,0x22,0xe7,0xae,0x3a,0xf7,0xa4,0x58,0xe4,0x23,0x24, + 0x1f,0xca,0x93,0x95,0xf6,0xa5,0xcc,0x81,0xc5,0xad,0xd1,0x2d,0x3c,0x64,0x0e,0x05, + 0x30,0x73,0xc0,0xa7,0xa9,0xe3,0x20,0xf3,0x54,0x48,0xff,0x00,0x61,0x47,0x41,0xd7, + 0xad,0x1f,0x4a,0x32,0x07,0xf5,0xa0,0x00,0x8e,0xf4,0x94,0xe3,0xcf,0x6a,0x43,0xf4, + 0xa0,0x05,0x00,0xe7,0xd2,0x9c,0x0e,0x6a,0x31,0xf5,0xc5,0x3b,0x76,0x0f,0x3d,0x69, + 0x73,0x01,0x2e,0x73,0x9c,0xf7,0xa9,0x57,0x39,0xe8,0x7d,0xaa,0xb8,0x6c,0x60,0x93, + 0xd7,0xf4,0xa7,0xe7,0xa7,0xb5,0x30,0x2d,0x03,0xc7,0x4f,0x4a,0x90,0x7a,0xfa,0xd5, + 0x75,0x61,0x8e,0x7a,0x67,0xb5,0x4c,0x1c,0x6e,0xe4,0x67,0x35,0x71,0x7a,0x81,0x61, + 0x46,0x38,0xef,0x53,0x01,0xfa,0x54,0x0a,0xdd,0x8d,0x4a,0xac,0x0e,0x2b,0x50,0x1f, + 0xd3,0xad,0x45,0x80,0x0f,0x27,0x14,0xed,0xc3,0xb5,0x30,0xb0,0xc8,0xcd,0x00,0x31, + 0xb8,0x1c,0x55,0x67,0x03,0x27,0x15,0x3b,0x11,0x9f,0x5c,0xd5,0x77,0x24,0x8e,0x68, + 0x60,0x57,0x61,0x93,0xeb,0x55,0x9f,0x8e,0x33,0x56,0x1c,0xe7,0x8a,0xae,0xdd,0x0e, + 0x4d,0x64,0xd2,0xee,0x34,0x57,0x6e,0xb4,0xc6,0x5e,0x78,0xa9,0x89,0xe3,0xd2,0xa0, + 0x62,0x7b,0xff,0x00,0xfa,0xea,0x04,0x46,0x41,0xcf,0x1d,0x29,0x31,0x8e,0x7b,0xd3, + 0xa8,0xa0,0x69,0x8a,0x3d,0x3f,0xfa,0xd5,0x2a,0x12,0x41,0xe7,0xad,0x45,0x8c,0xf4, + 0xa9,0x97,0x8c,0x9a,0x7a,0x1b,0x24,0xba,0x16,0x17,0xd6,0xa4,0x07,0x27,0x26,0x98, + 0xa0,0xf0,0x3b,0xd4,0xa3,0x3d,0xc5,0x6b,0x17,0xa1,0x43,0x81,0x04,0x64,0x50,0x07, + 0x6c,0x66,0x93,0xa0,0xe7,0xf0,0xa5,0xce,0x07,0xd6,0xa8,0x1b,0x0f,0x9b,0x1e,0xd4, + 0xbb,0x8d,0x26,0x79,0xc8,0xa4,0xce,0x46,0x0f,0x18,0xe7,0xe9,0x49,0x88,0x71,0x39, + 0x06,0x8c,0xe7,0x8c,0xd3,0x33,0x8c,0xf3,0x48,0xcd,0x8e,0x01,0xe9,0xda,0xb0,0x62, + 0x7d,0xd0,0xec,0xfa,0xd4,0x24,0xe3,0x9e,0xb4,0xe2,0xc7,0xe8,0x2a,0x26,0x6e,0x2b, + 0x36,0x29,0x3d,0x35,0x06,0xc7,0x6e,0x4d,0x30,0x90,0x38,0xa5,0x39,0xfa,0xd4,0x7b, + 0x8d,0x43,0x5d,0x4c,0xc0,0xf5,0xa3,0x1c,0xf1,0x46,0x72,0x7d,0x33,0x4f,0x1c,0x8c, + 0x73,0xf5,0xa8,0x91,0x21,0x80,0x47,0x4e,0x95,0x22,0xa8,0x3d,0x7f,0x3a,0x45,0x53, + 0x90,0x6a,0x61,0xe8,0x6a,0x4d,0x16,0xd6,0x41,0x80,0x47,0x1d,0x69,0x72,0x40,0xcf, + 0x5f,0x7a,0x55,0xce,0x31,0x4a,0x69,0x5c,0xa4,0xad,0xa1,0xff,0xd1,0xfc,0x3d,0x8a, + 0x22,0x79,0x3c,0x0a,0xd1,0xb7,0x18,0xa8,0xb0,0xaa,0x31,0xe9,0x52,0x20,0xf9,0xb0, + 0x3a,0xf5,0xc5,0x78,0x72,0xd9,0x92,0x91,0xd2,0x58,0x37,0x38,0xc7,0x3d,0xff,0x00, + 0xc2,0xbb,0x8d,0x3a,0xcc,0xcc,0x01,0xc7,0xd6,0xb8,0x7d,0x34,0x00,0xc0,0x9e,0x79, + 0xcd,0x7a,0xae,0x8c,0xb9,0x45,0xe9,0x9a,0xe7,0xe7,0x7b,0x03,0x44,0xd0,0xe9,0xaa, + 0x07,0x6e,0xb5,0x69,0x2d,0xd5,0x64,0x02,0xb6,0x19,0x76,0x27,0xca,0x39,0x35,0x4c, + 0x00,0x8f,0xb9,0x87,0xe1,0x53,0x57,0xdf,0x12,0x67,0x45,0xa5,0xed,0x89,0x43,0x30, + 0xe8,0x05,0x5f,0xba,0xb9,0x40,0x33,0x91,0xc0,0xe9,0x5c,0xbf,0xdb,0x76,0x77,0xc5, + 0x50,0xbd,0xd4,0x88,0x52,0x33,0x5b,0x50,0x8a,0x8c,0x6c,0x8c,0x6a,0x2b,0xc8,0xab, + 0xad,0x5c,0x2c,0xaa,0xe3,0xa0,0xae,0x00,0x80,0x67,0xe9,0x5a,0xf7,0x57,0x65,0xf3, + 0xce,0x47,0x35,0x92,0xa4,0x19,0x89,0x3d,0xfa,0xfb,0xd5,0xc2,0x17,0x9d,0xd9,0x51, + 0x5c,0xa8,0xd8,0x8b,0x00,0x7b,0x53,0xe4,0x6e,0xa0,0x7e,0x35,0x1c,0x67,0x00,0x63, + 0xad,0x0e,0xc4,0x1c,0x8e,0xd5,0xea,0xd2,0x8a,0x48,0x8b,0x95,0x24,0x39,0xcf,0xa9, + 0xac,0xa9,0xc7,0x07,0xf1,0xed,0x5a,0xb2,0x60,0xa9,0xea,0x31,0x59,0x33,0xfc,0xc0, + 0xe0,0xf5,0xad,0x93,0x2a,0x09,0x98,0xf3,0x91,0xdb,0xe9,0x58,0xd3,0xf0,0x0d,0x6c, + 0x5c,0x64,0xf0,0xd9,0xff,0x00,0x1a,0xc5,0xb8,0xe7,0xa7,0x6a,0xa3,0x74,0x65,0x4a, + 0x49,0x3f,0xd2,0xb3,0xdf,0x39,0xe3,0xbd,0x5e,0x97,0x81,0xfc,0xeb,0x3e,0x4c,0x83, + 0xd6,0xa5,0xb4,0x32,0x33,0xc1,0xc5,0x31,0xb2,0x45,0x2f,0x39,0xf5,0xa8,0xcf,0x06, + 0x92,0x01,0x31,0xeb,0xcd,0x30,0xae,0x06,0x4f,0x1c,0x54,0x9e,0xf4,0x80,0x60,0x62, + 0xaa,0xe0,0x57,0x2b,0xf8,0xd6,0xc6,0x93,0xa5,0x4b,0x7f,0x32,0xae,0xd3,0x8c,0x8a, + 0xa9,0x0c,0x4d,0x34,0xaa,0xa0,0x71,0x9a,0xf7,0x1f,0x05,0x68,0xaa,0x36,0x48,0xe3, + 0x9c,0x0f,0xf3,0xd6,0xbc,0xfc,0xc7,0x18,0xa8,0x53,0xf3,0x3e,0xd7,0x82,0x38,0x62, + 0x59,0xce,0x3a,0x34,0x6d,0xee,0xf5,0x3a,0xaf,0x06,0x78,0x3e,0x28,0x84,0x6d,0x22, + 0x82,0x7e,0x95,0xef,0x96,0x1a,0x3d,0xa2,0x44,0x01,0x51,0xc0,0xc7,0x4a,0xe4,0xec, + 0x7c,0xbb,0x48,0x41,0x5c,0x70,0x2b,0x46,0x2d,0x4a,0x56,0x3c,0x37,0x1e,0xc6,0xbf, + 0x35,0xcc,0x73,0x3a,0x8d,0xbe,0x53,0xfb,0xf7,0x84,0x38,0x3f,0x07,0x82,0xc3,0x46, + 0x9c,0x60,0xb4,0x34,0x35,0x3f,0x0f,0xda,0xcc,0xa4,0x04,0x04,0x63,0x8a,0xf2,0x6f, + 0x10,0x78,0x0e,0x0b,0x80,0x71,0x1f,0xe4,0x31,0x5e,0xcb,0x6b,0x76,0x5c,0x72,0x72, + 0x29,0xd7,0x69,0x1c,0xb1,0x92,0x79,0xcd,0x79,0xb8,0x4c,0x6e,0x21,0x4b,0x9a,0xf6, + 0x3d,0xfc,0xdb,0x84,0xf2,0xec,0x5d,0x17,0x4a,0xad,0x34,0xef,0xe4,0x7c,0xcb,0x65, + 0xe0,0x18,0xa2,0x9f,0x0c,0xbc,0x7a,0x62,0xbd,0x4b,0x44,0xf0,0x45,0x99,0x0a,0x1d, + 0x01,0xae,0x8e,0x4b,0x55,0x56,0xf9,0x57,0x26,0xb5,0x6c,0x6e,0x5e,0x0c,0x65,0x47, + 0x07,0xd2,0xbb,0x31,0x39,0xcd,0x59,0xbd,0x59,0xe0,0x65,0x5e,0x1a,0x65,0x78,0x45, + 0x6a,0x74,0x52,0xf9,0x23,0x52,0xcb,0xc0,0x1a,0x6c,0x88,0xbb,0xa3,0x5c,0xf5,0xe8, + 0x2a,0xed,0xcf,0xc3,0x9d,0x32,0x58,0x0e,0x11,0x49,0xfa,0x54,0xd0,0xeb,0x92,0x40, + 0xb9,0xc7,0x35,0x62,0x3f,0x13,0x96,0xf9,0x5e,0xb8,0x5e,0x3d,0xc9,0x9e,0xff,0x00, + 0xfa,0xa7,0x83,0x49,0xae,0x45,0xf7,0x23,0xc4,0xfc,0x41,0xf0,0x8a,0xd2,0x57,0x6f, + 0x2e,0x15,0xe7,0xdb,0x15,0xcc,0x59,0x7c,0x1c,0x85,0x26,0x04,0xc7,0xd4,0xf4,0xc6, + 0x6b,0xe9,0x9f,0xed,0x58,0x27,0xe5,0x88,0xf7,0xa8,0x66,0xd5,0x2d,0x20,0x1b,0xf8, + 0x15,0xea,0x61,0x73,0x7a,0x8a,0x36,0xe7,0x76,0x3e,0x2b,0x33,0xf0,0xa3,0x29,0xc4, + 0x56,0xf6,0xd2,0xc3,0xc6,0xfe,0x87,0x9e,0x69,0x7f,0x05,0x6d,0x2e,0xa0,0xc9,0x85, + 0x49,0xfa,0x73,0x5c,0x67,0x8b,0xbe,0x03,0xc9,0x67,0x1b,0x4d,0x6d,0x11,0x1d,0x48, + 0xc5,0x7d,0x43,0xe1,0xaf,0x15,0xd8,0x99,0x55,0x33,0xd4,0xe0,0xe7,0xa5,0x7b,0x3a, + 0xdb,0xe9,0xda,0xd5,0xa6,0xdc,0x2b,0x06,0x15,0xb4,0x33,0x8a,0x8a,0x77,0x8c,0x9d, + 0xcf,0x3b,0x1f,0xe1,0x4e,0x55,0x5e,0x8b,0xa7,0x3a,0x0a,0xde,0x87,0xe3,0x1e,0xbb, + 0xe1,0xad,0x47,0x44,0x9d,0xa3,0x9d,0x0e,0xd0,0x48,0xce,0x3a,0x62,0xb9,0xe0,0x4f, + 0x41,0x5f,0xa5,0x3f,0x14,0x7e,0x17,0x5a,0xdc,0xc1,0x2c,0xb1,0x46,0x08,0x20,0x9e, + 0x05,0x7e,0x7f,0x78,0x9f,0xc3,0xb3,0xe8,0x57,0xd2,0x44,0xca,0x42,0xe7,0x8a,0xfb, + 0x7c,0xa7,0x37,0x8e,0x25,0x72,0x4b,0xe2,0x3f,0x93,0xbc,0x46,0xf0,0xda,0xbe,0x43, + 0x55,0xd6,0xa0,0x9b,0xa4,0xff,0x00,0x03,0x9b,0xa7,0xfc,0xc4,0x54,0x6b,0xd3,0x15, + 0x28,0x07,0x39,0xcd,0x7b,0xc7,0xe4,0xa1,0xf7,0x47,0xad,0x34,0x83,0x8e,0x6a,0x5c, + 0x70,0x0f,0xe7,0x41,0x53,0x9c,0x7e,0xb4,0x01,0x09,0x0c,0x07,0x4e,0x29,0xbc,0xd4, + 0xc5,0x79,0xa6,0x6d,0x39,0xf6,0xfe,0x74,0x98,0x0c,0x39,0x3e,0xd4,0xfc,0x90,0x30, + 0x3e,0xb4,0x85,0x4f,0x6a,0x00,0x1d,0x33,0xcf,0xa5,0x34,0x03,0xc3,0x90,0x33,0x52, + 0x87,0x23,0xf1,0xaa,0xf8,0xec,0x69,0x79,0x53,0x40,0x17,0x56,0x42,0xa7,0xf9,0xd4, + 0x82,0x5c,0x0a,0xcf,0xdf,0xcf,0x4a,0x51,0x26,0x3a,0x53,0xb8,0x1a,0x26,0x52,0x3a, + 0x53,0x0c,0xbe,0x95,0x4b,0xcc,0x34,0x17,0xf7,0xe7,0xd6,0xaf,0x9c,0x0b,0x46,0x4c, + 0x73,0x50,0xbb,0xe4,0x75,0xa8,0x0b,0xe4,0xf5,0xeb,0x4d,0x2d,0xf8,0xd2,0xe6,0x7d, + 0xc0,0x73,0x37,0x6c,0xf6,0xa8,0x4f,0xaf,0xe9,0x46,0xe3,0x4d,0x39,0x3c,0xd4,0xdc, + 0x06,0x37,0xde,0xa8,0xdb,0xa5,0x48,0x57,0x39,0xe7,0x35,0x13,0x67,0xf3,0xa3,0xd4, + 0x06,0x72,0x31,0x47,0x34,0x11,0x9e,0x05,0x1c,0xd2,0x2a,0x2d,0x75,0x0c,0x9e,0x95, + 0x32,0x03,0x9e,0x9c,0x54,0x3d,0x78,0xa9,0x80,0xec,0x28,0x35,0xf3,0x2c,0xa3,0x1f, + 0xca,0xa5,0x05,0xbd,0x33,0x9a,0x85,0x4f,0x4f,0x6a,0x97,0x90,0x0f,0x6a,0xd2,0xf7, + 0x5a,0xb1,0x8f,0xa4,0x39,0xa6,0xee,0xa4,0x2c,0x7a,0xd5,0xdc,0x3a,0x8a,0x77,0x73, + 0x8a,0x6e,0x78,0xc7,0xe9,0x41,0x3c,0xf3,0x4c,0x3d,0x2b,0x39,0x7a,0x80,0xbb,0xb1, + 0xd2,0x9a,0x4f,0xbd,0x21,0x6a,0x84,0xb9,0xc1,0xf6,0xac,0xa4,0x64,0xe5,0xa9,0x31, + 0x6a,0x66,0xe2,0x7b,0x53,0x32,0xdd,0x3f,0xcf,0xf3,0xa6,0xe4,0xe3,0xfa,0xd4,0x90, + 0x3f,0x24,0x63,0xfa,0xd2,0x1e,0x95,0x1f,0x6c,0x0a,0x52,0xdd,0xba,0x8a,0xc5,0xbd, + 0x75,0x1d,0xc7,0x82,0x69,0xeb,0x9c,0x63,0x14,0xc0,0x3d,0x05,0x4c,0xab,0xcf,0xad, + 0x3d,0x47,0xb6,0xc4,0x8b,0xd0,0x66,0xa6,0x55,0x34,0x8a,0xb8,0xeb,0xd6,0xa6,0x03, + 0xff,0x00,0xd5,0x50,0xca,0x8b,0xbb,0x1a,0x01,0xc8,0x3d,0x69,0x4a,0x62,0xa6,0x55, + 0x3d,0xa9,0xfb,0x4f,0x42,0x40,0xa5,0xca,0x3e,0x6d,0x4f,0xff,0xd2,0xfc,0x45,0x04, + 0x1f,0xad,0x58,0x89,0x79,0xf5,0xcd,0x51,0x57,0x22,0xae,0xc0,0xc4,0x9c,0x7e,0x95, + 0xe3,0x34,0x47,0x31,0xd2,0xe9,0xd8,0xf3,0x00,0x1d,0x07,0x5a,0xf5,0x5d,0x14,0x61, + 0x14,0xfe,0x15,0xe5,0x9a,0x68,0xf9,0xc5,0x7a,0x76,0x99,0x28,0x48,0xc5,0x70,0x57, + 0x7c,0xb2,0xb2,0x2a,0x3e,0xf1,0xd5,0x49,0x2a,0xaa,0x8e,0xf8,0xac,0xb9,0xee,0x77, + 0x1c,0xe7,0xa5,0x36,0x4b,0x8d,0xdc,0x0e,0xf5,0x91,0x2c,0xd8,0x27,0x9a,0xca,0x9d, + 0x5b,0xe8,0x37,0x1b,0x12,0xb5,0xc1,0x24,0x93,0x9e,0x2b,0x1e,0xfe,0xe4,0xaa,0xed, + 0xce,0x2a,0x67,0x97,0x3c,0xf7,0x15,0x89,0x7f,0x36,0xe6,0xc0,0xfc,0x6b,0xae,0xed, + 0x22,0x6d,0x72,0xab,0xca,0x59,0xb0,0x49,0xab,0x16,0xea,0x3a,0xd5,0x05,0x52,0x71, + 0xea,0x78,0xad,0x58,0x14,0x85,0x07,0xbf,0xf8,0x56,0xf4,0x13,0x66,0x35,0x37,0x2f, + 0x0e,0x80,0x74,0x26,0x86,0xe8,0x73,0x48,0x32,0x7a,0x0c,0x7a,0x73,0x48,0xc0,0xf7, + 0x39,0xaf,0x52,0x9c,0x19,0x09,0x37,0xb1,0x59,0xf2,0x06,0x05,0x66,0x4b,0x92,0x0e, + 0xea,0xd2,0x95,0x4a,0xf4,0xac,0xc9,0x41,0xc6,0x0d,0x75,0x46,0x9f,0x73,0x75,0xd8, + 0xc7,0x9c,0x64,0x7b,0x76,0xac,0x6b,0x80,0x00,0x3f,0x95,0x6d,0xce,0x08,0xc9,0x15, + 0x87,0x70,0xbc,0x1c,0xf3,0x53,0x25,0xae,0x86,0x88,0xc7,0x9b,0xf9,0xd5,0x07,0x00, + 0x74,0xab,0xf3,0xe7,0xa6,0x7a,0x76,0xac,0xe9,0x57,0x9c,0x67,0xf2,0xac,0xdb,0x01, + 0x94,0xc3,0xcf,0x1d,0x29,0x0f,0x5e,0x69,0x29,0x00,0x67,0x8a,0x71,0xc6,0x33,0x8a, + 0x6d,0x2a,0xf5,0xe7,0x8f,0x6a,0x7e,0x60,0x6f,0xe8,0x76,0xde,0x6d,0xc0,0x27,0x9c, + 0x1a,0xfa,0x0f,0x40,0x41,0x6f,0x02,0x9c,0x62,0xbc,0x6b,0xc3,0x96,0xff,0x00,0x32, + 0x93,0xed,0x5e,0xc3,0x69,0x21,0x48,0x80,0x15,0xf1,0x7c,0x41,0x89,0xbc,0xb9,0x4f, + 0xea,0xef,0x04,0xf2,0x55,0x4a,0x8f,0xd6,0x24,0xb5,0x67,0x5a,0x2f,0x8b,0x9d,0xa0, + 0xe6,0xb6,0x2d,0xc4,0xdb,0x43,0x63,0x8a,0xcf,0xf0,0xf6,0x9a,0xd7,0x72,0xa9,0x3c, + 0xe7,0xf4,0xaf,0x53,0x7d,0x0d,0x2d,0xed,0x77,0xb0,0xc7,0x15,0xf1,0x73,0xa1,0x29, + 0xea,0x7f,0x54,0xe1,0x71,0x5c,0xa9,0x24,0x71,0x0b,0x7a,0x60,0x38,0x63,0x83,0x56, + 0x06,0xa6,0x18,0x63,0x27,0x9a,0xe6,0xf5,0x89,0x56,0x39,0x4a,0xa9,0xe7,0x35,0x97, + 0x1d,0xcb,0x8c,0x10,0x79,0xeb,0x58,0xb4,0xf9,0x6c,0x8f,0x56,0x96,0x21,0x37,0x76, + 0x7a,0x14,0x12,0xa3,0x60,0xe7,0x93,0xd6,0xb4,0x90,0x28,0x03,0x15,0xc0,0xdb,0x5f, + 0x90,0x46,0x4d,0x74,0xb6,0x97,0x9b,0x80,0xe7,0xe9,0x9a,0xe2,0xad,0x4d,0xee,0x7a, + 0xd4,0xeb,0x46,0x4a,0xc6,0xe1,0xe4,0x53,0x63,0xb6,0x69,0x64,0xda,0x9d,0x7a,0x52, + 0xc6,0xde,0x60,0xe3,0xad,0x74,0xba,0x4d,0xa6,0x5c,0x31,0x19,0xf5,0x35,0x95,0x3a, + 0x72,0x93,0xe5,0x47,0x3d,0x7a,0x8a,0x0a,0xec,0x7d,0xb7,0x86,0xe7,0x96,0x3d,0xe3, + 0x27,0xe9,0x5c,0xb6,0xbd,0xa2,0xdd,0xda,0xa9,0x38,0x6a,0xf7,0xbb,0x0b,0x8b,0x4b, + 0x78,0x47,0x99,0x85,0xe3,0xbd,0x73,0xda,0xf9,0xb4,0xbe,0x89,0x82,0x81,0xd3,0xb7, + 0x7a,0xf4,0xa3,0x84,0xe5,0xeb,0xa9,0xe7,0x7d,0x72,0x52,0x7b,0x1f,0x37,0xd9,0xea, + 0x33,0x59,0x5c,0x03,0xc8,0x39,0xe6,0xbe,0x81,0xf0,0x47,0x8c,0x58,0x05,0x8d,0x9f, + 0x8f,0xad,0x78,0xae,0xb7,0xa3,0xba,0x4e,0xce,0x83,0xad,0x37,0x46,0xba,0x9a,0xc6, + 0x75,0x1c,0x8c,0x1a,0x7e,0xce,0xce,0xec,0xd2,0x52,0x4d,0x1f,0x64,0x6a,0x0f,0x0e, + 0xab,0x66,0xd9,0xc1,0xc8,0xfa,0xd7,0xc6,0x7f,0x16,0x7c,0x0b,0x1d,0xc2,0xca,0xf1, + 0xc7,0xcf,0x24,0x1c,0x7e,0x35,0xf4,0x6f,0x86,0x35,0xe5,0xb8,0x89,0x63,0x76,0xed, + 0xdc,0xd4,0x7e,0x2a,0xd3,0xe1,0xbe,0xb6,0x72,0x40,0x39,0x53,0x5d,0x98,0x3c,0x54, + 0xa8,0xd5,0x4d,0x33,0xe3,0xf8,0xa3,0x87,0xa8,0x66,0x78,0x3a,0x94,0x2a,0xc2,0xe9, + 0xa3,0xf2,0x9e,0xfe,0xca,0x4b,0x0b,0xa7,0xb7,0x90,0x60,0xa9,0xa8,0x06,0x3b,0x73, + 0x8a,0xf6,0xdf,0x89,0xbe,0x17,0xfb,0x2d,0xc3,0x5c,0x46,0x98,0x39,0xe6,0xbc,0x6e, + 0x3b,0x69,0xa4,0x38,0x45,0x27,0xe8,0x2b,0xf5,0x8c,0x06,0x2a,0x35,0xa9,0x29,0xb6, + 0x7f,0x9d,0x3c,0x5f,0xc3,0xd5,0x32,0x6c,0xca,0xae,0x0e,0x6b,0x44,0xf4,0xf4,0x21, + 0xc9,0xe8,0x07,0x5a,0x90,0x60,0x9e,0x7d,0x2a,0xd4,0x96,0x17,0x11,0x2e,0xe6,0x53, + 0x8e,0xd5,0x5c,0x2f,0x24,0x1e,0xd5,0xde,0x94,0x5e,0xa9,0x9f,0x30,0x34,0x80,0x47, + 0x3d,0xa9,0x36,0x8e,0x38,0xa9,0x82,0x91,0xcf,0x6a,0x36,0xf7,0x1f,0x85,0x57,0x2a, + 0x60,0x41,0xb7,0xa0,0x1f,0x9d,0x47,0x8c,0x71,0xd2,0xae,0x6d,0xda,0x29,0xa5,0x0f, + 0xf1,0x1c,0xd4,0xf2,0x30,0x2a,0x10,0x08,0xa6,0xe0,0x0a,0xb2,0x50,0x0c,0xf3,0xd4, + 0xf1,0x4c,0x2b,0xe9,0x49,0xc5,0xa0,0x2b,0x9c,0x75,0xa6,0x67,0x9c,0x67,0x02,0xa6, + 0x2b,0xcf,0xd6,0xa1,0x39,0x23,0x9e,0xd5,0x20,0x21,0x62,0x39,0xed,0x49,0xb8,0xf7, + 0xa3,0x14,0xcd,0xc3,0xad,0x00,0x38,0x90,0x3a,0xf1,0x4d,0x63,0x82,0x30,0x69,0xb9, + 0x1d,0x71,0xfa,0xd2,0x50,0x04,0x84,0x8a,0x07,0x53,0xde,0xa3,0xc6,0x7a,0x53,0xc1, + 0x02,0x81,0x83,0xe3,0xd3,0x9a,0x89,0xba,0x53,0xce,0x05,0x44,0x4f,0x39,0xa6,0x21, + 0xbf,0x85,0x26,0x41,0x19,0x34,0xa7,0x9e,0xb4,0xce,0x71,0xc7,0x4a,0x40,0x3e,0xa5, + 0x53,0x81,0xc5,0x40,0x0e,0x3a,0x9a,0x91,0x4e,0x29,0x75,0x35,0xbd,0x91,0x68,0x13, + 0xd3,0xb7,0xa5,0x48,0x0e,0x39,0xf4,0xa8,0x41,0xc8,0x19,0xef,0x52,0x29,0xe8,0x3a, + 0x55,0xc5,0xd8,0xa8,0xbb,0xa1,0xc7,0xaf,0x19,0xa4,0x2d,0x8a,0x69,0x38,0xe8,0x78, + 0xa4,0xcf,0x4a,0x4d,0x8a,0x4d,0x06,0xe3,0x4c,0x2d,0x9f,0xad,0x0d,0xd3,0xeb,0xe9, + 0x51,0x96,0xe3,0x34,0x88,0x72,0x7d,0x18,0x16,0xc5,0x43,0x91,0xd6,0x95,0x9a,0xa3, + 0xcd,0x45,0x89,0xbf,0x71,0xe0,0xe6,0x94,0x9c,0x71,0x51,0x52,0x9c,0x9a,0x4d,0x01, + 0x26,0x7a,0xd2,0x82,0x39,0xf5,0xa6,0xa9,0x27,0x93,0x4f,0x03,0x3c,0xf5,0xf6,0xac, + 0xf9,0x6c,0xf4,0x11,0x20,0x07,0x38,0x1f,0x85,0x59,0x51,0xc0,0x3d,0xea,0x14,0x19, + 0xe9,0xf8,0x55,0xb4,0x53,0x81,0x8a,0xbb,0x77,0x02,0x45,0x15,0x69,0x01,0x27,0x9f, + 0xe5,0x51,0xae,0x09,0xab,0x6b,0x91,0xd2,0xa3,0x93,0x52,0xf9,0xac,0xac,0xc4,0x54, + 0xc7,0x51,0xf8,0xd3,0xf6,0x54,0xc8,0x06,0x39,0xa0,0x8c,0xfe,0x35,0xa2,0x44,0xdd, + 0x1f,0xff,0xd3,0xfc,0x3c,0x1c,0x1a,0xb5,0x11,0xda,0x7a,0x8a,0xa3,0x91,0x9c,0x13, + 0xd7,0xf0,0xa9,0xa3,0x71,0x9c,0x0a,0xf2,0x0e,0x79,0x26,0x75,0xfa,0x74,0xbb,0x5c, + 0x03,0xd6,0xbb,0xfb,0x09,0xc6,0xdf,0x5c,0x57,0x98,0x59,0xb8,0xc8,0x3f,0x85,0x77, + 0x76,0x13,0xfc,0x81,0x4e,0x6b,0x83,0x12,0xb5,0x36,0xa3,0x23,0xa7,0x69,0x4f,0x5a, + 0xcc,0x9e,0x7f,0x98,0xe7,0xa5,0x06,0x53,0x8c,0x0a,0xcd,0x9a,0x5e,0xa7,0xb7,0xd6, + 0xb9,0xe9,0x53,0xbc,0x8d,0xaa,0x3d,0x07,0xc9,0x71,0x8f,0xe7,0x59,0x4e,0xfb,0xc9, + 0x63,0x8c,0x9a,0x86,0x69,0x42,0x93,0xcf,0x5e,0xd5,0x5e,0x37,0x32,0x1e,0x3b,0x1a, + 0xec,0xe5,0x6e,0x4a,0x26,0x37,0x34,0xe1,0x52,0xcd,0xd3,0x8a,0xd7,0x8e,0x31,0xb7, + 0x3d,0x3d,0x3d,0xaa,0x95,0xac,0x64,0x00,0x3a,0x7b,0xfa,0xd6,0xa0,0x52,0x71,0xe9, + 0xfe,0x15,0xec,0xe1,0xe8,0xe8,0x88,0xe5,0xbb,0x05,0x4e,0x07,0xb7,0x4a,0x56,0xc0, + 0xed,0x4f,0xc7,0x4f,0xe5,0x4d,0x6c,0x81,0xc7,0x43,0x5e,0x94,0x62,0x90,0xd2,0xb6, + 0xc5,0x29,0x09,0x03,0xfc,0xf4,0xac,0xb9,0xb2,0x4e,0x08,0xad,0x59,0xbf,0xc8,0xac, + 0xa9,0xce,0x46,0x28,0x93,0x43,0xb1,0x91,0x3e,0x6b,0x16,0x65,0xc9,0xc7,0x7a,0xdc, + 0x9b,0xa1,0xf7,0xe2,0xb1,0x2e,0x17,0x1f,0x85,0x61,0x27,0xa9,0x68,0xc6,0x98,0x70, + 0x49,0xac,0xd9,0x0d,0x69,0xcc,0x07,0x5a,0xcb,0x94,0x60,0xe0,0x1a,0xca,0x40,0x56, + 0xe3,0x27,0xb8,0xa0,0xe3,0xb5,0x21,0x07,0x38,0xe9,0x8a,0x50,0xa4,0xf4,0xfc,0xe8, + 0xb8,0x01,0xc7,0x6a,0x92,0x30,0x0b,0x0c,0x8e,0xf4,0xdd,0xa4,0x0c,0x9c,0x7d,0x2a, + 0x48,0xb8,0x65,0xfa,0xd2,0x6f,0x42,0xe9,0xfc,0x49,0x1e,0x97,0xe1,0xb8,0xc0,0x55, + 0x22,0xbd,0x2e,0xdd,0x73,0xb5,0x4f,0x35,0xe7,0x1e,0x1e,0x38,0xc7,0xa8,0xaf,0x47, + 0xb4,0x3c,0xae,0x2b,0xf3,0xcc,0xe6,0x57,0xac,0xee,0x7f,0x70,0xf8,0x5f,0x08,0xc7, + 0x2c,0x82,0x47,0xb3,0xf8,0x26,0x34,0xf3,0x14,0x1c,0x64,0xd7,0xb2,0x6a,0x76,0x0d, + 0x3e,0x9f,0x88,0x86,0xec,0xae,0x32,0x2b,0xe7,0xad,0x03,0x51,0xfb,0x1c,0xaa,0xd9, + 0x38,0xe3,0x8a,0xfa,0x37,0xc3,0xfa,0xcd,0xa5,0xdd,0xa7,0x96,0xec,0x36,0xb0,0xe7, + 0x9a,0xf1,0x67,0x59,0x28,0xf2,0x1f,0xb1,0x45,0xfb,0xaa,0x47,0xca,0x5a,0xf5,0xad, + 0xcd,0x9e,0xa1,0x22,0x4f,0x9c,0x12,0x71,0x9e,0x38,0xac,0x94,0x7c,0xd7,0xb5,0x7c, + 0x49,0xd2,0xe0,0x6d,0xd3,0x42,0x39,0xed,0x8a,0xf0,0xf8,0x11,0xe4,0x71,0x1a,0x75, + 0x3c,0x57,0x2d,0x36,0xdc,0x6c,0xf7,0x37,0x85,0x6b,0x33,0x4a,0x37,0x3d,0x73,0x83, + 0x5b,0x56,0x57,0x2d,0x90,0xb4,0xeb,0x4f,0x0d,0x5d,0xcc,0x9b,0xd4,0x13,0xe9,0x4e, + 0x1a,0x45,0xe5,0xa3,0xf2,0xa7,0x19,0xf4,0xa5,0x52,0x9e,0x8b,0x99,0x58,0xf5,0x68, + 0x62,0x8f,0x44,0xd0,0x94,0x4e,0xc9,0x9e,0x6b,0xd6,0xac,0x6c,0x63,0x58,0x83,0x0c, + 0x63,0x15,0xe4,0x9e,0x1b,0x56,0x4c,0x66,0xbd,0x46,0x0d,0x47,0xca,0x40,0xb9,0xe2, + 0xbd,0x0c,0x16,0x1a,0x11,0x8f,0x3b,0x5a,0x9c,0x18,0xdc,0x74,0xa7,0x2b,0x5f,0x41, + 0x9a,0x9c,0x12,0x2e,0x4a,0x93,0xed,0x5c,0xf2,0xcd,0x22,0x92,0xaf,0xd4,0x56,0xfc, + 0xda,0x94,0x72,0x9d,0x84,0xf5,0xe9,0x58,0xf3,0xc6,0x18,0xee,0x4e,0xb5,0xcb,0x89, + 0x8d,0xa7,0x74,0x76,0xe1,0x55,0xe0,0x8a,0xb3,0xda,0xc5,0x70,0xb9,0x7a,0xe0,0x75, + 0x4b,0x41,0x0c,0x85,0xd0,0x63,0x1d,0x2b,0xb5,0x9e,0x77,0x44,0x3e,0xdd,0x6b,0x8b, + 0xd4,0x66,0x32,0x31,0xcf,0x7e,0x94,0xe3,0x52,0x2d,0x59,0xa0,0x9c,0x65,0x16,0x59, + 0xd0,0xf5,0xa7,0xb6,0x94,0x21,0x6c,0x63,0x8e,0x6b,0xd6,0xad,0xf5,0x31,0x7b,0x6d, + 0xb4,0x9c,0xe4,0x57,0xce,0x2d,0x33,0x45,0x36,0xe5,0xe9,0xe9,0x5e,0x81,0xe1,0xfd, + 0x5c,0x8d,0xaa,0x49,0xe6,0xb8,0xea,0x7b,0xaf,0x43,0x54,0xd3,0x89,0x5f,0xc6,0x3e, + 0x13,0x3a,0xd0,0x68,0xd5,0x78,0x6e,0xbc,0x57,0x99,0x59,0xfc,0x31,0x96,0xdc,0xb2, + 0x88,0xbb,0xf5,0xc5,0x7d,0x5d,0xa7,0x24,0x17,0x48,0xbb,0x86,0x49,0xf5,0xf7,0xae, + 0x85,0xb4,0x8b,0x44,0x88,0x92,0xa3,0x38,0xeb,0x5d,0xb8,0x3c,0xf6,0xad,0x24,0xe0, + 0x9e,0x87,0xf1,0xef,0x8e,0xf9,0x44,0x25,0x89,0x86,0x22,0x31,0xd4,0xf8,0x57,0xc4, + 0x7e,0x0d,0xfe,0xcf,0x84,0x9d,0xbc,0x01,0xdc,0x57,0x85,0xea,0x36,0xe9,0x0d,0xd3, + 0x22,0xf4,0xaf,0xb2,0xfe,0x2a,0xde,0xd8,0x69,0xf1,0x3c,0x6a,0xc0,0xb6,0x08,0xc0, + 0xe6,0xbe,0x2c,0xbd,0x9b,0xce,0xba,0x91,0x8f,0x27,0x35,0xfa,0x37,0x0e,0x62,0xaa, + 0x62,0x29,0xb9,0xcb,0x63,0xf9,0x93,0x13,0x05,0x17,0x64,0x45,0xdb,0x9a,0x76,0x38, + 0xa8,0xd4,0x9c,0x71,0xcf,0xe9,0x4f,0xfa,0x57,0xd3,0x1c,0xe4,0x98,0x04,0x9a,0x69, + 0x5f,0xca,0x90,0x1e,0x72,0x69,0xd9,0xed,0xd7,0x34,0x01,0x19,0x5e,0xc6,0xa3,0x23, + 0x93,0x53,0x12,0x71,0x51,0x9c,0x7e,0x34,0x3d,0x80,0xae,0xca,0x0d,0x40,0xc3,0x8c, + 0x91,0xf4,0xab,0x2d,0xd4,0x9a,0xac,0xfc,0x8c,0xd6,0x73,0xb0,0x10,0x30,0xcf,0xe3, + 0x51,0x90,0x09,0xa9,0x8e,0x7b,0x54,0x44,0x67,0xf1,0xa8,0x60,0x47,0x83,0x49,0x8e, + 0xb4,0xed,0xbd,0x68,0xc7,0xa0,0xe2,0x90,0x06,0x38,0xf7,0xa3,0x07,0xa8,0xa4,0x00, + 0x9f,0x7c,0xfb,0xd2,0x91,0x80,0x29,0xa6,0x02,0x1e,0xb9,0x34,0xc6,0xe3,0xfa,0xd3, + 0x8f,0x1d,0x06,0x6a,0x33,0xcf,0x7f,0xc2,0x85,0x6e,0xa0,0x47,0xcf,0x51,0xf9,0x51, + 0x90,0x71,0x41,0x07,0xeb,0xef,0x4c,0xa1,0xf9,0x0c,0x50,0x70,0x0e,0x79,0xa7,0xab, + 0x1c,0x71,0x51,0xf0,0x07,0xb5,0x28,0xe3,0xbf,0x15,0x37,0x29,0x68,0xac,0x5c,0x52, + 0x7a,0x7f,0x9c,0xd3,0xea,0xb2,0xf5,0xff,0x00,0xeb,0xd4,0xbc,0x75,0xfd,0x28,0xb8, + 0xde,0x9a,0x22,0x4a,0x4c,0x8a,0x60,0xc8,0x1c,0x53,0x7a,0x8e,0x38,0xa7,0x71,0x37, + 0xd1,0x8e,0x27,0xa9,0xed,0x50,0x1c,0xe3,0xd8,0x53,0xdb,0x07,0x18,0xa8,0x9b,0x3f, + 0x81,0xa0,0x80,0x63,0xc5,0x44,0x4e,0x7e,0x5a,0x53,0xc9,0xe7,0x1c,0xfe,0xb5,0x1e, + 0x3a,0x67,0x8a,0x06,0x98,0xf5,0xc9,0x1c,0xd3,0xf8,0xc0,0xa6,0xa8,0x27,0xa7,0xe5, + 0x4e,0x1e,0xfc,0xe6,0xa5,0xd8,0x44,0x9d,0xb9,0xe2,0xb5,0x6c,0x74,0xe9,0xef,0x58, + 0x24,0x4b,0x9f,0xa5,0x66,0x22,0xe7,0xaf,0x5a,0xfa,0x67,0xe0,0xff,0x00,0x83,0x06, + 0xb3,0x24,0x65,0xd3,0x39,0x23,0xb7,0xad,0x78,0xd9,0xde,0x6d,0x4f,0x2f,0xc3,0x3a, + 0xf3,0x67,0x76,0x5d,0x82,0x96,0x2a,0xb2,0xa5,0x13,0xc8,0x1f,0xc1,0xba,0xca,0xc3, + 0xe7,0xc7,0x0b,0x30,0x03,0xd2,0xb9,0xf3,0x1b,0xc4,0xe5,0x64,0x05,0x58,0x71,0xf4, + 0xaf,0xd9,0x8f,0x0b,0xfc,0x0d,0xb1,0xbd,0xd3,0x14,0x49,0x02,0x93,0xb7,0x9e,0x2b, + 0xe5,0x5f,0x8d,0x9f,0xb3,0x8d,0xc6,0x9b,0x24,0xfa,0x8e,0x93,0x09,0x56,0x5c,0x92, + 0x00,0xc0,0x3e,0xd5,0xf9,0xbe,0x49,0xe2,0xd6,0x03,0x13,0x8b,0xfa,0xae,0x21,0xda, + 0xfb,0x33,0xe9,0xf3,0x0e,0x0e,0xaf,0x4a,0x8f,0xb5,0xa3,0xad,0xba,0x1f,0x09,0xae, + 0x73,0x56,0x57,0x8e,0x79,0x34,0xeb,0xab,0x2b,0x8b,0x0b,0x97,0xb6,0xb9,0x42,0x92, + 0x46,0x70,0xc0,0xf0,0x45,0x44,0xa7,0xb5,0x7e,0xc1,0x0a,0x91,0x9a,0x52,0x8b,0xba, + 0x67,0xc6,0x4a,0x2e,0x2e,0xd2,0xdc,0xb2,0xac,0x7a,0xd2,0x93,0x9c,0xf3,0x51,0xe7, + 0xb1,0x1c,0xd0,0x7f,0xfd,0x75,0xa2,0xb7,0x52,0x4f,0xff,0xd4,0xfc,0x2f,0x2f,0x93, + 0x53,0x44,0x73,0x8a,0xa7,0x8e,0xf8,0xe6,0xac,0x42,0x3e,0x60,0x3d,0x6b,0xcf,0x9c, + 0x15,0xae,0x63,0x28,0xdc,0xea,0x34,0xe1,0x9c,0x73,0x5d,0xb5,0x9a,0x9c,0x03,0x5c, + 0xa6,0x93,0x11,0x2a,0x0d,0x76,0xd6,0xd1,0xed,0x51,0xf9,0x9a,0xf2,0xf1,0x05,0xc5, + 0x13,0x33,0x1c,0x66,0xb2,0xae,0x66,0x03,0xa5,0x68,0x5c,0x7c,0xa9,0x93,0x5c,0xed, + 0xd4,0xb8,0x24,0xe3,0xeb,0xcd,0x69,0x85,0xa6,0xac,0xd9,0x4d,0x14,0xe6,0x95,0x8b, + 0x6d,0x07,0x15,0x7a,0xd1,0x39,0x18,0x1f,0x5a,0xca,0x8f,0xe7,0x93,0xd4,0x7e,0x75, + 0xd1,0x59,0x2e,0x3a,0xfe,0x15,0xd5,0x4e,0x0b,0x98,0x96,0x6e,0x5b,0x81,0xb4,0x70, + 0x07,0xf9,0xef,0x56,0x41,0xe7,0x9e,0x7f,0x4a,0xac,0xa5,0x57,0x1d,0xf1,0xf9,0x52, + 0x6f,0xe7,0xae,0x6b,0xd8,0xa5,0x68,0xad,0x58,0x16,0xcb,0x0c,0xf5,0xcf,0xf5,0xa8, + 0x4b,0x92,0x7a,0xf4,0xa4,0x39,0x61,0xcf,0x02,0x98,0x54,0x8c,0xe3,0xae,0x28,0x75, + 0x93,0x76,0x44,0x39,0x2d,0x8a,0xf2,0x37,0x35,0x9f,0x2e,0x39,0xab,0xd2,0x06,0x39, + 0x3d,0x6a,0x94,0xaa,0xd8,0xc7,0x73,0x52,0x52,0x32,0xa7,0x3d,0x47,0xf9,0x35,0x91, + 0x30,0x38,0x27,0x06,0xba,0x65,0xb4,0x2f,0xce,0x33,0x4a,0x74,0xb6,0x93,0x9d,0xbc, + 0x54,0xca,0x69,0x6e,0x3e,0x74,0xba,0x9e,0x7f,0x70,0x87,0xb0,0xac,0xf6,0xb6,0x99, + 0xcf,0x03,0x8e,0x95,0xea,0x1f,0xf0,0x8f,0xb3,0x9c,0x04,0x27,0xd2,0xac,0xc7,0xe1, + 0x9c,0x7c,0xce,0xb8,0xae,0x5a,0xb8,0xb8,0xc7,0x41,0xa9,0x1e,0x53,0x16,0x9a,0xef, + 0x9d,0xc3,0xeb,0x56,0x5a,0xc7,0x62,0xe0,0x76,0xaf,0x4c,0x9b,0x49,0x8e,0x20,0x46, + 0x30,0x3d,0xeb,0x9c,0xbd,0x80,0x46,0x08,0x1c,0x11,0x5c,0xbf,0x59,0x72,0x7b,0x94, + 0xe2,0xec,0x71,0x32,0x44,0x10,0x8e,0x9f,0x95,0x55,0x43,0x89,0x00,0x26,0xb4,0x6e, + 0xce,0xd3,0xd4,0x56,0x4a,0xb9,0x32,0x03,0xd8,0x1a,0xec,0xa7,0x77,0x16,0xc7,0x4b, + 0xe2,0x47,0xa6,0xf8,0x79,0xb0,0xa3,0xf3,0xaf,0x4f,0xb4,0xc1,0x0a,0x7b,0x75,0xcd, + 0x79,0x2f,0x87,0xe6,0x39,0x51,0xdf,0x3f,0xa5,0x7a,0xe6,0x9c,0x37,0x05,0x35,0xf0, + 0x79,0xba,0xb5,0x56,0xcf,0xed,0xcf,0x0b,0x6b,0xaa,0x99,0x7c,0x20,0x8e,0x92,0xdf, + 0x72,0xa8,0xc7,0x6a,0xec,0xb4,0x5d,0x66,0x7b,0x63,0xb7,0x77,0x1e,0xdf,0xe3,0x5c, + 0xac,0x0b,0xc0,0xad,0x6b,0x78,0x81,0x61,0xb6,0xbe,0x71,0xd4,0x5c,0xc7,0xee,0x54, + 0xf0,0xcd,0xc3,0x73,0xa2,0xd7,0x75,0x27,0xbd,0xb6,0x3b,0x8e,0x78,0xc5,0x71,0xde, + 0x1e,0xd3,0x44,0xb7,0xff,0x00,0x30,0xfb,0xcd,0x5d,0x6c,0x56,0x0f,0x70,0xbb,0x71, + 0x91,0xe9,0x5d,0x1e,0x8f,0xa2,0x08,0x24,0x0e,0x57,0x15,0xdd,0x42,0x2a,0x72,0x4e, + 0xc7,0x35,0x5a,0x52,0x8b,0xb2,0x67,0xa9,0xe8,0x1a,0x1d,0xa7,0xd8,0xd4,0xb8,0x00, + 0xe3,0xa5,0x17,0xbe,0x14,0xb6,0xb9,0x72,0xe8,0xa3,0x9e,0x9c,0x55,0x28,0x75,0x0f, + 0xb3,0x2a,0xa0,0x38,0x00,0x76,0xe2,0xb5,0xed,0x75,0xf4,0x38,0x0e,0x46,0x07,0x39, + 0xaf,0x5f,0x11,0x0a,0x75,0x20,0x95,0x8c,0xe9,0x39,0xc2,0x57,0x6c,0xe7,0x1b,0xc2, + 0xef,0x6a,0x77,0x20,0xc6,0x0f,0xa5,0x66,0xde,0x47,0x73,0x10,0x61,0x8c,0xe0,0x7f, + 0x2a,0xf5,0x51,0xaa,0x5a,0xcc,0x9b,0x49,0x04,0x9f,0x7a,0xc4,0xbf,0xb6,0xb5,0xb9, + 0x53,0x8c,0x03,0x5e,0x67,0x2c,0xe9,0xad,0x19,0xd5,0x28,0xa9,0xea,0x78,0xe4,0x97, + 0xef,0x1c,0x98,0x27,0x15,0xbb,0x65,0x78,0x26,0x50,0xbd,0x4d,0x45,0xae,0xe8,0xb8, + 0xcb,0xa0,0xce,0x3a,0x57,0x27,0x6b,0x3c,0xd6,0x92,0xec,0x63,0xc0,0x35,0xc7,0x2b, + 0xb7,0xb1,0xd7,0x87,0xa9,0xc9,0xa1,0xd9,0x5e,0x40,0x1c,0x16,0x1e,0xff,0x00,0x85, + 0x79,0xfe,0xa4,0xa6,0x36,0x21,0xba,0x7a,0xd7,0x77,0x15,0xc2,0xcd,0x16,0xec,0xe6, + 0xb9,0x2d,0x69,0x07,0x20,0x77,0xe6,0xb3,0xf6,0x76,0x67,0x55,0x6a,0x89,0xa3,0x84, + 0xba,0x27,0x39,0xe3,0x35,0x73,0x4c,0xbc,0x31,0xc8,0xbc,0xd6,0x65,0xdb,0x61,0x8a, + 0xf3,0x55,0xa0,0x90,0xa3,0xf5,0x35,0x35,0x23,0x7d,0x4e,0x78,0x55,0xb1,0xef,0xba, + 0x16,0xb1,0xb1,0x17,0x2d,0xd3,0xfa,0x56,0xa6,0xbd,0xe3,0x34,0xb3,0xb1,0x73,0xbf, + 0x07,0x07,0xa5,0x79,0x5e,0x97,0x78,0x44,0x63,0x9f,0xc2,0xb0,0x7c,0x57,0x74,0x5a, + 0xd5,0xb7,0x37,0x6f,0x5a,0xe5,0xa5,0x81,0x55,0x2a,0xa3,0xf1,0xaf,0x17,0xb2,0x88, + 0xe2,0x72,0xe9,0xd4,0x4b,0x54,0x79,0x1f,0x8e,0x7c,0x47,0x26,0xa1,0x2c,0x92,0xbb, + 0xe7,0x24,0x90,0x0f,0x6a,0xf1,0x96,0x93,0x73,0x17,0x27,0xad,0x6e,0xf8,0x82,0xeb, + 0x32,0x32,0x13,0xd4,0xd7,0x2a,0x1b,0xb1,0xfa,0xe6,0xbf,0x62,0xca,0x30,0xea,0x8d, + 0x05,0x14,0x7f,0x07,0xd5,0x6f,0x99,0xdc,0xbe,0xaf,0xc5,0x48,0x1f,0xa0,0xcf,0x4a, + 0xa0,0x1b,0xf1,0xfc,0x69,0xe1,0xbb,0xd7,0xab,0x19,0x77,0x33,0x2f,0xee,0xe3,0xaf, + 0x3e,0xf4,0xec,0x8e,0xbe,0x95,0x48,0x39,0x1c,0xd4,0x8a,0xc4,0xf4,0xe4,0x9a,0x7c, + 0xc8,0x2c,0x4e,0x4e,0x46,0x33,0x9a,0x6b,0x11,0xdc,0xd6,0xe6,0x99,0xe1,0xfd,0x43, + 0x54,0x20,0x40,0x84,0xe4,0xf1,0x80,0x79,0xab,0xfa,0x9f,0x81,0xfc,0x43,0xa7,0x01, + 0x23,0xda,0xc8,0xc8,0x7b,0x85,0x35,0x4f,0x6e,0x6e,0x87,0x44,0x70,0x95,0x9c,0x79, + 0x94,0x1d,0x8e,0x45,0x88,0xc7,0x18,0xaa,0xc7,0xa1,0xab,0xb7,0x16,0x77,0x76,0xff, + 0x00,0x2c,0xd1,0x3a,0x1e,0xe0,0x8c,0x56,0x7b,0x0c,0x1c,0x54,0x39,0xa6,0xb4,0x66, + 0x32,0x84,0xa3,0xf1,0x22,0x32,0x7b,0x7e,0x94,0xc3,0x8e,0xc3,0x14,0xe2,0x46,0x29, + 0xb8,0x3d,0xbb,0xd6,0x6d,0x92,0x07,0xda,0x93,0xa8,0xc8,0x3d,0x6a,0xd4,0x56,0x57, + 0x37,0x04,0x08,0x91,0xb9,0xe9,0x5d,0x2d,0x87,0x84,0x75,0x0b,0xb2,0x32,0x84,0x67, + 0xb6,0x0d,0x2b,0xa3,0xb2,0x86,0x03,0x11,0x59,0xfe,0xee,0x0d,0x9c,0x76,0x31,0x4b, + 0xce,0x31,0xde,0xbd,0x70,0x7c,0x37,0xd4,0x24,0x80,0xc8,0xb1,0x37,0x4e,0xe2,0xb8, + 0x0d,0x57,0xc3,0xda,0x8e,0x9b,0x31,0x8e,0x68,0x9b,0x68,0x3c,0x11,0xe9,0x57,0x28, + 0x4a,0x3b,0xa3,0x7c,0x4e,0x4f,0x8b,0xa1,0x1e,0x6a,0x94,0xdd,0x8c,0x12,0x72,0x3a, + 0xd4,0x0c,0x30,0x71,0xda,0xb7,0xac,0xb4,0x4d,0x43,0x50,0x7d,0x96,0xd0,0xb3,0x12, + 0x71,0xd2,0xa6,0xbf,0xf0,0xa6,0xb7,0xa7,0x27,0x9b,0x75,0x6b,0x22,0xae,0x3a,0x90, + 0x71,0x4a,0xcc,0xe1,0x54,0x2a,0x35,0x7e,0x56,0x73,0x18,0xe7,0x8a,0x8c,0xf3,0xd6, + 0xa7,0x74,0x2b,0xc3,0x0c,0x1e,0xe2,0xa3,0xdb,0xfa,0xd0,0x67,0x66,0x33,0xeb,0xde, + 0x94,0x1c,0x1a,0x5d,0xa4,0xfb,0x50,0x17,0x9e,0x6a,0x19,0x71,0xee,0x4a,0x32,0x39, + 0xa7,0x8f,0x4c,0xd3,0x10,0x54,0x80,0x73,0xc5,0x48,0x34,0xf6,0x48,0x39,0xa6,0x67, + 0x23,0x3f,0x95,0x3b,0x69,0x03,0xa6,0x3e,0xb4,0xc2,0x39,0xc0,0xaa,0xb9,0x2e,0x2d, + 0x0d,0x35,0x19,0xe6,0xa4,0x23,0x3d,0x2a,0x2e,0x7b,0x51,0xa0,0x72,0xb1,0x08,0x1d, + 0x4f,0x6a,0x41,0xf3,0x1f,0xe9,0x4b,0xdb,0x1d,0x69,0x51,0x77,0x10,0x07,0x53,0xe9, + 0x43,0x7e,0x61,0xb6,0xe3,0xe2,0x89,0xa4,0x3b,0x10,0x12,0x7e,0x95,0xad,0x1e,0x8d, + 0xa9,0x48,0xbb,0x92,0xdd,0xca,0xf5,0xe1,0x6b,0xd8,0xbe,0x15,0xfc,0x38,0xba,0xf1, + 0x1d,0xd4,0x6c,0xd1,0x92,0xac,0x41,0x3c,0x57,0xe9,0xaf,0x80,0xbf,0x66,0x8b,0x3b, + 0xad,0x31,0x0c,0xb6,0xc0,0xb3,0x0e,0xeb,0x5f,0x9a,0xf1,0x4f,0x88,0xb8,0x4c,0xa2, + 0xa7,0xb2,0x6b,0x99,0x9f,0x4d,0x95,0x70,0xcd,0x6c,0x64,0x7d,0xa3,0x76,0x47,0xe3, + 0x96,0x9f,0xa3,0xdd,0xcb,0x77,0x1c,0x12,0x44,0xca,0x59,0x87,0x04,0x1a,0xfd,0x24, + 0xfd,0x9d,0xbc,0x1c,0xf1,0xf9,0x0e,0xf1,0xf5,0xc1,0x39,0x15,0xed,0x3a,0xff,0x00, + 0xec,0xb3,0x63,0x65,0x2f,0xda,0xd2,0xdc,0x06,0xdd,0x91,0x85,0xaf,0x67,0xf8,0x4f, + 0xf0,0xf0,0x68,0xe5,0x13,0xcb,0xfb,0x84,0x0e,0x98,0xe9,0x5f,0x90,0x71,0xdf,0x89, + 0xb8,0x7c,0xcb,0x01,0xec,0xa8,0x2b,0x1f,0x67,0xc3,0xdc,0x2f,0x2c,0x25,0x77,0x52, + 0x6e,0xe7,0xd2,0x7e,0x0d,0xd0,0xe0,0x8b,0x4e,0x42,0x50,0x03,0xb6,0xb1,0xfc,0x6d, + 0xe0,0x3b,0x4d,0x62,0xce,0x54,0x31,0x06,0x2c,0x0f,0x6a,0xf4,0xcd,0x36,0x01,0x6b, + 0x02,0x20,0xed,0x5b,0x0f,0x12,0x4e,0x98,0x61,0xc1,0xaf,0xe6,0x9f,0xaf,0xd4,0x8d, + 0x6f,0x69,0x07,0xa9,0xfa,0x24,0xe1,0x1b,0x72,0xc9,0x68,0x7e,0x18,0xfe,0xd1,0x5f, + 0xb3,0xfc,0xf6,0x53,0x4d,0xac,0x69,0x30,0x6d,0x74,0xc9,0x60,0x07,0xde,0x1f,0x85, + 0x7c,0x0d,0x3d,0xbc,0xd6,0xb3,0x3c,0x33,0xab,0x23,0xa1,0x20,0xa9,0x1d,0xeb,0xfa, + 0x60,0xf8,0x8b,0xe0,0x3b,0x3d,0x6e,0xc6,0x60,0x63,0x0d,0x90,0x7b,0x66,0xbf,0x1a, + 0xbe,0x3f,0x7c,0x0b,0xd4,0x34,0xdd,0x5d,0xf5,0x0d,0x1e,0xdd,0xb6,0xbb,0x7c,0xe0, + 0x0e,0xd9,0xeb,0x5f,0xd5,0xde,0x13,0x78,0x9a,0xaa,0xc2,0x39,0x6e,0x61,0x3f,0x46, + 0xff,0x00,0x23,0xf2,0xfe,0x2c,0xe1,0x8d,0x5e,0x2b,0x0c,0xbd,0x51,0xf1,0x80,0x6c, + 0xd3,0x89,0xcd,0x7b,0x36,0x93,0xf0,0x53,0xc4,0xda,0x86,0x09,0x89,0x95,0x4f,0xb5, + 0x7a,0xce,0x83,0xfb,0x33,0xea,0x77,0x0c,0xa6,0xe1,0x59,0xb3,0xd4,0x60,0xd7,0xec, + 0x98,0xee,0x39,0xc9,0xf0,0x97,0xf6,0x95,0xd3,0xb7,0x63,0xe2,0xe8,0x70,0xf6,0x3a, + 0xb3,0xf7,0x69,0x9f,0xff,0xd5,0xfc,0x2c,0xc7,0x61,0x56,0xed,0x94,0xb3,0x80,0x05, + 0x35,0x62,0x24,0xe7,0x06,0xb6,0x74,0xdb,0x52,0xf2,0x83,0x8e,0xfc,0x57,0x15,0x59, + 0xa5,0x1d,0x48,0xd0,0xea,0xf4,0x98,0x0e,0x06,0x47,0x5a,0xed,0x22,0x87,0x0b,0xcf, + 0x15,0x9b,0xa6,0xd9,0x10,0xa3,0x23,0x1f,0x4a,0xe8,0x76,0x00,0x0d,0x78,0x35,0x6a, + 0x5d,0xe8,0x6b,0x18,0xf5,0x39,0xeb,0xe3,0xc1,0xef,0x5c,0x95,0xce,0x49,0x24,0xf7, + 0xae,0xce,0xf6,0x2c,0xee,0xc7,0x27,0xa5,0x73,0xf2,0xda,0xfa,0x83,0xf4,0xae,0x8a, + 0x35,0xa3,0x18,0x58,0x52,0xdd,0x99,0x36,0xeb,0xb7,0xaf,0xe5,0x5d,0x05,0xb6,0x7a, + 0x8e,0xff,0x00,0xd2,0xa8,0xad,0xa9,0x1d,0x06,0x6b,0x5a,0xd2,0x12,0x47,0x03,0xa5, + 0x74,0x53,0xc4,0x25,0x7b,0x98,0xc9,0xd8,0x98,0x96,0x62,0x17,0xfc,0x9a,0x96,0x35, + 0x07,0x92,0x3f,0xfa,0xd5,0x61,0x6d,0xf9,0x04,0xe7,0x03,0x8a,0x93,0x62,0xaf,0x34, + 0xe7,0x98,0x59,0x5a,0xe6,0x4e,0x4c,0x55,0xf4,0xa9,0xd6,0x2d,0xdd,0xaa,0x38,0x8e, + 0xe9,0x30,0x06,0x05,0x6c,0x5b,0xc6,0x87,0x93,0xfc,0xaa,0x29,0xe2,0xdb,0x33,0xb9, + 0x8c,0xd6,0xd9,0x3f,0x2d,0x46,0x2c,0x58,0xfd,0x6b,0xa9,0x10,0x27,0x07,0xbf,0xb5, + 0x39,0x62,0x40,0x70,0x07,0x23,0xf1,0xfd,0x6b,0x79,0xe3,0x39,0x56,0xe3,0x52,0x6f, + 0x46,0x62,0x5a,0xe9,0x8e,0xe7,0x95,0xeb,0xfc,0xab,0xa8,0xb3,0xd0,0xd4,0xe0,0xba, + 0xe6,0x96,0x17,0x8d,0x08,0x6e,0xd8,0xad,0x64,0xd4,0xa2,0x8d,0x3b,0x57,0x15,0x4c, + 0x64,0xa4,0xcd,0x21,0x1b,0xea,0x03,0x4d,0x86,0x2e,0x40,0x18,0xac,0xab,0xb8,0xa3, + 0x45,0xcf,0x19,0xf7,0xa2,0xf7,0x5e,0x8d,0x32,0x01,0xe9,0xd6,0xb8,0x2d,0x5f,0xc4, + 0x83,0x04,0x6e,0xfc,0x2b,0x04,0xe7,0x27,0x74,0x75,0xc6,0x36,0xd5,0x93,0x6a,0xd7, + 0x31,0x20,0x6c,0xe2,0xbc,0xcb,0x55,0xd4,0x13,0x07,0xbd,0x43,0xa9,0xeb,0xa6,0x42, + 0x42,0x9e,0x6b,0x92,0x96,0x67,0x9d,0xb7,0x13,0x9c,0xd7,0xa5,0x86,0xc3,0x3d,0xe6, + 0x39,0x4a,0xfa,0x0d,0x9e,0x76,0x95,0xb9,0xe3,0x15,0x5b,0xb8,0xfa,0xd3,0x8a,0xfa, + 0x73,0x51,0xe4,0x03,0x5e,0x9c,0x52,0xb1,0x2b,0x73,0xb8,0xd0,0xa4,0xc3,0xa9,0xe9, + 0x5e,0xd9,0xa4,0x30,0x31,0xa9,0x03,0xf1,0xeb,0x5e,0x01,0xa4,0x4a,0x04,0x8a,0x4f, + 0xaf,0x4a,0xf6,0xfd,0x0a,0x60,0x55,0x73,0xe8,0x2b,0xe2,0x38,0x82,0x95,0xa5,0x74, + 0x7f,0x58,0xf8,0x37,0x98,0xa7,0x4b,0xd9,0xb6,0x7a,0x14,0x07,0x81,0xce,0x73,0xd6, + 0xba,0x5d,0x36,0x03,0x2b,0x01,0xef,0x5c,0xbd,0xa3,0x6e,0x00,0xd7,0x75,0xa3,0x6c, + 0x46,0x56,0x35,0xf1,0xf1,0x85,0xe5,0x66,0x7f,0x53,0xd0,0xa9,0xee,0x23,0xb8,0xd3, + 0xac,0x52,0x38,0xc3,0x11,0x93,0x8a,0xb9,0x2c,0xc2,0x1e,0x17,0xa0,0xa8,0x12,0xed, + 0x3c,0xac,0x29,0xe3,0xd2,0xb2,0x2e,0x6e,0x79,0xe3,0xb5,0x7a,0x1f,0x5a,0x8d,0x35, + 0xca,0x91,0xab,0xc2,0xf3,0x7b,0xe5,0x89,0xee,0xd8,0x83,0xcd,0x52,0x1a,0x83,0x27, + 0x39,0xe9,0x55,0xda,0x5c,0xa9,0xc1,0xe4,0xd6,0x64,0xbd,0x73,0xf8,0xd7,0x75,0x3a, + 0xe9,0xc4,0xf3,0x71,0x11,0xb3,0x68,0xe9,0x93,0x5a,0x91,0x7a,0x31,0xe9,0x53,0x2f, + 0x89,0x24,0x53,0xf3,0x36,0x6b,0x89,0x69,0x08,0x3e,0xd5,0x56,0x49,0x8e,0x79,0xce, + 0x6b,0x1a,0xd5,0x17,0x73,0x28,0x4a,0xc7,0xa5,0xbe,0xb1,0x15,0xcc,0x7b,0x58,0x8f, + 0xc6,0xb9,0x2d,0x4a,0x20,0xcd,0xbe,0x21,0x58,0x71,0x5c,0x95,0x7e,0xb5,0xd7,0x69, + 0xb1,0xad,0xd0,0x0a,0x7b,0xd6,0x1c,0xdc,0xde,0xeb,0x34,0xe7,0x4c,0xc9,0xb3,0xb8, + 0x96,0x35,0xda,0xd9,0xe3,0x81,0x9a,0xa3,0xa8,0xce,0x1b,0x83,0xd3,0x15,0xe8,0x32, + 0x68,0x4a,0xcb,0xbd,0x07,0x18,0xae,0x0f,0x5c,0xb1,0x92,0x0c,0xe3,0xad,0x65,0x52, + 0x0e,0x3b,0xa2,0xdc,0xdd,0xac,0x79,0xed,0xf3,0x61,0x8b,0x0a,0xcb,0x49,0x70,0xdc, + 0x55,0xcb,0xd6,0x3b,0x8e,0x4d,0x63,0x87,0xc3,0x70,0x6a,0x1c,0x74,0x30,0x55,0x55, + 0xce,0xd7,0x4e,0xba,0xda,0x98,0xac,0x4f,0x13,0x5c,0x93,0x68,0xc0,0xf4,0xc1,0xa6, + 0x59,0x4d,0xd7,0x9f,0xa5,0x51,0xf1,0x03,0x97,0xb2,0x71,0xdf,0x15,0xb6,0x0a,0x3f, + 0xbd,0x57,0x47,0xcb,0x71,0xa5,0x35,0x57,0x2d,0xa9,0x1f,0x26,0x7c,0xdd,0xad,0x4a, + 0x5a,0xf1,0xc7,0xfb,0x44,0xd6,0x50,0x7c,0x7a,0x0a,0xbb,0xac,0x71,0x78,0xe7,0xd6, + 0xb3,0x33,0x82,0x41,0x35,0xfa,0xae,0x1d,0xaf,0x67,0x1b,0x1f,0xe7,0x76,0x61,0x4b, + 0x93,0x13,0x52,0x2b,0xbb,0x2c,0x79,0x9e,0xf4,0xf0,0xfc,0x75,0xaa,0x99,0xcf,0x14, + 0xfd,0xe0,0x1e,0x6b,0x6e,0x63,0x8e,0xc6,0x9d,0xaa,0x49,0x71,0x28,0x8e,0x3e,0x4b, + 0x10,0x2b,0xdf,0xbc,0x05,0xf0,0x9a,0xef,0x5e,0xdb,0x33,0x46,0x58,0x70,0x7a,0x57, + 0x92,0x78,0x32,0xdd,0x6e,0x35,0x18,0xf7,0x60,0xfc,0xc2,0xbf,0x4f,0xfe,0x15,0x59, + 0xd8,0x58,0xe9,0x31,0x3b,0x01,0x9d,0xbd,0x31,0xea,0x2b,0xdb,0xc9,0x32,0xd8,0x63, + 0x2a,0xb5,0x51,0xe8,0x8f,0xb7,0xe1,0x7c,0x86,0x9e,0x2b,0xf7,0xb5,0x36,0x39,0x1f, + 0x07,0x7c,0x2c,0xb2,0xd1,0x1a,0x23,0x76,0x80,0x11,0x83,0xc8,0x15,0xf5,0x36,0x97, + 0xf0,0xef,0xc3,0x1a,0xf5,0xbc,0x71,0xcf,0x0a,0x36,0x06,0x3a,0x0a,0xf3,0x0d,0x77, + 0x51,0x67,0x93,0x10,0x0d,0xa0,0x7a,0x57,0x49,0xe1,0x6f,0x11,0xcf,0x6e,0x55,0x77, + 0xe0,0x66,0xbe,0xff,0x00,0x0f,0x80,0xc3,0xc1,0x7b,0x05,0x15,0x63,0xf5,0x5a,0x39, + 0x75,0x1a,0x34,0x6d,0x18,0x9d,0x36,0xb7,0xfb,0x2b,0xf8,0x4b,0x5c,0xb7,0x63,0x14, + 0x08,0x09,0x1d,0x94,0x77,0xaf,0x85,0xfe,0x30,0xfe,0xc9,0x3a,0xaf,0x87,0x04,0xb7, + 0xda,0x1a,0x33,0x22,0xe5,0xb6,0x81,0x91,0x5f,0xaa,0x9e,0x1a,0xf1,0x9e,0xf4,0x54, + 0x66,0x0c,0x0e,0x32,0x2b,0xaf,0xbf,0xb7,0xd3,0x35,0xeb,0x56,0x8a,0x65,0x57,0x0e, + 0x39,0x04,0x66,0xb8,0x33,0x2e,0x14,0xa1,0x51,0x73,0x51,0x8d,0x9f,0x91,0xe4,0x62, + 0xf2,0x5c,0x26,0x26,0x2e,0x15,0x60,0x7f,0x33,0x77,0xba,0x3d,0xfd,0x8d,0xeb,0xd8, + 0xdd,0x44,0xd1,0xca,0x8d,0xb4,0xa9,0x18,0xf6,0xae,0xbf,0xc3,0xfe,0x09,0xba,0xd4, + 0x5d,0x77,0x21,0x39,0xf6,0xaf,0xd3,0xff,0x00,0x8c,0x9f,0xb3,0x5d,0x8d,0xfd,0xf3, + 0xeb,0x3a,0x5c,0x01,0x5c,0x12,0xc7,0x68,0xaf,0x37,0xf0,0x9f,0xc3,0xc8,0xb4,0xd7, + 0x10,0xcd,0x10,0x56,0x53,0xce,0x47,0xa5,0x7c,0x15,0x5c,0xb6,0xbd,0x1a,0x8e,0x9d, + 0x65,0xff,0x00,0x04,0xf2,0x32,0x8f,0x0f,0xe3,0x2c,0x43,0x75,0x25,0x78,0x9e,0x3b, + 0xe0,0xef,0x83,0xed,0x71,0xb3,0xcd,0x8f,0xaf,0xb5,0x7d,0x65,0xe0,0xcf,0x80,0xb6, + 0x72,0x79,0x66,0x48,0x07,0x6e,0x48,0xaf,0x54,0xf0,0x87,0x85,0x20,0x8d,0x16,0x4f, + 0x2c,0x00,0x31,0xda,0xbd,0xc7,0x4e,0x9a,0xdb,0x4e,0x8c,0x05,0x00,0x15,0xc0,0x15, + 0xf4,0xb9,0x4f,0x0f,0xba,0xab,0x9a,0xa2,0xb2,0x3e,0xf6,0x54,0x70,0x59,0x7c,0x7d, + 0x9d,0x18,0x6a,0x79,0xd5,0xb7,0xec,0xf3,0xa3,0xc9,0x6d,0xb7,0xca,0x40,0x76,0xfa, + 0x57,0xce,0x5f,0x11,0x7f,0x67,0x2b,0x5b,0x3b,0xc3,0x22,0x45,0x98,0xd8,0x9c,0xf1, + 0xc6,0x2b,0xef,0x64,0xf1,0x5a,0xc4,0x9c,0x30,0x00,0x57,0x1b,0xe2,0x4d,0x7e,0xca, + 0xfd,0x0a,0xcd,0x86,0xeb,0xcd,0x7b,0x58,0xde,0x1c,0xa4,0xe9,0x7e,0xef,0x73,0x9f, + 0x0f,0x5e,0x18,0x89,0x72,0x55,0x85,0xd1,0xf2,0x4f,0x80,0x3e,0x01,0x68,0x70,0x3a, + 0xdd,0x5d,0x42,0xa1,0x47,0x3c,0x81,0xcd,0x7a,0x4f,0x8b,0x7e,0x11,0xf8,0x3e,0xff, + 0x00,0x4f,0x6b,0x61,0x6d,0x1e,0x4a,0xe3,0x20,0x0a,0xdb,0x9b,0x5e,0x30,0x96,0x82, + 0xd1,0xb0,0xa3,0x8e,0x0d,0x54,0x6d,0x52,0x67,0x1c,0xb1,0x3f,0xca,0xae,0x8d,0x4c, + 0x36,0x1e,0x92,0xc3,0xa8,0x2f,0x33,0x07,0xc2,0xf4,0xdc,0xa5,0x28,0xc7,0x46,0x7e, + 0x7f,0xfc,0x40,0xfd,0x99,0x19,0x6e,0xa4,0xb9,0xd1,0xb3,0x82,0x4f,0x00,0x7f,0x4a, + 0xf0,0xed,0x4f,0xe0,0x47,0x89,0x2c,0x63,0x67,0x48,0xdc,0xe3,0xd4,0x57,0xeb,0xb4, + 0x2f,0x05,0xc1,0x1e,0x72,0x8e,0x7b,0xd6,0x8d,0xf6,0x83,0xa2,0xdc,0xd9,0x11,0xb1, + 0x09,0x23,0xd0,0x57,0xcb,0xe6,0x99,0x3d,0x06,0xdd,0x5a,0x0f,0x97,0xc8,0xf2,0xff, + 0x00,0xd4,0x7c,0x1d,0x79,0x35,0x38,0xd9,0xb3,0xf1,0x87,0x44,0xf8,0x59,0xa9,0x5c, + 0x5d,0xfd,0x96,0xea,0x16,0x0d,0x9c,0x57,0xa0,0xea,0xbf,0x00,0x6f,0xa2,0xb3,0x37, + 0x10,0xc4,0x41,0xc6,0x78,0x15,0xf7,0xa5,0xef,0x84,0xf4,0x9b,0x4d,0x4b,0xed,0x31, + 0xc6,0xbc,0x1e,0xc2,0xba,0xc8,0xec,0xac,0xf5,0x08,0xd6,0xde,0x34,0x18,0xc6,0x0d, + 0x7c,0xfa,0xc3,0x41,0x3e,0x59,0xbb,0xb3,0xdc,0xc2,0xf8,0x69,0x83,0x8e,0x1d,0xaa, + 0x91,0xf9,0x9f,0x90,0xa3,0xe1,0x87,0x88,0x9a,0xff,0x00,0xec,0x62,0x07,0xc6,0x71, + 0x9c,0x57,0xd0,0x3e,0x0d,0xfd,0x98,0xb5,0xad,0x51,0x63,0x9e,0xe2,0x26,0x21,0xb1, + 0xc1,0x1c,0x57,0xe8,0xc6,0x87,0xf0,0xaf,0x49,0x9a,0xe5,0x6e,0xe6,0x81,0x70,0x0e, + 0x79,0x1d,0x6b,0xd9,0x23,0x93,0x42,0xd0,0x6d,0x84,0x11,0x22,0x65,0x06,0x38,0x03, + 0xb5,0x7d,0x06,0x07,0x86,0x3d,0xa4,0x3d,0xad,0x69,0x69,0xd1,0x1f,0x25,0x4f,0x83, + 0x30,0x94,0x2b,0xc9,0x35,0x74,0x7e,0x54,0xf8,0xdf,0xf6,0x60,0x9b,0x44,0xd2,0x9e, + 0xf1,0x14,0x06,0x45,0x24,0x8c,0x7a,0x57,0xc3,0x5a,0xa6,0x9f,0x2e,0x9f,0x7b,0x2d, + 0x9c,0x9f,0x2b,0x44,0xc5,0x79,0xe2,0xbf,0x76,0x3e,0x23,0x6b,0x70,0xea,0x96,0x12, + 0x5b,0x22,0x80,0x08,0x22,0xbf,0x2a,0xbe,0x33,0xf8,0x0c,0x69,0xf2,0xbe,0xad,0x6a, + 0x0f,0x2c,0x58,0xe3,0xd3,0xbd,0x73,0x67,0x39,0x5c,0x28,0x25,0x2a,0x31,0xb2,0x5b, + 0x9e,0x5f,0x14,0xf0,0xc4,0x29,0xd1,0xfa,0xc6,0x1a,0x3b,0x6e,0x7c,0xd0,0x4f,0x61, + 0xd6,0x99,0xdb,0xeb,0x4f,0x61,0xcf,0x5e,0x2a,0x30,0x0f,0x7e,0xb5,0xf3,0xf7,0x3f, + 0x2f,0x76,0xd9,0x87,0x5c,0x8a,0xef,0xfc,0x11,0xe1,0x89,0xb5,0xcd,0x46,0x25,0x55, + 0x25,0x4b,0x01,0xd2,0xb8,0xcb,0x1b,0x57,0xbd,0x9d,0x21,0x8c,0x67,0x71,0x1f,0xce, + 0xbe,0xfd,0xf8,0x05,0xf0,0xeb,0xcd,0x92,0xde,0x57,0x8f,0x24,0x91,0xda,0xbe,0x3b, + 0x8c,0xf8,0x82,0x19,0x66,0x06,0x73,0xbf,0xbc,0xcf,0x67,0x22,0xcb,0x1e,0x2b,0x10, + 0x93,0xd9,0x1f,0x52,0xfe,0xcf,0x7f,0x0a,0x52,0xd9,0x60,0x92,0x48,0x47,0x18,0xed, + 0x5f,0xa8,0xbe,0x18,0xf0,0xed,0xa6,0x9f,0x60,0x88,0x23,0x03,0x0a,0x2b,0xc5,0xbe, + 0x19,0x78,0x72,0x0d,0x2e,0xce,0x26,0xd8,0x06,0xd0,0x31,0xc5,0x7d,0x09,0x6d,0x74, + 0xa1,0x30,0x31,0x8a,0xfe,0x27,0xce,0xb3,0x8a,0x98,0xdc,0x44,0xaa,0xd4,0x77,0xb9, + 0xfb,0x35,0x0c,0x3a,0xa3,0x49,0x42,0x99,0xce,0xf8,0x8f,0x4a,0xb6,0x96,0x32,0xa1, + 0x01,0x3f,0x4a,0xe4,0xb4,0xbd,0x1e,0x2b,0x1f,0x9c,0x28,0x07,0xaf,0xa5,0x76,0x9a, + 0x95,0xd0,0x66,0xe3,0x9a,0xc3,0x67,0x24,0xf3,0xde,0xbe,0x0b,0x17,0x8b,0x94,0xa4, + 0xe3,0x7d,0x0f,0xa0,0xc2,0xd1,0xb4,0x53,0x92,0xd4,0xbb,0x1b,0x0c,0xe6,0xb4,0xa0, + 0x7c,0x74,0xac,0x48,0xcf,0x38,0xf4,0xad,0x7b,0x6e,0x4e,0x2b,0x86,0x32,0x5d,0x59, + 0x75,0xe2,0xac,0x58,0xba,0xb6,0x4b,0x84,0x2a,0x46,0x72,0x2b,0xc6,0xfc,0x5b,0xf0, + 0xc2,0xc7,0x5c,0x24,0xc9,0x12,0xb6,0x7a,0x82,0x07,0x7a,0xf7,0x54,0xc6,0x31,0x48, + 0xca,0x9d,0xc5,0x77,0xe1,0xf1,0xb3,0xa0,0xf9,0xa0,0xec,0x79,0xdc,0xe9,0xfb,0xb2, + 0x57,0x3e,0x6c,0xd1,0xfe,0x0b,0x69,0x56,0x6a,0x33,0x0a,0x8c,0x7b,0x57,0x77,0x69, + 0xf0,0xf3,0x4a,0xb5,0x03,0x11,0x2f,0x1e,0xd5,0xe9,0xef,0x22,0x2f,0x00,0x55,0x29, + 0x25,0x27,0xbd,0x56,0x23,0x3b,0xc4,0x54,0x7a,0xcd,0x9d,0x14,0xe2,0xbe,0xcc,0x4f, + 0xff,0xd6,0xfc,0x87,0xb8,0xf0,0x55,0xe5,0x87,0x32,0x46,0x48,0x1c,0xf4,0xab,0x5a, + 0x6e,0x94,0x51,0xc0,0x2b,0x8a,0xfb,0xff,0x00,0xc7,0x3f,0x0d,0x61,0xb6,0x81,0xb6, + 0x44,0x31,0x83,0xd0,0x57,0xcb,0x17,0x5e,0x1b,0x9a,0xce,0xf9,0xe3,0x2b,0x85,0xcf, + 0x15,0xf9,0xd6,0x27,0x34,0xa9,0x09,0xba,0x55,0x1e,0xa7,0xe8,0x3c,0x5d,0xc0,0x18, + 0x9c,0xa9,0xc6,0x74,0x93,0x71,0x66,0x25,0x9d,0x92,0xa2,0x02,0x07,0x1f,0xca,0xac, + 0xbd,0xba,0x85,0xc8,0xe7,0x3c,0x57,0x40,0xb6,0x42,0x34,0xe7,0xad,0x67,0xdc,0x61, + 0x07,0x4f,0xce,0xb9,0xe3,0x8c,0x94,0x8f,0x86,0xc4,0x60,0xab,0xd0,0x8d,0xea,0x46, + 0xc7,0x3c,0xf6,0x4a,0xc7,0x01,0x7a,0xd4,0x47,0x4c,0x46,0xe7,0x6d,0x6b,0x09,0x50, + 0x1c,0x91,0xd6,0x9a,0x6e,0x93,0x91,0x8f,0xfe,0xb5,0x3f,0x6f,0x3e,0xa7,0x9c,0xe6, + 0xd9,0x8c,0x74,0xd5,0x53,0x90,0x31,0x52,0x25,0x90,0x50,0x38,0xfc,0xab,0x47,0xcd, + 0x52,0x00,0xa8,0xda,0x55,0x5c,0xd7,0x55,0x3a,0xd2,0xb1,0x32,0x93,0x2a,0x3c,0x48, + 0x06,0x7f,0x95,0x63,0xdc,0xb2,0xa7,0xd3,0x35,0x7a,0xea,0xe9,0x76,0xf5,0xe2,0xb9, + 0xbb,0xa9,0x8f,0x4c,0xf1,0x5a,0x29,0x49,0xea,0x46,0xe5,0xa8,0xee,0x30,0x70,0x0e, + 0x7d,0x6b,0x6e,0xda,0xe0,0x11,0xf4,0x15,0xc4,0x47,0x36,0xd6,0xce,0x6b,0x56,0x1b, + 0xa2,0x17,0xaf,0x5f,0xcf,0x35,0xe8,0x61,0x60,0xe4,0x1c,0xba,0x5c,0xec,0x0d,0xd8, + 0x50,0x49,0x3f,0xad,0x54,0x7d,0x48,0x0e,0x73,0xdb,0xa5,0x60,0x3d,0xc1,0xc1,0xc1, + 0x35,0x42,0x5b,0x86,0x63,0xde,0xbd,0x48,0x60,0x64,0xfd,0xe9,0x1b,0x42,0x16,0xd4, + 0xea,0x4e,0xa2,0x4a,0xe7,0x35,0x9d,0x77,0xac,0x88,0xc1,0x25,0xbb,0x74,0xac,0xbc, + 0x4a,0xeb,0x90,0x7a,0x7f,0x5a,0xc5,0xd4,0x22,0x7c,0x1e,0xb4,0xa5,0x87,0x8a,0x66, + 0xca,0x5d,0x8a,0xba,0x97,0x88,0x1c,0x93,0x82,0x72,0x7d,0xeb,0x8d,0xbc,0xd4,0x67, + 0x9c,0x9c,0xb1,0xeb,0xeb,0x53,0x5f,0x0d,0xb9,0xcd,0x63,0x13,0xb9,0xab,0xbe,0x95, + 0x18,0x28,0xdc,0xd2,0xed,0x80,0x06,0x47,0xc7,0xad,0x6b,0x41,0x60,0xce,0xbd,0x2a, + 0xce,0x99,0xa7,0x99,0x98,0x64,0x75,0xaf,0x4c,0xb0,0xd0,0x43,0x46,0x0e,0x31,0xc5, + 0x73,0x62,0x31,0x4a,0x0f,0x96,0xe4,0xb6,0x79,0x5c,0xd6,0x2c,0xa3,0xa6,0x2b,0x1e, + 0x48,0x48,0x70,0x3a,0x66,0xbd,0x93,0x53,0xd1,0x7c,0xb4,0xc8,0x5e,0xde,0x95,0xc5, + 0x1d,0x24,0xbd,0xce,0x00,0xc8,0xcd,0x4d,0x1c,0x6a,0xb5,0xc4,0x57,0xd1,0xec,0x66, + 0x66,0x52,0x01,0xc6,0x6b,0xd6,0xb4,0x78,0x64,0x85,0x57,0x20,0x8a,0xbb,0xe1,0x8f, + 0x0b,0x3c,0xa8,0x08,0x5c,0xf1,0x9f,0xc2,0xbb,0xb9,0x3c,0x39,0x25,0xb4,0x79,0x2b, + 0x8e,0x2b,0xe5,0xf3,0x8c,0x52,0xa8,0x9a,0x3f,0x60,0xf0,0xc3,0x3a,0x78,0x4c,0x54, + 0x62,0xde,0x85,0x6b,0x19,0x07,0x19,0xe2,0xba,0xdb,0x4b,0x9f,0x29,0x46,0x0e,0x08, + 0xf5,0xae,0x12,0x12,0x60,0x98,0xa1,0xea,0x0f,0x02,0xb6,0xa3,0x98,0x85,0x19,0x39, + 0xaf,0x9c,0x8a,0x4b,0x53,0xfb,0x6b,0x2e,0xc7,0x2a,0x94,0xe3,0x2b,0x9e,0x83,0x6d, + 0x7e,0x59,0x70,0x4f,0xe7,0x52,0xcb,0x73,0x93,0x9c,0xd7,0x0f,0x05,0xe3,0x0e,0xf8, + 0xad,0x01,0x7b,0x91,0x83,0xd6,0xb8,0xe7,0x4d,0xb9,0x6a,0x7d,0x2c,0x31,0xf0,0xe5, + 0x3a,0x1f,0x39,0x7a,0xe7,0x8f,0xe7,0x50,0x3c,0xaa,0x7b,0xf3,0x58,0x7f,0x6d,0x3f, + 0x8d,0x35,0xae,0xbb,0x8e,0x2b,0xd3,0xc3,0xa9,0x72,0x6a,0x78,0xd8,0x9c,0x6c,0x39, + 0x9b,0x46,0x9c,0xb2,0x0e,0xa7,0xbd,0x67,0x49,0x20,0xfa,0x7f,0x9e,0x6a,0xb7,0x9e, + 0x7b,0xd5,0x47,0x94,0x9e,0xf5,0xab,0xa5,0x75,0x73,0x8d,0xe3,0x16,0xe5,0xd5,0x97, + 0x2e,0x3d,0xab,0xbb,0xd0,0xa5,0xc0,0x53,0xe9,0x5e,0x62,0xb2,0xfc,0xd9,0x06,0xba, + 0xdd,0x37,0x52,0x58,0x90,0x03,0xc1,0xc5,0x6b,0x87,0xa4,0x9c,0xbd,0xe3,0x9e,0xb6, + 0x35,0xa6,0xb9,0x4f,0x55,0xfe,0xd5,0x44,0xc2,0x31,0xc6,0x7b,0x57,0x3f,0xac,0xbc, + 0x37,0x31,0x33,0x2d,0x71,0xd7,0x3a,0xa1,0x77,0x18,0x34,0x7f,0x69,0x19,0x13,0x69, + 0x3d,0x29,0x55,0x56,0x93,0x89,0xd9,0x43,0x16,0xa7,0x4e,0xf2,0xdc,0xe1,0x35,0x84, + 0x58,0xe5,0x20,0x57,0x2e,0xef,0x86,0xe4,0x75,0xae,0xaf,0x59,0x1e,0x63,0x33,0x29, + 0xae,0x2e,0x57,0xc3,0x75,0xae,0x37,0x16,0x72,0x54,0xad,0xae,0x86,0xbd,0xb4,0xb8, + 0x23,0x26,0xab,0x6b,0x13,0xee,0xb5,0x61,0xed,0x50,0x45,0x26,0x06,0x73,0x59,0x9a, + 0xc4,0xf8,0xb6,0x60,0x6b,0x5c,0x1c,0x7f,0x7a,0x8f,0x17,0x89,0x6b,0xdb,0x2f,0xa9, + 0x7e,0xc7,0x86,0xeb,0x44,0x7d,0xb1,0x8f,0xd7,0xf9,0xd6,0x36,0x6b,0x43,0x57,0x72, + 0xd7,0x6d,0x81,0x59,0x65,0xbd,0x7b,0xd7,0xea,0x14,0x3f,0x86,0x8f,0xf3,0xef,0x35, + 0x92,0xfa,0xe5,0x57,0xe6,0xc9,0x37,0x0a,0x50,0x7b,0x1c,0xe6,0xa2,0xe3,0xf2,0xa0, + 0x1e,0xe2,0xb6,0x3c,0xee,0x67,0xb9,0xea,0x3e,0x00,0x5c,0xdf,0x46,0x7d,0xc7,0xf3, + 0xaf,0xd1,0xaf,0x07,0x4c,0xf1,0xe9,0x71,0x00,0x71,0x95,0x15,0xf9,0xeb,0xf0,0xca, + 0xca,0x4b,0x9d,0x46,0x15,0x8d,0x49,0x25,0x86,0x00,0x1e,0xf5,0xfa,0x5d,0xa7,0xf8, + 0x43,0x5d,0xd0,0xbc,0x3d,0x67,0xa9,0xea,0x36,0x72,0x41,0x6b,0x73,0x84,0x8e,0x47, + 0x18,0x56,0x38,0xce,0x06,0x7d,0xbd,0xab,0xe9,0x72,0x19,0x38,0x46,0x73,0x3f,0x6d, + 0xe0,0x3c,0x3a,0x78,0x74,0xa5,0xd7,0x62,0xdc,0xcb,0xe6,0xa6,0xe3,0xcd,0x66,0xc5, + 0x74,0xd6,0xf2,0x61,0x7b,0x7a,0x76,0xab,0xbe,0x70,0xd9,0xb7,0xdb,0x15,0x89,0x27, + 0x33,0x63,0xb5,0x7d,0x0a,0xc7,0x38,0xb5,0x2b,0x9f,0xa6,0x4f,0x04,0x9d,0xa2,0x7a, + 0x5f,0x86,0xfc,0x43,0x2c,0x72,0x00,0x58,0xf5,0xe3,0x9a,0xf7,0xcf,0x0f,0xf8,0x82, + 0x46,0x0a,0x09,0xfa,0xd7,0xcc,0xbe,0x1d,0xd3,0x2e,0xaf,0xae,0xd2,0x0b,0x54,0x2c, + 0xcc,0xd8,0xe0,0x66,0xbe,0x92,0x8b,0x4c,0x87,0xc2,0x3a,0x7c,0x72,0x5e,0x2f,0x9f, + 0x7b,0x20,0xca,0xc1,0x9c,0x05,0xf7,0x73,0xd7,0xf0,0xaf,0x7f,0x07,0x98,0xa9,0x52, + 0x73,0x9e,0xcb,0x76,0x78,0xb9,0x86,0x0d,0x29,0xc6,0x10,0xf8,0x9f,0x43,0xaf,0xd5, + 0x3c,0x43,0x69,0x6d,0x6c,0x53,0x50,0x85,0x58,0x4d,0x88,0xd0,0xb7,0x76,0x3d,0x48, + 0xf5,0xc7,0x7a,0xe4,0xf5,0x2f,0x00,0xdb,0xc8,0xf1,0x6a,0x16,0xea,0x36,0x48,0x03, + 0x82,0xa3,0x83,0x9e,0x78,0x35,0xe4,0x5a,0xdd,0xfe,0xa3,0xa9,0xea,0x46,0xea,0xfa, + 0x52,0xe4,0x1c,0x22,0x03,0x85,0x41,0xe8,0xa3,0xd2,0xbd,0x77,0xc1,0xfe,0x30,0xd4, + 0x6c,0xad,0x52,0xc6,0xe4,0xad,0xcd,0xb8,0xff,0x00,0x96,0x6e,0x33,0x8c,0xfa,0x1e, + 0xa3,0xf0,0x35,0xf3,0xb5,0xf3,0x2c,0x36,0x2b,0x10,0xd5,0x48,0xe9,0xd1,0x9d,0xb4, + 0xb2,0x7c,0x45,0x0a,0x3c,0xd1,0x95,0xe5,0xd4,0xd5,0x86,0xcd,0x2c,0x20,0x11,0x80, + 0x05,0x61,0xea,0x97,0x6c,0x01,0x11,0xb7,0x35,0xe8,0x57,0x9a,0x52,0x6b,0x76,0xcd, + 0x73,0xa1,0xbe,0xf9,0x31,0xb9,0xad,0xdb,0x1b,0xc7,0xae,0xdf,0xef,0x0f,0xa5,0x79, + 0x86,0xa7,0x61,0x73,0x6d,0x60,0x9a,0x89,0x91,0x65,0x0d,0x24,0x91,0xcd,0x1a,0x83, + 0xba,0x06,0x46,0x0a,0x3c,0xc1,0xe8,0xdd,0x88,0xee,0x30,0x79,0xaf,0x45,0xe2,0xdc, + 0x74,0x8a,0xd3,0xcb,0x63,0x96,0x8e,0x16,0x9c,0xa4,0xbd,0xa3,0xd5,0x9c,0xcd,0xde, + 0xab,0x75,0x19,0x28,0x09,0xc1,0xae,0x72,0xea,0xf6,0x79,0xb7,0x02,0xc7,0x06,0xb6, + 0xa4,0x02,0x62,0x48,0x19,0x3e,0x95,0x8d,0x79,0x0f,0x96,0xa4,0xe3,0x1c,0x9a,0x72, + 0xc7,0x49,0xc1,0xa6,0xcf,0x45,0x60,0x61,0x09,0x2b,0x22,0x95,0xb2,0x49,0x21,0xe0, + 0x12,0x4e,0x6b,0x42,0x5b,0x6b,0xd8,0x57,0x7c,0x90,0xba,0xaf,0xa9,0x53,0x5b,0x7e, + 0x11,0x7b,0x78,0x6e,0x8b,0xcd,0x82,0x40,0xc8,0x0c,0x33,0xcd,0x7b,0x15,0xa7,0x88, + 0x2d,0x9a,0x2f,0x2e,0x65,0x46,0x52,0x30,0x41,0x00,0x8c,0x7d,0x0d,0x78,0x95,0x67, + 0x06,0xef,0x29,0x6a,0x7a,0xad,0x4d,0x68,0xa3,0x73,0xc9,0xbc,0x2f,0x65,0x6d,0xa8, + 0x5c,0x7f,0xa5,0x49,0xb1,0x41,0xe8,0x3a,0x9f,0x61,0x5d,0xfe,0xad,0xe1,0x9b,0x39, + 0xad,0xf7,0xe9,0x32,0x18,0xe4,0x0a,0x4e,0xc7,0x6e,0x1f,0x8e,0x80,0xf6,0x3e,0x95, + 0xc2,0xf8,0x9f,0x53,0xd2,0xb4,0x7d,0x4c,0xcf,0xa7,0x5b,0x3a,0xb4,0xb8,0xca,0xc6, + 0x71,0x12,0xe4,0xf2,0xd8,0xeb,0xf8,0x74,0xad,0x49,0x3c,0x40,0x8c,0x2d,0xc7,0x99, + 0x94,0x91,0x73,0x8f,0xad,0x44,0xab,0x28,0xb5,0x1b,0xdd,0x33,0x86,0xae,0x12,0xa4, + 0xa5,0xed,0x63,0x74,0x79,0x16,0xb3,0x05,0xd2,0xdc,0xed,0xc1,0xeb,0xc8,0xaf,0x40, + 0xf0,0x8e,0x8d,0x90,0xb3,0x4c,0x38,0x18,0xeb,0x5d,0x29,0xd2,0x2d,0xf5,0x98,0x57, + 0x51,0x45,0x01,0xb7,0x84,0x97,0x1e,0xa7,0xa3,0x7e,0x23,0xf5,0xad,0xb9,0x2d,0xa3, + 0xd3,0x2c,0xfc,0xb8,0xf8,0x38,0xab,0xc0,0xe4,0xf4,0x95,0x6f,0x6e,0xf5,0x8f,0x41, + 0x62,0xb3,0xba,0xb3,0xa3,0xec,0x63,0xa4,0xb6,0x1f,0x7f,0xab,0xc1,0x65,0x6e,0x62, + 0x88,0x80,0x71,0x8a,0xf2,0x0d,0x67,0x59,0x96,0x59,0x1d,0x83,0x9a,0xb3,0xad,0x5d, + 0x4a,0x18,0x9c,0xfa,0xd7,0x9d,0xea,0x7a,0x86,0x03,0x64,0xfa,0x8a,0xfa,0x4a,0x98, + 0xa4,0xa3,0x65,0xa1,0xe3,0xd1,0xc2,0xd9,0x73,0x37,0x76,0x66,0xea,0x7a,0x9b,0xca, + 0xcc,0xac,0x72,0x2b,0xc0,0x3e,0x28,0xda,0xc7,0x79,0xa1,0xdc,0x23,0xa8,0x24,0x29, + 0xeb,0x5e,0xb7,0x3d,0xc0,0x66,0x24,0x9a,0xf2,0xdf,0x1f,0x48,0x3f,0xb2,0xe7,0x0d, + 0xdd,0x4d,0x7c,0xae,0x3a,0xb2,0x9c,0x26,0xd9,0xc5,0x9a,0xc1,0x4b,0x0f,0x38,0x3e, + 0xc7,0xe7,0x5d,0xda,0x18,0x6e,0x24,0x8c,0x7f,0x0b,0x11,0x55,0x38,0xcf,0xad,0x69, + 0xea,0xe3,0x1a,0x8c,0xe0,0x7f,0x7c,0xd6,0x60,0xfb,0xd8,0xf5,0xaf,0x89,0x8e,0xc7, + 0xf3,0x9d,0x68,0xf2,0xd4,0x92,0x5d,0x0f,0x52,0xf8,0x6d,0xa2,0x8d,0x47,0x52,0x8f, + 0x2b,0x91,0xb8,0x57,0xec,0x1f,0xc0,0xcf,0x09,0xc3,0x6f,0x6b,0x0c,0x81,0x30,0x70, + 0x3a,0x8a,0xfc,0xcc,0xf8,0x27,0xa5,0x89,0x2f,0xa1,0x72,0xbf,0xc4,0x33,0x5f,0xb1, + 0x7f,0x0b,0x2d,0x92,0xda,0xc2,0x12,0x30,0x30,0xa0,0x8a,0xfe,0x5c,0xf1,0x8f,0x37, + 0x94,0xb1,0x0e,0x8c,0x5e,0x87,0xea,0x1c,0x21,0x83,0x8c,0x68,0x7b,0x4e,0xa7,0xd2, + 0x5a,0x40,0x4b,0x78,0x92,0x34,0xe8,0xa0,0x57,0x65,0x0c,0xb8,0x4a,0xe0,0x74,0xf9, + 0x47,0x15,0xd5,0xc3,0x36,0x50,0x0a,0xfe,0x77,0xa9,0x2d,0x19,0xf6,0xf0,0x8d,0xdd, + 0x86,0x5c,0xb9,0x32,0x1a,0xa8,0x5b,0x27,0xde,0x9f,0x70,0xd9,0x7a,0xa9,0xf3,0xd7, + 0xcb,0x55,0xbf,0x33,0xb9,0xef,0xc3,0x63,0x42,0x26,0xad,0x48,0x66,0x0b,0xf8,0x57, + 0x38,0x24,0x91,0x39,0xc1,0xa4,0x17,0x64,0x1c,0x13,0x59,0x73,0x04,0xa9,0x73,0xe8, + 0x76,0x22,0xe9,0x31,0x8f,0x4a,0x6b,0x5c,0xe7,0x8a,0xe6,0xa3,0xba,0x38,0xe6,0xad, + 0x2c,0xdc,0x54,0x39,0xa3,0x9d,0xe0,0x92,0xd4,0xd3,0x79,0x72,0x6a,0xa3,0x3f,0x35, + 0x07,0x9a,0x48,0xa6,0x96,0x24,0xe0,0xd3,0x8e,0xa6,0x91,0xa5,0x63,0xff,0xd7,0xe9, + 0x3c,0x67,0x6b,0x0d,0xdc,0x2c,0x02,0x8e,0x95,0xf2,0x4f,0x89,0xfc,0x3f,0xb2,0x77, + 0x72,0x31,0xd6,0xbe,0xa3,0x9f,0x54,0x5b,0x95,0xc3,0x1c,0xf1,0xde,0xbc,0xa7,0xc5, + 0x16,0x6b,0x3a,0x16,0x41,0x9e,0xbd,0xab,0xf3,0x7c,0xff,0x00,0x0a,0xa5,0x2f,0x6a, + 0x8f,0xf4,0x8a,0x96,0x49,0x87,0xc6,0xc5,0x46,0xb4,0x53,0x3e,0x67,0xba,0xb4,0x3b, + 0x8a,0x01,0xdf,0x9a,0xe7,0xee,0xb4,0x69,0xa6,0x6c,0xa0,0xeb,0xf8,0xd7,0xaf,0xbe, + 0x85,0x2c,0xd3,0x9d,0xc3,0x83,0x5d,0x4e,0x9d,0xe1,0x18,0xd8,0x06,0x74,0xf4,0xaf, + 0x17,0x0f,0x4a,0xa4,0xb5,0x89,0xf3,0x5c,0x47,0xe1,0x9e,0x59,0x8a,0x87,0x23,0x82, + 0x3e,0x6a,0x5f,0x08,0xdf,0x4a,0x72,0xa0,0xff,0x00,0x9e,0xd4,0x93,0x78,0x1b,0x50, + 0x00,0xb0,0xdd,0xc7,0x61,0xda,0xbe,0xbe,0x83,0xc3,0x16,0x91,0x28,0xdc,0xa3,0x83, + 0xde,0xad,0x5c,0xe8,0x36,0x46,0x32,0x36,0x0a,0xf4,0xe1,0x86,0xab,0x6b,0xc9,0x9f, + 0x9c,0xd7,0xf0,0x43,0x2f,0x71,0xb4,0x11,0xf0,0x85,0xf6,0x8f,0xa8,0x59,0x1c,0x90, + 0x48,0xe7,0xb5,0x61,0xb1,0x93,0x04,0x73,0xef,0x9a,0xfa,0xf3,0x5d,0xf0,0xb4,0x12, + 0x83,0xb5,0x07,0xe1,0x5e,0x21,0xaf,0x78,0x4c,0xc5,0xbd,0xe3,0x52,0x31,0x5d,0x38, + 0x4c,0x45,0x39,0x54,0xf6,0x55,0x37,0x3f,0x28,0xe2,0xdf,0x08,0x31,0xb9,0x7c,0x65, + 0x5f,0x0c,0xaf,0x15,0xd0,0xf2,0x49,0x41,0x27,0x23,0xd2,0xb2,0x6e,0x14,0x9e,0x17, + 0x93,0x5d,0x2c,0xd6,0xb2,0x09,0x4c,0x44,0x73,0x9c,0x62,0xbb,0x1d,0x0b,0xc1,0x72, + 0x5e,0x28,0x92,0x44,0xeb,0x5e,0xfe,0x23,0x0f,0x0a,0x50,0x4c,0xfc,0xd7,0x26,0xe1, + 0xdc,0x5e,0x3e,0xbf,0xd5,0xe9,0x43,0x55,0xb9,0xe2,0xb2,0x24,0xcb,0xf3,0x15,0x38, + 0xab,0x10,0x31,0xc8,0xcf,0x35,0xee,0x3a,0xbf,0x81,0x7e,0xcd,0x11,0x91,0x57,0xa0, + 0xe7,0x8a,0xf2,0x5b,0xfd,0x38,0xd9,0xce,0x42,0xf0,0x33,0xcd,0x4e,0x5b,0x5e,0x2e, + 0xa7,0x2b,0x3d,0x9e,0x22,0xe0,0xbc,0x66,0x53,0x05,0x52,0xae,0xc5,0x66,0x3b,0x86, + 0x0f,0x5f,0x5a,0x96,0x0b,0x7d,0xed,0x44,0x20,0x9e,0x2b,0x7e,0xca,0xd7,0x77,0x38, + 0xaf,0xa3,0xad,0x2e,0x58,0xe8,0x7c,0x64,0x9e,0x81,0x6f,0x66,0x0a,0x93,0x8e,0x82, + 0xb2,0xb5,0x3b,0x45,0xe4,0xe3,0xa7,0x6a,0xf4,0x0b,0x6b,0x55,0x2b,0xc2,0xf6,0xac, + 0x4d,0x5e,0xdd,0x44,0x6c,0x47,0x15,0xf2,0xd5,0xb1,0x32,0x75,0x35,0x22,0x32,0xe8, + 0xcf,0x0b,0xd5,0xa2,0xda,0xc7,0x8c,0x7a,0xff,0x00,0x4a,0xc7,0xb5,0xb7,0x69,0x1c, + 0x67,0xd6,0xba,0xed,0x5e,0xdb,0x74,0x9c,0x8f,0xf2,0x29,0x9a,0x4e,0x9f,0x99,0x46, + 0x47,0xd3,0xde,0xbd,0x68,0xd7,0x51,0xa5,0x74,0x6a,0x99,0xd3,0xe8,0x1a,0x66,0x76, + 0xe4,0x7a,0x57,0xb0,0xd8,0x69,0xb1,0x88,0x73,0x8e,0x80,0x57,0x2b,0xa1,0x59,0xaa, + 0x05,0x38,0xc7,0xa1,0xae,0xed,0x24,0x58,0x63,0xc6,0x3a,0x0e,0x7d,0xeb,0xe7,0x71, + 0x55,0xa4,0xe5,0x72,0x8e,0x43,0x5b,0x81,0x19,0x31,0x81,0x91,0x9a,0xe6,0xb4,0xed, + 0x2d,0x5e,0xef,0x81,0x9a,0xe8,0xf5,0x39,0x8c,0x92,0x1c,0x1e,0x33,0x9e,0x2a,0xc6, + 0x84,0x83,0xed,0x03,0x23,0x38,0x34,0x7b,0x46,0xa3,0x61,0xc7,0x74,0x7b,0x77,0x82, + 0x74,0x04,0xf2,0xd5,0xca,0xf6,0xcf,0x4a,0xeb,0x35,0xed,0x1e,0x11,0x6e,0x4f,0x42, + 0x07,0xe5,0x50,0x78,0x62,0x6f,0x22,0xdd,0x46,0x7b,0x53,0xfc,0x45,0xa9,0x28,0x8d, + 0x86,0xee,0x00,0xaf,0x1e,0xbd,0x27,0x26,0xcf,0x7f,0x27,0xc6,0x3c,0x3e,0x22,0x33, + 0x47,0x80,0x6a,0xd0,0x7d,0x9e,0xec,0xb0,0xf5,0xc1,0xa8,0x12,0x5c,0x8f,0x6e,0x94, + 0xed,0x7e,0xfa,0x37,0x98,0xec,0x6e,0xf5,0x9f,0x04,0xa1,0x80,0x20,0xf2,0x7d,0x6b, + 0x89,0x45,0xc5,0x5b,0xa1,0xfd,0xb5,0xc1,0x19,0xc2,0xc4,0xe0,0x20,0xcd,0x64,0x72, + 0x32,0x4d,0x4c,0xb2,0x91,0xcf,0x5a,0xa2,0xa4,0x10,0x72,0x69,0xc1,0xf0,0x32,0x69, + 0x58,0xfb,0x49,0xe2,0x2c,0xb4,0x2f,0x99,0x49,0x1d,0x69,0x7c,0xf2,0x31,0x9e,0x6b, + 0x3b,0x70,0x38,0x3e,0xb4,0xcf,0x30,0xfa,0xd7,0x45,0x19,0x5b,0x43,0xcc,0xaf,0x88, + 0xbb,0xb9,0x79,0xa6,0xe7,0x9e,0xa2,0x98,0x66,0xe7,0xd0,0x55,0x13,0x27,0x7a,0x8f, + 0xcc,0xcf,0x5a,0xd9,0x6e,0x65,0xed,0xee,0x8d,0x14,0x71,0x9e,0xa3,0xda,0xad,0x2c, + 0xcc,0xa3,0x83,0x8a,0xc5,0x49,0x40,0xc7,0x27,0xd2,0xae,0xab,0x02,0xa3,0x3d,0x31, + 0x5d,0x09,0x5d,0x09,0x55,0x65,0xb6,0xb9,0x63,0xc5,0x4d,0x15,0xc9,0xc6,0x3f,0xad, + 0x63,0x48,0xdc,0xe2,0x91,0x24,0x28,0xdf,0xca,0xb1,0x9a,0x7d,0x4e,0x8a,0x75,0xdd, + 0xec,0x5f,0xd4,0x24,0x57,0x42,0x3b,0xd7,0x0d,0x71,0xf2,0xc8,0x41,0xae,0x92,0x79, + 0xb2,0x87,0x9a,0xe5,0xae,0xbe,0xf9,0xac,0x3a,0x8e,0xbd,0x5d,0x13,0x25,0x8d,0xff, + 0x00,0xfd,0x75,0x8f,0xac,0xc9,0x88,0x1b,0x3c,0xf1,0xd6,0xb4,0x22,0x70,0x07,0x27, + 0xa5,0x60,0xeb,0x77,0x1f,0xb9,0x23,0xd7,0x35,0xd5,0x82,0xa7,0x7a,0xa8,0xf9,0x4e, + 0x2e,0xc7,0x28,0x65,0xd3,0xd7,0xa1,0xe3,0xda,0x8e,0x3e,0xd2,0xd8,0xe7,0x15,0x9f, + 0x90,0x4d,0x59,0xbd,0x60,0xd7,0x0c,0xdd,0xf3,0x55,0x72,0x6b,0xf4,0x6a,0x5a,0x45, + 0x1f,0xc2,0xf8,0xd9,0x73,0x57,0x9b,0xf3,0x17,0x85,0xf7,0xa7,0xae,0x09,0x04,0x77, + 0xa8,0xa9,0xe9,0x80,0xc3,0xdb,0xf5,0xad,0x4e,0x55,0xb9,0xf6,0xff,0x00,0xec,0x8f, + 0xe1,0x6b,0x6d,0x77,0xc6,0x30,0xdc,0x5f,0x20,0x6b,0x5b,0x15,0xfb,0x4c,0xc0,0x8e, + 0x08,0x5e,0x15,0x4f,0xfb,0xcd,0xfc,0xab,0xf6,0x63,0x5e,0xf0,0x5d,0xff,0x00,0xc5, + 0x1f,0x07,0xa5,0xac,0x17,0x31,0xd8,0xda,0xd8,0xc8,0x92,0x41,0x2c,0x83,0x11,0xef, + 0xc1,0x4d,0xbc,0x73,0xce,0x71,0xc7,0x4a,0xfc,0xbf,0xfd,0x8b,0xfc,0x3f,0x24,0xfa, + 0x6d,0xd5,0xce,0x0a,0x8b,0xdb,0x84,0x89,0x9c,0xff,0x00,0x0c,0x51,0x0d,0xcc,0x4f, + 0xb6,0x4f,0x35,0xfa,0x2b,0xab,0xeb,0x53,0xeb,0x76,0xb2,0xe8,0x7a,0x5d,0xc3,0xc7, + 0xa7,0xa2,0x98,0x6d,0xf6,0x31,0x40,0x70,0x3f,0xd6,0x1c,0x60,0x92,0x4f,0x23,0x3d, + 0x06,0x31,0x5f,0xa5,0xe5,0xb0,0xa7,0x86,0xc9,0xa3,0xcf,0x1b,0xf3,0xfe,0x3d,0xbf, + 0x0b,0x1f,0xb7,0xf0,0xe5,0x09,0x42,0x8d,0x09,0xc5,0xd9,0xad,0x7d,0x0f,0x92,0x75, + 0xcd,0x36,0xf3,0xc3,0xda,0xcd,0xee,0x89,0x7f,0xb7,0xcf,0xb2,0x95,0xa2,0x72,0x87, + 0x2a,0x48,0xee,0xa7,0xb8,0x23,0x91,0x5b,0x5e,0x0e,0xf0,0x2e,0xbb,0xe3,0x3d,0x56, + 0x3b,0x4d,0x2a,0x06,0x97,0x71,0xe4,0x81,0xc2,0x83,0xdd,0x8f,0x40,0x2a,0xee,0x9d, + 0xe0,0x7d,0x7f,0x56,0xf1,0x82,0xe8,0x97,0xca,0xe6,0x56,0x60,0x5e,0x57,0xcb,0x0d, + 0x83,0x8d,0xdb,0x8f,0x51,0x8e,0x9f,0x95,0x7d,0xe7,0xe1,0x2b,0x0d,0x2f,0xc1,0x76, + 0x91,0x69,0xba,0x64,0x20,0x6d,0x00,0xc8,0xc0,0x7c,0xf2,0xbf,0xa9,0x3f,0xc8,0x76, + 0xac,0x32,0xac,0xaa,0x78,0xc4,0xe4,0xf4,0x8a,0xfe,0xac,0x7e,0x8f,0x9a,0xe6,0x8b, + 0x0f,0x08,0xf2,0x3b,0xc9,0xaf,0xe9,0x9e,0x70,0x9f,0x0a,0xbc,0x59,0xf0,0xe7,0x45, + 0x3a,0x9e,0x99,0xa5,0x2d,0xe4,0xa8,0x85,0xa4,0xb9,0x56,0x0f,0xe5,0xe0,0x64,0xe1, + 0x07,0x39,0x1e,0xbc,0xd7,0x8a,0x4b,0xab,0xcf,0x79,0x71,0x2c,0xf7,0x72,0xb4,0x92, + 0xca,0x49,0x62,0xdd,0x4d,0x7e,0x82,0x59,0xeb,0xfa,0xc5,0xdd,0x93,0xc7,0x02,0xc1, + 0x99,0x32,0xa2,0x36,0x75,0x27,0x6f,0x4e,0x79,0x3f,0xca,0xbe,0x3b,0xf8,0x93,0xf0, + 0xcf,0xc5,0x7a,0x65,0xcd,0xdf,0x8a,0x57,0x4d,0x44,0xd3,0x9d,0x8b,0x48,0x6d,0x9c, + 0x48,0x23,0x27,0xab,0x32,0x8e,0x54,0x1f,0xca,0x96,0x73,0x82,0xaf,0x46,0x09,0x73, + 0x7b,0xab,0xa2,0x3c,0xec,0x8b,0x1f,0x1a,0x95,0xa4,0xb1,0x56,0xe6,0x7b,0x3e,0xbe, + 0x9a,0xfe,0x87,0x8e,0x5c,0xb0,0x69,0xdd,0xc8,0xc8,0xf5,0xab,0xd6,0x1a,0x91,0x84, + 0xaa,0xa9,0xc5,0x61,0x92,0xd2,0x97,0xc0,0xc9,0x27,0xf3,0xaf,0x7f,0xf8,0x6f,0xe0, + 0x0d,0x22,0xca,0x25,0xd6,0x3c,0x53,0x18,0xb9,0x99,0x86,0xf8,0xad,0x5f,0xfd,0x5a, + 0x67,0x91,0xe6,0x0f,0xe2,0x6f,0xf6,0x7a,0x0e,0xf5,0xe3,0xe0,0x72,0xda,0xd8,0x9a, + 0x8a,0x14,0x91,0xf5,0x18,0xec,0xc7,0x0f,0x83,0xa7,0xcf,0x59,0xfc,0xbb,0x99,0xda, + 0x3d,0xde,0xac,0xd6,0xcd,0x77,0x04,0x72,0xac,0x7f,0xc3,0x28,0x04,0x2e,0xee,0xc0, + 0x1e,0xe7,0xe9,0x5d,0x7f,0xc3,0xad,0x02,0xf2,0x0b,0xb7,0xbb,0xd4,0x17,0xed,0x29, + 0x70,0xfe,0x5c,0xd1,0x48,0x37,0x24,0xa8,0xc4,0x97,0x0e,0x0f,0x07,0x24,0xd7,0x5d, + 0xab,0xc9,0x1d,0xeb,0x43,0x6e,0x10,0x44,0x80,0xfe,0xed,0x50,0x61,0x54,0x7b,0x28, + 0xc0,0x18,0xc7,0x15,0xd6,0xe9,0x8f,0x6f,0x63,0x66,0xbc,0x63,0xb9,0xf5,0x25,0x7a, + 0x57,0xe9,0x19,0x4e,0x51,0x0c,0x35,0x27,0x19,0xbe,0x66,0xcf,0xce,0xf3,0x1c,0xe5, + 0xd6,0x97,0x34,0x23,0x64,0x69,0xcf,0xf0,0x67,0xc2,0x2e,0xed,0xaa,0x68,0x56,0xa2, + 0x19,0x82,0x86,0xfb,0x14,0x92,0x13,0x0b,0x9e,0xfb,0x09,0xc9,0x5f,0xa6,0x71,0xe9, + 0x8a,0xf3,0x4d,0x5a,0xdb,0xc1,0x37,0x2d,0x2e,0x95,0x7b,0xa4,0x0b,0x6b,0x98,0xce, + 0xd6,0x03,0x28,0xca,0x47,0xb5,0x7a,0xf5,0xae,0xb5,0x32,0x85,0x70,0x79,0x07,0xa7, + 0xf9,0xff,0x00,0x22,0xb9,0xef,0x19,0xe9,0x96,0xfe,0x23,0x51,0xac,0xdb,0x45,0x8b, + 0xeb,0x58,0xc8,0x97,0x18,0x1e,0x6c,0x63,0x90,0x47,0xab,0x2d,0x79,0x39,0x9e,0x47, + 0x5a,0xdc,0xd4,0xa5,0x65,0xe8,0x85,0x97,0x66,0xd2,0x75,0x39,0x6b,0xb7,0x2e,0xd7, + 0x7a,0xa3,0xe6,0x6d,0x67,0xc0,0xd6,0xb1,0xbb,0x4f,0xa2,0x5c,0xec,0xea,0x56,0x39, + 0x7f,0x90,0x61,0xfd,0x6b,0xcf,0xa4,0xbe,0xbf,0xd3,0xe6,0x7b,0x6b,0xcc,0xa3,0x29, + 0xe8,0x7f,0xa1,0xef,0x5e,0xa1,0xaf,0x5d,0x11,0x16,0x63,0x6e,0x40,0xaf,0x32,0x9e, + 0xce,0xf3,0x58,0xb8,0x58,0xad,0xe3,0x79,0xa6,0x3c,0x05,0x50,0x58,0xfe,0x18,0xaf, + 0x8d,0xc5,0x61,0x6b,0x26,0xa2,0xd5,0xdf,0x91,0xfa,0x26,0x5b,0x5e,0x2e,0x2d,0xce, + 0x5a,0x79,0x9a,0x4b,0x63,0x73,0xaf,0x46,0xab,0x69,0x03,0xdc,0x4c,0xe7,0x6a,0xa4, + 0x6a,0x59,0xd8,0xfb,0x01,0xd6,0xb9,0xad,0x6a,0xcb,0x54,0xd0,0x9e,0x2b,0x5d,0x4a, + 0xda,0x7b,0x63,0x9f,0x94,0x4f,0x1b,0xc6,0x4f,0xb0,0xdc,0x06,0x6b,0xea,0x8f,0x85, + 0x1e,0x17,0xb9,0xf0,0xb5,0xe4,0x1a,0x86,0xa3,0xb0,0xce,0x53,0x28,0x17,0xe6,0x54, + 0x2d,0xd3,0x27,0xd7,0xf9,0x57,0xd4,0x17,0xfa,0x9e,0x95,0xad,0xd8,0x36,0x97,0xe2, + 0x3b,0x2b,0x6b,0xf8,0xa4,0xeb,0x1d,0xc4,0x49,0x22,0xfe,0x19,0x07,0xf4,0xaf,0x56, + 0x97,0x0f,0x62,0x55,0x38,0xd4,0x92,0xd5,0xf4,0x3e,0x57,0x1d,0xc5,0xd1,0xa1,0x8b, + 0x74,0xe9,0xc1,0x4e,0x3e,0xb6,0xfb,0xb4,0x67,0xe7,0xdf,0x80,0x35,0x03,0x70,0xd3, + 0x69,0xc4,0x8c,0xdc,0x26,0xd4,0xcf,0x69,0x17,0xe6,0x41,0xf8,0x9e,0x2b,0x6f,0x5a, + 0x98,0xba,0x72,0x39,0xe7,0x23,0xd0,0xf7,0xae,0xcb,0xe2,0x77,0xc2,0xc8,0x3c,0x2f, + 0x75,0x1f,0x88,0xfc,0x00,0x18,0xda,0xcb,0x34,0x62,0x5b,0x24,0x25,0xde,0xdd,0xd8, + 0xe1,0x4c,0x7d,0x49,0x52,0xdc,0x60,0xfd,0xd3,0xed,0xd3,0xbf,0xf0,0x8f,0x81,0xfc, + 0x3f,0xae,0xc0,0x75,0x4f,0x13,0x45,0x32,0xcf,0x27,0xcb,0x25,0x98,0x63,0x16,0xc9, + 0x07,0xdf,0xdc,0x47,0x3c,0x9e,0x40,0xe2,0xbd,0x1c,0x2d,0x1a,0xd1,0x8b,0xa2,0xe3, + 0xb1,0x86,0x23,0x1d,0x41,0xcb,0xeb,0xb0,0xf8,0x65,0xd3,0xaa,0x67,0xc6,0x5a,0xc3, + 0x63,0x76,0x46,0x7a,0xd7,0x92,0x6b,0x13,0x2a,0xb1,0x5c,0x9f,0xf0,0xaf,0xd4,0x9b, + 0xef,0x84,0x7f,0x09,0xb5,0x1c,0xb3,0x69,0xb3,0x46,0x43,0x0e,0x22,0xb9,0x93,0x07, + 0x1d,0x77,0x06,0x27,0xaf,0x7a,0xf0,0x1f,0x88,0x3f,0xb2,0xac,0x37,0xd1,0x5c,0x6a, + 0x5f,0x0f,0xf5,0x2d,0xf2,0x22,0xbc,0x82,0xc2,0xf0,0x05,0x2c,0x73,0x90,0x91,0xc9, + 0x9e,0x30,0xbc,0x0d,0xc0,0xf4,0x19,0x3c,0xe6,0xb1,0xc6,0xe1,0xb1,0x0a,0x0d,0xa8, + 0x9a,0x61,0xf8,0x83,0x09,0x57,0xdd,0xd5,0x7a,0xff,0x00,0xc0,0xb9,0xf0,0x79,0x63, + 0x82,0x6b,0xca,0x3e,0x21,0x5d,0x6d,0xd3,0xa6,0x04,0xe3,0xe5,0x35,0xec,0x5a,0xae, + 0x93,0xa8,0x68,0xb7,0x73,0xe9,0xda,0xad,0xbc,0x96,0xb7,0x56,0xcc,0x52,0x58,0xa4, + 0x1b,0x5d,0x18,0x76,0x20,0xfe,0x87,0xa1,0xed,0x5e,0x09,0xf1,0x33,0xcd,0x3a,0x6c, + 0xcc,0xbc,0x64,0x1e,0x95,0xf2,0xb9,0x8d,0x4f,0x67,0x45,0xf3,0x1c,0x19,0xbd,0x55, + 0x1a,0x13,0x97,0x91,0xf1,0x1e,0xa8,0x4b,0x5f,0x4e,0x47,0xf7,0xcd,0x41,0x67,0x19, + 0x96,0x74,0x50,0x7a,0x9a,0x7d,0xec,0x52,0x24,0xee,0x5c,0x1f,0x98,0x93,0xcd,0x6a, + 0xf8,0x6a,0xcd,0xae,0x75,0x08,0xc0,0x1f,0xc4,0x2b,0xe5,0x2b,0xd6,0x50,0xa1,0x29, + 0xdf,0x64,0x7f,0x3d,0x38,0xfb,0x4a,0xfc,0xab,0xab,0x3e,0xcc,0xf8,0x1d,0xa3,0x91, + 0x3c,0x0c,0x57,0xb8,0xff,0x00,0x3c,0x57,0xea,0x87,0x82,0x10,0x41,0x65,0x1a,0xe3, + 0x19,0x02,0xbe,0x0d,0xf8,0x23,0xa0,0x6d,0x58,0x5c,0xaf,0xa5,0x7e,0x80,0xf8,0x7e, + 0x03,0x1c,0x51,0xa0,0x04,0x0c,0x57,0xf1,0x47,0x88,0xb9,0x82,0xc4,0xe3,0xa7,0xa9, + 0xfb,0x96,0x4b,0x85,0xf6,0x58,0x68,0xa3,0xd6,0x34,0xc7,0x24,0x2e,0x3b,0x57,0x5d, + 0x6e,0x4e,0xde,0x6b,0x94,0xd2,0x60,0x66,0x55,0xcd,0x76,0x50,0xc7,0xb1,0x00,0x3f, + 0x8d,0x7e,0x59,0x29,0x5c,0xf6,0x62,0xac,0xc5,0x30,0xf3,0x9a,0x9e,0x28,0x63,0xcf, + 0x3c,0x55,0x77,0x71,0xeb,0x50,0x3d,0xd3,0xa7,0x43,0x58,0x42,0x85,0x3b,0xdd,0x9b, + 0x4a,0xb4,0xfa,0x1b,0xc2,0xce,0x06,0x5e,0xbc,0xd6,0x4d,0xc6,0x96,0x18,0x92,0xbf, + 0xa5,0x50,0x3a,0x8d,0xc6,0xec,0x2f,0x4c,0xd6,0xc5,0xa5,0xc3,0x30,0xcb,0x71,0x45, + 0x5c,0x3d,0x09,0xe8,0x95,0x87,0x4f,0x11,0x52,0x3e,0xf3,0x39,0xc9,0x21,0x9a,0xd5, + 0xb0,0xc3,0x8f,0x5a,0x96,0x39,0xb3,0xd4,0xd7,0x69,0xf6,0x38,0xae,0xd3,0x38,0xe6, + 0xb9,0xcb,0xbd,0x26,0x48,0x5c,0x94,0x1c,0x57,0x97,0x8c,0xcb,0x67,0x4f,0xde,0x5a, + 0xa3,0xd1,0xc3,0xe3,0x61,0x3d,0x25,0xb9,0x0c,0x6d,0x9e,0x95,0x7e,0x18,0x8b,0x1e, + 0x95,0x0d,0xad,0xb3,0x16,0x01,0x81,0x04,0x56,0xf4,0x50,0x84,0x03,0x34,0xb0,0x78, + 0x6b,0xea,0xf6,0x23,0x15,0x88,0x4b,0x44,0x7f,0xff,0xd0,0xe3,0x21,0xbe,0x6d,0xe4, + 0x67,0x19,0x34,0xb7,0x78,0x9d,0x39,0xe4,0x11,0xcd,0x62,0x43,0x26,0x64,0xc9,0x3d, + 0xfa,0x56,0xa1,0x90,0x6d,0xce,0x7f,0x3a,0xf8,0xac,0x7c,0x39,0xe0,0xd1,0xfe,0x9c, + 0x61,0x25,0xca,0xca,0x11,0x59,0x44,0x8f,0x92,0x3a,0xfe,0x35,0xb3,0xf6,0x88,0xa0, + 0x8f,0x19,0xed,0x9a,0xc1,0x9e,0xf3,0xcb,0x1c,0x9c,0x62,0xb9,0xeb,0xbd,0x4f,0x3f, + 0x28,0x27,0x35,0xe6,0x61,0xe5,0x18,0xc2,0xc8,0xde,0xb4,0x65,0x39,0x5c,0xde,0xbf, + 0xd6,0xc4,0x45,0x82,0x9a,0xc3,0x5d,0x7e,0x77,0x7d,0xa1,0xf8,0xcd,0x73,0xf3,0xca, + 0xd3,0x37,0x3c,0xd4,0x70,0x44,0xd9,0x18,0xef,0xc5,0x53,0xbc,0x99,0x50,0x8a,0x89, + 0xdb,0x47,0x30,0xba,0x4f,0x98,0x83,0x5c,0xc6,0xbb,0xa3,0xc7,0x2c,0x44,0xa8,0x19, + 0x39,0xad,0x3b,0x5d,0xe9,0x8c,0x55,0xe9,0xff,0x00,0x7a,0xb8,0x3d,0x87,0xf9,0xe2, + 0xbc,0x7c,0x5c,0x65,0x4e,0xaf,0x32,0x0c,0x46,0x0e,0x96,0x2a,0x8b,0xa7,0x34,0x78, + 0x04,0x9e,0x11,0xdf,0x7a,0x24,0x0b,0xdf,0x91,0x8a,0xf6,0x4f,0x0e,0xe8,0x31,0xc3, + 0x00,0xca,0xe7,0x8e,0x46,0x3a,0x55,0xe8,0xac,0x61,0x66,0xce,0x39,0xf5,0xae,0xa6, + 0xdf,0x52,0xd2,0xb4,0xeb,0x71,0x0b,0x28,0x69,0x1c,0x63,0x19,0xe9,0xf8,0x0a,0xf6, + 0xbe,0xbc,0xdd,0x35,0x2a,0x8f,0x44,0x7c,0x46,0x4d,0xc0,0x98,0x6c,0x1e,0x26,0x75, + 0x68,0xc3,0x56,0x79,0xaf,0x8b,0x2d,0xed,0xe1,0x81,0x95,0x54,0x64,0x82,0x2b,0xe4, + 0xdf,0x12,0x47,0x8b,0x97,0x0b,0xc0,0xcd,0x7d,0x65,0xe3,0x18,0x9b,0x69,0x99,0x79, + 0x46,0x19,0x07,0xaf,0x15,0xf2,0xff,0x00,0x88,0xa2,0xcd,0xc1,0x6f,0x7c,0xfd,0x6b, + 0x7c,0xb2,0xa7,0x3e,0x21,0x48,0xfc,0x8f,0xc7,0x3b,0x51,0xc1,0xfb,0x3b,0x59,0x9c, + 0x6c,0x09,0xf3,0x73,0x5d,0x55,0x9a,0x63,0x19,0xeb,0xc5,0x61,0x47,0x19,0xce,0x6b, + 0x76,0xd3,0x77,0x5a,0xfa,0xbc,0x74,0xed,0x4e,0xe7,0xf2,0x5b,0x95,0xb7,0x3a,0x7b, + 0x6d,0x98,0xc6,0x7b,0x1a,0xc2,0xd5,0xf9,0x46,0x03,0xf0,0xf7,0xad,0x58,0x88,0xdb, + 0x9e,0xd5,0x9b,0xa9,0x65,0x90,0x90,0x2b,0xe5,0x25,0x3b,0xcc,0x7b,0x9e,0x53,0x7f, + 0x06,0x64,0x3e,0xf9,0xad,0x4d,0x1e,0xc8,0x96,0x0c,0x7a,0xfb,0x54,0xb7,0x56,0xd9, + 0x97,0xd4,0x9a,0xe8,0x74,0x6b,0x5f,0x9c,0x64,0x1e,0x3d,0xab,0xd1,0x8c,0xbd,0xcd, + 0x46,0xd9,0xd8,0xe9,0x76,0x0a,0x63,0x1f,0xa5,0x6c,0xcd,0x6a,0x22,0x88,0x9c,0x73, + 0x5a,0xda,0x4d,0x89,0x64,0x0d,0x8e,0x98,0xe2,0xae,0xea,0x10,0x08,0xd1,0xb2,0x3b, + 0x57,0x02,0xa6,0x9c,0xb5,0x0e,0x63,0xc7,0xf5,0x34,0xda,0xe7,0x6e,0x2a,0x4d,0x1e, + 0x46,0x59,0x83,0x67,0x1c,0xd3,0xf5,0x72,0x15,0xd8,0x77,0xaa,0x9a,0x4b,0x13,0x38, + 0x00,0x67,0x9f,0xd2,0xbb,0x15,0x15,0xcb,0xa0,0x5d,0xa3,0xdd,0xf4,0xab,0xe9,0x05, + 0xb0,0x19,0xc7,0x02,0xb9,0x3f,0x13,0x6a,0xf2,0x6d,0x61,0xbb,0xaf,0x15,0x72,0xde, + 0x72,0x96,0xb9,0xce,0x38,0xae,0x23,0x5a,0x73,0x21,0x6c,0xfb,0xf5,0xae,0x37,0x46, + 0x37,0xd4,0xb8,0xcd,0xad,0x51,0xc0,0xdd,0x5c,0xcd,0x2d,0xc9,0x24,0x9e,0xbf,0x9d, + 0x6d,0x5a,0x48,0xc6,0x30,0x5f,0x93,0xdf,0xe9,0x59,0x52,0x42,0x0c,0xa5,0xbd,0x4d, + 0x6b,0x5b,0xc6,0x11,0x33,0xfa,0x9a,0xe5,0xcc,0x30,0xca,0x29,0x4a,0x27,0xf4,0x2f, + 0x85,0xdc,0x51,0xcb,0x6c,0x3c,0xe4,0x6a,0x24,0xa4,0x63,0xff,0x00,0xd7,0x4e,0x32, + 0x8e,0xa2,0xb3,0x84,0x98,0x24,0xd3,0x8c,0x87,0xbd,0x79,0x51,0x82,0xb9,0xfd,0x05, + 0xfd,0xa0,0x9c,0x6d,0x72,0xef,0x99,0xc6,0x0f,0x4a,0x42,0xe4,0xf1,0x9e,0xbd,0xaa, + 0x88,0x93,0x1d,0x0f,0x4a,0x7e,0xfc,0xf3,0x56,0xd5,0x8e,0x59,0xe2,0xae,0x4a,0x5f, + 0x03,0x19,0xa6,0x19,0x08,0x18,0x1f,0x9d,0x44,0xcd,0xc7,0xa1,0x1d,0xea,0x02,0xc0, + 0x1a,0xd1,0x32,0x21,0x89,0x77,0xd4,0xb6,0x24,0xea,0x3f,0x1a,0xb9,0x1c,0xc7,0x1e, + 0xb5,0x8e,0xcd,0x8e,0x86,0x84,0x9b,0x07,0x8a,0xb8,0x49,0xec,0x6a,0xf1,0x16,0x36, + 0xda,0x40,0x46,0x33,0xd2,0x99,0xbf,0x1d,0x2b,0x3d,0x67,0xc1,0x1c,0x8e,0x69,0xe5, + 0xce,0x32,0x3a,0x56,0x8c,0x23,0x8a,0x4b,0x76,0x3e,0x69,0x38,0xce,0x41,0x35,0x83, + 0x76,0x39,0x24,0x74,0xad,0x17,0x62,0x4f,0x1c,0x55,0x09,0xd4,0xb1,0xae,0x66,0xb5, + 0x37,0x96,0x26,0x2e,0x37,0x66,0x79,0x93,0x6a,0x92,0x7f,0x5f,0x6a,0xe3,0xb5,0xdb, + 0xaf,0x90,0x80,0xde,0xb5,0xd2,0x5e,0xc8,0x62,0x43,0xec,0x2b,0xcd,0x35,0x9b,0xbd, + 0xe4,0x8c,0xfe,0x55,0xed,0x65,0x34,0x39,0xa6,0x99,0xf9,0x57,0x88,0xb9,0xdc,0x29, + 0xe0,0xe5,0x04,0xce,0x5e,0x66,0x2f,0x21,0x62,0x7a,0xfe,0x75,0x18,0xa0,0x9c,0xf3, + 0xeb,0xda,0x8a,0xfb,0x64,0xb4,0x47,0xf2,0x94,0xe7,0xcd,0x27,0x26,0x1f,0x53,0xcd, + 0x49,0x12,0x97,0x95,0x53,0xa9,0x26,0xa3,0xae,0xef,0xe1,0xcf,0x86,0xdb,0xc4,0xfe, + 0x2c,0xd3,0xf4,0x9c,0x12,0x93,0x4c,0xbe,0x61,0x03,0xa4,0x63,0xe6,0x73,0xf9,0x0c, + 0x7d,0x4d,0x6b,0x4a,0x9c,0xaa,0x4d,0x42,0x3b,0xb3,0x6c,0x26,0x1e,0x55,0xeb,0x42, + 0x94,0x37,0x6c,0xfd,0x3d,0xfd,0x9a,0xe5,0x93,0xc2,0x9f,0x0c,0x2c,0x63,0x28,0x52, + 0xf3,0x59,0x32,0x88,0xf2,0x3e,0xec,0x0e,0x73,0x23,0xfd,0x4a,0xe0,0x0f,0xad,0x7d, + 0x41,0xa2,0xde,0x18,0xc0,0x1d,0x30,0x3f,0x4a,0xf0,0x7d,0x2d,0xed,0x93,0x57,0xb3, + 0xd3,0xec,0xd3,0x6c,0x5a,0x65,0x92,0xc3,0xb7,0xa0,0x05,0x8e,0x78,0x1f,0x42,0x2b, + 0xb9,0xba,0xd5,0x0d,0x95,0xb8,0x48,0xdb,0xf7,0xd2,0x1d,0xaa,0x2b,0xf4,0xec,0x46, + 0x1f,0xf7,0x70,0xc3,0xc7,0x68,0xa4,0x8f,0xe8,0x9c,0xbb,0x05,0x1a,0x70,0x85,0x35, + 0xdb,0xf2,0x3e,0x8f,0xf0,0xed,0xfd,0xbc,0xce,0xfa,0x86,0x15,0x7e,0xce,0xa4,0x19, + 0x31,0xd4,0x2f,0x38,0x2d,0xe9,0x5e,0x45,0x71,0xf1,0x46,0xfb,0x51,0xf1,0x24,0xd7, + 0x50,0x33,0x7d,0x9f,0x79,0x8e,0x18,0xc1,0xc0,0x08,0x0e,0x37,0x1f,0x76,0xc6,0x7e, + 0x94,0xcd,0x4b,0x55,0x9f,0x4f,0xf0,0x8c,0x1a,0x65,0xb9,0x2b,0x25,0xc6,0x7c,0xc2, + 0x0f,0x3b,0x40,0xcb,0x73,0xee,0x70,0x2b,0xcb,0xb4,0x60,0x23,0xb8,0xd8,0xb9,0xf3, + 0x19,0xb3,0xcf,0x5f,0xc3,0xde,0xbe,0xa2,0x84,0x3d,0x8d,0x38,0x50,0x8e,0xc8,0xee, + 0xa7,0x86,0x8c,0xa5,0x29,0xc9,0x5f,0xa2,0x3e,0xad,0xd0,0x3c,0x41,0x3c,0xa5,0x6e, + 0xda,0x4f,0x27,0x9c,0xf5,0xc0,0xcf,0x71,0xef,0x5e,0xed,0xa4,0x78,0x84,0xdc,0x5a, + 0x30,0x69,0x41,0x59,0x06,0xcd,0x8c,0x32,0xac,0xbd,0xc1,0xc8,0xc6,0x3e,0xb5,0xf2, + 0x3e,0x97,0x3a,0xba,0x21,0x95,0xc6,0x62,0xc2,0xe7,0x1c,0x8c,0x9e,0x80,0x77,0xf6, + 0xef,0x5e,0x97,0x75,0xae,0x4d,0xa3,0xe9,0x90,0xda,0x16,0x6d,0xd3,0x65,0xbc,0xb1, + 0xc6,0x09,0x1c,0x67,0xf0,0xae,0x9a,0x95,0x23,0xcb,0x6a,0x8a,0xfe,0x47,0xcf,0x63, + 0x70,0xd2,0x9d,0x45,0xc8,0xed,0xfa,0x17,0x35,0xef,0x09,0x78,0x3a,0x0f,0x12,0xff, + 0x00,0x6b,0xe9,0x11,0x85,0x94,0x82,0xd2,0xc0,0xb8,0xfb,0x38,0x97,0x3c,0x3a,0x8e, + 0xdf,0xee,0xf4,0xcf,0x35,0x73,0xed,0x91,0x47,0x01,0x25,0xb9,0x2d,0xb4,0x13,0xdc, + 0x8e,0x2b,0x88,0x6d,0x52,0x08,0xd7,0xce,0xdf,0x99,0x1b,0x00,0x67,0x8e,0x71,0xc5, + 0x47,0xfd,0xa7,0x0f,0x92,0x76,0xe4,0x30,0xc7,0x1d,0x46,0x7b,0x9c,0x1a,0xe6,0xa1, + 0x42,0x9d,0x04,0xfd,0x9c,0x6d,0x72,0x6b,0xba,0xb5,0xb9,0x55,0x49,0x37,0x6d,0x8e, + 0xad,0xb5,0x46,0xfb,0x69,0x0c,0x78,0x8c,0x05,0x1c,0xfa,0xf3,0x9f,0xe5,0x5a,0x52, + 0xf8,0x9a,0x28,0xe1,0x8a,0xdc,0xb6,0xd2,0xf2,0x7f,0x16,0x31,0x85,0xef,0xef,0x5e, + 0x4b,0x7b,0xa8,0x3c,0x73,0x47,0x87,0xf9,0x9d,0x77,0x63,0xb7,0xcd,0xd3,0x26,0xb2, + 0x6f,0xaf,0xee,0xa6,0x98,0x42,0xfc,0x05,0xc2,0xa0,0x07,0xd3,0x96,0x35,0xa3,0xc4, + 0xc6,0x3b,0x9b,0xe1,0x72,0xc7,0x5a,0xcf,0xa1,0xef,0x43,0xc4,0xe3,0xcc,0x11,0xc2, + 0xd9,0x40,0x30,0xed,0x9e,0xc3,0xde,0xba,0xad,0x1b,0xc4,0x70,0x4c,0xeb,0x14,0x07, + 0xe6,0x1c,0xe7,0x19,0x24,0x1f,0x73,0xc0,0xaf,0x9a,0x22,0x9d,0x91,0x17,0x6b,0xb2, + 0xc3,0x80,0x4e,0x39,0x2e,0x7d,0xab,0xa5,0xb1,0xd6,0x99,0x66,0x8d,0xa0,0xf9,0x14, + 0x10,0x39,0xfb,0xa3,0xff,0x00,0xaf,0x5d,0x54,0x31,0x31,0x9a,0xd7,0x62,0x31,0x39, + 0x3c,0xa1,0xf0,0x9e,0x95,0xaa,0xf8,0x43,0x4a,0xd5,0x75,0x87,0x93,0x7b,0xc4,0x8f, + 0x97,0x78,0xd3,0x90,0xc4,0x9e,0x76,0x37,0x6f,0x53,0xd7,0xda,0xbb,0x0d,0x17,0xc3, + 0xf6,0x9a,0x3c,0x65,0x74,0xc8,0x16,0x10,0x46,0xd9,0x18,0x0f,0x99,0x87,0x7d,0xcd, + 0xd7,0x06,0xb8,0xdb,0x5d,0x56,0x6b,0x89,0xa1,0x9e,0x12,0x24,0x31,0x70,0xcc,0x4f, + 0x18,0x3d,0xbf,0x1f,0x6a,0xee,0x2f,0xbc,0x5e,0x4d,0xb2,0xc5,0xb3,0x09,0x12,0xf0, + 0xa7,0xef,0x0e,0x39,0x53,0x8f,0xcc,0x57,0x22,0xa3,0x46,0x8c,0xdc,0x94,0x0e,0x6c, + 0x6e,0x27,0x19,0x52,0x9c,0x29,0xc1,0xdd,0x3d,0x1a,0x2d,0xce,0x20,0xb0,0xb5,0xf3, + 0x41,0x07,0x61,0x3b,0x0e,0x72,0x09,0x3f,0xe7,0xad,0x71,0x9f,0xf0,0x99,0x79,0xf3, + 0xb7,0xce,0x77,0x44,0x49,0xc7,0x4c,0x8a,0xe4,0xf5,0xbf,0x15,0xca,0x85,0xe0,0xb7, + 0x38,0x88,0x8c,0xe3,0xae,0x7b,0xfe,0x15,0xe6,0xed,0xaa,0x6f,0x98,0x96,0x23,0x39, + 0x20,0xe3,0xb8,0x6e,0xff,0x00,0x9d,0x74,0xc2,0xbc,0x5b,0xba,0x0c,0x1e,0x55,0x24, + 0x9c,0xaa,0x2d,0x4f,0x79,0xb2,0xd7,0x2e,0xda,0x58,0x24,0x47,0xcb,0x5c,0xce,0xb1, + 0xaf,0x7e,0x09,0xdc,0x71,0x5d,0x15,0xa6,0xa1,0xb2,0x6d,0x5c,0xbb,0x03,0xfb,0xd0, + 0xf9,0x3d,0x72,0x46,0x09,0xfd,0x2b,0xc9,0x7c,0x2f,0x74,0xf1,0xea,0x1a,0x6c,0x12, + 0x37,0x99,0x1a,0xab,0x4d,0xc0,0xe5,0x58,0x1c,0x03,0x5b,0xe7,0x55,0x54,0xbb,0xbe, + 0x90,0x2e,0x4c,0x91,0xab,0x0c,0xe0,0x67,0x39,0xc5,0x5f,0x34,0x39,0xb9,0x98,0xab, + 0xa6,0xef,0x4d,0x6c,0x75,0x71,0x78,0xa6,0x1b,0x6d,0x40,0x09,0x59,0x42,0x92,0x00, + 0x5c,0x9e,0x73,0xde,0xb7,0x5f,0x5f,0x17,0x20,0x0b,0x66,0xe4,0xf0,0x31,0xe9,0xeb, + 0xf8,0xd7,0xcf,0x77,0xa6,0x4f,0x3d,0x27,0x57,0x39,0x52,0x73,0x8f,0xe9,0x5d,0xa6, + 0x93,0xa9,0x18,0xd1,0x5b,0x6f,0x1d,0x71,0xcf,0xcc,0x7d,0x49,0xac,0xe7,0x88,0x83, + 0x7a,0x9c,0xf5,0xf2,0xe9,0xf2,0xa9,0x53,0x0f,0x8b,0x3f,0x0e,0xac,0xfe,0x22,0xe8, + 0xbb,0xd5,0x52,0x3d,0x66,0xd2,0x3f,0xf4,0x4b,0xae,0x9b,0xf1,0xc9,0x86,0x52,0x3a, + 0xab,0x1e,0x84,0xe4,0xa9,0xe4,0x77,0xaf,0xca,0xcf,0x88,0x7e,0x18,0xbc,0xb7,0x86, + 0xef,0x4e,0xbe,0x85,0xa1,0xb9,0xb7,0x66,0x8e,0x58,0xdc,0x61,0x95,0x97,0xa8,0x3f, + 0xe7,0x9e,0xd5,0xfb,0x0c,0xba,0x83,0xcb,0x08,0xc7,0xca,0xaa,0x79,0x19,0xc7,0xff, + 0x00,0xae,0xbe,0x60,0xfd,0xa1,0x7c,0x17,0x6f,0xae,0x69,0x2f,0xe2,0x8b,0x68,0xc2, + 0xdd,0x5b,0x00,0x97,0x4a,0xa3,0x99,0x21,0x1d,0x1c,0xfb,0xc7,0xff,0x00,0xa0,0xfd, + 0x2b,0xf3,0xee,0x38,0xca,0x5d,0x5c,0x14,0xf1,0x18,0x55,0xef,0x45,0x5e,0xdd,0xd1, + 0xc7,0x88,0xc5,0x55,0xfa,0xad,0x4a,0x32,0xd4,0xfc,0x43,0xf1,0x4f,0x87,0x9a,0xd6, + 0x36,0x7d,0xa4,0x10,0x6a,0xdf,0xc3,0x3d,0x20,0xdd,0x6a,0x51,0xee,0x5e,0x37,0x57, + 0xb1,0x7c,0x43,0xd1,0xd0,0x46,0xc9,0x1a,0x8e,0xb5,0x5f,0xe1,0x6e,0x82,0x63,0xd4, + 0xe3,0xca,0xf1,0xb8,0x57,0xf3,0xee,0x6f,0x9b,0x72,0x65,0x75,0x24,0xd9,0xf9,0xee, + 0x4b,0x86,0x8d,0x5c,0x6c,0x2e,0x7e,0x83,0xfc,0x1e,0xf0,0xf6,0xcb,0x58,0x4e,0xde, + 0xc2,0xbe,0xbf,0xd2,0x34,0xa2,0x36,0x2e,0x2b,0xc8,0x7e,0x15,0xe9,0xa9,0x15,0x94, + 0x38,0x03,0x80,0x2b,0xe9,0xad,0x3a,0xde,0x28,0xd4,0x31,0x1d,0x85,0x7f,0x14,0x67, + 0x78,0x97,0x5b,0x15,0x39,0x48,0xfd,0xd6,0x9c,0x39,0x20,0xa2,0x8d,0x5b,0x0b,0x35, + 0x86,0x30,0x48,0xed,0x57,0x5d,0xc6,0x30,0x2a,0x8c,0xb7,0xaa,0xa3,0x6a,0x1e,0xdd, + 0xaa,0x01,0x72,0x18,0x0c,0x1a,0xf9,0xaa,0xb3,0xd6,0xc8,0xe8,0xa7,0x1b,0xea,0xcb, + 0x12,0x39,0x03,0x35,0x54,0xbe,0x4d,0x24,0xaf,0xf2,0x8c,0x54,0x6a,0xc4,0x9a,0x22, + 0xd2,0x45,0x72,0x17,0x21,0x40,0x5b,0x38,0xcd,0x5f,0x1f,0x29,0x18,0xe2,0xaa,0x42, + 0xa7,0x8a,0x9b,0x77,0xcc,0x41,0xea,0x2b,0x09,0x4a,0xec,0xa7,0x1d,0x2c,0x74,0x56, + 0x53,0x6d,0x20,0x1e,0x9e,0xb5,0xb6,0x23,0x8e,0x75,0xc3,0x57,0x31,0x6a,0xdc,0xfa, + 0xd6,0xfd,0xbc,0x98,0x00,0x1a,0xef,0xa1,0x89,0xbf,0xbb,0x2d,0x8e,0x0a,0xf4,0x9c, + 0x75,0x88,0x8d,0x62,0x89,0xc8,0xfd,0x2a,0xa4,0x83,0xb1,0xad,0xcd,0xc1,0x87,0x35, + 0x99,0x71,0x1e,0xd2,0x58,0x56,0x78,0x9a,0x6a,0x1e,0xf4,0x76,0x22,0x8d,0x56,0xdd, + 0xa4,0xcf,0xff,0xd1,0xf1,0x88,0x6f,0x30,0xf8,0xcf,0x7e,0xf5,0xac,0xb7,0x25,0xa3, + 0x35,0xc7,0x23,0x1d,0xd9,0x15,0xb9,0x09,0xf9,0x06,0x6b,0xe3,0x6a,0x2b,0xa6,0x8f, + 0xf4,0xce,0x13,0x5a,0x58,0xa7,0x7f,0x2b,0x63,0x9e,0x95,0xcb,0xcb,0x31,0x12,0x73, + 0xd3,0xa5,0x74,0x1a,0x83,0x0c,0x1a,0xe5,0x64,0x7f,0x9a,0xbc,0x18,0x46,0xd5,0x1a, + 0x3d,0x47,0x2b,0xc2,0xe5,0xe8,0xd8,0xb1,0xad,0xfb,0x38,0xc1,0xea,0x3f,0xc8,0xae, + 0x6e,0xd9,0xba,0x7a,0x66,0xba,0x6b,0x37,0x0a,0xa5,0xbd,0xab,0xd5,0xa1,0x05,0xb9, + 0xc1,0x39,0xea,0x6a,0xed,0x54,0x8c,0xd6,0x75,0xcd,0xc0,0x89,0x4b,0x74,0xa9,0x65, + 0xb8,0xf9,0x33,0xd3,0xb9,0xcf,0x6a,0xe6,0xa4,0x99,0xf5,0x0b,0xd1,0x6f,0x1f,0xdd, + 0xcf,0x5f,0xe7,0x5c,0x78,0xd8,0xa6,0xee,0xd1,0xd3,0x87,0xbf,0x43,0xa0,0xb4,0xbb, + 0x02,0xd6,0x5b,0xb9,0x86,0x15,0x47,0xcb,0x5c,0x9a,0x5e,0x79,0xd3,0x34,0xd9,0x24, + 0x13,0xc5,0x6b,0x78,0x87,0x50,0x45,0x8a,0x2d,0x07,0x4c,0x4f,0x32,0x56,0xc0,0x21, + 0x39,0x3f,0xa5,0x7a,0x4f,0x83,0x3e,0x03,0x78,0x87,0x56,0xb5,0x4d,0x43,0x57,0x99, + 0x34,0xf8,0x58,0x06,0x0a,0xfc,0xc8,0x41,0xff,0x00,0x64,0x74,0xaf,0x27,0x11,0x85, + 0xaf,0x88,0x92,0xc3,0xe1,0xa3,0xcd,0x6d,0xed,0xfe,0x67,0xb1,0x43,0x17,0x87,0xc2, + 0x41,0xd6,0xc4,0x4a,0xd7,0xdb,0xfe,0x18,0xe2,0x6d,0x9a,0x0b,0xfb,0x49,0x2c,0xa7, + 0xc6,0xe6,0xfb,0xa4,0xf3,0x83,0x5f,0x38,0xf8,0xdf,0x43,0xb9,0xd2,0xee,0xd8,0x49, + 0x1f,0xc8,0x4e,0x01,0xc5,0x7d,0x57,0xf1,0x0f,0xc2,0x1f,0xf0,0x82,0xea,0x90,0xc1, + 0x6b,0x3b,0x4f,0x0c,0x8a,0x08,0x72,0x31,0xcf,0x70,0x6b,0xcf,0x7c,0x41,0x6b,0x6d, + 0xe2,0x2d,0x2c,0xc7,0x3a,0x83,0x32,0x8e,0x18,0xf7,0xf6,0xff,0x00,0x0a,0x8c,0xb7, + 0x1b,0x2c,0x16,0x2b,0xd9,0x62,0x15,0xad,0xa1,0xf9,0xc7,0x8a,0xdc,0x07,0x1e,0x29, + 0xca,0x1d,0x6c,0x03,0xfd,0xe2,0x57,0x5e,0x7e,0x47,0xca,0x22,0x3c,0xb6,0x2b,0x6a, + 0xd9,0x06,0x00,0x23,0xdb,0x14,0xeb,0xdd,0x2e,0x5b,0x0b,0xc6,0x82,0x41,0x8c,0x64, + 0x0f,0x71,0x5a,0x76,0x96,0x8c,0xe4,0x05,0x52,0xc7,0xdb,0xff,0x00,0xad,0x5f,0xa2, + 0xe2,0xa7,0x19,0xd2,0x52,0x4f,0x43,0xfc,0xef,0xc7,0x60,0xab,0xe1,0xb1,0x13,0xc3, + 0x56,0x83,0x53,0x8b,0xb3,0x5d,0x6e,0x4d,0x0c,0x59,0x03,0xda,0xab,0xde,0xc0,0x59, + 0x0f,0x1f,0x4a,0xea,0x22,0xd3,0xa6,0x44,0x25,0xe2,0x60,0x3e,0x86,0xa9,0x5e,0xdb, + 0xe2,0x33,0xc7,0x6f,0xff,0x00,0x5d,0x7c,0xf6,0x92,0x96,0x86,0x1e,0xce,0xa4,0x74, + 0x94,0x59,0xe6,0x17,0x10,0x11,0x2e,0x4f,0x63,0xc7,0x6a,0xe9,0x34,0x68,0x81,0x75, + 0xaa,0x77,0x71,0x7c,0xc7,0x3d,0x3a,0x56,0x9e,0x92,0x76,0x9c,0x70,0x6b,0xbe,0xd6, + 0x86,0xa2,0xdf,0x4b,0x1e,0xb3,0xa6,0x91,0x14,0x4a,0x07,0xa0,0xef,0x59,0xfa,0xed, + 0xd0,0x8e,0x33,0xcf,0x4e,0xd4,0xb6,0x73,0xa2,0xc5,0xc7,0x04,0x0a,0xe7,0x35,0xeb, + 0xad,0xd1,0xb0,0xfc,0xbd,0x73,0x5e,0x7c,0x27,0x79,0x8e,0x2a,0xda,0x1e,0x5b,0xae, + 0x5f,0xb3,0xcc,0x40,0xeb,0xfe,0x35,0x7b,0xc3,0xeb,0xf3,0x06,0x3d,0x6b,0x53,0xc3, + 0x9e,0x09,0xd5,0x3c,0x65,0xac,0x0b,0x0d,0x3d,0x72,0xec,0x4e,0x33,0xc0,0xfc,0xcf, + 0x4a,0xe9,0x35,0xcf,0x04,0xea,0xde,0x05,0xbf,0x16,0x1a,0xbc,0x7b,0x18,0x8e,0x0f, + 0xad,0x7a,0xb0,0x9d,0x34,0xb9,0x6f,0xb9,0xea,0xcb,0x21,0xcc,0x1e,0x09,0xe6,0x1e, + 0xc5,0xfb,0x25,0xf6,0xad,0xa1,0xa8,0x24,0x0b,0x6f,0xd7,0xb7,0xe1,0x5c,0x4e,0xab, + 0x70,0x32,0x79,0xad,0x29,0xef,0x88,0x8b,0x19,0xfc,0x33,0x5c,0x4e,0xa1,0x76,0xce, + 0xf8,0xcf,0x26,0xb9,0x66,0xd2,0x67,0x94,0xb6,0x23,0xf3,0x83,0x49,0xe9,0x8a,0xd0, + 0x17,0x20,0x26,0xde,0xbf,0xfd,0x7a,0xe5,0x9a,0x71,0x17,0x23,0xef,0xd3,0x52,0xe5, + 0x8b,0x8e,0x78,0xae,0x4c,0x42,0xe7,0x56,0x3d,0xec,0x8b,0x32,0x9e,0x13,0x13,0x19, + 0xa7,0xa1,0xd4,0x09,0x32,0x06,0x29,0xdb,0x8f,0x4a,0xca,0x86,0x70,0xd8,0xc1,0xab, + 0xc1,0xb7,0x7f,0x9c,0xd7,0x9f,0xec,0xad,0xa3,0x3f,0xa8,0xf2,0x3c,0xfa,0x9e,0x2b, + 0x0f,0x19,0x73,0x6a,0x4e,0x1f,0x27,0x07,0xff,0x00,0xd5,0x53,0x8e,0x9c,0x63,0xda, + 0xa9,0x0e,0xbc,0xfe,0x35,0x6e,0x33,0xd8,0xd4,0xce,0x16,0x5a,0x1f,0x49,0x43,0x10, + 0xa4,0xec,0x31,0xc9,0x19,0x07,0xb7,0x5a,0xaa,0xd2,0x11,0xd4,0xd5,0xc9,0x3a,0x63, + 0x39,0xac,0xd9,0xb2,0x3b,0xf5,0xa5,0x18,0xab,0x6a,0x4d,0x5a,0xbc,0x92,0xb8,0xef, + 0x30,0x90,0x30,0x7f,0xfa,0xd9,0xa4,0xdf,0xcf,0xf5,0xaa,0x2d,0x25,0x33,0xcd,0xad, + 0x52,0xe8,0x4b,0xc6,0x68,0x7a,0x0f,0x81,0x74,0xbd,0x3b,0x5e,0xf1,0x35,0x8e,0x97, + 0xaa,0xdc,0x0b,0x6b,0x59,0xe6,0x44,0x92,0x42,0x70,0x00,0x66,0x00,0x93,0xf4,0xeb, + 0x5f,0xb0,0x9a,0x6f,0xec,0x73,0xfb,0x39,0xf8,0x8f,0xc2,0xf0,0xc1,0xa6,0xeb,0x8c, + 0xba,0x88,0x41,0xba,0x60,0x54,0x2b,0x36,0x3b,0x0c,0xe7,0x1f,0x8d,0x7e,0x1e,0xc7, + 0x75,0x24,0x52,0x07,0x8d,0xb6,0xb2,0x9e,0x08,0xeb,0x5e,0xe1,0xe0,0xef,0x8d,0x5e, + 0x29,0xd0,0x02,0xc1,0xf6,0xc9,0x0c,0x6a,0x00,0x1f,0x31,0xc8,0x02,0xbc,0x9c,0xe2, + 0x8e,0x2e,0x54,0xff,0x00,0xd9,0xa2,0x9f,0x7b,0xdd,0x3f,0x95,0x99,0xf9,0xb7,0x1b, + 0x4b,0x36,0x9a,0x55,0xf2,0xca,0x8f,0xdd,0xde,0x29,0xda,0xfe,0x7e,0x67,0xdb,0xbe, + 0x29,0xff,0x00,0x82,0x7e,0xde,0xac,0xce,0xfe,0x13,0xd7,0xad,0xee,0xd0,0x13,0xb5, + 0x59,0x80,0x6f,0xd6,0xbc,0x2f,0xc4,0x9f,0xb1,0x6f,0xc6,0x1d,0x11,0x59,0x93,0x4d, + 0x37,0x2a,0x3a,0x34,0x43,0x77,0x03,0xe9,0x9a,0xeb,0x3c,0x31,0xfb,0x4b,0x6b,0x08, + 0x63,0x69,0x6e,0x9d,0xb1,0x8f,0x98,0x37,0x4f,0xad,0x7d,0x35,0xe1,0x6f,0xda,0x96, + 0xfc,0xc6,0xa8,0xf7,0x82,0x50,0x07,0xdd,0x6a,0xf0,0x70,0xb5,0xb1,0x7c,0xfc,0xb5, + 0x1b,0x5f,0x73,0xfc,0xd7,0xea,0x7e,0x55,0x4f,0xc5,0x5c,0xef,0x08,0xfd,0x8e,0x27, + 0x56,0xbb,0xa3,0xf2,0x37,0xc7,0x9f,0x0a,0x7e,0x20,0x78,0x68,0x3a,0x6a,0x3a,0x35, + 0xd4,0x7b,0x73,0xc8,0x8c,0x91,0xc7,0xeb,0x5f,0x33,0xea,0xb6,0xd7,0x70,0xce,0xd1, + 0xcf,0x13,0xc6,0xc0,0xf2,0x19,0x48,0x23,0xf0,0x35,0xfd,0x30,0x59,0x7c,0x73,0xf0, + 0x9f,0x89,0x63,0x10,0x78,0x87,0x4e,0xb6,0xb9,0x56,0xe1,0xbc,0xc4,0x56,0xcf,0xe7, + 0x5c,0xc7,0x89,0x3e,0x07,0xfe,0xcd,0x9f,0x15,0x50,0x9b,0x9d,0x36,0x1b,0x0b,0x99, + 0x7f,0x8e,0x1c,0x2e,0x09,0xf6,0xaf,0xb2,0xca,0xb3,0xb9,0xd0,0xd1,0xc1,0x3f,0xc1, + 0xfe,0xa7,0x89,0x9d,0xf1,0xa4,0xb3,0x64,0x95,0x56,0x91,0xfc,0xd6,0x11,0x8c,0x52, + 0x62,0xbf,0x67,0x7e,0x27,0xff,0x00,0xc1,0x33,0xad,0x66,0x82,0x4d,0x4b,0xe1,0xa6, + 0xac,0x93,0x0e,0x59,0x60,0x73,0xc9,0xf6,0xe4,0xff,0x00,0x5a,0xfc,0xd6,0xf8,0x93, + 0xfb,0x3f,0x7c,0x4a,0xf8,0x63,0x7b,0x2d,0xb7,0x88,0x74,0x99,0x92,0x38,0xc9,0x02, + 0x55,0x52,0x50,0x81,0xdf,0x35,0xf6,0x18,0x5c,0xf7,0x0b,0x59,0xa8,0xb7,0xca,0xfc, + 0xff,0x00,0xcf,0x63,0xe7,0x9c,0x6d,0xa9,0xe1,0xb8,0xcf,0x4e,0x6b,0xec,0x6f,0xd9, + 0x6b,0xc2,0x4f,0x75,0xa8,0x5d,0xf8,0x8e,0x64,0xf9,0x21,0x51,0x0c,0x6c,0xdd,0x32, + 0xd8,0x77,0x3f,0x80,0x02,0xbe,0x43,0x8e,0x26,0x12,0x84,0x75,0xdb,0x83,0xce,0x7f, + 0x5a,0xfd,0x2c,0xf8,0x73,0x62,0x3c,0x29,0xf0,0xce,0x36,0x8f,0xe4,0x95,0x6c,0xc1, + 0x62,0x07,0xfc,0xb5,0xba,0x20,0xb1,0xe9,0xfe,0xd6,0x3f,0x0a,0xfb,0x9e,0x1a,0xa3, + 0x19,0xe3,0x15,0x49,0x6d,0x05,0x73,0xec,0xb8,0x23,0x03,0xed,0xb1,0xae,0xaf,0xf2, + 0xaf,0xc5,0xe8,0x7a,0x2f,0x86,0x75,0x56,0xbc,0xd5,0xb5,0x0b,0xf9,0x08,0x26,0x59, + 0x31,0x91,0xe8,0x3e,0xee,0x3e,0x8a,0x05,0x75,0xfa,0x5c,0xa7,0x57,0xd7,0x24,0xdc, + 0x73,0x14,0x03,0x68,0xf7,0x23,0xa9,0xaf,0x12,0xf0,0xc6,0xa8,0x2c,0x6d,0x6e,0x24, + 0x6e,0xa0,0x33,0x0f,0xa8,0x18,0x15,0xeb,0xbe,0x00,0x57,0x5b,0x59,0x2f,0x1b,0x3b, + 0xb6,0xb3,0x1f,0x5c,0x9a,0xfb,0xec,0x0b,0xe7,0x9a,0x6f,0xd4,0xfd,0xef,0x0f,0x41, + 0x46,0x2e,0x5d,0x95,0x8f,0x45,0xd6,0x24,0xf3,0x23,0x8d,0x24,0x7f,0x95,0x10,0xb9, + 0xf4,0xc1,0xc0,0x03,0xf4,0xaf,0x3f,0xb1,0xbb,0x48,0xae,0x8e,0xd6,0xe4,0x93,0xf3, + 0x67,0xa0,0xcf,0x3f,0x9f,0x41,0x5d,0x46,0xa8,0xe6,0x68,0xe4,0x2a,0xf8,0xf2,0xe3, + 0x55,0x39,0x3d,0xf9,0xe3,0xfa,0xd7,0x07,0xa5,0xc0,0xf7,0x5a,0x9a,0x5b,0xc0,0x3e, + 0x79,0x5c,0x00,0x3d,0x06,0x7f,0xa0,0xe6,0xbd,0x4c,0x45,0x65,0x17,0x14,0x8d,0x30, + 0xd4,0xd7,0x23,0x93,0x3e,0x91,0xf0,0x7c,0x62,0x40,0x97,0xb2,0xa6,0x42,0x0f,0xdd, + 0x46,0x7b,0xfb,0x9f,0x5a,0xd9,0xbe,0xbb,0x9a,0xee,0xfa,0x5b,0x97,0xf9,0xc8,0x0c, + 0x00,0xfe,0xee,0x39,0x35,0x99,0xa0,0xdc,0xc5,0x1c,0xce,0x84,0x6d,0x8e,0x28,0x44, + 0x31,0xfe,0x1d,0x4f,0xe3,0x58,0x7a,0xbe,0xad,0x2e,0x9e,0x0b,0x40,0x46,0xe7,0xdd, + 0x80,0x7f,0xda,0xe6,0xba,0x9b,0x4a,0x3a,0x9f,0x35,0x88,0xe6,0xab,0x36,0xa2,0x8a, + 0xf7,0xda,0x8b,0xf9,0xb1,0x92,0xbc,0xfd,0xe2,0x01,0xc0,0xc6,0x7f,0xc2,0x9b,0x1d, + 0xf4,0x9b,0x0b,0x96,0xcb,0x4b,0x93,0x80,0x73,0x8f,0xa7,0x7a,0xe2,0x3f,0xb4,0x25, + 0xb9,0x67,0x60,0xc0,0x31,0x18,0x3f,0xcb,0x00,0x1a,0xd9,0xb7,0x7d,0xa8,0xce,0x4e, + 0x42,0x8e,0xfe,0xd5,0xc3,0x5e,0xba,0x47,0x42,0xc2,0xea,0x5f,0xb9,0xd4,0x77,0xde, + 0x8f,0x35,0x8b,0xaa,0xa8,0x00,0x64,0x02,0x31,0xf5,0xf4,0xab,0xf1,0xcd,0x1b,0xb2, + 0x94,0x27,0x6a,0xe0,0x65,0x8e,0x4e,0x3f,0xfa,0xf5,0xe7,0xe9,0x39,0x9e,0xf6,0x42, + 0x58,0x90,0x09,0x39,0xf5,0x1d,0x2b,0x61,0xe7,0x78,0xce,0x10,0xe3,0xa1,0x26,0xbc, + 0xca,0x98,0xab,0xb3,0xea,0x70,0x18,0x28,0xc6,0x2a,0xdb,0x9e,0x85,0x04,0xde,0x73, + 0xfc,0xc0,0x24,0x63,0xe5,0x24,0x75,0x39,0xec,0x2b,0x7e,0xcd,0x12,0x52,0x37,0xa9, + 0x28,0xa4,0x10,0xbd,0x15,0x7e,0xbe,0xbe,0xf5,0xe6,0x36,0x5a,0x9c,0x8d,0x2f,0xfd, + 0x33,0x5f,0x95,0x79,0xe4,0x7b,0x03,0xdb,0xde,0xba,0x08,0xf5,0x97,0x8b,0xe7,0x77, + 0x5c,0x27,0x40,0xc7,0xe5,0x1f,0xe2,0x6b,0xb7,0x0d,0x5f,0x99,0xa4,0x83,0x19,0x84, + 0x4a,0x2e,0xfa,0x1e,0x93,0x6d,0x7b,0x76,0x97,0x29,0x83,0x88,0xb3,0xb4,0xb1,0xe1, + 0x7d,0xb0,0x2a,0xd6,0xa7,0xae,0x4b,0x01,0x58,0xa5,0x39,0x32,0x30,0x8c,0x71,0x83, + 0xcd,0x71,0x03,0x5d,0x33,0x46,0x2e,0xcb,0x91,0x1a,0x73,0xb8,0x90,0x3f,0x21,0xe9, + 0xef,0xfa,0xd4,0x97,0x77,0x69,0xae,0x49,0x6e,0x6d,0x37,0x7e,0xe7,0xf7,0x83,0x27, + 0xae,0x3b,0x91,0xfc,0xab,0xd8,0x94,0xef,0x49,0xc5,0x76,0x3e,0x3e,0x14,0x52,0xae, + 0xae,0xb4,0xb9,0x4f,0x52,0xb9,0xe3,0x24,0x90,0x57,0x3d,0x7f,0xbb,0xeb,0x9f,0x6a, + 0xc9,0xd3,0xa7,0x85,0xe4,0x45,0x95,0xba,0xe5,0x49,0xeb,0x81,0xd6,0xae,0xea,0x7b, + 0x8f,0x32,0x72,0x7d,0xfd,0x3b,0x8f,0xc0,0xd6,0x1d,0xbc,0x18,0xb8,0xf9,0x4f,0x07, + 0x9f,0xc0,0x77,0x15,0xe0,0xe1,0xeb,0x4a,0x33,0xb3,0x3e,0xb2,0xa6,0x16,0x32,0xa5, + 0x75,0xa1,0xeb,0x7e,0x1e,0xbb,0x10,0x6a,0x33,0x18,0xe4,0xde,0x90,0xc4,0x11,0x4f, + 0xfc,0x04,0x92,0x07,0xe7,0x5b,0xf7,0x0f,0xc0,0x63,0xf3,0x13,0x0a,0x02,0x3f,0x5a, + 0xf3,0xef,0x0d,0x7c,0x96,0xb7,0x17,0x6e,0x49,0x2c,0xcc,0x07,0xa8,0xec,0x2b,0xb0, + 0xd4,0x2f,0x11,0x5d,0x47,0x50,0x22,0x5c,0x57,0xa2,0xeb,0x29,0x24,0x91,0xf2,0x8f, + 0x0d,0xfb,0xe6,0xac,0x62,0xde,0xbc,0x88,0xe9,0xbf,0xa6,0x73,0x81,0xc7,0x3e,0x95, + 0xd1,0x69,0x73,0x93,0x17,0x98,0x9d,0x78,0xc7,0xa7,0xeb,0x5c,0x95,0xe4,0xe5,0x91, + 0x66,0x63,0x95,0xdd,0xf3,0x0e,0xe4,0xd5,0xed,0x2a,0xf2,0x47,0x5d,0xad,0x85,0xe7, + 0x85,0xe9,0xb7,0xff,0x00,0xad,0x58,0x39,0x6a,0xd1,0xe8,0xd6,0xa1,0x7a,0x5a,0x23, + 0xd2,0xad,0x6f,0x1c,0x26,0xe9,0x58,0x71,0xc8,0x1d,0x87,0xb9,0x06,0xa1,0xd4,0xad, + 0xe3,0xd4,0x2d,0x66,0xb6,0x94,0x19,0x23,0x9d,0x19,0x1c,0x11,0xc3,0x2b,0x0c,0x1f, + 0xce,0xb9,0xe8,0xaf,0x14,0xb8,0x0b,0xf3,0xf3,0xcf,0xb9,0xae,0x96,0xca,0x74,0x2b, + 0xb5,0x7e,0x67,0x27,0xe6,0x39,0xf9,0x47,0xb0,0xae,0x7a,0xb5,0xd3,0xf7,0x7a,0x75, + 0x3e,0x77,0x13,0x85,0x5a,0xb6,0x8f,0xc9,0x7f,0x8a,0xde,0x11,0x9f,0x41,0xf1,0x2d, + 0xee,0x87,0x70,0xa7,0x36,0xf2,0x9f,0x2c,0x9f,0xe2,0x89,0xbe,0x68,0xdb,0xf1,0x5c, + 0x7e,0x34,0xcf,0x87,0x9a,0x28,0x86,0xf6,0x32,0x57,0x3c,0x8e,0x6b,0xea,0xbf,0xda, + 0x53,0xc1,0x53,0x1b,0xeb,0x1f,0x17,0xc2,0xa0,0xc7,0x20,0xfb,0x24,0xe4,0x76,0x60, + 0x4b,0x44,0xc7,0xeb,0x96,0x5f,0xca,0xbc,0x67,0xc1,0xf6,0x62,0x2b,0x94,0x20,0x74, + 0x35,0xfc,0x9b,0xe2,0x66,0x07,0xea,0x12,0xaf,0x86,0x8a,0xf7,0x77,0x5e,0x8f,0x63, + 0xf3,0x8c,0xbb,0x08,0xf0,0xb9,0xab,0xa6,0xf6,0x4f,0x4f,0x46,0x7d,0xa3,0xe0,0x19, + 0x56,0x0b,0x48,0x94,0xfa,0x0a,0xf6,0xc8,0x75,0x12,0x22,0x00,0x1c,0x57,0xcf,0x7e, + 0x16,0xb9,0xf2,0xe0,0x45,0xce,0x38,0xed,0x5e,0x9f,0x05,0xe6,0x54,0x64,0xf6,0xcd, + 0x7f,0x13,0xe6,0x49,0xfb,0x59,0x1f,0xb2,0xc5,0x5e,0x29,0xa3,0xb0,0x7b,0xd2,0xd9, + 0xe6,0xae,0x5a,0xdc,0x93,0x80,0x4e,0x4d,0x72,0x0b,0x70,0x0f,0x27,0xad,0x69,0xdb, + 0x5c,0x63,0x19,0xaf,0x36,0x30,0xb6,0xa6,0xd1,0x4e,0xc7,0x61,0xe6,0x64,0x54,0x91, + 0xd6,0x54,0x12,0xee,0x51,0xe9,0x5a,0x90,0x90,0xc7,0x35,0x84,0xf7,0x65,0x58,0xd9, + 0x80,0x71,0x93,0x4a,0xe7,0x0d,0xf5,0xa6,0x47,0x22,0x85,0xcd,0x50,0xba,0xbb,0x44, + 0x38,0xe9,0x59,0x32,0x92,0xb1,0xbd,0x6d,0x2a,0x86,0xc8,0x3c,0xfa,0x56,0xa2,0xdd, + 0xa8,0x39,0x26,0xbc,0xf8,0x6a,0xca,0xa7,0xaf,0x4a,0x0e,0xb3,0x9e,0x01,0xfd,0x68, + 0x8d,0xcc,0xaa,0x45,0x34,0x7a,0x52,0x5f,0x03,0x8e,0x7f,0x2a,0x96,0x4b,0x85,0x64, + 0x39,0xae,0x0a,0xce,0xfc,0xc8,0x47,0x35,0xba,0x2e,0x37,0x2e,0x3f,0xfa,0xf5,0xe9, + 0xc6,0x4a,0x70,0xb1,0xc1,0xc8,0x94,0x8f,0xff,0xd2,0xf9,0xd0,0xca,0x03,0xe7,0x1d, + 0xfa,0x56,0x82,0x5d,0x61,0x71,0x9f,0x97,0x15,0xce,0xbc,0x98,0xe9,0xeb,0xf9,0x52, + 0xac,0xe6,0xbe,0x3a,0xa3,0xea,0x7f,0xa5,0x50,0x92,0x2f,0xde,0xdc,0x6e,0x15,0x80, + 0xcd,0x93,0xc5,0x4b,0x75,0x39,0xcf,0x1c,0x9a,0xce,0x46,0x3b,0x86,0x6b,0xc8,0xe5, + 0xb5,0x46,0xcf,0x46,0x55,0x7d,0xc3,0x5e,0x0c,0x9c,0x1c,0x67,0x15,0xd0,0x40,0xe5, + 0x62,0x24,0xd6,0x35,0x98,0x04,0x81,0x8a,0xdb,0x94,0xf9,0x36,0xe5,0x98,0xf4,0x19, + 0xaf,0x52,0x8d,0x3f,0x75,0xc9,0x9e,0x7c,0xe7,0xae,0xa6,0x1e,0xaf,0xa9,0xac,0x09, + 0xb3,0x38,0x27,0xb5,0x61,0xe9,0xb7,0x5a,0x85,0xfd,0xda,0xe9,0xba,0x14,0x4d,0x2d, + 0xd4,0xc7,0x6e,0x47,0x38,0xcd,0x61,0x5c,0x47,0x7b,0xae,0xea,0x86,0xde,0xcc,0x17, + 0x25,0xb6,0x80,0x2b,0xea,0xaf,0x87,0x1e,0x15,0xb2,0xf0,0x76,0x9e,0x2f,0xe5,0x41, + 0x2d,0xd4,0x83,0x0d,0x21,0xff,0x00,0xd0,0x45,0x79,0xb4,0x70,0xf5,0x71,0xb5,0xda, + 0x86,0x91,0x5d,0x7f,0xc8,0xeb,0x78,0xc8,0x61,0xe9,0xab,0xee,0xf6,0x47,0x41,0xe0, + 0x1f,0x87,0x56,0xbe,0x0c,0x8d,0x75,0x6d,0x65,0x56,0xef,0x55,0x95,0x77,0x65,0xf9, + 0x58,0x89,0xf4,0xcf,0x52,0x3d,0x6b,0xd9,0xf4,0x9b,0xe9,0xaf,0x49,0x9d,0x89,0xdb, + 0xd1,0x00,0xe9,0xee,0x6b,0xcb,0xaf,0xf5,0x89,0x75,0x29,0x52,0x18,0x58,0x83,0x21, + 0xda,0x07,0x70,0xa3,0xad,0x7a,0x3d,0x91,0x4d,0x3e,0xc2,0x04,0x90,0x05,0x66,0x5e, + 0x0e,0x7b,0x57,0xda,0xe0,0xf0,0x74,0xa8,0x43,0xd9,0xd2,0x56,0x4b,0xf3,0x3c,0x6c, + 0x5d,0x69,0xbf,0x7e,0xab,0xbb,0x7f,0x82,0x3c,0xef,0xe2,0xf6,0x95,0x1e,0xb1,0xa5, + 0xb4,0xb1,0xa8,0x69,0xe0,0xf9,0xd4,0x8e,0x78,0x1d,0x45,0x7c,0xa7,0x6a,0xb3,0xcb, + 0x27,0x92,0x8a,0x49,0x07,0x15,0xf6,0xf6,0xa6,0x6d,0xe7,0x89,0x8e,0x03,0x64,0x73, + 0xee,0x0f,0x15,0xf3,0x6e,0xb5,0x62,0xba,0x0e,0xa1,0x2c,0xb6,0xa8,0x02,0x48,0x49, + 0x57,0xc6,0x71,0x9a,0xfc,0xd7,0x8a,0x30,0x9c,0x98,0x8f,0x6f,0xd1,0x9f,0x71,0xc3, + 0x58,0x8f,0x69,0x41,0x51,0x5b,0xa3,0x88,0x1f,0x09,0xe6,0xf1,0x0c,0xc9,0x71,0x71, + 0x88,0x54,0x72,0x4b,0x71,0xc5,0x75,0xba,0x6f,0x85,0xfc,0x03,0xe1,0x53,0x8b,0xe9, + 0x85,0xc4,0x8b,0xfc,0x28,0x33,0xcf,0xd6,0xb2,0xe6,0xd5,0x2f,0x66,0xe3,0xcd,0x72, + 0x08,0xec,0x4d,0x3a,0xc3,0x41,0xb9,0xd4,0x9b,0xcd,0xf2,0xc9,0x04,0xf2,0xc6,0xb8, + 0xf0,0xf8,0xfc,0x45,0x4a,0x71,0xa3,0x46,0x2d,0xa5,0xdc,0xf2,0xf1,0x5e,0x1f,0xf0, + 0xfc,0x31,0xf5,0x33,0x4c,0x55,0x08,0xba,0xb2,0xdd,0xd8,0xea,0x06,0xa9,0xe1,0x0d, + 0x49,0xcc,0x31,0x69,0x4c,0x10,0x70,0xac,0x3a,0x9a,0xdd,0xb1,0xf8,0x61,0xe1,0x7f, + 0x11,0xd9,0x4a,0xf1,0x43,0x2c,0x0e,0x41,0xdb,0xbc,0x7a,0xfe,0x1c,0xd6,0xc6,0x83, + 0x61,0xa1,0xf8,0x71,0x63,0xb9,0xba,0x45,0x9a,0x51,0xc8,0x04,0x74,0xc7,0x5a,0xf7, + 0x7f,0x0c,0xf8,0xdf,0x41,0xd4,0x99,0x20,0x30,0x42,0x0a,0xe3,0x8c,0x01,0x9a,0xf5, + 0x70,0xd8,0x2a,0xdc,0xeb,0xeb,0x15,0x16,0xbd,0x12,0xfd,0x74,0x3c,0x2c,0xfb,0x27, + 0xc9,0xaa,0xc7,0x9e,0x8e,0x5d,0x19,0xdb,0xad,0x96,0xde,0x96,0x3f,0x2d,0x3e,0x25, + 0x78,0x02,0xff,0x00,0xc2,0x3a,0x9b,0xc4,0x63,0x66,0x84,0x9c,0x82,0x01,0x20,0x57, + 0x9d,0x58,0xe5,0x5b,0xb8,0x19,0xc7,0x5a,0xfd,0xa8,0xf1,0x47,0x85,0x3c,0x17,0xe2, + 0x47,0xf2,0xaf,0x6c,0xa2,0x92,0x39,0x53,0x2b,0x91,0x9c,0x1c,0x74,0x06,0xbe,0x2d, + 0xf8,0x8d,0xfb,0x3b,0x59,0xc1,0x2c,0xb7,0xfe,0x17,0x6d,0xa0,0x64,0x98,0x4f,0x5f, + 0xc3,0xd6,0xbd,0x0a,0xd5,0x31,0x18,0x38,0x72,0x62,0x17,0x34,0x7b,0xaf,0xd5,0x1f, + 0xcc,0x7c,0x5b,0xe0,0xec,0xb1,0x95,0xa7,0x8d,0xe1,0xf5,0x64,0xf5,0xf6,0x4f,0x4f, + 0x5e,0x57,0xb7,0xc8,0xf9,0x5a,0x1b,0x81,0xe5,0x8c,0x1c,0x71,0x51,0x2e,0x9b,0x71, + 0xab,0x5c,0xac,0x10,0x29,0x66,0x63,0x8e,0x06,0x71,0x9a,0x5b,0xed,0x36,0xff,0x00, + 0x4a,0xbf,0x6d,0x36,0xea,0x32,0x92,0x86,0xdb,0x83,0xdf,0xde,0xbe,0x86,0xf8,0x79, + 0xe1,0x78,0xec,0xad,0x05,0xf5,0xc2,0x65,0xdb,0x91,0x91,0x5e,0x5d,0x7c,0xc6,0x14, + 0x20,0xa7,0x1d,0x5b,0xd8,0xf8,0xcf,0x0d,0xfc,0x2f,0xc6,0xf1,0x1e,0x71,0x2c,0x0d, + 0x78,0xb8,0x42,0x9f,0xc6,0xda,0xdb,0xcb,0xd5,0x91,0x78,0x2f,0xc2,0x9f,0xf0,0x8c, + 0x24,0x57,0x83,0xe5,0x98,0x90,0x58,0x8e,0x0e,0x3d,0x29,0xff,0x00,0x1e,0xb4,0xeb, + 0xcb,0xed,0x2a,0x0d,0x58,0x44,0x4a,0xc4,0x07,0xcc,0x07,0x41,0xf5,0xaf,0x4a,0x9e, + 0xd0,0x5c,0xc9,0x1c,0x08,0x7f,0x88,0x71,0xf8,0xd1,0xe3,0x88,0x57,0x54,0xd1,0x65, + 0xd2,0xa4,0x62,0x54,0x46,0x55,0x41,0xfa,0x57,0x2e,0x0b,0x15,0x29,0xd3,0x9d,0x79, + 0xef,0x75,0x6f,0x91,0xfd,0xaf,0xc4,0xdc,0x13,0x83,0x79,0x14,0xb2,0x0c,0x14,0x14, + 0x61,0xc8,0xd2,0xd3,0xf1,0xfb,0xcf,0xce,0x7b,0xab,0xcd,0xdc,0x29,0xfc,0x2b,0x12, + 0x59,0x19,0x81,0x61,0x9c,0xfa,0xd5,0xfd,0x66,0xd1,0xf4,0xdd,0x56,0xe2,0xc6,0x43, + 0x83,0x1b,0x90,0x38,0xed,0xda,0xb3,0xf7,0x2e,0x07,0xaf,0x7a,0xfa,0x2d,0x5c,0x54, + 0xd7,0x53,0xfc,0xdb,0xc6,0xe1,0x2a,0x61,0x2b,0xd4,0xc3,0xd6,0x56,0x94,0x5b,0x4f, + 0xd5,0x19,0xf2,0x0e,0xa7,0xd7,0xd2,0x98,0x14,0x8e,0xd5,0x74,0xaa,0x31,0xc9,0xa0, + 0x42,0xbc,0x96,0xe3,0xf1,0xf5,0xaa,0x53,0x39,0x93,0x22,0x8a,0x42,0xb8,0xcf,0xff, + 0x00,0xae,0xb6,0xa0,0xb8,0x18,0xf9,0xb1,0x93,0xd6,0xb0,0xe6,0x0a,0x83,0x83,0x9c, + 0x55,0x31,0x79,0xe5,0x91,0x9e,0xc6,0xb5,0x8d,0x1e,0x63,0xec,0x78,0x7f,0x88,0xaa, + 0x60,0xdf,0x2b,0x7a,0x1d,0xc2,0xed,0x24,0x15,0xab,0x51,0x82,0x48,0xe2,0xb8,0xfb, + 0x7d,0x5d,0x07,0xca,0xc7,0xa7,0xaf,0x41,0x5b,0x76,0xfa,0x8c,0x4e,0x01,0x07,0x8a, + 0x2a,0x60,0xa5,0x6b,0x9f,0xb2,0xe5,0x3c,0x53,0x4a,0xad,0xaf,0x23,0x59,0x87,0x15, + 0x42,0x64,0x07,0x8c,0xd5,0xe8,0xe7,0x49,0x78,0x07,0x9e,0xd4,0x92,0x42,0x5f,0x2c, + 0xb5,0xe7,0x4e,0x0e,0x2e,0xcc,0xfa,0xaf,0xed,0x08,0x54,0x8d,0xd3,0x39,0xb9,0x41, + 0x04,0xd5,0x42,0x7b,0x73,0x9f,0x4a,0xd7,0xb9,0xb7,0x61,0xc8,0xe3,0x35,0x44,0x5b, + 0xb9,0x39,0xc5,0x6d,0x0b,0x1c,0x35,0x71,0xb1,0x5f,0x68,0x64,0x60,0xfa,0x75,0xfe, + 0x55,0x7e,0x28,0xc9,0xe9,0xc7,0x34,0xe8,0x6c,0x9c,0xf3,0x8f,0xa5,0x6a,0x43,0x6e, + 0x7f,0x88,0x62,0xad,0xcd,0x23,0xe6,0xf3,0x0e,0x21,0xa5,0x41,0x39,0x39,0x10,0x45, + 0x73,0x35,0x99,0xdc,0x84,0x8c,0x7f,0x4a,0xeb,0x74,0x2f,0x1a,0x43,0x04,0xe2,0x3b, + 0xa9,0x0c,0x2d,0x9e,0xb9,0xe2,0xb8,0xeb,0xed,0xa8,0x84,0x7e,0x7f,0xfd,0x6a,0xf2, + 0xdd,0x6e,0xe9,0x95,0x89,0x43,0x82,0x3b,0xd6,0x6b,0x2c,0xa5,0x8b,0x4e,0x2c,0xfc, + 0x77,0x8a,0x73,0x7a,0x19,0x85,0x4e,0x65,0x05,0xcd,0xdc,0xfb,0xf7,0x49,0xd7,0xae, + 0x25,0x81,0x25,0x82,0x7c,0xf4,0x21,0x94,0xd7,0xa2,0x69,0x7e,0x39,0xd6,0xac,0xf6, + 0x03,0x21,0x20,0x77,0x04,0xe6,0xbf,0x37,0x7c,0x13,0xf1,0x3f,0x51,0xd0,0x27,0x48, + 0x6e,0x58,0xcd,0x6f,0x9e,0x55,0x8f,0x4f,0xa5,0x7d,0x8b,0xe1,0x4f,0x14,0xe9,0x5e, + 0x21,0xb6,0x13,0xd8,0xcc,0x18,0x91,0xca,0x67,0x90,0x7b,0xd7,0xc4,0x67,0x59,0x6e, + 0x3f,0x2b,0xa8,0xe6,0xfd,0xe8,0x77,0x3e,0x22,0xa6,0x1e,0x9b,0x76,0x68,0xfb,0x13, + 0xc3,0xdf,0x1b,0x35,0xad,0x3f,0x62,0xc7,0x76,0xf8,0x03,0x95,0x24,0x91,0x5e,0xb1, + 0xff,0x00,0x0b,0x57,0xc3,0x9e,0x2f,0xb1,0x3a,0x67,0x8c,0x2c,0x6d,0xef,0x21,0x94, + 0x61,0x8c,0xa8,0x1b,0xaf,0x1c,0x67,0xa5,0x7c,0x24,0xe5,0x82,0x83,0x19,0x2b,0x8c, + 0x9c,0x55,0xeb,0x5d,0x52,0xe2,0x10,0x03,0x13,0xc7,0x6f,0xfe,0xbd,0x70,0xe1,0xb3, + 0xc8,0xcf,0x49,0xe8,0xcc,0x95,0x0a,0xb4,0xb5,0xa7,0x23,0xb7,0xf8,0xb1,0xfb,0x1d, + 0xf8,0x03,0xc6,0x4b,0x27,0x88,0x7e,0x1d,0xcc,0xb6,0x57,0x04,0x17,0x6b,0x62,0x46, + 0xc3,0xea,0x01,0xaf,0x39,0xd6,0xbc,0xbb,0x1f,0x04,0x1b,0x71,0x20,0x0c,0xd3,0x5b, + 0xc5,0xb4,0x71,0xb8,0x47,0x9c,0xfe,0x19,0x5a,0xf4,0x2b,0x0f,0x1a,0xea,0x7a,0x64, + 0x2c,0xb1,0x4c,0xfb,0x76,0x91,0x8c,0xd6,0x67,0x87,0x3c,0x37,0x61,0xe3,0x4d,0x0a, + 0xe7,0x45,0x9c,0x04,0xbf,0x95,0x77,0x59,0x4e,0x49,0x01,0x66,0x19,0xc0,0x6f,0xf6, + 0x5b,0xee,0x9f,0xad,0x7e,0xeb,0xe1,0x76,0x2e,0xa6,0x22,0x58,0x8a,0x71,0x95,0xf4, + 0xd0,0xfd,0x53,0xc3,0x49,0x4e,0x4e,0xbc,0xaa,0x2f,0x86,0xdf,0xa9,0xe1,0x7a,0x4b, + 0x19,0xe6,0x16,0xaa,0x7e,0xf1,0x19,0x1f,0x4e,0x6b,0xe9,0x7f,0x0b,0x81,0x67,0xa7, + 0x6d,0xc1,0xc1,0x3d,0x7b,0xe3,0xad,0x7c,0xf5,0xa1,0x69,0x17,0xb6,0x7a,0xfd,0xd5, + 0x96,0xa1,0x13,0x43,0x73,0x6b,0x33,0x43,0x24,0x6d,0xc1,0x56,0x43,0xb4,0x8f,0xf0, + 0xf5,0x1c,0xd7,0xd0,0x1a,0x3c,0xa3,0xec,0x64,0xb7,0x01,0x38,0x3f,0x5c,0x62,0xbf, + 0x62,0xc9,0xae,0x97,0x33,0xfe,0xac,0x7e,0xfb,0x4e,0x17,0xa2,0xac,0x6f,0xc7,0x6d, + 0x2d,0xdd,0x84,0xd7,0x44,0x6e,0x4e,0xe7,0x9e,0x38,0xc0,0xcf,0xf4,0xac,0x7f,0x0b, + 0x5a,0xb4,0x9a,0xf3,0xb2,0xf1,0xb1,0x59,0xc1,0xf5,0xc5,0x74,0xf6,0x8a,0x06,0x8f, + 0x3a,0xab,0x32,0xfd,0xe1,0xec,0x71,0x59,0xde,0x09,0x56,0x9b,0x55,0x99,0x93,0xe5, + 0x22,0x26,0xc7,0xa1,0xc7,0x3c,0xd7,0xa7,0x52,0x6d,0xd6,0xa6,0x89,0xae,0x9d,0x3c, + 0x05,0x49,0x79,0x1e,0x91,0x6d,0x26,0xc2,0x12,0x1c,0x94,0x00,0x85,0x39,0xe7,0x1e, + 0xe6,0xb8,0xdf,0x10,0xdc,0xee,0xb8,0x2a,0x8b,0xc2,0x02,0x46,0x79,0xeb,0xc1,0xe6, + 0xb5,0x9a,0xe9,0xa2,0xbb,0xd8,0x9f,0x2a,0x1f,0x94,0x2f,0x3c,0x77,0xe9,0x58,0x5a, + 0xba,0xa4,0xae,0xf2,0xf3,0xb8,0x9c,0x01,0xeb,0x5b,0xe2,0x6b,0xfb,0xa7,0x83,0x80, + 0xc3,0xb9,0x34,0xd9,0xcf,0xdb,0xb1,0x33,0xae,0xee,0x03,0x30,0xe9,0xe8,0x07,0x7a, + 0xe8,0xa7,0x9f,0xc9,0x88,0x80,0x70,0x08,0xc8,0xfa,0x57,0x3f,0x11,0x11,0x90,0xa0, + 0x15,0x63,0xeb,0xdb,0x26,0xae,0x5d,0x4a,0x55,0x06,0x06,0x41,0x15,0xe1,0xd6,0xac, + 0xd9,0xef,0xc7,0x07,0x18,0xb4,0xba,0x99,0x49,0x34,0x89,0x31,0x76,0x07,0x1f,0x77, + 0xd0,0x7c,0xd5,0xa1,0x71,0x74,0x01,0x00,0x0e,0x83,0xaf,0x70,0x07,0xa5,0x60,0xa2, + 0x0d,0xc3,0xcc,0x24,0x82,0xe4,0xfe,0x47,0xbd,0x4b,0x75,0x75,0x14,0x4a,0x4b,0x90, + 0x40,0xfe,0x9d,0x3f,0x0a,0xe0,0x75,0x35,0xdc,0xf6,0xe8,0xd3,0x4a,0x1a,0x96,0x9b, + 0x5a,0xfb,0x1b,0x13,0xd0,0xe3,0x21,0x41,0xe0,0x0f,0x52,0x6b,0x98,0xbe,0xf1,0x24, + 0xb2,0xdc,0x79,0x9b,0xb8,0x07,0x85,0xcf,0x5a,0xe5,0xb5,0x1d,0x4d,0xa6,0x91,0xd8, + 0x92,0xc8,0xcd,0xc2,0x8e,0x32,0x7d,0xc5,0x52,0xb7,0x68,0x81,0xcb,0xae,0xf7,0x73, + 0xc2,0xfa,0x1e,0xd5,0xe9,0xd1,0xae,0xe3,0xa4,0x4f,0x33,0x11,0x2e,0x79,0xdd,0x9e, + 0xa9,0x61,0xab,0x5c,0xdd,0x40,0x7c,0xc9,0x0b,0x0c,0x0c,0x0d,0xdf,0x28,0xfc,0x3b, + 0xd7,0xb7,0x78,0x2a,0xe7,0xec,0xf6,0xb1,0x5d,0x48,0x1a,0xe2,0x46,0xc9,0x23,0x18, + 0x03,0x1c,0x2a,0x8e,0xe7,0x8f,0x6a,0xf9,0xdf,0x45,0x8e,0x38,0xc8,0x96,0xe1,0xd6, + 0x42,0x78,0x28,0x30,0x00,0x1e,0x84,0x9f,0xe5,0x5e,0xad,0xe1,0xaf,0x13,0xc5,0x04, + 0x9b,0x24,0xe0,0xef,0xc0,0xc0,0xc0,0x50,0x7b,0x81,0xfd,0x2b,0xdd,0xc2,0x4f,0x54, + 0xe6,0xcf,0x9e,0xc6,0xd1,0x72,0x4d,0x41,0x1e,0x85,0xac,0xc3,0x2a,0x48,0x25,0x99, + 0x4a,0x89,0x58,0x91,0xc7,0x1c,0xf2,0x45,0x60,0x4a,0xff,0x00,0x67,0x80,0xca,0xb8, + 0x18,0x07,0x00,0xf3,0x5e,0x9c,0xf0,0x9f,0x13,0x68,0x2d,0x16,0x98,0x3c,0xc6,0x41, + 0xe6,0x65,0x8e,0x59,0x98,0x0e,0x83,0xf9,0x60,0x57,0x90,0xdf,0x4b,0x27,0x94,0x6d, + 0x58,0x15,0x6d,0xc1,0x58,0x1e,0x36,0x9c,0xf2,0x08,0xec,0x7d,0x6b,0x97,0x31,0xa7, + 0xec,0x6a,0x39,0xae,0xa7,0x7e,0x57,0x88,0xf6,0xd8,0x77,0x19,0x7c,0x51,0xd2,0xdf, + 0x93,0x3b,0x3b,0x69,0xbe,0xc9,0xa5,0xc5,0x16,0xef,0xbf,0xb5,0x71,0xee,0x7e,0x9f, + 0x5a,0xdd,0xb9,0xbb,0x8d,0xa6,0x89,0xc3,0x10,0x02,0xe3,0x27,0xb5,0x79,0xdc,0xf7, + 0x8b,0xe7,0xdb,0xc0,0xa7,0x3c,0x97,0xe7,0xfd,0x9a,0xd0,0xb8,0xbe,0x24,0x6c,0x43, + 0x97,0xc7,0x1c,0xfa,0xf7,0xae,0x1a,0x38,0x8b,0xc9,0x23,0x28,0x61,0x14,0xa7,0xcc, + 0x74,0x57,0x37,0x24,0xc2,0x78,0x05,0x77,0x64,0x93,0xd7,0xda,0xab,0x69,0xf3,0x99, + 0x18,0xe0,0x90,0x84,0xfc,0xec,0x7d,0x3f,0xc4,0xd7,0x3d,0x2d,0xfb,0x2a,0x05,0x27, + 0xf7,0x60,0xe1,0x88,0x3d,0xfd,0xe8,0xb1,0xbe,0x67,0x73,0x0c,0x7c,0x73,0xc0,0x27, + 0xab,0x1a,0x75,0xeb,0xab,0xee,0x76,0x7d,0x55,0xa8,0x34,0x91,0xe9,0x76,0x5a,0x84, + 0x49,0x98,0xe0,0x0a,0xa4,0x0c,0x0f,0xc7,0xaf,0x6e,0xb5,0xd3,0x58,0x5c,0xc6,0xc5, + 0x43,0x7f,0x11,0xe0,0x03,0x8c,0xfb,0x8f,0x6a,0xf3,0x18,0xee,0xc4,0x5c,0x10,0x1d, + 0xf3,0x8f,0xc7,0xeb,0xfc,0xeb,0xa9,0xd2,0x6f,0x95,0x5c,0xbc,0xff,0x00,0x3c,0xa7, + 0xb0,0xe9,0xed,0x5c,0x92,0xae,0xad,0xcb,0x73,0xc2,0xc5,0xe1,0x5d,0x9c,0x92,0x36, + 0xbc,0x7f,0xa1,0xff,0x00,0xc2,0x4b,0xe1,0x3d,0x47,0x49,0x00,0x31,0x92,0x06,0xf2, + 0xfd,0xa4,0x4f,0x99,0x0f,0xb6,0x18,0x0a,0xf8,0x7b,0xc3,0xb1,0x14,0x99,0x72,0xbb, + 0x58,0x1c,0x11,0xe8,0x7b,0x8f,0xc2,0xbf,0x40,0x61,0x9c,0xcf,0x06,0x00,0xea,0x3a, + 0x7a,0xd7,0xc7,0xda,0xa7,0x87,0x9b,0x46,0xf1,0x6e,0xa3,0x67,0xb7,0x0a,0x2e,0x1a, + 0x44,0xe3,0xf8,0x24,0xf9,0xc7,0xf3,0x22,0xbf,0x0d,0xf1,0xab,0x09,0xcd,0x97,0x53, + 0xc5,0xc5,0x6a,0xaf,0x17,0xf9,0xaf,0xd4,0xf8,0x3c,0x76,0x15,0x47,0x19,0x4a,0xb2, + 0x5e,0x47,0xa3,0xe8,0x0e,0x56,0x35,0xfa,0x0e,0x2b,0xd0,0x2d,0xee,0x0e,0x01,0xae, + 0x0b,0x49,0x8b,0xca,0x89,0x73,0xe8,0x2b,0xac,0xb6,0x7f,0x7e,0x9f,0xa5,0x7f,0x03, + 0x63,0xa1,0x7a,0xb2,0x3e,0xf2,0x8b,0xf7,0x51,0xd6,0xc3,0x2e,0x79,0xf4,0xad,0x28, + 0x26,0x39,0xc8,0xae,0x72,0x07,0x38,0x15,0xa7,0x04,0x87,0x3e,0x99,0xaf,0x3e,0x54, + 0xb4,0x35,0x3b,0x4b,0x29,0x0e,0x01,0x35,0xb7,0x1c,0xbb,0x46,0x6b,0x93,0xb2,0x97, + 0x00,0x67,0xf9,0xd6,0x8b,0xdc,0xed,0x19,0xcd,0x79,0xd5,0x23,0x66,0x34,0x6c,0xcf, + 0xa8,0x04,0x07,0x07,0xf0,0xae,0x5a,0xf7,0x52,0x67,0x3c,0x1e,0x2a,0xb4,0xf7,0x45, + 0xc9,0xe7,0xde,0xb1,0x2e,0x26,0xf9,0x8d,0x2a,0x74,0xd3,0x14,0x9b,0xb1,0x6f,0xed, + 0x72,0x11,0xc9,0xab,0x31,0xdc,0xb0,0x1c,0x9a,0xe7,0x84,0xd9,0x3e,0x95,0x65,0x26, + 0xce,0x2b,0x49,0x53,0x5d,0x0e,0x76,0x77,0x3a,0x7d,0xe1,0x04,0x73,0x5d,0x8d,0xbc, + 0xfb,0x90,0x1c,0x93,0x81,0x5e,0x59,0x65,0x71,0x82,0x39,0xea,0x6b,0xb5,0xb4,0xbb, + 0xf9,0x07,0x35,0xb5,0x05,0xd0,0xc6,0x67,0xff,0xd3,0xf9,0x52,0x69,0x39,0x20,0x55, + 0x6f,0x38,0x93,0x80,0x71,0x4b,0x39,0x1c,0x9e,0x98,0xac,0xe3,0x27,0x3c,0xfa,0x57, + 0xc6,0xe2,0x15,0x92,0x47,0xfa,0x3d,0x42,0xa5,0xd2,0x2d,0xc8,0xe4,0xf7,0xce,0x3a, + 0x7b,0xd4,0x51,0xb6,0x5f,0x8e,0x05,0x46,0x5f,0xd3,0x93,0x4d,0x8d,0xf0,0xf9,0x1d, + 0xab,0xcd,0x6b,0xf7,0x87,0xa2,0xdf,0xb9,0xa1,0xd5,0x58,0xb7,0xcc,0x0e,0x7f,0x3a, + 0x6e,0xbd,0x75,0x21,0xb7,0x5b,0x68,0x32,0xd2,0x4a,0x76,0xa8,0x1e,0xf5,0x56,0xd2, + 0x4c,0x00,0xc4,0xfe,0x35,0xd5,0x78,0x4f,0x47,0x3a,0xa6,0xa0,0xda,0xa5,0xd0,0xcc, + 0x56,0xe7,0x6c,0x43,0xb1,0x61,0xde,0xbd,0x25,0x79,0x53,0xf6,0x71,0xdd,0x9c,0x55, + 0x66,0xa3,0xab,0x3b,0x0f,0x00,0x78,0x1e,0x2d,0x27,0x4e,0x6b,0xe9,0xd0,0x35,0xc3, + 0x2e,0xe6,0x27,0xb6,0x7b,0x57,0x61,0x79,0xa8,0x6d,0xb7,0x4b,0x60,0x36,0xfc,0xc4, + 0xf5,0xea,0x7f,0xfa,0xd5,0x60,0xde,0x5b,0xc5,0x66,0xf0,0x64,0xab,0x95,0xc9,0x03, + 0xbf,0xa5,0x73,0x76,0xf6,0xed,0x3c,0xdb,0xdb,0x3f,0x2e,0x48,0x07,0xf3,0xaf,0x62, + 0x8d,0x18,0x61,0xe9,0xa8,0x52,0x47,0x25,0x27,0x2a,0xd5,0x5c,0xea,0x74,0x3a,0xbf, + 0x0f,0x5a,0x3c,0x97,0x02,0x76,0x3b,0x81,0x18,0xe3,0xb1,0xad,0xdd,0x73,0x53,0x9e, + 0x26,0x4b,0x3d,0xdb,0x59,0x7d,0xf3,0x59,0x9a,0x48,0x78,0xa1,0x05,0x5b,0x1b,0x7e, + 0x62,0x7f,0x9d,0x72,0x9e,0x27,0xd4,0xbe,0xcf,0x76,0xd2,0x82,0x49,0x6e,0x00,0xef, + 0xee,0x6a,0xea,0x57,0x51,0xa6,0xd1,0xa5,0xa5,0x57,0x12,0x97,0x43,0xd0,0x52,0xec, + 0xb4,0x06,0x39,0xc8,0xcb,0x2f,0x23,0x3e,0xd5,0xc4,0xeb,0x70,0x47,0x7d,0x6d,0x25, + 0x91,0xc7,0x04,0x94,0x27,0xd7,0xd0,0x57,0x35,0x6b,0xae,0x30,0x60,0x4f,0x6e,0xc4, + 0xe6,0xb4,0xee,0xee,0xd2,0x58,0x84,0xf1,0x31,0x0c,0x0e,0x6b,0xe6,0xf3,0x58,0xc3, + 0x15,0x41,0xc6,0xdb,0x1f,0x43,0x96,0xf3,0x50,0xa9,0x7b,0x98,0xfa,0x17,0x87,0xc3, + 0x39,0x7b,0x81,0x85,0x8c,0xf4,0x3f,0xd6,0xba,0x9d,0x43,0x51,0x83,0x4e,0x87,0x64, + 0x43,0x18,0x03,0x91,0x5c,0xe9,0xf1,0x02,0xc7,0x13,0x14,0x38,0x6f,0xe7,0x5c,0x3e, + 0xab,0xae,0xb5,0xc1,0x3c,0x9c,0x74,0xfa,0x57,0x99,0x86,0xaf,0x4e,0x8d,0x04,0xa2, + 0xac,0xce,0xbc,0x44,0x2a,0xd6,0xac,0xdc,0xde,0x86,0xa6,0xa5,0xe2,0x59,0xe4,0x94, + 0x80,0xc4,0x29,0xcf,0x15,0xa3,0xe1,0x9d,0x5e,0xe2,0xd3,0x52,0x8a,0x50,0xc4,0xa9, + 0x6c,0xf5,0xaf,0x2d,0x9e,0x72,0xc7,0x3f,0xa8,0x35,0xd0,0xe8,0x57,0x24,0xca,0xb8, + 0xe5,0x81,0x06,0xb1,0xa5,0x56,0x55,0x2a,0xa6,0xce,0x97,0x4d,0x42,0x9b,0x48,0xfa, + 0xb6,0xef,0xc7,0x42,0x3b,0x52,0xb1,0x37,0xcf,0x01,0x5e,0xfd,0x8d,0x68,0x9d,0x74, + 0x6a,0x36,0xc9,0x3a,0x10,0x59,0xd4,0x12,0x3e,0xb5,0xf2,0xf5,0xce,0xae,0xc9,0x35, + 0xc4,0x6a,0xc7,0x6e,0xd1,0x91,0x5d,0xb6,0x85,0xaf,0x88,0xac,0x10,0xe4,0x9f,0x63, + 0x5e,0xb3,0xaf,0xed,0x39,0xa9,0xcb,0x63,0xcd,0x96,0x1e,0x9c,0x22,0xa5,0x18,0xea, + 0x49,0xe3,0xaf,0x03,0xe9,0xba,0xf5,0xdc,0x3a,0xb4,0x2a,0xa9,0x71,0x13,0x0d,0xe0, + 0x77,0x1e,0xb5,0x76,0x0b,0x55,0xb4,0xb6,0x58,0x90,0x61,0x54,0x01,0x5a,0x09,0xa8, + 0xac,0xf2,0x89,0x49,0xe0,0x8e,0x6a,0x8d,0xe5,0xe4,0x19,0x74,0x06,0xbe,0x1f,0x37, + 0xc3,0xfb,0x1a,0xb7,0x5b,0x74,0x3d,0xde,0x1f,0xc2,0x61,0xa9,0xce,0xa5,0x6a,0x34, + 0xd2,0x9c,0xda,0xe6,0x6b,0xad,0xb6,0xb9,0x8f,0x1d,0xd0,0x4b,0xf5,0x19,0x20,0x66, + 0xa1,0xd5,0xf5,0x14,0x69,0x0c,0x6c,0x72,0x79,0xac,0x59,0x27,0xc6,0xa0,0x8c,0x0e, + 0x79,0xac,0x3d,0x66,0xe9,0x44,0xc7,0x9c,0x1c,0xd7,0x46,0x02,0xab,0xfa,0xa3,0x8b, + 0xee,0x77,0x66,0x30,0x5f,0x58,0x4f,0xc8,0xf9,0x3f,0xe2,0xd5,0xaa,0xdb,0x78,0x99, + 0xa7,0x51,0x81,0x38,0xdd,0xc7,0xb5,0x79,0x68,0x91,0xb1,0x83,0x5e,0xd7,0xf1,0x6a, + 0x31,0x71,0x35,0xbc,0xcb,0xd4,0x64,0x1a,0xf1,0x66,0x88,0xf6,0xe9,0x5f,0x65,0x80, + 0x9a,0x95,0x08,0xdc,0xff,0x00,0x37,0xbc,0x5b,0xc1,0xc7,0x0f,0xc5,0x58,0xd8,0xc5, + 0x59,0x36,0x9f,0xde,0x86,0x34,0xa7,0xab,0x1e,0x83,0xd6,0x98,0x6e,0x0f,0x4c,0xfe, + 0x14,0x8f,0x0b,0x75,0x35,0x46,0x64,0x65,0xe4,0x1a,0xf4,0x29,0xd1,0x8c,0x99,0xf9, + 0xb6,0xc4,0xb2,0x5d,0xae,0x09,0x3f,0x8d,0x62,0xdc,0xdc,0x0e,0x70,0x79,0xa2,0x67, + 0x6e,0x49,0xe7,0xf4,0xac,0x69,0xcb,0x36,0x7b,0x57,0xb1,0x43,0x0c,0xad,0x7b,0x02, + 0x77,0x14,0xde,0xc8,0x87,0x1b,0xaa,0xed,0xb6,0xaf,0x22,0x63,0x9f,0xd6,0xb1,0x18, + 0x12,0x39,0xa5,0x8e,0x22,0xce,0x00,0xfc,0x6b,0xad,0xd1,0x83,0x56,0x68,0xeb,0xa3, + 0x8c,0xab,0x4b,0x58,0x48,0xf5,0x8d,0x17,0x53,0x69,0xb6,0x86,0x3c,0xd7,0xa5,0xd9, + 0xc0,0x26,0x8c,0x1c,0x7d,0x6b,0xca,0x7c,0x35,0x64,0xc4,0xae,0x07,0xa7,0xe5,0x5e, + 0xd5,0x61,0x18,0x8a,0x11,0x9c,0xd7,0xcd,0xe3,0xa1,0x04,0xee,0x7b,0x54,0xf8,0xb3, + 0x15,0x04,0xa1,0x73,0x22,0xe3,0x4e,0x52,0x7a,0x53,0xad,0xb4,0x6d,0xfc,0x91,0x5a, + 0xcd,0x20,0x66,0xc1,0xad,0xfd,0x3d,0x11,0x86,0x2b,0xe4,0xb1,0xd8,0x97,0x4d,0x7b, + 0xa7,0x4f,0xfa,0xd3,0x89,0xa8,0xac,0xd9,0x82,0x34,0x75,0x54,0xdd,0x83,0xc5,0x62, + 0xdd,0x45,0xe4,0xee,0x1d,0x00,0xaf,0x57,0x92,0xdd,0x4c,0x47,0x23,0x07,0x18,0xaf, + 0x2d,0xf1,0x16,0x62,0x7c,0xf6,0xae,0x7c,0x26,0x2d,0xd5,0x7c,0xac,0xf0,0xb1,0xd8, + 0xda,0xb5,0x75,0x94,0x8e,0x0b,0x59,0xb9,0xda,0xac,0x33,0x5e,0x41,0xab,0x4d,0xb9, + 0xc8,0xc9,0xff,0x00,0x0a,0xef,0xf5,0xbb,0x8e,0xa0,0x1f,0x5f,0xc2,0xbc,0xbe,0xf1, + 0xf7,0xca,0x4d,0x7d,0xfe,0x51,0x4b,0x4e,0x6b,0x1e,0x6c,0x7b,0x94,0x72,0x31,0xd2, + 0xba,0x5f,0x0f,0xf8,0x9f,0x53,0xd0,0x2e,0x92,0xe6,0xc6,0x56,0x52,0xa7,0xa0,0x3c, + 0x57,0x38,0xc0,0x64,0x71,0x40,0x5e,0xc7,0xbd,0x7b,0x75,0xa8,0x42,0xb4,0x1d,0x3a, + 0x8a,0xe9,0x94,0xf5,0x3e,0xe0,0xf0,0x27,0xc5,0xbb,0x0d,0x76,0x38,0xec,0xf5,0x06, + 0x10,0xdc,0x70,0x37,0x13,0xc3,0x1a,0xf6,0xc8,0x18,0x49,0x86,0x5f,0x99,0x5b,0xbe, + 0x6b,0xf2,0xf2,0xd6,0xea,0x6b,0x39,0x56,0x58,0x58,0xab,0x29,0xcf,0x15,0xf5,0x3f, + 0xc3,0x0f,0x8a,0xc5,0xd6,0x3d,0x2b,0x57,0x7e,0x38,0x0a,0xec,0x7a,0x7a,0x0a,0xfc, + 0x7f,0x8a,0xb8,0x1d,0xd1,0x4f,0x13,0x80,0x5a,0x76,0xff,0x00,0x23,0x9a,0x6a,0x50, + 0xd6,0x3b,0x1f,0x53,0x3c,0x52,0xec,0x3b,0x79,0x03,0xfc,0xf4,0xae,0x87,0xc1,0x97, + 0x2f,0x6b,0x89,0x03,0xed,0x08,0xcc,0x30,0x3a,0xe4,0x37,0x15,0x87,0x6b,0x72,0xb3, + 0xc3,0xe6,0x44,0x43,0xab,0x2e,0x72,0x3f,0xc6,0x99,0xa3,0xde,0x08,0x65,0x96,0x32, + 0x42,0xe5,0xd8,0x01,0xdf,0xd7,0x15,0xec,0xf8,0x2b,0x8c,0xab,0x1c,0x7d,0x7a,0x32, + 0x7d,0x13,0xfb,0x8f,0xd4,0x3c,0x32,0xc4,0x45,0xe2,0x2b,0x42,0xfb,0xa5,0xfd,0x7e, + 0x27,0x79,0xe3,0x8d,0x3b,0xcf,0xf1,0x05,0xbf,0x89,0x55,0x46,0x35,0x4b,0x65,0x49, + 0x58,0x10,0x73,0x3c,0x23,0x1b,0x8e,0x3b,0x95,0xdb,0xcf,0xb5,0x3b,0x48,0xda,0xd6, + 0x92,0xf1,0xf7,0x9b,0x18,0xcd,0x6c,0x4e,0x5e,0xf7,0xc0,0xfe,0x7c,0x70,0x19,0x4d, + 0xa5,0xc2,0x48,0x65,0x50,0x4e,0xc4,0x3f,0x29,0x07,0xdb,0x07,0x9a,0xc4,0xd0,0xbc, + 0xb9,0x20,0x0a,0x08,0x4d,0xf2,0xf0,0x4f,0x4c,0x16,0xcf,0x35,0xfd,0x59,0x28,0x72, + 0xd4,0x6f,0xba,0xbf,0xdf,0xb9,0xfb,0xa6,0x5f,0x57,0x9b,0x0d,0x25,0xfc,0xad,0xa3, + 0xd3,0x6c,0xec,0x1a,0xf3,0x41,0x69,0x2c,0x93,0xce,0x66,0x05,0x42,0xc6,0x79,0xcb, + 0x70,0x38,0xeb,0x55,0x3c,0x3b,0x62,0x74,0xcb,0xd6,0x5b,0x80,0x03,0x95,0xd8,0x7d, + 0x89,0xff,0x00,0xeb,0x57,0x9f,0x79,0x33,0xe9,0xf6,0x86,0xf6,0x29,0x65,0x8c,0x43, + 0x73,0x96,0x78,0x5c,0x86,0xd8,0x5b,0x95,0x5c,0x1e,0x9d,0xc5,0x7a,0x15,0xbc,0xe2, + 0x19,0x92,0xe2,0x46,0x66,0x0c,0x40,0x25,0xbe,0xf7,0xcc,0x72,0x73,0xee,0x06,0x33, + 0x5b,0x51,0x9a,0x9a,0x4d,0xc6,0xcd,0x1c,0xd9,0xad,0x67,0xec,0xa3,0x46,0x2f,0x46, + 0xff,0x00,0x23,0x43,0x55,0x84,0x41,0x21,0x69,0x9c,0x9c,0xb1,0x39,0x1c,0x7d,0x05, + 0x73,0x37,0x65,0x9a,0x32,0x07,0xcc,0x36,0xf4,0xef,0xcf,0x43,0x5d,0x4e,0xb7,0x3a, + 0xdd,0x4a,0xa5,0x32,0x41,0x53,0xc6,0x3b,0x71,0x83,0x5c,0xa5,0xc8,0x40,0x8c,0x47, + 0xde,0xec,0x7b,0x57,0x16,0x25,0xde,0x4c,0xeb,0xc0,0x43,0x96,0x92,0xee,0xcc,0xc0, + 0x06,0xe2,0x1b,0xee,0x8c,0x01,0xed,0x49,0x7d,0x20,0x65,0x41,0x8c,0x02,0x7f,0x41, + 0x49,0x1c,0xd9,0x8f,0x6e,0x32,0xc4,0x9c,0xfe,0x7c,0x52,0xdf,0x3b,0x00,0x04,0x9c, + 0x15,0x1f,0xd6,0xbc,0x9a,0x8f,0xa1,0xde,0x9f,0xbc,0x8e,0x79,0x58,0xa1,0x79,0x18, + 0xe3,0x2d,0x9c,0x77,0xeb,0xcd,0x73,0xda,0xdd,0xe7,0x97,0x0e,0xde,0xa5,0xb9,0xff, + 0x00,0x1a,0xe8,0xe4,0xdb,0x19,0xc3,0x9c,0x92,0x70,0x3e,0xbd,0x6b,0x83,0xd4,0x99, + 0x65,0xb8,0x76,0x7e,0x8b,0xc0,0x19,0xae,0x78,0xc6,0x52,0x91,0xd7,0x52,0xb7,0x2c, + 0x1a,0x31,0x81,0x66,0x62,0xed,0x85,0x03,0x85,0xcf,0xa7,0xd6,0xa7,0x0c,0xa3,0x39, + 0xce,0xef,0x4a,0xaa,0xce,0xef,0x2f,0xcb,0xf2,0x81,0xd0,0xe3,0xa0,0xef,0x4d,0x2e, + 0xea,0x36,0xa9,0x1b,0x46,0x31,0x8f,0x7f,0xe9,0x5d,0x90,0x9a,0x8b,0xb5,0xcf,0x25, + 0xbb,0xea,0xce,0x93,0x4d,0xb9,0xdb,0x20,0xdb,0x9f,0x4f,0x5f,0xc8,0x7f,0x5a,0xdb, + 0x5d,0x52,0x2d,0x3e,0x62,0x23,0x62,0xa5,0xb9,0x66,0x27,0x2c,0x7d,0x8d,0x72,0x70, + 0xdc,0xcb,0x09,0x45,0x24,0x04,0x18,0xe0,0x0e,0x4f,0xf9,0xf7,0xa5,0xbb,0x31,0xc9, + 0xfb,0xc3,0x80,0x7f,0xbb,0x9c,0xfe,0x64,0x57,0x74,0x71,0x4e,0x31,0xd0,0xc5,0xd9, + 0xca,0xef,0x63,0xd7,0x7c,0x39,0xf1,0x4f,0x54,0xd1,0xae,0x45,0xbe,0x90,0xdb,0x5d, + 0x8e,0x3c,0xc7,0xc9,0x03,0xe8,0x2b,0xad,0xbe,0xd5,0xae,0xaf,0xf5,0x15,0x97,0x51, + 0x7d,0xf7,0x32,0xb7,0x9b,0x31,0x20,0x0c,0xb3,0x0c,0xee,0xc0,0xe3,0xd2,0xbe,0x7c, + 0xd2,0x0d,0xbf,0x9b,0x1c,0xac,0x36,0x90,0x79,0xfa,0xfa,0xd7,0xa9,0x49,0xa8,0x9b, + 0x8b,0xf4,0x7c,0x72,0x61,0x4e,0x87,0xb2,0x8c,0x0a,0xcb,0x19,0x8d,0x9c,0xe8,0x5e, + 0x72,0xd1,0x1b,0xe1,0x70,0xf4,0x95,0x77,0xcb,0x1d,0x5a,0xd5,0x9d,0x6c,0x57,0x51, + 0xc9,0xa8,0x36,0x4e,0x4c,0x51,0x9c,0x03,0xea,0xc7,0xb5,0x2d,0xde,0xa4,0xeb,0x2b, + 0x2a,0x9c,0x74,0x51,0xcf,0xa5,0x73,0xfa,0x64,0xe1,0xe6,0xb8,0x97,0x3c,0xee,0x0b, + 0x9f,0xa0,0xcd,0x57,0xba,0x98,0xf9,0x86,0x42,0x32,0xc4,0xd7,0x8e,0xb1,0x96,0xbb, + 0x67,0xa9,0x87,0xc2,0xad,0x2e,0x75,0x71,0xdf,0xc7,0xf6,0x7d,0x85,0xb0,0x72,0x09, + 0x63,0xcf,0xe9,0x4b,0x6d,0x7d,0x1c,0x12,0xef,0x66,0xc1,0x3d,0xc1,0xe7,0x1e,0x95, + 0xc4,0x5a,0xcc,0xaf,0x34,0x88,0xdb,0x9c,0xa2,0x82,0x70,0x7a,0x64,0xf5,0xfc,0x2a, + 0x70,0xd2,0xf9,0x84,0x06,0xfa,0x31,0xe3,0x03,0xfc,0x6b,0x8a,0x79,0x9b,0x72,0x7a, + 0x1d,0xb1,0xc0,0xa6,0x99,0xea,0x36,0xfa,0x97,0xda,0x1b,0x72,0xf0,0x78,0xe7,0xd2, + 0xbb,0x1d,0x2a,0x62,0x1b,0xf7,0x7c,0xbb,0x72,0x7d,0xbd,0xcf,0xf4,0x15,0xe5,0xba, + 0x72,0x38,0x0a,0xaa,0x48,0x18,0x1c,0xf5,0xcf,0xe3,0x5d,0xfe,0x9a,0xfe,0x52,0x02, + 0xf8,0x0a,0x48,0x1c,0x7d,0xe3,0xf8,0xd6,0x94,0xb1,0x4e,0x47,0xcf,0xe6,0x18,0x55, + 0x18,0xfb,0xa7,0xb3,0xe9,0x72,0x3f,0x90,0xa7,0x1d,0xba,0xd7,0x91,0xf8,0xbb,0x4e, + 0x5b,0x8f,0x14,0x7d,0xa5,0x79,0xdf,0x12,0x64,0xfb,0xa9,0x22,0xbb,0x9d,0x22,0xed, + 0xe4,0x55,0x50,0x58,0x27,0x41,0xd8,0x9f,0xf0,0x15,0x5f,0x54,0xd3,0xd4,0xca,0x2e, + 0xb2,0x0f,0x51,0xf4,0x1e,0xb5,0xf9,0xff,0x00,0x8b,0x31,0x9d,0x4e,0x19,0xc4,0xca, + 0x9a,0xbf,0x2d,0xa5,0xf2,0x4f,0x5f,0xb9,0x33,0xe0,0x71,0xd8,0x4d,0x55,0xfb,0x9c, + 0x9a,0x46,0x21,0x8c,0x55,0xdb,0x56,0x39,0xaa,0x77,0x4c,0x0c,0x98,0x1d,0x05,0x49, + 0x6a,0x46,0x41,0xee,0x6b,0xfc,0xfe,0xad,0x16,0xef,0x26,0x7a,0xd4,0xb4,0x89,0xd4, + 0xc2,0x78,0x00,0x56,0x8c,0x4c,0x49,0x06,0xb2,0xad,0xc8,0xdb,0xed,0x5a,0x91,0x64, + 0x9c,0xd7,0x05,0x58,0xe8,0x6b,0x19,0x6a,0x6e,0x42,0xe1,0x40,0x1f,0xd6,0x9f,0x35, + 0xc7,0xcb,0x8a,0xad,0x11,0xe3,0xe9,0x51,0xce,0x48,0x3d,0x6b,0xce,0x9c,0x6e,0xec, + 0x68,0x99,0x0c,0xb2,0x7c,0xb9,0x35,0x91,0x34,0xb8,0xe4,0x75,0xab,0x92,0xbf,0x1c, + 0x56,0x45,0xc3,0x1e,0xd4,0x46,0x01,0x2d,0x46,0x19,0x8e,0xff,0x00,0xc6,0xa6,0x59, + 0xce,0x39,0xac,0x87,0x93,0x9c,0x9a,0x95,0x25,0xc7,0x18,0xad,0x39,0x34,0x39,0x9e, + 0x87,0x49,0x6d,0x71,0x86,0xae,0xaa,0xda,0xec,0x84,0x18,0x35,0xe7,0xb0,0xca,0x78, + 0x15,0xd0,0x41,0x72,0x76,0xf5,0x35,0x31,0x8d,0x88,0x67,0xff,0xd4,0xf8,0xf6,0xee, + 0x6c,0x67,0xd2,0xb2,0x0d,0xc6,0x1b,0xae,0x29,0x6e,0xa7,0xe4,0x80,0x71,0xef,0x58, + 0x8f,0x39,0x53,0xd7,0x83,0x5f,0x13,0x88,0x9d,0xd9,0xfe,0x8a,0x51,0xa9,0x64,0x91, + 0xb8,0x6e,0xba,0xd4,0x90,0x4d,0x96,0xcd,0x72,0xcd,0x77,0xce,0x01,0xe3,0xd2,0xb4, + 0xad,0x2e,0x47,0x04,0xf4,0xe9,0x5c,0x37,0xbc,0xce,0xd8,0xd5,0xd3,0x46,0x77,0x36, + 0x7b,0xa7,0x91,0x20,0x8f,0xab,0xe0,0x0f,0xc7,0xda,0xbe,0x8a,0xf0,0xf5,0xa5,0x8e, + 0x95,0xa3,0x18,0x9d,0x77,0x3a,0xa0,0xd8,0x47,0xf7,0x8f,0x24,0xd7,0x84,0x78,0x2e, + 0xdb,0xed,0x37,0x7f,0x68,0x7e,0x15,0x4e,0x17,0xea,0x6b,0xdf,0x99,0x56,0x0d,0x39, + 0x0b,0x0f,0xbc,0x4e,0x6b,0xdf,0xc0,0xc6,0xd1,0xf6,0x8c,0xe5,0xa9,0x25,0x39,0xd8, + 0xa4,0xb3,0x00,0x42,0x4a,0xa0,0x92,0xd9,0xce,0x7f,0x4a,0xd0,0xb6,0x88,0x49,0x74, + 0xd2,0xed,0xc2,0x93,0xd0,0x7f,0x2a,0x64,0x91,0x44,0xf0,0xac,0x85,0x46,0x66,0x00, + 0xa9,0xee,0x00,0xa9,0xad,0x1e,0x48,0xd4,0x6d,0xc0,0x75,0x5c,0x71,0xc9,0xc6,0x6b, + 0xa3,0xda,0x73,0x6b,0xd1,0x02,0x9d,0xe2,0xda,0xdc,0xda,0x92,0x39,0x21,0xb6,0xf3, + 0xbe,0xea,0xb0,0xe3,0x8a,0xf3,0x0d,0x76,0x37,0xb9,0x2d,0x24,0x99,0xfd,0xd8,0x3b, + 0x6b,0xbd,0xbd,0xbe,0x93,0xcb,0x51,0x93,0x8f,0x7a,0xe2,0x35,0xa9,0x23,0x89,0x30, + 0xcc,0x70,0xdc,0x9f,0x7a,0xf3,0x71,0x35,0x39,0x9b,0x3b,0x72,0xd8,0xb5,0x2b,0xb3, + 0x8d,0x85,0x95,0x5c,0x61,0x86,0x3d,0xeb,0x79,0x6f,0x04,0x96,0xe6,0x30,0x38,0xfc, + 0xab,0x8e,0x9a,0x74,0x7b,0x82,0x10,0x00,0x07,0x6a,0xdb,0xb0,0x76,0x92,0x32,0xa0, + 0x8e,0x2b,0xcb,0x8c,0xaf,0xee,0x9f,0x45,0x52,0x2a,0xd7,0x46,0x26,0xa3,0x3f,0x95, + 0xb9,0x54,0x61,0x8e,0x6b,0x98,0x92,0x67,0x3c,0xb7,0x19,0xeb,0x5d,0x4e,0xa7,0x6b, + 0xc3,0x4b,0x2b,0x67,0xd3,0x15,0xc6,0x4d,0x2b,0x6d,0x35,0xe1,0xe2,0x93,0x8c,0x8f, + 0x43,0x0e,0xb9,0xa2,0xc3,0xcc,0x27,0x2a,0xdc,0xe6,0xba,0x7f,0x0f,0xa9,0xfb,0x52, + 0xaf,0xad,0x71,0x71,0x48,0x4f,0xe1,0x5d,0xbf,0x87,0x1b,0x13,0x2c,0x83,0x92,0x38, + 0xf4,0xad,0xb0,0x4e,0xf3,0x47,0x36,0x2e,0xa5,0xa9,0xc8,0x65,0xf4,0x87,0xed,0xd7, + 0x4b,0xce,0x40,0x02,0xb5,0xf4,0xeb,0xc9,0x13,0x4e,0x01,0x7a,0x83,0x9c,0x8e,0xb5, + 0x91,0x76,0x58,0xde,0xdf,0x13,0x8a,0xb1,0x6b,0x83,0x62,0x1b,0x3c,0x9f,0x4f,0x4a, + 0xf4,0x62,0xbd,0xf6,0xfd,0x7f,0x33,0xcf,0x8d,0x5b,0xc1,0x2f,0x43,0xab,0xd3,0x35, + 0xa6,0x8d,0x04,0x6c,0x7e,0x6c,0x55,0x46,0xd4,0xe4,0xfb,0x44,0xbb,0xce,0x03,0xf2, + 0x2b,0x97,0xb7,0x97,0xe7,0x27,0xdf,0x15,0x77,0x55,0x90,0x2c,0x09,0x34,0x67,0x91, + 0xd7,0xd6,0xb8,0x31,0xb4,0x7d,0xbd,0x16,0x9e,0xe8,0xf4,0xb2,0xfa,0xde,0xc6,0xb2, + 0x7d,0xcb,0xab,0x7f,0x89,0xcb,0xb9,0xc9,0x00,0xe3,0x3d,0xab,0x97,0xd4,0xaf,0x99, + 0xa4,0x25,0x9b,0x70,0xcd,0x56,0xbb,0xb8,0x7f,0x21,0xa5,0x46,0xc7,0x1d,0x7e,0xb5, + 0xce,0x1b,0xc3,0x29,0xc3,0xe4,0x9a,0xf1,0xb0,0xc9,0xc6,0x8f,0x2f,0x99,0xeb,0x63, + 0xea,0xaf,0x69,0x73,0x83,0xf8,0x8b,0x22,0xc8,0xb0,0x1f,0x7a,0xf2,0xad,0x83,0x3e, + 0xf5,0xe8,0x9e,0x3f,0x90,0x6e,0xb7,0x4f,0xa9,0xaf,0x35,0x32,0x01,0x80,0x7b,0x57, + 0xd9,0x65,0xd4,0x24,0xe8,0xa6,0x91,0xfe,0x74,0x78,0xc9,0x5f,0xda,0xf1,0x56,0x29, + 0xae,0x96,0x5f,0x80,0xe6,0x88,0x60,0xf1,0xfe,0x7d,0xab,0x36,0x6b,0x7e,0x0f,0xa1, + 0xab,0x8d,0x72,0x14,0x60,0x7f,0x3a,0xa1,0x35,0xd6,0x47,0x5e,0xbf,0xe7,0xad,0x7b, + 0xd8,0x6c,0x34,0xfb,0x1f,0x96,0x98,0xb7,0x11,0x81,0x9a,0xc2,0x99,0x00,0xfb,0xbc, + 0x56,0xe4,0xf2,0x06,0x24,0x1e,0x6b,0x2a,0x40,0x49,0xe3,0xbd,0x7b,0x34,0xa0,0xe2, + 0x8a,0x48,0xcd,0x64,0xe3,0xa6,0x71,0x57,0xec,0x2d,0x8b,0xca,0x32,0x3b,0xd4,0x66, + 0x3e,0xc3,0xad,0x75,0x7a,0x1d,0x91,0x91,0xd7,0x8f,0x43,0x45,0x69,0x35,0x16,0x39, + 0x3d,0x0e,0xff,0x00,0xc3,0x76,0x58,0x0a,0x78,0xcf,0xa1,0xaf,0x40,0x97,0xf7,0x30, + 0x01,0xea,0x2b,0x33,0x45,0xb5,0x11,0xc6,0x0e,0x31,0xf5,0xab,0xb7,0xee,0x01,0x23, + 0xa0,0xaf,0x91,0xc7,0x4f,0x99,0xb3,0x9d,0xbd,0x74,0x28,0x24,0x84,0xbf,0xb5,0x75, + 0xba,0x4b,0xfc,0xcb,0xeb,0x5c,0x64,0x67,0x2d,0x5d,0x4e,0x98,0xd8,0x65,0xfe,0xb5, + 0xf2,0x59,0x9c,0x1b,0x8b,0x37,0xa1,0x27,0x7d,0xce,0xeb,0xef,0x46,0x48,0xf4,0xaf, + 0x23,0xf1,0x82,0x04,0x0e,0x7d,0x3b,0x57,0xac,0x23,0x81,0x15,0x79,0x37,0x8d,0x1b, + 0xf7,0x6f,0xcf,0x63,0x5e,0x7e,0x51,0x77,0x5d,0x23,0xa6,0xa2,0xbc,0x4f,0x9f,0xf5, + 0xb9,0xf3,0x9a,0xe1,0xdc,0x96,0x62,0xd5,0xd0,0x6a,0xd2,0x16,0x91,0x97,0x35,0x85, + 0xb4,0x1e,0x4e,0x78,0xaf,0xd8,0xb0,0x51,0xe5,0xa6,0x91,0x8c,0x6f,0xd0,0x80,0x80, + 0x79,0x22,0x8c,0x73,0xff,0x00,0xd7,0xa9,0x31,0xed,0x49,0x8f,0x4e,0x6b,0xb0,0x1b, + 0x18,0x79,0x1e,0x86,0xac,0x5a,0xdc,0x49,0x6b,0x20,0x92,0x33,0xb4,0x83,0xd8,0xfa, + 0x54,0x45,0x78,0xeb,0x8a,0x02,0x86,0x1c,0x9a,0x52,0x49,0xa6,0x98,0x35,0xdc,0xfa, + 0xe3,0xe1,0x37,0xc4,0xd2,0x51,0x34,0x8d,0x4d,0xf2,0x38,0x08,0xcc,0x7f,0x4a,0xf7, + 0x5d,0x32,0x74,0x9f,0x53,0x9c,0xc6,0xdf,0xbb,0x67,0xcf,0x07,0x19,0xe3,0x8a,0xfc, + 0xe2,0xd3,0xef,0x26,0xb2,0x9d,0x25,0x85,0x88,0x2a,0x41,0xeb,0x8a,0xfb,0xa3,0xe1, + 0x65,0xec,0xba,0x96,0x99,0x6b,0x75,0x33,0x12,0xee,0xb9,0x27,0x19,0xe7,0x38,0xfc, + 0xeb,0x8b,0x85,0xf2,0x0a,0x38,0x3c,0xe6,0x58,0xba,0x4a,0xca,0x4a,0xd6,0xf9,0x9f, + 0x71,0xe1,0xed,0x3f,0x67,0x8d,0xab,0x24,0xf4,0x71,0xfd,0x4f,0xb5,0xbe,0x1c,0x6b, + 0x90,0xdb,0x5b,0xbe,0x97,0x34,0x60,0xc5,0x2a,0x10,0xcb,0xdb,0xe6,0xeb,0xbb,0xeb, + 0x9e,0x95,0xca,0xcb,0xa7,0xa6,0x91,0xac,0xcd,0xa6,0xc0,0x77,0x45,0x0c,0xcc,0x50, + 0x9f,0xee,0x11,0xb9,0x7f,0x20,0x71,0x50,0xf8,0x4e,0x1d,0xf3,0x85,0x8e,0x42,0x8c, + 0x0f,0x27,0x39,0x1d,0x7d,0x7d,0x7d,0xff,0x00,0x2a,0xd0,0xf1,0x5a,0x3d,0x87,0x88, + 0xd3,0x73,0x16,0xf3,0x6d,0x77,0x9f,0x5f,0x94,0x15,0xe2,0xbf,0xa0,0x2b,0xbb,0xd0, + 0x84,0x9f,0x43,0xf6,0x2c,0xae,0xaf,0x26,0x22,0xa4,0x13,0xf8,0x97,0xe2,0x8b,0xd6, + 0x31,0xc0,0x74,0x56,0x96,0x65,0xca,0x93,0xb8,0x75,0xec,0x72,0x2a,0x8e,0xa5,0x3c, + 0x91,0xc5,0x0e,0xd3,0x9c,0x60,0xb6,0x47,0x52,0xdc,0xfd,0x2b,0x63,0x51,0x48,0xad, + 0x74,0x9d,0x36,0xd9,0x65,0xc3,0x3a,0x96,0x60,0x78,0xe0,0x7a,0xfe,0x35,0xcc,0x5d, + 0xdc,0x79,0x80,0xc6,0x87,0x72,0xab,0x6e,0x24,0xfb,0xf4,0xfc,0xab,0x9a,0xaa,0x4b, + 0xdd,0xb6,0xc6,0xf5,0x6a,0x7b,0x4c,0x4a,0x6b,0x64,0x6e,0x2d,0xec,0x81,0x54,0x6e, + 0x25,0xf1,0xb4,0xf5,0xe7,0xda,0xab,0x49,0xd0,0xe7,0x8e,0x0f,0x1e,0xb5,0x55,0xa4, + 0xc4,0xdb,0x3f,0xba,0xd9,0x3c,0x1d,0xa7,0x1e,0xfc,0xd1,0x3d,0xe3,0x2b,0x71,0x8c, + 0x91,0x8e,0x3e,0xbd,0xbd,0xeb,0xce,0xaa,0xb5,0xd4,0xf6,0xe9,0x55,0x52,0x8a,0x48, + 0x08,0x22,0x34,0x2d,0xc9,0x19,0xf6,0x15,0x4e,0xe9,0xf7,0x12,0xe4,0xf0,0x5b,0x9c, + 0x9f,0x4f,0x7a,0xb2,0xb7,0x02,0x66,0x07,0x19,0xda,0x71,0x9e,0xb5,0x99,0x7b,0x21, + 0xc3,0x60,0x79,0x60,0x29,0xed,0x9e,0x4f,0x53,0x5e,0x65,0x45,0xef,0x58,0xde,0x33, + 0x7d,0x4c,0x6d,0x52,0xe5,0x63,0x87,0x03,0x6b,0x64,0x9e,0x86,0xbc,0xf6,0xe9,0xdd, + 0x8e,0xd1,0x91,0x9c,0xf7,0xe7,0xf1,0xae,0x8b,0x52,0xb8,0xf3,0x24,0x0a,0x07,0xdd, + 0xce,0x7f,0x0a,0xe6,0x81,0x0e,0xce,0xd9,0xf6,0x03,0xfc,0xf6,0x34,0x72,0xb4,0xac, + 0x45,0x4a,0xfc,0xcf,0x95,0x6c,0x57,0x4e,0xbb,0x79,0xc8,0xfe,0x58,0xa1,0x8c,0xa5, + 0x95,0x71,0xd7,0xa7,0xa9,0xfa,0xd5,0xc8,0xe1,0x4c,0xe1,0xb8,0x63,0xc7,0x07,0x8a, + 0x64,0xd2,0x22,0x7c,0x90,0x64,0x38,0xe1,0x99,0xb9,0xfc,0x69,0x4a,0x2d,0x46,0xed, + 0x89,0xdf,0xa1,0x56,0x40,0x10,0xee,0x07,0x39,0xe3,0x24,0xf1,0x57,0x51,0x7c,0xd8, + 0x86,0x5f,0x00,0x75,0x3d,0x17,0xf0,0xf5,0xac,0x29,0xd8,0xc8,0x44,0x49,0xf2,0x63, + 0xef,0x1c,0xd6,0xae,0x9f,0x89,0x53,0xca,0x77,0x3c,0x77,0xef,0xf8,0x2f,0x6f,0xad, + 0x44,0x2a,0x2e,0x6b,0x11,0x24,0xd2,0xb8,0xa6,0x43,0x1b,0x84,0x8c,0xe4,0x64,0x11, + 0xec,0x7f,0xc6,0xbd,0x07,0x44,0x70,0x21,0x92,0xea,0x53,0xca,0xa0,0x5f,0xf1,0xae, + 0x46,0xde,0xd6,0x0d,0xc3,0x81,0x8c,0xf7,0xf5,0xef,0x5d,0x6d,0xc7,0x97,0x06,0x96, + 0xa2,0x16,0x04,0xcd,0xb7,0xe5,0x1d,0x8f,0x4a,0xc3,0x1d,0x19,0x7b,0x07,0x27,0xdc, + 0xdf,0x01,0x3f,0xdf,0xa4,0x6c,0x5b,0xce,0x2d,0xb4,0xf5,0x76,0xff,0x00,0x96,0xee, + 0xd2,0x03,0xea,0x09,0xc0,0xfe,0x55,0x46,0xf7,0x50,0x31,0xaa,0xe4,0xf2,0xf9,0x20, + 0x55,0x4d,0x42,0x5f,0x25,0x56,0x11,0x9c,0x42,0x81,0x46,0x4f,0x70,0x2b,0x1f,0x49, + 0x8d,0xb5,0x3d,0x4d,0x23,0x91,0xbe,0x54,0xe4,0x93,0xd9,0x57,0x93,0x5f,0x3f,0xcc, + 0xde,0x87,0xd7,0x42,0x1b,0x44,0xf4,0xdd,0x06,0xde,0x04,0xb5,0xdc,0xc3,0x75,0xe4, + 0x87,0x7b,0xa9,0xe1,0x79,0x03,0x0a,0x3e,0x83,0xd3,0xbd,0x69,0x25,0xba,0x34,0xc2, + 0x46,0x53,0xc7,0x40,0x3a,0x0a,0xe7,0x05,0xee,0xd9,0xf7,0x87,0xc1,0x66,0xc0,0x6a, + 0xdd,0x8e,0xe5,0xa5,0x60,0x50,0x75,0xe3,0x35,0x9a,0xa5,0x77,0x74,0x69,0x64,0xaf, + 0x63,0xaa,0xb4,0x01,0x48,0xea,0x00,0xec,0x05,0x75,0xba,0x6b,0xc5,0xe6,0x8d,0xdc, + 0xb6,0x78,0x5a,0xe5,0xb4,0xb3,0x98,0xcb,0x49,0x9e,0x78,0xcd,0x74,0xba,0x74,0x8b, + 0x14,0x9b,0xb6,0xfe,0x9c,0xfe,0x75,0xd7,0x49,0xd9,0xad,0x4f,0x9c,0xcc,0x23,0x75, + 0x23,0xd1,0xf4,0xaf,0x9b,0xe7,0x71,0xb5,0x57,0xa6,0x07,0x53,0xf5,0xa9,0xf5,0xe7, + 0x61,0x6a,0x36,0xa8,0x19,0x3c,0x9e,0x9f,0xa5,0x67,0xe9,0x93,0xfc,0xe0,0x13,0xd7, + 0xf1,0xe2,0xa7,0xf1,0x14,0xe5,0x21,0x8a,0x32,0x71,0xb8,0x92,0x05,0x7c,0xef,0x88, + 0xd5,0xe9,0xd3,0xe1,0x9c,0x7c,0xa5,0xb7,0x23,0x5f,0x7e,0x8b,0xf1,0x3e,0x03,0x15, + 0x17,0xcf,0x63,0x83,0x9a,0x4f,0x9c,0x9a,0xb1,0x6b,0x2f,0x35,0x9d,0x75,0x27,0xcf, + 0xcd,0x25,0xbc,0xc4,0x1f,0x97,0x8a,0xff,0x00,0x3e,0x2a,0xa4,0xd1,0xbc,0x34,0x47, + 0x6b,0x6d,0x29,0x3c,0xfb,0x57,0x41,0x6e,0x77,0x63,0xb5,0x71,0x96,0x72,0x1d,0xc3, + 0x9a,0xeb,0xec,0x32,0xc0,0x1e,0xd5,0xe4,0xd5,0xea,0x33,0xa0,0x85,0x41,0x50,0x7d, + 0x2a,0xb5,0xc8,0xad,0x08,0xb8,0x4a,0xa1,0x79,0xdc,0x0e,0xf5,0xc3,0x6b,0xc8,0x6e, + 0x4c,0xc5,0x91,0xab,0x2a,0x7e,0x7a,0xfe,0x75,0x76,0x63,0xf3,0x10,0x7b,0x55,0x09, + 0x4e,0x73,0x5d,0x51,0xa4,0xbb,0x12,0xe6,0xd9,0x9c,0xe3,0x92,0x29,0x53,0x34,0xae, + 0x00,0x39,0x14,0xab,0xd2,0xae,0x50,0xb1,0x1c,0xd7,0x64,0xa8,0xd8,0x38,0xad,0x18, + 0xa6,0x20,0x64,0x56,0x56,0x71,0xcf,0x4a,0x53,0x2e,0x14,0x1f,0xca,0xb9,0xe6,0x9a, + 0xb9,0x51,0x57,0x67,0xff,0xd5,0xf8,0x3a,0xe2,0x7c,0x92,0x05,0x62,0xdc,0xdc,0x00, + 0x0f,0x35,0x3d,0xcc,0xa1,0x41,0x3d,0x2b,0x9a,0xbc,0xb9,0xea,0x09,0xaf,0xcf,0xea, + 0xd5,0xde,0xe7,0xfa,0x07,0x0a,0xfa,0x16,0x0d,0xc9,0xdf,0xc9,0x3f,0xe7,0xd6,0xb6, + 0x2d,0xee,0x36,0xa8,0xc1,0xe4,0xd7,0x17,0x1c,0xdb,0x9f,0x77,0xad,0x6e,0x59,0xcd, + 0xba,0x44,0x4c,0xe7,0x24,0x0a,0xe5,0x8c,0xae,0xee,0x8e,0x8a,0x75,0x8f,0xa5,0x3c, + 0x25,0x04,0xb1,0x58,0xc5,0x24,0x63,0x90,0x03,0x9f,0xad,0x7b,0x0d,0xb4,0xf7,0x3a, + 0x95,0x88,0x52,0xb8,0x8c,0x61,0x73,0x8e,0xa6,0xbc,0x9f,0xc3,0xd7,0x42,0xd2,0xc3, + 0xe5,0x60,0x32,0xa0,0x11,0xdf,0xa5,0x77,0x1a,0x66,0xa9,0x73,0xf6,0x63,0x1c,0x7c, + 0x2a,0x65,0xfd,0x39,0xed,0x5f,0x4f,0x05,0xc9,0x05,0xe8,0x55,0x2a,0xcd,0xa7,0xa6, + 0xab,0xa9,0xd4,0x4b,0x0c,0xd6,0xb2,0x2c,0x64,0x6e,0x58,0xfe,0x51,0x8e,0xe4,0x0e, + 0x71,0x53,0x5b,0xc6,0xc8,0xde,0x72,0x75,0x90,0x77,0xf7,0xac,0xfb,0x3b,0xb7,0xf2, + 0x8d,0xe1,0xf9,0xcf,0x20,0xee,0xe8,0x09,0xab,0x56,0xf3,0x19,0xbc,0xd9,0x3e,0xe8, + 0x40,0x31,0x9f,0xe9,0x53,0xcc,0xb9,0x2c,0x5a,0x6e,0xcd,0x4b,0xa0,0x9a,0x84,0xe2, + 0x15,0x31,0xbf,0x2c,0x06,0x7f,0xc8,0xae,0x13,0x5b,0xb9,0xfb,0x46,0xd5,0x27,0x18, + 0x1c,0x9e,0xf5,0xd0,0x5c,0x4c,0x6e,0x26,0xc8,0x1b,0xdd,0x4f,0x39,0xae,0x5b,0x56, + 0x78,0xe5,0x60,0x47,0x6e,0x5b,0x1e,0xbe,0x95,0xc1,0x1f,0x7b,0x99,0x9e,0x9d,0x3a, + 0x8e,0x9d,0x97,0x53,0x8d,0x2d,0xf3,0xb0,0xc1,0x1e,0xb5,0xb1,0xa6,0xdc,0x95,0x1b, + 0x71,0xc6,0x6b,0x0e,0xe4,0xb0,0x0e,0xc7,0xa1,0xfe,0x7e,0x95,0x1d,0x8c,0xd3,0x11, + 0x86,0x3b,0x79,0xfe,0x55,0xc1,0x51,0xf2,0xca,0xe7,0xb9,0x49,0xf3,0x47,0x53,0xaa, + 0xbe,0x58,0x67,0x8c,0x84,0x1c,0xe7,0x91,0xd2,0xb8,0x2d,0x4e,0x25,0x8a,0x43,0xb7, + 0x9f,0x5f,0x6a,0xed,0x62,0x3e,0x64,0x64,0x74,0xae,0x47,0x58,0x45,0x89,0xce,0x3a, + 0xe7,0x39,0xfa,0xd7,0x9f,0x8b,0x87,0x32,0xb9,0xd9,0x42,0x7c,0xba,0x1c,0xf8,0x56, + 0x0d,0xb8,0x72,0x2b,0xb6,0xf0,0xfb,0x79,0x2c,0xb9,0x1c,0x1a,0xe3,0x33,0x92,0x07, + 0x42,0x6b,0xab,0xd1,0xdc,0xa3,0x6d,0x93,0xa0,0x1c,0x54,0x60,0xd5,0xa5,0xa1,0x8e, + 0x3a,0x77,0x83,0x06,0x73,0x25,0xd5,0xf3,0x72,0x70,0x0f,0x4a,0x9a,0x39,0x15,0x74, + 0xe0,0x99,0xc1,0x23,0xf2,0xaa,0x31,0x3b,0x79,0x77,0x92,0x8c,0xe0,0x92,0x33,0xed, + 0xd2,0xa4,0x88,0x23,0x5a,0x29,0xcf,0xcd,0x8a,0xec,0xbb,0xfc,0xff,0x00,0x33,0xcf, + 0x87,0xf9,0x10,0xc5,0x28,0xfc,0x01,0xc0,0xa9,0xef,0x6e,0x73,0x01,0x8c,0xf0,0x48, + 0xaa,0x00,0xec,0x6c,0xe6,0xb2,0x66,0xb9,0x67,0x77,0xcf,0x3d,0x86,0x6b,0x25,0xee, + 0xab,0x1e,0x9c,0x57,0x51,0x97,0x17,0x05,0x6d,0x04,0x7d,0x39,0x26,0xb9,0xf1,0x31, + 0x12,0x7c,0xb5,0x2d,0xd5,0xcb,0x93,0xb0,0xfd,0x3e,0x95,0x52,0x01,0x99,0x46,0x4d, + 0x79,0xad,0x29,0x4a,0xc8,0x31,0x75,0xf9,0x60,0xe4,0xde,0xa7,0x9d,0xf8,0xf6,0x66, + 0xfb,0x74,0x51,0xe7,0x05,0x53,0x9f,0xc6,0xbc,0xf5,0x9f,0xf8,0x6b,0xad,0xf1,0x94, + 0x86,0x6d,0x66,0x41,0xfd,0xd0,0x07,0x15,0xc8,0x94,0xce,0x7d,0x3b,0x57,0xdc,0x65, + 0x95,0xa1,0x0a,0x31,0x8b,0x3f,0xce,0x4e,0x3f,0xc5,0xfd,0x67,0x88,0x31,0x95,0x6f, + 0x7f,0x79,0xfe,0x1a,0x14,0xe5,0x62,0x7a,0x71,0xed,0x54,0x1c,0x9f,0x53,0x5a,0xaf, + 0x18,0xfc,0xaa,0x94,0xa8,0x00,0xfe,0x95,0xf4,0x34,0x6a,0x46,0x4a,0xd1,0x3e,0x3d, + 0x33,0x35,0x93,0x3d,0x7e,0xa6,0xa0,0x64,0xf6,0xab,0xe5,0x4f,0x5a,0x81,0x97,0x9c, + 0x57,0x4d,0xba,0x97,0x72,0x38,0x21,0xf3,0x24,0x00,0xd7,0xa6,0xf8,0x7a,0xc1,0xb7, + 0x2e,0x16,0xb8,0xed,0x2e,0xd7,0xcd,0x70,0x71,0xe9,0x5e,0xcd,0xa0,0x58,0xed,0x45, + 0x38,0xe3,0x8a,0xf2,0xf1,0xf5,0xb9,0x55,0x96,0xe6,0x35,0x25,0xd0,0xe8,0x20,0x87, + 0xca,0x83,0x70,0xe2,0xb1,0x6e,0xd8,0x6e,0xe3,0x22,0xba,0x1b,0xbf,0xdd,0xc6,0x14, + 0xf1,0x8a,0xe5,0x2e,0x5f,0xe6,0x27,0xa5,0x7c,0x95,0x67,0x7d,0x4c,0x37,0x21,0x4f, + 0xbd,0xd3,0xa5,0x75,0x1a,0x73,0x8c,0x67,0x35,0xc8,0x47,0x27,0xcd,0x81,0xd2,0xba, + 0x4d,0x39,0xc1,0xc5,0x78,0xd8,0xf8,0xfb,0xa6,0xf4,0x5a,0x4e,0xc7,0x70,0x1f,0xfd, + 0x1f,0x8e,0xb5,0xe4,0xfe,0x33,0x7f,0xdd,0x3f,0xd3,0x35,0xea,0x6a,0x73,0x6e,0x30, + 0x6b,0xca,0x3c,0x60,0x33,0x1b,0x73,0xd8,0xf6,0xaf,0x3b,0x25,0x85,0xab,0xa4,0x76, + 0xee,0x7c,0xe1,0x7e,0x73,0x3b,0xfb,0x1a,0xa0,0x46,0x09,0xcd,0x69,0x5e,0x2f,0xfa, + 0x43,0xfd,0x4d,0x52,0xc7,0x1c,0xf3,0x5f,0xb2,0x53,0x8f,0xba,0x92,0x30,0x6a,0xda, + 0x15,0xd8,0x10,0x32,0x46,0x29,0xb8,0x35,0x3e,0xdc,0x75,0x34,0xd3,0x82,0x31,0x9c, + 0xff,0x00,0x8d,0x5b,0x40,0x43,0x8e,0xf8,0xeb,0x47,0xbd,0x48,0x40,0xcf,0xbd,0x2e, + 0x3b,0xd2,0x01,0x23,0x18,0x65,0x3e,0xf5,0xf6,0xa7,0xc2,0x77,0x90,0x78,0x72,0xc8, + 0x29,0xda,0x5b,0x70,0xdd,0xd8,0x61,0xba,0xd7,0xc5,0xcb,0xd4,0x0a,0xfb,0x37,0xe1, + 0x4c,0x86,0x2f,0x0e,0xd8,0xa6,0xdc,0xb3,0xef,0x23,0xdb,0x2e,0x79,0xaf,0x43,0x2b, + 0x76,0xc4,0x26,0x7d,0xef,0x02,0x4b,0xfd,0xb2,0x56,0xec,0x7d,0x2f,0xa4,0xdf,0xcd, + 0x0c,0x91,0x25,0xb6,0xe0,0xab,0xd5,0xb3,0xf3,0x12,0x3d,0x71,0x5a,0x5a,0xf6,0xa7, + 0x2c,0x9a,0xb4,0x12,0xcc,0xee,0x73,0x6c,0xca,0xa1,0xf8,0x23,0xe6,0x1f,0xe3,0x59, + 0x9a,0x10,0x13,0x3a,0x94,0x27,0xcb,0x38,0xc3,0x0e,0x37,0x7b,0xfd,0x3b,0x0a,0xd5, + 0xf1,0xac,0x56,0xd1,0xc9,0xa7,0x35,0xb1,0x2c,0x5f,0x74,0x67,0x3d,0x72,0x70,0x7a, + 0xfd,0x45,0x7e,0xac,0xe7,0x27,0x86,0xe6,0xbe,0x87,0xea,0xd8,0x3a,0xd1,0x8e,0x26, + 0x29,0xae,0xe7,0x49,0x7d,0x20,0xba,0x4d,0xd2,0xb6,0x56,0x38,0xd7,0x6f,0xb7,0x73, + 0xcd,0x73,0x11,0x5d,0xe6,0x46,0x20,0x70,0x54,0x8c,0xf5,0xce,0x3a,0x7a,0x53,0x66, + 0xd4,0x32,0x3c,0xb6,0x3f,0x29,0x56,0x53,0xec,0x47,0x1f,0xd2,0xb2,0xad,0x64,0x5d, + 0xeb,0x86,0x0c,0xc4,0x12,0x47,0x4a,0xc5,0xd4,0x4d,0xdd,0x9b,0x51,0x93,0xe6,0x94, + 0x9f,0x53,0xaa,0x91,0xe4,0xda,0x03,0x39,0xe9,0x90,0x3d,0x41,0xe6,0xa8,0x0b,0xa2, + 0xac,0xbb,0xb0,0x48,0x20,0x9c,0x75,0xc6,0x7d,0x7d,0x6a,0x4b,0xb9,0x9c,0xc6,0x8e, + 0xa5,0x7e,0x65,0x50,0x48,0x1c,0x9c,0x75,0xac,0x58,0xdc,0x17,0x55,0x63,0x90,0x18, + 0x93,0xf4,0xc1,0xac,0x6b,0x24,0xd1,0xdf,0x42,0xbd,0x99,0xd6,0x59,0x48,0x8e,0xdb, + 0xcf,0x46,0xce,0x01,0xeb,0xcd,0x66,0xdf,0x5c,0x72,0xce,0x70,0xca,0xa0,0x8c,0x03, + 0x8a,0x92,0xd0,0xa6,0xcc,0xc9,0x90,0xc0,0xf5,0xae,0x77,0x56,0xba,0x58,0xc9,0x8f, + 0xa8,0x76,0xc6,0x41,0xe0,0x0c,0x7e,0xb5,0xe6,0xa5,0xfb,0xcb,0x33,0xb6,0x75,0x17, + 0x2f,0x32,0x30,0x35,0x12,0xcc,0x18,0xa8,0x6d,0xc5,0x47,0x51,0xc9,0xdc,0x7b,0x9a, + 0xcb,0x8e,0x3d,0xbc,0xee,0x3f,0x8f,0x63,0xff,0x00,0xd6,0xad,0xd6,0x89,0xe6,0x57, + 0x45,0x61,0xb9,0x54,0x03,0xd7,0xd3,0xf9,0xd4,0x26,0x03,0x0c,0x18,0x7c,0x79,0x87, + 0x9c,0xf6,0xc0,0xff,0x00,0x38,0xad,0xa7,0x16,0xf5,0x15,0x09,0xab,0x5f,0xa9,0x98, + 0x71,0xb8,0x2b,0x80,0x0e,0x3a,0xfa,0x0a,0x63,0xc6,0x8f,0xfb,0xa6,0x2a,0xa9,0x8f, + 0x9b,0x3d,0x4f,0xa7,0x3d,0xaa,0x85,0xcd,0xc3,0xac,0x81,0x8f,0xaf,0x6f,0x5f,0xfe, + 0xb5,0x59,0x51,0xe7,0x4a,0x25,0x99,0x82,0x8c,0xfd,0xd1,0xce,0x7d,0xcd,0x73,0x3a, + 0x91,0x7a,0x23,0xb6,0x6d,0x46,0x2a,0x46,0x60,0x8a,0x25,0x7f,0x32,0x30,0x63,0x8f, + 0x3d,0x5b,0x93,0xf4,0x15,0x3d,0x84,0xcb,0x0d,0xcb,0x6f,0x23,0x6e,0x71,0x8c,0xe3, + 0xf3,0x35,0x35,0xe9,0x57,0xda,0xee,0x30,0x8a,0x0f,0xb0,0xff,0x00,0x80,0x8f,0xea, + 0x6b,0x18,0x79,0x6f,0x26,0xf5,0x1b,0x40,0xe9,0x9f,0x5a,0xe1,0x72,0xe5,0x95,0xd1, + 0x97,0x37,0x3a,0xd4,0xef,0x21,0x45,0xbb,0x70,0x88,0xb8,0x8f,0xfb,0xdd,0x3f,0x01, + 0x9a,0xdd,0x9a,0xd9,0x63,0xba,0xb1,0xb7,0x53,0x95,0xdd,0xbd,0xbf,0xe0,0x03,0x3f, + 0xe1,0x5c,0x95,0x9d,0xd4,0x92,0xaa,0x2a,0x1f,0xbb,0x8c,0x83,0xe9,0xea,0x71,0x5d, + 0x5a,0x4c,0x9b,0x9a,0xe9,0x58,0x95,0x8e,0x3d,0xaa,0x7f,0xda,0x73,0xcf,0xe8,0x2b, + 0x7c,0x6c,0xe3,0x2c,0x33,0x2b,0x2c,0xe6,0x58,0xb8,0xa5,0xe6,0x67,0x6b,0xb7,0x45, + 0xf2,0x41,0xfb,0xdc,0x7f,0x8d,0x69,0xf8,0x7a,0xdd,0x6d,0xb4,0xd9,0xef,0xdb,0xe5, + 0x69,0x3e,0x55,0x27,0xd0,0xf2,0x78,0xfa,0x71,0x5c,0x76,0xa3,0x27,0xda,0x2f,0x63, + 0x87,0x90,0x09,0xe9,0x9e,0xd5,0xd5,0xea,0x17,0x9e,0x45,0xad,0xbe,0x9c,0x87,0xfd, + 0x5a,0x82,0xe3,0xdd,0xb9,0xfe,0x58,0xaf,0x9d,0x8c,0x37,0x67,0xd9,0xd2,0xea,0xcd, + 0x3b,0x16,0x13,0x5d,0x2e,0x08,0x3c,0x72,0x05,0x76,0xd6,0x51,0xaa,0xc8,0x3f,0x8b, + 0xd0,0x0a,0xf3,0xad,0x15,0xf3,0x2b,0xb0,0x04,0x01,0xd0,0x1e,0xb8,0xf7,0xc5,0x7a, + 0x1e,0x9d,0x3a,0x6e,0x50,0xa3,0x27,0x8c,0x01,0xd3,0xeb,0x5a,0xc2,0x3a,0x6a,0x39, + 0xcf,0x4d,0x0e,0xf2,0x08,0xf1,0x0a,0xa8,0x00,0x02,0x73,0xc1,0xe9,0xf9,0x56,0xd5, + 0xab,0xa8,0xe0,0xe5,0x9f,0x1f,0x85,0x64,0x43,0xb9,0x82,0x86,0x39,0xc6,0x38,0xf7, + 0xad,0xab,0x50,0xb1,0x1c,0x95,0xc9,0x63,0x81,0x59,0x35,0x66,0x78,0x18,0x97,0x78, + 0xbb,0x9d,0xae,0x8e,0x9f,0x3a,0xb9,0x3d,0x3b,0x7a,0xfd,0x3d,0x2b,0x91,0xf1,0x9e, + 0xbe,0xb1,0xea,0xe9,0x60,0x1c,0x7e,0xea,0x30,0x5b,0x9e,0xed,0xd3,0xf4,0xae,0x81, + 0x6f,0xd3,0x4d,0xb1,0x9b,0x53,0xb9,0x6f,0x2e,0x2b,0x78,0xda,0x46,0xf4,0x00,0x0c, + 0xfe,0x35,0xf2,0x9c,0x9e,0x21,0xba,0xd5,0xf5,0x5b,0x8d,0x46,0xe0,0x92,0xf7,0x12, + 0x97,0xe7,0xb0,0x3f,0x74,0x7e,0x03,0x8a,0xfc,0xff,0x00,0xc5,0x0a,0x9e,0xd7,0x25, + 0x96,0x05,0x3d,0x67,0x6b,0xfa,0x2d,0x7f,0x33,0xf2,0xbe,0x25,0xce,0x23,0x85,0xaf, + 0x4e,0x95,0xfd,0xe7,0xf9,0x1e,0xd2,0x2f,0x44,0xca,0x0e,0x7a,0xd4,0xb0,0xcd,0x87, + 0x15,0xc1,0xe9,0xf7,0xcc,0x40,0xcb,0x67,0xf1,0xae,0x8a,0xde,0xeb,0x73,0x0c,0x9a, + 0xfe,0x29,0xc4,0xe1,0x1d,0x29,0xca,0x1d,0x8f,0x4f,0x0b,0x5b,0xda,0x41,0x48,0xf4, + 0x2b,0x19,0x32,0x41,0xae,0xd7,0x4f,0x94,0x00,0x31,0xde,0xbc,0xce,0xc2,0xe8,0x0c, + 0x67,0xa8,0xae,0xb2,0xd6,0xf9,0x54,0x0c,0x9c,0x57,0xce,0x62,0x93,0xe6,0x3a,0x8f, + 0x45,0x8e,0x71,0x80,0x2a,0xbd,0xc4,0xa0,0x8e,0x3d,0x2b,0x99,0x4d,0x48,0x74,0xdd, + 0x4d,0x96,0xff,0x00,0x77,0x7e,0xb5,0xcd,0x4e,0x0e,0xe2,0x6c,0x7d,0xc3,0x7c,0xe4, + 0xe7,0xbd,0x52,0x77,0x18,0xe6,0xa9,0x4d,0x76,0xb9,0xc8,0x3d,0x6a,0xa3,0xdd,0x8c, + 0x72,0x6b,0xd1,0x50,0xb6,0xa8,0xe6,0x96,0xe5,0xa9,0x24,0x19,0xc0,0x3c,0x0a,0x6a, + 0x3e,0x38,0x15,0x9a,0xf7,0x39,0x3c,0x77,0xa9,0x23,0x97,0xbf,0xa5,0x66,0xe3,0xcc, + 0xc1,0x2b,0x75,0x34,0x0b,0x82,0x6a,0x27,0x6c,0x8c,0x67,0xff,0x00,0xac,0x2a,0xb4, + 0x93,0x0c,0xf1,0x50,0x19,0xc1,0x07,0x1d,0xab,0x3a,0x90,0x4b,0x43,0xa2,0x9a,0xd2, + 0xe7,0xff,0xd6,0xfc,0xe4,0xbb,0x98,0x8e,0xf5,0xcb,0x5c,0x48,0xc4,0xf4,0xcd,0x6c, + 0x5d,0x49,0xbb,0x8e,0x6a,0x82,0xd9,0xc9,0x30,0xcf,0x35,0xf9,0x8e,0x22,0xa2,0xbe, + 0xa7,0xf7,0x6c,0x6b,0xa4,0xb7,0x28,0x23,0x10,0x73,0x9c,0x7b,0xd7,0x41,0xa1,0x93, + 0x3e,0xa5,0x0a,0x75,0x1b,0xab,0x36,0x7b,0x26,0x89,0x49,0x61,0x5a,0x9e,0x12,0x8c, + 0xc9,0xaa,0xaf,0xfb,0x23,0xff,0x00,0xad,0x46,0x1d,0x29,0xce,0x29,0x77,0x2e,0x96, + 0x21,0xb7,0xa3,0x3e,0x8c,0xb1,0x75,0x43,0x11,0x7f,0xbb,0x90,0xa7,0xf2,0xaf,0x40, + 0xd3,0x2e,0x23,0x67,0x2a,0x87,0x6e,0x72,0x01,0xf6,0xaf,0x36,0xd2,0xe0,0x6b,0x99, + 0x15,0x1f,0x21,0x47,0x3e,0x95,0xd4,0x69,0xd9,0x9a,0x47,0xdb,0x26,0xd2,0x99,0xe3, + 0xa7,0xb5,0x7d,0x4d,0x46,0xd4,0x5b,0x46,0xae,0xb2,0x52,0x69,0xbd,0x8e,0xb9,0x6f, + 0xa6,0x5b,0x73,0x12,0xfd,0xcd,0xe4,0xe3,0xd7,0x15,0x34,0xb7,0xee,0xb6,0xc0,0x15, + 0xda,0x4f,0x39,0x35,0xce,0x5b,0xc8,0x41,0x3b,0xdb,0x20,0x1c,0x1c,0x7a,0xd4,0x97, + 0xf7,0x39,0x2b,0x1a,0xf2,0x0f,0x4e,0x6b,0x9a,0xa4,0xd3,0x85,0x8e,0xca,0x38,0x85, + 0xed,0x12,0xe8,0x68,0x47,0x34,0x90,0xfe,0xfc,0x49,0x86,0x97,0x3c,0x01,0xd2,0xb3, + 0x5f,0x19,0x1b,0x97,0x3c,0x92,0x7f,0xda,0x35,0x5e,0xdd,0xe5,0x98,0xa4,0x6a,0x77, + 0x1e,0x87,0x8a,0x9a,0x77,0x45,0xfd,0xd8,0x6c,0xb2,0x83,0xd0,0xe6,0xb2,0xa4,0xb9, + 0x61,0xcc,0x8f,0x4d,0x56,0x75,0x27,0xa1,0xcf,0x5d,0xa2,0x15,0x90,0x15,0x0b,0x93, + 0x93,0xfd,0x2b,0x0e,0x12,0xb1,0x9c,0x9c,0x8c,0x67,0xad,0x6f,0xdd,0x94,0x48,0x99, + 0x86,0x73,0xd7,0x9a,0xe5,0x7c,0xed,0xdd,0x46,0x3d,0xab,0xcf,0xc5,0x4b,0x54,0xe4, + 0x7d,0x16,0x0a,0x4a,0xcc,0xdc,0xb7,0xb9,0x63,0xf2,0x86,0xc7,0x6a,0xc0,0xd7,0x6e, + 0x57,0x7a,0xa2,0x9c,0x9f,0x5a,0x87,0xed,0x12,0x6f,0xd8,0xbc,0x0e,0x84,0xd5,0x1b, + 0xe8,0xdd,0x4a,0x3b,0x1c,0xe4,0xf1,0x5c,0x35,0xa5,0x78,0x3b,0x1d,0xbc,0xd6,0x68, + 0x96,0x36,0x49,0x0a,0xb7,0x4c,0x73,0xed,0x5d,0x1d,0xa7,0xee,0xe3,0x69,0x54,0xf2, + 0x16,0xb9,0x88,0x87,0xcb,0xc6,0x6b,0xa5,0x83,0x02,0xca,0x4c,0xf3,0xf2,0xd6,0x74, + 0x36,0x47,0x36,0x2a,0x77,0x4c,0x65,0xa8,0xce,0x9b,0x72,0xcd,0x9c,0x93,0x9a,0x7c, + 0x4a,0x45,0x92,0xec,0xe7,0x02,0xab,0xc6,0xdb,0x34,0xb9,0x07,0x20,0x13,0x8e,0x2a, + 0xcc,0x4c,0x1a,0xcc,0x60,0xe3,0x03,0xa5,0x75,0xc1,0x6d,0x7e,0xc7,0x0c,0x26,0xee, + 0xdf,0x99,0x8b,0x3b,0x6d,0x8d,0xb0,0x6b,0x2e,0x28,0xf7,0xc4,0xee,0x4f,0x0b,0xde, + 0xa4,0xbf,0x99,0x53,0xe5,0xcf,0xbf,0x15,0x0b,0xca,0x3e,0xc6,0xa5,0x0e,0x09,0xc9, + 0x22,0xb9,0x6a,0xb5,0xa9,0xed,0xc2,0x5a,0x1c,0xed,0xd3,0x11,0x21,0x06,0xac,0xda, + 0xa8,0x0a,0x5c,0x8c,0x60,0x7f,0x4a,0xad,0x39,0xdc,0xf4,0xb3,0x4c,0x2d,0xac,0x24, + 0x93,0x3d,0x14,0xff,0x00,0x2a,0xe6,0xc3,0x43,0x9a,0xa2,0x48,0xf1,0x73,0xdc,0x52, + 0xa3,0x87,0xa9,0x36,0xf6,0x4c,0xf1,0x8f,0x10,0x5c,0x8b,0x8d,0x5a,0x77,0x1d,0x37, + 0x10,0x2b,0x1b,0x39,0x3c,0x53,0xee,0x64,0xf3,0x27,0x77,0x27,0xef,0x31,0x27,0xf3, + 0xe2,0xaa,0xee,0x2b,0xd0,0xe3,0x35,0xf7,0xb4,0x72,0xc6,0xa2,0x8f,0xf3,0x73,0x33, + 0xc4,0x3c,0x46,0x2e,0xb5,0x6f,0xe6,0x93,0x7f,0x89,0x2b,0xf7,0x3c,0xfb,0xd5,0x27, + 0x51,0xc8,0xfc,0x2a,0x56,0x6c,0x75,0xa8,0x64,0x6e,0x79,0xe3,0xde,0xbd,0x2a,0x14, + 0x1c,0x4e,0x24,0xba,0x95,0x4a,0xe0,0x1c,0xf6,0xa8,0x95,0x77,0x30,0x00,0xf5,0xab, + 0x07,0x9e,0x6a,0x5b,0x68,0x77,0xcb,0x5d,0xd7,0xb6,0xa5,0x37,0xa1,0xd5,0xe8,0x16, + 0x7b,0x99,0x41,0x18,0x15,0xed,0x3a,0x6d,0xa8,0x8e,0x10,0x4f,0xa6,0x6b,0xcf,0xbc, + 0x39,0x6a,0x4e,0xd3,0x8e,0x78,0xaf,0x53,0x45,0xf2,0xe0,0xf7,0xf7,0xaf,0x9b,0xcc, + 0x6a,0xdd,0xd9,0x9c,0x73,0x91,0x83,0xa8,0xb1,0xc9,0x2a,0x7a,0x57,0x2b,0x71,0x83, + 0xf9,0xff,0x00,0x9e,0xd5,0xd1,0xdf,0x1c,0x93,0x9f,0xaf,0xe9,0x58,0x13,0x63,0x93, + 0xfe,0x4d,0x78,0x4d,0x6b,0xa9,0x26,0x76,0x48,0x60,0x7d,0x3a,0x57,0x45,0xa6,0x39, + 0xc8,0xf4,0xae,0x6c,0x9e,0x72,0x2b,0x7f,0x4b,0xc6,0xe1,0x8a,0xf2,0xf1,0xe9,0x72, + 0xb3,0xa2,0x9b,0x77,0x3b,0xb4,0x24,0xdb,0x67,0x15,0xe5,0xbe,0x2e,0xc1,0x89,0xfe, + 0x87,0x18,0xaf,0x4d,0x0c,0x45,0xb6,0x0e,0x3a,0x77,0xeb,0x5e,0x5d,0xe2,0xb2,0x36, + 0x30,0xe3,0x07,0x3d,0x2b,0x8b,0x28,0x8f,0xfb,0x42,0x47,0x62,0x92,0x6a,0xcc,0xf9, + 0xfe,0xf8,0x7f,0xa4,0x38,0xe9,0x54,0x8a,0xfc,0xb9,0xe9,0x5a,0x77,0x6a,0x1a,0x77, + 0xcf,0x63,0x54,0x8a,0x03,0x5f,0xae,0xd3,0x5e,0xea,0x32,0x2a,0x90,0x00,0xa6,0x11, + 0xc7,0x35,0x73,0x6f,0xe7,0xda,0xa2,0x2a,0x8d,0xc2,0xba,0xb9,0x1c,0x1d,0xac,0x1b, + 0x07,0xd0,0xe0,0xf0,0x7d,0xaa,0xb6,0x02,0xb1,0x1e,0xdf,0xad,0x28,0x5f,0xee,0xd4, + 0xdb,0x38,0x04,0x51,0x80,0x79,0x22,0x80,0x23,0x45,0xcb,0x0c,0x0e,0x86,0xbe,0xca, + 0xf0,0x06,0x20,0xf0,0xee,0x9f,0x91,0x80,0xd1,0x0c,0x81,0xd4,0x82,0x79,0x1f,0x8d, + 0x7c,0x77,0x10,0x01,0xc0,0xf7,0x15,0xf6,0x57,0x84,0x86,0xdf,0x0c,0x69,0xbc,0x01, + 0xfb,0x84,0xfc,0x85,0x75,0xe0,0xe5,0xcb,0x37,0x2f,0xeb,0x73,0xef,0x38,0x13,0x4c, + 0x45,0x47,0xe4,0xbf,0x33,0xe9,0x3f,0x0c,0x30,0x32,0xa1,0x20,0x3e,0xe5,0x5f,0x94, + 0x7a,0x63,0x81,0x5b,0xbe,0x3f,0x68,0x60,0x7d,0x1a,0x49,0x36,0xc6,0xcd,0x30,0xd9, + 0x10,0xfe,0x10,0x14,0x92,0x4d,0x65,0xf8,0x22,0x34,0xb9,0xb8,0xb6,0x44,0xdc,0x4b, + 0x63,0x1e,0xa0,0x63,0xa9,0xf7,0x35,0xd4,0xfc,0x58,0xd0,0x64,0x8e,0xdf,0x4b,0xbc, + 0x1c,0x08,0xdc,0xb1,0xe3,0xd1,0x48,0xe3,0x15,0xfa,0xd4,0x14,0xa5,0x81,0x93,0x48, + 0xfb,0xef,0x6e,0xa3,0x8c,0x8c,0x5b,0xee,0x79,0x0d,0xd5,0xe9,0x8d,0xca,0x6e,0xc6, + 0x3a,0x7b,0x86,0x39,0xcf,0xeb,0x4e,0xb3,0xb9,0x50,0x19,0xb2,0x77,0x67,0xaf,0x71, + 0xf8,0xd7,0x39,0xa9,0xcc,0xc6,0xe1,0x54,0x9e,0x4a,0x8c,0x12,0x38,0xca,0x8f,0x5f, + 0x70,0x6a,0xd5,0x8c,0xc6,0x44,0xc6,0x48,0x2c,0x41,0x07,0xdf,0xff,0x00,0xd5,0x5e, + 0x24,0x2b,0xbd,0x8f,0x7a,0x94,0x92,0x8a,0x67,0x79,0x73,0x74,0x65,0x8d,0x30,0x71, + 0x83,0xc7,0xa0,0xe3,0x81,0x9f,0x6a,0x83,0x6f,0x96,0x50,0x81,0x9d,0xc0,0x92,0x7b, + 0x91,0x59,0xd1,0xb0,0x40,0x15,0xba,0x6e,0xe0,0x67,0xa7,0xf8,0xd6,0xb6,0xe8,0xe4, + 0x81,0x4a,0x70,0x40,0x3c,0x7e,0x75,0xd4,0xa4,0xa4,0x88,0xf6,0x96,0xd8,0x7c,0xd7, + 0x04,0x5b,0xed,0x04,0xfc,0xc3,0x07,0xd8,0x56,0x65,0xdc,0x25,0xd6,0x38,0x43,0x72, + 0x06,0x4f,0x1d,0x47,0x15,0x32,0x11,0x24,0x4e,0xcc,0x32,0x10,0x64,0x9e,0x86,0xb3, + 0xda,0x4f,0x36,0x22,0xe1,0xba,0x02,0x06,0x4f,0x38,0x1e,0x95,0x8d,0x97,0x35,0xec, + 0x5f,0xb7,0x77,0xe5,0x65,0xab,0x6f,0x2e,0x33,0x20,0x63,0xb4,0x83,0x81,0xea,0x40, + 0x15,0x9b,0xa9,0xdc,0x24,0x51,0xec,0xfb,0xcc,0xfc,0x1e,0x7b,0x55,0xfc,0xc6,0xaa, + 0xcc,0x13,0x73,0x92,0x73,0xf4,0xc5,0x60,0x6b,0x0d,0xe5,0xa0,0xe0,0x1c,0x8f,0xf3, + 0xcf,0x35,0x15,0xa7,0x68,0x9e,0xc5,0x0b,0x5d,0x1c,0x95,0xdd,0xcb,0x46,0xe7,0x03, + 0xe5,0x07,0xaf,0xff,0x00,0x5a,0x9d,0x6b,0x79,0x2c,0xef,0xb1,0xdb,0x68,0xf4,0xf6, + 0xf6,0xaa,0x73,0x18,0xe6,0x7d,0xb2,0x31,0x08,0xa7,0x9f,0x51,0xeb,0x8a,0xaf,0x0c, + 0xa3,0x78,0xd8,0xa1,0x77,0x1c,0x01,0xc9,0xc0,0xaf,0x0a,0x55,0x64,0xa4,0x7a,0x73, + 0xd6,0x2d,0x0f,0xba,0xbc,0x98,0xbb,0x45,0xb8,0x90,0x7b,0x13,0x9c,0xfd,0x68,0x8a, + 0xe8,0x85,0x1f,0x37,0xcc,0x38,0x1d,0xff,0x00,0x2a,0xaf,0xa9,0xb8,0x49,0x02,0xa8, + 0xce,0x71,0xbb,0xeb,0xfe,0x7b,0x54,0x36,0xc8,0xc3,0x24,0xf0,0x4f,0xad,0x71,0xfb, + 0x49,0x73,0xd8,0xe1,0x55,0x52,0x47,0x77,0xa2,0x7e,0xf7,0xe5,0x77,0x2a,0xa7,0x93, + 0x9f,0x5f,0x73,0xdf,0xe9,0x5d,0x6d,0xc4,0xeb,0x0d,0xb9,0x88,0x74,0x63,0xdf,0xbe, + 0x2b,0xcf,0x34,0xbb,0xc8,0xe0,0x99,0x41,0x6d,0xd9,0x39,0xf6,0xad,0xcb,0xfd,0x43, + 0x81,0x92,0x40,0x41,0xdb,0xf3,0xae,0xac,0x45,0x54,0xe9,0xf2,0xa3,0xbb,0x2d,0xd2, + 0xac,0xaa,0xbe,0xc5,0xbd,0x25,0x05,0xee,0xb3,0x9e,0x36,0x29,0xc1,0x27,0xb0,0x1d, + 0x7f,0x2a,0xd6,0xbc,0x78,0x1e,0xe1,0xa4,0xce,0x4b,0xb1,0x61,0xf4,0xec,0x3f,0x2a, + 0xc0,0xd1,0x83,0xc3,0x68,0xf7,0xb9,0xc1,0x62,0xc3,0x3c,0x0e,0x83,0x9f,0xe7,0x55, + 0x92,0xf5,0x64,0x94,0x8c,0x0e,0x3f,0x4a,0xe6,0xf6,0x69,0x45,0x5f,0xa9,0xee,0xd2, + 0xc6,0x2f,0x85,0x1e,0x83,0xa3,0x26,0xf5,0x20,0x9c,0x06,0x6c,0x90,0x3b,0x7d,0x6b, + 0xd2,0xb4,0x58,0x93,0xcc,0x50,0x30,0xa4,0x73,0x9c,0x75,0x1e,0x95,0xe7,0x1a,0x26, + 0xc3,0x0a,0x34,0x7f,0xc7,0xd7,0x77,0x7a,0xf5,0x5d,0x0a,0x20,0x00,0x7c,0x73,0xe8, + 0x7d,0x6b,0x45,0x17,0x63,0x5a,0xd5,0x7d,0xc6,0xce,0xa5,0x77,0x70,0x14,0xf5,0xf4, + 0x1d,0xab,0x7a,0xc1,0x48,0x0a,0x5b,0x93,0x9f,0xa9,0xf7,0xac,0x84,0x56,0x32,0xec, + 0x88,0x12,0x3b,0xf6,0x1c,0xfb,0xd7,0x57,0xa7,0x40,0xb1,0x95,0x24,0x03,0xd3,0x81, + 0x5c,0xdf,0x6b,0x53,0xc3,0xc5,0xd6,0x4a,0x1a,0x1c,0x5f,0xc5,0x3d,0x49,0xac,0x3c, + 0x28,0xb6,0x4a,0x70,0xd7,0xb2,0x2c,0x60,0x7f,0xb0,0xbf,0x33,0x1f,0xc7,0x18,0xaf, + 0x9e,0x74,0xf1,0x96,0x55,0x23,0xf1,0xaf,0x47,0xf8,0xb1,0xab,0x0b,0xed,0x71,0x34, + 0xf8,0x8e,0x63,0xb2,0x4c,0x63,0xfd,0xb7,0xe5,0xbf,0x21,0x8a,0xf3,0x4b,0x39,0x3c, + 0xb6,0x19,0xe7,0x9e,0xd5,0xf9,0x3f,0x1b,0x56,0x78,0x9a,0xd3,0x50,0xda,0x2a,0xdf, + 0xe6,0x7f,0x36,0x67,0xf9,0x9a,0xaf,0x9d,0xce,0x57,0xd2,0x3a,0x7f,0x9f,0xe2,0x7a, + 0x25,0x86,0x15,0x3f,0x0a,0xd4,0x8a,0x7c,0x35,0x72,0xb6,0xd7,0xa3,0x6e,0x33,0xd4, + 0x56,0x8a,0x5c,0xe7,0x90,0x6b,0xf9,0x77,0x36,0xc3,0x4a,0x35,0xa7,0xcc,0x7e,0x91, + 0x81,0xc4,0xa9,0x52,0x8b,0x8b,0x3b,0x4b,0x7b,0xd2,0x84,0x13,0x5b,0x10,0xea,0x85, + 0x71,0xce,0x3f,0x1a,0xf3,0xe8,0xee,0xb6,0x81,0x83,0x57,0x63,0xbb,0x3d,0x3a,0xf7, + 0xeb,0x5f,0x27,0x5b,0x0b,0x77,0xa9,0xea,0xc6,0xab,0xb1,0xe8,0xd1,0xea,0x65,0x8f, + 0x5f,0xc6,0xb4,0xd6,0xf3,0x70,0xce,0x4d,0x79,0xd5,0xbd,0xd1,0xc7,0x5e,0xb5,0xb3, + 0x15,0xd8,0xc6,0x01,0xfc,0xeb,0x93,0xea,0xe9,0x3d,0x0b,0x53,0xbe,0xe7,0x49,0x35, + 0xd6,0x1b,0x3d,0x79,0xaa,0x66,0xe7,0x9a,0xc7,0x7b,0xb0,0xdd,0xf3,0xf4,0xa8,0xfe, + 0xd0,0x0e,0x07,0xe9,0x5b,0x46,0x9a,0x33,0x93,0xbb,0x36,0xc4,0xec,0x4e,0x3f,0x9d, + 0x5d,0x8e,0x42,0x00,0x35,0x81,0x0c,0xb9,0x3c,0xf7,0xab,0xe2,0x4d,0xab,0xef,0x55, + 0x1a,0x4b,0x74,0x85,0x17,0xa9,0x62,0xe6,0xe7,0x68,0xeb,0xda,0xab,0xa5,0xd0,0x2b, + 0x9a,0xc6,0xbd,0xb9,0x23,0xf0,0xaa,0x71,0x5d,0x71,0xc9,0xeb,0x5c,0xf2,0xa6,0xe5, + 0x3b,0x9d,0xb3,0x56,0xa4,0x7f,0xff,0xd7,0xfc,0xdd,0x7b,0x47,0x69,0x39,0xe9,0x9a, + 0xec,0xb4,0x9d,0x25,0x19,0x41,0x22,0x89,0x6d,0x55,0x5b,0x8c,0x66,0xb5,0xb4,0xe9, + 0xd6,0x20,0x40,0x23,0x8a,0xfc,0xbe,0xa6,0x1e,0x72,0x67,0xf4,0x5e,0x3b,0x8c,0xe3, + 0xcb,0x68,0x48,0xe7,0x75,0xed,0x39,0x22,0x8c,0x80,0x3b,0x70,0x6b,0x0b,0xc2,0x51, + 0x63,0x52,0x90,0x83,0x80,0x38,0xae,0xaf,0x5d,0x66,0x95,0x4f,0xd2,0xb0,0x3c,0x37, + 0x1b,0x45,0x77,0x23,0x9f,0xca,0xba,0x30,0x54,0x1c,0x6a,0xab,0x9f,0x5b,0xc3,0xb9, + 0xbf,0xb7,0x51,0xbb,0xd4,0xf5,0xeb,0x69,0x19,0x11,0x36,0x1e,0x73,0xc9,0xf5,0xad, + 0x6b,0x09,0x9d,0x49,0x60,0x78,0x66,0xc1,0x1e,0xd5,0xcd,0xf9,0xe4,0x22,0x95,0xe4, + 0x63,0xf1,0xad,0x5b,0x39,0xc0,0x9a,0x16,0x23,0xe5,0xea,0x46,0x78,0xaf,0x7b,0x15, + 0x2b,0x72,0xa3,0xed,0xb9,0xed,0x76,0xce,0xad,0x94,0x43,0x18,0x95,0x5f,0x82,0xdc, + 0x7a,0x9a,0xab,0x70,0xe0,0x4b,0xbc,0xb1,0x3b,0x70,0x3e,0xa2,0xa8,0xbc,0xb2,0x4f, + 0x3a,0x7c,0xff,0x00,0x2f,0x50,0x33,0xf9,0x54,0x73,0x31,0x49,0xb2,0x79,0xcf,0x6f, + 0x7a,0xe3,0x9c,0xb9,0xba,0x1a,0xe1,0xea,0x3b,0xae,0x66,0x75,0x30,0x5c,0xad,0x84, + 0x06,0x48,0x86,0xe7,0x6c,0x05,0x1e,0xe6,0xab,0x39,0x68,0x0b,0x3c,0xe3,0xe7,0x23, + 0x27,0xb7,0x5e,0x95,0x8f,0xe7,0xb4,0x92,0x20,0xce,0xdd,0xbc,0xf1,0x56,0x2e,0x9f, + 0x2e,0x1e,0x47,0x25,0x88,0xa5,0x3a,0x97,0xb2,0x5b,0x1e,0xce,0x15,0x46,0x2e,0xcb, + 0xa8,0xc9,0x90,0x36,0xe6,0x24,0x15,0x61,0x5c,0xbc,0xbf,0x33,0x90,0x70,0xa0,0x73, + 0xcd,0x75,0x29,0x26,0xf8,0xb2,0x3b,0xfa,0xd7,0x2b,0x75,0xf2,0x39,0xc8,0xc9,0x3c, + 0x8c,0xfb,0xf7,0xae,0x4c,0x43,0x56,0x4c,0xfa,0x0c,0x2c,0xb7,0x33,0x26,0x94,0x89, + 0x32,0xa7,0xa7,0xf2,0xaa,0xb7,0xd3,0x34,0xad,0x1a,0x9f,0xae,0x2a,0x79,0xf0,0xb9, + 0x63,0xc7,0xa5,0x66,0xa3,0x09,0xe5,0x62,0x46,0x36,0xf4,0xaf,0x2e,0xb4,0xad,0x06, + 0xbb,0x9d,0xc9,0xdd,0xab,0x9a,0x00,0x38,0x03,0x24,0xff,0x00,0x5a,0xe8,0x1e,0x46, + 0x87,0x4d,0x63,0x19,0xe1,0xb8,0xac,0x18,0x83,0xb6,0x33,0x57,0xef,0x98,0xa5,0xa0, + 0x55,0x3c,0x66,0xb2,0xa3,0x3b,0x45,0xb3,0x93,0x13,0x3d,0x91,0x62,0x49,0x3c,0xbd, + 0x2c,0x64,0xe3,0x26,0x88,0xa5,0xff,0x00,0x43,0x18,0x3c,0x0e,0x48,0xac,0xcb,0xd9, + 0x91,0x2c,0xe1,0x88,0x9e,0x4f,0x26,0xa5,0x8a,0x58,0xc5,0xa9,0xc7,0xa5,0x74,0x46, + 0xa2,0xe6,0xf9,0x1c,0xb0,0x96,0x97,0xf3,0x39,0x8d,0x52,0x6f,0xde,0xe3,0x3c,0x77, + 0xa8,0x64,0x99,0x70,0x02,0x1e,0x31,0x8a,0xaf,0x7f,0x3a,0xc9,0x29,0x07,0xd6,0xb3, + 0xd9,0xca,0x9e,0x0d,0x72,0x56,0xa9,0x76,0x7a,0xd0,0xab,0x68,0x97,0x39,0x2c,0x09, + 0x1f,0x85,0x65,0x6b,0xf7,0x22,0x0d,0x2e,0x71,0x9e,0xab,0x8e,0x7d,0x4d,0x6a,0xdb, + 0xb1,0x73,0x90,0x6b,0x91,0xf1,0xb5,0xc8,0x4b,0x51,0x00,0x3c,0xb9,0xfd,0x2b,0xd2, + 0xc9,0xe8,0x7b,0x4a,0xf0,0x49,0x75,0x3f,0x32,0xf1,0x1f,0x37,0x58,0x4c,0x9f,0x13, + 0x55,0xbf,0xb2,0xd7,0xdf,0xa1,0xe5,0x64,0x9e,0xa6,0xa3,0x39,0x3d,0xf1,0x8a,0x90, + 0x8e,0x31,0x49,0x83,0x9f,0x6a,0xfd,0x35,0x2b,0x9f,0xc2,0x2c,0x85,0x81,0xa6,0x91, + 0x52,0x95,0xc7,0x1c,0x9c,0xd3,0x0f,0x61,0x8a,0x42,0x64,0x24,0x60,0x56,0xae,0x99, + 0x6e,0x5a,0x41,0x9e,0xf8,0xac,0xf0,0x01,0xae,0xb7,0x44,0xb5,0x2c,0xeb,0xc6,0x6b, + 0x3a,0xae,0xd1,0x64,0x4d,0xda,0x27,0xa4,0x78,0x7e,0xd4,0x84,0x00,0x8a,0xec,0x2e, + 0x78,0x8c,0x03,0xdb,0xd0,0xf4,0xaa,0x5a,0x45,0xb8,0x48,0xc6,0x45,0x58,0xbc,0x7e, + 0xde,0x9d,0x6b,0xe4,0x31,0x72,0x4e,0x4c,0xf3,0xe7,0x25,0x7b,0x1c,0xf5,0xce,0x72, + 0x47,0xad,0x60,0xcf,0x92,0x0e,0x73,0xc7,0xf3,0xad,0xcb,0x87,0xc9,0xe7,0x91,0xfa, + 0x62,0xb0,0xe7,0x1b,0xba,0x76,0xaf,0x3a,0xa3,0x45,0xa6,0xba,0x19,0x85,0x0e,0x7d, + 0xab,0x7f,0x4d,0x1f,0x32,0x9e,0x79,0xac,0x72,0x8d,0x90,0x2b,0x7b,0x4e,0x4e,0x46, + 0x7f,0x1a,0xf3,0x31,0x6e,0xf1,0x66,0xd4,0xf7,0x3a,0xa9,0x09,0x58,0x09,0xf6,0xe6, + 0xbc,0xa7,0xc5,0x2e,0x4a,0xb9,0x35,0xea,0x52,0x63,0xc9,0xc7,0xb5,0x79,0x3f,0x8a, + 0x5c,0x90,0xe3,0xb5,0x4e,0x43,0x0e,0x6c,0x42,0xb9,0xd6,0x99,0xe3,0x77,0x03,0x32, + 0x36,0x3d,0x6a,0xb0,0x8d,0x8b,0x60,0x0c,0x9a,0xbf,0x2a,0x6f,0x94,0xfb,0x9c,0xf3, + 0xd0,0x7e,0x35,0xf6,0xef,0xc0,0xbf,0x80,0xba,0x5e,0x9b,0xa7,0xdb,0x7c,0x4a,0xf8, + 0xa7,0x6c,0x5e,0x17,0x02,0x6d,0x2b,0x46,0x94,0x73,0x3f,0x42,0xb7,0x17,0x4a,0x46, + 0x44,0x7d,0xd2,0x3f,0xe2,0xea,0xdd,0x80,0xfd,0x1b,0x31,0xcc,0x68,0x60,0x30,0xef, + 0x11,0x89,0x95,0x92,0xfc,0x7c,0x91,0x32,0x92,0x8a,0xb9,0xc6,0xfc,0x14,0xfd,0x9c, + 0xdf,0x5d,0xb3,0x83,0xe2,0x17,0xc4,0x76,0xfe,0xcc,0xf0,0xd2,0x30,0x7b,0x5b,0x59, + 0x06,0xdb,0x9d,0x50,0x8e,0x7e,0x45,0x3c,0xa5,0xbf,0x62,0xe7,0x97,0xfe,0x1e,0x39, + 0x6f,0x75,0xfd,0xb0,0xe5,0xf0,0xaf,0xc4,0x8f,0x87,0xda,0x47,0x88,0x3c,0x37,0xa1, + 0xe9,0x5a,0x45,0xef,0x83,0xa2,0x16,0xcc,0x74,0xeb,0x64,0xb7,0x33,0xe9,0x84,0x6d, + 0x75,0x93,0x66,0x03,0x18,0x9b,0x6c,0x80,0x9e,0x70,0xa4,0x0e,0xa6,0xaf,0xfc,0x43, + 0xf1,0xb6,0xa5,0xe2,0x5b,0xaf,0x2d,0x1b,0x11,0xae,0x15,0x23,0x41,0xb5,0x15,0x47, + 0x0a,0xaa,0xa3,0x80,0x07,0x40,0x05,0x79,0xc6,0xa8,0xcf,0x71,0xa6,0xcd,0xa4,0xce, + 0x33,0x1c,0xb0,0x49,0x1c,0xa0,0xf4,0x3e,0x62,0xe0,0xff,0x00,0x3a,0xfc,0xc6,0x97, + 0x11,0xe2,0xf1,0x98,0xf8,0x62,0x93,0xe5,0x82,0x7f,0x0f,0x97,0x9f,0xa9,0xc7,0x1c, + 0x5b,0xe6,0xe5,0xe8,0x7c,0x00,0xe8,0x41,0xe4,0x73,0x4d,0xd9,0x9e,0x0f,0x4c,0x55, + 0xb7,0x81,0xe2,0x63,0x0b,0xf2,0xd1,0x92,0x8c,0x4f,0xf7,0x97,0x86,0xfd,0x45,0x30, + 0xa7,0x39,0x35,0xfa,0xfa,0xd5,0x5d,0x1d,0xc4,0x31,0x2f,0xce,0xbd,0xb9,0xaf,0xaf, + 0x7c,0x28,0x73,0xe1,0xdb,0x35,0x1d,0x16,0x05,0x03,0x9f,0x6c,0xd7,0xc9,0x71,0xa0, + 0xde,0xbd,0x7a,0xd7,0xd4,0xbe,0x12,0x9c,0x9d,0x0a,0xc8,0x74,0xfd,0xd0,0xff,0x00, + 0x0a,0xd6,0x93,0xb3,0x68,0xfb,0x8e,0x09,0x9d,0xaa,0xd6,0xf4,0xfd,0x4f,0xa9,0x3e, + 0x18,0xcf,0x3c,0xfa,0x85,0xa7,0x99,0x81,0x1a,0xf2,0xc3,0xa0,0x26,0xbd,0xa3,0xe2, + 0xac,0x4c,0x3c,0x26,0xb7,0x12,0x31,0x64,0x49,0x02,0xa0,0xcf,0x00,0x35,0x7c,0xcf, + 0xf0,0xf3,0x5a,0x6b,0x5b,0xd8,0x44,0xb8,0x11,0xa1,0xc7,0x3c,0x7d,0x6b,0xd1,0x3e, + 0x2b,0xf8,0xc6,0x09,0x34,0x2d,0x3e,0xca,0xde,0x42,0x0c,0xb7,0x19,0x61,0x9c,0x82, + 0x88,0xa4,0xf2,0x3e,0xb8,0xaf,0xd5,0xf0,0x98,0xa8,0x2c,0xba,0x57,0x7d,0x0f,0xb3, + 0xad,0x4e,0x55,0x31,0x94,0xf9,0x4f,0x11,0xd4,0x98,0x4e,0x52,0x4d,0xc0,0xb2,0x6e, + 0x07,0x9e,0x72,0x3a,0x67,0xeb,0x57,0xb4,0xd9,0x10,0xc6,0xae,0x59,0x81,0xec,0x3d, + 0xfd,0xab,0x97,0x79,0xf7,0x5d,0x48,0xb9,0xf9,0x65,0xc1,0x1f,0x5c,0x56,0xbd,0xb2, + 0xee,0xc0,0xdd,0x80,0x0e,0x46,0x3d,0x0d,0x7c,0xad,0x2c,0x43,0x96,0xa7,0xd2,0x29, + 0x69,0x63,0xb7,0x13,0x28,0xdb,0xe6,0x36,0x40,0xc1,0xc8,0xed,0x9f,0x7f,0x6a,0x9a, + 0x1b,0x99,0x7e,0x74,0xdd,0x91,0xbf,0x0a,0x07,0x6e,0x3b,0x56,0x22,0xbe,0x62,0x40, + 0xca,0x4e,0xdf,0x5e,0x3a,0x56,0xf6,0x97,0xe5,0x99,0x01,0x19,0x38,0xeb,0x9f,0x4f, + 0xad,0x7a,0x34,0xf1,0x17,0x1c,0x75,0x34,0x90,0x2c,0x76,0x8c,0x17,0x86,0x1d,0x77, + 0x57,0x2f,0x2e,0x48,0x0a,0xce,0x07,0x3c,0x81,0x8f,0xad,0x75,0x53,0xe5,0xed,0x65, + 0x18,0xcf,0x5c,0xe3,0x23,0x18,0x35,0xc6,0xb4,0x88,0xf3,0x30,0x23,0xe7,0x0d,0xd7, + 0xb7,0x15,0xbf,0xb4,0xd0,0xcf,0x58,0xd4,0x26,0x69,0x59,0x22,0x0c,0x5c,0xa8,0x52, + 0x58,0x7d,0x7a,0x56,0x2d,0xfc,0xee,0xf1,0x86,0x70,0x77,0x37,0x1b,0x8f,0xa7,0xbd, + 0x5e,0xb9,0x97,0x64,0x7b,0x78,0xe9,0x8f,0xc0,0x57,0x3d,0x7b,0x21,0xdb,0xe5,0x0c, + 0xe4,0xf2,0x3b,0xfe,0x55,0xc1,0x88,0x9b,0xb3,0xb9,0xee,0x61,0xab,0x24,0x91,0x8d, + 0x31,0x05,0x89,0xcf,0x1c,0xf2,0x29,0x96,0x84,0x6f,0xcb,0x72,0xc4,0xfe,0x95,0x14, + 0xce,0x5b,0xe5,0x00,0x92,0x33,0xcd,0x25,0x84,0x4e,0x27,0x39,0xcf,0xae,0x6b,0xc9, + 0x5a,0xcd,0x5c,0xed,0xab,0x5e,0xf1,0x76,0x67,0x4d,0x77,0xa5,0xc9,0x73,0x0f,0x98, + 0x98,0x04,0x0c,0xfb,0x63,0xfc,0x6b,0x97,0x2e,0x63,0x63,0x0a,0xf6,0xfa,0x8a,0xf4, + 0x5b,0x32,0x64,0xb4,0x30,0xcc,0x70,0xe3,0x83,0x8f,0xe8,0x7d,0x6a,0xb5,0xe7,0x83, + 0xcc,0xec,0xb7,0x51,0x4a,0x14,0x30,0xe8,0x7b,0x71,0x5d,0x58,0x8c,0x14,0xac,0xa7, + 0x4f,0xe6,0x78,0x92,0xc4,0xb8,0xc9,0xa9,0x3d,0x0e,0x5f,0x4b,0x50,0xf7,0x27,0x70, + 0xe2,0x35,0x27,0x03,0xd7,0xb0,0xad,0x1b,0xa5,0x72,0xc1,0x33,0xf7,0x8f,0x4f,0x6e, + 0xa6,0xb4,0x6d,0x34,0x86,0xd3,0xee,0x5a,0xd8,0x61,0x89,0x1b,0xf7,0x73,0xcf,0x1e, + 0xf4,0xdf,0xb3,0xb4,0xb7,0x98,0xea,0x3a,0x13,0xda,0xb9,0x7d,0x9d,0xb4,0x7b,0x9e, + 0xce,0x0f,0x17,0xcd,0x4d,0x16,0xaf,0x12,0x68,0x74,0xcb,0x6b,0x65,0xe0,0x15,0x67, + 0x38,0x38,0xfb,0xcd,0xdf,0xf0,0x15,0x81,0x03,0x18,0x65,0x2b,0x9c,0xe7,0x18,0xf7, + 0xcf,0x15,0xd2,0x78,0x8a,0x45,0xb6,0x6f,0x28,0x9f,0x99,0x51,0x50,0x60,0x72,0x30, + 0x3a,0x7e,0x75,0xcd,0x69,0x87,0xcf,0xbd,0x89,0x71,0x93,0x9c,0x9f,0xc3,0xb0,0xad, + 0xa7,0x1b,0xb4,0x8f,0x46,0x9d,0x5d,0x13,0x67,0xbc,0x78,0x7e,0xdd,0x23,0x82,0x20, + 0x40,0x0d,0xb4,0x64,0xf5,0x39,0x3d,0xab,0xd3,0xf4,0x98,0xa3,0x8e,0x33,0x3b,0x1c, + 0xe3,0xa6,0x7f,0xc2,0xbc,0xd3,0x42,0x90,0x36,0x14,0x7c,0x9b,0x7f,0x9d,0x7a,0xbd, + 0x95,0xba,0xbd,0xb2,0x46,0x18,0x90,0x79,0x23,0xbe,0x7d,0x2a,0x2b,0x5d,0x2b,0x1d, + 0x8e,0xbf,0x34,0x77,0x36,0xec,0xdb,0x79,0xdf,0xd7,0x9c,0xe3,0xff,0x00,0xaf,0x5a, + 0xda,0x9e,0xab,0x16,0x81,0xa3,0xcb,0xa9,0xc9,0xc9,0x00,0xac,0x48,0x7f,0x8a,0x43, + 0xc0,0x1f,0xe3,0xed,0x4d,0xb0,0xb6,0x48,0xc0,0xce,0x00,0x51,0xb8,0x93,0xd0,0x63, + 0xd6,0xbc,0x6f,0xc7,0x9e,0x25,0xfe,0xdc,0xbe,0x5b,0x6b,0x63,0xfe,0x89,0x6b,0x91, + 0x1e,0x38,0x0e,0xc7,0xef,0x3f,0xf4,0x1e,0xd5,0xf3,0xb9,0xd6,0x64,0xb0,0x94,0x1c, + 0xd7,0xc4,0xf6,0xff,0x00,0x33,0xf3,0xee,0x37,0xe2,0x3a,0x79,0x76,0x11,0xf2,0x3f, + 0x7e,0x5a,0x2f,0xeb,0xc8,0xf3,0xcb,0xfb,0x99,0x6e,0x6e,0x24,0xba,0x9c,0x97,0x79, + 0x1c,0xb3,0x1e,0xe4,0xb7,0x5a,0xca,0x0f,0xb5,0x81,0xe4,0x7f,0x3a,0xb5,0x31,0xc1, + 0x2d,0xd7,0x35,0x98,0xcf,0x93,0xc7,0xe1,0xed,0x5f,0x97,0x37,0xcf,0x77,0x27,0x7b, + 0x9f,0xcd,0x4e,0xb4,0xb9,0xb9,0xdb,0xbb,0x36,0xad,0xae,0x48,0xe8,0x78,0xad,0x88, + 0x6e,0x8b,0x0c,0x66,0xb8,0xc4,0x9b,0x1d,0x78,0xad,0x28,0x6e,0x7d,0x3f,0xc6,0xbf, + 0x34,0xe2,0xcc,0x89,0xca,0xf5,0x69,0xa3,0xf4,0x7e,0x1a,0xce,0xa3,0x65,0x4e,0x6c, + 0xec,0xa3,0xb9,0x18,0xe3,0x8a,0xb9,0x1d,0xc7,0x20,0xfe,0x7c,0xd7,0x25,0x1d,0xd1, + 0x3c,0x67,0xde,0xb4,0xe1,0x9f,0x27,0x93,0xcf,0x1d,0x6b,0xf2,0xdc,0x46,0x11,0xc5, + 0xb4,0xd1,0xfa,0x05,0x2c,0x44,0x5a,0xd1,0x9d,0x6c,0x37,0x27,0x1e,0x95,0xa1,0x1d, + 0xe1,0x1c,0x1a,0xe5,0x56,0x6c,0x00,0x73,0x9a,0x53,0x75,0x8e,0x0f,0x4a,0xf3,0x1e, + 0x1e,0xe7,0x52,0xaa,0xac,0x75,0xeb,0x76,0x5b,0xbd,0x4e,0x93,0x02,0x72,0x78,0xcd, + 0x72,0x51,0x5d,0x83,0x8c,0xfa,0xd6,0xa4,0x17,0x5c,0xf2,0x79,0x35,0x0e,0x8d,0xb4, + 0x64,0xfb,0x4e,0xe7,0x5f,0x6e,0xfc,0x67,0x3d,0x2b,0x40,0xcb,0xf2,0x70,0x7b,0x66, + 0xb9,0xdb,0x6b,0x81,0x57,0x64,0xba,0x01,0x39,0xaa,0x50,0xb2,0x08,0x4d,0xf3,0x68, + 0x66,0xdf,0xcb,0xf3,0xe2,0xaa,0xc7,0x29,0xe3,0xd3,0xbd,0x54,0xba,0x9f,0x73,0xe7, + 0x3d,0x2a,0xb7,0x9f,0xd8,0xfe,0x59,0xac,0x61,0x45,0xdf,0x43,0xbb,0x13,0x55,0x28, + 0xa4,0x8f,0xff,0xd0,0xf8,0x26,0xf6,0xef,0x27,0x62,0xd5,0xad,0x2d,0x5e,0x62,0x30, + 0x09,0x1f,0xce,0xaa,0xe9,0xfa,0x55,0xc6,0xa9,0x38,0x89,0x01,0xc1,0xee,0x2b,0xe8, + 0x8f,0x07,0x7c,0x37,0x67,0x89,0x59,0xa3,0x24,0x90,0x33,0x5f,0x99,0x63,0x33,0xbc, + 0x26,0x12,0x37,0xa9,0x23,0xdf,0xc3,0xd1,0xc4,0x57,0x69,0xc4,0xf2,0x0b,0x9d,0x22, + 0x59,0x63,0xce,0xce,0x71,0xfe,0x4d,0x61,0x45,0xa7,0xbe,0x9f,0x33,0x19,0x06,0x33, + 0xda,0xbe,0xd6,0x5f,0x86,0xd9,0x41,0x98,0xfa,0x0f,0x4a,0xf0,0xcf,0x8a,0x5e,0x1e, + 0x1a,0x04,0xc9,0x95,0xdb,0x91,0x91,0x5f,0x3b,0x97,0x71,0xbe,0x13,0x15,0x98,0x43, + 0x0b,0x4f,0x76,0x7e,0xab,0xc2,0x34,0xb1,0x34,0x71,0x34,0xf9,0xf6,0x3c,0xd6,0x36, + 0xe0,0x0a,0xdf,0xb4,0x9d,0x64,0x75,0x85,0xb8,0x20,0x75,0xf5,0xae,0x52,0x07,0x52, + 0x73,0xdc,0x73,0x5b,0x70,0x48,0x1a,0xe3,0x74,0x63,0x18,0x1f,0xd2,0xbe,0xef,0x19, + 0x3b,0x72,0x9f,0xb4,0x4a,0xb5,0xdd,0x8e,0x85,0x40,0x88,0x6e,0x53,0xc8,0xf5,0xac, + 0xc9,0xae,0xcb,0x4f,0x8c,0x9e,0xbd,0x4d,0x48,0xad,0x80,0x77,0x1f,0x4c,0xe6,0xa9, + 0xce,0x80,0xb8,0x76,0x38,0x19,0xef,0x5c,0x55,0x24,0xd2,0xd0,0xea,0xc2,0x55,0xf7, + 0xaf,0x23,0x54,0x5c,0x6f,0x65,0x2a,0x70,0xc8,0x3d,0x7a,0xd5,0xdf,0xb4,0xe2,0x16, + 0x04,0x0d,0xed,0xdf,0xd0,0x7a,0x56,0x14,0x52,0x00,0xd5,0x34,0xd7,0x27,0x6f,0x20, + 0x62,0xb0,0x75,0xec,0xdd,0xd9,0xf4,0x14,0x2a,0x5c,0xd2,0xb7,0x9d,0x72,0x50,0x30, + 0xce,0x33,0xed,0x59,0x57,0x6f,0x1b,0xb1,0xcb,0x7d,0x49,0xfe,0x55,0x0d,0xac,0x91, + 0x89,0x7e,0x6e,0xf9,0x3e,0xd5,0x8d,0x3c,0xec,0xce,0xd8,0x3d,0x09,0xae,0x5a,0xf8, + 0xcb,0x2e,0x56,0x7b,0xb8,0x6a,0x89,0xc9,0xa3,0xa8,0xb1,0xd3,0x23,0xd5,0x71,0x18, + 0x20,0x1e,0x99,0xcd,0x45,0xad,0x78,0x75,0xb4,0x46,0x59,0x13,0xe6,0x8e,0x4e,0xa7, + 0xd0,0xd6,0x7e,0x91,0xa9,0xa5,0xb4,0x9f,0x33,0x1d,0xdd,0x02,0x8a,0xed,0x35,0x4b, + 0xf1,0x79,0xa4,0x34,0x72,0x10,0xc7,0x6e,0x47,0xb6,0x28,0xb5,0x3a,0xd4,0x5d,0xb7, + 0x3d,0x05,0x34,0x8f,0x3f,0x49,0x17,0x70,0x00,0xf5,0x3e,0x94,0xfd,0x51,0xc2,0x45, + 0x1c,0x60,0xe7,0x9e,0x6a,0xa4,0x04,0x79,0x9c,0xf1,0x8a,0xad,0xa9,0xcd,0xba,0x75, + 0x8c,0x74,0x1c,0x9f,0xc3,0x9a,0xf1,0xe3,0x55,0xa4,0xce,0x1c,0x4c,0x95,0xf4,0x23, + 0xba,0x9c,0x49,0x2a,0x46,0xad,0xf7,0x47,0x7a,0x9e,0x59,0x7c,0xb8,0x00,0x3c,0x71, + 0x8a,0xcd,0x8b,0x0f,0x21,0x6f,0x53,0xfa,0x0f,0x4a,0x5b,0xe9,0x42,0xae,0xde,0x2b, + 0x48,0x54,0x72,0x77,0x64,0x5e,0xd6,0x89,0x8d,0x72,0xc4,0xb1,0x23,0x8c,0xf1,0x55, + 0x01,0xe3,0x24,0xd5,0xc2,0x37,0xa7,0x03,0x38,0xe9,0x55,0xca,0x61,0x73,0x8c,0xe6, + 0xad,0xa6,0xe5,0x73,0xa7,0x13,0x53,0x92,0x16,0x25,0x81,0xca,0x36,0x47,0x4f,0xf1, + 0xaf,0x33,0xf1,0x5d,0xe7,0xda,0x2f,0xcc,0x6a,0x72,0x23,0x18,0xfa,0x9a,0xef,0xe6, + 0x6f,0x22,0x07,0x95,0xb8,0x55,0x04,0xe6,0xbc,0x82,0xe6,0x73,0x35,0xc4,0x92,0x13, + 0x9d,0xcd,0x9c,0xd7,0xd8,0xf0,0xc6,0x1a,0xee,0x55,0x6d,0xb1,0xfc,0xcb,0xe3,0x66, + 0x7a,0xbd,0x95,0x3c,0x04,0x25,0xac,0x9d,0xdf,0xa2,0x2a,0xd3,0x4a,0x8c,0x70,0x3f, + 0x1a,0x7f,0xd7,0xf3,0xa6,0x9c,0x03,0x9a,0xfb,0x58,0x23,0xf9,0xb8,0x6e,0xd0,0x38, + 0xa6,0xe2,0x9d,0x8c,0xf0,0x0d,0x37,0xa9,0xa9,0xf5,0x01,0x62,0x8c,0xb4,0x80,0x0e, + 0x7f,0x0c,0xd7,0xa6,0xf8,0x7a,0xcf,0x25,0x78,0xeb,0x5c,0x16,0x9d,0x11,0x79,0x41, + 0xc6,0x47,0xa5,0x7b,0x0f,0x87,0xad,0x88,0x0a,0x71,0xfa,0x57,0x9b,0x98,0x55,0xe5, + 0x89,0xcb,0x59,0xd8,0xed,0x2d,0x62,0x11,0x42,0x09,0xeb,0x8a,0xc9,0xbb,0x70,0xcc, + 0x49,0xe3,0xeb,0x5a,0xf3,0x3f,0x97,0x0e,0x17,0x8a,0xe7,0x6e,0x1f,0x2d,0xd7,0x83, + 0x5f,0x1d,0x5a,0xb5,0xe4,0xce,0x06,0xf5,0x32,0xae,0x4f,0x53,0xeb,0x59,0x8e,0xa0, + 0x9e,0x6b,0x4e,0x44,0x3d,0x4f,0x5a,0xa6,0x63,0x1c,0x9f,0xf3,0xf8,0xd7,0x24,0x9b, + 0xdc,0xb8,0xbb,0x15,0x02,0x0c,0xee,0xe8,0x49,0xae,0x83,0x4f,0x4e,0x57,0x3d,0xeb, + 0x31,0x23,0xcb,0x0e,0x3a,0xf4,0xae,0x82,0xc9,0x31,0x8c,0x77,0xaf,0x33,0x16,0xd9, + 0xd5,0x4d,0xea,0x5d,0xb9,0x62,0x20,0x3f,0xe7,0xf2,0xaf,0x1b,0xf1,0x43,0x9c,0xb0, + 0xe9,0xfe,0x35,0xeb,0xba,0x8c,0x85,0x61,0x60,0x7b,0x56,0x07,0x84,0xbc,0x09,0x37, + 0x8f,0xfc,0x46,0x60,0x9d,0x8c,0x1a,0x5d,0x9f,0xef,0xf5,0x0b,0x91,0xff,0x00,0x2c, + 0xe1,0x07,0xee,0x21,0xff,0x00,0x9e,0x92,0x7d,0xd4,0xfc,0x4f,0x6e,0x7d,0x2c,0x8e, + 0x50,0xa4,0xdd,0x7a,0xae,0xd1,0x8e,0xa7,0x4d,0xd2,0x46,0xdf,0xc0,0x3f,0x85,0x96, + 0x57,0xee,0x7e,0x23,0xf8,0xc6,0x10,0xda,0x26,0x9f,0x29,0x16,0x76,0xae,0x3f,0xe3, + 0xfa,0xee,0x33,0xc6,0x41,0xeb,0x14,0x47,0x96,0xfe,0xf3,0x7c,0xbd,0x01,0xcf,0xd1, + 0xba,0xdf,0x88,0x6f,0xfc,0x43,0x75,0x25,0xd5,0xd4,0x84,0x03,0xf7,0x47,0x40,0x14, + 0x74,0x00,0x0e,0x00,0x03,0xa5,0x57,0xbd,0xbc,0x8e,0xe8,0x41,0xa6,0xe9,0xb0,0x2d, + 0x96,0x97,0x60,0x8b,0x05,0xad,0xb4,0x63,0x09,0x1c,0x48,0x30,0x14,0x0f,0xd4,0x9e, + 0xe6,0xa9,0xc8,0xaa,0xbf,0xbb,0x51,0xdf,0xbd,0x7c,0x5f,0x11,0x67,0x55,0x33,0x4c, + 0x4b,0x9b,0xd2,0x0b,0xe1,0x5f,0xaf,0xab,0x3c,0x9c,0x46,0x2d,0x49,0xd9,0x6c,0x8c, + 0x47,0x89,0x22,0x47,0xbd,0x93,0xee,0xc7,0xf7,0x47,0xab,0x1e,0x82,0xb8,0xed,0x42, + 0x5d,0xaa,0xc5,0x89,0xdd,0xb7,0x76,0x47,0xa9,0x39,0xae,0x8f,0x56,0xba,0x17,0x0e, + 0x2d,0xa0,0x19,0x86,0x2c,0xf3,0xfd,0xe6,0x3d,0x4d,0x72,0x5a,0x9c,0x85,0x5a,0x53, + 0xeb,0x81,0xf8,0x01,0x5d,0xb9,0x6d,0x35,0x0a,0x77,0x7b,0xb3,0x92,0x32,0xbc,0xae, + 0x7c,0x7f,0xad,0xdb,0xf9,0x1a,0xcd,0xf4,0x3f,0xdd,0xb9,0x9b,0xf2,0x2e,0x58,0x7f, + 0x3a,0xca,0xd8,0x07,0xd6,0xba,0xcf,0x18,0x44,0x13,0xc4,0x77,0xdd,0xb7,0x48,0x18, + 0x7e,0x28,0xb5,0xcc,0xed,0xc7,0x02,0xbf,0x6d,0xc2,0x4f,0x9a,0x85,0x39,0x77,0x48, + 0xfa,0x28,0x7c,0x28,0x84,0x29,0x07,0x38,0xaf,0xa1,0x7c,0x1b,0x73,0xe6,0xe8,0x96, + 0xa1,0x49,0xf9,0x37,0x2f,0xb7,0x0d,0x5e,0x02,0x46,0x3a,0x0e,0x6b,0xd9,0x3c,0x03, + 0x74,0x1b,0x4f,0x96,0xdf,0xbc,0x72,0x02,0x07,0xfb,0xc3,0xfc,0x45,0x6d,0xcd,0xca, + 0xee,0x7d,0x47,0x0b,0x62,0x15,0x3c,0x5f,0x2f,0x74,0xd1,0xeb,0x9a,0x65,0xeb,0x5a, + 0xdc,0x27,0x3b,0x40,0x6c,0x1c,0x7a,0x66,0xa4,0xf1,0x0e,0xab,0x2e,0xa7,0x7d,0xb5, + 0xb2,0x63,0x85,0x76,0x2e,0x4f,0x7e,0xa4,0xd6,0x28,0x9f,0x7c,0xaa,0x38,0x00,0x63, + 0x3e,0xfe,0xff,0x00,0xd2,0x92,0x17,0xf3,0x66,0x70,0xe3,0x80,0xdc,0x7a,0x8f,0x4f, + 0xc2,0xbe,0x86,0x9e,0x2e,0x5e,0xc5,0x42,0xfa,0x1f,0xac,0x65,0x69,0x4e,0xab,0x9b, + 0xe8,0x8b,0x4b,0x2a,0xbe,0xc7,0xce,0x3a,0x7e,0x02,0xba,0xed,0x31,0xc1,0x64,0x0f, + 0xcf,0x3d,0x4f,0xaf,0xa5,0x70,0xf1,0x2e,0xc9,0x9e,0x06,0xce,0x01,0xc8,0xfc,0x7d, + 0x2b,0xb4,0xd3,0x51,0x99,0x15,0x97,0xef,0x21,0xe7,0x3c,0x54,0xd0,0xab,0x67,0x64, + 0x6c,0xea,0x28,0xb7,0x16,0x75,0xb7,0x11,0x10,0xa8,0x7a,0x17,0xce,0x47,0xa5,0x68, + 0xe8,0xc3,0x13,0x15,0x27,0x3b,0xb8,0xf5,0xa6,0x60,0x4b,0x0e,0xd3,0xc3,0x11,0xc1, + 0xcd,0x4d,0xa3,0x97,0x4b,0xc1,0x8e,0x98,0xdb,0x9c,0x7f,0x2a,0xf4,0x1d,0x64,0x9e, + 0x81,0x42,0xad,0xdd,0x99,0xb9,0x70,0x0f,0xd9,0x5f,0xe5,0xc6,0x3a,0xfd,0x6b,0xcf, + 0x6e,0x42,0x2b,0x36,0xde,0x18,0x92,0x46,0x3b,0x8f,0x5f,0x6a,0xf4,0x9d,0x43,0x77, + 0xd9,0x64,0x0c,0x78,0xc1,0x1e,0xd5,0xe4,0x97,0xac,0x52,0x63,0xf3,0x75,0xec,0x2b, + 0x45,0x8a,0x8d,0x85,0x29,0x7e,0xf3,0x41,0x6e,0x1d,0x1d,0x55,0x77,0x1f,0x9b,0xd7, + 0x8f,0x7a,0xc8,0xb8,0x62,0x0f,0x5e,0x84,0xe0,0x8e,0xdf,0x85,0x58,0x9d,0xd8,0x14, + 0x39,0xeb,0x54,0x26,0x05,0x41,0x60,0x32,0x7b,0x7b,0x57,0x3c,0xeb,0x73,0x6a,0x7a, + 0x14,0x6a,0x2b,0x22,0xbb,0x6c,0x3b,0x4a,0xf0,0xc7,0x8f,0x53,0x5a,0xd6,0x78,0x85, + 0x73,0xc7,0x98,0xdd,0x3d,0x80,0xef,0xf5,0xac,0x68,0xf2,0x4e,0xd1,0xf7,0xb3,0x9a, + 0xb6,0x27,0x0a,0x73,0x81,0x9c,0xe6,0x95,0x29,0xa4,0xf9,0x99,0xd1,0x39,0xb6,0xac, + 0x74,0xd6,0xfa,0x8c,0x56,0xf3,0x8f,0x30,0x01,0xce,0x78,0xf4,0xf5,0xad,0xb4,0xd5, + 0x7e,0xd0,0xbb,0xe1,0xfb,0x83,0xa0,0x3d,0xfd,0xeb,0xcd,0x1e,0x59,0x65,0x90,0xee, + 0xe8,0x71,0xde,0xbb,0x1d,0x1e,0x22,0xea,0x0e,0x78,0xae,0xaf,0xae,0xb7,0xa2,0x39, + 0xea,0xc5,0x34,0xa4,0xcd,0x98,0x4c,0x9e,0x63,0xce,0xc3,0x27,0x69,0xe4,0xfe,0x55, + 0x73,0x45,0xd3,0x8c,0xd7,0x68,0xac,0xbf,0x79,0x87,0xe3,0xcf,0x02,0xb5,0xb4,0xeb, + 0x03,0x75,0x0b,0x49,0xb4,0xe0,0x9d,0xab,0xee,0x07,0xf8,0x9a,0xeb,0xf4,0x7d,0x27, + 0xc8,0x9c,0xc8,0xa3,0x98,0xd4,0xb7,0x3d,0x32,0x01,0xc5,0x73,0xf3,0x27,0x3b,0x9d, + 0x34,0x2b,0x28,0xc2,0xd7,0xd4,0xf1,0x6f,0x12,0x44,0xdf,0xda,0x13,0x37,0x52,0xce, + 0xd9,0xf6,0xe7,0xa5,0x47,0xa2,0x59,0xbc,0x57,0x41,0xc7,0x65,0x19,0xc7,0x4e,0xb5, + 0xaf,0xa8,0x44,0xdf,0x68,0x2f,0x37,0xcc,0xe7,0x9c,0x62,0xb4,0x34,0x78,0x9e,0x47, + 0x05,0x53,0x8c,0xe3,0xe9,0x5a,0xa8,0x5e,0x47,0xa9,0xed,0xbd,0xdb,0x5c,0xee,0x74, + 0x88,0x9c,0x32,0xbb,0xfc,0xa0,0x74,0xe7,0xf9,0x57,0xb0,0xe8,0xaf,0xe7,0x44,0xa8, + 0xb8,0x1e,0xb9,0xaf,0x2d,0xb0,0xb7,0x6c,0xaf,0x5e,0x2b,0xad,0x93,0x53,0x5d,0x26, + 0xc1,0xa4,0x1d,0x71,0x80,0x3b,0xb1,0x3d,0x05,0x65,0x8a,0x50,0x85,0x37,0x39,0xbb, + 0x25,0xd4,0xe2,0xc4,0xe6,0x70,0xc3,0xd3,0x95,0x4a,0x8e,0xc9,0x1b,0x5e,0x34,0xf1, + 0x22,0xd9,0xd9,0x0d,0x1a,0xc1,0xf1,0x24,0x83,0x12,0xb0,0xea,0x17,0xd3,0x3e,0xf5, + 0xe2,0xb3,0x3e,0xee,0x33,0xd6,0x96,0xee,0xfe,0x5b,0xc9,0xde,0xe2,0x63,0x96,0x76, + 0xc9,0xf4,0x1e,0xd5,0x41,0xa5,0xca,0xf2,0x79,0xf4,0xaf,0xc6,0xf3,0x6c,0x7b,0xc5, + 0xd7,0x75,0x3e,0xcf,0x4f,0x43,0xf9,0xcb,0x88,0xf3,0x9a,0x99,0x96,0x2e,0x75,0xdf, + 0xc3,0xb2,0x5e,0x45,0x4b,0x8c,0x11,0xd7,0xd7,0x1c,0x56,0x43,0x92,0x3d,0xb3,0x5a, + 0x33,0x3f,0xe9,0x59,0x72,0x12,0x0e,0x4d,0x79,0xf0,0x8d,0xb6,0x3e,0x75,0x81,0x63, + 0x9a,0x7a,0x4a,0xcb,0x8c,0xd5,0x53,0xc9,0xa4,0x07,0x0d,0x8a,0x27,0x42,0x35,0x13, + 0x8c,0x8d,0x28,0xd7,0x9d,0x37,0x78,0xb3,0x66,0x29,0xcd,0x6b,0xc1,0x70,0x31,0x8f, + 0x4a,0xe6,0xa3,0x62,0xab,0xcd,0x5b,0x8e,0x76,0x18,0x27,0xa7,0x5a,0xf9,0xac,0xc3, + 0x85,0x30,0xf5,0xaf,0x24,0x8f,0xa6,0xc1,0x71,0x3d,0x5a,0x76,0x52,0x3a,0xb3,0x71, + 0x85,0x04,0x1e,0x40,0xaa,0xed,0x76,0x00,0x39,0x35,0xcf,0x4b,0xa8,0x2a,0x2f,0x5a, + 0xe7,0x2f,0x35,0xe4,0x88,0xe0,0x93,0x8a,0xf8,0x5c,0x7f,0x08,0xba,0x57,0x95,0x34, + 0x7d,0x86,0x5f,0xc4,0x70,0xad,0x68,0xc8,0xf4,0x58,0xef,0x86,0xee,0xa2,0xb5,0x20, + 0xd4,0x01,0xfe,0x2e,0x2b,0xc7,0x13,0xc4,0x08,0x48,0xcb,0x7b,0xf1,0x57,0xe2,0xf1, + 0x08,0xcf,0x0d,0xda,0xbe,0x7a,0xbe,0x41,0x51,0x74,0x3d,0xd5,0x99,0x53,0xb6,0xac, + 0xf7,0x08,0x35,0x00,0x17,0xef,0x54,0x93,0xea,0xc8,0x14,0xfc,0xd5,0xe3,0x6b,0xe2, + 0x54,0x51,0xcb,0xd5,0x39,0xfc,0x56,0xa7,0x80,0xdd,0x7d,0xeb,0x9a,0x39,0x05,0x79, + 0x68,0xa2,0x52,0xcd,0x28,0xc7,0x57,0x23,0xd3,0xe5,0xd5,0x17,0x77,0xde,0xef,0x54, + 0xe5,0xd5,0xd5,0x7f,0x88,0x1c,0xd7,0x92,0x4b,0xe2,0x70,0x4f,0xde,0xac,0x5b,0x9f, + 0x13,0x31,0x24,0x64,0xfe,0x7c,0x57,0xa5,0x84,0xe1,0x6a,0xb2,0x6a,0xf1,0x38,0xf1, + 0x7c,0x45,0x49,0x2d,0x19,0xff,0xd1,0xf0,0x8f,0x87,0x5e,0x15,0x59,0x5a,0x37,0x75, + 0xea,0x47,0x38,0xaf,0xb8,0xbc,0x1d,0xe1,0x78,0x05,0xba,0x0d,0xa3,0x20,0x0e,0xd5, + 0xf3,0xdf,0x81,0x6c,0x56,0x05,0x8c,0xe3,0x18,0xc1,0xaf,0xa7,0xfc,0x3d,0xa8,0x8b, + 0x74,0x54,0x07,0x18,0xaf,0xe1,0x2e,0x26,0xcf,0xeb,0xd6,0xc4,0x4a,0x1c,0xda,0x1f, + 0xb5,0xe4,0xf9,0x74,0x21,0x42,0x2e,0xc7,0x5d,0x27,0x87,0xad,0xa3,0x8f,0xee,0x8c, + 0xd7,0xc2,0xbf,0xb5,0x36,0x9e,0x6c,0xa3,0xb7,0xb9,0x8d,0x70,0xbb,0x80,0x3f,0x9d, + 0x7e,0x81,0x45,0x70,0x27,0x8c,0x1e,0xb9,0x15,0xf3,0x07,0xed,0x23,0xe1,0x6f,0xed, + 0xaf,0x0b,0xcb,0x34,0x69,0xb9,0xa2,0xf9,0x85,0x79,0xdc,0x2b,0x8c,0xf6,0x19,0xce, + 0x1b,0x11,0x37,0xa7,0x32,0x3e,0xaf,0x01,0x25,0x4e,0xa2,0x3f,0x37,0xec,0xe7,0xdb, + 0x22,0x9c,0xf6,0xae,0x9a,0xc9,0xf7,0xba,0xbe,0x71,0xeb,0xc5,0x71,0x11,0x93,0x0c, + 0xdb,0x58,0x15,0x20,0xe0,0xfd,0x47,0x6a,0xea,0x2d,0x64,0xd8,0x54,0x11,0xd7,0xf5, + 0xaf,0xec,0x2c,0x64,0xaf,0x18,0xb3,0xeb,0x29,0xd7,0x52,0x5a,0x33,0xa8,0x27,0xe6, + 0xdd,0xd7,0x8a,0x86,0xe1,0x97,0x68,0x5e,0x33,0xef,0x50,0x09,0x89,0xc6,0xde,0x82, + 0xab,0xdd,0x48,0x55,0x77,0x1a,0xe1,0x73,0xba,0x3b,0xb0,0xb5,0xda,0x44,0x8b,0x20, + 0x80,0x33,0x8e,0xbd,0x87,0xb5,0x44,0xd7,0x1b,0xc1,0x23,0x9c,0xf3,0x50,0xf9,0x82, + 0x44,0x05,0x97,0x39,0xe9,0x50,0x04,0x6d,0xdc,0x9f,0x7a,0xf3,0xeb,0xd4,0x77,0xd0, + 0xfa,0x0c,0x1e,0x23,0xbe,0xe5,0xbb,0x5c,0xbb,0xbe,0x4f,0x45,0x3c,0x9f,0x5c,0x56, + 0x6b,0x62,0x12,0x77,0x0c,0x8c,0xff,0x00,0x3a,0xbd,0x18,0x65,0x2d,0xb7,0xbf,0x5f, + 0x7a,0xa9,0x74,0x9b,0x81,0x23,0x80,0x2b,0xcd,0x72,0xd6,0xec,0xf7,0x70,0xd8,0x8f, + 0x79,0xea,0x52,0x69,0x71,0x9d,0xbc,0x10,0x6b,0x66,0x2d,0x78,0x35,0x9b,0xdb,0x49, + 0xf7,0x80,0xc0,0xc5,0x72,0x72,0x96,0xdc,0x40,0xcd,0x41,0x01,0x0b,0x70,0x19,0xf9, + 0x1f,0xce,0x9d,0x0c,0x44,0x95,0x4b,0x27,0xb9,0xed,0x42,0xa5,0xe3,0xa9,0xd3,0x5b, + 0xc8,0x19,0xb2,0x4f,0x03,0x9f,0xc2,0xb2,0x6e,0xa5,0x57,0x99,0x88,0xee,0x71,0x57, + 0x16,0x41,0x0d,0xbb,0x31,0x1c,0xe2,0xb0,0xb7,0x16,0x6c,0xb7,0x3f,0xa7,0x5a,0xe4, + 0x52,0xd1,0x9c,0x92,0x7c,0xd3,0x34,0xe0,0xe3,0xee,0xf6,0xe9,0x59,0xf7,0x72,0x33, + 0xc9,0x8c,0xe4,0xd5,0x98,0xd8,0x84,0x2e,0x78,0x26,0xb2,0x8b,0x16,0x73,0x91,0x91, + 0x5a,0xd0,0x76,0xd4,0xe8,0xa5,0x14,0xdd,0xd9,0x69,0x30,0x30,0x73,0x52,0x00,0x1f, + 0x81,0x4c,0x81,0x57,0xbe,0x6a,0x59,0x1d,0x21,0x89,0x9c,0xf5,0x1d,0xcf,0xa5,0x7a, + 0x14,0x2f,0x29,0x69,0xd4,0xf3,0x33,0x9c,0x64,0x69,0x53,0x94,0xa4,0xf6,0x38,0xef, + 0x16,0x5f,0x79,0x36,0x82,0xd5,0x0e,0x0c,0x87,0x1f,0x85,0x79,0x96,0x49,0x38,0xad, + 0xbd,0x76,0xf8,0xdf,0x5e,0xbb,0xe7,0xe4,0x4e,0x16,0xb0,0xab,0xf5,0x2c,0xaf,0x08, + 0xa8,0x61,0xe3,0x1e,0xa7,0xf0,0xc7,0x19,0xe7,0x6f,0x34,0xcd,0x6a,0xd7,0xbf,0xba, + 0xb4,0x5e,0x88,0x0f,0x3d,0xe9,0xad,0xd2,0x9d,0x48,0xc7,0x1c,0xd7,0xa3,0xf3,0x3e, + 0x52,0xe3,0x4f,0x3c,0xf6,0xa4,0x23,0x03,0x9e,0xf4,0xb8,0x3c,0x66,0x95,0x46,0x5f, + 0x03,0xa6,0x45,0x26,0x26,0xce,0x83,0x46,0x80,0xb3,0xa9,0xaf,0x6a,0xd1,0x61,0xd9, + 0x12,0xe7,0x80,0x31,0x5e,0x65,0xa0,0xdb,0x6e,0x2b,0x8a,0xf6,0x0d,0x3e,0x22,0x91, + 0x0f,0x6e,0x95,0xf2,0xf9,0xce,0x23,0x5b,0x1c,0x18,0x8a,0x9b,0xa2,0x3b,0xc7,0x24, + 0xed,0x15,0x89,0x28,0xcf,0x23,0xbd,0x6e,0x5d,0x26,0x4e,0x7d,0x7a,0x7f,0x8d,0x64, + 0xba,0x10,0xf8,0xf4,0xaf,0x95,0x77,0x5a,0xa3,0x86,0x33,0xd4,0xa2,0xcb,0xeb,0x50, + 0x32,0x62,0xaf,0x84,0x39,0xc5,0x47,0x22,0x05,0x19,0xa4,0xe7,0xa1,0x69,0xbb,0x94, + 0xa3,0x40,0x4e,0x7f,0x4e,0xb5,0xbd,0x6a,0x81,0x71,0xdb,0xfa,0x56,0x4c,0x63,0x2c, + 0x31,0xd3,0xdb,0xd6,0xb7,0xac,0xe2,0x79,0x30,0xa8,0x09,0x66,0x20,0x00,0x07,0x24, + 0x9f,0x4a,0xf3,0xb1,0x73,0xbb,0xb2,0x3b,0xa9,0xf4,0x64,0x90,0xe8,0xf7,0xbe,0x20, + 0xd4,0x60,0xd1,0xb4,0xe5,0xdf,0x35,0xcb,0x84,0x5c,0xf0,0xa3,0xfb,0xcc,0xc7,0xb2, + 0xa8,0xe4,0x9f,0x4a,0xf6,0x88,0x2d,0x74,0xdd,0x0b,0x4f,0x8f,0xc2,0x9a,0x0e,0x1a, + 0xda,0x03,0xbe,0xea,0xe7,0x18,0x6b,0xab,0x8e,0x8f,0x23,0x7b,0x0e,0x88,0x3b,0x2d, + 0x49,0x6d,0xa5,0xc5,0xe0,0xcd,0x2f,0xfb,0x3d,0x36,0x9d,0x73,0x50,0x40,0x6f,0x24, + 0x1c,0xfd,0x92,0x06,0xe5,0x6d,0xd4,0xf6,0x76,0xe0,0xc8,0x7e,0x8b,0x54,0x80,0x4b, + 0x78,0xf1,0x9c,0xf3,0xf3,0x13,0xd7,0xe9,0x5e,0x4e,0x3f,0x14,0xdd,0x3f,0xab,0xc5, + 0xe9,0xd7,0xcd,0xf6,0x39,0x31,0x98,0x9b,0xbe,0x48,0xed,0xd4,0xb0,0x5e,0x38,0x14, + 0x91,0x91,0x80,0x7f,0x4a,0xe7,0x67,0xbd,0x79,0x98,0xc5,0x19,0xeb,0xc1,0x3d,0xf9, + 0x3f,0xd6,0x96,0xfa,0xe5,0xdf,0x28,0xbd,0xfa,0xd5,0x32,0xc2,0xde,0x22,0x0f,0xde, + 0xc7,0x5e,0xf9,0x3f,0xe1,0xd2,0xbc,0xbc,0x35,0x15,0x29,0x73,0x34,0x79,0xbc,0xda, + 0xe8,0x54,0xb8,0x20,0x48,0x71,0xf2,0xa8,0x21,0x41,0xec,0x7d,0x6b,0x95,0xd4,0x26, + 0x2e,0x64,0x3d,0xcb,0x1a,0xdd,0x92,0x41,0x21,0x0d,0xdb,0x9a,0xe7,0xae,0xce,0xf4, + 0x38,0xc7,0xde,0x38,0xaf,0x7e,0x93,0xb2,0x56,0x47,0x45,0x28,0x6b,0x76,0x7c,0xef, + 0xe3,0x88,0xb6,0xeb,0xac,0xe4,0x71,0x24,0x48,0xdf,0xcc,0x7f,0x4a,0xe3,0x82,0xf2, + 0x48,0xed,0xda,0xbd,0x1f,0xc7,0xf0,0xe3,0x50,0xb7,0x9b,0x1c,0xb4,0x45,0x4f,0xfc, + 0x05,0xbf,0xfa,0xf5,0xe7,0xec,0x09,0x38,0xe9,0x5f,0xae,0x64,0xf5,0x39,0xf0,0x54, + 0x9d,0xba,0x1f,0x41,0x4d,0xfb,0xa8,0x83,0x67,0xe1,0x5d,0xa7,0x83,0x6e,0xcd,0xae, + 0xa3,0xe5,0x1e,0x16,0x55,0xda,0x7e,0xbd,0x45,0x72,0x5b,0x46,0x79,0xfa,0xfa,0x55, + 0x9b,0x59,0x1e,0xde,0x78,0xe4,0x5e,0x36,0x9c,0x8f,0xa8,0xaf,0x42,0x51,0xba,0xb1, + 0xd7,0x84,0xae,0xe8,0xd6,0x8d,0x55,0xd1,0x9e,0xfc,0xb2,0x08,0x6e,0x53,0x77,0x21, + 0xc6,0x70,0x3d,0xab,0xaa,0xb6,0xb3,0x73,0x20,0x90,0xa9,0x1b,0xc6,0xe1,0xf4,0x35, + 0xc3,0xdb,0xce,0xb7,0xb6,0x70,0x5c,0xa6,0x4e,0x00,0xe9,0xdb,0xeb,0x5f,0x45,0x69, + 0x3a,0x22,0x6a,0x7e,0x19,0xb2,0xd4,0x2d,0xc6,0x64,0x8d,0x31,0xc7,0x7c,0x70,0x45, + 0x74,0x61,0x2b,0x7d,0x96,0x7e,0xb9,0x96,0x66,0x30,0x84,0xd3,0x93,0xd2,0x47,0x97, + 0xea,0x76,0x66,0x16,0x8e,0xe8,0x0c,0x06,0xf9,0x18,0xff,0x00,0x2a,0xdd,0xd2,0x48, + 0x1b,0x4e,0x77,0x0e,0xe3,0x1d,0xc5,0x74,0xd7,0xba,0x1b,0xdd,0x58,0x4b,0x01,0x00, + 0xb1,0x04,0xaf,0x1f,0xc4,0xbc,0x8a,0xe1,0xf4,0x89,0xda,0x19,0x04,0x32,0x8d,0xa4, + 0x12,0xac,0x0f,0x62,0x2b,0x77,0x3e,0x5a,0x96,0x67,0x7e,0x3a,0xa2,0x8c,0xf9,0x97, + 0x53,0xd5,0x2c,0x7c,0x89,0xd1,0x71,0x9c,0x81,0xc7,0xb1,0xf7,0xfc,0x2b,0x5f,0x4d, + 0x87,0xca,0xbb,0x51,0xd7,0x07,0xaf,0xa5,0x73,0xfa,0x7c,0x90,0xc6,0x41,0x88,0xf0, + 0x71,0x8f,0xaf,0x7a,0xea,0x22,0xb8,0x8e,0x09,0x04,0xcd,0xce,0xee,0x72,0x31,0xc5, + 0x6b,0x3a,0xb7,0x47,0x9f,0x1c,0x53,0x84,0xcd,0x9d,0x42,0x0d,0xeb,0x28,0x51,0xd5, + 0x77,0x01,0x5e,0x4b,0x79,0x6c,0x0c,0x85,0x98,0x73,0x93,0xda,0xbd,0x62,0x2b,0xd4, + 0x91,0xf9,0x23,0xe6,0x5c,0x1e,0xe0,0x57,0x9d,0x6b,0x3b,0x6d,0xae,0x5b,0xfb,0xa4, + 0xe4,0x8a,0xe1,0x96,0x29,0xc5,0xd8,0xb5,0x8c,0x94,0xa6,0xd2,0x39,0x7b,0x8b,0x2f, + 0xdd,0x2b,0xe0,0x93,0x9e,0xb5,0x9e,0xf6,0xe5,0x72,0xfd,0xc0,0xc6,0x3b,0x66,0xb7, + 0xbc,0xd0,0x55,0xd4,0x1c,0x81,0xc0,0xc5,0x42,0x61,0x2c,0xbb,0xb1,0xcf,0x5c,0x7b, + 0xd6,0xd4,0x71,0x2d,0x9e,0x86,0x17,0x12,0xd3,0xd5,0xe8,0x73,0x9f,0x66,0x2a,0xcc, + 0xed,0xcf,0x3c,0x01,0x4a,0x6d,0xf7,0x10,0x71,0x8c,0x7e,0xb5,0xd1,0x3d,0x93,0xb3, + 0x01,0xb0,0xf4,0x19,0x23,0xd6,0x91,0xac,0x19,0x9d,0x40,0x5c,0xe3,0x8a,0xee,0x8d, + 0x4d,0x35,0x3d,0x05,0x8a,0xec,0x73,0xe2,0x00,0xef,0x90,0xbe,0x9f,0xa5,0x7a,0x1e, + 0x99,0x66,0xc6,0x08,0xd1,0x38,0xdd,0x8e,0x9f,0xa5,0x50,0x87,0x4e,0x24,0x00,0x07, + 0x3f,0xce,0xbd,0xa3,0xc0,0xde,0x19,0x97,0x54,0xbe,0xb7,0xb7,0x54,0xcf,0x20,0xb7, + 0xb2,0x8e,0x4d,0x35,0x55,0x45,0x6a,0x2a,0xb8,0xa8,0xc6,0x0e,0x4c,0xe8,0x74,0xaf, + 0x0d,0x1b,0x6d,0x36,0x0f,0x97,0x0d,0xb7,0x24,0x63,0x92,0xcd,0xcf,0xe9,0x5b,0xb6, + 0x3a,0x54,0x36,0xf2,0x32,0xb7,0x24,0x82,0x5f,0x1f,0xc2,0x31,0x5e,0x9b,0xfd,0x8c, + 0xd6,0xaa,0x40,0x18,0x93,0x18,0x03,0x8f,0x94,0x7a,0xd5,0x28,0xb4,0xeb,0x74,0x0c, + 0x99,0x05,0xc9,0xe4,0x9e,0x99,0xac,0xb0,0xf5,0xdc,0xe7,0x65,0xd4,0xf2,0x23,0x99, + 0x37,0x7d,0x4f,0x93,0x2f,0x34,0xe5,0x7b,0xb6,0x65,0x50,0x40,0x3c,0xe7,0xf4,0xad, + 0x7d,0x2f,0x4c,0xf3,0x0f,0xca,0xbb,0x00,0xea,0x45,0x7a,0xa6,0xb3,0xe0,0xeb,0x7b, + 0x5b,0xe6,0x70,0xdb,0xd6,0x62,0x5c,0x11,0xd0,0x7a,0x81,0xf4,0x3d,0xe9,0xf1,0x69, + 0xb6,0xda,0x6d,0xb1,0xbc,0xbc,0x65,0x8a,0x25,0x19,0x00,0xf1,0x9c,0x77,0x26,0xbd, + 0xd5,0x51,0x46,0x2d,0xcb,0x43,0xd7,0x79,0xb4,0x15,0x3e,0x66,0xf4,0x39,0x91,0x6d, + 0x1e,0x9f,0x6e,0x67,0xb8,0x6d,0xa8,0xbd,0xcf,0x7f,0x4a,0xe0,0x75,0x7d,0x4e,0x5b, + 0xc9,0x0c,0x8d,0xc2,0x2f,0x08,0x99,0xe8,0x3f,0xc6,0xb4,0x75,0xcd,0x69,0xf5,0x4b, + 0x92,0x63,0xc8,0x81,0x3e,0xe2,0xf4,0xfc,0x4f,0xf4,0xf4,0xae,0x3e,0xea,0x5c,0x57, + 0xe6,0x1c,0x49,0xc4,0x2f,0x19,0x2f,0xab,0xd0,0x7f,0xbb,0x5f,0x8f,0xfc,0x03,0xf2, + 0x5e,0x28,0xe2,0x59,0x63,0x65,0xec,0x29,0x3f,0xdd,0xaf,0xc5,0xff,0x00,0x91,0x1b, + 0x4f,0x92,0x5b,0x38,0xfc,0x2a,0x1f,0x37,0x9e,0x0e,0x2a,0x93,0x4a,0x39,0x03,0xa5, + 0x31,0x4f,0x6a,0xf9,0x47,0x13,0xe2,0x65,0x2e,0xe5,0xc9,0x1b,0x23,0x1e,0xd5,0x4d, + 0xcf,0xad,0x21,0x93,0xae,0x3b,0x54,0x4e,0xe0,0xe3,0xeb,0x5b,0x41,0x3b,0x12,0xd8, + 0xc7,0xeb,0x83,0xc7,0x1d,0x69,0xa1,0xb8,0x00,0x1f,0x61,0x48,0xe7,0x19,0x6e,0x95, + 0x5c,0xb7,0xb5,0x52,0x4a,0xe4,0xb6,0x5d,0xde,0x07,0x3d,0x71,0xda,0x9a,0xd7,0x03, + 0x93,0xde,0xa8,0xb4,0x84,0x12,0x31,0x83,0x54,0x66,0x9c,0xaa,0x9a,0xa7,0x1d,0x00, + 0x35,0x0b,0xd5,0x54,0x3c,0xfd,0x2b,0xcc,0x35,0x7d,0x4d,0xf7,0x9d,0xac,0x4f,0x3c, + 0xfa,0x57,0x4b,0xaa,0x5d,0x91,0x19,0x01,0xab,0xcc,0x75,0x09,0xcb,0xcb,0xc9,0xf7, + 0xae,0x1a,0xf4,0x14,0x92,0xe6,0x3d,0x9c,0xb9,0x3d,0xcd,0x68,0xf5,0x49,0x40,0x00, + 0x9e,0xbd,0xea,0xc2,0x6a,0xf2,0xae,0x08,0x63,0x5c,0xba,0x12,0x71,0x8e,0x9f,0x4a, + 0xb4,0xb9,0xff,0x00,0x3f,0x5a,0xe3,0x9e,0x06,0x95,0xbe,0x13,0xb3,0x13,0x8b,0xab, + 0x1d,0xa4,0x74,0x87,0x57,0x98,0xe3,0x06,0xa1,0x3a,0x84,0xc7,0x9c,0xf5,0xac,0x85, + 0x3c,0xe4,0xd5,0x80,0x70,0x3d,0x73,0x53,0x1c,0x35,0x28,0xed,0x13,0x82,0x58,0x9a, + 0xb2,0xde,0x45,0xc3,0x73,0x29,0x19,0x27,0x14,0xd4,0x66,0x27,0xe6,0xcf,0x06,0xab, + 0xa9,0xdd,0x9c,0x0e,0xf5,0x6e,0x21,0x8a,0xbe,0x48,0xc7,0x64,0x67,0xce,0xde,0xec, + 0xff,0xd2,0x6f,0x86,0x57,0xc9,0x44,0xc7,0x1c,0x57,0xab,0x69,0xb7,0x24,0x60,0x83, + 0x8a,0xf2,0xad,0x27,0xf7,0x71,0xe7,0x35,0xdb,0xd8,0xdc,0x15,0xc5,0x7f,0x9e,0x58, + 0xf8,0xb9,0x55,0x93,0x67,0xf4,0x2e,0x16,0x2a,0x34,0xa2,0x91,0xed,0x7a,0x3d,0xfe, + 0xe0,0x14,0xd3,0x7c,0x5d,0xa5,0xc7,0xab,0xe8,0x57,0x56,0xce,0x37,0x6e,0x8d,0xb1, + 0x9f,0xa5,0x72,0x1a,0x5d,0xd8,0x52,0x08,0x35,0xe8,0xd6,0x72,0x2d,0xd4,0x26,0x36, + 0xee,0x31,0x5c,0x94,0x5b,0x84,0xd4,0x96,0xe8,0xe9,0x8c,0xb9,0x5d,0xcf,0xc6,0x2f, + 0x19,0xe9,0xad,0xa3,0x78,0x96,0xee,0xd1,0x97,0x6e,0xc9,0x49,0x03,0xa7,0x53,0x4b, + 0x6b,0x32,0xb4,0x4a,0xc3,0x8e,0x2b,0xd7,0xff,0x00,0x69,0x0f,0x0d,0x36,0x8d,0xe3, + 0x49,0x66,0x54,0xc4,0x73,0x1d,0xc0,0xfd,0x6b,0xc4,0x34,0xe9,0x03,0x21,0x0d,0xda, + 0xbf,0xb0,0xf2,0x5c,0x72,0xc7,0xe5,0x14,0x6b,0xc5,0xdd,0xb4,0xbe,0xf5,0xb9,0xec, + 0xd3,0xad,0xcb,0x28,0xbe,0x87,0x51,0x13,0xe5,0x49,0x0d,0x44,0x98,0x91,0x48,0x27, + 0x91,0x51,0xdb,0xa6,0x52,0xa3,0x91,0x98,0x12,0xb8,0x3e,0x94,0xdb,0x7d,0x4f,0x63, + 0x0f,0x57,0x57,0xa8,0x8a,0xed,0x8d,0xb8,0xc6,0xdf,0xd6,0xa5,0x59,0x97,0xf8,0xaa, + 0x04,0x04,0x03,0x9e,0x73,0xe9,0x51,0x1f,0xf5,0x9f,0xa5,0x70,0xd6,0x96,0xe7,0xb7, + 0x86,0xa8,0x9a,0xd1,0x97,0xed,0xe5,0x22,0x42,0x5b,0x90,0x7a,0x52,0x38,0x3b,0x09, + 0x6f,0xc2,0xa2,0x45,0x1b,0x47,0xf2,0xa7,0x34,0xcc,0x46,0xc6,0x03,0x8e,0x95,0xe6, + 0x4a,0x57,0x77,0x3e,0x82,0x84,0xec,0xd3,0x30,0xee,0x82,0xa1,0x66,0x0b,0x8e,0x3e, + 0xb5,0x8c,0xa7,0xcc,0xb8,0x03,0x18,0x15,0xb3,0x72,0xe0,0xe5,0x00,0xac,0x88,0x76, + 0x89,0xc9,0x1d,0xa8,0x8d,0xb5,0x95,0xf5,0x3d,0xc8,0xcd,0xd8,0xbd,0x77,0x28,0x58, + 0xd6,0x21,0x9f,0xaf,0xb5,0x54,0x8c,0x67,0x1d,0x70,0x69,0xd2,0x45,0x24,0xb9,0x98, + 0xaf,0xcb,0x9a,0x72,0xe1,0x17,0x71,0xe0,0x56,0x5e,0x42,0xa1,0x51,0x4a,0xed,0x0e, + 0xbd,0x93,0xcb,0x88,0x20,0xeb,0x59,0x91,0xb0,0x0a,0x33,0x4d,0x96,0x46,0xb9,0x9f, + 0x83,0xf2,0xad,0x3e,0x25,0x0c,0xfd,0x80,0x1f,0xe7,0xad,0x6d,0x4e,0xeb,0x4b,0x1d, + 0x92,0xa8,0xa3,0x1b,0x96,0xad,0xd8,0x96,0xc9,0xe0,0x57,0x3f,0xe2,0x7d,0x48,0xdb, + 0x40,0x62,0x46,0xe5,0xff,0x00,0xad,0x6d,0xcf,0x34,0x70,0x23,0x31,0xe3,0x02,0xbc, + 0xa3,0x59,0xbe,0x37,0xb7,0x4c,0x73,0xf2,0xaf,0x03,0xbd,0x7d,0x7f,0x0e,0x60,0x1d, + 0x6a,0xaa,0xa3,0x5a,0x23,0xf0,0x5f,0x15,0xb8,0xb5,0x61,0x70,0xb2,0xc2,0xd1,0x7e, + 0xfc,0xb4,0x31,0xd9,0xb9,0xce,0x7b,0xf2,0x69,0xb9,0x3d,0x7d,0x68,0xe4,0xf3,0x47, + 0xf3,0xaf,0xd1,0xd4,0xac,0x7f,0x2b,0xbd,0x43,0x24,0xf5,0xa4,0xe4,0xf4,0xe2,0x8f, + 0xa0,0xa3,0x1c,0xd2,0xd0,0x62,0x60,0xfa,0xfe,0x95,0x35,0xb2,0x96,0x99,0x7d,0x49, + 0xe9,0x50,0x1d,0xd9,0xe2,0xb4,0xb4,0xb8,0xf7,0xca,0xa7,0xaf,0x22,0xa2,0x6e,0xc9, + 0xb3,0x39,0xbd,0x19,0xe9,0x5e,0x1d,0xb7,0xce,0xdc,0x8e,0x7a,0x57,0xaa,0x41,0x16, + 0xc8,0x07,0x1c,0xe3,0xda,0xb8,0xcf,0x0d,0xda,0x10,0xa0,0x81,0x9a,0xef,0x99,0x42, + 0x20,0xcf,0x6a,0xf8,0x5c,0xce,0xad,0xea,0x1e,0x36,0x26,0x7a,0xd8,0xc8,0x9a,0x30, + 0x3d,0xff,0x00,0xa5,0x65,0x4b,0x1e,0x39,0x3c,0xd6,0xdc,0xe3,0x3d,0x6b,0x39,0xd7, + 0x3c,0xd7,0x95,0x39,0xab,0x68,0x73,0xa6,0x67,0x08,0xf9,0xf7,0xa8,0x66,0x04,0x1c, + 0x75,0x15,0xa4,0x50,0x73,0x8e,0xbd,0x6a,0xa4,0x83,0x3c,0x01,0xc9,0xac,0x79,0xae, + 0x6d,0x4d,0xb6,0xec,0x54,0x86,0x3c,0xbe,0x2b,0xda,0x7c,0x25,0xa7,0x43,0xe1,0xbb, + 0x08,0xfc,0x51,0xa8,0x46,0x1a,0xea,0x6c,0x8d,0x32,0x06,0xc7,0xde,0x1c,0x1b,0x96, + 0x1f,0xdd,0x5f,0xe0,0xcf,0x56,0xe7,0xb5,0x72,0xfe,0x0b,0xf0,0xd5,0xb6,0xa0,0xd3, + 0x6b,0x3a,0xce,0x63,0xd2,0xac,0x30,0xd3,0x9c,0xe1,0xa6,0x73,0xf7,0x20,0x43,0xfd, + 0xe7,0xef,0xfd,0xd5,0xc9,0xf4,0xae,0x9b,0x53,0xd4,0xa5,0xd6,0x2f,0x0d,0xf5,0xd0, + 0x11,0x8c,0x6c,0x8e,0x25,0x18,0x58,0xe3,0x51,0x85,0x55,0x1d,0x80,0x1d,0x2b,0xc6, + 0xc7,0x56,0xb3,0xb2,0x7a,0x9d,0x35,0xab,0x72,0x45,0x25,0xb8,0xe1,0x3c,0xc6,0x49, + 0x2e,0xee,0x1f,0x7c,0xb2,0x92,0xce,0xcc,0x72,0x49,0x27,0x39,0xe6,0xa9,0x4b,0x76, + 0x25,0x6c,0x83,0xf2,0x28,0xfd,0x7d,0xab,0x36,0x7b,0xb7,0x90,0x84,0x42,0x08,0x38, + 0xcf,0xd2,0xa0,0x95,0xc2,0xe1,0x00,0xe9,0x5e,0x4c,0xa0,0xdd,0x91,0xe6,0x34,0xd9, + 0x69,0x64,0xf3,0x18,0xca,0x79,0xdb,0xd3,0x3e,0xb5,0x4a,0xea,0x52,0xec,0x13,0x3c, + 0x01,0xfe,0x4d,0x48,0xaf,0xb1,0x46,0xec,0x74,0xe7,0xf9,0xd5,0x07,0xf9,0xbe,0x6c, + 0xf5,0x20,0xd7,0x64,0x62,0xa2,0xb9,0x52,0x35,0xa7,0x4c,0x64,0xb8,0x48,0xf6,0x8e, + 0xc3,0x1d,0x7b,0xd6,0x34,0xa3,0x6d,0xb8,0x66,0xea,0x7b,0x55,0xb9,0x64,0x0d,0xbc, + 0xe7,0xae,0x6b,0xd1,0x7e,0x16,0x78,0x2e,0xdb,0xc6,0x9e,0x24,0x86,0xc6,0xf9,0x59, + 0xac,0xad,0xd1,0xae,0x27,0x0a,0x70,0x59,0x17,0x00,0x28,0x3d,0xb7,0x31,0x02,0xbb, + 0xa8,0xc1,0xcd,0xa8,0xa4,0x75,0x41,0x25,0xa9,0xf3,0x8f,0x8a,0x7c,0x25,0xaf,0x6b, + 0xe2,0xd5,0xb4,0x7b,0x0b,0x9b,0xc7,0x52,0xc1,0x96,0x08,0x9e,0x52,0x01,0xc6,0x32, + 0x11,0x49,0xe4,0xf4,0xad,0x0f,0x0f,0xfe,0xcc,0xbf,0x1a,0x7c,0x48,0xcb,0xfd,0x9f, + 0xe1,0x6d,0x43,0x6b,0x1e,0x1e,0x58,0xbc,0x85,0xfc,0xe5,0x29,0x5f,0xb8,0xbf,0x0f, + 0x3c,0x2f,0xe1,0xdf,0x0d,0xe9,0xd0,0xda,0xe9,0x16,0x50,0x5a,0x83,0xd4,0xaa,0x65, + 0xce,0x3d,0x58,0xf2,0x7e,0xa6,0xbd,0xb2,0xc9,0x61,0x8a,0x01,0x21,0x1b,0x98,0xf3, + 0x8c,0x63,0x8e,0xd5,0xf7,0xd9,0x7e,0x32,0xad,0x1c,0x3c,0x28,0xab,0x04,0xb3,0x07, + 0x15,0x68,0x9f,0x85,0xfa,0x5f,0xec,0x13,0xf1,0xbf,0x51,0x0d,0xe7,0xc1,0xa7,0xd9, + 0x30,0xc7,0xcb,0x3d,0xda,0x83,0xcf,0x5c,0xec,0x57,0xc7,0xd3,0xbd,0x7a,0x16,0x8f, + 0xff,0x00,0x04,0xe6,0xf8,0x8f,0x3c,0xeb,0xfd,0xab,0xad,0x69,0x96,0x9d,0x0b,0x79, + 0x7e,0x75,0xc1,0x03,0xf0,0x58,0xff,0x00,0x9d,0x7e,0xce,0xc7,0x14,0x5c,0x0d,0x80, + 0x1c,0xee,0x6e,0x3a,0x93,0x5a,0x10,0xdb,0xae,0x4b,0x91,0xd0,0x77,0xcf,0xf9,0xe9, + 0x5d,0x9f,0xda,0x15,0x5a,0xdc,0xe3,0x9e,0x67,0x5b,0xa3,0x3f,0x32,0x7c,0x3d,0xfb, + 0x01,0xda,0x69,0x36,0x66,0xdf,0x55,0xf1,0x34,0xb2,0xb6,0x78,0xf2,0x2d,0x80,0x03, + 0x3d,0xbe,0x77,0x6c,0xd7,0xb1,0xe8,0x1f,0xb3,0x26,0x8b,0xe1,0x6d,0x31,0x74,0xf5, + 0xd5,0x6e,0x6e,0x13,0x71,0x61,0xbe,0x34,0x07,0x2c,0x3a,0x00,0x2b,0xed,0x42,0x11, + 0x59,0x99,0x97,0x07,0x1f,0x2f,0xa0,0xf5,0xaa,0x52,0xd9,0xf9,0xf8,0x04,0x7d,0xee, + 0x4b,0x7a,0x0a,0x29,0x62,0xaa,0x36,0xe4,0xd9,0x6b,0x88,0x31,0xea,0x3c,0x91,0xaa, + 0xd2,0x3e,0x40,0x1f,0xb3,0xa7,0x86,0xe5,0xb9,0xc2,0x4d,0x74,0x37,0x75,0x38,0x5d, + 0xa0,0xfe,0x02,0xb9,0xdb,0xef,0xd8,0xe7,0xc1,0xd7,0xb7,0x92,0x5e,0xc7,0x7d,0x7d, + 0x0b,0x39,0xcb,0x2a,0x6c,0xc6,0xef,0x50,0x0a,0xf7,0xaf,0xba,0xa0,0xb2,0x58,0x10, + 0x95,0x25,0x8e,0x46,0x40,0xfd,0x33,0x4a,0xf6,0xcc,0x58,0x6e,0x50,0x7d,0x4e,0x71, + 0xf9,0x8e,0xf5,0xb2,0xc4,0xd5,0x9b,0xbb,0x91,0x4f,0x8a,0x33,0x4e,0xb8,0x89,0x1f, + 0x06,0x5b,0xfe,0xc8,0xda,0x64,0x64,0x24,0x5a,0xad,0xe1,0x50,0x0f,0x2e,0xb1,0x8c, + 0x63,0xd8,0x0e,0x6a,0x96,0xa3,0xfb,0x29,0xdd,0x00,0x3f,0xb3,0xb5,0xed,0xaa,0x0f, + 0x1e,0x7c,0x24,0x90,0x3d,0x3e,0x42,0x33,0xf9,0x57,0xdf,0x82,0xd8,0x83,0x95,0x19, + 0x35,0x38,0xb6,0x44,0x1b,0xb0,0x1b,0xb7,0x23,0x35,0xbf,0xd6,0x2a,0x47,0x55,0x22, + 0xa9,0xf1,0x56,0x64,0x9f,0x37,0xb6,0x6f,0xee,0x3f,0x38,0xff,0x00,0xe1,0x97,0xbc, + 0x5f,0x02,0x9b,0x8b,0x5d,0x52,0xd2,0x70,0x3f,0xbc,0xb2,0x45,0x9f,0xcf,0x38,0xaf, + 0x3d,0xf1,0x77,0xec,0xfb,0xf1,0x0c,0x46,0xef,0x6b,0x6d,0x15,0xcb,0x8e,0xbe,0x5c, + 0xaa,0x79,0xed,0x8d,0xc0,0x75,0xaf,0xd5,0xc5,0xb3,0x0e,0x5b,0x77,0xcd,0xed,0xcf, + 0x1e,0xb5,0x87,0xad,0xdb,0x69,0x1a,0x16,0x97,0x79,0xe2,0x0d,0x6a,0xe1,0x2c,0xf4, + 0xeb,0x08,0x24,0xb9,0xb9,0x9e,0x53,0x85,0x8a,0x18,0xc6,0xe7,0x72,0x7d,0x00,0xae, + 0x2a,0x98,0xba,0xae,0x49,0x27,0x76,0xcf,0x46,0x87,0x1a,0x66,0x51,0x95,0xdc,0x93, + 0xf9,0x1f,0x88,0xda,0xe7,0x82,0xbc,0x6b,0xe1,0x54,0xff,0x00,0x8a,0x83,0x49,0xba, + 0xb1,0x42,0x70,0x24,0x74,0xfd,0xd9,0xc7,0xfb,0x6b,0x95,0xfd,0x6b,0x12,0xd2,0xe1, + 0x83,0x79,0x72,0x2e,0x42,0xfa,0x9e,0xbf,0x5a,0xf6,0x0f,0x1a,0xfe,0xd7,0x3a,0xc7, + 0x89,0x7c,0x4b,0x73,0x6b,0xe1,0xbb,0x78,0x34,0xef,0x0e,0x09,0x0a,0x5b,0x43,0x35, + 0xba,0xc9,0x35,0xc4,0x40,0xe0,0x3d,0xc9,0x94,0x1e,0x5c,0x72,0x53,0x68,0xdb,0xd0, + 0xf3,0x9c,0x65,0xae,0x93,0xa1,0xf8,0xba,0x19,0x35,0xcf,0x0f,0x2c,0x56,0xb7,0x04, + 0x6e,0xbb,0xb2,0x41,0x84,0x5c,0xff,0x00,0xcb,0x48,0x07,0x64,0xf5,0x4f,0xe1,0xed, + 0xc5,0x61,0x47,0x3e,0xa2,0xab,0x3a,0x12,0x76,0x7d,0xfa,0x3f,0x43,0xed,0xf2,0x6e, + 0x31,0xf6,0xd3,0x54,0x71,0x50,0xe5,0x6f,0x66,0xb6,0x67,0x3b,0x6a,0x21,0x90,0xed, + 0xdb,0xdb,0xb0,0xad,0xe8,0x74,0x90,0xf8,0xc2,0xf2,0x70,0x0d,0x36,0xd7,0x47,0x9e, + 0xd6,0x74,0x46,0x53,0x81,0xd7,0x8e,0xb8,0xaf,0x45,0xd2,0xb4,0xd6,0x91,0x86,0xc5, + 0xce,0x0f,0x7e,0x95,0xee,0x53,0xce,0x29,0xb5,0xf1,0x1f,0x5c,0xf3,0x14,0xb5,0x8b, + 0x39,0x9b,0x0d,0x10,0xbc,0xc1,0x0a,0xfb,0x03,0x8a,0xfa,0xeb,0xe1,0x4f,0x83,0x4d, + 0x9d,0xa3,0xea,0x73,0x2e,0x19,0xc6,0xc4,0xc8,0xe8,0xa3,0xef,0x1f,0xe9,0x5c,0x3f, + 0x83,0xbc,0x19,0x3e,0xa9,0xa8,0x47,0xfb,0xbc,0x46,0x0e,0x58,0xe3,0xa0,0xaf,0xb0, + 0xb4,0x8d,0x11,0x60,0xb4,0x8e,0xd6,0x08,0xf6,0xc7,0x1a,0x80,0x06,0x3b,0x57,0x97, + 0x8e,0xcf,0x62,0xea,0xc6,0x84,0x1d,0xcf,0x3f,0x31,0xcd,0x25,0x2a,0x5c,0x89,0x9e, + 0x7d,0x7d,0xa0,0xf9,0xc8,0xe2,0x35,0xdb,0xbb,0xab,0x0e,0xa6,0xb8,0xeb,0xcf,0x03, + 0xdd,0xba,0x95,0xb7,0x73,0x1a,0x93,0x96,0x27,0xab,0x7e,0x1f,0xfe,0xaa,0xf6,0xff, + 0x00,0x10,0x6b,0x9e,0x18,0xf0,0x85,0x93,0x6a,0x1e,0x22,0xbf,0xb6,0xb0,0xb7,0x4f, + 0xbd,0x24,0xf2,0x2c,0x6a,0x09,0xf5,0x2c,0x40,0xaf,0x97,0xfc,0x51,0xfb,0x51,0x78, + 0x3a,0x77,0x7d,0x3f,0xc0,0x78,0xd5,0x66,0xc9,0x5f,0xb5,0xe0,0x8b,0x60,0x7d,0x55, + 0x8f,0x2f,0xff,0x00,0x01,0xe3,0xde,0xbd,0x9a,0x19,0x85,0x2a,0x70,0xe6,0x9b,0xff, + 0x00,0x33,0xe7,0xe3,0x9b,0xd5,0xa4,0xec,0x85,0xd5,0xf4,0xdd,0x13,0xc2,0xb6,0xbf, + 0x6b,0xd7,0x6e,0x09,0x54,0xfb,0xa2,0x4e,0x72,0x7d,0x15,0x07,0x24,0x9f,0x4e,0x6b, + 0xe6,0x9f,0x16,0xf8,0xae,0x6f,0x11,0xde,0xe2,0x14,0x30,0x59,0xa3,0x7e,0xee,0x3c, + 0xfc,0xcd,0xfe,0xd3,0xe3,0x8c,0xfb,0x0e,0x9e,0xf5,0x7b,0xc4,0xda,0xce,0xa5,0xe2, + 0x19,0x7f,0xb4,0x75,0x49,0xda,0x79,0x9f,0xb9,0xe1,0x54,0x7a,0x2a,0x8e,0x14,0x7d, + 0x3f,0x1a,0xe1,0x19,0x32,0xf8,0x35,0xe1,0xe7,0x59,0xf5,0x6c,0x4a,0xf6,0x50,0x76, + 0x8f,0xe6,0x79,0xd9,0x8e,0x73,0x5f,0x11,0x1e,0x4b,0xda,0x3f,0x99,0x1c,0xac,0x46, + 0x4d,0x62,0x5d,0x49,0x93,0x9e,0xa6,0xb5,0xa7,0x38,0x53,0xc7,0xe3,0x5c,0xed,0xcb, + 0x92,0xdd,0xeb,0xe6,0x61,0xb9,0xf3,0xef,0x7b,0x10,0x6e,0x39,0xf5,0xf6,0xa6,0x6e, + 0xe0,0x1a,0x8f,0x76,0x78,0xcf,0x5a,0x09,0x05,0x70,0xa7,0xd4,0x57,0x44,0x6d,0xb2, + 0x25,0xa1,0xad,0x27,0xa7,0x24,0xd2,0x07,0x1d,0x3b,0xf7,0xa8,0x98,0x81,0x51,0xee, + 0x38,0x18,0xe7,0x35,0x76,0x25,0xb2,0x77,0x6c,0x8e,0x3b,0x54,0x24,0xe0,0x9c,0xf1, + 0x4b,0x91,0x8c,0xfe,0x14,0xc2,0x48,0xf5,0xcd,0x54,0x49,0x22,0x72,0x4f,0x5a,0xca, + 0xb9,0x66,0x0a,0x7d,0xb3,0x8c,0xd6,0x8b,0x64,0x8c,0xe2,0xb3,0x2f,0x06,0x10,0x8c, + 0x55,0xc9,0xdc,0xb8,0x2b,0xbb,0x1c,0x56,0xaf,0x31,0x0a,0x40,0x3f,0x4a,0xf3,0xcb, + 0x87,0x26,0x53,0xcf,0x53,0xde,0xbb,0x3d,0x6a,0x52,0x37,0x57,0x0b,0x27,0xdf,0x24, + 0x73,0xcd,0x73,0x55,0x7a,0xd9,0x1f,0x41,0x83,0x8f,0x2d,0x3b,0x96,0x62,0xcf,0xd0, + 0x56,0x8c,0x68,0x06,0x3d,0xba,0xd5,0x2b,0x75,0x2c,0x46,0x2b,0x50,0x2e,0x14,0x7a, + 0xd7,0x3d,0x49,0x23,0x93,0x17,0x2b,0xca,0xc2,0xaa,0xe6,0xa7,0x08,0x70,0x01,0x1c, + 0x9a,0x12,0x32,0x00,0x26,0xa6,0x55,0xc9,0xe0,0x62,0xb9,0xa4,0xd1,0xcc,0xbb,0x04, + 0x68,0x09,0xe7,0xad,0x5c,0x2b,0x85,0xff,0x00,0x3d,0x69,0x21,0x8f,0x18,0xc8,0xff, + 0x00,0xeb,0x53,0xae,0x0e,0xd5,0x27,0xda,0x9d,0x28,0xb9,0x48,0xab,0x1f,0xff,0xd3, + 0x9e,0xce,0x33,0x1a,0x80,0xdd,0xb8,0xc5,0x74,0x36,0xac,0x47,0xd2,0x8b,0xab,0x78, + 0xd5,0x83,0xc4,0x00,0xcf,0x38,0xa4,0x85,0x47,0x7a,0xfe,0x18,0xe2,0x1c,0x8f,0x11, + 0x97,0xe2,0x5d,0x2a,0xcb,0xd1,0xf4,0x68,0xfd,0xc3,0x21,0xce,0xb0,0xf9,0x86,0x1e, + 0x35,0x68,0xbf,0x54,0x75,0x36,0x33,0x00,0x47,0x35,0xe8,0x3a,0x3d,0xee,0x1d,0x79, + 0xe3,0x8a,0xf2,0xeb,0x76,0x2a,0x46,0x3e,0x95,0xd7,0x69,0xb7,0x3b,0x59,0x73,0xde, + 0xbe,0x66,0x54,0xcf,0x6d,0xb3,0x83,0xfd,0xa1,0xfe,0x1f,0x2f,0x8a,0x74,0x55,0xd5, + 0xed,0x53,0x74,0xb1,0x29,0x0d,0x8e,0xa3,0xde,0xbf,0x3a,0x65,0xd2,0x67,0xd3,0xae, + 0x9a,0x19,0x94,0xa9,0x52,0x41,0xc8,0xaf,0xd9,0x2b,0x76,0x86,0xfe,0xd1,0xed,0x6e, + 0x14,0x3a,0x48,0xb8,0x20,0xf3,0x5e,0x0d,0xa8,0x7e,0xcc,0x17,0xdf,0x10,0xfc,0x45, + 0x35,0xa7,0x87,0x65,0xb7,0xb5,0x65,0x89,0xae,0x1a,0x59,0xc9,0x54,0x0a,0x08,0xe3, + 0xe5,0x56,0x24,0xf3,0xc0,0xc7,0xbd,0x7e,0xbd,0xe1,0xd7,0x16,0xd2,0xc1,0xd3,0x96, + 0x07,0x17,0x2b,0x47,0x74,0xff,0x00,0x33,0x97,0x17,0x8d,0x95,0x18,0x73,0xad,0x91, + 0xf0,0x46,0x9f,0x6e,0x48,0x1d,0xe9,0x6f,0xec,0xe4,0x84,0xf9,0x8a,0x38,0x3c,0x57, + 0xd3,0x3e,0x2d,0xfd,0x9b,0xbe,0x22,0xfc,0x3e,0x2d,0x73,0xa8,0x58,0x7d,0xb3,0x4e, + 0x53,0x81,0x79,0x66,0x7c,0xf8,0x0f,0xbe,0xf5,0xe9,0xff,0x00,0x02,0x00,0xfb,0x57, + 0x95,0x5d,0xe9,0x5b,0x94,0xc5,0x2a,0x94,0x6f,0xee,0x91,0x5f,0xa9,0xd2,0xc6,0xe1, + 0x71,0x4b,0x9f,0x0d,0x51,0x4a,0x2f,0xb3,0x32,0xa3,0xc5,0x14,0xe1,0x52,0x3c,0xcf, + 0x73,0xc9,0x8c,0x52,0xa7,0xcc,0x7a,0x1a,0x90,0x21,0x6d,0xa3,0x1f,0x53,0x5d,0x45, + 0xee,0x9a,0xf1,0xae,0x07,0x4a,0xc5,0x16,0xec,0x37,0x60,0x7c,0xbf,0x5a,0xe6,0xae, + 0xb7,0x47,0xdd,0x65,0xf9,0xa4,0x26,0xb9,0xa2,0xca,0xce,0x8b,0xbb,0x39,0xe6,0xb3, + 0x64,0x20,0x31,0x03,0x93,0xf5,0xab,0xb2,0xa4,0x88,0x32,0x41,0xf6,0xaa,0x13,0x27, + 0x57,0xe9,0x8e,0xf5,0xe5,0xb8,0xea,0x7d,0x86,0x0f,0x11,0x17,0xd4,0xc2,0xb9,0x90, + 0xee,0x65,0xcf,0x26,0xac,0xe8,0x3a,0x5c,0xfa,0x95,0xe2,0xc5,0x18,0x27,0x71,0xc1, + 0x35,0x42,0x75,0x67,0x9c,0x22,0x83,0x96,0x38,0xaf,0x7b,0xf0,0x86,0x8f,0x6b,0xa4, + 0x5b,0x43,0x2b,0x8c,0xcf,0x20,0x07,0xe9,0x9a,0x99,0xbb,0x23,0x1e,0x27,0xe2,0x6a, + 0x59,0x66,0x1a,0xf7,0xf7,0xa5,0xb1,0x4f,0x5d,0xf0,0x7a,0x69,0xfa,0x3c,0x7e,0x5a, + 0xe5,0x80,0xe4,0x8f,0x5a,0xf0,0xdd,0x45,0x9e,0x22,0x61,0x4c,0x83,0xde,0xbe,0xbb, + 0xf1,0x3d,0xdc,0x2b,0xa3,0x31,0x93,0x9c,0x2f,0x19,0xaf,0x93,0x2e,0x93,0xcd,0xba, + 0x92,0x52,0x38,0x2c,0x71,0xf9,0xd6,0x54,0x24,0xdb,0x72,0x92,0x39,0xf8,0x0f,0x38, + 0xab,0x89,0xc3,0x49,0xd6,0xd5,0xdc,0xce,0xb7,0x8c,0xaa,0x9c,0x81,0xcf,0x53,0x52, + 0xee,0x09,0xd3,0x15,0x69,0x62,0xc0,0xdc,0xdc,0x01,0xdf,0x15,0xc5,0x6b,0xba,0xd2, + 0xc6,0x1a,0xda,0xd4,0xf3,0x9c,0x16,0x15,0xef,0xe5,0x59,0x5d,0x6c,0x65,0x54,0xa0, + 0xb4,0xea,0xc3,0x8c,0xb8,0xe7,0x09,0x94,0xe1,0xe5,0xcd,0x2b,0xcb,0xa2,0xea,0x50, + 0xd7,0xb5,0x7d,0xc4,0xdb,0x44,0xdf,0x52,0x2b,0x8c,0x3d,0xcf,0xaf,0x7a,0x9e,0x46, + 0xdc,0x4b,0x30,0xc9,0xa8,0x49,0xc0,0xf5,0xc5,0x7e,0xb1,0x82,0xc1,0xc3,0x0d,0x45, + 0x53,0x82,0x3f,0x8f,0x33,0xac,0xe6,0xbe,0x65,0x8a,0x96,0x26,0xbb,0xd5,0xfe,0x04, + 0x78,0x03,0x9a,0x4c,0x71,0x4f,0x39,0xfa,0x53,0x41,0xc7,0x6a,0xeb,0x4d,0x76,0x3c, + 0x87,0x61,0x3a,0x74,0xe0,0xf3,0x48,0x41,0xfc,0x29,0xfe,0x84,0x75,0xa6,0xff,0x00, + 0x9e,0x29,0x68,0x16,0x1b,0x93,0xd0,0x0a,0xe8,0xf4,0x48,0x77,0x48,0xbf,0x5a,0xe7, + 0x86,0x73,0x8e,0xff,0x00,0xce,0xbb,0x6f,0x0e,0xdb,0x92,0xeb,0xc5,0x73,0xe2,0xe6, + 0xa1,0x4d,0xb3,0x3a,0xae,0xd1,0x3d,0x87,0xc3,0xf0,0xed,0x89,0x78,0xed,0xfa,0x57, + 0x4d,0x74,0x36,0xf0,0x3a,0x1a,0xa3,0xa2,0x45,0xb2,0x25,0x38,0xe9,0x57,0x2e,0x79, + 0x63,0xf5,0xe9,0xd2,0xbf,0x38,0xc7,0x56,0x72,0xa8,0xd9,0xe0,0xd7,0x9f,0xbd,0x73, + 0x26,0x5c,0x9e,0x9d,0xbb,0xd5,0x46,0xcf,0xf9,0xe6,0xb4,0x1d,0x09,0xe7,0xd6,0x98, + 0x22,0xf4,0xef,0xd2,0xbc,0xd9,0x4d,0x99,0xc6,0x4b,0xa1,0x44,0xaf,0xaf,0x35,0xad, + 0xe1,0xef,0x0e,0x5c,0xf8,0x87,0x52,0x5b,0x28,0x98,0x45,0x1a,0xa9,0x92,0x79,0xe4, + 0xe1,0x20,0x85,0x39,0x79,0x18,0xfb,0x0e,0x83,0xb9,0xc0,0xef,0x4f,0xb4,0xd3,0xee, + 0x75,0x0b,0x98,0xac,0xad,0xa3,0x69,0x66,0x95,0x82,0x22,0xaf,0x52,0x4f,0x41,0xfe, + 0x7a,0x57,0x69,0xac,0xdc,0xda,0x68,0x96,0x27,0xc1,0xfa,0x1c,0x8b,0x23,0xb1,0x0d, + 0xa9,0xdd,0xa1,0xff,0x00,0x5b,0x2a,0xf4,0x89,0x0f,0xfc,0xf2,0x8f,0x9c,0x7f,0x79, + 0xb2,0x6b,0x3a,0xb5,0xe3,0x4a,0x17,0xea,0xcd,0xe3,0x25,0x15,0xce,0xc8,0xf5,0x7d, + 0x4a,0xd6,0xef,0xc9,0xd2,0x74,0x75,0x30,0x69,0x16,0x03,0x6c,0x2a,0xdf,0x7a,0x56, + 0xfe,0x39,0x64,0xf5,0x77,0x3c,0x9f,0x41,0x80,0x2b,0x9d,0x9e,0x60,0x57,0x00,0xf0, + 0x78,0x3d,0xa9,0x10,0x13,0x18,0x8d,0x0e,0x11,0x47,0x35,0x51,0x87,0x98,0xc1,0x14, + 0x60,0x01,0xc7,0xe1,0xde,0xbc,0x07,0x3e,0x69,0x5d,0xee,0x62,0xdd,0xf5,0x64,0xe9, + 0xf2,0xc7,0xe6,0x39,0xc6,0xee,0x87,0xaf,0x4f,0x7a,0x82,0x3c,0xcd,0x26,0x09,0x38, + 0x1f,0x8d,0x32,0x49,0x4c,0x9c,0x2f,0x00,0x1d,0xa0,0x7a,0x01,0x53,0x8f,0xdd,0xa7, + 0x03,0xa7,0xf3,0xad,0x62,0x9d,0xf9,0x8a,0x84,0x6e,0xc7,0x4c,0x77,0xf4,0xe1,0x54, + 0x62,0xa8,0xb1,0xe3,0x23,0x8e,0x09,0x23,0xf9,0x54,0x8f,0x23,0x08,0xf6,0x9c,0x11, + 0x55,0x59,0x8e,0x71,0x8e,0xc3,0x35,0xac,0x23,0x73,0xa9,0x22,0x8b,0x15,0x0a,0x7d, + 0x5a,0xbe,0xa8,0xfd,0x9b,0xad,0x36,0x5c,0x6a,0x97,0x67,0x1c,0x0b,0x78,0xbf,0xf1, + 0xe6,0x73,0xcf,0xe0,0x2b,0xe5,0x86,0xc6,0x40,0xfb,0xc4,0xf4,0x1f,0x8d,0x7d,0x59, + 0xf0,0x0c,0xb2,0x69,0xb7,0xa4,0x63,0xe6,0xbb,0x88,0x67,0xd7,0x08,0x7f,0xc6,0xbd, + 0x8c,0xae,0x3f,0xbe,0x4f,0xc9,0x8a,0xbe,0x94,0x64,0xcf,0xbe,0x74,0x7b,0xb8,0xcf, + 0x96,0x91,0xb8,0x04,0x00,0x30,0x3b,0x76,0xff,0x00,0xeb,0xd7,0xa6,0x45,0x38,0x12, + 0xa2,0xf5,0x1c,0x1f,0xae,0x3a,0x57,0x88,0x78,0x79,0xcc,0x53,0x46,0x5f,0x23,0x6b, + 0x75,0x1f,0x9f,0xe9,0x5e,0x97,0x05,0xf0,0x2e,0x15,0xdb,0x0b,0x8c,0x64,0xd7,0xd7, + 0xd0,0xd5,0xbb,0x9e,0x17,0x36,0x87,0xa1,0x43,0x29,0xc8,0x63,0xdf,0x1c,0x7a,0xd6, + 0xe4,0x6c,0xad,0x1e,0xd3,0xd7,0xbf,0x6e,0x4f,0x6a,0xe1,0xa0,0xbe,0x22,0x45,0x8d, + 0x88,0x18,0x03,0xdc,0x1e,0x3d,0x6b,0x5e,0x0b,0xcf,0xde,0x16,0x56,0xe3,0x04,0xf7, + 0xcf,0x1d,0xf9,0xae,0x8a,0xbb,0x58,0xcd,0x16,0x6e,0xef,0x89,0xd4,0x21,0xb4,0x4e, + 0x15,0x73,0xbf,0xf0,0x1c,0x7e,0x66,0xb5,0xa3,0x6d,0xd8,0x00,0xe4,0x9e,0xbe,0xd8, + 0xae,0x39,0xae,0x96,0x4d,0x47,0xce,0x1c,0xbb,0x00,0xa4,0xfa,0x63,0x9e,0xd5,0xb4, + 0xb7,0x19,0x91,0x41,0xfb,0xa7,0x19,0x23,0xb0,0xf7,0x34,0x53,0xd2,0x24,0xb5,0xa9, + 0xb9,0x2f,0xee,0xd1,0x42,0x0f,0x66,0x23,0xd6,0xa0,0x67,0x52,0xdb,0x4f,0x51,0xd3, + 0x35,0x9c,0x35,0x18,0xf7,0xba,0xa9,0x38,0xe7,0x39,0xc9,0x18,0xfa,0xd5,0x63,0x7f, + 0x1a,0xb8,0xe7,0x03,0xae,0x7d,0x6b,0xaa,0x96,0x88,0x96,0xae,0x6c,0x16,0x0a,0x48, + 0xe3,0x03,0xf9,0xd4,0x46,0x4d,0xe3,0x81,0x8f,0x5f,0x6f,0xa5,0x73,0xb3,0x6a,0x61, + 0x99,0xb6,0x0f,0x9b,0x3f,0x98,0xef,0x44,0x3a,0xab,0xcc,0x4a,0x00,0x3e,0x6e,0x84, + 0x9e,0x3d,0x29,0x54,0x9f,0x42,0x3d,0x99,0xd8,0xda,0x3a,0xbf,0x07,0x9c,0x90,0x06, + 0x3d,0x2b,0xf3,0xaf,0xfe,0x0a,0x21,0xf1,0x79,0xb4,0x8f,0x0d,0x69,0x3f,0x08,0x74, + 0x7b,0x80,0x97,0x1a,0xde,0x35,0x1d,0x58,0x21,0x3b,0x96,0xce,0x07,0xc5,0xbc,0x24, + 0x82,0x30,0x26,0x94,0x6e,0x20,0xf0,0xc8,0x8c,0x3b,0xd7,0xde,0xb0,0xdf,0x24,0x1c, + 0x16,0x55,0xe0,0xe4,0xf4,0xc0,0xea,0x4f,0xe0,0x2b,0xf9,0xe8,0xfd,0xa0,0x3c,0x7f, + 0x71,0xf1,0x3f,0xe3,0x17,0x89,0xfc,0x5b,0x23,0xb1,0x82,0x6b,0xe7,0xb4,0xb2,0x53, + 0x8f,0x92,0xce,0xc8,0x9b,0x78,0x55,0x48,0xea,0xad,0xb5,0xa4,0x1f,0xef,0xd7,0x9d, + 0x8b,0xad,0xec,0xa9,0x4a,0xa2,0xdf,0x65,0xfd,0x7a,0x1e,0x9e,0x06,0x92,0x72,0xd4, + 0xf2,0xd4,0x9c,0xee,0x57,0x24,0xe4,0xfe,0xb5,0xea,0xbe,0x03,0xf1,0x75,0xee,0x87, + 0xa8,0xc1,0x3c,0x2e,0x41,0x8d,0xfb,0x9c,0x82,0x0f,0x04,0x11,0xe8,0x47,0x06,0xbc, + 0x7a,0x3c,0x6d,0xc1,0xed,0xdf,0xf1,0xae,0x82,0xc6,0x42,0xb2,0xe4,0x77,0xc1,0xc7, + 0xe1,0x9a,0xf8,0xcc,0x44,0x9b,0x47,0xb6,0xa1,0x7f,0x7b,0xa9,0xfa,0x27,0x68,0xfa, + 0x7e,0xaf,0x63,0x06,0xa9,0x69,0xb7,0xc8,0xb9,0x5c,0xa8,0xcf,0x28,0xc3,0xef,0x46, + 0x7d,0xd4,0xfe,0x98,0xaf,0x46,0xf0,0xb7,0x87,0xa1,0x9d,0xb7,0xc9,0x22,0xac,0x6b, + 0xc9,0xee,0x40,0xfa,0x0a,0xf9,0x47,0xe1,0x56,0xb5,0x2d,0xd5,0xb4,0xda,0x0c,0x8f, + 0xcc,0xeb,0xe6,0xda,0xee,0xfe,0x19,0xd0,0x74,0xfa,0x38,0xca,0xfe,0x55,0xee,0x1e, + 0x1a,0xf1,0x54,0xd1,0xa3,0x06,0x38,0xc7,0x18,0xf4,0xc7,0xf8,0x1a,0xe5,0x58,0xba, + 0xd1,0xb4,0xa0,0xfd,0xdf,0xc9,0x9f,0x69,0x80,0xcc,0x23,0x52,0x92,0xe7,0xf8,0x8f, + 0xa7,0x7f,0xe1,0x35,0xf0,0xc7,0x81,0xf4,0xb9,0x2e,0xae,0x1d,0x2d,0x6d,0xad,0x90, + 0xbc,0xd3,0xcd,0x85,0x55,0x55,0xe4,0xb3,0x1e,0x80,0x0a,0xf3,0x4f,0x10,0x7e,0xd6, + 0xff,0x00,0x0c,0x6d,0xf4,0xe9,0x27,0xb6,0xf1,0xae,0x91,0x03,0x05,0x25,0x77,0x5c, + 0x29,0xe7,0xd3,0xcb,0x42,0x19,0x8f,0xb0,0xe6,0xbf,0x3c,0x3f,0x69,0x2f,0x89,0x5a, + 0xae,0xb3,0x72,0xfe,0x1b,0xb6,0xb9,0x2b,0x63,0x16,0x0c,0xca,0xa7,0x89,0x25,0xea, + 0x01,0xf5,0x55,0xf4,0xf5,0xaf,0x88,0x2f,0x66,0x72,0xc4,0x6e,0x39,0xcf,0x63,0x5f, + 0x67,0x91,0x64,0x51,0xad,0x45,0x62,0x2a,0x36,0xae,0x4e,0x2f,0x14,0xd2,0xd0,0xfb, + 0xc7,0xf6,0x94,0xf8,0xa9,0xe0,0x0f,0x8a,0x3a,0x55,0x96,0xa1,0xa3,0x78,0xcc,0xea, + 0x9a,0x9d,0x85,0xca,0x49,0xfd,0x9e,0xe9,0x2c,0x56,0xcf,0x19,0x52,0xae,0x61,0x8d, + 0x93,0x0d,0x30,0x38,0x60,0xce,0xc5,0x82,0x86,0x0a,0x46,0x4e,0x78,0xaf,0x86,0xba, + 0x99,0x63,0x18,0xdd,0x9c,0xd7,0xc6,0x11,0xcc,0xe9,0x2a,0x93,0xeb,0x5f,0x44,0x7c, + 0x3a,0xd5,0x4a,0x49,0x10,0xdd,0xc7,0x15,0xf4,0x38,0x8c,0x1c,0x69,0x53,0xe4,0x86, + 0xc7,0x8b,0x2a,0x97,0x95,0xd9,0xf7,0x34,0x4f,0xe7,0x59,0x8c,0x63,0x38,0xcd,0x73, + 0xf3,0x64,0x39,0x27,0x8f,0x6a,0xb1,0xa1,0x5e,0x09,0xec,0xd4,0x03,0xd5,0x6a,0x0b, + 0xe3,0x87,0x35,0xf3,0x18,0xa5,0x66,0x67,0x3d,0x8c,0xcb,0xa6,0x18,0x38,0xe3,0x35, + 0xcd,0x4e,0xe7,0x24,0xd6,0xcd,0xcb,0xe3,0x23,0xfc,0xe2,0xb0,0xe5,0x39,0xcf,0x35, + 0x85,0x37,0xae,0x87,0x33,0xdc,0xac,0x0e,0x79,0xc5,0x48,0x4f,0x18,0xcd,0x35,0x3e, + 0x6e,0xbd,0xba,0xd3,0x8e,0x73,0xd2,0xb7,0x5b,0x92,0x42,0xc7,0xe8,0x6a,0x0a,0x99, + 0xf2,0x39,0xc7,0xe1,0xeb,0x50,0x76,0xce,0x71,0xde,0xb5,0x25,0xb1,0xe0,0x73,0x82, + 0x3a,0xd2,0x11,0xeb,0x4b,0x92,0x3b,0xd2,0x1c,0x1e,0x33,0x91,0xfe,0x78,0xa6,0x21, + 0x9e,0xb9,0xed,0xda,0xb1,0x2f,0xcf,0xca,0xdd,0x6b,0x70,0x9c,0x0c,0xe6,0xb9,0xad, + 0x56,0x50,0x10,0x91,0xef,0x41,0xd1,0x87,0x8f,0x34,0xb5,0x3c,0xdb,0x5c,0x9b,0x39, + 0x5f,0x5e,0x95,0xca,0x28,0xf9,0xb3,0x9c,0x56,0xde,0xab,0x31,0x79,0x58,0x0e,0x05, + 0x64,0x46,0x32,0xde,0xb5,0xcf,0x29,0x6a,0x7d,0x0c,0x97,0x25,0x33,0x4a,0xd6,0x3e, + 0x7f,0x5a,0xd5,0x54,0x39,0xeb,0xc5,0x55,0xb4,0x5c,0x60,0xf7,0xad,0x64,0x8c,0xff, + 0x00,0x8d,0x73,0xcd,0xf6,0x3c,0x6a,0x92,0xbc,0x98,0xc5,0x53,0xc7,0x7a,0x9e,0x34, + 0x00,0xe4,0xfe,0x55,0x32,0xc5,0xeb,0xc5,0x5a,0x8a,0x2f,0xef,0x57,0x3b,0xd5,0x93, + 0xb0,0x8a,0xa1,0x17,0x9f,0xad,0x73,0x5a,0xcd,0xe2,0xc3,0x1b,0x1c,0xe3,0x8a,0xe8, + 0xee,0xa5,0x58,0x95,0x89,0xc7,0xf9,0xf6,0xaf,0x2a,0xf1,0x26,0xa3,0xd4,0x03,0xc6, + 0x2b,0xd8,0xcb,0xf0,0xaa,0x4d,0x3b,0x0a,0xf7,0x3f,0xff,0xd4,0xda,0xb6,0xbe,0x5b, + 0x80,0x37,0x11,0x9c,0x75,0x15,0xa4,0x02,0x0c,0x32,0x77,0xaf,0x39,0xd2,0xae,0x3e, + 0x6d,0xaf,0xc0,0xef,0xfd,0x2b,0xac,0x86,0xe8,0xba,0xed,0xce,0x00,0xff,0x00,0x39, + 0xaf,0xc6,0xb3,0x8c,0xaa,0x86,0x63,0x86,0x95,0x1c,0x4a,0xf4,0x7d,0x53,0xee,0x78, + 0xd9,0x36,0x75,0x88,0xcb,0x6b,0xaa,0xd4,0x1e,0x9d,0x57,0x73,0xa8,0x80,0xe3,0x15, + 0xb7,0x6b,0x29,0x46,0x04,0x1f,0x7a,0xe6,0xe2,0x94,0x05,0x5e,0x72,0x0f,0x7a,0xd6, + 0x82,0x5c,0xf2,0x3e,0xbc,0x57,0xf3,0xce,0x7d,0x91,0x62,0x32,0xcc,0x43,0xa5,0x55, + 0x69,0xd1,0xf4,0x68,0xfe,0x89,0xc9,0x33,0xba,0x19,0x9e,0x1d,0x55,0xa4,0xf5,0xea, + 0xbb,0x1e,0x8b,0xa5,0xde,0x63,0x1e,0x95,0xeb,0xbf,0x0d,0xf5,0x53,0x67,0xe2,0xdb, + 0x46,0x53,0x85,0x97,0x72,0x37,0xb8,0xc5,0x7c,0xf9,0x61,0x71,0x82,0x06,0x71,0x5e, + 0xbb,0xe0,0x38,0xa6,0xba,0xd6,0xa0,0xb9,0x8f,0x3b,0x6d,0xd8,0x33,0x11,0xef,0xc0, + 0x15,0xe2,0xd1,0xd2,0xa4,0x5a,0xee,0x75,0xe3,0xe2,0xbd,0x84,0xe3,0x2e,0xa8,0xf7, + 0x9b,0xbd,0x4e,0x4d,0x23,0x5d,0xbf,0xb5,0x85,0xb1,0x03,0x48,0x4f,0x96,0x40,0x28, + 0xca,0xe3,0x38,0x2a,0x78,0x23,0x9c,0x72,0x2b,0x9b,0xd5,0xfe,0x1b,0xfc,0x27,0xf1, + 0x84,0x6c,0xda,0xd7,0x87,0xed,0x63,0x9d,0xfa,0xcf,0x69,0x9b,0x77,0xcf,0xa9,0x0b, + 0xf2,0xfe,0x95,0x8f,0xab,0xdf,0xc9,0x71,0xaa,0xdc,0xcc,0xc4,0xe7,0xcc,0x2b,0xf8, + 0x28,0xc5,0x3e,0xde,0xfa,0x4d,0xa0,0x83,0xc0,0xe2,0xbe,0x7d,0x66,0xf8,0x9c,0x26, + 0x22,0x73,0xc2,0xd5,0x71,0x57,0x7b,0x1e,0x5c,0xb0,0x70,0xab,0x08,0xf3,0xad,0x6c, + 0x79,0x3f,0x88,0xff,0x00,0x63,0x4f,0x04,0xea,0xe5,0x9b,0xc3,0x7a,0xf3,0xda,0x2b, + 0x9e,0x22,0xbb,0x8c,0x36,0xdf,0x60,0xca,0x46,0x7f,0x2a,0xf2,0xdd,0x6f,0xf6,0x0f, + 0xf1,0x64,0x16,0xfe,0x6e,0x81,0xab,0x59,0x5f,0xb0,0xe7,0xcb,0x0d,0xb1,0x8f,0xfd, + 0xf4,0x00,0xfd,0x6b,0xec,0x48,0x35,0x39,0x10,0xe4,0xb5,0x75,0xda,0x7e,0xb4,0x40, + 0x07,0x77,0xcd,0xf5,0xaf,0xab,0xc2,0x78,0x8f,0x9a,0xab,0x46,0x73,0xba,0xfe,0xbb, + 0x93,0x0a,0x35,0xb0,0xff,0x00,0xee,0xf5,0x2c,0x7e,0x36,0xf8,0xdf,0xf6,0x7c,0xf8, + 0x97,0xe0,0xf7,0x7f,0xed,0x7d,0x1a,0x75,0x8a,0x3e,0xb2,0x2a,0x16,0x4c,0x7b,0x30, + 0xe3,0xf5,0xaf,0x25,0x3e,0x16,0xba,0x7f,0xdd,0x34,0x4c,0xad,0xdc,0x10,0x41,0xfd, + 0x6b,0xfa,0x1a,0x87,0x52,0x5b,0xa8,0x0c,0x33,0xed,0x96,0x17,0x18,0x64,0x90,0x07, + 0x52,0x3d,0x08,0x3c,0x57,0x97,0xeb,0x9f,0x07,0x7e,0x18,0x6a,0xba,0xa4,0x3a,0x9d, + 0xc6,0x8d,0x12,0xcd,0x13,0x6f,0x68,0xe3,0x26,0x38,0xa4,0x3d,0x46,0xf4,0x1d,0xbd, + 0x40,0xc0,0x3d,0xeb,0xea,0xf0,0x3e,0x25,0x47,0x95,0xbc,0x55,0x3f,0xb8,0xf5,0xf0, + 0xfc,0x49,0x8e,0xa2,0x95,0x36,0xb5,0x3f,0x1d,0x7c,0x23,0xfb,0x31,0xfc,0x4b,0xf1, + 0x6d,0xb3,0x78,0x93,0x46,0xd2,0x1e,0xe2,0xca,0x37,0xc2,0x96,0x64,0x8c,0xca,0x7f, + 0xe9,0x98,0x72,0x0b,0x01,0xdc,0x8e,0x3f,0xa1,0xab,0x78,0x7b,0x5e,0xf0,0x66,0xb3, + 0x2e,0x8f,0xe2,0x8b,0x29,0x6c,0x2f,0xa0,0xc6,0xe8,0x65,0x18,0x20,0x11,0x90,0x46, + 0x38,0x20,0x83,0xc1,0x19,0x15,0xfb,0x8a,0x12,0x1b,0x74,0x48,0x6d,0xe2,0x48,0xe2, + 0x8d,0x42,0x22,0x20,0x0a,0xaa,0xa3,0x80,0x14,0x0c,0x00,0x3d,0xab,0x95,0xf1,0x5f, + 0xc2,0xcf,0x01,0x7c,0x47,0x74,0x87,0xc5,0x7a,0x54,0x37,0x37,0x06,0x1f,0xb3,0xc7, + 0x76,0x09,0x4b,0x88,0x93,0x24,0x80,0x8e,0x0e,0x38,0x3c,0xf2,0x0e,0x7b,0xd7,0x2e, + 0x03,0xc4,0xe9,0x4b,0x14,0xe1,0x8a,0xa5,0xee,0x37,0xa5,0xb7,0x5f,0xa1,0xe5,0x67, + 0xf8,0xac,0x46,0x60,0xd5,0x6a,0xd2,0xd5,0x2f,0x91,0xf8,0xa1,0xe2,0x2b,0x5b,0xed, + 0x43,0x4f,0xc4,0x59,0x54,0x61,0xd7,0xda,0xbc,0x5f,0x50,0xb5,0xb6,0xd3,0x55,0xde, + 0xe9,0xd5,0x15,0x79,0x39,0x3d,0x6b,0xec,0x6f,0xda,0xa7,0xe0,0xf7,0xc4,0xaf,0x82, + 0x6a,0xd7,0x5a,0x75,0x9b,0x6a,0x1e,0x19,0x73,0x88,0xb5,0x28,0x46,0x44,0x79,0xe8, + 0x93,0xa8,0xfb,0x8d,0xdb,0x9e,0x0f,0x63,0x5f,0x9b,0x1a,0x96,0xa3,0x7d,0xa9,0x4a, + 0x64,0xbb,0x95,0x9c,0x9e,0xa3,0xb5,0x7f,0x40,0x70,0xd6,0x55,0x43,0x34,0xa6,0xb1, + 0x31,0xa8,0x9c,0x3b,0x75,0xf4,0x6b,0xa1,0xe4,0xc3,0xc4,0x0c,0x66,0x59,0x86,0x78, + 0x3c,0x34,0x6c,0xdf,0x52,0xee,0xbd,0xe2,0x4f,0xb5,0x66,0xda,0xc8,0x18,0xe2,0x1d, + 0x5b,0xb9,0xae,0x19,0xc9,0x72,0x49,0x3c,0x9a,0xbd,0x24,0x59,0x3d,0x31,0xef,0x55, + 0x24,0x52,0x1b,0xa6,0x2b,0xf5,0x4c,0x26,0x1a,0x95,0x08,0x2a,0x74,0xa3,0x64,0x7e, + 0x73,0x8e,0xcc,0x31,0x18,0xda,0xae,0xb6,0x22,0x6d,0xb2,0x9b,0x2f,0xa9,0xc5,0x26, + 0xd3,0x8f,0x7f,0x4a,0xb7,0x0d,0xbc,0x93,0xcc,0xb1,0x44,0xa5,0x99,0x8e,0xd0,0xa0, + 0x72,0x49,0xe3,0x15,0xfa,0xbd,0xfb,0x26,0xfe,0xc0,0x91,0xf8,0xeb,0x4a,0x4f,0x1b, + 0x7c,0x58,0x13,0xd9,0xe9,0x93,0x00,0x6d,0x6d,0x13,0x0b,0x2d,0xc7,0x7d,0xd9,0x61, + 0xc2,0x7b,0xe0,0xe4,0xf4,0xf5,0xaf,0x1f,0x88,0x78,0x93,0x05,0x93,0xd0,0xf6,0xd8, + 0xb9,0x6f,0xb2,0x5b,0xbf,0x43,0x1c,0x36,0x1e,0x75,0x65,0x68,0xa3,0xf2,0x6a,0x2b, + 0x59,0xa6,0x7f,0x2e,0x34,0x66,0x2d,0xd0,0x7d,0x2b,0xd5,0xbc,0x4b,0xf0,0x23,0xe2, + 0xc7,0x84,0x7c,0x1f,0x6b,0xe3,0xff,0x00,0x11,0xf8,0x5b,0x52,0xd3,0xfc,0x3f,0x76, + 0xd1,0xac,0x5a,0x84,0xf0,0xec,0x84,0x99,0x78,0x8f,0x3c,0xee,0x50,0xc7,0x1b,0x4b, + 0x28,0x0c,0x7a,0x13,0x91,0x5f,0xd0,0xf7,0x86,0xff,0x00,0x62,0xbf,0xd9,0xe3,0xc2, + 0x3a,0xe5,0x8e,0xbf,0xa6,0xf8,0x77,0xcd,0xb8,0xd3,0xdf,0xcc,0x89,0x6e,0xe5,0x37, + 0x11,0x17,0x03,0xe5,0x67,0x89,0x86,0xd6,0xdb,0xd4,0x02,0x31,0x9c,0x1c,0x71,0x5e, + 0x93,0xf1,0x47,0xc1,0x5a,0x17,0xc4,0xbf,0x08,0x6b,0x7f,0x0e,0x7c,0x43,0x19,0x93, + 0x49,0xd7,0x2d,0x24,0xb2,0x9c,0xa9,0x21,0xd0,0xb2,0xfc,0x92,0x23,0x0f,0xba,0xd1, + 0xb6,0x19,0x48,0xe4,0x11,0xc5,0x7e,0x3f,0x99,0x78,0xdd,0x08,0x62,0x69,0x53,0xc2, + 0x61,0xfd,0xcb,0xfb,0xcd,0xef,0x6f,0x2b,0x75,0xf5,0x3d,0xdc,0x2e,0x43,0xed,0x13, + 0xe6,0x9e,0xbe,0x47,0xf2,0x70,0x54,0x8c,0xd3,0x0a,0xf0,0x47,0xad,0x7a,0x0f,0xc4, + 0xbf,0x00,0x6b,0xbf,0x0c,0x7c,0x6d,0xac,0xf8,0x17,0xc4,0x88,0x53,0x50,0xd1,0xee, + 0xde,0xda,0x56,0xdb,0x85,0x94,0x2f,0x31,0xcc,0x9f,0xec,0x4a,0x85,0x5d,0x71,0x9c, + 0x03,0x8e,0xa0,0xd7,0x02,0x41,0xe8,0x39,0xaf,0xdd,0xb0,0xb8,0x8a,0x78,0x8a,0x30, + 0xc4,0x51,0x95,0xe3,0x24,0x9a,0x7e,0x4c,0xf9,0xfa,0x94,0xa5,0x09,0x38,0x4f,0x74, + 0x11,0x8c,0xc8,0x38,0xcf,0x35,0xea,0x3e,0x1a,0xb6,0x05,0x95,0x80,0xeb,0x5e,0x71, + 0x67,0x16,0xf9,0x41,0xe9,0x8a,0xf6,0x8f,0x0a,0xda,0x8f,0x91,0xb1,0xcd,0x79,0xd9, + 0xcd,0x5e,0x5a,0x36,0x38,0x71,0x12,0x69,0x68,0x7a,0x8e,0x9f,0x6e,0x12,0x00,0x7d, + 0x85,0x36,0x64,0x00,0x73,0xd6,0xb4,0x6d,0xd1,0x56,0x01,0xce,0x33,0x55,0x65,0x1c, + 0x1c,0x9e,0xdd,0x6b,0xf3,0x8a,0x95,0x6e,0xdb,0x3e,0x7e,0xa3,0xd4,0xcf,0xf2,0xc1, + 0x19,0x3d,0xfb,0x8a,0x68,0x88,0xb6,0x06,0x3a,0xd5,0x9c,0x6e,0xc7,0xcb,0xf5,0xae, + 0xd3,0x4d,0x8e,0xd7,0xc2,0xfa,0x60,0xf1,0x2e,0xa9,0x1a,0xcd,0x79,0x3e,0x57,0x4c, + 0xb5,0x61,0x90,0xee,0x38,0xfb,0x43,0x8e,0xe8,0x87,0xee,0x8f,0xe2,0x6f,0x61,0x5c, + 0xb5,0x2b,0x42,0x11,0xe6,0x93,0x1d,0x28,0x39,0x32,0x09,0xc8,0xf0,0x86,0x9b,0xf6, + 0x48,0x30,0x75,0xcd,0x42,0x3c,0x39,0x1d,0x6c,0xed,0xdc,0x74,0xcf,0x69,0x64,0x1d, + 0x7f,0xba,0xbc,0x75,0x35,0xc3,0x44,0xbb,0x33,0x1c,0x5c,0xb3,0x7d,0xe6,0x3d,0xf3, + 0x56,0xa5,0xfb,0x4c,0xad,0x35,0xf5,0xe3,0xb4,0xb7,0x57,0x04,0xb4,0x8e,0x4f,0x39, + 0x6e,0x4f,0xe3,0x51,0xa1,0xf2,0x46,0xf0,0x39,0x22,0xbc,0x2a,0xd5,0xdd,0x49,0x39, + 0x36,0x6d,0x27,0x77,0x6e,0x84,0xd2,0x4a,0x90,0x21,0x8f,0x9c,0xb0,0xe6,0xa9,0x6e, + 0x30,0x47,0xbc,0x93,0xb9,0xc7,0x03,0xd0,0x0f,0x7a,0x69,0x3b,0xdc,0x89,0x0f,0x72, + 0x48,0xf6,0xa6,0xb3,0x86,0x52,0x5b,0xb9,0xc0,0x1d,0x80,0x15,0x30,0x8f,0x57,0xb8, + 0x28,0xea,0x42,0x84,0xe3,0xe5,0xe3,0x27,0xeb,0x56,0xdc,0xa8,0x5c,0xf1,0x55,0x90, + 0xa8,0x6c,0x0e,0xdc,0x9c,0xf4,0xc9,0xab,0x0f,0xb0,0xfc,0xbf,0xa9,0xae,0xa4,0xb4, + 0x56,0x37,0x8a,0xb6,0x85,0x59,0x1c,0x04,0x00,0xf2,0x73,0xc5,0x56,0x2d,0x92,0xc4, + 0x8e,0x0f,0x4a,0xb5,0x21,0x1c,0x7f,0x3f,0x7a,0xa4,0xe7,0x9c,0xf7,0xe6,0xba,0xe9, + 0x6c,0x5a,0xd7,0x42,0x00,0x41,0x2b,0x9e,0xb5,0xf5,0x4f,0xc0,0xc9,0x23,0x8f,0x4b, + 0xba,0x66,0xcf,0x17,0xa8,0x70,0x3f,0xeb,0x95,0x7c,0xaa,0x09,0x12,0xaf,0x19,0xaf, + 0xa8,0x7e,0x09,0x4e,0xb1,0x69,0xf7,0xaa,0xe7,0x0a,0xb7,0x51,0xe4,0xfd,0x63,0x3f, + 0xe1,0x5e,0xae,0x5c,0xb9,0x6a,0x5d,0x8b,0x10,0xaf,0x42,0x47,0xd8,0xde,0x19,0xd4, + 0x16,0x4d,0xa5,0xd9,0x9b,0x61,0x3f,0x88,0xff,0x00,0xeb,0x57,0x72,0xda,0x8c,0x11, + 0xb0,0x55,0xcb,0x6e,0xe7,0x81,0x92,0x3d,0xab,0xc6,0xf4,0x99,0xd1,0x5b,0x31,0x9d, + 0xa0,0xe4,0x77,0xee,0x32,0x0f,0xd6,0xba,0xb6,0xd4,0x04,0x61,0x9d,0x1f,0x39,0x38, + 0x07,0xfa,0x57,0xd1,0x50,0xab,0x24,0xda,0x3e,0x79,0xdc,0xf5,0x58,0x75,0x38,0xd9, + 0x01,0x57,0xf9,0xb8,0xeb,0xe9,0x8e,0x45,0x4a,0x7c,0x49,0xb5,0x0b,0x20,0x65,0xda, + 0x36,0xb1,0x3c,0x67,0x3e,0xd9,0x35,0xe3,0x2b,0xaa,0x3c,0x72,0xbc,0x8a,0xdd,0x33, + 0xc2,0x9c,0x8c,0x8f,0xad,0x69,0xda,0xea,0xac,0xf0,0xb2,0xdc,0x32,0xbb,0x60,0x75, + 0xe4,0x83,0xf8,0x56,0xb2,0xad,0x29,0x3e,0x54,0x24,0x7a,0x5d,0x87,0x88,0x22,0x7b, + 0x86,0x8d,0xcf,0xcc,0xdd,0x48,0x3c,0x76,0xcf,0x4a,0xdb,0x8f,0x5a,0x5e,0x51,0x19, + 0x97,0x6e,0x7a,0xe4,0xe4,0xe3,0xda,0xbc,0x02,0x1d,0x42,0x65,0x9d,0x93,0x3c,0x10, + 0x58,0xe0,0x63,0x9c,0xf6,0xff,0x00,0xeb,0x57,0x48,0x9a,0xab,0x49,0x19,0xdd,0x94, + 0xc6,0x3b,0xe3,0x3c,0x7f,0x8d,0x3a,0x35,0xa4,0xdb,0x4c,0x1b,0x3d,0x36,0xe3,0x58, + 0x5e,0x9b,0xb0,0x14,0x73,0x93,0x83,0x9f,0xa7,0xa5,0x57,0x83,0x57,0x08,0x0b,0xc8, + 0xe5,0x8e,0x72,0x02,0x8c,0xf5,0xaf,0x34,0xba,0xd5,0x96,0x0d,0xc8,0xaa,0xdb,0xd8, + 0x64,0x93,0xcf,0x07,0x9a,0xa5,0x07,0x88,0x04,0x7b,0xda,0x4c,0x1c,0x74,0x1e,0x98, + 0xfc,0xeb,0xbd,0x56,0xb4,0x75,0x33,0x7c,0xdd,0x0f,0x5b,0x1a,0x99,0x72,0x64,0xe7, + 0x0c,0x0f,0xca,0x7a,0xe3,0xd7,0xda,0x9c,0xba,0x94,0x91,0xb8,0x45,0xcf,0x63,0xea, + 0x2b,0xcd,0x63,0xf1,0x13,0xcd,0x1c,0x7b,0x02,0xa1,0xec,0x79,0xe8,0x39,0x3c,0x56, + 0xdd,0xbe,0xb6,0xd2,0x29,0x13,0x27,0x18,0xc8,0x65,0xc7,0x7a,0xc1,0xe2,0x13,0x2a, + 0x3e,0x66,0x6f,0xc6,0x9f,0x1d,0xcb,0xe0,0xef,0x85,0x1e,0x2a,0xf1,0x24,0x4c,0x12, + 0x68,0x74,0xf9,0x20,0xb5,0x3d,0x3f,0xd2,0x2e,0x47,0x93,0x1e,0x3d,0xf2,0xd5,0xf8, + 0x3d,0xe5,0x84,0x09,0x12,0xf2,0x13,0x6a,0xe4,0x9e,0x70,0x38,0xe7,0xeb,0x8a,0xfd, + 0x35,0xfd,0xb3,0xfc,0x59,0x2d,0xbf,0x81,0x34,0x2f,0x0c,0x42,0xdc,0xeb,0x1a,0x83, + 0x5c,0xcd,0x83,0xd6,0x1b,0x45,0xca,0xf1,0xff,0x00,0x5d,0x0a,0xd7,0xe6,0xd0,0x8d, + 0x49,0x04,0xf2,0x72,0x07,0xd2,0xbc,0x3c,0xde,0xbf,0xc1,0x0f,0x9f,0xdf,0xff,0x00, + 0x00,0xf6,0xb0,0x91,0xb5,0x3b,0x90,0x79,0x5b,0x46,0xdc,0x67,0x35,0xa5,0x0c,0x2e, + 0x0a,0x9d,0xb8,0xc8,0x1f,0xcb,0x15,0x79,0x6d,0xb7,0x32,0x67,0xa3,0x01,0x9f,0x71, + 0x5d,0xd6,0x8b,0xa0,0x2d,0xe2,0x2b,0x71,0x9e,0x2b,0xc8,0xe4,0xe7,0xd0,0xea,0x55, + 0x54,0x09,0x7c,0x19,0xa9,0x4f,0x61,0x75,0x04,0xb1,0xb1,0x0d,0x1b,0x82,0x0f,0xa1, + 0x07,0x35,0xf4,0xa6,0xa5,0x73,0x1d,0xba,0x5c,0x6a,0xb0,0x60,0x47,0x71,0x0f,0xda, + 0x00,0x1d,0x03,0x30,0xf9,0x80,0xff,0x00,0x81,0x57,0x83,0x1f,0x0e,0x4d,0xa7,0x4b, + 0x90,0x3b,0xe7,0x23,0xde,0xbd,0x2a,0x0b,0x89,0x2e,0x7c,0x28,0xe9,0x21,0xc9,0x8d, + 0x8c,0x7e,0xf8,0xfb,0xd5,0xe7,0xd3,0xa2,0xfd,0xb4,0xa8,0x74,0x7a,0xff,0x00,0x5f, + 0x23,0xdc,0xcb,0x2a,0xc6,0x57,0x91,0xf1,0xbf,0xc4,0x8b,0x86,0x9a,0xf2,0x47,0x90, + 0xe5,0x99,0x89,0x24,0xf5,0xc9,0x39,0x35,0xe1,0x77,0x1f,0x78,0xd7,0xb4,0x7c,0x46, + 0x6f,0xf4,0x97,0xc1,0xef,0x5e,0x29,0x2f,0x53,0xe9,0x5f,0xb1,0x65,0x71,0x5f,0x57, + 0x8d,0x8e,0x8a,0xf2,0xd6,0xc5,0x27,0xe1,0x87,0xb5,0x7a,0x3f,0x82,0xb5,0x3f,0x22, + 0x74,0x19,0xe8,0x7a,0x57,0x9b,0x31,0xed,0x5a,0xfa,0x25,0xc9,0x82,0xe9,0x4a,0x9f, + 0x7e,0xbd,0x2b,0xa3,0x11,0x0e,0x68,0x1c,0xe7,0xe8,0x67,0x81,0xf5,0x8f,0x3e,0xd9, + 0x57,0x77,0x6a,0xed,0x75,0x3e,0x54,0x48,0xbd,0x0d,0x7c,0xe5,0xf0,0xf7,0x59,0xc2, + 0xa2,0x16,0xf4,0xaf,0x7e,0x37,0x0b,0x3d,0xb7,0x62,0x71,0xc7,0x3d,0xeb,0xe2,0xb1, + 0xd0,0x6a,0x4c,0x96,0xcc,0x6b,0x97,0xe4,0x82,0x6b,0x22,0x43,0xcf,0xbf,0xd7,0xbd, + 0x5c,0xb8,0x7d,0xad,0xcd,0x66,0x92,0x4b,0x7a,0xfa,0x57,0x24,0x6d,0xd4,0xe7,0x95, + 0x89,0x93,0x1d,0xf8,0xa4,0x38,0xc7,0xad,0x0a,0x71,0x9c,0xf4,0x3d,0xe8,0x27,0x23, + 0x1d,0x2b,0x58,0x90,0x44,0xe7,0x07,0xa7,0x1e,0xb5,0x59,0x8f,0x15,0x3c,0x87,0x8c, + 0x7b,0xd5,0x56,0x3c,0xe3,0xd2,0xb4,0x21,0xb1,0xdb,0xfb,0xf5,0xff,0x00,0x3e,0xb4, + 0xcc,0xe7,0x9a,0x84,0xb1,0xe8,0x39,0xa4,0x0f,0xc8,0x3d,0xe9,0xa0,0x27,0x91,0xb0, + 0x99,0xe9,0x9a,0xe3,0x35,0x99,0x82,0xa3,0x64,0xf1,0x5d,0x34,0xd2,0x8c,0x1c,0x7f, + 0x9f,0xc6,0xb8,0x3d,0x72,0x71,0xb5,0xbb,0xd4,0xce,0x56,0x57,0x3d,0x5c,0x1d,0x34, + 0xda,0x38,0x2b,0xd6,0xdf,0x21,0xc7,0xad,0x45,0x6f,0x1e,0xf6,0xe9,0x9a,0x1c,0x65, + 0xba,0x72,0x6b,0x42,0xc2,0x0d,0xc7,0x1e,0xfc,0xfb,0x57,0x3b,0x49,0x23,0xb7,0x15, + 0x2f,0x76,0xc6,0xc5,0xac,0x24,0x0c,0xe3,0xd2,0xb6,0x22,0x83,0xbe,0x3a,0x71,0x4e, + 0xb4,0xb5,0x23,0x01,0x87,0x35,0xa9,0xb0,0x01,0xc7,0x6e,0x2b,0x9a,0xa1,0xe4,0xb7, + 0xd4,0xa6,0x22,0x07,0x8c,0x72,0x69,0xcc,0x16,0x34,0xf9,0xb8,0xab,0x1b,0x4e,0x78, + 0x1f,0xd6,0xa2,0xb8,0xb2,0xd4,0x64,0x8c,0xba,0x5b,0xc8,0x54,0x7a,0x29,0x35,0xad, + 0x18,0x45,0xbd,0x59,0x9b,0x93,0x7a,0x23,0x90,0xd6,0x6f,0x04,0x68,0xc4,0x9e,0x39, + 0xaf,0x14,0xd7,0x2f,0x5a,0x79,0x0a,0x67,0x22,0xbb,0xff,0x00,0x12,0x5c,0x4d,0x19, + 0x68,0xd9,0x59,0x4f,0xa3,0x0c,0x1f,0xca,0xbc,0x9e,0xec,0xb3,0xb1,0x24,0x77,0xaf, + 0xb2,0xcb,0xe8,0x24,0xb9,0x91,0x70,0x85,0xb5,0x3f,0xff,0xd5,0xf3,0x9d,0x2f,0x56, + 0x49,0xb6,0xa8,0x3f,0x38,0xf7,0xeb,0x5d,0xa5,0xbd,0xc3,0xb0,0x1b,0x49,0x00,0x75, + 0x35,0xe0,0xda,0x34,0xd7,0x28,0xaa,0xce,0xdf,0x30,0xe4,0x1e,0x9c,0x57,0xa9,0x69, + 0xfa,0xa1,0x11,0xa9,0x71,0x9d,0xdd,0x7f,0xfa,0xd5,0xf8,0xec,0x2b,0xca,0xcd,0x54, + 0x3e,0x4e,0x50,0xb6,0xc7,0xa4,0x5a,0x5d,0x06,0xc2,0xbf,0x4c,0xd7,0x49,0x1c,0xa1, + 0x40,0x24,0x8e,0x7a,0x57,0x9b,0x2d,0xd9,0x0b,0xbc,0x1f,0x73,0x8e,0x2b,0x4e,0x2d, + 0x41,0xa5,0x00,0x06,0xed,0xc7,0xb7,0xbd,0x79,0xf9,0xbe,0x03,0x0d,0x98,0x61,0xde, + 0x1a,0xba,0xd7,0xa3,0xea,0x8f,0x63,0x23,0xce,0x2b,0xe5,0xd8,0x85,0x5a,0x93,0xd3, + 0xaa,0xee,0x7a,0x85,0xac,0xfc,0x83,0x9e,0xbd,0x6b,0xe9,0xff,0x00,0x06,0xda,0x2e, + 0x97,0xe1,0x95,0xbd,0xce,0x26,0x95,0x7c,0xd2,0x73,0xdc,0xf0,0xa3,0xf0,0x18,0xaf, + 0x91,0x34,0x09,0x24,0xbd,0xbb,0x82,0xcc,0x65,0x9e,0x47,0x54,0xc0,0xea,0x72,0x6b, + 0xeb,0x1f,0xb6,0x93,0x6f,0x15,0x84,0x7f,0x2c,0x51,0x00,0x00,0xc7,0x71,0xc5,0x7f, + 0x39,0xf1,0x06,0x12,0xae,0x59,0x56,0x54,0x2a,0xab,0x4b,0xa7,0x9f,0x99,0xfb,0xbd, + 0x3c,0xca,0x9e,0x61,0x42,0x9d,0x4a,0x0f,0x47,0xab,0x23,0xde,0xc5,0xd8,0xb9,0xc9, + 0x63,0x92,0x7d,0xfb,0xd5,0xeb,0x76,0xc0,0x22,0xaa,0x48,0x3e,0x51,0x9e,0x7d,0xea, + 0xd5,0xbb,0x8d,0xbf,0x4a,0xf8,0x19,0xbe,0xa8,0xef,0x86,0xc5,0xc8,0xe4,0x71,0xc5, + 0x6a,0x5b,0x5d,0x95,0x61,0x83,0xd2,0x9d,0xa4,0x68,0x17,0xba,0xcc,0xcc,0x96,0x8a, + 0x02,0x8e,0x59,0xd8,0xe1,0x47,0xb7,0xa9,0xad,0x6d,0x23,0xc3,0x37,0xad,0xaa,0xbd, + 0xad,0xe2,0x14,0x48,0x08,0x32,0x67,0xa1,0xf4,0x19,0xef,0x9a,0xcd,0x46,0x6a,0xd2, + 0xb6,0xe3,0x75,0x22,0xae,0x9b,0xd5,0x1d,0x86,0x85,0x0c,0xaf,0x08,0xb8,0x9b,0x38, + 0x3f,0x70,0x74,0xcf,0xbf,0xf8,0x56,0xbb,0xc6,0xa5,0xb7,0x0c,0xd5,0xb0,0x85,0x06, + 0xc1,0x80,0x07,0x1c,0x54,0x32,0x64,0x1a,0xe8,0x9d,0x4d,0x2c,0x70,0xf3,0xf3,0x4a, + 0xe8,0xa5,0x2b,0x60,0x1c,0x54,0x85,0xd9,0x52,0x39,0x97,0xb1,0xfd,0x2a,0x39,0x30, + 0x47,0xa5,0x49,0x1a,0xef,0xb7,0x75,0xef,0x8a,0xe5,0x8c,0xdc,0xa4,0xe2,0xba,0xa3, + 0x7d,0x39,0x55,0xce,0x99,0xe2,0xd2,0xfc,0x55,0xa4,0xdc,0x78,0x6b,0xc4,0xb6,0xd1, + 0x5f,0x59,0xde,0xc4,0xd1,0x49,0x0c,0xca,0x1d,0x25,0x46,0x18,0x2a,0xc0,0xf7,0xef, + 0x9a,0xfc,0x32,0xfd,0xb0,0xbf,0x63,0xbd,0x5b,0xe1,0x16,0xb1,0x71,0xe3,0x3f,0x04, + 0xdb,0x49,0x75,0xe0,0xfb,0xb6,0xde,0x36,0x02,0xef,0x60,0xec,0x7f,0xd5,0x4a,0x7a, + 0xed,0x27,0xee,0xbf,0xa7,0x07,0x9e,0xbf,0xb5,0xd6,0x32,0xb1,0x88,0x6d,0x25,0x5d, + 0x3a,0x11,0xd4,0x11,0x5b,0xed,0x3e,0x97,0xe2,0x3b,0x09,0xf4,0x3d,0x7a,0xde,0x2b, + 0x88,0x2e,0x63,0x30,0xcd,0x0c,0xaa,0x1d,0x25,0x46,0x18,0x20,0xa9,0xe3,0x9f,0x4a, + 0xfd,0x4b,0x82,0xf8,0xfb,0x13,0x95,0xd5,0x84,0xe3,0x3d,0x5f,0x7d,0xa4,0xbb,0x3f, + 0x35,0xd1,0x9f,0x2d,0x9a,0xe5,0x11,0x92,0x92,0x51,0xf7,0x7c,0xb7,0x5e,0x68,0xfe, + 0x4a,0xe4,0x80,0x83,0xc8,0xe9,0x54,0x64,0x8b,0xb1,0x19,0xaf,0xd3,0x9f,0xdb,0x47, + 0xf6,0x41,0x3f,0x0c,0xef,0x64,0xf8,0x85,0xf0,0xf2,0xd5,0xe4,0xf0,0xbd,0xcb,0x13, + 0x73,0x6e,0x80,0xb1,0xb0,0x95,0x8e,0x71,0xff,0x00,0x5c,0x9b,0xf8,0x49,0xe8,0x78, + 0x3d,0xab,0xf3,0x7e,0x48,0x32,0xd8,0xc7,0x35,0xfd,0x75,0xc3,0xdc,0x5b,0x87,0xcd, + 0x30,0xca,0xbd,0x17,0xaf,0x55,0xd5,0x3e,0xcf,0xfc,0xcf,0x80,0xc4,0xe1,0x27,0x87, + 0x9f,0x24,0xb6,0xef,0xdc,0xfa,0x67,0xf6,0x3b,0xf8,0x15,0x3f,0xc6,0x0f,0x8a,0x76, + 0x50,0x5c,0x0c,0x69,0xba,0x73,0x8b,0xab,0xa9,0x0a,0x96,0x5d,0xb1,0x9d,0xc5,0x4e, + 0x3f,0xbd,0xd0,0x7b,0x9a,0xfe,0x94,0x21,0x8e,0x0b,0x3b,0x78,0xed,0x2d,0x50,0x47, + 0x14,0x08,0xb1,0xa2,0x28,0xc0,0x55,0x51,0x85,0x00,0x7a,0x01,0x5f,0x98,0xff,0x00, + 0xf0,0x4d,0x4d,0x0b,0x4b,0xb1,0xf0,0x2e,0xb9,0xad,0xc6,0xee,0xb7,0xd7,0x17,0x09, + 0x0c,0x88,0x57,0x0b,0xb1,0x72,0xca,0xc1,0xbb,0xe7,0xa6,0x3b,0x57,0xe9,0x6c,0x92, + 0x95,0xef,0x9a,0xfe,0x7a,0xf1,0x2f,0x88,0x2a,0x62,0xf3,0x7a,0xb1,0x93,0xf7,0x61, + 0xee,0xaf,0xd7,0xf1,0x3e,0xa3,0x2e,0xc2,0xa8,0xd1,0x85,0xba,0xea,0x3e,0x69,0xb8, + 0x23,0xf5,0xac,0x74,0x80,0x3a,0x79,0x98,0xc8,0x62,0x77,0x67,0xae,0x73,0xd4,0x53, + 0xee,0x25,0x3b,0x4f,0x35,0x1e,0x99,0x7a,0x1f,0x74,0x44,0x0e,0x0f,0x7f,0x7a,0xfc, + 0xb3,0x0b,0x88,0x8c,0xf1,0x1c,0xb5,0x3a,0xa3,0xdd,0x85,0x19,0x46,0x9b,0x94,0x51, + 0xf9,0x81,0xff,0x00,0x05,0x22,0xfd,0x9f,0xd3,0xc4,0x3e,0x17,0x83,0xe3,0x97,0x87, + 0x2d,0xc1,0xd4,0x74,0x28,0x56,0xd7,0x5b,0x08,0x06,0x66,0xd3,0xb7,0x7e,0xee,0xe1, + 0xbd,0x4d,0xb3,0x31,0xdc,0x49,0xe2,0x36,0x63,0xce,0x05,0x7e,0x1e,0x32,0x10,0x48, + 0x6e,0xd5,0xfd,0x7f,0x6b,0xfa,0x36,0x9f,0xae,0xe9,0x37,0x9a,0x1e,0xaf,0x0a,0xdc, + 0x58,0x6a,0x50,0x49,0x6d,0x71,0x13,0x80,0x55,0xa2,0x95,0x4a,0x3a,0x91,0xe8,0x41, + 0x35,0xfc,0xac,0xfc,0x70,0xf8,0x65,0x7f,0xf0,0x87,0xe2,0x87,0x88,0x7e,0x1f,0xdf, + 0x07,0xc6,0x93,0x7a,0xf1,0xdb,0x48,0xc0,0xfe,0xf6,0xd1,0xff,0x00,0x79,0x6d,0x20, + 0x27,0xef,0x6e,0x89,0x97,0x27,0xbb,0x06,0xf4,0xaf,0xea,0x1f,0x08,0x38,0x8e,0x55, + 0x68,0x4f,0x29,0xac,0xf5,0x86,0xb1,0xf4,0xbe,0xab,0xe4,0xdf,0xe2,0x7c,0xb6,0x7b, + 0x85,0x5e,0xee,0x22,0x2b,0x7d,0x1f,0xe9,0xfe,0x47,0x9e,0x69,0x51,0x16,0x94,0x13, + 0xc6,0x6b,0xde,0x7c,0x2f,0x6f,0x85,0x52,0x7d,0x2b,0xc6,0x74,0x18,0x43,0xc8,0x84, + 0x0c,0x66,0xbe,0x82,0xf0,0xe5,0xbe,0xd8,0x97,0x8e,0xa0,0x57,0xdf,0x71,0x15,0x7b, + 0x7b,0xac,0xf8,0xcc,0x6c,0xf4,0xb1,0xd7,0x7c,0xab,0x1a,0xae,0x3b,0x55,0x19,0x46, + 0x49,0x1c,0x73,0x57,0x26,0x38,0x18,0x53,0xd2,0xae,0xe8,0x5a,0x3d,0xce,0xbd,0xa9, + 0x45,0x61,0x6c,0x00,0x2e,0x49,0x77,0x6e,0x12,0x34,0x03,0x2e,0xec,0x7b,0x2a,0x8e, + 0x4d,0x7c,0x14,0xe6,0x78,0x91,0x8b,0x93,0x51,0x45,0x9f,0x0f,0x68,0xf6,0x92,0x2c, + 0xfa,0xd6,0xb2,0x4a,0x69,0x56,0x00,0x34,0xbc,0xe0,0xcc,0xe7,0xee,0x40,0x87,0xfb, + 0xcf,0xdc,0xf6,0x19,0x3e,0x95,0xcb,0xea,0xba,0xb5,0xe7,0x88,0xf5,0x76,0xd6,0xef, + 0x15,0x55,0x47,0xc9,0x04,0x4b,0xc2,0x47,0x1a,0xf0,0x88,0x83,0xa0,0x0a,0x38,0x15, + 0xb9,0xe3,0x2d,0x6a,0x0d,0x46,0x68,0xf4,0x2d,0x18,0x95,0xd2,0x34,0xf2,0x55,0x3b, + 0x19,0xa4,0xe8,0xf3,0x3f,0xa9,0x63,0xd3,0xd0,0x60,0x57,0x1f,0x3c,0x87,0x7c,0x71, + 0xa3,0x60,0x77,0x1f,0x4a,0xf0,0xea,0xe2,0x1d,0x59,0x5d,0x6c,0xb6,0xff,0x00,0x33, + 0xb2,0x49,0x41,0x72,0x47,0xe6,0x59,0x33,0x09,0x59,0xdc,0x83,0x80,0x70,0x2a,0xa4, + 0xb7,0x0c,0x57,0x60,0x18,0xe7,0x20,0x77,0x34,0xd6,0x9a,0x25,0x93,0x68,0x3c,0x82, + 0x00,0x35,0x55,0x98,0x4b,0x23,0x12,0x78,0x1f,0x28,0xac,0x92,0x76,0xb5,0x89,0x68, + 0x7e,0x02,0x8f,0x56,0x6f,0xd2,0x99,0xc1,0xf9,0x53,0x81,0xe9,0xec,0x29,0x03,0x00, + 0xd8,0x27,0xa0,0x22,0x93,0x1b,0x01,0x73,0xc7,0xb5,0x76,0x50,0xa6,0xde,0xac,0x70, + 0x5a,0x92,0x46,0xc3,0x1c,0x70,0x49,0xef,0xe9,0x51,0xbc,0x9f,0x3f,0xca,0x7d,0xff, + 0x00,0xc9,0xa8,0x59,0x80,0x52,0x49,0xc0,0xef,0x51,0xef,0x24,0x00,0x79,0xae,0xe5, + 0x04,0x95,0x8d,0x5a,0xb9,0x66,0x43,0x8e,0x49,0xe0,0xe7,0x9e,0xf5,0x55,0x41,0x76, + 0x61,0xdb,0x19,0x15,0x24,0xaf,0xc7,0xb8,0xed,0x4e,0x89,0x42,0xa0,0xe7,0xa0,0xad, + 0x60,0xf5,0x49,0x15,0x14,0x40,0x36,0xb4,0x99,0x3c,0xf7,0xcd,0x7d,0x23,0xf0,0x63, + 0x1f,0x64,0xd4,0x95,0xba,0x09,0x20,0x6c,0x7e,0x0c,0x0f,0xf8,0x57,0xcd,0xd1,0x80, + 0x6e,0x31,0xd0,0x67,0xf2,0xaf,0xa3,0x7e,0x0d,0x32,0xf9,0x9a,0x95,0xb8,0x5d,0xdb, + 0x92,0x17,0x07,0xe8,0xc4,0x63,0x1f,0x8d,0x7a,0x18,0x3f,0x8c,0x2a,0xdd,0xd2,0x67, + 0xd1,0xf6,0xd7,0xa9,0x14,0x6a,0xc0,0x05,0x54,0xf5,0xe7,0x9f,0xa5,0x5e,0x7d,0x5d, + 0xd8,0xed,0xf9,0x4a,0xe0,0x72,0x38,0xed,0xe9,0x5c,0xb4,0xe3,0x08,0x63,0x7e,0xbd, + 0x87,0xbf,0xd6,0xb2,0x6f,0x26,0x9e,0x21,0xc3,0x7c,0x8b,0x92,0x71,0xce,0x2b,0xe8, + 0x23,0x17,0x19,0x5e,0xe7,0x85,0xca,0x75,0xed,0xa9,0x15,0x60,0xa7,0x25,0x37,0x1e, + 0x84,0x63,0x9a,0x7a,0x6b,0xa5,0x1d,0xd1,0xc9,0x66,0x3c,0x00,0x3d,0x3e,0xb5,0xe7, + 0x93,0x6a,0x25,0x15,0x03,0xe4,0xe4,0x80,0x33,0xc6,0x73,0x53,0xcf,0x74,0xbe,0x59, + 0x50,0x54,0x1e,0x17,0x6f,0x5e,0xa7,0x35,0x94,0xea,0x5a,0x4e,0xdb,0x94,0xa1,0xdc, + 0xeb,0x13,0x56,0x64,0x94,0x92,0xcc,0xa5,0x4f,0xcb,0x96,0xec,0x4f,0x6f,0xf0,0xad, + 0x78,0x75,0x45,0x11,0x90,0x92,0x96,0x27,0x20,0xf3,0xdf,0x3c,0x13,0x5e,0x43,0x3d, + 0xfb,0xb4,0xff,0x00,0xbb,0x63,0xb7,0x20,0x1e,0xff,0x00,0x95,0x5a,0x1a,0x92,0x46, + 0x8a,0xb1,0xb1,0x03,0x23,0x1d,0xa9,0xd1,0x96,0xad,0xd8,0x52,0x86,0xba,0x1e,0xa3, + 0x26,0xb4,0xec,0x8c,0x8e,0xcd,0x81,0xc1,0x27,0x03,0x83,0x59,0x6b,0xaa,0xf9,0x43, + 0x01,0x81,0x5f,0x41,0xfc,0xf9,0xae,0x22,0xef,0x56,0x76,0xdc,0x33,0x85,0x03,0x19, + 0x18,0xcf,0xff,0x00,0xae,0xb0,0xae,0x35,0x13,0x82,0xca,0xc4,0xab,0x63,0xef,0x1c, + 0x1a,0xeb,0x9d,0x5b,0x45,0x89,0x53,0xb3,0x3d,0xb6,0xdb,0x5b,0x31,0x0d,0xe8,0x01, + 0xf5,0x02,0xba,0x4b,0x2d,0x5c,0xce,0x9c,0x36,0x06,0x7b,0x57,0xcf,0xf6,0x1a,0xe3, + 0xef,0xda,0xa5,0x46,0xd1,0x8e,0xbc,0xfe,0x35,0xde,0xe8,0x57,0x8d,0x23,0x2a,0x33, + 0x60,0xb1,0x1f,0x5c,0x7e,0x1c,0x57,0x37,0x3d,0xd0,0xdd,0x34,0xcf,0x92,0x3f,0x6b, + 0x9d,0x6a,0x4d,0x47,0xe2,0x0e,0x9b,0xa5,0x6e,0xca,0x69,0x7a,0x64,0x6a,0x00,0xe8, + 0x1a,0xe1,0xcb,0xb7,0xfe,0x82,0x2b,0xe6,0x24,0x4d,0xa7,0x38,0xea,0x6b,0xd7,0x3e, + 0x3d,0xea,0x2b,0xaa,0x7c,0x5c,0xf1,0x14,0xa8,0x72,0x90,0xdc,0xc7,0x6c,0xb8,0x3d, + 0x04,0x30,0xa0,0xfe,0x79,0xaf,0x2e,0x87,0x66,0xef,0x52,0x5b,0x8f,0xeb,0x5e,0x2e, + 0x39,0xb7,0x56,0x57,0xe9,0xa7,0xdc,0x7a,0xb1,0x49,0x2b,0x1d,0x1d,0x9c,0x6b,0xe4, + 0xc5,0xb8,0x67,0x07,0x69,0xfc,0x2b,0xd5,0x3c,0x29,0x19,0xc8,0x0a,0x80,0xe4,0xe0, + 0xe4,0xf4,0xaf,0x33,0xb0,0x20,0x40,0x55,0xb9,0xda,0xdd,0x7d,0x33,0x5e,0x9d,0xe1, + 0x8c,0x87,0x01,0x30,0x06,0x7b,0xf4,0x35,0xc6,0xe4,0xef,0x14,0x8c,0xe6,0xf7,0xd4, + 0xf4,0x89,0xf4,0x82,0x63,0x2c,0xc3,0x9d,0x99,0x1e,0xe6,0xb2,0x6c,0xf1,0x05,0x85, + 0xf5,0x93,0x8e,0x31,0xbf,0x91,0xdc,0x75,0xfe,0x75,0xea,0x1a,0x54,0x7e,0x7c,0x2a, + 0xb2,0x05,0x2a,0xe3,0xf4,0xc5,0x70,0x1a,0xb5,0xaf,0xd9,0xee,0x6f,0xcc,0x63,0x68, + 0x5b,0x69,0x18,0x1f,0x65,0x22,0xbb,0xa8,0x61,0x7f,0x7d,0x1a,0xab,0xfa,0xd0,0xf4, + 0x72,0x9a,0x9e,0xf3,0x4f,0xb1,0xf0,0xcf,0xc4,0xc1,0xfe,0x9b,0x28,0x1f,0xde,0x35, + 0xe2,0xd2,0x77,0xc1,0xaf,0x66,0xf8,0x9c,0xe4,0x6a,0x12,0x67,0xd4,0xfb,0x57,0x8d, + 0x49,0x8c,0x57,0xe9,0x79,0x6d,0xfd,0x84,0x6c,0x7b,0x13,0xd6,0x57,0x33,0xdb,0x1f, + 0x8d,0x4b,0x6a,0x71,0x2a,0x9c,0xf4,0x3d,0x69,0x8e,0x70,0x39,0xa7,0x5b,0x60,0x48, + 0x0f,0xbd,0x76,0xc9,0x68,0x67,0x27,0x64,0x7d,0x01,0xe0,0x5b,0xe6,0x8c,0xc6,0x09, + 0xef,0x5f,0x4e,0xe9,0x97,0xc2,0x4b,0x65,0x04,0xf5,0x1d,0x2b,0xe4,0x0f,0x09,0x4d, + 0xe5,0xba,0x8c,0xe0,0x02,0x33,0x5f,0x47,0xe8,0x77,0xdf,0xba,0x03,0x3c,0x91,0xeb, + 0x5f,0x23,0x99,0x51,0xbb,0xba,0x39,0xb9,0x9e,0xc7,0x5b,0x78,0x46,0x4e,0x3a,0x55, + 0x0d,0xdb,0xbe,0x95,0x6e,0x46,0x0e,0x9b,0xb2,0x09,0xc7,0x26,0xab,0x63,0x9e,0x7a, + 0xd7,0x93,0x05,0x6f,0x52,0x1b,0x1c,0x0f,0x34,0xa4,0x9c,0x13,0xd3,0xda,0x9b,0x8f, + 0x7c,0xd2,0x93,0xc7,0x26,0xb4,0x8d,0xc9,0xb1,0x13,0xfa,0xd5,0x37,0x7c,0x8f,0x4f, + 0x7a,0x9e,0x56,0xf7,0xc7,0x1f,0xca,0xa8,0xb3,0x1a,0xd0,0x52,0x5a,0x6a,0x35,0x98, + 0xe6,0x9a,0x1c,0x0c,0x9f,0xe5,0x51,0xbb,0x64,0x63,0x83,0xfc,0xea,0x26,0x6c,0x8c, + 0xff,0x00,0x9e,0x28,0x2a,0x1a,0xd8,0x86,0xea,0xe0,0x2a,0x9e,0x71,0x5e,0x79,0xab, + 0xcc,0x24,0xe9,0xcd,0x75,0xd7,0xf3,0x00,0xa4,0x7b,0x57,0x0b,0x74,0x0c,0x8e,0xc4, + 0xf3,0x5c,0xf5,0x67,0xad,0x8f,0x73,0x0a,0x94,0x61,0x73,0x2d,0x22,0xc9,0xcf,0xa9, + 0xfe,0x75,0xd1,0xe9,0xf0,0x0c,0x83,0x8c,0xf1,0x59,0x71,0x26,0x18,0x57,0x41,0x6b, + 0x85,0x5e,0x4f,0x35,0x94,0xda,0x4a,0xe7,0x36,0x2a,0xa9,0xb7,0x12,0x85,0x03,0xda, + 0xae,0xda,0xdb,0x4d,0x7d,0x3a,0xdb,0xdb,0x21,0x77,0x63,0x80,0x07,0x35,0x9b,0x6a, + 0xb2,0xde,0xce,0xb6,0xd6,0xe3,0x73,0x39,0x00,0x0c,0x57,0xdd,0xdf,0x00,0xfe,0x07, + 0xc9,0xaa,0xdc,0x41,0x3d,0xc4,0x3b,0x9d,0x88,0x62,0x58,0x74,0xcd,0x7c,0xe6,0x75, + 0x9d,0x51,0xcb,0xe9,0x3a,0x95,0x1e,0xbd,0x89,0xc0,0x60,0x6a,0x62,0xea,0x72,0x41, + 0x18,0x5f,0x06,0x7f,0x67,0x8b,0xef,0x13,0x5d,0x43,0x25,0xec,0x1b,0xf7,0x63,0x82, + 0x0e,0x00,0xaf,0xd1,0x8d,0x03,0xf6,0x52,0xf0,0x8c,0x36,0x29,0x1e,0xa0,0x8a,0x58, + 0x8e,0x42,0xa8,0xe2,0xbd,0xab,0xc0,0xfe,0x0e,0xd2,0xbc,0x27,0x62,0x90,0x5a,0xc6, + 0xbb,0xc0,0x01,0x9f,0x1f,0xa5,0x7a,0x30,0x9b,0x68,0xaf,0xc2,0xb3,0x5e,0x2d,0xc6, + 0x63,0x2a,0xb9,0x29,0xd9,0x76,0x47,0xdd,0xd2,0xcb,0xa9,0x61,0x60,0xa9,0xc2,0x29, + 0xbe,0xac,0xf8,0x1f,0xc7,0xff,0x00,0xb0,0xc7,0x81,0x75,0xc5,0x33,0x59,0x2c,0x48, + 0xfd,0xf7,0x28,0x07,0xf0,0x22,0xbf,0x37,0x3e,0x36,0x7e,0xc4,0x97,0xbe,0x0a,0xf1, + 0x55,0xb3,0xe8,0xff,0x00,0xe9,0x1a,0x6d,0xd3,0x05,0xf9,0x41,0xc0,0x63,0xfc,0xab, + 0xf7,0x9b,0xc5,0x1a,0xf2,0xdb,0x22,0x5b,0x23,0x7c,0xf2,0x9c,0x1c,0x76,0x02,0xb2, + 0xee,0xfc,0x3f,0xa5,0x78,0x9a,0xca,0x15,0xbf,0x89,0x65,0xda,0xc1,0xc6,0x46,0x48, + 0x23,0xbd,0x46,0x03,0xc4,0x1c,0xdb,0x03,0x27,0x1a,0x15,0x5b,0x4b,0x74,0xd9,0xdc, + 0xb2,0xac,0x3d,0x4a,0x6a,0x75,0xa1,0x66,0x7f,0xff,0xd6,0xf9,0x33,0x44,0xd4,0xe4, + 0x42,0xa9,0x30,0xe0,0xf4,0x3d,0x6b,0xd2,0xb4,0x8b,0xf4,0x12,0x98,0xe4,0xfb,0xac, + 0x38,0xe7,0x8c,0xfe,0x15,0xe1,0xa2,0xe5,0xa1,0x6d,0x85,0x71,0xb6,0xbb,0x9d,0x22, + 0xfc,0x5c,0x05,0x11,0xe0,0x1e,0x33,0x5f,0x89,0xce,0xa7,0x36,0x8b,0x74,0x7c,0xdc, + 0xe1,0x6d,0x59,0xed,0x70,0xce,0xcd,0x88,0xc6,0x02,0x9e,0xe7,0xa5,0x6d,0xa8,0x1b, + 0x03,0x03,0xfe,0xe9,0xae,0x12,0xc6,0xec,0x3c,0x61,0x24,0xce,0xe5,0x03,0xff,0x00, + 0xd7,0x5d,0x1d,0xb5,0xe0,0x68,0x84,0x6c,0x7a,0x77,0xac,0xe7,0x51,0x37,0xae,0xe6, + 0x71,0x8b,0x3e,0xa6,0xfd,0x9e,0xb4,0x34,0xd6,0x3c,0x54,0x35,0x9b,0xf5,0x06,0x0d, + 0x30,0x2e,0x01,0x19,0xdd,0x24,0x83,0x03,0xfe,0xf9,0x19,0x3f,0x95,0x7b,0x15,0xca, + 0xad,0xbd,0xfd,0xc4,0x08,0xdb,0x96,0x39,0x5d,0x55,0x87,0x70,0x18,0xe2,0xb8,0xbf, + 0x83,0x50,0xb6,0x89,0xe0,0x49,0x75,0x05,0xf9,0x64,0xbb,0x32,0x4a,0x1b,0x3c,0xf3, + 0xf2,0x29,0xfc,0x00,0xad,0x78,0xe6,0x25,0x88,0xce,0x4e,0x73,0xf5,0xf7,0xaf,0xe7, + 0x2e,0x3e,0xcd,0x5e,0x2f,0x30,0x92,0x7f,0x67,0x45,0xe8,0xbf,0xe0,0x9f,0xb5,0xf0, + 0x96,0x07,0xd8,0x60,0xa0,0xde,0xf2,0xd4,0xea,0x8b,0x6e,0x42,0x7b,0x11,0x49,0x6c, + 0xfc,0x94,0x3e,0xbd,0x2a,0xac,0x12,0x87,0x5c,0x8e,0xb8,0xa7,0xd9,0x86,0xfb,0x6c, + 0x69,0xdb,0x76,0x4f,0xf3,0xaf,0xce,0xde,0xba,0x36,0x7d,0x8c,0x56,0x87,0xac,0x78, + 0x7f,0x51,0x7d,0x34,0xa2,0xa6,0x36,0x84,0x01,0xc7,0xa9,0xce,0x49,0xfa,0xe6,0xbd, + 0x0a,0x3d,0x42,0xde,0xe9,0x7c,0xec,0x18,0x8b,0x0e,0x41,0x20,0xf2,0x38,0x1c,0xfb, + 0xd7,0x91,0x69,0xf2,0xa8,0x0f,0x2b,0x9e,0x14,0x92,0x49,0xe3,0xa7,0x6a,0xd9,0xb1, + 0xbd,0x33,0x49,0x1a,0x6e,0xfb,0xc3,0x71,0x3e,0x9f,0xe4,0x57,0xa3,0x1a,0xde,0xf7, + 0xb3,0x6a,0xe8,0xca,0xae,0x0e,0x32,0x4a,0x7d,0x4f,0x40,0x79,0x1d,0x14,0x31,0xe4, + 0x37,0xdd,0x3e,0xbe,0xb5,0x0b,0x49,0xb8,0x71,0x5a,0xfa,0x6b,0x5a,0x98,0xbe,0xc9, + 0x28,0xde,0xae,0x39,0xf5,0x07,0xd4,0x1e,0xd5,0x87,0xa9,0xda,0xc9,0x61,0x29,0x47, + 0x04,0xa9,0xe5,0x5b,0xb1,0x15,0x8e,0x3f,0x03,0x2a,0x34,0x95,0x68,0x6b,0x1e,0xbe, + 0x47,0x1d,0x09,0xc6,0x55,0x1d,0x26,0xac,0xff,0x00,0x32,0x19,0x18,0x63,0x15,0x3d, + 0x8b,0x72,0x41,0xe8,0x78,0xac,0x93,0x36,0x2a,0xc5,0x8c,0xd8,0x93,0x19,0xaf,0x0a, + 0x9d,0x6b,0x54,0x4c,0xef,0xa9,0x45,0xfb,0x36,0x8b,0x71,0x1f,0x26,0xe9,0xe3,0xc6, + 0x32,0x78,0xa5,0x9d,0xfc,0xa9,0xc4,0x8a,0x71,0xce,0x78,0xf5,0xa8,0x6f,0x0e,0xcb, + 0xa4,0x7e,0xc7,0x8a,0x75,0xef,0x28,0x18,0x0a,0xe8,0x9b,0xb4,0x27,0x15,0xd1,0xdc, + 0x85,0x1b,0xb8,0xb7,0xd5,0x1d,0x48,0x4d,0x37,0xc5,0x1a,0x4d,0xce,0x83,0xad,0xc1, + 0x1d,0xd5,0xbd,0xd4,0x2d,0x0d,0xc4,0x32,0x80,0xc9,0x2c,0x4e,0x30,0x41,0x07,0xda, + 0xbf,0x1f,0x7e,0x34,0xff,0x00,0xc1,0x3e,0x7c,0x5f,0xa7,0x78,0x8b,0x58,0xd7,0x3e, + 0x1a,0x35,0xbd,0xee,0x82,0x98,0xba,0xb7,0xb3,0x92,0x52,0x2f,0x02,0x1c,0x99,0x22, + 0x8d,0x02,0x91,0x21,0x4c,0x71,0xc8,0x2c,0x31,0x8c,0x9a,0xfd,0x79,0xd2,0x2c,0x54, + 0x22,0x5e,0xdd,0x12,0x98,0x19,0x50,0xa7,0x04,0xfd,0x69,0xf7,0xba,0x97,0xef,0xf3, + 0x16,0x30,0xa7,0xb7,0x6c,0x57,0xe9,0xbc,0x2f,0xc4,0x79,0x9e,0x57,0x4a,0x38,0x8a, + 0x73,0xb4,0x9f,0xce,0xeb,0xcd,0x7f,0x4c,0xf9,0x6c,0x66,0x5d,0x42,0xbd,0x49,0x53, + 0x4a,0xf1,0xfc,0x9f,0x93,0x3c,0x6f,0xf6,0x67,0xf8,0x2b,0x2f,0xc3,0xaf,0x87,0xba, + 0x76,0x9f,0xa9,0x87,0xb4,0xbb,0x65,0x12,0xcf,0x0a,0xe0,0x31,0x66,0x19,0xf9,0xcf, + 0x6c,0x74,0xc6,0x2b,0xe9,0x3b,0xcb,0x0b,0x74,0x8b,0x29,0x90,0x47,0x7c,0xf5,0xa8, + 0x93,0x5c,0x8d,0xe1,0x52,0x81,0x55,0x88,0x19,0xff,0x00,0x1a,0xc1,0xbe,0xd4,0xd9, + 0x73,0x96,0xcd,0x76,0xe6,0x98,0xfc,0x17,0xb3,0x9c,0xd7,0xbf,0x39,0x6a,0xe5,0xe6, + 0xce,0x6a,0x54,0xb1,0x33,0x9a,0x8b,0xd1,0x2d,0x91,0x9b,0x76,0xc6,0x22,0x54,0xff, + 0x00,0x3a,0xc5,0xb6,0xbd,0xf2,0x2e,0xc9,0xeb,0x9a,0x6d,0xd5,0xf7,0x98,0xdc,0x9e, + 0x2b,0x9d,0xb9,0x91,0xbe,0xf2,0x1d,0xa4,0x1e,0x0d,0x7e,0x70,0xf1,0xaa,0x15,0xa3, + 0x51,0x74,0x3e,0xba,0x86,0x11,0xca,0x9b,0x8b,0xdd,0x9e,0xbd,0x6f,0x32,0x5d,0xc1, + 0x83,0x83,0x91,0xf4,0xaf,0xc9,0xcf,0xf8,0x29,0x9f,0xc1,0xe5,0xd4,0xfc,0x3d,0xa3, + 0xfc,0x60,0xd2,0xed,0xff,0x00,0xd2,0xb4,0x79,0x57,0x4b,0xd5,0x5d,0x47,0x2f,0x69, + 0x39,0xff,0x00,0x46,0x91,0xb0,0x32,0x4c,0x73,0x1d,0x99,0x3d,0x15,0xcd,0x7e,0x87, + 0x69,0x9e,0x21,0x9a,0xd8,0x86,0x90,0x36,0x33,0xc9,0xeb,0x59,0x7f,0x10,0x6c,0xb4, + 0x3f,0x8a,0x9e,0x0f,0xd7,0xbc,0x07,0x7e,0x9e,0x65,0xbe,0xaf,0xa7,0xcd,0x6b,0x28, + 0x23,0xa1,0x91,0x48,0x56,0x1e,0xe1,0xb0,0x46,0x3a,0x11,0x5f,0xa9,0x70,0xaf,0x12, + 0xbc,0x0e,0x3a,0x86,0x36,0x0f,0xe1,0x6b,0xe6,0x9e,0xeb,0xee,0x3e,0x77,0x17,0x97, + 0x39,0x42,0x74,0xa4,0xb4,0x67,0xf3,0x33,0xe1,0xbb,0x62,0x5d,0x46,0x38,0xaf,0x7d, + 0xd1,0xa0,0xf2,0xe1,0x04,0x83,0xc5,0x79,0xbe,0x9d,0xa1,0x5d,0xe8,0xda,0xc5,0xde, + 0x8f,0xa8,0x26,0xdb,0xab,0x0b,0x99,0x6d,0x66,0x04,0x63,0xf7,0xb0,0x39,0x8d,0xf8, + 0xff,0x00,0x78,0x1c,0x57,0xaf,0x58,0xc3,0xb6,0x0e,0x9d,0xab,0xfa,0x57,0x3e,0xc7, + 0x46,0xb5,0xa7,0x17,0xa3,0x3f,0x1c,0xc7,0xb6,0xa4,0xe0,0xf7,0x21,0x90,0x33,0x30, + 0x0b,0xd4,0xff,0x00,0x9c,0xd7,0x5b,0xaf,0x5c,0x7f,0xc2,0x1b,0xe1,0xf5,0xd1,0xad, + 0xce,0xdd,0x57,0x55,0x88,0x3d,0xd9,0x1f,0x7a,0x1b,0x76,0xc1,0x48,0x7d,0x8b,0x70, + 0xcf,0xf8,0x0a,0xd0,0xf0,0xbe,0x91,0x6f,0x0a,0xdc,0x78,0x9b,0x53,0x50,0x6c,0x74, + 0xd0,0x1f,0x6b,0x74,0x96,0x73,0xfe,0xae,0x2f,0x7c,0x9f,0x99,0xbd,0x87,0xbd,0x79, + 0x66,0xa9,0x79,0x75,0xad,0x6a,0xd7,0x1a,0x9d,0xe3,0x17,0x92,0x77,0x67,0x24,0xfd, + 0x73,0xff,0x00,0xea,0x15,0xf0,0x98,0xec,0x4a,0x72,0x54,0x6f,0xeb,0xfe,0x5f,0x33, + 0x0a,0x10,0xe4,0x87,0x3f,0x57,0xb1,0x92,0x8f,0xe5,0xa8,0xd9,0x90,0x7a,0x9c,0xf3, + 0x48,0x85,0x8f,0xef,0x9c,0xe3,0x76,0x7f,0x2a,0x9e,0xe9,0x0e,0x11,0x33,0xf3,0x3f, + 0xa0,0xed,0xde,0xaa,0xc8,0x41,0x8c,0xff,0x00,0xb3,0xd2,0xa2,0x92,0x44,0xd9,0xde, + 0xcc,0xac,0xbb,0x77,0x49,0x23,0x72,0x77,0x63,0x8e,0xd4,0x81,0x88,0x90,0xb2,0x72, + 0x00,0xfd,0x6a,0x22,0xa5,0x46,0xd0,0xdd,0x06,0x4f,0x7e,0xbd,0x69,0xb1,0x3f,0xee, + 0xb7,0x37,0xf1,0x1f,0xd2,0xba,0xe2,0x9b,0xd0,0x76,0x27,0x2d,0xb2,0x40,0x71,0xcb, + 0x13,0xee,0x78,0xa8,0x65,0x96,0x56,0x21,0x73,0x81,0xfc,0xea,0x21,0x27,0x99,0x36, + 0xee,0xca,0x39,0xa6,0xb3,0x02,0xe7,0xb6,0x39,0x15,0xdd,0x46,0x29,0x2b,0x1a,0xae, + 0xc4,0x8e,0x72,0xaa,0xbe,0xa7,0xd6,0x9f,0x13,0x2f,0x95,0xcf,0x27,0x27,0xff,0x00, + 0xaf,0x50,0x15,0x04,0x67,0xae,0x05,0x46,0xae,0x00,0x00,0x7a,0xd6,0xd6,0xbb,0x2a, + 0xc5,0x86,0x91,0x98,0xee,0x1e,0xbd,0x2a,0xe4,0x87,0xf7,0x79,0x1c,0x60,0x01,0x54, + 0xc0,0x40,0x46,0x07,0xbd,0x5c,0x51,0x90,0x46,0x32,0x07,0x7a,0xd2,0x9b,0xf7,0x8a, + 0x51,0xd4,0x82,0x16,0x26,0x55,0xc8,0xe7,0x39,0xaf,0xa0,0xbe,0x0e,0x4c,0x53,0x5b, + 0xbc,0xb6,0x5e,0x7c,0xdb,0x37,0x23,0x9c,0x72,0x8c,0xa7,0xfc,0x6b,0xc0,0xe3,0x0a, + 0xb2,0x73,0xdc,0xf5,0xaf,0x60,0xf8,0x4f,0x33,0x43,0xe3,0x0b,0x49,0x3e,0xe8,0x99, + 0x64,0x80,0xe4,0xf5,0xf3,0x14,0x81,0xc9,0xf7,0xc5,0x76,0x61,0x1a,0x55,0x95,0xca, + 0x92,0xbd,0x36,0xac,0x7d,0x15,0x79,0x3c,0x8c,0xc4,0x3f,0xcb,0xb3,0xe6,0x23,0xb6, + 0x3d,0x6b,0x22,0x56,0x70,0xbb,0xb1,0x80,0xc7,0xaf,0x51,0x8a,0xe9,0x6f,0x74,0xf0, + 0xcb,0xe6,0xb9,0xf9,0xb1,0xc8,0xc7,0x6a,0xe6,0x2e,0xe0,0x96,0x06,0xdf,0x83,0xb0, + 0x73,0xd6,0xbe,0x83,0x9a,0xf6,0x67,0x82,0x8c,0x59,0x8c,0x8c,0x36,0x31,0x2e,0x58, + 0xe4,0xf0,0x07,0xf9,0xfc,0x2a,0x7b,0x16,0x03,0x7e,0x5f,0x93,0xc7,0x23,0xa6,0x31, + 0xd6,0xa8,0x5e,0x3e,0x63,0x2b,0xe5,0x93,0x91,0xd8,0xe7,0xa5,0x63,0xdb,0x5e,0xdc, + 0x5a,0x02,0xd2,0x72,0xad,0x9d,0xb9,0xed,0x9a,0xce,0x6e,0xd3,0x4e,0xc5,0xd8,0x4b, + 0xeb,0xd7,0x5b,0x99,0x10,0xb2,0x8e,0x0b,0x02,0xbc,0x0c,0x83,0xda,0xab,0x1b,0xb3, + 0x07,0x0e,0xc5,0x98,0xf3,0xb8,0xfa,0xf4,0xcd,0x64,0x6b,0x92,0xca,0xee,0x93,0xa7, + 0xcd,0xd8,0xae,0x79,0xe7,0xd0,0x7b,0x55,0x78,0xe5,0x95,0xa2,0x55,0x20,0x75,0x18, + 0xef,0xed,0x58,0x46,0xa7,0xbf,0x27,0x62,0xa5,0x13,0x5e,0x6b,0xf9,0x1c,0x96,0x07, + 0x7f,0x70,0x3d,0xfd,0x6a,0x94,0x97,0x12,0x49,0x27,0xce,0x76,0x82,0x33,0xf8,0xd5, + 0x79,0xd0,0x8c,0x05,0x18,0x6c,0xf2,0x08,0xe0,0x7d,0x2a,0xed,0xb2,0x13,0x19,0x12, + 0x2e,0x09,0x07,0x19,0xe7,0xa7,0x7a,0xd9,0xcb,0x41,0x58,0x9a,0xda,0x46,0x66,0xca, + 0x93,0x9c,0x75,0x1f,0xe2,0x6b,0xd9,0xbc,0x18,0xef,0x3c,0xf0,0x09,0x86,0x15,0x1b, + 0x24,0xe7,0x9c,0x0e,0x6b,0xca,0x74,0x9b,0x17,0x95,0xc2,0xa8,0xc0,0x03,0x8c,0x8c, + 0xd7,0xaa,0x5d,0x4e,0x3c,0x37,0xe0,0xcd,0x67,0x5e,0x93,0x0a,0x34,0xfd,0x3a,0x79, + 0xb8,0xe9,0xbb,0x61,0x0a,0x3e,0xa4,0x9a,0x98,0x45,0xde,0xe6,0x94,0xd2,0x72,0x47, + 0xe7,0x37,0x8a,0x75,0x21,0xac,0xf8,0xbb,0x5a,0xd4,0xc1,0x04,0x5c,0xea,0x37,0x32, + 0x02,0x3a,0x15,0x32,0xb0,0x53,0x9f,0xa0,0x15,0x9a,0xc5,0x4b,0x84,0xee,0x79,0x26, + 0xb2,0x56,0x37,0x4d,0xa5,0xba,0x8e,0x0e,0x7d,0x47,0x7a,0xd5,0x70,0x50,0x29,0x3d, + 0x40,0xe6,0xbc,0x7c,0x44,0xef,0x29,0x33,0xba,0xd6,0x56,0x3a,0x9d,0x37,0xf7,0x90, + 0xb1,0x18,0xcf,0x04,0x0f,0x7a,0xf4,0xbf,0x0b,0x48,0x04,0x8a,0x0e,0x47,0xb6,0x33, + 0xcf,0xb5,0x79,0x8e,0x9e,0xe8,0xaa,0x1b,0xb3,0x28,0xfe,0x75,0xda,0x78,0x6a,0xf0, + 0x45,0x71,0x93,0xc0,0x53,0xd0,0xf6,0xe6,0xb9,0x26,0xed,0x67,0x73,0x96,0xac,0x5e, + 0xa7,0xd4,0xfa,0x0a,0xc5,0x71,0x6e,0xa1,0x38,0x2a,0x47,0x5f,0xf3,0xeb,0x59,0x1e, + 0x2c,0xb2,0x48,0x6d,0x2f,0xe6,0x24,0x82,0x20,0x90,0x2f,0xe2,0x01,0xab,0x9e,0x08, + 0xc5,0xcc,0x6b,0x21,0x20,0xf2,0x41,0x00,0xfa,0xd6,0x87,0xc4,0x08,0x92,0x2d,0x22, + 0xec,0xf7,0x16,0xef,0xf9,0xf1,0x5f,0x55,0x97,0xa7,0x3a,0x4e,0x6d,0x74,0x3a,0xf2, + 0xc7,0x66,0xfb,0x9f,0x99,0x1f,0x13,0xf1,0xfd,0xa9,0x20,0xf5,0x3c,0xd7,0x8d,0xc8, + 0x7a,0xf1,0xc5,0x7b,0x27,0xc5,0x03,0xff,0x00,0x13,0x56,0xcf,0x72,0x6b,0xc7,0x24, + 0x04,0x66,0xbe,0xcf,0x2e,0xff,0x00,0x77,0x81,0xee,0x45,0xdd,0x26,0x8a,0x0d,0xda, + 0x9f,0x6f,0x80,0xe3,0x1d,0x33,0x4d,0x90,0x73,0xc5,0x25,0xb9,0x05,0xc6,0x7a,0x8a, + 0xec,0x61,0x27,0x64,0x7a,0x87,0x87,0x24,0x2a,0xca,0x4f,0xad,0x7b,0xbe,0x8d,0x77, + 0xb5,0x54,0xfe,0x7c,0xd7,0xcf,0xfe,0x1f,0x3d,0x38,0xce,0x0f,0x5a,0xf5,0xbd,0x2e, + 0xe0,0xaa,0xa8,0xf4,0xaf,0x9c,0xc7,0xea,0x8e,0x26,0xec,0xf5,0x3d,0xaa,0xd6,0x7f, + 0x31,0x76,0x8a,0x90,0x2f,0x61,0xf8,0x8f,0x5a,0xe5,0xb4,0xbb,0xd0,0xc0,0x2e,0x79, + 0xe2,0xba,0x95,0x21,0x86,0xe1,0x5e,0x14,0xb4,0x1d,0xf4,0x1d,0x48,0xc4,0x0c,0x81, + 0xd2,0x9d,0xbb,0xbd,0x46,0xc7,0x8c,0x7a,0xe6,0x9c,0x6e,0x2b,0x94,0xe5,0x20,0x93, + 0xcf,0x4a,0xa6,0xca,0x59,0x80,0x1d,0x4f,0xad,0x5f,0x75,0x3e,0x99,0xcf,0x7a,0x9e, + 0xd6,0xd5,0x9d,0xf3,0x8a,0xa7,0x34,0x95,0xd8,0x8c,0x93,0x6c,0xe4,0x71,0xfa,0xd6, + 0x74,0xd9,0x4c,0x9e,0xe2,0xbd,0x36,0xdf,0x48,0xf3,0x53,0x24,0x63,0xd2,0xb8,0x9d, + 0x7a,0xd3,0xec,0xb2,0xf0,0x0e,0x07,0x51,0x58,0xac,0x44,0x1d,0xd5,0xcd,0x69,0x24, + 0xd9,0xc3,0x5f,0x12,0x47,0x7c,0xd7,0x3b,0x3c,0x7b,0xb8,0xad,0xfb,0xb2,0x5b,0x3e, + 0x9c,0xd6,0x1c,0xae,0xa3,0x3d,0xbe,0x95,0xc9,0x2a,0xaa,0xed,0x9e,0x85,0x5a,0xdc, + 0xb1,0x2b,0xa8,0xc7,0x53,0xc8,0xe9,0x57,0x23,0x77,0x77,0x11,0xc5,0xc9,0x63,0x81, + 0x54,0x77,0xb3,0xb6,0xd4,0xe4,0x0e,0xe4,0xd7,0xb0,0x7c,0x31,0xf0,0x64,0x9a,0xee, + 0xa7,0x13,0xba,0x6e,0x40,0x46,0x38,0xcf,0x7a,0xe1,0xc6,0xe2,0xe3,0x42,0x8c,0xab, + 0x54,0x7a,0x23,0x8a,0x94,0x27,0x88,0xa8,0xa9,0xc3,0x76,0x7a,0xf7,0xc1,0x0f,0x85, + 0xf7,0x1a,0xb5,0xfc,0x37,0x37,0x31,0x6e,0x77,0x60,0x46,0x47,0x41,0x5f,0xaf,0x3e, + 0x04,0xd0,0xec,0x3c,0x1b,0xa4,0xc7,0x0a,0x2a,0xfd,0xa1,0x94,0x64,0xe3,0xa6,0x6b, + 0xc7,0x7e,0x13,0x78,0x16,0xd3,0xc3,0x1a,0x4c,0x77,0xd3,0xc6,0x04,0x85,0x46,0xde, + 0x07,0x1c,0x75,0xaf,0x59,0x17,0x4f,0x24,0x9b,0xc9,0x27,0x26,0xbf,0x9b,0xb8,0xa3, + 0x88,0x2a,0x66,0x38,0x86,0xa2,0xf4,0x3f,0x5b,0xc9,0xf2,0xa8,0xe0,0xe8,0x2e,0xe7, + 0xaf,0x69,0xfa,0x97,0x9b,0x82,0x4f,0xbd,0x6a,0xde,0xea,0x4b,0x6b,0x6c,0xd3,0x3b, + 0x6d,0x00,0x77,0xaf,0x2f,0xb1,0xbf,0x68,0x88,0x22,0xb0,0x7c,0x4d,0xe2,0x09,0x66, + 0x4f,0xb3,0x23,0x13,0xeb,0x8a,0xf9,0xee,0x5f,0x65,0x4d,0xb6,0x77,0x4a,0x9a,0x94, + 0x88,0xaf,0x75,0x79,0x35,0x3d,0x51,0xa5,0x27,0x2a,0x1b,0x8f,0xc2,0xbd,0x57,0xc3, + 0xb7,0x27,0xc9,0x0b,0x9c,0x9c,0x57,0x87,0x69,0x71,0x3b,0x38,0x27,0x35,0xec,0x1a, + 0x16,0xf0,0x83,0x8c,0x57,0x93,0x4d,0xbe,0x77,0xe6,0x76,0x4e,0x09,0xd3,0xe5,0x3f, + 0xff,0xd7,0xf8,0xde,0xf2,0xde,0x29,0x3e,0x74,0x1f,0xfd,0x7a,0xa7,0x65,0x78,0xd6, + 0x97,0x00,0x27,0x03,0x35,0x6d,0x26,0x04,0xf9,0x52,0x0e,0xa7,0x00,0xd6,0x6d,0xf8, + 0x11,0xb8,0x29,0xd7,0x1d,0x6b,0xf1,0x3a,0x9e,0xfc,0x79,0xfa,0x9f,0x3f,0x6d,0x3d, + 0xe3,0xd4,0xed,0x2f,0x83,0x2c,0x73,0x6e,0x23,0xd4,0x7a,0xd7,0x61,0x63,0x2b,0x4a, + 0xcb,0xb7,0x9c,0x9e,0x3f,0xc2,0xbc,0x6f,0x46,0xbe,0x7d,0xbe,0x5b,0xf2,0x47,0x20, + 0xd7,0xa9,0xf8,0x5a,0xe4,0x5c,0xde,0xdb,0x40,0x58,0x1d,0xd2,0xa0,0xe7,0xdd,0x85, + 0x79,0xd8,0xc7,0xcb,0x17,0x51,0x69,0xa0,0xe9,0x53,0xbc,0x92,0x3f,0x45,0x74,0x8f, + 0xf8,0x97,0xf8,0x46,0xce,0xc5,0x30,0x11,0x22,0x89,0x3f,0x4c,0x9a,0xae,0x92,0x90, + 0x7d,0x87,0xa7,0x6a,0x50,0xec,0x34,0xe8,0x50,0x72,0x3e,0x5e,0xbe,0xc2,0xa9,0x87, + 0x39,0xca,0xf0,0x7d,0x2b,0xf9,0x47,0x35,0xa8,0xe7,0x5e,0x72,0x91,0xfd,0x09,0x83, + 0x82,0x85,0x38,0xc5,0x74,0x3a,0x2b,0x4b,0x9c,0x1c,0x8e,0x95,0xb9,0x62,0xe1,0x6e, + 0x8c,0xc7,0xa2,0x23,0x1f,0xe9,0x5c,0x4c,0x52,0x84,0x23,0x6f,0x4e,0xb8,0xae,0x86, + 0xd6,0x6d,0xf1,0xc8,0x17,0x3f,0x30,0x55,0xfc,0xcd,0x79,0x14,0xbe,0x34,0x7a,0x6d, + 0x7b,0xb7,0x3a,0xe9,0x2f,0x8a,0xda,0x24,0x2b,0xd5,0xc8,0x07,0xf1,0xe4,0xd6,0xa5, + 0x8d,0xea,0x43,0x76,0x03,0x1c,0x05,0x00,0x7e,0x1d,0x6b,0x93,0xdd,0x9b,0x88,0x13, + 0xb2,0x29,0x3f,0x9f,0x4a,0x94,0x4b,0x89,0x98,0xf6,0xdd,0x9f,0xc0,0x74,0xaf,0x56, + 0x9a,0x49,0xf3,0x18,0xd4,0x6d,0xa4,0x7b,0xc6,0x97,0xac,0xae,0x57,0x60,0xc0,0xf5, + 0xae,0xc0,0x5e,0xc7,0x7d,0x6e,0xf6,0x92,0xb0,0xd8,0xeb,0x8e,0x79,0x20,0xf6,0x3f, + 0x85,0x78,0x36,0x9f,0xa8,0x1d,0xa0,0x67,0xf0,0xae,0xf7,0x47,0x9e,0x6b,0x99,0x56, + 0x28,0x43,0x3c,0x8c,0x78,0x55,0xff,0x00,0x3d,0x2b,0xb6,0x8e,0x36,0x69,0xfb,0x3d, + 0xef,0xd0,0xe0,0xaf,0x84,0x8b,0xf7,0x9e,0x96,0x2b,0xea,0x11,0x4d,0xa7,0xdc,0x9b, + 0x7b,0x8f,0x4c,0xab,0x0e,0x8c,0x3d,0x45,0x5a,0x48,0x6e,0x2c,0xae,0x12,0x3b,0x95, + 0x28,0xce,0xa1,0xd7,0x3d,0xd5,0xba,0x57,0x51,0xad,0xc7,0x65,0xa7,0xe9,0xe2,0xeb, + 0x58,0x0a,0xd2,0x45,0xf3,0xc7,0x1e,0x79,0xc8,0xf5,0x3e,0x9e,0xa2,0xb9,0xcf,0x0d, + 0x6b,0x7a,0x7f,0x89,0x96,0x48,0x35,0x41,0xb5,0xc4,0xa7,0xc9,0x99,0x78,0x64,0x18, + 0xe9,0xee,0x33,0xda,0xb8,0x6a,0x70,0xbb,0xe6,0x92,0xa7,0x2b,0x49,0xd9,0xc5,0x3e, + 0x9e,0x4f,0xf4,0x37,0x59,0xba,0x74,0xd7,0x34,0x6e,0xb6,0x6d,0x7e,0x9f,0xaf,0xe0, + 0x5c,0xbf,0xda,0x62,0x49,0x07,0x6a,0xbf,0x66,0xab,0x38,0x46,0x97,0xee,0xaf,0x27, + 0xf0,0xad,0x0b,0xff,0x00,0x0e,0xdc,0xc1,0x10,0xc1,0xf3,0xad,0xcf,0xfc,0xb4,0x4f, + 0x4f,0x71,0xda,0xaa,0xc8,0xf1,0xda,0xc2,0x12,0x31,0x84,0x51,0x8f,0x7a,0xce,0x9e, + 0x57,0x5f,0x0f,0x5d,0xbc,0x54,0x79,0x74,0xeb,0xd7,0xfc,0xd1,0x92,0xc5,0x53,0xab, + 0x49,0x46,0x93,0xb9,0x5f,0x5a,0xd6,0x76,0xc6,0x51,0x5b,0x04,0xf0,0x31,0xed,0x5c, + 0x4a,0xea,0xa7,0x71,0x21,0xf2,0x58,0xf3,0xef,0x51,0xea,0x9f,0x3b,0x33,0x1c,0xe0, + 0xfe,0x63,0xde,0xb9,0x69,0x64,0xf2,0x5c,0x96,0xfc,0x71,0xc6,0x7d,0xfe,0xb5,0xdb, + 0x2c,0x44,0xa7,0x3b,0xc9,0x9a,0x47,0x0f,0x15,0x0b,0x44,0xf4,0xb4,0xd5,0x8c,0x76, + 0xe9,0x2a,0x13,0xe5,0xfd,0xc7,0x1d,0x76,0x93,0xd0,0x8f,0x63,0x51,0x5e,0xea,0x5e, + 0x62,0xf0,0x78,0xc5,0x72,0x5a,0x4d,0xe2,0xcd,0x0c,0xd6,0xcc,0x78,0x2b,0xf3,0x7b, + 0x83,0xde,0xa9,0x47,0x73,0x2a,0x6f,0xb4,0x97,0xef,0x44,0xd8,0x1f,0xee,0xf6,0xac, + 0xab,0xcb,0x75,0xdc,0x54,0xe9,0x5d,0xfa,0x1d,0x0b,0xdd,0x0c,0x9c,0x1f,0x7a,0x1a, + 0x4f,0x32,0x10,0xdd,0xeb,0x9a,0x37,0x3f,0x36,0x33,0xcd,0x6d,0xe8,0xd3,0xaf,0xda, + 0x51,0x5c,0x06,0x50,0xc1,0xb0,0x7a,0x71,0x5f,0x3d,0x35,0xcd,0x57,0x91,0x75,0x3d, + 0x8a,0x7e,0xed,0x3e,0x63,0xd1,0x74,0x2d,0x01,0x86,0x9a,0x65,0xbe,0x45,0x0d,0x31, + 0xdc,0xaa,0xdf,0x78,0x2e,0x3b,0xfd,0x6b,0x36,0x5d,0x1a,0xdb,0x4d,0x95,0xe7,0x84, + 0x05,0x27,0x24,0xe2,0xac,0x49,0xad,0xc9,0x2f,0xca,0x64,0xc7,0xb0,0xff,0x00,0x1a, + 0xa5,0x75,0x3e,0xf8,0x19,0xb2,0x4f,0x07,0x19,0xaf,0xd1,0x28,0xd2,0xa3,0x0a,0x70, + 0x85,0x35,0xb2,0x3e,0x56,0x55,0x2a,0x4a,0x72,0x9c,0xde,0xe7,0xe2,0x67,0xed,0x11, + 0xe1,0x48,0x74,0x3f,0x8e,0xde,0x23,0xfb,0x2a,0x84,0x87,0x50,0x96,0x2d,0x45,0x14, + 0x0c,0x00,0x6e,0x10,0x6f,0xc6,0x3d,0x5d,0x58,0xfd,0x4d,0x73,0xfa,0x36,0x97,0x3e, + 0xa1,0x34,0x36,0x36,0xe9,0xbe,0x49,0x99,0x55,0x54,0x75,0x24,0x9c,0x01,0x5e,0xe7, + 0xfb,0x52,0x59,0xab,0xfc,0x53,0x8a,0xe3,0x1c,0xbe,0x9f,0x10,0x27,0xd7,0x6c,0x8f, + 0xfe,0x35,0xc8,0x78,0x7c,0x43,0xe1,0xaf,0x0d,0xdf,0x78,0xaa,0x60,0x3c,0xf5,0x5f, + 0xb3,0xd9,0xaf,0x42,0x66,0x71,0xf3,0x38,0xe9,0xf7,0x17,0xf5,0x35,0xfb,0xe6,0x5f, + 0x98,0x7f,0xc2,0x4d,0x0a,0xb5,0x3a,0x47,0xf2,0xd0,0xfc,0x87,0x3a,0xa0,0x9e,0x65, + 0x52,0x0b,0x6b,0xff,0x00,0xc1,0x39,0x3f,0x88,0xba,0x95,0xbd,0xa8,0xb7,0xf0,0x86, + 0x92,0xc1,0xad,0xf4,0xfc,0x89,0xca,0xf4,0x96,0xe0,0xe3,0x7b,0xfe,0x07,0xe5,0x1e, + 0xc2,0xbc,0xc8,0xc0,0xb1,0xa6,0xf2,0x3a,0x8c,0xf1,0x56,0xd5,0xa6,0xb8,0x99,0xee, + 0x26,0x39,0x67,0x62,0x4e,0x7a,0x9c,0xd4,0x57,0x6e,0x31,0xd3,0x04,0x70,0x6b,0xe7, + 0xe3,0x39,0x4a,0x5e,0xd2,0x5b,0xb7,0x7f,0xeb,0xd0,0xf3,0xe7,0x25,0x27,0x75,0xb1, + 0x81,0x21,0x69,0x26,0xe7,0x8c,0x8d,0xa3,0x3d,0xbd,0xff,0x00,0x1a,0xa3,0x2a,0xa2, + 0xa3,0xe7,0xd8,0x56,0x9c,0xc9,0xf3,0xee,0x1d,0x14,0x71,0xf5,0xac,0xe6,0x39,0x42, + 0x71,0xce,0x79,0xaf,0x56,0x94,0xec,0x62,0xd7,0x72,0x8b,0x90,0x13,0x77,0x76,0xfe, + 0x55,0x0a,0x29,0x31,0x10,0x4f,0xb7,0x35,0x72,0x45,0x0c,0x02,0xa8,0x18,0x15,0x46, + 0x65,0xf2,0xd7,0x18,0xea,0x3f,0x9d,0x7a,0x54,0xaa,0x5f,0x61,0xa4,0x88,0x93,0x08, + 0xa5,0x79,0x24,0xff,0x00,0x4a,0x8b,0x39,0x63,0xb7,0x07,0x1d,0xe8,0x2f,0x96,0x0d, + 0xdb,0x15,0x03,0x39,0x01,0xc8,0xe9,0xfa,0xd7,0xa9,0x05,0x74,0x86,0x3a,0x59,0xb0, + 0x38,0xef,0xfe,0x34,0x47,0x92,0xa0,0x93,0xda,0xa9,0x33,0x06,0x23,0x77,0x1c,0x55, + 0x80,0x41,0x00,0xf7,0x02,0xb6,0x94,0x74,0xd0,0xaf,0x23,0x44,0x3e,0xcc,0x01,0xce, + 0x45,0x68,0xe3,0x2b,0xed,0x58,0xa1,0xc0,0x20,0xfa,0x8a,0xd6,0x8d,0xb6,0xaf,0xaf, + 0xa8,0xab,0xa3,0x12,0x90,0xc8,0x89,0x69,0xc0,0x1d,0x1a,0xbd,0x73,0xc0,0x12,0x8b, + 0x7d,0x7e,0xc2,0x65,0xff,0x00,0x96,0x73,0xc6,0xd9,0xfa,0x30,0xaf,0x20,0x8b,0x2b, + 0x30,0xf6,0xaf,0x51,0xf0,0x73,0x9f,0xed,0x2b,0x76,0xee,0x18,0x57,0x4d,0x25,0x6a, + 0xab,0xe4,0x4d,0x49,0x25,0x4a,0x47,0xde,0x3a,0x86,0x9e,0x08,0x74,0x60,0xbb,0x73, + 0x85,0x3d,0xf9,0xe4,0x63,0xf0,0xaf,0x3c,0xd5,0x34,0xd9,0x22,0xf9,0x98,0x92,0xa0, + 0x9f,0x97,0x1d,0x71,0xef,0x5e,0xc7,0x63,0x6e,0x35,0x3d,0x0f,0x4d,0xd4,0x41,0xff, + 0x00,0x5f,0x02,0x96,0x23,0xae,0xf8,0xf2,0x8d,0xfc,0xab,0x9d,0xd6,0xb4,0xd8,0xfc, + 0xa2,0xa5,0x4b,0x94,0x23,0x0c,0x3e,0x9d,0xeb,0xdf,0xd9,0xf2,0x3e,0x87,0x81,0x7b, + 0x48,0xf0,0x7d,0x40,0xbe,0x0f,0xd9,0xd4,0x07,0x6e,0xa7,0xba,0x8c,0x74,0xae,0x50, + 0x47,0x11,0x62,0x81,0xdb,0x20,0x61,0x87,0x61,0xf8,0x57,0xa5,0x6a,0x76,0xae,0x0f, + 0x94,0xc3,0x6b,0x2f,0x18,0x1d,0xc1,0x35,0xc0,0xdf,0x5b,0x85,0x00,0x2a,0x13,0x82, + 0x49,0x71,0xc1,0x1e,0x80,0xd6,0x55,0xdb,0x4b,0x98,0xda,0x2c,0xc4,0x92,0xca,0x37, + 0x1b,0xd5,0xb9,0xc0,0x03,0x9f,0xd3,0x26,0xb3,0x12,0x07,0x70,0x62,0x63,0xd1,0x89, + 0xc7,0x4d,0xbd,0x30,0x2b,0x5a,0x48,0xe7,0xda,0xff,0x00,0x29,0x65,0xce,0x31,0x9e, + 0x83,0xd7,0x3e,0xf4,0xcb,0x33,0x04,0x4c,0x43,0x01,0x86,0x03,0x01,0x8f,0x23,0x1c, + 0x67,0xd7,0x9a,0xc7,0x9e,0xed,0x76,0x2c,0xb1,0xe5,0x8f,0x27,0x2d,0x82,0x00,0xf4, + 0xef,0xfd,0x6a,0xcc,0x16,0xe2,0x4c,0x34,0x4f,0x9e,0x8b,0xc8,0xe9,0xeb,0x5a,0x30, + 0xdb,0x97,0x8f,0x70,0x55,0x03,0x38,0xc6,0x73,0x9c,0x77,0xad,0xcb,0x3b,0x04,0x40, + 0x02,0x10,0xcc,0x46,0x70,0x39,0xef,0xeb,0x5d,0x5c,0xb7,0xd8,0x96,0xcd,0x5d,0x1b, + 0x4f,0x2a,0xea,0xc8,0xa1,0xb2,0x00,0x1e,0xc7,0xe9,0x58,0x1f,0xb4,0x4e,0xa0,0x74, + 0x0f,0x85,0x1f,0xd9,0x9e,0x66,0xd9,0xb5,0xbb,0xd8,0x2d,0xb1,0xdc,0xc5,0x17,0xef, + 0xe4,0x1f,0x4c,0x26,0x3f,0x1a,0xf5,0x7f,0x0d,0x5a,0x03,0x81,0x2a,0xed,0xc1,0xe3, + 0x9e,0xb5,0xf2,0x7f,0xed,0x79,0xe2,0x01,0x3f,0x89,0xf4,0x1f,0x0c,0x46,0xfc,0x69, + 0xd6,0x4d,0x75,0x32,0xf5,0xfd,0xe5,0xdb,0xed,0x8f,0x9f,0x64,0x8d,0xbf,0x3a,0xaa, + 0x9e,0xe5,0x36,0xcd,0xf0,0xfa,0xc8,0xf9,0x37,0x77,0x21,0x3f,0xda,0xfe,0x95,0xa5, + 0x26,0xdf,0x2c,0x1c,0x70,0x46,0x0f,0xe5,0x58,0xad,0x2e,0x5f,0xe5,0xfd,0x6b,0x4e, + 0x33,0xe6,0x21,0x0c,0x73,0x8c,0x60,0xf6,0xaf,0x12,0xa2,0xba,0x67,0x63,0x5a,0xdc, + 0xd8,0x82,0x43,0xe5,0x28,0x43,0x9f,0x5f,0x6e,0x6b,0xa5,0xd2,0xe5,0x11,0x5e,0x1c, + 0xb6,0x73,0xf9,0xe6,0xb8,0xfb,0x69,0x0a,0xc7,0x93,0xd7,0x35,0xab,0x04,0x84,0x4c, + 0x08,0x3c,0x83,0x8f,0xce,0xb8,0x2a,0xc5,0x58,0x89,0x46,0xce,0xc7,0xd4,0x9f,0x0e, + 0xf5,0xb4,0xb5,0xba,0x58,0x37,0x6e,0x52,0x72,0x7f,0x1f,0x4a,0xf4,0x4f,0x89,0x4d, + 0xe6,0x68,0x37,0x32,0x8e,0x37,0x43,0xfc,0xc8,0xaf,0x9e,0xbc,0x0b,0x73,0xe5,0x6a, + 0x31,0x34,0xa0,0xfc,0xc4,0x6d,0xc7,0xae,0x6b,0xde,0xbe,0x25,0xb2,0x8f,0x0a,0x19, + 0x07,0x1b,0xe3,0x03,0xaf,0xa1,0x15,0xee,0x65,0x35,0x6d,0x87,0xab,0xcc,0xf6,0x5b, + 0x1b,0xe0,0xa2,0x9c,0x9a,0x47,0xe6,0x6f,0xc4,0xf1,0x8d,0x54,0x8c,0xe7,0x9a,0xf2, + 0x29,0x7e,0xbc,0x57,0xaa,0x7c,0x4a,0x62,0xfa,0xb3,0x75,0xc5,0x79,0x54,0x9d,0xfb, + 0xe6,0xbe,0xff,0x00,0x2e,0xff,0x00,0x77,0x81,0xeb,0x51,0x77,0x82,0x29,0x3f,0xb7, + 0x4a,0x4b,0x71,0xf3,0x8c,0xf6,0x3f,0x5a,0x49,0x3e,0x5f,0xc0,0x54,0x96,0xa3,0xe6, + 0x1e,0xdd,0x6b,0xb1,0x9a,0x37,0xa5,0xcf,0x44,0xd0,0x57,0xee,0xfb,0x62,0xbd,0x22, + 0xdd,0x8c,0x6a,0x33,0xd3,0x1d,0x6b,0xcf,0xbc,0x3e,0xbb,0x82,0x81,0xcf,0x6a,0xf4, + 0xc8,0x6d,0x1c,0xc4,0x0f,0xf2,0xaf,0x9c,0xc6,0x49,0x26,0xee,0x79,0xf3,0xbb,0x7a, + 0x1b,0xda,0x65,0xe6,0x24,0x00,0xf4,0xcd,0x7a,0x3d,0x8c,0xc6,0x44,0x07,0xd6,0xbc, + 0xcf,0x4f,0xb3,0x60,0xe3,0x8c,0x57,0xa7,0x69,0x30,0x30,0x55,0x04,0xe2,0xbe,0x76, + 0xac,0xd7,0x30,0xd1,0xa4,0xb1,0x36,0x4f,0xad,0x5c,0x8a,0xcd,0x9c,0x8c,0x8a,0xd1, + 0x82,0xd8,0x36,0x32,0x39,0xff,0x00,0x1a,0xe8,0x2d,0xad,0x51,0x46,0x08,0xa8,0xf6, + 0xad,0xe8,0x26,0xd2,0xdc,0xe7,0x53,0x4b,0x67,0xe7,0x19,0xfa,0x55,0xd8,0x34,0xd3, + 0x1b,0x72,0x30,0x3f,0xc2,0xba,0x81,0xe4,0x46,0xb9,0x3f,0xe4,0x56,0x6d,0xc5,0xec, + 0x6a,0x70,0x98,0xfc,0x6b,0x1a,0x93,0xb4,0x6e,0xcc,0xe7,0x25,0x6b,0x9a,0x36,0xd1, + 0xec,0x8c,0xa8,0x19,0x38,0xae,0x43,0x5c,0xd1,0x9e,0x7d,0xd2,0x81,0xc1,0xea,0x6b, + 0xaf,0xd3,0xa5,0x0c,0x7e,0x6a,0xe8,0x9e,0xce,0x29,0xe2,0xe9,0xd7,0xa8,0xaf,0x3d, + 0x41,0xdb,0x99,0x18,0x52,0xc4,0x72,0xbb,0xb3,0xe4,0x6d,0x66,0xc6,0x5b,0x52,0xd8, + 0xe9,0x5c,0x34,0x92,0x34,0x8f,0xf3,0x70,0x3d,0xab,0xea,0x6f,0x12,0x78,0x5d,0x67, + 0x56,0x2a,0xbd,0xb3,0xe9,0x5e,0x0f,0xab,0x78,0x7a,0x4b,0x59,0x49,0x03,0xea,0x31, + 0x44,0x54,0x94,0xaf,0x2d,0x8d,0xa5,0x88,0xe7,0xd0,0xca,0xd1,0xec,0x5e,0xf2,0xe6, + 0x38,0x23,0x19,0x2c,0x47,0xbd,0x7e,0x97,0xfe,0xcf,0x3f,0x0e,0xd1,0x8c,0x13,0xcb, + 0x1f,0xc8,0x80,0x31,0x24,0x57,0xc4,0xdf,0x0a,0xfc,0x36,0xfa,0x86,0xaf,0x19,0x75, + 0x27,0x0c,0x00,0x1f,0x8d,0x7e,0xc0,0xfc,0x33,0xd0,0xe3,0xd1,0x34,0x18,0x46,0xdd, + 0xae,0xe0,0x67,0x8c,0x71,0x5f,0x9a,0xf8,0x89,0x9c,0xca,0x10,0x58,0x4a,0x6f,0x7d, + 0xcf,0xbc,0xe0,0xfc,0xb5,0x49,0xbc,0x44,0xd1,0xe9,0x8f,0x08,0x11,0x2c,0x69,0xf2, + 0xc6,0x80,0x00,0x3e,0x95,0x4d,0x10,0x67,0x00,0x71,0x4f,0x9e,0xe7,0xcc,0x3b,0x14, + 0xf1,0x51,0x2b,0x94,0x5d,0xd5,0xf8,0xfe,0x17,0x0f,0x6f,0x7d,0x9f,0xa1,0x56,0x9e, + 0x96,0x2d,0x4d,0x74,0x2d,0xe1,0xc7,0xf1,0x57,0x28,0x54,0xdc,0xdc,0x66,0x4e,0xf5, + 0x7e,0xe2,0x5f,0x31,0xba,0xf4,0x34,0x96,0xc8,0xbb,0x80,0x1c,0x9f,0x5a,0xe7,0xc7, + 0x4f,0x9b,0x45,0xd0,0x9a,0x51,0xb2,0xb9,0xd1,0x69,0xb6,0xea,0x14,0x63,0x1c,0x57, + 0xa3,0x69,0x80,0x24,0x78,0xae,0x2b,0x4f,0x81,0x80,0x5c,0xd7,0x59,0x03,0xf9,0x71, + 0xf1,0xd7,0xbd,0x79,0xaa,0x56,0xd5,0x9d,0x51,0x8f,0x32,0xb2,0x3f,0xff,0xd0,0xf8, + 0xc9,0x3c,0xb7,0x8f,0x7e,0x79,0xc7,0xe5,0x55,0xee,0x82,0x4a,0x06,0xdf,0xbd,0xe9, + 0xf4,0xaa,0x1a,0x7d,0xc9,0x0c,0x63,0x7e,0xc7,0xa0,0xad,0x09,0xfa,0x79,0x89,0xd3, + 0xd0,0xd7,0xe2,0x90,0xbb,0x4c,0xf0,0x5c,0x6d,0x2b,0x0d,0xb5,0x95,0x60,0x6d,0xa4, + 0xe3,0xb6,0x6b,0xd0,0xbc,0x35,0x76,0xbf,0xda,0xd6,0x6d,0x1b,0xe3,0xf7,0xf1,0x67, + 0x1f,0xef,0x8a,0xf2,0xe9,0xd9,0x7a,0x8c,0x55,0xff,0x00,0x0f,0xea,0x12,0xdb,0xea, + 0x16,0xe7,0x3c,0x99,0xa3,0xc7,0xd7,0x70,0xc5,0x72,0x63,0xbd,0xea,0x32,0x83,0xda, + 0xc5,0xd2,0x56,0xa8,0xa4,0x7e,0xb3,0x45,0x2f,0x99,0x6b,0x10,0x07,0xa2,0x8e,0x7d, + 0xf1,0x50,0xbb,0x93,0xc8,0x38,0x6a,0x9f,0x4e,0x68,0xe4,0xd1,0x51,0x1a,0x3c,0xb8, + 0x55,0x7d,0xc3,0xa8,0xe0,0x64,0x56,0x6c,0xa7,0xe6,0x38,0x3f,0xd0,0xd7,0xf2,0x46, + 0x63,0x1e,0x5a,0xd2,0x3f,0xa1,0x70,0x6e,0xf1,0x4c,0xb4,0xb3,0x91,0xce,0x7e,0xb5, + 0xd2,0xe9,0x12,0x79,0x84,0x8f,0x42,0x2b,0x86,0xf3,0x88,0x23,0xeb,0x5d,0x77,0x87, + 0xdc,0xb0,0x73,0xe9,0x8a,0xf3,0x29,0xff,0x00,0x10,0xf4,0xa4,0xbd,0xc3,0xae,0x81, + 0xf3,0x75,0x2b,0xe4,0xe1,0x40,0x5f,0xea,0x6a,0x24,0x90,0x92,0x18,0xf2,0x0f,0xeb, + 0x50,0xda,0xc8,0x7c,0x9b,0x87,0xf5,0x2d,0x5d,0x47,0x85,0xb4,0x11,0xaa,0xc8,0xb3, + 0xde,0x92,0x96,0x91,0x60,0xb1,0xe8,0x64,0x6f,0xee,0xaf,0xf5,0x35,0xe8,0xd2,0x52, + 0x9b,0xe5,0x89,0xc9,0x36,0xa2,0xae,0xcb,0x3a,0x35,0xa5,0xed,0xdb,0x05,0xb7,0x89, + 0xdf,0x07,0x04,0xa8,0xe0,0x7d,0x4f,0x41,0x5e,0xb9,0xa7,0xde,0xdb,0x78,0x6e,0xd4, + 0xa4,0x44,0x35,0xc3,0x8f,0xde,0x37,0xf4,0x1e,0xc2,0xb3,0x2e,0xf5,0xa8,0xec,0x6d, + 0xd6,0xc6,0xc5,0x56,0x28,0x54,0x60,0x2a,0x8c,0x74,0xf5,0xf5,0xae,0x16,0xff,0x00, + 0x51,0x69,0x5c,0x9c,0xe7,0x2b,0x9c,0xd7,0xa1,0x4e,0x11,0xa0,0xf9,0xa9,0xbb,0xcb, + 0xbf,0xf9,0x19,0x72,0x3a,0xca,0xd3,0x5a,0x0b,0xe3,0x4f,0x12,0x4d,0xa9,0x29,0x8c, + 0x3f,0x7e,0x82,0xb2,0x7c,0x23,0x7e,0xd6,0x92,0x02,0x1b,0xa9,0xac,0xd9,0x62,0x5b, + 0x8c,0x86,0xe7,0x8a,0x6e,0x9b,0x18,0x81,0x89,0x04,0x8c,0x73,0xfa,0xd7,0x66,0x1a, + 0xb3,0x53,0xe7,0x91,0x15,0xf0,0xd7,0x56,0x8e,0xc7,0xd3,0x7a,0x4f,0x89,0xb6,0x22, + 0xa3,0x38,0xc6,0x06,0x79,0xed,0xde,0x93,0x51,0xb9,0xd1,0xe5,0x76,0x95,0x32,0x4b, + 0x73,0xe5,0x83,0x85,0xcf,0xf9,0xed,0x5e,0x37,0x6d,0xab,0x0f,0x2f,0x64,0x4d,0x93, + 0x8c,0x7b,0x8a,0xb7,0x0d,0xeb,0x86,0xde,0xcd,0x8f,0x6c,0xd7,0x56,0x37,0x12,0xea, + 0x53,0xe5,0x92,0xba,0x5f,0x81,0xe6,0x53,0xc2,0xa8,0x4f,0x9a,0x2e,0xcc,0xee,0xae, + 0x34,0xed,0x3f,0x51,0x42,0xb6,0xe4,0x5b,0xdc,0x7f,0x08,0xcf,0xc8,0xde,0xc7,0x3d, + 0x33,0xeb,0x5e,0x71,0xa9,0x59,0xcd,0x6d,0x33,0xdb,0xdc,0xc6,0x52,0x45,0x3d,0x0f, + 0x6f,0xfe,0xb7,0xbd,0x69,0xc9,0xa9,0x49,0x1b,0x86,0x53,0x8c,0x7b,0xf1,0x5d,0x85, + 0x9d,0xce,0x95,0xe2,0x3b,0x31,0x67,0xaa,0x80,0x27,0x8c,0x61,0x25,0x1f,0x78,0x7e, + 0x3d,0xc7,0xb1,0xaf,0x19,0x51,0x85,0x5d,0x23,0x65,0x2f,0xc1,0x9d,0xb1,0xab,0x3a, + 0x5a,0xcb,0x55,0xf8,0xa3,0xcb,0x34,0xed,0xc9,0x77,0xe5,0xa8,0xc0,0x60,0x7f,0x11, + 0xe9,0x53,0xdd,0x1f,0x2e,0x74,0xb9,0x3f,0xc6,0xbb,0x5b,0xea,0x2b,0x6f,0x52,0xd0, + 0x2f,0x74,0x6b,0xc4,0x91,0xd7,0xcc,0x81,0x8f,0xc9,0x32,0x72,0xa7,0x3e,0xfd,0x8f, + 0xb5,0x61,0x6a,0x0c,0xdb,0x25,0x4c,0xfd,0xd6,0xdc,0x3f,0x1a,0xe1,0xc5,0x46,0x50, + 0x4d,0x4d,0x6a,0x8e,0xda,0x72,0x8c,0x9a,0x94,0x1e,0xe5,0x06,0x94,0xe6,0xb5,0x74, + 0xd9,0xf1,0x70,0x87,0xdc,0x0a,0xe6,0xbc,0xed,0xd9,0x3f,0x8d,0x5c,0xb3,0x9f,0x0c, + 0x8f,0xd3,0x04,0x1a,0xf9,0xda,0xb2,0xb4,0xd4,0xbc,0xcf,0x62,0x8c,0x2f,0x0e,0x53, + 0xd6,0xa3,0x58,0x76,0xef,0x21,0x79,0xe9,0x9e,0xff,0x00,0xa5,0x54,0xba,0xb8,0x40, + 0xbb,0x14,0x06,0xc5,0x47,0x05,0xfc,0x13,0xc6,0xa1,0xe4,0x3b,0x88,0xe8,0x57,0xfa, + 0x8a,0xad,0x79,0x1c,0x6a,0x85,0x95,0xfb,0x70,0x6b,0xf4,0x7a,0x72,0x4e,0x29,0xc4, + 0xf9,0x1a,0x91,0xb4,0xac,0xcf,0xcf,0x7f,0xda,0x7b,0x4a,0x37,0x1e,0x3c,0xd1,0xee, + 0x22,0x4f,0xf8,0xf8,0xb5,0x78,0x87,0xd5,0x64,0x1f,0xfc,0x55,0x7c,0xe7,0xf1,0x1f, + 0x51,0x10,0xcf,0x6d,0xe1,0x98,0x18,0x08,0x74,0xf8,0xc2,0x36,0xde,0x86,0x53,0x83, + 0x21,0xfa,0xe7,0x8f,0xc2,0xbe,0xe5,0xf8,0xe5,0xa5,0x43,0x25,0xfe,0x8f,0xaf,0x4d, + 0x83,0x1e,0x9e,0xd3,0xbb,0x9f,0xf7,0x63,0xde,0x07,0xe2,0xca,0x2b,0xf3,0x6f,0x59, + 0xb9,0x3a,0x8e,0xa9,0x71,0x79,0x31,0xcb,0x4b,0x21,0x62,0x49,0xee,0x4e,0x6b,0xf4, + 0xbc,0xbb,0x16,0xea,0xe5,0xd8,0x7a,0x37,0xda,0xf7,0xf9,0x3d,0x0f,0xcd,0x38,0x86, + 0x87,0xb3,0xc6,0x55,0x9f,0xf3,0x5b,0xf2,0x21,0x2e,0x22,0x8f,0x70,0xfa,0x7f,0x8d, + 0x66,0x5c,0x4a,0xec,0x49,0x1c,0xe4,0xe6,0xb4,0x26,0x01,0x21,0x55,0x3c,0x9c,0x67, + 0x27,0xfc,0x2b,0x19,0xe5,0x46,0x93,0x81,0x8c,0x03,0x8f,0xad,0x7a,0x74,0x22,0xf9, + 0xae,0x8f,0x99,0x9e,0x85,0x79,0x70,0xb8,0x7c,0xe7,0x3d,0x79,0xa8,0x24,0x29,0xc6, + 0xde,0xe7,0x3d,0x29,0xd7,0x2e,0xaa,0xa5,0x57,0xb7,0xf9,0xcd,0x56,0x52,0x18,0x29, + 0xea,0x05,0x7a,0xb4,0xaf,0x6d,0x88,0x65,0x67,0x60,0x1f,0x68,0xea,0x4f,0xe9,0x55, + 0xee,0xdc,0x90,0x47,0xe3,0x56,0x48,0x0f,0x37,0x5e,0x49,0xe3,0xde,0xa8,0xdf,0x14, + 0x53,0xb4,0x1e,0x7a,0x57,0xa3,0x87,0xb3,0xe8,0x2b,0x19,0xc0,0x9e,0xfd,0xaa,0x06, + 0x6c,0xa3,0xe7,0xaf,0xf4,0xa6,0x99,0x0e,0xe6,0x5e,0x9c,0xf5,0xed,0x4c,0x19,0x21, + 0x81,0xf4,0xe6,0xbd,0x68,0xe8,0xb5,0x05,0xa9,0x11,0x90,0x82,0x06,0x6a,0xd8,0xcf, + 0x96,0x39,0xc6,0x45,0x56,0x31,0xe0,0xee,0x1d,0xf3,0x8a,0x9c,0xb6,0x50,0x2d,0x75, + 0x53,0x57,0x5a,0x14,0xf4,0x2c,0x02,0x0e,0x0f,0x61,0xd2,0xb5,0xed,0x9b,0x79,0x03, + 0xd4,0x56,0x30,0x20,0xb0,0x1d,0xab,0x5a,0x05,0xc8,0x04,0x56,0x91,0xd2,0x48,0xa5, + 0x7e,0x84,0xe1,0x42,0xca,0x39,0xe3,0x3d,0x2b,0xd2,0xbc,0x1f,0xff,0x00,0x21,0x08, + 0x4f,0x60,0xd5,0xe6,0xe0,0x61,0x87,0xe1,0x5e,0x8d,0xe1,0x0c,0xff,0x00,0x68,0x42, + 0x07,0x72,0x3f,0x4a,0xe8,0x85,0xbd,0xaa,0xb1,0x8e,0x21,0xfe,0xea,0x47,0xe8,0x8f, + 0xc3,0x09,0x24,0xd4,0xbc,0x1a,0x6d,0x8e,0x09,0xb1,0xb9,0x65,0xe7,0xae,0xc9,0xc6, + 0xe1,0xf8,0x64,0x1a,0xd1,0xd5,0x2c,0xa5,0x45,0x65,0x61,0xb7,0x1c,0xfd,0x79,0xac, + 0x1f,0x82,0x32,0xa8,0xbd,0xb8,0xd2,0xa5,0x3f,0x25,0xf4,0x04,0x28,0x3c,0x7e,0xf2, + 0x2f,0x9d,0x3f,0x3e,0x45,0x7a,0xae,0xb7,0xa6,0x96,0xb7,0x2f,0x1a,0x64,0x60,0xe7, + 0xb6,0x07,0xbd,0x7d,0x24,0xe9,0xa6,0xd4,0x97,0x63,0xc2,0x92,0xd1,0x33,0xe7,0x0d, + 0x5a,0xce,0x3f,0x32,0x52,0x9c,0x9e,0xa3,0xfc,0xf5,0xaf,0x3f,0xd4,0x74,0xf9,0x5d, + 0x5c,0x42,0x57,0x07,0x20,0xf1,0xd3,0xeb,0x5e,0xbd,0xac,0x59,0xb4,0x33,0x9c,0xfd, + 0xd6,0x5c,0x11,0xd0,0xf1,0xd7,0x83,0x5c,0x2b,0xc5,0x13,0xbb,0x05,0x7f,0x9b,0x9e, + 0x87,0x1d,0x38,0xae,0x7a,0xeb,0x9a,0x3c,0xa5,0xc2,0x47,0x9f,0xdc,0xd9,0x95,0x46, + 0x79,0x18,0x2e,0x54,0x67,0x1c,0x8f,0xca,0xb3,0xed,0xf4,0xe8,0x9c,0xf9,0x9b,0x03, + 0x83,0x8e,0x4f,0x5c,0xfd,0x2b,0xb9,0xbd,0xd3,0x8c,0x9b,0x4c,0x6a,0x36,0x9c,0x7d, + 0xf3,0xd4,0x81,0x83,0x8a,0xca,0xb6,0xb2,0x54,0x6c,0xa6,0x51,0x81,0xc6,0x05,0x44, + 0x21,0xaa,0x56,0x2c,0x8a,0x38,0x15,0x23,0x08,0x17,0x69,0xcf,0xcb,0x8e,0xff,0x00, + 0xe1,0x5b,0xf6,0x36,0x45,0x64,0x59,0x31,0xcf,0xa7,0x6a,0xa7,0xe4,0x32,0x26,0x24, + 0xf9,0x81,0x3f,0x4f,0xd6,0xba,0x9d,0x2a,0x1f,0x94,0x30,0xc9,0x07,0xa0,0xae,0x8e, + 0x56,0x96,0xc3,0x7a,0x1d,0x9f,0x87,0x2d,0xe3,0x32,0x99,0x1f,0x3f,0x2f,0xe4,0x07, + 0xd6,0xbf,0x2c,0xbe,0x2c,0xf8,0xa4,0x78,0xbb,0xe2,0x1e,0xbd,0xe2,0x05,0x62,0xf0, + 0xcb,0x7b,0x24,0x36,0xfe,0x82,0x0b,0x6f,0xdc,0xc7,0x8f,0x62,0x13,0x70,0xff,0x00, + 0x7a,0xbf,0x48,0xbe,0x25,0x78,0x82,0x2f,0x02,0xfc,0x2f,0xd7,0x3c,0x47,0x03,0xf9, + 0x77,0x46,0xd5,0xa0,0xb6,0x04,0xf5,0xb8,0xb9,0xfd,0xd4,0x60,0x7e,0x2d,0x9f,0xc2, + 0xbf,0x24,0xf6,0xec,0x45,0x50,0x72,0xab,0x80,0x09,0xf4,0xc7,0x7a,0xe2,0xc7,0x54, + 0xb2,0x8c,0x11,0xdb,0x84,0x8e,0xf2,0x2c,0x1f,0x96,0x45,0x71,0xdf,0xf4,0xcd,0x68, + 0x5b,0xb6,0xec,0xee,0x1f,0x2f,0x0d,0xf5,0xaa,0x03,0x24,0x29,0x60,0x0f,0xf9,0xf5, + 0xab,0x96,0xea,0x0b,0xfb,0x11,0x8c,0x1c,0xd7,0x9e,0xd2,0x3b,0x6d,0x6d,0x8b,0xd0, + 0xb6,0x15,0x83,0x1e,0x33,0xd3,0xe9,0x53,0x2d,0xc1,0x42,0x17,0x3c,0xd5,0x65,0xc6, + 0xf2,0x31,0x80,0x41,0xe2,0x9f,0x26,0xd0,0x43,0x0f,0xc0,0xfb,0xd7,0x25,0x58,0xdf, + 0x50,0x6a,0xfa,0x1e,0xc5,0xe0,0xfb,0x86,0x32,0xc4,0xdb,0xf9,0xdc,0x3e,0xbd,0x6b, + 0xe8,0x5f,0x1e,0xdc,0x89,0x7c,0x0d,0x18,0x27,0x27,0x24,0x16,0xff,0x00,0x80,0x64, + 0x57,0xca,0xde,0x11,0xbe,0x78,0xe7,0x8f,0x60,0xfe,0x21,0xd7,0x9a,0xfa,0x3b,0xc5, + 0x33,0x09,0xbc,0x16,0x85,0x78,0x5d,0xe4,0x15,0xf4,0x3b,0x0d,0x3c,0x2c,0x9a,0x52, + 0xb7,0x6b,0x1b,0xe5,0xea,0xd5,0xec,0x7e,0x77,0x7c,0x44,0xcf,0xf6,0x99,0x15,0xe5, + 0xf2,0xe3,0x9c,0x57,0xa6,0xfc,0x42,0x2a,0x75,0x52,0x17,0x9a,0xe0,0xa2,0xb3,0x7b, + 0x86,0xc6,0x0d,0x7e,0xa7,0x97,0x4a,0xd8,0x58,0x3f,0x23,0xae,0x8b,0xf7,0x51,0x8a, + 0x62,0x79,0x0e,0x17,0x9a,0xd8,0xd3,0xb4,0xc7,0x67,0x04,0x8c,0xd7,0x55,0xa7,0x78, + 0x7d,0xe5,0x20,0x6d,0xaf,0x47,0xd2,0x7c,0x2d,0x80,0x19,0x85,0x61,0x8c,0xcc,0x23, + 0x4d,0x34,0x8a,0x9c,0xd5,0xb5,0x28,0x78,0x6f,0x49,0x60,0x07,0xcb,0x83,0x9a,0xf5, + 0x6b,0x4d,0x2c,0x04,0x00,0x80,0x69,0xb6,0x1a,0x7c,0x36,0x91,0x8d,0xc0,0x64,0x62, + 0xb6,0xd2,0x7d,0xa7,0x6a,0x0e,0x95,0xf2,0xf8,0x8c,0x4c,0xaa,0x36,0xd1,0xe7,0xd4, + 0xaa,0x93,0xb1,0x3d,0xad,0x84,0x6a,0x77,0x10,0x05,0x74,0xf6,0x82,0x38,0xc0,0x0b, + 0xc9,0xae,0x76,0x07,0x2c,0xc3,0x3c,0xe7,0xad,0x6f,0xda,0xa8,0x04,0x1c,0xd6,0x11, + 0xa5,0x7d,0x59,0xcd,0x2a,0xaf,0x74,0x74,0x56,0xf2,0x1e,0xb8,0xfc,0xeb,0x41,0x66, + 0x28,0xb9,0x3e,0x99,0xac,0xc8,0xdd,0x51,0x47,0xe7,0x54,0xef,0x6f,0x02,0xae,0x03, + 0x53,0x9c,0x63,0x15,0xb0,0xd3,0x6f,0x56,0xcb,0x57,0xba,0xa0,0x51,0x80,0x71,0x8e, + 0xb5,0x83,0xfd,0xa0,0x5d,0xf9,0x35,0xcf,0xdf,0x5e,0xb3,0x1f,0xad,0x54,0x86,0x76, + 0xdd,0xc7,0x4c,0xf4,0x35,0xe3,0x56,0x9b,0x93,0xdc,0x99,0xcb,0xb1,0xea,0xba,0x6d, + 0xe8,0x18,0xc9,0xae,0xe6,0xd6,0xfc,0x00,0x01,0x35,0xe3,0x16,0x37,0xa5,0x4a,0xfb, + 0xd7,0x69,0x61,0x7c,0x70,0x3b,0xfe,0x94,0xa9,0xdf,0x63,0x9d,0x9d,0xec,0xbe,0x5c, + 0xe8,0x41,0xe4,0x9a,0xf3,0x9d,0x7f,0x41,0x8e,0x7c,0x95,0x5e,0xf5,0xd6,0xc1,0x75, + 0x90,0x01,0xe2,0xaf,0x43,0x10,0xbb,0x95,0x53,0x1d,0xc7,0x5a,0xee,0x4a,0xf0,0x7c, + 0xc3,0x8f,0xc4,0x8e,0x9f,0xe0,0xb7,0x83,0x40,0xd4,0x20,0xcc,0x7f,0xc4,0x0e,0x71, + 0x5f,0xa2,0x10,0x94,0xb6,0xb5,0x8e,0x14,0xfe,0x15,0x02,0xbe,0x71,0xf8,0x4f,0xa3, + 0xad,0xb9,0x17,0x1b,0x71,0xb0,0x71,0x5e,0xfe,0x19,0x9b,0x8a,0xfe,0x71,0xe2,0xda, + 0xae,0xb6,0x65,0x34,0xde,0xc7,0xee,0x79,0x05,0x2f,0x63,0x82,0x8a,0x2f,0x24,0x80, + 0x67,0x3c,0xd2,0x4f,0x71,0x91,0x81,0xd6,0xa8,0xc9,0x30,0xdc,0x40,0xaa,0x8d,0x31, + 0xe7,0xd0,0x57,0xcd,0xd5,0x6a,0x11,0xb2,0x3d,0x65,0xef,0x4b,0x52,0xd4,0xb2,0x63, + 0xbe,0x6a,0x6b,0x19,0xf6,0xb8,0x24,0xf2,0x4d,0x60,0xc9,0x31,0x66,0xce,0x73,0x56, + 0x6c,0xe7,0x42,0xfc,0xf5,0xaf,0x07,0x15,0x57,0xaa,0x3a,0xe1,0x1b,0xbb,0x1e,0x93, + 0x69,0x78,0xaa,0x06,0x48,0xcd,0x6f,0x0b,0xc4,0x31,0xf2,0x47,0x22,0xbc,0xd5,0x67, + 0x28,0xbb,0xb2,0x71,0x5a,0x16,0xd7,0x8e,0xf8,0x62,0xdf,0x41,0x5e,0x7c,0xab,0x3b, + 0x58,0xf4,0x29,0xd2,0x48,0xff,0xd1,0xf8,0x73,0x58,0xd3,0xa4,0xd2,0xf5,0x19,0x21, + 0x20,0x8c,0x31,0x23,0xfa,0x52,0xc7,0x23,0x32,0x93,0x9c,0xe4,0x7e,0x55,0xec,0x7f, + 0x12,0x3c,0x27,0x7f,0x67,0x2c,0xd1,0xdf,0xdb,0x3c,0x17,0x76,0xac,0x63,0x9d,0x18, + 0x60,0xab,0x0f,0x5f,0x71,0x5e,0x1f,0x03,0x18,0xa6,0x31,0x3f,0x5a,0xfc,0x62,0xb4, + 0x1c,0x65,0xa9,0xe3,0xd4,0x5d,0x49,0x65,0x56,0x23,0x27,0xbf,0x6a,0xaf,0x66,0xcd, + 0x6f,0x77,0x0c,0xb8,0xfb,0x92,0xa3,0x11,0x8f,0xee,0xb0,0x35,0xa1,0x21,0x0c,0x30, + 0x3d,0x39,0xc7,0x6a,0xa5,0xf2,0xab,0x85,0x7e,0xbf,0xd6,0xb9,0xab,0x45,0x49,0x38, + 0x93,0x19,0x58,0xfd,0x63,0xd0,0xf5,0x03,0x2e,0x97,0x16,0xcc,0x91,0x2c,0x2b,0xd3, + 0xd0,0xad,0x24,0xb2,0x64,0x60,0x9c,0x9e,0xd5,0xc3,0x7c,0x34,0xd6,0x46,0xa3,0xe1, + 0x1d,0x26,0xf4,0x72,0x5a,0xda,0x30,0xdf,0x55,0x18,0x3f,0xca,0xbb,0x2b,0xc7,0x55, + 0x95,0xb6,0xf0,0x3b,0x77,0xe0,0xd7,0xf2,0x86,0x79,0x46,0x54,0xf1,0x33,0x83,0xe8, + 0xda,0x3f,0x7e,0xca,0xaa,0x2a,0x94,0xa0,0xd7,0x54,0x99,0x06,0xfd,0xa4,0x8c,0xd7, + 0x5f,0xe1,0xa9,0x32,0x26,0x07,0xb6,0x0d,0x70,0xa5,0xce,0xe2,0x73,0xd6,0xbb,0xff, + 0x00,0x03,0xd8,0x4b,0x7f,0x24,0xec,0x72,0xb0,0x26,0xdf,0x32,0x4f,0x4c,0xf4,0x03, + 0x3d,0x49,0xf4,0xaf,0x0a,0x10,0x94,0xea,0xa8,0xc1,0x6a,0x7b,0x55,0x1a,0x85,0x36, + 0xd9,0xdc,0xf8,0x6f,0x4f,0xfe,0xd2,0x2e,0x26,0x3b,0x60,0x0c,0x4c,0x8d,0xd3,0x23, + 0xfb,0xa3,0xdc,0xd7,0xa5,0x4f,0x7d,0x0d,0xbd,0xba,0xdb,0xdb,0x0d,0x91,0xa0,0x0a, + 0x80,0x74,0x02,0xb8,0x49,0x2e,0x60,0xb0,0x8c,0x5a,0xd8,0x82,0x91,0xa7,0xe2,0x49, + 0xf5,0x27,0xb9,0xaa,0x0f,0xab,0x4b,0x8c,0x13,0x9f,0x7a,0xf7,0x69,0xd0,0xf6,0x51, + 0xe4,0x5b,0xf5,0x3c,0xbf,0x69,0xcd,0x2e,0x76,0x75,0x13,0x5d,0x17,0xcf,0x39,0x35, + 0x95,0x24,0xa3,0x18,0xee,0xbc,0x57,0x3d,0xfd,0xab,0x21,0x90,0x8f,0xc6,0xaa,0xc9, + 0xa9,0x48,0xa1,0x80,0xe3,0x3c,0xd5,0x7b,0x27,0x62,0xbe,0xb0,0x8e,0x9e,0x29,0x14, + 0x72,0xc7,0xb6,0x79,0xac,0x1b,0xad,0x40,0x46,0xc5,0x10,0xf2,0x57,0x02,0xa0,0x1a, + 0x96,0x10,0x9c,0xf3,0xb7,0xf5,0xae,0x7e,0xe2,0x67,0x33,0xee,0x39,0x39,0xeb,0xfc, + 0xeb,0x6a,0x30,0x7b,0x30,0x75,0x93,0xd2,0x27,0x61,0xa5,0x6a,0x04,0x4a,0x77,0x36, + 0x32,0x3e,0xb5,0xde,0x29,0x59,0xa1,0x13,0x29,0x07,0x1c,0xe4,0x57,0x8b,0xdb,0x5d, + 0xaa,0x49,0xc8,0xc0,0xff,0x00,0x39,0xaf,0x46,0xd3,0x35,0x31,0xf6,0x73,0x08,0x3c, + 0x00,0x00,0xae,0x95,0x15,0x24,0xe0,0xce,0x69,0xde,0xea,0x44,0x97,0x37,0x8d,0x1c, + 0xa5,0x73,0xb4,0x7d,0x79,0xab,0x76,0x9a,0xbb,0xc0,0xea,0x54,0xe0,0x8e,0xf5,0x8f, + 0x72,0x03,0x65,0xf9,0x24,0x73,0xcf,0x63,0x58,0xaf,0x73,0xe5,0xb1,0x52,0x41,0x3e, + 0xc7,0xa5,0x78,0xb3,0x4e,0x33,0xb3,0x36,0xb2,0x68,0xfa,0x2b,0x44,0xf1,0x1a,0x5e, + 0xdb,0xfd,0x8e,0xe8,0x09,0x22,0x71,0x86,0x56,0x19,0x15,0xca,0x78,0xbb,0x45,0x3a, + 0x6b,0x7d,0xb2,0xd7,0x32,0x5a,0xcc,0x08,0x07,0xa9,0x46,0xfe,0xe9,0xfe,0x86,0xbc, + 0xfb,0x49,0xd7,0x1a,0xd2,0x45,0xea,0x54,0x9e,0x79,0xaf,0x68,0xd2,0xf5,0x4b,0x3d, + 0x56,0xcd,0xad,0x2e,0x86,0xf8,0x66,0x5d,0xac,0xbe,0x99,0xee,0x3d,0xf3,0xd2,0xbb, + 0x79,0x63,0x8a,0xa4,0xe9,0x4d,0xfb,0xdd,0x19,0xcf,0x16,0xe8,0x54,0xe6,0x8e,0xdd, + 0x4f,0x0a,0x59,0x70,0xf5,0x76,0xde,0x51,0xb8,0x10,0x69,0x7c,0x4d,0xa3,0x5d,0x78, + 0x77,0x51,0x36,0xd3,0xfc,0xd1,0x3f,0xcf,0x0c,0x98,0xc0,0x74,0x3d,0xfe,0xa3,0xb8, + 0xf5,0xac,0x88,0x2e,0x00,0x23,0x9a,0xf8,0xbc,0x4d,0x39,0x53,0x9c,0xa1,0x35,0x66, + 0x8f,0xaa,0xc2,0xc9,0x4e,0x2a,0x51,0xd8,0xf4,0x9d,0x32,0x6d,0xcb,0x85,0x50,0xc4, + 0x76,0x3d,0x6b,0x51,0xd6,0x59,0x10,0xf9,0x89,0xc7,0xd7,0x35,0xc8,0x69,0x57,0x12, + 0x19,0x14,0xc4,0x79,0xe8,0x45,0x76,0x72,0x33,0x47,0x0e,0x5d,0xf6,0x93,0xed,0xfd, + 0x0d,0x7d,0x96,0x4d,0x5d,0x55,0xc3,0xc5,0xf6,0xd0,0xf9,0xec,0xd2,0x9b,0xa7,0x59, + 0xf9,0x9f,0x34,0xfe,0xd0,0x8a,0xd0,0x78,0x16,0xfa,0x48,0x17,0x05,0x30,0x49,0xce, + 0x78,0x3c,0x1f,0xe7,0x5f,0x98,0x26,0x1d,0xed,0xc6,0x49,0x24,0xe7,0xf1,0xaf,0xd4, + 0xaf,0x8e,0x90,0xbd,0xdf,0x82,0x35,0x68,0x47,0xcc,0x7e,0xce,0xed,0x90,0x3d,0x39, + 0xfe,0x95,0xf9,0x86,0xaa,0x55,0xb9,0x1d,0x73,0xcf,0xf2,0xaf,0xd0,0xf2,0x09,0xda, + 0x9c,0x91,0xf9,0x8f,0x15,0xaf,0xdf,0x41,0xf7,0x46,0x35,0xcb,0x30,0x3e,0x51,0x07, + 0xbd,0x63,0xf2,0xa5,0x88,0x18,0xad,0xe9,0xcf,0xce,0xef,0xd7,0x1c,0x67,0xf9,0xd6, + 0x2d,0xd0,0xf9,0x8e,0x33,0x8f,0xa7,0x6c,0x57,0xd8,0x61,0xe7,0xa6,0xc7,0xc6,0x4f, + 0x56,0x67,0x4c,0xc5,0xb2,0xd8,0xe3,0x81,0xcd,0x45,0x90,0xa0,0x77,0xd9,0x9f,0xd6, + 0xa2,0x76,0x70,0xc0,0x63,0xe5,0x34,0xe9,0x4a,0x86,0x18,0xef,0x5e,0xb5,0x35,0x65, + 0x62,0x4a,0x85,0x98,0x4c,0x5c,0xe7,0xe9,0xdf,0x35,0x4a,0xe9,0xf7,0x31,0x62,0x06, + 0x6a,0xca,0xc8,0xbb,0xd8,0xb1,0x1c,0xf1,0x9a,0xce,0xba,0x6c,0x64,0x02,0x70,0x45, + 0x77,0xd0,0x57,0x48,0x76,0xd0,0xa8,0xbb,0x8f,0x3d,0xbd,0x69,0xe3,0x80,0x45,0x46, + 0xcf,0x85,0x50,0x78,0xff,0x00,0xeb,0x54,0x31,0xcd,0x9e,0x0f,0xaf,0xd3,0xbd,0x7a, + 0x91,0xb3,0x40,0xac,0x58,0x90,0xfc,0xb9,0xec,0x01,0xcd,0x20,0xe5,0x15,0xbf,0x3a, + 0xad,0x33,0x3c,0x9b,0xf6,0x1c,0x62,0xa5,0x8c,0x7e,0xe5,0x72,0x72,0x41,0xae,0xb8, + 0xe8,0xb4,0x02,0xd4,0x7f,0x78,0x56,0xd5,0xa9,0xe3,0x04,0xf7,0xe9,0x58,0x90,0x1c, + 0x30,0xcf,0x35,0xb3,0x03,0x83,0x85,0xe8,0x07,0x5c,0x73,0x46,0xaf,0x74,0x08,0xbe, + 0xdc,0xe3,0xde,0xbd,0x27,0xc1,0x69,0x9d,0x46,0x06,0xf7,0x15,0xe6,0xb8,0xc2,0x64, + 0x7d,0xec,0xd7,0xa3,0xf8,0x0e,0x5c,0xea,0x11,0x23,0x7f,0x78,0x57,0x55,0x3d,0x2a, + 0x45,0x99,0xd5,0x57,0x83,0x3e,0xd3,0xf0,0x5d,0xec,0x9a,0x4c,0xd0,0x6a,0x10,0x9c, + 0x3c,0x2e,0xae,0xbf,0x55,0x39,0xfd,0x7a,0x57,0xd7,0x17,0x7e,0x5e,0xa5,0x66,0x97, + 0x76,0xc0,0x34,0x17,0x71,0x2c,0xc8,0x7d,0x15,0xc6,0xec,0x71,0xe8,0x72,0x2b,0xe3, + 0x5b,0x69,0x3e,0xcf,0x66,0xbb,0x7f,0xbb,0x5e,0xff,0x00,0xf0,0xab,0xc4,0x8f,0xaa, + 0x68,0xb7,0x3a,0x14,0xd2,0x06,0x9b,0x4e,0x6f,0x36,0x20,0x4f,0x26,0x19,0x0f,0x23, + 0xe8,0xad,0xf9,0x03,0x5e,0xea,0xaf,0x7a,0x8a,0x07,0x91,0x6d,0x0e,0x6b,0xc5,0xda, + 0x62,0x23,0x6f,0x8b,0x80,0x0e,0x30,0x06,0x30,0x3b,0x1c,0xd7,0x93,0xcb,0x6c,0x32, + 0xde,0x5a,0x90,0xce,0x49,0x24,0xf3,0x9c,0x7b,0xd7,0xbb,0xf8,0xb6,0xca,0x52,0xec, + 0xed,0x21,0x08,0xa7,0x01,0x41,0xe3,0xd6,0xbc,0xc6,0x68,0x51,0x24,0x25,0xb8,0x2b, + 0xdf,0xbd,0x39,0xcd,0x73,0x58,0xe7,0xd9,0x9c,0x14,0xb6,0xf1,0xcd,0x12,0x96,0x66, + 0x46,0x43,0x9c,0x0e,0x87,0x9c,0x7e,0x15,0x98,0xaa,0x11,0xc3,0xa0,0xf9,0x73,0xc1, + 0xef,0x5d,0x4e,0xa1,0x16,0xd2,0x5d,0x33,0xbb,0xb1,0xe9,0x9a,0xa1,0x02,0x61,0x00, + 0x6c,0x65,0x48,0xe7,0xeb,0xd7,0x20,0xd2,0x4d,0xa6,0x8d,0x79,0x8c,0xe8,0xed,0xf7, + 0xb1,0xc0,0x24,0xb1,0xef,0xdb,0xde,0xbb,0x0d,0x2e,0xd3,0x2d,0x94,0x1c,0x60,0x60, + 0x8e,0x3a,0xfb,0x56,0x2a,0x43,0xe6,0x36,0xd8,0xf0,0xef,0xbb,0xa8,0x1c,0x57,0x6b, + 0xa2,0xda,0xc8,0xcc,0xc5,0x86,0xdd,0xa3,0x92,0x78,0xad,0xf7,0xd0,0x7e,0x87,0xc9, + 0xdf,0xb5,0xff,0x00,0x8a,0x02,0x59,0xe8,0x1e,0x08,0xb5,0x38,0x2d,0xbf,0x52,0xba, + 0x03,0xd1,0x47,0x95,0x00,0x61,0xee,0x4b,0x30,0xff,0x00,0x76,0xbe,0x1a,0x44,0x2c, + 0x9b,0x5b,0xf8,0x4d,0x7a,0x97,0xc6,0x5f,0x16,0x7f,0xc2,0x5f,0xf1,0x13,0x5a,0xd6, + 0x23,0x7d,0xd6,0xeb,0x70,0x6d,0x2d,0xb1,0xd0,0x41,0x6b,0xfb,0xb5,0x03,0xd8,0xb0, + 0x66,0xfc,0x6b,0xcb,0xed,0xf2,0xce,0xc0,0x7a,0x1e,0x7f,0x5a,0xf1,0x31,0x55,0x39, + 0xa6,0xdf,0x63,0xda,0xa3,0x1e,0x58,0x24,0x48,0x14,0x0c,0x29,0xe7,0x07,0x8f,0xa5, + 0x4f,0x10,0x64,0x75,0xc0,0xe0,0x1a,0xa9,0x20,0x70,0xe7,0xd7,0x1d,0x6a,0xec,0x24, + 0x81,0x91,0xfe,0x7e,0x95,0x0d,0xf6,0x2c,0xb4,0xbf,0x7b,0x27,0xa0,0x3c,0x7e,0x35, + 0x71,0x63,0xf3,0x2d,0xcb,0xfb,0xd5,0x69,0x54,0x81,0x9e,0xb8,0x23,0xf0,0xab,0xf6, + 0x63,0x2b,0x22,0xb9,0xc0,0xc6,0x00,0xfa,0xf4,0xac,0x54,0xfd,0xeb,0x77,0x1c,0x9b, + 0xd0,0xbd,0xa1,0x5c,0x3c,0x37,0x38,0x1e,0xa2,0xbe,0x91,0x7b,0xa7,0xbd,0xf0,0x0d, + 0xd3,0x64,0xb3,0x44,0x55,0xcf,0xb7,0x38,0x35,0xf3,0x2e,0x9e,0x5a,0x3b,0xbc,0xf6, + 0x06,0xbe,0x8b,0xf0,0xf3,0xad,0xc7,0x85,0x75,0x4b,0x61,0x9c,0x35,0xbb,0x91,0xff, + 0x00,0x01,0x19,0xfe,0x75,0x85,0x25,0x69,0xee,0x6b,0x87,0x97,0x2d,0x65,0x26,0x7c, + 0x3d,0xe2,0x6b,0x67,0xbb,0xd6,0x18,0x1e,0x70,0x4f,0x4a,0xb9,0xa4,0xe8,0x26,0x52, + 0x32,0xbc,0x57,0x58,0xfa,0x61,0x9f,0x53,0x91,0xc8,0xe0,0x1a,0xeb,0x6d,0x6d,0xa3, + 0xb4,0x4e,0x9c,0x8a,0xfb,0x6a,0xb9,0x8f,0x25,0x18,0xc2,0x05,0xce,0xa2,0x8c,0x75, + 0x29,0xe9,0xfa,0x34,0x36,0xc8,0xbb,0xc0,0x02,0xb6,0xc4,0x91,0xc4,0x00,0x84,0x63, + 0x1d,0xcd,0x52,0x92,0x62,0xc7,0x93,0x80,0x3b,0x54,0x5e,0x61,0xc0,0xe6,0xbc,0x87, + 0x37,0x37,0x79,0x1c,0x75,0x2b,0x36,0xf4,0x34,0x96,0x4d,0xc7,0x9e,0xb5,0x75,0x0e, + 0xee,0x9d,0x6b,0x19,0x25,0x3c,0x0c,0xd5,0xf8,0x64,0x27,0xae,0x6b,0x68,0xa5,0xb1, + 0x94,0xaf,0xd4,0xda,0xb7,0xe1,0xba,0xf5,0xfe,0x75,0xd0,0x41,0x2e,0xd5,0x04,0xf5, + 0x1e,0xbc,0x57,0x2f,0x0b,0x90,0x40,0xc7,0x4a,0xb8,0xb7,0x07,0x1c,0x1e,0xbc,0x50, + 0xe6,0x93,0xb0,0xa2,0x93,0xd0,0xe9,0x5a,0xef,0x6a,0x9c,0x1f,0x7f,0xa5,0x62,0x5d, + 0x5c,0x97,0xc8,0xce,0x7e,0x9e,0xf5,0x13,0x4e,0x42,0x92,0x3f,0x5a,0xa4,0xce,0x1c, + 0xfd,0x6b,0x9a,0xb4,0xd5,0xac,0x12,0xd0,0xa8,0xfb,0x9d,0xb8,0xe7,0x35,0x34,0x70, + 0x3e,0x7a,0x55,0xc8,0x6d,0xf7,0x7b,0xd6,0xbc,0x36,0x63,0x00,0xd7,0x1c,0x29,0x26, + 0xee,0x67,0x29,0x15,0x2d,0x63,0x75,0x22,0xba,0xab,0x46,0x65,0xfe,0x75,0x9e,0x90, + 0x00,0x72,0x01,0xf6,0xad,0x08,0xba,0x72,0x72,0x6a,0x9c,0x16,0xe8,0x86,0xce,0x82, + 0xde,0x73,0x81,0xcd,0x77,0x9e,0x17,0x80,0xdd,0x5d,0xa9,0xc6,0x79,0xc5,0x79,0xcd, + 0xb0,0x6e,0x33,0xeb,0xd2,0xbd,0xe3,0xe1,0xd6,0x92,0xd3,0xdc,0x45,0x91,0xd4,0x83, + 0x5e,0x7e,0x65,0x8a,0x54,0x30,0xd3,0x9b,0x3b,0xf2,0xaa,0x0e,0xb6,0x22,0x30,0x3e, + 0xa8,0xf0,0x3d,0x80,0xb5,0xd3,0x50,0xb0,0xc1,0x22,0xbb,0x76,0x93,0xcb,0x4d,0xd9, + 0xe7,0xa5,0x67,0x58,0xc6,0xb6,0x96,0x89,0x10,0xe0,0x2a,0x8a,0xac,0xf7,0x7b,0xe6, + 0x23,0x39,0x0b,0x5f,0xce,0x98,0xda,0x9c,0xf5,0x67,0x5a,0x4f,0x56,0xcf,0xdc,0x68, + 0x47,0x92,0x9a,0x82,0xe8,0x68,0x34,0x84,0x0c,0xf7,0x3c,0x9a,0xcf,0x9a,0x7c,0x1d, + 0xb5,0x04,0xd7,0x65,0x7b,0xd5,0x0f,0x3f,0x7b,0xff,0x00,0x3f,0x4a,0xf9,0xba,0xf3, + 0xe6,0x6c,0xef,0xa6,0xb4,0x2f,0xee,0xc8,0x35,0x2d,0x9b,0x95,0x73,0xf8,0x7b,0x56, + 0x5c,0xd3,0xed,0xf9,0x72,0x39,0xa7,0xdb,0xdc,0x81,0x96,0xcd,0x78,0xf5,0xde,0xb6, + 0x3b,0x28,0xef,0x73,0xae,0x13,0x09,0x14,0x00,0x7a,0x53,0xd2,0xeb,0xcb,0x20,0x74, + 0xae,0x6e,0x1b,0xe0,0x11,0x8d,0x02,0xf0,0x3b,0x63,0x3c,0x7a,0xd7,0x33,0x4b,0x76, + 0x76,0xf3,0x3b,0x68,0x7f,0xff,0xd2,0x4f,0x1f,0x7c,0x51,0xd2,0x34,0xcd,0x6a,0x1d, + 0x27,0xc6,0xda,0x42,0xdf,0xd9,0xde,0xda,0x43,0x75,0x1d,0xd4,0x64,0x79,0xdb,0x65, + 0x04,0x30,0x39,0xc1,0xe1,0x81,0xe8,0x7f,0x0a,0xf2,0x4b,0xff,0x00,0x08,0xfc,0x18, + 0xf1,0x33,0xb5,0xe6,0x85,0xe2,0x51,0xa5,0x4b,0x2e,0x4f,0x93,0x7e,0xa4,0x05,0xf6, + 0xdc,0x02,0x9f,0xc7,0x06,0xb1,0x7e,0x2f,0x5c,0x26,0xb7,0xe1,0xed,0x0f,0x5a,0x4c, + 0x13,0x6b,0xbe,0xce,0x43,0xdc,0x6e,0x01,0xd0,0x7e,0x8d,0x5f,0x3f,0x45,0x7a,0x63, + 0xe3,0x71,0x1c,0xf2,0x3d,0x45,0x7e,0x29,0x88,0xc5,0x55,0xa7,0x37,0x07,0x15,0x25, + 0xe7,0xfe,0x6a,0xcc,0xf1,0xa3,0x4b,0x99,0x73,0xa7,0xb9,0xed,0xf7,0xbf,0x08,0xf5, + 0x78,0x95,0xa7,0xd0,0xaf,0x2c,0xb5,0x98,0x31,0x90,0xd6,0x73,0xa4,0xa7,0x1e,0xbb, + 0x32,0x1f,0xf4,0xaf,0x28,0xd4,0xb4,0xbb,0xcd,0x3e,0x63,0x1d,0xd4,0x4d,0x1b,0xa9, + 0xe4,0x30,0x20,0x83,0xee,0x0f,0x35,0x56,0x2d,0x45,0xe1,0x22,0x48,0x1f,0x63,0x29, + 0xc8,0x20,0x90,0x46,0x3d,0xc5,0x77,0x9a,0x67,0x8e,0xa5,0x9d,0x16,0xd7,0xc4,0x11, + 0xa6,0xab,0x6a,0xd8,0x18,0x9b,0xfd,0x6a,0x8f,0x54,0x94,0x7c,0xc3,0xf1,0x24,0x7b, + 0x57,0x14,0xb1,0xb1,0xeb,0x0b,0x2f,0xbf,0xfa,0xfc,0x7d,0x06,0xa9,0xb5,0xb9,0xf4, + 0x97,0xec,0xff,0x00,0xac,0x35,0xd7,0x84,0xcd,0x93,0x9e,0x6d,0x27,0x78,0xf1,0xd3, + 0x00,0x9d,0xc3,0xf9,0xd7,0xd3,0x89,0x61,0x6d,0x7d,0x6f,0xc3,0x14,0x90,0x0e,0x08, + 0xe9,0xf8,0xd7,0xc9,0xbf,0x0c,0x3f,0xb0,0xf4,0xf9,0xe7,0x9f,0x42,0xba,0xdf,0x6d, + 0x76,0xca,0xde,0x4c,0x9f,0x2c,0xd1,0x48,0x07,0x21,0x80,0xe0,0x82,0x3a,0x30,0xe3, + 0xe9,0x5f,0x51,0xe9,0x77,0x86,0x4d,0x91,0x23,0x63,0x79,0x51,0xf9,0xd7,0xe0,0x3c, + 0x6f,0x84,0xe4,0xcc,0xaa,0xf2,0xea,0xa5,0xaa,0xf9,0x9f,0xae,0xf0,0xce,0x25,0xcb, + 0x03,0x4d,0xa7,0xaa,0xd0,0x93,0x4c,0xf0,0xa6,0xb5,0xab,0xde,0x4b,0x69,0x63,0x00, + 0x63,0x12,0xef,0x91,0x99,0x82,0x22,0xa9,0xe8,0x4b,0x1e,0x39,0xed,0xde,0xbd,0x52, + 0xdd,0x60,0xd1,0xf4,0xd8,0xb4,0xcb,0x6c,0x0d,0x8b,0x99,0x18,0x75,0x79,0x0f,0xde, + 0x63,0xfc,0x87,0xb5,0x24,0x77,0xa9,0xa6,0x44,0xb6,0x56,0x87,0xe4,0xc6,0x19,0xf1, + 0x82,0xe4,0xf3,0x93,0x8f,0xd3,0xd0,0x56,0x5c,0xd2,0xb3,0x36,0xe1,0xcf,0xad,0x7c, + 0xed,0x1c,0x2c,0x28,0xfc,0x3f,0x13,0xdf,0xfe,0x01,0xef,0xd6,0xc5,0x4e,0xae,0x8f, + 0x61,0xd2,0x4a,0xdf,0x78,0xf2,0x4d,0x40,0x72,0x9c,0x67,0x21,0xbb,0x54,0xbe,0x59, + 0x65,0xde,0xbd,0x3d,0x2a,0x29,0x13,0xe5,0xc8,0x1d,0xab,0x46,0xb5,0x39,0x9d,0x42, + 0x09,0x1f,0x00,0x11,0x80,0x56,0xa1,0x92,0x40,0xc0,0x7a,0xf4,0xc9,0xf7,0xa6,0xc8, + 0x70,0xd9,0x27,0xeb,0x55,0x25,0x24,0x30,0x61,0xd2,0xae,0x3a,0xe8,0x09,0xdf,0x63, + 0x41,0x46,0xd1,0x9e,0xa2,0xb3,0xee,0x01,0x56,0x5f,0x73,0x56,0xd2,0x40,0x54,0x1e, + 0x9c,0xd6,0x7d,0xe4,0x99,0x5f,0xa3,0x50,0x96,0xba,0xa3,0x6a,0x7a,0x95,0x0c,0xb8, + 0x7c,0x74,0x39,0xae,0x83,0x4d,0xbe,0x75,0x28,0x49,0xea,0x47,0x35,0xca,0x4a,0xc0, + 0x1c,0xfb,0xe6,0xa6,0xb5,0xb8,0x01,0x87,0x38,0x03,0x9a,0x1c,0x5a,0x77,0x46,0xee, + 0x37,0x47,0xa5,0x5e,0x5c,0x80,0x9f,0x29,0x39,0x23,0x24,0xd6,0x04,0xd2,0xfc,0xdf, + 0x31,0x07,0x3f,0x85,0x39,0x27,0x13,0xaa,0x9e,0xa1,0x40,0xaa,0x33,0x15,0x27,0x27, + 0x9c,0x9c,0xe0,0x57,0x26,0x32,0x0d,0xbe,0x64,0x3a,0x6e,0xfa,0x16,0x12,0x7d,0xad, + 0xf4,0xff,0x00,0x22,0xbb,0x0d,0x07,0xc4,0x0d,0x65,0x3a,0xa3,0x9c,0xa1,0x22,0xbc, + 0xe5,0xe5,0x20,0xfc,0xa7,0x83,0x4f,0x4b,0xa2,0x83,0x1d,0x2b,0x8a,0x0d,0xc5,0xde, + 0x3b,0x97,0x28,0x5d,0x34,0x7d,0x51,0xa8,0x5b,0xe9,0xfe,0x30,0xd1,0xd6,0xca,0x47, + 0x02,0x41,0xf3,0xc3,0x2f,0x52,0x8f,0x8e,0xfe,0xc7,0xb8,0xaf,0x00,0xbe,0xb6,0xbb, + 0xd2,0x6f,0x5e,0xc2,0xf1,0x76,0x49,0x1b,0x60,0xfa,0x11,0xea,0x0f,0x70,0x7a,0x83, + 0x5a,0x1e,0x19,0xf1,0x7b,0x69,0x52,0x85,0x95,0x8b,0x46,0x72,0x39,0xed,0x5d,0x27, + 0x8b,0x65,0xb6,0xd7,0xec,0xd2,0xee,0x02,0xad,0x34,0x40,0xb2,0x30,0xea,0xc9,0xdd, + 0x7f,0x0e,0xd5,0x39,0x9e,0x1e,0x38,0x9a,0x7e,0xd5,0x7c,0x6b,0xf1,0x35,0xcb,0xab, + 0x3a,0x33,0xf6,0x72,0xf8,0x59,0x8d,0xa4,0x5f,0x88,0xe6,0x43,0x9c,0x00,0x6b,0xd4, + 0xe5,0xd9,0x7b,0x6a,0xb3,0x2b,0x12,0xa4,0x75,0x3c,0x0a,0xf9,0xf2,0xce,0xe9,0x90, + 0xef,0x3c,0x2a,0x9e,0x49,0xe8,0x0d,0x77,0x7a,0x37,0x8f,0xe2,0xd3,0x65,0x31,0x4b, + 0xfb,0xdb,0x42,0xa7,0x7a,0x9e,0x0a,0xb7,0xf7,0x97,0x3d,0x41,0xee,0x3f,0x1a,0xe3, + 0xc8,0x6b,0xca,0x94,0xe5,0x4e,0x51,0xf7,0x5f,0x5e,0xcc,0xeb,0xce,0xa9,0x42,0x70, + 0x52,0x52,0x5c,0xcb,0xa7,0x74,0x73,0x1f,0x11,0xad,0xda,0x5d,0x1e,0xee,0xda,0x46, + 0x0c,0xb2,0x46,0xeb,0x8f,0xa8,0xaf,0xca,0x19,0x9a,0x48,0xee,0x26,0x89,0xf8,0xf2, + 0x9d,0x97,0x9f,0x55,0x38,0x35,0xfa,0x9f,0xe3,0x3f,0x10,0x58,0x6a,0xf0,0xc9,0x2d, + 0xbf,0x00,0x83,0x80,0x46,0x3b,0x7b,0x76,0xaf,0xcc,0xcf,0x17,0x58,0x35,0xa7,0x88, + 0xb5,0x08,0x93,0xe5,0x06,0x76,0x61,0xf4,0x7f,0x9b,0xfa,0xd7,0xea,0xbc,0x39,0x55, + 0x7b,0xea,0xe7,0xe5,0x1c,0x59,0x49,0xba,0x74,0xe5,0x63,0x8d,0x59,0x4b,0xb3,0xaf, + 0x50,0xe6,0xab,0x48,0xc3,0xcc,0x75,0x6e,0x80,0x54,0x72,0x07,0x89,0xd9,0x73,0xc8, + 0x38,0xcd,0x35,0xe4,0x18,0x6c,0x9c,0x13,0x5f,0x77,0x4a,0x2a,0xe8,0xf8,0x3d,0x76, + 0x33,0xe5,0x50,0x1c,0x30,0x1f,0x85,0x55,0x93,0x73,0x1f,0x9f,0xe8,0x3d,0x2a,0x63, + 0x2a,0xb3,0x85,0xcf,0x35,0x1c,0xee,0xa5,0x82,0xa8,0xc9,0xf6,0xaf,0x46,0x92,0xb2, + 0x0b,0x23,0x26,0x58,0x48,0x24,0x8e,0x07,0x4a,0xa5,0x3c,0x44,0xb7,0x96,0x46,0x7d, + 0xcd,0x68,0xdc,0x3e,0xd6,0x23,0xf3,0xac,0xf9,0x1c,0xb1,0xf6,0xf7,0xaf,0x56,0x8a, + 0x76,0x05,0x72,0xab,0x28,0xc1,0xda,0xb9,0xaa,0x41,0x50,0x63,0x23,0x06,0xb4,0xb7, + 0xa8,0x53,0x8f,0xad,0x64,0xc9,0x29,0xf3,0x06,0x2b,0xd0,0xa3,0xb2,0x4c,0x45,0x94, + 0x6c,0x3b,0x28,0x18,0xcf,0xeb,0x4f,0x43,0xb9,0x38,0xfe,0x1a,0x81,0x3e,0xf1,0x63, + 0xce,0x07,0xf3,0xa7,0xc2,0x41,0x46,0x00,0xe3,0xad,0x75,0xc6,0x5a,0xd8,0x0b,0x00, + 0x60,0xa9,0x1d,0x6b,0x52,0xda,0x4d,0xad,0x59,0x28,0x46,0xd0,0x8d,0xc7,0xbd,0x5f, + 0x83,0x1b,0x4e,0x0f,0x7f,0xce,0xb4,0x8a,0xb8,0x1d,0x0e,0xc2,0xf1,0xef,0x1d,0x2b, + 0xa5,0xf0,0xc5,0xd3,0x5a,0xdf,0xc6,0xe0,0xe3,0x04,0x1f,0x7a,0xe6,0xad,0xd8,0x98, + 0x82,0xf6,0x1c,0x56,0xb6,0x9c,0xc2,0x39,0x94,0x9c,0x60,0x1a,0xda,0x4b,0x41,0x4b, + 0x54,0xcf,0xb4,0xa0,0xd4,0x3c,0xfd,0x3e,0x07,0x43,0xd5,0x06,0x7e,0xb5,0xa5,0xe0, + 0xdf,0x17,0xbf,0x85,0x3c,0x53,0x67,0xaa,0xf5,0x89,0x1f,0xcb,0xb8,0x5f,0xef,0x42, + 0xff,0x00,0x2c,0x83,0xf2,0xe4,0x7b,0x81,0x5e,0x57,0xe1,0xdd,0x4b,0xcd,0xd3,0x23, + 0x4d,0xd9,0xda,0x31,0xcf,0xb5,0x59,0x9e,0xe3,0x9d,0xd9,0xfa,0x54,0xba,0xcd,0x54, + 0x53,0x8e,0xe7,0x92,0xd5,0x9d,0x8f,0xd0,0xbf,0x11,0x58,0x5a,0x5c,0xdb,0x9b,0x98, + 0xcf,0x9a,0x93,0x20,0x64,0x65,0xe8,0xca,0x46,0x55,0xbf,0x10,0x6b,0xc2,0xf5,0x6b, + 0x45,0x88,0x90,0x01,0x40,0x4f,0x2d,0xdb,0xaf,0x4a,0xea,0x7e,0x10,0x78,0xb3,0xfe, + 0x12,0x3f,0x05,0xbe,0x91,0x70,0xe1,0xef,0x34,0x62,0x22,0xc1,0xe5,0x8d,0xb3,0xf3, + 0x19,0xf7,0xda,0x72,0x9f,0x95,0x4d,0xad,0xd9,0xa9,0x76,0x28,0x3b,0xe3,0x69,0xe4, + 0x64,0xfa,0x1a,0xfa,0x09,0x49,0x4e,0x31,0x9c,0x4e,0x5a,0x8b,0x53,0xcb,0x6e,0xe1, + 0xd8,0x32,0x7e,0x60,0xa7,0x20,0x91,0x9e,0x95,0xcb,0xc7,0xb1,0xae,0xd8,0x8c,0xa9, + 0x66,0x3c,0x30,0xe0,0xe0,0x75,0xaf,0x40,0xba,0x8f,0x64,0x3e,0x5b,0xae,0x70,0xc7, + 0x07,0x3c,0xf3,0xd3,0x35,0xce,0x1b,0x78,0x52,0xe1,0x0c,0x9c,0xff,0x00,0x77,0x1c, + 0xe0,0xd4,0xc9,0x6c,0x41,0x35,0x94,0x25,0xb0,0xc3,0x2a,0x77,0x1e,0xc3,0x1c,0x56, + 0x4f,0xc4,0xff,0x00,0x14,0x1f,0x04,0x7c,0x31,0xd6,0xb5,0x98,0xd8,0x2d,0xd3,0xc5, + 0xf6,0x5b,0x42,0x7b,0xcf,0x73,0xfb,0xb4,0x3f,0x86,0x77,0x7d,0x05,0x76,0xb6,0x91, + 0xc5,0x14,0x1e,0x62,0x2e,0x4f,0x38,0x2d,0xc7,0x3f,0x43,0x5f,0x1e,0xfe,0xd5,0x7e, + 0x28,0x92,0x69,0xb4,0x5f,0x08,0xc4,0xdf,0xbb,0x88,0x3d,0xfd,0xc2,0x83,0xc1,0x91, + 0xbf,0x77,0x16,0x40,0xf4,0x1b,0x8d,0x3a,0xf5,0x55,0x2a,0x6e,0x57,0xd4,0xe9,0xc3, + 0x53,0x73,0x9a,0x5d,0x0f,0x89,0xdd,0x09,0x04,0x67,0x21,0x71,0xd7,0xaf,0x1c,0x7e, + 0x74,0xdb,0x7e,0x24,0x08,0x3a,0x74,0xab,0xaf,0x10,0x52,0x4e,0x3a,0x93,0xfe,0x73, + 0x50,0x22,0x61,0xc3,0x01,0xc6,0x6b,0xc1,0x8d,0x9a,0x77,0x3d,0xcb,0x5b,0x42,0xc4, + 0xaa,0xab,0x26,0x1b,0xa1,0x1c,0x1a,0x91,0x06,0x0f,0x18,0xc8,0xe7,0x1f,0xca,0x9f, + 0x2c,0x61,0x95,0x5b,0xdf,0x1f,0x8d,0x42,0x5b,0x03,0xdc,0x71,0x5a,0x45,0x59,0x5c, + 0x76,0x2c,0x9e,0x43,0x02,0x33,0x91,0xff,0x00,0xd7,0xab,0x96,0x72,0x2e,0x59,0x58, + 0x67,0x81,0xfe,0x7f,0x0a,0xa1,0x17,0x07,0x69,0x38,0xff,0x00,0xeb,0xd5,0xab,0x62, + 0x9e,0x67,0x23,0x8c,0x71,0x8e,0xf5,0xc9,0x55,0x3e,0x85,0xf2,0x5d,0x58,0xd6,0x84, + 0x27,0x9f,0xe6,0xf4,0x39,0xe8,0x7b,0xd7,0xd0,0x9e,0x0c,0x8d,0x3e,0xc1,0x71,0x1b, + 0x10,0x3c,0xcb,0x69,0xb1,0xee,0x0a,0x1a,0xf9,0xea,0x1d,0xce,0xdb,0x30,0x7d,0x47, + 0xe1,0xd2,0xbd,0xaf,0xc1,0xf3,0xc9,0x25,0xa3,0xee,0xe4,0x2c,0x6e,0x31,0xdf,0x90, + 0x68,0x8c,0xed,0x34,0xec,0x42,0x56,0x6a,0xe7,0x8f,0xec,0x48,0xa4,0x2f,0xc1,0xe6, + 0xa2,0x92,0xe3,0x71,0x20,0xd5,0x39,0xee,0x1b,0x79,0x5c,0xf0,0x4d,0x53,0xf3,0x73, + 0xce,0x73,0x5e,0xc4,0x5b,0xd1,0xb3,0x09,0xcd,0xbd,0x8d,0x0f,0x30,0xb7,0x00,0xd2, + 0xaa,0x92,0x70,0x3f,0x2a,0xab,0x1b,0x1c,0xd5,0xd8,0xb2,0x5b,0xf4,0x35,0xd7,0x4a, + 0x3a,0xea,0x64,0xef,0xbb,0x26,0x09,0xc6,0xe1,0x9f,0xc2,0xad,0xa1,0xda,0x31,0xda, + 0x9a,0xaa,0x36,0xf0,0x7b,0xf5,0xa8,0x9e,0x40,0xbc,0x66,0xb6,0x9a,0x49,0x16,0x9d, + 0xcd,0x14,0x9b,0x27,0x19,0xeb,0xf9,0xd6,0x84,0x79,0xc8,0x35,0x83,0x0b,0x73,0xd7, + 0xa5,0x6e,0x40,0xdd,0xcd,0x73,0xc5,0x75,0x0b,0x24,0x3d,0xf7,0x76,0xcd,0x2c,0x00, + 0x31,0x19,0xa7,0x48,0xca,0x40,0x07,0xa9,0xed,0x4b,0x00,0x19,0x04,0x7d,0x3d,0xeb, + 0x0a,0xa9,0x5f,0x53,0x29,0x48,0xda,0xb5,0x40,0x46,0x31,0x8c,0x73,0x5d,0x0c,0x10, + 0xe7,0x07,0x00,0x56,0x1d,0x9b,0x0c,0xe0,0xf5,0xae,0x9e,0xd5,0xd3,0x1d,0x3a,0xff, + 0x00,0x9e,0x6a,0x29,0xab,0x99,0x54,0xb5,0xb5,0x0f,0x21,0xbd,0x3a,0x53,0xd2,0x12, + 0x3a,0xe4,0x7a,0x71,0x5a,0xaa,0x14,0x8c,0x54,0xc2,0x20,0x7a,0x73,0x5b,0xca,0x96, + 0x9a,0x18,0xa6,0x26,0x9b,0x6e,0x64,0x99,0x50,0xff,0x00,0x7a,0xbe,0xb6,0xf8,0x5f, + 0xa6,0x6c,0xd9,0x31,0x03,0x0a,0x2b,0xe6,0x9d,0x06,0xdb,0x75,0xda,0x82,0x3b,0xd7, + 0xd7,0x7e,0x0c,0x55,0xb4,0xd3,0x83,0xf7,0x20,0x57,0xe7,0x7c,0x73,0x89,0xf6,0x38, + 0x6f,0x67,0xdc,0xfb,0x9e,0x0d,0xc3,0x73,0x55,0x75,0x5f,0x43,0xd2,0x6f,0x2f,0x56, + 0x18,0xca,0xaf,0x53,0xc5,0x61,0x47,0x75,0x86,0x27,0x3c,0xd6,0x7d,0xed,0xee,0xef, + 0x9b,0x3c,0x0a,0xca,0x6b,0xc2,0x0f,0x26,0xbf,0x0f,0xc6,0x4d,0xf2,0xd8,0xfd,0x52, + 0x85,0x3b,0xbb,0x9d,0x0c,0xd7,0x2c,0xed,0x80,0x78,0xa5,0x49,0x95,0x07,0x7f,0xff, + 0x00,0x5d,0x60,0xc7,0x38,0x73,0xcd,0x58,0xf3,0x49,0xc8,0xcd,0x78,0xd5,0x15,0x93, + 0x3d,0x18,0xd3,0x2d,0x5c,0x4e,0x4f,0x3f,0xfe,0xaa,0x89,0x2f,0xf6,0xa1,0x07,0xb5, + 0x56,0x62,0x79,0xcf,0xf9,0xc5,0x63,0xb4,0x87,0x26,0xbc,0xd7,0x0b,0xbb,0x9d,0x0a, + 0x27,0x4b,0x1d,0xd9,0x65,0xf9,0x4f,0x15,0x7e,0xde,0x52,0x06,0x7d,0xab,0x02,0xd4, + 0x33,0x21,0xc7,0x6f,0xeb,0x57,0xc4,0x82,0x28,0xce,0xee,0x0d,0x71,0xe3,0x3d,0xd8, + 0x3b,0x1d,0x78,0x58,0x73,0x4d,0x23,0xff,0xd3,0xf9,0x5d,0x6f,0xa5,0xd4,0xfc,0x01, + 0xa9,0xdb,0x11,0xbc,0xc0,0x60,0xb9,0xdc,0x7b,0x04,0x6d,0xac,0x7f,0x23,0x5e,0x28, + 0xf2,0x30,0x63,0x9e,0x33,0x5e,0x97,0xe1,0x09,0xd6,0xe7,0x4a,0xd5,0x74,0xe7,0x6c, + 0xf9,0xf6,0x32,0xa0,0x1c,0x9e,0x54,0x6f,0x1d,0x3b,0xfc,0xb5,0xe5,0x52,0x9e,0x4e, + 0x7f,0xcf,0xe1,0x5f,0x8e,0xe3,0x61,0xfb,0xc3,0xcf,0xc1,0xab,0xd3,0x71,0xec,0xcb, + 0x4b,0x29,0x19,0xc1,0xef,0x57,0xe1,0xbb,0x58,0xf0,0x13,0xbf,0x5e,0x2b,0x9e,0xf3, + 0x70,0x70,0x33,0x4e,0x59,0x8f,0xaf,0x7f,0xca,0xb8,0xe5,0x43,0x9b,0x73,0xa5,0xc1, + 0x5b,0x43,0xdb,0xfe,0x1c,0xeb,0xcf,0x69,0xe2,0x4b,0x55,0xdf,0x85,0x95,0x8a,0x11, + 0xdb,0x91,0x5f,0x79,0x78,0x76,0xf8,0xc9,0x34,0x2e,0xc7,0x8d,0xcb,0x5f,0x96,0xba, + 0x66,0xaa,0xf6,0x77,0x90,0xdc,0xa3,0x61,0xa2,0x75,0x7e,0x31,0xd8,0xd7,0xe8,0x37, + 0x83,0xb5,0xb8,0xee,0xed,0x6d,0xae,0x22,0x6c,0xab,0x84,0x60,0x6b,0xf2,0x3f,0x10, + 0x32,0xe7,0x0a,0x94,0xeb,0xa5,0xbe,0x9f,0x71,0xf6,0x9c,0x21,0x5b,0xdc,0xa9,0x41, + 0xfa,0x9f,0x58,0x28,0x67,0x1f,0xd0,0xd5,0xf8,0xa1,0x18,0xf9,0xce,0x73,0x54,0xec, + 0x1b,0xce,0x89,0x24,0xfe,0xf0,0x1f,0xad,0x5f,0xf2,0xd9,0x1b,0x04,0xfb,0x8f,0xa5, + 0x7e,0x7b,0x08,0xe8,0x7d,0x5c,0xe5,0xd0,0x98,0xc7,0xb1,0x78,0xe9,0x50,0x92,0xa3, + 0x04,0x01,0x8a,0x0c,0xcc,0xa7,0x9e,0x95,0x52,0x79,0x14,0x72,0x08,0xa1,0xad,0x48, + 0x2b,0xdc,0xaa,0x02,0x4f,0x63,0xcd,0x62,0x4e,0xdb,0x5b,0x1f,0xa5,0x68,0xcb,0x71, + 0x80,0x47,0x50,0x7f,0xcf,0x7a,0xc3,0xbb,0x94,0x06,0xe0,0xe7,0x22,0x92,0x8a,0xe8, + 0x6d,0x04,0xf6,0x2d,0x09,0x0a,0xa1,0xc9,0x04,0xf5,0xac,0x8b,0x99,0x9f,0x73,0xf3, + 0xf2,0x90,0x38,0xa6,0x3d,0xd0,0xdd,0x8c,0xfe,0x1d,0x6b,0x26,0xe6,0xe0,0x92,0x70, + 0x49,0xe2,0xae,0x14,0xfd,0xe3,0xb2,0x9c,0x2c,0x5f,0x79,0x4b,0x22,0xe6,0xa2,0x59, + 0xb0,0xde,0xfe,0xd5,0x98,0x27,0xcc,0x4b,0x93,0xf5,0xa3,0xed,0x07,0x21,0x87,0x3c, + 0xd6,0x92,0x83,0xdc,0xd4,0xee,0x74,0xdb,0x8f,0x31,0x18,0x13,0x8e,0x9f,0x95,0x59, + 0x9e,0x46,0x39,0xe9,0xf5,0x15,0xca,0xd8,0x5c,0x6c,0x94,0x2e,0x78,0x35,0xb9,0x2c, + 0xa1,0x81,0x00,0xf2,0x6b,0x0a,0x94,0xf9,0xa0,0x4a,0x49,0x32,0xbc,0xb3,0x61,0xb2, + 0x0e,0x71,0x48,0x92,0xef,0x19,0x7e,0x3e,0xb5,0x48,0x9c,0x70,0x72,0x3d,0x2a,0x37, + 0x76,0xe8,0xa7,0x1e,0xbf,0x4a,0xf2,0x65,0x0e,0x86,0xd2,0x5a,0x23,0x5f,0x25,0x70, + 0xc8,0x72,0x0d,0x6d,0x69,0xda,0xbc,0x96,0xeb,0xe5,0x31,0x25,0x4f,0x4f,0x63,0xed, + 0x5c,0xb2,0x4e,0x40,0xda,0x0f,0xa5,0x48,0x24,0xc3,0x7e,0xb4,0x92,0xb6,0x84,0x4a, + 0x36,0x36,0xf5,0x2b,0xa0,0xcb,0xb1,0x00,0x50,0x49,0xc8,0x1e,0xa7,0x9c,0xd7,0x3e, + 0xf2,0xed,0xc8,0xcd,0x32,0xe2,0xe3,0x77,0x5e,0x9d,0x2b,0x3e,0x49,0x7b,0x7e,0x5d, + 0xab,0x3c,0x3d,0x2e,0x59,0x38,0x95,0x53,0x54,0xa4,0x54,0xbf,0xb9,0x68,0xe3,0x6f, + 0xf6,0xab,0xe3,0xef,0x89,0xc0,0x5b,0xeb,0xc6,0x7e,0x9e,0x6c,0x6a,0xdf,0x88,0xe2, + 0xbe,0xad,0xd4,0x26,0xfd,0xd9,0xc9,0xc6,0x05,0x7c,0xad,0xf1,0x79,0x57,0xed,0xb6, + 0x92,0x74,0xca,0x32,0x93,0xef,0x90,0x6b,0xee,0xb8,0x65,0x5a,0xb2,0x8b,0x3e,0x33, + 0x8b,0x29,0x39,0x61,0x1c,0x92,0xda,0xc7,0x8e,0xcd,0x30,0x73,0x9e,0xfb,0xb3,0x54, + 0xcc,0xa8,0x51,0xd7,0x38,0x27,0x34,0x8e,0x87,0x6e,0x7a,0x73,0xf9,0xd6,0x6a,0xf0, + 0xf9,0xe7,0x07,0x39,0xaf,0xd3,0xa9,0x41,0x68,0x7e,0x5b,0x25,0x6d,0xc5,0xc3,0x6e, + 0x07,0x39,0xc0,0xe7,0xa0,0xa6,0xb1,0xcb,0x1d,0xbf,0x98,0xa7,0x3c,0xa3,0xa8,0xa8, + 0x03,0xfc,0xc4,0x0e,0xe2,0xbd,0x08,0xbe,0xac,0x91,0x92,0x61,0xb2,0x5b,0x9e,0x3f, + 0x2a,0xcf,0xb8,0x62,0x4f,0xd3,0xad,0x5d,0x2d,0x96,0x29,0xd7,0x8a,0xa5,0x2b,0x0c, + 0xf3,0xd7,0xd2,0xbd,0x0a,0x6a,0xda,0x8e,0xec,0xa8,0x39,0x18,0x1f,0x4a,0xa1,0xe5, + 0x82,0xf9,0x39,0xe0,0xd5,0xd6,0xda,0x0e,0x47,0x23,0x1d,0x2a,0xb2,0xb7,0xef,0x0a, + 0x9e,0xbf,0xce,0xbb,0xa9,0xb7,0x61,0x12,0x48,0x14,0x1c,0x0e,0xf5,0x0c,0x6c,0x39, + 0x1c,0xf1,0xf8,0x54,0x92,0x86,0x1d,0x07,0x18,0xa8,0x21,0xff,0x00,0x59,0x8c,0x0e, + 0x45,0x76,0x25,0xcd,0xb3,0x13,0x34,0x60,0x50,0xc7,0x07,0x19,0xf4,0xfa,0xd5,0xc8, + 0x80,0x1e,0xbf,0xfe,0xaa,0xcf,0xb6,0x3b,0x64,0xc6,0x39,0xab,0xb1,0x83,0xd3,0x38, + 0xef,0x4a,0x17,0xde,0xe1,0x7b,0x1b,0xb6,0x8f,0xc6,0xd6,0x3e,0xf5,0xaf,0x6d,0x8d, + 0xf9,0xc7,0x7c,0xe2,0xb0,0x2c,0xc9,0x3c,0x1a,0xda,0xb6,0x38,0x6c,0xf5,0xae,0xad, + 0x1a,0x4a,0xe0,0xd9,0xeb,0xbe,0x18,0xbf,0x68,0xe2,0x30,0x93,0xd6,0xba,0xe3,0x20, + 0x7c,0x75,0xaf,0x2a,0xd1,0xa7,0x68,0xae,0x14,0x12,0x7a,0xff,0x00,0x3a,0xf4,0x25, + 0x9d,0x87,0x53,0xc1,0xac,0x39,0x1a,0x9d,0xfa,0x1e,0x75,0x65,0x69,0x36,0x8f,0x49, + 0xf8,0x67,0xe2,0xdf,0xf8,0x44,0x7c,0x63,0x69,0x75,0x3b,0x1f,0xb1,0xdc,0x13,0x6b, + 0x74,0xb9,0xeb,0x14,0xbc,0x13,0xf5,0x53,0x86,0x1f,0x4a,0xfb,0x33,0x59,0xb1,0x53, + 0x28,0x99,0x09,0x6c,0xa8,0xc1,0xe0,0x86,0x07,0xa1,0x1f,0x51,0xcd,0x7e,0x70,0x4d, + 0x70,0xdb,0xc1,0x07,0xe9,0xeb,0x5f,0x7a,0xfc,0x2d,0xd7,0x97,0xc4,0xbe,0x0f,0xb7, + 0x49,0x5f,0x7d,0xcd,0x92,0x08,0x9f,0x77,0x2c,0x53,0xf8,0x0f,0xe1,0xd2,0xbd,0x3c, + 0x16,0x21,0xc2,0xa7,0xb1,0x96,0xcf,0x6f,0x53,0x1a,0xd4,0xef,0x05,0x23,0x23,0x51, + 0xb5,0x0a,0x8d,0xb0,0x61,0xf3,0xc1,0x3c,0xd7,0x3f,0x34,0x08,0xd2,0x26,0x46,0x79, + 0xcf,0x4c,0x9e,0x7a,0xe2,0xbd,0x2f,0x50,0x81,0x13,0x7e,0xf4,0x5f,0x5c,0xe3,0xfc, + 0x6b,0x94,0x91,0x26,0x13,0xc6,0x22,0x42,0x73,0xd4,0x81,0xd6,0xbd,0x39,0x68,0xce, + 0x12,0x91,0x8d,0x56,0xd4,0xcb,0x20,0x65,0x48,0xf2,0x79,0x1d,0x00,0xe4,0x9a,0xfc, + 0xb9,0xf8,0xb5,0xaf,0x4d,0xe2,0x4f,0x1d,0xea,0x9a,0x83,0x1c,0xa2,0xcc,0x61,0x88, + 0x74,0xc2,0x47,0xc0,0x03,0xf1,0xcd,0x7e,0x92,0xf8,0xff,0x00,0x51,0x7d,0x17,0xc3, + 0x37,0x53,0xc8,0xea,0xbb,0xd1,0x91,0x79,0x39,0xc0,0x04,0xb1,0xfc,0x85,0x7e,0x56, + 0x5f,0x3b,0x4f,0x2c,0xd7,0x12,0x1e,0x64,0x91,0x9c,0xe7,0xd5,0x8e,0x7f,0xad,0x78, + 0x79,0x96,0x25,0xca,0xb4,0x69,0xf6,0x3d,0x9c,0xba,0x9e,0x8e,0x6c,0xe7,0xe4,0x04, + 0x10,0xcc,0x3a,0xd5,0x71,0xf7,0x88,0x23,0x91,0xc8,0xab,0xb3,0x70,0x43,0x30,0xce, + 0x2a,0xb9,0x01,0x99,0x48,0x18,0x04,0x66,0xb2,0x8b,0xd2,0xc7,0x7c,0x9d,0xcb,0x88, + 0xbb,0xed,0x3a,0xf2,0x87,0x39,0xfe,0x55,0x9e,0xea,0x77,0x37,0x27,0x1f,0xe3,0x5a, + 0xd6,0xd1,0xe5,0x1f,0x9e,0x31,0xc8,0xaa,0x17,0x71,0x85,0xe4,0x7f,0x9c,0xf1,0x5d, + 0x10,0x4f,0xd9,0x27,0xd8,0x94,0xec,0xf5,0x23,0x4c,0xf5,0x3c,0xf4,0xe6,0xac,0x43, + 0x91,0x20,0xc7,0xaf,0xe8,0x6a,0xa4,0x67,0xe5,0xc8,0xeb,0xdb,0xd2,0xac,0xc4,0xc4, + 0x48,0x3e,0xa0,0x9a,0xe6,0x92,0x6e,0xe6,0xe9,0x9d,0x45,0xa8,0x2d,0xb7,0xfd,0xd2, + 0x09,0x3f,0x5a,0xf5,0xff,0x00,0x01,0xa1,0x9a,0x37,0x03,0xa8,0x18,0x1f,0x95,0x79, + 0x34,0x28,0x52,0x2f,0x30,0x67,0x1e,0x83,0xdf,0xde,0xbd,0x53,0xe1,0xbd,0xc3,0x7d, + 0xac,0xc6,0xbc,0x8c,0xf2,0x2b,0x15,0x27,0x29,0x45,0x32,0x1c,0x52,0x67,0x82,0xdd, + 0xfc,0x97,0x32,0xc6,0xd9,0xca,0x3b,0x2e,0x3d,0x30,0x48,0xa8,0x14,0x82,0x7d,0xaa, + 0xce,0xb8,0xad,0x0e,0xb7,0x7f,0x01,0xfe,0x1b,0xa9,0x87,0xfe,0x3e,0xc6,0xaa,0x22, + 0x9c,0xe7,0xae,0x05,0x7b,0xb4,0xd7,0xba,0x99,0xc0,0xf7,0x34,0x21,0xe9,0xc7,0xf8, + 0x55,0xf4,0x21,0x4e,0x7a,0x7b,0x7f,0x2a,0xa5,0x10,0x23,0x93,0x56,0x89,0xe3,0x35, + 0xd5,0x4f,0x6b,0xa1,0x36,0x89,0xde,0x66,0xc7,0x06,0xaa,0x09,0x32,0x70,0x0d,0x41, + 0x2c,0x98,0xfb,0xbd,0x7d,0xea,0x04,0x7c,0x9c,0xd0,0xde,0xa5,0x3b,0x58,0xe8,0xa0, + 0x1d,0x09,0xe2,0xb4,0x83,0x9c,0x67,0x35,0x83,0x6d,0x36,0x06,0x3b,0x56,0x89,0xb8, + 0x1b,0x7a,0xf6,0xc6,0x2a,0x5b,0xb2,0xb8,0x37,0xd8,0xb4,0xd3,0x91,0x9f,0x9b,0x81, + 0xc7,0x35,0x6a,0xde,0x73,0xf8,0x9e,0x2b,0x01,0xa5,0xc9,0x04,0xf1,0xed,0x53,0xc5, + 0x38,0xc8,0xe6,0xbc,0xfa,0x8e,0xec,0xcd,0xbb,0x9d,0x5d,0xbd,0xc3,0x07,0x07,0x35, + 0xd1,0xda,0x5d,0x93,0x8c,0x57,0x0b,0x04,0xfb,0x88,0xad,0xbb,0x59,0x7b,0xf4,0xc0, + 0xef,0x4a,0x9c,0x59,0x12,0xd1,0x6a,0x77,0x90,0xdd,0x83,0xde,0xb6,0xad,0xe5,0xca, + 0x8f,0xce,0xb8,0x18,0xae,0x48,0x6e,0xb5,0xd0,0xd9,0xdd,0x02,0x00,0xae,0xa5,0x36, + 0x9d,0xd9,0x8b,0xee,0x7a,0xa7,0x86,0x63,0x0d,0x70,0xa7,0xaf,0x35,0xf4,0xbe,0x9d, + 0x73,0xe4,0xd8,0xa4,0x63,0xd2,0xbe,0x70,0xf0,0x83,0x23,0xcc,0x9d,0x85,0x7b,0x9a, + 0x4e,0x36,0x05,0x5e,0x80,0x63,0xd6,0xbf,0x1c,0xf1,0x0b,0x16,0xe7,0x5e,0x14,0xd1, + 0xfa,0xbf,0x06,0xe1,0xf9,0x70,0xee,0x6c,0xdb,0x9a,0xeb,0x72,0x92,0x0f,0x02,0xa9, + 0x7d,0xa8,0x31,0xc1,0x39,0x35,0x93,0x73,0x74,0x15,0x42,0x03,0xcf,0x7a,0xa6,0x97, + 0x00,0x90,0x41,0xaf,0xcb,0x71,0x7a,0x34,0x99,0xf7,0xd8,0x65,0x76,0xda,0x3a,0xf8, + 0xae,0x00,0x20,0x83,0x5a,0x2b,0x39,0x22,0xb9,0x5b,0x79,0x81,0xe7,0xa6,0x6b,0x5a, + 0x29,0x09,0x19,0xcf,0xd2,0xbc,0x5a,0xf2,0x67,0xa5,0x18,0x5f,0x53,0x49,0xe6,0x60, + 0xa7,0x06,0xb1,0x9a,0x70,0xa7,0xaf,0x7a,0xb7,0x2c,0x83,0xcb,0xc9,0xec,0x2b,0x0e, + 0x46,0x39,0x3e,0x95,0xcf,0x04,0xec,0xcb,0xb7,0xbc,0x76,0xda,0x35,0xcc,0x6c,0xe1, + 0x5c,0xf0,0xdc,0x1f,0x4a,0x9f,0x58,0xc4,0x38,0x54,0x39,0xe6,0xb9,0x2b,0x5b,0x93, + 0x11,0x52,0x0f,0x35,0xbd,0x71,0x76,0xb7,0x11,0x8c,0x9c,0x9e,0x95,0xcb,0x8a,0xa7, + 0xcd,0x49,0xa3,0xa2,0x84,0xb9,0x2b,0x26,0x7f,0xff,0xd4,0xf8,0x67,0xc0,0x77,0x3b, + 0x35,0x54,0x8d,0xcf,0x12,0x12,0xa4,0x74,0xc0,0x60,0x57,0xb7,0xd6,0xb8,0x2b,0xaf, + 0xdd,0xcb,0x2c,0x3d,0x4a,0xb1,0x5c,0xfd,0x0e,0x2b,0xa0,0xf0,0xac,0xff,0x00,0x66, + 0xd6,0x2d,0xd9,0xf1,0x8f,0x31,0x72,0x3f,0x1f,0x5a,0xc8,0xf1,0x0a,0x7d,0x9f,0x5b, + 0xbe,0x83,0xa6,0xc9,0xe4,0x18,0xc6,0x3f,0x8b,0x35,0xf9,0x66,0x65,0x49,0x73,0xec, + 0x79,0xd8,0x3d,0x39,0x91,0x83,0x23,0x85,0x6c,0x0e,0xbd,0xe9,0x9e,0x79,0x03,0x82, + 0x7d,0xbf,0xad,0x36,0x60,0x18,0x16,0xf4,0xef,0xd6,0xb3,0x5a,0x56,0x5c,0x01,0xd4, + 0xd7,0x3d,0x38,0x29,0x2d,0x4e,0xcb,0x6b,0x73,0x51,0x6e,0xb0,0xd8,0xcd,0x7d,0x87, + 0xf0,0x67,0xc4,0x66,0xf3,0x40,0x8e,0x16,0x6f,0x9a,0xdd,0xbc,0xbf,0xcb,0xa7,0xe9, + 0x5f,0x11,0x99,0x4f,0x5c,0xf4,0xfd,0x2b,0xda,0xfe,0x0c,0x6b,0x4f,0x6f,0xaa,0x4f, + 0x60,0xcc,0x71,0x28,0x0e,0x07,0xb8,0xeb,0x5f,0x2d,0xc6,0x59,0x5c,0x71,0x19,0x6c, + 0xe4,0x96,0xb1,0xd4,0xf6,0xf8,0x7e,0xbf,0xb2,0xc6,0x47,0xcf,0x43,0xf5,0xdf,0xc3, + 0x77,0xde,0x76,0x9b,0x0b,0x93,0xc1,0x45,0xfc,0xf1,0x5d,0x4a,0x4e,0x4a,0xfc,0xd8, + 0x20,0x57,0x92,0x78,0x3e,0xfc,0x0b,0x08,0x50,0xf2,0x02,0x28,0xfd,0x2b,0xbc,0x5b, + 0xdd,0xbf,0x2e,0x72,0x0e,0x7f,0x0a,0xfe,0x7b,0xb1,0xfa,0x14,0xa0,0x6a,0x4b,0x39, + 0xf4,0x3b,0x6b,0x36,0xe6,0x50,0x47,0xcb,0x51,0xbc,0xdc,0x1c,0x63,0x06,0xb3,0xa4, + 0x98,0x80,0x43,0x76,0xea,0x28,0x50,0xbb,0x05,0x1d,0x75,0x19,0x2d,0xcb,0x28,0x20, + 0x9c,0x81,0x58,0xb7,0x97,0x38,0x1b,0xc5,0x4d,0x71,0x70,0x17,0x70,0x38,0xcd,0x73, + 0xd7,0xd7,0x1c,0x64,0x1e,0xb5,0xb4,0x69,0x6a,0x74,0x53,0x5d,0x86,0x4d,0x76,0x56, + 0x43,0x93,0x8a,0xa9,0x25,0xce,0xe3,0x8f,0xf3,0x8a,0xca,0x9a,0x7f,0x98,0xf3,0xf5, + 0xaa,0xed,0x33,0x31,0xeb,0x5d,0x2a,0x91,0xdf,0x17,0x64,0x6c,0xc5,0x3e,0x57,0x1e, + 0x86,0xac,0xac,0x9d,0xc8,0xfa,0x73,0x58,0x10,0xc9,0xcb,0x64,0xe3,0xd2,0xaf,0x47, + 0x36,0x70,0xb9,0xe6,0xad,0xd3,0xd2,0xc6,0x6f,0x46,0x6e,0x45,0x70,0x44,0x80,0xf7, + 0xae,0xaa,0x06,0x0d,0x0a,0x9e,0xa4,0xd7,0x9f,0x07,0xc1,0x1c,0xfb,0xd7,0x53,0xa6, + 0xdc,0x6e,0x8f,0x63,0x1c,0xf6,0xae,0x59,0xd3,0xd7,0x54,0x29,0x3e,0xc5,0xdb,0x87, + 0x64,0x3e,0xdd,0xbe,0x95,0x47,0xcc,0xc1,0xc9,0xa9,0x2e,0x9b,0xb0,0xe7,0x22,0xb2, + 0x4c,0x9b,0x79,0xe4,0x57,0x99,0x89,0xa1,0xca,0xee,0x6f,0x4d,0xdd,0x68,0x69,0x79, + 0xc7,0x00,0x9a,0x78,0xb8,0x05,0x40,0xc9,0xcf,0xf8,0x56,0x70,0x97,0x28,0x39,0xc6, + 0x29,0xa6,0x50,0xa3,0xaf,0x1d,0x6b,0x91,0xc3,0x66,0x53,0xb6,0xc5,0x99,0xe6,0x0c, + 0xb9,0x3c,0xd5,0x36,0xb8,0xfd,0xde,0xec,0xe4,0xf7,0xaa,0x13,0x5c,0x8e,0x80,0xe3, + 0x35,0x4a,0x69,0xb0,0x30,0x2b,0x58,0xd3,0xf7,0x93,0x21,0xb4,0xe2,0xd0,0xcb,0xd9, + 0xf7,0x29,0x1d,0x73,0x5f,0x33,0x7c,0x63,0x3c,0xda,0x30,0xe7,0xe7,0x23,0x3f,0x85, + 0x7d,0x0b,0x3d,0xc6,0x33,0xec,0x2b,0xe6,0x3f,0x8c,0x77,0x61,0xee,0x6d,0x62,0xce, + 0x79,0x66,0x3f,0x87,0x15,0xf6,0x7c,0x37,0x4d,0xbc,0x5c,0x12,0xfe,0xb4,0x3e,0x57, + 0x89,0xda,0x58,0x29,0x9e,0x53,0xe6,0x97,0x05,0x47,0x14,0xc1,0xb4,0x2e,0x78,0xc8, + 0xfc,0x6b,0x32,0x19,0x70,0x73,0x9c,0x90,0x7a,0xd5,0xcf,0x39,0xb6,0xe3,0xad,0x7e, + 0x99,0xec,0xda,0x7a,0x1f,0x94,0xd8,0xab,0x32,0xe6,0x41,0xd0,0x7a,0xd4,0x4f,0x90, + 0x06,0x3d,0x2a,0x56,0x6c,0xbe,0x7f,0x4a,0xae,0xd9,0x61,0xc7,0x6c,0x8a,0xec,0xa4, + 0xb5,0x46,0x4d,0x59,0x80,0x23,0x38,0xe9,0x55,0x67,0x51,0x80,0xdd,0x7d,0xe8,0xdc, + 0x36,0x13,0x9c,0x9f,0xf0,0xa8,0xe4,0xc9,0x40,0x7b,0x57,0x7c,0x62,0xd6,0xcc,0x2e, + 0x9e,0xa5,0x7e,0x1a,0xa9,0xb2,0x15,0x93,0x39,0xfc,0x2a,0xfa,0x65,0x8e,0x17,0xd7, + 0x15,0x04,0xa0,0xac,0x80,0x1a,0xee,0xa6,0xf4,0x33,0x19,0x28,0x3e,0x50,0xc7,0x5f, + 0xad,0x45,0x1f,0xde,0x19,0xe0,0xd2,0xce,0xcd,0xc7,0x3c,0x0a,0xae,0x87,0xf7,0xa1, + 0x8f,0x71,0x5a,0xa1,0x17,0x22,0x2f,0xe6,0xf1,0xd7,0xde,0xae,0x21,0x20,0xf5,0xe0, + 0xfe,0x35,0x4a,0x13,0xfb,0xed,0xb5,0x73,0x70,0x0e,0x00,0xe3,0x68,0xe2,0xba,0xa1, + 0x1b,0x2b,0x89,0xb3,0x6a,0xcc,0x32,0x30,0x63,0xc0,0x3d,0x2b,0x52,0x29,0x3c,0xbe, + 0x49,0xcd,0x60,0xdb,0xcb,0xd8,0x7d,0x31,0x5a,0x4b,0x36,0x48,0x23,0xb5,0x68,0xa4, + 0xad,0x61,0x1d,0x6d,0x94,0xec,0x93,0x24,0x80,0xe3,0x15,0xea,0x70,0x1f,0xb4,0xd9, + 0x89,0x62,0xe4,0x80,0x33,0x5e,0x39,0x0b,0x7c,0x88,0xc5,0xb9,0xc5,0x7a,0x47,0x85, + 0xb5,0x2c,0xaf,0xd9,0xe4,0x23,0x06,0xb5,0xa5,0x66,0xad,0x2e,0xa6,0x15,0x62,0x99, + 0x64,0xc9,0xb6,0x4c,0x31,0xe8,0x4f,0x15,0xf4,0x37,0xc0,0xef,0x13,0x1d,0x2b,0x5c, + 0x16,0x92,0xb7,0xee,0x26,0xfd,0xdb,0x83,0xd3,0x6b,0xff,0x00,0x81,0xaf,0x9e,0x75, + 0x28,0x5e,0x2b,0x9d,0xeb,0xca,0xf5,0x15,0xd7,0xf8,0x36,0xf0,0xda,0x6a,0xb6,0xf2, + 0x83,0x8d,0xcc,0x07,0xf8,0x57,0x36,0x29,0x4a,0x31,0x53,0x5b,0xc5,0xdc,0x23,0x4a, + 0xf4,0xe4,0x8f,0xd0,0xad,0x62,0xd2,0x54,0xdf,0x1b,0x00,0x15,0xb9,0x5d,0xa3,0x39, + 0xf4,0x23,0xd8,0xd7,0x37,0xf6,0x01,0x16,0x18,0x67,0x38,0xc7,0xf9,0xc5,0x75,0xda, + 0x04,0xad,0xab,0xf8,0x76,0xde,0xe6,0x46,0x3e,0x6c,0x48,0x23,0x61,0xea,0x07,0x43, + 0xf9,0x55,0x1b,0xf8,0x96,0x15,0x7b,0x86,0x25,0x52,0x24,0x2e,0xe0,0x8e,0xb8,0x1c, + 0x73,0x5f,0x40,0xab,0x46,0x74,0xd5,0x55,0xb3,0xd4,0xf2,0x25,0x1f,0x78,0xf9,0x0f, + 0xf6,0x88,0xd5,0x85,0xb6,0x8b,0x73,0x6a,0xac,0x00,0x8e,0x35,0x8b,0x83,0xfc,0x73, + 0x10,0x08,0xfc,0xab,0xf3,0xfe,0x78,0xf7,0x2b,0xe0,0x63,0x8f,0xaf,0xe3,0x5e,0xe5, + 0xfb,0x5d,0xf8,0xa6,0x68,0x34,0x9d,0x3e,0xca,0x09,0x4a,0xdc,0x6a,0x37,0xed,0x3b, + 0x90,0x70,0x7c,0xb8,0x54,0xb7,0xfe,0x84,0x54,0x57,0xc6,0xba,0x6f,0x8e,0x2e,0xa1, + 0x5f,0x2a,0xf8,0x79,0x8a,0x46,0x37,0x0e,0xbf,0x95,0x7c,0xe3,0xc1,0x62,0x71,0x11, + 0xfa,0xdc,0x35,0x4d,0xbd,0x0f,0xa1,0xc1,0xc6,0xd4,0x8e,0xee,0xe5,0x4b,0x1f,0x6a, + 0xad,0xb0,0x85,0x50,0xdc,0x7d,0x7d,0x2a,0xb5,0xae,0xb5,0x67,0xa8,0x20,0x10,0xb0, + 0x2d,0x8c,0x15,0x3c,0x1a,0xd5,0x25,0x73,0x81,0xc0,0xe0,0xe7,0xfa,0x55,0xc2,0xf1, + 0x95,0xa7,0xa1,0x72,0x8b,0x5a,0x97,0x34,0xf8,0xc9,0x91,0xe3,0xfe,0xf2,0x1f,0xc7, + 0x1c,0xd5,0x4b,0xc8,0x77,0x29,0x6e,0x84,0x0c,0x81,0x5b,0xda,0x62,0xaa,0xdd,0xc4, + 0xc4,0x8c,0x39,0xc6,0x7e,0xa3,0x14,0x9a,0x8d,0xb0,0x8a,0x4c,0x1e,0xe4,0xfd,0x2b, + 0xd2,0xc3,0xa5,0x25,0x24,0x8c,0x1c,0xec,0xce,0x32,0x14,0x61,0x8d,0xa0,0x9c,0xd5, + 0xc4,0x0b,0xc0,0x1f,0x7b,0xa5,0x68,0x5b,0x29,0x78,0xb0,0x38,0xda,0x48,0x14,0xb1, + 0x59,0x92,0xa2,0x5c,0x0c,0xe4,0x8e,0xb9,0xa8,0xf6,0x36,0x49,0xa3,0x78,0xcc,0xdc, + 0xb5,0x50,0x6c,0xc3,0x31,0xe6,0xbb,0x9f,0x00,0xce,0xd0,0x5e,0xb6,0x4f,0xbf,0xe1, + 0x5c,0x34,0x3b,0x96,0xcb,0x71,0xe8,0x0f,0xf4,0xae,0xa3,0xc1,0xae,0xa6,0xf4,0x16, + 0x3d,0x54,0xfe,0x75,0x87,0xb2,0xb5,0x9d,0xb5,0x07,0x2b,0x9e,0x7f,0xe3,0x35,0x0b, + 0xe2,0xfd,0x58,0xaf,0x4f,0xb4,0x16,0x1f,0xf0,0x20,0x0d,0x64,0xc6,0x09,0x23,0xb8, + 0x1d,0xab,0x5f,0xc6,0xaf,0xff,0x00,0x15,0x56,0xa2,0x70,0x4f,0xef,0x47,0x3f,0x54, + 0x5a,0xc8,0xb7,0x6c,0x36,0x47,0x39,0x1f,0xce,0xbd,0x4c,0x3f,0xc2,0x91,0xc5,0x35, + 0x76,0xcd,0x18,0xc6,0x00,0xcd,0x3d,0x9f,0x8e,0x6a,0x16,0x7c,0x0a,0xa5,0x24,0xc4, + 0x8c,0x73,0x5d,0x37,0x25,0x31,0xb2,0x39,0x62,0x5b,0xde,0xa1,0x12,0x60,0xe6,0x86, + 0x6c,0x80,0x7b,0x1a,0xa6,0xe7,0x1d,0xf9,0xa5,0x2d,0x87,0xd4,0xd9,0x86,0x70,0x3a, + 0xf5,0xab,0xa2,0x6c,0x82,0x3b,0x63,0x8a,0xe7,0x12,0x50,0x1b,0x1d,0xc7,0xa5,0x5b, + 0xf3,0xf8,0x18,0x35,0x85,0x46,0x9c,0x6c,0xc5,0x26,0x6b,0x6f,0x24,0x60,0x76,0xfc, + 0xa9,0x52,0x4d,0xa6,0xb3,0x56,0x72,0xdd,0x38,0xc1,0xab,0x08,0xd9,0x3c,0x57,0x32, + 0xa7,0xad,0xc8,0x3a,0x4b,0x79,0x06,0x06,0x4f,0xbd,0x6d,0xdb,0xcd,0xfa,0x74,0xae, + 0x4a,0x39,0x02,0x80,0x7f,0x33,0x5a,0x90,0xce,0x06,0x32,0x6b,0x5a,0x7f,0x11,0x32, + 0x57,0x47,0x52,0x26,0xe9,0x83,0xf8,0xd6,0x8d,0x9d,0xce,0x5d,0x40,0x6e,0xf5,0xcb, + 0xac,0xc0,0xaf,0x5a,0xb7,0x04,0xf8,0x61,0x82,0x3e,0xb4,0xab,0x6e,0xda,0x22,0xd6, + 0x7a,0x1f,0x45,0xf8,0x2e,0xe0,0xee,0x56,0xcd,0x7b,0x4d,0xbd,0xc9,0x2b,0x9a,0xf9, + 0xbf,0xc1,0x37,0xd8,0x65,0x04,0xe6,0xbd,0xbe,0x1b,0xb0,0x22,0x19,0xc5,0x7e,0x1d, + 0xc5,0xe9,0xcb,0x1f,0x76,0x8f,0xd9,0xb8,0x5f,0x95,0x60,0x95,0x8d,0x49,0xae,0xcb, + 0xca,0x72,0x78,0xe9,0x56,0x21,0x60,0xdd,0x2b,0x95,0x7b,0x82,0xce,0x4e,0x6b,0x5e, + 0xce,0xe0,0x60,0x1c,0xfb,0x57,0xc0,0x63,0x23,0xce,0xdb,0x3e,0xbf,0x0b,0x24,0x99, + 0xd6,0x40,0x48,0x3c,0xd6,0xb4,0x52,0xe0,0xfe,0x15,0xce,0xc5,0x38,0x20,0x60,0xe3, + 0x35,0xa5,0x1b,0x93,0xc5,0x78,0x75,0x22,0xb5,0x3d,0x5a,0x7b,0x1a,0x97,0x12,0x82, + 0x9f,0x28,0xe4,0x56,0x3b,0x48,0x7a,0x66,0xac,0x3b,0x1c,0x56,0x7c,0x83,0x9e,0x3f, + 0x0a,0xce,0x10,0x68,0xb4,0xb5,0x2d,0xc3,0x26,0x46,0xd1,0x5a,0xb6,0xb3,0x85,0x70, + 0x18,0xf1,0x5c,0xe8,0x73,0x12,0xe4,0x9c,0x1a,0x64,0x57,0x64,0x1c,0xe6,0xb2,0x94, + 0x1c,0xa6,0x97,0x63,0x7e,0x5b,0x46,0xe7,0xff,0xd9}; diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c index 511a4fb88..b29a59ec3 100644 --- a/lib/libesp32/berry/default/be_modtab.c +++ b/lib/libesp32/berry/default/be_modtab.c @@ -56,6 +56,9 @@ be_extern_native_module(mdns); #ifdef USE_ZIGBEE be_extern_native_module(zigbee); #endif // USE_ZIGBEE +#ifdef USE_BERRY_CAM +be_extern_native_module(cam); +#endif // USE_BERRY_CAM // BLE be_extern_native_module(MI32); be_extern_native_module(BLE); @@ -183,6 +186,9 @@ BERRY_LOCAL const bntvmodule_t* const be_module_table[] = { &be_native_module(MI32), &be_native_module(BLE), #endif //USE_MI_ESP32 +#ifdef USE_BERRY_CAM + &be_native_module(cam), +#endif #ifdef USE_DISCOVERY &be_native_module(mdns), #endif // USE_DISCOVERY @@ -243,6 +249,10 @@ be_extern_native_class(lv_clock_icon); be_extern_native_class(int64); +#ifdef USE_BERRY_IMAGE +be_extern_native_class(img); +#endif // USE_BERRY_IMAGE + BERRY_LOCAL bclass_array be_class_table = { #ifdef TASMOTA /* first list are direct classes */ @@ -298,6 +308,10 @@ BERRY_LOCAL bclass_array be_class_table = { &be_native_class(lv_clock_icon), #endif // USE_LVGL +#ifdef USE_BERRY_IMAGE + &be_native_class(img), +#endif // USE_BERRY_IMAGE + #if defined(USE_I2S_AUDIO_BERRY) && (ESP_IDF_VERSION_MAJOR >= 5) &be_native_class(AudioGenerator), &be_native_class(AudioFileSource), diff --git a/lib/libesp32/berry_tasmota/src/be_cam_lib.c b/lib/libesp32/berry_tasmota/src/be_cam_lib.c new file mode 100644 index 000000000..a271c324a --- /dev/null +++ b/lib/libesp32/berry_tasmota/src/be_cam_lib.c @@ -0,0 +1,31 @@ +/******************************************************************** + * Tasmota lib + * + * To use: `import cam` + * + *******************************************************************/ + +#ifdef USE_BERRY_CAM + +// #include "be_constobj.h" +#include "be_mapping.h" + +extern int be_cam_init(bvm *vm); +extern int be_cam_setup(bvm *vm); +extern int be_cam_get_image(bvm *vm); +extern int be_cam_info(bvm *vm); + +#include "be_fixed_cam.h" + +/* @const_object_info_begin + +module cam (scope: global) { + + init, func(be_cam_init) + setup, func(be_cam_setup) + get_image, func(be_cam_get_image) + info, func(be_cam_info) +} +@const_object_info_end */ + +#endif // USE_BERRY_CAM diff --git a/lib/libesp32/berry_tasmota/src/be_img_lib.c b/lib/libesp32/berry_tasmota/src/be_img_lib.c new file mode 100644 index 000000000..91e94b85e --- /dev/null +++ b/lib/libesp32/berry_tasmota/src/be_img_lib.c @@ -0,0 +1,39 @@ +/******************************************************************** + * Berry class `img` + * + *******************************************************************/ + +#include "be_constobj.h" + +#ifdef USE_BERRY_IMAGE + +extern int be_img_init(bvm *vm); +extern int be_img_deinit(bvm *vm); +extern int be_img_from_jpg(bvm *vm); +extern int be_img_from_buffer(bvm *vm); +extern int be_img_get_buffer(bvm *vm); +extern int be_img_convert_to(bvm *vm); +extern int be_img_info(bvm *vm); + +/* @const_object_info_begin +class be_class_img (scope: global, name: img, strings: weak) { + .p, var + + GRAYSCALE, int(3) + RGB565, int(0) + RGB888, int(5) + JPEG, int(4) + + init, func(be_img_init) + deinit, func(be_img_deinit) + from_jpg, func(be_img_from_jpg) + from_buffer, func(be_img_from_buffer) + get_buffer, func(be_img_get_buffer) + convert_to, func(be_img_convert_to) + info, func(be_img_info) +} +@const_object_info_end */ + +#include "be_fixed_be_class_img.h" + +#endif // USE_BERRY_IMAGE diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 2a3f83e25..5a5c76ae1 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -62,6 +62,7 @@ lib_ignore = ${esp32_defaults.lib_ignore} EEPROM EEPROM 24C128_256_521 MFRC522 + JPEGDEC universal display Library ESP8266Audio ESP8266SAM diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_img.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_img.ino new file mode 100644 index 000000000..c3f1bde3f --- /dev/null +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_img.ino @@ -0,0 +1,499 @@ +/* + xdrv_52_3_berry_img.ino - Berry scripting language, native functions + + Copyright (C) 2024 Christian Baars & Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#ifdef USE_BERRY + +#include + +#ifdef USE_BERRY_IMAGE + +#include "esp_camera.h" +#include "JPEGDEC.h" + +/*********************************************************************************************\ + * typedefs +\*********************************************************************************************/ + +typedef struct { + uint8_t * buf = nullptr; + size_t len = 0; + uint16_t width = 0; + uint16_t height = 0; + pixformat_t format = PIXFORMAT_JPEG; + JPEGDEC * jpeg = nullptr; +} image_t; + +typedef struct { + float scale_X; + float shear_X; + float shear_Y; + float scale_Y; + uint16_t translation_X; + uint16_t translation_Y; + uint16_t width; + uint16_t height; +} be_img_roi_descriptor_t; + +typedef struct { + uint16_t width; + uint16_t height; + const uint8_t *input; + uint8_t *output; + size_t output_len; +} be_jpg_encoder_t; + +/*********************************************************************************************\ + * helper functions +\*********************************************************************************************/ + +struct be_img_util { + static void clear(image_t *img){ + if(img->buf){ + free(img->buf); + img->buf = nullptr; + } + img->len = 0; + img->format = PIXFORMAT_JPEG; + img->width = 0; + img->height = 0; + } + + static int getBytesPerPixel(pixformat_t f){ + int bpp; + switch(f) { + case PIXFORMAT_GRAYSCALE: + bpp = 1; + break; + case PIXFORMAT_RGB565: + bpp = 2; + break; + default: + bpp = 3; + } + return bpp; + } + + static bool from_jpg(image_t *img, uint8_t* buffer, size_t len) { + uint16_t width, height; + if(jpeg_size(buffer, len, &width, &height) != true){ + return false; + } + pixformat_t format = PIXFORMAT_JPEG; + return from_buffer(img, buffer, len, width, height, format); + } + + static bool from_buffer(image_t *img, uint8_t* buffer, size_t len, uint16_t w, uint16_t h, pixformat_t f) { + if(img->buf != nullptr) { + free(img->buf); + } + img->buf = (uint8_t *)heap_caps_malloc((len)+4, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); + if(img->buf) { + memcpy(img->buf,buffer,len); + img->len = len; + img->format = f; + img->width = w; + img->height = h; + return true; + } + return false; + } + + static void rgb888_to_grayscale_inplace(uint8_t * buffer, size_t buffer_len){ + uint8_t r, g, b; + for (uint32_t cnt=0; cnt> 3) & 0x1f; + g = ((grn >> 2) & 0x3f) << 5; + r = ((red >> 3) & 0x1f) << 11; + temp_buf_16[j++] = (r | g | b); + } + } + + static size_t _jpg_out_cb(void * arg, size_t index, const void* data, size_t len){ + be_jpg_encoder_t *jpeg = (be_jpg_encoder_t *)arg; + + memcpy(jpeg->output + index, data, len); + jpeg->output_len = index+len; + return len; + } + + static int _rgb_write_dummy(JPEGDRAW* d) + { + // not used for now + return 1; + } + + static bool jpeg_decode_one_image(uint8_t *input_buf, int len, uint8_t *output_buf, int type, image_t * img) { + img->jpeg = new JPEGDEC; + img->jpeg->openRAM(input_buf, len, _rgb_write_dummy); + img->jpeg->setPixelType(type); + img->jpeg->setFramebuffer(output_buf); + bool success = img->jpeg->decode(0,0,0); + img->jpeg->close(); + delete img->jpeg; + return success; + } + + + // https://web.archive.org/web/20131016210645/http://www.64lines.com/jpeg-width-height , but shorter now by 48 bytes flash + static bool jpeg_size(uint8_t* buffer, size_t data_size, uint16_t *width, uint16_t *height) { + union{ + uint8_t * data; + uint16_t * data16; + uint32_t * data32; + }; + data = buffer; + if(data[data_size-2] != 0xff || data[data_size-1] != 0xd9){ + return false; // quick check for correct termination + } + if(data32[0] == 0xE0FFD8FF) { + // Check for valid JPEG header (null terminated JFIF) + // if(data[i+2] == 'J' && data[i+3] == 'F' && data[i+4] == 'I' && data[i+5] == 'F' && data[i+6] == 0x00) { + if(data16[3] == 0x464a && data16[4] == 0x4649) { + //Retrieve the block length of the first block since the first block will not contain the size of file + int i = 20; + uint16_t block_length = 0; + while(i= data_size) { + return false;} //Check to protect against segmentation faults + if (data[i] != 0xFF) { + return false;} + if(data[i+1] == 0xC0 || data[i+1] == 0xC2) { //0xFFC0 or 0xFFC2 is the "Start of frame" marker which contains the file size + //The structure of the 0xFFC0 block is quite simple [0xFFC0][ushort length][uchar precision][ushort x][ushort y] + *height = data[i+5]*256 + data[i+6]; + *width = data[i+7]*256 + data[i+8]; + return true; + } + else + { + i+=2; //Skip the block marker + block_length = data[i] * 256 + data[i+1]; //Go to the next block + } + } + } + } + return false; //Not a valid SOI header + } +}; + +/*********************************************************************************************\ + * Native functions mapped to Berry functions +\*********************************************************************************************/ + +extern "C" { + + image_t* be_get_image_instance(struct bvm *vm); + image_t* be_get_image_instance(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + image_t * img = (image_t *) be_tocomptr(vm, -1); + be_pop(vm, 1); + if(!img){ + be_raise(vm, "img_error", "no store instance"); + } + return img; + } + + int be_img_init(struct bvm *vm); + int be_img_init(struct bvm *vm) { + image_t *img = new image_t; + be_pushcomptr(vm, (void*)img); + be_setmember(vm, 1, ".p"); + be_return_nil(vm); + } + + int be_img_deinit(struct bvm *vm); + int be_img_deinit(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + image_t * img = (image_t *) be_tocomptr(vm, -1); + if(img){ + if(img->buf != nullptr){ + free(img->buf); + } + delete img; + be_pushcomptr(vm, (void*) NULL); + be_setmember(vm, 1, ".p"); + } + be_return_nil(vm); + } + + int be_img_from_jpg(struct bvm *vm); + int be_img_from_jpg(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc > 1 && be_isbytes(vm, 2)){ + size_t src_buf_len; + uint8_t* src_buf = (uint8_t*) be_tobytes(vm, 2, &src_buf_len); + int format = -1; + if(argc == 3 && be_isint(vm, 3)){ + format = be_toint(vm, 3); + } + image_t * img = be_get_image_instance(vm); + if(format == -1){ + if(be_img_util::from_jpg(img,src_buf,src_buf_len) == false){ + be_raise(vm, "img_error", "could not store from jpg buffer"); + } else { + be_return_nil(vm); // done + } + } + bool success = false; + const int bpp = be_img_util::getBytesPerPixel(pixformat_t(format)); + uint16_t w,h; + if (be_img_util::jpeg_size(src_buf, src_buf_len, &w, &h) == false){ + be_raise(vm, "img_error", "no compatible jpg buffer"); + be_return_nil(vm); //do not destroy the old image + } + const size_t newSize = w * h * bpp; + if(newSize != img->len){ + img->buf = (uint8_t*)heap_caps_realloc((void*)img->buf, newSize, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); + if(!img->buf){ + be_img_util::clear(img); + be_raise(vm, "img_error", "reallocation failed"); + be_return_nil(vm); + } + } + switch(pixformat_t(format)) { + case PIXFORMAT_GRAYSCALE: + success = be_img_util::jpeg_decode_one_image(src_buf, src_buf_len, img->buf, EIGHT_BIT_GRAYSCALE, img); + break; + case PIXFORMAT_RGB565: + success = be_img_util::jpeg_decode_one_image(src_buf, src_buf_len, img->buf, RGB565_LITTLE_ENDIAN, img); + success = true; + break; + case PIXFORMAT_RGB888: + success = be_img_util::jpeg_decode_one_image(src_buf, src_buf_len, img->buf, RGB8888, img); + success = true; + break; + } + if(success){ + img->len = newSize; + img->format = pixformat_t(format); + img->width = w; + img->height = h; + } else { + be_img_util::clear(img); + be_raise(vm, "img_error", "jpg decoding failed"); + } + } + else{ + be_raise(vm, "img_error", "wrong args for jpg buffer"); + } + be_return(vm); + } + + int be_img_from_buffer(struct bvm *vm); // (bytes(),width,height,format) + int be_img_from_buffer(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc == 5 && be_isbytes(vm, 2) && be_isint(vm, 3) && be_isint(vm, 4) && be_isint(vm, 5)){ + size_t src_buf_len; + uint8_t* src_buf = (uint8_t*) be_tobytes(vm, 2, &src_buf_len); + // be_pop(vm, 2); + image_t * img = be_get_image_instance(vm); + if(img){ + if(img->buf != nullptr){ + free(img->buf); + } + uint16_t width = be_toint(vm, 3); + uint16_t height = be_toint(vm, 4); + int format = be_toint(vm, 5); + if(be_img_util::from_buffer(img, src_buf, src_buf_len, width, height, (pixformat_t)format) == false){ + be_raise(vm, "img_error", "could not store from byte buffer"); + } + } + } + be_return(vm); + } + + int be_img_get_buffer(struct bvm *vm); //(roi) + int be_img_get_buffer(struct bvm *vm) { + image_t * img = be_get_image_instance(vm); + be_img_roi_descriptor_t * dsc; + + int32_t argc = be_top(vm); // Get the number of arguments + if (argc == 2 && be_isbytes(vm, 2)){ + if(img->format == PIXFORMAT_JPEG){ + be_raise(vm, "img_error", "JPEG not supported for ROI"); + } + size_t dsc_len; + dsc = (be_img_roi_descriptor_t*) be_tobytes(vm, 2, &dsc_len); + if(dsc_len != sizeof(be_img_roi_descriptor_t)){ + be_raise(vm, "img_error", "invalid ROI descriptor"); + } + } + else{ + be_pushbytes(vm, img->buf, img->len); + be_return(vm); + } + + const int bpp = be_img_util::getBytesPerPixel(img->format); + const size_t roi_size = dsc->width * dsc->height * bpp; + uint8_t* roi_buf = (uint8_t*)malloc(roi_size); + if(roi_buf == nullptr) { + be_raise(vm, "img_error", "ROI buffer allocation failed"); + } + + /** + * Fills ROI using an affine matrix (https://en.wikipedia.org/wiki/Affine_transformation#Image_transformation) + * | scale_x shear_x translation_x | + * | shear_y scale_y translation_y | + * | 0 0 1 | - these are constants in this scope + */ + uint32_t in_idx = 0; + for(uint16_t y = 0; y < dsc->height; y += 1) { + for(uint16_t x = 0; x < dsc->width; x += 1) { + int transformed_X = (x * dsc->scale_X) + (y * dsc->shear_Y) + dsc->translation_X; + int transformed_Y = (x * dsc->shear_X) + (y * dsc->scale_Y) + dsc->translation_Y; + for(int byte_comp = 0; byte_comp < bpp; byte_comp += 1){ + roi_buf[in_idx++] = img->buf[(transformed_X * bpp) + ((transformed_Y * bpp) * img->width) + byte_comp]; + } + } + } + + be_pushbytes(vm, roi_buf, roi_size); + free(roi_buf); + be_return(vm); + } + + int be_img_convert_to(struct bvm *vm); // (pixformat) + int be_img_convert_to(struct bvm *vm) { + image_t * img = be_get_image_instance(vm); + if(img->len == 0) { + be_raise(vm, "img_error", "no image data"); + be_return(vm); + } + + int32_t argc = be_top(vm); + if (argc >= 2 && be_isint(vm, 2)) { + uint32_t format = be_toint(vm, 2); + int32_t option = -1; + if(be_isint(vm, 3)){ + option = be_toint(vm, 3); + } + uint8_t* temp_buf = nullptr; + + if(img->format == format){ + be_raise(vm, "img_error", "no format change"); + be_return(vm); + } + uint16_t bpp = 3; // most likely byte-per-pixel value + const size_t pixel_count = img->width * img->height ; + size_t temp_buf_len = pixel_count * bpp; + if(format == PIXFORMAT_JPEG) { + temp_buf_len /= 4; // a very rough guess + } + temp_buf = (uint8_t *)heap_caps_malloc((temp_buf_len)+4, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); + if(temp_buf == nullptr) { + be_raise(vm, "img_error", "not enough heap"); + be_return_nil(vm); + } + if(format != PIXFORMAT_JPEG) { + if(!fmt2rgb888((const uint8_t *)img->buf, img->len, img->format, temp_buf)) { + free(temp_buf); + be_raise(vm, "img_error", "not enough heap"); + be_return_nil(vm); + } + } + be_jpg_encoder_t jpeg; + jpeg.width = 0; + jpeg.height = 0; + jpeg.input = img->buf; + jpeg.output = temp_buf; + jpeg.output_len = 0; + switch(format){ + case PIXFORMAT_GRAYSCALE: // always from temporary RGB88 + be_img_util::rgb888_to_grayscale_inplace(temp_buf,temp_buf_len); + temp_buf_len = pixel_count; + break; + case PIXFORMAT_RGB565: // always from temporary RGB88 + be_img_util::rgb888_to_565_inplace(temp_buf,temp_buf_len); + temp_buf_len = pixel_count * 2; + break; + case PIXFORMAT_RGB888: + // should already be there + break; + case PIXFORMAT_JPEG: + { + int quality = 12; + if(option != -1){ + quality = option; + } + fmt2jpg_cb(img->buf, img->len, img->width, img->height, img->format, quality, be_img_util::_jpg_out_cb, (void *)&jpeg); + temp_buf_len = jpeg.output_len; + } + break; + default: + free(temp_buf); + be_raise(vm, "img_error", "format not supported"); + // be_return_nil(vm); + break; + } + free(img->buf); + img->format = pixformat_t(format); + img->len = temp_buf_len; + img->buf = (uint8_t*)heap_caps_realloc((void*)temp_buf, img->len, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); // shrinking should never fail ... + if(img->buf == nullptr) { + be_img_util::clear(img); + free(temp_buf); + be_raise(vm, "img_error", "reallocation failed"); + } + } + be_return(vm); + } + + int be_img_info(struct bvm *vm); + int be_img_info(struct bvm *vm) { + image_t * img = be_get_image_instance(vm); + if(!img){ + be_raise(vm, "img_error", "no image instance"); + be_return(vm); + } + be_newobject(vm, "map"); + be_map_insert_int(vm, "buf_addr", (uint32_t)img->buf); + be_map_insert_int(vm, "size", img->len); + be_map_insert_int(vm, "width", img->width); + be_map_insert_int(vm, "height", img->height); + be_map_insert_int(vm, "format", img->format); + be_pop(vm, 1); + be_return(vm); + } + +} //extern "C" + +#endif // USE_BERRY_JPEG + +#endif // USE_BERRY diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_webcam.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_webcam.ino new file mode 100644 index 000000000..b904ede0d --- /dev/null +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_webcam.ino @@ -0,0 +1,164 @@ +/* + xdrv_52_3_berry_cam.ino - Berry scripting language, native functions + + Copyright (C) 2024 Christian Baars & Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#ifdef USE_BERRY + +#include + +#if defined(USE_WEBCAM) +#ifdef USE_BERRY_CAM // driver name is webcam in order to have this code behind the berry_img driver +#define USE_WEBCAM_SETUP_ONLY + +#include "esp_camera.h" + +/*********************************************************************************************\ + * Native functions mapped to Berry functions +\*********************************************************************************************/ +extern "C" { + + struct { + uint16_t width = 0; + uint16_t height = 0; + uint8_t mode = 0; + } WcBerry; + + int be_cam_init(struct bvm *vm); + int be_cam_init(struct bvm *vm) { + WcInit(); + be_return(vm); + } + + int be_cam_setup(struct bvm *vm); + int be_cam_setup(struct bvm *vm) { + + int32_t argc = be_top(vm); // Get the number of arguments + if (argc == 1) { + WcBerry.mode = be_toint(vm, 1); + } + else{ + be_raise(vm, "cam_error", "need mode"); + be_return_nil(vm); + } + + int result = WcSetup(WcBerry.mode); + if (result > 0) { + camera_fb_t *wc_fb = esp_camera_fb_get(); + if(wc_fb){ + WcBerry.width = wc_fb->width; + WcBerry.height = wc_fb->height; + esp_camera_fb_return(wc_fb); + } + } + be_pushint(vm, result); + be_pop(vm, 1); + be_return(vm); + } + + int be_cam_get_image(struct bvm *vm); + int be_cam_get_image(struct bvm *vm) { + + camera_fb_t *wc_fb = esp_camera_fb_get(); + if (!wc_fb) { + be_raise(vm, "cam_error", "could not get frame"); + be_return_nil(vm); + } + + WcBerry.width = wc_fb->width; + WcBerry.height = wc_fb->height; + + int32_t argc = be_top(vm); + if (argc >= 1 && be_isinstance(vm, 1)) { + const char * c = be_classname(vm, 1); + if(strcmp(c,"img") != 0) { + be_raise(vm, "cam_error", "instance not of img class"); + esp_camera_fb_return(wc_fb); + be_return_nil(vm); + } + image_t * img = be_get_image_instance(vm); + int format = -1; + if (argc == 2 && be_isint(vm, 2)) { + format = be_toint(vm, 2); + } + if(img){ + if(format < 0 || format == PIXFORMAT_JPEG){ + be_img_util::from_buffer(img,wc_fb->buf, wc_fb->len, wc_fb->width, wc_fb->height, PIXFORMAT_JPEG); + } + else { + bool success = false; + int bpp = be_img_util::getBytesPerPixel(pixformat_t(format)); + if(wc_fb->width * wc_fb->height * bpp != img->len){ // we do not really want tu use it like that, but repeatedly write the same format + img->buf = (uint8_t*)heap_caps_realloc((void*)img->buf, wc_fb->width * wc_fb->height * bpp, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); + if(!img->buf){ + be_img_util::clear(img); + be_raise(vm, "cam_error", "reallocation failed"); + be_return_nil(vm); + } + } + switch(pixformat_t(format)) { + case PIXFORMAT_GRAYSCALE: + success = be_img_util::jpeg_decode_one_image(wc_fb->buf, wc_fb->len, img->buf, EIGHT_BIT_GRAYSCALE, img); + break; + case PIXFORMAT_RGB565: + success = be_img_util::jpeg_decode_one_image(wc_fb->buf, wc_fb->len, img->buf, RGB565_LITTLE_ENDIAN, img); + break; + case PIXFORMAT_RGB888: + success = be_img_util::jpeg_decode_one_image(wc_fb->buf, wc_fb->len, img->buf, RGB8888, img); + break; + } + if(success){ + img->len = wc_fb->width * wc_fb->height * bpp; + img->format = pixformat_t(format); + img->width = wc_fb->width; + img->height = wc_fb->height; + } else { + be_img_util::clear(img); + } + } + } + else{ + esp_camera_fb_return(wc_fb); + be_raise(vm, "cam_error", "no image store"); + } + } + else{ + be_pushbytes(vm, wc_fb->buf, wc_fb->len); // JPG + } + + esp_camera_fb_return(wc_fb); + be_return(vm); + } + + // cam.info(void) -> map + int be_cam_info(struct bvm *vm); + int be_cam_info(struct bvm *vm) { + be_newobject(vm, "map"); + be_map_insert_int(vm, "mode", WcBerry.mode); + be_map_insert_int(vm, "width", WcBerry.width); + be_map_insert_int(vm, "height", WcBerry.height); + + be_pop(vm, 1); + be_return(vm); + } +} //extern "C" + +#endif // USE_BERRY_CAM +#endif // USE_WEBCAM + +#endif // USE_BERRY diff --git a/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino b/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino index 904e73c84..8d6e6f256 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino @@ -122,11 +122,12 @@ #include "fb_gfx.h" #include "camera_pins.h" +SemaphoreHandle_t WebcamMutex = nullptr; + +#ifndef USE_WEBCAM_SETUP_ONLY bool HttpCheckPriviledgedAccess(bool); extern ESP8266WebServer *Webserver; -SemaphoreHandle_t WebcamMutex = nullptr;; - // use mutex like: // TasAutoMutex localmutex(&WebcamMutex, "somename"); // in any function. Will wait for mutex to be clear, and auto-release when the function exits. @@ -134,7 +135,7 @@ SemaphoreHandle_t WebcamMutex = nullptr;; #define BOUNDARY "e8b8c539-047d-4777-a985-fbba6edff11e" #ifndef MAX_PICSTORE -#define MAX_PICSTORE 4 + #define MAX_PICSTORE 4 #endif struct PICSTORE { uint8_t *buff; @@ -151,11 +152,14 @@ struct PICSTORE { #endif // RTSP_FRAME_TIME #endif // ENABLE_RTSPSERVER +#endif //USE_WEBCAM_SETUP_ONLY + struct { uint8_t up = 0; uint16_t width; uint16_t height; uint8_t stream_active; + #ifndef USE_WEBCAM_SETUP_ONLY WiFiClient client; ESP8266WebServer *CamServer; struct PICSTORE picstore[MAX_PICSTORE]; @@ -165,9 +169,10 @@ struct { CRtspSession *rtsp_session; WiFiClient rtsp_client; uint8_t rtsp_start; +#endif // ENABLE_RTSPSERVER OV2640 cam; uint32_t rtsp_lastframe_time; -#endif // ENABLE_RTSPSERVER +#endif // USE_WEBCAM_SETUP_ONLY } Wc; struct { @@ -219,6 +224,7 @@ bool WcPinUsed(void) { return pin_used; } + void WcFeature(int32_t value) { TasAutoMutex localmutex(&WebcamMutex, "WcFeature"); sensor_t * wc_s = esp_camera_sensor_get(); @@ -253,6 +259,7 @@ void WcFeature(int32_t value) { AddLog(LOG_LEVEL_DEBUG, PSTR("CAM: Feature: %d"), value); } + void WcApplySettings() { TasAutoMutex localmutex(&WebcamMutex, "WcApplySettings"); sensor_t * wc_s = esp_camera_sensor_get(); @@ -493,7 +500,7 @@ uint32_t WcSetup(int32_t fsiz) { } /*********************************************************************************************/ - +#ifndef USE_WEBCAM_SETUP_ONLY int32_t WcSetOptions(uint32_t sel, int32_t value) { int32_t res = 0; TasAutoMutex localmutex(&WebcamMutex, "WcSetOptions"); @@ -772,7 +779,6 @@ pcopy: //////////////// Handle authentication ///////////////// - bool WebcamAuthenticate(void) { if (strlen(SettingsText(SET_WEBPWD)) && (HTTP_MANAGER_RESET_ONLY != Web.state)) { @@ -1120,6 +1126,8 @@ void WcShowStream(void) { } } +#endif // USE_WEBCAM_SETUP_ONLY + void WcInit(void) { if (!Settings->webcam_config.data) { Settings->webcam_config.stream = 1; @@ -1138,6 +1146,7 @@ void WcInit(void) { /*********************************************************************************************\ * Commands \*********************************************************************************************/ +#ifndef USE_WEBCAM_SETUP_ONLY #define D_PRFX_WEBCAM "WC" #define D_CMND_WC_STREAM "Stream" @@ -1502,13 +1511,15 @@ void WcStatsShow(void) { #endif // USE_WEBSERVER } +#endif //USE_WEBCAM_SETUP_ONLY + /*********************************************************************************************\ * Interface \*********************************************************************************************/ bool Xdrv81(uint32_t function) { bool result = false; - + #ifndef USE_WEBCAM_SETUP_ONLY switch (function) { case FUNC_LOOP: WcLoop(); @@ -1536,8 +1547,8 @@ bool Xdrv81(uint32_t function) { case FUNC_ACTIVE: result = true; break; - } + #endif // USE_WEBCAM_SETUP_ONLY return result; } From 60d0c2208bdd6bf4ca723d5db4e8b41602be1ad4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 8 Jul 2024 13:54:48 +0200 Subject: [PATCH 136/252] update changelogs --- CHANGELOG.md | 2 ++ RELEASENOTES.md | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34683759d..5c6461e85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,12 +15,14 @@ All notable changes to this project will be documented in this file. - `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724) - Berry `int64` added `low32()` and `high32()` methods, used in Matter (#21728) - Matter support for 'Generic Switch' based on Tasmota Buttons (#21731) +- Berry cam module and img class (#21743) ### Breaking Changed ### Changed - ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695) - ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) +- ESP32 platform update from 2024.06.11 to 2024.07.10 (#21745) ### Fixed - Berry `bytes.resize()` for large sizes (#21716) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b09b5e27b..11bb5e919 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -136,6 +136,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry `FUNC_ANY_KEY` event calling `any_key()` [#21708](https://github.com/arendst/Tasmota/issues/21708) - Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second [#21711](https://github.com/arendst/Tasmota/issues/21711) - Berry `int64` added `low32()` and `high32()` methods, used in Matter [#21728](https://github.com/arendst/Tasmota/issues/21728) +- Berry cam module and img class [#21743](https://github.com/arendst/Tasmota/issues/21743) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) @@ -148,7 +149,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668) -- ESP32 platform update from 2024.05.13 to 2024.06.11 [#21694](https://github.com/arendst/Tasmota/issues/21694) +- ESP32 platform update from 2024.05.13 to 2024.07.10 [#21745](https://github.com/arendst/Tasmota/issues/21745) - ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.2 [#21694](https://github.com/arendst/Tasmota/issues/21694) - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 From 09b2670c455420ac6557b0ae64632fe593aa79db Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 8 Jul 2024 15:53:15 +0200 Subject: [PATCH 137/252] Add command ``Backlog3`` to execute commands without response but rule processing (#21740) --- tasmota/tasmota.ino | 20 +++----------------- tasmota/tasmota_support/support_command.ino | 14 ++++++++++---- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index e466ad9b5..e93e4c7eb 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -305,8 +305,10 @@ struct TasmotaGlobal_t { bool serial_local; // Handle serial locally bool fallback_topic_flag; // Use Topic or FallbackTopic + bool no_mqtt_response; // Respond with rule processing only bool backlog_nodelay; // Execute all backlog commands with no delay bool backlog_mutex; // Command backlog pending + bool backlog_no_mqtt_response; // Set respond with rule processing only bool stop_flash_rotate; // Allow flash configuration rotation bool blinkstate; // LED state bool pwm_present; // Any PWM channel configured with SetOption15 0 @@ -711,6 +713,7 @@ void BacklogLoop(void) { free(cmd); nodelay = true; } else { + TasmotaGlobal.no_mqtt_response = TasmotaGlobal.backlog_no_mqtt_response; ExecuteCommand(cmd, SRC_BACKLOG); free(cmd); if (nodelay || TasmotaGlobal.backlog_nodelay) { @@ -719,23 +722,6 @@ void BacklogLoop(void) { break; } } while (!BACKLOG_EMPTY); -/* - // This adds 96 bytes - for (auto &cmd : backlog) { - backlog.remove(&cmd); - if (!strncasecmp_P(cmd, PSTR(D_CMND_NODELAY), strlen(D_CMND_NODELAY))) { - free(cmd); - nodelay = true; - } else { - ExecuteCommand(cmd, SRC_BACKLOG); - free(cmd); - if (nodelay || TasmotaGlobal.backlog_nodelay) { - TasmotaGlobal.backlog_timer = millis(); // Reset backlog_timer which has been set by ExecuteCommand (CommandHandler) - } - break; - } - } -*/ TasmotaGlobal.backlog_mutex = false; } if (BACKLOG_EMPTY) { diff --git a/tasmota/tasmota_support/support_command.ino b/tasmota/tasmota_support/support_command.ino index 98a88c0d6..19aca977b 100644 --- a/tasmota/tasmota_support/support_command.ino +++ b/tasmota/tasmota_support/support_command.ino @@ -474,19 +474,25 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) { } if (ResponseLength()) { - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, type); + if (TasmotaGlobal.no_mqtt_response){ // If it is activated, Tasmota will not publish MQTT messages, but it will proccess event trigger rules + XdrvRulesProcess(0); + } else { + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, type); + } } TasmotaGlobal.fallback_topic_flag = false; + TasmotaGlobal.no_mqtt_response = false; } void CmndBacklog(void) { // Backlog command1;command2;.. Execute commands in sequence with a delay in between set with SetOption34 // Backlog0 command1;command2;.. Execute commands in sequence with no delay + // Backlog2 command1;command2;.. Execute commands in sequence with no delay and no response but rule processing only + // Backlog3 command1;command2;.. Execute commands in sequence with a delay but no response but rule processing only if (XdrvMailbox.data_len) { - if (0 == XdrvMailbox.index) { - TasmotaGlobal.backlog_nodelay = true; - } + TasmotaGlobal.backlog_nodelay = (0 == (XdrvMailbox.index & 0x01)); // Backlog0, Backlog2 + TasmotaGlobal.backlog_no_mqtt_response = (2 == (XdrvMailbox.index & 0x02)); // Backlog2, Backlog3 char *blcommand = strtok(XdrvMailbox.data, ";"); while (blcommand != nullptr) { From 105a08dd2000973f2e6182e8267717f1c9eb15ce Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 8 Jul 2024 16:57:21 +0200 Subject: [PATCH 138/252] Skip MQTT response if command is prefixed with underscore (#21740) --- CHANGELOG.md | 2 ++ RELEASENOTES.md | 2 ++ tasmota/tasmota_support/support_command.ino | 14 +++++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c6461e85..5c9b3d2d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ All notable changes to this project will be documented in this file. - Berry `int64` added `low32()` and `high32()` methods, used in Matter (#21728) - Matter support for 'Generic Switch' based on Tasmota Buttons (#21731) - Berry cam module and img class (#21743) +- Skip MQTT response if command is prefixed with underscore (#21740) +- Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` (#21740) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 11bb5e919..075953155 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -124,6 +124,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Support for QMP6988 temperature and pressure sensor - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) +- Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740) +- Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) - NeoPool data validation and communication statistics default enabled for ESP32 only [#21721](https://github.com/arendst/Tasmota/issues/21721) - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) diff --git a/tasmota/tasmota_support/support_command.ino b/tasmota/tasmota_support/support_command.ino index 19aca977b..b227ce596 100644 --- a/tasmota/tasmota_support/support_command.ino +++ b/tasmota/tasmota_support/support_command.ino @@ -374,7 +374,7 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) { } char stemp1[TOPSZ]; - GetFallbackTopic_P(stemp1, ""); // Full Fallback topic = cmnd/DVES_xxxxxxxx_fb/ + GetFallbackTopic_P(stemp1, ""); // Full Fallback topic = cmnd/DVES_xxxxxxxx_fb/ TasmotaGlobal.fallback_topic_flag = (!strncmp(topicBuf, stemp1, strlen(stemp1))); char *type = strrchr(topicBuf, '/'); // Last part of received topic is always the command (type) @@ -384,13 +384,13 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) { if (type != nullptr) { type++; uint32_t i; - int nLen; // strlen(type) + int nLen; // strlen(type) char *s = type; for (nLen = 0; *s; s++, nLen++) { *s=toupper(*s); } i = nLen; - if (i > 0) { // may be 0 + if (i > 0) { // may be 0 while (isdigit(type[i-1])) { i--; } @@ -400,13 +400,17 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) { user_index = true; } type[i] = '\0'; + if ((i > 1) && ('_' == type[0])) { + type++; // Skip leading _ in command + TasmotaGlobal.no_mqtt_response = true; + } - bool binary_data = (index > 299); // Suppose binary data on topic index > 299 + bool binary_data = (index > 299); // Suppose binary data on topic index > 299 if (!binary_data) { bool keep_spaces = ((strstr_P(type, PSTR("SERIALSEND")) != nullptr) && (index > 9)); // Do not skip leading spaces on (s)serialsend10 and up if (!keep_spaces) { while (*dataBuf && isspace(*dataBuf)) { - dataBuf++; // Skip leading spaces in data + dataBuf++; // Skip leading spaces in data data_len--; } } From a3048a0b2550e6c30e2c60572974c9bb570ca786 Mon Sep 17 00:00:00 2001 From: timehlers Date: Mon, 8 Jul 2024 17:25:06 +0200 Subject: [PATCH 139/252] =?UTF-8?q?add=20support=20for=204.2=20inch=20epap?= =?UTF-8?q?er=20display=20from=20WeAct=20Studio=20(partial=20up=E2=80=A6?= =?UTF-8?q?=20(#21717)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add support for 4.2 inch epaper display from WeAct Studio (partial update) * make ep_mode=3 decision more clear, reinserted an mistakenly removed comment --------- Co-authored-by: timehlers <> --- lib/lib_display/UDisplay/uDisplay.cpp | 67 +++++++++++++++---- .../displaydesc/WeAct_epaper42_display.ini | 41 ++++++++++++ 2 files changed, 95 insertions(+), 13 deletions(-) create mode 100644 tasmota/displaydesc/WeAct_epaper42_display.ini diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 890c2157f..afdb4852a 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -707,6 +707,11 @@ void UfsCheckSDCardInit(void); } #endif + if ((epcoffs_full || epcoffs_part) && !(lutfsize || lutpsize)) { + // no lutfsize or lutpsize, but epcoffs_full or epcoffs_part + ep_mode = 3; + } + #ifdef UDSP_DEBUG Serial.printf("Device : %s\n", dname); Serial.printf("xs : %d\n", gxs); @@ -907,7 +912,7 @@ uint16_t index = 0; SPI_CS_LOW iob = dsp_cmds[cmd_offset++]; index++; - if (ep_mode == 1 && iob >= EP_RESET) { + if ((ep_mode == 1 || ep_mode == 3) && iob >= EP_RESET) { // epaper pseudo opcodes uint8_t args = dsp_cmds[cmd_offset++]; index++; @@ -3429,6 +3434,9 @@ void uDisplay::Init_EPD(int8_t p) { if (ep_mode == 1) { ClearFrameMemory(0xFF); Updateframe_EPD(); + } else if (ep_mode == 3) { + ClearFrameMemory(0xFF); + Updateframe_EPD(); } else { ClearFrame_42(); } @@ -3518,7 +3526,7 @@ void uDisplay::SetLut(const unsigned char* lut) { } void uDisplay::Updateframe_EPD(void) { - if (ep_mode == 1) { + if (ep_mode == 1 || ep_mode == 3) { switch (ep_update_mode) { case DISPLAY_INIT_PARTIAL: if (epc_part_cnt) { @@ -3547,15 +3555,33 @@ void uDisplay::DisplayFrame_29(void) { } void uDisplay::SetMemoryArea(int x_start, int y_start, int x_end, int y_end) { - spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION); + int x_start1 = (x_start >> 3) & 0xFF; + int x_end1 = (x_end >> 3) & 0xFF; + int y_start1 = y_start & 0xFF; + int y_start2 = (y_start >> 8) & 0xFF; + int y_end1 = y_end & 0xFF; + int y_end2 = (y_end >> 8) & 0xFF; /* x point must be the multiple of 8 or the last 3 bits will be ignored */ - spi_data8_EPD((x_start >> 3) & 0xFF); - spi_data8_EPD((x_end >> 3) & 0xFF); - spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION); - spi_data8_EPD(y_start & 0xFF); - spi_data8_EPD((y_start >> 8) & 0xFF); - spi_data8_EPD(y_end & 0xFF); - spi_data8_EPD((y_end >> 8) & 0xFF); + + if (ep_mode == 3) { + spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION); + spi_data8_EPD(x_start1); + spi_data8_EPD(x_end1); + spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION); + spi_data8_EPD(y_end1); + spi_data8_EPD(y_end2); + spi_data8_EPD(y_start1); + spi_data8_EPD(y_start2); + } else { + spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION); + spi_data8_EPD(x_start1); + spi_data8_EPD(x_end1); + spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION); + spi_data8_EPD(y_start1); + spi_data8_EPD(y_start2); + spi_data8_EPD(y_end1); + spi_data8_EPD(y_end2); + } } void uDisplay::SetFrameMemory(const unsigned char* image_buffer) { @@ -3569,12 +3595,27 @@ void uDisplay::SetFrameMemory(const unsigned char* image_buffer) { } void uDisplay::SetMemoryPointer(int x, int y) { + int x1; + int y1; + int y2; + + if (ep_mode == 3) { + x1 = (x >> 3) & 0xFF; + y--; + y1 = y & 0xFF; + y2 = (y >> 8) & 0xFF; + } else { + x1 = (x >> 3) & 0xFF; + y1 = y & 0xFF; + y2 = (y >> 8) & 0xFF; + } + spi_command_EPD(SET_RAM_X_ADDRESS_COUNTER); /* x point must be the multiple of 8 or the last 3 bits will be ignored */ - spi_data8_EPD((x >> 3) & 0xFF); + spi_data8_EPD(x1); spi_command_EPD(SET_RAM_Y_ADDRESS_COUNTER); - spi_data8_EPD(y & 0xFF); - spi_data8_EPD((y >> 8) & 0xFF); + spi_data8_EPD(y1); + spi_data8_EPD(y2); } #if 0 diff --git a/tasmota/displaydesc/WeAct_epaper42_display.ini b/tasmota/displaydesc/WeAct_epaper42_display.ini new file mode 100644 index 000000000..e9b0eff2a --- /dev/null +++ b/tasmota/displaydesc/WeAct_epaper42_display.ini @@ -0,0 +1,41 @@ +:H,E-PAPER-42-WeAct,400,300,1,SPI,4,*,*,*,*,*,*,*,10 +:S,1,1,1,0,10,10 +:I +12,0 +63,1,80 +01,3,2b,01,01 +3c,1,01 +67,0; +20,0 +63,1,80 +24,0 +66,0 +20,0 +63,1,80 +62,0 +:f +64,0 +65,0 +24,0 +66,0 +21,2,40,00 +22,1,f7 +20,0 +63,1,80 +:p +62,0 +22,1,c0 +20,0 +63,1,80 +64,0 +65,0 +24,0 +66,0 +21,2,00,00 +22,1,fc +20,0 +63,1,80 +62,0 + +:T,350,35,10 +# From b56e3c43a8eb541846dd2cafdfa2fe28a91880d8 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 9 Jul 2024 13:19:24 +0200 Subject: [PATCH 140/252] Berry improve solidification of bytes (#21751) --- lib/libesp32/berry/src/be_constobj.h | 51 +++++++++++++-------- lib/libesp32/berry/src/be_solidifylib.c | 50 ++++++++++---------- lib/libesp32/berry/tools/coc/bytes_build.py | 6 +-- 3 files changed, 60 insertions(+), 47 deletions(-) diff --git a/lib/libesp32/berry/src/be_constobj.h b/lib/libesp32/berry/src/be_constobj.h index f478b3150..86a871563 100644 --- a/lib/libesp32/berry/src/be_constobj.h +++ b/lib/libesp32/berry/src/be_constobj.h @@ -28,23 +28,38 @@ extern "C" { .type = (_t), \ .marked = GC_CONST -#define be_define_const_bytes(_name, ...) \ - const uint8_t be_const_bin_##_name[] = { __VA_ARGS__ } +#define be_define_const_bytes(_name, ...) \ + const binstance_arg3 be_const_instance_##_name = { \ + be_const_header(BE_INSTANCE), \ + .super = NULL, \ + .sub = NULL, \ + ._class = (bclass*) &be_class_bytes, \ + .members = { \ + {.v.c = (const void*) & (const uint8_t[]) { __VA_ARGS__ }, \ + .type = BE_COMPTR }, \ + be_const_int(sizeof(#_name) / 2), \ + be_const_int(BYTES_SIZE_SOLIDIFIED) \ + } \ + } -#define be_const_bytes_instance(_bytes) { \ - .v.c = ( \ - & (const binstance_arg3) { \ - be_const_header(BE_INSTANCE), \ - .super = NULL, \ - .sub = NULL, \ - ._class = (bclass*) &be_class_bytes, \ - .members = { \ - be_const_comptr(&be_const_bin_##_bytes), \ - be_const_int(sizeof(#_bytes) / 2), \ - be_const_int(BYTES_SIZE_SOLIDIFIED) \ - } \ - }), \ - .type = BE_INSTANCE \ +/* special version to define a default empty bytes */ +#define be_define_const_bytes_empty() \ + const binstance_arg3 be_const_instance_ = { \ + be_const_header(BE_INSTANCE), \ + .super = NULL, \ + .sub = NULL, \ + ._class = (bclass*) &be_class_bytes, \ + .members = { \ + {.v.c = (const void*) & (const uint8_t[]) { 0x00 }, \ + .type = BE_COMPTR }, \ + be_const_int(0), \ + be_const_int(BYTES_SIZE_SOLIDIFIED) \ + } \ + } + +#define be_const_bytes_instance(_bytes) { \ + .v.c = &be_const_instance_##_bytes, \ + .type = BE_INSTANCE \ } #define be_define_const_str_weak(_name, _s, _len) \ @@ -339,8 +354,8 @@ const bntvmodule_t be_native_module(_module) = { \ #else -#define be_define_const_bytes(_name, ...) \ - const uint8_t be_const_bin_##_name[] = { __VA_ARGS__ } +// #define be_define_const_bytes(_name, ...) \ +// const uint8_t be_const_bin_##_name[] = { __VA_ARGS__ } #define be_define_const_str_weak(_name, _s, _len) \ const bcstring be_const_str_##_name = { \ diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c index 5691dce5e..01d1fd1a3 100644 --- a/lib/libesp32/berry/src/be_solidifylib.c +++ b/lib/libesp32/berry/src/be_solidifylib.c @@ -132,7 +132,7 @@ static const bclass *m_solidify_get_parentclass(const bproto *pr) static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout); -static void m_solidify_map(bvm *vm, bbool str_literal, const bmap * map, const char *prefixname, void* fout) +static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *prefixname, void* fout) { // compact first be_map_compact(vm, map); @@ -288,34 +288,32 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, { binstance * ins = (binstance *) var_toobj(value); bclass * cl = ins->_class; - if (ins->super || ins->sub) { + + if (cl == &be_class_bytes) { + const void * bufptr = var_toobj(&ins->members[0]); + int32_t len = var_toint(&ins->members[1]); + size_t hex_len = len * 2 + 1; + + char * hex_out = be_pushbuffer(vm, hex_len); + be_bytes_tohex(hex_out, hex_len, bufptr, len); + logfmt("be_const_bytes_instance(%s)", hex_out); + be_pop(vm, 1); + } else if (ins->super || ins->sub) { be_raise(vm, "internal_error", "instance must not have a super/sub class"); - } else if ((cl != &be_class_map && cl != &be_class_list) || 1) { // TODO + } else { const char * cl_ptr = ""; if (cl == &be_class_map) { cl_ptr = "map"; } else if (cl == &be_class_list) { cl_ptr = "list"; } - else if (cl == &be_class_bytes) { cl_ptr = "bytes"; } else { be_raise(vm, "internal_error", "unsupported class"); } - if (cl == &be_class_bytes) { - const void * bufptr = var_toobj(&ins->members[0]); - int32_t len = var_toint(&ins->members[1]); - size_t hex_len = len * 2 + 1; - - char * hex_out = be_pushbuffer(vm, hex_len); - be_bytes_tohex(hex_out, hex_len, bufptr, len); - logfmt("be_const_bytes_instance(%s)", hex_out); - be_pop(vm, 1); + logfmt("be_const_simple_instance(be_nested_simple_instance(&be_class_%s, {\n", cl_ptr); + if (cl == &be_class_map) { + logfmt(" be_const_map( * "); } else { - logfmt("be_const_simple_instance(be_nested_simple_instance(&be_class_%s, {\n", cl_ptr); - if (cl == &be_class_map) { - logfmt(" be_const_map( * "); - } else { - logfmt(" be_const_list( * "); - } - m_solidify_bvalue(vm, str_literal, &ins->members[0], prefixname, key, fout); - logfmt(" ) } ))"); + logfmt(" be_const_list( * "); } + m_solidify_bvalue(vm, str_literal, &ins->members[0], prefixname, key, fout); + logfmt(" ) } ))"); } } break; @@ -354,7 +352,7 @@ static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bprot } } -static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, const char *prefixname, int indent, void* fout) +static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, int indent, void* fout) { /* get parent class name if any */ const bclass *parentclass = m_solidify_get_parentclass(pr); @@ -386,7 +384,7 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const size_t sub_len = strlen(func_name) + 10; char sub_name[sub_len]; snprintf(sub_name, sizeof(sub_name), "%s_%"PRId32, func_name, i); - m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, NULL, indent+2, fout); + m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, indent+2, fout); logfmt(",\n"); } if (parentclass_name) { @@ -500,7 +498,7 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, func_name_id); } - m_solidify_proto(vm, str_literal, pr, func_name, prefixname, indent, fout); + m_solidify_proto(vm, str_literal, pr, func_name, indent, fout); logfmt("\n"); // closure @@ -564,12 +562,12 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v logfmt(");\n"); } -static void m_solidify_class(bvm *vm, bbool str_literal, const bclass *cl, void* fout) +static void m_solidify_class(bvm *vm, bbool str_literal, bclass *cl, void* fout) { m_solidify_subclass(vm, str_literal, cl, fout); } -static void m_solidify_module(bvm *vm, bbool str_literal, const bmodule *ml, void* fout) +static void m_solidify_module(bvm *vm, bbool str_literal, bmodule *ml, void* fout) { const char * modulename = be_module_name(ml); if (!modulename) { modulename = ""; } diff --git a/lib/libesp32/berry/tools/coc/bytes_build.py b/lib/libesp32/berry/tools/coc/bytes_build.py index ab266f0af..2fb6d3ed1 100644 --- a/lib/libesp32/berry/tools/coc/bytes_build.py +++ b/lib/libesp32/berry/tools/coc/bytes_build.py @@ -23,7 +23,7 @@ class bytes_build: def build_bytes_def(self): ostr = "" ostr += "/* binary arrays */\n" - ostr += "be_define_const_bytes(,);\n" + ostr += "be_define_const_bytes_empty();\n" for k in self.map: ostr += "be_define_const_bytes(" ostr += k + ", " + ", ".join( [ "0x" + k[i:i+2] for i in range(0, len(k), 2)] ) @@ -34,8 +34,8 @@ class bytes_build: def build_bytes_ext(self): ostr = "" ostr += "/* extern binary arrays */\n" - ostr += "extern const uint8_t be_const_bin_[];\n" + ostr += "extern const binstance_arg3 be_const_instance_;\n" for k in self.map: - ostr += "extern const uint8_t be_const_bin_" + k + "[];\n" + ostr += "extern const binstance_arg3 be_const_instance_" + k + ";\n" return ostr \ No newline at end of file From 5df51a9365c72e0fd0d50b096ec0e2b28f2c23fd Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 9 Jul 2024 14:01:45 +0200 Subject: [PATCH 141/252] Matter comment code used only by controler (#21752) --- .../berry_matter/src/embedded/Matter_IM.be | 13 +- .../src/embedded/Matter_IM_Data.be | 163 +- .../src/embedded/Matter_zz_Device.be | 15 +- .../src/solidify/solidified_Matter_IM.h | 4105 ++++++++--------- .../src/solidify/solidified_Matter_IM_Data.h | 645 +-- .../solidify/solidified_Matter_zz_Device.h | 46 +- 6 files changed, 2186 insertions(+), 2801 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index cb309654e..52949177b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -89,7 +89,8 @@ class Matter_IM self.send_ack_now(msg) return self.process_write_request(msg, val) elif opcode == 0x07 # Write Response - return self.process_write_response(msg, val) + # return self.process_write_response(msg, val) # not implemented for Matter device + return false elif opcode == 0x08 # Invoke Request # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request return self.process_invoke_request(msg, val) @@ -1160,11 +1161,11 @@ class Matter_IM ############################################################# # process IM 0x07 Write Response # - def process_write_response(msg, val) - var query = matter.WriteResponseMessage().from_TLV(val) - # log("MTR: received WriteResponseMessage=" + str(query), 4) - return false - end + # def process_write_response(msg, val) + # var query = matter.WriteResponseMessage().from_TLV(val) + # # log("MTR: received WriteResponseMessage=" + str(query), 4) + # return false + # end ############################################################# # process IM 0x09 Invoke Response diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be index 2d4561e08..c2a2bdf77 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be @@ -615,17 +615,18 @@ class Matter_ReadRequestMessage : Matter_IM_Message_base return self end - def to_TLV() - var TLV = matter.TLV - var s = TLV.Matter_TLV_struct() - self.to_TLV_array(s, 0, self.attributes_requests) - self.to_TLV_array(s, 1, self.event_requests) - self.to_TLV_array(s, 2, self.event_filters) - s.add_TLV(3, TLV.BOOL, self.fabric_filtered) - self.to_TLV_array(s, 4, self.data_version_filters) - s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) - return s - end + # to_TLV not used in Matter Device + # def to_TLV() + # var TLV = matter.TLV + # var s = TLV.Matter_TLV_struct() + # self.to_TLV_array(s, 0, self.attributes_requests) + # self.to_TLV_array(s, 1, self.event_requests) + # self.to_TLV_array(s, 2, self.event_filters) + # s.add_TLV(3, TLV.BOOL, self.fabric_filtered) + # self.to_TLV_array(s, 4, self.data_version_filters) + # s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) + # return s + # end end matter.ReadRequestMessage = Matter_ReadRequestMessage @@ -872,15 +873,16 @@ class Matter_ReportDataMessage : Matter_IM_Message_base var suppress_response # bool # decode from TLV - def from_TLV(val) - if val == nil return nil end - self.subscription_id = val.findsubval(0) - self.attribute_reports = self.from_TLV_array(val.findsubval(1), matter.AttributeReportIB) - self.event_reports = self.from_TLV_array(val.findsubval(2), matter.EventReportIB) - self.more_chunked_messages = val.findsubval(3) - self.suppress_response = val.findsubval(4) - return self - end + # from_TLV not used in Matter Device + # def from_TLV(val) + # if val == nil return nil end + # self.subscription_id = val.findsubval(0) + # self.attribute_reports = self.from_TLV_array(val.findsubval(1), matter.AttributeReportIB) + # self.event_reports = self.from_TLV_array(val.findsubval(2), matter.EventReportIB) + # self.more_chunked_messages = val.findsubval(3) + # self.suppress_response = val.findsubval(4) + # return self + # end def to_TLV() var TLV = matter.TLV @@ -923,20 +925,21 @@ class Matter_SubscribeRequestMessage : Matter_IM_Message_base return self end - def to_TLV() - var TLV = matter.TLV - var s = TLV.Matter_TLV_struct() - s.add_TLV(0, TLV.BOOL, self.keep_subscriptions) - s.add_TLV(1, TLV.U2, self.min_interval_floor) - s.add_TLV(2, TLV.U2, self.max_interval_ceiling) - self.to_TLV_array(s, 3, self.attributes_requests) - self.to_TLV_array(s, 4, self.event_requests) - self.to_TLV_array(s, 5, self.event_filters) - s.add_TLV(7, TLV.BOOL, self.fabric_filtered) - self.to_TLV_array(s, 8, self.data_version_filters) - s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) - return s - end + # to_TLV not used in Matter Device + # def to_TLV() + # var TLV = matter.TLV + # var s = TLV.Matter_TLV_struct() + # s.add_TLV(0, TLV.BOOL, self.keep_subscriptions) + # s.add_TLV(1, TLV.U2, self.min_interval_floor) + # s.add_TLV(2, TLV.U2, self.max_interval_ceiling) + # self.to_TLV_array(s, 3, self.attributes_requests) + # self.to_TLV_array(s, 4, self.event_requests) + # self.to_TLV_array(s, 5, self.event_filters) + # s.add_TLV(7, TLV.BOOL, self.fabric_filtered) + # self.to_TLV_array(s, 8, self.data_version_filters) + # s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) + # return s + # end end matter.SubscribeRequestMessage = Matter_SubscribeRequestMessage @@ -948,12 +951,13 @@ class Matter_SubscribeResponseMessage : Matter_IM_Message_base var max_interval # u16 # decode from TLV - def from_TLV(val) - if val == nil return nil end - self.subscription_id = val.findsubval(0) - self.max_interval = val.findsubval(2) - return self - end + # from_TLV not used in Matter Device + # def from_TLV(val) + # if val == nil return nil end + # self.subscription_id = val.findsubval(0) + # self.max_interval = val.findsubval(2) + # return self + # end def to_TLV() var TLV = matter.TLV @@ -985,16 +989,17 @@ class Matter_WriteRequestMessage : Matter_IM_Message_base return self end - def to_TLV() - var TLV = matter.TLV - var s = TLV.Matter_TLV_struct() - s.add_TLV(0, TLV.BOOL, self.suppress_response) - s.add_TLV(1, TLV.BOOL, self.timed_request) - self.to_TLV_array(s, 2, self.write_requests) - s.add_TLV(3, TLV.BOOL, self.more_chunked_messages) - s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) - return s - end + # to_TLV not used in Matter Device + # def to_TLV() + # var TLV = matter.TLV + # var s = TLV.Matter_TLV_struct() + # s.add_TLV(0, TLV.BOOL, self.suppress_response) + # s.add_TLV(1, TLV.BOOL, self.timed_request) + # self.to_TLV_array(s, 2, self.write_requests) + # s.add_TLV(3, TLV.BOOL, self.more_chunked_messages) + # s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) + # return s + # end end matter.WriteRequestMessage = Matter_WriteRequestMessage @@ -1005,11 +1010,12 @@ class Matter_WriteResponseMessage : Matter_IM_Message_base var write_responses # array of AttributeStatusIB # decode from TLV - def from_TLV(val) - if val == nil return nil end - self.write_requests = self.from_TLV_array(val.findsubval(0), matter.AttributeStatusIB) - return self - end + # from_TLV not used in Matter Device + # def from_TLV(val) + # if val == nil return nil end + # self.write_requests = self.from_TLV_array(val.findsubval(0), matter.AttributeStatusIB) + # return self + # end def to_TLV() var TLV = matter.TLV @@ -1034,13 +1040,14 @@ class Matter_TimedRequestMessage : Matter_IM_Message_base return self end - def to_TLV() - var TLV = matter.TLV - var s = TLV.Matter_TLV_struct() - s.add_TLV(0, TLV.U2, self.timeout) - s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) - return s - end + # to_TLV not used in Matter Device + # def to_TLV() + # var TLV = matter.TLV + # var s = TLV.Matter_TLV_struct() + # s.add_TLV(0, TLV.U2, self.timeout) + # s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) + # return s + # end end matter.TimedRequestMessage = Matter_TimedRequestMessage @@ -1061,15 +1068,16 @@ class Matter_InvokeRequestMessage : Matter_IM_Message_base return self end - def to_TLV() - var TLV = matter.TLV - var s = TLV.Matter_TLV_struct() - s.add_TLV(0, TLV.BOOL, self.suppress_response) - s.add_TLV(1, TLV.BOOL, self.timed_request) - self.to_TLV_array(s, 2, self.invoke_requests) - s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) - return s - end + # to_TLV not used in Matter Device + # def to_TLV() + # var TLV = matter.TLV + # var s = TLV.Matter_TLV_struct() + # s.add_TLV(0, TLV.BOOL, self.suppress_response) + # s.add_TLV(1, TLV.BOOL, self.timed_request) + # self.to_TLV_array(s, 2, self.invoke_requests) + # s.add_TLV(0xFF, TLV.U1, self.InteractionModelRevision) + # return s + # end end matter.InvokeRequestMessage = Matter_InvokeRequestMessage @@ -1081,12 +1089,13 @@ class Matter_InvokeResponseMessage : Matter_IM_Message_base var invoke_responses # array of InvokeResponseIB # decode from TLV - def from_TLV(val) - if val == nil return nil end - self.suppress_response = val.findsubval(0) - self.invoke_responses = self.from_TLV_array(val.findsubval(1), matter.InvokeResponseIB) - return self - end + # from_TLV not used in Matter Device + # def from_TLV(val) + # if val == nil return nil end + # self.suppress_response = val.findsubval(0) + # self.invoke_responses = self.from_TLV_array(val.findsubval(1), matter.InvokeResponseIB) + # return self + # end def to_TLV() var TLV = matter.TLV diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 94dfc3fff..6fcd614b1 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -235,21 +235,22 @@ class Matter_Device ############################################################# # Stop PASE commissioning, mostly called when CASE is about to start def stop_basic_commissioning() + var n = nil if self.is_root_commissioning_open() tasmota.publish_result('{"Matter":{"Commissioning":0}}', 'Matter') end - self.commissioning_open = nil + self.commissioning_open = n self.mdns_remove_PASE() # clear any PBKDF information to free memory - self.commissioning_iterations = nil - self.commissioning_discriminator = nil - self.commissioning_salt = nil - self.commissioning_w0 = nil + self.commissioning_iterations = n + self.commissioning_discriminator = n + self.commissioning_salt = n + self.commissioning_w0 = n # self.commissioning_w1 = nil - self.commissioning_L = nil - self.commissioning_admin_fabric = nil + self.commissioning_L = n + self.commissioning_admin_fabric = n end def is_commissioning_open() return self.commissioning_open != nil diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index b38919383..a1b64bee1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -6,6 +6,523 @@ extern const bclass be_class_Matter_IM; +/******************************************************************** +** Solidified function: process_write_request +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_write_request, /* name */ + be_nested_proto( + 21, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[41]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(WriteRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(Path), + /* K4 */ be_nested_str_weak(suppress_response), + /* K5 */ be_nested_str_weak(write_requests), + /* K6 */ be_nested_str_weak(WriteResponseMessage), + /* K7 */ be_nested_str_weak(write_responses), + /* K8 */ be_nested_str_weak(PathGenerator), + /* K9 */ be_nested_str_weak(device), + /* K10 */ be_nested_str_weak(path), + /* K11 */ be_nested_str_weak(data), + /* K12 */ be_nested_str_weak(copy), + /* K13 */ be_nested_str_weak(cluster), + /* K14 */ be_nested_str_weak(attribute), + /* K15 */ be_nested_str_weak(status), + /* K16 */ be_nested_str_weak(INVALID_ACTION), + /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), + /* K18 */ be_nested_str_weak(endpoint), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(get_attribute_name), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K25 */ be_nested_str_weak(_X20_X28), + /* K26 */ be_nested_str_weak(_X29), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(start), + /* K29 */ be_nested_str_weak(is_direct), + /* K30 */ be_nested_str_weak(next_attribute), + /* K31 */ be_nested_str_weak(msg), + /* K32 */ be_nested_str_weak(get_pi), + /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), + /* K34 */ be_nested_str_weak(write_attribute), + /* K35 */ be_nested_str_weak(session), + /* K36 */ be_nested_str_weak(SUCCESS), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_nested_str_weak(send_queue), + /* K39 */ be_nested_str_weak(push), + /* K40 */ be_nested_str_weak(IM_WriteResponse), + }), + be_str_weak(process_write_request), + &be_const_str_solidified, + ( &(const binstruction[145]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0xB8120000, // 0006 GETNGBL R4 K0 + 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x7C100200, // 0008 CALL R4 1 + 0x88140704, // 0009 GETMBR R5 R3 K4 + 0x88180705, // 000A GETMBR R6 R3 K5 + 0x4C1C0000, // 000B LDNIL R7 + 0x20180C07, // 000C NE R6 R6 R7 + 0x781A0080, // 000D JMPF R6 #008F + 0xB81A0000, // 000E GETNGBL R6 K0 + 0x8C180D06, // 000F GETMET R6 R6 K6 + 0x7C180200, // 0010 CALL R6 1 + 0x601C0012, // 0011 GETGBL R7 G18 + 0x7C1C0000, // 0012 CALL R7 0 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0xB81E0000, // 0014 GETNGBL R7 K0 + 0x8C1C0F08, // 0015 GETMET R7 R7 K8 + 0x88240109, // 0016 GETMBR R9 R0 K9 + 0x7C1C0400, // 0017 CALL R7 2 + 0x60200010, // 0018 GETGBL R8 G16 + 0x88240705, // 0019 GETMBR R9 R3 K5 + 0x7C200200, // 001A CALL R8 1 + 0xA8020065, // 001B EXBLK 0 #0082 + 0x5C241000, // 001C MOVE R9 R8 + 0x7C240000, // 001D CALL R9 0 + 0x8828130A, // 001E GETMBR R10 R9 K10 + 0x882C130B, // 001F GETMBR R11 R9 K11 + 0x8C30090C, // 0020 GETMET R12 R4 K12 + 0x5C381400, // 0021 MOVE R14 R10 + 0x7C300400, // 0022 CALL R12 2 + 0x8830150D, // 0023 GETMBR R12 R10 K13 + 0x4C340000, // 0024 LDNIL R13 + 0x1C30180D, // 0025 EQ R12 R12 R13 + 0x74320003, // 0026 JMPT R12 #002B + 0x8830150E, // 0027 GETMBR R12 R10 K14 + 0x4C340000, // 0028 LDNIL R13 + 0x1C30180D, // 0029 EQ R12 R12 R13 + 0x78320008, // 002A JMPF R12 #0034 + 0xB8320000, // 002B GETNGBL R12 K0 + 0x88301910, // 002C GETMBR R12 R12 K16 + 0x90121E0C, // 002D SETMBR R4 K15 R12 + 0x8C300111, // 002E GETMET R12 R0 K17 + 0x5C380C00, // 002F MOVE R14 R6 + 0x5C3C0800, // 0030 MOVE R15 R4 + 0x4C400000, // 0031 LDNIL R16 + 0x7C300800, // 0032 CALL R12 4 + 0x7001FFE7, // 0033 JMP #001C + 0x88301512, // 0034 GETMBR R12 R10 K18 + 0x4C340000, // 0035 LDNIL R13 + 0x1C30180D, // 0036 EQ R12 R12 R13 + 0x78320016, // 0037 JMPF R12 #004F + 0xB8322600, // 0038 GETNGBL R12 K19 + 0x8C301914, // 0039 GETMET R12 R12 K20 + 0x58380015, // 003A LDCONST R14 K21 + 0x7C300400, // 003B CALL R12 2 + 0x78320011, // 003C JMPF R12 #004F + 0xB8320000, // 003D GETNGBL R12 K0 + 0x8C301916, // 003E GETMET R12 R12 K22 + 0x8838150D, // 003F GETMBR R14 R10 K13 + 0x883C150E, // 0040 GETMBR R15 R10 K14 + 0x7C300600, // 0041 CALL R12 3 + 0xB8362E00, // 0042 GETNGBL R13 K23 + 0x60380008, // 0043 GETGBL R14 G8 + 0x5C3C0800, // 0044 MOVE R15 R4 + 0x7C380200, // 0045 CALL R14 1 + 0x003A300E, // 0046 ADD R14 K24 R14 + 0x78320002, // 0047 JMPF R12 #004B + 0x003E320C, // 0048 ADD R15 K25 R12 + 0x003C1F1A, // 0049 ADD R15 R15 K26 + 0x70020000, // 004A JMP #004C + 0x583C001B, // 004B LDCONST R15 K27 + 0x00381C0F, // 004C ADD R14 R14 R15 + 0x583C0015, // 004D LDCONST R15 K21 + 0x7C340400, // 004E CALL R13 2 + 0x8C300F1C, // 004F GETMET R12 R7 K28 + 0x88381512, // 0050 GETMBR R14 R10 K18 + 0x883C150D, // 0051 GETMBR R15 R10 K13 + 0x8840150E, // 0052 GETMBR R16 R10 K14 + 0x7C300800, // 0053 CALL R12 4 + 0x8C300F1D, // 0054 GETMET R12 R7 K29 + 0x7C300200, // 0055 CALL R12 1 + 0x4C340000, // 0056 LDNIL R13 + 0x8C380F1E, // 0057 GETMET R14 R7 K30 + 0x7C380200, // 0058 CALL R14 1 + 0x5C341C00, // 0059 MOVE R13 R14 + 0x783A0025, // 005A JMPF R14 #0081 + 0x90363E01, // 005B SETMBR R13 K31 R1 + 0x88381B0F, // 005C GETMBR R14 R13 K15 + 0x4C3C0000, // 005D LDNIL R15 + 0x20381C0F, // 005E NE R14 R14 R15 + 0x783A0007, // 005F JMPF R14 #0068 + 0x4C380000, // 0060 LDNIL R14 + 0x90361E0E, // 0061 SETMBR R13 K15 R14 + 0x8C380111, // 0062 GETMET R14 R0 K17 + 0x5C400C00, // 0063 MOVE R16 R6 + 0x5C441A00, // 0064 MOVE R17 R13 + 0x5C481600, // 0065 MOVE R18 R11 + 0x7C380800, // 0066 CALL R14 4 + 0x70020017, // 0067 JMP #0080 + 0x8C380F20, // 0068 GETMET R14 R7 K32 + 0x7C380200, // 0069 CALL R14 1 + 0xB83E0000, // 006A GETNGBL R15 K0 + 0x883C1F21, // 006B GETMBR R15 R15 K33 + 0x90361E0F, // 006C SETMBR R13 K15 R15 + 0x4C3C0000, // 006D LDNIL R15 + 0x203C1C0F, // 006E NE R15 R14 R15 + 0x783E0005, // 006F JMPF R15 #0076 + 0x8C3C1D22, // 0070 GETMET R15 R14 K34 + 0x88440323, // 0071 GETMBR R17 R1 K35 + 0x5C481A00, // 0072 MOVE R18 R13 + 0x5C4C1600, // 0073 MOVE R19 R11 + 0x7C3C0800, // 0074 CALL R15 4 + 0x70020000, // 0075 JMP #0077 + 0x4C3C0000, // 0076 LDNIL R15 + 0x783E0002, // 0077 JMPF R15 #007B + 0xB8420000, // 0078 GETNGBL R16 K0 + 0x88402124, // 0079 GETMBR R16 R16 K36 + 0x90361E10, // 007A SETMBR R13 K15 R16 + 0x8C400111, // 007B GETMET R16 R0 K17 + 0x5C480C00, // 007C MOVE R18 R6 + 0x5C4C1A00, // 007D MOVE R19 R13 + 0x5C501600, // 007E MOVE R20 R11 + 0x7C400800, // 007F CALL R16 4 + 0x7001FFD5, // 0080 JMP #0057 + 0x7001FF99, // 0081 JMP #001C + 0x58200025, // 0082 LDCONST R8 K37 + 0xAC200200, // 0083 CATCH R8 1 0 + 0xB0080000, // 0084 RAISE 2 R0 R0 + 0x5C200A00, // 0085 MOVE R8 R5 + 0x74220007, // 0086 JMPT R8 #008F + 0x88200126, // 0087 GETMBR R8 R0 K38 + 0x8C201127, // 0088 GETMET R8 R8 K39 + 0xB82A0000, // 0089 GETNGBL R10 K0 + 0x8C281528, // 008A GETMET R10 R10 K40 + 0x5C300200, // 008B MOVE R12 R1 + 0x5C340C00, // 008C MOVE R13 R6 + 0x7C280600, // 008D CALL R10 3 + 0x7C200400, // 008E CALL R8 2 + 0x50180200, // 008F LDBOOL R6 1 0 + 0x80040C00, // 0090 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: path2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_path2raw, /* name */ + be_nested_proto( + 9, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + }), + be_str_weak(path2raw), + &be_const_str_solidified, + ( &(const binstruction[107]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x541E0036, // 0001 LDINT R7 55 + 0x58200001, // 0002 LDCONST R8 K1 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200001, // 0006 LDCONST R8 K1 + 0x7C140600, // 0007 CALL R5 3 + 0x88140502, // 0008 GETMBR R5 R2 K2 + 0x541A00FE, // 0009 LDINT R6 255 + 0x18140A06, // 000A LE R5 R5 R6 + 0x78160008, // 000B JMPF R5 #0015 + 0x8C140300, // 000C GETMET R5 R1 K0 + 0x541E2401, // 000D LDINT R7 9218 + 0x5421FFFD, // 000E LDINT R8 -2 + 0x7C140600, // 000F CALL R5 3 + 0x8C140300, // 0010 GETMET R5 R1 K0 + 0x881C0502, // 0011 GETMBR R7 R2 K2 + 0x58200001, // 0012 LDCONST R8 K1 + 0x7C140600, // 0013 CALL R5 3 + 0x70020007, // 0014 JMP #001D + 0x8C140300, // 0015 GETMET R5 R1 K0 + 0x541E2501, // 0016 LDINT R7 9474 + 0x5421FFFD, // 0017 LDINT R8 -2 + 0x7C140600, // 0018 CALL R5 3 + 0x8C140300, // 0019 GETMET R5 R1 K0 + 0x881C0502, // 001A GETMBR R7 R2 K2 + 0x58200003, // 001B LDCONST R8 K3 + 0x7C140600, // 001C CALL R5 3 + 0x88140504, // 001D GETMBR R5 R2 K4 + 0x541A00FE, // 001E LDINT R6 255 + 0x18140A06, // 001F LE R5 R5 R6 + 0x78160008, // 0020 JMPF R5 #002A + 0x8C140300, // 0021 GETMET R5 R1 K0 + 0x541E2402, // 0022 LDINT R7 9219 + 0x5421FFFD, // 0023 LDINT R8 -2 + 0x7C140600, // 0024 CALL R5 3 + 0x8C140300, // 0025 GETMET R5 R1 K0 + 0x881C0504, // 0026 GETMBR R7 R2 K4 + 0x58200001, // 0027 LDCONST R8 K1 + 0x7C140600, // 0028 CALL R5 3 + 0x70020014, // 0029 JMP #003F + 0x88140504, // 002A GETMBR R5 R2 K4 + 0x541AFFFE, // 002B LDINT R6 65535 + 0x18140A06, // 002C LE R5 R5 R6 + 0x78160008, // 002D JMPF R5 #0037 + 0x8C140300, // 002E GETMET R5 R1 K0 + 0x541E2502, // 002F LDINT R7 9475 + 0x5421FFFD, // 0030 LDINT R8 -2 + 0x7C140600, // 0031 CALL R5 3 + 0x8C140300, // 0032 GETMET R5 R1 K0 + 0x881C0504, // 0033 GETMBR R7 R2 K4 + 0x58200003, // 0034 LDCONST R8 K3 + 0x7C140600, // 0035 CALL R5 3 + 0x70020007, // 0036 JMP #003F + 0x8C140300, // 0037 GETMET R5 R1 K0 + 0x541E2602, // 0038 LDINT R7 9731 + 0x5421FFFD, // 0039 LDINT R8 -2 + 0x7C140600, // 003A CALL R5 3 + 0x8C140300, // 003B GETMET R5 R1 K0 + 0x881C0504, // 003C GETMBR R7 R2 K4 + 0x54220003, // 003D LDINT R8 4 + 0x7C140600, // 003E CALL R5 3 + 0x88140505, // 003F GETMBR R5 R2 K5 + 0x541A00FE, // 0040 LDINT R6 255 + 0x18140A06, // 0041 LE R5 R5 R6 + 0x78160008, // 0042 JMPF R5 #004C + 0x8C140300, // 0043 GETMET R5 R1 K0 + 0x541E2403, // 0044 LDINT R7 9220 + 0x5421FFFD, // 0045 LDINT R8 -2 + 0x7C140600, // 0046 CALL R5 3 + 0x8C140300, // 0047 GETMET R5 R1 K0 + 0x881C0505, // 0048 GETMBR R7 R2 K5 + 0x58200001, // 0049 LDCONST R8 K1 + 0x7C140600, // 004A CALL R5 3 + 0x70020014, // 004B JMP #0061 + 0x88140505, // 004C GETMBR R5 R2 K5 + 0x541AFFFE, // 004D LDINT R6 65535 + 0x18140A06, // 004E LE R5 R5 R6 + 0x78160008, // 004F JMPF R5 #0059 + 0x8C140300, // 0050 GETMET R5 R1 K0 + 0x541E2503, // 0051 LDINT R7 9476 + 0x5421FFFD, // 0052 LDINT R8 -2 + 0x7C140600, // 0053 CALL R5 3 + 0x8C140300, // 0054 GETMET R5 R1 K0 + 0x881C0505, // 0055 GETMBR R7 R2 K5 + 0x58200003, // 0056 LDCONST R8 K3 + 0x7C140600, // 0057 CALL R5 3 + 0x70020007, // 0058 JMP #0061 + 0x8C140300, // 0059 GETMET R5 R1 K0 + 0x541E2603, // 005A LDINT R7 9732 + 0x5421FFFD, // 005B LDINT R8 -2 + 0x7C140600, // 005C CALL R5 3 + 0x8C140300, // 005D GETMET R5 R1 K0 + 0x881C0505, // 005E GETMBR R7 R2 K5 + 0x54220003, // 005F LDINT R8 4 + 0x7C140600, // 0060 CALL R5 3 + 0x78120003, // 0061 JMPF R4 #0066 + 0x8C140300, // 0062 GETMET R5 R1 K0 + 0x541E3404, // 0063 LDINT R7 13317 + 0x5421FFFD, // 0064 LDINT R8 -2 + 0x7C140600, // 0065 CALL R5 3 + 0x8C140300, // 0066 GETMET R5 R1 K0 + 0x541E0017, // 0067 LDINT R7 24 + 0x58200001, // 0068 LDCONST R8 K1 + 0x7C140600, // 0069 CALL R5 3 + 0x80000000, // 006A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attributedata2raw +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_attributedata2raw, /* name */ + be_nested_proto( + 11, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(355795236), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(path2raw), + /* K4 */ be_nested_str_weak(tag_sub), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(attributedata2raw), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x581C0001, // 0001 LDCONST R7 K1 + 0x5421FFFB, // 0002 LDINT R8 -4 + 0x7C140600, // 0003 CALL R5 3 + 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x581C0002, // 0005 LDCONST R7 K2 + 0x5421FFFD, // 0006 LDINT R8 -2 + 0x7C140600, // 0007 CALL R5 3 + 0x8C140103, // 0008 GETMET R5 R0 K3 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x58240002, // 000B LDCONST R9 K2 + 0x5C280800, // 000C MOVE R10 R4 + 0x7C140A00, // 000D CALL R5 5 + 0x900E0905, // 000E SETMBR R3 K4 K5 + 0x8C140706, // 000F GETMET R5 R3 K6 + 0x5C1C0200, // 0010 MOVE R7 R1 + 0x7C140400, // 0011 CALL R5 2 + 0x8C140300, // 0012 GETMET R5 R1 K0 + 0x541E1817, // 0013 LDINT R7 6168 + 0x5421FFFD, // 0014 LDINT R8 -2 + 0x7C140600, // 0015 CALL R5 3 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_subscribe_update +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ + be_nested_proto( + 13, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(ReadRequestMessage), + /* K3 */ be_nested_str_weak(fabric_filtered), + /* K4 */ be_nested_str_weak(attributes_requests), + /* K5 */ be_nested_str_weak(updates), + /* K6 */ be_nested_str_weak(AttributePathIB), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K14 */ be_nested_str_weak(local_session_id), + /* K15 */ be_nested_str_weak(subscription_id), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(is_keep_alive), + /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K19 */ be_nested_str_weak(update_event_generator_array), + /* K20 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), + /* K21 */ be_nested_str_weak(_message_handler), + /* K22 */ be_nested_str_weak(send_queue), + /* K23 */ be_nested_str_weak(send_enqueued), + }), + be_str_weak(send_subscribe_update), + &be_const_str_solidified, + ( &(const binstruction[64]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x50100000, // 0004 LDBOOL R4 0 0 + 0x900E0604, // 0005 SETMBR R3 K3 R4 + 0x60100012, // 0006 GETGBL R4 G18 + 0x7C100000, // 0007 CALL R4 0 + 0x900E0804, // 0008 SETMBR R3 K4 R4 + 0x60100010, // 0009 GETGBL R4 G16 + 0x88140305, // 000A GETMBR R5 R1 K5 + 0x7C100200, // 000B CALL R4 1 + 0xA802000F, // 000C EXBLK 0 #001D + 0x5C140800, // 000D MOVE R5 R4 + 0x7C140000, // 000E CALL R5 0 + 0xB81A0200, // 000F GETNGBL R6 K1 + 0x8C180D06, // 0010 GETMET R6 R6 K6 + 0x7C180200, // 0011 CALL R6 1 + 0x881C0B07, // 0012 GETMBR R7 R5 K7 + 0x901A0E07, // 0013 SETMBR R6 K7 R7 + 0x881C0B08, // 0014 GETMBR R7 R5 K8 + 0x901A1007, // 0015 SETMBR R6 K8 R7 + 0x881C0B09, // 0016 GETMBR R7 R5 K9 + 0x901A1207, // 0017 SETMBR R6 K9 R7 + 0x881C0704, // 0018 GETMBR R7 R3 K4 + 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 + 0x5C240C00, // 001A MOVE R9 R6 + 0x7C1C0400, // 001B CALL R7 2 + 0x7001FFEF, // 001C JMP #000D + 0x5810000B, // 001D LDCONST R4 K11 + 0xAC100200, // 001E CATCH R4 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0xB8121800, // 0020 GETNGBL R4 K12 + 0x60140018, // 0021 GETGBL R5 G24 + 0x5818000D, // 0022 LDCONST R6 K13 + 0x881C050E, // 0023 GETMBR R7 R2 K14 + 0x8820030F, // 0024 GETMBR R8 R1 K15 + 0x7C140600, // 0025 CALL R5 3 + 0x58180010, // 0026 LDCONST R6 K16 + 0x7C100400, // 0027 CALL R4 2 + 0x50100000, // 0028 LDBOOL R4 0 0 + 0x90062204, // 0029 SETMBR R1 K17 R4 + 0x8C100112, // 002A GETMET R4 R0 K18 + 0x5C180600, // 002B MOVE R6 R3 + 0x4C1C0000, // 002C LDNIL R7 + 0x7C100600, // 002D CALL R4 3 + 0x8C140313, // 002E GETMET R5 R1 K19 + 0x7C140200, // 002F CALL R5 1 + 0xB81A0200, // 0030 GETNGBL R6 K1 + 0x8C180D14, // 0031 GETMET R6 R6 K20 + 0x88200515, // 0032 GETMBR R8 R2 K21 + 0x5C240400, // 0033 MOVE R9 R2 + 0x5C280800, // 0034 MOVE R10 R4 + 0x5C2C0A00, // 0035 MOVE R11 R5 + 0x5C300200, // 0036 MOVE R12 R1 + 0x7C180C00, // 0037 CALL R6 6 + 0x881C0116, // 0038 GETMBR R7 R0 K22 + 0x8C1C0F0A, // 0039 GETMET R7 R7 K10 + 0x5C240C00, // 003A MOVE R9 R6 + 0x7C1C0400, // 003B CALL R7 2 + 0x8C1C0117, // 003C GETMET R7 R0 K23 + 0x88240515, // 003D GETMBR R9 R2 K21 + 0x7C1C0400, // 003E CALL R7 2 + 0x80000000, // 003F RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_read_request_pull ********************************************************************/ @@ -65,44 +582,253 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ /******************************************************************** -** Solidified function: process_incoming_ack +** Solidified function: process_read_or_subscribe_request_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ +be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ + 16, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K1 */ be_nested_str_weak(exchange_id), - /* K2 */ be_nested_str_weak(ack_received), - /* K3 */ be_nested_str_weak(finished), - /* K4 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(attributes_requests), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(PathGenerator), + /* K5 */ be_nested_str_weak(device), + /* K6 */ be_nested_str_weak(start), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(fabric_filtered), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(loglevel), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(Path), + /* K16 */ be_nested_str_weak(get_attribute_name), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K19 */ be_nested_str_weak(session), + /* K20 */ be_nested_str_weak(local_session_id), + /* K21 */ be_nested_str_weak(_X20_X28), + /* K22 */ be_nested_str_weak(_X29), + /* K23 */ be_nested_str_weak(), + /* K24 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(process_incoming_ack), + be_str_weak(process_read_or_subscribe_request_pull), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x780A0008, // 0003 JMPF R2 #000D - 0x8C0C0502, // 0004 GETMET R3 R2 K2 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C0C0400, // 0006 CALL R3 2 - 0x88100503, // 0007 GETMBR R4 R2 K3 - 0x78120002, // 0008 JMPF R4 #000C - 0x8C100104, // 0009 GETMET R4 R0 K4 - 0x88180301, // 000A GETMBR R6 R1 K1 - 0x7C100400, // 000B CALL R4 2 - 0x80040600, // 000C RET 1 R3 - 0x500C0000, // 000D LDBOOL R3 0 0 - 0x80040600, // 000E RET 1 R3 + ( &(const binstruction[115]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x200C0604, // 0002 NE R3 R3 R4 + 0x780E006C, // 0003 JMPF R3 #0071 + 0x4C0C0000, // 0004 LDNIL R3 + 0x88100300, // 0005 GETMBR R4 R1 K0 + 0x78120003, // 0006 JMPF R4 #000B + 0x6010000C, // 0007 GETGBL R4 G12 + 0x88140300, // 0008 GETMBR R5 R1 K0 + 0x7C100200, // 0009 CALL R4 1 + 0x70020000, // 000A JMP #000C + 0x58100001, // 000B LDCONST R4 K1 + 0x24140902, // 000C GT R5 R4 K2 + 0x78160002, // 000D JMPF R5 #0011 + 0x60140012, // 000E GETGBL R5 G18 + 0x7C140000, // 000F CALL R5 0 + 0x5C0C0A00, // 0010 MOVE R3 R5 + 0x60140010, // 0011 GETGBL R5 G16 + 0x88180300, // 0012 GETMBR R6 R1 K0 + 0x7C140200, // 0013 CALL R5 1 + 0xA8020057, // 0014 EXBLK 0 #006D + 0x5C180A00, // 0015 MOVE R6 R5 + 0x7C180000, // 0016 CALL R6 0 + 0xB81E0600, // 0017 GETNGBL R7 K3 + 0x8C1C0F04, // 0018 GETMET R7 R7 K4 + 0x88240105, // 0019 GETMBR R9 R0 K5 + 0x7C1C0400, // 001A CALL R7 2 + 0x8C200F06, // 001B GETMET R8 R7 K6 + 0x88280D07, // 001C GETMBR R10 R6 K7 + 0x882C0D08, // 001D GETMBR R11 R6 K8 + 0x88300D09, // 001E GETMBR R12 R6 K9 + 0x8834030A, // 001F GETMBR R13 R1 K10 + 0x7C200A00, // 0020 CALL R8 5 + 0x24200902, // 0021 GT R8 R4 K2 + 0x78220003, // 0022 JMPF R8 #0027 + 0x8C20070B, // 0023 GETMET R8 R3 K11 + 0x5C280E00, // 0024 MOVE R10 R7 + 0x7C200400, // 0025 CALL R8 2 + 0x70020000, // 0026 JMP #0028 + 0x5C0C0E00, // 0027 MOVE R3 R7 + 0xB8221800, // 0028 GETNGBL R8 K12 + 0x8C20110D, // 0029 GETMET R8 R8 K13 + 0x5828000E, // 002A LDCONST R10 K14 + 0x7C200400, // 002B CALL R8 2 + 0x7822003E, // 002C JMPF R8 #006C + 0x88200D07, // 002D GETMBR R8 R6 K7 + 0x4C240000, // 002E LDNIL R9 + 0x1C201009, // 002F EQ R8 R8 R9 + 0x74220007, // 0030 JMPT R8 #0039 + 0x88200D08, // 0031 GETMBR R8 R6 K8 + 0x4C240000, // 0032 LDNIL R9 + 0x1C201009, // 0033 EQ R8 R8 R9 + 0x74220003, // 0034 JMPT R8 #0039 + 0x88200D09, // 0035 GETMBR R8 R6 K9 + 0x4C240000, // 0036 LDNIL R9 + 0x1C201009, // 0037 EQ R8 R8 R9 + 0x78220032, // 0038 JMPF R8 #006C + 0xB8220600, // 0039 GETNGBL R8 K3 + 0x8C20110F, // 003A GETMET R8 R8 K15 + 0x7C200200, // 003B CALL R8 1 + 0x88240D07, // 003C GETMBR R9 R6 K7 + 0x90220E09, // 003D SETMBR R8 K7 R9 + 0x88240D08, // 003E GETMBR R9 R6 K8 + 0x90221009, // 003F SETMBR R8 K8 R9 + 0x88240D09, // 0040 GETMBR R9 R6 K9 + 0x90221209, // 0041 SETMBR R8 K9 R9 + 0x8824030A, // 0042 GETMBR R9 R1 K10 + 0x90221409, // 0043 SETMBR R8 K10 R9 + 0x60240008, // 0044 GETGBL R9 G8 + 0x5C281000, // 0045 MOVE R10 R8 + 0x7C240200, // 0046 CALL R9 1 + 0x88280D08, // 0047 GETMBR R10 R6 K8 + 0x4C2C0000, // 0048 LDNIL R11 + 0x2028140B, // 0049 NE R10 R10 R11 + 0x782A0017, // 004A JMPF R10 #0063 + 0x88280D09, // 004B GETMBR R10 R6 K9 + 0x4C2C0000, // 004C LDNIL R11 + 0x2028140B, // 004D NE R10 R10 R11 + 0x782A0013, // 004E JMPF R10 #0063 + 0xB82A0600, // 004F GETNGBL R10 K3 + 0x8C281510, // 0050 GETMET R10 R10 K16 + 0x88300D08, // 0051 GETMBR R12 R6 K8 + 0x88340D09, // 0052 GETMBR R13 R6 K9 + 0x7C280600, // 0053 CALL R10 3 + 0xB82E2200, // 0054 GETNGBL R11 K17 + 0x60300018, // 0055 GETGBL R12 G24 + 0x58340012, // 0056 LDCONST R13 K18 + 0x88380513, // 0057 GETMBR R14 R2 K19 + 0x88381D14, // 0058 GETMBR R14 R14 K20 + 0x782A0002, // 0059 JMPF R10 #005D + 0x003E2A0A, // 005A ADD R15 K21 R10 + 0x003C1F16, // 005B ADD R15 R15 K22 + 0x70020000, // 005C JMP #005E + 0x583C0017, // 005D LDCONST R15 K23 + 0x003C120F, // 005E ADD R15 R9 R15 + 0x7C300600, // 005F CALL R12 3 + 0x5834000E, // 0060 LDCONST R13 K14 + 0x7C2C0400, // 0061 CALL R11 2 + 0x70020008, // 0062 JMP #006C + 0xB82A2200, // 0063 GETNGBL R10 K17 + 0x602C0018, // 0064 GETGBL R11 G24 + 0x58300012, // 0065 LDCONST R12 K18 + 0x88340513, // 0066 GETMBR R13 R2 K19 + 0x88341B14, // 0067 GETMBR R13 R13 K20 + 0x5C381200, // 0068 MOVE R14 R9 + 0x7C2C0600, // 0069 CALL R11 3 + 0x5830000E, // 006A LDCONST R12 K14 + 0x7C280400, // 006B CALL R10 2 + 0x7001FFA7, // 006C JMP #0015 + 0x58140018, // 006D LDCONST R5 K24 + 0xAC140200, // 006E CATCH R5 1 0 + 0xB0080000, // 006F RAISE 2 R0 R0 + 0x80040600, // 0070 RET 1 R3 + 0x4C0C0000, // 0071 LDNIL R3 + 0x80040600, // 0072 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_timed_request +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_timed_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TimedRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K5 */ be_nested_str_weak(session), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(timeout), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(send_status), + /* K10 */ be_nested_str_weak(SUCCESS), + }), + be_str_weak(process_timed_request), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0xB8120600, // 0006 GETNGBL R4 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x881C0305, // 0009 GETMBR R7 R1 K5 + 0x881C0F06, // 000A GETMBR R7 R7 K6 + 0x88200707, // 000B GETMBR R8 R3 K7 + 0x7C140600, // 000C CALL R5 3 + 0x58180008, // 000D LDCONST R6 K8 + 0x7C100400, // 000E CALL R4 2 + 0x8C100109, // 000F GETMET R4 R0 K9 + 0x5C180200, // 0010 MOVE R6 R1 + 0xB81E0000, // 0011 GETNGBL R7 K0 + 0x881C0F0A, // 0012 GETMBR R7 R7 K10 + 0x7C100600, // 0013 CALL R4 3 + 0x50100200, // 0014 LDBOOL R4 1 0 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_every_50ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(subs_shop), + /* K1 */ be_nested_str_weak(every_50ms), + }), + be_str_weak(every_50ms), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 }) ) ); @@ -398,135 +1124,254 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ /******************************************************************** -** Solidified function: write_single_attribute_status_to_bytes +** Solidified function: process_read_or_subscribe_request_event_pull ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* name */ +be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, /* name */ be_nested_proto( - 16, /* nstack */ - 4, /* argc */ + 24, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(get_attribute_name), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(_X20_X28), - /* K6 */ be_nested_str_weak(_X29), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_nested_str_weak(status), - /* K9 */ be_nested_str_weak(AttributeStatusIB), - /* K10 */ be_nested_str_weak(path), - /* K11 */ be_nested_str_weak(AttributePathIB), - /* K12 */ be_nested_str_weak(StatusIB), - /* K13 */ be_nested_str_weak(endpoint), - /* K14 */ be_nested_str_weak(write_responses), - /* K15 */ be_nested_str_weak(push), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K18 */ be_nested_str_weak(SUCCESS), - /* K19 */ be_const_int(0), - /* K20 */ be_const_int(2), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(tasmota), - /* K23 */ be_nested_str_weak(loglevel), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(event_requests), + /* K1 */ be_nested_str_weak(get_node_id), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(parse_event_filters_min_no), + /* K5 */ be_nested_str_weak(event_filters), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(EventGenerator), + /* K8 */ be_nested_str_weak(device), + /* K9 */ be_nested_str_weak(start), + /* K10 */ be_nested_str_weak(endpoint), + /* K11 */ be_nested_str_weak(cluster), + /* K12 */ be_nested_str_weak(event), + /* K13 */ be_nested_str_weak(push), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(loglevel), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(), + /* K18 */ be_nested_str_weak(get_event_name), + /* K19 */ be_nested_str_weak(_X28), + /* K20 */ be_nested_str_weak(_X29_X20), + /* K21 */ be_nested_str_weak(_X2502X), + /* K22 */ be_nested_str_weak(_X2A_X2A), + /* K23 */ be_nested_str_weak(_X2504X), + /* K24 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K25 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), + /* K26 */ be_nested_str_weak(log), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), + /* K28 */ be_nested_str_weak(session), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(write_single_attribute_status_to_bytes), + be_str_weak(process_read_or_subscribe_request_event_pull), &be_const_str_solidified, - ( &(const binstruction[86]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0xB8160000, // 0002 GETNGBL R5 K0 - 0x8C140B02, // 0003 GETMET R5 R5 K2 - 0x881C0503, // 0004 GETMBR R7 R2 K3 - 0x88200504, // 0005 GETMBR R8 R2 K4 - 0x7C140600, // 0006 CALL R5 3 - 0x78160002, // 0007 JMPF R5 #000B - 0x001A0A05, // 0008 ADD R6 K5 R5 - 0x00180D06, // 0009 ADD R6 R6 K6 + ( &(const binstruction[140]) { /* code */ + 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x200C0604, // 0002 NE R3 R3 R4 + 0x780E0085, // 0003 JMPF R3 #008A + 0x4C0C0000, // 0004 LDNIL R3 + 0x4C100000, // 0005 LDNIL R4 + 0x20100404, // 0006 NE R4 R2 R4 + 0x78120002, // 0007 JMPF R4 #000B + 0x8C100501, // 0008 GETMET R4 R2 K1 + 0x7C100200, // 0009 CALL R4 1 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x5C140C00, // 000C MOVE R5 R6 - 0x88180508, // 000D GETMBR R6 R2 K8 - 0x4C1C0000, // 000E LDNIL R7 - 0x20180C07, // 000F NE R6 R6 R7 - 0x781A0034, // 0010 JMPF R6 #0046 - 0xB81A0000, // 0011 GETNGBL R6 K0 - 0x8C180D09, // 0012 GETMET R6 R6 K9 - 0x7C180200, // 0013 CALL R6 1 - 0xB81E0000, // 0014 GETNGBL R7 K0 - 0x8C1C0F0B, // 0015 GETMET R7 R7 K11 - 0x7C1C0200, // 0016 CALL R7 1 - 0x901A1407, // 0017 SETMBR R6 K10 R7 - 0xB81E0000, // 0018 GETNGBL R7 K0 - 0x8C1C0F0C, // 0019 GETMET R7 R7 K12 - 0x7C1C0200, // 001A CALL R7 1 - 0x901A1007, // 001B SETMBR R6 K8 R7 - 0x881C0D0A, // 001C GETMBR R7 R6 K10 - 0x8820050D, // 001D GETMBR R8 R2 K13 - 0x901E1A08, // 001E SETMBR R7 K13 R8 - 0x881C0D0A, // 001F GETMBR R7 R6 K10 - 0x88200503, // 0020 GETMBR R8 R2 K3 - 0x901E0608, // 0021 SETMBR R7 K3 R8 - 0x881C0D0A, // 0022 GETMBR R7 R6 K10 - 0x88200504, // 0023 GETMBR R8 R2 K4 - 0x901E0808, // 0024 SETMBR R7 K4 R8 - 0x881C0D08, // 0025 GETMBR R7 R6 K8 - 0x88200508, // 0026 GETMBR R8 R2 K8 - 0x901E1008, // 0027 SETMBR R7 K8 R8 - 0x881C030E, // 0028 GETMBR R7 R1 K14 - 0x8C1C0F0F, // 0029 GETMET R7 R7 K15 - 0x5C240C00, // 002A MOVE R9 R6 - 0x7C1C0400, // 002B CALL R7 2 - 0xB81E2000, // 002C GETNGBL R7 K16 - 0x60200018, // 002D GETGBL R8 G24 - 0x58240011, // 002E LDCONST R9 K17 - 0x60280008, // 002F GETGBL R10 G8 - 0x5C2C0400, // 0030 MOVE R11 R2 - 0x7C280200, // 0031 CALL R10 1 - 0x5C2C0A00, // 0032 MOVE R11 R5 - 0x5C300600, // 0033 MOVE R12 R3 - 0x88340508, // 0034 GETMBR R13 R2 K8 - 0x88380508, // 0035 GETMBR R14 R2 K8 - 0xB83E0000, // 0036 GETNGBL R15 K0 - 0x883C1F12, // 0037 GETMBR R15 R15 K18 - 0x1C381C0F, // 0038 EQ R14 R14 R15 - 0x783A0001, // 0039 JMPF R14 #003C - 0x58380012, // 003A LDCONST R14 K18 - 0x70020000, // 003B JMP #003D - 0x58380007, // 003C LDCONST R14 K7 - 0x7C200C00, // 003D CALL R8 6 - 0x8824050D, // 003E GETMBR R9 R2 K13 - 0x20241313, // 003F NE R9 R9 K19 - 0x78260001, // 0040 JMPF R9 #0043 - 0x58240014, // 0041 LDCONST R9 K20 - 0x70020000, // 0042 JMP #0044 - 0x58240015, // 0043 LDCONST R9 K21 - 0x7C1C0400, // 0044 CALL R7 2 - 0x7002000E, // 0045 JMP #0055 - 0xB81A2C00, // 0046 GETNGBL R6 K22 - 0x8C180D17, // 0047 GETMET R6 R6 K23 - 0x58200015, // 0048 LDCONST R8 K21 - 0x7C180400, // 0049 CALL R6 2 - 0x781A0009, // 004A JMPF R6 #0055 - 0xB81A2000, // 004B GETNGBL R6 K16 - 0x601C0018, // 004C GETGBL R7 G24 - 0x58200018, // 004D LDCONST R8 K24 - 0x60240008, // 004E GETGBL R9 G8 - 0x5C280400, // 004F MOVE R10 R2 - 0x7C240200, // 0050 CALL R9 1 - 0x5C280A00, // 0051 MOVE R10 R5 - 0x7C1C0600, // 0052 CALL R7 3 - 0x58200015, // 0053 LDCONST R8 K21 - 0x7C180400, // 0054 CALL R6 2 - 0x80000000, // 0055 RET 0 + 0x4C100000, // 000B LDNIL R4 + 0x88140300, // 000C GETMBR R5 R1 K0 + 0x78160003, // 000D JMPF R5 #0012 + 0x6014000C, // 000E GETGBL R5 G12 + 0x88180300, // 000F GETMBR R6 R1 K0 + 0x7C140200, // 0010 CALL R5 1 + 0x70020000, // 0011 JMP #0013 + 0x58140002, // 0012 LDCONST R5 K2 + 0x24180B03, // 0013 GT R6 R5 K3 + 0x781A0002, // 0014 JMPF R6 #0018 + 0x60180012, // 0015 GETGBL R6 G18 + 0x7C180000, // 0016 CALL R6 0 + 0x5C0C0C00, // 0017 MOVE R3 R6 + 0x8C180104, // 0018 GETMET R6 R0 K4 + 0x88200305, // 0019 GETMBR R8 R1 K5 + 0x5C240800, // 001A MOVE R9 R4 + 0x7C180600, // 001B CALL R6 3 + 0x881C0300, // 001C GETMBR R7 R1 K0 + 0x781E006A, // 001D JMPF R7 #0089 + 0x601C0010, // 001E GETGBL R7 G16 + 0x88200300, // 001F GETMBR R8 R1 K0 + 0x7C1C0200, // 0020 CALL R7 1 + 0xA8020063, // 0021 EXBLK 0 #0086 + 0x5C200E00, // 0022 MOVE R8 R7 + 0x7C200000, // 0023 CALL R8 0 + 0xB8260C00, // 0024 GETNGBL R9 K6 + 0x8C241307, // 0025 GETMET R9 R9 K7 + 0x882C0108, // 0026 GETMBR R11 R0 K8 + 0x7C240400, // 0027 CALL R9 2 + 0x8C281309, // 0028 GETMET R10 R9 K9 + 0x8830110A, // 0029 GETMBR R12 R8 K10 + 0x8834110B, // 002A GETMBR R13 R8 K11 + 0x8838110C, // 002B GETMBR R14 R8 K12 + 0x5C3C0C00, // 002C MOVE R15 R6 + 0x7C280A00, // 002D CALL R10 5 + 0x24280B03, // 002E GT R10 R5 K3 + 0x782A0003, // 002F JMPF R10 #0034 + 0x8C28070D, // 0030 GETMET R10 R3 K13 + 0x5C301200, // 0031 MOVE R12 R9 + 0x7C280400, // 0032 CALL R10 2 + 0x70020000, // 0033 JMP #0035 + 0x5C0C1200, // 0034 MOVE R3 R9 + 0xB82A1C00, // 0035 GETNGBL R10 K14 + 0x8C28150F, // 0036 GETMET R10 R10 K15 + 0x58300010, // 0037 LDCONST R12 K16 + 0x7C280400, // 0038 CALL R10 2 + 0x782A004A, // 0039 JMPF R10 #0085 + 0x58280011, // 003A LDCONST R10 K17 + 0x882C110B, // 003B GETMBR R11 R8 K11 + 0x4C300000, // 003C LDNIL R12 + 0x202C160C, // 003D NE R11 R11 R12 + 0x782E0011, // 003E JMPF R11 #0051 + 0x882C110C, // 003F GETMBR R11 R8 K12 + 0x4C300000, // 0040 LDNIL R12 + 0x202C160C, // 0041 NE R11 R11 R12 + 0x782E000D, // 0042 JMPF R11 #0051 + 0xB82E0C00, // 0043 GETNGBL R11 K6 + 0x8C2C1712, // 0044 GETMET R11 R11 K18 + 0x8834110B, // 0045 GETMBR R13 R8 K11 + 0x8838110C, // 0046 GETMBR R14 R8 K12 + 0x7C2C0600, // 0047 CALL R11 3 + 0x5C281600, // 0048 MOVE R10 R11 + 0x4C2C0000, // 0049 LDNIL R11 + 0x202C140B, // 004A NE R11 R10 R11 + 0x782E0002, // 004B JMPF R11 #004F + 0x002E260A, // 004C ADD R11 K19 R10 + 0x002C1714, // 004D ADD R11 R11 K20 + 0x70020000, // 004E JMP #0050 + 0x582C0011, // 004F LDCONST R11 K17 + 0x5C281600, // 0050 MOVE R10 R11 + 0x882C110A, // 0051 GETMBR R11 R8 K10 + 0x4C300000, // 0052 LDNIL R12 + 0x202C160C, // 0053 NE R11 R11 R12 + 0x782E0004, // 0054 JMPF R11 #005A + 0x602C0018, // 0055 GETGBL R11 G24 + 0x58300015, // 0056 LDCONST R12 K21 + 0x8834110A, // 0057 GETMBR R13 R8 K10 + 0x7C2C0400, // 0058 CALL R11 2 + 0x70020000, // 0059 JMP #005B + 0x582C0016, // 005A LDCONST R11 K22 + 0x8830110B, // 005B GETMBR R12 R8 K11 + 0x4C340000, // 005C LDNIL R13 + 0x2030180D, // 005D NE R12 R12 R13 + 0x78320004, // 005E JMPF R12 #0064 + 0x60300018, // 005F GETGBL R12 G24 + 0x58340017, // 0060 LDCONST R13 K23 + 0x8838110B, // 0061 GETMBR R14 R8 K11 + 0x7C300400, // 0062 CALL R12 2 + 0x70020000, // 0063 JMP #0065 + 0x58300018, // 0064 LDCONST R12 K24 + 0x8834110C, // 0065 GETMBR R13 R8 K12 + 0x4C380000, // 0066 LDNIL R14 + 0x20341A0E, // 0067 NE R13 R13 R14 + 0x78360004, // 0068 JMPF R13 #006E + 0x60340018, // 0069 GETGBL R13 G24 + 0x58380015, // 006A LDCONST R14 K21 + 0x883C110C, // 006B GETMBR R15 R8 K12 + 0x7C340400, // 006C CALL R13 2 + 0x70020000, // 006D JMP #006F + 0x58340016, // 006E LDCONST R13 K22 + 0x4C380000, // 006F LDNIL R14 + 0x20380C0E, // 0070 NE R14 R6 R14 + 0x783A0004, // 0071 JMPF R14 #0077 + 0x60380018, // 0072 GETGBL R14 G24 + 0x583C0019, // 0073 LDCONST R15 K25 + 0x5C400C00, // 0074 MOVE R16 R6 + 0x7C380400, // 0075 CALL R14 2 + 0x70020000, // 0076 JMP #0078 + 0x58380011, // 0077 LDCONST R14 K17 + 0xB83E3400, // 0078 GETNGBL R15 K26 + 0x60400018, // 0079 GETGBL R16 G24 + 0x5844001B, // 007A LDCONST R17 K27 + 0x8848051C, // 007B GETMBR R18 R2 K28 + 0x8848251D, // 007C GETMBR R18 R18 K29 + 0x5C4C1600, // 007D MOVE R19 R11 + 0x5C501800, // 007E MOVE R20 R12 + 0x5C541A00, // 007F MOVE R21 R13 + 0x5C581400, // 0080 MOVE R22 R10 + 0x5C5C1C00, // 0081 MOVE R23 R14 + 0x7C400E00, // 0082 CALL R16 7 + 0x58440010, // 0083 LDCONST R17 K16 + 0x7C3C0400, // 0084 CALL R15 2 + 0x7001FF9B, // 0085 JMP #0022 + 0x581C001E, // 0086 LDCONST R7 K30 + 0xAC1C0200, // 0087 CATCH R7 1 0 + 0xB0080000, // 0088 RAISE 2 R0 R0 + 0x80040600, // 0089 RET 1 R3 + 0x4C0C0000, // 008A LDNIL R3 + 0x80040600, // 008B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_enqueued +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_send_enqueued, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(finished), + /* K3 */ be_nested_str_weak(ready), + /* K4 */ be_nested_str_weak(send_im), + /* K5 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K6 */ be_nested_str_weak(resp), + /* K7 */ be_nested_str_weak(exchange_id), + /* K8 */ be_const_int(1), + }), + be_str_weak(send_enqueued), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0011, // 0005 JMPF R3 #0018 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x74120004, // 0009 JMPT R4 #000F + 0x88100703, // 000A GETMBR R4 R3 K3 + 0x78120002, // 000B JMPF R4 #000F + 0x8C100704, // 000C GETMET R4 R3 K4 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C100400, // 000E CALL R4 2 + 0x88100702, // 000F GETMBR R4 R3 K2 + 0x78120004, // 0010 JMPF R4 #0016 + 0x8C100105, // 0011 GETMET R4 R0 K5 + 0x88180706, // 0012 GETMBR R6 R3 K6 + 0x88180D07, // 0013 GETMBR R6 R6 K7 + 0x7C100400, // 0014 CALL R4 2 + 0x70020000, // 0015 JMP #0017 + 0x00080508, // 0016 ADD R2 R2 K8 + 0x7001FFE8, // 0017 JMP #0001 + 0x80000000, // 0018 RET 0 }) ) ); @@ -690,177 +1535,12 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /******************************************************************** -** Solidified function: process_read_or_subscribe_request_pull +** Solidified function: send_ack_now ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ +be_local_closure(class_Matter_IM_send_ack_now, /* name */ be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(attributes_requests), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(device), - /* K6 */ be_nested_str_weak(start), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(fabric_filtered), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(loglevel), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(Path), - /* K16 */ be_nested_str_weak(get_attribute_name), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K19 */ be_nested_str_weak(session), - /* K20 */ be_nested_str_weak(local_session_id), - /* K21 */ be_nested_str_weak(_X20_X28), - /* K22 */ be_nested_str_weak(_X29), - /* K23 */ be_nested_str_weak(), - /* K24 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(process_read_or_subscribe_request_pull), - &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x200C0604, // 0002 NE R3 R3 R4 - 0x780E006C, // 0003 JMPF R3 #0071 - 0x4C0C0000, // 0004 LDNIL R3 - 0x88100300, // 0005 GETMBR R4 R1 K0 - 0x78120003, // 0006 JMPF R4 #000B - 0x6010000C, // 0007 GETGBL R4 G12 - 0x88140300, // 0008 GETMBR R5 R1 K0 - 0x7C100200, // 0009 CALL R4 1 - 0x70020000, // 000A JMP #000C - 0x58100001, // 000B LDCONST R4 K1 - 0x24140902, // 000C GT R5 R4 K2 - 0x78160002, // 000D JMPF R5 #0011 - 0x60140012, // 000E GETGBL R5 G18 - 0x7C140000, // 000F CALL R5 0 - 0x5C0C0A00, // 0010 MOVE R3 R5 - 0x60140010, // 0011 GETGBL R5 G16 - 0x88180300, // 0012 GETMBR R6 R1 K0 - 0x7C140200, // 0013 CALL R5 1 - 0xA8020057, // 0014 EXBLK 0 #006D - 0x5C180A00, // 0015 MOVE R6 R5 - 0x7C180000, // 0016 CALL R6 0 - 0xB81E0600, // 0017 GETNGBL R7 K3 - 0x8C1C0F04, // 0018 GETMET R7 R7 K4 - 0x88240105, // 0019 GETMBR R9 R0 K5 - 0x7C1C0400, // 001A CALL R7 2 - 0x8C200F06, // 001B GETMET R8 R7 K6 - 0x88280D07, // 001C GETMBR R10 R6 K7 - 0x882C0D08, // 001D GETMBR R11 R6 K8 - 0x88300D09, // 001E GETMBR R12 R6 K9 - 0x8834030A, // 001F GETMBR R13 R1 K10 - 0x7C200A00, // 0020 CALL R8 5 - 0x24200902, // 0021 GT R8 R4 K2 - 0x78220003, // 0022 JMPF R8 #0027 - 0x8C20070B, // 0023 GETMET R8 R3 K11 - 0x5C280E00, // 0024 MOVE R10 R7 - 0x7C200400, // 0025 CALL R8 2 - 0x70020000, // 0026 JMP #0028 - 0x5C0C0E00, // 0027 MOVE R3 R7 - 0xB8221800, // 0028 GETNGBL R8 K12 - 0x8C20110D, // 0029 GETMET R8 R8 K13 - 0x5828000E, // 002A LDCONST R10 K14 - 0x7C200400, // 002B CALL R8 2 - 0x7822003E, // 002C JMPF R8 #006C - 0x88200D07, // 002D GETMBR R8 R6 K7 - 0x4C240000, // 002E LDNIL R9 - 0x1C201009, // 002F EQ R8 R8 R9 - 0x74220007, // 0030 JMPT R8 #0039 - 0x88200D08, // 0031 GETMBR R8 R6 K8 - 0x4C240000, // 0032 LDNIL R9 - 0x1C201009, // 0033 EQ R8 R8 R9 - 0x74220003, // 0034 JMPT R8 #0039 - 0x88200D09, // 0035 GETMBR R8 R6 K9 - 0x4C240000, // 0036 LDNIL R9 - 0x1C201009, // 0037 EQ R8 R8 R9 - 0x78220032, // 0038 JMPF R8 #006C - 0xB8220600, // 0039 GETNGBL R8 K3 - 0x8C20110F, // 003A GETMET R8 R8 K15 - 0x7C200200, // 003B CALL R8 1 - 0x88240D07, // 003C GETMBR R9 R6 K7 - 0x90220E09, // 003D SETMBR R8 K7 R9 - 0x88240D08, // 003E GETMBR R9 R6 K8 - 0x90221009, // 003F SETMBR R8 K8 R9 - 0x88240D09, // 0040 GETMBR R9 R6 K9 - 0x90221209, // 0041 SETMBR R8 K9 R9 - 0x8824030A, // 0042 GETMBR R9 R1 K10 - 0x90221409, // 0043 SETMBR R8 K10 R9 - 0x60240008, // 0044 GETGBL R9 G8 - 0x5C281000, // 0045 MOVE R10 R8 - 0x7C240200, // 0046 CALL R9 1 - 0x88280D08, // 0047 GETMBR R10 R6 K8 - 0x4C2C0000, // 0048 LDNIL R11 - 0x2028140B, // 0049 NE R10 R10 R11 - 0x782A0017, // 004A JMPF R10 #0063 - 0x88280D09, // 004B GETMBR R10 R6 K9 - 0x4C2C0000, // 004C LDNIL R11 - 0x2028140B, // 004D NE R10 R10 R11 - 0x782A0013, // 004E JMPF R10 #0063 - 0xB82A0600, // 004F GETNGBL R10 K3 - 0x8C281510, // 0050 GETMET R10 R10 K16 - 0x88300D08, // 0051 GETMBR R12 R6 K8 - 0x88340D09, // 0052 GETMBR R13 R6 K9 - 0x7C280600, // 0053 CALL R10 3 - 0xB82E2200, // 0054 GETNGBL R11 K17 - 0x60300018, // 0055 GETGBL R12 G24 - 0x58340012, // 0056 LDCONST R13 K18 - 0x88380513, // 0057 GETMBR R14 R2 K19 - 0x88381D14, // 0058 GETMBR R14 R14 K20 - 0x782A0002, // 0059 JMPF R10 #005D - 0x003E2A0A, // 005A ADD R15 K21 R10 - 0x003C1F16, // 005B ADD R15 R15 K22 - 0x70020000, // 005C JMP #005E - 0x583C0017, // 005D LDCONST R15 K23 - 0x003C120F, // 005E ADD R15 R9 R15 - 0x7C300600, // 005F CALL R12 3 - 0x5834000E, // 0060 LDCONST R13 K14 - 0x7C2C0400, // 0061 CALL R11 2 - 0x70020008, // 0062 JMP #006C - 0xB82A2200, // 0063 GETNGBL R10 K17 - 0x602C0018, // 0064 GETGBL R11 G24 - 0x58300012, // 0065 LDCONST R12 K18 - 0x88340513, // 0066 GETMBR R13 R2 K19 - 0x88341B14, // 0067 GETMBR R13 R13 K20 - 0x5C381200, // 0068 MOVE R14 R9 - 0x7C2C0600, // 0069 CALL R11 3 - 0x5830000E, // 006A LDCONST R12 K14 - 0x7C280400, // 006B CALL R10 2 - 0x7001FFA7, // 006C JMP #0015 - 0x58140018, // 006D LDCONST R5 K24 - 0xAC140200, // 006E CATCH R5 1 0 - 0xB0080000, // 006F RAISE 2 R0 R0 - 0x80040600, // 0070 RET 1 R3 - 0x4C0C0000, // 0071 LDNIL R3 - 0x80040600, // 0072 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_incoming -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_incoming, /* name */ - be_nested_proto( - 8, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -868,160 +1548,406 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(opcode), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str_weak(read_request_solo), - /* K3 */ be_nested_str_weak(from_raw), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_nested_str_weak(process_read_request_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(process_invoke_request_solo), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(parse), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(process_status_response), - /* K14 */ be_nested_str_weak(send_ack_now), - /* K15 */ be_nested_str_weak(process_read_request_pull), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(subscribe_request), - /* K18 */ be_nested_str_weak(process_write_request), - /* K19 */ be_nested_str_weak(process_write_response), - /* K20 */ be_nested_str_weak(process_invoke_request), - /* K21 */ be_nested_str_weak(process_timed_request), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(_message_handler), + /* K2 */ be_nested_str_weak(send_encrypted_ack), }), - be_str_weak(process_incoming), + be_str_weak(send_ack_now), &be_const_str_solidified, - ( &(const binstruction[127]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x1C0C0501, // 0001 EQ R3 R2 K1 - 0x780E000D, // 0002 JMPF R3 #0011 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x8C0C0703, // 0004 GETMET R3 R3 K3 - 0x88140304, // 0005 GETMBR R5 R1 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x7C0C0600, // 0007 CALL R3 3 - 0x4C100000, // 0008 LDNIL R4 - 0x20100604, // 0009 NE R4 R3 R4 - 0x78120004, // 000A JMPF R4 #0010 - 0x8C100106, // 000B GETMET R4 R0 K6 - 0x5C180200, // 000C MOVE R6 R1 - 0x5C1C0600, // 000D MOVE R7 R3 - 0x7C100600, // 000E CALL R4 3 - 0x80040800, // 000F RET 1 R4 - 0x7002000F, // 0010 JMP #0021 - 0x540E0007, // 0011 LDINT R3 8 - 0x1C0C0403, // 0012 EQ R3 R2 R3 - 0x780E000C, // 0013 JMPF R3 #0021 - 0x880C0107, // 0014 GETMBR R3 R0 K7 - 0x8C0C0703, // 0015 GETMET R3 R3 K3 - 0x88140304, // 0016 GETMBR R5 R1 K4 - 0x88180305, // 0017 GETMBR R6 R1 K5 - 0x7C0C0600, // 0018 CALL R3 3 - 0x4C100000, // 0019 LDNIL R4 - 0x20100604, // 001A NE R4 R3 R4 - 0x78120004, // 001B JMPF R4 #0021 - 0x8C100108, // 001C GETMET R4 R0 K8 - 0x5C180200, // 001D MOVE R6 R1 - 0x5C1C0600, // 001E MOVE R7 R3 - 0x7C100600, // 001F CALL R4 3 - 0x80040800, // 0020 RET 1 R4 - 0xB80E1200, // 0021 GETNGBL R3 K9 - 0x880C070A, // 0022 GETMBR R3 R3 K10 - 0x8C0C070B, // 0023 GETMET R3 R3 K11 - 0x88140304, // 0024 GETMBR R5 R1 K4 - 0x88180305, // 0025 GETMBR R6 R1 K5 - 0x7C0C0600, // 0026 CALL R3 3 - 0x1C10050C, // 0027 EQ R4 R2 K12 - 0x78120005, // 0028 JMPF R4 #002F - 0x8C10010D, // 0029 GETMET R4 R0 K13 - 0x5C180200, // 002A MOVE R6 R1 - 0x5C1C0600, // 002B MOVE R7 R3 - 0x7C100600, // 002C CALL R4 3 - 0x80040800, // 002D RET 1 R4 - 0x7002004D, // 002E JMP #007D - 0x1C100501, // 002F EQ R4 R2 K1 - 0x78120008, // 0030 JMPF R4 #003A - 0x8C10010E, // 0031 GETMET R4 R0 K14 - 0x5C180200, // 0032 MOVE R6 R1 - 0x7C100400, // 0033 CALL R4 2 - 0x8C10010F, // 0034 GETMET R4 R0 K15 - 0x5C180200, // 0035 MOVE R6 R1 - 0x5C1C0600, // 0036 MOVE R7 R3 - 0x7C100600, // 0037 CALL R4 3 - 0x80040800, // 0038 RET 1 R4 - 0x70020042, // 0039 JMP #007D - 0x1C100510, // 003A EQ R4 R2 K16 - 0x78120008, // 003B JMPF R4 #0045 - 0x8C10010E, // 003C GETMET R4 R0 K14 - 0x5C180200, // 003D MOVE R6 R1 - 0x7C100400, // 003E CALL R4 2 - 0x8C100111, // 003F GETMET R4 R0 K17 - 0x5C180200, // 0040 MOVE R6 R1 - 0x5C1C0600, // 0041 MOVE R7 R3 - 0x7C100600, // 0042 CALL R4 3 - 0x80040800, // 0043 RET 1 R4 - 0x70020037, // 0044 JMP #007D - 0x54120003, // 0045 LDINT R4 4 - 0x1C100404, // 0046 EQ R4 R2 R4 - 0x78120002, // 0047 JMPF R4 #004B - 0x50100000, // 0048 LDBOOL R4 0 0 - 0x80040800, // 0049 RET 1 R4 - 0x70020031, // 004A JMP #007D - 0x54120004, // 004B LDINT R4 5 - 0x1C100404, // 004C EQ R4 R2 R4 - 0x78120002, // 004D JMPF R4 #0051 - 0x50100000, // 004E LDBOOL R4 0 0 - 0x80040800, // 004F RET 1 R4 - 0x7002002B, // 0050 JMP #007D - 0x54120005, // 0051 LDINT R4 6 - 0x1C100404, // 0052 EQ R4 R2 R4 - 0x78120008, // 0053 JMPF R4 #005D - 0x8C10010E, // 0054 GETMET R4 R0 K14 - 0x5C180200, // 0055 MOVE R6 R1 - 0x7C100400, // 0056 CALL R4 2 - 0x8C100112, // 0057 GETMET R4 R0 K18 - 0x5C180200, // 0058 MOVE R6 R1 - 0x5C1C0600, // 0059 MOVE R7 R3 - 0x7C100600, // 005A CALL R4 3 - 0x80040800, // 005B RET 1 R4 - 0x7002001F, // 005C JMP #007D - 0x54120006, // 005D LDINT R4 7 - 0x1C100404, // 005E EQ R4 R2 R4 - 0x78120005, // 005F JMPF R4 #0066 - 0x8C100113, // 0060 GETMET R4 R0 K19 - 0x5C180200, // 0061 MOVE R6 R1 - 0x5C1C0600, // 0062 MOVE R7 R3 - 0x7C100600, // 0063 CALL R4 3 - 0x80040800, // 0064 RET 1 R4 - 0x70020016, // 0065 JMP #007D - 0x54120007, // 0066 LDINT R4 8 - 0x1C100404, // 0067 EQ R4 R2 R4 - 0x78120005, // 0068 JMPF R4 #006F - 0x8C100114, // 0069 GETMET R4 R0 K20 - 0x5C180200, // 006A MOVE R6 R1 - 0x5C1C0600, // 006B MOVE R7 R3 - 0x7C100600, // 006C CALL R4 3 - 0x80040800, // 006D RET 1 R4 - 0x7002000D, // 006E JMP #007D - 0x54120008, // 006F LDINT R4 9 - 0x1C100404, // 0070 EQ R4 R2 R4 - 0x78120002, // 0071 JMPF R4 #0075 - 0x50100000, // 0072 LDBOOL R4 0 0 - 0x80040800, // 0073 RET 1 R4 - 0x70020007, // 0074 JMP #007D - 0x54120009, // 0075 LDINT R4 10 - 0x1C100404, // 0076 EQ R4 R2 R4 - 0x78120004, // 0077 JMPF R4 #007D - 0x8C100115, // 0078 GETMET R4 R0 K21 - 0x5C180200, // 0079 MOVE R6 R1 - 0x5C1C0600, // 007A MOVE R7 R3 - 0x7C100600, // 007B CALL R4 3 - 0x80040800, // 007C RET 1 R4 - 0x50100000, // 007D LDBOOL R4 0 0 - 0x80040800, // 007E RET 1 R4 + ( &(const binstruction[11]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80000400, // 0003 RET 0 + 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x88080501, // 0005 GETMBR R2 R2 K1 + 0x8C080502, // 0006 GETMET R2 R2 K2 + 0x5C100200, // 0007 MOVE R4 R1 + 0x50140000, // 0008 LDBOOL R5 0 0 + 0x7C080600, // 0009 CALL R2 3 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expire_sendqueue +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(time_reached), + /* K4 */ be_nested_str_weak(expiration), + /* K5 */ be_nested_str_weak(reached_timeout), + /* K6 */ be_nested_str_weak(remove), + /* K7 */ be_const_int(1), + }), + be_str_weak(expire_sendqueue), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A000F, // 0005 JMPF R2 #0016 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x8C0C0703, // 0009 GETMET R3 R3 K3 + 0x88140504, // 000A GETMBR R5 R2 K4 + 0x7C0C0400, // 000B CALL R3 2 + 0x780E0006, // 000C JMPF R3 #0014 + 0x8C0C0505, // 000D GETMET R3 R2 K5 + 0x7C0C0200, // 000E CALL R3 1 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C0706, // 0010 GETMET R3 R3 K6 + 0x5C140200, // 0011 MOVE R5 R1 + 0x7C0C0400, // 0012 CALL R3 2 + 0x70020000, // 0013 JMP #0015 + 0x00040307, // 0014 ADD R1 R1 K7 + 0x7001FFEA, // 0015 JMP #0001 + 0x4C080000, // 0016 LDNIL R2 + 0x80040400, // 0017 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_incoming_ack +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K1 */ be_nested_str_weak(exchange_id), + /* K2 */ be_nested_str_weak(ack_received), + /* K3 */ be_nested_str_weak(finished), + /* K4 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + }), + be_str_weak(process_incoming_ack), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x780A0008, // 0003 JMPF R2 #000D + 0x8C0C0502, // 0004 GETMET R3 R2 K2 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C0C0400, // 0006 CALL R3 2 + 0x88100503, // 0007 GETMBR R4 R2 K3 + 0x78120002, // 0008 JMPF R4 #000C + 0x8C100104, // 0009 GETMET R4 R0 K4 + 0x88180301, // 000A GETMBR R6 R1 K1 + 0x7C100400, // 000B CALL R4 2 + 0x80040600, // 000C RET 1 R3 + 0x500C0000, // 000D LDBOOL R3 0 0 + 0x80040600, // 000E RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_sendqueue_by_exchangeid +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_nested_str_weak(remove), + /* K4 */ be_const_int(1), + }), + be_str_weak(remove_sendqueue_by_exchangeid), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80000400, // 0003 RET 0 + 0x58080000, // 0004 LDCONST R2 K0 + 0x600C000C, // 0005 GETGBL R3 G12 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000C, // 0009 JMPF R3 #0017 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x1C0C0601, // 000E EQ R3 R3 R1 + 0x780E0004, // 000F JMPF R3 #0015 + 0x880C0101, // 0010 GETMBR R3 R0 K1 + 0x8C0C0703, // 0011 GETMET R3 R3 K3 + 0x5C140400, // 0012 MOVE R5 R2 + 0x7C0C0400, // 0013 CALL R3 2 + 0x70020000, // 0014 JMP #0016 + 0x00080504, // 0015 ADD R2 R2 K4 + 0x7001FFED, // 0016 JMP #0005 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write_single_attribute_status_to_bytes +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* name */ + be_nested_proto( + 16, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(get_attribute_name), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(_X20_X28), + /* K6 */ be_nested_str_weak(_X29), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_nested_str_weak(status), + /* K9 */ be_nested_str_weak(AttributeStatusIB), + /* K10 */ be_nested_str_weak(path), + /* K11 */ be_nested_str_weak(AttributePathIB), + /* K12 */ be_nested_str_weak(StatusIB), + /* K13 */ be_nested_str_weak(endpoint), + /* K14 */ be_nested_str_weak(write_responses), + /* K15 */ be_nested_str_weak(push), + /* K16 */ be_nested_str_weak(log), + /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K18 */ be_nested_str_weak(SUCCESS), + /* K19 */ be_const_int(0), + /* K20 */ be_const_int(2), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(tasmota), + /* K23 */ be_nested_str_weak(loglevel), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), + }), + be_str_weak(write_single_attribute_status_to_bytes), + &be_const_str_solidified, + ( &(const binstruction[86]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0xB8160000, // 0002 GETNGBL R5 K0 + 0x8C140B02, // 0003 GETMET R5 R5 K2 + 0x881C0503, // 0004 GETMBR R7 R2 K3 + 0x88200504, // 0005 GETMBR R8 R2 K4 + 0x7C140600, // 0006 CALL R5 3 + 0x78160002, // 0007 JMPF R5 #000B + 0x001A0A05, // 0008 ADD R6 K5 R5 + 0x00180D06, // 0009 ADD R6 R6 K6 + 0x70020000, // 000A JMP #000C + 0x58180007, // 000B LDCONST R6 K7 + 0x5C140C00, // 000C MOVE R5 R6 + 0x88180508, // 000D GETMBR R6 R2 K8 + 0x4C1C0000, // 000E LDNIL R7 + 0x20180C07, // 000F NE R6 R6 R7 + 0x781A0034, // 0010 JMPF R6 #0046 + 0xB81A0000, // 0011 GETNGBL R6 K0 + 0x8C180D09, // 0012 GETMET R6 R6 K9 + 0x7C180200, // 0013 CALL R6 1 + 0xB81E0000, // 0014 GETNGBL R7 K0 + 0x8C1C0F0B, // 0015 GETMET R7 R7 K11 + 0x7C1C0200, // 0016 CALL R7 1 + 0x901A1407, // 0017 SETMBR R6 K10 R7 + 0xB81E0000, // 0018 GETNGBL R7 K0 + 0x8C1C0F0C, // 0019 GETMET R7 R7 K12 + 0x7C1C0200, // 001A CALL R7 1 + 0x901A1007, // 001B SETMBR R6 K8 R7 + 0x881C0D0A, // 001C GETMBR R7 R6 K10 + 0x8820050D, // 001D GETMBR R8 R2 K13 + 0x901E1A08, // 001E SETMBR R7 K13 R8 + 0x881C0D0A, // 001F GETMBR R7 R6 K10 + 0x88200503, // 0020 GETMBR R8 R2 K3 + 0x901E0608, // 0021 SETMBR R7 K3 R8 + 0x881C0D0A, // 0022 GETMBR R7 R6 K10 + 0x88200504, // 0023 GETMBR R8 R2 K4 + 0x901E0808, // 0024 SETMBR R7 K4 R8 + 0x881C0D08, // 0025 GETMBR R7 R6 K8 + 0x88200508, // 0026 GETMBR R8 R2 K8 + 0x901E1008, // 0027 SETMBR R7 K8 R8 + 0x881C030E, // 0028 GETMBR R7 R1 K14 + 0x8C1C0F0F, // 0029 GETMET R7 R7 K15 + 0x5C240C00, // 002A MOVE R9 R6 + 0x7C1C0400, // 002B CALL R7 2 + 0xB81E2000, // 002C GETNGBL R7 K16 + 0x60200018, // 002D GETGBL R8 G24 + 0x58240011, // 002E LDCONST R9 K17 + 0x60280008, // 002F GETGBL R10 G8 + 0x5C2C0400, // 0030 MOVE R11 R2 + 0x7C280200, // 0031 CALL R10 1 + 0x5C2C0A00, // 0032 MOVE R11 R5 + 0x5C300600, // 0033 MOVE R12 R3 + 0x88340508, // 0034 GETMBR R13 R2 K8 + 0x88380508, // 0035 GETMBR R14 R2 K8 + 0xB83E0000, // 0036 GETNGBL R15 K0 + 0x883C1F12, // 0037 GETMBR R15 R15 K18 + 0x1C381C0F, // 0038 EQ R14 R14 R15 + 0x783A0001, // 0039 JMPF R14 #003C + 0x58380012, // 003A LDCONST R14 K18 + 0x70020000, // 003B JMP #003D + 0x58380007, // 003C LDCONST R14 K7 + 0x7C200C00, // 003D CALL R8 6 + 0x8824050D, // 003E GETMBR R9 R2 K13 + 0x20241313, // 003F NE R9 R9 K19 + 0x78260001, // 0040 JMPF R9 #0043 + 0x58240014, // 0041 LDCONST R9 K20 + 0x70020000, // 0042 JMP #0044 + 0x58240015, // 0043 LDCONST R9 K21 + 0x7C1C0400, // 0044 CALL R7 2 + 0x7002000E, // 0045 JMP #0055 + 0xB81A2C00, // 0046 GETNGBL R6 K22 + 0x8C180D17, // 0047 GETMET R6 R6 K23 + 0x58200015, // 0048 LDCONST R8 K21 + 0x7C180400, // 0049 CALL R6 2 + 0x781A0009, // 004A JMPF R6 #0055 + 0xB81A2000, // 004B GETNGBL R6 K16 + 0x601C0018, // 004C GETGBL R7 G24 + 0x58200018, // 004D LDCONST R8 K24 + 0x60240008, // 004E GETGBL R9 G8 + 0x5C280400, // 004F MOVE R10 R2 + 0x7C240200, // 0050 CALL R9 1 + 0x5C280A00, // 0051 MOVE R10 R5 + 0x7C1C0600, // 0052 CALL R7 3 + 0x58200015, // 0053 LDCONST R8 K21 + 0x7C180400, // 0054 CALL R6 2 + 0x80000000, // 0055 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(subs_shop), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(IM_Subscription_Shop), + /* K5 */ be_nested_str_weak(read_request_solo), + /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), + /* K9 */ be_nested_str_weak(tlv_solo), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(Matter_TLV_item), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0xB80A0600, // 0004 GETNGBL R2 K3 + 0x8C080504, // 0005 GETMET R2 R2 K4 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0x90020402, // 0008 SETMBR R0 K2 R2 + 0xB80A0600, // 0009 GETNGBL R2 K3 + 0x8C080506, // 000A GETMET R2 R2 K6 + 0x7C080200, // 000B CALL R2 1 + 0x90020A02, // 000C SETMBR R0 K5 R2 + 0xB80A0600, // 000D GETNGBL R2 K3 + 0x8C080508, // 000E GETMET R2 R2 K8 + 0x7C080200, // 000F CALL R2 1 + 0x90020E02, // 0010 SETMBR R0 K7 R2 + 0xB80A0600, // 0011 GETNGBL R2 K3 + 0x8808050A, // 0012 GETMBR R2 R2 K10 + 0x8C08050B, // 0013 GETMET R2 R2 K11 + 0x7C080200, // 0014 CALL R2 1 + 0x90021202, // 0015 SETMBR R0 K9 R2 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_every_second, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(expire_sendqueue), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 }) ) ); @@ -1280,253 +2206,12 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ /******************************************************************** -** Solidified function: invokeresponse2raw +** Solidified function: send_subscribe_heartbeat ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ +be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(command), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(SUCCESS), - /* K9 */ be_nested_str_weak(tag_sub), - /* K10 */ be_nested_str_weak(tlv2raw), - }), - be_str_weak(invokeresponse2raw), - &be_const_str_solidified, - ( &(const binstruction[148]) { /* code */ - 0x8C100300, // 0000 GETMET R4 R1 K0 - 0x541A0014, // 0001 LDINT R6 21 - 0x581C0001, // 0002 LDCONST R7 K1 - 0x7C100600, // 0003 CALL R4 3 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120004, // 0006 JMPF R4 #000C - 0x8C100300, // 0007 GETMET R4 R1 K0 - 0x541A3500, // 0008 LDINT R6 13569 - 0x541DFFFD, // 0009 LDINT R7 -2 - 0x7C100600, // 000A CALL R4 3 - 0x70020003, // 000B JMP #0010 - 0x8C100300, // 000C GETMET R4 R1 K0 - 0x541A34FF, // 000D LDINT R6 13568 - 0x541DFFFD, // 000E LDINT R7 -2 - 0x7C100600, // 000F CALL R4 3 - 0x8C100300, // 0010 GETMET R4 R1 K0 - 0x541A36FF, // 0011 LDINT R6 14080 - 0x541DFFFD, // 0012 LDINT R7 -2 - 0x7C100600, // 0013 CALL R4 3 - 0x88100502, // 0014 GETMBR R4 R2 K2 - 0x541600FE, // 0015 LDINT R5 255 - 0x18100805, // 0016 LE R4 R4 R5 - 0x78120008, // 0017 JMPF R4 #0021 - 0x8C100300, // 0018 GETMET R4 R1 K0 - 0x541A23FF, // 0019 LDINT R6 9216 - 0x541DFFFD, // 001A LDINT R7 -2 - 0x7C100600, // 001B CALL R4 3 - 0x8C100300, // 001C GETMET R4 R1 K0 - 0x88180502, // 001D GETMBR R6 R2 K2 - 0x581C0001, // 001E LDCONST R7 K1 - 0x7C100600, // 001F CALL R4 3 - 0x70020007, // 0020 JMP #0029 - 0x8C100300, // 0021 GETMET R4 R1 K0 - 0x541A24FF, // 0022 LDINT R6 9472 - 0x541DFFFD, // 0023 LDINT R7 -2 - 0x7C100600, // 0024 CALL R4 3 - 0x8C100300, // 0025 GETMET R4 R1 K0 - 0x88180502, // 0026 GETMBR R6 R2 K2 - 0x581C0003, // 0027 LDCONST R7 K3 - 0x7C100600, // 0028 CALL R4 3 - 0x88100504, // 0029 GETMBR R4 R2 K4 - 0x541600FE, // 002A LDINT R5 255 - 0x18100805, // 002B LE R4 R4 R5 - 0x78120008, // 002C JMPF R4 #0036 - 0x8C100300, // 002D GETMET R4 R1 K0 - 0x541A2400, // 002E LDINT R6 9217 - 0x541DFFFD, // 002F LDINT R7 -2 - 0x7C100600, // 0030 CALL R4 3 - 0x8C100300, // 0031 GETMET R4 R1 K0 - 0x88180504, // 0032 GETMBR R6 R2 K4 - 0x581C0001, // 0033 LDCONST R7 K1 - 0x7C100600, // 0034 CALL R4 3 - 0x70020014, // 0035 JMP #004B - 0x88100504, // 0036 GETMBR R4 R2 K4 - 0x5416FFFE, // 0037 LDINT R5 65535 - 0x18100805, // 0038 LE R4 R4 R5 - 0x78120008, // 0039 JMPF R4 #0043 - 0x8C100300, // 003A GETMET R4 R1 K0 - 0x541A2500, // 003B LDINT R6 9473 - 0x541DFFFD, // 003C LDINT R7 -2 - 0x7C100600, // 003D CALL R4 3 - 0x8C100300, // 003E GETMET R4 R1 K0 - 0x88180504, // 003F GETMBR R6 R2 K4 - 0x581C0003, // 0040 LDCONST R7 K3 - 0x7C100600, // 0041 CALL R4 3 - 0x70020007, // 0042 JMP #004B - 0x8C100300, // 0043 GETMET R4 R1 K0 - 0x541A2600, // 0044 LDINT R6 9729 - 0x541DFFFD, // 0045 LDINT R7 -2 - 0x7C100600, // 0046 CALL R4 3 - 0x8C100300, // 0047 GETMET R4 R1 K0 - 0x88180504, // 0048 GETMBR R6 R2 K4 - 0x541E0003, // 0049 LDINT R7 4 - 0x7C100600, // 004A CALL R4 3 - 0x88100505, // 004B GETMBR R4 R2 K5 - 0x541600FE, // 004C LDINT R5 255 - 0x18100805, // 004D LE R4 R4 R5 - 0x78120008, // 004E JMPF R4 #0058 - 0x8C100300, // 004F GETMET R4 R1 K0 - 0x541A2401, // 0050 LDINT R6 9218 - 0x541DFFFD, // 0051 LDINT R7 -2 - 0x7C100600, // 0052 CALL R4 3 - 0x8C100300, // 0053 GETMET R4 R1 K0 - 0x88180505, // 0054 GETMBR R6 R2 K5 - 0x581C0001, // 0055 LDCONST R7 K1 - 0x7C100600, // 0056 CALL R4 3 - 0x70020014, // 0057 JMP #006D - 0x88100505, // 0058 GETMBR R4 R2 K5 - 0x5416FFFE, // 0059 LDINT R5 65535 - 0x18100805, // 005A LE R4 R4 R5 - 0x78120008, // 005B JMPF R4 #0065 - 0x8C100300, // 005C GETMET R4 R1 K0 - 0x541A2501, // 005D LDINT R6 9474 - 0x541DFFFD, // 005E LDINT R7 -2 - 0x7C100600, // 005F CALL R4 3 - 0x8C100300, // 0060 GETMET R4 R1 K0 - 0x88180505, // 0061 GETMBR R6 R2 K5 - 0x581C0003, // 0062 LDCONST R7 K3 - 0x7C100600, // 0063 CALL R4 3 - 0x70020007, // 0064 JMP #006D - 0x8C100300, // 0065 GETMET R4 R1 K0 - 0x541A2601, // 0066 LDINT R6 9730 - 0x541DFFFD, // 0067 LDINT R7 -2 - 0x7C100600, // 0068 CALL R4 3 - 0x8C100300, // 0069 GETMET R4 R1 K0 - 0x88180505, // 006A GETMBR R6 R2 K5 - 0x541E0003, // 006B LDINT R7 4 - 0x7C100600, // 006C CALL R4 3 - 0x8C100300, // 006D GETMET R4 R1 K0 - 0x541A0017, // 006E LDINT R6 24 - 0x581C0001, // 006F LDCONST R7 K1 - 0x7C100600, // 0070 CALL R4 3 - 0x4C100000, // 0071 LDNIL R4 - 0x1C100604, // 0072 EQ R4 R3 R4 - 0x78120016, // 0073 JMPF R4 #008B - 0x88100506, // 0074 GETMBR R4 R2 K6 - 0x4C140000, // 0075 LDNIL R5 - 0x1C140805, // 0076 EQ R5 R4 R5 - 0x78160001, // 0077 JMPF R5 #007A - 0xB8160E00, // 0078 GETNGBL R5 K7 - 0x88100B08, // 0079 GETMBR R4 R5 K8 - 0x8C140300, // 007A GETMET R5 R1 K0 - 0x541E3500, // 007B LDINT R7 13569 - 0x5421FFFD, // 007C LDINT R8 -2 - 0x7C140600, // 007D CALL R5 3 - 0x8C140300, // 007E GETMET R5 R1 K0 - 0x541E23FF, // 007F LDINT R7 9216 - 0x5421FFFD, // 0080 LDINT R8 -2 - 0x7C140600, // 0081 CALL R5 3 - 0x8C140300, // 0082 GETMET R5 R1 K0 - 0x881C0506, // 0083 GETMBR R7 R2 K6 - 0x58200001, // 0084 LDCONST R8 K1 - 0x7C140600, // 0085 CALL R5 3 - 0x8C140300, // 0086 GETMET R5 R1 K0 - 0x541E0017, // 0087 LDINT R7 24 - 0x58200001, // 0088 LDCONST R8 K1 - 0x7C140600, // 0089 CALL R5 3 - 0x70020003, // 008A JMP #008F - 0x900E1301, // 008B SETMBR R3 K9 K1 - 0x8C10070A, // 008C GETMET R4 R3 K10 - 0x5C180200, // 008D MOVE R6 R1 - 0x7C100400, // 008E CALL R4 2 - 0x8C100300, // 008F GETMET R4 R1 K0 - 0x541A1817, // 0090 LDINT R6 6168 - 0x541DFFFD, // 0091 LDINT R7 -2 - 0x7C100600, // 0092 CALL R4 3 - 0x80000000, // 0093 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expire_sendqueue -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(time_reached), - /* K4 */ be_nested_str_weak(expiration), - /* K5 */ be_nested_str_weak(reached_timeout), - /* K6 */ be_nested_str_weak(remove), - /* K7 */ be_const_int(1), - }), - be_str_weak(expire_sendqueue), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14080202, // 0004 LT R2 R1 R2 - 0x780A000F, // 0005 JMPF R2 #0016 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x94080401, // 0007 GETIDX R2 R2 R1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0703, // 0009 GETMET R3 R3 K3 - 0x88140504, // 000A GETMBR R5 R2 K4 - 0x7C0C0400, // 000B CALL R3 2 - 0x780E0006, // 000C JMPF R3 #0014 - 0x8C0C0505, // 000D GETMET R3 R2 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x8C0C0706, // 0010 GETMET R3 R3 K6 - 0x5C140200, // 0011 MOVE R5 R1 - 0x7C0C0400, // 0012 CALL R3 2 - 0x70020000, // 0013 JMP #0015 - 0x00040307, // 0014 ADD R1 R1 K7 - 0x7001FFEA, // 0015 JMP #0001 - 0x4C080000, // 0016 LDNIL R2 - 0x80040400, // 0017 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_enqueued -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_enqueued, /* name */ - be_nested_proto( - 7, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1534,45 +2219,55 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(finished), - /* K3 */ be_nested_str_weak(ready), - /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - /* K6 */ be_nested_str_weak(resp), - /* K7 */ be_nested_str_weak(exchange_id), - /* K8 */ be_const_int(1), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(loglevel), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(log), + /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), + /* K6 */ be_nested_str_weak(local_session_id), + /* K7 */ be_nested_str_weak(subscription_id), + /* K8 */ be_nested_str_weak(is_keep_alive), + /* K9 */ be_nested_str_weak(send_queue), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(matter), + /* K12 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K13 */ be_nested_str_weak(_message_handler), + /* K14 */ be_nested_str_weak(send_enqueued), }), - be_str_weak(send_enqueued), + be_str_weak(send_subscribe_heartbeat), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0011, // 0005 JMPF R3 #0018 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x74120004, // 0009 JMPT R4 #000F - 0x88100703, // 000A GETMBR R4 R3 K3 - 0x78120002, // 000B JMPF R4 #000F - 0x8C100704, // 000C GETMET R4 R3 K4 - 0x5C180200, // 000D MOVE R6 R1 - 0x7C100400, // 000E CALL R4 2 - 0x88100702, // 000F GETMBR R4 R3 K2 - 0x78120004, // 0010 JMPF R4 #0016 - 0x8C100105, // 0011 GETMET R4 R0 K5 - 0x88180706, // 0012 GETMBR R6 R3 K6 - 0x88180D07, // 0013 GETMBR R6 R6 K7 - 0x7C100400, // 0014 CALL R4 2 - 0x70020000, // 0015 JMP #0017 - 0x00080508, // 0016 ADD R2 R2 K8 - 0x7001FFE8, // 0017 JMP #0001 - 0x80000000, // 0018 RET 0 + ( &(const binstruction[29]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C0C0400, // 0004 CALL R3 2 + 0x780E0007, // 0005 JMPF R3 #000E + 0xB80E0800, // 0006 GETNGBL R3 K4 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140005, // 0008 LDCONST R5 K5 + 0x88180506, // 0009 GETMBR R6 R2 K6 + 0x881C0307, // 000A GETMBR R7 R1 K7 + 0x7C100600, // 000B CALL R4 3 + 0x58140003, // 000C LDCONST R5 K3 + 0x7C0C0400, // 000D CALL R3 2 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x90061003, // 000F SETMBR R1 K8 R3 + 0x880C0109, // 0010 GETMBR R3 R0 K9 + 0x8C0C070A, // 0011 GETMET R3 R3 K10 + 0xB8161600, // 0012 GETNGBL R5 K11 + 0x8C140B0C, // 0013 GETMET R5 R5 K12 + 0x881C050D, // 0014 GETMBR R7 R2 K13 + 0x5C200400, // 0015 MOVE R8 R2 + 0x5C240200, // 0016 MOVE R9 R1 + 0x7C140800, // 0017 CALL R5 4 + 0x7C0C0400, // 0018 CALL R3 2 + 0x8C0C010E, // 0019 GETMET R3 R0 K14 + 0x8814050D, // 001A GETMBR R5 R2 K13 + 0x7C0C0400, // 001B CALL R3 2 + 0x80000000, // 001C RET 0 }) ) ); @@ -1580,210 +2275,50 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ /******************************************************************** -** Solidified function: process_write_request +** Solidified function: find_sendqueue_by_exchangeid ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_write_request, /* name */ +be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ be_nested_proto( - 21, /* nstack */ - 3, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[41]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(Path), - /* K4 */ be_nested_str_weak(suppress_response), - /* K5 */ be_nested_str_weak(write_requests), - /* K6 */ be_nested_str_weak(WriteResponseMessage), - /* K7 */ be_nested_str_weak(write_responses), - /* K8 */ be_nested_str_weak(PathGenerator), - /* K9 */ be_nested_str_weak(device), - /* K10 */ be_nested_str_weak(path), - /* K11 */ be_nested_str_weak(data), - /* K12 */ be_nested_str_weak(copy), - /* K13 */ be_nested_str_weak(cluster), - /* K14 */ be_nested_str_weak(attribute), - /* K15 */ be_nested_str_weak(status), - /* K16 */ be_nested_str_weak(INVALID_ACTION), - /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), - /* K18 */ be_nested_str_weak(endpoint), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(loglevel), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(get_attribute_name), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K25 */ be_nested_str_weak(_X20_X28), - /* K26 */ be_nested_str_weak(_X29), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_nested_str_weak(start), - /* K29 */ be_nested_str_weak(is_direct), - /* K30 */ be_nested_str_weak(next_attribute), - /* K31 */ be_nested_str_weak(msg), - /* K32 */ be_nested_str_weak(get_pi), - /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), - /* K34 */ be_nested_str_weak(write_attribute), - /* K35 */ be_nested_str_weak(session), - /* K36 */ be_nested_str_weak(SUCCESS), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(send_queue), - /* K39 */ be_nested_str_weak(push), - /* K40 */ be_nested_str_weak(IM_WriteResponse), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(send_queue), + /* K2 */ be_nested_str_weak(get_exchangeid), + /* K3 */ be_const_int(1), }), - be_str_weak(process_write_request), + be_str_weak(find_sendqueue_by_exchangeid), &be_const_str_solidified, - ( &(const binstruction[145]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0xB8120000, // 0006 GETNGBL R4 K0 - 0x8C100903, // 0007 GETMET R4 R4 K3 - 0x7C100200, // 0008 CALL R4 1 - 0x88140704, // 0009 GETMBR R5 R3 K4 - 0x88180705, // 000A GETMBR R6 R3 K5 - 0x4C1C0000, // 000B LDNIL R7 - 0x20180C07, // 000C NE R6 R6 R7 - 0x781A0080, // 000D JMPF R6 #008F - 0xB81A0000, // 000E GETNGBL R6 K0 - 0x8C180D06, // 000F GETMET R6 R6 K6 - 0x7C180200, // 0010 CALL R6 1 - 0x601C0012, // 0011 GETGBL R7 G18 - 0x7C1C0000, // 0012 CALL R7 0 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0xB81E0000, // 0014 GETNGBL R7 K0 - 0x8C1C0F08, // 0015 GETMET R7 R7 K8 - 0x88240109, // 0016 GETMBR R9 R0 K9 - 0x7C1C0400, // 0017 CALL R7 2 - 0x60200010, // 0018 GETGBL R8 G16 - 0x88240705, // 0019 GETMBR R9 R3 K5 - 0x7C200200, // 001A CALL R8 1 - 0xA8020065, // 001B EXBLK 0 #0082 - 0x5C241000, // 001C MOVE R9 R8 - 0x7C240000, // 001D CALL R9 0 - 0x8828130A, // 001E GETMBR R10 R9 K10 - 0x882C130B, // 001F GETMBR R11 R9 K11 - 0x8C30090C, // 0020 GETMET R12 R4 K12 - 0x5C381400, // 0021 MOVE R14 R10 - 0x7C300400, // 0022 CALL R12 2 - 0x8830150D, // 0023 GETMBR R12 R10 K13 - 0x4C340000, // 0024 LDNIL R13 - 0x1C30180D, // 0025 EQ R12 R12 R13 - 0x74320003, // 0026 JMPT R12 #002B - 0x8830150E, // 0027 GETMBR R12 R10 K14 - 0x4C340000, // 0028 LDNIL R13 - 0x1C30180D, // 0029 EQ R12 R12 R13 - 0x78320008, // 002A JMPF R12 #0034 - 0xB8320000, // 002B GETNGBL R12 K0 - 0x88301910, // 002C GETMBR R12 R12 K16 - 0x90121E0C, // 002D SETMBR R4 K15 R12 - 0x8C300111, // 002E GETMET R12 R0 K17 - 0x5C380C00, // 002F MOVE R14 R6 - 0x5C3C0800, // 0030 MOVE R15 R4 - 0x4C400000, // 0031 LDNIL R16 - 0x7C300800, // 0032 CALL R12 4 - 0x7001FFE7, // 0033 JMP #001C - 0x88301512, // 0034 GETMBR R12 R10 K18 - 0x4C340000, // 0035 LDNIL R13 - 0x1C30180D, // 0036 EQ R12 R12 R13 - 0x78320016, // 0037 JMPF R12 #004F - 0xB8322600, // 0038 GETNGBL R12 K19 - 0x8C301914, // 0039 GETMET R12 R12 K20 - 0x58380015, // 003A LDCONST R14 K21 - 0x7C300400, // 003B CALL R12 2 - 0x78320011, // 003C JMPF R12 #004F - 0xB8320000, // 003D GETNGBL R12 K0 - 0x8C301916, // 003E GETMET R12 R12 K22 - 0x8838150D, // 003F GETMBR R14 R10 K13 - 0x883C150E, // 0040 GETMBR R15 R10 K14 - 0x7C300600, // 0041 CALL R12 3 - 0xB8362E00, // 0042 GETNGBL R13 K23 - 0x60380008, // 0043 GETGBL R14 G8 - 0x5C3C0800, // 0044 MOVE R15 R4 - 0x7C380200, // 0045 CALL R14 1 - 0x003A300E, // 0046 ADD R14 K24 R14 - 0x78320002, // 0047 JMPF R12 #004B - 0x003E320C, // 0048 ADD R15 K25 R12 - 0x003C1F1A, // 0049 ADD R15 R15 K26 - 0x70020000, // 004A JMP #004C - 0x583C001B, // 004B LDCONST R15 K27 - 0x00381C0F, // 004C ADD R14 R14 R15 - 0x583C0015, // 004D LDCONST R15 K21 - 0x7C340400, // 004E CALL R13 2 - 0x8C300F1C, // 004F GETMET R12 R7 K28 - 0x88381512, // 0050 GETMBR R14 R10 K18 - 0x883C150D, // 0051 GETMBR R15 R10 K13 - 0x8840150E, // 0052 GETMBR R16 R10 K14 - 0x7C300800, // 0053 CALL R12 4 - 0x8C300F1D, // 0054 GETMET R12 R7 K29 - 0x7C300200, // 0055 CALL R12 1 - 0x4C340000, // 0056 LDNIL R13 - 0x8C380F1E, // 0057 GETMET R14 R7 K30 - 0x7C380200, // 0058 CALL R14 1 - 0x5C341C00, // 0059 MOVE R13 R14 - 0x783A0025, // 005A JMPF R14 #0081 - 0x90363E01, // 005B SETMBR R13 K31 R1 - 0x88381B0F, // 005C GETMBR R14 R13 K15 - 0x4C3C0000, // 005D LDNIL R15 - 0x20381C0F, // 005E NE R14 R14 R15 - 0x783A0007, // 005F JMPF R14 #0068 - 0x4C380000, // 0060 LDNIL R14 - 0x90361E0E, // 0061 SETMBR R13 K15 R14 - 0x8C380111, // 0062 GETMET R14 R0 K17 - 0x5C400C00, // 0063 MOVE R16 R6 - 0x5C441A00, // 0064 MOVE R17 R13 - 0x5C481600, // 0065 MOVE R18 R11 - 0x7C380800, // 0066 CALL R14 4 - 0x70020017, // 0067 JMP #0080 - 0x8C380F20, // 0068 GETMET R14 R7 K32 - 0x7C380200, // 0069 CALL R14 1 - 0xB83E0000, // 006A GETNGBL R15 K0 - 0x883C1F21, // 006B GETMBR R15 R15 K33 - 0x90361E0F, // 006C SETMBR R13 K15 R15 - 0x4C3C0000, // 006D LDNIL R15 - 0x203C1C0F, // 006E NE R15 R14 R15 - 0x783E0005, // 006F JMPF R15 #0076 - 0x8C3C1D22, // 0070 GETMET R15 R14 K34 - 0x88440323, // 0071 GETMBR R17 R1 K35 - 0x5C481A00, // 0072 MOVE R18 R13 - 0x5C4C1600, // 0073 MOVE R19 R11 - 0x7C3C0800, // 0074 CALL R15 4 - 0x70020000, // 0075 JMP #0077 - 0x4C3C0000, // 0076 LDNIL R15 - 0x783E0002, // 0077 JMPF R15 #007B - 0xB8420000, // 0078 GETNGBL R16 K0 - 0x88402124, // 0079 GETMBR R16 R16 K36 - 0x90361E10, // 007A SETMBR R13 K15 R16 - 0x8C400111, // 007B GETMET R16 R0 K17 - 0x5C480C00, // 007C MOVE R18 R6 - 0x5C4C1A00, // 007D MOVE R19 R13 - 0x5C501600, // 007E MOVE R20 R11 - 0x7C400800, // 007F CALL R16 4 - 0x7001FFD5, // 0080 JMP #0057 - 0x7001FF99, // 0081 JMP #001C - 0x58200025, // 0082 LDCONST R8 K37 - 0xAC200200, // 0083 CATCH R8 1 0 - 0xB0080000, // 0084 RAISE 2 R0 R0 - 0x5C200A00, // 0085 MOVE R8 R5 - 0x74220007, // 0086 JMPT R8 #008F - 0x88200126, // 0087 GETMBR R8 R0 K38 - 0x8C201127, // 0088 GETMET R8 R8 K39 - 0xB82A0000, // 0089 GETNGBL R10 K0 - 0x8C281528, // 008A GETMET R10 R10 K40 - 0x5C300200, // 008B MOVE R12 R1 - 0x5C340C00, // 008C MOVE R13 R6 - 0x7C280600, // 008D CALL R10 3 - 0x7C200400, // 008E CALL R8 2 - 0x50180200, // 008F LDBOOL R6 1 0 - 0x80040C00, // 0090 RET 1 R6 + ( &(const binstruction[22]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x4C080000, // 0003 LDNIL R2 + 0x80040400, // 0004 RET 1 R2 + 0x58080000, // 0005 LDCONST R2 K0 + 0x600C000C, // 0006 GETGBL R3 G12 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x140C0403, // 0009 LT R3 R2 R3 + 0x780E0008, // 000A JMPF R3 #0014 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x940C0602, // 000C GETIDX R3 R3 R2 + 0x8C100702, // 000D GETMET R4 R3 K2 + 0x7C100200, // 000E CALL R4 1 + 0x1C100801, // 000F EQ R4 R4 R1 + 0x78120000, // 0010 JMPF R4 #0012 + 0x80040600, // 0011 RET 1 R3 + 0x00080503, // 0012 ADD R2 R2 K3 + 0x7001FFF1, // 0013 JMP #0006 + 0x4C0C0000, // 0014 LDNIL R3 + 0x80040600, // 0015 RET 1 R3 }) ) ); @@ -2110,112 +2645,85 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /******************************************************************** -** Solidified function: send_subscribe_update +** Solidified function: parse_event_filters_min_no ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ +be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ be_nested_proto( - 13, /* nstack */ + 14, /* nstack */ 2, /* argc */ - 2, /* varg */ + 4, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReadRequestMessage), - /* K3 */ be_nested_str_weak(fabric_filtered), - /* K4 */ be_nested_str_weak(attributes_requests), - /* K5 */ be_nested_str_weak(updates), - /* K6 */ be_nested_str_weak(AttributePathIB), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K14 */ be_nested_str_weak(local_session_id), - /* K15 */ be_nested_str_weak(subscription_id), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(is_keep_alive), - /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K19 */ be_nested_str_weak(update_event_generator_array), - /* K20 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), - /* K21 */ be_nested_str_weak(_message_handler), - /* K22 */ be_nested_str_weak(send_queue), - /* K23 */ be_nested_str_weak(send_enqueued), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_IM), + /* K1 */ be_nested_str_weak(int64), + /* K2 */ be_nested_str_weak(toint64), + /* K3 */ be_nested_str_weak(node), + /* K4 */ be_nested_str_weak(tobytes), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), + /* K8 */ be_nested_str_weak(tohex), + /* K9 */ be_nested_str_weak(event_min), + /* K10 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(send_subscribe_update), + be_str_weak(parse_event_filters_min_no), &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x50100000, // 0004 LDBOOL R4 0 0 - 0x900E0604, // 0005 SETMBR R3 K3 R4 - 0x60100012, // 0006 GETGBL R4 G18 - 0x7C100000, // 0007 CALL R4 0 - 0x900E0804, // 0008 SETMBR R3 K4 R4 - 0x60100010, // 0009 GETGBL R4 G16 - 0x88140305, // 000A GETMBR R5 R1 K5 - 0x7C100200, // 000B CALL R4 1 - 0xA802000F, // 000C EXBLK 0 #001D - 0x5C140800, // 000D MOVE R5 R4 - 0x7C140000, // 000E CALL R5 0 - 0xB81A0200, // 000F GETNGBL R6 K1 - 0x8C180D06, // 0010 GETMET R6 R6 K6 - 0x7C180200, // 0011 CALL R6 1 - 0x881C0B07, // 0012 GETMBR R7 R5 K7 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0x881C0B08, // 0014 GETMBR R7 R5 K8 - 0x901A1007, // 0015 SETMBR R6 K8 R7 - 0x881C0B09, // 0016 GETMBR R7 R5 K9 - 0x901A1207, // 0017 SETMBR R6 K9 R7 - 0x881C0704, // 0018 GETMBR R7 R3 K4 - 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 - 0x5C240C00, // 001A MOVE R9 R6 - 0x7C1C0400, // 001B CALL R7 2 - 0x7001FFEF, // 001C JMP #000D - 0x5810000B, // 001D LDCONST R4 K11 - 0xAC100200, // 001E CATCH R4 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0xB8121800, // 0020 GETNGBL R4 K12 - 0x60140018, // 0021 GETGBL R5 G24 - 0x5818000D, // 0022 LDCONST R6 K13 - 0x881C050E, // 0023 GETMBR R7 R2 K14 - 0x8820030F, // 0024 GETMBR R8 R1 K15 - 0x7C140600, // 0025 CALL R5 3 - 0x58180010, // 0026 LDCONST R6 K16 - 0x7C100400, // 0027 CALL R4 2 - 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90062204, // 0029 SETMBR R1 K17 R4 - 0x8C100112, // 002A GETMET R4 R0 K18 - 0x5C180600, // 002B MOVE R6 R3 - 0x4C1C0000, // 002C LDNIL R7 - 0x7C100600, // 002D CALL R4 3 - 0x8C140313, // 002E GETMET R5 R1 K19 - 0x7C140200, // 002F CALL R5 1 - 0xB81A0200, // 0030 GETNGBL R6 K1 - 0x8C180D14, // 0031 GETMET R6 R6 K20 - 0x88200515, // 0032 GETMBR R8 R2 K21 - 0x5C240400, // 0033 MOVE R9 R2 - 0x5C280800, // 0034 MOVE R10 R4 - 0x5C2C0A00, // 0035 MOVE R11 R5 - 0x5C300200, // 0036 MOVE R12 R1 - 0x7C180C00, // 0037 CALL R6 6 - 0x881C0116, // 0038 GETMBR R7 R0 K22 - 0x8C1C0F0A, // 0039 GETMET R7 R7 K10 - 0x5C240C00, // 003A MOVE R9 R6 - 0x7C1C0400, // 003B CALL R7 2 - 0x8C1C0117, // 003C GETMET R7 R0 K23 - 0x88240515, // 003D GETMBR R9 R2 K21 - 0x7C1C0400, // 003E CALL R7 2 - 0x80000000, // 003F RET 0 + ( &(const binstruction[50]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x4C100000, // 0002 LDNIL R4 + 0x20100004, // 0003 NE R4 R0 R4 + 0x7812002B, // 0004 JMPF R4 #0031 + 0x60100010, // 0005 GETGBL R4 G16 + 0x5C140000, // 0006 MOVE R5 R0 + 0x7C100200, // 0007 CALL R4 1 + 0xA8020024, // 0008 EXBLK 0 #002E + 0x5C140800, // 0009 MOVE R5 R4 + 0x7C140000, // 000A CALL R5 0 + 0xB81A0200, // 000B GETNGBL R6 K1 + 0x8C180D02, // 000C GETMET R6 R6 K2 + 0x88200B03, // 000D GETMBR R8 R5 K3 + 0x7C180400, // 000E CALL R6 2 + 0x781A0012, // 000F JMPF R6 #0023 + 0x78060011, // 0010 JMPF R1 #0023 + 0x881C0B03, // 0011 GETMBR R7 R5 K3 + 0x8C1C0F04, // 0012 GETMET R7 R7 K4 + 0x7C1C0200, // 0013 CALL R7 1 + 0x201C0E01, // 0014 NE R7 R7 R1 + 0x781E000C, // 0015 JMPF R7 #0023 + 0xB81E0A00, // 0016 GETNGBL R7 K5 + 0x8C1C0F06, // 0017 GETMET R7 R7 K6 + 0x60240018, // 0018 GETGBL R9 G24 + 0x58280007, // 0019 LDCONST R10 K7 + 0x8C2C0D04, // 001A GETMET R11 R6 K4 + 0x7C2C0200, // 001B CALL R11 1 + 0x8C2C1708, // 001C GETMET R11 R11 K8 + 0x7C2C0200, // 001D CALL R11 1 + 0x8C300308, // 001E GETMET R12 R1 K8 + 0x7C300200, // 001F CALL R12 1 + 0x7C240600, // 0020 CALL R9 3 + 0x7C1C0400, // 0021 CALL R7 2 + 0x7001FFE5, // 0022 JMP #0009 + 0xB81E0200, // 0023 GETNGBL R7 K1 + 0x8C1C0F02, // 0024 GETMET R7 R7 K2 + 0x88240B09, // 0025 GETMBR R9 R5 K9 + 0x7C1C0400, // 0026 CALL R7 2 + 0x4C200000, // 0027 LDNIL R8 + 0x1C200608, // 0028 EQ R8 R3 R8 + 0x74220001, // 0029 JMPT R8 #002C + 0x14200607, // 002A LT R8 R3 R7 + 0x78220000, // 002B JMPF R8 #002D + 0x5C0C0E00, // 002C MOVE R3 R7 + 0x7001FFDA, // 002D JMP #0009 + 0x5810000A, // 002E LDCONST R4 K10 + 0xAC100200, // 002F CATCH R4 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040600, // 0031 RET 1 R3 }) ) ); @@ -2223,112 +2731,196 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ /******************************************************************** -** Solidified function: send_subscribe_heartbeat +** Solidified function: invokeresponse2raw ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ +be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_IM, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(command), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(SUCCESS), + /* K9 */ be_nested_str_weak(tag_sub), + /* K10 */ be_nested_str_weak(tlv2raw), + }), + be_str_weak(invokeresponse2raw), + &be_const_str_solidified, + ( &(const binstruction[148]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x541A0014, // 0001 LDINT R6 21 + 0x581C0001, // 0002 LDCONST R7 K1 + 0x7C100600, // 0003 CALL R4 3 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120004, // 0006 JMPF R4 #000C + 0x8C100300, // 0007 GETMET R4 R1 K0 + 0x541A3500, // 0008 LDINT R6 13569 + 0x541DFFFD, // 0009 LDINT R7 -2 + 0x7C100600, // 000A CALL R4 3 + 0x70020003, // 000B JMP #0010 + 0x8C100300, // 000C GETMET R4 R1 K0 + 0x541A34FF, // 000D LDINT R6 13568 + 0x541DFFFD, // 000E LDINT R7 -2 + 0x7C100600, // 000F CALL R4 3 + 0x8C100300, // 0010 GETMET R4 R1 K0 + 0x541A36FF, // 0011 LDINT R6 14080 + 0x541DFFFD, // 0012 LDINT R7 -2 + 0x7C100600, // 0013 CALL R4 3 + 0x88100502, // 0014 GETMBR R4 R2 K2 + 0x541600FE, // 0015 LDINT R5 255 + 0x18100805, // 0016 LE R4 R4 R5 + 0x78120008, // 0017 JMPF R4 #0021 + 0x8C100300, // 0018 GETMET R4 R1 K0 + 0x541A23FF, // 0019 LDINT R6 9216 + 0x541DFFFD, // 001A LDINT R7 -2 + 0x7C100600, // 001B CALL R4 3 + 0x8C100300, // 001C GETMET R4 R1 K0 + 0x88180502, // 001D GETMBR R6 R2 K2 + 0x581C0001, // 001E LDCONST R7 K1 + 0x7C100600, // 001F CALL R4 3 + 0x70020007, // 0020 JMP #0029 + 0x8C100300, // 0021 GETMET R4 R1 K0 + 0x541A24FF, // 0022 LDINT R6 9472 + 0x541DFFFD, // 0023 LDINT R7 -2 + 0x7C100600, // 0024 CALL R4 3 + 0x8C100300, // 0025 GETMET R4 R1 K0 + 0x88180502, // 0026 GETMBR R6 R2 K2 + 0x581C0003, // 0027 LDCONST R7 K3 + 0x7C100600, // 0028 CALL R4 3 + 0x88100504, // 0029 GETMBR R4 R2 K4 + 0x541600FE, // 002A LDINT R5 255 + 0x18100805, // 002B LE R4 R4 R5 + 0x78120008, // 002C JMPF R4 #0036 + 0x8C100300, // 002D GETMET R4 R1 K0 + 0x541A2400, // 002E LDINT R6 9217 + 0x541DFFFD, // 002F LDINT R7 -2 + 0x7C100600, // 0030 CALL R4 3 + 0x8C100300, // 0031 GETMET R4 R1 K0 + 0x88180504, // 0032 GETMBR R6 R2 K4 + 0x581C0001, // 0033 LDCONST R7 K1 + 0x7C100600, // 0034 CALL R4 3 + 0x70020014, // 0035 JMP #004B + 0x88100504, // 0036 GETMBR R4 R2 K4 + 0x5416FFFE, // 0037 LDINT R5 65535 + 0x18100805, // 0038 LE R4 R4 R5 + 0x78120008, // 0039 JMPF R4 #0043 + 0x8C100300, // 003A GETMET R4 R1 K0 + 0x541A2500, // 003B LDINT R6 9473 + 0x541DFFFD, // 003C LDINT R7 -2 + 0x7C100600, // 003D CALL R4 3 + 0x8C100300, // 003E GETMET R4 R1 K0 + 0x88180504, // 003F GETMBR R6 R2 K4 + 0x581C0003, // 0040 LDCONST R7 K3 + 0x7C100600, // 0041 CALL R4 3 + 0x70020007, // 0042 JMP #004B + 0x8C100300, // 0043 GETMET R4 R1 K0 + 0x541A2600, // 0044 LDINT R6 9729 + 0x541DFFFD, // 0045 LDINT R7 -2 + 0x7C100600, // 0046 CALL R4 3 + 0x8C100300, // 0047 GETMET R4 R1 K0 + 0x88180504, // 0048 GETMBR R6 R2 K4 + 0x541E0003, // 0049 LDINT R7 4 + 0x7C100600, // 004A CALL R4 3 + 0x88100505, // 004B GETMBR R4 R2 K5 + 0x541600FE, // 004C LDINT R5 255 + 0x18100805, // 004D LE R4 R4 R5 + 0x78120008, // 004E JMPF R4 #0058 + 0x8C100300, // 004F GETMET R4 R1 K0 + 0x541A2401, // 0050 LDINT R6 9218 + 0x541DFFFD, // 0051 LDINT R7 -2 + 0x7C100600, // 0052 CALL R4 3 + 0x8C100300, // 0053 GETMET R4 R1 K0 + 0x88180505, // 0054 GETMBR R6 R2 K5 + 0x581C0001, // 0055 LDCONST R7 K1 + 0x7C100600, // 0056 CALL R4 3 + 0x70020014, // 0057 JMP #006D + 0x88100505, // 0058 GETMBR R4 R2 K5 + 0x5416FFFE, // 0059 LDINT R5 65535 + 0x18100805, // 005A LE R4 R4 R5 + 0x78120008, // 005B JMPF R4 #0065 + 0x8C100300, // 005C GETMET R4 R1 K0 + 0x541A2501, // 005D LDINT R6 9474 + 0x541DFFFD, // 005E LDINT R7 -2 + 0x7C100600, // 005F CALL R4 3 + 0x8C100300, // 0060 GETMET R4 R1 K0 + 0x88180505, // 0061 GETMBR R6 R2 K5 + 0x581C0003, // 0062 LDCONST R7 K3 + 0x7C100600, // 0063 CALL R4 3 + 0x70020007, // 0064 JMP #006D + 0x8C100300, // 0065 GETMET R4 R1 K0 + 0x541A2601, // 0066 LDINT R6 9730 + 0x541DFFFD, // 0067 LDINT R7 -2 + 0x7C100600, // 0068 CALL R4 3 + 0x8C100300, // 0069 GETMET R4 R1 K0 + 0x88180505, // 006A GETMBR R6 R2 K5 + 0x541E0003, // 006B LDINT R7 4 + 0x7C100600, // 006C CALL R4 3 + 0x8C100300, // 006D GETMET R4 R1 K0 + 0x541A0017, // 006E LDINT R6 24 + 0x581C0001, // 006F LDCONST R7 K1 + 0x7C100600, // 0070 CALL R4 3 + 0x4C100000, // 0071 LDNIL R4 + 0x1C100604, // 0072 EQ R4 R3 R4 + 0x78120016, // 0073 JMPF R4 #008B + 0x88100506, // 0074 GETMBR R4 R2 K6 + 0x4C140000, // 0075 LDNIL R5 + 0x1C140805, // 0076 EQ R5 R4 R5 + 0x78160001, // 0077 JMPF R5 #007A + 0xB8160E00, // 0078 GETNGBL R5 K7 + 0x88100B08, // 0079 GETMBR R4 R5 K8 + 0x8C140300, // 007A GETMET R5 R1 K0 + 0x541E3500, // 007B LDINT R7 13569 + 0x5421FFFD, // 007C LDINT R8 -2 + 0x7C140600, // 007D CALL R5 3 + 0x8C140300, // 007E GETMET R5 R1 K0 + 0x541E23FF, // 007F LDINT R7 9216 + 0x5421FFFD, // 0080 LDINT R8 -2 + 0x7C140600, // 0081 CALL R5 3 + 0x8C140300, // 0082 GETMET R5 R1 K0 + 0x881C0506, // 0083 GETMBR R7 R2 K6 + 0x58200001, // 0084 LDCONST R8 K1 + 0x7C140600, // 0085 CALL R5 3 + 0x8C140300, // 0086 GETMET R5 R1 K0 + 0x541E0017, // 0087 LDINT R7 24 + 0x58200001, // 0088 LDCONST R8 K1 + 0x7C140600, // 0089 CALL R5 3 + 0x70020003, // 008A JMP #008F + 0x900E1301, // 008B SETMBR R3 K9 K1 + 0x8C10070A, // 008C GETMET R4 R3 K10 + 0x5C180200, // 008D MOVE R6 R1 + 0x7C100400, // 008E CALL R4 2 + 0x8C100300, // 008F GETMET R4 R1 K0 + 0x541A1817, // 0090 LDINT R6 6168 + 0x541DFFFD, // 0091 LDINT R7 -2 + 0x7C100600, // 0092 CALL R4 3 + 0x80000000, // 0093 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_status_response +********************************************************************/ +extern const bclass be_class_Matter_IM; +be_local_closure(class_Matter_IM_process_status_response, /* name */ be_nested_proto( 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(loglevel), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(subscription_id), - /* K8 */ be_nested_str_weak(is_keep_alive), - /* K9 */ be_nested_str_weak(send_queue), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(matter), - /* K12 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K13 */ be_nested_str_weak(_message_handler), - /* K14 */ be_nested_str_weak(send_enqueued), - }), - be_str_weak(send_subscribe_heartbeat), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0x780E0007, // 0005 JMPF R3 #000E - 0xB80E0800, // 0006 GETNGBL R3 K4 - 0x60100018, // 0007 GETGBL R4 G24 - 0x58140005, // 0008 LDCONST R5 K5 - 0x88180506, // 0009 GETMBR R6 R2 K6 - 0x881C0307, // 000A GETMBR R7 R1 K7 - 0x7C100600, // 000B CALL R4 3 - 0x58140003, // 000C LDCONST R5 K3 - 0x7C0C0400, // 000D CALL R3 2 - 0x500C0200, // 000E LDBOOL R3 1 0 - 0x90061003, // 000F SETMBR R1 K8 R3 - 0x880C0109, // 0010 GETMBR R3 R0 K9 - 0x8C0C070A, // 0011 GETMET R3 R3 K10 - 0xB8161600, // 0012 GETNGBL R5 K11 - 0x8C140B0C, // 0013 GETMET R5 R5 K12 - 0x881C050D, // 0014 GETMBR R7 R2 K13 - 0x5C200400, // 0015 MOVE R8 R2 - 0x5C240200, // 0016 MOVE R9 R1 - 0x7C140800, // 0017 CALL R5 4 - 0x7C0C0400, // 0018 CALL R3 2 - 0x8C0C010E, // 0019 GETMET R3 R0 K14 - 0x8814050D, // 001A GETMBR R5 R2 K13 - 0x7C0C0400, // 001B CALL R3 2 - 0x80000000, // 001C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_50ms -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_50ms, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(every_50ms), - }), - be_str_weak(every_50ms), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_write_response, /* name */ - be_nested_proto( - 6, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2336,22 +2928,69 @@ be_local_closure(class_Matter_IM_process_write_response, /* name */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteResponseMessage), - /* K2 */ be_nested_str_weak(from_TLV), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(findsubval), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K3 */ be_nested_str_weak(exchange_id), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(SUCCESS), + /* K6 */ be_nested_str_weak(status_ok_received), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K9 */ be_nested_str_weak(session), + /* K10 */ be_nested_str_weak(local_session_id), + /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str_weak(status_error_received), + /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), }), - be_str_weak(process_write_response), + be_str_weak(process_status_response), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 + ( &(const binstruction[43]) { /* code */ + 0x8C0C0500, // 0000 GETMET R3 R2 K0 + 0x58140001, // 0001 LDCONST R5 K1 + 0x541A00FE, // 0002 LDINT R6 255 + 0x7C0C0600, // 0003 CALL R3 3 + 0x8C100102, // 0004 GETMET R4 R0 K2 + 0x88180303, // 0005 GETMBR R6 R1 K3 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x88140B05, // 0008 GETMBR R5 R5 K5 + 0x1C140605, // 0009 EQ R5 R3 R5 + 0x7816000F, // 000A JMPF R5 #001B + 0x78120004, // 000B JMPF R4 #0011 + 0x8C140906, // 000C GETMET R5 R4 K6 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x7C140400, // 000E CALL R5 2 + 0x80040A00, // 000F RET 1 R5 + 0x70020008, // 0010 JMP #001A + 0xB8160E00, // 0011 GETNGBL R5 K7 + 0x60180018, // 0012 GETGBL R6 G24 + 0x581C0008, // 0013 LDCONST R7 K8 + 0x88200309, // 0014 GETMBR R8 R1 K9 + 0x8820110A, // 0015 GETMBR R8 R8 K10 + 0x88240303, // 0016 GETMBR R9 R1 K3 + 0x7C180600, // 0017 CALL R6 3 + 0x541E0003, // 0018 LDINT R7 4 + 0x7C140400, // 0019 CALL R5 2 + 0x7002000D, // 001A JMP #0029 + 0xB8160E00, // 001B GETNGBL R5 K7 + 0x60180018, // 001C GETGBL R6 G24 + 0x581C000B, // 001D LDCONST R7 K11 + 0x5C200600, // 001E MOVE R8 R3 + 0x7C180400, // 001F CALL R6 2 + 0x581C000C, // 0020 LDCONST R7 K12 + 0x7C140400, // 0021 CALL R5 2 + 0x78120005, // 0022 JMPF R4 #0029 + 0x8C14090D, // 0023 GETMET R5 R4 K13 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x7C140400, // 0025 CALL R5 2 + 0x8C14010E, // 0026 GETMET R5 R0 K14 + 0x881C0303, // 0027 GETMBR R7 R1 K3 + 0x7C140400, // 0028 CALL R5 2 + 0x50140000, // 0029 LDBOOL R5 0 0 + 0x80040A00, // 002A RET 1 R5 }) ) ); @@ -2359,98 +2998,77 @@ be_local_closure(class_Matter_IM_process_write_response, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: attributestatus2raw ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_init, /* name */ +be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 9, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(subs_shop), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(IM_Subscription_Shop), - /* K5 */ be_nested_str_weak(read_request_solo), - /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), - /* K9 */ be_nested_str_weak(tlv_solo), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(Matter_TLV_item), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(path2raw), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(status), + /* K5 */ be_const_int(2), }), - be_str_weak(init), + be_str_weak(attributestatus2raw), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0xB80A0600, // 0004 GETNGBL R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0xB80A0600, // 0009 GETNGBL R2 K3 - 0x8C080506, // 000A GETMET R2 R2 K6 - 0x7C080200, // 000B CALL R2 1 - 0x90020A02, // 000C SETMBR R0 K5 R2 - 0xB80A0600, // 000D GETNGBL R2 K3 - 0x8C080508, // 000E GETMET R2 R2 K8 - 0x7C080200, // 000F CALL R2 1 - 0x90020E02, // 0010 SETMBR R0 K7 R2 - 0xB80A0600, // 0011 GETNGBL R2 K3 - 0x8808050A, // 0012 GETMBR R2 R2 K10 - 0x8C08050B, // 0013 GETMET R2 R2 K11 - 0x7C080200, // 0014 CALL R2 1 - 0x90021202, // 0015 SETMBR R0 K9 R2 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: send_ack_now -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_send_ack_now, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(_message_handler), - /* K2 */ be_nested_str_weak(send_encrypted_ack), - }), - be_str_weak(send_ack_now), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80000400, // 0003 RET 0 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x88080501, // 0005 GETMBR R2 R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 - 0x5C100200, // 0007 MOVE R4 R1 - 0x50140000, // 0008 LDBOOL R5 0 0 - 0x7C080600, // 0009 CALL R2 3 - 0x80000000, // 000A RET 0 + ( &(const binstruction[47]) { /* code */ + 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x541A0014, // 0001 LDINT R6 21 + 0x581C0001, // 0002 LDCONST R7 K1 + 0x7C100600, // 0003 CALL R4 3 + 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x541A34FF, // 0005 LDINT R6 13568 + 0x541DFFFD, // 0006 LDINT R7 -2 + 0x7C100600, // 0007 CALL R4 3 + 0x8C100102, // 0008 GETMET R4 R0 K2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x5C1C0400, // 000A MOVE R7 R2 + 0x58200003, // 000B LDCONST R8 K3 + 0x7C100800, // 000C CALL R4 4 + 0x8C100300, // 000D GETMET R4 R1 K0 + 0x541A3500, // 000E LDINT R6 13569 + 0x541DFFFD, // 000F LDINT R7 -2 + 0x7C100600, // 0010 CALL R4 3 + 0x88100504, // 0011 GETMBR R4 R2 K4 + 0x541600FE, // 0012 LDINT R5 255 + 0x18100805, // 0013 LE R4 R4 R5 + 0x78120008, // 0014 JMPF R4 #001E + 0x8C100300, // 0015 GETMET R4 R1 K0 + 0x541A23FF, // 0016 LDINT R6 9216 + 0x541DFFFD, // 0017 LDINT R7 -2 + 0x7C100600, // 0018 CALL R4 3 + 0x8C100300, // 0019 GETMET R4 R1 K0 + 0x88180504, // 001A GETMBR R6 R2 K4 + 0x581C0001, // 001B LDCONST R7 K1 + 0x7C100600, // 001C CALL R4 3 + 0x70020007, // 001D JMP #0026 + 0x8C100300, // 001E GETMET R4 R1 K0 + 0x541A24FF, // 001F LDINT R6 9472 + 0x541DFFFD, // 0020 LDINT R7 -2 + 0x7C100600, // 0021 CALL R4 3 + 0x8C100300, // 0022 GETMET R4 R1 K0 + 0x88180504, // 0023 GETMBR R6 R2 K4 + 0x581C0005, // 0024 LDCONST R7 K5 + 0x7C100600, // 0025 CALL R4 3 + 0x8C100300, // 0026 GETMET R4 R1 K0 + 0x541A1817, // 0027 LDINT R6 6168 + 0x541DFFFD, // 0028 LDINT R7 -2 + 0x7C100600, // 0029 CALL R4 3 + 0x8C100300, // 002A GETMET R4 R1 K0 + 0x541A0017, // 002B LDINT R6 24 + 0x581C0001, // 002C LDCONST R7 K1 + 0x7C100600, // 002D CALL R4 3 + 0x80000000, // 002E RET 0 }) ) ); @@ -2678,273 +3296,6 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: attributedata2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_attributedata2raw, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(355795236), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(path2raw), - /* K4 */ be_nested_str_weak(tag_sub), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(tlv2raw), - }), - be_str_weak(attributedata2raw), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x581C0001, // 0001 LDCONST R7 K1 - 0x5421FFFB, // 0002 LDINT R8 -4 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x5421FFFD, // 0006 LDINT R8 -2 - 0x7C140600, // 0007 CALL R5 3 - 0x8C140103, // 0008 GETMET R5 R0 K3 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x58240002, // 000B LDCONST R9 K2 - 0x5C280800, // 000C MOVE R10 R4 - 0x7C140A00, // 000D CALL R5 5 - 0x900E0905, // 000E SETMBR R3 K4 K5 - 0x8C140706, // 000F GETMET R5 R3 K6 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x7C140400, // 0011 CALL R5 2 - 0x8C140300, // 0012 GETMET R5 R1 K0 - 0x541E1817, // 0013 LDINT R7 6168 - 0x5421FFFD, // 0014 LDINT R8 -2 - 0x7C140600, // 0015 CALL R5 3 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attributestatus2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(path2raw), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_const_int(2), - }), - be_str_weak(attributestatus2raw), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x8C100300, // 0000 GETMET R4 R1 K0 - 0x541A0014, // 0001 LDINT R6 21 - 0x581C0001, // 0002 LDCONST R7 K1 - 0x7C100600, // 0003 CALL R4 3 - 0x8C100300, // 0004 GETMET R4 R1 K0 - 0x541A34FF, // 0005 LDINT R6 13568 - 0x541DFFFD, // 0006 LDINT R7 -2 - 0x7C100600, // 0007 CALL R4 3 - 0x8C100102, // 0008 GETMET R4 R0 K2 - 0x5C180200, // 0009 MOVE R6 R1 - 0x5C1C0400, // 000A MOVE R7 R2 - 0x58200003, // 000B LDCONST R8 K3 - 0x7C100800, // 000C CALL R4 4 - 0x8C100300, // 000D GETMET R4 R1 K0 - 0x541A3500, // 000E LDINT R6 13569 - 0x541DFFFD, // 000F LDINT R7 -2 - 0x7C100600, // 0010 CALL R4 3 - 0x88100504, // 0011 GETMBR R4 R2 K4 - 0x541600FE, // 0012 LDINT R5 255 - 0x18100805, // 0013 LE R4 R4 R5 - 0x78120008, // 0014 JMPF R4 #001E - 0x8C100300, // 0015 GETMET R4 R1 K0 - 0x541A23FF, // 0016 LDINT R6 9216 - 0x541DFFFD, // 0017 LDINT R7 -2 - 0x7C100600, // 0018 CALL R4 3 - 0x8C100300, // 0019 GETMET R4 R1 K0 - 0x88180504, // 001A GETMBR R6 R2 K4 - 0x581C0001, // 001B LDCONST R7 K1 - 0x7C100600, // 001C CALL R4 3 - 0x70020007, // 001D JMP #0026 - 0x8C100300, // 001E GETMET R4 R1 K0 - 0x541A24FF, // 001F LDINT R6 9472 - 0x541DFFFD, // 0020 LDINT R7 -2 - 0x7C100600, // 0021 CALL R4 3 - 0x8C100300, // 0022 GETMET R4 R1 K0 - 0x88180504, // 0023 GETMBR R6 R2 K4 - 0x581C0005, // 0024 LDCONST R7 K5 - 0x7C100600, // 0025 CALL R4 3 - 0x8C100300, // 0026 GETMET R4 R1 K0 - 0x541A1817, // 0027 LDINT R6 6168 - 0x541DFFFD, // 0028 LDINT R7 -2 - 0x7C100600, // 0029 CALL R4 3 - 0x8C100300, // 002A GETMET R4 R1 K0 - 0x541A0017, // 002B LDINT R6 24 - 0x581C0001, // 002C LDCONST R7 K1 - 0x7C100600, // 002D CALL R4 3 - 0x80000000, // 002E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_status_response -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_status_response, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(findsubval), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K3 */ be_nested_str_weak(exchange_id), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(SUCCESS), - /* K6 */ be_nested_str_weak(status_ok_received), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(status_error_received), - /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - }), - be_str_weak(process_status_response), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x8C0C0500, // 0000 GETMET R3 R2 K0 - 0x58140001, // 0001 LDCONST R5 K1 - 0x541A00FE, // 0002 LDINT R6 255 - 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100102, // 0004 GETMET R4 R0 K2 - 0x88180303, // 0005 GETMBR R6 R1 K3 - 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x88140B05, // 0008 GETMBR R5 R5 K5 - 0x1C140605, // 0009 EQ R5 R3 R5 - 0x7816000F, // 000A JMPF R5 #001B - 0x78120004, // 000B JMPF R4 #0011 - 0x8C140906, // 000C GETMET R5 R4 K6 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x7C140400, // 000E CALL R5 2 - 0x80040A00, // 000F RET 1 R5 - 0x70020008, // 0010 JMP #001A - 0xB8160E00, // 0011 GETNGBL R5 K7 - 0x60180018, // 0012 GETGBL R6 G24 - 0x581C0008, // 0013 LDCONST R7 K8 - 0x88200309, // 0014 GETMBR R8 R1 K9 - 0x8820110A, // 0015 GETMBR R8 R8 K10 - 0x88240303, // 0016 GETMBR R9 R1 K3 - 0x7C180600, // 0017 CALL R6 3 - 0x541E0003, // 0018 LDINT R7 4 - 0x7C140400, // 0019 CALL R5 2 - 0x7002000D, // 001A JMP #0029 - 0xB8160E00, // 001B GETNGBL R5 K7 - 0x60180018, // 001C GETGBL R6 G24 - 0x581C000B, // 001D LDCONST R7 K11 - 0x5C200600, // 001E MOVE R8 R3 - 0x7C180400, // 001F CALL R6 2 - 0x581C000C, // 0020 LDCONST R7 K12 - 0x7C140400, // 0021 CALL R5 2 - 0x78120005, // 0022 JMPF R4 #0029 - 0x8C14090D, // 0023 GETMET R5 R4 K13 - 0x5C1C0200, // 0024 MOVE R7 R1 - 0x7C140400, // 0025 CALL R5 2 - 0x8C14010E, // 0026 GETMET R5 R0 K14 - 0x881C0303, // 0027 GETMBR R7 R1 K3 - 0x7C140400, // 0028 CALL R5 2 - 0x50140000, // 0029 LDBOOL R5 0 0 - 0x80040A00, // 002A RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_sendqueue_by_exchangeid -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_sendqueue_by_exchangeid), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x58080000, // 0005 LDCONST R2 K0 - 0x600C000C, // 0006 GETGBL R3 G12 - 0x88100101, // 0007 GETMBR R4 R0 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x140C0403, // 0009 LT R3 R2 R3 - 0x780E0008, // 000A JMPF R3 #0014 - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x8C100702, // 000D GETMET R4 R3 K2 - 0x7C100200, // 000E CALL R4 1 - 0x1C100801, // 000F EQ R4 R4 R1 - 0x78120000, // 0010 JMPF R4 #0012 - 0x80040600, // 0011 RET 1 R3 - 0x00080503, // 0012 ADD R2 R2 K3 - 0x7001FFF1, // 0013 JMP #0006 - 0x4C0C0000, // 0014 LDNIL R3 - 0x80040600, // 0015 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: send_status ********************************************************************/ @@ -2984,560 +3335,169 @@ be_local_closure(class_Matter_IM_send_status, /* name */ /******************************************************************** -** Solidified function: process_timed_request +** Solidified function: process_incoming ********************************************************************/ extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_timed_request, /* name */ +be_local_closure(class_Matter_IM_process_incoming, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 8, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_IM, 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TimedRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(timeout), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(send_status), - /* K10 */ be_nested_str_weak(SUCCESS), - }), - be_str_weak(process_timed_request), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x881C0305, // 0009 GETMBR R7 R1 K5 - 0x881C0F06, // 000A GETMBR R7 R7 K6 - 0x88200707, // 000B GETMBR R8 R3 K7 - 0x7C140600, // 000C CALL R5 3 - 0x58180008, // 000D LDCONST R6 K8 - 0x7C100400, // 000E CALL R4 2 - 0x8C100109, // 000F GETMET R4 R0 K9 - 0x5C180200, // 0010 MOVE R6 R1 - 0xB81E0000, // 0011 GETNGBL R7 K0 - 0x881C0F0A, // 0012 GETMBR R7 R7 K10 - 0x7C100600, // 0013 CALL R4 3 - 0x50100200, // 0014 LDBOOL R4 1 0 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_read_or_subscribe_request_event_pull -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, /* name */ - be_nested_proto( - 24, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(event_requests), - /* K1 */ be_nested_str_weak(get_node_id), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(parse_event_filters_min_no), - /* K5 */ be_nested_str_weak(event_filters), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(EventGenerator), - /* K8 */ be_nested_str_weak(device), - /* K9 */ be_nested_str_weak(start), - /* K10 */ be_nested_str_weak(endpoint), - /* K11 */ be_nested_str_weak(cluster), - /* K12 */ be_nested_str_weak(event), - /* K13 */ be_nested_str_weak(push), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(loglevel), + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(opcode), + /* K1 */ be_const_int(2), + /* K2 */ be_nested_str_weak(read_request_solo), + /* K3 */ be_nested_str_weak(from_raw), + /* K4 */ be_nested_str_weak(raw), + /* K5 */ be_nested_str_weak(app_payload_idx), + /* K6 */ be_nested_str_weak(process_read_request_solo), + /* K7 */ be_nested_str_weak(invoke_request_solo), + /* K8 */ be_nested_str_weak(process_invoke_request_solo), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(TLV), + /* K11 */ be_nested_str_weak(parse), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(process_status_response), + /* K14 */ be_nested_str_weak(send_ack_now), + /* K15 */ be_nested_str_weak(process_read_request_pull), /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(), - /* K18 */ be_nested_str_weak(get_event_name), - /* K19 */ be_nested_str_weak(_X28), - /* K20 */ be_nested_str_weak(_X29_X20), - /* K21 */ be_nested_str_weak(_X2502X), - /* K22 */ be_nested_str_weak(_X2A_X2A), - /* K23 */ be_nested_str_weak(_X2504X), - /* K24 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), - /* K25 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), - /* K26 */ be_nested_str_weak(log), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), - /* K28 */ be_nested_str_weak(session), - /* K29 */ be_nested_str_weak(local_session_id), - /* K30 */ be_nested_str_weak(stop_iteration), + /* K17 */ be_nested_str_weak(subscribe_request), + /* K18 */ be_nested_str_weak(process_write_request), + /* K19 */ be_nested_str_weak(process_invoke_request), + /* K20 */ be_nested_str_weak(process_timed_request), }), - be_str_weak(process_read_or_subscribe_request_event_pull), + be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[140]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x200C0604, // 0002 NE R3 R3 R4 - 0x780E0085, // 0003 JMPF R3 #008A - 0x4C0C0000, // 0004 LDNIL R3 - 0x4C100000, // 0005 LDNIL R4 - 0x20100404, // 0006 NE R4 R2 R4 - 0x78120002, // 0007 JMPF R4 #000B - 0x8C100501, // 0008 GETMET R4 R2 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x70020000, // 000A JMP #000C - 0x4C100000, // 000B LDNIL R4 - 0x88140300, // 000C GETMBR R5 R1 K0 - 0x78160003, // 000D JMPF R5 #0012 - 0x6014000C, // 000E GETGBL R5 G12 - 0x88180300, // 000F GETMBR R6 R1 K0 - 0x7C140200, // 0010 CALL R5 1 - 0x70020000, // 0011 JMP #0013 - 0x58140002, // 0012 LDCONST R5 K2 - 0x24180B03, // 0013 GT R6 R5 K3 - 0x781A0002, // 0014 JMPF R6 #0018 - 0x60180012, // 0015 GETGBL R6 G18 - 0x7C180000, // 0016 CALL R6 0 - 0x5C0C0C00, // 0017 MOVE R3 R6 - 0x8C180104, // 0018 GETMET R6 R0 K4 - 0x88200305, // 0019 GETMBR R8 R1 K5 - 0x5C240800, // 001A MOVE R9 R4 - 0x7C180600, // 001B CALL R6 3 - 0x881C0300, // 001C GETMBR R7 R1 K0 - 0x781E006A, // 001D JMPF R7 #0089 - 0x601C0010, // 001E GETGBL R7 G16 - 0x88200300, // 001F GETMBR R8 R1 K0 - 0x7C1C0200, // 0020 CALL R7 1 - 0xA8020063, // 0021 EXBLK 0 #0086 - 0x5C200E00, // 0022 MOVE R8 R7 - 0x7C200000, // 0023 CALL R8 0 - 0xB8260C00, // 0024 GETNGBL R9 K6 - 0x8C241307, // 0025 GETMET R9 R9 K7 - 0x882C0108, // 0026 GETMBR R11 R0 K8 - 0x7C240400, // 0027 CALL R9 2 - 0x8C281309, // 0028 GETMET R10 R9 K9 - 0x8830110A, // 0029 GETMBR R12 R8 K10 - 0x8834110B, // 002A GETMBR R13 R8 K11 - 0x8838110C, // 002B GETMBR R14 R8 K12 - 0x5C3C0C00, // 002C MOVE R15 R6 - 0x7C280A00, // 002D CALL R10 5 - 0x24280B03, // 002E GT R10 R5 K3 - 0x782A0003, // 002F JMPF R10 #0034 - 0x8C28070D, // 0030 GETMET R10 R3 K13 - 0x5C301200, // 0031 MOVE R12 R9 - 0x7C280400, // 0032 CALL R10 2 - 0x70020000, // 0033 JMP #0035 - 0x5C0C1200, // 0034 MOVE R3 R9 - 0xB82A1C00, // 0035 GETNGBL R10 K14 - 0x8C28150F, // 0036 GETMET R10 R10 K15 - 0x58300010, // 0037 LDCONST R12 K16 - 0x7C280400, // 0038 CALL R10 2 - 0x782A004A, // 0039 JMPF R10 #0085 - 0x58280011, // 003A LDCONST R10 K17 - 0x882C110B, // 003B GETMBR R11 R8 K11 - 0x4C300000, // 003C LDNIL R12 - 0x202C160C, // 003D NE R11 R11 R12 - 0x782E0011, // 003E JMPF R11 #0051 - 0x882C110C, // 003F GETMBR R11 R8 K12 - 0x4C300000, // 0040 LDNIL R12 - 0x202C160C, // 0041 NE R11 R11 R12 - 0x782E000D, // 0042 JMPF R11 #0051 - 0xB82E0C00, // 0043 GETNGBL R11 K6 - 0x8C2C1712, // 0044 GETMET R11 R11 K18 - 0x8834110B, // 0045 GETMBR R13 R8 K11 - 0x8838110C, // 0046 GETMBR R14 R8 K12 - 0x7C2C0600, // 0047 CALL R11 3 - 0x5C281600, // 0048 MOVE R10 R11 - 0x4C2C0000, // 0049 LDNIL R11 - 0x202C140B, // 004A NE R11 R10 R11 - 0x782E0002, // 004B JMPF R11 #004F - 0x002E260A, // 004C ADD R11 K19 R10 - 0x002C1714, // 004D ADD R11 R11 K20 - 0x70020000, // 004E JMP #0050 - 0x582C0011, // 004F LDCONST R11 K17 - 0x5C281600, // 0050 MOVE R10 R11 - 0x882C110A, // 0051 GETMBR R11 R8 K10 - 0x4C300000, // 0052 LDNIL R12 - 0x202C160C, // 0053 NE R11 R11 R12 - 0x782E0004, // 0054 JMPF R11 #005A - 0x602C0018, // 0055 GETGBL R11 G24 - 0x58300015, // 0056 LDCONST R12 K21 - 0x8834110A, // 0057 GETMBR R13 R8 K10 - 0x7C2C0400, // 0058 CALL R11 2 - 0x70020000, // 0059 JMP #005B - 0x582C0016, // 005A LDCONST R11 K22 - 0x8830110B, // 005B GETMBR R12 R8 K11 - 0x4C340000, // 005C LDNIL R13 - 0x2030180D, // 005D NE R12 R12 R13 - 0x78320004, // 005E JMPF R12 #0064 - 0x60300018, // 005F GETGBL R12 G24 - 0x58340017, // 0060 LDCONST R13 K23 - 0x8838110B, // 0061 GETMBR R14 R8 K11 - 0x7C300400, // 0062 CALL R12 2 - 0x70020000, // 0063 JMP #0065 - 0x58300018, // 0064 LDCONST R12 K24 - 0x8834110C, // 0065 GETMBR R13 R8 K12 - 0x4C380000, // 0066 LDNIL R14 - 0x20341A0E, // 0067 NE R13 R13 R14 - 0x78360004, // 0068 JMPF R13 #006E - 0x60340018, // 0069 GETGBL R13 G24 - 0x58380015, // 006A LDCONST R14 K21 - 0x883C110C, // 006B GETMBR R15 R8 K12 - 0x7C340400, // 006C CALL R13 2 - 0x70020000, // 006D JMP #006F - 0x58340016, // 006E LDCONST R13 K22 - 0x4C380000, // 006F LDNIL R14 - 0x20380C0E, // 0070 NE R14 R6 R14 - 0x783A0004, // 0071 JMPF R14 #0077 - 0x60380018, // 0072 GETGBL R14 G24 - 0x583C0019, // 0073 LDCONST R15 K25 - 0x5C400C00, // 0074 MOVE R16 R6 - 0x7C380400, // 0075 CALL R14 2 - 0x70020000, // 0076 JMP #0078 - 0x58380011, // 0077 LDCONST R14 K17 - 0xB83E3400, // 0078 GETNGBL R15 K26 - 0x60400018, // 0079 GETGBL R16 G24 - 0x5844001B, // 007A LDCONST R17 K27 - 0x8848051C, // 007B GETMBR R18 R2 K28 - 0x8848251D, // 007C GETMBR R18 R18 K29 - 0x5C4C1600, // 007D MOVE R19 R11 - 0x5C501800, // 007E MOVE R20 R12 - 0x5C541A00, // 007F MOVE R21 R13 - 0x5C581400, // 0080 MOVE R22 R10 - 0x5C5C1C00, // 0081 MOVE R23 R14 - 0x7C400E00, // 0082 CALL R16 7 - 0x58440010, // 0083 LDCONST R17 K16 - 0x7C3C0400, // 0084 CALL R15 2 - 0x7001FF9B, // 0085 JMP #0022 - 0x581C001E, // 0086 LDCONST R7 K30 - 0xAC1C0200, // 0087 CATCH R7 1 0 - 0xB0080000, // 0088 RAISE 2 R0 R0 - 0x80040600, // 0089 RET 1 R3 - 0x4C0C0000, // 008A LDNIL R3 - 0x80040600, // 008B RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_every_second, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expire_sendqueue), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_sendqueue_by_exchangeid -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - }), - be_str_weak(remove_sendqueue_by_exchangeid), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80000400, // 0003 RET 0 - 0x58080000, // 0004 LDCONST R2 K0 - 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0x140C0403, // 0008 LT R3 R2 R3 - 0x780E000C, // 0009 JMPF R3 #0017 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0702, // 000C GETMET R3 R3 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x1C0C0601, // 000E EQ R3 R3 R1 - 0x780E0004, // 000F JMPF R3 #0015 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x8C0C0703, // 0011 GETMET R3 R3 K3 - 0x5C140400, // 0012 MOVE R5 R2 - 0x7C0C0400, // 0013 CALL R3 2 - 0x70020000, // 0014 JMP #0016 - 0x00080504, // 0015 ADD R2 R2 K4 - 0x7001FFED, // 0016 JMP #0005 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: path2raw -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_path2raw, /* name */ - be_nested_proto( - 9, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(attribute), - }), - be_str_weak(path2raw), - &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x541E0036, // 0001 LDINT R7 55 - 0x58200001, // 0002 LDCONST R8 K1 - 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200001, // 0006 LDCONST R8 K1 - 0x7C140600, // 0007 CALL R5 3 - 0x88140502, // 0008 GETMBR R5 R2 K2 - 0x541A00FE, // 0009 LDINT R6 255 - 0x18140A06, // 000A LE R5 R5 R6 - 0x78160008, // 000B JMPF R5 #0015 - 0x8C140300, // 000C GETMET R5 R1 K0 - 0x541E2401, // 000D LDINT R7 9218 - 0x5421FFFD, // 000E LDINT R8 -2 - 0x7C140600, // 000F CALL R5 3 - 0x8C140300, // 0010 GETMET R5 R1 K0 - 0x881C0502, // 0011 GETMBR R7 R2 K2 - 0x58200001, // 0012 LDCONST R8 K1 - 0x7C140600, // 0013 CALL R5 3 - 0x70020007, // 0014 JMP #001D - 0x8C140300, // 0015 GETMET R5 R1 K0 - 0x541E2501, // 0016 LDINT R7 9474 - 0x5421FFFD, // 0017 LDINT R8 -2 - 0x7C140600, // 0018 CALL R5 3 - 0x8C140300, // 0019 GETMET R5 R1 K0 - 0x881C0502, // 001A GETMBR R7 R2 K2 - 0x58200003, // 001B LDCONST R8 K3 - 0x7C140600, // 001C CALL R5 3 - 0x88140504, // 001D GETMBR R5 R2 K4 - 0x541A00FE, // 001E LDINT R6 255 - 0x18140A06, // 001F LE R5 R5 R6 - 0x78160008, // 0020 JMPF R5 #002A - 0x8C140300, // 0021 GETMET R5 R1 K0 - 0x541E2402, // 0022 LDINT R7 9219 - 0x5421FFFD, // 0023 LDINT R8 -2 - 0x7C140600, // 0024 CALL R5 3 - 0x8C140300, // 0025 GETMET R5 R1 K0 - 0x881C0504, // 0026 GETMBR R7 R2 K4 - 0x58200001, // 0027 LDCONST R8 K1 - 0x7C140600, // 0028 CALL R5 3 - 0x70020014, // 0029 JMP #003F - 0x88140504, // 002A GETMBR R5 R2 K4 - 0x541AFFFE, // 002B LDINT R6 65535 - 0x18140A06, // 002C LE R5 R5 R6 - 0x78160008, // 002D JMPF R5 #0037 - 0x8C140300, // 002E GETMET R5 R1 K0 - 0x541E2502, // 002F LDINT R7 9475 - 0x5421FFFD, // 0030 LDINT R8 -2 - 0x7C140600, // 0031 CALL R5 3 - 0x8C140300, // 0032 GETMET R5 R1 K0 - 0x881C0504, // 0033 GETMBR R7 R2 K4 - 0x58200003, // 0034 LDCONST R8 K3 - 0x7C140600, // 0035 CALL R5 3 - 0x70020007, // 0036 JMP #003F - 0x8C140300, // 0037 GETMET R5 R1 K0 - 0x541E2602, // 0038 LDINT R7 9731 - 0x5421FFFD, // 0039 LDINT R8 -2 - 0x7C140600, // 003A CALL R5 3 - 0x8C140300, // 003B GETMET R5 R1 K0 - 0x881C0504, // 003C GETMBR R7 R2 K4 - 0x54220003, // 003D LDINT R8 4 - 0x7C140600, // 003E CALL R5 3 - 0x88140505, // 003F GETMBR R5 R2 K5 - 0x541A00FE, // 0040 LDINT R6 255 - 0x18140A06, // 0041 LE R5 R5 R6 - 0x78160008, // 0042 JMPF R5 #004C - 0x8C140300, // 0043 GETMET R5 R1 K0 - 0x541E2403, // 0044 LDINT R7 9220 - 0x5421FFFD, // 0045 LDINT R8 -2 - 0x7C140600, // 0046 CALL R5 3 - 0x8C140300, // 0047 GETMET R5 R1 K0 - 0x881C0505, // 0048 GETMBR R7 R2 K5 - 0x58200001, // 0049 LDCONST R8 K1 - 0x7C140600, // 004A CALL R5 3 - 0x70020014, // 004B JMP #0061 - 0x88140505, // 004C GETMBR R5 R2 K5 - 0x541AFFFE, // 004D LDINT R6 65535 - 0x18140A06, // 004E LE R5 R5 R6 - 0x78160008, // 004F JMPF R5 #0059 - 0x8C140300, // 0050 GETMET R5 R1 K0 - 0x541E2503, // 0051 LDINT R7 9476 - 0x5421FFFD, // 0052 LDINT R8 -2 - 0x7C140600, // 0053 CALL R5 3 - 0x8C140300, // 0054 GETMET R5 R1 K0 - 0x881C0505, // 0055 GETMBR R7 R2 K5 - 0x58200003, // 0056 LDCONST R8 K3 - 0x7C140600, // 0057 CALL R5 3 - 0x70020007, // 0058 JMP #0061 - 0x8C140300, // 0059 GETMET R5 R1 K0 - 0x541E2603, // 005A LDINT R7 9732 - 0x5421FFFD, // 005B LDINT R8 -2 - 0x7C140600, // 005C CALL R5 3 - 0x8C140300, // 005D GETMET R5 R1 K0 - 0x881C0505, // 005E GETMBR R7 R2 K5 - 0x54220003, // 005F LDINT R8 4 - 0x7C140600, // 0060 CALL R5 3 - 0x78120003, // 0061 JMPF R4 #0066 - 0x8C140300, // 0062 GETMET R5 R1 K0 - 0x541E3404, // 0063 LDINT R7 13317 - 0x5421FFFD, // 0064 LDINT R8 -2 - 0x7C140600, // 0065 CALL R5 3 - 0x8C140300, // 0066 GETMET R5 R1 K0 - 0x541E0017, // 0067 LDINT R7 24 - 0x58200001, // 0068 LDCONST R8 K1 - 0x7C140600, // 0069 CALL R5 3 - 0x80000000, // 006A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_event_filters_min_no -********************************************************************/ -extern const bclass be_class_Matter_IM; -be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_IM, - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_IM), - /* K1 */ be_nested_str_weak(int64), - /* K2 */ be_nested_str_weak(toint64), - /* K3 */ be_nested_str_weak(node), - /* K4 */ be_nested_str_weak(tobytes), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), - /* K8 */ be_nested_str_weak(tohex), - /* K9 */ be_nested_str_weak(event_min), - /* K10 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(parse_event_filters_min_no), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x4C100000, // 0002 LDNIL R4 - 0x20100004, // 0003 NE R4 R0 R4 - 0x7812002B, // 0004 JMPF R4 #0031 - 0x60100010, // 0005 GETGBL R4 G16 - 0x5C140000, // 0006 MOVE R5 R0 - 0x7C100200, // 0007 CALL R4 1 - 0xA8020024, // 0008 EXBLK 0 #002E - 0x5C140800, // 0009 MOVE R5 R4 - 0x7C140000, // 000A CALL R5 0 - 0xB81A0200, // 000B GETNGBL R6 K1 - 0x8C180D02, // 000C GETMET R6 R6 K2 - 0x88200B03, // 000D GETMBR R8 R5 K3 - 0x7C180400, // 000E CALL R6 2 - 0x781A0012, // 000F JMPF R6 #0023 - 0x78060011, // 0010 JMPF R1 #0023 - 0x881C0B03, // 0011 GETMBR R7 R5 K3 - 0x8C1C0F04, // 0012 GETMET R7 R7 K4 - 0x7C1C0200, // 0013 CALL R7 1 - 0x201C0E01, // 0014 NE R7 R7 R1 - 0x781E000C, // 0015 JMPF R7 #0023 - 0xB81E0A00, // 0016 GETNGBL R7 K5 - 0x8C1C0F06, // 0017 GETMET R7 R7 K6 - 0x60240018, // 0018 GETGBL R9 G24 - 0x58280007, // 0019 LDCONST R10 K7 - 0x8C2C0D04, // 001A GETMET R11 R6 K4 - 0x7C2C0200, // 001B CALL R11 1 - 0x8C2C1708, // 001C GETMET R11 R11 K8 - 0x7C2C0200, // 001D CALL R11 1 - 0x8C300308, // 001E GETMET R12 R1 K8 - 0x7C300200, // 001F CALL R12 1 - 0x7C240600, // 0020 CALL R9 3 - 0x7C1C0400, // 0021 CALL R7 2 - 0x7001FFE5, // 0022 JMP #0009 - 0xB81E0200, // 0023 GETNGBL R7 K1 - 0x8C1C0F02, // 0024 GETMET R7 R7 K2 - 0x88240B09, // 0025 GETMBR R9 R5 K9 - 0x7C1C0400, // 0026 CALL R7 2 - 0x4C200000, // 0027 LDNIL R8 - 0x1C200608, // 0028 EQ R8 R3 R8 - 0x74220001, // 0029 JMPT R8 #002C - 0x14200607, // 002A LT R8 R3 R7 - 0x78220000, // 002B JMPF R8 #002D - 0x5C0C0E00, // 002C MOVE R3 R7 - 0x7001FFDA, // 002D JMP #0009 - 0x5810000A, // 002E LDCONST R4 K10 - 0xAC100200, // 002F CATCH R4 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0x80040600, // 0031 RET 1 R3 + ( &(const binstruction[124]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x1C0C0501, // 0001 EQ R3 R2 K1 + 0x780E000D, // 0002 JMPF R3 #0011 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x88140304, // 0005 GETMBR R5 R1 K4 + 0x88180305, // 0006 GETMBR R6 R1 K5 + 0x7C0C0600, // 0007 CALL R3 3 + 0x4C100000, // 0008 LDNIL R4 + 0x20100604, // 0009 NE R4 R3 R4 + 0x78120004, // 000A JMPF R4 #0010 + 0x8C100106, // 000B GETMET R4 R0 K6 + 0x5C180200, // 000C MOVE R6 R1 + 0x5C1C0600, // 000D MOVE R7 R3 + 0x7C100600, // 000E CALL R4 3 + 0x80040800, // 000F RET 1 R4 + 0x7002000F, // 0010 JMP #0021 + 0x540E0007, // 0011 LDINT R3 8 + 0x1C0C0403, // 0012 EQ R3 R2 R3 + 0x780E000C, // 0013 JMPF R3 #0021 + 0x880C0107, // 0014 GETMBR R3 R0 K7 + 0x8C0C0703, // 0015 GETMET R3 R3 K3 + 0x88140304, // 0016 GETMBR R5 R1 K4 + 0x88180305, // 0017 GETMBR R6 R1 K5 + 0x7C0C0600, // 0018 CALL R3 3 + 0x4C100000, // 0019 LDNIL R4 + 0x20100604, // 001A NE R4 R3 R4 + 0x78120004, // 001B JMPF R4 #0021 + 0x8C100108, // 001C GETMET R4 R0 K8 + 0x5C180200, // 001D MOVE R6 R1 + 0x5C1C0600, // 001E MOVE R7 R3 + 0x7C100600, // 001F CALL R4 3 + 0x80040800, // 0020 RET 1 R4 + 0xB80E1200, // 0021 GETNGBL R3 K9 + 0x880C070A, // 0022 GETMBR R3 R3 K10 + 0x8C0C070B, // 0023 GETMET R3 R3 K11 + 0x88140304, // 0024 GETMBR R5 R1 K4 + 0x88180305, // 0025 GETMBR R6 R1 K5 + 0x7C0C0600, // 0026 CALL R3 3 + 0x1C10050C, // 0027 EQ R4 R2 K12 + 0x78120005, // 0028 JMPF R4 #002F + 0x8C10010D, // 0029 GETMET R4 R0 K13 + 0x5C180200, // 002A MOVE R6 R1 + 0x5C1C0600, // 002B MOVE R7 R3 + 0x7C100600, // 002C CALL R4 3 + 0x80040800, // 002D RET 1 R4 + 0x7002004A, // 002E JMP #007A + 0x1C100501, // 002F EQ R4 R2 K1 + 0x78120008, // 0030 JMPF R4 #003A + 0x8C10010E, // 0031 GETMET R4 R0 K14 + 0x5C180200, // 0032 MOVE R6 R1 + 0x7C100400, // 0033 CALL R4 2 + 0x8C10010F, // 0034 GETMET R4 R0 K15 + 0x5C180200, // 0035 MOVE R6 R1 + 0x5C1C0600, // 0036 MOVE R7 R3 + 0x7C100600, // 0037 CALL R4 3 + 0x80040800, // 0038 RET 1 R4 + 0x7002003F, // 0039 JMP #007A + 0x1C100510, // 003A EQ R4 R2 K16 + 0x78120008, // 003B JMPF R4 #0045 + 0x8C10010E, // 003C GETMET R4 R0 K14 + 0x5C180200, // 003D MOVE R6 R1 + 0x7C100400, // 003E CALL R4 2 + 0x8C100111, // 003F GETMET R4 R0 K17 + 0x5C180200, // 0040 MOVE R6 R1 + 0x5C1C0600, // 0041 MOVE R7 R3 + 0x7C100600, // 0042 CALL R4 3 + 0x80040800, // 0043 RET 1 R4 + 0x70020034, // 0044 JMP #007A + 0x54120003, // 0045 LDINT R4 4 + 0x1C100404, // 0046 EQ R4 R2 R4 + 0x78120002, // 0047 JMPF R4 #004B + 0x50100000, // 0048 LDBOOL R4 0 0 + 0x80040800, // 0049 RET 1 R4 + 0x7002002E, // 004A JMP #007A + 0x54120004, // 004B LDINT R4 5 + 0x1C100404, // 004C EQ R4 R2 R4 + 0x78120002, // 004D JMPF R4 #0051 + 0x50100000, // 004E LDBOOL R4 0 0 + 0x80040800, // 004F RET 1 R4 + 0x70020028, // 0050 JMP #007A + 0x54120005, // 0051 LDINT R4 6 + 0x1C100404, // 0052 EQ R4 R2 R4 + 0x78120008, // 0053 JMPF R4 #005D + 0x8C10010E, // 0054 GETMET R4 R0 K14 + 0x5C180200, // 0055 MOVE R6 R1 + 0x7C100400, // 0056 CALL R4 2 + 0x8C100112, // 0057 GETMET R4 R0 K18 + 0x5C180200, // 0058 MOVE R6 R1 + 0x5C1C0600, // 0059 MOVE R7 R3 + 0x7C100600, // 005A CALL R4 3 + 0x80040800, // 005B RET 1 R4 + 0x7002001C, // 005C JMP #007A + 0x54120006, // 005D LDINT R4 7 + 0x1C100404, // 005E EQ R4 R2 R4 + 0x78120002, // 005F JMPF R4 #0063 + 0x50100000, // 0060 LDBOOL R4 0 0 + 0x80040800, // 0061 RET 1 R4 + 0x70020016, // 0062 JMP #007A + 0x54120007, // 0063 LDINT R4 8 + 0x1C100404, // 0064 EQ R4 R2 R4 + 0x78120005, // 0065 JMPF R4 #006C + 0x8C100113, // 0066 GETMET R4 R0 K19 + 0x5C180200, // 0067 MOVE R6 R1 + 0x5C1C0600, // 0068 MOVE R7 R3 + 0x7C100600, // 0069 CALL R4 3 + 0x80040800, // 006A RET 1 R4 + 0x7002000D, // 006B JMP #007A + 0x54120008, // 006C LDINT R4 9 + 0x1C100404, // 006D EQ R4 R2 R4 + 0x78120002, // 006E JMPF R4 #0072 + 0x50100000, // 006F LDBOOL R4 0 0 + 0x80040800, // 0070 RET 1 R4 + 0x70020007, // 0071 JMP #007A + 0x54120009, // 0072 LDINT R4 10 + 0x1C100404, // 0073 EQ R4 R2 R4 + 0x78120004, // 0074 JMPF R4 #007A + 0x8C100114, // 0075 GETMET R4 R0 K20 + 0x5C180200, // 0076 MOVE R6 R1 + 0x5C1C0600, // 0077 MOVE R7 R3 + 0x7C100600, // 0078 CALL R4 3 + 0x80040800, // 0079 RET 1 R4 + 0x50100000, // 007A LDBOOL R4 0 0 + 0x80040800, // 007B RET 1 R4 }) ) ); @@ -3550,45 +3510,44 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ be_local_class(Matter_IM, 6, NULL, - be_nested_map(37, + be_nested_map(36, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(process_read_request_pull, 32), be_const_closure(class_Matter_IM_process_read_request_pull_closure) }, - { be_const_key_weak(process_incoming_ack, 7), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, - { be_const_key_weak(process_invoke_request, -1), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, - { be_const_key_weak(subscribe_request, -1), be_const_closure(class_Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(path2raw, 21), be_const_closure(class_Matter_IM_path2raw_closure) }, - { be_const_key_weak(subs_shop, 33), be_const_var(1) }, - { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) }, - { be_const_key_weak(invoke_request_solo, 11), be_const_var(4) }, - { be_const_key_weak(process_incoming, -1), be_const_closure(class_Matter_IM_process_incoming_closure) }, - { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, - { be_const_key_weak(invokeresponse2raw, 34), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, - { be_const_key_weak(tlv_solo, -1), be_const_var(5) }, - { be_const_key_weak(send_queue, -1), be_const_var(2) }, - { be_const_key_weak(remove_sendqueue_by_exchangeid, 15), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, - { be_const_key_weak(process_write_request, 26), be_const_closure(class_Matter_IM_process_write_request_closure) }, - { be_const_key_weak(read_single_attribute_to_bytes, -1), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) }, + { be_const_key_weak(process_write_request, 7), be_const_closure(class_Matter_IM_process_write_request_closure) }, + { be_const_key_weak(process_incoming, 33), be_const_closure(class_Matter_IM_process_incoming_closure) }, + { be_const_key_weak(path2raw, 26), be_const_closure(class_Matter_IM_path2raw_closure) }, + { be_const_key_weak(attributedata2raw, 12), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, { be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) }, - { be_const_key_weak(device, -1), be_const_var(0) }, - { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, - { be_const_key_weak(every_50ms, 28), be_const_closure(class_Matter_IM_every_50ms_closure) }, - { be_const_key_weak(process_write_response, 27), be_const_closure(class_Matter_IM_process_write_response_closure) }, - { be_const_key_weak(process_read_or_subscribe_request_event_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull_closure) }, - { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, - { be_const_key_weak(process_read_request_solo, 13), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, - { be_const_key_weak(attributedata2raw, 4), be_const_closure(class_Matter_IM_attributedata2raw_closure) }, - { be_const_key_weak(write_single_attribute_status_to_bytes, 30), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) }, - { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, - { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, - { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(process_read_request_pull, -1), be_const_closure(class_Matter_IM_process_read_request_pull_closure) }, + { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) }, { be_const_key_weak(process_timed_request, -1), be_const_closure(class_Matter_IM_process_timed_request_closure) }, - { be_const_key_weak(attributestatus2raw, 35), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) }, - { be_const_key_weak(init, 3), be_const_closure(class_Matter_IM_init_closure) }, - { be_const_key_weak(send_enqueued, -1), be_const_closure(class_Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_IM_every_50ms_closure) }, + { be_const_key_weak(process_invoke_request, 24), be_const_closure(class_Matter_IM_process_invoke_request_closure) }, + { be_const_key_weak(read_single_attribute_to_bytes, -1), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) }, + { be_const_key_weak(process_read_or_subscribe_request_event_pull, 10), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull_closure) }, + { be_const_key_weak(invoke_request_solo, -1), be_const_var(4) }, + { be_const_key_weak(subscribe_request, -1), be_const_closure(class_Matter_IM_subscribe_request_closure) }, + { be_const_key_weak(send_enqueued, 27), be_const_closure(class_Matter_IM_send_enqueued_closure) }, + { be_const_key_weak(device, 28), be_const_var(0) }, { be_const_key_weak(expire_sendqueue, -1), be_const_closure(class_Matter_IM_expire_sendqueue_closure) }, + { be_const_key_weak(process_incoming_ack, -1), be_const_closure(class_Matter_IM_process_incoming_ack_closure) }, + { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(write_single_attribute_status_to_bytes, -1), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) }, + { be_const_key_weak(attributestatus2raw, 22), be_const_closure(class_Matter_IM_attributestatus2raw_closure) }, + { be_const_key_weak(every_second, 20), be_const_closure(class_Matter_IM_every_second_closure) }, + { be_const_key_weak(tlv_solo, 30), be_const_var(5) }, + { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) }, + { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) }, + { be_const_key_weak(process_read_request_solo, -1), be_const_closure(class_Matter_IM_process_read_request_solo_closure) }, + { be_const_key_weak(invokeresponse2raw, -1), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) }, + { be_const_key_weak(parse_event_filters_min_no, 32), be_const_static_closure(class_Matter_IM_parse_event_filters_min_no_closure) }, + { be_const_key_weak(subs_shop, 31), be_const_var(1) }, + { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) }, + { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_init_closure) }, + { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) }, { be_const_key_weak(read_request_solo, -1), be_const_var(3) }, - { be_const_key_weak(parse_event_filters_min_no, -1), be_const_static_closure(class_Matter_IM_parse_event_filters_min_no_closure) }, + { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) }, + { be_const_key_weak(send_queue, 1), be_const_var(2) }, })), be_str_weak(Matter_IM) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h index 309220f84..57c388311 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h @@ -2626,83 +2626,6 @@ be_local_closure(class_Matter_ReadRequestMessage_from_TLV, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: to_TLV -********************************************************************/ -extern const bclass be_class_Matter_ReadRequestMessage; -be_local_closure(class_Matter_ReadRequestMessage_to_TLV, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_ReadRequestMessage, - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(to_TLV_array), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(attributes_requests), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(event_requests), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(event_filters), - /* K10 */ be_nested_str_weak(add_TLV), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(BOOL), - /* K13 */ be_nested_str_weak(fabric_filtered), - /* K14 */ be_nested_str_weak(data_version_filters), - /* K15 */ be_nested_str_weak(U1), - /* K16 */ be_nested_str_weak(InteractionModelRevision), - }), - be_str_weak(to_TLV), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0103, // 0004 GETMET R3 R0 K3 - 0x5C140400, // 0005 MOVE R5 R2 - 0x58180004, // 0006 LDCONST R6 K4 - 0x881C0105, // 0007 GETMBR R7 R0 K5 - 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0103, // 0009 GETMET R3 R0 K3 - 0x5C140400, // 000A MOVE R5 R2 - 0x58180006, // 000B LDCONST R6 K6 - 0x881C0107, // 000C GETMBR R7 R0 K7 - 0x7C0C0800, // 000D CALL R3 4 - 0x8C0C0103, // 000E GETMET R3 R0 K3 - 0x5C140400, // 000F MOVE R5 R2 - 0x58180008, // 0010 LDCONST R6 K8 - 0x881C0109, // 0011 GETMBR R7 R0 K9 - 0x7C0C0800, // 0012 CALL R3 4 - 0x8C0C050A, // 0013 GETMET R3 R2 K10 - 0x5814000B, // 0014 LDCONST R5 K11 - 0x8818030C, // 0015 GETMBR R6 R1 K12 - 0x881C010D, // 0016 GETMBR R7 R0 K13 - 0x7C0C0800, // 0017 CALL R3 4 - 0x8C0C0103, // 0018 GETMET R3 R0 K3 - 0x5C140400, // 0019 MOVE R5 R2 - 0x541A0003, // 001A LDINT R6 4 - 0x881C010E, // 001B GETMBR R7 R0 K14 - 0x7C0C0800, // 001C CALL R3 4 - 0x8C0C050A, // 001D GETMET R3 R2 K10 - 0x541600FE, // 001E LDINT R5 255 - 0x8818030F, // 001F GETMBR R6 R1 K15 - 0x881C0110, // 0020 GETMBR R7 R0 K16 - 0x7C0C0800, // 0021 CALL R3 4 - 0x80040400, // 0022 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_ReadRequestMessage ********************************************************************/ @@ -2710,15 +2633,14 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_ReadRequestMessage, 5, &be_class_Matter_IM_Message_base, - be_nested_map(7, + be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(event_filters, -1), be_const_var(2) }, - { be_const_key_weak(fabric_filtered, 3), be_const_var(3) }, - { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_ReadRequestMessage_to_TLV_closure) }, { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_ReadRequestMessage_from_TLV_closure) }, + { be_const_key_weak(event_filters, -1), be_const_var(2) }, + { be_const_key_weak(fabric_filtered, -1), be_const_var(3) }, { be_const_key_weak(data_version_filters, -1), be_const_var(4) }, + { be_const_key_weak(event_requests, 3), be_const_var(1) }, { be_const_key_weak(attributes_requests, -1), be_const_var(0) }, - { be_const_key_weak(event_requests, 0), be_const_var(1) }, })), be_str_weak(Matter_ReadRequestMessage) ); @@ -2907,79 +2829,6 @@ be_local_class(Matter_ReadRequestMessage_solo, extern const bclass be_class_Matter_ReportDataMessage; -/******************************************************************** -** Solidified function: from_TLV -********************************************************************/ -extern const bclass be_class_Matter_ReportDataMessage; -be_local_closure(class_Matter_ReportDataMessage_from_TLV, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_ReportDataMessage, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(subscription_id), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(attribute_reports), - /* K4 */ be_nested_str_weak(from_TLV_array), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(AttributeReportIB), - /* K8 */ be_nested_str_weak(event_reports), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(EventReportIB), - /* K11 */ be_nested_str_weak(more_chunked_messages), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(suppress_response), - }), - be_str_weak(from_TLV), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x8C100301, // 000A GETMET R4 R1 K1 - 0x58180005, // 000B LDCONST R6 K5 - 0x7C100400, // 000C CALL R4 2 - 0xB8160C00, // 000D GETNGBL R5 K6 - 0x88140B07, // 000E GETMBR R5 R5 K7 - 0x7C080600, // 000F CALL R2 3 - 0x90020602, // 0010 SETMBR R0 K3 R2 - 0x8C080104, // 0011 GETMET R2 R0 K4 - 0x8C100301, // 0012 GETMET R4 R1 K1 - 0x58180009, // 0013 LDCONST R6 K9 - 0x7C100400, // 0014 CALL R4 2 - 0xB8160C00, // 0015 GETNGBL R5 K6 - 0x88140B0A, // 0016 GETMBR R5 R5 K10 - 0x7C080600, // 0017 CALL R2 3 - 0x90021002, // 0018 SETMBR R0 K8 R2 - 0x8C080301, // 0019 GETMET R2 R1 K1 - 0x5810000C, // 001A LDCONST R4 K12 - 0x7C080400, // 001B CALL R2 2 - 0x90021602, // 001C SETMBR R0 K11 R2 - 0x8C080301, // 001D GETMET R2 R1 K1 - 0x54120003, // 001E LDINT R4 4 - 0x7C080400, // 001F CALL R2 2 - 0x90021A02, // 0020 SETMBR R0 K13 R2 - 0x80040000, // 0021 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ @@ -3065,15 +2914,14 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_ReportDataMessage, 5, &be_class_Matter_IM_Message_base, - be_nested_map(7, + be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(attribute_reports, -1), be_const_var(1) }, - { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_ReportDataMessage_from_TLV_closure) }, + { be_const_key_weak(suppress_response, -1), be_const_var(4) }, + { be_const_key_weak(event_reports, 3), be_const_var(2) }, + { be_const_key_weak(subscription_id, -1), be_const_var(0) }, { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_ReportDataMessage_to_TLV_closure) }, { be_const_key_weak(more_chunked_messages, -1), be_const_var(3) }, - { be_const_key_weak(event_reports, -1), be_const_var(2) }, - { be_const_key_weak(suppress_response, -1), be_const_var(4) }, - { be_const_key_weak(subscription_id, 5), be_const_var(0) }, + { be_const_key_weak(attribute_reports, -1), be_const_var(1) }, })), be_str_weak(Matter_ReportDataMessage) ); @@ -3182,102 +3030,6 @@ be_local_closure(class_Matter_SubscribeRequestMessage_from_TLV, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: to_TLV -********************************************************************/ -extern const bclass be_class_Matter_SubscribeRequestMessage; -be_local_closure(class_Matter_SubscribeRequestMessage_to_TLV, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_SubscribeRequestMessage, - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(BOOL), - /* K6 */ be_nested_str_weak(keep_subscriptions), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(U2), - /* K9 */ be_nested_str_weak(min_interval_floor), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(max_interval_ceiling), - /* K12 */ be_nested_str_weak(to_TLV_array), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(attributes_requests), - /* K15 */ be_nested_str_weak(event_requests), - /* K16 */ be_nested_str_weak(event_filters), - /* K17 */ be_nested_str_weak(fabric_filtered), - /* K18 */ be_nested_str_weak(data_version_filters), - /* K19 */ be_nested_str_weak(U1), - /* K20 */ be_nested_str_weak(InteractionModelRevision), - }), - be_str_weak(to_TLV), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 - 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x58140007, // 000A LDCONST R5 K7 - 0x88180308, // 000B GETMBR R6 R1 K8 - 0x881C0109, // 000C GETMBR R7 R0 K9 - 0x7C0C0800, // 000D CALL R3 4 - 0x8C0C0503, // 000E GETMET R3 R2 K3 - 0x5814000A, // 000F LDCONST R5 K10 - 0x88180308, // 0010 GETMBR R6 R1 K8 - 0x881C010B, // 0011 GETMBR R7 R0 K11 - 0x7C0C0800, // 0012 CALL R3 4 - 0x8C0C010C, // 0013 GETMET R3 R0 K12 - 0x5C140400, // 0014 MOVE R5 R2 - 0x5818000D, // 0015 LDCONST R6 K13 - 0x881C010E, // 0016 GETMBR R7 R0 K14 - 0x7C0C0800, // 0017 CALL R3 4 - 0x8C0C010C, // 0018 GETMET R3 R0 K12 - 0x5C140400, // 0019 MOVE R5 R2 - 0x541A0003, // 001A LDINT R6 4 - 0x881C010F, // 001B GETMBR R7 R0 K15 - 0x7C0C0800, // 001C CALL R3 4 - 0x8C0C010C, // 001D GETMET R3 R0 K12 - 0x5C140400, // 001E MOVE R5 R2 - 0x541A0004, // 001F LDINT R6 5 - 0x881C0110, // 0020 GETMBR R7 R0 K16 - 0x7C0C0800, // 0021 CALL R3 4 - 0x8C0C0503, // 0022 GETMET R3 R2 K3 - 0x54160006, // 0023 LDINT R5 7 - 0x88180305, // 0024 GETMBR R6 R1 K5 - 0x881C0111, // 0025 GETMBR R7 R0 K17 - 0x7C0C0800, // 0026 CALL R3 4 - 0x8C0C010C, // 0027 GETMET R3 R0 K12 - 0x5C140400, // 0028 MOVE R5 R2 - 0x541A0007, // 0029 LDINT R6 8 - 0x881C0112, // 002A GETMBR R7 R0 K18 - 0x7C0C0800, // 002B CALL R3 4 - 0x8C0C0503, // 002C GETMET R3 R2 K3 - 0x541600FE, // 002D LDINT R5 255 - 0x88180313, // 002E GETMBR R6 R1 K19 - 0x881C0114, // 002F GETMBR R7 R0 K20 - 0x7C0C0800, // 0030 CALL R3 4 - 0x80040400, // 0031 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_SubscribeRequestMessage ********************************************************************/ @@ -3285,18 +3037,17 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_SubscribeRequestMessage, 8, &be_class_Matter_IM_Message_base, - be_nested_map(10, + be_nested_map(9, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_SubscribeRequestMessage_to_TLV_closure) }, - { be_const_key_weak(attributes_requests, 7), be_const_var(3) }, - { be_const_key_weak(fabric_filtered, 6), be_const_var(6) }, + { be_const_key_weak(attributes_requests, -1), be_const_var(3) }, + { be_const_key_weak(event_requests, -1), be_const_var(4) }, { be_const_key_weak(min_interval_floor, -1), be_const_var(1) }, + { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_SubscribeRequestMessage_from_TLV_closure) }, + { be_const_key_weak(event_filters, -1), be_const_var(5) }, + { be_const_key_weak(fabric_filtered, 0), be_const_var(6) }, + { be_const_key_weak(keep_subscriptions, 3), be_const_var(0) }, { be_const_key_weak(data_version_filters, -1), be_const_var(7) }, { be_const_key_weak(max_interval_ceiling, -1), be_const_var(2) }, - { be_const_key_weak(event_requests, 3), be_const_var(4) }, - { be_const_key_weak(event_filters, -1), be_const_var(5) }, - { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_SubscribeRequestMessage_from_TLV_closure) }, - { be_const_key_weak(keep_subscriptions, 0), be_const_var(0) }, })), be_str_weak(Matter_SubscribeRequestMessage) ); @@ -3360,50 +3111,6 @@ be_local_closure(class_Matter_SubscribeResponseMessage_to_TLV, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: from_TLV -********************************************************************/ -extern const bclass be_class_Matter_SubscribeResponseMessage; -be_local_closure(class_Matter_SubscribeResponseMessage_from_TLV, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_SubscribeResponseMessage, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(subscription_id), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(max_interval), - /* K4 */ be_const_int(2), - }), - be_str_weak(from_TLV), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x8C080301, // 0009 GETMET R2 R1 K1 - 0x58100004, // 000A LDCONST R4 K4 - 0x7C080400, // 000B CALL R2 2 - 0x90020602, // 000C SETMBR R0 K3 R2 - 0x80040000, // 000D RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_SubscribeResponseMessage ********************************************************************/ @@ -3411,89 +3118,17 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_SubscribeResponseMessage, 2, &be_class_Matter_IM_Message_base, - be_nested_map(4, + be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(subscription_id, 2), be_const_var(0) }, - { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_SubscribeResponseMessage_to_TLV_closure) }, - { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_SubscribeResponseMessage_from_TLV_closure) }, { be_const_key_weak(max_interval, -1), be_const_var(1) }, + { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_SubscribeResponseMessage_to_TLV_closure) }, + { be_const_key_weak(subscription_id, -1), be_const_var(0) }, })), be_str_weak(Matter_SubscribeResponseMessage) ); extern const bclass be_class_Matter_WriteRequestMessage; -/******************************************************************** -** Solidified function: to_TLV -********************************************************************/ -extern const bclass be_class_Matter_WriteRequestMessage; -be_local_closure(class_Matter_WriteRequestMessage_to_TLV, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_WriteRequestMessage, - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(BOOL), - /* K6 */ be_nested_str_weak(suppress_response), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(timed_request), - /* K9 */ be_nested_str_weak(to_TLV_array), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(write_requests), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(more_chunked_messages), - /* K14 */ be_nested_str_weak(U1), - /* K15 */ be_nested_str_weak(InteractionModelRevision), - }), - be_str_weak(to_TLV), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 - 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x58140007, // 000A LDCONST R5 K7 - 0x88180305, // 000B GETMBR R6 R1 K5 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x7C0C0800, // 000D CALL R3 4 - 0x8C0C0109, // 000E GETMET R3 R0 K9 - 0x5C140400, // 000F MOVE R5 R2 - 0x5818000A, // 0010 LDCONST R6 K10 - 0x881C010B, // 0011 GETMBR R7 R0 K11 - 0x7C0C0800, // 0012 CALL R3 4 - 0x8C0C0503, // 0013 GETMET R3 R2 K3 - 0x5814000C, // 0014 LDCONST R5 K12 - 0x88180305, // 0015 GETMBR R6 R1 K5 - 0x881C010D, // 0016 GETMBR R7 R0 K13 - 0x7C0C0800, // 0017 CALL R3 4 - 0x8C0C0503, // 0018 GETMET R3 R2 K3 - 0x541600FE, // 0019 LDINT R5 255 - 0x8818030E, // 001A GETMBR R6 R1 K14 - 0x881C010F, // 001B GETMBR R7 R0 K15 - 0x7C0C0800, // 001C CALL R3 4 - 0x80040400, // 001D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ @@ -3564,65 +3199,19 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_WriteRequestMessage, 4, &be_class_Matter_IM_Message_base, - be_nested_map(6, + be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(suppress_response, 5), be_const_var(0) }, - { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_WriteRequestMessage_to_TLV_closure) }, - { be_const_key_weak(timed_request, -1), be_const_var(1) }, { be_const_key_weak(write_requests, -1), be_const_var(2) }, - { be_const_key_weak(more_chunked_messages, -1), be_const_var(3) }, + { be_const_key_weak(suppress_response, 2), be_const_var(0) }, + { be_const_key_weak(timed_request, -1), be_const_var(1) }, { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_WriteRequestMessage_from_TLV_closure) }, + { be_const_key_weak(more_chunked_messages, -1), be_const_var(3) }, })), be_str_weak(Matter_WriteRequestMessage) ); extern const bclass be_class_Matter_WriteResponseMessage; -/******************************************************************** -** Solidified function: from_TLV -********************************************************************/ -extern const bclass be_class_Matter_WriteResponseMessage; -be_local_closure(class_Matter_WriteResponseMessage_from_TLV, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_WriteResponseMessage, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(write_requests), - /* K1 */ be_nested_str_weak(from_TLV_array), - /* K2 */ be_nested_str_weak(findsubval), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(AttributeStatusIB), - }), - be_str_weak(from_TLV), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x8C080101, // 0005 GETMET R2 R0 K1 - 0x8C100302, // 0006 GETMET R4 R1 K2 - 0x58180003, // 0007 LDCONST R6 K3 - 0x7C100400, // 0008 CALL R4 2 - 0xB8160800, // 0009 GETNGBL R5 K4 - 0x88140B05, // 000A GETMBR R5 R5 K5 - 0x7C080600, // 000B CALL R2 3 - 0x90020002, // 000C SETMBR R0 K0 R2 - 0x80040000, // 000D RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ @@ -3679,11 +3268,10 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_WriteResponseMessage, 1, &be_class_Matter_IM_Message_base, - be_nested_map(3, + be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(from_TLV, 2), be_const_closure(class_Matter_WriteResponseMessage_from_TLV_closure) }, { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_WriteResponseMessage_to_TLV_closure) }, - { be_const_key_weak(write_responses, -1), be_const_var(0) }, + { be_const_key_weak(write_responses, 0), be_const_var(0) }, })), be_str_weak(Matter_WriteResponseMessage) ); @@ -3728,55 +3316,6 @@ be_local_closure(class_Matter_TimedRequestMessage_from_TLV, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: to_TLV -********************************************************************/ -extern const bclass be_class_Matter_TimedRequestMessage; -be_local_closure(class_Matter_TimedRequestMessage_to_TLV, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_TimedRequestMessage, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U2), - /* K6 */ be_nested_str_weak(timeout), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(InteractionModelRevision), - }), - be_str_weak(to_TLV), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 - 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x541600FE, // 000A LDINT R5 255 - 0x88180307, // 000B GETMBR R6 R1 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x7C0C0800, // 000D CALL R3 4 - 0x80040400, // 000E RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_TimedRequestMessage ********************************************************************/ @@ -3784,11 +3323,10 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_TimedRequestMessage, 1, &be_class_Matter_IM_Message_base, - be_nested_map(3, + be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(timeout, 1), be_const_var(0) }, { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_TimedRequestMessage_from_TLV_closure) }, - { be_const_key_weak(timeout, 2), be_const_var(0) }, - { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_TimedRequestMessage_to_TLV_closure) }, })), be_str_weak(Matter_TimedRequestMessage) ); @@ -3852,70 +3390,6 @@ be_local_closure(class_Matter_InvokeRequestMessage_from_TLV, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: to_TLV -********************************************************************/ -extern const bclass be_class_Matter_InvokeRequestMessage; -be_local_closure(class_Matter_InvokeRequestMessage_to_TLV, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_InvokeRequestMessage, - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(BOOL), - /* K6 */ be_nested_str_weak(suppress_response), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(timed_request), - /* K9 */ be_nested_str_weak(to_TLV_array), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(invoke_requests), - /* K12 */ be_nested_str_weak(U1), - /* K13 */ be_nested_str_weak(InteractionModelRevision), - }), - be_str_weak(to_TLV), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 - 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x58140007, // 000A LDCONST R5 K7 - 0x88180305, // 000B GETMBR R6 R1 K5 - 0x881C0108, // 000C GETMBR R7 R0 K8 - 0x7C0C0800, // 000D CALL R3 4 - 0x8C0C0109, // 000E GETMET R3 R0 K9 - 0x5C140400, // 000F MOVE R5 R2 - 0x5818000A, // 0010 LDCONST R6 K10 - 0x881C010B, // 0011 GETMBR R7 R0 K11 - 0x7C0C0800, // 0012 CALL R3 4 - 0x8C0C0503, // 0013 GETMET R3 R2 K3 - 0x541600FE, // 0014 LDINT R5 255 - 0x8818030C, // 0015 GETMBR R6 R1 K12 - 0x881C010D, // 0016 GETMBR R7 R0 K13 - 0x7C0C0800, // 0017 CALL R3 4 - 0x80040400, // 0018 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_InvokeRequestMessage ********************************************************************/ @@ -3923,13 +3397,12 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_InvokeRequestMessage, 3, &be_class_Matter_IM_Message_base, - be_nested_map(5, + be_nested_map(4, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(invoke_requests, -1), be_const_var(2) }, - { be_const_key_weak(suppress_response, 2), be_const_var(0) }, + { be_const_key_weak(suppress_response, 1), be_const_var(0) }, + { be_const_key_weak(from_TLV, 3), be_const_closure(class_Matter_InvokeRequestMessage_from_TLV_closure) }, { be_const_key_weak(timed_request, -1), be_const_var(1) }, - { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_InvokeRequestMessage_from_TLV_closure) }, - { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_InvokeRequestMessage_to_TLV_closure) }, + { be_const_key_weak(invoke_requests, -1), be_const_var(2) }, })), be_str_weak(Matter_InvokeRequestMessage) ); @@ -4263,57 +3736,6 @@ be_local_closure(class_Matter_InvokeResponseMessage_to_TLV, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: from_TLV -********************************************************************/ -extern const bclass be_class_Matter_InvokeResponseMessage; -be_local_closure(class_Matter_InvokeResponseMessage_from_TLV, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_InvokeResponseMessage, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(suppress_response), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(invoke_responses), - /* K4 */ be_nested_str_weak(from_TLV_array), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(InvokeResponseIB), - }), - be_str_weak(from_TLV), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x8C100301, // 000A GETMET R4 R1 K1 - 0x58180005, // 000B LDCONST R6 K5 - 0x7C100400, // 000C CALL R4 2 - 0xB8160C00, // 000D GETNGBL R5 K6 - 0x88140B07, // 000E GETMBR R5 R5 K7 - 0x7C080600, // 000F CALL R2 3 - 0x90020602, // 0010 SETMBR R0 K3 R2 - 0x80040000, // 0011 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_InvokeResponseMessage ********************************************************************/ @@ -4321,12 +3743,11 @@ extern const bclass be_class_Matter_IM_Message_base; be_local_class(Matter_InvokeResponseMessage, 2, &be_class_Matter_IM_Message_base, - be_nested_map(4, + be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(suppress_response, 3), be_const_var(0) }, + { be_const_key_weak(suppress_response, -1), be_const_var(0) }, { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_InvokeResponseMessage_to_TLV_closure) }, { be_const_key_weak(invoke_responses, -1), be_const_var(1) }, - { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_InvokeResponseMessage_from_TLV_closure) }, })), be_str_weak(Matter_InvokeResponseMessage) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index da547af87..c3f414480 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -2428,7 +2428,7 @@ be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2453,32 +2453,26 @@ be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ }), be_str_weak(stop_basic_commissioning), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x78060004, // 0002 JMPF R1 #0008 - 0xB8060200, // 0003 GETNGBL R1 K1 - 0x8C040302, // 0004 GETMET R1 R1 K2 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x58100004, // 0006 LDCONST R4 K4 - 0x7C040600, // 0007 CALL R1 3 - 0x4C040000, // 0008 LDNIL R1 + ( &(const binstruction[19]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x7C080200, // 0002 CALL R2 1 + 0x780A0004, // 0003 JMPF R2 #0009 + 0xB80A0200, // 0004 GETNGBL R2 K1 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x58100003, // 0006 LDCONST R4 K3 + 0x58140004, // 0007 LDCONST R5 K4 + 0x7C080600, // 0008 CALL R2 3 0x90020A01, // 0009 SETMBR R0 K5 R1 - 0x8C040106, // 000A GETMET R1 R0 K6 - 0x7C040200, // 000B CALL R1 1 - 0x4C040000, // 000C LDNIL R1 - 0x90020E01, // 000D SETMBR R0 K7 R1 - 0x4C040000, // 000E LDNIL R1 - 0x90021001, // 000F SETMBR R0 K8 R1 - 0x4C040000, // 0010 LDNIL R1 - 0x90021201, // 0011 SETMBR R0 K9 R1 - 0x4C040000, // 0012 LDNIL R1 - 0x90021401, // 0013 SETMBR R0 K10 R1 - 0x4C040000, // 0014 LDNIL R1 - 0x90021601, // 0015 SETMBR R0 K11 R1 - 0x4C040000, // 0016 LDNIL R1 - 0x90021801, // 0017 SETMBR R0 K12 R1 - 0x80000000, // 0018 RET 0 + 0x8C080106, // 000A GETMET R2 R0 K6 + 0x7C080200, // 000B CALL R2 1 + 0x90020E01, // 000C SETMBR R0 K7 R1 + 0x90021001, // 000D SETMBR R0 K8 R1 + 0x90021201, // 000E SETMBR R0 K9 R1 + 0x90021401, // 000F SETMBR R0 K10 R1 + 0x90021601, // 0010 SETMBR R0 K11 R1 + 0x90021801, // 0011 SETMBR R0 K12 R1 + 0x80000000, // 0012 RET 0 }) ) ); From 27083e3664973f1234ede6321f5987ecd68ac88a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-David=20F=C3=B6rster?= <47479352+Grumium@users.noreply.github.com> Date: Wed, 10 Jul 2024 18:55:51 +0200 Subject: [PATCH 142/252] Bugfix: multiple SHT4x sensors at the same bus, support for SHT40-CD1B (#21755) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixes multiple SHT3X sensor type bug Important when multiple sensors are present at the same bus. Prior to this fix, multiple SHT3X sensor were detected, but not SHTC3 and SHT4X! * Update xsns_14_sht3x.ino Extends I²C address range to include SHT40-CD1B sensors with address 0x46. * Update I2CDEVICES.md * Show bus when multiple sensors at different busses * Make bus number less intrusive Only show bus number if two sensors or more are active at more than one bus. * variable renamed * cleanup * fix typo * fix another typo * Harmonization and saving code size for ESP8266 Harmonization with xsns_09_bmp driver, saving code size for ESP8266 * fix string for webserver * Display address only if more than one sensor present. --- I2CDEVICES.md | 2 +- tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino | 30 ++++++++++++------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/I2CDEVICES.md b/I2CDEVICES.md index 8e7ffea64..53167f88f 100644 --- a/I2CDEVICES.md +++ b/I2CDEVICES.md @@ -32,7 +32,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip 13 | USE_ADS1115 | xsns_12 | ADS1115 | 0x48 - 0x4B | Yes | 4-channel 16-bit A/D converter 14 | USE_INA219 | xsns_13 | INA219 | 0x40 - 0x41, 0x44 - 0x45 | | Low voltage current sensor 15 | USE_SHT3X | xsns_14 | SHT3X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor - 15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor + 15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x46 | Yes | Temperature and Humidity sensor 15 | USE_SHT3X | xsns_14 | SHTCX | 0x70 | Yes | Temperature and Humidity sensor 16 | USE_TSL2561 | xsns_16 | TSL2561 | 0x29, 0x39, 0x49 | | Light intensity sensor 17 | USE_MGS | xsns_19 | Grove | 0x04 | | Multichannel gas sensor diff --git a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino index daf1b5a1f..d2e4b72a4 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino @@ -1,7 +1,7 @@ /* xsns_14_sht3x.ino - SHT3X, SHT4X and SHTCX temperature and humidity sensor support for Tasmota - Copyright (C) 2022 Theo Arends, Stefan Tibus + Copyright (C) 2024 Theo Arends, Stefan Tibus, Jan-David Förster This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,19 +25,19 @@ * This driver supports the following sensors: * - SHT3x series: SHT30, SHT31, SHT35 (addresses: A: 0x44, B: 0x45) * - SHTC series: SHTC1, SHTC3 (address: 0x70) - * - SHT4x series: SHT40, SHT41, SHT45 (addresses: A: 0x44, B: 0x45) + * - SHT4x series: SHT40, SHT41, SHT45 (addresses: A: 0x44, B: 0x45, C: 0x46) \*********************************************************************************************/ #define XSNS_14 14 #define XI2C_15 15 // See I2CDEVICES.md #define SHT3X_TYPES 3 // SHT3X, SHTCX and SHT4X -#define SHT3X_ADDRESSES 3 // 0x44, 0x45 and 0x70 +#define SHT3X_ADDRESSES 4 // 0x44, 0x45, 0x46 and 0x70 enum SHT3X_Types { SHT3X_TYPE_SHT3X, SHT3X_TYPE_SHTCX, SHT3X_TYPE_SHT4X }; const char kSht3xTypes[] PROGMEM = "SHT3X|SHTC3|SHT4X"; -uint8_t sht3x_addresses[] = { 0x44, 0x45, 0x70 }; +uint8_t sht3x_addresses[] = { 0x44, 0x45, 0x46, 0x70 }; uint8_t sht3x_count = 0; struct SHT3XSTRUCT { @@ -121,9 +121,9 @@ void Sht3xDetect(void) { for (uint32_t bus = 0; bus < 2; bus++) { for (uint32_t k = 0; k < SHT3X_TYPES; k++) { - sht3x_sensors[sht3x_count].type = k; for (uint32_t i = 0; i < SHT3X_ADDRESSES; i++) { if (!I2cSetDevice(sht3x_addresses[i], bus)) { continue; } + sht3x_sensors[sht3x_count].type = k; sht3x_sensors[sht3x_count].address = sht3x_addresses[i]; sht3x_sensors[sht3x_count].bus = bus; if (Sht3xRead(sht3x_count, t, h)) { @@ -144,15 +144,25 @@ void Sht3xShow(bool json) { float h; char types[11]; - for (uint32_t i = 0; i < sht3x_count; i++) { - if (Sht3xRead(i, t, h)) { + for (uint32_t idx = 0; idx < sht3x_count; idx++) { + if (Sht3xRead(idx, t, h)) { t = ConvertTemp(t); h = ConvertHumidity(h); - strlcpy(types, sht3x_sensors[i].types, sizeof(types)); + strlcpy(types, sht3x_sensors[idx].types, sizeof(types)); if (sht3x_count > 1) { - snprintf_P(types, sizeof(types), PSTR("%s%c%02X"), sht3x_sensors[i].types, IndexSeparator(), sht3x_sensors[i].address); // "SHT3X-0xXX" + snprintf_P(types, sizeof(types), PSTR("%s%c%02X"), types, IndexSeparator(), sht3x_sensors[idx].address); // "SHT3X-0xXX" +#ifdef ESP32 + if (TasmotaGlobal.i2c_enabled_2) { + for (uint32_t i = 1; i < sht3x_count; i++) { + if (sht3x_sensors[0].bus != sht3x_sensors[i].bus) { + snprintf_P(types, sizeof(types), PSTR("%s%c%d"), types, IndexSeparator(), sht3x_sensors[idx].bus + 1); // "SHT3X-0xXX-X" + break; + } + } + } +#endif } - TempHumDewShow(json, ((0 == TasmotaGlobal.tele_period) && (0 == i)), types, t, h); + TempHumDewShow(json, ((0 == TasmotaGlobal.tele_period) && (0 == idx)), types, t, h); } } } From 23de275dbec01705b9b67daa61fbb3570cfbcdb4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 11 Jul 2024 20:51:53 +0200 Subject: [PATCH 143/252] Fix POWCT default calibration --- .../tasmota_xnrg_energy/xnrg_19_cse7761.ino | 83 ++++++++++--------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino index ac44de9a6..2f1493c58 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino @@ -28,7 +28,7 @@ * With zero-cross detection * {"NAME":"Sonoff Dual R3 (ZCD)","GPIO":[32,0,0,0,7552,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,7296,7328,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1} * - * {"NAME":"Sonoff POWCT","GPIO":[32,0,0,0,0,9280,0,0,0,320,0,576,0,9184,9216,0,0,224,0,9248,0,7329,7296,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} + * {"NAME":"Sonoff POWCT","GPIO":[32,0,0,0,0,9280,0,0,0,288,0,576,0,9184,9216,0,0,224,0,9248,0,7329,7296,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} * * Based on datasheet from ChipSea and analysing serial data * See https://github.com/arendst/Tasmota/discussions/10793 @@ -201,10 +201,14 @@ uint32_t Cse7761ReadFallback(uint32_t reg, uint32_t prev, uint32_t size) { /********************************************************************************************/ uint32_t Cse7761Ref(uint32_t unit) { + uint32_t coeff = 1; + if (CSE7761_MODEL_POWCT == CSE7761Data.model) { + coeff = 5; + } switch (unit) { case RmsUC: return 0x400000 * 100 / CSE7761Data.coefficient[RmsUC]; - case RmsIAC: return (0x800000 * 100 / CSE7761Data.coefficient[RmsIAC]) * 10; // Stay within 32 bits - case PowerPAC: return 0x80000000 / CSE7761Data.coefficient[PowerPAC]; + case RmsIAC: return (0x800000 * 100 / (CSE7761Data.coefficient[RmsIAC] * coeff)) * 10; // Stay within 32 bits + case PowerPAC: return 0x80000000 / (CSE7761Data.coefficient[PowerPAC] * coeff); } return 0; } @@ -255,124 +259,129 @@ bool Cse7761ChipInit(void) { Bit name Function description 15-11 NC -, the default is 1 10 ADC2ON - =1, means ADC current channel B is on (Sonoff Dual R3 Pow) - =0, means ADC current channel B is closed + =1, means ADC current channel B is on (Sonoff Dual R3) + =0, means ADC current channel B is closed (Pow CT) 9 NC -, the default is 1. 8-6 PGAIB[2:0] Current channel B analog gain selection highest bit - =1XX, PGA of current channel B=16 (Sonoff Dual R3 Pow) + =1XX, PGA of current channel B=16 (Sonoff Dual R3) =011, PGA of current channel B=8 =010, PGA of current channel B=4 =001, PGA of current channel B=2 - =000, PGA of current channel B=1 + =000, PGA of current channel B=1 (Pow CT) 5-3 PGAU[2:0] Highest bit of voltage channel analog gain selection =1XX, PGA of voltage U=16 =011, PGA of voltage U=8 =010, PGA of voltage U=4 =001, PGA of voltage U=2 - =000, PGA of voltage U=1 (Sonoff Dual R3 Pow) + =000, PGA of voltage U=1 (Sonoff Dual R3 / Pow CT) 2-0 PGAIA[2:0] Current channel A analog gain selection highest bit - =1XX, PGA of current channel A=16 (Sonoff Dual R3 Pow) + =1XX, PGA of current channel A=16 (Sonoff Dual R3) =011, PGA of current channel A=8 =010, PGA of current channel A=4 =001, PGA of current channel A=2 - =000, PGA of current channel A=1 + =000, PGA of current channel A=1 (Pow CT) */ - Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0xFF04); + if (CSE7761_MODEL_POWCT == CSE7761Data.model) { +// Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0x0A00); // Pow CT + Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0xFE00); // Pow CT - Tasmota (enable B) + } else { + Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0xFF04); // Sonoff Dual R3 + } /* Energy Measure Control Register (EMUCON) Addr:0x01 Default value: 0x0000 Bit name Function description 15-14 Tsensor_Step[1:0] Measurement steps of temperature sensor: - =2'b00 The first step of temperature sensor measurement, the Offset of OP1 and OP2 is +/+. (Sonoff Dual R3 Pow) + =2'b00 The first step of temperature sensor measurement, the Offset of OP1 and OP2 is +/+. (Sonoff Dual R3 / Pow CT) =2'b01 The second step of temperature sensor measurement, the Offset of OP1 and OP2 is +/-. =2'b10 The third step of temperature sensor measurement, the Offset of OP1 and OP2 is -/+. =2'b11 The fourth step of temperature sensor measurement, the Offset of OP1 and OP2 is -/-. After measuring these four results and averaging, the AD value of the current measured temperature can be obtained. 13 tensor_en Temperature measurement module control - =0 when the temperature measurement module is closed; (Sonoff Dual R3 Pow) + =0 when the temperature measurement module is closed; (Sonoff Dual R3 / Pow CT) =1 when the temperature measurement module is turned on; 12 comp_off Comparator module close signal: =0 when the comparator module is in working state - =1 when the comparator module is off (Sonoff Dual R3 Pow) + =1 when the comparator module is off (Sonoff Dual R3 / Pow CT) 11-10 Pmode[1:0] Selection of active energy calculation method: Pmode =00, both positive and negative active energy participate in the accumulation, - the accumulation method is algebraic sum mode, the reverse REVQ symbol indicates to active power; (Sonoff Dual R3 Pow) + the accumulation method is algebraic sum mode, the reverse REVQ symbol indicates to active power; (Sonoff Dual R3 / Pow CT) Pmode = 01, only accumulate positive active energy; Pmode = 10, both positive and negative active energy participate in the accumulation, and the accumulation method is absolute value method. No reverse active power indication; Pmode =11, reserved, the mode is the same as Pmode =00 9 NC - 8 ZXD1 The initial value of ZX output is 0, and different waveforms are output according to the configuration of ZXD1 and ZXD0: - =0, it means that the ZX output changes only at the selected zero-crossing point (Sonoff Dual R3 Pow) + =0, it means that the ZX output changes only at the selected zero-crossing point (Sonoff Dual R3 / Pow CT) =1, indicating that the ZX output changes at both the positive and negative zero crossings 7 ZXD0 - =0, indicates that the positive zero-crossing point is selected as the zero-crossing detection signal (Sonoff Dual R3 Pow) + =0, indicates that the positive zero-crossing point is selected as the zero-crossing detection signal (Sonoff Dual R3 / Pow CT) =1, indicating that the negative zero-crossing point is selected as the zero-crossing detection signal 6 HPFIBOFF - =0, enable current channel B digital high-pass filter (Sonoff Dual R3 Pow) - =1, turn off the digital high-pass filter of current channel B + =0, enable current channel B digital high-pass filter (Sonoff Dual R3) + =1, turn off the digital high-pass filter of current channel B (Pow CT) 5 HPFIAOFF - =0, enable current channel A digital high-pass filter (Sonoff Dual R3 Pow) + =0, enable current channel A digital high-pass filter (Sonoff Dual R3 / Pow CT) =1, turn off the digital high-pass filter of current channel A 4 HPFUOFF - =0, enable U channel digital high pass filter (Sonoff Dual R3 Pow) + =0, enable U channel digital high pass filter (Sonoff Dual R3 / Pow CT) =1, turn off the U channel digital high-pass filter 3-2 NC - 1 PBRUN - =1, enable PFB pulse output and active energy register accumulation; (Sonoff Dual R3 Pow) + =1, enable PFB pulse output and active energy register accumulation; (Sonoff Dual R3 / Pow CT) =0 (default), turn off PFB pulse output and active energy register accumulation. 0 PARUN - =1, enable PFA pulse output and active energy register accumulation; (Sonoff Dual R3 Pow) + =1, enable PFA pulse output and active energy register accumulation; (Sonoff Dual R3 / Pow CT) =0 (default), turn off PFA pulse output and active energy register accumulation. */ -// Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1003); +// Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1043); // Pow CT +// Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1003); // Sonoff Dual R3 Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1183); // Tasmota enable zero cross detection on both positive and negative signal - /* Energy Measure Control Register (EMUCON2) Addr: 0x13 Default value: 0x0001 Bit name Function description 15-13 NC - 12 SDOCmos =1, SDO pin CMOS open-drain output - =0, SDO pin CMOS output (Sonoff Dual R3 Pow) + =0, SDO pin CMOS output (Sonoff Dual R3 / Pow CT) 11 EPB_CB Energy_PB clear signal control, the default is 0, and it needs to be configured to 1 in UART mode. Clear after reading is not supported in UART mode - =1, Energy_PB will not be cleared after reading; (Sonoff Dual R3 Pow) + =1, Energy_PB will not be cleared after reading; (Sonoff Dual R3 / Pow CT) =0, Energy_PB is cleared after reading; 10 EPA_CB Energy_PA clear signal control, the default is 0, it needs to be configured to 1 in UART mode, Clear after reading is not supported in UART mode - =1, Energy_PA will not be cleared after reading; (Sonoff Dual R3 Pow) + =1, Energy_PA will not be cleared after reading; (Sonoff Dual R3 / Pow CT) =0, Energy_PA is cleared after reading; 9-8 DUPSEL[1:0] Average register update frequency control =00, Update frequency 3.4Hz =01, Update frequency 6.8Hz =10, Update frequency 13.65Hz - =11, Update frequency 27.3Hz (Sonoff Dual R3 Pow) + =11, Update frequency 27.3Hz (Sonoff Dual R3 / Pow CT) 7 CHS_IB Current channel B measurement selection signal - =1, measure the current of channel B (Sonoff Dual R3 Pow) + =1, measure the current of channel B (Sonoff Dual R3 / Pow CT) =0, measure the internal temperature of the chip 6 PfactorEN Power factor function enable - =1, turn on the power factor output function (Sonoff Dual R3 Pow) + =1, turn on the power factor output function (Sonoff Dual R3 / Pow CT) =0, turn off the power factor output function 5 WaveEN Waveform data, instantaneous data output enable signal =1, turn on the waveform data output function (Tasmota add frequency) - =0, turn off the waveform data output function (Sonoff Dual R3 Pow) + =0, turn off the waveform data output function (Sonoff Dual R3 / Pow CT) 4 SAGEN Voltage drop detection enable signal, WaveEN=1 must be configured first =1, turn on the voltage drop detection function - =0, turn off the voltage drop detection function (Sonoff Dual R3 Pow) + =0, turn off the voltage drop detection function (Sonoff Dual R3 / Pow CT) 3 OverEN Overvoltage, overcurrent, and overload detection enable signal, WaveEN=1 must be configured first =1, turn on the overvoltage, overcurrent, and overload detection functions - =0, turn off the overvoltage, overcurrent, and overload detection functions (Sonoff Dual R3 Pow) + =0, turn off the overvoltage, overcurrent, and overload detection functions (Sonoff Dual R3 / Pow CT) 2 ZxEN Zero-crossing detection, phase angle, voltage frequency measurement enable signal =1, turn on the zero-crossing detection, phase angle, and voltage frequency measurement functions (Tasmota add frequency) - =0, disable zero-crossing detection, phase angle, voltage frequency measurement functions (Sonoff Dual R3 Pow) + =0, disable zero-crossing detection, phase angle, voltage frequency measurement functions (Sonoff Dual R3 / Pow CT) 1 PeakEN Peak detect enable signal =1, turn on the peak detection function - =0, turn off the peak detection function (Sonoff Dual R3 Pow) + =0, turn off the peak detection function (Sonoff Dual R3 / Pow CT) 0 NC Default is 1 */ #ifndef CSE7761_FREQUENCY - Cse7761Write(CSE7761_REG_EMUCON2 | 0x80, 0x0FC1); // Sonoff Dual R3 Pow + Cse7761Write(CSE7761_REG_EMUCON2 | 0x80, 0x0FC1); // Sonoff Dual R3 / Pow CT #else Cse7761Write(CSE7761_REG_EMUCON2 | 0x80, 0x0FE5); // Tasmota add Frequency From 13330eb085d8760a0a829eee0ec816bbd95b18e0 Mon Sep 17 00:00:00 2001 From: Christian Baars Date: Thu, 11 Jul 2024 23:05:47 +0200 Subject: [PATCH 144/252] Berry: add int8 quantisation to Tensorflow lite driver (#21763) * add input quantization, minor fixes * prevent divideByZero --- lib/libesp32/berry_tasmota/src/be_TFL_lib.c | 4 +- .../xdrv_52_3_berry_tf_lite_micro.ino | 84 ++++++++----------- .../tasmota_xsns_sensor/xsns_62_esp32_mi.ino | 2 + 3 files changed, 38 insertions(+), 52 deletions(-) diff --git a/lib/libesp32/berry_tasmota/src/be_TFL_lib.c b/lib/libesp32/berry_tasmota/src/be_TFL_lib.c index 517693a57..3e7a1264c 100644 --- a/lib/libesp32/berry_tasmota/src/be_TFL_lib.c +++ b/lib/libesp32/berry_tasmota/src/be_TFL_lib.c @@ -21,8 +21,8 @@ BE_FUNC_CTYPE_DECLARE(be_TFL_begin, "b", "@s[(bytes)~]"); extern bbool be_TFL_load(struct bvm *vm, const uint8_t *model_buf, size_t model_size, const uint8_t *output_buf, size_t output_size,int arena); BE_FUNC_CTYPE_DECLARE(be_TFL_load, "b", "@(bytes)~(bytes)~[i]"); -extern bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size); -BE_FUNC_CTYPE_DECLARE(be_TFL_input, "b", "@(bytes)~"); +extern bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size, bbool quantize_to_int8); +BE_FUNC_CTYPE_DECLARE(be_TFL_input, "b", "@(bytes)~[b]"); extern bbool be_TFL_output(struct bvm *vm, const uint8_t *buf, size_t size); BE_FUNC_CTYPE_DECLARE(be_TFL_output, "b", "@(bytes)~"); diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino index 5d18ac570..45cbb7cd4 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino @@ -70,7 +70,7 @@ struct TFL_mic_ctx_t{ struct { uint32_t is_audio_initialized:1; uint32_t is_first_time:1; - uint32_t new_feature_data:1; + // uint32_t new_feature_data:1; uint32_t continue_audio_capture:1; uint32_t stop_audio_capture:1; uint32_t audio_capture_ended:1; @@ -102,7 +102,7 @@ struct TFL_mic_ctx_t{ struct TFL_stats_t{ uint32_t model_size = 0; uint32_t used_arena_bytes = 0; - uint32_t invokations = 0; + uint32_t invocations = 0; uint32_t loop_task_free_stack_bytes = 0; uint32_t mic_task_free_stack_bytes = 0; }; @@ -114,7 +114,7 @@ TfLiteTensor* output = nullptr; int8_t *berry_output_buf = nullptr; size_t berry_output_bufsize; int TensorArenaSize = 2000; -uint8_t max_invocations; // max. invocations per second +uint8_t max_invocations = 4; // max. invocations per second TaskHandle_t loop_task = nullptr; // QueueHandle_t loop_queue = nullptr; @@ -127,9 +127,8 @@ union{ // uint32_t stop_loop:1; uint32_t loop_ended:1; uint32_t unread_output:1; - uint32_t use_cam:1; + uint32_t new_input_data:1; uint32_t use_mic:1; - uint32_t mode_inference:1; } option; uint32_t options; }; @@ -176,13 +175,6 @@ bool TFL_create_task(){ return btrue; } -bool TFL_init_CAM(){ - AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: mode webcam not implemented yet")); - delete TFL; - TFL = nullptr; - return bfalse; -} - #ifdef USE_I2S /** * @brief Set up some buffers and tables for feature extraction of audio samples. Must run once before starting audio capturing. @@ -304,10 +296,10 @@ void TFL_capture_samples(void* arg) { /* read slice data at once from i2s */ // i2s_read(I2S_NUM, i2s_read_buffer, i2s_bytes_to_read, &bytes_read, pdMS_TO_TICKS(TFL->mic->slice_stride)); - i2s_channel_read(audio_i2s.in->getRxHandle(), (void*)i2s_read_buffer, i2s_bytes_to_read, &bytes_read, pdMS_TO_TICKS(TFL->mic->slice_stride)); + esp_err_t err = i2s_channel_read(audio_i2s.in->getRxHandle(), (void*)i2s_read_buffer, i2s_bytes_to_read, &bytes_read, pdMS_TO_TICKS(TFL->mic->slice_stride)); if (bytes_read <= 0) { - MicroPrintf( PSTR( "Error in I2S read : %d"), bytes_read); + MicroPrintf( PSTR( "Error %d in I2S, did read %d bytes"), err, bytes_read); } else { if (bytes_read < i2s_bytes_to_read) { @@ -328,7 +320,7 @@ void TFL_capture_samples(void* arg) { if(TFL->mic->feature_buffer_idx == TFL->mic->slice_count){ TFL->mic->feature_buffer_idx = 0; } - TFL->mic->flag.new_feature_data = 1; + TFL->option.new_input_data = 1; xSemaphoreGive(TFL->mic->feature_buffer_mutex); } @@ -473,7 +465,6 @@ void TFL_task_loop(void *pvParameters){ TickType_t xLastWakeTime = xTaskGetTickCount(); TFL->stats->loop_task_free_stack_bytes = uxTaskGetStackHighWaterMark(NULL); - bool do_invokation = true; while(TFL->option.delay_next_invocation == 1 && TFL->option.running_loop == 1){ MicroPrintf(PSTR("delay_next_invocation")); vTaskDelay(10/ portTICK_PERIOD_MS); @@ -483,16 +474,13 @@ void TFL_task_loop(void *pvParameters){ #ifdef USE_I2S if(TFL->option.use_mic == 1){ TFL->option.delay_next_invocation = 0; // Clean up later - if (TFL->mic->flag.new_feature_data == 0){ - do_invokation = false; - } if(TFL->mic->flag.continue_audio_capture == 1){ TFL_mic_feature_buf_to_input(); } } #endif - if(do_invokation){ - // MicroPrintf(PSTR("Invokation requested")); + if(TFL->option.new_input_data){ + // MicroPrintf(PSTR("invocation requested")); TFL->option.running_invocation = 1; int invoke_status = interpreter.Invoke(); if (invoke_status != kTfLiteOk) { @@ -502,15 +490,10 @@ void TFL_task_loop(void *pvParameters){ if(TFL->berry_output_buf != nullptr){ memcpy(TFL->berry_output_buf,(int8_t*)TFL->output->data.data,TFL->berry_output_bufsize); } - TFL->stats->invokations++; - + TFL->stats->invocations++; TFL->option.unread_output = 1; - #ifdef USE_I2S - if(TFL->option.use_mic == 1) { - TFL->mic->flag.new_feature_data = 0; - } - TFL->option.running_invocation = 0; - #endif //USE_I2S + TFL->option.running_invocation = 0; + TFL->option.new_input_data == 0; } if(TFL->option.running_loop == 1) vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(1000 / TFL->max_invocations)); //maybe we already want to exit } @@ -535,7 +518,7 @@ extern "C" { * @brief Create a context for a tensor flow session, that will later run in a task * * @param vm - * @param type BUF - generic byte buffer, CAM - webcam input, MIC - microphone input + * @param type BUF - generic byte buffer, MIC - microphone input * @return btrue * @return bfalse */ @@ -549,21 +532,12 @@ extern "C" { AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: context deleted")); return btrue; } - TFL = new TFL_ctx_t; + TFL = new TFL_ctx_t{}; TFL->options = 0; if(*(uint32_t*)type == 0x00465542){ //BUF AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: mode generic buffer")); } - else if(*(uint32_t*)type == 0x004D4143){ //CAM - not yet implemented - AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: mode webcam")); - if(TFL_init_CAM()){ - TFL->option.use_cam = 1; - } - else{ - return bfalse; - } - } else if(*(uint32_t*)type == 0x0043494D){ //MIC #ifdef USE_I2S if(descriptor && len==sizeof(TFL_mic_descriptor_t)){ @@ -620,7 +594,7 @@ extern "C" { if(arena){ TFL->TensorArenaSize = arena; } - TFL->option.mode_inference = 1; + TFL->berry_output_buf = (int8_t*)output_buf; TFL->berry_output_bufsize = output_size; TFL_create_task(); @@ -636,24 +610,35 @@ extern "C" { * @brief Send new input data to the tensor flow session * * @param vm - * @param buf Arbitrary data in a byte buffer, must fit to the TF model - * @param size Size of buffer (auto-calculated by Berry) + * @param buf Arbitrary data in a byte buffer, must fit to the TF model + * @param size Size of buffer (auto-calculated by Berry) + * @param quantize_to_int8 Optional: convert bytes to quantized int8 values * @return btrue * @return bfalse */ - bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size){ + bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size, bbool quantize_to_int8){ if(!TFL) return bfalse; if(TFL->option.running_loop == 1){ uint32_t timeout = 0; + int8_t* tensor_input_buffer = tflite::GetTensorData(TFL->input); while(!TFL->option.delay_next_invocation == 1) { - if(timeout>10) break; - delay(2); + if(timeout>4) return bfalse;; + delay(5); timeout++; } AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: imput new data and invoke")); - memcpy((uint8_t*)TFL->input->data.data,(uint8_t*)buf,size); + if(quantize_to_int8){ + int16_t temp_int; + for(int i = 0; i < size; i++){ + temp_int = buf[i]; + tensor_input_buffer[i] = (int8_t)(temp_int - 128); + } + } else { + memcpy(tensor_input_buffer, buf,size); + } TFL->option.delay_next_invocation = 0; + TFL->option.new_input_data = 1; return btrue; } return bfalse; @@ -697,7 +682,6 @@ extern "C" { return (const char *)item; } - /** * @brief Shows statistics about the model and the running TFL session * @@ -734,7 +718,7 @@ extern "C" { } inc = snprintf_P(s + pos, size-pos, PSTR("],\"output_type\":%u}"),TFL->output->type); pos += inc; - inc = snprintf_P(s + pos, size-pos, PSTR(",\"sessiom\":{\"used_arena\":%u"),TFL->stats->used_arena_bytes); + inc = snprintf_P(s + pos, size-pos, PSTR(",\"session\":{\"used_arena\":%u"),TFL->stats->used_arena_bytes); pos += inc; inc = snprintf_P(s + pos, size-pos, PSTR(",\"loop_stack\":%u"),TFL->stats->loop_task_free_stack_bytes); pos += inc; @@ -742,7 +726,7 @@ extern "C" { inc = snprintf_P(s + pos, size-pos, PSTR(",\"audio_stack\":%u"),TFL->stats->mic_task_free_stack_bytes); pos += inc; } - inc = snprintf_P(s + pos, size-pos, PSTR(",\"invokations\":%u}}"),TFL->stats->invokations); + inc = snprintf_P(s + pos, size-pos, PSTR(",\"invocations\":%u}}"),TFL->stats->invocations); be_pushstring(vm, s); free(s); return s; diff --git a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino index 66a32ac41..c894b8796 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino @@ -2381,6 +2381,7 @@ void MI32sendEnergyWidget(){ #endif //USE_MI_ESP32_ENERGY #ifdef USE_WEBCAM void MI32sendCamWidget(){ +#ifndef USE_BERRY_CAM if (Wc.CamServer && Wc.up) { WSContentSend_P(PSTR("

"), (uint32_t)WiFi.localIP()); } +#endif //USE_BERRY_CAM } #endif //USE_WEBCAM From 59de2fd97991b8f4b4abeff5fed4da47c5b09da7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 12 Jul 2024 12:49:00 +0200 Subject: [PATCH 145/252] Fix udisplay ESP8266 I2C no asterix in config (#21121) --- lib/lib_display/UDisplay/uDisplay.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index afdb4852a..3d410a679 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -1074,7 +1074,9 @@ Renderer *uDisplay::Init(void) { wire = &Wire1; } #endif // ESP32 - wire->begin(i2c_sda, i2c_scl); // TODO: aren't I2C buses already initialized? Shouldn't this be moved to display driver? + if (i2c_sda != i2c_scl) { + wire->begin(i2c_sda, i2c_scl); // TODO: aren't I2C buses already initialized? Shouldn't this be moved to display driver? + } #ifdef UDSP_DEBUG Serial.printf("I2C cmds: %d\n", dsp_ncmds); From f68ac4377a29a121a47b6313eb537f46845d0cb8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 12 Jul 2024 14:57:27 +0200 Subject: [PATCH 146/252] Fix udisplay positional replacements (#21121) --- lib/lib_display/UDisplay/uDisplay.cpp | 3 +- .../xdsp_17_universal.ino | 33 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 3d410a679..9be4d2e72 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -1074,10 +1074,11 @@ Renderer *uDisplay::Init(void) { wire = &Wire1; } #endif // ESP32 +/* if (i2c_sda != i2c_scl) { wire->begin(i2c_sda, i2c_scl); // TODO: aren't I2C buses already initialized? Shouldn't this be moved to display driver? } - +*/ #ifdef UDSP_DEBUG Serial.printf("I2C cmds: %d\n", dsp_ncmds); #endif diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index 8c07b1d56..11ec240f3 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -171,9 +171,11 @@ int8_t cs; } //,3c,22,21,-1 uint8_t i2caddr = strtol(cp, &cp, 16); - int8_t scl, sda; - scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n - 1)); - sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n - 1)); + //,22,21,-1 + cp++; + //22,21,-1 + int8_t scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n - 1)); + int8_t sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n - 1)); replacepin(&cp, Pin(GPIO_OLED_RESET)); if (wire_n == 1) { @@ -346,19 +348,17 @@ int8_t cs; cp += 2; uint8_t i2caddr = strtol(cp, &cp, 16); - int8_t scl, sda, irq = -1, rst = -1; - scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n)); - sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n)); + cp++; + int8_t scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n)); + int8_t sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n)); + int8_t irq = -1; if (*(cp - 1) == ',') { irq = strtol(cp, &cp, 10); - } else { - irq = -1; } + int8_t rst = -1; if (*cp == ',') { cp++; rst = strtol(cp, &cp, 10); - } else { - rst = -1; } if (wire_n == 0) { @@ -523,16 +523,21 @@ int8_t cs; int8_t replacepin(char **cp, int16_t pin) { int8_t res = 0; char *lp = *cp; - if (*lp == ',') lp++; - if (*lp == '*') { + // cp = 6,*,* and pin = 4 => lp = 6,*,* and cp = *,* + // cp = *,*,* and pin = 4 => lp = 4,*,* and cp = *,* + // cp = ,*,* and pin = 4 => lp = 4,*,* and cp = *,* + if ((*lp == '*') || (*lp == ',')) { char val[8]; itoa(pin, val, 10); uint16_t slen = strlen(val); //AddLog(LOG_LEVEL_INFO, PSTR("replace pin: %d"), pin); - memmove(lp + slen, lp + 1, strlen(lp)); + uint32_t idx = 0; + if (*lp == '*') { idx++; } + memmove(lp + slen, lp + idx, strlen(lp)); memmove(lp, val, slen); } - res= strtol(lp, 0, 10); + + res = strtol(lp, 0, 10); char *np = strchr(lp, ','); if (np) { *cp = np + 1; From 279d9e5824b6c9e24ed0a84990346d4cbbab7768 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:36:04 +0200 Subject: [PATCH 147/252] Add I2C display name during startup in universal display driver --- .../xdsp_17_universal.ino | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index 11ec240f3..a25a93d7f 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -158,8 +158,23 @@ int8_t cs; return 0; } + char display_name[16] = { 0 }; // Loosly related to dname in uDisplay.h + char *cp = strstr(ddesc, ":H,"); + if (cp) { + cp += 3; + char *lp = strchr(cp, ','); + if (lp) { + uint32_t len = lp - cp +1; + if (len >= sizeof(display_name)) { len = sizeof(display_name) -1; } + strlcpy(display_name, cp, len); + } + } + if (!strlen(display_name)) { + strcpy_P(display_name, PSTR("Display")); + } + // now replace tasmota vars before passing to driver - char *cp = strstr(ddesc, "I2C"); + cp = strstr(ddesc, "I2C"); if (cp) { cp += 3; uint8_t wire_n = 1; @@ -189,16 +204,11 @@ int8_t cs; I2c2Begin(sda, scl); } } - if (I2cSetDevice(i2caddr, wire_n - 1)) { - I2cSetActiveFound(i2caddr, "DSP-I2C", wire_n - 1); - } #endif // ESP32 - -#ifdef ESP8266 - if (I2cSetDevice(i2caddr)) { - I2cSetActiveFound(i2caddr, "DSP-I2C"); + if (I2cSetDevice(i2caddr, wire_n - 1)) { + I2cSetActiveFound(i2caddr, display_name, wire_n - 1); } -#endif // ESP8266 + //AddLog(LOG_LEVEL_INFO, PSTR("DSP: i2c %x, %d, %d, %d!"), i2caddr, wire_n, scl, sda); } From d27ca0bc89e4041a833dc9e36b6d58d4b00f1b7a Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 12 Jul 2024 23:01:35 +0200 Subject: [PATCH 148/252] Platform 2024.07.11 (#21765) Fix i2s issues --- platformio_tasmota32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 5a5c76ae1..dd5162408 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -82,7 +82,7 @@ lib_ignore = ${esp32_defaults.lib_ignore} ccronexpr [core32] -platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.07.10/platform-espressif32.zip +platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.07.11/platform-espressif32.zip platform_packages = build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From db3d292caed8544fe0f81ab7d28b7d03b7733b49 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 13 Jul 2024 13:45:01 +0200 Subject: [PATCH 149/252] Update Tasmota Arduino Core 3.0.2 based on IDF 5.2.2 - i2s fix --- platformio_override_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 8ad34f25b..7604a1144 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -77,7 +77,7 @@ lib_extra_dirs = ${library.lib_extra_dirs} [env:tasmota32_base] ; *** Uncomment next lines ";" to enable development Tasmota Arduino version ESP32 -;platform = https://github.com/Jason2866/platform-espressif32/releases/download/2024.07.21/platform-espressif32.zip +;platform = https://github.com/Jason2866/platform-espressif32/releases/download/2024.07.22/platform-espressif32.zip ;platform_packages = framework-arduinoespressif32 @ ; framework-arduino-solo1 @ From 36329827fce6276ff55f077d7481f9943dbfd823 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 13 Jul 2024 14:58:24 +0200 Subject: [PATCH 150/252] Refactor universal display driver --- .../xdsp_17_universal.ino | 268 ++++++++---------- 1 file changed, 123 insertions(+), 145 deletions(-) diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index a25a93d7f..22a9db511 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -17,8 +17,7 @@ along with this program. If not, see . */ - -#if defined(USE_DISPLAY) +#ifdef USE_DISPLAY #ifdef USE_UNIVERSAL_DISPLAY #define XDSP_17 17 @@ -28,7 +27,6 @@ bool udisp_init_done = false; uint8_t ctouch_counter; - #ifdef USE_UFILESYS extern FS *ffsp; #endif @@ -38,8 +36,7 @@ extern FS *ffsp; #undef CST816S_address #define CST816S_address 0x15 -enum {GPIO_DP_RES=GPIO_SENSOR_END-1,GPIO_DP_CS,GPIO_DP_RS,GPIO_DP_WR,GPIO_DP_RD,GPIO_DPAR0,GPIO_DPAR1,GPIO_DPAR2,GPIO_DPAR3,GPIO_DPAR4,GPIO_DPAR5,GPIO_DPAR6,GPIO_DPAR7,GPIO_DPAR8,GPIO_DPAR9,GPIO_DPAR10,GPIO_DPAR11,GPIO_DPAR12,GPIO_DPAR13,GPIO_DPAR14,GPIO_DPAR15}; - +enum { GPIO_DP_RES = GPIO_SENSOR_END-1,GPIO_DP_CS,GPIO_DP_RS,GPIO_DP_WR,GPIO_DP_RD,GPIO_DPAR0,GPIO_DPAR1,GPIO_DPAR2,GPIO_DPAR3,GPIO_DPAR4,GPIO_DPAR5,GPIO_DPAR6,GPIO_DPAR7,GPIO_DPAR8,GPIO_DPAR9,GPIO_DPAR10,GPIO_DPAR11,GPIO_DPAR12,GPIO_DPAR13,GPIO_DPAR14,GPIO_DPAR15}; #ifndef USE_DISPLAY uint8_t color_type; @@ -72,10 +69,9 @@ const char DSP_SAMPLE_DESC[] PROGMEM = DSP_ROM_DESC; #endif // DSP_ROM_DESC /*********************************************************************************************/ Renderer *Init_uDisplay(const char *desc) { -char *ddesc = 0; -char *fbuff; -uDisplay *udisp; -int8_t cs; + char *ddesc = 0; + char *fbuff; + uDisplay *udisp; if (TasmotaGlobal.gpio_optiona.udisplay_driver || desc) { @@ -91,7 +87,6 @@ int8_t cs; AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: const char descriptor used")); } - #ifdef USE_UFILESYS if (ffsp && !TasmotaGlobal.no_autoexec && !ddesc) { File fp; @@ -111,7 +106,6 @@ int8_t cs; } #endif // USE_UFILESYS - #ifdef USE_SCRIPT if (bitRead(Settings->rule_enabled, 0) && !ddesc) { uint8_t dfound = Run_Scripter(">d",-2,0); @@ -143,7 +137,6 @@ int8_t cs; } #endif // USE_RULES - #ifdef DSP_ROM_DESC if (!ddesc) { memcpy_P(fbuff, DSP_SAMPLE_DESC, sizeof(DSP_SAMPLE_DESC)); @@ -158,98 +151,87 @@ int8_t cs; return 0; } - char display_name[16] = { 0 }; // Loosly related to dname in uDisplay.h - char *cp = strstr(ddesc, ":H,"); + // Replace tasmota vars before passing to driver uDisplay.cpp + char *cp = strstr(ddesc, "I2C"); if (cp) { + // I2C,3c,22,21,* + // I2C1,3c,22,21,* + // I2C2,3c,22,21,* cp += 3; - char *lp = strchr(cp, ','); - if (lp) { - uint32_t len = lp - cp +1; - if (len >= sizeof(display_name)) { len = sizeof(display_name) -1; } - strlcpy(display_name, cp, len); - } - } - if (!strlen(display_name)) { - strcpy_P(display_name, PSTR("Display")); - } - - // now replace tasmota vars before passing to driver - cp = strstr(ddesc, "I2C"); - if (cp) { - cp += 3; - uint8_t wire_n = 1; + // ,3c,22,21,* + // 1,3c,22,21,* + // 2,3c,22,21,* + uint8_t wire_n = 0; if (*cp == '1' || *cp == '2') { - wire_n = *cp & 3; + wire_n = (*cp & 3) - 1; cp += 2; } else { cp++; } - //,3c,22,21,-1 + // 3c,22,21,-1 uint8_t i2caddr = strtol(cp, &cp, 16); - //,22,21,-1 + // ,22,21,-1 cp++; - //22,21,-1 - int8_t scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n - 1)); - int8_t sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n - 1)); + // 22,21,-1 + int8_t scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n)); + int8_t sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n)); replacepin(&cp, Pin(GPIO_OLED_RESET)); - if (wire_n == 1) { + if (wire_n == 0) { if (!TasmotaGlobal.i2c_enabled) { I2cBegin(sda, scl); } } #ifdef ESP32 - if (wire_n == 2) { + if (wire_n == 1) { if (!TasmotaGlobal.i2c_enabled_2) { I2c2Begin(sda, scl); } } #endif // ESP32 - if (I2cSetDevice(i2caddr, wire_n - 1)) { - I2cSetActiveFound(i2caddr, display_name, wire_n - 1); + if (I2cSetDevice(i2caddr, wire_n)) { + char display_name[16] = { 0 }; // Loosly related to dname in uDisplay.h + strcpy_P(display_name, PSTR("Display")); + cp = strstr(ddesc, ":H,"); + if (cp) { + // :H,SH1106,128,64,1,I2C,3c,22,21,* + cp += 3; + char *lp = strchr(cp, ','); + if (lp) { + uint32_t len = lp - cp +1; + if (len < sizeof(display_name)) { + strlcpy(display_name, cp, len); + } + } + } + I2cSetActiveFound(i2caddr, display_name, wire_n); } - - //AddLog(LOG_LEVEL_INFO, PSTR("DSP: i2c %x, %d, %d, %d!"), i2caddr, wire_n, scl, sda); } cp = strstr(ddesc, "SPI,"); if (cp) { + // 9 params nr,cs,sclk,mosi,dc,bl,reset,miso,mhz + // SPI,1,*,*,*,*,*,*,*,80 + // SPI,*,*,*,*,*,*,*,*,40 cp += 4; - //; 7 params nr,cs,sclk,mosi,dc,bl,reset,miso - //SPI,*,*,*,*,*,*,* - switch (*cp) { - case '1': - cs = Pin(GPIO_SPI_CS); - break; - case '2': - cs = Pin(GPIO_SPI_CS, 1); - break; - default: - cs = Pin(GPIO_SSPI_CS); - break; + // 1,*,*,*,*,*,*,*,80 + uint32_t spi_type = 10; // SPI,* = Software SPI + if (isdigit(*cp) && (*cp != '0')) { + spi_type = *cp - '1'; // SPI,1 = 0, SPI,2 = 1, SPI,3 = 2 } - if (*cp == '1') { - cp+=2; - replacepin(&cp, cs); - replacepin(&cp, Pin(GPIO_SPI_CLK)); - replacepin(&cp, Pin(GPIO_SPI_MOSI)); - replacepin(&cp, Pin(GPIO_SPI_DC)); + cp += 2; + // *,*,*,*,*,*,*,80 + if (spi_type < 10) { + replacepin(&cp, Pin(GPIO_SPI_CS, spi_type)); + replacepin(&cp, Pin(GPIO_SPI_CLK, spi_type)); + replacepin(&cp, Pin(GPIO_SPI_MOSI, spi_type)); + replacepin(&cp, Pin(GPIO_SPI_DC, spi_type)); replacepin(&cp, Pin(GPIO_BACKLIGHT)); replacepin(&cp, Pin(GPIO_OLED_RESET)); - replacepin(&cp, Pin(GPIO_SPI_MISO)); - } else if (*cp == '2') { - cp+=2; - replacepin(&cp, cs); - replacepin(&cp, Pin(GPIO_SPI_CLK, 1)); - replacepin(&cp, Pin(GPIO_SPI_MOSI, 1)); - replacepin(&cp, Pin(GPIO_SPI_DC, 1)); - replacepin(&cp, Pin(GPIO_BACKLIGHT)); - replacepin(&cp, Pin(GPIO_OLED_RESET)); - replacepin(&cp, Pin(GPIO_SPI_MISO, 1)); + replacepin(&cp, Pin(GPIO_SPI_MISO, spi_type)); } else { - // soft spi pins - cp+=2; - replacepin(&cp, cs); + // Soft spi pins + replacepin(&cp, Pin(GPIO_SSPI_CS)); replacepin(&cp, Pin(GPIO_SSPI_SCLK)); replacepin(&cp, Pin(GPIO_SSPI_MOSI)); replacepin(&cp, Pin(GPIO_SSPI_DC)); @@ -259,23 +241,36 @@ int8_t cs; } } - cp = strstr(ddesc, ":UTI"); + cp = strstr(ddesc, ":UTI,"); if (cp) { - cp += 4; // skip ":UTI" - cp = strchr(cp, ','); // skip device name + // :UTI,FT3267,I1,38,-1,-1 + // :UTI,FT5206,I1,38,-1,-1 + // :UTI,FT5206,I2,38,*,* + // :UTI,FT6236,I1,38,-1,-1 + // :UTI,FT6336U,I2,38,-1,-1 + // :UTI,FT6336U,I1,38,*,* + // :UTI,GT911,I1,5d,-1,-1 + // :UTI,XPT2046,S1,*,*,* + // :UTI,SRES,R + cp += 5; // Skip ":UTI," + // FT5206,I1,38,-1,-1 + cp = strchr(cp, ','); // Skip name + // ,I1,38,-1,-1 cp++; - cp = strchr(cp, ','); - cp++; - if (*cp == 'I') { // I= I2C - cp = strchr(cp, ','); // skip interface type - cp++; - cp = strchr(cp, ','); // skip I2C bus number + // I1,38,-1,-1 + // S1,*,*,* + if (*cp == 'I') { // I = I2C + cp += 3; // Skip interface type and bus + // 38,-1,-1 + cp = strchr(cp, ','); // Skip I2C address + // ,-1,-1 cp++; + // -1,-1 replacepin(&cp, Pin(GPIO_TS_RST)); replacepin(&cp, Pin(GPIO_TS_IRQ)); - } else if (*cp == 'S') { // S= SPI - cp = strchr(cp, ','); // skip interface type - cp++; + } else if (*cp == 'S') { // S = SPI + cp += 3; // Skip interface type and bus + // *,*,* replacepin(&cp, Pin(GPIO_TS_SPI_CS)); replacepin(&cp, Pin(GPIO_TS_RST)); replacepin(&cp, Pin(GPIO_TS_IRQ)); @@ -299,11 +294,14 @@ int8_t cs; cp = strstr(ddesc, "PAR,"); if (cp) { + // PAR,8,41,40,39,38,42,-1,8,9,10,11,12,13,14,15,20 + // PAR,16,-1,37,36,35,48,45,47,21,14,13,12,11,10,9,3,8,16,15,7,6,5,4,20 cp += 4; + // 8,41,40,39,38,42,-1,8,9,10,11,12,13,14,15,20 // 8 or 16 bus uint8_t mode = strtol(cp, &cp, 10); cp++; - + // 41,40,39,38,42,-1,8,9,10,11,12,13,14,15,20 replacepin(&cp, Pin(GPIO_DP_RES)); xm = replacepin(&cp, Pin(GPIO_DP_CS)); yp = replacepin(&cp, Pin(GPIO_DP_RS)); @@ -346,19 +344,22 @@ int8_t cs; AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: reinit")); } - udisp = new uDisplay(ddesc); + udisp = new uDisplay(ddesc); - // checck for touch option TI1 or TI2 + // check for touch option TI1 or TI2 #if defined (USE_CST816S) || defined(USE_FT5206) || defined(USE_GT911) cp = strstr(ddesc, ":TI"); if (cp) { - uint8_t wire_n = 1; + // :TI1,38,39,38 + // :TI2,38,22,21 cp += 3; - wire_n = (*cp & 3) - 1; + // 1,38,39,38 + uint8_t wire_n = (*cp & 3) - 1; cp += 2; - + // 38,39,38 uint8_t i2caddr = strtol(cp, &cp, 16); cp++; + // 39,38 int8_t scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n)); int8_t sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n)); int8_t irq = -1; @@ -382,6 +383,7 @@ int8_t cs; I2c2Begin(sda, scl, 400000); } } +#endif // ESP32 if (I2cSetDevice(i2caddr, wire_n)) { if (i2caddr == GT911_address) { I2cSetActiveFound(i2caddr, "GT911", wire_n); @@ -391,63 +393,44 @@ int8_t cs; I2cSetActiveFound(i2caddr, "FT5206", wire_n); } } -#endif // ESP32 -#ifdef ESP8266 - //AddLog(LOG_LEVEL_INFO, PSTR("DSP: touch %x, %d, %d, %d!"), i2caddr, wire_n, scl, sda); - if (I2cSetDevice(i2caddr)) { - if (i2caddr == GT911_address) { - I2cSetActiveFound(i2caddr, "GT911"); - } else if (i2caddr == CST816S_address) { - I2cSetActiveFound(i2caddr, "CST816S"); - } else { - I2cSetActiveFound(i2caddr, "FT5206"); - } - } -#endif // ESP8266 - - // start digitizer - -#ifdef ESP32 + // Start digitizer if (i2caddr == GT911_address) { #ifdef USE_GT911 - if (!wire_n) GT911_Touch_Init(&Wire, irq, rst, xs, ys); - else GT911_Touch_Init(&Wire1, irq, rst, xs, ys); -#endif - } else if (i2caddr == CST816S_address) { + if (!wire_n) { + GT911_Touch_Init(&Wire, irq, rst, xs, ys); + } +#ifdef ESP32 + else { + GT911_Touch_Init(&Wire1, irq, rst, xs, ys); + } +#endif // ESP32 +#endif // USE_GT911 + } + else if (i2caddr == CST816S_address) { #ifdef USE_CST816S CST816S_Touch_Init(wire_n, irq, rst); -#endif - } else { +#endif // USE_CST816S + } + else { #ifdef USE_FT5206 - if (!wire_n) FT5206_Touch_Init(Wire); - else FT5206_Touch_Init(Wire1); -#endif + if (!wire_n) { + FT5206_Touch_Init(Wire); + } +#ifdef ESP32 + else { + FT5206_Touch_Init(Wire1); + } +#endif // ESP32 +#endif // USE_FT5206 } - -#else - - if (i2caddr == GT911_address) { -#ifdef USE_GT911 - if (!wire_n) GT911_Touch_Init(&Wire, irq, rst, xs, ys); -#endif - } else if (i2caddr == CST816S_address) { -#ifdef USE_CST816S - CST816S_Touch_Init(wire_n, irq, rst); -#endif - } else { -#ifdef USE_FT5206 - if (!wire_n) FT5206_Touch_Init(Wire); -#endif - } -#endif // ESP32 - } #endif // USE_FT5206 || GT911 #ifdef USE_XPT2046 cp = strstr(ddesc, ":TS,"); if (cp) { + // :TS,16 cp += 4; uint8_t touch_cs = replacepin(&cp, Pin(GPIO_XPT2046_CS)); int8_t irqpin = -1; @@ -531,11 +514,10 @@ int8_t cs; /*********************************************************************************************/ int8_t replacepin(char **cp, int16_t pin) { - int8_t res = 0; - char *lp = *cp; // cp = 6,*,* and pin = 4 => lp = 6,*,* and cp = *,* // cp = *,*,* and pin = 4 => lp = 4,*,* and cp = *,* // cp = ,*,* and pin = 4 => lp = 4,*,* and cp = *,* + char *lp = *cp; if ((*lp == '*') || (*lp == ',')) { char val[8]; itoa(pin, val, 10); @@ -546,8 +528,7 @@ int8_t replacepin(char **cp, int16_t pin) { memmove(lp + slen, lp + idx, strlen(lp)); memmove(lp, val, slen); } - - res = strtol(lp, 0, 10); + int8_t res = strtol(lp, 0, 10); char *np = strchr(lp, ','); if (np) { *cp = np + 1; @@ -557,8 +538,7 @@ int8_t replacepin(char **cp, int16_t pin) { #ifdef USE_DISPLAY_MODES1TO5 -void UDISP_PrintLog(void) -{ +void UDISP_PrintLog(void) { disp_refresh--; if (!disp_refresh) { disp_refresh = Settings->display_refresh; @@ -583,8 +563,7 @@ void UDISP_PrintLog(void) } } -void UDISP_Time(void) -{ +void UDISP_Time(void) { char line[12]; // renderer->clearDisplay(); @@ -599,8 +578,7 @@ void UDISP_Time(void) renderer->Updateframe(); } -void UDISP_Refresh(void) // Every second -{ +void UDISP_Refresh(void) { // Every second if (!renderer) return; if (Settings->display_mode) { // Mode 0 is User text switch (Settings->display_mode) { From 3d340972755ca3bf49bfa168011e73915cd56e02 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 13 Jul 2024 18:11:33 +0200 Subject: [PATCH 151/252] final i2s fix (#21770) --- .../xdrv_42_0_i2s_3_lib_idf51.ino | 18 ++--- .../xdrv_42_0_i2s_audio_idf51.ino | 72 +++++++++---------- .../xdrv_42_7_i2s_webradio_idf51.ino | 9 ++- 3 files changed, 50 insertions(+), 49 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino index 65466f716..f77bbdfb8 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino @@ -105,7 +105,7 @@ public: void setSlotConfig(i2s_port_t i2s_port, uint8_t tx_slot_config, uint8_t tx_slot_mask, uint8_t rx_slot_mask) { - _i2s_port = i2s_port; + // _i2s_port = i2s_port; _tx_slot_config = tx_slot_config; } void setRxFreq(uint16_t freq) { _rx_freq = freq; } @@ -323,14 +323,9 @@ bool TasmotaI2S::beginTx(void) { } else #endif // SOC_DAC_SUPPORTED { - uint8_t zero_buffer[240] = {0}; - size_t sz; - for(int i = 0;i < 6;i++){ - i2s_channel_preload_data(_tx_handle, zero_buffer, sizeof(zero_buffer), &sz); // preload DMA buffer with silence - } err = i2s_channel_enable(_tx_handle); } - AddLog(LOG_LEVEL_INFO, "I2S: Tx i2s_channel_enable err=0x%04X", err); + AddLog(LOG_LEVEL_DEBUG, "I2S: Tx i2s_channel_enable err=0x%04X", err); if (err != ERR_OK){ return false; } @@ -349,6 +344,11 @@ bool TasmotaI2S::stopTx() { dac_task_stop(); err = dac_continuous_disable((dac_continuous_handle_t) _tx_handle); } else { + uint8_t zero_buffer[240] = {0}; + size_t sz; + for(int i = 0;i < 6;i++){ + i2s_channel_write(_tx_handle, zero_buffer, sizeof(zero_buffer), &sz, 0); // fill DMA buffer with silence + } err = i2s_channel_disable(_tx_handle); } AddLog(LOG_LEVEL_DEBUG, "I2S: stopTx i2s_channel_disable err=0x%04X", err); @@ -364,7 +364,7 @@ bool TasmotaI2S::stopTx() { AddLog(LOG_LEVEL_DEBUG, "I2S: stopTx i2s_del_channel err=0x%04X", err); _tx_handle = nullptr; } - AddLog(LOG_LEVEL_INFO, "I2S: stop: I2S channel disabled"); + AddLog(LOG_LEVEL_DEBUG, "I2S: stop: I2S channel disabled"); } return true; } @@ -380,7 +380,7 @@ void TasmotaI2S::flush() delay(1); } } - AddLog(LOG_LEVEL_INFO, "I2S: flush DMA TX buffer"); + AddLog(LOG_LEVEL_DEBUG, "I2S: flush DMA TX buffer"); } bool TasmotaI2S::delTxHandle(void) { diff --git a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino index 7b0545856..f65d7c722 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino @@ -718,8 +718,8 @@ void I2sInit(void) { audio_i2s.Settings->tx.slot_mask, audio_i2s.Settings->rx.slot_mask); if (tx) { i2s->setTxMode(audio_i2s.Settings->tx.mode); - i2s->setTxChannels(audio_i2s.Settings->tx.channels); - i2s->setRate(audio_i2s.Settings->tx.sample_rate); + // i2s->setTxChannels(audio_i2s.Settings->tx.channels); + // i2s->setRate(audio_i2s.Settings->tx.sample_rate); } if (rx) { i2s->setRxMode(audio_i2s.Settings->rx.mode); @@ -786,20 +786,7 @@ void I2sInit(void) { // // Returns `I2S_OK` if ok to send to output or error code int32_t I2SPrepareTx(void) { - - if(audio_i2s_mp3.task_running){ - audio_i2s_mp3.task_running = false; - while(!audio_i2s_mp3.task_has_ended){ - delay(1); - } - } - - if (audio_i2s_mp3.mic_task_handle) { - audio_i2s_mp3.mic_stop = 1; - while (audio_i2s_mp3.mic_stop) { - delay(1); - } - } + I2sStopPlaying(); AddLog(LOG_LEVEL_DEBUG, "I2S: I2SPrepareTx out=%p", audio_i2s.out); if (!audio_i2s.out) { return I2S_ERR_OUTPUT_NOT_CONFIGURED; } @@ -835,13 +822,12 @@ void I2sMp3Task(void *arg) { audio_i2s_mp3.task_running = true; while (audio_i2s_mp3.mp3->isRunning() && audio_i2s_mp3.task_running) { if (!audio_i2s_mp3.mp3->loop()) { - audio_i2s_mp3.task_running == false; + audio_i2s_mp3.task_running = false; } vTaskDelay(pdMS_TO_TICKS(1)); } audio_i2s.out->flush(); audio_i2s_mp3.mp3->stop(); - I2sStopPlaying(); mp3_delete(); audio_i2s_mp3.mp3_task_handle = nullptr; audio_i2s_mp3.task_has_ended = true; @@ -853,8 +839,7 @@ void I2sStatusCallback(void *cbData, int code, const char *string) { const char *ptr = reinterpret_cast(cbData); (void) code; (void) ptr; - //strncpy_P(status, string, sizeof(status)-1); - //status[sizeof(status)-1] = 0; + AddLog(LOG_LEVEL_DEBUG, "I2S: -> %s", string); } #ifdef USE_I2S_MP3 @@ -870,7 +855,7 @@ void I2sMp3WrTask(void *arg){ } } audio_i2s.out->flush(); - I2sStopPlaying(); + I2sWebRadioStopPlaying(); audio_i2s_mp3.mp3_task_handle = nullptr; audio_i2s_mp3.task_has_ended = true; vTaskDelete(NULL); @@ -879,11 +864,23 @@ void I2sMp3WrTask(void *arg){ #endif // USE_I2S_MP3 void I2sStopPlaying() { - -#ifdef USE_I2S_WEBRADIO - I2sWebRadioStopPlaying(); -#endif I2SAudioPower(false); + + if(audio_i2s_mp3.task_running){ + audio_i2s_mp3.task_running = false; + while(audio_i2s_mp3.task_has_ended == false){ + delay(10); + } + while(audio_i2s_mp3.mp3){ + delay(10); + } + } + if (audio_i2s_mp3.mic_task_handle) { + audio_i2s_mp3.mic_stop = 1; + while (audio_i2s_mp3.mic_stop) { + delay(10); + } + } } #ifdef USE_I2S_MP3 @@ -891,9 +888,9 @@ void I2sStopPlaying() { // // Returns I2S_error_t int32_t I2SPlayMp3(const char *path) { - int32_t i2s_err = I2S_OK; - if ((i2s_err = I2SPrepareTx()) != I2S_OK) { return i2s_err; } - if (audio_i2s_mp3.decoder || audio_i2s_mp3.mp3) return I2S_ERR_DECODER_IN_USE; + int32_t i2s_err = I2SPrepareTx(); + if ((i2s_err) != I2S_OK) { return i2s_err; } + if (audio_i2s_mp3.mp3) return I2S_ERR_DECODER_IN_USE; // check if the filename starts with '/', if not add it char fname[64]; @@ -926,13 +923,14 @@ void mp3_delete(void) { delete audio_i2s_mp3.file; delete audio_i2s_mp3.id3; delete audio_i2s_mp3.mp3; - audio_i2s_mp3.mp3=nullptr; + audio_i2s_mp3.mp3 = nullptr; - if (audio_i2s_mp3.decoder) { - audio_i2s_mp3.decoder->stop(); - delete audio_i2s_mp3.decoder; - audio_i2s_mp3.decoder = NULL; - } + // if (audio_i2s_mp3.decoder) { + // audio_i2s_mp3.decoder->stop(); + // delete audio_i2s_mp3.decoder; + // audio_i2s_mp3.decoder = nullptr; + // AddLog(LOG_LEVEL_DEBUG, "I2S: audio_i2s_mp3.decoder = nullptr"); + // } } #endif // USE_I2S_MP3 @@ -974,16 +972,12 @@ void CmndI2SStop(void) { ResponseCmndChar("I2S output not configured"); return; } - I2sStopPlaying(); + audio_i2s.out->setGain(0); ResponseCmndDone(); } #ifdef USE_I2S_MP3 void CmndI2SPlay(void) { - if (I2SPrepareTx()) { - ResponseCmndChar("I2S output not configured"); - return; - } if (XdrvMailbox.data_len > 0) { int32_t err = I2SPlayMp3(XdrvMailbox.data); // display return message diff --git a/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino b/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino index 1f0a8e7e4..c88c14514 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino @@ -75,11 +75,18 @@ void Webradio(const char *url) { I2sWebRadioStopPlaying(); return; } - + AddLog(LOG_LEVEL_INFO, "I2S: did connect to %s",url); + I2SAudioPower(true); Audio_webradio.buff = new AudioFileSourceBuffer(Audio_webradio.ifile, Audio_webradio.preallocateBuffer, preallocateBufferSize); + if(Audio_webradio.buff == nullptr){ + return; + } Audio_webradio.buff->RegisterStatusCB(I2sStatusCallback, NULL); audio_i2s_mp3.decoder = new AudioGeneratorMP3(Audio_webradio.preallocateCodec, preallocateCodecSize); + if(audio_i2s_mp3.decoder == nullptr){ + return; + } audio_i2s_mp3.decoder->RegisterStatusCB(I2sStatusCallback, NULL); audio_i2s_mp3.decoder->begin(Audio_webradio.buff, audio_i2s.out); if (!audio_i2s_mp3.decoder->isRunning()) { From a18be12b77056e2d381123f1465dfed55ba31824 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 14 Jul 2024 10:01:34 +0200 Subject: [PATCH 152/252] Fix universal display software spi regression from yesterday --- tasmota/tasmota_xdsp_display/xdsp_17_universal.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index 22a9db511..b56bf6d47 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -215,13 +215,13 @@ Renderer *Init_uDisplay(const char *desc) { // SPI,*,*,*,*,*,*,*,*,40 cp += 4; // 1,*,*,*,*,*,*,*,80 - uint32_t spi_type = 10; // SPI,* = Software SPI + uint32_t spi_type = 10; // SPI,3 = Software SPI if (isdigit(*cp) && (*cp != '0')) { - spi_type = *cp - '1'; // SPI,1 = 0, SPI,2 = 1, SPI,3 = 2 + spi_type = *cp - '1'; // SPI,1 = 0, SPI,2 = 1 } cp += 2; // *,*,*,*,*,*,*,80 - if (spi_type < 10) { + if (spi_type < 2) { replacepin(&cp, Pin(GPIO_SPI_CS, spi_type)); replacepin(&cp, Pin(GPIO_SPI_CLK, spi_type)); replacepin(&cp, Pin(GPIO_SPI_MOSI, spi_type)); From 8f6a0b15c3b518d53abe8d9437b42d71be768eec Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 14 Jul 2024 13:54:09 +0200 Subject: [PATCH 153/252] Update changelogs --- CHANGELOG.md | 2 ++ RELEASENOTES.md | 3 ++- tasmota/tasmota_xdsp_display/xdsp_17_universal.ino | 13 ++++++------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c9b3d2d2..aec0d2afe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,10 +25,12 @@ All notable changes to this project will be documented in this file. - ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695) - ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) - ESP32 platform update from 2024.06.11 to 2024.07.10 (#21745) +- ESP32 platform update from 2024.07.10 to 2024.07.11 (#21765) ### Fixed - Berry `bytes.resize()` for large sizes (#21716) - On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 (#21726) +- ESP32 I2S fixes (#21770) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 075953155..160da8eac 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -151,7 +151,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668) -- ESP32 platform update from 2024.05.13 to 2024.07.10 [#21745](https://github.com/arendst/Tasmota/issues/21745) +- ESP32 platform update from 2024.05.13 to 2024.07.11 [#21765](https://github.com/arendst/Tasmota/issues/21765) - ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.2 [#21694](https://github.com/arendst/Tasmota/issues/21694) - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 @@ -174,6 +174,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663) - Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660) - ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496) +- ESP32 I2S fixes [#21770](https://github.com/arendst/Tasmota/issues/21770) - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) - Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index b56bf6d47..625e4fa68 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -212,16 +212,16 @@ Renderer *Init_uDisplay(const char *desc) { if (cp) { // 9 params nr,cs,sclk,mosi,dc,bl,reset,miso,mhz // SPI,1,*,*,*,*,*,*,*,80 - // SPI,*,*,*,*,*,*,*,*,40 + // SPI,3,*,*,*,*,*,*,*,40 cp += 4; // 1,*,*,*,*,*,*,*,80 - uint32_t spi_type = 10; // SPI,3 = Software SPI - if (isdigit(*cp) && (*cp != '0')) { - spi_type = *cp - '1'; // SPI,1 = 0, SPI,2 = 1 + uint32_t spi_type = 2; // SPI,3 = Software SPI + if ((*cp == '1') || (*cp == '2')) { + spi_type = *cp - '1'; // SPI,1 = 0, SPI,2 = 1 etc } cp += 2; // *,*,*,*,*,*,*,80 - if (spi_type < 2) { + if (spi_type < 2) { // SPI,1 or SPI,2 replacepin(&cp, Pin(GPIO_SPI_CS, spi_type)); replacepin(&cp, Pin(GPIO_SPI_CLK, spi_type)); replacepin(&cp, Pin(GPIO_SPI_MOSI, spi_type)); @@ -229,8 +229,7 @@ Renderer *Init_uDisplay(const char *desc) { replacepin(&cp, Pin(GPIO_BACKLIGHT)); replacepin(&cp, Pin(GPIO_OLED_RESET)); replacepin(&cp, Pin(GPIO_SPI_MISO, spi_type)); - } else { - // Soft spi pins + } else { // SPI,3 is software SPI replacepin(&cp, Pin(GPIO_SSPI_CS)); replacepin(&cp, Pin(GPIO_SSPI_SCLK)); replacepin(&cp, Pin(GPIO_SSPI_MOSI)); From e9fdbea09103c5a459f65d65ec5f5994edb586b2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 14 Jul 2024 15:18:01 +0200 Subject: [PATCH 154/252] Unify display/touch init messages --- tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino | 2 +- .../xdsp_17_universal.ino | 20 +++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino b/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino index 213c7859f..c3ff07870 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino @@ -242,7 +242,7 @@ void utouch_Touch_Init() { char *name; utouch_found = renderer->utouch_Init(&name); if (utouch_found) { - AddLog(LOG_LEVEL_INFO, PSTR("UT : %s"), name); + AddLog(LOG_LEVEL_INFO, PSTR("UTI: %s initialized"), name); } } } diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index 625e4fa68..eb8d2073f 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -69,22 +69,18 @@ const char DSP_SAMPLE_DESC[] PROGMEM = DSP_ROM_DESC; #endif // DSP_ROM_DESC /*********************************************************************************************/ Renderer *Init_uDisplay(const char *desc) { - char *ddesc = 0; - char *fbuff; - uDisplay *udisp; - if (TasmotaGlobal.gpio_optiona.udisplay_driver || desc) { Settings->display_model = XDSP_17; - - fbuff = (char*)calloc(DISPDESC_SIZE, 1); + char *fbuff = (char*)calloc(DISPDESC_SIZE, 1); if (!fbuff) return 0; + char *ddesc = nullptr; if (desc) { memcpy_P(fbuff, desc, DISPDESC_SIZE - 1); ddesc = fbuff; - AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: const char descriptor used")); + AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: Const char descriptor used")); } #ifdef USE_UFILESYS @@ -131,7 +127,7 @@ Renderer *Init_uDisplay(const char *desc) { if (fbuff[cnt] == ' ') fbuff[cnt] = '\n'; } ddesc = fbuff; - AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: Rule 3 descriptor used")); + AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: Rule3 descriptor used")); } } @@ -147,7 +143,9 @@ Renderer *Init_uDisplay(const char *desc) { if (!ddesc) { AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: No valid descriptor found")); - if (fbuff) free(fbuff); + if (fbuff) { + free(fbuff); + } return 0; } @@ -343,7 +341,7 @@ Renderer *Init_uDisplay(const char *desc) { AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: reinit")); } - udisp = new uDisplay(ddesc); + uDisplay *udisp = new uDisplay(ddesc); // check for touch option TI1 or TI2 #if defined (USE_CST816S) || defined(USE_FT5206) || defined(USE_GT911) @@ -503,7 +501,7 @@ Renderer *Init_uDisplay(const char *desc) { #endif // SHOW_SPLASH udisp_init_done = true; - AddLog(LOG_LEVEL_INFO, PSTR("DSP: Configured display '%s'"), renderer->devname()); + AddLog(LOG_LEVEL_INFO, PSTR("DSP: %s initialized"), renderer->devname()); return renderer; } From 6673fb906bdc755eddbfc71d85e3eb9b9d11cd91 Mon Sep 17 00:00:00 2001 From: Christian Baars Date: Sun, 14 Jul 2024 21:00:24 +0200 Subject: [PATCH 155/252] prevent crash with unconfigured audio (#21775) --- tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino index f65d7c722..cd8dccd85 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino @@ -179,6 +179,10 @@ void (* const I2SAudio_Command[])(void) PROGMEM = { \*********************************************************************************************/ void CmndI2SConfig(void) { + if(!audio_i2s.Settings){ + ResponseCmndChar_P(PSTR("no valid settings")); + return; + } tI2SSettings * cfg = audio_i2s.Settings; // if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } From 69f1ea562799cedf57af21c4b8759706df53e31c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 16 Jul 2024 15:16:18 +0200 Subject: [PATCH 156/252] Move StateText fro MQTT to commands (#21782) --- tasmota/tasmota_support/support_command.ino | 20 +++++++++++++++++-- .../tasmota_xdrv_driver/xdrv_02_9_mqtt.ino | 20 ++----------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tasmota/tasmota_support/support_command.ino b/tasmota/tasmota_support/support_command.ino index b227ce596..593bfdac5 100644 --- a/tasmota/tasmota_support/support_command.ino +++ b/tasmota/tasmota_support/support_command.ino @@ -24,7 +24,7 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_RESTART "|" #ifndef FIRMWARE_MINIMAL_ONLY D_CMND_BACKLOG "|" D_CMND_DELAY "|" D_CMND_POWER "|" D_CMND_POWERLOCK "|" D_CMND_TIMEDPOWER "|" D_CMND_STATUS "|" D_CMND_STATE "|" D_CMND_SLEEP "|" - D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|" D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_SAVEDATA "|" + D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|" D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_STATETEXT "|" D_CMND_SAVEDATA "|" D_CMND_SO "|" D_CMND_SETOPTION "|" D_CMND_TEMPERATURE_RESOLUTION "|" D_CMND_HUMIDITY_RESOLUTION "|" D_CMND_PRESSURE_RESOLUTION "|" D_CMND_POWER_RESOLUTION "|" D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_FREQUENCY_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" D_CMND_WEIGHT_RESOLUTION "|" D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOREAD "|" D_CMND_GPIOS "|" D_CMND_TEMPLATE "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" @@ -64,7 +64,7 @@ void (* const TasmotaCommand[])(void) PROGMEM = { &CmndUpgrade, &CmndUpgrade, &CmndOtaUrl, &CmndSeriallog, &CmndRestart, #ifndef FIRMWARE_MINIMAL_ONLY &CmndBacklog, &CmndDelay, &CmndPower, &CmndPowerLock, &CmndTimedPower, &CmndStatus, &CmndState, &CmndSleep, - &CmndPowerOnState, &CmndPulsetime, &CmndBlinktime, &CmndBlinkcount, &CmndSavedata, + &CmndPowerOnState, &CmndPulsetime, &CmndBlinktime, &CmndBlinkcount, &CmndStateText, &CmndSavedata, &CmndSetoption, &CmndSetoption, &CmndTemperatureResolution, &CmndHumidityResolution, &CmndPressureResolution, &CmndPowerResolution, &CmndVoltageResolution, &CmndFrequencyResolution, &CmndCurrentResolution, &CmndEnergyResolution, &CmndWeightResolution, &CmndModule, &CmndModules, &CmndGpio, &CmndGpioRead, &CmndGpios, &CmndTemplate, &CmndPwm, &CmndPwmfrequency, &CmndPwmrange, @@ -1377,6 +1377,22 @@ void CmndBlinkcount(void) ResponseCmndNumber(Settings->blinkcount); } +void CmndStateText(void) { + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_STATE_TEXT)) { + if (!XdrvMailbox.usridx) { + ResponseCmndAll(SET_STATE_TXT1, MAX_STATE_TEXT); + } else { + if (XdrvMailbox.data_len > 0) { + for (uint32_t i = 0; i <= XdrvMailbox.data_len; i++) { + if (XdrvMailbox.data[i] == ' ') XdrvMailbox.data[i] = '_'; + } + SettingsUpdateText(SET_STATE_TXT1 + XdrvMailbox.index -1, XdrvMailbox.data); + } + ResponseCmndIdxChar(GetStateText(XdrvMailbox.index -1)); + } + } +} + void CmndSavedata(void) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 3600)) { diff --git a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino index 298c0719c..a9bbfef73 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino @@ -63,7 +63,7 @@ const char kMqttCommands[] PROGMEM = "|" // No prefix #ifdef USE_MQTT_FILE D_CMND_FILEUPLOAD "|" D_CMND_FILEDOWNLOAD "|" #endif // USE_MQTT_FILE - D_CMND_MQTTHOST "|" D_CMND_MQTTPORT "|" D_CMND_MQTTRETRY "|" D_CMND_STATETEXT "|" D_CMND_MQTTCLIENT "|" + D_CMND_MQTTHOST "|" D_CMND_MQTTPORT "|" D_CMND_MQTTRETRY "|" D_CMND_MQTTCLIENT "|" D_CMND_FULLTOPIC "|" D_CMND_PREFIX "|" D_CMND_GROUPTOPIC "|" D_CMND_TOPIC "|" D_CMND_PUBLISH "|" D_CMND_MQTTLOG "|" D_CMND_BUTTONTOPIC "|" D_CMND_SWITCHTOPIC "|" D_CMND_BUTTONRETAIN "|" D_CMND_SWITCHRETAIN "|" D_CMND_POWERRETAIN "|" D_CMND_SENSORRETAIN "|" D_CMND_INFORETAIN "|" D_CMND_STATERETAIN "|" D_CMND_STATUSRETAIN @@ -90,7 +90,7 @@ void (* const MqttCommand[])(void) PROGMEM = { #ifdef USE_MQTT_FILE &CmndFileUpload, &CmndFileDownload, #endif // USE_MQTT_FILE - &CmndMqttHost, &CmndMqttPort, &CmndMqttRetry, &CmndStateText, &CmndMqttClient, + &CmndMqttHost, &CmndMqttPort, &CmndMqttRetry, &CmndMqttClient, &CmndFullTopic, &CmndPrefix, &CmndGroupTopic, &CmndTopic, &CmndPublish, &CmndMqttlog, &CmndButtonTopic, &CmndSwitchTopic, &CmndButtonRetain, &CmndSwitchRetain, &CmndPowerRetain, &CmndSensorRetain, &CmndInfoRetain, &CmndStateRetain, &CmndStatusRetain @@ -1506,22 +1506,6 @@ void CmndMqttRetry(void) { ResponseCmndNumber(Settings->mqtt_retry); } -void CmndStateText(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_STATE_TEXT)) { - if (!XdrvMailbox.usridx) { - ResponseCmndAll(SET_STATE_TXT1, MAX_STATE_TEXT); - } else { - if (XdrvMailbox.data_len > 0) { - for (uint32_t i = 0; i <= XdrvMailbox.data_len; i++) { - if (XdrvMailbox.data[i] == ' ') XdrvMailbox.data[i] = '_'; - } - SettingsUpdateText(SET_STATE_TXT1 + XdrvMailbox.index -1, XdrvMailbox.data); - } - ResponseCmndIdxChar(GetStateText(XdrvMailbox.index -1)); - } - } -} - void CmndMqttClient(void) { if (!XdrvMailbox.grpflg && (XdrvMailbox.data_len > 0)) { SettingsUpdateText(SET_MQTT_CLIENT, (SC_DEFAULT == Shortcut()) ? PSTR(MQTT_CLIENT_ID) : XdrvMailbox.data); From 9c8f3826b26112d5935647b2087a6e2abc8d56c9 Mon Sep 17 00:00:00 2001 From: lmelette <153835148+lmelette@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:25:44 +0200 Subject: [PATCH 157/252] Added support for Wooliis LCD Coulometer/Battery Monitor (#21732) * Added support for Wooliis LCD Coulometer/Battery Monitor * Adjusted code structures and data types for Wooliis sensor --------- Co-authored-by: Luca Melette --- CODE_OWNERS.md | 1 + tasmota/berry/include/be_gpio_defines.h | 1 + tasmota/include/tasmota_template.h | 5 + tasmota/language/af_AF.h | 7 +- tasmota/language/bg_BG.h | 7 +- tasmota/language/ca_AD.h | 7 +- tasmota/language/cs_CZ.h | 7 +- tasmota/language/de_DE.h | 5 + tasmota/language/el_GR.h | 7 +- tasmota/language/en_GB.h | 7 +- tasmota/language/es_ES.h | 7 +- tasmota/language/fr_FR.h | 7 +- tasmota/language/fy_NL.h | 7 +- tasmota/language/he_HE.h | 7 +- tasmota/language/hu_HU.h | 7 +- tasmota/language/it_IT.h | 5 + tasmota/language/ko_KO.h | 7 +- tasmota/language/nl_NL.h | 7 +- tasmota/language/pl_PL.h | 7 +- tasmota/language/pt_BR.h | 7 +- tasmota/language/pt_PT.h | 7 +- tasmota/language/ro_RO.h | 7 +- tasmota/language/ru_RU.h | 7 +- tasmota/language/sk_SK.h | 7 +- tasmota/language/sv_SE.h | 7 +- tasmota/language/tr_TR.h | 7 +- tasmota/language/uk_UA.h | 7 +- tasmota/language/vi_VN.h | 7 +- tasmota/language/zh_CN.h | 7 +- tasmota/language/zh_TW.h | 7 +- tasmota/tasmota_support/support_features.ino | 4 +- .../tasmota_xsns_sensor/xsns_115_wooliis.ino | 228 ++++++++++++++++++ tools/decode-status.py | 2 +- tools/lv_gpio/lv_gpio_enum.h | 1 + 34 files changed, 400 insertions(+), 27 deletions(-) create mode 100644 tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino diff --git a/CODE_OWNERS.md b/CODE_OWNERS.md index 49fa17a4b..c6b33cdf6 100644 --- a/CODE_OWNERS.md +++ b/CODE_OWNERS.md @@ -229,6 +229,7 @@ In addition to @arendst the following code is mainly owned by: | xsns_112_ens210 | Christoph Friese | xsns_113_hc8 | Daniel Maier | xsns_114_amsx915 | Bastian Urschel +| xsns_115_wooliis | Luca Melette | | | xsns_127_esp32_sensors | @arendst | | diff --git a/tasmota/berry/include/be_gpio_defines.h b/tasmota/berry/include/be_gpio_defines.h index 61bd20c71..9b9880872 100644 --- a/tasmota/berry/include/be_gpio_defines.h +++ b/tasmota/berry/include/be_gpio_defines.h @@ -350,6 +350,7 @@ const be_const_member_t lv_gpio_constants[] = { { "WIEGAND_D0", (int32_t) GPIO_WIEGAND_D0 }, { "WIEGAND_D1", (int32_t) GPIO_WIEGAND_D1 }, { "WINDMETER_SPEED", (int32_t) GPIO_WINDMETER_SPEED }, + { "WOOLIIS_RX", (int32_t) GPIO_WOOLIIS_RX }, { "WS2812", (int32_t) GPIO_WS2812 }, { "XPT2046_CS", (int32_t) GPIO_XPT2046_CS }, { "ZEROCROSS", (int32_t) GPIO_ZEROCROSS }, diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index 0494b340b..d2ca22f66 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -221,6 +221,7 @@ enum UserSelectablePins { GPIO_RN2XX3_TX, GPIO_RN2XX3_RX, GPIO_RN2XX3_RST, // RN2XX3 LoRaWan node Serial interface GPIO_TCP_TX_EN, // TCP to serial bridge, EN pin GPIO_ASR650X_TX, GPIO_ASR650X_RX, // ASR650X LoRaWan node Serial interface + GPIO_WOOLIIS_RX, // Wooliis Battery capacity monitor Serial RX GPIO_SENSOR_END }; // Error as warning to rethink GPIO usage with max 2045 @@ -489,6 +490,7 @@ const char kSensorNames[] PROGMEM = D_GPIO_RN2XX3_TX "|" D_GPIO_RN2XX3_RX "|" D_GPIO_RN2XX3_RST "|" D_SENSOR_TCP_TXD_EN "|" D_GPIO_ASR650X_TX "|" D_GPIO_ASR650X_RX "|" + D_SENSOR_WOOLIIS_RX "|" ; const char kSensorNamesFixed[] PROGMEM = @@ -1095,6 +1097,9 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_ASR650X_TX), AGPIO(GPIO_ASR650X_RX), // ASR650X LoRaWan node Serial interface #endif +#ifdef USE_WOOLIIS // xsns_115_wooliis.ino + AGPIO(GPIO_WOOLIIS_RX), // Wooliis Battery capacity monitor Serial interface +#endif /*-------------------------------------------------------------------------------------------*\ * Other sensors diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 13cbdde3a..500f1f430 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_AF_AF_H_ diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 02d35c195..3856e5d88 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "А" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_BG_BG_H_ diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index 5bbe9ea11..31bcd6b7c 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_CA_AD_H_ diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index bc101d689..ba9d81016 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_CS_CZ_H_ diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 1843b1a35..8274d77b4 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -1000,6 +1000,7 @@ #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" #define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Aufladen" +#define D_CAPACITY "Kapazität" + #endif // _LANGUAGE_DE_DE_H_ diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index c28ddc011..226a46170 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_EL_GR_H_ diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 813e248b8..9a3fedc45 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1270,4 +1271,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_EN_GB_H_ diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 006b8d0a7..1a1bef25e 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Cargando" +#define D_CAPACITY "Capacidad" + #endif // _LANGUAGE_ES_ES_H_ diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index b92fe6aae..f0d757644 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units @@ -1270,4 +1271,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "En charge" +#define D_CAPACITY "Capacité" + #endif // _LANGUAGE_FR_FR_H_ diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index d705ee5f2..24c9e5d16 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_FY_NL_H_ diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index f5ed94f1e..a9575056b 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_HE_HE_H_ diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 40d7b48f8..cd88f5cb1 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -1002,7 +1002,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1272,4 +1273,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_HU_HU_H_ diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index ed2984e64..2a3ea03ef 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -1000,6 +1000,7 @@ #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 - RX" #define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis RX" // Units #define D_UNIT_AMPERE "A" @@ -1270,4 +1271,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar - TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar - RX" +// xsns_115_wooliis.ino +#define D_CHARGING "In carica" +#define D_CAPACITY "Capacità" + #endif // _LANGUAGE_IT_IT_H_ diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 007e10ca2..e1b0c4dff 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_KO_KO_H_ diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 3edb51c8f..ac0922c17 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_NL_NL_H_ diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index dc320c42f..15bce353a 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_PL_PL_D_H_ diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 20ec59a28..770c668c9 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_PT_BR_H_ diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 2d3495c3f..972e107e5 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_PT_PT_H_ diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index a8ac820a6..96c5fabda 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_RO_RO_H_ diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 35e1df314..5b803c344 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -1000,7 +1000,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "А" @@ -1270,4 +1271,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_RU_RU_H_ diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 2350fbd69..742906602 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_SK_SK_H_ diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index fb5115ca7..9c5583e23 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_SV_SE_H_ diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 4fa1121bc..23b50706d 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_TR_TR_H_ diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index ac248bf8e..50a17d552 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "А" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_UK_UA_H_ diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 5cdea438a..69d5e821e 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_VI_VN_H_ diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 6eaa9867a..b99a96c83 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "A" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_ZH_CN_H_ diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 1e047a89a..86ed3e233 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -999,7 +999,8 @@ #define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx" #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 RX" -#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_GPIO_MAGIC_SWITCH "MagicSwitch" +#define D_SENSOR_WOOLIIS_RX "Wooliis Rx" // Units #define D_UNIT_AMPERE "安培" @@ -1269,4 +1270,8 @@ #define D_SENSOR_PIPSOLAR_TX "Pipsolar TX" #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" +// xsns_115_wooliis.ino +#define D_CHARGING "Charging" +#define D_CAPACITY "Capacity" + #endif // _LANGUAGE_ZH_TW_H_ diff --git a/tasmota/tasmota_support/support_features.ino b/tasmota/tasmota_support/support_features.ino index fd5e2c5a8..be84d2617 100644 --- a/tasmota/tasmota_support/support_features.ino +++ b/tasmota/tasmota_support/support_features.ino @@ -922,7 +922,9 @@ constexpr uint32_t feature[] = { #if defined(USE_I2C) && defined(USE_QMP6988) 0x00000040 | // xsns_28_qmp6988.ino #endif -// 0x00000080 | // +#ifdef USE_WOOLIIS + 0x00000080 | // xsns_115_wooliis.ino +#endif // 0x00000100 | // // 0x00000200 | // // 0x00000400 | // diff --git a/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino b/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino new file mode 100644 index 000000000..2d6444be8 --- /dev/null +++ b/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino @@ -0,0 +1,228 @@ +/* + xsns_115_wooliis.ino - Wooliis Hall Effect Coulometer (Battery capacity monitor) support for Tasmota + + Copyright (C) 2024 Luca Melette + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_WOOLIIS +/*********************************************************************************************\ + * Wooliis Hall Effect Coulometer (Battery capacity monitor) with LCD + * Model variants: WLS-PVA050 WLS-PVA100 WLS-PVA200 WLS-PVA400 (current ratings 50A, 100A, 200A, 400A) + * Similar models: WLS-MVAxxx, WLS-TVAxxx, WLS-HVAxxx (not investigated) + * + * Manufacturer links: + * (Chinese) http://www.wooliis.com/products_view.aspx?ID=75 + * (English) http://www.wooliis.com/Enproducts_view.aspx?ID=75 + * + * Alternative branding: Drok (Ebay), AiLi (Amazon) + * + * Inside the case, on the PCB, there is an active serial port with labels Gnd/TX/RX/Vcc. + * In some product variants, it might be connected to a Bluetooth module for remote operation. + * On the TX pin, meter readings are sent out every 5 secs using 9600 8N1 + * + * Values in binary messages can be mapped as follows: + * + * magic % Ah V A Wh_in Wh_out status ck + * b55b0101 64 03e8 0088 001d 00032b 0002b6 0000a8 6b + * + * And decoded as: + * - Charge = 100 % + * - Remaining capacity = 100 Ah + * - Voltage = 13.6V + * - Current = 2.9 A + * - Energy IN = 81.1 Wh + * - Energy OUT = 69.4 Wh + * - Status = charging + * + * Hardware Serial will be selected if GPIO3 = [Wooliis RX] +\*********************************************************************************************/ + +#define D_WOOLIIS "Wooliis" + +#define XSNS_115 115 + +#define D_IMPORT "Import" +#define D_EXPORT "Export" +#define D_JSON_CAPACITY "Capacity" +#define D_JSON_CHARGING "Charging" + +#include + +TasmotaSerial *WooliisSerial = nullptr; + +typedef struct wooliis_data_t { + float remaining_capacity; + float voltage; + float current; + float energy_in; + float energy_out; + uint8_t status; + uint8_t valid = 0; + uint8_t ready = 0; + uint8_t charge_percent; +} wooliis_data_t; + +wooliis_data_t *Wooliis = nullptr; + +/*********************************************************************************************/ + +void WooliisReadData() // process the data sent by Wooliis battery capacity monitors +{ + while (WooliisSerial->available() && WooliisSerial->peek() != 0xb5) { + WooliisSerial->read(); + } + if (WooliisSerial->available() < 21) { + return; + } + uint8_t buffer[21]; + WooliisSerial->readBytes(buffer, 21); + if (buffer[0] != 0xb5 && buffer[1] != 0x5b && buffer[2] == 0x01 && buffer[3] == 0x01) { + AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: Flushing serial")); + WooliisSerial->flush(); // Out of sync or wrong sensor connected + AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, 21); + return; + } + + uint8_t checksum = 0; + for (uint32_t i = 0; i < 20; i++) { + checksum += buffer[i]; + } + checksum = 255 - checksum; + if (checksum != buffer[20]) { + AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: " D_CHECKSUM_FAILURE)); + return; + } + + AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: message received correctly!")); + AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, 21); + + Wooliis->charge_percent = buffer[4]; + Wooliis->remaining_capacity = 0.1f * ((uint16_t)buffer[5]<<8 | buffer[6]); + Wooliis->voltage = 0.1f * ((uint16_t)buffer[7]<<8 | buffer[8]); + Wooliis->current = (buffer[19] ? -0.1f : 0.1f) * ((uint16_t)buffer[9]<<8 | buffer[10]); + Wooliis->energy_in = 0.1f * ((uint32_t)buffer[11]<<16 | (uint16_t)buffer[12]<<8 | buffer[13]); + Wooliis->energy_out = 0.1f * ((uint32_t)buffer[14]<<16 | (uint16_t)buffer[15]<<8 | buffer[16]); + Wooliis->status = buffer[19]; + + Wooliis->valid = 1; + + return; +} + +/*********************************************************************************************/ + +void WooliisSecond(void) // Every second +{ + if (Wooliis->ready) + WooliisReadData(); +} + +/*********************************************************************************************/ + +void WooliisInit(void) { + if (PinUsed(GPIO_WOOLIIS_RX)) { + WooliisSerial = new TasmotaSerial(Pin(GPIO_WOOLIIS_RX), -1, 1); + if (WooliisSerial->begin(9600)) { + if (WooliisSerial->hardwareSerial()) { ClaimSerial(); } + WooliisSerial->flush(); // Clear serial buffer + Wooliis = (wooliis_data_t*)calloc(sizeof(wooliis_data_t), 1); + if (nullptr == Wooliis) { return; } + Wooliis->ready = 1; + AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: Serial ready")); + } + } +} + +#ifdef USE_WEBSERVER +const char HTTP_SNS_WOOLIIS_BCP[] = "{s}%s " D_BATTERY_CHARGE "{m}%d " D_UNIT_PERCENT "{e}"; +const char HTTP_SNS_WOOLIIS_CAP[] = "{s}%s " D_CAPACITY "{m}%*_f " D_UNIT_CHARGE "{e}"; +const char HTTP_SNS_WOOLIIS_CHG[] = "{s}%s " D_CHARGING "{m}%s{e}"; +const char HTTP_SNS_WOOLIIS_VOL[] = "{s}%s " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}"; +const char HTTP_SNS_WOOLIIS_CUR[] = "{s}%s " D_CURRENT "{m}%*_f " D_UNIT_AMPERE "{e}"; +const char HTTP_SNS_WOOLIIS_POW[] = "{s}%s " D_POWERUSAGE "{m}%*_f " D_UNIT_WATT "{e}"; +const char HTTP_SNS_WOOLIIS_IMP[] = "{s}%s " D_IMPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}"; +const char HTTP_SNS_WOOLIIS_EXP[] = "{s}%s " D_EXPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}"; +#endif // USE_WEBSERVER + +void WooliisShow(bool json) { + if (Wooliis->valid) { + float power = Wooliis->voltage*Wooliis->current; + if (json) { + ResponseAppend_P(PSTR(",\"%s\":{"), D_WOOLIIS); + ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_CAPACITY, Settings->flag2.energy_resolution, &Wooliis->remaining_capacity); + ResponseAppend_P(PSTR("\"%s\":%d,"), D_JSON_CHARGING, (Wooliis->status ? 1 : 0)); + ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_VOLTAGE, Settings->flag2.voltage_resolution, &Wooliis->voltage); + ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_CURRENT, Settings->flag2.current_resolution, &Wooliis->current); + ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_POWERUSAGE, Settings->flag2.wattage_resolution, &power); + ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_IMPORT, Settings->flag2.energy_resolution, &Wooliis->energy_in); + ResponseAppend_P(PSTR("\"%s\":%*_f"), D_JSON_EXPORT, Settings->flag2.energy_resolution, &Wooliis->energy_out); + ResponseJsonEnd(); +#ifdef USE_DOMOTICZ + if (0 == TasmotaGlobal.tele_period) { + char pe[16]; + snprintf_P(pe, sizeof(pe), PSTR("%d;%d"), Wooliis->voltage*Wooliis->current, Wooliis->energy_out); + DomoticzSensor(DZ_COUNT, Wooliis->charge_percent); + DomoticzSensor(DZ_VOLTAGE, Wooliis->voltage); + DomoticzSensor(DZ_CURRENT, Wooliis->current); + DomoticzSensor(DZ_POWER_ENERGY, pe); + } +#endif // USE_DOMOTICZ + } // if json +#ifdef USE_WEBSERVER + else { + WSContentSend_PD(HTTP_SNS_WOOLIIS_BCP, D_BATTERY, Wooliis->charge_percent); + WSContentSend_PD(HTTP_SNS_WOOLIIS_CAP, D_BATTERY, Settings->flag2.energy_resolution, &Wooliis->remaining_capacity); + WSContentSend_PD(HTTP_SNS_WOOLIIS_CHG, D_BATTERY, (Wooliis->status ? D_TRUE : D_FALSE)); + WSContentSend_PD(HTTP_SNS_WOOLIIS_VOL, D_BATTERY, Settings->flag2.voltage_resolution, &Wooliis->voltage); + WSContentSend_PD(HTTP_SNS_WOOLIIS_CUR, D_BATTERY, Settings->flag2.current_resolution, &Wooliis->current); + WSContentSend_PD(HTTP_SNS_WOOLIIS_POW, D_BATTERY, Settings->flag2.wattage_resolution, &power); + WSContentSend_PD(HTTP_SNS_WOOLIIS_IMP, D_BATTERY, Settings->flag2.energy_resolution, &Wooliis->energy_in); + WSContentSend_PD(HTTP_SNS_WOOLIIS_EXP, D_BATTERY, Settings->flag2.energy_resolution, &Wooliis->energy_out); + } +#endif // USE_WEBSERVER + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns115(uint32_t function) +{ + bool result = false; + + if (FUNC_INIT == function) { + WooliisInit(); + } + else if (Wooliis) { + switch (function) { + case FUNC_EVERY_SECOND: + WooliisSecond(); + break; + case FUNC_JSON_APPEND: + WooliisShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + WooliisShow(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_WOOLIIS diff --git a/tools/decode-status.py b/tools/decode-status.py index 7147268e6..0f55bfbe3 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -305,7 +305,7 @@ a_features = [[ "USE_HC8","USE_HDMI_CEC","USE_BLE_ESP32","USE_MATTER_DEVICE" ],[ "USE_MAGIC_SWITCH","USE_PIPSOLAR","USE_GPIO_VIEWER","USE_AMSX915", - "USE_SPI_LORA","USE_SPL06_007","USE_QMP6988","", + "USE_SPI_LORA","USE_SPL06_007","USE_QMP6988","USE_WOOLIIS", "","","","", "","","","", "","","","", diff --git a/tools/lv_gpio/lv_gpio_enum.h b/tools/lv_gpio/lv_gpio_enum.h index ba2c64497..ad7df0fb7 100644 --- a/tools/lv_gpio/lv_gpio_enum.h +++ b/tools/lv_gpio/lv_gpio_enum.h @@ -365,5 +365,6 @@ RN2XX3_TX = GPIO_RN2XX3_TX RN2XX3_RX = GPIO_RN2XX3_RX RN2XX3_RST = GPIO_RN2XX3_RST +WOOLIIS_RX = GPIO_WOOLIIS_RX SENSOR_END = GPIO_SENSOR_END From 85bff67d9bef321ecff0d0a5f8525d2def7eb354 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 17 Jul 2024 14:14:44 +0200 Subject: [PATCH 158/252] Add support for Wooliis Hall Effect Coulometer or Battery capacity monitor (#21732) --- BUILDS.md | 1 + CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/include/i18n.h | 2 + tasmota/language/af_AF.h | 2 + tasmota/language/bg_BG.h | 2 + tasmota/language/ca_AD.h | 2 + tasmota/language/cs_CZ.h | 2 + tasmota/language/de_DE.h | 2 + tasmota/language/el_GR.h | 2 + tasmota/language/en_GB.h | 2 + tasmota/language/es_ES.h | 2 + tasmota/language/fr_FR.h | 2 + tasmota/language/fy_NL.h | 2 + tasmota/language/he_HE.h | 2 + tasmota/language/hu_HU.h | 2 + tasmota/language/it_IT.h | 2 + tasmota/language/ko_KO.h | 2 + tasmota/language/nl_NL.h | 2 + tasmota/language/pl_PL.h | 2 + tasmota/language/pt_BR.h | 2 + tasmota/language/pt_PT.h | 2 + tasmota/language/ro_RO.h | 2 + tasmota/language/ru_RU.h | 2 + tasmota/language/sk_SK.h | 2 + tasmota/language/sv_SE.h | 2 + tasmota/language/tr_TR.h | 2 + tasmota/language/uk_UA.h | 2 + tasmota/language/vi_VN.h | 2 + tasmota/language/zh_CN.h | 2 + tasmota/language/zh_TW.h | 2 + tasmota/my_user_config.h | 1 + .../tasmota_xsns_sensor/xsns_115_wooliis.ino | 78 +++++++------------ 33 files changed, 90 insertions(+), 48 deletions(-) diff --git a/BUILDS.md b/BUILDS.md index bd2b96049..db4a723ca 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -230,6 +230,7 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the | USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro | | USE_HC8 | - | - / - | - | - | - | - | | USE_PIPSOLAR | - | - / - | - | - | - | - | +| USE_WOOLIIS | - | - / - | - | - | - | - | | | | | | | | | | USE_NRF24 | - | - / - | - | - | - | - | | USE_MIBLE | - | - / - | - | - | - | - | diff --git a/CHANGELOG.md b/CHANGELOG.md index aec0d2afe..26c90e478 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. - Berry cam module and img class (#21743) - Skip MQTT response if command is prefixed with underscore (#21740) - Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` (#21740) +- Support for Wooliis Hall Effect Coulometer or Battery capacity monitor (#21732) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 160da8eac..19f868fd9 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -124,6 +124,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Support for QMP6988 temperature and pressure sensor - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) +- Support for Wooliis Hall Effect Coulometer or Battery capacity monitor [#21732](https://github.com/arendst/Tasmota/issues/21732) - Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740) - Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) diff --git a/tasmota/include/i18n.h b/tasmota/include/i18n.h index d0ed3e128..08f3628ce 100644 --- a/tasmota/include/i18n.h +++ b/tasmota/include/i18n.h @@ -46,7 +46,9 @@ #define D_JSON_BSSID "BSSId" #define D_JSON_BUTTON "Button" #define D_JSON_BUILDDATETIME "BuildDateTime" +#define D_JSON_CAPACITY "Capacity" #define D_JSON_CHANNEL "Channel" +#define D_JSON_CHARGING "Charging" #define D_JSON_CO2 "CarbonDioxide" #define D_JSON_CODINGRATE4 "CodingRate4" #define D_JSON_COMMAND "Command" diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 500f1f430..9418defc2 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 3856e5d88..d417e5277 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index 31bcd6b7c..884ec2801 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index ba9d81016..f37b34d11 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 8274d77b4..376b76d11 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Aufladen" #define D_CAPACITY "Kapazität" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 226a46170..e1acea42e 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 9a3fedc45..5cee6cabb 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -1272,6 +1272,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 1a1bef25e..d6e684e6f 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Cargando" #define D_CAPACITY "Capacidad" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index f0d757644..0cb251777 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -1272,6 +1272,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "En charge" #define D_CAPACITY "Capacité" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 24c9e5d16..895aa3c2e 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index a9575056b..08dc58b3b 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index cd88f5cb1..fb80a10dd 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -1274,6 +1274,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 2a3ea03ef..7d99745ad 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -1272,6 +1272,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar - RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "In carica" #define D_CAPACITY "Capacità" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index e1b0c4dff..3df859d14 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index ac0922c17..16e6019e4 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 15bce353a..43778efe0 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 770c668c9..77575b807 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 972e107e5..875c2f0ca 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 96c5fabda..bc9193511 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 5b803c344..348b1ae93 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -1272,6 +1272,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 742906602..22614f5d7 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 9c5583e23..84ef0df3b 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 23b50706d..d3e74b550 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 50a17d552..07c836441 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 69d5e821e..56847d382 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index b99a96c83..7cc247d77 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 86ed3e233..340b18f1b 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -1271,6 +1271,8 @@ #define D_SENSOR_PIPSOLAR_RX "Pipsolar RX" // xsns_115_wooliis.ino +#define D_IMPORT "Import" +#define D_EXPORT "Export" #define D_CHARGING "Charging" #define D_CAPACITY "Capacity" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 60efbee49..9a825f403 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -882,6 +882,7 @@ //#define USE_GM861 // Add support for GM861 1D and 2D Bar Code Reader (+1k3 code) // #define GM861_DECODE_AIM // Decode AIM-id (+0k3 code) // #define GM861_HEARTBEAT // Enable heartbeat (+0k2 code) +//#define USE_WOOLIIS // Add support for Wooliis Hall Effect Coulometer or Battery capacity monitor (+1k6 code) // -- Power monitoring sensors -------------------- #define USE_ENERGY_SENSOR // Add support for Energy Monitors (+14k code) diff --git a/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino b/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino index 2d6444be8..a3890d177 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino @@ -37,6 +37,7 @@ * * magic % Ah V A Wh_in Wh_out status ck * b55b0101 64 03e8 0088 001d 00032b 0002b6 0000a8 6b + * 0 1 2 3 4 5 6 7 8 910 111213 141516 171819 20 * * And decoded as: * - Charge = 100 % @@ -50,14 +51,9 @@ * Hardware Serial will be selected if GPIO3 = [Wooliis RX] \*********************************************************************************************/ -#define D_WOOLIIS "Wooliis" - #define XSNS_115 115 -#define D_IMPORT "Import" -#define D_EXPORT "Export" -#define D_JSON_CAPACITY "Capacity" -#define D_JSON_CHARGING "Charging" +#define D_WOOLIIS "Wooliis" #include @@ -71,7 +67,6 @@ typedef struct wooliis_data_t { float energy_out; uint8_t status; uint8_t valid = 0; - uint8_t ready = 0; uint8_t charge_percent; } wooliis_data_t; @@ -79,7 +74,7 @@ wooliis_data_t *Wooliis = nullptr; /*********************************************************************************************/ -void WooliisReadData() // process the data sent by Wooliis battery capacity monitors +void WooliisReadData() // process the data sent by Wooliis battery capacity monitors every second { while (WooliisSerial->available() && WooliisSerial->peek() != 0xb5) { WooliisSerial->read(); @@ -90,9 +85,8 @@ void WooliisReadData() // process the data sent by Wooliis battery capacity moni uint8_t buffer[21]; WooliisSerial->readBytes(buffer, 21); if (buffer[0] != 0xb5 && buffer[1] != 0x5b && buffer[2] == 0x01 && buffer[3] == 0x01) { - AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: Flushing serial")); + AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: Flush %21_H"), buffer); WooliisSerial->flush(); // Out of sync or wrong sensor connected - AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, 21); return; } @@ -106,8 +100,7 @@ void WooliisReadData() // process the data sent by Wooliis battery capacity moni return; } - AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: message received correctly!")); - AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, 21); + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("WLS: Rcvd %21_H"), buffer); Wooliis->charge_percent = buffer[4]; Wooliis->remaining_capacity = 0.1f * ((uint16_t)buffer[5]<<8 | buffer[6]); @@ -118,16 +111,6 @@ void WooliisReadData() // process the data sent by Wooliis battery capacity moni Wooliis->status = buffer[19]; Wooliis->valid = 1; - - return; -} - -/*********************************************************************************************/ - -void WooliisSecond(void) // Every second -{ - if (Wooliis->ready) - WooliisReadData(); } /*********************************************************************************************/ @@ -140,35 +123,34 @@ void WooliisInit(void) { WooliisSerial->flush(); // Clear serial buffer Wooliis = (wooliis_data_t*)calloc(sizeof(wooliis_data_t), 1); if (nullptr == Wooliis) { return; } - Wooliis->ready = 1; AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: Serial ready")); } } } #ifdef USE_WEBSERVER -const char HTTP_SNS_WOOLIIS_BCP[] = "{s}%s " D_BATTERY_CHARGE "{m}%d " D_UNIT_PERCENT "{e}"; -const char HTTP_SNS_WOOLIIS_CAP[] = "{s}%s " D_CAPACITY "{m}%*_f " D_UNIT_CHARGE "{e}"; -const char HTTP_SNS_WOOLIIS_CHG[] = "{s}%s " D_CHARGING "{m}%s{e}"; -const char HTTP_SNS_WOOLIIS_VOL[] = "{s}%s " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}"; -const char HTTP_SNS_WOOLIIS_CUR[] = "{s}%s " D_CURRENT "{m}%*_f " D_UNIT_AMPERE "{e}"; -const char HTTP_SNS_WOOLIIS_POW[] = "{s}%s " D_POWERUSAGE "{m}%*_f " D_UNIT_WATT "{e}"; -const char HTTP_SNS_WOOLIIS_IMP[] = "{s}%s " D_IMPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}"; -const char HTTP_SNS_WOOLIIS_EXP[] = "{s}%s " D_EXPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}"; +const char HTTP_SNS_WOOLIIS_BCP[] = "{s}" D_BATTERY " " D_BATTERY_CHARGE "{m}%d " D_UNIT_PERCENT "{e}"; +const char HTTP_SNS_WOOLIIS_CAP[] = "{s}" D_BATTERY " " D_CAPACITY "{m}%*_f " D_UNIT_CHARGE "{e}"; +const char HTTP_SNS_WOOLIIS_CHG[] = "{s}" D_BATTERY " " D_CHARGING "{m}%s{e}"; +const char HTTP_SNS_WOOLIIS_VOL[] = "{s}" D_BATTERY " " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}"; +const char HTTP_SNS_WOOLIIS_CUR[] = "{s}" D_BATTERY " " D_CURRENT "{m}%*_f " D_UNIT_AMPERE "{e}"; +const char HTTP_SNS_WOOLIIS_POW[] = "{s}" D_BATTERY " " D_POWERUSAGE "{m}%*_f " D_UNIT_WATT "{e}"; +const char HTTP_SNS_WOOLIIS_IMP[] = "{s}" D_BATTERY " " D_IMPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}"; +const char HTTP_SNS_WOOLIIS_EXP[] = "{s}" D_BATTERY " " D_EXPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}"; #endif // USE_WEBSERVER void WooliisShow(bool json) { if (Wooliis->valid) { float power = Wooliis->voltage*Wooliis->current; if (json) { - ResponseAppend_P(PSTR(",\"%s\":{"), D_WOOLIIS); - ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_CAPACITY, Settings->flag2.energy_resolution, &Wooliis->remaining_capacity); - ResponseAppend_P(PSTR("\"%s\":%d,"), D_JSON_CHARGING, (Wooliis->status ? 1 : 0)); - ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_VOLTAGE, Settings->flag2.voltage_resolution, &Wooliis->voltage); - ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_CURRENT, Settings->flag2.current_resolution, &Wooliis->current); - ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_POWERUSAGE, Settings->flag2.wattage_resolution, &power); - ResponseAppend_P(PSTR("\"%s\":%*_f,"), D_JSON_IMPORT, Settings->flag2.energy_resolution, &Wooliis->energy_in); - ResponseAppend_P(PSTR("\"%s\":%*_f"), D_JSON_EXPORT, Settings->flag2.energy_resolution, &Wooliis->energy_out); + ResponseAppend_P(PSTR(",\"" D_WOOLIIS "\":{")); + ResponseAppend_P(PSTR("\"" D_JSON_CAPACITY "\":%*_f,"), Settings->flag2.energy_resolution, &Wooliis->remaining_capacity); + ResponseAppend_P(PSTR("\"" D_JSON_CHARGING "\":%d,"), (Wooliis->status ? 1 : 0)); + ResponseAppend_P(PSTR("\"" D_JSON_VOLTAGE "\":%*_f,"), Settings->flag2.voltage_resolution, &Wooliis->voltage); + ResponseAppend_P(PSTR("\"" D_JSON_CURRENT "\":%*_f,"), Settings->flag2.current_resolution, &Wooliis->current); + ResponseAppend_P(PSTR("\"" D_JSON_POWERUSAGE "\":%*_f,"), Settings->flag2.wattage_resolution, &power); + ResponseAppend_P(PSTR("\"" D_JSON_IMPORT "\":%*_f,"), Settings->flag2.energy_resolution, &Wooliis->energy_in); + ResponseAppend_P(PSTR("\"" D_JSON_EXPORT "\":%*_f"), Settings->flag2.energy_resolution, &Wooliis->energy_out); ResponseJsonEnd(); #ifdef USE_DOMOTICZ if (0 == TasmotaGlobal.tele_period) { @@ -183,14 +165,14 @@ void WooliisShow(bool json) { } // if json #ifdef USE_WEBSERVER else { - WSContentSend_PD(HTTP_SNS_WOOLIIS_BCP, D_BATTERY, Wooliis->charge_percent); - WSContentSend_PD(HTTP_SNS_WOOLIIS_CAP, D_BATTERY, Settings->flag2.energy_resolution, &Wooliis->remaining_capacity); - WSContentSend_PD(HTTP_SNS_WOOLIIS_CHG, D_BATTERY, (Wooliis->status ? D_TRUE : D_FALSE)); - WSContentSend_PD(HTTP_SNS_WOOLIIS_VOL, D_BATTERY, Settings->flag2.voltage_resolution, &Wooliis->voltage); - WSContentSend_PD(HTTP_SNS_WOOLIIS_CUR, D_BATTERY, Settings->flag2.current_resolution, &Wooliis->current); - WSContentSend_PD(HTTP_SNS_WOOLIIS_POW, D_BATTERY, Settings->flag2.wattage_resolution, &power); - WSContentSend_PD(HTTP_SNS_WOOLIIS_IMP, D_BATTERY, Settings->flag2.energy_resolution, &Wooliis->energy_in); - WSContentSend_PD(HTTP_SNS_WOOLIIS_EXP, D_BATTERY, Settings->flag2.energy_resolution, &Wooliis->energy_out); + WSContentSend_PD(HTTP_SNS_WOOLIIS_BCP, Wooliis->charge_percent); + WSContentSend_PD(HTTP_SNS_WOOLIIS_CAP, Settings->flag2.energy_resolution, &Wooliis->remaining_capacity); + WSContentSend_PD(HTTP_SNS_WOOLIIS_CHG, (Wooliis->status ? D_TRUE : D_FALSE)); + WSContentSend_PD(HTTP_SNS_WOOLIIS_VOL, Settings->flag2.voltage_resolution, &Wooliis->voltage); + WSContentSend_PD(HTTP_SNS_WOOLIIS_CUR, Settings->flag2.current_resolution, &Wooliis->current); + WSContentSend_PD(HTTP_SNS_WOOLIIS_POW, Settings->flag2.wattage_resolution, &power); + WSContentSend_PD(HTTP_SNS_WOOLIIS_IMP, Settings->flag2.energy_resolution, &Wooliis->energy_in); + WSContentSend_PD(HTTP_SNS_WOOLIIS_EXP, Settings->flag2.energy_resolution, &Wooliis->energy_out); } #endif // USE_WEBSERVER } @@ -210,7 +192,7 @@ bool Xsns115(uint32_t function) else if (Wooliis) { switch (function) { case FUNC_EVERY_SECOND: - WooliisSecond(); + WooliisReadData(); break; case FUNC_JSON_APPEND: WooliisShow(1); From b23a2f2304922bd7ebd357373d8dd282ff5047eb Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 17 Jul 2024 14:28:50 +0200 Subject: [PATCH 159/252] Bump GPIOViewer version to v1.5.5 --- tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino b/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino index 0cce3bbf3..c806d94fe 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino @@ -30,6 +30,9 @@ * GvUrl 1 - Select default url (GV_BASE_URL) * GvUrl https://thelastoutpostworkshop.github.io/microcontroller_devkit/gpio_viewer_1_5/ * + * Note 20240717 + * - GVRelease 1.5.5 + * * Note 20240602 * - GVRelease 1.5.4 * @@ -65,7 +68,7 @@ #define GV_KEEP_ALIVE 1000 // milliseconds - If no activity after this do a heap size event anyway -const char *GVRelease = "1.5.4"; +const char *GVRelease = "1.5.5"; /*********************************************************************************************/ From 98a5bc95a971b24acf9931ab230c036336e02b48 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 17 Jul 2024 16:20:28 +0200 Subject: [PATCH 160/252] Fix universal display slow response --- .../xdsp_17_universal.ino | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index eb8d2073f..a8cfdccfc 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -533,31 +533,40 @@ int8_t replacepin(char **cp, int16_t pin) { return res; } +/*********************************************************************************************/ + #ifdef USE_DISPLAY_MODES1TO5 void UDISP_PrintLog(void) { - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings->display_refresh; - if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); } + // This can take over 3 seconds depending on renderer->Updateframe() speed + // due to not connected busy pin (configure as MISO) + static bool printlog_mutex = false; - char* txt = DisplayLogBuffer('\370'); - if (txt != nullptr) { - uint8_t last_row = Settings->display_rows -1; + if (disp_refresh) { disp_refresh--; } + if (disp_refresh || printlog_mutex || TasmotaGlobal.restart_flag || TasmotaGlobal.ota_state_flag) { + return; + } + printlog_mutex = true; + disp_refresh = Settings->display_refresh; + if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); } + + char* txt = DisplayLogBuffer('\370'); + if (txt != nullptr) { + uint8_t last_row = Settings->display_rows -1; // renderer->clearDisplay(); - renderer->setTextSize(Settings->display_size); - renderer->setCursor(0,0); - for (byte i = 0; i < last_row; i++) { - strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols); - renderer->println(disp_screen_buffer[i]); - } - strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); - DisplayFillScreen(last_row); - renderer->println(disp_screen_buffer[last_row]); - renderer->Updateframe(); + renderer->setTextSize(Settings->display_size); + renderer->setCursor(0,0); + for (byte i = 0; i < last_row; i++) { + strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols); + renderer->println(disp_screen_buffer[i]); } + strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); + DisplayFillScreen(last_row); + renderer->println(disp_screen_buffer[last_row]); + renderer->Updateframe(); } + printlog_mutex = false; } void UDISP_Time(void) { From a448f538aaf3d2c25711b8100f03320892ca77c9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 17 Jul 2024 16:22:34 +0200 Subject: [PATCH 161/252] Revert "Fix universal display slow response" This reverts commit 98a5bc95a971b24acf9931ab230c036336e02b48. --- .../xdsp_17_universal.ino | 43 ++++++++----------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index a8cfdccfc..eb8d2073f 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -533,40 +533,31 @@ int8_t replacepin(char **cp, int16_t pin) { return res; } -/*********************************************************************************************/ - #ifdef USE_DISPLAY_MODES1TO5 void UDISP_PrintLog(void) { - // This can take over 3 seconds depending on renderer->Updateframe() speed - // due to not connected busy pin (configure as MISO) - static bool printlog_mutex = false; + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings->display_refresh; + if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); } - if (disp_refresh) { disp_refresh--; } - if (disp_refresh || printlog_mutex || TasmotaGlobal.restart_flag || TasmotaGlobal.ota_state_flag) { - return; - } - printlog_mutex = true; - disp_refresh = Settings->display_refresh; - if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); } - - char* txt = DisplayLogBuffer('\370'); - if (txt != nullptr) { - uint8_t last_row = Settings->display_rows -1; + char* txt = DisplayLogBuffer('\370'); + if (txt != nullptr) { + uint8_t last_row = Settings->display_rows -1; // renderer->clearDisplay(); - renderer->setTextSize(Settings->display_size); - renderer->setCursor(0,0); - for (byte i = 0; i < last_row; i++) { - strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols); - renderer->println(disp_screen_buffer[i]); + renderer->setTextSize(Settings->display_size); + renderer->setCursor(0,0); + for (byte i = 0; i < last_row; i++) { + strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols); + renderer->println(disp_screen_buffer[i]); + } + strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); + DisplayFillScreen(last_row); + renderer->println(disp_screen_buffer[last_row]); + renderer->Updateframe(); } - strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); - DisplayFillScreen(last_row); - renderer->println(disp_screen_buffer[last_row]); - renderer->Updateframe(); } - printlog_mutex = false; } void UDISP_Time(void) { From 105d18b9b6d6adfde0c28d1e19542d5b8a70f9d1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 17 Jul 2024 17:13:24 +0200 Subject: [PATCH 162/252] Fix universal display slow response --- .../xdsp_17_universal.ino | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index eb8d2073f..a8cfdccfc 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -533,31 +533,40 @@ int8_t replacepin(char **cp, int16_t pin) { return res; } +/*********************************************************************************************/ + #ifdef USE_DISPLAY_MODES1TO5 void UDISP_PrintLog(void) { - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings->display_refresh; - if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); } + // This can take over 3 seconds depending on renderer->Updateframe() speed + // due to not connected busy pin (configure as MISO) + static bool printlog_mutex = false; - char* txt = DisplayLogBuffer('\370'); - if (txt != nullptr) { - uint8_t last_row = Settings->display_rows -1; + if (disp_refresh) { disp_refresh--; } + if (disp_refresh || printlog_mutex || TasmotaGlobal.restart_flag || TasmotaGlobal.ota_state_flag) { + return; + } + printlog_mutex = true; + disp_refresh = Settings->display_refresh; + if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); } + + char* txt = DisplayLogBuffer('\370'); + if (txt != nullptr) { + uint8_t last_row = Settings->display_rows -1; // renderer->clearDisplay(); - renderer->setTextSize(Settings->display_size); - renderer->setCursor(0,0); - for (byte i = 0; i < last_row; i++) { - strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols); - renderer->println(disp_screen_buffer[i]); - } - strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); - DisplayFillScreen(last_row); - renderer->println(disp_screen_buffer[last_row]); - renderer->Updateframe(); + renderer->setTextSize(Settings->display_size); + renderer->setCursor(0,0); + for (byte i = 0; i < last_row; i++) { + strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols); + renderer->println(disp_screen_buffer[i]); } + strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); + DisplayFillScreen(last_row); + renderer->println(disp_screen_buffer[last_row]); + renderer->Updateframe(); } + printlog_mutex = false; } void UDISP_Time(void) { From a0893c9aae75751a055442f91c26a47a6fced597 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 17 Jul 2024 17:52:30 +0200 Subject: [PATCH 163/252] Add EPD update frame (#21788) --- tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino b/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino index ab16b8b4f..622b06d00 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino @@ -88,6 +88,7 @@ void lv_flush_callback(lv_display_t *disp, const lv_area_t *area, uint8_t *color renderer->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); renderer->pushColors((uint16_t *)color_p, pixels_len, true); renderer->setAddrWindow(0,0,0,0); + renderer->Updateframe(); uint32_t chrono_time = millis() - chrono_start; lv_disp_flush_ready(disp); From ebed3ded372217ebd10dbea1c0d611cafbad523e Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Thu, 18 Jul 2024 08:28:43 +0200 Subject: [PATCH 164/252] Update Italian language (#21792) --- tasmota/language/it_IT.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 7d99745ad..fe6c3346d 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v9.4.0.1 - Last update 15.06.2024 + * Updated until v9.4.0.1 - Last update 17.07.2024 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -1000,7 +1000,7 @@ #define D_SENSOR_BIOPDU_BIT "BioPDU Bit" #define D_SENSOR_LOX_O2_RX "LoxO2 - RX" #define D_GPIO_MAGIC_SWITCH "MagicSwitch" -#define D_SENSOR_WOOLIIS_RX "Wooliis RX" +#define D_SENSOR_WOOLIIS_RX "Wooliis - RX" // Units #define D_UNIT_AMPERE "A" @@ -1268,12 +1268,12 @@ #define D_UNIT_US_H "µSv/h" // ixrv92_pipsolar.ino -#define D_SENSOR_PIPSOLAR_TX "Pipsolar - TX" -#define D_SENSOR_PIPSOLAR_RX "Pipsolar - RX" +#define D_SENSOR_PIPSOLAR_TX "Pipsolar - TX" +#define D_SENSOR_PIPSOLAR_RX "Pipsolar - RX" // xsns_115_wooliis.ino -#define D_IMPORT "Import" -#define D_EXPORT "Export" +#define D_IMPORT "Importa" +#define D_EXPORT "Esporta" #define D_CHARGING "In carica" #define D_CAPACITY "Capacità" From 00a00a35052e0d63a02850a77d2f60e676b47a14 Mon Sep 17 00:00:00 2001 From: gemu Date: Sat, 20 Jul 2024 08:20:19 +0200 Subject: [PATCH 165/252] fix pushcolors for displaytext (#21805) --- lib/lib_display/UDisplay/uDisplay.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 9be4d2e72..eb6888447 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -2213,7 +2213,7 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { //Serial.printf("push %x - %d - %d - %d\n", (uint32_t)data, len, not_swapped, lvgl_param.data); - // Isolating _UDPS_RGB to increase code sharing + // Isolating _UDSP_RGB to increase code sharing // // LVGL documentation suggest to call the following: // lv_draw_sw_rgb565_swap() to invert bytes @@ -2229,6 +2229,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { // check that bytes count matches the size of area, and remove from inner loop if ((seta_yp2 - seta_yp1) * (seta_xp2 - seta_xp2) > len) { return; } + uint16_t lenc = len; + if (cur_rot > 0) { for (uint32_t y = seta_yp1; y < seta_yp2; y++) { seta_yp1++; @@ -2236,13 +2238,14 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { uint16_t color = *data++; if (!not_swapped) { color = color << 8 | color >> 8; } drawPixel_RGB(x, y, color); - len--; - if (!len) return; // failsafe - exist if len (pixel number) is exhausted + lenc--; + if (!lenc) return; // failsafe - exist if len (pixel number) is exhausted } } } else { uint16_t *fb_y = rgb_fb + (int32_t)seta_yp1 * _width; for (uint32_t y = seta_yp1; y < seta_yp2; y++) { + seta_yp1++; uint16_t * fb_xy = fb_y + seta_xp1; // we get the 'not_swapped' test outside of the inner loop if (not_swapped) { @@ -2250,6 +2253,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { uint16_t color = *data++; *fb_xy = color; fb_xy++; + lenc--; + if (!lenc) goto update_cache; // failsafe - exist if len (pixel number) is exhausted } } else { for (uint32_t x = seta_xp1; x < seta_xp2; x++) { @@ -2257,14 +2262,17 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { color = color << 8 | color >> 8; *fb_xy = color; fb_xy++; + lenc--; + if (!lenc) goto update_cache; // failsafe - exist if len (pixel number) is exhausted } } fb_y += _width; } // using esp_cache_msync() to flush the PSRAM cache and ensure that all data is actually written to PSRAM // from https://github.com/espressif/esp-idf/blob/636ff35b52f10e1a804a3760a5bd94e68f4b1b71/components/esp_lcd/rgb/esp_lcd_panel_rgb.c#L159 +update_cache: uint16_t * flush_ptr = rgb_fb + (int32_t)seta_yp1 * _width; - esp_cache_msync(flush_ptr, (seta_yp2 - seta_yp1) * _width * 2, 0); + esp_cache_msync(flush_ptr, len * 2, 0); } #endif return; From e2fdf18625eee84e34b022c933b60bd4436e44c5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 21 Jul 2024 12:23:10 +0200 Subject: [PATCH 166/252] Fix CalVer to SemVer updates --- tasmota/tasmota_support/settings.ino | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tasmota/tasmota_support/settings.ino b/tasmota/tasmota_support/settings.ino index 9b002f26c..aa1457983 100644 --- a/tasmota/tasmota_support/settings.ino +++ b/tasmota/tasmota_support/settings.ino @@ -1726,6 +1726,13 @@ void SettingsDelta(void) { if (Settings->version < 0x0A010003) { // 10.1.0.3 Settings->sserial_config = Settings->serial_config; } + + // Change CalVer (2022.01.1-4 = 0x14160101) to SemVer (10.1.0.4-7 = 0x0A010004) + uint32_t version2022 = Settings->version & 0x00FF0000; + if (0x00160000 == version2022) { // Version x.22.x.x is not likely to appear + Settings->version = 0x0A010005; // Choose this as 0x0A010006 has a change following + } + if (Settings->version < 0x0A010006) { // 10.1.0.6 Settings->web_time_start = 0; Settings->web_time_end = 0; From 990a0e4257b9d180d1ad70cd8da71ddaef7f91b1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 21 Jul 2024 15:22:15 +0200 Subject: [PATCH 167/252] Add Propagating upload to ESP8266 minimal --- tasmota/tasmota_support/support_tasmota.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/tasmota_support/support_tasmota.ino b/tasmota/tasmota_support/support_tasmota.ino index b614532df..d77d2945e 100644 --- a/tasmota/tasmota_support/support_tasmota.ino +++ b/tasmota/tasmota_support/support_tasmota.ino @@ -1618,12 +1618,12 @@ void Every250mSeconds(void) #ifdef ESP32 if (OtaFactoryRead()) { OtaFactoryWrite(false); - TasmotaGlobal.ota_state_flag = 3; - AddLog(LOG_LEVEL_DEBUG, PSTR("OTA: Propagating upload")); + RtcSettings.ota_loader = 1; } #endif if (1 == RtcSettings.ota_loader) { RtcSettings.ota_loader = 0; + AddLog(LOG_LEVEL_DEBUG, PSTR("OTA: Propagating upload")); TasmotaGlobal.ota_state_flag = 3; } #endif // FIRMWARE_MINIMAL From da169336ee764570d2b24c156293e6dfb69b7530 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 21 Jul 2024 22:30:19 +0200 Subject: [PATCH 168/252] Berry simplified `module persist` (#21812) --- CHANGELOG.md | 1 + .../berry_tasmota/src/embedded/persist.be | 52 +- .../src/solidify/solidified_persist.h | 806 +++++++++--------- 3 files changed, 440 insertions(+), 419 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26c90e478..6c6cf0f3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ All notable changes to this project will be documented in this file. - ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) - ESP32 platform update from 2024.06.11 to 2024.07.10 (#21745) - ESP32 platform update from 2024.07.10 to 2024.07.11 (#21765) +- Berry simplified `module persist` ### Fixed - Berry `bytes.resize()` for large sizes (#21716) diff --git a/lib/libesp32/berry_tasmota/src/embedded/persist.be b/lib/libesp32/berry_tasmota/src/embedded/persist.be index 901b7e2d5..51bdd55da 100644 --- a/lib/libesp32/berry_tasmota/src/embedded/persist.be +++ b/lib/libesp32/berry_tasmota/src/embedded/persist.be @@ -15,17 +15,10 @@ class Persist var _p var _dirty - #- persist can be initialized with pre-existing values. The map is not copied so any change will be reflected -# - def init(m) - # print("Persist init") - if isinstance(m,map) - self._p = m.copy() # need to copy instead? - else - self._p = {} - end - self.load(self._p, self._filename) + def init() + self._p = {} self._dirty = false - # print("Persist init") + self.load() end #- virtual member getter, if a key does not exists return `nil` instead of exception -# @@ -50,8 +43,12 @@ class Persist self._dirty = true end - def has(k) - return self._p.has(k) + def contains(k) + return self._p.contains(k) + end + + def has(k) # deprecated, use contains instead + return self._p.contains(k) end def find(k, d) @@ -74,7 +71,7 @@ class Persist raise e, m end if isinstance(val, map) - self._p = val # sucess + self._p = val # success else print("BRY: failed to load _persist.json") end @@ -87,24 +84,25 @@ class Persist end def save() - var f # file object - try - f = open(self._filename, "w") - self.json_fdump(f) - f.close() - except .. as e, m - if f != nil f.close() end - f = nil + if self._dirty # do not save if not dirty + var f # file object try f = open(self._filename, "w") - f.write('{}') # fallback write empty map - except .. + self.json_fdump(f) + f.close() + except .. as e, m + if (f != nil) f.close() end + f = nil + try + f = open(self._filename, "w") + f.write('{}') # fallback write empty map + except .. + end + if f != nil f.close() end + raise e, m end - if f != nil f.close() end - raise e, m + self._dirty = false end - self._dirty = false - # print("Saving") end def json_fdump_any(f, v) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h index a084b51ef..4308a489d 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h @@ -110,181 +110,6 @@ be_local_closure(class_Persist_json_fdump_map, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: setmember -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_setmember, /* name */ - be_nested_proto( - 4, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(_dirty), - }), - &be_const_str_setmember, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x980C0202, // 0001 SETIDX R3 R1 R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x90020203, // 0003 SETMBR R0 K1 R3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: zero -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_zero, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(_dirty), - }), - &be_const_str_zero, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x50040200, // 0003 LDBOOL R1 1 0 - 0x90020201, // 0004 SETMBR R0 K1 R1 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: member -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_member, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(find), - }), - &be_const_str_member, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: json_fdump -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_json_fdump, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(_p), - /* K2 */ be_nested_str(json_fdump_map), - /* K3 */ be_nested_str(internal_error), - /* K4 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map), - }), - &be_const_str_json_fdump, - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C000F, // 0001 GETGBL R3 G15 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C0C0400, // 0004 CALL R3 2 - 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x5C140200, // 0007 MOVE R5 R1 - 0x88180101, // 0008 GETMBR R6 R0 K1 - 0x7C0C0600, // 0009 CALL R3 3 - 0x70020000, // 000A JMP #000C - 0xB0060704, // 000B RAISE 1 K3 K4 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_remove, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(remove), - /* K2 */ be_nested_str(_dirty), - }), - &be_const_str_remove, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x50080200, // 0004 LDBOOL R2 1 0 - 0x90020402, // 0005 SETMBR R0 K2 R2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: json_fdump_any ********************************************************************/ @@ -342,6 +167,42 @@ be_local_closure(class_Persist_json_fdump_any, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_init, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str(_p), + /* K1 */ be_nested_str(_dirty), + /* K2 */ be_nested_str(load), + }), + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x50040000, // 0003 LDBOOL R1 0 0 + 0x90020201, // 0004 SETMBR R0 K1 R1 + 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x7C040200, // 0006 CALL R1 1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: save ********************************************************************/ @@ -357,65 +218,362 @@ be_local_closure(class_Persist_save, /* name */ &be_class_Persist, 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(_filename), - /* K1 */ be_nested_str(w), - /* K2 */ be_nested_str(json_fdump), - /* K3 */ be_nested_str(close), - /* K4 */ be_nested_str(write), - /* K5 */ be_nested_str(_X7B_X7D), - /* K6 */ be_nested_str(_dirty), + /* K0 */ be_nested_str(_dirty), + /* K1 */ be_nested_str(_filename), + /* K2 */ be_nested_str(w), + /* K3 */ be_nested_str(json_fdump), + /* K4 */ be_nested_str(close), + /* K5 */ be_nested_str(write), + /* K6 */ be_nested_str(_X7B_X7D), }), &be_const_str_save, &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0xA802000B, // 0001 EXBLK 0 #000E - 0x60080011, // 0002 GETGBL R2 G17 - 0x880C0100, // 0003 GETMBR R3 R0 K0 - 0x58100001, // 0004 LDCONST R4 K1 - 0x7C080400, // 0005 CALL R2 2 - 0x5C040400, // 0006 MOVE R1 R2 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x8C080303, // 000A GETMET R2 R1 K3 - 0x7C080200, // 000B CALL R2 1 - 0xA8040001, // 000C EXBLK 1 1 - 0x7002001E, // 000D JMP #002D - 0xAC080002, // 000E CATCH R2 0 2 - 0x7002001B, // 000F JMP #002C - 0x4C100000, // 0010 LDNIL R4 - 0x20100204, // 0011 NE R4 R1 R4 - 0x78120001, // 0012 JMPF R4 #0015 - 0x8C100303, // 0013 GETMET R4 R1 K3 - 0x7C100200, // 0014 CALL R4 1 - 0x4C040000, // 0015 LDNIL R1 - 0xA8020009, // 0016 EXBLK 0 #0021 - 0x60100011, // 0017 GETGBL R4 G17 - 0x88140100, // 0018 GETMBR R5 R0 K0 - 0x58180001, // 0019 LDCONST R6 K1 - 0x7C100400, // 001A CALL R4 2 - 0x5C040800, // 001B MOVE R1 R4 - 0x8C100304, // 001C GETMET R4 R1 K4 - 0x58180005, // 001D LDCONST R6 K5 - 0x7C100400, // 001E CALL R4 2 - 0xA8040001, // 001F EXBLK 1 1 - 0x70020003, // 0020 JMP #0025 - 0xAC100000, // 0021 CATCH R4 0 0 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x4C100000, // 0025 LDNIL R4 - 0x20100204, // 0026 NE R4 R1 R4 - 0x78120001, // 0027 JMPF R4 #002A - 0x8C100303, // 0028 GETMET R4 R1 K3 - 0x7C100200, // 0029 CALL R4 1 - 0xB0040403, // 002A RAISE 1 R2 R3 - 0x70020000, // 002B JMP #002D - 0xB0080000, // 002C RAISE 2 R0 R0 - 0x50080000, // 002D LDBOOL R2 0 0 - 0x90020C02, // 002E SETMBR R0 K6 R2 - 0x80000000, // 002F RET 0 + ( &(const binstruction[50]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x7806002E, // 0001 JMPF R1 #0031 + 0x4C040000, // 0002 LDNIL R1 + 0xA802000B, // 0003 EXBLK 0 #0010 + 0x60080011, // 0004 GETGBL R2 G17 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x7C080400, // 0007 CALL R2 2 + 0x5C040400, // 0008 MOVE R1 R2 + 0x8C080103, // 0009 GETMET R2 R0 K3 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x8C080304, // 000C GETMET R2 R1 K4 + 0x7C080200, // 000D CALL R2 1 + 0xA8040001, // 000E EXBLK 1 1 + 0x7002001E, // 000F JMP #002F + 0xAC080002, // 0010 CATCH R2 0 2 + 0x7002001B, // 0011 JMP #002E + 0x4C100000, // 0012 LDNIL R4 + 0x20100204, // 0013 NE R4 R1 R4 + 0x78120001, // 0014 JMPF R4 #0017 + 0x8C100304, // 0015 GETMET R4 R1 K4 + 0x7C100200, // 0016 CALL R4 1 + 0x4C040000, // 0017 LDNIL R1 + 0xA8020009, // 0018 EXBLK 0 #0023 + 0x60100011, // 0019 GETGBL R4 G17 + 0x88140101, // 001A GETMBR R5 R0 K1 + 0x58180002, // 001B LDCONST R6 K2 + 0x7C100400, // 001C CALL R4 2 + 0x5C040800, // 001D MOVE R1 R4 + 0x8C100305, // 001E GETMET R4 R1 K5 + 0x58180006, // 001F LDCONST R6 K6 + 0x7C100400, // 0020 CALL R4 2 + 0xA8040001, // 0021 EXBLK 1 1 + 0x70020003, // 0022 JMP #0027 + 0xAC100000, // 0023 CATCH R4 0 0 + 0x70020000, // 0024 JMP #0026 + 0x70020000, // 0025 JMP #0027 + 0xB0080000, // 0026 RAISE 2 R0 R0 + 0x4C100000, // 0027 LDNIL R4 + 0x20100204, // 0028 NE R4 R1 R4 + 0x78120001, // 0029 JMPF R4 #002C + 0x8C100304, // 002A GETMET R4 R1 K4 + 0x7C100200, // 002B CALL R4 1 + 0xB0040403, // 002C RAISE 1 R2 R3 + 0x70020000, // 002D JMP #002F + 0xB0080000, // 002E RAISE 2 R0 R0 + 0x50080000, // 002F LDBOOL R2 0 0 + 0x90020002, // 0030 SETMBR R0 K0 R2 + 0x80000000, // 0031 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: zero +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_zero, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str(_p), + /* K1 */ be_nested_str(_dirty), + }), + &be_const_str_zero, + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x90020201, // 0004 SETMBR R0 K1 R1 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_find, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str(_p), + /* K1 */ be_nested_str(find), + }), + &be_const_str_find, + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x5C180400, // 0003 MOVE R6 R2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x80040600, // 0005 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: has +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_has, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str(_p), + /* K1 */ be_nested_str(contains), + }), + &be_const_str_has, + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: json_fdump_list +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_json_fdump_list, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str(json), + /* K1 */ be_nested_str(write), + /* K2 */ be_nested_str(_X5B), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str(_X2C), + /* K5 */ be_nested_str(json_fdump_any), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str(_X5D), + }), + &be_const_str_json_fdump_list, + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x8C100301, // 0001 GETMET R4 R1 K1 + 0x58180002, // 0002 LDCONST R6 K2 + 0x7C100400, // 0003 CALL R4 2 + 0x58100003, // 0004 LDCONST R4 K3 + 0x6014000C, // 0005 GETGBL R5 G12 + 0x5C180400, // 0006 MOVE R6 R2 + 0x7C140200, // 0007 CALL R5 1 + 0x14140805, // 0008 LT R5 R4 R5 + 0x7816000A, // 0009 JMPF R5 #0015 + 0x24140903, // 000A GT R5 R4 K3 + 0x78160002, // 000B JMPF R5 #000F + 0x8C140301, // 000C GETMET R5 R1 K1 + 0x581C0004, // 000D LDCONST R7 K4 + 0x7C140400, // 000E CALL R5 2 + 0x8C140105, // 000F GETMET R5 R0 K5 + 0x5C1C0200, // 0010 MOVE R7 R1 + 0x94200404, // 0011 GETIDX R8 R2 R4 + 0x7C140600, // 0012 CALL R5 3 + 0x00100906, // 0013 ADD R4 R4 K6 + 0x7001FFEF, // 0014 JMP #0005 + 0x8C140301, // 0015 GETMET R5 R1 K1 + 0x581C0007, // 0016 LDCONST R7 K7 + 0x7C140400, // 0017 CALL R5 2 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: member +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_member, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str(_p), + /* K1 */ be_nested_str(find), + }), + &be_const_str_member, + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: setmember +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_setmember, /* name */ + be_nested_proto( + 4, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str(_p), + /* K1 */ be_nested_str(_dirty), + }), + &be_const_str_setmember, + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x980C0202, // 0001 SETIDX R3 R1 R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x90020203, // 0003 SETMBR R0 K1 R3 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_contains, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str(_p), + /* K1 */ be_nested_str(contains), + }), + &be_const_str_contains, + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: json_fdump +********************************************************************/ +extern const bclass be_class_Persist; +be_local_closure(class_Persist_json_fdump, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Persist, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str(json), + /* K1 */ be_nested_str(_p), + /* K2 */ be_nested_str(json_fdump_map), + /* K3 */ be_nested_str(internal_error), + /* K4 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map), + }), + &be_const_str_json_fdump, + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C000F, // 0001 GETGBL R3 G15 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x60140013, // 0003 GETGBL R5 G19 + 0x7C0C0400, // 0004 CALL R3 2 + 0x780E0004, // 0005 JMPF R3 #000B + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x5C140200, // 0007 MOVE R5 R1 + 0x88180101, // 0008 GETMBR R6 R0 K1 + 0x7C0C0600, // 0009 CALL R3 3 + 0x70020000, // 000A JMP #000C + 0xB0060704, // 000B RAISE 1 K3 K4 + 0x80000000, // 000C RET 0 }) ) ); @@ -509,150 +667,10 @@ be_local_closure(class_Persist_load, /* name */ /******************************************************************** -** Solidified function: find +** Solidified function: remove ********************************************************************/ extern const bclass be_class_Persist; -be_local_closure(class_Persist_find, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(find), - }), - &be_const_str_find, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x5C180400, // 0003 MOVE R6 R2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x80040600, // 0005 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(copy), - /* K2 */ be_nested_str(load), - /* K3 */ be_nested_str(_filename), - /* K4 */ be_nested_str(_dirty), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x6008000F, // 0000 GETGBL R2 G15 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x60100013, // 0002 GETGBL R4 G19 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x7C080200, // 0006 CALL R2 1 - 0x90020002, // 0007 SETMBR R0 K0 R2 - 0x70020002, // 0008 JMP #000C - 0x60080013, // 0009 GETGBL R2 G19 - 0x7C080000, // 000A CALL R2 0 - 0x90020002, // 000B SETMBR R0 K0 R2 - 0x8C080102, // 000C GETMET R2 R0 K2 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x88140103, // 000E GETMBR R5 R0 K3 - 0x7C080600, // 000F CALL R2 3 - 0x50080000, // 0010 LDBOOL R2 0 0 - 0x90020802, // 0011 SETMBR R0 K4 R2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: json_fdump_list -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_json_fdump_list, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Persist, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(write), - /* K2 */ be_nested_str(_X5B), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str(_X2C), - /* K5 */ be_nested_str(json_fdump_any), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str(_X5D), - }), - &be_const_str_json_fdump_list, - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100301, // 0001 GETMET R4 R1 K1 - 0x58180002, // 0002 LDCONST R6 K2 - 0x7C100400, // 0003 CALL R4 2 - 0x58100003, // 0004 LDCONST R4 K3 - 0x6014000C, // 0005 GETGBL R5 G12 - 0x5C180400, // 0006 MOVE R6 R2 - 0x7C140200, // 0007 CALL R5 1 - 0x14140805, // 0008 LT R5 R4 R5 - 0x7816000A, // 0009 JMPF R5 #0015 - 0x24140903, // 000A GT R5 R4 K3 - 0x78160002, // 000B JMPF R5 #000F - 0x8C140301, // 000C GETMET R5 R1 K1 - 0x581C0004, // 000D LDCONST R7 K4 - 0x7C140400, // 000E CALL R5 2 - 0x8C140105, // 000F GETMET R5 R0 K5 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x94200404, // 0011 GETIDX R8 R2 R4 - 0x7C140600, // 0012 CALL R5 3 - 0x00100906, // 0013 ADD R4 R4 K6 - 0x7001FFEF, // 0014 JMP #0005 - 0x8C140301, // 0015 GETMET R5 R1 K1 - 0x581C0007, // 0016 LDCONST R7 K7 - 0x7C140400, // 0017 CALL R5 2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: has -********************************************************************/ -extern const bclass be_class_Persist; -be_local_closure(class_Persist_has, /* name */ +be_local_closure(class_Persist_remove, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -662,18 +680,21 @@ be_local_closure(class_Persist_has, /* name */ 0, /* has sup protos */ &be_class_Persist, 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(has), + /* K1 */ be_nested_str(remove), + /* K2 */ be_nested_str(_dirty), }), - &be_const_str_has, + &be_const_str_remove, &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + 0x50080200, // 0004 LDBOOL R2 1 0 + 0x90020402, // 0005 SETMBR R0 K2 R2 + 0x80000000, // 0006 RET 0 }) ) ); @@ -686,24 +707,25 @@ be_local_closure(class_Persist_has, /* name */ be_local_class(Persist, 2, NULL, - be_nested_map(16, + be_nested_map(17, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(has, 6), be_const_closure(class_Persist_has_closure) }, - { be_const_key(setmember, -1), be_const_closure(class_Persist_setmember_closure) }, { be_const_key(remove, -1), be_const_closure(class_Persist_remove_closure) }, - { be_const_key(zero, 0), be_const_closure(class_Persist_zero_closure) }, - { be_const_key(json_fdump, -1), be_const_closure(class_Persist_json_fdump_closure) }, - { be_const_key(json_fdump_list, 2), be_const_closure(class_Persist_json_fdump_list_closure) }, - { be_const_key(init, 15), be_const_closure(class_Persist_init_closure) }, - { be_const_key(find, -1), be_const_closure(class_Persist_find_closure) }, - { be_const_key(save, -1), be_const_closure(class_Persist_save_closure) }, - { be_const_key(json_fdump_any, 12), be_const_closure(class_Persist_json_fdump_any_closure) }, - { be_const_key(_p, 7), be_const_var(0) }, { be_const_key(_filename, -1), be_nested_str(_persist_X2Ejson) }, - { be_const_key(load, -1), be_const_closure(class_Persist_load_closure) }, - { be_const_key(json_fdump_map, 5), be_const_closure(class_Persist_json_fdump_map_closure) }, - { be_const_key(_dirty, -1), be_const_var(1) }, + { be_const_key(json_fdump_any, 4), be_const_closure(class_Persist_json_fdump_any_closure) }, + { be_const_key(load, 16), be_const_closure(class_Persist_load_closure) }, + { be_const_key(zero, -1), be_const_closure(class_Persist_zero_closure) }, + { be_const_key(json_fdump_list, -1), be_const_closure(class_Persist_json_fdump_list_closure) }, + { be_const_key(find, 5), be_const_closure(class_Persist_find_closure) }, + { be_const_key(has, -1), be_const_closure(class_Persist_has_closure) }, { be_const_key(member, -1), be_const_closure(class_Persist_member_closure) }, + { be_const_key(setmember, 8), be_const_closure(class_Persist_setmember_closure) }, + { be_const_key(_dirty, 0), be_const_var(1) }, + { be_const_key(save, 9), be_const_closure(class_Persist_save_closure) }, + { be_const_key(contains, -1), be_const_closure(class_Persist_contains_closure) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(json_fdump, -1), be_const_closure(class_Persist_json_fdump_closure) }, + { be_const_key(json_fdump_map, 3), be_const_closure(class_Persist_json_fdump_map_closure) }, + { be_const_key(init, -1), be_const_closure(class_Persist_init_closure) }, })), (bstring*) &be_const_str_Persist ); From 8c9040919d85a0029ec1b3d5935b3b1e0ad5bb4e Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 21 Jul 2024 22:58:28 +0200 Subject: [PATCH 169/252] FIx typo in Parition_Wizard and re-generate tapp file (#21813) --- tasmota/berry/modules/Partition_Wizard.tapp | Bin 35680 -> 17155 bytes .../modules/Partition_Wizard/autoexec.be | 2 +- .../Partition_Wizard/partition_wizard.bec | Bin 16661 -> 16664 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/berry/modules/Partition_Wizard.tapp b/tasmota/berry/modules/Partition_Wizard.tapp index 8198ccd14cac3222ccbec601defb071169aa4c85..278ba857c24633bc7fdc73ea470eadd081a07f13 100644 GIT binary patch literal 17155 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⪼x9o41(u-BH)7JQLf2& z6d7sqoZ4N-Ee=F?*w$}VEp#Wvp+@fQB34;=1xQyEN+L9jrmN?ReAl9Z8QffzGVCU# znyXQsbt9aTZ8u;nkxj#KlSP6v(8|4b=DY3qrSQBtCL?tHON!m0*Yg{`*B1u9PLfVw ztd?&ZcS}v*i;DwaT*QkKWd$Nzs&%)=eD|QAyYCbnB13j|5x`z;A_@tPP*N{!5xTQ_ zN(CW=Mt2>4kTN3p6664@2`30<+@r!>4qqVIaiT=Vi~ysZZrqsWaPO3@okp!Wg!R@_GWxWO!D7fPdYyl9_u~im9z7~}Bj7WY1_kEI#s9z!U=f3v?;DKw z>fjLxlA_~vI(W&o!v_be2o0@wzwHc;OhI9930@KcU_g-CfFg(tgjJI3;gl=Lm0nSj zUcN|hB?v4mm_9&QB_x>$uZ*ci8X+7AA=J~FuyG81pKy5)4ipG48u`2^DGvfTE&6(D z+znq6V+Aryg&I0dPlPYeWGwM*%Ri80;D& z+le7WM0eSG9BJ}z;pNJQQ$3czr+yo58FyeYbY=)gAuS0F; zok%!$7*b}DpGQ8|!9fstVcaT#fE%w${CKL;gdkH{uD{r$r+L9OLr3Gk1E=e4r@U9DY z?*quoivDM+->WTHnUVEBKXq}jdsR`cpee}88?k$9$j8WNNQfYy5*e!G#eohg!!&U9 zL0tMCU>gikP&%$+{OV+gY=hUgS*j2Sr4JM+(1aZ6ku>{89V^i9iTsVN0)nUfZTTCc z0C&2Q!E}8e_W^pggh#af+@NP)oD=kPPBG*I1chg?iL0Vo>R2UU9yc|lxntmB6Lv_8 z9D7$qaie2Kth{?w)Z0BFAb>~LomRtcQY@7)H+||th~bX2jQ|fgr33O3=(qXCzwJ48 z12>%BqYXTLK-RHtbTJYhP8t3`jNbtKKHr>NpeqEp5Ci-VzMd%XK7`C4Xwft`AoBva zFcXZXLB`pQ0Gyq~_w^)PJaoeems`+dlRp0ma>hOLcF1?1TiC3pWhC~j|E?_f8~MuQ z+4LN6lF!2`N5~k>hQh3%PRb}_MAe?k;tuXPMy`365h@E%7E%O%aX|vJ2(a=%+J*VK zmL-(-Udg0=%`+^nZ=$On$2o&(MZ_hT3T~t0w)%kUy%_lVrvYVLC17IE-;l_Na{4;@ zWBT^}b%)1=AQOL4qVEqa_!~U?ha3D2{u>(Xx+ck~Pk(ko{22$dJm60_tbZERX%KY( M_HXce?;hp;54|UplK=n! literal 35680 zcmd6QOK&7ca{tIHFW}ju4cIUiMvBC!o2y~-H5zLvl7b$i^+2z|3+A!dw4~79Ruz&&M|1Es?7w~uR*~kCy7ZI72)!oI%s7E$;M`TxJMn*

Hello world {i}

") + if i < 10 + tasmota.set_timer(1000, def () send_more(cnx, i+1) end) + else + cnx.content_stop() + end +end + +def f(obj, cnx, uri, verb) + cnx.send(200, "text/html") + cnx.write("") + send_more(cnx, 0) + # cnx.write("Hello world") + # cnx.content_stop() +end + +web.on("/hello", nil, f) + +-# diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_webserver_async.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_webserver_async.h new file mode 100644 index 000000000..9ca5531f9 --- /dev/null +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_webserver_async.h @@ -0,0 +1,1756 @@ +/* Solidification of webserver_async.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" +// compact class 'webserver_async_cnx' ktab size: 76, total: 141 (saved 520 bytes) +static const bvalue be_ktab_class_webserver_async_cnx[76] = { + /* K0 */ be_nested_str_weak(server), + /* K1 */ be_nested_str_weak(dispatch), + /* K2 */ be_nested_str_weak(req_uri), + /* K3 */ be_nested_str_weak(req_verb), + /* K4 */ be_nested_str_weak(string), + /* K5 */ be_nested_str_weak(fromstring), + /* K6 */ be_nested_str_weak(chunked), + /* K7 */ be_nested_str_weak(p1), + /* K8 */ be_nested_str_weak(clear), + /* K9 */ be_nested_str_weak(append), + /* K10 */ be_nested_str_weak(_X25X_X0D_X0A), + /* K11 */ be_nested_str_weak(_X0D_X0A), + /* K12 */ be_nested_str_weak(_write), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(buf_out), + /* K15 */ be_nested_str_weak(resize), + /* K16 */ be_nested_str_weak(setbytes), + /* K17 */ be_nested_str_weak(_send), + /* K18 */ be_nested_str_weak(HTTP_X2F1_X2E1_X20_X25s_X20_X25s_X0D_X0A), + /* K19 */ be_nested_str_weak(CODE_TO_STRING), + /* K20 */ be_nested_str_weak(find), + /* K21 */ be_nested_str_weak(UNKNOWN), + /* K22 */ be_nested_str_weak(send_header), + /* K23 */ be_nested_str_weak(Content_X2DType), + /* K24 */ be_nested_str_weak(text_X2Fhtml), + /* K25 */ be_nested_str_weak(Accept_X2DRanges), + /* K26 */ be_nested_str_weak(none), + /* K27 */ be_nested_str_weak(Transfer_X2DEncoding), + /* K28 */ be_nested_str_weak(cors), + /* K29 */ be_nested_str_weak(Access_X2DControl_X2DAllow_X2DOrigin), + /* K30 */ be_nested_str_weak(_X2A), + /* K31 */ be_nested_str_weak(Access_X2DControl_X2DAllow_X2DMethods), + /* K32 */ be_nested_str_weak(Access_X2DControl_X2DAllow_X2DHeaders), + /* K33 */ be_nested_str_weak(Connection), + /* K34 */ be_nested_str_weak(close), + /* K35 */ be_nested_str_weak(resp_headers), + /* K36 */ be_nested_str_weak(write_raw), + /* K37 */ be_nested_str_weak(write), + /* K38 */ be_nested_str_weak(cnx), + /* K39 */ be_nested_str_weak(buf_in), + /* K40 */ be_nested_str_weak(), + /* K41 */ be_nested_str_weak(buf_in_offset), + /* K42 */ be_nested_str_weak(phase), + /* K43 */ be_nested_str_weak(close_after_send), + /* K44 */ be_nested_str_weak(fastloop_cb), + /* K45 */ be_nested_str_weak(tasmota), + /* K46 */ be_nested_str_weak(add_fast_loop), + /* K47 */ be_nested_str_weak(Host), + /* K48 */ be_nested_str_weak(header_host), + /* K49 */ be_nested_str_weak(_X25s_X3A_X20_X25s_X0D_X0A_X25s), + /* K50 */ be_nested_str_weak(_X25s_X25s_X3A_X20_X25s_X0D_X0A), + /* K51 */ be_nested_str_weak(listening), + /* K52 */ be_nested_str_weak(connected), + /* K53 */ be_nested_str_weak(parse_http_req_line), + /* K54 */ be_const_int(1), + /* K55 */ be_nested_str_weak(parse_http_headers), + /* K56 */ be_const_int(2), + /* K57 */ be_nested_str_weak(parse_http_payload), + /* K58 */ be_nested_str_weak(remove_fast_loop), + /* K59 */ be_nested_str_weak(available), + /* K60 */ be_nested_str_weak(read), + /* K61 */ be_nested_str_weak(parse), + /* K62 */ be_nested_str_weak(global), + /* K63 */ be_nested_str_weak(_re_http_srv_header), + /* K64 */ be_nested_str_weak(match2), + /* K65 */ be_nested_str_weak(event_http_header), + /* K66 */ be_nested_str_weak(_re_http_srv_body), + /* K67 */ be_const_int(2147483647), + /* K68 */ be_nested_str_weak(log), + /* K69 */ be_nested_str_weak(WEB_X3A_X20error_X20header_X20is_X20bigger_X20than_X201KB), + /* K70 */ be_nested_str_weak(_re_http_srv), + /* K71 */ be_nested_str_weak(req_version), + /* K72 */ be_const_int(3), + /* K73 */ be_nested_str_weak(loglevel), + /* K74 */ be_nested_str_weak(WEB_X3A_X20HTTP_X20verb_X3A_X20_X25s_X20URI_X3A_X20_X27_X25s_X27_X20Version_X3A_X25s), + /* K75 */ be_nested_str_weak(WEB_X3A_X20error_X20invalid_X20request), +}; + + +extern const bclass be_class_webserver_async_cnx; + +/******************************************************************** +** Solidified function: parse_http_payload +********************************************************************/ +be_local_closure(class_webserver_async_cnx_parse_http_payload, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(parse_http_payload), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x7C040800, // 0005 CALL R1 4 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write +********************************************************************/ +be_local_closure(class_webserver_async_cnx_write, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(write), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x60080004, // 0000 GETGBL R2 G4 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x1C080504, // 0003 EQ R2 R2 K4 + 0x780A0005, // 0004 JMPF R2 #000B + 0x60080015, // 0005 GETGBL R2 G21 + 0x7C080000, // 0006 CALL R2 0 + 0x8C080505, // 0007 GETMET R2 R2 K5 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x5C040400, // 000A MOVE R1 R2 + 0x88080106, // 000B GETMBR R2 R0 K6 + 0x780A0015, // 000C JMPF R2 #0023 + 0x88080100, // 000D GETMBR R2 R0 K0 + 0x88080507, // 000E GETMBR R2 R2 K7 + 0x8C0C0508, // 000F GETMET R3 R2 K8 + 0x7C0C0200, // 0010 CALL R3 1 + 0x8C0C0509, // 0011 GETMET R3 R2 K9 + 0x60140018, // 0012 GETGBL R5 G24 + 0x5818000A, // 0013 LDCONST R6 K10 + 0x601C000C, // 0014 GETGBL R7 G12 + 0x5C200200, // 0015 MOVE R8 R1 + 0x7C1C0200, // 0016 CALL R7 1 + 0x7C140400, // 0017 CALL R5 2 + 0x7C0C0400, // 0018 CALL R3 2 + 0x8C0C0509, // 0019 GETMET R3 R2 K9 + 0x5C140200, // 001A MOVE R5 R1 + 0x7C0C0400, // 001B CALL R3 2 + 0x8C0C0509, // 001C GETMET R3 R2 K9 + 0x5814000B, // 001D LDCONST R5 K11 + 0x7C0C0400, // 001E CALL R3 2 + 0x8C0C010C, // 001F GETMET R3 R0 K12 + 0x5C140400, // 0020 MOVE R5 R2 + 0x7C0C0400, // 0021 CALL R3 2 + 0x70020002, // 0022 JMP #0026 + 0x8C08010C, // 0023 GETMET R2 R0 K12 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _write +********************************************************************/ +be_local_closure(class_webserver_async_cnx__write, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(_write), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x6008000C, // 0000 GETGBL R2 G12 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x1C0C050D, // 0003 EQ R3 R2 K13 + 0x780E0000, // 0004 JMPF R3 #0006 + 0x80000600, // 0005 RET 0 + 0x880C010E, // 0006 GETMBR R3 R0 K14 + 0x6010000C, // 0007 GETGBL R4 G12 + 0x5C140600, // 0008 MOVE R5 R3 + 0x7C100200, // 0009 CALL R4 1 + 0x8C14070F, // 000A GETMET R5 R3 K15 + 0x001C0802, // 000B ADD R7 R4 R2 + 0x7C140400, // 000C CALL R5 2 + 0x8C140710, // 000D GETMET R5 R3 K16 + 0x5C1C0800, // 000E MOVE R7 R4 + 0x5C200200, // 000F MOVE R8 R1 + 0x7C140600, // 0010 CALL R5 3 + 0x8C140111, // 0011 GETMET R5 R0 K17 + 0x7C140200, // 0012 CALL R5 1 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send +********************************************************************/ +be_local_closure(class_webserver_async_cnx_send, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(send), + &be_const_str_solidified, + ( &(const binstruction[59]) { /* code */ + 0x60100018, // 0000 GETGBL R4 G24 + 0x58140012, // 0001 LDCONST R5 K18 + 0x5C180200, // 0002 MOVE R6 R1 + 0x881C0113, // 0003 GETMBR R7 R0 K19 + 0x8C1C0F14, // 0004 GETMET R7 R7 K20 + 0x5C240200, // 0005 MOVE R9 R1 + 0x58280015, // 0006 LDCONST R10 K21 + 0x7C1C0600, // 0007 CALL R7 3 + 0x7C100600, // 0008 CALL R4 3 + 0x8C140116, // 0009 GETMET R5 R0 K22 + 0x581C0017, // 000A LDCONST R7 K23 + 0x780A0001, // 000B JMPF R2 #000E + 0x5C200400, // 000C MOVE R8 R2 + 0x70020000, // 000D JMP #000F + 0x58200018, // 000E LDCONST R8 K24 + 0x50240200, // 000F LDBOOL R9 1 0 + 0x7C140800, // 0010 CALL R5 4 + 0x8C140116, // 0011 GETMET R5 R0 K22 + 0x581C0019, // 0012 LDCONST R7 K25 + 0x5820001A, // 0013 LDCONST R8 K26 + 0x7C140600, // 0014 CALL R5 3 + 0x88140106, // 0015 GETMBR R5 R0 K6 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C140116, // 0017 GETMET R5 R0 K22 + 0x581C001B, // 0018 LDCONST R7 K27 + 0x58200006, // 0019 LDCONST R8 K6 + 0x7C140600, // 001A CALL R5 3 + 0x88140100, // 001B GETMBR R5 R0 K0 + 0x88140B1C, // 001C GETMBR R5 R5 K28 + 0x7816000B, // 001D JMPF R5 #002A + 0x8C140116, // 001E GETMET R5 R0 K22 + 0x581C001D, // 001F LDCONST R7 K29 + 0x5820001E, // 0020 LDCONST R8 K30 + 0x7C140600, // 0021 CALL R5 3 + 0x8C140116, // 0022 GETMET R5 R0 K22 + 0x581C001F, // 0023 LDCONST R7 K31 + 0x5820001E, // 0024 LDCONST R8 K30 + 0x7C140600, // 0025 CALL R5 3 + 0x8C140116, // 0026 GETMET R5 R0 K22 + 0x581C0020, // 0027 LDCONST R7 K32 + 0x5820001E, // 0028 LDCONST R8 K30 + 0x7C140600, // 0029 CALL R5 3 + 0x8C140116, // 002A GETMET R5 R0 K22 + 0x581C0021, // 002B LDCONST R7 K33 + 0x58200022, // 002C LDCONST R8 K34 + 0x7C140600, // 002D CALL R5 3 + 0x88140123, // 002E GETMBR R5 R0 K35 + 0x00100805, // 002F ADD R4 R4 R5 + 0x0010090B, // 0030 ADD R4 R4 K11 + 0x4C140000, // 0031 LDNIL R5 + 0x90024605, // 0032 SETMBR R0 K35 R5 + 0x8C140124, // 0033 GETMET R5 R0 K36 + 0x5C1C0800, // 0034 MOVE R7 R4 + 0x7C140400, // 0035 CALL R5 2 + 0x780E0002, // 0036 JMPF R3 #003A + 0x8C140125, // 0037 GETMET R5 R0 K37 + 0x5C1C0600, // 0038 MOVE R7 R3 + 0x7C140400, // 0039 CALL R5 2 + 0x80000000, // 003A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_webserver_async_cnx_init, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(loop), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0x80000000, // 0003 RET 0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024C02, // 0001 SETMBR R0 K38 R2 + 0x90024F28, // 0002 SETMBR R0 K39 K40 + 0x9002530D, // 0003 SETMBR R0 K41 K13 + 0x600C0015, // 0004 GETGBL R3 G21 + 0x7C0C0000, // 0005 CALL R3 0 + 0x90021C03, // 0006 SETMBR R0 K14 R3 + 0x9002550D, // 0007 SETMBR R0 K42 K13 + 0x500C0000, // 0008 LDBOOL R3 0 0 + 0x90025603, // 0009 SETMBR R0 K43 R3 + 0x90024728, // 000A SETMBR R0 K35 K40 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0x90020C03, // 000C SETMBR R0 K6 R3 + 0x840C0000, // 000D CLOSURE R3 P0 + 0x90025803, // 000E SETMBR R0 K44 R3 + 0xB80E5A00, // 000F GETNGBL R3 K45 + 0x8C0C072E, // 0010 GETMET R3 R3 K46 + 0x8814012C, // 0011 GETMBR R5 R0 K44 + 0x7C0C0400, // 0012 CALL R3 2 + 0xA0000000, // 0013 CLOSE R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_http_header +********************************************************************/ +be_local_closure(class_webserver_async_cnx_event_http_header, /* name */ + be_nested_proto( + 4, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(event_http_header), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x1C0C032F, // 0000 EQ R3 R1 K47 + 0x780E0000, // 0001 JMPF R3 #0003 + 0x90026002, // 0002 SETMBR R0 K48 R2 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: close +********************************************************************/ +be_local_closure(class_webserver_async_cnx_close, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(close), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88040126, // 0000 GETMBR R1 R0 K38 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060002, // 0003 JMPF R1 #0007 + 0x88040126, // 0004 GETMBR R1 R0 K38 + 0x8C040322, // 0005 GETMET R1 R1 K34 + 0x7C040200, // 0006 CALL R1 1 + 0x4C040000, // 0007 LDNIL R1 + 0x90024C01, // 0008 SETMBR R0 K38 R1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: send_header +********************************************************************/ +be_local_closure(class_webserver_async_cnx_send_header, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(send_header), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x780E0007, // 0000 JMPF R3 #0009 + 0x60100018, // 0001 GETGBL R4 G24 + 0x58140031, // 0002 LDCONST R5 K49 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x88200123, // 0005 GETMBR R8 R0 K35 + 0x7C100800, // 0006 CALL R4 4 + 0x90024604, // 0007 SETMBR R0 K35 R4 + 0x70020006, // 0008 JMP #0010 + 0x60100018, // 0009 GETGBL R4 G24 + 0x58140032, // 000A LDCONST R5 K50 + 0x88180123, // 000B GETMBR R6 R0 K35 + 0x5C1C0200, // 000C MOVE R7 R1 + 0x5C200400, // 000D MOVE R8 R2 + 0x7C100800, // 000E CALL R4 4 + 0x90024604, // 000F SETMBR R0 K35 R4 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _send +********************************************************************/ +be_local_closure(class_webserver_async_cnx__send, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(_send), + &be_const_str_solidified, + ( &(const binstruction[47]) { /* code */ + 0x88040126, // 0000 GETMBR R1 R0 K38 + 0x4C080000, // 0001 LDNIL R2 + 0x1C080202, // 0002 EQ R2 R1 R2 + 0x780A0000, // 0003 JMPF R2 #0005 + 0x80000400, // 0004 RET 0 + 0x8808010E, // 0005 GETMBR R2 R0 K14 + 0x600C000C, // 0006 GETGBL R3 G12 + 0x5C100400, // 0007 MOVE R4 R2 + 0x7C0C0200, // 0008 CALL R3 1 + 0x240C070D, // 0009 GT R3 R3 K13 + 0x780E001E, // 000A JMPF R3 #002A + 0x8C0C0333, // 000B GETMET R3 R1 K51 + 0x7C0C0200, // 000C CALL R3 1 + 0x780E001A, // 000D JMPF R3 #0029 + 0x8C0C0325, // 000E GETMET R3 R1 K37 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x2410070D, // 0011 GT R4 R3 K13 + 0x78120015, // 0012 JMPF R4 #0029 + 0x6010000C, // 0013 GETGBL R4 G12 + 0x5C140400, // 0014 MOVE R5 R2 + 0x7C100200, // 0015 CALL R4 1 + 0x28100604, // 0016 GE R4 R3 R4 + 0x78120003, // 0017 JMPF R4 #001C + 0x8810010E, // 0018 GETMBR R4 R0 K14 + 0x8C100908, // 0019 GETMET R4 R4 K8 + 0x7C100200, // 001A CALL R4 1 + 0x7002000C, // 001B JMP #0029 + 0x8810010E, // 001C GETMBR R4 R0 K14 + 0x8C100910, // 001D GETMET R4 R4 K16 + 0x5818000D, // 001E LDCONST R6 K13 + 0x5C1C0400, // 001F MOVE R7 R2 + 0x5C200600, // 0020 MOVE R8 R3 + 0x7C100800, // 0021 CALL R4 4 + 0x8810010E, // 0022 GETMBR R4 R0 K14 + 0x8C10090F, // 0023 GETMET R4 R4 K15 + 0x6018000C, // 0024 GETGBL R6 G12 + 0x5C1C0400, // 0025 MOVE R7 R2 + 0x7C180200, // 0026 CALL R6 1 + 0x04180C03, // 0027 SUB R6 R6 R3 + 0x7C100400, // 0028 CALL R4 2 + 0x70020003, // 0029 JMP #002E + 0x880C012B, // 002A GETMBR R3 R0 K43 + 0x780E0001, // 002B JMPF R3 #002E + 0x8C0C0122, // 002C GETMET R3 R0 K34 + 0x7C0C0200, // 002D CALL R3 1 + 0x80000000, // 002E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: connected +********************************************************************/ +be_local_closure(class_webserver_async_cnx_connected, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(connected), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040126, // 0000 GETMBR R1 R0 K38 + 0x78060003, // 0001 JMPF R1 #0006 + 0x88040126, // 0002 GETMBR R1 R0 K38 + 0x8C040334, // 0003 GETMET R1 R1 K52 + 0x7C040200, // 0004 CALL R1 1 + 0x70020000, // 0005 JMP #0007 + 0x50040000, // 0006 LDBOOL R1 0 0 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse +********************************************************************/ +be_local_closure(class_webserver_async_cnx_parse, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(parse), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8804012A, // 0000 GETMBR R1 R0 K42 + 0x1C04030D, // 0001 EQ R1 R1 K13 + 0x78060002, // 0002 JMPF R1 #0006 + 0x8C040135, // 0003 GETMET R1 R0 K53 + 0x7C040200, // 0004 CALL R1 1 + 0x7002000A, // 0005 JMP #0011 + 0x8804012A, // 0006 GETMBR R1 R0 K42 + 0x1C040336, // 0007 EQ R1 R1 K54 + 0x78060002, // 0008 JMPF R1 #000C + 0x8C040137, // 0009 GETMET R1 R0 K55 + 0x7C040200, // 000A CALL R1 1 + 0x70020004, // 000B JMP #0011 + 0x8804012A, // 000C GETMBR R1 R0 K42 + 0x1C040338, // 000D EQ R1 R1 K56 + 0x78060001, // 000E JMPF R1 #0011 + 0x8C040139, // 000F GETMET R1 R0 K57 + 0x7C040200, // 0010 CALL R1 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: loop +********************************************************************/ +be_local_closure(class_webserver_async_cnx_loop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(loop), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x88040126, // 0000 GETMBR R1 R0 K38 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060006, // 0003 JMPF R1 #000B + 0xB8065A00, // 0004 GETNGBL R1 K45 + 0x8C04033A, // 0005 GETMET R1 R1 K58 + 0x880C012C, // 0006 GETMBR R3 R0 K44 + 0x7C040400, // 0007 CALL R1 2 + 0x4C040000, // 0008 LDNIL R1 + 0x90025801, // 0009 SETMBR R0 K44 R1 + 0x80000200, // 000A RET 0 + 0x8C040111, // 000B GETMET R1 R0 K17 + 0x7C040200, // 000C CALL R1 1 + 0x88040126, // 000D GETMBR R1 R0 K38 + 0x4C080000, // 000E LDNIL R2 + 0x1C080202, // 000F EQ R2 R1 R2 + 0x780A0000, // 0010 JMPF R2 #0012 + 0x80000400, // 0011 RET 0 + 0x8C08033B, // 0012 GETMET R2 R1 K59 + 0x7C080200, // 0013 CALL R2 1 + 0x2408050D, // 0014 GT R2 R2 K13 + 0x780A0008, // 0015 JMPF R2 #001F + 0x8C08033C, // 0016 GETMET R2 R1 K60 + 0x7C080200, // 0017 CALL R2 1 + 0x880C0127, // 0018 GETMBR R3 R0 K39 + 0x740E0001, // 0019 JMPT R3 #001C + 0x90024E02, // 001A SETMBR R0 K39 R2 + 0x70020002, // 001B JMP #001F + 0x880C0127, // 001C GETMBR R3 R0 K39 + 0x000C0602, // 001D ADD R3 R3 R2 + 0x90024E03, // 001E SETMBR R0 K39 R3 + 0x88080127, // 001F GETMBR R2 R0 K39 + 0x780A0001, // 0020 JMPF R2 #0023 + 0x8C08013D, // 0021 GETMET R2 R0 K61 + 0x7C080200, // 0022 CALL R2 1 + 0x80000000, // 0023 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: buf_out_empty +********************************************************************/ +be_local_closure(class_webserver_async_cnx_buf_out_empty, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(buf_out_empty), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x8808010E, // 0001 GETMBR R2 R0 K14 + 0x7C040200, // 0002 CALL R1 1 + 0x1C04030D, // 0003 EQ R1 R1 K13 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_chunked +********************************************************************/ +be_local_closure(class_webserver_async_cnx_set_chunked, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(set_chunked), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x60080017, // 0000 GETGBL R2 G23 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x90020C02, // 0003 SETMBR R0 K6 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_http_headers +********************************************************************/ +be_local_closure(class_webserver_async_cnx_parse_http_headers, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(parse_http_headers), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x50040200, // 0000 LDBOOL R1 1 0 + 0x78060030, // 0001 JMPF R1 #0033 + 0xB8067C00, // 0002 GETNGBL R1 K62 + 0x8804033F, // 0003 GETMBR R1 R1 K63 + 0x8C040340, // 0004 GETMET R1 R1 K64 + 0x880C0127, // 0005 GETMBR R3 R0 K39 + 0x88100129, // 0006 GETMBR R4 R0 K41 + 0x7C040600, // 0007 CALL R1 3 + 0x78060008, // 0008 JMPF R1 #0012 + 0x8C080141, // 0009 GETMET R2 R0 K65 + 0x94100336, // 000A GETIDX R4 R1 K54 + 0x94140338, // 000B GETIDX R5 R1 K56 + 0x7C080600, // 000C CALL R2 3 + 0x88080129, // 000D GETMBR R2 R0 K41 + 0x940C030D, // 000E GETIDX R3 R1 K13 + 0x00080403, // 000F ADD R2 R2 R3 + 0x90025202, // 0010 SETMBR R0 K41 R2 + 0x7002001F, // 0011 JMP #0032 + 0xB80A7C00, // 0012 GETNGBL R2 K62 + 0x88080542, // 0013 GETMBR R2 R2 K66 + 0x8C080540, // 0014 GETMET R2 R2 K64 + 0x88100127, // 0015 GETMBR R4 R0 K39 + 0x88140129, // 0016 GETMBR R5 R0 K41 + 0x7C080600, // 0017 CALL R2 3 + 0x780A000A, // 0018 JMPF R2 #0024 + 0x880C0129, // 0019 GETMBR R3 R0 K41 + 0x9410050D, // 001A GETIDX R4 R2 K13 + 0x000C0604, // 001B ADD R3 R3 R4 + 0x400C0743, // 001C CONNECT R3 R3 K67 + 0x88100127, // 001D GETMBR R4 R0 K39 + 0x940C0803, // 001E GETIDX R3 R4 R3 + 0x90024E03, // 001F SETMBR R0 K39 R3 + 0x9002530D, // 0020 SETMBR R0 K41 K13 + 0x90025538, // 0021 SETMBR R0 K42 K56 + 0x8C0C0139, // 0022 GETMET R3 R0 K57 + 0x7C0C0200, // 0023 CALL R3 1 + 0x600C000C, // 0024 GETGBL R3 G12 + 0x88100127, // 0025 GETMBR R4 R0 K39 + 0x7C0C0200, // 0026 CALL R3 1 + 0x541203FF, // 0027 LDINT R4 1024 + 0x240C0604, // 0028 GT R3 R3 R4 + 0x780E0006, // 0029 JMPF R3 #0031 + 0xB80E8800, // 002A GETNGBL R3 K68 + 0x58100045, // 002B LDCONST R4 K69 + 0x54160003, // 002C LDINT R5 4 + 0x7C0C0400, // 002D CALL R3 2 + 0x8C0C0122, // 002E GETMET R3 R0 K34 + 0x7C0C0200, // 002F CALL R3 1 + 0x90024F28, // 0030 SETMBR R0 K39 K40 + 0x80000600, // 0031 RET 0 + 0x7001FFCC, // 0032 JMP #0000 + 0x80000000, // 0033 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write_raw +********************************************************************/ +be_local_closure(class_webserver_async_cnx_write_raw, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(write_raw), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x6008000C, // 0000 GETGBL R2 G12 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x1C08050D, // 0003 EQ R2 R2 K13 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80000400, // 0005 RET 0 + 0x60080004, // 0006 GETGBL R2 G4 + 0x5C0C0200, // 0007 MOVE R3 R1 + 0x7C080200, // 0008 CALL R2 1 + 0x1C080504, // 0009 EQ R2 R2 K4 + 0x780A0005, // 000A JMPF R2 #0011 + 0x60080015, // 000B GETGBL R2 G21 + 0x7C080000, // 000C CALL R2 0 + 0x8C080505, // 000D GETMET R2 R2 K5 + 0x5C100200, // 000E MOVE R4 R1 + 0x7C080400, // 000F CALL R2 2 + 0x5C040400, // 0010 MOVE R1 R2 + 0x8C08010C, // 0011 GETMET R2 R0 K12 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: content_stop +********************************************************************/ +be_local_closure(class_webserver_async_cnx_content_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(content_stop), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C040125, // 0000 GETMET R1 R0 K37 + 0x580C0028, // 0001 LDCONST R3 K40 + 0x7C040400, // 0002 CALL R1 2 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x90025601, // 0004 SETMBR R0 K43 R1 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_http_req_line +********************************************************************/ +be_local_closure(class_webserver_async_cnx_parse_http_req_line, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_cnx, /* shared constants */ + be_str_weak(parse_http_req_line), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0xB8067C00, // 0000 GETNGBL R1 K62 + 0x88040346, // 0001 GETMBR R1 R1 K70 + 0x8C040340, // 0002 GETMET R1 R1 K64 + 0x880C0127, // 0003 GETMBR R3 R0 K39 + 0x88100129, // 0004 GETMBR R4 R0 K41 + 0x7C040600, // 0005 CALL R1 3 + 0x7806001C, // 0006 JMPF R1 #0024 + 0x9408030D, // 0007 GETIDX R2 R1 K13 + 0x940C0336, // 0008 GETIDX R3 R1 K54 + 0x90020603, // 0009 SETMBR R0 K3 R3 + 0x940C0338, // 000A GETIDX R3 R1 K56 + 0x90020403, // 000B SETMBR R0 K2 R3 + 0x940C0348, // 000C GETIDX R3 R1 K72 + 0x90028E03, // 000D SETMBR R0 K71 R3 + 0x90025536, // 000E SETMBR R0 K42 K54 + 0x400C0543, // 000F CONNECT R3 R2 K67 + 0x88100127, // 0010 GETMBR R4 R0 K39 + 0x940C0803, // 0011 GETIDX R3 R4 R3 + 0x90024E03, // 0012 SETMBR R0 K39 R3 + 0xB80E5A00, // 0013 GETNGBL R3 K45 + 0x8C0C0749, // 0014 GETMET R3 R3 K73 + 0x54160003, // 0015 LDINT R5 4 + 0x7C0C0400, // 0016 CALL R3 2 + 0x780E0008, // 0017 JMPF R3 #0021 + 0xB80E8800, // 0018 GETNGBL R3 K68 + 0x60100018, // 0019 GETGBL R4 G24 + 0x5814004A, // 001A LDCONST R5 K74 + 0x88180103, // 001B GETMBR R6 R0 K3 + 0x881C0102, // 001C GETMBR R7 R0 K2 + 0x88200147, // 001D GETMBR R8 R0 K71 + 0x7C100800, // 001E CALL R4 4 + 0x54160003, // 001F LDINT R5 4 + 0x7C0C0400, // 0020 CALL R3 2 + 0x8C0C0137, // 0021 GETMET R3 R0 K55 + 0x7C0C0200, // 0022 CALL R3 1 + 0x7002000C, // 0023 JMP #0031 + 0x6008000C, // 0024 GETGBL R2 G12 + 0x880C0127, // 0025 GETMBR R3 R0 K39 + 0x7C080200, // 0026 CALL R2 1 + 0x540E0063, // 0027 LDINT R3 100 + 0x24080403, // 0028 GT R2 R2 R3 + 0x780A0006, // 0029 JMPF R2 #0031 + 0xB80A8800, // 002A GETNGBL R2 K68 + 0x580C004B, // 002B LDCONST R3 K75 + 0x54120003, // 002C LDINT R4 4 + 0x7C080400, // 002D CALL R2 2 + 0x8C080122, // 002E GETMET R2 R0 K34 + 0x7C080200, // 002F CALL R2 1 + 0x90024F28, // 0030 SETMBR R0 K39 K40 + 0x80000000, // 0031 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: webserver_async_cnx +********************************************************************/ +be_local_class(webserver_async_cnx, + 14, + NULL, + be_nested_map(33, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(chunked, 20), be_const_var(13) }, + { be_const_key_weak(parse_http_payload, 31), be_const_closure(class_webserver_async_cnx_parse_http_payload_closure) }, + { be_const_key_weak(write, 5), be_const_closure(class_webserver_async_cnx_write_closure) }, + { be_const_key_weak(phase, 32), be_const_var(7) }, + { be_const_key_weak(_write, -1), be_const_closure(class_webserver_async_cnx__write_closure) }, + { be_const_key_weak(parse_http_req_line, 25), be_const_closure(class_webserver_async_cnx_parse_http_req_line_closure) }, + { be_const_key_weak(server, -1), be_const_var(0) }, + { be_const_key_weak(send, 27), be_const_closure(class_webserver_async_cnx_send_closure) }, + { be_const_key_weak(content_stop, -1), be_const_closure(class_webserver_async_cnx_content_stop_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_webserver_async_cnx_init_closure) }, + { be_const_key_weak(_send, -1), be_const_closure(class_webserver_async_cnx__send_closure) }, + { be_const_key_weak(event_http_header, -1), be_const_closure(class_webserver_async_cnx_event_http_header_closure) }, + { be_const_key_weak(close, -1), be_const_closure(class_webserver_async_cnx_close_closure) }, + { be_const_key_weak(req_uri, 21), be_const_var(9) }, + { be_const_key_weak(buf_in, -1), be_const_var(4) }, + { be_const_key_weak(req_version, 22), be_const_var(10) }, + { be_const_key_weak(resp_headers, -1), be_const_var(12) }, + { be_const_key_weak(close_after_send, 14), be_const_var(2) }, + { be_const_key_weak(cnx, -1), be_const_var(1) }, + { be_const_key_weak(parse, 8), be_const_closure(class_webserver_async_cnx_parse_closure) }, + { be_const_key_weak(CODE_TO_STRING, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(200, 2), be_nested_str_weak(OK) }, + { be_const_key_int(301, -1), be_nested_str_weak(Moved_X20Permanently) }, + { be_const_key_int(404, 3), be_nested_str_weak(Not_X20Found) }, + { be_const_key_int(500, -1), be_nested_str_weak(Internal_X20Server_X20Error) }, + })) ) } )) }, + { be_const_key_weak(buf_out_empty, 10), be_const_closure(class_webserver_async_cnx_buf_out_empty_closure) }, + { be_const_key_weak(loop, -1), be_const_closure(class_webserver_async_cnx_loop_closure) }, + { be_const_key_weak(buf_out, -1), be_const_var(6) }, + { be_const_key_weak(req_verb, 18), be_const_var(8) }, + { be_const_key_weak(buf_in_offset, -1), be_const_var(5) }, + { be_const_key_weak(set_chunked, -1), be_const_closure(class_webserver_async_cnx_set_chunked_closure) }, + { be_const_key_weak(connected, -1), be_const_closure(class_webserver_async_cnx_connected_closure) }, + { be_const_key_weak(parse_http_headers, -1), be_const_closure(class_webserver_async_cnx_parse_http_headers_closure) }, + { be_const_key_weak(fastloop_cb, 13), be_const_var(3) }, + { be_const_key_weak(write_raw, -1), be_const_closure(class_webserver_async_cnx_write_raw_closure) }, + { be_const_key_weak(send_header, -1), be_const_closure(class_webserver_async_cnx_send_header_closure) }, + { be_const_key_weak(header_host, -1), be_const_var(11) }, + })), + be_str_weak(webserver_async_cnx) +); +// compact class 'webserver_async_dispatcher' ktab size: 7, total: 11 (saved 32 bytes) +static const bvalue be_ktab_class_webserver_async_dispatcher[7] = { + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(uri_prefix), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(verb), + /* K5 */ be_nested_str_weak(cb_obj), + /* K6 */ be_nested_str_weak(cb_mth), +}; + + +extern const bclass be_class_webserver_async_dispatcher; + +/******************************************************************** +** Solidified function: dispatch +********************************************************************/ +be_local_closure(class_webserver_async_dispatcher_dispatch, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_dispatcher, /* shared constants */ + be_str_weak(dispatch), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140901, // 0001 GETMET R5 R4 K1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x88200102, // 0003 GETMBR R8 R0 K2 + 0x7C140600, // 0004 CALL R5 3 + 0x1C140B03, // 0005 EQ R5 R5 K3 + 0x78160019, // 0006 JMPF R5 #0021 + 0x50140000, // 0007 LDBOOL R5 0 0 + 0x88180104, // 0008 GETMBR R6 R0 K4 + 0x4C1C0000, // 0009 LDNIL R7 + 0x1C180C07, // 000A EQ R6 R6 R7 + 0x741A0002, // 000B JMPT R6 #000F + 0x88180104, // 000C GETMBR R6 R0 K4 + 0x1C180C03, // 000D EQ R6 R6 R3 + 0x781A0011, // 000E JMPF R6 #0021 + 0x88180105, // 000F GETMBR R6 R0 K5 + 0x4C1C0000, // 0010 LDNIL R7 + 0x201C0C07, // 0011 NE R7 R6 R7 + 0x781E0006, // 0012 JMPF R7 #001A + 0x8C1C0106, // 0013 GETMET R7 R0 K6 + 0x88240105, // 0014 GETMBR R9 R0 K5 + 0x5C280200, // 0015 MOVE R10 R1 + 0x5C2C0400, // 0016 MOVE R11 R2 + 0x5C300600, // 0017 MOVE R12 R3 + 0x7C1C0A00, // 0018 CALL R7 5 + 0x70020004, // 0019 JMP #001F + 0x8C1C0106, // 001A GETMET R7 R0 K6 + 0x5C240200, // 001B MOVE R9 R1 + 0x5C280400, // 001C MOVE R10 R2 + 0x5C2C0600, // 001D MOVE R11 R3 + 0x7C1C0800, // 001E CALL R7 4 + 0x501C0200, // 001F LDBOOL R7 1 0 + 0x80040E00, // 0020 RET 1 R7 + 0x50140000, // 0021 LDBOOL R5 0 0 + 0x80040A00, // 0022 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_webserver_async_dispatcher_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async_dispatcher, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x90020401, // 0000 SETMBR R0 K2 R1 + 0x90020A02, // 0001 SETMBR R0 K5 R2 + 0x90020C03, // 0002 SETMBR R0 K6 R3 + 0x90020804, // 0003 SETMBR R0 K4 R4 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: webserver_async_dispatcher +********************************************************************/ +be_local_class(webserver_async_dispatcher, + 4, + NULL, + be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(verb, 4), be_const_var(1) }, + { be_const_key_weak(init, -1), be_const_closure(class_webserver_async_dispatcher_init_closure) }, + { be_const_key_weak(uri_prefix, -1), be_const_var(0) }, + { be_const_key_weak(dispatch, 1), be_const_closure(class_webserver_async_dispatcher_dispatch_closure) }, + { be_const_key_weak(cb_obj, 5), be_const_var(2) }, + { be_const_key_weak(cb_mth, -1), be_const_var(3) }, + })), + be_str_weak(webserver_async_dispatcher) +); +extern const bclass be_class_webserver_async; +// compact class 'webserver_async' ktab size: 47, total: 71 (saved 192 bytes) +static const bvalue be_ktab_class_webserver_async[47] = { + /* K0 */ be_nested_str_weak(chunked), + /* K1 */ be_nested_str_weak(re), + /* K2 */ be_nested_str_weak(global), + /* K3 */ be_nested_str_weak(contains), + /* K4 */ be_nested_str_weak(_re_http_srv), + /* K5 */ be_nested_str_weak(compile), + /* K6 */ be_nested_str_weak(_X5E_X28_X5Cw_X2B_X29_X20_X28_X5CS_X2B_X29_X20HTTP_X5C_X2F_X28_X5Cd_X5C_X2E_X5Cd_X29_X0D_X0A), + /* K7 */ be_nested_str_weak(_re_http_srv_header), + /* K8 */ be_nested_str_weak(_X28_X5BA_X2DZa_X2Dz0_X2D9_X2D_X5D_X2B_X29_X3A_X20_X28_X2E_X2A_X3F_X29_X0D_X0A), + /* K9 */ be_nested_str_weak(_re_http_srv_body), + /* K10 */ be_nested_str_weak(_X0D_X0A), + /* K11 */ be_nested_str_weak(cors), + /* K12 */ be_nested_str_weak(clean_connections), + /* K13 */ be_nested_str_weak(server), + /* K14 */ be_nested_str_weak(hasclient), + /* K15 */ be_nested_str_weak(webserver_async_cnx), + /* K16 */ be_nested_str_weak(acceptasync), + /* K17 */ be_nested_str_weak(set_chunked), + /* K18 */ be_nested_str_weak(connections), + /* K19 */ be_nested_str_weak(push), + /* K20 */ be_nested_str_weak(tasmota), + /* K21 */ be_nested_str_weak(remove_driver), + /* K22 */ be_nested_str_weak(remove_fast_loop), + /* K23 */ be_nested_str_weak(fastloop_cb), + /* K24 */ be_nested_str_weak(close), + /* K25 */ be_nested_str_weak(stop_iteration), + /* K26 */ be_const_class(be_class_webserver_async), + /* K27 */ be_nested_str_weak(clear), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str_weak(resize), + /* K30 */ be_const_int(1), + /* K31 */ be_nested_str_weak(reverse), + /* K32 */ be_nested_str_weak(dispatchers), + /* K33 */ be_nested_str_weak(tcpserver), + /* K34 */ be_nested_str_weak(p1), + /* K35 */ be_nested_str_weak(compile_re), + /* K36 */ be_nested_str_weak(add_driver), + /* K37 */ be_nested_str_weak(add_fast_loop), + /* K38 */ be_nested_str_weak(connected), + /* K39 */ be_nested_str_weak(remove), + /* K40 */ be_nested_str_weak(webserver_async_dispatcher), + /* K41 */ be_nested_str_weak(dispatch), + /* K42 */ be_nested_str_weak(send), + /* K43 */ be_nested_str_weak(text_X2Fplain), + /* K44 */ be_nested_str_weak(write), + /* K45 */ be_nested_str_weak(Unsupported), + /* K46 */ be_nested_str_weak(content_stop), +}; + + +extern const bclass be_class_webserver_async; + +/******************************************************************** +** Solidified function: set_chunked +********************************************************************/ +be_local_closure(class_webserver_async_set_chunked, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(set_chunked), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x60080017, // 0000 GETGBL R2 G23 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compile_re +********************************************************************/ +be_local_closure(class_webserver_async_compile_re, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(compile_re), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xA4060200, // 0000 IMPORT R1 K1 + 0xB80A0400, // 0001 GETNGBL R2 K2 + 0x8C080503, // 0002 GETMET R2 R2 K3 + 0x58100004, // 0003 LDCONST R4 K4 + 0x7C080400, // 0004 CALL R2 2 + 0x740A000E, // 0005 JMPT R2 #0015 + 0xB80A0400, // 0006 GETNGBL R2 K2 + 0x8C0C0305, // 0007 GETMET R3 R1 K5 + 0x58140006, // 0008 LDCONST R5 K6 + 0x7C0C0400, // 0009 CALL R3 2 + 0x900A0803, // 000A SETMBR R2 K4 R3 + 0xB80A0400, // 000B GETNGBL R2 K2 + 0x8C0C0305, // 000C GETMET R3 R1 K5 + 0x58140008, // 000D LDCONST R5 K8 + 0x7C0C0400, // 000E CALL R3 2 + 0x900A0E03, // 000F SETMBR R2 K7 R3 + 0xB80A0400, // 0010 GETNGBL R2 K2 + 0x8C0C0305, // 0011 GETMET R3 R1 K5 + 0x5814000A, // 0012 LDCONST R5 K10 + 0x7C0C0400, // 0013 CALL R3 2 + 0x900A1203, // 0014 SETMBR R2 K9 R3 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_cors +********************************************************************/ +be_local_closure(class_webserver_async_set_cors, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(set_cors), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x60080017, // 0000 GETGBL R2 G23 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x90021602, // 0003 SETMBR R0 K11 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: loop +********************************************************************/ +be_local_closure(class_webserver_async_loop, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(loop), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x8C04010C, // 0000 GETMET R1 R0 K12 + 0x7C040200, // 0001 CALL R1 1 + 0x8804010D, // 0002 GETMBR R1 R0 K13 + 0x8C04030E, // 0003 GETMET R1 R1 K14 + 0x7C040200, // 0004 CALL R1 1 + 0x7806000D, // 0005 JMPF R1 #0014 + 0x8C04010F, // 0006 GETMET R1 R0 K15 + 0x5C0C0000, // 0007 MOVE R3 R0 + 0x8810010D, // 0008 GETMBR R4 R0 K13 + 0x8C100910, // 0009 GETMET R4 R4 K16 + 0x7C100200, // 000A CALL R4 1 + 0x7C040600, // 000B CALL R1 3 + 0x8C080311, // 000C GETMET R2 R1 K17 + 0x88100100, // 000D GETMBR R4 R0 K0 + 0x7C080400, // 000E CALL R2 2 + 0x88080112, // 000F GETMBR R2 R0 K18 + 0x8C080513, // 0010 GETMET R2 R2 K19 + 0x5C100200, // 0011 MOVE R4 R1 + 0x7C080400, // 0012 CALL R2 2 + 0x7001FFED, // 0013 JMP #0002 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: close +********************************************************************/ +be_local_closure(class_webserver_async_close, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(close), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0xB8062800, // 0000 GETNGBL R1 K20 + 0x8C040315, // 0001 GETMET R1 R1 K21 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0xB8062800, // 0004 GETNGBL R1 K20 + 0x8C040316, // 0005 GETMET R1 R1 K22 + 0x880C0117, // 0006 GETMBR R3 R0 K23 + 0x7C040400, // 0007 CALL R1 2 + 0x4C040000, // 0008 LDNIL R1 + 0x90022E01, // 0009 SETMBR R0 K23 R1 + 0x8804010D, // 000A GETMBR R1 R0 K13 + 0x8C040318, // 000B GETMET R1 R1 K24 + 0x7C040200, // 000C CALL R1 1 + 0x60040010, // 000D GETGBL R1 G16 + 0x88080112, // 000E GETMBR R2 R0 K18 + 0x7C040200, // 000F CALL R1 1 + 0xA8020004, // 0010 EXBLK 0 #0016 + 0x5C080200, // 0011 MOVE R2 R1 + 0x7C080000, // 0012 CALL R2 0 + 0x8C0C0518, // 0013 GETMET R3 R2 K24 + 0x7C0C0200, // 0014 CALL R3 1 + 0x7001FFFA, // 0015 JMP #0011 + 0x58040019, // 0016 LDCONST R1 K25 + 0xAC040200, // 0017 CATCH R1 1 0 + 0xB0080000, // 0018 RAISE 2 R0 R0 + 0x4C040000, // 0019 LDNIL R1 + 0x90022401, // 001A SETMBR R0 K18 R1 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bytes_format_hex +********************************************************************/ +be_local_closure(class_webserver_async_bytes_format_hex, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(bytes_format_hex), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x580C001A, // 0000 LDCONST R3 K26 + 0x8C10011B, // 0001 GETMET R4 R0 K27 + 0x7C100200, // 0002 CALL R4 1 + 0x4C100000, // 0003 LDNIL R4 + 0x1C100204, // 0004 EQ R4 R1 R4 + 0x78120001, // 0005 JMPF R4 #0008 + 0x40100002, // 0006 CONNECT R4 R0 R2 + 0x80000800, // 0007 RET 0 + 0x1410031C, // 0008 LT R4 R1 K28 + 0x78120000, // 0009 JMPF R4 #000B + 0x44040200, // 000A NEG R1 R1 + 0x1410031C, // 000B LT R4 R1 K28 + 0x78120000, // 000C JMPF R4 #000E + 0x80000800, // 000D RET 0 + 0x1C10031C, // 000E EQ R4 R1 K28 + 0x78120005, // 000F JMPF R4 #0016 + 0x8C10011D, // 0010 GETMET R4 R0 K29 + 0x5818001E, // 0011 LDCONST R6 K30 + 0x7C100400, // 0012 CALL R4 2 + 0x5412002F, // 0013 LDINT R4 48 + 0x98023804, // 0014 SETIDX R0 K28 R4 + 0x80000800, // 0015 RET 0 + 0x8C10011D, // 0016 GETMET R4 R0 K29 + 0x541A0007, // 0017 LDINT R6 8 + 0x7C100400, // 0018 CALL R4 2 + 0x5810001C, // 0019 LDCONST R4 K28 + 0x2414031C, // 001A GT R5 R1 K28 + 0x7816000F, // 001B JMPF R5 #002C + 0x5416000E, // 001C LDINT R5 15 + 0x2C140205, // 001D AND R5 R1 R5 + 0x541A0009, // 001E LDINT R6 10 + 0x14180A06, // 001F LT R6 R5 R6 + 0x781A0003, // 0020 JMPF R6 #0025 + 0x541A002F, // 0021 LDINT R6 48 + 0x00180C05, // 0022 ADD R6 R6 R5 + 0x98000806, // 0023 SETIDX R0 R4 R6 + 0x70020002, // 0024 JMP #0028 + 0x541A0036, // 0025 LDINT R6 55 + 0x00180C05, // 0026 ADD R6 R6 R5 + 0x98000806, // 0027 SETIDX R0 R4 R6 + 0x0010091E, // 0028 ADD R4 R4 K30 + 0x541A0003, // 0029 LDINT R6 4 + 0x3C040206, // 002A SHR R1 R1 R6 + 0x7001FFED, // 002B JMP #001A + 0x8C14011D, // 002C GETMET R5 R0 K29 + 0x5C1C0800, // 002D MOVE R7 R4 + 0x7C140400, // 002E CALL R5 2 + 0x8C14011F, // 002F GETMET R5 R0 K31 + 0x7C140200, // 0030 CALL R5 1 + 0x80000000, // 0031 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_webserver_async_init, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(loop), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0x80000000, // 0003 RET 0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x600C0012, // 0000 GETGBL R3 G18 + 0x7C0C0000, // 0001 CALL R3 0 + 0x90022403, // 0002 SETMBR R0 K18 R3 + 0x600C0012, // 0003 GETGBL R3 G18 + 0x7C0C0000, // 0004 CALL R3 0 + 0x90024003, // 0005 SETMBR R0 K32 R3 + 0xB80E4200, // 0006 GETNGBL R3 K33 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x90021A03, // 0009 SETMBR R0 K13 R3 + 0x500C0200, // 000A LDBOOL R3 1 0 + 0x90020003, // 000B SETMBR R0 K0 R3 + 0x500C0000, // 000C LDBOOL R3 0 0 + 0x90021603, // 000D SETMBR R0 K11 R3 + 0x600C0015, // 000E GETGBL R3 G21 + 0x54120063, // 000F LDINT R4 100 + 0x7C0C0200, // 0010 CALL R3 1 + 0x90024403, // 0011 SETMBR R0 K34 R3 + 0x8C0C0123, // 0012 GETMET R3 R0 K35 + 0x7C0C0200, // 0013 CALL R3 1 + 0xB80E2800, // 0014 GETNGBL R3 K20 + 0x8C0C0724, // 0015 GETMET R3 R3 K36 + 0x5C140000, // 0016 MOVE R5 R0 + 0x7C0C0400, // 0017 CALL R3 2 + 0x840C0000, // 0018 CLOSURE R3 P0 + 0x90022E03, // 0019 SETMBR R0 K23 R3 + 0xB80E2800, // 001A GETNGBL R3 K20 + 0x8C0C0725, // 001B GETMET R3 R3 K37 + 0x88140117, // 001C GETMBR R5 R0 K23 + 0x7C0C0400, // 001D CALL R3 2 + 0xA0000000, // 001E CLOSE R0 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clean_connections +********************************************************************/ +be_local_closure(class_webserver_async_clean_connections, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(clean_connections), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x5804001C, // 0000 LDCONST R1 K28 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0112, // 0002 GETMBR R3 R0 K18 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A000D, // 0005 JMPF R2 #0014 + 0x88080112, // 0006 GETMBR R2 R0 K18 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0x8C0C0526, // 0008 GETMET R3 R2 K38 + 0x7C0C0200, // 0009 CALL R3 1 + 0x740E0006, // 000A JMPT R3 #0012 + 0x8C0C0518, // 000B GETMET R3 R2 K24 + 0x7C0C0200, // 000C CALL R3 1 + 0x880C0112, // 000D GETMBR R3 R0 K18 + 0x8C0C0727, // 000E GETMET R3 R3 K39 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C0C0400, // 0010 CALL R3 2 + 0x70020000, // 0011 JMP #0013 + 0x0004031E, // 0012 ADD R1 R1 K30 + 0x7001FFEC, // 0013 JMP #0001 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bytes_format_int +********************************************************************/ +be_local_closure(class_webserver_async_bytes_format_int, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(bytes_format_int), + &be_const_str_solidified, + ( &(const binstruction[49]) { /* code */ + 0x580C001A, // 0000 LDCONST R3 K26 + 0x8C10011B, // 0001 GETMET R4 R0 K27 + 0x7C100200, // 0002 CALL R4 1 + 0x4C100000, // 0003 LDNIL R4 + 0x1C100204, // 0004 EQ R4 R1 R4 + 0x78120001, // 0005 JMPF R4 #0008 + 0x40100002, // 0006 CONNECT R4 R0 R2 + 0x80000800, // 0007 RET 0 + 0x50100000, // 0008 LDBOOL R4 0 0 + 0x1414031C, // 0009 LT R5 R1 K28 + 0x78160001, // 000A JMPF R5 #000D + 0x44040200, // 000B NEG R1 R1 + 0x50100200, // 000C LDBOOL R4 1 0 + 0x1414031C, // 000D LT R5 R1 K28 + 0x78160000, // 000E JMPF R5 #0010 + 0x80000A00, // 000F RET 0 + 0x1C14031C, // 0010 EQ R5 R1 K28 + 0x78160005, // 0011 JMPF R5 #0018 + 0x8C14011D, // 0012 GETMET R5 R0 K29 + 0x581C001E, // 0013 LDCONST R7 K30 + 0x7C140400, // 0014 CALL R5 2 + 0x5416002F, // 0015 LDINT R5 48 + 0x98023805, // 0016 SETIDX R0 K28 R5 + 0x80000A00, // 0017 RET 0 + 0x8C14011D, // 0018 GETMET R5 R0 K29 + 0x541E000A, // 0019 LDINT R7 11 + 0x7C140400, // 001A CALL R5 2 + 0x5814001C, // 001B LDCONST R5 K28 + 0x2418031C, // 001C GT R6 R1 K28 + 0x781A0008, // 001D JMPF R6 #0027 + 0x541A0009, // 001E LDINT R6 10 + 0x10180206, // 001F MOD R6 R1 R6 + 0x541E002F, // 0020 LDINT R7 48 + 0x001C0E06, // 0021 ADD R7 R7 R6 + 0x98000A07, // 0022 SETIDX R0 R5 R7 + 0x00140B1E, // 0023 ADD R5 R5 K30 + 0x541E0009, // 0024 LDINT R7 10 + 0x0C040207, // 0025 DIV R1 R1 R7 + 0x7001FFF4, // 0026 JMP #001C + 0x78120002, // 0027 JMPF R4 #002B + 0x541A002C, // 0028 LDINT R6 45 + 0x98000A06, // 0029 SETIDX R0 R5 R6 + 0x00140B1E, // 002A ADD R5 R5 K30 + 0x8C18011D, // 002B GETMET R6 R0 K29 + 0x5C200A00, // 002C MOVE R8 R5 + 0x7C180400, // 002D CALL R6 2 + 0x8C18011F, // 002E GETMET R6 R0 K31 + 0x7C180200, // 002F CALL R6 1 + 0x80000000, // 0030 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on +********************************************************************/ +be_local_closure(class_webserver_async_on, /* name */ + be_nested_proto( + 11, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(on), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C140128, // 0000 GETMET R5 R0 K40 + 0x5C1C0200, // 0001 MOVE R7 R1 + 0x5C200400, // 0002 MOVE R8 R2 + 0x5C240600, // 0003 MOVE R9 R3 + 0x5C280800, // 0004 MOVE R10 R4 + 0x7C140A00, // 0005 CALL R5 5 + 0x88180120, // 0006 GETMBR R6 R0 K32 + 0x8C180D13, // 0007 GETMET R6 R6 K19 + 0x5C200A00, // 0008 MOVE R8 R5 + 0x7C180400, // 0009 CALL R6 2 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: dispatch +********************************************************************/ +be_local_closure(class_webserver_async_dispatch, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_webserver_async, /* shared constants */ + be_str_weak(dispatch), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x5810001C, // 0000 LDCONST R4 K28 + 0x6014000C, // 0001 GETGBL R5 G12 + 0x88180120, // 0002 GETMBR R6 R0 K32 + 0x7C140200, // 0003 CALL R5 1 + 0x14140805, // 0004 LT R5 R4 R5 + 0x7816000A, // 0005 JMPF R5 #0011 + 0x88140120, // 0006 GETMBR R5 R0 K32 + 0x94140A04, // 0007 GETIDX R5 R5 R4 + 0x8C140B29, // 0008 GETMET R5 R5 K41 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x5C240600, // 000B MOVE R9 R3 + 0x7C140800, // 000C CALL R5 4 + 0x78160000, // 000D JMPF R5 #000F + 0x80000A00, // 000E RET 0 + 0x0010091E, // 000F ADD R4 R4 K30 + 0x7001FFEF, // 0010 JMP #0001 + 0x8C14032A, // 0011 GETMET R5 R1 K42 + 0x541E01F3, // 0012 LDINT R7 500 + 0x5820002B, // 0013 LDCONST R8 K43 + 0x7C140600, // 0014 CALL R5 3 + 0x8C14032C, // 0015 GETMET R5 R1 K44 + 0x581C002D, // 0016 LDCONST R7 K45 + 0x7C140400, // 0017 CALL R5 2 + 0x8C14032E, // 0018 GETMET R5 R1 K46 + 0x7C140200, // 0019 CALL R5 1 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: webserver_async +********************************************************************/ +be_local_class(webserver_async, + 8, + NULL, + be_nested_map(21, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(local_port, -1), be_const_var(0) }, + { be_const_key_weak(dispatchers, 18), be_const_var(4) }, + { be_const_key_weak(set_chunked, 10), be_const_closure(class_webserver_async_set_chunked_closure) }, + { be_const_key_weak(webserver_async_cnx, 20), be_const_class(be_class_webserver_async_cnx) }, + { be_const_key_weak(webserver_async_dispatcher, -1), be_const_class(be_class_webserver_async_dispatcher) }, + { be_const_key_weak(compile_re, -1), be_const_closure(class_webserver_async_compile_re_closure) }, + { be_const_key_weak(dispatch, 7), be_const_closure(class_webserver_async_dispatch_closure) }, + { be_const_key_weak(cors, 11), be_const_var(6) }, + { be_const_key_weak(connections, -1), be_const_var(3) }, + { be_const_key_weak(set_cors, 1), be_const_closure(class_webserver_async_set_cors_closure) }, + { be_const_key_weak(on, -1), be_const_closure(class_webserver_async_on_closure) }, + { be_const_key_weak(bytes_format_int, 16), be_const_static_closure(class_webserver_async_bytes_format_int_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_webserver_async_init_closure) }, + { be_const_key_weak(p1, -1), be_const_var(7) }, + { be_const_key_weak(fastloop_cb, -1), be_const_var(2) }, + { be_const_key_weak(server, 6), be_const_var(1) }, + { be_const_key_weak(clean_connections, 17), be_const_closure(class_webserver_async_clean_connections_closure) }, + { be_const_key_weak(bytes_format_hex, -1), be_const_static_closure(class_webserver_async_bytes_format_hex_closure) }, + { be_const_key_weak(close, 19), be_const_closure(class_webserver_async_close_closure) }, + { be_const_key_weak(loop, -1), be_const_closure(class_webserver_async_loop_closure) }, + { be_const_key_weak(chunked, -1), be_const_var(5) }, + })), + be_str_weak(webserver_async) +); +/********************************************************************/ +/* End of solidification */ diff --git a/tasmota/berry/gpio_viewer/debug_panel.be b/tasmota/berry/gpio_viewer/debug_panel.be index 31759a72f..507dbb9c9 100644 --- a/tasmota/berry/gpio_viewer/debug_panel.be +++ b/tasmota/berry/gpio_viewer/debug_panel.be @@ -21,6 +21,7 @@ class debug_panel var port var web var sampling_interval + var p1, p2 static var SAMPLING = 100 static var HTML_HEAD1 = @@ -72,6 +73,9 @@ class debug_panel self.web = webserver_async(port) self.sampling_interval = self.SAMPLING + self.p1 = bytes(100) + self.p2 = bytes(100) + self.web.set_chunked(true) self.web.set_cors(true) self.web.on("/info_feed", self, self.send_info_feed) @@ -107,9 +111,11 @@ class debug_panel end static class feeder + var app # overarching app (debug_panel) var cnx # connection object - def init(cnx) + def init(app, cnx) + self.app = app self.cnx = cnx tasmota.add_driver(self) end @@ -129,8 +135,8 @@ class debug_panel return end - var payload1 = self.cnx.server.payload1 - var payload2 = self.cnx.server.payload2 + var payload1 = self.app.p1 + var payload2 = self.app.p2 var server = self.cnx.server if cnx.buf_out_empty() # if out buffer is not empty, do not send any new information @@ -172,7 +178,7 @@ class debug_panel cnx.set_chunked(false) # no chunking since we use EventSource cnx.send(200, "text/event-stream") # - var feed = feeder(cnx) + var feed = feeder(self, cnx) feed.send_feed() # send first values immediately end diff --git a/tasmota/berry/gpio_viewer/webserver_async.be b/tasmota/berry/gpio_viewer/webserver_async.be deleted file mode 100644 index dc7801868..000000000 --- a/tasmota/berry/gpio_viewer/webserver_async.be +++ /dev/null @@ -1,642 +0,0 @@ -# -# webserber_async.be - implements a generic async non-blocking HTTP server -# -# Copyright (C) 2023 Stephan Hadinger & Theo Arends -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -# restrictions for now: -# -# Listen to all interfaces -# - GET only -# - no HTTPS -# - support for limited headers -# - HTTP 1.0 only - -#@ solidify:webserver_async -#@ solidify:Webserver_async_cnx - -############################################################# -# class Webserver_async_cnx -############################################################# -class Webserver_async_cnx - var server # link to server object - var cnx # holds the tcpclientasync instance - var close_after_send # if true, close after sending - var fastloop_cb # cb for fastloop - var buf_in # incoming buffer - var buf_in_offset - var buf_out - var phase # parsing phase: 0/ status line, 1/ headers, 2/ payload - # request - var req_verb - var req_uri - var req_version - var header_host - # response - var resp_headers - var resp_version - var chunked # if true enable chunked encoding (default true) - var cors # if true send CORS headers (default false) - # bytes objects to be reused - var payload1 - # conversion - static var CODE_TO_STRING = { - 100: "Continue", - 200: "OK", - 204: "No Content", - 301: "Moved Permanently", - 400: "Bad Request", - 401: "Unauthorized", - 403: "Payment Required", - 404: "Not Found", - 500: "Internal Server Error", - 501: "Not Implemented" - } - - ############################################################# - # init - def init(server, cnx) - self.server = server - self.cnx = cnx - self.buf_in = '' - self.buf_in_offset = 0 - self.buf_out = bytes() - self.phase = 0 - # util - self.payload1 = bytes() - self.close_after_send = false - # response - self.resp_headers = '' - self.resp_version = 1 # HTTP 1.1 # TODO - self.chunked = true - self.cors = false - # register cb - self.fastloop_cb = def () self.loop() end - tasmota.add_fast_loop(self.fastloop_cb) - end - - def set_chunked(chunked) - self.chunked = bool(chunked) - end - - def set_cors(cors) - self.cors = bool(cors) - end - - ############################################################# - # test if connected - def connected() - return self.cnx ? self.cnx.connected() : false - end - - ############################################################# - # test if out buffer is empty, meaning all was sent - def buf_out_empty() - return size(self.buf_out) == 0 - end - - ############################################################# - # write bytes or string - # - # v must be bytes() - def _write(v) - if (size(v) == 0) return end - - var buf_out = self.buf_out - var buf_out_sz = size(buf_out) - buf_out.resize(buf_out_sz + size(v)) - buf_out.setbytes(buf_out_sz, v) - - self._send() # try sending this now - end - - ############################################################# - # closing web server - def close() - tasmota.log(f"WEB: closing cnx", 3) - if (self.cnx != nil) self.cnx.close() end - self.cnx = nil - end - - ############################################################# - # called by fastloop - def loop() - if self.cnx == nil # marked for deletion - # mark as closed with self.cnx == nil - tasmota.remove_fast_loop(self.fastloop_cb) - self.fastloop_cb = nil - return - end - - self._send() # try sending outgoing - - var cnx = self.cnx - if (cnx == nil) return end # it's possible that it was closed after _send() - - # any incoming data? - if cnx.available() > 0 - var buf_in_new = cnx.read() - if (!self.buf_in) - self.buf_in = buf_in_new - else - self.buf_in += buf_in_new - end - end - - # parse incoming if any - if (self.buf_in) - self.parse() - end - end - - ############################################################# - # try sending what we can immediately - def _send() - # any data waiting to go out? - var cnx = self.cnx - if (cnx == nil) return end - var buf_out = self.buf_out - if size(buf_out) > 0 - if cnx.listening() - var sent = cnx.write(buf_out) - if sent > 0 - # we did sent something - if sent >= size(buf_out) - # all sent - self.buf_out.clear() - else - # remove the first bytes already sent - self.buf_out.setbytes(0, buf_out, sent) - self.buf_out.resize(size(buf_out) - sent) - end - end - end - else - # empty buffer, do the cleaning - self.buf_out.clear() - self.buf_in_offset = 0 - - if self.close_after_send - self.close() - end - end - end - - ############################################################# - # parse incoming - # - # pre: self.buf_in is not empty - # post: self.buf_in has made progress (smaller or '') - def parse() - # tasmota.log(f"WEB: incoming {bytes().fromstring(self.buf_in).tohex()}", 3) - if self.phase == 0 - self.parse_http_req_line() - elif self.phase == 1 - self.parse_http_headers() - elif self.phase == 2 - self.parse_http_payload() - end - end - - ############################################################# - # parse incoming request - # - # pre: self.buf_in is not empty - # post: self.buf_in has made progress (smaller or '') - def parse_http_req_line() - var m = global._re_http_srv.match2(self.buf_in, self.buf_in_offset) - # Ex: "GET / HTTP/1.1\r\n" - if m - var offset = m[0] - self.req_verb = m[1] # GET/POST... - self.req_uri = m[2] # / - self.req_version = m[3] # "1.0" or "1.1" - self.phase = 1 # proceed to parsing headers - self.buf_in = self.buf_in[offset .. ] # remove what we parsed - tasmota.log(f"WEB: HTTP verb: {self.req_verb} URI: '{self.req_uri}' Version:{self.req_version}", 3) - self.parse_http_headers() - elif size(self.buf_in) > 100 # if no match and we still have 100 bytes, then it fails - tasmota.log("WEB: error invalid request", 3) - self.close() - self.buf_in = '' - end - end - - ############################################################# - # parse incoming headers - def parse_http_headers() - while true - # print("parse_http_headers", "self.buf_in_offset=", self.buf_in_offset) - var m = global._re_http_srv_header.match2(self.buf_in, self.buf_in_offset) - # print("m=", m) - # Ex: [32, 'Content-Type', 'application/json'] - if m - self.event_http_header(m[1], m[2]) - self.buf_in_offset += m[0] - else # no more headers - var m2 = global._re_http_srv_body.match2(self.buf_in, self.buf_in_offset) - if m2 - # end of headers - # we keep \r\n which is used by pattern - self.buf_in = self.buf_in[self.buf_in_offset + m2[0] .. ] # truncate - self.buf_in_offset = 0 - - self.event_http_headers_end() # no more headers - self.phase = 2 - self.parse_http_payload() # continue to parsing payload - end - if size(self.buf_in) > 1024 # we don't accept a single header larger than 1KB - tasmota.log("WEB: error header is bigger than 1KB", 3) - self.close() - self.buf_in = '' - end - return - end - end - - - self.close() - self.buf_in = '' - end - - ############################################################# - # event_http_header - # - # Received header - def event_http_header(header_key, header_value) - # tasmota.log(f"WEB: header key '{header_key}' = '{header_value}'") - - if (header_key == "Host") - self.header_host = header_value - end - end - - ############################################################# - # event_http_headers_end - # - # All headers are received - def event_http_headers_end() - end - - ############################################################# - # parse incoming payload (if any) - def parse_http_payload() - # tasmota.log(f"WEB: parsing payload '{bytes().fromstring(self.buf_in).tohex()}'") - # dispatch request before parsing payload - self.server.dispatch(self, self.req_uri, self.req_verb) - end - - - ############################################################# - # Responses - ############################################################# - # parse incoming payload (if any) - def send_header(name, value, first) - if first - self.resp_headers = f"{name}: {value}\r\n{self.resp_headers}" - else - self.resp_headers = f"{self.resp_headers}{name}: {value}\r\n" - end - end - - def send(code, content_type, content) - var response = f"HTTP/1.{self.resp_version} {code} {self.code_to_string(code)}\r\n" - if (content_type == nil) content_type = "text/html" end - self.send_header("Content-Type", content_type, true) - - # force chunked TODO - self.send_header("Accept-Ranges", "none") - if self.chunked - self.send_header("Transfer-Encoding", "chunked") - end - # cors - if self.cors - self.send_header("Access-Control-Allow-Origin", "*") - self.send_header("Access-Control-Allow-Methods", "*") - self.send_header("Access-Control-Allow-Headers", "*") - end - # others - self.send_header("Connection", "close") - - response += self.resp_headers - response += "\r\n" - self.resp_headers = nil - - # send - self.write_raw(response) - - if (content) self.write(content) end - end - - static def code_to_string(code) - return _class.CODE_TO_STRING.find(code, "UNKNOWN") - end - - ############################################################# - # async write - def write(v) - if type(v) == 'string' # if string, convert to bytes - v = bytes().fromstring(v) - end - - # use chunk encoding - if self.chunked - var payload1 = self.payload1 - payload1.clear() - payload1 .. f"{size(v):X}\r\n" - payload1 .. v - payload1 .. "\r\n" - - # var chunk = f"{size(v):X}\r\n{v}\r\n" - # tasmota.log(f"WEB: sending chunk '{payload1.tohex()}'") - self._write(payload1) - else - self._write(v) - end - end - - ############################################################# - # async write - def write_raw(v) - if (size(v) == 0) return end - - if type(v) == 'string' # if string, convert to bytes - v = bytes().fromstring(v) - end - - self._write(v) - end - - - def content_stop() - self.write('') - self.close_after_send = true - end -end - -############################################################# -# class Webserver_dispatcher -############################################################# -class Webserver_dispatcher - var uri_prefix # prefix string, must start with '/' - var verb # verb to match, or nil for ANY - var cb_obj - var cb_mth - - def init(uri, cb_obj, cb_mth, verb) - self.uri_prefix = uri - self.cb_obj = cb_obj - self.cb_mth = cb_mth - self.verb = verb - end - - # return true if matched - def dispatch(cnx, uri, verb) - import string - if string.find(uri, self.uri_prefix) == 0 - var match = false - if (self.verb == nil) || (self.verb == verb) - # method is valid - self.cb_mth(self.cb_obj, cnx, uri, verb) - return true - end - end - return false - end -end - -############################################################# -# class webserver_async -# -# This is the main class to call -############################################################# -class webserver_async - var local_port # listening port, 80 is already used by Tasmota - var server # instance of `tcpserver` - var fastloop_cb # closure used by fastloop - var timeout # default timeout for tcp connection - var connections # list of active connections - # var timeout # timeout in ms - # var auth # web authentication string (Basic Auth) or `nil`, in format `user:password` as bade64 - # var cmd # GET url command - var dispatchers - # copied in each connection - var chunked # if true enable chunked encoding (default true) - var cors # if true send CORS headers (default false) - # - var payload1, payload2 # temporary object bytes() to avoid reallocation - - static var TIMEOUT = 1000 # default timeout: 1000ms - static var HTTP_REQ = "^(\\w+) (\\S+) HTTP\\/(\\d\\.\\d)\r\n" - static var HTTP_HEADER_REGEX = "([A-Za-z0-9-]+): (.*?)\r\n" # extract a header with its 2 parts - static var HTTP_BODY_REGEX = "\r\n" # end of headers - - ############################################################# - # init - def init(port, timeout) - if (timeout == nil) timeout = self.TIMEOUT end - self.connections = [] - self.dispatchers = [] - self.server = tcpserver(port) # throws an exception if port is not available - self.chunked = true - self.cors = false - self.payload1 = bytes(100) # reserve 100 bytes by default - self.payload2 = bytes(100) # reserve 100 bytes by default - # TODO what about max_clients ? - self.compile_re() - # register cb - tasmota.add_driver(self) - self.fastloop_cb = def () self.loop() end - tasmota.add_fast_loop(self.fastloop_cb) - end - - ############################################################# - # compile once for all the regex - def compile_re() - import re - if !global.contains("_re_http_srv") - global._re_http_srv = re.compile(self.HTTP_REQ) - global._re_http_srv_header = re.compile(self.HTTP_HEADER_REGEX) - global._re_http_srv_body = re.compile(self.HTTP_BODY_REGEX) - end - end - - ############################################################# - # enable or disable chunked mode (enabled by default) - def set_chunked(chunked) - self.chunked = bool(chunked) - end - - ############################################################# - # enable or disable CORS mode (enabled by default) - def set_cors(cors) - self.cors = bool(cors) - end - - ############################################################# - # Helper function to encode integer as hex (uppercase) - static def bytes_format_hex(b, i, default) - b.clear() - if (i == nil) b .. default return end - # sanity check - if (i < 0) i = -i end - if (i < 0) return end # special case for MININT - if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30") - - b.resize(8) - var len = 0 - while i > 0 - var digit = i & 0x0F - if (digit < 10) - b[len] = 0x30 + digit - else - b[len] = 0x37 + digit # 0x37 = 0x41 ('A') - 10 - end - len += 1 - i = (i >> 4) - end - # reverse order - b.resize(len) - b.reverse() - end - - ############################################################# - # Helper function to encode integer as int - static def bytes_format_int(b, i, default) - b.clear() - if (i == nil) b .. default return end - var negative = false - # sanity check - if (i < 0) i = -i negative = true end - if (i < 0) return end # special case for MININT - if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30") - - b.resize(11) # max size for 32 bits ints '-2147483647' - var len = 0 - while i > 0 - var digit = i % 10 - b[len] = 0x30 + digit - len += 1 - i = (i / 10) - end - if negative - b[len] = 0x2D - len += 1 - end - # reverse order - b.resize(len) - b.reverse() - end - - ############################################################# - # closing web server - def close() - tasmota.remove_driver(self) - tasmota.remove_fast_loop(self.fastloop_cb) - self.fastloop_cb = nil - self.server.close() - - # close all active connections - for cnx: self.connections - cnx.close() - end - self.connections = nil # and free memory - end - - ############################################################# - # clean connections - # - # Remove any connections that is closed or in error - def clean_connections() - var idx = 0 - while idx < size(self.connections) - var cnx = self.connections[idx] - # remove if not connected - if !cnx.connected() - # tasmota.log("WEB: does not appear to be connected") - cnx.close() - self.connections.remove(idx) - else - idx += 1 - end - end - end - - ############################################################# - # called by fastloop - def loop() - self.clean_connections() - # check if any incoming connection - while self.server.hasclient() - # retrieve new client - var cnx = Webserver_async_cnx(self, self.server.acceptasync()) - cnx.set_chunked(self.chunked) - cnx.set_cors(self.cors) - self.connections.push(cnx) - end - end - - ############################################################# - # add to dispatcher - def on(prefix, obj, mth, verb) - var dispatcher = Webserver_dispatcher(prefix, obj, mth, verb) - self.dispatchers.push(dispatcher) - end - - ############################################################# - # add to dispatcher - def dispatch(cnx, uri, verb) - var idx = 0 - while idx < size(self.dispatchers) - if (self.dispatchers[idx].dispatch(cnx, uri, verb)) - return - end - idx += 1 - end - # fallback unsupported request - cnx.send(500, "text/plain") - cnx.write("Unsupported") - cnx.content_stop() - end - -end - -return webserver_async - -#- Test - -var web = webserver_async(888) - -def send_more(cnx, i) - cnx.write(f"

Hello world {i}

") - if i < 10 - tasmota.set_timer(1000, def () send_more(cnx, i+1) end) - else - cnx.content_stop() - end -end - -def f(obj, cnx, uri, verb) - cnx.send(200, "text/html") - cnx.write("") - send_more(cnx, 0) - # cnx.write("Hello world") - # cnx.content_stop() -end - -web.on("/hello", nil, f) - --# diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino index 969ec9bd9..4f75397e1 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino @@ -240,7 +240,7 @@ extern "C" { WiFiClient * client_ptr = nullptr; if (server_tcp->hasClient()) { WiFiClient new_client = server_tcp->available(); - AddLog(LOG_LEVEL_INFO, "BRY: Got connection from %s:%i local %s:%i", new_client.remoteIP().toString(true).c_str(), new_client.remotePort(), new_client.localIP().toString().c_str(), new_client.localPort()); + AddLog(LOG_LEVEL_DEBUG_MORE, "BRY: Got connection from %s:%i local %s:%i", new_client.remoteIP().toString(true).c_str(), new_client.remotePort(), new_client.localIP().toString().c_str(), new_client.localPort()); client_ptr = new WiFiClient(); *client_ptr = new_client; } else { @@ -254,7 +254,7 @@ extern "C" { AsyncTCPClient * client_ptr = nullptr; if (server_tcp->hasClient()) { client_ptr = server_tcp->availableAsync(); - AddLog(LOG_LEVEL_INFO, "BRY: Got connection from %s:%i local %s:%i", client_ptr->remoteIP().toString(true).c_str(), client_ptr->remotePort(), client_ptr->localIP().toString().c_str(), client_ptr->localPort()); + AddLog(LOG_LEVEL_DEBUG_MORE, "BRY: Got connection from %s:%i local %s:%i", client_ptr->remoteIP().toString(true).c_str(), client_ptr->remotePort(), client_ptr->localIP().toString().c_str(), client_ptr->localPort()); } else { be_raise(vm, "internal_error", "tcpserver has no client connected"); } From 9af25c73d6474520b9d0cceecc06083aa082694f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:01:09 +0200 Subject: [PATCH 191/252] Refactor ADC MQ_SAMPLES saving code and RAM --- tasmota/tasmota_xsns_sensor/xsns_02_analog.ino | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 88928ab19..f085cdcc8 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -163,6 +163,8 @@ struct { } Adcs; struct { +// float mq_samples[ANALOG_MQ_SAMPLES]; + float *mq_samples; float temperature = 0; float current = 0; float energy = 0; @@ -170,12 +172,11 @@ struct { uint32_t param2 = 0; int param3 = 0; int param4 = 0; + int indexOfPointer = -1; uint32_t previous_millis = 0; uint16_t last_value = 0; uint8_t type = 0; uint8_t pin = 0; - float mq_samples[ANALOG_MQ_SAMPLES]; - int indexOfPointer = -1; } Adc[MAX_ADCS]; bool adcAttachPin(uint8_t pin) { @@ -261,6 +262,10 @@ void AdcAttach(uint32_t pin, uint8_t type) { if (Adcs.present == MAX_ADCS) { return; } Adc[Adcs.present].pin = pin; if (adcAttachPin(Adc[Adcs.present].pin)) { + if (ADC_MQ == type) { + Adc[Adcs.present].mq_samples = (float*)calloc(sizeof(float), ANALOG_MQ_SAMPLES); // Need calloc to reset registers to 0/false + if (nullptr == Adc[Adcs.present].mq_samples) { return; } + } Adc[Adcs.present].type = type; // analogSetPinAttenuation(Adc[Adcs.present].pin, ADC_11db); // Default Adcs.present++; From 4cf741e6eb559e075ec7622e340ee48ced3b0802 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:02:27 +0200 Subject: [PATCH 192/252] Update xsns_02_analog.ino --- tasmota/tasmota_xsns_sensor/xsns_02_analog.ino | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index f085cdcc8..e25ef6592 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -163,7 +163,6 @@ struct { } Adcs; struct { -// float mq_samples[ANALOG_MQ_SAMPLES]; float *mq_samples; float temperature = 0; float current = 0; @@ -243,9 +242,9 @@ void AdcInitParams(uint8_t idx) { } else if (ADC_MQ == Adc[idx].type) { Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... - Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression } } if ((Adcs.type != Adc[idx].type) || (0 == Adc[idx].param1) || (Adc[idx].param1 > ANALOG_RANGE)) { @@ -263,11 +262,10 @@ void AdcAttach(uint32_t pin, uint8_t type) { Adc[Adcs.present].pin = pin; if (adcAttachPin(Adc[Adcs.present].pin)) { if (ADC_MQ == type) { - Adc[Adcs.present].mq_samples = (float*)calloc(sizeof(float), ANALOG_MQ_SAMPLES); // Need calloc to reset registers to 0/false + Adc[Adcs.present].mq_samples = (float*)calloc(sizeof(float), ANALOG_MQ_SAMPLES); // Need calloc to reset registers to 0 if (nullptr == Adc[Adcs.present].mq_samples) { return; } } Adc[Adcs.present].type = type; -// analogSetPinAttenuation(Adc[Adcs.present].pin, ADC_11db); // Default Adcs.present++; } } From 035daa663b74f0297e539816a7bc262171f7597b Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 26 Jul 2024 12:44:25 +0200 Subject: [PATCH 193/252] Berry `file.write()` raises an exception on failure (ex: disk full) (#21849) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_filelib.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61d025f59..1332a0041 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. ### Fixed - Berry `light.get` for separate RGB/CT (#21818) - Berry `bytes` setters and getters with negative offsets (#21835) +- Berry `file.write()` raises an exception on failure (ex: disk full) ### Removed - Berry internal: remove class from closure to simplify code (#21839) diff --git a/lib/libesp32/berry/src/be_filelib.c b/lib/libesp32/berry/src/be_filelib.c index f4f760b1e..5bd38bad8 100644 --- a/lib/libesp32/berry/src/be_filelib.c +++ b/lib/libesp32/berry/src/be_filelib.c @@ -26,7 +26,10 @@ static int i_write(bvm *vm) } else { data = be_tobytes(vm, 2, &size); } - be_fwrite(fh, data, size); + size_t bw = be_fwrite(fh, data, size); + if (bw != size) { + be_raise(vm, "io_error", "write failed"); + } } be_return_nil(vm); } From e02615827b04b4290567b504b4c7bac8c73f74b1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 26 Jul 2024 13:50:15 +0200 Subject: [PATCH 194/252] Fix compilation without SPI --- lib/lib_display/UDisplay/uDisplay.cpp | 4 +- tasmota/tasmota_support/support.ino | 55 --------------- tasmota/tasmota_support/support_a_spi.ino | 82 +++++++++++++++++++++++ 3 files changed, 84 insertions(+), 57 deletions(-) create mode 100644 tasmota/tasmota_support/support_a_spi.ino diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 0bd51ae40..5b572177d 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -2021,14 +2021,14 @@ bool uDisplay::utouch_Init(char **name) { attachInterrupt(ut_irq, ut_touch_irq, FALLING); } -extern SPIClass *Init_SPI_Bus(uint32 bus); +extern SPIClass *SpiBegin(uint32 bus); if (ut_spi_nr == spi_nr) { // same as display ut_spi = uspi; } else { #ifdef ESP32 - ut_spi = Init_SPI_Bus(ut_spi_nr); + ut_spi = SpiBegin(ut_spi_nr); #endif } return ut_execute(ut_init_code); diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index ae2308c49..805bfeca4 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -1791,29 +1791,6 @@ bool ValidSpiPinUsed(uint32_t gpio) { return result; } -#ifdef ESP32 -#ifndef FIRMWARE_SAFEBOOT -SPIClass *Init_SPI_Bus(uint32 bus) { - SPIClass *spi; - if (1 == bus) { - if (TasmotaGlobal.spi_enabled) { - spi = &SPI; - spi->begin(Pin(GPIO_SPI_CLK, 0), Pin(GPIO_SPI_MISO, 0), Pin(GPIO_SPI_MOSI, 0), -1); - return spi; - } - } - if (2 == bus) { - if (TasmotaGlobal.spi_enabled2) { - spi = new SPIClass(HSPI); - spi->begin(Pin(GPIO_SPI_CLK, 1), Pin(GPIO_SPI_MISO, 1), Pin(GPIO_SPI_MOSI, 1), -1); - return spi; - } - } - return nullptr; -} -#endif // FIRMWARE_SAFEBOOT -#endif // ESP32 - bool JsonTemplate(char* dataBuf) { // Old: {"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18} @@ -2673,38 +2650,6 @@ void AddLogMissed(const char *sensor, uint32_t misses) AddLog(LOG_LEVEL_DEBUG, PSTR("SNS: %s missed %d"), sensor, SENSOR_MAX_MISS - misses); } -void AddLogSpi(uint32_t hardware, int clk, int mosi, int miso) { - uint32_t enabled = TasmotaGlobal.soft_spi_enabled; - char hwswbus[8]; - if (hardware) { -#ifdef ESP8266 - strcpy_P(hwswbus, PSTR("Hard")); - enabled = TasmotaGlobal.spi_enabled; -#endif -#ifdef ESP32 - strcpy_P(hwswbus, PSTR("Bus0")); - hwswbus[3] += (char)hardware; - enabled = (1 == hardware) ? TasmotaGlobal.spi_enabled : TasmotaGlobal.spi_enabled2; -#endif - } else { - strcpy_P(hwswbus, PSTR("Soft")); - } - switch(enabled) { - case SPI_MOSI: - AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MOSI)"), - hwswbus, clk, mosi); - break; - case SPI_MISO: - AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MISO)"), - hwswbus, clk, miso); - break; - case SPI_MOSI_MISO: - AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK), GPIO%02d(MOSI) and GPIO%02d(MISO)"), - hwswbus, clk, mosi, miso); - break; - } -} - /*********************************************************************************************\ * HTML and URL encode \*********************************************************************************************/ diff --git a/tasmota/tasmota_support/support_a_spi.ino b/tasmota/tasmota_support/support_a_spi.ino new file mode 100644 index 000000000..fe349ad33 --- /dev/null +++ b/tasmota/tasmota_support/support_a_spi.ino @@ -0,0 +1,82 @@ +/* + support_a_spi.ino - SPI support for Tasmota + + SPDX-FileCopyrightText: 2024 Theo Arends + + SPDX-License-Identifier: GPL-3.0-only +*/ + +#ifdef USE_SPI +/*********************************************************************************************\ + * Basic SPI routines supporting two busses +\*********************************************************************************************/ + +SPIClass *SpiBegin(uint32 bus = 1); +SPIClass *SpiBegin(uint32 bus) { + SPIClass *spi; + if (1 == bus) { // SPI bus 1 + if (TasmotaGlobal.spi_enabled) { + spi = &SPI; // This uses HSPI by default +#ifdef ESP8266 + spi->begin(); +#endif // ESP8266 +#ifdef ESP32 + spi->begin(Pin(GPIO_SPI_CLK), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_MOSI), -1); +#endif // ESP32 + return spi; + } + } +#ifdef ESP32 + if (2 == bus) { // SPI bus 2 + if (TasmotaGlobal.spi_enabled2) { + // See framework-arduinoespressif32 esp32-hal-spi.h +#if CONFIG_IDF_TARGET_ESP32S2 + spi = new SPIClass(SPI3); +#elif CONFIG_IDF_TARGET_ESP32 + spi = new SPIClass(VSPI); +#else + spi = new SPIClass(HSPI); // Same as SPI bus 1 ??? +#endif + spi->begin(Pin(GPIO_SPI_CLK, 1), Pin(GPIO_SPI_MISO, 1), Pin(GPIO_SPI_MOSI, 1), -1); + return spi; + } + } +#endif // ESP32 + return nullptr; +} + +#endif // USE_SPI + +/********************************************************************************************/ + +void AddLogSpi(uint32_t hardware, int clk, int mosi, int miso) { + uint32_t enabled = TasmotaGlobal.soft_spi_enabled; + char hwswbus[8]; + if (hardware) { +#ifdef ESP8266 + strcpy_P(hwswbus, PSTR("Hard")); + enabled = TasmotaGlobal.spi_enabled; +#endif +#ifdef ESP32 + strcpy_P(hwswbus, PSTR("Bus0")); + hwswbus[3] += (char)hardware; + enabled = (1 == hardware) ? TasmotaGlobal.spi_enabled : TasmotaGlobal.spi_enabled2; +#endif + } else { + strcpy_P(hwswbus, PSTR("Soft")); + } + switch(enabled) { + case SPI_MOSI: + AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MOSI)"), + hwswbus, clk, mosi); + break; + case SPI_MISO: + AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MISO)"), + hwswbus, clk, miso); + break; + case SPI_MOSI_MISO: + AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK), GPIO%02d(MOSI) and GPIO%02d(MISO)"), + hwswbus, clk, mosi, miso); + break; + } +} From f1a898c5ca8328f26a79735145ee195702e05bb8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:12:08 +0200 Subject: [PATCH 195/252] Update changelogs --- CHANGELOG.md | 6 +++--- RELEASENOTES.md | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1332a0041..a72745605 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,17 +8,17 @@ All notable changes to this project will be documented in this file. - Support for Sonoff iFan04-H using template (#16402) - Matter improve internal `inspect`for superclasses (#21824) - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) -- Berry `webserver_async` +- Berry `webserver_async` (#21836) ### Breaking Changed ### Changed -- Berry consolidated constants for solidified classes reduces Flash size +- Berry consolidated constants for solidified classes reduces Flash size (#2185) ### Fixed - Berry `light.get` for separate RGB/CT (#21818) - Berry `bytes` setters and getters with negative offsets (#21835) -- Berry `file.write()` raises an exception on failure (ex: disk full) +- Berry `file.write()` raises an exception on failure (ex: disk full) (#21849) ### Removed - Berry internal: remove class from closure to simplify code (#21839) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 3c96a90ae..181fa5aca 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -133,13 +133,14 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) - Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601) -- Berry add `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) +- Berry `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602) - Berry `classof` extended to class methods [#21615](https://github.com/arendst/Tasmota/issues/21615) - Berry `tasmota.rtc("config_time")` [#21698](https://github.com/arendst/Tasmota/issues/21698) - Berry `math.min()` and `math.max()` [#21705](https://github.com/arendst/Tasmota/issues/21705) - Berry `FUNC_ANY_KEY` event calling `any_key()` [#21708](https://github.com/arendst/Tasmota/issues/21708) - Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second [#21711](https://github.com/arendst/Tasmota/issues/21711) - Berry `int64` added `low32()` and `high32()` methods, used in Matter [#21728](https://github.com/arendst/Tasmota/issues/21728) +- Berry `webserver_async` [#21836](https://github.com/arendst/Tasmota/issues/21836) - Berry cam module and img class [#21743](https://github.com/arendst/Tasmota/issues/21743) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) @@ -169,6 +170,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131) - Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812) +- Berry consolidated constants for solidified classes reduces Flash size [#2185](https://github.com/arendst/Tasmota/issues/2185) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) - Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633) @@ -185,6 +187,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716) - Berry `light.get` for separate RGB/CT [#21818](https://github.com/arendst/Tasmota/issues/21818) - Berry `bytes` setters and getters with negative offsets [#21835](https://github.com/arendst/Tasmota/issues/21835) +- Berry `file.write()` raises an exception on failure (ex: disk full) [#21849](https://github.com/arendst/Tasmota/issues/21849) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) - Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644) - Matter TLV.U8 unsigned encoding [#21672](https://github.com/arendst/Tasmota/issues/21672) From d4a63f791ed20e269cd59f39d7f1c8fd84e9c28f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:29:51 +0200 Subject: [PATCH 196/252] Fix SPI busses --- tasmota/tasmota_support/support_a_spi.ino | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tasmota/tasmota_support/support_a_spi.ino b/tasmota/tasmota_support/support_a_spi.ino index fe349ad33..35a3db4b0 100644 --- a/tasmota/tasmota_support/support_a_spi.ino +++ b/tasmota/tasmota_support/support_a_spi.ino @@ -16,7 +16,7 @@ SPIClass *SpiBegin(uint32 bus) { SPIClass *spi; if (1 == bus) { // SPI bus 1 if (TasmotaGlobal.spi_enabled) { - spi = &SPI; // This uses HSPI by default + spi = &SPI; // Uses VSPI on ESP32 or FSPI on all other ESP32 derivatives (See SPI.cpp) #ifdef ESP8266 spi->begin(); #endif // ESP8266 @@ -29,14 +29,7 @@ SPIClass *SpiBegin(uint32 bus) { #ifdef ESP32 if (2 == bus) { // SPI bus 2 if (TasmotaGlobal.spi_enabled2) { - // See framework-arduinoespressif32 esp32-hal-spi.h -#if CONFIG_IDF_TARGET_ESP32S2 - spi = new SPIClass(SPI3); -#elif CONFIG_IDF_TARGET_ESP32 - spi = new SPIClass(VSPI); -#else - spi = new SPIClass(HSPI); // Same as SPI bus 1 ??? -#endif + spi = new SPIClass(HSPI); // See framework-arduinoespressif32 esp32-hal-spi.h spi->begin(Pin(GPIO_SPI_CLK, 1), Pin(GPIO_SPI_MISO, 1), Pin(GPIO_SPI_MOSI, 1), -1); return spi; } From a95e52b3753867c7c2f2101ece18c2bfa1c20c50 Mon Sep 17 00:00:00 2001 From: Tarvi Pillessaar Date: Sat, 27 Jul 2024 12:39:43 +0300 Subject: [PATCH 197/252] Neopool relay state detection and reporting fixes (#21841) * Neopool: remove space in MQTT relay state response * Neopool: fix detecting some relay states --- tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino index 75dd67e26..13e53f560 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino @@ -2137,16 +2137,16 @@ void NeoPoolShow(bool json) ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CL "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_CL_RELAY_GPIO)-1)) & 1); } if (0 != NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)) { - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CD " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)) & 1); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CD "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)-1)) & 1); } if (0 != NeoPoolGetData(MBF_PAR_HEATING_GPIO)) { - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_HEATING " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_HEATING_GPIO)) & 1); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_HEATING "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_HEATING_GPIO)-1)) & 1); } if (0 != NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)) { - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_UV " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)) & 1); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_UV "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)-1)) & 1); } if (0 != NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) { - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_FILTVALVE " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) & 1); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_FILTVALVE "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)-1)) & 1); } ResponseJsonEnd(); From 5abff54bc6a466a65e9472ac1ff66f863297792f Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Sat, 27 Jul 2024 11:41:06 +0200 Subject: [PATCH 198/252] Add NeoPool `NPSetOption` command (#21850) --- CHANGELOG.md | 1 + .../tasmota_xsns_sensor/xsns_83_neopool.ino | 212 +++++++++++------- 2 files changed, 128 insertions(+), 85 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a72745605..ea4626dd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Matter improve internal `inspect`for superclasses (#21824) - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) - Berry `webserver_async` (#21836) +- NeoPool add `NPSetOption` command to enabled/disable data validation/connection statistics ### Breaking Changed diff --git a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino index 13e53f560..5311db7e3 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino @@ -763,18 +763,30 @@ enum NeoPoolResult { #define NEOPOOL_DEFAULT_RESULT NEOPOOL_RESULT_HEX #define NEOPOOL_DEFAULT_NPTELEPERIOD 0 -// NeoPool value resolutions -typedef struct { - uint16_t ph : 2; - uint16_t cl : 2; - uint16_t ion : 2; -} NeoPoolResMBitfield; +typedef union { + uint16_t data; // Allow bit manipulation + struct { + uint16_t ph : 2; // bit 0,1 - pH value resolution + uint16_t cl : 2; // bit 2,3 - CL value resolution + uint16_t ion : 2; // bit 4,5 - ION value resolution + uint16_t range_check : 1; // bit 6 - enable data validation and repair + uint16_t conn_stat : 1; // bit 7 - enable connection statistic + uint16_t spare08 : 1; // bit 8 + uint16_t spare09 : 1; // bit 9 + uint16_t spare10 : 1; // bit 10 + uint16_t spare11 : 1; // bit 11 + uint16_t spare12 : 1; // bit 12 + uint16_t spare13 : 1; // bit 13 + uint16_t spare14 : 1; // bit 14 + uint16_t spare15 : 1; // bit 15 + }; +} NeoPoolBitfield;; // Global structure containing sensor saved variables struct { uint32_t crc32; uint16_t version; - NeoPoolResMBitfield resolution; + NeoPoolBitfield flags; uint8_t result; uint16_t npteleperiod; } NeoPoolSettings; @@ -1099,6 +1111,13 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)"; * NPIonRes {} * get/set number of digits in results for PH, CL and ION values * + * NPSetOption0 {0|1} + * (only available on ESP32 or if NEOPOOL_RANGE_CHECKS is defined) + * Disable(0)/Enable(1) sensor data min/max validation and correction () + * + * NPSetOption1 {0|1} + * (only available on ESP32 or if NEOPOOL_CONNSTAT is defined) + * Disable(0)/Enable(1) modbus connection statistics * * NPRead {} * NPReadL {} @@ -1193,6 +1212,8 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)"; #define D_CMND_NP_PHRES "PHRes" #define D_CMND_NP_CLRES "CLRes" #define D_CMND_NP_IONRES "IONRes" +#define D_CMND_NP_SETOPTION "SetOption" +#define D_CMND_NP_SO "SO" #ifdef NEOPOOL_EMULATE_GPERH #define D_CMND_NP_GPERH "gPerh" #endif @@ -1226,7 +1247,9 @@ const char kNPCommands[] PROGMEM = D_PRFX_NEOPOOL "|" // Prefix D_CMND_NP_ONERROR "|" D_CMND_NP_PHRES "|" D_CMND_NP_CLRES "|" - D_CMND_NP_IONRES + D_CMND_NP_IONRES "|" + D_CMND_NP_SETOPTION "|" + D_CMND_NP_SO #ifdef NEOPOOL_EMULATE_GPERH "|" D_CMND_NP_GPERH #endif @@ -1261,7 +1284,9 @@ void (* const NPCommand[])(void) PROGMEM = { &CmndNeopoolOnError, &CmndNeopoolPHRes, &CmndNeopoolCLRes, - &CmndNeopoolIONRes + &CmndNeopoolIONRes, + &CmndNeopoolSetOption, + &CmndNeopoolSetOption #ifdef NEOPOOL_EMULATE_GPERH ,&CmndNeopoolgPerh #endif @@ -1716,47 +1741,49 @@ uint16_t NeoPoolGetData(uint16_t addr) uint16_t data = NeoPoolGetCacheData(addr, -1); #ifdef NEOPOOL_RANGE_CHECKS - for (uint16_t i = 0; i < nitems(NeoPoolRangeCheck); i++) { - if (MBF_HIDRO_CURRENT == NeoPoolRangeCheck[i].addr && NEOPOOL_UNDEF_UINT16 == NeoPoolRangeCheck[i].max) { - // get hydrolsysis max value - uint16_t max = NeoPoolGetCacheData(MBF_PAR_HIDRO_NOM, -1); - if (0 != max) { - NeoPoolRangeCheck[i].max = max; -#ifdef DEBUG_TASMOTA_SENSOR - AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - use hydrolysis max = %d"), NeoPoolRangeCheck[i].max); -#endif - } - } - if (NeoPoolRangeCheck[i].addr == addr) { - uint16_t prev_data = data; - // check out of range - if (data < NeoPoolRangeCheck[i].min || data > NeoPoolRangeCheck[i].max) { -#ifdef NEOPOOL_CONNSTAT - NeoPoolStats.value_out_of_range++; -#endif - // use previous value if defined - if (NEOPOOL_UNDEF_UINT16 != NeoPoolRangeCheck[i].prev) { - data = NeoPoolRangeCheck[i].prev; - } else { - // limit to min/max as long as no valid previous value is present - if (data < NeoPoolRangeCheck[i].min) { - data = NeoPoolRangeCheck[i].min; - } else { - data = NeoPoolRangeCheck[i].max; - } + if (NeoPoolSettings.flags.range_check) { + for (uint16_t i = 0; i < nitems(NeoPoolRangeCheck); i++) { + if (MBF_HIDRO_CURRENT == NeoPoolRangeCheck[i].addr && NEOPOOL_UNDEF_UINT16 == NeoPoolRangeCheck[i].max) { + // get hydrolsysis max value + uint16_t max = NeoPoolGetCacheData(MBF_PAR_HIDRO_NOM, -1); + if (0 != max) { + NeoPoolRangeCheck[i].max = max; + #ifdef DEBUG_TASMOTA_SENSOR + AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - use hydrolysis max = %d"), NeoPoolRangeCheck[i].max); + #endif } -#ifdef DEBUG_TASMOTA_SENSOR - AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - Addr 0x%04X data out of range [%d-%d]: received %d, corrected using %d"), - NeoPoolRangeCheck[i].addr, - NeoPoolRangeCheck[i].min, - NeoPoolRangeCheck[i].max, - prev_data, - data); -#endif } - else { - // remeber origin value - NeoPoolRangeCheck[i].prev = data; + if (NeoPoolRangeCheck[i].addr == addr) { + uint16_t prev_data = data; + // check out of range + if (data < NeoPoolRangeCheck[i].min || data > NeoPoolRangeCheck[i].max) { + #ifdef NEOPOOL_CONNSTAT + NeoPoolStats.value_out_of_range++; + #endif + // use previous value if defined + if (NEOPOOL_UNDEF_UINT16 != NeoPoolRangeCheck[i].prev) { + data = NeoPoolRangeCheck[i].prev; + } else { + // limit to min/max as long as no valid previous value is present + if (data < NeoPoolRangeCheck[i].min) { + data = NeoPoolRangeCheck[i].min; + } else { + data = NeoPoolRangeCheck[i].max; + } + } + #ifdef DEBUG_TASMOTA_SENSOR + AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - Addr 0x%04X data out of range [%d-%d]: received %d, corrected using %d"), + NeoPoolRangeCheck[i].addr, + NeoPoolRangeCheck[i].min, + NeoPoolRangeCheck[i].max, + prev_data, + data); + #endif + } + else { + // remeber origin value + NeoPoolRangeCheck[i].prev = data; + } } } } @@ -1976,13 +2003,13 @@ void NeoPoolShow(bool json) // pH if (NeoPoolIspHModule()) { fvalue = (float)NeoPoolGetData(MBF_MEASURE_PH)/100; - ResponseAppend_P(PSTR(",\"" D_PH "\":{\"" D_JSON_DATA "\":" NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fvalue); + ResponseAppend_P(PSTR(",\"" D_PH "\":{\"" D_JSON_DATA "\":" NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fvalue); // S1 float fphmin = (float)NeoPoolGetData(MBF_PAR_PH2)/100; - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MIN "\":" NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fphmin); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MIN "\":" NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fphmin); float fphmax = (float)NeoPoolGetData(MBF_PAR_PH1)/100; - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fphmax); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fphmax); // S2 ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_STATE "\":%d"), (NeoPoolGetData(MBF_PH_STATUS) & MBMSK_PH_STATUS_ALARM)); @@ -2018,9 +2045,9 @@ void NeoPoolShow(bool json) if (NeoPoolIsChlorine()) { ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CHLORINE "\":{")); fvalue = (float)NeoPoolGetData(MBF_MEASURE_CL)/100; - ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_CL), NeoPoolSettings.resolution.cl, &fvalue); + ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_CL), NeoPoolSettings.flags.cl, &fvalue); fvalue = (float)NeoPoolGetData(MBF_PAR_CL1)/100; - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_CL), NeoPoolSettings.resolution.cl, &fvalue); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_CL), NeoPoolSettings.flags.cl, &fvalue); ResponseJsonEnd(); } @@ -2033,11 +2060,11 @@ void NeoPoolShow(bool json) if (NeoPoolIsIonization()) { ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_IONIZATION "\":{")); fvalue = (float)NeoPoolGetData(MBF_ION_CURRENT); - ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_ION), NeoPoolSettings.resolution.ion, &fvalue); + ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_ION), NeoPoolSettings.flags.ion, &fvalue); fvalue = (float)NeoPoolGetData(MBF_PAR_ION); - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_ION), NeoPoolSettings.resolution.ion, &fvalue); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_ION), NeoPoolSettings.flags.ion, &fvalue); fvalue = (float)NeoPoolGetData(MBF_PAR_ION_NOM); - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_ION), NeoPoolSettings.resolution.ion, &fvalue); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_ION), NeoPoolSettings.flags.ion, &fvalue); ResponseJsonEnd(); } @@ -2151,19 +2178,21 @@ void NeoPoolShow(bool json) ResponseJsonEnd(); #ifdef NEOPOOL_CONNSTAT - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT "\":{")); - ResponseAppend_P(PSTR( "\"" D_JSON_TIME "\":\"%s\""), GetDT(NeoPoolStats.time).c_str()); - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_REQUESTS "\":%d"), NeoPoolStats.mb_requests); - uint32_t mb_sum = 0; - for(uint16_t i = 0; i < nitems(NeoPoolStats.mb_results); i++) { - char mbresult[32]; - GetTextIndexed(mbresult, sizeof(mbresult), i, kNeoPoolMBResults); - ResponseAppend_P(PSTR(",\"%s\":%d"), mbresult,NeoPoolStats.mb_results[i]); - mb_sum += NeoPoolStats.mb_results[i]; + if (NeoPoolSettings.flags.conn_stat) { + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT "\":{")); + ResponseAppend_P(PSTR( "\"" D_JSON_TIME "\":\"%s\""), GetDT(NeoPoolStats.time).c_str()); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_REQUESTS "\":%d"), NeoPoolStats.mb_requests); + uint32_t mb_sum = 0; + for(uint16_t i = 0; i < nitems(NeoPoolStats.mb_results); i++) { + char mbresult[32]; + GetTextIndexed(mbresult, sizeof(mbresult), i, kNeoPoolMBResults); + ResponseAppend_P(PSTR(",\"%s\":%d"), mbresult,NeoPoolStats.mb_results[i]); + mb_sum += NeoPoolStats.mb_results[i]; + } + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS "\":%d"), NeoPoolStats.mb_requests - mb_sum); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_DATA_OOR "\":%d"), NeoPoolStats.value_out_of_range); + ResponseJsonEnd(); } - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS "\":%d"), NeoPoolStats.mb_requests - mb_sum); - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_DATA_OOR "\":%d"), NeoPoolStats.value_out_of_range); - ResponseJsonEnd(); #endif ResponseJsonEnd(); @@ -2258,11 +2287,11 @@ void NeoPoolShow(bool json) if (NeoPoolIspHModule()) { // Data fvalue = (float)NeoPoolGetData(MBF_MEASURE_PH)/100; - WSContentSend_PD(HTTP_SNS_NEOPOOL_PH, neopool_type, NeoPoolSettings.resolution.ph, &fvalue); + WSContentSend_PD(HTTP_SNS_NEOPOOL_PH, neopool_type, NeoPoolSettings.flags.ph, &fvalue); WSContentSend_PD(PSTR(" ")); // S1 float fphmax = (float)NeoPoolGetData(MBF_PAR_PH1)/100; - ext_snprintf_P(stemp, sizeof(stemp), PSTR(NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fphmax); + ext_snprintf_P(stemp, sizeof(stemp), PSTR(NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fphmax); WSContentSend_PD(HTTP_SNS_NEOPOOL_STATUS, bg_color, (((uint16_t)(fvalue*10) > (uint16_t)(fphmax*10)) ? HTTP_SNS_NEOPOOL_STATUS_ACTIVE : HTTP_SNS_NEOPOOL_STATUS_INACTIVE), stemp); WSContentSend_PD(PSTR(" ")); @@ -2312,7 +2341,7 @@ void NeoPoolShow(bool json) // Chlorine if (NeoPoolIsChlorine()) { fvalue = (float)NeoPoolGetData(MBF_MEASURE_CL)/100; - WSContentSend_PD(HTTP_SNS_NEOPOOL_PPM_CHLORINE, neopool_type, NeoPoolSettings.resolution.ph, &fvalue); + WSContentSend_PD(HTTP_SNS_NEOPOOL_PPM_CHLORINE, neopool_type, NeoPoolSettings.flags.ph, &fvalue); } // Conductivity @@ -2331,7 +2360,7 @@ void NeoPoolShow(bool json) ); fvalue = (float)NeoPoolGetData(MBF_ION_CURRENT); WSContentSend_PD(HTTP_SNS_NEOPOOL_IONIZATION, neopool_type, - NeoPoolSettings.resolution.ion, &fvalue, + NeoPoolSettings.flags.ion, &fvalue, stemp, NeoPoolGetData(MBF_ION_STATUS) & MBMSK_ION_STATUS_LOW ? PSTR(" " D_NEOPOOL_LOW) : PSTR("") ); @@ -2941,7 +2970,7 @@ void CmndNeopoolpHMin(void) return; } if (CmndNeopoolSetParam(MBF_PAR_PH2, 100, 0, (float)data/100)) { - CmndNeopoolGetParam(MBF_PAR_PH2, 100, NeoPoolSettings.resolution.ph); + CmndNeopoolGetParam(MBF_PAR_PH2, 100, NeoPoolSettings.flags.ph); } } else { NeopoolCmndError(); @@ -2959,7 +2988,7 @@ void CmndNeopoolpHMax(void) return; } if (CmndNeopoolSetParam(MBF_PAR_PH1, 100, (float)data/100, 14)) { - CmndNeopoolGetParam(MBF_PAR_PH1, 100, NeoPoolSettings.resolution.ph); + CmndNeopoolGetParam(MBF_PAR_PH1, 100, NeoPoolSettings.flags.ph); } } else { NeopoolCmndError(); @@ -3065,7 +3094,7 @@ void CmndNeopoolIonization(void) return; } if (CmndNeopoolSetParam(MBF_PAR_ION, 1, 0, (float)data)) { - CmndNeopoolGetParam(MBF_PAR_ION, 1, NeoPoolSettings.resolution.ion); + CmndNeopoolGetParam(MBF_PAR_ION, 1, NeoPoolSettings.flags.ion); } } else { NeopoolCmndError(); @@ -3077,7 +3106,7 @@ void CmndNeopoolChlorine(void) { if (NeoPoolIsChlorine()) { if (CmndNeopoolSetParam(MBF_PAR_CL1, 100, 0, 10)) { - CmndNeopoolGetParam(MBF_PAR_CL1, 100, NeoPoolSettings.resolution.cl); + CmndNeopoolGetParam(MBF_PAR_CL1, 100, NeoPoolSettings.flags.cl); } } else { NeopoolCmndError(); @@ -3154,27 +3183,38 @@ void CmndNeopoolOnError(void) void CmndNeopoolPHRes(void) { if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 3) { - NeoPoolSettings.resolution.ph = XdrvMailbox.payload; + NeoPoolSettings.flags.ph = XdrvMailbox.payload; } - ResponseCmndNumber(NeoPoolSettings.resolution.ph); + ResponseCmndNumber(NeoPoolSettings.flags.ph); } void CmndNeopoolCLRes(void) { if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 3) { - NeoPoolSettings.resolution.cl = XdrvMailbox.payload; + NeoPoolSettings.flags.cl = XdrvMailbox.payload; } - ResponseCmndNumber(NeoPoolSettings.resolution.cl); + ResponseCmndNumber(NeoPoolSettings.flags.cl); } void CmndNeopoolIONRes(void) { if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 3) { - NeoPoolSettings.resolution.ion = XdrvMailbox.payload; + NeoPoolSettings.flags.ion = XdrvMailbox.payload; + } + ResponseCmndNumber(NeoPoolSettings.flags.ion); +} + + +void CmndNeopoolSetOption(void) +{ + if (XdrvMailbox.index >= 0 && XdrvMailbox.index <= 1) { + if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 1) { + bitWrite(NeoPoolSettings.flags.data, XdrvMailbox.index + 6, XdrvMailbox.payload); + } + ResponseCmndIdxChar(GetStateText(bitRead(NeoPoolSettings.flags.data, XdrvMailbox.index + 6))); } - ResponseCmndNumber(NeoPoolSettings.resolution.ion); } @@ -3254,9 +3294,11 @@ void NeoPoolSettingsLoad(bool erase) { memset(&NeoPoolSettings, 0x00, sizeof(NeoPoolSettings)); NeoPoolSettings.crc32 = GetCfgCrc32((uint8_t*)&NeoPoolSettings +4, sizeof(NeoPoolSettings) -4); NeoPoolSettings.version = NEOPOOL_SETTING_VERSION; - NeoPoolSettings.resolution.ph = NEOPOOL_DEFAULT_PHRES; - NeoPoolSettings.resolution.cl = NEOPOOL_DEFAULT_CLRES; - NeoPoolSettings.resolution.ion = NEOPOOL_DEFAULT_IONRES; + NeoPoolSettings.flags.ph = NEOPOOL_DEFAULT_PHRES; + NeoPoolSettings.flags.cl = NEOPOOL_DEFAULT_CLRES; + NeoPoolSettings.flags.ion = NEOPOOL_DEFAULT_IONRES; + NeoPoolSettings.flags.range_check = 1; + NeoPoolSettings.flags.conn_stat = 1; NeoPoolSettings.result = NEOPOOL_DEFAULT_RESULT; NeoPoolSettings.npteleperiod = NEOPOOL_DEFAULT_NPTELEPERIOD; From 9f99633f430ac208cb6631c4399f6f8e3c4fc9c5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 27 Jul 2024 13:32:01 +0200 Subject: [PATCH 199/252] update changelogs --- CHANGELOG.md | 2 +- RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea4626dd9..9255c1986 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ All notable changes to this project will be documented in this file. - Matter improve internal `inspect`for superclasses (#21824) - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) - Berry `webserver_async` (#21836) -- NeoPool add `NPSetOption` command to enabled/disable data validation/connection statistics +- NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics (#21850) ### Breaking Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 181fa5aca..102884e1d 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -129,6 +129,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740) - Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) +- NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics [#21850](https://github.com/arendst/Tasmota/issues/21850) - NeoPool data validation and communication statistics default enabled for ESP32 only [#21721](https://github.com/arendst/Tasmota/issues/21721) - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695) - Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558) From d7c64741044040f39edabf805bebf299134bd6f5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 27 Jul 2024 17:11:25 +0200 Subject: [PATCH 200/252] Add Analog Voltage and Current --- tasmota/include/tasmota_template.h | 41 ++++++---- tasmota/language/af_AF.h | 2 + tasmota/language/bg_BG.h | 2 + tasmota/language/ca_AD.h | 2 + tasmota/language/cs_CZ.h | 2 + tasmota/language/de_DE.h | 2 + tasmota/language/el_GR.h | 2 + tasmota/language/en_GB.h | 2 + tasmota/language/es_ES.h | 2 + tasmota/language/fr_FR.h | 2 + tasmota/language/fy_NL.h | 2 + tasmota/language/he_HE.h | 2 + tasmota/language/hu_HU.h | 2 + tasmota/language/it_IT.h | 2 + tasmota/language/ko_KO.h | 2 + tasmota/language/nl_NL.h | 2 + tasmota/language/pl_PL.h | 2 + tasmota/language/pt_BR.h | 2 + tasmota/language/pt_PT.h | 2 + tasmota/language/ro_RO.h | 2 + tasmota/language/ru_RU.h | 2 + tasmota/language/sk_SK.h | 2 + tasmota/language/sv_SE.h | 2 + tasmota/language/tr_TR.h | 2 + tasmota/language/uk_UA.h | 2 + tasmota/language/vi_VN.h | 2 + tasmota/language/zh_CN.h | 2 + tasmota/language/zh_TW.h | 2 + .../tasmota_xsns_sensor/xsns_02_analog.ino | 82 ++++++++++++++++++- .../tasmota_xx2c_global/xnrg_interface.ino | 6 +- 30 files changed, 161 insertions(+), 22 deletions(-) diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index dd3187040..e2a4dbe99 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -222,6 +222,7 @@ enum UserSelectablePins { GPIO_TCP_TX_EN, // TCP to serial bridge, EN pin GPIO_ASR650X_TX, GPIO_ASR650X_RX, // ASR650X LoRaWan node Serial interface GPIO_WOOLIIS_RX, // Wooliis Battery capacity monitor Serial RX + GPIO_ADC_VOLTAGE, GPIO_ADC_CURRENT, // Analog Voltage and Current GPIO_SENSOR_END }; // Error as warning to rethink GPIO usage with max 2045 @@ -491,6 +492,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_TCP_TXD_EN "|" D_GPIO_ASR650X_TX "|" D_GPIO_ASR650X_RX "|" D_SENSOR_WOOLIIS_RX "|" + D_SENSOR_ADC_VOLTAGE "|" D_SENSOR_ADC_CURRENT "|" ; const char kSensorNamesFixed[] PROGMEM = @@ -1224,6 +1226,11 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_ETH_PHY_MDC), AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet #endif // USE_ETHERNET +#ifdef USE_BIOPDU + AGPIO(GPIO_BIOPDU_PZEM0XX_TX), // Biomine BioPDU pins + AGPIO(GPIO_BIOPDU_PZEM016_RX), + AGPIO(GPIO_BIOPDU_BIT) + 3, +#endif /*-------------------------------------------------------------------------------------------*\ * ESP32 multiple Analog / Digital converter inputs @@ -1239,12 +1246,8 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_ADC_JOY) + MAX_ADCS, // Joystick AGPIO(GPIO_ADC_PH) + MAX_ADCS, // Analog PH Sensor AGPIO(GPIO_ADC_MQ) + MAX_ADCS, // Analog MQ Sensor - -#ifdef USE_BIOPDU - AGPIO(GPIO_BIOPDU_PZEM0XX_TX), // Biomine BioPDU pins - AGPIO(GPIO_BIOPDU_PZEM016_RX), - AGPIO(GPIO_BIOPDU_BIT) + 3, -#endif + AGPIO(GPIO_ADC_VOLTAGE) + MAX_ADCS, // Voltage + AGPIO(GPIO_ADC_CURRENT) + MAX_ADCS, // Current #endif // ESP32 }; @@ -1265,22 +1268,26 @@ const uint16_t kAdcNiceList[] PROGMEM = { AGPIO(GPIO_ADC_JOY), // Joystick AGPIO(GPIO_ADC_PH), // Analog PH Sensor AGPIO(GPIO_ADC_MQ), // Analog MQ Sensor + AGPIO(GPIO_ADC_VOLTAGE), // Voltage + AGPIO(GPIO_ADC_CURRENT), // Current }; #endif // ESP8266 // User selectable ADC functionality enum UserSelectableAdc { - ADC_NONE, // Not used - ADC_INPUT, // Analog input - ADC_TEMP, // Thermistor - ADC_LIGHT, // Light sensor - ADC_BUTTON, // Button - ADC_BUTTON_INV, - ADC_RANGE, // Range - ADC_CT_POWER, // Current - ADC_JOY, // Joystick - ADC_PH, // Analog PH Sensor - ADC_MQ, // Analog MQ Sensor + ADC_NONE, // 0 = Not used + ADC_INPUT, // 1 = Analog input + ADC_TEMP, // 2 = Thermistor + ADC_LIGHT, // 3 =Light sensor + ADC_BUTTON, // 4 =Button + ADC_BUTTON_INV, // 5 = Inverted button + ADC_RANGE, // 6 = Range + ADC_CT_POWER, // 7 = Current + ADC_JOY, // 8 = Joystick + ADC_PH, // 9 = Analog PH Sensor + ADC_MQ, // 10 = Analog MQ Sensor + ADC_VOLTAGE, // 11 = Voltage + ADC_CURRENT, // 12 = Current // ADC_SWITCH, // Switch // ADC_SWITCH_INV, ADC_END }; diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 9418defc2..d98293d85 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index d417e5277..e7784ea41 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index 884ec2801..1eaface65 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index f37b34d11..b08c48b8c 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 376b76d11..b754515fc 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index e1acea42e..61566829d 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 5cee6cabb..82d509835 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index d6e684e6f..10c40cd0e 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 0cb251777..2c5937d7a 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Manette" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PwDn" #define D_GPIO_WEBCAM_RESET "CAM_Reset" #define D_GPIO_WEBCAM_XCLK "CAM_XClk" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 895aa3c2e..5b3b69898 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 08dc58b3b..9ae1525d6 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index fb80a10dd..8c3dbb393 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index fe6c3346d..67394954c 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC - Joystick" #define D_SENSOR_ADC_PH "ADC - pH" #define D_SENSOR_ADC_MQ "ADC - MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "Webcam - PWDN" #define D_GPIO_WEBCAM_RESET "Webcam - RESET" #define D_GPIO_WEBCAM_XCLK "Webcam - XCLK" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 3df859d14..7f3dbb0ad 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 16e6019e4..a181aa1ad 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 43778efe0..4e6c8c845 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Dżojstik" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 77575b807..602062bd8 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "Joystick ADC" #define D_SENSOR_ADC_PH "pH ADC" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 875c2f0ca..ab1b20e23 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "Joystick ADC" #define D_SENSOR_ADC_PH "pH ADC" #define D_SENSOR_ADC_MQ "MQ ADC" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index bc9193511..7e9b8272c 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 348b1ae93..6e1031d02 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -914,6 +914,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 22614f5d7..fbaa7b824 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 84ef0df3b..a433d033d 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index d3e74b550..d6b560b85 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 07c836441..761bae707 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 56847d382..1af378629 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 7cc247d77..a64634c24 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 340b18f1b..0909ad140 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -913,6 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" +#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" +#define D_SENSOR_ADC_CURRENT "ADC Current" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index e25ef6592..8fd6f5a38 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -25,6 +25,7 @@ \*********************************************************************************************/ #define XSNS_02 2 +#define XNRG_33 33 #ifdef ESP32 #include "esp32-hal-adc.h" @@ -246,6 +247,18 @@ void AdcInitParams(uint8_t idx) { Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression } + else if (ADC_VOLTAGE == Adc[idx].type) { + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = ANALOG_V33 * 10000; + } + else if (ADC_CURRENT == Adc[idx].type) { + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = ANALOG_V33 * 10000; + } } if ((Adcs.type != Adc[idx].type) || (0 == Adc[idx].param1) || (Adc[idx].param1 > ANALOG_RANGE)) { if ((ADC_BUTTON == Adc[idx].type) || (ADC_BUTTON_INV == Adc[idx].type)) { @@ -297,6 +310,12 @@ void AdcInit(void) { if (PinUsed(GPIO_ADC_MQ, i)) { AdcAttach(Pin(GPIO_ADC_MQ, i), ADC_MQ); } + if (PinUsed(GPIO_ADC_VOLTAGE, i)) { + AdcAttach(Pin(GPIO_ADC_VOLTAGE, i), ADC_VOLTAGE); + } + if (PinUsed(GPIO_ADC_CURRENT, i)) { + AdcAttach(Pin(GPIO_ADC_CURRENT, i), ADC_CURRENT); + } } for (uint32_t i = 0; i < MAX_KEYS; i++) { if (PinUsed(GPIO_ADC_BUTTON, i)) { @@ -540,6 +559,8 @@ void AdcGetCurrentPower(uint8_t idx, uint8_t factor) { } void AdcEverySecond(void) { + uint32_t voltage_index = 0; + uint32_t current_index = 0; for (uint32_t idx = 0; idx < Adcs.present; idx++) { if (ADC_TEMP == Adc[idx].type) { int adc = AdcRead(Adc[idx].pin, 2); @@ -572,7 +593,27 @@ void AdcEverySecond(void) { AddSampleMq(idx); AdcGetMq(idx); } +#ifdef USE_ENERGY_SENSOR + else if (ADC_VOLTAGE == Adc[idx].type) { + Energy->voltage_available = true; + Energy->voltage[voltage_index++] = AdcGetRange(idx) / 10000; + } + else if (ADC_CURRENT == Adc[idx].type) { + Energy->current_available = true; + Energy->current[current_index++] = AdcGetRange(idx) / 10000; + } +#endif // USE_ENERGY_SENSOR } +#ifdef USE_ENERGY_SENSOR + if (voltage_index && current_index) { + for (uint32_t phase = 0; phase < current_index; phase++) { + uint32_t voltage_phase = (voltage_index == current_index) ? phase : 0; + Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; + Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1) / 36; + } + EnergyUpdateToday(); + } +#endif // USE_ENERGY_SENSOR } void AdcShowContinuation(bool *jsonflg) { @@ -769,14 +810,18 @@ void CmndAdcParam(void) { AdcGetSettings(idx); if (ArgC() > 3) { // Process parameter entry char argument[XdrvMailbox.data_len]; - // AdcParam 2, 32000, 10000, 3350 ADC_TEMP Shelly mode - // AdcParam 2, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode + // AdcParam 2, 32000, 10000, 3350 ADC_TEMP Shelly mode + // AdcParam 2, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode // AdcParam 3, 10000, 12518931, -1.405 // AdcParam 4, 128, 0, 0 // AdcParam 5, 128, 0, 0 - // AdcParam 6, 0, ANALOG_RANGE, 0, 100 + // AdcParam 6, 0, ANALOG_RANGE, 0, 100 ADC_RANGE // AdcParam 7, 0, 2146, 0.23 // AdcParam 8, 1000, 0, 0 + // AdcParam 9, ADC_PH + // AdcParam 10, ADC_MQ + // AdcParam 11, 0, ANALOG_RANGE, 0, 33000 ADC_VOLTAGE + // AdcParam 12, 0, ANALOG_RANGE, 0, 33000 ADC_CURRENT Adc[idx].type = XdrvMailbox.payload; Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10); Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); @@ -889,7 +934,36 @@ void CmndAdcParam(void) { } /*********************************************************************************************\ - * Interface + * Energy Interface +\*********************************************************************************************/ + +#ifdef USE_ENERGY_SENSOR +bool Xnrg33(uint32_t function) { + bool result = false; + + if (FUNC_PRE_INIT == function) { + uint32_t voltage_count = 0; + uint32_t current_count = 0; + for (uint32_t idx = 0; idx < Adcs.present; idx++) { + if (ADC_VOLTAGE == Adc[idx].type) { voltage_count++; } + if (ADC_CURRENT == Adc[idx].type) { current_count++; } + } + if (voltage_count || current_count) { + Energy->type_dc = true; + Energy->phase_count = (voltage_count > current_count) ? voltage_count : current_count; + Energy->current_available = false; + Energy->voltage_available = false; + Energy->voltage_common = (1 == voltage_count); + Energy->use_overtemp = true; // Use global temperature for overtemp detection + TasmotaGlobal.energy_driver = XNRG_33; + } + } + return result; +} +#endif // USE_ENERGY_SENSOR + +/*********************************************************************************************\ + * Sensor Interface \*********************************************************************************************/ bool Xsns02(uint32_t function) { diff --git a/tasmota/tasmota_xx2c_global/xnrg_interface.ino b/tasmota/tasmota_xx2c_global/xnrg_interface.ino index 60c45a5d1..769096686 100644 --- a/tasmota/tasmota_xx2c_global/xnrg_interface.ino +++ b/tasmota/tasmota_xx2c_global/xnrg_interface.ino @@ -150,7 +150,11 @@ bool (* const xnrg_func_ptr[])(uint32_t) = { // Energy driver Function Pointer #endif #ifdef XNRG_32 // Reserved for use by xdrv_16_tuyamcu.ino - &Xnrg32 + &Xnrg32, +#endif + +#ifdef XNRG_33 // Reserved for use by xsns_02_analog.ino + &Xnrg33 #endif }; From a9651e1bf12893690beef521452d58c4f375d446 Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Sun, 28 Jul 2024 09:19:21 +0200 Subject: [PATCH 201/252] Update Italian language (#21856) --- tasmota/language/it_IT.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 67394954c..c9e621919 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v9.4.0.1 - Last update 17.07.2024 + * Updated until v9.4.0.1 - Last update 27.07.2024 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -913,8 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC - Joystick" #define D_SENSOR_ADC_PH "ADC - pH" #define D_SENSOR_ADC_MQ "ADC - MQ" -#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" -#define D_SENSOR_ADC_CURRENT "ADC Current" +#define D_SENSOR_ADC_VOLTAGE "ADC - Voltaggio" +#define D_SENSOR_ADC_CURRENT "ADC - Corrente" #define D_GPIO_WEBCAM_PWDN "Webcam - PWDN" #define D_GPIO_WEBCAM_RESET "Webcam - RESET" #define D_GPIO_WEBCAM_XCLK "Webcam - XCLK" From a4e592c7766c3d546d15a9cbfdbdb9bc00813bce Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 28 Jul 2024 14:15:35 +0200 Subject: [PATCH 202/252] Refactor analog - Change from double to float where possible - Fix Voltage/Current energy calculation --- .../tasmota_xsns_sensor/xsns_02_analog.ino | 175 +++++++++--------- 1 file changed, 88 insertions(+), 87 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 8fd6f5a38..85b0d116e 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -46,12 +46,12 @@ #define ANALOG_PERCENT ((ANALOG_RANGE + 50) / 100) // approximation to 1% ADC range #endif // ESP32 -#define TO_CELSIUS(x) ((x) - 273.15) -#define TO_KELVIN(x) ((x) + 273.15) +#define TO_CELSIUS(x) ((x) - 273.15f) +#define TO_KELVIN(x) ((x) + 273.15f) // Parameters for equation -#define ANALOG_V33 3.3 // ESP8266 / ESP32 Analog voltage -#define ANALOG_T0 TO_KELVIN(25.0) // 25 degrees Celsius in Kelvin (= 298.15) +#define ANALOG_V33 3.3f // ESP8266 / ESP32 Analog voltage +#define ANALOG_T0 TO_KELVIN(25.0f) // 25 degrees Celsius in Kelvin (= 298.15) // Mode 0 : Shelly 2.5 NTC Thermistor // 3V3 --- ANALOG_NTC_BRIDGE_RESISTANCE ---v--- NTC --- Gnd @@ -71,7 +71,7 @@ // ADC0 #define ANALOG_LDR_BRIDGE_RESISTANCE 10000 // LDR Voltage bridge resistor #define ANALOG_LDR_LUX_CALC_SCALAR 12518931 // Experimental -#define ANALOG_LDR_LUX_CALC_EXPONENT -1.4050 // Experimental +#define ANALOG_LDR_LUX_CALC_EXPONENT -1.4050f // Experimental // CT Based Apparrent Power Measurement Parameters // 3V3 --- R1 ----v--- R1 --- Gnd @@ -110,18 +110,18 @@ #define ANALOG_JOYSTICK (ANALOG_RANGE / 3) +100 // Add resistor tolerance // pH scale minimum and maximum values -#define ANALOG_PH_MAX 14.0 -#define ANALOG_PH_MIN 0.0 +#define ANALOG_PH_MAX 14.0f +#define ANALOG_PH_MIN 0.0f // Default values for calibration solution with lower PH -#define ANALOG_PH_CALSOLUTION_LOW_PH 4.0 +#define ANALOG_PH_CALSOLUTION_LOW_PH 4.0f #define ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE 282 // Default values for calibration solution with higher PH -#define ANALOG_PH_CALSOLUTION_HIGH_PH 9.18 +#define ANALOG_PH_CALSOLUTION_HIGH_PH 9.18f #define ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE 435 // Multiplier used to store pH with 2 decimal places in a non decimal datatype -#define ANALOG_PH_DECIMAL_MULTIPLIER 100.0 +#define ANALOG_PH_DECIMAL_MULTIPLIER 100.0f // MQ-X sensor (MQ-02, MQ-03, MQ-04, MQ-05, MQ-06, MQ-07, MQ-08, MQ-09, MQ-131, MQ-135) // @@ -135,9 +135,9 @@ //means mq type (ex for mq-02 use 2, mq-131 use 131) #define ANALOG_MQ_TYPE 2 //exponential regression a params -#define ANALOG_MQ_A 574.25 +#define ANALOG_MQ_A 574.25f //exponential regression b params -#define ANALOG_MQ_B -2.222 +#define ANALOG_MQ_B -2.222f /* Exponential regression: Gas | a | b @@ -152,9 +152,9 @@ O3 | 23.943 | -1.11 */ //ratio for alarm, NOT USED yet (RS / R0 = 15 ppm) -#define ANALOG_MQ_RatioMQCleanAir 15.0 +#define ANALOG_MQ_RatioMQCleanAir 15.0f // Multiplier used to store pH with 2 decimal places in a non decimal datatype -#define ANALOG_MQ_DECIMAL_MULTIPLIER 100.0 +#define ANALOG_MQ_DECIMAL_MULTIPLIER 100.0f // lenght of filter #define ANALOG_MQ_SAMPLES 60 @@ -354,7 +354,7 @@ bool AdcPin(uint32_t pin) { uint16_t AdcRead1(uint32_t pin) { #ifdef ESP32 - return analogReadMilliVolts(pin) / (ANALOG_V33*1000) * ANALOG_RANGE; // go back from mV to ADC + return analogReadMilliVolts(pin) / (ANALOG_V33 * 1000) * ANALOG_RANGE; // Go back from mV to ADC #else return analogRead(pin); #endif @@ -380,7 +380,7 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) { } analog >>= factor; #ifdef ESP32 - analog = analog/(ANALOG_V33*1000) * ANALOG_RANGE; // go back from mV to ADC + analog = analog / (ANALOG_V33 * 1000) * ANALOG_RANGE; // Go back from mV to ADC #endif return analog; } @@ -511,8 +511,8 @@ float AdcGetRange(uint32_t idx) { // Example: 514, 632, 236, 0, 100 // int( (( - ) / ( - ) ) * ( - ) ) + ) int adc = AdcRead(Adc[idx].pin, 5); - double adcrange = ( ((double)Adc[idx].param2 - (double)adc) / ( ((double)Adc[idx].param2 - (double)Adc[idx].param1)) * ((double)Adc[idx].param3 - (double)Adc[idx].param4) + (double)Adc[idx].param4 ); - return (float)adcrange; + float adcrange = ( ((float)Adc[idx].param2 - (float)adc) / ( ((float)Adc[idx].param2 - (float)Adc[idx].param1)) * ((float)Adc[idx].param3 - (float)Adc[idx].param4) + (float)Adc[idx].param4 ); + return adcrange; } void AdcGetCurrentPower(uint8_t idx, uint8_t factor) { @@ -596,11 +596,11 @@ void AdcEverySecond(void) { #ifdef USE_ENERGY_SENSOR else if (ADC_VOLTAGE == Adc[idx].type) { Energy->voltage_available = true; - Energy->voltage[voltage_index++] = AdcGetRange(idx) / 10000; + Energy->voltage[voltage_index++] = AdcGetRange(idx) / 10000; // Volt } else if (ADC_CURRENT == Adc[idx].type) { Energy->current_available = true; - Energy->current[current_index++] = AdcGetRange(idx) / 10000; + Energy->current[current_index++] = AdcGetRange(idx) / 10000; // Ampere } #endif // USE_ENERGY_SENSOR } @@ -608,8 +608,8 @@ void AdcEverySecond(void) { if (voltage_index && current_index) { for (uint32_t phase = 0; phase < current_index; phase++) { uint32_t voltage_phase = (voltage_index == current_index) ? phase : 0; - Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; - Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1) / 36; + Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; // Watt + Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1000) / 36; // deca_microWh } EnergyUpdateToday(); } @@ -802,6 +802,15 @@ const char kAdcCommands[] PROGMEM = "|" // No prefix void (* const AdcCommand[])(void) PROGMEM = { &CmndAdcParam }; +uint32_t Decimals(int value) { + uint32_t decimals; + for (decimals = 4; decimals > 0; decimals--) { + if (value % 10) { break; } + value /= 10; + } + return decimals; +} + void CmndAdcParam(void) { if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) { uint8_t idx = XdrvMailbox.index -1; @@ -820,75 +829,70 @@ void CmndAdcParam(void) { // AdcParam 8, 1000, 0, 0 // AdcParam 9, ADC_PH // AdcParam 10, ADC_MQ - // AdcParam 11, 0, ANALOG_RANGE, 0, 33000 ADC_VOLTAGE - // AdcParam 12, 0, ANALOG_RANGE, 0, 33000 ADC_CURRENT + // AdcParam 11, 0, ANALOG_RANGE, 0, 3.3 ADC_VOLTAGE + // AdcParam 12, 0, ANALOG_RANGE, 0, 3.3 ADC_CURRENT Adc[idx].type = XdrvMailbox.payload; - Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10); - Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); + Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int + Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int if (ADC_RANGE == XdrvMailbox.payload) { - Adc[idx].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10)); - Adc[idx].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10)); + Adc[idx].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10)); // param3 = abs(int) + Adc[idx].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10)); // param4 = abs(int) } else { - Adc[idx].param3 = (int)(CharToFloat(ArgV(argument, 4)) * 10000); + Adc[idx].param3 = (int)(CharToFloat(ArgV(argument, 4)) * 10000); // param3 = float if (ArgC() > 4) { - Adc[idx].param4 = (int)(CharToFloat(ArgV(argument, 5)) * 10000); + Adc[idx].param4 = (int)(CharToFloat(ArgV(argument, 5)) * 10000); // param4 = float } else{ - Adc[idx].param4 = 0; + Adc[idx].param4 = 0; // param4 = fixed 0 } } if (ADC_PH == XdrvMailbox.payload) { float phLow = CharToFloat(ArgV(argument, 2)); + Adc[idx].param1 = phLow * ANALOG_PH_DECIMAL_MULTIPLIER; // param1 = float +// Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int float phHigh = CharToFloat(ArgV(argument, 4)); - Adc[idx].param1 = phLow * ANALOG_PH_DECIMAL_MULTIPLIER; - Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); - Adc[idx].param3 = phHigh * ANALOG_PH_DECIMAL_MULTIPLIER; - Adc[idx].param4 = strtol(ArgV(argument, 5), nullptr, 10); + Adc[idx].param3 = phHigh * ANALOG_PH_DECIMAL_MULTIPLIER; // param3 = float + Adc[idx].param4 = strtol(ArgV(argument, 5), nullptr, 10); // param4 = int // AddLog(LOG_LEVEL_INFO, PSTR("ADC: Analog pH probe calibrated. cal-low(pH=ADC) %2_f = %d, cal-high(pH=ADC) %2_f = %d"), &phLow, Adc[idx].param2, &phHigh, Adc[idx].param4); } if (ADC_CT_POWER == XdrvMailbox.payload) { - if (((1 == Adc[idx].param1) & CT_FLAG_ENERGY_RESET) > 0) { - for (uint32_t idx = 0; idx < MAX_ADCS; idx++) { + if (((1 == Adc[idx].param1) & CT_FLAG_ENERGY_RESET) > 0) { // param1 = int + for (uint32_t idx = 0; idx < Adcs.present; idx++) { Adc[idx].energy = 0; } - Adc[idx].param1 ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag + Adc[idx].param1 ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag } } if (ADC_MQ == XdrvMailbox.payload) { - float a = CharToFloat(ArgV(argument, 3)); - float b = CharToFloat(ArgV(argument, 4)); - float ratioMQCleanAir = CharToFloat(ArgV(argument, 5)); - if (a==0 && b==0 && ratioMQCleanAir==0) - { - if (Adc[idx].param1==2) - { - a=574.25; - b=-2.222; - ratioMQCleanAir=9.83; + float a = CharToFloat(ArgV(argument, 3)); // param2 = float + float b = CharToFloat(ArgV(argument, 4)); // param3 = float + float ratioMQCleanAir = CharToFloat(ArgV(argument, 5)); // param4 = float + if ((0 == a) && (0 == b) && (0 == ratioMQCleanAir)) { + if (2 == Adc[idx].param1) { // param1 = int + a = 574.25; + b = -2.222; + ratioMQCleanAir = 9.83; } - if (Adc[idx].param1==4) - { - a=1012.7; - b=-2.786; - ratioMQCleanAir=4.4; + else if (4 == Adc[idx].param1) { + a = 1012.7; + b = -2.786; + ratioMQCleanAir = 4.4; } - if (Adc[idx].param1==7) - { - a=99.042; - b=-1.518; - ratioMQCleanAir=27.5; + else if (7 == Adc[idx].param1) { + a = 99.042; + b = -1.518; + ratioMQCleanAir = 27.5; } - if (Adc[idx].param1==131) - { - a=23.943; - b=-1.11; - ratioMQCleanAir=15; + if (131 == Adc[idx].param1) { + a = 23.943; + b = -1.11; + ratioMQCleanAir = 15; } } - Adc[idx].param2 = (int)(a * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param3 = (int)(b * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param4 = (int)(ratioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param2 = (int)(a * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param3 = (int)(b * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param4 = (int)(ratioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression // AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[idx].param1, &a, &b, &ratioMQCleanAir); } @@ -910,24 +914,21 @@ void CmndAdcParam(void) { // AdcParam AdcGetSettings(idx); Response_P(PSTR("{\"" D_CMND_ADCPARAM "%d\":[%d,%d,%d"), idx +1, Adcs.type, Adc[idx].param1, Adc[idx].param2); - if ((ADC_RANGE == Adc[idx].type) || (ADC_MQ == Adc[idx].type)){ - ResponseAppend_P(PSTR(",%d,%d"), Adc[idx].param3, Adc[idx].param4); - } else { - int value = Adc[idx].param3; - uint8_t precision; - for (precision = 4; precision > 0; precision--) { - if (value % 10) { break; } - value /= 10; - } - char param3[FLOATSZ]; - dtostrfd(((double)Adc[idx].param3)/10000, precision, param3); - if (ADC_CT_POWER == Adc[idx].type) { - char param4[FLOATSZ]; - dtostrfd(((double)Adc[idx].param4)/10000, 3, param4); - ResponseAppend_P(PSTR(",%s,%s"), param3, param4); - } else { - ResponseAppend_P(PSTR(",%s,%d"), param3, Adc[idx].param4); - } + if ((ADC_RANGE == Adc[idx].type) || (ADC_MQ == Adc[idx].type)) { + ResponseAppend_P(PSTR(",%d,%d"), Adc[idx].param3, Adc[idx].param4); // param3 = int, param4 = int + } + else { + float param = (float)Adc[idx].param3 / 10000; + ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[idx].param3), ¶m); // param3 = float + if ((ADC_CT_POWER == Adc[idx].type) || + (ADC_VOLTAGE == Adc[idx].type) || + (ADC_CURRENT == Adc[idx].type)) { + param = (float)Adc[idx].param4 / 10000; + ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[idx].param4), ¶m); // param4 = float + } + else { + ResponseAppend_P(PSTR(",%d"), Adc[idx].param4); // param4 = int + } } ResponseAppend_P(PSTR("]}")); } @@ -950,10 +951,10 @@ bool Xnrg33(uint32_t function) { } if (voltage_count || current_count) { Energy->type_dc = true; - Energy->phase_count = (voltage_count > current_count) ? voltage_count : current_count; - Energy->current_available = false; - Energy->voltage_available = false; Energy->voltage_common = (1 == voltage_count); + Energy->phase_count = (voltage_count > current_count) ? voltage_count : current_count; + Energy->voltage_available = false; + Energy->current_available = false; Energy->use_overtemp = true; // Use global temperature for overtemp detection TasmotaGlobal.energy_driver = XNRG_33; } From 068e8e6cbe8d6082f6d52c590a61d91a9e556ece Mon Sep 17 00:00:00 2001 From: SteWers <42718143+SteWers@users.noreply.github.com> Date: Sun, 28 Jul 2024 14:24:47 +0200 Subject: [PATCH 203/252] Update de_DE.h (#21857) --- tasmota/language/de_DE.h | 42 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index b754515fc..f92b819d0 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v13.3.0.3 - Last update 12.01.2024 + * Updated until v14.1.0.4 - Last update 28.07.2024 \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -421,7 +421,7 @@ // xdrv_01_mqtt.ino #define D_FINGERPRINT "TLS-Fingerabdruck wird verifiziert…" #define D_TLS_CONNECT_FAILED_TO "TLS-Verbindung fehlgeschlagen an" -#define D_RETRY_IN "Wiederversuch in" +#define D_RETRY_IN "Erneuter Versuch in" #define D_VERIFIED "verifiziert mit Fingerabdruck" #define D_INSECURE "unsichere Verbindung aufgrund ungültigen Fingerabdrucks" #define D_CONNECT_FAILED_TO "Verbindung fehlgeschlagen aufgrund von" @@ -506,7 +506,7 @@ #define D_ZIGBEE_MAPPING_IN_PROGRESS_SEC "Karte in Erstellung (%d s․ verbleibend)" #define D_ZIGBEE_MAPPING_NOT_PRESENT "Keine Karte" #define D_ZIGBEE_MAP_REFRESH "Zigbee Karte erneuern" -#define D_ZIGBEE_MAP "Zigbee Karte" +#define D_ZIGBEE_MAP "Zigbee Karte" #define D_ZIGBEE_PERMITJOIN "Zigbee Kopplung ein" #define D_ZIGBEE_GENERATE_KEY "Erzeuge zufälligen Zigbee Netzwerkschlüssel" #define D_ZIGBEE_UNKNOWN_DEVICE "Unbekanntes Gerät" @@ -665,22 +665,22 @@ #define D_CHIPTEMPERATURE "Chiptemperatur" // xsns_60_GPS -#define D_LATITUDE "Latitude" -#define D_LONGITUDE "Longitude" -#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy" -#define D_ALTITUDE "Altitude" -#define D_VERTICAL_ACCURACY "Vertical Accuracy" -#define D_SPEED "Speed" -#define D_SPEED_ACCURACY "Speed Accuracy" -#define D_HEADING "Heading" -#define D_HEADING_ACCURACY "Heading Accuracy" -#define D_SAT_FIX "Satellite Fix" - #define D_SAT_FIX_NO_FIX "None" - #define D_SAT_FIX_DEAD_RECK "Dead reckoning" - #define D_SAT_FIX_2D "2D" - #define D_SAT_FIX_3D "3D" - #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning" - #define D_SAT_FIX_TIME "Time only fix" +#define D_LATITUDE "Breite" +#define D_LONGITUDE "Länge" +#define D_HORIZONTAL_ACCURACY "Horizontale Genauigkeit" +#define D_ALTITUDE "Höhe" +#define D_VERTICAL_ACCURACY "Vertikale Genauigkeit" +#define D_SPEED "Geschwindigkeit" +#define D_SPEED_ACCURACY "Geschwindigkeitsgenauigkeit" +#define D_HEADING "Kurs" +#define D_HEADING_ACCURACY "Kursgenauigkeit" +#define D_SAT_FIX "Satelliten Fix" +#define D_SAT_FIX_NO_FIX "Kein Fix" +#define D_SAT_FIX_DEAD_RECK "Koppelnavigation" +#define D_SAT_FIX_2D "2D" +#define D_SAT_FIX_3D "3D" +#define D_SAT_FIX_GPS_DEAD "GPS und Koppelnavigation" +#define D_SAT_FIX_TIME "Nur Uhrzeit" // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" @@ -913,8 +913,8 @@ #define D_SENSOR_ADC_JOYSTICK "ADC Joystick" #define D_SENSOR_ADC_PH "ADC pH" #define D_SENSOR_ADC_MQ "ADC MQ" -#define D_SENSOR_ADC_VOLTAGE "ADC Voltage" -#define D_SENSOR_ADC_CURRENT "ADC Current" +#define D_SENSOR_ADC_VOLTAGE "ADC Spannung" +#define D_SENSOR_ADC_CURRENT "ADC Strom" #define D_GPIO_WEBCAM_PWDN "CAM_PWDN" #define D_GPIO_WEBCAM_RESET "CAM_RESET" #define D_GPIO_WEBCAM_XCLK "CAM_XCLK" From 5b8638b6b8d0e1d4cbd31af4dfdff5cefc1ef57a Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:47:52 +0200 Subject: [PATCH 204/252] Berry updated precompiled Windows binary (#21858) --- CHANGELOG.md | 1 + lib/libesp32/berry/berry.exe | Bin 397912 -> 406719 bytes 2 files changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9255c1986..9df16d77c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. ### Changed - Berry consolidated constants for solidified classes reduces Flash size (#2185) +- Berry updated precompiled Windows binary ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/lib/libesp32/berry/berry.exe b/lib/libesp32/berry/berry.exe index 01fe9434b5572da9355fa0b499252fa376847cd4..49b7fca66a4aefdd46a7283e6b999fca5ae8cd09 100644 GIT binary patch delta 172681 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 z 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

j+saRKYT{I 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 Bln From 0dda8fc224d5b23385e64b97fff1bc8f1a150641 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:10:25 +0200 Subject: [PATCH 205/252] Matter fix circular references in WaterLeak and Rain sensors (#21862) --- .../src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be | 2 +- .../src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be | 2 +- .../berry_matter/src/embedded/Matter_Plugin_z_All.be | 8 ++++++++ .../solidified_Matter_Plugin_9_Virt_Sensor_Rain.h | 4 ++-- .../solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h | 4 ++-- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be index 5e811fae0..c43d8d624 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be @@ -24,7 +24,7 @@ import matter #@ solidify:Matter_Plugin_Virt_Sensor_Rain,weak -class Matter_Plugin_Virt_Sensor_Rain : Matter_Plugin_Virt_Sensor_Rain +class Matter_Plugin_Virt_Sensor_Rain : Matter_Plugin_Sensor_Rain static var TYPE = "v_rain" # name of the plug-in in json static var DISPLAY_NAME = "v.Rain" # display name of the plug-in static var ARG = "" # no arg for virtual device diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be index 264435193..0e032b08f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be @@ -24,7 +24,7 @@ import matter #@ solidify:Matter_Plugin_Virt_Sensor_Waterleak,weak -class Matter_Plugin_Virt_Sensor_Waterleak : Matter_Plugin_Virt_Sensor_Waterleak +class Matter_Plugin_Virt_Sensor_Waterleak : Matter_Plugin_Sensor_Waterleak static var TYPE = "v_waterleak" # name of the plug-in in json static var DISPLAY_NAME = "v.Waterleak" # display name of the plug-in static var ARG = "" # no arg for virtual device diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be index 8aa126950..5e0853885 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be @@ -21,6 +21,14 @@ import matter # this is used to solidify plugins list in Matter_Device +###################################################################### +# Register all classes to the `matter` module before solidification +# +# Scans all classes starting with `Plugin_` +# Add to a map from class.TYPE -> class +# and set an attribute `plugins_classes` to the module `matter` +# before final solidification. +###################################################################### def register_native_classes() var plugins_classes = {} # try to register any class that starts with 'Plugin_' diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h index 66881e1b5..499f6db30 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h @@ -9,10 +9,10 @@ extern const bclass be_class_Matter_Plugin_Virt_Sensor_Rain; /******************************************************************** ** Solidified class: Matter_Plugin_Virt_Sensor_Rain ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Virt_Sensor_Rain; +extern const bclass be_class_Matter_Plugin_Sensor_Rain; be_local_class(Matter_Plugin_Virt_Sensor_Rain, 0, - &be_class_Matter_Plugin_Virt_Sensor_Rain, + &be_class_Matter_Plugin_Sensor_Rain, be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h index f33b2921e..7fe1705c2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h @@ -9,10 +9,10 @@ extern const bclass be_class_Matter_Plugin_Virt_Sensor_Waterleak; /******************************************************************** ** Solidified class: Matter_Plugin_Virt_Sensor_Waterleak ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Virt_Sensor_Waterleak; +extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; be_local_class(Matter_Plugin_Virt_Sensor_Waterleak, 0, - &be_class_Matter_Plugin_Virt_Sensor_Waterleak, + &be_class_Matter_Plugin_Sensor_Waterleak, be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) }, From 7c1cf6a81fe9538324044864c7a79a7fe4380d0e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:33:43 +0200 Subject: [PATCH 206/252] Analog GPIO extensions - Analog GPIO ``ADC Input`` with ``AdcParam 1,,,1`` provide direct light control - Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage - Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage --- CHANGELOG.md | 5 +- RELEASENOTES.md | 4 + .../tasmota_xsns_sensor/xsns_02_analog.ino | 170 ++++++++++-------- 3 files changed, 103 insertions(+), 76 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9df16d77c..8be994b64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,12 +10,15 @@ All notable changes to this project will be documented in this file. - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) - Berry `webserver_async` (#21836) - NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics (#21850) +- Analog GPIO ``ADC Input`` with ``AdcParam 1,,,1`` provide direct light control +- Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage +- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage ### Breaking Changed ### Changed - Berry consolidated constants for solidified classes reduces Flash size (#2185) -- Berry updated precompiled Windows binary +- Berry updated precompiled Windows binary (#21858) ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 102884e1d..dda3ffe0e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -126,6 +126,9 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Support for Sonoff iFan04-H using template [#16402](https://github.com/arendst/Tasmota/issues/16402) - Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) - Support for Wooliis Hall Effect Coulometer or Battery capacity monitor [#21732](https://github.com/arendst/Tasmota/issues/21732) +- Analog GPIO ``ADC Input`` with ``AdcParam 1,,,1`` provide direct light control +- Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage +- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage - Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740) - Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) @@ -170,6 +173,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131) +- Berry updated precompiled Windows binary [#21858](https://github.com/arendst/Tasmota/issues/21858) - Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812) - Berry consolidated constants for solidified classes reduces Flash size [#2185](https://github.com/arendst/Tasmota/issues/2185) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 85b0d116e..6a0a8af3e 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -34,7 +34,6 @@ #ifdef ESP8266 #define ANALOG_RESOLUTION 10 // 12 = 4095, 11 = 2047, 10 = 1023 #define ANALOG_RANGE 1023 // 4095 = 12, 2047 = 11, 1023 = 10 -#define ANALOG_PERCENT 10 // backward compatible div10 range #endif // ESP8266 #ifdef ESP32 @@ -42,8 +41,6 @@ #define ANALOG_RESOLUTION 12 // 12 = 4095, 11 = 2047, 10 = 1023 #undef ANALOG_RANGE #define ANALOG_RANGE 4095 // 4095 = 12, 2047 = 11, 1023 = 10 -#undef ANALOG_PERCENT -#define ANALOG_PERCENT ((ANALOG_RANGE + 50) / 100) // approximation to 1% ADC range #endif // ESP32 #define TO_CELSIUS(x) ((x) - 273.15f) @@ -212,52 +209,53 @@ void AdcGetSettings(uint32_t idx) { void AdcInitParams(uint8_t idx) { if ((Adcs.type != Adc[idx].type) || (Adc[idx].param1 > 1000000)) { - if (ADC_TEMP == Adc[idx].type) { - // Default Shelly 2.5 and 1PM parameters - Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_NTC_RESISTANCE; - Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000; - Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND - } - else if (ADC_LIGHT == Adc[idx].type) { - Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR; - Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; - } - else if (ADC_RANGE == Adc[idx].type) { - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = 100; - } - else if (ADC_CT_POWER == Adc[idx].type) { - Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 - Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 - Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10 - } - else if (ADC_PH == Adc[idx].type) { - Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH - Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 - Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH - Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 - } - else if (ADC_MQ == Adc[idx].type) { - Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... - Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - } - else if (ADC_VOLTAGE == Adc[idx].type) { - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = ANALOG_V33 * 10000; - } - else if (ADC_CURRENT == Adc[idx].type) { - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = ANALOG_V33 * 10000; + switch (Adc[idx].type) { + case ADC_INPUT: + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command + case ADC_TEMP: + // Default Shelly 2.5 and 1PM parameters + Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; + Adc[idx].param2 = ANALOG_NTC_RESISTANCE; + Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000; + Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND + break; + case ADC_LIGHT: + Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; + Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR; + Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; + break; + case ADC_RANGE: + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = 100; + break; + case ADC_CT_POWER: + Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 + Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 + Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10 + break; + case ADC_PH: + Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH + Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 + Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH + Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 + break; + case ADC_MQ: + Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... + Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + break; + case ADC_VOLTAGE: + case ADC_CURRENT: + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = ANALOG_V33 * 10000; + break; } } if ((Adcs.type != Adc[idx].type) || (0 == Adc[idx].param1) || (Adc[idx].param1 > ANALOG_RANGE)) { @@ -385,7 +383,6 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) { return analog; } -#ifdef USE_RULES void AdcEvery250ms(void) { char adc_idx[3] = { 0 }; uint32_t offset = 0; @@ -395,12 +392,35 @@ void AdcEvery250ms(void) { offset = 1; #endif if (ADC_INPUT == Adc[idx].type) { - uint16_t new_value = AdcRead(Adc[idx].pin, 5); - if ((new_value < Adc[idx].last_value -ANALOG_PERCENT) || (new_value > Adc[idx].last_value +ANALOG_PERCENT)) { + int adc = AdcRead(Adc[idx].pin, 4); // 4 = 16 mS + int new_value = changeUIntScale(adc, Adc[idx].param1, Adc[idx].param2, 0, 100); + if ((new_value < Adc[idx].last_value -2) || + (new_value > Adc[idx].last_value +2) || + ((0 == new_value) && (Adc[idx].last_value != 0)) || // Lowest end + ((100 == new_value) && (Adc[idx].last_value != 100))) { // Highest end Adc[idx].last_value = new_value; - uint16_t value = Adc[idx].last_value / ANALOG_PERCENT; - Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, (value > 99) ? 100 : value); - XdrvRulesProcess(0); + if (-1 == Adc[idx].indexOfPointer) { + Adc[idx].indexOfPointer = 0; + continue; // Skip action on restart + } +#ifdef USE_LIGHT + if (0 == Adc[idx].param3) { // Default (0) or Direct mode (1) +#endif // USE_LIGHT + Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, new_value); + XdrvRulesProcess(0); +#ifdef USE_LIGHT + } else { + char command[33]; + if (Settings->flag3.pwm_multi_channels) { // SetOption68 - Enable multi-channels PWM instead of Color PWM +// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_CHANNEL "%d %d"), idx +1, new_value); + snprintf_P(command, sizeof(command), PSTR(D_CMND_CHANNEL "%d %d"), idx +1, new_value); + } else { +// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_DIMMER "3 %d"), new_value); + snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER "3 %d"), new_value); // Change both RGB and W(W) Dimmers with no fading + } + ExecuteCommand(command, SRC_SWITCH); + } +#endif // USE_LIGHT } } else if (ADC_JOY == Adc[idx].type) { @@ -416,7 +436,6 @@ void AdcEvery250ms(void) { } } } -#endif // USE_RULES uint8_t AdcGetButton(uint32_t pin) { for (uint32_t idx = 0; idx < Adcs.present; idx++) { @@ -641,16 +660,21 @@ void AdcShow(bool json) { switch (Adc[idx].type) { case ADC_INPUT: { - uint16_t analog = AdcRead(Adc[idx].pin, 5); - - if (json) { - AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog); +#ifdef USE_LIGHT + if (0 == Adc[idx].param3) { // Default (0) or Direct mode (1) +#endif // USE_LIGHT + uint16_t analog = AdcRead(Adc[idx].pin, 5); + if (json) { + AdcShowContinuation(&jsonflg); + ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog); #ifdef USE_WEBSERVER - } else { - WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog); + } else { + WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog); #endif // USE_WEBSERVER + } +#ifdef USE_LIGHT } +#endif // USE_LIGHT break; } case ADC_TEMP: { @@ -815,10 +839,11 @@ void CmndAdcParam(void) { if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) { uint8_t idx = XdrvMailbox.index -1; if (XdrvMailbox.data_len) { - if (XdrvMailbox.payload > ADC_INPUT) { + if (XdrvMailbox.payload > 0) { AdcGetSettings(idx); if (ArgC() > 3) { // Process parameter entry char argument[XdrvMailbox.data_len]; + // AdcParam 1, 0, ANALOG_RANGE, 0 ADC_INPUT rule | dimmer // AdcParam 2, 32000, 10000, 3350 ADC_TEMP Shelly mode // AdcParam 2, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode // AdcParam 3, 10000, 12518931, -1.405 @@ -834,7 +859,8 @@ void CmndAdcParam(void) { Adc[idx].type = XdrvMailbox.payload; Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int - if (ADC_RANGE == XdrvMailbox.payload) { + if ((ADC_INPUT == XdrvMailbox.payload) || + (ADC_RANGE == XdrvMailbox.payload)) { Adc[idx].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10)); // param3 = abs(int) Adc[idx].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10)); // param4 = abs(int) } else { @@ -897,13 +923,7 @@ void CmndAdcParam(void) { // AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[idx].param1, &a, &b, &ratioMQCleanAir); } } else { // Set default values based on current adc type - // AdcParam 2 - // AdcParam 3 - // AdcParam 4 - // AdcParam 5 - // AdcParam 6 - // AdcParam 7 - // AdcParam 8 + // AdcParam 1 Adcs.type = 0; AdcInitParams(idx); } @@ -914,7 +934,9 @@ void CmndAdcParam(void) { // AdcParam AdcGetSettings(idx); Response_P(PSTR("{\"" D_CMND_ADCPARAM "%d\":[%d,%d,%d"), idx +1, Adcs.type, Adc[idx].param1, Adc[idx].param2); - if ((ADC_RANGE == Adc[idx].type) || (ADC_MQ == Adc[idx].type)) { + if ((ADC_INPUT == Adc[idx].type) || + (ADC_RANGE == Adc[idx].type) || + (ADC_MQ == Adc[idx].type)) { ResponseAppend_P(PSTR(",%d,%d"), Adc[idx].param3, Adc[idx].param4); // param3 = int, param4 = int } else { @@ -980,11 +1002,9 @@ bool Xsns02(uint32_t function) { default: if (Adcs.present) { switch (function) { -#ifdef USE_RULES case FUNC_EVERY_250_MSECOND: AdcEvery250ms(); break; -#endif // USE_RULES case FUNC_EVERY_SECOND: AdcEverySecond(); break; From 87ec0cce21c08a3ef94de5bb0b2afa6d5dc03d7e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:47:13 +0200 Subject: [PATCH 207/252] Revert "Analog GPIO extensions" This reverts commit 7c1cf6a81fe9538324044864c7a79a7fe4380d0e. --- CHANGELOG.md | 5 +- RELEASENOTES.md | 4 - .../tasmota_xsns_sensor/xsns_02_analog.ino | 170 ++++++++---------- 3 files changed, 76 insertions(+), 103 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8be994b64..9df16d77c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,15 +10,12 @@ All notable changes to this project will be documented in this file. - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) - Berry `webserver_async` (#21836) - NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics (#21850) -- Analog GPIO ``ADC Input`` with ``AdcParam 1,,,1`` provide direct light control -- Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage -- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage ### Breaking Changed ### Changed - Berry consolidated constants for solidified classes reduces Flash size (#2185) -- Berry updated precompiled Windows binary (#21858) +- Berry updated precompiled Windows binary ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index dda3ffe0e..102884e1d 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -126,9 +126,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Support for Sonoff iFan04-H using template [#16402](https://github.com/arendst/Tasmota/issues/16402) - Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) - Support for Wooliis Hall Effect Coulometer or Battery capacity monitor [#21732](https://github.com/arendst/Tasmota/issues/21732) -- Analog GPIO ``ADC Input`` with ``AdcParam 1,,,1`` provide direct light control -- Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage -- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage - Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740) - Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) @@ -173,7 +170,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131) -- Berry updated precompiled Windows binary [#21858](https://github.com/arendst/Tasmota/issues/21858) - Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812) - Berry consolidated constants for solidified classes reduces Flash size [#2185](https://github.com/arendst/Tasmota/issues/2185) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 6a0a8af3e..85b0d116e 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -34,6 +34,7 @@ #ifdef ESP8266 #define ANALOG_RESOLUTION 10 // 12 = 4095, 11 = 2047, 10 = 1023 #define ANALOG_RANGE 1023 // 4095 = 12, 2047 = 11, 1023 = 10 +#define ANALOG_PERCENT 10 // backward compatible div10 range #endif // ESP8266 #ifdef ESP32 @@ -41,6 +42,8 @@ #define ANALOG_RESOLUTION 12 // 12 = 4095, 11 = 2047, 10 = 1023 #undef ANALOG_RANGE #define ANALOG_RANGE 4095 // 4095 = 12, 2047 = 11, 1023 = 10 +#undef ANALOG_PERCENT +#define ANALOG_PERCENT ((ANALOG_RANGE + 50) / 100) // approximation to 1% ADC range #endif // ESP32 #define TO_CELSIUS(x) ((x) - 273.15f) @@ -209,53 +212,52 @@ void AdcGetSettings(uint32_t idx) { void AdcInitParams(uint8_t idx) { if ((Adcs.type != Adc[idx].type) || (Adc[idx].param1 > 1000000)) { - switch (Adc[idx].type) { - case ADC_INPUT: - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command - case ADC_TEMP: - // Default Shelly 2.5 and 1PM parameters - Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_NTC_RESISTANCE; - Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000; - Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND - break; - case ADC_LIGHT: - Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR; - Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; - break; - case ADC_RANGE: - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = 100; - break; - case ADC_CT_POWER: - Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 - Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 - Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10 - break; - case ADC_PH: - Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH - Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 - Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH - Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 - break; - case ADC_MQ: - Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... - Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - break; - case ADC_VOLTAGE: - case ADC_CURRENT: - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = ANALOG_V33 * 10000; - break; + if (ADC_TEMP == Adc[idx].type) { + // Default Shelly 2.5 and 1PM parameters + Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; + Adc[idx].param2 = ANALOG_NTC_RESISTANCE; + Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000; + Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND + } + else if (ADC_LIGHT == Adc[idx].type) { + Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; + Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR; + Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; + } + else if (ADC_RANGE == Adc[idx].type) { + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = 100; + } + else if (ADC_CT_POWER == Adc[idx].type) { + Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 + Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 + Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10 + } + else if (ADC_PH == Adc[idx].type) { + Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH + Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 + Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH + Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 + } + else if (ADC_MQ == Adc[idx].type) { + Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... + Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + } + else if (ADC_VOLTAGE == Adc[idx].type) { + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = ANALOG_V33 * 10000; + } + else if (ADC_CURRENT == Adc[idx].type) { + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = ANALOG_V33 * 10000; } } if ((Adcs.type != Adc[idx].type) || (0 == Adc[idx].param1) || (Adc[idx].param1 > ANALOG_RANGE)) { @@ -383,6 +385,7 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) { return analog; } +#ifdef USE_RULES void AdcEvery250ms(void) { char adc_idx[3] = { 0 }; uint32_t offset = 0; @@ -392,35 +395,12 @@ void AdcEvery250ms(void) { offset = 1; #endif if (ADC_INPUT == Adc[idx].type) { - int adc = AdcRead(Adc[idx].pin, 4); // 4 = 16 mS - int new_value = changeUIntScale(adc, Adc[idx].param1, Adc[idx].param2, 0, 100); - if ((new_value < Adc[idx].last_value -2) || - (new_value > Adc[idx].last_value +2) || - ((0 == new_value) && (Adc[idx].last_value != 0)) || // Lowest end - ((100 == new_value) && (Adc[idx].last_value != 100))) { // Highest end + uint16_t new_value = AdcRead(Adc[idx].pin, 5); + if ((new_value < Adc[idx].last_value -ANALOG_PERCENT) || (new_value > Adc[idx].last_value +ANALOG_PERCENT)) { Adc[idx].last_value = new_value; - if (-1 == Adc[idx].indexOfPointer) { - Adc[idx].indexOfPointer = 0; - continue; // Skip action on restart - } -#ifdef USE_LIGHT - if (0 == Adc[idx].param3) { // Default (0) or Direct mode (1) -#endif // USE_LIGHT - Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, new_value); - XdrvRulesProcess(0); -#ifdef USE_LIGHT - } else { - char command[33]; - if (Settings->flag3.pwm_multi_channels) { // SetOption68 - Enable multi-channels PWM instead of Color PWM -// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_CHANNEL "%d %d"), idx +1, new_value); - snprintf_P(command, sizeof(command), PSTR(D_CMND_CHANNEL "%d %d"), idx +1, new_value); - } else { -// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_DIMMER "3 %d"), new_value); - snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER "3 %d"), new_value); // Change both RGB and W(W) Dimmers with no fading - } - ExecuteCommand(command, SRC_SWITCH); - } -#endif // USE_LIGHT + uint16_t value = Adc[idx].last_value / ANALOG_PERCENT; + Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, (value > 99) ? 100 : value); + XdrvRulesProcess(0); } } else if (ADC_JOY == Adc[idx].type) { @@ -436,6 +416,7 @@ void AdcEvery250ms(void) { } } } +#endif // USE_RULES uint8_t AdcGetButton(uint32_t pin) { for (uint32_t idx = 0; idx < Adcs.present; idx++) { @@ -660,21 +641,16 @@ void AdcShow(bool json) { switch (Adc[idx].type) { case ADC_INPUT: { -#ifdef USE_LIGHT - if (0 == Adc[idx].param3) { // Default (0) or Direct mode (1) -#endif // USE_LIGHT - uint16_t analog = AdcRead(Adc[idx].pin, 5); - if (json) { - AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog); + uint16_t analog = AdcRead(Adc[idx].pin, 5); + + if (json) { + AdcShowContinuation(&jsonflg); + ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog); #ifdef USE_WEBSERVER - } else { - WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog); + } else { + WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog); #endif // USE_WEBSERVER - } -#ifdef USE_LIGHT } -#endif // USE_LIGHT break; } case ADC_TEMP: { @@ -839,11 +815,10 @@ void CmndAdcParam(void) { if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) { uint8_t idx = XdrvMailbox.index -1; if (XdrvMailbox.data_len) { - if (XdrvMailbox.payload > 0) { + if (XdrvMailbox.payload > ADC_INPUT) { AdcGetSettings(idx); if (ArgC() > 3) { // Process parameter entry char argument[XdrvMailbox.data_len]; - // AdcParam 1, 0, ANALOG_RANGE, 0 ADC_INPUT rule | dimmer // AdcParam 2, 32000, 10000, 3350 ADC_TEMP Shelly mode // AdcParam 2, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode // AdcParam 3, 10000, 12518931, -1.405 @@ -859,8 +834,7 @@ void CmndAdcParam(void) { Adc[idx].type = XdrvMailbox.payload; Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int - if ((ADC_INPUT == XdrvMailbox.payload) || - (ADC_RANGE == XdrvMailbox.payload)) { + if (ADC_RANGE == XdrvMailbox.payload) { Adc[idx].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10)); // param3 = abs(int) Adc[idx].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10)); // param4 = abs(int) } else { @@ -923,7 +897,13 @@ void CmndAdcParam(void) { // AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[idx].param1, &a, &b, &ratioMQCleanAir); } } else { // Set default values based on current adc type - // AdcParam 1 + // AdcParam 2 + // AdcParam 3 + // AdcParam 4 + // AdcParam 5 + // AdcParam 6 + // AdcParam 7 + // AdcParam 8 Adcs.type = 0; AdcInitParams(idx); } @@ -934,9 +914,7 @@ void CmndAdcParam(void) { // AdcParam AdcGetSettings(idx); Response_P(PSTR("{\"" D_CMND_ADCPARAM "%d\":[%d,%d,%d"), idx +1, Adcs.type, Adc[idx].param1, Adc[idx].param2); - if ((ADC_INPUT == Adc[idx].type) || - (ADC_RANGE == Adc[idx].type) || - (ADC_MQ == Adc[idx].type)) { + if ((ADC_RANGE == Adc[idx].type) || (ADC_MQ == Adc[idx].type)) { ResponseAppend_P(PSTR(",%d,%d"), Adc[idx].param3, Adc[idx].param4); // param3 = int, param4 = int } else { @@ -1002,9 +980,11 @@ bool Xsns02(uint32_t function) { default: if (Adcs.present) { switch (function) { +#ifdef USE_RULES case FUNC_EVERY_250_MSECOND: AdcEvery250ms(); break; +#endif // USE_RULES case FUNC_EVERY_SECOND: AdcEverySecond(); break; From 88293d7414ef7b73e50026113b91e61700b79271 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:52:38 +0200 Subject: [PATCH 208/252] Analog GPIO changes - Analog GPIO ``ADC Input`` with ``AdcParam 1,,,,1`` provide direct light control - Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage - Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage --- CHANGELOG.md | 5 +- RELEASENOTES.md | 4 + .../tasmota_xsns_sensor/xsns_02_analog.ino | 171 ++++++++++-------- 3 files changed, 104 insertions(+), 76 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9df16d77c..08d416270 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,12 +10,15 @@ All notable changes to this project will be documented in this file. - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) - Berry `webserver_async` (#21836) - NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics (#21850) +- Analog GPIO ``ADC Input`` with ``AdcParam 1,,,,1`` provide direct light control +- Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage +- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage ### Breaking Changed ### Changed - Berry consolidated constants for solidified classes reduces Flash size (#2185) -- Berry updated precompiled Windows binary +- Berry updated precompiled Windows binary (#21858) ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 102884e1d..7c4115293 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -126,6 +126,9 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Support for Sonoff iFan04-H using template [#16402](https://github.com/arendst/Tasmota/issues/16402) - Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) - Support for Wooliis Hall Effect Coulometer or Battery capacity monitor [#21732](https://github.com/arendst/Tasmota/issues/21732) +- Analog GPIO ``ADC Input`` with ``AdcParam 1,,,,1`` provide direct light control +- Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage +- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage - Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740) - Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740) - Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574) @@ -170,6 +173,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131) +- Berry updated precompiled Windows binary [#21858](https://github.com/arendst/Tasmota/issues/21858) - Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812) - Berry consolidated constants for solidified classes reduces Flash size [#2185](https://github.com/arendst/Tasmota/issues/2185) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 85b0d116e..552374ada 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -34,7 +34,6 @@ #ifdef ESP8266 #define ANALOG_RESOLUTION 10 // 12 = 4095, 11 = 2047, 10 = 1023 #define ANALOG_RANGE 1023 // 4095 = 12, 2047 = 11, 1023 = 10 -#define ANALOG_PERCENT 10 // backward compatible div10 range #endif // ESP8266 #ifdef ESP32 @@ -42,8 +41,6 @@ #define ANALOG_RESOLUTION 12 // 12 = 4095, 11 = 2047, 10 = 1023 #undef ANALOG_RANGE #define ANALOG_RANGE 4095 // 4095 = 12, 2047 = 11, 1023 = 10 -#undef ANALOG_PERCENT -#define ANALOG_PERCENT ((ANALOG_RANGE + 50) / 100) // approximation to 1% ADC range #endif // ESP32 #define TO_CELSIUS(x) ((x) - 273.15f) @@ -212,52 +209,54 @@ void AdcGetSettings(uint32_t idx) { void AdcInitParams(uint8_t idx) { if ((Adcs.type != Adc[idx].type) || (Adc[idx].param1 > 1000000)) { - if (ADC_TEMP == Adc[idx].type) { - // Default Shelly 2.5 and 1PM parameters - Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_NTC_RESISTANCE; - Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000; - Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND - } - else if (ADC_LIGHT == Adc[idx].type) { - Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR; - Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; - } - else if (ADC_RANGE == Adc[idx].type) { - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = 100; - } - else if (ADC_CT_POWER == Adc[idx].type) { - Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 - Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 - Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10 - } - else if (ADC_PH == Adc[idx].type) { - Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH - Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 - Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH - Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 - } - else if (ADC_MQ == Adc[idx].type) { - Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... - Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - } - else if (ADC_VOLTAGE == Adc[idx].type) { - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = ANALOG_V33 * 10000; - } - else if (ADC_CURRENT == Adc[idx].type) { - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = ANALOG_V33 * 10000; + switch (Adc[idx].type) { + case ADC_INPUT: + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 3; // Margin + Adc[idx].param4 = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command + case ADC_TEMP: + // Default Shelly 2.5 and 1PM parameters + Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; + Adc[idx].param2 = ANALOG_NTC_RESISTANCE; + Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000; + Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND + break; + case ADC_LIGHT: + Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; + Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR; + Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; + break; + case ADC_RANGE: + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = 100; + break; + case ADC_CT_POWER: + Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 + Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 + Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10 + break; + case ADC_PH: + Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH + Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 + Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH + Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 + break; + case ADC_MQ: + Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... + Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + break; + case ADC_VOLTAGE: + case ADC_CURRENT: + Adc[idx].param1 = 0; + Adc[idx].param2 = ANALOG_RANGE; + Adc[idx].param3 = 0; + Adc[idx].param4 = ANALOG_V33 * 10000; + break; } } if ((Adcs.type != Adc[idx].type) || (0 == Adc[idx].param1) || (Adc[idx].param1 > ANALOG_RANGE)) { @@ -385,7 +384,6 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) { return analog; } -#ifdef USE_RULES void AdcEvery250ms(void) { char adc_idx[3] = { 0 }; uint32_t offset = 0; @@ -395,12 +393,35 @@ void AdcEvery250ms(void) { offset = 1; #endif if (ADC_INPUT == Adc[idx].type) { - uint16_t new_value = AdcRead(Adc[idx].pin, 5); - if ((new_value < Adc[idx].last_value -ANALOG_PERCENT) || (new_value > Adc[idx].last_value +ANALOG_PERCENT)) { + int adc = AdcRead(Adc[idx].pin, 4); // 4 = 16 mS + int new_value = changeUIntScale(adc, Adc[idx].param1, Adc[idx].param2, 0, 100); + if ((new_value < Adc[idx].last_value -Adc[idx].param3) || + (new_value > Adc[idx].last_value +Adc[idx].param3) || + ((0 == new_value) && (Adc[idx].last_value != 0)) || // Lowest end + ((100 == new_value) && (Adc[idx].last_value != 100))) { // Highest end Adc[idx].last_value = new_value; - uint16_t value = Adc[idx].last_value / ANALOG_PERCENT; - Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, (value > 99) ? 100 : value); - XdrvRulesProcess(0); + if (-1 == Adc[idx].indexOfPointer) { + Adc[idx].indexOfPointer = 0; + continue; // Skip action on restart + } +#ifdef USE_LIGHT + if (0 == Adc[idx].param4) { // Default (0) or Direct mode (1) +#endif // USE_LIGHT + Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, new_value); + XdrvRulesProcess(0); +#ifdef USE_LIGHT + } else { + char command[33]; + if (Settings->flag3.pwm_multi_channels) { // SetOption68 - Enable multi-channels PWM instead of Color PWM +// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_CHANNEL "%d %d"), idx +1, new_value); + snprintf_P(command, sizeof(command), PSTR(D_CMND_CHANNEL "%d %d"), idx +1, new_value); + } else { +// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_DIMMER "3 %d"), new_value); + snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER "3 %d"), new_value); // Change both RGB and W(W) Dimmers with no fading + } + ExecuteCommand(command, SRC_SWITCH); + } +#endif // USE_LIGHT } } else if (ADC_JOY == Adc[idx].type) { @@ -416,7 +437,6 @@ void AdcEvery250ms(void) { } } } -#endif // USE_RULES uint8_t AdcGetButton(uint32_t pin) { for (uint32_t idx = 0; idx < Adcs.present; idx++) { @@ -641,16 +661,21 @@ void AdcShow(bool json) { switch (Adc[idx].type) { case ADC_INPUT: { - uint16_t analog = AdcRead(Adc[idx].pin, 5); - - if (json) { - AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog); +#ifdef USE_LIGHT + if (0 == Adc[idx].param4) { // Default (0) or Direct mode (1) +#endif // USE_LIGHT + uint16_t analog = AdcRead(Adc[idx].pin, 5); + if (json) { + AdcShowContinuation(&jsonflg); + ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog); #ifdef USE_WEBSERVER - } else { - WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog); + } else { + WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog); #endif // USE_WEBSERVER + } +#ifdef USE_LIGHT } +#endif // USE_LIGHT break; } case ADC_TEMP: { @@ -815,10 +840,11 @@ void CmndAdcParam(void) { if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) { uint8_t idx = XdrvMailbox.index -1; if (XdrvMailbox.data_len) { - if (XdrvMailbox.payload > ADC_INPUT) { + if (XdrvMailbox.payload > 0) { AdcGetSettings(idx); if (ArgC() > 3) { // Process parameter entry char argument[XdrvMailbox.data_len]; + // AdcParam 1, 0, ANALOG_RANGE, 0 ADC_INPUT rule | dimmer // AdcParam 2, 32000, 10000, 3350 ADC_TEMP Shelly mode // AdcParam 2, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode // AdcParam 3, 10000, 12518931, -1.405 @@ -834,7 +860,8 @@ void CmndAdcParam(void) { Adc[idx].type = XdrvMailbox.payload; Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int - if (ADC_RANGE == XdrvMailbox.payload) { + if ((ADC_INPUT == XdrvMailbox.payload) || + (ADC_RANGE == XdrvMailbox.payload)) { Adc[idx].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10)); // param3 = abs(int) Adc[idx].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10)); // param4 = abs(int) } else { @@ -897,13 +924,7 @@ void CmndAdcParam(void) { // AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[idx].param1, &a, &b, &ratioMQCleanAir); } } else { // Set default values based on current adc type - // AdcParam 2 - // AdcParam 3 - // AdcParam 4 - // AdcParam 5 - // AdcParam 6 - // AdcParam 7 - // AdcParam 8 + // AdcParam 1 Adcs.type = 0; AdcInitParams(idx); } @@ -914,7 +935,9 @@ void CmndAdcParam(void) { // AdcParam AdcGetSettings(idx); Response_P(PSTR("{\"" D_CMND_ADCPARAM "%d\":[%d,%d,%d"), idx +1, Adcs.type, Adc[idx].param1, Adc[idx].param2); - if ((ADC_RANGE == Adc[idx].type) || (ADC_MQ == Adc[idx].type)) { + if ((ADC_INPUT == Adc[idx].type) || + (ADC_RANGE == Adc[idx].type) || + (ADC_MQ == Adc[idx].type)) { ResponseAppend_P(PSTR(",%d,%d"), Adc[idx].param3, Adc[idx].param4); // param3 = int, param4 = int } else { @@ -980,11 +1003,9 @@ bool Xsns02(uint32_t function) { default: if (Adcs.present) { switch (function) { -#ifdef USE_RULES case FUNC_EVERY_250_MSECOND: AdcEvery250ms(); break; -#endif // USE_RULES case FUNC_EVERY_SECOND: AdcEverySecond(); break; From a98399367b79d9df34706d63de4a65a3d9cdc7af Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:58:06 +0200 Subject: [PATCH 209/252] Fix analog reset adcparam 1 --- tasmota/tasmota_xsns_sensor/xsns_02_analog.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 552374ada..84649d3d8 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -215,6 +215,7 @@ void AdcInitParams(uint8_t idx) { Adc[idx].param2 = ANALOG_RANGE; Adc[idx].param3 = 3; // Margin Adc[idx].param4 = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command + break; case ADC_TEMP: // Default Shelly 2.5 and 1PM parameters Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; From a9a55b3ccd1d9835f7eb7ee34f06c14d98bed0e4 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 28 Jul 2024 21:24:39 +0200 Subject: [PATCH 210/252] Matter improve encoding of attributes to reduce flash size (#21864) --- .../src/embedded/Matter_0_Inspect.be | 42 +- .../embedded/Matter_Path_1_PathGenerator.be | 23 +- .../src/embedded/Matter_Plugin_0.be | 29 +- .../solidify/solidified_Matter_0_Inspect.h | 259 ++- .../solidified_Matter_Path_1_PathGenerator.h | 119 +- .../src/solidify/solidified_Matter_Plugin_0.h | 1677 ++++++++--------- .../solidified_Matter_Plugin_1_Aggregator.h | 28 +- .../solidified_Matter_Plugin_1_Device.h | 74 +- .../solidified_Matter_Plugin_1_Root.h | 205 +- .../solidify/solidified_Matter_Plugin_2_Fan.h | 89 +- .../solidified_Matter_Plugin_2_Light0.h | 86 +- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 182 +- ...Matter_Plugin_2_Sensor_GenericSwitch_Btn.h | 88 +- .../solidified_Matter_Plugin_2_Shutter.h | 93 +- .../solidified_Matter_Plugin_3_Light1.h | 102 +- ...olidified_Matter_Plugin_3_Sensor_Contact.h | 86 +- .../solidified_Matter_Plugin_3_Sensor_Flow.h | 88 +- ...lidified_Matter_Plugin_3_Sensor_Humidity.h | 88 +- ...ified_Matter_Plugin_3_Sensor_Illuminance.h | 88 +- ...idified_Matter_Plugin_3_Sensor_Occupancy.h | 88 +- .../solidified_Matter_Plugin_3_Sensor_OnOff.h | 86 +- ...lidified_Matter_Plugin_3_Sensor_Pressure.h | 88 +- .../solidified_Matter_Plugin_3_Sensor_Rain.h | 86 +- .../solidified_Matter_Plugin_3_Sensor_Temp.h | 88 +- ...idified_Matter_Plugin_3_Sensor_Waterleak.h | 86 +- .../solidified_Matter_Plugin_3_ShutterTilt.h | 96 +- .../solidified_Matter_Plugin_4_Light2.h | 118 +- .../solidified_Matter_Plugin_4_Light3.h | 120 +- 28 files changed, 1300 insertions(+), 3002 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be index a916691cc..0846415e7 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be @@ -89,20 +89,35 @@ matter.inspect = inspect # from the inheritance hierarchy #@ solidify:matter.consolidate_clusters,weak def consolidate_clusters(cl, m) - var cl_parent = super(cl) != nil ? super(cl).CLUSTERS : {} + var cl_parent = (super(cl) != nil) ? super(cl).CLUSTERS : {} var ret = {} # clone cl_parent for k: cl_parent.keys() # print(f"{k=} {cl_parent[k]=}") - ret[k] = cl_parent[k].copy() + # rebuild an actual list + var attr_arr = [] + var attr_bytes = cl_parent[k] + var attr_bytes_sz = (attr_bytes != nil) ? size(attr_bytes) / 2 : 0 + var idx = 0 + while (idx < attr_bytes_sz) + attr_arr.push(attr_bytes.get(idx * 2, -2)) + idx += 1 + end + ret[k] = attr_arr + # ret[k] = cl_parent[k].copy() end # add all keys from m # print("--- step 2") for k: m.keys() # print(f"{k=} {ret.find(k)=} {m[k]=}") - var l = ret.find(k) - if l == nil l = [] end - ret[k] = l + m[k] + if !ret.contains(k) + ret[k] = [] + end + for v: m[k] + if ret[k].find(v) == nil + ret[k].push(v) + end + end end # add all auto-attribbutes to each cluster var AUTO_ATTRIBUTES = [ # pre-defined auto attributes for every cluster @@ -120,6 +135,23 @@ def consolidate_clusters(cl, m) end end end + # sort all lists + for k: ret.keys() + var attr_list = ret[k] + # sort in place + ret[k] = matter.sort(attr_list) + end + # convert back to bytes + for k: ret.keys() + var attr_arr = ret[k] + var attr_bytes = bytes() + var idx = 0 + while (idx < size(attr_arr)) + attr_bytes.add(attr_arr[idx], -2) + idx += 1 + end + ret[k] = attr_bytes + end # print(ret) return ret end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be index 49be5faac..96e74025b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be @@ -266,17 +266,32 @@ class Matter_PathGenerator def _next_attribute() if (self.attribute == false) return false end # exhausted all possible values - var attributes = self.pi.get_attribute_list(self.cluster) + var attributes_bytes = self.pi.get_attribute_list_bytes(self.cluster) + var attributes_bytes_sz = (attributes_bytes != nil) ? size(attributes_bytes) / 2 : 0 var attr_filter = self.path_in_attribute + var idx = -1 if (self.attribute != nil) - idx = attributes.find(self.attribute) # find index in current list + var i = 0 + while true + if (i < attributes_bytes_sz) + if attributes_bytes.get(i * 2, -2) == self.attribute + idx = i + break + end + i += 1 + else + idx = nil + break + end + end + # idx = attributes.find(self.attribute) # finds index in current list end # safeguard if (idx != nil) - while (idx + 1 < size(attributes)) + while (idx + 1 < attributes_bytes_sz) idx += 1 # move to next item - self.attribute = attributes[idx] + self.attribute = attributes_bytes.get(idx * 2, -2) if (attr_filter == nil) || (attr_filter == self.attribute) return self.attribute end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be index 32d223593..e40a37b5e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be @@ -99,7 +99,6 @@ class Matter_Plugin static var UPDATE_COMMANDS = [] var device # reference to the `device` global object var endpoint # current endpoint - var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy var tick # tick value when it was last updated var node_label # name of the endpoint, used only in bridge mode, "" if none @@ -118,7 +117,6 @@ class Matter_Plugin def init(device, endpoint, config) self.device = device self.endpoint = endpoint - self.clusters = self.get_clusters() self.parse_configuration(config) self.node_label = config.find("name", "") end @@ -277,20 +275,26 @@ matter_device.events.dump() return self.endpoint end def get_cluster_list_sorted() - return self.device.k2l(self.clusters) + return self.device.k2l(self.CLUSTERS) end def contains_cluster(cluster) - return self.clusters.contains(cluster) + return self.CLUSTERS.contains(cluster) end - def get_attribute_list(cluster) - return self.clusters.find(cluster, []) + # def get_attribute_list(cluster) + # return self.clusters.find(cluster, []) + # end + # returns as a constant bytes of 16-bit ints, big endian + def get_attribute_list_bytes(cluster) + return self.CLUSTERS.find(cluster, nil) end def contains_attribute(cluster, attribute) - var attr_list = self.clusters.find(cluster) + var attr_list = self.CLUSTERS.find(cluster) + # log(f"MTR: contains_attribute {cluster=} {attribute=} {attr_list=}") if attr_list != nil var idx = 0 - while idx < size(attr_list) - if attr_list[idx] == attribute + var attr_sz = size(attr_list) / 2 # group of 16-bit integers, big endian + while idx < attr_sz + if attr_list.get(idx * 2, -2) == attribute return true end idx += 1 @@ -359,10 +363,11 @@ matter_device.events.dump() return gcl # return empty list elif attribute == 0xFFFB # AttributeList var acli = TLV.Matter_TLV_array() - var attr_list = self.get_attribute_list(cluster) + var attr_list_bytes = self.get_attribute_list_bytes(cluster) + var attr_list_bytes_sz = (attr_list_bytes != nil) ? size(attr_list_bytes) : 0 var idx = 0 - while idx < size(attr_list) - acli.add_TLV(nil, TLV.U2, attr_list[idx]) + while idx < attr_list_bytes_sz + acli.add_TLV(nil, TLV.U2, attr_list_bytes.get(idx * 2, -2)) idx += 1 end return acli # TODO, empty list for now diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h index 46efb89a3..e39e54d86 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h @@ -249,7 +249,7 @@ be_local_closure(module_matter_inspect, /* name */ ********************************************************************/ be_local_closure(module_matter_consolidate_clusters, /* name */ be_nested_proto( - 12, /* nstack */ + 16, /* nstack */ 2, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -257,17 +257,24 @@ be_local_closure(module_matter_consolidate_clusters, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(CLUSTERS), /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(push), + /* K2 */ be_const_int(2), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(stop_iteration), + /* K8 */ be_nested_str_weak(contains), + /* K9 */ be_nested_str_weak(find), + /* K10 */ be_nested_str_weak(matter), + /* K11 */ be_nested_str_weak(sort), + /* K12 */ be_nested_str_weak(add), }), be_str_weak(consolidate_clusters), &be_const_str_solidified, - ( &(const binstruction[100]) { /* code */ + ( &(const binstruction[180]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 @@ -287,87 +294,167 @@ be_local_closure(module_matter_consolidate_clusters, /* name */ 0x8C140501, // 0010 GETMET R5 R2 K1 0x7C140200, // 0011 CALL R5 1 0x7C100200, // 0012 CALL R4 1 - 0xA8020006, // 0013 EXBLK 0 #001B + 0xA802001A, // 0013 EXBLK 0 #002F 0x5C140800, // 0014 MOVE R5 R4 0x7C140000, // 0015 CALL R5 0 - 0x94180405, // 0016 GETIDX R6 R2 R5 - 0x8C180D02, // 0017 GETMET R6 R6 K2 - 0x7C180200, // 0018 CALL R6 1 - 0x980C0A06, // 0019 SETIDX R3 R5 R6 - 0x7001FFF8, // 001A JMP #0014 - 0x58100003, // 001B LDCONST R4 K3 - 0xAC100200, // 001C CATCH R4 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x60100010, // 001E GETGBL R4 G16 - 0x8C140301, // 001F GETMET R5 R1 K1 - 0x7C140200, // 0020 CALL R5 1 - 0x7C100200, // 0021 CALL R4 1 - 0xA802000E, // 0022 EXBLK 0 #0032 - 0x5C140800, // 0023 MOVE R5 R4 - 0x7C140000, // 0024 CALL R5 0 - 0x8C180704, // 0025 GETMET R6 R3 K4 - 0x5C200A00, // 0026 MOVE R8 R5 - 0x7C180400, // 0027 CALL R6 2 - 0x4C1C0000, // 0028 LDNIL R7 - 0x1C1C0C07, // 0029 EQ R7 R6 R7 - 0x781E0002, // 002A JMPF R7 #002E - 0x601C0012, // 002B GETGBL R7 G18 - 0x7C1C0000, // 002C CALL R7 0 - 0x5C180E00, // 002D MOVE R6 R7 - 0x941C0205, // 002E GETIDX R7 R1 R5 - 0x001C0C07, // 002F ADD R7 R6 R7 - 0x980C0A07, // 0030 SETIDX R3 R5 R7 - 0x7001FFF0, // 0031 JMP #0023 - 0x58100003, // 0032 LDCONST R4 K3 - 0xAC100200, // 0033 CATCH R4 1 0 - 0xB0080000, // 0034 RAISE 2 R0 R0 - 0x60100012, // 0035 GETGBL R4 G18 - 0x7C100000, // 0036 CALL R4 0 - 0x5416FFF7, // 0037 LDINT R5 65528 - 0x40140805, // 0038 CONNECT R5 R4 R5 - 0x5416FFF8, // 0039 LDINT R5 65529 - 0x40140805, // 003A CONNECT R5 R4 R5 - 0x5416FFF9, // 003B LDINT R5 65530 - 0x40140805, // 003C CONNECT R5 R4 R5 - 0x5416FFFA, // 003D LDINT R5 65531 - 0x40140805, // 003E CONNECT R5 R4 R5 - 0x5416FFFB, // 003F LDINT R5 65532 - 0x40140805, // 0040 CONNECT R5 R4 R5 - 0x5416FFFC, // 0041 LDINT R5 65533 - 0x40140805, // 0042 CONNECT R5 R4 R5 - 0x60140010, // 0043 GETGBL R5 G16 - 0x8C180301, // 0044 GETMET R6 R1 K1 - 0x7C180200, // 0045 CALL R6 1 - 0x7C140200, // 0046 CALL R5 1 - 0xA8020017, // 0047 EXBLK 0 #0060 - 0x5C180A00, // 0048 MOVE R6 R5 - 0x7C180000, // 0049 CALL R6 0 - 0x601C0010, // 004A GETGBL R7 G16 - 0x5C200800, // 004B MOVE R8 R4 - 0x7C1C0200, // 004C CALL R7 1 - 0xA802000D, // 004D EXBLK 0 #005C - 0x5C200E00, // 004E MOVE R8 R7 - 0x7C200000, // 004F CALL R8 0 - 0x94240606, // 0050 GETIDX R9 R3 R6 - 0x8C241304, // 0051 GETMET R9 R9 K4 - 0x5C2C1000, // 0052 MOVE R11 R8 - 0x7C240400, // 0053 CALL R9 2 - 0x4C280000, // 0054 LDNIL R10 - 0x1C24120A, // 0055 EQ R9 R9 R10 - 0x78260003, // 0056 JMPF R9 #005B - 0x94240606, // 0057 GETIDX R9 R3 R6 - 0x8C241305, // 0058 GETMET R9 R9 K5 - 0x5C2C1000, // 0059 MOVE R11 R8 - 0x7C240400, // 005A CALL R9 2 - 0x7001FFF1, // 005B JMP #004E - 0x581C0003, // 005C LDCONST R7 K3 - 0xAC1C0200, // 005D CATCH R7 1 0 - 0xB0080000, // 005E RAISE 2 R0 R0 - 0x7001FFE7, // 005F JMP #0048 - 0x58140003, // 0060 LDCONST R5 K3 - 0xAC140200, // 0061 CATCH R5 1 0 - 0xB0080000, // 0062 RAISE 2 R0 R0 - 0x80040600, // 0063 RET 1 R3 + 0x60180012, // 0016 GETGBL R6 G18 + 0x7C180000, // 0017 CALL R6 0 + 0x941C0405, // 0018 GETIDX R7 R2 R5 + 0x4C200000, // 0019 LDNIL R8 + 0x20200E08, // 001A NE R8 R7 R8 + 0x78220004, // 001B JMPF R8 #0021 + 0x6020000C, // 001C GETGBL R8 G12 + 0x5C240E00, // 001D MOVE R9 R7 + 0x7C200200, // 001E CALL R8 1 + 0x0C201102, // 001F DIV R8 R8 K2 + 0x70020000, // 0020 JMP #0022 + 0x58200003, // 0021 LDCONST R8 K3 + 0x58240003, // 0022 LDCONST R9 K3 + 0x14281208, // 0023 LT R10 R9 R8 + 0x782A0007, // 0024 JMPF R10 #002D + 0x8C280D04, // 0025 GETMET R10 R6 K4 + 0x8C300F05, // 0026 GETMET R12 R7 K5 + 0x08381302, // 0027 MUL R14 R9 K2 + 0x543DFFFD, // 0028 LDINT R15 -2 + 0x7C300600, // 0029 CALL R12 3 + 0x7C280400, // 002A CALL R10 2 + 0x00241306, // 002B ADD R9 R9 K6 + 0x7001FFF5, // 002C JMP #0023 + 0x980C0A06, // 002D SETIDX R3 R5 R6 + 0x7001FFE4, // 002E JMP #0014 + 0x58100007, // 002F LDCONST R4 K7 + 0xAC100200, // 0030 CATCH R4 1 0 + 0xB0080000, // 0031 RAISE 2 R0 R0 + 0x60100010, // 0032 GETGBL R4 G16 + 0x8C140301, // 0033 GETMET R5 R1 K1 + 0x7C140200, // 0034 CALL R5 1 + 0x7C100200, // 0035 CALL R4 1 + 0xA802001E, // 0036 EXBLK 0 #0056 + 0x5C140800, // 0037 MOVE R5 R4 + 0x7C140000, // 0038 CALL R5 0 + 0x8C180708, // 0039 GETMET R6 R3 K8 + 0x5C200A00, // 003A MOVE R8 R5 + 0x7C180400, // 003B CALL R6 2 + 0x741A0002, // 003C JMPT R6 #0040 + 0x60180012, // 003D GETGBL R6 G18 + 0x7C180000, // 003E CALL R6 0 + 0x980C0A06, // 003F SETIDX R3 R5 R6 + 0x60180010, // 0040 GETGBL R6 G16 + 0x941C0205, // 0041 GETIDX R7 R1 R5 + 0x7C180200, // 0042 CALL R6 1 + 0xA802000D, // 0043 EXBLK 0 #0052 + 0x5C1C0C00, // 0044 MOVE R7 R6 + 0x7C1C0000, // 0045 CALL R7 0 + 0x94200605, // 0046 GETIDX R8 R3 R5 + 0x8C201109, // 0047 GETMET R8 R8 K9 + 0x5C280E00, // 0048 MOVE R10 R7 + 0x7C200400, // 0049 CALL R8 2 + 0x4C240000, // 004A LDNIL R9 + 0x1C201009, // 004B EQ R8 R8 R9 + 0x78220003, // 004C JMPF R8 #0051 + 0x94200605, // 004D GETIDX R8 R3 R5 + 0x8C201104, // 004E GETMET R8 R8 K4 + 0x5C280E00, // 004F MOVE R10 R7 + 0x7C200400, // 0050 CALL R8 2 + 0x7001FFF1, // 0051 JMP #0044 + 0x58180007, // 0052 LDCONST R6 K7 + 0xAC180200, // 0053 CATCH R6 1 0 + 0xB0080000, // 0054 RAISE 2 R0 R0 + 0x7001FFE0, // 0055 JMP #0037 + 0x58100007, // 0056 LDCONST R4 K7 + 0xAC100200, // 0057 CATCH R4 1 0 + 0xB0080000, // 0058 RAISE 2 R0 R0 + 0x60100012, // 0059 GETGBL R4 G18 + 0x7C100000, // 005A CALL R4 0 + 0x5416FFF7, // 005B LDINT R5 65528 + 0x40140805, // 005C CONNECT R5 R4 R5 + 0x5416FFF8, // 005D LDINT R5 65529 + 0x40140805, // 005E CONNECT R5 R4 R5 + 0x5416FFF9, // 005F LDINT R5 65530 + 0x40140805, // 0060 CONNECT R5 R4 R5 + 0x5416FFFA, // 0061 LDINT R5 65531 + 0x40140805, // 0062 CONNECT R5 R4 R5 + 0x5416FFFB, // 0063 LDINT R5 65532 + 0x40140805, // 0064 CONNECT R5 R4 R5 + 0x5416FFFC, // 0065 LDINT R5 65533 + 0x40140805, // 0066 CONNECT R5 R4 R5 + 0x60140010, // 0067 GETGBL R5 G16 + 0x8C180301, // 0068 GETMET R6 R1 K1 + 0x7C180200, // 0069 CALL R6 1 + 0x7C140200, // 006A CALL R5 1 + 0xA8020017, // 006B EXBLK 0 #0084 + 0x5C180A00, // 006C MOVE R6 R5 + 0x7C180000, // 006D CALL R6 0 + 0x601C0010, // 006E GETGBL R7 G16 + 0x5C200800, // 006F MOVE R8 R4 + 0x7C1C0200, // 0070 CALL R7 1 + 0xA802000D, // 0071 EXBLK 0 #0080 + 0x5C200E00, // 0072 MOVE R8 R7 + 0x7C200000, // 0073 CALL R8 0 + 0x94240606, // 0074 GETIDX R9 R3 R6 + 0x8C241309, // 0075 GETMET R9 R9 K9 + 0x5C2C1000, // 0076 MOVE R11 R8 + 0x7C240400, // 0077 CALL R9 2 + 0x4C280000, // 0078 LDNIL R10 + 0x1C24120A, // 0079 EQ R9 R9 R10 + 0x78260003, // 007A JMPF R9 #007F + 0x94240606, // 007B GETIDX R9 R3 R6 + 0x8C241304, // 007C GETMET R9 R9 K4 + 0x5C2C1000, // 007D MOVE R11 R8 + 0x7C240400, // 007E CALL R9 2 + 0x7001FFF1, // 007F JMP #0072 + 0x581C0007, // 0080 LDCONST R7 K7 + 0xAC1C0200, // 0081 CATCH R7 1 0 + 0xB0080000, // 0082 RAISE 2 R0 R0 + 0x7001FFE7, // 0083 JMP #006C + 0x58140007, // 0084 LDCONST R5 K7 + 0xAC140200, // 0085 CATCH R5 1 0 + 0xB0080000, // 0086 RAISE 2 R0 R0 + 0x60140010, // 0087 GETGBL R5 G16 + 0x8C180701, // 0088 GETMET R6 R3 K1 + 0x7C180200, // 0089 CALL R6 1 + 0x7C140200, // 008A CALL R5 1 + 0xA8020008, // 008B EXBLK 0 #0095 + 0x5C180A00, // 008C MOVE R6 R5 + 0x7C180000, // 008D CALL R6 0 + 0x941C0606, // 008E GETIDX R7 R3 R6 + 0xB8221400, // 008F GETNGBL R8 K10 + 0x8C20110B, // 0090 GETMET R8 R8 K11 + 0x5C280E00, // 0091 MOVE R10 R7 + 0x7C200400, // 0092 CALL R8 2 + 0x980C0C08, // 0093 SETIDX R3 R6 R8 + 0x7001FFF6, // 0094 JMP #008C + 0x58140007, // 0095 LDCONST R5 K7 + 0xAC140200, // 0096 CATCH R5 1 0 + 0xB0080000, // 0097 RAISE 2 R0 R0 + 0x60140010, // 0098 GETGBL R5 G16 + 0x8C180701, // 0099 GETMET R6 R3 K1 + 0x7C180200, // 009A CALL R6 1 + 0x7C140200, // 009B CALL R5 1 + 0xA8020012, // 009C EXBLK 0 #00B0 + 0x5C180A00, // 009D MOVE R6 R5 + 0x7C180000, // 009E CALL R6 0 + 0x941C0606, // 009F GETIDX R7 R3 R6 + 0x60200015, // 00A0 GETGBL R8 G21 + 0x7C200000, // 00A1 CALL R8 0 + 0x58240003, // 00A2 LDCONST R9 K3 + 0x6028000C, // 00A3 GETGBL R10 G12 + 0x5C2C0E00, // 00A4 MOVE R11 R7 + 0x7C280200, // 00A5 CALL R10 1 + 0x1428120A, // 00A6 LT R10 R9 R10 + 0x782A0005, // 00A7 JMPF R10 #00AE + 0x8C28110C, // 00A8 GETMET R10 R8 K12 + 0x94300E09, // 00A9 GETIDX R12 R7 R9 + 0x5435FFFD, // 00AA LDINT R13 -2 + 0x7C280600, // 00AB CALL R10 3 + 0x00241306, // 00AC ADD R9 R9 K6 + 0x7001FFF4, // 00AD JMP #00A3 + 0x980C0C08, // 00AE SETIDX R3 R6 R8 + 0x7001FFEC, // 00AF JMP #009D + 0x58140007, // 00B0 LDCONST R5 K7 + 0xAC140200, // 00B1 CATCH R5 1 0 + 0xB0080000, // 00B2 RAISE 2 R0 R0 + 0x80040600, // 00B3 RET 1 R3 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h index e8d89dfb5..698ec5627 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_PathGenerator' ktab size: 34, total: 78 (saved 352 bytes) -static const bvalue be_ktab_class_Matter_PathGenerator[34] = { +// compact class 'Matter_PathGenerator' ktab size: 37, total: 80 (saved 344 bytes) +static const bvalue be_ktab_class_Matter_PathGenerator[37] = { /* K0 */ be_nested_str_weak(path_concrete), /* K1 */ be_nested_str_weak(reset), /* K2 */ be_nested_str_weak(pi), @@ -35,10 +35,13 @@ static const bvalue be_ktab_class_Matter_PathGenerator[34] = { /* K27 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), /* K28 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K29 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), - /* K30 */ be_nested_str_weak(get_attribute_list), - /* K31 */ be_nested_str_weak(plugins), - /* K32 */ be_nested_str_weak(get_cluster_list_sorted), - /* K33 */ be_nested_str_weak(Path), + /* K30 */ be_nested_str_weak(get_attribute_list_bytes), + /* K31 */ be_const_int(2), + /* K32 */ be_const_int(0), + /* K33 */ be_nested_str_weak(get), + /* K34 */ be_nested_str_weak(plugins), + /* K35 */ be_nested_str_weak(get_cluster_list_sorted), + /* K36 */ be_nested_str_weak(Path), }; @@ -403,7 +406,7 @@ be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */ ********************************************************************/ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ be_nested_proto( - 7, /* nstack */ + 10, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -414,7 +417,7 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(_next_attribute), &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ + ( &(const binstruction[69]) { /* code */ 0x88040104, // 0000 GETMBR R1 R0 K4 0x50080000, // 0001 LDBOOL R2 0 0 0x1C040202, // 0002 EQ R1 R1 R2 @@ -425,41 +428,65 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ 0x8C04031E, // 0007 GETMET R1 R1 K30 0x880C0103, // 0008 GETMBR R3 R0 K3 0x7C040400, // 0009 CALL R1 2 - 0x88080109, // 000A GETMBR R2 R0 K9 - 0x540DFFFE, // 000B LDINT R3 -1 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x4C140000, // 000D LDNIL R5 - 0x20100805, // 000E NE R4 R4 R5 - 0x78120003, // 000F JMPF R4 #0014 - 0x8C100317, // 0010 GETMET R4 R1 K23 - 0x88180104, // 0011 GETMBR R6 R0 K4 - 0x7C100400, // 0012 CALL R4 2 - 0x5C0C0800, // 0013 MOVE R3 R4 - 0x4C100000, // 0014 LDNIL R4 - 0x20100604, // 0015 NE R4 R3 R4 - 0x78120011, // 0016 JMPF R4 #0029 - 0x00100718, // 0017 ADD R4 R3 K24 - 0x6014000C, // 0018 GETGBL R5 G12 - 0x5C180200, // 0019 MOVE R6 R1 - 0x7C140200, // 001A CALL R5 1 - 0x14100805, // 001B LT R4 R4 R5 - 0x7812000B, // 001C JMPF R4 #0029 - 0x000C0718, // 001D ADD R3 R3 K24 - 0x94100203, // 001E GETIDX R4 R1 R3 - 0x90020804, // 001F SETMBR R0 K4 R4 - 0x4C100000, // 0020 LDNIL R4 - 0x1C100404, // 0021 EQ R4 R2 R4 - 0x74120002, // 0022 JMPT R4 #0026 - 0x88100104, // 0023 GETMBR R4 R0 K4 - 0x1C100404, // 0024 EQ R4 R2 R4 - 0x78120001, // 0025 JMPF R4 #0028 - 0x88100104, // 0026 GETMBR R4 R0 K4 - 0x80040800, // 0027 RET 1 R4 - 0x7001FFED, // 0028 JMP #0017 - 0x50100000, // 0029 LDBOOL R4 0 0 - 0x90020804, // 002A SETMBR R0 K4 R4 - 0x50100000, // 002B LDBOOL R4 0 0 - 0x80040800, // 002C RET 1 R4 + 0x4C080000, // 000A LDNIL R2 + 0x20080202, // 000B NE R2 R1 R2 + 0x780A0004, // 000C JMPF R2 #0012 + 0x6008000C, // 000D GETGBL R2 G12 + 0x5C0C0200, // 000E MOVE R3 R1 + 0x7C080200, // 000F CALL R2 1 + 0x0C08051F, // 0010 DIV R2 R2 K31 + 0x70020000, // 0011 JMP #0013 + 0x58080020, // 0012 LDCONST R2 K32 + 0x880C0109, // 0013 GETMBR R3 R0 K9 + 0x5411FFFE, // 0014 LDINT R4 -1 + 0x88140104, // 0015 GETMBR R5 R0 K4 + 0x4C180000, // 0016 LDNIL R6 + 0x20140A06, // 0017 NE R5 R5 R6 + 0x78160012, // 0018 JMPF R5 #002C + 0x58140020, // 0019 LDCONST R5 K32 + 0x50180200, // 001A LDBOOL R6 1 0 + 0x781A000F, // 001B JMPF R6 #002C + 0x14180A02, // 001C LT R6 R5 R2 + 0x781A000A, // 001D JMPF R6 #0029 + 0x8C180321, // 001E GETMET R6 R1 K33 + 0x08200B1F, // 001F MUL R8 R5 K31 + 0x5425FFFD, // 0020 LDINT R9 -2 + 0x7C180600, // 0021 CALL R6 3 + 0x881C0104, // 0022 GETMBR R7 R0 K4 + 0x1C180C07, // 0023 EQ R6 R6 R7 + 0x781A0001, // 0024 JMPF R6 #0027 + 0x5C100A00, // 0025 MOVE R4 R5 + 0x70020004, // 0026 JMP #002C + 0x00140B18, // 0027 ADD R5 R5 K24 + 0x70020001, // 0028 JMP #002B + 0x4C100000, // 0029 LDNIL R4 + 0x70020000, // 002A JMP #002C + 0x7001FFED, // 002B JMP #001A + 0x4C140000, // 002C LDNIL R5 + 0x20140805, // 002D NE R5 R4 R5 + 0x78160011, // 002E JMPF R5 #0041 + 0x00140918, // 002F ADD R5 R4 K24 + 0x14140A02, // 0030 LT R5 R5 R2 + 0x7816000E, // 0031 JMPF R5 #0041 + 0x00100918, // 0032 ADD R4 R4 K24 + 0x8C140321, // 0033 GETMET R5 R1 K33 + 0x081C091F, // 0034 MUL R7 R4 K31 + 0x5421FFFD, // 0035 LDINT R8 -2 + 0x7C140600, // 0036 CALL R5 3 + 0x90020805, // 0037 SETMBR R0 K4 R5 + 0x4C140000, // 0038 LDNIL R5 + 0x1C140605, // 0039 EQ R5 R3 R5 + 0x74160002, // 003A JMPT R5 #003E + 0x88140104, // 003B GETMBR R5 R0 K4 + 0x1C140605, // 003C EQ R5 R3 R5 + 0x78160001, // 003D JMPF R5 #0040 + 0x88140104, // 003E GETMBR R5 R0 K4 + 0x80040A00, // 003F RET 1 R5 + 0x7001FFED, // 0040 JMP #002F + 0x50140000, // 0041 LDBOOL R5 0 0 + 0x90020805, // 0042 SETMBR R0 K4 R5 + 0x50140000, // 0043 LDBOOL R5 0 0 + 0x80040A00, // 0044 RET 1 R5 }) ) ); @@ -490,7 +517,7 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0x50040000, // 0004 LDBOOL R1 0 0 0x80040200, // 0005 RET 1 R1 0x88040106, // 0006 GETMBR R1 R0 K6 - 0x8804031F, // 0007 GETMBR R1 R1 K31 + 0x88040322, // 0007 GETMBR R1 R1 K34 0x88080107, // 0008 GETMBR R2 R0 K7 0x4C0C0000, // 0009 LDNIL R3 0x90020603, // 000A SETMBR R0 K3 R3 @@ -526,7 +553,7 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0x1C100404, // 0028 EQ R4 R2 R4 0x78120005, // 0029 JMPF R4 #0030 0x88100102, // 002A GETMBR R4 R0 K2 - 0x8C100920, // 002B GETMET R4 R4 K32 + 0x8C100923, // 002B GETMET R4 R4 K35 0x7C100200, // 002C CALL R4 1 0x90020A04, // 002D SETMBR R0 K5 R4 0x88100102, // 002E GETMBR R4 R0 K2 @@ -595,7 +622,7 @@ be_local_closure(class_Matter_PathGenerator_start, /* name */ &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xB8163200, // 0000 GETNGBL R5 K25 - 0x8C140B21, // 0001 GETMET R5 R5 K33 + 0x8C140B24, // 0001 GETMET R5 R5 K36 0x7C140200, // 0002 CALL R5 1 0x90020005, // 0003 SETMBR R0 K0 R5 0x8C140101, // 0004 GETMET R5 R0 K1 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 8d4d0b73e..e27b73416 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -4,52 +4,52 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Plugin; -// compact class 'Matter_Plugin' ktab size: 62, total: 103 (saved 328 bytes) -static const bvalue be_ktab_class_Matter_Plugin[62] = { - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(json), - /* K3 */ be_nested_str_weak(node_label), - /* K4 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s), - /* K5 */ be_nested_str_weak(dump), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(append_state_json), - /* K8 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D), - /* K9 */ be_nested_str_weak(endpoint), - /* K10 */ be_nested_str_weak(msg), - /* K11 */ be_nested_str_weak(message_handler), - /* K12 */ be_nested_str_weak(im), - /* K13 */ be_nested_str_weak(send_ack_now), - /* K14 */ be_nested_str_weak(update_next), - /* K15 */ be_nested_str_weak(matter), - /* K16 */ be_nested_str_weak(jitter), - /* K17 */ be_nested_str_weak(UPDATE_TIME), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(time_reached), - /* K20 */ be_nested_str_weak(update_shadow), - /* K21 */ be_nested_str_weak(millis), - /* K22 */ be_nested_str_weak(events), - /* K23 */ be_nested_str_weak(publish_event), - /* K24 */ be_nested_str_weak(attribute_updated), - /* K25 */ be_const_class(be_class_Matter_Plugin), - /* K26 */ be_nested_str_weak(ARG), - /* K27 */ be_nested_str_weak(ARG_TYPE), - /* K28 */ be_nested_str_weak(clusters), - /* K29 */ be_nested_str_weak(get_clusters), - /* K30 */ be_nested_str_weak(parse_configuration), - /* K31 */ be_nested_str_weak(find), - /* K32 */ be_nested_str_weak(name), - /* K33 */ be_nested_str_weak(BRIDGE), - /* K34 */ be_nested_str_weak(UPDATE_COMMANDS), - /* K35 */ be_nested_str_weak(k2l), - /* K36 */ be_const_int(0), - /* K37 */ be_const_int(1), +// compact class 'Matter_Plugin' ktab size: 61, total: 104 (saved 344 bytes) +static const bvalue be_ktab_class_Matter_Plugin[61] = { + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(json), + /* K2 */ be_nested_str_weak(node_label), + /* K3 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s), + /* K4 */ be_nested_str_weak(dump), + /* K5 */ be_nested_str_weak(append_state_json), + /* K6 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D), + /* K7 */ be_nested_str_weak(endpoint), + /* K8 */ be_nested_str_weak(CLUSTERS), + /* K9 */ be_nested_str_weak(find), + /* K10 */ be_const_class(be_class_Matter_Plugin), + /* K11 */ be_nested_str_weak(ARG), + /* K12 */ be_nested_str_weak(msg), + /* K13 */ be_nested_str_weak(device), + /* K14 */ be_nested_str_weak(message_handler), + /* K15 */ be_nested_str_weak(im), + /* K16 */ be_nested_str_weak(send_ack_now), + /* K17 */ be_nested_str_weak(k2l), + /* K18 */ be_nested_str_weak(parse_configuration), + /* K19 */ be_nested_str_weak(name), + /* K20 */ be_nested_str_weak(ARG_TYPE), + /* K21 */ be_nested_str_weak(update_next), + /* K22 */ be_nested_str_weak(matter), + /* K23 */ be_nested_str_weak(jitter), + /* K24 */ be_nested_str_weak(UPDATE_TIME), + /* K25 */ be_nested_str_weak(tasmota), + /* K26 */ be_nested_str_weak(time_reached), + /* K27 */ be_nested_str_weak(tick), + /* K28 */ be_nested_str_weak(update_shadow), + /* K29 */ be_nested_str_weak(millis), + /* K30 */ be_nested_str_weak(events), + /* K31 */ be_nested_str_weak(publish_event), + /* K32 */ be_nested_str_weak(attribute_updated), + /* K33 */ be_const_int(0), + /* K34 */ be_const_int(2), + /* K35 */ be_nested_str_weak(get), + /* K36 */ be_const_int(1), + /* K37 */ be_nested_str_weak(UPDATE_COMMANDS), /* K38 */ be_nested_str_weak(_X25s_X3A_X25s), /* K39 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s), /* K40 */ be_nested_str_weak(publish_command), /* K41 */ be_nested_str_weak(MtrReceived), - /* K42 */ be_nested_str_weak(CLUSTERS), - /* K43 */ be_nested_str_weak(contains), + /* K42 */ be_nested_str_weak(contains), + /* K43 */ be_nested_str_weak(BRIDGE), /* K44 */ be_nested_str_weak(TLV), /* K45 */ be_nested_str_weak(cluster), /* K46 */ be_nested_str_weak(attribute), @@ -62,23 +62,22 @@ static const bvalue be_ktab_class_Matter_Plugin[62] = { /* K53 */ be_nested_str_weak(stop_iteration), /* K54 */ be_nested_str_weak(get_cluster_list_sorted), /* K55 */ be_nested_str_weak(U4), - /* K56 */ be_const_int(2), - /* K57 */ be_const_int(3), - /* K58 */ be_nested_str_weak(set), - /* K59 */ be_nested_str_weak(get_attribute_list), - /* K60 */ be_nested_str_weak(FEATURE_MAPS), - /* K61 */ be_nested_str_weak(CLUSTER_REVISIONS), + /* K56 */ be_const_int(3), + /* K57 */ be_nested_str_weak(set), + /* K58 */ be_nested_str_weak(get_attribute_list_bytes), + /* K59 */ be_nested_str_weak(FEATURE_MAPS), + /* K60 */ be_nested_str_weak(CLUSTER_REVISIONS), }; extern const bclass be_class_Matter_Plugin; /******************************************************************** -** Solidified function: update_shadow +** Solidified function: append_state_json ********************************************************************/ -be_local_closure(class_Matter_Plugin_update_shadow, /* name */ +be_local_closure(class_Matter_Plugin_append_state_json, /* name */ be_nested_proto( - 2, /* nstack */ + 1, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -87,13 +86,10 @@ be_local_closure(class_Matter_Plugin_update_shadow, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(update_shadow), + be_str_weak(append_state_json), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x88040300, // 0001 GETMBR R1 R1 K0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 + ( &(const binstruction[ 1]) { /* code */ + 0x80060000, // 0000 RET 1 K0 }) ) ); @@ -117,23 +113,23 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ be_str_weak(state_json), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0xA4060400, // 0000 IMPORT R1 K2 - 0x88080103, // 0001 GETMBR R2 R0 K3 + 0xA4060200, // 0000 IMPORT R1 K1 + 0x88080102, // 0001 GETMBR R2 R0 K2 0x780A0006, // 0002 JMPF R2 #000A 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0004, // 0004 LDCONST R3 K4 - 0x8C100305, // 0005 GETMET R4 R1 K5 - 0x88180103, // 0006 GETMBR R6 R0 K3 + 0x580C0003, // 0004 LDCONST R3 K3 + 0x8C100304, // 0005 GETMET R4 R1 K4 + 0x88180102, // 0006 GETMBR R6 R0 K2 0x7C100400, // 0007 CALL R4 2 0x7C080400, // 0008 CALL R2 2 0x70020000, // 0009 JMP #000B - 0x58080006, // 000A LDCONST R2 K6 - 0x8C0C0107, // 000B GETMET R3 R0 K7 + 0x58080000, // 000A LDCONST R2 K0 + 0x8C0C0105, // 000B GETMET R3 R0 K5 0x7C0C0200, // 000C CALL R3 1 0x780E0007, // 000D JMPF R3 #0016 0x60100018, // 000E GETGBL R4 G24 - 0x58140008, // 000F LDCONST R5 K8 - 0x88180109, // 0010 GETMBR R6 R0 K9 + 0x58140006, // 000F LDCONST R5 K6 + 0x88180107, // 0010 GETMBR R6 R0 K7 0x5C1C0400, // 0011 MOVE R7 R2 0x5C200600, // 0012 MOVE R8 R3 0x7C100800, // 0013 CALL R4 4 @@ -148,6 +144,168 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: timed_request +********************************************************************/ +be_local_closure(class_Matter_Plugin_timed_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(timed_request), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_attribute_list_bytes +********************************************************************/ +be_local_closure(class_Matter_Plugin_get_attribute_list_bytes, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(get_attribute_list_bytes), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x8C080509, // 0001 GETMET R2 R2 K9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x4C140000, // 0003 LDNIL R5 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_sensors +********************************************************************/ +be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(parse_sensors), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +be_local_closure(class_Matter_Plugin_update_virtual, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_name +********************************************************************/ +be_local_closure(class_Matter_Plugin_get_name, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(get_name), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_conf_to_string +********************************************************************/ +be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(ui_conf_to_string), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x5808000A, // 0000 LDCONST R2 K10 + 0x880C010B, // 0001 GETMBR R3 R0 K11 + 0x780E0006, // 0002 JMPF R3 #000A + 0x60100008, // 0003 GETGBL R4 G8 + 0x8C140309, // 0004 GETMET R5 R1 K9 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x58200000, // 0006 LDCONST R8 K0 + 0x7C140600, // 0007 CALL R5 3 + 0x7C100200, // 0008 CALL R4 1 + 0x70020000, // 0009 JMP #000B + 0x58100000, // 000A LDCONST R4 K0 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: ack_request ********************************************************************/ @@ -165,18 +323,18 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ be_str_weak(ack_request), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x8808030A, // 0000 GETMBR R2 R1 K10 + 0x8808030C, // 0000 GETMBR R2 R1 K12 0x4C0C0000, // 0001 LDNIL R3 0x200C0403, // 0002 NE R3 R2 R3 0x780E0005, // 0003 JMPF R3 #000A - 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x880C070B, // 0005 GETMBR R3 R3 K11 - 0x880C070C, // 0006 GETMBR R3 R3 K12 - 0x8C0C070D, // 0007 GETMET R3 R3 K13 + 0x880C010D, // 0004 GETMBR R3 R0 K13 + 0x880C070E, // 0005 GETMBR R3 R3 K14 + 0x880C070F, // 0006 GETMBR R3 R3 K15 + 0x8C0C0710, // 0007 GETMET R3 R3 K16 0x5C140400, // 0008 MOVE R5 R2 0x7C0C0400, // 0009 CALL R3 2 0x4C0C0000, // 000A LDNIL R3 - 0x90061403, // 000B SETMBR R1 K10 R3 + 0x90061803, // 000B SETMBR R1 K12 R3 0x80000000, // 000C RET 0 }) ) @@ -185,61 +343,11 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ /******************************************************************** -** Solidified function: write_attribute +** Solidified function: get_cluster_list_sorted ********************************************************************/ -be_local_closure(class_Matter_Plugin_write_attribute, /* name */ +be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(write_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -be_local_closure(class_Matter_Plugin_invoke_request, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: append_state_json -********************************************************************/ -be_local_closure(class_Matter_Plugin_append_state_json, /* name */ - be_nested_proto( - 1, /* nstack */ + 4, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -248,10 +356,81 @@ be_local_closure(class_Matter_Plugin_append_state_json, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(append_state_json), + be_str_weak(get_cluster_list_sorted), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80060C00, // 0000 RET 1 K6 + ( &(const binstruction[ 5]) { /* code */ + 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x880C0108, // 0002 GETMBR R3 R0 K8 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_Matter_Plugin_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x90021A01, // 0000 SETMBR R0 K13 R1 + 0x90020E02, // 0001 SETMBR R0 K7 R2 + 0x8C100112, // 0002 GETMET R4 R0 K18 + 0x5C180600, // 0003 MOVE R6 R3 + 0x7C100400, // 0004 CALL R4 2 + 0x8C100709, // 0005 GETMET R4 R3 K9 + 0x58180013, // 0006 LDCONST R6 K19 + 0x581C0000, // 0007 LDCONST R7 K0 + 0x7C100600, // 0008 CALL R4 3 + 0x90020404, // 0009 SETMBR R0 K2 R4 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ui_string_to_conf +********************************************************************/ +be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(ui_string_to_conf), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x580C000A, // 0000 LDCONST R3 K10 + 0x8810010B, // 0001 GETMBR R4 R0 K11 + 0x88140114, // 0002 GETMBR R5 R0 K20 + 0x780A0004, // 0003 JMPF R2 #0009 + 0x78120003, // 0004 JMPF R4 #0009 + 0x5C180A00, // 0005 MOVE R6 R5 + 0x5C1C0400, // 0006 MOVE R7 R2 + 0x7C180200, // 0007 CALL R6 1 + 0x98040806, // 0008 SETIDX R1 R4 R6 + 0x80040200, // 0009 RET 1 R1 }) ) ); @@ -275,33 +454,33 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ be_str_weak(every_250ms), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ - 0x8804010E, // 0000 GETMBR R1 R0 K14 + 0x88040115, // 0000 GETMBR R1 R0 K21 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060005, // 0003 JMPF R1 #000A - 0xB8061E00, // 0004 GETNGBL R1 K15 - 0x8C040310, // 0005 GETMET R1 R1 K16 - 0x880C0111, // 0006 GETMBR R3 R0 K17 + 0xB8062C00, // 0004 GETNGBL R1 K22 + 0x8C040317, // 0005 GETMET R1 R1 K23 + 0x880C0118, // 0006 GETMBR R3 R0 K24 0x7C040400, // 0007 CALL R1 2 - 0x90021C01, // 0008 SETMBR R0 K14 R1 + 0x90022A01, // 0008 SETMBR R0 K21 R1 0x70020010, // 0009 JMP #001B - 0xB8062400, // 000A GETNGBL R1 K18 - 0x8C040313, // 000B GETMET R1 R1 K19 - 0x880C010E, // 000C GETMBR R3 R0 K14 + 0xB8063200, // 000A GETNGBL R1 K25 + 0x8C04031A, // 000B GETMET R1 R1 K26 + 0x880C0115, // 000C GETMBR R3 R0 K21 0x7C040400, // 000D CALL R1 2 0x7806000B, // 000E JMPF R1 #001B - 0x88040100, // 000F GETMBR R1 R0 K0 - 0x88080101, // 0010 GETMBR R2 R0 K1 - 0x88080500, // 0011 GETMBR R2 R2 K0 + 0x8804011B, // 000F GETMBR R1 R0 K27 + 0x8808010D, // 0010 GETMBR R2 R0 K13 + 0x8808051B, // 0011 GETMBR R2 R2 K27 0x20040202, // 0012 NE R1 R1 R2 0x78060001, // 0013 JMPF R1 #0016 - 0x8C040114, // 0014 GETMET R1 R0 K20 + 0x8C04011C, // 0014 GETMET R1 R0 K28 0x7C040200, // 0015 CALL R1 1 - 0xB8062400, // 0016 GETNGBL R1 K18 - 0x8C040315, // 0017 GETMET R1 R1 K21 - 0x880C0111, // 0018 GETMBR R3 R0 K17 + 0xB8063200, // 0016 GETNGBL R1 K25 + 0x8C04031D, // 0017 GETMET R1 R1 K29 + 0x880C0118, // 0018 GETMBR R3 R0 K24 0x7C040400, // 0019 CALL R1 2 - 0x90021C01, // 001A SETMBR R0 K14 R1 + 0x90022A01, // 001A SETMBR R0 K21 R1 0x80000000, // 001B RET 0 }) ) @@ -326,10 +505,10 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ be_str_weak(publish_event), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x881C0101, // 0000 GETMBR R7 R0 K1 - 0x881C0F16, // 0001 GETMBR R7 R7 K22 - 0x8C1C0F17, // 0002 GETMET R7 R7 K23 - 0x88240109, // 0003 GETMBR R9 R0 K9 + 0x881C010D, // 0000 GETMBR R7 R0 K13 + 0x881C0F1E, // 0001 GETMBR R7 R7 K30 + 0x8C1C0F1F, // 0002 GETMET R7 R7 K31 + 0x88240107, // 0003 GETMBR R9 R0 K7 0x5C280200, // 0004 MOVE R10 R1 0x5C2C0400, // 0005 MOVE R11 R2 0x50300200, // 0006 LDBOOL R12 1 0 @@ -346,11 +525,36 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ /******************************************************************** -** Solidified function: set_name +** Solidified function: subscribe_event ********************************************************************/ -be_local_closure(class_Matter_Plugin_set_name, /* name */ +be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ be_nested_proto( 6, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(subscribe_event), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ + be_nested_proto( + 2, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -359,18 +563,150 @@ be_local_closure(class_Matter_Plugin_set_name, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(set_name), + be_str_weak(parse_configuration), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080103, // 0000 GETMBR R2 R0 K3 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0003, // 0002 JMPF R2 #0007 - 0x8C080118, // 0003 GETMET R2 R0 K24 - 0x54120038, // 0004 LDINT R4 57 - 0x54160004, // 0005 LDINT R5 5 - 0x7C080600, // 0006 CALL R2 3 - 0x90020601, // 0007 SETMBR R0 K3 R1 - 0x80000000, // 0008 RET 0 + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _parse_update_virtual +********************************************************************/ +be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ + be_nested_proto( + 12, /* nstack */ + 7, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(_parse_update_virtual), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C1C0309, // 0000 GETMET R7 R1 K9 + 0x5C240400, // 0001 MOVE R9 R2 + 0x7C1C0400, // 0002 CALL R7 2 + 0x4C200000, // 0003 LDNIL R8 + 0x20200E08, // 0004 NE R8 R7 R8 + 0x7822000A, // 0005 JMPF R8 #0011 + 0x5C200800, // 0006 MOVE R8 R4 + 0x5C240E00, // 0007 MOVE R9 R7 + 0x7C200200, // 0008 CALL R8 1 + 0x5C1C1000, // 0009 MOVE R7 R8 + 0x20200E03, // 000A NE R8 R7 R3 + 0x78220003, // 000B JMPF R8 #0010 + 0x8C200120, // 000C GETMET R8 R0 K32 + 0x5C280A00, // 000D MOVE R10 R5 + 0x5C2C0C00, // 000E MOVE R11 R6 + 0x7C200600, // 000F CALL R8 3 + 0x80040E00, // 0010 RET 1 R7 + 0x80040600, // 0011 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_attribute +********************************************************************/ +be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(subscribe_attribute), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains_attribute +********************************************************************/ +be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(contains_attribute), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x880C0108, // 0000 GETMBR R3 R0 K8 + 0x8C0C0709, // 0001 GETMET R3 R3 K9 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x78120010, // 0006 JMPF R4 #0018 + 0x58100021, // 0007 LDCONST R4 K33 + 0x6014000C, // 0008 GETGBL R5 G12 + 0x5C180600, // 0009 MOVE R6 R3 + 0x7C140200, // 000A CALL R5 1 + 0x0C140B22, // 000B DIV R5 R5 K34 + 0x14180805, // 000C LT R6 R4 R5 + 0x781A0009, // 000D JMPF R6 #0018 + 0x8C180723, // 000E GETMET R6 R3 K35 + 0x08200922, // 000F MUL R8 R4 K34 + 0x5425FFFD, // 0010 LDINT R9 -2 + 0x7C180600, // 0011 CALL R6 3 + 0x1C180C02, // 0012 EQ R6 R6 R2 + 0x781A0001, // 0013 JMPF R6 #0016 + 0x50180200, // 0014 LDBOOL R6 1 0 + 0x80040C00, // 0015 RET 1 R6 + 0x00100924, // 0016 ADD R4 R4 K36 + 0x7001FFF3, // 0017 JMP #000C + 0x50100000, // 0018 LDBOOL R4 0 0 + 0x80040800, // 0019 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_clusters +********************************************************************/ +be_local_closure(class_Matter_Plugin_get_clusters, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(get_clusters), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -405,106 +741,11 @@ be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ /******************************************************************** -** Solidified function: ui_string_to_conf +** Solidified function: update_shadow_lazy ********************************************************************/ -be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ +be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 12, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(ui_string_to_conf), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x580C0019, // 0000 LDCONST R3 K25 - 0x8810011A, // 0001 GETMBR R4 R0 K26 - 0x8814011B, // 0002 GETMBR R5 R0 K27 - 0x780A0004, // 0003 JMPF R2 #0009 - 0x78120003, // 0004 JMPF R4 #0009 - 0x5C180A00, // 0005 MOVE R6 R5 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C180200, // 0007 CALL R6 1 - 0x98040806, // 0008 SETIDX R1 R4 R6 - 0x80040200, // 0009 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: timed_request -********************************************************************/ -be_local_closure(class_Matter_Plugin_timed_request, /* name */ - be_nested_proto( - 5, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(timed_request), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x80040800, // 0001 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_Matter_Plugin_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x90020201, // 0000 SETMBR R0 K1 R1 - 0x90021202, // 0001 SETMBR R0 K9 R2 - 0x8C10011D, // 0002 GETMET R4 R0 K29 - 0x7C100200, // 0003 CALL R4 1 - 0x90023804, // 0004 SETMBR R0 K28 R4 - 0x8C10011E, // 0005 GETMET R4 R0 K30 - 0x5C180600, // 0006 MOVE R6 R3 - 0x7C100400, // 0007 CALL R4 2 - 0x8C10071F, // 0008 GETMET R4 R3 K31 - 0x58180020, // 0009 LDCONST R6 K32 - 0x581C0006, // 000A LDCONST R7 K6 - 0x7C100600, // 000B CALL R4 3 - 0x90020604, // 000C SETMBR R0 K3 R4 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_local_device -********************************************************************/ -be_local_closure(class_Matter_Plugin_is_local_device, /* name */ - be_nested_proto( - 2, /* nstack */ + 3, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -513,14 +754,20 @@ be_local_closure(class_Matter_Plugin_is_local_device, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(is_local_device), + be_str_weak(update_shadow_lazy), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040121, // 0000 GETMBR R1 R0 K33 - 0x78060000, // 0001 JMPF R1 #0003 - 0x50040001, // 0002 LDBOOL R1 0 1 - 0x50040200, // 0003 LDBOOL R1 1 0 - 0x80040200, // 0004 RET 1 R1 + ( &(const binstruction[11]) { /* code */ + 0x8804011B, // 0000 GETMBR R1 R0 K27 + 0x8808010D, // 0001 GETMBR R2 R0 K13 + 0x8808051B, // 0002 GETMBR R2 R2 K27 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060004, // 0004 JMPF R1 #000A + 0x8C04011C, // 0005 GETMET R1 R0 K28 + 0x7C040200, // 0006 CALL R1 1 + 0x8804010D, // 0007 GETMBR R1 R0 K13 + 0x8804031B, // 0008 GETMBR R1 R1 K27 + 0x90023601, // 0009 SETMBR R0 K27 R1 + 0x80000000, // 000A RET 0 }) ) ); @@ -544,7 +791,7 @@ be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ be_str_weak(consolidate_update_commands), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040122, // 0000 GETMBR R1 R0 K34 + 0x88040125, // 0000 GETMBR R1 R0 K37 0x80040200, // 0001 RET 1 R1 }) ) @@ -553,163 +800,11 @@ be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ /******************************************************************** -** Solidified function: update_shadow_lazy +** Solidified function: publish_command ********************************************************************/ -be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ +be_local_closure(class_Matter_Plugin_publish_command, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(update_shadow_lazy), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x88080500, // 0002 GETMBR R2 R2 K0 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060004, // 0004 JMPF R1 #000A - 0x8C040114, // 0005 GETMET R1 R0 K20 - 0x7C040200, // 0006 CALL R1 1 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88040300, // 0008 GETMBR R1 R1 K0 - 0x90020001, // 0009 SETMBR R0 K0 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_cluster_list_sorted -********************************************************************/ -be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(get_cluster_list_sorted), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C040323, // 0001 GETMET R1 R1 K35 - 0x880C011C, // 0002 GETMBR R3 R0 K28 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ui_conf_to_string -********************************************************************/ -be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 12, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(ui_conf_to_string), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x58080019, // 0000 LDCONST R2 K25 - 0x880C011A, // 0001 GETMBR R3 R0 K26 - 0x780E0006, // 0002 JMPF R3 #000A - 0x60100008, // 0003 GETGBL R4 G8 - 0x8C14031F, // 0004 GETMET R5 R1 K31 - 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200006, // 0006 LDCONST R8 K6 - 0x7C140600, // 0007 CALL R5 3 - 0x7C100200, // 0008 CALL R4 1 - 0x70020000, // 0009 JMP #000B - 0x58100006, // 000A LDCONST R4 K6 - 0x80040800, // 000B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attribute_updated -********************************************************************/ -be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(attribute_updated), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100101, // 0000 GETMBR R4 R0 K1 - 0x8C100918, // 0001 GETMET R4 R4 K24 - 0x88180109, // 0002 GETMBR R6 R0 K9 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -be_local_closure(class_Matter_Plugin_update_virtual, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _parse_update_virtual -********************************************************************/ -be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ - be_nested_proto( - 12, /* nstack */ + 16, /* nstack */ 7, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -718,27 +813,55 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(_parse_update_virtual), + be_str_weak(publish_command), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C1C031F, // 0000 GETMET R7 R1 K31 - 0x5C240400, // 0001 MOVE R9 R2 - 0x7C1C0400, // 0002 CALL R7 2 - 0x4C200000, // 0003 LDNIL R8 - 0x20200E08, // 0004 NE R8 R7 R8 - 0x7822000A, // 0005 JMPF R8 #0011 - 0x5C200800, // 0006 MOVE R8 R4 - 0x5C240E00, // 0007 MOVE R9 R7 - 0x7C200200, // 0008 CALL R8 1 - 0x5C1C1000, // 0009 MOVE R7 R8 - 0x20200E03, // 000A NE R8 R7 R3 - 0x78220003, // 000B JMPF R8 #0010 - 0x8C200118, // 000C GETMET R8 R0 K24 - 0x5C280A00, // 000D MOVE R10 R5 - 0x5C2C0C00, // 000E MOVE R11 R6 - 0x7C200600, // 000F CALL R8 3 - 0x80040E00, // 0010 RET 1 R7 - 0x80040600, // 0011 RET 1 R3 + ( &(const binstruction[46]) { /* code */ + 0xA41E0200, // 0000 IMPORT R7 K1 + 0x60200018, // 0001 GETGBL R8 G24 + 0x58240026, // 0002 LDCONST R9 K38 + 0x8C280F04, // 0003 GETMET R10 R7 K4 + 0x5C300200, // 0004 MOVE R12 R1 + 0x7C280400, // 0005 CALL R10 2 + 0x8C2C0F04, // 0006 GETMET R11 R7 K4 + 0x5C340400, // 0007 MOVE R13 R2 + 0x7C2C0400, // 0008 CALL R11 2 + 0x7C200600, // 0009 CALL R8 3 + 0x4C240000, // 000A LDNIL R9 + 0x20240609, // 000B NE R9 R3 R9 + 0x7826000A, // 000C JMPF R9 #0018 + 0x60240018, // 000D GETGBL R9 G24 + 0x58280027, // 000E LDCONST R10 K39 + 0x5C2C1000, // 000F MOVE R11 R8 + 0x8C300F04, // 0010 GETMET R12 R7 K4 + 0x5C380600, // 0011 MOVE R14 R3 + 0x7C300400, // 0012 CALL R12 2 + 0x8C340F04, // 0013 GETMET R13 R7 K4 + 0x5C3C0800, // 0014 MOVE R15 R4 + 0x7C340400, // 0015 CALL R13 2 + 0x7C240800, // 0016 CALL R9 4 + 0x5C201200, // 0017 MOVE R8 R9 + 0x4C240000, // 0018 LDNIL R9 + 0x20240A09, // 0019 NE R9 R5 R9 + 0x7826000A, // 001A JMPF R9 #0026 + 0x60240018, // 001B GETGBL R9 G24 + 0x58280027, // 001C LDCONST R10 K39 + 0x5C2C1000, // 001D MOVE R11 R8 + 0x8C300F04, // 001E GETMET R12 R7 K4 + 0x5C380A00, // 001F MOVE R14 R5 + 0x7C300400, // 0020 CALL R12 2 + 0x8C340F04, // 0021 GETMET R13 R7 K4 + 0x5C3C0C00, // 0022 MOVE R15 R6 + 0x7C340400, // 0023 CALL R13 2 + 0x7C240800, // 0024 CALL R9 4 + 0x5C201200, // 0025 MOVE R8 R9 + 0xB8262C00, // 0026 GETNGBL R9 K22 + 0x8C241328, // 0027 GETMET R9 R9 K40 + 0x582C0029, // 0028 LDCONST R11 K41 + 0x88300107, // 0029 GETMBR R12 R0 K7 + 0x88340102, // 002A GETMBR R13 R0 K2 + 0x5C381000, // 002B MOVE R14 R8 + 0x7C240A00, // 002C CALL R9 5 + 0x80000000, // 002D RET 0 }) ) ); @@ -746,11 +869,11 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ /******************************************************************** -** Solidified function: parse_configuration +** Solidified function: contains_cluster ********************************************************************/ -be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ +be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ be_nested_proto( - 2, /* nstack */ + 5, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -759,10 +882,14 @@ be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(parse_configuration), + be_str_weak(contains_cluster), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x8C08052A, // 0001 GETMET R2 R2 K42 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -770,12 +897,12 @@ be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ /******************************************************************** -** Solidified function: get_name +** Solidified function: set_name ********************************************************************/ -be_local_closure(class_Matter_Plugin_get_name, /* name */ +be_local_closure(class_Matter_Plugin_set_name, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -783,11 +910,18 @@ be_local_closure(class_Matter_Plugin_get_name, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(get_name), + be_str_weak(set_name), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040103, // 0000 GETMBR R1 R0 K3 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 9]) { /* code */ + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0x8C080120, // 0003 GETMET R2 R0 K32 + 0x54120038, // 0004 LDINT R4 57 + 0x54160004, // 0005 LDINT R5 5 + 0x7C080600, // 0006 CALL R2 3 + 0x90020401, // 0007 SETMBR R0 K2 R1 + 0x80000000, // 0008 RET 0 }) ) ); @@ -811,7 +945,7 @@ be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ be_str_weak(get_endpoint), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x88040107, // 0000 GETMBR R1 R0 K7 0x80040200, // 0001 RET 1 R1 }) ) @@ -820,12 +954,12 @@ be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ /******************************************************************** -** Solidified function: contains_attribute +** Solidified function: write_attribute ********************************************************************/ -be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ +be_local_closure(class_Matter_Plugin_write_attribute, /* name */ be_nested_proto( - 7, /* nstack */ - 3, /* argc */ + 5, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -833,31 +967,11 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(contains_attribute), + be_str_weak(write_attribute), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x880C011C, // 0000 GETMBR R3 R0 K28 - 0x8C0C071F, // 0001 GETMET R3 R3 K31 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x20100604, // 0005 NE R4 R3 R4 - 0x7812000C, // 0006 JMPF R4 #0014 - 0x58100024, // 0007 LDCONST R4 K36 - 0x6014000C, // 0008 GETGBL R5 G12 - 0x5C180600, // 0009 MOVE R6 R3 - 0x7C140200, // 000A CALL R5 1 - 0x14140805, // 000B LT R5 R4 R5 - 0x78160006, // 000C JMPF R5 #0014 - 0x94140604, // 000D GETIDX R5 R3 R4 - 0x1C140A02, // 000E EQ R5 R5 R2 - 0x78160001, // 000F JMPF R5 #0012 - 0x50140200, // 0010 LDBOOL R5 1 0 - 0x80040A00, // 0011 RET 1 R5 - 0x00100925, // 0012 ADD R4 R4 K37 - 0x7001FFF3, // 0013 JMP #0008 - 0x50100000, // 0014 LDBOOL R4 0 0 - 0x80040800, // 0015 RET 1 R4 + ( &(const binstruction[ 2]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 }) ) ); @@ -865,12 +979,12 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ /******************************************************************** -** Solidified function: subscribe_event +** Solidified function: update_shadow ********************************************************************/ -be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ +be_local_closure(class_Matter_Plugin_update_shadow, /* name */ be_nested_proto( - 6, /* nstack */ - 5, /* argc */ + 2, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -878,11 +992,97 @@ be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(subscribe_event), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8804031B, // 0001 GETMBR R1 R1 K27 + 0x90023601, // 0002 SETMBR R0 K27 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +be_local_closure(class_Matter_Plugin_invoke_request, /* name */ + be_nested_proto( + 5, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 + 0x4C100000, // 0000 LDNIL R4 + 0x80040800, // 0001 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x8810010D, // 0000 GETMBR R4 R0 K13 + 0x8C100920, // 0001 GETMET R4 R4 K32 + 0x88180107, // 0002 GETMBR R6 R0 K7 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x5C200400, // 0004 MOVE R8 R2 + 0x5C240600, // 0005 MOVE R9 R3 + 0x7C100A00, // 0006 CALL R4 5 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_local_device +********************************************************************/ +be_local_closure(class_Matter_Plugin_is_local_device, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ + be_str_weak(is_local_device), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8804012B, // 0000 GETMBR R1 R0 K43 + 0x78060000, // 0001 JMPF R1 #0003 + 0x50040001, // 0002 LDBOOL R1 0 1 + 0x50040200, // 0003 LDBOOL R1 1 0 + 0x80040200, // 0004 RET 1 R1 }) ) ); @@ -914,188 +1114,12 @@ be_local_closure(class_Matter_Plugin_read_event, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: parse_sensors -********************************************************************/ -be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(parse_sensors), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_attribute_list -********************************************************************/ -be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(get_attribute_list), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x8808011C, // 0000 GETMBR R2 R0 K28 - 0x8C08051F, // 0001 GETMET R2 R2 K31 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140012, // 0003 GETGBL R5 G18 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: publish_command -********************************************************************/ -be_local_closure(class_Matter_Plugin_publish_command, /* name */ - be_nested_proto( - 16, /* nstack */ - 7, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(publish_command), - &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ - 0xA41E0400, // 0000 IMPORT R7 K2 - 0x60200018, // 0001 GETGBL R8 G24 - 0x58240026, // 0002 LDCONST R9 K38 - 0x8C280F05, // 0003 GETMET R10 R7 K5 - 0x5C300200, // 0004 MOVE R12 R1 - 0x7C280400, // 0005 CALL R10 2 - 0x8C2C0F05, // 0006 GETMET R11 R7 K5 - 0x5C340400, // 0007 MOVE R13 R2 - 0x7C2C0400, // 0008 CALL R11 2 - 0x7C200600, // 0009 CALL R8 3 - 0x4C240000, // 000A LDNIL R9 - 0x20240609, // 000B NE R9 R3 R9 - 0x7826000A, // 000C JMPF R9 #0018 - 0x60240018, // 000D GETGBL R9 G24 - 0x58280027, // 000E LDCONST R10 K39 - 0x5C2C1000, // 000F MOVE R11 R8 - 0x8C300F05, // 0010 GETMET R12 R7 K5 - 0x5C380600, // 0011 MOVE R14 R3 - 0x7C300400, // 0012 CALL R12 2 - 0x8C340F05, // 0013 GETMET R13 R7 K5 - 0x5C3C0800, // 0014 MOVE R15 R4 - 0x7C340400, // 0015 CALL R13 2 - 0x7C240800, // 0016 CALL R9 4 - 0x5C201200, // 0017 MOVE R8 R9 - 0x4C240000, // 0018 LDNIL R9 - 0x20240A09, // 0019 NE R9 R5 R9 - 0x7826000A, // 001A JMPF R9 #0026 - 0x60240018, // 001B GETGBL R9 G24 - 0x58280027, // 001C LDCONST R10 K39 - 0x5C2C1000, // 001D MOVE R11 R8 - 0x8C300F05, // 001E GETMET R12 R7 K5 - 0x5C380A00, // 001F MOVE R14 R5 - 0x7C300400, // 0020 CALL R12 2 - 0x8C340F05, // 0021 GETMET R13 R7 K5 - 0x5C3C0C00, // 0022 MOVE R15 R6 - 0x7C340400, // 0023 CALL R13 2 - 0x7C240800, // 0024 CALL R9 4 - 0x5C201200, // 0025 MOVE R8 R9 - 0xB8261E00, // 0026 GETNGBL R9 K15 - 0x8C241328, // 0027 GETMET R9 R9 K40 - 0x582C0029, // 0028 LDCONST R11 K41 - 0x88300109, // 0029 GETMBR R12 R0 K9 - 0x88340103, // 002A GETMBR R13 R0 K3 - 0x5C381000, // 002B MOVE R14 R8 - 0x7C240A00, // 002C CALL R9 5 - 0x80000000, // 002D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_clusters -********************************************************************/ -be_local_closure(class_Matter_Plugin_get_clusters, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(get_clusters), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x8804012A, // 0000 GETMBR R1 R0 K42 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: contains_cluster -********************************************************************/ -be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(contains_cluster), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8808011C, // 0000 GETMBR R2 R0 K28 - 0x8C08052B, // 0001 GETMET R2 R2 K43 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ be_nested_proto( - 17, /* nstack */ + 19, /* nstack */ 4, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -1106,15 +1130,15 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[161]) { /* code */ - 0xB8121E00, // 0000 GETNGBL R4 K15 + ( &(const binstruction[169]) { /* code */ + 0xB8122C00, // 0000 GETNGBL R4 K22 0x8810092C, // 0001 GETMBR R4 R4 K44 0x8814052D, // 0002 GETMBR R5 R2 K45 0x8818052E, // 0003 GETMBR R6 R2 K46 0x541E001C, // 0004 LDINT R7 29 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0050, // 0006 JMPF R7 #0058 - 0x1C1C0D24, // 0007 EQ R7 R6 K36 + 0x1C1C0D21, // 0007 EQ R7 R6 K33 0x781E001B, // 0008 JMPF R7 #0025 0x8C1C092F, // 0009 GETMET R7 R4 K47 0x7C1C0200, // 000A CALL R7 1 @@ -1129,12 +1153,12 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x8C2C0F32, // 0013 GETMET R11 R7 K50 0x7C2C0200, // 0014 CALL R11 1 0x8C301733, // 0015 GETMET R12 R11 K51 - 0x58380024, // 0016 LDCONST R14 K36 + 0x58380021, // 0016 LDCONST R14 K33 0x883C0934, // 0017 GETMBR R15 R4 K52 0x5C401400, // 0018 MOVE R16 R10 0x7C300800, // 0019 CALL R12 4 0x8C301733, // 001A GETMET R12 R11 K51 - 0x58380025, // 001B LDCONST R14 K37 + 0x58380024, // 001B LDCONST R14 K36 0x883C0934, // 001C GETMBR R15 R4 K52 0x9440100A, // 001D GETIDX R16 R8 R10 0x7C300800, // 001E CALL R12 4 @@ -1144,7 +1168,7 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0xB0080000, // 0022 RAISE 2 R0 R0 0x80040E00, // 0023 RET 1 R7 0x70020032, // 0024 JMP #0058 - 0x1C1C0D25, // 0025 EQ R7 R6 K37 + 0x1C1C0D24, // 0025 EQ R7 R6 K36 0x781E0013, // 0026 JMPF R7 #003B 0x8C1C092F, // 0027 GETMET R7 R4 K47 0x7C1C0200, // 0028 CALL R7 1 @@ -1166,13 +1190,13 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0xB0080000, // 0038 RAISE 2 R0 R0 0x80040E00, // 0039 RET 1 R7 0x7002001C, // 003A JMP #0058 - 0x1C1C0D38, // 003B EQ R7 R6 K56 + 0x1C1C0D22, // 003B EQ R7 R6 K34 0x781E0003, // 003C JMPF R7 #0041 0x8C1C092F, // 003D GETMET R7 R4 K47 0x7C1C0200, // 003E CALL R7 1 0x80040E00, // 003F RET 1 R7 0x70020016, // 0040 JMP #0058 - 0x1C1C0D39, // 0041 EQ R7 R6 K57 + 0x1C1C0D38, // 0041 EQ R7 R6 K56 0x781E0003, // 0042 JMPF R7 #0047 0x8C1C092F, // 0043 GETMET R7 R4 K47 0x7C1C0200, // 0044 CALL R7 1 @@ -1181,18 +1205,18 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x541EFFFB, // 0047 LDINT R7 65532 0x1C1C0C07, // 0048 EQ R7 R6 R7 0x781E0005, // 0049 JMPF R7 #0050 - 0x8C1C073A, // 004A GETMET R7 R3 K58 + 0x8C1C0739, // 004A GETMET R7 R3 K57 0x88240937, // 004B GETMBR R9 R4 K55 - 0x58280024, // 004C LDCONST R10 K36 + 0x58280021, // 004C LDCONST R10 K33 0x7C1C0600, // 004D CALL R7 3 0x80040E00, // 004E RET 1 R7 0x70020007, // 004F JMP #0058 0x541EFFFC, // 0050 LDINT R7 65533 0x1C1C0C07, // 0051 EQ R7 R6 R7 0x781E0004, // 0052 JMPF R7 #0058 - 0x8C1C073A, // 0053 GETMET R7 R3 K58 + 0x8C1C0739, // 0053 GETMET R7 R3 K57 0x88240937, // 0054 GETMBR R9 R4 K55 - 0x58280025, // 0055 LDCONST R10 K37 + 0x58280024, // 0055 LDCONST R10 K36 0x7C1C0600, // 0056 CALL R7 3 0x80040E00, // 0057 RET 1 R7 0x541EFFF7, // 0058 LDINT R7 65528 @@ -1201,98 +1225,81 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x8C1C092F, // 005B GETMET R7 R4 K47 0x7C1C0200, // 005C CALL R7 1 0x80040E00, // 005D RET 1 R7 - 0x7002003F, // 005E JMP #009F + 0x70020047, // 005E JMP #00A7 0x541EFFFA, // 005F LDINT R7 65531 0x1C1C0C07, // 0060 EQ R7 R6 R7 - 0x781E0013, // 0061 JMPF R7 #0076 + 0x781E001B, // 0061 JMPF R7 #007E 0x8C1C092F, // 0062 GETMET R7 R4 K47 0x7C1C0200, // 0063 CALL R7 1 - 0x8C20013B, // 0064 GETMET R8 R0 K59 + 0x8C20013A, // 0064 GETMET R8 R0 K58 0x5C280A00, // 0065 MOVE R10 R5 0x7C200400, // 0066 CALL R8 2 - 0x58240024, // 0067 LDCONST R9 K36 - 0x6028000C, // 0068 GETGBL R10 G12 - 0x5C2C1000, // 0069 MOVE R11 R8 - 0x7C280200, // 006A CALL R10 1 - 0x1428120A, // 006B LT R10 R9 R10 - 0x782A0006, // 006C JMPF R10 #0074 - 0x8C280F33, // 006D GETMET R10 R7 K51 - 0x4C300000, // 006E LDNIL R12 - 0x88340934, // 006F GETMBR R13 R4 K52 - 0x94381009, // 0070 GETIDX R14 R8 R9 - 0x7C280800, // 0071 CALL R10 4 - 0x00241325, // 0072 ADD R9 R9 K37 - 0x7001FFF3, // 0073 JMP #0068 - 0x80040E00, // 0074 RET 1 R7 - 0x70020028, // 0075 JMP #009F - 0x541EFFF9, // 0076 LDINT R7 65530 - 0x1C1C0C07, // 0077 EQ R7 R6 R7 - 0x781E0003, // 0078 JMPF R7 #007D - 0x8C1C092F, // 0079 GETMET R7 R4 K47 - 0x7C1C0200, // 007A CALL R7 1 - 0x80040E00, // 007B RET 1 R7 - 0x70020021, // 007C JMP #009F - 0x541EFFF8, // 007D LDINT R7 65529 - 0x1C1C0C07, // 007E EQ R7 R6 R7 - 0x781E0003, // 007F JMPF R7 #0084 - 0x8C1C092F, // 0080 GETMET R7 R4 K47 - 0x7C1C0200, // 0081 CALL R7 1 - 0x80040E00, // 0082 RET 1 R7 - 0x7002001A, // 0083 JMP #009F - 0x541EFFFB, // 0084 LDINT R7 65532 - 0x1C1C0C07, // 0085 EQ R7 R6 R7 - 0x781E000A, // 0086 JMPF R7 #0092 - 0x881C013C, // 0087 GETMBR R7 R0 K60 - 0x8C1C0F1F, // 0088 GETMET R7 R7 K31 - 0x5C240A00, // 0089 MOVE R9 R5 - 0x58280024, // 008A LDCONST R10 K36 - 0x7C1C0600, // 008B CALL R7 3 - 0x8C20073A, // 008C GETMET R8 R3 K58 - 0x88280937, // 008D GETMBR R10 R4 K55 - 0x5C2C0E00, // 008E MOVE R11 R7 - 0x7C200600, // 008F CALL R8 3 - 0x80041000, // 0090 RET 1 R8 - 0x7002000C, // 0091 JMP #009F - 0x541EFFFC, // 0092 LDINT R7 65533 - 0x1C1C0C07, // 0093 EQ R7 R6 R7 - 0x781E0009, // 0094 JMPF R7 #009F - 0x881C013D, // 0095 GETMBR R7 R0 K61 - 0x8C1C0F1F, // 0096 GETMET R7 R7 K31 - 0x5C240A00, // 0097 MOVE R9 R5 - 0x58280025, // 0098 LDCONST R10 K37 - 0x7C1C0600, // 0099 CALL R7 3 - 0x8C20073A, // 009A GETMET R8 R3 K58 - 0x88280937, // 009B GETMBR R10 R4 K55 - 0x5C2C0E00, // 009C MOVE R11 R7 - 0x7C200600, // 009D CALL R8 3 - 0x80041000, // 009E RET 1 R8 - 0x4C1C0000, // 009F LDNIL R7 - 0x80040E00, // 00A0 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_attribute -********************************************************************/ -be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Plugin, /* shared constants */ - be_str_weak(subscribe_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 + 0x4C240000, // 0067 LDNIL R9 + 0x20241009, // 0068 NE R9 R8 R9 + 0x78260003, // 0069 JMPF R9 #006E + 0x6024000C, // 006A GETGBL R9 G12 + 0x5C281000, // 006B MOVE R10 R8 + 0x7C240200, // 006C CALL R9 1 + 0x70020000, // 006D JMP #006F + 0x58240021, // 006E LDCONST R9 K33 + 0x58280021, // 006F LDCONST R10 K33 + 0x142C1409, // 0070 LT R11 R10 R9 + 0x782E0009, // 0071 JMPF R11 #007C + 0x8C2C0F33, // 0072 GETMET R11 R7 K51 + 0x4C340000, // 0073 LDNIL R13 + 0x88380934, // 0074 GETMBR R14 R4 K52 + 0x8C3C1123, // 0075 GETMET R15 R8 K35 + 0x08441522, // 0076 MUL R17 R10 K34 + 0x5449FFFD, // 0077 LDINT R18 -2 + 0x7C3C0600, // 0078 CALL R15 3 + 0x7C2C0800, // 0079 CALL R11 4 + 0x00281524, // 007A ADD R10 R10 K36 + 0x7001FFF3, // 007B JMP #0070 + 0x80040E00, // 007C RET 1 R7 + 0x70020028, // 007D JMP #00A7 + 0x541EFFF9, // 007E LDINT R7 65530 + 0x1C1C0C07, // 007F EQ R7 R6 R7 + 0x781E0003, // 0080 JMPF R7 #0085 + 0x8C1C092F, // 0081 GETMET R7 R4 K47 + 0x7C1C0200, // 0082 CALL R7 1 + 0x80040E00, // 0083 RET 1 R7 + 0x70020021, // 0084 JMP #00A7 + 0x541EFFF8, // 0085 LDINT R7 65529 + 0x1C1C0C07, // 0086 EQ R7 R6 R7 + 0x781E0003, // 0087 JMPF R7 #008C + 0x8C1C092F, // 0088 GETMET R7 R4 K47 + 0x7C1C0200, // 0089 CALL R7 1 + 0x80040E00, // 008A RET 1 R7 + 0x7002001A, // 008B JMP #00A7 + 0x541EFFFB, // 008C LDINT R7 65532 + 0x1C1C0C07, // 008D EQ R7 R6 R7 + 0x781E000A, // 008E JMPF R7 #009A + 0x881C013B, // 008F GETMBR R7 R0 K59 + 0x8C1C0F09, // 0090 GETMET R7 R7 K9 + 0x5C240A00, // 0091 MOVE R9 R5 + 0x58280021, // 0092 LDCONST R10 K33 + 0x7C1C0600, // 0093 CALL R7 3 + 0x8C200739, // 0094 GETMET R8 R3 K57 + 0x88280937, // 0095 GETMBR R10 R4 K55 + 0x5C2C0E00, // 0096 MOVE R11 R7 + 0x7C200600, // 0097 CALL R8 3 + 0x80041000, // 0098 RET 1 R8 + 0x7002000C, // 0099 JMP #00A7 + 0x541EFFFC, // 009A LDINT R7 65533 + 0x1C1C0C07, // 009B EQ R7 R6 R7 + 0x781E0009, // 009C JMPF R7 #00A7 + 0x881C013C, // 009D GETMBR R7 R0 K60 + 0x8C1C0F09, // 009E GETMET R7 R7 K9 + 0x5C240A00, // 009F MOVE R9 R5 + 0x58280024, // 00A0 LDCONST R10 K36 + 0x7C1C0600, // 00A1 CALL R7 3 + 0x8C200739, // 00A2 GETMET R8 R3 K57 + 0x88280937, // 00A3 GETMBR R10 R4 K55 + 0x5C2C0E00, // 00A4 MOVE R11 R7 + 0x7C200600, // 00A5 CALL R8 3 + 0x80041000, // 00A6 RET 1 R8 + 0x4C1C0000, // 00A7 LDNIL R7 + 0x80040E00, // 00A8 RET 1 R7 }) ) ); @@ -1303,59 +1310,53 @@ be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ ** Solidified class: Matter_Plugin ********************************************************************/ be_local_class(Matter_Plugin, - 6, + 5, NULL, - be_nested_map(52, + be_nested_map(51, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, - { be_const_key_weak(state_json, 38), be_const_closure(class_Matter_Plugin_state_json_closure) }, - { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, - { be_const_key_weak(device, -1), be_const_var(1) }, - { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, + { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(258, -1), be_const_int(5) }, + { be_const_key_int(49, 2), be_const_int(4) }, + { be_const_key_int(514, -1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, + { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) }, + { be_const_key_weak(read_attribute, 10), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, + { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, + { be_const_key_weak(get_attribute_list_bytes, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_bytes_closure) }, + { be_const_key_weak(read_event, 39), be_const_closure(class_Matter_Plugin_read_event_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, + { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) }, + { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) }, { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) }, - { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, - { be_const_key_weak(BRIDGE, -1), be_const_bool(0) }, - { be_const_key_weak(get_clusters, -1), be_const_closure(class_Matter_Plugin_get_clusters_closure) }, - { be_const_key_weak(CLUSTERS, 51), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(ui_conf_to_string, 34), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, + { be_const_key_weak(UPDATE_COMMANDS, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(0, ( (struct bvalue*) &(const bvalue[]) { })) ) } )) }, - { be_const_key_weak(every_250ms, 0), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, - { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, - { be_const_key_weak(get_attribute_list, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_closure) }, - { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, + { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, + { be_const_key_weak(update_next, 48), be_const_var(0) }, + { be_const_key_weak(device, -1), be_const_var(1) }, + { be_const_key_weak(publish_event, -1), be_const_closure(class_Matter_Plugin_publish_event_closure) }, + { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak() }, + { be_const_key_weak(parse_configuration, 30), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, + { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) }, + { be_const_key_weak(consolidate_update_commands, 12), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, + { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) }, + { be_const_key_weak(contains_attribute, 38), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, + { be_const_key_weak(get_clusters, -1), be_const_closure(class_Matter_Plugin_get_clusters_closure) }, { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) }, - { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) }, - { be_const_key_weak(is_local_device, 34), be_const_closure(class_Matter_Plugin_is_local_device_closure) }, - { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_nil() }, - })) ) } )) }, - { be_const_key_weak(clusters, -1), be_const_var(3) }, - { be_const_key_weak(VIRTUAL, 5), be_const_bool(0) }, - { be_const_key_weak(CLUSTER_REVISIONS, 23), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(get_name, 23), be_const_closure(class_Matter_Plugin_get_name_closure) }, + { be_const_key_weak(write_attribute, 47), be_const_closure(class_Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak() }, + { be_const_key_weak(tick, -1), be_const_var(3) }, + { be_const_key_weak(CLUSTER_REVISIONS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(25, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, -1), be_const_int(5) }, @@ -1384,39 +1385,31 @@ be_local_class(Matter_Plugin, { be_const_key_int(6, -1), be_const_int(5) }, { be_const_key_int(1024, -1), be_const_int(3) }, })) ) } )) }, - { be_const_key_weak(consolidate_update_commands, 6), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) }, - { be_const_key_weak(ui_conf_to_string, -1), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) }, - { be_const_key_weak(_parse_update_virtual, 36), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, - { be_const_key_weak(update_next, 17), be_const_var(0) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_parse_configuration_closure) }, - { be_const_key_weak(invoke_request, 27), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, - { be_const_key_weak(node_label, -1), be_const_var(5) }, - { be_const_key_weak(update_shadow, 30), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, - { be_const_key_weak(endpoint, 2), be_const_var(2) }, - { be_const_key_weak(get_name, -1), be_const_closure(class_Matter_Plugin_get_name_closure) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) }, - { be_const_key_weak(get_endpoint, -1), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, - { be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, + { be_const_key_weak(get_endpoint, 24), be_const_closure(class_Matter_Plugin_get_endpoint_closure) }, + { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(258, -1), be_const_int(5) }, - { be_const_key_int(49, 2), be_const_int(4) }, - { be_const_key_int(514, -1), be_const_int(2) }, + { be_const_key_int(29, -1), be_const_nil() }, })) ) } )) }, - { be_const_key_weak(ARG, -1), be_nested_str_weak() }, - { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak() }, - { be_const_key_weak(read_event, -1), be_const_closure(class_Matter_Plugin_read_event_closure) }, - { be_const_key_weak(publish_event, 21), be_const_closure(class_Matter_Plugin_publish_event_closure) }, - { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, - { be_const_key_weak(DISPLAY_NAME, 14), be_nested_str_weak() }, - { be_const_key_weak(ui_string_to_conf, 13), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) }, - { be_const_key_weak(contains_attribute, 9), be_const_closure(class_Matter_Plugin_contains_attribute_closure) }, - { be_const_key_weak(tick, -1), be_const_var(4) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) }, { be_const_key_weak(contains_cluster, -1), be_const_closure(class_Matter_Plugin_contains_cluster_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_read_attribute_closure) }, - { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) }, + { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_update_shadow_closure) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) }, + { be_const_key_weak(parse_sensors, 21), be_const_closure(class_Matter_Plugin_parse_sensors_closure) }, + { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + })) ) } )) }, + { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) }, + { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak() }, + { be_const_key_weak(node_label, 9), be_const_var(4) }, + { be_const_key_weak(_parse_update_virtual, -1), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) }, + { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_every_250ms_closure) }, + { be_const_key_weak(endpoint, -1), be_const_var(2) }, + { be_const_key_weak(BRIDGE, 0), be_const_bool(0) }, })), be_str_weak(Matter_Plugin) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h index b5b6f034d..ab3289d1f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h @@ -209,32 +209,8 @@ be_local_class(Matter_Plugin_Aggregator, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 0), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Aggregator_invoke_request_closure) }, })), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index 1513d6975..cd89a67e0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -1335,75 +1335,11 @@ be_local_class(Matter_Plugin_Device, { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, 1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Device_invoke_request_closure) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Device_init_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index 7eff47eae..c6b837e1d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -2130,197 +2130,20 @@ be_local_class(Matter_Plugin_Root, { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(14, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(7), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(44, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(31, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(60, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(63, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(6, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(62, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(49, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(4), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(50, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(6, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(51, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(52, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(6, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(43, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(40, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(21, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(6), - be_const_int(7), - be_const_int(8), - be_const_int(9), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(19), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(48, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(56, -1), be_const_bytes_instance(000000010007FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 11), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(44, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(31, -1), be_const_bytes_instance(0000000200030004FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(60, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(63, -1), be_const_bytes_instance(FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(62, 13), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(49, 5), be_const_bytes_instance(00030004FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(50, -1), be_const_bytes_instance(FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(51, -1), be_const_bytes_instance(0000000100020008FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(52, -1), be_const_bytes_instance(FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(43, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(40, -1), be_const_bytes_instance(0000000100020003000400050006000700080009000A000F001100120013FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(48, -1), be_const_bytes_instance(00000001000200030004FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Root_read_attribute_closure) }, })), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h index b38d3b11d..f50748581 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h @@ -473,89 +473,12 @@ be_local_class(Matter_Plugin_Fan, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(514, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(514, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(set_fan_mode, 1), be_const_closure(class_Matter_Plugin_Fan_set_fan_mode_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h index 5d25648a4..5f255c9a3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h @@ -615,86 +615,12 @@ be_local_class(Matter_Plugin_Light0, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, { be_const_key_weak(invoke_request, 10), be_const_closure(class_Matter_Plugin_Light0_invoke_request_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index 5693e1f72..97bf2aad1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -718,176 +718,18 @@ be_local_class(Matter_Plugin_Sensor_Air_Quality, { be_const_key_weak(CLUSTERS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(1068, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1069, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1070, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1037, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(91, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1066, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1043, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(8), - be_const_int(9), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(1068, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1069, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1070, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, 8), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1037, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(91, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 6), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1066, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1043, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, })), be_str_weak(Matter_Plugin_Sensor_Air_Quality) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h index 66aa1dfbf..7481aae2c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h @@ -386,88 +386,12 @@ be_local_class(Matter_Plugin_Sensor_GenericSwitch_Btn, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(59, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, 1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(59, 0), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, })), be_str_weak(Matter_Plugin_Sensor_GenericSwitch_Btn) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h index fe1887a78..f5d5be5bc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h @@ -613,93 +613,12 @@ be_local_class(Matter_Plugin_Shutter, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(258, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(14, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(5), - be_const_int(7), - be_const_int(10), - be_const_int(11), - be_const_int(13), - be_const_int(14), - be_const_int(23), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(258, -1), be_const_bytes_instance(000000050007000A000B000D000E0017FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(invoke_request, 3), be_const_closure(class_Matter_Plugin_Shutter_invoke_request_closure) }, { be_const_key_weak(read_attribute, 11), be_const_closure(class_Matter_Plugin_Shutter_read_attribute_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h index 3b4352584..63d9c8716 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h @@ -804,101 +804,13 @@ be_local_class(Matter_Plugin_Light1, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(2), - be_const_int(3), - be_const_int(15), - be_const_int(17), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(29, 2), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(8, 0), be_const_bytes_instance(000000020003000F0011FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light1_web_values_closure) }, { be_const_key_weak(init, 11), be_const_closure(class_Matter_Plugin_Light1_init_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h index 09e1374b2..150a06f12 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h @@ -248,86 +248,12 @@ be_local_class(Matter_Plugin_Sensor_Contact, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(69, 2), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h index 6846bc331..48f319950 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h @@ -211,88 +211,12 @@ be_local_class(Matter_Plugin_Sensor_Flow, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1028, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Flow) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Flow_pre_value_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h index 5894417d8..3106947ce 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h @@ -219,88 +219,12 @@ be_local_class(Matter_Plugin_Sensor_Humidity, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1029, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1029, 2), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Humidity) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Humidity_pre_value_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h index 79e80b64e..e9a45cbd6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h @@ -220,88 +220,12 @@ be_local_class(Matter_Plugin_Sensor_Illuminance, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1024, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1024, 1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Illuminance) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h index d1d1788ec..b1f8fd013 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h @@ -268,88 +268,12 @@ be_local_class(Matter_Plugin_Sensor_Occupancy, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1030, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1030, 1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h index b6d971888..527cb8b1f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h @@ -141,86 +141,12 @@ be_local_class(Matter_Plugin_Sensor_OnOff, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json_closure) }, { be_const_key_weak(TYPES, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h index 77abbec27..b5264a407 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h @@ -210,88 +210,12 @@ be_local_class(Matter_Plugin_Sensor_Pressure, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(1027, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(1027, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Pressure) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Pressure_pre_value_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h index f4d3878d6..23477d3f8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h @@ -248,86 +248,12 @@ be_local_class(Matter_Plugin_Sensor_Rain, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(69, 2), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_web_values_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h index 526dacca4..540d21ab4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h @@ -255,88 +255,12 @@ be_local_class(Matter_Plugin_Sensor_Temp, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(1026, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(1026, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Temperature) }, { be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Temp_pre_value_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h index 6c4974a1e..842def36c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h @@ -240,86 +240,12 @@ be_local_class(Matter_Plugin_Sensor_Waterleak, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(69, 2), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h index 791c1bfae..ea430dcbd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h @@ -416,96 +416,12 @@ be_local_class(Matter_Plugin_ShutterTilt, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(258, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(17, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(5), - be_const_int(7), - be_const_int(10), - be_const_int(11), - be_const_int(13), - be_const_int(14), - be_const_int(23), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - be_const_int(7), - be_const_int(12), - be_const_int(15), - })) ) } )) }, - { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(258, -1), be_const_bytes_instance(000000050007000A000B000C000D000E000F0017FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(tilt_min, 8), be_const_var(1) }, { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_ShutterTilt_parse_sensors_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h index 20ce0312b..e92e3336b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h @@ -672,116 +672,14 @@ be_local_class(Matter_Plugin_Light2, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(2), - be_const_int(3), - be_const_int(15), - be_const_int(17), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(7), - be_const_int(8), - be_const_int(15), - be_const_int(16395), - be_const_int(16396), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(8, 7), be_const_bytes_instance(000000020003000F0011FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, 2), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(768, -1), be_const_bytes_instance(00070008000F400B400CFFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light2_init_closure) }, { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light2_invoke_request_closure) }, diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h index 4305aad09..5c2f727c1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h @@ -934,118 +934,14 @@ be_local_class(Matter_Plugin_Light3, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(11, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(2), - be_const_int(3), - be_const_int(15), - be_const_int(17), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(3), - be_const_int(5), - be_const_int(10), - be_const_int(15), - be_const_int(17), - be_const_int(18), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(8, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, - { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(13, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(7), - be_const_int(8), - be_const_int(15), - be_const_int(16385), - be_const_int(16394), - be_const_int(65528), - be_const_int(65529), - be_const_int(65530), - be_const_int(65531), - be_const_int(65532), - be_const_int(65533), - })) ) } )) }, + { be_const_key_int(8, 7), be_const_bytes_instance(000000020003000F0011FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(5, 2), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) }, + { be_const_key_int(768, -1), be_const_bytes_instance(0000000100070008000F4001400AFFF8FFF9FFFAFFFBFFFCFFFD) }, })) ) } )) }, { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light3_web_values_closure) }, { be_const_key_weak(set_hue_sat, 12), be_const_closure(class_Matter_Plugin_Light3_set_hue_sat_closure) }, From b8c5e22e1be8bc42fc14fa6f9728894b88aa220e Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 28 Jul 2024 21:41:20 +0200 Subject: [PATCH 211/252] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08d416270..a70cadbf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. ### Changed - Berry consolidated constants for solidified classes reduces Flash size (#2185) - Berry updated precompiled Windows binary (#21858) +- Matter improve encoding of attributes to reduce flash size (#21864) ### Fixed - Berry `light.get` for separate RGB/CT (#21818) From 0c52b40f4914035b782c9529f0d30fd65d71d651 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 29 Jul 2024 09:43:05 +0200 Subject: [PATCH 212/252] Adjust Matter code size --- tasmota/my_user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 9a825f403..154979d62 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -1254,7 +1254,7 @@ // #define BE_LV_WIDGET_TILEVIEW // -- Matter protocol --------------------------------- - // #define USE_MATTER_DEVICE // Enable Matter device support (+420KB) + // #define USE_MATTER_DEVICE // Enable Matter device support (+380KB) // Enabled by default in standard ESP32 binary #endif // ESP32 From eb71fcfd2e89b0d66277f52a2a040a27e12e5af6 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:35:06 +0200 Subject: [PATCH 213/252] Matter refactor commissioning (#21870) --- .../berry_matter/src/be_matter_module.c | 6 +- ...ing.be => Matter_Commissioning_Context.be} | 10 +- .../src/embedded/Matter_Plugin_1_Root.be | 18 +- .../berry_matter/src/embedded/Matter_UI.be | 16 +- .../src/embedded/Matter_z_Commissioning.be | 483 + .../src/embedded/Matter_zz_Device.be | 454 +- ...solidified_Matter_Commissioning_Context.h} | 1124 +- .../solidified_Matter_Plugin_1_Root.h | 2358 ++--- .../src/solidify/solidified_Matter_UI.h | 1493 +-- .../solidified_Matter_z_Commissioning.h | 1976 ++++ .../solidify/solidified_Matter_zz_Device.h | 9196 ++++++----------- 11 files changed, 8423 insertions(+), 8711 deletions(-) rename lib/libesp32/berry_matter/src/embedded/{Matter_Commissioning.be => Matter_Commissioning_Context.be} (98%) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be rename lib/libesp32/berry_matter/src/solidify/{solidified_Matter_Commissioning.h => solidified_Matter_Commissioning_Context.h} (68%) create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index c6cce0315..b5901619b 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -222,7 +222,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Session.h" #include "solidify/solidified_Matter_Session_Store.h" #include "solidify/solidified_Matter_Commissioning_Data.h" -#include "solidify/solidified_Matter_Commissioning.h" +#include "solidify/solidified_Matter_Commissioning_Context.h" #include "solidify/solidified_Matter_Message.h" #include "solidify/solidified_Matter_MessageHandler.h" #include "solidify/solidified_Matter_IM_Message.h" @@ -231,6 +231,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_EventHandler.h" #include "solidify/solidified_Matter_Control_Message.h" #include "solidify/solidified_Matter_Plugin_0.h" +#include "solidify/solidified_Matter_z_Commissioning.h" #include "solidify/solidified_Matter_Base38.h" #include "solidify/solidified_Matter_UI.h" #include "solidify/solidified_Matter_Profiler.h" @@ -470,6 +471,9 @@ module matter (scope: global, strings: weak) { Control_Message, class(be_class_Matter_Control_Message) UI, class(be_class_Matter_UI) + // Commissioning + Commissioning, class(be_class_Matter_Commissioning) + // QR Code QRCode, class(be_class_Matter_QRCode) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Context.be similarity index 98% rename from lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be rename to lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Context.be index 2e7f0e170..f0a611944 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Context.be @@ -1,5 +1,5 @@ # -# Matter_Commissioning.be - suppport for Matter Commissioning process PASE and CASE +# Matter_Commissioning_Context.be - suppport for Matter Commissioning process PASE and CASE # # Copyright (C) 2023 Stephan Hadinger & Theo Arends # @@ -53,7 +53,7 @@ class Matter_Commisioning_Context def process_incoming(msg) # - if !self.device.is_commissioning_open() && msg.opcode >= 0x20 && msg.opcode <= 0x24 + if !self.device.commissioning.is_commissioning_open() && msg.opcode >= 0x20 && msg.opcode <= 0x24 log("MTR: commissioning not open", 2) return false end @@ -139,8 +139,8 @@ class Matter_Commisioning_Context # generate 32 bytes random pbkdfparamresp.responderRandom = crypto.random(32) pbkdfparamresp.responderSessionId = session.__future_local_session_id - pbkdfparamresp.pbkdf_parameters_salt = self.device.commissioning_salt - pbkdfparamresp.pbkdf_parameters_iterations = self.device.commissioning_iterations + pbkdfparamresp.pbkdf_parameters_salt = self.device.commissioning.commissioning_salt + pbkdfparamresp.pbkdf_parameters_iterations = self.device.commissioning.commissioning_iterations # log("MTR: pbkdfparamresp: " + str(matter.inspect(pbkdfparamresp)), 4) var pbkdfparamresp_raw = pbkdfparamresp.tlv2raw() # log("MTR: pbkdfparamresp_raw: " + pbkdfparamresp_raw.tohex(), 4) @@ -172,7 +172,7 @@ class Matter_Commisioning_Context # instanciate SPAKE # for testing purpose, we don't send `w1` to make sure - var spake = crypto.SPAKE2P_Matter(self.device.commissioning_w0, nil, self.device.commissioning_L) + var spake = crypto.SPAKE2P_Matter(self.device.commissioning.commissioning_w0, nil, self.device.commissioning.commissioning_L) # generate `y` nonce (not persisted) var y = crypto.random(32) # 32 bytes random known only by verifier diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index 6a9f8e58f..4673810d5 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -196,17 +196,17 @@ class Matter_Plugin_Root : Matter_Plugin # ==================================================================================================== elif cluster == 0x003C # ========== Administrator Commissioning Cluster 11.18 p.725 ========== if attribute == 0x0000 # ---------- WindowStatus / u8 ---------- - var commissioning_open = self.device.is_commissioning_open() - var basic_commissioning = self.device.is_root_commissioning_open() + var commissioning_open = self.device.commissioning.is_commissioning_open() + var basic_commissioning = self.device.commissioning.is_root_commissioning_open() var val = commissioning_open ? (basic_commissioning ? 2 #-BasicWindowOpen-# : 1 #-EnhancedWindowOpen-#) : 0 #-WindowNotOpen-# return tlv_solo.set(TLV.U1, val) elif attribute == 0x0001 # ---------- AdminFabricIndex / u16 ---------- - var admin_fabric = self.device.commissioning_admin_fabric + var admin_fabric = self.device.commissioning.commissioning_admin_fabric if admin_fabric != nil return tlv_solo.set_or_nil(TLV.U2, admin_fabric.get_fabric_index()) end elif attribute == 0x0002 # ---------- AdminVendorId / u16 ---------- - var admin_fabric = self.device.commissioning_admin_fabric + var admin_fabric = self.device.commissioning.commissioning_admin_fabric if admin_fabric != nil return tlv_solo.set_or_nil(TLV.U2, admin_fabric.get_admin_vendor()) end @@ -387,7 +387,7 @@ class Matter_Plugin_Root : Matter_Plugin ccr.add_TLV(1, TLV.UTF1, "") # DebugText = "" ctx.command = 0x05 # CommissioningCompleteResponse - self.device.start_commissioning_complete_deferred(session) + self.device.commissioning.start_commissioning_complete_deferred(session) return ccr else raise "context_error", "CommissioningComplete: no fabric attached" @@ -526,7 +526,7 @@ class Matter_Plugin_Root : Matter_Plugin var hk = crypto.HKDF_SHA256() var fabric_rev = fabric_id.copy().reverse() var k_fabric = hk.derive(root_ca_pub, fabric_rev, info, 8) - var parent_fabric = session._fabric ? session._fabric : self.device.commissioning_admin_fabric # get parent fabric whether CASE or PASE + var parent_fabric = session._fabric ? session._fabric : self.device.commissioning.commissioning_admin_fabric # get parent fabric whether CASE or PASE new_fabric.set_fabric_device(fabric_id, deviceid, k_fabric, parent_fabric) # log("MTR: AddNoc k_fabric=" + str(k_fabric), 3) @@ -534,7 +534,7 @@ class Matter_Plugin_Root : Matter_Plugin new_fabric.fabric_candidate() # move to next step - self.device.start_operational_discovery_deferred(new_fabric) + self.device.commissioning.start_operational_discovery_deferred(new_fabric) # we keep the PASE session for 1 minute if session.is_PASE() @@ -627,7 +627,7 @@ class Matter_Plugin_Root : Matter_Plugin var w0 = passcode_verifier[0..31] var L = passcode_verifier[32..] - self.device.start_basic_commissioning(timeout, iterations, discriminator, salt, w0, #-w1,-# L, session.get_fabric()) + self.device.commissioning.start_basic_commissioning(timeout, iterations, discriminator, salt, w0, #-w1,-# L, session.get_fabric()) # TODO announce in MDNS return true # OK elif command == 0x0001 # ---------- OpenBasicCommissioningWindow ---------- @@ -637,7 +637,7 @@ class Matter_Plugin_Root : Matter_Plugin return true elif command == 0x0002 # ---------- RevokeCommissioning ---------- # TODO add checks that the commissioning window was opened by the same fabric - self.device.stop_basic_commissioning() + self.device.commissioning.stop_basic_commissioning() return true end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index 6917a9d7b..3bd31aa98 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -108,7 +108,7 @@ class Matter_UI if self.matter_enabled() # checkbox for Matter commissioning - var commissioning_open_checked = self.device.commissioning_open != nil ? "checked" : "" + var commissioning_open_checked = self.device.commissioning.commissioning_open != nil ? "checked" : "" webserver.content_send(f"

") webserver.content_send("

") var disable_bridge_mode_checked = self.device.disable_bridge_mode ? " checked" : "" @@ -173,17 +173,17 @@ class Matter_UI def show_commissioning_info() import webserver - var seconds_left = (self.device.commissioning_open - tasmota.millis()) / 1000 + var seconds_left = (self.device.commissioning.commissioning_open - tasmota.millis()) / 1000 if seconds_left < 0 seconds_left = 0 end var min_left = (seconds_left + 30) / 60 webserver.content_send(f"
 Commissioning open for {min_left:i} min 

") - var pairing_code = self.device.compute_manual_pairing_code() + var pairing_code = self.device.commissioning.compute_manual_pairing_code() webserver.content_send(f"

Manual pairing code:
{pairing_code[0..3]}-{pairing_code[4..6]}-{pairing_code[7..]}


") webserver.content_send("
") - var qr_text = self.device.compute_qrcode_content() + var qr_text = self.device.commissioning.compute_qrcode_content() self.show_qrcode(qr_text) webserver.content_send(f"

{qr_text}

") webserver.content_send("

") @@ -794,11 +794,11 @@ class Matter_UI end #- and force restart -# webserver.redirect("/?rst=") - elif matter_commissioning_requested != (self.device.commissioning_open != nil) + elif matter_commissioning_requested != (self.device.commissioning.commissioning_open != nil) if matter_commissioning_requested self.device.start_root_basic_commissioning() else - self.device.stop_basic_commissioning() + self.device.commissioning.stop_basic_commissioning() end #- and force restart -# @@ -1085,7 +1085,7 @@ class Matter_UI self.show_bridge_status() - if self.device.is_root_commissioning_open() + if self.device.commissioning.is_root_commissioning_open() self.show_commissioning_info() end @@ -1095,7 +1095,7 @@ class Matter_UI def web_get_arg() import webserver if webserver.has_arg("mtc0") # Close Commissioning - self.device.stop_basic_commissioning() + self.device.commissioning.stop_basic_commissioning() elif webserver.has_arg("mtc1") # Open Commissioning self.device.start_root_basic_commissioning() end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be new file mode 100644 index 000000000..45b706419 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be @@ -0,0 +1,483 @@ +# +# Matter_z_Commissioning.be - implements the commissioning and MDNS logic +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +#@ solidify:Matter_Commissioning,weak + +class Matter_Commissioning + var device # reference to the main Device instance + + static var PBKDF_ITERATIONS = 1000 # I don't see any reason to choose a different number + static var PASE_TIMEOUT = 10*60 # default open commissioning window (10 minutes) + # Commissioning open + var commissioning_open # timestamp for timeout of commissioning (millis()) or `nil` if closed + var commissioning_iterations # current PBKDF number of iterations + var commissioning_discriminator # commissioning_discriminator + var commissioning_salt # current salt + var commissioning_w0 # current w0 (SPAKE2+) + var commissioning_L # current L (SPAKE2+) + var commissioning_admin_fabric # the fabric that opened the currint commissioning window, or `nil` for default + # information about the device + var commissioning_instance_wifi # random instance name for commissioning (mDNS) + var commissioning_instance_eth # random instance name for commissioning (mDNS) + var hostname_wifi # MAC-derived hostname for commissioning + var hostname_eth # MAC-derived hostname for commissioning + # mDNS active announces + var mdns_pase_eth # do we have an active PASE mDNS announce for eth + var mdns_pase_wifi # do we have an active PASE mDNS announce for wifi + + + ############################################################# + def init(device) + self.device = device + self._init_basic_commissioning() + end + + ############################################################# + # Start Basic Commissioning Window if needed at startup + def _init_basic_commissioning() + # if no fabric is configured, automatically open commissioning at restart + if self.device.sessions.count_active_fabrics() == 0 + self.start_root_basic_commissioning() + end + end + + ############################################################# + # dispatch every second click to sub-objects that need it + def every_second() + if self.commissioning_open != nil && tasmota.time_reached(self.commissioning_open) # timeout reached, close provisioning + self.commissioning_open = nil + end + end + + ############################################################# + # Start Basic Commissioning with root parameters + # + # Open window for `timeout_s` (default 10 minutes) + def start_root_basic_commissioning(timeout_s) + if timeout_s == nil timeout_s = self.PASE_TIMEOUT end + + # show Manual pairing code in logs + var pairing_code = self.compute_manual_pairing_code() + log(format("MTR: Manual pairing code: %s", pairing_code), 2) + + # output MQTT + var qr_code = self.compute_qrcode_content() + tasmota.publish_result(format('{"Matter":{"Commissioning":1,"PairingCode":"%s","QRCode":"%s"}}', pairing_code, qr_code), 'Matter') + + # compute PBKDF + import crypto + var root_salt = crypto.random(16) + + # Compute the PBKDF parameters for SPAKE2+ from root parameters + var passcode = bytes().add(self.device.root_passcode, 4) + + var tv = crypto.PBKDF2_HMAC_SHA256().derive(passcode, root_salt, self.PBKDF_ITERATIONS, 80) + var w0s = tv[0..39] + var w1s = tv[40..79] + + var root_w0 = crypto.EC_P256().mod(w0s) + var w1 = crypto.EC_P256().mod(w1s) # w1 is temporarily computed then discarded + # self.root_w1 = crypto.EC_P256().mod(w1s) + var root_L = crypto.EC_P256().public_key(w1) + self.start_basic_commissioning(timeout_s, self.PBKDF_ITERATIONS, self.device.root_discriminator, root_salt, root_w0, #-self.root_w1,-# root_L, nil) + end + + ############################################################# + # Start Basic Commissioning Window with custom parameters + def start_basic_commissioning(timeout_s, iterations, discriminator, salt, w0, L, admin_fabric) + self.commissioning_open = tasmota.millis() + timeout_s * 1000 + self.commissioning_iterations = iterations + self.commissioning_discriminator = discriminator + self.commissioning_salt = salt + self.commissioning_w0 = w0 + self.commissioning_L = L + self.commissioning_admin_fabric = admin_fabric + + if tasmota.wifi()['up'] || tasmota.eth()['up'] + self.mdns_announce_PASE() + else + tasmota.add_rule("Wifi#Connected", def () + self.mdns_announce_PASE() + tasmota.remove_rule("Wifi#Connected", "mdns_announce_PASE") + end, "mdns_announce_PASE") + tasmota.add_rule("Eth#Connected", def () + self.mdns_announce_PASE() + tasmota.remove_rule("Eth#Connected", "mdns_announce_PASE") + end, "mdns_announce_PASE") + end + end + + ############################################################# + # Is root commissioning currently open. Mostly for UI to know if QRCode needs to be shown. + def is_root_commissioning_open() + return self.commissioning_open != nil && self.commissioning_admin_fabric == nil + end + + ############################################################# + # Stop PASE commissioning, mostly called when CASE is about to start + def stop_basic_commissioning() + var n = nil + if self.is_root_commissioning_open() + tasmota.publish_result('{"Matter":{"Commissioning":0}}', 'Matter') + end + self.commissioning_open = n + + self.mdns_remove_PASE() + + # clear any PBKDF information to free memory + self.commissioning_iterations = n + self.commissioning_discriminator = n + self.commissioning_salt = n + self.commissioning_w0 = n + # self.commissioning_w1 = nil + self.commissioning_L = n + self.commissioning_admin_fabric = n + end + def is_commissioning_open() + return self.commissioning_open != nil + end + + ############################################################# + # Compute QR Code content - can be done only for root PASE + def compute_qrcode_content() + var raw = bytes().resize(11) # we don't use TLV Data so it's only 88 bits or 11 bytes + # version is `000` dont touch + raw.setbits(3, 16, self.device.VENDOR_ID) + raw.setbits(19, 16, self.device.PRODUCT_ID) + # custom flow = 0 (offset=35, len=2) + raw.setbits(37, 8, 0x04) # already on IP network + raw.setbits(45, 12, self.device.root_discriminator & 0xFFF) + raw.setbits(57, 27, self.device.root_passcode & 0x7FFFFFF) + # padding (offset=84 len=4) + return "MT:" + matter.Base38.encode(raw) + end + + + ############################################################# + # Compute the 11 digits manual pairing code (wihout vendorid nor productid) p.223 + #
+ # can be done only for root PASE (we need the passcode, but we don't get it with OpenCommissioningWindow command) + def compute_manual_pairing_code() + var digit_1 = (self.device.root_discriminator & 0x0FFF) >> 10 + var digit_2_6 = ((self.device.root_discriminator & 0x0300) << 6) | (self.device.root_passcode & 0x3FFF) + var digit_7_10 = (self.device.root_passcode >> 14) + + var ret = format("%1i%05i%04i", digit_1, digit_2_6, digit_7_10) + ret += matter.Verhoeff.checksum(ret) + return ret + end + + ############################################################# + # Start Operational Discovery for this session + # + # Deferred until next tick. + def start_operational_discovery_deferred(fabric) + # defer to next click + tasmota.set_timer(0, /-> self.start_operational_discovery(fabric)) + end + + ############################################################# + # Start Commissioning Complete for this session + # + # Deferred until next tick. + def start_commissioning_complete_deferred(session) + # defer to next click + tasmota.set_timer(0, /-> self.start_commissioning_complete(session)) + end + + ############################################################# + # Start Operational Discovery for this session + # + # Stop Basic Commissioning and clean PASE specific values (to save memory). + # Announce fabric entry in mDNS. + def start_operational_discovery(fabric) + import crypto + import mdns + + self.stop_basic_commissioning() # close all PASE commissioning information + + self.mdns_announce_op_discovery(fabric) + end + + ############################################################# + # Commissioning Complete + # + # Stop basic commissioning. + def start_commissioning_complete(session) + var fabric = session.get_fabric() + var fabric_id = fabric.get_fabric_id().copy().reverse().tohex() + var vendor_name = fabric.get_admin_vendor_name() + log(f"MTR: --- Commissioning complete for Fabric '{fabric_id}' (Vendor {vendor_name}) ---", 2) + self.stop_basic_commissioning() # by default close commissioning when it's complete + end + + ############################################################# + # mDNS Configuration + ############################################################# + # Start mDNS and announce hostnames for Wifi and ETH from MAC + # + # When the announce is active, `hostname_wifi` and `hostname_eth` + # are defined + def start_mdns_announce_hostnames() + if tasmota.wifi()['up'] + self._mdns_announce_hostname(false) + else + tasmota.add_rule("Wifi#Connected", def () + self._mdns_announce_hostname(false) + tasmota.remove_rule("Wifi#Connected", "matter_mdns_host") + end, "matter_mdns_host") + end + + if tasmota.eth()['up'] + self._mdns_announce_hostname(true) + else + tasmota.add_rule("Eth#Connected", def () + self._mdns_announce_hostname(true) + tasmota.remove_rule("Eth#Connected", "matter_mdns_host") + end, "matter_mdns_host") + end + end + + ############################################################# + # Start UDP mDNS announcements hostname + # This announcement is independant from commissioning windows + # + # eth is `true` if ethernet turned up, `false` is wifi turned up + def _mdns_announce_hostname(is_eth) + import mdns + import string + + mdns.start() + + try + if is_eth + # Add Hostname (based on MAC) with IPv4/IPv6 addresses + var eth = tasmota.eth() + self.hostname_eth = string.replace(eth.find("mac"), ':', '') + if !self.device.ipv4only || !eth.contains('ip6local') + # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 4) + mdns.add_hostname(self.hostname_eth, eth.find('ip6local',''), eth.find('ip',''), eth.find('ip6','')) + else + log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, eth.find('ip','')), 3) + mdns.add_hostname(self.hostname_eth, eth.find('ip','')) + end + else + var wifi = tasmota.wifi() + self.hostname_wifi = string.replace(wifi.find("mac"), ':', '') + if !self.device.ipv4only || !wifi.contains('ip6local') + # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 4) + mdns.add_hostname(self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip',''), wifi.find('ip6','')) + else + log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_wifi, wifi.find('ip','')), 3) + mdns.add_hostname(self.hostname_wifi, wifi.find('ip','')) + end + end + log(format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 3) + except .. as e, m + log("MTR: Exception" + str(e) + "|" + str(m), 2) + end + + self.mdns_announce_op_discovery_all_fabrics() + end + + ############################################################# + # Announce MDNS for PASE commissioning + def mdns_announce_PASE() + import mdns + import crypto + + var services = { + "VP": f"{self.device.VENDOR_ID}+{self.device.PRODUCT_ID}", + "D": self.commissioning_discriminator, + "CM":1, # requires passcode + "T":0, # no support for TCP + "SII":5000, "SAI":300 + } + + self.commissioning_instance_wifi = crypto.random(8).tohex() # 16 characters random hostname + self.commissioning_instance_eth = crypto.random(8).tohex() # 16 characters random hostname + + try + if self.hostname_eth + # Add Matter `_matterc._udp` service + # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 4) + mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_eth, self.hostname_eth) + self.mdns_pase_eth = true + + log(format("MTR: announce mDNS on %s '%s' ptr to `%s.local`", "eth", self.commissioning_instance_eth, self.hostname_eth), 2) + + # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil` + var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF) + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) + subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) + subtype = "_V" + str(self.device.VENDOR_ID) + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) + subtype = "_CM1" + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) + end + if self.hostname_wifi + + # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 4) + mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_wifi, self.hostname_wifi) + self.mdns_pase_wifi = true + + log(format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 3) + + # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil` + var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF) + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) + subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) + subtype = "_V" + str(self.device.VENDOR_ID) + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) + subtype = "_CM1" + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) + end + except .. as e, m + log("MTR: Exception" + str(e) + "|" + str(m), 2) + end + + end + + ############################################################# + # MDNS remove any PASE announce + def mdns_remove_PASE() + import mdns + + try + if self.mdns_pase_eth + log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth), 3) + log(format("MTR: remove mDNS on %s '%s'", "eth", self.commissioning_instance_eth), 3) + self.mdns_pase_eth = false + mdns.remove_service("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth) + end + if self.mdns_pase_wifi + log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi), 3) + log(format("MTR: remove mDNS on %s '%s'", "wifi", self.commissioning_instance_wifi), 3) + self.mdns_pase_wifi = false + mdns.remove_service("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi) + end + except .. as e, m + log("MTR: Exception" + str(e) + "|" + str(m), 2) + end + end + + ############################################################# + # Start UDP mDNS announcements for commissioning for all persisted sessions + def mdns_announce_op_discovery_all_fabrics() + for fabric: self.device.sessions.active_fabrics() + if fabric.get_device_id() && fabric.get_fabric_id() + self.mdns_announce_op_discovery(fabric) + end + end + end + + ############################################################# + # Start UDP mDNS announcements for commissioning + def mdns_announce_op_discovery(fabric) + import mdns + try + var device_id = fabric.get_device_id().copy().reverse() + var k_fabric = fabric.get_fabric_compressed() + var op_node = k_fabric.tohex() + "-" + device_id.tohex() + log("MTR: Operational Discovery node = " + op_node, 3) + + # mdns + if (tasmota.eth().find("up")) + log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "eth", op_node, self.hostname_eth), 3) + mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_eth) + var subtype = "_I" + k_fabric.tohex() + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_eth, subtype) + end + if (tasmota.wifi().find("up")) + log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "wifi", op_node, self.hostname_wifi), 3) + mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_wifi) + var subtype = "_I" + k_fabric.tohex() + log("MTR: adding subtype: "+subtype, 3) + mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_wifi, subtype) + end + except .. as e, m + log("MTR: Exception" + str(e) + "|" + str(m), 2) + end + end + + ############################################################# + # Remove all mDNS announces for all fabrics + def mdns_remove_op_discovery_all_fabrics() + for fabric: self.device.sessions.active_fabrics() + if fabric.get_device_id() && fabric.get_fabric_id() + self.mdns_remove_op_discovery(fabric) + end + end + end + + ############################################################# + # Remove mDNS announce for fabric + def mdns_remove_op_discovery(fabric) + import mdns + try + var device_id = fabric.get_device_id().copy().reverse() + var k_fabric = fabric.get_fabric_compressed() + var op_node = k_fabric.tohex() + "-" + device_id.tohex() + + # mdns + if (tasmota.eth().find("up")) + log(format("MTR: remove mDNS on %s '%s'", "eth", op_node), 3) + mdns.remove_service("_matter", "_tcp", op_node, self.hostname_eth) + end + if (tasmota.wifi().find("up")) + log(format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 3) + mdns.remove_service("_matter", "_tcp", op_node, self.hostname_wifi) + end + except .. as e, m + log("MTR: Exception" + str(e) + "|" + str(m), 2) + end + end + + ##################################################################### + # Generate random passcode + ##################################################################### + static var PASSCODE_INVALID = [ 0, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321] + def generate_random_passcode() + import crypto + var passcode + while true + passcode = crypto.random(4).get(0, 4) & 0x7FFFFFF + if passcode > 0x5F5E0FE continue end # larger than allowed + for inv: self.PASSCODE_INVALID + if passcode == inv passcode = nil end + end + if passcode != nil return passcode end + end + end + +end +matter.Commissioning = Matter_Commissioning diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index cc0528efc..d547c3df7 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -23,11 +23,9 @@ import matter class Matter_Device static var UDP_PORT = 5540 # this is the default port for group multicast, we also use it for unicast - static var PBKDF_ITERATIONS = 1000 # I don't see any reason to choose a different number static var VENDOR_ID = 0xFFF1 static var PRODUCT_ID = 0x8000 static var FILENAME = "_matter_device.json" - static var PASE_TIMEOUT = 10*60 # default open commissioning window (10 minutes) var started # is the Matter Device started (configured, mDNS and UDPServer started) var plugins # list of plugins instances var plugins_persist # true if plugins configuration needs to be saved @@ -37,27 +35,12 @@ class Matter_Device var udp_server # `matter.UDPServer()` object var profiler var message_handler # `matter.MessageHandler()` object + var commissioning # `matter.Commissioning()` object var sessions # `matter.Session_Store()` objet var ui var tick # increment at each tick, avoids to repeat too frequently some actions # Events var events # Event handler - # Commissioning open - var commissioning_open # timestamp for timeout of commissioning (millis()) or `nil` if closed - var commissioning_iterations # current PBKDF number of iterations - var commissioning_discriminator # commissioning_discriminator - var commissioning_salt # current salt - var commissioning_w0 # current w0 (SPAKE2+) - var commissioning_L # current L (SPAKE2+) - var commissioning_admin_fabric # the fabric that opened the currint commissioning window, or `nil` for default - # information about the device - var commissioning_instance_wifi # random instance name for commissioning (mDNS) - var commissioning_instance_eth # random instance name for commissioning (mDNS) - var hostname_wifi # MAC-derived hostname for commissioning - var hostname_eth # MAC-derived hostname for commissioning - # mDNS active announces - var mdns_pase_eth # do we have an active PASE mDNS announce for eth - var mdns_pase_wifi # do we have an active PASE mDNS announce for wifi # for brige mode, list of HTTP_remote objects (only one instance per remote object) var http_remotes # map of 'domain:port' to `Matter_HTTP_remote` instance or `nil` if no bridges # saved in parameters @@ -114,7 +97,7 @@ class Matter_Device end, "matter_start") end - self._init_basic_commissioning() + self.commissioning = matter.Commissioning(self) tasmota.add_driver(self) @@ -131,60 +114,18 @@ class Matter_Device self._start_udp(self.UDP_PORT) - self.start_mdns_announce_hostnames() + self.commissioning.start_mdns_announce_hostnames() self.started = true end - ############################################################# - # Start Basic Commissioning Window if needed at startup - def _init_basic_commissioning() - # if no fabric is configured, automatically open commissioning at restart - if self.sessions.count_active_fabrics() == 0 - self.start_root_basic_commissioning() - end - end - - ############################################################# - # Start Basic Commissioning with root parameters - # - # Open window for `timeout_s` (default 10 minutes) - def start_root_basic_commissioning(timeout_s) - if timeout_s == nil timeout_s = self.PASE_TIMEOUT end - - # show Manual pairing code in logs - var pairing_code = self.compute_manual_pairing_code() - log(format("MTR: Manual pairing code: %s", pairing_code), 2) - - # output MQTT - var qr_code = self.compute_qrcode_content() - tasmota.publish_result(format('{"Matter":{"Commissioning":1,"PairingCode":"%s","QRCode":"%s"}}', pairing_code, qr_code), 'Matter') - - # compute PBKDF - import crypto - var root_salt = crypto.random(16) - - # Compute the PBKDF parameters for SPAKE2+ from root parameters - var passcode = bytes().add(self.root_passcode, 4) - - var tv = crypto.PBKDF2_HMAC_SHA256().derive(passcode, root_salt, self.PBKDF_ITERATIONS, 80) - var w0s = tv[0..39] - var w1s = tv[40..79] - - var root_w0 = crypto.EC_P256().mod(w0s) - var w1 = crypto.EC_P256().mod(w1s) # w1 is temporarily computed then discarded - # self.root_w1 = crypto.EC_P256().mod(w1s) - var root_L = crypto.EC_P256().public_key(w1) - self.start_basic_commissioning(timeout_s, self.PBKDF_ITERATIONS, self.root_discriminator, root_salt, root_w0, #-self.root_w1,-# root_L, nil) - end - ##################################################################### # Remove a fabric and clean all corresponding values and mDNS entries def remove_fabric(fabric) if fabric != nil log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2) self.message_handler.im.subs_shop.remove_by_fabric(fabric) - self.mdns_remove_op_discovery(fabric) + self.commissioning.mdns_remove_op_discovery(fabric) self.sessions.remove_fabric(fabric) end # var sub_fabrics = self.sessions.find_children_fabrics(fabric_parent.get_fabric_index()) @@ -201,91 +142,6 @@ class Matter_Device self.sessions.save_fabrics() end - ############################################################# - # Start Basic Commissioning Window with custom parameters - def start_basic_commissioning(timeout_s, iterations, discriminator, salt, w0, L, admin_fabric) - self.commissioning_open = tasmota.millis() + timeout_s * 1000 - self.commissioning_iterations = iterations - self.commissioning_discriminator = discriminator - self.commissioning_salt = salt - self.commissioning_w0 = w0 - self.commissioning_L = L - self.commissioning_admin_fabric = admin_fabric - - if tasmota.wifi()['up'] || tasmota.eth()['up'] - self.mdns_announce_PASE() - else - tasmota.add_rule("Wifi#Connected", def () - self.mdns_announce_PASE() - tasmota.remove_rule("Wifi#Connected", "mdns_announce_PASE") - end, "mdns_announce_PASE") - tasmota.add_rule("Eth#Connected", def () - self.mdns_announce_PASE() - tasmota.remove_rule("Eth#Connected", "mdns_announce_PASE") - end, "mdns_announce_PASE") - end - end - - ############################################################# - # Is root commissioning currently open. Mostly for UI to know if QRCode needs to be shown. - def is_root_commissioning_open() - return self.commissioning_open != nil && self.commissioning_admin_fabric == nil - end - - ############################################################# - # Stop PASE commissioning, mostly called when CASE is about to start - def stop_basic_commissioning() - var n = nil - if self.is_root_commissioning_open() - tasmota.publish_result('{"Matter":{"Commissioning":0}}', 'Matter') - end - self.commissioning_open = n - - self.mdns_remove_PASE() - - # clear any PBKDF information to free memory - self.commissioning_iterations = n - self.commissioning_discriminator = n - self.commissioning_salt = n - self.commissioning_w0 = n - # self.commissioning_w1 = nil - self.commissioning_L = n - self.commissioning_admin_fabric = n - end - def is_commissioning_open() - return self.commissioning_open != nil - end - - ############################################################# - # Compute QR Code content - can be done only for root PASE - def compute_qrcode_content() - var raw = bytes().resize(11) # we don't use TLV Data so it's only 88 bits or 11 bytes - # version is `000` dont touch - raw.setbits(3, 16, self.VENDOR_ID) - raw.setbits(19, 16, self.PRODUCT_ID) - # custom flow = 0 (offset=35, len=2) - raw.setbits(37, 8, 0x04) # already on IP network - raw.setbits(45, 12, self.root_discriminator & 0xFFF) - raw.setbits(57, 27, self.root_passcode & 0x7FFFFFF) - # padding (offset=84 len=4) - return "MT:" + matter.Base38.encode(raw) - end - - - ############################################################# - # Compute the 11 digits manual pairing code (wihout vendorid nor productid) p.223 - #
- # can be done only for root PASE (we need the passcode, but we don't get it with OpenCommissioningWindow command) - def compute_manual_pairing_code() - var digit_1 = (self.root_discriminator & 0x0FFF) >> 10 - var digit_2_6 = ((self.root_discriminator & 0x0300) << 6) | (self.root_passcode & 0x3FFF) - var digit_7_10 = (self.root_passcode >> 14) - - var ret = format("%1i%05i%04i", digit_1, digit_2_6, digit_7_10) - ret += matter.Verhoeff.checksum(ret) - return ret - end - ##################################################################### # Driver handling of buttons ##################################################################### @@ -330,9 +186,7 @@ class Matter_Device self.sessions.every_second() self.message_handler.every_second() self.events.every_second() # periodically remove bytes() representation of events - if self.commissioning_open != nil && tasmota.time_reached(self.commissioning_open) # timeout reached, close provisioning - self.commissioning_open = nil - end + self.commissioning.every_second() end ############################################################# @@ -440,50 +294,6 @@ class Matter_Device self.udp_server.start(/ raw, addr, port -> self.msg_received(raw, addr, port)) end - ############################################################# - # Start Operational Discovery for this session - # - # Deferred until next tick. - def start_operational_discovery_deferred(fabric) - # defer to next click - tasmota.set_timer(0, /-> self.start_operational_discovery(fabric)) - end - - ############################################################# - # Start Commissioning Complete for this session - # - # Deferred until next tick. - def start_commissioning_complete_deferred(session) - # defer to next click - tasmota.set_timer(0, /-> self.start_commissioning_complete(session)) - end - - ############################################################# - # Start Operational Discovery for this session - # - # Stop Basic Commissioning and clean PASE specific values (to save memory). - # Announce fabric entry in mDNS. - def start_operational_discovery(fabric) - import crypto - import mdns - - self.stop_basic_commissioning() # close all PASE commissioning information - - self.mdns_announce_op_discovery(fabric) - end - - ############################################################# - # Commissioning Complete - # - # Stop basic commissioning. - def start_commissioning_complete(session) - var fabric = session.get_fabric() - var fabric_id = fabric.get_fabric_id().copy().reverse().tohex() - var vendor_name = fabric.get_admin_vendor_name() - log(f"MTR: --- Commissioning complete for Fabric '{fabric_id}' (Vendor {vendor_name}) ---", 2) - self.stop_basic_commissioning() # by default close commissioning when it's complete - end - ################################################################################# # Simple insertion sort - sorts the list in place, and returns the list @@ -734,7 +544,7 @@ class Matter_Device dirty = true end if self.root_passcode == nil - self.root_passcode = self.generate_random_passcode() + self.root_passcode = self.commissioning.generate_random_passcode() dirty = true end if dirty self.save_param() end @@ -814,239 +624,6 @@ class Matter_Device ctx.status = matter.UNSUPPORTED_ENDPOINT end - ############################################################# - # mDNS Configuration - ############################################################# - # Start mDNS and announce hostnames for Wifi and ETH from MAC - # - # When the announce is active, `hostname_wifi` and `hostname_eth` - # are defined - def start_mdns_announce_hostnames() - if tasmota.wifi()['up'] - self._mdns_announce_hostname(false) - else - tasmota.add_rule("Wifi#Connected", def () - self._mdns_announce_hostname(false) - tasmota.remove_rule("Wifi#Connected", "matter_mdns_host") - end, "matter_mdns_host") - end - - if tasmota.eth()['up'] - self._mdns_announce_hostname(true) - else - tasmota.add_rule("Eth#Connected", def () - self._mdns_announce_hostname(true) - tasmota.remove_rule("Eth#Connected", "matter_mdns_host") - end, "matter_mdns_host") - end - end - - ############################################################# - # Start UDP mDNS announcements hostname - # This announcement is independant from commissioning windows - # - # eth is `true` if ethernet turned up, `false` is wifi turned up - def _mdns_announce_hostname(is_eth) - import mdns - import string - - mdns.start() - - try - if is_eth - # Add Hostname (based on MAC) with IPv4/IPv6 addresses - var eth = tasmota.eth() - self.hostname_eth = string.replace(eth.find("mac"), ':', '') - if !self.ipv4only || !eth.contains('ip6local') - # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 4) - mdns.add_hostname(self.hostname_eth, eth.find('ip6local',''), eth.find('ip',''), eth.find('ip6','')) - else - log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, eth.find('ip','')), 3) - mdns.add_hostname(self.hostname_eth, eth.find('ip','')) - end - else - var wifi = tasmota.wifi() - self.hostname_wifi = string.replace(wifi.find("mac"), ':', '') - if !self.ipv4only || !wifi.contains('ip6local') - # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 4) - mdns.add_hostname(self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip',''), wifi.find('ip6','')) - else - log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_wifi, wifi.find('ip','')), 3) - mdns.add_hostname(self.hostname_wifi, wifi.find('ip','')) - end - end - log(format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 3) - except .. as e, m - log("MTR: Exception" + str(e) + "|" + str(m), 2) - end - - self.mdns_announce_op_discovery_all_fabrics() - end - - ############################################################# - # Announce MDNS for PASE commissioning - def mdns_announce_PASE() - import mdns - import crypto - - var services = { - "VP": f"{self.VENDOR_ID}+{self.PRODUCT_ID}", - "D": self.commissioning_discriminator, - "CM":1, # requires passcode - "T":0, # no support for TCP - "SII":5000, "SAI":300 - } - - self.commissioning_instance_wifi = crypto.random(8).tohex() # 16 characters random hostname - self.commissioning_instance_eth = crypto.random(8).tohex() # 16 characters random hostname - - try - if self.hostname_eth - # Add Matter `_matterc._udp` service - # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 4) - mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_eth, self.hostname_eth) - self.mdns_pase_eth = true - - log(format("MTR: announce mDNS on %s '%s' ptr to `%s.local`", "eth", self.commissioning_instance_eth, self.hostname_eth), 2) - - # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil` - var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF) - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) - subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) - subtype = "_V" + str(self.VENDOR_ID) - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) - subtype = "_CM1" - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype) - end - if self.hostname_wifi - - # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 4) - mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_wifi, self.hostname_wifi) - self.mdns_pase_wifi = true - - log(format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 3) - - # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil` - var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF) - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) - subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8) - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) - subtype = "_V" + str(self.VENDOR_ID) - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) - subtype = "_CM1" - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype) - end - except .. as e, m - log("MTR: Exception" + str(e) + "|" + str(m), 2) - end - - end - - ############################################################# - # MDNS remove any PASE announce - def mdns_remove_PASE() - import mdns - - try - if self.mdns_pase_eth - log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth), 3) - log(format("MTR: remove mDNS on %s '%s'", "eth", self.commissioning_instance_eth), 3) - self.mdns_pase_eth = false - mdns.remove_service("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth) - end - if self.mdns_pase_wifi - log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi), 3) - log(format("MTR: remove mDNS on %s '%s'", "wifi", self.commissioning_instance_wifi), 3) - self.mdns_pase_wifi = false - mdns.remove_service("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi) - end - except .. as e, m - log("MTR: Exception" + str(e) + "|" + str(m), 2) - end - end - - ############################################################# - # Start UDP mDNS announcements for commissioning for all persisted sessions - def mdns_announce_op_discovery_all_fabrics() - for fabric: self.sessions.active_fabrics() - if fabric.get_device_id() && fabric.get_fabric_id() - self.mdns_announce_op_discovery(fabric) - end - end - end - - ############################################################# - # Start UDP mDNS announcements for commissioning - def mdns_announce_op_discovery(fabric) - import mdns - try - var device_id = fabric.get_device_id().copy().reverse() - var k_fabric = fabric.get_fabric_compressed() - var op_node = k_fabric.tohex() + "-" + device_id.tohex() - log("MTR: Operational Discovery node = " + op_node, 3) - - # mdns - if (tasmota.eth().find("up")) - log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "eth", op_node, self.hostname_eth), 3) - mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_eth) - var subtype = "_I" + k_fabric.tohex() - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_eth, subtype) - end - if (tasmota.wifi().find("up")) - log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "wifi", op_node, self.hostname_wifi), 3) - mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_wifi) - var subtype = "_I" + k_fabric.tohex() - log("MTR: adding subtype: "+subtype, 3) - mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_wifi, subtype) - end - except .. as e, m - log("MTR: Exception" + str(e) + "|" + str(m), 2) - end - end - - ############################################################# - # Remove all mDNS announces for all fabrics - def mdns_remove_op_discovery_all_fabrics() - for fabric: self.sessions.active_fabrics() - if fabric.get_device_id() && fabric.get_fabric_id() - self.mdns_remove_op_discovery(fabric) - end - end - end - - ############################################################# - # Remove mDNS announce for fabric - def mdns_remove_op_discovery(fabric) - import mdns - try - var device_id = fabric.get_device_id().copy().reverse() - var k_fabric = fabric.get_fabric_compressed() - var op_node = k_fabric.tohex() + "-" + device_id.tohex() - - # mdns - if (tasmota.eth().find("up")) - log(format("MTR: remove mDNS on %s '%s'", "eth", op_node), 3) - mdns.remove_service("_matter", "_tcp", op_node, self.hostname_eth) - end - if (tasmota.wifi().find("up")) - log(format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 3) - mdns.remove_service("_matter", "_tcp", op_node, self.hostname_wifi) - end - except .. as e, m - log("MTR: Exception" + str(e) + "|" + str(m), 2) - end - end - ############################################################# # Try to clean MDNS entries before restart. # @@ -1408,23 +985,6 @@ class Matter_Device end end - ##################################################################### - # Generate random passcode - ##################################################################### - static var PASSCODE_INVALID = [ 0, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321] - def generate_random_passcode() - import crypto - var passcode - while true - passcode = crypto.random(4).get(0, 4) & 0x7FFFFFF - if passcode > 0x5F5E0FE continue end # larger than allowed - for inv: self.PASSCODE_INVALID - if passcode == inv passcode = nil end - end - if passcode != nil return passcode end - end - end - ##################################################################### # Manager HTTP remotes ##################################################################### @@ -1523,7 +1083,7 @@ class Matter_Device def MtrJoin(cmd_found, idx, payload, payload_json) var payload_int = int(payload) if payload_int - self.start_root_basic_commissioning() + self.commissioning.start_root_basic_commissioning() else self.stop_basic_commissioning() end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Context.h similarity index 68% rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Context.h index 13ecf842a..944e0a787 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Context.h @@ -1,10 +1,10 @@ -/* Solidification of Matter_Commissioning.h */ +/* Solidification of Matter_Commissioning_Context.h */ /********************************************************************\ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Commisioning_Context' ktab size: 184, total: 359 (saved 1400 bytes) -static const bvalue be_ktab_class_Matter_Commisioning_Context[184] = { +// compact class 'Matter_Commisioning_Context' ktab size: 185, total: 362 (saved 1416 bytes) +static const bvalue be_ktab_class_Matter_Commisioning_Context[185] = { /* K0 */ be_nested_str_weak(session), /* K1 */ be_nested_str_weak(raw), /* K2 */ be_nested_str_weak(app_payload_idx), @@ -63,132 +63,133 @@ static const bvalue be_ktab_class_Matter_Commisioning_Context[184] = { /* K55 */ be_nested_str_weak(random), /* K56 */ be_nested_str_weak(responderSessionId), /* K57 */ be_nested_str_weak(pbkdf_parameters_salt), - /* K58 */ be_nested_str_weak(commissioning_salt), - /* K59 */ be_nested_str_weak(pbkdf_parameters_iterations), - /* K60 */ be_nested_str_weak(commissioning_iterations), - /* K61 */ be_nested_str_weak(tlv2raw), - /* K62 */ be_nested_str_weak(__Msg2), - /* K63 */ be_nested_str_weak(build_response), - /* K64 */ be_nested_str_weak(encode_frame), - /* K65 */ be_nested_str_weak(responder), - /* K66 */ be_nested_str_weak(send_response_frame), - /* K67 */ be_nested_str_weak(add), - /* K68 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), - /* K69 */ be_nested_str_weak(Pake1), - /* K70 */ be_nested_str_weak(pA), - /* K71 */ be_nested_str_weak(SPAKE2P_Matter), - /* K72 */ be_nested_str_weak(commissioning_w0), - /* K73 */ be_nested_str_weak(commissioning_L), - /* K74 */ be_nested_str_weak(compute_pB), - /* K75 */ be_nested_str_weak(compute_ZV_verifier), - /* K76 */ be_nested_str_weak(SHA256), - /* K77 */ be_nested_str_weak(fromstring), - /* K78 */ be_nested_str_weak(Matter_Context_Prefix), - /* K79 */ be_nested_str_weak(set_context), - /* K80 */ be_nested_str_weak(compute_TT_hash), - /* K81 */ be_nested_str_weak(Pake2), - /* K82 */ be_nested_str_weak(pB), - /* K83 */ be_nested_str_weak(cB), - /* K84 */ be_nested_str_weak(__spake_cA), - /* K85 */ be_nested_str_weak(cA), - /* K86 */ be_nested_str_weak(__spake_Ke), - /* K87 */ be_nested_str_weak(Ke), - /* K88 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K89 */ be_nested_str_weak(_ip), - /* K90 */ be_nested_str_weak(_port), - /* K91 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), - /* K92 */ be_nested_str_weak(Pake3), - /* K93 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), - /* K94 */ be_nested_str_weak(rtc_utc), - /* K95 */ be_nested_str_weak(HKDF_SHA256), - /* K96 */ be_nested_str_weak(derive), - /* K97 */ be_nested_str_weak(SEKeys_Info), - /* K98 */ be_nested_str_weak(add_session), - /* K99 */ be_nested_str_weak(Sigma3), - /* K100 */ be_nested_str_weak(S3K_Info), - /* K101 */ be_nested_str_weak(shared_secret), - /* K102 */ be_nested_str_weak(TBEData3Encrypted), - /* K103 */ be_nested_str_weak(AES_CCM), - /* K104 */ be_nested_str_weak(TBEData3_Nonce), - /* K105 */ be_nested_str_weak(decrypt), - /* K106 */ be_nested_str_weak(tag), - /* K107 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), - /* K108 */ be_nested_str_weak(TLV), - /* K109 */ be_nested_str_weak(findsubval), - /* K110 */ be_nested_str_weak(findsub), - /* K111 */ be_nested_str_weak(int), - /* K112 */ be_nested_str_weak(peer_node_id), - /* K113 */ be_nested_str_weak(int64), - /* K114 */ be_nested_str_weak(fromu32), - /* K115 */ be_nested_str_weak(tobytes), - /* K116 */ be_nested_str_weak(Matter_TLV_struct), - /* K117 */ be_nested_str_weak(add_TLV), - /* K118 */ be_nested_str_weak(B1), - /* K119 */ be_nested_str_weak(__initiator_pub), - /* K120 */ be_nested_str_weak(__responder_pub), - /* K121 */ be_nested_str_weak(EC_P256), - /* K122 */ be_nested_str_weak(ecdsa_verify_sha256), - /* K123 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), - /* K124 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), - /* K125 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), - /* K126 */ be_nested_str_weak(Msg3), - /* K127 */ be_nested_str_weak(close), - /* K128 */ be_nested_str_weak(_breadcrumb), - /* K129 */ be_nested_str_weak(counter_snd_next), - /* K130 */ be_nested_str_weak(set_persist), - /* K131 */ be_nested_str_weak(set_no_expiration), - /* K132 */ be_nested_str_weak(persist_to_fabric), - /* K133 */ be_nested_str_weak(save), - /* K134 */ be_nested_str_weak(is_commissioning_open), - /* K135 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), - /* K136 */ be_nested_str_weak(parse_PBKDFParamRequest), - /* K137 */ be_nested_str_weak(parse_Pake1), - /* K138 */ be_nested_str_weak(parse_Pake3), - /* K139 */ be_nested_str_weak(parse_Sigma1), - /* K140 */ be_nested_str_weak(parse_Sigma3), - /* K141 */ be_nested_str_weak(parse_StatusReport), - /* K142 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), - /* K143 */ be_nested_str_weak(Sigma1), - /* K144 */ be_nested_str_weak(initiatorEphPubKey), - /* K145 */ be_nested_str_weak(resumptionID), - /* K146 */ be_nested_str_weak(initiatorResumeMIC), - /* K147 */ be_nested_str_weak(find_session_by_resumption_id), - /* K148 */ be_nested_str_weak(_fabric), - /* K149 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), - /* K150 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption), - /* K151 */ be_nested_str_weak(Sigma1_Resume), - /* K152 */ be_nested_str_weak(NCASE_SigmaS1), - /* K153 */ be_nested_str_weak(_source_node_id), - /* K154 */ be_nested_str_weak(source_node_id), - /* K155 */ be_nested_str_weak(set_mode_CASE), - /* K156 */ be_nested_str_weak(resumption_id), - /* K157 */ be_nested_str_weak(Sigma2_Resume), - /* K158 */ be_nested_str_weak(NCASE_SigmaS2), - /* K159 */ be_nested_str_weak(Sigma2Resume), - /* K160 */ be_nested_str_weak(sigma2ResumeMIC), - /* K161 */ be_nested_str_weak(responderSessionID), - /* K162 */ be_nested_str_weak(SessionResumptionKeys), - /* K163 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), - /* K164 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), - /* K165 */ be_nested_str_weak(find_fabric_by_destination_id), - /* K166 */ be_nested_str_weak(destinationId), - /* K167 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), - /* K168 */ be_nested_str_weak(__responder_priv), - /* K169 */ be_nested_str_weak(public_key), - /* K170 */ be_nested_str_weak(shared_key), - /* K171 */ be_nested_str_weak(B2), - /* K172 */ be_nested_str_weak(get_noc), - /* K173 */ be_nested_str_weak(get_icac), - /* K174 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K175 */ be_nested_str_weak(get_pk), - /* K176 */ be_nested_str_weak(Msg1), - /* K177 */ be_nested_str_weak(S2K_Info), - /* K178 */ be_nested_str_weak(TBEData2_Nonce), - /* K179 */ be_nested_str_weak(encrypt), - /* K180 */ be_nested_str_weak(Sigma2), - /* K181 */ be_nested_str_weak(responderEphPubKey), - /* K182 */ be_nested_str_weak(encrypted2), - /* K183 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K58 */ be_nested_str_weak(commissioning), + /* K59 */ be_nested_str_weak(commissioning_salt), + /* K60 */ be_nested_str_weak(pbkdf_parameters_iterations), + /* K61 */ be_nested_str_weak(commissioning_iterations), + /* K62 */ be_nested_str_weak(tlv2raw), + /* K63 */ be_nested_str_weak(__Msg2), + /* K64 */ be_nested_str_weak(build_response), + /* K65 */ be_nested_str_weak(encode_frame), + /* K66 */ be_nested_str_weak(responder), + /* K67 */ be_nested_str_weak(send_response_frame), + /* K68 */ be_nested_str_weak(add), + /* K69 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), + /* K70 */ be_nested_str_weak(Pake1), + /* K71 */ be_nested_str_weak(pA), + /* K72 */ be_nested_str_weak(SPAKE2P_Matter), + /* K73 */ be_nested_str_weak(commissioning_w0), + /* K74 */ be_nested_str_weak(commissioning_L), + /* K75 */ be_nested_str_weak(compute_pB), + /* K76 */ be_nested_str_weak(compute_ZV_verifier), + /* K77 */ be_nested_str_weak(SHA256), + /* K78 */ be_nested_str_weak(fromstring), + /* K79 */ be_nested_str_weak(Matter_Context_Prefix), + /* K80 */ be_nested_str_weak(set_context), + /* K81 */ be_nested_str_weak(compute_TT_hash), + /* K82 */ be_nested_str_weak(Pake2), + /* K83 */ be_nested_str_weak(pB), + /* K84 */ be_nested_str_weak(cB), + /* K85 */ be_nested_str_weak(__spake_cA), + /* K86 */ be_nested_str_weak(cA), + /* K87 */ be_nested_str_weak(__spake_Ke), + /* K88 */ be_nested_str_weak(Ke), + /* K89 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K90 */ be_nested_str_weak(_ip), + /* K91 */ be_nested_str_weak(_port), + /* K92 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), + /* K93 */ be_nested_str_weak(Pake3), + /* K94 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), + /* K95 */ be_nested_str_weak(rtc_utc), + /* K96 */ be_nested_str_weak(HKDF_SHA256), + /* K97 */ be_nested_str_weak(derive), + /* K98 */ be_nested_str_weak(SEKeys_Info), + /* K99 */ be_nested_str_weak(add_session), + /* K100 */ be_nested_str_weak(Sigma3), + /* K101 */ be_nested_str_weak(S3K_Info), + /* K102 */ be_nested_str_weak(shared_secret), + /* K103 */ be_nested_str_weak(TBEData3Encrypted), + /* K104 */ be_nested_str_weak(AES_CCM), + /* K105 */ be_nested_str_weak(TBEData3_Nonce), + /* K106 */ be_nested_str_weak(decrypt), + /* K107 */ be_nested_str_weak(tag), + /* K108 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), + /* K109 */ be_nested_str_weak(TLV), + /* K110 */ be_nested_str_weak(findsubval), + /* K111 */ be_nested_str_weak(findsub), + /* K112 */ be_nested_str_weak(int), + /* K113 */ be_nested_str_weak(peer_node_id), + /* K114 */ be_nested_str_weak(int64), + /* K115 */ be_nested_str_weak(fromu32), + /* K116 */ be_nested_str_weak(tobytes), + /* K117 */ be_nested_str_weak(Matter_TLV_struct), + /* K118 */ be_nested_str_weak(add_TLV), + /* K119 */ be_nested_str_weak(B1), + /* K120 */ be_nested_str_weak(__initiator_pub), + /* K121 */ be_nested_str_weak(__responder_pub), + /* K122 */ be_nested_str_weak(EC_P256), + /* K123 */ be_nested_str_weak(ecdsa_verify_sha256), + /* K124 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), + /* K125 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), + /* K126 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), + /* K127 */ be_nested_str_weak(Msg3), + /* K128 */ be_nested_str_weak(close), + /* K129 */ be_nested_str_weak(_breadcrumb), + /* K130 */ be_nested_str_weak(counter_snd_next), + /* K131 */ be_nested_str_weak(set_persist), + /* K132 */ be_nested_str_weak(set_no_expiration), + /* K133 */ be_nested_str_weak(persist_to_fabric), + /* K134 */ be_nested_str_weak(save), + /* K135 */ be_nested_str_weak(is_commissioning_open), + /* K136 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), + /* K137 */ be_nested_str_weak(parse_PBKDFParamRequest), + /* K138 */ be_nested_str_weak(parse_Pake1), + /* K139 */ be_nested_str_weak(parse_Pake3), + /* K140 */ be_nested_str_weak(parse_Sigma1), + /* K141 */ be_nested_str_weak(parse_Sigma3), + /* K142 */ be_nested_str_weak(parse_StatusReport), + /* K143 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), + /* K144 */ be_nested_str_weak(Sigma1), + /* K145 */ be_nested_str_weak(initiatorEphPubKey), + /* K146 */ be_nested_str_weak(resumptionID), + /* K147 */ be_nested_str_weak(initiatorResumeMIC), + /* K148 */ be_nested_str_weak(find_session_by_resumption_id), + /* K149 */ be_nested_str_weak(_fabric), + /* K150 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), + /* K151 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption), + /* K152 */ be_nested_str_weak(Sigma1_Resume), + /* K153 */ be_nested_str_weak(NCASE_SigmaS1), + /* K154 */ be_nested_str_weak(_source_node_id), + /* K155 */ be_nested_str_weak(source_node_id), + /* K156 */ be_nested_str_weak(set_mode_CASE), + /* K157 */ be_nested_str_weak(resumption_id), + /* K158 */ be_nested_str_weak(Sigma2_Resume), + /* K159 */ be_nested_str_weak(NCASE_SigmaS2), + /* K160 */ be_nested_str_weak(Sigma2Resume), + /* K161 */ be_nested_str_weak(sigma2ResumeMIC), + /* K162 */ be_nested_str_weak(responderSessionID), + /* K163 */ be_nested_str_weak(SessionResumptionKeys), + /* K164 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), + /* K165 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), + /* K166 */ be_nested_str_weak(find_fabric_by_destination_id), + /* K167 */ be_nested_str_weak(destinationId), + /* K168 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), + /* K169 */ be_nested_str_weak(__responder_priv), + /* K170 */ be_nested_str_weak(public_key), + /* K171 */ be_nested_str_weak(shared_key), + /* K172 */ be_nested_str_weak(B2), + /* K173 */ be_nested_str_weak(get_noc), + /* K174 */ be_nested_str_weak(get_icac), + /* K175 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K176 */ be_nested_str_weak(get_pk), + /* K177 */ be_nested_str_weak(Msg1), + /* K178 */ be_nested_str_weak(S2K_Info), + /* K179 */ be_nested_str_weak(TBEData2_Nonce), + /* K180 */ be_nested_str_weak(encrypt), + /* K181 */ be_nested_str_weak(Sigma2), + /* K182 */ be_nested_str_weak(responderEphPubKey), + /* K183 */ be_nested_str_weak(encrypted2), + /* K184 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), }; @@ -414,7 +415,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_PBKDFParamRequest), &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ + ( &(const binstruction[115]) { /* code */ 0xA40A1200, // 0000 IMPORT R2 K9 0x880C0300, // 0001 GETMBR R3 R1 K0 0x8810031D, // 0002 GETMBR R4 R1 K29 @@ -508,26 +509,28 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* 0x90167006, // 005A SETMBR R5 K56 R6 0x8818010D, // 005B GETMBR R6 R0 K13 0x88180D3A, // 005C GETMBR R6 R6 K58 - 0x90167206, // 005D SETMBR R5 K57 R6 - 0x8818010D, // 005E GETMBR R6 R0 K13 - 0x88180D3C, // 005F GETMBR R6 R6 K60 - 0x90167606, // 0060 SETMBR R5 K59 R6 - 0x8C180B3D, // 0061 GETMET R6 R5 K61 - 0x7C180200, // 0062 CALL R6 1 - 0x900E7C06, // 0063 SETMBR R3 K62 R6 - 0x8C1C033F, // 0064 GETMET R7 R1 K63 - 0x54260020, // 0065 LDINT R9 33 - 0x50280200, // 0066 LDBOOL R10 1 0 - 0x7C1C0600, // 0067 CALL R7 3 - 0x8C200F40, // 0068 GETMET R8 R7 K64 - 0x5C280C00, // 0069 MOVE R10 R6 - 0x7C200400, // 006A CALL R8 2 - 0x88240141, // 006B GETMBR R9 R0 K65 - 0x8C241342, // 006C GETMET R9 R9 K66 - 0x5C2C0E00, // 006D MOVE R11 R7 - 0x7C240400, // 006E CALL R9 2 - 0x50240200, // 006F LDBOOL R9 1 0 - 0x80041200, // 0070 RET 1 R9 + 0x88180D3B, // 005D GETMBR R6 R6 K59 + 0x90167206, // 005E SETMBR R5 K57 R6 + 0x8818010D, // 005F GETMBR R6 R0 K13 + 0x88180D3A, // 0060 GETMBR R6 R6 K58 + 0x88180D3D, // 0061 GETMBR R6 R6 K61 + 0x90167806, // 0062 SETMBR R5 K60 R6 + 0x8C180B3E, // 0063 GETMET R6 R5 K62 + 0x7C180200, // 0064 CALL R6 1 + 0x900E7E06, // 0065 SETMBR R3 K63 R6 + 0x8C1C0340, // 0066 GETMET R7 R1 K64 + 0x54260020, // 0067 LDINT R9 33 + 0x50280200, // 0068 LDBOOL R10 1 0 + 0x7C1C0600, // 0069 CALL R7 3 + 0x8C200F41, // 006A GETMET R8 R7 K65 + 0x5C280C00, // 006B MOVE R10 R6 + 0x7C200400, // 006C CALL R8 2 + 0x88240142, // 006D GETMBR R9 R0 K66 + 0x8C241343, // 006E GETMET R9 R9 K67 + 0x5C2C0E00, // 006F MOVE R11 R7 + 0x7C240400, // 0070 CALL R9 2 + 0x50240200, // 0071 LDBOOL R9 1 0 + 0x80041200, // 0072 RET 1 R9 }) ) ); @@ -551,29 +554,29 @@ be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name be_str_weak(send_status_report), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x8C18033F, // 0000 GETMET R6 R1 K63 + 0x8C180340, // 0000 GETMET R6 R1 K64 0x5422003F, // 0001 LDINT R8 64 0x5C240A00, // 0002 MOVE R9 R5 0x7C180600, // 0003 CALL R6 3 0x601C0015, // 0004 GETGBL R7 G21 0x7C1C0000, // 0005 CALL R7 0 - 0x8C200F43, // 0006 GETMET R8 R7 K67 + 0x8C200F44, // 0006 GETMET R8 R7 K68 0x5C280400, // 0007 MOVE R10 R2 0x582C0022, // 0008 LDCONST R11 K34 0x7C200600, // 0009 CALL R8 3 - 0x8C200F43, // 000A GETMET R8 R7 K67 + 0x8C200F44, // 000A GETMET R8 R7 K68 0x5C280600, // 000B MOVE R10 R3 0x542E0003, // 000C LDINT R11 4 0x7C200600, // 000D CALL R8 3 - 0x8C200F43, // 000E GETMET R8 R7 K67 + 0x8C200F44, // 000E GETMET R8 R7 K68 0x5C280800, // 000F MOVE R10 R4 0x542E0003, // 0010 LDINT R11 4 0x7C200600, // 0011 CALL R8 3 - 0x8C200D40, // 0012 GETMET R8 R6 K64 + 0x8C200D41, // 0012 GETMET R8 R6 K65 0x5C280E00, // 0013 MOVE R10 R7 0x7C200400, // 0014 CALL R8 2 - 0x88240141, // 0015 GETMBR R9 R0 K65 - 0x8C241342, // 0016 GETMET R9 R9 K66 + 0x88240142, // 0015 GETMBR R9 R0 K66 + 0x8C241343, // 0016 GETMET R9 R9 K67 0x5C2C0C00, // 0017 MOVE R11 R6 0x7C240400, // 0018 CALL R9 2 0x80000000, // 0019 RET 0 @@ -599,7 +602,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_Pake1), &be_const_str_solidified, - ( &(const binstruction[112]) { /* code */ + ( &(const binstruction[114]) { /* code */ 0xA40A1200, // 0000 IMPORT R2 K9 0x880C0300, // 0001 GETMBR R3 R1 K0 0x8810031D, // 0002 GETMBR R4 R1 K29 @@ -613,7 +616,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ 0x2010091F, // 000A NE R4 R4 K31 0x78120010, // 000B JMPF R4 #001D 0xB8120A00, // 000C GETNGBL R4 K5 - 0x58140044, // 000D LDCONST R5 K68 + 0x58140045, // 000D LDCONST R5 K69 0x58180008, // 000E LDCONST R6 K8 0x7C100400, // 000F CALL R4 2 0xB8120A00, // 0010 GETNGBL R4 K5 @@ -630,88 +633,90 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 0xB8124C00, // 001D GETNGBL R4 K38 - 0x8C100945, // 001E GETMET R4 R4 K69 + 0x8C100946, // 001E GETMET R4 R4 K70 0x7C100200, // 001F CALL R4 1 0x8C100928, // 0020 GETMET R4 R4 K40 0x88180301, // 0021 GETMBR R6 R1 K1 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 - 0x88140946, // 0024 GETMBR R5 R4 K70 - 0x8C180547, // 0025 GETMET R6 R2 K71 + 0x88140947, // 0024 GETMBR R5 R4 K71 + 0x8C180548, // 0025 GETMET R6 R2 K72 0x8820010D, // 0026 GETMBR R8 R0 K13 - 0x88201148, // 0027 GETMBR R8 R8 K72 - 0x4C240000, // 0028 LDNIL R9 - 0x8828010D, // 0029 GETMBR R10 R0 K13 - 0x88281549, // 002A GETMBR R10 R10 K73 - 0x7C180800, // 002B CALL R6 4 - 0x8C1C0537, // 002C GETMET R7 R2 K55 - 0x5426001F, // 002D LDINT R9 32 - 0x7C1C0400, // 002E CALL R7 2 - 0x8C200D4A, // 002F GETMET R8 R6 K74 - 0x5C280E00, // 0030 MOVE R10 R7 - 0x7C200400, // 0031 CALL R8 2 - 0x8C200D4B, // 0032 GETMET R8 R6 K75 - 0x5C280A00, // 0033 MOVE R10 R5 - 0x7C200400, // 0034 CALL R8 2 - 0x8C20054C, // 0035 GETMET R8 R2 K76 - 0x7C200200, // 0036 CALL R8 1 - 0x8C241116, // 0037 GETMET R9 R8 K22 - 0x602C0015, // 0038 GETGBL R11 G21 - 0x7C2C0000, // 0039 CALL R11 0 - 0x8C2C174D, // 003A GETMET R11 R11 K77 - 0x8834014E, // 003B GETMBR R13 R0 K78 - 0x7C2C0400, // 003C CALL R11 2 - 0x7C240400, // 003D CALL R9 2 - 0x8C241116, // 003E GETMET R9 R8 K22 - 0x882C072A, // 003F GETMBR R11 R3 K42 - 0x7C240400, // 0040 CALL R9 2 - 0x8C241116, // 0041 GETMET R9 R8 K22 - 0x882C073E, // 0042 GETMBR R11 R3 K62 - 0x7C240400, // 0043 CALL R9 2 - 0x8C241117, // 0044 GETMET R9 R8 K23 - 0x7C240200, // 0045 CALL R9 1 - 0x901A8C05, // 0046 SETMBR R6 K70 R5 - 0x8C280D4F, // 0047 GETMET R10 R6 K79 - 0x5C301200, // 0048 MOVE R12 R9 - 0x7C280400, // 0049 CALL R10 2 - 0x8C280D50, // 004A GETMET R10 R6 K80 - 0x50300200, // 004B LDBOOL R12 1 0 - 0x7C280400, // 004C CALL R10 2 - 0xB82A4C00, // 004D GETNGBL R10 K38 - 0x8C281551, // 004E GETMET R10 R10 K81 - 0x7C280200, // 004F CALL R10 1 - 0x882C0D52, // 0050 GETMBR R11 R6 K82 - 0x902AA40B, // 0051 SETMBR R10 K82 R11 + 0x8820113A, // 0027 GETMBR R8 R8 K58 + 0x88201149, // 0028 GETMBR R8 R8 K73 + 0x4C240000, // 0029 LDNIL R9 + 0x8828010D, // 002A GETMBR R10 R0 K13 + 0x8828153A, // 002B GETMBR R10 R10 K58 + 0x8828154A, // 002C GETMBR R10 R10 K74 + 0x7C180800, // 002D CALL R6 4 + 0x8C1C0537, // 002E GETMET R7 R2 K55 + 0x5426001F, // 002F LDINT R9 32 + 0x7C1C0400, // 0030 CALL R7 2 + 0x8C200D4B, // 0031 GETMET R8 R6 K75 + 0x5C280E00, // 0032 MOVE R10 R7 + 0x7C200400, // 0033 CALL R8 2 + 0x8C200D4C, // 0034 GETMET R8 R6 K76 + 0x5C280A00, // 0035 MOVE R10 R5 + 0x7C200400, // 0036 CALL R8 2 + 0x8C20054D, // 0037 GETMET R8 R2 K77 + 0x7C200200, // 0038 CALL R8 1 + 0x8C241116, // 0039 GETMET R9 R8 K22 + 0x602C0015, // 003A GETGBL R11 G21 + 0x7C2C0000, // 003B CALL R11 0 + 0x8C2C174E, // 003C GETMET R11 R11 K78 + 0x8834014F, // 003D GETMBR R13 R0 K79 + 0x7C2C0400, // 003E CALL R11 2 + 0x7C240400, // 003F CALL R9 2 + 0x8C241116, // 0040 GETMET R9 R8 K22 + 0x882C072A, // 0041 GETMBR R11 R3 K42 + 0x7C240400, // 0042 CALL R9 2 + 0x8C241116, // 0043 GETMET R9 R8 K22 + 0x882C073F, // 0044 GETMBR R11 R3 K63 + 0x7C240400, // 0045 CALL R9 2 + 0x8C241117, // 0046 GETMET R9 R8 K23 + 0x7C240200, // 0047 CALL R9 1 + 0x901A8E05, // 0048 SETMBR R6 K71 R5 + 0x8C280D50, // 0049 GETMET R10 R6 K80 + 0x5C301200, // 004A MOVE R12 R9 + 0x7C280400, // 004B CALL R10 2 + 0x8C280D51, // 004C GETMET R10 R6 K81 + 0x50300200, // 004D LDBOOL R12 1 0 + 0x7C280400, // 004E CALL R10 2 + 0xB82A4C00, // 004F GETNGBL R10 K38 + 0x8C281552, // 0050 GETMET R10 R10 K82 + 0x7C280200, // 0051 CALL R10 1 0x882C0D53, // 0052 GETMBR R11 R6 K83 0x902AA60B, // 0053 SETMBR R10 K83 R11 - 0x8C2C153D, // 0054 GETMET R11 R10 K61 - 0x7C2C0200, // 0055 CALL R11 1 - 0x88300D55, // 0056 GETMBR R12 R6 K85 - 0x900EA80C, // 0057 SETMBR R3 K84 R12 - 0x88300D57, // 0058 GETMBR R12 R6 K87 - 0x900EAC0C, // 0059 SETMBR R3 K86 R12 - 0x8C30033F, // 005A GETMET R12 R1 K63 - 0x543A0022, // 005B LDINT R14 35 - 0x503C0200, // 005C LDBOOL R15 1 0 - 0x7C300600, // 005D CALL R12 3 - 0x8C341940, // 005E GETMET R13 R12 K64 - 0x5C3C1600, // 005F MOVE R15 R11 - 0x7C340400, // 0060 CALL R13 2 - 0xB83A0A00, // 0061 GETNGBL R14 K5 - 0x603C0018, // 0062 GETGBL R15 G24 - 0x58400058, // 0063 LDCONST R16 K88 - 0x8844072F, // 0064 GETMBR R17 R3 K47 - 0x88480759, // 0065 GETMBR R18 R3 K89 - 0x884C075A, // 0066 GETMBR R19 R3 K90 - 0x7C3C0800, // 0067 CALL R15 4 - 0x58400022, // 0068 LDCONST R16 K34 - 0x7C380400, // 0069 CALL R14 2 - 0x88380141, // 006A GETMBR R14 R0 K65 - 0x8C381D42, // 006B GETMET R14 R14 K66 - 0x5C401800, // 006C MOVE R16 R12 - 0x7C380400, // 006D CALL R14 2 - 0x50380200, // 006E LDBOOL R14 1 0 - 0x80041C00, // 006F RET 1 R14 + 0x882C0D54, // 0054 GETMBR R11 R6 K84 + 0x902AA80B, // 0055 SETMBR R10 K84 R11 + 0x8C2C153E, // 0056 GETMET R11 R10 K62 + 0x7C2C0200, // 0057 CALL R11 1 + 0x88300D56, // 0058 GETMBR R12 R6 K86 + 0x900EAA0C, // 0059 SETMBR R3 K85 R12 + 0x88300D58, // 005A GETMBR R12 R6 K88 + 0x900EAE0C, // 005B SETMBR R3 K87 R12 + 0x8C300340, // 005C GETMET R12 R1 K64 + 0x543A0022, // 005D LDINT R14 35 + 0x503C0200, // 005E LDBOOL R15 1 0 + 0x7C300600, // 005F CALL R12 3 + 0x8C341941, // 0060 GETMET R13 R12 K65 + 0x5C3C1600, // 0061 MOVE R15 R11 + 0x7C340400, // 0062 CALL R13 2 + 0xB83A0A00, // 0063 GETNGBL R14 K5 + 0x603C0018, // 0064 GETGBL R15 G24 + 0x58400059, // 0065 LDCONST R16 K89 + 0x8844072F, // 0066 GETMBR R17 R3 K47 + 0x8848075A, // 0067 GETMBR R18 R3 K90 + 0x884C075B, // 0068 GETMBR R19 R3 K91 + 0x7C3C0800, // 0069 CALL R15 4 + 0x58400022, // 006A LDCONST R16 K34 + 0x7C380400, // 006B CALL R14 2 + 0x88380142, // 006C GETMBR R14 R0 K66 + 0x8C381D43, // 006D GETMET R14 R14 K67 + 0x5C401800, // 006E MOVE R16 R12 + 0x7C380400, // 006F CALL R14 2 + 0x50380200, // 0070 LDBOOL R14 1 0 + 0x80041C00, // 0071 RET 1 R14 }) ) ); @@ -736,7 +741,7 @@ be_local_closure(class_Matter_Commisioning_Context_init, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0xA40A1200, // 0000 IMPORT R2 K9 - 0x90028201, // 0001 SETMBR R0 K65 R1 + 0x90028401, // 0001 SETMBR R0 K66 R1 0x880C030D, // 0002 GETMBR R3 R1 K13 0x90021A03, // 0003 SETMBR R0 K13 R3 0x80000000, // 0004 RET 0 @@ -776,7 +781,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x2010091F, // 000A NE R4 R4 K31 0x78120010, // 000B JMPF R4 #001D 0xB8120A00, // 000C GETNGBL R4 K5 - 0x5814005B, // 000D LDCONST R5 K91 + 0x5814005C, // 000D LDCONST R5 K92 0x58180008, // 000E LDCONST R6 K8 0x7C100400, // 000F CALL R4 2 0xB8120A00, // 0010 GETNGBL R4 K5 @@ -793,18 +798,18 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 0xB8124C00, // 001D GETNGBL R4 K38 - 0x8C10095C, // 001E GETMET R4 R4 K92 + 0x8C10095D, // 001E GETMET R4 R4 K93 0x7C100200, // 001F CALL R4 1 0x8C100928, // 0020 GETMET R4 R4 K40 0x88180301, // 0021 GETMBR R6 R1 K1 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 - 0x88140955, // 0024 GETMBR R5 R4 K85 - 0x88180754, // 0025 GETMBR R6 R3 K84 + 0x88140956, // 0024 GETMBR R5 R4 K86 + 0x88180755, // 0025 GETMBR R6 R3 K85 0x20180A06, // 0026 NE R6 R5 R6 0x781A0010, // 0027 JMPF R6 #0039 0xB81A0A00, // 0028 GETNGBL R6 K5 - 0x581C005D, // 0029 LDCONST R7 K93 + 0x581C005E, // 0029 LDCONST R7 K94 0x58200008, // 002A LDCONST R8 K8 0x7C180400, // 002B CALL R6 2 0xB81A0A00, // 002C GETNGBL R6 K5 @@ -821,18 +826,18 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x50180000, // 0037 LDBOOL R6 0 0 0x80040C00, // 0038 RET 1 R6 0xB81A1400, // 0039 GETNGBL R6 K10 - 0x8C180D5E, // 003A GETMET R6 R6 K94 + 0x8C180D5F, // 003A GETMET R6 R6 K95 0x7C180200, // 003B CALL R6 1 - 0x8C1C055F, // 003C GETMET R7 R2 K95 + 0x8C1C0560, // 003C GETMET R7 R2 K96 0x7C1C0200, // 003D CALL R7 1 - 0x8C1C0F60, // 003E GETMET R7 R7 K96 - 0x88240756, // 003F GETMBR R9 R3 K86 + 0x8C1C0F61, // 003E GETMET R7 R7 K97 + 0x88240757, // 003F GETMBR R9 R3 K87 0x60280015, // 0040 GETGBL R10 G21 0x7C280000, // 0041 CALL R10 0 0x602C0015, // 0042 GETGBL R11 G21 0x7C2C0000, // 0043 CALL R11 0 - 0x8C2C174D, // 0044 GETMET R11 R11 K77 - 0x88340161, // 0045 GETMBR R13 R0 K97 + 0x8C2C174E, // 0044 GETMET R11 R11 K78 + 0x88340162, // 0045 GETMBR R13 R0 K98 0x7C2C0400, // 0046 CALL R11 2 0x5432002F, // 0047 LDINT R12 48 0x7C1C0A00, // 0048 CALL R7 5 @@ -854,7 +859,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x5840001F, // 0058 LDCONST R16 K31 0x50440000, // 0059 LDBOOL R17 0 0 0x7C2C0C00, // 005A CALL R11 6 - 0x8C2C0162, // 005B GETMET R11 R0 K98 + 0x8C2C0163, // 005B GETMET R11 R0 K99 0x8834072F, // 005C GETMBR R13 R3 K47 0x8838072D, // 005D GETMBR R14 R3 K45 0x5C3C1000, // 005E MOVE R15 R8 @@ -913,31 +918,31 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x80040600, // 0017 RET 1 R3 0x880C0300, // 0018 GETMBR R3 R1 K0 0xB8124C00, // 0019 GETNGBL R4 K38 - 0x8C100963, // 001A GETMET R4 R4 K99 + 0x8C100964, // 001A GETMET R4 R4 K100 0x7C100200, // 001B CALL R4 1 0x8C100928, // 001C GETMET R4 R4 K40 0x88180301, // 001D GETMBR R6 R1 K1 0x881C0302, // 001E GETMBR R7 R1 K2 0x7C100600, // 001F CALL R4 3 - 0x8C14054C, // 0020 GETMET R5 R2 K76 + 0x8C14054D, // 0020 GETMET R5 R2 K77 0x7C140200, // 0021 CALL R5 1 0x8C140B16, // 0022 GETMET R5 R5 K22 0x881C072A, // 0023 GETMBR R7 R3 K42 0x7C140400, // 0024 CALL R5 2 0x8C140B16, // 0025 GETMET R5 R5 K22 - 0x881C073E, // 0026 GETMBR R7 R3 K62 + 0x881C073F, // 0026 GETMBR R7 R3 K63 0x7C140400, // 0027 CALL R5 2 0x8C140B17, // 0028 GETMET R5 R5 K23 0x7C140200, // 0029 CALL R5 1 0x60180015, // 002A GETGBL R6 G21 0x7C180000, // 002B CALL R6 0 - 0x8C180D4D, // 002C GETMET R6 R6 K77 - 0x88200164, // 002D GETMBR R8 R0 K100 + 0x8C180D4E, // 002C GETMET R6 R6 K78 + 0x88200165, // 002D GETMBR R8 R0 K101 0x7C180400, // 002E CALL R6 2 - 0x8C1C055F, // 002F GETMET R7 R2 K95 + 0x8C1C0560, // 002F GETMET R7 R2 K96 0x7C1C0200, // 0030 CALL R7 1 - 0x8C1C0F60, // 0031 GETMET R7 R7 K96 - 0x88240765, // 0032 GETMBR R9 R3 K101 + 0x8C1C0F61, // 0031 GETMET R7 R7 K97 + 0x88240766, // 0032 GETMBR R9 R3 K102 0x8C280714, // 0033 GETMET R10 R3 K20 0x7C280200, // 0034 CALL R10 1 0x00281405, // 0035 ADD R10 R10 R5 @@ -946,18 +951,18 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x7C1C0A00, // 0038 CALL R7 5 0x5421FFEE, // 0039 LDINT R8 -17 0x40223E08, // 003A CONNECT R8 K31 R8 - 0x88240966, // 003B GETMBR R9 R4 K102 + 0x88240967, // 003B GETMBR R9 R4 K103 0x94201208, // 003C GETIDX R8 R9 R8 0x5429FFEF, // 003D LDINT R10 -16 0x40281503, // 003E CONNECT R10 R10 K3 - 0x882C0966, // 003F GETMBR R11 R4 K102 + 0x882C0967, // 003F GETMBR R11 R4 K103 0x9424160A, // 0040 GETIDX R9 R11 R10 - 0x8C300567, // 0041 GETMET R12 R2 K103 + 0x8C300568, // 0041 GETMET R12 R2 K104 0x5C380E00, // 0042 MOVE R14 R7 0x603C0015, // 0043 GETGBL R15 G21 0x7C3C0000, // 0044 CALL R15 0 - 0x8C3C1F4D, // 0045 GETMET R15 R15 K77 - 0x88440168, // 0046 GETMBR R17 R0 K104 + 0x8C3C1F4E, // 0045 GETMET R15 R15 K78 + 0x88440169, // 0046 GETMBR R17 R0 K105 0x7C3C0400, // 0047 CALL R15 2 0x60400015, // 0048 GETGBL R16 G21 0x7C400000, // 0049 CALL R16 0 @@ -967,16 +972,16 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x544A000F, // 004D LDINT R18 16 0x7C300C00, // 004E CALL R12 6 0x5C281800, // 004F MOVE R10 R12 - 0x8C301569, // 0050 GETMET R12 R10 K105 + 0x8C30156A, // 0050 GETMET R12 R10 K106 0x5C381000, // 0051 MOVE R14 R8 0x7C300400, // 0052 CALL R12 2 0x5C2C1800, // 0053 MOVE R11 R12 - 0x8C30156A, // 0054 GETMET R12 R10 K106 + 0x8C30156B, // 0054 GETMET R12 R10 K107 0x7C300200, // 0055 CALL R12 1 0x20341809, // 0056 NE R13 R12 R9 0x78360010, // 0057 JMPF R13 #0069 0xB8360A00, // 0058 GETNGBL R13 K5 - 0x5838006B, // 0059 LDCONST R14 K107 + 0x5838006C, // 0059 LDCONST R14 K108 0x583C0008, // 005A LDCONST R15 K8 0x7C340400, // 005B CALL R13 2 0xB8360A00, // 005C GETNGBL R13 K5 @@ -993,86 +998,86 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x50340000, // 0067 LDBOOL R13 0 0 0x80041A00, // 0068 RET 1 R13 0xB8364C00, // 0069 GETNGBL R13 K38 - 0x88341B6C, // 006A GETMBR R13 R13 K108 + 0x88341B6D, // 006A GETMBR R13 R13 K109 0x8C341B28, // 006B GETMET R13 R13 K40 0x5C3C1600, // 006C MOVE R15 R11 0x7C340400, // 006D CALL R13 2 - 0x8C381B6D, // 006E GETMET R14 R13 K109 + 0x8C381B6E, // 006E GETMET R14 R13 K110 0x58400025, // 006F LDCONST R16 K37 0x7C380400, // 0070 CALL R14 2 - 0x8C3C1B6D, // 0071 GETMET R15 R13 K109 + 0x8C3C1B6E, // 0071 GETMET R15 R13 K110 0x58440022, // 0072 LDCONST R17 K34 0x7C3C0400, // 0073 CALL R15 2 - 0x8C401B6D, // 0074 GETMET R16 R13 K109 + 0x8C401B6E, // 0074 GETMET R16 R13 K110 0x58480008, // 0075 LDCONST R18 K8 0x7C400400, // 0076 CALL R16 2 0xB8464C00, // 0077 GETNGBL R17 K38 - 0x8844236C, // 0078 GETMBR R17 R17 K108 + 0x8844236D, // 0078 GETMBR R17 R17 K109 0x8C442328, // 0079 GETMET R17 R17 K40 0x5C4C1C00, // 007A MOVE R19 R14 0x7C440400, // 007B CALL R17 2 - 0x8C48236D, // 007C GETMET R18 R17 K109 + 0x8C48236E, // 007C GETMET R18 R17 K110 0x54520008, // 007D LDINT R20 9 0x7C480400, // 007E CALL R18 2 - 0x8C4C236E, // 007F GETMET R19 R17 K110 + 0x8C4C236F, // 007F GETMET R19 R17 K111 0x54560005, // 0080 LDINT R21 6 0x7C4C0400, // 0081 CALL R19 2 - 0x8C50276D, // 0082 GETMET R20 R19 K109 + 0x8C50276E, // 0082 GETMET R20 R19 K110 0x545A0010, // 0083 LDINT R22 17 0x7C500400, // 0084 CALL R20 2 0x60540004, // 0085 GETGBL R21 G4 0x5C582800, // 0086 MOVE R22 R20 0x7C540200, // 0087 CALL R21 1 - 0x1C542B6F, // 0088 EQ R21 R21 K111 + 0x1C542B70, // 0088 EQ R21 R21 K112 0x78560007, // 0089 JMPF R21 #0092 - 0xB856E200, // 008A GETNGBL R21 K113 - 0x8C542B72, // 008B GETMET R21 R21 K114 + 0xB856E400, // 008A GETNGBL R21 K114 + 0x8C542B73, // 008B GETMET R21 R21 K115 0x5C5C2800, // 008C MOVE R23 R20 0x7C540400, // 008D CALL R21 2 - 0x8C542B73, // 008E GETMET R21 R21 K115 + 0x8C542B74, // 008E GETMET R21 R21 K116 0x7C540200, // 008F CALL R21 1 - 0x900EE015, // 0090 SETMBR R3 K112 R21 + 0x900EE215, // 0090 SETMBR R3 K113 R21 0x70020002, // 0091 JMP #0095 - 0x8C542973, // 0092 GETMET R21 R20 K115 + 0x8C542974, // 0092 GETMET R21 R20 K116 0x7C540200, // 0093 CALL R21 1 - 0x900EE015, // 0094 SETMBR R3 K112 R21 + 0x900EE215, // 0094 SETMBR R3 K113 R21 0xB8564C00, // 0095 GETNGBL R21 K38 - 0x88542B6C, // 0096 GETMBR R21 R21 K108 - 0x8C542B74, // 0097 GETMET R21 R21 K116 + 0x88542B6D, // 0096 GETMBR R21 R21 K109 + 0x8C542B75, // 0097 GETMET R21 R21 K117 0x7C540200, // 0098 CALL R21 1 - 0x8C582B75, // 0099 GETMET R22 R21 K117 + 0x8C582B76, // 0099 GETMET R22 R21 K118 0x58600025, // 009A LDCONST R24 K37 0xB8664C00, // 009B GETNGBL R25 K38 - 0x8864336C, // 009C GETMBR R25 R25 K108 - 0x88643376, // 009D GETMBR R25 R25 K118 + 0x8864336D, // 009C GETMBR R25 R25 K109 + 0x88643377, // 009D GETMBR R25 R25 K119 0x5C681C00, // 009E MOVE R26 R14 0x7C580800, // 009F CALL R22 4 - 0x8C582B75, // 00A0 GETMET R22 R21 K117 + 0x8C582B76, // 00A0 GETMET R22 R21 K118 0x58600022, // 00A1 LDCONST R24 K34 0xB8664C00, // 00A2 GETNGBL R25 K38 - 0x8864336C, // 00A3 GETMBR R25 R25 K108 - 0x88643376, // 00A4 GETMBR R25 R25 K118 + 0x8864336D, // 00A3 GETMBR R25 R25 K109 + 0x88643377, // 00A4 GETMBR R25 R25 K119 0x5C681E00, // 00A5 MOVE R26 R15 0x7C580800, // 00A6 CALL R22 4 - 0x8C582B75, // 00A7 GETMET R22 R21 K117 + 0x8C582B76, // 00A7 GETMET R22 R21 K118 0x58600008, // 00A8 LDCONST R24 K8 0xB8664C00, // 00A9 GETNGBL R25 K38 - 0x8864336C, // 00AA GETMBR R25 R25 K108 - 0x88643376, // 00AB GETMBR R25 R25 K118 - 0x88680777, // 00AC GETMBR R26 R3 K119 + 0x8864336D, // 00AA GETMBR R25 R25 K109 + 0x88643377, // 00AB GETMBR R25 R25 K119 + 0x88680778, // 00AC GETMBR R26 R3 K120 0x7C580800, // 00AD CALL R22 4 - 0x8C582B75, // 00AE GETMET R22 R21 K117 + 0x8C582B76, // 00AE GETMET R22 R21 K118 0x54620003, // 00AF LDINT R24 4 0xB8664C00, // 00B0 GETNGBL R25 K38 - 0x8864336C, // 00B1 GETMBR R25 R25 K108 - 0x88643376, // 00B2 GETMBR R25 R25 K118 - 0x88680778, // 00B3 GETMBR R26 R3 K120 + 0x8864336D, // 00B1 GETMBR R25 R25 K109 + 0x88643377, // 00B2 GETMBR R25 R25 K119 + 0x88680779, // 00B3 GETMBR R26 R3 K121 0x7C580800, // 00B4 CALL R22 4 - 0x8C582B3D, // 00B5 GETMET R22 R21 K61 + 0x8C582B3E, // 00B5 GETMET R22 R21 K62 0x7C580200, // 00B6 CALL R22 1 - 0x8C5C0579, // 00B7 GETMET R23 R2 K121 + 0x8C5C057A, // 00B7 GETMET R23 R2 K122 0x7C5C0200, // 00B8 CALL R23 1 - 0x8C5C2F7A, // 00B9 GETMET R23 R23 K122 + 0x8C5C2F7B, // 00B9 GETMET R23 R23 K123 0x5C642400, // 00BA MOVE R25 R18 0x5C682C00, // 00BB MOVE R26 R22 0x5C6C2000, // 00BC MOVE R27 R16 @@ -1080,28 +1085,28 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x5C602E00, // 00BE MOVE R24 R23 0x74620008, // 00BF JMPT R24 #00C9 0xB8620A00, // 00C0 GETNGBL R24 K5 - 0x5864007B, // 00C1 LDCONST R25 K123 + 0x5864007C, // 00C1 LDCONST R25 K124 0x58680022, // 00C2 LDCONST R26 K34 0x7C600400, // 00C3 CALL R24 2 0xB8620A00, // 00C4 GETNGBL R24 K5 - 0x5864007C, // 00C5 LDCONST R25 K124 + 0x5864007D, // 00C5 LDCONST R25 K125 0x58680022, // 00C6 LDCONST R26 K34 0x7C600400, // 00C7 CALL R24 2 0x70020003, // 00C8 JMP #00CD 0xB8620A00, // 00C9 GETNGBL R24 K5 - 0x5864007D, // 00CA LDCONST R25 K125 + 0x5864007E, // 00CA LDCONST R25 K126 0x58680008, // 00CB LDCONST R26 K8 0x7C600400, // 00CC CALL R24 2 - 0x8C60054C, // 00CD GETMET R24 R2 K76 + 0x8C60054D, // 00CD GETMET R24 R2 K77 0x7C600200, // 00CE CALL R24 1 0x8C603116, // 00CF GETMET R24 R24 K22 0x8868072A, // 00D0 GETMBR R26 R3 K42 0x7C600400, // 00D1 CALL R24 2 0x8C603116, // 00D2 GETMET R24 R24 K22 - 0x8868073E, // 00D3 GETMBR R26 R3 K62 + 0x8868073F, // 00D3 GETMBR R26 R3 K63 0x7C600400, // 00D4 CALL R24 2 0x8C603116, // 00D5 GETMET R24 R24 K22 - 0x8868097E, // 00D6 GETMBR R26 R4 K126 + 0x8868097F, // 00D6 GETMBR R26 R4 K127 0x7C600400, // 00D7 CALL R24 2 0x8C603117, // 00D8 GETMET R24 R24 K23 0x7C600200, // 00D9 CALL R24 1 @@ -1109,18 +1114,18 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x4C600000, // 00DB LDNIL R24 0x900E5418, // 00DC SETMBR R3 K42 R24 0x4C600000, // 00DD LDNIL R24 - 0x900E7C18, // 00DE SETMBR R3 K62 R24 - 0x8C60055F, // 00DF GETMET R24 R2 K95 + 0x900E7E18, // 00DE SETMBR R3 K63 R24 + 0x8C600560, // 00DF GETMET R24 R2 K96 0x7C600200, // 00E0 CALL R24 1 - 0x8C603160, // 00E1 GETMET R24 R24 K96 - 0x88680765, // 00E2 GETMBR R26 R3 K101 + 0x8C603161, // 00E1 GETMET R24 R24 K97 + 0x88680766, // 00E2 GETMBR R26 R3 K102 0x8C6C0714, // 00E3 GETMET R27 R3 K20 0x7C6C0200, // 00E4 CALL R27 1 0x006C3605, // 00E5 ADD R27 R27 R5 0x60700015, // 00E6 GETGBL R28 G21 0x7C700000, // 00E7 CALL R28 0 - 0x8C70394D, // 00E8 GETMET R28 R28 K77 - 0x88780161, // 00E9 GETMBR R30 R0 K97 + 0x8C70394E, // 00E8 GETMET R28 R28 K78 + 0x88780162, // 00E9 GETMBR R30 R0 K98 0x7C700400, // 00EA CALL R28 2 0x5476002F, // 00EB LDINT R29 48 0x7C600A00, // 00EC CALL R24 5 @@ -1136,7 +1141,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x406C361C, // 00F6 CONNECT R27 R27 R28 0x946C301B, // 00F7 GETIDX R27 R24 R27 0xB8721400, // 00F8 GETNGBL R28 K10 - 0x8C70395E, // 00F9 GETMET R28 R28 K94 + 0x8C70395F, // 00F9 GETMET R28 R28 K95 0x7C700200, // 00FA CALL R28 1 0x8C740124, // 00FB GETMET R29 R0 K36 0x5C7C0200, // 00FC MOVE R31 R1 @@ -1145,7 +1150,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x5888001F, // 00FF LDCONST R34 K31 0x508C0200, // 0100 LDBOOL R35 1 0 0x7C740C00, // 0101 CALL R29 6 - 0x8C74077F, // 0102 GETMET R29 R3 K127 + 0x8C740780, // 0102 GETMET R29 R3 K128 0x7C740200, // 0103 CALL R29 1 0x8C74071C, // 0104 GETMET R29 R3 K28 0x5C7C3200, // 0105 MOVE R31 R25 @@ -1153,17 +1158,17 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x5C843600, // 0107 MOVE R33 R27 0x5C883800, // 0108 MOVE R34 R28 0x7C740A00, // 0109 CALL R29 5 - 0x900F011F, // 010A SETMBR R3 K128 K31 - 0x8C740781, // 010B GETMET R29 R3 K129 + 0x900F031F, // 010A SETMBR R3 K129 K31 + 0x8C740782, // 010B GETMET R29 R3 K130 0x7C740200, // 010C CALL R29 1 - 0x8C740782, // 010D GETMET R29 R3 K130 + 0x8C740783, // 010D GETMET R29 R3 K131 0x507C0200, // 010E LDBOOL R31 1 0 0x7C740400, // 010F CALL R29 2 - 0x8C740783, // 0110 GETMET R29 R3 K131 + 0x8C740784, // 0110 GETMET R29 R3 K132 0x7C740200, // 0111 CALL R29 1 - 0x8C740784, // 0112 GETMET R29 R3 K132 + 0x8C740785, // 0112 GETMET R29 R3 K133 0x7C740200, // 0113 CALL R29 1 - 0x8C740785, // 0114 GETMET R29 R3 K133 + 0x8C740786, // 0114 GETMET R29 R3 K134 0x7C740200, // 0115 CALL R29 1 0x50740200, // 0116 LDBOOL R29 1 0 0x80043A00, // 0117 RET 1 R29 @@ -1189,95 +1194,96 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[88]) { /* code */ + ( &(const binstruction[89]) { /* code */ 0x8808010D, // 0000 GETMBR R2 R0 K13 - 0x8C080586, // 0001 GETMET R2 R2 K134 - 0x7C080200, // 0002 CALL R2 1 - 0x740A000D, // 0003 JMPT R2 #0012 - 0x8808031D, // 0004 GETMBR R2 R1 K29 - 0x540E001F, // 0005 LDINT R3 32 - 0x28080403, // 0006 GE R2 R2 R3 - 0x780A0009, // 0007 JMPF R2 #0012 - 0x8808031D, // 0008 GETMBR R2 R1 K29 - 0x540E0023, // 0009 LDINT R3 36 - 0x18080403, // 000A LE R2 R2 R3 - 0x780A0005, // 000B JMPF R2 #0012 - 0xB80A0A00, // 000C GETNGBL R2 K5 - 0x580C0087, // 000D LDCONST R3 K135 - 0x58100022, // 000E LDCONST R4 K34 - 0x7C080400, // 000F CALL R2 2 - 0x50080000, // 0010 LDBOOL R2 0 0 - 0x80040400, // 0011 RET 1 R2 - 0x8808031D, // 0012 GETMBR R2 R1 K29 - 0x540E000F, // 0013 LDINT R3 16 - 0x1C080403, // 0014 EQ R2 R2 R3 - 0x780A0000, // 0015 JMPF R2 #0017 - 0x7002003E, // 0016 JMP #0056 - 0x8808031D, // 0017 GETMBR R2 R1 K29 - 0x540E001F, // 0018 LDINT R3 32 - 0x1C080403, // 0019 EQ R2 R2 R3 - 0x780A0004, // 001A JMPF R2 #0020 - 0x8C080188, // 001B GETMET R2 R0 K136 - 0x5C100200, // 001C MOVE R4 R1 - 0x7C080400, // 001D CALL R2 2 - 0x80040400, // 001E RET 1 R2 - 0x70020035, // 001F JMP #0056 - 0x8808031D, // 0020 GETMBR R2 R1 K29 - 0x540E0021, // 0021 LDINT R3 34 - 0x1C080403, // 0022 EQ R2 R2 R3 - 0x780A0004, // 0023 JMPF R2 #0029 - 0x8C080189, // 0024 GETMET R2 R0 K137 - 0x5C100200, // 0025 MOVE R4 R1 - 0x7C080400, // 0026 CALL R2 2 - 0x80040400, // 0027 RET 1 R2 - 0x7002002C, // 0028 JMP #0056 - 0x8808031D, // 0029 GETMBR R2 R1 K29 - 0x540E0023, // 002A LDINT R3 36 - 0x1C080403, // 002B EQ R2 R2 R3 - 0x780A0004, // 002C JMPF R2 #0032 - 0x8C08018A, // 002D GETMET R2 R0 K138 - 0x5C100200, // 002E MOVE R4 R1 - 0x7C080400, // 002F CALL R2 2 - 0x80040400, // 0030 RET 1 R2 - 0x70020023, // 0031 JMP #0056 - 0x8808031D, // 0032 GETMBR R2 R1 K29 - 0x540E002F, // 0033 LDINT R3 48 - 0x1C080403, // 0034 EQ R2 R2 R3 - 0x780A0004, // 0035 JMPF R2 #003B - 0x8C08018B, // 0036 GETMET R2 R0 K139 - 0x5C100200, // 0037 MOVE R4 R1 - 0x7C080400, // 0038 CALL R2 2 - 0x80040400, // 0039 RET 1 R2 - 0x7002001A, // 003A JMP #0056 - 0x8808031D, // 003B GETMBR R2 R1 K29 - 0x540E0031, // 003C LDINT R3 50 - 0x1C080403, // 003D EQ R2 R2 R3 - 0x780A0004, // 003E JMPF R2 #0044 - 0x8C08018C, // 003F GETMET R2 R0 K140 - 0x5C100200, // 0040 MOVE R4 R1 - 0x7C080400, // 0041 CALL R2 2 - 0x80040400, // 0042 RET 1 R2 - 0x70020011, // 0043 JMP #0056 - 0x8808031D, // 0044 GETMBR R2 R1 K29 - 0x540E003F, // 0045 LDINT R3 64 - 0x1C080403, // 0046 EQ R2 R2 R3 - 0x780A0004, // 0047 JMPF R2 #004D - 0x8C08018D, // 0048 GETMET R2 R0 K141 - 0x5C100200, // 0049 MOVE R4 R1 - 0x7C080400, // 004A CALL R2 2 - 0x80040400, // 004B RET 1 R2 - 0x70020008, // 004C JMP #0056 - 0xB80A0A00, // 004D GETNGBL R2 K5 - 0x600C0018, // 004E GETGBL R3 G24 - 0x5810008E, // 004F LDCONST R4 K142 - 0x8814031D, // 0050 GETMBR R5 R1 K29 - 0x7C0C0400, // 0051 CALL R3 2 - 0x58100022, // 0052 LDCONST R4 K34 - 0x7C080400, // 0053 CALL R2 2 - 0x50080000, // 0054 LDBOOL R2 0 0 - 0x80040400, // 0055 RET 1 R2 - 0x50080000, // 0056 LDBOOL R2 0 0 - 0x80040400, // 0057 RET 1 R2 + 0x8808053A, // 0001 GETMBR R2 R2 K58 + 0x8C080587, // 0002 GETMET R2 R2 K135 + 0x7C080200, // 0003 CALL R2 1 + 0x740A000D, // 0004 JMPT R2 #0013 + 0x8808031D, // 0005 GETMBR R2 R1 K29 + 0x540E001F, // 0006 LDINT R3 32 + 0x28080403, // 0007 GE R2 R2 R3 + 0x780A0009, // 0008 JMPF R2 #0013 + 0x8808031D, // 0009 GETMBR R2 R1 K29 + 0x540E0023, // 000A LDINT R3 36 + 0x18080403, // 000B LE R2 R2 R3 + 0x780A0005, // 000C JMPF R2 #0013 + 0xB80A0A00, // 000D GETNGBL R2 K5 + 0x580C0088, // 000E LDCONST R3 K136 + 0x58100022, // 000F LDCONST R4 K34 + 0x7C080400, // 0010 CALL R2 2 + 0x50080000, // 0011 LDBOOL R2 0 0 + 0x80040400, // 0012 RET 1 R2 + 0x8808031D, // 0013 GETMBR R2 R1 K29 + 0x540E000F, // 0014 LDINT R3 16 + 0x1C080403, // 0015 EQ R2 R2 R3 + 0x780A0000, // 0016 JMPF R2 #0018 + 0x7002003E, // 0017 JMP #0057 + 0x8808031D, // 0018 GETMBR R2 R1 K29 + 0x540E001F, // 0019 LDINT R3 32 + 0x1C080403, // 001A EQ R2 R2 R3 + 0x780A0004, // 001B JMPF R2 #0021 + 0x8C080189, // 001C GETMET R2 R0 K137 + 0x5C100200, // 001D MOVE R4 R1 + 0x7C080400, // 001E CALL R2 2 + 0x80040400, // 001F RET 1 R2 + 0x70020035, // 0020 JMP #0057 + 0x8808031D, // 0021 GETMBR R2 R1 K29 + 0x540E0021, // 0022 LDINT R3 34 + 0x1C080403, // 0023 EQ R2 R2 R3 + 0x780A0004, // 0024 JMPF R2 #002A + 0x8C08018A, // 0025 GETMET R2 R0 K138 + 0x5C100200, // 0026 MOVE R4 R1 + 0x7C080400, // 0027 CALL R2 2 + 0x80040400, // 0028 RET 1 R2 + 0x7002002C, // 0029 JMP #0057 + 0x8808031D, // 002A GETMBR R2 R1 K29 + 0x540E0023, // 002B LDINT R3 36 + 0x1C080403, // 002C EQ R2 R2 R3 + 0x780A0004, // 002D JMPF R2 #0033 + 0x8C08018B, // 002E GETMET R2 R0 K139 + 0x5C100200, // 002F MOVE R4 R1 + 0x7C080400, // 0030 CALL R2 2 + 0x80040400, // 0031 RET 1 R2 + 0x70020023, // 0032 JMP #0057 + 0x8808031D, // 0033 GETMBR R2 R1 K29 + 0x540E002F, // 0034 LDINT R3 48 + 0x1C080403, // 0035 EQ R2 R2 R3 + 0x780A0004, // 0036 JMPF R2 #003C + 0x8C08018C, // 0037 GETMET R2 R0 K140 + 0x5C100200, // 0038 MOVE R4 R1 + 0x7C080400, // 0039 CALL R2 2 + 0x80040400, // 003A RET 1 R2 + 0x7002001A, // 003B JMP #0057 + 0x8808031D, // 003C GETMBR R2 R1 K29 + 0x540E0031, // 003D LDINT R3 50 + 0x1C080403, // 003E EQ R2 R2 R3 + 0x780A0004, // 003F JMPF R2 #0045 + 0x8C08018D, // 0040 GETMET R2 R0 K141 + 0x5C100200, // 0041 MOVE R4 R1 + 0x7C080400, // 0042 CALL R2 2 + 0x80040400, // 0043 RET 1 R2 + 0x70020011, // 0044 JMP #0057 + 0x8808031D, // 0045 GETMBR R2 R1 K29 + 0x540E003F, // 0046 LDINT R3 64 + 0x1C080403, // 0047 EQ R2 R2 R3 + 0x780A0004, // 0048 JMPF R2 #004E + 0x8C08018E, // 0049 GETMET R2 R0 K142 + 0x5C100200, // 004A MOVE R4 R1 + 0x7C080400, // 004B CALL R2 2 + 0x80040400, // 004C RET 1 R2 + 0x70020008, // 004D JMP #0057 + 0xB80A0A00, // 004E GETNGBL R2 K5 + 0x600C0018, // 004F GETGBL R3 G24 + 0x5810008F, // 0050 LDCONST R4 K143 + 0x8814031D, // 0051 GETMBR R5 R1 K29 + 0x7C0C0400, // 0052 CALL R3 2 + 0x58100022, // 0053 LDCONST R4 K34 + 0x7C080400, // 0054 CALL R2 2 + 0x50080000, // 0055 LDBOOL R2 0 0 + 0x80040400, // 0056 RET 1 R2 + 0x50080000, // 0057 LDBOOL R2 0 0 + 0x80040400, // 0058 RET 1 R2 }) ) ); @@ -1327,19 +1333,19 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x50100000, // 0017 LDBOOL R4 0 0 0x80040800, // 0018 RET 1 R4 0xB8124C00, // 0019 GETNGBL R4 K38 - 0x8C10098F, // 001A GETMET R4 R4 K143 + 0x8C100990, // 001A GETMET R4 R4 K144 0x7C100200, // 001B CALL R4 1 0x8C100928, // 001C GETMET R4 R4 K40 0x88180301, // 001D GETMBR R6 R1 K1 0x881C0302, // 001E GETMBR R7 R1 K2 0x7C100600, // 001F CALL R4 3 - 0x88140990, // 0020 GETMBR R5 R4 K144 - 0x900EEE05, // 0021 SETMBR R3 K119 R5 - 0x88140991, // 0022 GETMBR R5 R4 K145 + 0x88140991, // 0020 GETMBR R5 R4 K145 + 0x900EF005, // 0021 SETMBR R3 K120 R5 + 0x88140992, // 0022 GETMBR R5 R4 K146 0x4C180000, // 0023 LDNIL R6 0x20140A06, // 0024 NE R5 R5 R6 0x78160003, // 0025 JMPF R5 #002A - 0x88140992, // 0026 GETMBR R5 R4 K146 + 0x88140993, // 0026 GETMBR R5 R4 K147 0x4C180000, // 0027 LDNIL R6 0x20140A06, // 0028 NE R5 R5 R6 0x74160000, // 0029 JMPT R5 #002B @@ -1349,60 +1355,60 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x78160014, // 002D JMPF R5 #0043 0x881C010D, // 002E GETMBR R7 R0 K13 0x881C0F0E, // 002F GETMBR R7 R7 K14 - 0x8C1C0F93, // 0030 GETMET R7 R7 K147 - 0x88240991, // 0031 GETMBR R9 R4 K145 + 0x8C1C0F94, // 0030 GETMET R7 R7 K148 + 0x88240992, // 0031 GETMBR R9 R4 K146 0x7C1C0400, // 0032 CALL R7 2 0x5C180E00, // 0033 MOVE R6 R7 0x4C1C0000, // 0034 LDNIL R7 0x1C1C0C07, // 0035 EQ R7 R6 R7 0x741E0003, // 0036 JMPT R7 #003B - 0x881C0D94, // 0037 GETMBR R7 R6 K148 + 0x881C0D95, // 0037 GETMBR R7 R6 K149 0x4C200000, // 0038 LDNIL R8 0x1C1C0E08, // 0039 EQ R7 R7 R8 0x781E0007, // 003A JMPF R7 #0043 0xB81E0A00, // 003B GETNGBL R7 K5 0x60200018, // 003C GETGBL R8 G24 - 0x58240095, // 003D LDCONST R9 K149 - 0x88280991, // 003E GETMBR R10 R4 K145 + 0x58240096, // 003D LDCONST R9 K150 + 0x88280992, // 003E GETMBR R10 R4 K146 0x7C200400, // 003F CALL R8 2 0x58240008, // 0040 LDCONST R9 K8 0x7C1C0400, // 0041 CALL R7 2 0x50140000, // 0042 LDBOOL R5 0 0 0x781600C3, // 0043 JMPF R5 #0108 0xB81E0A00, // 0044 GETNGBL R7 K5 - 0x58200096, // 0045 LDCONST R8 K150 + 0x58200097, // 0045 LDCONST R8 K151 0x58240008, // 0046 LDCONST R9 K8 0x7C1C0400, // 0047 CALL R7 2 0x881C0935, // 0048 GETMBR R7 R4 K53 - 0x88200991, // 0049 GETMBR R8 R4 K145 + 0x88200992, // 0049 GETMBR R8 R4 K146 0x001C0E08, // 004A ADD R7 R7 R8 0x60200015, // 004B GETGBL R8 G21 0x7C200000, // 004C CALL R8 0 - 0x8C20114D, // 004D GETMET R8 R8 K77 - 0x58280097, // 004E LDCONST R10 K151 + 0x8C20114E, // 004D GETMET R8 R8 K78 + 0x58280098, // 004E LDCONST R10 K152 0x7C200400, // 004F CALL R8 2 - 0x8C24055F, // 0050 GETMET R9 R2 K95 + 0x8C240560, // 0050 GETMET R9 R2 K96 0x7C240200, // 0051 CALL R9 1 - 0x8C241360, // 0052 GETMET R9 R9 K96 - 0x882C0D65, // 0053 GETMBR R11 R6 K101 + 0x8C241361, // 0052 GETMET R9 R9 K97 + 0x882C0D66, // 0053 GETMBR R11 R6 K102 0x5C300E00, // 0054 MOVE R12 R7 0x5C341000, // 0055 MOVE R13 R8 0x543A000F, // 0056 LDINT R14 16 0x7C240A00, // 0057 CALL R9 5 0x60280015, // 0058 GETGBL R10 G21 0x7C280000, // 0059 CALL R10 0 - 0x8C28154D, // 005A GETMET R10 R10 K77 - 0x58300098, // 005B LDCONST R12 K152 + 0x8C28154E, // 005A GETMET R10 R10 K78 + 0x58300099, // 005B LDCONST R12 K153 0x7C280400, // 005C CALL R10 2 0x542DFFEE, // 005D LDINT R11 -17 0x402E3E0B, // 005E CONNECT R11 K31 R11 - 0x88300992, // 005F GETMBR R12 R4 K146 + 0x88300993, // 005F GETMBR R12 R4 K147 0x942C180B, // 0060 GETIDX R11 R12 R11 0x5435FFEF, // 0061 LDINT R13 -16 0x40341B03, // 0062 CONNECT R13 R13 K3 - 0x88380992, // 0063 GETMBR R14 R4 K146 + 0x88380993, // 0063 GETMBR R14 R4 K147 0x94301C0D, // 0064 GETIDX R12 R14 R13 - 0x8C3C0567, // 0065 GETMET R15 R2 K103 + 0x8C3C0568, // 0065 GETMET R15 R2 K104 0x5C441200, // 0066 MOVE R17 R9 0x5C481400, // 0067 MOVE R18 R10 0x604C0015, // 0068 GETGBL R19 G21 @@ -1413,19 +1419,19 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x5456000F, // 006D LDINT R21 16 0x7C3C0C00, // 006E CALL R15 6 0x5C341E00, // 006F MOVE R13 R15 - 0x8C3C1B69, // 0070 GETMET R15 R13 K105 + 0x8C3C1B6A, // 0070 GETMET R15 R13 K106 0x5C441600, // 0071 MOVE R17 R11 0x7C3C0400, // 0072 CALL R15 2 0x5C381E00, // 0073 MOVE R14 R15 - 0x8C3C1B6A, // 0074 GETMET R15 R13 K106 + 0x8C3C1B6B, // 0074 GETMET R15 R13 K107 0x7C3C0200, // 0075 CALL R15 1 0x1C40180F, // 0076 EQ R16 R12 R15 0x7842008A, // 0077 JMPF R16 #0103 - 0x88400D94, // 0078 GETMBR R16 R6 K148 - 0x900F2810, // 0079 SETMBR R3 K148 R16 - 0x8840039A, // 007A GETMBR R16 R1 K154 - 0x900F3210, // 007B SETMBR R3 K153 R16 - 0x8C40079B, // 007C GETMET R16 R3 K155 + 0x88400D95, // 0078 GETMBR R16 R6 K149 + 0x900F2A10, // 0079 SETMBR R3 K149 R16 + 0x8840039B, // 007A GETMBR R16 R1 K155 + 0x900F3410, // 007B SETMBR R3 K154 R16 + 0x8C40079C, // 007C GETMET R16 R3 K156 0x7C400200, // 007D CALL R16 1 0x8840092E, // 007E GETMBR R16 R4 K46 0x900E5A10, // 007F SETMBR R3 K45 R16 @@ -1443,62 +1449,62 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x7C440800, // 008B CALL R17 4 0x58480008, // 008C LDCONST R18 K8 0x7C400400, // 008D CALL R16 2 - 0x88400D65, // 008E GETMBR R16 R6 K101 - 0x900ECA10, // 008F SETMBR R3 K101 R16 + 0x88400D66, // 008E GETMBR R16 R6 K102 + 0x900ECC10, // 008F SETMBR R3 K102 R16 0x8C400537, // 0090 GETMET R16 R2 K55 0x544A000F, // 0091 LDINT R18 16 0x7C400400, // 0092 CALL R16 2 - 0x900F3810, // 0093 SETMBR R3 K156 R16 + 0x900F3A10, // 0093 SETMBR R3 K157 R16 0x60400015, // 0094 GETGBL R16 G21 0x7C400000, // 0095 CALL R16 0 - 0x8C40214D, // 0096 GETMET R16 R16 K77 - 0x5848009D, // 0097 LDCONST R18 K157 + 0x8C40214E, // 0096 GETMET R16 R16 K78 + 0x5848009E, // 0097 LDCONST R18 K158 0x7C400400, // 0098 CALL R16 2 0x88440935, // 0099 GETMBR R17 R4 K53 - 0x8848079C, // 009A GETMBR R18 R3 K156 + 0x8848079D, // 009A GETMBR R18 R3 K157 0x00442212, // 009B ADD R17 R17 R18 - 0x8C48055F, // 009C GETMET R18 R2 K95 + 0x8C480560, // 009C GETMET R18 R2 K96 0x7C480200, // 009D CALL R18 1 - 0x8C482560, // 009E GETMET R18 R18 K96 - 0x88500765, // 009F GETMBR R20 R3 K101 + 0x8C482561, // 009E GETMET R18 R18 K97 + 0x88500766, // 009F GETMBR R20 R3 K102 0x5C542200, // 00A0 MOVE R21 R17 0x5C582000, // 00A1 MOVE R22 R16 0x545E000F, // 00A2 LDINT R23 16 0x7C480A00, // 00A3 CALL R18 5 - 0x8C4C0567, // 00A4 GETMET R19 R2 K103 + 0x8C4C0568, // 00A4 GETMET R19 R2 K104 0x5C542400, // 00A5 MOVE R21 R18 0x60580015, // 00A6 GETGBL R22 G21 0x7C580000, // 00A7 CALL R22 0 - 0x8C582D4D, // 00A8 GETMET R22 R22 K77 - 0x5860009E, // 00A9 LDCONST R24 K158 + 0x8C582D4E, // 00A8 GETMET R22 R22 K78 + 0x5860009F, // 00A9 LDCONST R24 K159 0x7C580400, // 00AA CALL R22 2 0x605C0015, // 00AB GETGBL R23 G21 0x7C5C0000, // 00AC CALL R23 0 0x5860001F, // 00AD LDCONST R24 K31 0x5466000F, // 00AE LDINT R25 16 0x7C4C0C00, // 00AF CALL R19 6 - 0x8C50276A, // 00B0 GETMET R20 R19 K106 + 0x8C50276B, // 00B0 GETMET R20 R19 K107 0x7C500200, // 00B1 CALL R20 1 0xB8564C00, // 00B2 GETNGBL R21 K38 - 0x8C542B9F, // 00B3 GETMET R21 R21 K159 + 0x8C542BA0, // 00B3 GETMET R21 R21 K160 0x7C540200, // 00B4 CALL R21 1 - 0x8858079C, // 00B5 GETMBR R22 R3 K156 - 0x90572216, // 00B6 SETMBR R21 K145 R22 - 0x90574014, // 00B7 SETMBR R21 K160 R20 + 0x8858079D, // 00B5 GETMBR R22 R3 K157 + 0x90572416, // 00B6 SETMBR R21 K146 R22 + 0x90574214, // 00B7 SETMBR R21 K161 R20 0x8858072F, // 00B8 GETMBR R22 R3 K47 - 0x90574216, // 00B9 SETMBR R21 K161 R22 + 0x90574416, // 00B9 SETMBR R21 K162 R22 0x88580935, // 00BA GETMBR R22 R4 K53 - 0x885C0D9C, // 00BB GETMBR R23 R6 K156 + 0x885C0D9D, // 00BB GETMBR R23 R6 K157 0x00582C17, // 00BC ADD R22 R22 R23 - 0x8C5C055F, // 00BD GETMET R23 R2 K95 + 0x8C5C0560, // 00BD GETMET R23 R2 K96 0x7C5C0200, // 00BE CALL R23 1 - 0x8C5C2F60, // 00BF GETMET R23 R23 K96 - 0x88640765, // 00C0 GETMBR R25 R3 K101 + 0x8C5C2F61, // 00BF GETMET R23 R23 K97 + 0x88640766, // 00C0 GETMBR R25 R3 K102 0x5C682C00, // 00C1 MOVE R26 R22 0x606C0015, // 00C2 GETGBL R27 G21 0x7C6C0000, // 00C3 CALL R27 0 - 0x8C6C374D, // 00C4 GETMET R27 R27 K77 - 0x587400A2, // 00C5 LDCONST R29 K162 + 0x8C6C374E, // 00C4 GETMET R27 R27 K78 + 0x587400A3, // 00C5 LDCONST R29 K163 0x7C6C0400, // 00C6 CALL R27 2 0x5472002F, // 00C7 LDINT R28 48 0x7C5C0A00, // 00C8 CALL R23 5 @@ -1514,24 +1520,24 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x4068341B, // 00D2 CONNECT R26 R26 R27 0x94682E1A, // 00D3 GETIDX R26 R23 R26 0xB86E1400, // 00D4 GETNGBL R27 K10 - 0x8C6C375E, // 00D5 GETMET R27 R27 K94 + 0x8C6C375F, // 00D5 GETMET R27 R27 K95 0x7C6C0200, // 00D6 CALL R27 1 - 0x8C702B3D, // 00D7 GETMET R28 R21 K61 + 0x8C702B3E, // 00D7 GETMET R28 R21 K62 0x7C700200, // 00D8 CALL R28 1 0x4C740000, // 00D9 LDNIL R29 0x900E541D, // 00DA SETMBR R3 K42 R29 - 0x8C74033F, // 00DB GETMET R29 R1 K63 + 0x8C740340, // 00DB GETMET R29 R1 K64 0x547E0032, // 00DC LDINT R31 51 0x50800200, // 00DD LDBOOL R32 1 0 0x7C740600, // 00DE CALL R29 3 - 0x8C783B40, // 00DF GETMET R30 R29 K64 + 0x8C783B41, // 00DF GETMET R30 R29 K65 0x5C803800, // 00E0 MOVE R32 R28 0x7C780400, // 00E1 CALL R30 2 - 0x887C0141, // 00E2 GETMBR R31 R0 K65 - 0x8C7C3F42, // 00E3 GETMET R31 R31 K66 + 0x887C0142, // 00E2 GETMBR R31 R0 K66 + 0x8C7C3F43, // 00E3 GETMET R31 R31 K67 0x5C843A00, // 00E4 MOVE R33 R29 0x7C7C0400, // 00E5 CALL R31 2 - 0x8C7C077F, // 00E6 GETMET R31 R3 K127 + 0x8C7C0780, // 00E6 GETMET R31 R3 K128 0x7C7C0200, // 00E7 CALL R31 1 0x8C7C071C, // 00E8 GETMET R31 R3 K28 0x5C843000, // 00E9 MOVE R33 R24 @@ -1539,48 +1545,48 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x5C8C3400, // 00EB MOVE R35 R26 0x5C903600, // 00EC MOVE R36 R27 0x7C7C0A00, // 00ED CALL R31 5 - 0x887C0D70, // 00EE GETMBR R31 R6 K112 - 0x900EE01F, // 00EF SETMBR R3 K112 R31 - 0x900F011F, // 00F0 SETMBR R3 K128 K31 - 0x8C7C0781, // 00F1 GETMET R31 R3 K129 + 0x887C0D71, // 00EE GETMBR R31 R6 K113 + 0x900EE21F, // 00EF SETMBR R3 K113 R31 + 0x900F031F, // 00F0 SETMBR R3 K129 K31 + 0x8C7C0782, // 00F1 GETMET R31 R3 K130 0x7C7C0200, // 00F2 CALL R31 1 - 0x8C7C0782, // 00F3 GETMET R31 R3 K130 + 0x8C7C0783, // 00F3 GETMET R31 R3 K131 0x50840200, // 00F4 LDBOOL R33 1 0 0x7C7C0400, // 00F5 CALL R31 2 - 0x8C7C0783, // 00F6 GETMET R31 R3 K131 + 0x8C7C0784, // 00F6 GETMET R31 R3 K132 0x7C7C0200, // 00F7 CALL R31 1 - 0x8C7C0784, // 00F8 GETMET R31 R3 K132 + 0x8C7C0785, // 00F8 GETMET R31 R3 K133 0x7C7C0200, // 00F9 CALL R31 1 - 0x8C7C0785, // 00FA GETMET R31 R3 K133 + 0x8C7C0786, // 00FA GETMET R31 R3 K134 0x7C7C0200, // 00FB CALL R31 1 0xB87E0A00, // 00FC GETNGBL R31 K5 - 0x588000A3, // 00FD LDCONST R32 K163 + 0x588000A4, // 00FD LDCONST R32 K164 0x58840008, // 00FE LDCONST R33 K8 0x7C7C0400, // 00FF CALL R31 2 0x507C0200, // 0100 LDBOOL R31 1 0 0x80043E00, // 0101 RET 1 R31 0x70020004, // 0102 JMP #0108 0xB8420A00, // 0103 GETNGBL R16 K5 - 0x584400A4, // 0104 LDCONST R17 K164 + 0x584400A5, // 0104 LDCONST R17 K165 0x58480008, // 0105 LDCONST R18 K8 0x7C400400, // 0106 CALL R16 2 0x50140000, // 0107 LDBOOL R5 0 0 0x5C1C0A00, // 0108 MOVE R7 R5 0x741E00E4, // 0109 JMPT R7 #01EF - 0x8C1C01A5, // 010A GETMET R7 R0 K165 - 0x882409A6, // 010B GETMBR R9 R4 K166 + 0x8C1C01A6, // 010A GETMET R7 R0 K166 + 0x882409A7, // 010B GETMBR R9 R4 K167 0x88280935, // 010C GETMBR R10 R4 K53 0x7C1C0600, // 010D CALL R7 3 - 0x900F2807, // 010E SETMBR R3 K148 R7 + 0x900F2A07, // 010E SETMBR R3 K149 R7 0x4C200000, // 010F LDNIL R8 0x1C200608, // 0110 EQ R8 R3 R8 0x74220003, // 0111 JMPT R8 #0116 - 0x88200794, // 0112 GETMBR R8 R3 K148 + 0x88200795, // 0112 GETMBR R8 R3 K149 0x4C240000, // 0113 LDNIL R9 0x1C201009, // 0114 EQ R8 R8 R9 0x7822000C, // 0115 JMPF R8 #0123 0xB8220A00, // 0116 GETNGBL R8 K5 - 0x582400A7, // 0117 LDCONST R9 K167 + 0x582400A8, // 0117 LDCONST R9 K168 0x58280008, // 0118 LDCONST R10 K8 0x7C200400, // 0119 CALL R8 2 0x8C200124, // 011A GETMET R8 R0 K36 @@ -1592,9 +1598,9 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x7C200C00, // 0120 CALL R8 6 0x50200000, // 0121 LDBOOL R8 0 0 0x80041000, // 0122 RET 1 R8 - 0x8820039A, // 0123 GETMBR R8 R1 K154 - 0x900F3208, // 0124 SETMBR R3 K153 R8 - 0x8C20079B, // 0125 GETMET R8 R3 K155 + 0x8820039B, // 0123 GETMBR R8 R1 K155 + 0x900F3408, // 0124 SETMBR R3 K154 R8 + 0x8C20079C, // 0125 GETMET R8 R3 K156 0x7C200200, // 0126 CALL R8 1 0x8820092E, // 0127 GETMBR R8 R4 K46 0x900E5A08, // 0128 SETMBR R3 K45 R8 @@ -1615,106 +1621,106 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x8C200537, // 0137 GETMET R8 R2 K55 0x542A000F, // 0138 LDINT R10 16 0x7C200400, // 0139 CALL R8 2 - 0x900F3808, // 013A SETMBR R3 K156 R8 + 0x900F3A08, // 013A SETMBR R3 K157 R8 0x8C200537, // 013B GETMET R8 R2 K55 0x542A001F, // 013C LDINT R10 32 0x7C200400, // 013D CALL R8 2 - 0x900F5008, // 013E SETMBR R3 K168 R8 - 0x8C200579, // 013F GETMET R8 R2 K121 + 0x900F5208, // 013E SETMBR R3 K169 R8 + 0x8C20057A, // 013F GETMET R8 R2 K122 0x7C200200, // 0140 CALL R8 1 - 0x8C2011A9, // 0141 GETMET R8 R8 K169 - 0x882807A8, // 0142 GETMBR R10 R3 K168 + 0x8C2011AA, // 0141 GETMET R8 R8 K170 + 0x882807A9, // 0142 GETMBR R10 R3 K169 0x7C200400, // 0143 CALL R8 2 - 0x900EF008, // 0144 SETMBR R3 K120 R8 + 0x900EF208, // 0144 SETMBR R3 K121 R8 0x8C200537, // 0145 GETMET R8 R2 K55 0x542A001F, // 0146 LDINT R10 32 0x7C200400, // 0147 CALL R8 2 - 0x8C240579, // 0148 GETMET R9 R2 K121 + 0x8C24057A, // 0148 GETMET R9 R2 K122 0x7C240200, // 0149 CALL R9 1 - 0x8C2413AA, // 014A GETMET R9 R9 K170 - 0x882C07A8, // 014B GETMBR R11 R3 K168 - 0x88300990, // 014C GETMBR R12 R4 K144 + 0x8C2413AB, // 014A GETMET R9 R9 K171 + 0x882C07A9, // 014B GETMBR R11 R3 K169 + 0x88300991, // 014C GETMBR R12 R4 K145 0x7C240600, // 014D CALL R9 3 - 0x900ECA09, // 014E SETMBR R3 K101 R9 + 0x900ECC09, // 014E SETMBR R3 K102 R9 0xB8264C00, // 014F GETNGBL R9 K38 - 0x8824136C, // 0150 GETMBR R9 R9 K108 - 0x8C241374, // 0151 GETMET R9 R9 K116 + 0x8824136D, // 0150 GETMBR R9 R9 K109 + 0x8C241375, // 0151 GETMET R9 R9 K117 0x7C240200, // 0152 CALL R9 1 - 0x8C281375, // 0153 GETMET R10 R9 K117 + 0x8C281376, // 0153 GETMET R10 R9 K118 0x58300025, // 0154 LDCONST R12 K37 0xB8364C00, // 0155 GETNGBL R13 K38 - 0x88341B6C, // 0156 GETMBR R13 R13 K108 - 0x88341BAB, // 0157 GETMBR R13 R13 K171 - 0x8C380FAC, // 0158 GETMET R14 R7 K172 + 0x88341B6D, // 0156 GETMBR R13 R13 K109 + 0x88341BAC, // 0157 GETMBR R13 R13 K172 + 0x8C380FAD, // 0158 GETMET R14 R7 K173 0x7C380200, // 0159 CALL R14 1 0x7C280800, // 015A CALL R10 4 - 0x8C281375, // 015B GETMET R10 R9 K117 + 0x8C281376, // 015B GETMET R10 R9 K118 0x58300022, // 015C LDCONST R12 K34 0xB8364C00, // 015D GETNGBL R13 K38 - 0x88341B6C, // 015E GETMBR R13 R13 K108 - 0x88341BAB, // 015F GETMBR R13 R13 K171 - 0x8C380FAD, // 0160 GETMET R14 R7 K173 + 0x88341B6D, // 015E GETMBR R13 R13 K109 + 0x88341BAC, // 015F GETMBR R13 R13 K172 + 0x8C380FAE, // 0160 GETMET R14 R7 K174 0x7C380200, // 0161 CALL R14 1 0x7C280800, // 0162 CALL R10 4 - 0x8C281375, // 0163 GETMET R10 R9 K117 + 0x8C281376, // 0163 GETMET R10 R9 K118 0x58300008, // 0164 LDCONST R12 K8 0xB8364C00, // 0165 GETNGBL R13 K38 - 0x88341B6C, // 0166 GETMBR R13 R13 K108 - 0x88341BAB, // 0167 GETMBR R13 R13 K171 - 0x88380778, // 0168 GETMBR R14 R3 K120 + 0x88341B6D, // 0166 GETMBR R13 R13 K109 + 0x88341BAC, // 0167 GETMBR R13 R13 K172 + 0x88380779, // 0168 GETMBR R14 R3 K121 0x7C280800, // 0169 CALL R10 4 - 0x8C281375, // 016A GETMET R10 R9 K117 + 0x8C281376, // 016A GETMET R10 R9 K118 0x54320003, // 016B LDINT R12 4 0xB8364C00, // 016C GETNGBL R13 K38 - 0x88341B6C, // 016D GETMBR R13 R13 K108 - 0x88341BAB, // 016E GETMBR R13 R13 K171 - 0x88380990, // 016F GETMBR R14 R4 K144 + 0x88341B6D, // 016D GETMBR R13 R13 K109 + 0x88341BAC, // 016E GETMBR R13 R13 K172 + 0x88380991, // 016F GETMBR R14 R4 K145 0x7C280800, // 0170 CALL R10 4 - 0x8C280579, // 0171 GETMET R10 R2 K121 + 0x8C28057A, // 0171 GETMET R10 R2 K122 0x7C280200, // 0172 CALL R10 1 - 0x8C2815AE, // 0173 GETMET R10 R10 K174 - 0x8C300FAF, // 0174 GETMET R12 R7 K175 + 0x8C2815AF, // 0173 GETMET R10 R10 K175 + 0x8C300FB0, // 0174 GETMET R12 R7 K176 0x7C300200, // 0175 CALL R12 1 - 0x8C34133D, // 0176 GETMET R13 R9 K61 + 0x8C34133E, // 0176 GETMET R13 R9 K62 0x7C340200, // 0177 CALL R13 1 0x7C280600, // 0178 CALL R10 3 0xB82E4C00, // 0179 GETNGBL R11 K38 - 0x882C176C, // 017A GETMBR R11 R11 K108 - 0x8C2C1774, // 017B GETMET R11 R11 K116 + 0x882C176D, // 017A GETMBR R11 R11 K109 + 0x8C2C1775, // 017B GETMET R11 R11 K117 0x7C2C0200, // 017C CALL R11 1 - 0x8C301775, // 017D GETMET R12 R11 K117 + 0x8C301776, // 017D GETMET R12 R11 K118 0x58380025, // 017E LDCONST R14 K37 0xB83E4C00, // 017F GETNGBL R15 K38 - 0x883C1F6C, // 0180 GETMBR R15 R15 K108 - 0x883C1FAB, // 0181 GETMBR R15 R15 K171 - 0x8C400FAC, // 0182 GETMET R16 R7 K172 + 0x883C1F6D, // 0180 GETMBR R15 R15 K109 + 0x883C1FAC, // 0181 GETMBR R15 R15 K172 + 0x8C400FAD, // 0182 GETMET R16 R7 K173 0x7C400200, // 0183 CALL R16 1 0x7C300800, // 0184 CALL R12 4 - 0x8C301775, // 0185 GETMET R12 R11 K117 + 0x8C301776, // 0185 GETMET R12 R11 K118 0x58380022, // 0186 LDCONST R14 K34 0xB83E4C00, // 0187 GETNGBL R15 K38 - 0x883C1F6C, // 0188 GETMBR R15 R15 K108 - 0x883C1FAB, // 0189 GETMBR R15 R15 K171 - 0x8C400FAD, // 018A GETMET R16 R7 K173 + 0x883C1F6D, // 0188 GETMBR R15 R15 K109 + 0x883C1FAC, // 0189 GETMBR R15 R15 K172 + 0x8C400FAE, // 018A GETMET R16 R7 K174 0x7C400200, // 018B CALL R16 1 0x7C300800, // 018C CALL R12 4 - 0x8C301775, // 018D GETMET R12 R11 K117 + 0x8C301776, // 018D GETMET R12 R11 K118 0x58380008, // 018E LDCONST R14 K8 0xB83E4C00, // 018F GETNGBL R15 K38 - 0x883C1F6C, // 0190 GETMBR R15 R15 K108 - 0x883C1FAB, // 0191 GETMBR R15 R15 K171 + 0x883C1F6D, // 0190 GETMBR R15 R15 K109 + 0x883C1FAC, // 0191 GETMBR R15 R15 K172 0x5C401400, // 0192 MOVE R16 R10 0x7C300800, // 0193 CALL R12 4 - 0x8C301775, // 0194 GETMET R12 R11 K117 + 0x8C301776, // 0194 GETMET R12 R11 K118 0x543A0003, // 0195 LDINT R14 4 0xB83E4C00, // 0196 GETNGBL R15 K38 - 0x883C1F6C, // 0197 GETMBR R15 R15 K108 - 0x883C1FAB, // 0198 GETMBR R15 R15 K171 - 0x8840079C, // 0199 GETMBR R16 R3 K156 + 0x883C1F6D, // 0197 GETMBR R15 R15 K109 + 0x883C1FAC, // 0198 GETMBR R15 R15 K172 + 0x8840079D, // 0199 GETMBR R16 R3 K157 0x7C300800, // 019A CALL R12 4 - 0x883009B0, // 019B GETMBR R12 R4 K176 + 0x883009B1, // 019B GETMBR R12 R4 K177 0x900E540C, // 019C SETMBR R3 K42 R12 - 0x8C30054C, // 019D GETMET R12 R2 K76 + 0x8C30054D, // 019D GETMET R12 R2 K77 0x7C300200, // 019E CALL R12 1 0x8C301916, // 019F GETMET R12 R12 K22 0x8838072A, // 01A0 GETMBR R14 R3 K42 @@ -1723,31 +1729,31 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x7C300200, // 01A3 CALL R12 1 0x60340015, // 01A4 GETGBL R13 G21 0x7C340000, // 01A5 CALL R13 0 - 0x8C341B4D, // 01A6 GETMET R13 R13 K77 - 0x883C01B1, // 01A7 GETMBR R15 R0 K177 + 0x8C341B4E, // 01A6 GETMET R13 R13 K78 + 0x883C01B2, // 01A7 GETMBR R15 R0 K178 0x7C340400, // 01A8 CALL R13 2 0x8C380F14, // 01A9 GETMET R14 R7 K20 0x7C380200, // 01AA CALL R14 1 0x00381C08, // 01AB ADD R14 R14 R8 - 0x883C0778, // 01AC GETMBR R15 R3 K120 + 0x883C0779, // 01AC GETMBR R15 R3 K121 0x00381C0F, // 01AD ADD R14 R14 R15 0x00381C0C, // 01AE ADD R14 R14 R12 - 0x8C3C055F, // 01AF GETMET R15 R2 K95 + 0x8C3C0560, // 01AF GETMET R15 R2 K96 0x7C3C0200, // 01B0 CALL R15 1 - 0x8C3C1F60, // 01B1 GETMET R15 R15 K96 - 0x88440765, // 01B2 GETMBR R17 R3 K101 + 0x8C3C1F61, // 01B1 GETMET R15 R15 K97 + 0x88440766, // 01B2 GETMBR R17 R3 K102 0x5C481C00, // 01B3 MOVE R18 R14 0x5C4C1A00, // 01B4 MOVE R19 R13 0x5452000F, // 01B5 LDINT R20 16 0x7C3C0A00, // 01B6 CALL R15 5 - 0x8C40173D, // 01B7 GETMET R16 R11 K61 + 0x8C40173E, // 01B7 GETMET R16 R11 K62 0x7C400200, // 01B8 CALL R16 1 - 0x8C440567, // 01B9 GETMET R17 R2 K103 + 0x8C440568, // 01B9 GETMET R17 R2 K104 0x5C4C1E00, // 01BA MOVE R19 R15 0x60500015, // 01BB GETGBL R20 G21 0x7C500000, // 01BC CALL R20 0 - 0x8C50294D, // 01BD GETMET R20 R20 K77 - 0x885801B2, // 01BE GETMBR R22 R0 K178 + 0x8C50294E, // 01BD GETMET R20 R20 K78 + 0x885801B3, // 01BE GETMBR R22 R0 K179 0x7C500400, // 01BF CALL R20 2 0x60540015, // 01C0 GETGBL R21 G21 0x7C540000, // 01C1 CALL R21 0 @@ -1756,42 +1762,42 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x7C580200, // 01C4 CALL R22 1 0x545E000F, // 01C5 LDINT R23 16 0x7C440C00, // 01C6 CALL R17 6 - 0x8C4823B3, // 01C7 GETMET R18 R17 K179 + 0x8C4823B4, // 01C7 GETMET R18 R17 K180 0x5C502000, // 01C8 MOVE R20 R16 0x7C480400, // 01C9 CALL R18 2 - 0x8C4C236A, // 01CA GETMET R19 R17 K106 + 0x8C4C236B, // 01CA GETMET R19 R17 K107 0x7C4C0200, // 01CB CALL R19 1 0x00482413, // 01CC ADD R18 R18 R19 0xB84E4C00, // 01CD GETNGBL R19 K38 - 0x8C4C27B4, // 01CE GETMET R19 R19 K180 + 0x8C4C27B5, // 01CE GETMET R19 R19 K181 0x7C4C0200, // 01CF CALL R19 1 0x904E6C08, // 01D0 SETMBR R19 K54 R8 0x8850072F, // 01D1 GETMBR R20 R3 K47 0x904E7014, // 01D2 SETMBR R19 K56 R20 - 0x88500778, // 01D3 GETMBR R20 R3 K120 - 0x904F6A14, // 01D4 SETMBR R19 K181 R20 - 0x904F6C12, // 01D5 SETMBR R19 K182 R18 - 0x8C50273D, // 01D6 GETMET R20 R19 K61 + 0x88500779, // 01D3 GETMBR R20 R3 K121 + 0x904F6C14, // 01D4 SETMBR R19 K182 R20 + 0x904F6E12, // 01D5 SETMBR R19 K183 R18 + 0x8C50273E, // 01D6 GETMET R20 R19 K62 0x7C500200, // 01D7 CALL R20 1 - 0x900E7C14, // 01D8 SETMBR R3 K62 R20 - 0x8C54033F, // 01D9 GETMET R21 R1 K63 + 0x900E7E14, // 01D8 SETMBR R3 K63 R20 + 0x8C540340, // 01D9 GETMET R21 R1 K64 0x545E0030, // 01DA LDINT R23 49 0x50600200, // 01DB LDBOOL R24 1 0 0x7C540600, // 01DC CALL R21 3 - 0x8C582B40, // 01DD GETMET R22 R21 K64 + 0x8C582B41, // 01DD GETMET R22 R21 K65 0x5C602800, // 01DE MOVE R24 R20 0x7C580400, // 01DF CALL R22 2 0xB85E0A00, // 01E0 GETNGBL R23 K5 0x60600018, // 01E1 GETGBL R24 G24 - 0x586400B7, // 01E2 LDCONST R25 K183 + 0x586400B8, // 01E2 LDCONST R25 K184 0x8868072F, // 01E3 GETMBR R26 R3 K47 - 0x886C0759, // 01E4 GETMBR R27 R3 K89 - 0x8870075A, // 01E5 GETMBR R28 R3 K90 + 0x886C075A, // 01E4 GETMBR R27 R3 K90 + 0x8870075B, // 01E5 GETMBR R28 R3 K91 0x7C600800, // 01E6 CALL R24 4 0x58640022, // 01E7 LDCONST R25 K34 0x7C5C0400, // 01E8 CALL R23 2 - 0x885C0141, // 01E9 GETMBR R23 R0 K65 - 0x8C5C2F42, // 01EA GETMET R23 R23 K66 + 0x885C0142, // 01E9 GETMBR R23 R0 K66 + 0x8C5C2F43, // 01EA GETMET R23 R23 K67 0x5C642A00, // 01EB MOVE R25 R21 0x7C5C0400, // 01EC CALL R23 2 0x505C0200, // 01ED LDBOOL R23 1 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index c6b837e1d..57aa70d09 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Root' ktab size: 172, total: 225 (saved 424 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Root[172] = { +// compact class 'Matter_Plugin_Root' ktab size: 173, total: 227 (saved 432 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Root[173] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -79,104 +79,105 @@ static const bvalue be_ktab_class_Matter_Plugin_Root[172] = { /* K71 */ be_nested_str_weak(_MAX_CASE), /* K72 */ be_nested_str_weak(count_active_fabrics), /* K73 */ be_nested_str_weak(_fabric), - /* K74 */ be_nested_str_weak(is_commissioning_open), - /* K75 */ be_nested_str_weak(is_root_commissioning_open), - /* K76 */ be_nested_str_weak(commissioning_admin_fabric), - /* K77 */ be_nested_str_weak(set_or_nil), - /* K78 */ be_nested_str_weak(Tasmota), - /* K79 */ be_nested_str_weak(VENDOR_ID), - /* K80 */ be_nested_str_weak(DeviceName), - /* K81 */ be_nested_str_weak(FriendlyName), - /* K82 */ be_nested_str_weak(FriendlyName1), - /* K83 */ be_nested_str_weak(XX), - /* K84 */ be_nested_str_weak(Status_X202), - /* K85 */ be_nested_str_weak(StatusFWR), - /* K86 */ be_nested_str_weak(Hardware), - /* K87 */ be_nested_str_weak(version), - /* K88 */ be_nested_str_weak(Version), - /* K89 */ be_nested_str_weak(_X28), - /* K90 */ be_nested_str_weak(locale), - /* K91 */ be_nested_str_weak(create_TLV), - /* K92 */ be_nested_str_weak(get_active_endpoints), - /* K93 */ be_nested_str_weak(disable_bridge_mode), - /* K94 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K95 */ be_nested_str_weak(read_attribute), - /* K96 */ be_nested_str_weak(int), - /* K97 */ be_nested_str_weak(attribute_updated), - /* K98 */ be_nested_str_weak(status), - /* K99 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K100 */ be_nested_str_weak(INVALID_ACTION), - /* K101 */ be_nested_str_weak(init), - /* K102 */ be_nested_str_weak(publish_event), - /* K103 */ be_nested_str_weak(EVENT_CRITICAL), - /* K104 */ be_nested_str_weak(Matter_TLV_item), - /* K105 */ be_nested_str_weak(crypto), - /* K106 */ be_nested_str_weak(command), - /* K107 */ be_nested_str_weak(fabric_completed), - /* K108 */ be_nested_str_weak(set_no_expiration), - /* K109 */ be_nested_str_weak(save), - /* K110 */ be_nested_str_weak(start_commissioning_complete_deferred), - /* K111 */ be_nested_str_weak(context_error), - /* K112 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), - /* K113 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K114 */ be_nested_str_weak(DAC_Cert_FFF1_8000), - /* K115 */ be_nested_str_weak(PAI_Cert_FFF1), - /* K116 */ be_nested_str_weak(CD_FFF1_8000), - /* K117 */ be_nested_str_weak(tlv2raw), - /* K118 */ be_nested_str_weak(get_ac), - /* K119 */ be_nested_str_weak(EC_P256), - /* K120 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K121 */ be_nested_str_weak(DAC_Priv_FFF1_8000), - /* K122 */ be_nested_str_weak(gen_CSR), - /* K123 */ be_nested_str_weak(set_temp_ca), - /* K124 */ be_nested_str_weak(SUCCESS), - /* K125 */ be_nested_str_weak(log), - /* K126 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), - /* K127 */ be_nested_str_weak(get_temp_ca), - /* K128 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), - /* K129 */ be_nested_str_weak(create_fabric), - /* K130 */ be_nested_str_weak(set_ca), - /* K131 */ be_nested_str_weak(set_noc_icac), - /* K132 */ be_nested_str_weak(set_ipk_epoch_key), - /* K133 */ be_nested_str_weak(set_admin_subject_vendor), - /* K134 */ be_nested_str_weak(set_pk), - /* K135 */ be_nested_str_weak(get_pk), - /* K136 */ be_nested_str_weak(findsub), - /* K137 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), - /* K138 */ be_nested_str_weak(fromu32), - /* K139 */ be_nested_str_weak(tobytes), - /* K140 */ be_nested_str_weak(get_temp_ca_pub), - /* K141 */ be_const_int(2147483647), - /* K142 */ be_nested_str_weak(fromstring), - /* K143 */ be_nested_str_weak(CompressedFabric), - /* K144 */ be_nested_str_weak(HKDF_SHA256), - /* K145 */ be_nested_str_weak(copy), - /* K146 */ be_nested_str_weak(reverse), - /* K147 */ be_nested_str_weak(derive), - /* K148 */ be_nested_str_weak(set_fabric_device), - /* K149 */ be_nested_str_weak(fabric_candidate), - /* K150 */ be_nested_str_weak(start_operational_discovery_deferred), - /* K151 */ be_nested_str_weak(is_PASE), - /* K152 */ be_nested_str_weak(set_expire_in_seconds), - /* K153 */ be_nested_str_weak(log_new_fabric), - /* K154 */ be_nested_str_weak(assign_fabric_index), - /* K155 */ be_nested_str_weak(set_fabric_label), - /* K156 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), - /* K157 */ be_nested_str_weak(get_fabric_id), - /* K158 */ be_nested_str_weak(tohex), - /* K159 */ be_nested_str_weak(fabric_index_X3A), - /* K160 */ be_nested_str_weak(mark_for_deletion), - /* K161 */ be_nested_str_weak(set_timer), - /* K162 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), - /* K163 */ be_nested_str_weak(_X29_X20not_X20found), - /* K164 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), - /* K165 */ be_nested_str_weak(INVALID_DATA_TYPE), - /* K166 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), - /* K167 */ be_nested_str_weak(start_basic_commissioning), - /* K168 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), - /* K169 */ be_nested_str_weak(start_root_basic_commissioning), - /* K170 */ be_nested_str_weak(stop_basic_commissioning), - /* K171 */ be_nested_str_weak(invoke_request), + /* K74 */ be_nested_str_weak(commissioning), + /* K75 */ be_nested_str_weak(is_commissioning_open), + /* K76 */ be_nested_str_weak(is_root_commissioning_open), + /* K77 */ be_nested_str_weak(commissioning_admin_fabric), + /* K78 */ be_nested_str_weak(set_or_nil), + /* K79 */ be_nested_str_weak(Tasmota), + /* K80 */ be_nested_str_weak(VENDOR_ID), + /* K81 */ be_nested_str_weak(DeviceName), + /* K82 */ be_nested_str_weak(FriendlyName), + /* K83 */ be_nested_str_weak(FriendlyName1), + /* K84 */ be_nested_str_weak(XX), + /* K85 */ be_nested_str_weak(Status_X202), + /* K86 */ be_nested_str_weak(StatusFWR), + /* K87 */ be_nested_str_weak(Hardware), + /* K88 */ be_nested_str_weak(version), + /* K89 */ be_nested_str_weak(Version), + /* K90 */ be_nested_str_weak(_X28), + /* K91 */ be_nested_str_weak(locale), + /* K92 */ be_nested_str_weak(create_TLV), + /* K93 */ be_nested_str_weak(get_active_endpoints), + /* K94 */ be_nested_str_weak(disable_bridge_mode), + /* K95 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K96 */ be_nested_str_weak(read_attribute), + /* K97 */ be_nested_str_weak(int), + /* K98 */ be_nested_str_weak(attribute_updated), + /* K99 */ be_nested_str_weak(status), + /* K100 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K101 */ be_nested_str_weak(INVALID_ACTION), + /* K102 */ be_nested_str_weak(init), + /* K103 */ be_nested_str_weak(publish_event), + /* K104 */ be_nested_str_weak(EVENT_CRITICAL), + /* K105 */ be_nested_str_weak(Matter_TLV_item), + /* K106 */ be_nested_str_weak(crypto), + /* K107 */ be_nested_str_weak(command), + /* K108 */ be_nested_str_weak(fabric_completed), + /* K109 */ be_nested_str_weak(set_no_expiration), + /* K110 */ be_nested_str_weak(save), + /* K111 */ be_nested_str_weak(start_commissioning_complete_deferred), + /* K112 */ be_nested_str_weak(context_error), + /* K113 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), + /* K114 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K115 */ be_nested_str_weak(DAC_Cert_FFF1_8000), + /* K116 */ be_nested_str_weak(PAI_Cert_FFF1), + /* K117 */ be_nested_str_weak(CD_FFF1_8000), + /* K118 */ be_nested_str_weak(tlv2raw), + /* K119 */ be_nested_str_weak(get_ac), + /* K120 */ be_nested_str_weak(EC_P256), + /* K121 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K122 */ be_nested_str_weak(DAC_Priv_FFF1_8000), + /* K123 */ be_nested_str_weak(gen_CSR), + /* K124 */ be_nested_str_weak(set_temp_ca), + /* K125 */ be_nested_str_weak(SUCCESS), + /* K126 */ be_nested_str_weak(log), + /* K127 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), + /* K128 */ be_nested_str_weak(get_temp_ca), + /* K129 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), + /* K130 */ be_nested_str_weak(create_fabric), + /* K131 */ be_nested_str_weak(set_ca), + /* K132 */ be_nested_str_weak(set_noc_icac), + /* K133 */ be_nested_str_weak(set_ipk_epoch_key), + /* K134 */ be_nested_str_weak(set_admin_subject_vendor), + /* K135 */ be_nested_str_weak(set_pk), + /* K136 */ be_nested_str_weak(get_pk), + /* K137 */ be_nested_str_weak(findsub), + /* K138 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), + /* K139 */ be_nested_str_weak(fromu32), + /* K140 */ be_nested_str_weak(tobytes), + /* K141 */ be_nested_str_weak(get_temp_ca_pub), + /* K142 */ be_const_int(2147483647), + /* K143 */ be_nested_str_weak(fromstring), + /* K144 */ be_nested_str_weak(CompressedFabric), + /* K145 */ be_nested_str_weak(HKDF_SHA256), + /* K146 */ be_nested_str_weak(copy), + /* K147 */ be_nested_str_weak(reverse), + /* K148 */ be_nested_str_weak(derive), + /* K149 */ be_nested_str_weak(set_fabric_device), + /* K150 */ be_nested_str_weak(fabric_candidate), + /* K151 */ be_nested_str_weak(start_operational_discovery_deferred), + /* K152 */ be_nested_str_weak(is_PASE), + /* K153 */ be_nested_str_weak(set_expire_in_seconds), + /* K154 */ be_nested_str_weak(log_new_fabric), + /* K155 */ be_nested_str_weak(assign_fabric_index), + /* K156 */ be_nested_str_weak(set_fabric_label), + /* K157 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), + /* K158 */ be_nested_str_weak(get_fabric_id), + /* K159 */ be_nested_str_weak(tohex), + /* K160 */ be_nested_str_weak(fabric_index_X3A), + /* K161 */ be_nested_str_weak(mark_for_deletion), + /* K162 */ be_nested_str_weak(set_timer), + /* K163 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), + /* K164 */ be_nested_str_weak(_X29_X20not_X20found), + /* K165 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), + /* K166 */ be_nested_str_weak(INVALID_DATA_TYPE), + /* K167 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), + /* K168 */ be_nested_str_weak(start_basic_commissioning), + /* K169 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), + /* K170 */ be_nested_str_weak(start_root_basic_commissioning), + /* K171 */ be_nested_str_weak(stop_basic_commissioning), + /* K172 */ be_nested_str_weak(invoke_request), }; @@ -198,7 +199,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ &be_ktab_class_Matter_Plugin_Root, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[926]) { /* code */ + ( &(const binstruction[930]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -255,11 +256,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x502C0000, // 0035 LDBOOL R11 0 0 0x7C200600, // 0036 CALL R8 3 0x80041000, // 0037 RET 1 R8 - 0x7002035B, // 0038 JMP #0395 + 0x7002035F, // 0038 JMP #0399 0x54220031, // 0039 LDINT R8 50 0x1C200C08, // 003A EQ R8 R6 R8 0x78220000, // 003B JMPF R8 #003D - 0x70020357, // 003C JMP #0395 + 0x7002035B, // 003C JMP #0399 0x54220032, // 003D LDINT R8 51 0x1C200C08, // 003E EQ R8 R6 R8 0x782200DC, // 003F JMPF R8 #011D @@ -483,11 +484,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x502C0000, // 0119 LDBOOL R11 0 0 0x7C200600, // 011A CALL R8 3 0x80041000, // 011B RET 1 R8 - 0x70020277, // 011C JMP #0395 + 0x7002027B, // 011C JMP #0399 0x54220033, // 011D LDINT R8 52 0x1C200C08, // 011E EQ R8 R6 R8 0x78220000, // 011F JMPF R8 #0121 - 0x70020273, // 0120 JMP #0395 + 0x70020277, // 0120 JMP #0399 0x54220037, // 0121 LDINT R8 56 0x1C200C08, // 0122 EQ R8 R6 R8 0x7822002B, // 0123 JMPF R8 #0150 @@ -534,7 +535,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x5C301000, // 014C MOVE R12 R8 0x7C240600, // 014D CALL R9 3 0x80041200, // 014E RET 1 R9 - 0x70020244, // 014F JMP #0395 + 0x70020248, // 014F JMP #0399 0x5422003D, // 0150 LDINT R8 62 0x1C200C08, // 0151 EQ R8 R6 R8 0x782200B5, // 0152 JMPF R8 #0209 @@ -719,412 +720,416 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0x5C301000, // 0205 MOVE R12 R8 0x7C240600, // 0206 CALL R9 3 0x80041200, // 0207 RET 1 R9 - 0x7002018B, // 0208 JMP #0395 + 0x7002018F, // 0208 JMP #0399 0x5422003B, // 0209 LDINT R8 60 0x1C200C08, // 020A EQ R8 R6 R8 - 0x78220030, // 020B JMPF R8 #023D + 0x78220034, // 020B JMPF R8 #0241 0x1C200F05, // 020C EQ R8 R7 K5 - 0x78220012, // 020D JMPF R8 #0221 + 0x78220014, // 020D JMPF R8 #0223 0x88200136, // 020E GETMBR R8 R0 K54 - 0x8C20114A, // 020F GETMET R8 R8 K74 - 0x7C200200, // 0210 CALL R8 1 - 0x88240136, // 0211 GETMBR R9 R0 K54 - 0x8C24134B, // 0212 GETMET R9 R9 K75 - 0x7C240200, // 0213 CALL R9 1 - 0x78220004, // 0214 JMPF R8 #021A - 0x78260001, // 0215 JMPF R9 #0218 - 0x5828000D, // 0216 LDCONST R10 K13 - 0x70020000, // 0217 JMP #0219 - 0x58280009, // 0218 LDCONST R10 K9 + 0x8820114A, // 020F GETMBR R8 R8 K74 + 0x8C20114B, // 0210 GETMET R8 R8 K75 + 0x7C200200, // 0211 CALL R8 1 + 0x88240136, // 0212 GETMBR R9 R0 K54 + 0x8824134A, // 0213 GETMBR R9 R9 K74 + 0x8C24134C, // 0214 GETMET R9 R9 K76 + 0x7C240200, // 0215 CALL R9 1 + 0x78220004, // 0216 JMPF R8 #021C + 0x78260001, // 0217 JMPF R9 #021A + 0x5828000D, // 0218 LDCONST R10 K13 0x70020000, // 0219 JMP #021B - 0x58280005, // 021A LDCONST R10 K5 - 0x8C2C0706, // 021B GETMET R11 R3 K6 - 0x88340B0E, // 021C GETMBR R13 R5 K14 - 0x5C381400, // 021D MOVE R14 R10 - 0x7C2C0600, // 021E CALL R11 3 - 0x80041600, // 021F RET 1 R11 - 0x7002001A, // 0220 JMP #023C - 0x1C200F09, // 0221 EQ R8 R7 K9 - 0x7822000B, // 0222 JMPF R8 #022F - 0x88200136, // 0223 GETMBR R8 R0 K54 - 0x8820114C, // 0224 GETMBR R8 R8 K76 - 0x4C240000, // 0225 LDNIL R9 - 0x20241009, // 0226 NE R9 R8 R9 - 0x78260005, // 0227 JMPF R9 #022E - 0x8C24074D, // 0228 GETMET R9 R3 K77 - 0x882C0B0C, // 0229 GETMBR R11 R5 K12 - 0x8C30113D, // 022A GETMET R12 R8 K61 - 0x7C300200, // 022B CALL R12 1 - 0x7C240600, // 022C CALL R9 3 - 0x80041200, // 022D RET 1 R9 - 0x7002000C, // 022E JMP #023C - 0x1C200F0D, // 022F EQ R8 R7 K13 - 0x7822000A, // 0230 JMPF R8 #023C - 0x88200136, // 0231 GETMBR R8 R0 K54 - 0x8820114C, // 0232 GETMBR R8 R8 K76 - 0x4C240000, // 0233 LDNIL R9 - 0x20241009, // 0234 NE R9 R8 R9 - 0x78260005, // 0235 JMPF R9 #023C - 0x8C24074D, // 0236 GETMET R9 R3 K77 - 0x882C0B0C, // 0237 GETMBR R11 R5 K12 - 0x8C301142, // 0238 GETMET R12 R8 K66 - 0x7C300200, // 0239 CALL R12 1 - 0x7C240600, // 023A CALL R9 3 - 0x80041200, // 023B RET 1 R9 - 0x70020157, // 023C JMP #0395 - 0x54220027, // 023D LDINT R8 40 - 0x1C200C08, // 023E EQ R8 R6 R8 - 0x782200BC, // 023F JMPF R8 #02FD - 0x8C200133, // 0240 GETMET R8 R0 K51 - 0x5C280400, // 0241 MOVE R10 R2 - 0x7C200400, // 0242 CALL R8 2 - 0x1C200F05, // 0243 EQ R8 R7 K5 - 0x78220005, // 0244 JMPF R8 #024B - 0x8C200706, // 0245 GETMET R8 R3 K6 - 0x88280B0C, // 0246 GETMBR R10 R5 K12 - 0x582C0009, // 0247 LDCONST R11 K9 - 0x7C200600, // 0248 CALL R8 3 - 0x80041000, // 0249 RET 1 R8 - 0x700200B0, // 024A JMP #02FC - 0x1C200F09, // 024B EQ R8 R7 K9 - 0x78220005, // 024C JMPF R8 #0253 - 0x8C200706, // 024D GETMET R8 R3 K6 - 0x88280B16, // 024E GETMBR R10 R5 K22 - 0x582C004E, // 024F LDCONST R11 K78 - 0x7C200600, // 0250 CALL R8 3 - 0x80041000, // 0251 RET 1 R8 - 0x700200A8, // 0252 JMP #02FC - 0x1C200F0D, // 0253 EQ R8 R7 K13 - 0x78220006, // 0254 JMPF R8 #025C - 0x8C200706, // 0255 GETMET R8 R3 K6 - 0x88280B0C, // 0256 GETMBR R10 R5 K12 - 0x882C0136, // 0257 GETMBR R11 R0 K54 - 0x882C174F, // 0258 GETMBR R11 R11 K79 - 0x7C200600, // 0259 CALL R8 3 - 0x80041000, // 025A RET 1 R8 - 0x7002009F, // 025B JMP #02FC - 0x1C200F0F, // 025C EQ R8 R7 K15 - 0x7822000A, // 025D JMPF R8 #0269 - 0x8C200706, // 025E GETMET R8 R3 K6 - 0x88280B16, // 025F GETMBR R10 R5 K22 - 0xB82E2400, // 0260 GETNGBL R11 K18 - 0x8C2C1726, // 0261 GETMET R11 R11 K38 - 0x58340050, // 0262 LDCONST R13 K80 - 0x50380200, // 0263 LDBOOL R14 1 0 - 0x7C2C0600, // 0264 CALL R11 3 - 0x942C1750, // 0265 GETIDX R11 R11 K80 - 0x7C200600, // 0266 CALL R8 3 - 0x80041000, // 0267 RET 1 R8 - 0x70020092, // 0268 JMP #02FC - 0x54220003, // 0269 LDINT R8 4 - 0x1C200E08, // 026A EQ R8 R7 R8 - 0x78220005, // 026B JMPF R8 #0272 - 0x8C200706, // 026C GETMET R8 R3 K6 - 0x88280B0C, // 026D GETMBR R10 R5 K12 - 0x542E7FFF, // 026E LDINT R11 32768 - 0x7C200600, // 026F CALL R8 3 - 0x80041000, // 0270 RET 1 R8 - 0x70020089, // 0271 JMP #02FC - 0x54220004, // 0272 LDINT R8 5 - 0x1C200E08, // 0273 EQ R8 R7 R8 - 0x7822000A, // 0274 JMPF R8 #0280 - 0x8C200706, // 0275 GETMET R8 R3 K6 - 0x88280B16, // 0276 GETMBR R10 R5 K22 - 0xB82E2400, // 0277 GETNGBL R11 K18 - 0x8C2C1726, // 0278 GETMET R11 R11 K38 - 0x58340051, // 0279 LDCONST R13 K81 - 0x50380200, // 027A LDBOOL R14 1 0 - 0x7C2C0600, // 027B CALL R11 3 - 0x942C1752, // 027C GETIDX R11 R11 K82 - 0x7C200600, // 027D CALL R8 3 - 0x80041000, // 027E RET 1 R8 - 0x7002007B, // 027F JMP #02FC - 0x54220005, // 0280 LDINT R8 6 - 0x1C200E08, // 0281 EQ R8 R7 R8 - 0x78220005, // 0282 JMPF R8 #0289 - 0x8C200706, // 0283 GETMET R8 R3 K6 - 0x88280B16, // 0284 GETMBR R10 R5 K22 - 0x582C0053, // 0285 LDCONST R11 K83 - 0x7C200600, // 0286 CALL R8 3 - 0x80041000, // 0287 RET 1 R8 - 0x70020072, // 0288 JMP #02FC - 0x54220006, // 0289 LDINT R8 7 - 0x1C200E08, // 028A EQ R8 R7 R8 - 0x78220005, // 028B JMPF R8 #0292 - 0x8C200706, // 028C GETMET R8 R3 K6 - 0x88280B0C, // 028D GETMBR R10 R5 K12 - 0x582C0005, // 028E LDCONST R11 K5 - 0x7C200600, // 028F CALL R8 3 - 0x80041000, // 0290 RET 1 R8 - 0x70020069, // 0291 JMP #02FC - 0x54220007, // 0292 LDINT R8 8 - 0x1C200E08, // 0293 EQ R8 R7 R8 - 0x7822000B, // 0294 JMPF R8 #02A1 - 0x8C200706, // 0295 GETMET R8 R3 K6 - 0x88280B16, // 0296 GETMBR R10 R5 K22 - 0xB82E2400, // 0297 GETNGBL R11 K18 - 0x8C2C1726, // 0298 GETMET R11 R11 K38 - 0x58340054, // 0299 LDCONST R13 K84 - 0x50380200, // 029A LDBOOL R14 1 0 - 0x7C2C0600, // 029B CALL R11 3 - 0x942C1755, // 029C GETIDX R11 R11 K85 - 0x942C1756, // 029D GETIDX R11 R11 K86 - 0x7C200600, // 029E CALL R8 3 - 0x80041000, // 029F RET 1 R8 - 0x7002005A, // 02A0 JMP #02FC - 0x54220008, // 02A1 LDINT R8 9 - 0x1C200E08, // 02A2 EQ R8 R7 R8 - 0x78220007, // 02A3 JMPF R8 #02AC - 0x8C200706, // 02A4 GETMET R8 R3 K6 - 0x88280B2A, // 02A5 GETMBR R10 R5 K42 - 0xB82E2400, // 02A6 GETNGBL R11 K18 - 0x8C2C1757, // 02A7 GETMET R11 R11 K87 - 0x7C2C0200, // 02A8 CALL R11 1 - 0x7C200600, // 02A9 CALL R8 3 - 0x80041000, // 02AA RET 1 R8 - 0x7002004F, // 02AB JMP #02FC - 0x54220009, // 02AC LDINT R8 10 - 0x1C200E08, // 02AD EQ R8 R7 R8 - 0x78220015, // 02AE JMPF R8 #02C5 - 0xB8222400, // 02AF GETNGBL R8 K18 - 0x8C201126, // 02B0 GETMET R8 R8 K38 - 0x58280054, // 02B1 LDCONST R10 K84 - 0x502C0200, // 02B2 LDBOOL R11 1 0 - 0x7C200600, // 02B3 CALL R8 3 - 0x94201155, // 02B4 GETIDX R8 R8 K85 - 0x94201158, // 02B5 GETIDX R8 R8 K88 - 0x8C24091B, // 02B6 GETMET R9 R4 K27 - 0x5C2C1000, // 02B7 MOVE R11 R8 - 0x58300059, // 02B8 LDCONST R12 K89 - 0x7C240600, // 02B9 CALL R9 3 - 0x24281305, // 02BA GT R10 R9 K5 - 0x782A0002, // 02BB JMPF R10 #02BF - 0x04281309, // 02BC SUB R10 R9 K9 - 0x402A0A0A, // 02BD CONNECT R10 K5 R10 - 0x9420100A, // 02BE GETIDX R8 R8 R10 - 0x8C280706, // 02BF GETMET R10 R3 K6 - 0x88300B16, // 02C0 GETMBR R12 R5 K22 - 0x5C341000, // 02C1 MOVE R13 R8 - 0x7C280600, // 02C2 CALL R10 3 - 0x80041400, // 02C3 RET 1 R10 - 0x70020036, // 02C4 JMP #02FC - 0x5422000E, // 02C5 LDINT R8 15 - 0x1C200E08, // 02C6 EQ R8 R7 R8 - 0x7822000B, // 02C7 JMPF R8 #02D4 - 0x8C200706, // 02C8 GETMET R8 R3 K6 - 0x88280B16, // 02C9 GETMBR R10 R5 K22 - 0xB82E2400, // 02CA GETNGBL R11 K18 - 0x8C2C1725, // 02CB GETMET R11 R11 K37 - 0x7C2C0200, // 02CC CALL R11 1 - 0x8C2C171B, // 02CD GETMET R11 R11 K27 - 0x5834001C, // 02CE LDCONST R13 K28 - 0x5838001D, // 02CF LDCONST R14 K29 - 0x7C2C0600, // 02D0 CALL R11 3 - 0x7C200600, // 02D1 CALL R8 3 - 0x80041000, // 02D2 RET 1 R8 - 0x70020027, // 02D3 JMP #02FC - 0x54220010, // 02D4 LDINT R8 17 - 0x1C200E08, // 02D5 EQ R8 R7 R8 - 0x78220005, // 02D6 JMPF R8 #02DD - 0x8C200706, // 02D7 GETMET R8 R3 K6 - 0x88280B10, // 02D8 GETMBR R10 R5 K16 - 0x582C0009, // 02D9 LDCONST R11 K9 - 0x7C200600, // 02DA CALL R8 3 - 0x80041000, // 02DB RET 1 R8 - 0x7002001E, // 02DC JMP #02FC - 0x54220011, // 02DD LDINT R8 18 - 0x1C200E08, // 02DE EQ R8 R7 R8 - 0x7822000B, // 02DF JMPF R8 #02EC - 0x8C200706, // 02E0 GETMET R8 R3 K6 - 0x88280B16, // 02E1 GETMBR R10 R5 K22 - 0xB82E2400, // 02E2 GETNGBL R11 K18 - 0x8C2C1725, // 02E3 GETMET R11 R11 K37 - 0x7C2C0200, // 02E4 CALL R11 1 - 0x8C2C171B, // 02E5 GETMET R11 R11 K27 - 0x5834001C, // 02E6 LDCONST R13 K28 - 0x5838001D, // 02E7 LDCONST R14 K29 - 0x7C2C0600, // 02E8 CALL R11 3 - 0x7C200600, // 02E9 CALL R8 3 - 0x80041000, // 02EA RET 1 R8 - 0x7002000F, // 02EB JMP #02FC - 0x54220012, // 02EC LDINT R8 19 - 0x1C200E08, // 02ED EQ R8 R7 R8 - 0x7822000C, // 02EE JMPF R8 #02FC - 0x8C200B0A, // 02EF GETMET R8 R5 K10 - 0x7C200200, // 02F0 CALL R8 1 - 0x8C24110B, // 02F1 GETMET R9 R8 K11 - 0x582C0005, // 02F2 LDCONST R11 K5 - 0x88300B0C, // 02F3 GETMBR R12 R5 K12 - 0x5834000F, // 02F4 LDCONST R13 K15 - 0x7C240800, // 02F5 CALL R9 4 - 0x8C24110B, // 02F6 GETMET R9 R8 K11 - 0x582C0009, // 02F7 LDCONST R11 K9 - 0x88300B0C, // 02F8 GETMBR R12 R5 K12 - 0x5834000F, // 02F9 LDCONST R13 K15 - 0x7C240800, // 02FA CALL R9 4 - 0x80041000, // 02FB RET 1 R8 - 0x70020097, // 02FC JMP #0395 - 0x5422003E, // 02FD LDINT R8 63 - 0x1C200C08, // 02FE EQ R8 R6 R8 - 0x78220000, // 02FF JMPF R8 #0301 - 0x70020093, // 0300 JMP #0395 - 0x54220029, // 0301 LDINT R8 42 + 0x58280009, // 021A LDCONST R10 K9 + 0x70020000, // 021B JMP #021D + 0x58280005, // 021C LDCONST R10 K5 + 0x8C2C0706, // 021D GETMET R11 R3 K6 + 0x88340B0E, // 021E GETMBR R13 R5 K14 + 0x5C381400, // 021F MOVE R14 R10 + 0x7C2C0600, // 0220 CALL R11 3 + 0x80041600, // 0221 RET 1 R11 + 0x7002001C, // 0222 JMP #0240 + 0x1C200F09, // 0223 EQ R8 R7 K9 + 0x7822000C, // 0224 JMPF R8 #0232 + 0x88200136, // 0225 GETMBR R8 R0 K54 + 0x8820114A, // 0226 GETMBR R8 R8 K74 + 0x8820114D, // 0227 GETMBR R8 R8 K77 + 0x4C240000, // 0228 LDNIL R9 + 0x20241009, // 0229 NE R9 R8 R9 + 0x78260005, // 022A JMPF R9 #0231 + 0x8C24074E, // 022B GETMET R9 R3 K78 + 0x882C0B0C, // 022C GETMBR R11 R5 K12 + 0x8C30113D, // 022D GETMET R12 R8 K61 + 0x7C300200, // 022E CALL R12 1 + 0x7C240600, // 022F CALL R9 3 + 0x80041200, // 0230 RET 1 R9 + 0x7002000D, // 0231 JMP #0240 + 0x1C200F0D, // 0232 EQ R8 R7 K13 + 0x7822000B, // 0233 JMPF R8 #0240 + 0x88200136, // 0234 GETMBR R8 R0 K54 + 0x8820114A, // 0235 GETMBR R8 R8 K74 + 0x8820114D, // 0236 GETMBR R8 R8 K77 + 0x4C240000, // 0237 LDNIL R9 + 0x20241009, // 0238 NE R9 R8 R9 + 0x78260005, // 0239 JMPF R9 #0240 + 0x8C24074E, // 023A GETMET R9 R3 K78 + 0x882C0B0C, // 023B GETMBR R11 R5 K12 + 0x8C301142, // 023C GETMET R12 R8 K66 + 0x7C300200, // 023D CALL R12 1 + 0x7C240600, // 023E CALL R9 3 + 0x80041200, // 023F RET 1 R9 + 0x70020157, // 0240 JMP #0399 + 0x54220027, // 0241 LDINT R8 40 + 0x1C200C08, // 0242 EQ R8 R6 R8 + 0x782200BC, // 0243 JMPF R8 #0301 + 0x8C200133, // 0244 GETMET R8 R0 K51 + 0x5C280400, // 0245 MOVE R10 R2 + 0x7C200400, // 0246 CALL R8 2 + 0x1C200F05, // 0247 EQ R8 R7 K5 + 0x78220005, // 0248 JMPF R8 #024F + 0x8C200706, // 0249 GETMET R8 R3 K6 + 0x88280B0C, // 024A GETMBR R10 R5 K12 + 0x582C0009, // 024B LDCONST R11 K9 + 0x7C200600, // 024C CALL R8 3 + 0x80041000, // 024D RET 1 R8 + 0x700200B0, // 024E JMP #0300 + 0x1C200F09, // 024F EQ R8 R7 K9 + 0x78220005, // 0250 JMPF R8 #0257 + 0x8C200706, // 0251 GETMET R8 R3 K6 + 0x88280B16, // 0252 GETMBR R10 R5 K22 + 0x582C004F, // 0253 LDCONST R11 K79 + 0x7C200600, // 0254 CALL R8 3 + 0x80041000, // 0255 RET 1 R8 + 0x700200A8, // 0256 JMP #0300 + 0x1C200F0D, // 0257 EQ R8 R7 K13 + 0x78220006, // 0258 JMPF R8 #0260 + 0x8C200706, // 0259 GETMET R8 R3 K6 + 0x88280B0C, // 025A GETMBR R10 R5 K12 + 0x882C0136, // 025B GETMBR R11 R0 K54 + 0x882C1750, // 025C GETMBR R11 R11 K80 + 0x7C200600, // 025D CALL R8 3 + 0x80041000, // 025E RET 1 R8 + 0x7002009F, // 025F JMP #0300 + 0x1C200F0F, // 0260 EQ R8 R7 K15 + 0x7822000A, // 0261 JMPF R8 #026D + 0x8C200706, // 0262 GETMET R8 R3 K6 + 0x88280B16, // 0263 GETMBR R10 R5 K22 + 0xB82E2400, // 0264 GETNGBL R11 K18 + 0x8C2C1726, // 0265 GETMET R11 R11 K38 + 0x58340051, // 0266 LDCONST R13 K81 + 0x50380200, // 0267 LDBOOL R14 1 0 + 0x7C2C0600, // 0268 CALL R11 3 + 0x942C1751, // 0269 GETIDX R11 R11 K81 + 0x7C200600, // 026A CALL R8 3 + 0x80041000, // 026B RET 1 R8 + 0x70020092, // 026C JMP #0300 + 0x54220003, // 026D LDINT R8 4 + 0x1C200E08, // 026E EQ R8 R7 R8 + 0x78220005, // 026F JMPF R8 #0276 + 0x8C200706, // 0270 GETMET R8 R3 K6 + 0x88280B0C, // 0271 GETMBR R10 R5 K12 + 0x542E7FFF, // 0272 LDINT R11 32768 + 0x7C200600, // 0273 CALL R8 3 + 0x80041000, // 0274 RET 1 R8 + 0x70020089, // 0275 JMP #0300 + 0x54220004, // 0276 LDINT R8 5 + 0x1C200E08, // 0277 EQ R8 R7 R8 + 0x7822000A, // 0278 JMPF R8 #0284 + 0x8C200706, // 0279 GETMET R8 R3 K6 + 0x88280B16, // 027A GETMBR R10 R5 K22 + 0xB82E2400, // 027B GETNGBL R11 K18 + 0x8C2C1726, // 027C GETMET R11 R11 K38 + 0x58340052, // 027D LDCONST R13 K82 + 0x50380200, // 027E LDBOOL R14 1 0 + 0x7C2C0600, // 027F CALL R11 3 + 0x942C1753, // 0280 GETIDX R11 R11 K83 + 0x7C200600, // 0281 CALL R8 3 + 0x80041000, // 0282 RET 1 R8 + 0x7002007B, // 0283 JMP #0300 + 0x54220005, // 0284 LDINT R8 6 + 0x1C200E08, // 0285 EQ R8 R7 R8 + 0x78220005, // 0286 JMPF R8 #028D + 0x8C200706, // 0287 GETMET R8 R3 K6 + 0x88280B16, // 0288 GETMBR R10 R5 K22 + 0x582C0054, // 0289 LDCONST R11 K84 + 0x7C200600, // 028A CALL R8 3 + 0x80041000, // 028B RET 1 R8 + 0x70020072, // 028C JMP #0300 + 0x54220006, // 028D LDINT R8 7 + 0x1C200E08, // 028E EQ R8 R7 R8 + 0x78220005, // 028F JMPF R8 #0296 + 0x8C200706, // 0290 GETMET R8 R3 K6 + 0x88280B0C, // 0291 GETMBR R10 R5 K12 + 0x582C0005, // 0292 LDCONST R11 K5 + 0x7C200600, // 0293 CALL R8 3 + 0x80041000, // 0294 RET 1 R8 + 0x70020069, // 0295 JMP #0300 + 0x54220007, // 0296 LDINT R8 8 + 0x1C200E08, // 0297 EQ R8 R7 R8 + 0x7822000B, // 0298 JMPF R8 #02A5 + 0x8C200706, // 0299 GETMET R8 R3 K6 + 0x88280B16, // 029A GETMBR R10 R5 K22 + 0xB82E2400, // 029B GETNGBL R11 K18 + 0x8C2C1726, // 029C GETMET R11 R11 K38 + 0x58340055, // 029D LDCONST R13 K85 + 0x50380200, // 029E LDBOOL R14 1 0 + 0x7C2C0600, // 029F CALL R11 3 + 0x942C1756, // 02A0 GETIDX R11 R11 K86 + 0x942C1757, // 02A1 GETIDX R11 R11 K87 + 0x7C200600, // 02A2 CALL R8 3 + 0x80041000, // 02A3 RET 1 R8 + 0x7002005A, // 02A4 JMP #0300 + 0x54220008, // 02A5 LDINT R8 9 + 0x1C200E08, // 02A6 EQ R8 R7 R8 + 0x78220007, // 02A7 JMPF R8 #02B0 + 0x8C200706, // 02A8 GETMET R8 R3 K6 + 0x88280B2A, // 02A9 GETMBR R10 R5 K42 + 0xB82E2400, // 02AA GETNGBL R11 K18 + 0x8C2C1758, // 02AB GETMET R11 R11 K88 + 0x7C2C0200, // 02AC CALL R11 1 + 0x7C200600, // 02AD CALL R8 3 + 0x80041000, // 02AE RET 1 R8 + 0x7002004F, // 02AF JMP #0300 + 0x54220009, // 02B0 LDINT R8 10 + 0x1C200E08, // 02B1 EQ R8 R7 R8 + 0x78220015, // 02B2 JMPF R8 #02C9 + 0xB8222400, // 02B3 GETNGBL R8 K18 + 0x8C201126, // 02B4 GETMET R8 R8 K38 + 0x58280055, // 02B5 LDCONST R10 K85 + 0x502C0200, // 02B6 LDBOOL R11 1 0 + 0x7C200600, // 02B7 CALL R8 3 + 0x94201156, // 02B8 GETIDX R8 R8 K86 + 0x94201159, // 02B9 GETIDX R8 R8 K89 + 0x8C24091B, // 02BA GETMET R9 R4 K27 + 0x5C2C1000, // 02BB MOVE R11 R8 + 0x5830005A, // 02BC LDCONST R12 K90 + 0x7C240600, // 02BD CALL R9 3 + 0x24281305, // 02BE GT R10 R9 K5 + 0x782A0002, // 02BF JMPF R10 #02C3 + 0x04281309, // 02C0 SUB R10 R9 K9 + 0x402A0A0A, // 02C1 CONNECT R10 K5 R10 + 0x9420100A, // 02C2 GETIDX R8 R8 R10 + 0x8C280706, // 02C3 GETMET R10 R3 K6 + 0x88300B16, // 02C4 GETMBR R12 R5 K22 + 0x5C341000, // 02C5 MOVE R13 R8 + 0x7C280600, // 02C6 CALL R10 3 + 0x80041400, // 02C7 RET 1 R10 + 0x70020036, // 02C8 JMP #0300 + 0x5422000E, // 02C9 LDINT R8 15 + 0x1C200E08, // 02CA EQ R8 R7 R8 + 0x7822000B, // 02CB JMPF R8 #02D8 + 0x8C200706, // 02CC GETMET R8 R3 K6 + 0x88280B16, // 02CD GETMBR R10 R5 K22 + 0xB82E2400, // 02CE GETNGBL R11 K18 + 0x8C2C1725, // 02CF GETMET R11 R11 K37 + 0x7C2C0200, // 02D0 CALL R11 1 + 0x8C2C171B, // 02D1 GETMET R11 R11 K27 + 0x5834001C, // 02D2 LDCONST R13 K28 + 0x5838001D, // 02D3 LDCONST R14 K29 + 0x7C2C0600, // 02D4 CALL R11 3 + 0x7C200600, // 02D5 CALL R8 3 + 0x80041000, // 02D6 RET 1 R8 + 0x70020027, // 02D7 JMP #0300 + 0x54220010, // 02D8 LDINT R8 17 + 0x1C200E08, // 02D9 EQ R8 R7 R8 + 0x78220005, // 02DA JMPF R8 #02E1 + 0x8C200706, // 02DB GETMET R8 R3 K6 + 0x88280B10, // 02DC GETMBR R10 R5 K16 + 0x582C0009, // 02DD LDCONST R11 K9 + 0x7C200600, // 02DE CALL R8 3 + 0x80041000, // 02DF RET 1 R8 + 0x7002001E, // 02E0 JMP #0300 + 0x54220011, // 02E1 LDINT R8 18 + 0x1C200E08, // 02E2 EQ R8 R7 R8 + 0x7822000B, // 02E3 JMPF R8 #02F0 + 0x8C200706, // 02E4 GETMET R8 R3 K6 + 0x88280B16, // 02E5 GETMBR R10 R5 K22 + 0xB82E2400, // 02E6 GETNGBL R11 K18 + 0x8C2C1725, // 02E7 GETMET R11 R11 K37 + 0x7C2C0200, // 02E8 CALL R11 1 + 0x8C2C171B, // 02E9 GETMET R11 R11 K27 + 0x5834001C, // 02EA LDCONST R13 K28 + 0x5838001D, // 02EB LDCONST R14 K29 + 0x7C2C0600, // 02EC CALL R11 3 + 0x7C200600, // 02ED CALL R8 3 + 0x80041000, // 02EE RET 1 R8 + 0x7002000F, // 02EF JMP #0300 + 0x54220012, // 02F0 LDINT R8 19 + 0x1C200E08, // 02F1 EQ R8 R7 R8 + 0x7822000C, // 02F2 JMPF R8 #0300 + 0x8C200B0A, // 02F3 GETMET R8 R5 K10 + 0x7C200200, // 02F4 CALL R8 1 + 0x8C24110B, // 02F5 GETMET R9 R8 K11 + 0x582C0005, // 02F6 LDCONST R11 K5 + 0x88300B0C, // 02F7 GETMBR R12 R5 K12 + 0x5834000F, // 02F8 LDCONST R13 K15 + 0x7C240800, // 02F9 CALL R9 4 + 0x8C24110B, // 02FA GETMET R9 R8 K11 + 0x582C0009, // 02FB LDCONST R11 K9 + 0x88300B0C, // 02FC GETMBR R12 R5 K12 + 0x5834000F, // 02FD LDCONST R13 K15 + 0x7C240800, // 02FE CALL R9 4 + 0x80041000, // 02FF RET 1 R8 + 0x70020097, // 0300 JMP #0399 + 0x5422003E, // 0301 LDINT R8 63 0x1C200C08, // 0302 EQ R8 R6 R8 - 0x7822001D, // 0303 JMPF R8 #0322 - 0x1C200F05, // 0304 EQ R8 R7 K5 - 0x78220003, // 0305 JMPF R8 #030A - 0x8C200B11, // 0306 GETMET R8 R5 K17 - 0x7C200200, // 0307 CALL R8 1 - 0x80041000, // 0308 RET 1 R8 - 0x70020016, // 0309 JMP #0321 - 0x1C200F09, // 030A EQ R8 R7 K9 - 0x78220005, // 030B JMPF R8 #0312 - 0x8C200706, // 030C GETMET R8 R3 K6 - 0x88280B10, // 030D GETMBR R10 R5 K16 - 0x582C0005, // 030E LDCONST R11 K5 - 0x7C200600, // 030F CALL R8 3 - 0x80041000, // 0310 RET 1 R8 - 0x7002000E, // 0311 JMP #0321 - 0x1C200F0D, // 0312 EQ R8 R7 K13 - 0x78220005, // 0313 JMPF R8 #031A - 0x8C200706, // 0314 GETMET R8 R3 K6 - 0x88280B0E, // 0315 GETMBR R10 R5 K14 - 0x582C0009, // 0316 LDCONST R11 K9 - 0x7C200600, // 0317 CALL R8 3 - 0x80041000, // 0318 RET 1 R8 - 0x70020006, // 0319 JMP #0321 - 0x1C200F0F, // 031A EQ R8 R7 K15 - 0x78220004, // 031B JMPF R8 #0321 - 0x8C200706, // 031C GETMET R8 R3 K6 - 0x88280B18, // 031D GETMBR R10 R5 K24 - 0x4C2C0000, // 031E LDNIL R11 - 0x7C200600, // 031F CALL R8 3 - 0x80041000, // 0320 RET 1 R8 - 0x70020072, // 0321 JMP #0395 - 0x5422002A, // 0322 LDINT R8 43 - 0x1C200C08, // 0323 EQ R8 R6 R8 - 0x78220016, // 0324 JMPF R8 #033C - 0x1C200F05, // 0325 EQ R8 R7 K5 - 0x78220007, // 0326 JMPF R8 #032F - 0x8C200706, // 0327 GETMET R8 R3 K6 - 0x88280B16, // 0328 GETMBR R10 R5 K22 - 0xB82E2400, // 0329 GETNGBL R11 K18 - 0x8C2C175A, // 032A GETMET R11 R11 K90 - 0x7C2C0200, // 032B CALL R11 1 - 0x7C200600, // 032C CALL R8 3 - 0x80041000, // 032D RET 1 R8 - 0x7002000B, // 032E JMP #033B - 0x1C200F09, // 032F EQ R8 R7 K9 - 0x78220009, // 0330 JMPF R8 #033B - 0x8C200B11, // 0331 GETMET R8 R5 K17 - 0x7C200200, // 0332 CALL R8 1 - 0x8C24110B, // 0333 GETMET R9 R8 K11 - 0x4C2C0000, // 0334 LDNIL R11 - 0x88300B16, // 0335 GETMBR R12 R5 K22 - 0xB8362400, // 0336 GETNGBL R13 K18 - 0x8C341B5A, // 0337 GETMET R13 R13 K90 - 0x7C340200, // 0338 CALL R13 1 - 0x7C240800, // 0339 CALL R9 4 - 0x80041000, // 033A RET 1 R8 - 0x70020058, // 033B JMP #0395 - 0x5422002B, // 033C LDINT R8 44 - 0x1C200C08, // 033D EQ R8 R6 R8 - 0x7822001C, // 033E JMPF R8 #035C - 0x1C200F05, // 033F EQ R8 R7 K5 - 0x78220005, // 0340 JMPF R8 #0347 - 0x8C200706, // 0341 GETMET R8 R3 K6 - 0x88280B0E, // 0342 GETMBR R10 R5 K14 - 0x582C0009, // 0343 LDCONST R11 K9 - 0x7C200600, // 0344 CALL R8 3 - 0x80041000, // 0345 RET 1 R8 - 0x70020013, // 0346 JMP #035B - 0x1C200F09, // 0347 EQ R8 R7 K9 - 0x78220005, // 0348 JMPF R8 #034F - 0x8C200706, // 0349 GETMET R8 R3 K6 - 0x88280B0E, // 034A GETMBR R10 R5 K14 - 0x542E0003, // 034B LDINT R11 4 - 0x7C200600, // 034C CALL R8 3 - 0x80041000, // 034D RET 1 R8 - 0x7002000B, // 034E JMP #035B - 0x1C200F0D, // 034F EQ R8 R7 K13 - 0x78220009, // 0350 JMPF R8 #035B - 0x8C200B11, // 0351 GETMET R8 R5 K17 - 0x7C200200, // 0352 CALL R8 1 - 0x8C24110B, // 0353 GETMET R9 R8 K11 - 0x4C2C0000, // 0354 LDNIL R11 - 0x8C300B5B, // 0355 GETMET R12 R5 K91 - 0x88380B0E, // 0356 GETMBR R14 R5 K14 - 0x543E0003, // 0357 LDINT R15 4 - 0x7C300600, // 0358 CALL R12 3 - 0x7C240600, // 0359 CALL R9 3 - 0x80041000, // 035A RET 1 R8 - 0x70020038, // 035B JMP #0395 - 0x54220030, // 035C LDINT R8 49 - 0x1C200C08, // 035D EQ R8 R6 R8 - 0x78220007, // 035E JMPF R8 #0367 - 0x1C200F0F, // 035F EQ R8 R7 K15 - 0x78220004, // 0360 JMPF R8 #0366 - 0x8C200706, // 0361 GETMET R8 R3 K6 - 0x88280B0E, // 0362 GETMBR R10 R5 K14 - 0x542E001D, // 0363 LDINT R11 30 - 0x7C200600, // 0364 CALL R8 3 - 0x80041000, // 0365 RET 1 R8 - 0x7002002D, // 0366 JMP #0395 - 0x5422001C, // 0367 LDINT R8 29 - 0x1C200C08, // 0368 EQ R8 R6 R8 - 0x7822002A, // 0369 JMPF R8 #0395 - 0x1C200F0D, // 036A EQ R8 R7 K13 - 0x78220008, // 036B JMPF R8 #0375 - 0x8C200B11, // 036C GETMET R8 R5 K17 - 0x7C200200, // 036D CALL R8 1 - 0x8C24110B, // 036E GETMET R9 R8 K11 - 0x4C2C0000, // 036F LDNIL R11 - 0x88300B0C, // 0370 GETMBR R12 R5 K12 - 0x5436001E, // 0371 LDINT R13 31 - 0x7C240800, // 0372 CALL R9 4 - 0x80041000, // 0373 RET 1 R8 - 0x7002001F, // 0374 JMP #0395 - 0x1C200F0F, // 0375 EQ R8 R7 K15 - 0x7822001D, // 0376 JMPF R8 #0395 - 0x8C200B11, // 0377 GETMET R8 R5 K17 - 0x7C200200, // 0378 CALL R8 1 - 0x88240136, // 0379 GETMBR R9 R0 K54 - 0x8C24135C, // 037A GETMET R9 R9 K92 - 0x502C0200, // 037B LDBOOL R11 1 0 - 0x7C240400, // 037C CALL R9 2 - 0x88280136, // 037D GETMBR R10 R0 K54 - 0x8828155D, // 037E GETMBR R10 R10 K93 - 0x602C0010, // 037F GETGBL R11 G16 - 0x5C301200, // 0380 MOVE R12 R9 - 0x7C2C0200, // 0381 CALL R11 1 - 0xA802000D, // 0382 EXBLK 0 #0391 - 0x5C301600, // 0383 MOVE R12 R11 - 0x7C300000, // 0384 CALL R12 0 - 0x5C341400, // 0385 MOVE R13 R10 - 0x78360003, // 0386 JMPF R13 #038B - 0xB8360200, // 0387 GETNGBL R13 K1 - 0x88341B5E, // 0388 GETMBR R13 R13 K94 - 0x2034180D, // 0389 NE R13 R12 R13 - 0x78360004, // 038A JMPF R13 #0390 - 0x8C34110B, // 038B GETMET R13 R8 K11 - 0x4C3C0000, // 038C LDNIL R15 - 0x88400B0C, // 038D GETMBR R16 R5 K12 - 0x5C441800, // 038E MOVE R17 R12 - 0x7C340800, // 038F CALL R13 4 - 0x7001FFF1, // 0390 JMP #0383 - 0x582C003E, // 0391 LDCONST R11 K62 - 0xAC2C0200, // 0392 CATCH R11 1 0 - 0xB0080000, // 0393 RAISE 2 R0 R0 - 0x80041000, // 0394 RET 1 R8 - 0x60200003, // 0395 GETGBL R8 G3 - 0x5C240000, // 0396 MOVE R9 R0 - 0x7C200200, // 0397 CALL R8 1 - 0x8C20115F, // 0398 GETMET R8 R8 K95 - 0x5C280200, // 0399 MOVE R10 R1 - 0x5C2C0400, // 039A MOVE R11 R2 - 0x5C300600, // 039B MOVE R12 R3 - 0x7C200800, // 039C CALL R8 4 - 0x80041000, // 039D RET 1 R8 + 0x78220000, // 0303 JMPF R8 #0305 + 0x70020093, // 0304 JMP #0399 + 0x54220029, // 0305 LDINT R8 42 + 0x1C200C08, // 0306 EQ R8 R6 R8 + 0x7822001D, // 0307 JMPF R8 #0326 + 0x1C200F05, // 0308 EQ R8 R7 K5 + 0x78220003, // 0309 JMPF R8 #030E + 0x8C200B11, // 030A GETMET R8 R5 K17 + 0x7C200200, // 030B CALL R8 1 + 0x80041000, // 030C RET 1 R8 + 0x70020016, // 030D JMP #0325 + 0x1C200F09, // 030E EQ R8 R7 K9 + 0x78220005, // 030F JMPF R8 #0316 + 0x8C200706, // 0310 GETMET R8 R3 K6 + 0x88280B10, // 0311 GETMBR R10 R5 K16 + 0x582C0005, // 0312 LDCONST R11 K5 + 0x7C200600, // 0313 CALL R8 3 + 0x80041000, // 0314 RET 1 R8 + 0x7002000E, // 0315 JMP #0325 + 0x1C200F0D, // 0316 EQ R8 R7 K13 + 0x78220005, // 0317 JMPF R8 #031E + 0x8C200706, // 0318 GETMET R8 R3 K6 + 0x88280B0E, // 0319 GETMBR R10 R5 K14 + 0x582C0009, // 031A LDCONST R11 K9 + 0x7C200600, // 031B CALL R8 3 + 0x80041000, // 031C RET 1 R8 + 0x70020006, // 031D JMP #0325 + 0x1C200F0F, // 031E EQ R8 R7 K15 + 0x78220004, // 031F JMPF R8 #0325 + 0x8C200706, // 0320 GETMET R8 R3 K6 + 0x88280B18, // 0321 GETMBR R10 R5 K24 + 0x4C2C0000, // 0322 LDNIL R11 + 0x7C200600, // 0323 CALL R8 3 + 0x80041000, // 0324 RET 1 R8 + 0x70020072, // 0325 JMP #0399 + 0x5422002A, // 0326 LDINT R8 43 + 0x1C200C08, // 0327 EQ R8 R6 R8 + 0x78220016, // 0328 JMPF R8 #0340 + 0x1C200F05, // 0329 EQ R8 R7 K5 + 0x78220007, // 032A JMPF R8 #0333 + 0x8C200706, // 032B GETMET R8 R3 K6 + 0x88280B16, // 032C GETMBR R10 R5 K22 + 0xB82E2400, // 032D GETNGBL R11 K18 + 0x8C2C175B, // 032E GETMET R11 R11 K91 + 0x7C2C0200, // 032F CALL R11 1 + 0x7C200600, // 0330 CALL R8 3 + 0x80041000, // 0331 RET 1 R8 + 0x7002000B, // 0332 JMP #033F + 0x1C200F09, // 0333 EQ R8 R7 K9 + 0x78220009, // 0334 JMPF R8 #033F + 0x8C200B11, // 0335 GETMET R8 R5 K17 + 0x7C200200, // 0336 CALL R8 1 + 0x8C24110B, // 0337 GETMET R9 R8 K11 + 0x4C2C0000, // 0338 LDNIL R11 + 0x88300B16, // 0339 GETMBR R12 R5 K22 + 0xB8362400, // 033A GETNGBL R13 K18 + 0x8C341B5B, // 033B GETMET R13 R13 K91 + 0x7C340200, // 033C CALL R13 1 + 0x7C240800, // 033D CALL R9 4 + 0x80041000, // 033E RET 1 R8 + 0x70020058, // 033F JMP #0399 + 0x5422002B, // 0340 LDINT R8 44 + 0x1C200C08, // 0341 EQ R8 R6 R8 + 0x7822001C, // 0342 JMPF R8 #0360 + 0x1C200F05, // 0343 EQ R8 R7 K5 + 0x78220005, // 0344 JMPF R8 #034B + 0x8C200706, // 0345 GETMET R8 R3 K6 + 0x88280B0E, // 0346 GETMBR R10 R5 K14 + 0x582C0009, // 0347 LDCONST R11 K9 + 0x7C200600, // 0348 CALL R8 3 + 0x80041000, // 0349 RET 1 R8 + 0x70020013, // 034A JMP #035F + 0x1C200F09, // 034B EQ R8 R7 K9 + 0x78220005, // 034C JMPF R8 #0353 + 0x8C200706, // 034D GETMET R8 R3 K6 + 0x88280B0E, // 034E GETMBR R10 R5 K14 + 0x542E0003, // 034F LDINT R11 4 + 0x7C200600, // 0350 CALL R8 3 + 0x80041000, // 0351 RET 1 R8 + 0x7002000B, // 0352 JMP #035F + 0x1C200F0D, // 0353 EQ R8 R7 K13 + 0x78220009, // 0354 JMPF R8 #035F + 0x8C200B11, // 0355 GETMET R8 R5 K17 + 0x7C200200, // 0356 CALL R8 1 + 0x8C24110B, // 0357 GETMET R9 R8 K11 + 0x4C2C0000, // 0358 LDNIL R11 + 0x8C300B5C, // 0359 GETMET R12 R5 K92 + 0x88380B0E, // 035A GETMBR R14 R5 K14 + 0x543E0003, // 035B LDINT R15 4 + 0x7C300600, // 035C CALL R12 3 + 0x7C240600, // 035D CALL R9 3 + 0x80041000, // 035E RET 1 R8 + 0x70020038, // 035F JMP #0399 + 0x54220030, // 0360 LDINT R8 49 + 0x1C200C08, // 0361 EQ R8 R6 R8 + 0x78220007, // 0362 JMPF R8 #036B + 0x1C200F0F, // 0363 EQ R8 R7 K15 + 0x78220004, // 0364 JMPF R8 #036A + 0x8C200706, // 0365 GETMET R8 R3 K6 + 0x88280B0E, // 0366 GETMBR R10 R5 K14 + 0x542E001D, // 0367 LDINT R11 30 + 0x7C200600, // 0368 CALL R8 3 + 0x80041000, // 0369 RET 1 R8 + 0x7002002D, // 036A JMP #0399 + 0x5422001C, // 036B LDINT R8 29 + 0x1C200C08, // 036C EQ R8 R6 R8 + 0x7822002A, // 036D JMPF R8 #0399 + 0x1C200F0D, // 036E EQ R8 R7 K13 + 0x78220008, // 036F JMPF R8 #0379 + 0x8C200B11, // 0370 GETMET R8 R5 K17 + 0x7C200200, // 0371 CALL R8 1 + 0x8C24110B, // 0372 GETMET R9 R8 K11 + 0x4C2C0000, // 0373 LDNIL R11 + 0x88300B0C, // 0374 GETMBR R12 R5 K12 + 0x5436001E, // 0375 LDINT R13 31 + 0x7C240800, // 0376 CALL R9 4 + 0x80041000, // 0377 RET 1 R8 + 0x7002001F, // 0378 JMP #0399 + 0x1C200F0F, // 0379 EQ R8 R7 K15 + 0x7822001D, // 037A JMPF R8 #0399 + 0x8C200B11, // 037B GETMET R8 R5 K17 + 0x7C200200, // 037C CALL R8 1 + 0x88240136, // 037D GETMBR R9 R0 K54 + 0x8C24135D, // 037E GETMET R9 R9 K93 + 0x502C0200, // 037F LDBOOL R11 1 0 + 0x7C240400, // 0380 CALL R9 2 + 0x88280136, // 0381 GETMBR R10 R0 K54 + 0x8828155E, // 0382 GETMBR R10 R10 K94 + 0x602C0010, // 0383 GETGBL R11 G16 + 0x5C301200, // 0384 MOVE R12 R9 + 0x7C2C0200, // 0385 CALL R11 1 + 0xA802000D, // 0386 EXBLK 0 #0395 + 0x5C301600, // 0387 MOVE R12 R11 + 0x7C300000, // 0388 CALL R12 0 + 0x5C341400, // 0389 MOVE R13 R10 + 0x78360003, // 038A JMPF R13 #038F + 0xB8360200, // 038B GETNGBL R13 K1 + 0x88341B5F, // 038C GETMBR R13 R13 K95 + 0x2034180D, // 038D NE R13 R12 R13 + 0x78360004, // 038E JMPF R13 #0394 + 0x8C34110B, // 038F GETMET R13 R8 K11 + 0x4C3C0000, // 0390 LDNIL R15 + 0x88400B0C, // 0391 GETMBR R16 R5 K12 + 0x5C441800, // 0392 MOVE R17 R12 + 0x7C340800, // 0393 CALL R13 4 + 0x7001FFF1, // 0394 JMP #0387 + 0x582C003E, // 0395 LDCONST R11 K62 + 0xAC2C0200, // 0396 CATCH R11 1 0 + 0xB0080000, // 0397 RAISE 2 R0 R0 + 0x80041000, // 0398 RET 1 R8 + 0x60200003, // 0399 GETGBL R8 G3 + 0x5C240000, // 039A MOVE R9 R0 + 0x7C200200, // 039B CALL R8 1 + 0x8C201160, // 039C GETMET R8 R8 K96 + 0x5C280200, // 039D MOVE R10 R1 + 0x5C2C0400, // 039E MOVE R11 R2 + 0x5C300600, // 039F MOVE R12 R3 + 0x7C200800, // 03A0 CALL R8 4 + 0x80041000, // 03A1 RET 1 R8 }) ) ); @@ -1160,7 +1165,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x601C0004, // 0009 GETGBL R7 G4 0x5C200600, // 000A MOVE R8 R3 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0F60, // 000C EQ R7 R7 K96 + 0x1C1C0F61, // 000C EQ R7 R7 K97 0x741E0004, // 000D JMPT R7 #0013 0x601C000F, // 000E GETGBL R7 G15 0x5C200600, // 000F MOVE R8 R3 @@ -1168,7 +1173,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x7C1C0400, // 0011 CALL R7 2 0x781E0007, // 0012 JMPF R7 #001B 0x90061003, // 0013 SETMBR R1 K8 R3 - 0x8C1C0161, // 0014 GETMET R7 R0 K97 + 0x8C1C0162, // 0014 GETMET R7 R0 K98 0x88240503, // 0015 GETMBR R9 R2 K3 0x88280504, // 0016 GETMBR R10 R2 K4 0x7C1C0600, // 0017 CALL R7 3 @@ -1176,8 +1181,8 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x80040E00, // 0019 RET 1 R7 0x70020004, // 001A JMP #0020 0xB81E0200, // 001B GETNGBL R7 K1 - 0x881C0F63, // 001C GETMBR R7 R7 K99 - 0x900AC407, // 001D SETMBR R2 K98 R7 + 0x881C0F64, // 001C GETMBR R7 R7 K100 + 0x900AC607, // 001D SETMBR R2 K99 R7 0x501C0000, // 001E LDBOOL R7 0 0 0x80040E00, // 001F RET 1 R7 0x70020041, // 0020 JMP #0063 @@ -1218,8 +1223,8 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x1C1C0D05, // 0043 EQ R7 R6 K5 0x781E0004, // 0044 JMPF R7 #004A 0xB81E0200, // 0045 GETNGBL R7 K1 - 0x881C0F63, // 0046 GETMBR R7 R7 K99 - 0x900AC407, // 0047 SETMBR R2 K98 R7 + 0x881C0F64, // 0046 GETMBR R7 R7 K100 + 0x900AC607, // 0047 SETMBR R2 K99 R7 0x501C0000, // 0048 LDBOOL R7 0 0 0x80040E00, // 0049 RET 1 R7 0x70020017, // 004A JMP #0063 @@ -1243,8 +1248,8 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x1C1C0C07, // 005C EQ R7 R6 R7 0x781E0004, // 005D JMPF R7 #0063 0xB81E0200, // 005E GETNGBL R7 K1 - 0x881C0F64, // 005F GETMBR R7 R7 K100 - 0x900AC407, // 0060 SETMBR R2 K98 R7 + 0x881C0F65, // 005F GETMBR R7 R7 K101 + 0x900AC607, // 0060 SETMBR R2 K99 R7 0x501C0000, // 0061 LDBOOL R7 0 0 0x80040E00, // 0062 RET 1 R7 0x80000000, // 0063 RET 0 @@ -1274,37 +1279,37 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100965, // 0003 GETMET R4 R4 K101 + 0x8C100966, // 0003 GETMET R4 R4 K102 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x8C100166, // 0008 GETMET R4 R0 K102 + 0x8C100167, // 0008 GETMET R4 R0 K103 0x541A0027, // 0009 LDINT R6 40 0x581C0005, // 000A LDCONST R7 K5 0xB8220200, // 000B GETNGBL R8 K1 - 0x88201167, // 000C GETMBR R8 R8 K103 + 0x88201168, // 000C GETMBR R8 R8 K104 0xB8260200, // 000D GETNGBL R9 K1 0x88241302, // 000E GETMBR R9 R9 K2 - 0x8C241368, // 000F GETMET R9 R9 K104 + 0x8C241369, // 000F GETMET R9 R9 K105 0x7C240200, // 0010 CALL R9 1 0x8C241306, // 0011 GETMET R9 R9 K6 0xB82E0200, // 0012 GETNGBL R11 K1 0x882C1702, // 0013 GETMBR R11 R11 K2 0x882C172A, // 0014 GETMBR R11 R11 K42 0xB8322400, // 0015 GETNGBL R12 K18 - 0x8C301957, // 0016 GETMET R12 R12 K87 + 0x8C301958, // 0016 GETMET R12 R12 K88 0x7C300200, // 0017 CALL R12 1 0x7C240600, // 0018 CALL R9 3 0x7C100A00, // 0019 CALL R4 5 - 0x8C100166, // 001A GETMET R4 R0 K102 + 0x8C100167, // 001A GETMET R4 R0 K103 0x541A0032, // 001B LDINT R6 51 0x581C000F, // 001C LDCONST R7 K15 0xB8220200, // 001D GETNGBL R8 K1 - 0x88201167, // 001E GETMBR R8 R8 K103 + 0x88201168, // 001E GETMBR R8 R8 K104 0xB8260200, // 001F GETNGBL R9 K1 0x88241302, // 0020 GETMBR R9 R9 K2 - 0x8C241368, // 0021 GETMET R9 R9 K104 + 0x8C241369, // 0021 GETMET R9 R9 K105 0x7C240200, // 0022 CALL R9 1 0x8C241306, // 0023 GETMET R9 R9 K6 0xB82E0200, // 0024 GETNGBL R11 K1 @@ -1364,15 +1369,15 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ &be_ktab_class_Matter_Plugin_Root, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[737]) { /* code */ - 0xA412D200, // 0000 IMPORT R4 K105 + ( &(const binstruction[742]) { /* code */ + 0xA412D400, // 0000 IMPORT R4 K106 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C076A, // 0004 GETMBR R7 R3 K106 + 0x881C076B, // 0004 GETMBR R7 R3 K107 0x5422002F, // 0005 LDINT R8 48 0x1C200C08, // 0006 EQ R8 R6 R8 - 0x7822005C, // 0007 JMPF R8 #0065 + 0x7822005D, // 0007 JMPF R8 #0066 0x1C200F05, // 0008 EQ R8 R7 K5 0x78220017, // 0009 JMPF R8 #0022 0x8C200541, // 000A GETMET R8 R2 K65 @@ -1396,9 +1401,9 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x88380B16, // 001C GETMBR R14 R5 K22 0x583C001D, // 001D LDCONST R15 K29 0x7C2C0800, // 001E CALL R11 4 - 0x900ED509, // 001F SETMBR R3 K106 K9 + 0x900ED709, // 001F SETMBR R3 K107 K9 0x80041400, // 0020 RET 1 R10 - 0x70020041, // 0021 JMP #0064 + 0x70020042, // 0021 JMP #0065 0x1C200F0D, // 0022 EQ R8 R7 K13 0x7822001A, // 0023 JMPF R8 #003F 0x8C200541, // 0024 GETMET R8 R2 K65 @@ -1406,7 +1411,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C200400, // 0026 CALL R8 2 0x8C240541, // 0027 GETMET R9 R2 K65 0x582C0009, // 0028 LDCONST R11 K9 - 0x58300053, // 0029 LDCONST R12 K83 + 0x58300054, // 0029 LDCONST R12 K84 0x7C240600, // 002A CALL R9 3 0x8C280541, // 002B GETMET R10 R2 K65 0x5830000D, // 002C LDCONST R12 K13 @@ -1425,24 +1430,24 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x883C0B16, // 0039 GETMBR R15 R5 K22 0x5840001D, // 003A LDCONST R16 K29 0x7C300800, // 003B CALL R12 4 - 0x900ED50F, // 003C SETMBR R3 K106 K15 + 0x900ED70F, // 003C SETMBR R3 K107 K15 0x80041600, // 003D RET 1 R11 - 0x70020024, // 003E JMP #0064 + 0x70020025, // 003E JMP #0065 0x54220003, // 003F LDINT R8 4 0x1C200E08, // 0040 EQ R8 R7 R8 - 0x78220021, // 0041 JMPF R8 #0064 + 0x78220022, // 0041 JMPF R8 #0065 0x8C200133, // 0042 GETMET R8 R0 K51 0x5C280600, // 0043 MOVE R10 R3 0x7C200400, // 0044 CALL R8 2 0x88200349, // 0045 GETMBR R8 R1 K73 - 0x7822001B, // 0046 JMPF R8 #0063 + 0x7822001C, // 0046 JMPF R8 #0064 0x90061105, // 0047 SETMBR R1 K8 K5 0x88200349, // 0048 GETMBR R8 R1 K73 - 0x8C20116B, // 0049 GETMET R8 R8 K107 + 0x8C20116C, // 0049 GETMET R8 R8 K108 0x7C200200, // 004A CALL R8 1 - 0x8C20036C, // 004B GETMET R8 R1 K108 + 0x8C20036D, // 004B GETMET R8 R1 K109 0x7C200200, // 004C CALL R8 1 - 0x8C20036D, // 004D GETMET R8 R1 K109 + 0x8C20036E, // 004D GETMET R8 R1 K110 0x7C200200, // 004E CALL R8 1 0x8C200B0A, // 004F GETMET R8 R5 K10 0x7C200200, // 0050 CALL R8 1 @@ -1457,651 +1462,656 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5834001D, // 0059 LDCONST R13 K29 0x7C240800, // 005A CALL R9 4 0x54260004, // 005B LDINT R9 5 - 0x900ED409, // 005C SETMBR R3 K106 R9 + 0x900ED609, // 005C SETMBR R3 K107 R9 0x88240136, // 005D GETMBR R9 R0 K54 - 0x8C24136E, // 005E GETMET R9 R9 K110 - 0x5C2C0200, // 005F MOVE R11 R1 - 0x7C240400, // 0060 CALL R9 2 - 0x80041000, // 0061 RET 1 R8 - 0x70020000, // 0062 JMP #0064 - 0xB006DF70, // 0063 RAISE 1 K111 K112 - 0x70020279, // 0064 JMP #02DF - 0x5422003D, // 0065 LDINT R8 62 - 0x1C200C08, // 0066 EQ R8 R6 R8 - 0x782201DD, // 0067 JMPF R8 #0246 - 0x1C200F0D, // 0068 EQ R8 R7 K13 - 0x7822001D, // 0069 JMPF R8 #0088 - 0x8C200541, // 006A GETMET R8 R2 K65 - 0x58280005, // 006B LDCONST R10 K5 - 0x7C200400, // 006C CALL R8 2 - 0x20241109, // 006D NE R9 R8 K9 - 0x78260006, // 006E JMPF R9 #0076 - 0x2024110D, // 006F NE R9 R8 K13 - 0x78260004, // 0070 JMPF R9 #0076 - 0xB8260200, // 0071 GETNGBL R9 K1 - 0x88241371, // 0072 GETMBR R9 R9 K113 - 0x900EC409, // 0073 SETMBR R3 K98 R9 - 0x4C240000, // 0074 LDNIL R9 - 0x80041200, // 0075 RET 1 R9 - 0x8C240B0A, // 0076 GETMET R9 R5 K10 - 0x7C240200, // 0077 CALL R9 1 - 0x8C28130B, // 0078 GETMET R10 R9 K11 - 0x58300005, // 0079 LDCONST R12 K5 - 0x88340B3A, // 007A GETMBR R13 R5 K58 - 0x1C381109, // 007B EQ R14 R8 K9 - 0x783A0003, // 007C JMPF R14 #0081 - 0xB83A0200, // 007D GETNGBL R14 K1 - 0x8C381D72, // 007E GETMET R14 R14 K114 - 0x7C380200, // 007F CALL R14 1 - 0x70020002, // 0080 JMP #0084 - 0xB83A0200, // 0081 GETNGBL R14 K1 - 0x8C381D73, // 0082 GETMET R14 R14 K115 - 0x7C380200, // 0083 CALL R14 1 - 0x7C280800, // 0084 CALL R10 4 - 0x900ED50F, // 0085 SETMBR R3 K106 K15 - 0x80041200, // 0086 RET 1 R9 - 0x700201BC, // 0087 JMP #0245 - 0x1C200F05, // 0088 EQ R8 R7 K5 - 0x7822003C, // 0089 JMPF R8 #00C7 - 0x8C200541, // 008A GETMET R8 R2 K65 - 0x58280005, // 008B LDCONST R10 K5 - 0x7C200400, // 008C CALL R8 2 - 0x6024000C, // 008D GETGBL R9 G12 - 0x5C281000, // 008E MOVE R10 R8 - 0x7C240200, // 008F CALL R9 1 - 0x542A001F, // 0090 LDINT R10 32 - 0x2024120A, // 0091 NE R9 R9 R10 - 0x78260001, // 0092 JMPF R9 #0095 - 0x4C240000, // 0093 LDNIL R9 - 0x80041200, // 0094 RET 1 R9 - 0x900ED509, // 0095 SETMBR R3 K106 K9 - 0x8C240B0A, // 0096 GETMET R9 R5 K10 - 0x7C240200, // 0097 CALL R9 1 - 0x8C28130B, // 0098 GETMET R10 R9 K11 - 0x58300009, // 0099 LDCONST R12 K9 - 0x88340B3A, // 009A GETMBR R13 R5 K58 - 0xB83A0200, // 009B GETNGBL R14 K1 - 0x8C381D74, // 009C GETMET R14 R14 K116 - 0x7C380200, // 009D CALL R14 1 - 0x7C280800, // 009E CALL R10 4 - 0x8C28130B, // 009F GETMET R10 R9 K11 - 0x5830000D, // 00A0 LDCONST R12 K13 - 0x88340B1F, // 00A1 GETMBR R13 R5 K31 - 0x5C381000, // 00A2 MOVE R14 R8 - 0x7C280800, // 00A3 CALL R10 4 - 0x8C28130B, // 00A4 GETMET R10 R9 K11 - 0x5830000F, // 00A5 LDCONST R12 K15 - 0x88340B2A, // 00A6 GETMBR R13 R5 K42 - 0xB83A2400, // 00A7 GETNGBL R14 K18 - 0x8C381D2F, // 00A8 GETMET R14 R14 K47 - 0x7C380200, // 00A9 CALL R14 1 - 0x7C280800, // 00AA CALL R10 4 - 0x8C281375, // 00AB GETMET R10 R9 K117 - 0x7C280200, // 00AC CALL R10 1 - 0x8C2C0376, // 00AD GETMET R11 R1 K118 - 0x7C2C0200, // 00AE CALL R11 1 - 0x0030140B, // 00AF ADD R12 R10 R11 - 0x8C340977, // 00B0 GETMET R13 R4 K119 - 0x7C340200, // 00B1 CALL R13 1 - 0x8C341B78, // 00B2 GETMET R13 R13 K120 - 0xB83E0200, // 00B3 GETNGBL R15 K1 - 0x8C3C1F79, // 00B4 GETMET R15 R15 K121 - 0x7C3C0200, // 00B5 CALL R15 1 - 0x5C401800, // 00B6 MOVE R16 R12 - 0x7C340600, // 00B7 CALL R13 3 - 0x8C380B0A, // 00B8 GETMET R14 R5 K10 - 0x7C380200, // 00B9 CALL R14 1 - 0x8C3C1D0B, // 00BA GETMET R15 R14 K11 - 0x58440005, // 00BB LDCONST R17 K5 - 0x88480B3A, // 00BC GETMBR R18 R5 K58 - 0x5C4C1400, // 00BD MOVE R19 R10 - 0x7C3C0800, // 00BE CALL R15 4 - 0x8C3C1D0B, // 00BF GETMET R15 R14 K11 - 0x58440009, // 00C0 LDCONST R17 K9 - 0x88480B1F, // 00C1 GETMBR R18 R5 K31 - 0x5C4C1A00, // 00C2 MOVE R19 R13 - 0x7C3C0800, // 00C3 CALL R15 4 - 0x900ED509, // 00C4 SETMBR R3 K106 K9 - 0x80041C00, // 00C5 RET 1 R14 - 0x7002017D, // 00C6 JMP #0245 - 0x54220003, // 00C7 LDINT R8 4 - 0x1C200E08, // 00C8 EQ R8 R7 R8 - 0x7822003C, // 00C9 JMPF R8 #0107 - 0x8C200133, // 00CA GETMET R8 R0 K51 - 0x5C280600, // 00CB MOVE R10 R3 - 0x7C200400, // 00CC CALL R8 2 - 0x8C200541, // 00CD GETMET R8 R2 K65 - 0x58280005, // 00CE LDCONST R10 K5 - 0x7C200400, // 00CF CALL R8 2 - 0x6024000C, // 00D0 GETGBL R9 G12 - 0x5C281000, // 00D1 MOVE R10 R8 - 0x7C240200, // 00D2 CALL R9 1 - 0x542A001F, // 00D3 LDINT R10 32 - 0x2024120A, // 00D4 NE R9 R9 R10 - 0x78260001, // 00D5 JMPF R9 #00D8 - 0x4C240000, // 00D6 LDNIL R9 - 0x80041200, // 00D7 RET 1 R9 - 0x8C240541, // 00D8 GETMET R9 R2 K65 - 0x582C0009, // 00D9 LDCONST R11 K9 - 0x50300000, // 00DA LDBOOL R12 0 0 - 0x7C240600, // 00DB CALL R9 3 - 0x8C28037A, // 00DC GETMET R10 R1 K122 - 0x7C280200, // 00DD CALL R10 1 - 0x8C2C0B0A, // 00DE GETMET R11 R5 K10 - 0x7C2C0200, // 00DF CALL R11 1 - 0x8C30170B, // 00E0 GETMET R12 R11 K11 - 0x58380009, // 00E1 LDCONST R14 K9 - 0x883C0B3A, // 00E2 GETMBR R15 R5 K58 - 0x5C401400, // 00E3 MOVE R16 R10 - 0x7C300800, // 00E4 CALL R12 4 - 0x8C30170B, // 00E5 GETMET R12 R11 K11 - 0x5838000D, // 00E6 LDCONST R14 K13 - 0x883C0B1F, // 00E7 GETMBR R15 R5 K31 - 0x5C401000, // 00E8 MOVE R16 R8 - 0x7C300800, // 00E9 CALL R12 4 - 0x8C301775, // 00EA GETMET R12 R11 K117 - 0x7C300200, // 00EB CALL R12 1 - 0x8C340376, // 00EC GETMET R13 R1 K118 - 0x7C340200, // 00ED CALL R13 1 - 0x0034180D, // 00EE ADD R13 R12 R13 - 0x8C380977, // 00EF GETMET R14 R4 K119 - 0x7C380200, // 00F0 CALL R14 1 - 0x8C381D78, // 00F1 GETMET R14 R14 K120 - 0xB8420200, // 00F2 GETNGBL R16 K1 - 0x8C402179, // 00F3 GETMET R16 R16 K121 - 0x7C400200, // 00F4 CALL R16 1 - 0x5C441A00, // 00F5 MOVE R17 R13 - 0x7C380600, // 00F6 CALL R14 3 - 0x8C3C0B0A, // 00F7 GETMET R15 R5 K10 - 0x7C3C0200, // 00F8 CALL R15 1 - 0x8C401F0B, // 00F9 GETMET R16 R15 K11 - 0x58480005, // 00FA LDCONST R18 K5 - 0x884C0B3A, // 00FB GETMBR R19 R5 K58 - 0x5C501800, // 00FC MOVE R20 R12 - 0x7C400800, // 00FD CALL R16 4 - 0x8C401F0B, // 00FE GETMET R16 R15 K11 - 0x58480009, // 00FF LDCONST R18 K9 - 0x884C0B1F, // 0100 GETMBR R19 R5 K31 - 0x5C501C00, // 0101 MOVE R20 R14 - 0x7C400800, // 0102 CALL R16 4 - 0x54420004, // 0103 LDINT R16 5 - 0x900ED410, // 0104 SETMBR R3 K106 R16 - 0x80041E00, // 0105 RET 1 R15 - 0x7002013D, // 0106 JMP #0245 - 0x5422000A, // 0107 LDINT R8 11 - 0x1C200E08, // 0108 EQ R8 R7 R8 - 0x7822000B, // 0109 JMPF R8 #0116 - 0x8C200541, // 010A GETMET R8 R2 K65 - 0x58280005, // 010B LDCONST R10 K5 - 0x7C200400, // 010C CALL R8 2 - 0x8C24037B, // 010D GETMET R9 R1 K123 - 0x5C2C1000, // 010E MOVE R11 R8 - 0x7C240400, // 010F CALL R9 2 - 0xB8260200, // 0110 GETNGBL R9 K1 - 0x8824137C, // 0111 GETMBR R9 R9 K124 - 0x900EC409, // 0112 SETMBR R3 K98 R9 - 0x4C240000, // 0113 LDNIL R9 - 0x80041200, // 0114 RET 1 R9 - 0x7002012E, // 0115 JMP #0245 - 0x54220005, // 0116 LDINT R8 6 - 0x1C200E08, // 0117 EQ R8 R7 R8 - 0x782200B8, // 0118 JMPF R8 #01D2 - 0xB822FA00, // 0119 GETNGBL R8 K125 - 0x60240008, // 011A GETGBL R9 G8 - 0x5C280400, // 011B MOVE R10 R2 - 0x7C240200, // 011C CALL R9 1 - 0x0026FC09, // 011D ADD R9 K126 R9 - 0x542A0003, // 011E LDINT R10 4 - 0x7C200400, // 011F CALL R8 2 - 0x8C200541, // 0120 GETMET R8 R2 K65 - 0x58280005, // 0121 LDCONST R10 K5 - 0x7C200400, // 0122 CALL R8 2 - 0x8C240541, // 0123 GETMET R9 R2 K65 - 0x582C0009, // 0124 LDCONST R11 K9 - 0x7C240400, // 0125 CALL R9 2 - 0x6028000C, // 0126 GETGBL R10 G12 - 0x5C2C1200, // 0127 MOVE R11 R9 - 0x7C280200, // 0128 CALL R10 1 - 0x1C281505, // 0129 EQ R10 R10 K5 - 0x782A0000, // 012A JMPF R10 #012C - 0x4C240000, // 012B LDNIL R9 - 0x8C280541, // 012C GETMET R10 R2 K65 - 0x5830000D, // 012D LDCONST R12 K13 - 0x7C280400, // 012E CALL R10 2 - 0x8C2C0541, // 012F GETMET R11 R2 K65 - 0x5834000F, // 0130 LDCONST R13 K15 - 0x7C2C0400, // 0131 CALL R11 2 - 0x8C300541, // 0132 GETMET R12 R2 K65 - 0x543A0003, // 0133 LDINT R14 4 - 0x7C300400, // 0134 CALL R12 2 - 0x8C34037F, // 0135 GETMET R13 R1 K127 - 0x7C340200, // 0136 CALL R13 1 - 0x4C380000, // 0137 LDNIL R14 - 0x1C341A0E, // 0138 EQ R13 R13 R14 - 0x78360005, // 0139 JMPF R13 #0140 - 0xB836FA00, // 013A GETNGBL R13 K125 - 0x58380080, // 013B LDCONST R14 K128 - 0x583C000D, // 013C LDCONST R15 K13 - 0x7C340400, // 013D CALL R13 2 - 0x4C340000, // 013E LDNIL R13 - 0x80041A00, // 013F RET 1 R13 - 0x88340136, // 0140 GETMBR R13 R0 K54 - 0x88341B37, // 0141 GETMBR R13 R13 K55 - 0x8C341B81, // 0142 GETMET R13 R13 K129 - 0x7C340200, // 0143 CALL R13 1 - 0x8C381B82, // 0144 GETMET R14 R13 K130 - 0x8C40037F, // 0145 GETMET R16 R1 K127 - 0x7C400200, // 0146 CALL R16 1 - 0x7C380400, // 0147 CALL R14 2 - 0x8C381B83, // 0148 GETMET R14 R13 K131 - 0x5C401000, // 0149 MOVE R16 R8 - 0x5C441200, // 014A MOVE R17 R9 - 0x7C380600, // 014B CALL R14 3 - 0x8C381B84, // 014C GETMET R14 R13 K132 - 0x5C401400, // 014D MOVE R16 R10 - 0x7C380400, // 014E CALL R14 2 - 0x8C381B85, // 014F GETMET R14 R13 K133 - 0x5C401600, // 0150 MOVE R16 R11 - 0x5C441800, // 0151 MOVE R17 R12 - 0x7C380600, // 0152 CALL R14 3 - 0x8C381B86, // 0153 GETMET R14 R13 K134 - 0x8C400387, // 0154 GETMET R16 R1 K135 - 0x7C400200, // 0155 CALL R16 1 - 0x7C380400, // 0156 CALL R14 2 - 0xB83A0200, // 0157 GETNGBL R14 K1 - 0x88381D02, // 0158 GETMBR R14 R14 K2 - 0x8C381D3F, // 0159 GETMET R14 R14 K63 - 0x5C401000, // 015A MOVE R16 R8 - 0x7C380400, // 015B CALL R14 2 - 0x8C3C1D88, // 015C GETMET R15 R14 K136 - 0x54460005, // 015D LDINT R17 6 - 0x7C3C0400, // 015E CALL R15 2 - 0x8C401F41, // 015F GETMET R16 R15 K65 - 0x544A0014, // 0160 LDINT R18 21 - 0x7C400400, // 0161 CALL R16 2 - 0x8C441F41, // 0162 GETMET R17 R15 K65 - 0x544E0010, // 0163 LDINT R19 17 - 0x7C440400, // 0164 CALL R17 2 - 0x5C482000, // 0165 MOVE R18 R16 - 0x784A0001, // 0166 JMPF R18 #0169 - 0x5C482200, // 0167 MOVE R18 R17 - 0x744A0005, // 0168 JMPT R18 #016F - 0xB84AFA00, // 0169 GETNGBL R18 K125 - 0x584C0089, // 016A LDCONST R19 K137 - 0x5850000D, // 016B LDCONST R20 K13 - 0x7C480400, // 016C CALL R18 2 - 0x50480000, // 016D LDBOOL R18 0 0 - 0x80042400, // 016E RET 1 R18 - 0x60480004, // 016F GETGBL R18 G4 - 0x5C4C2000, // 0170 MOVE R19 R16 - 0x7C480200, // 0171 CALL R18 1 - 0x1C482560, // 0172 EQ R18 R18 K96 - 0x784A0007, // 0173 JMPF R18 #017C - 0xB84A5C00, // 0174 GETNGBL R18 K46 - 0x8C48258A, // 0175 GETMET R18 R18 K138 - 0x5C502000, // 0176 MOVE R20 R16 - 0x7C480400, // 0177 CALL R18 2 - 0x8C48258B, // 0178 GETMET R18 R18 K139 - 0x7C480200, // 0179 CALL R18 1 - 0x5C402400, // 017A MOVE R16 R18 - 0x70020002, // 017B JMP #017F - 0x8C48218B, // 017C GETMET R18 R16 K139 - 0x7C480200, // 017D CALL R18 1 - 0x5C402400, // 017E MOVE R16 R18 - 0x60480004, // 017F GETGBL R18 G4 - 0x5C4C2200, // 0180 MOVE R19 R17 - 0x7C480200, // 0181 CALL R18 1 - 0x1C482560, // 0182 EQ R18 R18 K96 - 0x784A0007, // 0183 JMPF R18 #018C - 0xB84A5C00, // 0184 GETNGBL R18 K46 - 0x8C48258A, // 0185 GETMET R18 R18 K138 - 0x5C502200, // 0186 MOVE R20 R17 - 0x7C480400, // 0187 CALL R18 2 - 0x8C48258B, // 0188 GETMET R18 R18 K139 - 0x7C480200, // 0189 CALL R18 1 - 0x5C442400, // 018A MOVE R17 R18 - 0x70020002, // 018B JMP #018F - 0x8C48238B, // 018C GETMET R18 R17 K139 - 0x7C480200, // 018D CALL R18 1 - 0x5C442400, // 018E MOVE R17 R18 - 0x8C48038C, // 018F GETMET R18 R1 K140 - 0x7C480200, // 0190 CALL R18 1 - 0x404E138D, // 0191 CONNECT R19 K9 K141 - 0x94482413, // 0192 GETIDX R18 R18 R19 - 0x604C0015, // 0193 GETGBL R19 G21 - 0x7C4C0000, // 0194 CALL R19 0 - 0x8C4C278E, // 0195 GETMET R19 R19 K142 - 0x5854008F, // 0196 LDCONST R21 K143 - 0x7C4C0400, // 0197 CALL R19 2 - 0x8C500990, // 0198 GETMET R20 R4 K144 - 0x7C500200, // 0199 CALL R20 1 - 0x8C542191, // 019A GETMET R21 R16 K145 - 0x7C540200, // 019B CALL R21 1 - 0x8C542B92, // 019C GETMET R21 R21 K146 - 0x7C540200, // 019D CALL R21 1 - 0x8C582993, // 019E GETMET R22 R20 K147 - 0x5C602400, // 019F MOVE R24 R18 - 0x5C642A00, // 01A0 MOVE R25 R21 - 0x5C682600, // 01A1 MOVE R26 R19 - 0x546E0007, // 01A2 LDINT R27 8 - 0x7C580A00, // 01A3 CALL R22 5 - 0x885C0349, // 01A4 GETMBR R23 R1 K73 - 0x785E0001, // 01A5 JMPF R23 #01A8 - 0x885C0349, // 01A6 GETMBR R23 R1 K73 - 0x70020001, // 01A7 JMP #01AA - 0x885C0136, // 01A8 GETMBR R23 R0 K54 - 0x885C2F4C, // 01A9 GETMBR R23 R23 K76 - 0x8C601B94, // 01AA GETMET R24 R13 K148 - 0x5C682000, // 01AB MOVE R26 R16 - 0x5C6C2200, // 01AC MOVE R27 R17 - 0x5C702C00, // 01AD MOVE R28 R22 - 0x5C742E00, // 01AE MOVE R29 R23 - 0x7C600A00, // 01AF CALL R24 5 - 0x8C601B95, // 01B0 GETMET R24 R13 K149 - 0x7C600200, // 01B1 CALL R24 1 - 0x88600136, // 01B2 GETMBR R24 R0 K54 - 0x8C603196, // 01B3 GETMET R24 R24 K150 - 0x5C681A00, // 01B4 MOVE R26 R13 - 0x7C600400, // 01B5 CALL R24 2 - 0x8C600397, // 01B6 GETMET R24 R1 K151 - 0x7C600200, // 01B7 CALL R24 1 - 0x78620002, // 01B8 JMPF R24 #01BC + 0x8824134A, // 005E GETMBR R9 R9 K74 + 0x8C24136F, // 005F GETMET R9 R9 K111 + 0x5C2C0200, // 0060 MOVE R11 R1 + 0x7C240400, // 0061 CALL R9 2 + 0x80041000, // 0062 RET 1 R8 + 0x70020000, // 0063 JMP #0065 + 0xB006E171, // 0064 RAISE 1 K112 K113 + 0x7002027D, // 0065 JMP #02E4 + 0x5422003D, // 0066 LDINT R8 62 + 0x1C200C08, // 0067 EQ R8 R6 R8 + 0x782201DF, // 0068 JMPF R8 #0249 + 0x1C200F0D, // 0069 EQ R8 R7 K13 + 0x7822001D, // 006A JMPF R8 #0089 + 0x8C200541, // 006B GETMET R8 R2 K65 + 0x58280005, // 006C LDCONST R10 K5 + 0x7C200400, // 006D CALL R8 2 + 0x20241109, // 006E NE R9 R8 K9 + 0x78260006, // 006F JMPF R9 #0077 + 0x2024110D, // 0070 NE R9 R8 K13 + 0x78260004, // 0071 JMPF R9 #0077 + 0xB8260200, // 0072 GETNGBL R9 K1 + 0x88241372, // 0073 GETMBR R9 R9 K114 + 0x900EC609, // 0074 SETMBR R3 K99 R9 + 0x4C240000, // 0075 LDNIL R9 + 0x80041200, // 0076 RET 1 R9 + 0x8C240B0A, // 0077 GETMET R9 R5 K10 + 0x7C240200, // 0078 CALL R9 1 + 0x8C28130B, // 0079 GETMET R10 R9 K11 + 0x58300005, // 007A LDCONST R12 K5 + 0x88340B3A, // 007B GETMBR R13 R5 K58 + 0x1C381109, // 007C EQ R14 R8 K9 + 0x783A0003, // 007D JMPF R14 #0082 + 0xB83A0200, // 007E GETNGBL R14 K1 + 0x8C381D73, // 007F GETMET R14 R14 K115 + 0x7C380200, // 0080 CALL R14 1 + 0x70020002, // 0081 JMP #0085 + 0xB83A0200, // 0082 GETNGBL R14 K1 + 0x8C381D74, // 0083 GETMET R14 R14 K116 + 0x7C380200, // 0084 CALL R14 1 + 0x7C280800, // 0085 CALL R10 4 + 0x900ED70F, // 0086 SETMBR R3 K107 K15 + 0x80041200, // 0087 RET 1 R9 + 0x700201BE, // 0088 JMP #0248 + 0x1C200F05, // 0089 EQ R8 R7 K5 + 0x7822003C, // 008A JMPF R8 #00C8 + 0x8C200541, // 008B GETMET R8 R2 K65 + 0x58280005, // 008C LDCONST R10 K5 + 0x7C200400, // 008D CALL R8 2 + 0x6024000C, // 008E GETGBL R9 G12 + 0x5C281000, // 008F MOVE R10 R8 + 0x7C240200, // 0090 CALL R9 1 + 0x542A001F, // 0091 LDINT R10 32 + 0x2024120A, // 0092 NE R9 R9 R10 + 0x78260001, // 0093 JMPF R9 #0096 + 0x4C240000, // 0094 LDNIL R9 + 0x80041200, // 0095 RET 1 R9 + 0x900ED709, // 0096 SETMBR R3 K107 K9 + 0x8C240B0A, // 0097 GETMET R9 R5 K10 + 0x7C240200, // 0098 CALL R9 1 + 0x8C28130B, // 0099 GETMET R10 R9 K11 + 0x58300009, // 009A LDCONST R12 K9 + 0x88340B3A, // 009B GETMBR R13 R5 K58 + 0xB83A0200, // 009C GETNGBL R14 K1 + 0x8C381D75, // 009D GETMET R14 R14 K117 + 0x7C380200, // 009E CALL R14 1 + 0x7C280800, // 009F CALL R10 4 + 0x8C28130B, // 00A0 GETMET R10 R9 K11 + 0x5830000D, // 00A1 LDCONST R12 K13 + 0x88340B1F, // 00A2 GETMBR R13 R5 K31 + 0x5C381000, // 00A3 MOVE R14 R8 + 0x7C280800, // 00A4 CALL R10 4 + 0x8C28130B, // 00A5 GETMET R10 R9 K11 + 0x5830000F, // 00A6 LDCONST R12 K15 + 0x88340B2A, // 00A7 GETMBR R13 R5 K42 + 0xB83A2400, // 00A8 GETNGBL R14 K18 + 0x8C381D2F, // 00A9 GETMET R14 R14 K47 + 0x7C380200, // 00AA CALL R14 1 + 0x7C280800, // 00AB CALL R10 4 + 0x8C281376, // 00AC GETMET R10 R9 K118 + 0x7C280200, // 00AD CALL R10 1 + 0x8C2C0377, // 00AE GETMET R11 R1 K119 + 0x7C2C0200, // 00AF CALL R11 1 + 0x0030140B, // 00B0 ADD R12 R10 R11 + 0x8C340978, // 00B1 GETMET R13 R4 K120 + 0x7C340200, // 00B2 CALL R13 1 + 0x8C341B79, // 00B3 GETMET R13 R13 K121 + 0xB83E0200, // 00B4 GETNGBL R15 K1 + 0x8C3C1F7A, // 00B5 GETMET R15 R15 K122 + 0x7C3C0200, // 00B6 CALL R15 1 + 0x5C401800, // 00B7 MOVE R16 R12 + 0x7C340600, // 00B8 CALL R13 3 + 0x8C380B0A, // 00B9 GETMET R14 R5 K10 + 0x7C380200, // 00BA CALL R14 1 + 0x8C3C1D0B, // 00BB GETMET R15 R14 K11 + 0x58440005, // 00BC LDCONST R17 K5 + 0x88480B3A, // 00BD GETMBR R18 R5 K58 + 0x5C4C1400, // 00BE MOVE R19 R10 + 0x7C3C0800, // 00BF CALL R15 4 + 0x8C3C1D0B, // 00C0 GETMET R15 R14 K11 + 0x58440009, // 00C1 LDCONST R17 K9 + 0x88480B1F, // 00C2 GETMBR R18 R5 K31 + 0x5C4C1A00, // 00C3 MOVE R19 R13 + 0x7C3C0800, // 00C4 CALL R15 4 + 0x900ED709, // 00C5 SETMBR R3 K107 K9 + 0x80041C00, // 00C6 RET 1 R14 + 0x7002017F, // 00C7 JMP #0248 + 0x54220003, // 00C8 LDINT R8 4 + 0x1C200E08, // 00C9 EQ R8 R7 R8 + 0x7822003C, // 00CA JMPF R8 #0108 + 0x8C200133, // 00CB GETMET R8 R0 K51 + 0x5C280600, // 00CC MOVE R10 R3 + 0x7C200400, // 00CD CALL R8 2 + 0x8C200541, // 00CE GETMET R8 R2 K65 + 0x58280005, // 00CF LDCONST R10 K5 + 0x7C200400, // 00D0 CALL R8 2 + 0x6024000C, // 00D1 GETGBL R9 G12 + 0x5C281000, // 00D2 MOVE R10 R8 + 0x7C240200, // 00D3 CALL R9 1 + 0x542A001F, // 00D4 LDINT R10 32 + 0x2024120A, // 00D5 NE R9 R9 R10 + 0x78260001, // 00D6 JMPF R9 #00D9 + 0x4C240000, // 00D7 LDNIL R9 + 0x80041200, // 00D8 RET 1 R9 + 0x8C240541, // 00D9 GETMET R9 R2 K65 + 0x582C0009, // 00DA LDCONST R11 K9 + 0x50300000, // 00DB LDBOOL R12 0 0 + 0x7C240600, // 00DC CALL R9 3 + 0x8C28037B, // 00DD GETMET R10 R1 K123 + 0x7C280200, // 00DE CALL R10 1 + 0x8C2C0B0A, // 00DF GETMET R11 R5 K10 + 0x7C2C0200, // 00E0 CALL R11 1 + 0x8C30170B, // 00E1 GETMET R12 R11 K11 + 0x58380009, // 00E2 LDCONST R14 K9 + 0x883C0B3A, // 00E3 GETMBR R15 R5 K58 + 0x5C401400, // 00E4 MOVE R16 R10 + 0x7C300800, // 00E5 CALL R12 4 + 0x8C30170B, // 00E6 GETMET R12 R11 K11 + 0x5838000D, // 00E7 LDCONST R14 K13 + 0x883C0B1F, // 00E8 GETMBR R15 R5 K31 + 0x5C401000, // 00E9 MOVE R16 R8 + 0x7C300800, // 00EA CALL R12 4 + 0x8C301776, // 00EB GETMET R12 R11 K118 + 0x7C300200, // 00EC CALL R12 1 + 0x8C340377, // 00ED GETMET R13 R1 K119 + 0x7C340200, // 00EE CALL R13 1 + 0x0034180D, // 00EF ADD R13 R12 R13 + 0x8C380978, // 00F0 GETMET R14 R4 K120 + 0x7C380200, // 00F1 CALL R14 1 + 0x8C381D79, // 00F2 GETMET R14 R14 K121 + 0xB8420200, // 00F3 GETNGBL R16 K1 + 0x8C40217A, // 00F4 GETMET R16 R16 K122 + 0x7C400200, // 00F5 CALL R16 1 + 0x5C441A00, // 00F6 MOVE R17 R13 + 0x7C380600, // 00F7 CALL R14 3 + 0x8C3C0B0A, // 00F8 GETMET R15 R5 K10 + 0x7C3C0200, // 00F9 CALL R15 1 + 0x8C401F0B, // 00FA GETMET R16 R15 K11 + 0x58480005, // 00FB LDCONST R18 K5 + 0x884C0B3A, // 00FC GETMBR R19 R5 K58 + 0x5C501800, // 00FD MOVE R20 R12 + 0x7C400800, // 00FE CALL R16 4 + 0x8C401F0B, // 00FF GETMET R16 R15 K11 + 0x58480009, // 0100 LDCONST R18 K9 + 0x884C0B1F, // 0101 GETMBR R19 R5 K31 + 0x5C501C00, // 0102 MOVE R20 R14 + 0x7C400800, // 0103 CALL R16 4 + 0x54420004, // 0104 LDINT R16 5 + 0x900ED610, // 0105 SETMBR R3 K107 R16 + 0x80041E00, // 0106 RET 1 R15 + 0x7002013F, // 0107 JMP #0248 + 0x5422000A, // 0108 LDINT R8 11 + 0x1C200E08, // 0109 EQ R8 R7 R8 + 0x7822000B, // 010A JMPF R8 #0117 + 0x8C200541, // 010B GETMET R8 R2 K65 + 0x58280005, // 010C LDCONST R10 K5 + 0x7C200400, // 010D CALL R8 2 + 0x8C24037C, // 010E GETMET R9 R1 K124 + 0x5C2C1000, // 010F MOVE R11 R8 + 0x7C240400, // 0110 CALL R9 2 + 0xB8260200, // 0111 GETNGBL R9 K1 + 0x8824137D, // 0112 GETMBR R9 R9 K125 + 0x900EC609, // 0113 SETMBR R3 K99 R9 + 0x4C240000, // 0114 LDNIL R9 + 0x80041200, // 0115 RET 1 R9 + 0x70020130, // 0116 JMP #0248 + 0x54220005, // 0117 LDINT R8 6 + 0x1C200E08, // 0118 EQ R8 R7 R8 + 0x782200BA, // 0119 JMPF R8 #01D5 + 0xB822FC00, // 011A GETNGBL R8 K126 + 0x60240008, // 011B GETGBL R9 G8 + 0x5C280400, // 011C MOVE R10 R2 + 0x7C240200, // 011D CALL R9 1 + 0x0026FE09, // 011E ADD R9 K127 R9 + 0x542A0003, // 011F LDINT R10 4 + 0x7C200400, // 0120 CALL R8 2 + 0x8C200541, // 0121 GETMET R8 R2 K65 + 0x58280005, // 0122 LDCONST R10 K5 + 0x7C200400, // 0123 CALL R8 2 + 0x8C240541, // 0124 GETMET R9 R2 K65 + 0x582C0009, // 0125 LDCONST R11 K9 + 0x7C240400, // 0126 CALL R9 2 + 0x6028000C, // 0127 GETGBL R10 G12 + 0x5C2C1200, // 0128 MOVE R11 R9 + 0x7C280200, // 0129 CALL R10 1 + 0x1C281505, // 012A EQ R10 R10 K5 + 0x782A0000, // 012B JMPF R10 #012D + 0x4C240000, // 012C LDNIL R9 + 0x8C280541, // 012D GETMET R10 R2 K65 + 0x5830000D, // 012E LDCONST R12 K13 + 0x7C280400, // 012F CALL R10 2 + 0x8C2C0541, // 0130 GETMET R11 R2 K65 + 0x5834000F, // 0131 LDCONST R13 K15 + 0x7C2C0400, // 0132 CALL R11 2 + 0x8C300541, // 0133 GETMET R12 R2 K65 + 0x543A0003, // 0134 LDINT R14 4 + 0x7C300400, // 0135 CALL R12 2 + 0x8C340380, // 0136 GETMET R13 R1 K128 + 0x7C340200, // 0137 CALL R13 1 + 0x4C380000, // 0138 LDNIL R14 + 0x1C341A0E, // 0139 EQ R13 R13 R14 + 0x78360005, // 013A JMPF R13 #0141 + 0xB836FC00, // 013B GETNGBL R13 K126 + 0x58380081, // 013C LDCONST R14 K129 + 0x583C000D, // 013D LDCONST R15 K13 + 0x7C340400, // 013E CALL R13 2 + 0x4C340000, // 013F LDNIL R13 + 0x80041A00, // 0140 RET 1 R13 + 0x88340136, // 0141 GETMBR R13 R0 K54 + 0x88341B37, // 0142 GETMBR R13 R13 K55 + 0x8C341B82, // 0143 GETMET R13 R13 K130 + 0x7C340200, // 0144 CALL R13 1 + 0x8C381B83, // 0145 GETMET R14 R13 K131 + 0x8C400380, // 0146 GETMET R16 R1 K128 + 0x7C400200, // 0147 CALL R16 1 + 0x7C380400, // 0148 CALL R14 2 + 0x8C381B84, // 0149 GETMET R14 R13 K132 + 0x5C401000, // 014A MOVE R16 R8 + 0x5C441200, // 014B MOVE R17 R9 + 0x7C380600, // 014C CALL R14 3 + 0x8C381B85, // 014D GETMET R14 R13 K133 + 0x5C401400, // 014E MOVE R16 R10 + 0x7C380400, // 014F CALL R14 2 + 0x8C381B86, // 0150 GETMET R14 R13 K134 + 0x5C401600, // 0151 MOVE R16 R11 + 0x5C441800, // 0152 MOVE R17 R12 + 0x7C380600, // 0153 CALL R14 3 + 0x8C381B87, // 0154 GETMET R14 R13 K135 + 0x8C400388, // 0155 GETMET R16 R1 K136 + 0x7C400200, // 0156 CALL R16 1 + 0x7C380400, // 0157 CALL R14 2 + 0xB83A0200, // 0158 GETNGBL R14 K1 + 0x88381D02, // 0159 GETMBR R14 R14 K2 + 0x8C381D3F, // 015A GETMET R14 R14 K63 + 0x5C401000, // 015B MOVE R16 R8 + 0x7C380400, // 015C CALL R14 2 + 0x8C3C1D89, // 015D GETMET R15 R14 K137 + 0x54460005, // 015E LDINT R17 6 + 0x7C3C0400, // 015F CALL R15 2 + 0x8C401F41, // 0160 GETMET R16 R15 K65 + 0x544A0014, // 0161 LDINT R18 21 + 0x7C400400, // 0162 CALL R16 2 + 0x8C441F41, // 0163 GETMET R17 R15 K65 + 0x544E0010, // 0164 LDINT R19 17 + 0x7C440400, // 0165 CALL R17 2 + 0x5C482000, // 0166 MOVE R18 R16 + 0x784A0001, // 0167 JMPF R18 #016A + 0x5C482200, // 0168 MOVE R18 R17 + 0x744A0005, // 0169 JMPT R18 #0170 + 0xB84AFC00, // 016A GETNGBL R18 K126 + 0x584C008A, // 016B LDCONST R19 K138 + 0x5850000D, // 016C LDCONST R20 K13 + 0x7C480400, // 016D CALL R18 2 + 0x50480000, // 016E LDBOOL R18 0 0 + 0x80042400, // 016F RET 1 R18 + 0x60480004, // 0170 GETGBL R18 G4 + 0x5C4C2000, // 0171 MOVE R19 R16 + 0x7C480200, // 0172 CALL R18 1 + 0x1C482561, // 0173 EQ R18 R18 K97 + 0x784A0007, // 0174 JMPF R18 #017D + 0xB84A5C00, // 0175 GETNGBL R18 K46 + 0x8C48258B, // 0176 GETMET R18 R18 K139 + 0x5C502000, // 0177 MOVE R20 R16 + 0x7C480400, // 0178 CALL R18 2 + 0x8C48258C, // 0179 GETMET R18 R18 K140 + 0x7C480200, // 017A CALL R18 1 + 0x5C402400, // 017B MOVE R16 R18 + 0x70020002, // 017C JMP #0180 + 0x8C48218C, // 017D GETMET R18 R16 K140 + 0x7C480200, // 017E CALL R18 1 + 0x5C402400, // 017F MOVE R16 R18 + 0x60480004, // 0180 GETGBL R18 G4 + 0x5C4C2200, // 0181 MOVE R19 R17 + 0x7C480200, // 0182 CALL R18 1 + 0x1C482561, // 0183 EQ R18 R18 K97 + 0x784A0007, // 0184 JMPF R18 #018D + 0xB84A5C00, // 0185 GETNGBL R18 K46 + 0x8C48258B, // 0186 GETMET R18 R18 K139 + 0x5C502200, // 0187 MOVE R20 R17 + 0x7C480400, // 0188 CALL R18 2 + 0x8C48258C, // 0189 GETMET R18 R18 K140 + 0x7C480200, // 018A CALL R18 1 + 0x5C442400, // 018B MOVE R17 R18 + 0x70020002, // 018C JMP #0190 + 0x8C48238C, // 018D GETMET R18 R17 K140 + 0x7C480200, // 018E CALL R18 1 + 0x5C442400, // 018F MOVE R17 R18 + 0x8C48038D, // 0190 GETMET R18 R1 K141 + 0x7C480200, // 0191 CALL R18 1 + 0x404E138E, // 0192 CONNECT R19 K9 K142 + 0x94482413, // 0193 GETIDX R18 R18 R19 + 0x604C0015, // 0194 GETGBL R19 G21 + 0x7C4C0000, // 0195 CALL R19 0 + 0x8C4C278F, // 0196 GETMET R19 R19 K143 + 0x58540090, // 0197 LDCONST R21 K144 + 0x7C4C0400, // 0198 CALL R19 2 + 0x8C500991, // 0199 GETMET R20 R4 K145 + 0x7C500200, // 019A CALL R20 1 + 0x8C542192, // 019B GETMET R21 R16 K146 + 0x7C540200, // 019C CALL R21 1 + 0x8C542B93, // 019D GETMET R21 R21 K147 + 0x7C540200, // 019E CALL R21 1 + 0x8C582994, // 019F GETMET R22 R20 K148 + 0x5C602400, // 01A0 MOVE R24 R18 + 0x5C642A00, // 01A1 MOVE R25 R21 + 0x5C682600, // 01A2 MOVE R26 R19 + 0x546E0007, // 01A3 LDINT R27 8 + 0x7C580A00, // 01A4 CALL R22 5 + 0x885C0349, // 01A5 GETMBR R23 R1 K73 + 0x785E0001, // 01A6 JMPF R23 #01A9 + 0x885C0349, // 01A7 GETMBR R23 R1 K73 + 0x70020002, // 01A8 JMP #01AC + 0x885C0136, // 01A9 GETMBR R23 R0 K54 + 0x885C2F4A, // 01AA GETMBR R23 R23 K74 + 0x885C2F4D, // 01AB GETMBR R23 R23 K77 + 0x8C601B95, // 01AC GETMET R24 R13 K149 + 0x5C682000, // 01AD MOVE R26 R16 + 0x5C6C2200, // 01AE MOVE R27 R17 + 0x5C702C00, // 01AF MOVE R28 R22 + 0x5C742E00, // 01B0 MOVE R29 R23 + 0x7C600A00, // 01B1 CALL R24 5 + 0x8C601B96, // 01B2 GETMET R24 R13 K150 + 0x7C600200, // 01B3 CALL R24 1 + 0x88600136, // 01B4 GETMBR R24 R0 K54 + 0x8860314A, // 01B5 GETMBR R24 R24 K74 + 0x8C603197, // 01B6 GETMET R24 R24 K151 + 0x5C681A00, // 01B7 MOVE R26 R13 + 0x7C600400, // 01B8 CALL R24 2 0x8C600398, // 01B9 GETMET R24 R1 K152 - 0x546A003B, // 01BA LDINT R26 60 - 0x7C600400, // 01BB CALL R24 2 - 0x8C601B99, // 01BC GETMET R24 R13 K153 - 0x7C600200, // 01BD CALL R24 1 - 0x8C601B9A, // 01BE GETMET R24 R13 K154 - 0x7C600200, // 01BF CALL R24 1 - 0x8C600B0A, // 01C0 GETMET R24 R5 K10 - 0x7C600200, // 01C1 CALL R24 1 - 0x8C64310B, // 01C2 GETMET R25 R24 K11 - 0x586C0005, // 01C3 LDCONST R27 K5 - 0x88700B0E, // 01C4 GETMBR R28 R5 K14 - 0xB8760200, // 01C5 GETNGBL R29 K1 - 0x88743B7C, // 01C6 GETMBR R29 R29 K124 - 0x7C640800, // 01C7 CALL R25 4 - 0x8C64310B, // 01C8 GETMET R25 R24 K11 - 0x586C0009, // 01C9 LDCONST R27 K9 - 0x88700B0E, // 01CA GETMBR R28 R5 K14 - 0x8C741B3D, // 01CB GETMET R29 R13 K61 - 0x7C740200, // 01CC CALL R29 1 - 0x7C640800, // 01CD CALL R25 4 - 0x54660007, // 01CE LDINT R25 8 - 0x900ED419, // 01CF SETMBR R3 K106 R25 - 0x80043000, // 01D0 RET 1 R24 - 0x70020072, // 01D1 JMP #0245 - 0x54220008, // 01D2 LDINT R8 9 - 0x1C200E08, // 01D3 EQ R8 R7 R8 - 0x7822002B, // 01D4 JMPF R8 #0201 - 0x8C200541, // 01D5 GETMET R8 R2 K65 - 0x58280005, // 01D6 LDCONST R10 K5 - 0x7C200400, // 01D7 CALL R8 2 - 0x8C24039B, // 01D8 GETMET R9 R1 K155 - 0x5C2C1000, // 01D9 MOVE R11 R8 - 0x7C240400, // 01DA CALL R9 2 - 0xB826FA00, // 01DB GETNGBL R9 K125 - 0x60280018, // 01DC GETGBL R10 G24 - 0x582C009C, // 01DD LDCONST R11 K156 - 0x88300349, // 01DE GETMBR R12 R1 K73 - 0x8C30199D, // 01DF GETMET R12 R12 K157 - 0x7C300200, // 01E0 CALL R12 1 - 0x8C301991, // 01E1 GETMET R12 R12 K145 - 0x7C300200, // 01E2 CALL R12 1 - 0x8C301992, // 01E3 GETMET R12 R12 K146 - 0x7C300200, // 01E4 CALL R12 1 - 0x8C30199E, // 01E5 GETMET R12 R12 K158 - 0x7C300200, // 01E6 CALL R12 1 - 0x60340008, // 01E7 GETGBL R13 G8 - 0x5C381000, // 01E8 MOVE R14 R8 - 0x7C340200, // 01E9 CALL R13 1 - 0x7C280600, // 01EA CALL R10 3 - 0x582C000F, // 01EB LDCONST R11 K15 - 0x7C240400, // 01EC CALL R9 2 - 0x8C240B0A, // 01ED GETMET R9 R5 K10 - 0x7C240200, // 01EE CALL R9 1 - 0x8C28130B, // 01EF GETMET R10 R9 K11 - 0x58300005, // 01F0 LDCONST R12 K5 - 0x88340B0E, // 01F1 GETMBR R13 R5 K14 - 0xB83A0200, // 01F2 GETNGBL R14 K1 - 0x88381D7C, // 01F3 GETMBR R14 R14 K124 - 0x7C280800, // 01F4 CALL R10 4 - 0x8C28130B, // 01F5 GETMET R10 R9 K11 - 0x58300009, // 01F6 LDCONST R12 K9 - 0x88340B0E, // 01F7 GETMBR R13 R5 K14 - 0x8C380335, // 01F8 GETMET R14 R1 K53 - 0x7C380200, // 01F9 CALL R14 1 - 0x8C381D3D, // 01FA GETMET R14 R14 K61 - 0x7C380200, // 01FB CALL R14 1 - 0x7C280800, // 01FC CALL R10 4 - 0x542A0007, // 01FD LDINT R10 8 - 0x900ED40A, // 01FE SETMBR R3 K106 R10 - 0x80041200, // 01FF RET 1 R9 - 0x70020043, // 0200 JMP #0245 - 0x54220009, // 0201 LDINT R8 10 - 0x1C200E08, // 0202 EQ R8 R7 R8 - 0x78220040, // 0203 JMPF R8 #0245 - 0x8C200541, // 0204 GETMET R8 R2 K65 - 0x58280005, // 0205 LDCONST R10 K5 - 0x7C200400, // 0206 CALL R8 2 - 0x60240008, // 0207 GETGBL R9 G8 - 0x5C281000, // 0208 MOVE R10 R8 - 0x7C240200, // 0209 CALL R9 1 - 0x00273E09, // 020A ADD R9 K159 R9 - 0x900EFA09, // 020B SETMBR R3 K125 R9 - 0x60240010, // 020C GETGBL R9 G16 - 0x88280136, // 020D GETMBR R10 R0 K54 - 0x88281537, // 020E GETMBR R10 R10 K55 - 0x8C281538, // 020F GETMET R10 R10 K56 - 0x7C280200, // 0210 CALL R10 1 - 0x7C240200, // 0211 CALL R9 1 - 0xA8020020, // 0212 EXBLK 0 #0234 - 0x5C281200, // 0213 MOVE R10 R9 - 0x7C280000, // 0214 CALL R10 0 - 0x8C2C153D, // 0215 GETMET R11 R10 K61 - 0x7C2C0200, // 0216 CALL R11 1 - 0x1C2C1608, // 0217 EQ R11 R11 R8 - 0x782E0018, // 0218 JMPF R11 #0232 - 0x8C2C15A0, // 0219 GETMET R11 R10 K160 - 0x7C2C0200, // 021A CALL R11 1 - 0xB82E2400, // 021B GETNGBL R11 K18 - 0x8C2C17A1, // 021C GETMET R11 R11 K161 - 0x543607CF, // 021D LDINT R13 2000 - 0x84380000, // 021E CLOSURE R14 P0 - 0x7C2C0600, // 021F CALL R11 3 - 0x8C2C0B0A, // 0220 GETMET R11 R5 K10 - 0x7C2C0200, // 0221 CALL R11 1 - 0x8C30170B, // 0222 GETMET R12 R11 K11 - 0x58380005, // 0223 LDCONST R14 K5 - 0x883C0B0E, // 0224 GETMBR R15 R5 K14 - 0xB8420200, // 0225 GETNGBL R16 K1 - 0x8840217C, // 0226 GETMBR R16 R16 K124 - 0x7C300800, // 0227 CALL R12 4 - 0x8C30170B, // 0228 GETMET R12 R11 K11 - 0x58380009, // 0229 LDCONST R14 K9 - 0x883C0B0E, // 022A GETMBR R15 R5 K14 - 0x5C401000, // 022B MOVE R16 R8 - 0x7C300800, // 022C CALL R12 4 - 0x54320007, // 022D LDINT R12 8 - 0x900ED40C, // 022E SETMBR R3 K106 R12 - 0xA0000000, // 022F CLOSE R0 - 0xA8040001, // 0230 EXBLK 1 1 - 0x80041600, // 0231 RET 1 R11 - 0xA0240000, // 0232 CLOSE R9 - 0x7001FFDE, // 0233 JMP #0213 - 0x5824003E, // 0234 LDCONST R9 K62 - 0xAC240200, // 0235 CATCH R9 1 0 - 0xB0080000, // 0236 RAISE 2 R0 R0 - 0xB826FA00, // 0237 GETNGBL R9 K125 - 0x60280008, // 0238 GETGBL R10 G8 - 0x5C2C1000, // 0239 MOVE R11 R8 - 0x7C280200, // 023A CALL R10 1 - 0x002B440A, // 023B ADD R10 K162 R10 - 0x002815A3, // 023C ADD R10 R10 K163 - 0x582C000D, // 023D LDCONST R11 K13 - 0x7C240400, // 023E CALL R9 2 - 0xB8260200, // 023F GETNGBL R9 K1 - 0x88241364, // 0240 GETMBR R9 R9 K100 - 0x900EC409, // 0241 SETMBR R3 K98 R9 - 0x4C240000, // 0242 LDNIL R9 - 0xA0000000, // 0243 CLOSE R0 - 0x80041200, // 0244 RET 1 R9 - 0x70020098, // 0245 JMP #02DF - 0x5422003B, // 0246 LDINT R8 60 - 0x1C200C08, // 0247 EQ R8 R6 R8 - 0x78220082, // 0248 JMPF R8 #02CC - 0x1C200F05, // 0249 EQ R8 R7 K5 - 0x78220063, // 024A JMPF R8 #02AF - 0x8C200541, // 024B GETMET R8 R2 K65 - 0x58280005, // 024C LDCONST R10 K5 - 0x7C200400, // 024D CALL R8 2 - 0x8C240541, // 024E GETMET R9 R2 K65 - 0x582C0009, // 024F LDCONST R11 K9 - 0x7C240400, // 0250 CALL R9 2 - 0x8C280541, // 0251 GETMET R10 R2 K65 - 0x5830000D, // 0252 LDCONST R12 K13 - 0x7C280400, // 0253 CALL R10 2 - 0x8C2C0541, // 0254 GETMET R11 R2 K65 - 0x5834000F, // 0255 LDCONST R13 K15 - 0x7C2C0400, // 0256 CALL R11 2 - 0x8C300541, // 0257 GETMET R12 R2 K65 - 0x543A0003, // 0258 LDINT R14 4 - 0x7C300400, // 0259 CALL R12 2 - 0xB836FA00, // 025A GETNGBL R13 K125 - 0x60380018, // 025B GETGBL R14 G24 - 0x583C00A4, // 025C LDCONST R15 K164 - 0x5C401000, // 025D MOVE R16 R8 - 0x8C44139E, // 025E GETMET R17 R9 K158 - 0x7C440200, // 025F CALL R17 1 - 0x5C481400, // 0260 MOVE R18 R10 - 0x5C4C1600, // 0261 MOVE R19 R11 - 0x8C50199E, // 0262 GETMET R20 R12 K158 - 0x7C500200, // 0263 CALL R20 1 - 0x7C380C00, // 0264 CALL R14 6 - 0x543E0003, // 0265 LDINT R15 4 - 0x7C340400, // 0266 CALL R13 2 - 0x4C340000, // 0267 LDNIL R13 - 0x1C34100D, // 0268 EQ R13 R8 R13 - 0x7436000B, // 0269 JMPT R13 #0276 + 0x7C600200, // 01BA CALL R24 1 + 0x78620002, // 01BB JMPF R24 #01BF + 0x8C600399, // 01BC GETMET R24 R1 K153 + 0x546A003B, // 01BD LDINT R26 60 + 0x7C600400, // 01BE CALL R24 2 + 0x8C601B9A, // 01BF GETMET R24 R13 K154 + 0x7C600200, // 01C0 CALL R24 1 + 0x8C601B9B, // 01C1 GETMET R24 R13 K155 + 0x7C600200, // 01C2 CALL R24 1 + 0x8C600B0A, // 01C3 GETMET R24 R5 K10 + 0x7C600200, // 01C4 CALL R24 1 + 0x8C64310B, // 01C5 GETMET R25 R24 K11 + 0x586C0005, // 01C6 LDCONST R27 K5 + 0x88700B0E, // 01C7 GETMBR R28 R5 K14 + 0xB8760200, // 01C8 GETNGBL R29 K1 + 0x88743B7D, // 01C9 GETMBR R29 R29 K125 + 0x7C640800, // 01CA CALL R25 4 + 0x8C64310B, // 01CB GETMET R25 R24 K11 + 0x586C0009, // 01CC LDCONST R27 K9 + 0x88700B0E, // 01CD GETMBR R28 R5 K14 + 0x8C741B3D, // 01CE GETMET R29 R13 K61 + 0x7C740200, // 01CF CALL R29 1 + 0x7C640800, // 01D0 CALL R25 4 + 0x54660007, // 01D1 LDINT R25 8 + 0x900ED619, // 01D2 SETMBR R3 K107 R25 + 0x80043000, // 01D3 RET 1 R24 + 0x70020072, // 01D4 JMP #0248 + 0x54220008, // 01D5 LDINT R8 9 + 0x1C200E08, // 01D6 EQ R8 R7 R8 + 0x7822002B, // 01D7 JMPF R8 #0204 + 0x8C200541, // 01D8 GETMET R8 R2 K65 + 0x58280005, // 01D9 LDCONST R10 K5 + 0x7C200400, // 01DA CALL R8 2 + 0x8C24039C, // 01DB GETMET R9 R1 K156 + 0x5C2C1000, // 01DC MOVE R11 R8 + 0x7C240400, // 01DD CALL R9 2 + 0xB826FC00, // 01DE GETNGBL R9 K126 + 0x60280018, // 01DF GETGBL R10 G24 + 0x582C009D, // 01E0 LDCONST R11 K157 + 0x88300349, // 01E1 GETMBR R12 R1 K73 + 0x8C30199E, // 01E2 GETMET R12 R12 K158 + 0x7C300200, // 01E3 CALL R12 1 + 0x8C301992, // 01E4 GETMET R12 R12 K146 + 0x7C300200, // 01E5 CALL R12 1 + 0x8C301993, // 01E6 GETMET R12 R12 K147 + 0x7C300200, // 01E7 CALL R12 1 + 0x8C30199F, // 01E8 GETMET R12 R12 K159 + 0x7C300200, // 01E9 CALL R12 1 + 0x60340008, // 01EA GETGBL R13 G8 + 0x5C381000, // 01EB MOVE R14 R8 + 0x7C340200, // 01EC CALL R13 1 + 0x7C280600, // 01ED CALL R10 3 + 0x582C000F, // 01EE LDCONST R11 K15 + 0x7C240400, // 01EF CALL R9 2 + 0x8C240B0A, // 01F0 GETMET R9 R5 K10 + 0x7C240200, // 01F1 CALL R9 1 + 0x8C28130B, // 01F2 GETMET R10 R9 K11 + 0x58300005, // 01F3 LDCONST R12 K5 + 0x88340B0E, // 01F4 GETMBR R13 R5 K14 + 0xB83A0200, // 01F5 GETNGBL R14 K1 + 0x88381D7D, // 01F6 GETMBR R14 R14 K125 + 0x7C280800, // 01F7 CALL R10 4 + 0x8C28130B, // 01F8 GETMET R10 R9 K11 + 0x58300009, // 01F9 LDCONST R12 K9 + 0x88340B0E, // 01FA GETMBR R13 R5 K14 + 0x8C380335, // 01FB GETMET R14 R1 K53 + 0x7C380200, // 01FC CALL R14 1 + 0x8C381D3D, // 01FD GETMET R14 R14 K61 + 0x7C380200, // 01FE CALL R14 1 + 0x7C280800, // 01FF CALL R10 4 + 0x542A0007, // 0200 LDINT R10 8 + 0x900ED60A, // 0201 SETMBR R3 K107 R10 + 0x80041200, // 0202 RET 1 R9 + 0x70020043, // 0203 JMP #0248 + 0x54220009, // 0204 LDINT R8 10 + 0x1C200E08, // 0205 EQ R8 R7 R8 + 0x78220040, // 0206 JMPF R8 #0248 + 0x8C200541, // 0207 GETMET R8 R2 K65 + 0x58280005, // 0208 LDCONST R10 K5 + 0x7C200400, // 0209 CALL R8 2 + 0x60240008, // 020A GETGBL R9 G8 + 0x5C281000, // 020B MOVE R10 R8 + 0x7C240200, // 020C CALL R9 1 + 0x00274009, // 020D ADD R9 K160 R9 + 0x900EFC09, // 020E SETMBR R3 K126 R9 + 0x60240010, // 020F GETGBL R9 G16 + 0x88280136, // 0210 GETMBR R10 R0 K54 + 0x88281537, // 0211 GETMBR R10 R10 K55 + 0x8C281538, // 0212 GETMET R10 R10 K56 + 0x7C280200, // 0213 CALL R10 1 + 0x7C240200, // 0214 CALL R9 1 + 0xA8020020, // 0215 EXBLK 0 #0237 + 0x5C281200, // 0216 MOVE R10 R9 + 0x7C280000, // 0217 CALL R10 0 + 0x8C2C153D, // 0218 GETMET R11 R10 K61 + 0x7C2C0200, // 0219 CALL R11 1 + 0x1C2C1608, // 021A EQ R11 R11 R8 + 0x782E0018, // 021B JMPF R11 #0235 + 0x8C2C15A1, // 021C GETMET R11 R10 K161 + 0x7C2C0200, // 021D CALL R11 1 + 0xB82E2400, // 021E GETNGBL R11 K18 + 0x8C2C17A2, // 021F GETMET R11 R11 K162 + 0x543607CF, // 0220 LDINT R13 2000 + 0x84380000, // 0221 CLOSURE R14 P0 + 0x7C2C0600, // 0222 CALL R11 3 + 0x8C2C0B0A, // 0223 GETMET R11 R5 K10 + 0x7C2C0200, // 0224 CALL R11 1 + 0x8C30170B, // 0225 GETMET R12 R11 K11 + 0x58380005, // 0226 LDCONST R14 K5 + 0x883C0B0E, // 0227 GETMBR R15 R5 K14 + 0xB8420200, // 0228 GETNGBL R16 K1 + 0x8840217D, // 0229 GETMBR R16 R16 K125 + 0x7C300800, // 022A CALL R12 4 + 0x8C30170B, // 022B GETMET R12 R11 K11 + 0x58380009, // 022C LDCONST R14 K9 + 0x883C0B0E, // 022D GETMBR R15 R5 K14 + 0x5C401000, // 022E MOVE R16 R8 + 0x7C300800, // 022F CALL R12 4 + 0x54320007, // 0230 LDINT R12 8 + 0x900ED60C, // 0231 SETMBR R3 K107 R12 + 0xA0000000, // 0232 CLOSE R0 + 0xA8040001, // 0233 EXBLK 1 1 + 0x80041600, // 0234 RET 1 R11 + 0xA0240000, // 0235 CLOSE R9 + 0x7001FFDE, // 0236 JMP #0216 + 0x5824003E, // 0237 LDCONST R9 K62 + 0xAC240200, // 0238 CATCH R9 1 0 + 0xB0080000, // 0239 RAISE 2 R0 R0 + 0xB826FC00, // 023A GETNGBL R9 K126 + 0x60280008, // 023B GETGBL R10 G8 + 0x5C2C1000, // 023C MOVE R11 R8 + 0x7C280200, // 023D CALL R10 1 + 0x002B460A, // 023E ADD R10 K163 R10 + 0x002815A4, // 023F ADD R10 R10 K164 + 0x582C000D, // 0240 LDCONST R11 K13 + 0x7C240400, // 0241 CALL R9 2 + 0xB8260200, // 0242 GETNGBL R9 K1 + 0x88241365, // 0243 GETMBR R9 R9 K101 + 0x900EC609, // 0244 SETMBR R3 K99 R9 + 0x4C240000, // 0245 LDNIL R9 + 0xA0000000, // 0246 CLOSE R0 + 0x80041200, // 0247 RET 1 R9 + 0x7002009A, // 0248 JMP #02E4 + 0x5422003B, // 0249 LDINT R8 60 + 0x1C200C08, // 024A EQ R8 R6 R8 + 0x78220084, // 024B JMPF R8 #02D1 + 0x1C200F05, // 024C EQ R8 R7 K5 + 0x78220064, // 024D JMPF R8 #02B3 + 0x8C200541, // 024E GETMET R8 R2 K65 + 0x58280005, // 024F LDCONST R10 K5 + 0x7C200400, // 0250 CALL R8 2 + 0x8C240541, // 0251 GETMET R9 R2 K65 + 0x582C0009, // 0252 LDCONST R11 K9 + 0x7C240400, // 0253 CALL R9 2 + 0x8C280541, // 0254 GETMET R10 R2 K65 + 0x5830000D, // 0255 LDCONST R12 K13 + 0x7C280400, // 0256 CALL R10 2 + 0x8C2C0541, // 0257 GETMET R11 R2 K65 + 0x5834000F, // 0258 LDCONST R13 K15 + 0x7C2C0400, // 0259 CALL R11 2 + 0x8C300541, // 025A GETMET R12 R2 K65 + 0x543A0003, // 025B LDINT R14 4 + 0x7C300400, // 025C CALL R12 2 + 0xB836FC00, // 025D GETNGBL R13 K126 + 0x60380018, // 025E GETGBL R14 G24 + 0x583C00A5, // 025F LDCONST R15 K165 + 0x5C401000, // 0260 MOVE R16 R8 + 0x8C44139F, // 0261 GETMET R17 R9 K159 + 0x7C440200, // 0262 CALL R17 1 + 0x5C481400, // 0263 MOVE R18 R10 + 0x5C4C1600, // 0264 MOVE R19 R11 + 0x8C50199F, // 0265 GETMET R20 R12 K159 + 0x7C500200, // 0266 CALL R20 1 + 0x7C380C00, // 0267 CALL R14 6 + 0x543E0003, // 0268 LDINT R15 4 + 0x7C340400, // 0269 CALL R13 2 0x4C340000, // 026A LDNIL R13 - 0x1C34120D, // 026B EQ R13 R9 R13 - 0x74360008, // 026C JMPT R13 #0276 + 0x1C34100D, // 026B EQ R13 R8 R13 + 0x7436000B, // 026C JMPT R13 #0279 0x4C340000, // 026D LDNIL R13 - 0x1C34140D, // 026E EQ R13 R10 R13 - 0x74360005, // 026F JMPT R13 #0276 + 0x1C34120D, // 026E EQ R13 R9 R13 + 0x74360008, // 026F JMPT R13 #0279 0x4C340000, // 0270 LDNIL R13 - 0x1C34160D, // 0271 EQ R13 R11 R13 - 0x74360002, // 0272 JMPT R13 #0276 + 0x1C34140D, // 0271 EQ R13 R10 R13 + 0x74360005, // 0272 JMPT R13 #0279 0x4C340000, // 0273 LDNIL R13 - 0x1C34180D, // 0274 EQ R13 R12 R13 - 0x78360005, // 0275 JMPF R13 #027C - 0xB8360200, // 0276 GETNGBL R13 K1 - 0x88341BA5, // 0277 GETMBR R13 R13 K165 - 0x900EC40D, // 0278 SETMBR R3 K98 R13 - 0x4C340000, // 0279 LDNIL R13 - 0xA0000000, // 027A CLOSE R0 - 0x80041A00, // 027B RET 1 R13 - 0x6034000C, // 027C GETGBL R13 G12 - 0x5C381200, // 027D MOVE R14 R9 - 0x7C340200, // 027E CALL R13 1 - 0x543A001F, // 027F LDINT R14 32 - 0x543E0040, // 0280 LDINT R15 65 - 0x00381C0F, // 0281 ADD R14 R14 R15 - 0x20341A0E, // 0282 NE R13 R13 R14 - 0x7436000B, // 0283 JMPT R13 #0290 - 0x6034000C, // 0284 GETGBL R13 G12 - 0x5C381800, // 0285 MOVE R14 R12 - 0x7C340200, // 0286 CALL R13 1 - 0x543A000F, // 0287 LDINT R14 16 - 0x14341A0E, // 0288 LT R13 R13 R14 - 0x74360005, // 0289 JMPT R13 #0290 - 0x6034000C, // 028A GETGBL R13 G12 - 0x5C381800, // 028B MOVE R14 R12 - 0x7C340200, // 028C CALL R13 1 - 0x543A001F, // 028D LDINT R14 32 - 0x24341A0E, // 028E GT R13 R13 R14 - 0x78360009, // 028F JMPF R13 #029A - 0xB836FA00, // 0290 GETNGBL R13 K125 - 0x583800A6, // 0291 LDCONST R14 K166 - 0x583C000D, // 0292 LDCONST R15 K13 - 0x7C340400, // 0293 CALL R13 2 - 0xB8360200, // 0294 GETNGBL R13 K1 - 0x88341B63, // 0295 GETMBR R13 R13 K99 - 0x900EC40D, // 0296 SETMBR R3 K98 R13 - 0x4C340000, // 0297 LDNIL R13 - 0xA0000000, // 0298 CLOSE R0 - 0x80041A00, // 0299 RET 1 R13 - 0x5436001E, // 029A LDINT R13 31 - 0x40360A0D, // 029B CONNECT R13 K5 R13 - 0x9434120D, // 029C GETIDX R13 R9 R13 - 0x543A001F, // 029D LDINT R14 32 - 0x40381D8D, // 029E CONNECT R14 R14 K141 - 0x9438120E, // 029F GETIDX R14 R9 R14 - 0x883C0136, // 02A0 GETMBR R15 R0 K54 - 0x8C3C1FA7, // 02A1 GETMET R15 R15 K167 - 0x5C441000, // 02A2 MOVE R17 R8 - 0x5C481600, // 02A3 MOVE R18 R11 - 0x5C4C1400, // 02A4 MOVE R19 R10 - 0x5C501800, // 02A5 MOVE R20 R12 - 0x5C541A00, // 02A6 MOVE R21 R13 - 0x5C581C00, // 02A7 MOVE R22 R14 - 0x8C5C0335, // 02A8 GETMET R23 R1 K53 - 0x7C5C0200, // 02A9 CALL R23 1 - 0x7C3C1000, // 02AA CALL R15 8 - 0x503C0200, // 02AB LDBOOL R15 1 0 - 0xA0000000, // 02AC CLOSE R0 - 0x80041E00, // 02AD RET 1 R15 - 0x7002001B, // 02AE JMP #02CB - 0x1C200F09, // 02AF EQ R8 R7 K9 - 0x78220011, // 02B0 JMPF R8 #02C3 - 0x8C200541, // 02B1 GETMET R8 R2 K65 - 0x58280005, // 02B2 LDCONST R10 K5 - 0x7C200400, // 02B3 CALL R8 2 - 0xB826FA00, // 02B4 GETNGBL R9 K125 - 0x60280008, // 02B5 GETGBL R10 G8 - 0x5C2C1000, // 02B6 MOVE R11 R8 - 0x7C280200, // 02B7 CALL R10 1 - 0x002B500A, // 02B8 ADD R10 K168 R10 - 0x582C000F, // 02B9 LDCONST R11 K15 - 0x7C240400, // 02BA CALL R9 2 - 0x88240136, // 02BB GETMBR R9 R0 K54 - 0x8C2413A9, // 02BC GETMET R9 R9 K169 - 0x5C2C1000, // 02BD MOVE R11 R8 + 0x1C34160D, // 0274 EQ R13 R11 R13 + 0x74360002, // 0275 JMPT R13 #0279 + 0x4C340000, // 0276 LDNIL R13 + 0x1C34180D, // 0277 EQ R13 R12 R13 + 0x78360005, // 0278 JMPF R13 #027F + 0xB8360200, // 0279 GETNGBL R13 K1 + 0x88341BA6, // 027A GETMBR R13 R13 K166 + 0x900EC60D, // 027B SETMBR R3 K99 R13 + 0x4C340000, // 027C LDNIL R13 + 0xA0000000, // 027D CLOSE R0 + 0x80041A00, // 027E RET 1 R13 + 0x6034000C, // 027F GETGBL R13 G12 + 0x5C381200, // 0280 MOVE R14 R9 + 0x7C340200, // 0281 CALL R13 1 + 0x543A001F, // 0282 LDINT R14 32 + 0x543E0040, // 0283 LDINT R15 65 + 0x00381C0F, // 0284 ADD R14 R14 R15 + 0x20341A0E, // 0285 NE R13 R13 R14 + 0x7436000B, // 0286 JMPT R13 #0293 + 0x6034000C, // 0287 GETGBL R13 G12 + 0x5C381800, // 0288 MOVE R14 R12 + 0x7C340200, // 0289 CALL R13 1 + 0x543A000F, // 028A LDINT R14 16 + 0x14341A0E, // 028B LT R13 R13 R14 + 0x74360005, // 028C JMPT R13 #0293 + 0x6034000C, // 028D GETGBL R13 G12 + 0x5C381800, // 028E MOVE R14 R12 + 0x7C340200, // 028F CALL R13 1 + 0x543A001F, // 0290 LDINT R14 32 + 0x24341A0E, // 0291 GT R13 R13 R14 + 0x78360009, // 0292 JMPF R13 #029D + 0xB836FC00, // 0293 GETNGBL R13 K126 + 0x583800A7, // 0294 LDCONST R14 K167 + 0x583C000D, // 0295 LDCONST R15 K13 + 0x7C340400, // 0296 CALL R13 2 + 0xB8360200, // 0297 GETNGBL R13 K1 + 0x88341B64, // 0298 GETMBR R13 R13 K100 + 0x900EC60D, // 0299 SETMBR R3 K99 R13 + 0x4C340000, // 029A LDNIL R13 + 0xA0000000, // 029B CLOSE R0 + 0x80041A00, // 029C RET 1 R13 + 0x5436001E, // 029D LDINT R13 31 + 0x40360A0D, // 029E CONNECT R13 K5 R13 + 0x9434120D, // 029F GETIDX R13 R9 R13 + 0x543A001F, // 02A0 LDINT R14 32 + 0x40381D8E, // 02A1 CONNECT R14 R14 K142 + 0x9438120E, // 02A2 GETIDX R14 R9 R14 + 0x883C0136, // 02A3 GETMBR R15 R0 K54 + 0x883C1F4A, // 02A4 GETMBR R15 R15 K74 + 0x8C3C1FA8, // 02A5 GETMET R15 R15 K168 + 0x5C441000, // 02A6 MOVE R17 R8 + 0x5C481600, // 02A7 MOVE R18 R11 + 0x5C4C1400, // 02A8 MOVE R19 R10 + 0x5C501800, // 02A9 MOVE R20 R12 + 0x5C541A00, // 02AA MOVE R21 R13 + 0x5C581C00, // 02AB MOVE R22 R14 + 0x8C5C0335, // 02AC GETMET R23 R1 K53 + 0x7C5C0200, // 02AD CALL R23 1 + 0x7C3C1000, // 02AE CALL R15 8 + 0x503C0200, // 02AF LDBOOL R15 1 0 + 0xA0000000, // 02B0 CLOSE R0 + 0x80041E00, // 02B1 RET 1 R15 + 0x7002001C, // 02B2 JMP #02D0 + 0x1C200F09, // 02B3 EQ R8 R7 K9 + 0x78220011, // 02B4 JMPF R8 #02C7 + 0x8C200541, // 02B5 GETMET R8 R2 K65 + 0x58280005, // 02B6 LDCONST R10 K5 + 0x7C200400, // 02B7 CALL R8 2 + 0xB826FC00, // 02B8 GETNGBL R9 K126 + 0x60280008, // 02B9 GETGBL R10 G8 + 0x5C2C1000, // 02BA MOVE R11 R8 + 0x7C280200, // 02BB CALL R10 1 + 0x002B520A, // 02BC ADD R10 K169 R10 + 0x582C000F, // 02BD LDCONST R11 K15 0x7C240400, // 02BE CALL R9 2 - 0x50240200, // 02BF LDBOOL R9 1 0 - 0xA0000000, // 02C0 CLOSE R0 - 0x80041200, // 02C1 RET 1 R9 - 0x70020007, // 02C2 JMP #02CB - 0x1C200F0D, // 02C3 EQ R8 R7 K13 - 0x78220005, // 02C4 JMPF R8 #02CB - 0x88200136, // 02C5 GETMBR R8 R0 K54 - 0x8C2011AA, // 02C6 GETMET R8 R8 K170 - 0x7C200200, // 02C7 CALL R8 1 - 0x50200200, // 02C8 LDBOOL R8 1 0 - 0xA0000000, // 02C9 CLOSE R0 - 0x80041000, // 02CA RET 1 R8 - 0x70020012, // 02CB JMP #02DF - 0x54220029, // 02CC LDINT R8 42 - 0x1C200C08, // 02CD EQ R8 R6 R8 - 0x78220005, // 02CE JMPF R8 #02D5 - 0x1C200F05, // 02CF EQ R8 R7 K5 - 0x78220002, // 02D0 JMPF R8 #02D4 - 0x50200200, // 02D1 LDBOOL R8 1 0 - 0xA0000000, // 02D2 CLOSE R0 - 0x80041000, // 02D3 RET 1 R8 - 0x70020009, // 02D4 JMP #02DF - 0x60200003, // 02D5 GETGBL R8 G3 - 0x5C240000, // 02D6 MOVE R9 R0 - 0x7C200200, // 02D7 CALL R8 1 - 0x8C2011AB, // 02D8 GETMET R8 R8 K171 - 0x5C280200, // 02D9 MOVE R10 R1 - 0x5C2C0400, // 02DA MOVE R11 R2 - 0x5C300600, // 02DB MOVE R12 R3 - 0x7C200800, // 02DC CALL R8 4 - 0xA0000000, // 02DD CLOSE R0 - 0x80041000, // 02DE RET 1 R8 - 0xA0000000, // 02DF CLOSE R0 - 0x80000000, // 02E0 RET 0 + 0x88240136, // 02BF GETMBR R9 R0 K54 + 0x8C2413AA, // 02C0 GETMET R9 R9 K170 + 0x5C2C1000, // 02C1 MOVE R11 R8 + 0x7C240400, // 02C2 CALL R9 2 + 0x50240200, // 02C3 LDBOOL R9 1 0 + 0xA0000000, // 02C4 CLOSE R0 + 0x80041200, // 02C5 RET 1 R9 + 0x70020008, // 02C6 JMP #02D0 + 0x1C200F0D, // 02C7 EQ R8 R7 K13 + 0x78220006, // 02C8 JMPF R8 #02D0 + 0x88200136, // 02C9 GETMBR R8 R0 K54 + 0x8820114A, // 02CA GETMBR R8 R8 K74 + 0x8C2011AB, // 02CB GETMET R8 R8 K171 + 0x7C200200, // 02CC CALL R8 1 + 0x50200200, // 02CD LDBOOL R8 1 0 + 0xA0000000, // 02CE CLOSE R0 + 0x80041000, // 02CF RET 1 R8 + 0x70020012, // 02D0 JMP #02E4 + 0x54220029, // 02D1 LDINT R8 42 + 0x1C200C08, // 02D2 EQ R8 R6 R8 + 0x78220005, // 02D3 JMPF R8 #02DA + 0x1C200F05, // 02D4 EQ R8 R7 K5 + 0x78220002, // 02D5 JMPF R8 #02D9 + 0x50200200, // 02D6 LDBOOL R8 1 0 + 0xA0000000, // 02D7 CLOSE R0 + 0x80041000, // 02D8 RET 1 R8 + 0x70020009, // 02D9 JMP #02E4 + 0x60200003, // 02DA GETGBL R8 G3 + 0x5C240000, // 02DB MOVE R9 R0 + 0x7C200200, // 02DC CALL R8 1 + 0x8C2011AC, // 02DD GETMET R8 R8 K172 + 0x5C280200, // 02DE MOVE R10 R1 + 0x5C2C0400, // 02DF MOVE R11 R2 + 0x5C300600, // 02E0 MOVE R12 R3 + 0x7C200800, // 02E1 CALL R8 4 + 0xA0000000, // 02E2 CLOSE R0 + 0x80041000, // 02E3 RET 1 R8 + 0xA0000000, // 02E4 CLOSE R0 + 0x80000000, // 02E5 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 590fdb306..f6f59fc67 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -434,7 +434,7 @@ be_local_closure(class_Matter_UI_web_sensor, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ + ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(matter_enabled), /* K2 */ be_nested_str_weak(device), @@ -450,16 +450,17 @@ be_local_closure(class_Matter_UI_web_sensor, /* name */ /* K12 */ be_nested_str_weak(s), /* K13 */ be_nested_str_weak(), /* K14 */ be_nested_str_weak(show_bridge_status), - /* K15 */ be_nested_str_weak(is_root_commissioning_open), - /* K16 */ be_nested_str_weak(show_commissioning_info), + /* K15 */ be_nested_str_weak(commissioning), + /* K16 */ be_nested_str_weak(is_root_commissioning_open), + /* K17 */ be_nested_str_weak(show_commissioning_info), }), be_str_weak(web_sensor), &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ + ( &(const binstruction[50]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080101, // 0001 GETMET R2 R0 K1 0x7C080200, // 0002 CALL R2 1 - 0x780A002B, // 0003 JMPF R2 #0030 + 0x780A002C, // 0003 JMPF R2 #0031 0x88080102, // 0004 GETMBR R2 R0 K2 0x88080503, // 0005 GETMBR R2 R2 K3 0x4C0C0000, // 0006 LDNIL R3 @@ -499,12 +500,13 @@ be_local_closure(class_Matter_UI_web_sensor, /* name */ 0x8C0C010E, // 0028 GETMET R3 R0 K14 0x7C0C0200, // 0029 CALL R3 1 0x880C0102, // 002A GETMBR R3 R0 K2 - 0x8C0C070F, // 002B GETMET R3 R3 K15 - 0x7C0C0200, // 002C CALL R3 1 - 0x780E0001, // 002D JMPF R3 #0030 - 0x8C0C0110, // 002E GETMET R3 R0 K16 - 0x7C0C0200, // 002F CALL R3 1 - 0x80000000, // 0030 RET 0 + 0x880C070F, // 002B GETMBR R3 R3 K15 + 0x8C0C0710, // 002C GETMET R3 R3 K16 + 0x7C0C0200, // 002D CALL R3 1 + 0x780E0001, // 002E JMPF R3 #0031 + 0x8C0C0111, // 002F GETMET R3 R0 K17 + 0x7C0C0200, // 0030 CALL R3 1 + 0x80000000, // 0031 RET 0 }) ) ); @@ -1034,86 +1036,90 @@ be_local_closure(class_Matter_UI_show_commissioning_info, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ + ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(commissioning_open), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(millis), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(content_send), - /* K7 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCommissioning_X20open_X20for_X20_X25i_X20min_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K8 */ be_nested_str_weak(compute_manual_pairing_code), - /* K9 */ be_nested_str_weak(_X3Cp_X3EManual_X20pairing_X20code_X3A_X3Cbr_X3E_X3Cb_X3E_X25s_X2D_X25s_X2D_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Chr_X3E), - /* K10 */ be_const_int(3), - /* K11 */ be_const_int(2147483647), - /* K12 */ be_nested_str_weak(_X3Cdiv_X3E_X3Ccenter_X3E), - /* K13 */ be_nested_str_weak(compute_qrcode_content), - /* K14 */ be_nested_str_weak(show_qrcode), - /* K15 */ be_nested_str_weak(_X3Cp_X3E_X20_X25s_X3C_X2Fp_X3E), - /* K16 */ be_nested_str_weak(_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K2 */ be_nested_str_weak(commissioning), + /* K3 */ be_nested_str_weak(commissioning_open), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(millis), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(content_send), + /* K8 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCommissioning_X20open_X20for_X20_X25i_X20min_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K9 */ be_nested_str_weak(compute_manual_pairing_code), + /* K10 */ be_nested_str_weak(_X3Cp_X3EManual_X20pairing_X20code_X3A_X3Cbr_X3E_X3Cb_X3E_X25s_X2D_X25s_X2D_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Chr_X3E), + /* K11 */ be_const_int(3), + /* K12 */ be_const_int(2147483647), + /* K13 */ be_nested_str_weak(_X3Cdiv_X3E_X3Ccenter_X3E), + /* K14 */ be_nested_str_weak(compute_qrcode_content), + /* K15 */ be_nested_str_weak(show_qrcode), + /* K16 */ be_nested_str_weak(_X3Cp_X3E_X20_X25s_X3C_X2Fp_X3E), + /* K17 */ be_nested_str_weak(_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), }), be_str_weak(show_commissioning_info), &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ + ( &(const binstruction[61]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x88080101, // 0001 GETMBR R2 R0 K1 0x88080502, // 0002 GETMBR R2 R2 K2 - 0xB80E0600, // 0003 GETNGBL R3 K3 - 0x8C0C0704, // 0004 GETMET R3 R3 K4 - 0x7C0C0200, // 0005 CALL R3 1 - 0x04080403, // 0006 SUB R2 R2 R3 - 0x540E03E7, // 0007 LDINT R3 1000 - 0x0C080403, // 0008 DIV R2 R2 R3 - 0x140C0505, // 0009 LT R3 R2 K5 - 0x780E0000, // 000A JMPF R3 #000C - 0x58080005, // 000B LDCONST R2 K5 - 0x540E001D, // 000C LDINT R3 30 - 0x000C0403, // 000D ADD R3 R2 R3 - 0x5412003B, // 000E LDINT R4 60 - 0x0C0C0604, // 000F DIV R3 R3 R4 - 0x8C100306, // 0010 GETMET R4 R1 K6 - 0x60180018, // 0011 GETGBL R6 G24 - 0x581C0007, // 0012 LDCONST R7 K7 - 0x5C200600, // 0013 MOVE R8 R3 - 0x7C180400, // 0014 CALL R6 2 - 0x7C100400, // 0015 CALL R4 2 - 0x88100101, // 0016 GETMBR R4 R0 K1 - 0x8C100908, // 0017 GETMET R4 R4 K8 - 0x7C100200, // 0018 CALL R4 1 - 0x8C140306, // 0019 GETMET R5 R1 K6 - 0x601C0018, // 001A GETGBL R7 G24 - 0x58200009, // 001B LDCONST R8 K9 - 0x40260B0A, // 001C CONNECT R9 K5 K10 - 0x94240809, // 001D GETIDX R9 R4 R9 - 0x542A0003, // 001E LDINT R10 4 - 0x542E0005, // 001F LDINT R11 6 - 0x4028140B, // 0020 CONNECT R10 R10 R11 - 0x9428080A, // 0021 GETIDX R10 R4 R10 - 0x542E0006, // 0022 LDINT R11 7 - 0x402C170B, // 0023 CONNECT R11 R11 K11 - 0x942C080B, // 0024 GETIDX R11 R4 R11 - 0x7C1C0800, // 0025 CALL R7 4 - 0x7C140400, // 0026 CALL R5 2 - 0x8C140306, // 0027 GETMET R5 R1 K6 - 0x581C000C, // 0028 LDCONST R7 K12 - 0x7C140400, // 0029 CALL R5 2 - 0x88140101, // 002A GETMBR R5 R0 K1 - 0x8C140B0D, // 002B GETMET R5 R5 K13 - 0x7C140200, // 002C CALL R5 1 - 0x8C18010E, // 002D GETMET R6 R0 K14 - 0x5C200A00, // 002E MOVE R8 R5 - 0x7C180400, // 002F CALL R6 2 - 0x8C180306, // 0030 GETMET R6 R1 K6 - 0x60200018, // 0031 GETGBL R8 G24 - 0x5824000F, // 0032 LDCONST R9 K15 - 0x5C280A00, // 0033 MOVE R10 R5 - 0x7C200400, // 0034 CALL R8 2 - 0x7C180400, // 0035 CALL R6 2 - 0x8C180306, // 0036 GETMET R6 R1 K6 - 0x58200010, // 0037 LDCONST R8 K16 + 0x88080503, // 0003 GETMBR R2 R2 K3 + 0xB80E0800, // 0004 GETNGBL R3 K4 + 0x8C0C0705, // 0005 GETMET R3 R3 K5 + 0x7C0C0200, // 0006 CALL R3 1 + 0x04080403, // 0007 SUB R2 R2 R3 + 0x540E03E7, // 0008 LDINT R3 1000 + 0x0C080403, // 0009 DIV R2 R2 R3 + 0x140C0506, // 000A LT R3 R2 K6 + 0x780E0000, // 000B JMPF R3 #000D + 0x58080006, // 000C LDCONST R2 K6 + 0x540E001D, // 000D LDINT R3 30 + 0x000C0403, // 000E ADD R3 R2 R3 + 0x5412003B, // 000F LDINT R4 60 + 0x0C0C0604, // 0010 DIV R3 R3 R4 + 0x8C100307, // 0011 GETMET R4 R1 K7 + 0x60180018, // 0012 GETGBL R6 G24 + 0x581C0008, // 0013 LDCONST R7 K8 + 0x5C200600, // 0014 MOVE R8 R3 + 0x7C180400, // 0015 CALL R6 2 + 0x7C100400, // 0016 CALL R4 2 + 0x88100101, // 0017 GETMBR R4 R0 K1 + 0x88100902, // 0018 GETMBR R4 R4 K2 + 0x8C100909, // 0019 GETMET R4 R4 K9 + 0x7C100200, // 001A CALL R4 1 + 0x8C140307, // 001B GETMET R5 R1 K7 + 0x601C0018, // 001C GETGBL R7 G24 + 0x5820000A, // 001D LDCONST R8 K10 + 0x40260D0B, // 001E CONNECT R9 K6 K11 + 0x94240809, // 001F GETIDX R9 R4 R9 + 0x542A0003, // 0020 LDINT R10 4 + 0x542E0005, // 0021 LDINT R11 6 + 0x4028140B, // 0022 CONNECT R10 R10 R11 + 0x9428080A, // 0023 GETIDX R10 R4 R10 + 0x542E0006, // 0024 LDINT R11 7 + 0x402C170C, // 0025 CONNECT R11 R11 K12 + 0x942C080B, // 0026 GETIDX R11 R4 R11 + 0x7C1C0800, // 0027 CALL R7 4 + 0x7C140400, // 0028 CALL R5 2 + 0x8C140307, // 0029 GETMET R5 R1 K7 + 0x581C000D, // 002A LDCONST R7 K13 + 0x7C140400, // 002B CALL R5 2 + 0x88140101, // 002C GETMBR R5 R0 K1 + 0x88140B02, // 002D GETMBR R5 R5 K2 + 0x8C140B0E, // 002E GETMET R5 R5 K14 + 0x7C140200, // 002F CALL R5 1 + 0x8C18010F, // 0030 GETMET R6 R0 K15 + 0x5C200A00, // 0031 MOVE R8 R5 + 0x7C180400, // 0032 CALL R6 2 + 0x8C180307, // 0033 GETMET R6 R1 K7 + 0x60200018, // 0034 GETGBL R8 G24 + 0x58240010, // 0035 LDCONST R9 K16 + 0x5C280A00, // 0036 MOVE R10 R5 + 0x7C200400, // 0037 CALL R8 2 0x7C180400, // 0038 CALL R6 2 - 0x80000000, // 0039 RET 0 + 0x8C180307, // 0039 GETMET R6 R1 K7 + 0x58200011, // 003A LDCONST R8 K17 + 0x7C180400, // 003B CALL R6 2 + 0x80000000, // 003C RET 0 }) ) ); @@ -1584,35 +1590,37 @@ be_local_closure(class_Matter_UI_web_get_arg, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(has_arg), /* K2 */ be_nested_str_weak(mtc0), /* K3 */ be_nested_str_weak(device), - /* K4 */ be_nested_str_weak(stop_basic_commissioning), - /* K5 */ be_nested_str_weak(mtc1), - /* K6 */ be_nested_str_weak(start_root_basic_commissioning), + /* K4 */ be_nested_str_weak(commissioning), + /* K5 */ be_nested_str_weak(stop_basic_commissioning), + /* K6 */ be_nested_str_weak(mtc1), + /* K7 */ be_nested_str_weak(start_root_basic_commissioning), }), be_str_weak(web_get_arg), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ + ( &(const binstruction[18]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x58100002, // 0002 LDCONST R4 K2 0x7C080400, // 0003 CALL R2 2 - 0x780A0003, // 0004 JMPF R2 #0009 + 0x780A0004, // 0004 JMPF R2 #000A 0x88080103, // 0005 GETMBR R2 R0 K3 - 0x8C080504, // 0006 GETMET R2 R2 K4 - 0x7C080200, // 0007 CALL R2 1 - 0x70020006, // 0008 JMP #0010 - 0x8C080301, // 0009 GETMET R2 R1 K1 - 0x58100005, // 000A LDCONST R4 K5 - 0x7C080400, // 000B CALL R2 2 - 0x780A0002, // 000C JMPF R2 #0010 - 0x88080103, // 000D GETMBR R2 R0 K3 - 0x8C080506, // 000E GETMET R2 R2 K6 - 0x7C080200, // 000F CALL R2 1 - 0x80000000, // 0010 RET 0 + 0x88080504, // 0006 GETMBR R2 R2 K4 + 0x8C080505, // 0007 GETMET R2 R2 K5 + 0x7C080200, // 0008 CALL R2 1 + 0x70020006, // 0009 JMP #0011 + 0x8C080301, // 000A GETMET R2 R1 K1 + 0x58100006, // 000B LDCONST R4 K6 + 0x7C080400, // 000C CALL R2 2 + 0x780A0002, // 000D JMPF R2 #0011 + 0x88080103, // 000E GETMBR R2 R0 K3 + 0x8C080507, // 000F GETMET R2 R2 K7 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 RET 0 }) ) ); @@ -2199,7 +2207,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[101]) { /* constants */ + ( &(const bvalue[102]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(check_privileged_access), /* K2 */ be_nested_str_weak(string), @@ -2236,75 +2244,76 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ /* K33 */ be_nested_str_weak(_X201), /* K34 */ be_nested_str_weak(disable), /* K35 */ be_nested_str_weak(_X200), - /* K36 */ be_nested_str_weak(commissioning_open), - /* K37 */ be_nested_str_weak(start_root_basic_commissioning), - /* K38 */ be_nested_str_weak(stop_basic_commissioning), - /* K39 */ be_nested_str_weak(_X2F), - /* K40 */ be_nested_str_weak(del_fabric), - /* K41 */ be_const_int(0), - /* K42 */ be_nested_str_weak(sessions), - /* K43 */ be_nested_str_weak(fabrics), - /* K44 */ be_nested_str_weak(get_fabric_index), - /* K45 */ be_nested_str_weak(remove_fabric), - /* K46 */ be_const_int(1), - /* K47 */ be_nested_str_weak(_X2Fmattera_X3F), - /* K48 */ be_nested_str_weak(auto), - /* K49 */ be_nested_str_weak(plugins_persist), - /* K50 */ be_nested_str_weak(config), - /* K51 */ be_nested_str_weak(arg_size), - /* K52 */ be_nested_str_weak(arg_name), - /* K53 */ be_nested_str_weak(find), - /* K54 */ be_const_int(2147483647), - /* K55 */ be_nested_str_weak(plugins_config), - /* K56 */ be_nested_str_weak(plugins_classes), - /* K57 */ be_nested_str_weak(type), - /* K58 */ be_nested_str_weak(), - /* K59 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20arg_X3D_X25s), - /* K60 */ be_nested_str_weak(ui_conf_to_string), - /* K61 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20prev_arg_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27_X20_X25s), - /* K62 */ be_nested_str_weak(changed), - /* K63 */ be_nested_str_weak(ui_string_to_conf), - /* K64 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K65 */ be_nested_str_weak(MTR_X3A_X20apply_X20conf_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s), - /* K66 */ be_nested_str_weak(parse_configuration), - /* K67 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20not_X20found), - /* K68 */ be_nested_str_weak(nam), - /* K69 */ be_nested_str_weak(name), - /* K70 */ be_nested_str_weak(set_name), - /* K71 */ be_nested_str_weak(remove), - /* K72 */ be_nested_str_weak(MTR_X3A_X20apply_X20name_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s), - /* K73 */ be_nested_str_weak(stop_iteration), - /* K74 */ be_nested_str_weak(MTR_X3A_X20config_X20_X3D_X20_X25s), - /* K75 */ be_nested_str_weak(MTR_X3A_X20config_X20error_X20_X3D_X20_X25s), - /* K76 */ be_nested_str_weak(_X2Fmatterc_X3F), - /* K77 */ be_nested_str_weak(addep), - /* K78 */ be_nested_str_weak(pi), - /* K79 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), - /* K80 */ be_nested_str_weak(bridge_add_endpoint), - /* K81 */ be_nested_str_weak(addrem), - /* K82 */ be_nested_str_weak(url), - /* K83 */ be_nested_str_weak(value_error), - /* K84 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null), - /* K85 */ be_nested_str_weak(equal_map), - /* K86 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), - /* K87 */ be_nested_str_weak(del), - /* K88 */ be_nested_str_weak(bridge_remove_endpoint), - /* K89 */ be_nested_str_weak(content_start), - /* K90 */ be_nested_str_weak(Parameter_X20error), - /* K91 */ be_nested_str_weak(content_send_style), - /* K92 */ be_nested_str_weak(content_send), - /* K93 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E), - /* K94 */ be_nested_str_weak(html_escape), - /* K95 */ be_nested_str_weak(content_button), - /* K96 */ be_nested_str_weak(BUTTON_CONFIGURATION), - /* K97 */ be_nested_str_weak(content_stop), - /* K98 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K99 */ be_const_int(2), - /* K100 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E), + /* K36 */ be_nested_str_weak(commissioning), + /* K37 */ be_nested_str_weak(commissioning_open), + /* K38 */ be_nested_str_weak(start_root_basic_commissioning), + /* K39 */ be_nested_str_weak(stop_basic_commissioning), + /* K40 */ be_nested_str_weak(_X2F), + /* K41 */ be_nested_str_weak(del_fabric), + /* K42 */ be_const_int(0), + /* K43 */ be_nested_str_weak(sessions), + /* K44 */ be_nested_str_weak(fabrics), + /* K45 */ be_nested_str_weak(get_fabric_index), + /* K46 */ be_nested_str_weak(remove_fabric), + /* K47 */ be_const_int(1), + /* K48 */ be_nested_str_weak(_X2Fmattera_X3F), + /* K49 */ be_nested_str_weak(auto), + /* K50 */ be_nested_str_weak(plugins_persist), + /* K51 */ be_nested_str_weak(config), + /* K52 */ be_nested_str_weak(arg_size), + /* K53 */ be_nested_str_weak(arg_name), + /* K54 */ be_nested_str_weak(find), + /* K55 */ be_const_int(2147483647), + /* K56 */ be_nested_str_weak(plugins_config), + /* K57 */ be_nested_str_weak(plugins_classes), + /* K58 */ be_nested_str_weak(type), + /* K59 */ be_nested_str_weak(), + /* K60 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20arg_X3D_X25s), + /* K61 */ be_nested_str_weak(ui_conf_to_string), + /* K62 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20prev_arg_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27_X20_X25s), + /* K63 */ be_nested_str_weak(changed), + /* K64 */ be_nested_str_weak(ui_string_to_conf), + /* K65 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K66 */ be_nested_str_weak(MTR_X3A_X20apply_X20conf_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s), + /* K67 */ be_nested_str_weak(parse_configuration), + /* K68 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20not_X20found), + /* K69 */ be_nested_str_weak(nam), + /* K70 */ be_nested_str_weak(name), + /* K71 */ be_nested_str_weak(set_name), + /* K72 */ be_nested_str_weak(remove), + /* K73 */ be_nested_str_weak(MTR_X3A_X20apply_X20name_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s), + /* K74 */ be_nested_str_weak(stop_iteration), + /* K75 */ be_nested_str_weak(MTR_X3A_X20config_X20_X3D_X20_X25s), + /* K76 */ be_nested_str_weak(MTR_X3A_X20config_X20error_X20_X3D_X20_X25s), + /* K77 */ be_nested_str_weak(_X2Fmatterc_X3F), + /* K78 */ be_nested_str_weak(addep), + /* K79 */ be_nested_str_weak(pi), + /* K80 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), + /* K81 */ be_nested_str_weak(bridge_add_endpoint), + /* K82 */ be_nested_str_weak(addrem), + /* K83 */ be_nested_str_weak(url), + /* K84 */ be_nested_str_weak(value_error), + /* K85 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null), + /* K86 */ be_nested_str_weak(equal_map), + /* K87 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), + /* K88 */ be_nested_str_weak(del), + /* K89 */ be_nested_str_weak(bridge_remove_endpoint), + /* K90 */ be_nested_str_weak(content_start), + /* K91 */ be_nested_str_weak(Parameter_X20error), + /* K92 */ be_nested_str_weak(content_send_style), + /* K93 */ be_nested_str_weak(content_send), + /* K94 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E), + /* K95 */ be_nested_str_weak(html_escape), + /* K96 */ be_nested_str_weak(content_button), + /* K97 */ be_nested_str_weak(BUTTON_CONFIGURATION), + /* K98 */ be_nested_str_weak(content_stop), + /* K99 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K100 */ be_const_int(2), + /* K101 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E), }), be_str_weak(page_part_ctl), &be_const_str_solidified, - ( &(const binstruction[659]) { /* code */ + ( &(const binstruction[661]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x7C080200, // 0002 CALL R2 1 @@ -2315,7 +2324,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0xA40E0600, // 0007 IMPORT R3 K3 0xA4120800, // 0008 IMPORT R4 K4 0x4C140000, // 0009 LDNIL R5 - 0xA8020269, // 000A EXBLK 0 #0275 + 0xA802026B, // 000A EXBLK 0 #0277 0x8C180305, // 000B GETMET R6 R1 K5 0x58200006, // 000C LDCONST R8 K6 0x7C180400, // 000D CALL R6 2 @@ -2365,11 +2374,11 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C180313, // 0039 GETMET R6 R1 K19 0x58200014, // 003A LDCONST R8 K20 0x7C180400, // 003B CALL R6 2 - 0x70020222, // 003C JMP #0260 + 0x70020224, // 003C JMP #0262 0x8C180305, // 003D GETMET R6 R1 K5 0x58200015, // 003E LDCONST R8 K21 0x7C180400, // 003F CALL R6 2 - 0x781A0052, // 0040 JMPF R6 #0094 + 0x781A0054, // 0040 JMPF R6 #0096 0x8C180305, // 0041 GETMET R6 R1 K5 0x58200016, // 0042 LDCONST R8 K22 0x7C180400, // 0043 CALL R6 2 @@ -2430,540 +2439,542 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C240313, // 007A GETMET R9 R1 K19 0x582C0014, // 007B LDCONST R11 K20 0x7C240400, // 007C CALL R9 2 - 0x70020014, // 007D JMP #0093 + 0x70020016, // 007D JMP #0095 0x8824010B, // 007E GETMBR R9 R0 K11 0x88241324, // 007F GETMBR R9 R9 K36 - 0x4C280000, // 0080 LDNIL R10 - 0x2024120A, // 0081 NE R9 R9 R10 - 0x20240E09, // 0082 NE R9 R7 R9 - 0x7826000B, // 0083 JMPF R9 #0090 - 0x781E0003, // 0084 JMPF R7 #0089 - 0x8824010B, // 0085 GETMBR R9 R0 K11 - 0x8C241325, // 0086 GETMET R9 R9 K37 - 0x7C240200, // 0087 CALL R9 1 - 0x70020002, // 0088 JMP #008C - 0x8824010B, // 0089 GETMBR R9 R0 K11 - 0x8C241326, // 008A GETMET R9 R9 K38 - 0x7C240200, // 008B CALL R9 1 - 0x8C240313, // 008C GETMET R9 R1 K19 - 0x582C0027, // 008D LDCONST R11 K39 - 0x7C240400, // 008E CALL R9 2 - 0x70020002, // 008F JMP #0093 - 0x8C240313, // 0090 GETMET R9 R1 K19 - 0x582C0027, // 0091 LDCONST R11 K39 - 0x7C240400, // 0092 CALL R9 2 - 0x700201CB, // 0093 JMP #0260 - 0x8C180305, // 0094 GETMET R6 R1 K5 - 0x58200028, // 0095 LDCONST R8 K40 - 0x7C180400, // 0096 CALL R6 2 - 0x781A0025, // 0097 JMPF R6 #00BE - 0xB81A1000, // 0098 GETNGBL R6 K8 - 0x601C0018, // 0099 GETGBL R7 G24 - 0x58200009, // 009A LDCONST R8 K9 - 0x58240028, // 009B LDCONST R9 K40 - 0x7C1C0400, // 009C CALL R7 2 - 0x5820000A, // 009D LDCONST R8 K10 - 0x7C180400, // 009E CALL R6 2 - 0x60180009, // 009F GETGBL R6 G9 - 0x8C1C030D, // 00A0 GETMET R7 R1 K13 - 0x58240028, // 00A1 LDCONST R9 K40 - 0x7C1C0400, // 00A2 CALL R7 2 - 0x7C180200, // 00A3 CALL R6 1 - 0x581C0029, // 00A4 LDCONST R7 K41 - 0x8820010B, // 00A5 GETMBR R8 R0 K11 - 0x8820112A, // 00A6 GETMBR R8 R8 K42 - 0x8820112B, // 00A7 GETMBR R8 R8 K43 - 0x6024000C, // 00A8 GETGBL R9 G12 - 0x5C281000, // 00A9 MOVE R10 R8 - 0x7C240200, // 00AA CALL R9 1 - 0x14240E09, // 00AB LT R9 R7 R9 - 0x7826000C, // 00AC JMPF R9 #00BA - 0x94241007, // 00AD GETIDX R9 R8 R7 - 0x8C24132C, // 00AE GETMET R9 R9 K44 - 0x7C240200, // 00AF CALL R9 1 - 0x1C241206, // 00B0 EQ R9 R9 R6 - 0x78260005, // 00B1 JMPF R9 #00B8 - 0x8824010B, // 00B2 GETMBR R9 R0 K11 - 0x8C24132D, // 00B3 GETMET R9 R9 K45 - 0x942C1007, // 00B4 GETIDX R11 R8 R7 - 0x7C240400, // 00B5 CALL R9 2 - 0x70020002, // 00B6 JMP #00BA - 0x70020000, // 00B7 JMP #00B9 - 0x001C0F2E, // 00B8 ADD R7 R7 K46 - 0x7001FFED, // 00B9 JMP #00A8 - 0x8C240313, // 00BA GETMET R9 R1 K19 - 0x582C002F, // 00BB LDCONST R11 K47 - 0x7C240400, // 00BC CALL R9 2 - 0x700201A1, // 00BD JMP #0260 - 0x8C180305, // 00BE GETMET R6 R1 K5 - 0x58200030, // 00BF LDCONST R8 K48 - 0x7C180400, // 00C0 CALL R6 2 - 0x781A0010, // 00C1 JMPF R6 #00D3 - 0xB81A1000, // 00C2 GETNGBL R6 K8 - 0x601C0018, // 00C3 GETGBL R7 G24 - 0x58200009, // 00C4 LDCONST R8 K9 - 0x58240030, // 00C5 LDCONST R9 K48 - 0x7C1C0400, // 00C6 CALL R7 2 - 0x5820000A, // 00C7 LDCONST R8 K10 - 0x7C180400, // 00C8 CALL R6 2 - 0x8818010B, // 00C9 GETMBR R6 R0 K11 - 0x501C0000, // 00CA LDBOOL R7 0 0 - 0x901A6207, // 00CB SETMBR R6 K49 R7 - 0x8818010B, // 00CC GETMBR R6 R0 K11 - 0x8C180D12, // 00CD GETMET R6 R6 K18 - 0x7C180200, // 00CE CALL R6 1 - 0x8C180313, // 00CF GETMET R6 R1 K19 - 0x58200014, // 00D0 LDCONST R8 K20 - 0x7C180400, // 00D1 CALL R6 2 - 0x7002018C, // 00D2 JMP #0260 - 0x8C180305, // 00D3 GETMET R6 R1 K5 - 0x58200032, // 00D4 LDCONST R8 K50 - 0x7C180400, // 00D5 CALL R6 2 - 0x781A00CE, // 00D6 JMPF R6 #01A6 - 0xB81A1000, // 00D7 GETNGBL R6 K8 - 0x601C0018, // 00D8 GETGBL R7 G24 - 0x58200009, // 00D9 LDCONST R8 K9 - 0x58240032, // 00DA LDCONST R9 K50 - 0x7C1C0400, // 00DB CALL R7 2 - 0x5820000A, // 00DC LDCONST R8 K10 - 0x7C180400, // 00DD CALL R6 2 - 0x50180000, // 00DE LDBOOL R6 0 0 - 0x601C0010, // 00DF GETGBL R7 G16 - 0x8C200333, // 00E0 GETMET R8 R1 K51 - 0x7C200200, // 00E1 CALL R8 1 - 0x0420112E, // 00E2 SUB R8 R8 K46 - 0x40225208, // 00E3 CONNECT R8 K41 R8 - 0x7C1C0200, // 00E4 CALL R7 1 - 0xA802009B, // 00E5 EXBLK 0 #0182 - 0x5C200E00, // 00E6 MOVE R8 R7 - 0x7C200000, // 00E7 CALL R8 0 - 0x8C240334, // 00E8 GETMET R9 R1 K52 - 0x5C2C1000, // 00E9 MOVE R11 R8 - 0x7C240400, // 00EA CALL R9 2 - 0x8C280535, // 00EB GETMET R10 R2 K53 - 0x5C301200, // 00EC MOVE R12 R9 - 0x5834000D, // 00ED LDCONST R13 K13 - 0x7C280600, // 00EE CALL R10 3 - 0x1C281529, // 00EF EQ R10 R10 K41 - 0x782A0057, // 00F0 JMPF R10 #0149 - 0x60280009, // 00F1 GETGBL R10 G9 - 0x402E1536, // 00F2 CONNECT R11 K10 K54 - 0x942C120B, // 00F3 GETIDX R11 R9 R11 - 0x7C280200, // 00F4 CALL R10 1 - 0x8C2C030D, // 00F5 GETMET R11 R1 K13 - 0x5C341000, // 00F6 MOVE R13 R8 - 0x7C2C0400, // 00F7 CALL R11 2 - 0x8830010B, // 00F8 GETMBR R12 R0 K11 - 0x88301937, // 00F9 GETMBR R12 R12 K55 - 0x8C301935, // 00FA GETMET R12 R12 K53 - 0x60380008, // 00FB GETGBL R14 G8 - 0x5C3C1400, // 00FC MOVE R15 R10 - 0x7C380200, // 00FD CALL R14 1 - 0x7C300400, // 00FE CALL R12 2 - 0x4C340000, // 00FF LDNIL R13 - 0x2034180D, // 0100 NE R13 R12 R13 - 0x7836003E, // 0101 JMPF R13 #0141 - 0x8834010B, // 0102 GETMBR R13 R0 K11 - 0x88341B38, // 0103 GETMBR R13 R13 K56 - 0x8C341B35, // 0104 GETMET R13 R13 K53 - 0x8C3C1935, // 0105 GETMET R15 R12 K53 - 0x58440039, // 0106 LDCONST R17 K57 - 0x5848003A, // 0107 LDCONST R18 K58 - 0x7C3C0600, // 0108 CALL R15 3 - 0x7C340400, // 0109 CALL R13 2 - 0x4C380000, // 010A LDNIL R14 - 0x20381A0E, // 010B NE R14 R13 R14 - 0x783A0032, // 010C JMPF R14 #0140 - 0xB83A1000, // 010D GETNGBL R14 K8 - 0x603C0018, // 010E GETGBL R15 G24 - 0x5840003B, // 010F LDCONST R16 K59 - 0x5C441400, // 0110 MOVE R17 R10 - 0x5C481600, // 0111 MOVE R18 R11 - 0x7C3C0600, // 0112 CALL R15 3 - 0x5840000A, // 0113 LDCONST R16 K10 - 0x7C380400, // 0114 CALL R14 2 - 0x8C381B3C, // 0115 GETMET R14 R13 K60 - 0x5C401A00, // 0116 MOVE R16 R13 - 0x5C441800, // 0117 MOVE R17 R12 - 0x7C380600, // 0118 CALL R14 3 - 0x203C1C0B, // 0119 NE R15 R14 R11 - 0xB8421000, // 011A GETNGBL R16 K8 - 0x60440018, // 011B GETGBL R17 G24 - 0x5848003D, // 011C LDCONST R18 K61 - 0x5C4C1400, // 011D MOVE R19 R10 - 0x5C501C00, // 011E MOVE R20 R14 - 0x5C541600, // 011F MOVE R21 R11 - 0x20581C0B, // 0120 NE R22 R14 R11 - 0x785A0001, // 0121 JMPF R22 #0124 - 0x5858003E, // 0122 LDCONST R22 K62 - 0x70020000, // 0123 JMP #0125 - 0x5858003A, // 0124 LDCONST R22 K58 - 0x7C440A00, // 0125 CALL R17 5 - 0x5848000A, // 0126 LDCONST R18 K10 - 0x7C400400, // 0127 CALL R16 2 - 0x783E0016, // 0128 JMPF R15 #0140 - 0x50180200, // 0129 LDBOOL R6 1 0 - 0x8C401B3F, // 012A GETMET R16 R13 K63 - 0x5C481A00, // 012B MOVE R18 R13 - 0x5C4C1800, // 012C MOVE R19 R12 - 0x5C501600, // 012D MOVE R20 R11 - 0x7C400800, // 012E CALL R16 4 - 0x8840010B, // 012F GETMBR R16 R0 K11 - 0x8C402140, // 0130 GETMET R16 R16 K64 - 0x5C481400, // 0131 MOVE R18 R10 - 0x7C400400, // 0132 CALL R16 2 - 0x7842000B, // 0133 JMPF R16 #0140 - 0xB8461000, // 0134 GETNGBL R17 K8 - 0x60480018, // 0135 GETGBL R18 G24 - 0x584C0041, // 0136 LDCONST R19 K65 - 0x5C501800, // 0137 MOVE R20 R12 - 0x5C541400, // 0138 MOVE R21 R10 - 0x5C582000, // 0139 MOVE R22 R16 - 0x7C480800, // 013A CALL R18 4 - 0x584C000A, // 013B LDCONST R19 K10 - 0x7C440400, // 013C CALL R17 2 - 0x8C442142, // 013D GETMET R17 R16 K66 - 0x5C4C1800, // 013E MOVE R19 R12 - 0x7C440400, // 013F CALL R17 2 - 0x70020006, // 0140 JMP #0148 - 0xB8361000, // 0141 GETNGBL R13 K8 - 0x60380018, // 0142 GETGBL R14 G24 - 0x583C0043, // 0143 LDCONST R15 K67 - 0x5C401400, // 0144 MOVE R16 R10 - 0x7C380400, // 0145 CALL R14 2 - 0x583C000A, // 0146 LDCONST R15 K10 - 0x7C340400, // 0147 CALL R13 2 - 0x70020037, // 0148 JMP #0181 - 0x8C280535, // 0149 GETMET R10 R2 K53 - 0x5C301200, // 014A MOVE R12 R9 - 0x58340044, // 014B LDCONST R13 K68 - 0x7C280600, // 014C CALL R10 3 - 0x1C281529, // 014D EQ R10 R10 K41 - 0x782A0031, // 014E JMPF R10 #0181 - 0x60280009, // 014F GETGBL R10 G9 - 0x402E1536, // 0150 CONNECT R11 K10 K54 - 0x942C120B, // 0151 GETIDX R11 R9 R11 - 0x7C280200, // 0152 CALL R10 1 - 0x8C2C030D, // 0153 GETMET R11 R1 K13 - 0x5C341000, // 0154 MOVE R13 R8 - 0x7C2C0400, // 0155 CALL R11 2 - 0x8830010B, // 0156 GETMBR R12 R0 K11 - 0x88301937, // 0157 GETMBR R12 R12 K55 - 0x8C301935, // 0158 GETMET R12 R12 K53 - 0x60380008, // 0159 GETGBL R14 G8 - 0x5C3C1400, // 015A MOVE R15 R10 - 0x7C380200, // 015B CALL R14 1 - 0x7C300400, // 015C CALL R12 2 - 0x4C340000, // 015D LDNIL R13 - 0x2034180D, // 015E NE R13 R12 R13 - 0x78360020, // 015F JMPF R13 #0181 - 0x8C341935, // 0160 GETMET R13 R12 K53 - 0x583C0045, // 0161 LDCONST R15 K69 - 0x5840003A, // 0162 LDCONST R16 K58 - 0x7C340600, // 0163 CALL R13 3 - 0x20381A0B, // 0164 NE R14 R13 R11 - 0x783A001A, // 0165 JMPF R14 #0181 - 0x50180200, // 0166 LDBOOL R6 1 0 - 0x883C010B, // 0167 GETMBR R15 R0 K11 - 0x8C3C1F40, // 0168 GETMET R15 R15 K64 - 0x5C441400, // 0169 MOVE R17 R10 - 0x7C3C0400, // 016A CALL R15 2 - 0x783E0014, // 016B JMPF R15 #0181 - 0x8C401F46, // 016C GETMET R16 R15 K70 - 0x5C481600, // 016D MOVE R18 R11 - 0x7C400400, // 016E CALL R16 2 - 0x782E0001, // 016F JMPF R11 #0172 - 0x98328A0B, // 0170 SETIDX R12 K69 R11 - 0x70020002, // 0171 JMP #0175 - 0x8C401947, // 0172 GETMET R16 R12 K71 - 0x58480045, // 0173 LDCONST R18 K69 - 0x7C400400, // 0174 CALL R16 2 - 0xB8421000, // 0175 GETNGBL R16 K8 - 0x60440018, // 0176 GETGBL R17 G24 - 0x58480048, // 0177 LDCONST R18 K72 - 0x5C4C1800, // 0178 MOVE R19 R12 - 0x5C501400, // 0179 MOVE R20 R10 - 0x5C541E00, // 017A MOVE R21 R15 - 0x7C440800, // 017B CALL R17 4 - 0x5848000A, // 017C LDCONST R18 K10 - 0x7C400400, // 017D CALL R16 2 - 0x8C401F42, // 017E GETMET R16 R15 K66 - 0x5C481800, // 017F MOVE R18 R12 - 0x7C400400, // 0180 CALL R16 2 - 0x7001FF63, // 0181 JMP #00E6 - 0x581C0049, // 0182 LDCONST R7 K73 - 0xAC1C0200, // 0183 CATCH R7 1 0 - 0xB0080000, // 0184 RAISE 2 R0 R0 - 0xB81E1000, // 0185 GETNGBL R7 K8 - 0x60200018, // 0186 GETGBL R8 G24 - 0x5824004A, // 0187 LDCONST R9 K74 - 0x60280008, // 0188 GETGBL R10 G8 - 0x882C010B, // 0189 GETMBR R11 R0 K11 - 0x882C1737, // 018A GETMBR R11 R11 K55 - 0x7C280200, // 018B CALL R10 1 - 0x7C200400, // 018C CALL R8 2 - 0x5824000A, // 018D LDCONST R9 K10 - 0x7C1C0400, // 018E CALL R7 2 - 0x78160007, // 018F JMPF R5 #0198 - 0xB81E1000, // 0190 GETNGBL R7 K8 - 0x60200018, // 0191 GETGBL R8 G24 - 0x5824004B, // 0192 LDCONST R9 K75 - 0x5C280A00, // 0193 MOVE R10 R5 - 0x7C200400, // 0194 CALL R8 2 - 0x5824000A, // 0195 LDCONST R9 K10 - 0x7C1C0400, // 0196 CALL R7 2 - 0x7002000C, // 0197 JMP #01A5 - 0x741A0002, // 0198 JMPT R6 #019C - 0x881C010B, // 0199 GETMBR R7 R0 K11 - 0x881C0F31, // 019A GETMBR R7 R7 K49 - 0x741E0005, // 019B JMPT R7 #01A2 - 0x881C010B, // 019C GETMBR R7 R0 K11 - 0x50200200, // 019D LDBOOL R8 1 0 - 0x901E6208, // 019E SETMBR R7 K49 R8 - 0x881C010B, // 019F GETMBR R7 R0 K11 - 0x8C1C0F12, // 01A0 GETMET R7 R7 K18 - 0x7C1C0200, // 01A1 CALL R7 1 - 0x8C1C0313, // 01A2 GETMET R7 R1 K19 - 0x5824004C, // 01A3 LDCONST R9 K76 - 0x7C1C0400, // 01A4 CALL R7 2 - 0x700200B9, // 01A5 JMP #0260 - 0x8C180305, // 01A6 GETMET R6 R1 K5 - 0x5820004D, // 01A7 LDCONST R8 K77 - 0x7C180400, // 01A8 CALL R6 2 - 0x781A002A, // 01A9 JMPF R6 #01D5 - 0x8C18030D, // 01AA GETMET R6 R1 K13 - 0x5820004E, // 01AB LDCONST R8 K78 - 0x7C180400, // 01AC CALL R6 2 - 0x8C1C030D, // 01AD GETMET R7 R1 K13 - 0x5824000D, // 01AE LDCONST R9 K13 - 0x7C1C0400, // 01AF CALL R7 2 - 0x8C20030D, // 01B0 GETMET R8 R1 K13 - 0x58280044, // 01B1 LDCONST R10 K68 - 0x7C200400, // 01B2 CALL R8 2 - 0xB8261000, // 01B3 GETNGBL R9 K8 - 0x60280018, // 01B4 GETGBL R10 G24 - 0x582C004F, // 01B5 LDCONST R11 K79 - 0x5C300C00, // 01B6 MOVE R12 R6 - 0x5C340E00, // 01B7 MOVE R13 R7 - 0x7C280600, // 01B8 CALL R10 3 - 0x582C000A, // 01B9 LDCONST R11 K10 - 0x7C240400, // 01BA CALL R9 2 - 0x8824010B, // 01BB GETMBR R9 R0 K11 - 0x88241338, // 01BC GETMBR R9 R9 K56 - 0x8C241335, // 01BD GETMET R9 R9 K53 - 0x5C2C0C00, // 01BE MOVE R11 R6 - 0x7C240400, // 01BF CALL R9 2 - 0x4C280000, // 01C0 LDNIL R10 - 0x2028120A, // 01C1 NE R10 R9 R10 - 0x782A000D, // 01C2 JMPF R10 #01D1 - 0x60280013, // 01C3 GETGBL R10 G19 - 0x7C280000, // 01C4 CALL R10 0 - 0x78220000, // 01C5 JMPF R8 #01C7 - 0x982A8A08, // 01C6 SETIDX R10 K69 R8 - 0x8C2C133F, // 01C7 GETMET R11 R9 K63 - 0x5C341200, // 01C8 MOVE R13 R9 - 0x5C381400, // 01C9 MOVE R14 R10 - 0x5C3C0E00, // 01CA MOVE R15 R7 - 0x7C2C0800, // 01CB CALL R11 4 - 0x882C010B, // 01CC GETMBR R11 R0 K11 - 0x8C2C1750, // 01CD GETMET R11 R11 K80 - 0x5C340C00, // 01CE MOVE R13 R6 - 0x5C381400, // 01CF MOVE R14 R10 - 0x7C2C0600, // 01D0 CALL R11 3 - 0x8C280313, // 01D1 GETMET R10 R1 K19 - 0x5830004C, // 01D2 LDCONST R12 K76 - 0x7C280400, // 01D3 CALL R10 2 - 0x7002008A, // 01D4 JMP #0260 - 0x8C180305, // 01D5 GETMET R6 R1 K5 - 0x58200051, // 01D6 LDCONST R8 K81 - 0x7C180400, // 01D7 CALL R6 2 - 0x781A005D, // 01D8 JMPF R6 #0237 - 0x8C18030D, // 01D9 GETMET R6 R1 K13 - 0x58200052, // 01DA LDCONST R8 K82 - 0x7C180400, // 01DB CALL R6 2 - 0x4C1C0000, // 01DC LDNIL R7 - 0x1C1C0C07, // 01DD EQ R7 R6 R7 - 0x741E0001, // 01DE JMPT R7 #01E1 - 0x1C1C0D3A, // 01DF EQ R7 R6 K58 - 0x781E0000, // 01E0 JMPF R7 #01E2 - 0xB006A754, // 01E1 RAISE 1 K83 K84 - 0x581C0029, // 01E2 LDCONST R7 K41 - 0x60200008, // 01E3 GETGBL R8 G8 - 0x5C240E00, // 01E4 MOVE R9 R7 - 0x7C200200, // 01E5 CALL R8 1 - 0x8C240305, // 01E6 GETMET R9 R1 K5 - 0x002E9C08, // 01E7 ADD R11 K78 R8 - 0x7C240400, // 01E8 CALL R9 2 - 0x78260048, // 01E9 JMPF R9 #0233 - 0x8C24030D, // 01EA GETMET R9 R1 K13 - 0x002E9C08, // 01EB ADD R11 K78 R8 - 0x7C240400, // 01EC CALL R9 2 - 0x8C28030D, // 01ED GETMET R10 R1 K13 - 0x00321A08, // 01EE ADD R12 K13 R8 - 0x7C280400, // 01EF CALL R10 2 - 0x8C2C030D, // 01F0 GETMET R11 R1 K13 - 0x00368808, // 01F1 ADD R13 K68 R8 - 0x7C2C0400, // 01F2 CALL R11 2 - 0x2030133A, // 01F3 NE R12 R9 K58 - 0x78320037, // 01F4 JMPF R12 #022D - 0x8830010B, // 01F5 GETMBR R12 R0 K11 - 0x88301938, // 01F6 GETMBR R12 R12 K56 - 0x8C301935, // 01F7 GETMET R12 R12 K53 - 0x5C381200, // 01F8 MOVE R14 R9 - 0x7C300400, // 01F9 CALL R12 2 - 0x4C340000, // 01FA LDNIL R13 - 0x2034180D, // 01FB NE R13 R12 R13 - 0x7836002F, // 01FC JMPF R13 #022D - 0x60340013, // 01FD GETGBL R13 G19 - 0x7C340000, // 01FE CALL R13 0 - 0x9836A406, // 01FF SETIDX R13 K82 R6 - 0x98367209, // 0200 SETIDX R13 K57 R9 - 0x782E0000, // 0201 JMPF R11 #0203 - 0x98368A0B, // 0202 SETIDX R13 K69 R11 - 0x8C38193F, // 0203 GETMET R14 R12 K63 - 0x5C401800, // 0204 MOVE R16 R12 - 0x5C441A00, // 0205 MOVE R17 R13 - 0x5C481400, // 0206 MOVE R18 R10 - 0x7C380800, // 0207 CALL R14 4 - 0x50380000, // 0208 LDBOOL R14 0 0 - 0x603C0010, // 0209 GETGBL R15 G16 - 0x8840010B, // 020A GETMBR R16 R0 K11 - 0x88402137, // 020B GETMBR R16 R16 K55 - 0x7C3C0200, // 020C CALL R15 1 - 0xA802000B, // 020D EXBLK 0 #021A - 0x5C401E00, // 020E MOVE R16 R15 - 0x7C400000, // 020F CALL R16 0 - 0x8C440155, // 0210 GETMET R17 R0 K85 - 0x5C4C2000, // 0211 MOVE R19 R16 - 0x5C501A00, // 0212 MOVE R20 R13 - 0x7C440600, // 0213 CALL R17 3 - 0x78460001, // 0214 JMPF R17 #0217 - 0x50380200, // 0215 LDBOOL R14 1 0 - 0x70020000, // 0216 JMP #0218 - 0x7001FFF5, // 0217 JMP #020E - 0xA8040001, // 0218 EXBLK 1 1 - 0x70020002, // 0219 JMP #021D - 0x583C0049, // 021A LDCONST R15 K73 - 0xAC3C0200, // 021B CATCH R15 1 0 - 0xB0080000, // 021C RAISE 2 R0 R0 - 0x5C3C1C00, // 021D MOVE R15 R14 - 0x743E000D, // 021E JMPT R15 #022D - 0xB83E1000, // 021F GETNGBL R15 K8 - 0x60400018, // 0220 GETGBL R16 G24 - 0x58440056, // 0221 LDCONST R17 K86 - 0x5C480C00, // 0222 MOVE R18 R6 - 0x5C4C1200, // 0223 MOVE R19 R9 - 0x5C501400, // 0224 MOVE R20 R10 - 0x7C400800, // 0225 CALL R16 4 - 0x5844000A, // 0226 LDCONST R17 K10 - 0x7C3C0400, // 0227 CALL R15 2 - 0x883C010B, // 0228 GETMBR R15 R0 K11 - 0x8C3C1F50, // 0229 GETMET R15 R15 K80 - 0x5C441200, // 022A MOVE R17 R9 - 0x5C481A00, // 022B MOVE R18 R13 - 0x7C3C0600, // 022C CALL R15 3 - 0x001C0F2E, // 022D ADD R7 R7 K46 - 0x60300008, // 022E GETGBL R12 G8 - 0x5C340E00, // 022F MOVE R13 R7 - 0x7C300200, // 0230 CALL R12 1 - 0x5C201800, // 0231 MOVE R8 R12 - 0x7001FFB2, // 0232 JMP #01E6 - 0x8C240313, // 0233 GETMET R9 R1 K19 - 0x582C004C, // 0234 LDCONST R11 K76 - 0x7C240400, // 0235 CALL R9 2 - 0x70020028, // 0236 JMP #0260 - 0x4C180000, // 0237 LDNIL R6 - 0x601C0010, // 0238 GETGBL R7 G16 - 0x8C200333, // 0239 GETMET R8 R1 K51 - 0x7C200200, // 023A CALL R8 1 - 0x0420112E, // 023B SUB R8 R8 K46 - 0x40225208, // 023C CONNECT R8 K41 R8 - 0x7C1C0200, // 023D CALL R7 1 - 0xA8020013, // 023E EXBLK 0 #0253 - 0x5C200E00, // 023F MOVE R8 R7 - 0x7C200000, // 0240 CALL R8 0 - 0x8C240334, // 0241 GETMET R9 R1 K52 - 0x5C2C1000, // 0242 MOVE R11 R8 - 0x7C240400, // 0243 CALL R9 2 - 0x8C280535, // 0244 GETMET R10 R2 K53 - 0x5C301200, // 0245 MOVE R12 R9 - 0x58340057, // 0246 LDCONST R13 K87 - 0x7C280600, // 0247 CALL R10 3 - 0x1C281529, // 0248 EQ R10 R10 K41 - 0x782A0005, // 0249 JMPF R10 #0250 - 0x60280009, // 024A GETGBL R10 G9 - 0x402E1536, // 024B CONNECT R11 K10 K54 - 0x942C120B, // 024C GETIDX R11 R9 R11 - 0x7C280200, // 024D CALL R10 1 - 0x5C181400, // 024E MOVE R6 R10 - 0x70020000, // 024F JMP #0251 - 0x7001FFED, // 0250 JMP #023F - 0xA8040001, // 0251 EXBLK 1 1 - 0x70020002, // 0252 JMP #0256 - 0x581C0049, // 0253 LDCONST R7 K73 - 0xAC1C0200, // 0254 CATCH R7 1 0 - 0xB0080000, // 0255 RAISE 2 R0 R0 - 0x4C1C0000, // 0256 LDNIL R7 - 0x201C0C07, // 0257 NE R7 R6 R7 - 0x781E0006, // 0258 JMPF R7 #0260 - 0x881C010B, // 0259 GETMBR R7 R0 K11 - 0x8C1C0F58, // 025A GETMET R7 R7 K88 - 0x5C240C00, // 025B MOVE R9 R6 - 0x7C1C0400, // 025C CALL R7 2 - 0x8C1C0313, // 025D GETMET R7 R1 K19 - 0x5824004C, // 025E LDCONST R9 K76 - 0x7C1C0400, // 025F CALL R7 2 - 0x78160011, // 0260 JMPF R5 #0273 - 0x8C180359, // 0261 GETMET R6 R1 K89 - 0x5820005A, // 0262 LDCONST R8 K90 - 0x7C180400, // 0263 CALL R6 2 - 0x8C18035B, // 0264 GETMET R6 R1 K91 - 0x7C180200, // 0265 CALL R6 1 + 0x88241325, // 0080 GETMBR R9 R9 K37 + 0x4C280000, // 0081 LDNIL R10 + 0x2024120A, // 0082 NE R9 R9 R10 + 0x20240E09, // 0083 NE R9 R7 R9 + 0x7826000C, // 0084 JMPF R9 #0092 + 0x781E0003, // 0085 JMPF R7 #008A + 0x8824010B, // 0086 GETMBR R9 R0 K11 + 0x8C241326, // 0087 GETMET R9 R9 K38 + 0x7C240200, // 0088 CALL R9 1 + 0x70020003, // 0089 JMP #008E + 0x8824010B, // 008A GETMBR R9 R0 K11 + 0x88241324, // 008B GETMBR R9 R9 K36 + 0x8C241327, // 008C GETMET R9 R9 K39 + 0x7C240200, // 008D CALL R9 1 + 0x8C240313, // 008E GETMET R9 R1 K19 + 0x582C0028, // 008F LDCONST R11 K40 + 0x7C240400, // 0090 CALL R9 2 + 0x70020002, // 0091 JMP #0095 + 0x8C240313, // 0092 GETMET R9 R1 K19 + 0x582C0028, // 0093 LDCONST R11 K40 + 0x7C240400, // 0094 CALL R9 2 + 0x700201CB, // 0095 JMP #0262 + 0x8C180305, // 0096 GETMET R6 R1 K5 + 0x58200029, // 0097 LDCONST R8 K41 + 0x7C180400, // 0098 CALL R6 2 + 0x781A0025, // 0099 JMPF R6 #00C0 + 0xB81A1000, // 009A GETNGBL R6 K8 + 0x601C0018, // 009B GETGBL R7 G24 + 0x58200009, // 009C LDCONST R8 K9 + 0x58240029, // 009D LDCONST R9 K41 + 0x7C1C0400, // 009E CALL R7 2 + 0x5820000A, // 009F LDCONST R8 K10 + 0x7C180400, // 00A0 CALL R6 2 + 0x60180009, // 00A1 GETGBL R6 G9 + 0x8C1C030D, // 00A2 GETMET R7 R1 K13 + 0x58240029, // 00A3 LDCONST R9 K41 + 0x7C1C0400, // 00A4 CALL R7 2 + 0x7C180200, // 00A5 CALL R6 1 + 0x581C002A, // 00A6 LDCONST R7 K42 + 0x8820010B, // 00A7 GETMBR R8 R0 K11 + 0x8820112B, // 00A8 GETMBR R8 R8 K43 + 0x8820112C, // 00A9 GETMBR R8 R8 K44 + 0x6024000C, // 00AA GETGBL R9 G12 + 0x5C281000, // 00AB MOVE R10 R8 + 0x7C240200, // 00AC CALL R9 1 + 0x14240E09, // 00AD LT R9 R7 R9 + 0x7826000C, // 00AE JMPF R9 #00BC + 0x94241007, // 00AF GETIDX R9 R8 R7 + 0x8C24132D, // 00B0 GETMET R9 R9 K45 + 0x7C240200, // 00B1 CALL R9 1 + 0x1C241206, // 00B2 EQ R9 R9 R6 + 0x78260005, // 00B3 JMPF R9 #00BA + 0x8824010B, // 00B4 GETMBR R9 R0 K11 + 0x8C24132E, // 00B5 GETMET R9 R9 K46 + 0x942C1007, // 00B6 GETIDX R11 R8 R7 + 0x7C240400, // 00B7 CALL R9 2 + 0x70020002, // 00B8 JMP #00BC + 0x70020000, // 00B9 JMP #00BB + 0x001C0F2F, // 00BA ADD R7 R7 K47 + 0x7001FFED, // 00BB JMP #00AA + 0x8C240313, // 00BC GETMET R9 R1 K19 + 0x582C0030, // 00BD LDCONST R11 K48 + 0x7C240400, // 00BE CALL R9 2 + 0x700201A1, // 00BF JMP #0262 + 0x8C180305, // 00C0 GETMET R6 R1 K5 + 0x58200031, // 00C1 LDCONST R8 K49 + 0x7C180400, // 00C2 CALL R6 2 + 0x781A0010, // 00C3 JMPF R6 #00D5 + 0xB81A1000, // 00C4 GETNGBL R6 K8 + 0x601C0018, // 00C5 GETGBL R7 G24 + 0x58200009, // 00C6 LDCONST R8 K9 + 0x58240031, // 00C7 LDCONST R9 K49 + 0x7C1C0400, // 00C8 CALL R7 2 + 0x5820000A, // 00C9 LDCONST R8 K10 + 0x7C180400, // 00CA CALL R6 2 + 0x8818010B, // 00CB GETMBR R6 R0 K11 + 0x501C0000, // 00CC LDBOOL R7 0 0 + 0x901A6407, // 00CD SETMBR R6 K50 R7 + 0x8818010B, // 00CE GETMBR R6 R0 K11 + 0x8C180D12, // 00CF GETMET R6 R6 K18 + 0x7C180200, // 00D0 CALL R6 1 + 0x8C180313, // 00D1 GETMET R6 R1 K19 + 0x58200014, // 00D2 LDCONST R8 K20 + 0x7C180400, // 00D3 CALL R6 2 + 0x7002018C, // 00D4 JMP #0262 + 0x8C180305, // 00D5 GETMET R6 R1 K5 + 0x58200033, // 00D6 LDCONST R8 K51 + 0x7C180400, // 00D7 CALL R6 2 + 0x781A00CE, // 00D8 JMPF R6 #01A8 + 0xB81A1000, // 00D9 GETNGBL R6 K8 + 0x601C0018, // 00DA GETGBL R7 G24 + 0x58200009, // 00DB LDCONST R8 K9 + 0x58240033, // 00DC LDCONST R9 K51 + 0x7C1C0400, // 00DD CALL R7 2 + 0x5820000A, // 00DE LDCONST R8 K10 + 0x7C180400, // 00DF CALL R6 2 + 0x50180000, // 00E0 LDBOOL R6 0 0 + 0x601C0010, // 00E1 GETGBL R7 G16 + 0x8C200334, // 00E2 GETMET R8 R1 K52 + 0x7C200200, // 00E3 CALL R8 1 + 0x0420112F, // 00E4 SUB R8 R8 K47 + 0x40225408, // 00E5 CONNECT R8 K42 R8 + 0x7C1C0200, // 00E6 CALL R7 1 + 0xA802009B, // 00E7 EXBLK 0 #0184 + 0x5C200E00, // 00E8 MOVE R8 R7 + 0x7C200000, // 00E9 CALL R8 0 + 0x8C240335, // 00EA GETMET R9 R1 K53 + 0x5C2C1000, // 00EB MOVE R11 R8 + 0x7C240400, // 00EC CALL R9 2 + 0x8C280536, // 00ED GETMET R10 R2 K54 + 0x5C301200, // 00EE MOVE R12 R9 + 0x5834000D, // 00EF LDCONST R13 K13 + 0x7C280600, // 00F0 CALL R10 3 + 0x1C28152A, // 00F1 EQ R10 R10 K42 + 0x782A0057, // 00F2 JMPF R10 #014B + 0x60280009, // 00F3 GETGBL R10 G9 + 0x402E1537, // 00F4 CONNECT R11 K10 K55 + 0x942C120B, // 00F5 GETIDX R11 R9 R11 + 0x7C280200, // 00F6 CALL R10 1 + 0x8C2C030D, // 00F7 GETMET R11 R1 K13 + 0x5C341000, // 00F8 MOVE R13 R8 + 0x7C2C0400, // 00F9 CALL R11 2 + 0x8830010B, // 00FA GETMBR R12 R0 K11 + 0x88301938, // 00FB GETMBR R12 R12 K56 + 0x8C301936, // 00FC GETMET R12 R12 K54 + 0x60380008, // 00FD GETGBL R14 G8 + 0x5C3C1400, // 00FE MOVE R15 R10 + 0x7C380200, // 00FF CALL R14 1 + 0x7C300400, // 0100 CALL R12 2 + 0x4C340000, // 0101 LDNIL R13 + 0x2034180D, // 0102 NE R13 R12 R13 + 0x7836003E, // 0103 JMPF R13 #0143 + 0x8834010B, // 0104 GETMBR R13 R0 K11 + 0x88341B39, // 0105 GETMBR R13 R13 K57 + 0x8C341B36, // 0106 GETMET R13 R13 K54 + 0x8C3C1936, // 0107 GETMET R15 R12 K54 + 0x5844003A, // 0108 LDCONST R17 K58 + 0x5848003B, // 0109 LDCONST R18 K59 + 0x7C3C0600, // 010A CALL R15 3 + 0x7C340400, // 010B CALL R13 2 + 0x4C380000, // 010C LDNIL R14 + 0x20381A0E, // 010D NE R14 R13 R14 + 0x783A0032, // 010E JMPF R14 #0142 + 0xB83A1000, // 010F GETNGBL R14 K8 + 0x603C0018, // 0110 GETGBL R15 G24 + 0x5840003C, // 0111 LDCONST R16 K60 + 0x5C441400, // 0112 MOVE R17 R10 + 0x5C481600, // 0113 MOVE R18 R11 + 0x7C3C0600, // 0114 CALL R15 3 + 0x5840000A, // 0115 LDCONST R16 K10 + 0x7C380400, // 0116 CALL R14 2 + 0x8C381B3D, // 0117 GETMET R14 R13 K61 + 0x5C401A00, // 0118 MOVE R16 R13 + 0x5C441800, // 0119 MOVE R17 R12 + 0x7C380600, // 011A CALL R14 3 + 0x203C1C0B, // 011B NE R15 R14 R11 + 0xB8421000, // 011C GETNGBL R16 K8 + 0x60440018, // 011D GETGBL R17 G24 + 0x5848003E, // 011E LDCONST R18 K62 + 0x5C4C1400, // 011F MOVE R19 R10 + 0x5C501C00, // 0120 MOVE R20 R14 + 0x5C541600, // 0121 MOVE R21 R11 + 0x20581C0B, // 0122 NE R22 R14 R11 + 0x785A0001, // 0123 JMPF R22 #0126 + 0x5858003F, // 0124 LDCONST R22 K63 + 0x70020000, // 0125 JMP #0127 + 0x5858003B, // 0126 LDCONST R22 K59 + 0x7C440A00, // 0127 CALL R17 5 + 0x5848000A, // 0128 LDCONST R18 K10 + 0x7C400400, // 0129 CALL R16 2 + 0x783E0016, // 012A JMPF R15 #0142 + 0x50180200, // 012B LDBOOL R6 1 0 + 0x8C401B40, // 012C GETMET R16 R13 K64 + 0x5C481A00, // 012D MOVE R18 R13 + 0x5C4C1800, // 012E MOVE R19 R12 + 0x5C501600, // 012F MOVE R20 R11 + 0x7C400800, // 0130 CALL R16 4 + 0x8840010B, // 0131 GETMBR R16 R0 K11 + 0x8C402141, // 0132 GETMET R16 R16 K65 + 0x5C481400, // 0133 MOVE R18 R10 + 0x7C400400, // 0134 CALL R16 2 + 0x7842000B, // 0135 JMPF R16 #0142 + 0xB8461000, // 0136 GETNGBL R17 K8 + 0x60480018, // 0137 GETGBL R18 G24 + 0x584C0042, // 0138 LDCONST R19 K66 + 0x5C501800, // 0139 MOVE R20 R12 + 0x5C541400, // 013A MOVE R21 R10 + 0x5C582000, // 013B MOVE R22 R16 + 0x7C480800, // 013C CALL R18 4 + 0x584C000A, // 013D LDCONST R19 K10 + 0x7C440400, // 013E CALL R17 2 + 0x8C442143, // 013F GETMET R17 R16 K67 + 0x5C4C1800, // 0140 MOVE R19 R12 + 0x7C440400, // 0141 CALL R17 2 + 0x70020006, // 0142 JMP #014A + 0xB8361000, // 0143 GETNGBL R13 K8 + 0x60380018, // 0144 GETGBL R14 G24 + 0x583C0044, // 0145 LDCONST R15 K68 + 0x5C401400, // 0146 MOVE R16 R10 + 0x7C380400, // 0147 CALL R14 2 + 0x583C000A, // 0148 LDCONST R15 K10 + 0x7C340400, // 0149 CALL R13 2 + 0x70020037, // 014A JMP #0183 + 0x8C280536, // 014B GETMET R10 R2 K54 + 0x5C301200, // 014C MOVE R12 R9 + 0x58340045, // 014D LDCONST R13 K69 + 0x7C280600, // 014E CALL R10 3 + 0x1C28152A, // 014F EQ R10 R10 K42 + 0x782A0031, // 0150 JMPF R10 #0183 + 0x60280009, // 0151 GETGBL R10 G9 + 0x402E1537, // 0152 CONNECT R11 K10 K55 + 0x942C120B, // 0153 GETIDX R11 R9 R11 + 0x7C280200, // 0154 CALL R10 1 + 0x8C2C030D, // 0155 GETMET R11 R1 K13 + 0x5C341000, // 0156 MOVE R13 R8 + 0x7C2C0400, // 0157 CALL R11 2 + 0x8830010B, // 0158 GETMBR R12 R0 K11 + 0x88301938, // 0159 GETMBR R12 R12 K56 + 0x8C301936, // 015A GETMET R12 R12 K54 + 0x60380008, // 015B GETGBL R14 G8 + 0x5C3C1400, // 015C MOVE R15 R10 + 0x7C380200, // 015D CALL R14 1 + 0x7C300400, // 015E CALL R12 2 + 0x4C340000, // 015F LDNIL R13 + 0x2034180D, // 0160 NE R13 R12 R13 + 0x78360020, // 0161 JMPF R13 #0183 + 0x8C341936, // 0162 GETMET R13 R12 K54 + 0x583C0046, // 0163 LDCONST R15 K70 + 0x5840003B, // 0164 LDCONST R16 K59 + 0x7C340600, // 0165 CALL R13 3 + 0x20381A0B, // 0166 NE R14 R13 R11 + 0x783A001A, // 0167 JMPF R14 #0183 + 0x50180200, // 0168 LDBOOL R6 1 0 + 0x883C010B, // 0169 GETMBR R15 R0 K11 + 0x8C3C1F41, // 016A GETMET R15 R15 K65 + 0x5C441400, // 016B MOVE R17 R10 + 0x7C3C0400, // 016C CALL R15 2 + 0x783E0014, // 016D JMPF R15 #0183 + 0x8C401F47, // 016E GETMET R16 R15 K71 + 0x5C481600, // 016F MOVE R18 R11 + 0x7C400400, // 0170 CALL R16 2 + 0x782E0001, // 0171 JMPF R11 #0174 + 0x98328C0B, // 0172 SETIDX R12 K70 R11 + 0x70020002, // 0173 JMP #0177 + 0x8C401948, // 0174 GETMET R16 R12 K72 + 0x58480046, // 0175 LDCONST R18 K70 + 0x7C400400, // 0176 CALL R16 2 + 0xB8421000, // 0177 GETNGBL R16 K8 + 0x60440018, // 0178 GETGBL R17 G24 + 0x58480049, // 0179 LDCONST R18 K73 + 0x5C4C1800, // 017A MOVE R19 R12 + 0x5C501400, // 017B MOVE R20 R10 + 0x5C541E00, // 017C MOVE R21 R15 + 0x7C440800, // 017D CALL R17 4 + 0x5848000A, // 017E LDCONST R18 K10 + 0x7C400400, // 017F CALL R16 2 + 0x8C401F43, // 0180 GETMET R16 R15 K67 + 0x5C481800, // 0181 MOVE R18 R12 + 0x7C400400, // 0182 CALL R16 2 + 0x7001FF63, // 0183 JMP #00E8 + 0x581C004A, // 0184 LDCONST R7 K74 + 0xAC1C0200, // 0185 CATCH R7 1 0 + 0xB0080000, // 0186 RAISE 2 R0 R0 + 0xB81E1000, // 0187 GETNGBL R7 K8 + 0x60200018, // 0188 GETGBL R8 G24 + 0x5824004B, // 0189 LDCONST R9 K75 + 0x60280008, // 018A GETGBL R10 G8 + 0x882C010B, // 018B GETMBR R11 R0 K11 + 0x882C1738, // 018C GETMBR R11 R11 K56 + 0x7C280200, // 018D CALL R10 1 + 0x7C200400, // 018E CALL R8 2 + 0x5824000A, // 018F LDCONST R9 K10 + 0x7C1C0400, // 0190 CALL R7 2 + 0x78160007, // 0191 JMPF R5 #019A + 0xB81E1000, // 0192 GETNGBL R7 K8 + 0x60200018, // 0193 GETGBL R8 G24 + 0x5824004C, // 0194 LDCONST R9 K76 + 0x5C280A00, // 0195 MOVE R10 R5 + 0x7C200400, // 0196 CALL R8 2 + 0x5824000A, // 0197 LDCONST R9 K10 + 0x7C1C0400, // 0198 CALL R7 2 + 0x7002000C, // 0199 JMP #01A7 + 0x741A0002, // 019A JMPT R6 #019E + 0x881C010B, // 019B GETMBR R7 R0 K11 + 0x881C0F32, // 019C GETMBR R7 R7 K50 + 0x741E0005, // 019D JMPT R7 #01A4 + 0x881C010B, // 019E GETMBR R7 R0 K11 + 0x50200200, // 019F LDBOOL R8 1 0 + 0x901E6408, // 01A0 SETMBR R7 K50 R8 + 0x881C010B, // 01A1 GETMBR R7 R0 K11 + 0x8C1C0F12, // 01A2 GETMET R7 R7 K18 + 0x7C1C0200, // 01A3 CALL R7 1 + 0x8C1C0313, // 01A4 GETMET R7 R1 K19 + 0x5824004D, // 01A5 LDCONST R9 K77 + 0x7C1C0400, // 01A6 CALL R7 2 + 0x700200B9, // 01A7 JMP #0262 + 0x8C180305, // 01A8 GETMET R6 R1 K5 + 0x5820004E, // 01A9 LDCONST R8 K78 + 0x7C180400, // 01AA CALL R6 2 + 0x781A002A, // 01AB JMPF R6 #01D7 + 0x8C18030D, // 01AC GETMET R6 R1 K13 + 0x5820004F, // 01AD LDCONST R8 K79 + 0x7C180400, // 01AE CALL R6 2 + 0x8C1C030D, // 01AF GETMET R7 R1 K13 + 0x5824000D, // 01B0 LDCONST R9 K13 + 0x7C1C0400, // 01B1 CALL R7 2 + 0x8C20030D, // 01B2 GETMET R8 R1 K13 + 0x58280045, // 01B3 LDCONST R10 K69 + 0x7C200400, // 01B4 CALL R8 2 + 0xB8261000, // 01B5 GETNGBL R9 K8 + 0x60280018, // 01B6 GETGBL R10 G24 + 0x582C0050, // 01B7 LDCONST R11 K80 + 0x5C300C00, // 01B8 MOVE R12 R6 + 0x5C340E00, // 01B9 MOVE R13 R7 + 0x7C280600, // 01BA CALL R10 3 + 0x582C000A, // 01BB LDCONST R11 K10 + 0x7C240400, // 01BC CALL R9 2 + 0x8824010B, // 01BD GETMBR R9 R0 K11 + 0x88241339, // 01BE GETMBR R9 R9 K57 + 0x8C241336, // 01BF GETMET R9 R9 K54 + 0x5C2C0C00, // 01C0 MOVE R11 R6 + 0x7C240400, // 01C1 CALL R9 2 + 0x4C280000, // 01C2 LDNIL R10 + 0x2028120A, // 01C3 NE R10 R9 R10 + 0x782A000D, // 01C4 JMPF R10 #01D3 + 0x60280013, // 01C5 GETGBL R10 G19 + 0x7C280000, // 01C6 CALL R10 0 + 0x78220000, // 01C7 JMPF R8 #01C9 + 0x982A8C08, // 01C8 SETIDX R10 K70 R8 + 0x8C2C1340, // 01C9 GETMET R11 R9 K64 + 0x5C341200, // 01CA MOVE R13 R9 + 0x5C381400, // 01CB MOVE R14 R10 + 0x5C3C0E00, // 01CC MOVE R15 R7 + 0x7C2C0800, // 01CD CALL R11 4 + 0x882C010B, // 01CE GETMBR R11 R0 K11 + 0x8C2C1751, // 01CF GETMET R11 R11 K81 + 0x5C340C00, // 01D0 MOVE R13 R6 + 0x5C381400, // 01D1 MOVE R14 R10 + 0x7C2C0600, // 01D2 CALL R11 3 + 0x8C280313, // 01D3 GETMET R10 R1 K19 + 0x5830004D, // 01D4 LDCONST R12 K77 + 0x7C280400, // 01D5 CALL R10 2 + 0x7002008A, // 01D6 JMP #0262 + 0x8C180305, // 01D7 GETMET R6 R1 K5 + 0x58200052, // 01D8 LDCONST R8 K82 + 0x7C180400, // 01D9 CALL R6 2 + 0x781A005D, // 01DA JMPF R6 #0239 + 0x8C18030D, // 01DB GETMET R6 R1 K13 + 0x58200053, // 01DC LDCONST R8 K83 + 0x7C180400, // 01DD CALL R6 2 + 0x4C1C0000, // 01DE LDNIL R7 + 0x1C1C0C07, // 01DF EQ R7 R6 R7 + 0x741E0001, // 01E0 JMPT R7 #01E3 + 0x1C1C0D3B, // 01E1 EQ R7 R6 K59 + 0x781E0000, // 01E2 JMPF R7 #01E4 + 0xB006A955, // 01E3 RAISE 1 K84 K85 + 0x581C002A, // 01E4 LDCONST R7 K42 + 0x60200008, // 01E5 GETGBL R8 G8 + 0x5C240E00, // 01E6 MOVE R9 R7 + 0x7C200200, // 01E7 CALL R8 1 + 0x8C240305, // 01E8 GETMET R9 R1 K5 + 0x002E9E08, // 01E9 ADD R11 K79 R8 + 0x7C240400, // 01EA CALL R9 2 + 0x78260048, // 01EB JMPF R9 #0235 + 0x8C24030D, // 01EC GETMET R9 R1 K13 + 0x002E9E08, // 01ED ADD R11 K79 R8 + 0x7C240400, // 01EE CALL R9 2 + 0x8C28030D, // 01EF GETMET R10 R1 K13 + 0x00321A08, // 01F0 ADD R12 K13 R8 + 0x7C280400, // 01F1 CALL R10 2 + 0x8C2C030D, // 01F2 GETMET R11 R1 K13 + 0x00368A08, // 01F3 ADD R13 K69 R8 + 0x7C2C0400, // 01F4 CALL R11 2 + 0x2030133B, // 01F5 NE R12 R9 K59 + 0x78320037, // 01F6 JMPF R12 #022F + 0x8830010B, // 01F7 GETMBR R12 R0 K11 + 0x88301939, // 01F8 GETMBR R12 R12 K57 + 0x8C301936, // 01F9 GETMET R12 R12 K54 + 0x5C381200, // 01FA MOVE R14 R9 + 0x7C300400, // 01FB CALL R12 2 + 0x4C340000, // 01FC LDNIL R13 + 0x2034180D, // 01FD NE R13 R12 R13 + 0x7836002F, // 01FE JMPF R13 #022F + 0x60340013, // 01FF GETGBL R13 G19 + 0x7C340000, // 0200 CALL R13 0 + 0x9836A606, // 0201 SETIDX R13 K83 R6 + 0x98367409, // 0202 SETIDX R13 K58 R9 + 0x782E0000, // 0203 JMPF R11 #0205 + 0x98368C0B, // 0204 SETIDX R13 K70 R11 + 0x8C381940, // 0205 GETMET R14 R12 K64 + 0x5C401800, // 0206 MOVE R16 R12 + 0x5C441A00, // 0207 MOVE R17 R13 + 0x5C481400, // 0208 MOVE R18 R10 + 0x7C380800, // 0209 CALL R14 4 + 0x50380000, // 020A LDBOOL R14 0 0 + 0x603C0010, // 020B GETGBL R15 G16 + 0x8840010B, // 020C GETMBR R16 R0 K11 + 0x88402138, // 020D GETMBR R16 R16 K56 + 0x7C3C0200, // 020E CALL R15 1 + 0xA802000B, // 020F EXBLK 0 #021C + 0x5C401E00, // 0210 MOVE R16 R15 + 0x7C400000, // 0211 CALL R16 0 + 0x8C440156, // 0212 GETMET R17 R0 K86 + 0x5C4C2000, // 0213 MOVE R19 R16 + 0x5C501A00, // 0214 MOVE R20 R13 + 0x7C440600, // 0215 CALL R17 3 + 0x78460001, // 0216 JMPF R17 #0219 + 0x50380200, // 0217 LDBOOL R14 1 0 + 0x70020000, // 0218 JMP #021A + 0x7001FFF5, // 0219 JMP #0210 + 0xA8040001, // 021A EXBLK 1 1 + 0x70020002, // 021B JMP #021F + 0x583C004A, // 021C LDCONST R15 K74 + 0xAC3C0200, // 021D CATCH R15 1 0 + 0xB0080000, // 021E RAISE 2 R0 R0 + 0x5C3C1C00, // 021F MOVE R15 R14 + 0x743E000D, // 0220 JMPT R15 #022F + 0xB83E1000, // 0221 GETNGBL R15 K8 + 0x60400018, // 0222 GETGBL R16 G24 + 0x58440057, // 0223 LDCONST R17 K87 + 0x5C480C00, // 0224 MOVE R18 R6 + 0x5C4C1200, // 0225 MOVE R19 R9 + 0x5C501400, // 0226 MOVE R20 R10 + 0x7C400800, // 0227 CALL R16 4 + 0x5844000A, // 0228 LDCONST R17 K10 + 0x7C3C0400, // 0229 CALL R15 2 + 0x883C010B, // 022A GETMBR R15 R0 K11 + 0x8C3C1F51, // 022B GETMET R15 R15 K81 + 0x5C441200, // 022C MOVE R17 R9 + 0x5C481A00, // 022D MOVE R18 R13 + 0x7C3C0600, // 022E CALL R15 3 + 0x001C0F2F, // 022F ADD R7 R7 K47 + 0x60300008, // 0230 GETGBL R12 G8 + 0x5C340E00, // 0231 MOVE R13 R7 + 0x7C300200, // 0232 CALL R12 1 + 0x5C201800, // 0233 MOVE R8 R12 + 0x7001FFB2, // 0234 JMP #01E8 + 0x8C240313, // 0235 GETMET R9 R1 K19 + 0x582C004D, // 0236 LDCONST R11 K77 + 0x7C240400, // 0237 CALL R9 2 + 0x70020028, // 0238 JMP #0262 + 0x4C180000, // 0239 LDNIL R6 + 0x601C0010, // 023A GETGBL R7 G16 + 0x8C200334, // 023B GETMET R8 R1 K52 + 0x7C200200, // 023C CALL R8 1 + 0x0420112F, // 023D SUB R8 R8 K47 + 0x40225408, // 023E CONNECT R8 K42 R8 + 0x7C1C0200, // 023F CALL R7 1 + 0xA8020013, // 0240 EXBLK 0 #0255 + 0x5C200E00, // 0241 MOVE R8 R7 + 0x7C200000, // 0242 CALL R8 0 + 0x8C240335, // 0243 GETMET R9 R1 K53 + 0x5C2C1000, // 0244 MOVE R11 R8 + 0x7C240400, // 0245 CALL R9 2 + 0x8C280536, // 0246 GETMET R10 R2 K54 + 0x5C301200, // 0247 MOVE R12 R9 + 0x58340058, // 0248 LDCONST R13 K88 + 0x7C280600, // 0249 CALL R10 3 + 0x1C28152A, // 024A EQ R10 R10 K42 + 0x782A0005, // 024B JMPF R10 #0252 + 0x60280009, // 024C GETGBL R10 G9 + 0x402E1537, // 024D CONNECT R11 K10 K55 + 0x942C120B, // 024E GETIDX R11 R9 R11 + 0x7C280200, // 024F CALL R10 1 + 0x5C181400, // 0250 MOVE R6 R10 + 0x70020000, // 0251 JMP #0253 + 0x7001FFED, // 0252 JMP #0241 + 0xA8040001, // 0253 EXBLK 1 1 + 0x70020002, // 0254 JMP #0258 + 0x581C004A, // 0255 LDCONST R7 K74 + 0xAC1C0200, // 0256 CATCH R7 1 0 + 0xB0080000, // 0257 RAISE 2 R0 R0 + 0x4C1C0000, // 0258 LDNIL R7 + 0x201C0C07, // 0259 NE R7 R6 R7 + 0x781E0006, // 025A JMPF R7 #0262 + 0x881C010B, // 025B GETMBR R7 R0 K11 + 0x8C1C0F59, // 025C GETMET R7 R7 K89 + 0x5C240C00, // 025D MOVE R9 R6 + 0x7C1C0400, // 025E CALL R7 2 + 0x8C1C0313, // 025F GETMET R7 R1 K19 + 0x5824004D, // 0260 LDCONST R9 K77 + 0x7C1C0400, // 0261 CALL R7 2 + 0x78160011, // 0262 JMPF R5 #0275 + 0x8C18035A, // 0263 GETMET R6 R1 K90 + 0x5820005B, // 0264 LDCONST R8 K91 + 0x7C180400, // 0265 CALL R6 2 0x8C18035C, // 0266 GETMET R6 R1 K92 - 0x60200018, // 0267 GETGBL R8 G24 - 0x5824005D, // 0268 LDCONST R9 K93 - 0x8C28035E, // 0269 GETMET R10 R1 K94 - 0x5C300A00, // 026A MOVE R12 R5 - 0x7C280400, // 026B CALL R10 2 - 0x7C200400, // 026C CALL R8 2 - 0x7C180400, // 026D CALL R6 2 - 0x8C18035F, // 026E GETMET R6 R1 K95 - 0x88200360, // 026F GETMBR R8 R1 K96 - 0x7C180400, // 0270 CALL R6 2 - 0x8C180361, // 0271 GETMET R6 R1 K97 - 0x7C180200, // 0272 CALL R6 1 - 0xA8040001, // 0273 EXBLK 1 1 - 0x7002001C, // 0274 JMP #0292 - 0xAC180002, // 0275 CATCH R6 0 2 - 0x70020019, // 0276 JMP #0291 - 0xB8221000, // 0277 GETNGBL R8 K8 - 0x60240018, // 0278 GETGBL R9 G24 - 0x58280062, // 0279 LDCONST R10 K98 - 0x5C2C0C00, // 027A MOVE R11 R6 - 0x5C300E00, // 027B MOVE R12 R7 - 0x7C240600, // 027C CALL R9 3 - 0x58280063, // 027D LDCONST R10 K99 - 0x7C200400, // 027E CALL R8 2 - 0x8C200359, // 027F GETMET R8 R1 K89 - 0x5828005A, // 0280 LDCONST R10 K90 - 0x7C200400, // 0281 CALL R8 2 - 0x8C20035B, // 0282 GETMET R8 R1 K91 - 0x7C200200, // 0283 CALL R8 1 + 0x7C180200, // 0267 CALL R6 1 + 0x8C18035D, // 0268 GETMET R6 R1 K93 + 0x60200018, // 0269 GETGBL R8 G24 + 0x5824005E, // 026A LDCONST R9 K94 + 0x8C28035F, // 026B GETMET R10 R1 K95 + 0x5C300A00, // 026C MOVE R12 R5 + 0x7C280400, // 026D CALL R10 2 + 0x7C200400, // 026E CALL R8 2 + 0x7C180400, // 026F CALL R6 2 + 0x8C180360, // 0270 GETMET R6 R1 K96 + 0x88200361, // 0271 GETMBR R8 R1 K97 + 0x7C180400, // 0272 CALL R6 2 + 0x8C180362, // 0273 GETMET R6 R1 K98 + 0x7C180200, // 0274 CALL R6 1 + 0xA8040001, // 0275 EXBLK 1 1 + 0x7002001C, // 0276 JMP #0294 + 0xAC180002, // 0277 CATCH R6 0 2 + 0x70020019, // 0278 JMP #0293 + 0xB8221000, // 0279 GETNGBL R8 K8 + 0x60240018, // 027A GETGBL R9 G24 + 0x58280063, // 027B LDCONST R10 K99 + 0x5C2C0C00, // 027C MOVE R11 R6 + 0x5C300E00, // 027D MOVE R12 R7 + 0x7C240600, // 027E CALL R9 3 + 0x58280064, // 027F LDCONST R10 K100 + 0x7C200400, // 0280 CALL R8 2 + 0x8C20035A, // 0281 GETMET R8 R1 K90 + 0x5828005B, // 0282 LDCONST R10 K91 + 0x7C200400, // 0283 CALL R8 2 0x8C20035C, // 0284 GETMET R8 R1 K92 - 0x60280018, // 0285 GETGBL R10 G24 - 0x582C0064, // 0286 LDCONST R11 K100 - 0x5C300C00, // 0287 MOVE R12 R6 - 0x5C340E00, // 0288 MOVE R13 R7 - 0x7C280600, // 0289 CALL R10 3 - 0x7C200400, // 028A CALL R8 2 - 0x8C20035F, // 028B GETMET R8 R1 K95 - 0x88280360, // 028C GETMBR R10 R1 K96 - 0x7C200400, // 028D CALL R8 2 - 0x8C200361, // 028E GETMET R8 R1 K97 - 0x7C200200, // 028F CALL R8 1 - 0x70020000, // 0290 JMP #0292 - 0xB0080000, // 0291 RAISE 2 R0 R0 - 0x80000000, // 0292 RET 0 + 0x7C200200, // 0285 CALL R8 1 + 0x8C20035D, // 0286 GETMET R8 R1 K93 + 0x60280018, // 0287 GETGBL R10 G24 + 0x582C0065, // 0288 LDCONST R11 K101 + 0x5C300C00, // 0289 MOVE R12 R6 + 0x5C340E00, // 028A MOVE R13 R7 + 0x7C280600, // 028B CALL R10 3 + 0x7C200400, // 028C CALL R8 2 + 0x8C200360, // 028D GETMET R8 R1 K96 + 0x88280361, // 028E GETMBR R10 R1 K97 + 0x7C200400, // 028F CALL R8 2 + 0x8C200362, // 0290 GETMET R8 R1 K98 + 0x7C200200, // 0291 CALL R8 1 + 0x70020000, // 0292 JMP #0294 + 0xB0080000, // 0293 RAISE 2 R0 R0 + 0x80000000, // 0294 RET 0 }) ) ); @@ -3149,7 +3160,7 @@ be_local_closure(class_Matter_UI_show_enable, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(matter_enabled), /* K2 */ be_nested_str_weak(content_send), @@ -3159,17 +3170,18 @@ be_local_closure(class_Matter_UI_show_enable, /* name */ /* K6 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27menable_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27menable_X27_X20_X25s_X3E), /* K7 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27menable_X27_X3E_X3Cb_X3EMatter_X20enable_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E), /* K8 */ be_nested_str_weak(device), - /* K9 */ be_nested_str_weak(commissioning_open), - /* K10 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27comm_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27comm_X27_X20_X25s_X3E), - /* K11 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27comm_X27_X3E_X3Cb_X3ECommissioning_X20open_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E), - /* K12 */ be_nested_str_weak(disable_bridge_mode), - /* K13 */ be_nested_str_weak(_X20checked), - /* K14 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27nobridge_X27_X25s_X3E_X3Cb_X3EForce_X20Static_X20endpoints_X3C_X2Fb_X3E_X20_X28non_X2Dbridge_X29_X3C_X2Fp_X3E), - /* K15 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K9 */ be_nested_str_weak(commissioning), + /* K10 */ be_nested_str_weak(commissioning_open), + /* K11 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27comm_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27comm_X27_X20_X25s_X3E), + /* K12 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27comm_X27_X3E_X3Cb_X3ECommissioning_X20open_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E), + /* K13 */ be_nested_str_weak(disable_bridge_mode), + /* K14 */ be_nested_str_weak(_X20checked), + /* K15 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27nobridge_X27_X25s_X3E_X3Cb_X3EForce_X20Static_X20endpoints_X3C_X2Fb_X3E_X20_X28non_X2Dbridge_X29_X3C_X2Fp_X3E), + /* K16 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), }), be_str_weak(show_enable), &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ + ( &(const binstruction[57]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x88080101, // 0001 GETMBR R2 R0 K1 0x8C0C0302, // 0002 GETMET R3 R1 K2 @@ -3192,40 +3204,41 @@ be_local_closure(class_Matter_UI_show_enable, /* name */ 0x7C100400, // 0013 CALL R4 2 0x8C100101, // 0014 GETMET R4 R0 K1 0x7C100200, // 0015 CALL R4 1 - 0x7812001C, // 0016 JMPF R4 #0034 + 0x7812001D, // 0016 JMPF R4 #0035 0x88100108, // 0017 GETMBR R4 R0 K8 0x88100909, // 0018 GETMBR R4 R4 K9 - 0x4C140000, // 0019 LDNIL R5 - 0x20100805, // 001A NE R4 R4 R5 - 0x78120001, // 001B JMPF R4 #001E - 0x58100004, // 001C LDCONST R4 K4 - 0x70020000, // 001D JMP #001F - 0x58100005, // 001E LDCONST R4 K5 - 0x8C140302, // 001F GETMET R5 R1 K2 - 0x601C0018, // 0020 GETGBL R7 G24 - 0x5820000A, // 0021 LDCONST R8 K10 - 0x5C240800, // 0022 MOVE R9 R4 - 0x7C1C0400, // 0023 CALL R7 2 - 0x7C140400, // 0024 CALL R5 2 - 0x8C140302, // 0025 GETMET R5 R1 K2 - 0x581C000B, // 0026 LDCONST R7 K11 - 0x7C140400, // 0027 CALL R5 2 - 0x88140108, // 0028 GETMBR R5 R0 K8 - 0x88140B0C, // 0029 GETMBR R5 R5 K12 - 0x78160001, // 002A JMPF R5 #002D - 0x5814000D, // 002B LDCONST R5 K13 - 0x70020000, // 002C JMP #002E - 0x58140005, // 002D LDCONST R5 K5 - 0x8C180302, // 002E GETMET R6 R1 K2 - 0x60200018, // 002F GETGBL R8 G24 - 0x5824000E, // 0030 LDCONST R9 K14 - 0x5C280A00, // 0031 MOVE R10 R5 - 0x7C200400, // 0032 CALL R8 2 - 0x7C180400, // 0033 CALL R6 2 - 0x8C100302, // 0034 GETMET R4 R1 K2 - 0x5818000F, // 0035 LDCONST R6 K15 - 0x7C100400, // 0036 CALL R4 2 - 0x80000000, // 0037 RET 0 + 0x8810090A, // 0019 GETMBR R4 R4 K10 + 0x4C140000, // 001A LDNIL R5 + 0x20100805, // 001B NE R4 R4 R5 + 0x78120001, // 001C JMPF R4 #001F + 0x58100004, // 001D LDCONST R4 K4 + 0x70020000, // 001E JMP #0020 + 0x58100005, // 001F LDCONST R4 K5 + 0x8C140302, // 0020 GETMET R5 R1 K2 + 0x601C0018, // 0021 GETGBL R7 G24 + 0x5820000B, // 0022 LDCONST R8 K11 + 0x5C240800, // 0023 MOVE R9 R4 + 0x7C1C0400, // 0024 CALL R7 2 + 0x7C140400, // 0025 CALL R5 2 + 0x8C140302, // 0026 GETMET R5 R1 K2 + 0x581C000C, // 0027 LDCONST R7 K12 + 0x7C140400, // 0028 CALL R5 2 + 0x88140108, // 0029 GETMBR R5 R0 K8 + 0x88140B0D, // 002A GETMBR R5 R5 K13 + 0x78160001, // 002B JMPF R5 #002E + 0x5814000E, // 002C LDCONST R5 K14 + 0x70020000, // 002D JMP #002F + 0x58140005, // 002E LDCONST R5 K5 + 0x8C180302, // 002F GETMET R6 R1 K2 + 0x60200018, // 0030 GETGBL R8 G24 + 0x5824000F, // 0031 LDCONST R9 K15 + 0x5C280A00, // 0032 MOVE R10 R5 + 0x7C200400, // 0033 CALL R8 2 + 0x7C180400, // 0034 CALL R6 2 + 0x8C100302, // 0035 GETMET R4 R1 K2 + 0x58180010, // 0036 LDCONST R6 K16 + 0x7C100400, // 0037 CALL R4 2 + 0x80000000, // 0038 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h new file mode 100644 index 000000000..646169710 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h @@ -0,0 +1,1976 @@ +/* Solidification of Matter_z_Commissioning.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" +// compact class 'Matter_Commissioning' ktab size: 133, total: 275 (saved 1136 bytes) +static const bvalue be_ktab_class_Matter_Commissioning[133] = { + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(root_discriminator), + /* K2 */ be_nested_str_weak(root_passcode), + /* K3 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(Verhoeff), + /* K6 */ be_nested_str_weak(checksum), + /* K7 */ be_nested_str_weak(is_root_commissioning_open), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(publish_result), + /* K10 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), + /* K11 */ be_nested_str_weak(Matter), + /* K12 */ be_nested_str_weak(commissioning_open), + /* K13 */ be_nested_str_weak(mdns_remove_PASE), + /* K14 */ be_nested_str_weak(commissioning_iterations), + /* K15 */ be_nested_str_weak(commissioning_discriminator), + /* K16 */ be_nested_str_weak(commissioning_salt), + /* K17 */ be_nested_str_weak(commissioning_w0), + /* K18 */ be_nested_str_weak(commissioning_L), + /* K19 */ be_nested_str_weak(commissioning_admin_fabric), + /* K20 */ be_nested_str_weak(get_fabric), + /* K21 */ be_nested_str_weak(get_fabric_id), + /* K22 */ be_nested_str_weak(copy), + /* K23 */ be_nested_str_weak(reverse), + /* K24 */ be_nested_str_weak(tohex), + /* K25 */ be_nested_str_weak(get_admin_vendor_name), + /* K26 */ be_nested_str_weak(log), + /* K27 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), + /* K28 */ be_const_int(2), + /* K29 */ be_nested_str_weak(stop_basic_commissioning), + /* K30 */ be_nested_str_weak(resize), + /* K31 */ be_nested_str_weak(setbits), + /* K32 */ be_const_int(3), + /* K33 */ be_nested_str_weak(VENDOR_ID), + /* K34 */ be_nested_str_weak(PRODUCT_ID), + /* K35 */ be_const_int(134217727), + /* K36 */ be_nested_str_weak(MT_X3A), + /* K37 */ be_nested_str_weak(Base38), + /* K38 */ be_nested_str_weak(encode), + /* K39 */ be_nested_str_weak(crypto), + /* K40 */ be_nested_str_weak(mdns), + /* K41 */ be_nested_str_weak(mdns_announce_op_discovery), + /* K42 */ be_nested_str_weak(sessions), + /* K43 */ be_nested_str_weak(active_fabrics), + /* K44 */ be_nested_str_weak(get_device_id), + /* K45 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K46 */ be_nested_str_weak(stop_iteration), + /* K47 */ be_nested_str_weak(get_fabric_compressed), + /* K48 */ be_nested_str_weak(_X2D), + /* K49 */ be_nested_str_weak(eth), + /* K50 */ be_nested_str_weak(find), + /* K51 */ be_nested_str_weak(up), + /* K52 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K53 */ be_nested_str_weak(remove_service), + /* K54 */ be_nested_str_weak(_matter), + /* K55 */ be_nested_str_weak(_tcp), + /* K56 */ be_nested_str_weak(hostname_eth), + /* K57 */ be_nested_str_weak(wifi), + /* K58 */ be_nested_str_weak(hostname_wifi), + /* K59 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K60 */ be_nested_str_weak(_X7C), + /* K61 */ be_nested_str_weak(millis), + /* K62 */ be_nested_str_weak(mdns_announce_PASE), + /* K63 */ be_nested_str_weak(add_rule), + /* K64 */ be_nested_str_weak(Wifi_X23Connected), + /* K65 */ be_nested_str_weak(Eth_X23Connected), + /* K66 */ be_nested_str_weak(set_timer), + /* K67 */ be_const_int(0), + /* K68 */ be_nested_str_weak(string), + /* K69 */ be_nested_str_weak(start), + /* K70 */ be_nested_str_weak(replace), + /* K71 */ be_nested_str_weak(mac), + /* K72 */ be_nested_str_weak(_X3A), + /* K73 */ be_nested_str_weak(), + /* K74 */ be_nested_str_weak(ipv4only), + /* K75 */ be_nested_str_weak(contains), + /* K76 */ be_nested_str_weak(ip6local), + /* K77 */ be_nested_str_weak(add_hostname), + /* K78 */ be_nested_str_weak(ip), + /* K79 */ be_nested_str_weak(ip6), + /* K80 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), + /* K81 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), + /* K82 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), + /* K83 */ be_nested_str_weak(random), + /* K84 */ be_nested_str_weak(get), + /* K85 */ be_const_int(99999998), + /* K86 */ be_nested_str_weak(PASSCODE_INVALID), + /* K87 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K88 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K89 */ be_nested_str_weak(add_service), + /* K90 */ be_nested_str_weak(_I), + /* K91 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K92 */ be_nested_str_weak(add_subtype), + /* K93 */ be_nested_str_weak(time_reached), + /* K94 */ be_nested_str_weak(VP), + /* K95 */ be_nested_str_weak(_X25s_X2B_X25s), + /* K96 */ be_nested_str_weak(D), + /* K97 */ be_nested_str_weak(CM), + /* K98 */ be_const_int(1), + /* K99 */ be_nested_str_weak(T), + /* K100 */ be_nested_str_weak(SII), + /* K101 */ be_nested_str_weak(SAI), + /* K102 */ be_nested_str_weak(commissioning_instance_wifi), + /* K103 */ be_nested_str_weak(commissioning_instance_eth), + /* K104 */ be_nested_str_weak(_matterc), + /* K105 */ be_nested_str_weak(_udp), + /* K106 */ be_nested_str_weak(mdns_pase_eth), + /* K107 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K108 */ be_nested_str_weak(_L), + /* K109 */ be_nested_str_weak(_S), + /* K110 */ be_nested_str_weak(_V), + /* K111 */ be_nested_str_weak(_CM1), + /* K112 */ be_nested_str_weak(mdns_pase_wifi), + /* K113 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K114 */ be_nested_str_weak(count_active_fabrics), + /* K115 */ be_nested_str_weak(start_root_basic_commissioning), + /* K116 */ be_nested_str_weak(_mdns_announce_hostname), + /* K117 */ be_nested_str_weak(matter_mdns_host), + /* K118 */ be_nested_str_weak(PASE_TIMEOUT), + /* K119 */ be_nested_str_weak(compute_manual_pairing_code), + /* K120 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), + /* K121 */ be_nested_str_weak(compute_qrcode_content), + /* K122 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), + /* K123 */ be_nested_str_weak(add), + /* K124 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), + /* K125 */ be_nested_str_weak(derive), + /* K126 */ be_nested_str_weak(PBKDF_ITERATIONS), + /* K127 */ be_nested_str_weak(EC_P256), + /* K128 */ be_nested_str_weak(mod), + /* K129 */ be_nested_str_weak(public_key), + /* K130 */ be_nested_str_weak(start_basic_commissioning), + /* K131 */ be_nested_str_weak(_init_basic_commissioning), + /* K132 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), +}; + + +extern const bclass be_class_Matter_Commissioning; + +/******************************************************************** +** Solidified function: compute_manual_pairing_code +********************************************************************/ +be_local_closure(class_Matter_Commissioning_compute_manual_pairing_code, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(compute_manual_pairing_code), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x540A0FFE, // 0002 LDINT R2 4095 + 0x2C040202, // 0003 AND R1 R1 R2 + 0x540A0009, // 0004 LDINT R2 10 + 0x3C040202, // 0005 SHR R1 R1 R2 + 0x88080100, // 0006 GETMBR R2 R0 K0 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0x540E02FF, // 0008 LDINT R3 768 + 0x2C080403, // 0009 AND R2 R2 R3 + 0x540E0005, // 000A LDINT R3 6 + 0x38080403, // 000B SHL R2 R2 R3 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x880C0702, // 000D GETMBR R3 R3 K2 + 0x54123FFE, // 000E LDINT R4 16383 + 0x2C0C0604, // 000F AND R3 R3 R4 + 0x30080403, // 0010 OR R2 R2 R3 + 0x880C0100, // 0011 GETMBR R3 R0 K0 + 0x880C0702, // 0012 GETMBR R3 R3 K2 + 0x5412000D, // 0013 LDINT R4 14 + 0x3C0C0604, // 0014 SHR R3 R3 R4 + 0x60100018, // 0015 GETGBL R4 G24 + 0x58140003, // 0016 LDCONST R5 K3 + 0x5C180200, // 0017 MOVE R6 R1 + 0x5C1C0400, // 0018 MOVE R7 R2 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C100800, // 001A CALL R4 4 + 0xB8160800, // 001B GETNGBL R5 K4 + 0x88140B05, // 001C GETMBR R5 R5 K5 + 0x8C140B06, // 001D GETMET R5 R5 K6 + 0x5C1C0800, // 001E MOVE R7 R4 + 0x7C140400, // 001F CALL R5 2 + 0x00100805, // 0020 ADD R4 R4 R5 + 0x80040800, // 0021 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop_basic_commissioning +********************************************************************/ +be_local_closure(class_Matter_Commissioning_stop_basic_commissioning, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(stop_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x8C080107, // 0001 GETMET R2 R0 K7 + 0x7C080200, // 0002 CALL R2 1 + 0x780A0004, // 0003 JMPF R2 #0009 + 0xB80A1000, // 0004 GETNGBL R2 K8 + 0x8C080509, // 0005 GETMET R2 R2 K9 + 0x5810000A, // 0006 LDCONST R4 K10 + 0x5814000B, // 0007 LDCONST R5 K11 + 0x7C080600, // 0008 CALL R2 3 + 0x90021801, // 0009 SETMBR R0 K12 R1 + 0x8C08010D, // 000A GETMET R2 R0 K13 + 0x7C080200, // 000B CALL R2 1 + 0x90021C01, // 000C SETMBR R0 K14 R1 + 0x90021E01, // 000D SETMBR R0 K15 R1 + 0x90022001, // 000E SETMBR R0 K16 R1 + 0x90022201, // 000F SETMBR R0 K17 R1 + 0x90022401, // 0010 SETMBR R0 K18 R1 + 0x90022601, // 0011 SETMBR R0 K19 R1 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_commissioning_complete, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_commissioning_complete), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C080314, // 0000 GETMET R2 R1 K20 + 0x7C080200, // 0001 CALL R2 1 + 0x8C0C0515, // 0002 GETMET R3 R2 K21 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0716, // 0004 GETMET R3 R3 K22 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0717, // 0006 GETMET R3 R3 K23 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0718, // 0008 GETMET R3 R3 K24 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C100519, // 000A GETMET R4 R2 K25 + 0x7C100200, // 000B CALL R4 1 + 0xB8163400, // 000C GETNGBL R5 K26 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C001B, // 000E LDCONST R7 K27 + 0x5C200600, // 000F MOVE R8 R3 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C180600, // 0011 CALL R6 3 + 0x581C001C, // 0012 LDCONST R7 K28 + 0x7C140400, // 0013 CALL R5 2 + 0x8C14011D, // 0014 GETMET R5 R0 K29 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_qrcode_content +********************************************************************/ +be_local_closure(class_Matter_Commissioning_compute_qrcode_content, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(compute_qrcode_content), + &be_const_str_solidified, + ( &(const binstruction[44]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x7C040000, // 0001 CALL R1 0 + 0x8C04031E, // 0002 GETMET R1 R1 K30 + 0x540E000A, // 0003 LDINT R3 11 + 0x7C040400, // 0004 CALL R1 2 + 0x8C08031F, // 0005 GETMET R2 R1 K31 + 0x58100020, // 0006 LDCONST R4 K32 + 0x5416000F, // 0007 LDINT R5 16 + 0x88180100, // 0008 GETMBR R6 R0 K0 + 0x88180D21, // 0009 GETMBR R6 R6 K33 + 0x7C080800, // 000A CALL R2 4 + 0x8C08031F, // 000B GETMET R2 R1 K31 + 0x54120012, // 000C LDINT R4 19 + 0x5416000F, // 000D LDINT R5 16 + 0x88180100, // 000E GETMBR R6 R0 K0 + 0x88180D22, // 000F GETMBR R6 R6 K34 + 0x7C080800, // 0010 CALL R2 4 + 0x8C08031F, // 0011 GETMET R2 R1 K31 + 0x54120024, // 0012 LDINT R4 37 + 0x54160007, // 0013 LDINT R5 8 + 0x541A0003, // 0014 LDINT R6 4 + 0x7C080800, // 0015 CALL R2 4 + 0x8C08031F, // 0016 GETMET R2 R1 K31 + 0x5412002C, // 0017 LDINT R4 45 + 0x5416000B, // 0018 LDINT R5 12 + 0x88180100, // 0019 GETMBR R6 R0 K0 + 0x88180D01, // 001A GETMBR R6 R6 K1 + 0x541E0FFE, // 001B LDINT R7 4095 + 0x2C180C07, // 001C AND R6 R6 R7 + 0x7C080800, // 001D CALL R2 4 + 0x8C08031F, // 001E GETMET R2 R1 K31 + 0x54120038, // 001F LDINT R4 57 + 0x5416001A, // 0020 LDINT R5 27 + 0x88180100, // 0021 GETMBR R6 R0 K0 + 0x88180D02, // 0022 GETMBR R6 R6 K2 + 0x2C180D23, // 0023 AND R6 R6 K35 + 0x7C080800, // 0024 CALL R2 4 + 0xB80A0800, // 0025 GETNGBL R2 K4 + 0x88080525, // 0026 GETMBR R2 R2 K37 + 0x8C080526, // 0027 GETMET R2 R2 K38 + 0x5C100200, // 0028 MOVE R4 R1 + 0x7C080400, // 0029 CALL R2 2 + 0x000A4802, // 002A ADD R2 K36 R2 + 0x80040400, // 002B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_operational_discovery +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_operational_discovery, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_operational_discovery), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xA40A4E00, // 0000 IMPORT R2 K39 + 0xA40E5000, // 0001 IMPORT R3 K40 + 0x8C10011D, // 0002 GETMET R4 R0 K29 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100129, // 0004 GETMET R4 R0 K41 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C100400, // 0006 CALL R4 2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery_all_fabrics +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_remove_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8808052A, // 0002 GETMBR R2 R2 K42 + 0x8C08052B, // 0003 GETMET R2 R2 K43 + 0x7C080200, // 0004 CALL R2 1 + 0x7C040200, // 0005 CALL R1 1 + 0xA802000B, // 0006 EXBLK 0 #0013 + 0x5C080200, // 0007 MOVE R2 R1 + 0x7C080000, // 0008 CALL R2 0 + 0x8C0C052C, // 0009 GETMET R3 R2 K44 + 0x7C0C0200, // 000A CALL R3 1 + 0x780E0005, // 000B JMPF R3 #0012 + 0x8C0C0515, // 000C GETMET R3 R2 K21 + 0x7C0C0200, // 000D CALL R3 1 + 0x780E0002, // 000E JMPF R3 #0012 + 0x8C0C012D, // 000F GETMET R3 R0 K45 + 0x5C140400, // 0010 MOVE R5 R2 + 0x7C0C0400, // 0011 CALL R3 2 + 0x7001FFF3, // 0012 JMP #0007 + 0x5804002E, // 0013 LDCONST R1 K46 + 0xAC040200, // 0014 CATCH R1 1 0 + 0xB0080000, // 0015 RAISE 2 R0 R0 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_op_discovery +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery, /* name */ + be_nested_proto( + 12, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_remove_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0xA40A5000, // 0000 IMPORT R2 K40 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x8C0C032C, // 0002 GETMET R3 R1 K44 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0716, // 0004 GETMET R3 R3 K22 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0717, // 0006 GETMET R3 R3 K23 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C10032F, // 0008 GETMET R4 R1 K47 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140918, // 000A GETMET R5 R4 K24 + 0x7C140200, // 000B CALL R5 1 + 0x00140B30, // 000C ADD R5 R5 K48 + 0x8C180718, // 000D GETMET R6 R3 K24 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A1000, // 0010 GETNGBL R6 K8 + 0x8C180D31, // 0011 GETMET R6 R6 K49 + 0x7C180200, // 0012 CALL R6 1 + 0x8C180D32, // 0013 GETMET R6 R6 K50 + 0x58200033, // 0014 LDCONST R8 K51 + 0x7C180400, // 0015 CALL R6 2 + 0x781A000D, // 0016 JMPF R6 #0025 + 0xB81A3400, // 0017 GETNGBL R6 K26 + 0x601C0018, // 0018 GETGBL R7 G24 + 0x58200034, // 0019 LDCONST R8 K52 + 0x58240031, // 001A LDCONST R9 K49 + 0x5C280A00, // 001B MOVE R10 R5 + 0x7C1C0600, // 001C CALL R7 3 + 0x58200020, // 001D LDCONST R8 K32 + 0x7C180400, // 001E CALL R6 2 + 0x8C180535, // 001F GETMET R6 R2 K53 + 0x58200036, // 0020 LDCONST R8 K54 + 0x58240037, // 0021 LDCONST R9 K55 + 0x5C280A00, // 0022 MOVE R10 R5 + 0x882C0138, // 0023 GETMBR R11 R0 K56 + 0x7C180A00, // 0024 CALL R6 5 + 0xB81A1000, // 0025 GETNGBL R6 K8 + 0x8C180D39, // 0026 GETMET R6 R6 K57 + 0x7C180200, // 0027 CALL R6 1 + 0x8C180D32, // 0028 GETMET R6 R6 K50 + 0x58200033, // 0029 LDCONST R8 K51 + 0x7C180400, // 002A CALL R6 2 + 0x781A000D, // 002B JMPF R6 #003A + 0xB81A3400, // 002C GETNGBL R6 K26 + 0x601C0018, // 002D GETGBL R7 G24 + 0x58200034, // 002E LDCONST R8 K52 + 0x58240039, // 002F LDCONST R9 K57 + 0x5C280A00, // 0030 MOVE R10 R5 + 0x7C1C0600, // 0031 CALL R7 3 + 0x58200020, // 0032 LDCONST R8 K32 + 0x7C180400, // 0033 CALL R6 2 + 0x8C180535, // 0034 GETMET R6 R2 K53 + 0x58200036, // 0035 LDCONST R8 K54 + 0x58240037, // 0036 LDCONST R9 K55 + 0x5C280A00, // 0037 MOVE R10 R5 + 0x882C013A, // 0038 GETMBR R11 R0 K58 + 0x7C180A00, // 0039 CALL R6 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC0C0002, // 003C CATCH R3 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8163400, // 003E GETNGBL R5 K26 + 0x60180008, // 003F GETGBL R6 G8 + 0x5C1C0600, // 0040 MOVE R7 R3 + 0x7C180200, // 0041 CALL R6 1 + 0x001A7606, // 0042 ADD R6 K59 R6 + 0x00180D3C, // 0043 ADD R6 R6 K60 + 0x601C0008, // 0044 GETGBL R7 G8 + 0x5C200800, // 0045 MOVE R8 R4 + 0x7C1C0200, // 0046 CALL R7 1 + 0x00180C07, // 0047 ADD R6 R6 R7 + 0x581C001C, // 0048 LDCONST R7 K28 + 0x7C140400, // 0049 CALL R5 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_basic_commissioning +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_basic_commissioning, /* name */ + be_nested_proto( + 13, /* nstack */ + 8, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(mdns_announce_PASE), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xB8221000, // 0000 GETNGBL R8 K8 + 0x8C20113D, // 0001 GETMET R8 R8 K61 + 0x7C200200, // 0002 CALL R8 1 + 0x542603E7, // 0003 LDINT R9 1000 + 0x08240209, // 0004 MUL R9 R1 R9 + 0x00201009, // 0005 ADD R8 R8 R9 + 0x90021808, // 0006 SETMBR R0 K12 R8 + 0x90021C02, // 0007 SETMBR R0 K14 R2 + 0x90021E03, // 0008 SETMBR R0 K15 R3 + 0x90022004, // 0009 SETMBR R0 K16 R4 + 0x90022205, // 000A SETMBR R0 K17 R5 + 0x90022406, // 000B SETMBR R0 K18 R6 + 0x90022607, // 000C SETMBR R0 K19 R7 + 0xB8221000, // 000D GETNGBL R8 K8 + 0x8C201139, // 000E GETMET R8 R8 K57 + 0x7C200200, // 000F CALL R8 1 + 0x94201133, // 0010 GETIDX R8 R8 K51 + 0x74220004, // 0011 JMPT R8 #0017 + 0xB8221000, // 0012 GETNGBL R8 K8 + 0x8C201131, // 0013 GETMET R8 R8 K49 + 0x7C200200, // 0014 CALL R8 1 + 0x94201133, // 0015 GETIDX R8 R8 K51 + 0x78220002, // 0016 JMPF R8 #001A + 0x8C20013E, // 0017 GETMET R8 R0 K62 + 0x7C200200, // 0018 CALL R8 1 + 0x7002000B, // 0019 JMP #0026 + 0xB8221000, // 001A GETNGBL R8 K8 + 0x8C20113F, // 001B GETMET R8 R8 K63 + 0x58280040, // 001C LDCONST R10 K64 + 0x842C0000, // 001D CLOSURE R11 P0 + 0x5830003E, // 001E LDCONST R12 K62 + 0x7C200800, // 001F CALL R8 4 + 0xB8221000, // 0020 GETNGBL R8 K8 + 0x8C20113F, // 0021 GETMET R8 R8 K63 + 0x58280041, // 0022 LDCONST R10 K65 + 0x842C0001, // 0023 CLOSURE R11 P1 + 0x5830003E, // 0024 LDCONST R12 K62 + 0x7C200800, // 0025 CALL R8 4 + 0xA0000000, // 0026 CLOSE R0 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_operational_discovery_deferred +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_operational_discovery_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_operational_discovery), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_operational_discovery_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A1000, // 0000 GETNGBL R2 K8 + 0x8C080542, // 0001 GETMET R2 R2 K66 + 0x58100043, // 0002 LDCONST R4 K67 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _mdns_announce_hostname +********************************************************************/ +be_local_closure(class_Matter_Commissioning__mdns_announce_hostname, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(_mdns_announce_hostname), + &be_const_str_solidified, + ( &(const binstruction[146]) { /* code */ + 0xA40A5000, // 0000 IMPORT R2 K40 + 0xA40E8800, // 0001 IMPORT R3 K68 + 0x8C100545, // 0002 GETMET R4 R2 K69 + 0x7C100200, // 0003 CALL R4 1 + 0xA8020079, // 0004 EXBLK 0 #007F + 0x78060034, // 0005 JMPF R1 #003B + 0xB8121000, // 0006 GETNGBL R4 K8 + 0x8C100931, // 0007 GETMET R4 R4 K49 + 0x7C100200, // 0008 CALL R4 1 + 0x8C140746, // 0009 GETMET R5 R3 K70 + 0x8C1C0932, // 000A GETMET R7 R4 K50 + 0x58240047, // 000B LDCONST R9 K71 + 0x7C1C0400, // 000C CALL R7 2 + 0x58200048, // 000D LDCONST R8 K72 + 0x58240049, // 000E LDCONST R9 K73 + 0x7C140800, // 000F CALL R5 4 + 0x90027005, // 0010 SETMBR R0 K56 R5 + 0x88140100, // 0011 GETMBR R5 R0 K0 + 0x88140B4A, // 0012 GETMBR R5 R5 K74 + 0x78160003, // 0013 JMPF R5 #0018 + 0x8C14094B, // 0014 GETMET R5 R4 K75 + 0x581C004C, // 0015 LDCONST R7 K76 + 0x7C140400, // 0016 CALL R5 2 + 0x7416000F, // 0017 JMPT R5 #0028 + 0x8C14054D, // 0018 GETMET R5 R2 K77 + 0x881C0138, // 0019 GETMBR R7 R0 K56 + 0x8C200932, // 001A GETMET R8 R4 K50 + 0x5828004C, // 001B LDCONST R10 K76 + 0x582C0049, // 001C LDCONST R11 K73 + 0x7C200600, // 001D CALL R8 3 + 0x8C240932, // 001E GETMET R9 R4 K50 + 0x582C004E, // 001F LDCONST R11 K78 + 0x58300049, // 0020 LDCONST R12 K73 + 0x7C240600, // 0021 CALL R9 3 + 0x8C280932, // 0022 GETMET R10 R4 K50 + 0x5830004F, // 0023 LDCONST R12 K79 + 0x58340049, // 0024 LDCONST R13 K73 + 0x7C280600, // 0025 CALL R10 3 + 0x7C140A00, // 0026 CALL R5 5 + 0x70020011, // 0027 JMP #003A + 0xB8163400, // 0028 GETNGBL R5 K26 + 0x60180018, // 0029 GETGBL R6 G24 + 0x581C0050, // 002A LDCONST R7 K80 + 0x88200138, // 002B GETMBR R8 R0 K56 + 0x8C240932, // 002C GETMET R9 R4 K50 + 0x582C004E, // 002D LDCONST R11 K78 + 0x58300049, // 002E LDCONST R12 K73 + 0x7C240600, // 002F CALL R9 3 + 0x7C180600, // 0030 CALL R6 3 + 0x581C0020, // 0031 LDCONST R7 K32 + 0x7C140400, // 0032 CALL R5 2 + 0x8C14054D, // 0033 GETMET R5 R2 K77 + 0x881C0138, // 0034 GETMBR R7 R0 K56 + 0x8C200932, // 0035 GETMET R8 R4 K50 + 0x5828004E, // 0036 LDCONST R10 K78 + 0x582C0049, // 0037 LDCONST R11 K73 + 0x7C200600, // 0038 CALL R8 3 + 0x7C140600, // 0039 CALL R5 3 + 0x70020033, // 003A JMP #006F + 0xB8121000, // 003B GETNGBL R4 K8 + 0x8C100939, // 003C GETMET R4 R4 K57 + 0x7C100200, // 003D CALL R4 1 + 0x8C140746, // 003E GETMET R5 R3 K70 + 0x8C1C0932, // 003F GETMET R7 R4 K50 + 0x58240047, // 0040 LDCONST R9 K71 + 0x7C1C0400, // 0041 CALL R7 2 + 0x58200048, // 0042 LDCONST R8 K72 + 0x58240049, // 0043 LDCONST R9 K73 + 0x7C140800, // 0044 CALL R5 4 + 0x90027405, // 0045 SETMBR R0 K58 R5 + 0x88140100, // 0046 GETMBR R5 R0 K0 + 0x88140B4A, // 0047 GETMBR R5 R5 K74 + 0x78160003, // 0048 JMPF R5 #004D + 0x8C14094B, // 0049 GETMET R5 R4 K75 + 0x581C004C, // 004A LDCONST R7 K76 + 0x7C140400, // 004B CALL R5 2 + 0x7416000F, // 004C JMPT R5 #005D + 0x8C14054D, // 004D GETMET R5 R2 K77 + 0x881C013A, // 004E GETMBR R7 R0 K58 + 0x8C200932, // 004F GETMET R8 R4 K50 + 0x5828004C, // 0050 LDCONST R10 K76 + 0x582C0049, // 0051 LDCONST R11 K73 + 0x7C200600, // 0052 CALL R8 3 + 0x8C240932, // 0053 GETMET R9 R4 K50 + 0x582C004E, // 0054 LDCONST R11 K78 + 0x58300049, // 0055 LDCONST R12 K73 + 0x7C240600, // 0056 CALL R9 3 + 0x8C280932, // 0057 GETMET R10 R4 K50 + 0x5830004F, // 0058 LDCONST R12 K79 + 0x58340049, // 0059 LDCONST R13 K73 + 0x7C280600, // 005A CALL R10 3 + 0x7C140A00, // 005B CALL R5 5 + 0x70020011, // 005C JMP #006F + 0xB8163400, // 005D GETNGBL R5 K26 + 0x60180018, // 005E GETGBL R6 G24 + 0x581C0050, // 005F LDCONST R7 K80 + 0x8820013A, // 0060 GETMBR R8 R0 K58 + 0x8C240932, // 0061 GETMET R9 R4 K50 + 0x582C004E, // 0062 LDCONST R11 K78 + 0x58300049, // 0063 LDCONST R12 K73 + 0x7C240600, // 0064 CALL R9 3 + 0x7C180600, // 0065 CALL R6 3 + 0x581C0020, // 0066 LDCONST R7 K32 + 0x7C140400, // 0067 CALL R5 2 + 0x8C14054D, // 0068 GETMET R5 R2 K77 + 0x881C013A, // 0069 GETMBR R7 R0 K58 + 0x8C200932, // 006A GETMET R8 R4 K50 + 0x5828004E, // 006B LDCONST R10 K78 + 0x582C0049, // 006C LDCONST R11 K73 + 0x7C200600, // 006D CALL R8 3 + 0x7C140600, // 006E CALL R5 3 + 0xB8123400, // 006F GETNGBL R4 K26 + 0x60140018, // 0070 GETGBL R5 G24 + 0x58180051, // 0071 LDCONST R6 K81 + 0x78060001, // 0072 JMPF R1 #0075 + 0x581C0031, // 0073 LDCONST R7 K49 + 0x70020000, // 0074 JMP #0076 + 0x581C0039, // 0075 LDCONST R7 K57 + 0x78060001, // 0076 JMPF R1 #0079 + 0x88200138, // 0077 GETMBR R8 R0 K56 + 0x70020000, // 0078 JMP #007A + 0x8820013A, // 0079 GETMBR R8 R0 K58 + 0x7C140600, // 007A CALL R5 3 + 0x58180020, // 007B LDCONST R6 K32 + 0x7C100400, // 007C CALL R4 2 + 0xA8040001, // 007D EXBLK 1 1 + 0x7002000F, // 007E JMP #008F + 0xAC100002, // 007F CATCH R4 0 2 + 0x7002000C, // 0080 JMP #008E + 0xB81A3400, // 0081 GETNGBL R6 K26 + 0x601C0008, // 0082 GETGBL R7 G8 + 0x5C200800, // 0083 MOVE R8 R4 + 0x7C1C0200, // 0084 CALL R7 1 + 0x001E7607, // 0085 ADD R7 K59 R7 + 0x001C0F3C, // 0086 ADD R7 R7 K60 + 0x60200008, // 0087 GETGBL R8 G8 + 0x5C240A00, // 0088 MOVE R9 R5 + 0x7C200200, // 0089 CALL R8 1 + 0x001C0E08, // 008A ADD R7 R7 R8 + 0x5820001C, // 008B LDCONST R8 K28 + 0x7C180400, // 008C CALL R6 2 + 0x70020000, // 008D JMP #008F + 0xB0080000, // 008E RAISE 2 R0 R0 + 0x8C100152, // 008F GETMET R4 R0 K82 + 0x7C100200, // 0090 CALL R4 1 + 0x80000000, // 0091 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery_all_fabrics +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_announce_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8808052A, // 0002 GETMBR R2 R2 K42 + 0x8C08052B, // 0003 GETMET R2 R2 K43 + 0x7C080200, // 0004 CALL R2 1 + 0x7C040200, // 0005 CALL R1 1 + 0xA802000B, // 0006 EXBLK 0 #0013 + 0x5C080200, // 0007 MOVE R2 R1 + 0x7C080000, // 0008 CALL R2 0 + 0x8C0C052C, // 0009 GETMET R3 R2 K44 + 0x7C0C0200, // 000A CALL R3 1 + 0x780E0005, // 000B JMPF R3 #0012 + 0x8C0C0515, // 000C GETMET R3 R2 K21 + 0x7C0C0200, // 000D CALL R3 1 + 0x780E0002, // 000E JMPF R3 #0012 + 0x8C0C0129, // 000F GETMET R3 R0 K41 + 0x5C140400, // 0010 MOVE R5 R2 + 0x7C0C0400, // 0011 CALL R3 2 + 0x7001FFF3, // 0012 JMP #0007 + 0x5804002E, // 0013 LDCONST R1 K46 + 0xAC040200, // 0014 CATCH R1 1 0 + 0xB0080000, // 0015 RAISE 2 R0 R0 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete_deferred +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_commissioning_complete_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_commissioning_complete_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A1000, // 0000 GETNGBL R2 K8 + 0x8C080542, // 0001 GETMET R2 R2 K66 + 0x58100043, // 0002 LDCONST R4 K67 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_random_passcode +********************************************************************/ +be_local_closure(class_Matter_Commissioning_generate_random_passcode, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(generate_random_passcode), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA4064E00, // 0000 IMPORT R1 K39 + 0x4C080000, // 0001 LDNIL R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x780E001D, // 0003 JMPF R3 #0022 + 0x8C0C0353, // 0004 GETMET R3 R1 K83 + 0x54160003, // 0005 LDINT R5 4 + 0x7C0C0400, // 0006 CALL R3 2 + 0x8C0C0754, // 0007 GETMET R3 R3 K84 + 0x58140043, // 0008 LDCONST R5 K67 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C0C0600, // 000A CALL R3 3 + 0x2C0C0723, // 000B AND R3 R3 K35 + 0x5C080600, // 000C MOVE R2 R3 + 0x240C0555, // 000D GT R3 R2 K85 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7001FFF1, // 000F JMP #0002 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100156, // 0011 GETMBR R4 R0 K86 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x1C140404, // 0016 EQ R5 R2 R4 + 0x78160000, // 0017 JMPF R5 #0019 + 0x4C080000, // 0018 LDNIL R2 + 0x7001FFF9, // 0019 JMP #0014 + 0x580C002E, // 001A LDCONST R3 K46 + 0xAC0C0200, // 001B CATCH R3 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x4C0C0000, // 001D LDNIL R3 + 0x200C0403, // 001E NE R3 R2 R3 + 0x780E0000, // 001F JMPF R3 #0021 + 0x80040400, // 0020 RET 1 R2 + 0x7001FFDF, // 0021 JMP #0002 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_announce_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[115]) { /* code */ + 0xA40A5000, // 0000 IMPORT R2 K40 + 0xA802005F, // 0001 EXBLK 0 #0062 + 0x8C0C032C, // 0002 GETMET R3 R1 K44 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0716, // 0004 GETMET R3 R3 K22 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0717, // 0006 GETMET R3 R3 K23 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C10032F, // 0008 GETMET R4 R1 K47 + 0x7C100200, // 0009 CALL R4 1 + 0x8C140918, // 000A GETMET R5 R4 K24 + 0x7C140200, // 000B CALL R5 1 + 0x00140B30, // 000C ADD R5 R5 K48 + 0x8C180718, // 000D GETMET R6 R3 K24 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A3400, // 0010 GETNGBL R6 K26 + 0x001EAE05, // 0011 ADD R7 K87 R5 + 0x58200020, // 0012 LDCONST R8 K32 + 0x7C180400, // 0013 CALL R6 2 + 0xB81A1000, // 0014 GETNGBL R6 K8 + 0x8C180D31, // 0015 GETMET R6 R6 K49 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180D32, // 0017 GETMET R6 R6 K50 + 0x58200033, // 0018 LDCONST R8 K51 + 0x7C180400, // 0019 CALL R6 2 + 0x781A001E, // 001A JMPF R6 #003A + 0xB81A3400, // 001B GETNGBL R6 K26 + 0x601C0018, // 001C GETGBL R7 G24 + 0x58200058, // 001D LDCONST R8 K88 + 0x58240031, // 001E LDCONST R9 K49 + 0x5C280A00, // 001F MOVE R10 R5 + 0x882C0138, // 0020 GETMBR R11 R0 K56 + 0x7C1C0800, // 0021 CALL R7 4 + 0x58200020, // 0022 LDCONST R8 K32 + 0x7C180400, // 0023 CALL R6 2 + 0x8C180559, // 0024 GETMET R6 R2 K89 + 0x58200036, // 0025 LDCONST R8 K54 + 0x58240037, // 0026 LDCONST R9 K55 + 0x542A15A3, // 0027 LDINT R10 5540 + 0x4C2C0000, // 0028 LDNIL R11 + 0x5C300A00, // 0029 MOVE R12 R5 + 0x88340138, // 002A GETMBR R13 R0 K56 + 0x7C180E00, // 002B CALL R6 7 + 0x8C180918, // 002C GETMET R6 R4 K24 + 0x7C180200, // 002D CALL R6 1 + 0x001AB406, // 002E ADD R6 K90 R6 + 0xB81E3400, // 002F GETNGBL R7 K26 + 0x0022B606, // 0030 ADD R8 K91 R6 + 0x58240020, // 0031 LDCONST R9 K32 + 0x7C1C0400, // 0032 CALL R7 2 + 0x8C1C055C, // 0033 GETMET R7 R2 K92 + 0x58240036, // 0034 LDCONST R9 K54 + 0x58280037, // 0035 LDCONST R10 K55 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x88300138, // 0037 GETMBR R12 R0 K56 + 0x5C340C00, // 0038 MOVE R13 R6 + 0x7C1C0C00, // 0039 CALL R7 6 + 0xB81A1000, // 003A GETNGBL R6 K8 + 0x8C180D39, // 003B GETMET R6 R6 K57 + 0x7C180200, // 003C CALL R6 1 + 0x8C180D32, // 003D GETMET R6 R6 K50 + 0x58200033, // 003E LDCONST R8 K51 + 0x7C180400, // 003F CALL R6 2 + 0x781A001E, // 0040 JMPF R6 #0060 + 0xB81A3400, // 0041 GETNGBL R6 K26 + 0x601C0018, // 0042 GETGBL R7 G24 + 0x58200058, // 0043 LDCONST R8 K88 + 0x58240039, // 0044 LDCONST R9 K57 + 0x5C280A00, // 0045 MOVE R10 R5 + 0x882C013A, // 0046 GETMBR R11 R0 K58 + 0x7C1C0800, // 0047 CALL R7 4 + 0x58200020, // 0048 LDCONST R8 K32 + 0x7C180400, // 0049 CALL R6 2 + 0x8C180559, // 004A GETMET R6 R2 K89 + 0x58200036, // 004B LDCONST R8 K54 + 0x58240037, // 004C LDCONST R9 K55 + 0x542A15A3, // 004D LDINT R10 5540 + 0x4C2C0000, // 004E LDNIL R11 + 0x5C300A00, // 004F MOVE R12 R5 + 0x8834013A, // 0050 GETMBR R13 R0 K58 + 0x7C180E00, // 0051 CALL R6 7 + 0x8C180918, // 0052 GETMET R6 R4 K24 + 0x7C180200, // 0053 CALL R6 1 + 0x001AB406, // 0054 ADD R6 K90 R6 + 0xB81E3400, // 0055 GETNGBL R7 K26 + 0x0022B606, // 0056 ADD R8 K91 R6 + 0x58240020, // 0057 LDCONST R9 K32 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C1C055C, // 0059 GETMET R7 R2 K92 + 0x58240036, // 005A LDCONST R9 K54 + 0x58280037, // 005B LDCONST R10 K55 + 0x5C2C0A00, // 005C MOVE R11 R5 + 0x8830013A, // 005D GETMBR R12 R0 K58 + 0x5C340C00, // 005E MOVE R13 R6 + 0x7C1C0C00, // 005F CALL R7 6 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7002000F, // 0061 JMP #0072 + 0xAC0C0002, // 0062 CATCH R3 0 2 + 0x7002000C, // 0063 JMP #0071 + 0xB8163400, // 0064 GETNGBL R5 K26 + 0x60180008, // 0065 GETGBL R6 G8 + 0x5C1C0600, // 0066 MOVE R7 R3 + 0x7C180200, // 0067 CALL R6 1 + 0x001A7606, // 0068 ADD R6 K59 R6 + 0x00180D3C, // 0069 ADD R6 R6 K60 + 0x601C0008, // 006A GETGBL R7 G8 + 0x5C200800, // 006B MOVE R8 R4 + 0x7C1C0200, // 006C CALL R7 1 + 0x00180C07, // 006D ADD R6 R6 R7 + 0x581C001C, // 006E LDCONST R7 K28 + 0x7C140400, // 006F CALL R5 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(class_Matter_Commissioning_every_second, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060006, // 0003 JMPF R1 #000B + 0xB8061000, // 0004 GETNGBL R1 K8 + 0x8C04035D, // 0005 GETMET R1 R1 K93 + 0x880C010C, // 0006 GETMBR R3 R0 K12 + 0x7C040400, // 0007 CALL R1 2 + 0x78060001, // 0008 JMPF R1 #000B + 0x4C040000, // 0009 LDNIL R1 + 0x90021801, // 000A SETMBR R0 K12 R1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_PASE +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_announce_PASE, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_announce_PASE), + &be_const_str_solidified, + ( &(const binstruction[226]) { /* code */ + 0xA4065000, // 0000 IMPORT R1 K40 + 0xA40A4E00, // 0001 IMPORT R2 K39 + 0x600C0013, // 0002 GETGBL R3 G19 + 0x7C0C0000, // 0003 CALL R3 0 + 0x60100018, // 0004 GETGBL R4 G24 + 0x5814005F, // 0005 LDCONST R5 K95 + 0x88180100, // 0006 GETMBR R6 R0 K0 + 0x88180D21, // 0007 GETMBR R6 R6 K33 + 0x881C0100, // 0008 GETMBR R7 R0 K0 + 0x881C0F22, // 0009 GETMBR R7 R7 K34 + 0x7C100600, // 000A CALL R4 3 + 0x980EBC04, // 000B SETIDX R3 K94 R4 + 0x8810010F, // 000C GETMBR R4 R0 K15 + 0x980EC004, // 000D SETIDX R3 K96 R4 + 0x980EC362, // 000E SETIDX R3 K97 K98 + 0x980EC743, // 000F SETIDX R3 K99 K67 + 0x54121387, // 0010 LDINT R4 5000 + 0x980EC804, // 0011 SETIDX R3 K100 R4 + 0x5412012B, // 0012 LDINT R4 300 + 0x980ECA04, // 0013 SETIDX R3 K101 R4 + 0x8C100553, // 0014 GETMET R4 R2 K83 + 0x541A0007, // 0015 LDINT R6 8 + 0x7C100400, // 0016 CALL R4 2 + 0x8C100918, // 0017 GETMET R4 R4 K24 + 0x7C100200, // 0018 CALL R4 1 + 0x9002CC04, // 0019 SETMBR R0 K102 R4 + 0x8C100553, // 001A GETMET R4 R2 K83 + 0x541A0007, // 001B LDINT R6 8 + 0x7C100400, // 001C CALL R4 2 + 0x8C100918, // 001D GETMET R4 R4 K24 + 0x7C100200, // 001E CALL R4 1 + 0x9002CE04, // 001F SETMBR R0 K103 R4 + 0xA80200AF, // 0020 EXBLK 0 #00D1 + 0x88100138, // 0021 GETMBR R4 R0 K56 + 0x78120054, // 0022 JMPF R4 #0078 + 0x8C100359, // 0023 GETMET R4 R1 K89 + 0x58180068, // 0024 LDCONST R6 K104 + 0x581C0069, // 0025 LDCONST R7 K105 + 0x542215A3, // 0026 LDINT R8 5540 + 0x5C240600, // 0027 MOVE R9 R3 + 0x88280167, // 0028 GETMBR R10 R0 K103 + 0x882C0138, // 0029 GETMBR R11 R0 K56 + 0x7C100E00, // 002A CALL R4 7 + 0x50100200, // 002B LDBOOL R4 1 0 + 0x9002D404, // 002C SETMBR R0 K106 R4 + 0xB8123400, // 002D GETNGBL R4 K26 + 0x60140018, // 002E GETGBL R5 G24 + 0x5818006B, // 002F LDCONST R6 K107 + 0x581C0031, // 0030 LDCONST R7 K49 + 0x88200167, // 0031 GETMBR R8 R0 K103 + 0x88240138, // 0032 GETMBR R9 R0 K56 + 0x7C140800, // 0033 CALL R5 4 + 0x5818001C, // 0034 LDCONST R6 K28 + 0x7C100400, // 0035 CALL R4 2 + 0x60100008, // 0036 GETGBL R4 G8 + 0x8814010F, // 0037 GETMBR R5 R0 K15 + 0x541A0FFE, // 0038 LDINT R6 4095 + 0x2C140A06, // 0039 AND R5 R5 R6 + 0x7C100200, // 003A CALL R4 1 + 0x0012D804, // 003B ADD R4 K108 R4 + 0xB8163400, // 003C GETNGBL R5 K26 + 0x001AB604, // 003D ADD R6 K91 R4 + 0x581C0020, // 003E LDCONST R7 K32 + 0x7C140400, // 003F CALL R5 2 + 0x8C14035C, // 0040 GETMET R5 R1 K92 + 0x581C0068, // 0041 LDCONST R7 K104 + 0x58200069, // 0042 LDCONST R8 K105 + 0x88240167, // 0043 GETMBR R9 R0 K103 + 0x88280138, // 0044 GETMBR R10 R0 K56 + 0x5C2C0800, // 0045 MOVE R11 R4 + 0x7C140C00, // 0046 CALL R5 6 + 0x60140008, // 0047 GETGBL R5 G8 + 0x8818010F, // 0048 GETMBR R6 R0 K15 + 0x541E0EFF, // 0049 LDINT R7 3840 + 0x2C180C07, // 004A AND R6 R6 R7 + 0x541E0007, // 004B LDINT R7 8 + 0x3C180C07, // 004C SHR R6 R6 R7 + 0x7C140200, // 004D CALL R5 1 + 0x0016DA05, // 004E ADD R5 K109 R5 + 0x5C100A00, // 004F MOVE R4 R5 + 0xB8163400, // 0050 GETNGBL R5 K26 + 0x001AB604, // 0051 ADD R6 K91 R4 + 0x581C0020, // 0052 LDCONST R7 K32 + 0x7C140400, // 0053 CALL R5 2 + 0x8C14035C, // 0054 GETMET R5 R1 K92 + 0x581C0068, // 0055 LDCONST R7 K104 + 0x58200069, // 0056 LDCONST R8 K105 + 0x88240167, // 0057 GETMBR R9 R0 K103 + 0x88280138, // 0058 GETMBR R10 R0 K56 + 0x5C2C0800, // 0059 MOVE R11 R4 + 0x7C140C00, // 005A CALL R5 6 + 0x60140008, // 005B GETGBL R5 G8 + 0x88180100, // 005C GETMBR R6 R0 K0 + 0x88180D21, // 005D GETMBR R6 R6 K33 + 0x7C140200, // 005E CALL R5 1 + 0x0016DC05, // 005F ADD R5 K110 R5 + 0x5C100A00, // 0060 MOVE R4 R5 + 0xB8163400, // 0061 GETNGBL R5 K26 + 0x001AB604, // 0062 ADD R6 K91 R4 + 0x581C0020, // 0063 LDCONST R7 K32 + 0x7C140400, // 0064 CALL R5 2 + 0x8C14035C, // 0065 GETMET R5 R1 K92 + 0x581C0068, // 0066 LDCONST R7 K104 + 0x58200069, // 0067 LDCONST R8 K105 + 0x88240167, // 0068 GETMBR R9 R0 K103 + 0x88280138, // 0069 GETMBR R10 R0 K56 + 0x5C2C0800, // 006A MOVE R11 R4 + 0x7C140C00, // 006B CALL R5 6 + 0x5810006F, // 006C LDCONST R4 K111 + 0xB8163400, // 006D GETNGBL R5 K26 + 0x001AB604, // 006E ADD R6 K91 R4 + 0x581C0020, // 006F LDCONST R7 K32 + 0x7C140400, // 0070 CALL R5 2 + 0x8C14035C, // 0071 GETMET R5 R1 K92 + 0x581C0068, // 0072 LDCONST R7 K104 + 0x58200069, // 0073 LDCONST R8 K105 + 0x88240167, // 0074 GETMBR R9 R0 K103 + 0x88280138, // 0075 GETMBR R10 R0 K56 + 0x5C2C0800, // 0076 MOVE R11 R4 + 0x7C140C00, // 0077 CALL R5 6 + 0x8810013A, // 0078 GETMBR R4 R0 K58 + 0x78120054, // 0079 JMPF R4 #00CF + 0x8C100359, // 007A GETMET R4 R1 K89 + 0x58180068, // 007B LDCONST R6 K104 + 0x581C0069, // 007C LDCONST R7 K105 + 0x542215A3, // 007D LDINT R8 5540 + 0x5C240600, // 007E MOVE R9 R3 + 0x88280166, // 007F GETMBR R10 R0 K102 + 0x882C013A, // 0080 GETMBR R11 R0 K58 + 0x7C100E00, // 0081 CALL R4 7 + 0x50100200, // 0082 LDBOOL R4 1 0 + 0x9002E004, // 0083 SETMBR R0 K112 R4 + 0xB8123400, // 0084 GETNGBL R4 K26 + 0x60140018, // 0085 GETGBL R5 G24 + 0x58180071, // 0086 LDCONST R6 K113 + 0x581C0039, // 0087 LDCONST R7 K57 + 0x88200166, // 0088 GETMBR R8 R0 K102 + 0x8824013A, // 0089 GETMBR R9 R0 K58 + 0x7C140800, // 008A CALL R5 4 + 0x58180020, // 008B LDCONST R6 K32 + 0x7C100400, // 008C CALL R4 2 + 0x60100008, // 008D GETGBL R4 G8 + 0x8814010F, // 008E GETMBR R5 R0 K15 + 0x541A0FFE, // 008F LDINT R6 4095 + 0x2C140A06, // 0090 AND R5 R5 R6 + 0x7C100200, // 0091 CALL R4 1 + 0x0012D804, // 0092 ADD R4 K108 R4 + 0xB8163400, // 0093 GETNGBL R5 K26 + 0x001AB604, // 0094 ADD R6 K91 R4 + 0x581C0020, // 0095 LDCONST R7 K32 + 0x7C140400, // 0096 CALL R5 2 + 0x8C14035C, // 0097 GETMET R5 R1 K92 + 0x581C0068, // 0098 LDCONST R7 K104 + 0x58200069, // 0099 LDCONST R8 K105 + 0x88240166, // 009A GETMBR R9 R0 K102 + 0x8828013A, // 009B GETMBR R10 R0 K58 + 0x5C2C0800, // 009C MOVE R11 R4 + 0x7C140C00, // 009D CALL R5 6 + 0x60140008, // 009E GETGBL R5 G8 + 0x8818010F, // 009F GETMBR R6 R0 K15 + 0x541E0EFF, // 00A0 LDINT R7 3840 + 0x2C180C07, // 00A1 AND R6 R6 R7 + 0x541E0007, // 00A2 LDINT R7 8 + 0x3C180C07, // 00A3 SHR R6 R6 R7 + 0x7C140200, // 00A4 CALL R5 1 + 0x0016DA05, // 00A5 ADD R5 K109 R5 + 0x5C100A00, // 00A6 MOVE R4 R5 + 0xB8163400, // 00A7 GETNGBL R5 K26 + 0x001AB604, // 00A8 ADD R6 K91 R4 + 0x581C0020, // 00A9 LDCONST R7 K32 + 0x7C140400, // 00AA CALL R5 2 + 0x8C14035C, // 00AB GETMET R5 R1 K92 + 0x581C0068, // 00AC LDCONST R7 K104 + 0x58200069, // 00AD LDCONST R8 K105 + 0x88240166, // 00AE GETMBR R9 R0 K102 + 0x8828013A, // 00AF GETMBR R10 R0 K58 + 0x5C2C0800, // 00B0 MOVE R11 R4 + 0x7C140C00, // 00B1 CALL R5 6 + 0x60140008, // 00B2 GETGBL R5 G8 + 0x88180100, // 00B3 GETMBR R6 R0 K0 + 0x88180D21, // 00B4 GETMBR R6 R6 K33 + 0x7C140200, // 00B5 CALL R5 1 + 0x0016DC05, // 00B6 ADD R5 K110 R5 + 0x5C100A00, // 00B7 MOVE R4 R5 + 0xB8163400, // 00B8 GETNGBL R5 K26 + 0x001AB604, // 00B9 ADD R6 K91 R4 + 0x581C0020, // 00BA LDCONST R7 K32 + 0x7C140400, // 00BB CALL R5 2 + 0x8C14035C, // 00BC GETMET R5 R1 K92 + 0x581C0068, // 00BD LDCONST R7 K104 + 0x58200069, // 00BE LDCONST R8 K105 + 0x88240166, // 00BF GETMBR R9 R0 K102 + 0x8828013A, // 00C0 GETMBR R10 R0 K58 + 0x5C2C0800, // 00C1 MOVE R11 R4 + 0x7C140C00, // 00C2 CALL R5 6 + 0x5810006F, // 00C3 LDCONST R4 K111 + 0xB8163400, // 00C4 GETNGBL R5 K26 + 0x001AB604, // 00C5 ADD R6 K91 R4 + 0x581C0020, // 00C6 LDCONST R7 K32 + 0x7C140400, // 00C7 CALL R5 2 + 0x8C14035C, // 00C8 GETMET R5 R1 K92 + 0x581C0068, // 00C9 LDCONST R7 K104 + 0x58200069, // 00CA LDCONST R8 K105 + 0x88240166, // 00CB GETMBR R9 R0 K102 + 0x8828013A, // 00CC GETMBR R10 R0 K58 + 0x5C2C0800, // 00CD MOVE R11 R4 + 0x7C140C00, // 00CE CALL R5 6 + 0xA8040001, // 00CF EXBLK 1 1 + 0x7002000F, // 00D0 JMP #00E1 + 0xAC100002, // 00D1 CATCH R4 0 2 + 0x7002000C, // 00D2 JMP #00E0 + 0xB81A3400, // 00D3 GETNGBL R6 K26 + 0x601C0008, // 00D4 GETGBL R7 G8 + 0x5C200800, // 00D5 MOVE R8 R4 + 0x7C1C0200, // 00D6 CALL R7 1 + 0x001E7607, // 00D7 ADD R7 K59 R7 + 0x001C0F3C, // 00D8 ADD R7 R7 K60 + 0x60200008, // 00D9 GETGBL R8 G8 + 0x5C240A00, // 00DA MOVE R9 R5 + 0x7C200200, // 00DB CALL R8 1 + 0x001C0E08, // 00DC ADD R7 R7 R8 + 0x5820001C, // 00DD LDCONST R8 K28 + 0x7C180400, // 00DE CALL R6 2 + 0x70020000, // 00DF JMP #00E1 + 0xB0080000, // 00E0 RAISE 2 R0 R0 + 0x80000000, // 00E1 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_basic_commissioning +********************************************************************/ +be_local_closure(class_Matter_Commissioning__init_basic_commissioning, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(_init_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804032A, // 0001 GETMBR R1 R1 K42 + 0x8C040372, // 0002 GETMET R1 R1 K114 + 0x7C040200, // 0003 CALL R1 1 + 0x1C040343, // 0004 EQ R1 R1 K67 + 0x78060001, // 0005 JMPF R1 #0008 + 0x8C040173, // 0006 GETMET R1 R0 K115 + 0x7C040200, // 0007 CALL R1 1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_mdns_announce_hostnames +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_mdns_announce_hostnames, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(_mdns_announce_hostname), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_mdns_host), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x50080200, // 0002 LDBOOL R2 1 0 + 0x7C000400, // 0003 CALL R0 2 + 0xB8020200, // 0004 GETNGBL R0 K1 + 0x8C000102, // 0005 GETMET R0 R0 K2 + 0x58080003, // 0006 LDCONST R2 K3 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C000600, // 0008 CALL R0 3 + 0x80000000, // 0009 RET 0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_mdns_announce_hostnames), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0xB8061000, // 0000 GETNGBL R1 K8 + 0x8C040339, // 0001 GETMET R1 R1 K57 + 0x7C040200, // 0002 CALL R1 1 + 0x94040333, // 0003 GETIDX R1 R1 K51 + 0x78060003, // 0004 JMPF R1 #0009 + 0x8C040174, // 0005 GETMET R1 R0 K116 + 0x500C0000, // 0006 LDBOOL R3 0 0 + 0x7C040400, // 0007 CALL R1 2 + 0x70020005, // 0008 JMP #000F + 0xB8061000, // 0009 GETNGBL R1 K8 + 0x8C04033F, // 000A GETMET R1 R1 K63 + 0x580C0040, // 000B LDCONST R3 K64 + 0x84100000, // 000C CLOSURE R4 P0 + 0x58140075, // 000D LDCONST R5 K117 + 0x7C040800, // 000E CALL R1 4 + 0xB8061000, // 000F GETNGBL R1 K8 + 0x8C040331, // 0010 GETMET R1 R1 K49 + 0x7C040200, // 0011 CALL R1 1 + 0x94040333, // 0012 GETIDX R1 R1 K51 + 0x78060003, // 0013 JMPF R1 #0018 + 0x8C040174, // 0014 GETMET R1 R0 K116 + 0x500C0200, // 0015 LDBOOL R3 1 0 + 0x7C040400, // 0016 CALL R1 2 + 0x70020005, // 0017 JMP #001E + 0xB8061000, // 0018 GETNGBL R1 K8 + 0x8C04033F, // 0019 GETMET R1 R1 K63 + 0x580C0041, // 001A LDCONST R3 K65 + 0x84100001, // 001B CLOSURE R4 P1 + 0x58140075, // 001C LDCONST R5 K117 + 0x7C040800, // 001D CALL R1 4 + 0xA0000000, // 001E CLOSE R0 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_root_commissioning_open +********************************************************************/ +be_local_closure(class_Matter_Commissioning_is_root_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(is_root_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060003, // 0003 JMPF R1 #0008 + 0x88040113, // 0004 GETMBR R1 R0 K19 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x74060000, // 0007 JMPT R1 #0009 + 0x50040001, // 0008 LDBOOL R1 0 1 + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_root_basic_commissioning +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_root_basic_commissioning, /* name */ + be_nested_proto( + 22, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_root_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[76]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040176, // 0003 GETMBR R1 R0 K118 + 0x8C080177, // 0004 GETMET R2 R0 K119 + 0x7C080200, // 0005 CALL R2 1 + 0xB80E3400, // 0006 GETNGBL R3 K26 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140078, // 0008 LDCONST R5 K120 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C100400, // 000A CALL R4 2 + 0x5814001C, // 000B LDCONST R5 K28 + 0x7C0C0400, // 000C CALL R3 2 + 0x8C0C0179, // 000D GETMET R3 R0 K121 + 0x7C0C0200, // 000E CALL R3 1 + 0xB8121000, // 000F GETNGBL R4 K8 + 0x8C100909, // 0010 GETMET R4 R4 K9 + 0x60180018, // 0011 GETGBL R6 G24 + 0x581C007A, // 0012 LDCONST R7 K122 + 0x5C200400, // 0013 MOVE R8 R2 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C180600, // 0015 CALL R6 3 + 0x581C000B, // 0016 LDCONST R7 K11 + 0x7C100600, // 0017 CALL R4 3 + 0xA4124E00, // 0018 IMPORT R4 K39 + 0x8C140953, // 0019 GETMET R5 R4 K83 + 0x541E000F, // 001A LDINT R7 16 + 0x7C140400, // 001B CALL R5 2 + 0x60180015, // 001C GETGBL R6 G21 + 0x7C180000, // 001D CALL R6 0 + 0x8C180D7B, // 001E GETMET R6 R6 K123 + 0x88200100, // 001F GETMBR R8 R0 K0 + 0x88201102, // 0020 GETMBR R8 R8 K2 + 0x54260003, // 0021 LDINT R9 4 + 0x7C180600, // 0022 CALL R6 3 + 0x8C1C097C, // 0023 GETMET R7 R4 K124 + 0x7C1C0200, // 0024 CALL R7 1 + 0x8C1C0F7D, // 0025 GETMET R7 R7 K125 + 0x5C240C00, // 0026 MOVE R9 R6 + 0x5C280A00, // 0027 MOVE R10 R5 + 0x882C017E, // 0028 GETMBR R11 R0 K126 + 0x5432004F, // 0029 LDINT R12 80 + 0x7C1C0A00, // 002A CALL R7 5 + 0x54220026, // 002B LDINT R8 39 + 0x40228608, // 002C CONNECT R8 K67 R8 + 0x94200E08, // 002D GETIDX R8 R7 R8 + 0x54260027, // 002E LDINT R9 40 + 0x542A004E, // 002F LDINT R10 79 + 0x4024120A, // 0030 CONNECT R9 R9 R10 + 0x94240E09, // 0031 GETIDX R9 R7 R9 + 0x8C28097F, // 0032 GETMET R10 R4 K127 + 0x7C280200, // 0033 CALL R10 1 + 0x8C281580, // 0034 GETMET R10 R10 K128 + 0x5C301000, // 0035 MOVE R12 R8 + 0x7C280400, // 0036 CALL R10 2 + 0x8C2C097F, // 0037 GETMET R11 R4 K127 + 0x7C2C0200, // 0038 CALL R11 1 + 0x8C2C1780, // 0039 GETMET R11 R11 K128 + 0x5C341200, // 003A MOVE R13 R9 + 0x7C2C0400, // 003B CALL R11 2 + 0x8C30097F, // 003C GETMET R12 R4 K127 + 0x7C300200, // 003D CALL R12 1 + 0x8C301981, // 003E GETMET R12 R12 K129 + 0x5C381600, // 003F MOVE R14 R11 + 0x7C300400, // 0040 CALL R12 2 + 0x8C340182, // 0041 GETMET R13 R0 K130 + 0x5C3C0200, // 0042 MOVE R15 R1 + 0x8840017E, // 0043 GETMBR R16 R0 K126 + 0x88440100, // 0044 GETMBR R17 R0 K0 + 0x88442301, // 0045 GETMBR R17 R17 K1 + 0x5C480A00, // 0046 MOVE R18 R5 + 0x5C4C1400, // 0047 MOVE R19 R10 + 0x5C501800, // 0048 MOVE R20 R12 + 0x4C540000, // 0049 LDNIL R21 + 0x7C341000, // 004A CALL R13 8 + 0x80000000, // 004B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_commissioning_open +********************************************************************/ +be_local_closure(class_Matter_Commissioning_is_commissioning_open, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(is_commissioning_open), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_Matter_Commissioning_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x8C080183, // 0001 GETMET R2 R0 K131 + 0x7C080200, // 0002 CALL R2 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_remove_PASE +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_remove_PASE, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_remove_PASE), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0xA4065000, // 0000 IMPORT R1 K40 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x8808016A, // 0002 GETMBR R2 R0 K106 + 0x780A0019, // 0003 JMPF R2 #001E + 0xB80A3400, // 0004 GETNGBL R2 K26 + 0x600C0018, // 0005 GETGBL R3 G24 + 0x58100084, // 0006 LDCONST R4 K132 + 0x58140068, // 0007 LDCONST R5 K104 + 0x58180069, // 0008 LDCONST R6 K105 + 0x881C0167, // 0009 GETMBR R7 R0 K103 + 0x88200138, // 000A GETMBR R8 R0 K56 + 0x7C0C0A00, // 000B CALL R3 5 + 0x58100020, // 000C LDCONST R4 K32 + 0x7C080400, // 000D CALL R2 2 + 0xB80A3400, // 000E GETNGBL R2 K26 + 0x600C0018, // 000F GETGBL R3 G24 + 0x58100034, // 0010 LDCONST R4 K52 + 0x58140031, // 0011 LDCONST R5 K49 + 0x88180167, // 0012 GETMBR R6 R0 K103 + 0x7C0C0600, // 0013 CALL R3 3 + 0x58100020, // 0014 LDCONST R4 K32 + 0x7C080400, // 0015 CALL R2 2 + 0x50080000, // 0016 LDBOOL R2 0 0 + 0x9002D402, // 0017 SETMBR R0 K106 R2 + 0x8C080335, // 0018 GETMET R2 R1 K53 + 0x58100068, // 0019 LDCONST R4 K104 + 0x58140069, // 001A LDCONST R5 K105 + 0x88180167, // 001B GETMBR R6 R0 K103 + 0x881C0138, // 001C GETMBR R7 R0 K56 + 0x7C080A00, // 001D CALL R2 5 + 0x88080170, // 001E GETMBR R2 R0 K112 + 0x780A0019, // 001F JMPF R2 #003A + 0xB80A3400, // 0020 GETNGBL R2 K26 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100084, // 0022 LDCONST R4 K132 + 0x58140068, // 0023 LDCONST R5 K104 + 0x58180069, // 0024 LDCONST R6 K105 + 0x881C0166, // 0025 GETMBR R7 R0 K102 + 0x8820013A, // 0026 GETMBR R8 R0 K58 + 0x7C0C0A00, // 0027 CALL R3 5 + 0x58100020, // 0028 LDCONST R4 K32 + 0x7C080400, // 0029 CALL R2 2 + 0xB80A3400, // 002A GETNGBL R2 K26 + 0x600C0018, // 002B GETGBL R3 G24 + 0x58100034, // 002C LDCONST R4 K52 + 0x58140039, // 002D LDCONST R5 K57 + 0x88180166, // 002E GETMBR R6 R0 K102 + 0x7C0C0600, // 002F CALL R3 3 + 0x58100020, // 0030 LDCONST R4 K32 + 0x7C080400, // 0031 CALL R2 2 + 0x50080000, // 0032 LDBOOL R2 0 0 + 0x9002E002, // 0033 SETMBR R0 K112 R2 + 0x8C080335, // 0034 GETMET R2 R1 K53 + 0x58100068, // 0035 LDCONST R4 K104 + 0x58140069, // 0036 LDCONST R5 K105 + 0x88180166, // 0037 GETMBR R6 R0 K102 + 0x881C013A, // 0038 GETMBR R7 R0 K58 + 0x7C080A00, // 0039 CALL R2 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC080002, // 003C CATCH R2 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8123400, // 003E GETNGBL R4 K26 + 0x60140008, // 003F GETGBL R5 G8 + 0x5C180400, // 0040 MOVE R6 R2 + 0x7C140200, // 0041 CALL R5 1 + 0x00167605, // 0042 ADD R5 K59 R5 + 0x00140B3C, // 0043 ADD R5 R5 K60 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x00140A06, // 0047 ADD R5 R5 R6 + 0x5818001C, // 0048 LDCONST R6 K28 + 0x7C100400, // 0049 CALL R4 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Commissioning +********************************************************************/ +be_local_class(Matter_Commissioning, + 14, + NULL, + be_nested_map(40, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(7) }, + { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(commissioning_instance_eth, 6), be_const_var(9) }, + { be_const_key_weak(mdns_remove_PASE, 1), be_const_closure(class_Matter_Commissioning_mdns_remove_PASE_closure) }, + { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_stop_basic_commissioning_closure) }, + { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(13) }, + { be_const_key_weak(commissioning_w0, -1), be_const_var(5) }, + { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(class_Matter_Commissioning_compute_qrcode_content_closure) }, + { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_closure) }, + { be_const_key_weak(commissioning_open, -1), be_const_var(1) }, + { be_const_key_weak(compute_manual_pairing_code, 3), be_const_closure(class_Matter_Commissioning_compute_manual_pairing_code_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(init, 32), be_const_closure(class_Matter_Commissioning_init_closure) }, + { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(12, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(11111111), + be_const_int(22222222), + be_const_int(33333333), + be_const_int(44444444), + be_const_int(55555555), + be_const_int(66666666), + be_const_int(77777777), + be_const_int(88888888), + be_const_int(99999999), + be_const_int(12345678), + be_const_int(87654321), + })) ) } )) }, + { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Commissioning_start_operational_discovery_deferred_closure) }, + { be_const_key_weak(start_commissioning_complete, 8), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_closure) }, + { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(class_Matter_Commissioning__mdns_announce_hostname_closure) }, + { be_const_key_weak(start_operational_discovery, 14), be_const_closure(class_Matter_Commissioning_start_operational_discovery_closure) }, + { be_const_key_weak(start_basic_commissioning, 16), be_const_closure(class_Matter_Commissioning_start_basic_commissioning_closure) }, + { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, 28), be_const_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_start_root_basic_commissioning_closure) }, + { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Commissioning_generate_random_passcode_closure) }, + { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_op_discovery_closure) }, + { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, + { be_const_key_weak(hostname_eth, -1), be_const_var(11) }, + { be_const_key_weak(every_second, 20), be_const_closure(class_Matter_Commissioning_every_second_closure) }, + { be_const_key_weak(commissioning_instance_wifi, 23), be_const_var(8) }, + { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_PASE_closure) }, + { be_const_key_weak(commissioning_L, -1), be_const_var(6) }, + { be_const_key_weak(_init_basic_commissioning, 30), be_const_closure(class_Matter_Commissioning__init_basic_commissioning_closure) }, + { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Commissioning_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Commissioning_is_root_commissioning_open_closure) }, + { be_const_key_weak(start_commissioning_complete_deferred, 38), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_deferred_closure) }, + { be_const_key_weak(commissioning_salt, -1), be_const_var(4) }, + { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Commissioning_is_commissioning_open_closure) }, + { be_const_key_weak(mdns_pase_eth, 12), be_const_var(12) }, + { be_const_key_weak(hostname_wifi, -1), be_const_var(10) }, + { be_const_key_weak(commissioning_iterations, -1), be_const_var(2) }, + { be_const_key_weak(commissioning_discriminator, -1), be_const_var(3) }, + { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, + })), + be_str_weak(Matter_Commissioning) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index b13c67c7c..f59edbdea 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -3,214 +3,291 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// ktab too big for class 'Matter_Device' - skipping +extern const bclass be_class_Matter_Device; +// compact class 'Matter_Device' ktab size: 255, total: 533 (saved 2224 bytes) +static const bvalue be_ktab_class_Matter_Device[255] = { + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(received_ack), + /* K2 */ be_nested_str_weak(started), + /* K3 */ be_nested_str_weak(autoconf_device), + /* K4 */ be_nested_str_weak(_start_udp), + /* K5 */ be_nested_str_weak(UDP_PORT), + /* K6 */ be_nested_str_weak(commissioning), + /* K7 */ be_nested_str_weak(start_mdns_announce_hostnames), + /* K8 */ be_nested_str_weak(sessions), + /* K9 */ be_nested_str_weak(count_active_fabrics), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(plugins_persist), + /* K12 */ be_nested_str_weak(save_param), + /* K13 */ be_nested_str_weak(stop_basic_commissioning), + /* K14 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), + /* K15 */ be_const_class(be_class_Matter_Device), + /* K16 */ be_nested_str_weak(), + /* K17 */ be_nested_str_weak(k2l), + /* K18 */ be_nested_str_weak(type), + /* K19 */ be_nested_str_weak(_X20_X25s_X3A_X25s), + /* K20 */ be_nested_str_weak(stop_iteration), + /* K21 */ be_nested_str_weak(crypto), + /* K22 */ be_nested_str_weak(tasmota), + /* K23 */ be_nested_str_weak(get_option), + /* K24 */ be_nested_str_weak(matter), + /* K25 */ be_nested_str_weak(MATTER_OPTION), + /* K26 */ be_nested_str_weak(UI), + /* K27 */ be_nested_str_weak(profiler), + /* K28 */ be_nested_str_weak(Profiler), + /* K29 */ be_nested_str_weak(tick), + /* K30 */ be_nested_str_weak(plugins), + /* K31 */ be_nested_str_weak(plugins_config_remotes), + /* K32 */ be_nested_str_weak(next_ep), + /* K33 */ be_const_int(2), + /* K34 */ be_nested_str_weak(ipv4only), + /* K35 */ be_nested_str_weak(disable_bridge_mode), + /* K36 */ be_nested_str_weak(load_param), + /* K37 */ be_nested_str_weak(Session_Store), + /* K38 */ be_nested_str_weak(load_fabrics), + /* K39 */ be_nested_str_weak(message_handler), + /* K40 */ be_nested_str_weak(MessageHandler), + /* K41 */ be_nested_str_weak(events), + /* K42 */ be_nested_str_weak(EventHandler), + /* K43 */ be_nested_str_weak(ui), + /* K44 */ be_nested_str_weak(wifi), + /* K45 */ be_nested_str_weak(up), + /* K46 */ be_nested_str_weak(eth), + /* K47 */ be_nested_str_weak(start), + /* K48 */ be_nested_str_weak(add_rule), + /* K49 */ be_nested_str_weak(Wifi_X23Connected), + /* K50 */ be_nested_str_weak(matter_start), + /* K51 */ be_nested_str_weak(Eth_X23Connected), + /* K52 */ be_nested_str_weak(Commissioning), + /* K53 */ be_nested_str_weak(add_driver), + /* K54 */ be_nested_str_weak(register_commands), + /* K55 */ be_nested_str_weak(get_name), + /* K56 */ be_const_int(1), + /* K57 */ be_nested_str_weak(find), + /* K58 */ be_nested_str_weak(log), + /* K59 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K60 */ be_nested_str_weak(UDPServer), + /* K61 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), + /* K62 */ be_nested_str_weak(get_fabric_id), + /* K63 */ be_nested_str_weak(copy), + /* K64 */ be_nested_str_weak(reverse), + /* K65 */ be_nested_str_weak(tohex), + /* K66 */ be_nested_str_weak(im), + /* K67 */ be_nested_str_weak(subs_shop), + /* K68 */ be_nested_str_weak(remove_by_fabric), + /* K69 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K70 */ be_nested_str_weak(remove_fabric), + /* K71 */ be_nested_str_weak(save_fabrics), + /* K72 */ be_nested_str_weak(endpoint), + /* K73 */ be_nested_str_weak(cluster), + /* K74 */ be_nested_str_weak(attribute), + /* K75 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K76 */ be_nested_str_weak(status), + /* K77 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K78 */ be_nested_str_weak(contains_cluster), + /* K79 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K80 */ be_nested_str_weak(contains_attribute), + /* K81 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K82 */ be_nested_str_weak(attribute_updated), + /* K83 */ be_const_int(3), + /* K84 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K85 */ be_nested_str_weak(json), + /* K86 */ be_nested_str_weak(plugins_config), + /* K87 */ be_nested_str_weak(autoconf_device_map), + /* K88 */ be_nested_str_weak(adjust_next_ep), + /* K89 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), + /* K90 */ be_nested_str_weak(_instantiate_plugins_from_config), + /* K91 */ be_nested_str_weak(read_sensors), + /* K92 */ be_nested_str_weak(loglevel), + /* K93 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), + /* K94 */ be_nested_str_weak(load), + /* K95 */ be_nested_str_weak(parse_sensors), + /* K96 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), + /* K97 */ be_nested_str_weak(get_endpoint), + /* K98 */ be_nested_str_weak(push), + /* K99 */ be_nested_str_weak(send_UDP), + /* K100 */ be_nested_str_weak(remove_driver), + /* K101 */ be_nested_str_weak(stop), + /* K102 */ be_nested_str_weak(keys), + /* K103 */ be_nested_str_weak(probe_sensor_time), + /* K104 */ be_nested_str_weak(probe_sensor_timestamp), + /* K105 */ be_nested_str_weak(jitter), + /* K106 */ be_nested_str_weak(button_handler), + /* K107 */ be_nested_str_weak(http_remotes), + /* K108 */ be_nested_str_weak(contains), + /* K109 */ be_nested_str_weak(get_timeout), + /* K110 */ be_nested_str_weak(set_timeout), + /* K111 */ be_nested_str_weak(HTTP_remote), + /* K112 */ be_nested_str_weak(set_info), + /* K113 */ be_nested_str_weak(k2l_num), + /* K114 */ be_nested_str_weak(Plugin_Root), + /* K115 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), + /* K116 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), + /* K117 */ be_nested_str_weak(root), + /* K118 */ be_nested_str_weak(Plugin_Aggregator), + /* K119 */ be_nested_str_weak(aggregator), + /* K120 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), + /* K121 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), + /* K122 */ be_nested_str_weak(plugins_classes), + /* K123 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K124 */ be_nested_str_weak(_X27_X20skipping), + /* K125 */ be_nested_str_weak(conf_to_log), + /* K126 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K127 */ be_nested_str_weak(_X7C), + /* K128 */ be_nested_str_weak(publish_result), + /* K129 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), + /* K130 */ be_nested_str_weak(Matter), + /* K131 */ be_nested_str_weak(remove), + /* K132 */ be_nested_str_weak(DISPLAY_NAME), + /* K133 */ be_nested_str_weak(introspect), + /* K134 */ be_nested_str_weak(get), + /* K135 */ be_nested_str_weak(http_remote), + /* K136 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), + /* K137 */ be_nested_str_weak(addr), + /* K138 */ be_nested_str_weak(close), + /* K139 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), + /* K140 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), + /* K141 */ be_nested_str_weak(every_second), + /* K142 */ be_nested_str_weak(Path), + /* K143 */ be_nested_str_weak(attribute_updated_ctx), + /* K144 */ be_nested_str_weak(read_sensors_scheduler), + /* K145 */ be_nested_str_weak(every_250ms), + /* K146 */ be_nested_str_weak(PathGenerator), + /* K147 */ be_nested_str_weak(is_direct), + /* K148 */ be_nested_str_weak(next_attribute), + /* K149 */ be_nested_str_weak(get_pi), + /* K150 */ be_nested_str_weak(START_ENDPOINT), + /* K151 */ be_nested_str_weak(light), + /* K152 */ be_nested_str_weak(channels), + /* K153 */ be_nested_str_weak(light1), + /* K154 */ be_nested_str_weak(light2), + /* K155 */ be_nested_str_weak(light3), + /* K156 */ be_nested_str_weak(cmd), + /* K157 */ be_nested_str_weak(Status_X2013), + /* K158 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), + /* K159 */ be_nested_str_weak(StatusSHT), + /* K160 */ be_nested_str_weak(SHT), + /* K161 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), + /* K162 */ be_nested_str_weak(Relay1), + /* K163 */ be_nested_str_weak(Relay2), + /* K164 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), + /* K165 */ be_nested_str_weak(TiltConfig), + /* K166 */ be_nested_str_weak(shutter_X2Btilt), + /* K167 */ be_nested_str_weak(shutter), + /* K168 */ be_nested_str_weak(get_power), + /* K169 */ be_nested_str_weak(relay), + /* K170 */ be_nested_str_weak(autoconf_sensors_list), + /* K171 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K172 */ be_nested_str_weak(signal_endpoints_changed), + /* K173 */ be_nested_str_weak(MtrInfo_one), + /* K174 */ be_nested_str_weak(int), + /* K175 */ be_nested_str_weak(find_plugin_by_friendly_name), + /* K176 */ be_nested_str_weak(resp_cmnd_done), + /* K177 */ be_nested_str_weak(FILENAME), + /* K178 */ be_nested_str_weak(read), + /* K179 */ be_nested_str_weak(root_discriminator), + /* K180 */ be_nested_str_weak(distinguish), + /* K181 */ be_nested_str_weak(root_passcode), + /* K182 */ be_nested_str_weak(passcode), + /* K183 */ be_nested_str_weak(nextep), + /* K184 */ be_nested_str_weak(config), + /* K185 */ be_nested_str_weak(debug), + /* K186 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), + /* K187 */ be_nested_str_weak(check_config_ep), + /* K188 */ be_nested_str_weak(remotes), + /* K189 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), + /* K190 */ be_nested_str_weak(io_error), + /* K191 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), + /* K192 */ be_nested_str_weak(random), + /* K193 */ be_nested_str_weak(generate_random_passcode), + /* K194 */ be_nested_str_weak(resp_cmnd_str), + /* K195 */ be_nested_str_weak(Invalid_X20JSON), + /* K196 */ be_nested_str_weak(find_key_i), + /* K197 */ be_nested_str_weak(Ep), + /* K198 */ be_nested_str_weak(Name), + /* K199 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute), + /* K200 */ be_nested_str_weak(Invalid_X20Device), + /* K201 */ be_nested_str_weak(VIRTUAL), + /* K202 */ be_nested_str_weak(Device_X20is_X20not_X20virtual), + /* K203 */ be_nested_str_weak(consolidate_update_commands), + /* K204 */ be_nested_str_weak(find_list_i), + /* K205 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27), + /* K206 */ be_nested_str_weak(update_virtual), + /* K207 */ be_nested_str_weak(state_json), + /* K208 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D), + /* K209 */ be_nested_str_weak(resp_cmnd), + /* K210 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute), + /* K211 */ be_nested_str_weak(add_cmd), + /* K212 */ be_nested_str_weak(MtrJoin), + /* K213 */ be_nested_str_weak(MtrUpdate), + /* K214 */ be_nested_str_weak(MtrInfo), + /* K215 */ be_nested_str_weak(update_remotes_info), + /* K216 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), + /* K217 */ be_nested_str_weak(true), + /* K218 */ be_nested_str_weak(false), + /* K219 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), + /* K220 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), + /* K221 */ be_nested_str_weak(dump), + /* K222 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), + /* K223 */ be_nested_str_weak(_X7D), + /* K224 */ be_nested_str_weak(w), + /* K225 */ be_nested_str_weak(write), + /* K226 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K227 */ be_nested_str_weak(_X20and_X20configuration), + /* K228 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K229 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), + /* K230 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), + /* K231 */ be_nested_str_weak(clean_remotes), + /* K232 */ be_nested_str_weak(msg_received), + /* K233 */ be_nested_str_weak(invoke_request), + /* K234 */ be_nested_str_weak(time_reached), + /* K235 */ be_nested_str_weak(_trigger_read_sensors), + /* K236 */ be_nested_str_weak(millis), + /* K237 */ be_nested_str_weak(start_root_basic_commissioning), + /* K238 */ be_nested_str_weak(Temperature), + /* K239 */ be_nested_str_weak(_X23Temperature), + /* K240 */ be_nested_str_weak(temperature), + /* K241 */ be_nested_str_weak(filter), + /* K242 */ be_nested_str_weak(Pressure), + /* K243 */ be_nested_str_weak(_X23Pressure), + /* K244 */ be_nested_str_weak(pressure), + /* K245 */ be_nested_str_weak(Illuminance), + /* K246 */ be_nested_str_weak(_X23Illuminance), + /* K247 */ be_nested_str_weak(illuminance), + /* K248 */ be_nested_str_weak(Humidity), + /* K249 */ be_nested_str_weak(_X23Humidity), + /* K250 */ be_nested_str_weak(humidity), + /* K251 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), + /* K252 */ be_nested_str_weak(every_50ms), + /* K253 */ be_nested_str_weak(ARG), + /* K254 */ be_nested_str_weak(get_info), +}; + extern const bclass be_class_Matter_Device; /******************************************************************** -** Solidified function: start_commissioning_complete +** Solidified function: received_ack ********************************************************************/ -be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric), - /* K1 */ be_nested_str_weak(get_fabric_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(get_admin_vendor_name), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(stop_basic_commissioning), - }), - be_str_weak(start_commissioning_complete), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x8C0C0501, // 0002 GETMET R3 R2 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x7C100200, // 000B CALL R4 1 - 0xB8160C00, // 000C GETNGBL R5 K6 - 0x60180018, // 000D GETGBL R6 G24 - 0x581C0007, // 000E LDCONST R7 K7 - 0x5C200600, // 000F MOVE R8 R3 - 0x5C240800, // 0010 MOVE R9 R4 - 0x7C180600, // 0011 CALL R6 3 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x7C140400, // 0013 CALL R5 2 - 0x8C140109, // 0014 GETMET R5 R0 K9 - 0x7C140200, // 0015 CALL R5 1 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: k2l_num -********************************************************************/ -be_local_closure(class_Matter_Device_k2l_num, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(k2l_num), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020007, // 000B EXBLK 0 #0014 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x601C0009, // 000F GETGBL R7 G9 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C1C0200, // 0011 CALL R7 1 - 0x7C140400, // 0012 CALL R5 2 - 0x7001FFF7, // 0013 JMP #000C - 0x580C0003, // 0014 LDCONST R3 K3 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x600C0010, // 0017 GETGBL R3 G16 - 0x6010000C, // 0018 GETGBL R4 G12 - 0x5C140400, // 0019 MOVE R5 R2 - 0x7C100200, // 001A CALL R4 1 - 0x04100904, // 001B SUB R4 R4 K4 - 0x40120804, // 001C CONNECT R4 K4 R4 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x94140404, // 0021 GETIDX R5 R2 R4 - 0x5C180800, // 0022 MOVE R6 R4 - 0x241C0D05, // 0023 GT R7 R6 K5 - 0x781E0008, // 0024 JMPF R7 #002E - 0x041C0D04, // 0025 SUB R7 R6 K4 - 0x941C0407, // 0026 GETIDX R7 R2 R7 - 0x241C0E05, // 0027 GT R7 R7 R5 - 0x781E0004, // 0028 JMPF R7 #002E - 0x041C0D04, // 0029 SUB R7 R6 K4 - 0x941C0407, // 002A GETIDX R7 R2 R7 - 0x98080C07, // 002B SETIDX R2 R6 R7 - 0x04180D04, // 002C SUB R6 R6 K4 - 0x7001FFF4, // 002D JMP #0023 - 0x98080C05, // 002E SETIDX R2 R6 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0003, // 0030 LDCONST R3 K3 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x80040400, // 0033 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_fabric -********************************************************************/ -be_local_closure(class_Matter_Device_remove_fabric, /* name */ +be_local_closure(class_Matter_Device_received_ack, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), - /* K2 */ be_nested_str_weak(get_fabric_id), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(reverse), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(message_handler), - /* K8 */ be_nested_str_weak(im), - /* K9 */ be_nested_str_weak(subs_shop), - /* K10 */ be_nested_str_weak(remove_by_fabric), - /* K11 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(remove_fabric), - /* K14 */ be_nested_str_weak(save_fabrics), - }), - be_str_weak(remove_fabric), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(received_ack), &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0018, // 0002 JMPF R2 #001C - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C0C0302, // 0004 GETMET R3 R1 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0705, // 000A GETMET R3 R3 K5 - 0x7C0C0200, // 000B CALL R3 1 - 0x000E0203, // 000C ADD R3 K1 R3 - 0x58100006, // 000D LDCONST R4 K6 - 0x7C080400, // 000E CALL R2 2 - 0x88080107, // 000F GETMBR R2 R0 K7 - 0x88080508, // 0010 GETMBR R2 R2 K8 - 0x88080509, // 0011 GETMBR R2 R2 K9 - 0x8C08050A, // 0012 GETMET R2 R2 K10 - 0x5C100200, // 0013 MOVE R4 R1 - 0x7C080400, // 0014 CALL R2 2 - 0x8C08010B, // 0015 GETMET R2 R0 K11 - 0x5C100200, // 0016 MOVE R4 R1 - 0x7C080400, // 0017 CALL R2 2 - 0x8808010C, // 0018 GETMBR R2 R0 K12 - 0x8C08050D, // 0019 GETMET R2 R2 K13 - 0x5C100200, // 001A MOVE R4 R1 - 0x7C080400, // 001B CALL R2 2 - 0x8808010C, // 001C GETMBR R2 R0 K12 - 0x8C08050E, // 001D GETMET R2 R2 K14 - 0x7C080200, // 001E CALL R2 1 - 0x80000000, // 001F RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -218,194 +295,71 @@ be_local_closure(class_Matter_Device_remove_fabric, /* name */ /******************************************************************** -** Solidified function: _mdns_announce_hostname +** Solidified function: start ********************************************************************/ -be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ +be_local_closure(class_Matter_Device_start, /* name */ be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(start), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(eth), - /* K5 */ be_nested_str_weak(hostname_eth), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(mac), - /* K9 */ be_nested_str_weak(_X3A), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(contains), - /* K13 */ be_nested_str_weak(ip6local), - /* K14 */ be_nested_str_weak(add_hostname), - /* K15 */ be_nested_str_weak(ip), - /* K16 */ be_nested_str_weak(ip6), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(wifi), - /* K21 */ be_nested_str_weak(hostname_wifi), - /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), - /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K24 */ be_nested_str_weak(_X7C), - /* K25 */ be_const_int(2), - /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), - }), - be_str_weak(_mdns_announce_hostname), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[144]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100502, // 0002 GETMET R4 R2 K2 - 0x7C100200, // 0003 CALL R4 1 - 0xA8020077, // 0004 EXBLK 0 #007D - 0x78060033, // 0005 JMPF R1 #003A - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x7C100200, // 0008 CALL R4 1 - 0x8C140706, // 0009 GETMET R5 R3 K6 - 0x8C1C0907, // 000A GETMET R7 R4 K7 - 0x58240008, // 000B LDCONST R9 K8 - 0x7C1C0400, // 000C CALL R7 2 - 0x58200009, // 000D LDCONST R8 K9 - 0x5824000A, // 000E LDCONST R9 K10 - 0x7C140800, // 000F CALL R5 4 - 0x90020A05, // 0010 SETMBR R0 K5 R5 - 0x8814010B, // 0011 GETMBR R5 R0 K11 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C14090C, // 0013 GETMET R5 R4 K12 - 0x581C000D, // 0014 LDCONST R7 K13 - 0x7C140400, // 0015 CALL R5 2 - 0x7416000F, // 0016 JMPT R5 #0027 - 0x8C14050E, // 0017 GETMET R5 R2 K14 - 0x881C0105, // 0018 GETMBR R7 R0 K5 - 0x8C200907, // 0019 GETMET R8 R4 K7 - 0x5828000D, // 001A LDCONST R10 K13 - 0x582C000A, // 001B LDCONST R11 K10 - 0x7C200600, // 001C CALL R8 3 - 0x8C240907, // 001D GETMET R9 R4 K7 - 0x582C000F, // 001E LDCONST R11 K15 - 0x5830000A, // 001F LDCONST R12 K10 - 0x7C240600, // 0020 CALL R9 3 - 0x8C280907, // 0021 GETMET R10 R4 K7 - 0x58300010, // 0022 LDCONST R12 K16 - 0x5834000A, // 0023 LDCONST R13 K10 - 0x7C280600, // 0024 CALL R10 3 - 0x7C140A00, // 0025 CALL R5 5 - 0x70020011, // 0026 JMP #0039 - 0xB8162200, // 0027 GETNGBL R5 K17 - 0x60180018, // 0028 GETGBL R6 G24 - 0x581C0012, // 0029 LDCONST R7 K18 - 0x88200105, // 002A GETMBR R8 R0 K5 - 0x8C240907, // 002B GETMET R9 R4 K7 - 0x582C000F, // 002C LDCONST R11 K15 - 0x5830000A, // 002D LDCONST R12 K10 - 0x7C240600, // 002E CALL R9 3 - 0x7C180600, // 002F CALL R6 3 - 0x581C0013, // 0030 LDCONST R7 K19 - 0x7C140400, // 0031 CALL R5 2 - 0x8C14050E, // 0032 GETMET R5 R2 K14 - 0x881C0105, // 0033 GETMBR R7 R0 K5 - 0x8C200907, // 0034 GETMET R8 R4 K7 - 0x5828000F, // 0035 LDCONST R10 K15 - 0x582C000A, // 0036 LDCONST R11 K10 - 0x7C200600, // 0037 CALL R8 3 - 0x7C140600, // 0038 CALL R5 3 - 0x70020032, // 0039 JMP #006D - 0xB8120600, // 003A GETNGBL R4 K3 - 0x8C100914, // 003B GETMET R4 R4 K20 - 0x7C100200, // 003C CALL R4 1 - 0x8C140706, // 003D GETMET R5 R3 K6 - 0x8C1C0907, // 003E GETMET R7 R4 K7 - 0x58240008, // 003F LDCONST R9 K8 - 0x7C1C0400, // 0040 CALL R7 2 - 0x58200009, // 0041 LDCONST R8 K9 - 0x5824000A, // 0042 LDCONST R9 K10 - 0x7C140800, // 0043 CALL R5 4 - 0x90022A05, // 0044 SETMBR R0 K21 R5 - 0x8814010B, // 0045 GETMBR R5 R0 K11 - 0x78160003, // 0046 JMPF R5 #004B - 0x8C14090C, // 0047 GETMET R5 R4 K12 - 0x581C000D, // 0048 LDCONST R7 K13 - 0x7C140400, // 0049 CALL R5 2 - 0x7416000F, // 004A JMPT R5 #005B - 0x8C14050E, // 004B GETMET R5 R2 K14 - 0x881C0115, // 004C GETMBR R7 R0 K21 - 0x8C200907, // 004D GETMET R8 R4 K7 - 0x5828000D, // 004E LDCONST R10 K13 - 0x582C000A, // 004F LDCONST R11 K10 - 0x7C200600, // 0050 CALL R8 3 - 0x8C240907, // 0051 GETMET R9 R4 K7 - 0x582C000F, // 0052 LDCONST R11 K15 - 0x5830000A, // 0053 LDCONST R12 K10 - 0x7C240600, // 0054 CALL R9 3 - 0x8C280907, // 0055 GETMET R10 R4 K7 - 0x58300010, // 0056 LDCONST R12 K16 - 0x5834000A, // 0057 LDCONST R13 K10 - 0x7C280600, // 0058 CALL R10 3 - 0x7C140A00, // 0059 CALL R5 5 - 0x70020011, // 005A JMP #006D - 0xB8162200, // 005B GETNGBL R5 K17 - 0x60180018, // 005C GETGBL R6 G24 - 0x581C0012, // 005D LDCONST R7 K18 - 0x88200115, // 005E GETMBR R8 R0 K21 - 0x8C240907, // 005F GETMET R9 R4 K7 - 0x582C000F, // 0060 LDCONST R11 K15 - 0x5830000A, // 0061 LDCONST R12 K10 - 0x7C240600, // 0062 CALL R9 3 - 0x7C180600, // 0063 CALL R6 3 - 0x581C0013, // 0064 LDCONST R7 K19 - 0x7C140400, // 0065 CALL R5 2 - 0x8C14050E, // 0066 GETMET R5 R2 K14 - 0x881C0115, // 0067 GETMBR R7 R0 K21 - 0x8C200907, // 0068 GETMET R8 R4 K7 - 0x5828000F, // 0069 LDCONST R10 K15 - 0x582C000A, // 006A LDCONST R11 K10 - 0x7C200600, // 006B CALL R8 3 - 0x7C140600, // 006C CALL R5 3 - 0xB8122200, // 006D GETNGBL R4 K17 - 0x60140018, // 006E GETGBL R5 G24 - 0x58180016, // 006F LDCONST R6 K22 - 0x78060001, // 0070 JMPF R1 #0073 - 0x581C0004, // 0071 LDCONST R7 K4 - 0x70020000, // 0072 JMP #0074 - 0x581C0014, // 0073 LDCONST R7 K20 - 0x78060001, // 0074 JMPF R1 #0077 - 0x88200105, // 0075 GETMBR R8 R0 K5 - 0x70020000, // 0076 JMP #0078 - 0x88200115, // 0077 GETMBR R8 R0 K21 - 0x7C140600, // 0078 CALL R5 3 - 0x58180013, // 0079 LDCONST R6 K19 - 0x7C100400, // 007A CALL R4 2 - 0xA8040001, // 007B EXBLK 1 1 - 0x7002000F, // 007C JMP #008D - 0xAC100002, // 007D CATCH R4 0 2 - 0x7002000C, // 007E JMP #008C - 0xB81A2200, // 007F GETNGBL R6 K17 - 0x601C0008, // 0080 GETGBL R7 G8 - 0x5C200800, // 0081 MOVE R8 R4 - 0x7C1C0200, // 0082 CALL R7 1 - 0x001E2E07, // 0083 ADD R7 K23 R7 - 0x001C0F18, // 0084 ADD R7 R7 K24 - 0x60200008, // 0085 GETGBL R8 G8 - 0x5C240A00, // 0086 MOVE R9 R5 - 0x7C200200, // 0087 CALL R8 1 - 0x001C0E08, // 0088 ADD R7 R7 R8 - 0x58200019, // 0089 LDCONST R8 K25 - 0x7C180400, // 008A CALL R6 2 - 0x70020000, // 008B JMP #008D - 0xB0080000, // 008C RAISE 2 R0 R0 - 0x8C10011A, // 008D GETMET R4 R0 K26 - 0x7C100200, // 008E CALL R4 1 - 0x80000000, // 008F RET 0 + ( &(const binstruction[14]) { /* code */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040103, // 0003 GETMET R1 R0 K3 + 0x7C040200, // 0004 CALL R1 1 + 0x8C040104, // 0005 GETMET R1 R0 K4 + 0x880C0105, // 0006 GETMBR R3 R0 K5 + 0x7C040400, // 0007 CALL R1 2 + 0x88040106, // 0008 GETMBR R1 R0 K6 + 0x8C040307, // 0009 GETMET R1 R1 K7 + 0x7C040200, // 000A CALL R1 1 + 0x50040200, // 000B LDBOOL R1 1 0 + 0x90020401, // 000C SETMBR R0 K2 R1 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event_fabrics_saved +********************************************************************/ +be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(event_fabrics_saved), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x8C040309, // 0001 GETMET R1 R1 K9 + 0x7C040200, // 0002 CALL R1 1 + 0x2404030A, // 0003 GT R1 R1 K10 + 0x78060005, // 0004 JMPF R1 #000B + 0x8804010B, // 0005 GETMBR R1 R0 K11 + 0x74060003, // 0006 JMPT R1 #000B + 0x50040200, // 0007 LDBOOL R1 1 0 + 0x90021601, // 0008 SETMBR R0 K11 R1 + 0x8C04010C, // 0009 GETMET R1 R0 K12 + 0x7C040200, // 000A CALL R1 1 + 0x80000000, // 000B RET 0 }) ) ); @@ -419,22 +373,19 @@ be_local_closure(class_Matter_Device_save_before_restart, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(stop_basic_commissioning), - /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), - }), + &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(save_before_restart), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010D, // 0000 GETMET R1 R0 K13 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x8C04010E, // 0002 GETMET R1 R0 K14 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -444,166 +395,46 @@ be_local_closure(class_Matter_Device_save_before_restart, /* name */ /******************************************************************** -** Solidified function: every_second +** Solidified function: conf_to_log ********************************************************************/ -be_local_closure(class_Matter_Device_every_second, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(events), - /* K4 */ be_nested_str_weak(commissioning_open), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(time_reached), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x8C040301, // 0007 GETMET R1 R1 K1 - 0x7C040200, // 0008 CALL R1 1 - 0x88040104, // 0009 GETMBR R1 R0 K4 - 0x4C080000, // 000A LDNIL R2 - 0x20040202, // 000B NE R1 R1 R2 - 0x78060006, // 000C JMPF R1 #0014 - 0xB8060A00, // 000D GETNGBL R1 K5 - 0x8C040306, // 000E GETMET R1 R1 K6 - 0x880C0104, // 000F GETMBR R3 R0 K4 - 0x7C040400, // 0010 CALL R1 2 - 0x78060001, // 0011 JMPF R1 #0014 - 0x4C040000, // 0012 LDNIL R1 - 0x90020801, // 0013 SETMBR R0 K4 R1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_Matter_Device_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - /* K2 */ be_nested_str_weak(udp_server), - /* K3 */ be_nested_str_weak(stop), - }), - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x88040102, // 0004 GETMBR R1 R0 K2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040102, // 0006 GETMBR R1 R0 K2 - 0x8C040303, // 0007 GETMET R1 R1 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -be_local_closure(class_Matter_Device_every_250ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(read_sensors_scheduler), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(every_250ms), - /* K4 */ be_const_int(1), - }), - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x14080202, // 0006 LT R2 R1 R2 - 0x780A0005, // 0007 JMPF R2 #000E - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C080503, // 000A GETMET R2 R2 K3 - 0x7C080200, // 000B CALL R2 1 - 0x00040304, // 000C ADD R1 R1 K4 - 0x7001FFF4, // 000D JMP #0003 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_received -********************************************************************/ -be_local_closure(class_Matter_Device_msg_received, /* name */ +be_local_closure(class_Matter_Device_conf_to_log, /* name */ be_nested_proto( 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ + 1, /* argc */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(msg_received), - }), - be_str_weak(msg_received), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(conf_to_log), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 + ( &(const binstruction[24]) { /* code */ + 0x5804000F, // 0000 LDCONST R1 K15 + 0x58080010, // 0001 LDCONST R2 K16 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100311, // 0003 GETMET R4 R1 K17 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA802000B, // 0007 EXBLK 0 #0014 + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x1C140912, // 000A EQ R5 R4 K18 + 0x78160000, // 000B JMPF R5 #000D + 0x7001FFFA, // 000C JMP #0008 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180013, // 000E LDCONST R6 K19 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x94200004, // 0010 GETIDX R8 R0 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x00080405, // 0012 ADD R2 R2 R5 + 0x7001FFF3, // 0013 JMP #0008 + 0x580C0014, // 0014 LDCONST R3 K20 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x80040400, // 0017 RET 1 R2 }) ) ); @@ -611,41 +442,413 @@ be_local_closure(class_Matter_Device_msg_received, /* name */ /******************************************************************** -** Solidified function: add_read_sensors_schedule +** Solidified function: init ********************************************************************/ -be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ +be_local_closure(class_Matter_Device_init, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Wifi_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(remove_rule), + /* K3 */ be_nested_str_weak(Eth_X23Connected), + /* K4 */ be_nested_str_weak(matter_start), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020200, // 0003 GETNGBL R0 K1 + 0x8C000102, // 0004 GETMET R0 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x580C0004, // 0006 LDCONST R3 K4 + 0x7C000600, // 0007 CALL R0 3 + 0x80000000, // 0008 RET 0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[105]) { /* code */ + 0xA4062A00, // 0000 IMPORT R1 K21 + 0xB80A2C00, // 0001 GETNGBL R2 K22 + 0x8C080517, // 0002 GETMET R2 R2 K23 + 0xB8123000, // 0003 GETNGBL R4 K24 + 0x88100919, // 0004 GETMBR R4 R4 K25 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0004, // 0006 JMPT R2 #000C + 0xB80A3000, // 0007 GETNGBL R2 K24 + 0x8C08051A, // 0008 GETMET R2 R2 K26 + 0x5C100000, // 0009 MOVE R4 R0 + 0x7C080400, // 000A CALL R2 2 + 0x80000400, // 000B RET 0 + 0xB80A3000, // 000C GETNGBL R2 K24 + 0xB80E3000, // 000D GETNGBL R3 K24 + 0x8C0C071C, // 000E GETMET R3 R3 K28 + 0x7C0C0200, // 000F CALL R3 1 + 0x900A3603, // 0010 SETMBR R2 K27 R3 + 0x50080000, // 0011 LDBOOL R2 0 0 + 0x90020402, // 0012 SETMBR R0 K2 R2 + 0x90023B0A, // 0013 SETMBR R0 K29 K10 + 0x60080012, // 0014 GETGBL R2 G18 + 0x7C080000, // 0015 CALL R2 0 + 0x90023C02, // 0016 SETMBR R0 K30 R2 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x90021602, // 0018 SETMBR R0 K11 R2 + 0x60080013, // 0019 GETGBL R2 G19 + 0x7C080000, // 001A CALL R2 0 + 0x90023E02, // 001B SETMBR R0 K31 R2 + 0x90024121, // 001C SETMBR R0 K32 K33 + 0x50080000, // 001D LDBOOL R2 0 0 + 0x90024402, // 001E SETMBR R0 K34 R2 + 0x50080000, // 001F LDBOOL R2 0 0 + 0x90024602, // 0020 SETMBR R0 K35 R2 + 0x8C080124, // 0021 GETMET R2 R0 K36 + 0x7C080200, // 0022 CALL R2 1 + 0xB80A3000, // 0023 GETNGBL R2 K24 + 0x8C080525, // 0024 GETMET R2 R2 K37 + 0x5C100000, // 0025 MOVE R4 R0 + 0x7C080400, // 0026 CALL R2 2 + 0x90021002, // 0027 SETMBR R0 K8 R2 + 0x88080108, // 0028 GETMBR R2 R0 K8 + 0x8C080526, // 0029 GETMET R2 R2 K38 + 0x7C080200, // 002A CALL R2 1 + 0xB80A3000, // 002B GETNGBL R2 K24 + 0x8C080528, // 002C GETMET R2 R2 K40 + 0x5C100000, // 002D MOVE R4 R0 + 0x7C080400, // 002E CALL R2 2 + 0x90024E02, // 002F SETMBR R0 K39 R2 + 0xB80A3000, // 0030 GETNGBL R2 K24 + 0x8C08052A, // 0031 GETMET R2 R2 K42 + 0x5C100000, // 0032 MOVE R4 R0 + 0x7C080400, // 0033 CALL R2 2 + 0x90025202, // 0034 SETMBR R0 K41 R2 + 0xB80A3000, // 0035 GETNGBL R2 K24 + 0x8C08051A, // 0036 GETMET R2 R2 K26 + 0x5C100000, // 0037 MOVE R4 R0 + 0x7C080400, // 0038 CALL R2 2 + 0x90025602, // 0039 SETMBR R0 K43 R2 + 0xB80A2C00, // 003A GETNGBL R2 K22 + 0x8C08052C, // 003B GETMET R2 R2 K44 + 0x7C080200, // 003C CALL R2 1 + 0x9408052D, // 003D GETIDX R2 R2 K45 + 0x740A0004, // 003E JMPT R2 #0044 + 0xB80A2C00, // 003F GETNGBL R2 K22 + 0x8C08052E, // 0040 GETMET R2 R2 K46 + 0x7C080200, // 0041 CALL R2 1 + 0x9408052D, // 0042 GETIDX R2 R2 K45 + 0x780A0001, // 0043 JMPF R2 #0046 + 0x8C08012F, // 0044 GETMET R2 R0 K47 + 0x7C080200, // 0045 CALL R2 1 + 0xB80A2C00, // 0046 GETNGBL R2 K22 + 0x8C08052C, // 0047 GETMET R2 R2 K44 + 0x7C080200, // 0048 CALL R2 1 + 0x9408052D, // 0049 GETIDX R2 R2 K45 + 0x740A0005, // 004A JMPT R2 #0051 + 0xB80A2C00, // 004B GETNGBL R2 K22 + 0x8C080530, // 004C GETMET R2 R2 K48 + 0x58100031, // 004D LDCONST R4 K49 + 0x84140000, // 004E CLOSURE R5 P0 + 0x58180032, // 004F LDCONST R6 K50 + 0x7C080800, // 0050 CALL R2 4 + 0xB80A2C00, // 0051 GETNGBL R2 K22 + 0x8C08052E, // 0052 GETMET R2 R2 K46 + 0x7C080200, // 0053 CALL R2 1 + 0x9408052D, // 0054 GETIDX R2 R2 K45 + 0x740A0005, // 0055 JMPT R2 #005C + 0xB80A2C00, // 0056 GETNGBL R2 K22 + 0x8C080530, // 0057 GETMET R2 R2 K48 + 0x58100033, // 0058 LDCONST R4 K51 + 0x84140001, // 0059 CLOSURE R5 P1 + 0x58180032, // 005A LDCONST R6 K50 + 0x7C080800, // 005B CALL R2 4 + 0xB80A3000, // 005C GETNGBL R2 K24 + 0x8C080534, // 005D GETMET R2 R2 K52 + 0x5C100000, // 005E MOVE R4 R0 + 0x7C080400, // 005F CALL R2 2 + 0x90020C02, // 0060 SETMBR R0 K6 R2 + 0xB80A2C00, // 0061 GETNGBL R2 K22 + 0x8C080535, // 0062 GETMET R2 R2 K53 + 0x5C100000, // 0063 MOVE R4 R0 + 0x7C080400, // 0064 CALL R2 2 + 0x8C080136, // 0065 GETMET R2 R0 K54 + 0x7C080200, // 0066 CALL R2 1 + 0xA0000000, // 0067 CLOSE R0 + 0x80000000, // 0068 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_plugin_by_friendly_name +********************************************************************/ +be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(find_plugin_by_friendly_name), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x1C08050A, // 0006 EQ R2 R2 K10 + 0x780A0001, // 0007 JMPF R2 #000A + 0x4C080000, // 0008 LDNIL R2 + 0x80040400, // 0009 RET 1 R2 + 0x5808000A, // 000A LDCONST R2 K10 + 0x600C000C, // 000B GETGBL R3 G12 + 0x8810011E, // 000C GETMBR R4 R0 K30 + 0x7C0C0200, // 000D CALL R3 1 + 0x140C0403, // 000E LT R3 R2 R3 + 0x780E0010, // 000F JMPF R3 #0021 + 0x880C011E, // 0010 GETMBR R3 R0 K30 + 0x940C0602, // 0011 GETIDX R3 R3 R2 + 0x8C100737, // 0012 GETMET R4 R3 K55 + 0x7C100200, // 0013 CALL R4 1 + 0x4C140000, // 0014 LDNIL R5 + 0x20140805, // 0015 NE R5 R4 R5 + 0x78160007, // 0016 JMPF R5 #001F + 0x6014000C, // 0017 GETGBL R5 G12 + 0x5C180800, // 0018 MOVE R6 R4 + 0x7C140200, // 0019 CALL R5 1 + 0x24140B0A, // 001A GT R5 R5 K10 + 0x78160002, // 001B JMPF R5 #001F + 0x1C140801, // 001C EQ R5 R4 R1 + 0x78160000, // 001D JMPF R5 #001F + 0x80040600, // 001E RET 1 R3 + 0x00080538, // 001F ADD R2 R2 K56 + 0x7001FFE9, // 0020 JMP #000B + 0x4C0C0000, // 0021 LDNIL R3 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_remote_info +********************************************************************/ +be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(get_plugin_remote_info), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x8808011F, // 0000 GETMBR R2 R0 K31 + 0x8C080539, // 0001 GETMET R2 R2 K57 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140013, // 0003 GETGBL R5 G19 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _start_udp +********************************************************************/ +be_local_closure(class_Matter_Device__start_udp, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_received), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(_start_udp), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x4C080000, // 0003 LDNIL R2 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540615A3, // 0006 LDINT R1 5540 + 0xB80A7400, // 0007 GETNGBL R2 K58 + 0x600C0008, // 0008 GETGBL R3 G8 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C0C0200, // 000A CALL R3 1 + 0x000E7603, // 000B ADD R3 K59 R3 + 0x58100021, // 000C LDCONST R4 K33 + 0x7C080400, // 000D CALL R2 2 + 0xB80A3000, // 000E GETNGBL R2 K24 + 0x8C08053C, // 000F GETMET R2 R2 K60 + 0x5C100000, // 0010 MOVE R4 R0 + 0x58140010, // 0011 LDCONST R5 K16 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C080800, // 0013 CALL R2 4 + 0x90020002, // 0014 SETMBR R0 K0 R2 + 0x88080100, // 0015 GETMBR R2 R0 K0 + 0x8C08052F, // 0016 GETMET R2 R2 K47 + 0x84100000, // 0017 CLOSURE R4 P0 + 0x7C080400, // 0018 CALL R2 2 + 0xA0000000, // 0019 CLOSE R0 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_fabric +********************************************************************/ +be_local_closure(class_Matter_Device_remove_fabric, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(jitter), - }), - be_str_weak(add_read_sensors_schedule), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(remove_fabric), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x740A0002, // 0003 JMPT R2 #0007 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x24080401, // 0005 GT R2 R2 R1 - 0x780A0005, // 0006 JMPF R2 #000D - 0x90020001, // 0007 SETMBR R0 K0 R1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x8C080503, // 0009 GETMET R2 R2 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x90020202, // 000C SETMBR R0 K1 R2 - 0x80000000, // 000D RET 0 + ( &(const binstruction[33]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0019, // 0002 JMPF R2 #001D + 0xB80A7400, // 0003 GETNGBL R2 K58 + 0x8C0C033E, // 0004 GETMET R3 R1 K62 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C073F, // 0006 GETMET R3 R3 K63 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0740, // 0008 GETMET R3 R3 K64 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0741, // 000A GETMET R3 R3 K65 + 0x7C0C0200, // 000B CALL R3 1 + 0x000E7A03, // 000C ADD R3 K61 R3 + 0x58100021, // 000D LDCONST R4 K33 + 0x7C080400, // 000E CALL R2 2 + 0x88080127, // 000F GETMBR R2 R0 K39 + 0x88080542, // 0010 GETMBR R2 R2 K66 + 0x88080543, // 0011 GETMBR R2 R2 K67 + 0x8C080544, // 0012 GETMET R2 R2 K68 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x88080106, // 0015 GETMBR R2 R0 K6 + 0x8C080545, // 0016 GETMET R2 R2 K69 + 0x5C100200, // 0017 MOVE R4 R1 + 0x7C080400, // 0018 CALL R2 2 + 0x88080108, // 0019 GETMBR R2 R0 K8 + 0x8C080546, // 001A GETMET R2 R2 K70 + 0x5C100200, // 001B MOVE R4 R1 + 0x7C080400, // 001C CALL R2 2 + 0x88080108, // 001D GETMBR R2 R0 K8 + 0x8C080547, // 001E GETMET R2 R2 K71 + 0x7C080200, // 001F CALL R2 1 + 0x80000000, // 0020 RET 0 }) ) ); @@ -653,50 +856,69 @@ be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ /******************************************************************** -** Solidified function: attribute_updated +** Solidified function: resolve_attribute_read_solo ********************************************************************/ -be_local_closure(class_Matter_Device_attribute_updated, /* name */ +be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ be_nested_proto( 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ + 2, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Path), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(message_handler), - /* K6 */ be_nested_str_weak(im), - /* K7 */ be_nested_str_weak(subs_shop), - /* K8 */ be_nested_str_weak(attribute_updated_ctx), - }), - be_str_weak(attribute_updated), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(resolve_attribute_read_solo), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160000, // 0002 JMPF R5 #0004 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0xB8160000, // 0004 GETNGBL R5 K0 - 0x8C140B01, // 0005 GETMET R5 R5 K1 - 0x7C140200, // 0006 CALL R5 1 - 0x90160401, // 0007 SETMBR R5 K2 R1 - 0x90160602, // 0008 SETMBR R5 K3 R2 - 0x90160803, // 0009 SETMBR R5 K4 R3 - 0x88180105, // 000A GETMBR R6 R0 K5 - 0x88180D06, // 000B GETMBR R6 R6 K6 - 0x88180D07, // 000C GETMBR R6 R6 K7 - 0x8C180D08, // 000D GETMET R6 R6 K8 - 0x5C200A00, // 000E MOVE R8 R5 - 0x5C240800, // 000F MOVE R9 R4 - 0x7C180600, // 0010 CALL R6 3 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[47]) { /* code */ + 0x88080348, // 0000 GETMBR R2 R1 K72 + 0x880C0349, // 0001 GETMBR R3 R1 K73 + 0x8810034A, // 0002 GETMBR R4 R1 K74 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140405, // 0004 EQ R5 R2 R5 + 0x74160005, // 0005 JMPT R5 #000C + 0x4C140000, // 0006 LDNIL R5 + 0x1C140605, // 0007 EQ R5 R3 R5 + 0x74160002, // 0008 JMPT R5 #000C + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x8C14014B, // 000E GETMET R5 R0 K75 + 0x5C1C0400, // 000F MOVE R7 R2 + 0x7C140400, // 0010 CALL R5 2 + 0x4C180000, // 0011 LDNIL R6 + 0x1C180A06, // 0012 EQ R6 R5 R6 + 0x781A0005, // 0013 JMPF R6 #001A + 0xB81A3000, // 0014 GETNGBL R6 K24 + 0x88180D4D, // 0015 GETMBR R6 R6 K77 + 0x90069806, // 0016 SETMBR R1 K76 R6 + 0x4C180000, // 0017 LDNIL R6 + 0x80040C00, // 0018 RET 1 R6 + 0x70020013, // 0019 JMP #002E + 0x8C180B4E, // 001A GETMET R6 R5 K78 + 0x5C200600, // 001B MOVE R8 R3 + 0x7C180400, // 001C CALL R6 2 + 0x741A0005, // 001D JMPT R6 #0024 + 0xB81A3000, // 001E GETNGBL R6 K24 + 0x88180D4F, // 001F GETMBR R6 R6 K79 + 0x90069806, // 0020 SETMBR R1 K76 R6 + 0x4C180000, // 0021 LDNIL R6 + 0x80040C00, // 0022 RET 1 R6 + 0x70020009, // 0023 JMP #002E + 0x8C180B50, // 0024 GETMET R6 R5 K80 + 0x5C200600, // 0025 MOVE R8 R3 + 0x5C240800, // 0026 MOVE R9 R4 + 0x7C180600, // 0027 CALL R6 3 + 0x741A0004, // 0028 JMPT R6 #002E + 0xB81A3000, // 0029 GETNGBL R6 K24 + 0x88180D51, // 002A GETMBR R6 R6 K81 + 0x90069806, // 002B SETMBR R1 K76 R6 + 0x4C180000, // 002C LDNIL R6 + 0x80040C00, // 002D RET 1 R6 + 0x80040A00, // 002E RET 1 R5 }) ) ); @@ -704,55 +926,36 @@ be_local_closure(class_Matter_Device_attribute_updated, /* name */ /******************************************************************** -** Solidified function: invoke_request +** Solidified function: signal_endpoints_changed ********************************************************************/ -be_local_closure(class_Matter_Device_invoke_request, /* name */ +be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(invoke_request), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - }), - be_str_weak(invoke_request), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(signal_endpoints_changed), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0x88140701, // 0001 GETMBR R5 R3 K1 - 0x6018000C, // 0002 GETGBL R6 G12 - 0x881C0102, // 0003 GETMBR R7 R0 K2 - 0x7C180200, // 0004 CALL R6 1 - 0x14180806, // 0005 LT R6 R4 R6 - 0x781A000C, // 0006 JMPF R6 #0014 - 0x88180102, // 0007 GETMBR R6 R0 K2 - 0x94180C04, // 0008 GETIDX R6 R6 R4 - 0x881C0D01, // 0009 GETMBR R7 R6 K1 - 0x1C1C0E05, // 000A EQ R7 R7 R5 - 0x781E0005, // 000B JMPF R7 #0012 - 0x8C1C0D03, // 000C GETMET R7 R6 K3 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280400, // 000E MOVE R10 R2 - 0x5C2C0600, // 000F MOVE R11 R3 - 0x7C1C0800, // 0010 CALL R7 4 - 0x80040E00, // 0011 RET 1 R7 - 0x00100904, // 0012 ADD R4 R4 K4 - 0x7001FFED, // 0013 JMP #0002 - 0xB81A0C00, // 0014 GETNGBL R6 K6 - 0x88180D07, // 0015 GETMBR R6 R6 K7 - 0x900E0A06, // 0016 SETMBR R3 K5 R6 - 0x80000000, // 0017 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x8C040152, // 0000 GETMET R1 R0 K82 + 0x580C000A, // 0001 LDCONST R3 K10 + 0x5412001C, // 0002 LDINT R4 29 + 0x58140053, // 0003 LDCONST R5 K83 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C040A00, // 0005 CALL R1 5 + 0x8C040152, // 0006 GETMET R1 R0 K82 + 0xB80E3000, // 0007 GETNGBL R3 K24 + 0x880C0754, // 0008 GETMBR R3 R3 K84 + 0x5412001C, // 0009 LDINT R4 29 + 0x58140053, // 000A LDCONST R5 K83 + 0x50180000, // 000B LDBOOL R6 0 0 + 0x7C040A00, // 000C CALL R1 5 + 0x80000000, // 000D RET 0 }) ) ); @@ -766,69 +969,53 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(plugins_config), - /* K5 */ be_nested_str_weak(autoconf_device_map), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(adjust_next_ep), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(_instantiate_plugins_from_config), - /* K12 */ be_nested_str_weak(sessions), - /* K13 */ be_nested_str_weak(count_active_fabrics), - /* K14 */ be_nested_str_weak(save_param), - }), + &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(autoconf_device), &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 + 0xA406AA00, // 0000 IMPORT R1 K85 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x880C011E, // 0002 GETMBR R3 R0 K30 0x7C080200, // 0003 CALL R2 1 - 0x24080502, // 0004 GT R2 R2 K2 + 0x2408050A, // 0004 GT R2 R2 K10 0x780A0000, // 0005 JMPF R2 #0007 0x80000400, // 0006 RET 0 - 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x8808010B, // 0007 GETMBR R2 R0 K11 0x740A000E, // 0008 JMPT R2 #0018 - 0x8C080105, // 0009 GETMET R2 R0 K5 + 0x8C080157, // 0009 GETMET R2 R0 K87 0x7C080200, // 000A CALL R2 1 - 0x90020802, // 000B SETMBR R0 K4 R2 + 0x9002AC02, // 000B SETMBR R0 K86 R2 0x60080013, // 000C GETGBL R2 G19 0x7C080000, // 000D CALL R2 0 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0x8C080107, // 000F GETMET R2 R0 K7 + 0x90023E02, // 000E SETMBR R0 K31 R2 + 0x8C080158, // 000F GETMET R2 R0 K88 0x7C080200, // 0010 CALL R2 1 - 0xB80A1000, // 0011 GETNGBL R2 K8 + 0xB80A7400, // 0011 GETNGBL R2 K58 0x600C0008, // 0012 GETGBL R3 G8 - 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x88100156, // 0013 GETMBR R4 R0 K86 0x7C0C0200, // 0014 CALL R3 1 - 0x000E1203, // 0015 ADD R3 K9 R3 - 0x5810000A, // 0016 LDCONST R4 K10 + 0x000EB203, // 0015 ADD R3 K89 R3 + 0x58100053, // 0016 LDCONST R4 K83 0x7C080400, // 0017 CALL R2 2 - 0x8C08010B, // 0018 GETMET R2 R0 K11 - 0x88100104, // 0019 GETMBR R4 R0 K4 + 0x8C08015A, // 0018 GETMET R2 R0 K90 + 0x88100156, // 0019 GETMBR R4 R0 K86 0x7C080400, // 001A CALL R2 2 - 0x88080103, // 001B GETMBR R2 R0 K3 + 0x8808010B, // 001B GETMBR R2 R0 K11 0x740A0008, // 001C JMPT R2 #0026 - 0x8808010C, // 001D GETMBR R2 R0 K12 - 0x8C08050D, // 001E GETMET R2 R2 K13 + 0x88080108, // 001D GETMBR R2 R0 K8 + 0x8C080509, // 001E GETMET R2 R2 K9 0x7C080200, // 001F CALL R2 1 - 0x24080502, // 0020 GT R2 R2 K2 + 0x2408050A, // 0020 GT R2 R2 K10 0x780A0003, // 0021 JMPF R2 #0026 0x50080200, // 0022 LDBOOL R2 1 0 - 0x90020602, // 0023 SETMBR R0 K3 R2 - 0x8C08010E, // 0024 GETMET R2 R0 K14 + 0x90021602, // 0023 SETMBR R0 K11 R2 + 0x8C08010C, // 0024 GETMET R2 R0 K12 0x7C080200, // 0025 CALL R2 1 0x80000000, // 0026 RET 0 }) @@ -837,6 +1024,631 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: _trigger_read_sensors +********************************************************************/ +be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(_trigger_read_sensors), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0xA406AA00, // 0000 IMPORT R1 K85 + 0xB80A2C00, // 0001 GETNGBL R2 K22 + 0x8C08055B, // 0002 GETMET R2 R2 K91 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E2C00, // 0004 GETNGBL R3 K22 + 0x8C0C075C, // 0005 GETMET R3 R3 K92 + 0x58140053, // 0006 LDCONST R5 K83 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0006, // 0008 JMPF R3 #0010 + 0xB80E7400, // 0009 GETNGBL R3 K58 + 0x60100008, // 000A GETGBL R4 G8 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C100200, // 000C CALL R4 1 + 0x0012BA04, // 000D ADD R4 K93 R4 + 0x58140053, // 000E LDCONST R5 K83 + 0x7C0C0400, // 000F CALL R3 2 + 0x4C0C0000, // 0010 LDNIL R3 + 0x1C0C0403, // 0011 EQ R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x80000600, // 0013 RET 0 + 0x8C0C035E, // 0014 GETMET R3 R1 K94 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x4C100000, // 0017 LDNIL R4 + 0x20100604, // 0018 NE R4 R3 R4 + 0x7812000D, // 0019 JMPF R4 #0028 + 0x5810000A, // 001A LDCONST R4 K10 + 0x6014000C, // 001B GETGBL R5 G12 + 0x8818011E, // 001C GETMBR R6 R0 K30 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160006, // 001F JMPF R5 #0027 + 0x8814011E, // 0020 GETMBR R5 R0 K30 + 0x94140A04, // 0021 GETIDX R5 R5 R4 + 0x8C140B5F, // 0022 GETMET R5 R5 K95 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C140400, // 0024 CALL R5 2 + 0x00100938, // 0025 ADD R4 R4 K56 + 0x7001FFF3, // 0026 JMP #001B + 0x70020006, // 0027 JMP #002F + 0xB8127400, // 0028 GETNGBL R4 K58 + 0x60140008, // 0029 GETGBL R5 G8 + 0x5C180400, // 002A MOVE R6 R2 + 0x7C140200, // 002B CALL R5 1 + 0x0016C005, // 002C ADD R5 K96 R5 + 0x58180053, // 002D LDCONST R6 K83 + 0x7C100400, // 002E CALL R4 2 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_active_endpoints +********************************************************************/ +be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(get_active_endpoints), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8810011E, // 0003 GETMBR R4 R0 K30 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020011, // 0005 EXBLK 0 #0018 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140961, // 0008 GETMET R5 R4 K97 + 0x7C140200, // 0009 CALL R5 1 + 0x78060002, // 000A JMPF R1 #000E + 0x1C180B0A, // 000B EQ R6 R5 K10 + 0x781A0000, // 000C JMPF R6 #000E + 0x7001FFF7, // 000D JMP #0006 + 0x8C180539, // 000E GETMET R6 R2 K57 + 0x5C200A00, // 000F MOVE R8 R5 + 0x7C180400, // 0010 CALL R6 2 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C180562, // 0014 GETMET R6 R2 K98 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x7C180400, // 0016 CALL R6 2 + 0x7001FFED, // 0017 JMP #0006 + 0x580C0014, // 0018 LDCONST R3 K20 + 0xAC0C0200, // 0019 CATCH R3 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x80040400, // 001B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_send +********************************************************************/ +be_local_closure(class_Matter_Device_msg_send, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(msg_send), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080563, // 0001 GETMET R2 R2 K99 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(class_Matter_Device_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB8062C00, // 0000 GETNGBL R1 K22 + 0x8C040364, // 0001 GETMET R1 R1 K100 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040100, // 0006 GETMBR R1 R0 K0 + 0x8C040365, // 0007 GETMET R1 R1 K101 + 0x7C040200, // 0008 CALL R1 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: adjust_next_ep +********************************************************************/ +be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(adjust_next_ep), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080156, // 0001 GETMBR R2 R0 K86 + 0x8C080566, // 0002 GETMET R2 R2 K102 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000A, // 0005 EXBLK 0 #0011 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x600C0009, // 0008 GETGBL R3 G9 + 0x5C100400, // 0009 MOVE R4 R2 + 0x7C0C0200, // 000A CALL R3 1 + 0x88100120, // 000B GETMBR R4 R0 K32 + 0x28100604, // 000C GE R4 R3 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x00100738, // 000E ADD R4 R3 K56 + 0x90024004, // 000F SETMBR R0 K32 R4 + 0x7001FFF4, // 0010 JMP #0006 + 0x58040014, // 0011 LDCONST R1 K20 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_read_sensors_schedule +********************************************************************/ +be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(add_read_sensors_schedule), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88080167, // 0000 GETMBR R2 R0 K103 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x740A0002, // 0003 JMPT R2 #0007 + 0x88080167, // 0004 GETMBR R2 R0 K103 + 0x24080401, // 0005 GT R2 R2 R1 + 0x780A0005, // 0006 JMPF R2 #000D + 0x9002CE01, // 0007 SETMBR R0 K103 R1 + 0xB80A3000, // 0008 GETNGBL R2 K24 + 0x8C080569, // 0009 GETMET R2 R2 K105 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x9002D002, // 000C SETMBR R0 K104 R2 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: button_pressed +********************************************************************/ +be_local_closure(class_Matter_Device_button_pressed, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(button_pressed), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x540E000F, // 0000 LDINT R3 16 + 0x3C0C0403, // 0001 SHR R3 R2 R3 + 0x541200FE, // 0002 LDINT R4 255 + 0x2C0C0604, // 0003 AND R3 R3 R4 + 0x54120007, // 0004 LDINT R4 8 + 0x3C100404, // 0005 SHR R4 R2 R4 + 0x541600FE, // 0006 LDINT R5 255 + 0x2C100805, // 0007 AND R4 R4 R5 + 0x541600FE, // 0008 LDINT R5 255 + 0x2C140405, // 0009 AND R5 R2 R5 + 0x541A0017, // 000A LDINT R6 24 + 0x3C180406, // 000B SHR R6 R2 R6 + 0x541E00FE, // 000C LDINT R7 255 + 0x2C180C07, // 000D AND R6 R6 R7 + 0x8C1C016A, // 000E GETMET R7 R0 K106 + 0x00240B38, // 000F ADD R9 R5 K56 + 0x20280604, // 0010 NE R10 R3 R4 + 0x782A0001, // 0011 JMPF R10 #0014 + 0x58280038, // 0012 LDCONST R10 K56 + 0x70020000, // 0013 JMP #0015 + 0x5828000A, // 0014 LDCONST R10 K10 + 0x780E0001, // 0015 JMPF R3 #0018 + 0x582C000A, // 0016 LDCONST R11 K10 + 0x70020000, // 0017 JMP #0019 + 0x582C0038, // 0018 LDCONST R11 K56 + 0x5C300C00, // 0019 MOVE R12 R6 + 0x7C1C0A00, // 001A CALL R7 5 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_http_remote +********************************************************************/ +be_local_closure(class_Matter_Device_register_http_remote, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(register_http_remote), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x880C016B, // 0000 GETMBR R3 R0 K107 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x600C0013, // 0004 GETGBL R3 G19 + 0x7C0C0000, // 0005 CALL R3 0 + 0x9002D603, // 0006 SETMBR R0 K107 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x8810016B, // 0008 GETMBR R4 R0 K107 + 0x8C10096C, // 0009 GETMET R4 R4 K108 + 0x5C180200, // 000A MOVE R6 R1 + 0x7C100400, // 000B CALL R4 2 + 0x78120009, // 000C JMPF R4 #0017 + 0x8810016B, // 000D GETMBR R4 R0 K107 + 0x940C0801, // 000E GETIDX R3 R4 R1 + 0x8C14076D, // 000F GETMET R5 R3 K109 + 0x7C140200, // 0010 CALL R5 1 + 0x14140405, // 0011 LT R5 R2 R5 + 0x78160002, // 0012 JMPF R5 #0016 + 0x8C14076E, // 0013 GETMET R5 R3 K110 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C140400, // 0015 CALL R5 2 + 0x70020011, // 0016 JMP #0029 + 0xB8123000, // 0017 GETNGBL R4 K24 + 0x8C10096F, // 0018 GETMET R4 R4 K111 + 0x5C180000, // 0019 MOVE R6 R0 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x5C200400, // 001B MOVE R8 R2 + 0x7C100800, // 001C CALL R4 4 + 0x5C0C0800, // 001D MOVE R3 R4 + 0x8810011F, // 001E GETMBR R4 R0 K31 + 0x8C10096C, // 001F GETMET R4 R4 K108 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x78120003, // 0022 JMPF R4 #0027 + 0x8C100770, // 0023 GETMET R4 R3 K112 + 0x8818011F, // 0024 GETMBR R6 R0 K31 + 0x94180C01, // 0025 GETIDX R6 R6 R1 + 0x7C100400, // 0026 CALL R4 2 + 0x8810016B, // 0027 GETMBR R4 R0 K107 + 0x98100203, // 0028 SETIDX R4 R1 R3 + 0x80040600, // 0029 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _instantiate_plugins_from_config +********************************************************************/ +be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ + be_nested_proto( + 17, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(_instantiate_plugins_from_config), + &be_const_str_solidified, + ( &(const binstruction[146]) { /* code */ + 0x8C080171, // 0000 GETMET R2 R0 K113 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x880C011E, // 0003 GETMBR R3 R0 K30 + 0x8C0C0762, // 0004 GETMET R3 R3 K98 + 0xB8163000, // 0005 GETNGBL R5 K24 + 0x8C140B72, // 0006 GETMET R5 R5 K114 + 0x5C1C0000, // 0007 MOVE R7 R0 + 0x5820000A, // 0008 LDCONST R8 K10 + 0x60240013, // 0009 GETGBL R9 G19 + 0x7C240000, // 000A CALL R9 0 + 0x7C140800, // 000B CALL R5 4 + 0x7C0C0400, // 000C CALL R3 2 + 0xB80E7400, // 000D GETNGBL R3 K58 + 0x58100073, // 000E LDCONST R4 K115 + 0x58140021, // 000F LDCONST R5 K33 + 0x7C0C0400, // 0010 CALL R3 2 + 0xB80E7400, // 0011 GETNGBL R3 K58 + 0x60100018, // 0012 GETGBL R4 G24 + 0x58140074, // 0013 LDCONST R5 K116 + 0x5818000A, // 0014 LDCONST R6 K10 + 0x581C0075, // 0015 LDCONST R7 K117 + 0x58200010, // 0016 LDCONST R8 K16 + 0x7C100800, // 0017 CALL R4 4 + 0x58140021, // 0018 LDCONST R5 K33 + 0x7C0C0400, // 0019 CALL R3 2 + 0x880C011E, // 001A GETMBR R3 R0 K30 + 0x8C0C0762, // 001B GETMET R3 R3 K98 + 0xB8163000, // 001C GETNGBL R5 K24 + 0x8C140B76, // 001D GETMET R5 R5 K118 + 0x5C1C0000, // 001E MOVE R7 R0 + 0xB8223000, // 001F GETNGBL R8 K24 + 0x88201154, // 0020 GETMBR R8 R8 K84 + 0x60240013, // 0021 GETGBL R9 G19 + 0x7C240000, // 0022 CALL R9 0 + 0x7C140800, // 0023 CALL R5 4 + 0x7C0C0400, // 0024 CALL R3 2 + 0xB80E7400, // 0025 GETNGBL R3 K58 + 0x60100018, // 0026 GETGBL R4 G24 + 0x58140074, // 0027 LDCONST R5 K116 + 0xB81A3000, // 0028 GETNGBL R6 K24 + 0x88180D54, // 0029 GETMBR R6 R6 K84 + 0x581C0077, // 002A LDCONST R7 K119 + 0x58200010, // 002B LDCONST R8 K16 + 0x7C100800, // 002C CALL R4 4 + 0x58140021, // 002D LDCONST R5 K33 + 0x7C0C0400, // 002E CALL R3 2 + 0x600C0010, // 002F GETGBL R3 G16 + 0x5C100400, // 0030 MOVE R4 R2 + 0x7C0C0200, // 0031 CALL R3 1 + 0xA8020055, // 0032 EXBLK 0 #0089 + 0x5C100600, // 0033 MOVE R4 R3 + 0x7C100000, // 0034 CALL R4 0 + 0x1C14090A, // 0035 EQ R5 R4 K10 + 0x78160000, // 0036 JMPF R5 #0038 + 0x7001FFFA, // 0037 JMP #0033 + 0xA802003E, // 0038 EXBLK 0 #0078 + 0x60140008, // 0039 GETGBL R5 G8 + 0x5C180800, // 003A MOVE R6 R4 + 0x7C140200, // 003B CALL R5 1 + 0x94140205, // 003C GETIDX R5 R1 R5 + 0x8C180B39, // 003D GETMET R6 R5 K57 + 0x58200012, // 003E LDCONST R8 K18 + 0x7C180400, // 003F CALL R6 2 + 0x4C1C0000, // 0040 LDNIL R7 + 0x1C1C0C07, // 0041 EQ R7 R6 R7 + 0x781E0005, // 0042 JMPF R7 #0049 + 0xB81E7400, // 0043 GETNGBL R7 K58 + 0x58200078, // 0044 LDCONST R8 K120 + 0x58240053, // 0045 LDCONST R9 K83 + 0x7C1C0400, // 0046 CALL R7 2 + 0xA8040001, // 0047 EXBLK 1 1 + 0x7001FFE9, // 0048 JMP #0033 + 0x1C1C0D75, // 0049 EQ R7 R6 K117 + 0x781E0005, // 004A JMPF R7 #0051 + 0xB81E7400, // 004B GETNGBL R7 K58 + 0x58200079, // 004C LDCONST R8 K121 + 0x58240053, // 004D LDCONST R9 K83 + 0x7C1C0400, // 004E CALL R7 2 + 0xA8040001, // 004F EXBLK 1 1 + 0x7001FFE1, // 0050 JMP #0033 + 0x881C017A, // 0051 GETMBR R7 R0 K122 + 0x8C1C0F39, // 0052 GETMET R7 R7 K57 + 0x5C240C00, // 0053 MOVE R9 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x4C200000, // 0055 LDNIL R8 + 0x1C200E08, // 0056 EQ R8 R7 R8 + 0x78220009, // 0057 JMPF R8 #0062 + 0xB8227400, // 0058 GETNGBL R8 K58 + 0x60240008, // 0059 GETGBL R9 G8 + 0x5C280C00, // 005A MOVE R10 R6 + 0x7C240200, // 005B CALL R9 1 + 0x0026F609, // 005C ADD R9 K123 R9 + 0x0024137C, // 005D ADD R9 R9 K124 + 0x58280021, // 005E LDCONST R10 K33 + 0x7C200400, // 005F CALL R8 2 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7001FFD0, // 0061 JMP #0033 + 0x5C200E00, // 0062 MOVE R8 R7 + 0x5C240000, // 0063 MOVE R9 R0 + 0x5C280800, // 0064 MOVE R10 R4 + 0x5C2C0A00, // 0065 MOVE R11 R5 + 0x7C200600, // 0066 CALL R8 3 + 0x8824011E, // 0067 GETMBR R9 R0 K30 + 0x8C241362, // 0068 GETMET R9 R9 K98 + 0x5C2C1000, // 0069 MOVE R11 R8 + 0x7C240400, // 006A CALL R9 2 + 0xB8267400, // 006B GETNGBL R9 K58 + 0x60280018, // 006C GETGBL R10 G24 + 0x582C0074, // 006D LDCONST R11 K116 + 0x5C300800, // 006E MOVE R12 R4 + 0x5C340C00, // 006F MOVE R13 R6 + 0x8C38017D, // 0070 GETMET R14 R0 K125 + 0x5C400A00, // 0071 MOVE R16 R5 + 0x7C380400, // 0072 CALL R14 2 + 0x7C280800, // 0073 CALL R10 4 + 0x582C0021, // 0074 LDCONST R11 K33 + 0x7C240400, // 0075 CALL R9 2 + 0xA8040001, // 0076 EXBLK 1 1 + 0x7002000F, // 0077 JMP #0088 + 0xAC140002, // 0078 CATCH R5 0 2 + 0x7002000C, // 0079 JMP #0087 + 0xB81E7400, // 007A GETNGBL R7 K58 + 0x60200008, // 007B GETGBL R8 G8 + 0x5C240A00, // 007C MOVE R9 R5 + 0x7C200200, // 007D CALL R8 1 + 0x0022FC08, // 007E ADD R8 K126 R8 + 0x0020117F, // 007F ADD R8 R8 K127 + 0x60240008, // 0080 GETGBL R9 G8 + 0x5C280C00, // 0081 MOVE R10 R6 + 0x7C240200, // 0082 CALL R9 1 + 0x00201009, // 0083 ADD R8 R8 R9 + 0x58240021, // 0084 LDCONST R9 K33 + 0x7C1C0400, // 0085 CALL R7 2 + 0x70020000, // 0086 JMP #0088 + 0xB0080000, // 0087 RAISE 2 R0 R0 + 0x7001FFA9, // 0088 JMP #0033 + 0x580C0014, // 0089 LDCONST R3 K20 + 0xAC0C0200, // 008A CATCH R3 1 0 + 0xB0080000, // 008B RAISE 2 R0 R0 + 0xB80E2C00, // 008C GETNGBL R3 K22 + 0x8C0C0780, // 008D GETMET R3 R3 K128 + 0x58140081, // 008E LDCONST R5 K129 + 0x58180082, // 008F LDCONST R6 K130 + 0x7C0C0600, // 0090 CALL R3 3 + 0x80000000, // 0091 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sort_distinct +********************************************************************/ +be_local_closure(class_Matter_Device_sort_distinct, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(sort_distinct), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x5804000F, // 0000 LDCONST R1 K15 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0738, // 0005 SUB R3 R3 K56 + 0x400E7003, // 0006 CONNECT R3 K56 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020010, // 0008 EXBLK 0 #001A + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B0A, // 000D GT R6 R5 K10 + 0x781A0008, // 000E JMPF R6 #0018 + 0x04180B38, // 000F SUB R6 R5 K56 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x24180C04, // 0011 GT R6 R6 R4 + 0x781A0004, // 0012 JMPF R6 #0018 + 0x04180B38, // 0013 SUB R6 R5 K56 + 0x94180006, // 0014 GETIDX R6 R0 R6 + 0x98000A06, // 0015 SETIDX R0 R5 R6 + 0x04140B38, // 0016 SUB R5 R5 K56 + 0x7001FFF4, // 0017 JMP #000D + 0x98000A04, // 0018 SETIDX R0 R5 R4 + 0x7001FFEE, // 0019 JMP #0009 + 0x58080014, // 001A LDCONST R2 K20 + 0xAC080200, // 001B CATCH R2 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x58080038, // 001D LDCONST R2 K56 + 0x600C000C, // 001E GETGBL R3 G12 + 0x5C100000, // 001F MOVE R4 R0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x180C0738, // 0021 LE R3 R3 K56 + 0x780E0000, // 0022 JMPF R3 #0024 + 0x80040000, // 0023 RET 1 R0 + 0x940C010A, // 0024 GETIDX R3 R0 K10 + 0x6010000C, // 0025 GETGBL R4 G12 + 0x5C140000, // 0026 MOVE R5 R0 + 0x7C100200, // 0027 CALL R4 1 + 0x14100404, // 0028 LT R4 R2 R4 + 0x78120009, // 0029 JMPF R4 #0034 + 0x94100002, // 002A GETIDX R4 R0 R2 + 0x1C100803, // 002B EQ R4 R4 R3 + 0x78120003, // 002C JMPF R4 #0031 + 0x8C100183, // 002D GETMET R4 R0 K131 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x70020001, // 0030 JMP #0033 + 0x940C0002, // 0031 GETIDX R3 R0 R2 + 0x00080538, // 0032 ADD R2 R2 K56 + 0x7001FFF0, // 0033 JMP #0025 + 0x80040000, // 0034 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_plugin_class_displayname ********************************************************************/ @@ -844,29 +1656,24 @@ be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(DISPLAY_NAME), - /* K3 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(get_plugin_class_displayname), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808017A, // 0000 GETMBR R2 R0 K122 + 0x8C080539, // 0001 GETMET R2 R2 K57 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 + 0x880C0584, // 0005 GETMBR R3 R2 K132 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 + 0x580C0010, // 0007 LDCONST R3 K16 0x80040600, // 0008 RET 1 R3 }) ) @@ -875,34 +1682,39 @@ be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ /******************************************************************** -** Solidified function: every_50ms +** Solidified function: find_plugin_by_endpoint ********************************************************************/ -be_local_closure(class_Matter_Device_every_50ms, /* name */ +be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(every_50ms), - }), - be_str_weak(every_50ms), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(find_plugin_by_endpoint), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040303, // 0004 GETMET R1 R1 K3 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 + ( &(const binstruction[17]) { /* code */ + 0x5808000A, // 0000 LDCONST R2 K10 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x8810011E, // 0002 GETMBR R4 R0 K30 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x880C011E, // 0006 GETMBR R3 R0 K30 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C100761, // 0008 GETMET R4 R3 K97 + 0x7C100200, // 0009 CALL R4 1 + 0x1C100801, // 000A EQ R4 R4 R1 + 0x78120000, // 000B JMPF R4 #000D + 0x80040600, // 000C RET 1 R3 + 0x00080538, // 000D ADD R2 R2 K56 + 0x7001FFF1, // 000E JMP #0001 + 0x4C0C0000, // 000F LDNIL R3 + 0x80040600, // 0010 RET 1 R3 }) ) ); @@ -910,54 +1722,1224 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ /******************************************************************** -** Solidified function: button_handler +** Solidified function: clean_remotes ********************************************************************/ -be_local_closure(class_Matter_Device_button_handler, /* name */ +be_local_closure(class_Matter_Device_clean_remotes, /* name */ be_nested_proto( - 14, /* nstack */ - 5, /* argc */ - 2, /* varg */ + 10, /* nstack */ + 1, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(button_handler), - /* K5 */ be_const_int(1), - }), - be_str_weak(button_handler), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(clean_remotes), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x58140000, // 0000 LDCONST R5 K0 - 0xA41A0200, // 0001 IMPORT R6 K1 - 0x601C000C, // 0002 GETGBL R7 G12 - 0x88200102, // 0003 GETMBR R8 R0 K2 - 0x7C1C0200, // 0004 CALL R7 1 - 0x141C0A07, // 0005 LT R7 R5 R7 - 0x781E0010, // 0006 JMPF R7 #0018 - 0x881C0102, // 0007 GETMBR R7 R0 K2 - 0x941C0E05, // 0008 GETIDX R7 R7 R5 - 0x8C200D03, // 0009 GETMET R8 R6 K3 - 0x5C280E00, // 000A MOVE R10 R7 - 0x582C0004, // 000B LDCONST R11 K4 - 0x7C200600, // 000C CALL R8 3 - 0x78220007, // 000D JMPF R8 #0016 - 0x88200102, // 000E GETMBR R8 R0 K2 - 0x94201005, // 000F GETIDX R8 R8 R5 - 0x8C201104, // 0010 GETMET R8 R8 K4 - 0x5C280200, // 0011 MOVE R10 R1 - 0x5C2C0400, // 0012 MOVE R11 R2 - 0x5C300600, // 0013 MOVE R12 R3 - 0x5C340800, // 0014 MOVE R13 R4 - 0x7C200A00, // 0015 CALL R8 5 - 0x00140B05, // 0016 ADD R5 R5 K5 - 0x7001FFE9, // 0017 JMP #0002 - 0x80000000, // 0018 RET 0 + ( &(const binstruction[80]) { /* code */ + 0xA4070A00, // 0000 IMPORT R1 K133 + 0x8808016B, // 0001 GETMBR R2 R0 K107 + 0x780A004B, // 0002 JMPF R2 #004F + 0x60080013, // 0003 GETGBL R2 G19 + 0x7C080000, // 0004 CALL R2 0 + 0x600C0010, // 0005 GETGBL R3 G16 + 0x8810016B, // 0006 GETMBR R4 R0 K107 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020003, // 0008 EXBLK 0 #000D + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x9808090A, // 000B SETIDX R2 R4 K10 + 0x7001FFFB, // 000C JMP #0009 + 0x580C0014, // 000D LDCONST R3 K20 + 0xAC0C0200, // 000E CATCH R3 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x8810011E, // 0011 GETMBR R4 R0 K30 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA802000F, // 0013 EXBLK 0 #0024 + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x8C140386, // 0016 GETMET R5 R1 K134 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200087, // 0018 LDCONST R8 K135 + 0x7C140600, // 0019 CALL R5 3 + 0x4C180000, // 001A LDNIL R6 + 0x20180A06, // 001B NE R6 R5 R6 + 0x781A0005, // 001C JMPF R6 #0023 + 0x8C180539, // 001D GETMET R6 R2 K57 + 0x5C200A00, // 001E MOVE R8 R5 + 0x5824000A, // 001F LDCONST R9 K10 + 0x7C180600, // 0020 CALL R6 3 + 0x00180D38, // 0021 ADD R6 R6 K56 + 0x98080A06, // 0022 SETIDX R2 R5 R6 + 0x7001FFEF, // 0023 JMP #0014 + 0x580C0014, // 0024 LDCONST R3 K20 + 0xAC0C0200, // 0025 CATCH R3 1 0 + 0xB0080000, // 0026 RAISE 2 R0 R0 + 0x600C0012, // 0027 GETGBL R3 G18 + 0x7C0C0000, // 0028 CALL R3 0 + 0x60100010, // 0029 GETGBL R4 G16 + 0x8C140566, // 002A GETMET R5 R2 K102 + 0x7C140200, // 002B CALL R5 1 + 0x7C100200, // 002C CALL R4 1 + 0xA8020008, // 002D EXBLK 0 #0037 + 0x5C140800, // 002E MOVE R5 R4 + 0x7C140000, // 002F CALL R5 0 + 0x94180405, // 0030 GETIDX R6 R2 R5 + 0x1C180D0A, // 0031 EQ R6 R6 K10 + 0x781A0002, // 0032 JMPF R6 #0036 + 0x8C180762, // 0033 GETMET R6 R3 K98 + 0x5C200A00, // 0034 MOVE R8 R5 + 0x7C180400, // 0035 CALL R6 2 + 0x7001FFF6, // 0036 JMP #002E + 0x58100014, // 0037 LDCONST R4 K20 + 0xAC100200, // 0038 CATCH R4 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x60100010, // 003A GETGBL R4 G16 + 0x5C140600, // 003B MOVE R5 R3 + 0x7C100200, // 003C CALL R4 1 + 0xA802000D, // 003D EXBLK 0 #004C + 0x5C140800, // 003E MOVE R5 R4 + 0x7C140000, // 003F CALL R5 0 + 0xB81A7400, // 0040 GETNGBL R6 K58 + 0x881C0B89, // 0041 GETMBR R7 R5 K137 + 0x001F1007, // 0042 ADD R7 K136 R7 + 0x58200053, // 0043 LDCONST R8 K83 + 0x7C180400, // 0044 CALL R6 2 + 0x8C180B8A, // 0045 GETMET R6 R5 K138 + 0x7C180200, // 0046 CALL R6 1 + 0x8818016B, // 0047 GETMBR R6 R0 K107 + 0x8C180D83, // 0048 GETMET R6 R6 K131 + 0x88200B89, // 0049 GETMBR R8 R5 K137 + 0x7C180400, // 004A CALL R6 2 + 0x7001FFF1, // 004B JMP #003E + 0x58100014, // 004C LDCONST R4 K20 + 0xAC100200, // 004D CATCH R4 1 0 + 0xB0080000, // 004E RAISE 2 R0 R0 + 0x80000000, // 004F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_config_ep +********************************************************************/ +be_local_closure(class_Matter_Device_check_config_ep, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(check_config_ep), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x600C0010, // 0003 GETGBL R3 G16 + 0x88100156, // 0004 GETMBR R4 R0 K86 + 0x8C100966, // 0005 GETMET R4 R4 K102 + 0x7C100200, // 0006 CALL R4 1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020007, // 0008 EXBLK 0 #0011 + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x8C140562, // 000B GETMET R5 R2 K98 + 0x601C0009, // 000C GETGBL R7 G9 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C1C0200, // 000E CALL R7 1 + 0x7C140400, // 000F CALL R5 2 + 0x7001FFF7, // 0010 JMP #0009 + 0x580C0014, // 0011 LDCONST R3 K20 + 0xAC0C0200, // 0012 CATCH R3 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x600C0010, // 0014 GETGBL R3 G16 + 0x5C100400, // 0015 MOVE R4 R2 + 0x7C0C0200, // 0016 CALL R3 1 + 0xA8020030, // 0017 EXBLK 0 #0049 + 0x5C100600, // 0018 MOVE R4 R3 + 0x7C100000, // 0019 CALL R4 0 + 0x1C14090A, // 001A EQ R5 R4 K10 + 0x7816000B, // 001B JMPF R5 #0028 + 0xB8167400, // 001C GETNGBL R5 K58 + 0x5818008B, // 001D LDCONST R6 K139 + 0x581C0021, // 001E LDCONST R7 K33 + 0x7C140400, // 001F CALL R5 2 + 0x88140156, // 0020 GETMBR R5 R0 K86 + 0x8C140B83, // 0021 GETMET R5 R5 K131 + 0x601C0008, // 0022 GETGBL R7 G8 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C1C0200, // 0024 CALL R7 1 + 0x7C140400, // 0025 CALL R5 2 + 0x50040200, // 0026 LDBOOL R1 1 0 + 0x7002001F, // 0027 JMP #0048 + 0xB8163000, // 0028 GETNGBL R5 K24 + 0x88140B54, // 0029 GETMBR R5 R5 K84 + 0x1C140805, // 002A EQ R5 R4 R5 + 0x7816001B, // 002B JMPF R5 #0048 + 0x50040200, // 002C LDBOOL R1 1 0 + 0xB8167400, // 002D GETNGBL R5 K58 + 0x60180018, // 002E GETGBL R6 G24 + 0x581C008C, // 002F LDCONST R7 K140 + 0x5C200800, // 0030 MOVE R8 R4 + 0x88240120, // 0031 GETMBR R9 R0 K32 + 0x7C180600, // 0032 CALL R6 3 + 0x581C0021, // 0033 LDCONST R7 K33 + 0x7C140400, // 0034 CALL R5 2 + 0x60140008, // 0035 GETGBL R5 G8 + 0x88180120, // 0036 GETMBR R6 R0 K32 + 0x7C140200, // 0037 CALL R5 1 + 0x88180156, // 0038 GETMBR R6 R0 K86 + 0x601C0008, // 0039 GETGBL R7 G8 + 0x5C200800, // 003A MOVE R8 R4 + 0x7C1C0200, // 003B CALL R7 1 + 0x88200156, // 003C GETMBR R8 R0 K86 + 0x941C1007, // 003D GETIDX R7 R8 R7 + 0x98180A07, // 003E SETIDX R6 R5 R7 + 0x88140156, // 003F GETMBR R5 R0 K86 + 0x8C140B83, // 0040 GETMET R5 R5 K131 + 0x601C0008, // 0041 GETGBL R7 G8 + 0x5C200800, // 0042 MOVE R8 R4 + 0x7C1C0200, // 0043 CALL R7 1 + 0x7C140400, // 0044 CALL R5 2 + 0x88140120, // 0045 GETMBR R5 R0 K32 + 0x00140B38, // 0046 ADD R5 R5 K56 + 0x90024005, // 0047 SETMBR R0 K32 R5 + 0x7001FFCE, // 0048 JMP #0018 + 0x580C0014, // 0049 LDCONST R3 K20 + 0xAC0C0200, // 004A CATCH R3 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80040200, // 004C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(class_Matter_Device_every_second, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x8C04038D, // 0001 GETMET R1 R1 K141 + 0x7C040200, // 0002 CALL R1 1 + 0x88040127, // 0003 GETMBR R1 R0 K39 + 0x8C04038D, // 0004 GETMET R1 R1 K141 + 0x7C040200, // 0005 CALL R1 1 + 0x88040129, // 0006 GETMBR R1 R0 K41 + 0x8C04038D, // 0007 GETMET R1 R1 K141 + 0x7C040200, // 0008 CALL R1 1 + 0x88040106, // 0009 GETMBR R1 R0 K6 + 0x8C04038D, // 000A GETMET R1 R1 K141 + 0x7C040200, // 000B CALL R1 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +be_local_closure(class_Matter_Device_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160000, // 0002 JMPF R5 #0004 + 0x50100000, // 0003 LDBOOL R4 0 0 + 0xB8163000, // 0004 GETNGBL R5 K24 + 0x8C140B8E, // 0005 GETMET R5 R5 K142 + 0x7C140200, // 0006 CALL R5 1 + 0x90169001, // 0007 SETMBR R5 K72 R1 + 0x90169202, // 0008 SETMBR R5 K73 R2 + 0x90169403, // 0009 SETMBR R5 K74 R3 + 0x88180127, // 000A GETMBR R6 R0 K39 + 0x88180D42, // 000B GETMBR R6 R6 K66 + 0x88180D43, // 000C GETMBR R6 R6 K67 + 0x8C180D8F, // 000D GETMET R6 R6 K143 + 0x5C200A00, // 000E MOVE R8 R5 + 0x5C240800, // 000F MOVE R9 R4 + 0x7C180600, // 0010 CALL R6 3 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: k2l_num +********************************************************************/ +be_local_closure(class_Matter_Device_k2l_num, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(k2l_num), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x5804000F, // 0000 LDCONST R1 K15 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100166, // 0008 GETMET R4 R0 K102 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020007, // 000B EXBLK 0 #0014 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140562, // 000E GETMET R5 R2 K98 + 0x601C0009, // 000F GETGBL R7 G9 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C1C0200, // 0011 CALL R7 1 + 0x7C140400, // 0012 CALL R5 2 + 0x7001FFF7, // 0013 JMP #000C + 0x580C0014, // 0014 LDCONST R3 K20 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x600C0010, // 0017 GETGBL R3 G16 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x5C140400, // 0019 MOVE R5 R2 + 0x7C100200, // 001A CALL R4 1 + 0x04100938, // 001B SUB R4 R4 K56 + 0x40127004, // 001C CONNECT R4 K56 R4 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x94140404, // 0021 GETIDX R5 R2 R4 + 0x5C180800, // 0022 MOVE R6 R4 + 0x241C0D0A, // 0023 GT R7 R6 K10 + 0x781E0008, // 0024 JMPF R7 #002E + 0x041C0D38, // 0025 SUB R7 R6 K56 + 0x941C0407, // 0026 GETIDX R7 R2 R7 + 0x241C0E05, // 0027 GT R7 R7 R5 + 0x781E0004, // 0028 JMPF R7 #002E + 0x041C0D38, // 0029 SUB R7 R6 K56 + 0x941C0407, // 002A GETIDX R7 R2 R7 + 0x98080C07, // 002B SETIDX R2 R6 R7 + 0x04180D38, // 002C SUB R6 R6 K56 + 0x7001FFF4, // 002D JMP #0023 + 0x98080C05, // 002E SETIDX R2 R6 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0014, // 0030 LDCONST R3 K20 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x80040400, // 0033 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: button_multi_pressed +********************************************************************/ +be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(button_multi_pressed), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x540E0007, // 0000 LDINT R3 8 + 0x3C0C0403, // 0001 SHR R3 R2 R3 + 0x541200FE, // 0002 LDINT R4 255 + 0x2C0C0604, // 0003 AND R3 R3 R4 + 0x541200FE, // 0004 LDINT R4 255 + 0x2C100404, // 0005 AND R4 R2 R4 + 0x8C14016A, // 0006 GETMET R5 R0 K106 + 0x001C0938, // 0007 ADD R7 R4 K56 + 0x58200021, // 0008 LDCONST R8 K33 + 0x5824000A, // 0009 LDCONST R9 K10 + 0x5C280600, // 000A MOVE R10 R3 + 0x7C140A00, // 000B CALL R5 5 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +be_local_closure(class_Matter_Device_every_250ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8C040190, // 0000 GETMET R1 R0 K144 + 0x7C040200, // 0001 CALL R1 1 + 0x5804000A, // 0002 LDCONST R1 K10 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C011E, // 0004 GETMBR R3 R0 K30 + 0x7C080200, // 0005 CALL R2 1 + 0x14080202, // 0006 LT R2 R1 R2 + 0x780A0005, // 0007 JMPF R2 #000E + 0x8808011E, // 0008 GETMBR R2 R0 K30 + 0x94080401, // 0009 GETIDX R2 R2 R1 + 0x8C080591, // 000A GETMET R2 R2 K145 + 0x7C080200, // 000B CALL R2 1 + 0x00040338, // 000C ADD R1 R1 K56 + 0x7001FFF4, // 000D JMP #0003 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_attribute_expansion +********************************************************************/ +be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(process_attribute_expansion), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x880C0348, // 0000 GETMBR R3 R1 K72 + 0x88100349, // 0001 GETMBR R4 R1 K73 + 0x8814034A, // 0002 GETMBR R5 R1 K74 + 0xB81A3000, // 0003 GETNGBL R6 K24 + 0x8C180D92, // 0004 GETMET R6 R6 K146 + 0x5C200000, // 0005 MOVE R8 R0 + 0x7C180400, // 0006 CALL R6 2 + 0x8C1C0D2F, // 0007 GETMET R7 R6 K47 + 0x5C240600, // 0008 MOVE R9 R3 + 0x5C280800, // 0009 MOVE R10 R4 + 0x5C2C0A00, // 000A MOVE R11 R5 + 0x7C1C0800, // 000B CALL R7 4 + 0x8C1C0D93, // 000C GETMET R7 R6 K147 + 0x7C1C0200, // 000D CALL R7 1 + 0x4C200000, // 000E LDNIL R8 + 0x8C240D94, // 000F GETMET R9 R6 K148 + 0x7C240200, // 0010 CALL R9 1 + 0x5C201200, // 0011 MOVE R8 R9 + 0x4C280000, // 0012 LDNIL R10 + 0x2024120A, // 0013 NE R9 R9 R10 + 0x78260005, // 0014 JMPF R9 #001B + 0x5C240400, // 0015 MOVE R9 R2 + 0x8C280D95, // 0016 GETMET R10 R6 K149 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C1000, // 0018 MOVE R11 R8 + 0x7C240400, // 0019 CALL R9 2 + 0x7001FFF3, // 001A JMP #000F + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device_map +********************************************************************/ +be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ + be_nested_proto( + 19, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(autoconf_device_map), + &be_const_str_solidified, + ( &(const binstruction[262]) { /* code */ + 0xA406AA00, // 0000 IMPORT R1 K85 + 0x60080013, // 0001 GETGBL R2 G19 + 0x7C080000, // 0002 CALL R2 0 + 0xB80E3000, // 0003 GETNGBL R3 K24 + 0x880C0796, // 0004 GETMBR R3 R3 K150 + 0x5810000A, // 0005 LDCONST R4 K10 + 0xA4172E00, // 0006 IMPORT R5 K151 + 0x8C180B86, // 0007 GETMET R6 R5 K134 + 0x5820000A, // 0008 LDCONST R8 K10 + 0x7C180400, // 0009 CALL R6 2 + 0x4C1C0000, // 000A LDNIL R7 + 0x201C0C07, // 000B NE R7 R6 R7 + 0x781E0066, // 000C JMPF R7 #0074 + 0x601C000C, // 000D GETGBL R7 G12 + 0x8C200D39, // 000E GETMET R8 R6 K57 + 0x58280098, // 000F LDCONST R10 K152 + 0x582C0010, // 0010 LDCONST R11 K16 + 0x7C200600, // 0011 CALL R8 3 + 0x7C1C0200, // 0012 CALL R7 1 + 0x58100038, // 0013 LDCONST R4 K56 + 0x24200F0A, // 0014 GT R8 R7 K10 + 0x7822005D, // 0015 JMPF R8 #0074 + 0x1C200F38, // 0016 EQ R8 R7 K56 + 0x7822001E, // 0017 JMPF R8 #0037 + 0x60200008, // 0018 GETGBL R8 G8 + 0x5C240600, // 0019 MOVE R9 R3 + 0x7C200200, // 001A CALL R8 1 + 0x60240013, // 001B GETGBL R9 G19 + 0x7C240000, // 001C CALL R9 0 + 0x98262599, // 001D SETIDX R9 K18 K153 + 0x98081009, // 001E SETIDX R2 R8 R9 + 0x000C0738, // 001F ADD R3 R3 K56 + 0x58200038, // 0020 LDCONST R8 K56 + 0x4C240000, // 0021 LDNIL R9 + 0x8C280B86, // 0022 GETMET R10 R5 K134 + 0x5C301000, // 0023 MOVE R12 R8 + 0x7C280400, // 0024 CALL R10 2 + 0x5C241400, // 0025 MOVE R9 R10 + 0x4C2C0000, // 0026 LDNIL R11 + 0x2028140B, // 0027 NE R10 R10 R11 + 0x782A000C, // 0028 JMPF R10 #0036 + 0x60280008, // 0029 GETGBL R10 G8 + 0x5C2C0600, // 002A MOVE R11 R3 + 0x7C280200, // 002B CALL R10 1 + 0x602C0013, // 002C GETGBL R11 G19 + 0x7C2C0000, // 002D CALL R11 0 + 0x982E2599, // 002E SETIDX R11 K18 K153 + 0x00301138, // 002F ADD R12 R8 K56 + 0x982F2E0C, // 0030 SETIDX R11 K151 R12 + 0x9808140B, // 0031 SETIDX R2 R10 R11 + 0x000C0738, // 0032 ADD R3 R3 K56 + 0x00100938, // 0033 ADD R4 R4 K56 + 0x00201138, // 0034 ADD R8 R8 K56 + 0x7001FFEB, // 0035 JMP #0022 + 0x7002003C, // 0036 JMP #0074 + 0x1C200F21, // 0037 EQ R8 R7 K33 + 0x78220008, // 0038 JMPF R8 #0042 + 0x60200008, // 0039 GETGBL R8 G8 + 0x5C240600, // 003A MOVE R9 R3 + 0x7C200200, // 003B CALL R8 1 + 0x60240013, // 003C GETGBL R9 G19 + 0x7C240000, // 003D CALL R9 0 + 0x9826259A, // 003E SETIDX R9 K18 K154 + 0x98081009, // 003F SETIDX R2 R8 R9 + 0x000C0738, // 0040 ADD R3 R3 K56 + 0x70020031, // 0041 JMP #0074 + 0x1C200F53, // 0042 EQ R8 R7 K83 + 0x7822002B, // 0043 JMPF R8 #0070 + 0x60200008, // 0044 GETGBL R8 G8 + 0x5C240600, // 0045 MOVE R9 R3 + 0x7C200200, // 0046 CALL R8 1 + 0x60240013, // 0047 GETGBL R9 G19 + 0x7C240000, // 0048 CALL R9 0 + 0x9826259B, // 0049 SETIDX R9 K18 K155 + 0x98081009, // 004A SETIDX R2 R8 R9 + 0x000C0738, // 004B ADD R3 R3 K56 + 0x8C200B86, // 004C GETMET R8 R5 K134 + 0x58280038, // 004D LDCONST R10 K56 + 0x7C200400, // 004E CALL R8 2 + 0x4C240000, // 004F LDNIL R9 + 0x20241009, // 0050 NE R9 R8 R9 + 0x7826001C, // 0051 JMPF R9 #006F + 0x6024000C, // 0052 GETGBL R9 G12 + 0x8C281139, // 0053 GETMET R10 R8 K57 + 0x58300098, // 0054 LDCONST R12 K152 + 0x58340010, // 0055 LDCONST R13 K16 + 0x7C280600, // 0056 CALL R10 3 + 0x7C240200, // 0057 CALL R9 1 + 0x1C281338, // 0058 EQ R10 R9 K56 + 0x782A0009, // 0059 JMPF R10 #0064 + 0x60280008, // 005A GETGBL R10 G8 + 0x5C2C0600, // 005B MOVE R11 R3 + 0x7C280200, // 005C CALL R10 1 + 0x602C0013, // 005D GETGBL R11 G19 + 0x7C2C0000, // 005E CALL R11 0 + 0x982E2599, // 005F SETIDX R11 K18 K153 + 0x9808140B, // 0060 SETIDX R2 R10 R11 + 0x000C0738, // 0061 ADD R3 R3 K56 + 0x00100938, // 0062 ADD R4 R4 K56 + 0x7002000A, // 0063 JMP #006F + 0x1C281321, // 0064 EQ R10 R9 K33 + 0x782A0008, // 0065 JMPF R10 #006F + 0x60280008, // 0066 GETGBL R10 G8 + 0x5C2C0600, // 0067 MOVE R11 R3 + 0x7C280200, // 0068 CALL R10 1 + 0x602C0013, // 0069 GETGBL R11 G19 + 0x7C2C0000, // 006A CALL R11 0 + 0x982E259A, // 006B SETIDX R11 K18 K154 + 0x9808140B, // 006C SETIDX R2 R10 R11 + 0x000C0738, // 006D ADD R3 R3 K56 + 0x00100938, // 006E ADD R4 R4 K56 + 0x70020003, // 006F JMP #0074 + 0x54220003, // 0070 LDINT R8 4 + 0x1C200E08, // 0071 EQ R8 R7 R8 + 0x78220000, // 0072 JMPF R8 #0074 + 0x7001FFFF, // 0073 JMP #0074 + 0xB81E2C00, // 0074 GETNGBL R7 K22 + 0x8C1C0F9C, // 0075 GETMET R7 R7 K156 + 0x5824009D, // 0076 LDCONST R9 K157 + 0x50280200, // 0077 LDBOOL R10 1 0 + 0x7C1C0600, // 0078 CALL R7 3 + 0x60200012, // 0079 GETGBL R8 G18 + 0x7C200000, // 007A CALL R8 0 + 0xB8267400, // 007B GETNGBL R9 K58 + 0x60280008, // 007C GETGBL R10 G8 + 0x5C2C0E00, // 007D MOVE R11 R7 + 0x7C280200, // 007E CALL R10 1 + 0x002B3C0A, // 007F ADD R10 K158 R10 + 0x582C0053, // 0080 LDCONST R11 K83 + 0x7C240400, // 0081 CALL R9 2 + 0x4C240000, // 0082 LDNIL R9 + 0x20240E09, // 0083 NE R9 R7 R9 + 0x7826004D, // 0084 JMPF R9 #00D3 + 0x8C240F6C, // 0085 GETMET R9 R7 K108 + 0x582C009F, // 0086 LDCONST R11 K159 + 0x7C240400, // 0087 CALL R9 2 + 0x78260049, // 0088 JMPF R9 #00D3 + 0x941C0F9F, // 0089 GETIDX R7 R7 K159 + 0x5824000A, // 008A LDCONST R9 K10 + 0x50280200, // 008B LDBOOL R10 1 0 + 0x782A0045, // 008C JMPF R10 #00D3 + 0x60280008, // 008D GETGBL R10 G8 + 0x5C2C1200, // 008E MOVE R11 R9 + 0x7C280200, // 008F CALL R10 1 + 0x002B400A, // 0090 ADD R10 K160 R10 + 0x8C2C0F6C, // 0091 GETMET R11 R7 K108 + 0x5C341400, // 0092 MOVE R13 R10 + 0x7C2C0400, // 0093 CALL R11 2 + 0x742E0000, // 0094 JMPT R11 #0096 + 0x7002003C, // 0095 JMP #00D3 + 0x942C0E0A, // 0096 GETIDX R11 R7 R10 + 0xB8327400, // 0097 GETNGBL R12 K58 + 0x60340018, // 0098 GETGBL R13 G24 + 0x583800A1, // 0099 LDCONST R14 K161 + 0x5C3C1400, // 009A MOVE R15 R10 + 0x60400008, // 009B GETGBL R16 G8 + 0x5C441600, // 009C MOVE R17 R11 + 0x7C400200, // 009D CALL R16 1 + 0x7C340600, // 009E CALL R13 3 + 0x58380053, // 009F LDCONST R14 K83 + 0x7C300400, // 00A0 CALL R12 2 + 0x8C301739, // 00A1 GETMET R12 R11 K57 + 0x583800A2, // 00A2 LDCONST R14 K162 + 0x543DFFFE, // 00A3 LDINT R15 -1 + 0x7C300600, // 00A4 CALL R12 3 + 0x8C341739, // 00A5 GETMET R13 R11 K57 + 0x583C00A3, // 00A6 LDCONST R15 K163 + 0x5441FFFE, // 00A7 LDINT R16 -1 + 0x7C340600, // 00A8 CALL R13 3 + 0x2438190A, // 00A9 GT R14 R12 K10 + 0x783A0002, // 00AA JMPF R14 #00AE + 0x8C381162, // 00AB GETMET R14 R8 K98 + 0x04401938, // 00AC SUB R16 R12 K56 + 0x7C380400, // 00AD CALL R14 2 + 0x24381B0A, // 00AE GT R14 R13 K10 + 0x783A0002, // 00AF JMPF R14 #00B3 + 0x8C381162, // 00B0 GETMET R14 R8 K98 + 0x04401B38, // 00B1 SUB R16 R13 K56 + 0x7C380400, // 00B2 CALL R14 2 + 0xB83A7400, // 00B3 GETNGBL R14 K58 + 0x603C0018, // 00B4 GETGBL R15 G24 + 0x584000A4, // 00B5 LDCONST R16 K164 + 0x5C441800, // 00B6 MOVE R17 R12 + 0x5C481A00, // 00B7 MOVE R18 R13 + 0x7C3C0600, // 00B8 CALL R15 3 + 0x58400053, // 00B9 LDCONST R16 K83 + 0x7C380400, // 00BA CALL R14 2 + 0x8C381739, // 00BB GETMET R14 R11 K57 + 0x584000A5, // 00BC LDCONST R16 K165 + 0x7C380400, // 00BD CALL R14 2 + 0x783A0002, // 00BE JMPF R14 #00C2 + 0x943C1D21, // 00BF GETIDX R15 R14 K33 + 0x243C1F0A, // 00C0 GT R15 R15 K10 + 0x743E0000, // 00C1 JMPT R15 #00C3 + 0x503C0001, // 00C2 LDBOOL R15 0 1 + 0x503C0200, // 00C3 LDBOOL R15 1 0 + 0x60400008, // 00C4 GETGBL R16 G8 + 0x5C440600, // 00C5 MOVE R17 R3 + 0x7C400200, // 00C6 CALL R16 1 + 0x60440013, // 00C7 GETGBL R17 G19 + 0x7C440000, // 00C8 CALL R17 0 + 0x783E0001, // 00C9 JMPF R15 #00CC + 0x584800A6, // 00CA LDCONST R18 K166 + 0x70020000, // 00CB JMP #00CD + 0x584800A7, // 00CC LDCONST R18 K167 + 0x98462412, // 00CD SETIDX R17 K18 R18 + 0x98474E09, // 00CE SETIDX R17 K167 R9 + 0x98082011, // 00CF SETIDX R2 R16 R17 + 0x000C0738, // 00D0 ADD R3 R3 K56 + 0x00241338, // 00D1 ADD R9 R9 K56 + 0x7001FFB7, // 00D2 JMP #008B + 0x6024000C, // 00D3 GETGBL R9 G12 + 0xB82A2C00, // 00D4 GETNGBL R10 K22 + 0x8C2815A8, // 00D5 GETMET R10 R10 K168 + 0x7C280200, // 00D6 CALL R10 1 + 0x7C240200, // 00D7 CALL R9 1 + 0x5828000A, // 00D8 LDCONST R10 K10 + 0x04241204, // 00D9 SUB R9 R9 R4 + 0x142C1409, // 00DA LT R11 R10 R9 + 0x782E0011, // 00DB JMPF R11 #00EE + 0x8C2C1139, // 00DC GETMET R11 R8 K57 + 0x5C341400, // 00DD MOVE R13 R10 + 0x7C2C0400, // 00DE CALL R11 2 + 0x4C300000, // 00DF LDNIL R12 + 0x1C2C160C, // 00E0 EQ R11 R11 R12 + 0x782E0009, // 00E1 JMPF R11 #00EC + 0x602C0008, // 00E2 GETGBL R11 G8 + 0x5C300600, // 00E3 MOVE R12 R3 + 0x7C2C0200, // 00E4 CALL R11 1 + 0x60300013, // 00E5 GETGBL R12 G19 + 0x7C300000, // 00E6 CALL R12 0 + 0x983225A9, // 00E7 SETIDX R12 K18 K169 + 0x00341538, // 00E8 ADD R13 R10 K56 + 0x9833520D, // 00E9 SETIDX R12 K169 R13 + 0x9808160C, // 00EA SETIDX R2 R11 R12 + 0x000C0738, // 00EB ADD R3 R3 K56 + 0x00281538, // 00EC ADD R10 R10 K56 + 0x7001FFEB, // 00ED JMP #00DA + 0x8C2C035E, // 00EE GETMET R11 R1 K94 + 0xB8362C00, // 00EF GETNGBL R13 K22 + 0x8C341B5B, // 00F0 GETMET R13 R13 K91 + 0x7C340200, // 00F1 CALL R13 1 + 0x7C2C0400, // 00F2 CALL R11 2 + 0x8C3001AA, // 00F3 GETMET R12 R0 K170 + 0x5C381600, // 00F4 MOVE R14 R11 + 0x7C300400, // 00F5 CALL R12 2 + 0x60340010, // 00F6 GETGBL R13 G16 + 0x5C381800, // 00F7 MOVE R14 R12 + 0x7C340200, // 00F8 CALL R13 1 + 0xA8020007, // 00F9 EXBLK 0 #0102 + 0x5C381A00, // 00FA MOVE R14 R13 + 0x7C380000, // 00FB CALL R14 0 + 0x603C0008, // 00FC GETGBL R15 G8 + 0x5C400600, // 00FD MOVE R16 R3 + 0x7C3C0200, // 00FE CALL R15 1 + 0x98081E0E, // 00FF SETIDX R2 R15 R14 + 0x000C0738, // 0100 ADD R3 R3 K56 + 0x7001FFF7, // 0101 JMP #00FA + 0x58340014, // 0102 LDCONST R13 K20 + 0xAC340200, // 0103 CATCH R13 1 0 + 0xB0080000, // 0104 RAISE 2 R0 R0 + 0x80040400, // 0105 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_add_endpoint +********************************************************************/ +be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(bridge_add_endpoint), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x880C017A, // 0000 GETMBR R3 R0 K122 + 0x8C0C0739, // 0001 GETMET R3 R3 K57 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120008, // 0006 JMPF R4 #0010 + 0xB8127400, // 0007 GETNGBL R4 K58 + 0x60140008, // 0008 GETGBL R5 G8 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C140200, // 000A CALL R5 1 + 0x0016F605, // 000B ADD R5 K123 R5 + 0x00140B7C, // 000C ADD R5 R5 K124 + 0x58180053, // 000D LDCONST R6 K83 + 0x7C100400, // 000E CALL R4 2 + 0x80000800, // 000F RET 0 + 0x88100120, // 0010 GETMBR R4 R0 K32 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x5C180600, // 0014 MOVE R6 R3 + 0x5C1C0000, // 0015 MOVE R7 R0 + 0x5C200800, // 0016 MOVE R8 R4 + 0x5C240400, // 0017 MOVE R9 R2 + 0x7C180600, // 0018 CALL R6 3 + 0x881C011E, // 0019 GETMBR R7 R0 K30 + 0x8C1C0F62, // 001A GETMET R7 R7 K98 + 0x5C240C00, // 001B MOVE R9 R6 + 0x7C1C0400, // 001C CALL R7 2 + 0x601C0013, // 001D GETGBL R7 G19 + 0x7C1C0000, // 001E CALL R7 0 + 0x981E2401, // 001F SETIDX R7 K18 R1 + 0x60200010, // 0020 GETGBL R8 G16 + 0x8C240566, // 0021 GETMET R9 R2 K102 + 0x7C240200, // 0022 CALL R9 1 + 0x7C200200, // 0023 CALL R8 1 + 0xA8020004, // 0024 EXBLK 0 #002A + 0x5C241000, // 0025 MOVE R9 R8 + 0x7C240000, // 0026 CALL R9 0 + 0x94280409, // 0027 GETIDX R10 R2 R9 + 0x981C120A, // 0028 SETIDX R7 R9 R10 + 0x7001FFFA, // 0029 JMP #0025 + 0x58200014, // 002A LDCONST R8 K20 + 0xAC200200, // 002B CATCH R8 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0xB8227400, // 002D GETNGBL R8 K58 + 0x60240018, // 002E GETGBL R9 G24 + 0x582800AB, // 002F LDCONST R10 K171 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300200, // 0031 MOVE R12 R1 + 0x8C34017D, // 0032 GETMET R13 R0 K125 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C340400, // 0034 CALL R13 2 + 0x7C240800, // 0035 CALL R9 4 + 0x58280021, // 0036 LDCONST R10 K33 + 0x7C200400, // 0037 CALL R8 2 + 0x88200156, // 0038 GETMBR R8 R0 K86 + 0x98200A07, // 0039 SETIDX R8 R5 R7 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x90021608, // 003B SETMBR R0 K11 R8 + 0x88200120, // 003C GETMBR R8 R0 K32 + 0x00201138, // 003D ADD R8 R8 K56 + 0x90024008, // 003E SETMBR R0 K32 R8 + 0x8C20010C, // 003F GETMET R8 R0 K12 + 0x7C200200, // 0040 CALL R8 1 + 0x8C2001AC, // 0041 GETMET R8 R0 K172 + 0x7C200200, // 0042 CALL R8 1 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrInfo +********************************************************************/ +be_local_closure(class_Matter_Device_MtrInfo, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(MtrInfo), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x1C140710, // 0000 EQ R5 R3 K16 + 0x7815FFFF, // 0001 JMPF R5 #0002 + 0x1C140710, // 0002 EQ R5 R3 K16 + 0x7816000D, // 0003 JMPF R5 #0012 + 0x60140010, // 0004 GETGBL R5 G16 + 0x8818011E, // 0005 GETMBR R6 R0 K30 + 0x7C140200, // 0006 CALL R5 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C180A00, // 0008 MOVE R6 R5 + 0x7C180000, // 0009 CALL R6 0 + 0x8C1C01AD, // 000A GETMET R7 R0 K173 + 0x88240D48, // 000B GETMBR R9 R6 K72 + 0x7C1C0400, // 000C CALL R7 2 + 0x7001FFF9, // 000D JMP #0008 + 0x58140014, // 000E LDCONST R5 K20 + 0xAC140200, // 000F CATCH R5 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x70020011, // 0011 JMP #0024 + 0x60140004, // 0012 GETGBL R5 G4 + 0x5C180800, // 0013 MOVE R6 R4 + 0x7C140200, // 0014 CALL R5 1 + 0x1C140BAE, // 0015 EQ R5 R5 K174 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C1401AD, // 0017 GETMET R5 R0 K173 + 0x5C1C0800, // 0018 MOVE R7 R4 + 0x7C140400, // 0019 CALL R5 2 + 0x70020008, // 001A JMP #0024 + 0x8C1401AF, // 001B GETMET R5 R0 K175 + 0x5C1C0600, // 001C MOVE R7 R3 + 0x7C140400, // 001D CALL R5 2 + 0x4C180000, // 001E LDNIL R6 + 0x20180A06, // 001F NE R6 R5 R6 + 0x781A0002, // 0020 JMPF R6 #0024 + 0x8C1801AD, // 0021 GETMET R6 R0 K173 + 0x88200B48, // 0022 GETMBR R8 R5 K72 + 0x7C180400, // 0023 CALL R6 2 + 0xB8162C00, // 0024 GETNGBL R5 K22 + 0x8C140BB0, // 0025 GETMET R5 R5 K176 + 0x7C140200, // 0026 CALL R5 1 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: load_param +********************************************************************/ +be_local_closure(class_Matter_Device_load_param, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(load_param), + &be_const_str_solidified, + ( &(const binstruction[134]) { /* code */ + 0xA4062A00, // 0000 IMPORT R1 K21 + 0x50080000, // 0001 LDBOOL R2 0 0 + 0xA8020054, // 0002 EXBLK 0 #0058 + 0x600C0011, // 0003 GETGBL R3 G17 + 0x881001B1, // 0004 GETMBR R4 R0 K177 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C1007B2, // 0006 GETMET R4 R3 K178 + 0x7C100200, // 0007 CALL R4 1 + 0x8C14078A, // 0008 GETMET R5 R3 K138 + 0x7C140200, // 0009 CALL R5 1 + 0xA416AA00, // 000A IMPORT R5 K85 + 0x8C180B5E, // 000B GETMET R6 R5 K94 + 0x5C200800, // 000C MOVE R8 R4 + 0x7C180400, // 000D CALL R6 2 + 0x8C1C0D39, // 000E GETMET R7 R6 K57 + 0x582400B4, // 000F LDCONST R9 K180 + 0x882801B3, // 0010 GETMBR R10 R0 K179 + 0x7C1C0600, // 0011 CALL R7 3 + 0x90036607, // 0012 SETMBR R0 K179 R7 + 0x8C1C0D39, // 0013 GETMET R7 R6 K57 + 0x582400B6, // 0014 LDCONST R9 K182 + 0x882801B5, // 0015 GETMBR R10 R0 K181 + 0x7C1C0600, // 0016 CALL R7 3 + 0x90036A07, // 0017 SETMBR R0 K181 R7 + 0x601C0017, // 0018 GETGBL R7 G23 + 0x8C200D39, // 0019 GETMET R8 R6 K57 + 0x58280022, // 001A LDCONST R10 K34 + 0x502C0000, // 001B LDBOOL R11 0 0 + 0x7C200600, // 001C CALL R8 3 + 0x7C1C0200, // 001D CALL R7 1 + 0x90024407, // 001E SETMBR R0 K34 R7 + 0x601C0017, // 001F GETGBL R7 G23 + 0x8C200D39, // 0020 GETMET R8 R6 K57 + 0x58280023, // 0021 LDCONST R10 K35 + 0x502C0000, // 0022 LDBOOL R11 0 0 + 0x7C200600, // 0023 CALL R8 3 + 0x7C1C0200, // 0024 CALL R7 1 + 0x90024607, // 0025 SETMBR R0 K35 R7 + 0x8C1C0D39, // 0026 GETMET R7 R6 K57 + 0x582400B7, // 0027 LDCONST R9 K183 + 0x88280120, // 0028 GETMBR R10 R0 K32 + 0x7C1C0600, // 0029 CALL R7 3 + 0x90024007, // 002A SETMBR R0 K32 R7 + 0x8C1C0D39, // 002B GETMET R7 R6 K57 + 0x582400B8, // 002C LDCONST R9 K184 + 0x7C1C0400, // 002D CALL R7 2 + 0x9002AC07, // 002E SETMBR R0 K86 R7 + 0x601C0017, // 002F GETGBL R7 G23 + 0x8C200D39, // 0030 GETMET R8 R6 K57 + 0x582800B9, // 0031 LDCONST R10 K185 + 0x7C200400, // 0032 CALL R8 2 + 0x7C1C0200, // 0033 CALL R7 1 + 0x90037207, // 0034 SETMBR R0 K185 R7 + 0x881C0156, // 0035 GETMBR R7 R0 K86 + 0x4C200000, // 0036 LDNIL R8 + 0x201C0E08, // 0037 NE R7 R7 R8 + 0x781E000D, // 0038 JMPF R7 #0047 + 0xB81E7400, // 0039 GETNGBL R7 K58 + 0x60200018, // 003A GETGBL R8 G24 + 0x582400BA, // 003B LDCONST R9 K186 + 0x88280156, // 003C GETMBR R10 R0 K86 + 0x7C200400, // 003D CALL R8 2 + 0x58240053, // 003E LDCONST R9 K83 + 0x7C1C0400, // 003F CALL R7 2 + 0x8C1C0158, // 0040 GETMET R7 R0 K88 + 0x7C1C0200, // 0041 CALL R7 1 + 0x8C1C01BB, // 0042 GETMET R7 R0 K187 + 0x7C1C0200, // 0043 CALL R7 1 + 0x5C080E00, // 0044 MOVE R2 R7 + 0x501C0200, // 0045 LDBOOL R7 1 0 + 0x90021607, // 0046 SETMBR R0 K11 R7 + 0x8C1C0D39, // 0047 GETMET R7 R6 K57 + 0x582400BC, // 0048 LDCONST R9 K188 + 0x60280013, // 0049 GETGBL R10 G19 + 0x7C280000, // 004A CALL R10 0 + 0x7C1C0600, // 004B CALL R7 3 + 0x90023E07, // 004C SETMBR R0 K31 R7 + 0x881C011F, // 004D GETMBR R7 R0 K31 + 0x781E0006, // 004E JMPF R7 #0056 + 0xB81E7400, // 004F GETNGBL R7 K58 + 0x60200008, // 0050 GETGBL R8 G8 + 0x8824011F, // 0051 GETMBR R9 R0 K31 + 0x7C200200, // 0052 CALL R8 1 + 0x00237A08, // 0053 ADD R8 K189 R8 + 0x58240053, // 0054 LDCONST R9 K83 + 0x7C1C0400, // 0055 CALL R7 2 + 0xA8040001, // 0056 EXBLK 1 1 + 0x70020011, // 0057 JMP #006A + 0xAC0C0002, // 0058 CATCH R3 0 2 + 0x7002000E, // 0059 JMP #0069 + 0x201407BE, // 005A NE R5 R3 K190 + 0x7816000B, // 005B JMPF R5 #0068 + 0xB8167400, // 005C GETNGBL R5 K58 + 0x60180008, // 005D GETGBL R6 G8 + 0x5C1C0600, // 005E MOVE R7 R3 + 0x7C180200, // 005F CALL R6 1 + 0x001B7E06, // 0060 ADD R6 K191 R6 + 0x00180D7F, // 0061 ADD R6 R6 K127 + 0x601C0008, // 0062 GETGBL R7 G8 + 0x5C200800, // 0063 MOVE R8 R4 + 0x7C1C0200, // 0064 CALL R7 1 + 0x00180C07, // 0065 ADD R6 R6 R7 + 0x581C0021, // 0066 LDCONST R7 K33 + 0x7C140400, // 0067 CALL R5 2 + 0x70020000, // 0068 JMP #006A + 0xB0080000, // 0069 RAISE 2 R0 R0 + 0x880C01B3, // 006A GETMBR R3 R0 K179 + 0x4C100000, // 006B LDNIL R4 + 0x1C0C0604, // 006C EQ R3 R3 R4 + 0x780E000A, // 006D JMPF R3 #0079 + 0x8C0C03C0, // 006E GETMET R3 R1 K192 + 0x58140021, // 006F LDCONST R5 K33 + 0x7C0C0400, // 0070 CALL R3 2 + 0x8C0C0786, // 0071 GETMET R3 R3 K134 + 0x5814000A, // 0072 LDCONST R5 K10 + 0x58180021, // 0073 LDCONST R6 K33 + 0x7C0C0600, // 0074 CALL R3 3 + 0x54120FFE, // 0075 LDINT R4 4095 + 0x2C0C0604, // 0076 AND R3 R3 R4 + 0x90036603, // 0077 SETMBR R0 K179 R3 + 0x50080200, // 0078 LDBOOL R2 1 0 + 0x880C01B5, // 0079 GETMBR R3 R0 K181 + 0x4C100000, // 007A LDNIL R4 + 0x1C0C0604, // 007B EQ R3 R3 R4 + 0x780E0004, // 007C JMPF R3 #0082 + 0x880C0106, // 007D GETMBR R3 R0 K6 + 0x8C0C07C1, // 007E GETMET R3 R3 K193 + 0x7C0C0200, // 007F CALL R3 1 + 0x90036A03, // 0080 SETMBR R0 K181 R3 + 0x50080200, // 0081 LDBOOL R2 1 0 + 0x780A0001, // 0082 JMPF R2 #0085 + 0x8C0C010C, // 0083 GETMET R3 R0 K12 + 0x7C0C0200, // 0084 CALL R3 1 + 0x80000000, // 0085 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrUpdate +********************************************************************/ +be_local_closure(class_Matter_Device_MtrUpdate, /* name */ + be_nested_proto( + 18, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(MtrUpdate), + &be_const_str_solidified, + ( &(const binstruction[126]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160004, // 0002 JMPF R5 #0008 + 0xB8162C00, // 0003 GETNGBL R5 K22 + 0x8C140BC2, // 0004 GETMET R5 R5 K194 + 0x581C00C3, // 0005 LDCONST R7 K195 + 0x7C140400, // 0006 CALL R5 2 + 0x80040A00, // 0007 RET 1 R5 + 0xB8162C00, // 0008 GETNGBL R5 K22 + 0x8C140BC4, // 0009 GETMET R5 R5 K196 + 0x5C1C0800, // 000A MOVE R7 R4 + 0x582000C5, // 000B LDCONST R8 K197 + 0x7C140600, // 000C CALL R5 3 + 0xB81A2C00, // 000D GETNGBL R6 K22 + 0x8C180DC4, // 000E GETMET R6 R6 K196 + 0x5C200800, // 000F MOVE R8 R4 + 0x582400C6, // 0010 LDCONST R9 K198 + 0x7C180600, // 0011 CALL R6 3 + 0x74160000, // 0012 JMPT R5 #0014 + 0x781A0064, // 0013 JMPF R6 #0079 + 0x4C1C0000, // 0014 LDNIL R7 + 0x78160010, // 0015 JMPF R5 #0027 + 0x60200009, // 0016 GETGBL R8 G9 + 0x94240805, // 0017 GETIDX R9 R4 R5 + 0x7C200200, // 0018 CALL R8 1 + 0x1824110A, // 0019 LE R9 R8 K10 + 0x78260004, // 001A JMPF R9 #0020 + 0xB8262C00, // 001B GETNGBL R9 K22 + 0x8C2413C2, // 001C GETMET R9 R9 K194 + 0x582C00C7, // 001D LDCONST R11 K199 + 0x7C240400, // 001E CALL R9 2 + 0x80041200, // 001F RET 1 R9 + 0x8C24014B, // 0020 GETMET R9 R0 K75 + 0x5C2C1000, // 0021 MOVE R11 R8 + 0x7C240400, // 0022 CALL R9 2 + 0x5C1C1200, // 0023 MOVE R7 R9 + 0x8C240983, // 0024 GETMET R9 R4 K131 + 0x5C2C0A00, // 0025 MOVE R11 R5 + 0x7C240400, // 0026 CALL R9 2 + 0x781A0009, // 0027 JMPF R6 #0032 + 0x4C200000, // 0028 LDNIL R8 + 0x1C200E08, // 0029 EQ R8 R7 R8 + 0x78220003, // 002A JMPF R8 #002F + 0x8C2001AF, // 002B GETMET R8 R0 K175 + 0x94280806, // 002C GETIDX R10 R4 R6 + 0x7C200400, // 002D CALL R8 2 + 0x5C1C1000, // 002E MOVE R7 R8 + 0x8C200983, // 002F GETMET R8 R4 K131 + 0x5C280C00, // 0030 MOVE R10 R6 + 0x7C200400, // 0031 CALL R8 2 + 0x4C200000, // 0032 LDNIL R8 + 0x1C200E08, // 0033 EQ R8 R7 R8 + 0x78220004, // 0034 JMPF R8 #003A + 0xB8222C00, // 0035 GETNGBL R8 K22 + 0x8C2011C2, // 0036 GETMET R8 R8 K194 + 0x582800C8, // 0037 LDCONST R10 K200 + 0x7C200400, // 0038 CALL R8 2 + 0x80041000, // 0039 RET 1 R8 + 0x88200FC9, // 003A GETMBR R8 R7 K201 + 0x74220004, // 003B JMPT R8 #0041 + 0xB8222C00, // 003C GETNGBL R8 K22 + 0x8C2011C2, // 003D GETMET R8 R8 K194 + 0x582800CA, // 003E LDCONST R10 K202 + 0x7C200400, // 003F CALL R8 2 + 0x80041000, // 0040 RET 1 R8 + 0x8C200FCB, // 0041 GETMET R8 R7 K203 + 0x7C200200, // 0042 CALL R8 1 + 0x60240013, // 0043 GETGBL R9 G19 + 0x7C240000, // 0044 CALL R9 0 + 0x60280010, // 0045 GETGBL R10 G16 + 0x8C2C0966, // 0046 GETMET R11 R4 K102 + 0x7C2C0200, // 0047 CALL R11 1 + 0x7C280200, // 0048 CALL R10 1 + 0xA8020016, // 0049 EXBLK 0 #0061 + 0x5C2C1400, // 004A MOVE R11 R10 + 0x7C2C0000, // 004B CALL R11 0 + 0xB8322C00, // 004C GETNGBL R12 K22 + 0x8C3019CC, // 004D GETMET R12 R12 K204 + 0x5C381000, // 004E MOVE R14 R8 + 0x5C3C1600, // 004F MOVE R15 R11 + 0x7C300600, // 0050 CALL R12 3 + 0x4C340000, // 0051 LDNIL R13 + 0x1C34180D, // 0052 EQ R13 R12 R13 + 0x78360008, // 0053 JMPF R13 #005D + 0xB8362C00, // 0054 GETNGBL R13 K22 + 0x8C341BC2, // 0055 GETMET R13 R13 K194 + 0x603C0018, // 0056 GETGBL R15 G24 + 0x584000CD, // 0057 LDCONST R16 K205 + 0x5C441600, // 0058 MOVE R17 R11 + 0x7C3C0400, // 0059 CALL R15 2 + 0x7C340400, // 005A CALL R13 2 + 0xA8040001, // 005B EXBLK 1 1 + 0x80001A00, // 005C RET 0 + 0x9434100C, // 005D GETIDX R13 R8 R12 + 0x9438080B, // 005E GETIDX R14 R4 R11 + 0x98241A0E, // 005F SETIDX R9 R13 R14 + 0x7001FFE8, // 0060 JMP #004A + 0x58280014, // 0061 LDCONST R10 K20 + 0xAC280200, // 0062 CATCH R10 1 0 + 0xB0080000, // 0063 RAISE 2 R0 R0 + 0x8C280FCE, // 0064 GETMET R10 R7 K206 + 0x5C301200, // 0065 MOVE R12 R9 + 0x7C280400, // 0066 CALL R10 2 + 0x8C280FCF, // 0067 GETMET R10 R7 K207 + 0x7C280200, // 0068 CALL R10 1 + 0x782A000A, // 0069 JMPF R10 #0075 + 0x602C0018, // 006A GETGBL R11 G24 + 0x583000D0, // 006B LDCONST R12 K208 + 0x5C340200, // 006C MOVE R13 R1 + 0x5C381400, // 006D MOVE R14 R10 + 0x7C2C0600, // 006E CALL R11 3 + 0xB8322C00, // 006F GETNGBL R12 K22 + 0x8C3019D1, // 0070 GETMET R12 R12 K209 + 0x5C381600, // 0071 MOVE R14 R11 + 0x7C300400, // 0072 CALL R12 2 + 0x80041800, // 0073 RET 1 R12 + 0x70020003, // 0074 JMP #0079 + 0xB82E2C00, // 0075 GETNGBL R11 K22 + 0x8C2C17B0, // 0076 GETMET R11 R11 K176 + 0x7C2C0200, // 0077 CALL R11 1 + 0x80041600, // 0078 RET 1 R11 + 0xB81E2C00, // 0079 GETNGBL R7 K22 + 0x8C1C0FC2, // 007A GETMET R7 R7 K194 + 0x582400D2, // 007B LDCONST R9 K210 + 0x7C1C0400, // 007C CALL R7 2 + 0x80000000, // 007D RET 0 }) ) ); @@ -971,7 +2953,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1059,29 +3041,23 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(add_cmd), - /* K2 */ be_nested_str_weak(MtrJoin), - /* K3 */ be_nested_str_weak(MtrUpdate), - /* K4 */ be_nested_str_weak(MtrInfo), - }), + &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(register_commands), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 + 0xB8062C00, // 0000 GETNGBL R1 K22 + 0x8C0403D3, // 0001 GETMET R1 R1 K211 + 0x580C00D4, // 0002 LDCONST R3 K212 0x84100000, // 0003 CLOSURE R4 P0 0x7C040600, // 0004 CALL R1 3 - 0xB8060000, // 0005 GETNGBL R1 K0 - 0x8C040301, // 0006 GETMET R1 R1 K1 - 0x580C0003, // 0007 LDCONST R3 K3 + 0xB8062C00, // 0005 GETNGBL R1 K22 + 0x8C0403D3, // 0006 GETMET R1 R1 K211 + 0x580C00D5, // 0007 LDCONST R3 K213 0x84100001, // 0008 CLOSURE R4 P1 0x7C040600, // 0009 CALL R1 3 - 0xB8060000, // 000A GETNGBL R1 K0 - 0x8C040301, // 000B GETMET R1 R1 K1 - 0x580C0004, // 000C LDCONST R3 K4 + 0xB8062C00, // 000A GETNGBL R1 K22 + 0x8C0403D3, // 000B GETMET R1 R1 K211 + 0x580C00D6, // 000C LDCONST R3 K214 0x84100002, // 000D CLOSURE R4 P2 0x7C040600, // 000E CALL R1 3 0xA0000000, // 000F CLOSE R0 @@ -1092,3168 +3068,6 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: compute_qrcode_content -********************************************************************/ -be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(setbits), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(VENDOR_ID), - /* K4 */ be_nested_str_weak(PRODUCT_ID), - /* K5 */ be_nested_str_weak(root_discriminator), - /* K6 */ be_nested_str_weak(root_passcode), - /* K7 */ be_const_int(134217727), - /* K8 */ be_nested_str_weak(MT_X3A), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(Base38), - /* K11 */ be_nested_str_weak(encode), - }), - be_str_weak(compute_qrcode_content), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 - 0x540E000A, // 0003 LDINT R3 11 - 0x7C040400, // 0004 CALL R1 2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x5416000F, // 0007 LDINT R5 16 - 0x88180103, // 0008 GETMBR R6 R0 K3 - 0x7C080800, // 0009 CALL R2 4 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x54120012, // 000B LDINT R4 19 - 0x5416000F, // 000C LDINT R5 16 - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x7C080800, // 000E CALL R2 4 - 0x8C080301, // 000F GETMET R2 R1 K1 - 0x54120024, // 0010 LDINT R4 37 - 0x54160007, // 0011 LDINT R5 8 - 0x541A0003, // 0012 LDINT R6 4 - 0x7C080800, // 0013 CALL R2 4 - 0x8C080301, // 0014 GETMET R2 R1 K1 - 0x5412002C, // 0015 LDINT R4 45 - 0x5416000B, // 0016 LDINT R5 12 - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x541E0FFE, // 0018 LDINT R7 4095 - 0x2C180C07, // 0019 AND R6 R6 R7 - 0x7C080800, // 001A CALL R2 4 - 0x8C080301, // 001B GETMET R2 R1 K1 - 0x54120038, // 001C LDINT R4 57 - 0x5416001A, // 001D LDINT R5 27 - 0x88180106, // 001E GETMBR R6 R0 K6 - 0x2C180D07, // 001F AND R6 R6 K7 - 0x7C080800, // 0020 CALL R2 4 - 0xB80A1200, // 0021 GETNGBL R2 K9 - 0x8808050A, // 0022 GETMBR R2 R2 K10 - 0x8C08050B, // 0023 GETMET R2 R2 K11 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x000A1002, // 0026 ADD R2 K8 R2 - 0x80040400, // 0027 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve_attribute_read_solo -********************************************************************/ -be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K7 */ be_nested_str_weak(contains_cluster), - /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K9 */ be_nested_str_weak(contains_attribute), - /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), - be_str_weak(resolve_attribute_read_solo), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 - 0x4C140000, // 0003 LDNIL R5 - 0x1C140405, // 0004 EQ R5 R2 R5 - 0x74160005, // 0005 JMPT R5 #000C - 0x4C140000, // 0006 LDNIL R5 - 0x1C140605, // 0007 EQ R5 R3 R5 - 0x74160002, // 0008 JMPT R5 #000C - 0x4C140000, // 0009 LDNIL R5 - 0x1C140805, // 000A EQ R5 R4 R5 - 0x78160001, // 000B JMPF R5 #000E - 0x4C140000, // 000C LDNIL R5 - 0x80040A00, // 000D RET 1 R5 - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x5C1C0400, // 000F MOVE R7 R2 - 0x7C140400, // 0010 CALL R5 2 - 0x4C180000, // 0011 LDNIL R6 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0xB81A0A00, // 0014 GETNGBL R6 K5 - 0x88180D06, // 0015 GETMBR R6 R6 K6 - 0x90060806, // 0016 SETMBR R1 K4 R6 - 0x4C180000, // 0017 LDNIL R6 - 0x80040C00, // 0018 RET 1 R6 - 0x70020013, // 0019 JMP #002E - 0x8C180B07, // 001A GETMET R6 R5 K7 - 0x5C200600, // 001B MOVE R8 R3 - 0x7C180400, // 001C CALL R6 2 - 0x741A0005, // 001D JMPT R6 #0024 - 0xB81A0A00, // 001E GETNGBL R6 K5 - 0x88180D08, // 001F GETMBR R6 R6 K8 - 0x90060806, // 0020 SETMBR R1 K4 R6 - 0x4C180000, // 0021 LDNIL R6 - 0x80040C00, // 0022 RET 1 R6 - 0x70020009, // 0023 JMP #002E - 0x8C180B09, // 0024 GETMET R6 R5 K9 - 0x5C200600, // 0025 MOVE R8 R3 - 0x5C240800, // 0026 MOVE R9 R4 - 0x7C180600, // 0027 CALL R6 3 - 0x741A0004, // 0028 JMPT R6 #002E - 0xB81A0A00, // 0029 GETNGBL R6 K5 - 0x88180D0A, // 002A GETMBR R6 R6 K10 - 0x90060806, // 002B SETMBR R1 K4 R6 - 0x4C180000, // 002C LDNIL R6 - 0x80040C00, // 002D RET 1 R6 - 0x80040A00, // 002E RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_remotes_info -********************************************************************/ -be_local_closure(class_Matter_Device_update_remotes_info, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(get_info), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(plugins_config_remotes), - }), - be_str_weak(update_remotes_info), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x20080403, // 0004 NE R2 R2 R3 - 0x780A0018, // 0005 JMPF R2 #001F - 0x60080010, // 0006 GETGBL R2 G16 - 0x880C0100, // 0007 GETMBR R3 R0 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7C080200, // 000A CALL R2 1 - 0xA802000F, // 000B EXBLK 0 #001C - 0x5C0C0400, // 000C MOVE R3 R2 - 0x7C0C0000, // 000D CALL R3 0 - 0x88100100, // 000E GETMBR R4 R0 K0 - 0x94100803, // 000F GETIDX R4 R4 R3 - 0x8C100902, // 0010 GETMET R4 R4 K2 - 0x7C100200, // 0011 CALL R4 1 - 0x4C140000, // 0012 LDNIL R5 - 0x20140805, // 0013 NE R5 R4 R5 - 0x78160005, // 0014 JMPF R5 #001B - 0x6014000C, // 0015 GETGBL R5 G12 - 0x5C180800, // 0016 MOVE R6 R4 - 0x7C140200, // 0017 CALL R5 1 - 0x24140B03, // 0018 GT R5 R5 K3 - 0x78160000, // 0019 JMPF R5 #001B - 0x98040604, // 001A SETIDX R1 R3 R4 - 0x7001FFEF, // 001B JMP #000C - 0x58080004, // 001C LDCONST R2 K4 - 0xAC080200, // 001D CATCH R2 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x90020A01, // 001F SETMBR R0 K5 R1 - 0x80040200, // 0020 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: button_multi_pressed -********************************************************************/ -be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(button_handler), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(2), - /* K3 */ be_const_int(0), - }), - be_str_weak(button_multi_pressed), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x540E0007, // 0000 LDINT R3 8 - 0x3C0C0403, // 0001 SHR R3 R2 R3 - 0x541200FE, // 0002 LDINT R4 255 - 0x2C0C0604, // 0003 AND R3 R3 R4 - 0x541200FE, // 0004 LDINT R4 255 - 0x2C100404, // 0005 AND R4 R2 R4 - 0x8C140100, // 0006 GETMET R5 R0 K0 - 0x001C0901, // 0007 ADD R7 R4 K1 - 0x58200002, // 0008 LDCONST R8 K2 - 0x58240003, // 0009 LDCONST R9 K3 - 0x5C280600, // 000A MOVE R10 R3 - 0x7C140A00, // 000B CALL R5 5 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sort_distinct -********************************************************************/ -be_local_closure(class_Matter_Device_sort_distinct, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(remove), - }), - be_str_weak(sort_distinct), - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020010, // 0008 EXBLK 0 #001A - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 - 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B01, // 000F SUB R6 R5 K1 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x24180C04, // 0011 GT R6 R6 R4 - 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B01, // 0013 SUB R6 R5 K1 - 0x94180006, // 0014 GETIDX R6 R0 R6 - 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B01, // 0016 SUB R5 R5 K1 - 0x7001FFF4, // 0017 JMP #000D - 0x98000A04, // 0018 SETIDX R0 R5 R4 - 0x7001FFEE, // 0019 JMP #0009 - 0x58080003, // 001A LDCONST R2 K3 - 0xAC080200, // 001B CATCH R2 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x58080001, // 001D LDCONST R2 K1 - 0x600C000C, // 001E GETGBL R3 G12 - 0x5C100000, // 001F MOVE R4 R0 - 0x7C0C0200, // 0020 CALL R3 1 - 0x180C0701, // 0021 LE R3 R3 K1 - 0x780E0000, // 0022 JMPF R3 #0024 - 0x80040000, // 0023 RET 1 R0 - 0x940C0102, // 0024 GETIDX R3 R0 K2 - 0x6010000C, // 0025 GETGBL R4 G12 - 0x5C140000, // 0026 MOVE R5 R0 - 0x7C100200, // 0027 CALL R4 1 - 0x14100404, // 0028 LT R4 R2 R4 - 0x78120009, // 0029 JMPF R4 #0034 - 0x94100002, // 002A GETIDX R4 R0 R2 - 0x1C100803, // 002B EQ R4 R4 R3 - 0x78120003, // 002C JMPF R4 #0031 - 0x8C100104, // 002D GETMET R4 R0 K4 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x70020001, // 0030 JMP #0033 - 0x940C0002, // 0031 GETIDX R3 R0 R2 - 0x00080501, // 0032 ADD R2 R2 K1 - 0x7001FFF0, // 0033 JMP #0025 - 0x80040000, // 0034 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_PASE -********************************************************************/ -be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(mdns_pase_eth), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K4 */ be_nested_str_weak(_matterc), - /* K5 */ be_nested_str_weak(_udp), - /* K6 */ be_nested_str_weak(commissioning_instance_eth), - /* K7 */ be_nested_str_weak(hostname_eth), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K10 */ be_nested_str_weak(eth), - /* K11 */ be_nested_str_weak(remove_service), - /* K12 */ be_nested_str_weak(mdns_pase_wifi), - /* K13 */ be_nested_str_weak(commissioning_instance_wifi), - /* K14 */ be_nested_str_weak(hostname_wifi), - /* K15 */ be_nested_str_weak(wifi), - /* K16 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K17 */ be_nested_str_weak(_X7C), - /* K18 */ be_const_int(2), - }), - be_str_weak(mdns_remove_PASE), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x780A0019, // 0003 JMPF R2 #001E - 0xB80A0400, // 0004 GETNGBL R2 K2 - 0x600C0018, // 0005 GETGBL R3 G24 - 0x58100003, // 0006 LDCONST R4 K3 - 0x58140004, // 0007 LDCONST R5 K4 - 0x58180005, // 0008 LDCONST R6 K5 - 0x881C0106, // 0009 GETMBR R7 R0 K6 - 0x88200107, // 000A GETMBR R8 R0 K7 - 0x7C0C0A00, // 000B CALL R3 5 - 0x58100008, // 000C LDCONST R4 K8 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0400, // 000E GETNGBL R2 K2 - 0x600C0018, // 000F GETGBL R3 G24 - 0x58100009, // 0010 LDCONST R4 K9 - 0x5814000A, // 0011 LDCONST R5 K10 - 0x88180106, // 0012 GETMBR R6 R0 K6 - 0x7C0C0600, // 0013 CALL R3 3 - 0x58100008, // 0014 LDCONST R4 K8 - 0x7C080400, // 0015 CALL R2 2 - 0x50080000, // 0016 LDBOOL R2 0 0 - 0x90020202, // 0017 SETMBR R0 K1 R2 - 0x8C08030B, // 0018 GETMET R2 R1 K11 - 0x58100004, // 0019 LDCONST R4 K4 - 0x58140005, // 001A LDCONST R5 K5 - 0x88180106, // 001B GETMBR R6 R0 K6 - 0x881C0107, // 001C GETMBR R7 R0 K7 - 0x7C080A00, // 001D CALL R2 5 - 0x8808010C, // 001E GETMBR R2 R0 K12 - 0x780A0019, // 001F JMPF R2 #003A - 0xB80A0400, // 0020 GETNGBL R2 K2 - 0x600C0018, // 0021 GETGBL R3 G24 - 0x58100003, // 0022 LDCONST R4 K3 - 0x58140004, // 0023 LDCONST R5 K4 - 0x58180005, // 0024 LDCONST R6 K5 - 0x881C010D, // 0025 GETMBR R7 R0 K13 - 0x8820010E, // 0026 GETMBR R8 R0 K14 - 0x7C0C0A00, // 0027 CALL R3 5 - 0x58100008, // 0028 LDCONST R4 K8 - 0x7C080400, // 0029 CALL R2 2 - 0xB80A0400, // 002A GETNGBL R2 K2 - 0x600C0018, // 002B GETGBL R3 G24 - 0x58100009, // 002C LDCONST R4 K9 - 0x5814000F, // 002D LDCONST R5 K15 - 0x8818010D, // 002E GETMBR R6 R0 K13 - 0x7C0C0600, // 002F CALL R3 3 - 0x58100008, // 0030 LDCONST R4 K8 - 0x7C080400, // 0031 CALL R2 2 - 0x50080000, // 0032 LDBOOL R2 0 0 - 0x90021802, // 0033 SETMBR R0 K12 R2 - 0x8C08030B, // 0034 GETMET R2 R1 K11 - 0x58100004, // 0035 LDCONST R4 K4 - 0x58140005, // 0036 LDCONST R5 K5 - 0x8818010D, // 0037 GETMBR R6 R0 K13 - 0x881C010E, // 0038 GETMBR R7 R0 K14 - 0x7C080A00, // 0039 CALL R2 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC080002, // 003C CATCH R2 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8120400, // 003E GETNGBL R4 K2 - 0x60140008, // 003F GETGBL R5 G8 - 0x5C180400, // 0040 MOVE R6 R2 - 0x7C140200, // 0041 CALL R5 1 - 0x00162005, // 0042 ADD R5 K16 R5 - 0x00140B11, // 0043 ADD R5 R5 K17 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x00140A06, // 0047 ADD R5 R5 R6 - 0x58180012, // 0048 LDCONST R6 K18 - 0x7C100400, // 0049 CALL R4 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_remote_info -********************************************************************/ -be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config_remotes), - /* K1 */ be_nested_str_weak(find), - }), - be_str_weak(get_plugin_remote_info), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_root_basic_commissioning -********************************************************************/ -be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ - be_nested_proto( - 22, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(PASE_TIMEOUT), - /* K1 */ be_nested_str_weak(compute_manual_pairing_code), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(compute_qrcode_content), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(publish_result), - /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), - /* K9 */ be_nested_str_weak(Matter), - /* K10 */ be_nested_str_weak(crypto), - /* K11 */ be_nested_str_weak(random), - /* K12 */ be_nested_str_weak(add), - /* K13 */ be_nested_str_weak(root_passcode), - /* K14 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), - /* K15 */ be_nested_str_weak(derive), - /* K16 */ be_nested_str_weak(PBKDF_ITERATIONS), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(EC_P256), - /* K19 */ be_nested_str_weak(mod), - /* K20 */ be_nested_str_weak(public_key), - /* K21 */ be_nested_str_weak(start_basic_commissioning), - /* K22 */ be_nested_str_weak(root_discriminator), - }), - be_str_weak(start_root_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[74]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x60100018, // 0007 GETGBL R4 G24 - 0x58140003, // 0008 LDCONST R5 K3 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C100400, // 000A CALL R4 2 - 0x58140004, // 000B LDCONST R5 K4 - 0x7C0C0400, // 000C CALL R3 2 - 0x8C0C0105, // 000D GETMET R3 R0 K5 - 0x7C0C0200, // 000E CALL R3 1 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x8C100907, // 0010 GETMET R4 R4 K7 - 0x60180018, // 0011 GETGBL R6 G24 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x5C200400, // 0013 MOVE R8 R2 - 0x5C240600, // 0014 MOVE R9 R3 - 0x7C180600, // 0015 CALL R6 3 - 0x581C0009, // 0016 LDCONST R7 K9 - 0x7C100600, // 0017 CALL R4 3 - 0xA4121400, // 0018 IMPORT R4 K10 - 0x8C14090B, // 0019 GETMET R5 R4 K11 - 0x541E000F, // 001A LDINT R7 16 - 0x7C140400, // 001B CALL R5 2 - 0x60180015, // 001C GETGBL R6 G21 - 0x7C180000, // 001D CALL R6 0 - 0x8C180D0C, // 001E GETMET R6 R6 K12 - 0x8820010D, // 001F GETMBR R8 R0 K13 - 0x54260003, // 0020 LDINT R9 4 - 0x7C180600, // 0021 CALL R6 3 - 0x8C1C090E, // 0022 GETMET R7 R4 K14 - 0x7C1C0200, // 0023 CALL R7 1 - 0x8C1C0F0F, // 0024 GETMET R7 R7 K15 - 0x5C240C00, // 0025 MOVE R9 R6 - 0x5C280A00, // 0026 MOVE R10 R5 - 0x882C0110, // 0027 GETMBR R11 R0 K16 - 0x5432004F, // 0028 LDINT R12 80 - 0x7C1C0A00, // 0029 CALL R7 5 - 0x54220026, // 002A LDINT R8 39 - 0x40222208, // 002B CONNECT R8 K17 R8 - 0x94200E08, // 002C GETIDX R8 R7 R8 - 0x54260027, // 002D LDINT R9 40 - 0x542A004E, // 002E LDINT R10 79 - 0x4024120A, // 002F CONNECT R9 R9 R10 - 0x94240E09, // 0030 GETIDX R9 R7 R9 - 0x8C280912, // 0031 GETMET R10 R4 K18 - 0x7C280200, // 0032 CALL R10 1 - 0x8C281513, // 0033 GETMET R10 R10 K19 - 0x5C301000, // 0034 MOVE R12 R8 - 0x7C280400, // 0035 CALL R10 2 - 0x8C2C0912, // 0036 GETMET R11 R4 K18 - 0x7C2C0200, // 0037 CALL R11 1 - 0x8C2C1713, // 0038 GETMET R11 R11 K19 - 0x5C341200, // 0039 MOVE R13 R9 - 0x7C2C0400, // 003A CALL R11 2 - 0x8C300912, // 003B GETMET R12 R4 K18 - 0x7C300200, // 003C CALL R12 1 - 0x8C301914, // 003D GETMET R12 R12 K20 - 0x5C381600, // 003E MOVE R14 R11 - 0x7C300400, // 003F CALL R12 2 - 0x8C340115, // 0040 GETMET R13 R0 K21 - 0x5C3C0200, // 0041 MOVE R15 R1 - 0x88400110, // 0042 GETMBR R16 R0 K16 - 0x88440116, // 0043 GETMBR R17 R0 K22 - 0x5C480A00, // 0044 MOVE R18 R5 - 0x5C4C1400, // 0045 MOVE R19 R10 - 0x5C501800, // 0046 MOVE R20 R12 - 0x4C540000, // 0047 LDNIL R21 - 0x7C341000, // 0048 CALL R13 8 - 0x80000000, // 0049 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: event_fabrics_saved -********************************************************************/ -be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(plugins_persist), - /* K4 */ be_nested_str_weak(save_param), - }), - be_str_weak(event_fabrics_saved), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x24040302, // 0003 GT R1 R1 K2 - 0x78060005, // 0004 JMPF R1 #000B - 0x88040103, // 0005 GETMBR R1 R0 K3 - 0x74060003, // 0006 JMPT R1 #000B - 0x50040200, // 0007 LDBOOL R1 1 0 - 0x90020601, // 0008 SETMBR R0 K3 R1 - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x7C040200, // 000A CALL R1 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_mdns_announce_hostnames -********************************************************************/ -be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_mdns_announce_hostname), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_mdns_host), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x50080200, // 0002 LDBOOL R2 1 0 - 0x7C000400, // 0003 CALL R0 2 - 0xB8020200, // 0004 GETNGBL R0 K1 - 0x8C000102, // 0005 GETMET R0 R0 K2 - 0x58080003, // 0006 LDCONST R2 K3 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C000600, // 0008 CALL R0 3 - 0x80000000, // 0009 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(wifi), - /* K2 */ be_nested_str_weak(up), - /* K3 */ be_nested_str_weak(_mdns_announce_hostname), - /* K4 */ be_nested_str_weak(add_rule), - /* K5 */ be_nested_str_weak(Wifi_X23Connected), - /* K6 */ be_nested_str_weak(matter_mdns_host), - /* K7 */ be_nested_str_weak(eth), - /* K8 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_mdns_announce_hostnames), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x94040302, // 0003 GETIDX R1 R1 K2 - 0x78060003, // 0004 JMPF R1 #0009 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x7C040400, // 0007 CALL R1 2 - 0x70020005, // 0008 JMP #000F - 0xB8060000, // 0009 GETNGBL R1 K0 - 0x8C040304, // 000A GETMET R1 R1 K4 - 0x580C0005, // 000B LDCONST R3 K5 - 0x84100000, // 000C CLOSURE R4 P0 - 0x58140006, // 000D LDCONST R5 K6 - 0x7C040800, // 000E CALL R1 4 - 0xB8060000, // 000F GETNGBL R1 K0 - 0x8C040307, // 0010 GETMET R1 R1 K7 - 0x7C040200, // 0011 CALL R1 1 - 0x94040302, // 0012 GETIDX R1 R1 K2 - 0x78060003, // 0013 JMPF R1 #0018 - 0x8C040103, // 0014 GETMET R1 R0 K3 - 0x500C0200, // 0015 LDBOOL R3 1 0 - 0x7C040400, // 0016 CALL R1 2 - 0x70020005, // 0017 JMP #001E - 0xB8060000, // 0018 GETNGBL R1 K0 - 0x8C040304, // 0019 GETMET R1 R1 K4 - 0x580C0008, // 001A LDCONST R3 K8 - 0x84100001, // 001B CLOSURE R4 P1 - 0x58140006, // 001C LDCONST R5 K6 - 0x7C040800, // 001D CALL R1 4 - 0xA0000000, // 001E CLOSE R0 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_PASE -********************************************************************/ -be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[40]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(VP), - /* K3 */ be_nested_str_weak(_X25s_X2B_X25s), - /* K4 */ be_nested_str_weak(VENDOR_ID), - /* K5 */ be_nested_str_weak(PRODUCT_ID), - /* K6 */ be_nested_str_weak(D), - /* K7 */ be_nested_str_weak(commissioning_discriminator), - /* K8 */ be_nested_str_weak(CM), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(T), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(SII), - /* K13 */ be_nested_str_weak(SAI), - /* K14 */ be_nested_str_weak(commissioning_instance_wifi), - /* K15 */ be_nested_str_weak(random), - /* K16 */ be_nested_str_weak(tohex), - /* K17 */ be_nested_str_weak(commissioning_instance_eth), - /* K18 */ be_nested_str_weak(hostname_eth), - /* K19 */ be_nested_str_weak(add_service), - /* K20 */ be_nested_str_weak(_matterc), - /* K21 */ be_nested_str_weak(_udp), - /* K22 */ be_nested_str_weak(mdns_pase_eth), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K25 */ be_nested_str_weak(eth), - /* K26 */ be_const_int(2), - /* K27 */ be_nested_str_weak(_L), - /* K28 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K29 */ be_const_int(3), - /* K30 */ be_nested_str_weak(add_subtype), - /* K31 */ be_nested_str_weak(_S), - /* K32 */ be_nested_str_weak(_V), - /* K33 */ be_nested_str_weak(_CM1), - /* K34 */ be_nested_str_weak(hostname_wifi), - /* K35 */ be_nested_str_weak(mdns_pase_wifi), - /* K36 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K37 */ be_nested_str_weak(wifi), - /* K38 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K39 */ be_nested_str_weak(_X7C), - }), - be_str_weak(mdns_announce_PASE), - &be_const_str_solidified, - ( &(const binstruction[222]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x600C0013, // 0002 GETGBL R3 G19 - 0x7C0C0000, // 0003 CALL R3 0 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x881C0105, // 0007 GETMBR R7 R0 K5 - 0x7C100600, // 0008 CALL R4 3 - 0x980E0404, // 0009 SETIDX R3 K2 R4 - 0x88100107, // 000A GETMBR R4 R0 K7 - 0x980E0C04, // 000B SETIDX R3 K6 R4 - 0x980E1109, // 000C SETIDX R3 K8 K9 - 0x980E150B, // 000D SETIDX R3 K10 K11 - 0x54121387, // 000E LDINT R4 5000 - 0x980E1804, // 000F SETIDX R3 K12 R4 - 0x5412012B, // 0010 LDINT R4 300 - 0x980E1A04, // 0011 SETIDX R3 K13 R4 - 0x8C10050F, // 0012 GETMET R4 R2 K15 - 0x541A0007, // 0013 LDINT R6 8 - 0x7C100400, // 0014 CALL R4 2 - 0x8C100910, // 0015 GETMET R4 R4 K16 - 0x7C100200, // 0016 CALL R4 1 - 0x90021C04, // 0017 SETMBR R0 K14 R4 - 0x8C10050F, // 0018 GETMET R4 R2 K15 - 0x541A0007, // 0019 LDINT R6 8 - 0x7C100400, // 001A CALL R4 2 - 0x8C100910, // 001B GETMET R4 R4 K16 - 0x7C100200, // 001C CALL R4 1 - 0x90022204, // 001D SETMBR R0 K17 R4 - 0xA80200AD, // 001E EXBLK 0 #00CD - 0x88100112, // 001F GETMBR R4 R0 K18 - 0x78120053, // 0020 JMPF R4 #0075 - 0x8C100313, // 0021 GETMET R4 R1 K19 - 0x58180014, // 0022 LDCONST R6 K20 - 0x581C0015, // 0023 LDCONST R7 K21 - 0x542215A3, // 0024 LDINT R8 5540 - 0x5C240600, // 0025 MOVE R9 R3 - 0x88280111, // 0026 GETMBR R10 R0 K17 - 0x882C0112, // 0027 GETMBR R11 R0 K18 - 0x7C100E00, // 0028 CALL R4 7 - 0x50100200, // 0029 LDBOOL R4 1 0 - 0x90022C04, // 002A SETMBR R0 K22 R4 - 0xB8122E00, // 002B GETNGBL R4 K23 - 0x60140018, // 002C GETGBL R5 G24 - 0x58180018, // 002D LDCONST R6 K24 - 0x581C0019, // 002E LDCONST R7 K25 - 0x88200111, // 002F GETMBR R8 R0 K17 - 0x88240112, // 0030 GETMBR R9 R0 K18 - 0x7C140800, // 0031 CALL R5 4 - 0x5818001A, // 0032 LDCONST R6 K26 - 0x7C100400, // 0033 CALL R4 2 - 0x60100008, // 0034 GETGBL R4 G8 - 0x88140107, // 0035 GETMBR R5 R0 K7 - 0x541A0FFE, // 0036 LDINT R6 4095 - 0x2C140A06, // 0037 AND R5 R5 R6 - 0x7C100200, // 0038 CALL R4 1 - 0x00123604, // 0039 ADD R4 K27 R4 - 0xB8162E00, // 003A GETNGBL R5 K23 - 0x001A3804, // 003B ADD R6 K28 R4 - 0x581C001D, // 003C LDCONST R7 K29 - 0x7C140400, // 003D CALL R5 2 - 0x8C14031E, // 003E GETMET R5 R1 K30 - 0x581C0014, // 003F LDCONST R7 K20 - 0x58200015, // 0040 LDCONST R8 K21 - 0x88240111, // 0041 GETMBR R9 R0 K17 - 0x88280112, // 0042 GETMBR R10 R0 K18 - 0x5C2C0800, // 0043 MOVE R11 R4 - 0x7C140C00, // 0044 CALL R5 6 - 0x60140008, // 0045 GETGBL R5 G8 - 0x88180107, // 0046 GETMBR R6 R0 K7 - 0x541E0EFF, // 0047 LDINT R7 3840 - 0x2C180C07, // 0048 AND R6 R6 R7 - 0x541E0007, // 0049 LDINT R7 8 - 0x3C180C07, // 004A SHR R6 R6 R7 - 0x7C140200, // 004B CALL R5 1 - 0x00163E05, // 004C ADD R5 K31 R5 - 0x5C100A00, // 004D MOVE R4 R5 - 0xB8162E00, // 004E GETNGBL R5 K23 - 0x001A3804, // 004F ADD R6 K28 R4 - 0x581C001D, // 0050 LDCONST R7 K29 - 0x7C140400, // 0051 CALL R5 2 - 0x8C14031E, // 0052 GETMET R5 R1 K30 - 0x581C0014, // 0053 LDCONST R7 K20 - 0x58200015, // 0054 LDCONST R8 K21 - 0x88240111, // 0055 GETMBR R9 R0 K17 - 0x88280112, // 0056 GETMBR R10 R0 K18 - 0x5C2C0800, // 0057 MOVE R11 R4 - 0x7C140C00, // 0058 CALL R5 6 - 0x60140008, // 0059 GETGBL R5 G8 - 0x88180104, // 005A GETMBR R6 R0 K4 - 0x7C140200, // 005B CALL R5 1 - 0x00164005, // 005C ADD R5 K32 R5 - 0x5C100A00, // 005D MOVE R4 R5 - 0xB8162E00, // 005E GETNGBL R5 K23 - 0x001A3804, // 005F ADD R6 K28 R4 - 0x581C001D, // 0060 LDCONST R7 K29 - 0x7C140400, // 0061 CALL R5 2 - 0x8C14031E, // 0062 GETMET R5 R1 K30 - 0x581C0014, // 0063 LDCONST R7 K20 - 0x58200015, // 0064 LDCONST R8 K21 - 0x88240111, // 0065 GETMBR R9 R0 K17 - 0x88280112, // 0066 GETMBR R10 R0 K18 - 0x5C2C0800, // 0067 MOVE R11 R4 - 0x7C140C00, // 0068 CALL R5 6 - 0x58100021, // 0069 LDCONST R4 K33 - 0xB8162E00, // 006A GETNGBL R5 K23 - 0x001A3804, // 006B ADD R6 K28 R4 - 0x581C001D, // 006C LDCONST R7 K29 - 0x7C140400, // 006D CALL R5 2 - 0x8C14031E, // 006E GETMET R5 R1 K30 - 0x581C0014, // 006F LDCONST R7 K20 - 0x58200015, // 0070 LDCONST R8 K21 - 0x88240111, // 0071 GETMBR R9 R0 K17 - 0x88280112, // 0072 GETMBR R10 R0 K18 - 0x5C2C0800, // 0073 MOVE R11 R4 - 0x7C140C00, // 0074 CALL R5 6 - 0x88100122, // 0075 GETMBR R4 R0 K34 - 0x78120053, // 0076 JMPF R4 #00CB - 0x8C100313, // 0077 GETMET R4 R1 K19 - 0x58180014, // 0078 LDCONST R6 K20 - 0x581C0015, // 0079 LDCONST R7 K21 - 0x542215A3, // 007A LDINT R8 5540 - 0x5C240600, // 007B MOVE R9 R3 - 0x8828010E, // 007C GETMBR R10 R0 K14 - 0x882C0122, // 007D GETMBR R11 R0 K34 - 0x7C100E00, // 007E CALL R4 7 - 0x50100200, // 007F LDBOOL R4 1 0 - 0x90024604, // 0080 SETMBR R0 K35 R4 - 0xB8122E00, // 0081 GETNGBL R4 K23 - 0x60140018, // 0082 GETGBL R5 G24 - 0x58180024, // 0083 LDCONST R6 K36 - 0x581C0025, // 0084 LDCONST R7 K37 - 0x8820010E, // 0085 GETMBR R8 R0 K14 - 0x88240122, // 0086 GETMBR R9 R0 K34 - 0x7C140800, // 0087 CALL R5 4 - 0x5818001D, // 0088 LDCONST R6 K29 - 0x7C100400, // 0089 CALL R4 2 - 0x60100008, // 008A GETGBL R4 G8 - 0x88140107, // 008B GETMBR R5 R0 K7 - 0x541A0FFE, // 008C LDINT R6 4095 - 0x2C140A06, // 008D AND R5 R5 R6 - 0x7C100200, // 008E CALL R4 1 - 0x00123604, // 008F ADD R4 K27 R4 - 0xB8162E00, // 0090 GETNGBL R5 K23 - 0x001A3804, // 0091 ADD R6 K28 R4 - 0x581C001D, // 0092 LDCONST R7 K29 - 0x7C140400, // 0093 CALL R5 2 - 0x8C14031E, // 0094 GETMET R5 R1 K30 - 0x581C0014, // 0095 LDCONST R7 K20 - 0x58200015, // 0096 LDCONST R8 K21 - 0x8824010E, // 0097 GETMBR R9 R0 K14 - 0x88280122, // 0098 GETMBR R10 R0 K34 - 0x5C2C0800, // 0099 MOVE R11 R4 - 0x7C140C00, // 009A CALL R5 6 - 0x60140008, // 009B GETGBL R5 G8 - 0x88180107, // 009C GETMBR R6 R0 K7 - 0x541E0EFF, // 009D LDINT R7 3840 - 0x2C180C07, // 009E AND R6 R6 R7 - 0x541E0007, // 009F LDINT R7 8 - 0x3C180C07, // 00A0 SHR R6 R6 R7 - 0x7C140200, // 00A1 CALL R5 1 - 0x00163E05, // 00A2 ADD R5 K31 R5 - 0x5C100A00, // 00A3 MOVE R4 R5 - 0xB8162E00, // 00A4 GETNGBL R5 K23 - 0x001A3804, // 00A5 ADD R6 K28 R4 - 0x581C001D, // 00A6 LDCONST R7 K29 - 0x7C140400, // 00A7 CALL R5 2 - 0x8C14031E, // 00A8 GETMET R5 R1 K30 - 0x581C0014, // 00A9 LDCONST R7 K20 - 0x58200015, // 00AA LDCONST R8 K21 - 0x8824010E, // 00AB GETMBR R9 R0 K14 - 0x88280122, // 00AC GETMBR R10 R0 K34 - 0x5C2C0800, // 00AD MOVE R11 R4 - 0x7C140C00, // 00AE CALL R5 6 - 0x60140008, // 00AF GETGBL R5 G8 - 0x88180104, // 00B0 GETMBR R6 R0 K4 - 0x7C140200, // 00B1 CALL R5 1 - 0x00164005, // 00B2 ADD R5 K32 R5 - 0x5C100A00, // 00B3 MOVE R4 R5 - 0xB8162E00, // 00B4 GETNGBL R5 K23 - 0x001A3804, // 00B5 ADD R6 K28 R4 - 0x581C001D, // 00B6 LDCONST R7 K29 - 0x7C140400, // 00B7 CALL R5 2 - 0x8C14031E, // 00B8 GETMET R5 R1 K30 - 0x581C0014, // 00B9 LDCONST R7 K20 - 0x58200015, // 00BA LDCONST R8 K21 - 0x8824010E, // 00BB GETMBR R9 R0 K14 - 0x88280122, // 00BC GETMBR R10 R0 K34 - 0x5C2C0800, // 00BD MOVE R11 R4 - 0x7C140C00, // 00BE CALL R5 6 - 0x58100021, // 00BF LDCONST R4 K33 - 0xB8162E00, // 00C0 GETNGBL R5 K23 - 0x001A3804, // 00C1 ADD R6 K28 R4 - 0x581C001D, // 00C2 LDCONST R7 K29 - 0x7C140400, // 00C3 CALL R5 2 - 0x8C14031E, // 00C4 GETMET R5 R1 K30 - 0x581C0014, // 00C5 LDCONST R7 K20 - 0x58200015, // 00C6 LDCONST R8 K21 - 0x8824010E, // 00C7 GETMBR R9 R0 K14 - 0x88280122, // 00C8 GETMBR R10 R0 K34 - 0x5C2C0800, // 00C9 MOVE R11 R4 - 0x7C140C00, // 00CA CALL R5 6 - 0xA8040001, // 00CB EXBLK 1 1 - 0x7002000F, // 00CC JMP #00DD - 0xAC100002, // 00CD CATCH R4 0 2 - 0x7002000C, // 00CE JMP #00DC - 0xB81A2E00, // 00CF GETNGBL R6 K23 - 0x601C0008, // 00D0 GETGBL R7 G8 - 0x5C200800, // 00D1 MOVE R8 R4 - 0x7C1C0200, // 00D2 CALL R7 1 - 0x001E4C07, // 00D3 ADD R7 K38 R7 - 0x001C0F27, // 00D4 ADD R7 R7 K39 - 0x60200008, // 00D5 GETGBL R8 G8 - 0x5C240A00, // 00D6 MOVE R9 R5 - 0x7C200200, // 00D7 CALL R8 1 - 0x001C0E08, // 00D8 ADD R7 R7 R8 - 0x5820001A, // 00D9 LDCONST R8 K26 - 0x7C180400, // 00DA CALL R6 2 - 0x70020000, // 00DB JMP #00DD - 0xB0080000, // 00DC RAISE 2 R0 R0 - 0x80000000, // 00DD RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_sensors_list -********************************************************************/ -be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(Temperature), - /* K3 */ be_nested_str_weak(_X23Temperature), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(temperature), - /* K7 */ be_nested_str_weak(filter), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(Pressure), - /* K10 */ be_nested_str_weak(_X23Pressure), - /* K11 */ be_nested_str_weak(pressure), - /* K12 */ be_nested_str_weak(Illuminance), - /* K13 */ be_nested_str_weak(_X23Illuminance), - /* K14 */ be_nested_str_weak(illuminance), - /* K15 */ be_nested_str_weak(Humidity), - /* K16 */ be_nested_str_weak(_X23Humidity), - /* K17 */ be_nested_str_weak(humidity), - }), - be_str_weak(autoconf_sensors_list), - &be_const_str_solidified, - ( &(const binstruction[119]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100100, // 0003 GETMET R4 R0 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020013, // 0007 EXBLK 0 #001C - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x94140204, // 000A GETIDX R5 R1 R4 - 0x6018000F, // 000B GETGBL R6 G15 - 0x5C1C0A00, // 000C MOVE R7 R5 - 0x60200013, // 000D GETGBL R8 G19 - 0x7C180400, // 000E CALL R6 2 - 0x781A000A, // 000F JMPF R6 #001B - 0x8C180B01, // 0010 GETMET R6 R5 K1 - 0x58200002, // 0011 LDCONST R8 K2 - 0x7C180400, // 0012 CALL R6 2 - 0x781A0006, // 0013 JMPF R6 #001B - 0x00180903, // 0014 ADD R6 R4 K3 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x60240013, // 0016 GETGBL R9 G19 - 0x7C240000, // 0017 CALL R9 0 - 0x98260B06, // 0018 SETIDX R9 K5 K6 - 0x98260E06, // 0019 SETIDX R9 K7 R6 - 0x7C1C0400, // 001A CALL R7 2 - 0x7001FFEB, // 001B JMP #0008 - 0x580C0008, // 001C LDCONST R3 K8 - 0xAC0C0200, // 001D CATCH R3 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x600C0010, // 001F GETGBL R3 G16 - 0x8C100100, // 0020 GETMET R4 R0 K0 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x7C0C0200, // 0023 CALL R3 1 - 0xA8020013, // 0024 EXBLK 0 #0039 - 0x5C100600, // 0025 MOVE R4 R3 - 0x7C100000, // 0026 CALL R4 0 - 0x94140204, // 0027 GETIDX R5 R1 R4 - 0x6018000F, // 0028 GETGBL R6 G15 - 0x5C1C0A00, // 0029 MOVE R7 R5 - 0x60200013, // 002A GETGBL R8 G19 - 0x7C180400, // 002B CALL R6 2 - 0x781A000A, // 002C JMPF R6 #0038 - 0x8C180B01, // 002D GETMET R6 R5 K1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C180400, // 002F CALL R6 2 - 0x781A0006, // 0030 JMPF R6 #0038 - 0x0018090A, // 0031 ADD R6 R4 K10 - 0x8C1C0504, // 0032 GETMET R7 R2 K4 - 0x60240013, // 0033 GETGBL R9 G19 - 0x7C240000, // 0034 CALL R9 0 - 0x98260B0B, // 0035 SETIDX R9 K5 K11 - 0x98260E06, // 0036 SETIDX R9 K7 R6 - 0x7C1C0400, // 0037 CALL R7 2 - 0x7001FFEB, // 0038 JMP #0025 - 0x580C0008, // 0039 LDCONST R3 K8 - 0xAC0C0200, // 003A CATCH R3 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x600C0010, // 003C GETGBL R3 G16 - 0x8C100100, // 003D GETMET R4 R0 K0 - 0x5C180200, // 003E MOVE R6 R1 - 0x7C100400, // 003F CALL R4 2 - 0x7C0C0200, // 0040 CALL R3 1 - 0xA8020013, // 0041 EXBLK 0 #0056 - 0x5C100600, // 0042 MOVE R4 R3 - 0x7C100000, // 0043 CALL R4 0 - 0x94140204, // 0044 GETIDX R5 R1 R4 - 0x6018000F, // 0045 GETGBL R6 G15 - 0x5C1C0A00, // 0046 MOVE R7 R5 - 0x60200013, // 0047 GETGBL R8 G19 - 0x7C180400, // 0048 CALL R6 2 - 0x781A000A, // 0049 JMPF R6 #0055 - 0x8C180B01, // 004A GETMET R6 R5 K1 - 0x5820000C, // 004B LDCONST R8 K12 - 0x7C180400, // 004C CALL R6 2 - 0x781A0006, // 004D JMPF R6 #0055 - 0x0018090D, // 004E ADD R6 R4 K13 - 0x8C1C0504, // 004F GETMET R7 R2 K4 - 0x60240013, // 0050 GETGBL R9 G19 - 0x7C240000, // 0051 CALL R9 0 - 0x98260B0E, // 0052 SETIDX R9 K5 K14 - 0x98260E06, // 0053 SETIDX R9 K7 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x7001FFEB, // 0055 JMP #0042 - 0x580C0008, // 0056 LDCONST R3 K8 - 0xAC0C0200, // 0057 CATCH R3 1 0 - 0xB0080000, // 0058 RAISE 2 R0 R0 - 0x600C0010, // 0059 GETGBL R3 G16 - 0x8C100100, // 005A GETMET R4 R0 K0 - 0x5C180200, // 005B MOVE R6 R1 - 0x7C100400, // 005C CALL R4 2 - 0x7C0C0200, // 005D CALL R3 1 - 0xA8020013, // 005E EXBLK 0 #0073 - 0x5C100600, // 005F MOVE R4 R3 - 0x7C100000, // 0060 CALL R4 0 - 0x94140204, // 0061 GETIDX R5 R1 R4 - 0x6018000F, // 0062 GETGBL R6 G15 - 0x5C1C0A00, // 0063 MOVE R7 R5 - 0x60200013, // 0064 GETGBL R8 G19 - 0x7C180400, // 0065 CALL R6 2 - 0x781A000A, // 0066 JMPF R6 #0072 - 0x8C180B01, // 0067 GETMET R6 R5 K1 - 0x5820000F, // 0068 LDCONST R8 K15 - 0x7C180400, // 0069 CALL R6 2 - 0x781A0006, // 006A JMPF R6 #0072 - 0x00180910, // 006B ADD R6 R4 K16 - 0x8C1C0504, // 006C GETMET R7 R2 K4 - 0x60240013, // 006D GETGBL R9 G19 - 0x7C240000, // 006E CALL R9 0 - 0x98260B11, // 006F SETIDX R9 K5 K17 - 0x98260E06, // 0070 SETIDX R9 K7 R6 - 0x7C1C0400, // 0071 CALL R7 2 - 0x7001FFEB, // 0072 JMP #005F - 0x580C0008, // 0073 LDCONST R3 K8 - 0xAC0C0200, // 0074 CATCH R3 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040400, // 0076 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_expansion -********************************************************************/ -be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(start), - /* K6 */ be_nested_str_weak(is_direct), - /* K7 */ be_nested_str_weak(next_attribute), - /* K8 */ be_nested_str_weak(get_pi), - }), - be_str_weak(process_attribute_expansion), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 - 0x88140302, // 0002 GETMBR R5 R1 K2 - 0xB81A0600, // 0003 GETNGBL R6 K3 - 0x8C180D04, // 0004 GETMET R6 R6 K4 - 0x5C200000, // 0005 MOVE R8 R0 - 0x7C180400, // 0006 CALL R6 2 - 0x8C1C0D05, // 0007 GETMET R7 R6 K5 - 0x5C240600, // 0008 MOVE R9 R3 - 0x5C280800, // 0009 MOVE R10 R4 - 0x5C2C0A00, // 000A MOVE R11 R5 - 0x7C1C0800, // 000B CALL R7 4 - 0x8C1C0D06, // 000C GETMET R7 R6 K6 - 0x7C1C0200, // 000D CALL R7 1 - 0x4C200000, // 000E LDNIL R8 - 0x8C240D07, // 000F GETMET R9 R6 K7 - 0x7C240200, // 0010 CALL R9 1 - 0x5C201200, // 0011 MOVE R8 R9 - 0x4C280000, // 0012 LDNIL R10 - 0x2024120A, // 0013 NE R9 R9 R10 - 0x78260005, // 0014 JMPF R9 #001B - 0x5C240400, // 0015 MOVE R9 R2 - 0x8C280D08, // 0016 GETMET R10 R6 K8 - 0x7C280200, // 0017 CALL R10 1 - 0x5C2C1000, // 0018 MOVE R11 R8 - 0x7C240400, // 0019 CALL R9 2 - 0x7001FFF3, // 001A JMP #000F - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop_basic_commissioning -********************************************************************/ -be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(is_root_commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(publish_result), - /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D), - /* K4 */ be_nested_str_weak(Matter), - /* K5 */ be_nested_str_weak(commissioning_open), - /* K6 */ be_nested_str_weak(mdns_remove_PASE), - /* K7 */ be_nested_str_weak(commissioning_iterations), - /* K8 */ be_nested_str_weak(commissioning_discriminator), - /* K9 */ be_nested_str_weak(commissioning_salt), - /* K10 */ be_nested_str_weak(commissioning_w0), - /* K11 */ be_nested_str_weak(commissioning_L), - /* K12 */ be_nested_str_weak(commissioning_admin_fabric), - }), - be_str_weak(stop_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x8C080100, // 0001 GETMET R2 R0 K0 - 0x7C080200, // 0002 CALL R2 1 - 0x780A0004, // 0003 JMPF R2 #0009 - 0xB80A0200, // 0004 GETNGBL R2 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x58100003, // 0006 LDCONST R4 K3 - 0x58140004, // 0007 LDCONST R5 K4 - 0x7C080600, // 0008 CALL R2 3 - 0x90020A01, // 0009 SETMBR R0 K5 R1 - 0x8C080106, // 000A GETMET R2 R0 K6 - 0x7C080200, // 000B CALL R2 1 - 0x90020E01, // 000C SETMBR R0 K7 R1 - 0x90021001, // 000D SETMBR R0 K8 R1 - 0x90021201, // 000E SETMBR R0 K9 R1 - 0x90021401, // 000F SETMBR R0 K10 R1 - 0x90021601, // 0010 SETMBR R0 K11 R1 - 0x90021801, // 0011 SETMBR R0 K12 R1 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clean_remotes -********************************************************************/ -be_local_closure(class_Matter_Device_clean_remotes, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(http_remotes), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(plugins), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(http_remote), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(keys), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(close), - /* K16 */ be_nested_str_weak(remove), - }), - be_str_weak(clean_remotes), - &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x780A004B, // 0002 JMPF R2 #004F - 0x60080013, // 0003 GETGBL R2 G19 - 0x7C080000, // 0004 CALL R2 0 - 0x600C0010, // 0005 GETGBL R3 G16 - 0x88100101, // 0006 GETMBR R4 R0 K1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020003, // 0008 EXBLK 0 #000D - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x98080902, // 000B SETIDX R2 R4 K2 - 0x7001FFFB, // 000C JMP #0009 - 0x580C0003, // 000D LDCONST R3 K3 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100104, // 0011 GETMBR R4 R0 K4 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA802000F, // 0013 EXBLK 0 #0024 - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x8C140305, // 0016 GETMET R5 R1 K5 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200006, // 0018 LDCONST R8 K6 - 0x7C140600, // 0019 CALL R5 3 - 0x4C180000, // 001A LDNIL R6 - 0x20180A06, // 001B NE R6 R5 R6 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180507, // 001D GETMET R6 R2 K7 - 0x5C200A00, // 001E MOVE R8 R5 - 0x58240002, // 001F LDCONST R9 K2 - 0x7C180600, // 0020 CALL R6 3 - 0x00180D08, // 0021 ADD R6 R6 K8 - 0x98080A06, // 0022 SETIDX R2 R5 R6 - 0x7001FFEF, // 0023 JMP #0014 - 0x580C0003, // 0024 LDCONST R3 K3 - 0xAC0C0200, // 0025 CATCH R3 1 0 - 0xB0080000, // 0026 RAISE 2 R0 R0 - 0x600C0012, // 0027 GETGBL R3 G18 - 0x7C0C0000, // 0028 CALL R3 0 - 0x60100010, // 0029 GETGBL R4 G16 - 0x8C140509, // 002A GETMET R5 R2 K9 - 0x7C140200, // 002B CALL R5 1 - 0x7C100200, // 002C CALL R4 1 - 0xA8020008, // 002D EXBLK 0 #0037 - 0x5C140800, // 002E MOVE R5 R4 - 0x7C140000, // 002F CALL R5 0 - 0x94180405, // 0030 GETIDX R6 R2 R5 - 0x1C180D02, // 0031 EQ R6 R6 K2 - 0x781A0002, // 0032 JMPF R6 #0036 - 0x8C18070A, // 0033 GETMET R6 R3 K10 - 0x5C200A00, // 0034 MOVE R8 R5 - 0x7C180400, // 0035 CALL R6 2 - 0x7001FFF6, // 0036 JMP #002E - 0x58100003, // 0037 LDCONST R4 K3 - 0xAC100200, // 0038 CATCH R4 1 0 - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x60100010, // 003A GETGBL R4 G16 - 0x5C140600, // 003B MOVE R5 R3 - 0x7C100200, // 003C CALL R4 1 - 0xA802000D, // 003D EXBLK 0 #004C - 0x5C140800, // 003E MOVE R5 R4 - 0x7C140000, // 003F CALL R5 0 - 0xB81A1600, // 0040 GETNGBL R6 K11 - 0x881C0B0D, // 0041 GETMBR R7 R5 K13 - 0x001E1807, // 0042 ADD R7 K12 R7 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x7C180400, // 0044 CALL R6 2 - 0x8C180B0F, // 0045 GETMET R6 R5 K15 - 0x7C180200, // 0046 CALL R6 1 - 0x88180101, // 0047 GETMBR R6 R0 K1 - 0x8C180D10, // 0048 GETMET R6 R6 K16 - 0x88200B0D, // 0049 GETMBR R8 R5 K13 - 0x7C180400, // 004A CALL R6 2 - 0x7001FFF1, // 004B JMP #003E - 0x58100003, // 004C LDCONST R4 K3 - 0xAC100200, // 004D CATCH R4 1 0 - 0xB0080000, // 004E RAISE 2 R0 R0 - 0x80000000, // 004F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_Matter_Device_init, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - /* K4 */ be_nested_str_weak(matter_start), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0004, // 0006 LDCONST R3 K4 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(get_option), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(MATTER_OPTION), - /* K5 */ be_nested_str_weak(UI), - /* K6 */ be_nested_str_weak(profiler), - /* K7 */ be_nested_str_weak(Profiler), - /* K8 */ be_nested_str_weak(started), - /* K9 */ be_nested_str_weak(tick), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(plugins_config_remotes), - /* K14 */ be_nested_str_weak(next_ep), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(ipv4only), - /* K17 */ be_nested_str_weak(disable_bridge_mode), - /* K18 */ be_nested_str_weak(load_param), - /* K19 */ be_nested_str_weak(sessions), - /* K20 */ be_nested_str_weak(Session_Store), - /* K21 */ be_nested_str_weak(load_fabrics), - /* K22 */ be_nested_str_weak(message_handler), - /* K23 */ be_nested_str_weak(MessageHandler), - /* K24 */ be_nested_str_weak(events), - /* K25 */ be_nested_str_weak(EventHandler), - /* K26 */ be_nested_str_weak(ui), - /* K27 */ be_nested_str_weak(wifi), - /* K28 */ be_nested_str_weak(up), - /* K29 */ be_nested_str_weak(eth), - /* K30 */ be_nested_str_weak(start), - /* K31 */ be_nested_str_weak(add_rule), - /* K32 */ be_nested_str_weak(Wifi_X23Connected), - /* K33 */ be_nested_str_weak(matter_start), - /* K34 */ be_nested_str_weak(Eth_X23Connected), - /* K35 */ be_nested_str_weak(_init_basic_commissioning), - /* K36 */ be_nested_str_weak(add_driver), - /* K37 */ be_nested_str_weak(register_commands), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[102]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100904, // 0004 GETMBR R4 R4 K4 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0004, // 0006 JMPT R2 #000C - 0xB80A0600, // 0007 GETNGBL R2 K3 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x5C100000, // 0009 MOVE R4 R0 - 0x7C080400, // 000A CALL R2 2 - 0x80000400, // 000B RET 0 - 0xB80A0600, // 000C GETNGBL R2 K3 - 0xB80E0600, // 000D GETNGBL R3 K3 - 0x8C0C0707, // 000E GETMET R3 R3 K7 - 0x7C0C0200, // 000F CALL R3 1 - 0x900A0C03, // 0010 SETMBR R2 K6 R3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x90021002, // 0012 SETMBR R0 K8 R2 - 0x9002130A, // 0013 SETMBR R0 K9 K10 - 0x60080012, // 0014 GETGBL R2 G18 - 0x7C080000, // 0015 CALL R2 0 - 0x90021602, // 0016 SETMBR R0 K11 R2 - 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90021802, // 0018 SETMBR R0 K12 R2 - 0x60080013, // 0019 GETGBL R2 G19 - 0x7C080000, // 001A CALL R2 0 - 0x90021A02, // 001B SETMBR R0 K13 R2 - 0x90021D0F, // 001C SETMBR R0 K14 K15 - 0x50080000, // 001D LDBOOL R2 0 0 - 0x90022002, // 001E SETMBR R0 K16 R2 - 0x50080000, // 001F LDBOOL R2 0 0 - 0x90022202, // 0020 SETMBR R0 K17 R2 - 0x8C080112, // 0021 GETMET R2 R0 K18 - 0x7C080200, // 0022 CALL R2 1 - 0xB80A0600, // 0023 GETNGBL R2 K3 - 0x8C080514, // 0024 GETMET R2 R2 K20 - 0x5C100000, // 0025 MOVE R4 R0 - 0x7C080400, // 0026 CALL R2 2 - 0x90022602, // 0027 SETMBR R0 K19 R2 - 0x88080113, // 0028 GETMBR R2 R0 K19 - 0x8C080515, // 0029 GETMET R2 R2 K21 - 0x7C080200, // 002A CALL R2 1 - 0xB80A0600, // 002B GETNGBL R2 K3 - 0x8C080517, // 002C GETMET R2 R2 K23 - 0x5C100000, // 002D MOVE R4 R0 - 0x7C080400, // 002E CALL R2 2 - 0x90022C02, // 002F SETMBR R0 K22 R2 - 0xB80A0600, // 0030 GETNGBL R2 K3 - 0x8C080519, // 0031 GETMET R2 R2 K25 - 0x5C100000, // 0032 MOVE R4 R0 - 0x7C080400, // 0033 CALL R2 2 - 0x90023002, // 0034 SETMBR R0 K24 R2 - 0xB80A0600, // 0035 GETNGBL R2 K3 - 0x8C080505, // 0036 GETMET R2 R2 K5 - 0x5C100000, // 0037 MOVE R4 R0 - 0x7C080400, // 0038 CALL R2 2 - 0x90023402, // 0039 SETMBR R0 K26 R2 - 0xB80A0200, // 003A GETNGBL R2 K1 - 0x8C08051B, // 003B GETMET R2 R2 K27 - 0x7C080200, // 003C CALL R2 1 - 0x9408051C, // 003D GETIDX R2 R2 K28 - 0x740A0004, // 003E JMPT R2 #0044 - 0xB80A0200, // 003F GETNGBL R2 K1 - 0x8C08051D, // 0040 GETMET R2 R2 K29 - 0x7C080200, // 0041 CALL R2 1 - 0x9408051C, // 0042 GETIDX R2 R2 K28 - 0x780A0001, // 0043 JMPF R2 #0046 - 0x8C08011E, // 0044 GETMET R2 R0 K30 - 0x7C080200, // 0045 CALL R2 1 - 0xB80A0200, // 0046 GETNGBL R2 K1 - 0x8C08051B, // 0047 GETMET R2 R2 K27 - 0x7C080200, // 0048 CALL R2 1 - 0x9408051C, // 0049 GETIDX R2 R2 K28 - 0x740A0005, // 004A JMPT R2 #0051 - 0xB80A0200, // 004B GETNGBL R2 K1 - 0x8C08051F, // 004C GETMET R2 R2 K31 - 0x58100020, // 004D LDCONST R4 K32 - 0x84140000, // 004E CLOSURE R5 P0 - 0x58180021, // 004F LDCONST R6 K33 - 0x7C080800, // 0050 CALL R2 4 - 0xB80A0200, // 0051 GETNGBL R2 K1 - 0x8C08051D, // 0052 GETMET R2 R2 K29 - 0x7C080200, // 0053 CALL R2 1 - 0x9408051C, // 0054 GETIDX R2 R2 K28 - 0x740A0005, // 0055 JMPT R2 #005C - 0xB80A0200, // 0056 GETNGBL R2 K1 - 0x8C08051F, // 0057 GETMET R2 R2 K31 - 0x58100022, // 0058 LDCONST R4 K34 - 0x84140001, // 0059 CLOSURE R5 P1 - 0x58180021, // 005A LDCONST R6 K33 - 0x7C080800, // 005B CALL R2 4 - 0x8C080123, // 005C GETMET R2 R0 K35 - 0x7C080200, // 005D CALL R2 1 - 0xB80A0200, // 005E GETNGBL R2 K1 - 0x8C080524, // 005F GETMET R2 R2 K36 - 0x5C100000, // 0060 MOVE R4 R0 - 0x7C080400, // 0061 CALL R2 2 - 0x8C080125, // 0062 GETMET R2 R0 K37 - 0x7C080200, // 0063 CALL R2 1 - 0xA0000000, // 0064 CLOSE R0 - 0x80000000, // 0065 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery -********************************************************************/ -be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(eth), - /* K9 */ be_nested_str_weak(find), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(remove_service), - /* K15 */ be_nested_str_weak(_matter), - /* K16 */ be_nested_str_weak(_tcp), - /* K17 */ be_nested_str_weak(hostname_eth), - /* K18 */ be_nested_str_weak(wifi), - /* K19 */ be_nested_str_weak(hostname_wifi), - /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K21 */ be_nested_str_weak(_X7C), - /* K22 */ be_const_int(2), - }), - be_str_weak(mdns_remove_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x8C180D08, // 0011 GETMET R6 R6 K8 - 0x7C180200, // 0012 CALL R6 1 - 0x8C180D09, // 0013 GETMET R6 R6 K9 - 0x5820000A, // 0014 LDCONST R8 K10 - 0x7C180400, // 0015 CALL R6 2 - 0x781A000D, // 0016 JMPF R6 #0025 - 0xB81A1600, // 0017 GETNGBL R6 K11 - 0x601C0018, // 0018 GETGBL R7 G24 - 0x5820000C, // 0019 LDCONST R8 K12 - 0x58240008, // 001A LDCONST R9 K8 - 0x5C280A00, // 001B MOVE R10 R5 - 0x7C1C0600, // 001C CALL R7 3 - 0x5820000D, // 001D LDCONST R8 K13 - 0x7C180400, // 001E CALL R6 2 - 0x8C18050E, // 001F GETMET R6 R2 K14 - 0x5820000F, // 0020 LDCONST R8 K15 - 0x58240010, // 0021 LDCONST R9 K16 - 0x5C280A00, // 0022 MOVE R10 R5 - 0x882C0111, // 0023 GETMBR R11 R0 K17 - 0x7C180A00, // 0024 CALL R6 5 - 0xB81A0E00, // 0025 GETNGBL R6 K7 - 0x8C180D12, // 0026 GETMET R6 R6 K18 - 0x7C180200, // 0027 CALL R6 1 - 0x8C180D09, // 0028 GETMET R6 R6 K9 - 0x5820000A, // 0029 LDCONST R8 K10 - 0x7C180400, // 002A CALL R6 2 - 0x781A000D, // 002B JMPF R6 #003A - 0xB81A1600, // 002C GETNGBL R6 K11 - 0x601C0018, // 002D GETGBL R7 G24 - 0x5820000C, // 002E LDCONST R8 K12 - 0x58240012, // 002F LDCONST R9 K18 - 0x5C280A00, // 0030 MOVE R10 R5 - 0x7C1C0600, // 0031 CALL R7 3 - 0x5820000D, // 0032 LDCONST R8 K13 - 0x7C180400, // 0033 CALL R6 2 - 0x8C18050E, // 0034 GETMET R6 R2 K14 - 0x5820000F, // 0035 LDCONST R8 K15 - 0x58240010, // 0036 LDCONST R9 K16 - 0x5C280A00, // 0037 MOVE R10 R5 - 0x882C0113, // 0038 GETMBR R11 R0 K19 - 0x7C180A00, // 0039 CALL R6 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC0C0002, // 003C CATCH R3 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8161600, // 003E GETNGBL R5 K11 - 0x60180008, // 003F GETGBL R6 G8 - 0x5C1C0600, // 0040 MOVE R7 R3 - 0x7C180200, // 0041 CALL R6 1 - 0x001A2806, // 0042 ADD R6 K20 R6 - 0x00180D15, // 0043 ADD R6 R6 K21 - 0x601C0008, // 0044 GETGBL R7 G8 - 0x5C200800, // 0045 MOVE R8 R4 - 0x7C1C0200, // 0046 CALL R7 1 - 0x00180C07, // 0047 ADD R6 R6 R7 - 0x581C0016, // 0048 LDCONST R7 K22 - 0x7C140400, // 0049 CALL R5 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _start_udp -********************************************************************/ -be_local_closure(class_Matter_Device__start_udp, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_received), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(UDPServer), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(start), - }), - be_str_weak(_start_udp), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x600C0008, // 0008 GETGBL R3 G8 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C0C0200, // 000A CALL R3 1 - 0x000E0403, // 000B ADD R3 K2 R3 - 0x58100003, // 000C LDCONST R4 K3 - 0x7C080400, // 000D CALL R2 2 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x8C080505, // 000F GETMET R2 R2 K5 - 0x5C100000, // 0010 MOVE R4 R0 - 0x58140006, // 0011 LDCONST R5 K6 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C080800, // 0013 CALL R2 4 - 0x90020002, // 0014 SETMBR R0 K0 R2 - 0x88080100, // 0015 GETMBR R2 R0 K0 - 0x8C080507, // 0016 GETMET R2 R2 K7 - 0x84100000, // 0017 CLOSURE R4 P0 - 0x7C080400, // 0018 CALL R2 2 - 0xA0000000, // 0019 CLOSE R0 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: adjust_next_ep -********************************************************************/ -be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(next_ep), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(adjust_next_ep), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000A, // 0005 EXBLK 0 #0011 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x600C0009, // 0008 GETGBL R3 G9 - 0x5C100400, // 0009 MOVE R4 R2 - 0x7C0C0200, // 000A CALL R3 1 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x28100604, // 000C GE R4 R3 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x00100703, // 000E ADD R4 R3 K3 - 0x90020404, // 000F SETMBR R0 K2 R4 - 0x7001FFF4, // 0010 JMP #0006 - 0x58040004, // 0011 LDCONST R1 K4 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _trigger_read_sensors -********************************************************************/ -be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(read_sensors), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), - /* K7 */ be_nested_str_weak(load), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(plugins), - /* K10 */ be_nested_str_weak(parse_sensors), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), - }), - be_str_weak(_trigger_read_sensors), - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x7C080200, // 0003 CALL R2 1 - 0xB80E0200, // 0004 GETNGBL R3 K1 - 0x8C0C0703, // 0005 GETMET R3 R3 K3 - 0x58140004, // 0006 LDCONST R5 K4 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0006, // 0008 JMPF R3 #0010 - 0xB80E0A00, // 0009 GETNGBL R3 K5 - 0x60100008, // 000A GETGBL R4 G8 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C100200, // 000C CALL R4 1 - 0x00120C04, // 000D ADD R4 K6 R4 - 0x58140004, // 000E LDCONST R5 K4 - 0x7C0C0400, // 000F CALL R3 2 - 0x4C0C0000, // 0010 LDNIL R3 - 0x1C0C0403, // 0011 EQ R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x80000600, // 0013 RET 0 - 0x8C0C0307, // 0014 GETMET R3 R1 K7 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x4C100000, // 0017 LDNIL R4 - 0x20100604, // 0018 NE R4 R3 R4 - 0x7812000D, // 0019 JMPF R4 #0028 - 0x58100008, // 001A LDCONST R4 K8 - 0x6014000C, // 001B GETGBL R5 G12 - 0x88180109, // 001C GETMBR R6 R0 K9 - 0x7C140200, // 001D CALL R5 1 - 0x14140805, // 001E LT R5 R4 R5 - 0x78160006, // 001F JMPF R5 #0027 - 0x88140109, // 0020 GETMBR R5 R0 K9 - 0x94140A04, // 0021 GETIDX R5 R5 R4 - 0x8C140B0A, // 0022 GETMET R5 R5 K10 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C140400, // 0024 CALL R5 2 - 0x0010090B, // 0025 ADD R4 R4 K11 - 0x7001FFF3, // 0026 JMP #001B - 0x70020006, // 0027 JMP #002F - 0xB8120A00, // 0028 GETNGBL R4 K5 - 0x60140008, // 0029 GETGBL R5 G8 - 0x5C180400, // 002A MOVE R6 R2 - 0x7C140200, // 002B CALL R5 1 - 0x00161805, // 002C ADD R5 K12 R5 - 0x58180004, // 002D LDCONST R6 K4 - 0x7C100400, // 002E CALL R4 2 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _instantiate_plugins_from_config -********************************************************************/ -be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ - be_nested_proto( - 17, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(k2l_num), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Plugin_Root), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), - /* K10 */ be_nested_str_weak(root), - /* K11 */ be_nested_str_weak(), - /* K12 */ be_nested_str_weak(Plugin_Aggregator), - /* K13 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K14 */ be_nested_str_weak(aggregator), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(type), - /* K17 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), - /* K20 */ be_nested_str_weak(plugins_classes), - /* K21 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K22 */ be_nested_str_weak(_X27_X20skipping), - /* K23 */ be_nested_str_weak(conf_to_log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_nested_str_weak(stop_iteration), - /* K27 */ be_nested_str_weak(tasmota), - /* K28 */ be_nested_str_weak(publish_result), - /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), - /* K30 */ be_nested_str_weak(Matter), - }), - be_str_weak(_instantiate_plugins_from_config), - &be_const_str_solidified, - ( &(const binstruction[146]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0xB8160600, // 0005 GETNGBL R5 K3 - 0x8C140B04, // 0006 GETMET R5 R5 K4 - 0x5C1C0000, // 0007 MOVE R7 R0 - 0x58200005, // 0008 LDCONST R8 K5 - 0x60240013, // 0009 GETGBL R9 G19 - 0x7C240000, // 000A CALL R9 0 - 0x7C140800, // 000B CALL R5 4 - 0x7C0C0400, // 000C CALL R3 2 - 0xB80E0C00, // 000D GETNGBL R3 K6 - 0x58100007, // 000E LDCONST R4 K7 - 0x58140008, // 000F LDCONST R5 K8 - 0x7C0C0400, // 0010 CALL R3 2 - 0xB80E0C00, // 0011 GETNGBL R3 K6 - 0x60100018, // 0012 GETGBL R4 G24 - 0x58140009, // 0013 LDCONST R5 K9 - 0x58180005, // 0014 LDCONST R6 K5 - 0x581C000A, // 0015 LDCONST R7 K10 - 0x5820000B, // 0016 LDCONST R8 K11 - 0x7C100800, // 0017 CALL R4 4 - 0x58140008, // 0018 LDCONST R5 K8 - 0x7C0C0400, // 0019 CALL R3 2 - 0x880C0101, // 001A GETMBR R3 R0 K1 - 0x8C0C0702, // 001B GETMET R3 R3 K2 - 0xB8160600, // 001C GETNGBL R5 K3 - 0x8C140B0C, // 001D GETMET R5 R5 K12 - 0x5C1C0000, // 001E MOVE R7 R0 - 0xB8220600, // 001F GETNGBL R8 K3 - 0x8820110D, // 0020 GETMBR R8 R8 K13 - 0x60240013, // 0021 GETGBL R9 G19 - 0x7C240000, // 0022 CALL R9 0 - 0x7C140800, // 0023 CALL R5 4 - 0x7C0C0400, // 0024 CALL R3 2 - 0xB80E0C00, // 0025 GETNGBL R3 K6 - 0x60100018, // 0026 GETGBL R4 G24 - 0x58140009, // 0027 LDCONST R5 K9 - 0xB81A0600, // 0028 GETNGBL R6 K3 - 0x88180D0D, // 0029 GETMBR R6 R6 K13 - 0x581C000E, // 002A LDCONST R7 K14 - 0x5820000B, // 002B LDCONST R8 K11 - 0x7C100800, // 002C CALL R4 4 - 0x58140008, // 002D LDCONST R5 K8 - 0x7C0C0400, // 002E CALL R3 2 - 0x600C0010, // 002F GETGBL R3 G16 - 0x5C100400, // 0030 MOVE R4 R2 - 0x7C0C0200, // 0031 CALL R3 1 - 0xA8020055, // 0032 EXBLK 0 #0089 - 0x5C100600, // 0033 MOVE R4 R3 - 0x7C100000, // 0034 CALL R4 0 - 0x1C140905, // 0035 EQ R5 R4 K5 - 0x78160000, // 0036 JMPF R5 #0038 - 0x7001FFFA, // 0037 JMP #0033 - 0xA802003E, // 0038 EXBLK 0 #0078 - 0x60140008, // 0039 GETGBL R5 G8 - 0x5C180800, // 003A MOVE R6 R4 - 0x7C140200, // 003B CALL R5 1 - 0x94140205, // 003C GETIDX R5 R1 R5 - 0x8C180B0F, // 003D GETMET R6 R5 K15 - 0x58200010, // 003E LDCONST R8 K16 - 0x7C180400, // 003F CALL R6 2 - 0x4C1C0000, // 0040 LDNIL R7 - 0x1C1C0C07, // 0041 EQ R7 R6 R7 - 0x781E0005, // 0042 JMPF R7 #0049 - 0xB81E0C00, // 0043 GETNGBL R7 K6 - 0x58200011, // 0044 LDCONST R8 K17 - 0x58240012, // 0045 LDCONST R9 K18 - 0x7C1C0400, // 0046 CALL R7 2 - 0xA8040001, // 0047 EXBLK 1 1 - 0x7001FFE9, // 0048 JMP #0033 - 0x1C1C0D0A, // 0049 EQ R7 R6 K10 - 0x781E0005, // 004A JMPF R7 #0051 - 0xB81E0C00, // 004B GETNGBL R7 K6 - 0x58200013, // 004C LDCONST R8 K19 - 0x58240012, // 004D LDCONST R9 K18 - 0x7C1C0400, // 004E CALL R7 2 - 0xA8040001, // 004F EXBLK 1 1 - 0x7001FFE1, // 0050 JMP #0033 - 0x881C0114, // 0051 GETMBR R7 R0 K20 - 0x8C1C0F0F, // 0052 GETMET R7 R7 K15 - 0x5C240C00, // 0053 MOVE R9 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x4C200000, // 0055 LDNIL R8 - 0x1C200E08, // 0056 EQ R8 R7 R8 - 0x78220009, // 0057 JMPF R8 #0062 - 0xB8220C00, // 0058 GETNGBL R8 K6 - 0x60240008, // 0059 GETGBL R9 G8 - 0x5C280C00, // 005A MOVE R10 R6 - 0x7C240200, // 005B CALL R9 1 - 0x00262A09, // 005C ADD R9 K21 R9 - 0x00241316, // 005D ADD R9 R9 K22 - 0x58280008, // 005E LDCONST R10 K8 - 0x7C200400, // 005F CALL R8 2 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7001FFD0, // 0061 JMP #0033 - 0x5C200E00, // 0062 MOVE R8 R7 - 0x5C240000, // 0063 MOVE R9 R0 - 0x5C280800, // 0064 MOVE R10 R4 - 0x5C2C0A00, // 0065 MOVE R11 R5 - 0x7C200600, // 0066 CALL R8 3 - 0x88240101, // 0067 GETMBR R9 R0 K1 - 0x8C241302, // 0068 GETMET R9 R9 K2 - 0x5C2C1000, // 0069 MOVE R11 R8 - 0x7C240400, // 006A CALL R9 2 - 0xB8260C00, // 006B GETNGBL R9 K6 - 0x60280018, // 006C GETGBL R10 G24 - 0x582C0009, // 006D LDCONST R11 K9 - 0x5C300800, // 006E MOVE R12 R4 - 0x5C340C00, // 006F MOVE R13 R6 - 0x8C380117, // 0070 GETMET R14 R0 K23 - 0x5C400A00, // 0071 MOVE R16 R5 - 0x7C380400, // 0072 CALL R14 2 - 0x7C280800, // 0073 CALL R10 4 - 0x582C0008, // 0074 LDCONST R11 K8 - 0x7C240400, // 0075 CALL R9 2 - 0xA8040001, // 0076 EXBLK 1 1 - 0x7002000F, // 0077 JMP #0088 - 0xAC140002, // 0078 CATCH R5 0 2 - 0x7002000C, // 0079 JMP #0087 - 0xB81E0C00, // 007A GETNGBL R7 K6 - 0x60200008, // 007B GETGBL R8 G8 - 0x5C240A00, // 007C MOVE R9 R5 - 0x7C200200, // 007D CALL R8 1 - 0x00223008, // 007E ADD R8 K24 R8 - 0x00201119, // 007F ADD R8 R8 K25 - 0x60240008, // 0080 GETGBL R9 G8 - 0x5C280C00, // 0081 MOVE R10 R6 - 0x7C240200, // 0082 CALL R9 1 - 0x00201009, // 0083 ADD R8 R8 R9 - 0x58240008, // 0084 LDCONST R9 K8 - 0x7C1C0400, // 0085 CALL R7 2 - 0x70020000, // 0086 JMP #0088 - 0xB0080000, // 0087 RAISE 2 R0 R0 - 0x7001FFA9, // 0088 JMP #0033 - 0x580C001A, // 0089 LDCONST R3 K26 - 0xAC0C0200, // 008A CATCH R3 1 0 - 0xB0080000, // 008B RAISE 2 R0 R0 - 0xB80E3600, // 008C GETNGBL R3 K27 - 0x8C0C071C, // 008D GETMET R3 R3 K28 - 0x5814001D, // 008E LDCONST R5 K29 - 0x5818001E, // 008F LDCONST R6 K30 - 0x7C0C0600, // 0090 CALL R3 3 - 0x80000000, // 0091 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery -********************************************************************/ -be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns), - /* K1 */ be_nested_str_weak(get_device_id), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(reverse), - /* K4 */ be_nested_str_weak(get_fabric_compressed), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(_X2D), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(find), - /* K13 */ be_nested_str_weak(up), - /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K15 */ be_nested_str_weak(hostname_eth), - /* K16 */ be_nested_str_weak(add_service), - /* K17 */ be_nested_str_weak(_matter), - /* K18 */ be_nested_str_weak(_tcp), - /* K19 */ be_nested_str_weak(_I), - /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K21 */ be_nested_str_weak(add_subtype), - /* K22 */ be_nested_str_weak(wifi), - /* K23 */ be_nested_str_weak(hostname_wifi), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K25 */ be_nested_str_weak(_X7C), - /* K26 */ be_const_int(2), - }), - be_str_weak(mdns_announce_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802005F, // 0001 EXBLK 0 #0062 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100304, // 0008 GETMET R4 R1 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140905, // 000A GETMET R5 R4 K5 - 0x7C140200, // 000B CALL R5 1 - 0x00140B06, // 000C ADD R5 R5 K6 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x001E1005, // 0011 ADD R7 K8 R5 - 0x58200009, // 0012 LDCONST R8 K9 - 0x7C180400, // 0013 CALL R6 2 - 0xB81A1400, // 0014 GETNGBL R6 K10 - 0x8C180D0B, // 0015 GETMET R6 R6 K11 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180D0C, // 0017 GETMET R6 R6 K12 - 0x5820000D, // 0018 LDCONST R8 K13 - 0x7C180400, // 0019 CALL R6 2 - 0x781A001E, // 001A JMPF R6 #003A - 0xB81A0E00, // 001B GETNGBL R6 K7 - 0x601C0018, // 001C GETGBL R7 G24 - 0x5820000E, // 001D LDCONST R8 K14 - 0x5824000B, // 001E LDCONST R9 K11 - 0x5C280A00, // 001F MOVE R10 R5 - 0x882C010F, // 0020 GETMBR R11 R0 K15 - 0x7C1C0800, // 0021 CALL R7 4 - 0x58200009, // 0022 LDCONST R8 K9 - 0x7C180400, // 0023 CALL R6 2 - 0x8C180510, // 0024 GETMET R6 R2 K16 - 0x58200011, // 0025 LDCONST R8 K17 - 0x58240012, // 0026 LDCONST R9 K18 - 0x542A15A3, // 0027 LDINT R10 5540 - 0x4C2C0000, // 0028 LDNIL R11 - 0x5C300A00, // 0029 MOVE R12 R5 - 0x8834010F, // 002A GETMBR R13 R0 K15 - 0x7C180E00, // 002B CALL R6 7 - 0x8C180905, // 002C GETMET R6 R4 K5 - 0x7C180200, // 002D CALL R6 1 - 0x001A2606, // 002E ADD R6 K19 R6 - 0xB81E0E00, // 002F GETNGBL R7 K7 - 0x00222806, // 0030 ADD R8 K20 R6 - 0x58240009, // 0031 LDCONST R9 K9 - 0x7C1C0400, // 0032 CALL R7 2 - 0x8C1C0515, // 0033 GETMET R7 R2 K21 - 0x58240011, // 0034 LDCONST R9 K17 - 0x58280012, // 0035 LDCONST R10 K18 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x8830010F, // 0037 GETMBR R12 R0 K15 - 0x5C340C00, // 0038 MOVE R13 R6 - 0x7C1C0C00, // 0039 CALL R7 6 - 0xB81A1400, // 003A GETNGBL R6 K10 - 0x8C180D16, // 003B GETMET R6 R6 K22 - 0x7C180200, // 003C CALL R6 1 - 0x8C180D0C, // 003D GETMET R6 R6 K12 - 0x5820000D, // 003E LDCONST R8 K13 - 0x7C180400, // 003F CALL R6 2 - 0x781A001E, // 0040 JMPF R6 #0060 - 0xB81A0E00, // 0041 GETNGBL R6 K7 - 0x601C0018, // 0042 GETGBL R7 G24 - 0x5820000E, // 0043 LDCONST R8 K14 - 0x58240016, // 0044 LDCONST R9 K22 - 0x5C280A00, // 0045 MOVE R10 R5 - 0x882C0117, // 0046 GETMBR R11 R0 K23 - 0x7C1C0800, // 0047 CALL R7 4 - 0x58200009, // 0048 LDCONST R8 K9 - 0x7C180400, // 0049 CALL R6 2 - 0x8C180510, // 004A GETMET R6 R2 K16 - 0x58200011, // 004B LDCONST R8 K17 - 0x58240012, // 004C LDCONST R9 K18 - 0x542A15A3, // 004D LDINT R10 5540 - 0x4C2C0000, // 004E LDNIL R11 - 0x5C300A00, // 004F MOVE R12 R5 - 0x88340117, // 0050 GETMBR R13 R0 K23 - 0x7C180E00, // 0051 CALL R6 7 - 0x8C180905, // 0052 GETMET R6 R4 K5 - 0x7C180200, // 0053 CALL R6 1 - 0x001A2606, // 0054 ADD R6 K19 R6 - 0xB81E0E00, // 0055 GETNGBL R7 K7 - 0x00222806, // 0056 ADD R8 K20 R6 - 0x58240009, // 0057 LDCONST R9 K9 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C1C0515, // 0059 GETMET R7 R2 K21 - 0x58240011, // 005A LDCONST R9 K17 - 0x58280012, // 005B LDCONST R10 K18 - 0x5C2C0A00, // 005C MOVE R11 R5 - 0x88300117, // 005D GETMBR R12 R0 K23 - 0x5C340C00, // 005E MOVE R13 R6 - 0x7C1C0C00, // 005F CALL R7 6 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7002000F, // 0061 JMP #0072 - 0xAC0C0002, // 0062 CATCH R3 0 2 - 0x7002000C, // 0063 JMP #0071 - 0xB8160E00, // 0064 GETNGBL R5 K7 - 0x60180008, // 0065 GETGBL R6 G8 - 0x5C1C0600, // 0066 MOVE R7 R3 - 0x7C180200, // 0067 CALL R6 1 - 0x001A3006, // 0068 ADD R6 K24 R6 - 0x00180D19, // 0069 ADD R6 R6 K25 - 0x601C0008, // 006A GETGBL R7 G8 - 0x5C200800, // 006B MOVE R8 R4 - 0x7C1C0200, // 006C CALL R7 1 - 0x00180C07, // 006D ADD R6 R6 R7 - 0x581C001A, // 006E LDCONST R7 K26 - 0x7C140400, // 006F CALL R5 2 - 0x70020000, // 0070 JMP #0072 - 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x80000000, // 0072 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete_deferred -********************************************************************/ -be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_commissioning_complete_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_sensors_scheduler -********************************************************************/ -be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_sensor_time), - /* K1 */ be_nested_str_weak(probe_sensor_timestamp), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(time_reached), - /* K5 */ be_nested_str_weak(_trigger_read_sensors), - /* K6 */ be_nested_str_weak(millis), - }), - be_str_weak(read_sensors_scheduler), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x1C040302, // 0006 EQ R1 R1 K2 - 0x74060004, // 0007 JMPT R1 #000D - 0xB8060600, // 0008 GETNGBL R1 K3 - 0x8C040304, // 0009 GETMET R1 R1 K4 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x7C040400, // 000B CALL R1 2 - 0x78060006, // 000C JMPF R1 #0014 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0xB8060600, // 000F GETNGBL R1 K3 - 0x8C040306, // 0010 GETMET R1 R1 K6 - 0x880C0100, // 0011 GETMBR R3 R0 K0 - 0x7C040400, // 0012 CALL R1 2 - 0x90020201, // 0013 SETMBR R0 K1 R1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_remove_endpoint -********************************************************************/ -be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(plugins_config), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(plugins_persist), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins), - /* K12 */ be_nested_str_weak(get_endpoint), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(clean_remotes), - /* K15 */ be_nested_str_weak(save_param), - /* K16 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_remove_endpoint), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C0008, // 0001 GETGBL R3 G8 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x4C140000, // 0005 LDNIL R5 - 0x88180101, // 0006 GETMBR R6 R0 K1 - 0x8C180D02, // 0007 GETMET R6 R6 K2 - 0x5C200600, // 0008 MOVE R8 R3 - 0x7C180400, // 0009 CALL R6 2 - 0x741A0004, // 000A JMPT R6 #0010 - 0xB81A0600, // 000B GETNGBL R6 K3 - 0x001E0803, // 000C ADD R7 K4 R3 - 0x58200005, // 000D LDCONST R8 K5 - 0x7C180400, // 000E CALL R6 2 - 0x80000C00, // 000F RET 0 - 0xB81A0600, // 0010 GETNGBL R6 K3 - 0x601C0018, // 0011 GETGBL R7 G24 - 0x58200006, // 0012 LDCONST R8 K6 - 0x5C240200, // 0013 MOVE R9 R1 - 0x7C1C0400, // 0014 CALL R7 2 - 0x58200007, // 0015 LDCONST R8 K7 - 0x7C180400, // 0016 CALL R6 2 - 0x88180101, // 0017 GETMBR R6 R0 K1 - 0x8C180D08, // 0018 GETMET R6 R6 K8 - 0x5C200600, // 0019 MOVE R8 R3 - 0x7C180400, // 001A CALL R6 2 - 0x50180200, // 001B LDBOOL R6 1 0 - 0x90021206, // 001C SETMBR R0 K9 R6 - 0x5818000A, // 001D LDCONST R6 K10 - 0x601C000C, // 001E GETGBL R7 G12 - 0x8820010B, // 001F GETMBR R8 R0 K11 - 0x7C1C0200, // 0020 CALL R7 1 - 0x141C0C07, // 0021 LT R7 R6 R7 - 0x781E000D, // 0022 JMPF R7 #0031 - 0x881C010B, // 0023 GETMBR R7 R0 K11 - 0x941C0E06, // 0024 GETIDX R7 R7 R6 - 0x8C1C0F0C, // 0025 GETMET R7 R7 K12 - 0x7C1C0200, // 0026 CALL R7 1 - 0x1C1C0207, // 0027 EQ R7 R1 R7 - 0x781E0005, // 0028 JMPF R7 #002F - 0x881C010B, // 0029 GETMBR R7 R0 K11 - 0x8C1C0F08, // 002A GETMET R7 R7 K8 - 0x5C240C00, // 002B MOVE R9 R6 - 0x7C1C0400, // 002C CALL R7 2 - 0x70020002, // 002D JMP #0031 - 0x70020000, // 002E JMP #0030 - 0x00180D0D, // 002F ADD R6 R6 K13 - 0x7001FFEC, // 0030 JMP #001E - 0x8C1C010E, // 0031 GETMET R7 R0 K14 - 0x7C1C0200, // 0032 CALL R7 1 - 0x8C1C010F, // 0033 GETMET R7 R0 K15 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0110, // 0035 GETMET R7 R0 K16 - 0x7C1C0200, // 0036 CALL R7 1 - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_add_endpoint -********************************************************************/ -be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K4 */ be_nested_str_weak(_X27_X20skipping), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(next_ep), - /* K7 */ be_nested_str_weak(plugins), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(type), - /* K10 */ be_nested_str_weak(keys), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K13 */ be_nested_str_weak(conf_to_log), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_persist), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(save_param), - /* K19 */ be_nested_str_weak(signal_endpoints_changed), - }), - be_str_weak(bridge_add_endpoint), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120008, // 0006 JMPF R4 #0010 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x60140008, // 0008 GETGBL R5 G8 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C140200, // 000A CALL R5 1 - 0x00160605, // 000B ADD R5 K3 R5 - 0x00140B04, // 000C ADD R5 R5 K4 - 0x58180005, // 000D LDCONST R6 K5 - 0x7C100400, // 000E CALL R4 2 - 0x80000800, // 000F RET 0 - 0x88100106, // 0010 GETMBR R4 R0 K6 - 0x60140008, // 0011 GETGBL R5 G8 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x5C180600, // 0014 MOVE R6 R3 - 0x5C1C0000, // 0015 MOVE R7 R0 - 0x5C200800, // 0016 MOVE R8 R4 - 0x5C240400, // 0017 MOVE R9 R2 - 0x7C180600, // 0018 CALL R6 3 - 0x881C0107, // 0019 GETMBR R7 R0 K7 - 0x8C1C0F08, // 001A GETMET R7 R7 K8 - 0x5C240C00, // 001B MOVE R9 R6 - 0x7C1C0400, // 001C CALL R7 2 - 0x601C0013, // 001D GETGBL R7 G19 - 0x7C1C0000, // 001E CALL R7 0 - 0x981E1201, // 001F SETIDX R7 K9 R1 - 0x60200010, // 0020 GETGBL R8 G16 - 0x8C24050A, // 0021 GETMET R9 R2 K10 - 0x7C240200, // 0022 CALL R9 1 - 0x7C200200, // 0023 CALL R8 1 - 0xA8020004, // 0024 EXBLK 0 #002A - 0x5C241000, // 0025 MOVE R9 R8 - 0x7C240000, // 0026 CALL R9 0 - 0x94280409, // 0027 GETIDX R10 R2 R9 - 0x981C120A, // 0028 SETIDX R7 R9 R10 - 0x7001FFFA, // 0029 JMP #0025 - 0x5820000B, // 002A LDCONST R8 K11 - 0xAC200200, // 002B CATCH R8 1 0 - 0xB0080000, // 002C RAISE 2 R0 R0 - 0xB8220400, // 002D GETNGBL R8 K2 - 0x60240018, // 002E GETGBL R9 G24 - 0x5828000C, // 002F LDCONST R10 K12 - 0x5C2C0800, // 0030 MOVE R11 R4 - 0x5C300200, // 0031 MOVE R12 R1 - 0x8C34010D, // 0032 GETMET R13 R0 K13 - 0x5C3C0400, // 0033 MOVE R15 R2 - 0x7C340400, // 0034 CALL R13 2 - 0x7C240800, // 0035 CALL R9 4 - 0x5828000E, // 0036 LDCONST R10 K14 - 0x7C200400, // 0037 CALL R8 2 - 0x8820010F, // 0038 GETMBR R8 R0 K15 - 0x98200A07, // 0039 SETIDX R8 R5 R7 - 0x50200200, // 003A LDBOOL R8 1 0 - 0x90022008, // 003B SETMBR R0 K16 R8 - 0x88200106, // 003C GETMBR R8 R0 K6 - 0x00201111, // 003D ADD R8 R8 K17 - 0x90020C08, // 003E SETMBR R0 K6 R8 - 0x8C200112, // 003F GETMET R8 R0 K18 - 0x7C200200, // 0040 CALL R8 1 - 0x8C200113, // 0041 GETMET R8 R0 K19 - 0x7C200200, // 0042 CALL R8 1 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_root_commissioning_open -********************************************************************/ -be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(commissioning_admin_fabric), - }), - be_str_weak(is_root_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060003, // 0003 JMPF R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x74060000, // 0007 JMPT R1 #0009 - 0x50040001, // 0008 LDBOOL R1 0 1 - 0x50040200, // 0009 LDBOOL R1 1 0 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery -********************************************************************/ -be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(mdns), - /* K2 */ be_nested_str_weak(stop_basic_commissioning), - /* K3 */ be_nested_str_weak(mdns_announce_op_discovery), - }), - be_str_weak(start_operational_discovery), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100103, // 0004 GETMET R4 R0 K3 - 0x5C180200, // 0005 MOVE R6 R1 - 0x7C100400, // 0006 CALL R4 2 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo -********************************************************************/ -be_local_closure(class_Matter_Device_MtrInfo, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(MtrInfo_one), - /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_nested_str_weak(int), - /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(resp_cmnd_done), - }), - be_str_weak(MtrInfo), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x1C140700, // 0000 EQ R5 R3 K0 - 0x7815FFFF, // 0001 JMPF R5 #0002 - 0x1C140700, // 0002 EQ R5 R3 K0 - 0x7816000D, // 0003 JMPF R5 #0012 - 0x60140010, // 0004 GETGBL R5 G16 - 0x88180101, // 0005 GETMBR R6 R0 K1 - 0x7C140200, // 0006 CALL R5 1 - 0xA8020005, // 0007 EXBLK 0 #000E - 0x5C180A00, // 0008 MOVE R6 R5 - 0x7C180000, // 0009 CALL R6 0 - 0x8C1C0102, // 000A GETMET R7 R0 K2 - 0x88240D03, // 000B GETMBR R9 R6 K3 - 0x7C1C0400, // 000C CALL R7 2 - 0x7001FFF9, // 000D JMP #0008 - 0x58140004, // 000E LDCONST R5 K4 - 0xAC140200, // 000F CATCH R5 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x70020011, // 0011 JMP #0024 - 0x60140004, // 0012 GETGBL R5 G4 - 0x5C180800, // 0013 MOVE R6 R4 - 0x7C140200, // 0014 CALL R5 1 - 0x1C140B05, // 0015 EQ R5 R5 K5 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C140102, // 0017 GETMET R5 R0 K2 - 0x5C1C0800, // 0018 MOVE R7 R4 - 0x7C140400, // 0019 CALL R5 2 - 0x70020008, // 001A JMP #0024 - 0x8C140106, // 001B GETMET R5 R0 K6 - 0x5C1C0600, // 001C MOVE R7 R3 - 0x7C140400, // 001D CALL R5 2 - 0x4C180000, // 001E LDNIL R6 - 0x20180A06, // 001F NE R6 R5 R6 - 0x781A0002, // 0020 JMPF R6 #0024 - 0x8C180102, // 0021 GETMET R6 R0 K2 - 0x88200B03, // 0022 GETMBR R8 R5 K3 - 0x7C180400, // 0023 CALL R6 2 - 0xB8160E00, // 0024 GETNGBL R5 K7 - 0x8C140B08, // 0025 GETMET R5 R5 K8 - 0x7C140200, // 0026 CALL R5 1 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: signal_endpoints_changed -********************************************************************/ -be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - }), - be_str_weak(signal_endpoints_changed), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x5412001C, // 0002 LDINT R4 29 - 0x58140002, // 0003 LDCONST R5 K2 - 0x50180000, // 0004 LDBOOL R6 0 0 - 0x7C040A00, // 0005 CALL R1 5 - 0x8C040100, // 0006 GETMET R1 R0 K0 - 0xB80E0600, // 0007 GETNGBL R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x5412001C, // 0009 LDINT R4 29 - 0x58140002, // 000A LDCONST R5 K2 - 0x50180000, // 000B LDBOOL R6 0 0 - 0x7C040A00, // 000C CALL R1 5 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrUpdate -********************************************************************/ -be_local_closure(class_Matter_Device_MtrUpdate, /* name */ - be_nested_proto( - 18, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(resp_cmnd_str), - /* K2 */ be_nested_str_weak(Invalid_X20JSON), - /* K3 */ be_nested_str_weak(find_key_i), - /* K4 */ be_nested_str_weak(Ep), - /* K5 */ be_nested_str_weak(Name), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute), - /* K8 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_nested_str_weak(find_plugin_by_friendly_name), - /* K11 */ be_nested_str_weak(Invalid_X20Device), - /* K12 */ be_nested_str_weak(VIRTUAL), - /* K13 */ be_nested_str_weak(Device_X20is_X20not_X20virtual), - /* K14 */ be_nested_str_weak(consolidate_update_commands), - /* K15 */ be_nested_str_weak(keys), - /* K16 */ be_nested_str_weak(find_list_i), - /* K17 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27), - /* K18 */ be_nested_str_weak(stop_iteration), - /* K19 */ be_nested_str_weak(update_virtual), - /* K20 */ be_nested_str_weak(state_json), - /* K21 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D), - /* K22 */ be_nested_str_weak(resp_cmnd), - /* K23 */ be_nested_str_weak(resp_cmnd_done), - /* K24 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute), - }), - be_str_weak(MtrUpdate), - &be_const_str_solidified, - ( &(const binstruction[126]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160004, // 0002 JMPF R5 #0008 - 0xB8160000, // 0003 GETNGBL R5 K0 - 0x8C140B01, // 0004 GETMET R5 R5 K1 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x7C140400, // 0006 CALL R5 2 - 0x80040A00, // 0007 RET 1 R5 - 0xB8160000, // 0008 GETNGBL R5 K0 - 0x8C140B03, // 0009 GETMET R5 R5 K3 - 0x5C1C0800, // 000A MOVE R7 R4 - 0x58200004, // 000B LDCONST R8 K4 - 0x7C140600, // 000C CALL R5 3 - 0xB81A0000, // 000D GETNGBL R6 K0 - 0x8C180D03, // 000E GETMET R6 R6 K3 - 0x5C200800, // 000F MOVE R8 R4 - 0x58240005, // 0010 LDCONST R9 K5 - 0x7C180600, // 0011 CALL R6 3 - 0x74160000, // 0012 JMPT R5 #0014 - 0x781A0064, // 0013 JMPF R6 #0079 - 0x4C1C0000, // 0014 LDNIL R7 - 0x78160010, // 0015 JMPF R5 #0027 - 0x60200009, // 0016 GETGBL R8 G9 - 0x94240805, // 0017 GETIDX R9 R4 R5 - 0x7C200200, // 0018 CALL R8 1 - 0x18241106, // 0019 LE R9 R8 K6 - 0x78260004, // 001A JMPF R9 #0020 - 0xB8260000, // 001B GETNGBL R9 K0 - 0x8C241301, // 001C GETMET R9 R9 K1 - 0x582C0007, // 001D LDCONST R11 K7 - 0x7C240400, // 001E CALL R9 2 - 0x80041200, // 001F RET 1 R9 - 0x8C240108, // 0020 GETMET R9 R0 K8 - 0x5C2C1000, // 0021 MOVE R11 R8 - 0x7C240400, // 0022 CALL R9 2 - 0x5C1C1200, // 0023 MOVE R7 R9 - 0x8C240909, // 0024 GETMET R9 R4 K9 - 0x5C2C0A00, // 0025 MOVE R11 R5 - 0x7C240400, // 0026 CALL R9 2 - 0x781A0009, // 0027 JMPF R6 #0032 - 0x4C200000, // 0028 LDNIL R8 - 0x1C200E08, // 0029 EQ R8 R7 R8 - 0x78220003, // 002A JMPF R8 #002F - 0x8C20010A, // 002B GETMET R8 R0 K10 - 0x94280806, // 002C GETIDX R10 R4 R6 - 0x7C200400, // 002D CALL R8 2 - 0x5C1C1000, // 002E MOVE R7 R8 - 0x8C200909, // 002F GETMET R8 R4 K9 - 0x5C280C00, // 0030 MOVE R10 R6 - 0x7C200400, // 0031 CALL R8 2 - 0x4C200000, // 0032 LDNIL R8 - 0x1C200E08, // 0033 EQ R8 R7 R8 - 0x78220004, // 0034 JMPF R8 #003A - 0xB8220000, // 0035 GETNGBL R8 K0 - 0x8C201101, // 0036 GETMET R8 R8 K1 - 0x5828000B, // 0037 LDCONST R10 K11 - 0x7C200400, // 0038 CALL R8 2 - 0x80041000, // 0039 RET 1 R8 - 0x88200F0C, // 003A GETMBR R8 R7 K12 - 0x74220004, // 003B JMPT R8 #0041 - 0xB8220000, // 003C GETNGBL R8 K0 - 0x8C201101, // 003D GETMET R8 R8 K1 - 0x5828000D, // 003E LDCONST R10 K13 - 0x7C200400, // 003F CALL R8 2 - 0x80041000, // 0040 RET 1 R8 - 0x8C200F0E, // 0041 GETMET R8 R7 K14 - 0x7C200200, // 0042 CALL R8 1 - 0x60240013, // 0043 GETGBL R9 G19 - 0x7C240000, // 0044 CALL R9 0 - 0x60280010, // 0045 GETGBL R10 G16 - 0x8C2C090F, // 0046 GETMET R11 R4 K15 - 0x7C2C0200, // 0047 CALL R11 1 - 0x7C280200, // 0048 CALL R10 1 - 0xA8020016, // 0049 EXBLK 0 #0061 - 0x5C2C1400, // 004A MOVE R11 R10 - 0x7C2C0000, // 004B CALL R11 0 - 0xB8320000, // 004C GETNGBL R12 K0 - 0x8C301910, // 004D GETMET R12 R12 K16 - 0x5C381000, // 004E MOVE R14 R8 - 0x5C3C1600, // 004F MOVE R15 R11 - 0x7C300600, // 0050 CALL R12 3 - 0x4C340000, // 0051 LDNIL R13 - 0x1C34180D, // 0052 EQ R13 R12 R13 - 0x78360008, // 0053 JMPF R13 #005D - 0xB8360000, // 0054 GETNGBL R13 K0 - 0x8C341B01, // 0055 GETMET R13 R13 K1 - 0x603C0018, // 0056 GETGBL R15 G24 - 0x58400011, // 0057 LDCONST R16 K17 - 0x5C441600, // 0058 MOVE R17 R11 - 0x7C3C0400, // 0059 CALL R15 2 - 0x7C340400, // 005A CALL R13 2 - 0xA8040001, // 005B EXBLK 1 1 - 0x80001A00, // 005C RET 0 - 0x9434100C, // 005D GETIDX R13 R8 R12 - 0x9438080B, // 005E GETIDX R14 R4 R11 - 0x98241A0E, // 005F SETIDX R9 R13 R14 - 0x7001FFE8, // 0060 JMP #004A - 0x58280012, // 0061 LDCONST R10 K18 - 0xAC280200, // 0062 CATCH R10 1 0 - 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x8C280F13, // 0064 GETMET R10 R7 K19 - 0x5C301200, // 0065 MOVE R12 R9 - 0x7C280400, // 0066 CALL R10 2 - 0x8C280F14, // 0067 GETMET R10 R7 K20 - 0x7C280200, // 0068 CALL R10 1 - 0x782A000A, // 0069 JMPF R10 #0075 - 0x602C0018, // 006A GETGBL R11 G24 - 0x58300015, // 006B LDCONST R12 K21 - 0x5C340200, // 006C MOVE R13 R1 - 0x5C381400, // 006D MOVE R14 R10 - 0x7C2C0600, // 006E CALL R11 3 - 0xB8320000, // 006F GETNGBL R12 K0 - 0x8C301916, // 0070 GETMET R12 R12 K22 - 0x5C381600, // 0071 MOVE R14 R11 - 0x7C300400, // 0072 CALL R12 2 - 0x80041800, // 0073 RET 1 R12 - 0x70020003, // 0074 JMP #0079 - 0xB82E0000, // 0075 GETNGBL R11 K0 - 0x8C2C1717, // 0076 GETMET R11 R11 K23 - 0x7C2C0200, // 0077 CALL R11 1 - 0x80041600, // 0078 RET 1 R11 - 0xB81E0000, // 0079 GETNGBL R7 K0 - 0x8C1C0F01, // 007A GETMET R7 R7 K1 - 0x58240018, // 007B LDCONST R9 K24 - 0x7C1C0400, // 007C CALL R7 2 - 0x80000000, // 007D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_discovery_deferred -********************************************************************/ -be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_discovery), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_operational_discovery_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: save_param ********************************************************************/ @@ -4261,108 +3075,76 @@ be_local_closure(class_Matter_Device_save_param, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(update_remotes_info), - /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), - /* K3 */ be_nested_str_weak(root_discriminator), - /* K4 */ be_nested_str_weak(root_passcode), - /* K5 */ be_nested_str_weak(ipv4only), - /* K6 */ be_nested_str_weak(true), - /* K7 */ be_nested_str_weak(false), - /* K8 */ be_nested_str_weak(disable_bridge_mode), - /* K9 */ be_nested_str_weak(next_ep), - /* K10 */ be_nested_str_weak(debug), - /* K11 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), - /* K12 */ be_nested_str_weak(plugins_persist), - /* K13 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), - /* K14 */ be_nested_str_weak(dump), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(plugins_config_remotes), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), - /* K19 */ be_nested_str_weak(_X7D), - /* K20 */ be_nested_str_weak(FILENAME), - /* K21 */ be_nested_str_weak(w), - /* K22 */ be_nested_str_weak(write), - /* K23 */ be_nested_str_weak(close), - /* K24 */ be_nested_str_weak(log), - /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K26 */ be_nested_str_weak(_X20and_X20configuration), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_const_int(2), - /* K29 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K30 */ be_nested_str_weak(_X7C), - }), + &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(save_param), &be_const_str_solidified, ( &(const binstruction[83]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA406AA00, // 0000 IMPORT R1 K85 + 0x8C0801D7, // 0001 GETMET R2 R0 K215 0x7C080200, // 0002 CALL R2 1 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x88140104, // 0006 GETMBR R5 R0 K4 - 0x88180105, // 0007 GETMBR R6 R0 K5 + 0x580C00D8, // 0004 LDCONST R3 K216 + 0x881001B3, // 0005 GETMBR R4 R0 K179 + 0x881401B5, // 0006 GETMBR R5 R0 K181 + 0x88180122, // 0007 GETMBR R6 R0 K34 0x781A0001, // 0008 JMPF R6 #000B - 0x58180006, // 0009 LDCONST R6 K6 + 0x581800D9, // 0009 LDCONST R6 K217 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x581800DA, // 000B LDCONST R6 K218 + 0x881C0123, // 000C GETMBR R7 R0 K35 0x781E0001, // 000D JMPF R7 #0010 - 0x581C0006, // 000E LDCONST R7 K6 + 0x581C00D9, // 000E LDCONST R7 K217 0x70020000, // 000F JMP #0011 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x88200109, // 0011 GETMBR R8 R0 K9 + 0x581C00DA, // 0010 LDCONST R7 K218 + 0x88200120, // 0011 GETMBR R8 R0 K32 0x7C080C00, // 0012 CALL R2 6 - 0x880C010A, // 0013 GETMBR R3 R0 K10 + 0x880C01B9, // 0013 GETMBR R3 R0 K185 0x780E0000, // 0014 JMPF R3 #0016 - 0x0008050B, // 0015 ADD R2 R2 K11 - 0x880C010C, // 0016 GETMBR R3 R0 K12 + 0x000805DB, // 0015 ADD R2 R2 K219 + 0x880C010B, // 0016 GETMBR R3 R0 K11 0x780E000E, // 0017 JMPF R3 #0027 - 0x0008050D, // 0018 ADD R2 R2 K13 - 0x8C0C030E, // 0019 GETMET R3 R1 K14 - 0x8814010F, // 001A GETMBR R5 R0 K15 + 0x000805DC, // 0018 ADD R2 R2 K220 + 0x8C0C03DD, // 0019 GETMET R3 R1 K221 + 0x88140156, // 001A GETMBR R5 R0 K86 0x7C0C0400, // 001B CALL R3 2 0x00080403, // 001C ADD R2 R2 R3 0x600C000C, // 001D GETGBL R3 G12 - 0x88100110, // 001E GETMBR R4 R0 K16 + 0x8810011F, // 001E GETMBR R4 R0 K31 0x7C0C0200, // 001F CALL R3 1 - 0x240C0711, // 0020 GT R3 R3 K17 + 0x240C070A, // 0020 GT R3 R3 K10 0x780E0004, // 0021 JMPF R3 #0027 - 0x00080512, // 0022 ADD R2 R2 K18 - 0x8C0C030E, // 0023 GETMET R3 R1 K14 - 0x88140110, // 0024 GETMBR R5 R0 K16 + 0x000805DE, // 0022 ADD R2 R2 K222 + 0x8C0C03DD, // 0023 GETMET R3 R1 K221 + 0x8814011F, // 0024 GETMBR R5 R0 K31 0x7C0C0400, // 0025 CALL R3 2 0x00080403, // 0026 ADD R2 R2 R3 - 0x00080513, // 0027 ADD R2 R2 K19 + 0x000805DF, // 0027 ADD R2 R2 K223 0xA8020017, // 0028 EXBLK 0 #0041 0x600C0011, // 0029 GETGBL R3 G17 - 0x88100114, // 002A GETMBR R4 R0 K20 - 0x58140015, // 002B LDCONST R5 K21 + 0x881001B1, // 002A GETMBR R4 R0 K177 + 0x581400E0, // 002B LDCONST R5 K224 0x7C0C0400, // 002C CALL R3 2 - 0x8C100716, // 002D GETMET R4 R3 K22 + 0x8C1007E1, // 002D GETMET R4 R3 K225 0x5C180400, // 002E MOVE R6 R2 0x7C100400, // 002F CALL R4 2 - 0x8C100717, // 0030 GETMET R4 R3 K23 + 0x8C10078A, // 0030 GETMET R4 R3 K138 0x7C100200, // 0031 CALL R4 1 - 0xB8123000, // 0032 GETNGBL R4 K24 + 0xB8127400, // 0032 GETNGBL R4 K58 0x60140018, // 0033 GETGBL R5 G24 - 0x58180019, // 0034 LDCONST R6 K25 - 0x881C010C, // 0035 GETMBR R7 R0 K12 + 0x581800E2, // 0034 LDCONST R6 K226 + 0x881C010B, // 0035 GETMBR R7 R0 K11 0x781E0001, // 0036 JMPF R7 #0039 - 0x581C001A, // 0037 LDCONST R7 K26 + 0x581C00E3, // 0037 LDCONST R7 K227 0x70020000, // 0038 JMP #003A - 0x581C001B, // 0039 LDCONST R7 K27 + 0x581C0010, // 0039 LDCONST R7 K16 0x7C140400, // 003A CALL R5 2 - 0x5818001C, // 003B LDCONST R6 K28 + 0x58180021, // 003B LDCONST R6 K33 0x7C100400, // 003C CALL R4 2 0xA8040001, // 003D EXBLK 1 1 0x80040400, // 003E RET 1 R2 @@ -4370,17 +3152,17 @@ be_local_closure(class_Matter_Device_save_param, /* name */ 0x70020010, // 0040 JMP #0052 0xAC0C0002, // 0041 CATCH R3 0 2 0x7002000D, // 0042 JMP #0051 - 0xB8163000, // 0043 GETNGBL R5 K24 + 0xB8167400, // 0043 GETNGBL R5 K58 0x60180008, // 0044 GETGBL R6 G8 0x5C1C0600, // 0045 MOVE R7 R3 0x7C180200, // 0046 CALL R6 1 - 0x001A3A06, // 0047 ADD R6 K29 R6 - 0x00180D1E, // 0048 ADD R6 R6 K30 + 0x001BC806, // 0047 ADD R6 K228 R6 + 0x00180D7F, // 0048 ADD R6 R6 K127 0x601C0008, // 0049 GETGBL R7 G8 0x5C200800, // 004A MOVE R8 R4 0x7C1C0200, // 004B CALL R7 1 0x00180C07, // 004C ADD R6 R6 R7 - 0x581C001C, // 004D LDCONST R7 K28 + 0x581C0021, // 004D LDCONST R7 K33 0x7C140400, // 004E CALL R5 2 0x80040400, // 004F RET 1 R2 0x70020000, // 0050 JMP #0052 @@ -4393,192 +3175,78 @@ be_local_closure(class_Matter_Device_save_param, /* name */ /******************************************************************** -** Solidified function: load_param +** Solidified function: bridge_remove_endpoint ********************************************************************/ -be_local_closure(class_Matter_Device_load_param, /* name */ +be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ + 10, /* nstack */ + 2, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[36]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(FILENAME), - /* K2 */ be_nested_str_weak(read), - /* K3 */ be_nested_str_weak(close), - /* K4 */ be_nested_str_weak(json), - /* K5 */ be_nested_str_weak(load), - /* K6 */ be_nested_str_weak(root_discriminator), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(distinguish), - /* K9 */ be_nested_str_weak(root_passcode), - /* K10 */ be_nested_str_weak(passcode), - /* K11 */ be_nested_str_weak(ipv4only), - /* K12 */ be_nested_str_weak(disable_bridge_mode), - /* K13 */ be_nested_str_weak(next_ep), - /* K14 */ be_nested_str_weak(nextep), - /* K15 */ be_nested_str_weak(plugins_config), - /* K16 */ be_nested_str_weak(config), - /* K17 */ be_nested_str_weak(debug), - /* K18 */ be_nested_str_weak(log), - /* K19 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(adjust_next_ep), - /* K22 */ be_nested_str_weak(check_config_ep), - /* K23 */ be_nested_str_weak(plugins_persist), - /* K24 */ be_nested_str_weak(plugins_config_remotes), - /* K25 */ be_nested_str_weak(remotes), - /* K26 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), - /* K27 */ be_nested_str_weak(io_error), - /* K28 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), - /* K29 */ be_nested_str_weak(_X7C), - /* K30 */ be_const_int(2), - /* K31 */ be_nested_str_weak(random), - /* K32 */ be_nested_str_weak(get), - /* K33 */ be_const_int(0), - /* K34 */ be_nested_str_weak(generate_random_passcode), - /* K35 */ be_nested_str_weak(save_param), - }), - be_str_weak(load_param), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(bridge_remove_endpoint), &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x50080000, // 0001 LDBOOL R2 0 0 - 0xA8020054, // 0002 EXBLK 0 #0058 - 0x600C0011, // 0003 GETGBL R3 G17 - 0x88100101, // 0004 GETMBR R4 R0 K1 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C100702, // 0006 GETMET R4 R3 K2 - 0x7C100200, // 0007 CALL R4 1 - 0x8C140703, // 0008 GETMET R5 R3 K3 - 0x7C140200, // 0009 CALL R5 1 - 0xA4160800, // 000A IMPORT R5 K4 - 0x8C180B05, // 000B GETMET R6 R5 K5 - 0x5C200800, // 000C MOVE R8 R4 - 0x7C180400, // 000D CALL R6 2 - 0x8C1C0D07, // 000E GETMET R7 R6 K7 - 0x58240008, // 000F LDCONST R9 K8 - 0x88280106, // 0010 GETMBR R10 R0 K6 - 0x7C1C0600, // 0011 CALL R7 3 - 0x90020C07, // 0012 SETMBR R0 K6 R7 - 0x8C1C0D07, // 0013 GETMET R7 R6 K7 - 0x5824000A, // 0014 LDCONST R9 K10 - 0x88280109, // 0015 GETMBR R10 R0 K9 - 0x7C1C0600, // 0016 CALL R7 3 - 0x90021207, // 0017 SETMBR R0 K9 R7 - 0x601C0017, // 0018 GETGBL R7 G23 - 0x8C200D07, // 0019 GETMET R8 R6 K7 - 0x5828000B, // 001A LDCONST R10 K11 - 0x502C0000, // 001B LDBOOL R11 0 0 - 0x7C200600, // 001C CALL R8 3 - 0x7C1C0200, // 001D CALL R7 1 - 0x90021607, // 001E SETMBR R0 K11 R7 - 0x601C0017, // 001F GETGBL R7 G23 - 0x8C200D07, // 0020 GETMET R8 R6 K7 - 0x5828000C, // 0021 LDCONST R10 K12 - 0x502C0000, // 0022 LDBOOL R11 0 0 - 0x7C200600, // 0023 CALL R8 3 - 0x7C1C0200, // 0024 CALL R7 1 - 0x90021807, // 0025 SETMBR R0 K12 R7 - 0x8C1C0D07, // 0026 GETMET R7 R6 K7 - 0x5824000E, // 0027 LDCONST R9 K14 - 0x8828010D, // 0028 GETMBR R10 R0 K13 - 0x7C1C0600, // 0029 CALL R7 3 - 0x90021A07, // 002A SETMBR R0 K13 R7 - 0x8C1C0D07, // 002B GETMET R7 R6 K7 - 0x58240010, // 002C LDCONST R9 K16 - 0x7C1C0400, // 002D CALL R7 2 - 0x90021E07, // 002E SETMBR R0 K15 R7 - 0x601C0017, // 002F GETGBL R7 G23 - 0x8C200D07, // 0030 GETMET R8 R6 K7 - 0x58280011, // 0031 LDCONST R10 K17 - 0x7C200400, // 0032 CALL R8 2 - 0x7C1C0200, // 0033 CALL R7 1 - 0x90022207, // 0034 SETMBR R0 K17 R7 - 0x881C010F, // 0035 GETMBR R7 R0 K15 - 0x4C200000, // 0036 LDNIL R8 - 0x201C0E08, // 0037 NE R7 R7 R8 - 0x781E000D, // 0038 JMPF R7 #0047 - 0xB81E2400, // 0039 GETNGBL R7 K18 - 0x60200018, // 003A GETGBL R8 G24 - 0x58240013, // 003B LDCONST R9 K19 - 0x8828010F, // 003C GETMBR R10 R0 K15 - 0x7C200400, // 003D CALL R8 2 - 0x58240014, // 003E LDCONST R9 K20 - 0x7C1C0400, // 003F CALL R7 2 - 0x8C1C0115, // 0040 GETMET R7 R0 K21 - 0x7C1C0200, // 0041 CALL R7 1 - 0x8C1C0116, // 0042 GETMET R7 R0 K22 - 0x7C1C0200, // 0043 CALL R7 1 - 0x5C080E00, // 0044 MOVE R2 R7 - 0x501C0200, // 0045 LDBOOL R7 1 0 - 0x90022E07, // 0046 SETMBR R0 K23 R7 - 0x8C1C0D07, // 0047 GETMET R7 R6 K7 - 0x58240019, // 0048 LDCONST R9 K25 - 0x60280013, // 0049 GETGBL R10 G19 - 0x7C280000, // 004A CALL R10 0 - 0x7C1C0600, // 004B CALL R7 3 - 0x90023007, // 004C SETMBR R0 K24 R7 - 0x881C0118, // 004D GETMBR R7 R0 K24 - 0x781E0006, // 004E JMPF R7 #0056 - 0xB81E2400, // 004F GETNGBL R7 K18 - 0x60200008, // 0050 GETGBL R8 G8 - 0x88240118, // 0051 GETMBR R9 R0 K24 - 0x7C200200, // 0052 CALL R8 1 - 0x00223408, // 0053 ADD R8 K26 R8 - 0x58240014, // 0054 LDCONST R9 K20 - 0x7C1C0400, // 0055 CALL R7 2 - 0xA8040001, // 0056 EXBLK 1 1 - 0x70020011, // 0057 JMP #006A - 0xAC0C0002, // 0058 CATCH R3 0 2 - 0x7002000E, // 0059 JMP #0069 - 0x2014071B, // 005A NE R5 R3 K27 - 0x7816000B, // 005B JMPF R5 #0068 - 0xB8162400, // 005C GETNGBL R5 K18 - 0x60180008, // 005D GETGBL R6 G8 - 0x5C1C0600, // 005E MOVE R7 R3 - 0x7C180200, // 005F CALL R6 1 - 0x001A3806, // 0060 ADD R6 K28 R6 - 0x00180D1D, // 0061 ADD R6 R6 K29 - 0x601C0008, // 0062 GETGBL R7 G8 - 0x5C200800, // 0063 MOVE R8 R4 - 0x7C1C0200, // 0064 CALL R7 1 - 0x00180C07, // 0065 ADD R6 R6 R7 - 0x581C001E, // 0066 LDCONST R7 K30 - 0x7C140400, // 0067 CALL R5 2 - 0x70020000, // 0068 JMP #006A - 0xB0080000, // 0069 RAISE 2 R0 R0 - 0x880C0106, // 006A GETMBR R3 R0 K6 - 0x4C100000, // 006B LDNIL R4 - 0x1C0C0604, // 006C EQ R3 R3 R4 - 0x780E000A, // 006D JMPF R3 #0079 - 0x8C0C031F, // 006E GETMET R3 R1 K31 - 0x5814001E, // 006F LDCONST R5 K30 - 0x7C0C0400, // 0070 CALL R3 2 - 0x8C0C0720, // 0071 GETMET R3 R3 K32 - 0x58140021, // 0072 LDCONST R5 K33 - 0x5818001E, // 0073 LDCONST R6 K30 - 0x7C0C0600, // 0074 CALL R3 3 - 0x54120FFE, // 0075 LDINT R4 4095 - 0x2C0C0604, // 0076 AND R3 R3 R4 - 0x90020C03, // 0077 SETMBR R0 K6 R3 - 0x50080200, // 0078 LDBOOL R2 1 0 - 0x880C0109, // 0079 GETMBR R3 R0 K9 - 0x4C100000, // 007A LDNIL R4 - 0x1C0C0604, // 007B EQ R3 R3 R4 - 0x780E0003, // 007C JMPF R3 #0081 - 0x8C0C0122, // 007D GETMET R3 R0 K34 - 0x7C0C0200, // 007E CALL R3 1 - 0x90021203, // 007F SETMBR R0 K9 R3 - 0x50080200, // 0080 LDBOOL R2 1 0 - 0x780A0001, // 0081 JMPF R2 #0084 - 0x8C0C0123, // 0082 GETMET R3 R0 K35 - 0x7C0C0200, // 0083 CALL R3 1 - 0x80000000, // 0084 RET 0 + ( &(const binstruction[56]) { /* code */ + 0xA40AAA00, // 0000 IMPORT R2 K85 + 0x600C0008, // 0001 GETGBL R3 G8 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x4C140000, // 0005 LDNIL R5 + 0x88180156, // 0006 GETMBR R6 R0 K86 + 0x8C180D6C, // 0007 GETMET R6 R6 K108 + 0x5C200600, // 0008 MOVE R8 R3 + 0x7C180400, // 0009 CALL R6 2 + 0x741A0004, // 000A JMPT R6 #0010 + 0xB81A7400, // 000B GETNGBL R6 K58 + 0x001FCA03, // 000C ADD R7 K229 R3 + 0x58200053, // 000D LDCONST R8 K83 + 0x7C180400, // 000E CALL R6 2 + 0x80000C00, // 000F RET 0 + 0xB81A7400, // 0010 GETNGBL R6 K58 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x582000E6, // 0012 LDCONST R8 K230 + 0x5C240200, // 0013 MOVE R9 R1 + 0x7C1C0400, // 0014 CALL R7 2 + 0x58200021, // 0015 LDCONST R8 K33 + 0x7C180400, // 0016 CALL R6 2 + 0x88180156, // 0017 GETMBR R6 R0 K86 + 0x8C180D83, // 0018 GETMET R6 R6 K131 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C180400, // 001A CALL R6 2 + 0x50180200, // 001B LDBOOL R6 1 0 + 0x90021606, // 001C SETMBR R0 K11 R6 + 0x5818000A, // 001D LDCONST R6 K10 + 0x601C000C, // 001E GETGBL R7 G12 + 0x8820011E, // 001F GETMBR R8 R0 K30 + 0x7C1C0200, // 0020 CALL R7 1 + 0x141C0C07, // 0021 LT R7 R6 R7 + 0x781E000D, // 0022 JMPF R7 #0031 + 0x881C011E, // 0023 GETMBR R7 R0 K30 + 0x941C0E06, // 0024 GETIDX R7 R7 R6 + 0x8C1C0F61, // 0025 GETMET R7 R7 K97 + 0x7C1C0200, // 0026 CALL R7 1 + 0x1C1C0207, // 0027 EQ R7 R1 R7 + 0x781E0005, // 0028 JMPF R7 #002F + 0x881C011E, // 0029 GETMBR R7 R0 K30 + 0x8C1C0F83, // 002A GETMET R7 R7 K131 + 0x5C240C00, // 002B MOVE R9 R6 + 0x7C1C0400, // 002C CALL R7 2 + 0x70020002, // 002D JMP #0031 + 0x70020000, // 002E JMP #0030 + 0x00180D38, // 002F ADD R6 R6 K56 + 0x7001FFEC, // 0030 JMP #001E + 0x8C1C01E7, // 0031 GETMET R7 R0 K231 + 0x7C1C0200, // 0032 CALL R7 1 + 0x8C1C010C, // 0033 GETMET R7 R0 K12 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C01AC, // 0035 GETMET R7 R0 K172 + 0x7C1C0200, // 0036 CALL R7 1 + 0x80000000, // 0037 RET 0 }) ) ); @@ -4586,59 +3254,29 @@ be_local_closure(class_Matter_Device_load_param, /* name */ /******************************************************************** -** Solidified function: compute_manual_pairing_code +** Solidified function: msg_received ********************************************************************/ -be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ +be_local_closure(class_Matter_Device_msg_received, /* name */ be_nested_proto( 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ + 4, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(root_discriminator), - /* K1 */ be_nested_str_weak(root_passcode), - /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Verhoeff), - /* K5 */ be_nested_str_weak(checksum), - }), - be_str_weak(compute_manual_pairing_code), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x540A0FFE, // 0001 LDINT R2 4095 - 0x2C040202, // 0002 AND R1 R1 R2 - 0x540A0009, // 0003 LDINT R2 10 - 0x3C040202, // 0004 SHR R1 R1 R2 - 0x88080100, // 0005 GETMBR R2 R0 K0 - 0x540E02FF, // 0006 LDINT R3 768 - 0x2C080403, // 0007 AND R2 R2 R3 - 0x540E0005, // 0008 LDINT R3 6 - 0x38080403, // 0009 SHL R2 R2 R3 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x54123FFE, // 000B LDINT R4 16383 - 0x2C0C0604, // 000C AND R3 R3 R4 - 0x30080403, // 000D OR R2 R2 R3 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x5412000D, // 000F LDINT R4 14 - 0x3C0C0604, // 0010 SHR R3 R3 R4 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140002, // 0012 LDCONST R5 K2 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x5C200600, // 0015 MOVE R8 R3 - 0x7C100800, // 0016 CALL R4 4 - 0xB8160600, // 0017 GETNGBL R5 K3 - 0x88140B04, // 0018 GETMBR R5 R5 K4 - 0x8C140B05, // 0019 GETMET R5 R5 K5 - 0x5C1C0800, // 001A MOVE R7 R4 - 0x7C140400, // 001B CALL R5 2 - 0x00100805, // 001C ADD R4 R4 R5 - 0x80040800, // 001D RET 1 R4 + ( &(const binstruction[ 7]) { /* code */ + 0x88100127, // 0000 GETMBR R4 R0 K39 + 0x8C1009E8, // 0001 GETMET R4 R4 K232 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 }) ) ); @@ -4646,30 +3284,46 @@ be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ /******************************************************************** -** Solidified function: msg_send +** Solidified function: invoke_request ********************************************************************/ -be_local_closure(class_Matter_Device_msg_send, /* name */ +be_local_closure(class_Matter_Device_invoke_request, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ + 12, /* nstack */ + 4, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(send_UDP), - }), - be_str_weak(msg_send), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 + ( &(const binstruction[24]) { /* code */ + 0x5810000A, // 0000 LDCONST R4 K10 + 0x88140748, // 0001 GETMBR R5 R3 K72 + 0x6018000C, // 0002 GETGBL R6 G12 + 0x881C011E, // 0003 GETMBR R7 R0 K30 + 0x7C180200, // 0004 CALL R6 1 + 0x14180806, // 0005 LT R6 R4 R6 + 0x781A000C, // 0006 JMPF R6 #0014 + 0x8818011E, // 0007 GETMBR R6 R0 K30 + 0x94180C04, // 0008 GETIDX R6 R6 R4 + 0x881C0D48, // 0009 GETMBR R7 R6 K72 + 0x1C1C0E05, // 000A EQ R7 R7 R5 + 0x781E0005, // 000B JMPF R7 #0012 + 0x8C1C0DE9, // 000C GETMET R7 R6 K233 + 0x5C240200, // 000D MOVE R9 R1 + 0x5C280400, // 000E MOVE R10 R2 + 0x5C2C0600, // 000F MOVE R11 R3 + 0x7C1C0800, // 0010 CALL R7 4 + 0x80040E00, // 0011 RET 1 R7 + 0x00100938, // 0012 ADD R4 R4 K56 + 0x7001FFED, // 0013 JMP #0002 + 0xB81A3000, // 0014 GETNGBL R6 K24 + 0x88180D4D, // 0015 GETMBR R6 R6 K77 + 0x900E9806, // 0016 SETMBR R3 K76 R6 + 0x80000000, // 0017 RET 0 }) ) ); @@ -4677,1406 +3331,43 @@ be_local_closure(class_Matter_Device_msg_send, /* name */ /******************************************************************** -** Solidified function: button_pressed +** Solidified function: read_sensors_scheduler ********************************************************************/ -be_local_closure(class_Matter_Device_button_pressed, /* name */ - be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(button_handler), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - }), - be_str_weak(button_pressed), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E000F, // 0000 LDINT R3 16 - 0x3C0C0403, // 0001 SHR R3 R2 R3 - 0x541200FE, // 0002 LDINT R4 255 - 0x2C0C0604, // 0003 AND R3 R3 R4 - 0x54120007, // 0004 LDINT R4 8 - 0x3C100404, // 0005 SHR R4 R2 R4 - 0x541600FE, // 0006 LDINT R5 255 - 0x2C100805, // 0007 AND R4 R4 R5 - 0x541600FE, // 0008 LDINT R5 255 - 0x2C140405, // 0009 AND R5 R2 R5 - 0x541A0017, // 000A LDINT R6 24 - 0x3C180406, // 000B SHR R6 R2 R6 - 0x541E00FE, // 000C LDINT R7 255 - 0x2C180C07, // 000D AND R6 R6 R7 - 0x8C1C0100, // 000E GETMET R7 R0 K0 - 0x00240B01, // 000F ADD R9 R5 K1 - 0x20280604, // 0010 NE R10 R3 R4 - 0x782A0001, // 0011 JMPF R10 #0014 - 0x58280001, // 0012 LDCONST R10 K1 - 0x70020000, // 0013 JMP #0015 - 0x58280002, // 0014 LDCONST R10 K2 - 0x780E0001, // 0015 JMPF R3 #0018 - 0x582C0002, // 0016 LDCONST R11 K2 - 0x70020000, // 0017 JMP #0019 - 0x582C0001, // 0018 LDCONST R11 K1 - 0x5C300C00, // 0019 MOVE R12 R6 - 0x7C1C0A00, // 001A CALL R7 5 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_Matter_Device_start, /* name */ +be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(started), - /* K1 */ be_nested_str_weak(autoconf_device), - /* K2 */ be_nested_str_weak(_start_udp), - /* K3 */ be_nested_str_weak(UDP_PORT), - /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames), - }), - be_str_weak(start), + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(read_sensors_scheduler), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x8C040102, // 0005 GETMET R1 R0 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C040400, // 0007 CALL R1 2 - 0x8C040104, // 0008 GETMET R1 R0 K4 - 0x7C040200, // 0009 CALL R1 1 - 0x50040200, // 000A LDBOOL R1 1 0 - 0x90020001, // 000B SETMBR R0 K0 R1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_http_remote -********************************************************************/ -be_local_closure(class_Matter_Device_register_http_remote, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remotes), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(get_timeout), - /* K3 */ be_nested_str_weak(set_timeout), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(HTTP_remote), - /* K6 */ be_nested_str_weak(plugins_config_remotes), - /* K7 */ be_nested_str_weak(set_info), - }), - be_str_weak(register_http_remote), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x600C0013, // 0004 GETGBL R3 G19 - 0x7C0C0000, // 0005 CALL R3 0 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x8C100901, // 0009 GETMET R4 R4 K1 - 0x5C180200, // 000A MOVE R6 R1 - 0x7C100400, // 000B CALL R4 2 - 0x78120009, // 000C JMPF R4 #0017 - 0x88100100, // 000D GETMBR R4 R0 K0 - 0x940C0801, // 000E GETIDX R3 R4 R1 - 0x8C140702, // 000F GETMET R5 R3 K2 - 0x7C140200, // 0010 CALL R5 1 - 0x14140405, // 0011 LT R5 R2 R5 - 0x78160002, // 0012 JMPF R5 #0016 - 0x8C140703, // 0013 GETMET R5 R3 K3 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C140400, // 0015 CALL R5 2 - 0x70020011, // 0016 JMP #0029 - 0xB8120800, // 0017 GETNGBL R4 K4 - 0x8C100905, // 0018 GETMET R4 R4 K5 - 0x5C180000, // 0019 MOVE R6 R0 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x5C200400, // 001B MOVE R8 R2 - 0x7C100800, // 001C CALL R4 4 - 0x5C0C0800, // 001D MOVE R3 R4 - 0x88100106, // 001E GETMBR R4 R0 K6 - 0x8C100901, // 001F GETMET R4 R4 K1 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100707, // 0023 GETMET R4 R3 K7 - 0x88180106, // 0024 GETMBR R6 R0 K6 - 0x94180C01, // 0025 GETIDX R6 R6 R1 - 0x7C100400, // 0026 CALL R4 2 - 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x98100203, // 0028 SETIDX R4 R1 R3 - 0x80040600, // 0029 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_config_ep -********************************************************************/ -be_local_closure(class_Matter_Device_check_config_ep, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_config), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(remove), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K11 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), - /* K12 */ be_nested_str_weak(next_ep), - /* K13 */ be_const_int(1), - }), - be_str_weak(check_config_ep), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x600C0010, // 0003 GETGBL R3 G16 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x8C100901, // 0005 GETMET R4 R4 K1 - 0x7C100200, // 0006 CALL R4 1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020007, // 0008 EXBLK 0 #0011 - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x8C140502, // 000B GETMET R5 R2 K2 - 0x601C0009, // 000C GETGBL R7 G9 - 0x5C200800, // 000D MOVE R8 R4 - 0x7C1C0200, // 000E CALL R7 1 - 0x7C140400, // 000F CALL R5 2 - 0x7001FFF7, // 0010 JMP #0009 - 0x580C0003, // 0011 LDCONST R3 K3 - 0xAC0C0200, // 0012 CATCH R3 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x600C0010, // 0014 GETGBL R3 G16 - 0x5C100400, // 0015 MOVE R4 R2 - 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020030, // 0017 EXBLK 0 #0049 - 0x5C100600, // 0018 MOVE R4 R3 - 0x7C100000, // 0019 CALL R4 0 - 0x1C140904, // 001A EQ R5 R4 K4 - 0x7816000B, // 001B JMPF R5 #0028 - 0xB8160A00, // 001C GETNGBL R5 K5 - 0x58180006, // 001D LDCONST R6 K6 - 0x581C0007, // 001E LDCONST R7 K7 - 0x7C140400, // 001F CALL R5 2 - 0x88140100, // 0020 GETMBR R5 R0 K0 - 0x8C140B08, // 0021 GETMET R5 R5 K8 - 0x601C0008, // 0022 GETGBL R7 G8 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C1C0200, // 0024 CALL R7 1 - 0x7C140400, // 0025 CALL R5 2 - 0x50040200, // 0026 LDBOOL R1 1 0 - 0x7002001F, // 0027 JMP #0048 - 0xB8161200, // 0028 GETNGBL R5 K9 - 0x88140B0A, // 0029 GETMBR R5 R5 K10 - 0x1C140805, // 002A EQ R5 R4 R5 - 0x7816001B, // 002B JMPF R5 #0048 - 0x50040200, // 002C LDBOOL R1 1 0 - 0xB8160A00, // 002D GETNGBL R5 K5 - 0x60180018, // 002E GETGBL R6 G24 - 0x581C000B, // 002F LDCONST R7 K11 - 0x5C200800, // 0030 MOVE R8 R4 - 0x8824010C, // 0031 GETMBR R9 R0 K12 - 0x7C180600, // 0032 CALL R6 3 - 0x581C0007, // 0033 LDCONST R7 K7 - 0x7C140400, // 0034 CALL R5 2 - 0x60140008, // 0035 GETGBL R5 G8 - 0x8818010C, // 0036 GETMBR R6 R0 K12 - 0x7C140200, // 0037 CALL R5 1 - 0x88180100, // 0038 GETMBR R6 R0 K0 - 0x601C0008, // 0039 GETGBL R7 G8 - 0x5C200800, // 003A MOVE R8 R4 - 0x7C1C0200, // 003B CALL R7 1 - 0x88200100, // 003C GETMBR R8 R0 K0 - 0x941C1007, // 003D GETIDX R7 R8 R7 - 0x98180A07, // 003E SETIDX R6 R5 R7 - 0x88140100, // 003F GETMBR R5 R0 K0 - 0x8C140B08, // 0040 GETMET R5 R5 K8 - 0x601C0008, // 0041 GETGBL R7 G8 - 0x5C200800, // 0042 MOVE R8 R4 - 0x7C1C0200, // 0043 CALL R7 1 - 0x7C140400, // 0044 CALL R5 2 - 0x8814010C, // 0045 GETMBR R5 R0 K12 - 0x00140B0D, // 0046 ADD R5 R5 K13 - 0x90021805, // 0047 SETMBR R0 K12 R5 - 0x7001FFCE, // 0048 JMP #0018 - 0x580C0003, // 0049 LDCONST R3 K3 - 0xAC0C0200, // 004A CATCH R3 1 0 - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80040200, // 004C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery_all_fabrics -********************************************************************/ -be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_remove_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_fabrics -********************************************************************/ -be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(active_fabrics), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_announce_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0005, // 000A JMPF R3 #0011 - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0104, // 000E GETMET R3 R0 K4 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58040005, // 0012 LDCONST R1 K5 - 0xAC040200, // 0013 CATCH R1 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_random_passcode -********************************************************************/ -be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(134217727), - /* K5 */ be_const_int(99999998), - /* K6 */ be_nested_str_weak(PASSCODE_INVALID), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(generate_random_passcode), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 + ( &(const binstruction[21]) { /* code */ + 0x88040167, // 0000 GETMBR R1 R0 K103 0x4C080000, // 0001 LDNIL R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x780E001D, // 0003 JMPF R3 #0022 - 0x8C0C0301, // 0004 GETMET R3 R1 K1 - 0x54160003, // 0005 LDINT R5 4 - 0x7C0C0400, // 0006 CALL R3 2 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 - 0x58140003, // 0008 LDCONST R5 K3 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x2C0C0704, // 000B AND R3 R3 K4 - 0x5C080600, // 000C MOVE R2 R3 - 0x240C0505, // 000D GT R3 R2 K5 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7001FFF1, // 000F JMP #0002 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x1C140404, // 0016 EQ R5 R2 R4 - 0x78160000, // 0017 JMPF R5 #0019 - 0x4C080000, // 0018 LDNIL R2 - 0x7001FFF9, // 0019 JMP #0014 - 0x580C0007, // 001A LDCONST R3 K7 - 0xAC0C0200, // 001B CATCH R3 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x4C0C0000, // 001D LDNIL R3 - 0x200C0403, // 001E NE R3 R2 R3 - 0x780E0000, // 001F JMPF R3 #0021 - 0x80040400, // 0020 RET 1 R2 - 0x7001FFDF, // 0021 JMP #0002 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_commissioning_open -********************************************************************/ -be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - }), - be_str_weak(is_commissioning_open), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_endpoint -********************************************************************/ -be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_endpoint), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_plugin_by_endpoint), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C100702, // 0008 GETMET R4 R3 K2 - 0x7C100200, // 0009 CALL R4 1 - 0x1C100801, // 000A EQ R4 R4 R1 - 0x78120000, // 000B JMPF R4 #000D - 0x80040600, // 000C RET 1 R3 - 0x00080503, // 000D ADD R2 R2 K3 - 0x7001FFF1, // 000E JMP #0001 - 0x4C0C0000, // 000F LDNIL R3 - 0x80040600, // 0010 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: conf_to_log -********************************************************************/ -be_local_closure(class_Matter_Device_conf_to_log, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(k2l), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(conf_to_log), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x58080001, // 0001 LDCONST R2 K1 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100302, // 0003 GETMET R4 R1 K2 - 0x5C180000, // 0004 MOVE R6 R0 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA802000B, // 0007 EXBLK 0 #0014 - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x1C140903, // 000A EQ R5 R4 K3 - 0x78160000, // 000B JMPF R5 #000D - 0x7001FFFA, // 000C JMP #0008 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180004, // 000E LDCONST R6 K4 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x94200004, // 0010 GETIDX R8 R0 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x00080405, // 0012 ADD R2 R2 R5 - 0x7001FFF3, // 0013 JMP #0008 - 0x580C0005, // 0014 LDCONST R3 K5 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x80040400, // 0017 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: received_ack -********************************************************************/ -be_local_closure(class_Matter_Device_received_ack, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(received_ack), - }), - be_str_weak(received_ack), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo_one -********************************************************************/ -be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K1 */ be_nested_str_weak(state_json), - /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(publish_result), - /* K5 */ be_nested_str_weak(), - }), - be_str_weak(MtrInfo_one), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0403, // 0004 EQ R3 R2 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80000600, // 0006 RET 0 - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x780E0008, // 0009 JMPF R3 #0013 - 0x60100018, // 000A GETGBL R4 G24 - 0x58140002, // 000B LDCONST R5 K2 - 0x5C180600, // 000C MOVE R6 R3 - 0x7C100400, // 000D CALL R4 2 - 0xB8160600, // 000E GETNGBL R5 K3 - 0x8C140B04, // 000F GETMET R5 R5 K4 - 0x5C1C0800, // 0010 MOVE R7 R4 - 0x58200005, // 0011 LDCONST R8 K5 - 0x7C140600, // 0012 CALL R5 3 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_arg -********************************************************************/ -be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins_classes), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(), - }), - be_str_weak(get_plugin_class_arg), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0502, // 0005 GETMBR R3 R2 K2 - 0x70020000, // 0006 JMP #0008 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: k2l -********************************************************************/ -be_local_closure(class_Matter_Device_k2l, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Device), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - }), - be_str_weak(k2l), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100101, // 0008 GETMET R4 R0 K1 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020005, // 000B EXBLK 0 #0012 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x7C140400, // 0010 CALL R5 2 - 0x7001FFF9, // 0011 JMP #000C - 0x580C0003, // 0012 LDCONST R3 K3 - 0xAC0C0200, // 0013 CATCH R3 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x600C0010, // 0015 GETGBL R3 G16 - 0x6010000C, // 0016 GETGBL R4 G12 - 0x5C140400, // 0017 MOVE R5 R2 - 0x7C100200, // 0018 CALL R4 1 - 0x04100904, // 0019 SUB R4 R4 K4 - 0x40120804, // 001A CONNECT R4 K4 R4 - 0x7C0C0200, // 001B CALL R3 1 - 0xA8020010, // 001C EXBLK 0 #002E - 0x5C100600, // 001D MOVE R4 R3 - 0x7C100000, // 001E CALL R4 0 - 0x94140404, // 001F GETIDX R5 R2 R4 - 0x5C180800, // 0020 MOVE R6 R4 - 0x241C0D05, // 0021 GT R7 R6 K5 - 0x781E0008, // 0022 JMPF R7 #002C - 0x041C0D04, // 0023 SUB R7 R6 K4 - 0x941C0407, // 0024 GETIDX R7 R2 R7 - 0x241C0E05, // 0025 GT R7 R7 R5 - 0x781E0004, // 0026 JMPF R7 #002C - 0x041C0D04, // 0027 SUB R7 R6 K4 - 0x941C0407, // 0028 GETIDX R7 R2 R7 - 0x98080C07, // 0029 SETIDX R2 R6 R7 - 0x04180D04, // 002A SUB R6 R6 K4 - 0x7001FFF4, // 002B JMP #0021 - 0x98080C05, // 002C SETIDX R2 R6 R5 - 0x7001FFEE, // 002D JMP #001D - 0x580C0003, // 002E LDCONST R3 K3 - 0xAC0C0200, // 002F CATCH R3 1 0 - 0xB0080000, // 0030 RAISE 2 R0 R0 - 0x80040400, // 0031 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_basic_commissioning -********************************************************************/ -be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ - be_nested_proto( - 13, /* nstack */ - 8, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Wifi_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(mdns_announce_PASE), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - /* K3 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0xB8020200, // 0003 GETNGBL R0 K1 - 0x8C000102, // 0004 GETMET R0 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x7C000600, // 0007 CALL R0 3 - 0x80000000, // 0008 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning_open), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(commissioning_iterations), - /* K4 */ be_nested_str_weak(commissioning_discriminator), - /* K5 */ be_nested_str_weak(commissioning_salt), - /* K6 */ be_nested_str_weak(commissioning_w0), - /* K7 */ be_nested_str_weak(commissioning_L), - /* K8 */ be_nested_str_weak(commissioning_admin_fabric), - /* K9 */ be_nested_str_weak(wifi), - /* K10 */ be_nested_str_weak(up), - /* K11 */ be_nested_str_weak(eth), - /* K12 */ be_nested_str_weak(mdns_announce_PASE), - /* K13 */ be_nested_str_weak(add_rule), - /* K14 */ be_nested_str_weak(Wifi_X23Connected), - /* K15 */ be_nested_str_weak(Eth_X23Connected), - }), - be_str_weak(start_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xB8220200, // 0000 GETNGBL R8 K1 - 0x8C201102, // 0001 GETMET R8 R8 K2 - 0x7C200200, // 0002 CALL R8 1 - 0x542603E7, // 0003 LDINT R9 1000 - 0x08240209, // 0004 MUL R9 R1 R9 - 0x00201009, // 0005 ADD R8 R8 R9 - 0x90020008, // 0006 SETMBR R0 K0 R8 - 0x90020602, // 0007 SETMBR R0 K3 R2 - 0x90020803, // 0008 SETMBR R0 K4 R3 - 0x90020A04, // 0009 SETMBR R0 K5 R4 - 0x90020C05, // 000A SETMBR R0 K6 R5 - 0x90020E06, // 000B SETMBR R0 K7 R6 - 0x90021007, // 000C SETMBR R0 K8 R7 - 0xB8220200, // 000D GETNGBL R8 K1 - 0x8C201109, // 000E GETMET R8 R8 K9 - 0x7C200200, // 000F CALL R8 1 - 0x9420110A, // 0010 GETIDX R8 R8 K10 - 0x74220004, // 0011 JMPT R8 #0017 - 0xB8220200, // 0012 GETNGBL R8 K1 - 0x8C20110B, // 0013 GETMET R8 R8 K11 - 0x7C200200, // 0014 CALL R8 1 - 0x9420110A, // 0015 GETIDX R8 R8 K10 - 0x78220002, // 0016 JMPF R8 #001A - 0x8C20010C, // 0017 GETMET R8 R0 K12 - 0x7C200200, // 0018 CALL R8 1 - 0x7002000B, // 0019 JMP #0026 - 0xB8220200, // 001A GETNGBL R8 K1 - 0x8C20110D, // 001B GETMET R8 R8 K13 - 0x5828000E, // 001C LDCONST R10 K14 - 0x842C0000, // 001D CLOSURE R11 P0 - 0x5830000C, // 001E LDCONST R12 K12 - 0x7C200800, // 001F CALL R8 4 - 0xB8220200, // 0020 GETNGBL R8 K1 - 0x8C20110D, // 0021 GETMET R8 R8 K13 - 0x5828000F, // 0022 LDCONST R10 K15 - 0x842C0001, // 0023 CLOSURE R11 P1 - 0x5830000C, // 0024 LDCONST R12 K12 - 0x7C200800, // 0025 CALL R8 4 - 0xA0000000, // 0026 CLOSE R0 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_basic_commissioning -********************************************************************/ -be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(count_active_fabrics), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_root_basic_commissioning), - }), - be_str_weak(_init_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040302, // 0003 EQ R1 R1 K2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x8C040103, // 0005 GETMET R1 R0 K3 - 0x7C040200, // 0006 CALL R1 1 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_friendly_name -********************************************************************/ -be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(get_name), - /* K3 */ be_const_int(1), - }), - be_str_weak(find_plugin_by_friendly_name), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x1C080500, // 0006 EQ R2 R2 K0 - 0x780A0001, // 0007 JMPF R2 #000A - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - 0x58080000, // 000A LDCONST R2 K0 - 0x600C000C, // 000B GETGBL R3 G12 - 0x88100101, // 000C GETMBR R4 R0 K1 - 0x7C0C0200, // 000D CALL R3 1 - 0x140C0403, // 000E LT R3 R2 R3 - 0x780E0010, // 000F JMPF R3 #0021 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x940C0602, // 0011 GETIDX R3 R3 R2 - 0x8C100702, // 0012 GETMET R4 R3 K2 - 0x7C100200, // 0013 CALL R4 1 - 0x4C140000, // 0014 LDNIL R5 - 0x20140805, // 0015 NE R5 R4 R5 - 0x78160007, // 0016 JMPF R5 #001F - 0x6014000C, // 0017 GETGBL R5 G12 - 0x5C180800, // 0018 MOVE R6 R4 - 0x7C140200, // 0019 CALL R5 1 - 0x24140B00, // 001A GT R5 R5 K0 - 0x78160002, // 001B JMPF R5 #001F - 0x1C140801, // 001C EQ R5 R4 R1 - 0x78160000, // 001D JMPF R5 #001F - 0x80040600, // 001E RET 1 R3 - 0x00080503, // 001F ADD R2 R2 K3 - 0x7001FFE9, // 0020 JMP #000B - 0x4C0C0000, // 0021 LDNIL R3 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device_map -********************************************************************/ -be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ - be_nested_proto( - 19, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(START_ENDPOINT), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(light), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(channels), - /* K8 */ be_nested_str_weak(), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(light1), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(light2), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(light3), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(cmd), - /* K18 */ be_nested_str_weak(Status_X2013), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), - /* K21 */ be_nested_str_weak(contains), - /* K22 */ be_nested_str_weak(StatusSHT), - /* K23 */ be_nested_str_weak(SHT), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), - /* K25 */ be_nested_str_weak(Relay1), - /* K26 */ be_nested_str_weak(Relay2), - /* K27 */ be_nested_str_weak(push), - /* K28 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), - /* K29 */ be_nested_str_weak(TiltConfig), - /* K30 */ be_nested_str_weak(shutter_X2Btilt), - /* K31 */ be_nested_str_weak(shutter), - /* K32 */ be_nested_str_weak(get_power), - /* K33 */ be_nested_str_weak(relay), - /* K34 */ be_nested_str_weak(load), - /* K35 */ be_nested_str_weak(read_sensors), - /* K36 */ be_nested_str_weak(autoconf_sensors_list), - /* K37 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(autoconf_device_map), - &be_const_str_solidified, - ( &(const binstruction[262]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x60080013, // 0001 GETGBL R2 G19 - 0x7C080000, // 0002 CALL R2 0 - 0xB80E0200, // 0003 GETNGBL R3 K1 - 0x880C0702, // 0004 GETMBR R3 R3 K2 - 0x58100003, // 0005 LDCONST R4 K3 - 0xA4160800, // 0006 IMPORT R5 K4 - 0x8C180B05, // 0007 GETMET R6 R5 K5 - 0x58200003, // 0008 LDCONST R8 K3 - 0x7C180400, // 0009 CALL R6 2 - 0x4C1C0000, // 000A LDNIL R7 - 0x201C0C07, // 000B NE R7 R6 R7 - 0x781E0066, // 000C JMPF R7 #0074 - 0x601C000C, // 000D GETGBL R7 G12 - 0x8C200D06, // 000E GETMET R8 R6 K6 - 0x58280007, // 000F LDCONST R10 K7 - 0x582C0008, // 0010 LDCONST R11 K8 - 0x7C200600, // 0011 CALL R8 3 - 0x7C1C0200, // 0012 CALL R7 1 - 0x58100009, // 0013 LDCONST R4 K9 - 0x24200F03, // 0014 GT R8 R7 K3 - 0x7822005D, // 0015 JMPF R8 #0074 - 0x1C200F09, // 0016 EQ R8 R7 K9 - 0x7822001E, // 0017 JMPF R8 #0037 - 0x60200008, // 0018 GETGBL R8 G8 - 0x5C240600, // 0019 MOVE R9 R3 - 0x7C200200, // 001A CALL R8 1 - 0x60240013, // 001B GETGBL R9 G19 - 0x7C240000, // 001C CALL R9 0 - 0x9826150B, // 001D SETIDX R9 K10 K11 - 0x98081009, // 001E SETIDX R2 R8 R9 - 0x000C0709, // 001F ADD R3 R3 K9 - 0x58200009, // 0020 LDCONST R8 K9 - 0x4C240000, // 0021 LDNIL R9 - 0x8C280B05, // 0022 GETMET R10 R5 K5 - 0x5C301000, // 0023 MOVE R12 R8 - 0x7C280400, // 0024 CALL R10 2 - 0x5C241400, // 0025 MOVE R9 R10 - 0x4C2C0000, // 0026 LDNIL R11 - 0x2028140B, // 0027 NE R10 R10 R11 - 0x782A000C, // 0028 JMPF R10 #0036 - 0x60280008, // 0029 GETGBL R10 G8 - 0x5C2C0600, // 002A MOVE R11 R3 - 0x7C280200, // 002B CALL R10 1 - 0x602C0013, // 002C GETGBL R11 G19 - 0x7C2C0000, // 002D CALL R11 0 - 0x982E150B, // 002E SETIDX R11 K10 K11 - 0x00301109, // 002F ADD R12 R8 K9 - 0x982E080C, // 0030 SETIDX R11 K4 R12 - 0x9808140B, // 0031 SETIDX R2 R10 R11 - 0x000C0709, // 0032 ADD R3 R3 K9 - 0x00100909, // 0033 ADD R4 R4 K9 - 0x00201109, // 0034 ADD R8 R8 K9 - 0x7001FFEB, // 0035 JMP #0022 - 0x7002003C, // 0036 JMP #0074 - 0x1C200F0C, // 0037 EQ R8 R7 K12 - 0x78220008, // 0038 JMPF R8 #0042 - 0x60200008, // 0039 GETGBL R8 G8 - 0x5C240600, // 003A MOVE R9 R3 - 0x7C200200, // 003B CALL R8 1 - 0x60240013, // 003C GETGBL R9 G19 - 0x7C240000, // 003D CALL R9 0 - 0x9826150D, // 003E SETIDX R9 K10 K13 - 0x98081009, // 003F SETIDX R2 R8 R9 - 0x000C0709, // 0040 ADD R3 R3 K9 - 0x70020031, // 0041 JMP #0074 - 0x1C200F0E, // 0042 EQ R8 R7 K14 - 0x7822002B, // 0043 JMPF R8 #0070 - 0x60200008, // 0044 GETGBL R8 G8 - 0x5C240600, // 0045 MOVE R9 R3 - 0x7C200200, // 0046 CALL R8 1 - 0x60240013, // 0047 GETGBL R9 G19 - 0x7C240000, // 0048 CALL R9 0 - 0x9826150F, // 0049 SETIDX R9 K10 K15 - 0x98081009, // 004A SETIDX R2 R8 R9 - 0x000C0709, // 004B ADD R3 R3 K9 - 0x8C200B05, // 004C GETMET R8 R5 K5 - 0x58280009, // 004D LDCONST R10 K9 - 0x7C200400, // 004E CALL R8 2 - 0x4C240000, // 004F LDNIL R9 - 0x20241009, // 0050 NE R9 R8 R9 - 0x7826001C, // 0051 JMPF R9 #006F - 0x6024000C, // 0052 GETGBL R9 G12 - 0x8C281106, // 0053 GETMET R10 R8 K6 - 0x58300007, // 0054 LDCONST R12 K7 - 0x58340008, // 0055 LDCONST R13 K8 - 0x7C280600, // 0056 CALL R10 3 - 0x7C240200, // 0057 CALL R9 1 - 0x1C281309, // 0058 EQ R10 R9 K9 - 0x782A0009, // 0059 JMPF R10 #0064 - 0x60280008, // 005A GETGBL R10 G8 - 0x5C2C0600, // 005B MOVE R11 R3 - 0x7C280200, // 005C CALL R10 1 - 0x602C0013, // 005D GETGBL R11 G19 - 0x7C2C0000, // 005E CALL R11 0 - 0x982E150B, // 005F SETIDX R11 K10 K11 - 0x9808140B, // 0060 SETIDX R2 R10 R11 - 0x000C0709, // 0061 ADD R3 R3 K9 - 0x00100909, // 0062 ADD R4 R4 K9 - 0x7002000A, // 0063 JMP #006F - 0x1C28130C, // 0064 EQ R10 R9 K12 - 0x782A0008, // 0065 JMPF R10 #006F - 0x60280008, // 0066 GETGBL R10 G8 - 0x5C2C0600, // 0067 MOVE R11 R3 - 0x7C280200, // 0068 CALL R10 1 - 0x602C0013, // 0069 GETGBL R11 G19 - 0x7C2C0000, // 006A CALL R11 0 - 0x982E150D, // 006B SETIDX R11 K10 K13 - 0x9808140B, // 006C SETIDX R2 R10 R11 - 0x000C0709, // 006D ADD R3 R3 K9 - 0x00100909, // 006E ADD R4 R4 K9 - 0x70020003, // 006F JMP #0074 - 0x54220003, // 0070 LDINT R8 4 - 0x1C200E08, // 0071 EQ R8 R7 R8 - 0x78220000, // 0072 JMPF R8 #0074 - 0x7001FFFF, // 0073 JMP #0074 - 0xB81E2000, // 0074 GETNGBL R7 K16 - 0x8C1C0F11, // 0075 GETMET R7 R7 K17 - 0x58240012, // 0076 LDCONST R9 K18 - 0x50280200, // 0077 LDBOOL R10 1 0 - 0x7C1C0600, // 0078 CALL R7 3 - 0x60200012, // 0079 GETGBL R8 G18 - 0x7C200000, // 007A CALL R8 0 - 0xB8262600, // 007B GETNGBL R9 K19 - 0x60280008, // 007C GETGBL R10 G8 - 0x5C2C0E00, // 007D MOVE R11 R7 - 0x7C280200, // 007E CALL R10 1 - 0x002A280A, // 007F ADD R10 K20 R10 - 0x582C000E, // 0080 LDCONST R11 K14 - 0x7C240400, // 0081 CALL R9 2 - 0x4C240000, // 0082 LDNIL R9 - 0x20240E09, // 0083 NE R9 R7 R9 - 0x7826004D, // 0084 JMPF R9 #00D3 - 0x8C240F15, // 0085 GETMET R9 R7 K21 - 0x582C0016, // 0086 LDCONST R11 K22 - 0x7C240400, // 0087 CALL R9 2 - 0x78260049, // 0088 JMPF R9 #00D3 - 0x941C0F16, // 0089 GETIDX R7 R7 K22 - 0x58240003, // 008A LDCONST R9 K3 - 0x50280200, // 008B LDBOOL R10 1 0 - 0x782A0045, // 008C JMPF R10 #00D3 - 0x60280008, // 008D GETGBL R10 G8 - 0x5C2C1200, // 008E MOVE R11 R9 - 0x7C280200, // 008F CALL R10 1 - 0x002A2E0A, // 0090 ADD R10 K23 R10 - 0x8C2C0F15, // 0091 GETMET R11 R7 K21 - 0x5C341400, // 0092 MOVE R13 R10 - 0x7C2C0400, // 0093 CALL R11 2 - 0x742E0000, // 0094 JMPT R11 #0096 - 0x7002003C, // 0095 JMP #00D3 - 0x942C0E0A, // 0096 GETIDX R11 R7 R10 - 0xB8322600, // 0097 GETNGBL R12 K19 - 0x60340018, // 0098 GETGBL R13 G24 - 0x58380018, // 0099 LDCONST R14 K24 - 0x5C3C1400, // 009A MOVE R15 R10 - 0x60400008, // 009B GETGBL R16 G8 - 0x5C441600, // 009C MOVE R17 R11 - 0x7C400200, // 009D CALL R16 1 - 0x7C340600, // 009E CALL R13 3 - 0x5838000E, // 009F LDCONST R14 K14 - 0x7C300400, // 00A0 CALL R12 2 - 0x8C301706, // 00A1 GETMET R12 R11 K6 - 0x58380019, // 00A2 LDCONST R14 K25 - 0x543DFFFE, // 00A3 LDINT R15 -1 - 0x7C300600, // 00A4 CALL R12 3 - 0x8C341706, // 00A5 GETMET R13 R11 K6 - 0x583C001A, // 00A6 LDCONST R15 K26 - 0x5441FFFE, // 00A7 LDINT R16 -1 - 0x7C340600, // 00A8 CALL R13 3 - 0x24381903, // 00A9 GT R14 R12 K3 - 0x783A0002, // 00AA JMPF R14 #00AE - 0x8C38111B, // 00AB GETMET R14 R8 K27 - 0x04401909, // 00AC SUB R16 R12 K9 - 0x7C380400, // 00AD CALL R14 2 - 0x24381B03, // 00AE GT R14 R13 K3 - 0x783A0002, // 00AF JMPF R14 #00B3 - 0x8C38111B, // 00B0 GETMET R14 R8 K27 - 0x04401B09, // 00B1 SUB R16 R13 K9 - 0x7C380400, // 00B2 CALL R14 2 - 0xB83A2600, // 00B3 GETNGBL R14 K19 - 0x603C0018, // 00B4 GETGBL R15 G24 - 0x5840001C, // 00B5 LDCONST R16 K28 - 0x5C441800, // 00B6 MOVE R17 R12 - 0x5C481A00, // 00B7 MOVE R18 R13 - 0x7C3C0600, // 00B8 CALL R15 3 - 0x5840000E, // 00B9 LDCONST R16 K14 - 0x7C380400, // 00BA CALL R14 2 - 0x8C381706, // 00BB GETMET R14 R11 K6 - 0x5840001D, // 00BC LDCONST R16 K29 - 0x7C380400, // 00BD CALL R14 2 - 0x783A0002, // 00BE JMPF R14 #00C2 - 0x943C1D0C, // 00BF GETIDX R15 R14 K12 - 0x243C1F03, // 00C0 GT R15 R15 K3 - 0x743E0000, // 00C1 JMPT R15 #00C3 - 0x503C0001, // 00C2 LDBOOL R15 0 1 - 0x503C0200, // 00C3 LDBOOL R15 1 0 - 0x60400008, // 00C4 GETGBL R16 G8 - 0x5C440600, // 00C5 MOVE R17 R3 - 0x7C400200, // 00C6 CALL R16 1 - 0x60440013, // 00C7 GETGBL R17 G19 - 0x7C440000, // 00C8 CALL R17 0 - 0x783E0001, // 00C9 JMPF R15 #00CC - 0x5848001E, // 00CA LDCONST R18 K30 - 0x70020000, // 00CB JMP #00CD - 0x5848001F, // 00CC LDCONST R18 K31 - 0x98461412, // 00CD SETIDX R17 K10 R18 - 0x98463E09, // 00CE SETIDX R17 K31 R9 - 0x98082011, // 00CF SETIDX R2 R16 R17 - 0x000C0709, // 00D0 ADD R3 R3 K9 - 0x00241309, // 00D1 ADD R9 R9 K9 - 0x7001FFB7, // 00D2 JMP #008B - 0x6024000C, // 00D3 GETGBL R9 G12 - 0xB82A2000, // 00D4 GETNGBL R10 K16 - 0x8C281520, // 00D5 GETMET R10 R10 K32 - 0x7C280200, // 00D6 CALL R10 1 - 0x7C240200, // 00D7 CALL R9 1 - 0x58280003, // 00D8 LDCONST R10 K3 - 0x04241204, // 00D9 SUB R9 R9 R4 - 0x142C1409, // 00DA LT R11 R10 R9 - 0x782E0011, // 00DB JMPF R11 #00EE - 0x8C2C1106, // 00DC GETMET R11 R8 K6 - 0x5C341400, // 00DD MOVE R13 R10 - 0x7C2C0400, // 00DE CALL R11 2 - 0x4C300000, // 00DF LDNIL R12 - 0x1C2C160C, // 00E0 EQ R11 R11 R12 - 0x782E0009, // 00E1 JMPF R11 #00EC - 0x602C0008, // 00E2 GETGBL R11 G8 - 0x5C300600, // 00E3 MOVE R12 R3 - 0x7C2C0200, // 00E4 CALL R11 1 - 0x60300013, // 00E5 GETGBL R12 G19 - 0x7C300000, // 00E6 CALL R12 0 - 0x98321521, // 00E7 SETIDX R12 K10 K33 - 0x00341509, // 00E8 ADD R13 R10 K9 - 0x9832420D, // 00E9 SETIDX R12 K33 R13 - 0x9808160C, // 00EA SETIDX R2 R11 R12 - 0x000C0709, // 00EB ADD R3 R3 K9 - 0x00281509, // 00EC ADD R10 R10 K9 - 0x7001FFEB, // 00ED JMP #00DA - 0x8C2C0322, // 00EE GETMET R11 R1 K34 - 0xB8362000, // 00EF GETNGBL R13 K16 - 0x8C341B23, // 00F0 GETMET R13 R13 K35 - 0x7C340200, // 00F1 CALL R13 1 - 0x7C2C0400, // 00F2 CALL R11 2 - 0x8C300124, // 00F3 GETMET R12 R0 K36 - 0x5C381600, // 00F4 MOVE R14 R11 - 0x7C300400, // 00F5 CALL R12 2 - 0x60340010, // 00F6 GETGBL R13 G16 - 0x5C381800, // 00F7 MOVE R14 R12 - 0x7C340200, // 00F8 CALL R13 1 - 0xA8020007, // 00F9 EXBLK 0 #0102 - 0x5C381A00, // 00FA MOVE R14 R13 - 0x7C380000, // 00FB CALL R14 0 - 0x603C0008, // 00FC GETGBL R15 G8 - 0x5C400600, // 00FD MOVE R16 R3 - 0x7C3C0200, // 00FE CALL R15 1 - 0x98081E0E, // 00FF SETIDX R2 R15 R14 - 0x000C0709, // 0100 ADD R3 R3 K9 - 0x7001FFF7, // 0101 JMP #00FA - 0x58340025, // 0102 LDCONST R13 K37 - 0xAC340200, // 0103 CATCH R13 1 0 - 0xB0080000, // 0104 RAISE 2 R0 R0 - 0x80040400, // 0105 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_active_endpoints -********************************************************************/ -be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(plugins), - /* K1 */ be_nested_str_weak(get_endpoint), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_active_endpoints), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020011, // 0005 EXBLK 0 #0018 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140901, // 0008 GETMET R5 R4 K1 - 0x7C140200, // 0009 CALL R5 1 - 0x78060002, // 000A JMPF R1 #000E - 0x1C180B02, // 000B EQ R6 R5 K2 - 0x781A0000, // 000C JMPF R6 #000E - 0x7001FFF7, // 000D JMP #0006 - 0x8C180503, // 000E GETMET R6 R2 K3 - 0x5C200A00, // 000F MOVE R8 R5 - 0x7C180400, // 0010 CALL R6 2 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x781A0002, // 0013 JMPF R6 #0017 - 0x8C180504, // 0014 GETMET R6 R2 K4 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x7C180400, // 0016 CALL R6 2 - 0x7001FFED, // 0017 JMP #0006 - 0x580C0005, // 0018 LDCONST R3 K5 - 0xAC0C0200, // 0019 CATCH R3 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x80040400, // 001B RET 1 R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060000, // 0003 JMPF R1 #0005 + 0x80000200, // 0004 RET 0 + 0x88040168, // 0005 GETMBR R1 R0 K104 + 0x1C04030A, // 0006 EQ R1 R1 K10 + 0x74060004, // 0007 JMPT R1 #000D + 0xB8062C00, // 0008 GETNGBL R1 K22 + 0x8C0403EA, // 0009 GETMET R1 R1 K234 + 0x880C0168, // 000A GETMBR R3 R0 K104 + 0x7C040400, // 000B CALL R1 2 + 0x78060006, // 000C JMPF R1 #0014 + 0x8C0401EB, // 000D GETMET R1 R0 K235 + 0x7C040200, // 000E CALL R1 1 + 0xB8062C00, // 000F GETNGBL R1 K22 + 0x8C0403EC, // 0010 GETMET R1 R1 K236 + 0x880C0167, // 0011 GETMBR R3 R0 K103 + 0x7C040400, // 0012 CALL R1 2 + 0x9002D001, // 0013 SETMBR R0 K104 R1 + 0x80000000, // 0014 RET 0 }) ) ); @@ -6090,34 +3381,454 @@ be_local_closure(class_Matter_Device_MtrJoin, /* name */ be_nested_proto( 8, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(start_root_basic_commissioning), - /* K1 */ be_nested_str_weak(stop_basic_commissioning), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(resp_cmnd_done), - }), + &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(MtrJoin), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ + ( &(const binstruction[14]) { /* code */ 0x60140009, // 0000 GETGBL R5 G9 0x5C180600, // 0001 MOVE R6 R3 0x7C140200, // 0002 CALL R5 1 - 0x78160002, // 0003 JMPF R5 #0007 - 0x8C180100, // 0004 GETMET R6 R0 K0 - 0x7C180200, // 0005 CALL R6 1 - 0x70020001, // 0006 JMP #0009 - 0x8C180101, // 0007 GETMET R6 R0 K1 - 0x7C180200, // 0008 CALL R6 1 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x8C180D03, // 000A GETMET R6 R6 K3 - 0x7C180200, // 000B CALL R6 1 - 0x80000000, // 000C RET 0 + 0x78160003, // 0003 JMPF R5 #0008 + 0x88180106, // 0004 GETMBR R6 R0 K6 + 0x8C180DED, // 0005 GETMET R6 R6 K237 + 0x7C180200, // 0006 CALL R6 1 + 0x70020001, // 0007 JMP #000A + 0x8C18010D, // 0008 GETMET R6 R0 K13 + 0x7C180200, // 0009 CALL R6 1 + 0xB81A2C00, // 000A GETNGBL R6 K22 + 0x8C180DB0, // 000B GETMET R6 R6 K176 + 0x7C180200, // 000C CALL R6 1 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_sensors_list +********************************************************************/ +be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(autoconf_sensors_list), + &be_const_str_solidified, + ( &(const binstruction[119]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x8C100111, // 0003 GETMET R4 R0 K17 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020013, // 0007 EXBLK 0 #001C + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x94140204, // 000A GETIDX R5 R1 R4 + 0x6018000F, // 000B GETGBL R6 G15 + 0x5C1C0A00, // 000C MOVE R7 R5 + 0x60200013, // 000D GETGBL R8 G19 + 0x7C180400, // 000E CALL R6 2 + 0x781A000A, // 000F JMPF R6 #001B + 0x8C180B6C, // 0010 GETMET R6 R5 K108 + 0x582000EE, // 0011 LDCONST R8 K238 + 0x7C180400, // 0012 CALL R6 2 + 0x781A0006, // 0013 JMPF R6 #001B + 0x001809EF, // 0014 ADD R6 R4 K239 + 0x8C1C0562, // 0015 GETMET R7 R2 K98 + 0x60240013, // 0016 GETGBL R9 G19 + 0x7C240000, // 0017 CALL R9 0 + 0x982625F0, // 0018 SETIDX R9 K18 K240 + 0x9827E206, // 0019 SETIDX R9 K241 R6 + 0x7C1C0400, // 001A CALL R7 2 + 0x7001FFEB, // 001B JMP #0008 + 0x580C0014, // 001C LDCONST R3 K20 + 0xAC0C0200, // 001D CATCH R3 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x600C0010, // 001F GETGBL R3 G16 + 0x8C100111, // 0020 GETMET R4 R0 K17 + 0x5C180200, // 0021 MOVE R6 R1 + 0x7C100400, // 0022 CALL R4 2 + 0x7C0C0200, // 0023 CALL R3 1 + 0xA8020013, // 0024 EXBLK 0 #0039 + 0x5C100600, // 0025 MOVE R4 R3 + 0x7C100000, // 0026 CALL R4 0 + 0x94140204, // 0027 GETIDX R5 R1 R4 + 0x6018000F, // 0028 GETGBL R6 G15 + 0x5C1C0A00, // 0029 MOVE R7 R5 + 0x60200013, // 002A GETGBL R8 G19 + 0x7C180400, // 002B CALL R6 2 + 0x781A000A, // 002C JMPF R6 #0038 + 0x8C180B6C, // 002D GETMET R6 R5 K108 + 0x582000F2, // 002E LDCONST R8 K242 + 0x7C180400, // 002F CALL R6 2 + 0x781A0006, // 0030 JMPF R6 #0038 + 0x001809F3, // 0031 ADD R6 R4 K243 + 0x8C1C0562, // 0032 GETMET R7 R2 K98 + 0x60240013, // 0033 GETGBL R9 G19 + 0x7C240000, // 0034 CALL R9 0 + 0x982625F4, // 0035 SETIDX R9 K18 K244 + 0x9827E206, // 0036 SETIDX R9 K241 R6 + 0x7C1C0400, // 0037 CALL R7 2 + 0x7001FFEB, // 0038 JMP #0025 + 0x580C0014, // 0039 LDCONST R3 K20 + 0xAC0C0200, // 003A CATCH R3 1 0 + 0xB0080000, // 003B RAISE 2 R0 R0 + 0x600C0010, // 003C GETGBL R3 G16 + 0x8C100111, // 003D GETMET R4 R0 K17 + 0x5C180200, // 003E MOVE R6 R1 + 0x7C100400, // 003F CALL R4 2 + 0x7C0C0200, // 0040 CALL R3 1 + 0xA8020013, // 0041 EXBLK 0 #0056 + 0x5C100600, // 0042 MOVE R4 R3 + 0x7C100000, // 0043 CALL R4 0 + 0x94140204, // 0044 GETIDX R5 R1 R4 + 0x6018000F, // 0045 GETGBL R6 G15 + 0x5C1C0A00, // 0046 MOVE R7 R5 + 0x60200013, // 0047 GETGBL R8 G19 + 0x7C180400, // 0048 CALL R6 2 + 0x781A000A, // 0049 JMPF R6 #0055 + 0x8C180B6C, // 004A GETMET R6 R5 K108 + 0x582000F5, // 004B LDCONST R8 K245 + 0x7C180400, // 004C CALL R6 2 + 0x781A0006, // 004D JMPF R6 #0055 + 0x001809F6, // 004E ADD R6 R4 K246 + 0x8C1C0562, // 004F GETMET R7 R2 K98 + 0x60240013, // 0050 GETGBL R9 G19 + 0x7C240000, // 0051 CALL R9 0 + 0x982625F7, // 0052 SETIDX R9 K18 K247 + 0x9827E206, // 0053 SETIDX R9 K241 R6 + 0x7C1C0400, // 0054 CALL R7 2 + 0x7001FFEB, // 0055 JMP #0042 + 0x580C0014, // 0056 LDCONST R3 K20 + 0xAC0C0200, // 0057 CATCH R3 1 0 + 0xB0080000, // 0058 RAISE 2 R0 R0 + 0x600C0010, // 0059 GETGBL R3 G16 + 0x8C100111, // 005A GETMET R4 R0 K17 + 0x5C180200, // 005B MOVE R6 R1 + 0x7C100400, // 005C CALL R4 2 + 0x7C0C0200, // 005D CALL R3 1 + 0xA8020013, // 005E EXBLK 0 #0073 + 0x5C100600, // 005F MOVE R4 R3 + 0x7C100000, // 0060 CALL R4 0 + 0x94140204, // 0061 GETIDX R5 R1 R4 + 0x6018000F, // 0062 GETGBL R6 G15 + 0x5C1C0A00, // 0063 MOVE R7 R5 + 0x60200013, // 0064 GETGBL R8 G19 + 0x7C180400, // 0065 CALL R6 2 + 0x781A000A, // 0066 JMPF R6 #0072 + 0x8C180B6C, // 0067 GETMET R6 R5 K108 + 0x582000F8, // 0068 LDCONST R8 K248 + 0x7C180400, // 0069 CALL R6 2 + 0x781A0006, // 006A JMPF R6 #0072 + 0x001809F9, // 006B ADD R6 R4 K249 + 0x8C1C0562, // 006C GETMET R7 R2 K98 + 0x60240013, // 006D GETGBL R9 G19 + 0x7C240000, // 006E CALL R9 0 + 0x982625FA, // 006F SETIDX R9 K18 K250 + 0x9827E206, // 0070 SETIDX R9 K241 R6 + 0x7C1C0400, // 0071 CALL R7 2 + 0x7001FFEB, // 0072 JMP #005F + 0x580C0014, // 0073 LDCONST R3 K20 + 0xAC0C0200, // 0074 CATCH R3 1 0 + 0xB0080000, // 0075 RAISE 2 R0 R0 + 0x80040400, // 0076 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrInfo_one +********************************************************************/ +be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(MtrInfo_one), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x8C08014B, // 0000 GETMET R2 R0 K75 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0403, // 0004 EQ R3 R2 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80000600, // 0006 RET 0 + 0x8C0C05CF, // 0007 GETMET R3 R2 K207 + 0x7C0C0200, // 0008 CALL R3 1 + 0x780E0008, // 0009 JMPF R3 #0013 + 0x60100018, // 000A GETGBL R4 G24 + 0x581400FB, // 000B LDCONST R5 K251 + 0x5C180600, // 000C MOVE R6 R3 + 0x7C100400, // 000D CALL R4 2 + 0xB8162C00, // 000E GETNGBL R5 K22 + 0x8C140B80, // 000F GETMET R5 R5 K128 + 0x5C1C0800, // 0010 MOVE R7 R4 + 0x58200010, // 0011 LDCONST R8 K16 + 0x7C140600, // 0012 CALL R5 3 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: button_handler +********************************************************************/ +be_local_closure(class_Matter_Device_button_handler, /* name */ + be_nested_proto( + 14, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(button_handler), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x5814000A, // 0000 LDCONST R5 K10 + 0xA41B0A00, // 0001 IMPORT R6 K133 + 0x601C000C, // 0002 GETGBL R7 G12 + 0x8820011E, // 0003 GETMBR R8 R0 K30 + 0x7C1C0200, // 0004 CALL R7 1 + 0x141C0A07, // 0005 LT R7 R5 R7 + 0x781E0010, // 0006 JMPF R7 #0018 + 0x881C011E, // 0007 GETMBR R7 R0 K30 + 0x941C0E05, // 0008 GETIDX R7 R7 R5 + 0x8C200D6C, // 0009 GETMET R8 R6 K108 + 0x5C280E00, // 000A MOVE R10 R7 + 0x582C006A, // 000B LDCONST R11 K106 + 0x7C200600, // 000C CALL R8 3 + 0x78220007, // 000D JMPF R8 #0016 + 0x8820011E, // 000E GETMBR R8 R0 K30 + 0x94201005, // 000F GETIDX R8 R8 R5 + 0x8C20116A, // 0010 GETMET R8 R8 K106 + 0x5C280200, // 0011 MOVE R10 R1 + 0x5C2C0400, // 0012 MOVE R11 R2 + 0x5C300600, // 0013 MOVE R12 R3 + 0x5C340800, // 0014 MOVE R13 R4 + 0x7C200A00, // 0015 CALL R8 5 + 0x00140B38, // 0016 ADD R5 R5 K56 + 0x7001FFE9, // 0017 JMP #0002 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_50ms +********************************************************************/ +be_local_closure(class_Matter_Device_every_50ms, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(every_50ms), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x8804011D, // 0000 GETMBR R1 R0 K29 + 0x00040338, // 0001 ADD R1 R1 K56 + 0x90023A01, // 0002 SETMBR R0 K29 R1 + 0x88040127, // 0003 GETMBR R1 R0 K39 + 0x8C0403FC, // 0004 GETMET R1 R1 K252 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_class_arg +********************************************************************/ +be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(get_plugin_class_arg), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x8808017A, // 0000 GETMBR R2 R0 K122 + 0x8C080539, // 0001 GETMET R2 R2 K57 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C05FD, // 0005 GETMBR R3 R2 K253 + 0x70020000, // 0006 JMP #0008 + 0x580C0010, // 0007 LDCONST R3 K16 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_remotes_info +********************************************************************/ +be_local_closure(class_Matter_Device_update_remotes_info, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(update_remotes_info), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x8808016B, // 0002 GETMBR R2 R0 K107 + 0x4C0C0000, // 0003 LDNIL R3 + 0x20080403, // 0004 NE R2 R2 R3 + 0x780A0018, // 0005 JMPF R2 #001F + 0x60080010, // 0006 GETGBL R2 G16 + 0x880C016B, // 0007 GETMBR R3 R0 K107 + 0x8C0C0766, // 0008 GETMET R3 R3 K102 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7C080200, // 000A CALL R2 1 + 0xA802000F, // 000B EXBLK 0 #001C + 0x5C0C0400, // 000C MOVE R3 R2 + 0x7C0C0000, // 000D CALL R3 0 + 0x8810016B, // 000E GETMBR R4 R0 K107 + 0x94100803, // 000F GETIDX R4 R4 R3 + 0x8C1009FE, // 0010 GETMET R4 R4 K254 + 0x7C100200, // 0011 CALL R4 1 + 0x4C140000, // 0012 LDNIL R5 + 0x20140805, // 0013 NE R5 R4 R5 + 0x78160005, // 0014 JMPF R5 #001B + 0x6014000C, // 0015 GETGBL R5 G12 + 0x5C180800, // 0016 MOVE R6 R4 + 0x7C140200, // 0017 CALL R5 1 + 0x24140B0A, // 0018 GT R5 R5 K10 + 0x78160000, // 0019 JMPF R5 #001B + 0x98040604, // 001A SETIDX R1 R3 R4 + 0x7001FFEF, // 001B JMP #000C + 0x58080014, // 001C LDCONST R2 K20 + 0xAC080200, // 001D CATCH R2 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x90023E01, // 001F SETMBR R0 K31 R1 + 0x80040200, // 0020 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: k2l +********************************************************************/ +be_local_closure(class_Matter_Device_k2l, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(k2l), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x5804000F, // 0000 LDCONST R1 K15 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100166, // 0008 GETMET R4 R0 K102 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020005, // 000B EXBLK 0 #0012 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140562, // 000E GETMET R5 R2 K98 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x7C140400, // 0010 CALL R5 2 + 0x7001FFF9, // 0011 JMP #000C + 0x580C0014, // 0012 LDCONST R3 K20 + 0xAC0C0200, // 0013 CATCH R3 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x600C0010, // 0015 GETGBL R3 G16 + 0x6010000C, // 0016 GETGBL R4 G12 + 0x5C140400, // 0017 MOVE R5 R2 + 0x7C100200, // 0018 CALL R4 1 + 0x04100938, // 0019 SUB R4 R4 K56 + 0x40127004, // 001A CONNECT R4 K56 R4 + 0x7C0C0200, // 001B CALL R3 1 + 0xA8020010, // 001C EXBLK 0 #002E + 0x5C100600, // 001D MOVE R4 R3 + 0x7C100000, // 001E CALL R4 0 + 0x94140404, // 001F GETIDX R5 R2 R4 + 0x5C180800, // 0020 MOVE R6 R4 + 0x241C0D0A, // 0021 GT R7 R6 K10 + 0x781E0008, // 0022 JMPF R7 #002C + 0x041C0D38, // 0023 SUB R7 R6 K56 + 0x941C0407, // 0024 GETIDX R7 R2 R7 + 0x241C0E05, // 0025 GT R7 R7 R5 + 0x781E0004, // 0026 JMPF R7 #002C + 0x041C0D38, // 0027 SUB R7 R6 K56 + 0x941C0407, // 0028 GETIDX R7 R2 R7 + 0x98080C07, // 0029 SETIDX R2 R6 R7 + 0x04180D38, // 002A SUB R6 R6 K56 + 0x7001FFF4, // 002B JMP #0021 + 0x98080C05, // 002C SETIDX R2 R6 R5 + 0x7001FFEE, // 002D JMP #001D + 0x580C0014, // 002E LDCONST R3 K20 + 0xAC0C0200, // 002F CATCH R3 1 0 + 0xB0080000, // 0030 RAISE 2 R0 R0 + 0x80040400, // 0031 RET 1 R2 }) ) ); @@ -6128,126 +3839,51 @@ be_local_closure(class_Matter_Device_MtrJoin, /* name */ ** Solidified class: Matter_Device ********************************************************************/ be_local_class(Matter_Device, - 34, + 22, NULL, - be_nested_map(115, + be_nested_map(79, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(start_commissioning_complete, 110), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) }, - { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, - { be_const_key_weak(remove_fabric, 17), be_const_closure(class_Matter_Device_remove_fabric_closure) }, - { be_const_key_weak(_mdns_announce_hostname, 36), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) }, - { be_const_key_weak(add_read_sensors_schedule, -1), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, - { be_const_key_weak(every_second, 109), be_const_closure(class_Matter_Device_every_second_closure) }, - { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) }, - { be_const_key_weak(commissioning_w0, -1), be_const_var(16) }, - { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_Device_msg_received_closure) }, - { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, - { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) }, - { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(33) }, - { be_const_key_weak(get_active_endpoints, 81), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, - { be_const_key_weak(commissioning_salt, -1), be_const_var(15) }, - { be_const_key_weak(autoconf_device, 84), be_const_closure(class_Matter_Device_autoconf_device_closure) }, - { be_const_key_weak(ipv4only, -1), be_const_var(28) }, - { be_const_key_weak(PASE_TIMEOUT, 37), be_const_int(600) }, - { be_const_key_weak(ui, 6), be_const_var(9) }, - { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, - { be_const_key_weak(button_handler, -1), be_const_closure(class_Matter_Device_button_handler_closure) }, - { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, - { be_const_key_weak(find_plugin_by_friendly_name, 86), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, - { be_const_key_weak(debug, 95), be_const_var(31) }, - { be_const_key_weak(events, 52), be_const_var(11) }, - { be_const_key_weak(resolve_attribute_read_solo, -1), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) }, - { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, - { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, - { be_const_key_weak(button_multi_pressed, 98), be_const_closure(class_Matter_Device_button_multi_pressed_closure) }, - { be_const_key_weak(udp_server, 76), be_const_var(5) }, - { be_const_key_weak(message_handler, -1), be_const_var(7) }, - { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) }, - { be_const_key_weak(plugins, -1), be_const_var(1) }, - { be_const_key_weak(invoke_request, 9), be_const_closure(class_Matter_Device_invoke_request_closure) }, - { be_const_key_weak(_init_basic_commissioning, -1), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) }, - { be_const_key_weak(disable_bridge_mode, 11), be_const_var(29) }, - { be_const_key_weak(start_basic_commissioning, 77), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) }, - { be_const_key_weak(sessions, -1), be_const_var(8) }, - { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, - { be_const_key_weak(MtrInfo_one, 79), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, - { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) }, - { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(24) }, - { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(19) }, - { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) }, - { be_const_key_weak(save_before_restart, 103), be_const_closure(class_Matter_Device_save_before_restart_closure) }, - { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, - { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) }, - { be_const_key_weak(next_ep, -1), be_const_var(30) }, - { be_const_key_weak(conf_to_log, -1), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, - { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, - { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) }, - { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, - { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, - { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, - { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, - { be_const_key_weak(find_plugin_by_endpoint, 64), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, - { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, - { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(is_commissioning_open, 74), be_const_closure(class_Matter_Device_is_commissioning_open_closure) }, - { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, - { be_const_key_weak(init, 45), be_const_closure(class_Matter_Device_init_closure) }, - { be_const_key_weak(read_sensors_scheduler, 87), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, - { be_const_key_weak(bridge_remove_endpoint, 12), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, - { be_const_key_weak(http_remotes, -1), be_const_var(25) }, - { be_const_key_weak(tick, -1), be_const_var(10) }, - { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, - { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) }, - { be_const_key_weak(_trigger_read_sensors, 96), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, - { be_const_key_weak(MtrUpdate, -1), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, - { be_const_key_weak(commissioning_open, -1), be_const_var(12) }, - { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Device_generate_random_passcode_closure) }, - { be_const_key_weak(hostname_wifi, 78), be_const_var(21) }, - { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) }, - { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, - { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, - { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(18) }, - { be_const_key_weak(compute_manual_pairing_code, 93), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) }, - { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(12, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(11111111), - be_const_int(22222222), - be_const_int(33333333), - be_const_int(44444444), - be_const_int(55555555), - be_const_int(66666666), - be_const_int(77777777), - be_const_int(88888888), - be_const_int(99999999), - be_const_int(12345678), - be_const_int(87654321), - })) ) } )) }, - { be_const_key_weak(VENDOR_ID, 68), be_const_int(65521) }, - { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, 101), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) }, - { be_const_key_weak(commissioning_iterations, -1), be_const_var(13) }, - { be_const_key_weak(profiler, -1), be_const_var(6) }, - { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, - { be_const_key_weak(commissioning_L, -1), be_const_var(17) }, - { be_const_key_weak(commissioning_discriminator, -1), be_const_var(14) }, - { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) }, - { be_const_key_weak(button_pressed, -1), be_const_closure(class_Matter_Device_button_pressed_closure) }, - { be_const_key_weak(msg_send, 35), be_const_closure(class_Matter_Device_msg_send_closure) }, - { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, 55), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(probe_sensor_time, 47), be_const_var(32) }, - { be_const_key_weak(get_plugin_class_displayname, 70), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, - { be_const_key_weak(root_discriminator, -1), be_const_var(26) }, - { be_const_key_weak(signal_endpoints_changed, 4), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, - { be_const_key_weak(PBKDF_ITERATIONS, 58), be_const_int(1000) }, - { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, - { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Device_start_operational_discovery_closure) }, - { be_const_key_weak(stop, 51), be_const_closure(class_Matter_Device_stop_closure) }, - { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, { be_const_key_weak(received_ack, -1), be_const_closure(class_Matter_Device_received_ack_closure) }, - { be_const_key_weak(plugins_classes, 38), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, + { be_const_key_weak(plugins, -1), be_const_var(1) }, + { be_const_key_weak(msg_send, -1), be_const_closure(class_Matter_Device_msg_send_closure) }, + { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, + { be_const_key_weak(message_handler, -1), be_const_var(7) }, + { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, + { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) }, + { be_const_key_weak(probe_sensor_time, 1), be_const_var(20) }, + { be_const_key_weak(conf_to_log, 50), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, + { be_const_key_weak(ui, -1), be_const_var(10) }, + { be_const_key_weak(root_passcode, -1), be_const_var(15) }, + { be_const_key_weak(every_50ms, 22), be_const_closure(class_Matter_Device_every_50ms_closure) }, + { be_const_key_weak(profiler, -1), be_const_var(6) }, + { be_const_key_weak(disable_bridge_mode, -1), be_const_var(17) }, + { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) }, + { be_const_key_weak(resolve_attribute_read_solo, 66), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) }, + { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, + { be_const_key_weak(autoconf_device, 69), be_const_closure(class_Matter_Device_autoconf_device_closure) }, + { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, + { be_const_key_weak(get_active_endpoints, -1), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(button_handler, 37), be_const_closure(class_Matter_Device_button_handler_closure) }, + { be_const_key_weak(debug, 3), be_const_var(19) }, + { be_const_key_weak(stop, 43), be_const_closure(class_Matter_Device_stop_closure) }, + { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, + { be_const_key_weak(add_read_sensors_schedule, 49), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, + { be_const_key_weak(button_pressed, -1), be_const_closure(class_Matter_Device_button_pressed_closure) }, + { be_const_key_weak(register_http_remote, 53), be_const_closure(class_Matter_Device_register_http_remote_closure) }, + { be_const_key_weak(root_discriminator, -1), be_const_var(14) }, + { be_const_key_weak(start, 4), be_const_closure(class_Matter_Device_start_closure) }, + { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, + { be_const_key_weak(autoconf_sensors_list, 40), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, + { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, + { be_const_key_weak(plugins_config, -1), be_const_var(3) }, + { be_const_key_weak(http_remotes, 11), be_const_var(13) }, + { be_const_key_weak(get_plugin_remote_info, 58), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, + { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, + { be_const_key_weak(tick, 46), be_const_var(11) }, + { be_const_key_weak(clean_remotes, 72), be_const_closure(class_Matter_Device_clean_remotes_closure) }, + { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(53, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) }, @@ -6304,20 +3940,44 @@ be_local_class(Matter_Device, { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, })) ) } )) }, - { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) }, - { be_const_key_weak(k2l, -1), be_const_static_closure(class_Matter_Device_k2l_closure) }, - { be_const_key_weak(plugins_config, -1), be_const_var(3) }, - { be_const_key_weak(hostname_eth, 33), be_const_var(22) }, - { be_const_key_weak(every_250ms, 28), be_const_closure(class_Matter_Device_every_250ms_closure) }, - { be_const_key_weak(register_commands, 21), be_const_closure(class_Matter_Device_register_commands_closure) }, - { be_const_key_weak(MtrInfo, 20), be_const_closure(class_Matter_Device_MtrInfo_closure) }, - { be_const_key_weak(root_passcode, -1), be_const_var(27) }, - { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) }, - { be_const_key_weak(mdns_pase_eth, -1), be_const_var(23) }, - { be_const_key_weak(started, -1), be_const_var(0) }, - { be_const_key_weak(commissioning_instance_eth, 7), be_const_var(20) }, - { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, + { be_const_key_weak(udp_server, -1), be_const_var(5) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, + { be_const_key_weak(button_multi_pressed, -1), be_const_closure(class_Matter_Device_button_multi_pressed_closure) }, + { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, + { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(21) }, + { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Device_every_250ms_closure) }, + { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, + { be_const_key_weak(msg_received, 44), be_const_closure(class_Matter_Device_msg_received_closure) }, + { be_const_key_weak(events, -1), be_const_var(12) }, + { be_const_key_weak(VENDOR_ID, 63), be_const_int(65521) }, + { be_const_key_weak(MtrInfo, -1), be_const_closure(class_Matter_Device_MtrInfo_closure) }, + { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, + { be_const_key_weak(ipv4only, -1), be_const_var(16) }, + { be_const_key_weak(commissioning, -1), be_const_var(8) }, + { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, + { be_const_key_weak(sessions, 55), be_const_var(9) }, + { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(register_commands, -1), be_const_closure(class_Matter_Device_register_commands_closure) }, + { be_const_key_weak(next_ep, -1), be_const_var(18) }, + { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, + { be_const_key_weak(bridge_remove_endpoint, -1), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, + { be_const_key_weak(bridge_add_endpoint, 64), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, + { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, + { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, + { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) }, + { be_const_key_weak(find_plugin_by_friendly_name, 41), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, + { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, + { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, + { be_const_key_weak(sort_distinct, 32), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(started, 31), be_const_var(0) }, + { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, + { be_const_key_weak(invoke_request, 14), be_const_closure(class_Matter_Device_invoke_request_closure) }, + { be_const_key_weak(MtrUpdate, 13), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, + { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, + { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, + { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, + { be_const_key_weak(k2l, -1), be_const_static_closure(class_Matter_Device_k2l_closure) }, })), be_str_weak(Matter_Device) ); From b4a0e2785267adc9849f78171e285beb07aa6136 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 30 Jul 2024 21:17:21 +0200 Subject: [PATCH 214/252] Matter refactor autoconf (#21872) --- .../berry_matter/src/be_matter_module.c | 2 + .../berry_matter/src/embedded/Matter_UI.be | 92 +- .../src/embedded/Matter_z_Autoconf.be | 240 + .../src/embedded/Matter_z_Commissioning.be | 3 +- .../src/embedded/Matter_zz_Device.be | 233 +- .../src/solidify/solidified_Matter_UI.h | 1510 +++-- .../solidify/solidified_Matter_z_Autoconf.h | 728 +++ .../solidified_Matter_z_Commissioning.h | 2779 +++++---- .../solidify/solidified_Matter_zz_Device.h | 5172 ++++++++--------- 9 files changed, 5433 insertions(+), 5326 deletions(-) create mode 100644 lib/libesp32/berry_matter/src/embedded/Matter_z_Autoconf.be create mode 100644 lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Autoconf.h diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index b5901619b..d2c4051f6 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -232,6 +232,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Control_Message.h" #include "solidify/solidified_Matter_Plugin_0.h" #include "solidify/solidified_Matter_z_Commissioning.h" +#include "solidify/solidified_Matter_z_Autoconf.h" #include "solidify/solidified_Matter_Base38.h" #include "solidify/solidified_Matter_UI.h" #include "solidify/solidified_Matter_Profiler.h" @@ -473,6 +474,7 @@ module matter (scope: global, strings: weak) { // Commissioning Commissioning, class(be_class_Matter_Commissioning) + Autoconf, class(be_class_Matter_Autoconf) // QR Code QRCode, class(be_class_Matter_QRCode) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index 3bd31aa98..a1332b252 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -196,9 +196,9 @@ class Matter_UI def show_passcode_form() import webserver - webserver.content_send("
 Matter Advanced Configuration 

") - # - webserver.content_send("
" + webserver.content_send("
 Matter Advanced Configuration 

" + + "" "

Passcode:

") webserver.content_send(f"") webserver.content_send("

Distinguish id:

") @@ -240,9 +240,9 @@ class Matter_UI webserver.content_send("") webserver.content_send(f"") - webserver.content_send("

") - - webserver.content_send("

") + webserver.content_send("

" + + "

") end end @@ -378,8 +378,8 @@ class Matter_UI var remote_html = webserver.html_escape(remote) var host_device_name = webserver.html_escape( self.device.get_plugin_remote_info(remote).find('name', remote) ) webserver.content_send(f"🔗
{host_device_name}") - webserver.content_send("") - webserver.content_send("" + webserver.content_send("
" + "" "" "" "" + "" + "
" @@ -440,45 +440,46 @@ class Matter_UI # Add new endpoint section self.show_plugins_hints_js(self._CLASSES_TYPES) - webserver.content_send("

 Add to Configuration 

") - webserver.content_send("

Add local sensor or device

" + webserver.content_send("

 Add to Configuration 

" + "

Add local sensor or device

" "
" - "") - webserver.content_send("" + "
" + "" "" "" "" - "") - - webserver.content_send("" + "" + + "" "" "") - webserver.content_send("" - "
NameTypeParameter
") - - webserver.content_send("
") - webserver.content_send("
") + webserver.content_send("
" + + "
" + "" # Add remote endpoint - webserver.content_send("

Add Remote Tasmota or OpenBK

" + "

Add Remote Tasmota or OpenBK

" "
" - "") - webserver.content_send("" - "
http:///
") - - webserver.content_send("
") - webserver.content_send("

") + "" + + "" + "
http:///
" + + "
" + "
" # button "Reset and Auto-discover" - webserver.content_send("
" - "

") - - webserver.content_send("

") + "

" + + "

") end @@ -554,8 +555,8 @@ class Matter_UI self.show_plugins_configuration() end - webserver.content_send("
") - webserver.content_send("

") + webserver.content_send("
" + "

") webserver.content_button(webserver.BUTTON_CONFIGURATION) webserver.content_stop() #- end of web page -# @@ -617,7 +618,7 @@ class Matter_UI # detect sensors - config_list += self.device.autoconf_sensors_list(status10) + config_list += self.device.autoconf.autoconf_sensors_list(status10) return config_list end @@ -703,13 +704,13 @@ class Matter_UI webserver.content_send("") # end of table - webserver.content_send("") - - webserver.content_send("
") - webserver.content_send("") - - webserver.content_send("") + webserver.content_send("" + + "
" + "" + + "") else webserver.content_send(format("

Unable to connect to '%s'

", webserver.html_escape(url))) @@ -831,8 +832,7 @@ class Matter_UI #---------------------------------------------------------------------# elif webserver.has_arg("auto") log(format("MTR: /matterc received '%s' command", 'auto'), 3) - self.device.plugins_persist = false - self.device.save_param() + self.device.reset_param() #- and force restart -# webserver.redirect("/?rst=") diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_z_Autoconf.be b/lib/libesp32/berry_matter/src/embedded/Matter_z_Autoconf.be new file mode 100644 index 000000000..0592669d2 --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_z_Autoconf.be @@ -0,0 +1,240 @@ +# +# Matter_z_Autoconf.be - implements autoconfiguration of Matter from Tasmota native features +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +#@ solidify:Matter_Autoconf,weak + +class Matter_Autoconf + var device # reference to the main Device instance + + ############################################################# + def init(device) + self.device = device + end + + ############################################################# + # Load plugins configuration from json + # + # 'config' is a map + # Ex: + # {'32': {'filter': 'AXP192#Temperature', 'type': 'temperature'}, '40': {'filter': 'BMP280#Pressure', 'type': 'pressure'}, '34': {'filter': 'SHT3X#Temperature', 'type': 'temperature'}, '33': {'filter': 'BMP280#Temperature', 'type': 'temperature'}, '1': {'relay': 0, 'type': 'relay'}, '56': {'filter': 'SHT3X#Humidity', 'type': 'humidity'}, '0': {'type': 'root'}} + def instantiate_plugins_from_config(config) + var endpoints = self.device.k2l_num(config) + var plugins = self.device.plugins + + # start with mandatory endpoint 0 for root node + plugins.push(matter.Plugin_Root(self.device, 0, {})) + log("MTR: Configuring endpoints", 2) + log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2) + + # always include an aggregator for dynamic endpoints + plugins.push(matter.Plugin_Aggregator(self.device, matter.AGGREGATOR_ENDPOINT, {})) + log(format("MTR: endpoint = %5i type:%s%s", matter.AGGREGATOR_ENDPOINT, 'aggregator', ''), 2) + + for ep: endpoints + if ep == 0 continue end # skip endpoint 0 + try + var plugin_conf = config[str(ep)] + # log(format("MTR: endpoint %i config %s", ep, plugin_conf), 3) + + var pi_class_name = plugin_conf.find('type') + if pi_class_name == nil log("MTR: no class name, skipping", 3) continue end + if pi_class_name == 'root' log("MTR: only one root node allowed", 3) continue end + var pi_class = self.device.plugins_classes.find(pi_class_name) + if pi_class == nil log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 2) continue end + + var pi = pi_class(self.device, ep, plugin_conf) + plugins.push(pi) + + log(format("MTR: endpoint = %5i type:%s%s", ep, pi_class_name, self.device.conf_to_log(plugin_conf)), 2) + except .. as e, m + log("MTR: Exception" + str(e) + "|" + str(m), 2) + end + end + + tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter') + end + + ############################################################# + # Autoconfigure device from template to map + # + # Applies only if there are no plugins already configured + def autoconf_device_map() + import json + var m = {} + + # check if we have a light + var endpoint = matter.START_ENDPOINT + var light_present = 0 + + import light + var light_status = light.get(0) + if light_status != nil + var channels_count = size(light_status.find('channels', "")) + light_present = 1 + if channels_count > 0 + if channels_count == 1 + m[str(endpoint)] = {'type':'light1'} + endpoint += 1 + # check if we have secondary Dimmer lights (SetOption68 1) + var idx = 1 + var light_status_i + while (light_status_i := light.get(idx)) != nil + m[str(endpoint)] = {'type':'light1','light':idx + 1} # arg is 1-based so add 1 + endpoint += 1 + light_present += 1 + idx += 1 + end + elif channels_count == 2 + m[str(endpoint)] = {'type':'light2'} + endpoint += 1 + elif channels_count == 3 + m[str(endpoint)] = {'type':'light3'} + endpoint += 1 + # check if we have a split second light (SetOption37 128) with 4/5 channels + var light_status1 = light.get(1) + if (light_status1 != nil) + var channels_count1 = size(light_status1.find('channels', "")) + + if (channels_count1 == 1) + m[str(endpoint)] = {'type':'light1'} + endpoint += 1 + light_present += 1 + elif (channels_count1 == 2) + m[str(endpoint)] = {'type':'light2'} + endpoint += 1 + light_present += 1 + end + end + elif channels_count == 4 + # not supported yet + else # only option left is 5 channels + # not supported yet + end + end + end + + # handle shutters before relays (as we steal relays for shutters) + var r_st13 = tasmota.cmd("Status 13", true) # issue `Status 13` + var relays_reserved = [] # list of relays that are used for non-relay (shutters) + log("MTR: Status 13 = "+str(r_st13), 3) + + if r_st13 != nil && r_st13.contains('StatusSHT') + r_st13 = r_st13['StatusSHT'] # skip root + # Shutter is enabled, iterate + var idx = 0 + while true + var k = 'SHT' + str(idx) # SHT is zero based + if !r_st13.contains(k) break end # no more SHTxxx + var d = r_st13[k] + log(format("MTR: '%s' = %s", k, str(d)), 3) + var relay1 = d.find('Relay1', -1) # relay base 1 or -1 if none + var relay2 = d.find('Relay2', -1) # relay base 1 or -1 if none + + if relay1 > 0 relays_reserved.push(relay1 - 1) end # mark relay1/2 as non-relays + if relay2 > 0 relays_reserved.push(relay2 - 1) end + + log(f"MTR: {relay1=} {relay2=}", 3) + # is there tilt support + var tilt_array = d.find('TiltConfig') + var tilt_config = tilt_array && (tilt_array[2] > 0) + # add shutter to definition + m[str(endpoint)] = {'type': tilt_config ? 'shutter+tilt' : 'shutter', 'shutter':idx} + endpoint += 1 + idx += 1 + end + + end + + # how many relays are present + var relay_count = size(tasmota.get_power()) + var relay_index = 0 # start at index 0 + relay_count -= light_present # last power(s) taken for lights + + while relay_index < relay_count + if relays_reserved.find(relay_index) == nil # if relay is actual relay + m[str(endpoint)] = {'type':'relay','relay':relay_index + 1} # Relay index start with 1 + endpoint += 1 + end + relay_index += 1 + end + + # auto-detect sensors + var sensors = json.load(tasmota.read_sensors()) + + var sensors_list = self.autoconf_sensors_list(sensors) + + for s: sensors_list + m[str(endpoint)] = s + endpoint += 1 + end + + # tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter') # MQTT is not yet connected + return m + end + + ############################################################# + # Autoconfigure from sensors + # + # Returns an ordered list + def autoconf_sensors_list(sensors) + var k2l = self.device.k2l + var ret = [] + # temperature sensors + for k1: k2l(sensors) + var sensor_2 = sensors[k1] + if isinstance(sensor_2, map) && sensor_2.contains("Temperature") + var temp_rule = k1 + "#Temperature" + ret.push({'type':'temperature','filter':temp_rule}) + end + end + + # pressure sensors + for k1: k2l(sensors) + var sensor_2 = sensors[k1] + if isinstance(sensor_2, map) && sensor_2.contains("Pressure") + var temp_rule = k1 + "#Pressure" + ret.push({'type':'pressure','filter':temp_rule}) + end + end + + # light sensors + for k1: k2l(sensors) + var sensor_2 = sensors[k1] + if isinstance(sensor_2, map) && sensor_2.contains("Illuminance") + var temp_rule = k1 + "#Illuminance" + ret.push({'type':'illuminance','filter':temp_rule}) + end + end + + # huidity sensors + for k1: k2l(sensors) + var sensor_2 = sensors[k1] + if isinstance(sensor_2, map) && sensor_2.contains("Humidity") + var temp_rule = k1 + "#Humidity" + ret.push({'type':'humidity','filter':temp_rule}) + end + end + + return ret + end + +end +matter.Autoconf = Matter_Autoconf diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be index 45b706419..471581812 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be @@ -47,12 +47,11 @@ class Matter_Commissioning ############################################################# def init(device) self.device = device - self._init_basic_commissioning() end ############################################################# # Start Basic Commissioning Window if needed at startup - def _init_basic_commissioning() + def init_basic_commissioning() # if no fabric is configured, automatically open commissioning at restart if self.device.sessions.count_active_fabrics() == 0 self.start_root_basic_commissioning() diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index d547c3df7..b63534c1c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -26,6 +26,7 @@ class Matter_Device static var VENDOR_ID = 0xFFF1 static var PRODUCT_ID = 0x8000 static var FILENAME = "_matter_device.json" + static var EP = 2 # first available endpoint number for devices var started # is the Matter Device started (configured, mDNS and UDPServer started) var plugins # list of plugins instances var plugins_persist # true if plugins configuration needs to be saved @@ -36,6 +37,7 @@ class Matter_Device var profiler var message_handler # `matter.MessageHandler()` object var commissioning # `matter.Commissioning()` object + var autoconf # `matter.Autoconf()` objects var sessions # `matter.Session_Store()` objet var ui var tick # increment at each tick, avoids to repeat too frequently some actions @@ -70,9 +72,10 @@ class Matter_Device self.plugins = [] self.plugins_persist = false # plugins need to saved only when the first fabric is associated self.plugins_config_remotes = {} - self.next_ep = 2 # start at endpoint 2 for dynamically allocated endpoints (1 reserved for aggregator) + self.next_ep = self.EP # start at endpoint 2 for dynamically allocated endpoints (1 reserved for aggregator) self.ipv4only = false self.disable_bridge_mode = false + self.commissioning = matter.Commissioning(self) self.load_param() self.sessions = matter.Session_Store(self) @@ -97,8 +100,7 @@ class Matter_Device end, "matter_start") end - self.commissioning = matter.Commissioning(self) - + self.commissioning.init_basic_commissioning() tasmota.add_driver(self) self.register_commands() @@ -503,6 +505,14 @@ class Matter_Device return ret end + ############################################################# + # Reset configuration like a fresh new device + def reset_param() + self.plugins_persist = false + self.next_ep = self.EP + self.save_param() + end + ############################################################# # Load Matter Device parameters def load_param() @@ -561,48 +571,6 @@ class Matter_Device return param_log end - ############################################################# - # Load plugins configuration from json - # - # 'config' is a map - # Ex: - # {'32': {'filter': 'AXP192#Temperature', 'type': 'temperature'}, '40': {'filter': 'BMP280#Pressure', 'type': 'pressure'}, '34': {'filter': 'SHT3X#Temperature', 'type': 'temperature'}, '33': {'filter': 'BMP280#Temperature', 'type': 'temperature'}, '1': {'relay': 0, 'type': 'relay'}, '56': {'filter': 'SHT3X#Humidity', 'type': 'humidity'}, '0': {'type': 'root'}} - def _instantiate_plugins_from_config(config) - var endpoints = self.k2l_num(config) - - # start with mandatory endpoint 0 for root node - self.plugins.push(matter.Plugin_Root(self, 0, {})) - log("MTR: Configuring endpoints", 2) - log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2) - - # always include an aggregator for dynamic endpoints - self.plugins.push(matter.Plugin_Aggregator(self, matter.AGGREGATOR_ENDPOINT, {})) - log(format("MTR: endpoint = %5i type:%s%s", matter.AGGREGATOR_ENDPOINT, 'aggregator', ''), 2) - - for ep: endpoints - if ep == 0 continue end # skip endpoint 0 - try - var plugin_conf = config[str(ep)] - # log(format("MTR: endpoint %i config %s", ep, plugin_conf), 3) - - var pi_class_name = plugin_conf.find('type') - if pi_class_name == nil log("MTR: no class name, skipping", 3) continue end - if pi_class_name == 'root' log("MTR: only one root node allowed", 3) continue end - var pi_class = self.plugins_classes.find(pi_class_name) - if pi_class == nil log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 2) continue end - - var pi = pi_class(self, ep, plugin_conf) - self.plugins.push(pi) - - log(format("MTR: endpoint = %5i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2) - except .. as e, m - log("MTR: Exception" + str(e) + "|" + str(m), 2) - end - end - - tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter') - end - ############################################################# # Matter plugin management # @@ -629,8 +597,8 @@ class Matter_Device # # Called by Tasmota loop as a Tasmota driver. def save_before_restart() - self.stop_basic_commissioning() - self.mdns_remove_op_discovery_all_fabrics() + self.commissioning.stop_basic_commissioning() + self.commissioning.mdns_remove_op_discovery_all_fabrics() end ############################################################# @@ -642,14 +610,15 @@ class Matter_Device import json if size(self.plugins) > 0 return end # already configured + if (self.autoconf == nil) self.autoconf = matter.Autoconf(self) end if !self.plugins_persist - self.plugins_config = self.autoconf_device_map() + self.plugins_config = self.autoconf.autoconf_device_map() self.plugins_config_remotes = {} self.adjust_next_ep() log("MTR: autoconfig = " + str(self.plugins_config), 3) end - self._instantiate_plugins_from_config(self.plugins_config) + self.autoconf.instantiate_plugins_from_config(self.plugins_config) if !self.plugins_persist && self.sessions.count_active_fabrics() > 0 self.plugins_persist = true @@ -657,170 +626,6 @@ class Matter_Device end end - ############################################################# - # Autoconfigure device from template to map - # - # Applies only if there are no plugins already configured - def autoconf_device_map() - import json - var m = {} - - # check if we have a light - var endpoint = matter.START_ENDPOINT - var light_present = 0 - - import light - var light_status = light.get(0) - if light_status != nil - var channels_count = size(light_status.find('channels', "")) - light_present = 1 - if channels_count > 0 - if channels_count == 1 - m[str(endpoint)] = {'type':'light1'} - endpoint += 1 - # check if we have secondary Dimmer lights (SetOption68 1) - var idx = 1 - var light_status_i - while (light_status_i := light.get(idx)) != nil - m[str(endpoint)] = {'type':'light1','light':idx + 1} # arg is 1-based so add 1 - endpoint += 1 - light_present += 1 - idx += 1 - end - elif channels_count == 2 - m[str(endpoint)] = {'type':'light2'} - endpoint += 1 - elif channels_count == 3 - m[str(endpoint)] = {'type':'light3'} - endpoint += 1 - # check if we have a split second light (SetOption37 128) with 4/5 channels - var light_status1 = light.get(1) - if (light_status1 != nil) - var channels_count1 = size(light_status1.find('channels', "")) - - if (channels_count1 == 1) - m[str(endpoint)] = {'type':'light1'} - endpoint += 1 - light_present += 1 - elif (channels_count1 == 2) - m[str(endpoint)] = {'type':'light2'} - endpoint += 1 - light_present += 1 - end - end - elif channels_count == 4 - # not supported yet - else # only option left is 5 channels - # not supported yet - end - end - end - - # handle shutters before relays (as we steal relays for shutters) - var r_st13 = tasmota.cmd("Status 13", true) # issue `Status 13` - var relays_reserved = [] # list of relays that are used for non-relay (shutters) - log("MTR: Status 13 = "+str(r_st13), 3) - - if r_st13 != nil && r_st13.contains('StatusSHT') - r_st13 = r_st13['StatusSHT'] # skip root - # Shutter is enabled, iterate - var idx = 0 - while true - var k = 'SHT' + str(idx) # SHT is zero based - if !r_st13.contains(k) break end # no more SHTxxx - var d = r_st13[k] - log(format("MTR: '%s' = %s", k, str(d)), 3) - var relay1 = d.find('Relay1', -1) # relay base 1 or -1 if none - var relay2 = d.find('Relay2', -1) # relay base 1 or -1 if none - - if relay1 > 0 relays_reserved.push(relay1 - 1) end # mark relay1/2 as non-relays - if relay2 > 0 relays_reserved.push(relay2 - 1) end - - log(f"MTR: {relay1=} {relay2=}", 3) - # is there tilt support - var tilt_array = d.find('TiltConfig') - var tilt_config = tilt_array && (tilt_array[2] > 0) - # add shutter to definition - m[str(endpoint)] = {'type': tilt_config ? 'shutter+tilt' : 'shutter', 'shutter':idx} - endpoint += 1 - idx += 1 - end - - end - - # how many relays are present - var relay_count = size(tasmota.get_power()) - var relay_index = 0 # start at index 0 - relay_count -= light_present # last power(s) taken for lights - - while relay_index < relay_count - if relays_reserved.find(relay_index) == nil # if relay is actual relay - m[str(endpoint)] = {'type':'relay','relay':relay_index + 1} # Relay index start with 1 - endpoint += 1 - end - relay_index += 1 - end - - # auto-detect sensors - var sensors = json.load(tasmota.read_sensors()) - - var sensors_list = self.autoconf_sensors_list(sensors) - - for s: sensors_list - m[str(endpoint)] = s - endpoint += 1 - end - - # tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter') # MQTT is not yet connected - return m - end - - - ############################################################# - # Autoconfigure from sensors - # - # Returns an ordered list - def autoconf_sensors_list(sensors) - var ret = [] - # temperature sensors - for k1:self.k2l(sensors) - var sensor_2 = sensors[k1] - if isinstance(sensor_2, map) && sensor_2.contains("Temperature") - var temp_rule = k1 + "#Temperature" - ret.push({'type':'temperature','filter':temp_rule}) - end - end - - # pressure sensors - for k1:self.k2l(sensors) - var sensor_2 = sensors[k1] - if isinstance(sensor_2, map) && sensor_2.contains("Pressure") - var temp_rule = k1 + "#Pressure" - ret.push({'type':'pressure','filter':temp_rule}) - end - end - - # light sensors - for k1:self.k2l(sensors) - var sensor_2 = sensors[k1] - if isinstance(sensor_2, map) && sensor_2.contains("Illuminance") - var temp_rule = k1 + "#Illuminance" - ret.push({'type':'illuminance','filter':temp_rule}) - end - end - - # huidity sensors - for k1:self.k2l(sensors) - var sensor_2 = sensors[k1] - if isinstance(sensor_2, map) && sensor_2.contains("Humidity") - var temp_rule = k1 + "#Humidity" - ret.push({'type':'humidity','filter':temp_rule}) - end - end - - return ret - end - # get keys of a map in sorted order static def k2l(m) var l=[] if m==nil return l end for k:m.keys() l.push(k) end for i:1..size(l)-1 var k = l[i] var j = i while (j > 0) && (l[j-1] > k) l[j] = l[j-1] j -= 1 end l[j] = k end return l @@ -1085,7 +890,7 @@ class Matter_Device if payload_int self.commissioning.start_root_basic_commissioning() else - self.stop_basic_commissioning() + self.commissioning.stop_basic_commissioning() end tasmota.resp_cmnd_done() end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index f6f59fc67..8060db9c7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -158,7 +158,7 @@ be_local_closure(class_Matter_UI_page_part_mgr, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ + ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(check_privileged_access), /* K2 */ be_nested_str_weak(content_start), @@ -168,15 +168,14 @@ be_local_closure(class_Matter_UI_page_part_mgr, /* name */ /* K6 */ be_nested_str_weak(matter_enabled), /* K7 */ be_nested_str_weak(show_plugins_configuration), /* K8 */ be_nested_str_weak(content_send), - /* K9 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E), - /* K10 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20id_X3D_X27butmat_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27mattera_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X20name_X3D_X27_X27_X3EAdvanced_X20Configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), - /* K11 */ be_nested_str_weak(content_button), - /* K12 */ be_nested_str_weak(BUTTON_CONFIGURATION), - /* K13 */ be_nested_str_weak(content_stop), + /* K9 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20id_X3D_X27butmat_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27mattera_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X20name_X3D_X27_X27_X3EAdvanced_X20Configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), + /* K10 */ be_nested_str_weak(content_button), + /* K11 */ be_nested_str_weak(BUTTON_CONFIGURATION), + /* K12 */ be_nested_str_weak(content_stop), }), be_str_weak(page_part_mgr), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ + ( &(const binstruction[27]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x7C080200, // 0002 CALL R2 1 @@ -198,15 +197,12 @@ be_local_closure(class_Matter_UI_page_part_mgr, /* name */ 0x8C080308, // 0012 GETMET R2 R1 K8 0x58100009, // 0013 LDCONST R4 K9 0x7C080400, // 0014 CALL R2 2 - 0x8C080308, // 0015 GETMET R2 R1 K8 - 0x5810000A, // 0016 LDCONST R4 K10 + 0x8C08030A, // 0015 GETMET R2 R1 K10 + 0x8810030B, // 0016 GETMBR R4 R1 K11 0x7C080400, // 0017 CALL R2 2 - 0x8C08030B, // 0018 GETMET R2 R1 K11 - 0x8810030C, // 0019 GETMBR R4 R1 K12 - 0x7C080400, // 001A CALL R2 2 - 0x8C08030D, // 001B GETMET R2 R1 K13 - 0x7C080200, // 001C CALL R2 1 - 0x80000000, // 001D RET 0 + 0x8C08030C, // 0018 GETMET R2 R1 K12 + 0x7C080200, // 0019 CALL R2 1 + 0x80000000, // 001A RET 0 }) ) ); @@ -297,7 +293,7 @@ be_local_closure(class_Matter_UI_generate_config_from_status, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ + ( &(const bvalue[18]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(contains), /* K2 */ be_nested_str_weak(POWER), @@ -314,11 +310,12 @@ be_local_closure(class_Matter_UI_generate_config_from_status, /* name */ /* K13 */ be_nested_str_weak(light2), /* K14 */ be_nested_str_weak(light3), /* K15 */ be_nested_str_weak(device), - /* K16 */ be_nested_str_weak(autoconf_sensors_list), + /* K16 */ be_nested_str_weak(autoconf), + /* K17 */ be_nested_str_weak(autoconf_sensors_list), }), be_str_weak(generate_config_from_status), &be_const_str_solidified, - ( &(const binstruction[96]) { /* code */ + ( &(const binstruction[97]) { /* code */ 0x600C0012, // 0000 GETGBL R3 G18 0x7C0C0000, // 0001 CALL R3 0 0x58100000, // 0002 LDCONST R4 K0 @@ -410,11 +407,12 @@ be_local_closure(class_Matter_UI_generate_config_from_status, /* name */ 0x982A1407, // 0058 SETIDX R10 K10 R7 0x7C200400, // 0059 CALL R8 2 0x8820010F, // 005A GETMBR R8 R0 K15 - 0x8C201110, // 005B GETMET R8 R8 K16 - 0x5C280200, // 005C MOVE R10 R1 - 0x7C200400, // 005D CALL R8 2 - 0x000C0608, // 005E ADD R3 R3 R8 - 0x80040600, // 005F RET 1 R3 + 0x88201110, // 005B GETMBR R8 R8 K16 + 0x8C201111, // 005C GETMET R8 R8 K17 + 0x5C280200, // 005D MOVE R10 R1 + 0x7C200400, // 005E CALL R8 2 + 0x000C0608, // 005F ADD R3 R3 R8 + 0x80040600, // 0060 RET 1 R3 }) ) ); @@ -588,7 +586,7 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[63]) { /* constants */ + ( &(const bvalue[51]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(string), /* K2 */ be_nested_str_weak(introspect), @@ -627,35 +625,23 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ /* K35 */ be_nested_str_weak(sort_distinct), /* K36 */ be_nested_str_weak(get_plugin_remote_info), /* K37 */ be_nested_str_weak(_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E), - /* K38 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), - /* K39 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K40 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2722_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), - /* K41 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), - /* K42 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E), - /* K43 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), - /* K44 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K45 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K46 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27config_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X20configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), - /* K47 */ be_nested_str_weak(show_plugins_hints_js), - /* K48 */ be_nested_str_weak(_CLASSES_TYPES), - /* K49 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BAdd_X20to_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K50 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EAdd_X20local_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), - /* K51 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K52 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X20title_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20id_X3D_X27pi_X27_X20name_X3D_X27pi_X27_X20onchange_X3D_X27otm_X28_X22arg_X22_X2Cthis_X2Evalue_X29_X27_X3E), - /* K53 */ be_nested_str_weak(plugin_option), - /* K54 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E), - /* K55 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X27_X20name_X3D_X27arg_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E), - /* K56 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E), - /* K57 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27addep_X27_X20class_X3D_X27button_X20bgrn_X27_X3ECreate_X20new_X20endpoint_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), - /* K58 */ be_nested_str_weak(_X3Chr_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20Tasmota_X20or_X20OpenBK_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatteradd_X27_X20method_X3D_X27get_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), - /* K59 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2730_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3Ehttp_X3A_X2F_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27url_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X27_X20required_X20placeholder_X3D_X27IP_X20or_X20domain_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2710_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E), - /* K60 */ be_nested_str_weak(_X3Cbutton_X20class_X3D_X27button_X20bgrn_X27_X3EAuto_X2Dconfigure_X20remote_X20Tasmota_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E), - /* K61 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20RESET_X20the_X20configuration_X20to_X20the_X20default_X2E_X20You_X20will_X20need_X20to_X20associate_X20again_X2E_X22_X29_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27auto_X27_X20class_X3D_X27button_X20bred_X27_X3EReset_X20all_X20and_X20Auto_X2Ddiscover_X3C_X2Fbutton_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Fform_X3E), - /* K62 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), + /* K38 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K39 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2722_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), + /* K40 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), + /* K41 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E), + /* K42 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), + /* K43 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K44 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K45 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27config_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X20configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), + /* K46 */ be_nested_str_weak(show_plugins_hints_js), + /* K47 */ be_nested_str_weak(_CLASSES_TYPES), + /* K48 */ be_nested_str_long(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BAdd_X20to_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20local_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X20title_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20id_X3D_X27pi_X27_X20name_X3D_X27pi_X27_X20onchange_X3D_X27otm_X28_X22arg_X22_X2Cthis_X2Evalue_X29_X27_X3E), + /* K49 */ be_nested_str_weak(plugin_option), + /* K50 */ be_nested_str_long(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X27_X20name_X3D_X27arg_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addep_X27_X20class_X3D_X27button_X20bgrn_X27_X3ECreate_X20new_X20endpoint_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20Tasmota_X20or_X20OpenBK_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatteradd_X27_X20method_X3D_X27get_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2730_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3Ehttp_X3A_X2F_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27url_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X27_X20required_X20placeholder_X3D_X27IP_X20or_X20domain_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2710_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20class_X3D_X27button_X20bgrn_X27_X3EAuto_X2Dconfigure_X20remote_X20Tasmota_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20RESET_X20the_X20configuration_X20to_X20the_X20default_X2E_X20You_X20will_X20need_X20to_X20associate_X20again_X2E_X22_X29_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27auto_X27_X20class_X3D_X27button_X20bred_X27_X3EReset_X20all_X20and_X20Auto_X2Ddiscover_X3C_X2Fbutton_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), }), be_str_weak(show_plugins_configuration), &be_const_str_solidified, - ( &(const binstruction[361]) { /* code */ + ( &(const binstruction[322]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0xA40A0200, // 0001 IMPORT R2 K1 0xA40E0400, // 0002 IMPORT R3 K2 @@ -819,7 +805,7 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ 0x60200010, // 00A0 GETGBL R8 G16 0x5C240E00, // 00A1 MOVE R9 R7 0x7C200200, // 00A2 CALL R8 1 - 0xA8020087, // 00A3 EXBLK 0 #012C + 0xA8020084, // 00A3 EXBLK 0 #0129 0x5C241000, // 00A4 MOVE R9 R8 0x7C240000, // 00A5 CALL R9 0 0x8C280317, // 00A6 GETMET R10 R1 K23 @@ -846,177 +832,138 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ 0x8C300303, // 00BB GETMET R12 R1 K3 0x58380026, // 00BC LDCONST R14 K38 0x7C300400, // 00BD CALL R12 2 - 0x8C300303, // 00BE GETMET R12 R1 K3 - 0x58380027, // 00BF LDCONST R14 K39 - 0x7C300400, // 00C0 CALL R12 2 - 0x50180000, // 00C1 LDBOOL R6 0 0 - 0x5814000C, // 00C2 LDCONST R5 K12 - 0x6030000C, // 00C3 GETGBL R12 G12 - 0x5C340800, // 00C4 MOVE R13 R4 - 0x7C300200, // 00C5 CALL R12 1 - 0x14300A0C, // 00C6 LT R12 R5 R12 - 0x7832005F, // 00C7 JMPF R12 #0128 - 0x94300805, // 00C8 GETIDX R12 R4 R5 - 0x88340107, // 00C9 GETMBR R13 R0 K7 - 0x88341B08, // 00CA GETMBR R13 R13 K8 - 0x8C341B0D, // 00CB GETMET R13 R13 K13 - 0x603C0008, // 00CC GETGBL R15 G8 - 0x5C401800, // 00CD MOVE R16 R12 - 0x7C3C0200, // 00CE CALL R15 1 - 0x7C340400, // 00CF CALL R13 2 - 0x8C381B0D, // 00D0 GETMET R14 R13 K13 - 0x5840000E, // 00D1 LDCONST R16 K14 - 0x7C380400, // 00D2 CALL R14 2 - 0x5C3C1C00, // 00D3 MOVE R15 R14 - 0x743E0001, // 00D4 JMPT R15 #00D7 - 0x00140B0F, // 00D5 ADD R5 R5 K15 - 0x7001FFEB, // 00D6 JMP #00C3 - 0x8C3C050D, // 00D7 GETMET R15 R2 K13 - 0x5C441C00, // 00D8 MOVE R17 R14 - 0x58480010, // 00D9 LDCONST R18 K16 - 0x7C3C0600, // 00DA CALL R15 3 - 0x203C1F0C, // 00DB NE R15 R15 K12 - 0x783E0001, // 00DC JMPF R15 #00DF - 0x00140B0F, // 00DD ADD R5 R5 K15 - 0x7001FFE3, // 00DE JMP #00C3 - 0x8C3C1B0D, // 00DF GETMET R15 R13 K13 - 0x58440020, // 00E0 LDCONST R17 K32 - 0x7C3C0400, // 00E1 CALL R15 2 - 0x203C1E09, // 00E2 NE R15 R15 R9 - 0x783E0001, // 00E3 JMPF R15 #00E6 - 0x00140B0F, // 00E4 ADD R5 R5 K15 - 0x7001FFDC, // 00E5 JMP #00C3 - 0x883C0107, // 00E6 GETMBR R15 R0 K7 - 0x883C1F11, // 00E7 GETMBR R15 R15 K17 - 0x8C3C1F0D, // 00E8 GETMET R15 R15 K13 - 0x5C441C00, // 00E9 MOVE R17 R14 - 0x7C3C0400, // 00EA CALL R15 2 - 0x58400012, // 00EB LDCONST R16 K18 - 0x58440012, // 00EC LDCONST R17 K18 - 0x4C480000, // 00ED LDNIL R18 - 0x20481E12, // 00EE NE R18 R15 R18 - 0x784A0005, // 00EF JMPF R18 #00F6 - 0x8C481F13, // 00F0 GETMET R18 R15 K19 - 0x5C501E00, // 00F1 MOVE R20 R15 - 0x5C541A00, // 00F2 MOVE R21 R13 - 0x7C480600, // 00F3 CALL R18 3 - 0x5C402400, // 00F4 MOVE R16 R18 - 0x88441F14, // 00F5 GETMBR R17 R15 K20 - 0x50180200, // 00F6 LDBOOL R6 1 0 - 0x8C480303, // 00F7 GETMET R18 R1 K3 - 0x60500018, // 00F8 GETGBL R20 G24 - 0x58540028, // 00F9 LDCONST R21 K40 - 0x5C581800, // 00FA MOVE R22 R12 - 0x7C500400, // 00FB CALL R20 2 - 0x7C480400, // 00FC CALL R18 2 - 0x8C480303, // 00FD GETMET R18 R1 K3 - 0x60500018, // 00FE GETGBL R20 G24 - 0x58540029, // 00FF LDCONST R21 K41 - 0x5C581800, // 0100 MOVE R22 R12 - 0x8C5C0317, // 0101 GETMET R23 R1 K23 - 0x8C641B0D, // 0102 GETMET R25 R13 K13 - 0x586C0018, // 0103 LDCONST R27 K24 - 0x58700012, // 0104 LDCONST R28 K18 - 0x7C640600, // 0105 CALL R25 3 - 0x7C5C0400, // 0106 CALL R23 2 - 0x7C500600, // 0107 CALL R20 3 - 0x7C480400, // 0108 CALL R18 2 - 0x8C480303, // 0109 GETMET R18 R1 K3 - 0x60500018, // 010A GETGBL R20 G24 - 0x5854002A, // 010B LDCONST R21 K42 - 0x8C58011A, // 010C GETMET R22 R0 K26 - 0x8C601B0D, // 010D GETMET R24 R13 K13 - 0x5868000E, // 010E LDCONST R26 K14 - 0x586C0012, // 010F LDCONST R27 K18 - 0x7C600600, // 0110 CALL R24 3 - 0x7C580400, // 0111 CALL R22 2 - 0x7C500400, // 0112 CALL R20 2 - 0x7C480400, // 0113 CALL R18 2 - 0x8C480303, // 0114 GETMET R18 R1 K3 - 0x60500018, // 0115 GETGBL R20 G24 - 0x5854002B, // 0116 LDCONST R21 K43 - 0x5C581800, // 0117 MOVE R22 R12 - 0x8C5C0317, // 0118 GETMET R23 R1 K23 - 0x5C642000, // 0119 MOVE R25 R16 - 0x7C5C0400, // 011A CALL R23 2 - 0x8C600317, // 011B GETMET R24 R1 K23 - 0x5C682200, // 011C MOVE R26 R17 - 0x7C600400, // 011D CALL R24 2 - 0x7C500800, // 011E CALL R20 4 - 0x7C480400, // 011F CALL R18 2 - 0x8C480303, // 0120 GETMET R18 R1 K3 - 0x60500018, // 0121 GETGBL R20 G24 - 0x5854002C, // 0122 LDCONST R21 K44 - 0x5C581800, // 0123 MOVE R22 R12 - 0x7C500400, // 0124 CALL R20 2 - 0x7C480400, // 0125 CALL R18 2 - 0x00140B0F, // 0126 ADD R5 R5 K15 - 0x7001FF9A, // 0127 JMP #00C3 - 0x8C300303, // 0128 GETMET R12 R1 K3 - 0x5838002D, // 0129 LDCONST R14 K45 - 0x7C300400, // 012A CALL R12 2 - 0x7001FF77, // 012B JMP #00A4 - 0x58200022, // 012C LDCONST R8 K34 - 0xAC200200, // 012D CATCH R8 1 0 - 0xB0080000, // 012E RAISE 2 R0 R0 - 0x5C200C00, // 012F MOVE R8 R6 - 0x74220002, // 0130 JMPT R8 #0134 + 0x50180000, // 00BE LDBOOL R6 0 0 + 0x5814000C, // 00BF LDCONST R5 K12 + 0x6030000C, // 00C0 GETGBL R12 G12 + 0x5C340800, // 00C1 MOVE R13 R4 + 0x7C300200, // 00C2 CALL R12 1 + 0x14300A0C, // 00C3 LT R12 R5 R12 + 0x7832005F, // 00C4 JMPF R12 #0125 + 0x94300805, // 00C5 GETIDX R12 R4 R5 + 0x88340107, // 00C6 GETMBR R13 R0 K7 + 0x88341B08, // 00C7 GETMBR R13 R13 K8 + 0x8C341B0D, // 00C8 GETMET R13 R13 K13 + 0x603C0008, // 00C9 GETGBL R15 G8 + 0x5C401800, // 00CA MOVE R16 R12 + 0x7C3C0200, // 00CB CALL R15 1 + 0x7C340400, // 00CC CALL R13 2 + 0x8C381B0D, // 00CD GETMET R14 R13 K13 + 0x5840000E, // 00CE LDCONST R16 K14 + 0x7C380400, // 00CF CALL R14 2 + 0x5C3C1C00, // 00D0 MOVE R15 R14 + 0x743E0001, // 00D1 JMPT R15 #00D4 + 0x00140B0F, // 00D2 ADD R5 R5 K15 + 0x7001FFEB, // 00D3 JMP #00C0 + 0x8C3C050D, // 00D4 GETMET R15 R2 K13 + 0x5C441C00, // 00D5 MOVE R17 R14 + 0x58480010, // 00D6 LDCONST R18 K16 + 0x7C3C0600, // 00D7 CALL R15 3 + 0x203C1F0C, // 00D8 NE R15 R15 K12 + 0x783E0001, // 00D9 JMPF R15 #00DC + 0x00140B0F, // 00DA ADD R5 R5 K15 + 0x7001FFE3, // 00DB JMP #00C0 + 0x8C3C1B0D, // 00DC GETMET R15 R13 K13 + 0x58440020, // 00DD LDCONST R17 K32 + 0x7C3C0400, // 00DE CALL R15 2 + 0x203C1E09, // 00DF NE R15 R15 R9 + 0x783E0001, // 00E0 JMPF R15 #00E3 + 0x00140B0F, // 00E1 ADD R5 R5 K15 + 0x7001FFDC, // 00E2 JMP #00C0 + 0x883C0107, // 00E3 GETMBR R15 R0 K7 + 0x883C1F11, // 00E4 GETMBR R15 R15 K17 + 0x8C3C1F0D, // 00E5 GETMET R15 R15 K13 + 0x5C441C00, // 00E6 MOVE R17 R14 + 0x7C3C0400, // 00E7 CALL R15 2 + 0x58400012, // 00E8 LDCONST R16 K18 + 0x58440012, // 00E9 LDCONST R17 K18 + 0x4C480000, // 00EA LDNIL R18 + 0x20481E12, // 00EB NE R18 R15 R18 + 0x784A0005, // 00EC JMPF R18 #00F3 + 0x8C481F13, // 00ED GETMET R18 R15 K19 + 0x5C501E00, // 00EE MOVE R20 R15 + 0x5C541A00, // 00EF MOVE R21 R13 + 0x7C480600, // 00F0 CALL R18 3 + 0x5C402400, // 00F1 MOVE R16 R18 + 0x88441F14, // 00F2 GETMBR R17 R15 K20 + 0x50180200, // 00F3 LDBOOL R6 1 0 + 0x8C480303, // 00F4 GETMET R18 R1 K3 + 0x60500018, // 00F5 GETGBL R20 G24 + 0x58540027, // 00F6 LDCONST R21 K39 + 0x5C581800, // 00F7 MOVE R22 R12 + 0x7C500400, // 00F8 CALL R20 2 + 0x7C480400, // 00F9 CALL R18 2 + 0x8C480303, // 00FA GETMET R18 R1 K3 + 0x60500018, // 00FB GETGBL R20 G24 + 0x58540028, // 00FC LDCONST R21 K40 + 0x5C581800, // 00FD MOVE R22 R12 + 0x8C5C0317, // 00FE GETMET R23 R1 K23 + 0x8C641B0D, // 00FF GETMET R25 R13 K13 + 0x586C0018, // 0100 LDCONST R27 K24 + 0x58700012, // 0101 LDCONST R28 K18 + 0x7C640600, // 0102 CALL R25 3 + 0x7C5C0400, // 0103 CALL R23 2 + 0x7C500600, // 0104 CALL R20 3 + 0x7C480400, // 0105 CALL R18 2 + 0x8C480303, // 0106 GETMET R18 R1 K3 + 0x60500018, // 0107 GETGBL R20 G24 + 0x58540029, // 0108 LDCONST R21 K41 + 0x8C58011A, // 0109 GETMET R22 R0 K26 + 0x8C601B0D, // 010A GETMET R24 R13 K13 + 0x5868000E, // 010B LDCONST R26 K14 + 0x586C0012, // 010C LDCONST R27 K18 + 0x7C600600, // 010D CALL R24 3 + 0x7C580400, // 010E CALL R22 2 + 0x7C500400, // 010F CALL R20 2 + 0x7C480400, // 0110 CALL R18 2 + 0x8C480303, // 0111 GETMET R18 R1 K3 + 0x60500018, // 0112 GETGBL R20 G24 + 0x5854002A, // 0113 LDCONST R21 K42 + 0x5C581800, // 0114 MOVE R22 R12 + 0x8C5C0317, // 0115 GETMET R23 R1 K23 + 0x5C642000, // 0116 MOVE R25 R16 + 0x7C5C0400, // 0117 CALL R23 2 + 0x8C600317, // 0118 GETMET R24 R1 K23 + 0x5C682200, // 0119 MOVE R26 R17 + 0x7C600400, // 011A CALL R24 2 + 0x7C500800, // 011B CALL R20 4 + 0x7C480400, // 011C CALL R18 2 + 0x8C480303, // 011D GETMET R18 R1 K3 + 0x60500018, // 011E GETGBL R20 G24 + 0x5854002B, // 011F LDCONST R21 K43 + 0x5C581800, // 0120 MOVE R22 R12 + 0x7C500400, // 0121 CALL R20 2 + 0x7C480400, // 0122 CALL R18 2 + 0x00140B0F, // 0123 ADD R5 R5 K15 + 0x7001FF9A, // 0124 JMP #00C0 + 0x8C300303, // 0125 GETMET R12 R1 K3 + 0x5838002C, // 0126 LDCONST R14 K44 + 0x7C300400, // 0127 CALL R12 2 + 0x7001FF7A, // 0128 JMP #00A4 + 0x58200022, // 0129 LDCONST R8 K34 + 0xAC200200, // 012A CATCH R8 1 0 + 0xB0080000, // 012B RAISE 2 R0 R0 + 0x5C200C00, // 012C MOVE R8 R6 + 0x74220002, // 012D JMPT R8 #0131 + 0x8C200303, // 012E GETMET R8 R1 K3 + 0x5828001E, // 012F LDCONST R10 K30 + 0x7C200400, // 0130 CALL R8 2 0x8C200303, // 0131 GETMET R8 R1 K3 - 0x5828001E, // 0132 LDCONST R10 K30 + 0x5828002D, // 0132 LDCONST R10 K45 0x7C200400, // 0133 CALL R8 2 - 0x8C200303, // 0134 GETMET R8 R1 K3 - 0x5828002E, // 0135 LDCONST R10 K46 + 0x8C20012E, // 0134 GETMET R8 R0 K46 + 0x8828012F, // 0135 GETMBR R10 R0 K47 0x7C200400, // 0136 CALL R8 2 - 0x8C20012F, // 0137 GETMET R8 R0 K47 - 0x88280130, // 0138 GETMBR R10 R0 K48 + 0x8C200303, // 0137 GETMET R8 R1 K3 + 0x58280030, // 0138 LDCONST R10 K48 0x7C200400, // 0139 CALL R8 2 - 0x8C200303, // 013A GETMET R8 R1 K3 - 0x58280031, // 013B LDCONST R10 K49 - 0x7C200400, // 013C CALL R8 2 - 0x8C200303, // 013D GETMET R8 R1 K3 - 0x58280032, // 013E LDCONST R10 K50 - 0x7C200400, // 013F CALL R8 2 - 0x8C200303, // 0140 GETMET R8 R1 K3 - 0x58280033, // 0141 LDCONST R10 K51 - 0x7C200400, // 0142 CALL R8 2 - 0x8C200303, // 0143 GETMET R8 R1 K3 - 0x58280034, // 0144 LDCONST R10 K52 - 0x7C200400, // 0145 CALL R8 2 - 0x8C200135, // 0146 GETMET R8 R0 K53 - 0x58280012, // 0147 LDCONST R10 K18 - 0x882C0130, // 0148 GETMBR R11 R0 K48 - 0x7C200600, // 0149 CALL R8 3 - 0x8C200303, // 014A GETMET R8 R1 K3 - 0x58280036, // 014B LDCONST R10 K54 - 0x7C200400, // 014C CALL R8 2 - 0x8C200303, // 014D GETMET R8 R1 K3 - 0x58280037, // 014E LDCONST R10 K55 - 0x7C200400, // 014F CALL R8 2 - 0x8C200303, // 0150 GETMET R8 R1 K3 - 0x58280038, // 0151 LDCONST R10 K56 - 0x7C200400, // 0152 CALL R8 2 - 0x8C200303, // 0153 GETMET R8 R1 K3 - 0x58280039, // 0154 LDCONST R10 K57 - 0x7C200400, // 0155 CALL R8 2 - 0x8C200303, // 0156 GETMET R8 R1 K3 - 0x5828003A, // 0157 LDCONST R10 K58 - 0x7C200400, // 0158 CALL R8 2 - 0x8C200303, // 0159 GETMET R8 R1 K3 - 0x5828003B, // 015A LDCONST R10 K59 - 0x7C200400, // 015B CALL R8 2 - 0x8C200303, // 015C GETMET R8 R1 K3 - 0x58280038, // 015D LDCONST R10 K56 - 0x7C200400, // 015E CALL R8 2 - 0x8C200303, // 015F GETMET R8 R1 K3 - 0x5828003C, // 0160 LDCONST R10 K60 - 0x7C200400, // 0161 CALL R8 2 - 0x8C200303, // 0162 GETMET R8 R1 K3 - 0x5828003D, // 0163 LDCONST R10 K61 - 0x7C200400, // 0164 CALL R8 2 - 0x8C200303, // 0165 GETMET R8 R1 K3 - 0x5828003E, // 0166 LDCONST R10 K62 - 0x7C200400, // 0167 CALL R8 2 - 0x80000000, // 0168 RET 0 + 0x8C200131, // 013A GETMET R8 R0 K49 + 0x58280012, // 013B LDCONST R10 K18 + 0x882C012F, // 013C GETMBR R11 R0 K47 + 0x7C200600, // 013D CALL R8 3 + 0x8C200303, // 013E GETMET R8 R1 K3 + 0x58280032, // 013F LDCONST R10 K50 + 0x7C200400, // 0140 CALL R8 2 + 0x80000000, // 0141 RET 0 }) ) ); @@ -1139,7 +1086,7 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[46]) { /* constants */ + ( &(const bvalue[43]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(json), /* K2 */ be_nested_str_weak(), @@ -1181,15 +1128,12 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ /* K38 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), /* K39 */ be_const_int(1), /* K40 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E), - /* K41 */ be_nested_str_weak(_X3C_X2Ftable_X3E), - /* K42 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E), - /* K43 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), - /* K44 */ be_nested_str_weak(_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E), - /* K45 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K41 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E), + /* K42 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E), }), be_str_weak(show_remote_autoconf), &be_const_str_solidified, - ( &(const binstruction[229]) { /* code */ + ( &(const binstruction[220]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0xA40E0200, // 0001 IMPORT R3 K1 0x1C100302, // 0002 EQ R4 R1 K2 @@ -1247,10 +1191,10 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0x5C1C1000, // 0036 MOVE R7 R8 0x4C200000, // 0037 LDNIL R8 0x20200C08, // 0038 NE R8 R6 R8 - 0x782200A1, // 0039 JMPF R8 #00DC + 0x78220098, // 0039 JMPF R8 #00D3 0x4C200000, // 003A LDNIL R8 0x20200E08, // 003B NE R8 R7 R8 - 0x7822009E, // 003C JMPF R8 #00DC + 0x78220095, // 003C JMPF R8 #00D3 0xB8221C00, // 003D GETNGBL R8 K14 0x60240018, // 003E GETGBL R9 G24 0x5828000F, // 003F LDCONST R10 K15 @@ -1400,25 +1344,16 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0x8C2C0514, // 00CF GETMET R11 R2 K20 0x58340029, // 00D0 LDCONST R13 K41 0x7C2C0400, // 00D1 CALL R11 2 - 0x8C2C0514, // 00D2 GETMET R11 R2 K20 - 0x5834002A, // 00D3 LDCONST R13 K42 - 0x7C2C0400, // 00D4 CALL R11 2 - 0x8C2C0514, // 00D5 GETMET R11 R2 K20 - 0x5834002B, // 00D6 LDCONST R13 K43 - 0x7C2C0400, // 00D7 CALL R11 2 - 0x8C2C0514, // 00D8 GETMET R11 R2 K20 - 0x5834002C, // 00D9 LDCONST R13 K44 - 0x7C2C0400, // 00DA CALL R11 2 - 0x70020007, // 00DB JMP #00E4 - 0x8C200514, // 00DC GETMET R8 R2 K20 - 0x60280018, // 00DD GETGBL R10 G24 - 0x582C002D, // 00DE LDCONST R11 K45 - 0x8C300516, // 00DF GETMET R12 R2 K22 - 0x5C380200, // 00E0 MOVE R14 R1 - 0x7C300400, // 00E1 CALL R12 2 - 0x7C280400, // 00E2 CALL R10 2 - 0x7C200400, // 00E3 CALL R8 2 - 0x80000000, // 00E4 RET 0 + 0x70020007, // 00D2 JMP #00DB + 0x8C200514, // 00D3 GETMET R8 R2 K20 + 0x60280018, // 00D4 GETGBL R10 G24 + 0x582C002A, // 00D5 LDCONST R11 K42 + 0x8C300516, // 00D6 GETMET R12 R2 K22 + 0x5C380200, // 00D7 MOVE R14 R1 + 0x7C300400, // 00D8 CALL R12 2 + 0x7C280400, // 00D9 CALL R10 2 + 0x7C200400, // 00DA CALL R8 2 + 0x80000000, // 00DB RET 0 }) ) ); @@ -1464,13 +1399,13 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ /* K22 */ be_nested_str_weak(Device_X3A_X20_X25s_X3Cbr_X3E_X26nbsp_X3B), /* K23 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22Are_X20you_X20sure_X3F_X22_X29_X3B_X27_X3E), /* K24 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27del_fabric_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25i_X27_X3E), - /* K25 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27del_X27_X20class_X3D_X27button_X20bgrn_X27_X3EDelete_X20Fabric_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - /* K26 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K27 */ be_nested_str_weak(stop_iteration), + /* K25 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27del_X27_X20class_X3D_X27button_X20bgrn_X27_X3EDelete_X20Fabric_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K26 */ be_nested_str_weak(stop_iteration), + /* K27 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), }), be_str_weak(show_fabric_info), &be_const_str_solidified, - ( &(const binstruction[100]) { /* code */ + ( &(const binstruction[97]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x58100002, // 0002 LDCONST R4 K2 @@ -1485,7 +1420,7 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ 0x8C080301, // 000B GETMET R2 R1 K1 0x58100006, // 000C LDCONST R4 K6 0x7C080400, // 000D CALL R2 2 - 0x70020050, // 000E JMP #0060 + 0x7002004D, // 000E JMP #005D 0x50080200, // 000F LDBOOL R2 1 0 0x600C0010, // 0010 GETGBL R3 G16 0x88100103, // 0011 GETMBR R4 R0 K3 @@ -1494,7 +1429,7 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ 0x8C100908, // 0014 GETMET R4 R4 K8 0x7C100200, // 0015 CALL R4 1 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020044, // 0017 EXBLK 0 #005D + 0xA8020041, // 0017 EXBLK 0 #005A 0x5C100600, // 0018 MOVE R4 R3 0x7C100000, // 0019 CALL R4 0 0x5C140400, // 001A MOVE R5 R2 @@ -1560,17 +1495,14 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ 0x8C200301, // 0056 GETMET R8 R1 K1 0x58280019, // 0057 LDCONST R10 K25 0x7C200400, // 0058 CALL R8 2 - 0x8C200301, // 0059 GETMET R8 R1 K1 - 0x5828001A, // 005A LDCONST R10 K26 - 0x7C200400, // 005B CALL R8 2 - 0x7001FFBA, // 005C JMP #0018 - 0x580C001B, // 005D LDCONST R3 K27 - 0xAC0C0200, // 005E CATCH R3 1 0 - 0xB0080000, // 005F RAISE 2 R0 R0 - 0x8C080301, // 0060 GETMET R2 R1 K1 - 0x5810001A, // 0061 LDCONST R4 K26 - 0x7C080400, // 0062 CALL R2 2 - 0x80000000, // 0063 RET 0 + 0x7001FFBD, // 0059 JMP #0018 + 0x580C001A, // 005A LDCONST R3 K26 + 0xAC0C0200, // 005B CATCH R3 1 0 + 0xB0080000, // 005C RAISE 2 R0 R0 + 0x8C080301, // 005D GETMET R2 R1 K1 + 0x5810001B, // 005E LDCONST R4 K27 + 0x7C080400, // 005F CALL R2 2 + 0x80000000, // 0060 RET 0 }) ) ); @@ -2128,66 +2060,62 @@ be_local_closure(class_Matter_UI_show_passcode_form, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ + ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(content_send), - /* K2 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Advanced_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K3 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E_X3Cp_X3EPasscode_X3A_X3C_X2Fp_X3E), - /* K4 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X271_X27_X20max_X3D_X2799999998_X27_X20name_X3D_X27passcode_X27_X20value_X3D_X27_X25i_X27_X3E), - /* K5 */ be_nested_str_weak(device), - /* K6 */ be_nested_str_weak(root_passcode), - /* K7 */ be_nested_str_weak(_X3Cp_X3EDistinguish_X20id_X3A_X3C_X2Fp_X3E), - /* K8 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X274095_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E), - /* K9 */ be_nested_str_weak(root_discriminator), - /* K10 */ be_nested_str_weak(ipv4only), - /* K11 */ be_nested_str_weak(_X20checked), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27ipv4_X27_X25s_X3EIPv4_X20only_X3C_X2Fp_X3E), - /* K14 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27passcode_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K2 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Advanced_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E_X3Cp_X3EPasscode_X3A_X3C_X2Fp_X3E), + /* K3 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X271_X27_X20max_X3D_X2799999998_X27_X20name_X3D_X27passcode_X27_X20value_X3D_X27_X25i_X27_X3E), + /* K4 */ be_nested_str_weak(device), + /* K5 */ be_nested_str_weak(root_passcode), + /* K6 */ be_nested_str_weak(_X3Cp_X3EDistinguish_X20id_X3A_X3C_X2Fp_X3E), + /* K7 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X274095_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E), + /* K8 */ be_nested_str_weak(root_discriminator), + /* K9 */ be_nested_str_weak(ipv4only), + /* K10 */ be_nested_str_weak(_X20checked), + /* K11 */ be_nested_str_weak(), + /* K12 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27ipv4_X27_X25s_X3EIPv4_X20only_X3C_X2Fp_X3E), + /* K13 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27passcode_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), }), be_str_weak(show_passcode_form), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ + ( &(const binstruction[37]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x58100002, // 0002 LDCONST R4 K2 0x7C080400, // 0003 CALL R2 2 0x8C080301, // 0004 GETMET R2 R1 K1 - 0x58100003, // 0005 LDCONST R4 K3 - 0x7C080400, // 0006 CALL R2 2 - 0x8C080301, // 0007 GETMET R2 R1 K1 - 0x60100018, // 0008 GETGBL R4 G24 - 0x58140004, // 0009 LDCONST R5 K4 - 0x88180105, // 000A GETMBR R6 R0 K5 - 0x88180D06, // 000B GETMBR R6 R6 K6 - 0x7C100400, // 000C CALL R4 2 + 0x60100018, // 0005 GETGBL R4 G24 + 0x58140003, // 0006 LDCONST R5 K3 + 0x88180104, // 0007 GETMBR R6 R0 K4 + 0x88180D05, // 0008 GETMBR R6 R6 K5 + 0x7C100400, // 0009 CALL R4 2 + 0x7C080400, // 000A CALL R2 2 + 0x8C080301, // 000B GETMET R2 R1 K1 + 0x58100006, // 000C LDCONST R4 K6 0x7C080400, // 000D CALL R2 2 0x8C080301, // 000E GETMET R2 R1 K1 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x8C080301, // 0011 GETMET R2 R1 K1 - 0x60100018, // 0012 GETGBL R4 G24 - 0x58140008, // 0013 LDCONST R5 K8 - 0x88180105, // 0014 GETMBR R6 R0 K5 - 0x88180D09, // 0015 GETMBR R6 R6 K9 - 0x7C100400, // 0016 CALL R4 2 - 0x7C080400, // 0017 CALL R2 2 - 0x88080105, // 0018 GETMBR R2 R0 K5 - 0x8808050A, // 0019 GETMBR R2 R2 K10 - 0x780A0001, // 001A JMPF R2 #001D - 0x5808000B, // 001B LDCONST R2 K11 - 0x70020000, // 001C JMP #001E - 0x5808000C, // 001D LDCONST R2 K12 - 0x8C0C0301, // 001E GETMET R3 R1 K1 - 0x60140018, // 001F GETGBL R5 G24 - 0x5818000D, // 0020 LDCONST R6 K13 - 0x5C1C0400, // 0021 MOVE R7 R2 - 0x7C140400, // 0022 CALL R5 2 + 0x60100018, // 000F GETGBL R4 G24 + 0x58140007, // 0010 LDCONST R5 K7 + 0x88180104, // 0011 GETMBR R6 R0 K4 + 0x88180D08, // 0012 GETMBR R6 R6 K8 + 0x7C100400, // 0013 CALL R4 2 + 0x7C080400, // 0014 CALL R2 2 + 0x88080104, // 0015 GETMBR R2 R0 K4 + 0x88080509, // 0016 GETMBR R2 R2 K9 + 0x780A0001, // 0017 JMPF R2 #001A + 0x5808000A, // 0018 LDCONST R2 K10 + 0x70020000, // 0019 JMP #001B + 0x5808000B, // 001A LDCONST R2 K11 + 0x8C0C0301, // 001B GETMET R3 R1 K1 + 0x60140018, // 001C GETGBL R5 G24 + 0x5818000C, // 001D LDCONST R6 K12 + 0x5C1C0400, // 001E MOVE R7 R2 + 0x7C140400, // 001F CALL R5 2 + 0x7C0C0400, // 0020 CALL R3 2 + 0x8C0C0301, // 0021 GETMET R3 R1 K1 + 0x5814000D, // 0022 LDCONST R5 K13 0x7C0C0400, // 0023 CALL R3 2 - 0x8C0C0301, // 0024 GETMET R3 R1 K1 - 0x5814000E, // 0025 LDCONST R5 K14 - 0x7C0C0400, // 0026 CALL R3 2 - 0x80000000, // 0027 RET 0 + 0x80000000, // 0024 RET 0 }) ) ); @@ -2207,7 +2135,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[102]) { /* constants */ + ( &(const bvalue[103]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), /* K1 */ be_nested_str_weak(check_privileged_access), /* K2 */ be_nested_str_weak(string), @@ -2258,7 +2186,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ /* K47 */ be_const_int(1), /* K48 */ be_nested_str_weak(_X2Fmattera_X3F), /* K49 */ be_nested_str_weak(auto), - /* K50 */ be_nested_str_weak(plugins_persist), + /* K50 */ be_nested_str_weak(reset_param), /* K51 */ be_nested_str_weak(config), /* K52 */ be_nested_str_weak(arg_size), /* K53 */ be_nested_str_weak(arg_name), @@ -2285,35 +2213,36 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ /* K74 */ be_nested_str_weak(stop_iteration), /* K75 */ be_nested_str_weak(MTR_X3A_X20config_X20_X3D_X20_X25s), /* K76 */ be_nested_str_weak(MTR_X3A_X20config_X20error_X20_X3D_X20_X25s), - /* K77 */ be_nested_str_weak(_X2Fmatterc_X3F), - /* K78 */ be_nested_str_weak(addep), - /* K79 */ be_nested_str_weak(pi), - /* K80 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), - /* K81 */ be_nested_str_weak(bridge_add_endpoint), - /* K82 */ be_nested_str_weak(addrem), - /* K83 */ be_nested_str_weak(url), - /* K84 */ be_nested_str_weak(value_error), - /* K85 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null), - /* K86 */ be_nested_str_weak(equal_map), - /* K87 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), - /* K88 */ be_nested_str_weak(del), - /* K89 */ be_nested_str_weak(bridge_remove_endpoint), - /* K90 */ be_nested_str_weak(content_start), - /* K91 */ be_nested_str_weak(Parameter_X20error), - /* K92 */ be_nested_str_weak(content_send_style), - /* K93 */ be_nested_str_weak(content_send), - /* K94 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E), - /* K95 */ be_nested_str_weak(html_escape), - /* K96 */ be_nested_str_weak(content_button), - /* K97 */ be_nested_str_weak(BUTTON_CONFIGURATION), - /* K98 */ be_nested_str_weak(content_stop), - /* K99 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K100 */ be_const_int(2), - /* K101 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E), + /* K77 */ be_nested_str_weak(plugins_persist), + /* K78 */ be_nested_str_weak(_X2Fmatterc_X3F), + /* K79 */ be_nested_str_weak(addep), + /* K80 */ be_nested_str_weak(pi), + /* K81 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), + /* K82 */ be_nested_str_weak(bridge_add_endpoint), + /* K83 */ be_nested_str_weak(addrem), + /* K84 */ be_nested_str_weak(url), + /* K85 */ be_nested_str_weak(value_error), + /* K86 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null), + /* K87 */ be_nested_str_weak(equal_map), + /* K88 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27), + /* K89 */ be_nested_str_weak(del), + /* K90 */ be_nested_str_weak(bridge_remove_endpoint), + /* K91 */ be_nested_str_weak(content_start), + /* K92 */ be_nested_str_weak(Parameter_X20error), + /* K93 */ be_nested_str_weak(content_send_style), + /* K94 */ be_nested_str_weak(content_send), + /* K95 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E), + /* K96 */ be_nested_str_weak(html_escape), + /* K97 */ be_nested_str_weak(content_button), + /* K98 */ be_nested_str_weak(BUTTON_CONFIGURATION), + /* K99 */ be_nested_str_weak(content_stop), + /* K100 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K101 */ be_const_int(2), + /* K102 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E), }), be_str_weak(page_part_ctl), &be_const_str_solidified, - ( &(const binstruction[661]) { /* code */ + ( &(const binstruction[658]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x7C080200, // 0002 CALL R2 1 @@ -2324,7 +2253,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0xA40E0600, // 0007 IMPORT R3 K3 0xA4120800, // 0008 IMPORT R4 K4 0x4C140000, // 0009 LDNIL R5 - 0xA802026B, // 000A EXBLK 0 #0277 + 0xA8020268, // 000A EXBLK 0 #0274 0x8C180305, // 000B GETMET R6 R1 K5 0x58200006, // 000C LDCONST R8 K6 0x7C180400, // 000D CALL R6 2 @@ -2374,7 +2303,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C180313, // 0039 GETMET R6 R1 K19 0x58200014, // 003A LDCONST R8 K20 0x7C180400, // 003B CALL R6 2 - 0x70020224, // 003C JMP #0262 + 0x70020221, // 003C JMP #025F 0x8C180305, // 003D GETMET R6 R1 K5 0x58200015, // 003E LDCONST R8 K21 0x7C180400, // 003F CALL R6 2 @@ -2463,7 +2392,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C240313, // 0092 GETMET R9 R1 K19 0x582C0028, // 0093 LDCONST R11 K40 0x7C240400, // 0094 CALL R9 2 - 0x700201CB, // 0095 JMP #0262 + 0x700201C8, // 0095 JMP #025F 0x8C180305, // 0096 GETMET R6 R1 K5 0x58200029, // 0097 LDCONST R8 K41 0x7C180400, // 0098 CALL R6 2 @@ -2505,11 +2434,11 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C240313, // 00BC GETMET R9 R1 K19 0x582C0030, // 00BD LDCONST R11 K48 0x7C240400, // 00BE CALL R9 2 - 0x700201A1, // 00BF JMP #0262 + 0x7002019E, // 00BF JMP #025F 0x8C180305, // 00C0 GETMET R6 R1 K5 0x58200031, // 00C1 LDCONST R8 K49 0x7C180400, // 00C2 CALL R6 2 - 0x781A0010, // 00C3 JMPF R6 #00D5 + 0x781A000D, // 00C3 JMPF R6 #00D2 0xB81A1000, // 00C4 GETNGBL R6 K8 0x601C0018, // 00C5 GETGBL R7 G24 0x58200009, // 00C6 LDCONST R8 K9 @@ -2518,463 +2447,460 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x5820000A, // 00C9 LDCONST R8 K10 0x7C180400, // 00CA CALL R6 2 0x8818010B, // 00CB GETMBR R6 R0 K11 - 0x501C0000, // 00CC LDBOOL R7 0 0 - 0x901A6407, // 00CD SETMBR R6 K50 R7 - 0x8818010B, // 00CE GETMBR R6 R0 K11 - 0x8C180D12, // 00CF GETMET R6 R6 K18 - 0x7C180200, // 00D0 CALL R6 1 - 0x8C180313, // 00D1 GETMET R6 R1 K19 - 0x58200014, // 00D2 LDCONST R8 K20 - 0x7C180400, // 00D3 CALL R6 2 - 0x7002018C, // 00D4 JMP #0262 - 0x8C180305, // 00D5 GETMET R6 R1 K5 - 0x58200033, // 00D6 LDCONST R8 K51 - 0x7C180400, // 00D7 CALL R6 2 - 0x781A00CE, // 00D8 JMPF R6 #01A8 - 0xB81A1000, // 00D9 GETNGBL R6 K8 - 0x601C0018, // 00DA GETGBL R7 G24 - 0x58200009, // 00DB LDCONST R8 K9 - 0x58240033, // 00DC LDCONST R9 K51 - 0x7C1C0400, // 00DD CALL R7 2 - 0x5820000A, // 00DE LDCONST R8 K10 - 0x7C180400, // 00DF CALL R6 2 - 0x50180000, // 00E0 LDBOOL R6 0 0 - 0x601C0010, // 00E1 GETGBL R7 G16 - 0x8C200334, // 00E2 GETMET R8 R1 K52 - 0x7C200200, // 00E3 CALL R8 1 - 0x0420112F, // 00E4 SUB R8 R8 K47 - 0x40225408, // 00E5 CONNECT R8 K42 R8 - 0x7C1C0200, // 00E6 CALL R7 1 - 0xA802009B, // 00E7 EXBLK 0 #0184 - 0x5C200E00, // 00E8 MOVE R8 R7 - 0x7C200000, // 00E9 CALL R8 0 - 0x8C240335, // 00EA GETMET R9 R1 K53 - 0x5C2C1000, // 00EB MOVE R11 R8 - 0x7C240400, // 00EC CALL R9 2 - 0x8C280536, // 00ED GETMET R10 R2 K54 - 0x5C301200, // 00EE MOVE R12 R9 - 0x5834000D, // 00EF LDCONST R13 K13 - 0x7C280600, // 00F0 CALL R10 3 - 0x1C28152A, // 00F1 EQ R10 R10 K42 - 0x782A0057, // 00F2 JMPF R10 #014B - 0x60280009, // 00F3 GETGBL R10 G9 - 0x402E1537, // 00F4 CONNECT R11 K10 K55 - 0x942C120B, // 00F5 GETIDX R11 R9 R11 - 0x7C280200, // 00F6 CALL R10 1 - 0x8C2C030D, // 00F7 GETMET R11 R1 K13 - 0x5C341000, // 00F8 MOVE R13 R8 - 0x7C2C0400, // 00F9 CALL R11 2 - 0x8830010B, // 00FA GETMBR R12 R0 K11 - 0x88301938, // 00FB GETMBR R12 R12 K56 - 0x8C301936, // 00FC GETMET R12 R12 K54 - 0x60380008, // 00FD GETGBL R14 G8 - 0x5C3C1400, // 00FE MOVE R15 R10 - 0x7C380200, // 00FF CALL R14 1 - 0x7C300400, // 0100 CALL R12 2 - 0x4C340000, // 0101 LDNIL R13 - 0x2034180D, // 0102 NE R13 R12 R13 - 0x7836003E, // 0103 JMPF R13 #0143 - 0x8834010B, // 0104 GETMBR R13 R0 K11 - 0x88341B39, // 0105 GETMBR R13 R13 K57 - 0x8C341B36, // 0106 GETMET R13 R13 K54 - 0x8C3C1936, // 0107 GETMET R15 R12 K54 - 0x5844003A, // 0108 LDCONST R17 K58 - 0x5848003B, // 0109 LDCONST R18 K59 - 0x7C3C0600, // 010A CALL R15 3 - 0x7C340400, // 010B CALL R13 2 - 0x4C380000, // 010C LDNIL R14 - 0x20381A0E, // 010D NE R14 R13 R14 - 0x783A0032, // 010E JMPF R14 #0142 - 0xB83A1000, // 010F GETNGBL R14 K8 - 0x603C0018, // 0110 GETGBL R15 G24 - 0x5840003C, // 0111 LDCONST R16 K60 - 0x5C441400, // 0112 MOVE R17 R10 - 0x5C481600, // 0113 MOVE R18 R11 - 0x7C3C0600, // 0114 CALL R15 3 - 0x5840000A, // 0115 LDCONST R16 K10 - 0x7C380400, // 0116 CALL R14 2 - 0x8C381B3D, // 0117 GETMET R14 R13 K61 - 0x5C401A00, // 0118 MOVE R16 R13 - 0x5C441800, // 0119 MOVE R17 R12 - 0x7C380600, // 011A CALL R14 3 - 0x203C1C0B, // 011B NE R15 R14 R11 - 0xB8421000, // 011C GETNGBL R16 K8 - 0x60440018, // 011D GETGBL R17 G24 - 0x5848003E, // 011E LDCONST R18 K62 - 0x5C4C1400, // 011F MOVE R19 R10 - 0x5C501C00, // 0120 MOVE R20 R14 - 0x5C541600, // 0121 MOVE R21 R11 - 0x20581C0B, // 0122 NE R22 R14 R11 - 0x785A0001, // 0123 JMPF R22 #0126 - 0x5858003F, // 0124 LDCONST R22 K63 - 0x70020000, // 0125 JMP #0127 - 0x5858003B, // 0126 LDCONST R22 K59 - 0x7C440A00, // 0127 CALL R17 5 - 0x5848000A, // 0128 LDCONST R18 K10 - 0x7C400400, // 0129 CALL R16 2 - 0x783E0016, // 012A JMPF R15 #0142 - 0x50180200, // 012B LDBOOL R6 1 0 - 0x8C401B40, // 012C GETMET R16 R13 K64 - 0x5C481A00, // 012D MOVE R18 R13 - 0x5C4C1800, // 012E MOVE R19 R12 - 0x5C501600, // 012F MOVE R20 R11 - 0x7C400800, // 0130 CALL R16 4 - 0x8840010B, // 0131 GETMBR R16 R0 K11 - 0x8C402141, // 0132 GETMET R16 R16 K65 - 0x5C481400, // 0133 MOVE R18 R10 - 0x7C400400, // 0134 CALL R16 2 - 0x7842000B, // 0135 JMPF R16 #0142 - 0xB8461000, // 0136 GETNGBL R17 K8 - 0x60480018, // 0137 GETGBL R18 G24 - 0x584C0042, // 0138 LDCONST R19 K66 - 0x5C501800, // 0139 MOVE R20 R12 - 0x5C541400, // 013A MOVE R21 R10 - 0x5C582000, // 013B MOVE R22 R16 - 0x7C480800, // 013C CALL R18 4 - 0x584C000A, // 013D LDCONST R19 K10 + 0x8C180D32, // 00CC GETMET R6 R6 K50 + 0x7C180200, // 00CD CALL R6 1 + 0x8C180313, // 00CE GETMET R6 R1 K19 + 0x58200014, // 00CF LDCONST R8 K20 + 0x7C180400, // 00D0 CALL R6 2 + 0x7002018C, // 00D1 JMP #025F + 0x8C180305, // 00D2 GETMET R6 R1 K5 + 0x58200033, // 00D3 LDCONST R8 K51 + 0x7C180400, // 00D4 CALL R6 2 + 0x781A00CE, // 00D5 JMPF R6 #01A5 + 0xB81A1000, // 00D6 GETNGBL R6 K8 + 0x601C0018, // 00D7 GETGBL R7 G24 + 0x58200009, // 00D8 LDCONST R8 K9 + 0x58240033, // 00D9 LDCONST R9 K51 + 0x7C1C0400, // 00DA CALL R7 2 + 0x5820000A, // 00DB LDCONST R8 K10 + 0x7C180400, // 00DC CALL R6 2 + 0x50180000, // 00DD LDBOOL R6 0 0 + 0x601C0010, // 00DE GETGBL R7 G16 + 0x8C200334, // 00DF GETMET R8 R1 K52 + 0x7C200200, // 00E0 CALL R8 1 + 0x0420112F, // 00E1 SUB R8 R8 K47 + 0x40225408, // 00E2 CONNECT R8 K42 R8 + 0x7C1C0200, // 00E3 CALL R7 1 + 0xA802009B, // 00E4 EXBLK 0 #0181 + 0x5C200E00, // 00E5 MOVE R8 R7 + 0x7C200000, // 00E6 CALL R8 0 + 0x8C240335, // 00E7 GETMET R9 R1 K53 + 0x5C2C1000, // 00E8 MOVE R11 R8 + 0x7C240400, // 00E9 CALL R9 2 + 0x8C280536, // 00EA GETMET R10 R2 K54 + 0x5C301200, // 00EB MOVE R12 R9 + 0x5834000D, // 00EC LDCONST R13 K13 + 0x7C280600, // 00ED CALL R10 3 + 0x1C28152A, // 00EE EQ R10 R10 K42 + 0x782A0057, // 00EF JMPF R10 #0148 + 0x60280009, // 00F0 GETGBL R10 G9 + 0x402E1537, // 00F1 CONNECT R11 K10 K55 + 0x942C120B, // 00F2 GETIDX R11 R9 R11 + 0x7C280200, // 00F3 CALL R10 1 + 0x8C2C030D, // 00F4 GETMET R11 R1 K13 + 0x5C341000, // 00F5 MOVE R13 R8 + 0x7C2C0400, // 00F6 CALL R11 2 + 0x8830010B, // 00F7 GETMBR R12 R0 K11 + 0x88301938, // 00F8 GETMBR R12 R12 K56 + 0x8C301936, // 00F9 GETMET R12 R12 K54 + 0x60380008, // 00FA GETGBL R14 G8 + 0x5C3C1400, // 00FB MOVE R15 R10 + 0x7C380200, // 00FC CALL R14 1 + 0x7C300400, // 00FD CALL R12 2 + 0x4C340000, // 00FE LDNIL R13 + 0x2034180D, // 00FF NE R13 R12 R13 + 0x7836003E, // 0100 JMPF R13 #0140 + 0x8834010B, // 0101 GETMBR R13 R0 K11 + 0x88341B39, // 0102 GETMBR R13 R13 K57 + 0x8C341B36, // 0103 GETMET R13 R13 K54 + 0x8C3C1936, // 0104 GETMET R15 R12 K54 + 0x5844003A, // 0105 LDCONST R17 K58 + 0x5848003B, // 0106 LDCONST R18 K59 + 0x7C3C0600, // 0107 CALL R15 3 + 0x7C340400, // 0108 CALL R13 2 + 0x4C380000, // 0109 LDNIL R14 + 0x20381A0E, // 010A NE R14 R13 R14 + 0x783A0032, // 010B JMPF R14 #013F + 0xB83A1000, // 010C GETNGBL R14 K8 + 0x603C0018, // 010D GETGBL R15 G24 + 0x5840003C, // 010E LDCONST R16 K60 + 0x5C441400, // 010F MOVE R17 R10 + 0x5C481600, // 0110 MOVE R18 R11 + 0x7C3C0600, // 0111 CALL R15 3 + 0x5840000A, // 0112 LDCONST R16 K10 + 0x7C380400, // 0113 CALL R14 2 + 0x8C381B3D, // 0114 GETMET R14 R13 K61 + 0x5C401A00, // 0115 MOVE R16 R13 + 0x5C441800, // 0116 MOVE R17 R12 + 0x7C380600, // 0117 CALL R14 3 + 0x203C1C0B, // 0118 NE R15 R14 R11 + 0xB8421000, // 0119 GETNGBL R16 K8 + 0x60440018, // 011A GETGBL R17 G24 + 0x5848003E, // 011B LDCONST R18 K62 + 0x5C4C1400, // 011C MOVE R19 R10 + 0x5C501C00, // 011D MOVE R20 R14 + 0x5C541600, // 011E MOVE R21 R11 + 0x20581C0B, // 011F NE R22 R14 R11 + 0x785A0001, // 0120 JMPF R22 #0123 + 0x5858003F, // 0121 LDCONST R22 K63 + 0x70020000, // 0122 JMP #0124 + 0x5858003B, // 0123 LDCONST R22 K59 + 0x7C440A00, // 0124 CALL R17 5 + 0x5848000A, // 0125 LDCONST R18 K10 + 0x7C400400, // 0126 CALL R16 2 + 0x783E0016, // 0127 JMPF R15 #013F + 0x50180200, // 0128 LDBOOL R6 1 0 + 0x8C401B40, // 0129 GETMET R16 R13 K64 + 0x5C481A00, // 012A MOVE R18 R13 + 0x5C4C1800, // 012B MOVE R19 R12 + 0x5C501600, // 012C MOVE R20 R11 + 0x7C400800, // 012D CALL R16 4 + 0x8840010B, // 012E GETMBR R16 R0 K11 + 0x8C402141, // 012F GETMET R16 R16 K65 + 0x5C481400, // 0130 MOVE R18 R10 + 0x7C400400, // 0131 CALL R16 2 + 0x7842000B, // 0132 JMPF R16 #013F + 0xB8461000, // 0133 GETNGBL R17 K8 + 0x60480018, // 0134 GETGBL R18 G24 + 0x584C0042, // 0135 LDCONST R19 K66 + 0x5C501800, // 0136 MOVE R20 R12 + 0x5C541400, // 0137 MOVE R21 R10 + 0x5C582000, // 0138 MOVE R22 R16 + 0x7C480800, // 0139 CALL R18 4 + 0x584C000A, // 013A LDCONST R19 K10 + 0x7C440400, // 013B CALL R17 2 + 0x8C442143, // 013C GETMET R17 R16 K67 + 0x5C4C1800, // 013D MOVE R19 R12 0x7C440400, // 013E CALL R17 2 - 0x8C442143, // 013F GETMET R17 R16 K67 - 0x5C4C1800, // 0140 MOVE R19 R12 - 0x7C440400, // 0141 CALL R17 2 - 0x70020006, // 0142 JMP #014A - 0xB8361000, // 0143 GETNGBL R13 K8 - 0x60380018, // 0144 GETGBL R14 G24 - 0x583C0044, // 0145 LDCONST R15 K68 - 0x5C401400, // 0146 MOVE R16 R10 - 0x7C380400, // 0147 CALL R14 2 - 0x583C000A, // 0148 LDCONST R15 K10 - 0x7C340400, // 0149 CALL R13 2 - 0x70020037, // 014A JMP #0183 - 0x8C280536, // 014B GETMET R10 R2 K54 - 0x5C301200, // 014C MOVE R12 R9 - 0x58340045, // 014D LDCONST R13 K69 - 0x7C280600, // 014E CALL R10 3 - 0x1C28152A, // 014F EQ R10 R10 K42 - 0x782A0031, // 0150 JMPF R10 #0183 - 0x60280009, // 0151 GETGBL R10 G9 - 0x402E1537, // 0152 CONNECT R11 K10 K55 - 0x942C120B, // 0153 GETIDX R11 R9 R11 - 0x7C280200, // 0154 CALL R10 1 - 0x8C2C030D, // 0155 GETMET R11 R1 K13 - 0x5C341000, // 0156 MOVE R13 R8 - 0x7C2C0400, // 0157 CALL R11 2 - 0x8830010B, // 0158 GETMBR R12 R0 K11 - 0x88301938, // 0159 GETMBR R12 R12 K56 - 0x8C301936, // 015A GETMET R12 R12 K54 - 0x60380008, // 015B GETGBL R14 G8 - 0x5C3C1400, // 015C MOVE R15 R10 - 0x7C380200, // 015D CALL R14 1 - 0x7C300400, // 015E CALL R12 2 - 0x4C340000, // 015F LDNIL R13 - 0x2034180D, // 0160 NE R13 R12 R13 - 0x78360020, // 0161 JMPF R13 #0183 - 0x8C341936, // 0162 GETMET R13 R12 K54 - 0x583C0046, // 0163 LDCONST R15 K70 - 0x5840003B, // 0164 LDCONST R16 K59 - 0x7C340600, // 0165 CALL R13 3 - 0x20381A0B, // 0166 NE R14 R13 R11 - 0x783A001A, // 0167 JMPF R14 #0183 - 0x50180200, // 0168 LDBOOL R6 1 0 - 0x883C010B, // 0169 GETMBR R15 R0 K11 - 0x8C3C1F41, // 016A GETMET R15 R15 K65 - 0x5C441400, // 016B MOVE R17 R10 - 0x7C3C0400, // 016C CALL R15 2 - 0x783E0014, // 016D JMPF R15 #0183 - 0x8C401F47, // 016E GETMET R16 R15 K71 - 0x5C481600, // 016F MOVE R18 R11 - 0x7C400400, // 0170 CALL R16 2 - 0x782E0001, // 0171 JMPF R11 #0174 - 0x98328C0B, // 0172 SETIDX R12 K70 R11 - 0x70020002, // 0173 JMP #0177 - 0x8C401948, // 0174 GETMET R16 R12 K72 - 0x58480046, // 0175 LDCONST R18 K70 - 0x7C400400, // 0176 CALL R16 2 - 0xB8421000, // 0177 GETNGBL R16 K8 - 0x60440018, // 0178 GETGBL R17 G24 - 0x58480049, // 0179 LDCONST R18 K73 - 0x5C4C1800, // 017A MOVE R19 R12 - 0x5C501400, // 017B MOVE R20 R10 - 0x5C541E00, // 017C MOVE R21 R15 - 0x7C440800, // 017D CALL R17 4 - 0x5848000A, // 017E LDCONST R18 K10 + 0x70020006, // 013F JMP #0147 + 0xB8361000, // 0140 GETNGBL R13 K8 + 0x60380018, // 0141 GETGBL R14 G24 + 0x583C0044, // 0142 LDCONST R15 K68 + 0x5C401400, // 0143 MOVE R16 R10 + 0x7C380400, // 0144 CALL R14 2 + 0x583C000A, // 0145 LDCONST R15 K10 + 0x7C340400, // 0146 CALL R13 2 + 0x70020037, // 0147 JMP #0180 + 0x8C280536, // 0148 GETMET R10 R2 K54 + 0x5C301200, // 0149 MOVE R12 R9 + 0x58340045, // 014A LDCONST R13 K69 + 0x7C280600, // 014B CALL R10 3 + 0x1C28152A, // 014C EQ R10 R10 K42 + 0x782A0031, // 014D JMPF R10 #0180 + 0x60280009, // 014E GETGBL R10 G9 + 0x402E1537, // 014F CONNECT R11 K10 K55 + 0x942C120B, // 0150 GETIDX R11 R9 R11 + 0x7C280200, // 0151 CALL R10 1 + 0x8C2C030D, // 0152 GETMET R11 R1 K13 + 0x5C341000, // 0153 MOVE R13 R8 + 0x7C2C0400, // 0154 CALL R11 2 + 0x8830010B, // 0155 GETMBR R12 R0 K11 + 0x88301938, // 0156 GETMBR R12 R12 K56 + 0x8C301936, // 0157 GETMET R12 R12 K54 + 0x60380008, // 0158 GETGBL R14 G8 + 0x5C3C1400, // 0159 MOVE R15 R10 + 0x7C380200, // 015A CALL R14 1 + 0x7C300400, // 015B CALL R12 2 + 0x4C340000, // 015C LDNIL R13 + 0x2034180D, // 015D NE R13 R12 R13 + 0x78360020, // 015E JMPF R13 #0180 + 0x8C341936, // 015F GETMET R13 R12 K54 + 0x583C0046, // 0160 LDCONST R15 K70 + 0x5840003B, // 0161 LDCONST R16 K59 + 0x7C340600, // 0162 CALL R13 3 + 0x20381A0B, // 0163 NE R14 R13 R11 + 0x783A001A, // 0164 JMPF R14 #0180 + 0x50180200, // 0165 LDBOOL R6 1 0 + 0x883C010B, // 0166 GETMBR R15 R0 K11 + 0x8C3C1F41, // 0167 GETMET R15 R15 K65 + 0x5C441400, // 0168 MOVE R17 R10 + 0x7C3C0400, // 0169 CALL R15 2 + 0x783E0014, // 016A JMPF R15 #0180 + 0x8C401F47, // 016B GETMET R16 R15 K71 + 0x5C481600, // 016C MOVE R18 R11 + 0x7C400400, // 016D CALL R16 2 + 0x782E0001, // 016E JMPF R11 #0171 + 0x98328C0B, // 016F SETIDX R12 K70 R11 + 0x70020002, // 0170 JMP #0174 + 0x8C401948, // 0171 GETMET R16 R12 K72 + 0x58480046, // 0172 LDCONST R18 K70 + 0x7C400400, // 0173 CALL R16 2 + 0xB8421000, // 0174 GETNGBL R16 K8 + 0x60440018, // 0175 GETGBL R17 G24 + 0x58480049, // 0176 LDCONST R18 K73 + 0x5C4C1800, // 0177 MOVE R19 R12 + 0x5C501400, // 0178 MOVE R20 R10 + 0x5C541E00, // 0179 MOVE R21 R15 + 0x7C440800, // 017A CALL R17 4 + 0x5848000A, // 017B LDCONST R18 K10 + 0x7C400400, // 017C CALL R16 2 + 0x8C401F43, // 017D GETMET R16 R15 K67 + 0x5C481800, // 017E MOVE R18 R12 0x7C400400, // 017F CALL R16 2 - 0x8C401F43, // 0180 GETMET R16 R15 K67 - 0x5C481800, // 0181 MOVE R18 R12 - 0x7C400400, // 0182 CALL R16 2 - 0x7001FF63, // 0183 JMP #00E8 - 0x581C004A, // 0184 LDCONST R7 K74 - 0xAC1C0200, // 0185 CATCH R7 1 0 - 0xB0080000, // 0186 RAISE 2 R0 R0 - 0xB81E1000, // 0187 GETNGBL R7 K8 - 0x60200018, // 0188 GETGBL R8 G24 - 0x5824004B, // 0189 LDCONST R9 K75 - 0x60280008, // 018A GETGBL R10 G8 - 0x882C010B, // 018B GETMBR R11 R0 K11 - 0x882C1738, // 018C GETMBR R11 R11 K56 - 0x7C280200, // 018D CALL R10 1 - 0x7C200400, // 018E CALL R8 2 - 0x5824000A, // 018F LDCONST R9 K10 - 0x7C1C0400, // 0190 CALL R7 2 - 0x78160007, // 0191 JMPF R5 #019A - 0xB81E1000, // 0192 GETNGBL R7 K8 - 0x60200018, // 0193 GETGBL R8 G24 - 0x5824004C, // 0194 LDCONST R9 K76 - 0x5C280A00, // 0195 MOVE R10 R5 - 0x7C200400, // 0196 CALL R8 2 - 0x5824000A, // 0197 LDCONST R9 K10 - 0x7C1C0400, // 0198 CALL R7 2 - 0x7002000C, // 0199 JMP #01A7 - 0x741A0002, // 019A JMPT R6 #019E + 0x7001FF63, // 0180 JMP #00E5 + 0x581C004A, // 0181 LDCONST R7 K74 + 0xAC1C0200, // 0182 CATCH R7 1 0 + 0xB0080000, // 0183 RAISE 2 R0 R0 + 0xB81E1000, // 0184 GETNGBL R7 K8 + 0x60200018, // 0185 GETGBL R8 G24 + 0x5824004B, // 0186 LDCONST R9 K75 + 0x60280008, // 0187 GETGBL R10 G8 + 0x882C010B, // 0188 GETMBR R11 R0 K11 + 0x882C1738, // 0189 GETMBR R11 R11 K56 + 0x7C280200, // 018A CALL R10 1 + 0x7C200400, // 018B CALL R8 2 + 0x5824000A, // 018C LDCONST R9 K10 + 0x7C1C0400, // 018D CALL R7 2 + 0x78160007, // 018E JMPF R5 #0197 + 0xB81E1000, // 018F GETNGBL R7 K8 + 0x60200018, // 0190 GETGBL R8 G24 + 0x5824004C, // 0191 LDCONST R9 K76 + 0x5C280A00, // 0192 MOVE R10 R5 + 0x7C200400, // 0193 CALL R8 2 + 0x5824000A, // 0194 LDCONST R9 K10 + 0x7C1C0400, // 0195 CALL R7 2 + 0x7002000C, // 0196 JMP #01A4 + 0x741A0002, // 0197 JMPT R6 #019B + 0x881C010B, // 0198 GETMBR R7 R0 K11 + 0x881C0F4D, // 0199 GETMBR R7 R7 K77 + 0x741E0005, // 019A JMPT R7 #01A1 0x881C010B, // 019B GETMBR R7 R0 K11 - 0x881C0F32, // 019C GETMBR R7 R7 K50 - 0x741E0005, // 019D JMPT R7 #01A4 + 0x50200200, // 019C LDBOOL R8 1 0 + 0x901E9A08, // 019D SETMBR R7 K77 R8 0x881C010B, // 019E GETMBR R7 R0 K11 - 0x50200200, // 019F LDBOOL R8 1 0 - 0x901E6408, // 01A0 SETMBR R7 K50 R8 - 0x881C010B, // 01A1 GETMBR R7 R0 K11 - 0x8C1C0F12, // 01A2 GETMET R7 R7 K18 - 0x7C1C0200, // 01A3 CALL R7 1 - 0x8C1C0313, // 01A4 GETMET R7 R1 K19 - 0x5824004D, // 01A5 LDCONST R9 K77 - 0x7C1C0400, // 01A6 CALL R7 2 - 0x700200B9, // 01A7 JMP #0262 - 0x8C180305, // 01A8 GETMET R6 R1 K5 - 0x5820004E, // 01A9 LDCONST R8 K78 - 0x7C180400, // 01AA CALL R6 2 - 0x781A002A, // 01AB JMPF R6 #01D7 - 0x8C18030D, // 01AC GETMET R6 R1 K13 - 0x5820004F, // 01AD LDCONST R8 K79 - 0x7C180400, // 01AE CALL R6 2 - 0x8C1C030D, // 01AF GETMET R7 R1 K13 - 0x5824000D, // 01B0 LDCONST R9 K13 - 0x7C1C0400, // 01B1 CALL R7 2 - 0x8C20030D, // 01B2 GETMET R8 R1 K13 - 0x58280045, // 01B3 LDCONST R10 K69 - 0x7C200400, // 01B4 CALL R8 2 - 0xB8261000, // 01B5 GETNGBL R9 K8 - 0x60280018, // 01B6 GETGBL R10 G24 - 0x582C0050, // 01B7 LDCONST R11 K80 - 0x5C300C00, // 01B8 MOVE R12 R6 - 0x5C340E00, // 01B9 MOVE R13 R7 - 0x7C280600, // 01BA CALL R10 3 - 0x582C000A, // 01BB LDCONST R11 K10 - 0x7C240400, // 01BC CALL R9 2 - 0x8824010B, // 01BD GETMBR R9 R0 K11 - 0x88241339, // 01BE GETMBR R9 R9 K57 - 0x8C241336, // 01BF GETMET R9 R9 K54 - 0x5C2C0C00, // 01C0 MOVE R11 R6 - 0x7C240400, // 01C1 CALL R9 2 - 0x4C280000, // 01C2 LDNIL R10 - 0x2028120A, // 01C3 NE R10 R9 R10 - 0x782A000D, // 01C4 JMPF R10 #01D3 - 0x60280013, // 01C5 GETGBL R10 G19 - 0x7C280000, // 01C6 CALL R10 0 - 0x78220000, // 01C7 JMPF R8 #01C9 - 0x982A8C08, // 01C8 SETIDX R10 K70 R8 - 0x8C2C1340, // 01C9 GETMET R11 R9 K64 - 0x5C341200, // 01CA MOVE R13 R9 - 0x5C381400, // 01CB MOVE R14 R10 - 0x5C3C0E00, // 01CC MOVE R15 R7 - 0x7C2C0800, // 01CD CALL R11 4 - 0x882C010B, // 01CE GETMBR R11 R0 K11 - 0x8C2C1751, // 01CF GETMET R11 R11 K81 - 0x5C340C00, // 01D0 MOVE R13 R6 - 0x5C381400, // 01D1 MOVE R14 R10 - 0x7C2C0600, // 01D2 CALL R11 3 - 0x8C280313, // 01D3 GETMET R10 R1 K19 - 0x5830004D, // 01D4 LDCONST R12 K77 - 0x7C280400, // 01D5 CALL R10 2 - 0x7002008A, // 01D6 JMP #0262 - 0x8C180305, // 01D7 GETMET R6 R1 K5 - 0x58200052, // 01D8 LDCONST R8 K82 - 0x7C180400, // 01D9 CALL R6 2 - 0x781A005D, // 01DA JMPF R6 #0239 - 0x8C18030D, // 01DB GETMET R6 R1 K13 - 0x58200053, // 01DC LDCONST R8 K83 - 0x7C180400, // 01DD CALL R6 2 - 0x4C1C0000, // 01DE LDNIL R7 - 0x1C1C0C07, // 01DF EQ R7 R6 R7 - 0x741E0001, // 01E0 JMPT R7 #01E3 - 0x1C1C0D3B, // 01E1 EQ R7 R6 K59 - 0x781E0000, // 01E2 JMPF R7 #01E4 - 0xB006A955, // 01E3 RAISE 1 K84 K85 - 0x581C002A, // 01E4 LDCONST R7 K42 - 0x60200008, // 01E5 GETGBL R8 G8 - 0x5C240E00, // 01E6 MOVE R9 R7 - 0x7C200200, // 01E7 CALL R8 1 - 0x8C240305, // 01E8 GETMET R9 R1 K5 - 0x002E9E08, // 01E9 ADD R11 K79 R8 - 0x7C240400, // 01EA CALL R9 2 - 0x78260048, // 01EB JMPF R9 #0235 - 0x8C24030D, // 01EC GETMET R9 R1 K13 - 0x002E9E08, // 01ED ADD R11 K79 R8 - 0x7C240400, // 01EE CALL R9 2 - 0x8C28030D, // 01EF GETMET R10 R1 K13 - 0x00321A08, // 01F0 ADD R12 K13 R8 - 0x7C280400, // 01F1 CALL R10 2 - 0x8C2C030D, // 01F2 GETMET R11 R1 K13 - 0x00368A08, // 01F3 ADD R13 K69 R8 - 0x7C2C0400, // 01F4 CALL R11 2 - 0x2030133B, // 01F5 NE R12 R9 K59 - 0x78320037, // 01F6 JMPF R12 #022F - 0x8830010B, // 01F7 GETMBR R12 R0 K11 - 0x88301939, // 01F8 GETMBR R12 R12 K57 - 0x8C301936, // 01F9 GETMET R12 R12 K54 - 0x5C381200, // 01FA MOVE R14 R9 - 0x7C300400, // 01FB CALL R12 2 - 0x4C340000, // 01FC LDNIL R13 - 0x2034180D, // 01FD NE R13 R12 R13 - 0x7836002F, // 01FE JMPF R13 #022F - 0x60340013, // 01FF GETGBL R13 G19 - 0x7C340000, // 0200 CALL R13 0 - 0x9836A606, // 0201 SETIDX R13 K83 R6 - 0x98367409, // 0202 SETIDX R13 K58 R9 - 0x782E0000, // 0203 JMPF R11 #0205 - 0x98368C0B, // 0204 SETIDX R13 K70 R11 - 0x8C381940, // 0205 GETMET R14 R12 K64 - 0x5C401800, // 0206 MOVE R16 R12 - 0x5C441A00, // 0207 MOVE R17 R13 - 0x5C481400, // 0208 MOVE R18 R10 - 0x7C380800, // 0209 CALL R14 4 - 0x50380000, // 020A LDBOOL R14 0 0 - 0x603C0010, // 020B GETGBL R15 G16 - 0x8840010B, // 020C GETMBR R16 R0 K11 - 0x88402138, // 020D GETMBR R16 R16 K56 - 0x7C3C0200, // 020E CALL R15 1 - 0xA802000B, // 020F EXBLK 0 #021C - 0x5C401E00, // 0210 MOVE R16 R15 - 0x7C400000, // 0211 CALL R16 0 - 0x8C440156, // 0212 GETMET R17 R0 K86 - 0x5C4C2000, // 0213 MOVE R19 R16 - 0x5C501A00, // 0214 MOVE R20 R13 - 0x7C440600, // 0215 CALL R17 3 - 0x78460001, // 0216 JMPF R17 #0219 - 0x50380200, // 0217 LDBOOL R14 1 0 - 0x70020000, // 0218 JMP #021A - 0x7001FFF5, // 0219 JMP #0210 - 0xA8040001, // 021A EXBLK 1 1 - 0x70020002, // 021B JMP #021F - 0x583C004A, // 021C LDCONST R15 K74 - 0xAC3C0200, // 021D CATCH R15 1 0 - 0xB0080000, // 021E RAISE 2 R0 R0 - 0x5C3C1C00, // 021F MOVE R15 R14 - 0x743E000D, // 0220 JMPT R15 #022F - 0xB83E1000, // 0221 GETNGBL R15 K8 - 0x60400018, // 0222 GETGBL R16 G24 - 0x58440057, // 0223 LDCONST R17 K87 - 0x5C480C00, // 0224 MOVE R18 R6 - 0x5C4C1200, // 0225 MOVE R19 R9 - 0x5C501400, // 0226 MOVE R20 R10 - 0x7C400800, // 0227 CALL R16 4 - 0x5844000A, // 0228 LDCONST R17 K10 - 0x7C3C0400, // 0229 CALL R15 2 - 0x883C010B, // 022A GETMBR R15 R0 K11 - 0x8C3C1F51, // 022B GETMET R15 R15 K81 - 0x5C441200, // 022C MOVE R17 R9 - 0x5C481A00, // 022D MOVE R18 R13 - 0x7C3C0600, // 022E CALL R15 3 - 0x001C0F2F, // 022F ADD R7 R7 K47 - 0x60300008, // 0230 GETGBL R12 G8 - 0x5C340E00, // 0231 MOVE R13 R7 - 0x7C300200, // 0232 CALL R12 1 - 0x5C201800, // 0233 MOVE R8 R12 - 0x7001FFB2, // 0234 JMP #01E8 - 0x8C240313, // 0235 GETMET R9 R1 K19 - 0x582C004D, // 0236 LDCONST R11 K77 - 0x7C240400, // 0237 CALL R9 2 - 0x70020028, // 0238 JMP #0262 - 0x4C180000, // 0239 LDNIL R6 - 0x601C0010, // 023A GETGBL R7 G16 - 0x8C200334, // 023B GETMET R8 R1 K52 - 0x7C200200, // 023C CALL R8 1 - 0x0420112F, // 023D SUB R8 R8 K47 - 0x40225408, // 023E CONNECT R8 K42 R8 - 0x7C1C0200, // 023F CALL R7 1 - 0xA8020013, // 0240 EXBLK 0 #0255 - 0x5C200E00, // 0241 MOVE R8 R7 - 0x7C200000, // 0242 CALL R8 0 - 0x8C240335, // 0243 GETMET R9 R1 K53 - 0x5C2C1000, // 0244 MOVE R11 R8 - 0x7C240400, // 0245 CALL R9 2 - 0x8C280536, // 0246 GETMET R10 R2 K54 - 0x5C301200, // 0247 MOVE R12 R9 - 0x58340058, // 0248 LDCONST R13 K88 - 0x7C280600, // 0249 CALL R10 3 - 0x1C28152A, // 024A EQ R10 R10 K42 - 0x782A0005, // 024B JMPF R10 #0252 - 0x60280009, // 024C GETGBL R10 G9 - 0x402E1537, // 024D CONNECT R11 K10 K55 - 0x942C120B, // 024E GETIDX R11 R9 R11 - 0x7C280200, // 024F CALL R10 1 - 0x5C181400, // 0250 MOVE R6 R10 - 0x70020000, // 0251 JMP #0253 - 0x7001FFED, // 0252 JMP #0241 - 0xA8040001, // 0253 EXBLK 1 1 - 0x70020002, // 0254 JMP #0258 - 0x581C004A, // 0255 LDCONST R7 K74 - 0xAC1C0200, // 0256 CATCH R7 1 0 - 0xB0080000, // 0257 RAISE 2 R0 R0 - 0x4C1C0000, // 0258 LDNIL R7 - 0x201C0C07, // 0259 NE R7 R6 R7 - 0x781E0006, // 025A JMPF R7 #0262 - 0x881C010B, // 025B GETMBR R7 R0 K11 - 0x8C1C0F59, // 025C GETMET R7 R7 K89 - 0x5C240C00, // 025D MOVE R9 R6 + 0x8C1C0F12, // 019F GETMET R7 R7 K18 + 0x7C1C0200, // 01A0 CALL R7 1 + 0x8C1C0313, // 01A1 GETMET R7 R1 K19 + 0x5824004E, // 01A2 LDCONST R9 K78 + 0x7C1C0400, // 01A3 CALL R7 2 + 0x700200B9, // 01A4 JMP #025F + 0x8C180305, // 01A5 GETMET R6 R1 K5 + 0x5820004F, // 01A6 LDCONST R8 K79 + 0x7C180400, // 01A7 CALL R6 2 + 0x781A002A, // 01A8 JMPF R6 #01D4 + 0x8C18030D, // 01A9 GETMET R6 R1 K13 + 0x58200050, // 01AA LDCONST R8 K80 + 0x7C180400, // 01AB CALL R6 2 + 0x8C1C030D, // 01AC GETMET R7 R1 K13 + 0x5824000D, // 01AD LDCONST R9 K13 + 0x7C1C0400, // 01AE CALL R7 2 + 0x8C20030D, // 01AF GETMET R8 R1 K13 + 0x58280045, // 01B0 LDCONST R10 K69 + 0x7C200400, // 01B1 CALL R8 2 + 0xB8261000, // 01B2 GETNGBL R9 K8 + 0x60280018, // 01B3 GETGBL R10 G24 + 0x582C0051, // 01B4 LDCONST R11 K81 + 0x5C300C00, // 01B5 MOVE R12 R6 + 0x5C340E00, // 01B6 MOVE R13 R7 + 0x7C280600, // 01B7 CALL R10 3 + 0x582C000A, // 01B8 LDCONST R11 K10 + 0x7C240400, // 01B9 CALL R9 2 + 0x8824010B, // 01BA GETMBR R9 R0 K11 + 0x88241339, // 01BB GETMBR R9 R9 K57 + 0x8C241336, // 01BC GETMET R9 R9 K54 + 0x5C2C0C00, // 01BD MOVE R11 R6 + 0x7C240400, // 01BE CALL R9 2 + 0x4C280000, // 01BF LDNIL R10 + 0x2028120A, // 01C0 NE R10 R9 R10 + 0x782A000D, // 01C1 JMPF R10 #01D0 + 0x60280013, // 01C2 GETGBL R10 G19 + 0x7C280000, // 01C3 CALL R10 0 + 0x78220000, // 01C4 JMPF R8 #01C6 + 0x982A8C08, // 01C5 SETIDX R10 K70 R8 + 0x8C2C1340, // 01C6 GETMET R11 R9 K64 + 0x5C341200, // 01C7 MOVE R13 R9 + 0x5C381400, // 01C8 MOVE R14 R10 + 0x5C3C0E00, // 01C9 MOVE R15 R7 + 0x7C2C0800, // 01CA CALL R11 4 + 0x882C010B, // 01CB GETMBR R11 R0 K11 + 0x8C2C1752, // 01CC GETMET R11 R11 K82 + 0x5C340C00, // 01CD MOVE R13 R6 + 0x5C381400, // 01CE MOVE R14 R10 + 0x7C2C0600, // 01CF CALL R11 3 + 0x8C280313, // 01D0 GETMET R10 R1 K19 + 0x5830004E, // 01D1 LDCONST R12 K78 + 0x7C280400, // 01D2 CALL R10 2 + 0x7002008A, // 01D3 JMP #025F + 0x8C180305, // 01D4 GETMET R6 R1 K5 + 0x58200053, // 01D5 LDCONST R8 K83 + 0x7C180400, // 01D6 CALL R6 2 + 0x781A005D, // 01D7 JMPF R6 #0236 + 0x8C18030D, // 01D8 GETMET R6 R1 K13 + 0x58200054, // 01D9 LDCONST R8 K84 + 0x7C180400, // 01DA CALL R6 2 + 0x4C1C0000, // 01DB LDNIL R7 + 0x1C1C0C07, // 01DC EQ R7 R6 R7 + 0x741E0001, // 01DD JMPT R7 #01E0 + 0x1C1C0D3B, // 01DE EQ R7 R6 K59 + 0x781E0000, // 01DF JMPF R7 #01E1 + 0xB006AB56, // 01E0 RAISE 1 K85 K86 + 0x581C002A, // 01E1 LDCONST R7 K42 + 0x60200008, // 01E2 GETGBL R8 G8 + 0x5C240E00, // 01E3 MOVE R9 R7 + 0x7C200200, // 01E4 CALL R8 1 + 0x8C240305, // 01E5 GETMET R9 R1 K5 + 0x002EA008, // 01E6 ADD R11 K80 R8 + 0x7C240400, // 01E7 CALL R9 2 + 0x78260048, // 01E8 JMPF R9 #0232 + 0x8C24030D, // 01E9 GETMET R9 R1 K13 + 0x002EA008, // 01EA ADD R11 K80 R8 + 0x7C240400, // 01EB CALL R9 2 + 0x8C28030D, // 01EC GETMET R10 R1 K13 + 0x00321A08, // 01ED ADD R12 K13 R8 + 0x7C280400, // 01EE CALL R10 2 + 0x8C2C030D, // 01EF GETMET R11 R1 K13 + 0x00368A08, // 01F0 ADD R13 K69 R8 + 0x7C2C0400, // 01F1 CALL R11 2 + 0x2030133B, // 01F2 NE R12 R9 K59 + 0x78320037, // 01F3 JMPF R12 #022C + 0x8830010B, // 01F4 GETMBR R12 R0 K11 + 0x88301939, // 01F5 GETMBR R12 R12 K57 + 0x8C301936, // 01F6 GETMET R12 R12 K54 + 0x5C381200, // 01F7 MOVE R14 R9 + 0x7C300400, // 01F8 CALL R12 2 + 0x4C340000, // 01F9 LDNIL R13 + 0x2034180D, // 01FA NE R13 R12 R13 + 0x7836002F, // 01FB JMPF R13 #022C + 0x60340013, // 01FC GETGBL R13 G19 + 0x7C340000, // 01FD CALL R13 0 + 0x9836A806, // 01FE SETIDX R13 K84 R6 + 0x98367409, // 01FF SETIDX R13 K58 R9 + 0x782E0000, // 0200 JMPF R11 #0202 + 0x98368C0B, // 0201 SETIDX R13 K70 R11 + 0x8C381940, // 0202 GETMET R14 R12 K64 + 0x5C401800, // 0203 MOVE R16 R12 + 0x5C441A00, // 0204 MOVE R17 R13 + 0x5C481400, // 0205 MOVE R18 R10 + 0x7C380800, // 0206 CALL R14 4 + 0x50380000, // 0207 LDBOOL R14 0 0 + 0x603C0010, // 0208 GETGBL R15 G16 + 0x8840010B, // 0209 GETMBR R16 R0 K11 + 0x88402138, // 020A GETMBR R16 R16 K56 + 0x7C3C0200, // 020B CALL R15 1 + 0xA802000B, // 020C EXBLK 0 #0219 + 0x5C401E00, // 020D MOVE R16 R15 + 0x7C400000, // 020E CALL R16 0 + 0x8C440157, // 020F GETMET R17 R0 K87 + 0x5C4C2000, // 0210 MOVE R19 R16 + 0x5C501A00, // 0211 MOVE R20 R13 + 0x7C440600, // 0212 CALL R17 3 + 0x78460001, // 0213 JMPF R17 #0216 + 0x50380200, // 0214 LDBOOL R14 1 0 + 0x70020000, // 0215 JMP #0217 + 0x7001FFF5, // 0216 JMP #020D + 0xA8040001, // 0217 EXBLK 1 1 + 0x70020002, // 0218 JMP #021C + 0x583C004A, // 0219 LDCONST R15 K74 + 0xAC3C0200, // 021A CATCH R15 1 0 + 0xB0080000, // 021B RAISE 2 R0 R0 + 0x5C3C1C00, // 021C MOVE R15 R14 + 0x743E000D, // 021D JMPT R15 #022C + 0xB83E1000, // 021E GETNGBL R15 K8 + 0x60400018, // 021F GETGBL R16 G24 + 0x58440058, // 0220 LDCONST R17 K88 + 0x5C480C00, // 0221 MOVE R18 R6 + 0x5C4C1200, // 0222 MOVE R19 R9 + 0x5C501400, // 0223 MOVE R20 R10 + 0x7C400800, // 0224 CALL R16 4 + 0x5844000A, // 0225 LDCONST R17 K10 + 0x7C3C0400, // 0226 CALL R15 2 + 0x883C010B, // 0227 GETMBR R15 R0 K11 + 0x8C3C1F52, // 0228 GETMET R15 R15 K82 + 0x5C441200, // 0229 MOVE R17 R9 + 0x5C481A00, // 022A MOVE R18 R13 + 0x7C3C0600, // 022B CALL R15 3 + 0x001C0F2F, // 022C ADD R7 R7 K47 + 0x60300008, // 022D GETGBL R12 G8 + 0x5C340E00, // 022E MOVE R13 R7 + 0x7C300200, // 022F CALL R12 1 + 0x5C201800, // 0230 MOVE R8 R12 + 0x7001FFB2, // 0231 JMP #01E5 + 0x8C240313, // 0232 GETMET R9 R1 K19 + 0x582C004E, // 0233 LDCONST R11 K78 + 0x7C240400, // 0234 CALL R9 2 + 0x70020028, // 0235 JMP #025F + 0x4C180000, // 0236 LDNIL R6 + 0x601C0010, // 0237 GETGBL R7 G16 + 0x8C200334, // 0238 GETMET R8 R1 K52 + 0x7C200200, // 0239 CALL R8 1 + 0x0420112F, // 023A SUB R8 R8 K47 + 0x40225408, // 023B CONNECT R8 K42 R8 + 0x7C1C0200, // 023C CALL R7 1 + 0xA8020013, // 023D EXBLK 0 #0252 + 0x5C200E00, // 023E MOVE R8 R7 + 0x7C200000, // 023F CALL R8 0 + 0x8C240335, // 0240 GETMET R9 R1 K53 + 0x5C2C1000, // 0241 MOVE R11 R8 + 0x7C240400, // 0242 CALL R9 2 + 0x8C280536, // 0243 GETMET R10 R2 K54 + 0x5C301200, // 0244 MOVE R12 R9 + 0x58340059, // 0245 LDCONST R13 K89 + 0x7C280600, // 0246 CALL R10 3 + 0x1C28152A, // 0247 EQ R10 R10 K42 + 0x782A0005, // 0248 JMPF R10 #024F + 0x60280009, // 0249 GETGBL R10 G9 + 0x402E1537, // 024A CONNECT R11 K10 K55 + 0x942C120B, // 024B GETIDX R11 R9 R11 + 0x7C280200, // 024C CALL R10 1 + 0x5C181400, // 024D MOVE R6 R10 + 0x70020000, // 024E JMP #0250 + 0x7001FFED, // 024F JMP #023E + 0xA8040001, // 0250 EXBLK 1 1 + 0x70020002, // 0251 JMP #0255 + 0x581C004A, // 0252 LDCONST R7 K74 + 0xAC1C0200, // 0253 CATCH R7 1 0 + 0xB0080000, // 0254 RAISE 2 R0 R0 + 0x4C1C0000, // 0255 LDNIL R7 + 0x201C0C07, // 0256 NE R7 R6 R7 + 0x781E0006, // 0257 JMPF R7 #025F + 0x881C010B, // 0258 GETMBR R7 R0 K11 + 0x8C1C0F5A, // 0259 GETMET R7 R7 K90 + 0x5C240C00, // 025A MOVE R9 R6 + 0x7C1C0400, // 025B CALL R7 2 + 0x8C1C0313, // 025C GETMET R7 R1 K19 + 0x5824004E, // 025D LDCONST R9 K78 0x7C1C0400, // 025E CALL R7 2 - 0x8C1C0313, // 025F GETMET R7 R1 K19 - 0x5824004D, // 0260 LDCONST R9 K77 - 0x7C1C0400, // 0261 CALL R7 2 - 0x78160011, // 0262 JMPF R5 #0275 - 0x8C18035A, // 0263 GETMET R6 R1 K90 - 0x5820005B, // 0264 LDCONST R8 K91 - 0x7C180400, // 0265 CALL R6 2 - 0x8C18035C, // 0266 GETMET R6 R1 K92 - 0x7C180200, // 0267 CALL R6 1 - 0x8C18035D, // 0268 GETMET R6 R1 K93 - 0x60200018, // 0269 GETGBL R8 G24 - 0x5824005E, // 026A LDCONST R9 K94 - 0x8C28035F, // 026B GETMET R10 R1 K95 - 0x5C300A00, // 026C MOVE R12 R5 - 0x7C280400, // 026D CALL R10 2 - 0x7C200400, // 026E CALL R8 2 + 0x78160011, // 025F JMPF R5 #0272 + 0x8C18035B, // 0260 GETMET R6 R1 K91 + 0x5820005C, // 0261 LDCONST R8 K92 + 0x7C180400, // 0262 CALL R6 2 + 0x8C18035D, // 0263 GETMET R6 R1 K93 + 0x7C180200, // 0264 CALL R6 1 + 0x8C18035E, // 0265 GETMET R6 R1 K94 + 0x60200018, // 0266 GETGBL R8 G24 + 0x5824005F, // 0267 LDCONST R9 K95 + 0x8C280360, // 0268 GETMET R10 R1 K96 + 0x5C300A00, // 0269 MOVE R12 R5 + 0x7C280400, // 026A CALL R10 2 + 0x7C200400, // 026B CALL R8 2 + 0x7C180400, // 026C CALL R6 2 + 0x8C180361, // 026D GETMET R6 R1 K97 + 0x88200362, // 026E GETMBR R8 R1 K98 0x7C180400, // 026F CALL R6 2 - 0x8C180360, // 0270 GETMET R6 R1 K96 - 0x88200361, // 0271 GETMBR R8 R1 K97 - 0x7C180400, // 0272 CALL R6 2 - 0x8C180362, // 0273 GETMET R6 R1 K98 - 0x7C180200, // 0274 CALL R6 1 - 0xA8040001, // 0275 EXBLK 1 1 - 0x7002001C, // 0276 JMP #0294 - 0xAC180002, // 0277 CATCH R6 0 2 - 0x70020019, // 0278 JMP #0293 - 0xB8221000, // 0279 GETNGBL R8 K8 - 0x60240018, // 027A GETGBL R9 G24 - 0x58280063, // 027B LDCONST R10 K99 - 0x5C2C0C00, // 027C MOVE R11 R6 - 0x5C300E00, // 027D MOVE R12 R7 - 0x7C240600, // 027E CALL R9 3 - 0x58280064, // 027F LDCONST R10 K100 + 0x8C180363, // 0270 GETMET R6 R1 K99 + 0x7C180200, // 0271 CALL R6 1 + 0xA8040001, // 0272 EXBLK 1 1 + 0x7002001C, // 0273 JMP #0291 + 0xAC180002, // 0274 CATCH R6 0 2 + 0x70020019, // 0275 JMP #0290 + 0xB8221000, // 0276 GETNGBL R8 K8 + 0x60240018, // 0277 GETGBL R9 G24 + 0x58280064, // 0278 LDCONST R10 K100 + 0x5C2C0C00, // 0279 MOVE R11 R6 + 0x5C300E00, // 027A MOVE R12 R7 + 0x7C240600, // 027B CALL R9 3 + 0x58280065, // 027C LDCONST R10 K101 + 0x7C200400, // 027D CALL R8 2 + 0x8C20035B, // 027E GETMET R8 R1 K91 + 0x5828005C, // 027F LDCONST R10 K92 0x7C200400, // 0280 CALL R8 2 - 0x8C20035A, // 0281 GETMET R8 R1 K90 - 0x5828005B, // 0282 LDCONST R10 K91 - 0x7C200400, // 0283 CALL R8 2 - 0x8C20035C, // 0284 GETMET R8 R1 K92 - 0x7C200200, // 0285 CALL R8 1 - 0x8C20035D, // 0286 GETMET R8 R1 K93 - 0x60280018, // 0287 GETGBL R10 G24 - 0x582C0065, // 0288 LDCONST R11 K101 - 0x5C300C00, // 0289 MOVE R12 R6 - 0x5C340E00, // 028A MOVE R13 R7 - 0x7C280600, // 028B CALL R10 3 + 0x8C20035D, // 0281 GETMET R8 R1 K93 + 0x7C200200, // 0282 CALL R8 1 + 0x8C20035E, // 0283 GETMET R8 R1 K94 + 0x60280018, // 0284 GETGBL R10 G24 + 0x582C0066, // 0285 LDCONST R11 K102 + 0x5C300C00, // 0286 MOVE R12 R6 + 0x5C340E00, // 0287 MOVE R13 R7 + 0x7C280600, // 0288 CALL R10 3 + 0x7C200400, // 0289 CALL R8 2 + 0x8C200361, // 028A GETMET R8 R1 K97 + 0x88280362, // 028B GETMBR R10 R1 K98 0x7C200400, // 028C CALL R8 2 - 0x8C200360, // 028D GETMET R8 R1 K96 - 0x88280361, // 028E GETMBR R10 R1 K97 - 0x7C200400, // 028F CALL R8 2 - 0x8C200362, // 0290 GETMET R8 R1 K98 - 0x7C200200, // 0291 CALL R8 1 - 0x70020000, // 0292 JMP #0294 - 0xB0080000, // 0293 RAISE 2 R0 R0 - 0x80000000, // 0294 RET 0 + 0x8C200363, // 028D GETMET R8 R1 K99 + 0x7C200200, // 028E CALL R8 1 + 0x70020000, // 028F JMP #0291 + 0xB0080000, // 0290 RAISE 2 R0 R0 + 0x80000000, // 0291 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Autoconf.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Autoconf.h new file mode 100644 index 000000000..74081e32f --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Autoconf.h @@ -0,0 +1,728 @@ +/* Solidification of Matter_z_Autoconf.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" +// compact class 'Matter_Autoconf' ktab size: 73, total: 90 (saved 136 bytes) +static const bvalue be_ktab_class_Matter_Autoconf[73] = { + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(k2l_num), + /* K2 */ be_nested_str_weak(plugins), + /* K3 */ be_nested_str_weak(push), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(Plugin_Root), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(log), + /* K8 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), + /* K9 */ be_const_int(2), + /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), + /* K11 */ be_nested_str_weak(root), + /* K12 */ be_nested_str_weak(), + /* K13 */ be_nested_str_weak(Plugin_Aggregator), + /* K14 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K15 */ be_nested_str_weak(aggregator), + /* K16 */ be_nested_str_weak(find), + /* K17 */ be_nested_str_weak(type), + /* K18 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), + /* K21 */ be_nested_str_weak(plugins_classes), + /* K22 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K23 */ be_nested_str_weak(_X27_X20skipping), + /* K24 */ be_nested_str_weak(conf_to_log), + /* K25 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K26 */ be_nested_str_weak(_X7C), + /* K27 */ be_nested_str_weak(stop_iteration), + /* K28 */ be_nested_str_weak(tasmota), + /* K29 */ be_nested_str_weak(publish_result), + /* K30 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), + /* K31 */ be_nested_str_weak(Matter), + /* K32 */ be_nested_str_weak(json), + /* K33 */ be_nested_str_weak(START_ENDPOINT), + /* K34 */ be_nested_str_weak(light), + /* K35 */ be_nested_str_weak(get), + /* K36 */ be_nested_str_weak(channels), + /* K37 */ be_const_int(1), + /* K38 */ be_nested_str_weak(light1), + /* K39 */ be_nested_str_weak(light2), + /* K40 */ be_nested_str_weak(light3), + /* K41 */ be_nested_str_weak(cmd), + /* K42 */ be_nested_str_weak(Status_X2013), + /* K43 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), + /* K44 */ be_nested_str_weak(contains), + /* K45 */ be_nested_str_weak(StatusSHT), + /* K46 */ be_nested_str_weak(SHT), + /* K47 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), + /* K48 */ be_nested_str_weak(Relay1), + /* K49 */ be_nested_str_weak(Relay2), + /* K50 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), + /* K51 */ be_nested_str_weak(TiltConfig), + /* K52 */ be_nested_str_weak(shutter_X2Btilt), + /* K53 */ be_nested_str_weak(shutter), + /* K54 */ be_nested_str_weak(get_power), + /* K55 */ be_nested_str_weak(relay), + /* K56 */ be_nested_str_weak(load), + /* K57 */ be_nested_str_weak(read_sensors), + /* K58 */ be_nested_str_weak(autoconf_sensors_list), + /* K59 */ be_nested_str_weak(k2l), + /* K60 */ be_nested_str_weak(Temperature), + /* K61 */ be_nested_str_weak(_X23Temperature), + /* K62 */ be_nested_str_weak(temperature), + /* K63 */ be_nested_str_weak(filter), + /* K64 */ be_nested_str_weak(Pressure), + /* K65 */ be_nested_str_weak(_X23Pressure), + /* K66 */ be_nested_str_weak(pressure), + /* K67 */ be_nested_str_weak(Illuminance), + /* K68 */ be_nested_str_weak(_X23Illuminance), + /* K69 */ be_nested_str_weak(illuminance), + /* K70 */ be_nested_str_weak(Humidity), + /* K71 */ be_nested_str_weak(_X23Humidity), + /* K72 */ be_nested_str_weak(humidity), +}; + + +extern const bclass be_class_Matter_Autoconf; + +/******************************************************************** +** Solidified function: instantiate_plugins_from_config +********************************************************************/ +be_local_closure(class_Matter_Autoconf_instantiate_plugins_from_config, /* name */ + be_nested_proto( + 18, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Autoconf, /* shared constants */ + be_str_weak(instantiate_plugins_from_config), + &be_const_str_solidified, + ( &(const binstruction[148]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x880C0100, // 0004 GETMBR R3 R0 K0 + 0x880C0702, // 0005 GETMBR R3 R3 K2 + 0x8C100703, // 0006 GETMET R4 R3 K3 + 0xB81A0800, // 0007 GETNGBL R6 K4 + 0x8C180D05, // 0008 GETMET R6 R6 K5 + 0x88200100, // 0009 GETMBR R8 R0 K0 + 0x58240006, // 000A LDCONST R9 K6 + 0x60280013, // 000B GETGBL R10 G19 + 0x7C280000, // 000C CALL R10 0 + 0x7C180800, // 000D CALL R6 4 + 0x7C100400, // 000E CALL R4 2 + 0xB8120E00, // 000F GETNGBL R4 K7 + 0x58140008, // 0010 LDCONST R5 K8 + 0x58180009, // 0011 LDCONST R6 K9 + 0x7C100400, // 0012 CALL R4 2 + 0xB8120E00, // 0013 GETNGBL R4 K7 + 0x60140018, // 0014 GETGBL R5 G24 + 0x5818000A, // 0015 LDCONST R6 K10 + 0x581C0006, // 0016 LDCONST R7 K6 + 0x5820000B, // 0017 LDCONST R8 K11 + 0x5824000C, // 0018 LDCONST R9 K12 + 0x7C140800, // 0019 CALL R5 4 + 0x58180009, // 001A LDCONST R6 K9 + 0x7C100400, // 001B CALL R4 2 + 0x8C100703, // 001C GETMET R4 R3 K3 + 0xB81A0800, // 001D GETNGBL R6 K4 + 0x8C180D0D, // 001E GETMET R6 R6 K13 + 0x88200100, // 001F GETMBR R8 R0 K0 + 0xB8260800, // 0020 GETNGBL R9 K4 + 0x8824130E, // 0021 GETMBR R9 R9 K14 + 0x60280013, // 0022 GETGBL R10 G19 + 0x7C280000, // 0023 CALL R10 0 + 0x7C180800, // 0024 CALL R6 4 + 0x7C100400, // 0025 CALL R4 2 + 0xB8120E00, // 0026 GETNGBL R4 K7 + 0x60140018, // 0027 GETGBL R5 G24 + 0x5818000A, // 0028 LDCONST R6 K10 + 0xB81E0800, // 0029 GETNGBL R7 K4 + 0x881C0F0E, // 002A GETMBR R7 R7 K14 + 0x5820000F, // 002B LDCONST R8 K15 + 0x5824000C, // 002C LDCONST R9 K12 + 0x7C140800, // 002D CALL R5 4 + 0x58180009, // 002E LDCONST R6 K9 + 0x7C100400, // 002F CALL R4 2 + 0x60100010, // 0030 GETGBL R4 G16 + 0x5C140400, // 0031 MOVE R5 R2 + 0x7C100200, // 0032 CALL R4 1 + 0xA8020056, // 0033 EXBLK 0 #008B + 0x5C140800, // 0034 MOVE R5 R4 + 0x7C140000, // 0035 CALL R5 0 + 0x1C180B06, // 0036 EQ R6 R5 K6 + 0x781A0000, // 0037 JMPF R6 #0039 + 0x7001FFFA, // 0038 JMP #0034 + 0xA802003F, // 0039 EXBLK 0 #007A + 0x60180008, // 003A GETGBL R6 G8 + 0x5C1C0A00, // 003B MOVE R7 R5 + 0x7C180200, // 003C CALL R6 1 + 0x94180206, // 003D GETIDX R6 R1 R6 + 0x8C1C0D10, // 003E GETMET R7 R6 K16 + 0x58240011, // 003F LDCONST R9 K17 + 0x7C1C0400, // 0040 CALL R7 2 + 0x4C200000, // 0041 LDNIL R8 + 0x1C200E08, // 0042 EQ R8 R7 R8 + 0x78220005, // 0043 JMPF R8 #004A + 0xB8220E00, // 0044 GETNGBL R8 K7 + 0x58240012, // 0045 LDCONST R9 K18 + 0x58280013, // 0046 LDCONST R10 K19 + 0x7C200400, // 0047 CALL R8 2 + 0xA8040001, // 0048 EXBLK 1 1 + 0x7001FFE9, // 0049 JMP #0034 + 0x1C200F0B, // 004A EQ R8 R7 K11 + 0x78220005, // 004B JMPF R8 #0052 + 0xB8220E00, // 004C GETNGBL R8 K7 + 0x58240014, // 004D LDCONST R9 K20 + 0x58280013, // 004E LDCONST R10 K19 + 0x7C200400, // 004F CALL R8 2 + 0xA8040001, // 0050 EXBLK 1 1 + 0x7001FFE1, // 0051 JMP #0034 + 0x88200100, // 0052 GETMBR R8 R0 K0 + 0x88201115, // 0053 GETMBR R8 R8 K21 + 0x8C201110, // 0054 GETMET R8 R8 K16 + 0x5C280E00, // 0055 MOVE R10 R7 + 0x7C200400, // 0056 CALL R8 2 + 0x4C240000, // 0057 LDNIL R9 + 0x1C241009, // 0058 EQ R9 R8 R9 + 0x78260009, // 0059 JMPF R9 #0064 + 0xB8260E00, // 005A GETNGBL R9 K7 + 0x60280008, // 005B GETGBL R10 G8 + 0x5C2C0E00, // 005C MOVE R11 R7 + 0x7C280200, // 005D CALL R10 1 + 0x002A2C0A, // 005E ADD R10 K22 R10 + 0x00281517, // 005F ADD R10 R10 K23 + 0x582C0009, // 0060 LDCONST R11 K9 + 0x7C240400, // 0061 CALL R9 2 + 0xA8040001, // 0062 EXBLK 1 1 + 0x7001FFCF, // 0063 JMP #0034 + 0x5C241000, // 0064 MOVE R9 R8 + 0x88280100, // 0065 GETMBR R10 R0 K0 + 0x5C2C0A00, // 0066 MOVE R11 R5 + 0x5C300C00, // 0067 MOVE R12 R6 + 0x7C240600, // 0068 CALL R9 3 + 0x8C280703, // 0069 GETMET R10 R3 K3 + 0x5C301200, // 006A MOVE R12 R9 + 0x7C280400, // 006B CALL R10 2 + 0xB82A0E00, // 006C GETNGBL R10 K7 + 0x602C0018, // 006D GETGBL R11 G24 + 0x5830000A, // 006E LDCONST R12 K10 + 0x5C340A00, // 006F MOVE R13 R5 + 0x5C380E00, // 0070 MOVE R14 R7 + 0x883C0100, // 0071 GETMBR R15 R0 K0 + 0x8C3C1F18, // 0072 GETMET R15 R15 K24 + 0x5C440C00, // 0073 MOVE R17 R6 + 0x7C3C0400, // 0074 CALL R15 2 + 0x7C2C0800, // 0075 CALL R11 4 + 0x58300009, // 0076 LDCONST R12 K9 + 0x7C280400, // 0077 CALL R10 2 + 0xA8040001, // 0078 EXBLK 1 1 + 0x7002000F, // 0079 JMP #008A + 0xAC180002, // 007A CATCH R6 0 2 + 0x7002000C, // 007B JMP #0089 + 0xB8220E00, // 007C GETNGBL R8 K7 + 0x60240008, // 007D GETGBL R9 G8 + 0x5C280C00, // 007E MOVE R10 R6 + 0x7C240200, // 007F CALL R9 1 + 0x00263209, // 0080 ADD R9 K25 R9 + 0x0024131A, // 0081 ADD R9 R9 K26 + 0x60280008, // 0082 GETGBL R10 G8 + 0x5C2C0E00, // 0083 MOVE R11 R7 + 0x7C280200, // 0084 CALL R10 1 + 0x0024120A, // 0085 ADD R9 R9 R10 + 0x58280009, // 0086 LDCONST R10 K9 + 0x7C200400, // 0087 CALL R8 2 + 0x70020000, // 0088 JMP #008A + 0xB0080000, // 0089 RAISE 2 R0 R0 + 0x7001FFA8, // 008A JMP #0034 + 0x5810001B, // 008B LDCONST R4 K27 + 0xAC100200, // 008C CATCH R4 1 0 + 0xB0080000, // 008D RAISE 2 R0 R0 + 0xB8123800, // 008E GETNGBL R4 K28 + 0x8C10091D, // 008F GETMET R4 R4 K29 + 0x5818001E, // 0090 LDCONST R6 K30 + 0x581C001F, // 0091 LDCONST R7 K31 + 0x7C100600, // 0092 CALL R4 3 + 0x80000000, // 0093 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device_map +********************************************************************/ +be_local_closure(class_Matter_Autoconf_autoconf_device_map, /* name */ + be_nested_proto( + 19, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Autoconf, /* shared constants */ + be_str_weak(autoconf_device_map), + &be_const_str_solidified, + ( &(const binstruction[262]) { /* code */ + 0xA4064000, // 0000 IMPORT R1 K32 + 0x60080013, // 0001 GETGBL R2 G19 + 0x7C080000, // 0002 CALL R2 0 + 0xB80E0800, // 0003 GETNGBL R3 K4 + 0x880C0721, // 0004 GETMBR R3 R3 K33 + 0x58100006, // 0005 LDCONST R4 K6 + 0xA4164400, // 0006 IMPORT R5 K34 + 0x8C180B23, // 0007 GETMET R6 R5 K35 + 0x58200006, // 0008 LDCONST R8 K6 + 0x7C180400, // 0009 CALL R6 2 + 0x4C1C0000, // 000A LDNIL R7 + 0x201C0C07, // 000B NE R7 R6 R7 + 0x781E0066, // 000C JMPF R7 #0074 + 0x601C000C, // 000D GETGBL R7 G12 + 0x8C200D10, // 000E GETMET R8 R6 K16 + 0x58280024, // 000F LDCONST R10 K36 + 0x582C000C, // 0010 LDCONST R11 K12 + 0x7C200600, // 0011 CALL R8 3 + 0x7C1C0200, // 0012 CALL R7 1 + 0x58100025, // 0013 LDCONST R4 K37 + 0x24200F06, // 0014 GT R8 R7 K6 + 0x7822005D, // 0015 JMPF R8 #0074 + 0x1C200F25, // 0016 EQ R8 R7 K37 + 0x7822001E, // 0017 JMPF R8 #0037 + 0x60200008, // 0018 GETGBL R8 G8 + 0x5C240600, // 0019 MOVE R9 R3 + 0x7C200200, // 001A CALL R8 1 + 0x60240013, // 001B GETGBL R9 G19 + 0x7C240000, // 001C CALL R9 0 + 0x98262326, // 001D SETIDX R9 K17 K38 + 0x98081009, // 001E SETIDX R2 R8 R9 + 0x000C0725, // 001F ADD R3 R3 K37 + 0x58200025, // 0020 LDCONST R8 K37 + 0x4C240000, // 0021 LDNIL R9 + 0x8C280B23, // 0022 GETMET R10 R5 K35 + 0x5C301000, // 0023 MOVE R12 R8 + 0x7C280400, // 0024 CALL R10 2 + 0x5C241400, // 0025 MOVE R9 R10 + 0x4C2C0000, // 0026 LDNIL R11 + 0x2028140B, // 0027 NE R10 R10 R11 + 0x782A000C, // 0028 JMPF R10 #0036 + 0x60280008, // 0029 GETGBL R10 G8 + 0x5C2C0600, // 002A MOVE R11 R3 + 0x7C280200, // 002B CALL R10 1 + 0x602C0013, // 002C GETGBL R11 G19 + 0x7C2C0000, // 002D CALL R11 0 + 0x982E2326, // 002E SETIDX R11 K17 K38 + 0x00301125, // 002F ADD R12 R8 K37 + 0x982E440C, // 0030 SETIDX R11 K34 R12 + 0x9808140B, // 0031 SETIDX R2 R10 R11 + 0x000C0725, // 0032 ADD R3 R3 K37 + 0x00100925, // 0033 ADD R4 R4 K37 + 0x00201125, // 0034 ADD R8 R8 K37 + 0x7001FFEB, // 0035 JMP #0022 + 0x7002003C, // 0036 JMP #0074 + 0x1C200F09, // 0037 EQ R8 R7 K9 + 0x78220008, // 0038 JMPF R8 #0042 + 0x60200008, // 0039 GETGBL R8 G8 + 0x5C240600, // 003A MOVE R9 R3 + 0x7C200200, // 003B CALL R8 1 + 0x60240013, // 003C GETGBL R9 G19 + 0x7C240000, // 003D CALL R9 0 + 0x98262327, // 003E SETIDX R9 K17 K39 + 0x98081009, // 003F SETIDX R2 R8 R9 + 0x000C0725, // 0040 ADD R3 R3 K37 + 0x70020031, // 0041 JMP #0074 + 0x1C200F13, // 0042 EQ R8 R7 K19 + 0x7822002B, // 0043 JMPF R8 #0070 + 0x60200008, // 0044 GETGBL R8 G8 + 0x5C240600, // 0045 MOVE R9 R3 + 0x7C200200, // 0046 CALL R8 1 + 0x60240013, // 0047 GETGBL R9 G19 + 0x7C240000, // 0048 CALL R9 0 + 0x98262328, // 0049 SETIDX R9 K17 K40 + 0x98081009, // 004A SETIDX R2 R8 R9 + 0x000C0725, // 004B ADD R3 R3 K37 + 0x8C200B23, // 004C GETMET R8 R5 K35 + 0x58280025, // 004D LDCONST R10 K37 + 0x7C200400, // 004E CALL R8 2 + 0x4C240000, // 004F LDNIL R9 + 0x20241009, // 0050 NE R9 R8 R9 + 0x7826001C, // 0051 JMPF R9 #006F + 0x6024000C, // 0052 GETGBL R9 G12 + 0x8C281110, // 0053 GETMET R10 R8 K16 + 0x58300024, // 0054 LDCONST R12 K36 + 0x5834000C, // 0055 LDCONST R13 K12 + 0x7C280600, // 0056 CALL R10 3 + 0x7C240200, // 0057 CALL R9 1 + 0x1C281325, // 0058 EQ R10 R9 K37 + 0x782A0009, // 0059 JMPF R10 #0064 + 0x60280008, // 005A GETGBL R10 G8 + 0x5C2C0600, // 005B MOVE R11 R3 + 0x7C280200, // 005C CALL R10 1 + 0x602C0013, // 005D GETGBL R11 G19 + 0x7C2C0000, // 005E CALL R11 0 + 0x982E2326, // 005F SETIDX R11 K17 K38 + 0x9808140B, // 0060 SETIDX R2 R10 R11 + 0x000C0725, // 0061 ADD R3 R3 K37 + 0x00100925, // 0062 ADD R4 R4 K37 + 0x7002000A, // 0063 JMP #006F + 0x1C281309, // 0064 EQ R10 R9 K9 + 0x782A0008, // 0065 JMPF R10 #006F + 0x60280008, // 0066 GETGBL R10 G8 + 0x5C2C0600, // 0067 MOVE R11 R3 + 0x7C280200, // 0068 CALL R10 1 + 0x602C0013, // 0069 GETGBL R11 G19 + 0x7C2C0000, // 006A CALL R11 0 + 0x982E2327, // 006B SETIDX R11 K17 K39 + 0x9808140B, // 006C SETIDX R2 R10 R11 + 0x000C0725, // 006D ADD R3 R3 K37 + 0x00100925, // 006E ADD R4 R4 K37 + 0x70020003, // 006F JMP #0074 + 0x54220003, // 0070 LDINT R8 4 + 0x1C200E08, // 0071 EQ R8 R7 R8 + 0x78220000, // 0072 JMPF R8 #0074 + 0x7001FFFF, // 0073 JMP #0074 + 0xB81E3800, // 0074 GETNGBL R7 K28 + 0x8C1C0F29, // 0075 GETMET R7 R7 K41 + 0x5824002A, // 0076 LDCONST R9 K42 + 0x50280200, // 0077 LDBOOL R10 1 0 + 0x7C1C0600, // 0078 CALL R7 3 + 0x60200012, // 0079 GETGBL R8 G18 + 0x7C200000, // 007A CALL R8 0 + 0xB8260E00, // 007B GETNGBL R9 K7 + 0x60280008, // 007C GETGBL R10 G8 + 0x5C2C0E00, // 007D MOVE R11 R7 + 0x7C280200, // 007E CALL R10 1 + 0x002A560A, // 007F ADD R10 K43 R10 + 0x582C0013, // 0080 LDCONST R11 K19 + 0x7C240400, // 0081 CALL R9 2 + 0x4C240000, // 0082 LDNIL R9 + 0x20240E09, // 0083 NE R9 R7 R9 + 0x7826004D, // 0084 JMPF R9 #00D3 + 0x8C240F2C, // 0085 GETMET R9 R7 K44 + 0x582C002D, // 0086 LDCONST R11 K45 + 0x7C240400, // 0087 CALL R9 2 + 0x78260049, // 0088 JMPF R9 #00D3 + 0x941C0F2D, // 0089 GETIDX R7 R7 K45 + 0x58240006, // 008A LDCONST R9 K6 + 0x50280200, // 008B LDBOOL R10 1 0 + 0x782A0045, // 008C JMPF R10 #00D3 + 0x60280008, // 008D GETGBL R10 G8 + 0x5C2C1200, // 008E MOVE R11 R9 + 0x7C280200, // 008F CALL R10 1 + 0x002A5C0A, // 0090 ADD R10 K46 R10 + 0x8C2C0F2C, // 0091 GETMET R11 R7 K44 + 0x5C341400, // 0092 MOVE R13 R10 + 0x7C2C0400, // 0093 CALL R11 2 + 0x742E0000, // 0094 JMPT R11 #0096 + 0x7002003C, // 0095 JMP #00D3 + 0x942C0E0A, // 0096 GETIDX R11 R7 R10 + 0xB8320E00, // 0097 GETNGBL R12 K7 + 0x60340018, // 0098 GETGBL R13 G24 + 0x5838002F, // 0099 LDCONST R14 K47 + 0x5C3C1400, // 009A MOVE R15 R10 + 0x60400008, // 009B GETGBL R16 G8 + 0x5C441600, // 009C MOVE R17 R11 + 0x7C400200, // 009D CALL R16 1 + 0x7C340600, // 009E CALL R13 3 + 0x58380013, // 009F LDCONST R14 K19 + 0x7C300400, // 00A0 CALL R12 2 + 0x8C301710, // 00A1 GETMET R12 R11 K16 + 0x58380030, // 00A2 LDCONST R14 K48 + 0x543DFFFE, // 00A3 LDINT R15 -1 + 0x7C300600, // 00A4 CALL R12 3 + 0x8C341710, // 00A5 GETMET R13 R11 K16 + 0x583C0031, // 00A6 LDCONST R15 K49 + 0x5441FFFE, // 00A7 LDINT R16 -1 + 0x7C340600, // 00A8 CALL R13 3 + 0x24381906, // 00A9 GT R14 R12 K6 + 0x783A0002, // 00AA JMPF R14 #00AE + 0x8C381103, // 00AB GETMET R14 R8 K3 + 0x04401925, // 00AC SUB R16 R12 K37 + 0x7C380400, // 00AD CALL R14 2 + 0x24381B06, // 00AE GT R14 R13 K6 + 0x783A0002, // 00AF JMPF R14 #00B3 + 0x8C381103, // 00B0 GETMET R14 R8 K3 + 0x04401B25, // 00B1 SUB R16 R13 K37 + 0x7C380400, // 00B2 CALL R14 2 + 0xB83A0E00, // 00B3 GETNGBL R14 K7 + 0x603C0018, // 00B4 GETGBL R15 G24 + 0x58400032, // 00B5 LDCONST R16 K50 + 0x5C441800, // 00B6 MOVE R17 R12 + 0x5C481A00, // 00B7 MOVE R18 R13 + 0x7C3C0600, // 00B8 CALL R15 3 + 0x58400013, // 00B9 LDCONST R16 K19 + 0x7C380400, // 00BA CALL R14 2 + 0x8C381710, // 00BB GETMET R14 R11 K16 + 0x58400033, // 00BC LDCONST R16 K51 + 0x7C380400, // 00BD CALL R14 2 + 0x783A0002, // 00BE JMPF R14 #00C2 + 0x943C1D09, // 00BF GETIDX R15 R14 K9 + 0x243C1F06, // 00C0 GT R15 R15 K6 + 0x743E0000, // 00C1 JMPT R15 #00C3 + 0x503C0001, // 00C2 LDBOOL R15 0 1 + 0x503C0200, // 00C3 LDBOOL R15 1 0 + 0x60400008, // 00C4 GETGBL R16 G8 + 0x5C440600, // 00C5 MOVE R17 R3 + 0x7C400200, // 00C6 CALL R16 1 + 0x60440013, // 00C7 GETGBL R17 G19 + 0x7C440000, // 00C8 CALL R17 0 + 0x783E0001, // 00C9 JMPF R15 #00CC + 0x58480034, // 00CA LDCONST R18 K52 + 0x70020000, // 00CB JMP #00CD + 0x58480035, // 00CC LDCONST R18 K53 + 0x98462212, // 00CD SETIDX R17 K17 R18 + 0x98466A09, // 00CE SETIDX R17 K53 R9 + 0x98082011, // 00CF SETIDX R2 R16 R17 + 0x000C0725, // 00D0 ADD R3 R3 K37 + 0x00241325, // 00D1 ADD R9 R9 K37 + 0x7001FFB7, // 00D2 JMP #008B + 0x6024000C, // 00D3 GETGBL R9 G12 + 0xB82A3800, // 00D4 GETNGBL R10 K28 + 0x8C281536, // 00D5 GETMET R10 R10 K54 + 0x7C280200, // 00D6 CALL R10 1 + 0x7C240200, // 00D7 CALL R9 1 + 0x58280006, // 00D8 LDCONST R10 K6 + 0x04241204, // 00D9 SUB R9 R9 R4 + 0x142C1409, // 00DA LT R11 R10 R9 + 0x782E0011, // 00DB JMPF R11 #00EE + 0x8C2C1110, // 00DC GETMET R11 R8 K16 + 0x5C341400, // 00DD MOVE R13 R10 + 0x7C2C0400, // 00DE CALL R11 2 + 0x4C300000, // 00DF LDNIL R12 + 0x1C2C160C, // 00E0 EQ R11 R11 R12 + 0x782E0009, // 00E1 JMPF R11 #00EC + 0x602C0008, // 00E2 GETGBL R11 G8 + 0x5C300600, // 00E3 MOVE R12 R3 + 0x7C2C0200, // 00E4 CALL R11 1 + 0x60300013, // 00E5 GETGBL R12 G19 + 0x7C300000, // 00E6 CALL R12 0 + 0x98322337, // 00E7 SETIDX R12 K17 K55 + 0x00341525, // 00E8 ADD R13 R10 K37 + 0x98326E0D, // 00E9 SETIDX R12 K55 R13 + 0x9808160C, // 00EA SETIDX R2 R11 R12 + 0x000C0725, // 00EB ADD R3 R3 K37 + 0x00281525, // 00EC ADD R10 R10 K37 + 0x7001FFEB, // 00ED JMP #00DA + 0x8C2C0338, // 00EE GETMET R11 R1 K56 + 0xB8363800, // 00EF GETNGBL R13 K28 + 0x8C341B39, // 00F0 GETMET R13 R13 K57 + 0x7C340200, // 00F1 CALL R13 1 + 0x7C2C0400, // 00F2 CALL R11 2 + 0x8C30013A, // 00F3 GETMET R12 R0 K58 + 0x5C381600, // 00F4 MOVE R14 R11 + 0x7C300400, // 00F5 CALL R12 2 + 0x60340010, // 00F6 GETGBL R13 G16 + 0x5C381800, // 00F7 MOVE R14 R12 + 0x7C340200, // 00F8 CALL R13 1 + 0xA8020007, // 00F9 EXBLK 0 #0102 + 0x5C381A00, // 00FA MOVE R14 R13 + 0x7C380000, // 00FB CALL R14 0 + 0x603C0008, // 00FC GETGBL R15 G8 + 0x5C400600, // 00FD MOVE R16 R3 + 0x7C3C0200, // 00FE CALL R15 1 + 0x98081E0E, // 00FF SETIDX R2 R15 R14 + 0x000C0725, // 0100 ADD R3 R3 K37 + 0x7001FFF7, // 0101 JMP #00FA + 0x5834001B, // 0102 LDCONST R13 K27 + 0xAC340200, // 0103 CATCH R13 1 0 + 0xB0080000, // 0104 RAISE 2 R0 R0 + 0x80040400, // 0105 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_Matter_Autoconf_init, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Autoconf, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_sensors_list +********************************************************************/ +be_local_closure(class_Matter_Autoconf_autoconf_sensors_list, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Autoconf, /* shared constants */ + be_str_weak(autoconf_sensors_list), + &be_const_str_solidified, + ( &(const binstruction[121]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808053B, // 0001 GETMBR R2 R2 K59 + 0x600C0012, // 0002 GETGBL R3 G18 + 0x7C0C0000, // 0003 CALL R3 0 + 0x60100010, // 0004 GETGBL R4 G16 + 0x5C140400, // 0005 MOVE R5 R2 + 0x5C180200, // 0006 MOVE R6 R1 + 0x7C140200, // 0007 CALL R5 1 + 0x7C100200, // 0008 CALL R4 1 + 0xA8020013, // 0009 EXBLK 0 #001E + 0x5C140800, // 000A MOVE R5 R4 + 0x7C140000, // 000B CALL R5 0 + 0x94180205, // 000C GETIDX R6 R1 R5 + 0x601C000F, // 000D GETGBL R7 G15 + 0x5C200C00, // 000E MOVE R8 R6 + 0x60240013, // 000F GETGBL R9 G19 + 0x7C1C0400, // 0010 CALL R7 2 + 0x781E000A, // 0011 JMPF R7 #001D + 0x8C1C0D2C, // 0012 GETMET R7 R6 K44 + 0x5824003C, // 0013 LDCONST R9 K60 + 0x7C1C0400, // 0014 CALL R7 2 + 0x781E0006, // 0015 JMPF R7 #001D + 0x001C0B3D, // 0016 ADD R7 R5 K61 + 0x8C200703, // 0017 GETMET R8 R3 K3 + 0x60280013, // 0018 GETGBL R10 G19 + 0x7C280000, // 0019 CALL R10 0 + 0x982A233E, // 001A SETIDX R10 K17 K62 + 0x982A7E07, // 001B SETIDX R10 K63 R7 + 0x7C200400, // 001C CALL R8 2 + 0x7001FFEB, // 001D JMP #000A + 0x5810001B, // 001E LDCONST R4 K27 + 0xAC100200, // 001F CATCH R4 1 0 + 0xB0080000, // 0020 RAISE 2 R0 R0 + 0x60100010, // 0021 GETGBL R4 G16 + 0x5C140400, // 0022 MOVE R5 R2 + 0x5C180200, // 0023 MOVE R6 R1 + 0x7C140200, // 0024 CALL R5 1 + 0x7C100200, // 0025 CALL R4 1 + 0xA8020013, // 0026 EXBLK 0 #003B + 0x5C140800, // 0027 MOVE R5 R4 + 0x7C140000, // 0028 CALL R5 0 + 0x94180205, // 0029 GETIDX R6 R1 R5 + 0x601C000F, // 002A GETGBL R7 G15 + 0x5C200C00, // 002B MOVE R8 R6 + 0x60240013, // 002C GETGBL R9 G19 + 0x7C1C0400, // 002D CALL R7 2 + 0x781E000A, // 002E JMPF R7 #003A + 0x8C1C0D2C, // 002F GETMET R7 R6 K44 + 0x58240040, // 0030 LDCONST R9 K64 + 0x7C1C0400, // 0031 CALL R7 2 + 0x781E0006, // 0032 JMPF R7 #003A + 0x001C0B41, // 0033 ADD R7 R5 K65 + 0x8C200703, // 0034 GETMET R8 R3 K3 + 0x60280013, // 0035 GETGBL R10 G19 + 0x7C280000, // 0036 CALL R10 0 + 0x982A2342, // 0037 SETIDX R10 K17 K66 + 0x982A7E07, // 0038 SETIDX R10 K63 R7 + 0x7C200400, // 0039 CALL R8 2 + 0x7001FFEB, // 003A JMP #0027 + 0x5810001B, // 003B LDCONST R4 K27 + 0xAC100200, // 003C CATCH R4 1 0 + 0xB0080000, // 003D RAISE 2 R0 R0 + 0x60100010, // 003E GETGBL R4 G16 + 0x5C140400, // 003F MOVE R5 R2 + 0x5C180200, // 0040 MOVE R6 R1 + 0x7C140200, // 0041 CALL R5 1 + 0x7C100200, // 0042 CALL R4 1 + 0xA8020013, // 0043 EXBLK 0 #0058 + 0x5C140800, // 0044 MOVE R5 R4 + 0x7C140000, // 0045 CALL R5 0 + 0x94180205, // 0046 GETIDX R6 R1 R5 + 0x601C000F, // 0047 GETGBL R7 G15 + 0x5C200C00, // 0048 MOVE R8 R6 + 0x60240013, // 0049 GETGBL R9 G19 + 0x7C1C0400, // 004A CALL R7 2 + 0x781E000A, // 004B JMPF R7 #0057 + 0x8C1C0D2C, // 004C GETMET R7 R6 K44 + 0x58240043, // 004D LDCONST R9 K67 + 0x7C1C0400, // 004E CALL R7 2 + 0x781E0006, // 004F JMPF R7 #0057 + 0x001C0B44, // 0050 ADD R7 R5 K68 + 0x8C200703, // 0051 GETMET R8 R3 K3 + 0x60280013, // 0052 GETGBL R10 G19 + 0x7C280000, // 0053 CALL R10 0 + 0x982A2345, // 0054 SETIDX R10 K17 K69 + 0x982A7E07, // 0055 SETIDX R10 K63 R7 + 0x7C200400, // 0056 CALL R8 2 + 0x7001FFEB, // 0057 JMP #0044 + 0x5810001B, // 0058 LDCONST R4 K27 + 0xAC100200, // 0059 CATCH R4 1 0 + 0xB0080000, // 005A RAISE 2 R0 R0 + 0x60100010, // 005B GETGBL R4 G16 + 0x5C140400, // 005C MOVE R5 R2 + 0x5C180200, // 005D MOVE R6 R1 + 0x7C140200, // 005E CALL R5 1 + 0x7C100200, // 005F CALL R4 1 + 0xA8020013, // 0060 EXBLK 0 #0075 + 0x5C140800, // 0061 MOVE R5 R4 + 0x7C140000, // 0062 CALL R5 0 + 0x94180205, // 0063 GETIDX R6 R1 R5 + 0x601C000F, // 0064 GETGBL R7 G15 + 0x5C200C00, // 0065 MOVE R8 R6 + 0x60240013, // 0066 GETGBL R9 G19 + 0x7C1C0400, // 0067 CALL R7 2 + 0x781E000A, // 0068 JMPF R7 #0074 + 0x8C1C0D2C, // 0069 GETMET R7 R6 K44 + 0x58240046, // 006A LDCONST R9 K70 + 0x7C1C0400, // 006B CALL R7 2 + 0x781E0006, // 006C JMPF R7 #0074 + 0x001C0B47, // 006D ADD R7 R5 K71 + 0x8C200703, // 006E GETMET R8 R3 K3 + 0x60280013, // 006F GETGBL R10 G19 + 0x7C280000, // 0070 CALL R10 0 + 0x982A2348, // 0071 SETIDX R10 K17 K72 + 0x982A7E07, // 0072 SETIDX R10 K63 R7 + 0x7C200400, // 0073 CALL R8 2 + 0x7001FFEB, // 0074 JMP #0061 + 0x5810001B, // 0075 LDCONST R4 K27 + 0xAC100200, // 0076 CATCH R4 1 0 + 0xB0080000, // 0077 RAISE 2 R0 R0 + 0x80040600, // 0078 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Matter_Autoconf +********************************************************************/ +be_local_class(Matter_Autoconf, + 1, + NULL, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(instantiate_plugins_from_config, 3), be_const_closure(class_Matter_Autoconf_instantiate_plugins_from_config_closure) }, + { be_const_key_weak(device, -1), be_const_var(0) }, + { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Autoconf_autoconf_device_map_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Autoconf_init_closure) }, + { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Autoconf_autoconf_sensors_list_closure) }, + })), + be_str_weak(Matter_Autoconf) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h index 646169710..7c5ea0da7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h @@ -3,15 +3,15 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Commissioning' ktab size: 133, total: 275 (saved 1136 bytes) -static const bvalue be_ktab_class_Matter_Commissioning[133] = { +// compact class 'Matter_Commissioning' ktab size: 132, total: 274 (saved 1136 bytes) +static const bvalue be_ktab_class_Matter_Commissioning[132] = { /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(root_discriminator), - /* K2 */ be_nested_str_weak(root_passcode), - /* K3 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(Verhoeff), - /* K6 */ be_nested_str_weak(checksum), + /* K1 */ be_nested_str_weak(sessions), + /* K2 */ be_nested_str_weak(active_fabrics), + /* K3 */ be_nested_str_weak(get_device_id), + /* K4 */ be_nested_str_weak(get_fabric_id), + /* K5 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K6 */ be_nested_str_weak(stop_iteration), /* K7 */ be_nested_str_weak(is_root_commissioning_open), /* K8 */ be_nested_str_weak(tasmota), /* K9 */ be_nested_str_weak(publish_result), @@ -25,130 +25,129 @@ static const bvalue be_ktab_class_Matter_Commissioning[133] = { /* K17 */ be_nested_str_weak(commissioning_w0), /* K18 */ be_nested_str_weak(commissioning_L), /* K19 */ be_nested_str_weak(commissioning_admin_fabric), - /* K20 */ be_nested_str_weak(get_fabric), - /* K21 */ be_nested_str_weak(get_fabric_id), - /* K22 */ be_nested_str_weak(copy), - /* K23 */ be_nested_str_weak(reverse), - /* K24 */ be_nested_str_weak(tohex), - /* K25 */ be_nested_str_weak(get_admin_vendor_name), - /* K26 */ be_nested_str_weak(log), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), - /* K28 */ be_const_int(2), - /* K29 */ be_nested_str_weak(stop_basic_commissioning), - /* K30 */ be_nested_str_weak(resize), - /* K31 */ be_nested_str_weak(setbits), - /* K32 */ be_const_int(3), - /* K33 */ be_nested_str_weak(VENDOR_ID), - /* K34 */ be_nested_str_weak(PRODUCT_ID), - /* K35 */ be_const_int(134217727), - /* K36 */ be_nested_str_weak(MT_X3A), - /* K37 */ be_nested_str_weak(Base38), - /* K38 */ be_nested_str_weak(encode), - /* K39 */ be_nested_str_weak(crypto), - /* K40 */ be_nested_str_weak(mdns), - /* K41 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K42 */ be_nested_str_weak(sessions), - /* K43 */ be_nested_str_weak(active_fabrics), - /* K44 */ be_nested_str_weak(get_device_id), - /* K45 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K46 */ be_nested_str_weak(stop_iteration), - /* K47 */ be_nested_str_weak(get_fabric_compressed), - /* K48 */ be_nested_str_weak(_X2D), - /* K49 */ be_nested_str_weak(eth), - /* K50 */ be_nested_str_weak(find), - /* K51 */ be_nested_str_weak(up), - /* K52 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), - /* K53 */ be_nested_str_weak(remove_service), - /* K54 */ be_nested_str_weak(_matter), - /* K55 */ be_nested_str_weak(_tcp), - /* K56 */ be_nested_str_weak(hostname_eth), - /* K57 */ be_nested_str_weak(wifi), - /* K58 */ be_nested_str_weak(hostname_wifi), - /* K59 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K60 */ be_nested_str_weak(_X7C), - /* K61 */ be_nested_str_weak(millis), - /* K62 */ be_nested_str_weak(mdns_announce_PASE), - /* K63 */ be_nested_str_weak(add_rule), - /* K64 */ be_nested_str_weak(Wifi_X23Connected), - /* K65 */ be_nested_str_weak(Eth_X23Connected), - /* K66 */ be_nested_str_weak(set_timer), - /* K67 */ be_const_int(0), - /* K68 */ be_nested_str_weak(string), - /* K69 */ be_nested_str_weak(start), - /* K70 */ be_nested_str_weak(replace), - /* K71 */ be_nested_str_weak(mac), - /* K72 */ be_nested_str_weak(_X3A), - /* K73 */ be_nested_str_weak(), - /* K74 */ be_nested_str_weak(ipv4only), - /* K75 */ be_nested_str_weak(contains), - /* K76 */ be_nested_str_weak(ip6local), - /* K77 */ be_nested_str_weak(add_hostname), - /* K78 */ be_nested_str_weak(ip), - /* K79 */ be_nested_str_weak(ip6), - /* K80 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), - /* K81 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), - /* K82 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), - /* K83 */ be_nested_str_weak(random), - /* K84 */ be_nested_str_weak(get), - /* K85 */ be_const_int(99999998), - /* K86 */ be_nested_str_weak(PASSCODE_INVALID), - /* K87 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), - /* K88 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K89 */ be_nested_str_weak(add_service), - /* K90 */ be_nested_str_weak(_I), - /* K91 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), - /* K92 */ be_nested_str_weak(add_subtype), - /* K93 */ be_nested_str_weak(time_reached), - /* K94 */ be_nested_str_weak(VP), - /* K95 */ be_nested_str_weak(_X25s_X2B_X25s), - /* K96 */ be_nested_str_weak(D), - /* K97 */ be_nested_str_weak(CM), - /* K98 */ be_const_int(1), - /* K99 */ be_nested_str_weak(T), - /* K100 */ be_nested_str_weak(SII), - /* K101 */ be_nested_str_weak(SAI), - /* K102 */ be_nested_str_weak(commissioning_instance_wifi), - /* K103 */ be_nested_str_weak(commissioning_instance_eth), - /* K104 */ be_nested_str_weak(_matterc), - /* K105 */ be_nested_str_weak(_udp), - /* K106 */ be_nested_str_weak(mdns_pase_eth), - /* K107 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K108 */ be_nested_str_weak(_L), - /* K109 */ be_nested_str_weak(_S), - /* K110 */ be_nested_str_weak(_V), - /* K111 */ be_nested_str_weak(_CM1), - /* K112 */ be_nested_str_weak(mdns_pase_wifi), - /* K113 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), - /* K114 */ be_nested_str_weak(count_active_fabrics), - /* K115 */ be_nested_str_weak(start_root_basic_commissioning), - /* K116 */ be_nested_str_weak(_mdns_announce_hostname), - /* K117 */ be_nested_str_weak(matter_mdns_host), - /* K118 */ be_nested_str_weak(PASE_TIMEOUT), - /* K119 */ be_nested_str_weak(compute_manual_pairing_code), - /* K120 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), - /* K121 */ be_nested_str_weak(compute_qrcode_content), - /* K122 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), - /* K123 */ be_nested_str_weak(add), - /* K124 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), - /* K125 */ be_nested_str_weak(derive), - /* K126 */ be_nested_str_weak(PBKDF_ITERATIONS), - /* K127 */ be_nested_str_weak(EC_P256), - /* K128 */ be_nested_str_weak(mod), - /* K129 */ be_nested_str_weak(public_key), - /* K130 */ be_nested_str_weak(start_basic_commissioning), - /* K131 */ be_nested_str_weak(_init_basic_commissioning), - /* K132 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K20 */ be_nested_str_weak(count_active_fabrics), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str_weak(start_root_basic_commissioning), + /* K23 */ be_nested_str_weak(resize), + /* K24 */ be_nested_str_weak(setbits), + /* K25 */ be_const_int(3), + /* K26 */ be_nested_str_weak(VENDOR_ID), + /* K27 */ be_nested_str_weak(PRODUCT_ID), + /* K28 */ be_nested_str_weak(root_discriminator), + /* K29 */ be_nested_str_weak(root_passcode), + /* K30 */ be_const_int(134217727), + /* K31 */ be_nested_str_weak(MT_X3A), + /* K32 */ be_nested_str_weak(matter), + /* K33 */ be_nested_str_weak(Base38), + /* K34 */ be_nested_str_weak(encode), + /* K35 */ be_nested_str_weak(mdns), + /* K36 */ be_nested_str_weak(mdns_pase_eth), + /* K37 */ be_nested_str_weak(log), + /* K38 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K39 */ be_nested_str_weak(_matterc), + /* K40 */ be_nested_str_weak(_udp), + /* K41 */ be_nested_str_weak(commissioning_instance_eth), + /* K42 */ be_nested_str_weak(hostname_eth), + /* K43 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27), + /* K44 */ be_nested_str_weak(eth), + /* K45 */ be_nested_str_weak(remove_service), + /* K46 */ be_nested_str_weak(mdns_pase_wifi), + /* K47 */ be_nested_str_weak(commissioning_instance_wifi), + /* K48 */ be_nested_str_weak(hostname_wifi), + /* K49 */ be_nested_str_weak(wifi), + /* K50 */ be_nested_str_weak(MTR_X3A_X20Exception), + /* K51 */ be_nested_str_weak(_X7C), + /* K52 */ be_const_int(2), + /* K53 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K54 */ be_nested_str_weak(Verhoeff), + /* K55 */ be_nested_str_weak(checksum), + /* K56 */ be_nested_str_weak(copy), + /* K57 */ be_nested_str_weak(reverse), + /* K58 */ be_nested_str_weak(get_fabric_compressed), + /* K59 */ be_nested_str_weak(tohex), + /* K60 */ be_nested_str_weak(_X2D), + /* K61 */ be_nested_str_weak(find), + /* K62 */ be_nested_str_weak(up), + /* K63 */ be_nested_str_weak(_matter), + /* K64 */ be_nested_str_weak(_tcp), + /* K65 */ be_nested_str_weak(set_timer), + /* K66 */ be_nested_str_weak(crypto), + /* K67 */ be_nested_str_weak(stop_basic_commissioning), + /* K68 */ be_nested_str_weak(mdns_announce_op_discovery), + /* K69 */ be_nested_str_weak(string), + /* K70 */ be_nested_str_weak(start), + /* K71 */ be_nested_str_weak(replace), + /* K72 */ be_nested_str_weak(mac), + /* K73 */ be_nested_str_weak(_X3A), + /* K74 */ be_nested_str_weak(), + /* K75 */ be_nested_str_weak(ipv4only), + /* K76 */ be_nested_str_weak(contains), + /* K77 */ be_nested_str_weak(ip6local), + /* K78 */ be_nested_str_weak(add_hostname), + /* K79 */ be_nested_str_weak(ip), + /* K80 */ be_nested_str_weak(ip6), + /* K81 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29), + /* K82 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27), + /* K83 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics), + /* K84 */ be_nested_str_weak(PASE_TIMEOUT), + /* K85 */ be_nested_str_weak(compute_manual_pairing_code), + /* K86 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s), + /* K87 */ be_nested_str_weak(compute_qrcode_content), + /* K88 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D), + /* K89 */ be_nested_str_weak(random), + /* K90 */ be_nested_str_weak(add), + /* K91 */ be_nested_str_weak(PBKDF2_HMAC_SHA256), + /* K92 */ be_nested_str_weak(derive), + /* K93 */ be_nested_str_weak(PBKDF_ITERATIONS), + /* K94 */ be_nested_str_weak(EC_P256), + /* K95 */ be_nested_str_weak(mod), + /* K96 */ be_nested_str_weak(public_key), + /* K97 */ be_nested_str_weak(start_basic_commissioning), + /* K98 */ be_nested_str_weak(get), + /* K99 */ be_const_int(99999998), + /* K100 */ be_nested_str_weak(PASSCODE_INVALID), + /* K101 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20), + /* K102 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K103 */ be_nested_str_weak(add_service), + /* K104 */ be_nested_str_weak(_I), + /* K105 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20), + /* K106 */ be_nested_str_weak(add_subtype), + /* K107 */ be_nested_str_weak(time_reached), + /* K108 */ be_nested_str_weak(VP), + /* K109 */ be_nested_str_weak(_X25s_X2B_X25s), + /* K110 */ be_nested_str_weak(D), + /* K111 */ be_nested_str_weak(CM), + /* K112 */ be_const_int(1), + /* K113 */ be_nested_str_weak(T), + /* K114 */ be_nested_str_weak(SII), + /* K115 */ be_nested_str_weak(SAI), + /* K116 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K117 */ be_nested_str_weak(_L), + /* K118 */ be_nested_str_weak(_S), + /* K119 */ be_nested_str_weak(_V), + /* K120 */ be_nested_str_weak(_CM1), + /* K121 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60), + /* K122 */ be_nested_str_weak(millis), + /* K123 */ be_nested_str_weak(mdns_announce_PASE), + /* K124 */ be_nested_str_weak(add_rule), + /* K125 */ be_nested_str_weak(Wifi_X23Connected), + /* K126 */ be_nested_str_weak(Eth_X23Connected), + /* K127 */ be_nested_str_weak(_mdns_announce_hostname), + /* K128 */ be_nested_str_weak(matter_mdns_host), + /* K129 */ be_nested_str_weak(get_fabric), + /* K130 */ be_nested_str_weak(get_admin_vendor_name), + /* K131 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D), }; extern const bclass be_class_Matter_Commissioning; /******************************************************************** -** Solidified function: compute_manual_pairing_code +** Solidified function: mdns_remove_op_discovery_all_fabrics ********************************************************************/ -be_local_closure(class_Matter_Commissioning_compute_manual_pairing_code, /* name */ +be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics, /* name */ be_nested_proto( - 9, /* nstack */ + 6, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -157,43 +156,32 @@ be_local_closure(class_Matter_Commissioning_compute_manual_pairing_code, /* na NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(compute_manual_pairing_code), + be_str_weak(mdns_remove_op_discovery_all_fabrics), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x540A0FFE, // 0002 LDINT R2 4095 - 0x2C040202, // 0003 AND R1 R1 R2 - 0x540A0009, // 0004 LDINT R2 10 - 0x3C040202, // 0005 SHR R1 R1 R2 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0x540E02FF, // 0008 LDINT R3 768 - 0x2C080403, // 0009 AND R2 R2 R3 - 0x540E0005, // 000A LDINT R3 6 - 0x38080403, // 000B SHL R2 R2 R3 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x880C0702, // 000D GETMBR R3 R3 K2 - 0x54123FFE, // 000E LDINT R4 16383 - 0x2C0C0604, // 000F AND R3 R3 R4 - 0x30080403, // 0010 OR R2 R2 R3 - 0x880C0100, // 0011 GETMBR R3 R0 K0 - 0x880C0702, // 0012 GETMBR R3 R3 K2 - 0x5412000D, // 0013 LDINT R4 14 - 0x3C0C0604, // 0014 SHR R3 R3 R4 - 0x60100018, // 0015 GETGBL R4 G24 - 0x58140003, // 0016 LDCONST R5 K3 - 0x5C180200, // 0017 MOVE R6 R1 - 0x5C1C0400, // 0018 MOVE R7 R2 - 0x5C200600, // 0019 MOVE R8 R3 - 0x7C100800, // 001A CALL R4 4 - 0xB8160800, // 001B GETNGBL R5 K4 - 0x88140B05, // 001C GETMBR R5 R5 K5 - 0x8C140B06, // 001D GETMET R5 R5 K6 - 0x5C1C0800, // 001E MOVE R7 R4 - 0x7C140400, // 001F CALL R5 2 - 0x00100805, // 0020 ADD R4 R4 R5 - 0x80040800, // 0021 RET 1 R4 + ( &(const binstruction[23]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080501, // 0002 GETMBR R2 R2 K1 + 0x8C080502, // 0003 GETMET R2 R2 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x7C040200, // 0005 CALL R1 1 + 0xA802000B, // 0006 EXBLK 0 #0013 + 0x5C080200, // 0007 MOVE R2 R1 + 0x7C080000, // 0008 CALL R2 0 + 0x8C0C0503, // 0009 GETMET R3 R2 K3 + 0x7C0C0200, // 000A CALL R3 1 + 0x780E0005, // 000B JMPF R3 #0012 + 0x8C0C0504, // 000C GETMET R3 R2 K4 + 0x7C0C0200, // 000D CALL R3 1 + 0x780E0002, // 000E JMPF R3 #0012 + 0x8C0C0105, // 000F GETMET R3 R0 K5 + 0x5C140400, // 0010 MOVE R5 R2 + 0x7C0C0400, // 0011 CALL R3 2 + 0x7001FFF3, // 0012 JMP #0007 + 0x58040006, // 0013 LDCONST R1 K6 + 0xAC040200, // 0014 CATCH R1 1 0 + 0xB0080000, // 0015 RAISE 2 R0 R0 + 0x80000000, // 0016 RET 0 }) ) ); @@ -243,12 +231,12 @@ be_local_closure(class_Matter_Commissioning_stop_basic_commissioning, /* name /******************************************************************** -** Solidified function: start_commissioning_complete +** Solidified function: init_basic_commissioning ********************************************************************/ -be_local_closure(class_Matter_Commissioning_start_commissioning_complete, /* name */ +be_local_closure(class_Matter_Commissioning_init_basic_commissioning, /* name */ be_nested_proto( - 10, /* nstack */ - 2, /* argc */ + 3, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -256,32 +244,18 @@ be_local_closure(class_Matter_Commissioning_start_commissioning_complete, /* n NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(start_commissioning_complete), + be_str_weak(init_basic_commissioning), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C080314, // 0000 GETMET R2 R1 K20 - 0x7C080200, // 0001 CALL R2 1 - 0x8C0C0515, // 0002 GETMET R3 R2 K21 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0716, // 0004 GETMET R3 R3 K22 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0717, // 0006 GETMET R3 R3 K23 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0718, // 0008 GETMET R3 R3 K24 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C100519, // 000A GETMET R4 R2 K25 - 0x7C100200, // 000B CALL R4 1 - 0xB8163400, // 000C GETNGBL R5 K26 - 0x60180018, // 000D GETGBL R6 G24 - 0x581C001B, // 000E LDCONST R7 K27 - 0x5C200600, // 000F MOVE R8 R3 - 0x5C240800, // 0010 MOVE R9 R4 - 0x7C180600, // 0011 CALL R6 3 - 0x581C001C, // 0012 LDCONST R7 K28 - 0x7C140400, // 0013 CALL R5 2 - 0x8C14011D, // 0014 GETMET R5 R0 K29 - 0x7C140200, // 0015 CALL R5 1 - 0x80000000, // 0016 RET 0 + ( &(const binstruction[ 9]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8C040314, // 0002 GETMET R1 R1 K20 + 0x7C040200, // 0003 CALL R1 1 + 0x1C040315, // 0004 EQ R1 R1 K21 + 0x78060001, // 0005 JMPF R1 #0008 + 0x8C040116, // 0006 GETMET R1 R0 K22 + 0x7C040200, // 0007 CALL R1 1 + 0x80000000, // 0008 RET 0 }) ) ); @@ -307,47 +281,47 @@ be_local_closure(class_Matter_Commissioning_compute_qrcode_content, /* name */ ( &(const binstruction[44]) { /* code */ 0x60040015, // 0000 GETGBL R1 G21 0x7C040000, // 0001 CALL R1 0 - 0x8C04031E, // 0002 GETMET R1 R1 K30 + 0x8C040317, // 0002 GETMET R1 R1 K23 0x540E000A, // 0003 LDINT R3 11 0x7C040400, // 0004 CALL R1 2 - 0x8C08031F, // 0005 GETMET R2 R1 K31 - 0x58100020, // 0006 LDCONST R4 K32 + 0x8C080318, // 0005 GETMET R2 R1 K24 + 0x58100019, // 0006 LDCONST R4 K25 0x5416000F, // 0007 LDINT R5 16 0x88180100, // 0008 GETMBR R6 R0 K0 - 0x88180D21, // 0009 GETMBR R6 R6 K33 + 0x88180D1A, // 0009 GETMBR R6 R6 K26 0x7C080800, // 000A CALL R2 4 - 0x8C08031F, // 000B GETMET R2 R1 K31 + 0x8C080318, // 000B GETMET R2 R1 K24 0x54120012, // 000C LDINT R4 19 0x5416000F, // 000D LDINT R5 16 0x88180100, // 000E GETMBR R6 R0 K0 - 0x88180D22, // 000F GETMBR R6 R6 K34 + 0x88180D1B, // 000F GETMBR R6 R6 K27 0x7C080800, // 0010 CALL R2 4 - 0x8C08031F, // 0011 GETMET R2 R1 K31 + 0x8C080318, // 0011 GETMET R2 R1 K24 0x54120024, // 0012 LDINT R4 37 0x54160007, // 0013 LDINT R5 8 0x541A0003, // 0014 LDINT R6 4 0x7C080800, // 0015 CALL R2 4 - 0x8C08031F, // 0016 GETMET R2 R1 K31 + 0x8C080318, // 0016 GETMET R2 R1 K24 0x5412002C, // 0017 LDINT R4 45 0x5416000B, // 0018 LDINT R5 12 0x88180100, // 0019 GETMBR R6 R0 K0 - 0x88180D01, // 001A GETMBR R6 R6 K1 + 0x88180D1C, // 001A GETMBR R6 R6 K28 0x541E0FFE, // 001B LDINT R7 4095 0x2C180C07, // 001C AND R6 R6 R7 0x7C080800, // 001D CALL R2 4 - 0x8C08031F, // 001E GETMET R2 R1 K31 + 0x8C080318, // 001E GETMET R2 R1 K24 0x54120038, // 001F LDINT R4 57 0x5416001A, // 0020 LDINT R5 27 0x88180100, // 0021 GETMBR R6 R0 K0 - 0x88180D02, // 0022 GETMBR R6 R6 K2 - 0x2C180D23, // 0023 AND R6 R6 K35 + 0x88180D1D, // 0022 GETMBR R6 R6 K29 + 0x2C180D1E, // 0023 AND R6 R6 K30 0x7C080800, // 0024 CALL R2 4 - 0xB80A0800, // 0025 GETNGBL R2 K4 - 0x88080525, // 0026 GETMBR R2 R2 K37 - 0x8C080526, // 0027 GETMET R2 R2 K38 + 0xB80A4000, // 0025 GETNGBL R2 K32 + 0x88080521, // 0026 GETMBR R2 R2 K33 + 0x8C080522, // 0027 GETMET R2 R2 K34 0x5C100200, // 0028 MOVE R4 R1 0x7C080400, // 0029 CALL R2 2 - 0x000A4802, // 002A ADD R2 K36 R2 + 0x000A3E02, // 002A ADD R2 K31 R2 0x80040400, // 002B RET 1 R2 }) ) @@ -356,42 +330,11 @@ be_local_closure(class_Matter_Commissioning_compute_qrcode_content, /* name */ /******************************************************************** -** Solidified function: start_operational_discovery +** Solidified function: mdns_remove_PASE ********************************************************************/ -be_local_closure(class_Matter_Commissioning_start_operational_discovery, /* name */ +be_local_closure(class_Matter_Commissioning_mdns_remove_PASE, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(start_operational_discovery), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xA40A4E00, // 0000 IMPORT R2 K39 - 0xA40E5000, // 0001 IMPORT R3 K40 - 0x8C10011D, // 0002 GETMET R4 R0 K29 - 0x7C100200, // 0003 CALL R4 1 - 0x8C100129, // 0004 GETMET R4 R0 K41 - 0x5C180200, // 0005 MOVE R6 R1 - 0x7C100400, // 0006 CALL R4 2 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_op_discovery_all_fabrics -********************************************************************/ -be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ + 9, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -400,32 +343,168 @@ be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(mdns_remove_op_discovery_all_fabrics), + be_str_weak(mdns_remove_PASE), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8808052A, // 0002 GETMBR R2 R2 K42 - 0x8C08052B, // 0003 GETMET R2 R2 K43 - 0x7C080200, // 0004 CALL R2 1 - 0x7C040200, // 0005 CALL R1 1 - 0xA802000B, // 0006 EXBLK 0 #0013 - 0x5C080200, // 0007 MOVE R2 R1 - 0x7C080000, // 0008 CALL R2 0 - 0x8C0C052C, // 0009 GETMET R3 R2 K44 - 0x7C0C0200, // 000A CALL R3 1 - 0x780E0005, // 000B JMPF R3 #0012 - 0x8C0C0515, // 000C GETMET R3 R2 K21 - 0x7C0C0200, // 000D CALL R3 1 - 0x780E0002, // 000E JMPF R3 #0012 - 0x8C0C012D, // 000F GETMET R3 R0 K45 - 0x5C140400, // 0010 MOVE R5 R2 - 0x7C0C0400, // 0011 CALL R3 2 - 0x7001FFF3, // 0012 JMP #0007 - 0x5804002E, // 0013 LDCONST R1 K46 - 0xAC040200, // 0014 CATCH R1 1 0 - 0xB0080000, // 0015 RAISE 2 R0 R0 - 0x80000000, // 0016 RET 0 + ( &(const binstruction[77]) { /* code */ + 0xA4064600, // 0000 IMPORT R1 K35 + 0xA8020039, // 0001 EXBLK 0 #003C + 0x88080124, // 0002 GETMBR R2 R0 K36 + 0x780A0019, // 0003 JMPF R2 #001E + 0xB80A4A00, // 0004 GETNGBL R2 K37 + 0x600C0018, // 0005 GETGBL R3 G24 + 0x58100026, // 0006 LDCONST R4 K38 + 0x58140027, // 0007 LDCONST R5 K39 + 0x58180028, // 0008 LDCONST R6 K40 + 0x881C0129, // 0009 GETMBR R7 R0 K41 + 0x8820012A, // 000A GETMBR R8 R0 K42 + 0x7C0C0A00, // 000B CALL R3 5 + 0x58100019, // 000C LDCONST R4 K25 + 0x7C080400, // 000D CALL R2 2 + 0xB80A4A00, // 000E GETNGBL R2 K37 + 0x600C0018, // 000F GETGBL R3 G24 + 0x5810002B, // 0010 LDCONST R4 K43 + 0x5814002C, // 0011 LDCONST R5 K44 + 0x88180129, // 0012 GETMBR R6 R0 K41 + 0x7C0C0600, // 0013 CALL R3 3 + 0x58100019, // 0014 LDCONST R4 K25 + 0x7C080400, // 0015 CALL R2 2 + 0x50080000, // 0016 LDBOOL R2 0 0 + 0x90024802, // 0017 SETMBR R0 K36 R2 + 0x8C08032D, // 0018 GETMET R2 R1 K45 + 0x58100027, // 0019 LDCONST R4 K39 + 0x58140028, // 001A LDCONST R5 K40 + 0x88180129, // 001B GETMBR R6 R0 K41 + 0x881C012A, // 001C GETMBR R7 R0 K42 + 0x7C080A00, // 001D CALL R2 5 + 0x8808012E, // 001E GETMBR R2 R0 K46 + 0x780A0019, // 001F JMPF R2 #003A + 0xB80A4A00, // 0020 GETNGBL R2 K37 + 0x600C0018, // 0021 GETGBL R3 G24 + 0x58100026, // 0022 LDCONST R4 K38 + 0x58140027, // 0023 LDCONST R5 K39 + 0x58180028, // 0024 LDCONST R6 K40 + 0x881C012F, // 0025 GETMBR R7 R0 K47 + 0x88200130, // 0026 GETMBR R8 R0 K48 + 0x7C0C0A00, // 0027 CALL R3 5 + 0x58100019, // 0028 LDCONST R4 K25 + 0x7C080400, // 0029 CALL R2 2 + 0xB80A4A00, // 002A GETNGBL R2 K37 + 0x600C0018, // 002B GETGBL R3 G24 + 0x5810002B, // 002C LDCONST R4 K43 + 0x58140031, // 002D LDCONST R5 K49 + 0x8818012F, // 002E GETMBR R6 R0 K47 + 0x7C0C0600, // 002F CALL R3 3 + 0x58100019, // 0030 LDCONST R4 K25 + 0x7C080400, // 0031 CALL R2 2 + 0x50080000, // 0032 LDBOOL R2 0 0 + 0x90025C02, // 0033 SETMBR R0 K46 R2 + 0x8C08032D, // 0034 GETMET R2 R1 K45 + 0x58100027, // 0035 LDCONST R4 K39 + 0x58140028, // 0036 LDCONST R5 K40 + 0x8818012F, // 0037 GETMBR R6 R0 K47 + 0x881C0130, // 0038 GETMBR R7 R0 K48 + 0x7C080A00, // 0039 CALL R2 5 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000F, // 003B JMP #004C + 0xAC080002, // 003C CATCH R2 0 2 + 0x7002000C, // 003D JMP #004B + 0xB8124A00, // 003E GETNGBL R4 K37 + 0x60140008, // 003F GETGBL R5 G8 + 0x5C180400, // 0040 MOVE R6 R2 + 0x7C140200, // 0041 CALL R5 1 + 0x00166405, // 0042 ADD R5 K50 R5 + 0x00140B33, // 0043 ADD R5 R5 K51 + 0x60180008, // 0044 GETGBL R6 G8 + 0x5C1C0600, // 0045 MOVE R7 R3 + 0x7C180200, // 0046 CALL R6 1 + 0x00140A06, // 0047 ADD R5 R5 R6 + 0x58180034, // 0048 LDCONST R6 K52 + 0x7C100400, // 0049 CALL R4 2 + 0x70020000, // 004A JMP #004C + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80000000, // 004C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_manual_pairing_code +********************************************************************/ +be_local_closure(class_Matter_Commissioning_compute_manual_pairing_code, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(compute_manual_pairing_code), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804031C, // 0001 GETMBR R1 R1 K28 + 0x540A0FFE, // 0002 LDINT R2 4095 + 0x2C040202, // 0003 AND R1 R1 R2 + 0x540A0009, // 0004 LDINT R2 10 + 0x3C040202, // 0005 SHR R1 R1 R2 + 0x88080100, // 0006 GETMBR R2 R0 K0 + 0x8808051C, // 0007 GETMBR R2 R2 K28 + 0x540E02FF, // 0008 LDINT R3 768 + 0x2C080403, // 0009 AND R2 R2 R3 + 0x540E0005, // 000A LDINT R3 6 + 0x38080403, // 000B SHL R2 R2 R3 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x880C071D, // 000D GETMBR R3 R3 K29 + 0x54123FFE, // 000E LDINT R4 16383 + 0x2C0C0604, // 000F AND R3 R3 R4 + 0x30080403, // 0010 OR R2 R2 R3 + 0x880C0100, // 0011 GETMBR R3 R0 K0 + 0x880C071D, // 0012 GETMBR R3 R3 K29 + 0x5412000D, // 0013 LDINT R4 14 + 0x3C0C0604, // 0014 SHR R3 R3 R4 + 0x60100018, // 0015 GETGBL R4 G24 + 0x58140035, // 0016 LDCONST R5 K53 + 0x5C180200, // 0017 MOVE R6 R1 + 0x5C1C0400, // 0018 MOVE R7 R2 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C100800, // 001A CALL R4 4 + 0xB8164000, // 001B GETNGBL R5 K32 + 0x88140B36, // 001C GETMBR R5 R5 K54 + 0x8C140B37, // 001D GETMET R5 R5 K55 + 0x5C1C0800, // 001E MOVE R7 R4 + 0x7C140400, // 001F CALL R5 2 + 0x00100805, // 0020 ADD R4 R4 R5 + 0x80040800, // 0021 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_Matter_Commissioning_init, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 }) ) ); @@ -449,79 +528,79 @@ be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery, /* name be_str_weak(mdns_remove_op_discovery), &be_const_str_solidified, ( &(const binstruction[77]) { /* code */ - 0xA40A5000, // 0000 IMPORT R2 K40 + 0xA40A4600, // 0000 IMPORT R2 K35 0xA8020039, // 0001 EXBLK 0 #003C - 0x8C0C032C, // 0002 GETMET R3 R1 K44 + 0x8C0C0303, // 0002 GETMET R3 R1 K3 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0716, // 0004 GETMET R3 R3 K22 + 0x8C0C0738, // 0004 GETMET R3 R3 K56 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0717, // 0006 GETMET R3 R3 K23 + 0x8C0C0739, // 0006 GETMET R3 R3 K57 0x7C0C0200, // 0007 CALL R3 1 - 0x8C10032F, // 0008 GETMET R4 R1 K47 + 0x8C10033A, // 0008 GETMET R4 R1 K58 0x7C100200, // 0009 CALL R4 1 - 0x8C140918, // 000A GETMET R5 R4 K24 + 0x8C14093B, // 000A GETMET R5 R4 K59 0x7C140200, // 000B CALL R5 1 - 0x00140B30, // 000C ADD R5 R5 K48 - 0x8C180718, // 000D GETMET R6 R3 K24 + 0x00140B3C, // 000C ADD R5 R5 K60 + 0x8C18073B, // 000D GETMET R6 R3 K59 0x7C180200, // 000E CALL R6 1 0x00140A06, // 000F ADD R5 R5 R6 0xB81A1000, // 0010 GETNGBL R6 K8 - 0x8C180D31, // 0011 GETMET R6 R6 K49 + 0x8C180D2C, // 0011 GETMET R6 R6 K44 0x7C180200, // 0012 CALL R6 1 - 0x8C180D32, // 0013 GETMET R6 R6 K50 - 0x58200033, // 0014 LDCONST R8 K51 + 0x8C180D3D, // 0013 GETMET R6 R6 K61 + 0x5820003E, // 0014 LDCONST R8 K62 0x7C180400, // 0015 CALL R6 2 0x781A000D, // 0016 JMPF R6 #0025 - 0xB81A3400, // 0017 GETNGBL R6 K26 + 0xB81A4A00, // 0017 GETNGBL R6 K37 0x601C0018, // 0018 GETGBL R7 G24 - 0x58200034, // 0019 LDCONST R8 K52 - 0x58240031, // 001A LDCONST R9 K49 + 0x5820002B, // 0019 LDCONST R8 K43 + 0x5824002C, // 001A LDCONST R9 K44 0x5C280A00, // 001B MOVE R10 R5 0x7C1C0600, // 001C CALL R7 3 - 0x58200020, // 001D LDCONST R8 K32 + 0x58200019, // 001D LDCONST R8 K25 0x7C180400, // 001E CALL R6 2 - 0x8C180535, // 001F GETMET R6 R2 K53 - 0x58200036, // 0020 LDCONST R8 K54 - 0x58240037, // 0021 LDCONST R9 K55 + 0x8C18052D, // 001F GETMET R6 R2 K45 + 0x5820003F, // 0020 LDCONST R8 K63 + 0x58240040, // 0021 LDCONST R9 K64 0x5C280A00, // 0022 MOVE R10 R5 - 0x882C0138, // 0023 GETMBR R11 R0 K56 + 0x882C012A, // 0023 GETMBR R11 R0 K42 0x7C180A00, // 0024 CALL R6 5 0xB81A1000, // 0025 GETNGBL R6 K8 - 0x8C180D39, // 0026 GETMET R6 R6 K57 + 0x8C180D31, // 0026 GETMET R6 R6 K49 0x7C180200, // 0027 CALL R6 1 - 0x8C180D32, // 0028 GETMET R6 R6 K50 - 0x58200033, // 0029 LDCONST R8 K51 + 0x8C180D3D, // 0028 GETMET R6 R6 K61 + 0x5820003E, // 0029 LDCONST R8 K62 0x7C180400, // 002A CALL R6 2 0x781A000D, // 002B JMPF R6 #003A - 0xB81A3400, // 002C GETNGBL R6 K26 + 0xB81A4A00, // 002C GETNGBL R6 K37 0x601C0018, // 002D GETGBL R7 G24 - 0x58200034, // 002E LDCONST R8 K52 - 0x58240039, // 002F LDCONST R9 K57 + 0x5820002B, // 002E LDCONST R8 K43 + 0x58240031, // 002F LDCONST R9 K49 0x5C280A00, // 0030 MOVE R10 R5 0x7C1C0600, // 0031 CALL R7 3 - 0x58200020, // 0032 LDCONST R8 K32 + 0x58200019, // 0032 LDCONST R8 K25 0x7C180400, // 0033 CALL R6 2 - 0x8C180535, // 0034 GETMET R6 R2 K53 - 0x58200036, // 0035 LDCONST R8 K54 - 0x58240037, // 0036 LDCONST R9 K55 + 0x8C18052D, // 0034 GETMET R6 R2 K45 + 0x5820003F, // 0035 LDCONST R8 K63 + 0x58240040, // 0036 LDCONST R9 K64 0x5C280A00, // 0037 MOVE R10 R5 - 0x882C013A, // 0038 GETMBR R11 R0 K58 + 0x882C0130, // 0038 GETMBR R11 R0 K48 0x7C180A00, // 0039 CALL R6 5 0xA8040001, // 003A EXBLK 1 1 0x7002000F, // 003B JMP #004C 0xAC0C0002, // 003C CATCH R3 0 2 0x7002000C, // 003D JMP #004B - 0xB8163400, // 003E GETNGBL R5 K26 + 0xB8164A00, // 003E GETNGBL R5 K37 0x60180008, // 003F GETGBL R6 G8 0x5C1C0600, // 0040 MOVE R7 R3 0x7C180200, // 0041 CALL R6 1 - 0x001A7606, // 0042 ADD R6 K59 R6 - 0x00180D3C, // 0043 ADD R6 R6 K60 + 0x001A6406, // 0042 ADD R6 K50 R6 + 0x00180D33, // 0043 ADD R6 R6 K51 0x601C0008, // 0044 GETGBL R7 G8 0x5C200800, // 0045 MOVE R8 R4 0x7C1C0200, // 0046 CALL R7 1 0x00180C07, // 0047 ADD R6 R6 R7 - 0x581C001C, // 0048 LDCONST R7 K28 + 0x581C0034, // 0048 LDCONST R7 K52 0x7C140400, // 0049 CALL R5 2 0x70020000, // 004A JMP #004C 0xB0080000, // 004B RAISE 2 R0 R0 @@ -532,6 +611,943 @@ be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery, /* name /*******************************************************************/ +/******************************************************************** +** Solidified function: start_operational_discovery_deferred +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_operational_discovery_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_operational_discovery), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_operational_discovery_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A1000, // 0000 GETNGBL R2 K8 + 0x8C080541, // 0001 GETMET R2 R2 K65 + 0x58100015, // 0002 LDCONST R4 K21 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_operational_discovery +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_operational_discovery, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_operational_discovery), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xA40A8400, // 0000 IMPORT R2 K66 + 0xA40E4600, // 0001 IMPORT R3 K35 + 0x8C100143, // 0002 GETMET R4 R0 K67 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100144, // 0004 GETMET R4 R0 K68 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C100400, // 0006 CALL R4 2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _mdns_announce_hostname +********************************************************************/ +be_local_closure(class_Matter_Commissioning__mdns_announce_hostname, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(_mdns_announce_hostname), + &be_const_str_solidified, + ( &(const binstruction[146]) { /* code */ + 0xA40A4600, // 0000 IMPORT R2 K35 + 0xA40E8A00, // 0001 IMPORT R3 K69 + 0x8C100546, // 0002 GETMET R4 R2 K70 + 0x7C100200, // 0003 CALL R4 1 + 0xA8020079, // 0004 EXBLK 0 #007F + 0x78060034, // 0005 JMPF R1 #003B + 0xB8121000, // 0006 GETNGBL R4 K8 + 0x8C10092C, // 0007 GETMET R4 R4 K44 + 0x7C100200, // 0008 CALL R4 1 + 0x8C140747, // 0009 GETMET R5 R3 K71 + 0x8C1C093D, // 000A GETMET R7 R4 K61 + 0x58240048, // 000B LDCONST R9 K72 + 0x7C1C0400, // 000C CALL R7 2 + 0x58200049, // 000D LDCONST R8 K73 + 0x5824004A, // 000E LDCONST R9 K74 + 0x7C140800, // 000F CALL R5 4 + 0x90025405, // 0010 SETMBR R0 K42 R5 + 0x88140100, // 0011 GETMBR R5 R0 K0 + 0x88140B4B, // 0012 GETMBR R5 R5 K75 + 0x78160003, // 0013 JMPF R5 #0018 + 0x8C14094C, // 0014 GETMET R5 R4 K76 + 0x581C004D, // 0015 LDCONST R7 K77 + 0x7C140400, // 0016 CALL R5 2 + 0x7416000F, // 0017 JMPT R5 #0028 + 0x8C14054E, // 0018 GETMET R5 R2 K78 + 0x881C012A, // 0019 GETMBR R7 R0 K42 + 0x8C20093D, // 001A GETMET R8 R4 K61 + 0x5828004D, // 001B LDCONST R10 K77 + 0x582C004A, // 001C LDCONST R11 K74 + 0x7C200600, // 001D CALL R8 3 + 0x8C24093D, // 001E GETMET R9 R4 K61 + 0x582C004F, // 001F LDCONST R11 K79 + 0x5830004A, // 0020 LDCONST R12 K74 + 0x7C240600, // 0021 CALL R9 3 + 0x8C28093D, // 0022 GETMET R10 R4 K61 + 0x58300050, // 0023 LDCONST R12 K80 + 0x5834004A, // 0024 LDCONST R13 K74 + 0x7C280600, // 0025 CALL R10 3 + 0x7C140A00, // 0026 CALL R5 5 + 0x70020011, // 0027 JMP #003A + 0xB8164A00, // 0028 GETNGBL R5 K37 + 0x60180018, // 0029 GETGBL R6 G24 + 0x581C0051, // 002A LDCONST R7 K81 + 0x8820012A, // 002B GETMBR R8 R0 K42 + 0x8C24093D, // 002C GETMET R9 R4 K61 + 0x582C004F, // 002D LDCONST R11 K79 + 0x5830004A, // 002E LDCONST R12 K74 + 0x7C240600, // 002F CALL R9 3 + 0x7C180600, // 0030 CALL R6 3 + 0x581C0019, // 0031 LDCONST R7 K25 + 0x7C140400, // 0032 CALL R5 2 + 0x8C14054E, // 0033 GETMET R5 R2 K78 + 0x881C012A, // 0034 GETMBR R7 R0 K42 + 0x8C20093D, // 0035 GETMET R8 R4 K61 + 0x5828004F, // 0036 LDCONST R10 K79 + 0x582C004A, // 0037 LDCONST R11 K74 + 0x7C200600, // 0038 CALL R8 3 + 0x7C140600, // 0039 CALL R5 3 + 0x70020033, // 003A JMP #006F + 0xB8121000, // 003B GETNGBL R4 K8 + 0x8C100931, // 003C GETMET R4 R4 K49 + 0x7C100200, // 003D CALL R4 1 + 0x8C140747, // 003E GETMET R5 R3 K71 + 0x8C1C093D, // 003F GETMET R7 R4 K61 + 0x58240048, // 0040 LDCONST R9 K72 + 0x7C1C0400, // 0041 CALL R7 2 + 0x58200049, // 0042 LDCONST R8 K73 + 0x5824004A, // 0043 LDCONST R9 K74 + 0x7C140800, // 0044 CALL R5 4 + 0x90026005, // 0045 SETMBR R0 K48 R5 + 0x88140100, // 0046 GETMBR R5 R0 K0 + 0x88140B4B, // 0047 GETMBR R5 R5 K75 + 0x78160003, // 0048 JMPF R5 #004D + 0x8C14094C, // 0049 GETMET R5 R4 K76 + 0x581C004D, // 004A LDCONST R7 K77 + 0x7C140400, // 004B CALL R5 2 + 0x7416000F, // 004C JMPT R5 #005D + 0x8C14054E, // 004D GETMET R5 R2 K78 + 0x881C0130, // 004E GETMBR R7 R0 K48 + 0x8C20093D, // 004F GETMET R8 R4 K61 + 0x5828004D, // 0050 LDCONST R10 K77 + 0x582C004A, // 0051 LDCONST R11 K74 + 0x7C200600, // 0052 CALL R8 3 + 0x8C24093D, // 0053 GETMET R9 R4 K61 + 0x582C004F, // 0054 LDCONST R11 K79 + 0x5830004A, // 0055 LDCONST R12 K74 + 0x7C240600, // 0056 CALL R9 3 + 0x8C28093D, // 0057 GETMET R10 R4 K61 + 0x58300050, // 0058 LDCONST R12 K80 + 0x5834004A, // 0059 LDCONST R13 K74 + 0x7C280600, // 005A CALL R10 3 + 0x7C140A00, // 005B CALL R5 5 + 0x70020011, // 005C JMP #006F + 0xB8164A00, // 005D GETNGBL R5 K37 + 0x60180018, // 005E GETGBL R6 G24 + 0x581C0051, // 005F LDCONST R7 K81 + 0x88200130, // 0060 GETMBR R8 R0 K48 + 0x8C24093D, // 0061 GETMET R9 R4 K61 + 0x582C004F, // 0062 LDCONST R11 K79 + 0x5830004A, // 0063 LDCONST R12 K74 + 0x7C240600, // 0064 CALL R9 3 + 0x7C180600, // 0065 CALL R6 3 + 0x581C0019, // 0066 LDCONST R7 K25 + 0x7C140400, // 0067 CALL R5 2 + 0x8C14054E, // 0068 GETMET R5 R2 K78 + 0x881C0130, // 0069 GETMBR R7 R0 K48 + 0x8C20093D, // 006A GETMET R8 R4 K61 + 0x5828004F, // 006B LDCONST R10 K79 + 0x582C004A, // 006C LDCONST R11 K74 + 0x7C200600, // 006D CALL R8 3 + 0x7C140600, // 006E CALL R5 3 + 0xB8124A00, // 006F GETNGBL R4 K37 + 0x60140018, // 0070 GETGBL R5 G24 + 0x58180052, // 0071 LDCONST R6 K82 + 0x78060001, // 0072 JMPF R1 #0075 + 0x581C002C, // 0073 LDCONST R7 K44 + 0x70020000, // 0074 JMP #0076 + 0x581C0031, // 0075 LDCONST R7 K49 + 0x78060001, // 0076 JMPF R1 #0079 + 0x8820012A, // 0077 GETMBR R8 R0 K42 + 0x70020000, // 0078 JMP #007A + 0x88200130, // 0079 GETMBR R8 R0 K48 + 0x7C140600, // 007A CALL R5 3 + 0x58180019, // 007B LDCONST R6 K25 + 0x7C100400, // 007C CALL R4 2 + 0xA8040001, // 007D EXBLK 1 1 + 0x7002000F, // 007E JMP #008F + 0xAC100002, // 007F CATCH R4 0 2 + 0x7002000C, // 0080 JMP #008E + 0xB81A4A00, // 0081 GETNGBL R6 K37 + 0x601C0008, // 0082 GETGBL R7 G8 + 0x5C200800, // 0083 MOVE R8 R4 + 0x7C1C0200, // 0084 CALL R7 1 + 0x001E6407, // 0085 ADD R7 K50 R7 + 0x001C0F33, // 0086 ADD R7 R7 K51 + 0x60200008, // 0087 GETGBL R8 G8 + 0x5C240A00, // 0088 MOVE R9 R5 + 0x7C200200, // 0089 CALL R8 1 + 0x001C0E08, // 008A ADD R7 R7 R8 + 0x58200034, // 008B LDCONST R8 K52 + 0x7C180400, // 008C CALL R6 2 + 0x70020000, // 008D JMP #008F + 0xB0080000, // 008E RAISE 2 R0 R0 + 0x8C100153, // 008F GETMET R4 R0 K83 + 0x7C100200, // 0090 CALL R4 1 + 0x80000000, // 0091 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery_all_fabrics +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_announce_op_discovery_all_fabrics), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080501, // 0002 GETMBR R2 R2 K1 + 0x8C080502, // 0003 GETMET R2 R2 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x7C040200, // 0005 CALL R1 1 + 0xA802000B, // 0006 EXBLK 0 #0013 + 0x5C080200, // 0007 MOVE R2 R1 + 0x7C080000, // 0008 CALL R2 0 + 0x8C0C0503, // 0009 GETMET R3 R2 K3 + 0x7C0C0200, // 000A CALL R3 1 + 0x780E0005, // 000B JMPF R3 #0012 + 0x8C0C0504, // 000C GETMET R3 R2 K4 + 0x7C0C0200, // 000D CALL R3 1 + 0x780E0002, // 000E JMPF R3 #0012 + 0x8C0C0144, // 000F GETMET R3 R0 K68 + 0x5C140400, // 0010 MOVE R5 R2 + 0x7C0C0400, // 0011 CALL R3 2 + 0x7001FFF3, // 0012 JMP #0007 + 0x58040006, // 0013 LDCONST R1 K6 + 0xAC040200, // 0014 CATCH R1 1 0 + 0xB0080000, // 0015 RAISE 2 R0 R0 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_root_basic_commissioning +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_root_basic_commissioning, /* name */ + be_nested_proto( + 22, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_root_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[76]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040154, // 0003 GETMBR R1 R0 K84 + 0x8C080155, // 0004 GETMET R2 R0 K85 + 0x7C080200, // 0005 CALL R2 1 + 0xB80E4A00, // 0006 GETNGBL R3 K37 + 0x60100018, // 0007 GETGBL R4 G24 + 0x58140056, // 0008 LDCONST R5 K86 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C100400, // 000A CALL R4 2 + 0x58140034, // 000B LDCONST R5 K52 + 0x7C0C0400, // 000C CALL R3 2 + 0x8C0C0157, // 000D GETMET R3 R0 K87 + 0x7C0C0200, // 000E CALL R3 1 + 0xB8121000, // 000F GETNGBL R4 K8 + 0x8C100909, // 0010 GETMET R4 R4 K9 + 0x60180018, // 0011 GETGBL R6 G24 + 0x581C0058, // 0012 LDCONST R7 K88 + 0x5C200400, // 0013 MOVE R8 R2 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C180600, // 0015 CALL R6 3 + 0x581C000B, // 0016 LDCONST R7 K11 + 0x7C100600, // 0017 CALL R4 3 + 0xA4128400, // 0018 IMPORT R4 K66 + 0x8C140959, // 0019 GETMET R5 R4 K89 + 0x541E000F, // 001A LDINT R7 16 + 0x7C140400, // 001B CALL R5 2 + 0x60180015, // 001C GETGBL R6 G21 + 0x7C180000, // 001D CALL R6 0 + 0x8C180D5A, // 001E GETMET R6 R6 K90 + 0x88200100, // 001F GETMBR R8 R0 K0 + 0x8820111D, // 0020 GETMBR R8 R8 K29 + 0x54260003, // 0021 LDINT R9 4 + 0x7C180600, // 0022 CALL R6 3 + 0x8C1C095B, // 0023 GETMET R7 R4 K91 + 0x7C1C0200, // 0024 CALL R7 1 + 0x8C1C0F5C, // 0025 GETMET R7 R7 K92 + 0x5C240C00, // 0026 MOVE R9 R6 + 0x5C280A00, // 0027 MOVE R10 R5 + 0x882C015D, // 0028 GETMBR R11 R0 K93 + 0x5432004F, // 0029 LDINT R12 80 + 0x7C1C0A00, // 002A CALL R7 5 + 0x54220026, // 002B LDINT R8 39 + 0x40222A08, // 002C CONNECT R8 K21 R8 + 0x94200E08, // 002D GETIDX R8 R7 R8 + 0x54260027, // 002E LDINT R9 40 + 0x542A004E, // 002F LDINT R10 79 + 0x4024120A, // 0030 CONNECT R9 R9 R10 + 0x94240E09, // 0031 GETIDX R9 R7 R9 + 0x8C28095E, // 0032 GETMET R10 R4 K94 + 0x7C280200, // 0033 CALL R10 1 + 0x8C28155F, // 0034 GETMET R10 R10 K95 + 0x5C301000, // 0035 MOVE R12 R8 + 0x7C280400, // 0036 CALL R10 2 + 0x8C2C095E, // 0037 GETMET R11 R4 K94 + 0x7C2C0200, // 0038 CALL R11 1 + 0x8C2C175F, // 0039 GETMET R11 R11 K95 + 0x5C341200, // 003A MOVE R13 R9 + 0x7C2C0400, // 003B CALL R11 2 + 0x8C30095E, // 003C GETMET R12 R4 K94 + 0x7C300200, // 003D CALL R12 1 + 0x8C301960, // 003E GETMET R12 R12 K96 + 0x5C381600, // 003F MOVE R14 R11 + 0x7C300400, // 0040 CALL R12 2 + 0x8C340161, // 0041 GETMET R13 R0 K97 + 0x5C3C0200, // 0042 MOVE R15 R1 + 0x8840015D, // 0043 GETMBR R16 R0 K93 + 0x88440100, // 0044 GETMBR R17 R0 K0 + 0x8844231C, // 0045 GETMBR R17 R17 K28 + 0x5C480A00, // 0046 MOVE R18 R5 + 0x5C4C1400, // 0047 MOVE R19 R10 + 0x5C501800, // 0048 MOVE R20 R12 + 0x4C540000, // 0049 LDNIL R21 + 0x7C341000, // 004A CALL R13 8 + 0x80000000, // 004B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_random_passcode +********************************************************************/ +be_local_closure(class_Matter_Commissioning_generate_random_passcode, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(generate_random_passcode), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0xA4068400, // 0000 IMPORT R1 K66 + 0x4C080000, // 0001 LDNIL R2 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x780E001D, // 0003 JMPF R3 #0022 + 0x8C0C0359, // 0004 GETMET R3 R1 K89 + 0x54160003, // 0005 LDINT R5 4 + 0x7C0C0400, // 0006 CALL R3 2 + 0x8C0C0762, // 0007 GETMET R3 R3 K98 + 0x58140015, // 0008 LDCONST R5 K21 + 0x541A0003, // 0009 LDINT R6 4 + 0x7C0C0600, // 000A CALL R3 3 + 0x2C0C071E, // 000B AND R3 R3 K30 + 0x5C080600, // 000C MOVE R2 R3 + 0x240C0563, // 000D GT R3 R2 K99 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7001FFF1, // 000F JMP #0002 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100164, // 0011 GETMBR R4 R0 K100 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x1C140404, // 0016 EQ R5 R2 R4 + 0x78160000, // 0017 JMPF R5 #0019 + 0x4C080000, // 0018 LDNIL R2 + 0x7001FFF9, // 0019 JMP #0014 + 0x580C0006, // 001A LDCONST R3 K6 + 0xAC0C0200, // 001B CATCH R3 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x4C0C0000, // 001D LDNIL R3 + 0x200C0403, // 001E NE R3 R2 R3 + 0x780E0000, // 001F JMPF R3 #0021 + 0x80040400, // 0020 RET 1 R2 + 0x7001FFDF, // 0021 JMP #0002 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_op_discovery +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_announce_op_discovery), + &be_const_str_solidified, + ( &(const binstruction[115]) { /* code */ + 0xA40A4600, // 0000 IMPORT R2 K35 + 0xA802005F, // 0001 EXBLK 0 #0062 + 0x8C0C0303, // 0002 GETMET R3 R1 K3 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0738, // 0004 GETMET R3 R3 K56 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0739, // 0006 GETMET R3 R3 K57 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C10033A, // 0008 GETMET R4 R1 K58 + 0x7C100200, // 0009 CALL R4 1 + 0x8C14093B, // 000A GETMET R5 R4 K59 + 0x7C140200, // 000B CALL R5 1 + 0x00140B3C, // 000C ADD R5 R5 K60 + 0x8C18073B, // 000D GETMET R6 R3 K59 + 0x7C180200, // 000E CALL R6 1 + 0x00140A06, // 000F ADD R5 R5 R6 + 0xB81A4A00, // 0010 GETNGBL R6 K37 + 0x001ECA05, // 0011 ADD R7 K101 R5 + 0x58200019, // 0012 LDCONST R8 K25 + 0x7C180400, // 0013 CALL R6 2 + 0xB81A1000, // 0014 GETNGBL R6 K8 + 0x8C180D2C, // 0015 GETMET R6 R6 K44 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180D3D, // 0017 GETMET R6 R6 K61 + 0x5820003E, // 0018 LDCONST R8 K62 + 0x7C180400, // 0019 CALL R6 2 + 0x781A001E, // 001A JMPF R6 #003A + 0xB81A4A00, // 001B GETNGBL R6 K37 + 0x601C0018, // 001C GETGBL R7 G24 + 0x58200066, // 001D LDCONST R8 K102 + 0x5824002C, // 001E LDCONST R9 K44 + 0x5C280A00, // 001F MOVE R10 R5 + 0x882C012A, // 0020 GETMBR R11 R0 K42 + 0x7C1C0800, // 0021 CALL R7 4 + 0x58200019, // 0022 LDCONST R8 K25 + 0x7C180400, // 0023 CALL R6 2 + 0x8C180567, // 0024 GETMET R6 R2 K103 + 0x5820003F, // 0025 LDCONST R8 K63 + 0x58240040, // 0026 LDCONST R9 K64 + 0x542A15A3, // 0027 LDINT R10 5540 + 0x4C2C0000, // 0028 LDNIL R11 + 0x5C300A00, // 0029 MOVE R12 R5 + 0x8834012A, // 002A GETMBR R13 R0 K42 + 0x7C180E00, // 002B CALL R6 7 + 0x8C18093B, // 002C GETMET R6 R4 K59 + 0x7C180200, // 002D CALL R6 1 + 0x001AD006, // 002E ADD R6 K104 R6 + 0xB81E4A00, // 002F GETNGBL R7 K37 + 0x0022D206, // 0030 ADD R8 K105 R6 + 0x58240019, // 0031 LDCONST R9 K25 + 0x7C1C0400, // 0032 CALL R7 2 + 0x8C1C056A, // 0033 GETMET R7 R2 K106 + 0x5824003F, // 0034 LDCONST R9 K63 + 0x58280040, // 0035 LDCONST R10 K64 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x8830012A, // 0037 GETMBR R12 R0 K42 + 0x5C340C00, // 0038 MOVE R13 R6 + 0x7C1C0C00, // 0039 CALL R7 6 + 0xB81A1000, // 003A GETNGBL R6 K8 + 0x8C180D31, // 003B GETMET R6 R6 K49 + 0x7C180200, // 003C CALL R6 1 + 0x8C180D3D, // 003D GETMET R6 R6 K61 + 0x5820003E, // 003E LDCONST R8 K62 + 0x7C180400, // 003F CALL R6 2 + 0x781A001E, // 0040 JMPF R6 #0060 + 0xB81A4A00, // 0041 GETNGBL R6 K37 + 0x601C0018, // 0042 GETGBL R7 G24 + 0x58200066, // 0043 LDCONST R8 K102 + 0x58240031, // 0044 LDCONST R9 K49 + 0x5C280A00, // 0045 MOVE R10 R5 + 0x882C0130, // 0046 GETMBR R11 R0 K48 + 0x7C1C0800, // 0047 CALL R7 4 + 0x58200019, // 0048 LDCONST R8 K25 + 0x7C180400, // 0049 CALL R6 2 + 0x8C180567, // 004A GETMET R6 R2 K103 + 0x5820003F, // 004B LDCONST R8 K63 + 0x58240040, // 004C LDCONST R9 K64 + 0x542A15A3, // 004D LDINT R10 5540 + 0x4C2C0000, // 004E LDNIL R11 + 0x5C300A00, // 004F MOVE R12 R5 + 0x88340130, // 0050 GETMBR R13 R0 K48 + 0x7C180E00, // 0051 CALL R6 7 + 0x8C18093B, // 0052 GETMET R6 R4 K59 + 0x7C180200, // 0053 CALL R6 1 + 0x001AD006, // 0054 ADD R6 K104 R6 + 0xB81E4A00, // 0055 GETNGBL R7 K37 + 0x0022D206, // 0056 ADD R8 K105 R6 + 0x58240019, // 0057 LDCONST R9 K25 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C1C056A, // 0059 GETMET R7 R2 K106 + 0x5824003F, // 005A LDCONST R9 K63 + 0x58280040, // 005B LDCONST R10 K64 + 0x5C2C0A00, // 005C MOVE R11 R5 + 0x88300130, // 005D GETMBR R12 R0 K48 + 0x5C340C00, // 005E MOVE R13 R6 + 0x7C1C0C00, // 005F CALL R7 6 + 0xA8040001, // 0060 EXBLK 1 1 + 0x7002000F, // 0061 JMP #0072 + 0xAC0C0002, // 0062 CATCH R3 0 2 + 0x7002000C, // 0063 JMP #0071 + 0xB8164A00, // 0064 GETNGBL R5 K37 + 0x60180008, // 0065 GETGBL R6 G8 + 0x5C1C0600, // 0066 MOVE R7 R3 + 0x7C180200, // 0067 CALL R6 1 + 0x001A6406, // 0068 ADD R6 K50 R6 + 0x00180D33, // 0069 ADD R6 R6 K51 + 0x601C0008, // 006A GETGBL R7 G8 + 0x5C200800, // 006B MOVE R8 R4 + 0x7C1C0200, // 006C CALL R7 1 + 0x00180C07, // 006D ADD R6 R6 R7 + 0x581C0034, // 006E LDCONST R7 K52 + 0x7C140400, // 006F CALL R5 2 + 0x70020000, // 0070 JMP #0072 + 0xB0080000, // 0071 RAISE 2 R0 R0 + 0x80000000, // 0072 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete_deferred +********************************************************************/ +be_local_closure(class_Matter_Commissioning_start_commissioning_complete_deferred, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(start_commissioning_complete_deferred), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A1000, // 0000 GETNGBL R2 K8 + 0x8C080541, // 0001 GETMET R2 R2 K65 + 0x58100015, // 0002 LDCONST R4 K21 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(class_Matter_Commissioning_every_second, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060006, // 0003 JMPF R1 #000B + 0xB8061000, // 0004 GETNGBL R1 K8 + 0x8C04036B, // 0005 GETMET R1 R1 K107 + 0x880C010C, // 0006 GETMBR R3 R0 K12 + 0x7C040400, // 0007 CALL R1 2 + 0x78060001, // 0008 JMPF R1 #000B + 0x4C040000, // 0009 LDNIL R1 + 0x90021801, // 000A SETMBR R0 K12 R1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mdns_announce_PASE +********************************************************************/ +be_local_closure(class_Matter_Commissioning_mdns_announce_PASE, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Commissioning, /* shared constants */ + be_str_weak(mdns_announce_PASE), + &be_const_str_solidified, + ( &(const binstruction[226]) { /* code */ + 0xA4064600, // 0000 IMPORT R1 K35 + 0xA40A8400, // 0001 IMPORT R2 K66 + 0x600C0013, // 0002 GETGBL R3 G19 + 0x7C0C0000, // 0003 CALL R3 0 + 0x60100018, // 0004 GETGBL R4 G24 + 0x5814006D, // 0005 LDCONST R5 K109 + 0x88180100, // 0006 GETMBR R6 R0 K0 + 0x88180D1A, // 0007 GETMBR R6 R6 K26 + 0x881C0100, // 0008 GETMBR R7 R0 K0 + 0x881C0F1B, // 0009 GETMBR R7 R7 K27 + 0x7C100600, // 000A CALL R4 3 + 0x980ED804, // 000B SETIDX R3 K108 R4 + 0x8810010F, // 000C GETMBR R4 R0 K15 + 0x980EDC04, // 000D SETIDX R3 K110 R4 + 0x980EDF70, // 000E SETIDX R3 K111 K112 + 0x980EE315, // 000F SETIDX R3 K113 K21 + 0x54121387, // 0010 LDINT R4 5000 + 0x980EE404, // 0011 SETIDX R3 K114 R4 + 0x5412012B, // 0012 LDINT R4 300 + 0x980EE604, // 0013 SETIDX R3 K115 R4 + 0x8C100559, // 0014 GETMET R4 R2 K89 + 0x541A0007, // 0015 LDINT R6 8 + 0x7C100400, // 0016 CALL R4 2 + 0x8C10093B, // 0017 GETMET R4 R4 K59 + 0x7C100200, // 0018 CALL R4 1 + 0x90025E04, // 0019 SETMBR R0 K47 R4 + 0x8C100559, // 001A GETMET R4 R2 K89 + 0x541A0007, // 001B LDINT R6 8 + 0x7C100400, // 001C CALL R4 2 + 0x8C10093B, // 001D GETMET R4 R4 K59 + 0x7C100200, // 001E CALL R4 1 + 0x90025204, // 001F SETMBR R0 K41 R4 + 0xA80200AF, // 0020 EXBLK 0 #00D1 + 0x8810012A, // 0021 GETMBR R4 R0 K42 + 0x78120054, // 0022 JMPF R4 #0078 + 0x8C100367, // 0023 GETMET R4 R1 K103 + 0x58180027, // 0024 LDCONST R6 K39 + 0x581C0028, // 0025 LDCONST R7 K40 + 0x542215A3, // 0026 LDINT R8 5540 + 0x5C240600, // 0027 MOVE R9 R3 + 0x88280129, // 0028 GETMBR R10 R0 K41 + 0x882C012A, // 0029 GETMBR R11 R0 K42 + 0x7C100E00, // 002A CALL R4 7 + 0x50100200, // 002B LDBOOL R4 1 0 + 0x90024804, // 002C SETMBR R0 K36 R4 + 0xB8124A00, // 002D GETNGBL R4 K37 + 0x60140018, // 002E GETGBL R5 G24 + 0x58180074, // 002F LDCONST R6 K116 + 0x581C002C, // 0030 LDCONST R7 K44 + 0x88200129, // 0031 GETMBR R8 R0 K41 + 0x8824012A, // 0032 GETMBR R9 R0 K42 + 0x7C140800, // 0033 CALL R5 4 + 0x58180034, // 0034 LDCONST R6 K52 + 0x7C100400, // 0035 CALL R4 2 + 0x60100008, // 0036 GETGBL R4 G8 + 0x8814010F, // 0037 GETMBR R5 R0 K15 + 0x541A0FFE, // 0038 LDINT R6 4095 + 0x2C140A06, // 0039 AND R5 R5 R6 + 0x7C100200, // 003A CALL R4 1 + 0x0012EA04, // 003B ADD R4 K117 R4 + 0xB8164A00, // 003C GETNGBL R5 K37 + 0x001AD204, // 003D ADD R6 K105 R4 + 0x581C0019, // 003E LDCONST R7 K25 + 0x7C140400, // 003F CALL R5 2 + 0x8C14036A, // 0040 GETMET R5 R1 K106 + 0x581C0027, // 0041 LDCONST R7 K39 + 0x58200028, // 0042 LDCONST R8 K40 + 0x88240129, // 0043 GETMBR R9 R0 K41 + 0x8828012A, // 0044 GETMBR R10 R0 K42 + 0x5C2C0800, // 0045 MOVE R11 R4 + 0x7C140C00, // 0046 CALL R5 6 + 0x60140008, // 0047 GETGBL R5 G8 + 0x8818010F, // 0048 GETMBR R6 R0 K15 + 0x541E0EFF, // 0049 LDINT R7 3840 + 0x2C180C07, // 004A AND R6 R6 R7 + 0x541E0007, // 004B LDINT R7 8 + 0x3C180C07, // 004C SHR R6 R6 R7 + 0x7C140200, // 004D CALL R5 1 + 0x0016EC05, // 004E ADD R5 K118 R5 + 0x5C100A00, // 004F MOVE R4 R5 + 0xB8164A00, // 0050 GETNGBL R5 K37 + 0x001AD204, // 0051 ADD R6 K105 R4 + 0x581C0019, // 0052 LDCONST R7 K25 + 0x7C140400, // 0053 CALL R5 2 + 0x8C14036A, // 0054 GETMET R5 R1 K106 + 0x581C0027, // 0055 LDCONST R7 K39 + 0x58200028, // 0056 LDCONST R8 K40 + 0x88240129, // 0057 GETMBR R9 R0 K41 + 0x8828012A, // 0058 GETMBR R10 R0 K42 + 0x5C2C0800, // 0059 MOVE R11 R4 + 0x7C140C00, // 005A CALL R5 6 + 0x60140008, // 005B GETGBL R5 G8 + 0x88180100, // 005C GETMBR R6 R0 K0 + 0x88180D1A, // 005D GETMBR R6 R6 K26 + 0x7C140200, // 005E CALL R5 1 + 0x0016EE05, // 005F ADD R5 K119 R5 + 0x5C100A00, // 0060 MOVE R4 R5 + 0xB8164A00, // 0061 GETNGBL R5 K37 + 0x001AD204, // 0062 ADD R6 K105 R4 + 0x581C0019, // 0063 LDCONST R7 K25 + 0x7C140400, // 0064 CALL R5 2 + 0x8C14036A, // 0065 GETMET R5 R1 K106 + 0x581C0027, // 0066 LDCONST R7 K39 + 0x58200028, // 0067 LDCONST R8 K40 + 0x88240129, // 0068 GETMBR R9 R0 K41 + 0x8828012A, // 0069 GETMBR R10 R0 K42 + 0x5C2C0800, // 006A MOVE R11 R4 + 0x7C140C00, // 006B CALL R5 6 + 0x58100078, // 006C LDCONST R4 K120 + 0xB8164A00, // 006D GETNGBL R5 K37 + 0x001AD204, // 006E ADD R6 K105 R4 + 0x581C0019, // 006F LDCONST R7 K25 + 0x7C140400, // 0070 CALL R5 2 + 0x8C14036A, // 0071 GETMET R5 R1 K106 + 0x581C0027, // 0072 LDCONST R7 K39 + 0x58200028, // 0073 LDCONST R8 K40 + 0x88240129, // 0074 GETMBR R9 R0 K41 + 0x8828012A, // 0075 GETMBR R10 R0 K42 + 0x5C2C0800, // 0076 MOVE R11 R4 + 0x7C140C00, // 0077 CALL R5 6 + 0x88100130, // 0078 GETMBR R4 R0 K48 + 0x78120054, // 0079 JMPF R4 #00CF + 0x8C100367, // 007A GETMET R4 R1 K103 + 0x58180027, // 007B LDCONST R6 K39 + 0x581C0028, // 007C LDCONST R7 K40 + 0x542215A3, // 007D LDINT R8 5540 + 0x5C240600, // 007E MOVE R9 R3 + 0x8828012F, // 007F GETMBR R10 R0 K47 + 0x882C0130, // 0080 GETMBR R11 R0 K48 + 0x7C100E00, // 0081 CALL R4 7 + 0x50100200, // 0082 LDBOOL R4 1 0 + 0x90025C04, // 0083 SETMBR R0 K46 R4 + 0xB8124A00, // 0084 GETNGBL R4 K37 + 0x60140018, // 0085 GETGBL R5 G24 + 0x58180079, // 0086 LDCONST R6 K121 + 0x581C0031, // 0087 LDCONST R7 K49 + 0x8820012F, // 0088 GETMBR R8 R0 K47 + 0x88240130, // 0089 GETMBR R9 R0 K48 + 0x7C140800, // 008A CALL R5 4 + 0x58180019, // 008B LDCONST R6 K25 + 0x7C100400, // 008C CALL R4 2 + 0x60100008, // 008D GETGBL R4 G8 + 0x8814010F, // 008E GETMBR R5 R0 K15 + 0x541A0FFE, // 008F LDINT R6 4095 + 0x2C140A06, // 0090 AND R5 R5 R6 + 0x7C100200, // 0091 CALL R4 1 + 0x0012EA04, // 0092 ADD R4 K117 R4 + 0xB8164A00, // 0093 GETNGBL R5 K37 + 0x001AD204, // 0094 ADD R6 K105 R4 + 0x581C0019, // 0095 LDCONST R7 K25 + 0x7C140400, // 0096 CALL R5 2 + 0x8C14036A, // 0097 GETMET R5 R1 K106 + 0x581C0027, // 0098 LDCONST R7 K39 + 0x58200028, // 0099 LDCONST R8 K40 + 0x8824012F, // 009A GETMBR R9 R0 K47 + 0x88280130, // 009B GETMBR R10 R0 K48 + 0x5C2C0800, // 009C MOVE R11 R4 + 0x7C140C00, // 009D CALL R5 6 + 0x60140008, // 009E GETGBL R5 G8 + 0x8818010F, // 009F GETMBR R6 R0 K15 + 0x541E0EFF, // 00A0 LDINT R7 3840 + 0x2C180C07, // 00A1 AND R6 R6 R7 + 0x541E0007, // 00A2 LDINT R7 8 + 0x3C180C07, // 00A3 SHR R6 R6 R7 + 0x7C140200, // 00A4 CALL R5 1 + 0x0016EC05, // 00A5 ADD R5 K118 R5 + 0x5C100A00, // 00A6 MOVE R4 R5 + 0xB8164A00, // 00A7 GETNGBL R5 K37 + 0x001AD204, // 00A8 ADD R6 K105 R4 + 0x581C0019, // 00A9 LDCONST R7 K25 + 0x7C140400, // 00AA CALL R5 2 + 0x8C14036A, // 00AB GETMET R5 R1 K106 + 0x581C0027, // 00AC LDCONST R7 K39 + 0x58200028, // 00AD LDCONST R8 K40 + 0x8824012F, // 00AE GETMBR R9 R0 K47 + 0x88280130, // 00AF GETMBR R10 R0 K48 + 0x5C2C0800, // 00B0 MOVE R11 R4 + 0x7C140C00, // 00B1 CALL R5 6 + 0x60140008, // 00B2 GETGBL R5 G8 + 0x88180100, // 00B3 GETMBR R6 R0 K0 + 0x88180D1A, // 00B4 GETMBR R6 R6 K26 + 0x7C140200, // 00B5 CALL R5 1 + 0x0016EE05, // 00B6 ADD R5 K119 R5 + 0x5C100A00, // 00B7 MOVE R4 R5 + 0xB8164A00, // 00B8 GETNGBL R5 K37 + 0x001AD204, // 00B9 ADD R6 K105 R4 + 0x581C0019, // 00BA LDCONST R7 K25 + 0x7C140400, // 00BB CALL R5 2 + 0x8C14036A, // 00BC GETMET R5 R1 K106 + 0x581C0027, // 00BD LDCONST R7 K39 + 0x58200028, // 00BE LDCONST R8 K40 + 0x8824012F, // 00BF GETMBR R9 R0 K47 + 0x88280130, // 00C0 GETMBR R10 R0 K48 + 0x5C2C0800, // 00C1 MOVE R11 R4 + 0x7C140C00, // 00C2 CALL R5 6 + 0x58100078, // 00C3 LDCONST R4 K120 + 0xB8164A00, // 00C4 GETNGBL R5 K37 + 0x001AD204, // 00C5 ADD R6 K105 R4 + 0x581C0019, // 00C6 LDCONST R7 K25 + 0x7C140400, // 00C7 CALL R5 2 + 0x8C14036A, // 00C8 GETMET R5 R1 K106 + 0x581C0027, // 00C9 LDCONST R7 K39 + 0x58200028, // 00CA LDCONST R8 K40 + 0x8824012F, // 00CB GETMBR R9 R0 K47 + 0x88280130, // 00CC GETMBR R10 R0 K48 + 0x5C2C0800, // 00CD MOVE R11 R4 + 0x7C140C00, // 00CE CALL R5 6 + 0xA8040001, // 00CF EXBLK 1 1 + 0x7002000F, // 00D0 JMP #00E1 + 0xAC100002, // 00D1 CATCH R4 0 2 + 0x7002000C, // 00D2 JMP #00E0 + 0xB81A4A00, // 00D3 GETNGBL R6 K37 + 0x601C0008, // 00D4 GETGBL R7 G8 + 0x5C200800, // 00D5 MOVE R8 R4 + 0x7C1C0200, // 00D6 CALL R7 1 + 0x001E6407, // 00D7 ADD R7 K50 R7 + 0x001C0F33, // 00D8 ADD R7 R7 K51 + 0x60200008, // 00D9 GETGBL R8 G8 + 0x5C240A00, // 00DA MOVE R9 R5 + 0x7C200200, // 00DB CALL R8 1 + 0x001C0E08, // 00DC ADD R7 R7 R8 + 0x58200034, // 00DD LDCONST R8 K52 + 0x7C180400, // 00DE CALL R6 2 + 0x70020000, // 00DF JMP #00E1 + 0xB0080000, // 00E0 RAISE 2 R0 R0 + 0x80000000, // 00E1 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: start_basic_commissioning ********************************************************************/ @@ -613,7 +1629,7 @@ be_local_closure(class_Matter_Commissioning_start_basic_commissioning, /* name &be_const_str_solidified, ( &(const binstruction[40]) { /* code */ 0xB8221000, // 0000 GETNGBL R8 K8 - 0x8C20113D, // 0001 GETMET R8 R8 K61 + 0x8C20117A, // 0001 GETMET R8 R8 K122 0x7C200200, // 0002 CALL R8 1 0x542603E7, // 0003 LDINT R9 1000 0x08240209, // 0004 MUL R9 R1 R9 @@ -626,29 +1642,29 @@ be_local_closure(class_Matter_Commissioning_start_basic_commissioning, /* name 0x90022406, // 000B SETMBR R0 K18 R6 0x90022607, // 000C SETMBR R0 K19 R7 0xB8221000, // 000D GETNGBL R8 K8 - 0x8C201139, // 000E GETMET R8 R8 K57 + 0x8C201131, // 000E GETMET R8 R8 K49 0x7C200200, // 000F CALL R8 1 - 0x94201133, // 0010 GETIDX R8 R8 K51 + 0x9420113E, // 0010 GETIDX R8 R8 K62 0x74220004, // 0011 JMPT R8 #0017 0xB8221000, // 0012 GETNGBL R8 K8 - 0x8C201131, // 0013 GETMET R8 R8 K49 + 0x8C20112C, // 0013 GETMET R8 R8 K44 0x7C200200, // 0014 CALL R8 1 - 0x94201133, // 0015 GETIDX R8 R8 K51 + 0x9420113E, // 0015 GETIDX R8 R8 K62 0x78220002, // 0016 JMPF R8 #001A - 0x8C20013E, // 0017 GETMET R8 R0 K62 + 0x8C20017B, // 0017 GETMET R8 R0 K123 0x7C200200, // 0018 CALL R8 1 0x7002000B, // 0019 JMP #0026 0xB8221000, // 001A GETNGBL R8 K8 - 0x8C20113F, // 001B GETMET R8 R8 K63 - 0x58280040, // 001C LDCONST R10 K64 + 0x8C20117C, // 001B GETMET R8 R8 K124 + 0x5828007D, // 001C LDCONST R10 K125 0x842C0000, // 001D CLOSURE R11 P0 - 0x5830003E, // 001E LDCONST R12 K62 + 0x5830007B, // 001E LDCONST R12 K123 0x7C200800, // 001F CALL R8 4 0xB8221000, // 0020 GETNGBL R8 K8 - 0x8C20113F, // 0021 GETMET R8 R8 K63 - 0x58280041, // 0022 LDCONST R10 K65 + 0x8C20117C, // 0021 GETMET R8 R8 K124 + 0x5828007E, // 0022 LDCONST R10 K126 0x842C0001, // 0023 CLOSURE R11 P1 - 0x5830003E, // 0024 LDCONST R12 K62 + 0x5830007B, // 0024 LDCONST R12 K123 0x7C200800, // 0025 CALL R8 4 0xA0000000, // 0026 CLOSE R0 0x80000000, // 0027 RET 0 @@ -658,845 +1674,6 @@ be_local_closure(class_Matter_Commissioning_start_basic_commissioning, /* name /*******************************************************************/ -/******************************************************************** -** Solidified function: start_operational_discovery_deferred -********************************************************************/ -be_local_closure(class_Matter_Commissioning_start_operational_discovery_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_discovery), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(start_operational_discovery_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A1000, // 0000 GETNGBL R2 K8 - 0x8C080542, // 0001 GETMET R2 R2 K66 - 0x58100043, // 0002 LDCONST R4 K67 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _mdns_announce_hostname -********************************************************************/ -be_local_closure(class_Matter_Commissioning__mdns_announce_hostname, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(_mdns_announce_hostname), - &be_const_str_solidified, - ( &(const binstruction[146]) { /* code */ - 0xA40A5000, // 0000 IMPORT R2 K40 - 0xA40E8800, // 0001 IMPORT R3 K68 - 0x8C100545, // 0002 GETMET R4 R2 K69 - 0x7C100200, // 0003 CALL R4 1 - 0xA8020079, // 0004 EXBLK 0 #007F - 0x78060034, // 0005 JMPF R1 #003B - 0xB8121000, // 0006 GETNGBL R4 K8 - 0x8C100931, // 0007 GETMET R4 R4 K49 - 0x7C100200, // 0008 CALL R4 1 - 0x8C140746, // 0009 GETMET R5 R3 K70 - 0x8C1C0932, // 000A GETMET R7 R4 K50 - 0x58240047, // 000B LDCONST R9 K71 - 0x7C1C0400, // 000C CALL R7 2 - 0x58200048, // 000D LDCONST R8 K72 - 0x58240049, // 000E LDCONST R9 K73 - 0x7C140800, // 000F CALL R5 4 - 0x90027005, // 0010 SETMBR R0 K56 R5 - 0x88140100, // 0011 GETMBR R5 R0 K0 - 0x88140B4A, // 0012 GETMBR R5 R5 K74 - 0x78160003, // 0013 JMPF R5 #0018 - 0x8C14094B, // 0014 GETMET R5 R4 K75 - 0x581C004C, // 0015 LDCONST R7 K76 - 0x7C140400, // 0016 CALL R5 2 - 0x7416000F, // 0017 JMPT R5 #0028 - 0x8C14054D, // 0018 GETMET R5 R2 K77 - 0x881C0138, // 0019 GETMBR R7 R0 K56 - 0x8C200932, // 001A GETMET R8 R4 K50 - 0x5828004C, // 001B LDCONST R10 K76 - 0x582C0049, // 001C LDCONST R11 K73 - 0x7C200600, // 001D CALL R8 3 - 0x8C240932, // 001E GETMET R9 R4 K50 - 0x582C004E, // 001F LDCONST R11 K78 - 0x58300049, // 0020 LDCONST R12 K73 - 0x7C240600, // 0021 CALL R9 3 - 0x8C280932, // 0022 GETMET R10 R4 K50 - 0x5830004F, // 0023 LDCONST R12 K79 - 0x58340049, // 0024 LDCONST R13 K73 - 0x7C280600, // 0025 CALL R10 3 - 0x7C140A00, // 0026 CALL R5 5 - 0x70020011, // 0027 JMP #003A - 0xB8163400, // 0028 GETNGBL R5 K26 - 0x60180018, // 0029 GETGBL R6 G24 - 0x581C0050, // 002A LDCONST R7 K80 - 0x88200138, // 002B GETMBR R8 R0 K56 - 0x8C240932, // 002C GETMET R9 R4 K50 - 0x582C004E, // 002D LDCONST R11 K78 - 0x58300049, // 002E LDCONST R12 K73 - 0x7C240600, // 002F CALL R9 3 - 0x7C180600, // 0030 CALL R6 3 - 0x581C0020, // 0031 LDCONST R7 K32 - 0x7C140400, // 0032 CALL R5 2 - 0x8C14054D, // 0033 GETMET R5 R2 K77 - 0x881C0138, // 0034 GETMBR R7 R0 K56 - 0x8C200932, // 0035 GETMET R8 R4 K50 - 0x5828004E, // 0036 LDCONST R10 K78 - 0x582C0049, // 0037 LDCONST R11 K73 - 0x7C200600, // 0038 CALL R8 3 - 0x7C140600, // 0039 CALL R5 3 - 0x70020033, // 003A JMP #006F - 0xB8121000, // 003B GETNGBL R4 K8 - 0x8C100939, // 003C GETMET R4 R4 K57 - 0x7C100200, // 003D CALL R4 1 - 0x8C140746, // 003E GETMET R5 R3 K70 - 0x8C1C0932, // 003F GETMET R7 R4 K50 - 0x58240047, // 0040 LDCONST R9 K71 - 0x7C1C0400, // 0041 CALL R7 2 - 0x58200048, // 0042 LDCONST R8 K72 - 0x58240049, // 0043 LDCONST R9 K73 - 0x7C140800, // 0044 CALL R5 4 - 0x90027405, // 0045 SETMBR R0 K58 R5 - 0x88140100, // 0046 GETMBR R5 R0 K0 - 0x88140B4A, // 0047 GETMBR R5 R5 K74 - 0x78160003, // 0048 JMPF R5 #004D - 0x8C14094B, // 0049 GETMET R5 R4 K75 - 0x581C004C, // 004A LDCONST R7 K76 - 0x7C140400, // 004B CALL R5 2 - 0x7416000F, // 004C JMPT R5 #005D - 0x8C14054D, // 004D GETMET R5 R2 K77 - 0x881C013A, // 004E GETMBR R7 R0 K58 - 0x8C200932, // 004F GETMET R8 R4 K50 - 0x5828004C, // 0050 LDCONST R10 K76 - 0x582C0049, // 0051 LDCONST R11 K73 - 0x7C200600, // 0052 CALL R8 3 - 0x8C240932, // 0053 GETMET R9 R4 K50 - 0x582C004E, // 0054 LDCONST R11 K78 - 0x58300049, // 0055 LDCONST R12 K73 - 0x7C240600, // 0056 CALL R9 3 - 0x8C280932, // 0057 GETMET R10 R4 K50 - 0x5830004F, // 0058 LDCONST R12 K79 - 0x58340049, // 0059 LDCONST R13 K73 - 0x7C280600, // 005A CALL R10 3 - 0x7C140A00, // 005B CALL R5 5 - 0x70020011, // 005C JMP #006F - 0xB8163400, // 005D GETNGBL R5 K26 - 0x60180018, // 005E GETGBL R6 G24 - 0x581C0050, // 005F LDCONST R7 K80 - 0x8820013A, // 0060 GETMBR R8 R0 K58 - 0x8C240932, // 0061 GETMET R9 R4 K50 - 0x582C004E, // 0062 LDCONST R11 K78 - 0x58300049, // 0063 LDCONST R12 K73 - 0x7C240600, // 0064 CALL R9 3 - 0x7C180600, // 0065 CALL R6 3 - 0x581C0020, // 0066 LDCONST R7 K32 - 0x7C140400, // 0067 CALL R5 2 - 0x8C14054D, // 0068 GETMET R5 R2 K77 - 0x881C013A, // 0069 GETMBR R7 R0 K58 - 0x8C200932, // 006A GETMET R8 R4 K50 - 0x5828004E, // 006B LDCONST R10 K78 - 0x582C0049, // 006C LDCONST R11 K73 - 0x7C200600, // 006D CALL R8 3 - 0x7C140600, // 006E CALL R5 3 - 0xB8123400, // 006F GETNGBL R4 K26 - 0x60140018, // 0070 GETGBL R5 G24 - 0x58180051, // 0071 LDCONST R6 K81 - 0x78060001, // 0072 JMPF R1 #0075 - 0x581C0031, // 0073 LDCONST R7 K49 - 0x70020000, // 0074 JMP #0076 - 0x581C0039, // 0075 LDCONST R7 K57 - 0x78060001, // 0076 JMPF R1 #0079 - 0x88200138, // 0077 GETMBR R8 R0 K56 - 0x70020000, // 0078 JMP #007A - 0x8820013A, // 0079 GETMBR R8 R0 K58 - 0x7C140600, // 007A CALL R5 3 - 0x58180020, // 007B LDCONST R6 K32 - 0x7C100400, // 007C CALL R4 2 - 0xA8040001, // 007D EXBLK 1 1 - 0x7002000F, // 007E JMP #008F - 0xAC100002, // 007F CATCH R4 0 2 - 0x7002000C, // 0080 JMP #008E - 0xB81A3400, // 0081 GETNGBL R6 K26 - 0x601C0008, // 0082 GETGBL R7 G8 - 0x5C200800, // 0083 MOVE R8 R4 - 0x7C1C0200, // 0084 CALL R7 1 - 0x001E7607, // 0085 ADD R7 K59 R7 - 0x001C0F3C, // 0086 ADD R7 R7 K60 - 0x60200008, // 0087 GETGBL R8 G8 - 0x5C240A00, // 0088 MOVE R9 R5 - 0x7C200200, // 0089 CALL R8 1 - 0x001C0E08, // 008A ADD R7 R7 R8 - 0x5820001C, // 008B LDCONST R8 K28 - 0x7C180400, // 008C CALL R6 2 - 0x70020000, // 008D JMP #008F - 0xB0080000, // 008E RAISE 2 R0 R0 - 0x8C100152, // 008F GETMET R4 R0 K82 - 0x7C100200, // 0090 CALL R4 1 - 0x80000000, // 0091 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_fabrics -********************************************************************/ -be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(mdns_announce_op_discovery_all_fabrics), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8808052A, // 0002 GETMBR R2 R2 K42 - 0x8C08052B, // 0003 GETMET R2 R2 K43 - 0x7C080200, // 0004 CALL R2 1 - 0x7C040200, // 0005 CALL R1 1 - 0xA802000B, // 0006 EXBLK 0 #0013 - 0x5C080200, // 0007 MOVE R2 R1 - 0x7C080000, // 0008 CALL R2 0 - 0x8C0C052C, // 0009 GETMET R3 R2 K44 - 0x7C0C0200, // 000A CALL R3 1 - 0x780E0005, // 000B JMPF R3 #0012 - 0x8C0C0515, // 000C GETMET R3 R2 K21 - 0x7C0C0200, // 000D CALL R3 1 - 0x780E0002, // 000E JMPF R3 #0012 - 0x8C0C0129, // 000F GETMET R3 R0 K41 - 0x5C140400, // 0010 MOVE R5 R2 - 0x7C0C0400, // 0011 CALL R3 2 - 0x7001FFF3, // 0012 JMP #0007 - 0x5804002E, // 0013 LDCONST R1 K46 - 0xAC040200, // 0014 CATCH R1 1 0 - 0xB0080000, // 0015 RAISE 2 R0 R0 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete_deferred -********************************************************************/ -be_local_closure(class_Matter_Commissioning_start_commissioning_complete_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(start_commissioning_complete_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A1000, // 0000 GETNGBL R2 K8 - 0x8C080542, // 0001 GETMET R2 R2 K66 - 0x58100043, // 0002 LDCONST R4 K67 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_random_passcode -********************************************************************/ -be_local_closure(class_Matter_Commissioning_generate_random_passcode, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(generate_random_passcode), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4064E00, // 0000 IMPORT R1 K39 - 0x4C080000, // 0001 LDNIL R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x780E001D, // 0003 JMPF R3 #0022 - 0x8C0C0353, // 0004 GETMET R3 R1 K83 - 0x54160003, // 0005 LDINT R5 4 - 0x7C0C0400, // 0006 CALL R3 2 - 0x8C0C0754, // 0007 GETMET R3 R3 K84 - 0x58140043, // 0008 LDCONST R5 K67 - 0x541A0003, // 0009 LDINT R6 4 - 0x7C0C0600, // 000A CALL R3 3 - 0x2C0C0723, // 000B AND R3 R3 K35 - 0x5C080600, // 000C MOVE R2 R3 - 0x240C0555, // 000D GT R3 R2 K85 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7001FFF1, // 000F JMP #0002 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100156, // 0011 GETMBR R4 R0 K86 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x1C140404, // 0016 EQ R5 R2 R4 - 0x78160000, // 0017 JMPF R5 #0019 - 0x4C080000, // 0018 LDNIL R2 - 0x7001FFF9, // 0019 JMP #0014 - 0x580C002E, // 001A LDCONST R3 K46 - 0xAC0C0200, // 001B CATCH R3 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x4C0C0000, // 001D LDNIL R3 - 0x200C0403, // 001E NE R3 R2 R3 - 0x780E0000, // 001F JMPF R3 #0021 - 0x80040400, // 0020 RET 1 R2 - 0x7001FFDF, // 0021 JMP #0002 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_op_discovery -********************************************************************/ -be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(mdns_announce_op_discovery), - &be_const_str_solidified, - ( &(const binstruction[115]) { /* code */ - 0xA40A5000, // 0000 IMPORT R2 K40 - 0xA802005F, // 0001 EXBLK 0 #0062 - 0x8C0C032C, // 0002 GETMET R3 R1 K44 - 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0716, // 0004 GETMET R3 R3 K22 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C0717, // 0006 GETMET R3 R3 K23 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C10032F, // 0008 GETMET R4 R1 K47 - 0x7C100200, // 0009 CALL R4 1 - 0x8C140918, // 000A GETMET R5 R4 K24 - 0x7C140200, // 000B CALL R5 1 - 0x00140B30, // 000C ADD R5 R5 K48 - 0x8C180718, // 000D GETMET R6 R3 K24 - 0x7C180200, // 000E CALL R6 1 - 0x00140A06, // 000F ADD R5 R5 R6 - 0xB81A3400, // 0010 GETNGBL R6 K26 - 0x001EAE05, // 0011 ADD R7 K87 R5 - 0x58200020, // 0012 LDCONST R8 K32 - 0x7C180400, // 0013 CALL R6 2 - 0xB81A1000, // 0014 GETNGBL R6 K8 - 0x8C180D31, // 0015 GETMET R6 R6 K49 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180D32, // 0017 GETMET R6 R6 K50 - 0x58200033, // 0018 LDCONST R8 K51 - 0x7C180400, // 0019 CALL R6 2 - 0x781A001E, // 001A JMPF R6 #003A - 0xB81A3400, // 001B GETNGBL R6 K26 - 0x601C0018, // 001C GETGBL R7 G24 - 0x58200058, // 001D LDCONST R8 K88 - 0x58240031, // 001E LDCONST R9 K49 - 0x5C280A00, // 001F MOVE R10 R5 - 0x882C0138, // 0020 GETMBR R11 R0 K56 - 0x7C1C0800, // 0021 CALL R7 4 - 0x58200020, // 0022 LDCONST R8 K32 - 0x7C180400, // 0023 CALL R6 2 - 0x8C180559, // 0024 GETMET R6 R2 K89 - 0x58200036, // 0025 LDCONST R8 K54 - 0x58240037, // 0026 LDCONST R9 K55 - 0x542A15A3, // 0027 LDINT R10 5540 - 0x4C2C0000, // 0028 LDNIL R11 - 0x5C300A00, // 0029 MOVE R12 R5 - 0x88340138, // 002A GETMBR R13 R0 K56 - 0x7C180E00, // 002B CALL R6 7 - 0x8C180918, // 002C GETMET R6 R4 K24 - 0x7C180200, // 002D CALL R6 1 - 0x001AB406, // 002E ADD R6 K90 R6 - 0xB81E3400, // 002F GETNGBL R7 K26 - 0x0022B606, // 0030 ADD R8 K91 R6 - 0x58240020, // 0031 LDCONST R9 K32 - 0x7C1C0400, // 0032 CALL R7 2 - 0x8C1C055C, // 0033 GETMET R7 R2 K92 - 0x58240036, // 0034 LDCONST R9 K54 - 0x58280037, // 0035 LDCONST R10 K55 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x88300138, // 0037 GETMBR R12 R0 K56 - 0x5C340C00, // 0038 MOVE R13 R6 - 0x7C1C0C00, // 0039 CALL R7 6 - 0xB81A1000, // 003A GETNGBL R6 K8 - 0x8C180D39, // 003B GETMET R6 R6 K57 - 0x7C180200, // 003C CALL R6 1 - 0x8C180D32, // 003D GETMET R6 R6 K50 - 0x58200033, // 003E LDCONST R8 K51 - 0x7C180400, // 003F CALL R6 2 - 0x781A001E, // 0040 JMPF R6 #0060 - 0xB81A3400, // 0041 GETNGBL R6 K26 - 0x601C0018, // 0042 GETGBL R7 G24 - 0x58200058, // 0043 LDCONST R8 K88 - 0x58240039, // 0044 LDCONST R9 K57 - 0x5C280A00, // 0045 MOVE R10 R5 - 0x882C013A, // 0046 GETMBR R11 R0 K58 - 0x7C1C0800, // 0047 CALL R7 4 - 0x58200020, // 0048 LDCONST R8 K32 - 0x7C180400, // 0049 CALL R6 2 - 0x8C180559, // 004A GETMET R6 R2 K89 - 0x58200036, // 004B LDCONST R8 K54 - 0x58240037, // 004C LDCONST R9 K55 - 0x542A15A3, // 004D LDINT R10 5540 - 0x4C2C0000, // 004E LDNIL R11 - 0x5C300A00, // 004F MOVE R12 R5 - 0x8834013A, // 0050 GETMBR R13 R0 K58 - 0x7C180E00, // 0051 CALL R6 7 - 0x8C180918, // 0052 GETMET R6 R4 K24 - 0x7C180200, // 0053 CALL R6 1 - 0x001AB406, // 0054 ADD R6 K90 R6 - 0xB81E3400, // 0055 GETNGBL R7 K26 - 0x0022B606, // 0056 ADD R8 K91 R6 - 0x58240020, // 0057 LDCONST R9 K32 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C1C055C, // 0059 GETMET R7 R2 K92 - 0x58240036, // 005A LDCONST R9 K54 - 0x58280037, // 005B LDCONST R10 K55 - 0x5C2C0A00, // 005C MOVE R11 R5 - 0x8830013A, // 005D GETMBR R12 R0 K58 - 0x5C340C00, // 005E MOVE R13 R6 - 0x7C1C0C00, // 005F CALL R7 6 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7002000F, // 0061 JMP #0072 - 0xAC0C0002, // 0062 CATCH R3 0 2 - 0x7002000C, // 0063 JMP #0071 - 0xB8163400, // 0064 GETNGBL R5 K26 - 0x60180008, // 0065 GETGBL R6 G8 - 0x5C1C0600, // 0066 MOVE R7 R3 - 0x7C180200, // 0067 CALL R6 1 - 0x001A7606, // 0068 ADD R6 K59 R6 - 0x00180D3C, // 0069 ADD R6 R6 K60 - 0x601C0008, // 006A GETGBL R7 G8 - 0x5C200800, // 006B MOVE R8 R4 - 0x7C1C0200, // 006C CALL R7 1 - 0x00180C07, // 006D ADD R6 R6 R7 - 0x581C001C, // 006E LDCONST R7 K28 - 0x7C140400, // 006F CALL R5 2 - 0x70020000, // 0070 JMP #0072 - 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x80000000, // 0072 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(class_Matter_Commissioning_every_second, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060006, // 0003 JMPF R1 #000B - 0xB8061000, // 0004 GETNGBL R1 K8 - 0x8C04035D, // 0005 GETMET R1 R1 K93 - 0x880C010C, // 0006 GETMBR R3 R0 K12 - 0x7C040400, // 0007 CALL R1 2 - 0x78060001, // 0008 JMPF R1 #000B - 0x4C040000, // 0009 LDNIL R1 - 0x90021801, // 000A SETMBR R0 K12 R1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_announce_PASE -********************************************************************/ -be_local_closure(class_Matter_Commissioning_mdns_announce_PASE, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(mdns_announce_PASE), - &be_const_str_solidified, - ( &(const binstruction[226]) { /* code */ - 0xA4065000, // 0000 IMPORT R1 K40 - 0xA40A4E00, // 0001 IMPORT R2 K39 - 0x600C0013, // 0002 GETGBL R3 G19 - 0x7C0C0000, // 0003 CALL R3 0 - 0x60100018, // 0004 GETGBL R4 G24 - 0x5814005F, // 0005 LDCONST R5 K95 - 0x88180100, // 0006 GETMBR R6 R0 K0 - 0x88180D21, // 0007 GETMBR R6 R6 K33 - 0x881C0100, // 0008 GETMBR R7 R0 K0 - 0x881C0F22, // 0009 GETMBR R7 R7 K34 - 0x7C100600, // 000A CALL R4 3 - 0x980EBC04, // 000B SETIDX R3 K94 R4 - 0x8810010F, // 000C GETMBR R4 R0 K15 - 0x980EC004, // 000D SETIDX R3 K96 R4 - 0x980EC362, // 000E SETIDX R3 K97 K98 - 0x980EC743, // 000F SETIDX R3 K99 K67 - 0x54121387, // 0010 LDINT R4 5000 - 0x980EC804, // 0011 SETIDX R3 K100 R4 - 0x5412012B, // 0012 LDINT R4 300 - 0x980ECA04, // 0013 SETIDX R3 K101 R4 - 0x8C100553, // 0014 GETMET R4 R2 K83 - 0x541A0007, // 0015 LDINT R6 8 - 0x7C100400, // 0016 CALL R4 2 - 0x8C100918, // 0017 GETMET R4 R4 K24 - 0x7C100200, // 0018 CALL R4 1 - 0x9002CC04, // 0019 SETMBR R0 K102 R4 - 0x8C100553, // 001A GETMET R4 R2 K83 - 0x541A0007, // 001B LDINT R6 8 - 0x7C100400, // 001C CALL R4 2 - 0x8C100918, // 001D GETMET R4 R4 K24 - 0x7C100200, // 001E CALL R4 1 - 0x9002CE04, // 001F SETMBR R0 K103 R4 - 0xA80200AF, // 0020 EXBLK 0 #00D1 - 0x88100138, // 0021 GETMBR R4 R0 K56 - 0x78120054, // 0022 JMPF R4 #0078 - 0x8C100359, // 0023 GETMET R4 R1 K89 - 0x58180068, // 0024 LDCONST R6 K104 - 0x581C0069, // 0025 LDCONST R7 K105 - 0x542215A3, // 0026 LDINT R8 5540 - 0x5C240600, // 0027 MOVE R9 R3 - 0x88280167, // 0028 GETMBR R10 R0 K103 - 0x882C0138, // 0029 GETMBR R11 R0 K56 - 0x7C100E00, // 002A CALL R4 7 - 0x50100200, // 002B LDBOOL R4 1 0 - 0x9002D404, // 002C SETMBR R0 K106 R4 - 0xB8123400, // 002D GETNGBL R4 K26 - 0x60140018, // 002E GETGBL R5 G24 - 0x5818006B, // 002F LDCONST R6 K107 - 0x581C0031, // 0030 LDCONST R7 K49 - 0x88200167, // 0031 GETMBR R8 R0 K103 - 0x88240138, // 0032 GETMBR R9 R0 K56 - 0x7C140800, // 0033 CALL R5 4 - 0x5818001C, // 0034 LDCONST R6 K28 - 0x7C100400, // 0035 CALL R4 2 - 0x60100008, // 0036 GETGBL R4 G8 - 0x8814010F, // 0037 GETMBR R5 R0 K15 - 0x541A0FFE, // 0038 LDINT R6 4095 - 0x2C140A06, // 0039 AND R5 R5 R6 - 0x7C100200, // 003A CALL R4 1 - 0x0012D804, // 003B ADD R4 K108 R4 - 0xB8163400, // 003C GETNGBL R5 K26 - 0x001AB604, // 003D ADD R6 K91 R4 - 0x581C0020, // 003E LDCONST R7 K32 - 0x7C140400, // 003F CALL R5 2 - 0x8C14035C, // 0040 GETMET R5 R1 K92 - 0x581C0068, // 0041 LDCONST R7 K104 - 0x58200069, // 0042 LDCONST R8 K105 - 0x88240167, // 0043 GETMBR R9 R0 K103 - 0x88280138, // 0044 GETMBR R10 R0 K56 - 0x5C2C0800, // 0045 MOVE R11 R4 - 0x7C140C00, // 0046 CALL R5 6 - 0x60140008, // 0047 GETGBL R5 G8 - 0x8818010F, // 0048 GETMBR R6 R0 K15 - 0x541E0EFF, // 0049 LDINT R7 3840 - 0x2C180C07, // 004A AND R6 R6 R7 - 0x541E0007, // 004B LDINT R7 8 - 0x3C180C07, // 004C SHR R6 R6 R7 - 0x7C140200, // 004D CALL R5 1 - 0x0016DA05, // 004E ADD R5 K109 R5 - 0x5C100A00, // 004F MOVE R4 R5 - 0xB8163400, // 0050 GETNGBL R5 K26 - 0x001AB604, // 0051 ADD R6 K91 R4 - 0x581C0020, // 0052 LDCONST R7 K32 - 0x7C140400, // 0053 CALL R5 2 - 0x8C14035C, // 0054 GETMET R5 R1 K92 - 0x581C0068, // 0055 LDCONST R7 K104 - 0x58200069, // 0056 LDCONST R8 K105 - 0x88240167, // 0057 GETMBR R9 R0 K103 - 0x88280138, // 0058 GETMBR R10 R0 K56 - 0x5C2C0800, // 0059 MOVE R11 R4 - 0x7C140C00, // 005A CALL R5 6 - 0x60140008, // 005B GETGBL R5 G8 - 0x88180100, // 005C GETMBR R6 R0 K0 - 0x88180D21, // 005D GETMBR R6 R6 K33 - 0x7C140200, // 005E CALL R5 1 - 0x0016DC05, // 005F ADD R5 K110 R5 - 0x5C100A00, // 0060 MOVE R4 R5 - 0xB8163400, // 0061 GETNGBL R5 K26 - 0x001AB604, // 0062 ADD R6 K91 R4 - 0x581C0020, // 0063 LDCONST R7 K32 - 0x7C140400, // 0064 CALL R5 2 - 0x8C14035C, // 0065 GETMET R5 R1 K92 - 0x581C0068, // 0066 LDCONST R7 K104 - 0x58200069, // 0067 LDCONST R8 K105 - 0x88240167, // 0068 GETMBR R9 R0 K103 - 0x88280138, // 0069 GETMBR R10 R0 K56 - 0x5C2C0800, // 006A MOVE R11 R4 - 0x7C140C00, // 006B CALL R5 6 - 0x5810006F, // 006C LDCONST R4 K111 - 0xB8163400, // 006D GETNGBL R5 K26 - 0x001AB604, // 006E ADD R6 K91 R4 - 0x581C0020, // 006F LDCONST R7 K32 - 0x7C140400, // 0070 CALL R5 2 - 0x8C14035C, // 0071 GETMET R5 R1 K92 - 0x581C0068, // 0072 LDCONST R7 K104 - 0x58200069, // 0073 LDCONST R8 K105 - 0x88240167, // 0074 GETMBR R9 R0 K103 - 0x88280138, // 0075 GETMBR R10 R0 K56 - 0x5C2C0800, // 0076 MOVE R11 R4 - 0x7C140C00, // 0077 CALL R5 6 - 0x8810013A, // 0078 GETMBR R4 R0 K58 - 0x78120054, // 0079 JMPF R4 #00CF - 0x8C100359, // 007A GETMET R4 R1 K89 - 0x58180068, // 007B LDCONST R6 K104 - 0x581C0069, // 007C LDCONST R7 K105 - 0x542215A3, // 007D LDINT R8 5540 - 0x5C240600, // 007E MOVE R9 R3 - 0x88280166, // 007F GETMBR R10 R0 K102 - 0x882C013A, // 0080 GETMBR R11 R0 K58 - 0x7C100E00, // 0081 CALL R4 7 - 0x50100200, // 0082 LDBOOL R4 1 0 - 0x9002E004, // 0083 SETMBR R0 K112 R4 - 0xB8123400, // 0084 GETNGBL R4 K26 - 0x60140018, // 0085 GETGBL R5 G24 - 0x58180071, // 0086 LDCONST R6 K113 - 0x581C0039, // 0087 LDCONST R7 K57 - 0x88200166, // 0088 GETMBR R8 R0 K102 - 0x8824013A, // 0089 GETMBR R9 R0 K58 - 0x7C140800, // 008A CALL R5 4 - 0x58180020, // 008B LDCONST R6 K32 - 0x7C100400, // 008C CALL R4 2 - 0x60100008, // 008D GETGBL R4 G8 - 0x8814010F, // 008E GETMBR R5 R0 K15 - 0x541A0FFE, // 008F LDINT R6 4095 - 0x2C140A06, // 0090 AND R5 R5 R6 - 0x7C100200, // 0091 CALL R4 1 - 0x0012D804, // 0092 ADD R4 K108 R4 - 0xB8163400, // 0093 GETNGBL R5 K26 - 0x001AB604, // 0094 ADD R6 K91 R4 - 0x581C0020, // 0095 LDCONST R7 K32 - 0x7C140400, // 0096 CALL R5 2 - 0x8C14035C, // 0097 GETMET R5 R1 K92 - 0x581C0068, // 0098 LDCONST R7 K104 - 0x58200069, // 0099 LDCONST R8 K105 - 0x88240166, // 009A GETMBR R9 R0 K102 - 0x8828013A, // 009B GETMBR R10 R0 K58 - 0x5C2C0800, // 009C MOVE R11 R4 - 0x7C140C00, // 009D CALL R5 6 - 0x60140008, // 009E GETGBL R5 G8 - 0x8818010F, // 009F GETMBR R6 R0 K15 - 0x541E0EFF, // 00A0 LDINT R7 3840 - 0x2C180C07, // 00A1 AND R6 R6 R7 - 0x541E0007, // 00A2 LDINT R7 8 - 0x3C180C07, // 00A3 SHR R6 R6 R7 - 0x7C140200, // 00A4 CALL R5 1 - 0x0016DA05, // 00A5 ADD R5 K109 R5 - 0x5C100A00, // 00A6 MOVE R4 R5 - 0xB8163400, // 00A7 GETNGBL R5 K26 - 0x001AB604, // 00A8 ADD R6 K91 R4 - 0x581C0020, // 00A9 LDCONST R7 K32 - 0x7C140400, // 00AA CALL R5 2 - 0x8C14035C, // 00AB GETMET R5 R1 K92 - 0x581C0068, // 00AC LDCONST R7 K104 - 0x58200069, // 00AD LDCONST R8 K105 - 0x88240166, // 00AE GETMBR R9 R0 K102 - 0x8828013A, // 00AF GETMBR R10 R0 K58 - 0x5C2C0800, // 00B0 MOVE R11 R4 - 0x7C140C00, // 00B1 CALL R5 6 - 0x60140008, // 00B2 GETGBL R5 G8 - 0x88180100, // 00B3 GETMBR R6 R0 K0 - 0x88180D21, // 00B4 GETMBR R6 R6 K33 - 0x7C140200, // 00B5 CALL R5 1 - 0x0016DC05, // 00B6 ADD R5 K110 R5 - 0x5C100A00, // 00B7 MOVE R4 R5 - 0xB8163400, // 00B8 GETNGBL R5 K26 - 0x001AB604, // 00B9 ADD R6 K91 R4 - 0x581C0020, // 00BA LDCONST R7 K32 - 0x7C140400, // 00BB CALL R5 2 - 0x8C14035C, // 00BC GETMET R5 R1 K92 - 0x581C0068, // 00BD LDCONST R7 K104 - 0x58200069, // 00BE LDCONST R8 K105 - 0x88240166, // 00BF GETMBR R9 R0 K102 - 0x8828013A, // 00C0 GETMBR R10 R0 K58 - 0x5C2C0800, // 00C1 MOVE R11 R4 - 0x7C140C00, // 00C2 CALL R5 6 - 0x5810006F, // 00C3 LDCONST R4 K111 - 0xB8163400, // 00C4 GETNGBL R5 K26 - 0x001AB604, // 00C5 ADD R6 K91 R4 - 0x581C0020, // 00C6 LDCONST R7 K32 - 0x7C140400, // 00C7 CALL R5 2 - 0x8C14035C, // 00C8 GETMET R5 R1 K92 - 0x581C0068, // 00C9 LDCONST R7 K104 - 0x58200069, // 00CA LDCONST R8 K105 - 0x88240166, // 00CB GETMBR R9 R0 K102 - 0x8828013A, // 00CC GETMBR R10 R0 K58 - 0x5C2C0800, // 00CD MOVE R11 R4 - 0x7C140C00, // 00CE CALL R5 6 - 0xA8040001, // 00CF EXBLK 1 1 - 0x7002000F, // 00D0 JMP #00E1 - 0xAC100002, // 00D1 CATCH R4 0 2 - 0x7002000C, // 00D2 JMP #00E0 - 0xB81A3400, // 00D3 GETNGBL R6 K26 - 0x601C0008, // 00D4 GETGBL R7 G8 - 0x5C200800, // 00D5 MOVE R8 R4 - 0x7C1C0200, // 00D6 CALL R7 1 - 0x001E7607, // 00D7 ADD R7 K59 R7 - 0x001C0F3C, // 00D8 ADD R7 R7 K60 - 0x60200008, // 00D9 GETGBL R8 G8 - 0x5C240A00, // 00DA MOVE R9 R5 - 0x7C200200, // 00DB CALL R8 1 - 0x001C0E08, // 00DC ADD R7 R7 R8 - 0x5820001C, // 00DD LDCONST R8 K28 - 0x7C180400, // 00DE CALL R6 2 - 0x70020000, // 00DF JMP #00E1 - 0xB0080000, // 00E0 RAISE 2 R0 R0 - 0x80000000, // 00E1 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_basic_commissioning -********************************************************************/ -be_local_closure(class_Matter_Commissioning__init_basic_commissioning, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(_init_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8804032A, // 0001 GETMBR R1 R1 K42 - 0x8C040372, // 0002 GETMET R1 R1 K114 - 0x7C040200, // 0003 CALL R1 1 - 0x1C040343, // 0004 EQ R1 R1 K67 - 0x78060001, // 0005 JMPF R1 #0008 - 0x8C040173, // 0006 GETMET R1 R0 K115 - 0x7C040200, // 0007 CALL R1 1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: start_mdns_announce_hostnames ********************************************************************/ @@ -1582,34 +1759,34 @@ be_local_closure(class_Matter_Commissioning_start_mdns_announce_hostnames, /* &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ 0xB8061000, // 0000 GETNGBL R1 K8 - 0x8C040339, // 0001 GETMET R1 R1 K57 + 0x8C040331, // 0001 GETMET R1 R1 K49 0x7C040200, // 0002 CALL R1 1 - 0x94040333, // 0003 GETIDX R1 R1 K51 + 0x9404033E, // 0003 GETIDX R1 R1 K62 0x78060003, // 0004 JMPF R1 #0009 - 0x8C040174, // 0005 GETMET R1 R0 K116 + 0x8C04017F, // 0005 GETMET R1 R0 K127 0x500C0000, // 0006 LDBOOL R3 0 0 0x7C040400, // 0007 CALL R1 2 0x70020005, // 0008 JMP #000F 0xB8061000, // 0009 GETNGBL R1 K8 - 0x8C04033F, // 000A GETMET R1 R1 K63 - 0x580C0040, // 000B LDCONST R3 K64 + 0x8C04037C, // 000A GETMET R1 R1 K124 + 0x580C007D, // 000B LDCONST R3 K125 0x84100000, // 000C CLOSURE R4 P0 - 0x58140075, // 000D LDCONST R5 K117 + 0x58140080, // 000D LDCONST R5 K128 0x7C040800, // 000E CALL R1 4 0xB8061000, // 000F GETNGBL R1 K8 - 0x8C040331, // 0010 GETMET R1 R1 K49 + 0x8C04032C, // 0010 GETMET R1 R1 K44 0x7C040200, // 0011 CALL R1 1 - 0x94040333, // 0012 GETIDX R1 R1 K51 + 0x9404033E, // 0012 GETIDX R1 R1 K62 0x78060003, // 0013 JMPF R1 #0018 - 0x8C040174, // 0014 GETMET R1 R0 K116 + 0x8C04017F, // 0014 GETMET R1 R0 K127 0x500C0200, // 0015 LDBOOL R3 1 0 0x7C040400, // 0016 CALL R1 2 0x70020005, // 0017 JMP #001E 0xB8061000, // 0018 GETNGBL R1 K8 - 0x8C04033F, // 0019 GETMET R1 R1 K63 - 0x580C0041, // 001A LDCONST R3 K65 + 0x8C04037C, // 0019 GETMET R1 R1 K124 + 0x580C007E, // 001A LDCONST R3 K126 0x84100001, // 001B CLOSURE R4 P1 - 0x58140075, // 001C LDCONST R5 K117 + 0x58140080, // 001C LDCONST R5 K128 0x7C040800, // 001D CALL R1 4 0xA0000000, // 001E CLOSE R0 0x80000000, // 001F RET 0 @@ -1653,105 +1830,6 @@ be_local_closure(class_Matter_Commissioning_is_root_commissioning_open, /* nam /*******************************************************************/ -/******************************************************************** -** Solidified function: start_root_basic_commissioning -********************************************************************/ -be_local_closure(class_Matter_Commissioning_start_root_basic_commissioning, /* name */ - be_nested_proto( - 22, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(start_root_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[76]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040176, // 0003 GETMBR R1 R0 K118 - 0x8C080177, // 0004 GETMET R2 R0 K119 - 0x7C080200, // 0005 CALL R2 1 - 0xB80E3400, // 0006 GETNGBL R3 K26 - 0x60100018, // 0007 GETGBL R4 G24 - 0x58140078, // 0008 LDCONST R5 K120 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C100400, // 000A CALL R4 2 - 0x5814001C, // 000B LDCONST R5 K28 - 0x7C0C0400, // 000C CALL R3 2 - 0x8C0C0179, // 000D GETMET R3 R0 K121 - 0x7C0C0200, // 000E CALL R3 1 - 0xB8121000, // 000F GETNGBL R4 K8 - 0x8C100909, // 0010 GETMET R4 R4 K9 - 0x60180018, // 0011 GETGBL R6 G24 - 0x581C007A, // 0012 LDCONST R7 K122 - 0x5C200400, // 0013 MOVE R8 R2 - 0x5C240600, // 0014 MOVE R9 R3 - 0x7C180600, // 0015 CALL R6 3 - 0x581C000B, // 0016 LDCONST R7 K11 - 0x7C100600, // 0017 CALL R4 3 - 0xA4124E00, // 0018 IMPORT R4 K39 - 0x8C140953, // 0019 GETMET R5 R4 K83 - 0x541E000F, // 001A LDINT R7 16 - 0x7C140400, // 001B CALL R5 2 - 0x60180015, // 001C GETGBL R6 G21 - 0x7C180000, // 001D CALL R6 0 - 0x8C180D7B, // 001E GETMET R6 R6 K123 - 0x88200100, // 001F GETMBR R8 R0 K0 - 0x88201102, // 0020 GETMBR R8 R8 K2 - 0x54260003, // 0021 LDINT R9 4 - 0x7C180600, // 0022 CALL R6 3 - 0x8C1C097C, // 0023 GETMET R7 R4 K124 - 0x7C1C0200, // 0024 CALL R7 1 - 0x8C1C0F7D, // 0025 GETMET R7 R7 K125 - 0x5C240C00, // 0026 MOVE R9 R6 - 0x5C280A00, // 0027 MOVE R10 R5 - 0x882C017E, // 0028 GETMBR R11 R0 K126 - 0x5432004F, // 0029 LDINT R12 80 - 0x7C1C0A00, // 002A CALL R7 5 - 0x54220026, // 002B LDINT R8 39 - 0x40228608, // 002C CONNECT R8 K67 R8 - 0x94200E08, // 002D GETIDX R8 R7 R8 - 0x54260027, // 002E LDINT R9 40 - 0x542A004E, // 002F LDINT R10 79 - 0x4024120A, // 0030 CONNECT R9 R9 R10 - 0x94240E09, // 0031 GETIDX R9 R7 R9 - 0x8C28097F, // 0032 GETMET R10 R4 K127 - 0x7C280200, // 0033 CALL R10 1 - 0x8C281580, // 0034 GETMET R10 R10 K128 - 0x5C301000, // 0035 MOVE R12 R8 - 0x7C280400, // 0036 CALL R10 2 - 0x8C2C097F, // 0037 GETMET R11 R4 K127 - 0x7C2C0200, // 0038 CALL R11 1 - 0x8C2C1780, // 0039 GETMET R11 R11 K128 - 0x5C341200, // 003A MOVE R13 R9 - 0x7C2C0400, // 003B CALL R11 2 - 0x8C30097F, // 003C GETMET R12 R4 K127 - 0x7C300200, // 003D CALL R12 1 - 0x8C301981, // 003E GETMET R12 R12 K129 - 0x5C381600, // 003F MOVE R14 R11 - 0x7C300400, // 0040 CALL R12 2 - 0x8C340182, // 0041 GETMET R13 R0 K130 - 0x5C3C0200, // 0042 MOVE R15 R1 - 0x8840017E, // 0043 GETMBR R16 R0 K126 - 0x88440100, // 0044 GETMBR R17 R0 K0 - 0x88442301, // 0045 GETMBR R17 R17 K1 - 0x5C480A00, // 0046 MOVE R18 R5 - 0x5C4C1400, // 0047 MOVE R19 R10 - 0x5C501800, // 0048 MOVE R20 R12 - 0x4C540000, // 0049 LDNIL R21 - 0x7C341000, // 004A CALL R13 8 - 0x80000000, // 004B RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: is_commissioning_open ********************************************************************/ @@ -1780,11 +1858,11 @@ be_local_closure(class_Matter_Commissioning_is_commissioning_open, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: start_commissioning_complete ********************************************************************/ -be_local_closure(class_Matter_Commissioning_init, /* name */ +be_local_closure(class_Matter_Commissioning_start_commissioning_complete, /* name */ be_nested_proto( - 4, /* nstack */ + 10, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -1793,113 +1871,32 @@ be_local_closure(class_Matter_Commissioning_init, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(init), + be_str_weak(start_commissioning_complete), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x8C080183, // 0001 GETMET R2 R0 K131 - 0x7C080200, // 0002 CALL R2 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mdns_remove_PASE -********************************************************************/ -be_local_closure(class_Matter_Commissioning_mdns_remove_PASE, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Commissioning, /* shared constants */ - be_str_weak(mdns_remove_PASE), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA4065000, // 0000 IMPORT R1 K40 - 0xA8020039, // 0001 EXBLK 0 #003C - 0x8808016A, // 0002 GETMBR R2 R0 K106 - 0x780A0019, // 0003 JMPF R2 #001E - 0xB80A3400, // 0004 GETNGBL R2 K26 - 0x600C0018, // 0005 GETGBL R3 G24 - 0x58100084, // 0006 LDCONST R4 K132 - 0x58140068, // 0007 LDCONST R5 K104 - 0x58180069, // 0008 LDCONST R6 K105 - 0x881C0167, // 0009 GETMBR R7 R0 K103 - 0x88200138, // 000A GETMBR R8 R0 K56 - 0x7C0C0A00, // 000B CALL R3 5 - 0x58100020, // 000C LDCONST R4 K32 - 0x7C080400, // 000D CALL R2 2 - 0xB80A3400, // 000E GETNGBL R2 K26 - 0x600C0018, // 000F GETGBL R3 G24 - 0x58100034, // 0010 LDCONST R4 K52 - 0x58140031, // 0011 LDCONST R5 K49 - 0x88180167, // 0012 GETMBR R6 R0 K103 - 0x7C0C0600, // 0013 CALL R3 3 - 0x58100020, // 0014 LDCONST R4 K32 - 0x7C080400, // 0015 CALL R2 2 - 0x50080000, // 0016 LDBOOL R2 0 0 - 0x9002D402, // 0017 SETMBR R0 K106 R2 - 0x8C080335, // 0018 GETMET R2 R1 K53 - 0x58100068, // 0019 LDCONST R4 K104 - 0x58140069, // 001A LDCONST R5 K105 - 0x88180167, // 001B GETMBR R6 R0 K103 - 0x881C0138, // 001C GETMBR R7 R0 K56 - 0x7C080A00, // 001D CALL R2 5 - 0x88080170, // 001E GETMBR R2 R0 K112 - 0x780A0019, // 001F JMPF R2 #003A - 0xB80A3400, // 0020 GETNGBL R2 K26 - 0x600C0018, // 0021 GETGBL R3 G24 - 0x58100084, // 0022 LDCONST R4 K132 - 0x58140068, // 0023 LDCONST R5 K104 - 0x58180069, // 0024 LDCONST R6 K105 - 0x881C0166, // 0025 GETMBR R7 R0 K102 - 0x8820013A, // 0026 GETMBR R8 R0 K58 - 0x7C0C0A00, // 0027 CALL R3 5 - 0x58100020, // 0028 LDCONST R4 K32 - 0x7C080400, // 0029 CALL R2 2 - 0xB80A3400, // 002A GETNGBL R2 K26 - 0x600C0018, // 002B GETGBL R3 G24 - 0x58100034, // 002C LDCONST R4 K52 - 0x58140039, // 002D LDCONST R5 K57 - 0x88180166, // 002E GETMBR R6 R0 K102 - 0x7C0C0600, // 002F CALL R3 3 - 0x58100020, // 0030 LDCONST R4 K32 - 0x7C080400, // 0031 CALL R2 2 - 0x50080000, // 0032 LDBOOL R2 0 0 - 0x9002E002, // 0033 SETMBR R0 K112 R2 - 0x8C080335, // 0034 GETMET R2 R1 K53 - 0x58100068, // 0035 LDCONST R4 K104 - 0x58140069, // 0036 LDCONST R5 K105 - 0x88180166, // 0037 GETMBR R6 R0 K102 - 0x881C013A, // 0038 GETMBR R7 R0 K58 - 0x7C080A00, // 0039 CALL R2 5 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000F, // 003B JMP #004C - 0xAC080002, // 003C CATCH R2 0 2 - 0x7002000C, // 003D JMP #004B - 0xB8123400, // 003E GETNGBL R4 K26 - 0x60140008, // 003F GETGBL R5 G8 - 0x5C180400, // 0040 MOVE R6 R2 - 0x7C140200, // 0041 CALL R5 1 - 0x00167605, // 0042 ADD R5 K59 R5 - 0x00140B3C, // 0043 ADD R5 R5 K60 - 0x60180008, // 0044 GETGBL R6 G8 - 0x5C1C0600, // 0045 MOVE R7 R3 - 0x7C180200, // 0046 CALL R6 1 - 0x00140A06, // 0047 ADD R5 R5 R6 - 0x5818001C, // 0048 LDCONST R6 K28 - 0x7C100400, // 0049 CALL R4 2 - 0x70020000, // 004A JMP #004C - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80000000, // 004C RET 0 + ( &(const binstruction[23]) { /* code */ + 0x8C080381, // 0000 GETMET R2 R1 K129 + 0x7C080200, // 0001 CALL R2 1 + 0x8C0C0504, // 0002 GETMET R3 R2 K4 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0738, // 0004 GETMET R3 R3 K56 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C0739, // 0006 GETMET R3 R3 K57 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C073B, // 0008 GETMET R3 R3 K59 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C100582, // 000A GETMET R4 R2 K130 + 0x7C100200, // 000B CALL R4 1 + 0xB8164A00, // 000C GETNGBL R5 K37 + 0x60180018, // 000D GETGBL R6 G24 + 0x581C0083, // 000E LDCONST R7 K131 + 0x5C200600, // 000F MOVE R8 R3 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C180600, // 0011 CALL R6 3 + 0x581C0034, // 0012 LDCONST R7 K52 + 0x7C140400, // 0013 CALL R5 2 + 0x8C140143, // 0014 GETMET R5 R0 K67 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 }) ) ); @@ -1915,18 +1912,18 @@ be_local_class(Matter_Commissioning, be_nested_map(40, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(7) }, - { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(commissioning_instance_eth, 6), be_const_var(9) }, - { be_const_key_weak(mdns_remove_PASE, 1), be_const_closure(class_Matter_Commissioning_mdns_remove_PASE_closure) }, + { be_const_key_weak(commissioning_w0, -1), be_const_var(5) }, + { be_const_key_weak(commissioning_instance_eth, 1), be_const_var(9) }, + { be_const_key_weak(start_commissioning_complete, -1), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_closure) }, { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_stop_basic_commissioning_closure) }, { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(13) }, - { be_const_key_weak(commissioning_w0, -1), be_const_var(5) }, + { be_const_key_weak(init_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_init_basic_commissioning_closure) }, { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(class_Matter_Commissioning_compute_qrcode_content_closure) }, - { be_const_key_weak(mdns_remove_op_discovery, -1), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_closure) }, + { be_const_key_weak(compute_manual_pairing_code, 38), be_const_closure(class_Matter_Commissioning_compute_manual_pairing_code_closure) }, { be_const_key_weak(commissioning_open, -1), be_const_var(1) }, - { be_const_key_weak(compute_manual_pairing_code, 3), be_const_closure(class_Matter_Commissioning_compute_manual_pairing_code_closure) }, + { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, 8), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics_closure) }, { be_const_key_weak(device, -1), be_const_var(0) }, - { be_const_key_weak(init, 32), be_const_closure(class_Matter_Commissioning_init_closure) }, + { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Commissioning_start_operational_discovery_closure) }, { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(12, ( (struct bvalue*) &(const bvalue[]) { @@ -1943,31 +1940,31 @@ be_local_class(Matter_Commissioning, be_const_int(12345678), be_const_int(87654321), })) ) } )) }, - { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Commissioning_start_operational_discovery_deferred_closure) }, - { be_const_key_weak(start_commissioning_complete, 8), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_closure) }, - { be_const_key_weak(_mdns_announce_hostname, -1), be_const_closure(class_Matter_Commissioning__mdns_announce_hostname_closure) }, - { be_const_key_weak(start_operational_discovery, 14), be_const_closure(class_Matter_Commissioning_start_operational_discovery_closure) }, - { be_const_key_weak(start_basic_commissioning, 16), be_const_closure(class_Matter_Commissioning_start_basic_commissioning_closure) }, - { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, 28), be_const_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics_closure) }, - { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_start_root_basic_commissioning_closure) }, + { be_const_key_weak(commissioning_discriminator, 30), be_const_var(3) }, + { be_const_key_weak(mdns_remove_op_discovery, 3), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_closure) }, + { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics_closure) }, + { be_const_key_weak(start_operational_discovery_deferred, 12), be_const_closure(class_Matter_Commissioning_start_operational_discovery_deferred_closure) }, + { be_const_key_weak(_mdns_announce_hostname, 28), be_const_closure(class_Matter_Commissioning__mdns_announce_hostname_closure) }, + { be_const_key_weak(commissioning_L, 16), be_const_var(6) }, + { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_deferred_closure) }, { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Commissioning_generate_random_passcode_closure) }, { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(PASE_TIMEOUT, -1), be_const_int(600) }, + { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(8) }, { be_const_key_weak(hostname_eth, -1), be_const_var(11) }, - { be_const_key_weak(every_second, 20), be_const_closure(class_Matter_Commissioning_every_second_closure) }, - { be_const_key_weak(commissioning_instance_wifi, 23), be_const_var(8) }, + { be_const_key_weak(start_root_basic_commissioning, 32), be_const_closure(class_Matter_Commissioning_start_root_basic_commissioning_closure) }, + { be_const_key_weak(PASE_TIMEOUT, 23), be_const_int(600) }, { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_PASE_closure) }, - { be_const_key_weak(commissioning_L, -1), be_const_var(6) }, - { be_const_key_weak(_init_basic_commissioning, 30), be_const_closure(class_Matter_Commissioning__init_basic_commissioning_closure) }, + { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_start_basic_commissioning_closure) }, { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Commissioning_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(mdns_pase_eth, 20), be_const_var(12) }, { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Commissioning_is_root_commissioning_open_closure) }, - { be_const_key_weak(start_commissioning_complete_deferred, 38), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_deferred_closure) }, + { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Commissioning_every_second_closure) }, { be_const_key_weak(commissioning_salt, -1), be_const_var(4) }, { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Commissioning_is_commissioning_open_closure) }, - { be_const_key_weak(mdns_pase_eth, 12), be_const_var(12) }, + { be_const_key_weak(init, 14), be_const_closure(class_Matter_Commissioning_init_closure) }, { be_const_key_weak(hostname_wifi, -1), be_const_var(10) }, { be_const_key_weak(commissioning_iterations, -1), be_const_var(2) }, - { be_const_key_weak(commissioning_discriminator, -1), be_const_var(3) }, + { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(class_Matter_Commissioning_mdns_remove_PASE_closure) }, { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, })), be_str_weak(Matter_Commissioning) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index f59edbdea..4869abc0c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -4,263 +4,221 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Device; -// compact class 'Matter_Device' ktab size: 255, total: 533 (saved 2224 bytes) -static const bvalue be_ktab_class_Matter_Device[255] = { +// compact class 'Matter_Device' ktab size: 213, total: 455 (saved 1936 bytes) +static const bvalue be_ktab_class_Matter_Device[213] = { /* K0 */ be_nested_str_weak(udp_server), /* K1 */ be_nested_str_weak(received_ack), - /* K2 */ be_nested_str_weak(started), - /* K3 */ be_nested_str_weak(autoconf_device), - /* K4 */ be_nested_str_weak(_start_udp), - /* K5 */ be_nested_str_weak(UDP_PORT), - /* K6 */ be_nested_str_weak(commissioning), - /* K7 */ be_nested_str_weak(start_mdns_announce_hostnames), - /* K8 */ be_nested_str_weak(sessions), - /* K9 */ be_nested_str_weak(count_active_fabrics), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(plugins_persist), - /* K12 */ be_nested_str_weak(save_param), - /* K13 */ be_nested_str_weak(stop_basic_commissioning), - /* K14 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), - /* K15 */ be_const_class(be_class_Matter_Device), - /* K16 */ be_nested_str_weak(), - /* K17 */ be_nested_str_weak(k2l), - /* K18 */ be_nested_str_weak(type), - /* K19 */ be_nested_str_weak(_X20_X25s_X3A_X25s), - /* K20 */ be_nested_str_weak(stop_iteration), - /* K21 */ be_nested_str_weak(crypto), - /* K22 */ be_nested_str_weak(tasmota), - /* K23 */ be_nested_str_weak(get_option), - /* K24 */ be_nested_str_weak(matter), - /* K25 */ be_nested_str_weak(MATTER_OPTION), - /* K26 */ be_nested_str_weak(UI), - /* K27 */ be_nested_str_weak(profiler), - /* K28 */ be_nested_str_weak(Profiler), - /* K29 */ be_nested_str_weak(tick), - /* K30 */ be_nested_str_weak(plugins), - /* K31 */ be_nested_str_weak(plugins_config_remotes), - /* K32 */ be_nested_str_weak(next_ep), - /* K33 */ be_const_int(2), - /* K34 */ be_nested_str_weak(ipv4only), - /* K35 */ be_nested_str_weak(disable_bridge_mode), - /* K36 */ be_nested_str_weak(load_param), - /* K37 */ be_nested_str_weak(Session_Store), - /* K38 */ be_nested_str_weak(load_fabrics), - /* K39 */ be_nested_str_weak(message_handler), - /* K40 */ be_nested_str_weak(MessageHandler), - /* K41 */ be_nested_str_weak(events), - /* K42 */ be_nested_str_weak(EventHandler), - /* K43 */ be_nested_str_weak(ui), - /* K44 */ be_nested_str_weak(wifi), - /* K45 */ be_nested_str_weak(up), - /* K46 */ be_nested_str_weak(eth), - /* K47 */ be_nested_str_weak(start), - /* K48 */ be_nested_str_weak(add_rule), - /* K49 */ be_nested_str_weak(Wifi_X23Connected), - /* K50 */ be_nested_str_weak(matter_start), - /* K51 */ be_nested_str_weak(Eth_X23Connected), - /* K52 */ be_nested_str_weak(Commissioning), - /* K53 */ be_nested_str_weak(add_driver), - /* K54 */ be_nested_str_weak(register_commands), - /* K55 */ be_nested_str_weak(get_name), - /* K56 */ be_const_int(1), - /* K57 */ be_nested_str_weak(find), - /* K58 */ be_nested_str_weak(log), - /* K59 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K60 */ be_nested_str_weak(UDPServer), - /* K61 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), - /* K62 */ be_nested_str_weak(get_fabric_id), - /* K63 */ be_nested_str_weak(copy), - /* K64 */ be_nested_str_weak(reverse), - /* K65 */ be_nested_str_weak(tohex), - /* K66 */ be_nested_str_weak(im), - /* K67 */ be_nested_str_weak(subs_shop), - /* K68 */ be_nested_str_weak(remove_by_fabric), - /* K69 */ be_nested_str_weak(mdns_remove_op_discovery), - /* K70 */ be_nested_str_weak(remove_fabric), - /* K71 */ be_nested_str_weak(save_fabrics), - /* K72 */ be_nested_str_weak(endpoint), - /* K73 */ be_nested_str_weak(cluster), - /* K74 */ be_nested_str_weak(attribute), - /* K75 */ be_nested_str_weak(find_plugin_by_endpoint), - /* K76 */ be_nested_str_weak(status), - /* K77 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K78 */ be_nested_str_weak(contains_cluster), - /* K79 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K80 */ be_nested_str_weak(contains_attribute), - /* K81 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K82 */ be_nested_str_weak(attribute_updated), - /* K83 */ be_const_int(3), - /* K84 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K85 */ be_nested_str_weak(json), - /* K86 */ be_nested_str_weak(plugins_config), - /* K87 */ be_nested_str_weak(autoconf_device_map), - /* K88 */ be_nested_str_weak(adjust_next_ep), - /* K89 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), - /* K90 */ be_nested_str_weak(_instantiate_plugins_from_config), - /* K91 */ be_nested_str_weak(read_sensors), - /* K92 */ be_nested_str_weak(loglevel), - /* K93 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), - /* K94 */ be_nested_str_weak(load), - /* K95 */ be_nested_str_weak(parse_sensors), - /* K96 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), - /* K97 */ be_nested_str_weak(get_endpoint), - /* K98 */ be_nested_str_weak(push), - /* K99 */ be_nested_str_weak(send_UDP), - /* K100 */ be_nested_str_weak(remove_driver), - /* K101 */ be_nested_str_weak(stop), - /* K102 */ be_nested_str_weak(keys), - /* K103 */ be_nested_str_weak(probe_sensor_time), - /* K104 */ be_nested_str_weak(probe_sensor_timestamp), - /* K105 */ be_nested_str_weak(jitter), - /* K106 */ be_nested_str_weak(button_handler), - /* K107 */ be_nested_str_weak(http_remotes), - /* K108 */ be_nested_str_weak(contains), - /* K109 */ be_nested_str_weak(get_timeout), - /* K110 */ be_nested_str_weak(set_timeout), - /* K111 */ be_nested_str_weak(HTTP_remote), - /* K112 */ be_nested_str_weak(set_info), - /* K113 */ be_nested_str_weak(k2l_num), - /* K114 */ be_nested_str_weak(Plugin_Root), - /* K115 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints), - /* K116 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s), - /* K117 */ be_nested_str_weak(root), - /* K118 */ be_nested_str_weak(Plugin_Aggregator), - /* K119 */ be_nested_str_weak(aggregator), - /* K120 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping), - /* K121 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed), - /* K122 */ be_nested_str_weak(plugins_classes), - /* K123 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), - /* K124 */ be_nested_str_weak(_X27_X20skipping), - /* K125 */ be_nested_str_weak(conf_to_log), - /* K126 */ be_nested_str_weak(MTR_X3A_X20Exception), - /* K127 */ be_nested_str_weak(_X7C), - /* K128 */ be_nested_str_weak(publish_result), - /* K129 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D), - /* K130 */ be_nested_str_weak(Matter), - /* K131 */ be_nested_str_weak(remove), - /* K132 */ be_nested_str_weak(DISPLAY_NAME), - /* K133 */ be_nested_str_weak(introspect), - /* K134 */ be_nested_str_weak(get), - /* K135 */ be_nested_str_weak(http_remote), - /* K136 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), - /* K137 */ be_nested_str_weak(addr), - /* K138 */ be_nested_str_weak(close), - /* K139 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), - /* K140 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), - /* K141 */ be_nested_str_weak(every_second), - /* K142 */ be_nested_str_weak(Path), - /* K143 */ be_nested_str_weak(attribute_updated_ctx), - /* K144 */ be_nested_str_weak(read_sensors_scheduler), - /* K145 */ be_nested_str_weak(every_250ms), - /* K146 */ be_nested_str_weak(PathGenerator), - /* K147 */ be_nested_str_weak(is_direct), - /* K148 */ be_nested_str_weak(next_attribute), - /* K149 */ be_nested_str_weak(get_pi), - /* K150 */ be_nested_str_weak(START_ENDPOINT), - /* K151 */ be_nested_str_weak(light), - /* K152 */ be_nested_str_weak(channels), - /* K153 */ be_nested_str_weak(light1), - /* K154 */ be_nested_str_weak(light2), - /* K155 */ be_nested_str_weak(light3), - /* K156 */ be_nested_str_weak(cmd), - /* K157 */ be_nested_str_weak(Status_X2013), - /* K158 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), - /* K159 */ be_nested_str_weak(StatusSHT), - /* K160 */ be_nested_str_weak(SHT), - /* K161 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s), - /* K162 */ be_nested_str_weak(Relay1), - /* K163 */ be_nested_str_weak(Relay2), - /* K164 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s), - /* K165 */ be_nested_str_weak(TiltConfig), - /* K166 */ be_nested_str_weak(shutter_X2Btilt), - /* K167 */ be_nested_str_weak(shutter), - /* K168 */ be_nested_str_weak(get_power), - /* K169 */ be_nested_str_weak(relay), - /* K170 */ be_nested_str_weak(autoconf_sensors_list), - /* K171 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), - /* K172 */ be_nested_str_weak(signal_endpoints_changed), - /* K173 */ be_nested_str_weak(MtrInfo_one), - /* K174 */ be_nested_str_weak(int), - /* K175 */ be_nested_str_weak(find_plugin_by_friendly_name), - /* K176 */ be_nested_str_weak(resp_cmnd_done), - /* K177 */ be_nested_str_weak(FILENAME), - /* K178 */ be_nested_str_weak(read), - /* K179 */ be_nested_str_weak(root_discriminator), - /* K180 */ be_nested_str_weak(distinguish), - /* K181 */ be_nested_str_weak(root_passcode), - /* K182 */ be_nested_str_weak(passcode), - /* K183 */ be_nested_str_weak(nextep), - /* K184 */ be_nested_str_weak(config), - /* K185 */ be_nested_str_weak(debug), - /* K186 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), - /* K187 */ be_nested_str_weak(check_config_ep), - /* K188 */ be_nested_str_weak(remotes), - /* K189 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), - /* K190 */ be_nested_str_weak(io_error), - /* K191 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), - /* K192 */ be_nested_str_weak(random), - /* K193 */ be_nested_str_weak(generate_random_passcode), - /* K194 */ be_nested_str_weak(resp_cmnd_str), - /* K195 */ be_nested_str_weak(Invalid_X20JSON), - /* K196 */ be_nested_str_weak(find_key_i), - /* K197 */ be_nested_str_weak(Ep), - /* K198 */ be_nested_str_weak(Name), - /* K199 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute), - /* K200 */ be_nested_str_weak(Invalid_X20Device), - /* K201 */ be_nested_str_weak(VIRTUAL), - /* K202 */ be_nested_str_weak(Device_X20is_X20not_X20virtual), - /* K203 */ be_nested_str_weak(consolidate_update_commands), - /* K204 */ be_nested_str_weak(find_list_i), - /* K205 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27), - /* K206 */ be_nested_str_weak(update_virtual), - /* K207 */ be_nested_str_weak(state_json), - /* K208 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D), - /* K209 */ be_nested_str_weak(resp_cmnd), - /* K210 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute), - /* K211 */ be_nested_str_weak(add_cmd), - /* K212 */ be_nested_str_weak(MtrJoin), - /* K213 */ be_nested_str_weak(MtrUpdate), - /* K214 */ be_nested_str_weak(MtrInfo), - /* K215 */ be_nested_str_weak(update_remotes_info), - /* K216 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), - /* K217 */ be_nested_str_weak(true), - /* K218 */ be_nested_str_weak(false), - /* K219 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), - /* K220 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), - /* K221 */ be_nested_str_weak(dump), - /* K222 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), - /* K223 */ be_nested_str_weak(_X7D), - /* K224 */ be_nested_str_weak(w), - /* K225 */ be_nested_str_weak(write), - /* K226 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), - /* K227 */ be_nested_str_weak(_X20and_X20configuration), - /* K228 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K229 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), - /* K230 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), - /* K231 */ be_nested_str_weak(clean_remotes), - /* K232 */ be_nested_str_weak(msg_received), - /* K233 */ be_nested_str_weak(invoke_request), - /* K234 */ be_nested_str_weak(time_reached), - /* K235 */ be_nested_str_weak(_trigger_read_sensors), - /* K236 */ be_nested_str_weak(millis), - /* K237 */ be_nested_str_weak(start_root_basic_commissioning), - /* K238 */ be_nested_str_weak(Temperature), - /* K239 */ be_nested_str_weak(_X23Temperature), - /* K240 */ be_nested_str_weak(temperature), - /* K241 */ be_nested_str_weak(filter), - /* K242 */ be_nested_str_weak(Pressure), - /* K243 */ be_nested_str_weak(_X23Pressure), - /* K244 */ be_nested_str_weak(pressure), - /* K245 */ be_nested_str_weak(Illuminance), - /* K246 */ be_nested_str_weak(_X23Illuminance), - /* K247 */ be_nested_str_weak(illuminance), - /* K248 */ be_nested_str_weak(Humidity), - /* K249 */ be_nested_str_weak(_X23Humidity), - /* K250 */ be_nested_str_weak(humidity), - /* K251 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), - /* K252 */ be_nested_str_weak(every_50ms), - /* K253 */ be_nested_str_weak(ARG), - /* K254 */ be_nested_str_weak(get_info), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(msg_received), + /* K4 */ be_nested_str_weak(sessions), + /* K5 */ be_nested_str_weak(count_active_fabrics), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(plugins_persist), + /* K8 */ be_nested_str_weak(save_param), + /* K9 */ be_nested_str_weak(commissioning), + /* K10 */ be_nested_str_weak(stop_basic_commissioning), + /* K11 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics), + /* K12 */ be_const_class(be_class_Matter_Device), + /* K13 */ be_nested_str_weak(), + /* K14 */ be_nested_str_weak(k2l), + /* K15 */ be_nested_str_weak(type), + /* K16 */ be_nested_str_weak(_X20_X25s_X3A_X25s), + /* K17 */ be_nested_str_weak(stop_iteration), + /* K18 */ be_nested_str_weak(plugins), + /* K19 */ be_nested_str_weak(get_name), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(plugins_config_remotes), + /* K22 */ be_nested_str_weak(find), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20), + /* K25 */ be_nested_str_weak(get_fabric_id), + /* K26 */ be_nested_str_weak(copy), + /* K27 */ be_nested_str_weak(reverse), + /* K28 */ be_nested_str_weak(tohex), + /* K29 */ be_const_int(2), + /* K30 */ be_nested_str_weak(im), + /* K31 */ be_nested_str_weak(subs_shop), + /* K32 */ be_nested_str_weak(remove_by_fabric), + /* K33 */ be_nested_str_weak(mdns_remove_op_discovery), + /* K34 */ be_nested_str_weak(remove_fabric), + /* K35 */ be_nested_str_weak(save_fabrics), + /* K36 */ be_nested_str_weak(endpoint), + /* K37 */ be_nested_str_weak(cluster), + /* K38 */ be_nested_str_weak(attribute), + /* K39 */ be_nested_str_weak(find_plugin_by_endpoint), + /* K40 */ be_nested_str_weak(status), + /* K41 */ be_nested_str_weak(matter), + /* K42 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K43 */ be_nested_str_weak(contains_cluster), + /* K44 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K45 */ be_nested_str_weak(contains_attribute), + /* K46 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K47 */ be_nested_str_weak(attribute_updated), + /* K48 */ be_const_int(3), + /* K49 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K50 */ be_nested_str_weak(json), + /* K51 */ be_nested_str_weak(autoconf), + /* K52 */ be_nested_str_weak(Autoconf), + /* K53 */ be_nested_str_weak(plugins_config), + /* K54 */ be_nested_str_weak(autoconf_device_map), + /* K55 */ be_nested_str_weak(adjust_next_ep), + /* K56 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20), + /* K57 */ be_nested_str_weak(instantiate_plugins_from_config), + /* K58 */ be_nested_str_weak(tasmota), + /* K59 */ be_nested_str_weak(read_sensors), + /* K60 */ be_nested_str_weak(loglevel), + /* K61 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20), + /* K62 */ be_nested_str_weak(load), + /* K63 */ be_nested_str_weak(parse_sensors), + /* K64 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20), + /* K65 */ be_nested_str_weak(get_endpoint), + /* K66 */ be_nested_str_weak(push), + /* K67 */ be_nested_str_weak(send_UDP), + /* K68 */ be_nested_str_weak(remove_driver), + /* K69 */ be_nested_str_weak(stop), + /* K70 */ be_nested_str_weak(keys), + /* K71 */ be_nested_str_weak(next_ep), + /* K72 */ be_nested_str_weak(probe_sensor_time), + /* K73 */ be_nested_str_weak(probe_sensor_timestamp), + /* K74 */ be_nested_str_weak(jitter), + /* K75 */ be_nested_str_weak(button_handler), + /* K76 */ be_nested_str_weak(started), + /* K77 */ be_nested_str_weak(autoconf_device), + /* K78 */ be_nested_str_weak(_start_udp), + /* K79 */ be_nested_str_weak(UDP_PORT), + /* K80 */ be_nested_str_weak(start_mdns_announce_hostnames), + /* K81 */ be_nested_str_weak(plugins_classes), + /* K82 */ be_nested_str_weak(DISPLAY_NAME), + /* K83 */ be_nested_str_weak(remove), + /* K84 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27), + /* K85 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s), + /* K86 */ be_nested_str_weak(introspect), + /* K87 */ be_nested_str_weak(contains), + /* K88 */ be_nested_str_weak(crypto), + /* K89 */ be_nested_str_weak(get_option), + /* K90 */ be_nested_str_weak(MATTER_OPTION), + /* K91 */ be_nested_str_weak(UI), + /* K92 */ be_nested_str_weak(profiler), + /* K93 */ be_nested_str_weak(Profiler), + /* K94 */ be_nested_str_weak(tick), + /* K95 */ be_nested_str_weak(EP), + /* K96 */ be_nested_str_weak(ipv4only), + /* K97 */ be_nested_str_weak(disable_bridge_mode), + /* K98 */ be_nested_str_weak(Commissioning), + /* K99 */ be_nested_str_weak(load_param), + /* K100 */ be_nested_str_weak(Session_Store), + /* K101 */ be_nested_str_weak(load_fabrics), + /* K102 */ be_nested_str_weak(MessageHandler), + /* K103 */ be_nested_str_weak(events), + /* K104 */ be_nested_str_weak(EventHandler), + /* K105 */ be_nested_str_weak(ui), + /* K106 */ be_nested_str_weak(wifi), + /* K107 */ be_nested_str_weak(up), + /* K108 */ be_nested_str_weak(eth), + /* K109 */ be_nested_str_weak(start), + /* K110 */ be_nested_str_weak(add_rule), + /* K111 */ be_nested_str_weak(Wifi_X23Connected), + /* K112 */ be_nested_str_weak(matter_start), + /* K113 */ be_nested_str_weak(Eth_X23Connected), + /* K114 */ be_nested_str_weak(init_basic_commissioning), + /* K115 */ be_nested_str_weak(add_driver), + /* K116 */ be_nested_str_weak(register_commands), + /* K117 */ be_nested_str_weak(every_second), + /* K118 */ be_nested_str_weak(http_remotes), + /* K119 */ be_nested_str_weak(get), + /* K120 */ be_nested_str_weak(http_remote), + /* K121 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20), + /* K122 */ be_nested_str_weak(addr), + /* K123 */ be_nested_str_weak(close), + /* K124 */ be_nested_str_weak(read_sensors_scheduler), + /* K125 */ be_nested_str_weak(every_250ms), + /* K126 */ be_nested_str_weak(PathGenerator), + /* K127 */ be_nested_str_weak(is_direct), + /* K128 */ be_nested_str_weak(next_attribute), + /* K129 */ be_nested_str_weak(get_pi), + /* K130 */ be_nested_str_weak(Path), + /* K131 */ be_nested_str_weak(attribute_updated_ctx), + /* K132 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27), + /* K133 */ be_nested_str_weak(_X27_X20skipping), + /* K134 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s), + /* K135 */ be_nested_str_weak(conf_to_log), + /* K136 */ be_nested_str_weak(signal_endpoints_changed), + /* K137 */ be_nested_str_weak(MtrInfo_one), + /* K138 */ be_nested_str_weak(int), + /* K139 */ be_nested_str_weak(find_plugin_by_friendly_name), + /* K140 */ be_nested_str_weak(resp_cmnd_done), + /* K141 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K142 */ be_nested_str_weak(UDPServer), + /* K143 */ be_nested_str_weak(FILENAME), + /* K144 */ be_nested_str_weak(read), + /* K145 */ be_nested_str_weak(root_discriminator), + /* K146 */ be_nested_str_weak(distinguish), + /* K147 */ be_nested_str_weak(root_passcode), + /* K148 */ be_nested_str_weak(passcode), + /* K149 */ be_nested_str_weak(nextep), + /* K150 */ be_nested_str_weak(config), + /* K151 */ be_nested_str_weak(debug), + /* K152 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s), + /* K153 */ be_nested_str_weak(check_config_ep), + /* K154 */ be_nested_str_weak(remotes), + /* K155 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20), + /* K156 */ be_nested_str_weak(io_error), + /* K157 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A), + /* K158 */ be_nested_str_weak(_X7C), + /* K159 */ be_nested_str_weak(random), + /* K160 */ be_nested_str_weak(generate_random_passcode), + /* K161 */ be_nested_str_weak(every_50ms), + /* K162 */ be_nested_str_weak(add_cmd), + /* K163 */ be_nested_str_weak(MtrJoin), + /* K164 */ be_nested_str_weak(MtrUpdate), + /* K165 */ be_nested_str_weak(MtrInfo), + /* K166 */ be_nested_str_weak(update_remotes_info), + /* K167 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i), + /* K168 */ be_nested_str_weak(true), + /* K169 */ be_nested_str_weak(false), + /* K170 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue), + /* K171 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A), + /* K172 */ be_nested_str_weak(dump), + /* K173 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A), + /* K174 */ be_nested_str_weak(_X7D), + /* K175 */ be_nested_str_weak(w), + /* K176 */ be_nested_str_weak(write), + /* K177 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s), + /* K178 */ be_nested_str_weak(_X20and_X20configuration), + /* K179 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K180 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20), + /* K181 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i), + /* K182 */ be_nested_str_weak(clean_remotes), + /* K183 */ be_nested_str_weak(invoke_request), + /* K184 */ be_nested_str_weak(time_reached), + /* K185 */ be_nested_str_weak(_trigger_read_sensors), + /* K186 */ be_nested_str_weak(millis), + /* K187 */ be_nested_str_weak(get_timeout), + /* K188 */ be_nested_str_weak(set_timeout), + /* K189 */ be_nested_str_weak(HTTP_remote), + /* K190 */ be_nested_str_weak(set_info), + /* K191 */ be_nested_str_weak(resp_cmnd_str), + /* K192 */ be_nested_str_weak(Invalid_X20JSON), + /* K193 */ be_nested_str_weak(find_key_i), + /* K194 */ be_nested_str_weak(Ep), + /* K195 */ be_nested_str_weak(Name), + /* K196 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute), + /* K197 */ be_nested_str_weak(Invalid_X20Device), + /* K198 */ be_nested_str_weak(VIRTUAL), + /* K199 */ be_nested_str_weak(Device_X20is_X20not_X20virtual), + /* K200 */ be_nested_str_weak(consolidate_update_commands), + /* K201 */ be_nested_str_weak(find_list_i), + /* K202 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27), + /* K203 */ be_nested_str_weak(update_virtual), + /* K204 */ be_nested_str_weak(state_json), + /* K205 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D), + /* K206 */ be_nested_str_weak(resp_cmnd), + /* K207 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute), + /* K208 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D), + /* K209 */ be_nested_str_weak(publish_result), + /* K210 */ be_nested_str_weak(start_root_basic_commissioning), + /* K211 */ be_nested_str_weak(ARG), + /* K212 */ be_nested_str_weak(get_info), }; @@ -295,12 +253,12 @@ be_local_closure(class_Matter_Device_received_ack, /* name */ /******************************************************************** -** Solidified function: start +** Solidified function: msg_received ********************************************************************/ -be_local_closure(class_Matter_Device_start, /* name */ +be_local_closure(class_Matter_Device_msg_received, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 9, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -308,23 +266,16 @@ be_local_closure(class_Matter_Device_start, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(start), + be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88040102, // 0000 GETMBR R1 R0 K2 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040103, // 0003 GETMET R1 R0 K3 - 0x7C040200, // 0004 CALL R1 1 - 0x8C040104, // 0005 GETMET R1 R0 K4 - 0x880C0105, // 0006 GETMBR R3 R0 K5 - 0x7C040400, // 0007 CALL R1 2 - 0x88040106, // 0008 GETMBR R1 R0 K6 - 0x8C040307, // 0009 GETMET R1 R1 K7 - 0x7C040200, // 000A CALL R1 1 - 0x50040200, // 000B LDBOOL R1 1 0 - 0x90020401, // 000C SETMBR R0 K2 R1 - 0x80000000, // 000D RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x88100102, // 0000 GETMBR R4 R0 K2 + 0x8C100903, // 0001 GETMET R4 R4 K3 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 }) ) ); @@ -348,16 +299,16 @@ be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ be_str_weak(event_fabrics_saved), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x8C040309, // 0001 GETMET R1 R1 K9 + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040305, // 0001 GETMET R1 R1 K5 0x7C040200, // 0002 CALL R1 1 - 0x2404030A, // 0003 GT R1 R1 K10 + 0x24040306, // 0003 GT R1 R1 K6 0x78060005, // 0004 JMPF R1 #000B - 0x8804010B, // 0005 GETMBR R1 R0 K11 + 0x88040107, // 0005 GETMBR R1 R0 K7 0x74060003, // 0006 JMPT R1 #000B 0x50040200, // 0007 LDBOOL R1 1 0 - 0x90021601, // 0008 SETMBR R0 K11 R1 - 0x8C04010C, // 0009 GETMET R1 R0 K12 + 0x90020E01, // 0008 SETMBR R0 K7 R1 + 0x8C040108, // 0009 GETMET R1 R0 K8 0x7C040200, // 000A CALL R1 1 0x80000000, // 000B RET 0 }) @@ -382,12 +333,14 @@ be_local_closure(class_Matter_Device_save_before_restart, /* name */ &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(save_before_restart), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C04010D, // 0000 GETMET R1 R0 K13 - 0x7C040200, // 0001 CALL R1 1 - 0x8C04010E, // 0002 GETMET R1 R0 K14 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x88040109, // 0003 GETMBR R1 R0 K9 + 0x8C04030B, // 0004 GETMET R1 R1 K11 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 }) ) ); @@ -411,27 +364,27 @@ be_local_closure(class_Matter_Device_conf_to_log, /* name */ be_str_weak(conf_to_log), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x5804000F, // 0000 LDCONST R1 K15 - 0x58080010, // 0001 LDCONST R2 K16 + 0x5804000C, // 0000 LDCONST R1 K12 + 0x5808000D, // 0001 LDCONST R2 K13 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100311, // 0003 GETMET R4 R1 K17 + 0x8C10030E, // 0003 GETMET R4 R1 K14 0x5C180000, // 0004 MOVE R6 R0 0x7C100400, // 0005 CALL R4 2 0x7C0C0200, // 0006 CALL R3 1 0xA802000B, // 0007 EXBLK 0 #0014 0x5C100600, // 0008 MOVE R4 R3 0x7C100000, // 0009 CALL R4 0 - 0x1C140912, // 000A EQ R5 R4 K18 + 0x1C14090F, // 000A EQ R5 R4 K15 0x78160000, // 000B JMPF R5 #000D 0x7001FFFA, // 000C JMP #0008 0x60140018, // 000D GETGBL R5 G24 - 0x58180013, // 000E LDCONST R6 K19 + 0x58180010, // 000E LDCONST R6 K16 0x5C1C0800, // 000F MOVE R7 R4 0x94200004, // 0010 GETIDX R8 R0 R4 0x7C140600, // 0011 CALL R5 3 0x00080405, // 0012 ADD R2 R2 R5 0x7001FFF3, // 0013 JMP #0008 - 0x580C0014, // 0014 LDCONST R3 K20 + 0x580C0011, // 0014 LDCONST R3 K17 0xAC0C0200, // 0015 CATCH R3 1 0 0xB0080000, // 0016 RAISE 2 R0 R0 0x80040400, // 0017 RET 1 R2 @@ -441,6 +394,978 @@ be_local_closure(class_Matter_Device_conf_to_log, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: find_plugin_by_friendly_name +********************************************************************/ +be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(find_plugin_by_friendly_name), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x1C080506, // 0006 EQ R2 R2 K6 + 0x780A0001, // 0007 JMPF R2 #000A + 0x4C080000, // 0008 LDNIL R2 + 0x80040400, // 0009 RET 1 R2 + 0x58080006, // 000A LDCONST R2 K6 + 0x600C000C, // 000B GETGBL R3 G12 + 0x88100112, // 000C GETMBR R4 R0 K18 + 0x7C0C0200, // 000D CALL R3 1 + 0x140C0403, // 000E LT R3 R2 R3 + 0x780E0010, // 000F JMPF R3 #0021 + 0x880C0112, // 0010 GETMBR R3 R0 K18 + 0x940C0602, // 0011 GETIDX R3 R3 R2 + 0x8C100713, // 0012 GETMET R4 R3 K19 + 0x7C100200, // 0013 CALL R4 1 + 0x4C140000, // 0014 LDNIL R5 + 0x20140805, // 0015 NE R5 R4 R5 + 0x78160007, // 0016 JMPF R5 #001F + 0x6014000C, // 0017 GETGBL R5 G12 + 0x5C180800, // 0018 MOVE R6 R4 + 0x7C140200, // 0019 CALL R5 1 + 0x24140B06, // 001A GT R5 R5 K6 + 0x78160002, // 001B JMPF R5 #001F + 0x1C140801, // 001C EQ R5 R4 R1 + 0x78160000, // 001D JMPF R5 #001F + 0x80040600, // 001E RET 1 R3 + 0x00080514, // 001F ADD R2 R2 K20 + 0x7001FFE9, // 0020 JMP #000B + 0x4C0C0000, // 0021 LDNIL R3 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_remote_info +********************************************************************/ +be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(get_plugin_remote_info), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88080115, // 0000 GETMBR R2 R0 K21 + 0x8C080516, // 0001 GETMET R2 R2 K22 + 0x5C100200, // 0002 MOVE R4 R1 + 0x60140013, // 0003 GETGBL R5 G19 + 0x7C140000, // 0004 CALL R5 0 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_fabric +********************************************************************/ +be_local_closure(class_Matter_Device_remove_fabric, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(remove_fabric), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0019, // 0002 JMPF R2 #001D + 0xB80A2E00, // 0003 GETNGBL R2 K23 + 0x8C0C0319, // 0004 GETMET R3 R1 K25 + 0x7C0C0200, // 0005 CALL R3 1 + 0x8C0C071A, // 0006 GETMET R3 R3 K26 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C071B, // 0008 GETMET R3 R3 K27 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C071C, // 000A GETMET R3 R3 K28 + 0x7C0C0200, // 000B CALL R3 1 + 0x000E3003, // 000C ADD R3 K24 R3 + 0x5810001D, // 000D LDCONST R4 K29 + 0x7C080400, // 000E CALL R2 2 + 0x88080102, // 000F GETMBR R2 R0 K2 + 0x8808051E, // 0010 GETMBR R2 R2 K30 + 0x8808051F, // 0011 GETMBR R2 R2 K31 + 0x8C080520, // 0012 GETMET R2 R2 K32 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x88080109, // 0015 GETMBR R2 R0 K9 + 0x8C080521, // 0016 GETMET R2 R2 K33 + 0x5C100200, // 0017 MOVE R4 R1 + 0x7C080400, // 0018 CALL R2 2 + 0x88080104, // 0019 GETMBR R2 R0 K4 + 0x8C080522, // 001A GETMET R2 R2 K34 + 0x5C100200, // 001B MOVE R4 R1 + 0x7C080400, // 001C CALL R2 2 + 0x88080104, // 001D GETMBR R2 R0 K4 + 0x8C080523, // 001E GETMET R2 R2 K35 + 0x7C080200, // 001F CALL R2 1 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resolve_attribute_read_solo +********************************************************************/ +be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(resolve_attribute_read_solo), + &be_const_str_solidified, + ( &(const binstruction[47]) { /* code */ + 0x88080324, // 0000 GETMBR R2 R1 K36 + 0x880C0325, // 0001 GETMBR R3 R1 K37 + 0x88100326, // 0002 GETMBR R4 R1 K38 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140405, // 0004 EQ R5 R2 R5 + 0x74160005, // 0005 JMPT R5 #000C + 0x4C140000, // 0006 LDNIL R5 + 0x1C140605, // 0007 EQ R5 R3 R5 + 0x74160002, // 0008 JMPT R5 #000C + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160001, // 000B JMPF R5 #000E + 0x4C140000, // 000C LDNIL R5 + 0x80040A00, // 000D RET 1 R5 + 0x8C140127, // 000E GETMET R5 R0 K39 + 0x5C1C0400, // 000F MOVE R7 R2 + 0x7C140400, // 0010 CALL R5 2 + 0x4C180000, // 0011 LDNIL R6 + 0x1C180A06, // 0012 EQ R6 R5 R6 + 0x781A0005, // 0013 JMPF R6 #001A + 0xB81A5200, // 0014 GETNGBL R6 K41 + 0x88180D2A, // 0015 GETMBR R6 R6 K42 + 0x90065006, // 0016 SETMBR R1 K40 R6 + 0x4C180000, // 0017 LDNIL R6 + 0x80040C00, // 0018 RET 1 R6 + 0x70020013, // 0019 JMP #002E + 0x8C180B2B, // 001A GETMET R6 R5 K43 + 0x5C200600, // 001B MOVE R8 R3 + 0x7C180400, // 001C CALL R6 2 + 0x741A0005, // 001D JMPT R6 #0024 + 0xB81A5200, // 001E GETNGBL R6 K41 + 0x88180D2C, // 001F GETMBR R6 R6 K44 + 0x90065006, // 0020 SETMBR R1 K40 R6 + 0x4C180000, // 0021 LDNIL R6 + 0x80040C00, // 0022 RET 1 R6 + 0x70020009, // 0023 JMP #002E + 0x8C180B2D, // 0024 GETMET R6 R5 K45 + 0x5C200600, // 0025 MOVE R8 R3 + 0x5C240800, // 0026 MOVE R9 R4 + 0x7C180600, // 0027 CALL R6 3 + 0x741A0004, // 0028 JMPT R6 #002E + 0xB81A5200, // 0029 GETNGBL R6 K41 + 0x88180D2E, // 002A GETMBR R6 R6 K46 + 0x90065006, // 002B SETMBR R1 K40 R6 + 0x4C180000, // 002C LDNIL R6 + 0x80040C00, // 002D RET 1 R6 + 0x80040A00, // 002E RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: signal_endpoints_changed +********************************************************************/ +be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(signal_endpoints_changed), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C04012F, // 0000 GETMET R1 R0 K47 + 0x580C0006, // 0001 LDCONST R3 K6 + 0x5412001C, // 0002 LDINT R4 29 + 0x58140030, // 0003 LDCONST R5 K48 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C040A00, // 0005 CALL R1 5 + 0x8C04012F, // 0006 GETMET R1 R0 K47 + 0xB80E5200, // 0007 GETNGBL R3 K41 + 0x880C0731, // 0008 GETMBR R3 R3 K49 + 0x5412001C, // 0009 LDINT R4 29 + 0x58140030, // 000A LDCONST R5 K48 + 0x50180000, // 000B LDBOOL R6 0 0 + 0x7C040A00, // 000C CALL R1 5 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: autoconf_device +********************************************************************/ +be_local_closure(class_Matter_Device_autoconf_device, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(autoconf_device), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0xA4066400, // 0000 IMPORT R1 K50 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0112, // 0002 GETMBR R3 R0 K18 + 0x7C080200, // 0003 CALL R2 1 + 0x24080506, // 0004 GT R2 R2 K6 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x80000400, // 0006 RET 0 + 0x88080133, // 0007 GETMBR R2 R0 K51 + 0x4C0C0000, // 0008 LDNIL R3 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0004, // 000A JMPF R2 #0010 + 0xB80A5200, // 000B GETNGBL R2 K41 + 0x8C080534, // 000C GETMET R2 R2 K52 + 0x5C100000, // 000D MOVE R4 R0 + 0x7C080400, // 000E CALL R2 2 + 0x90026602, // 000F SETMBR R0 K51 R2 + 0x88080107, // 0010 GETMBR R2 R0 K7 + 0x740A000F, // 0011 JMPT R2 #0022 + 0x88080133, // 0012 GETMBR R2 R0 K51 + 0x8C080536, // 0013 GETMET R2 R2 K54 + 0x7C080200, // 0014 CALL R2 1 + 0x90026A02, // 0015 SETMBR R0 K53 R2 + 0x60080013, // 0016 GETGBL R2 G19 + 0x7C080000, // 0017 CALL R2 0 + 0x90022A02, // 0018 SETMBR R0 K21 R2 + 0x8C080137, // 0019 GETMET R2 R0 K55 + 0x7C080200, // 001A CALL R2 1 + 0xB80A2E00, // 001B GETNGBL R2 K23 + 0x600C0008, // 001C GETGBL R3 G8 + 0x88100135, // 001D GETMBR R4 R0 K53 + 0x7C0C0200, // 001E CALL R3 1 + 0x000E7003, // 001F ADD R3 K56 R3 + 0x58100030, // 0020 LDCONST R4 K48 + 0x7C080400, // 0021 CALL R2 2 + 0x88080133, // 0022 GETMBR R2 R0 K51 + 0x8C080539, // 0023 GETMET R2 R2 K57 + 0x88100135, // 0024 GETMBR R4 R0 K53 + 0x7C080400, // 0025 CALL R2 2 + 0x88080107, // 0026 GETMBR R2 R0 K7 + 0x740A0008, // 0027 JMPT R2 #0031 + 0x88080104, // 0028 GETMBR R2 R0 K4 + 0x8C080505, // 0029 GETMET R2 R2 K5 + 0x7C080200, // 002A CALL R2 1 + 0x24080506, // 002B GT R2 R2 K6 + 0x780A0003, // 002C JMPF R2 #0031 + 0x50080200, // 002D LDBOOL R2 1 0 + 0x90020E02, // 002E SETMBR R0 K7 R2 + 0x8C080108, // 002F GETMET R2 R0 K8 + 0x7C080200, // 0030 CALL R2 1 + 0x80000000, // 0031 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _trigger_read_sensors +********************************************************************/ +be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(_trigger_read_sensors), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0xA4066400, // 0000 IMPORT R1 K50 + 0xB80A7400, // 0001 GETNGBL R2 K58 + 0x8C08053B, // 0002 GETMET R2 R2 K59 + 0x7C080200, // 0003 CALL R2 1 + 0xB80E7400, // 0004 GETNGBL R3 K58 + 0x8C0C073C, // 0005 GETMET R3 R3 K60 + 0x58140030, // 0006 LDCONST R5 K48 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0006, // 0008 JMPF R3 #0010 + 0xB80E2E00, // 0009 GETNGBL R3 K23 + 0x60100008, // 000A GETGBL R4 G8 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C100200, // 000C CALL R4 1 + 0x00127A04, // 000D ADD R4 K61 R4 + 0x58140030, // 000E LDCONST R5 K48 + 0x7C0C0400, // 000F CALL R3 2 + 0x4C0C0000, // 0010 LDNIL R3 + 0x1C0C0403, // 0011 EQ R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x80000600, // 0013 RET 0 + 0x8C0C033E, // 0014 GETMET R3 R1 K62 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x4C100000, // 0017 LDNIL R4 + 0x20100604, // 0018 NE R4 R3 R4 + 0x7812000D, // 0019 JMPF R4 #0028 + 0x58100006, // 001A LDCONST R4 K6 + 0x6014000C, // 001B GETGBL R5 G12 + 0x88180112, // 001C GETMBR R6 R0 K18 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160006, // 001F JMPF R5 #0027 + 0x88140112, // 0020 GETMBR R5 R0 K18 + 0x94140A04, // 0021 GETIDX R5 R5 R4 + 0x8C140B3F, // 0022 GETMET R5 R5 K63 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C140400, // 0024 CALL R5 2 + 0x00100914, // 0025 ADD R4 R4 K20 + 0x7001FFF3, // 0026 JMP #001B + 0x70020006, // 0027 JMP #002F + 0xB8122E00, // 0028 GETNGBL R4 K23 + 0x60140008, // 0029 GETGBL R5 G8 + 0x5C180400, // 002A MOVE R6 R2 + 0x7C140200, // 002B CALL R5 1 + 0x00168005, // 002C ADD R5 K64 R5 + 0x58180030, // 002D LDCONST R6 K48 + 0x7C100400, // 002E CALL R4 2 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_active_endpoints +********************************************************************/ +be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(get_active_endpoints), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100112, // 0003 GETMBR R4 R0 K18 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020011, // 0005 EXBLK 0 #0018 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140941, // 0008 GETMET R5 R4 K65 + 0x7C140200, // 0009 CALL R5 1 + 0x78060002, // 000A JMPF R1 #000E + 0x1C180B06, // 000B EQ R6 R5 K6 + 0x781A0000, // 000C JMPF R6 #000E + 0x7001FFF7, // 000D JMP #0006 + 0x8C180516, // 000E GETMET R6 R2 K22 + 0x5C200A00, // 000F MOVE R8 R5 + 0x7C180400, // 0010 CALL R6 2 + 0x4C1C0000, // 0011 LDNIL R7 + 0x1C180C07, // 0012 EQ R6 R6 R7 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C180542, // 0014 GETMET R6 R2 K66 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x7C180400, // 0016 CALL R6 2 + 0x7001FFED, // 0017 JMP #0006 + 0x580C0011, // 0018 LDCONST R3 K17 + 0xAC0C0200, // 0019 CATCH R3 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x80040400, // 001B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_send +********************************************************************/ +be_local_closure(class_Matter_Device_msg_send, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(msg_send), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080543, // 0001 GETMET R2 R2 K67 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(class_Matter_Device_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB8067400, // 0000 GETNGBL R1 K58 + 0x8C040344, // 0001 GETMET R1 R1 K68 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040100, // 0006 GETMBR R1 R0 K0 + 0x8C040345, // 0007 GETMET R1 R1 K69 + 0x7C040200, // 0008 CALL R1 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: adjust_next_ep +********************************************************************/ +be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(adjust_next_ep), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080135, // 0001 GETMBR R2 R0 K53 + 0x8C080546, // 0002 GETMET R2 R2 K70 + 0x7C080200, // 0003 CALL R2 1 + 0x7C040200, // 0004 CALL R1 1 + 0xA802000A, // 0005 EXBLK 0 #0011 + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x600C0009, // 0008 GETGBL R3 G9 + 0x5C100400, // 0009 MOVE R4 R2 + 0x7C0C0200, // 000A CALL R3 1 + 0x88100147, // 000B GETMBR R4 R0 K71 + 0x28100604, // 000C GE R4 R3 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x00100714, // 000E ADD R4 R3 K20 + 0x90028E04, // 000F SETMBR R0 K71 R4 + 0x7001FFF4, // 0010 JMP #0006 + 0x58040011, // 0011 LDCONST R1 K17 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_read_sensors_schedule +********************************************************************/ +be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(add_read_sensors_schedule), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88080148, // 0000 GETMBR R2 R0 K72 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x740A0002, // 0003 JMPT R2 #0007 + 0x88080148, // 0004 GETMBR R2 R0 K72 + 0x24080401, // 0005 GT R2 R2 R1 + 0x780A0005, // 0006 JMPF R2 #000D + 0x90029001, // 0007 SETMBR R0 K72 R1 + 0xB80A5200, // 0008 GETNGBL R2 K41 + 0x8C08054A, // 0009 GETMET R2 R2 K74 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x90029202, // 000C SETMBR R0 K73 R2 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: button_pressed +********************************************************************/ +be_local_closure(class_Matter_Device_button_pressed, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(button_pressed), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x540E000F, // 0000 LDINT R3 16 + 0x3C0C0403, // 0001 SHR R3 R2 R3 + 0x541200FE, // 0002 LDINT R4 255 + 0x2C0C0604, // 0003 AND R3 R3 R4 + 0x54120007, // 0004 LDINT R4 8 + 0x3C100404, // 0005 SHR R4 R2 R4 + 0x541600FE, // 0006 LDINT R5 255 + 0x2C100805, // 0007 AND R4 R4 R5 + 0x541600FE, // 0008 LDINT R5 255 + 0x2C140405, // 0009 AND R5 R2 R5 + 0x541A0017, // 000A LDINT R6 24 + 0x3C180406, // 000B SHR R6 R2 R6 + 0x541E00FE, // 000C LDINT R7 255 + 0x2C180C07, // 000D AND R6 R6 R7 + 0x8C1C014B, // 000E GETMET R7 R0 K75 + 0x00240B14, // 000F ADD R9 R5 K20 + 0x20280604, // 0010 NE R10 R3 R4 + 0x782A0001, // 0011 JMPF R10 #0014 + 0x58280014, // 0012 LDCONST R10 K20 + 0x70020000, // 0013 JMP #0015 + 0x58280006, // 0014 LDCONST R10 K6 + 0x780E0001, // 0015 JMPF R3 #0018 + 0x582C0006, // 0016 LDCONST R11 K6 + 0x70020000, // 0017 JMP #0019 + 0x582C0014, // 0018 LDCONST R11 K20 + 0x5C300C00, // 0019 MOVE R12 R6 + 0x7C1C0A00, // 001A CALL R7 5 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_Matter_Device_start, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8804014C, // 0000 GETMBR R1 R0 K76 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C04014D, // 0003 GETMET R1 R0 K77 + 0x7C040200, // 0004 CALL R1 1 + 0x8C04014E, // 0005 GETMET R1 R0 K78 + 0x880C014F, // 0006 GETMBR R3 R0 K79 + 0x7C040400, // 0007 CALL R1 2 + 0x88040109, // 0008 GETMBR R1 R0 K9 + 0x8C040350, // 0009 GETMET R1 R1 K80 + 0x7C040200, // 000A CALL R1 1 + 0x50040200, // 000B LDBOOL R1 1 0 + 0x90029801, // 000C SETMBR R0 K76 R1 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_plugin_class_displayname +********************************************************************/ +be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(get_plugin_class_displayname), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88080151, // 0000 GETMBR R2 R0 K81 + 0x8C080516, // 0001 GETMET R2 R2 K22 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x880C0552, // 0005 GETMBR R3 R2 K82 + 0x70020000, // 0006 JMP #0008 + 0x580C000D, // 0007 LDCONST R3 K13 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_plugin_by_endpoint +********************************************************************/ +be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(find_plugin_by_endpoint), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x58080006, // 0000 LDCONST R2 K6 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100112, // 0002 GETMBR R4 R0 K18 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x880C0112, // 0006 GETMBR R3 R0 K18 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8C100741, // 0008 GETMET R4 R3 K65 + 0x7C100200, // 0009 CALL R4 1 + 0x1C100801, // 000A EQ R4 R4 R1 + 0x78120000, // 000B JMPF R4 #000D + 0x80040600, // 000C RET 1 R3 + 0x00080514, // 000D ADD R2 R2 K20 + 0x7001FFF1, // 000E JMP #0001 + 0x4C0C0000, // 000F LDNIL R3 + 0x80040600, // 0010 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sort_distinct +********************************************************************/ +be_local_closure(class_Matter_Device_sort_distinct, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(sort_distinct), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x5804000C, // 0000 LDCONST R1 K12 + 0x60080010, // 0001 GETGBL R2 G16 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x040C0714, // 0005 SUB R3 R3 K20 + 0x400E2803, // 0006 CONNECT R3 K20 R3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020010, // 0008 EXBLK 0 #001A + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x94100003, // 000B GETIDX R4 R0 R3 + 0x5C140600, // 000C MOVE R5 R3 + 0x24180B06, // 000D GT R6 R5 K6 + 0x781A0008, // 000E JMPF R6 #0018 + 0x04180B14, // 000F SUB R6 R5 K20 + 0x94180006, // 0010 GETIDX R6 R0 R6 + 0x24180C04, // 0011 GT R6 R6 R4 + 0x781A0004, // 0012 JMPF R6 #0018 + 0x04180B14, // 0013 SUB R6 R5 K20 + 0x94180006, // 0014 GETIDX R6 R0 R6 + 0x98000A06, // 0015 SETIDX R0 R5 R6 + 0x04140B14, // 0016 SUB R5 R5 K20 + 0x7001FFF4, // 0017 JMP #000D + 0x98000A04, // 0018 SETIDX R0 R5 R4 + 0x7001FFEE, // 0019 JMP #0009 + 0x58080011, // 001A LDCONST R2 K17 + 0xAC080200, // 001B CATCH R2 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x58080014, // 001D LDCONST R2 K20 + 0x600C000C, // 001E GETGBL R3 G12 + 0x5C100000, // 001F MOVE R4 R0 + 0x7C0C0200, // 0020 CALL R3 1 + 0x180C0714, // 0021 LE R3 R3 K20 + 0x780E0000, // 0022 JMPF R3 #0024 + 0x80040000, // 0023 RET 1 R0 + 0x940C0106, // 0024 GETIDX R3 R0 K6 + 0x6010000C, // 0025 GETGBL R4 G12 + 0x5C140000, // 0026 MOVE R5 R0 + 0x7C100200, // 0027 CALL R4 1 + 0x14100404, // 0028 LT R4 R2 R4 + 0x78120009, // 0029 JMPF R4 #0034 + 0x94100002, // 002A GETIDX R4 R0 R2 + 0x1C100803, // 002B EQ R4 R4 R3 + 0x78120003, // 002C JMPF R4 #0031 + 0x8C100153, // 002D GETMET R4 R0 K83 + 0x5C180400, // 002E MOVE R6 R2 + 0x7C100400, // 002F CALL R4 2 + 0x70020001, // 0030 JMP #0033 + 0x940C0002, // 0031 GETIDX R3 R0 R2 + 0x00080514, // 0032 ADD R2 R2 K20 + 0x7001FFF0, // 0033 JMP #0025 + 0x80040000, // 0034 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_config_ep +********************************************************************/ +be_local_closure(class_Matter_Device_check_config_ep, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(check_config_ep), + &be_const_str_solidified, + ( &(const binstruction[77]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x600C0010, // 0003 GETGBL R3 G16 + 0x88100135, // 0004 GETMBR R4 R0 K53 + 0x8C100946, // 0005 GETMET R4 R4 K70 + 0x7C100200, // 0006 CALL R4 1 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020007, // 0008 EXBLK 0 #0011 + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x8C140542, // 000B GETMET R5 R2 K66 + 0x601C0009, // 000C GETGBL R7 G9 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C1C0200, // 000E CALL R7 1 + 0x7C140400, // 000F CALL R5 2 + 0x7001FFF7, // 0010 JMP #0009 + 0x580C0011, // 0011 LDCONST R3 K17 + 0xAC0C0200, // 0012 CATCH R3 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x600C0010, // 0014 GETGBL R3 G16 + 0x5C100400, // 0015 MOVE R4 R2 + 0x7C0C0200, // 0016 CALL R3 1 + 0xA8020030, // 0017 EXBLK 0 #0049 + 0x5C100600, // 0018 MOVE R4 R3 + 0x7C100000, // 0019 CALL R4 0 + 0x1C140906, // 001A EQ R5 R4 K6 + 0x7816000B, // 001B JMPF R5 #0028 + 0xB8162E00, // 001C GETNGBL R5 K23 + 0x58180054, // 001D LDCONST R6 K84 + 0x581C001D, // 001E LDCONST R7 K29 + 0x7C140400, // 001F CALL R5 2 + 0x88140135, // 0020 GETMBR R5 R0 K53 + 0x8C140B53, // 0021 GETMET R5 R5 K83 + 0x601C0008, // 0022 GETGBL R7 G8 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C1C0200, // 0024 CALL R7 1 + 0x7C140400, // 0025 CALL R5 2 + 0x50040200, // 0026 LDBOOL R1 1 0 + 0x7002001F, // 0027 JMP #0048 + 0xB8165200, // 0028 GETNGBL R5 K41 + 0x88140B31, // 0029 GETMBR R5 R5 K49 + 0x1C140805, // 002A EQ R5 R4 R5 + 0x7816001B, // 002B JMPF R5 #0048 + 0x50040200, // 002C LDBOOL R1 1 0 + 0xB8162E00, // 002D GETNGBL R5 K23 + 0x60180018, // 002E GETGBL R6 G24 + 0x581C0055, // 002F LDCONST R7 K85 + 0x5C200800, // 0030 MOVE R8 R4 + 0x88240147, // 0031 GETMBR R9 R0 K71 + 0x7C180600, // 0032 CALL R6 3 + 0x581C001D, // 0033 LDCONST R7 K29 + 0x7C140400, // 0034 CALL R5 2 + 0x60140008, // 0035 GETGBL R5 G8 + 0x88180147, // 0036 GETMBR R6 R0 K71 + 0x7C140200, // 0037 CALL R5 1 + 0x88180135, // 0038 GETMBR R6 R0 K53 + 0x601C0008, // 0039 GETGBL R7 G8 + 0x5C200800, // 003A MOVE R8 R4 + 0x7C1C0200, // 003B CALL R7 1 + 0x88200135, // 003C GETMBR R8 R0 K53 + 0x941C1007, // 003D GETIDX R7 R8 R7 + 0x98180A07, // 003E SETIDX R6 R5 R7 + 0x88140135, // 003F GETMBR R5 R0 K53 + 0x8C140B53, // 0040 GETMET R5 R5 K83 + 0x601C0008, // 0041 GETGBL R7 G8 + 0x5C200800, // 0042 MOVE R8 R4 + 0x7C1C0200, // 0043 CALL R7 1 + 0x7C140400, // 0044 CALL R5 2 + 0x88140147, // 0045 GETMBR R5 R0 K71 + 0x00140B14, // 0046 ADD R5 R5 K20 + 0x90028E05, // 0047 SETMBR R0 K71 R5 + 0x7001FFCE, // 0048 JMP #0018 + 0x580C0011, // 0049 LDCONST R3 K17 + 0xAC0C0200, // 004A CATCH R3 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x80040200, // 004C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: button_handler +********************************************************************/ +be_local_closure(class_Matter_Device_button_handler, /* name */ + be_nested_proto( + 14, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(button_handler), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x58140006, // 0000 LDCONST R5 K6 + 0xA41AAC00, // 0001 IMPORT R6 K86 + 0x601C000C, // 0002 GETGBL R7 G12 + 0x88200112, // 0003 GETMBR R8 R0 K18 + 0x7C1C0200, // 0004 CALL R7 1 + 0x141C0A07, // 0005 LT R7 R5 R7 + 0x781E0010, // 0006 JMPF R7 #0018 + 0x881C0112, // 0007 GETMBR R7 R0 K18 + 0x941C0E05, // 0008 GETIDX R7 R7 R5 + 0x8C200D57, // 0009 GETMET R8 R6 K87 + 0x5C280E00, // 000A MOVE R10 R7 + 0x582C004B, // 000B LDCONST R11 K75 + 0x7C200600, // 000C CALL R8 3 + 0x78220007, // 000D JMPF R8 #0016 + 0x88200112, // 000E GETMBR R8 R0 K18 + 0x94201005, // 000F GETIDX R8 R8 R5 + 0x8C20114B, // 0010 GETMET R8 R8 K75 + 0x5C280200, // 0011 MOVE R10 R1 + 0x5C2C0400, // 0012 MOVE R11 R2 + 0x5C300600, // 0013 MOVE R12 R3 + 0x5C340800, // 0014 MOVE R13 R4 + 0x7C200A00, // 0015 CALL R8 5 + 0x00140B14, // 0016 ADD R5 R5 K20 + 0x7001FFE9, // 0017 JMP #0002 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: init ********************************************************************/ @@ -522,112 +1447,116 @@ be_local_closure(class_Matter_Device_init, /* name */ &be_ktab_class_Matter_Device, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[105]) { /* code */ - 0xA4062A00, // 0000 IMPORT R1 K21 - 0xB80A2C00, // 0001 GETNGBL R2 K22 - 0x8C080517, // 0002 GETMET R2 R2 K23 - 0xB8123000, // 0003 GETNGBL R4 K24 - 0x88100919, // 0004 GETMBR R4 R4 K25 + ( &(const binstruction[109]) { /* code */ + 0xA406B000, // 0000 IMPORT R1 K88 + 0xB80A7400, // 0001 GETNGBL R2 K58 + 0x8C080559, // 0002 GETMET R2 R2 K89 + 0xB8125200, // 0003 GETNGBL R4 K41 + 0x8810095A, // 0004 GETMBR R4 R4 K90 0x7C080400, // 0005 CALL R2 2 0x740A0004, // 0006 JMPT R2 #000C - 0xB80A3000, // 0007 GETNGBL R2 K24 - 0x8C08051A, // 0008 GETMET R2 R2 K26 + 0xB80A5200, // 0007 GETNGBL R2 K41 + 0x8C08055B, // 0008 GETMET R2 R2 K91 0x5C100000, // 0009 MOVE R4 R0 0x7C080400, // 000A CALL R2 2 0x80000400, // 000B RET 0 - 0xB80A3000, // 000C GETNGBL R2 K24 - 0xB80E3000, // 000D GETNGBL R3 K24 - 0x8C0C071C, // 000E GETMET R3 R3 K28 + 0xB80A5200, // 000C GETNGBL R2 K41 + 0xB80E5200, // 000D GETNGBL R3 K41 + 0x8C0C075D, // 000E GETMET R3 R3 K93 0x7C0C0200, // 000F CALL R3 1 - 0x900A3603, // 0010 SETMBR R2 K27 R3 + 0x900AB803, // 0010 SETMBR R2 K92 R3 0x50080000, // 0011 LDBOOL R2 0 0 - 0x90020402, // 0012 SETMBR R0 K2 R2 - 0x90023B0A, // 0013 SETMBR R0 K29 K10 + 0x90029802, // 0012 SETMBR R0 K76 R2 + 0x9002BD06, // 0013 SETMBR R0 K94 K6 0x60080012, // 0014 GETGBL R2 G18 0x7C080000, // 0015 CALL R2 0 - 0x90023C02, // 0016 SETMBR R0 K30 R2 + 0x90022402, // 0016 SETMBR R0 K18 R2 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90021602, // 0018 SETMBR R0 K11 R2 + 0x90020E02, // 0018 SETMBR R0 K7 R2 0x60080013, // 0019 GETGBL R2 G19 0x7C080000, // 001A CALL R2 0 - 0x90023E02, // 001B SETMBR R0 K31 R2 - 0x90024121, // 001C SETMBR R0 K32 K33 - 0x50080000, // 001D LDBOOL R2 0 0 - 0x90024402, // 001E SETMBR R0 K34 R2 - 0x50080000, // 001F LDBOOL R2 0 0 - 0x90024602, // 0020 SETMBR R0 K35 R2 - 0x8C080124, // 0021 GETMET R2 R0 K36 - 0x7C080200, // 0022 CALL R2 1 - 0xB80A3000, // 0023 GETNGBL R2 K24 - 0x8C080525, // 0024 GETMET R2 R2 K37 - 0x5C100000, // 0025 MOVE R4 R0 - 0x7C080400, // 0026 CALL R2 2 - 0x90021002, // 0027 SETMBR R0 K8 R2 - 0x88080108, // 0028 GETMBR R2 R0 K8 - 0x8C080526, // 0029 GETMET R2 R2 K38 - 0x7C080200, // 002A CALL R2 1 - 0xB80A3000, // 002B GETNGBL R2 K24 - 0x8C080528, // 002C GETMET R2 R2 K40 - 0x5C100000, // 002D MOVE R4 R0 - 0x7C080400, // 002E CALL R2 2 - 0x90024E02, // 002F SETMBR R0 K39 R2 - 0xB80A3000, // 0030 GETNGBL R2 K24 - 0x8C08052A, // 0031 GETMET R2 R2 K42 - 0x5C100000, // 0032 MOVE R4 R0 - 0x7C080400, // 0033 CALL R2 2 - 0x90025202, // 0034 SETMBR R0 K41 R2 - 0xB80A3000, // 0035 GETNGBL R2 K24 - 0x8C08051A, // 0036 GETMET R2 R2 K26 - 0x5C100000, // 0037 MOVE R4 R0 - 0x7C080400, // 0038 CALL R2 2 - 0x90025602, // 0039 SETMBR R0 K43 R2 - 0xB80A2C00, // 003A GETNGBL R2 K22 - 0x8C08052C, // 003B GETMET R2 R2 K44 - 0x7C080200, // 003C CALL R2 1 - 0x9408052D, // 003D GETIDX R2 R2 K45 - 0x740A0004, // 003E JMPT R2 #0044 - 0xB80A2C00, // 003F GETNGBL R2 K22 - 0x8C08052E, // 0040 GETMET R2 R2 K46 - 0x7C080200, // 0041 CALL R2 1 - 0x9408052D, // 0042 GETIDX R2 R2 K45 - 0x780A0001, // 0043 JMPF R2 #0046 - 0x8C08012F, // 0044 GETMET R2 R0 K47 - 0x7C080200, // 0045 CALL R2 1 - 0xB80A2C00, // 0046 GETNGBL R2 K22 - 0x8C08052C, // 0047 GETMET R2 R2 K44 - 0x7C080200, // 0048 CALL R2 1 - 0x9408052D, // 0049 GETIDX R2 R2 K45 - 0x740A0005, // 004A JMPT R2 #0051 - 0xB80A2C00, // 004B GETNGBL R2 K22 - 0x8C080530, // 004C GETMET R2 R2 K48 - 0x58100031, // 004D LDCONST R4 K49 - 0x84140000, // 004E CLOSURE R5 P0 - 0x58180032, // 004F LDCONST R6 K50 - 0x7C080800, // 0050 CALL R2 4 - 0xB80A2C00, // 0051 GETNGBL R2 K22 - 0x8C08052E, // 0052 GETMET R2 R2 K46 - 0x7C080200, // 0053 CALL R2 1 - 0x9408052D, // 0054 GETIDX R2 R2 K45 - 0x740A0005, // 0055 JMPT R2 #005C - 0xB80A2C00, // 0056 GETNGBL R2 K22 - 0x8C080530, // 0057 GETMET R2 R2 K48 - 0x58100033, // 0058 LDCONST R4 K51 - 0x84140001, // 0059 CLOSURE R5 P1 - 0x58180032, // 005A LDCONST R6 K50 - 0x7C080800, // 005B CALL R2 4 - 0xB80A3000, // 005C GETNGBL R2 K24 - 0x8C080534, // 005D GETMET R2 R2 K52 - 0x5C100000, // 005E MOVE R4 R0 - 0x7C080400, // 005F CALL R2 2 - 0x90020C02, // 0060 SETMBR R0 K6 R2 - 0xB80A2C00, // 0061 GETNGBL R2 K22 - 0x8C080535, // 0062 GETMET R2 R2 K53 - 0x5C100000, // 0063 MOVE R4 R0 - 0x7C080400, // 0064 CALL R2 2 - 0x8C080136, // 0065 GETMET R2 R0 K54 - 0x7C080200, // 0066 CALL R2 1 - 0xA0000000, // 0067 CLOSE R0 - 0x80000000, // 0068 RET 0 + 0x90022A02, // 001B SETMBR R0 K21 R2 + 0x8808015F, // 001C GETMBR R2 R0 K95 + 0x90028E02, // 001D SETMBR R0 K71 R2 + 0x50080000, // 001E LDBOOL R2 0 0 + 0x9002C002, // 001F SETMBR R0 K96 R2 + 0x50080000, // 0020 LDBOOL R2 0 0 + 0x9002C202, // 0021 SETMBR R0 K97 R2 + 0xB80A5200, // 0022 GETNGBL R2 K41 + 0x8C080562, // 0023 GETMET R2 R2 K98 + 0x5C100000, // 0024 MOVE R4 R0 + 0x7C080400, // 0025 CALL R2 2 + 0x90021202, // 0026 SETMBR R0 K9 R2 + 0x8C080163, // 0027 GETMET R2 R0 K99 + 0x7C080200, // 0028 CALL R2 1 + 0xB80A5200, // 0029 GETNGBL R2 K41 + 0x8C080564, // 002A GETMET R2 R2 K100 + 0x5C100000, // 002B MOVE R4 R0 + 0x7C080400, // 002C CALL R2 2 + 0x90020802, // 002D SETMBR R0 K4 R2 + 0x88080104, // 002E GETMBR R2 R0 K4 + 0x8C080565, // 002F GETMET R2 R2 K101 + 0x7C080200, // 0030 CALL R2 1 + 0xB80A5200, // 0031 GETNGBL R2 K41 + 0x8C080566, // 0032 GETMET R2 R2 K102 + 0x5C100000, // 0033 MOVE R4 R0 + 0x7C080400, // 0034 CALL R2 2 + 0x90020402, // 0035 SETMBR R0 K2 R2 + 0xB80A5200, // 0036 GETNGBL R2 K41 + 0x8C080568, // 0037 GETMET R2 R2 K104 + 0x5C100000, // 0038 MOVE R4 R0 + 0x7C080400, // 0039 CALL R2 2 + 0x9002CE02, // 003A SETMBR R0 K103 R2 + 0xB80A5200, // 003B GETNGBL R2 K41 + 0x8C08055B, // 003C GETMET R2 R2 K91 + 0x5C100000, // 003D MOVE R4 R0 + 0x7C080400, // 003E CALL R2 2 + 0x9002D202, // 003F SETMBR R0 K105 R2 + 0xB80A7400, // 0040 GETNGBL R2 K58 + 0x8C08056A, // 0041 GETMET R2 R2 K106 + 0x7C080200, // 0042 CALL R2 1 + 0x9408056B, // 0043 GETIDX R2 R2 K107 + 0x740A0004, // 0044 JMPT R2 #004A + 0xB80A7400, // 0045 GETNGBL R2 K58 + 0x8C08056C, // 0046 GETMET R2 R2 K108 + 0x7C080200, // 0047 CALL R2 1 + 0x9408056B, // 0048 GETIDX R2 R2 K107 + 0x780A0001, // 0049 JMPF R2 #004C + 0x8C08016D, // 004A GETMET R2 R0 K109 + 0x7C080200, // 004B CALL R2 1 + 0xB80A7400, // 004C GETNGBL R2 K58 + 0x8C08056A, // 004D GETMET R2 R2 K106 + 0x7C080200, // 004E CALL R2 1 + 0x9408056B, // 004F GETIDX R2 R2 K107 + 0x740A0005, // 0050 JMPT R2 #0057 + 0xB80A7400, // 0051 GETNGBL R2 K58 + 0x8C08056E, // 0052 GETMET R2 R2 K110 + 0x5810006F, // 0053 LDCONST R4 K111 + 0x84140000, // 0054 CLOSURE R5 P0 + 0x58180070, // 0055 LDCONST R6 K112 + 0x7C080800, // 0056 CALL R2 4 + 0xB80A7400, // 0057 GETNGBL R2 K58 + 0x8C08056C, // 0058 GETMET R2 R2 K108 + 0x7C080200, // 0059 CALL R2 1 + 0x9408056B, // 005A GETIDX R2 R2 K107 + 0x740A0005, // 005B JMPT R2 #0062 + 0xB80A7400, // 005C GETNGBL R2 K58 + 0x8C08056E, // 005D GETMET R2 R2 K110 + 0x58100071, // 005E LDCONST R4 K113 + 0x84140001, // 005F CLOSURE R5 P1 + 0x58180070, // 0060 LDCONST R6 K112 + 0x7C080800, // 0061 CALL R2 4 + 0x88080109, // 0062 GETMBR R2 R0 K9 + 0x8C080572, // 0063 GETMET R2 R2 K114 + 0x7C080200, // 0064 CALL R2 1 + 0xB80A7400, // 0065 GETNGBL R2 K58 + 0x8C080573, // 0066 GETMET R2 R2 K115 + 0x5C100000, // 0067 MOVE R4 R0 + 0x7C080400, // 0068 CALL R2 2 + 0x8C080174, // 0069 GETMET R2 R0 K116 + 0x7C080200, // 006A CALL R2 1 + 0xA0000000, // 006B CLOSE R0 + 0x80000000, // 006C RET 0 }) ) ); @@ -635,12 +1564,12 @@ be_local_closure(class_Matter_Device_init, /* name */ /******************************************************************** -** Solidified function: find_plugin_by_friendly_name +** Solidified function: every_second ********************************************************************/ -be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ +be_local_closure(class_Matter_Device_every_second, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ + 3, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -648,44 +1577,22 @@ be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(find_plugin_by_friendly_name), + be_str_weak(every_second), &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x1C08050A, // 0006 EQ R2 R2 K10 - 0x780A0001, // 0007 JMPF R2 #000A - 0x4C080000, // 0008 LDNIL R2 - 0x80040400, // 0009 RET 1 R2 - 0x5808000A, // 000A LDCONST R2 K10 - 0x600C000C, // 000B GETGBL R3 G12 - 0x8810011E, // 000C GETMBR R4 R0 K30 - 0x7C0C0200, // 000D CALL R3 1 - 0x140C0403, // 000E LT R3 R2 R3 - 0x780E0010, // 000F JMPF R3 #0021 - 0x880C011E, // 0010 GETMBR R3 R0 K30 - 0x940C0602, // 0011 GETIDX R3 R3 R2 - 0x8C100737, // 0012 GETMET R4 R3 K55 - 0x7C100200, // 0013 CALL R4 1 - 0x4C140000, // 0014 LDNIL R5 - 0x20140805, // 0015 NE R5 R4 R5 - 0x78160007, // 0016 JMPF R5 #001F - 0x6014000C, // 0017 GETGBL R5 G12 - 0x5C180800, // 0018 MOVE R6 R4 - 0x7C140200, // 0019 CALL R5 1 - 0x24140B0A, // 001A GT R5 R5 K10 - 0x78160002, // 001B JMPF R5 #001F - 0x1C140801, // 001C EQ R5 R4 R1 - 0x78160000, // 001D JMPF R5 #001F - 0x80040600, // 001E RET 1 R3 - 0x00080538, // 001F ADD R2 R2 K56 - 0x7001FFE9, // 0020 JMP #000B - 0x4C0C0000, // 0021 LDNIL R3 - 0x80040600, // 0022 RET 1 R3 + ( &(const binstruction[13]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040375, // 0001 GETMET R1 R1 K117 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040375, // 0004 GETMET R1 R1 K117 + 0x7C040200, // 0005 CALL R1 1 + 0x88040167, // 0006 GETMBR R1 R0 K103 + 0x8C040375, // 0007 GETMET R1 R1 K117 + 0x7C040200, // 0008 CALL R1 1 + 0x88040109, // 0009 GETMBR R1 R0 K9 + 0x8C040375, // 000A GETMET R1 R1 K117 + 0x7C040200, // 000B CALL R1 1 + 0x80000000, // 000C RET 0 }) ) ); @@ -693,12 +1600,87 @@ be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ /******************************************************************** -** Solidified function: get_plugin_remote_info +** Solidified function: k2l_num ********************************************************************/ -be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ +be_local_closure(class_Matter_Device_k2l_num, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 9, /* nstack */ + 1, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(k2l_num), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x5804000C, // 0000 LDCONST R1 K12 + 0x60080012, // 0001 GETGBL R2 G18 + 0x7C080000, // 0002 CALL R2 0 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0003, // 0004 EQ R3 R0 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040400, // 0006 RET 1 R2 + 0x600C0010, // 0007 GETGBL R3 G16 + 0x8C100146, // 0008 GETMET R4 R0 K70 + 0x7C100200, // 0009 CALL R4 1 + 0x7C0C0200, // 000A CALL R3 1 + 0xA8020007, // 000B EXBLK 0 #0014 + 0x5C100600, // 000C MOVE R4 R3 + 0x7C100000, // 000D CALL R4 0 + 0x8C140542, // 000E GETMET R5 R2 K66 + 0x601C0009, // 000F GETGBL R7 G9 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C1C0200, // 0011 CALL R7 1 + 0x7C140400, // 0012 CALL R5 2 + 0x7001FFF7, // 0013 JMP #000C + 0x580C0011, // 0014 LDCONST R3 K17 + 0xAC0C0200, // 0015 CATCH R3 1 0 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x600C0010, // 0017 GETGBL R3 G16 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x5C140400, // 0019 MOVE R5 R2 + 0x7C100200, // 001A CALL R4 1 + 0x04100914, // 001B SUB R4 R4 K20 + 0x40122804, // 001C CONNECT R4 K20 R4 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x94140404, // 0021 GETIDX R5 R2 R4 + 0x5C180800, // 0022 MOVE R6 R4 + 0x241C0D06, // 0023 GT R7 R6 K6 + 0x781E0008, // 0024 JMPF R7 #002E + 0x041C0D14, // 0025 SUB R7 R6 K20 + 0x941C0407, // 0026 GETIDX R7 R2 R7 + 0x241C0E05, // 0027 GT R7 R7 R5 + 0x781E0004, // 0028 JMPF R7 #002E + 0x041C0D14, // 0029 SUB R7 R6 K20 + 0x941C0407, // 002A GETIDX R7 R2 R7 + 0x98080C07, // 002B SETIDX R2 R6 R7 + 0x04180D14, // 002C SUB R6 R6 K20 + 0x7001FFF4, // 002D JMP #0023 + 0x98080C05, // 002E SETIDX R2 R6 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0011, // 0030 LDCONST R3 K17 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x80040400, // 0033 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clean_remotes +********************************************************************/ +be_local_closure(class_Matter_Device_clean_remotes, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -706,16 +1688,403 @@ be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(get_plugin_remote_info), + be_str_weak(clean_remotes), + &be_const_str_solidified, + ( &(const binstruction[80]) { /* code */ + 0xA406AC00, // 0000 IMPORT R1 K86 + 0x88080176, // 0001 GETMBR R2 R0 K118 + 0x780A004B, // 0002 JMPF R2 #004F + 0x60080013, // 0003 GETGBL R2 G19 + 0x7C080000, // 0004 CALL R2 0 + 0x600C0010, // 0005 GETGBL R3 G16 + 0x88100176, // 0006 GETMBR R4 R0 K118 + 0x7C0C0200, // 0007 CALL R3 1 + 0xA8020003, // 0008 EXBLK 0 #000D + 0x5C100600, // 0009 MOVE R4 R3 + 0x7C100000, // 000A CALL R4 0 + 0x98080906, // 000B SETIDX R2 R4 K6 + 0x7001FFFB, // 000C JMP #0009 + 0x580C0011, // 000D LDCONST R3 K17 + 0xAC0C0200, // 000E CATCH R3 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x600C0010, // 0010 GETGBL R3 G16 + 0x88100112, // 0011 GETMBR R4 R0 K18 + 0x7C0C0200, // 0012 CALL R3 1 + 0xA802000F, // 0013 EXBLK 0 #0024 + 0x5C100600, // 0014 MOVE R4 R3 + 0x7C100000, // 0015 CALL R4 0 + 0x8C140377, // 0016 GETMET R5 R1 K119 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200078, // 0018 LDCONST R8 K120 + 0x7C140600, // 0019 CALL R5 3 + 0x4C180000, // 001A LDNIL R6 + 0x20180A06, // 001B NE R6 R5 R6 + 0x781A0005, // 001C JMPF R6 #0023 + 0x8C180516, // 001D GETMET R6 R2 K22 + 0x5C200A00, // 001E MOVE R8 R5 + 0x58240006, // 001F LDCONST R9 K6 + 0x7C180600, // 0020 CALL R6 3 + 0x00180D14, // 0021 ADD R6 R6 K20 + 0x98080A06, // 0022 SETIDX R2 R5 R6 + 0x7001FFEF, // 0023 JMP #0014 + 0x580C0011, // 0024 LDCONST R3 K17 + 0xAC0C0200, // 0025 CATCH R3 1 0 + 0xB0080000, // 0026 RAISE 2 R0 R0 + 0x600C0012, // 0027 GETGBL R3 G18 + 0x7C0C0000, // 0028 CALL R3 0 + 0x60100010, // 0029 GETGBL R4 G16 + 0x8C140546, // 002A GETMET R5 R2 K70 + 0x7C140200, // 002B CALL R5 1 + 0x7C100200, // 002C CALL R4 1 + 0xA8020008, // 002D EXBLK 0 #0037 + 0x5C140800, // 002E MOVE R5 R4 + 0x7C140000, // 002F CALL R5 0 + 0x94180405, // 0030 GETIDX R6 R2 R5 + 0x1C180D06, // 0031 EQ R6 R6 K6 + 0x781A0002, // 0032 JMPF R6 #0036 + 0x8C180742, // 0033 GETMET R6 R3 K66 + 0x5C200A00, // 0034 MOVE R8 R5 + 0x7C180400, // 0035 CALL R6 2 + 0x7001FFF6, // 0036 JMP #002E + 0x58100011, // 0037 LDCONST R4 K17 + 0xAC100200, // 0038 CATCH R4 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x60100010, // 003A GETGBL R4 G16 + 0x5C140600, // 003B MOVE R5 R3 + 0x7C100200, // 003C CALL R4 1 + 0xA802000D, // 003D EXBLK 0 #004C + 0x5C140800, // 003E MOVE R5 R4 + 0x7C140000, // 003F CALL R5 0 + 0xB81A2E00, // 0040 GETNGBL R6 K23 + 0x881C0B7A, // 0041 GETMBR R7 R5 K122 + 0x001EF207, // 0042 ADD R7 K121 R7 + 0x58200030, // 0043 LDCONST R8 K48 + 0x7C180400, // 0044 CALL R6 2 + 0x8C180B7B, // 0045 GETMET R6 R5 K123 + 0x7C180200, // 0046 CALL R6 1 + 0x88180176, // 0047 GETMBR R6 R0 K118 + 0x8C180D53, // 0048 GETMET R6 R6 K83 + 0x88200B7A, // 0049 GETMBR R8 R5 K122 + 0x7C180400, // 004A CALL R6 2 + 0x7001FFF1, // 004B JMP #003E + 0x58100011, // 004C LDCONST R4 K17 + 0xAC100200, // 004D CATCH R4 1 0 + 0xB0080000, // 004E RAISE 2 R0 R0 + 0x80000000, // 004F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_250ms +********************************************************************/ +be_local_closure(class_Matter_Device_every_250ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(every_250ms), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8C04017C, // 0000 GETMET R1 R0 K124 + 0x7C040200, // 0001 CALL R1 1 + 0x58040006, // 0002 LDCONST R1 K6 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C0112, // 0004 GETMBR R3 R0 K18 + 0x7C080200, // 0005 CALL R2 1 + 0x14080202, // 0006 LT R2 R1 R2 + 0x780A0005, // 0007 JMPF R2 #000E + 0x88080112, // 0008 GETMBR R2 R0 K18 + 0x94080401, // 0009 GETIDX R2 R2 R1 + 0x8C08057D, // 000A GETMET R2 R2 K125 + 0x7C080200, // 000B CALL R2 1 + 0x00040314, // 000C ADD R1 R1 K20 + 0x7001FFF4, // 000D JMP #0003 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_attribute_expansion +********************************************************************/ +be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(process_attribute_expansion), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x880C0324, // 0000 GETMBR R3 R1 K36 + 0x88100325, // 0001 GETMBR R4 R1 K37 + 0x88140326, // 0002 GETMBR R5 R1 K38 + 0xB81A5200, // 0003 GETNGBL R6 K41 + 0x8C180D7E, // 0004 GETMET R6 R6 K126 + 0x5C200000, // 0005 MOVE R8 R0 + 0x7C180400, // 0006 CALL R6 2 + 0x8C1C0D6D, // 0007 GETMET R7 R6 K109 + 0x5C240600, // 0008 MOVE R9 R3 + 0x5C280800, // 0009 MOVE R10 R4 + 0x5C2C0A00, // 000A MOVE R11 R5 + 0x7C1C0800, // 000B CALL R7 4 + 0x8C1C0D7F, // 000C GETMET R7 R6 K127 + 0x7C1C0200, // 000D CALL R7 1 + 0x4C200000, // 000E LDNIL R8 + 0x8C240D80, // 000F GETMET R9 R6 K128 + 0x7C240200, // 0010 CALL R9 1 + 0x5C201200, // 0011 MOVE R8 R9 + 0x4C280000, // 0012 LDNIL R10 + 0x2024120A, // 0013 NE R9 R9 R10 + 0x78260005, // 0014 JMPF R9 #001B + 0x5C240400, // 0015 MOVE R9 R2 + 0x8C280D81, // 0016 GETMET R10 R6 K129 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C1000, // 0018 MOVE R11 R8 + 0x7C240400, // 0019 CALL R9 2 + 0x7001FFF3, // 001A JMP #000F + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: attribute_updated +********************************************************************/ +be_local_closure(class_Matter_Device_attribute_updated, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(attribute_updated), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160000, // 0002 JMPF R5 #0004 + 0x50100000, // 0003 LDBOOL R4 0 0 + 0xB8165200, // 0004 GETNGBL R5 K41 + 0x8C140B82, // 0005 GETMET R5 R5 K130 + 0x7C140200, // 0006 CALL R5 1 + 0x90164801, // 0007 SETMBR R5 K36 R1 + 0x90164A02, // 0008 SETMBR R5 K37 R2 + 0x90164C03, // 0009 SETMBR R5 K38 R3 + 0x88180102, // 000A GETMBR R6 R0 K2 + 0x88180D1E, // 000B GETMBR R6 R6 K30 + 0x88180D1F, // 000C GETMBR R6 R6 K31 + 0x8C180D83, // 000D GETMET R6 R6 K131 + 0x5C200A00, // 000E MOVE R8 R5 + 0x5C240800, // 000F MOVE R9 R4 + 0x7C180600, // 0010 CALL R6 3 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: reset_param +********************************************************************/ +be_local_closure(class_Matter_Device_reset_param, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(reset_param), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8808011F, // 0000 GETMBR R2 R0 K31 - 0x8C080539, // 0001 GETMET R2 R2 K57 - 0x5C100200, // 0002 MOVE R4 R1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C140000, // 0004 CALL R5 0 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x90020E01, // 0001 SETMBR R0 K7 R1 + 0x8804015F, // 0002 GETMBR R1 R0 K95 + 0x90028E01, // 0003 SETMBR R0 K71 R1 + 0x8C040108, // 0004 GETMET R1 R0 K8 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bridge_add_endpoint +********************************************************************/ +be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(bridge_add_endpoint), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x880C0151, // 0000 GETMBR R3 R0 K81 + 0x8C0C0716, // 0001 GETMET R3 R3 K22 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120008, // 0006 JMPF R4 #0010 + 0xB8122E00, // 0007 GETNGBL R4 K23 + 0x60140008, // 0008 GETGBL R5 G8 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C140200, // 000A CALL R5 1 + 0x00170805, // 000B ADD R5 K132 R5 + 0x00140B85, // 000C ADD R5 R5 K133 + 0x58180030, // 000D LDCONST R6 K48 + 0x7C100400, // 000E CALL R4 2 + 0x80000800, // 000F RET 0 + 0x88100147, // 0010 GETMBR R4 R0 K71 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x5C180600, // 0014 MOVE R6 R3 + 0x5C1C0000, // 0015 MOVE R7 R0 + 0x5C200800, // 0016 MOVE R8 R4 + 0x5C240400, // 0017 MOVE R9 R2 + 0x7C180600, // 0018 CALL R6 3 + 0x881C0112, // 0019 GETMBR R7 R0 K18 + 0x8C1C0F42, // 001A GETMET R7 R7 K66 + 0x5C240C00, // 001B MOVE R9 R6 + 0x7C1C0400, // 001C CALL R7 2 + 0x601C0013, // 001D GETGBL R7 G19 + 0x7C1C0000, // 001E CALL R7 0 + 0x981E1E01, // 001F SETIDX R7 K15 R1 + 0x60200010, // 0020 GETGBL R8 G16 + 0x8C240546, // 0021 GETMET R9 R2 K70 + 0x7C240200, // 0022 CALL R9 1 + 0x7C200200, // 0023 CALL R8 1 + 0xA8020004, // 0024 EXBLK 0 #002A + 0x5C241000, // 0025 MOVE R9 R8 + 0x7C240000, // 0026 CALL R9 0 + 0x94280409, // 0027 GETIDX R10 R2 R9 + 0x981C120A, // 0028 SETIDX R7 R9 R10 + 0x7001FFFA, // 0029 JMP #0025 + 0x58200011, // 002A LDCONST R8 K17 + 0xAC200200, // 002B CATCH R8 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0xB8222E00, // 002D GETNGBL R8 K23 + 0x60240018, // 002E GETGBL R9 G24 + 0x58280086, // 002F LDCONST R10 K134 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300200, // 0031 MOVE R12 R1 + 0x8C340187, // 0032 GETMET R13 R0 K135 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C340400, // 0034 CALL R13 2 + 0x7C240800, // 0035 CALL R9 4 + 0x5828001D, // 0036 LDCONST R10 K29 + 0x7C200400, // 0037 CALL R8 2 + 0x88200135, // 0038 GETMBR R8 R0 K53 + 0x98200A07, // 0039 SETIDX R8 R5 R7 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x90020E08, // 003B SETMBR R0 K7 R8 + 0x88200147, // 003C GETMBR R8 R0 K71 + 0x00201114, // 003D ADD R8 R8 K20 + 0x90028E08, // 003E SETMBR R0 K71 R8 + 0x8C200108, // 003F GETMET R8 R0 K8 + 0x7C200200, // 0040 CALL R8 1 + 0x8C200188, // 0041 GETMET R8 R0 K136 + 0x7C200200, // 0042 CALL R8 1 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrInfo +********************************************************************/ +be_local_closure(class_Matter_Device_MtrInfo, /* name */ + be_nested_proto( + 10, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(MtrInfo), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x1C14070D, // 0000 EQ R5 R3 K13 + 0x7815FFFF, // 0001 JMPF R5 #0002 + 0x1C14070D, // 0002 EQ R5 R3 K13 + 0x7816000D, // 0003 JMPF R5 #0012 + 0x60140010, // 0004 GETGBL R5 G16 + 0x88180112, // 0005 GETMBR R6 R0 K18 + 0x7C140200, // 0006 CALL R5 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C180A00, // 0008 MOVE R6 R5 + 0x7C180000, // 0009 CALL R6 0 + 0x8C1C0189, // 000A GETMET R7 R0 K137 + 0x88240D24, // 000B GETMBR R9 R6 K36 + 0x7C1C0400, // 000C CALL R7 2 + 0x7001FFF9, // 000D JMP #0008 + 0x58140011, // 000E LDCONST R5 K17 + 0xAC140200, // 000F CATCH R5 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x70020011, // 0011 JMP #0024 + 0x60140004, // 0012 GETGBL R5 G4 + 0x5C180800, // 0013 MOVE R6 R4 + 0x7C140200, // 0014 CALL R5 1 + 0x1C140B8A, // 0015 EQ R5 R5 K138 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C140189, // 0017 GETMET R5 R0 K137 + 0x5C1C0800, // 0018 MOVE R7 R4 + 0x7C140400, // 0019 CALL R5 2 + 0x70020008, // 001A JMP #0024 + 0x8C14018B, // 001B GETMET R5 R0 K139 + 0x5C1C0600, // 001C MOVE R7 R3 + 0x7C140400, // 001D CALL R5 2 + 0x4C180000, // 001E LDNIL R6 + 0x20180A06, // 001F NE R6 R5 R6 + 0x781A0002, // 0020 JMPF R6 #0024 + 0x8C180189, // 0021 GETMET R6 R0 K137 + 0x88200B24, // 0022 GETMBR R8 R5 K36 + 0x7C180400, // 0023 CALL R6 2 + 0xB8167400, // 0024 GETNGBL R5 K58 + 0x8C140B8C, // 0025 GETMET R5 R5 K140 + 0x7C140200, // 0026 CALL R5 1 + 0x80000000, // 0027 RET 0 }) ) ); @@ -773,22 +2142,22 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ 0x1C080202, // 0004 EQ R2 R1 R2 0x780A0000, // 0005 JMPF R2 #0007 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A7400, // 0007 GETNGBL R2 K58 + 0xB80A2E00, // 0007 GETNGBL R2 K23 0x600C0008, // 0008 GETGBL R3 G8 0x5C100200, // 0009 MOVE R4 R1 0x7C0C0200, // 000A CALL R3 1 - 0x000E7603, // 000B ADD R3 K59 R3 - 0x58100021, // 000C LDCONST R4 K33 + 0x000F1A03, // 000B ADD R3 K141 R3 + 0x5810001D, // 000C LDCONST R4 K29 0x7C080400, // 000D CALL R2 2 - 0xB80A3000, // 000E GETNGBL R2 K24 - 0x8C08053C, // 000F GETMET R2 R2 K60 + 0xB80A5200, // 000E GETNGBL R2 K41 + 0x8C08058E, // 000F GETMET R2 R2 K142 0x5C100000, // 0010 MOVE R4 R0 - 0x58140010, // 0011 LDCONST R5 K16 + 0x5814000D, // 0011 LDCONST R5 K13 0x5C180200, // 0012 MOVE R6 R1 0x7C080800, // 0013 CALL R2 4 0x90020002, // 0014 SETMBR R0 K0 R2 0x88080100, // 0015 GETMBR R2 R0 K0 - 0x8C08052F, // 0016 GETMET R2 R2 K47 + 0x8C08056D, // 0016 GETMET R2 R2 K109 0x84100000, // 0017 CLOSURE R4 P0 0x7C080400, // 0018 CALL R2 2 0xA0000000, // 0019 CLOSE R0 @@ -799,1847 +2168,6 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: remove_fabric -********************************************************************/ -be_local_closure(class_Matter_Device_remove_fabric, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(remove_fabric), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0019, // 0002 JMPF R2 #001D - 0xB80A7400, // 0003 GETNGBL R2 K58 - 0x8C0C033E, // 0004 GETMET R3 R1 K62 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C0C073F, // 0006 GETMET R3 R3 K63 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0740, // 0008 GETMET R3 R3 K64 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0741, // 000A GETMET R3 R3 K65 - 0x7C0C0200, // 000B CALL R3 1 - 0x000E7A03, // 000C ADD R3 K61 R3 - 0x58100021, // 000D LDCONST R4 K33 - 0x7C080400, // 000E CALL R2 2 - 0x88080127, // 000F GETMBR R2 R0 K39 - 0x88080542, // 0010 GETMBR R2 R2 K66 - 0x88080543, // 0011 GETMBR R2 R2 K67 - 0x8C080544, // 0012 GETMET R2 R2 K68 - 0x5C100200, // 0013 MOVE R4 R1 - 0x7C080400, // 0014 CALL R2 2 - 0x88080106, // 0015 GETMBR R2 R0 K6 - 0x8C080545, // 0016 GETMET R2 R2 K69 - 0x5C100200, // 0017 MOVE R4 R1 - 0x7C080400, // 0018 CALL R2 2 - 0x88080108, // 0019 GETMBR R2 R0 K8 - 0x8C080546, // 001A GETMET R2 R2 K70 - 0x5C100200, // 001B MOVE R4 R1 - 0x7C080400, // 001C CALL R2 2 - 0x88080108, // 001D GETMBR R2 R0 K8 - 0x8C080547, // 001E GETMET R2 R2 K71 - 0x7C080200, // 001F CALL R2 1 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve_attribute_read_solo -********************************************************************/ -be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(resolve_attribute_read_solo), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x88080348, // 0000 GETMBR R2 R1 K72 - 0x880C0349, // 0001 GETMBR R3 R1 K73 - 0x8810034A, // 0002 GETMBR R4 R1 K74 - 0x4C140000, // 0003 LDNIL R5 - 0x1C140405, // 0004 EQ R5 R2 R5 - 0x74160005, // 0005 JMPT R5 #000C - 0x4C140000, // 0006 LDNIL R5 - 0x1C140605, // 0007 EQ R5 R3 R5 - 0x74160002, // 0008 JMPT R5 #000C - 0x4C140000, // 0009 LDNIL R5 - 0x1C140805, // 000A EQ R5 R4 R5 - 0x78160001, // 000B JMPF R5 #000E - 0x4C140000, // 000C LDNIL R5 - 0x80040A00, // 000D RET 1 R5 - 0x8C14014B, // 000E GETMET R5 R0 K75 - 0x5C1C0400, // 000F MOVE R7 R2 - 0x7C140400, // 0010 CALL R5 2 - 0x4C180000, // 0011 LDNIL R6 - 0x1C180A06, // 0012 EQ R6 R5 R6 - 0x781A0005, // 0013 JMPF R6 #001A - 0xB81A3000, // 0014 GETNGBL R6 K24 - 0x88180D4D, // 0015 GETMBR R6 R6 K77 - 0x90069806, // 0016 SETMBR R1 K76 R6 - 0x4C180000, // 0017 LDNIL R6 - 0x80040C00, // 0018 RET 1 R6 - 0x70020013, // 0019 JMP #002E - 0x8C180B4E, // 001A GETMET R6 R5 K78 - 0x5C200600, // 001B MOVE R8 R3 - 0x7C180400, // 001C CALL R6 2 - 0x741A0005, // 001D JMPT R6 #0024 - 0xB81A3000, // 001E GETNGBL R6 K24 - 0x88180D4F, // 001F GETMBR R6 R6 K79 - 0x90069806, // 0020 SETMBR R1 K76 R6 - 0x4C180000, // 0021 LDNIL R6 - 0x80040C00, // 0022 RET 1 R6 - 0x70020009, // 0023 JMP #002E - 0x8C180B50, // 0024 GETMET R6 R5 K80 - 0x5C200600, // 0025 MOVE R8 R3 - 0x5C240800, // 0026 MOVE R9 R4 - 0x7C180600, // 0027 CALL R6 3 - 0x741A0004, // 0028 JMPT R6 #002E - 0xB81A3000, // 0029 GETNGBL R6 K24 - 0x88180D51, // 002A GETMBR R6 R6 K81 - 0x90069806, // 002B SETMBR R1 K76 R6 - 0x4C180000, // 002C LDNIL R6 - 0x80040C00, // 002D RET 1 R6 - 0x80040A00, // 002E RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: signal_endpoints_changed -********************************************************************/ -be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(signal_endpoints_changed), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040152, // 0000 GETMET R1 R0 K82 - 0x580C000A, // 0001 LDCONST R3 K10 - 0x5412001C, // 0002 LDINT R4 29 - 0x58140053, // 0003 LDCONST R5 K83 - 0x50180000, // 0004 LDBOOL R6 0 0 - 0x7C040A00, // 0005 CALL R1 5 - 0x8C040152, // 0006 GETMET R1 R0 K82 - 0xB80E3000, // 0007 GETNGBL R3 K24 - 0x880C0754, // 0008 GETMBR R3 R3 K84 - 0x5412001C, // 0009 LDINT R4 29 - 0x58140053, // 000A LDCONST R5 K83 - 0x50180000, // 000B LDBOOL R6 0 0 - 0x7C040A00, // 000C CALL R1 5 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device -********************************************************************/ -be_local_closure(class_Matter_Device_autoconf_device, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(autoconf_device), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0xA406AA00, // 0000 IMPORT R1 K85 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C011E, // 0002 GETMBR R3 R0 K30 - 0x7C080200, // 0003 CALL R2 1 - 0x2408050A, // 0004 GT R2 R2 K10 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x80000400, // 0006 RET 0 - 0x8808010B, // 0007 GETMBR R2 R0 K11 - 0x740A000E, // 0008 JMPT R2 #0018 - 0x8C080157, // 0009 GETMET R2 R0 K87 - 0x7C080200, // 000A CALL R2 1 - 0x9002AC02, // 000B SETMBR R0 K86 R2 - 0x60080013, // 000C GETGBL R2 G19 - 0x7C080000, // 000D CALL R2 0 - 0x90023E02, // 000E SETMBR R0 K31 R2 - 0x8C080158, // 000F GETMET R2 R0 K88 - 0x7C080200, // 0010 CALL R2 1 - 0xB80A7400, // 0011 GETNGBL R2 K58 - 0x600C0008, // 0012 GETGBL R3 G8 - 0x88100156, // 0013 GETMBR R4 R0 K86 - 0x7C0C0200, // 0014 CALL R3 1 - 0x000EB203, // 0015 ADD R3 K89 R3 - 0x58100053, // 0016 LDCONST R4 K83 - 0x7C080400, // 0017 CALL R2 2 - 0x8C08015A, // 0018 GETMET R2 R0 K90 - 0x88100156, // 0019 GETMBR R4 R0 K86 - 0x7C080400, // 001A CALL R2 2 - 0x8808010B, // 001B GETMBR R2 R0 K11 - 0x740A0008, // 001C JMPT R2 #0026 - 0x88080108, // 001D GETMBR R2 R0 K8 - 0x8C080509, // 001E GETMET R2 R2 K9 - 0x7C080200, // 001F CALL R2 1 - 0x2408050A, // 0020 GT R2 R2 K10 - 0x780A0003, // 0021 JMPF R2 #0026 - 0x50080200, // 0022 LDBOOL R2 1 0 - 0x90021602, // 0023 SETMBR R0 K11 R2 - 0x8C08010C, // 0024 GETMET R2 R0 K12 - 0x7C080200, // 0025 CALL R2 1 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _trigger_read_sensors -********************************************************************/ -be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(_trigger_read_sensors), - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0xA406AA00, // 0000 IMPORT R1 K85 - 0xB80A2C00, // 0001 GETNGBL R2 K22 - 0x8C08055B, // 0002 GETMET R2 R2 K91 - 0x7C080200, // 0003 CALL R2 1 - 0xB80E2C00, // 0004 GETNGBL R3 K22 - 0x8C0C075C, // 0005 GETMET R3 R3 K92 - 0x58140053, // 0006 LDCONST R5 K83 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0006, // 0008 JMPF R3 #0010 - 0xB80E7400, // 0009 GETNGBL R3 K58 - 0x60100008, // 000A GETGBL R4 G8 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C100200, // 000C CALL R4 1 - 0x0012BA04, // 000D ADD R4 K93 R4 - 0x58140053, // 000E LDCONST R5 K83 - 0x7C0C0400, // 000F CALL R3 2 - 0x4C0C0000, // 0010 LDNIL R3 - 0x1C0C0403, // 0011 EQ R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x80000600, // 0013 RET 0 - 0x8C0C035E, // 0014 GETMET R3 R1 K94 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x4C100000, // 0017 LDNIL R4 - 0x20100604, // 0018 NE R4 R3 R4 - 0x7812000D, // 0019 JMPF R4 #0028 - 0x5810000A, // 001A LDCONST R4 K10 - 0x6014000C, // 001B GETGBL R5 G12 - 0x8818011E, // 001C GETMBR R6 R0 K30 - 0x7C140200, // 001D CALL R5 1 - 0x14140805, // 001E LT R5 R4 R5 - 0x78160006, // 001F JMPF R5 #0027 - 0x8814011E, // 0020 GETMBR R5 R0 K30 - 0x94140A04, // 0021 GETIDX R5 R5 R4 - 0x8C140B5F, // 0022 GETMET R5 R5 K95 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C140400, // 0024 CALL R5 2 - 0x00100938, // 0025 ADD R4 R4 K56 - 0x7001FFF3, // 0026 JMP #001B - 0x70020006, // 0027 JMP #002F - 0xB8127400, // 0028 GETNGBL R4 K58 - 0x60140008, // 0029 GETGBL R5 G8 - 0x5C180400, // 002A MOVE R6 R2 - 0x7C140200, // 002B CALL R5 1 - 0x0016C005, // 002C ADD R5 K96 R5 - 0x58180053, // 002D LDCONST R6 K83 - 0x7C100400, // 002E CALL R4 2 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_active_endpoints -********************************************************************/ -be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(get_active_endpoints), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8810011E, // 0003 GETMBR R4 R0 K30 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020011, // 0005 EXBLK 0 #0018 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140961, // 0008 GETMET R5 R4 K97 - 0x7C140200, // 0009 CALL R5 1 - 0x78060002, // 000A JMPF R1 #000E - 0x1C180B0A, // 000B EQ R6 R5 K10 - 0x781A0000, // 000C JMPF R6 #000E - 0x7001FFF7, // 000D JMP #0006 - 0x8C180539, // 000E GETMET R6 R2 K57 - 0x5C200A00, // 000F MOVE R8 R5 - 0x7C180400, // 0010 CALL R6 2 - 0x4C1C0000, // 0011 LDNIL R7 - 0x1C180C07, // 0012 EQ R6 R6 R7 - 0x781A0002, // 0013 JMPF R6 #0017 - 0x8C180562, // 0014 GETMET R6 R2 K98 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x7C180400, // 0016 CALL R6 2 - 0x7001FFED, // 0017 JMP #0006 - 0x580C0014, // 0018 LDCONST R3 K20 - 0xAC0C0200, // 0019 CATCH R3 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x80040400, // 001B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_send -********************************************************************/ -be_local_closure(class_Matter_Device_msg_send, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(msg_send), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080563, // 0001 GETMET R2 R2 K99 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_Matter_Device_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8062C00, // 0000 GETNGBL R1 K22 - 0x8C040364, // 0001 GETMET R1 R1 K100 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x88040100, // 0004 GETMBR R1 R0 K0 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040100, // 0006 GETMBR R1 R0 K0 - 0x8C040365, // 0007 GETMET R1 R1 K101 - 0x7C040200, // 0008 CALL R1 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: adjust_next_ep -********************************************************************/ -be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(adjust_next_ep), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080156, // 0001 GETMBR R2 R0 K86 - 0x8C080566, // 0002 GETMET R2 R2 K102 - 0x7C080200, // 0003 CALL R2 1 - 0x7C040200, // 0004 CALL R1 1 - 0xA802000A, // 0005 EXBLK 0 #0011 - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x600C0009, // 0008 GETGBL R3 G9 - 0x5C100400, // 0009 MOVE R4 R2 - 0x7C0C0200, // 000A CALL R3 1 - 0x88100120, // 000B GETMBR R4 R0 K32 - 0x28100604, // 000C GE R4 R3 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x00100738, // 000E ADD R4 R3 K56 - 0x90024004, // 000F SETMBR R0 K32 R4 - 0x7001FFF4, // 0010 JMP #0006 - 0x58040014, // 0011 LDCONST R1 K20 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_read_sensors_schedule -********************************************************************/ -be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(add_read_sensors_schedule), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080167, // 0000 GETMBR R2 R0 K103 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x740A0002, // 0003 JMPT R2 #0007 - 0x88080167, // 0004 GETMBR R2 R0 K103 - 0x24080401, // 0005 GT R2 R2 R1 - 0x780A0005, // 0006 JMPF R2 #000D - 0x9002CE01, // 0007 SETMBR R0 K103 R1 - 0xB80A3000, // 0008 GETNGBL R2 K24 - 0x8C080569, // 0009 GETMET R2 R2 K105 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x9002D002, // 000C SETMBR R0 K104 R2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: button_pressed -********************************************************************/ -be_local_closure(class_Matter_Device_button_pressed, /* name */ - be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(button_pressed), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x540E000F, // 0000 LDINT R3 16 - 0x3C0C0403, // 0001 SHR R3 R2 R3 - 0x541200FE, // 0002 LDINT R4 255 - 0x2C0C0604, // 0003 AND R3 R3 R4 - 0x54120007, // 0004 LDINT R4 8 - 0x3C100404, // 0005 SHR R4 R2 R4 - 0x541600FE, // 0006 LDINT R5 255 - 0x2C100805, // 0007 AND R4 R4 R5 - 0x541600FE, // 0008 LDINT R5 255 - 0x2C140405, // 0009 AND R5 R2 R5 - 0x541A0017, // 000A LDINT R6 24 - 0x3C180406, // 000B SHR R6 R2 R6 - 0x541E00FE, // 000C LDINT R7 255 - 0x2C180C07, // 000D AND R6 R6 R7 - 0x8C1C016A, // 000E GETMET R7 R0 K106 - 0x00240B38, // 000F ADD R9 R5 K56 - 0x20280604, // 0010 NE R10 R3 R4 - 0x782A0001, // 0011 JMPF R10 #0014 - 0x58280038, // 0012 LDCONST R10 K56 - 0x70020000, // 0013 JMP #0015 - 0x5828000A, // 0014 LDCONST R10 K10 - 0x780E0001, // 0015 JMPF R3 #0018 - 0x582C000A, // 0016 LDCONST R11 K10 - 0x70020000, // 0017 JMP #0019 - 0x582C0038, // 0018 LDCONST R11 K56 - 0x5C300C00, // 0019 MOVE R12 R6 - 0x7C1C0A00, // 001A CALL R7 5 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_http_remote -********************************************************************/ -be_local_closure(class_Matter_Device_register_http_remote, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(register_http_remote), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x880C016B, // 0000 GETMBR R3 R0 K107 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x600C0013, // 0004 GETGBL R3 G19 - 0x7C0C0000, // 0005 CALL R3 0 - 0x9002D603, // 0006 SETMBR R0 K107 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x8810016B, // 0008 GETMBR R4 R0 K107 - 0x8C10096C, // 0009 GETMET R4 R4 K108 - 0x5C180200, // 000A MOVE R6 R1 - 0x7C100400, // 000B CALL R4 2 - 0x78120009, // 000C JMPF R4 #0017 - 0x8810016B, // 000D GETMBR R4 R0 K107 - 0x940C0801, // 000E GETIDX R3 R4 R1 - 0x8C14076D, // 000F GETMET R5 R3 K109 - 0x7C140200, // 0010 CALL R5 1 - 0x14140405, // 0011 LT R5 R2 R5 - 0x78160002, // 0012 JMPF R5 #0016 - 0x8C14076E, // 0013 GETMET R5 R3 K110 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C140400, // 0015 CALL R5 2 - 0x70020011, // 0016 JMP #0029 - 0xB8123000, // 0017 GETNGBL R4 K24 - 0x8C10096F, // 0018 GETMET R4 R4 K111 - 0x5C180000, // 0019 MOVE R6 R0 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x5C200400, // 001B MOVE R8 R2 - 0x7C100800, // 001C CALL R4 4 - 0x5C0C0800, // 001D MOVE R3 R4 - 0x8810011F, // 001E GETMBR R4 R0 K31 - 0x8C10096C, // 001F GETMET R4 R4 K108 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x78120003, // 0022 JMPF R4 #0027 - 0x8C100770, // 0023 GETMET R4 R3 K112 - 0x8818011F, // 0024 GETMBR R6 R0 K31 - 0x94180C01, // 0025 GETIDX R6 R6 R1 - 0x7C100400, // 0026 CALL R4 2 - 0x8810016B, // 0027 GETMBR R4 R0 K107 - 0x98100203, // 0028 SETIDX R4 R1 R3 - 0x80040600, // 0029 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _instantiate_plugins_from_config -********************************************************************/ -be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ - be_nested_proto( - 17, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(_instantiate_plugins_from_config), - &be_const_str_solidified, - ( &(const binstruction[146]) { /* code */ - 0x8C080171, // 0000 GETMET R2 R0 K113 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x880C011E, // 0003 GETMBR R3 R0 K30 - 0x8C0C0762, // 0004 GETMET R3 R3 K98 - 0xB8163000, // 0005 GETNGBL R5 K24 - 0x8C140B72, // 0006 GETMET R5 R5 K114 - 0x5C1C0000, // 0007 MOVE R7 R0 - 0x5820000A, // 0008 LDCONST R8 K10 - 0x60240013, // 0009 GETGBL R9 G19 - 0x7C240000, // 000A CALL R9 0 - 0x7C140800, // 000B CALL R5 4 - 0x7C0C0400, // 000C CALL R3 2 - 0xB80E7400, // 000D GETNGBL R3 K58 - 0x58100073, // 000E LDCONST R4 K115 - 0x58140021, // 000F LDCONST R5 K33 - 0x7C0C0400, // 0010 CALL R3 2 - 0xB80E7400, // 0011 GETNGBL R3 K58 - 0x60100018, // 0012 GETGBL R4 G24 - 0x58140074, // 0013 LDCONST R5 K116 - 0x5818000A, // 0014 LDCONST R6 K10 - 0x581C0075, // 0015 LDCONST R7 K117 - 0x58200010, // 0016 LDCONST R8 K16 - 0x7C100800, // 0017 CALL R4 4 - 0x58140021, // 0018 LDCONST R5 K33 - 0x7C0C0400, // 0019 CALL R3 2 - 0x880C011E, // 001A GETMBR R3 R0 K30 - 0x8C0C0762, // 001B GETMET R3 R3 K98 - 0xB8163000, // 001C GETNGBL R5 K24 - 0x8C140B76, // 001D GETMET R5 R5 K118 - 0x5C1C0000, // 001E MOVE R7 R0 - 0xB8223000, // 001F GETNGBL R8 K24 - 0x88201154, // 0020 GETMBR R8 R8 K84 - 0x60240013, // 0021 GETGBL R9 G19 - 0x7C240000, // 0022 CALL R9 0 - 0x7C140800, // 0023 CALL R5 4 - 0x7C0C0400, // 0024 CALL R3 2 - 0xB80E7400, // 0025 GETNGBL R3 K58 - 0x60100018, // 0026 GETGBL R4 G24 - 0x58140074, // 0027 LDCONST R5 K116 - 0xB81A3000, // 0028 GETNGBL R6 K24 - 0x88180D54, // 0029 GETMBR R6 R6 K84 - 0x581C0077, // 002A LDCONST R7 K119 - 0x58200010, // 002B LDCONST R8 K16 - 0x7C100800, // 002C CALL R4 4 - 0x58140021, // 002D LDCONST R5 K33 - 0x7C0C0400, // 002E CALL R3 2 - 0x600C0010, // 002F GETGBL R3 G16 - 0x5C100400, // 0030 MOVE R4 R2 - 0x7C0C0200, // 0031 CALL R3 1 - 0xA8020055, // 0032 EXBLK 0 #0089 - 0x5C100600, // 0033 MOVE R4 R3 - 0x7C100000, // 0034 CALL R4 0 - 0x1C14090A, // 0035 EQ R5 R4 K10 - 0x78160000, // 0036 JMPF R5 #0038 - 0x7001FFFA, // 0037 JMP #0033 - 0xA802003E, // 0038 EXBLK 0 #0078 - 0x60140008, // 0039 GETGBL R5 G8 - 0x5C180800, // 003A MOVE R6 R4 - 0x7C140200, // 003B CALL R5 1 - 0x94140205, // 003C GETIDX R5 R1 R5 - 0x8C180B39, // 003D GETMET R6 R5 K57 - 0x58200012, // 003E LDCONST R8 K18 - 0x7C180400, // 003F CALL R6 2 - 0x4C1C0000, // 0040 LDNIL R7 - 0x1C1C0C07, // 0041 EQ R7 R6 R7 - 0x781E0005, // 0042 JMPF R7 #0049 - 0xB81E7400, // 0043 GETNGBL R7 K58 - 0x58200078, // 0044 LDCONST R8 K120 - 0x58240053, // 0045 LDCONST R9 K83 - 0x7C1C0400, // 0046 CALL R7 2 - 0xA8040001, // 0047 EXBLK 1 1 - 0x7001FFE9, // 0048 JMP #0033 - 0x1C1C0D75, // 0049 EQ R7 R6 K117 - 0x781E0005, // 004A JMPF R7 #0051 - 0xB81E7400, // 004B GETNGBL R7 K58 - 0x58200079, // 004C LDCONST R8 K121 - 0x58240053, // 004D LDCONST R9 K83 - 0x7C1C0400, // 004E CALL R7 2 - 0xA8040001, // 004F EXBLK 1 1 - 0x7001FFE1, // 0050 JMP #0033 - 0x881C017A, // 0051 GETMBR R7 R0 K122 - 0x8C1C0F39, // 0052 GETMET R7 R7 K57 - 0x5C240C00, // 0053 MOVE R9 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x4C200000, // 0055 LDNIL R8 - 0x1C200E08, // 0056 EQ R8 R7 R8 - 0x78220009, // 0057 JMPF R8 #0062 - 0xB8227400, // 0058 GETNGBL R8 K58 - 0x60240008, // 0059 GETGBL R9 G8 - 0x5C280C00, // 005A MOVE R10 R6 - 0x7C240200, // 005B CALL R9 1 - 0x0026F609, // 005C ADD R9 K123 R9 - 0x0024137C, // 005D ADD R9 R9 K124 - 0x58280021, // 005E LDCONST R10 K33 - 0x7C200400, // 005F CALL R8 2 - 0xA8040001, // 0060 EXBLK 1 1 - 0x7001FFD0, // 0061 JMP #0033 - 0x5C200E00, // 0062 MOVE R8 R7 - 0x5C240000, // 0063 MOVE R9 R0 - 0x5C280800, // 0064 MOVE R10 R4 - 0x5C2C0A00, // 0065 MOVE R11 R5 - 0x7C200600, // 0066 CALL R8 3 - 0x8824011E, // 0067 GETMBR R9 R0 K30 - 0x8C241362, // 0068 GETMET R9 R9 K98 - 0x5C2C1000, // 0069 MOVE R11 R8 - 0x7C240400, // 006A CALL R9 2 - 0xB8267400, // 006B GETNGBL R9 K58 - 0x60280018, // 006C GETGBL R10 G24 - 0x582C0074, // 006D LDCONST R11 K116 - 0x5C300800, // 006E MOVE R12 R4 - 0x5C340C00, // 006F MOVE R13 R6 - 0x8C38017D, // 0070 GETMET R14 R0 K125 - 0x5C400A00, // 0071 MOVE R16 R5 - 0x7C380400, // 0072 CALL R14 2 - 0x7C280800, // 0073 CALL R10 4 - 0x582C0021, // 0074 LDCONST R11 K33 - 0x7C240400, // 0075 CALL R9 2 - 0xA8040001, // 0076 EXBLK 1 1 - 0x7002000F, // 0077 JMP #0088 - 0xAC140002, // 0078 CATCH R5 0 2 - 0x7002000C, // 0079 JMP #0087 - 0xB81E7400, // 007A GETNGBL R7 K58 - 0x60200008, // 007B GETGBL R8 G8 - 0x5C240A00, // 007C MOVE R9 R5 - 0x7C200200, // 007D CALL R8 1 - 0x0022FC08, // 007E ADD R8 K126 R8 - 0x0020117F, // 007F ADD R8 R8 K127 - 0x60240008, // 0080 GETGBL R9 G8 - 0x5C280C00, // 0081 MOVE R10 R6 - 0x7C240200, // 0082 CALL R9 1 - 0x00201009, // 0083 ADD R8 R8 R9 - 0x58240021, // 0084 LDCONST R9 K33 - 0x7C1C0400, // 0085 CALL R7 2 - 0x70020000, // 0086 JMP #0088 - 0xB0080000, // 0087 RAISE 2 R0 R0 - 0x7001FFA9, // 0088 JMP #0033 - 0x580C0014, // 0089 LDCONST R3 K20 - 0xAC0C0200, // 008A CATCH R3 1 0 - 0xB0080000, // 008B RAISE 2 R0 R0 - 0xB80E2C00, // 008C GETNGBL R3 K22 - 0x8C0C0780, // 008D GETMET R3 R3 K128 - 0x58140081, // 008E LDCONST R5 K129 - 0x58180082, // 008F LDCONST R6 K130 - 0x7C0C0600, // 0090 CALL R3 3 - 0x80000000, // 0091 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sort_distinct -********************************************************************/ -be_local_closure(class_Matter_Device_sort_distinct, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 12, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(sort_distinct), - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x5804000F, // 0000 LDCONST R1 K15 - 0x60080010, // 0001 GETGBL R2 G16 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0738, // 0005 SUB R3 R3 K56 - 0x400E7003, // 0006 CONNECT R3 K56 R3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020010, // 0008 EXBLK 0 #001A - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x94100003, // 000B GETIDX R4 R0 R3 - 0x5C140600, // 000C MOVE R5 R3 - 0x24180B0A, // 000D GT R6 R5 K10 - 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B38, // 000F SUB R6 R5 K56 - 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x24180C04, // 0011 GT R6 R6 R4 - 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B38, // 0013 SUB R6 R5 K56 - 0x94180006, // 0014 GETIDX R6 R0 R6 - 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B38, // 0016 SUB R5 R5 K56 - 0x7001FFF4, // 0017 JMP #000D - 0x98000A04, // 0018 SETIDX R0 R5 R4 - 0x7001FFEE, // 0019 JMP #0009 - 0x58080014, // 001A LDCONST R2 K20 - 0xAC080200, // 001B CATCH R2 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x58080038, // 001D LDCONST R2 K56 - 0x600C000C, // 001E GETGBL R3 G12 - 0x5C100000, // 001F MOVE R4 R0 - 0x7C0C0200, // 0020 CALL R3 1 - 0x180C0738, // 0021 LE R3 R3 K56 - 0x780E0000, // 0022 JMPF R3 #0024 - 0x80040000, // 0023 RET 1 R0 - 0x940C010A, // 0024 GETIDX R3 R0 K10 - 0x6010000C, // 0025 GETGBL R4 G12 - 0x5C140000, // 0026 MOVE R5 R0 - 0x7C100200, // 0027 CALL R4 1 - 0x14100404, // 0028 LT R4 R2 R4 - 0x78120009, // 0029 JMPF R4 #0034 - 0x94100002, // 002A GETIDX R4 R0 R2 - 0x1C100803, // 002B EQ R4 R4 R3 - 0x78120003, // 002C JMPF R4 #0031 - 0x8C100183, // 002D GETMET R4 R0 K131 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x70020001, // 0030 JMP #0033 - 0x940C0002, // 0031 GETIDX R3 R0 R2 - 0x00080538, // 0032 ADD R2 R2 K56 - 0x7001FFF0, // 0033 JMP #0025 - 0x80040000, // 0034 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_plugin_class_displayname -********************************************************************/ -be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(get_plugin_class_displayname), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x8808017A, // 0000 GETMBR R2 R0 K122 - 0x8C080539, // 0001 GETMET R2 R2 K57 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C0584, // 0005 GETMBR R3 R2 K132 - 0x70020000, // 0006 JMP #0008 - 0x580C0010, // 0007 LDCONST R3 K16 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_plugin_by_endpoint -********************************************************************/ -be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(find_plugin_by_endpoint), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x5808000A, // 0000 LDCONST R2 K10 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x8810011E, // 0002 GETMBR R4 R0 K30 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x880C011E, // 0006 GETMBR R3 R0 K30 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C100761, // 0008 GETMET R4 R3 K97 - 0x7C100200, // 0009 CALL R4 1 - 0x1C100801, // 000A EQ R4 R4 R1 - 0x78120000, // 000B JMPF R4 #000D - 0x80040600, // 000C RET 1 R3 - 0x00080538, // 000D ADD R2 R2 K56 - 0x7001FFF1, // 000E JMP #0001 - 0x4C0C0000, // 000F LDNIL R3 - 0x80040600, // 0010 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clean_remotes -********************************************************************/ -be_local_closure(class_Matter_Device_clean_remotes, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(clean_remotes), - &be_const_str_solidified, - ( &(const binstruction[80]) { /* code */ - 0xA4070A00, // 0000 IMPORT R1 K133 - 0x8808016B, // 0001 GETMBR R2 R0 K107 - 0x780A004B, // 0002 JMPF R2 #004F - 0x60080013, // 0003 GETGBL R2 G19 - 0x7C080000, // 0004 CALL R2 0 - 0x600C0010, // 0005 GETGBL R3 G16 - 0x8810016B, // 0006 GETMBR R4 R0 K107 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020003, // 0008 EXBLK 0 #000D - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x9808090A, // 000B SETIDX R2 R4 K10 - 0x7001FFFB, // 000C JMP #0009 - 0x580C0014, // 000D LDCONST R3 K20 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x600C0010, // 0010 GETGBL R3 G16 - 0x8810011E, // 0011 GETMBR R4 R0 K30 - 0x7C0C0200, // 0012 CALL R3 1 - 0xA802000F, // 0013 EXBLK 0 #0024 - 0x5C100600, // 0014 MOVE R4 R3 - 0x7C100000, // 0015 CALL R4 0 - 0x8C140386, // 0016 GETMET R5 R1 K134 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200087, // 0018 LDCONST R8 K135 - 0x7C140600, // 0019 CALL R5 3 - 0x4C180000, // 001A LDNIL R6 - 0x20180A06, // 001B NE R6 R5 R6 - 0x781A0005, // 001C JMPF R6 #0023 - 0x8C180539, // 001D GETMET R6 R2 K57 - 0x5C200A00, // 001E MOVE R8 R5 - 0x5824000A, // 001F LDCONST R9 K10 - 0x7C180600, // 0020 CALL R6 3 - 0x00180D38, // 0021 ADD R6 R6 K56 - 0x98080A06, // 0022 SETIDX R2 R5 R6 - 0x7001FFEF, // 0023 JMP #0014 - 0x580C0014, // 0024 LDCONST R3 K20 - 0xAC0C0200, // 0025 CATCH R3 1 0 - 0xB0080000, // 0026 RAISE 2 R0 R0 - 0x600C0012, // 0027 GETGBL R3 G18 - 0x7C0C0000, // 0028 CALL R3 0 - 0x60100010, // 0029 GETGBL R4 G16 - 0x8C140566, // 002A GETMET R5 R2 K102 - 0x7C140200, // 002B CALL R5 1 - 0x7C100200, // 002C CALL R4 1 - 0xA8020008, // 002D EXBLK 0 #0037 - 0x5C140800, // 002E MOVE R5 R4 - 0x7C140000, // 002F CALL R5 0 - 0x94180405, // 0030 GETIDX R6 R2 R5 - 0x1C180D0A, // 0031 EQ R6 R6 K10 - 0x781A0002, // 0032 JMPF R6 #0036 - 0x8C180762, // 0033 GETMET R6 R3 K98 - 0x5C200A00, // 0034 MOVE R8 R5 - 0x7C180400, // 0035 CALL R6 2 - 0x7001FFF6, // 0036 JMP #002E - 0x58100014, // 0037 LDCONST R4 K20 - 0xAC100200, // 0038 CATCH R4 1 0 - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x60100010, // 003A GETGBL R4 G16 - 0x5C140600, // 003B MOVE R5 R3 - 0x7C100200, // 003C CALL R4 1 - 0xA802000D, // 003D EXBLK 0 #004C - 0x5C140800, // 003E MOVE R5 R4 - 0x7C140000, // 003F CALL R5 0 - 0xB81A7400, // 0040 GETNGBL R6 K58 - 0x881C0B89, // 0041 GETMBR R7 R5 K137 - 0x001F1007, // 0042 ADD R7 K136 R7 - 0x58200053, // 0043 LDCONST R8 K83 - 0x7C180400, // 0044 CALL R6 2 - 0x8C180B8A, // 0045 GETMET R6 R5 K138 - 0x7C180200, // 0046 CALL R6 1 - 0x8818016B, // 0047 GETMBR R6 R0 K107 - 0x8C180D83, // 0048 GETMET R6 R6 K131 - 0x88200B89, // 0049 GETMBR R8 R5 K137 - 0x7C180400, // 004A CALL R6 2 - 0x7001FFF1, // 004B JMP #003E - 0x58100014, // 004C LDCONST R4 K20 - 0xAC100200, // 004D CATCH R4 1 0 - 0xB0080000, // 004E RAISE 2 R0 R0 - 0x80000000, // 004F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_config_ep -********************************************************************/ -be_local_closure(class_Matter_Device_check_config_ep, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(check_config_ep), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x600C0010, // 0003 GETGBL R3 G16 - 0x88100156, // 0004 GETMBR R4 R0 K86 - 0x8C100966, // 0005 GETMET R4 R4 K102 - 0x7C100200, // 0006 CALL R4 1 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020007, // 0008 EXBLK 0 #0011 - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x8C140562, // 000B GETMET R5 R2 K98 - 0x601C0009, // 000C GETGBL R7 G9 - 0x5C200800, // 000D MOVE R8 R4 - 0x7C1C0200, // 000E CALL R7 1 - 0x7C140400, // 000F CALL R5 2 - 0x7001FFF7, // 0010 JMP #0009 - 0x580C0014, // 0011 LDCONST R3 K20 - 0xAC0C0200, // 0012 CATCH R3 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x600C0010, // 0014 GETGBL R3 G16 - 0x5C100400, // 0015 MOVE R4 R2 - 0x7C0C0200, // 0016 CALL R3 1 - 0xA8020030, // 0017 EXBLK 0 #0049 - 0x5C100600, // 0018 MOVE R4 R3 - 0x7C100000, // 0019 CALL R4 0 - 0x1C14090A, // 001A EQ R5 R4 K10 - 0x7816000B, // 001B JMPF R5 #0028 - 0xB8167400, // 001C GETNGBL R5 K58 - 0x5818008B, // 001D LDCONST R6 K139 - 0x581C0021, // 001E LDCONST R7 K33 - 0x7C140400, // 001F CALL R5 2 - 0x88140156, // 0020 GETMBR R5 R0 K86 - 0x8C140B83, // 0021 GETMET R5 R5 K131 - 0x601C0008, // 0022 GETGBL R7 G8 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C1C0200, // 0024 CALL R7 1 - 0x7C140400, // 0025 CALL R5 2 - 0x50040200, // 0026 LDBOOL R1 1 0 - 0x7002001F, // 0027 JMP #0048 - 0xB8163000, // 0028 GETNGBL R5 K24 - 0x88140B54, // 0029 GETMBR R5 R5 K84 - 0x1C140805, // 002A EQ R5 R4 R5 - 0x7816001B, // 002B JMPF R5 #0048 - 0x50040200, // 002C LDBOOL R1 1 0 - 0xB8167400, // 002D GETNGBL R5 K58 - 0x60180018, // 002E GETGBL R6 G24 - 0x581C008C, // 002F LDCONST R7 K140 - 0x5C200800, // 0030 MOVE R8 R4 - 0x88240120, // 0031 GETMBR R9 R0 K32 - 0x7C180600, // 0032 CALL R6 3 - 0x581C0021, // 0033 LDCONST R7 K33 - 0x7C140400, // 0034 CALL R5 2 - 0x60140008, // 0035 GETGBL R5 G8 - 0x88180120, // 0036 GETMBR R6 R0 K32 - 0x7C140200, // 0037 CALL R5 1 - 0x88180156, // 0038 GETMBR R6 R0 K86 - 0x601C0008, // 0039 GETGBL R7 G8 - 0x5C200800, // 003A MOVE R8 R4 - 0x7C1C0200, // 003B CALL R7 1 - 0x88200156, // 003C GETMBR R8 R0 K86 - 0x941C1007, // 003D GETIDX R7 R8 R7 - 0x98180A07, // 003E SETIDX R6 R5 R7 - 0x88140156, // 003F GETMBR R5 R0 K86 - 0x8C140B83, // 0040 GETMET R5 R5 K131 - 0x601C0008, // 0041 GETGBL R7 G8 - 0x5C200800, // 0042 MOVE R8 R4 - 0x7C1C0200, // 0043 CALL R7 1 - 0x7C140400, // 0044 CALL R5 2 - 0x88140120, // 0045 GETMBR R5 R0 K32 - 0x00140B38, // 0046 ADD R5 R5 K56 - 0x90024005, // 0047 SETMBR R0 K32 R5 - 0x7001FFCE, // 0048 JMP #0018 - 0x580C0014, // 0049 LDCONST R3 K20 - 0xAC0C0200, // 004A CATCH R3 1 0 - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x80040200, // 004C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(class_Matter_Device_every_second, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x8C04038D, // 0001 GETMET R1 R1 K141 - 0x7C040200, // 0002 CALL R1 1 - 0x88040127, // 0003 GETMBR R1 R0 K39 - 0x8C04038D, // 0004 GETMET R1 R1 K141 - 0x7C040200, // 0005 CALL R1 1 - 0x88040129, // 0006 GETMBR R1 R0 K41 - 0x8C04038D, // 0007 GETMET R1 R1 K141 - 0x7C040200, // 0008 CALL R1 1 - 0x88040106, // 0009 GETMBR R1 R0 K6 - 0x8C04038D, // 000A GETMET R1 R1 K141 - 0x7C040200, // 000B CALL R1 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: attribute_updated -********************************************************************/ -be_local_closure(class_Matter_Device_attribute_updated, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(attribute_updated), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160000, // 0002 JMPF R5 #0004 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0xB8163000, // 0004 GETNGBL R5 K24 - 0x8C140B8E, // 0005 GETMET R5 R5 K142 - 0x7C140200, // 0006 CALL R5 1 - 0x90169001, // 0007 SETMBR R5 K72 R1 - 0x90169202, // 0008 SETMBR R5 K73 R2 - 0x90169403, // 0009 SETMBR R5 K74 R3 - 0x88180127, // 000A GETMBR R6 R0 K39 - 0x88180D42, // 000B GETMBR R6 R6 K66 - 0x88180D43, // 000C GETMBR R6 R6 K67 - 0x8C180D8F, // 000D GETMET R6 R6 K143 - 0x5C200A00, // 000E MOVE R8 R5 - 0x5C240800, // 000F MOVE R9 R4 - 0x7C180600, // 0010 CALL R6 3 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: k2l_num -********************************************************************/ -be_local_closure(class_Matter_Device_k2l_num, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 12, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(k2l_num), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x5804000F, // 0000 LDCONST R1 K15 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0003, // 0004 EQ R3 R0 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x80040400, // 0006 RET 1 R2 - 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100166, // 0008 GETMET R4 R0 K102 - 0x7C100200, // 0009 CALL R4 1 - 0x7C0C0200, // 000A CALL R3 1 - 0xA8020007, // 000B EXBLK 0 #0014 - 0x5C100600, // 000C MOVE R4 R3 - 0x7C100000, // 000D CALL R4 0 - 0x8C140562, // 000E GETMET R5 R2 K98 - 0x601C0009, // 000F GETGBL R7 G9 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C1C0200, // 0011 CALL R7 1 - 0x7C140400, // 0012 CALL R5 2 - 0x7001FFF7, // 0013 JMP #000C - 0x580C0014, // 0014 LDCONST R3 K20 - 0xAC0C0200, // 0015 CATCH R3 1 0 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x600C0010, // 0017 GETGBL R3 G16 - 0x6010000C, // 0018 GETGBL R4 G12 - 0x5C140400, // 0019 MOVE R5 R2 - 0x7C100200, // 001A CALL R4 1 - 0x04100938, // 001B SUB R4 R4 K56 - 0x40127004, // 001C CONNECT R4 K56 R4 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x94140404, // 0021 GETIDX R5 R2 R4 - 0x5C180800, // 0022 MOVE R6 R4 - 0x241C0D0A, // 0023 GT R7 R6 K10 - 0x781E0008, // 0024 JMPF R7 #002E - 0x041C0D38, // 0025 SUB R7 R6 K56 - 0x941C0407, // 0026 GETIDX R7 R2 R7 - 0x241C0E05, // 0027 GT R7 R7 R5 - 0x781E0004, // 0028 JMPF R7 #002E - 0x041C0D38, // 0029 SUB R7 R6 K56 - 0x941C0407, // 002A GETIDX R7 R2 R7 - 0x98080C07, // 002B SETIDX R2 R6 R7 - 0x04180D38, // 002C SUB R6 R6 K56 - 0x7001FFF4, // 002D JMP #0023 - 0x98080C05, // 002E SETIDX R2 R6 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0014, // 0030 LDCONST R3 K20 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x80040400, // 0033 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: button_multi_pressed -********************************************************************/ -be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(button_multi_pressed), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x540E0007, // 0000 LDINT R3 8 - 0x3C0C0403, // 0001 SHR R3 R2 R3 - 0x541200FE, // 0002 LDINT R4 255 - 0x2C0C0604, // 0003 AND R3 R3 R4 - 0x541200FE, // 0004 LDINT R4 255 - 0x2C100404, // 0005 AND R4 R2 R4 - 0x8C14016A, // 0006 GETMET R5 R0 K106 - 0x001C0938, // 0007 ADD R7 R4 K56 - 0x58200021, // 0008 LDCONST R8 K33 - 0x5824000A, // 0009 LDCONST R9 K10 - 0x5C280600, // 000A MOVE R10 R3 - 0x7C140A00, // 000B CALL R5 5 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_250ms -********************************************************************/ -be_local_closure(class_Matter_Device_every_250ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(every_250ms), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C040190, // 0000 GETMET R1 R0 K144 - 0x7C040200, // 0001 CALL R1 1 - 0x5804000A, // 0002 LDCONST R1 K10 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C011E, // 0004 GETMBR R3 R0 K30 - 0x7C080200, // 0005 CALL R2 1 - 0x14080202, // 0006 LT R2 R1 R2 - 0x780A0005, // 0007 JMPF R2 #000E - 0x8808011E, // 0008 GETMBR R2 R0 K30 - 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C080591, // 000A GETMET R2 R2 K145 - 0x7C080200, // 000B CALL R2 1 - 0x00040338, // 000C ADD R1 R1 K56 - 0x7001FFF4, // 000D JMP #0003 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_attribute_expansion -********************************************************************/ -be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(process_attribute_expansion), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x880C0348, // 0000 GETMBR R3 R1 K72 - 0x88100349, // 0001 GETMBR R4 R1 K73 - 0x8814034A, // 0002 GETMBR R5 R1 K74 - 0xB81A3000, // 0003 GETNGBL R6 K24 - 0x8C180D92, // 0004 GETMET R6 R6 K146 - 0x5C200000, // 0005 MOVE R8 R0 - 0x7C180400, // 0006 CALL R6 2 - 0x8C1C0D2F, // 0007 GETMET R7 R6 K47 - 0x5C240600, // 0008 MOVE R9 R3 - 0x5C280800, // 0009 MOVE R10 R4 - 0x5C2C0A00, // 000A MOVE R11 R5 - 0x7C1C0800, // 000B CALL R7 4 - 0x8C1C0D93, // 000C GETMET R7 R6 K147 - 0x7C1C0200, // 000D CALL R7 1 - 0x4C200000, // 000E LDNIL R8 - 0x8C240D94, // 000F GETMET R9 R6 K148 - 0x7C240200, // 0010 CALL R9 1 - 0x5C201200, // 0011 MOVE R8 R9 - 0x4C280000, // 0012 LDNIL R10 - 0x2024120A, // 0013 NE R9 R9 R10 - 0x78260005, // 0014 JMPF R9 #001B - 0x5C240400, // 0015 MOVE R9 R2 - 0x8C280D95, // 0016 GETMET R10 R6 K149 - 0x7C280200, // 0017 CALL R10 1 - 0x5C2C1000, // 0018 MOVE R11 R8 - 0x7C240400, // 0019 CALL R9 2 - 0x7001FFF3, // 001A JMP #000F - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_device_map -********************************************************************/ -be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ - be_nested_proto( - 19, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(autoconf_device_map), - &be_const_str_solidified, - ( &(const binstruction[262]) { /* code */ - 0xA406AA00, // 0000 IMPORT R1 K85 - 0x60080013, // 0001 GETGBL R2 G19 - 0x7C080000, // 0002 CALL R2 0 - 0xB80E3000, // 0003 GETNGBL R3 K24 - 0x880C0796, // 0004 GETMBR R3 R3 K150 - 0x5810000A, // 0005 LDCONST R4 K10 - 0xA4172E00, // 0006 IMPORT R5 K151 - 0x8C180B86, // 0007 GETMET R6 R5 K134 - 0x5820000A, // 0008 LDCONST R8 K10 - 0x7C180400, // 0009 CALL R6 2 - 0x4C1C0000, // 000A LDNIL R7 - 0x201C0C07, // 000B NE R7 R6 R7 - 0x781E0066, // 000C JMPF R7 #0074 - 0x601C000C, // 000D GETGBL R7 G12 - 0x8C200D39, // 000E GETMET R8 R6 K57 - 0x58280098, // 000F LDCONST R10 K152 - 0x582C0010, // 0010 LDCONST R11 K16 - 0x7C200600, // 0011 CALL R8 3 - 0x7C1C0200, // 0012 CALL R7 1 - 0x58100038, // 0013 LDCONST R4 K56 - 0x24200F0A, // 0014 GT R8 R7 K10 - 0x7822005D, // 0015 JMPF R8 #0074 - 0x1C200F38, // 0016 EQ R8 R7 K56 - 0x7822001E, // 0017 JMPF R8 #0037 - 0x60200008, // 0018 GETGBL R8 G8 - 0x5C240600, // 0019 MOVE R9 R3 - 0x7C200200, // 001A CALL R8 1 - 0x60240013, // 001B GETGBL R9 G19 - 0x7C240000, // 001C CALL R9 0 - 0x98262599, // 001D SETIDX R9 K18 K153 - 0x98081009, // 001E SETIDX R2 R8 R9 - 0x000C0738, // 001F ADD R3 R3 K56 - 0x58200038, // 0020 LDCONST R8 K56 - 0x4C240000, // 0021 LDNIL R9 - 0x8C280B86, // 0022 GETMET R10 R5 K134 - 0x5C301000, // 0023 MOVE R12 R8 - 0x7C280400, // 0024 CALL R10 2 - 0x5C241400, // 0025 MOVE R9 R10 - 0x4C2C0000, // 0026 LDNIL R11 - 0x2028140B, // 0027 NE R10 R10 R11 - 0x782A000C, // 0028 JMPF R10 #0036 - 0x60280008, // 0029 GETGBL R10 G8 - 0x5C2C0600, // 002A MOVE R11 R3 - 0x7C280200, // 002B CALL R10 1 - 0x602C0013, // 002C GETGBL R11 G19 - 0x7C2C0000, // 002D CALL R11 0 - 0x982E2599, // 002E SETIDX R11 K18 K153 - 0x00301138, // 002F ADD R12 R8 K56 - 0x982F2E0C, // 0030 SETIDX R11 K151 R12 - 0x9808140B, // 0031 SETIDX R2 R10 R11 - 0x000C0738, // 0032 ADD R3 R3 K56 - 0x00100938, // 0033 ADD R4 R4 K56 - 0x00201138, // 0034 ADD R8 R8 K56 - 0x7001FFEB, // 0035 JMP #0022 - 0x7002003C, // 0036 JMP #0074 - 0x1C200F21, // 0037 EQ R8 R7 K33 - 0x78220008, // 0038 JMPF R8 #0042 - 0x60200008, // 0039 GETGBL R8 G8 - 0x5C240600, // 003A MOVE R9 R3 - 0x7C200200, // 003B CALL R8 1 - 0x60240013, // 003C GETGBL R9 G19 - 0x7C240000, // 003D CALL R9 0 - 0x9826259A, // 003E SETIDX R9 K18 K154 - 0x98081009, // 003F SETIDX R2 R8 R9 - 0x000C0738, // 0040 ADD R3 R3 K56 - 0x70020031, // 0041 JMP #0074 - 0x1C200F53, // 0042 EQ R8 R7 K83 - 0x7822002B, // 0043 JMPF R8 #0070 - 0x60200008, // 0044 GETGBL R8 G8 - 0x5C240600, // 0045 MOVE R9 R3 - 0x7C200200, // 0046 CALL R8 1 - 0x60240013, // 0047 GETGBL R9 G19 - 0x7C240000, // 0048 CALL R9 0 - 0x9826259B, // 0049 SETIDX R9 K18 K155 - 0x98081009, // 004A SETIDX R2 R8 R9 - 0x000C0738, // 004B ADD R3 R3 K56 - 0x8C200B86, // 004C GETMET R8 R5 K134 - 0x58280038, // 004D LDCONST R10 K56 - 0x7C200400, // 004E CALL R8 2 - 0x4C240000, // 004F LDNIL R9 - 0x20241009, // 0050 NE R9 R8 R9 - 0x7826001C, // 0051 JMPF R9 #006F - 0x6024000C, // 0052 GETGBL R9 G12 - 0x8C281139, // 0053 GETMET R10 R8 K57 - 0x58300098, // 0054 LDCONST R12 K152 - 0x58340010, // 0055 LDCONST R13 K16 - 0x7C280600, // 0056 CALL R10 3 - 0x7C240200, // 0057 CALL R9 1 - 0x1C281338, // 0058 EQ R10 R9 K56 - 0x782A0009, // 0059 JMPF R10 #0064 - 0x60280008, // 005A GETGBL R10 G8 - 0x5C2C0600, // 005B MOVE R11 R3 - 0x7C280200, // 005C CALL R10 1 - 0x602C0013, // 005D GETGBL R11 G19 - 0x7C2C0000, // 005E CALL R11 0 - 0x982E2599, // 005F SETIDX R11 K18 K153 - 0x9808140B, // 0060 SETIDX R2 R10 R11 - 0x000C0738, // 0061 ADD R3 R3 K56 - 0x00100938, // 0062 ADD R4 R4 K56 - 0x7002000A, // 0063 JMP #006F - 0x1C281321, // 0064 EQ R10 R9 K33 - 0x782A0008, // 0065 JMPF R10 #006F - 0x60280008, // 0066 GETGBL R10 G8 - 0x5C2C0600, // 0067 MOVE R11 R3 - 0x7C280200, // 0068 CALL R10 1 - 0x602C0013, // 0069 GETGBL R11 G19 - 0x7C2C0000, // 006A CALL R11 0 - 0x982E259A, // 006B SETIDX R11 K18 K154 - 0x9808140B, // 006C SETIDX R2 R10 R11 - 0x000C0738, // 006D ADD R3 R3 K56 - 0x00100938, // 006E ADD R4 R4 K56 - 0x70020003, // 006F JMP #0074 - 0x54220003, // 0070 LDINT R8 4 - 0x1C200E08, // 0071 EQ R8 R7 R8 - 0x78220000, // 0072 JMPF R8 #0074 - 0x7001FFFF, // 0073 JMP #0074 - 0xB81E2C00, // 0074 GETNGBL R7 K22 - 0x8C1C0F9C, // 0075 GETMET R7 R7 K156 - 0x5824009D, // 0076 LDCONST R9 K157 - 0x50280200, // 0077 LDBOOL R10 1 0 - 0x7C1C0600, // 0078 CALL R7 3 - 0x60200012, // 0079 GETGBL R8 G18 - 0x7C200000, // 007A CALL R8 0 - 0xB8267400, // 007B GETNGBL R9 K58 - 0x60280008, // 007C GETGBL R10 G8 - 0x5C2C0E00, // 007D MOVE R11 R7 - 0x7C280200, // 007E CALL R10 1 - 0x002B3C0A, // 007F ADD R10 K158 R10 - 0x582C0053, // 0080 LDCONST R11 K83 - 0x7C240400, // 0081 CALL R9 2 - 0x4C240000, // 0082 LDNIL R9 - 0x20240E09, // 0083 NE R9 R7 R9 - 0x7826004D, // 0084 JMPF R9 #00D3 - 0x8C240F6C, // 0085 GETMET R9 R7 K108 - 0x582C009F, // 0086 LDCONST R11 K159 - 0x7C240400, // 0087 CALL R9 2 - 0x78260049, // 0088 JMPF R9 #00D3 - 0x941C0F9F, // 0089 GETIDX R7 R7 K159 - 0x5824000A, // 008A LDCONST R9 K10 - 0x50280200, // 008B LDBOOL R10 1 0 - 0x782A0045, // 008C JMPF R10 #00D3 - 0x60280008, // 008D GETGBL R10 G8 - 0x5C2C1200, // 008E MOVE R11 R9 - 0x7C280200, // 008F CALL R10 1 - 0x002B400A, // 0090 ADD R10 K160 R10 - 0x8C2C0F6C, // 0091 GETMET R11 R7 K108 - 0x5C341400, // 0092 MOVE R13 R10 - 0x7C2C0400, // 0093 CALL R11 2 - 0x742E0000, // 0094 JMPT R11 #0096 - 0x7002003C, // 0095 JMP #00D3 - 0x942C0E0A, // 0096 GETIDX R11 R7 R10 - 0xB8327400, // 0097 GETNGBL R12 K58 - 0x60340018, // 0098 GETGBL R13 G24 - 0x583800A1, // 0099 LDCONST R14 K161 - 0x5C3C1400, // 009A MOVE R15 R10 - 0x60400008, // 009B GETGBL R16 G8 - 0x5C441600, // 009C MOVE R17 R11 - 0x7C400200, // 009D CALL R16 1 - 0x7C340600, // 009E CALL R13 3 - 0x58380053, // 009F LDCONST R14 K83 - 0x7C300400, // 00A0 CALL R12 2 - 0x8C301739, // 00A1 GETMET R12 R11 K57 - 0x583800A2, // 00A2 LDCONST R14 K162 - 0x543DFFFE, // 00A3 LDINT R15 -1 - 0x7C300600, // 00A4 CALL R12 3 - 0x8C341739, // 00A5 GETMET R13 R11 K57 - 0x583C00A3, // 00A6 LDCONST R15 K163 - 0x5441FFFE, // 00A7 LDINT R16 -1 - 0x7C340600, // 00A8 CALL R13 3 - 0x2438190A, // 00A9 GT R14 R12 K10 - 0x783A0002, // 00AA JMPF R14 #00AE - 0x8C381162, // 00AB GETMET R14 R8 K98 - 0x04401938, // 00AC SUB R16 R12 K56 - 0x7C380400, // 00AD CALL R14 2 - 0x24381B0A, // 00AE GT R14 R13 K10 - 0x783A0002, // 00AF JMPF R14 #00B3 - 0x8C381162, // 00B0 GETMET R14 R8 K98 - 0x04401B38, // 00B1 SUB R16 R13 K56 - 0x7C380400, // 00B2 CALL R14 2 - 0xB83A7400, // 00B3 GETNGBL R14 K58 - 0x603C0018, // 00B4 GETGBL R15 G24 - 0x584000A4, // 00B5 LDCONST R16 K164 - 0x5C441800, // 00B6 MOVE R17 R12 - 0x5C481A00, // 00B7 MOVE R18 R13 - 0x7C3C0600, // 00B8 CALL R15 3 - 0x58400053, // 00B9 LDCONST R16 K83 - 0x7C380400, // 00BA CALL R14 2 - 0x8C381739, // 00BB GETMET R14 R11 K57 - 0x584000A5, // 00BC LDCONST R16 K165 - 0x7C380400, // 00BD CALL R14 2 - 0x783A0002, // 00BE JMPF R14 #00C2 - 0x943C1D21, // 00BF GETIDX R15 R14 K33 - 0x243C1F0A, // 00C0 GT R15 R15 K10 - 0x743E0000, // 00C1 JMPT R15 #00C3 - 0x503C0001, // 00C2 LDBOOL R15 0 1 - 0x503C0200, // 00C3 LDBOOL R15 1 0 - 0x60400008, // 00C4 GETGBL R16 G8 - 0x5C440600, // 00C5 MOVE R17 R3 - 0x7C400200, // 00C6 CALL R16 1 - 0x60440013, // 00C7 GETGBL R17 G19 - 0x7C440000, // 00C8 CALL R17 0 - 0x783E0001, // 00C9 JMPF R15 #00CC - 0x584800A6, // 00CA LDCONST R18 K166 - 0x70020000, // 00CB JMP #00CD - 0x584800A7, // 00CC LDCONST R18 K167 - 0x98462412, // 00CD SETIDX R17 K18 R18 - 0x98474E09, // 00CE SETIDX R17 K167 R9 - 0x98082011, // 00CF SETIDX R2 R16 R17 - 0x000C0738, // 00D0 ADD R3 R3 K56 - 0x00241338, // 00D1 ADD R9 R9 K56 - 0x7001FFB7, // 00D2 JMP #008B - 0x6024000C, // 00D3 GETGBL R9 G12 - 0xB82A2C00, // 00D4 GETNGBL R10 K22 - 0x8C2815A8, // 00D5 GETMET R10 R10 K168 - 0x7C280200, // 00D6 CALL R10 1 - 0x7C240200, // 00D7 CALL R9 1 - 0x5828000A, // 00D8 LDCONST R10 K10 - 0x04241204, // 00D9 SUB R9 R9 R4 - 0x142C1409, // 00DA LT R11 R10 R9 - 0x782E0011, // 00DB JMPF R11 #00EE - 0x8C2C1139, // 00DC GETMET R11 R8 K57 - 0x5C341400, // 00DD MOVE R13 R10 - 0x7C2C0400, // 00DE CALL R11 2 - 0x4C300000, // 00DF LDNIL R12 - 0x1C2C160C, // 00E0 EQ R11 R11 R12 - 0x782E0009, // 00E1 JMPF R11 #00EC - 0x602C0008, // 00E2 GETGBL R11 G8 - 0x5C300600, // 00E3 MOVE R12 R3 - 0x7C2C0200, // 00E4 CALL R11 1 - 0x60300013, // 00E5 GETGBL R12 G19 - 0x7C300000, // 00E6 CALL R12 0 - 0x983225A9, // 00E7 SETIDX R12 K18 K169 - 0x00341538, // 00E8 ADD R13 R10 K56 - 0x9833520D, // 00E9 SETIDX R12 K169 R13 - 0x9808160C, // 00EA SETIDX R2 R11 R12 - 0x000C0738, // 00EB ADD R3 R3 K56 - 0x00281538, // 00EC ADD R10 R10 K56 - 0x7001FFEB, // 00ED JMP #00DA - 0x8C2C035E, // 00EE GETMET R11 R1 K94 - 0xB8362C00, // 00EF GETNGBL R13 K22 - 0x8C341B5B, // 00F0 GETMET R13 R13 K91 - 0x7C340200, // 00F1 CALL R13 1 - 0x7C2C0400, // 00F2 CALL R11 2 - 0x8C3001AA, // 00F3 GETMET R12 R0 K170 - 0x5C381600, // 00F4 MOVE R14 R11 - 0x7C300400, // 00F5 CALL R12 2 - 0x60340010, // 00F6 GETGBL R13 G16 - 0x5C381800, // 00F7 MOVE R14 R12 - 0x7C340200, // 00F8 CALL R13 1 - 0xA8020007, // 00F9 EXBLK 0 #0102 - 0x5C381A00, // 00FA MOVE R14 R13 - 0x7C380000, // 00FB CALL R14 0 - 0x603C0008, // 00FC GETGBL R15 G8 - 0x5C400600, // 00FD MOVE R16 R3 - 0x7C3C0200, // 00FE CALL R15 1 - 0x98081E0E, // 00FF SETIDX R2 R15 R14 - 0x000C0738, // 0100 ADD R3 R3 K56 - 0x7001FFF7, // 0101 JMP #00FA - 0x58340014, // 0102 LDCONST R13 K20 - 0xAC340200, // 0103 CATCH R13 1 0 - 0xB0080000, // 0104 RAISE 2 R0 R0 - 0x80040400, // 0105 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bridge_add_endpoint -********************************************************************/ -be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(bridge_add_endpoint), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x880C017A, // 0000 GETMBR R3 R0 K122 - 0x8C0C0739, // 0001 GETMET R3 R3 K57 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120008, // 0006 JMPF R4 #0010 - 0xB8127400, // 0007 GETNGBL R4 K58 - 0x60140008, // 0008 GETGBL R5 G8 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C140200, // 000A CALL R5 1 - 0x0016F605, // 000B ADD R5 K123 R5 - 0x00140B7C, // 000C ADD R5 R5 K124 - 0x58180053, // 000D LDCONST R6 K83 - 0x7C100400, // 000E CALL R4 2 - 0x80000800, // 000F RET 0 - 0x88100120, // 0010 GETMBR R4 R0 K32 - 0x60140008, // 0011 GETGBL R5 G8 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x5C180600, // 0014 MOVE R6 R3 - 0x5C1C0000, // 0015 MOVE R7 R0 - 0x5C200800, // 0016 MOVE R8 R4 - 0x5C240400, // 0017 MOVE R9 R2 - 0x7C180600, // 0018 CALL R6 3 - 0x881C011E, // 0019 GETMBR R7 R0 K30 - 0x8C1C0F62, // 001A GETMET R7 R7 K98 - 0x5C240C00, // 001B MOVE R9 R6 - 0x7C1C0400, // 001C CALL R7 2 - 0x601C0013, // 001D GETGBL R7 G19 - 0x7C1C0000, // 001E CALL R7 0 - 0x981E2401, // 001F SETIDX R7 K18 R1 - 0x60200010, // 0020 GETGBL R8 G16 - 0x8C240566, // 0021 GETMET R9 R2 K102 - 0x7C240200, // 0022 CALL R9 1 - 0x7C200200, // 0023 CALL R8 1 - 0xA8020004, // 0024 EXBLK 0 #002A - 0x5C241000, // 0025 MOVE R9 R8 - 0x7C240000, // 0026 CALL R9 0 - 0x94280409, // 0027 GETIDX R10 R2 R9 - 0x981C120A, // 0028 SETIDX R7 R9 R10 - 0x7001FFFA, // 0029 JMP #0025 - 0x58200014, // 002A LDCONST R8 K20 - 0xAC200200, // 002B CATCH R8 1 0 - 0xB0080000, // 002C RAISE 2 R0 R0 - 0xB8227400, // 002D GETNGBL R8 K58 - 0x60240018, // 002E GETGBL R9 G24 - 0x582800AB, // 002F LDCONST R10 K171 - 0x5C2C0800, // 0030 MOVE R11 R4 - 0x5C300200, // 0031 MOVE R12 R1 - 0x8C34017D, // 0032 GETMET R13 R0 K125 - 0x5C3C0400, // 0033 MOVE R15 R2 - 0x7C340400, // 0034 CALL R13 2 - 0x7C240800, // 0035 CALL R9 4 - 0x58280021, // 0036 LDCONST R10 K33 - 0x7C200400, // 0037 CALL R8 2 - 0x88200156, // 0038 GETMBR R8 R0 K86 - 0x98200A07, // 0039 SETIDX R8 R5 R7 - 0x50200200, // 003A LDBOOL R8 1 0 - 0x90021608, // 003B SETMBR R0 K11 R8 - 0x88200120, // 003C GETMBR R8 R0 K32 - 0x00201138, // 003D ADD R8 R8 K56 - 0x90024008, // 003E SETMBR R0 K32 R8 - 0x8C20010C, // 003F GETMET R8 R0 K12 - 0x7C200200, // 0040 CALL R8 1 - 0x8C2001AC, // 0041 GETMET R8 R0 K172 - 0x7C200200, // 0042 CALL R8 1 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: MtrInfo -********************************************************************/ -be_local_closure(class_Matter_Device_MtrInfo, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(MtrInfo), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x1C140710, // 0000 EQ R5 R3 K16 - 0x7815FFFF, // 0001 JMPF R5 #0002 - 0x1C140710, // 0002 EQ R5 R3 K16 - 0x7816000D, // 0003 JMPF R5 #0012 - 0x60140010, // 0004 GETGBL R5 G16 - 0x8818011E, // 0005 GETMBR R6 R0 K30 - 0x7C140200, // 0006 CALL R5 1 - 0xA8020005, // 0007 EXBLK 0 #000E - 0x5C180A00, // 0008 MOVE R6 R5 - 0x7C180000, // 0009 CALL R6 0 - 0x8C1C01AD, // 000A GETMET R7 R0 K173 - 0x88240D48, // 000B GETMBR R9 R6 K72 - 0x7C1C0400, // 000C CALL R7 2 - 0x7001FFF9, // 000D JMP #0008 - 0x58140014, // 000E LDCONST R5 K20 - 0xAC140200, // 000F CATCH R5 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x70020011, // 0011 JMP #0024 - 0x60140004, // 0012 GETGBL R5 G4 - 0x5C180800, // 0013 MOVE R6 R4 - 0x7C140200, // 0014 CALL R5 1 - 0x1C140BAE, // 0015 EQ R5 R5 K174 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C1401AD, // 0017 GETMET R5 R0 K173 - 0x5C1C0800, // 0018 MOVE R7 R4 - 0x7C140400, // 0019 CALL R5 2 - 0x70020008, // 001A JMP #0024 - 0x8C1401AF, // 001B GETMET R5 R0 K175 - 0x5C1C0600, // 001C MOVE R7 R3 - 0x7C140400, // 001D CALL R5 2 - 0x4C180000, // 001E LDNIL R6 - 0x20180A06, // 001F NE R6 R5 R6 - 0x781A0002, // 0020 JMPF R6 #0024 - 0x8C1801AD, // 0021 GETMET R6 R0 K173 - 0x88200B48, // 0022 GETMBR R8 R5 K72 - 0x7C180400, // 0023 CALL R6 2 - 0xB8162C00, // 0024 GETNGBL R5 K22 - 0x8C140BB0, // 0025 GETMET R5 R5 K176 - 0x7C140200, // 0026 CALL R5 1 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: load_param ********************************************************************/ @@ -2657,138 +2185,138 @@ be_local_closure(class_Matter_Device_load_param, /* name */ be_str_weak(load_param), &be_const_str_solidified, ( &(const binstruction[134]) { /* code */ - 0xA4062A00, // 0000 IMPORT R1 K21 + 0xA406B000, // 0000 IMPORT R1 K88 0x50080000, // 0001 LDBOOL R2 0 0 0xA8020054, // 0002 EXBLK 0 #0058 0x600C0011, // 0003 GETGBL R3 G17 - 0x881001B1, // 0004 GETMBR R4 R0 K177 + 0x8810018F, // 0004 GETMBR R4 R0 K143 0x7C0C0200, // 0005 CALL R3 1 - 0x8C1007B2, // 0006 GETMET R4 R3 K178 + 0x8C100790, // 0006 GETMET R4 R3 K144 0x7C100200, // 0007 CALL R4 1 - 0x8C14078A, // 0008 GETMET R5 R3 K138 + 0x8C14077B, // 0008 GETMET R5 R3 K123 0x7C140200, // 0009 CALL R5 1 - 0xA416AA00, // 000A IMPORT R5 K85 - 0x8C180B5E, // 000B GETMET R6 R5 K94 + 0xA4166400, // 000A IMPORT R5 K50 + 0x8C180B3E, // 000B GETMET R6 R5 K62 0x5C200800, // 000C MOVE R8 R4 0x7C180400, // 000D CALL R6 2 - 0x8C1C0D39, // 000E GETMET R7 R6 K57 - 0x582400B4, // 000F LDCONST R9 K180 - 0x882801B3, // 0010 GETMBR R10 R0 K179 + 0x8C1C0D16, // 000E GETMET R7 R6 K22 + 0x58240092, // 000F LDCONST R9 K146 + 0x88280191, // 0010 GETMBR R10 R0 K145 0x7C1C0600, // 0011 CALL R7 3 - 0x90036607, // 0012 SETMBR R0 K179 R7 - 0x8C1C0D39, // 0013 GETMET R7 R6 K57 - 0x582400B6, // 0014 LDCONST R9 K182 - 0x882801B5, // 0015 GETMBR R10 R0 K181 + 0x90032207, // 0012 SETMBR R0 K145 R7 + 0x8C1C0D16, // 0013 GETMET R7 R6 K22 + 0x58240094, // 0014 LDCONST R9 K148 + 0x88280193, // 0015 GETMBR R10 R0 K147 0x7C1C0600, // 0016 CALL R7 3 - 0x90036A07, // 0017 SETMBR R0 K181 R7 + 0x90032607, // 0017 SETMBR R0 K147 R7 0x601C0017, // 0018 GETGBL R7 G23 - 0x8C200D39, // 0019 GETMET R8 R6 K57 - 0x58280022, // 001A LDCONST R10 K34 + 0x8C200D16, // 0019 GETMET R8 R6 K22 + 0x58280060, // 001A LDCONST R10 K96 0x502C0000, // 001B LDBOOL R11 0 0 0x7C200600, // 001C CALL R8 3 0x7C1C0200, // 001D CALL R7 1 - 0x90024407, // 001E SETMBR R0 K34 R7 + 0x9002C007, // 001E SETMBR R0 K96 R7 0x601C0017, // 001F GETGBL R7 G23 - 0x8C200D39, // 0020 GETMET R8 R6 K57 - 0x58280023, // 0021 LDCONST R10 K35 + 0x8C200D16, // 0020 GETMET R8 R6 K22 + 0x58280061, // 0021 LDCONST R10 K97 0x502C0000, // 0022 LDBOOL R11 0 0 0x7C200600, // 0023 CALL R8 3 0x7C1C0200, // 0024 CALL R7 1 - 0x90024607, // 0025 SETMBR R0 K35 R7 - 0x8C1C0D39, // 0026 GETMET R7 R6 K57 - 0x582400B7, // 0027 LDCONST R9 K183 - 0x88280120, // 0028 GETMBR R10 R0 K32 + 0x9002C207, // 0025 SETMBR R0 K97 R7 + 0x8C1C0D16, // 0026 GETMET R7 R6 K22 + 0x58240095, // 0027 LDCONST R9 K149 + 0x88280147, // 0028 GETMBR R10 R0 K71 0x7C1C0600, // 0029 CALL R7 3 - 0x90024007, // 002A SETMBR R0 K32 R7 - 0x8C1C0D39, // 002B GETMET R7 R6 K57 - 0x582400B8, // 002C LDCONST R9 K184 + 0x90028E07, // 002A SETMBR R0 K71 R7 + 0x8C1C0D16, // 002B GETMET R7 R6 K22 + 0x58240096, // 002C LDCONST R9 K150 0x7C1C0400, // 002D CALL R7 2 - 0x9002AC07, // 002E SETMBR R0 K86 R7 + 0x90026A07, // 002E SETMBR R0 K53 R7 0x601C0017, // 002F GETGBL R7 G23 - 0x8C200D39, // 0030 GETMET R8 R6 K57 - 0x582800B9, // 0031 LDCONST R10 K185 + 0x8C200D16, // 0030 GETMET R8 R6 K22 + 0x58280097, // 0031 LDCONST R10 K151 0x7C200400, // 0032 CALL R8 2 0x7C1C0200, // 0033 CALL R7 1 - 0x90037207, // 0034 SETMBR R0 K185 R7 - 0x881C0156, // 0035 GETMBR R7 R0 K86 + 0x90032E07, // 0034 SETMBR R0 K151 R7 + 0x881C0135, // 0035 GETMBR R7 R0 K53 0x4C200000, // 0036 LDNIL R8 0x201C0E08, // 0037 NE R7 R7 R8 0x781E000D, // 0038 JMPF R7 #0047 - 0xB81E7400, // 0039 GETNGBL R7 K58 + 0xB81E2E00, // 0039 GETNGBL R7 K23 0x60200018, // 003A GETGBL R8 G24 - 0x582400BA, // 003B LDCONST R9 K186 - 0x88280156, // 003C GETMBR R10 R0 K86 + 0x58240098, // 003B LDCONST R9 K152 + 0x88280135, // 003C GETMBR R10 R0 K53 0x7C200400, // 003D CALL R8 2 - 0x58240053, // 003E LDCONST R9 K83 + 0x58240030, // 003E LDCONST R9 K48 0x7C1C0400, // 003F CALL R7 2 - 0x8C1C0158, // 0040 GETMET R7 R0 K88 + 0x8C1C0137, // 0040 GETMET R7 R0 K55 0x7C1C0200, // 0041 CALL R7 1 - 0x8C1C01BB, // 0042 GETMET R7 R0 K187 + 0x8C1C0199, // 0042 GETMET R7 R0 K153 0x7C1C0200, // 0043 CALL R7 1 0x5C080E00, // 0044 MOVE R2 R7 0x501C0200, // 0045 LDBOOL R7 1 0 - 0x90021607, // 0046 SETMBR R0 K11 R7 - 0x8C1C0D39, // 0047 GETMET R7 R6 K57 - 0x582400BC, // 0048 LDCONST R9 K188 + 0x90020E07, // 0046 SETMBR R0 K7 R7 + 0x8C1C0D16, // 0047 GETMET R7 R6 K22 + 0x5824009A, // 0048 LDCONST R9 K154 0x60280013, // 0049 GETGBL R10 G19 0x7C280000, // 004A CALL R10 0 0x7C1C0600, // 004B CALL R7 3 - 0x90023E07, // 004C SETMBR R0 K31 R7 - 0x881C011F, // 004D GETMBR R7 R0 K31 + 0x90022A07, // 004C SETMBR R0 K21 R7 + 0x881C0115, // 004D GETMBR R7 R0 K21 0x781E0006, // 004E JMPF R7 #0056 - 0xB81E7400, // 004F GETNGBL R7 K58 + 0xB81E2E00, // 004F GETNGBL R7 K23 0x60200008, // 0050 GETGBL R8 G8 - 0x8824011F, // 0051 GETMBR R9 R0 K31 + 0x88240115, // 0051 GETMBR R9 R0 K21 0x7C200200, // 0052 CALL R8 1 - 0x00237A08, // 0053 ADD R8 K189 R8 - 0x58240053, // 0054 LDCONST R9 K83 + 0x00233608, // 0053 ADD R8 K155 R8 + 0x58240030, // 0054 LDCONST R9 K48 0x7C1C0400, // 0055 CALL R7 2 0xA8040001, // 0056 EXBLK 1 1 0x70020011, // 0057 JMP #006A 0xAC0C0002, // 0058 CATCH R3 0 2 0x7002000E, // 0059 JMP #0069 - 0x201407BE, // 005A NE R5 R3 K190 + 0x2014079C, // 005A NE R5 R3 K156 0x7816000B, // 005B JMPF R5 #0068 - 0xB8167400, // 005C GETNGBL R5 K58 + 0xB8162E00, // 005C GETNGBL R5 K23 0x60180008, // 005D GETGBL R6 G8 0x5C1C0600, // 005E MOVE R7 R3 0x7C180200, // 005F CALL R6 1 - 0x001B7E06, // 0060 ADD R6 K191 R6 - 0x00180D7F, // 0061 ADD R6 R6 K127 + 0x001B3A06, // 0060 ADD R6 K157 R6 + 0x00180D9E, // 0061 ADD R6 R6 K158 0x601C0008, // 0062 GETGBL R7 G8 0x5C200800, // 0063 MOVE R8 R4 0x7C1C0200, // 0064 CALL R7 1 0x00180C07, // 0065 ADD R6 R6 R7 - 0x581C0021, // 0066 LDCONST R7 K33 + 0x581C001D, // 0066 LDCONST R7 K29 0x7C140400, // 0067 CALL R5 2 0x70020000, // 0068 JMP #006A 0xB0080000, // 0069 RAISE 2 R0 R0 - 0x880C01B3, // 006A GETMBR R3 R0 K179 + 0x880C0191, // 006A GETMBR R3 R0 K145 0x4C100000, // 006B LDNIL R4 0x1C0C0604, // 006C EQ R3 R3 R4 0x780E000A, // 006D JMPF R3 #0079 - 0x8C0C03C0, // 006E GETMET R3 R1 K192 - 0x58140021, // 006F LDCONST R5 K33 + 0x8C0C039F, // 006E GETMET R3 R1 K159 + 0x5814001D, // 006F LDCONST R5 K29 0x7C0C0400, // 0070 CALL R3 2 - 0x8C0C0786, // 0071 GETMET R3 R3 K134 - 0x5814000A, // 0072 LDCONST R5 K10 - 0x58180021, // 0073 LDCONST R6 K33 + 0x8C0C0777, // 0071 GETMET R3 R3 K119 + 0x58140006, // 0072 LDCONST R5 K6 + 0x5818001D, // 0073 LDCONST R6 K29 0x7C0C0600, // 0074 CALL R3 3 0x54120FFE, // 0075 LDINT R4 4095 0x2C0C0604, // 0076 AND R3 R3 R4 - 0x90036603, // 0077 SETMBR R0 K179 R3 + 0x90032203, // 0077 SETMBR R0 K145 R3 0x50080200, // 0078 LDBOOL R2 1 0 - 0x880C01B5, // 0079 GETMBR R3 R0 K181 + 0x880C0193, // 0079 GETMBR R3 R0 K147 0x4C100000, // 007A LDNIL R4 0x1C0C0604, // 007B EQ R3 R3 R4 0x780E0004, // 007C JMPF R3 #0082 - 0x880C0106, // 007D GETMBR R3 R0 K6 - 0x8C0C07C1, // 007E GETMET R3 R3 K193 + 0x880C0109, // 007D GETMBR R3 R0 K9 + 0x8C0C07A0, // 007E GETMET R3 R3 K160 0x7C0C0200, // 007F CALL R3 1 - 0x90036A03, // 0080 SETMBR R0 K181 R3 + 0x90032603, // 0080 SETMBR R0 K147 R3 0x50080200, // 0081 LDBOOL R2 1 0 0x780A0001, // 0082 JMPF R2 #0085 - 0x8C0C010C, // 0083 GETMET R3 R0 K12 + 0x8C0C0108, // 0083 GETMET R3 R0 K8 0x7C0C0200, // 0084 CALL R3 1 0x80000000, // 0085 RET 0 }) @@ -2798,12 +2326,12 @@ be_local_closure(class_Matter_Device_load_param, /* name */ /******************************************************************** -** Solidified function: MtrUpdate +** Solidified function: every_50ms ********************************************************************/ -be_local_closure(class_Matter_Device_MtrUpdate, /* name */ +be_local_closure(class_Matter_Device_every_50ms, /* name */ be_nested_proto( - 18, /* nstack */ - 5, /* argc */ + 3, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2811,135 +2339,16 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(MtrUpdate), + be_str_weak(every_50ms), &be_const_str_solidified, - ( &(const binstruction[126]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140805, // 0001 EQ R5 R4 R5 - 0x78160004, // 0002 JMPF R5 #0008 - 0xB8162C00, // 0003 GETNGBL R5 K22 - 0x8C140BC2, // 0004 GETMET R5 R5 K194 - 0x581C00C3, // 0005 LDCONST R7 K195 - 0x7C140400, // 0006 CALL R5 2 - 0x80040A00, // 0007 RET 1 R5 - 0xB8162C00, // 0008 GETNGBL R5 K22 - 0x8C140BC4, // 0009 GETMET R5 R5 K196 - 0x5C1C0800, // 000A MOVE R7 R4 - 0x582000C5, // 000B LDCONST R8 K197 - 0x7C140600, // 000C CALL R5 3 - 0xB81A2C00, // 000D GETNGBL R6 K22 - 0x8C180DC4, // 000E GETMET R6 R6 K196 - 0x5C200800, // 000F MOVE R8 R4 - 0x582400C6, // 0010 LDCONST R9 K198 - 0x7C180600, // 0011 CALL R6 3 - 0x74160000, // 0012 JMPT R5 #0014 - 0x781A0064, // 0013 JMPF R6 #0079 - 0x4C1C0000, // 0014 LDNIL R7 - 0x78160010, // 0015 JMPF R5 #0027 - 0x60200009, // 0016 GETGBL R8 G9 - 0x94240805, // 0017 GETIDX R9 R4 R5 - 0x7C200200, // 0018 CALL R8 1 - 0x1824110A, // 0019 LE R9 R8 K10 - 0x78260004, // 001A JMPF R9 #0020 - 0xB8262C00, // 001B GETNGBL R9 K22 - 0x8C2413C2, // 001C GETMET R9 R9 K194 - 0x582C00C7, // 001D LDCONST R11 K199 - 0x7C240400, // 001E CALL R9 2 - 0x80041200, // 001F RET 1 R9 - 0x8C24014B, // 0020 GETMET R9 R0 K75 - 0x5C2C1000, // 0021 MOVE R11 R8 - 0x7C240400, // 0022 CALL R9 2 - 0x5C1C1200, // 0023 MOVE R7 R9 - 0x8C240983, // 0024 GETMET R9 R4 K131 - 0x5C2C0A00, // 0025 MOVE R11 R5 - 0x7C240400, // 0026 CALL R9 2 - 0x781A0009, // 0027 JMPF R6 #0032 - 0x4C200000, // 0028 LDNIL R8 - 0x1C200E08, // 0029 EQ R8 R7 R8 - 0x78220003, // 002A JMPF R8 #002F - 0x8C2001AF, // 002B GETMET R8 R0 K175 - 0x94280806, // 002C GETIDX R10 R4 R6 - 0x7C200400, // 002D CALL R8 2 - 0x5C1C1000, // 002E MOVE R7 R8 - 0x8C200983, // 002F GETMET R8 R4 K131 - 0x5C280C00, // 0030 MOVE R10 R6 - 0x7C200400, // 0031 CALL R8 2 - 0x4C200000, // 0032 LDNIL R8 - 0x1C200E08, // 0033 EQ R8 R7 R8 - 0x78220004, // 0034 JMPF R8 #003A - 0xB8222C00, // 0035 GETNGBL R8 K22 - 0x8C2011C2, // 0036 GETMET R8 R8 K194 - 0x582800C8, // 0037 LDCONST R10 K200 - 0x7C200400, // 0038 CALL R8 2 - 0x80041000, // 0039 RET 1 R8 - 0x88200FC9, // 003A GETMBR R8 R7 K201 - 0x74220004, // 003B JMPT R8 #0041 - 0xB8222C00, // 003C GETNGBL R8 K22 - 0x8C2011C2, // 003D GETMET R8 R8 K194 - 0x582800CA, // 003E LDCONST R10 K202 - 0x7C200400, // 003F CALL R8 2 - 0x80041000, // 0040 RET 1 R8 - 0x8C200FCB, // 0041 GETMET R8 R7 K203 - 0x7C200200, // 0042 CALL R8 1 - 0x60240013, // 0043 GETGBL R9 G19 - 0x7C240000, // 0044 CALL R9 0 - 0x60280010, // 0045 GETGBL R10 G16 - 0x8C2C0966, // 0046 GETMET R11 R4 K102 - 0x7C2C0200, // 0047 CALL R11 1 - 0x7C280200, // 0048 CALL R10 1 - 0xA8020016, // 0049 EXBLK 0 #0061 - 0x5C2C1400, // 004A MOVE R11 R10 - 0x7C2C0000, // 004B CALL R11 0 - 0xB8322C00, // 004C GETNGBL R12 K22 - 0x8C3019CC, // 004D GETMET R12 R12 K204 - 0x5C381000, // 004E MOVE R14 R8 - 0x5C3C1600, // 004F MOVE R15 R11 - 0x7C300600, // 0050 CALL R12 3 - 0x4C340000, // 0051 LDNIL R13 - 0x1C34180D, // 0052 EQ R13 R12 R13 - 0x78360008, // 0053 JMPF R13 #005D - 0xB8362C00, // 0054 GETNGBL R13 K22 - 0x8C341BC2, // 0055 GETMET R13 R13 K194 - 0x603C0018, // 0056 GETGBL R15 G24 - 0x584000CD, // 0057 LDCONST R16 K205 - 0x5C441600, // 0058 MOVE R17 R11 - 0x7C3C0400, // 0059 CALL R15 2 - 0x7C340400, // 005A CALL R13 2 - 0xA8040001, // 005B EXBLK 1 1 - 0x80001A00, // 005C RET 0 - 0x9434100C, // 005D GETIDX R13 R8 R12 - 0x9438080B, // 005E GETIDX R14 R4 R11 - 0x98241A0E, // 005F SETIDX R9 R13 R14 - 0x7001FFE8, // 0060 JMP #004A - 0x58280014, // 0061 LDCONST R10 K20 - 0xAC280200, // 0062 CATCH R10 1 0 - 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x8C280FCE, // 0064 GETMET R10 R7 K206 - 0x5C301200, // 0065 MOVE R12 R9 - 0x7C280400, // 0066 CALL R10 2 - 0x8C280FCF, // 0067 GETMET R10 R7 K207 - 0x7C280200, // 0068 CALL R10 1 - 0x782A000A, // 0069 JMPF R10 #0075 - 0x602C0018, // 006A GETGBL R11 G24 - 0x583000D0, // 006B LDCONST R12 K208 - 0x5C340200, // 006C MOVE R13 R1 - 0x5C381400, // 006D MOVE R14 R10 - 0x7C2C0600, // 006E CALL R11 3 - 0xB8322C00, // 006F GETNGBL R12 K22 - 0x8C3019D1, // 0070 GETMET R12 R12 K209 - 0x5C381600, // 0071 MOVE R14 R11 - 0x7C300400, // 0072 CALL R12 2 - 0x80041800, // 0073 RET 1 R12 - 0x70020003, // 0074 JMP #0079 - 0xB82E2C00, // 0075 GETNGBL R11 K22 - 0x8C2C17B0, // 0076 GETMET R11 R11 K176 - 0x7C2C0200, // 0077 CALL R11 1 - 0x80041600, // 0078 RET 1 R11 - 0xB81E2C00, // 0079 GETNGBL R7 K22 - 0x8C1C0FC2, // 007A GETMET R7 R7 K194 - 0x582400D2, // 007B LDCONST R9 K210 - 0x7C1C0400, // 007C CALL R7 2 - 0x80000000, // 007D RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x8804015E, // 0000 GETMBR R1 R0 K94 + 0x00040314, // 0001 ADD R1 R1 K20 + 0x9002BC01, // 0002 SETMBR R0 K94 R1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C0403A1, // 0004 GETMET R1 R1 K161 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 }) ) ); @@ -3045,19 +2454,19 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ be_str_weak(register_commands), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xB8062C00, // 0000 GETNGBL R1 K22 - 0x8C0403D3, // 0001 GETMET R1 R1 K211 - 0x580C00D4, // 0002 LDCONST R3 K212 + 0xB8067400, // 0000 GETNGBL R1 K58 + 0x8C0403A2, // 0001 GETMET R1 R1 K162 + 0x580C00A3, // 0002 LDCONST R3 K163 0x84100000, // 0003 CLOSURE R4 P0 0x7C040600, // 0004 CALL R1 3 - 0xB8062C00, // 0005 GETNGBL R1 K22 - 0x8C0403D3, // 0006 GETMET R1 R1 K211 - 0x580C00D5, // 0007 LDCONST R3 K213 + 0xB8067400, // 0005 GETNGBL R1 K58 + 0x8C0403A2, // 0006 GETMET R1 R1 K162 + 0x580C00A4, // 0007 LDCONST R3 K164 0x84100001, // 0008 CLOSURE R4 P1 0x7C040600, // 0009 CALL R1 3 - 0xB8062C00, // 000A GETNGBL R1 K22 - 0x8C0403D3, // 000B GETMET R1 R1 K211 - 0x580C00D6, // 000C LDCONST R3 K214 + 0xB8067400, // 000A GETNGBL R1 K58 + 0x8C0403A2, // 000B GETMET R1 R1 K162 + 0x580C00A5, // 000C LDCONST R3 K165 0x84100002, // 000D CLOSURE R4 P2 0x7C040600, // 000E CALL R1 3 0xA0000000, // 000F CLOSE R0 @@ -3085,66 +2494,66 @@ be_local_closure(class_Matter_Device_save_param, /* name */ be_str_weak(save_param), &be_const_str_solidified, ( &(const binstruction[83]) { /* code */ - 0xA406AA00, // 0000 IMPORT R1 K85 - 0x8C0801D7, // 0001 GETMET R2 R0 K215 + 0xA4066400, // 0000 IMPORT R1 K50 + 0x8C0801A6, // 0001 GETMET R2 R0 K166 0x7C080200, // 0002 CALL R2 1 0x60080018, // 0003 GETGBL R2 G24 - 0x580C00D8, // 0004 LDCONST R3 K216 - 0x881001B3, // 0005 GETMBR R4 R0 K179 - 0x881401B5, // 0006 GETMBR R5 R0 K181 - 0x88180122, // 0007 GETMBR R6 R0 K34 + 0x580C00A7, // 0004 LDCONST R3 K167 + 0x88100191, // 0005 GETMBR R4 R0 K145 + 0x88140193, // 0006 GETMBR R5 R0 K147 + 0x88180160, // 0007 GETMBR R6 R0 K96 0x781A0001, // 0008 JMPF R6 #000B - 0x581800D9, // 0009 LDCONST R6 K217 + 0x581800A8, // 0009 LDCONST R6 K168 0x70020000, // 000A JMP #000C - 0x581800DA, // 000B LDCONST R6 K218 - 0x881C0123, // 000C GETMBR R7 R0 K35 + 0x581800A9, // 000B LDCONST R6 K169 + 0x881C0161, // 000C GETMBR R7 R0 K97 0x781E0001, // 000D JMPF R7 #0010 - 0x581C00D9, // 000E LDCONST R7 K217 + 0x581C00A8, // 000E LDCONST R7 K168 0x70020000, // 000F JMP #0011 - 0x581C00DA, // 0010 LDCONST R7 K218 - 0x88200120, // 0011 GETMBR R8 R0 K32 + 0x581C00A9, // 0010 LDCONST R7 K169 + 0x88200147, // 0011 GETMBR R8 R0 K71 0x7C080C00, // 0012 CALL R2 6 - 0x880C01B9, // 0013 GETMBR R3 R0 K185 + 0x880C0197, // 0013 GETMBR R3 R0 K151 0x780E0000, // 0014 JMPF R3 #0016 - 0x000805DB, // 0015 ADD R2 R2 K219 - 0x880C010B, // 0016 GETMBR R3 R0 K11 + 0x000805AA, // 0015 ADD R2 R2 K170 + 0x880C0107, // 0016 GETMBR R3 R0 K7 0x780E000E, // 0017 JMPF R3 #0027 - 0x000805DC, // 0018 ADD R2 R2 K220 - 0x8C0C03DD, // 0019 GETMET R3 R1 K221 - 0x88140156, // 001A GETMBR R5 R0 K86 + 0x000805AB, // 0018 ADD R2 R2 K171 + 0x8C0C03AC, // 0019 GETMET R3 R1 K172 + 0x88140135, // 001A GETMBR R5 R0 K53 0x7C0C0400, // 001B CALL R3 2 0x00080403, // 001C ADD R2 R2 R3 0x600C000C, // 001D GETGBL R3 G12 - 0x8810011F, // 001E GETMBR R4 R0 K31 + 0x88100115, // 001E GETMBR R4 R0 K21 0x7C0C0200, // 001F CALL R3 1 - 0x240C070A, // 0020 GT R3 R3 K10 + 0x240C0706, // 0020 GT R3 R3 K6 0x780E0004, // 0021 JMPF R3 #0027 - 0x000805DE, // 0022 ADD R2 R2 K222 - 0x8C0C03DD, // 0023 GETMET R3 R1 K221 - 0x8814011F, // 0024 GETMBR R5 R0 K31 + 0x000805AD, // 0022 ADD R2 R2 K173 + 0x8C0C03AC, // 0023 GETMET R3 R1 K172 + 0x88140115, // 0024 GETMBR R5 R0 K21 0x7C0C0400, // 0025 CALL R3 2 0x00080403, // 0026 ADD R2 R2 R3 - 0x000805DF, // 0027 ADD R2 R2 K223 + 0x000805AE, // 0027 ADD R2 R2 K174 0xA8020017, // 0028 EXBLK 0 #0041 0x600C0011, // 0029 GETGBL R3 G17 - 0x881001B1, // 002A GETMBR R4 R0 K177 - 0x581400E0, // 002B LDCONST R5 K224 + 0x8810018F, // 002A GETMBR R4 R0 K143 + 0x581400AF, // 002B LDCONST R5 K175 0x7C0C0400, // 002C CALL R3 2 - 0x8C1007E1, // 002D GETMET R4 R3 K225 + 0x8C1007B0, // 002D GETMET R4 R3 K176 0x5C180400, // 002E MOVE R6 R2 0x7C100400, // 002F CALL R4 2 - 0x8C10078A, // 0030 GETMET R4 R3 K138 + 0x8C10077B, // 0030 GETMET R4 R3 K123 0x7C100200, // 0031 CALL R4 1 - 0xB8127400, // 0032 GETNGBL R4 K58 + 0xB8122E00, // 0032 GETNGBL R4 K23 0x60140018, // 0033 GETGBL R5 G24 - 0x581800E2, // 0034 LDCONST R6 K226 - 0x881C010B, // 0035 GETMBR R7 R0 K11 + 0x581800B1, // 0034 LDCONST R6 K177 + 0x881C0107, // 0035 GETMBR R7 R0 K7 0x781E0001, // 0036 JMPF R7 #0039 - 0x581C00E3, // 0037 LDCONST R7 K227 + 0x581C00B2, // 0037 LDCONST R7 K178 0x70020000, // 0038 JMP #003A - 0x581C0010, // 0039 LDCONST R7 K16 + 0x581C000D, // 0039 LDCONST R7 K13 0x7C140400, // 003A CALL R5 2 - 0x58180021, // 003B LDCONST R6 K33 + 0x5818001D, // 003B LDCONST R6 K29 0x7C100400, // 003C CALL R4 2 0xA8040001, // 003D EXBLK 1 1 0x80040400, // 003E RET 1 R2 @@ -3152,17 +2561,17 @@ be_local_closure(class_Matter_Device_save_param, /* name */ 0x70020010, // 0040 JMP #0052 0xAC0C0002, // 0041 CATCH R3 0 2 0x7002000D, // 0042 JMP #0051 - 0xB8167400, // 0043 GETNGBL R5 K58 + 0xB8162E00, // 0043 GETNGBL R5 K23 0x60180008, // 0044 GETGBL R6 G8 0x5C1C0600, // 0045 MOVE R7 R3 0x7C180200, // 0046 CALL R6 1 - 0x001BC806, // 0047 ADD R6 K228 R6 - 0x00180D7F, // 0048 ADD R6 R6 K127 + 0x001B6606, // 0047 ADD R6 K179 R6 + 0x00180D9E, // 0048 ADD R6 R6 K158 0x601C0008, // 0049 GETGBL R7 G8 0x5C200800, // 004A MOVE R8 R4 0x7C1C0200, // 004B CALL R7 1 0x00180C07, // 004C ADD R6 R6 R7 - 0x581C0021, // 004D LDCONST R7 K33 + 0x581C001D, // 004D LDCONST R7 K29 0x7C140400, // 004E CALL R5 2 0x80040400, // 004F RET 1 R2 0x70020000, // 0050 JMP #0052 @@ -3191,60 +2600,60 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ be_str_weak(bridge_remove_endpoint), &be_const_str_solidified, ( &(const binstruction[56]) { /* code */ - 0xA40AAA00, // 0000 IMPORT R2 K85 + 0xA40A6400, // 0000 IMPORT R2 K50 0x600C0008, // 0001 GETGBL R3 G8 0x5C100200, // 0002 MOVE R4 R1 0x7C0C0200, // 0003 CALL R3 1 0x4C100000, // 0004 LDNIL R4 0x4C140000, // 0005 LDNIL R5 - 0x88180156, // 0006 GETMBR R6 R0 K86 - 0x8C180D6C, // 0007 GETMET R6 R6 K108 + 0x88180135, // 0006 GETMBR R6 R0 K53 + 0x8C180D57, // 0007 GETMET R6 R6 K87 0x5C200600, // 0008 MOVE R8 R3 0x7C180400, // 0009 CALL R6 2 0x741A0004, // 000A JMPT R6 #0010 - 0xB81A7400, // 000B GETNGBL R6 K58 - 0x001FCA03, // 000C ADD R7 K229 R3 - 0x58200053, // 000D LDCONST R8 K83 + 0xB81A2E00, // 000B GETNGBL R6 K23 + 0x001F6803, // 000C ADD R7 K180 R3 + 0x58200030, // 000D LDCONST R8 K48 0x7C180400, // 000E CALL R6 2 0x80000C00, // 000F RET 0 - 0xB81A7400, // 0010 GETNGBL R6 K58 + 0xB81A2E00, // 0010 GETNGBL R6 K23 0x601C0018, // 0011 GETGBL R7 G24 - 0x582000E6, // 0012 LDCONST R8 K230 + 0x582000B5, // 0012 LDCONST R8 K181 0x5C240200, // 0013 MOVE R9 R1 0x7C1C0400, // 0014 CALL R7 2 - 0x58200021, // 0015 LDCONST R8 K33 + 0x5820001D, // 0015 LDCONST R8 K29 0x7C180400, // 0016 CALL R6 2 - 0x88180156, // 0017 GETMBR R6 R0 K86 - 0x8C180D83, // 0018 GETMET R6 R6 K131 + 0x88180135, // 0017 GETMBR R6 R0 K53 + 0x8C180D53, // 0018 GETMET R6 R6 K83 0x5C200600, // 0019 MOVE R8 R3 0x7C180400, // 001A CALL R6 2 0x50180200, // 001B LDBOOL R6 1 0 - 0x90021606, // 001C SETMBR R0 K11 R6 - 0x5818000A, // 001D LDCONST R6 K10 + 0x90020E06, // 001C SETMBR R0 K7 R6 + 0x58180006, // 001D LDCONST R6 K6 0x601C000C, // 001E GETGBL R7 G12 - 0x8820011E, // 001F GETMBR R8 R0 K30 + 0x88200112, // 001F GETMBR R8 R0 K18 0x7C1C0200, // 0020 CALL R7 1 0x141C0C07, // 0021 LT R7 R6 R7 0x781E000D, // 0022 JMPF R7 #0031 - 0x881C011E, // 0023 GETMBR R7 R0 K30 + 0x881C0112, // 0023 GETMBR R7 R0 K18 0x941C0E06, // 0024 GETIDX R7 R7 R6 - 0x8C1C0F61, // 0025 GETMET R7 R7 K97 + 0x8C1C0F41, // 0025 GETMET R7 R7 K65 0x7C1C0200, // 0026 CALL R7 1 0x1C1C0207, // 0027 EQ R7 R1 R7 0x781E0005, // 0028 JMPF R7 #002F - 0x881C011E, // 0029 GETMBR R7 R0 K30 - 0x8C1C0F83, // 002A GETMET R7 R7 K131 + 0x881C0112, // 0029 GETMBR R7 R0 K18 + 0x8C1C0F53, // 002A GETMET R7 R7 K83 0x5C240C00, // 002B MOVE R9 R6 0x7C1C0400, // 002C CALL R7 2 0x70020002, // 002D JMP #0031 0x70020000, // 002E JMP #0030 - 0x00180D38, // 002F ADD R6 R6 K56 + 0x00180D14, // 002F ADD R6 R6 K20 0x7001FFEC, // 0030 JMP #001E - 0x8C1C01E7, // 0031 GETMET R7 R0 K231 + 0x8C1C01B6, // 0031 GETMET R7 R0 K182 0x7C1C0200, // 0032 CALL R7 1 - 0x8C1C010C, // 0033 GETMET R7 R0 K12 + 0x8C1C0108, // 0033 GETMET R7 R0 K8 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C01AC, // 0035 GETMET R7 R0 K172 + 0x8C1C0188, // 0035 GETMET R7 R0 K136 0x7C1C0200, // 0036 CALL R7 1 0x80000000, // 0037 RET 0 }) @@ -3254,12 +2663,12 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ /******************************************************************** -** Solidified function: msg_received +** Solidified function: button_multi_pressed ********************************************************************/ -be_local_closure(class_Matter_Device_msg_received, /* name */ +be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 11, /* nstack */ + 3, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -3267,16 +2676,22 @@ be_local_closure(class_Matter_Device_msg_received, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(msg_received), + be_str_weak(button_multi_pressed), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100127, // 0000 GETMBR R4 R0 K39 - 0x8C1009E8, // 0001 GETMET R4 R4 K232 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 + ( &(const binstruction[13]) { /* code */ + 0x540E0007, // 0000 LDINT R3 8 + 0x3C0C0403, // 0001 SHR R3 R2 R3 + 0x541200FE, // 0002 LDINT R4 255 + 0x2C0C0604, // 0003 AND R3 R3 R4 + 0x541200FE, // 0004 LDINT R4 255 + 0x2C100404, // 0005 AND R4 R2 R4 + 0x8C14014B, // 0006 GETMET R5 R0 K75 + 0x001C0914, // 0007 ADD R7 R4 K20 + 0x5820001D, // 0008 LDCONST R8 K29 + 0x58240006, // 0009 LDCONST R9 K6 + 0x5C280600, // 000A MOVE R10 R3 + 0x7C140A00, // 000B CALL R5 5 + 0x80000000, // 000C RET 0 }) ) ); @@ -3300,29 +2715,29 @@ be_local_closure(class_Matter_Device_invoke_request, /* name */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x5810000A, // 0000 LDCONST R4 K10 - 0x88140748, // 0001 GETMBR R5 R3 K72 + 0x58100006, // 0000 LDCONST R4 K6 + 0x88140724, // 0001 GETMBR R5 R3 K36 0x6018000C, // 0002 GETGBL R6 G12 - 0x881C011E, // 0003 GETMBR R7 R0 K30 + 0x881C0112, // 0003 GETMBR R7 R0 K18 0x7C180200, // 0004 CALL R6 1 0x14180806, // 0005 LT R6 R4 R6 0x781A000C, // 0006 JMPF R6 #0014 - 0x8818011E, // 0007 GETMBR R6 R0 K30 + 0x88180112, // 0007 GETMBR R6 R0 K18 0x94180C04, // 0008 GETIDX R6 R6 R4 - 0x881C0D48, // 0009 GETMBR R7 R6 K72 + 0x881C0D24, // 0009 GETMBR R7 R6 K36 0x1C1C0E05, // 000A EQ R7 R7 R5 0x781E0005, // 000B JMPF R7 #0012 - 0x8C1C0DE9, // 000C GETMET R7 R6 K233 + 0x8C1C0DB7, // 000C GETMET R7 R6 K183 0x5C240200, // 000D MOVE R9 R1 0x5C280400, // 000E MOVE R10 R2 0x5C2C0600, // 000F MOVE R11 R3 0x7C1C0800, // 0010 CALL R7 4 0x80040E00, // 0011 RET 1 R7 - 0x00100938, // 0012 ADD R4 R4 K56 + 0x00100914, // 0012 ADD R4 R4 K20 0x7001FFED, // 0013 JMP #0002 - 0xB81A3000, // 0014 GETNGBL R6 K24 - 0x88180D4D, // 0015 GETMBR R6 R6 K77 - 0x900E9806, // 0016 SETMBR R3 K76 R6 + 0xB81A5200, // 0014 GETNGBL R6 K41 + 0x88180D2A, // 0015 GETMBR R6 R6 K42 + 0x900E5006, // 0016 SETMBR R3 K40 R6 0x80000000, // 0017 RET 0 }) ) @@ -3347,26 +2762,26 @@ be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ be_str_weak(read_sensors_scheduler), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x88040167, // 0000 GETMBR R1 R0 K103 + 0x88040148, // 0000 GETMBR R1 R0 K72 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 - 0x88040168, // 0005 GETMBR R1 R0 K104 - 0x1C04030A, // 0006 EQ R1 R1 K10 + 0x88040149, // 0005 GETMBR R1 R0 K73 + 0x1C040306, // 0006 EQ R1 R1 K6 0x74060004, // 0007 JMPT R1 #000D - 0xB8062C00, // 0008 GETNGBL R1 K22 - 0x8C0403EA, // 0009 GETMET R1 R1 K234 - 0x880C0168, // 000A GETMBR R3 R0 K104 + 0xB8067400, // 0008 GETNGBL R1 K58 + 0x8C0403B8, // 0009 GETMET R1 R1 K184 + 0x880C0149, // 000A GETMBR R3 R0 K73 0x7C040400, // 000B CALL R1 2 0x78060006, // 000C JMPF R1 #0014 - 0x8C0401EB, // 000D GETMET R1 R0 K235 + 0x8C0401B9, // 000D GETMET R1 R0 K185 0x7C040200, // 000E CALL R1 1 - 0xB8062C00, // 000F GETNGBL R1 K22 - 0x8C0403EC, // 0010 GETMET R1 R1 K236 - 0x880C0167, // 0011 GETMBR R3 R0 K103 + 0xB8067400, // 000F GETNGBL R1 K58 + 0x8C0403BA, // 0010 GETMET R1 R1 K186 + 0x880C0148, // 0011 GETMBR R3 R0 K72 0x7C040400, // 0012 CALL R1 2 - 0x9002D001, // 0013 SETMBR R0 K104 R1 + 0x90029201, // 0013 SETMBR R0 K73 R1 0x80000000, // 0014 RET 0 }) ) @@ -3375,11 +2790,76 @@ be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ /******************************************************************** -** Solidified function: MtrJoin +** Solidified function: register_http_remote ********************************************************************/ -be_local_closure(class_Matter_Device_MtrJoin, /* name */ +be_local_closure(class_Matter_Device_register_http_remote, /* name */ be_nested_proto( - 8, /* nstack */ + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Matter_Device, /* shared constants */ + be_str_weak(register_http_remote), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x880C0176, // 0000 GETMBR R3 R0 K118 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x600C0013, // 0004 GETGBL R3 G19 + 0x7C0C0000, // 0005 CALL R3 0 + 0x9002EC03, // 0006 SETMBR R0 K118 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x88100176, // 0008 GETMBR R4 R0 K118 + 0x8C100957, // 0009 GETMET R4 R4 K87 + 0x5C180200, // 000A MOVE R6 R1 + 0x7C100400, // 000B CALL R4 2 + 0x78120009, // 000C JMPF R4 #0017 + 0x88100176, // 000D GETMBR R4 R0 K118 + 0x940C0801, // 000E GETIDX R3 R4 R1 + 0x8C1407BB, // 000F GETMET R5 R3 K187 + 0x7C140200, // 0010 CALL R5 1 + 0x14140405, // 0011 LT R5 R2 R5 + 0x78160002, // 0012 JMPF R5 #0016 + 0x8C1407BC, // 0013 GETMET R5 R3 K188 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C140400, // 0015 CALL R5 2 + 0x70020011, // 0016 JMP #0029 + 0xB8125200, // 0017 GETNGBL R4 K41 + 0x8C1009BD, // 0018 GETMET R4 R4 K189 + 0x5C180000, // 0019 MOVE R6 R0 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x5C200400, // 001B MOVE R8 R2 + 0x7C100800, // 001C CALL R4 4 + 0x5C0C0800, // 001D MOVE R3 R4 + 0x88100115, // 001E GETMBR R4 R0 K21 + 0x8C100957, // 001F GETMET R4 R4 K87 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x78120003, // 0022 JMPF R4 #0027 + 0x8C1007BE, // 0023 GETMET R4 R3 K190 + 0x88180115, // 0024 GETMBR R6 R0 K21 + 0x94180C01, // 0025 GETIDX R6 R6 R1 + 0x7C100400, // 0026 CALL R4 2 + 0x88100176, // 0027 GETMBR R4 R0 K118 + 0x98100203, // 0028 SETIDX R4 R1 R3 + 0x80040600, // 0029 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: MtrUpdate +********************************************************************/ +be_local_closure(class_Matter_Device_MtrUpdate, /* name */ + be_nested_proto( + 18, /* nstack */ 5, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -3388,165 +2868,135 @@ be_local_closure(class_Matter_Device_MtrJoin, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(MtrJoin), + be_str_weak(MtrUpdate), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60140009, // 0000 GETGBL R5 G9 - 0x5C180600, // 0001 MOVE R6 R3 - 0x7C140200, // 0002 CALL R5 1 - 0x78160003, // 0003 JMPF R5 #0008 - 0x88180106, // 0004 GETMBR R6 R0 K6 - 0x8C180DED, // 0005 GETMET R6 R6 K237 - 0x7C180200, // 0006 CALL R6 1 - 0x70020001, // 0007 JMP #000A - 0x8C18010D, // 0008 GETMET R6 R0 K13 - 0x7C180200, // 0009 CALL R6 1 - 0xB81A2C00, // 000A GETNGBL R6 K22 - 0x8C180DB0, // 000B GETMET R6 R6 K176 - 0x7C180200, // 000C CALL R6 1 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoconf_sensors_list -********************************************************************/ -be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(autoconf_sensors_list), - &be_const_str_solidified, - ( &(const binstruction[119]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x8C100111, // 0003 GETMET R4 R0 K17 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020013, // 0007 EXBLK 0 #001C - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x94140204, // 000A GETIDX R5 R1 R4 - 0x6018000F, // 000B GETGBL R6 G15 - 0x5C1C0A00, // 000C MOVE R7 R5 - 0x60200013, // 000D GETGBL R8 G19 - 0x7C180400, // 000E CALL R6 2 - 0x781A000A, // 000F JMPF R6 #001B - 0x8C180B6C, // 0010 GETMET R6 R5 K108 - 0x582000EE, // 0011 LDCONST R8 K238 - 0x7C180400, // 0012 CALL R6 2 - 0x781A0006, // 0013 JMPF R6 #001B - 0x001809EF, // 0014 ADD R6 R4 K239 - 0x8C1C0562, // 0015 GETMET R7 R2 K98 - 0x60240013, // 0016 GETGBL R9 G19 - 0x7C240000, // 0017 CALL R9 0 - 0x982625F0, // 0018 SETIDX R9 K18 K240 - 0x9827E206, // 0019 SETIDX R9 K241 R6 - 0x7C1C0400, // 001A CALL R7 2 - 0x7001FFEB, // 001B JMP #0008 - 0x580C0014, // 001C LDCONST R3 K20 - 0xAC0C0200, // 001D CATCH R3 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x600C0010, // 001F GETGBL R3 G16 - 0x8C100111, // 0020 GETMET R4 R0 K17 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x7C0C0200, // 0023 CALL R3 1 - 0xA8020013, // 0024 EXBLK 0 #0039 - 0x5C100600, // 0025 MOVE R4 R3 - 0x7C100000, // 0026 CALL R4 0 - 0x94140204, // 0027 GETIDX R5 R1 R4 - 0x6018000F, // 0028 GETGBL R6 G15 - 0x5C1C0A00, // 0029 MOVE R7 R5 - 0x60200013, // 002A GETGBL R8 G19 - 0x7C180400, // 002B CALL R6 2 - 0x781A000A, // 002C JMPF R6 #0038 - 0x8C180B6C, // 002D GETMET R6 R5 K108 - 0x582000F2, // 002E LDCONST R8 K242 - 0x7C180400, // 002F CALL R6 2 - 0x781A0006, // 0030 JMPF R6 #0038 - 0x001809F3, // 0031 ADD R6 R4 K243 - 0x8C1C0562, // 0032 GETMET R7 R2 K98 - 0x60240013, // 0033 GETGBL R9 G19 - 0x7C240000, // 0034 CALL R9 0 - 0x982625F4, // 0035 SETIDX R9 K18 K244 - 0x9827E206, // 0036 SETIDX R9 K241 R6 - 0x7C1C0400, // 0037 CALL R7 2 - 0x7001FFEB, // 0038 JMP #0025 - 0x580C0014, // 0039 LDCONST R3 K20 - 0xAC0C0200, // 003A CATCH R3 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x600C0010, // 003C GETGBL R3 G16 - 0x8C100111, // 003D GETMET R4 R0 K17 - 0x5C180200, // 003E MOVE R6 R1 - 0x7C100400, // 003F CALL R4 2 - 0x7C0C0200, // 0040 CALL R3 1 - 0xA8020013, // 0041 EXBLK 0 #0056 - 0x5C100600, // 0042 MOVE R4 R3 - 0x7C100000, // 0043 CALL R4 0 - 0x94140204, // 0044 GETIDX R5 R1 R4 - 0x6018000F, // 0045 GETGBL R6 G15 - 0x5C1C0A00, // 0046 MOVE R7 R5 - 0x60200013, // 0047 GETGBL R8 G19 - 0x7C180400, // 0048 CALL R6 2 - 0x781A000A, // 0049 JMPF R6 #0055 - 0x8C180B6C, // 004A GETMET R6 R5 K108 - 0x582000F5, // 004B LDCONST R8 K245 - 0x7C180400, // 004C CALL R6 2 - 0x781A0006, // 004D JMPF R6 #0055 - 0x001809F6, // 004E ADD R6 R4 K246 - 0x8C1C0562, // 004F GETMET R7 R2 K98 - 0x60240013, // 0050 GETGBL R9 G19 - 0x7C240000, // 0051 CALL R9 0 - 0x982625F7, // 0052 SETIDX R9 K18 K247 - 0x9827E206, // 0053 SETIDX R9 K241 R6 - 0x7C1C0400, // 0054 CALL R7 2 - 0x7001FFEB, // 0055 JMP #0042 - 0x580C0014, // 0056 LDCONST R3 K20 - 0xAC0C0200, // 0057 CATCH R3 1 0 - 0xB0080000, // 0058 RAISE 2 R0 R0 - 0x600C0010, // 0059 GETGBL R3 G16 - 0x8C100111, // 005A GETMET R4 R0 K17 - 0x5C180200, // 005B MOVE R6 R1 - 0x7C100400, // 005C CALL R4 2 - 0x7C0C0200, // 005D CALL R3 1 - 0xA8020013, // 005E EXBLK 0 #0073 - 0x5C100600, // 005F MOVE R4 R3 - 0x7C100000, // 0060 CALL R4 0 - 0x94140204, // 0061 GETIDX R5 R1 R4 - 0x6018000F, // 0062 GETGBL R6 G15 - 0x5C1C0A00, // 0063 MOVE R7 R5 - 0x60200013, // 0064 GETGBL R8 G19 - 0x7C180400, // 0065 CALL R6 2 - 0x781A000A, // 0066 JMPF R6 #0072 - 0x8C180B6C, // 0067 GETMET R6 R5 K108 - 0x582000F8, // 0068 LDCONST R8 K248 - 0x7C180400, // 0069 CALL R6 2 - 0x781A0006, // 006A JMPF R6 #0072 - 0x001809F9, // 006B ADD R6 R4 K249 - 0x8C1C0562, // 006C GETMET R7 R2 K98 - 0x60240013, // 006D GETGBL R9 G19 - 0x7C240000, // 006E CALL R9 0 - 0x982625FA, // 006F SETIDX R9 K18 K250 - 0x9827E206, // 0070 SETIDX R9 K241 R6 - 0x7C1C0400, // 0071 CALL R7 2 - 0x7001FFEB, // 0072 JMP #005F - 0x580C0014, // 0073 LDCONST R3 K20 - 0xAC0C0200, // 0074 CATCH R3 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0x80040400, // 0076 RET 1 R2 + ( &(const binstruction[126]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140805, // 0001 EQ R5 R4 R5 + 0x78160004, // 0002 JMPF R5 #0008 + 0xB8167400, // 0003 GETNGBL R5 K58 + 0x8C140BBF, // 0004 GETMET R5 R5 K191 + 0x581C00C0, // 0005 LDCONST R7 K192 + 0x7C140400, // 0006 CALL R5 2 + 0x80040A00, // 0007 RET 1 R5 + 0xB8167400, // 0008 GETNGBL R5 K58 + 0x8C140BC1, // 0009 GETMET R5 R5 K193 + 0x5C1C0800, // 000A MOVE R7 R4 + 0x582000C2, // 000B LDCONST R8 K194 + 0x7C140600, // 000C CALL R5 3 + 0xB81A7400, // 000D GETNGBL R6 K58 + 0x8C180DC1, // 000E GETMET R6 R6 K193 + 0x5C200800, // 000F MOVE R8 R4 + 0x582400C3, // 0010 LDCONST R9 K195 + 0x7C180600, // 0011 CALL R6 3 + 0x74160000, // 0012 JMPT R5 #0014 + 0x781A0064, // 0013 JMPF R6 #0079 + 0x4C1C0000, // 0014 LDNIL R7 + 0x78160010, // 0015 JMPF R5 #0027 + 0x60200009, // 0016 GETGBL R8 G9 + 0x94240805, // 0017 GETIDX R9 R4 R5 + 0x7C200200, // 0018 CALL R8 1 + 0x18241106, // 0019 LE R9 R8 K6 + 0x78260004, // 001A JMPF R9 #0020 + 0xB8267400, // 001B GETNGBL R9 K58 + 0x8C2413BF, // 001C GETMET R9 R9 K191 + 0x582C00C4, // 001D LDCONST R11 K196 + 0x7C240400, // 001E CALL R9 2 + 0x80041200, // 001F RET 1 R9 + 0x8C240127, // 0020 GETMET R9 R0 K39 + 0x5C2C1000, // 0021 MOVE R11 R8 + 0x7C240400, // 0022 CALL R9 2 + 0x5C1C1200, // 0023 MOVE R7 R9 + 0x8C240953, // 0024 GETMET R9 R4 K83 + 0x5C2C0A00, // 0025 MOVE R11 R5 + 0x7C240400, // 0026 CALL R9 2 + 0x781A0009, // 0027 JMPF R6 #0032 + 0x4C200000, // 0028 LDNIL R8 + 0x1C200E08, // 0029 EQ R8 R7 R8 + 0x78220003, // 002A JMPF R8 #002F + 0x8C20018B, // 002B GETMET R8 R0 K139 + 0x94280806, // 002C GETIDX R10 R4 R6 + 0x7C200400, // 002D CALL R8 2 + 0x5C1C1000, // 002E MOVE R7 R8 + 0x8C200953, // 002F GETMET R8 R4 K83 + 0x5C280C00, // 0030 MOVE R10 R6 + 0x7C200400, // 0031 CALL R8 2 + 0x4C200000, // 0032 LDNIL R8 + 0x1C200E08, // 0033 EQ R8 R7 R8 + 0x78220004, // 0034 JMPF R8 #003A + 0xB8227400, // 0035 GETNGBL R8 K58 + 0x8C2011BF, // 0036 GETMET R8 R8 K191 + 0x582800C5, // 0037 LDCONST R10 K197 + 0x7C200400, // 0038 CALL R8 2 + 0x80041000, // 0039 RET 1 R8 + 0x88200FC6, // 003A GETMBR R8 R7 K198 + 0x74220004, // 003B JMPT R8 #0041 + 0xB8227400, // 003C GETNGBL R8 K58 + 0x8C2011BF, // 003D GETMET R8 R8 K191 + 0x582800C7, // 003E LDCONST R10 K199 + 0x7C200400, // 003F CALL R8 2 + 0x80041000, // 0040 RET 1 R8 + 0x8C200FC8, // 0041 GETMET R8 R7 K200 + 0x7C200200, // 0042 CALL R8 1 + 0x60240013, // 0043 GETGBL R9 G19 + 0x7C240000, // 0044 CALL R9 0 + 0x60280010, // 0045 GETGBL R10 G16 + 0x8C2C0946, // 0046 GETMET R11 R4 K70 + 0x7C2C0200, // 0047 CALL R11 1 + 0x7C280200, // 0048 CALL R10 1 + 0xA8020016, // 0049 EXBLK 0 #0061 + 0x5C2C1400, // 004A MOVE R11 R10 + 0x7C2C0000, // 004B CALL R11 0 + 0xB8327400, // 004C GETNGBL R12 K58 + 0x8C3019C9, // 004D GETMET R12 R12 K201 + 0x5C381000, // 004E MOVE R14 R8 + 0x5C3C1600, // 004F MOVE R15 R11 + 0x7C300600, // 0050 CALL R12 3 + 0x4C340000, // 0051 LDNIL R13 + 0x1C34180D, // 0052 EQ R13 R12 R13 + 0x78360008, // 0053 JMPF R13 #005D + 0xB8367400, // 0054 GETNGBL R13 K58 + 0x8C341BBF, // 0055 GETMET R13 R13 K191 + 0x603C0018, // 0056 GETGBL R15 G24 + 0x584000CA, // 0057 LDCONST R16 K202 + 0x5C441600, // 0058 MOVE R17 R11 + 0x7C3C0400, // 0059 CALL R15 2 + 0x7C340400, // 005A CALL R13 2 + 0xA8040001, // 005B EXBLK 1 1 + 0x80001A00, // 005C RET 0 + 0x9434100C, // 005D GETIDX R13 R8 R12 + 0x9438080B, // 005E GETIDX R14 R4 R11 + 0x98241A0E, // 005F SETIDX R9 R13 R14 + 0x7001FFE8, // 0060 JMP #004A + 0x58280011, // 0061 LDCONST R10 K17 + 0xAC280200, // 0062 CATCH R10 1 0 + 0xB0080000, // 0063 RAISE 2 R0 R0 + 0x8C280FCB, // 0064 GETMET R10 R7 K203 + 0x5C301200, // 0065 MOVE R12 R9 + 0x7C280400, // 0066 CALL R10 2 + 0x8C280FCC, // 0067 GETMET R10 R7 K204 + 0x7C280200, // 0068 CALL R10 1 + 0x782A000A, // 0069 JMPF R10 #0075 + 0x602C0018, // 006A GETGBL R11 G24 + 0x583000CD, // 006B LDCONST R12 K205 + 0x5C340200, // 006C MOVE R13 R1 + 0x5C381400, // 006D MOVE R14 R10 + 0x7C2C0600, // 006E CALL R11 3 + 0xB8327400, // 006F GETNGBL R12 K58 + 0x8C3019CE, // 0070 GETMET R12 R12 K206 + 0x5C381600, // 0071 MOVE R14 R11 + 0x7C300400, // 0072 CALL R12 2 + 0x80041800, // 0073 RET 1 R12 + 0x70020003, // 0074 JMP #0079 + 0xB82E7400, // 0075 GETNGBL R11 K58 + 0x8C2C178C, // 0076 GETMET R11 R11 K140 + 0x7C2C0200, // 0077 CALL R11 1 + 0x80041600, // 0078 RET 1 R11 + 0xB81E7400, // 0079 GETNGBL R7 K58 + 0x8C1C0FBF, // 007A GETMET R7 R7 K191 + 0x582400CF, // 007B LDCONST R9 K207 + 0x7C1C0400, // 007C CALL R7 2 + 0x80000000, // 007D RET 0 }) ) ); @@ -3570,24 +3020,24 @@ be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ be_str_weak(MtrInfo_one), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x8C08014B, // 0000 GETMET R2 R0 K75 + 0x8C080127, // 0000 GETMET R2 R0 K39 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x1C0C0403, // 0004 EQ R3 R2 R3 0x780E0000, // 0005 JMPF R3 #0007 0x80000600, // 0006 RET 0 - 0x8C0C05CF, // 0007 GETMET R3 R2 K207 + 0x8C0C05CC, // 0007 GETMET R3 R2 K204 0x7C0C0200, // 0008 CALL R3 1 0x780E0008, // 0009 JMPF R3 #0013 0x60100018, // 000A GETGBL R4 G24 - 0x581400FB, // 000B LDCONST R5 K251 + 0x581400D0, // 000B LDCONST R5 K208 0x5C180600, // 000C MOVE R6 R3 0x7C100400, // 000D CALL R4 2 - 0xB8162C00, // 000E GETNGBL R5 K22 - 0x8C140B80, // 000F GETMET R5 R5 K128 + 0xB8167400, // 000E GETNGBL R5 K58 + 0x8C140BD1, // 000F GETMET R5 R5 K209 0x5C1C0800, // 0010 MOVE R7 R4 - 0x58200010, // 0011 LDCONST R8 K16 + 0x5820000D, // 0011 LDCONST R8 K13 0x7C140600, // 0012 CALL R5 3 0x80000000, // 0013 RET 0 }) @@ -3597,11 +3047,11 @@ be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ /******************************************************************** -** Solidified function: button_handler +** Solidified function: MtrJoin ********************************************************************/ -be_local_closure(class_Matter_Device_button_handler, /* name */ +be_local_closure(class_Matter_Device_MtrJoin, /* name */ be_nested_proto( - 14, /* nstack */ + 8, /* nstack */ 5, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -3610,64 +3060,24 @@ be_local_closure(class_Matter_Device_button_handler, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(button_handler), + be_str_weak(MtrJoin), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x5814000A, // 0000 LDCONST R5 K10 - 0xA41B0A00, // 0001 IMPORT R6 K133 - 0x601C000C, // 0002 GETGBL R7 G12 - 0x8820011E, // 0003 GETMBR R8 R0 K30 - 0x7C1C0200, // 0004 CALL R7 1 - 0x141C0A07, // 0005 LT R7 R5 R7 - 0x781E0010, // 0006 JMPF R7 #0018 - 0x881C011E, // 0007 GETMBR R7 R0 K30 - 0x941C0E05, // 0008 GETIDX R7 R7 R5 - 0x8C200D6C, // 0009 GETMET R8 R6 K108 - 0x5C280E00, // 000A MOVE R10 R7 - 0x582C006A, // 000B LDCONST R11 K106 - 0x7C200600, // 000C CALL R8 3 - 0x78220007, // 000D JMPF R8 #0016 - 0x8820011E, // 000E GETMBR R8 R0 K30 - 0x94201005, // 000F GETIDX R8 R8 R5 - 0x8C20116A, // 0010 GETMET R8 R8 K106 - 0x5C280200, // 0011 MOVE R10 R1 - 0x5C2C0400, // 0012 MOVE R11 R2 - 0x5C300600, // 0013 MOVE R12 R3 - 0x5C340800, // 0014 MOVE R13 R4 - 0x7C200A00, // 0015 CALL R8 5 - 0x00140B38, // 0016 ADD R5 R5 K56 - 0x7001FFE9, // 0017 JMP #0002 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_50ms -********************************************************************/ -be_local_closure(class_Matter_Device_every_50ms, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Matter_Device, /* shared constants */ - be_str_weak(every_50ms), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x8804011D, // 0000 GETMBR R1 R0 K29 - 0x00040338, // 0001 ADD R1 R1 K56 - 0x90023A01, // 0002 SETMBR R0 K29 R1 - 0x88040127, // 0003 GETMBR R1 R0 K39 - 0x8C0403FC, // 0004 GETMET R1 R1 K252 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 + ( &(const binstruction[15]) { /* code */ + 0x60140009, // 0000 GETGBL R5 G9 + 0x5C180600, // 0001 MOVE R6 R3 + 0x7C140200, // 0002 CALL R5 1 + 0x78160003, // 0003 JMPF R5 #0008 + 0x88180109, // 0004 GETMBR R6 R0 K9 + 0x8C180DD2, // 0005 GETMET R6 R6 K210 + 0x7C180200, // 0006 CALL R6 1 + 0x70020002, // 0007 JMP #000B + 0x88180109, // 0008 GETMBR R6 R0 K9 + 0x8C180D0A, // 0009 GETMET R6 R6 K10 + 0x7C180200, // 000A CALL R6 1 + 0xB81A7400, // 000B GETNGBL R6 K58 + 0x8C180D8C, // 000C GETMET R6 R6 K140 + 0x7C180200, // 000D CALL R6 1 + 0x80000000, // 000E RET 0 }) ) ); @@ -3691,14 +3101,14 @@ be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ be_str_weak(get_plugin_class_arg), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8808017A, // 0000 GETMBR R2 R0 K122 - 0x8C080539, // 0001 GETMET R2 R2 K57 + 0x88080151, // 0000 GETMBR R2 R0 K81 + 0x8C080516, // 0001 GETMET R2 R2 K22 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x780A0001, // 0004 JMPF R2 #0007 - 0x880C05FD, // 0005 GETMBR R3 R2 K253 + 0x880C05D3, // 0005 GETMBR R3 R2 K211 0x70020000, // 0006 JMP #0008 - 0x580C0010, // 0007 LDCONST R3 K16 + 0x580C000D, // 0007 LDCONST R3 K13 0x80040600, // 0008 RET 1 R3 }) ) @@ -3725,21 +3135,21 @@ be_local_closure(class_Matter_Device_update_remotes_info, /* name */ ( &(const binstruction[33]) { /* code */ 0x60040013, // 0000 GETGBL R1 G19 0x7C040000, // 0001 CALL R1 0 - 0x8808016B, // 0002 GETMBR R2 R0 K107 + 0x88080176, // 0002 GETMBR R2 R0 K118 0x4C0C0000, // 0003 LDNIL R3 0x20080403, // 0004 NE R2 R2 R3 0x780A0018, // 0005 JMPF R2 #001F 0x60080010, // 0006 GETGBL R2 G16 - 0x880C016B, // 0007 GETMBR R3 R0 K107 - 0x8C0C0766, // 0008 GETMET R3 R3 K102 + 0x880C0176, // 0007 GETMBR R3 R0 K118 + 0x8C0C0746, // 0008 GETMET R3 R3 K70 0x7C0C0200, // 0009 CALL R3 1 0x7C080200, // 000A CALL R2 1 0xA802000F, // 000B EXBLK 0 #001C 0x5C0C0400, // 000C MOVE R3 R2 0x7C0C0000, // 000D CALL R3 0 - 0x8810016B, // 000E GETMBR R4 R0 K107 + 0x88100176, // 000E GETMBR R4 R0 K118 0x94100803, // 000F GETIDX R4 R4 R3 - 0x8C1009FE, // 0010 GETMET R4 R4 K254 + 0x8C1009D4, // 0010 GETMET R4 R4 K212 0x7C100200, // 0011 CALL R4 1 0x4C140000, // 0012 LDNIL R5 0x20140805, // 0013 NE R5 R4 R5 @@ -3747,14 +3157,14 @@ be_local_closure(class_Matter_Device_update_remotes_info, /* name */ 0x6014000C, // 0015 GETGBL R5 G12 0x5C180800, // 0016 MOVE R6 R4 0x7C140200, // 0017 CALL R5 1 - 0x24140B0A, // 0018 GT R5 R5 K10 + 0x24140B06, // 0018 GT R5 R5 K6 0x78160000, // 0019 JMPF R5 #001B 0x98040604, // 001A SETIDX R1 R3 R4 0x7001FFEF, // 001B JMP #000C - 0x58080014, // 001C LDCONST R2 K20 + 0x58080011, // 001C LDCONST R2 K17 0xAC080200, // 001D CATCH R2 1 0 0xB0080000, // 001E RAISE 2 R0 R0 - 0x90023E01, // 001F SETMBR R0 K31 R1 + 0x90022A01, // 001F SETMBR R0 K21 R1 0x80040200, // 0020 RET 1 R1 }) ) @@ -3779,7 +3189,7 @@ be_local_closure(class_Matter_Device_k2l, /* name */ be_str_weak(k2l), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0x5804000F, // 0000 LDCONST R1 K15 + 0x5804000C, // 0000 LDCONST R1 K12 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 0x4C0C0000, // 0003 LDNIL R3 @@ -3787,45 +3197,45 @@ be_local_closure(class_Matter_Device_k2l, /* name */ 0x780E0000, // 0005 JMPF R3 #0007 0x80040400, // 0006 RET 1 R2 0x600C0010, // 0007 GETGBL R3 G16 - 0x8C100166, // 0008 GETMET R4 R0 K102 + 0x8C100146, // 0008 GETMET R4 R0 K70 0x7C100200, // 0009 CALL R4 1 0x7C0C0200, // 000A CALL R3 1 0xA8020005, // 000B EXBLK 0 #0012 0x5C100600, // 000C MOVE R4 R3 0x7C100000, // 000D CALL R4 0 - 0x8C140562, // 000E GETMET R5 R2 K98 + 0x8C140542, // 000E GETMET R5 R2 K66 0x5C1C0800, // 000F MOVE R7 R4 0x7C140400, // 0010 CALL R5 2 0x7001FFF9, // 0011 JMP #000C - 0x580C0014, // 0012 LDCONST R3 K20 + 0x580C0011, // 0012 LDCONST R3 K17 0xAC0C0200, // 0013 CATCH R3 1 0 0xB0080000, // 0014 RAISE 2 R0 R0 0x600C0010, // 0015 GETGBL R3 G16 0x6010000C, // 0016 GETGBL R4 G12 0x5C140400, // 0017 MOVE R5 R2 0x7C100200, // 0018 CALL R4 1 - 0x04100938, // 0019 SUB R4 R4 K56 - 0x40127004, // 001A CONNECT R4 K56 R4 + 0x04100914, // 0019 SUB R4 R4 K20 + 0x40122804, // 001A CONNECT R4 K20 R4 0x7C0C0200, // 001B CALL R3 1 0xA8020010, // 001C EXBLK 0 #002E 0x5C100600, // 001D MOVE R4 R3 0x7C100000, // 001E CALL R4 0 0x94140404, // 001F GETIDX R5 R2 R4 0x5C180800, // 0020 MOVE R6 R4 - 0x241C0D0A, // 0021 GT R7 R6 K10 + 0x241C0D06, // 0021 GT R7 R6 K6 0x781E0008, // 0022 JMPF R7 #002C - 0x041C0D38, // 0023 SUB R7 R6 K56 + 0x041C0D14, // 0023 SUB R7 R6 K20 0x941C0407, // 0024 GETIDX R7 R2 R7 0x241C0E05, // 0025 GT R7 R7 R5 0x781E0004, // 0026 JMPF R7 #002C - 0x041C0D38, // 0027 SUB R7 R6 K56 + 0x041C0D14, // 0027 SUB R7 R6 K20 0x941C0407, // 0028 GETIDX R7 R2 R7 0x98080C07, // 0029 SETIDX R2 R6 R7 - 0x04180D38, // 002A SUB R6 R6 K56 + 0x04180D14, // 002A SUB R6 R6 K20 0x7001FFF4, // 002B JMP #0021 0x98080C05, // 002C SETIDX R2 R6 R5 0x7001FFEE, // 002D JMP #001D - 0x580C0014, // 002E LDCONST R3 K20 + 0x580C0011, // 002E LDCONST R3 K17 0xAC0C0200, // 002F CATCH R3 1 0 0xB0080000, // 0030 RAISE 2 R0 R0 0x80040400, // 0031 RET 1 R2 @@ -3839,50 +3249,47 @@ be_local_closure(class_Matter_Device_k2l, /* name */ ** Solidified class: Matter_Device ********************************************************************/ be_local_class(Matter_Device, - 22, + 23, NULL, be_nested_map(79, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(received_ack, -1), be_const_closure(class_Matter_Device_received_ack_closure) }, - { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, + { be_const_key_weak(add_read_sensors_schedule, -1), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, { be_const_key_weak(plugins, -1), be_const_var(1) }, - { be_const_key_weak(msg_send, -1), be_const_closure(class_Matter_Device_msg_send_closure) }, - { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) }, + { be_const_key_weak(debug, -1), be_const_var(20) }, + { be_const_key_weak(autoconf, -1), be_const_var(9) }, { be_const_key_weak(message_handler, -1), be_const_var(7) }, { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) }, { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) }, - { be_const_key_weak(probe_sensor_time, 1), be_const_var(20) }, - { be_const_key_weak(conf_to_log, 50), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, - { be_const_key_weak(ui, -1), be_const_var(10) }, - { be_const_key_weak(root_passcode, -1), be_const_var(15) }, - { be_const_key_weak(every_50ms, 22), be_const_closure(class_Matter_Device_every_50ms_closure) }, - { be_const_key_weak(profiler, -1), be_const_var(6) }, - { be_const_key_weak(disable_bridge_mode, -1), be_const_var(17) }, + { be_const_key_weak(probe_sensor_time, 63), be_const_var(21) }, + { be_const_key_weak(conf_to_log, 53), be_const_static_closure(class_Matter_Device_conf_to_log_closure) }, + { be_const_key_weak(EP, 72), be_const_int(2) }, + { be_const_key_weak(ui, -1), be_const_var(11) }, + { be_const_key_weak(root_passcode, -1), be_const_var(16) }, + { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(UDP_PORT, 40), be_const_int(5540) }, + { be_const_key_weak(disable_bridge_mode, -1), be_const_var(18) }, { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) }, { be_const_key_weak(resolve_attribute_read_solo, 66), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) }, { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) }, { be_const_key_weak(autoconf_device, 69), be_const_closure(class_Matter_Device_autoconf_device_closure) }, { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) }, { be_const_key_weak(get_active_endpoints, -1), be_const_closure(class_Matter_Device_get_active_endpoints_closure) }, - { be_const_key_weak(button_handler, 37), be_const_closure(class_Matter_Device_button_handler_closure) }, - { be_const_key_weak(debug, 3), be_const_var(19) }, - { be_const_key_weak(stop, 43), be_const_closure(class_Matter_Device_stop_closure) }, + { be_const_key_weak(profiler, -1), be_const_var(6) }, + { be_const_key_weak(msg_send, 3), be_const_closure(class_Matter_Device_msg_send_closure) }, + { be_const_key_weak(stop, 31), be_const_closure(class_Matter_Device_stop_closure) }, { be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) }, - { be_const_key_weak(add_read_sensors_schedule, 49), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) }, + { be_const_key_weak(msg_received, 50), be_const_closure(class_Matter_Device_msg_received_closure) }, { be_const_key_weak(button_pressed, -1), be_const_closure(class_Matter_Device_button_pressed_closure) }, - { be_const_key_weak(register_http_remote, 53), be_const_closure(class_Matter_Device_register_http_remote_closure) }, - { be_const_key_weak(root_discriminator, -1), be_const_var(14) }, - { be_const_key_weak(start, 4), be_const_closure(class_Matter_Device_start_closure) }, + { be_const_key_weak(FILENAME, 44), be_nested_str_weak(_matter_device_X2Ejson) }, + { be_const_key_weak(root_discriminator, -1), be_const_var(15) }, + { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) }, + { be_const_key_weak(MtrJoin, 46), be_const_closure(class_Matter_Device_MtrJoin_closure) }, { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) }, - { be_const_key_weak(autoconf_sensors_list, 40), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) }, { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) }, { be_const_key_weak(plugins_config, -1), be_const_var(3) }, - { be_const_key_weak(http_remotes, 11), be_const_var(13) }, - { be_const_key_weak(get_plugin_remote_info, 58), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, - { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, - { be_const_key_weak(tick, 46), be_const_var(11) }, - { be_const_key_weak(clean_remotes, 72), be_const_closure(class_Matter_Device_clean_remotes_closure) }, + { be_const_key_weak(http_remotes, 11), be_const_var(14) }, + { be_const_key_weak(get_plugin_remote_info, 13), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) }, { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(53, ( (struct bmapnode*) &(const bmapnode[]) { @@ -3940,40 +3347,43 @@ be_local_class(Matter_Device, { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) }, { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) }, })) ) } )) }, - { be_const_key_weak(udp_server, -1), be_const_var(5) }, + { be_const_key_weak(tick, 49), be_const_var(12) }, + { be_const_key_weak(check_config_ep, 41), be_const_closure(class_Matter_Device_check_config_ep_closure) }, + { be_const_key_weak(MtrUpdate, 58), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, + { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) }, { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) }, - { be_const_key_weak(MtrJoin, -1), be_const_closure(class_Matter_Device_MtrJoin_closure) }, - { be_const_key_weak(button_multi_pressed, -1), be_const_closure(class_Matter_Device_button_multi_pressed_closure) }, + { be_const_key_weak(udp_server, -1), be_const_var(5) }, + { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) }, { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) }, - { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(21) }, + { be_const_key_weak(reset_param, -1), be_const_closure(class_Matter_Device_reset_param_closure) }, { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Device_every_250ms_closure) }, { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) }, - { be_const_key_weak(msg_received, 44), be_const_closure(class_Matter_Device_msg_received_closure) }, - { be_const_key_weak(events, -1), be_const_var(12) }, - { be_const_key_weak(VENDOR_ID, 63), be_const_int(65521) }, + { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(22) }, + { be_const_key_weak(button_multi_pressed, 1), be_const_closure(class_Matter_Device_button_multi_pressed_closure) }, + { be_const_key_weak(VENDOR_ID, 64), be_const_int(65521) }, { be_const_key_weak(MtrInfo, -1), be_const_closure(class_Matter_Device_MtrInfo_closure) }, - { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(ipv4only, -1), be_const_var(16) }, + { be_const_key_weak(events, -1), be_const_var(13) }, + { be_const_key_weak(ipv4only, -1), be_const_var(17) }, { be_const_key_weak(commissioning, -1), be_const_var(8) }, { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) }, - { be_const_key_weak(sessions, 55), be_const_var(9) }, - { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) }, + { be_const_key_weak(sessions, 55), be_const_var(10) }, + { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) }, { be_const_key_weak(register_commands, -1), be_const_closure(class_Matter_Device_register_commands_closure) }, - { be_const_key_weak(next_ep, -1), be_const_var(18) }, + { be_const_key_weak(next_ep, -1), be_const_var(19) }, { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) }, { be_const_key_weak(bridge_remove_endpoint, -1), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) }, - { be_const_key_weak(bridge_add_endpoint, 64), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, - { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) }, + { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) }, + { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) }, { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) }, { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) }, - { be_const_key_weak(find_plugin_by_friendly_name, 41), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, + { be_const_key_weak(find_plugin_by_friendly_name, 43), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) }, { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) }, { be_const_key_weak(plugins_persist, -1), be_const_var(2) }, - { be_const_key_weak(sort_distinct, 32), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, - { be_const_key_weak(started, 31), be_const_var(0) }, - { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) }, - { be_const_key_weak(invoke_request, 14), be_const_closure(class_Matter_Device_invoke_request_closure) }, - { be_const_key_weak(MtrUpdate, 13), be_const_closure(class_Matter_Device_MtrUpdate_closure) }, + { be_const_key_weak(sort_distinct, 37), be_const_static_closure(class_Matter_Device_sort_distinct_closure) }, + { be_const_key_weak(started, 32), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) }, + { be_const_key_weak(invoke_request, 22), be_const_closure(class_Matter_Device_invoke_request_closure) }, + { be_const_key_weak(button_handler, 14), be_const_closure(class_Matter_Device_button_handler_closure) }, { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) }, { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) }, From 4101ad7303fc1844849a1f763c4efe657e1567c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-David=20F=C3=B6rster?= <47479352+Grumium@users.noreply.github.com> Date: Tue, 30 Jul 2024 22:23:53 +0200 Subject: [PATCH 215/252] xsns_14_sht3x.ino - data types adjusted, code size reduced (#21868) * code size, data type improvements * Change temp calculation to int --- tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino index fca3a5a78..7aca6e288 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino @@ -106,16 +106,15 @@ bool Sht3xRead(uint32_t sensor) { if ((Sht3xComputeCrc(&data[0], 2) != data[2]) || (Sht3xComputeCrc(&data[3], 2) != data[5])) { return false; } - float t; - float h; - t = ((((data[0] << 8) | data[1]) * 175) / 65535.0) - 45.0; + int32_t t_100 = ((((data[0] << 8) | data[1]) * 17500) >> 16) - 4500; + int32_t h_100; if (type == SHT3X_TYPE_SHT4X) { - h = ((((data[3] << 8) | data[4]) * 125) / 65535.0) - 6.0; + h_100 = ((((data[3] << 8) | data[4]) * 12500) >> 16) - 600; } else { - h = (((data[3] << 8) | data[4]) * 100) / 65535.0; + h_100 = ((((data[3] << 8) | data[4]) * 10000) >> 16); } - sht3x_sensors[sensor].temp = ConvertTemp(t); - sht3x_sensors[sensor].humi = ConvertHumidity(h); + sht3x_sensors[sensor].temp = ConvertTemp(t_100/100.0f); + sht3x_sensors[sensor].humi = ConvertHumidity(h_100/100.0f); if (isnan(sht3x_sensors[sensor].temp) || isnan(sht3x_sensors[sensor].humi)) { return false; } sht3x_sensors[sensor].valid = SENSOR_MAX_MISS; return true; From ba596993a03a0177f312f6593129a5e1ecb3376a Mon Sep 17 00:00:00 2001 From: gemu Date: Tue, 30 Jul 2024 22:24:31 +0200 Subject: [PATCH 216/252] fix sd mmc free space display (#21869) * fix sd mmc free space display * Update xdrv_50_filesystem.ino --- .../xdrv_50_filesystem.ino | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino b/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino index c7eb25f68..5c27384fe 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino @@ -64,6 +64,9 @@ ftp start stop ftp server: 0 = OFF, 1 = SDC, 2 = FlashFile #define UFS_TFAT 2 #define UFS_TLFS 3 +#define UFS_SDC 0 +#define UFS_SDMMC 1 + /* // In tasmota.ino #ifdef ESP8266 @@ -97,6 +100,8 @@ uint8_t ufs_dir; // 0 = None, 1 = SD, 2 = ffat, 3 = littlefs uint8_t ufs_type; uint8_t ffs_type; +// sd type 0 = SD spi interface, 1 = MMC interface +uint8_t sd_type; struct { char run_file[48]; @@ -206,6 +211,7 @@ void UfsCheckSDCardInit(void) { #endif // ESP32 ufs_type = UFS_TSDC; + sd_type = UFS_SDC; dfsp = ufsp; if (ffsp) {ufs_dir = 1;} // make sd card the global filesystem @@ -239,6 +245,7 @@ void UfsCheckSDCardInit(void) { ufsp = &SD_MMC; ufs_type = UFS_TSDC; + sd_type = UFS_SDMMC; dfsp = ufsp; if (ffsp) {ufs_dir = 1;} // make sd card the global filesystem @@ -274,11 +281,29 @@ uint32_t UfsInfo(uint32_t sel, uint32_t type) { } #endif // ESP8266 #ifdef ESP32 +#ifdef SOC_SDMMC_HOST_SUPPORTED + if (sd_type == UFS_SDC) { + if (sel == 0) { + result = SD.totalBytes(); + } else { + result = (SD.totalBytes() - SD.usedBytes()); + } + } else if (sd_type == UFS_SDMMC) { + if (sel == 0) { + result = SD_MMC.totalBytes(); + } else { + result = (SD_MMC.totalBytes() - SD_MMC.usedBytes()); + } + } else { + result = 0; + } +#else if (sel == 0) { result = SD.totalBytes(); } else { result = (SD.totalBytes() - SD.usedBytes()); } +#endif // SOC_SDMMC_HOST_SUPPORTED #endif // ESP32 #endif // USE_SDCARD break; From 67fcb71c6dc3896b8abf508b753b5ce6aa19dee4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:03:06 +0200 Subject: [PATCH 217/252] Update changelogs --- CHANGELOG.md | 1 + RELEASENOTES.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a70cadbf0..469c81eeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ All notable changes to this project will be documented in this file. - Berry `light.get` for separate RGB/CT (#21818) - Berry `bytes` setters and getters with negative offsets (#21835) - Berry `file.write()` raises an exception on failure (ex: disk full) (#21849) +- Filesystem SD MMC free space display (#21869) ### Removed - Berry internal: remove class from closure to simplify code (#21839) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7c4115293..574b66a1e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -180,11 +180,13 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) - Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633) - Matter refactor reading of multiple attributes to reduce memory pressure [#21675](https://github.com/arendst/Tasmota/issues/21675) +- Matter improve encoding of attributes to reduce flash size [#21864](https://github.com/arendst/Tasmota/issues/21864) ### Fixed - On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 [#21726](https://github.com/arendst/Tasmota/issues/21726) - Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663) - Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660) +- Filesystem SD MMC free space display [#21869](https://github.com/arendst/Tasmota/issues/21869) - ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496) - ESP32 I2S fixes [#21770](https://github.com/arendst/Tasmota/issues/21770) - ESP32 Resistive Touch xpt for 2 spi busses [#21814](https://github.com/arendst/Tasmota/issues/21814) From a3ed99e54929fba6427242d8dc387520c404ca2f Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 31 Jul 2024 14:27:34 +0200 Subject: [PATCH 218/252] Change Energy `power_history` arrays to prepare for Berry mapping (#21876) --- .../xdrv_03_esp32_energy.ino | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino index 54bad4a41..a44d804b6 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino @@ -180,7 +180,7 @@ typedef struct { float daily_sum_import_balanced; // 123.123 kWh float daily_sum_export_balanced; // 123.123 kWh - uint16_t power_history[ENERGY_MAX_PHASES][3]; + uint16_t power_history[3][ENERGY_MAX_PHASES]; uint16_t mpl_hold_counter[ENERGY_MAX_PHASES]; uint16_t mpl_window_counter[ENERGY_MAX_PHASES]; @@ -741,15 +741,15 @@ void EnergyMarginCheck(void) { for (uint32_t phase = 0; phase < Energy->phase_count; phase++) { uint16_t active_power = (uint16_t)(Energy->active_power[phase]); -// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[phase][0], Energy->power_history[phase][1], Energy->power_history[phase][2]); +// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[0][phase], Energy->power_history[1][phase], Energy->power_history[2][phase]); if (Energy->Settings.power_delta[phase]) { - power_diff[phase] = active_power - Energy->power_history[phase][0]; + power_diff[phase] = active_power - Energy->power_history[0][phase]; uint16_t delta = abs(power_diff[phase]); bool threshold_met = false; if (delta > 0) { if (Energy->Settings.power_delta[phase] < 101) { // 1..100 = Percentage - uint16_t min_power = (Energy->power_history[phase][0] > active_power) ? active_power : Energy->power_history[phase][0]; + uint16_t min_power = (Energy->power_history[0][phase] > active_power) ? active_power : Energy->power_history[0][phase]; if (0 == min_power) { min_power++; } // Fix divide by 0 exception (#6741) delta = (delta * 100) / min_power; if (delta >= Energy->Settings.power_delta[phase]) { @@ -762,16 +762,16 @@ void EnergyMarginCheck(void) { } } if (threshold_met) { - Energy->power_history[phase][1] = active_power; // We only want one report so reset history - Energy->power_history[phase][2] = active_power; + Energy->power_history[1][phase] = active_power; // We only want one report so reset history + Energy->power_history[2][phase] = active_power; jsonflg = true; } else { power_diff[phase] = 0; } } - Energy->power_history[phase][0] = Energy->power_history[phase][1]; // Shift in history every second allowing power changes to settle for up to three seconds - Energy->power_history[phase][1] = Energy->power_history[phase][2]; - Energy->power_history[phase][2] = active_power; + Energy->power_history[0][phase] = Energy->power_history[1][phase]; // Shift in history every second allowing power changes to settle for up to three seconds + Energy->power_history[1][phase] = Energy->power_history[2][phase]; + Energy->power_history[2][phase] = active_power; } if (jsonflg) { float power_diff_f[Energy->phase_count]; From 836ce9ef9ba64677861a173cc7687be380acef6b Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 1 Aug 2024 10:29:49 +0200 Subject: [PATCH 219/252] Berry add new type "addr" to ctypes mapping (#21883) --- CHANGELOG.md | 3 +- .../berry_tasmota/include/be_ctypes.h | 15 +--- lib/libesp32/berry_tasmota/src/be_ctypes.c | 74 ++++--------------- 3 files changed, 20 insertions(+), 72 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 469c81eeb..d50c983a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,8 @@ All notable changes to this project will be documented in this file. - NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics (#21850) - Analog GPIO ``ADC Input`` with ``AdcParam 1,,,,1`` provide direct light control - Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage -- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage +- Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage +- Berry add new type "addr" to ctypes mapping ### Breaking Changed diff --git a/lib/libesp32/berry_tasmota/include/be_ctypes.h b/lib/libesp32/berry_tasmota/include/be_ctypes.h index da97971bd..8b29110c4 100644 --- a/lib/libesp32/berry_tasmota/include/be_ctypes.h +++ b/lib/libesp32/berry_tasmota/include/be_ctypes.h @@ -33,6 +33,10 @@ enum { ctypes_ptr32 = 9, ctypes_ptr64 = -9, + // address (no acces to the value) + ctypes_addr = 15, + + // special ctypes_bf = 0, //bif-field }; @@ -52,17 +56,6 @@ typedef struct be_ctypes_structure_t { const be_ctypes_structure_item_t * items; } be_ctypes_structure_t; -typedef struct be_ctypes_class_t { - const char * name; - const be_ctypes_structure_t * definitions; -} be_ctypes_class_t; - -typedef struct be_ctypes_classes_t { - uint16_t size; - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_class_t * classes; -} be_ctypes_classes_t; - #ifdef __cplusplus extern "C" { #endif diff --git a/lib/libesp32/berry_tasmota/src/be_ctypes.c b/lib/libesp32/berry_tasmota/src/be_ctypes.c index 66b119ed2..acd4e3744 100644 --- a/lib/libesp32/berry_tasmota/src/be_ctypes.c +++ b/lib/libesp32/berry_tasmota/src/be_ctypes.c @@ -3,6 +3,7 @@ *******************************************************************/ #include "be_constobj.h" #include +#include "be_ctypes.h" extern __attribute__((noreturn)) void be_raisef(bvm *vm, const char *except, const char *msg, ...); @@ -34,65 +35,6 @@ int32_t bin_search_ctypes(const char * needle, const void * table, size_t elt_si } } -enum { - ctypes_i32 = 14, - ctypes_i24 = 13, - ctypes_i16 = 12, - ctypes_i8 = 11, - ctypes_u32 = 4, - ctypes_u24 = 3, - ctypes_u16 = 2, - ctypes_u8 = 1, - - // big endian - ctypes_be_i32 = -14, - ctypes_be_i24 = -13, - ctypes_be_i16 = -12, - ctypes_be_i8 = -11, - ctypes_be_u32 = -4, - ctypes_be_u16 = -2, - ctypes_be_u8 = -1, - - // floating point - ctypes_float = 5, - ctypes_double = 10, - - // pointer - ctypes_ptr32 = 9, - ctypes_ptr64 = -9, - - ctypes_bf = 0, //bif-field -}; - -typedef struct be_ctypes_structure_item_t { - const char * name; - uint16_t offset_bytes; - uint8_t offset_bits : 3; - uint8_t len_bits : 5; - int8_t type : 5; - uint8_t mapping : 3; -} be_ctypes_structure_item_t; - -typedef struct be_ctypes_structure_t { - uint16_t size_bytes; /* size in bytes */ - uint16_t size_elt; /* number of elements */ - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_structure_item_t * items; -} be_ctypes_structure_t; - -typedef struct be_ctypes_class_t { - const char * name; - const be_ctypes_structure_t * definitions; -} be_ctypes_class_t; - -typedef struct be_ctypes_classes_t { - uint16_t size; - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_class_t * classes; -} be_ctypes_classes_t; - -// const be_ctypes_class_t * g_ctypes_classes = NULL; - // // Constructor for ctypes structure // @@ -232,6 +174,15 @@ int be_ctypes_member(bvm *vm) { int32_t val = be_toint(vm, -1); be_pop(vm, 1); be_pushcomptr(vm, (void*) val); + } else if (ctypes_addr == member->type) { + be_getmember(vm, 1, "_buffer"); // self.get or self.geti + be_pushvalue(vm, 1); // push self + be_call(vm, 1); + be_pop(vm, 1); + uint8_t *addr = (uint8_t*) be_tocomptr(vm, -1); + be_pop(vm, 1); + addr += member->offset_bytes; + be_pushcomptr(vm, addr); } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian @@ -253,7 +204,7 @@ int be_ctypes_member(bvm *vm) { be_pop(vm, 3); // int result at top of stack } - // the int result is at top of the stack + // the int or comptr result is at top of the stack // check if we need an instance mapping if (member->mapping > 0 && definitions->instance_mapping) { const char * mapping_name = definitions->instance_mapping[member->mapping - 1]; @@ -362,6 +313,9 @@ int be_ctypes_setmember(bvm *vm) { be_call(vm, 4); be_pop(vm, 5); be_return_nil(vm); + } else if (ctypes_addr == member->type) { + be_raisef(vm, "attribute_error", "class '%s' cannot assign to attribute '%s'", + be_classname(vm, 1), be_tostring(vm, 2)); } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian From 74551c873fb901dca10ae622f9d1c43635a56d65 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:38:07 +0200 Subject: [PATCH 220/252] Berry add `file.savecode()` (#21884) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_bytecode.c | 11 ++++++++--- lib/libesp32/berry/src/be_bytecode.h | 1 + lib/libesp32/berry/src/be_filelib.c | 22 ++++++++++++++++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d50c983a6..e05a5b14a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. - Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage - Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage - Berry add new type "addr" to ctypes mapping +- Berry add `file.savecode()` ### Breaking Changed diff --git a/lib/libesp32/berry/src/be_bytecode.c b/lib/libesp32/berry/src/be_bytecode.c index a636567fa..79ed503bd 100644 --- a/lib/libesp32/berry/src/be_bytecode.c +++ b/lib/libesp32/berry/src/be_bytecode.c @@ -297,6 +297,13 @@ static void save_global_info(bvm *vm, void *fp) } } +void be_bytecode_save_to_fs(bvm *vm, void *fp, bproto *proto) +{ + save_header(fp); + save_global_info(vm, fp); + save_proto(vm, fp, proto); +} + void be_bytecode_save(bvm *vm, const char *filename, bproto *proto) { void *fp = be_fopen(filename, "wb"); @@ -304,9 +311,7 @@ void be_bytecode_save(bvm *vm, const char *filename, bproto *proto) bytecode_error(vm, be_pushfstring(vm, "can not open file '%s'.", filename)); } else { - save_header(fp); - save_global_info(vm, fp); - save_proto(vm, fp, proto); + be_bytecode_save_to_fs(vm, fp, proto); be_fclose(fp); } } diff --git a/lib/libesp32/berry/src/be_bytecode.h b/lib/libesp32/berry/src/be_bytecode.h index 61223952c..4e1d54a3b 100644 --- a/lib/libesp32/berry/src/be_bytecode.h +++ b/lib/libesp32/berry/src/be_bytecode.h @@ -11,6 +11,7 @@ #include "be_object.h" void be_bytecode_save(bvm *vm, const char *filename, bproto *proto); +void be_bytecode_save_to_fs(bvm *vm, void *fp, bproto *proto); bclosure* be_bytecode_load(bvm *vm, const char *filename); bclosure* be_bytecode_load_from_fs(bvm *vm, void *fp); bbool be_bytecode_check(const char *path); diff --git a/lib/libesp32/berry/src/be_filelib.c b/lib/libesp32/berry/src/be_filelib.c index 5bd38bad8..cfb882b11 100644 --- a/lib/libesp32/berry/src/be_filelib.c +++ b/lib/libesp32/berry/src/be_filelib.c @@ -9,6 +9,7 @@ #include "be_mem.h" #include "be_sys.h" #include "be_gc.h" +#include "be_bytecode.h" #include #define READLINE_STEP 100 @@ -181,6 +182,26 @@ static int i_close(bvm *vm) be_return_nil(vm); } +static int i_savecode(bvm *vm) +{ + int argc = be_top(vm); + if (argc >= 2 && be_isclosure(vm, 2)) { + be_getmember(vm, 1, ".p"); + if (be_iscomptr(vm, -1)) { + void *fh = be_tocomptr(vm, -1); + bvalue *v = be_indexof(vm, 2); + if (var_isclosure(v)) { + bclosure *cl = var_toobj(v); + bproto *pr = cl->proto; + be_bytecode_save_to_fs(vm, fh, pr); + } + } + } else { + be_raise(vm, "type_error", "closure expected"); + } + be_return_nil(vm); +} + #if !BE_USE_PRECOMPILED_OBJECT static int m_open(bvm *vm) #else @@ -201,6 +222,7 @@ int be_nfunc_open(bvm *vm) { "flush", i_flush }, { "close", i_close }, { "deinit", i_close }, + { "savecode", i_savecode }, { NULL, NULL } }; fname = argc >= 1 && be_isstring(vm, 1) ? be_tostring(vm, 1) : NULL; From 40ee4cc316c9f5980c9f4e563f84401fdb1d5cf1 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 1 Aug 2024 22:02:27 +0200 Subject: [PATCH 221/252] Berry add `solidify.nocompact()` and reduce size of Matter UI (#21885) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_object.h | 1 + lib/libesp32/berry/src/be_solidifylib.c | 99 +- .../berry_matter/src/embedded/Matter_UI.be | 4 + .../src/solidify/solidified_Matter_UI.h | 1928 ++++++++--------- 5 files changed, 937 insertions(+), 1096 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e05a5b14a..872c93e08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. - Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage - Berry add new type "addr" to ctypes mapping - Berry add `file.savecode()` +- Berry add `solidify.nocompact()` and reduce size of Matter UI ### Breaking Changed diff --git a/lib/libesp32/berry/src/be_object.h b/lib/libesp32/berry/src/be_object.h index 986f693d8..1c8d40572 100644 --- a/lib/libesp32/berry/src/be_object.h +++ b/lib/libesp32/berry/src/be_object.h @@ -43,6 +43,7 @@ #define BE_VA_METHOD (1 << 1) /* function is a method (this is only a hint) */ #define BE_VA_STATICMETHOD (1 << 2) /* the function is a static method and has the class as implicit '_class' variable */ #define BE_VA_SHARED_KTAB (1 << 3) /* the funciton has a shared consolidated ktab */ +#define BE_VA_NOCOMPACT (1 << 4) /* the funciton has a shared consolidated ktab */ #define array_count(a) (sizeof(a) / sizeof((a)[0])) #define bcommon_header \ diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c index a24837682..2afca6095 100644 --- a/lib/libesp32/berry/src/be_solidifylib.c +++ b/lib/libesp32/berry/src/be_solidifylib.c @@ -18,6 +18,7 @@ #include "be_sys.h" #include "be_mem.h" #include "be_byteslib.h" +#include "be_gc.h" #include #include #include @@ -313,10 +314,11 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cl, void* fout); /* solidify any inner class */ -static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bproto *pr, void* fout) +static void m_solidify_closure_inner_class(bvm *vm, bbool str_literal, const bclosure *clo, void* fout) { // parse any class in constants to output it first - if ((pr->nconst > 0) && (!(pr->varg & BE_VA_SHARED_KTAB))) { /* if shared ktab, this was done already earlier */ + bproto *pr = clo->proto; + if ((!gc_isconst(clo)) && (pr->nconst > 0) && (!(pr->varg & BE_VA_SHARED_KTAB)) && (!(pr->varg & BE_VA_NOCOMPACT))) { /* if shared ktab or nocompact, skip */ for (int k = 0; k < pr->nconst; k++) { if (var_type(&pr->ktab[k]) == BE_CLASS) { if ((k == 0) && (pr->varg & BE_VA_STATICMETHOD)) { @@ -430,7 +432,7 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, int indent = 2; - m_solidify_proto_inner_class(vm, str_literal, pr, fout); + m_solidify_closure_inner_class(vm, str_literal, clo, fout); logfmt("\n"); logfmt("/********************************************************************\n"); @@ -622,7 +624,7 @@ static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* bclosure *cl = var_toobj(&node->value); bproto *pr = cl->proto; - if (pr->varg & BE_VA_SHARED_KTAB) { continue; } + if ((gc_isconst(cl)) || (pr->varg & BE_VA_SHARED_KTAB) || (pr->varg & BE_VA_NOCOMPACT)) { continue; } // iterate on each bvalue in ktab for (int i = 0; i < pr->nconst; i++) { @@ -664,7 +666,7 @@ static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* bclosure *cl = var_toobj(&node->value); bproto *pr = cl->proto; - if (pr->varg & BE_VA_SHARED_KTAB) { continue; } + if ((gc_isconst(cl)) || (pr->varg & BE_VA_SHARED_KTAB) || (pr->varg & BE_VA_NOCOMPACT)) { continue; } uint8_t mapping_array[MAX_KTAB_SIZE]; // iterate in proto ktab to get the index in the global ktab @@ -689,7 +691,10 @@ static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* uint32_t ins = pr->code[pc]; bopcode op = IGET_OP(ins); - + /* handle all impacted opcodes */ + /* Possibilities: */ + /* "B" | "B and C" | "Bx" contain a constant code */ + /* special case for OP_RET where "B" may not contain anything */ switch (op) { case OP_ADD: case OP_SUB: case OP_MUL: case OP_DIV: case OP_MOD: case OP_LT: case OP_LE: case OP_EQ: @@ -739,25 +744,6 @@ static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* pr->code[pc] = ins; } break; - // case OP_GETGBL: case OP_SETGBL: - // logbuf("%s\tR%d\tG%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); - // break; - // case OP_MOVE: case OP_SETSUPER: case OP_NEG: case OP_FLIP: case OP_IMPORT: - // logbuf("%s\tR%d\t%c%d", opc2str(op), IGET_RA(ins), - // isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK); - // break; - // case OP_JMP: - // logbuf("%s\t\t#%.4X", opc2str(op), IGET_sBx(ins) + pc + 1); - // break; - // case OP_JMPT: case OP_JMPF: - // logbuf("%s\tR%d\t#%.4X", opc2str(op), IGET_RA(ins), IGET_sBx(ins) + pc + 1); - // break; - // case OP_LDINT: - // logbuf("%s\tR%d\t%d", opc2str(op), IGET_RA(ins), IGET_sBx(ins)); - // break; - // case OP_LDBOOL: - // logbuf("%s\tR%d\t%d\t%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins), IGET_RKC(ins)); - // break; case OP_RET: if (IGET_RA(ins)) { // Only B might contain 'K' constant @@ -771,39 +757,19 @@ static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* } pr->code[pc] = ins; break; - // case OP_GETUPV: case OP_SETUPV: - // logbuf("%s\tR%d\tU%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); - // break; - // case OP_LDCONST: - // logbuf("%s\tR%d\tK%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); - // break; - // case OP_CALL: - // logbuf("%s\tR%d\t%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins)); - // break; - // case OP_CLOSURE: - // logbuf("%s\tR%d\tP%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); - // break; - // case OP_CLASS: - // logbuf("%s\tK%d", opc2str(op), IGET_Bx(ins)); - // break; - // case OP_CLOSE: case OP_LDNIL: - // logbuf("%s\tR%d", opc2str(op), IGET_RA(ins)); - // break; - // case OP_RAISE: - // logbuf("%s\t%d\t%c%d\t%c%d", opc2str(op), IGET_RA(ins), - // isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK, - // isKC(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); - // break; - // case OP_EXBLK: - // if (IGET_RA(ins)) { - // logbuf("%s\t%d\t%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); - // } else { - // logbuf("%s\t%d\t#%.4X", opc2str(op), IGET_RA(ins), IGET_sBx(ins) + pc + 1); - // } - // break; - // case OP_CATCH: - // logbuf("%s\tR%d\t%d\t%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins), IGET_RKC(ins)); - // break; + /* The following opcodes are not impacted by shared constant table + case OP_GETUPV: case OP_SETUPV: + case OP_LDCONST: + case OP_CALL: + case OP_CLOSURE: + case OP_CLOSE: case OP_LDNIL: + case OP_EXBLK: + case OP_CATCH: + case OP_GETGBL: case OP_SETGBL: + case OP_JMP: + case OP_JMPT: case OP_JMPF: + case OP_LDINT: + case OP_LDBOOL: */ default: break; } @@ -883,6 +849,22 @@ static int m_compact(bvm *vm) be_return_nil(vm); } +static int m_nocompact(bvm *vm) +{ + int top = be_top(vm); + if (top >= 1) { + bvalue *v = be_indexof(vm, 1); + if (var_isclosure(v)) { + bclosure *cl = var_toobj(v); + bproto *pr = cl->proto; + pr->varg |= BE_VA_NOCOMPACT; + } else { + be_raise(vm, "value_error", "unsupported type"); + } + } + be_return_nil(vm); +} + #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(solidify) { be_native_module_function("dump", m_dump), @@ -895,6 +877,7 @@ be_define_native_module(solidify, NULL); module solidify (scope: global, depend: BE_USE_SOLIDIFY_MODULE) { dump, func(m_dump) compact, func(m_compact) + nocompact, func(m_nocompact) } @const_object_info_end */ #include "../generate/be_fixed_solidify.h" diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index a1332b252..fa58cc4c2 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -1115,3 +1115,7 @@ class Matter_UI end end matter.UI = Matter_UI + +# optimization of constants +import solidify +solidify.nocompact(Matter_UI.page_part_ctl) \ No newline at end of file diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 8060db9c7..1de144b5d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -3,7 +3,240 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// ktab too big for class 'Matter_UI' - skipping +extern const bclass be_class_Matter_UI; +// compact class 'Matter_UI' ktab size: 229, total: 359 (saved 1040 bytes) +static const bvalue be_ktab_class_Matter_UI[229] = { + /* K0 */ be_const_class(be_class_Matter_UI), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(webserver), + /* K5 */ be_nested_str_weak(check_privileged_access), + /* K6 */ be_nested_str_weak(content_start), + /* K7 */ be_nested_str_weak(Matter_X20Advanced_X20Configuration), + /* K8 */ be_nested_str_weak(content_send_style), + /* K9 */ be_nested_str_weak(matter_enabled), + /* K10 */ be_nested_str_weak(show_passcode_form), + /* K11 */ be_nested_str_weak(show_fabric_info), + /* K12 */ be_nested_str_weak(web_add_config_button), + /* K13 */ be_nested_str_weak(content_stop), + /* K14 */ be_nested_str_weak(Matter), + /* K15 */ be_nested_str_weak(show_enable), + /* K16 */ be_nested_str_weak(show_plugins_configuration), + /* K17 */ be_nested_str_weak(content_send), + /* K18 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20id_X3D_X27butmat_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27mattera_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X20name_X3D_X27_X27_X3EAdvanced_X20Configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), + /* K19 */ be_nested_str_weak(content_button), + /* K20 */ be_nested_str_weak(BUTTON_CONFIGURATION), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(device), + /* K23 */ be_nested_str_weak(get_plugin_class_displayname), + /* K24 */ be_nested_str_weak(tasmota), + /* K25 */ be_nested_str_weak(get_option), + /* K26 */ be_nested_str_weak(matter), + /* K27 */ be_nested_str_weak(MATTER_OPTION), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str_weak(POWER), + /* K30 */ be_const_int(1), + /* K31 */ be_nested_str_weak(HSBColor), + /* K32 */ be_nested_str_weak(CT), + /* K33 */ be_nested_str_weak(Dimmer), + /* K34 */ be_nested_str_weak(push), + /* K35 */ be_nested_str_weak(type), + /* K36 */ be_nested_str_weak(light0), + /* K37 */ be_nested_str_weak(relay), + /* K38 */ be_nested_str_weak(light1), + /* K39 */ be_nested_str_weak(light2), + /* K40 */ be_nested_str_weak(light3), + /* K41 */ be_nested_str_weak(autoconf), + /* K42 */ be_nested_str_weak(autoconf_sensors_list), + /* K43 */ be_nested_str_weak(sessions), + /* K44 */ be_nested_str_weak(count_active_fabrics), + /* K45 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27text_X2Dalign_X3Aright_X3Bfont_X2Dsize_X3A11px_X3Bcolor_X3A_X23aaa_X3Bpadding_X3A0px_X3B_X27_X3E_X25s_X3C_X2Fdiv_X3E), + /* K46 */ be_nested_str_weak(Matter_X3A_X20No_X20active_X20association), + /* K47 */ be_nested_str_weak(Matter_X3A_X20), + /* K48 */ be_nested_str_weak(_X20active_X20association), + /* K49 */ be_nested_str_weak(s), + /* K50 */ be_nested_str_weak(show_bridge_status), + /* K51 */ be_nested_str_weak(commissioning), + /* K52 */ be_nested_str_weak(is_root_commissioning_open), + /* K53 */ be_nested_str_weak(show_commissioning_info), + /* K54 */ be_nested_str_weak(Matter_X20Create_X20new_X20endpoint), + /* K55 */ be_nested_str_weak(arg), + /* K56 */ be_nested_str_weak(url), + /* K57 */ be_nested_str_weak(show_remote_autoconf), + /* K58 */ be_nested_str_weak(string), + /* K59 */ be_nested_str_weak(introspect), + /* K60 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCurrent_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K61 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Cp_X3E_X3Cb_X3ELocal_X20sensors_X20and_X20devices_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), + /* K62 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X23_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K63 */ be_nested_str_weak(plugins_config), + /* K64 */ be_nested_str_weak(remove), + /* K65 */ be_nested_str_weak(0), + /* K66 */ be_nested_str_weak(k2l_num), + /* K67 */ be_nested_str_weak(find), + /* K68 */ be_nested_str_weak(http_), + /* K69 */ be_nested_str_weak(plugins_classes), + /* K70 */ be_nested_str_weak(ui_conf_to_string), + /* K71 */ be_nested_str_weak(ARG_HINT), + /* K72 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), + /* K73 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), + /* K74 */ be_nested_str_weak(html_escape), + /* K75 */ be_nested_str_weak(name), + /* K76 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), + /* K77 */ be_nested_str_weak(plugin_name), + /* K78 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), + /* K79 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20title_X3D_X27Delete_X20Endpoint_X20_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X20_X25i_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K80 */ be_nested_str_weak(_X3C_X2Ftable_X3E), + /* K81 */ be_nested_str_weak(_X3Cp_X3E_X26lt_X3Bnone_X26gt_X3B_X3C_X2Fp_X3E), + /* K82 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E), + /* K83 */ be_nested_str_weak(sort_distinct), + /* K84 */ be_nested_str_weak(get_plugin_remote_info), + /* K85 */ be_nested_str_weak(_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E), + /* K86 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K87 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2722_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), + /* K88 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), + /* K89 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E), + /* K90 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), + /* K91 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K92 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K93 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27config_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X20configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), + /* K94 */ be_nested_str_weak(show_plugins_hints_js), + /* K95 */ be_nested_str_weak(_CLASSES_TYPES), + /* K96 */ be_nested_str_long(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BAdd_X20to_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20local_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X20title_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20id_X3D_X27pi_X27_X20name_X3D_X27pi_X27_X20onchange_X3D_X27otm_X28_X22arg_X22_X2Cthis_X2Evalue_X29_X27_X3E), + /* K97 */ be_nested_str_weak(plugin_option), + /* K98 */ be_nested_str_long(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X27_X20name_X3D_X27arg_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addep_X27_X20class_X3D_X27button_X20bgrn_X27_X3ECreate_X20new_X20endpoint_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20Tasmota_X20or_X20OpenBK_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatteradd_X27_X20method_X3D_X27get_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2730_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3Ehttp_X3A_X2F_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27url_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X27_X20required_X20placeholder_X3D_X27IP_X20or_X20domain_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2710_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20class_X3D_X27button_X20bgrn_X27_X3EAuto_X2Dconfigure_X20remote_X20Tasmota_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20RESET_X20the_X20configuration_X20to_X20the_X20default_X2E_X20You_X20will_X20need_X20to_X20associate_X20again_X2E_X22_X29_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27auto_X27_X20class_X3D_X27button_X20bred_X27_X3EReset_X20all_X20and_X20Auto_X2Ddiscover_X3C_X2Fbutton_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), + /* K99 */ be_nested_str_weak(commissioning_open), + /* K100 */ be_nested_str_weak(millis), + /* K101 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCommissioning_X20open_X20for_X20_X25i_X20min_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K102 */ be_nested_str_weak(compute_manual_pairing_code), + /* K103 */ be_nested_str_weak(_X3Cp_X3EManual_X20pairing_X20code_X3A_X3Cbr_X3E_X3Cb_X3E_X25s_X2D_X25s_X2D_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Chr_X3E), + /* K104 */ be_const_int(3), + /* K105 */ be_const_int(2147483647), + /* K106 */ be_nested_str_weak(_X3Cdiv_X3E_X3Ccenter_X3E), + /* K107 */ be_nested_str_weak(compute_qrcode_content), + /* K108 */ be_nested_str_weak(show_qrcode), + /* K109 */ be_nested_str_weak(_X3Cp_X3E_X20_X25s_X3C_X2Fp_X3E), + /* K110 */ be_nested_str_weak(_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K111 */ be_nested_str_weak(json), + /* K112 */ be_nested_str_weak(Plugin_Device), + /* K113 */ be_nested_str_weak(PROBE_TIMEOUT), + /* K114 */ be_nested_str_weak(HTTP_remote), + /* K115 */ be_nested_str_weak(call_sync), + /* K116 */ be_nested_str_weak(Status_X2010), + /* K117 */ be_nested_str_weak(load), + /* K118 */ be_nested_str_weak(StatusSNS), + /* K119 */ be_nested_str_weak(Status_X2011), + /* K120 */ be_nested_str_weak(StatusSTS), + /* K121 */ be_nested_str_weak(log), + /* K122 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status10_X3D_X25s_X20satus11_X3D_X25s), + /* K123 */ be_nested_str_weak(generate_config_from_status), + /* K124 */ be_nested_str_weak(_CLASSES_TYPES2), + /* K125 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Remote_X20Device_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K126 */ be_nested_str_weak(_X3Cp_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Fp_X3E), + /* K127 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K128 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27url_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25s_X27_X3E), + /* K129 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), + /* K130 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20name_X3D_X27pi_X25i_X27_X20onchange_X3D_X27otm_X28_X22arg_X25i_X22_X2Cthis_X2Evalue_X29_X27_X3E), + /* K131 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E), + /* K132 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E), + /* K133 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), + /* K134 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E), + /* K135 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E), + /* K136 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K137 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BFabrics_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3EAssociated_X20fabrics_X3A_X3C_X2Fp_X3E), + /* K138 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3ENone_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K139 */ be_nested_str_weak(fabrics), + /* K140 */ be_nested_str_weak(persistables), + /* K141 */ be_nested_str_weak(_X3Chr_X3E), + /* K142 */ be_nested_str_weak(fabric_label), + /* K143 */ be_nested_str_weak(_X3CNo_X20label_X3E), + /* K144 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3B_X23_X25i_X20_X25s_X3C_X2Fb_X3E_X20_X28_X25s_X29_X26nbsp_X3B_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K145 */ be_nested_str_weak(get_fabric_index), + /* K146 */ be_nested_str_weak(get_admin_vendor_name), + /* K147 */ be_nested_str_weak(get_fabric_id), + /* K148 */ be_nested_str_weak(copy), + /* K149 */ be_nested_str_weak(reverse), + /* K150 */ be_nested_str_weak(get_device_id), + /* K151 */ be_nested_str_weak(Fabric_X3A_X20_X25s_X3Cbr_X3E), + /* K152 */ be_nested_str_weak(tohex), + /* K153 */ be_nested_str_weak(Device_X3A_X20_X25s_X3Cbr_X3E_X26nbsp_X3B), + /* K154 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22Are_X20you_X20sure_X3F_X22_X29_X3B_X27_X3E), + /* K155 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27del_fabric_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25i_X27_X3E), + /* K156 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27del_X27_X20class_X3D_X27button_X20bgrn_X27_X3EDelete_X20Fabric_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K157 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K158 */ be_nested_str_weak(has_arg), + /* K159 */ be_nested_str_weak(mtc0), + /* K160 */ be_nested_str_weak(stop_basic_commissioning), + /* K161 */ be_nested_str_weak(mtc1), + /* K162 */ be_nested_str_weak(start_root_basic_commissioning), + /* K163 */ be_nested_str_weak(split), + /* K164 */ be_nested_str_weak(_X7C), + /* K165 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X3E_X3C_X2Foption_X3E), + /* K166 */ be_nested_str_weak(_X2Dvirtual), + /* K167 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X20disabled_X3E_X2D_X2D_X2D_X20Virtual_X20Devices_X20_X2D_X2D_X2D_X3C_X2Foption_X3E), + /* K168 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X25s_X27_X25s_X3E_X25s_X3C_X2Foption_X3E), + /* K169 */ be_nested_str_weak(_X20selected), + /* K170 */ be_nested_str_weak(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27matterc_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E), + /* K171 */ be_nested_str_weak(_LOGO), + /* K172 */ be_nested_str_weak(_X20Configure_X20Matter_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), + /* K173 */ be_nested_str_weak(add_driver), + /* K174 */ be_nested_str_weak(plugins), + /* K175 */ be_nested_str_weak(BRIDGE), + /* K176 */ be_nested_str_weak(http_remote), + /* K177 */ be_nested_str_weak(addr), + /* K178 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), + /* K179 */ be_nested_str_weak(_STYLESHEET), + /* K180 */ be_nested_str_weak(k2l), + /* K181 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27ztdm_X20htrm_X27_X3E_X3Ctd_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X27_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Ftd_X3E), + /* K182 */ be_nested_str_weak(web_last_seen), + /* K183 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27htrm_X27_X3E_X3Ctd_X20colspan_X3D_X272_X27_X3E), + /* K184 */ be_nested_str_weak(web_values), + /* K185 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Chr_X3E), + /* K186 */ be_nested_str_weak(on), + /* K187 */ be_nested_str_weak(_X2Fmatterc), + /* K188 */ be_nested_str_weak(HTTP_GET), + /* K189 */ be_nested_str_weak(HTTP_POST), + /* K190 */ be_nested_str_weak(_X2Fmattera), + /* K191 */ be_nested_str_weak(_X2Fmatteradd), + /* K192 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Advanced_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E_X3Cp_X3EPasscode_X3A_X3C_X2Fp_X3E), + /* K193 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X271_X27_X20max_X3D_X2799999998_X27_X20name_X3D_X27passcode_X27_X20value_X3D_X27_X25i_X27_X3E), + /* K194 */ be_nested_str_weak(root_passcode), + /* K195 */ be_nested_str_weak(_X3Cp_X3EDistinguish_X20id_X3A_X3C_X2Fp_X3E), + /* K196 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X274095_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E), + /* K197 */ be_nested_str_weak(root_discriminator), + /* K198 */ be_nested_str_weak(ipv4only), + /* K199 */ be_nested_str_weak(_X20checked), + /* K200 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27ipv4_X27_X25s_X3EIPv4_X20only_X3C_X2Fp_X3E), + /* K201 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27passcode_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K202 */ be_nested_str_weak(_X20), + /* K203 */ be_nested_str_weak(_XE2_X96_X84), + /* K204 */ be_nested_str_weak(_XE2_X96_X80), + /* K205 */ be_nested_str_weak(_XE2_X96_X88), + /* K206 */ be_nested_str_weak(QRCode), + /* K207 */ be_nested_str_weak(encode_str), + /* K208 */ be_nested_str_weak(bitmap), + /* K209 */ be_nested_str_weak(size), + /* K210 */ be_nested_str_weak(_X3Cstyle_X3E_X2Eqr_X7Bfont_X2Dfamily_X3Amonospace_X3B_X20margin_X3A0_X3B_X20padding_X3A0_X3B_X20white_X2Dspace_X3Apre_X3B_X20font_X2Dsize_X3A18px_X3B_X20color_X3A_X23fff_X3B_X20line_X2Dheight_X3A100_X25_X3B_X7D_X3C_X2Fstyle_X3E), + /* K211 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27transform_X3Ascale_X28_X2E8_X2C1_X29_X3B_X20display_X3Ainline_X2Dblock_X3B_X27_X3E), + /* K212 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X3E), + /* K213 */ be_nested_str_weak(_X3C_X2Fdiv_X3E), + /* K214 */ be_const_int(2), + /* K215 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X20style_X3D_X27background_X2Dcolor_X3A_X23000_X3B_X27_X3E), + /* K216 */ be_nested_str_weak(_X2F_X3Cdiv_X3E), + /* K217 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X20style_X3D_X27width_X3A320px_X3B_X27_X3ECheck_X20the_X20_X3Ca_X20href_X3D_X27https_X3A_X2F_X2Ftasmota_X2Egithub_X2Eio_X2Fdocs_X2FMatter_X2F_X27_X20target_X3D_X27_blank_X27_X3EMatter_X20documentation_X3C_X2Fa_X3E_X2E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E), + /* K218 */ be_nested_str_weak(checked), + /* K219 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27menable_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27menable_X27_X20_X25s_X3E), + /* K220 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27menable_X27_X3E_X3Cb_X3EMatter_X20enable_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E), + /* K221 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27comm_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27comm_X27_X20_X25s_X3E), + /* K222 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27comm_X27_X3E_X3Cb_X3ECommissioning_X20open_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E), + /* K223 */ be_nested_str_weak(disable_bridge_mode), + /* K224 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27nobridge_X27_X25s_X3E_X3Cb_X3EForce_X20Static_X20endpoints_X3C_X2Fb_X3E_X20_X28non_X2Dbridge_X29_X3C_X2Fp_X3E), + /* K225 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K226 */ be_nested_str_weak(_X3Cscript_X20type_X3D_X27text_X2Fjavascript_X27_X3Evar_X20hm_X3D_X25s_X3Bvar_X20hl_X3D_X25s_X3B_X3C_X2Fscript_X3E), + /* K227 */ be_nested_str_weak(dump), + /* K228 */ be_nested_str_weak(_ADD_ENDPOINT_JS), +}; + extern const bclass be_class_Matter_UI; @@ -14,18 +247,13 @@ be_local_closure(class_Matter_UI_equal_map, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_UI), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(equal_map), &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ @@ -95,48 +323,37 @@ be_local_closure(class_Matter_UI_page_part_mgr_adv, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(check_privileged_access), - /* K2 */ be_nested_str_weak(content_start), - /* K3 */ be_nested_str_weak(Matter_X20Advanced_X20Configuration), - /* K4 */ be_nested_str_weak(content_send_style), - /* K5 */ be_nested_str_weak(matter_enabled), - /* K6 */ be_nested_str_weak(show_passcode_form), - /* K7 */ be_nested_str_weak(show_fabric_info), - /* K8 */ be_nested_str_weak(web_add_config_button), - /* K9 */ be_nested_str_weak(content_stop), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(page_part_mgr_adv), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080305, // 0001 GETMET R2 R1 K5 0x7C080200, // 0002 CALL R2 1 0x740A0001, // 0003 JMPT R2 #0006 0x4C080000, // 0004 LDNIL R2 0x80040400, // 0005 RET 1 R2 - 0x8C080302, // 0006 GETMET R2 R1 K2 - 0x58100003, // 0007 LDCONST R4 K3 + 0x8C080306, // 0006 GETMET R2 R1 K6 + 0x58100007, // 0007 LDCONST R4 K7 0x7C080400, // 0008 CALL R2 2 - 0x8C080304, // 0009 GETMET R2 R1 K4 + 0x8C080308, // 0009 GETMET R2 R1 K8 0x7C080200, // 000A CALL R2 1 - 0x8C080105, // 000B GETMET R2 R0 K5 + 0x8C080109, // 000B GETMET R2 R0 K9 0x7C080200, // 000C CALL R2 1 0x780A0003, // 000D JMPF R2 #0012 - 0x8C080106, // 000E GETMET R2 R0 K6 + 0x8C08010A, // 000E GETMET R2 R0 K10 0x7C080200, // 000F CALL R2 1 - 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x8C08010B, // 0010 GETMET R2 R0 K11 0x7C080200, // 0011 CALL R2 1 - 0x8C080108, // 0012 GETMET R2 R0 K8 + 0x8C08010C, // 0012 GETMET R2 R0 K12 0x7C080200, // 0013 CALL R2 1 - 0x8C080309, // 0014 GETMET R2 R1 K9 + 0x8C08030D, // 0014 GETMET R2 R1 K13 0x7C080200, // 0015 CALL R2 1 0x80000000, // 0016 RET 0 }) @@ -152,55 +369,41 @@ be_local_closure(class_Matter_UI_page_part_mgr, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(check_privileged_access), - /* K2 */ be_nested_str_weak(content_start), - /* K3 */ be_nested_str_weak(Matter), - /* K4 */ be_nested_str_weak(content_send_style), - /* K5 */ be_nested_str_weak(show_enable), - /* K6 */ be_nested_str_weak(matter_enabled), - /* K7 */ be_nested_str_weak(show_plugins_configuration), - /* K8 */ be_nested_str_weak(content_send), - /* K9 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20id_X3D_X27butmat_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27mattera_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X20name_X3D_X27_X27_X3EAdvanced_X20Configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E), - /* K10 */ be_nested_str_weak(content_button), - /* K11 */ be_nested_str_weak(BUTTON_CONFIGURATION), - /* K12 */ be_nested_str_weak(content_stop), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(page_part_mgr), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080305, // 0001 GETMET R2 R1 K5 0x7C080200, // 0002 CALL R2 1 0x740A0001, // 0003 JMPT R2 #0006 0x4C080000, // 0004 LDNIL R2 0x80040400, // 0005 RET 1 R2 - 0x8C080302, // 0006 GETMET R2 R1 K2 - 0x58100003, // 0007 LDCONST R4 K3 + 0x8C080306, // 0006 GETMET R2 R1 K6 + 0x5810000E, // 0007 LDCONST R4 K14 0x7C080400, // 0008 CALL R2 2 - 0x8C080304, // 0009 GETMET R2 R1 K4 + 0x8C080308, // 0009 GETMET R2 R1 K8 0x7C080200, // 000A CALL R2 1 - 0x8C080105, // 000B GETMET R2 R0 K5 + 0x8C08010F, // 000B GETMET R2 R0 K15 0x7C080200, // 000C CALL R2 1 - 0x8C080106, // 000D GETMET R2 R0 K6 + 0x8C080109, // 000D GETMET R2 R0 K9 0x7C080200, // 000E CALL R2 1 0x780A0001, // 000F JMPF R2 #0012 - 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x8C080110, // 0010 GETMET R2 R0 K16 0x7C080200, // 0011 CALL R2 1 - 0x8C080308, // 0012 GETMET R2 R1 K8 - 0x58100009, // 0013 LDCONST R4 K9 + 0x8C080311, // 0012 GETMET R2 R1 K17 + 0x58100012, // 0013 LDCONST R4 K18 0x7C080400, // 0014 CALL R2 2 - 0x8C08030A, // 0015 GETMET R2 R1 K10 - 0x8810030B, // 0016 GETMBR R4 R1 K11 + 0x8C080313, // 0015 GETMET R2 R1 K19 + 0x88100314, // 0016 GETMBR R4 R1 K20 0x7C080400, // 0017 CALL R2 2 - 0x8C08030C, // 0018 GETMET R2 R1 K12 + 0x8C08030D, // 0018 GETMET R2 R1 K13 0x7C080200, // 0019 CALL R2 1 0x80000000, // 001A RET 0 }) @@ -216,25 +419,21 @@ be_local_closure(class_Matter_UI_plugin_name, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 3, /* varg */ + 11, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(get_plugin_class_displayname), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(plugin_name), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x1C0C0315, // 0000 EQ R3 R1 K21 0x780E0000, // 0001 JMPF R3 #0003 - 0x80060000, // 0002 RET 1 K0 - 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x80062A00, // 0002 RET 1 K21 + 0x880C0116, // 0003 GETMBR R3 R0 K22 + 0x8C0C0717, // 0004 GETMET R3 R3 K23 0x5C140200, // 0005 MOVE R5 R1 0x7C0C0400, // 0006 CALL R3 2 0x80040600, // 0007 RET 1 R3 @@ -251,26 +450,21 @@ be_local_closure(class_Matter_UI_matter_enabled, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(get_option), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(MATTER_OPTION), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(matter_enabled), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040017, // 0000 GETGBL R1 G23 - 0xB80A0000, // 0001 GETNGBL R2 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0xB8120400, // 0003 GETNGBL R4 K2 - 0x88100903, // 0004 GETMBR R4 R4 K3 + 0xB80A3000, // 0001 GETNGBL R2 K24 + 0x8C080519, // 0002 GETMET R2 R2 K25 + 0xB8123400, // 0003 GETNGBL R4 K26 + 0x8810091B, // 0004 GETMBR R4 R4 K27 0x7C080400, // 0005 CALL R2 2 0x7C040200, // 0006 CALL R1 1 0x80040200, // 0007 RET 1 R1 @@ -287,128 +481,109 @@ be_local_closure(class_Matter_UI_generate_config_from_status, /* name */ be_nested_proto( 13, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(POWER), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(HSBColor), - /* K5 */ be_nested_str_weak(CT), - /* K6 */ be_nested_str_weak(Dimmer), - /* K7 */ be_nested_str_weak(push), - /* K8 */ be_nested_str_weak(type), - /* K9 */ be_nested_str_weak(light0), - /* K10 */ be_nested_str_weak(relay), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(light1), - /* K13 */ be_nested_str_weak(light2), - /* K14 */ be_nested_str_weak(light3), - /* K15 */ be_nested_str_weak(device), - /* K16 */ be_nested_str_weak(autoconf), - /* K17 */ be_nested_str_weak(autoconf_sensors_list), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(generate_config_from_status), &be_const_str_solidified, ( &(const binstruction[97]) { /* code */ 0x600C0012, // 0000 GETGBL R3 G18 0x7C0C0000, // 0001 CALL R3 0 - 0x58100000, // 0002 LDCONST R4 K0 - 0x8C140501, // 0003 GETMET R5 R2 K1 - 0x581C0002, // 0004 LDCONST R7 K2 + 0x5810001C, // 0002 LDCONST R4 K28 + 0x8C140502, // 0003 GETMET R5 R2 K2 + 0x581C001D, // 0004 LDCONST R7 K29 0x7C140400, // 0005 CALL R5 2 0x78160001, // 0006 JMPF R5 #0009 - 0x58100003, // 0007 LDCONST R4 K3 + 0x5810001E, // 0007 LDCONST R4 K30 0x7002000E, // 0008 JMP #0018 - 0x58140003, // 0009 LDCONST R5 K3 + 0x5814001E, // 0009 LDCONST R5 K30 0x50180200, // 000A LDBOOL R6 1 0 0x781A000B, // 000B JMPF R6 #0018 - 0x8C180501, // 000C GETMET R6 R2 K1 + 0x8C180502, // 000C GETMET R6 R2 K2 0x60200008, // 000D GETGBL R8 G8 0x5C240A00, // 000E MOVE R9 R5 0x7C200200, // 000F CALL R8 1 - 0x00220408, // 0010 ADD R8 K2 R8 + 0x00223A08, // 0010 ADD R8 K29 R8 0x7C180400, // 0011 CALL R6 2 0x781A0002, // 0012 JMPF R6 #0016 0x5C100A00, // 0013 MOVE R4 R5 - 0x00140B03, // 0014 ADD R5 R5 K3 + 0x00140B1E, // 0014 ADD R5 R5 K30 0x70020000, // 0015 JMP #0017 0x70020000, // 0016 JMP #0018 0x7001FFF1, // 0017 JMP #000A 0x4C140000, // 0018 LDNIL R5 0x4C180000, // 0019 LDNIL R6 0x4C1C0000, // 001A LDNIL R7 - 0x8C200501, // 001B GETMET R8 R2 K1 - 0x58280004, // 001C LDCONST R10 K4 + 0x8C200502, // 001B GETMET R8 R2 K2 + 0x5828001F, // 001C LDCONST R10 K31 0x7C200400, // 001D CALL R8 2 0x78220002, // 001E JMPF R8 #0022 0x5C1C0800, // 001F MOVE R7 R4 - 0x04100903, // 0020 SUB R4 R4 K3 + 0x0410091E, // 0020 SUB R4 R4 K30 0x7002000C, // 0021 JMP #002F - 0x8C200501, // 0022 GETMET R8 R2 K1 - 0x58280005, // 0023 LDCONST R10 K5 + 0x8C200502, // 0022 GETMET R8 R2 K2 + 0x58280020, // 0023 LDCONST R10 K32 0x7C200400, // 0024 CALL R8 2 0x78220002, // 0025 JMPF R8 #0029 0x5C180800, // 0026 MOVE R6 R4 - 0x04100903, // 0027 SUB R4 R4 K3 + 0x0410091E, // 0027 SUB R4 R4 K30 0x70020005, // 0028 JMP #002F - 0x8C200501, // 0029 GETMET R8 R2 K1 - 0x58280006, // 002A LDCONST R10 K6 + 0x8C200502, // 0029 GETMET R8 R2 K2 + 0x58280021, // 002A LDCONST R10 K33 0x7C200400, // 002B CALL R8 2 0x78220001, // 002C JMPF R8 #002F 0x5C140800, // 002D MOVE R5 R4 - 0x04100903, // 002E SUB R4 R4 K3 + 0x0410091E, // 002E SUB R4 R4 K30 0x60200010, // 002F GETGBL R8 G16 - 0x40260604, // 0030 CONNECT R9 K3 R4 + 0x40263C04, // 0030 CONNECT R9 K30 R4 0x7C200200, // 0031 CALL R8 1 0xA8020008, // 0032 EXBLK 0 #003C 0x5C241000, // 0033 MOVE R9 R8 0x7C240000, // 0034 CALL R9 0 - 0x8C280707, // 0035 GETMET R10 R3 K7 + 0x8C280722, // 0035 GETMET R10 R3 K34 0x60300013, // 0036 GETGBL R12 G19 0x7C300000, // 0037 CALL R12 0 - 0x98321109, // 0038 SETIDX R12 K8 K9 - 0x98321409, // 0039 SETIDX R12 K10 R9 + 0x98324724, // 0038 SETIDX R12 K35 K36 + 0x98324A09, // 0039 SETIDX R12 K37 R9 0x7C280400, // 003A CALL R10 2 0x7001FFF6, // 003B JMP #0033 - 0x5820000B, // 003C LDCONST R8 K11 + 0x58200003, // 003C LDCONST R8 K3 0xAC200200, // 003D CATCH R8 1 0 0xB0080000, // 003E RAISE 2 R0 R0 0x4C200000, // 003F LDNIL R8 0x20200A08, // 0040 NE R8 R5 R8 0x78220005, // 0041 JMPF R8 #0048 - 0x8C200707, // 0042 GETMET R8 R3 K7 + 0x8C200722, // 0042 GETMET R8 R3 K34 0x60280013, // 0043 GETGBL R10 G19 0x7C280000, // 0044 CALL R10 0 - 0x982A110C, // 0045 SETIDX R10 K8 K12 - 0x982A1405, // 0046 SETIDX R10 K10 R5 + 0x982A4726, // 0045 SETIDX R10 K35 K38 + 0x982A4A05, // 0046 SETIDX R10 K37 R5 0x7C200400, // 0047 CALL R8 2 0x4C200000, // 0048 LDNIL R8 0x20200C08, // 0049 NE R8 R6 R8 0x78220005, // 004A JMPF R8 #0051 - 0x8C200707, // 004B GETMET R8 R3 K7 + 0x8C200722, // 004B GETMET R8 R3 K34 0x60280013, // 004C GETGBL R10 G19 0x7C280000, // 004D CALL R10 0 - 0x982A110D, // 004E SETIDX R10 K8 K13 - 0x982A1406, // 004F SETIDX R10 K10 R6 + 0x982A4727, // 004E SETIDX R10 K35 K39 + 0x982A4A06, // 004F SETIDX R10 K37 R6 0x7C200400, // 0050 CALL R8 2 0x4C200000, // 0051 LDNIL R8 0x20200E08, // 0052 NE R8 R7 R8 0x78220005, // 0053 JMPF R8 #005A - 0x8C200707, // 0054 GETMET R8 R3 K7 + 0x8C200722, // 0054 GETMET R8 R3 K34 0x60280013, // 0055 GETGBL R10 G19 0x7C280000, // 0056 CALL R10 0 - 0x982A110E, // 0057 SETIDX R10 K8 K14 - 0x982A1407, // 0058 SETIDX R10 K10 R7 + 0x982A4728, // 0057 SETIDX R10 K35 K40 + 0x982A4A07, // 0058 SETIDX R10 K37 R7 0x7C200400, // 0059 CALL R8 2 - 0x8820010F, // 005A GETMBR R8 R0 K15 - 0x88201110, // 005B GETMBR R8 R8 K16 - 0x8C201111, // 005C GETMET R8 R8 K17 + 0x88200116, // 005A GETMBR R8 R0 K22 + 0x88201129, // 005B GETMBR R8 R8 K41 + 0x8C20112A, // 005C GETMET R8 R8 K42 0x5C280200, // 005D MOVE R10 R1 0x7C200400, // 005E CALL R8 2 0x000C0608, // 005F ADD R3 R3 R8 @@ -426,83 +601,64 @@ be_local_closure(class_Matter_UI_web_sensor, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(matter_enabled), - /* K2 */ be_nested_str_weak(device), - /* K3 */ be_nested_str_weak(sessions), - /* K4 */ be_nested_str_weak(count_active_fabrics), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(content_send), - /* K7 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27text_X2Dalign_X3Aright_X3Bfont_X2Dsize_X3A11px_X3Bcolor_X3A_X23aaa_X3Bpadding_X3A0px_X3B_X27_X3E_X25s_X3C_X2Fdiv_X3E), - /* K8 */ be_nested_str_weak(Matter_X3A_X20No_X20active_X20association), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(Matter_X3A_X20), - /* K11 */ be_nested_str_weak(_X20active_X20association), - /* K12 */ be_nested_str_weak(s), - /* K13 */ be_nested_str_weak(), - /* K14 */ be_nested_str_weak(show_bridge_status), - /* K15 */ be_nested_str_weak(commissioning), - /* K16 */ be_nested_str_weak(is_root_commissioning_open), - /* K17 */ be_nested_str_weak(show_commissioning_info), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(web_sensor), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080109, // 0001 GETMET R2 R0 K9 0x7C080200, // 0002 CALL R2 1 0x780A002C, // 0003 JMPF R2 #0031 - 0x88080102, // 0004 GETMBR R2 R0 K2 - 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x88080116, // 0004 GETMBR R2 R0 K22 + 0x8808052B, // 0005 GETMBR R2 R2 K43 0x4C0C0000, // 0006 LDNIL R3 0x20080403, // 0007 NE R2 R2 R3 0x780A0004, // 0008 JMPF R2 #000E - 0x88080102, // 0009 GETMBR R2 R0 K2 - 0x88080503, // 000A GETMBR R2 R2 K3 - 0x8C080504, // 000B GETMET R2 R2 K4 + 0x88080116, // 0009 GETMBR R2 R0 K22 + 0x8808052B, // 000A GETMBR R2 R2 K43 + 0x8C08052C, // 000B GETMET R2 R2 K44 0x7C080200, // 000C CALL R2 1 0x70020000, // 000D JMP #000F - 0x58080005, // 000E LDCONST R2 K5 - 0x1C0C0505, // 000F EQ R3 R2 K5 + 0x5808001C, // 000E LDCONST R2 K28 + 0x1C0C051C, // 000F EQ R3 R2 K28 0x780E0006, // 0010 JMPF R3 #0018 - 0x8C0C0306, // 0011 GETMET R3 R1 K6 + 0x8C0C0311, // 0011 GETMET R3 R1 K17 0x60140018, // 0012 GETGBL R5 G24 - 0x58180007, // 0013 LDCONST R6 K7 - 0x581C0008, // 0014 LDCONST R7 K8 + 0x5818002D, // 0013 LDCONST R6 K45 + 0x581C002E, // 0014 LDCONST R7 K46 0x7C140400, // 0015 CALL R5 2 0x7C0C0400, // 0016 CALL R3 2 0x7002000F, // 0017 JMP #0028 - 0x240C0509, // 0018 GT R3 R2 K9 - 0x8C100306, // 0019 GETMET R4 R1 K6 + 0x240C051E, // 0018 GT R3 R2 K30 + 0x8C100311, // 0019 GETMET R4 R1 K17 0x60180018, // 001A GETGBL R6 G24 - 0x581C0007, // 001B LDCONST R7 K7 + 0x581C002D, // 001B LDCONST R7 K45 0x60200008, // 001C GETGBL R8 G8 0x5C240400, // 001D MOVE R9 R2 0x7C200200, // 001E CALL R8 1 - 0x00221408, // 001F ADD R8 K10 R8 - 0x0020110B, // 0020 ADD R8 R8 K11 + 0x00225E08, // 001F ADD R8 K47 R8 + 0x00201130, // 0020 ADD R8 R8 K48 0x780E0001, // 0021 JMPF R3 #0024 - 0x5824000C, // 0022 LDCONST R9 K12 + 0x58240031, // 0022 LDCONST R9 K49 0x70020000, // 0023 JMP #0025 - 0x5824000D, // 0024 LDCONST R9 K13 + 0x58240015, // 0024 LDCONST R9 K21 0x00201009, // 0025 ADD R8 R8 R9 0x7C180400, // 0026 CALL R6 2 0x7C100400, // 0027 CALL R4 2 - 0x8C0C010E, // 0028 GETMET R3 R0 K14 + 0x8C0C0132, // 0028 GETMET R3 R0 K50 0x7C0C0200, // 0029 CALL R3 1 - 0x880C0102, // 002A GETMBR R3 R0 K2 - 0x880C070F, // 002B GETMBR R3 R3 K15 - 0x8C0C0710, // 002C GETMET R3 R3 K16 + 0x880C0116, // 002A GETMBR R3 R0 K22 + 0x880C0733, // 002B GETMBR R3 R3 K51 + 0x8C0C0734, // 002C GETMET R3 R3 K52 0x7C0C0200, // 002D CALL R3 1 0x780E0001, // 002E JMPF R3 #0031 - 0x8C0C0111, // 002F GETMET R3 R0 K17 + 0x8C0C0135, // 002F GETMET R3 R0 K53 0x7C0C0200, // 0030 CALL R3 1 0x80000000, // 0031 RET 0 }) @@ -518,53 +674,40 @@ be_local_closure(class_Matter_UI_page_part_mgr_add, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(check_privileged_access), - /* K2 */ be_nested_str_weak(content_start), - /* K3 */ be_nested_str_weak(Matter_X20Create_X20new_X20endpoint), - /* K4 */ be_nested_str_weak(content_send_style), - /* K5 */ be_nested_str_weak(arg), - /* K6 */ be_nested_str_weak(url), - /* K7 */ be_nested_str_weak(matter_enabled), - /* K8 */ be_nested_str_weak(show_remote_autoconf), - /* K9 */ be_nested_str_weak(content_button), - /* K10 */ be_nested_str_weak(BUTTON_CONFIGURATION), - /* K11 */ be_nested_str_weak(content_stop), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(page_part_mgr_add), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080305, // 0001 GETMET R2 R1 K5 0x7C080200, // 0002 CALL R2 1 0x740A0001, // 0003 JMPT R2 #0006 0x4C080000, // 0004 LDNIL R2 0x80040400, // 0005 RET 1 R2 - 0x8C080302, // 0006 GETMET R2 R1 K2 - 0x58100003, // 0007 LDCONST R4 K3 + 0x8C080306, // 0006 GETMET R2 R1 K6 + 0x58100036, // 0007 LDCONST R4 K54 0x7C080400, // 0008 CALL R2 2 - 0x8C080304, // 0009 GETMET R2 R1 K4 + 0x8C080308, // 0009 GETMET R2 R1 K8 0x7C080200, // 000A CALL R2 1 - 0x8C080305, // 000B GETMET R2 R1 K5 - 0x58100006, // 000C LDCONST R4 K6 + 0x8C080337, // 000B GETMET R2 R1 K55 + 0x58100038, // 000C LDCONST R4 K56 0x7C080400, // 000D CALL R2 2 - 0x8C0C0107, // 000E GETMET R3 R0 K7 + 0x8C0C0109, // 000E GETMET R3 R0 K9 0x7C0C0200, // 000F CALL R3 1 0x780E0002, // 0010 JMPF R3 #0014 - 0x8C0C0108, // 0011 GETMET R3 R0 K8 + 0x8C0C0139, // 0011 GETMET R3 R0 K57 0x5C140400, // 0012 MOVE R5 R2 0x7C0C0400, // 0013 CALL R3 2 - 0x8C0C0309, // 0014 GETMET R3 R1 K9 - 0x8814030A, // 0015 GETMBR R5 R1 K10 + 0x8C0C0313, // 0014 GETMET R3 R1 K19 + 0x88140314, // 0015 GETMBR R5 R1 K20 0x7C0C0400, // 0016 CALL R3 2 - 0x8C0C030B, // 0017 GETMET R3 R1 K11 + 0x8C0C030D, // 0017 GETMET R3 R1 K13 0x7C0C0200, // 0018 CALL R3 1 0x80000000, // 0019 RET 0 }) @@ -580,91 +723,39 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ be_nested_proto( 29, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[51]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(content_send), - /* K4 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCurrent_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K5 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Cp_X3E_X3Cb_X3ELocal_X20sensors_X20and_X20devices_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), - /* K6 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X23_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(plugins_config), - /* K9 */ be_nested_str_weak(remove), - /* K10 */ be_nested_str_weak(0), - /* K11 */ be_nested_str_weak(k2l_num), - /* K12 */ be_const_int(0), - /* K13 */ be_nested_str_weak(find), - /* K14 */ be_nested_str_weak(type), - /* K15 */ be_const_int(1), - /* K16 */ be_nested_str_weak(http_), - /* K17 */ be_nested_str_weak(plugins_classes), - /* K18 */ be_nested_str_weak(), - /* K19 */ be_nested_str_weak(ui_conf_to_string), - /* K20 */ be_nested_str_weak(ARG_HINT), - /* K21 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), - /* K22 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), - /* K23 */ be_nested_str_weak(html_escape), - /* K24 */ be_nested_str_weak(name), - /* K25 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), - /* K26 */ be_nested_str_weak(plugin_name), - /* K27 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), - /* K28 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20title_X3D_X27Delete_X20Endpoint_X20_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X20_X25i_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K29 */ be_nested_str_weak(_X3C_X2Ftable_X3E), - /* K30 */ be_nested_str_weak(_X3Cp_X3E_X26lt_X3Bnone_X26gt_X3B_X3C_X2Fp_X3E), - /* K31 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E), - /* K32 */ be_nested_str_weak(url), - /* K33 */ be_nested_str_weak(push), - /* K34 */ be_nested_str_weak(stop_iteration), - /* K35 */ be_nested_str_weak(sort_distinct), - /* K36 */ be_nested_str_weak(get_plugin_remote_info), - /* K37 */ be_nested_str_weak(_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E), - /* K38 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K39 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2722_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E), - /* K40 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), - /* K41 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E), - /* K42 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E), - /* K43 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K44 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K45 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27config_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X20configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), - /* K46 */ be_nested_str_weak(show_plugins_hints_js), - /* K47 */ be_nested_str_weak(_CLASSES_TYPES), - /* K48 */ be_nested_str_long(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BAdd_X20to_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20local_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X20title_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20id_X3D_X27pi_X27_X20name_X3D_X27pi_X27_X20onchange_X3D_X27otm_X28_X22arg_X22_X2Cthis_X2Evalue_X29_X27_X3E), - /* K49 */ be_nested_str_weak(plugin_option), - /* K50 */ be_nested_str_long(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X27_X20name_X3D_X27arg_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addep_X27_X20class_X3D_X27button_X20bgrn_X27_X3ECreate_X20new_X20endpoint_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20Tasmota_X20or_X20OpenBK_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatteradd_X27_X20method_X3D_X27get_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2730_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3Ehttp_X3A_X2F_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27url_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X27_X20required_X20placeholder_X3D_X27IP_X20or_X20domain_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2710_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20class_X3D_X27button_X20bgrn_X27_X3EAuto_X2Dconfigure_X20remote_X20Tasmota_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20RESET_X20the_X20configuration_X20to_X20the_X20default_X2E_X20You_X20will_X20need_X20to_X20associate_X20again_X2E_X22_X29_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27auto_X27_X20class_X3D_X27button_X20bred_X27_X3EReset_X20all_X20and_X20Auto_X2Ddiscover_X3C_X2Fbutton_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_plugins_configuration), &be_const_str_solidified, ( &(const binstruction[322]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0xA40E0400, // 0002 IMPORT R3 K2 - 0x8C100303, // 0003 GETMET R4 R1 K3 - 0x58180004, // 0004 LDCONST R6 K4 + 0xA4060800, // 0000 IMPORT R1 K4 + 0xA40A7400, // 0001 IMPORT R2 K58 + 0xA40E7600, // 0002 IMPORT R3 K59 + 0x8C100311, // 0003 GETMET R4 R1 K17 + 0x5818003C, // 0004 LDCONST R6 K60 0x7C100400, // 0005 CALL R4 2 - 0x8C100303, // 0006 GETMET R4 R1 K3 - 0x58180005, // 0007 LDCONST R6 K5 + 0x8C100311, // 0006 GETMET R4 R1 K17 + 0x5818003D, // 0007 LDCONST R6 K61 0x7C100400, // 0008 CALL R4 2 - 0x8C100303, // 0009 GETMET R4 R1 K3 - 0x58180006, // 000A LDCONST R6 K6 + 0x8C100311, // 0009 GETMET R4 R1 K17 + 0x5818003E, // 000A LDCONST R6 K62 0x7C100400, // 000B CALL R4 2 - 0x88100107, // 000C GETMBR R4 R0 K7 - 0x88100908, // 000D GETMBR R4 R4 K8 - 0x8C100909, // 000E GETMET R4 R4 K9 - 0x5818000A, // 000F LDCONST R6 K10 + 0x88100116, // 000C GETMBR R4 R0 K22 + 0x8810093F, // 000D GETMBR R4 R4 K63 + 0x8C100940, // 000E GETMET R4 R4 K64 + 0x58180041, // 000F LDCONST R6 K65 0x7C100400, // 0010 CALL R4 2 - 0x88100107, // 0011 GETMBR R4 R0 K7 - 0x8C10090B, // 0012 GETMET R4 R4 K11 - 0x88180107, // 0013 GETMBR R6 R0 K7 - 0x88180D08, // 0014 GETMBR R6 R6 K8 + 0x88100116, // 0011 GETMBR R4 R0 K22 + 0x8C100942, // 0012 GETMET R4 R4 K66 + 0x88180116, // 0013 GETMBR R6 R0 K22 + 0x88180D3F, // 0014 GETMBR R6 R6 K63 0x7C100400, // 0015 CALL R4 2 - 0x5814000C, // 0016 LDCONST R5 K12 + 0x5814001C, // 0016 LDCONST R5 K28 0x50180000, // 0017 LDBOOL R6 0 0 0x601C000C, // 0018 GETGBL R7 G12 0x5C200800, // 0019 MOVE R8 R4 @@ -672,134 +763,134 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ 0x141C0A07, // 001B LT R7 R5 R7 0x781E005D, // 001C JMPF R7 #007B 0x941C0805, // 001D GETIDX R7 R4 R5 - 0x88200107, // 001E GETMBR R8 R0 K7 - 0x88201108, // 001F GETMBR R8 R8 K8 - 0x8C20110D, // 0020 GETMET R8 R8 K13 + 0x88200116, // 001E GETMBR R8 R0 K22 + 0x8820113F, // 001F GETMBR R8 R8 K63 + 0x8C201143, // 0020 GETMET R8 R8 K67 0x60280008, // 0021 GETGBL R10 G8 0x5C2C0E00, // 0022 MOVE R11 R7 0x7C280200, // 0023 CALL R10 1 0x7C200400, // 0024 CALL R8 2 - 0x8C24110D, // 0025 GETMET R9 R8 K13 - 0x582C000E, // 0026 LDCONST R11 K14 + 0x8C241143, // 0025 GETMET R9 R8 K67 + 0x582C0023, // 0026 LDCONST R11 K35 0x7C240400, // 0027 CALL R9 2 0x5C281200, // 0028 MOVE R10 R9 0x742A0001, // 0029 JMPT R10 #002C - 0x00140B0F, // 002A ADD R5 R5 K15 + 0x00140B1E, // 002A ADD R5 R5 K30 0x7001FFEB, // 002B JMP #0018 - 0x8C28050D, // 002C GETMET R10 R2 K13 + 0x8C280543, // 002C GETMET R10 R2 K67 0x5C301200, // 002D MOVE R12 R9 - 0x58340010, // 002E LDCONST R13 K16 + 0x58340044, // 002E LDCONST R13 K68 0x7C280600, // 002F CALL R10 3 - 0x1C28150C, // 0030 EQ R10 R10 K12 + 0x1C28151C, // 0030 EQ R10 R10 K28 0x782A0001, // 0031 JMPF R10 #0034 - 0x00140B0F, // 0032 ADD R5 R5 K15 + 0x00140B1E, // 0032 ADD R5 R5 K30 0x7001FFE3, // 0033 JMP #0018 - 0x88280107, // 0034 GETMBR R10 R0 K7 - 0x88281511, // 0035 GETMBR R10 R10 K17 - 0x8C28150D, // 0036 GETMET R10 R10 K13 + 0x88280116, // 0034 GETMBR R10 R0 K22 + 0x88281545, // 0035 GETMBR R10 R10 K69 + 0x8C281543, // 0036 GETMET R10 R10 K67 0x5C301200, // 0037 MOVE R12 R9 0x7C280400, // 0038 CALL R10 2 - 0x582C0012, // 0039 LDCONST R11 K18 - 0x58300012, // 003A LDCONST R12 K18 + 0x582C0015, // 0039 LDCONST R11 K21 + 0x58300015, // 003A LDCONST R12 K21 0x4C340000, // 003B LDNIL R13 0x2034140D, // 003C NE R13 R10 R13 0x78360005, // 003D JMPF R13 #0044 - 0x8C341513, // 003E GETMET R13 R10 K19 + 0x8C341546, // 003E GETMET R13 R10 K70 0x5C3C1400, // 003F MOVE R15 R10 0x5C401000, // 0040 MOVE R16 R8 0x7C340600, // 0041 CALL R13 3 0x5C2C1A00, // 0042 MOVE R11 R13 - 0x88301514, // 0043 GETMBR R12 R10 K20 + 0x88301547, // 0043 GETMBR R12 R10 K71 0x50180200, // 0044 LDBOOL R6 1 0 - 0x8C340303, // 0045 GETMET R13 R1 K3 + 0x8C340311, // 0045 GETMET R13 R1 K17 0x603C0018, // 0046 GETGBL R15 G24 - 0x58400015, // 0047 LDCONST R16 K21 + 0x58400048, // 0047 LDCONST R16 K72 0x5C440E00, // 0048 MOVE R17 R7 0x7C3C0400, // 0049 CALL R15 2 0x7C340400, // 004A CALL R13 2 - 0x8C340303, // 004B GETMET R13 R1 K3 + 0x8C340311, // 004B GETMET R13 R1 K17 0x603C0018, // 004C GETGBL R15 G24 - 0x58400016, // 004D LDCONST R16 K22 + 0x58400049, // 004D LDCONST R16 K73 0x5C440E00, // 004E MOVE R17 R7 - 0x8C480317, // 004F GETMET R18 R1 K23 - 0x8C50110D, // 0050 GETMET R20 R8 K13 - 0x58580018, // 0051 LDCONST R22 K24 - 0x585C0012, // 0052 LDCONST R23 K18 + 0x8C48034A, // 004F GETMET R18 R1 K74 + 0x8C501143, // 0050 GETMET R20 R8 K67 + 0x5858004B, // 0051 LDCONST R22 K75 + 0x585C0015, // 0052 LDCONST R23 K21 0x7C500600, // 0053 CALL R20 3 0x7C480400, // 0054 CALL R18 2 0x7C3C0600, // 0055 CALL R15 3 0x7C340400, // 0056 CALL R13 2 - 0x8C340303, // 0057 GETMET R13 R1 K3 + 0x8C340311, // 0057 GETMET R13 R1 K17 0x603C0018, // 0058 GETGBL R15 G24 - 0x58400019, // 0059 LDCONST R16 K25 - 0x8C44011A, // 005A GETMET R17 R0 K26 - 0x8C4C110D, // 005B GETMET R19 R8 K13 - 0x5854000E, // 005C LDCONST R21 K14 - 0x58580012, // 005D LDCONST R22 K18 + 0x5840004C, // 0059 LDCONST R16 K76 + 0x8C44014D, // 005A GETMET R17 R0 K77 + 0x8C4C1143, // 005B GETMET R19 R8 K67 + 0x58540023, // 005C LDCONST R21 K35 + 0x58580015, // 005D LDCONST R22 K21 0x7C4C0600, // 005E CALL R19 3 0x7C440400, // 005F CALL R17 2 0x7C3C0400, // 0060 CALL R15 2 0x7C340400, // 0061 CALL R13 2 - 0x8C340303, // 0062 GETMET R13 R1 K3 + 0x8C340311, // 0062 GETMET R13 R1 K17 0x603C0018, // 0063 GETGBL R15 G24 - 0x5840001B, // 0064 LDCONST R16 K27 + 0x5840004E, // 0064 LDCONST R16 K78 0x5C440E00, // 0065 MOVE R17 R7 - 0x8C480317, // 0066 GETMET R18 R1 K23 + 0x8C48034A, // 0066 GETMET R18 R1 K74 0x5C501600, // 0067 MOVE R20 R11 0x7C480400, // 0068 CALL R18 2 - 0x8C4C0317, // 0069 GETMET R19 R1 K23 + 0x8C4C034A, // 0069 GETMET R19 R1 K74 0x5C541800, // 006A MOVE R21 R12 0x7C4C0400, // 006B CALL R19 2 - 0x8C500317, // 006C GETMET R20 R1 K23 + 0x8C50034A, // 006C GETMET R20 R1 K74 0x5C581800, // 006D MOVE R22 R12 0x7C500400, // 006E CALL R20 2 0x7C3C0A00, // 006F CALL R15 5 0x7C340400, // 0070 CALL R13 2 - 0x8C340303, // 0071 GETMET R13 R1 K3 + 0x8C340311, // 0071 GETMET R13 R1 K17 0x603C0018, // 0072 GETGBL R15 G24 - 0x5840001C, // 0073 LDCONST R16 K28 + 0x5840004F, // 0073 LDCONST R16 K79 0x5C440E00, // 0074 MOVE R17 R7 0x5C480E00, // 0075 MOVE R18 R7 0x5C4C0E00, // 0076 MOVE R19 R7 0x7C3C0800, // 0077 CALL R15 4 0x7C340400, // 0078 CALL R13 2 - 0x00140B0F, // 0079 ADD R5 R5 K15 + 0x00140B1E, // 0079 ADD R5 R5 K30 0x7001FF9C, // 007A JMP #0018 - 0x8C1C0303, // 007B GETMET R7 R1 K3 - 0x5824001D, // 007C LDCONST R9 K29 + 0x8C1C0311, // 007B GETMET R7 R1 K17 + 0x58240050, // 007C LDCONST R9 K80 0x7C1C0400, // 007D CALL R7 2 0x5C1C0C00, // 007E MOVE R7 R6 0x741E0002, // 007F JMPT R7 #0083 - 0x8C1C0303, // 0080 GETMET R7 R1 K3 - 0x5824001E, // 0081 LDCONST R9 K30 + 0x8C1C0311, // 0080 GETMET R7 R1 K17 + 0x58240051, // 0081 LDCONST R9 K81 0x7C1C0400, // 0082 CALL R7 2 - 0x8C1C0303, // 0083 GETMET R7 R1 K3 - 0x5824001F, // 0084 LDCONST R9 K31 + 0x8C1C0311, // 0083 GETMET R7 R1 K17 + 0x58240052, // 0084 LDCONST R9 K82 0x7C1C0400, // 0085 CALL R7 2 0x601C0012, // 0086 GETGBL R7 G18 0x7C1C0000, // 0087 CALL R7 0 0x60200010, // 0088 GETGBL R8 G16 - 0x88240107, // 0089 GETMBR R9 R0 K7 - 0x88241308, // 008A GETMBR R9 R9 K8 + 0x88240116, // 0089 GETMBR R9 R0 K22 + 0x8824133F, // 008A GETMBR R9 R9 K63 0x7C200200, // 008B CALL R8 1 0xA802000B, // 008C EXBLK 0 #0099 0x5C241000, // 008D MOVE R9 R8 0x7C240000, // 008E CALL R9 0 - 0x8C28130D, // 008F GETMET R10 R9 K13 - 0x58300020, // 0090 LDCONST R12 K32 + 0x8C281343, // 008F GETMET R10 R9 K67 + 0x58300038, // 0090 LDCONST R12 K56 0x7C280400, // 0091 CALL R10 2 0x4C2C0000, // 0092 LDNIL R11 0x202C140B, // 0093 NE R11 R10 R11 0x782E0002, // 0094 JMPF R11 #0098 - 0x8C2C0F21, // 0095 GETMET R11 R7 K33 + 0x8C2C0F22, // 0095 GETMET R11 R7 K34 0x5C341400, // 0096 MOVE R13 R10 0x7C2C0400, // 0097 CALL R11 2 0x7001FFF3, // 0098 JMP #008D - 0x58200022, // 0099 LDCONST R8 K34 + 0x58200003, // 0099 LDCONST R8 K3 0xAC200200, // 009A CATCH R8 1 0 0xB0080000, // 009B RAISE 2 R0 R0 - 0x88200107, // 009C GETMBR R8 R0 K7 - 0x8C201123, // 009D GETMET R8 R8 K35 + 0x88200116, // 009C GETMBR R8 R0 K22 + 0x8C201153, // 009D GETMET R8 R8 K83 0x5C280E00, // 009E MOVE R10 R7 0x7C200400, // 009F CALL R8 2 0x60200010, // 00A0 GETGBL R8 G16 @@ -808,160 +899,160 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ 0xA8020084, // 00A3 EXBLK 0 #0129 0x5C241000, // 00A4 MOVE R9 R8 0x7C240000, // 00A5 CALL R9 0 - 0x8C280317, // 00A6 GETMET R10 R1 K23 + 0x8C28034A, // 00A6 GETMET R10 R1 K74 0x5C301200, // 00A7 MOVE R12 R9 0x7C280400, // 00A8 CALL R10 2 - 0x8C2C0317, // 00A9 GETMET R11 R1 K23 - 0x88340107, // 00AA GETMBR R13 R0 K7 - 0x8C341B24, // 00AB GETMET R13 R13 K36 + 0x8C2C034A, // 00A9 GETMET R11 R1 K74 + 0x88340116, // 00AA GETMBR R13 R0 K22 + 0x8C341B54, // 00AB GETMET R13 R13 K84 0x5C3C1200, // 00AC MOVE R15 R9 0x7C340400, // 00AD CALL R13 2 - 0x8C341B0D, // 00AE GETMET R13 R13 K13 - 0x583C0018, // 00AF LDCONST R15 K24 + 0x8C341B43, // 00AE GETMET R13 R13 K67 + 0x583C004B, // 00AF LDCONST R15 K75 0x5C401200, // 00B0 MOVE R16 R9 0x7C340600, // 00B1 CALL R13 3 0x7C2C0400, // 00B2 CALL R11 2 - 0x8C300303, // 00B3 GETMET R12 R1 K3 + 0x8C300311, // 00B3 GETMET R12 R1 K17 0x60380018, // 00B4 GETGBL R14 G24 - 0x583C0025, // 00B5 LDCONST R15 K37 + 0x583C0055, // 00B5 LDCONST R15 K85 0x5C401400, // 00B6 MOVE R16 R10 0x5C441400, // 00B7 MOVE R17 R10 0x5C481600, // 00B8 MOVE R18 R11 0x7C380800, // 00B9 CALL R14 4 0x7C300400, // 00BA CALL R12 2 - 0x8C300303, // 00BB GETMET R12 R1 K3 - 0x58380026, // 00BC LDCONST R14 K38 + 0x8C300311, // 00BB GETMET R12 R1 K17 + 0x58380056, // 00BC LDCONST R14 K86 0x7C300400, // 00BD CALL R12 2 0x50180000, // 00BE LDBOOL R6 0 0 - 0x5814000C, // 00BF LDCONST R5 K12 + 0x5814001C, // 00BF LDCONST R5 K28 0x6030000C, // 00C0 GETGBL R12 G12 0x5C340800, // 00C1 MOVE R13 R4 0x7C300200, // 00C2 CALL R12 1 0x14300A0C, // 00C3 LT R12 R5 R12 0x7832005F, // 00C4 JMPF R12 #0125 0x94300805, // 00C5 GETIDX R12 R4 R5 - 0x88340107, // 00C6 GETMBR R13 R0 K7 - 0x88341B08, // 00C7 GETMBR R13 R13 K8 - 0x8C341B0D, // 00C8 GETMET R13 R13 K13 + 0x88340116, // 00C6 GETMBR R13 R0 K22 + 0x88341B3F, // 00C7 GETMBR R13 R13 K63 + 0x8C341B43, // 00C8 GETMET R13 R13 K67 0x603C0008, // 00C9 GETGBL R15 G8 0x5C401800, // 00CA MOVE R16 R12 0x7C3C0200, // 00CB CALL R15 1 0x7C340400, // 00CC CALL R13 2 - 0x8C381B0D, // 00CD GETMET R14 R13 K13 - 0x5840000E, // 00CE LDCONST R16 K14 + 0x8C381B43, // 00CD GETMET R14 R13 K67 + 0x58400023, // 00CE LDCONST R16 K35 0x7C380400, // 00CF CALL R14 2 0x5C3C1C00, // 00D0 MOVE R15 R14 0x743E0001, // 00D1 JMPT R15 #00D4 - 0x00140B0F, // 00D2 ADD R5 R5 K15 + 0x00140B1E, // 00D2 ADD R5 R5 K30 0x7001FFEB, // 00D3 JMP #00C0 - 0x8C3C050D, // 00D4 GETMET R15 R2 K13 + 0x8C3C0543, // 00D4 GETMET R15 R2 K67 0x5C441C00, // 00D5 MOVE R17 R14 - 0x58480010, // 00D6 LDCONST R18 K16 + 0x58480044, // 00D6 LDCONST R18 K68 0x7C3C0600, // 00D7 CALL R15 3 - 0x203C1F0C, // 00D8 NE R15 R15 K12 + 0x203C1F1C, // 00D8 NE R15 R15 K28 0x783E0001, // 00D9 JMPF R15 #00DC - 0x00140B0F, // 00DA ADD R5 R5 K15 + 0x00140B1E, // 00DA ADD R5 R5 K30 0x7001FFE3, // 00DB JMP #00C0 - 0x8C3C1B0D, // 00DC GETMET R15 R13 K13 - 0x58440020, // 00DD LDCONST R17 K32 + 0x8C3C1B43, // 00DC GETMET R15 R13 K67 + 0x58440038, // 00DD LDCONST R17 K56 0x7C3C0400, // 00DE CALL R15 2 0x203C1E09, // 00DF NE R15 R15 R9 0x783E0001, // 00E0 JMPF R15 #00E3 - 0x00140B0F, // 00E1 ADD R5 R5 K15 + 0x00140B1E, // 00E1 ADD R5 R5 K30 0x7001FFDC, // 00E2 JMP #00C0 - 0x883C0107, // 00E3 GETMBR R15 R0 K7 - 0x883C1F11, // 00E4 GETMBR R15 R15 K17 - 0x8C3C1F0D, // 00E5 GETMET R15 R15 K13 + 0x883C0116, // 00E3 GETMBR R15 R0 K22 + 0x883C1F45, // 00E4 GETMBR R15 R15 K69 + 0x8C3C1F43, // 00E5 GETMET R15 R15 K67 0x5C441C00, // 00E6 MOVE R17 R14 0x7C3C0400, // 00E7 CALL R15 2 - 0x58400012, // 00E8 LDCONST R16 K18 - 0x58440012, // 00E9 LDCONST R17 K18 + 0x58400015, // 00E8 LDCONST R16 K21 + 0x58440015, // 00E9 LDCONST R17 K21 0x4C480000, // 00EA LDNIL R18 0x20481E12, // 00EB NE R18 R15 R18 0x784A0005, // 00EC JMPF R18 #00F3 - 0x8C481F13, // 00ED GETMET R18 R15 K19 + 0x8C481F46, // 00ED GETMET R18 R15 K70 0x5C501E00, // 00EE MOVE R20 R15 0x5C541A00, // 00EF MOVE R21 R13 0x7C480600, // 00F0 CALL R18 3 0x5C402400, // 00F1 MOVE R16 R18 - 0x88441F14, // 00F2 GETMBR R17 R15 K20 + 0x88441F47, // 00F2 GETMBR R17 R15 K71 0x50180200, // 00F3 LDBOOL R6 1 0 - 0x8C480303, // 00F4 GETMET R18 R1 K3 + 0x8C480311, // 00F4 GETMET R18 R1 K17 0x60500018, // 00F5 GETGBL R20 G24 - 0x58540027, // 00F6 LDCONST R21 K39 + 0x58540057, // 00F6 LDCONST R21 K87 0x5C581800, // 00F7 MOVE R22 R12 0x7C500400, // 00F8 CALL R20 2 0x7C480400, // 00F9 CALL R18 2 - 0x8C480303, // 00FA GETMET R18 R1 K3 + 0x8C480311, // 00FA GETMET R18 R1 K17 0x60500018, // 00FB GETGBL R20 G24 - 0x58540028, // 00FC LDCONST R21 K40 + 0x58540058, // 00FC LDCONST R21 K88 0x5C581800, // 00FD MOVE R22 R12 - 0x8C5C0317, // 00FE GETMET R23 R1 K23 - 0x8C641B0D, // 00FF GETMET R25 R13 K13 - 0x586C0018, // 0100 LDCONST R27 K24 - 0x58700012, // 0101 LDCONST R28 K18 + 0x8C5C034A, // 00FE GETMET R23 R1 K74 + 0x8C641B43, // 00FF GETMET R25 R13 K67 + 0x586C004B, // 0100 LDCONST R27 K75 + 0x58700015, // 0101 LDCONST R28 K21 0x7C640600, // 0102 CALL R25 3 0x7C5C0400, // 0103 CALL R23 2 0x7C500600, // 0104 CALL R20 3 0x7C480400, // 0105 CALL R18 2 - 0x8C480303, // 0106 GETMET R18 R1 K3 + 0x8C480311, // 0106 GETMET R18 R1 K17 0x60500018, // 0107 GETGBL R20 G24 - 0x58540029, // 0108 LDCONST R21 K41 - 0x8C58011A, // 0109 GETMET R22 R0 K26 - 0x8C601B0D, // 010A GETMET R24 R13 K13 - 0x5868000E, // 010B LDCONST R26 K14 - 0x586C0012, // 010C LDCONST R27 K18 + 0x58540059, // 0108 LDCONST R21 K89 + 0x8C58014D, // 0109 GETMET R22 R0 K77 + 0x8C601B43, // 010A GETMET R24 R13 K67 + 0x58680023, // 010B LDCONST R26 K35 + 0x586C0015, // 010C LDCONST R27 K21 0x7C600600, // 010D CALL R24 3 0x7C580400, // 010E CALL R22 2 0x7C500400, // 010F CALL R20 2 0x7C480400, // 0110 CALL R18 2 - 0x8C480303, // 0111 GETMET R18 R1 K3 + 0x8C480311, // 0111 GETMET R18 R1 K17 0x60500018, // 0112 GETGBL R20 G24 - 0x5854002A, // 0113 LDCONST R21 K42 + 0x5854005A, // 0113 LDCONST R21 K90 0x5C581800, // 0114 MOVE R22 R12 - 0x8C5C0317, // 0115 GETMET R23 R1 K23 + 0x8C5C034A, // 0115 GETMET R23 R1 K74 0x5C642000, // 0116 MOVE R25 R16 0x7C5C0400, // 0117 CALL R23 2 - 0x8C600317, // 0118 GETMET R24 R1 K23 + 0x8C60034A, // 0118 GETMET R24 R1 K74 0x5C682200, // 0119 MOVE R26 R17 0x7C600400, // 011A CALL R24 2 0x7C500800, // 011B CALL R20 4 0x7C480400, // 011C CALL R18 2 - 0x8C480303, // 011D GETMET R18 R1 K3 + 0x8C480311, // 011D GETMET R18 R1 K17 0x60500018, // 011E GETGBL R20 G24 - 0x5854002B, // 011F LDCONST R21 K43 + 0x5854005B, // 011F LDCONST R21 K91 0x5C581800, // 0120 MOVE R22 R12 0x7C500400, // 0121 CALL R20 2 0x7C480400, // 0122 CALL R18 2 - 0x00140B0F, // 0123 ADD R5 R5 K15 + 0x00140B1E, // 0123 ADD R5 R5 K30 0x7001FF9A, // 0124 JMP #00C0 - 0x8C300303, // 0125 GETMET R12 R1 K3 - 0x5838002C, // 0126 LDCONST R14 K44 + 0x8C300311, // 0125 GETMET R12 R1 K17 + 0x5838005C, // 0126 LDCONST R14 K92 0x7C300400, // 0127 CALL R12 2 0x7001FF7A, // 0128 JMP #00A4 - 0x58200022, // 0129 LDCONST R8 K34 + 0x58200003, // 0129 LDCONST R8 K3 0xAC200200, // 012A CATCH R8 1 0 0xB0080000, // 012B RAISE 2 R0 R0 0x5C200C00, // 012C MOVE R8 R6 0x74220002, // 012D JMPT R8 #0131 - 0x8C200303, // 012E GETMET R8 R1 K3 - 0x5828001E, // 012F LDCONST R10 K30 + 0x8C200311, // 012E GETMET R8 R1 K17 + 0x58280051, // 012F LDCONST R10 K81 0x7C200400, // 0130 CALL R8 2 - 0x8C200303, // 0131 GETMET R8 R1 K3 - 0x5828002D, // 0132 LDCONST R10 K45 + 0x8C200311, // 0131 GETMET R8 R1 K17 + 0x5828005D, // 0132 LDCONST R10 K93 0x7C200400, // 0133 CALL R8 2 - 0x8C20012E, // 0134 GETMET R8 R0 K46 - 0x8828012F, // 0135 GETMBR R10 R0 K47 + 0x8C20015E, // 0134 GETMET R8 R0 K94 + 0x8828015F, // 0135 GETMBR R10 R0 K95 0x7C200400, // 0136 CALL R8 2 - 0x8C200303, // 0137 GETMET R8 R1 K3 - 0x58280030, // 0138 LDCONST R10 K48 + 0x8C200311, // 0137 GETMET R8 R1 K17 + 0x58280060, // 0138 LDCONST R10 K96 0x7C200400, // 0139 CALL R8 2 - 0x8C200131, // 013A GETMET R8 R0 K49 - 0x58280012, // 013B LDCONST R10 K18 - 0x882C012F, // 013C GETMBR R11 R0 K47 + 0x8C200161, // 013A GETMET R8 R0 K97 + 0x58280015, // 013B LDCONST R10 K21 + 0x882C015F, // 013C GETMBR R11 R0 K95 0x7C200600, // 013D CALL R8 3 - 0x8C200303, // 013E GETMET R8 R1 K3 - 0x58280032, // 013F LDCONST R10 K50 + 0x8C200311, // 013E GETMET R8 R1 K17 + 0x58280062, // 013F LDCONST R10 K98 0x7C200400, // 0140 CALL R8 2 0x80000000, // 0141 RET 0 }) @@ -977,94 +1068,75 @@ be_local_closure(class_Matter_UI_show_commissioning_info, /* name */ be_nested_proto( 12, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(commissioning), - /* K3 */ be_nested_str_weak(commissioning_open), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(millis), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(content_send), - /* K8 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCommissioning_X20open_X20for_X20_X25i_X20min_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K9 */ be_nested_str_weak(compute_manual_pairing_code), - /* K10 */ be_nested_str_weak(_X3Cp_X3EManual_X20pairing_X20code_X3A_X3Cbr_X3E_X3Cb_X3E_X25s_X2D_X25s_X2D_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Chr_X3E), - /* K11 */ be_const_int(3), - /* K12 */ be_const_int(2147483647), - /* K13 */ be_nested_str_weak(_X3Cdiv_X3E_X3Ccenter_X3E), - /* K14 */ be_nested_str_weak(compute_qrcode_content), - /* K15 */ be_nested_str_weak(show_qrcode), - /* K16 */ be_nested_str_weak(_X3Cp_X3E_X20_X25s_X3C_X2Fp_X3E), - /* K17 */ be_nested_str_weak(_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_commissioning_info), &be_const_str_solidified, ( &(const binstruction[61]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x88080502, // 0002 GETMBR R2 R2 K2 - 0x88080503, // 0003 GETMBR R2 R2 K3 - 0xB80E0800, // 0004 GETNGBL R3 K4 - 0x8C0C0705, // 0005 GETMET R3 R3 K5 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x88080116, // 0001 GETMBR R2 R0 K22 + 0x88080533, // 0002 GETMBR R2 R2 K51 + 0x88080563, // 0003 GETMBR R2 R2 K99 + 0xB80E3000, // 0004 GETNGBL R3 K24 + 0x8C0C0764, // 0005 GETMET R3 R3 K100 0x7C0C0200, // 0006 CALL R3 1 0x04080403, // 0007 SUB R2 R2 R3 0x540E03E7, // 0008 LDINT R3 1000 0x0C080403, // 0009 DIV R2 R2 R3 - 0x140C0506, // 000A LT R3 R2 K6 + 0x140C051C, // 000A LT R3 R2 K28 0x780E0000, // 000B JMPF R3 #000D - 0x58080006, // 000C LDCONST R2 K6 + 0x5808001C, // 000C LDCONST R2 K28 0x540E001D, // 000D LDINT R3 30 0x000C0403, // 000E ADD R3 R2 R3 0x5412003B, // 000F LDINT R4 60 0x0C0C0604, // 0010 DIV R3 R3 R4 - 0x8C100307, // 0011 GETMET R4 R1 K7 + 0x8C100311, // 0011 GETMET R4 R1 K17 0x60180018, // 0012 GETGBL R6 G24 - 0x581C0008, // 0013 LDCONST R7 K8 + 0x581C0065, // 0013 LDCONST R7 K101 0x5C200600, // 0014 MOVE R8 R3 0x7C180400, // 0015 CALL R6 2 0x7C100400, // 0016 CALL R4 2 - 0x88100101, // 0017 GETMBR R4 R0 K1 - 0x88100902, // 0018 GETMBR R4 R4 K2 - 0x8C100909, // 0019 GETMET R4 R4 K9 + 0x88100116, // 0017 GETMBR R4 R0 K22 + 0x88100933, // 0018 GETMBR R4 R4 K51 + 0x8C100966, // 0019 GETMET R4 R4 K102 0x7C100200, // 001A CALL R4 1 - 0x8C140307, // 001B GETMET R5 R1 K7 + 0x8C140311, // 001B GETMET R5 R1 K17 0x601C0018, // 001C GETGBL R7 G24 - 0x5820000A, // 001D LDCONST R8 K10 - 0x40260D0B, // 001E CONNECT R9 K6 K11 + 0x58200067, // 001D LDCONST R8 K103 + 0x40263968, // 001E CONNECT R9 K28 K104 0x94240809, // 001F GETIDX R9 R4 R9 0x542A0003, // 0020 LDINT R10 4 0x542E0005, // 0021 LDINT R11 6 0x4028140B, // 0022 CONNECT R10 R10 R11 0x9428080A, // 0023 GETIDX R10 R4 R10 0x542E0006, // 0024 LDINT R11 7 - 0x402C170C, // 0025 CONNECT R11 R11 K12 + 0x402C1769, // 0025 CONNECT R11 R11 K105 0x942C080B, // 0026 GETIDX R11 R4 R11 0x7C1C0800, // 0027 CALL R7 4 0x7C140400, // 0028 CALL R5 2 - 0x8C140307, // 0029 GETMET R5 R1 K7 - 0x581C000D, // 002A LDCONST R7 K13 + 0x8C140311, // 0029 GETMET R5 R1 K17 + 0x581C006A, // 002A LDCONST R7 K106 0x7C140400, // 002B CALL R5 2 - 0x88140101, // 002C GETMBR R5 R0 K1 - 0x88140B02, // 002D GETMBR R5 R5 K2 - 0x8C140B0E, // 002E GETMET R5 R5 K14 + 0x88140116, // 002C GETMBR R5 R0 K22 + 0x88140B33, // 002D GETMBR R5 R5 K51 + 0x8C140B6B, // 002E GETMET R5 R5 K107 0x7C140200, // 002F CALL R5 1 - 0x8C18010F, // 0030 GETMET R6 R0 K15 + 0x8C18016C, // 0030 GETMET R6 R0 K108 0x5C200A00, // 0031 MOVE R8 R5 0x7C180400, // 0032 CALL R6 2 - 0x8C180307, // 0033 GETMET R6 R1 K7 + 0x8C180311, // 0033 GETMET R6 R1 K17 0x60200018, // 0034 GETGBL R8 G24 - 0x58240010, // 0035 LDCONST R9 K16 + 0x5824006D, // 0035 LDCONST R9 K109 0x5C280A00, // 0036 MOVE R10 R5 0x7C200400, // 0037 CALL R8 2 0x7C180400, // 0038 CALL R6 2 - 0x8C180307, // 0039 GETMET R6 R1 K7 - 0x58200011, // 003A LDCONST R8 K17 + 0x8C180311, // 0039 GETMET R6 R1 K17 + 0x5820006E, // 003A LDCONST R8 K110 0x7C180400, // 003B CALL R6 2 0x80000000, // 003C RET 0 }) @@ -1080,113 +1152,69 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ be_nested_proto( 27, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[43]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(json), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Plugin_Device), - /* K5 */ be_nested_str_weak(PROBE_TIMEOUT), - /* K6 */ be_nested_str_weak(HTTP_remote), - /* K7 */ be_nested_str_weak(call_sync), - /* K8 */ be_nested_str_weak(Status_X2010), - /* K9 */ be_nested_str_weak(load), - /* K10 */ be_nested_str_weak(find), - /* K11 */ be_nested_str_weak(StatusSNS), - /* K12 */ be_nested_str_weak(Status_X2011), - /* K13 */ be_nested_str_weak(StatusSTS), - /* K14 */ be_nested_str_weak(log), - /* K15 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status10_X3D_X25s_X20satus11_X3D_X25s), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(generate_config_from_status), - /* K18 */ be_nested_str_weak(show_plugins_hints_js), - /* K19 */ be_nested_str_weak(_CLASSES_TYPES2), - /* K20 */ be_nested_str_weak(content_send), - /* K21 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Remote_X20Device_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E), - /* K22 */ be_nested_str_weak(html_escape), - /* K23 */ be_nested_str_weak(_X3Cp_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Fp_X3E), - /* K24 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K25 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27url_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25s_X27_X3E), - /* K26 */ be_const_int(0), - /* K27 */ be_nested_str_weak(type), - /* K28 */ be_nested_str_weak(http_), - /* K29 */ be_nested_str_weak(device), - /* K30 */ be_nested_str_weak(plugins_classes), - /* K31 */ be_nested_str_weak(ui_conf_to_string), - /* K32 */ be_nested_str_weak(ARG_HINT), - /* K33 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E), - /* K34 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20name_X3D_X27pi_X25i_X27_X20onchange_X3D_X27otm_X28_X22arg_X25i_X22_X2Cthis_X2Evalue_X29_X27_X3E), - /* K35 */ be_nested_str_weak(plugin_option), - /* K36 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E), - /* K37 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E), - /* K38 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K39 */ be_const_int(1), - /* K40 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E), - /* K41 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E), - /* K42 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_remote_autoconf), &be_const_str_solidified, ( &(const binstruction[220]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x1C100302, // 0002 EQ R4 R1 K2 + 0xA40A0800, // 0000 IMPORT R2 K4 + 0xA40EDE00, // 0001 IMPORT R3 K111 + 0x1C100315, // 0002 EQ R4 R1 K21 0x78120000, // 0003 JMPF R4 #0005 0x80000800, // 0004 RET 0 - 0xB8120600, // 0005 GETNGBL R4 K3 - 0x88100904, // 0006 GETMBR R4 R4 K4 - 0x88100905, // 0007 GETMBR R4 R4 K5 - 0xB8160600, // 0008 GETNGBL R5 K3 - 0x8C140B06, // 0009 GETMET R5 R5 K6 + 0xB8123400, // 0005 GETNGBL R4 K26 + 0x88100970, // 0006 GETMBR R4 R4 K112 + 0x88100971, // 0007 GETMBR R4 R4 K113 + 0xB8163400, // 0008 GETNGBL R5 K26 + 0x8C140B72, // 0009 GETMET R5 R5 K114 0x4C1C0000, // 000A LDNIL R7 0x5C200200, // 000B MOVE R8 R1 0x5C240800, // 000C MOVE R9 R4 0x7C140800, // 000D CALL R5 4 - 0x8C180B07, // 000E GETMET R6 R5 K7 - 0x58200008, // 000F LDCONST R8 K8 + 0x8C180B73, // 000E GETMET R6 R5 K115 + 0x58200074, // 000F LDCONST R8 K116 0x5C240800, // 0010 MOVE R9 R4 0x7C180600, // 0011 CALL R6 3 0x4C1C0000, // 0012 LDNIL R7 0x201C0C07, // 0013 NE R7 R6 R7 0x781E0003, // 0014 JMPF R7 #0019 - 0x8C1C0709, // 0015 GETMET R7 R3 K9 + 0x8C1C0775, // 0015 GETMET R7 R3 K117 0x5C240C00, // 0016 MOVE R9 R6 0x7C1C0400, // 0017 CALL R7 2 0x5C180E00, // 0018 MOVE R6 R7 0x4C1C0000, // 0019 LDNIL R7 0x201C0C07, // 001A NE R7 R6 R7 0x781E0003, // 001B JMPF R7 #0020 - 0x8C1C0D0A, // 001C GETMET R7 R6 K10 - 0x5824000B, // 001D LDCONST R9 K11 + 0x8C1C0D43, // 001C GETMET R7 R6 K67 + 0x58240076, // 001D LDCONST R9 K118 0x7C1C0400, // 001E CALL R7 2 0x5C180E00, // 001F MOVE R6 R7 0x4C1C0000, // 0020 LDNIL R7 0x4C200000, // 0021 LDNIL R8 0x20200C08, // 0022 NE R8 R6 R8 0x78220012, // 0023 JMPF R8 #0037 - 0x8C200B07, // 0024 GETMET R8 R5 K7 - 0x5828000C, // 0025 LDCONST R10 K12 + 0x8C200B73, // 0024 GETMET R8 R5 K115 + 0x58280077, // 0025 LDCONST R10 K119 0x5C2C0800, // 0026 MOVE R11 R4 0x7C200600, // 0027 CALL R8 3 0x5C1C1000, // 0028 MOVE R7 R8 0x4C200000, // 0029 LDNIL R8 0x20200E08, // 002A NE R8 R7 R8 0x78220003, // 002B JMPF R8 #0030 - 0x8C200709, // 002C GETMET R8 R3 K9 + 0x8C200775, // 002C GETMET R8 R3 K117 0x5C280E00, // 002D MOVE R10 R7 0x7C200400, // 002E CALL R8 2 0x5C1C1000, // 002F MOVE R7 R8 0x4C200000, // 0030 LDNIL R8 0x20200E08, // 0031 NE R8 R7 R8 0x78220003, // 0032 JMPF R8 #0037 - 0x8C200F0A, // 0033 GETMET R8 R7 K10 - 0x5828000D, // 0034 LDCONST R10 K13 + 0x8C200F43, // 0033 GETMET R8 R7 K67 + 0x58280078, // 0034 LDCONST R10 K120 0x7C200400, // 0035 CALL R8 2 0x5C1C1000, // 0036 MOVE R7 R8 0x4C200000, // 0037 LDNIL R8 @@ -1195,9 +1223,9 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0x4C200000, // 003A LDNIL R8 0x20200E08, // 003B NE R8 R7 R8 0x78220095, // 003C JMPF R8 #00D3 - 0xB8221C00, // 003D GETNGBL R8 K14 + 0xB822F200, // 003D GETNGBL R8 K121 0x60240018, // 003E GETGBL R9 G24 - 0x5828000F, // 003F LDCONST R10 K15 + 0x5828007A, // 003F LDCONST R10 K122 0x5C2C0200, // 0040 MOVE R11 R1 0x60300008, // 0041 GETGBL R12 G8 0x5C340C00, // 0042 MOVE R13 R6 @@ -1206,149 +1234,149 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0x5C380E00, // 0045 MOVE R14 R7 0x7C340200, // 0046 CALL R13 1 0x7C240800, // 0047 CALL R9 4 - 0x58280010, // 0048 LDCONST R10 K16 + 0x58280068, // 0048 LDCONST R10 K104 0x7C200400, // 0049 CALL R8 2 - 0x8C200111, // 004A GETMET R8 R0 K17 + 0x8C20017B, // 004A GETMET R8 R0 K123 0x5C280C00, // 004B MOVE R10 R6 0x5C2C0E00, // 004C MOVE R11 R7 0x7C200600, // 004D CALL R8 3 - 0x8C240112, // 004E GETMET R9 R0 K18 - 0x882C0113, // 004F GETMBR R11 R0 K19 + 0x8C24015E, // 004E GETMET R9 R0 K94 + 0x882C017C, // 004F GETMBR R11 R0 K124 0x7C240400, // 0050 CALL R9 2 - 0x8C240514, // 0051 GETMET R9 R2 K20 - 0x582C0015, // 0052 LDCONST R11 K21 + 0x8C240511, // 0051 GETMET R9 R2 K17 + 0x582C007D, // 0052 LDCONST R11 K125 0x7C240400, // 0053 CALL R9 2 - 0x8C240516, // 0054 GETMET R9 R2 K22 + 0x8C24054A, // 0054 GETMET R9 R2 K74 0x5C2C0200, // 0055 MOVE R11 R1 0x7C240400, // 0056 CALL R9 2 - 0x8C280514, // 0057 GETMET R10 R2 K20 + 0x8C280511, // 0057 GETMET R10 R2 K17 0x60300018, // 0058 GETGBL R12 G24 - 0x58340017, // 0059 LDCONST R13 K23 + 0x5834007E, // 0059 LDCONST R13 K126 0x5C381200, // 005A MOVE R14 R9 0x5C3C1200, // 005B MOVE R15 R9 0x7C300600, // 005C CALL R12 3 0x7C280400, // 005D CALL R10 2 - 0x8C280514, // 005E GETMET R10 R2 K20 - 0x58300018, // 005F LDCONST R12 K24 + 0x8C280511, // 005E GETMET R10 R2 K17 + 0x5830007F, // 005F LDCONST R12 K127 0x7C280400, // 0060 CALL R10 2 - 0x8C280514, // 0061 GETMET R10 R2 K20 + 0x8C280511, // 0061 GETMET R10 R2 K17 0x60300018, // 0062 GETGBL R12 G24 - 0x58340019, // 0063 LDCONST R13 K25 - 0x8C380516, // 0064 GETMET R14 R2 K22 + 0x58340080, // 0063 LDCONST R13 K128 + 0x8C38054A, // 0064 GETMET R14 R2 K74 0x5C400200, // 0065 MOVE R16 R1 0x7C380400, // 0066 CALL R14 2 0x7C300400, // 0067 CALL R12 2 0x7C280400, // 0068 CALL R10 2 - 0x5828001A, // 0069 LDCONST R10 K26 + 0x5828001C, // 0069 LDCONST R10 K28 0x602C000C, // 006A GETGBL R11 G12 0x5C301000, // 006B MOVE R12 R8 0x7C2C0200, // 006C CALL R11 1 0x142C140B, // 006D LT R11 R10 R11 0x782E0040, // 006E JMPF R11 #00B0 0x942C100A, // 006F GETIDX R11 R8 R10 - 0x8C30170A, // 0070 GETMET R12 R11 K10 - 0x5838001B, // 0071 LDCONST R14 K27 - 0x583C0002, // 0072 LDCONST R15 K2 + 0x8C301743, // 0070 GETMET R12 R11 K67 + 0x58380023, // 0071 LDCONST R14 K35 + 0x583C0015, // 0072 LDCONST R15 K21 0x7C300600, // 0073 CALL R12 3 - 0x20341902, // 0074 NE R13 R12 K2 + 0x20341915, // 0074 NE R13 R12 K21 0x78360000, // 0075 JMPF R13 #0077 - 0x0032380C, // 0076 ADD R12 K28 R12 - 0x8834011D, // 0077 GETMBR R13 R0 K29 - 0x88341B1E, // 0078 GETMBR R13 R13 K30 - 0x8C341B0A, // 0079 GETMET R13 R13 K10 + 0x0032880C, // 0076 ADD R12 K68 R12 + 0x88340116, // 0077 GETMBR R13 R0 K22 + 0x88341B45, // 0078 GETMBR R13 R13 K69 + 0x8C341B43, // 0079 GETMET R13 R13 K67 0x5C3C1800, // 007A MOVE R15 R12 0x7C340400, // 007B CALL R13 2 - 0x58380002, // 007C LDCONST R14 K2 - 0x583C0002, // 007D LDCONST R15 K2 + 0x58380015, // 007C LDCONST R14 K21 + 0x583C0015, // 007D LDCONST R15 K21 0x4C400000, // 007E LDNIL R16 0x20401A10, // 007F NE R16 R13 R16 0x78420005, // 0080 JMPF R16 #0087 - 0x8C401B1F, // 0081 GETMET R16 R13 K31 + 0x8C401B46, // 0081 GETMET R16 R13 K70 0x5C481A00, // 0082 MOVE R18 R13 0x5C4C1600, // 0083 MOVE R19 R11 0x7C400600, // 0084 CALL R16 3 0x5C382000, // 0085 MOVE R14 R16 - 0x883C1B20, // 0086 GETMBR R15 R13 K32 - 0x8C400514, // 0087 GETMET R16 R2 K20 + 0x883C1B47, // 0086 GETMBR R15 R13 K71 + 0x8C400511, // 0087 GETMET R16 R2 K17 0x60480018, // 0088 GETGBL R18 G24 - 0x584C0021, // 0089 LDCONST R19 K33 + 0x584C0081, // 0089 LDCONST R19 K129 0x5C501400, // 008A MOVE R20 R10 0x7C480400, // 008B CALL R18 2 0x7C400400, // 008C CALL R16 2 - 0x8C400514, // 008D GETMET R16 R2 K20 + 0x8C400511, // 008D GETMET R16 R2 K17 0x60480018, // 008E GETGBL R18 G24 - 0x584C0022, // 008F LDCONST R19 K34 + 0x584C0082, // 008F LDCONST R19 K130 0x5C501400, // 0090 MOVE R20 R10 0x5C541400, // 0091 MOVE R21 R10 0x7C480600, // 0092 CALL R18 3 0x7C400400, // 0093 CALL R16 2 - 0x8C400123, // 0094 GETMET R16 R0 K35 + 0x8C400161, // 0094 GETMET R16 R0 K97 0x5C481800, // 0095 MOVE R18 R12 - 0x884C0113, // 0096 GETMBR R19 R0 K19 + 0x884C017C, // 0096 GETMBR R19 R0 K124 0x7C400600, // 0097 CALL R16 3 - 0x8C400514, // 0098 GETMET R16 R2 K20 - 0x58480024, // 0099 LDCONST R18 K36 + 0x8C400511, // 0098 GETMET R16 R2 K17 + 0x58480083, // 0099 LDCONST R18 K131 0x7C400400, // 009A CALL R16 2 - 0x8C400514, // 009B GETMET R16 R2 K20 + 0x8C400511, // 009B GETMET R16 R2 K17 0x60480018, // 009C GETGBL R18 G24 - 0x584C0025, // 009D LDCONST R19 K37 + 0x584C0084, // 009D LDCONST R19 K132 0x5C501400, // 009E MOVE R20 R10 0x5C541400, // 009F MOVE R21 R10 - 0x8C580516, // 00A0 GETMET R22 R2 K22 + 0x8C58054A, // 00A0 GETMET R22 R2 K74 0x5C601C00, // 00A1 MOVE R24 R14 0x7C580400, // 00A2 CALL R22 2 - 0x8C5C0516, // 00A3 GETMET R23 R2 K22 + 0x8C5C054A, // 00A3 GETMET R23 R2 K74 0x5C641E00, // 00A4 MOVE R25 R15 0x7C5C0400, // 00A5 CALL R23 2 - 0x8C600516, // 00A6 GETMET R24 R2 K22 + 0x8C60054A, // 00A6 GETMET R24 R2 K74 0x5C681E00, // 00A7 MOVE R26 R15 0x7C600400, // 00A8 CALL R24 2 0x7C480C00, // 00A9 CALL R18 6 0x7C400400, // 00AA CALL R16 2 - 0x8C400514, // 00AB GETMET R16 R2 K20 - 0x58480026, // 00AC LDCONST R18 K38 + 0x8C400511, // 00AB GETMET R16 R2 K17 + 0x58480085, // 00AC LDCONST R18 K133 0x7C400400, // 00AD CALL R16 2 - 0x00281527, // 00AE ADD R10 R10 K39 + 0x0028151E, // 00AE ADD R10 R10 K30 0x7001FFB9, // 00AF JMP #006A - 0x8C2C0514, // 00B0 GETMET R11 R2 K20 + 0x8C2C0511, // 00B0 GETMET R11 R2 K17 0x60340018, // 00B1 GETGBL R13 G24 - 0x58380021, // 00B2 LDCONST R14 K33 + 0x58380081, // 00B2 LDCONST R14 K129 0x5C3C1400, // 00B3 MOVE R15 R10 0x7C340400, // 00B4 CALL R13 2 0x7C2C0400, // 00B5 CALL R11 2 - 0x8C2C0514, // 00B6 GETMET R11 R2 K20 + 0x8C2C0511, // 00B6 GETMET R11 R2 K17 0x60340018, // 00B7 GETGBL R13 G24 - 0x58380022, // 00B8 LDCONST R14 K34 + 0x58380082, // 00B8 LDCONST R14 K130 0x5C3C1400, // 00B9 MOVE R15 R10 0x5C401400, // 00BA MOVE R16 R10 0x7C340600, // 00BB CALL R13 3 0x7C2C0400, // 00BC CALL R11 2 - 0x8C2C0123, // 00BD GETMET R11 R0 K35 - 0x58340002, // 00BE LDCONST R13 K2 - 0x88380113, // 00BF GETMBR R14 R0 K19 + 0x8C2C0161, // 00BD GETMET R11 R0 K97 + 0x58340015, // 00BE LDCONST R13 K21 + 0x8838017C, // 00BF GETMBR R14 R0 K124 0x7C2C0600, // 00C0 CALL R11 3 - 0x8C2C0514, // 00C1 GETMET R11 R2 K20 - 0x58340024, // 00C2 LDCONST R13 K36 + 0x8C2C0511, // 00C1 GETMET R11 R2 K17 + 0x58340083, // 00C2 LDCONST R13 K131 0x7C2C0400, // 00C3 CALL R11 2 - 0x8C2C0514, // 00C4 GETMET R11 R2 K20 + 0x8C2C0511, // 00C4 GETMET R11 R2 K17 0x60340018, // 00C5 GETGBL R13 G24 - 0x58380028, // 00C6 LDCONST R14 K40 + 0x58380086, // 00C6 LDCONST R14 K134 0x5C3C1400, // 00C7 MOVE R15 R10 0x5C401400, // 00C8 MOVE R16 R10 - 0x58440002, // 00C9 LDCONST R17 K2 + 0x58440015, // 00C9 LDCONST R17 K21 0x7C340800, // 00CA CALL R13 4 0x7C2C0400, // 00CB CALL R11 2 - 0x8C2C0514, // 00CC GETMET R11 R2 K20 - 0x58340026, // 00CD LDCONST R13 K38 + 0x8C2C0511, // 00CC GETMET R11 R2 K17 + 0x58340085, // 00CD LDCONST R13 K133 0x7C2C0400, // 00CE CALL R11 2 - 0x8C2C0514, // 00CF GETMET R11 R2 K20 - 0x58340029, // 00D0 LDCONST R13 K41 + 0x8C2C0511, // 00CF GETMET R11 R2 K17 + 0x58340087, // 00D0 LDCONST R13 K135 0x7C2C0400, // 00D1 CALL R11 2 0x70020007, // 00D2 JMP #00DB - 0x8C200514, // 00D3 GETMET R8 R2 K20 + 0x8C200511, // 00D3 GETMET R8 R2 K17 0x60280018, // 00D4 GETGBL R10 G24 - 0x582C002A, // 00D5 LDCONST R11 K42 - 0x8C300516, // 00D6 GETMET R12 R2 K22 + 0x582C0088, // 00D5 LDCONST R11 K136 + 0x8C30054A, // 00D6 GETMET R12 R2 K74 0x5C380200, // 00D7 MOVE R14 R1 0x7C300400, // 00D8 CALL R12 2 0x7C280400, // 00D9 CALL R10 2 @@ -1367,66 +1395,37 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ be_nested_proto( 14, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(content_send), - /* K2 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BFabrics_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3EAssociated_X20fabrics_X3A_X3C_X2Fp_X3E), - /* K3 */ be_nested_str_weak(device), - /* K4 */ be_nested_str_weak(sessions), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3ENone_X3C_X2Fb_X3E_X3C_X2Fp_X3E), - /* K7 */ be_nested_str_weak(fabrics), - /* K8 */ be_nested_str_weak(persistables), - /* K9 */ be_nested_str_weak(_X3Chr_X3E), - /* K10 */ be_nested_str_weak(fabric_label), - /* K11 */ be_nested_str_weak(_X3CNo_X20label_X3E), - /* K12 */ be_nested_str_weak(html_escape), - /* K13 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3B_X23_X25i_X20_X25s_X3C_X2Fb_X3E_X20_X28_X25s_X29_X26nbsp_X3B_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K14 */ be_nested_str_weak(get_fabric_index), - /* K15 */ be_nested_str_weak(get_admin_vendor_name), - /* K16 */ be_nested_str_weak(get_fabric_id), - /* K17 */ be_nested_str_weak(copy), - /* K18 */ be_nested_str_weak(reverse), - /* K19 */ be_nested_str_weak(get_device_id), - /* K20 */ be_nested_str_weak(Fabric_X3A_X20_X25s_X3Cbr_X3E), - /* K21 */ be_nested_str_weak(tohex), - /* K22 */ be_nested_str_weak(Device_X3A_X20_X25s_X3Cbr_X3E_X26nbsp_X3B), - /* K23 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22Are_X20you_X20sure_X3F_X22_X29_X3B_X27_X3E), - /* K24 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27del_fabric_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25i_X27_X3E), - /* K25 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27del_X27_X20class_X3D_X27button_X20bgrn_X27_X3EDelete_X20Fabric_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K26 */ be_nested_str_weak(stop_iteration), - /* K27 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_fabric_info), &be_const_str_solidified, ( &(const binstruction[97]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080311, // 0001 GETMET R2 R1 K17 + 0x58100089, // 0002 LDCONST R4 K137 0x7C080400, // 0003 CALL R2 2 0x6008000C, // 0004 GETGBL R2 G12 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x880C0704, // 0006 GETMBR R3 R3 K4 - 0x880C0704, // 0007 GETMBR R3 R3 K4 + 0x880C0116, // 0005 GETMBR R3 R0 K22 + 0x880C072B, // 0006 GETMBR R3 R3 K43 + 0x880C072B, // 0007 GETMBR R3 R3 K43 0x7C080200, // 0008 CALL R2 1 - 0x1C080505, // 0009 EQ R2 R2 K5 + 0x1C08051C, // 0009 EQ R2 R2 K28 0x780A0003, // 000A JMPF R2 #000F - 0x8C080301, // 000B GETMET R2 R1 K1 - 0x58100006, // 000C LDCONST R4 K6 + 0x8C080311, // 000B GETMET R2 R1 K17 + 0x5810008A, // 000C LDCONST R4 K138 0x7C080400, // 000D CALL R2 2 0x7002004D, // 000E JMP #005D 0x50080200, // 000F LDBOOL R2 1 0 0x600C0010, // 0010 GETGBL R3 G16 - 0x88100103, // 0011 GETMBR R4 R0 K3 - 0x88100904, // 0012 GETMBR R4 R4 K4 - 0x88100907, // 0013 GETMBR R4 R4 K7 - 0x8C100908, // 0014 GETMET R4 R4 K8 + 0x88100116, // 0011 GETMBR R4 R0 K22 + 0x8810092B, // 0012 GETMBR R4 R4 K43 + 0x8810098B, // 0013 GETMBR R4 R4 K139 + 0x8C10098C, // 0014 GETMET R4 R4 K140 0x7C100200, // 0015 CALL R4 1 0x7C0C0200, // 0016 CALL R3 1 0xA8020041, // 0017 EXBLK 0 #005A @@ -1434,73 +1433,73 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ 0x7C100000, // 0019 CALL R4 0 0x5C140400, // 001A MOVE R5 R2 0x74160002, // 001B JMPT R5 #001F - 0x8C140301, // 001C GETMET R5 R1 K1 - 0x581C0009, // 001D LDCONST R7 K9 + 0x8C140311, // 001C GETMET R5 R1 K17 + 0x581C008D, // 001D LDCONST R7 K141 0x7C140400, // 001E CALL R5 2 0x50080000, // 001F LDBOOL R2 0 0 - 0x8814090A, // 0020 GETMBR R5 R4 K10 + 0x8814098E, // 0020 GETMBR R5 R4 K142 0x5C180A00, // 0021 MOVE R6 R5 0x741A0000, // 0022 JMPT R6 #0024 - 0x5814000B, // 0023 LDCONST R5 K11 - 0x8C18030C, // 0024 GETMET R6 R1 K12 + 0x5814008F, // 0023 LDCONST R5 K143 + 0x8C18034A, // 0024 GETMET R6 R1 K74 0x5C200A00, // 0025 MOVE R8 R5 0x7C180400, // 0026 CALL R6 2 0x5C140C00, // 0027 MOVE R5 R6 - 0x8C180301, // 0028 GETMET R6 R1 K1 + 0x8C180311, // 0028 GETMET R6 R1 K17 0x60200018, // 0029 GETGBL R8 G24 - 0x5824000D, // 002A LDCONST R9 K13 - 0x8C28090E, // 002B GETMET R10 R4 K14 + 0x58240090, // 002A LDCONST R9 K144 + 0x8C280991, // 002B GETMET R10 R4 K145 0x7C280200, // 002C CALL R10 1 0x5C2C0A00, // 002D MOVE R11 R5 - 0x8C30090F, // 002E GETMET R12 R4 K15 + 0x8C300992, // 002E GETMET R12 R4 K146 0x7C300200, // 002F CALL R12 1 0x7C200800, // 0030 CALL R8 4 0x7C180400, // 0031 CALL R6 2 - 0x8C180910, // 0032 GETMET R6 R4 K16 + 0x8C180993, // 0032 GETMET R6 R4 K147 0x7C180200, // 0033 CALL R6 1 - 0x8C180D11, // 0034 GETMET R6 R6 K17 + 0x8C180D94, // 0034 GETMET R6 R6 K148 0x7C180200, // 0035 CALL R6 1 - 0x8C180D12, // 0036 GETMET R6 R6 K18 + 0x8C180D95, // 0036 GETMET R6 R6 K149 0x7C180200, // 0037 CALL R6 1 - 0x8C1C0913, // 0038 GETMET R7 R4 K19 + 0x8C1C0996, // 0038 GETMET R7 R4 K150 0x7C1C0200, // 0039 CALL R7 1 - 0x8C1C0F11, // 003A GETMET R7 R7 K17 + 0x8C1C0F94, // 003A GETMET R7 R7 K148 0x7C1C0200, // 003B CALL R7 1 - 0x8C1C0F12, // 003C GETMET R7 R7 K18 + 0x8C1C0F95, // 003C GETMET R7 R7 K149 0x7C1C0200, // 003D CALL R7 1 - 0x8C200301, // 003E GETMET R8 R1 K1 + 0x8C200311, // 003E GETMET R8 R1 K17 0x60280018, // 003F GETGBL R10 G24 - 0x582C0014, // 0040 LDCONST R11 K20 - 0x8C300D15, // 0041 GETMET R12 R6 K21 + 0x582C0097, // 0040 LDCONST R11 K151 + 0x8C300D98, // 0041 GETMET R12 R6 K152 0x7C300200, // 0042 CALL R12 1 0x7C280400, // 0043 CALL R10 2 0x7C200400, // 0044 CALL R8 2 - 0x8C200301, // 0045 GETMET R8 R1 K1 + 0x8C200311, // 0045 GETMET R8 R1 K17 0x60280018, // 0046 GETGBL R10 G24 - 0x582C0016, // 0047 LDCONST R11 K22 - 0x8C300F15, // 0048 GETMET R12 R7 K21 + 0x582C0099, // 0047 LDCONST R11 K153 + 0x8C300F98, // 0048 GETMET R12 R7 K152 0x7C300200, // 0049 CALL R12 1 0x7C280400, // 004A CALL R10 2 0x7C200400, // 004B CALL R8 2 - 0x8C200301, // 004C GETMET R8 R1 K1 - 0x58280017, // 004D LDCONST R10 K23 + 0x8C200311, // 004C GETMET R8 R1 K17 + 0x5828009A, // 004D LDCONST R10 K154 0x7C200400, // 004E CALL R8 2 - 0x8C200301, // 004F GETMET R8 R1 K1 + 0x8C200311, // 004F GETMET R8 R1 K17 0x60280018, // 0050 GETGBL R10 G24 - 0x582C0018, // 0051 LDCONST R11 K24 - 0x8C30090E, // 0052 GETMET R12 R4 K14 + 0x582C009B, // 0051 LDCONST R11 K155 + 0x8C300991, // 0052 GETMET R12 R4 K145 0x7C300200, // 0053 CALL R12 1 0x7C280400, // 0054 CALL R10 2 0x7C200400, // 0055 CALL R8 2 - 0x8C200301, // 0056 GETMET R8 R1 K1 - 0x58280019, // 0057 LDCONST R10 K25 + 0x8C200311, // 0056 GETMET R8 R1 K17 + 0x5828009C, // 0057 LDCONST R10 K156 0x7C200400, // 0058 CALL R8 2 0x7001FFBD, // 0059 JMP #0018 - 0x580C001A, // 005A LDCONST R3 K26 + 0x580C0003, // 005A LDCONST R3 K3 0xAC0C0200, // 005B CATCH R3 1 0 0xB0080000, // 005C RAISE 2 R0 R0 - 0x8C080301, // 005D GETMET R2 R1 K1 - 0x5810001B, // 005E LDCONST R4 K27 + 0x8C080311, // 005D GETMET R2 R1 K17 + 0x5810009D, // 005E LDCONST R4 K157 0x7C080400, // 005F CALL R2 2 0x80000000, // 0060 RET 0 }) @@ -1516,41 +1515,32 @@ be_local_closure(class_Matter_UI_web_get_arg, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(has_arg), - /* K2 */ be_nested_str_weak(mtc0), - /* K3 */ be_nested_str_weak(device), - /* K4 */ be_nested_str_weak(commissioning), - /* K5 */ be_nested_str_weak(stop_basic_commissioning), - /* K6 */ be_nested_str_weak(mtc1), - /* K7 */ be_nested_str_weak(start_root_basic_commissioning), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(web_get_arg), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C08039E, // 0001 GETMET R2 R1 K158 + 0x5810009F, // 0002 LDCONST R4 K159 0x7C080400, // 0003 CALL R2 2 0x780A0004, // 0004 JMPF R2 #000A - 0x88080103, // 0005 GETMBR R2 R0 K3 - 0x88080504, // 0006 GETMBR R2 R2 K4 - 0x8C080505, // 0007 GETMET R2 R2 K5 + 0x88080116, // 0005 GETMBR R2 R0 K22 + 0x88080533, // 0006 GETMBR R2 R2 K51 + 0x8C0805A0, // 0007 GETMET R2 R2 K160 0x7C080200, // 0008 CALL R2 1 0x70020006, // 0009 JMP #0011 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x58100006, // 000B LDCONST R4 K6 + 0x8C08039E, // 000A GETMET R2 R1 K158 + 0x581000A1, // 000B LDCONST R4 K161 0x7C080400, // 000C CALL R2 2 0x780A0002, // 000D JMPF R2 #0011 - 0x88080103, // 000E GETMBR R2 R0 K3 - 0x8C080507, // 000F GETMET R2 R2 K7 + 0x88080116, // 000E GETMBR R2 R0 K22 + 0x8C0805A2, // 000F GETMET R2 R2 K162 0x7C080200, // 0010 CALL R2 1 0x80000000, // 0011 RET 0 }) @@ -1566,35 +1556,18 @@ be_local_closure(class_Matter_UI_plugin_option, /* name */ be_nested_proto( 16, /* nstack */ 3, /* argc */ - 3, /* varg */ + 11, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(split), - /* K3 */ be_nested_str_weak(_X7C), - /* K4 */ be_nested_str_weak(stop_iteration), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(content_send), - /* K8 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X3E_X3C_X2Foption_X3E), - /* K9 */ be_nested_str_weak(_X2Dvirtual), - /* K10 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X20disabled_X3E_X2D_X2D_X2D_X20Virtual_X20Devices_X20_X2D_X2D_X2D_X3C_X2Foption_X3E), - /* K11 */ be_nested_str_weak(device), - /* K12 */ be_nested_str_weak(get_plugin_class_displayname), - /* K13 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X25s_X27_X25s_X3E_X25s_X3C_X2Foption_X3E), - /* K14 */ be_nested_str_weak(_X20selected), - /* K15 */ be_const_int(1), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(plugin_option), &be_const_str_solidified, ( &(const binstruction[57]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 + 0xA40E0800, // 0000 IMPORT R3 K4 + 0xA4127400, // 0001 IMPORT R4 K58 0x60140012, // 0002 GETGBL R5 G18 0x7C140000, // 0003 CALL R5 0 0x60180010, // 0004 GETGBL R6 G16 @@ -1603,51 +1576,51 @@ be_local_closure(class_Matter_UI_plugin_option, /* name */ 0xA8020007, // 0007 EXBLK 0 #0010 0x5C1C0C00, // 0008 MOVE R7 R6 0x7C1C0000, // 0009 CALL R7 0 - 0x8C200902, // 000A GETMET R8 R4 K2 + 0x8C2009A3, // 000A GETMET R8 R4 K163 0x5C280E00, // 000B MOVE R10 R7 - 0x582C0003, // 000C LDCONST R11 K3 + 0x582C00A4, // 000C LDCONST R11 K164 0x7C200600, // 000D CALL R8 3 0x00140A08, // 000E ADD R5 R5 R8 0x7001FFF7, // 000F JMP #0008 - 0x58180004, // 0010 LDCONST R6 K4 + 0x58180003, // 0010 LDCONST R6 K3 0xAC180200, // 0011 CATCH R6 1 0 0xB0080000, // 0012 RAISE 2 R0 R0 - 0x58180005, // 0013 LDCONST R6 K5 + 0x5818001C, // 0013 LDCONST R6 K28 0x601C000C, // 0014 GETGBL R7 G12 0x5C200A00, // 0015 MOVE R8 R5 0x7C1C0200, // 0016 CALL R7 1 0x141C0C07, // 0017 LT R7 R6 R7 0x781E001E, // 0018 JMPF R7 #0038 0x941C0A06, // 0019 GETIDX R7 R5 R6 - 0x1C200F06, // 001A EQ R8 R7 K6 + 0x1C200F15, // 001A EQ R8 R7 K21 0x78220003, // 001B JMPF R8 #0020 - 0x8C200707, // 001C GETMET R8 R3 K7 - 0x58280008, // 001D LDCONST R10 K8 + 0x8C200711, // 001C GETMET R8 R3 K17 + 0x582800A5, // 001D LDCONST R10 K165 0x7C200400, // 001E CALL R8 2 0x70020015, // 001F JMP #0036 - 0x1C200F09, // 0020 EQ R8 R7 K9 + 0x1C200FA6, // 0020 EQ R8 R7 K166 0x78220003, // 0021 JMPF R8 #0026 - 0x8C200707, // 0022 GETMET R8 R3 K7 - 0x5828000A, // 0023 LDCONST R10 K10 + 0x8C200711, // 0022 GETMET R8 R3 K17 + 0x582800A7, // 0023 LDCONST R10 K167 0x7C200400, // 0024 CALL R8 2 0x7002000F, // 0025 JMP #0036 - 0x8820010B, // 0026 GETMBR R8 R0 K11 - 0x8C20110C, // 0027 GETMET R8 R8 K12 + 0x88200116, // 0026 GETMBR R8 R0 K22 + 0x8C201117, // 0027 GETMET R8 R8 K23 0x5C280E00, // 0028 MOVE R10 R7 0x7C200400, // 0029 CALL R8 2 - 0x8C240707, // 002A GETMET R9 R3 K7 + 0x8C240711, // 002A GETMET R9 R3 K17 0x602C0018, // 002B GETGBL R11 G24 - 0x5830000D, // 002C LDCONST R12 K13 + 0x583000A8, // 002C LDCONST R12 K168 0x5C340E00, // 002D MOVE R13 R7 0x1C380E01, // 002E EQ R14 R7 R1 0x783A0001, // 002F JMPF R14 #0032 - 0x5838000E, // 0030 LDCONST R14 K14 + 0x583800A9, // 0030 LDCONST R14 K169 0x70020000, // 0031 JMP #0033 - 0x58380006, // 0032 LDCONST R14 K6 + 0x58380015, // 0032 LDCONST R14 K21 0x5C3C1000, // 0033 MOVE R15 R8 0x7C2C0800, // 0034 CALL R11 4 0x7C240400, // 0035 CALL R9 2 - 0x00180D0F, // 0036 ADD R6 R6 K15 + 0x00180D1E, // 0036 ADD R6 R6 K30 0x7001FFDB, // 0037 JMP #0014 0x80000000, // 0038 RET 0 }) @@ -1663,33 +1636,26 @@ be_local_closure(class_Matter_UI_web_add_config_button, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(content_send), - /* K2 */ be_nested_str_weak(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27matterc_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(_LOGO), - /* K5 */ be_nested_str_weak(_X20Configure_X20Matter_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(web_add_config_button), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080311, // 0001 GETMET R2 R1 K17 + 0x581000AA, // 0002 LDCONST R4 K170 0x7C080400, // 0003 CALL R2 2 - 0x8C080301, // 0004 GETMET R2 R1 K1 - 0xB8120600, // 0005 GETNGBL R4 K3 - 0x88100904, // 0006 GETMBR R4 R4 K4 + 0x8C080311, // 0004 GETMET R2 R1 K17 + 0xB8123400, // 0005 GETNGBL R4 K26 + 0x881009AB, // 0006 GETMBR R4 R4 K171 0x7C080400, // 0007 CALL R2 2 - 0x8C080301, // 0008 GETMET R2 R1 K1 - 0x58100005, // 0009 LDCONST R4 K5 + 0x8C080311, // 0008 GETMET R2 R1 K17 + 0x581000AC, // 0009 LDCONST R4 K172 0x7C080400, // 000A CALL R2 2 0x80000000, // 000B RET 0 }) @@ -1705,23 +1671,19 @@ be_local_closure(class_Matter_UI_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(add_driver), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x90022C01, // 0000 SETMBR R0 K22 R1 + 0xB80A3000, // 0001 GETNGBL R2 K24 + 0x8C0805AD, // 0002 GETMET R2 R2 K173 0x5C100000, // 0003 MOVE R4 R0 0x7C080400, // 0004 CALL R2 2 0x80000000, // 0005 RET 0 @@ -1738,63 +1700,35 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ be_nested_proto( 15, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(webserver), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(BRIDGE), - /* K5 */ be_nested_str_weak(http_remote), - /* K6 */ be_nested_str_weak(addr), - /* K7 */ be_nested_str_weak(contains), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(content_send), - /* K11 */ be_nested_str_weak(_X3Chr_X3E), - /* K12 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E), - /* K13 */ be_nested_str_weak(matter), - /* K14 */ be_nested_str_weak(_STYLESHEET), - /* K15 */ be_nested_str_weak(k2l), - /* K16 */ be_nested_str_weak(html_escape), - /* K17 */ be_nested_str_weak(get_plugin_remote_info), - /* K18 */ be_nested_str_weak(find), - /* K19 */ be_nested_str_weak(name), - /* K20 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27ztdm_X20htrm_X27_X3E_X3Ctd_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X27_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Ftd_X3E), - /* K21 */ be_nested_str_weak(web_last_seen), - /* K22 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27htrm_X27_X3E_X3Ctd_X20colspan_X3D_X272_X27_X3E), - /* K23 */ be_nested_str_weak(web_values), - /* K24 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E), - /* K25 */ be_nested_str_weak(stop_iteration), - /* K26 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Chr_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_bridge_status), &be_const_str_solidified, ( &(const binstruction[118]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x880403AE, // 0001 GETMBR R1 R1 K174 0x4C080000, // 0002 LDNIL R2 0x1C040202, // 0003 EQ R1 R1 R2 0x78060000, // 0004 JMPF R1 #0006 0x80000200, // 0005 RET 0 - 0xA4060400, // 0006 IMPORT R1 K2 + 0xA4060800, // 0006 IMPORT R1 K4 0x4C080000, // 0007 LDNIL R2 - 0x580C0003, // 0008 LDCONST R3 K3 + 0x580C001C, // 0008 LDCONST R3 K28 0x6010000C, // 0009 GETGBL R4 G12 - 0x88140100, // 000A GETMBR R5 R0 K0 - 0x88140B01, // 000B GETMBR R5 R5 K1 + 0x88140116, // 000A GETMBR R5 R0 K22 + 0x88140BAE, // 000B GETMBR R5 R5 K174 0x7C100200, // 000C CALL R4 1 0x14100604, // 000D LT R4 R3 R4 0x78120019, // 000E JMPF R4 #0029 - 0x88100100, // 000F GETMBR R4 R0 K0 - 0x88100901, // 0010 GETMBR R4 R4 K1 + 0x88100116, // 000F GETMBR R4 R0 K22 + 0x881009AE, // 0010 GETMBR R4 R4 K174 0x94100803, // 0011 GETIDX R4 R4 R3 - 0x88140904, // 0012 GETMBR R5 R4 K4 + 0x881409AF, // 0012 GETMBR R5 R4 K175 0x78160012, // 0013 JMPF R5 #0027 0x4C140000, // 0014 LDNIL R5 0x1C140405, // 0015 EQ R5 R2 R5 @@ -1802,9 +1736,9 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ 0x60140013, // 0017 GETGBL R5 G19 0x7C140000, // 0018 CALL R5 0 0x5C080A00, // 0019 MOVE R2 R5 - 0x88140905, // 001A GETMBR R5 R4 K5 - 0x88140B06, // 001B GETMBR R5 R5 K6 - 0x8C180507, // 001C GETMET R6 R2 K7 + 0x881409B0, // 001A GETMBR R5 R4 K176 + 0x88140BB1, // 001B GETMBR R5 R5 K177 + 0x8C180502, // 001C GETMET R6 R2 K2 0x5C200A00, // 001D MOVE R8 R5 0x7C180400, // 001E CALL R6 2 0x741A0002, // 001F JMPT R6 #0023 @@ -1812,60 +1746,60 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ 0x7C180000, // 0021 CALL R6 0 0x98080A06, // 0022 SETIDX R2 R5 R6 0x94180405, // 0023 GETIDX R6 R2 R5 - 0x8C180D08, // 0024 GETMET R6 R6 K8 + 0x8C180D22, // 0024 GETMET R6 R6 K34 0x5C200800, // 0025 MOVE R8 R4 0x7C180400, // 0026 CALL R6 2 - 0x000C0709, // 0027 ADD R3 R3 K9 + 0x000C071E, // 0027 ADD R3 R3 K30 0x7001FFDF, // 0028 JMP #0009 0x4C100000, // 0029 LDNIL R4 0x1C100404, // 002A EQ R4 R2 R4 0x78120000, // 002B JMPF R4 #002D 0x80000800, // 002C RET 0 - 0x8C10030A, // 002D GETMET R4 R1 K10 - 0x5818000B, // 002E LDCONST R6 K11 + 0x8C100311, // 002D GETMET R4 R1 K17 + 0x5818008D, // 002E LDCONST R6 K141 0x7C100400, // 002F CALL R4 2 - 0x8C10030A, // 0030 GETMET R4 R1 K10 - 0x5818000C, // 0031 LDCONST R6 K12 + 0x8C100311, // 0030 GETMET R4 R1 K17 + 0x581800B2, // 0031 LDCONST R6 K178 0x7C100400, // 0032 CALL R4 2 - 0x8C10030A, // 0033 GETMET R4 R1 K10 - 0xB81A1A00, // 0034 GETNGBL R6 K13 - 0x88180D0E, // 0035 GETMBR R6 R6 K14 + 0x8C100311, // 0033 GETMET R4 R1 K17 + 0xB81A3400, // 0034 GETNGBL R6 K26 + 0x88180DB3, // 0035 GETMBR R6 R6 K179 0x7C100400, // 0036 CALL R4 2 0x60100010, // 0037 GETGBL R4 G16 - 0x88140100, // 0038 GETMBR R5 R0 K0 - 0x8C140B0F, // 0039 GETMET R5 R5 K15 + 0x88140116, // 0038 GETMBR R5 R0 K22 + 0x8C140BB4, // 0039 GETMET R5 R5 K180 0x5C1C0400, // 003A MOVE R7 R2 0x7C140400, // 003B CALL R5 2 0x7C100200, // 003C CALL R4 1 0xA8020030, // 003D EXBLK 0 #006F 0x5C140800, // 003E MOVE R5 R4 0x7C140000, // 003F CALL R5 0 - 0x8C180310, // 0040 GETMET R6 R1 K16 + 0x8C18034A, // 0040 GETMET R6 R1 K74 0x5C200A00, // 0041 MOVE R8 R5 0x7C180400, // 0042 CALL R6 2 - 0x8C1C0310, // 0043 GETMET R7 R1 K16 - 0x88240100, // 0044 GETMBR R9 R0 K0 - 0x8C241311, // 0045 GETMET R9 R9 K17 + 0x8C1C034A, // 0043 GETMET R7 R1 K74 + 0x88240116, // 0044 GETMBR R9 R0 K22 + 0x8C241354, // 0045 GETMET R9 R9 K84 0x5C2C0A00, // 0046 MOVE R11 R5 0x7C240400, // 0047 CALL R9 2 - 0x8C241312, // 0048 GETMET R9 R9 K18 - 0x582C0013, // 0049 LDCONST R11 K19 + 0x8C241343, // 0048 GETMET R9 R9 K67 + 0x582C004B, // 0049 LDCONST R11 K75 0x5C300A00, // 004A MOVE R12 R5 0x7C240600, // 004B CALL R9 3 0x7C1C0400, // 004C CALL R7 2 - 0x8C20030A, // 004D GETMET R8 R1 K10 + 0x8C200311, // 004D GETMET R8 R1 K17 0x60280018, // 004E GETGBL R10 G24 - 0x582C0014, // 004F LDCONST R11 K20 + 0x582C00B5, // 004F LDCONST R11 K181 0x5C300C00, // 0050 MOVE R12 R6 0x5C340C00, // 0051 MOVE R13 R6 0x5C380E00, // 0052 MOVE R14 R7 0x7C280800, // 0053 CALL R10 4 0x7C200400, // 0054 CALL R8 2 0x94200405, // 0055 GETIDX R8 R2 R5 - 0x94201103, // 0056 GETIDX R8 R8 K3 - 0x88201105, // 0057 GETMBR R8 R8 K5 - 0x8C24030A, // 0058 GETMET R9 R1 K10 - 0x8C2C1115, // 0059 GETMET R11 R8 K21 + 0x9420111C, // 0056 GETIDX R8 R8 K28 + 0x882011B0, // 0057 GETMBR R8 R8 K176 + 0x8C240311, // 0058 GETMET R9 R1 K17 + 0x8C2C11B6, // 0059 GETMET R11 R8 K182 0x7C2C0200, // 005A CALL R11 1 0x7C240400, // 005B CALL R9 2 0x60240010, // 005C GETGBL R9 G16 @@ -1874,24 +1808,24 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ 0xA802000A, // 005F EXBLK 0 #006B 0x5C281200, // 0060 MOVE R10 R9 0x7C280000, // 0061 CALL R10 0 - 0x8C2C030A, // 0062 GETMET R11 R1 K10 - 0x58340016, // 0063 LDCONST R13 K22 + 0x8C2C0311, // 0062 GETMET R11 R1 K17 + 0x583400B7, // 0063 LDCONST R13 K183 0x7C2C0400, // 0064 CALL R11 2 - 0x8C2C1517, // 0065 GETMET R11 R10 K23 + 0x8C2C15B8, // 0065 GETMET R11 R10 K184 0x7C2C0200, // 0066 CALL R11 1 - 0x8C2C030A, // 0067 GETMET R11 R1 K10 - 0x58340018, // 0068 LDCONST R13 K24 + 0x8C2C0311, // 0067 GETMET R11 R1 K17 + 0x58340085, // 0068 LDCONST R13 K133 0x7C2C0400, // 0069 CALL R11 2 0x7001FFF4, // 006A JMP #0060 - 0x58240019, // 006B LDCONST R9 K25 + 0x58240003, // 006B LDCONST R9 K3 0xAC240200, // 006C CATCH R9 1 0 0xB0080000, // 006D RAISE 2 R0 R0 0x7001FFCE, // 006E JMP #003E - 0x58100019, // 006F LDCONST R4 K25 + 0x58100003, // 006F LDCONST R4 K3 0xAC100200, // 0070 CATCH R4 1 0 0xB0080000, // 0071 RAISE 2 R0 R0 - 0x8C10030A, // 0072 GETMET R4 R1 K10 - 0x5818001A, // 0073 LDCONST R6 K26 + 0x8C100311, // 0072 GETMET R4 R1 K17 + 0x581800B9, // 0073 LDCONST R6 K185 0x7C100400, // 0074 CALL R4 2 0x80000000, // 0075 RET 0 }) @@ -1907,7 +1841,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -2006,38 +1940,30 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(on), - /* K2 */ be_nested_str_weak(_X2Fmatterc), - /* K3 */ be_nested_str_weak(HTTP_GET), - /* K4 */ be_nested_str_weak(HTTP_POST), - /* K5 */ be_nested_str_weak(_X2Fmattera), - /* K6 */ be_nested_str_weak(_X2Fmatteradd), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(web_add_handler), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C0803BA, // 0001 GETMET R2 R1 K186 + 0x581000BB, // 0002 LDCONST R4 K187 0x84140000, // 0003 CLOSURE R5 P0 - 0x88180303, // 0004 GETMBR R6 R1 K3 + 0x881803BC, // 0004 GETMBR R6 R1 K188 0x7C080800, // 0005 CALL R2 4 - 0x8C080301, // 0006 GETMET R2 R1 K1 - 0x58100002, // 0007 LDCONST R4 K2 + 0x8C0803BA, // 0006 GETMET R2 R1 K186 + 0x581000BB, // 0007 LDCONST R4 K187 0x84140001, // 0008 CLOSURE R5 P1 - 0x88180304, // 0009 GETMBR R6 R1 K4 + 0x881803BD, // 0009 GETMBR R6 R1 K189 0x7C080800, // 000A CALL R2 4 - 0x8C080301, // 000B GETMET R2 R1 K1 - 0x58100005, // 000C LDCONST R4 K5 + 0x8C0803BA, // 000B GETMET R2 R1 K186 + 0x581000BE, // 000C LDCONST R4 K190 0x84140002, // 000D CLOSURE R5 P2 - 0x88180303, // 000E GETMBR R6 R1 K3 + 0x881803BC, // 000E GETMBR R6 R1 K188 0x7C080800, // 000F CALL R2 4 - 0x8C080301, // 0010 GETMET R2 R1 K1 - 0x58100006, // 0011 LDCONST R4 K6 + 0x8C0803BA, // 0010 GETMET R2 R1 K186 + 0x581000BF, // 0011 LDCONST R4 K191 0x84140003, // 0012 CLOSURE R5 P3 - 0x88180303, // 0013 GETMBR R6 R1 K3 + 0x881803BC, // 0013 GETMBR R6 R1 K188 0x7C080800, // 0014 CALL R2 4 0xA0000000, // 0015 CLOSE R0 0x80000000, // 0016 RET 0 @@ -2054,66 +1980,51 @@ be_local_closure(class_Matter_UI_show_passcode_form, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(content_send), - /* K2 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Advanced_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E_X3Cp_X3EPasscode_X3A_X3C_X2Fp_X3E), - /* K3 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X271_X27_X20max_X3D_X2799999998_X27_X20name_X3D_X27passcode_X27_X20value_X3D_X27_X25i_X27_X3E), - /* K4 */ be_nested_str_weak(device), - /* K5 */ be_nested_str_weak(root_passcode), - /* K6 */ be_nested_str_weak(_X3Cp_X3EDistinguish_X20id_X3A_X3C_X2Fp_X3E), - /* K7 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X274095_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E), - /* K8 */ be_nested_str_weak(root_discriminator), - /* K9 */ be_nested_str_weak(ipv4only), - /* K10 */ be_nested_str_weak(_X20checked), - /* K11 */ be_nested_str_weak(), - /* K12 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27ipv4_X27_X25s_X3EIPv4_X20only_X3C_X2Fp_X3E), - /* K13 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27passcode_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_passcode_form), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080311, // 0001 GETMET R2 R1 K17 + 0x581000C0, // 0002 LDCONST R4 K192 0x7C080400, // 0003 CALL R2 2 - 0x8C080301, // 0004 GETMET R2 R1 K1 + 0x8C080311, // 0004 GETMET R2 R1 K17 0x60100018, // 0005 GETGBL R4 G24 - 0x58140003, // 0006 LDCONST R5 K3 - 0x88180104, // 0007 GETMBR R6 R0 K4 - 0x88180D05, // 0008 GETMBR R6 R6 K5 + 0x581400C1, // 0006 LDCONST R5 K193 + 0x88180116, // 0007 GETMBR R6 R0 K22 + 0x88180DC2, // 0008 GETMBR R6 R6 K194 0x7C100400, // 0009 CALL R4 2 0x7C080400, // 000A CALL R2 2 - 0x8C080301, // 000B GETMET R2 R1 K1 - 0x58100006, // 000C LDCONST R4 K6 + 0x8C080311, // 000B GETMET R2 R1 K17 + 0x581000C3, // 000C LDCONST R4 K195 0x7C080400, // 000D CALL R2 2 - 0x8C080301, // 000E GETMET R2 R1 K1 + 0x8C080311, // 000E GETMET R2 R1 K17 0x60100018, // 000F GETGBL R4 G24 - 0x58140007, // 0010 LDCONST R5 K7 - 0x88180104, // 0011 GETMBR R6 R0 K4 - 0x88180D08, // 0012 GETMBR R6 R6 K8 + 0x581400C4, // 0010 LDCONST R5 K196 + 0x88180116, // 0011 GETMBR R6 R0 K22 + 0x88180DC5, // 0012 GETMBR R6 R6 K197 0x7C100400, // 0013 CALL R4 2 0x7C080400, // 0014 CALL R2 2 - 0x88080104, // 0015 GETMBR R2 R0 K4 - 0x88080509, // 0016 GETMBR R2 R2 K9 + 0x88080116, // 0015 GETMBR R2 R0 K22 + 0x880805C6, // 0016 GETMBR R2 R2 K198 0x780A0001, // 0017 JMPF R2 #001A - 0x5808000A, // 0018 LDCONST R2 K10 + 0x580800C7, // 0018 LDCONST R2 K199 0x70020000, // 0019 JMP #001B - 0x5808000B, // 001A LDCONST R2 K11 - 0x8C0C0301, // 001B GETMET R3 R1 K1 + 0x58080015, // 001A LDCONST R2 K21 + 0x8C0C0311, // 001B GETMET R3 R1 K17 0x60140018, // 001C GETGBL R5 G24 - 0x5818000C, // 001D LDCONST R6 K12 + 0x581800C8, // 001D LDCONST R6 K200 0x5C1C0400, // 001E MOVE R7 R2 0x7C140400, // 001F CALL R5 2 0x7C0C0400, // 0020 CALL R3 2 - 0x8C0C0301, // 0021 GETMET R3 R1 K1 - 0x5814000D, // 0022 LDCONST R5 K13 + 0x8C0C0311, // 0021 GETMET R3 R1 K17 + 0x581400C9, // 0022 LDCONST R5 K201 0x7C0C0400, // 0023 CALL R3 2 0x80000000, // 0024 RET 0 }) @@ -2129,7 +2040,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ be_nested_proto( 23, /* nstack */ 1, /* argc */ - 2, /* varg */ + 18, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -2914,109 +2825,86 @@ be_local_closure(class_Matter_UI_show_qrcode, /* name */ be_nested_proto( 18, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(_X20), - /* K2 */ be_nested_str_weak(_XE2_X96_X84), - /* K3 */ be_nested_str_weak(_XE2_X96_X80), - /* K4 */ be_nested_str_weak(_XE2_X96_X88), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(QRCode), - /* K7 */ be_nested_str_weak(encode_str), - /* K8 */ be_nested_str_weak(bitmap), - /* K9 */ be_nested_str_weak(size), - /* K10 */ be_nested_str_weak(content_send), - /* K11 */ be_nested_str_weak(_X3Cstyle_X3E_X2Eqr_X7Bfont_X2Dfamily_X3Amonospace_X3B_X20margin_X3A0_X3B_X20padding_X3A0_X3B_X20white_X2Dspace_X3Apre_X3B_X20font_X2Dsize_X3A18px_X3B_X20color_X3A_X23fff_X3B_X20line_X2Dheight_X3A100_X25_X3B_X7D_X3C_X2Fstyle_X3E), - /* K12 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27transform_X3Ascale_X28_X2E8_X2C1_X29_X3B_X20display_X3Ainline_X2Dblock_X3B_X27_X3E), - /* K13 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X3E), - /* K14 */ be_nested_str_weak(), - /* K15 */ be_const_int(0), - /* K16 */ be_const_int(1), - /* K17 */ be_nested_str_weak(stop_iteration), - /* K18 */ be_nested_str_weak(_X3C_X2Fdiv_X3E), - /* K19 */ be_const_int(2), - /* K20 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X20style_X3D_X27background_X2Dcolor_X3A_X23000_X3B_X27_X3E), - /* K21 */ be_nested_str_weak(_X2F_X3Cdiv_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_qrcode), &be_const_str_solidified, ( &(const binstruction[120]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x58180004, // 0004 LDCONST R6 K4 - 0xB81E0A00, // 0005 GETNGBL R7 K5 - 0x881C0F06, // 0006 GETMBR R7 R7 K6 - 0x8C1C0F07, // 0007 GETMET R7 R7 K7 + 0xA40A0800, // 0000 IMPORT R2 K4 + 0x580C00CA, // 0001 LDCONST R3 K202 + 0x581000CB, // 0002 LDCONST R4 K203 + 0x581400CC, // 0003 LDCONST R5 K204 + 0x581800CD, // 0004 LDCONST R6 K205 + 0xB81E3400, // 0005 GETNGBL R7 K26 + 0x881C0FCE, // 0006 GETMBR R7 R7 K206 + 0x8C1C0FCF, // 0007 GETMET R7 R7 K207 0x5C240200, // 0008 MOVE R9 R1 0x7C1C0400, // 0009 CALL R7 2 - 0x94200F08, // 000A GETIDX R8 R7 K8 - 0x94240F09, // 000B GETIDX R9 R7 K9 - 0x8C28050A, // 000C GETMET R10 R2 K10 - 0x5830000B, // 000D LDCONST R12 K11 + 0x94200FD0, // 000A GETIDX R8 R7 K208 + 0x94240FD1, // 000B GETIDX R9 R7 K209 + 0x8C280511, // 000C GETMET R10 R2 K17 + 0x583000D2, // 000D LDCONST R12 K210 0x7C280400, // 000E CALL R10 2 - 0x8C28050A, // 000F GETMET R10 R2 K10 - 0x5830000C, // 0010 LDCONST R12 K12 + 0x8C280511, // 000F GETMET R10 R2 K17 + 0x583000D3, // 0010 LDCONST R12 K211 0x7C280400, // 0011 CALL R10 2 - 0x5828000D, // 0012 LDCONST R10 K13 - 0x8C2C050A, // 0013 GETMET R11 R2 K10 + 0x582800D4, // 0012 LDCONST R10 K212 + 0x8C2C0511, // 0013 GETMET R11 R2 K17 0x5C341400, // 0014 MOVE R13 R10 0x7C2C0400, // 0015 CALL R11 2 - 0x5828000E, // 0016 LDCONST R10 K14 + 0x58280015, // 0016 LDCONST R10 K21 0x602C0010, // 0017 GETGBL R11 G16 - 0x00301310, // 0018 ADD R12 R9 K16 - 0x40321E0C, // 0019 CONNECT R12 K15 R12 + 0x0030131E, // 0018 ADD R12 R9 K30 + 0x4032380C, // 0019 CONNECT R12 K28 R12 0x7C2C0200, // 001A CALL R11 1 0xA8020003, // 001B EXBLK 0 #0020 0x5C301600, // 001C MOVE R12 R11 0x7C300000, // 001D CALL R12 0 0x00281404, // 001E ADD R10 R10 R4 0x7001FFFB, // 001F JMP #001C - 0x582C0011, // 0020 LDCONST R11 K17 + 0x582C0003, // 0020 LDCONST R11 K3 0xAC2C0200, // 0021 CATCH R11 1 0 0xB0080000, // 0022 RAISE 2 R0 R0 - 0x00281512, // 0023 ADD R10 R10 K18 - 0x8C2C050A, // 0024 GETMET R11 R2 K10 + 0x002815D5, // 0023 ADD R10 R10 K213 + 0x8C2C0511, // 0024 GETMET R11 R2 K17 0x5C341400, // 0025 MOVE R13 R10 0x7C2C0400, // 0026 CALL R11 2 0x602C0010, // 0027 GETGBL R11 G16 - 0x00301310, // 0028 ADD R12 R9 K16 - 0x0C301913, // 0029 DIV R12 R12 K19 - 0x04301910, // 002A SUB R12 R12 K16 - 0x40321E0C, // 002B CONNECT R12 K15 R12 + 0x0030131E, // 0028 ADD R12 R9 K30 + 0x0C3019D6, // 0029 DIV R12 R12 K214 + 0x0430191E, // 002A SUB R12 R12 K30 + 0x4032380C, // 002B CONNECT R12 K28 R12 0x7C2C0200, // 002C CALL R11 1 0xA802002E, // 002D EXBLK 0 #005D 0x5C301600, // 002E MOVE R12 R11 0x7C300000, // 002F CALL R12 0 - 0x00362806, // 0030 ADD R13 K20 R6 + 0x0037AE06, // 0030 ADD R13 K215 R6 0x5C281A00, // 0031 MOVE R10 R13 0x60340010, // 0032 GETGBL R13 G16 - 0x04381310, // 0033 SUB R14 R9 K16 - 0x403A1E0E, // 0034 CONNECT R14 K15 R14 + 0x0438131E, // 0033 SUB R14 R9 K30 + 0x403A380E, // 0034 CONNECT R14 K28 R14 0x7C340200, // 0035 CALL R13 1 0xA802001C, // 0036 EXBLK 0 #0054 0x5C381A00, // 0037 MOVE R14 R13 0x7C380000, // 0038 CALL R14 0 - 0x083C1913, // 0039 MUL R15 R12 K19 + 0x083C19D6, // 0039 MUL R15 R12 K214 0x943C100F, // 003A GETIDX R15 R8 R15 0x943C1E0E, // 003B GETIDX R15 R15 R14 - 0x1C3C1F01, // 003C EQ R15 R15 K1 - 0x08401913, // 003D MUL R16 R12 K19 - 0x00402110, // 003E ADD R16 R16 K16 + 0x1C3C1FCA, // 003C EQ R15 R15 K202 + 0x084019D6, // 003D MUL R16 R12 K214 + 0x0040211E, // 003E ADD R16 R16 K30 0x14402009, // 003F LT R16 R16 R9 0x78420005, // 0040 JMPF R16 #0047 - 0x08401913, // 0041 MUL R16 R12 K19 - 0x00402110, // 0042 ADD R16 R16 K16 + 0x084019D6, // 0041 MUL R16 R12 K214 + 0x0040211E, // 0042 ADD R16 R16 K30 0x94401010, // 0043 GETIDX R16 R8 R16 0x9440200E, // 0044 GETIDX R16 R16 R14 - 0x1C402101, // 0045 EQ R16 R16 K1 + 0x1C4021CA, // 0045 EQ R16 R16 K202 0x70020000, // 0046 JMP #0048 0x50400200, // 0047 LDBOOL R16 1 0 0x783E0004, // 0048 JMPF R15 #004E @@ -3031,40 +2919,40 @@ be_local_closure(class_Matter_UI_show_qrcode, /* name */ 0x5C440600, // 0051 MOVE R17 R3 0x00281411, // 0052 ADD R10 R10 R17 0x7001FFE2, // 0053 JMP #0037 - 0x58340011, // 0054 LDCONST R13 K17 + 0x58340003, // 0054 LDCONST R13 K3 0xAC340200, // 0055 CATCH R13 1 0 0xB0080000, // 0056 RAISE 2 R0 R0 0x00281406, // 0057 ADD R10 R10 R6 - 0x00281512, // 0058 ADD R10 R10 K18 - 0x8C34050A, // 0059 GETMET R13 R2 K10 + 0x002815D5, // 0058 ADD R10 R10 K213 + 0x8C340511, // 0059 GETMET R13 R2 K17 0x5C3C1400, // 005A MOVE R15 R10 0x7C340400, // 005B CALL R13 2 0x7001FFD0, // 005C JMP #002E - 0x582C0011, // 005D LDCONST R11 K17 + 0x582C0003, // 005D LDCONST R11 K3 0xAC2C0200, // 005E CATCH R11 1 0 0xB0080000, // 005F RAISE 2 R0 R0 - 0x102C1313, // 0060 MOD R11 R9 K19 - 0x1C2C170F, // 0061 EQ R11 R11 K15 + 0x102C13D6, // 0060 MOD R11 R9 K214 + 0x1C2C171C, // 0061 EQ R11 R11 K28 0x782E0010, // 0062 JMPF R11 #0074 - 0x58280014, // 0063 LDCONST R10 K20 + 0x582800D7, // 0063 LDCONST R10 K215 0x602C0010, // 0064 GETGBL R11 G16 - 0x00301310, // 0065 ADD R12 R9 K16 - 0x40321E0C, // 0066 CONNECT R12 K15 R12 + 0x0030131E, // 0065 ADD R12 R9 K30 + 0x4032380C, // 0066 CONNECT R12 K28 R12 0x7C2C0200, // 0067 CALL R11 1 0xA8020003, // 0068 EXBLK 0 #006D 0x5C301600, // 0069 MOVE R12 R11 0x7C300000, // 006A CALL R12 0 0x00281405, // 006B ADD R10 R10 R5 0x7001FFFB, // 006C JMP #0069 - 0x582C0011, // 006D LDCONST R11 K17 + 0x582C0003, // 006D LDCONST R11 K3 0xAC2C0200, // 006E CATCH R11 1 0 0xB0080000, // 006F RAISE 2 R0 R0 - 0x00281515, // 0070 ADD R10 R10 K21 - 0x8C2C050A, // 0071 GETMET R11 R2 K10 + 0x002815D8, // 0070 ADD R10 R10 K216 + 0x8C2C0511, // 0071 GETMET R11 R2 K17 0x5C341400, // 0072 MOVE R13 R10 0x7C2C0400, // 0073 CALL R11 2 - 0x8C2C050A, // 0074 GETMET R11 R2 K10 - 0x58340012, // 0075 LDCONST R13 K18 + 0x8C2C0511, // 0074 GETMET R11 R2 K17 + 0x583400D5, // 0075 LDCONST R13 K213 0x7C2C0400, // 0076 CALL R11 2 0x80000000, // 0077 RET 0 }) @@ -3080,89 +2968,71 @@ be_local_closure(class_Matter_UI_show_enable, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(matter_enabled), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X20style_X3D_X27width_X3A320px_X3B_X27_X3ECheck_X20the_X20_X3Ca_X20href_X3D_X27https_X3A_X2F_X2Ftasmota_X2Egithub_X2Eio_X2Fdocs_X2FMatter_X2F_X27_X20target_X3D_X27_blank_X27_X3EMatter_X20documentation_X3C_X2Fa_X3E_X2E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E), - /* K4 */ be_nested_str_weak(checked), - /* K5 */ be_nested_str_weak(), - /* K6 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27menable_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27menable_X27_X20_X25s_X3E), - /* K7 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27menable_X27_X3E_X3Cb_X3EMatter_X20enable_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E), - /* K8 */ be_nested_str_weak(device), - /* K9 */ be_nested_str_weak(commissioning), - /* K10 */ be_nested_str_weak(commissioning_open), - /* K11 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27comm_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27comm_X27_X20_X25s_X3E), - /* K12 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27comm_X27_X3E_X3Cb_X3ECommissioning_X20open_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E), - /* K13 */ be_nested_str_weak(disable_bridge_mode), - /* K14 */ be_nested_str_weak(_X20checked), - /* K15 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27nobridge_X27_X25s_X3E_X3Cb_X3EForce_X20Static_X20endpoints_X3C_X2Fb_X3E_X20_X28non_X2Dbridge_X29_X3C_X2Fp_X3E), - /* K16 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_enable), &be_const_str_solidified, ( &(const binstruction[57]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x88080109, // 0001 GETMBR R2 R0 K9 + 0x8C0C0311, // 0002 GETMET R3 R1 K17 + 0x581400D9, // 0003 LDCONST R5 K217 0x7C0C0400, // 0004 CALL R3 2 - 0x8C0C0101, // 0005 GETMET R3 R0 K1 + 0x8C0C0109, // 0005 GETMET R3 R0 K9 0x7C0C0200, // 0006 CALL R3 1 0x780E0001, // 0007 JMPF R3 #000A - 0x580C0004, // 0008 LDCONST R3 K4 + 0x580C00DA, // 0008 LDCONST R3 K218 0x70020000, // 0009 JMP #000B - 0x580C0005, // 000A LDCONST R3 K5 - 0x8C100302, // 000B GETMET R4 R1 K2 + 0x580C0015, // 000A LDCONST R3 K21 + 0x8C100311, // 000B GETMET R4 R1 K17 0x60180018, // 000C GETGBL R6 G24 - 0x581C0006, // 000D LDCONST R7 K6 + 0x581C00DB, // 000D LDCONST R7 K219 0x5C200600, // 000E MOVE R8 R3 0x7C180400, // 000F CALL R6 2 0x7C100400, // 0010 CALL R4 2 - 0x8C100302, // 0011 GETMET R4 R1 K2 - 0x58180007, // 0012 LDCONST R6 K7 + 0x8C100311, // 0011 GETMET R4 R1 K17 + 0x581800DC, // 0012 LDCONST R6 K220 0x7C100400, // 0013 CALL R4 2 - 0x8C100101, // 0014 GETMET R4 R0 K1 + 0x8C100109, // 0014 GETMET R4 R0 K9 0x7C100200, // 0015 CALL R4 1 0x7812001D, // 0016 JMPF R4 #0035 - 0x88100108, // 0017 GETMBR R4 R0 K8 - 0x88100909, // 0018 GETMBR R4 R4 K9 - 0x8810090A, // 0019 GETMBR R4 R4 K10 + 0x88100116, // 0017 GETMBR R4 R0 K22 + 0x88100933, // 0018 GETMBR R4 R4 K51 + 0x88100963, // 0019 GETMBR R4 R4 K99 0x4C140000, // 001A LDNIL R5 0x20100805, // 001B NE R4 R4 R5 0x78120001, // 001C JMPF R4 #001F - 0x58100004, // 001D LDCONST R4 K4 + 0x581000DA, // 001D LDCONST R4 K218 0x70020000, // 001E JMP #0020 - 0x58100005, // 001F LDCONST R4 K5 - 0x8C140302, // 0020 GETMET R5 R1 K2 + 0x58100015, // 001F LDCONST R4 K21 + 0x8C140311, // 0020 GETMET R5 R1 K17 0x601C0018, // 0021 GETGBL R7 G24 - 0x5820000B, // 0022 LDCONST R8 K11 + 0x582000DD, // 0022 LDCONST R8 K221 0x5C240800, // 0023 MOVE R9 R4 0x7C1C0400, // 0024 CALL R7 2 0x7C140400, // 0025 CALL R5 2 - 0x8C140302, // 0026 GETMET R5 R1 K2 - 0x581C000C, // 0027 LDCONST R7 K12 + 0x8C140311, // 0026 GETMET R5 R1 K17 + 0x581C00DE, // 0027 LDCONST R7 K222 0x7C140400, // 0028 CALL R5 2 - 0x88140108, // 0029 GETMBR R5 R0 K8 - 0x88140B0D, // 002A GETMBR R5 R5 K13 + 0x88140116, // 0029 GETMBR R5 R0 K22 + 0x88140BDF, // 002A GETMBR R5 R5 K223 0x78160001, // 002B JMPF R5 #002E - 0x5814000E, // 002C LDCONST R5 K14 + 0x581400C7, // 002C LDCONST R5 K199 0x70020000, // 002D JMP #002F - 0x58140005, // 002E LDCONST R5 K5 - 0x8C180302, // 002F GETMET R6 R1 K2 + 0x58140015, // 002E LDCONST R5 K21 + 0x8C180311, // 002F GETMET R6 R1 K17 0x60200018, // 0030 GETGBL R8 G24 - 0x5824000F, // 0031 LDCONST R9 K15 + 0x582400E0, // 0031 LDCONST R9 K224 0x5C280A00, // 0032 MOVE R10 R5 0x7C200400, // 0033 CALL R8 2 0x7C180400, // 0034 CALL R6 2 - 0x8C100302, // 0035 GETMET R4 R1 K2 - 0x58180010, // 0036 LDCONST R6 K16 + 0x8C100311, // 0035 GETMET R4 R1 K17 + 0x581800E1, // 0036 LDCONST R6 K225 0x7C100400, // 0037 CALL R4 2 0x80000000, // 0038 RET 0 }) @@ -3178,37 +3048,19 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */ be_nested_proto( 16, /* nstack */ 2, /* argc */ - 3, /* varg */ + 11, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(json), - /* K2 */ be_nested_str_weak(string), - /* K3 */ be_nested_str_weak(split), - /* K4 */ be_nested_str_weak(_X7C), - /* K5 */ be_nested_str_weak(stop_iteration), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(plugins_classes), - /* K9 */ be_nested_str_weak(find), - /* K10 */ be_nested_str_weak(ARG_HINT), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(content_send), - /* K13 */ be_nested_str_weak(_X3Cscript_X20type_X3D_X27text_X2Fjavascript_X27_X3Evar_X20hm_X3D_X25s_X3Bvar_X20hl_X3D_X25s_X3B_X3C_X2Fscript_X3E), - /* K14 */ be_nested_str_weak(dump), - /* K15 */ be_nested_str_weak(matter), - /* K16 */ be_nested_str_weak(_ADD_ENDPOINT_JS), - }), + &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(show_plugins_hints_js), &be_const_str_solidified, ( &(const binstruction[79]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0xA4120400, // 0002 IMPORT R4 K2 + 0xA40A0800, // 0000 IMPORT R2 K4 + 0xA40EDE00, // 0001 IMPORT R3 K111 + 0xA4127400, // 0002 IMPORT R4 K58 0x60140012, // 0003 GETGBL R5 G18 0x7C140000, // 0004 CALL R5 0 0x60180010, // 0005 GETGBL R6 G16 @@ -3217,13 +3069,13 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */ 0xA8020007, // 0008 EXBLK 0 #0011 0x5C1C0C00, // 0009 MOVE R7 R6 0x7C1C0000, // 000A CALL R7 0 - 0x8C200903, // 000B GETMET R8 R4 K3 + 0x8C2009A3, // 000B GETMET R8 R4 K163 0x5C280E00, // 000C MOVE R10 R7 - 0x582C0004, // 000D LDCONST R11 K4 + 0x582C00A4, // 000D LDCONST R11 K164 0x7C200600, // 000E CALL R8 3 0x00140A08, // 000F ADD R5 R5 R8 0x7001FFF7, // 0010 JMP #0009 - 0x58180005, // 0011 LDCONST R6 K5 + 0x58180003, // 0011 LDCONST R6 K3 0xAC180200, // 0012 CATCH R6 1 0 0xB0080000, // 0013 RAISE 2 R0 R0 0x60180013, // 0014 GETGBL R6 G19 @@ -3236,22 +3088,22 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */ 0xA802001F, // 001B EXBLK 0 #003C 0x5C241000, // 001C MOVE R9 R8 0x7C240000, // 001D CALL R9 0 - 0x1C281306, // 001E EQ R10 R9 K6 + 0x1C281315, // 001E EQ R10 R9 K21 0x782A0000, // 001F JMPF R10 #0021 0x7001FFFA, // 0020 JMP #001C - 0x88280107, // 0021 GETMBR R10 R0 K7 - 0x88281508, // 0022 GETMBR R10 R10 K8 - 0x8C281509, // 0023 GETMET R10 R10 K9 + 0x88280116, // 0021 GETMBR R10 R0 K22 + 0x88281545, // 0022 GETMBR R10 R10 K69 + 0x8C281543, // 0023 GETMET R10 R10 K67 0x5C301200, // 0024 MOVE R12 R9 0x7C280400, // 0025 CALL R10 2 0x4C2C0000, // 0026 LDNIL R11 0x202C140B, // 0027 NE R11 R10 R11 0x782E0011, // 0028 JMPF R11 #003B - 0x882C150A, // 0029 GETMBR R11 R10 K10 + 0x882C1547, // 0029 GETMBR R11 R10 K71 0x4C300000, // 002A LDNIL R12 0x2030160C, // 002B NE R12 R11 R12 0x7832000D, // 002C JMPF R12 #003B - 0x8C300F09, // 002D GETMET R12 R7 K9 + 0x8C300F43, // 002D GETMET R12 R7 K67 0x5C381600, // 002E MOVE R14 R11 0x7C300400, // 002F CALL R12 2 0x4C340000, // 0030 LDNIL R13 @@ -3261,28 +3113,28 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */ 0x5C380E00, // 0034 MOVE R14 R7 0x7C340200, // 0035 CALL R13 1 0x5C301A00, // 0036 MOVE R12 R13 - 0x8C340F0B, // 0037 GETMET R13 R7 K11 + 0x8C340F22, // 0037 GETMET R13 R7 K34 0x5C3C1600, // 0038 MOVE R15 R11 0x7C340400, // 0039 CALL R13 2 0x9818120C, // 003A SETIDX R6 R9 R12 0x7001FFDF, // 003B JMP #001C - 0x58200005, // 003C LDCONST R8 K5 + 0x58200003, // 003C LDCONST R8 K3 0xAC200200, // 003D CATCH R8 1 0 0xB0080000, // 003E RAISE 2 R0 R0 - 0x8C20050C, // 003F GETMET R8 R2 K12 + 0x8C200511, // 003F GETMET R8 R2 K17 0x60280018, // 0040 GETGBL R10 G24 - 0x582C000D, // 0041 LDCONST R11 K13 - 0x8C30070E, // 0042 GETMET R12 R3 K14 + 0x582C00E2, // 0041 LDCONST R11 K226 + 0x8C3007E3, // 0042 GETMET R12 R3 K227 0x5C380C00, // 0043 MOVE R14 R6 0x7C300400, // 0044 CALL R12 2 - 0x8C34070E, // 0045 GETMET R13 R3 K14 + 0x8C3407E3, // 0045 GETMET R13 R3 K227 0x5C3C0E00, // 0046 MOVE R15 R7 0x7C340400, // 0047 CALL R13 2 0x7C280600, // 0048 CALL R10 3 0x7C200400, // 0049 CALL R8 2 - 0x8C20050C, // 004A GETMET R8 R2 K12 - 0xB82A1E00, // 004B GETNGBL R10 K15 - 0x88281510, // 004C GETMBR R10 R10 K16 + 0x8C200511, // 004A GETMET R8 R2 K17 + 0xB82A3400, // 004B GETNGBL R10 K26 + 0x882815E4, // 004C GETMBR R10 R10 K228 0x7C200400, // 004D CALL R8 2 0x80000000, // 004E RET 0 }) From 010ca3462235a11f9888b159cfc3150c87ab1111 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 1 Aug 2024 22:37:37 +0200 Subject: [PATCH 222/252] Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887) * Berry `energy` module support for 8 phases and move to pseudo-arrays * add size() --- CHANGELOG.md | 1 + lib/libesp32/berry_tasmota/src/be_energylib.c | 10 + .../berry_tasmota/src/embedded/energy.be | 120 +++- .../src/solidify/solidified_energy.h | 539 ++++++++++++++++++ .../xdrv_52_3_berry_energy.ino | 121 ++-- 5 files changed, 744 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 872c93e08..e33eac30e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. - Berry add `solidify.nocompact()` and reduce size of Matter UI ### Breaking Changed +- Berry `energy` module support for 8 phases and move to pseudo-arrays ### Changed - Berry consolidated constants for solidified classes reduces Flash size (#2185) diff --git a/lib/libesp32/berry_tasmota/src/be_energylib.c b/lib/libesp32/berry_tasmota/src/be_energylib.c index b21259058..854f41d60 100644 --- a/lib/libesp32/berry_tasmota/src/be_energylib.c +++ b/lib/libesp32/berry_tasmota/src/be_energylib.c @@ -9,6 +9,9 @@ #ifdef USE_ENERGY_SENSOR +// unless we get it from an include +#define ENERGY_MAX_PHASES 8 // Support max eight phases/channels + extern struct ENERGY Energy; extern int module_energy_update_total(bvm *vm); @@ -21,10 +24,17 @@ module energy (scope: global) { init, closure(module_energy_init_closure) _ptr, comptr(&Energy) _deref, closure(module_energy__deref_closure) + _phases, int(ENERGY_MAX_PHASES) + + _phases_float, class(be_class_energy_phases_float) + _phases_int32, class(be_class_energy_phases_int32) + _phases_uint8, class(be_class_energy_phases_uint8) + _phases_uint16, class(be_class_energy_phases_uint16) read, closure(module_energy_read_closure) member, closure(module_energy_member_closure) setmember, closure(module_energy_setmember_closure) + tomap, closure(module_energy_tomap_closure) update_total, func(module_energy_update_total) } diff --git a/lib/libesp32/berry_tasmota/src/embedded/energy.be b/lib/libesp32/berry_tasmota/src/embedded/energy.be index 2f5bb2e1d..9a21db917 100644 --- a/lib/libesp32/berry_tasmota/src/embedded/energy.be +++ b/lib/libesp32/berry_tasmota/src/embedded/energy.be @@ -2,8 +2,117 @@ _energy = nil # avoid compilation error energy_struct = nil +#@ solidify:bytes_array +# implement an array of simple types +class bytes_array : bytes + var item_type # item_type number for each element + var sz # size (number of items in the array) + var item_size # size in bytes of each element (inferred from item_type) + + def init(ptr, item_type, sz) + self.item_type = item_type + self.sz = sz + var item_size # size in bytes of each element + if (item_type >= -4) && (item_type <= 4) && (item_type != 0) + item_size = (item_type > 0) ? item_type : - item_type + elif (item_type == 5) + item_size = 4 + else + raise "value error", "unsupported item_type number" + end + self.item_size = item_size + super(self).init(ptr, self.item_size * self.sz) + end + + def item(idx) + if (idx < 0) idx += self.sz end + if (idx < 0) || (idx >= self.sz) + raise "index_error", "list index out of range" + end + if (self.item_type == 5) + return self.getfloat(idx * self.item_size) + else + return self.get(idx * self.item_size, self.item_type) + end + end + + def setitem(idx, v) + if (idx < 0) idx += self.sz end + if (idx < 0) || (idx >= self.sz) + raise "index_error", "list assignment index out of range" + end + if (self.item_type == 5) + return self.setfloat(idx * self.item_size, v) + else + return self.set(idx * self.item_size, self.item_type, v) + end + end + + def size() + return self.sz + end + + def tostring() + var ret = '[' + var idx = 0 + while (idx < self.sz) + if idx > 0 + ret += ',' + end + # + if (self.item_type == 5) + ret += str(self.getfloat(idx * self.item_size)) + else + ret += str(self.get(idx * self.item_size, self.item_type)) + end + + idx += 1 + end + ret += ']' + return ret + end +end + +#@ solidify:energy_phases_float +class energy_phases_float : bytes_array + def init(ptr) + import energy + super(self).init(ptr, 5 #-type float-#, energy._phases) + end +end + + +#@ solidify:energy_phases_int32 +class energy_phases_int32 : bytes_array + def init(ptr) + import energy + super(self).init(ptr, 4 #-type int32-#, energy._phases) + end +end + +#@ solidify:energy_phases_uint8 +class energy_phases_uint8 : bytes_array + def init(ptr) + import energy + super(self).init(ptr, 1 #-type int32-#, energy._phases) + end +end + +#@ solidify:energy_phases_uint16 +class energy_phases_uint16 : bytes_array + def init(ptr) + import energy + super(self).init(ptr, 2 #-type uint16-#, energy._phases) + end +end + energy = module("energy") -energy._ptr = nil +energy._ptr = nil # will be replaced by C code +energy._phases = 8 # will be replaced by C code +energy._phases_float = energy_phases_float +energy._phases_int32 = energy_phases_int32 +energy._phases_uint8 = energy_phases_uint8 +energy._phases_uint16 = energy_phases_uint16 def init(m) global._energy = nil @@ -46,8 +155,17 @@ def setmember(k, v) end energy.setmember = setmember +def tomap() + energy._deref() + if global._energy + return _energy.tomap() + end +end +energy.tomap = tomap + #@ solidify:energy.init #@ solidify:energy._deref #@ solidify:energy.read #@ solidify:energy.member #@ solidify:energy.setmember +#@ solidify:energy.tomap diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h index 5682971af..d1765fd6c 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h @@ -3,6 +3,505 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'bytes_array' ktab size: 18, total: 34 (saved 128 bytes) +static const bvalue be_ktab_class_bytes_array[18] = { + /* K0 */ be_nested_str(item_type), + /* K1 */ be_nested_str(sz), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str(value_X20error), + /* K4 */ be_nested_str(unsupported_X20item_type_X20number), + /* K5 */ be_nested_str(item_size), + /* K6 */ be_nested_str(init), + /* K7 */ be_nested_str(_X5B), + /* K8 */ be_nested_str(_X2C), + /* K9 */ be_nested_str(getfloat), + /* K10 */ be_nested_str(get), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str(_X5D), + /* K13 */ be_nested_str(index_error), + /* K14 */ be_nested_str(list_X20index_X20out_X20of_X20range), + /* K15 */ be_nested_str(list_X20assignment_X20index_X20out_X20of_X20range), + /* K16 */ be_nested_str(setfloat), + /* K17 */ be_nested_str(set), +}; + + +extern const bclass be_class_bytes_array; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_bytes_array_init, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_bytes_array, /* shared constants */ + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x90020002, // 0000 SETMBR R0 K0 R2 + 0x90020203, // 0001 SETMBR R0 K1 R3 + 0x4C100000, // 0002 LDNIL R4 + 0x5415FFFB, // 0003 LDINT R5 -4 + 0x28140405, // 0004 GE R5 R2 R5 + 0x7816000B, // 0005 JMPF R5 #0012 + 0x54160003, // 0006 LDINT R5 4 + 0x18140405, // 0007 LE R5 R2 R5 + 0x78160008, // 0008 JMPF R5 #0012 + 0x20140502, // 0009 NE R5 R2 K2 + 0x78160006, // 000A JMPF R5 #0012 + 0x24140502, // 000B GT R5 R2 K2 + 0x78160001, // 000C JMPF R5 #000F + 0x5C140400, // 000D MOVE R5 R2 + 0x70020000, // 000E JMP #0010 + 0x44140400, // 000F NEG R5 R2 + 0x5C100A00, // 0010 MOVE R4 R5 + 0x70020005, // 0011 JMP #0018 + 0x54160004, // 0012 LDINT R5 5 + 0x1C140405, // 0013 EQ R5 R2 R5 + 0x78160001, // 0014 JMPF R5 #0017 + 0x54120003, // 0015 LDINT R4 4 + 0x70020000, // 0016 JMP #0018 + 0xB0060704, // 0017 RAISE 1 K3 K4 + 0x90020A04, // 0018 SETMBR R0 K5 R4 + 0x60140003, // 0019 GETGBL R5 G3 + 0x5C180000, // 001A MOVE R6 R0 + 0x7C140200, // 001B CALL R5 1 + 0x8C140B06, // 001C GETMET R5 R5 K6 + 0x5C1C0200, // 001D MOVE R7 R1 + 0x88200105, // 001E GETMBR R8 R0 K5 + 0x88240101, // 001F GETMBR R9 R0 K1 + 0x08201009, // 0020 MUL R8 R8 R9 + 0x7C140600, // 0021 CALL R5 3 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: size +********************************************************************/ +be_local_closure(class_bytes_array_size, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_bytes_array, /* shared constants */ + &be_const_str_size, + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_bytes_array_tostring, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_bytes_array, /* shared constants */ + &be_const_str_tostring, + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x58040007, // 0000 LDCONST R1 K7 + 0x58080002, // 0001 LDCONST R2 K2 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x140C0403, // 0003 LT R3 R2 R3 + 0x780E0018, // 0004 JMPF R3 #001E + 0x240C0502, // 0005 GT R3 R2 K2 + 0x780E0000, // 0006 JMPF R3 #0008 + 0x00040308, // 0007 ADD R1 R1 K8 + 0x880C0100, // 0008 GETMBR R3 R0 K0 + 0x54120004, // 0009 LDINT R4 5 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x780E0007, // 000B JMPF R3 #0014 + 0x600C0008, // 000C GETGBL R3 G8 + 0x8C100109, // 000D GETMET R4 R0 K9 + 0x88180105, // 000E GETMBR R6 R0 K5 + 0x08180406, // 000F MUL R6 R2 R6 + 0x7C100400, // 0010 CALL R4 2 + 0x7C0C0200, // 0011 CALL R3 1 + 0x00040203, // 0012 ADD R1 R1 R3 + 0x70020007, // 0013 JMP #001C + 0x600C0008, // 0014 GETGBL R3 G8 + 0x8C10010A, // 0015 GETMET R4 R0 K10 + 0x88180105, // 0016 GETMBR R6 R0 K5 + 0x08180406, // 0017 MUL R6 R2 R6 + 0x881C0100, // 0018 GETMBR R7 R0 K0 + 0x7C100600, // 0019 CALL R4 3 + 0x7C0C0200, // 001A CALL R3 1 + 0x00040203, // 001B ADD R1 R1 R3 + 0x0008050B, // 001C ADD R2 R2 K11 + 0x7001FFE3, // 001D JMP #0002 + 0x0004030C, // 001E ADD R1 R1 K12 + 0x80040200, // 001F RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: item +********************************************************************/ +be_local_closure(class_bytes_array_item, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_bytes_array, /* shared constants */ + &be_const_str_item, + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x14080302, // 0000 LT R2 R1 K2 + 0x780A0001, // 0001 JMPF R2 #0004 + 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x14080302, // 0004 LT R2 R1 K2 + 0x740A0002, // 0005 JMPT R2 #0009 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x28080202, // 0007 GE R2 R1 R2 + 0x780A0000, // 0008 JMPF R2 #000A + 0xB0061B0E, // 0009 RAISE 1 K13 K14 + 0x88080100, // 000A GETMBR R2 R0 K0 + 0x540E0004, // 000B LDINT R3 5 + 0x1C080403, // 000C EQ R2 R2 R3 + 0x780A0005, // 000D JMPF R2 #0014 + 0x8C080109, // 000E GETMET R2 R0 K9 + 0x88100105, // 000F GETMBR R4 R0 K5 + 0x08100204, // 0010 MUL R4 R1 R4 + 0x7C080400, // 0011 CALL R2 2 + 0x80040400, // 0012 RET 1 R2 + 0x70020005, // 0013 JMP #001A + 0x8C08010A, // 0014 GETMET R2 R0 K10 + 0x88100105, // 0015 GETMBR R4 R0 K5 + 0x08100204, // 0016 MUL R4 R1 R4 + 0x88140100, // 0017 GETMBR R5 R0 K0 + 0x7C080600, // 0018 CALL R2 3 + 0x80040400, // 0019 RET 1 R2 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: setitem +********************************************************************/ +be_local_closure(class_bytes_array_setitem, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_bytes_array, /* shared constants */ + &be_const_str_setitem, + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x140C0302, // 0000 LT R3 R1 K2 + 0x780E0001, // 0001 JMPF R3 #0004 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x00040203, // 0003 ADD R1 R1 R3 + 0x140C0302, // 0004 LT R3 R1 K2 + 0x740E0002, // 0005 JMPT R3 #0009 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x280C0203, // 0007 GE R3 R1 R3 + 0x780E0000, // 0008 JMPF R3 #000A + 0xB0061B0F, // 0009 RAISE 1 K13 K15 + 0x880C0100, // 000A GETMBR R3 R0 K0 + 0x54120004, // 000B LDINT R4 5 + 0x1C0C0604, // 000C EQ R3 R3 R4 + 0x780E0006, // 000D JMPF R3 #0015 + 0x8C0C0110, // 000E GETMET R3 R0 K16 + 0x88140105, // 000F GETMBR R5 R0 K5 + 0x08140205, // 0010 MUL R5 R1 R5 + 0x5C180400, // 0011 MOVE R6 R2 + 0x7C0C0600, // 0012 CALL R3 3 + 0x80040600, // 0013 RET 1 R3 + 0x70020006, // 0014 JMP #001C + 0x8C0C0111, // 0015 GETMET R3 R0 K17 + 0x88140105, // 0016 GETMBR R5 R0 K5 + 0x08140205, // 0017 MUL R5 R1 R5 + 0x88180100, // 0018 GETMBR R6 R0 K0 + 0x5C1C0400, // 0019 MOVE R7 R2 + 0x7C0C0800, // 001A CALL R3 4 + 0x80040600, // 001B RET 1 R3 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: bytes_array +********************************************************************/ +extern const bclass be_class_bytes; +be_local_class(bytes_array, + 3, + &be_class_bytes, + be_nested_map(8, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key(sz, -1), be_const_var(1) }, + { be_const_key(setitem, -1), be_const_closure(class_bytes_array_setitem_closure) }, + { be_const_key(item_size, -1), be_const_var(2) }, + { be_const_key(init, 7), be_const_closure(class_bytes_array_init_closure) }, + { be_const_key(size, 1), be_const_closure(class_bytes_array_size_closure) }, + { be_const_key(tostring, -1), be_const_closure(class_bytes_array_tostring_closure) }, + { be_const_key(item, -1), be_const_closure(class_bytes_array_item_closure) }, + { be_const_key(item_type, -1), be_const_var(0) }, + })), + (bstring*) &be_const_str_bytes_array +); + +extern const bclass be_class_energy_phases_float; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_energy_phases_float_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str(energy), + /* K1 */ be_nested_str(init), + /* K2 */ be_nested_str(_phases), + }), + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0003, // 0001 GETGBL R3 G3 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0701, // 0004 GETMET R3 R3 K1 + 0x5C140200, // 0005 MOVE R5 R1 + 0x541A0004, // 0006 LDINT R6 5 + 0x881C0502, // 0007 GETMBR R7 R2 K2 + 0x7C0C0800, // 0008 CALL R3 4 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: energy_phases_float +********************************************************************/ +extern const bclass be_class_bytes_array; +be_local_class(energy_phases_float, + 0, + &be_class_bytes_array, + be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key(init, -1), be_const_closure(class_energy_phases_float_init_closure) }, + })), + (bstring*) &be_const_str_energy_phases_float +); + +extern const bclass be_class_energy_phases_int32; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_energy_phases_int32_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str(energy), + /* K1 */ be_nested_str(init), + /* K2 */ be_nested_str(_phases), + }), + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0003, // 0001 GETGBL R3 G3 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0701, // 0004 GETMET R3 R3 K1 + 0x5C140200, // 0005 MOVE R5 R1 + 0x541A0003, // 0006 LDINT R6 4 + 0x881C0502, // 0007 GETMBR R7 R2 K2 + 0x7C0C0800, // 0008 CALL R3 4 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: energy_phases_int32 +********************************************************************/ +extern const bclass be_class_bytes_array; +be_local_class(energy_phases_int32, + 0, + &be_class_bytes_array, + be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key(init, -1), be_const_closure(class_energy_phases_int32_init_closure) }, + })), + (bstring*) &be_const_str_energy_phases_int32 +); + +extern const bclass be_class_energy_phases_uint8; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_energy_phases_uint8_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str(energy), + /* K1 */ be_nested_str(init), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str(_phases), + }), + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0003, // 0001 GETGBL R3 G3 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0701, // 0004 GETMET R3 R3 K1 + 0x5C140200, // 0005 MOVE R5 R1 + 0x58180002, // 0006 LDCONST R6 K2 + 0x881C0503, // 0007 GETMBR R7 R2 K3 + 0x7C0C0800, // 0008 CALL R3 4 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: energy_phases_uint8 +********************************************************************/ +extern const bclass be_class_bytes_array; +be_local_class(energy_phases_uint8, + 0, + &be_class_bytes_array, + be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key(init, -1), be_const_closure(class_energy_phases_uint8_init_closure) }, + })), + (bstring*) &be_const_str_energy_phases_uint8 +); + +extern const bclass be_class_energy_phases_uint16; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_energy_phases_uint16_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str(energy), + /* K1 */ be_nested_str(init), + /* K2 */ be_const_int(2), + /* K3 */ be_nested_str(_phases), + }), + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0003, // 0001 GETGBL R3 G3 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x8C0C0701, // 0004 GETMET R3 R3 K1 + 0x5C140200, // 0005 MOVE R5 R1 + 0x58180002, // 0006 LDCONST R6 K2 + 0x881C0503, // 0007 GETMBR R7 R2 K3 + 0x7C0C0800, // 0008 CALL R3 4 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: energy_phases_uint16 +********************************************************************/ +extern const bclass be_class_bytes_array; +be_local_class(energy_phases_uint16, + 0, + &be_class_bytes_array, + be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key(init, -1), be_const_closure(class_energy_phases_uint16_init_closure) }, + })), + (bstring*) &be_const_str_energy_phases_uint16 +); /******************************************************************** ** Solidified function: init @@ -206,5 +705,45 @@ be_local_closure(module_energy_setmember, /* name */ ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: tomap +********************************************************************/ +be_local_closure(module_energy_tomap, /* name */ + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str(energy), + /* K1 */ be_nested_str(_deref), + /* K2 */ be_nested_str(global), + /* K3 */ be_nested_str(_energy), + /* K4 */ be_nested_str(tomap), + }), + &be_const_str_tomap, + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0xB8020000, // 0000 GETNGBL R0 K0 + 0x8C000101, // 0001 GETMET R0 R0 K1 + 0x7C000200, // 0002 CALL R0 1 + 0xB8020400, // 0003 GETNGBL R0 K2 + 0x88000103, // 0004 GETMBR R0 R0 K3 + 0x78020003, // 0005 JMPF R0 #000A + 0xB8020600, // 0006 GETNGBL R0 K3 + 0x8C000104, // 0007 GETMET R0 R0 K4 + 0x7C000200, // 0008 CALL R0 1 + 0x80040000, // 0009 RET 1 R0 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + /********************************************************************/ /* End of solidification */ diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino index 874de687d..fcc55f795 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino @@ -38,51 +38,68 @@ extern "C" { be_return_nil(vm); } - - #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Winvalid-offsetof" // avoid warnings since we're using offsetof() in a risky way + enum { + PHASES_ARRAY_FLOAT = 1, + PHASES_ARRAY_INT32, + PHASES_ARRAY_UINT8, + PHASES_ARRAY_UINT16, + }; + static const char * be_ctypes_instance_mappings[] = { + "energy._phases_float", + "energy._phases_int32", + "energy._phases_uint8", + "energy._phases_uint16", NULL }; extern "C" const be_ctypes_structure_t be_energy_struct = { sizeof(tEnergy), /* size in bytes */ - 88, /* number of elements */ + 68, /* number of elements */ be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[88]) { + (const be_ctypes_structure_item_t[68]) { { "active_power", offsetof(tEnergy, active_power[0]), 0, 0, ctypes_float, 0 }, - { "active_power_2", offsetof(tEnergy, active_power[1]), 0, 0, ctypes_float, 0 }, - { "active_power_3", offsetof(tEnergy, active_power[2]), 0, 0, ctypes_float, 0 }, + // { "active_power_2", offsetof(tEnergy, active_power[1]), 0, 0, ctypes_float, 0 }, + // { "active_power_3", offsetof(tEnergy, active_power[2]), 0, 0, ctypes_float, 0 }, + { "active_power_phases", offsetof(tEnergy, active_power[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "apparent_power", offsetof(tEnergy, apparent_power[0]), 0, 0, ctypes_float, 0 }, - { "apparent_power_2", offsetof(tEnergy, apparent_power[1]), 0, 0, ctypes_float, 0 }, - { "apparent_power_3", offsetof(tEnergy, apparent_power[2]), 0, 0, ctypes_float, 0 }, + // { "apparent_power_2", offsetof(tEnergy, apparent_power[1]), 0, 0, ctypes_float, 0 }, + // { "apparent_power_3", offsetof(tEnergy, apparent_power[2]), 0, 0, ctypes_float, 0 }, + { "apparent_power_phases", offsetof(tEnergy, apparent_power[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "command_code", offsetof(tEnergy, command_code), 0, 0, ctypes_u8, 0 }, { "current", offsetof(tEnergy, current[0]), 0, 0, ctypes_float, 0 }, - { "current_2", offsetof(tEnergy, current[1]), 0, 0, ctypes_float, 0 }, - { "current_3", offsetof(tEnergy, current[2]), 0, 0, ctypes_float, 0 }, + // { "current_2", offsetof(tEnergy, current[1]), 0, 0, ctypes_float, 0 }, + // { "current_3", offsetof(tEnergy, current[2]), 0, 0, ctypes_float, 0 }, { "current_available", offsetof(tEnergy, current_available), 0, 0, ctypes_u8, 0 }, + { "current_phases", offsetof(tEnergy, current[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "daily", offsetof(tEnergy, daily_kWh[0]), 0, 0, ctypes_float, 0 }, - { "daily_2", offsetof(tEnergy, daily_kWh[1]), 0, 0, ctypes_float, 0 }, - { "daily_3", offsetof(tEnergy, daily_kWh[2]), 0, 0, ctypes_float, 0 }, + // { "daily_2", offsetof(tEnergy, daily_kWh[1]), 0, 0, ctypes_float, 0 }, + // { "daily_3", offsetof(tEnergy, daily_kWh[2]), 0, 0, ctypes_float, 0 }, + { "daily_phases", offsetof(tEnergy, daily_kWh[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "daily_sum", offsetof(tEnergy, daily_sum), 0, 0, ctypes_float, 0 }, { "daily_sum_export_balanced", offsetof(tEnergy, daily_sum_export_balanced), 0, 0, ctypes_float, 0 }, { "daily_sum_import_balanced", offsetof(tEnergy, daily_sum_import_balanced), 0, 0, ctypes_float, 0 }, { "data_valid", offsetof(tEnergy, data_valid[0]), 0, 0, ctypes_u8, 0 }, - { "data_valid_2", offsetof(tEnergy, data_valid[1]), 0, 0, ctypes_u8, 0 }, - { "data_valid_3", offsetof(tEnergy, data_valid[2]), 0, 0, ctypes_u8, 0 }, + // { "data_valid_2", offsetof(tEnergy, data_valid[1]), 0, 0, ctypes_u8, 0 }, + // { "data_valid_3", offsetof(tEnergy, data_valid[2]), 0, 0, ctypes_u8, 0 }, + { "data_valid_phases", offsetof(tEnergy, data_valid[0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT8 }, { "energy_active_export", offsetof(tEnergy, local_energy_active_export), 0, 0, ctypes_u8, 0 }, { "export_active", offsetof(tEnergy, export_active[0]), 0, 0, ctypes_float, 0 }, - { "export_active_2", offsetof(tEnergy, export_active[1]), 0, 0, ctypes_float, 0 }, - { "export_active_3", offsetof(tEnergy, export_active[2]), 0, 0, ctypes_float, 0 }, + // { "export_active_2", offsetof(tEnergy, export_active[1]), 0, 0, ctypes_float, 0 }, + // { "export_active_3", offsetof(tEnergy, export_active[2]), 0, 0, ctypes_float, 0 }, + { "export_active_phases", offsetof(tEnergy, export_active[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "fifth_second", offsetof(tEnergy, fifth_second), 0, 0, ctypes_u8, 0 }, { "frequency", offsetof(tEnergy, frequency[0]), 0, 0, ctypes_float, 0 }, - { "frequency_2", offsetof(tEnergy, frequency[1]), 0, 0, ctypes_float, 0 }, - { "frequency_3", offsetof(tEnergy, frequency[2]), 0, 0, ctypes_float, 0 }, + // { "frequency_2", offsetof(tEnergy, frequency[1]), 0, 0, ctypes_float, 0 }, + // { "frequency_3", offsetof(tEnergy, frequency[2]), 0, 0, ctypes_float, 0 }, { "frequency_common", offsetof(tEnergy, frequency_common), 0, 0, ctypes_u8, 0 }, + { "frequency_phases", offsetof(tEnergy, frequency[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "import_active", offsetof(tEnergy, import_active[0]), 0, 0, ctypes_float, 0 }, - { "import_active_2", offsetof(tEnergy, import_active[1]), 0, 0, ctypes_float, 0 }, - { "import_active_3", offsetof(tEnergy, import_active[2]), 0, 0, ctypes_float, 0 }, + // { "import_active_2", offsetof(tEnergy, import_active[1]), 0, 0, ctypes_float, 0 }, + // { "import_active_3", offsetof(tEnergy, import_active[2]), 0, 0, ctypes_float, 0 }, + { "import_active_phases", offsetof(tEnergy, import_active[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "max_current_flag", offsetof(tEnergy, max_current_flag[0]), 0, 0, ctypes_u8, 0 }, { "max_energy_state", offsetof(tEnergy, max_energy_state[0]), 0, 0, ctypes_u8, 0 }, { "max_power_flag", offsetof(tEnergy, max_power_flag[0]), 0, 0, ctypes_u8, 0 }, @@ -94,50 +111,62 @@ extern "C" { { "mpl_retry_counter", offsetof(tEnergy, mpl_retry_counter[0]), 0, 0, ctypes_u8, 0 }, { "mpl_window_counter", offsetof(tEnergy, mpl_window_counter[0]), 0, 0, ctypes_u16, 0 }, { "period", offsetof(tEnergy, period_kWh[0]), 0, 0, ctypes_float, 0 }, - { "period_2", offsetof(tEnergy, period_kWh[1]), 0, 0, ctypes_float, 0 }, - { "period_3", offsetof(tEnergy, period_kWh[2]), 0, 0, ctypes_float, 0 }, + // { "period_2", offsetof(tEnergy, period_kWh[1]), 0, 0, ctypes_float, 0 }, + // { "period_3", offsetof(tEnergy, period_kWh[2]), 0, 0, ctypes_float, 0 }, + { "period_phases", offsetof(tEnergy, period_kWh[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "phase_count", offsetof(tEnergy, phase_count), 0, 0, ctypes_u8, 0 }, { "power_factor", offsetof(tEnergy, power_factor[0]), 0, 0, ctypes_float, 0 }, - { "power_factor_2", offsetof(tEnergy, power_factor[1]), 0, 0, ctypes_float, 0 }, - { "power_factor_3", offsetof(tEnergy, power_factor[2]), 0, 0, ctypes_float, 0 }, + // { "power_factor_2", offsetof(tEnergy, power_factor[1]), 0, 0, ctypes_float, 0 }, + // { "power_factor_3", offsetof(tEnergy, power_factor[2]), 0, 0, ctypes_float, 0 }, + { "power_factor_phases", offsetof(tEnergy, power_factor[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "power_history_0", offsetof(tEnergy, power_history[0][0]), 0, 0, ctypes_u16, 0 }, - { "power_history_0_2", offsetof(tEnergy, power_history[0][1]), 0, 0, ctypes_u16, 0 }, - { "power_history_0_3", offsetof(tEnergy, power_history[0][2]), 0, 0, ctypes_u16, 0 }, + // { "power_history_0_2", offsetof(tEnergy, power_history[0][1]), 0, 0, ctypes_u16, 0 }, + // { "power_history_0_3", offsetof(tEnergy, power_history[0][2]), 0, 0, ctypes_u16, 0 }, + { "power_history_0_phases", offsetof(tEnergy, power_history[0][0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT16 }, { "power_history_1", offsetof(tEnergy, power_history[1][0]), 0, 0, ctypes_u16, 0 }, - { "power_history_1_2", offsetof(tEnergy, power_history[1][1]), 0, 0, ctypes_u16, 0 }, - { "power_history_1_3", offsetof(tEnergy, power_history[1][2]), 0, 0, ctypes_u16, 0 }, + // { "power_history_1_2", offsetof(tEnergy, power_history[1][1]), 0, 0, ctypes_u16, 0 }, + // { "power_history_1_3", offsetof(tEnergy, power_history[1][2]), 0, 0, ctypes_u16, 0 }, + { "power_history_1_phases", offsetof(tEnergy, power_history[1][0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT16 }, { "power_history_2", offsetof(tEnergy, power_history[2][0]), 0, 0, ctypes_u16, 0 }, - { "power_history_2_2", offsetof(tEnergy, power_history[2][1]), 0, 0, ctypes_u16, 0 }, - { "power_history_2_3", offsetof(tEnergy, power_history[2][2]), 0, 0, ctypes_u16, 0 }, + // { "power_history_2_2", offsetof(tEnergy, power_history[2][1]), 0, 0, ctypes_u16, 0 }, + // { "power_history_2_3", offsetof(tEnergy, power_history[2][2]), 0, 0, ctypes_u16, 0 }, + { "power_history_2_phases", offsetof(tEnergy, power_history[2][0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT16 }, { "power_on", offsetof(tEnergy, power_on), 0, 0, ctypes_u8, 0 }, { "power_steady_counter", offsetof(tEnergy, power_steady_counter), 0, 0, ctypes_u8, 0 }, { "reactive_power", offsetof(tEnergy, reactive_power[0]), 0, 0, ctypes_float, 0 }, - { "reactive_power_2", offsetof(tEnergy, reactive_power[1]), 0, 0, ctypes_float, 0 }, - { "reactive_power_3", offsetof(tEnergy, reactive_power[2]), 0, 0, ctypes_float, 0 }, + // { "reactive_power_2", offsetof(tEnergy, reactive_power[1]), 0, 0, ctypes_float, 0 }, + // { "reactive_power_3", offsetof(tEnergy, reactive_power[2]), 0, 0, ctypes_float, 0 }, + { "reactive_power_phases", offsetof(tEnergy, reactive_power[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "start_energy", offsetof(tEnergy, start_energy[0]), 0, 0, ctypes_float, 0 }, - { "start_energy_2", offsetof(tEnergy, start_energy[1]), 0, 0, ctypes_float, 0 }, - { "start_energy_3", offsetof(tEnergy, start_energy[2]), 0, 0, ctypes_float, 0 }, - { "today_delta_kwh", offsetof(tEnergy, kWhtoday_delta[0]), 0, 0, ctypes_u32, 0 }, - { "today_delta_kwh_2", offsetof(tEnergy, kWhtoday_delta[1]), 0, 0, ctypes_u32, 0 }, - { "today_delta_kwh_3", offsetof(tEnergy, kWhtoday_delta[2]), 0, 0, ctypes_u32, 0 }, - { "today_kwh", offsetof(tEnergy, kWhtoday[0]), 0, 0, ctypes_u32, 0 }, - { "today_kwh_2", offsetof(tEnergy, kWhtoday[1]), 0, 0, ctypes_u32, 0 }, - { "today_kwh_3", offsetof(tEnergy, kWhtoday[2]), 0, 0, ctypes_u32, 0 }, + // { "start_energy_2", offsetof(tEnergy, start_energy[1]), 0, 0, ctypes_float, 0 }, + // { "start_energy_3", offsetof(tEnergy, start_energy[2]), 0, 0, ctypes_float, 0 }, + { "start_energy_phases", offsetof(tEnergy, start_energy[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, + { "today_delta_kwh", offsetof(tEnergy, kWhtoday_delta[0]), 0, 0, ctypes_i32, 0 }, + // { "today_delta_kwh_2", offsetof(tEnergy, kWhtoday_delta[1]), 0, 0, ctypes_i32, 0 }, + // { "today_delta_kwh_3", offsetof(tEnergy, kWhtoday_delta[2]), 0, 0, ctypes_i32, 0 }, + { "today_delta_kwh_phases", offsetof(tEnergy, kWhtoday_delta[0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT8 }, + { "today_kwh", offsetof(tEnergy, kWhtoday[0]), 0, 0, ctypes_i32, 0 }, + // { "today_kwh_2", offsetof(tEnergy, kWhtoday[1]), 0, 0, ctypes_i32, 0 }, + // { "today_kwh_3", offsetof(tEnergy, kWhtoday[2]), 0, 0, ctypes_i32, 0 }, + { "today_kwh_phases", offsetof(tEnergy, kWhtoday[0]), 0, 0, ctypes_addr, PHASES_ARRAY_INT32 }, { "today_offset_init_kwh", offsetof(tEnergy, kWhtoday_offset_init), 0, 0, ctypes_u8, 0 }, { "today_offset_kwh", offsetof(tEnergy, energy_today_offset_kWh[0]), 0, 0, ctypes_float, 0 }, - { "today_offset_kwh_2", offsetof(tEnergy, energy_today_offset_kWh[1]), 0, 0, ctypes_float, 0 }, - { "today_offset_kwh_3", offsetof(tEnergy, energy_today_offset_kWh[2]), 0, 0, ctypes_float, 0 }, + // { "today_offset_kwh_2", offsetof(tEnergy, energy_today_offset_kWh[1]), 0, 0, ctypes_float, 0 }, + // { "today_offset_kwh_3", offsetof(tEnergy, energy_today_offset_kWh[2]), 0, 0, ctypes_float, 0 }, + { "today_offset_kwh_phases", offsetof(tEnergy, energy_today_offset_kWh[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "total", offsetof(tEnergy, total[0]), 0, 0, ctypes_float, 0 }, - { "total_2", offsetof(tEnergy, total[1]), 0, 0, ctypes_float, 0 }, - { "total_3", offsetof(tEnergy, total[2]), 0, 0, ctypes_float, 0 }, + // { "total_2", offsetof(tEnergy, total[1]), 0, 0, ctypes_float, 0 }, + // { "total_3", offsetof(tEnergy, total[2]), 0, 0, ctypes_float, 0 }, + { "total_phases", offsetof(tEnergy, total[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "total_sum", offsetof(tEnergy, total_sum), 0, 0, ctypes_float, 0 }, { "type_dc", offsetof(tEnergy, type_dc), 0, 0, ctypes_u8, 0 }, { "use_overtemp", offsetof(tEnergy, use_overtemp), 0, 0, ctypes_u8, 0 }, { "voltage", offsetof(tEnergy, voltage[0]), 0, 0, ctypes_float, 0 }, - { "voltage_2", offsetof(tEnergy, voltage[1]), 0, 0, ctypes_float, 0 }, - { "voltage_3", offsetof(tEnergy, voltage[2]), 0, 0, ctypes_float, 0 }, + // { "voltage_2", offsetof(tEnergy, voltage[1]), 0, 0, ctypes_float, 0 }, + // { "voltage_3", offsetof(tEnergy, voltage[2]), 0, 0, ctypes_float, 0 }, { "voltage_available", offsetof(tEnergy, voltage_available), 0, 0, ctypes_u8, 0 }, { "voltage_common", offsetof(tEnergy, voltage_common), 0, 0, ctypes_u8, 0 }, + { "voltage_phases", offsetof(tEnergy, voltage[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT }, { "yesterday_sum", offsetof(tEnergy, yesterday_sum), 0, 0, ctypes_float, 0 }, }}; // be_define_ctypes_class(energy_struct, &be_energy_struct, &be_class_ctypes_bytes, "energy_struct"); From 8f74a226e7d5a510737beb9f6fe112ca493884d7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Aug 2024 10:02:31 +0200 Subject: [PATCH 223/252] Update changelogs --- CHANGELOG.md | 8 ++++---- RELEASENOTES.md | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e33eac30e..151288337 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,12 +13,12 @@ All notable changes to this project will be documented in this file. - Analog GPIO ``ADC Input`` with ``AdcParam 1,,,,1`` provide direct light control - Analog GPIO ``ADC Voltage`` with ``AdcParam 11,,,,`` provide energy monitoring with dc voltage - Analog GPIO ``ADC Current`` with ``AdcParam 12,,,,`` provide energy monitoring with dc voltage -- Berry add new type "addr" to ctypes mapping -- Berry add `file.savecode()` -- Berry add `solidify.nocompact()` and reduce size of Matter UI +- Berry new type "addr" to ctypes mapping (#21883) +- Berry `file.savecode()` (#21884) +- Berry `solidify.nocompact()` and reduce size of Matter UI (#21885) ### Breaking Changed -- Berry `energy` module support for 8 phases and move to pseudo-arrays +- Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887) ### Changed - Berry consolidated constants for solidified classes reduces Flash size (#2185) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 574b66a1e..d829777cb 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -146,6 +146,9 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry `int64` added `low32()` and `high32()` methods, used in Matter [#21728](https://github.com/arendst/Tasmota/issues/21728) - Berry `webserver_async` [#21836](https://github.com/arendst/Tasmota/issues/21836) - Berry cam module and img class [#21743](https://github.com/arendst/Tasmota/issues/21743) +- Berry new type "addr" to ctypes mapping [#21883](https://github.com/arendst/Tasmota/issues/21883) +- Berry `file.savecode()` [#21884](https://github.com/arendst/Tasmota/issues/21884) +- Berry `solidify.nocompact()` and reduce size of Matter UI [#21885](https://github.com/arendst/Tasmota/issues/21885) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) @@ -157,6 +160,9 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter improve internal `inspect`for superclasses [#21824](https://github.com/arendst/Tasmota/issues/21824) - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) [#21834](https://github.com/arendst/Tasmota/issues/21834) +### Breaking Changed +- Berry `energy` module support for 8 phases and move to pseudo-arrays [#21887](https://github.com/arendst/Tasmota/issues/21887) + ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668) From 6b98a320b1ae5424af7579874d65669e0b92861f Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 2 Aug 2024 15:43:31 +0200 Subject: [PATCH 224/252] Berry `zigbee.find()` (#21889) --- CHANGELOG.md | 1 + lib/libesp32/berry_tasmota/src/be_zigbee.c | 2 ++ .../xdrv_52_3_berry_zigbee.ino | 24 ++++++++++++++++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 151288337..91f9e9e7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ All notable changes to this project will be documented in this file. - Berry new type "addr" to ctypes mapping (#21883) - Berry `file.savecode()` (#21884) - Berry `solidify.nocompact()` and reduce size of Matter UI (#21885) +- Berry `zigbee.find()` ### Breaking Changed - Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887) diff --git a/lib/libesp32/berry_tasmota/src/be_zigbee.c b/lib/libesp32/berry_tasmota/src/be_zigbee.c index 22c67301a..0f4510aaf 100644 --- a/lib/libesp32/berry_tasmota/src/be_zigbee.c +++ b/lib/libesp32/berry_tasmota/src/be_zigbee.c @@ -51,6 +51,7 @@ static int zd_member(bvm *vm) { extern int zc_info(struct bvm *vm); extern int zc_item(struct bvm *vm); +extern int zc_find(struct bvm *vm); extern int32_t zc_size(void* d); BE_FUNC_CTYPE_DECLARE(zc_size, "i", "."); extern int zc_iter(bvm *vm); extern void zc_abort(void); BE_FUNC_CTYPE_DECLARE(zc_abort, "", "."); @@ -113,6 +114,7 @@ class be_class_zb_coord_ntv (scope: global, name: zb_coord_ntv, strings: weak) { info, func(zc_info) item, func(zc_item) + find, func(zc_find) size, ctype_func(zc_size) iter, func(zc_iter) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino index f684a9a6b..390859afe 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino @@ -99,8 +99,8 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } - int zc_item(struct bvm *vm); - int zc_item(struct bvm *vm) { + // implement item() and find() + int zc_item_or_find(struct bvm *vm, bbool raise_if_unknown) { int32_t top = be_top(vm); // Get the number of arguments if (zigbee.init_phase) { be_raise(vm, "internal_error", "zigbee not started"); @@ -109,7 +109,11 @@ extern "C" { const Z_Device & device = be_isint(vm, 2) ? zigbee_devices.findShortAddr(be_toint(vm, 2)) : zigbee_devices.parseDeviceFromName(be_tostring(vm, 2)); if (!device.valid()) { - be_raise(vm, "value_error", "unknown device"); + if (raise_if_unknown) { + be_raise(vm, "index_error", "unknown device"); + } else { + be_return_nil(vm); + } } be_pushntvclass(vm, &be_class_zb_device); @@ -121,6 +125,20 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } + // `zigbee.item(shortaddr:int | friendlyname:str) -> instance of zb_device` + // raise en exception if not found + int zc_item(struct bvm *vm); + int zc_item(struct bvm *vm) { + return zc_item_or_find(vm, true); + } + + // `zigbee.find(shortaddr:int | friendlyname:str) -> instance of zb_device` + // return `nil` if not found + int zc_find(struct bvm *vm); + int zc_find(struct bvm *vm) { + return zc_item_or_find(vm, false); + } + int32_t zc_size(void*) { return zigbee_devices.devicesSize(); } From db26f180eccbad70c72826370a745d3026a3b036 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:31:02 +0200 Subject: [PATCH 225/252] Fix start_root_basic_commissioning (#21894) --- .../src/embedded/Matter_Plugin_1_Root.be | 2 +- .../berry_matter/src/embedded/Matter_UI.be | 4 +- .../solidified_Matter_Plugin_1_Root.h | 89 +- .../src/solidify/solidified_Matter_UI.h | 1074 +++++++++-------- 4 files changed, 586 insertions(+), 583 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index 4673810d5..21dd0851b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -633,7 +633,7 @@ class Matter_Plugin_Root : Matter_Plugin elif command == 0x0001 # ---------- OpenBasicCommissioningWindow ---------- var commissioning_timeout = val.findsubval(0) # CommissioningTimeout log("MTR: OpenBasicCommissioningWindow commissioning_timeout="+str(commissioning_timeout), 3) - self.device.start_root_basic_commissioning(commissioning_timeout) + self.device.commissioning.start_root_basic_commissioning(commissioning_timeout) return true elif command == 0x0002 # ---------- RevokeCommissioning ---------- # TODO add checks that the commissioning window was opened by the same fabric diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be index fa58cc4c2..d2acce51e 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be @@ -797,7 +797,7 @@ class Matter_UI webserver.redirect("/?rst=") elif matter_commissioning_requested != (self.device.commissioning.commissioning_open != nil) if matter_commissioning_requested - self.device.start_root_basic_commissioning() + self.device.commissioning.start_root_basic_commissioning() else self.device.commissioning.stop_basic_commissioning() end @@ -1097,7 +1097,7 @@ class Matter_UI if webserver.has_arg("mtc0") # Close Commissioning self.device.commissioning.stop_basic_commissioning() elif webserver.has_arg("mtc1") # Open Commissioning - self.device.start_root_basic_commissioning() + self.device.commissioning.start_root_basic_commissioning() end end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index 57aa70d09..83997d841 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -1369,7 +1369,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ &be_ktab_class_Matter_Plugin_Root, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[742]) { /* code */ + ( &(const binstruction[743]) { /* code */ 0xA412D400, // 0000 IMPORT R4 K106 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 @@ -1471,7 +1471,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x80041000, // 0062 RET 1 R8 0x70020000, // 0063 JMP #0065 0xB006E171, // 0064 RAISE 1 K112 K113 - 0x7002027D, // 0065 JMP #02E4 + 0x7002027E, // 0065 JMP #02E5 0x5422003D, // 0066 LDINT R8 62 0x1C200C08, // 0067 EQ R8 R6 R8 0x782201DF, // 0068 JMPF R8 #0249 @@ -1954,10 +1954,10 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x4C240000, // 0245 LDNIL R9 0xA0000000, // 0246 CLOSE R0 0x80041200, // 0247 RET 1 R9 - 0x7002009A, // 0248 JMP #02E4 + 0x7002009B, // 0248 JMP #02E5 0x5422003B, // 0249 LDINT R8 60 0x1C200C08, // 024A EQ R8 R6 R8 - 0x78220084, // 024B JMPF R8 #02D1 + 0x78220085, // 024B JMPF R8 #02D2 0x1C200F05, // 024C EQ R8 R7 K5 0x78220064, // 024D JMPF R8 #02B3 0x8C200541, // 024E GETMET R8 R2 K65 @@ -2060,9 +2060,9 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x503C0200, // 02AF LDBOOL R15 1 0 0xA0000000, // 02B0 CLOSE R0 0x80041E00, // 02B1 RET 1 R15 - 0x7002001C, // 02B2 JMP #02D0 + 0x7002001D, // 02B2 JMP #02D1 0x1C200F09, // 02B3 EQ R8 R7 K9 - 0x78220011, // 02B4 JMPF R8 #02C7 + 0x78220012, // 02B4 JMPF R8 #02C8 0x8C200541, // 02B5 GETMET R8 R2 K65 0x58280005, // 02B6 LDCONST R10 K5 0x7C200400, // 02B7 CALL R8 2 @@ -2074,44 +2074,45 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x582C000F, // 02BD LDCONST R11 K15 0x7C240400, // 02BE CALL R9 2 0x88240136, // 02BF GETMBR R9 R0 K54 - 0x8C2413AA, // 02C0 GETMET R9 R9 K170 - 0x5C2C1000, // 02C1 MOVE R11 R8 - 0x7C240400, // 02C2 CALL R9 2 - 0x50240200, // 02C3 LDBOOL R9 1 0 - 0xA0000000, // 02C4 CLOSE R0 - 0x80041200, // 02C5 RET 1 R9 - 0x70020008, // 02C6 JMP #02D0 - 0x1C200F0D, // 02C7 EQ R8 R7 K13 - 0x78220006, // 02C8 JMPF R8 #02D0 - 0x88200136, // 02C9 GETMBR R8 R0 K54 - 0x8820114A, // 02CA GETMBR R8 R8 K74 - 0x8C2011AB, // 02CB GETMET R8 R8 K171 - 0x7C200200, // 02CC CALL R8 1 - 0x50200200, // 02CD LDBOOL R8 1 0 - 0xA0000000, // 02CE CLOSE R0 - 0x80041000, // 02CF RET 1 R8 - 0x70020012, // 02D0 JMP #02E4 - 0x54220029, // 02D1 LDINT R8 42 - 0x1C200C08, // 02D2 EQ R8 R6 R8 - 0x78220005, // 02D3 JMPF R8 #02DA - 0x1C200F05, // 02D4 EQ R8 R7 K5 - 0x78220002, // 02D5 JMPF R8 #02D9 - 0x50200200, // 02D6 LDBOOL R8 1 0 - 0xA0000000, // 02D7 CLOSE R0 - 0x80041000, // 02D8 RET 1 R8 - 0x70020009, // 02D9 JMP #02E4 - 0x60200003, // 02DA GETGBL R8 G3 - 0x5C240000, // 02DB MOVE R9 R0 - 0x7C200200, // 02DC CALL R8 1 - 0x8C2011AC, // 02DD GETMET R8 R8 K172 - 0x5C280200, // 02DE MOVE R10 R1 - 0x5C2C0400, // 02DF MOVE R11 R2 - 0x5C300600, // 02E0 MOVE R12 R3 - 0x7C200800, // 02E1 CALL R8 4 - 0xA0000000, // 02E2 CLOSE R0 - 0x80041000, // 02E3 RET 1 R8 - 0xA0000000, // 02E4 CLOSE R0 - 0x80000000, // 02E5 RET 0 + 0x8824134A, // 02C0 GETMBR R9 R9 K74 + 0x8C2413AA, // 02C1 GETMET R9 R9 K170 + 0x5C2C1000, // 02C2 MOVE R11 R8 + 0x7C240400, // 02C3 CALL R9 2 + 0x50240200, // 02C4 LDBOOL R9 1 0 + 0xA0000000, // 02C5 CLOSE R0 + 0x80041200, // 02C6 RET 1 R9 + 0x70020008, // 02C7 JMP #02D1 + 0x1C200F0D, // 02C8 EQ R8 R7 K13 + 0x78220006, // 02C9 JMPF R8 #02D1 + 0x88200136, // 02CA GETMBR R8 R0 K54 + 0x8820114A, // 02CB GETMBR R8 R8 K74 + 0x8C2011AB, // 02CC GETMET R8 R8 K171 + 0x7C200200, // 02CD CALL R8 1 + 0x50200200, // 02CE LDBOOL R8 1 0 + 0xA0000000, // 02CF CLOSE R0 + 0x80041000, // 02D0 RET 1 R8 + 0x70020012, // 02D1 JMP #02E5 + 0x54220029, // 02D2 LDINT R8 42 + 0x1C200C08, // 02D3 EQ R8 R6 R8 + 0x78220005, // 02D4 JMPF R8 #02DB + 0x1C200F05, // 02D5 EQ R8 R7 K5 + 0x78220002, // 02D6 JMPF R8 #02DA + 0x50200200, // 02D7 LDBOOL R8 1 0 + 0xA0000000, // 02D8 CLOSE R0 + 0x80041000, // 02D9 RET 1 R8 + 0x70020009, // 02DA JMP #02E5 + 0x60200003, // 02DB GETGBL R8 G3 + 0x5C240000, // 02DC MOVE R9 R0 + 0x7C200200, // 02DD CALL R8 1 + 0x8C2011AC, // 02DE GETMET R8 R8 K172 + 0x5C280200, // 02DF MOVE R10 R1 + 0x5C2C0400, // 02E0 MOVE R11 R2 + 0x5C300600, // 02E1 MOVE R12 R3 + 0x7C200800, // 02E2 CALL R8 4 + 0xA0000000, // 02E3 CLOSE R0 + 0x80041000, // 02E4 RET 1 R8 + 0xA0000000, // 02E5 CLOSE R0 + 0x80000000, // 02E6 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 1de144b5d..195524c4d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -1524,7 +1524,7 @@ be_local_closure(class_Matter_UI_web_get_arg, /* name */ &be_ktab_class_Matter_UI, /* shared constants */ be_str_weak(web_get_arg), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[19]) { /* code */ 0xA4060800, // 0000 IMPORT R1 K4 0x8C08039E, // 0001 GETMET R2 R1 K158 0x5810009F, // 0002 LDCONST R4 K159 @@ -1534,15 +1534,16 @@ be_local_closure(class_Matter_UI_web_get_arg, /* name */ 0x88080533, // 0006 GETMBR R2 R2 K51 0x8C0805A0, // 0007 GETMET R2 R2 K160 0x7C080200, // 0008 CALL R2 1 - 0x70020006, // 0009 JMP #0011 + 0x70020007, // 0009 JMP #0012 0x8C08039E, // 000A GETMET R2 R1 K158 0x581000A1, // 000B LDCONST R4 K161 0x7C080400, // 000C CALL R2 2 - 0x780A0002, // 000D JMPF R2 #0011 + 0x780A0003, // 000D JMPF R2 #0012 0x88080116, // 000E GETMBR R2 R0 K22 - 0x8C0805A2, // 000F GETMET R2 R2 K162 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 + 0x88080533, // 000F GETMBR R2 R2 K51 + 0x8C0805A2, // 0010 GETMET R2 R2 K162 + 0x7C080200, // 0011 CALL R2 1 + 0x80000000, // 0012 RET 0 }) ) ); @@ -2153,7 +2154,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ }), be_str_weak(page_part_ctl), &be_const_str_solidified, - ( &(const binstruction[658]) { /* code */ + ( &(const binstruction[659]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080301, // 0001 GETMET R2 R1 K1 0x7C080200, // 0002 CALL R2 1 @@ -2164,7 +2165,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0xA40E0600, // 0007 IMPORT R3 K3 0xA4120800, // 0008 IMPORT R4 K4 0x4C140000, // 0009 LDNIL R5 - 0xA8020268, // 000A EXBLK 0 #0274 + 0xA8020269, // 000A EXBLK 0 #0275 0x8C180305, // 000B GETMET R6 R1 K5 0x58200006, // 000C LDCONST R8 K6 0x7C180400, // 000D CALL R6 2 @@ -2214,11 +2215,11 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C180313, // 0039 GETMET R6 R1 K19 0x58200014, // 003A LDCONST R8 K20 0x7C180400, // 003B CALL R6 2 - 0x70020221, // 003C JMP #025F + 0x70020222, // 003C JMP #0260 0x8C180305, // 003D GETMET R6 R1 K5 0x58200015, // 003E LDCONST R8 K21 0x7C180400, // 003F CALL R6 2 - 0x781A0054, // 0040 JMPF R6 #0096 + 0x781A0055, // 0040 JMPF R6 #0097 0x8C180305, // 0041 GETMET R6 R1 K5 0x58200016, // 0042 LDCONST R8 K22 0x7C180400, // 0043 CALL R6 2 @@ -2279,539 +2280,540 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0x8C240313, // 007A GETMET R9 R1 K19 0x582C0014, // 007B LDCONST R11 K20 0x7C240400, // 007C CALL R9 2 - 0x70020016, // 007D JMP #0095 + 0x70020017, // 007D JMP #0096 0x8824010B, // 007E GETMBR R9 R0 K11 0x88241324, // 007F GETMBR R9 R9 K36 0x88241325, // 0080 GETMBR R9 R9 K37 0x4C280000, // 0081 LDNIL R10 0x2024120A, // 0082 NE R9 R9 R10 0x20240E09, // 0083 NE R9 R7 R9 - 0x7826000C, // 0084 JMPF R9 #0092 - 0x781E0003, // 0085 JMPF R7 #008A + 0x7826000D, // 0084 JMPF R9 #0093 + 0x781E0004, // 0085 JMPF R7 #008B 0x8824010B, // 0086 GETMBR R9 R0 K11 - 0x8C241326, // 0087 GETMET R9 R9 K38 - 0x7C240200, // 0088 CALL R9 1 - 0x70020003, // 0089 JMP #008E - 0x8824010B, // 008A GETMBR R9 R0 K11 - 0x88241324, // 008B GETMBR R9 R9 K36 - 0x8C241327, // 008C GETMET R9 R9 K39 - 0x7C240200, // 008D CALL R9 1 - 0x8C240313, // 008E GETMET R9 R1 K19 - 0x582C0028, // 008F LDCONST R11 K40 - 0x7C240400, // 0090 CALL R9 2 - 0x70020002, // 0091 JMP #0095 - 0x8C240313, // 0092 GETMET R9 R1 K19 - 0x582C0028, // 0093 LDCONST R11 K40 - 0x7C240400, // 0094 CALL R9 2 - 0x700201C8, // 0095 JMP #025F - 0x8C180305, // 0096 GETMET R6 R1 K5 - 0x58200029, // 0097 LDCONST R8 K41 - 0x7C180400, // 0098 CALL R6 2 - 0x781A0025, // 0099 JMPF R6 #00C0 - 0xB81A1000, // 009A GETNGBL R6 K8 - 0x601C0018, // 009B GETGBL R7 G24 - 0x58200009, // 009C LDCONST R8 K9 - 0x58240029, // 009D LDCONST R9 K41 - 0x7C1C0400, // 009E CALL R7 2 - 0x5820000A, // 009F LDCONST R8 K10 - 0x7C180400, // 00A0 CALL R6 2 - 0x60180009, // 00A1 GETGBL R6 G9 - 0x8C1C030D, // 00A2 GETMET R7 R1 K13 - 0x58240029, // 00A3 LDCONST R9 K41 - 0x7C1C0400, // 00A4 CALL R7 2 - 0x7C180200, // 00A5 CALL R6 1 - 0x581C002A, // 00A6 LDCONST R7 K42 - 0x8820010B, // 00A7 GETMBR R8 R0 K11 - 0x8820112B, // 00A8 GETMBR R8 R8 K43 - 0x8820112C, // 00A9 GETMBR R8 R8 K44 - 0x6024000C, // 00AA GETGBL R9 G12 - 0x5C281000, // 00AB MOVE R10 R8 - 0x7C240200, // 00AC CALL R9 1 - 0x14240E09, // 00AD LT R9 R7 R9 - 0x7826000C, // 00AE JMPF R9 #00BC - 0x94241007, // 00AF GETIDX R9 R8 R7 - 0x8C24132D, // 00B0 GETMET R9 R9 K45 - 0x7C240200, // 00B1 CALL R9 1 - 0x1C241206, // 00B2 EQ R9 R9 R6 - 0x78260005, // 00B3 JMPF R9 #00BA - 0x8824010B, // 00B4 GETMBR R9 R0 K11 - 0x8C24132E, // 00B5 GETMET R9 R9 K46 - 0x942C1007, // 00B6 GETIDX R11 R8 R7 - 0x7C240400, // 00B7 CALL R9 2 - 0x70020002, // 00B8 JMP #00BC - 0x70020000, // 00B9 JMP #00BB - 0x001C0F2F, // 00BA ADD R7 R7 K47 - 0x7001FFED, // 00BB JMP #00AA - 0x8C240313, // 00BC GETMET R9 R1 K19 - 0x582C0030, // 00BD LDCONST R11 K48 - 0x7C240400, // 00BE CALL R9 2 - 0x7002019E, // 00BF JMP #025F - 0x8C180305, // 00C0 GETMET R6 R1 K5 - 0x58200031, // 00C1 LDCONST R8 K49 - 0x7C180400, // 00C2 CALL R6 2 - 0x781A000D, // 00C3 JMPF R6 #00D2 - 0xB81A1000, // 00C4 GETNGBL R6 K8 - 0x601C0018, // 00C5 GETGBL R7 G24 - 0x58200009, // 00C6 LDCONST R8 K9 - 0x58240031, // 00C7 LDCONST R9 K49 - 0x7C1C0400, // 00C8 CALL R7 2 - 0x5820000A, // 00C9 LDCONST R8 K10 - 0x7C180400, // 00CA CALL R6 2 - 0x8818010B, // 00CB GETMBR R6 R0 K11 - 0x8C180D32, // 00CC GETMET R6 R6 K50 - 0x7C180200, // 00CD CALL R6 1 - 0x8C180313, // 00CE GETMET R6 R1 K19 - 0x58200014, // 00CF LDCONST R8 K20 - 0x7C180400, // 00D0 CALL R6 2 - 0x7002018C, // 00D1 JMP #025F - 0x8C180305, // 00D2 GETMET R6 R1 K5 - 0x58200033, // 00D3 LDCONST R8 K51 - 0x7C180400, // 00D4 CALL R6 2 - 0x781A00CE, // 00D5 JMPF R6 #01A5 - 0xB81A1000, // 00D6 GETNGBL R6 K8 - 0x601C0018, // 00D7 GETGBL R7 G24 - 0x58200009, // 00D8 LDCONST R8 K9 - 0x58240033, // 00D9 LDCONST R9 K51 - 0x7C1C0400, // 00DA CALL R7 2 - 0x5820000A, // 00DB LDCONST R8 K10 - 0x7C180400, // 00DC CALL R6 2 - 0x50180000, // 00DD LDBOOL R6 0 0 - 0x601C0010, // 00DE GETGBL R7 G16 - 0x8C200334, // 00DF GETMET R8 R1 K52 - 0x7C200200, // 00E0 CALL R8 1 - 0x0420112F, // 00E1 SUB R8 R8 K47 - 0x40225408, // 00E2 CONNECT R8 K42 R8 - 0x7C1C0200, // 00E3 CALL R7 1 - 0xA802009B, // 00E4 EXBLK 0 #0181 - 0x5C200E00, // 00E5 MOVE R8 R7 - 0x7C200000, // 00E6 CALL R8 0 - 0x8C240335, // 00E7 GETMET R9 R1 K53 - 0x5C2C1000, // 00E8 MOVE R11 R8 - 0x7C240400, // 00E9 CALL R9 2 - 0x8C280536, // 00EA GETMET R10 R2 K54 - 0x5C301200, // 00EB MOVE R12 R9 - 0x5834000D, // 00EC LDCONST R13 K13 - 0x7C280600, // 00ED CALL R10 3 - 0x1C28152A, // 00EE EQ R10 R10 K42 - 0x782A0057, // 00EF JMPF R10 #0148 - 0x60280009, // 00F0 GETGBL R10 G9 - 0x402E1537, // 00F1 CONNECT R11 K10 K55 - 0x942C120B, // 00F2 GETIDX R11 R9 R11 - 0x7C280200, // 00F3 CALL R10 1 - 0x8C2C030D, // 00F4 GETMET R11 R1 K13 - 0x5C341000, // 00F5 MOVE R13 R8 - 0x7C2C0400, // 00F6 CALL R11 2 - 0x8830010B, // 00F7 GETMBR R12 R0 K11 - 0x88301938, // 00F8 GETMBR R12 R12 K56 - 0x8C301936, // 00F9 GETMET R12 R12 K54 - 0x60380008, // 00FA GETGBL R14 G8 - 0x5C3C1400, // 00FB MOVE R15 R10 - 0x7C380200, // 00FC CALL R14 1 - 0x7C300400, // 00FD CALL R12 2 - 0x4C340000, // 00FE LDNIL R13 - 0x2034180D, // 00FF NE R13 R12 R13 - 0x7836003E, // 0100 JMPF R13 #0140 - 0x8834010B, // 0101 GETMBR R13 R0 K11 - 0x88341B39, // 0102 GETMBR R13 R13 K57 - 0x8C341B36, // 0103 GETMET R13 R13 K54 - 0x8C3C1936, // 0104 GETMET R15 R12 K54 - 0x5844003A, // 0105 LDCONST R17 K58 - 0x5848003B, // 0106 LDCONST R18 K59 - 0x7C3C0600, // 0107 CALL R15 3 - 0x7C340400, // 0108 CALL R13 2 - 0x4C380000, // 0109 LDNIL R14 - 0x20381A0E, // 010A NE R14 R13 R14 - 0x783A0032, // 010B JMPF R14 #013F - 0xB83A1000, // 010C GETNGBL R14 K8 - 0x603C0018, // 010D GETGBL R15 G24 - 0x5840003C, // 010E LDCONST R16 K60 - 0x5C441400, // 010F MOVE R17 R10 - 0x5C481600, // 0110 MOVE R18 R11 - 0x7C3C0600, // 0111 CALL R15 3 - 0x5840000A, // 0112 LDCONST R16 K10 - 0x7C380400, // 0113 CALL R14 2 - 0x8C381B3D, // 0114 GETMET R14 R13 K61 - 0x5C401A00, // 0115 MOVE R16 R13 - 0x5C441800, // 0116 MOVE R17 R12 - 0x7C380600, // 0117 CALL R14 3 - 0x203C1C0B, // 0118 NE R15 R14 R11 - 0xB8421000, // 0119 GETNGBL R16 K8 - 0x60440018, // 011A GETGBL R17 G24 - 0x5848003E, // 011B LDCONST R18 K62 - 0x5C4C1400, // 011C MOVE R19 R10 - 0x5C501C00, // 011D MOVE R20 R14 - 0x5C541600, // 011E MOVE R21 R11 - 0x20581C0B, // 011F NE R22 R14 R11 - 0x785A0001, // 0120 JMPF R22 #0123 - 0x5858003F, // 0121 LDCONST R22 K63 - 0x70020000, // 0122 JMP #0124 - 0x5858003B, // 0123 LDCONST R22 K59 - 0x7C440A00, // 0124 CALL R17 5 - 0x5848000A, // 0125 LDCONST R18 K10 - 0x7C400400, // 0126 CALL R16 2 - 0x783E0016, // 0127 JMPF R15 #013F - 0x50180200, // 0128 LDBOOL R6 1 0 - 0x8C401B40, // 0129 GETMET R16 R13 K64 - 0x5C481A00, // 012A MOVE R18 R13 - 0x5C4C1800, // 012B MOVE R19 R12 - 0x5C501600, // 012C MOVE R20 R11 - 0x7C400800, // 012D CALL R16 4 - 0x8840010B, // 012E GETMBR R16 R0 K11 - 0x8C402141, // 012F GETMET R16 R16 K65 - 0x5C481400, // 0130 MOVE R18 R10 - 0x7C400400, // 0131 CALL R16 2 - 0x7842000B, // 0132 JMPF R16 #013F - 0xB8461000, // 0133 GETNGBL R17 K8 - 0x60480018, // 0134 GETGBL R18 G24 - 0x584C0042, // 0135 LDCONST R19 K66 - 0x5C501800, // 0136 MOVE R20 R12 - 0x5C541400, // 0137 MOVE R21 R10 - 0x5C582000, // 0138 MOVE R22 R16 - 0x7C480800, // 0139 CALL R18 4 - 0x584C000A, // 013A LDCONST R19 K10 - 0x7C440400, // 013B CALL R17 2 - 0x8C442143, // 013C GETMET R17 R16 K67 - 0x5C4C1800, // 013D MOVE R19 R12 - 0x7C440400, // 013E CALL R17 2 - 0x70020006, // 013F JMP #0147 - 0xB8361000, // 0140 GETNGBL R13 K8 - 0x60380018, // 0141 GETGBL R14 G24 - 0x583C0044, // 0142 LDCONST R15 K68 - 0x5C401400, // 0143 MOVE R16 R10 - 0x7C380400, // 0144 CALL R14 2 - 0x583C000A, // 0145 LDCONST R15 K10 - 0x7C340400, // 0146 CALL R13 2 - 0x70020037, // 0147 JMP #0180 - 0x8C280536, // 0148 GETMET R10 R2 K54 - 0x5C301200, // 0149 MOVE R12 R9 - 0x58340045, // 014A LDCONST R13 K69 - 0x7C280600, // 014B CALL R10 3 - 0x1C28152A, // 014C EQ R10 R10 K42 - 0x782A0031, // 014D JMPF R10 #0180 - 0x60280009, // 014E GETGBL R10 G9 - 0x402E1537, // 014F CONNECT R11 K10 K55 - 0x942C120B, // 0150 GETIDX R11 R9 R11 - 0x7C280200, // 0151 CALL R10 1 - 0x8C2C030D, // 0152 GETMET R11 R1 K13 - 0x5C341000, // 0153 MOVE R13 R8 - 0x7C2C0400, // 0154 CALL R11 2 - 0x8830010B, // 0155 GETMBR R12 R0 K11 - 0x88301938, // 0156 GETMBR R12 R12 K56 - 0x8C301936, // 0157 GETMET R12 R12 K54 - 0x60380008, // 0158 GETGBL R14 G8 - 0x5C3C1400, // 0159 MOVE R15 R10 - 0x7C380200, // 015A CALL R14 1 - 0x7C300400, // 015B CALL R12 2 - 0x4C340000, // 015C LDNIL R13 - 0x2034180D, // 015D NE R13 R12 R13 - 0x78360020, // 015E JMPF R13 #0180 - 0x8C341936, // 015F GETMET R13 R12 K54 - 0x583C0046, // 0160 LDCONST R15 K70 - 0x5840003B, // 0161 LDCONST R16 K59 - 0x7C340600, // 0162 CALL R13 3 - 0x20381A0B, // 0163 NE R14 R13 R11 - 0x783A001A, // 0164 JMPF R14 #0180 - 0x50180200, // 0165 LDBOOL R6 1 0 - 0x883C010B, // 0166 GETMBR R15 R0 K11 - 0x8C3C1F41, // 0167 GETMET R15 R15 K65 - 0x5C441400, // 0168 MOVE R17 R10 - 0x7C3C0400, // 0169 CALL R15 2 - 0x783E0014, // 016A JMPF R15 #0180 - 0x8C401F47, // 016B GETMET R16 R15 K71 - 0x5C481600, // 016C MOVE R18 R11 - 0x7C400400, // 016D CALL R16 2 - 0x782E0001, // 016E JMPF R11 #0171 - 0x98328C0B, // 016F SETIDX R12 K70 R11 - 0x70020002, // 0170 JMP #0174 - 0x8C401948, // 0171 GETMET R16 R12 K72 - 0x58480046, // 0172 LDCONST R18 K70 - 0x7C400400, // 0173 CALL R16 2 - 0xB8421000, // 0174 GETNGBL R16 K8 - 0x60440018, // 0175 GETGBL R17 G24 - 0x58480049, // 0176 LDCONST R18 K73 - 0x5C4C1800, // 0177 MOVE R19 R12 - 0x5C501400, // 0178 MOVE R20 R10 - 0x5C541E00, // 0179 MOVE R21 R15 - 0x7C440800, // 017A CALL R17 4 - 0x5848000A, // 017B LDCONST R18 K10 - 0x7C400400, // 017C CALL R16 2 - 0x8C401F43, // 017D GETMET R16 R15 K67 - 0x5C481800, // 017E MOVE R18 R12 - 0x7C400400, // 017F CALL R16 2 - 0x7001FF63, // 0180 JMP #00E5 - 0x581C004A, // 0181 LDCONST R7 K74 - 0xAC1C0200, // 0182 CATCH R7 1 0 - 0xB0080000, // 0183 RAISE 2 R0 R0 - 0xB81E1000, // 0184 GETNGBL R7 K8 - 0x60200018, // 0185 GETGBL R8 G24 - 0x5824004B, // 0186 LDCONST R9 K75 - 0x60280008, // 0187 GETGBL R10 G8 - 0x882C010B, // 0188 GETMBR R11 R0 K11 - 0x882C1738, // 0189 GETMBR R11 R11 K56 - 0x7C280200, // 018A CALL R10 1 - 0x7C200400, // 018B CALL R8 2 - 0x5824000A, // 018C LDCONST R9 K10 - 0x7C1C0400, // 018D CALL R7 2 - 0x78160007, // 018E JMPF R5 #0197 - 0xB81E1000, // 018F GETNGBL R7 K8 - 0x60200018, // 0190 GETGBL R8 G24 - 0x5824004C, // 0191 LDCONST R9 K76 - 0x5C280A00, // 0192 MOVE R10 R5 - 0x7C200400, // 0193 CALL R8 2 - 0x5824000A, // 0194 LDCONST R9 K10 - 0x7C1C0400, // 0195 CALL R7 2 - 0x7002000C, // 0196 JMP #01A4 - 0x741A0002, // 0197 JMPT R6 #019B - 0x881C010B, // 0198 GETMBR R7 R0 K11 - 0x881C0F4D, // 0199 GETMBR R7 R7 K77 - 0x741E0005, // 019A JMPT R7 #01A1 - 0x881C010B, // 019B GETMBR R7 R0 K11 - 0x50200200, // 019C LDBOOL R8 1 0 - 0x901E9A08, // 019D SETMBR R7 K77 R8 - 0x881C010B, // 019E GETMBR R7 R0 K11 - 0x8C1C0F12, // 019F GETMET R7 R7 K18 - 0x7C1C0200, // 01A0 CALL R7 1 - 0x8C1C0313, // 01A1 GETMET R7 R1 K19 - 0x5824004E, // 01A2 LDCONST R9 K78 - 0x7C1C0400, // 01A3 CALL R7 2 - 0x700200B9, // 01A4 JMP #025F - 0x8C180305, // 01A5 GETMET R6 R1 K5 - 0x5820004F, // 01A6 LDCONST R8 K79 - 0x7C180400, // 01A7 CALL R6 2 - 0x781A002A, // 01A8 JMPF R6 #01D4 - 0x8C18030D, // 01A9 GETMET R6 R1 K13 - 0x58200050, // 01AA LDCONST R8 K80 - 0x7C180400, // 01AB CALL R6 2 - 0x8C1C030D, // 01AC GETMET R7 R1 K13 - 0x5824000D, // 01AD LDCONST R9 K13 - 0x7C1C0400, // 01AE CALL R7 2 - 0x8C20030D, // 01AF GETMET R8 R1 K13 - 0x58280045, // 01B0 LDCONST R10 K69 - 0x7C200400, // 01B1 CALL R8 2 - 0xB8261000, // 01B2 GETNGBL R9 K8 - 0x60280018, // 01B3 GETGBL R10 G24 - 0x582C0051, // 01B4 LDCONST R11 K81 - 0x5C300C00, // 01B5 MOVE R12 R6 - 0x5C340E00, // 01B6 MOVE R13 R7 - 0x7C280600, // 01B7 CALL R10 3 - 0x582C000A, // 01B8 LDCONST R11 K10 - 0x7C240400, // 01B9 CALL R9 2 - 0x8824010B, // 01BA GETMBR R9 R0 K11 - 0x88241339, // 01BB GETMBR R9 R9 K57 - 0x8C241336, // 01BC GETMET R9 R9 K54 - 0x5C2C0C00, // 01BD MOVE R11 R6 - 0x7C240400, // 01BE CALL R9 2 - 0x4C280000, // 01BF LDNIL R10 - 0x2028120A, // 01C0 NE R10 R9 R10 - 0x782A000D, // 01C1 JMPF R10 #01D0 - 0x60280013, // 01C2 GETGBL R10 G19 - 0x7C280000, // 01C3 CALL R10 0 - 0x78220000, // 01C4 JMPF R8 #01C6 - 0x982A8C08, // 01C5 SETIDX R10 K70 R8 - 0x8C2C1340, // 01C6 GETMET R11 R9 K64 - 0x5C341200, // 01C7 MOVE R13 R9 - 0x5C381400, // 01C8 MOVE R14 R10 - 0x5C3C0E00, // 01C9 MOVE R15 R7 - 0x7C2C0800, // 01CA CALL R11 4 - 0x882C010B, // 01CB GETMBR R11 R0 K11 - 0x8C2C1752, // 01CC GETMET R11 R11 K82 - 0x5C340C00, // 01CD MOVE R13 R6 - 0x5C381400, // 01CE MOVE R14 R10 - 0x7C2C0600, // 01CF CALL R11 3 - 0x8C280313, // 01D0 GETMET R10 R1 K19 - 0x5830004E, // 01D1 LDCONST R12 K78 - 0x7C280400, // 01D2 CALL R10 2 - 0x7002008A, // 01D3 JMP #025F - 0x8C180305, // 01D4 GETMET R6 R1 K5 - 0x58200053, // 01D5 LDCONST R8 K83 - 0x7C180400, // 01D6 CALL R6 2 - 0x781A005D, // 01D7 JMPF R6 #0236 - 0x8C18030D, // 01D8 GETMET R6 R1 K13 - 0x58200054, // 01D9 LDCONST R8 K84 - 0x7C180400, // 01DA CALL R6 2 - 0x4C1C0000, // 01DB LDNIL R7 - 0x1C1C0C07, // 01DC EQ R7 R6 R7 - 0x741E0001, // 01DD JMPT R7 #01E0 - 0x1C1C0D3B, // 01DE EQ R7 R6 K59 - 0x781E0000, // 01DF JMPF R7 #01E1 - 0xB006AB56, // 01E0 RAISE 1 K85 K86 - 0x581C002A, // 01E1 LDCONST R7 K42 - 0x60200008, // 01E2 GETGBL R8 G8 - 0x5C240E00, // 01E3 MOVE R9 R7 - 0x7C200200, // 01E4 CALL R8 1 - 0x8C240305, // 01E5 GETMET R9 R1 K5 - 0x002EA008, // 01E6 ADD R11 K80 R8 - 0x7C240400, // 01E7 CALL R9 2 - 0x78260048, // 01E8 JMPF R9 #0232 - 0x8C24030D, // 01E9 GETMET R9 R1 K13 - 0x002EA008, // 01EA ADD R11 K80 R8 - 0x7C240400, // 01EB CALL R9 2 - 0x8C28030D, // 01EC GETMET R10 R1 K13 - 0x00321A08, // 01ED ADD R12 K13 R8 - 0x7C280400, // 01EE CALL R10 2 - 0x8C2C030D, // 01EF GETMET R11 R1 K13 - 0x00368A08, // 01F0 ADD R13 K69 R8 - 0x7C2C0400, // 01F1 CALL R11 2 - 0x2030133B, // 01F2 NE R12 R9 K59 - 0x78320037, // 01F3 JMPF R12 #022C - 0x8830010B, // 01F4 GETMBR R12 R0 K11 - 0x88301939, // 01F5 GETMBR R12 R12 K57 - 0x8C301936, // 01F6 GETMET R12 R12 K54 - 0x5C381200, // 01F7 MOVE R14 R9 - 0x7C300400, // 01F8 CALL R12 2 - 0x4C340000, // 01F9 LDNIL R13 - 0x2034180D, // 01FA NE R13 R12 R13 - 0x7836002F, // 01FB JMPF R13 #022C - 0x60340013, // 01FC GETGBL R13 G19 - 0x7C340000, // 01FD CALL R13 0 - 0x9836A806, // 01FE SETIDX R13 K84 R6 - 0x98367409, // 01FF SETIDX R13 K58 R9 - 0x782E0000, // 0200 JMPF R11 #0202 - 0x98368C0B, // 0201 SETIDX R13 K70 R11 - 0x8C381940, // 0202 GETMET R14 R12 K64 - 0x5C401800, // 0203 MOVE R16 R12 - 0x5C441A00, // 0204 MOVE R17 R13 - 0x5C481400, // 0205 MOVE R18 R10 - 0x7C380800, // 0206 CALL R14 4 - 0x50380000, // 0207 LDBOOL R14 0 0 - 0x603C0010, // 0208 GETGBL R15 G16 - 0x8840010B, // 0209 GETMBR R16 R0 K11 - 0x88402138, // 020A GETMBR R16 R16 K56 - 0x7C3C0200, // 020B CALL R15 1 - 0xA802000B, // 020C EXBLK 0 #0219 - 0x5C401E00, // 020D MOVE R16 R15 - 0x7C400000, // 020E CALL R16 0 - 0x8C440157, // 020F GETMET R17 R0 K87 - 0x5C4C2000, // 0210 MOVE R19 R16 - 0x5C501A00, // 0211 MOVE R20 R13 - 0x7C440600, // 0212 CALL R17 3 - 0x78460001, // 0213 JMPF R17 #0216 - 0x50380200, // 0214 LDBOOL R14 1 0 - 0x70020000, // 0215 JMP #0217 - 0x7001FFF5, // 0216 JMP #020D - 0xA8040001, // 0217 EXBLK 1 1 - 0x70020002, // 0218 JMP #021C - 0x583C004A, // 0219 LDCONST R15 K74 - 0xAC3C0200, // 021A CATCH R15 1 0 - 0xB0080000, // 021B RAISE 2 R0 R0 - 0x5C3C1C00, // 021C MOVE R15 R14 - 0x743E000D, // 021D JMPT R15 #022C - 0xB83E1000, // 021E GETNGBL R15 K8 - 0x60400018, // 021F GETGBL R16 G24 - 0x58440058, // 0220 LDCONST R17 K88 - 0x5C480C00, // 0221 MOVE R18 R6 - 0x5C4C1200, // 0222 MOVE R19 R9 - 0x5C501400, // 0223 MOVE R20 R10 - 0x7C400800, // 0224 CALL R16 4 - 0x5844000A, // 0225 LDCONST R17 K10 - 0x7C3C0400, // 0226 CALL R15 2 - 0x883C010B, // 0227 GETMBR R15 R0 K11 - 0x8C3C1F52, // 0228 GETMET R15 R15 K82 - 0x5C441200, // 0229 MOVE R17 R9 - 0x5C481A00, // 022A MOVE R18 R13 - 0x7C3C0600, // 022B CALL R15 3 - 0x001C0F2F, // 022C ADD R7 R7 K47 - 0x60300008, // 022D GETGBL R12 G8 - 0x5C340E00, // 022E MOVE R13 R7 - 0x7C300200, // 022F CALL R12 1 - 0x5C201800, // 0230 MOVE R8 R12 - 0x7001FFB2, // 0231 JMP #01E5 - 0x8C240313, // 0232 GETMET R9 R1 K19 - 0x582C004E, // 0233 LDCONST R11 K78 - 0x7C240400, // 0234 CALL R9 2 - 0x70020028, // 0235 JMP #025F - 0x4C180000, // 0236 LDNIL R6 - 0x601C0010, // 0237 GETGBL R7 G16 - 0x8C200334, // 0238 GETMET R8 R1 K52 - 0x7C200200, // 0239 CALL R8 1 - 0x0420112F, // 023A SUB R8 R8 K47 - 0x40225408, // 023B CONNECT R8 K42 R8 - 0x7C1C0200, // 023C CALL R7 1 - 0xA8020013, // 023D EXBLK 0 #0252 - 0x5C200E00, // 023E MOVE R8 R7 - 0x7C200000, // 023F CALL R8 0 - 0x8C240335, // 0240 GETMET R9 R1 K53 - 0x5C2C1000, // 0241 MOVE R11 R8 - 0x7C240400, // 0242 CALL R9 2 - 0x8C280536, // 0243 GETMET R10 R2 K54 - 0x5C301200, // 0244 MOVE R12 R9 - 0x58340059, // 0245 LDCONST R13 K89 - 0x7C280600, // 0246 CALL R10 3 - 0x1C28152A, // 0247 EQ R10 R10 K42 - 0x782A0005, // 0248 JMPF R10 #024F - 0x60280009, // 0249 GETGBL R10 G9 - 0x402E1537, // 024A CONNECT R11 K10 K55 - 0x942C120B, // 024B GETIDX R11 R9 R11 - 0x7C280200, // 024C CALL R10 1 - 0x5C181400, // 024D MOVE R6 R10 - 0x70020000, // 024E JMP #0250 - 0x7001FFED, // 024F JMP #023E - 0xA8040001, // 0250 EXBLK 1 1 - 0x70020002, // 0251 JMP #0255 - 0x581C004A, // 0252 LDCONST R7 K74 - 0xAC1C0200, // 0253 CATCH R7 1 0 - 0xB0080000, // 0254 RAISE 2 R0 R0 - 0x4C1C0000, // 0255 LDNIL R7 - 0x201C0C07, // 0256 NE R7 R6 R7 - 0x781E0006, // 0257 JMPF R7 #025F - 0x881C010B, // 0258 GETMBR R7 R0 K11 - 0x8C1C0F5A, // 0259 GETMET R7 R7 K90 - 0x5C240C00, // 025A MOVE R9 R6 - 0x7C1C0400, // 025B CALL R7 2 - 0x8C1C0313, // 025C GETMET R7 R1 K19 - 0x5824004E, // 025D LDCONST R9 K78 - 0x7C1C0400, // 025E CALL R7 2 - 0x78160011, // 025F JMPF R5 #0272 - 0x8C18035B, // 0260 GETMET R6 R1 K91 - 0x5820005C, // 0261 LDCONST R8 K92 - 0x7C180400, // 0262 CALL R6 2 - 0x8C18035D, // 0263 GETMET R6 R1 K93 - 0x7C180200, // 0264 CALL R6 1 - 0x8C18035E, // 0265 GETMET R6 R1 K94 - 0x60200018, // 0266 GETGBL R8 G24 - 0x5824005F, // 0267 LDCONST R9 K95 - 0x8C280360, // 0268 GETMET R10 R1 K96 - 0x5C300A00, // 0269 MOVE R12 R5 - 0x7C280400, // 026A CALL R10 2 - 0x7C200400, // 026B CALL R8 2 - 0x7C180400, // 026C CALL R6 2 - 0x8C180361, // 026D GETMET R6 R1 K97 - 0x88200362, // 026E GETMBR R8 R1 K98 - 0x7C180400, // 026F CALL R6 2 - 0x8C180363, // 0270 GETMET R6 R1 K99 - 0x7C180200, // 0271 CALL R6 1 - 0xA8040001, // 0272 EXBLK 1 1 - 0x7002001C, // 0273 JMP #0291 - 0xAC180002, // 0274 CATCH R6 0 2 - 0x70020019, // 0275 JMP #0290 - 0xB8221000, // 0276 GETNGBL R8 K8 - 0x60240018, // 0277 GETGBL R9 G24 - 0x58280064, // 0278 LDCONST R10 K100 - 0x5C2C0C00, // 0279 MOVE R11 R6 - 0x5C300E00, // 027A MOVE R12 R7 - 0x7C240600, // 027B CALL R9 3 - 0x58280065, // 027C LDCONST R10 K101 - 0x7C200400, // 027D CALL R8 2 - 0x8C20035B, // 027E GETMET R8 R1 K91 - 0x5828005C, // 027F LDCONST R10 K92 - 0x7C200400, // 0280 CALL R8 2 - 0x8C20035D, // 0281 GETMET R8 R1 K93 - 0x7C200200, // 0282 CALL R8 1 - 0x8C20035E, // 0283 GETMET R8 R1 K94 - 0x60280018, // 0284 GETGBL R10 G24 - 0x582C0066, // 0285 LDCONST R11 K102 - 0x5C300C00, // 0286 MOVE R12 R6 - 0x5C340E00, // 0287 MOVE R13 R7 - 0x7C280600, // 0288 CALL R10 3 - 0x7C200400, // 0289 CALL R8 2 - 0x8C200361, // 028A GETMET R8 R1 K97 - 0x88280362, // 028B GETMBR R10 R1 K98 - 0x7C200400, // 028C CALL R8 2 - 0x8C200363, // 028D GETMET R8 R1 K99 - 0x7C200200, // 028E CALL R8 1 - 0x70020000, // 028F JMP #0291 - 0xB0080000, // 0290 RAISE 2 R0 R0 - 0x80000000, // 0291 RET 0 + 0x88241324, // 0087 GETMBR R9 R9 K36 + 0x8C241326, // 0088 GETMET R9 R9 K38 + 0x7C240200, // 0089 CALL R9 1 + 0x70020003, // 008A JMP #008F + 0x8824010B, // 008B GETMBR R9 R0 K11 + 0x88241324, // 008C GETMBR R9 R9 K36 + 0x8C241327, // 008D GETMET R9 R9 K39 + 0x7C240200, // 008E CALL R9 1 + 0x8C240313, // 008F GETMET R9 R1 K19 + 0x582C0028, // 0090 LDCONST R11 K40 + 0x7C240400, // 0091 CALL R9 2 + 0x70020002, // 0092 JMP #0096 + 0x8C240313, // 0093 GETMET R9 R1 K19 + 0x582C0028, // 0094 LDCONST R11 K40 + 0x7C240400, // 0095 CALL R9 2 + 0x700201C8, // 0096 JMP #0260 + 0x8C180305, // 0097 GETMET R6 R1 K5 + 0x58200029, // 0098 LDCONST R8 K41 + 0x7C180400, // 0099 CALL R6 2 + 0x781A0025, // 009A JMPF R6 #00C1 + 0xB81A1000, // 009B GETNGBL R6 K8 + 0x601C0018, // 009C GETGBL R7 G24 + 0x58200009, // 009D LDCONST R8 K9 + 0x58240029, // 009E LDCONST R9 K41 + 0x7C1C0400, // 009F CALL R7 2 + 0x5820000A, // 00A0 LDCONST R8 K10 + 0x7C180400, // 00A1 CALL R6 2 + 0x60180009, // 00A2 GETGBL R6 G9 + 0x8C1C030D, // 00A3 GETMET R7 R1 K13 + 0x58240029, // 00A4 LDCONST R9 K41 + 0x7C1C0400, // 00A5 CALL R7 2 + 0x7C180200, // 00A6 CALL R6 1 + 0x581C002A, // 00A7 LDCONST R7 K42 + 0x8820010B, // 00A8 GETMBR R8 R0 K11 + 0x8820112B, // 00A9 GETMBR R8 R8 K43 + 0x8820112C, // 00AA GETMBR R8 R8 K44 + 0x6024000C, // 00AB GETGBL R9 G12 + 0x5C281000, // 00AC MOVE R10 R8 + 0x7C240200, // 00AD CALL R9 1 + 0x14240E09, // 00AE LT R9 R7 R9 + 0x7826000C, // 00AF JMPF R9 #00BD + 0x94241007, // 00B0 GETIDX R9 R8 R7 + 0x8C24132D, // 00B1 GETMET R9 R9 K45 + 0x7C240200, // 00B2 CALL R9 1 + 0x1C241206, // 00B3 EQ R9 R9 R6 + 0x78260005, // 00B4 JMPF R9 #00BB + 0x8824010B, // 00B5 GETMBR R9 R0 K11 + 0x8C24132E, // 00B6 GETMET R9 R9 K46 + 0x942C1007, // 00B7 GETIDX R11 R8 R7 + 0x7C240400, // 00B8 CALL R9 2 + 0x70020002, // 00B9 JMP #00BD + 0x70020000, // 00BA JMP #00BC + 0x001C0F2F, // 00BB ADD R7 R7 K47 + 0x7001FFED, // 00BC JMP #00AB + 0x8C240313, // 00BD GETMET R9 R1 K19 + 0x582C0030, // 00BE LDCONST R11 K48 + 0x7C240400, // 00BF CALL R9 2 + 0x7002019E, // 00C0 JMP #0260 + 0x8C180305, // 00C1 GETMET R6 R1 K5 + 0x58200031, // 00C2 LDCONST R8 K49 + 0x7C180400, // 00C3 CALL R6 2 + 0x781A000D, // 00C4 JMPF R6 #00D3 + 0xB81A1000, // 00C5 GETNGBL R6 K8 + 0x601C0018, // 00C6 GETGBL R7 G24 + 0x58200009, // 00C7 LDCONST R8 K9 + 0x58240031, // 00C8 LDCONST R9 K49 + 0x7C1C0400, // 00C9 CALL R7 2 + 0x5820000A, // 00CA LDCONST R8 K10 + 0x7C180400, // 00CB CALL R6 2 + 0x8818010B, // 00CC GETMBR R6 R0 K11 + 0x8C180D32, // 00CD GETMET R6 R6 K50 + 0x7C180200, // 00CE CALL R6 1 + 0x8C180313, // 00CF GETMET R6 R1 K19 + 0x58200014, // 00D0 LDCONST R8 K20 + 0x7C180400, // 00D1 CALL R6 2 + 0x7002018C, // 00D2 JMP #0260 + 0x8C180305, // 00D3 GETMET R6 R1 K5 + 0x58200033, // 00D4 LDCONST R8 K51 + 0x7C180400, // 00D5 CALL R6 2 + 0x781A00CE, // 00D6 JMPF R6 #01A6 + 0xB81A1000, // 00D7 GETNGBL R6 K8 + 0x601C0018, // 00D8 GETGBL R7 G24 + 0x58200009, // 00D9 LDCONST R8 K9 + 0x58240033, // 00DA LDCONST R9 K51 + 0x7C1C0400, // 00DB CALL R7 2 + 0x5820000A, // 00DC LDCONST R8 K10 + 0x7C180400, // 00DD CALL R6 2 + 0x50180000, // 00DE LDBOOL R6 0 0 + 0x601C0010, // 00DF GETGBL R7 G16 + 0x8C200334, // 00E0 GETMET R8 R1 K52 + 0x7C200200, // 00E1 CALL R8 1 + 0x0420112F, // 00E2 SUB R8 R8 K47 + 0x40225408, // 00E3 CONNECT R8 K42 R8 + 0x7C1C0200, // 00E4 CALL R7 1 + 0xA802009B, // 00E5 EXBLK 0 #0182 + 0x5C200E00, // 00E6 MOVE R8 R7 + 0x7C200000, // 00E7 CALL R8 0 + 0x8C240335, // 00E8 GETMET R9 R1 K53 + 0x5C2C1000, // 00E9 MOVE R11 R8 + 0x7C240400, // 00EA CALL R9 2 + 0x8C280536, // 00EB GETMET R10 R2 K54 + 0x5C301200, // 00EC MOVE R12 R9 + 0x5834000D, // 00ED LDCONST R13 K13 + 0x7C280600, // 00EE CALL R10 3 + 0x1C28152A, // 00EF EQ R10 R10 K42 + 0x782A0057, // 00F0 JMPF R10 #0149 + 0x60280009, // 00F1 GETGBL R10 G9 + 0x402E1537, // 00F2 CONNECT R11 K10 K55 + 0x942C120B, // 00F3 GETIDX R11 R9 R11 + 0x7C280200, // 00F4 CALL R10 1 + 0x8C2C030D, // 00F5 GETMET R11 R1 K13 + 0x5C341000, // 00F6 MOVE R13 R8 + 0x7C2C0400, // 00F7 CALL R11 2 + 0x8830010B, // 00F8 GETMBR R12 R0 K11 + 0x88301938, // 00F9 GETMBR R12 R12 K56 + 0x8C301936, // 00FA GETMET R12 R12 K54 + 0x60380008, // 00FB GETGBL R14 G8 + 0x5C3C1400, // 00FC MOVE R15 R10 + 0x7C380200, // 00FD CALL R14 1 + 0x7C300400, // 00FE CALL R12 2 + 0x4C340000, // 00FF LDNIL R13 + 0x2034180D, // 0100 NE R13 R12 R13 + 0x7836003E, // 0101 JMPF R13 #0141 + 0x8834010B, // 0102 GETMBR R13 R0 K11 + 0x88341B39, // 0103 GETMBR R13 R13 K57 + 0x8C341B36, // 0104 GETMET R13 R13 K54 + 0x8C3C1936, // 0105 GETMET R15 R12 K54 + 0x5844003A, // 0106 LDCONST R17 K58 + 0x5848003B, // 0107 LDCONST R18 K59 + 0x7C3C0600, // 0108 CALL R15 3 + 0x7C340400, // 0109 CALL R13 2 + 0x4C380000, // 010A LDNIL R14 + 0x20381A0E, // 010B NE R14 R13 R14 + 0x783A0032, // 010C JMPF R14 #0140 + 0xB83A1000, // 010D GETNGBL R14 K8 + 0x603C0018, // 010E GETGBL R15 G24 + 0x5840003C, // 010F LDCONST R16 K60 + 0x5C441400, // 0110 MOVE R17 R10 + 0x5C481600, // 0111 MOVE R18 R11 + 0x7C3C0600, // 0112 CALL R15 3 + 0x5840000A, // 0113 LDCONST R16 K10 + 0x7C380400, // 0114 CALL R14 2 + 0x8C381B3D, // 0115 GETMET R14 R13 K61 + 0x5C401A00, // 0116 MOVE R16 R13 + 0x5C441800, // 0117 MOVE R17 R12 + 0x7C380600, // 0118 CALL R14 3 + 0x203C1C0B, // 0119 NE R15 R14 R11 + 0xB8421000, // 011A GETNGBL R16 K8 + 0x60440018, // 011B GETGBL R17 G24 + 0x5848003E, // 011C LDCONST R18 K62 + 0x5C4C1400, // 011D MOVE R19 R10 + 0x5C501C00, // 011E MOVE R20 R14 + 0x5C541600, // 011F MOVE R21 R11 + 0x20581C0B, // 0120 NE R22 R14 R11 + 0x785A0001, // 0121 JMPF R22 #0124 + 0x5858003F, // 0122 LDCONST R22 K63 + 0x70020000, // 0123 JMP #0125 + 0x5858003B, // 0124 LDCONST R22 K59 + 0x7C440A00, // 0125 CALL R17 5 + 0x5848000A, // 0126 LDCONST R18 K10 + 0x7C400400, // 0127 CALL R16 2 + 0x783E0016, // 0128 JMPF R15 #0140 + 0x50180200, // 0129 LDBOOL R6 1 0 + 0x8C401B40, // 012A GETMET R16 R13 K64 + 0x5C481A00, // 012B MOVE R18 R13 + 0x5C4C1800, // 012C MOVE R19 R12 + 0x5C501600, // 012D MOVE R20 R11 + 0x7C400800, // 012E CALL R16 4 + 0x8840010B, // 012F GETMBR R16 R0 K11 + 0x8C402141, // 0130 GETMET R16 R16 K65 + 0x5C481400, // 0131 MOVE R18 R10 + 0x7C400400, // 0132 CALL R16 2 + 0x7842000B, // 0133 JMPF R16 #0140 + 0xB8461000, // 0134 GETNGBL R17 K8 + 0x60480018, // 0135 GETGBL R18 G24 + 0x584C0042, // 0136 LDCONST R19 K66 + 0x5C501800, // 0137 MOVE R20 R12 + 0x5C541400, // 0138 MOVE R21 R10 + 0x5C582000, // 0139 MOVE R22 R16 + 0x7C480800, // 013A CALL R18 4 + 0x584C000A, // 013B LDCONST R19 K10 + 0x7C440400, // 013C CALL R17 2 + 0x8C442143, // 013D GETMET R17 R16 K67 + 0x5C4C1800, // 013E MOVE R19 R12 + 0x7C440400, // 013F CALL R17 2 + 0x70020006, // 0140 JMP #0148 + 0xB8361000, // 0141 GETNGBL R13 K8 + 0x60380018, // 0142 GETGBL R14 G24 + 0x583C0044, // 0143 LDCONST R15 K68 + 0x5C401400, // 0144 MOVE R16 R10 + 0x7C380400, // 0145 CALL R14 2 + 0x583C000A, // 0146 LDCONST R15 K10 + 0x7C340400, // 0147 CALL R13 2 + 0x70020037, // 0148 JMP #0181 + 0x8C280536, // 0149 GETMET R10 R2 K54 + 0x5C301200, // 014A MOVE R12 R9 + 0x58340045, // 014B LDCONST R13 K69 + 0x7C280600, // 014C CALL R10 3 + 0x1C28152A, // 014D EQ R10 R10 K42 + 0x782A0031, // 014E JMPF R10 #0181 + 0x60280009, // 014F GETGBL R10 G9 + 0x402E1537, // 0150 CONNECT R11 K10 K55 + 0x942C120B, // 0151 GETIDX R11 R9 R11 + 0x7C280200, // 0152 CALL R10 1 + 0x8C2C030D, // 0153 GETMET R11 R1 K13 + 0x5C341000, // 0154 MOVE R13 R8 + 0x7C2C0400, // 0155 CALL R11 2 + 0x8830010B, // 0156 GETMBR R12 R0 K11 + 0x88301938, // 0157 GETMBR R12 R12 K56 + 0x8C301936, // 0158 GETMET R12 R12 K54 + 0x60380008, // 0159 GETGBL R14 G8 + 0x5C3C1400, // 015A MOVE R15 R10 + 0x7C380200, // 015B CALL R14 1 + 0x7C300400, // 015C CALL R12 2 + 0x4C340000, // 015D LDNIL R13 + 0x2034180D, // 015E NE R13 R12 R13 + 0x78360020, // 015F JMPF R13 #0181 + 0x8C341936, // 0160 GETMET R13 R12 K54 + 0x583C0046, // 0161 LDCONST R15 K70 + 0x5840003B, // 0162 LDCONST R16 K59 + 0x7C340600, // 0163 CALL R13 3 + 0x20381A0B, // 0164 NE R14 R13 R11 + 0x783A001A, // 0165 JMPF R14 #0181 + 0x50180200, // 0166 LDBOOL R6 1 0 + 0x883C010B, // 0167 GETMBR R15 R0 K11 + 0x8C3C1F41, // 0168 GETMET R15 R15 K65 + 0x5C441400, // 0169 MOVE R17 R10 + 0x7C3C0400, // 016A CALL R15 2 + 0x783E0014, // 016B JMPF R15 #0181 + 0x8C401F47, // 016C GETMET R16 R15 K71 + 0x5C481600, // 016D MOVE R18 R11 + 0x7C400400, // 016E CALL R16 2 + 0x782E0001, // 016F JMPF R11 #0172 + 0x98328C0B, // 0170 SETIDX R12 K70 R11 + 0x70020002, // 0171 JMP #0175 + 0x8C401948, // 0172 GETMET R16 R12 K72 + 0x58480046, // 0173 LDCONST R18 K70 + 0x7C400400, // 0174 CALL R16 2 + 0xB8421000, // 0175 GETNGBL R16 K8 + 0x60440018, // 0176 GETGBL R17 G24 + 0x58480049, // 0177 LDCONST R18 K73 + 0x5C4C1800, // 0178 MOVE R19 R12 + 0x5C501400, // 0179 MOVE R20 R10 + 0x5C541E00, // 017A MOVE R21 R15 + 0x7C440800, // 017B CALL R17 4 + 0x5848000A, // 017C LDCONST R18 K10 + 0x7C400400, // 017D CALL R16 2 + 0x8C401F43, // 017E GETMET R16 R15 K67 + 0x5C481800, // 017F MOVE R18 R12 + 0x7C400400, // 0180 CALL R16 2 + 0x7001FF63, // 0181 JMP #00E6 + 0x581C004A, // 0182 LDCONST R7 K74 + 0xAC1C0200, // 0183 CATCH R7 1 0 + 0xB0080000, // 0184 RAISE 2 R0 R0 + 0xB81E1000, // 0185 GETNGBL R7 K8 + 0x60200018, // 0186 GETGBL R8 G24 + 0x5824004B, // 0187 LDCONST R9 K75 + 0x60280008, // 0188 GETGBL R10 G8 + 0x882C010B, // 0189 GETMBR R11 R0 K11 + 0x882C1738, // 018A GETMBR R11 R11 K56 + 0x7C280200, // 018B CALL R10 1 + 0x7C200400, // 018C CALL R8 2 + 0x5824000A, // 018D LDCONST R9 K10 + 0x7C1C0400, // 018E CALL R7 2 + 0x78160007, // 018F JMPF R5 #0198 + 0xB81E1000, // 0190 GETNGBL R7 K8 + 0x60200018, // 0191 GETGBL R8 G24 + 0x5824004C, // 0192 LDCONST R9 K76 + 0x5C280A00, // 0193 MOVE R10 R5 + 0x7C200400, // 0194 CALL R8 2 + 0x5824000A, // 0195 LDCONST R9 K10 + 0x7C1C0400, // 0196 CALL R7 2 + 0x7002000C, // 0197 JMP #01A5 + 0x741A0002, // 0198 JMPT R6 #019C + 0x881C010B, // 0199 GETMBR R7 R0 K11 + 0x881C0F4D, // 019A GETMBR R7 R7 K77 + 0x741E0005, // 019B JMPT R7 #01A2 + 0x881C010B, // 019C GETMBR R7 R0 K11 + 0x50200200, // 019D LDBOOL R8 1 0 + 0x901E9A08, // 019E SETMBR R7 K77 R8 + 0x881C010B, // 019F GETMBR R7 R0 K11 + 0x8C1C0F12, // 01A0 GETMET R7 R7 K18 + 0x7C1C0200, // 01A1 CALL R7 1 + 0x8C1C0313, // 01A2 GETMET R7 R1 K19 + 0x5824004E, // 01A3 LDCONST R9 K78 + 0x7C1C0400, // 01A4 CALL R7 2 + 0x700200B9, // 01A5 JMP #0260 + 0x8C180305, // 01A6 GETMET R6 R1 K5 + 0x5820004F, // 01A7 LDCONST R8 K79 + 0x7C180400, // 01A8 CALL R6 2 + 0x781A002A, // 01A9 JMPF R6 #01D5 + 0x8C18030D, // 01AA GETMET R6 R1 K13 + 0x58200050, // 01AB LDCONST R8 K80 + 0x7C180400, // 01AC CALL R6 2 + 0x8C1C030D, // 01AD GETMET R7 R1 K13 + 0x5824000D, // 01AE LDCONST R9 K13 + 0x7C1C0400, // 01AF CALL R7 2 + 0x8C20030D, // 01B0 GETMET R8 R1 K13 + 0x58280045, // 01B1 LDCONST R10 K69 + 0x7C200400, // 01B2 CALL R8 2 + 0xB8261000, // 01B3 GETNGBL R9 K8 + 0x60280018, // 01B4 GETGBL R10 G24 + 0x582C0051, // 01B5 LDCONST R11 K81 + 0x5C300C00, // 01B6 MOVE R12 R6 + 0x5C340E00, // 01B7 MOVE R13 R7 + 0x7C280600, // 01B8 CALL R10 3 + 0x582C000A, // 01B9 LDCONST R11 K10 + 0x7C240400, // 01BA CALL R9 2 + 0x8824010B, // 01BB GETMBR R9 R0 K11 + 0x88241339, // 01BC GETMBR R9 R9 K57 + 0x8C241336, // 01BD GETMET R9 R9 K54 + 0x5C2C0C00, // 01BE MOVE R11 R6 + 0x7C240400, // 01BF CALL R9 2 + 0x4C280000, // 01C0 LDNIL R10 + 0x2028120A, // 01C1 NE R10 R9 R10 + 0x782A000D, // 01C2 JMPF R10 #01D1 + 0x60280013, // 01C3 GETGBL R10 G19 + 0x7C280000, // 01C4 CALL R10 0 + 0x78220000, // 01C5 JMPF R8 #01C7 + 0x982A8C08, // 01C6 SETIDX R10 K70 R8 + 0x8C2C1340, // 01C7 GETMET R11 R9 K64 + 0x5C341200, // 01C8 MOVE R13 R9 + 0x5C381400, // 01C9 MOVE R14 R10 + 0x5C3C0E00, // 01CA MOVE R15 R7 + 0x7C2C0800, // 01CB CALL R11 4 + 0x882C010B, // 01CC GETMBR R11 R0 K11 + 0x8C2C1752, // 01CD GETMET R11 R11 K82 + 0x5C340C00, // 01CE MOVE R13 R6 + 0x5C381400, // 01CF MOVE R14 R10 + 0x7C2C0600, // 01D0 CALL R11 3 + 0x8C280313, // 01D1 GETMET R10 R1 K19 + 0x5830004E, // 01D2 LDCONST R12 K78 + 0x7C280400, // 01D3 CALL R10 2 + 0x7002008A, // 01D4 JMP #0260 + 0x8C180305, // 01D5 GETMET R6 R1 K5 + 0x58200053, // 01D6 LDCONST R8 K83 + 0x7C180400, // 01D7 CALL R6 2 + 0x781A005D, // 01D8 JMPF R6 #0237 + 0x8C18030D, // 01D9 GETMET R6 R1 K13 + 0x58200054, // 01DA LDCONST R8 K84 + 0x7C180400, // 01DB CALL R6 2 + 0x4C1C0000, // 01DC LDNIL R7 + 0x1C1C0C07, // 01DD EQ R7 R6 R7 + 0x741E0001, // 01DE JMPT R7 #01E1 + 0x1C1C0D3B, // 01DF EQ R7 R6 K59 + 0x781E0000, // 01E0 JMPF R7 #01E2 + 0xB006AB56, // 01E1 RAISE 1 K85 K86 + 0x581C002A, // 01E2 LDCONST R7 K42 + 0x60200008, // 01E3 GETGBL R8 G8 + 0x5C240E00, // 01E4 MOVE R9 R7 + 0x7C200200, // 01E5 CALL R8 1 + 0x8C240305, // 01E6 GETMET R9 R1 K5 + 0x002EA008, // 01E7 ADD R11 K80 R8 + 0x7C240400, // 01E8 CALL R9 2 + 0x78260048, // 01E9 JMPF R9 #0233 + 0x8C24030D, // 01EA GETMET R9 R1 K13 + 0x002EA008, // 01EB ADD R11 K80 R8 + 0x7C240400, // 01EC CALL R9 2 + 0x8C28030D, // 01ED GETMET R10 R1 K13 + 0x00321A08, // 01EE ADD R12 K13 R8 + 0x7C280400, // 01EF CALL R10 2 + 0x8C2C030D, // 01F0 GETMET R11 R1 K13 + 0x00368A08, // 01F1 ADD R13 K69 R8 + 0x7C2C0400, // 01F2 CALL R11 2 + 0x2030133B, // 01F3 NE R12 R9 K59 + 0x78320037, // 01F4 JMPF R12 #022D + 0x8830010B, // 01F5 GETMBR R12 R0 K11 + 0x88301939, // 01F6 GETMBR R12 R12 K57 + 0x8C301936, // 01F7 GETMET R12 R12 K54 + 0x5C381200, // 01F8 MOVE R14 R9 + 0x7C300400, // 01F9 CALL R12 2 + 0x4C340000, // 01FA LDNIL R13 + 0x2034180D, // 01FB NE R13 R12 R13 + 0x7836002F, // 01FC JMPF R13 #022D + 0x60340013, // 01FD GETGBL R13 G19 + 0x7C340000, // 01FE CALL R13 0 + 0x9836A806, // 01FF SETIDX R13 K84 R6 + 0x98367409, // 0200 SETIDX R13 K58 R9 + 0x782E0000, // 0201 JMPF R11 #0203 + 0x98368C0B, // 0202 SETIDX R13 K70 R11 + 0x8C381940, // 0203 GETMET R14 R12 K64 + 0x5C401800, // 0204 MOVE R16 R12 + 0x5C441A00, // 0205 MOVE R17 R13 + 0x5C481400, // 0206 MOVE R18 R10 + 0x7C380800, // 0207 CALL R14 4 + 0x50380000, // 0208 LDBOOL R14 0 0 + 0x603C0010, // 0209 GETGBL R15 G16 + 0x8840010B, // 020A GETMBR R16 R0 K11 + 0x88402138, // 020B GETMBR R16 R16 K56 + 0x7C3C0200, // 020C CALL R15 1 + 0xA802000B, // 020D EXBLK 0 #021A + 0x5C401E00, // 020E MOVE R16 R15 + 0x7C400000, // 020F CALL R16 0 + 0x8C440157, // 0210 GETMET R17 R0 K87 + 0x5C4C2000, // 0211 MOVE R19 R16 + 0x5C501A00, // 0212 MOVE R20 R13 + 0x7C440600, // 0213 CALL R17 3 + 0x78460001, // 0214 JMPF R17 #0217 + 0x50380200, // 0215 LDBOOL R14 1 0 + 0x70020000, // 0216 JMP #0218 + 0x7001FFF5, // 0217 JMP #020E + 0xA8040001, // 0218 EXBLK 1 1 + 0x70020002, // 0219 JMP #021D + 0x583C004A, // 021A LDCONST R15 K74 + 0xAC3C0200, // 021B CATCH R15 1 0 + 0xB0080000, // 021C RAISE 2 R0 R0 + 0x5C3C1C00, // 021D MOVE R15 R14 + 0x743E000D, // 021E JMPT R15 #022D + 0xB83E1000, // 021F GETNGBL R15 K8 + 0x60400018, // 0220 GETGBL R16 G24 + 0x58440058, // 0221 LDCONST R17 K88 + 0x5C480C00, // 0222 MOVE R18 R6 + 0x5C4C1200, // 0223 MOVE R19 R9 + 0x5C501400, // 0224 MOVE R20 R10 + 0x7C400800, // 0225 CALL R16 4 + 0x5844000A, // 0226 LDCONST R17 K10 + 0x7C3C0400, // 0227 CALL R15 2 + 0x883C010B, // 0228 GETMBR R15 R0 K11 + 0x8C3C1F52, // 0229 GETMET R15 R15 K82 + 0x5C441200, // 022A MOVE R17 R9 + 0x5C481A00, // 022B MOVE R18 R13 + 0x7C3C0600, // 022C CALL R15 3 + 0x001C0F2F, // 022D ADD R7 R7 K47 + 0x60300008, // 022E GETGBL R12 G8 + 0x5C340E00, // 022F MOVE R13 R7 + 0x7C300200, // 0230 CALL R12 1 + 0x5C201800, // 0231 MOVE R8 R12 + 0x7001FFB2, // 0232 JMP #01E6 + 0x8C240313, // 0233 GETMET R9 R1 K19 + 0x582C004E, // 0234 LDCONST R11 K78 + 0x7C240400, // 0235 CALL R9 2 + 0x70020028, // 0236 JMP #0260 + 0x4C180000, // 0237 LDNIL R6 + 0x601C0010, // 0238 GETGBL R7 G16 + 0x8C200334, // 0239 GETMET R8 R1 K52 + 0x7C200200, // 023A CALL R8 1 + 0x0420112F, // 023B SUB R8 R8 K47 + 0x40225408, // 023C CONNECT R8 K42 R8 + 0x7C1C0200, // 023D CALL R7 1 + 0xA8020013, // 023E EXBLK 0 #0253 + 0x5C200E00, // 023F MOVE R8 R7 + 0x7C200000, // 0240 CALL R8 0 + 0x8C240335, // 0241 GETMET R9 R1 K53 + 0x5C2C1000, // 0242 MOVE R11 R8 + 0x7C240400, // 0243 CALL R9 2 + 0x8C280536, // 0244 GETMET R10 R2 K54 + 0x5C301200, // 0245 MOVE R12 R9 + 0x58340059, // 0246 LDCONST R13 K89 + 0x7C280600, // 0247 CALL R10 3 + 0x1C28152A, // 0248 EQ R10 R10 K42 + 0x782A0005, // 0249 JMPF R10 #0250 + 0x60280009, // 024A GETGBL R10 G9 + 0x402E1537, // 024B CONNECT R11 K10 K55 + 0x942C120B, // 024C GETIDX R11 R9 R11 + 0x7C280200, // 024D CALL R10 1 + 0x5C181400, // 024E MOVE R6 R10 + 0x70020000, // 024F JMP #0251 + 0x7001FFED, // 0250 JMP #023F + 0xA8040001, // 0251 EXBLK 1 1 + 0x70020002, // 0252 JMP #0256 + 0x581C004A, // 0253 LDCONST R7 K74 + 0xAC1C0200, // 0254 CATCH R7 1 0 + 0xB0080000, // 0255 RAISE 2 R0 R0 + 0x4C1C0000, // 0256 LDNIL R7 + 0x201C0C07, // 0257 NE R7 R6 R7 + 0x781E0006, // 0258 JMPF R7 #0260 + 0x881C010B, // 0259 GETMBR R7 R0 K11 + 0x8C1C0F5A, // 025A GETMET R7 R7 K90 + 0x5C240C00, // 025B MOVE R9 R6 + 0x7C1C0400, // 025C CALL R7 2 + 0x8C1C0313, // 025D GETMET R7 R1 K19 + 0x5824004E, // 025E LDCONST R9 K78 + 0x7C1C0400, // 025F CALL R7 2 + 0x78160011, // 0260 JMPF R5 #0273 + 0x8C18035B, // 0261 GETMET R6 R1 K91 + 0x5820005C, // 0262 LDCONST R8 K92 + 0x7C180400, // 0263 CALL R6 2 + 0x8C18035D, // 0264 GETMET R6 R1 K93 + 0x7C180200, // 0265 CALL R6 1 + 0x8C18035E, // 0266 GETMET R6 R1 K94 + 0x60200018, // 0267 GETGBL R8 G24 + 0x5824005F, // 0268 LDCONST R9 K95 + 0x8C280360, // 0269 GETMET R10 R1 K96 + 0x5C300A00, // 026A MOVE R12 R5 + 0x7C280400, // 026B CALL R10 2 + 0x7C200400, // 026C CALL R8 2 + 0x7C180400, // 026D CALL R6 2 + 0x8C180361, // 026E GETMET R6 R1 K97 + 0x88200362, // 026F GETMBR R8 R1 K98 + 0x7C180400, // 0270 CALL R6 2 + 0x8C180363, // 0271 GETMET R6 R1 K99 + 0x7C180200, // 0272 CALL R6 1 + 0xA8040001, // 0273 EXBLK 1 1 + 0x7002001C, // 0274 JMP #0292 + 0xAC180002, // 0275 CATCH R6 0 2 + 0x70020019, // 0276 JMP #0291 + 0xB8221000, // 0277 GETNGBL R8 K8 + 0x60240018, // 0278 GETGBL R9 G24 + 0x58280064, // 0279 LDCONST R10 K100 + 0x5C2C0C00, // 027A MOVE R11 R6 + 0x5C300E00, // 027B MOVE R12 R7 + 0x7C240600, // 027C CALL R9 3 + 0x58280065, // 027D LDCONST R10 K101 + 0x7C200400, // 027E CALL R8 2 + 0x8C20035B, // 027F GETMET R8 R1 K91 + 0x5828005C, // 0280 LDCONST R10 K92 + 0x7C200400, // 0281 CALL R8 2 + 0x8C20035D, // 0282 GETMET R8 R1 K93 + 0x7C200200, // 0283 CALL R8 1 + 0x8C20035E, // 0284 GETMET R8 R1 K94 + 0x60280018, // 0285 GETGBL R10 G24 + 0x582C0066, // 0286 LDCONST R11 K102 + 0x5C300C00, // 0287 MOVE R12 R6 + 0x5C340E00, // 0288 MOVE R13 R7 + 0x7C280600, // 0289 CALL R10 3 + 0x7C200400, // 028A CALL R8 2 + 0x8C200361, // 028B GETMET R8 R1 K97 + 0x88280362, // 028C GETMBR R10 R1 K98 + 0x7C200400, // 028D CALL R8 2 + 0x8C200363, // 028E GETMET R8 R1 K99 + 0x7C200200, // 028F CALL R8 1 + 0x70020000, // 0290 JMP #0292 + 0xB0080000, // 0291 RAISE 2 R0 R0 + 0x80000000, // 0292 RET 0 }) ) ); From d8cac9c811ce9e0182c8091e172cc73f57f78609 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 2 Aug 2024 18:14:36 +0200 Subject: [PATCH 226/252] Platform 2024.08.10 (#21893) * Platform 2024.08.10 (espressif32 Arduino core 3.0.4) --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- platformio_tasmota32.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 481df28dc..edb5f2c4e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR and the code change compiles without warnings - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.7 - - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.2 + - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.4 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). _NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_ diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index dd5162408..d8486c2e5 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -82,7 +82,7 @@ lib_ignore = ${esp32_defaults.lib_ignore} ccronexpr [core32] -platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.07.11/platform-espressif32.zip +platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.08.10/platform-espressif32.zip platform_packages = build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From 3c884118ed8e3f7f1ac8d95536babce3aabb0300 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 2 Aug 2024 19:42:11 +0200 Subject: [PATCH 227/252] Berry `zigbee.started()` (#21895) --- CHANGELOG.md | 1 + lib/libesp32/berry_tasmota/src/be_zigbee.c | 3 +++ .../tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino | 2 +- .../xdrv_52_3_berry_zigbee.ino | 15 +++++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91f9e9e7b..ec6ad0a97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to this project will be documented in this file. - Berry `file.savecode()` (#21884) - Berry `solidify.nocompact()` and reduce size of Matter UI (#21885) - Berry `zigbee.find()` +- Berry `zigbee.started()` ### Breaking Changed - Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887) diff --git a/lib/libesp32/berry_tasmota/src/be_zigbee.c b/lib/libesp32/berry_tasmota/src/be_zigbee.c index 0f4510aaf..7ec6f7bba 100644 --- a/lib/libesp32/berry_tasmota/src/be_zigbee.c +++ b/lib/libesp32/berry_tasmota/src/be_zigbee.c @@ -49,6 +49,7 @@ static int zd_member(bvm *vm) { be_return(vm); } +extern int zc_started(struct bvm *vm); extern int zc_info(struct bvm *vm); extern int zc_item(struct bvm *vm); extern int zc_find(struct bvm *vm); @@ -112,6 +113,8 @@ class be_class_zb_coord_ntv (scope: global, name: zb_coord_ntv, strings: weak) { zcl_attribute_list, class(be_class_zcl_attribute_list) zb_device, class(be_class_zb_device) + started, func(zc_started) + info, func(zc_info) item, func(zc_item) find, func(zc_find) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino index f010d2a2a..040a59d1a 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino @@ -2426,7 +2426,7 @@ void ZigbeeShow(bool json) zigbee.major_rel, zigbee.minor_rel, zigbee.maint_rel, zigbee.revision); WSContentSend_P(HTTP_BTN_ZB_BUTTONS); - } else { + } else if (zigbee.state_machine) { // show buttons only if the state machine is still running. If not running anymore, it means aborted uint32_t grey = WebColor(COL_FORM); WSContentSend_P(HTTP_BTN_ZB_BUTTONS_DISABLED, grey, grey); } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino index 390859afe..e2c9d3fb8 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino @@ -75,6 +75,21 @@ extern "C" { extern "C" { // Zigbee Coordinator `zc` + + // `zigbee.started() -> bool or nil` + // Returns `true` if Zigbee sucessfully started, `false` if not yet started + // or `nil` if not configured or aborted + int zc_started(struct bvm *vm); + int zc_started(struct bvm *vm) { + // return `nil` if `zigbee.active` is false (i.e. no GPIO configured) + // or aborted, `zigbee.init_phase` is `true` but `zigbee.state_machine` is `false` + if (!zigbee.active || (!zigbee.state_machine && zigbee.init_phase)) { + be_return_nil(vm); + } + be_pushbool(vm, !zigbee.init_phase); + be_return(vm); + } + int zc_info(struct bvm *vm); int zc_info(struct bvm *vm) { int32_t top = be_top(vm); // Get the number of arguments From 73357b6cfdd13118f4dfb5144125e98b9606b9a3 Mon Sep 17 00:00:00 2001 From: Fabrizio Amodio <32312585+ZioFabry@users.noreply.github.com> Date: Sat, 3 Aug 2024 10:10:11 +0200 Subject: [PATCH 228/252] prevent spike on power ON on BioPDU (#21892) --- .../xnrg_24_esp32_biopdu.ino | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino b/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino index ac681fbf3..33ddf67b4 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino @@ -1,7 +1,7 @@ /* xnrg_24_biopdu.ino - BioPDU-625x12 (based on xnrg_05_pzem_ac.ino) - Copyright (C) 2023 Fabrizio Amodio + Copyright (C) 2023-24 Fabrizio Amodio This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,26 +21,36 @@ #if defined(USE_ENERGY_SENSOR) && defined(USE_I2C) #ifdef USE_BIOPDU /*********************************************************************************************\ - Biomine 625x12 Custom Board + Biomine 625x12 Custom Board rev 2.0 6 x 25A Relays - 6 x Independent PZEM-004V3 Modbus AC energy sensor + 6 x Independent PZEM-004T-100A-D-P Modbus AC energy sensor 3bit serial switch Integrated MCP23008 + SSD1309 OLED Display I2C - Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,10208,1,1,10176,0,0,1],"FLAG":0,"BASE":1} + Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,1,1,1,1,5568,1,1,1,1,6210,0,0,0,1,10208,1,1,10176,1,1,1],"FLAG":0,"BASE":1} BioPDU 625x12 Factory Settings: - Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,10208,1,1,10176,0,0,1],"FLAG":0,"BASE":1} + Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,1,1,1,1,5568,1,1,1,1,6210,0,0,0,1,10208,1,1,10176,1,1,1],"FLAG":0,"BASE":1} Module 0 EthType 0 EthAddress 0 EthClockMode 3 + SetOption21 1 SetOption26 1 + SetOption65 1 SetOption129 1 SetOption150 1 EnergyDisplay 1 EnergyCols 6 + displaymodel 17 + displaymode 0 + displayrows 8 + displaycols 25 + PowerOnState1 ON + PowerLock1 1 + TelePeriod 30 i2cscan Sensor29 0,1,0 Sensor29 1,5,2 @@ -61,12 +71,21 @@ USE_MCP230xx USE_MCP230xx_ADDR=0x20 USE_MCP230xx_OUTPUT + USE_DISPLAY + USE_UNIVERSAL_DISPLAY + USE_ALL_EPD_FONTS + USE_TINY_FONT USE_BIOPDU + +extra dirs: + + lib_extra_dirs = ${env:tasmota32_base.lib_extra_dirs} lib/libesp32, lib/lib_basic, lib/lib_display, lib/lib_ssl, lib/lib_rf, lib/lib_i2c, lib/lib_div + \*********************************************************************************************/ #define XNRG_24 24 -#define BIOPDU_MAX_PHASES 6 // BioPDU support max six phases/channels +#define BIOPDU_MAX_PHASES 6 // BioPDU support max six phases/channels const uint8_t BIOPDU_DEVICE_ADDRESS = 0x01; // PZEM default address const uint32_t BIOPDU_STABILIZE = 10; // Number of seconds to stabilize 1 device @@ -124,7 +143,7 @@ void BioPduEvery250ms(void) BioPdu.address_step--; } uint8_t error = BioPduModbus->ReceiveBuffer(buffer, registers); - AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, BioPduModbus->ReceiveCount()); + // AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, BioPduModbus->ReceiveCount()); if (error) { @@ -147,6 +166,21 @@ void BioPduEvery250ms(void) Energy->frequency[BioPdu.phase] = (float)((buffer[17] << 8) + buffer[18]) / 10.0f; // 50.0 Hz Energy->power_factor[BioPdu.phase] = (float)((buffer[19] << 8) + buffer[20]) / 100.0f; // 1.00 Energy->import_active[BioPdu.phase] = (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]) / 1000.0f; // 4294967.295 kWh + + // Sanity check to prevent spike on power ON + if (Energy->voltage[BioPdu.phase] < 0 || Energy->voltage[BioPdu.phase] > 300 // Voltage range 0-300 + || Energy->current[BioPdu.phase] < 0 || Energy->current[BioPdu.phase] > 25 // Ampere range 0-25 + || Energy->active_power[BioPdu.phase] < 0 || Energy->active_power[BioPdu.phase] > 5500) // Watt range 0-5500 + { + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("PDU: phase %d, spike detected"), BioPdu.phase); + + Energy->voltage[BioPdu.phase] = 0; + Energy->current[BioPdu.phase] = 0; + Energy->active_power[BioPdu.phase] = 0; + Energy->frequency[BioPdu.phase] = 0; + Energy->power_factor[BioPdu.phase] = 0; + Energy->import_active[BioPdu.phase] = 0; + } } } } @@ -291,6 +325,6 @@ bool Xnrg24(uint32_t function) return result; } -#endif // USE_BIOPDU -#endif // USE_ENERGY_SENSOR -#endif // ESP32 +#endif // USE_BIOPDU +#endif // USE_ENERGY_SENSOR +#endif // ESP32 From e5485288eb8fc5cc1fa7ab7657bcf88c69a172ab Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 3 Aug 2024 14:18:48 +0200 Subject: [PATCH 229/252] Update changelogs --- CHANGELOG.md | 6 ++++-- RELEASENOTES.md | 12 +++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec6ad0a97..26d39ac36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,8 +16,8 @@ All notable changes to this project will be documented in this file. - Berry new type "addr" to ctypes mapping (#21883) - Berry `file.savecode()` (#21884) - Berry `solidify.nocompact()` and reduce size of Matter UI (#21885) -- Berry `zigbee.find()` -- Berry `zigbee.started()` +- Berry `zigbee.find()` (#21889) +- Berry `zigbee.started()` (#21895) ### Breaking Changed - Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887) @@ -26,6 +26,8 @@ All notable changes to this project will be documented in this file. - Berry consolidated constants for solidified classes reduces Flash size (#2185) - Berry updated precompiled Windows binary (#21858) - Matter improve encoding of attributes to reduce flash size (#21864) +- ESP32 platform update from 2024.07.11 to 2024.08.10 (#21893) +- ESP32 Framework (Arduino Core) from v3.0.2 to v3.0.4 (#21893) ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d829777cb..e39d26a4f 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -36,9 +36,9 @@ While fallback or downgrading is common practice it was never supported due to S This release will be supported from ESP8266/Arduino library Core version **2.7.7** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. -This release will be supported from ESP32/Arduino library Core version **3.0.2**. +This release will be supported from ESP32/Arduino library Core version **3.0.4**. -Support of ESP8266 Core versions before 2.7.7 and ESP32 Core versions before 3.0.2 have been removed. +Support of ESP8266 Core versions before 2.7.7 and ESP32 Core versions before 3.0.4 have been removed. ### Known issues with v14.1.0 @@ -85,7 +85,7 @@ Historical binaries can be downloaded from The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` ### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based -The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.2**. +The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.4**. - **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY** - **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash. @@ -149,6 +149,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry new type "addr" to ctypes mapping [#21883](https://github.com/arendst/Tasmota/issues/21883) - Berry `file.savecode()` [#21884](https://github.com/arendst/Tasmota/issues/21884) - Berry `solidify.nocompact()` and reduce size of Matter UI [#21885](https://github.com/arendst/Tasmota/issues/21885) +- Berry `zigbee.find()` [#21889](https://github.com/arendst/Tasmota/issues/21889) +- Berry `zigbee.started()` [#21895](https://github.com/arendst/Tasmota/issues/21895) - HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599) - Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559) - Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597) @@ -166,8 +168,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668) -- ESP32 platform update from 2024.05.13 to 2024.07.11 [#21765](https://github.com/arendst/Tasmota/issues/21765) -- ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.2 [#21694](https://github.com/arendst/Tasmota/issues/21694) +- ESP32 platform update from 2024.05.13 to 2024.08.10 [#21893](https://github.com/arendst/Tasmota/issues/21893) +- ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.4 [#21893](https://github.com/arendst/Tasmota/issues/21893) - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 - Allow receive or send using SerialBridge From c7faff7ac69cc887c62ec23424bdb2d72f5eb2a4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 3 Aug 2024 17:52:47 +0200 Subject: [PATCH 230/252] Refactored Analog driver to better support multiple channels - Add command ``AdcGpio `` to better support ADC configuration --- CHANGELOG.md | 2 + RELEASENOTES.md | 2 + tasmota/include/i18n.h | 3 +- tasmota/include/tasmota_template.h | 19 - .../tasmota_xsns_sensor/xsns_02_analog.ino | 872 +++++++++--------- 5 files changed, 458 insertions(+), 440 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26d39ac36..3fea8d1ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. - Berry `solidify.nocompact()` and reduce size of Matter UI (#21885) - Berry `zigbee.find()` (#21889) - Berry `zigbee.started()` (#21895) +- Command ``AdcGpio `` to better support ADC configuration ### Breaking Changed - Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887) @@ -28,6 +29,7 @@ All notable changes to this project will be documented in this file. - Matter improve encoding of attributes to reduce flash size (#21864) - ESP32 platform update from 2024.07.11 to 2024.08.10 (#21893) - ESP32 Framework (Arduino Core) from v3.0.2 to v3.0.4 (#21893) +- Refactored Analog driver to better support multiple channels ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index e39d26a4f..cf2d4c46e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -121,6 +121,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ## Changelog v14.1.0.4 ### Added +- Command ``AdcGpio `` to better support ADC configuration - Support for QMP6988 temperature and pressure sensor - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` - Support for Sonoff iFan04-H using template [#16402](https://github.com/arendst/Tasmota/issues/16402) @@ -170,6 +171,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668) - ESP32 platform update from 2024.05.13 to 2024.08.10 [#21893](https://github.com/arendst/Tasmota/issues/21893) - ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.4 [#21893](https://github.com/arendst/Tasmota/issues/21893) +- Refactored Analog driver to better support multiple channels - Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain`` - Display timing splash screen with display modes 1 to 5 - Allow receive or send using SerialBridge diff --git a/tasmota/include/i18n.h b/tasmota/include/i18n.h index 08f3628ce..19575d65f 100644 --- a/tasmota/include/i18n.h +++ b/tasmota/include/i18n.h @@ -817,7 +817,8 @@ #define D_CMND_DALI_DIMMER "dim" // Commands xsns_02_analog.ino -#define D_CMND_ADCPARAM "AdcParam" +#define D_CMND_ADCGPIO "Gpio" +#define D_CMND_ADCPARAM "Param" // Commands xsns_05_ds18x20.ino #define D_CMND_DS_ALIAS "Alias" diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index e2a4dbe99..7005d81bf 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -1273,25 +1273,6 @@ const uint16_t kAdcNiceList[] PROGMEM = { }; #endif // ESP8266 -// User selectable ADC functionality -enum UserSelectableAdc { - ADC_NONE, // 0 = Not used - ADC_INPUT, // 1 = Analog input - ADC_TEMP, // 2 = Thermistor - ADC_LIGHT, // 3 =Light sensor - ADC_BUTTON, // 4 =Button - ADC_BUTTON_INV, // 5 = Inverted button - ADC_RANGE, // 6 = Range - ADC_CT_POWER, // 7 = Current - ADC_JOY, // 8 = Joystick - ADC_PH, // 9 = Analog PH Sensor - ADC_MQ, // 10 = Analog MQ Sensor - ADC_VOLTAGE, // 11 = Voltage - ADC_CURRENT, // 12 = Current -// ADC_SWITCH, // Switch -// ADC_SWITCH_INV, - ADC_END }; - /*********************************************************************************************\ * ATTENTION: No user changeable features beyond this point - do not add templates !!! \*********************************************************************************************/ diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 84649d3d8..59bca008c 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -93,7 +93,7 @@ // |---| |--- Gnd // | ---- // ADC -#define ANALOG_BUTTON 128 // Add resistor tolerance +#define ANALOG_BUTTON_THRESHOLD ANALOG_RANGE / 8 // Add resistor tolerance // Odroid joysticks // ---- Up @@ -104,7 +104,7 @@ // | // ADC // Press "Up" will raise ADC to ANALOG_RANGE, Press "Dn" will raise ADC to ANALOG_RANGE/2 -#define ANALOG_JOYSTICK (ANALOG_RANGE / 3) +100 // Add resistor tolerance +#define ANALOG_JOYSTICK_THRESHOLD (ANALOG_RANGE / 3) +100 // Add resistor tolerance // pH scale minimum and maximum values #define ANALOG_PH_MAX 14.0f @@ -157,7 +157,6 @@ struct { uint8_t present = 0; - uint8_t type = 0; } Adcs; struct { @@ -165,187 +164,28 @@ struct { float temperature = 0; float current = 0; float energy = 0; + uint32_t previous_millis = 0; uint32_t param1 = 0; uint32_t param2 = 0; int param3 = 0; int param4 = 0; int indexOfPointer = -1; - uint32_t previous_millis = 0; uint16_t last_value = 0; - uint8_t type = 0; + uint16_t type; uint8_t pin = 0; } Adc[MAX_ADCS]; -bool adcAttachPin(uint8_t pin) { -#ifdef ESP8266 - return (ADC0_PIN == pin); -#else // ESP32 - return true; -#endif // ESP32 -} - -void AdcSaveSettings(uint32_t idx) { - char parameters[32]; - snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d"), - Adc[idx].type, Adc[idx].param1, Adc[idx].param2, Adc[idx].param3, Adc[idx].param4); - SettingsUpdateText(SET_ADC_PARAM1 + idx, parameters); -} - -void AdcGetSettings(uint32_t idx) { - char parameters[32]; - Adcs.type = 0; - Adc[idx].param1 = 0; - Adc[idx].param2 = 0; - Adc[idx].param3 = 0; - Adc[idx].param4 = 0; - if (strchr(SettingsText(SET_ADC_PARAM1 + idx), ',') != nullptr) { - Adcs.type = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 1)); - Adc[idx].param1 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 2)); - Adc[idx].param2 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 3)); - Adc[idx].param3 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 4)); - Adc[idx].param4 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 5)); - } -} - -void AdcInitParams(uint8_t idx) { - if ((Adcs.type != Adc[idx].type) || (Adc[idx].param1 > 1000000)) { - switch (Adc[idx].type) { - case ADC_INPUT: - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 3; // Margin - Adc[idx].param4 = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command - break; - case ADC_TEMP: - // Default Shelly 2.5 and 1PM parameters - Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_NTC_RESISTANCE; - Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000; - Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND - break; - case ADC_LIGHT: - Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; - Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR; - Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; - break; - case ADC_RANGE: - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = 100; - break; - case ADC_CT_POWER: - Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 - Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 - Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10 - break; - case ADC_PH: - Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH - Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 - Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH - Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 - break; - case ADC_MQ: - Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... - Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - break; - case ADC_VOLTAGE: - case ADC_CURRENT: - Adc[idx].param1 = 0; - Adc[idx].param2 = ANALOG_RANGE; - Adc[idx].param3 = 0; - Adc[idx].param4 = ANALOG_V33 * 10000; - break; - } - } - if ((Adcs.type != Adc[idx].type) || (0 == Adc[idx].param1) || (Adc[idx].param1 > ANALOG_RANGE)) { - if ((ADC_BUTTON == Adc[idx].type) || (ADC_BUTTON_INV == Adc[idx].type)) { - Adc[idx].param1 = ANALOG_BUTTON; - } - else if (ADC_JOY == Adc[idx].type) { - Adc[idx].param1 = ANALOG_JOYSTICK; - } - } -} - -void AdcAttach(uint32_t pin, uint8_t type) { - if (Adcs.present == MAX_ADCS) { return; } - Adc[Adcs.present].pin = pin; - if (adcAttachPin(Adc[Adcs.present].pin)) { - if (ADC_MQ == type) { - Adc[Adcs.present].mq_samples = (float*)calloc(sizeof(float), ANALOG_MQ_SAMPLES); // Need calloc to reset registers to 0 - if (nullptr == Adc[Adcs.present].mq_samples) { return; } - } - Adc[Adcs.present].type = type; - Adcs.present++; - } -} - -void AdcInit(void) { - Adcs.present = 0; - for (uint32_t i = 0; i < MAX_ADCS; i++) { - if (PinUsed(GPIO_ADC_INPUT, i)) { - AdcAttach(Pin(GPIO_ADC_INPUT, i), ADC_INPUT); - } - if (PinUsed(GPIO_ADC_TEMP, i)) { - AdcAttach(Pin(GPIO_ADC_TEMP, i), ADC_TEMP); - } - if (PinUsed(GPIO_ADC_LIGHT, i)) { - AdcAttach(Pin(GPIO_ADC_LIGHT, i), ADC_LIGHT); - } - if (PinUsed(GPIO_ADC_RANGE, i)) { - AdcAttach(Pin(GPIO_ADC_RANGE, i), ADC_RANGE); - } - if (PinUsed(GPIO_ADC_CT_POWER, i)) { - AdcAttach(Pin(GPIO_ADC_CT_POWER, i), ADC_CT_POWER); - } - if (PinUsed(GPIO_ADC_JOY, i)) { - AdcAttach(Pin(GPIO_ADC_JOY, i), ADC_JOY); - } - if (PinUsed(GPIO_ADC_PH, i)) { - AdcAttach(Pin(GPIO_ADC_PH, i), ADC_PH); - } - if (PinUsed(GPIO_ADC_MQ, i)) { - AdcAttach(Pin(GPIO_ADC_MQ, i), ADC_MQ); - } - if (PinUsed(GPIO_ADC_VOLTAGE, i)) { - AdcAttach(Pin(GPIO_ADC_VOLTAGE, i), ADC_VOLTAGE); - } - if (PinUsed(GPIO_ADC_CURRENT, i)) { - AdcAttach(Pin(GPIO_ADC_CURRENT, i), ADC_CURRENT); - } - } - for (uint32_t i = 0; i < MAX_KEYS; i++) { - if (PinUsed(GPIO_ADC_BUTTON, i)) { - AdcAttach(Pin(GPIO_ADC_BUTTON, i), ADC_BUTTON); - } - else if (PinUsed(GPIO_ADC_BUTTON_INV, i)) { - AdcAttach(Pin(GPIO_ADC_BUTTON_INV, i), ADC_BUTTON_INV); - } - } - - if (Adcs.present) { -#ifdef ESP32 - analogReadResolution(ANALOG_RESOLUTION); // Default 12 bits (0 - 4095) - analogSetAttenuation(ADC_11db); // Default 11db -#endif - for (uint32_t idx = 0; idx < Adcs.present; idx++) { - AdcGetSettings(idx); - AdcInitParams(idx); - AdcSaveSettings(idx); - } - } -} +/*********************************************************************************************\ + * External use +\*********************************************************************************************/ uint32_t AdcRange(void) { return ANALOG_RANGE; } bool AdcPin(uint32_t pin) { - for (uint32_t idx = 0; idx < Adcs.present; idx++) { - if (pin == Adc[idx].pin) { + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + if (pin == Adc[channel].pin) { return true; } } @@ -360,6 +200,158 @@ uint16_t AdcRead1(uint32_t pin) { #endif } +/*********************************************************************************************/ + +uint32_t AdcType(uint32_t channel) { + return TasmotaGlobal.gpio_pin[Adc[channel].pin] >> 5; +} + +uint32_t AdcIndex(uint32_t channel) { + return TasmotaGlobal.gpio_pin[Adc[channel].pin] & 0x001F; +} + +void AdcSaveSettings(uint32_t channel) { + char parameters[32]; + snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d"), + Adc[channel].type, Adc[channel].param1, Adc[channel].param2, Adc[channel].param3, Adc[channel].param4); + SettingsUpdateText(SET_ADC_PARAM1 + channel, parameters); +} + +bool AdcGetSettings(uint32_t channel) { + uint32_t adc_type = 0; + char parameters[32]; + if (strchr(SettingsText(SET_ADC_PARAM1 + channel), ',') != nullptr) { + adc_type = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 1)); + Adc[channel].param1 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 2)); + Adc[channel].param2 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 3)); + Adc[channel].param3 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 4)); + Adc[channel].param4 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 5)); + if (adc_type < GPIO_ADC_INPUT) { // Former ADC_END + AdcSaveSettings(channel); + adc_type = AdcType(channel); // Migrate for backwards compatibility + } + } + return (AdcType(channel) == adc_type); +} + +void AdcInitParams(uint32_t channel) { + Adc[channel].param1 = 0; + Adc[channel].param2 = 0; + Adc[channel].param3 = 0; + Adc[channel].param4 = 0; + uint32_t adc_type = AdcType(channel); + switch (adc_type) { + case GPIO_ADC_INPUT: +// Adc[channel].param1 = 0; + Adc[channel].param2 = ANALOG_RANGE; + Adc[channel].param3 = 3; // Margin / Tolerance +// Adc[channel].param4 = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command + break; + case GPIO_ADC_TEMP: + // Default Shelly 2.5 and 1PM parameters + Adc[channel].param1 = ANALOG_NTC_BRIDGE_RESISTANCE; + Adc[channel].param2 = ANALOG_NTC_RESISTANCE; + Adc[channel].param3 = ANALOG_NTC_B_COEFFICIENT; +// Adc[channel].param4 = 0; // Default to Shelly mode with NTC towards GND + break; + case GPIO_ADC_LIGHT: + Adc[channel].param1 = ANALOG_LDR_BRIDGE_RESISTANCE; + Adc[channel].param2 = ANALOG_LDR_LUX_CALC_SCALAR; + Adc[channel].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000; +// Adc[channel].param4 = 0; + break; + case GPIO_ADC_BUTTON: + case GPIO_ADC_BUTTON_INV: + Adc[channel].param1 = ANALOG_BUTTON_THRESHOLD; // Between 0 or 1 +// Adc[channel].param2 = 0; +// Adc[channel].param3 = 0; +// Adc[channel].param4 = 0; + break; + case GPIO_ADC_RANGE: +// Adc[channel].param1 = 0; + Adc[channel].param2 = ANALOG_RANGE; +// Adc[channel].param3 = 0; + Adc[channel].param4 = 100; + break; + case GPIO_ADC_CT_POWER: + Adc[channel].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0 + Adc[channel].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000 + Adc[channel].param3 = ANALOG_CT_VOLTAGE; // (int) 10 + break; + case GPIO_ADC_JOY: + Adc[channel].param1 = ANALOG_JOYSTICK_THRESHOLD; +// Adc[channel].param2 = 0; +// Adc[channel].param3 = 0; +// Adc[channel].param4 = 0; + break; + case GPIO_ADC_PH: + Adc[channel].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH + Adc[channel].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1 + Adc[channel].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH + Adc[channel].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2 + break; + case GPIO_ADC_MQ: + Adc[channel].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 .... + Adc[channel].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[channel].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[channel].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + break; + case GPIO_ADC_VOLTAGE: + case GPIO_ADC_CURRENT: +// Adc[channel].param1 = 0; + Adc[channel].param2 = ANALOG_RANGE; +// Adc[channel].param3 = 0; + Adc[channel].param4 = ANALOG_V33 * 10000; + break; + } + +// AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: AdcParam%d %d,%d,%d,%d,%d"), channel+1, Adc[channel].pin, Adc[channel].param1, Adc[channel].param2, Adc[channel].param3, Adc[channel].param4); +} + +void AdcInit(void) { + Adcs.present = 0; + uint32_t pin = 0; // ESP32 full range of GPIOs possible for ADC channels +#ifdef ESP8266 + pin = ADC0_PIN; // ESP8266 single ADC channel +#endif + for (pin; pin < nitems(TasmotaGlobal.gpio_pin); pin++) { + uint32_t adc_type = TasmotaGlobal.gpio_pin[pin] >> 5; + switch(adc_type) { + case GPIO_ADC_MQ: + Adc[Adcs.present].mq_samples = (float*)calloc(sizeof(float), ANALOG_MQ_SAMPLES); // Need calloc to reset registers to 0 + if (nullptr == Adc[Adcs.present].mq_samples) { continue; } + case GPIO_ADC_CURRENT: + case GPIO_ADC_VOLTAGE: + case GPIO_ADC_PH: + case GPIO_ADC_JOY: + case GPIO_ADC_CT_POWER: + case GPIO_ADC_RANGE: + case GPIO_ADC_BUTTON_INV: + case GPIO_ADC_BUTTON: + case GPIO_ADC_LIGHT: + case GPIO_ADC_TEMP: + case GPIO_ADC_INPUT: + Adc[Adcs.present].type = adc_type; + Adc[Adcs.present].pin = pin; + Adcs.present++; + if (Adcs.present == MAX_ADCS) { break; } + } + } + + if (Adcs.present) { +#ifdef ESP32 + analogReadResolution(ANALOG_RESOLUTION); // Default 12 bits (0 - 4095) + analogSetAttenuation(ADC_11db); // Default 11db +#endif + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + if (!AdcGetSettings(channel)) { + AdcInitParams(channel); + AdcSaveSettings(channel); + } + } + } +} + uint16_t AdcRead(uint32_t pin, uint32_t factor) { // factor 1 = 2 samples // factor 2 = 4 samples @@ -386,36 +378,44 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) { } void AdcEvery250ms(void) { - char adc_idx[3] = { 0 }; + char adc_channel[3] = { 0 }; uint32_t offset = 0; - for (uint32_t idx = 0; idx < Adcs.present; idx++) { + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + uint32_t type_index = AdcIndex(channel); #ifdef ESP32 - snprintf_P(adc_idx, sizeof(adc_idx), PSTR("%d"), idx +1); + snprintf_P(adc_channel, sizeof(adc_channel), PSTR("%d"), type_index +1); offset = 1; #endif - if (ADC_INPUT == Adc[idx].type) { - int adc = AdcRead(Adc[idx].pin, 4); // 4 = 16 mS - int new_value = changeUIntScale(adc, Adc[idx].param1, Adc[idx].param2, 0, 100); - if ((new_value < Adc[idx].last_value -Adc[idx].param3) || - (new_value > Adc[idx].last_value +Adc[idx].param3) || - ((0 == new_value) && (Adc[idx].last_value != 0)) || // Lowest end - ((100 == new_value) && (Adc[idx].last_value != 100))) { // Highest end - Adc[idx].last_value = new_value; - if (-1 == Adc[idx].indexOfPointer) { - Adc[idx].indexOfPointer = 0; - continue; // Skip action on restart + uint32_t adc_type = AdcType(channel); + if (GPIO_ADC_INPUT == adc_type) { + int adc = AdcRead(Adc[channel].pin, 4); // 4 = 16 mS + bool swap = (Adc[channel].param2 < Adc[channel].param1); + uint32_t lo = (swap) ? Adc[channel].param2 : Adc[channel].param1; + uint32_t hi = (swap) ? Adc[channel].param1 : Adc[channel].param2; + int new_value = changeUIntScale(adc, lo, hi, 0, 100); + if (swap) { + new_value = 100 - new_value; + } + if ((new_value < Adc[channel].last_value -Adc[channel].param3) || + (new_value > Adc[channel].last_value +Adc[channel].param3) || + ((0 == new_value) && (Adc[channel].last_value != 0)) || // Lowest end + ((100 == new_value) && (Adc[channel].last_value != 100))) { // Highest end + Adc[channel].last_value = new_value; + if (-1 == Adc[channel].indexOfPointer) { + Adc[channel].indexOfPointer = 0; + continue; // Do not use potentiometer state on restart } #ifdef USE_LIGHT - if (0 == Adc[idx].param4) { // Default (0) or Direct mode (1) + if (0 == Adc[channel].param4) { // Default (0) or Direct mode (1) #endif // USE_LIGHT - Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, new_value); + Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), type_index + offset, new_value); XdrvRulesProcess(0); #ifdef USE_LIGHT } else { char command[33]; if (Settings->flag3.pwm_multi_channels) { // SetOption68 - Enable multi-channels PWM instead of Color PWM -// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_CHANNEL "%d %d"), idx +1, new_value); - snprintf_P(command, sizeof(command), PSTR(D_CMND_CHANNEL "%d %d"), idx +1, new_value); +// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_CHANNEL "%d %d"), type_index +1, new_value); + snprintf_P(command, sizeof(command), PSTR(D_CMND_CHANNEL "%d %d"), type_index +1, new_value); } else { // snprintf_P(command, sizeof(command), PSTR("_" D_CMND_DIMMER "3 %d"), new_value); snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER "3 %d"), new_value); // Change both RGB and W(W) Dimmers with no fading @@ -425,72 +425,73 @@ void AdcEvery250ms(void) { #endif // USE_LIGHT } } - else if (ADC_JOY == Adc[idx].type) { - uint16_t new_value = AdcRead(Adc[idx].pin, 1); - if (new_value && (new_value != Adc[idx].last_value)) { - Adc[idx].last_value = new_value; - uint16_t value = new_value / Adc[idx].param1; - Response_P(PSTR("{\"ANALOG\":{\"Joy%s\":%d}}"), adc_idx, value); + else if (GPIO_ADC_JOY == adc_type) { + uint16_t new_value = AdcRead(Adc[channel].pin, 1); + if (new_value && (new_value != Adc[channel].last_value)) { + Adc[channel].last_value = new_value; + uint16_t value = new_value / Adc[channel].param1; + Response_P(PSTR("{\"ANALOG\":{\"Joy%s\":%d}}"), adc_channel, value); XdrvRulesProcess(0); } else { - Adc[idx].last_value = 0; + Adc[channel].last_value = 0; } } } } uint8_t AdcGetButton(uint32_t pin) { - for (uint32_t idx = 0; idx < Adcs.present; idx++) { - if (Adc[idx].pin == pin) { - if (ADC_BUTTON_INV == Adc[idx].type) { - return (AdcRead(Adc[idx].pin, 1) < Adc[idx].param1); + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + uint32_t adc_type = AdcType(channel); + if (Adc[channel].pin == pin) { + if (GPIO_ADC_BUTTON_INV == adc_type) { + return (AdcRead(Adc[channel].pin, 1) < Adc[channel].param1); } - else if (ADC_BUTTON == Adc[idx].type) { - return (AdcRead(Adc[idx].pin, 1) > Adc[idx].param1); + else if (GPIO_ADC_BUTTON == adc_type) { + return (AdcRead(Adc[channel].pin, 1) > Adc[channel].param1); } } } return 0; } -uint16_t AdcGetLux(uint32_t idx) { - int adc = AdcRead(Adc[idx].pin, 2); +uint16_t AdcGetLux(uint32_t channel) { + int adc = AdcRead(Adc[channel].pin, 2); // Source: https://www.allaboutcircuits.com/projects/design-a-luxmeter-using-a-light-dependent-resistor/ double resistorVoltage = ((double)adc / ANALOG_RANGE) * ANALOG_V33; double ldrVoltage = ANALOG_V33 - resistorVoltage; - double ldrResistance = ldrVoltage / resistorVoltage * (double)Adc[idx].param1; - double ldrLux = (double)Adc[idx].param2 * FastPrecisePow(ldrResistance, (double)Adc[idx].param3 / 10000); + double ldrResistance = ldrVoltage / resistorVoltage * (double)Adc[channel].param1; + double ldrLux = (double)Adc[channel].param2 * FastPrecisePow(ldrResistance, (double)Adc[channel].param3 / 10000); return (uint16_t)ldrLux; } -void AddSampleMq(uint32_t idx){ +void AddSampleMq(uint32_t channel){ // AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: Adding sample for mq-sensor")); - int _adc = AdcRead(Adc[idx].pin, 2); + int _adc = AdcRead(Adc[channel].pin, 2); // init af array at same value - if (Adc[idx].indexOfPointer==-1) { + if (Adc[channel].indexOfPointer == -1) { // AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: Init samples for mq-sensor")); for (int i = 0; i < ANALOG_MQ_SAMPLES; i ++) { - Adc[idx].mq_samples[i] = _adc; + Adc[channel].mq_samples[i] = _adc; } } else { - Adc[idx].mq_samples[Adc[idx].indexOfPointer] = _adc; + Adc[channel].mq_samples[Adc[channel].indexOfPointer] = _adc; } - Adc[idx].indexOfPointer++; - if (Adc[idx].indexOfPointer==ANALOG_MQ_SAMPLES) { - Adc[idx].indexOfPointer=0; + Adc[channel].indexOfPointer++; + if (Adc[channel].indexOfPointer==ANALOG_MQ_SAMPLES) { + Adc[channel].indexOfPointer=0; } } -float AdcGetMq(uint32_t idx) { +float AdcGetMq(uint32_t channel) { // AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: Getting value for mq-sensor")); float avg = 0.0; for (int i = 0; i < ANALOG_MQ_SAMPLES; i ++) { - avg += Adc[idx].mq_samples[i]; + avg += Adc[channel].mq_samples[i]; } float voltage = (avg / ANALOG_MQ_SAMPLES) * ANALOG_V33 / ANALOG_RANGE; @@ -502,7 +503,7 @@ float AdcGetMq(uint32_t idx) { float _R0 = 10; float _ratio = _RS_Calc / _R0; // Get ratio RS_gas/RS_air - float ppm = Adc[idx].param2 / ANALOG_MQ_DECIMAL_MULTIPLIER * FastPrecisePow(_ratio, Adc[idx].param3 / ANALOG_MQ_DECIMAL_MULTIPLIER); // Source excel analisis https://github.com/miguel5612/MQSensorsLib_Docs/tree/master/Internal_design_documents + float ppm = Adc[channel].param2 / ANALOG_MQ_DECIMAL_MULTIPLIER * FastPrecisePow(_ratio, Adc[channel].param3 / ANALOG_MQ_DECIMAL_MULTIPLIER); // Source excel analisis https://github.com/miguel5612/MQSensorsLib_Docs/tree/master/Internal_design_documents if (ppm < 0) { ppm = 0; } // No negative values accepted or upper datasheet recomendation. if (ppm > 100000) { ppm = 100000; } @@ -511,13 +512,13 @@ float AdcGetMq(uint32_t idx) { return ppm; } -float AdcGetPh(uint32_t idx) { - int adc = AdcRead(Adc[idx].pin, 2); +float AdcGetPh(uint32_t channel) { + int adc = AdcRead(Adc[channel].pin, 2); - float y1 = (float)Adc[idx].param1 / ANALOG_PH_DECIMAL_MULTIPLIER; - int32_t x1 = Adc[idx].param2; - float y2 = (float)Adc[idx].param3 / ANALOG_PH_DECIMAL_MULTIPLIER; - int32_t x2 = Adc[idx].param4; + float y1 = (float)Adc[channel].param1 / ANALOG_PH_DECIMAL_MULTIPLIER; + int32_t x1 = Adc[channel].param2; + float y2 = (float)Adc[channel].param3 / ANALOG_PH_DECIMAL_MULTIPLIER; + int32_t x2 = Adc[channel].param4; float m = (y2 - y1) / (float)(x2 - x1); float ph = m * (float)(adc - x1) + y1; @@ -527,16 +528,16 @@ float AdcGetPh(uint32_t idx) { return ph; } -float AdcGetRange(uint32_t idx) { +float AdcGetRange(uint32_t channel) { // formula for calibration: value, fromLow, fromHigh, toLow, toHigh // Example: 514, 632, 236, 0, 100 // int( (( - ) / ( - ) ) * ( - ) ) + ) - int adc = AdcRead(Adc[idx].pin, 5); - float adcrange = ( ((float)Adc[idx].param2 - (float)adc) / ( ((float)Adc[idx].param2 - (float)Adc[idx].param1)) * ((float)Adc[idx].param3 - (float)Adc[idx].param4) + (float)Adc[idx].param4 ); + int adc = AdcRead(Adc[channel].pin, 5); + float adcrange = ( ((float)Adc[channel].param2 - (float)adc) / ( ((float)Adc[channel].param2 - (float)Adc[channel].param1)) * ((float)Adc[channel].param3 - (float)Adc[channel].param4) + (float)Adc[channel].param4 ); return adcrange; } -void AdcGetCurrentPower(uint8_t idx, uint8_t factor) { +void AdcGetCurrentPower(uint8_t channel, uint8_t factor) { // factor 1 = 2 samples // factor 2 = 4 samples // factor 3 = 8 samples @@ -547,10 +548,10 @@ void AdcGetCurrentPower(uint8_t idx, uint8_t factor) { uint16_t analog_min = ANALOG_RANGE; uint16_t analog_max = 0; - if (0 == Adc[idx].param1) { + if (0 == Adc[channel].param1) { unsigned long tstart=millis(); while (millis()-tstart < 35) { - analog = analogRead(Adc[idx].pin); + analog = analogRead(Adc[channel].pin); if (analog < analog_min) { analog_min = analog; } @@ -559,76 +560,83 @@ void AdcGetCurrentPower(uint8_t idx, uint8_t factor) { } } //AddLog(0, PSTR("min: %u, max:%u, dif:%u"), analog_min, analog_max, analog_max-analog_min); - Adc[idx].current = (float)(analog_max-analog_min) * ((float)(Adc[idx].param2) / 100000); - if (Adc[idx].current < (((float)Adc[idx].param4) / 10000.0)) - Adc[idx].current = 0.0; + Adc[channel].current = (float)(analog_max-analog_min) * ((float)(Adc[channel].param2) / 100000); + if (Adc[channel].current < (((float)Adc[channel].param4) / 10000.0)) + Adc[channel].current = 0.0; } else { - analog = AdcRead(Adc[idx].pin, 5); - if (analog > Adc[idx].param1) { - Adc[idx].current = ((float)(analog) - (float)Adc[idx].param1) * ((float)(Adc[idx].param2) / 100000); + analog = AdcRead(Adc[channel].pin, 5); + if (analog > Adc[channel].param1) { + Adc[channel].current = ((float)(analog) - (float)Adc[channel].param1) * ((float)(Adc[channel].param2) / 100000); } else { - Adc[idx].current = 0; + Adc[channel].current = 0; } } - float power = Adc[idx].current * (float)(Adc[idx].param3) / 10; + float power = Adc[channel].current * (float)(Adc[channel].param3) / 10; uint32_t current_millis = millis(); - Adc[idx].energy = Adc[idx].energy + ((power * (current_millis - Adc[idx].previous_millis)) / 3600000000); - Adc[idx].previous_millis = current_millis; + Adc[channel].energy = Adc[channel].energy + ((power * (current_millis - Adc[channel].previous_millis)) / 3600000000); + Adc[channel].previous_millis = current_millis; } void AdcEverySecond(void) { - uint32_t voltage_index = 0; - uint32_t current_index = 0; - for (uint32_t idx = 0; idx < Adcs.present; idx++) { - if (ADC_TEMP == Adc[idx].type) { - int adc = AdcRead(Adc[idx].pin, 2); + uint32_t voltage_count = 0; + uint32_t current_count = 0; + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + uint32_t type_index = AdcIndex(channel); + uint32_t adc_type = AdcType(channel); + if (GPIO_ADC_TEMP == adc_type) { + int adc = AdcRead(Adc[channel].pin, 2); // Steinhart-Hart equation for thermistor as temperature sensor: - // double Rt = (adc * Adc[idx].param1 * MAX_ADC_V) / (ANALOG_RANGE * ANALOG_V33 - (double)adc * MAX_ADC_V); + // double Rt = (adc * Adc[channel].param1 * MAX_ADC_V) / (ANALOG_RANGE * ANALOG_V33 - (double)adc * MAX_ADC_V); // MAX_ADC_V in ESP8266 is 1 // MAX_ADC_V in ESP32 is 3.3 double Rt; #ifdef ESP8266 - if (Adc[idx].param4) { // Alternate mode - Rt = (double)Adc[idx].param1 * (ANALOG_RANGE * ANALOG_V33 - (double)adc) / (double)adc; + if (Adc[channel].param4) { // Alternate mode + Rt = (double)Adc[channel].param1 * (ANALOG_RANGE * ANALOG_V33 - (double)adc) / (double)adc; } else { - Rt = (double)Adc[idx].param1 * (double)adc / (ANALOG_RANGE * ANALOG_V33 - (double)adc); + Rt = (double)Adc[channel].param1 * (double)adc / (ANALOG_RANGE * ANALOG_V33 - (double)adc); } #else - if (Adc[idx].param4) { // Alternate mode - Rt = (double)Adc[idx].param1 * (ANALOG_RANGE - (double)adc) / (double)adc; + if (Adc[channel].param4) { // Alternate mode + Rt = (double)Adc[channel].param1 * (ANALOG_RANGE - (double)adc) / (double)adc; } else { - Rt = (double)Adc[idx].param1 * (double)adc / (ANALOG_RANGE - (double)adc); + Rt = (double)Adc[channel].param1 * (double)adc / (ANALOG_RANGE - (double)adc); } #endif - double BC = (double)Adc[idx].param3 / 10000; // Shelly param3 = 3350 (ANALOG_NTC_B_COEFFICIENT) - double T = BC / (BC / ANALOG_T0 + TaylorLog(Rt / (double)Adc[idx].param2)); // Shelly param2 = 10000 (ANALOG_NTC_RESISTANCE) - Adc[idx].temperature = ConvertTemp(TO_CELSIUS(T)); + if (Adc[channel].param3 > 1000000) { + Adc[channel].param3 /= 10000; // Fix legacy value from 33500000 to 3350 + } + double BC = (double)Adc[channel].param3; // Shelly param3 = 3350 (ANALOG_NTC_B_COEFFICIENT) + double T = BC / (BC / ANALOG_T0 + TaylorLog(Rt / (double)Adc[channel].param2)); // Shelly param2 = 10000 (ANALOG_NTC_RESISTANCE) + Adc[channel].temperature = ConvertTemp(TO_CELSIUS(T)); } - else if (ADC_CT_POWER == Adc[idx].type) { - AdcGetCurrentPower(idx, 5); + else if (GPIO_ADC_CT_POWER == adc_type) { + AdcGetCurrentPower(channel, 5); } - else if (ADC_MQ == Adc[idx].type) { - AddSampleMq(idx); - AdcGetMq(idx); + else if (GPIO_ADC_MQ == adc_type) { + AddSampleMq(channel); + AdcGetMq(channel); } #ifdef USE_ENERGY_SENSOR - else if (ADC_VOLTAGE == Adc[idx].type) { + else if (GPIO_ADC_VOLTAGE == adc_type) { Energy->voltage_available = true; - Energy->voltage[voltage_index++] = AdcGetRange(idx) / 10000; // Volt + Energy->voltage[type_index] = AdcGetRange(channel) / 10000; // Volt + voltage_count++; } - else if (ADC_CURRENT == Adc[idx].type) { + else if (GPIO_ADC_CURRENT == adc_type) { Energy->current_available = true; - Energy->current[current_index++] = AdcGetRange(idx) / 10000; // Ampere + Energy->current[type_index] = AdcGetRange(channel) / 10000; // Ampere + current_count++; } #endif // USE_ENERGY_SENSOR } #ifdef USE_ENERGY_SENSOR - if (voltage_index && current_index) { - for (uint32_t phase = 0; phase < current_index; phase++) { - uint32_t voltage_phase = (voltage_index == current_index) ? phase : 0; + if (voltage_count && current_count) { + for (uint32_t phase = 0; phase < current_count; phase++) { + uint32_t voltage_phase = (voltage_count == current_count) ? phase : 0; Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; // Watt Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1000) / 36; // deca_microWh } @@ -646,32 +654,35 @@ void AdcShowContinuation(bool *jsonflg) { } } +enum DomoFlagsAdc { ADC_TEMP, ADC_LIGHT, ADC_CT_POWER, ADC_END }; + void AdcShow(bool json) { bool domo_flag[ADC_END] = { false }; char adc_name[10] = { 0 }; // ANALOG8 - char adc_idx[3] = { 0 }; + char adc_channel[3] = { 0 }; uint32_t offset = 0; bool jsonflg = false; - for (uint32_t idx = 0; idx < Adcs.present; idx++) { + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + uint32_t type_index = AdcIndex(channel); #ifdef ESP32 - snprintf_P(adc_name, sizeof(adc_name), PSTR("Analog%d"), idx +1); - snprintf_P(adc_idx, sizeof(adc_idx), PSTR("%d"), idx +1); + snprintf_P(adc_name, sizeof(adc_name), PSTR("Analog%d"), type_index +1); + snprintf_P(adc_channel, sizeof(adc_channel), PSTR("%d"), type_index +1); offset = 1; #endif - - switch (Adc[idx].type) { - case ADC_INPUT: { + uint32_t adc_type = AdcType(channel); + switch (adc_type) { + case GPIO_ADC_INPUT: { #ifdef USE_LIGHT - if (0 == Adc[idx].param4) { // Default (0) or Direct mode (1) + if (0 == Adc[channel].param4) { // Default (0) or Direct mode (1) #endif // USE_LIGHT - uint16_t analog = AdcRead(Adc[idx].pin, 5); + uint16_t analog = AdcRead(Adc[channel].pin, 5); if (json) { AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog); + ResponseAppend_P(PSTR("\"A%d\":%d"), type_index + offset, analog); #ifdef USE_WEBSERVER } else { - WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog); + WSContentSend_PD(HTTP_SNS_ANALOG, "", type_index + offset, analog); #endif // USE_WEBSERVER } #ifdef USE_LIGHT @@ -679,32 +690,32 @@ void AdcShow(bool json) { #endif // USE_LIGHT break; } - case ADC_TEMP: { + case GPIO_ADC_TEMP: { if (json) { AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"" D_JSON_TEMPERATURE "%s\":%*_f"), adc_idx, Settings->flag2.temperature_resolution, &Adc[idx].temperature); + ResponseAppend_P(PSTR("\"" D_JSON_TEMPERATURE "%s\":%*_f"), adc_channel, Settings->flag2.temperature_resolution, &Adc[channel].temperature); if ((0 == TasmotaGlobal.tele_period) && (!domo_flag[ADC_TEMP])) { #ifdef USE_DOMOTICZ - DomoticzFloatSensor(DZ_TEMP, Adc[idx].temperature); + DomoticzFloatSensor(DZ_TEMP, Adc[channel].temperature); domo_flag[ADC_TEMP] = true; #endif // USE_DOMOTICZ #ifdef USE_KNX - KnxSensor(KNX_TEMPERATURE, Adc[idx].temperature); + KnxSensor(KNX_TEMPERATURE, Adc[channel].temperature); #endif // USE_KNX } #ifdef USE_WEBSERVER } else { - WSContentSend_Temp(adc_name, Adc[idx].temperature); + WSContentSend_Temp(adc_name, Adc[channel].temperature); #endif // USE_WEBSERVER } break; } - case ADC_LIGHT: { - uint16_t adc_light = AdcGetLux(idx); + case GPIO_ADC_LIGHT: { + uint16_t adc_light = AdcGetLux(channel); if (json) { AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"" D_JSON_ILLUMINANCE "%s\":%d"), adc_idx, adc_light); + ResponseAppend_P(PSTR("\"" D_JSON_ILLUMINANCE "%s\":%d"), adc_channel, adc_light); #ifdef USE_DOMOTICZ if ((0 == TasmotaGlobal.tele_period) && (!domo_flag[ADC_LIGHT])) { DomoticzSensor(DZ_ILLUMINANCE, adc_light); @@ -718,14 +729,14 @@ void AdcShow(bool json) { } break; } - case ADC_RANGE: { - float adc_range = AdcGetRange(idx); + case GPIO_ADC_RANGE: { + float adc_range = AdcGetRange(channel); char range_chr[FLOATSZ]; dtostrfd(adc_range, Settings->flag2.frequency_resolution, range_chr); if (json) { AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"" D_JSON_RANGE "%s\":%s"), adc_idx, range_chr); + ResponseAppend_P(PSTR("\"" D_JSON_RANGE "%s\":%s"), adc_channel, range_chr); #ifdef USE_WEBSERVER } else { WSContentSend_PD(HTTP_SNS_RANGE_CHR, adc_name, range_chr); @@ -733,23 +744,23 @@ void AdcShow(bool json) { } break; } - case ADC_CT_POWER: { - AdcGetCurrentPower(idx, 5); + case GPIO_ADC_CT_POWER: { + AdcGetCurrentPower(channel, 5); - float voltage = (float)(Adc[idx].param3) / 10; + float voltage = (float)(Adc[channel].param3) / 10; char voltage_chr[FLOATSZ]; dtostrfd(voltage, Settings->flag2.voltage_resolution, voltage_chr); char current_chr[FLOATSZ]; - dtostrfd(Adc[idx].current, Settings->flag2.current_resolution, current_chr); + dtostrfd(Adc[channel].current, Settings->flag2.current_resolution, current_chr); char power_chr[FLOATSZ]; - dtostrfd(voltage * Adc[idx].current, Settings->flag2.wattage_resolution, power_chr); + dtostrfd(voltage * Adc[channel].current, Settings->flag2.wattage_resolution, power_chr); char energy_chr[FLOATSZ]; - dtostrfd(Adc[idx].energy, Settings->flag2.energy_resolution, energy_chr); + dtostrfd(Adc[channel].energy, Settings->flag2.energy_resolution, energy_chr); if (json) { AdcShowContinuation(&jsonflg); ResponseAppend_P(PSTR("\"CTEnergy%s\":{\"" D_JSON_ENERGY "\":%s,\"" D_JSON_POWERUSAGE "\":%s,\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s}"), - adc_idx, energy_chr, power_chr, voltage_chr, current_chr); + adc_channel, energy_chr, power_chr, voltage_chr, current_chr); #ifdef USE_DOMOTICZ if ((0 == TasmotaGlobal.tele_period) && (!domo_flag[ADC_CT_POWER])) { DomoticzSensor(DZ_POWER_ENERGY, power_chr); @@ -768,23 +779,23 @@ void AdcShow(bool json) { } break; } - case ADC_JOY: { - uint16_t new_value = AdcRead(Adc[idx].pin, 1); - uint16_t value = new_value / Adc[idx].param1; + case GPIO_ADC_JOY: { + uint16_t new_value = AdcRead(Adc[channel].pin, 1); + uint16_t value = new_value / Adc[channel].param1; if (json) { AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"Joy%s\":%d"), adc_idx, value); + ResponseAppend_P(PSTR("\"Joy%s\":%d"), adc_channel, value); } break; } - case ADC_PH: { - float ph = AdcGetPh(idx); + case GPIO_ADC_PH: { + float ph = AdcGetPh(channel); char ph_chr[FLOATSZ]; dtostrfd(ph, 2, ph_chr); if (json) { AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"pH%d\":%s"), idx + offset, ph_chr); + ResponseAppend_P(PSTR("\"pH%s\":%s"), adc_channel, ph_chr); #ifdef USE_WEBSERVER } else { WSContentSend_PD(HTTP_SNS_PH, "", ph_chr); @@ -792,18 +803,18 @@ void AdcShow(bool json) { } break; } - case ADC_MQ: { - float mq = AdcGetMq(idx); + case GPIO_ADC_MQ: { + float mq = AdcGetMq(channel); char mq_chr[FLOATSZ]; dtostrfd(mq, 2, mq_chr); - float mqnumber =Adc[idx].param1; + float mqnumber =Adc[channel].param1; char mqnumber_chr[FLOATSZ]; dtostrfd(mqnumber, 0, mqnumber_chr); if (json) { AdcShowContinuation(&jsonflg); - ResponseAppend_P(PSTR("\"MQ%d_%d\":%s"), Adc[idx].param1, idx + offset, mq_chr); + ResponseAppend_P(PSTR("\"MQ%d_%d\":%s"), Adc[channel].param1, type_index + offset, mq_chr); #ifdef USE_WEBSERVER } else { WSContentSend_PD(HTTP_SNS_MQ, mqnumber_chr, mq_chr); @@ -822,11 +833,11 @@ void AdcShow(bool json) { * Commands \*********************************************************************************************/ -const char kAdcCommands[] PROGMEM = "|" // No prefix - D_CMND_ADCPARAM; +const char kAdcCommands[] PROGMEM = "Adc|" // No prefix + D_CMND_ADCPARAM "|" D_CMND_ADCGPIO; void (* const AdcCommand[])(void) PROGMEM = { - &CmndAdcParam }; + &CmndAdcParam, &CmndAdcGpio }; uint32_t Decimals(int value) { uint32_t decimals; @@ -837,121 +848,141 @@ uint32_t Decimals(int value) { return decimals; } -void CmndAdcParam(void) { - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) { - uint8_t idx = XdrvMailbox.index -1; - if (XdrvMailbox.data_len) { - if (XdrvMailbox.payload > 0) { - AdcGetSettings(idx); - if (ArgC() > 3) { // Process parameter entry - char argument[XdrvMailbox.data_len]; - // AdcParam 1, 0, ANALOG_RANGE, 0 ADC_INPUT rule | dimmer - // AdcParam 2, 32000, 10000, 3350 ADC_TEMP Shelly mode - // AdcParam 2, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode - // AdcParam 3, 10000, 12518931, -1.405 - // AdcParam 4, 128, 0, 0 - // AdcParam 5, 128, 0, 0 - // AdcParam 6, 0, ANALOG_RANGE, 0, 100 ADC_RANGE - // AdcParam 7, 0, 2146, 0.23 - // AdcParam 8, 1000, 0, 0 - // AdcParam 9, ADC_PH - // AdcParam 10, ADC_MQ - // AdcParam 11, 0, ANALOG_RANGE, 0, 3.3 ADC_VOLTAGE - // AdcParam 12, 0, ANALOG_RANGE, 0, 3.3 ADC_CURRENT - Adc[idx].type = XdrvMailbox.payload; - Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int - Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int - if ((ADC_INPUT == XdrvMailbox.payload) || - (ADC_RANGE == XdrvMailbox.payload)) { - Adc[idx].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10)); // param3 = abs(int) - Adc[idx].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10)); // param4 = abs(int) - } else { - Adc[idx].param3 = (int)(CharToFloat(ArgV(argument, 4)) * 10000); // param3 = float - if (ArgC() > 4) { - Adc[idx].param4 = (int)(CharToFloat(ArgV(argument, 5)) * 10000); // param4 = float - } - else{ - Adc[idx].param4 = 0; // param4 = fixed 0 - } - } - if (ADC_PH == XdrvMailbox.payload) { - float phLow = CharToFloat(ArgV(argument, 2)); - Adc[idx].param1 = phLow * ANALOG_PH_DECIMAL_MULTIPLIER; // param1 = float -// Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int - float phHigh = CharToFloat(ArgV(argument, 4)); - Adc[idx].param3 = phHigh * ANALOG_PH_DECIMAL_MULTIPLIER; // param3 = float - Adc[idx].param4 = strtol(ArgV(argument, 5), nullptr, 10); // param4 = int - -// AddLog(LOG_LEVEL_INFO, PSTR("ADC: Analog pH probe calibrated. cal-low(pH=ADC) %2_f = %d, cal-high(pH=ADC) %2_f = %d"), &phLow, Adc[idx].param2, &phHigh, Adc[idx].param4); - } - if (ADC_CT_POWER == XdrvMailbox.payload) { - if (((1 == Adc[idx].param1) & CT_FLAG_ENERGY_RESET) > 0) { // param1 = int - for (uint32_t idx = 0; idx < Adcs.present; idx++) { - Adc[idx].energy = 0; - } - Adc[idx].param1 ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag - } - } - if (ADC_MQ == XdrvMailbox.payload) { - float a = CharToFloat(ArgV(argument, 3)); // param2 = float - float b = CharToFloat(ArgV(argument, 4)); // param3 = float - float ratioMQCleanAir = CharToFloat(ArgV(argument, 5)); // param4 = float - if ((0 == a) && (0 == b) && (0 == ratioMQCleanAir)) { - if (2 == Adc[idx].param1) { // param1 = int - a = 574.25; - b = -2.222; - ratioMQCleanAir = 9.83; - } - else if (4 == Adc[idx].param1) { - a = 1012.7; - b = -2.786; - ratioMQCleanAir = 4.4; - } - else if (7 == Adc[idx].param1) { - a = 99.042; - b = -1.518; - ratioMQCleanAir = 27.5; - } - if (131 == Adc[idx].param1) { - a = 23.943; - b = -1.11; - ratioMQCleanAir = 15; - } - } - Adc[idx].param2 = (int)(a * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param3 = (int)(b * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - Adc[idx].param4 = (int)(ratioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression - -// AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[idx].param1, &a, &b, &ratioMQCleanAir); - } - } else { // Set default values based on current adc type - // AdcParam 1 - Adcs.type = 0; - AdcInitParams(idx); - } - AdcSaveSettings(idx); +void CmndAdcGpio(void) { + // AdcGpio33 32000, 10000, 3350 ADC_TEMP Shelly mode + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + if (XdrvMailbox.index == Adc[channel].pin) { + XdrvMailbox.index = channel +1; + if (XdrvMailbox.data_len) { + char data[64]; + snprintf_P(data, sizeof(data), PSTR("1,%s"), XdrvMailbox.data); + XdrvMailbox.data = data; + XdrvMailbox.data_len = strlen(data); } + CmndAdcParam(); + break; + } + } +} + +void CmndAdcParam(void) { + // AdcParam 1, 0, ANALOG_RANGE, 0 ADC_INPUT rule | dimmer + // AdcParam 1, 32000, 10000, 3350 ADC_TEMP Shelly mode + // AdcParam 1, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode + // AdcParam 1, 10000, 12518931, -1.405 + // AdcParam 1, 128, 0, 0 + // AdcParam 1, 128, 0, 0 + // AdcParam 1, 0, ANALOG_RANGE, 0, 100 ADC_RANGE + // AdcParam 1, 0, 2146, 0.23 + // AdcParam 1, 1000, 0, 0 + // AdcParam 1, ADC_PH + // AdcParam 1, ADC_MQ + // AdcParam 1, 0, ANALOG_RANGE, 0, 3.3 ADC_VOLTAGE + // AdcParam 1, 0, ANALOG_RANGE, 0, 3.3 ADC_CURRENT + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) { + uint8_t channel = XdrvMailbox.index -1; + uint32_t adc_type = AdcType(channel); + if (XdrvMailbox.data_len) { + AdcGetSettings(channel); + if (ArgC() > 3) { // Process parameter entry + char argument[XdrvMailbox.data_len]; + Adc[channel].param1 = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int + Adc[channel].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int + if ((GPIO_ADC_INPUT == adc_type) || + (GPIO_ADC_TEMP == adc_type) || + (GPIO_ADC_RANGE == adc_type)) { + Adc[channel].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10)); // param3 = abs(int) + Adc[channel].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10)); // param4 = abs(int) + } else { + Adc[channel].param3 = (int)(CharToFloat(ArgV(argument, 4)) * 10000); // param3 = float + if (ArgC() > 4) { + Adc[channel].param4 = (int)(CharToFloat(ArgV(argument, 5)) * 10000); // param4 = float + } else { + Adc[channel].param4 = 0; // param4 = fixed 0 + } + } + if (GPIO_ADC_PH == adc_type) { + float phLow = CharToFloat(ArgV(argument, 2)); + Adc[channel].param1 = phLow * ANALOG_PH_DECIMAL_MULTIPLIER; // param1 = float +// Adc[channel].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int + float phHigh = CharToFloat(ArgV(argument, 4)); + Adc[channel].param3 = phHigh * ANALOG_PH_DECIMAL_MULTIPLIER; // param3 = float + Adc[channel].param4 = strtol(ArgV(argument, 5), nullptr, 10); // param4 = int + +// AddLog(LOG_LEVEL_INFO, PSTR("ADC: Analog pH probe calibrated. cal-low(pH=ADC) %2_f = %d, cal-high(pH=ADC) %2_f = %d"), &phLow, Adc[channel].param2, &phHigh, Adc[channel].param4); + } + if (GPIO_ADC_CT_POWER == adc_type) { + if (((1 == Adc[channel].param1) & CT_FLAG_ENERGY_RESET) > 0) { // param1 = int + for (uint32_t i = 0; i < Adcs.present; i++) { + Adc[i].energy = 0; + } + Adc[channel].param1 ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag + } + } + if (GPIO_ADC_MQ == adc_type) { + float a = CharToFloat(ArgV(argument, 3)); // param2 = float + float b = CharToFloat(ArgV(argument, 4)); // param3 = float + float ratioMQCleanAir = CharToFloat(ArgV(argument, 5)); // param4 = float + if ((0 == a) && (0 == b) && (0 == ratioMQCleanAir)) { + if (2 == Adc[channel].param1) { // param1 = int + a = 574.25; + b = -2.222; + ratioMQCleanAir = 9.83; + } + else if (4 == Adc[channel].param1) { + a = 1012.7; + b = -2.786; + ratioMQCleanAir = 4.4; + } + else if (7 == Adc[channel].param1) { + a = 99.042; + b = -1.518; + ratioMQCleanAir = 27.5; + } + if (131 == Adc[channel].param1) { + a = 23.943; + b = -1.11; + ratioMQCleanAir = 15; + } + } + Adc[channel].param2 = (int)(a * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[channel].param3 = (int)(b * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + Adc[channel].param4 = (int)(ratioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression + +// AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[channel].param1, &a, &b, &ratioMQCleanAir); + } + } else { // Set default values based on current adc type + // AdcParam 1 + AdcInitParams(channel); + } + AdcSaveSettings(channel); } - // AdcParam - AdcGetSettings(idx); - Response_P(PSTR("{\"" D_CMND_ADCPARAM "%d\":[%d,%d,%d"), idx +1, Adcs.type, Adc[idx].param1, Adc[idx].param2); - if ((ADC_INPUT == Adc[idx].type) || - (ADC_RANGE == Adc[idx].type) || - (ADC_MQ == Adc[idx].type)) { - ResponseAppend_P(PSTR(",%d,%d"), Adc[idx].param3, Adc[idx].param4); // param3 = int, param4 = int + // AdcParam / AdcGpio + AdcGetSettings(channel); + Response_P(PSTR("{\"%s"), XdrvMailbox.command); // {"AdcParam or {"AdcGpio + if (strstr_P(XdrvMailbox.command, PSTR(D_CMND_ADCGPIO))) { + ResponseAppend_P(PSTR("%d\":["), Adc[channel].pin); + } else { + ResponseAppend_P(PSTR("%d\":[%d,"), channel +1, Adc[channel].pin); + } + ResponseAppend_P(PSTR("%d,%d"), Adc[channel].param1, Adc[channel].param2); + if ((GPIO_ADC_INPUT == adc_type) || + (GPIO_ADC_TEMP == adc_type) || + (GPIO_ADC_RANGE == adc_type) || + (GPIO_ADC_MQ == adc_type)) { + ResponseAppend_P(PSTR(",%d,%d"), Adc[channel].param3, Adc[channel].param4); // param3 = int, param4 = int } else { - float param = (float)Adc[idx].param3 / 10000; - ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[idx].param3), ¶m); // param3 = float - if ((ADC_CT_POWER == Adc[idx].type) || - (ADC_VOLTAGE == Adc[idx].type) || - (ADC_CURRENT == Adc[idx].type)) { - param = (float)Adc[idx].param4 / 10000; - ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[idx].param4), ¶m); // param4 = float - } - else { - ResponseAppend_P(PSTR(",%d"), Adc[idx].param4); // param4 = int + float param = (float)Adc[channel].param3 / 10000; + ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[channel].param3), ¶m); // param3 = float + if ((GPIO_ADC_CT_POWER == adc_type) || + (GPIO_ADC_VOLTAGE == adc_type) || + (GPIO_ADC_CURRENT == adc_type)) { + param = (float)Adc[channel].param4 / 10000; + ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[channel].param4), ¶m); // param4 = float + } else { + ResponseAppend_P(PSTR(",%d"), Adc[channel].param4); // param4 = int } } ResponseAppend_P(PSTR("]}")); @@ -969,9 +1000,10 @@ bool Xnrg33(uint32_t function) { if (FUNC_PRE_INIT == function) { uint32_t voltage_count = 0; uint32_t current_count = 0; - for (uint32_t idx = 0; idx < Adcs.present; idx++) { - if (ADC_VOLTAGE == Adc[idx].type) { voltage_count++; } - if (ADC_CURRENT == Adc[idx].type) { current_count++; } + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + uint32_t adc_type = AdcType(channel); + if (GPIO_ADC_VOLTAGE == adc_type) { voltage_count++; } + if (GPIO_ADC_CURRENT == adc_type) { current_count++; } } if (voltage_count || current_count) { Energy->type_dc = true; From f6c306489023d5fb24366c1ca336d2553edf4772 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 3 Aug 2024 18:03:41 +0200 Subject: [PATCH 231/252] Fix ADC migration --- tasmota/tasmota_xsns_sensor/xsns_02_analog.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 59bca008c..75b43b2c2 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -226,7 +226,7 @@ bool AdcGetSettings(uint32_t channel) { Adc[channel].param2 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 3)); Adc[channel].param3 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 4)); Adc[channel].param4 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 5)); - if (adc_type < GPIO_ADC_INPUT) { // Former ADC_END + if ((adc_type > 0) && (adc_type < GPIO_ADC_INPUT)) { // Former ADC_END AdcSaveSettings(channel); adc_type = AdcType(channel); // Migrate for backwards compatibility } From 82add09bf9e57e4e3445777d0f89e6cf6d26f86f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Aug 2024 16:11:13 +0200 Subject: [PATCH 232/252] Fix Core 3.0.4 baudrate detection --- tasmota/tasmota_support/support.ino | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index 805bfeca4..d3908029a 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -2060,7 +2060,14 @@ uint32_t ConvertSerialConfig(uint8_t serial_config) { //} //#else uint32_t GetSerialBaudrate(void) { - return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201 +// return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201 +// Since core 3.0.4 the returned baudrate could even be 115942 instead of 115200 !!! + uint32_t margin = 300; + uint32_t baudrate = Serial.baudRate(); + if (baudrate > 10000) { + margin = 2400; + } + return (baudrate / margin) * margin; // Fix ESP32 strange results like 115201 } //#endif From 469f12abbc13361e4a41575eb7b39f9b5cd2d183 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Aug 2024 16:35:02 +0200 Subject: [PATCH 233/252] Add ADC support for Shelly Plus RGBW PM --- .../tasmota_xsns_sensor/xsns_02_analog.ino | 130 ++++++++++++------ 1 file changed, 89 insertions(+), 41 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 75b43b2c2..b193660e7 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -22,6 +22,35 @@ #ifdef USE_ADC /*********************************************************************************************\ * ADC support for ESP8266 GPIO17 (=PIN_A0) and ESP32 up to 8 channels on GPIO32 to GPIO39 + * + * + * + * + * For shelly RGBW PM: + * Template {"NAME":"Shelly Plus RGBW PM Pot.meter","GPIO":[1,0,0,0,419,0,0,0,0,0,544,0,0,0,0,1,0,0,1,0,0,416,417,418,0,0,0,0,0,4736,11264,11296,4704,0,4705,0],"FLAG":0,"BASE":1} + * AdcParam1 1,32000,40000,3350 <- Temperature parameters + * AdcParam2 1,1161,3472,10,30 <- Voltage parameters + * AdcParam3 1,960,1017,0.01,0.706 <- Current parameters + * AdcParam4 1,1552,176,3,1 <- I1 Potentiometer RGBW or RGB if SO37 128 + * AdcParam4 1,1552,176,3,3 <- I1 Potentiometer RGBW or RGB if SO37 128 without fading + * AdcParam5 1,1552,176,3,1 <- I3 Potentiometer W if SO37 128 + * Fade 1 + * Speed 6 + * VoltRes 2 + * WattRes 2 + * + * Template {"NAME":"Shelly Plus RGBW PM Button","GPIO":[1,0,0,0,419,0,0,0,0,0,544,0,0,0,0,1,0,0,1,0,0,416,417,418,0,0,0,0,0,4736,11264,11296,4800,4801,4802,4803],"FLAG":0,"BASE":1} + * AdcParam1 1,8000,9200,3350 <- Temperature parameters + * AdcParam2 1,1161,3472,10,30 <- Voltage parameters + * AdcParam3 1,960,1017,0.01,0.706 <- Current parameters + * AdcParam4 1,511 <- I1 Button + * AdcParam5 1,511 <- I2 Button + * AdcParam6 1,511 <- I3 Button + * AdcParam7 1,511 <- I4 Button + * Fade 1 + * Speed 6 + * VoltRes 2 + * WattRes 2 \*********************************************************************************************/ #define XSNS_02 2 @@ -156,23 +185,24 @@ #define ANALOG_MQ_SAMPLES 60 struct { - uint8_t present = 0; + uint8_t present; } Adcs; struct { float *mq_samples; - float temperature = 0; - float current = 0; - float energy = 0; - uint32_t previous_millis = 0; - uint32_t param1 = 0; - uint32_t param2 = 0; - int param3 = 0; - int param4 = 0; - int indexOfPointer = -1; - uint16_t last_value = 0; + float temperature; + float current; + float energy; + uint32_t previous_millis; + uint32_t param1; + uint32_t param2; + int param3; + int param4; + int indexOfPointer; + uint16_t last_value; uint16_t type; - uint8_t pin = 0; + uint8_t index; + uint8_t pin; } Adc[MAX_ADCS]; /*********************************************************************************************\ @@ -202,18 +232,12 @@ uint16_t AdcRead1(uint32_t pin) { /*********************************************************************************************/ -uint32_t AdcType(uint32_t channel) { - return TasmotaGlobal.gpio_pin[Adc[channel].pin] >> 5; -} - -uint32_t AdcIndex(uint32_t channel) { - return TasmotaGlobal.gpio_pin[Adc[channel].pin] & 0x001F; -} - void AdcSaveSettings(uint32_t channel) { - char parameters[32]; - snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d"), - Adc[channel].type, Adc[channel].param1, Adc[channel].param2, Adc[channel].param3, Adc[channel].param4); + char parameters[32] = { 0 }; + if (channel < Adcs.present) { + snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d"), + Adc[channel].type, Adc[channel].param1, Adc[channel].param2, Adc[channel].param3, Adc[channel].param4); + } SettingsUpdateText(SET_ADC_PARAM1 + channel, parameters); } @@ -228,10 +252,10 @@ bool AdcGetSettings(uint32_t channel) { Adc[channel].param4 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + channel), ",", 5)); if ((adc_type > 0) && (adc_type < GPIO_ADC_INPUT)) { // Former ADC_END AdcSaveSettings(channel); - adc_type = AdcType(channel); // Migrate for backwards compatibility + adc_type = Adc[channel].type; // Migrate for backwards compatibility } } - return (AdcType(channel) == adc_type); + return (Adc[channel].type == adc_type); } void AdcInitParams(uint32_t channel) { @@ -239,7 +263,7 @@ void AdcInitParams(uint32_t channel) { Adc[channel].param2 = 0; Adc[channel].param3 = 0; Adc[channel].param4 = 0; - uint32_t adc_type = AdcType(channel); + uint32_t adc_type = Adc[channel].type; switch (adc_type) { case GPIO_ADC_INPUT: // Adc[channel].param1 = 0; @@ -310,6 +334,8 @@ void AdcInitParams(uint32_t channel) { void AdcInit(void) { Adcs.present = 0; + memset(&Adc, 0, sizeof(Adc)); + uint32_t pin = 0; // ESP32 full range of GPIOs possible for ADC channels #ifdef ESP8266 pin = ADC0_PIN; // ESP8266 single ADC channel @@ -331,8 +357,10 @@ void AdcInit(void) { case GPIO_ADC_LIGHT: case GPIO_ADC_TEMP: case GPIO_ADC_INPUT: - Adc[Adcs.present].type = adc_type; + Adc[Adcs.present].indexOfPointer = -1; Adc[Adcs.present].pin = pin; + Adc[Adcs.present].type = adc_type; + Adc[Adcs.present].index = TasmotaGlobal.gpio_pin[pin] & 0x001F; Adcs.present++; if (Adcs.present == MAX_ADCS) { break; } } @@ -350,6 +378,11 @@ void AdcInit(void) { } } } + for (uint32_t channel = Adcs.present; channel < MAX_ADCS; channel++) { + if (strlen(SettingsText(SET_ADC_PARAM1 + channel))) { + AdcSaveSettings(channel); // Free space by unused params + } + } } uint16_t AdcRead(uint32_t pin, uint32_t factor) { @@ -380,13 +413,24 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) { void AdcEvery250ms(void) { char adc_channel[3] = { 0 }; uint32_t offset = 0; + + uint32_t dimmer_count = 0; +#ifdef USE_LIGHT + if (!light_controller.isCTRGBLinked()) { // SetOption37 >= 128 (Light) RGB and White channel separation (default 0) + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + if ((GPIO_ADC_INPUT == Adc[channel].type) && (Adc[channel].param4 > 0)) { + dimmer_count++; + } + } + } +#endif // USE_LIGHT for (uint32_t channel = 0; channel < Adcs.present; channel++) { - uint32_t type_index = AdcIndex(channel); + uint32_t type_index = Adc[channel].index; #ifdef ESP32 snprintf_P(adc_channel, sizeof(adc_channel), PSTR("%d"), type_index +1); offset = 1; #endif - uint32_t adc_type = AdcType(channel); + uint32_t adc_type = Adc[channel].type; if (GPIO_ADC_INPUT == adc_type) { int adc = AdcRead(Adc[channel].pin, 4); // 4 = 16 mS bool swap = (Adc[channel].param2 < Adc[channel].param1); @@ -413,12 +457,16 @@ void AdcEvery250ms(void) { #ifdef USE_LIGHT } else { char command[33]; - if (Settings->flag3.pwm_multi_channels) { // SetOption68 - Enable multi-channels PWM instead of Color PWM -// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_CHANNEL "%d %d"), type_index +1, new_value); + if (Settings->flag3.pwm_multi_channels) { // SetOption68 - Enable multi-channels PWM instead of Color PWM snprintf_P(command, sizeof(command), PSTR(D_CMND_CHANNEL "%d %d"), type_index +1, new_value); } else { -// snprintf_P(command, sizeof(command), PSTR("_" D_CMND_DIMMER "3 %d"), new_value); - snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER "3 %d"), new_value); // Change both RGB and W(W) Dimmers with no fading + uint32_t dimmer_option; + if (dimmer_count > 1) { + dimmer_option = (0 == type_index) ? 1 : 2; // Change RGB (1) or W(W) (2) dimmer + } else { + dimmer_option = (3 == Adc[channel].param4) ? 3 : 0; // Change both RGB and W(W) Dimmers (0) with no fading (3) + } + snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER "%d %d"), dimmer_option, new_value); } ExecuteCommand(command, SRC_SWITCH); } @@ -441,7 +489,7 @@ void AdcEvery250ms(void) { uint8_t AdcGetButton(uint32_t pin) { for (uint32_t channel = 0; channel < Adcs.present; channel++) { - uint32_t adc_type = AdcType(channel); + uint32_t adc_type = Adc[channel].type; if (Adc[channel].pin == pin) { if (GPIO_ADC_BUTTON_INV == adc_type) { return (AdcRead(Adc[channel].pin, 1) < Adc[channel].param1); @@ -584,8 +632,8 @@ void AdcEverySecond(void) { uint32_t voltage_count = 0; uint32_t current_count = 0; for (uint32_t channel = 0; channel < Adcs.present; channel++) { - uint32_t type_index = AdcIndex(channel); - uint32_t adc_type = AdcType(channel); + uint32_t type_index = Adc[channel].index; + uint32_t adc_type = Adc[channel].type; if (GPIO_ADC_TEMP == adc_type) { int adc = AdcRead(Adc[channel].pin, 2); // Steinhart-Hart equation for thermistor as temperature sensor: @@ -664,13 +712,13 @@ void AdcShow(bool json) { bool jsonflg = false; for (uint32_t channel = 0; channel < Adcs.present; channel++) { - uint32_t type_index = AdcIndex(channel); + uint32_t type_index = Adc[channel].index; #ifdef ESP32 snprintf_P(adc_name, sizeof(adc_name), PSTR("Analog%d"), type_index +1); snprintf_P(adc_channel, sizeof(adc_channel), PSTR("%d"), type_index +1); offset = 1; #endif - uint32_t adc_type = AdcType(channel); + uint32_t adc_type = Adc[channel].type; switch (adc_type) { case GPIO_ADC_INPUT: { #ifdef USE_LIGHT @@ -881,10 +929,10 @@ void CmndAdcParam(void) { // AdcParam 1, 0, ANALOG_RANGE, 0, 3.3 ADC_CURRENT if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) { uint8_t channel = XdrvMailbox.index -1; - uint32_t adc_type = AdcType(channel); + uint32_t adc_type = Adc[channel].type; if (XdrvMailbox.data_len) { AdcGetSettings(channel); - if (ArgC() > 3) { // Process parameter entry + if (ArgC() > 2) { // Process parameter entry char argument[XdrvMailbox.data_len]; Adc[channel].param1 = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int Adc[channel].param2 = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int @@ -1001,7 +1049,7 @@ bool Xnrg33(uint32_t function) { uint32_t voltage_count = 0; uint32_t current_count = 0; for (uint32_t channel = 0; channel < Adcs.present; channel++) { - uint32_t adc_type = AdcType(channel); + uint32_t adc_type = Adc[channel].type; if (GPIO_ADC_VOLTAGE == adc_type) { voltage_count++; } if (GPIO_ADC_CURRENT == adc_type) { current_count++; } } From bdec6aed67387e4b1233c442ac77977665884c0e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Aug 2024 16:37:36 +0200 Subject: [PATCH 234/252] Update xsns_02_analog.ino --- tasmota/tasmota_xsns_sensor/xsns_02_analog.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index b193660e7..b905f880f 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -40,7 +40,7 @@ * WattRes 2 * * Template {"NAME":"Shelly Plus RGBW PM Button","GPIO":[1,0,0,0,419,0,0,0,0,0,544,0,0,0,0,1,0,0,1,0,0,416,417,418,0,0,0,0,0,4736,11264,11296,4800,4801,4802,4803],"FLAG":0,"BASE":1} - * AdcParam1 1,8000,9200,3350 <- Temperature parameters + * AdcParam1 1,32000,40000,3350 <- Temperature parameters * AdcParam2 1,1161,3472,10,30 <- Voltage parameters * AdcParam3 1,960,1017,0.01,0.706 <- Current parameters * AdcParam4 1,511 <- I1 Button From 3473c3c1b0a0a1d4e5c44eba5ef1cfca5bf11ac9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Aug 2024 17:42:15 +0200 Subject: [PATCH 235/252] Fix scientific notation for 1234.5 (#21131) --- .../xdrv_87_esp32_sonoff_tm1621.ino | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino index cce1f7c82..327b0d855 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino @@ -42,6 +42,8 @@ #define TM1621_ROTATE 5 // Seconds display rotation speed #define TM1621_MAX_VALUES 8 // Default 8 x two different lines +//#define TM1621_DEBUG + #define TM1621_PULSE_WIDTH 10 // microseconds (Sonoff = 100) #define TM1621_SYS_EN 0x01 // 0b00000001 @@ -263,10 +265,8 @@ void TM1621SendRows(void) { if (len <= 5) { // "----", " ", "0.4", "237.5" dp = strchr(Tm1621.row[j], '.'); row_idx = len -1; - } else { // "12345.6" = "12E3" - if (len > 13) { // "123456789012.3" = "12E9" - len = 13; - } + } + else if (len > 6) { // "1234567890.3" = "12E8" Tm1621.row[j][2] = 'E'; Tm1621.row[j][3] = '0' + len -4; row_idx = 3; @@ -543,9 +543,17 @@ void TM1621EverySecond(void) { \*********************************************************************************************/ const char kTm1621Commands[] PROGMEM = "Dsp|" // No prefix - "Line|Speed"; + "Line|" +#ifdef TM1621_DEBUG + "Test|" +#endif // TM1621_DEBUG + "Speed"; void (*const kTm1621Command[])(void) PROGMEM = { - &CmndDspLine, &CmndDspSpeed }; + &CmndDspLine, +#ifdef TM1621_DEBUG + &CmndDspTest, +#endif // TM1621_DEBUG + &CmndDspSpeed }; void CmndDspLine(void) { // DspLine1 ,,,,... = Display specific JSON value and rotate between them @@ -606,6 +614,22 @@ void CmndDspSpeed(void) { ResponseCmndNumber(Xdrv87Settings.rotate); } +#ifdef TM1621_DEBUG +void CmndDspTest(void) { + // Only one decimal is supported !!! + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) { + if (XdrvMailbox.data_len > 0) { + uint32_t line = XdrvMailbox.index -1; + snprintf_P(Tm1621.row[0], sizeof(Tm1621.row[0]), PSTR("----")); + snprintf_P(Tm1621.row[1], sizeof(Tm1621.row[1]), PSTR("----")); + snprintf_P(Tm1621.row[line], sizeof(Tm1621.row[line]), PSTR("%s"), XdrvMailbox.data); + TM1621SendRows(); + } + } + ResponseCmndDone(); +} +#endif // TM1621_DEBUG + /*********************************************************************************************\ * Interface \*********************************************************************************************/ From 4f035d18f6e3772dbb8d3337f5cba3394cf92348 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Aug 2024 18:06:24 +0200 Subject: [PATCH 236/252] Fix invalid ADC energy reset --- tasmota/tasmota_xsns_sensor/xsns_02_analog.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index b905f880f..b72e3da8f 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -687,6 +687,7 @@ void AdcEverySecond(void) { uint32_t voltage_phase = (voltage_count == current_count) ? phase : 0; Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; // Watt Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1000) / 36; // deca_microWh + Energy->data_valid[phase] = 0; } EnergyUpdateToday(); } From f88a635d5d2d245ffc7b89345fc16b65a44c223f Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 6 Aug 2024 12:43:15 +0200 Subject: [PATCH 237/252] Zigbee loads device data early before MCU startup (#21917) --- CHANGELOG.md | 1 + .../xdrv_23_zigbee_1_headers.ino | 2 +- .../xdrv_23_zigbee_7_0_statemachine.ino | 54 +++++++++++++---- .../xdrv_23_zigbee_A_impl.ino | 58 +++++++------------ .../xdrv_52_3_berry_zigbee.ino | 6 +- 5 files changed, 69 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fea8d1ff..a4d6d1e47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ All notable changes to this project will be documented in this file. - ESP32 platform update from 2024.07.11 to 2024.08.10 (#21893) - ESP32 Framework (Arduino Core) from v3.0.2 to v3.0.4 (#21893) - Refactored Analog driver to better support multiple channels +- Zigbee loads device data early before MCU startup ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino index a28afeae1..77c993a87 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino @@ -69,7 +69,7 @@ public: #endif // USE_ZIGBEE_EEPROM {} - bool active = true; // is Zigbee active for this device, i.e. GPIOs configured + bool active = false; // is Zigbee active for this device, i.e. GPIOs configured bool state_machine = false; // the state machine is running bool state_waiting = false; // the state machine is waiting for external event or timeout bool state_no_timeout = false; // the current wait loop does not generate a timeout but only continues running diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino index 204dc9406..bffd6d1c8 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino @@ -425,7 +425,27 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_ON_ERROR_GOTO(ZIGBEE_LABEL_ABORT) ZI_ON_TIMEOUT_GOTO(ZIGBEE_LABEL_ABORT) ZI_ON_RECV_UNEXPECTED(&ZNP_Recv_Default) + + ZI_LOG(LOG_LEVEL_INFO, D_LOG_ZIGBEE "Loading Zigbee data") + ZI_CALL(&Z_Prepare_Storage, 0) + ZI_CALL(&Z_Load_Devices, 0) + ZI_CALL(&Z_Load_Data, 0) + ZI_CALL(&Z_Set_Save_Data_Timer, 0) + ZI_CALL(&Z_ZbAutoload, 0) +#ifndef USE_ZIGBEE_DEBUG ZI_WAIT(15500) // wait for 15 seconds for Tasmota to stabilize +#else + ZI_WAIT(30000) // wait for cumulated 5 minutes + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) +#endif //ZI_MQTT_STATE(ZIGBEE_STATUS_BOOT, "Booting") ZI_LOG(LOG_LEVEL_INFO, D_LOG_ZIGBEE "rebooting ZNP device") @@ -532,11 +552,6 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { // Correctly configured and running, enable all Tasmota features // ====================================================================== ZI_LABEL(ZIGBEE_LABEL_READY) - ZI_CALL(&Z_Prepare_Storage, 0) - ZI_CALL(&Z_Load_Devices, 0) - ZI_CALL(&Z_Load_Data, 0) - ZI_CALL(&Z_Set_Save_Data_Timer, 0) - ZI_CALL(&Z_ZbAutoload, 0) ZI_MQTT_STATE(ZIGBEE_STATUS_OK, kStarted) ZI_LOG(LOG_LEVEL_INFO, kZigbeeStarted) ZI_CALL(&Z_State_Ready, 1) // Now accept incoming messages @@ -881,7 +896,27 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_ON_ERROR_GOTO(ZIGBEE_LABEL_ABORT) ZI_ON_TIMEOUT_GOTO(ZIGBEE_LABEL_ABORT) ZI_ON_RECV_UNEXPECTED(&EZ_Recv_Default) + + ZI_LOG(LOG_LEVEL_INFO, D_LOG_ZIGBEE "Loading Zigbee data") + ZI_CALL(&Z_Prepare_Storage, 0) + ZI_CALL(&Z_Load_Devices, 0) + ZI_CALL(&Z_Load_Data, 0) + ZI_CALL(&Z_Set_Save_Data_Timer, 0) + ZI_CALL(&Z_ZbAutoload, 0) +#ifndef USE_ZIGBEE_DEBUG ZI_WAIT(15500) // wait for 15 seconds for Tasmota to stabilize +#else + ZI_WAIT(30000) // wait for cumulated 5 minutes + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) + ZI_WAIT(30000) +#endif // Hardware reset ZI_LOG(LOG_LEVEL_INFO, kResettingDevice) // Log Debug: resetting EZSP device @@ -978,12 +1013,7 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_LOG(LOG_LEVEL_INFO, kZigbeeGroup0) ZI_SEND(ZBS_SET_MCAST_ENTRY) ZI_WAIT_RECV(2500, ZBR_SET_MCAST_ENTRY) - // ZI_LABEL(ZIGBEE_LABEL_READY) - ZI_CALL(&Z_Prepare_Storage, 0) - ZI_CALL(&Z_Load_Devices, 0) - ZI_CALL(&Z_Load_Data, 0) - ZI_CALL(&Z_Set_Save_Data_Timer, 0) - ZI_CALL(&Z_ZbAutoload, 0) + ZI_LABEL(ZIGBEE_LABEL_READY) ZI_MQTT_STATE(ZIGBEE_STATUS_OK, kStarted) ZI_LOG(LOG_LEVEL_INFO, kZigbeeStarted) ZI_CALL(&Z_State_Ready, 1) // Now accept incoming messages @@ -1088,6 +1118,7 @@ void ZigbeeStateMachine_Run(void) { } if (zigbee.pc < 0) { zigbee.state_machine = false; + zigbee.active = false; return; } @@ -1133,6 +1164,7 @@ void ZigbeeStateMachine_Run(void) { zigbee.state_machine = false; if (cur_d8) { AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Stopping (%d)"), cur_d8); + zigbee.active = false; } break; case ZGB_INSTR_CALL: diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino index 040a59d1a..c19edc77b 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino @@ -1172,8 +1172,6 @@ void CmndZbName(void) { // // Where can be: short_addr, long_addr, device_index, friendly_name - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - // check if parameters contain a comma ',' char *p = XdrvMailbox.data; char *device_id = strsep(&p, ","); // zigbee identifier @@ -1214,8 +1212,6 @@ void CmndZbModelId(void) { // // Where can be: short_addr, long_addr, device_index, friendly_name - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - // check if parameters contain a comma ',' char *p; strtok_r(XdrvMailbox.data, ",", &p); @@ -1241,8 +1237,6 @@ void CmndZbLight(void) { // // Where can be: short_addr, long_addr, device_index, friendly_name - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - // check if parameters contain a comma ',' char *p = XdrvMailbox.data; char *device_id = strsep(&p, ","); // zigbee identifier @@ -1287,8 +1281,6 @@ void CmndZbOccupancy(void) { // 0x8 = 120 s // Where can be: short_addr, long_addr, device_index, friendly_name - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - // check if parameters contain a comma ',' char *p; strtok_r(XdrvMailbox.data, ",", &p); @@ -1320,7 +1312,6 @@ void CmndZbOccupancy(void) { // Remove an old Zigbee device from the list of known devices, use ZigbeeStatus to know all registered devices // void CmndZbForget(void) { - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, nullptr, nullptr, XdrvMailbox.payload); // in case of short_addr, it must be already registered if (!device.valid()) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; } @@ -1342,7 +1333,6 @@ void CmndZbInfo_inner(const Z_Device & device) { device.jsonPublishAttrList(PSTR(D_JSON_ZIGBEE_INFO), attr_list); // publish as ZbReceived } void CmndZbInfo(void) { - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } TrimSpace(XdrvMailbox.data); if (strlen(XdrvMailbox.data) == 0) { @@ -1369,7 +1359,6 @@ void CmndZbInfo(void) { // Save Zigbee information to flash // void CmndZbSave(void) { - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } switch (XdrvMailbox.payload) { case 2: // save only data hibernateAllData(); @@ -1578,7 +1567,6 @@ void CmndZbEmulation(void) { // ZbRestore [{"Device":"0x5ADF","Name":"Petite_Lampe","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":["0x01","0xF2"]}] // ZbRestore {"Device":"0x5ADF","Name":"Petite_Lampe","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":["0x01","0xF2"]} void CmndZbRestore(void) { - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } TrimSpace(XdrvMailbox.data); if (strlen(XdrvMailbox.data) == 0) { @@ -1795,34 +1783,31 @@ void ZigbeePermitJoinUpdate(void) { // 1.b. `ZbStatus Room` - Show single device shortaddr and name `{"ZbStatus1":[{"Device":"0x868E","Name":"Room"}]}` // 2. `ZbStatus2 Room` - Show detailed information of device `{"ZbStatus2":[{"Device":"0x868E","Name":"Room","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":[1,242],"Config":["L01.2","O01"]}]}` void CmndZbStatus(void) { - if (ZigbeeSerial) { - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - String dump; + TrimSpace(XdrvMailbox.data); + String dump; - if (0 == XdrvMailbox.index) { // Case 0 - dump = zigbee_devices.dumpCoordinator(); + if (0 == XdrvMailbox.index) { // Case 0 + dump = zigbee_devices.dumpCoordinator(); + } else { + Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, nullptr, nullptr, XdrvMailbox.payload); + if (XdrvMailbox.data_len > 0) { + if (!device.valid()) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; } + // case 1.b and 2. + dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device); } else { - Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, nullptr, nullptr, XdrvMailbox.payload); - if (XdrvMailbox.data_len > 0) { - if (!device.valid()) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; } - // case 1.b and 2. - dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device); - } else { - if (XdrvMailbox.index >= 2) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; } - // case 1.a - dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device_unk); - } + if (XdrvMailbox.index >= 2) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; } + // case 1.a + dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device_unk); } - - Response_P(PSTR("{\"%s%d\":%s}"), XdrvMailbox.command, XdrvMailbox.index, dump.c_str()); } + + Response_P(PSTR("{\"%s%d\":%s}"), XdrvMailbox.command, XdrvMailbox.index, dump.c_str()); } // // Command `ZbData` // void CmndZbData(void) { - if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } TrimSpace(XdrvMailbox.data); if (strlen(XdrvMailbox.data) == 0) { @@ -1867,7 +1852,6 @@ void CmndZbConfig(void) { uint64_t zb_precfgkey_h = Settings->zb_precfgkey_h; int8_t zb_txradio_dbm = Settings->zb_txradio_dbm; - // if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } TrimSpace(XdrvMailbox.data); if (strlen(XdrvMailbox.data) > 0) { JsonParser parser(XdrvMailbox.data); @@ -2224,10 +2208,10 @@ void ZigbeeShow(bool json) if (json) { return; #ifdef USE_WEBSERVER - } else { + } else { UnishoxStrings msg(ZB_WEB); uint32_t zigbee_num = zigbee_devices.devicesSize(); - if (zigbee_num > 0) { + if ((zigbee_num > 0) && (!zigbee.init_phase)) { // don't displays devices on UI if still in initialization phase if (zigbee_num > 255) { zigbee_num = 255; } WSContentSend_P(msg[ZB_WEB_CSS], WebColor(COL_TEXT)); @@ -2426,7 +2410,7 @@ void ZigbeeShow(bool json) zigbee.major_rel, zigbee.minor_rel, zigbee.maint_rel, zigbee.revision); WSContentSend_P(HTTP_BTN_ZB_BUTTONS); - } else if (zigbee.state_machine) { // show buttons only if the state machine is still running. If not running anymore, it means aborted + } else { uint32_t grey = WebColor(COL_FORM); WSContentSend_P(HTTP_BTN_ZB_BUTTONS_DISABLED, grey, grey); } @@ -2485,6 +2469,9 @@ bool Xdrv23(uint32_t function) { if (TasmotaGlobal.gpio_optiona.enable_ccloader) { return false; } bool result = false; + if (!zigbee.active && (FUNC_PRE_INIT == function)) { + ZigbeeInit(); + } if (zigbee.active) { switch (function) { @@ -2521,9 +2508,6 @@ bool Xdrv23(uint32_t function) { WebServer_on(PSTR("/zbr"), ZigbeeMapRefresh, HTTP_GET); // add web handler for Zigbee map refresh break; #endif // USE_WEBSERVER - case FUNC_PRE_INIT: - ZigbeeInit(); - break; case FUNC_COMMAND: result = DecodeCommand(kZbCommands, ZigbeeCommand, kZbSynonyms); break; diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino index e2c9d3fb8..b7d95d7c3 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino @@ -83,7 +83,7 @@ extern "C" { int zc_started(struct bvm *vm) { // return `nil` if `zigbee.active` is false (i.e. no GPIO configured) // or aborted, `zigbee.init_phase` is `true` but `zigbee.state_machine` is `false` - if (!zigbee.active || (!zigbee.state_machine && zigbee.init_phase)) { + if (!zigbee.active) { be_return_nil(vm); } be_pushbool(vm, !zigbee.init_phase); @@ -117,7 +117,7 @@ extern "C" { // implement item() and find() int zc_item_or_find(struct bvm *vm, bbool raise_if_unknown) { int32_t top = be_top(vm); // Get the number of arguments - if (zigbee.init_phase) { + if (!zigbee.active) { be_raise(vm, "internal_error", "zigbee not started"); } if (top >= 2 && (be_isint(vm, 2) || be_isstring(vm, 2))) { @@ -189,7 +189,7 @@ extern "C" { int zc_iter(bvm *vm); int zc_iter(bvm *vm) { - if (zigbee.init_phase) { + if (!zigbee.active) { be_raise(vm, "internal_error", "zigbee not started"); } be_pushntvclosure(vm, zc_iter_closure, 1); From 6ffcc69e2dc5e2626a0d6d3f7d98795ba73e324c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:29:28 +0200 Subject: [PATCH 238/252] Update changelogs --- CHANGELOG.md | 2 +- RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4d6d1e47..b9d675bef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,7 +30,7 @@ All notable changes to this project will be documented in this file. - ESP32 platform update from 2024.07.11 to 2024.08.10 (#21893) - ESP32 Framework (Arduino Core) from v3.0.2 to v3.0.4 (#21893) - Refactored Analog driver to better support multiple channels -- Zigbee loads device data early before MCU startup +- Zigbee loads device data early before MCU startup (#21917) ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index cf2d4c46e..00ef59a13 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -183,6 +183,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131) +- Zigbee loads device data early before MCU startup [#21917](https://github.com/arendst/Tasmota/issues/21917) - Berry updated precompiled Windows binary [#21858](https://github.com/arendst/Tasmota/issues/21858) - Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812) - Berry consolidated constants for solidified classes reduces Flash size [#2185](https://github.com/arendst/Tasmota/issues/2185) From 040ffb33e0df70b3fd0b70951359582db51de669 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 6 Aug 2024 18:07:26 +0200 Subject: [PATCH 239/252] Fix restore ADC energytoday on power cycle --- .../tasmota_xsns_sensor/xsns_02_analog.ino | 95 +++++++++++-------- 1 file changed, 53 insertions(+), 42 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index b72e3da8f..9e7be7dbf 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -629,8 +629,6 @@ void AdcGetCurrentPower(uint8_t channel, uint8_t factor) { } void AdcEverySecond(void) { - uint32_t voltage_count = 0; - uint32_t current_count = 0; for (uint32_t channel = 0; channel < Adcs.present; channel++) { uint32_t type_index = Adc[channel].index; uint32_t adc_type = Adc[channel].type; @@ -668,32 +666,13 @@ void AdcEverySecond(void) { AddSampleMq(channel); AdcGetMq(channel); } -#ifdef USE_ENERGY_SENSOR - else if (GPIO_ADC_VOLTAGE == adc_type) { - Energy->voltage_available = true; - Energy->voltage[type_index] = AdcGetRange(channel) / 10000; // Volt - voltage_count++; - } - else if (GPIO_ADC_CURRENT == adc_type) { - Energy->current_available = true; - Energy->current[type_index] = AdcGetRange(channel) / 10000; // Ampere - current_count++; - } -#endif // USE_ENERGY_SENSOR } -#ifdef USE_ENERGY_SENSOR - if (voltage_count && current_count) { - for (uint32_t phase = 0; phase < current_count; phase++) { - uint32_t voltage_phase = (voltage_count == current_count) ? phase : 0; - Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; // Watt - Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1000) / 36; // deca_microWh - Energy->data_valid[phase] = 0; - } - EnergyUpdateToday(); - } -#endif // USE_ENERGY_SENSOR } +/*********************************************************************************************\ + * Presentation +\*********************************************************************************************/ + void AdcShowContinuation(bool *jsonflg) { if (*jsonflg) { ResponseAppend_P(PSTR(",")); @@ -1043,26 +1022,58 @@ void CmndAdcParam(void) { \*********************************************************************************************/ #ifdef USE_ENERGY_SENSOR +void AdcEnergyEverySecond(void) { + uint32_t voltage_count = 0; + uint32_t current_count = 0; + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + uint32_t type_index = Adc[channel].index; + uint32_t adc_type = Adc[channel].type; + if (GPIO_ADC_VOLTAGE == adc_type) { + Energy->voltage_available = true; + Energy->voltage[type_index] = AdcGetRange(channel) / 10000; // Volt + voltage_count++; + } + else if (GPIO_ADC_CURRENT == adc_type) { + Energy->current_available = true; + Energy->current[type_index] = AdcGetRange(channel) / 10000; // Ampere + current_count++; + } + } + for (uint32_t phase = 0; phase < current_count; phase++) { + uint32_t voltage_phase = (voltage_count == current_count) ? phase : 0; + Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; // Watt + Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1000) / 36; // deca_microWh + Energy->data_valid[phase] = 0; + } + EnergyUpdateToday(); +} + bool Xnrg33(uint32_t function) { bool result = false; - if (FUNC_PRE_INIT == function) { - uint32_t voltage_count = 0; - uint32_t current_count = 0; - for (uint32_t channel = 0; channel < Adcs.present; channel++) { - uint32_t adc_type = Adc[channel].type; - if (GPIO_ADC_VOLTAGE == adc_type) { voltage_count++; } - if (GPIO_ADC_CURRENT == adc_type) { current_count++; } - } - if (voltage_count || current_count) { - Energy->type_dc = true; - Energy->voltage_common = (1 == voltage_count); - Energy->phase_count = (voltage_count > current_count) ? voltage_count : current_count; - Energy->voltage_available = false; - Energy->current_available = false; - Energy->use_overtemp = true; // Use global temperature for overtemp detection - TasmotaGlobal.energy_driver = XNRG_33; - } + switch (function) { + case FUNC_ENERGY_EVERY_SECOND: + AdcEnergyEverySecond(); + break; + case FUNC_PRE_INIT: { + uint32_t voltage_count = 0; + uint32_t current_count = 0; + for (uint32_t channel = 0; channel < Adcs.present; channel++) { + uint32_t adc_type = Adc[channel].type; + if (GPIO_ADC_VOLTAGE == adc_type) { voltage_count++; } + if (GPIO_ADC_CURRENT == adc_type) { current_count++; } + } + if (voltage_count || current_count) { + Energy->type_dc = true; + Energy->voltage_common = (1 == voltage_count); + Energy->phase_count = (voltage_count > current_count) ? voltage_count : current_count; + Energy->voltage_available = false; + Energy->current_available = false; + Energy->use_overtemp = true; // Use global temperature for overtemp detection + TasmotaGlobal.energy_driver = XNRG_33; + } + } + break; } return result; } From 77669f7e202b4d83503cafdb13246eddfbc981e6 Mon Sep 17 00:00:00 2001 From: sfromis <47082390+sfromis@users.noreply.github.com> Date: Wed, 7 Aug 2024 16:08:52 +0200 Subject: [PATCH 240/252] Update my_user_config.h (#21921) Adding SetOption references for a few `#define`, to make the relation clear, and in the common searchable format like `[SetOption147]`. Also added that since some time now, this option covers both `SSerialReceived` and `IrReceived`. --- tasmota/my_user_config.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 154979d62..68aba26d1 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -431,9 +431,9 @@ #define MQTT_LWT_OFFLINE "Offline" // MQTT LWT offline topic message #define MQTT_LWT_ONLINE "Online" // MQTT LWT online topic message -#define MQTT_CLEAN_SESSION 1 // Mqtt clean session connection (0 = No clean session, 1 = Clean session (default)) -#define MQTT_DISABLE_SSERIALRECEIVED 0 // 1 = Disable sserialreceived mqtt messages, 0 = Enable sserialreceived mqtt messages (default) -#define MQTT_DISABLE_MODBUSRECEIVED 0 // 1 = Disable ModbusReceived mqtt messages, 0 = Enable ModbusReceived mqtt messages (default) +#define MQTT_CLEAN_SESSION 1 // [SetOption140] Mqtt clean session connection (0 = No clean session, 1 = Clean session (default)) +#define MQTT_DISABLE_SSERIALRECEIVED 0 // [SetOption147] 1 = Disable SSerialReceived/IrReceived mqtt messages, 0 = Enable these mqtt messages (default) +#define MQTT_DISABLE_MODBUSRECEIVED 0 // [SetOption158] 1 = Disable ModbusReceived mqtt messages, 0 = Enable ModbusReceived mqtt messages (default) // -- MQTT - Domoticz ----------------------------- #define USE_DOMOTICZ // Enable Domoticz (+6k code, +0.3k mem) @@ -1026,7 +1026,7 @@ #define USE_ZIGBEE_MAXTIME_LIFT 4*60*60 // 4h // -- Matter support (ESP32 and variants) ---------------------------- -#define MATTER_ENABLED false // Is Matter enabled by default (ie `SO151 1`) +#define MATTER_ENABLED false // [SetOption151] Is Matter enabled by default // -- Other sensors/drivers ----------------------- From 663fc88373ca8e4ca9cc222297e2e337acaef659 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Wed, 7 Aug 2024 16:09:53 +0200 Subject: [PATCH 241/252] Update NeoPool comments (#21920) --- .../tasmota_xsns_sensor/xsns_83_neopool.ino | 196 ++++++++++++------ 1 file changed, 129 insertions(+), 67 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino index 5311db7e3..93e252b9a 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino @@ -18,8 +18,9 @@ */ #ifdef USE_NEOPOOL -/*********************************************************************************************\ - * Sugar Valley NeoPool electronic pool control and water treatment system, also known as brand +/****************************************************************************\ + * Sugar Valley NeoPool electronic pool control and water treatment system, + * also known as brand: * Hidrolife (yellow case) * Aquascenic (blue case) * Oxilife (green case) @@ -31,24 +32,36 @@ * Bayrol * Hay * - * Sugar Valley RS485 connector inside (DISPLAY/WIFI/EXTERN) pins (from top to bottom): + * Sugar Valley RS485 connector inside (DISPLAY/WIFI/EXTERN) pins + * (from top to bottom): * ___ - * 1 |* |- +12V (internal power supply) - * 2 |* |- (not connected) + * 1 |* |- +12V (from internal power supply) + * 2 |* |- NC (not connected) * 3 |* |- Modbus A+ * 4 |* |- Modbus B- * 5 |*__|- Modbus GND * * Parameter: 19200 Baud / 1 Stopbit / Parity None - * Protocol: Modbus RTU - * NeoPool controller is Modbus server (formerly known as slave) - * Tasmota is Modbus client (formerly known as master) + * Protocol: Modbus RTU * - * Connector DISPLAY is useless as long as the internal display is also connected to the - * second DISPLAY connector. Use WIFI or EXTERN. + * Plug connector: + * The NeoPool device is a Modbus server (formerly known as a slave), + * Tasmota is a Modbus client (formerly known as a master). + * Only one Modbus client (master) can be connected to the Modbus connector + * of the same name. It is not possible to operate several clients on + * connectors with the same name. * - * Hardware serial will be selected if GPIO1 = [NeoPool Rx] and GPIO3 = [NeoPool Tx] -\*********************************************************************************************/ + * The differently labelled Modbus connectors are completely independent + * physical Modbus interfaces. Data traffic on one of the connector is + * invisible on the other connectors. One exception is the DISPLAY connector, + * which is present twice and is normally occupied by the built-in LCD. + * Since only one Modbus client can operate one Modbus server at a time, the + * DISPLAY connector is useless for our purposes as long as the internal LCD + * is connected to one of the two DISPLAY connectors at the same time. + * + * Conclusion: + * Use the WIFI or EXTERNAL connector only. +\****************************************************************************/ #define XSNS_83 83 @@ -79,16 +92,16 @@ // by switching them off and on again for a defined time when the LED is switched on. // Default timings for LED light program step sequence (NPLight 3) #ifndef NEOPOOL_LIGHT_PRG_WAIT -#define NEOPOOL_LIGHT_PRG_WAIT 30 // delay before start prg light if light was off (in ms) +#define NEOPOOL_LIGHT_PRG_WAIT 30 // delay before start prg light if light was off (in 1/10 s) #endif #ifndef NEOPOOL_LIGHT_PRG_DELAY -#define NEOPOOL_LIGHT_PRG_DELAY 15 // default next light prg delay (in ms) +#define NEOPOOL_LIGHT_PRG_DELAY 15 // default next light prg delay (in 1/10 s) #endif #ifndef NEOPOOL_LIGHT_PRG_DELAY_MIN -#define NEOPOOL_LIGHT_PRG_DELAY_MIN 5 // next light prg delay min (in ms) +#define NEOPOOL_LIGHT_PRG_DELAY_MIN 5 // next light prg delay min (in 1/10 s) #endif #ifndef NEOPOOL_LIGHT_PRG_DELAY_MAX -#define NEOPOOL_LIGHT_PRG_DELAY_MAX 100 // next light prg delay max (in ms) +#define NEOPOOL_LIGHT_PRG_DELAY_MAX 100 // next light prg delay max (in 1/10 s) #endif #ifdef ESP32 // Defaults for ESP32 only @@ -102,14 +115,19 @@ #endif #endif -/*********************************************************************************************\ - * Sugar Valley Modbus Register (addresses marked with * are queried with each polling cycle) - * (see https://downloads.vodnici.net/uploads/wpforo/attachments/69/171-Modbus-registers.pdf) -\*********************************************************************************************/ +/****************************************************************************\ + * Sugar Valley Modbus Register + * (addresses marked with * are queried with each polling cycle) + * see https://downloads.vodnici.net/uploads/wpforo/attachments/69/171-Modbus-registers.pdf + * + * Register desribed with ‘!’ means the register is officially undocumented, + * the function was determined by reverse-engineering +\****************************************************************************/ enum NeoPoolRegister { - // addr Unit Description - "!" indicates register is not officially documented + // addr Unit Description // ------ ------ ------------------------------------------------------------ - // MODBUS page (0x00xx) - Manages general configuration of the box. This page is reserved for internal purposes + // MODBUS page (0x00xx) + // Manages general configuration of the box. This page is reserved for internal purposes MBF_POWER_MODULE_VERSION = 0x0002, // 0x0002 ! Power module version (MSB=Major, LSB=Minor) MBF_POWER_MODULE_NODEID = 0x0004, // 0x0004 ! Power module Node ID (6 register 0x0004 - 0x0009) MBF_POWER_MODULE_REGISTER = 0x000C, // 0x000C ! Writing an address in this register causes the power module register address to be read out into MBF_POWER_MODULE_DATA, see MBF_POWER_MODULE_REG_* @@ -119,7 +137,8 @@ enum NeoPoolRegister { MBF_VOLT_5 = 0x006A, // 0x006A* ! 5V line in mV / 0,62069 MBF_AMP_4_20_MICRO = 0x0072, // 0x0072* ! 2-40mA line in µA * 10 (1=0,01mA) - // MEASURE page (0x01xx) - Contains the different measurement information including hydrolysis current, pH level, redox level, etc. + // MEASURE page (0x01xx) + // Contains the different measurement information including hydrolysis current, pH level, redox level, etc. MBF_ION_CURRENT = 0x0100, // 0x0100* Ionization level measured MBF_HIDRO_CURRENT, // 0x0101* Hydrolysis intensity level MBF_MEASURE_PH, // 0x0102* ph pH level measured in 1/100 (700 = 7.00) @@ -138,7 +157,8 @@ enum NeoPoolRegister { MBF_NOTIFICATION, // 0x0110* mask Bit field that informs whether a property page has changed since the last time it was queried. (see MBMSK_NOTIF_*). This register makes it possible to refresh the content of the registers maintained by a modbus master in an optimized way, without the need to reread all registers periodically, but only those on a page that has been changed. MBF_HIDRO_VOLTAGE, // 0x0111 The voltage applied to the hydrolysis cell. This register, together with that of MBF_HIDRO_CURRENT allows extrapolation of water salinity. - // GLOBAL page (0x02xx) - Contains global information, such as the amount of time that each power unit has been working. + // GLOBAL page (0x02xx) + // Contains global information, such as the amount of time that each power unit has been working. MBF_CELL_RUNTIME_LOW = 0x0206, // 0x0206* ! Cell runtime (32 bit value - low word) MBF_CELL_RUNTIME_HIGH, // 0x0207* ! Cell runtime (32 bit value - high word) MBF_CELL_RUNTIME_PART_LOW, // 0x0208* ! Cell part runtime (32 bit value - low word) @@ -159,7 +179,8 @@ enum NeoPoolRegister { MBF_SAVE_TO_EEPROM = 0x02F0, // 0x02F0 A write operation to this register immediately starts a EEPROM storage operation. During the EEPROM storage procedure, the system may be unresponsive to MODBUS requests. The operation will last always less than 1 second. MBF_EXEC = 0x02F5, // 0x02F5 ! A write operation to this register immediately take over settings of the previous written data - // FACTORY page (0x03xx) - Contains factory data such as calibration parameters for the different power units. + // FACTORY page (0x03xx) + // Contains factory data such as calibration parameters for the different power units. MBF_PAR_VERSION = 0x0300, // 0x0300* Software version of the PowerBox MBF_PAR_MODEL, // 0x0301* mask System model options MBF_PAR_SERNUM, // 0x0302* Serial number of the PowerBox @@ -173,7 +194,9 @@ enum NeoPoolRegister { MBF_PAR_HIDRO_MAX_PWM_STEP_UP, // 0x0324 This register sets the PWM ramp up of the hydrolysis in pulses per duty cycle. This register makes it possible to adjust the rate at which the power delivered to the cell increases, allowing a gradual rise in power so that the operation of the switching source of the equipment is not saturated. Default 150 MBF_PAR_HIDRO_MAX_PWM_STEP_DOWN, // 0x0325 This register sets the PWM down ramp of the hydrolysis in pulses per duty cycle. This register allows adjusting the rate at which the power delivered to the cell decreases, allowing a gradual drop in power so that the switched source of the equipment is not disconnected due to lack of consumption. This gradual fall must be in accordance with the type of cell used, since said cell stores charge once the current stimulus has ceased. Default 20 - // INSTALLER page (0x04xx) - Contains a set of configuration registers related to the equipment installation, such as the relays used for each function, the amount of time that each pump must operate, etc. + // INSTALLER page (0x04xx) + // Contains a set of configuration registers related to the equipment installation,# + // such as the relays used for each function, the amount of time that each pump must operate, etc. MBF_PAR_ION_POL0 = 0x0400, // 0x0400 Time in minutes that the equipment must remain working in positive polarization in the copper-silver ionization. MBF_PAR_ION_POL1, // 0x0401 Time in minutes that the equipment must remain working in negative polarization in the copper-silver ionization. MBF_PAR_ION_POL2, // 0x0402 Time in minutes that the equipment must remain working in dead time (without delivering power) in the copper-silver ionization. @@ -249,7 +272,9 @@ enum NeoPoolRegister { MBF_PAR_FILTVALVE_REMAINING, // 0x04EF Time remaining for the current cleaning action in seconds. If this register is 0, it means that there is no cleaning function running. When a cleanup function is started, the contents of the MBF_PAR_FILTVALVE_INTERVAL register are copied to this register, then decremented once per second. The display uses this log to track the progress of the cleaning function. MBF_ACTION_COPY_TO_RTC, // 0x04F0 A write (any value) forces the writing of the RTC time registers MBF_PAR_TIME_LOW (0x0408) and MBF_PAR_TIME_HIGH (0x0409) into the RTC internal microcontroller clock management registers. - // USER page (0x05xx) - Contains user configuration registers, such as the production level for the ionization and the hydrolysis, or the set points for the pH, redox, or chlorine regulation loops. + // USER page (0x05xx) + // Contains user configuration registers, such as the production level + // for the ionization and the hydrolysis, or the set points for the pH, redox, or chlorine regulation loops. MBF_PAR_ION = 0x0500, // 0x0500* Ionization target production level. The value adjusted in this register must not exceed the value set in the MBF_PAR_ION_NOM factory register. MBF_PAR_ION_PR, // 0x0501* Amount of time in minutes that the ionization must be activated each time that the filtration starts. MBF_PAR_HIDRO, // 0x0502* Hydrolisis target production level. When the hydrolysis production is to be set in percent values, this value will contain the percent of production. If the hydrolysis module is set to work in g/h production, this module will contain the desired amount of production in g/h units. The value adjusted in this register must not exceed the value set in the MBF_PAR_HIDRO_NOM factory register. @@ -261,7 +286,8 @@ enum NeoPoolRegister { MBF_PAR_FILTRATION_SPEED_FUNC = 0x0513, // 0x0513 ! filtration speed function control MBF_PAR_FUNCTION_DEPENDENCY = 0x051B, // 0x051B mask Specification for the dependency of different functions, such as heating, from external events like FL1 (see MBMSK_FCTDEP_HEATING/MBMSK_DEPENDENCY_*) - // MISC page (0x06xx) - Contains the configuration parameters for the screen controllers (language, colours, sound, etc). + // MISC page (0x06xx) + // Contains the configuration parameters for the screen controllers (language, colours, sound, etc). MBF_PAR_UICFG_MACHINE = 0x0600, // 0x0600* Machine type (see MBV_PAR_MACH_* and kNeoPoolMachineNames[]) MBF_PAR_UICFG_LANGUAGE, // 0x0601* Selected language (see MBV_PAR_LANG_*) MBF_PAR_UICFG_BACKLIGHT, // 0x0602* Display backlight function (see MBV_PAR_BACKLIGHT_*) @@ -282,7 +308,7 @@ enum NeoPoolRegister { enum NeoPoolConstAndBitMask { // MBF_PH_STATUS MBMSK_PH_STATUS_ALARM = 0x000F, // PH alarm. The possible alarm values are depending on the regulation model: - // Valid alarm values for pH regulation with acid and base: + // Valid alarm values for pH regulation with acid and base: MBV_PH_ACID_BASE_ALARM0 = 0, // no alarm MBV_PH_ACID_BASE_ALARM1 = 1, // pH too high; the pH value is 0.8 points higher than the setpoint (PH1 on acid systems, PH2 on base systems, PH1 on acid+base systems) MBV_PH_ACID_BASE_ALARM2 = 2, // pH too low: the pH value is 0.8 points lower than the set point value set in (PH1 on acid systems, PH2 on base systems, PH2 on acid+base systems) @@ -984,20 +1010,23 @@ const char HTTP_SNS_NEOPOOL_STATUS_INACTIVE[] PROGMEM = "filter:opacity(0.15)"; const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)"; -/*********************************************************************************************\ +/****************************************************************************\ * Commands * * NPFiltration { {speed}} * get/set manual filtration (state = 0..2, speed = 1..3) - * get filtration state if is omitted, otherwise set new state + * get filtration state if is omitted, + * otherwise set new state * 0 - switch filtration pump off * 1 - switch filtration pump on * 2 - toggle filtration pump - * for non-standard filtration types additional speed control is possible + * additional speed control is possible for non-standardised + * filter types * * NPFiltrationMode {} * get/set filtration mode (mode = 0..4|13) - * get mode if is omitted, otherwise set new mode according: + * get mode if is omitted, + * otherwise set new mode according: * 0 - Manual * 1 - Auto * 2 - Heating @@ -1008,35 +1037,40 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)"; * NPFiltrationSpeed {} * (only available for non-standard filtration types) * get/set manual filtration speed (speed = 1..3) - * get filtration speed if is omitted, otherwise set new speed + * get filtration speed if is omitted, + * otherwise set new speed: * 1 - low * 2 - mid * 3 - high * * NPBoost {} * get/set hydrolysis/electrolysis boost mode (mode = 0..2) - * get mode if is omitted, otherwise set new mode according: + * get mode if is omitted, + * otherwise set new mode according: * 0|OFF - boost off * 1|ON - boost on * 2|REDOX - boost on with redox control * * NPTime {

4~s;tWLasTV=`=l85s$?>G-+iA=-1>KJ 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 Izvrj_55h`Sod5s; diff --git a/tasmota/berry/modules/Partition_Wizard/autoexec.be b/tasmota/berry/modules/Partition_Wizard/autoexec.be index da230371a..e1b45bc74 100644 --- a/tasmota/berry/modules/Partition_Wizard/autoexec.be +++ b/tasmota/berry/modules/Partition_Wizard/autoexec.be @@ -1,2 +1,2 @@ -# rm Partition_Wizard.tapp; zip -j -0 Partition_Wizard.tapp Partition_Wizard/* +# rm Partition_Wizard.tapp; zip -j -0 Partition_Wizard.tapp Partition_Wizard/autoexec.be Partition_Wizard/partition_wizard.bec import partition_wizard diff --git a/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec b/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec index 3f884314cae6823852fe0e93558d63d085cbed6f..1a77a823c6f741c7755a396c9ea2b4729708cb04 100644 GIT binary patch delta 39 vcmbQ*#5kjgae@q^+(cP<76vA!9UE;*%@`dgUlmeiO-?K=PThRh%z_I5<}3^& delta 35 rcmbQy#5lEyae@q^>_l1ljSi(|j82np3aPRsCzckc7H@uFX2Asj&rb{D From 9878a96c0b13b943a282309153705f0059fca3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-David=20F=C3=B6rster?= <47479352+Grumium@users.noreply.github.com> Date: Mon, 22 Jul 2024 13:58:17 +0200 Subject: [PATCH 170/252] =?UTF-8?q?Update=20SHT3X=20driver=20to=20bring=20?= =?UTF-8?q?it=20into=20line=20with=20other=20sensors,=20e.g.,=20HYT...,=20?= =?UTF-8?q?and=20avoid=20unnecessary=20I=C2=B2C=20reads=20(#21816)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Avoid unnecessary I²C reads, bring code in line with other sensors. * Update xsns_14_sht3x.ino fix copyright again --- tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino index d2e4b72a4..fca3a5a78 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino @@ -41,6 +41,9 @@ uint8_t sht3x_addresses[] = { 0x44, 0x45, 0x46, 0x70 }; uint8_t sht3x_count = 0; struct SHT3XSTRUCT { + float humi = NAN; + float temp = NAN; + uint8_t valid = 0; uint8_t type; // Sensor type uint8_t address; // I2C bus address uint8_t bus; @@ -64,9 +67,8 @@ uint8_t Sht3xComputeCrc(uint8_t data[], uint8_t len) { return crc; } -bool Sht3xRead(uint32_t sensor, float &t, float &h) { - t = NAN; - h = NAN; +bool Sht3xRead(uint32_t sensor) { + if (sht3x_sensors[sensor].valid) { sht3x_sensors[sensor].valid--; } TwoWire& myWire = I2cGetWire(sht3x_sensors[sensor].bus); if (&myWire == nullptr) { return false; } // No valid I2c bus @@ -95,7 +97,7 @@ bool Sht3xRead(uint32_t sensor, float &t, float &h) { if (myWire.endTransmission() != 0) { // Stop I2C transmission return false; } - delay(30); // Timing verified with logic analyzer (10 is to short) + delay(30); // Timing verified with logic analyzer (10 is too short) uint8_t data[6]; myWire.requestFrom(i2c_address, (uint8_t)6); // Request 6 bytes of data for (uint32_t i = 0; i < 6; i++) { @@ -104,21 +106,24 @@ bool Sht3xRead(uint32_t sensor, float &t, float &h) { if ((Sht3xComputeCrc(&data[0], 2) != data[2]) || (Sht3xComputeCrc(&data[3], 2) != data[5])) { return false; } - t = ((float)(((data[0] << 8) | data[1]) * 175) / 65535.0) - 45.0; + float t; + float h; + t = ((((data[0] << 8) | data[1]) * 175) / 65535.0) - 45.0; if (type == SHT3X_TYPE_SHT4X) { - h = ((float)(((data[3] << 8) | data[4]) * 125) / 65535.0) - 6.0; + h = ((((data[3] << 8) | data[4]) * 125) / 65535.0) - 6.0; } else { - h = ((float)(((data[3] << 8) | data[4]) * 100) / 65535.0); + h = (((data[3] << 8) | data[4]) * 100) / 65535.0; } - return (!isnan(t) && !isnan(h)); + sht3x_sensors[sensor].temp = ConvertTemp(t); + sht3x_sensors[sensor].humi = ConvertHumidity(h); + if (isnan(sht3x_sensors[sensor].temp) || isnan(sht3x_sensors[sensor].humi)) { return false; } + sht3x_sensors[sensor].valid = SENSOR_MAX_MISS; + return true; } /********************************************************************************************/ void Sht3xDetect(void) { - float t; - float h; - for (uint32_t bus = 0; bus < 2; bus++) { for (uint32_t k = 0; k < SHT3X_TYPES; k++) { for (uint32_t i = 0; i < SHT3X_ADDRESSES; i++) { @@ -126,7 +131,7 @@ void Sht3xDetect(void) { sht3x_sensors[sht3x_count].type = k; sht3x_sensors[sht3x_count].address = sht3x_addresses[i]; sht3x_sensors[sht3x_count].bus = bus; - if (Sht3xRead(sht3x_count, t, h)) { + if (Sht3xRead(sht3x_count)) { GetTextIndexed(sht3x_sensors[sht3x_count].types, sizeof(sht3x_sensors[sht3x_count].types), sht3x_sensors[sht3x_count].type, kSht3xTypes); I2cSetActiveFound(sht3x_sensors[sht3x_count].address, sht3x_sensors[sht3x_count].types, sht3x_sensors[sht3x_count].bus); sht3x_count++; @@ -139,15 +144,20 @@ void Sht3xDetect(void) { } } + +void Sht3xUpdate(void) { + for (uint32_t idx = 0; idx < sht3x_count; idx++) { + if (!Sht3xRead(idx)) { + AddLogMissed(sht3x_sensors[idx].types, sht3x_sensors[idx].valid); + } + } +} + void Sht3xShow(bool json) { - float t; - float h; char types[11]; for (uint32_t idx = 0; idx < sht3x_count; idx++) { - if (Sht3xRead(idx, t, h)) { - t = ConvertTemp(t); - h = ConvertHumidity(h); + if (sht3x_sensors[idx].valid) { strlcpy(types, sht3x_sensors[idx].types, sizeof(types)); if (sht3x_count > 1) { snprintf_P(types, sizeof(types), PSTR("%s%c%02X"), types, IndexSeparator(), sht3x_sensors[idx].address); // "SHT3X-0xXX" @@ -162,7 +172,7 @@ void Sht3xShow(bool json) { } #endif } - TempHumDewShow(json, ((0 == TasmotaGlobal.tele_period) && (0 == idx)), types, t, h); + TempHumDewShow(json, ((0 == TasmotaGlobal.tele_period) && (0 == idx)), types, sht3x_sensors[idx].temp, sht3x_sensors[idx].humi); } } } @@ -181,6 +191,9 @@ bool Xsns14(uint32_t function) { } else if (sht3x_count) { switch (function) { + case FUNC_EVERY_SECOND: + Sht3xUpdate(); + break; case FUNC_JSON_APPEND: Sht3xShow(1); break; From 58485dec2a423161b34b628366c2921b1803db8d Mon Sep 17 00:00:00 2001 From: gemu Date: Mon, 22 Jul 2024 13:58:50 +0200 Subject: [PATCH 171/252] fix resistive Touch xpt for 2 spi busses (#21814) * fix xpt touch for 2 spi busses * support for 2 utouch spi busses * Update support.ino --- lib/lib_display/UDisplay/uDisplay.cpp | 22 ++++++++++++++-------- tasmota/tasmota_support/support.ino | 24 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index eb6888447..d20f6037c 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -30,6 +30,7 @@ #include "tasmota_options.h" + extern int Cache_WriteBack_Addr(uint32_t addr, uint32_t size); @@ -2020,11 +2021,15 @@ bool uDisplay::utouch_Init(char **name) { attachInterrupt(ut_irq, ut_touch_irq, FALLING); } +extern SPIClass *Init_SPI_Bus(uint32 bus); + if (ut_spi_nr == spi_nr) { + // same as display ut_spi = uspi; } else { - // not yet - ut_spi = nullptr; +#ifdef ESP32 + ut_spi = Init_SPI_Bus(ut_spi_nr); +#endif } return ut_execute(ut_init_code); } @@ -2245,7 +2250,6 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { } else { uint16_t *fb_y = rgb_fb + (int32_t)seta_yp1 * _width; for (uint32_t y = seta_yp1; y < seta_yp2; y++) { - seta_yp1++; uint16_t * fb_xy = fb_y + seta_xp1; // we get the 'not_swapped' test outside of the inner loop if (not_swapped) { @@ -2254,7 +2258,7 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { *fb_xy = color; fb_xy++; lenc--; - if (!lenc) goto update_cache; // failsafe - exist if len (pixel number) is exhausted + if (!lenc) break; // failsafe - exist if len (pixel number) is exhausted } } else { for (uint32_t x = seta_xp1; x < seta_xp2; x++) { @@ -2263,16 +2267,18 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { *fb_xy = color; fb_xy++; lenc--; - if (!lenc) goto update_cache; // failsafe - exist if len (pixel number) is exhausted + if (!lenc) break; // failsafe - exist if len (pixel number) is exhausted } } + uint16_t * flush_ptr = rgb_fb + (int32_t)seta_yp1 * _width + seta_xp1; + esp_cache_msync(flush_ptr, (seta_xp2 - seta_xp1) * 2, 0); fb_y += _width; + seta_yp1++; + if (!lenc) break; } // using esp_cache_msync() to flush the PSRAM cache and ensure that all data is actually written to PSRAM // from https://github.com/espressif/esp-idf/blob/636ff35b52f10e1a804a3760a5bd94e68f4b1b71/components/esp_lcd/rgb/esp_lcd_panel_rgb.c#L159 -update_cache: - uint16_t * flush_ptr = rgb_fb + (int32_t)seta_yp1 * _width; - esp_cache_msync(flush_ptr, len * 2, 0); + } #endif return; diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index e6b85cd5c..4159efb79 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -1784,6 +1784,7 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) { return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins } + bool ValidSpiPinUsed(uint32_t gpio) { // ESP8266: If SPI pin selected chk if it's not one of the three Hardware SPI pins (12..14) bool result = false; @@ -1794,6 +1795,29 @@ bool ValidSpiPinUsed(uint32_t gpio) { return result; } +#ifdef ESP32 +#ifndef FIRMWARE_SAFEBOOT +SPIClass *Init_SPI_Bus(uint32 bus) { + SPIClass *spi; + if (1 == bus) { + if (TasmotaGlobal.spi_enabled) { + spi = &SPI; + spi->begin(Pin(GPIO_SPI_CLK, 0), Pin(GPIO_SPI_MISO, 0), Pin(GPIO_SPI_MOSI, 0), -1); + return spi; + } + } + if (2 == bus) { + if (TasmotaGlobal.spi_enabled2) { + spi = new SPIClass(HSPI); + spi->begin(Pin(GPIO_SPI_CLK, 1), Pin(GPIO_SPI_MISO, 1), Pin(GPIO_SPI_MOSI, 1), -1); + return spi; + } + } + return nullptr; +} +#endif // FIRMWARE_SAFEBOOT +#endif // ESP32 + bool JsonTemplate(char* dataBuf) { // Old: {"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18} From f42e44a69df7a0b63497a95014eac9ca8e56ec6f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:35:20 +0200 Subject: [PATCH 172/252] Support for Sonoff iFan04-H using template (#16402) - Bump version v14.1.0.4 --- CHANGELOG.md | 22 ++++++++++++++----- RELEASENOTES.md | 5 ++++- tasmota/include/tasmota_template.h | 4 ++-- tasmota/include/tasmota_version.h | 2 +- .../xdrv_22_sonoff_ifan.ino | 13 +++++++---- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c6cf0f3e..9ab12db37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,20 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [14.1.0.3] +## [14.1.0.4] +### Added +- Support for Sonoff iFan04-H using template (#16402) + +### Breaking Changed + +### Changed + +### Fixed + +### Removed + + +## [14.1.0.3] 20240722 ### Added - ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695) - Berry `tasmota.rtc("config_time")` (#21698) @@ -20,21 +33,18 @@ All notable changes to this project will be documented in this file. - Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` (#21740) - Support for Wooliis Hall Effect Coulometer or Battery capacity monitor (#21732) -### Breaking Changed - ### Changed - ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695) - ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) - ESP32 platform update from 2024.06.11 to 2024.07.10 (#21745) - ESP32 platform update from 2024.07.10 to 2024.07.11 (#21765) -- Berry simplified `module persist` +- Berry simplified `module persist` (#21812) ### Fixed - Berry `bytes.resize()` for large sizes (#21716) - On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 (#21726) - ESP32 I2S fixes (#21770) - -### Removed +- ESP32 Resistive Touch xpt for 2 spi busses (#21814) ## [14.1.0.2] 20240627 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 19f868fd9..d102f3898 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -119,10 +119,11 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v14.1.0.3 +## Changelog v14.1.0.4 ### Added - Support for QMP6988 temperature and pressure sensor - Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3`` +- Support for Sonoff iFan04-H using template [#16402](https://github.com/arendst/Tasmota/issues/16402) - Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131) - Support for Wooliis Hall Effect Coulometer or Battery capacity monitor [#21732](https://github.com/arendst/Tasmota/issues/21732) - Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740) @@ -165,6 +166,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603) - ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648) - ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131) +- Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812) - Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575) - Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589) - Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633) @@ -176,6 +178,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660) - ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496) - ESP32 I2S fixes [#21770](https://github.com/arendst/Tasmota/issues/21770) +- ESP32 Resistive Touch xpt for 2 spi busses [#21814](https://github.com/arendst/Tasmota/issues/21814) - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) - Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index d2ca22f66..dd3187040 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -232,7 +232,7 @@ enum ProgramSelectablePins { GPIO_USER, // User configurable needs to be 2047 GPIO_MAX }; -#define MAX_OPTIONS_A 7 // Increase if more bits are used from GpioOptionABits +#define MAX_OPTIONS_A 8 // Increase if more bits are used from GpioOptionABits typedef union { // Restricted by MISRA-C Rule 18.4 but so useful... uint32_t data; // Allow bit manipulation using SetOption @@ -244,7 +244,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t rotary_mi_desk : 1; // bit 4 (v9.5.0.5) - Option_A5 - (Rotary) Enable Mi Desk emulation uint32_t linkind_support : 1; // bit 5 (v10.1.0.4) - Option_A6 - (Light) LinkInd support uint32_t shelly_pro : 1; // bit 6 (v12.2.0.1) - Option_A7 - (Device) Shelly Pro - uint32_t spare07 : 1; // bit 7 + uint32_t ifan04_h : 1; // bit 7 (v14.1.0.4) - Option_A8 - (Device) Sonoff ifan04-H uint32_t spare08 : 1; // bit 8 uint32_t spare09 : 1; // bit 9 uint32_t spare10 : 1; // bit 10 diff --git a/tasmota/include/tasmota_version.h b/tasmota/include/tasmota_version.h index ecf9d54dd..505cc8b74 100644 --- a/tasmota/include/tasmota_version.h +++ b/tasmota/include/tasmota_version.h @@ -22,6 +22,6 @@ #define TASMOTA_SHA_SHORT // Filled by Github sed -const uint32_t TASMOTA_VERSION = 0x0E010003; // 14.1.0.3 +const uint32_t TASMOTA_VERSION = 0x0E010004; // 14.1.0.4 #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino b/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino index 13d8cfe24..0644eeab0 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino @@ -1,5 +1,5 @@ /* - xdrv_22_sonoff_ifan.ino - sonoff iFan02 and iFan03 support for Tasmota + xdrv_22_sonoff_ifan.ino - sonoff iFan02, iFan03 and iFan04 support for Tasmota Copyright (C) 2021 Theo Arends @@ -19,7 +19,10 @@ #ifdef USE_SONOFF_IFAN /*********************************************************************************************\ - Sonoff iFan02 and iFan03 + * Sonoff iFan02, iFan03 and iFan04 + * + * For iFan04 activate below template + * {"NAME":"Sonoff iFan04-H","GPIO":[32,3200,5735,3232,0,0,256,512,226,320,225,227,0,0],"FLAG":0,"BASE":71} \*********************************************************************************************/ #define XDRV_22 22 @@ -28,7 +31,9 @@ const uint8_t MAX_FAN_SPEED = 4; // Max number of iFan02 fan speeds ( const uint8_t kIFan02Speed[MAX_FAN_SPEED] = { 0x00, 0x01, 0x03, 0x05 }; const uint8_t kIFan03Speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x03, 0x04, 0x05, 0x06 }; +const uint8_t kIFan04Speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x02, 0x04, 0x05, 0x06 }; const uint8_t kIFan03Sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 2, 2, 2}, {0, 1, 2, 4}, {1, 1, 2, 5}, {4, 4, 5, 3}}; +const uint8_t kIFan04Sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 4, 5, 3}, {0, 1, 2, 3}, {0, 1, 2, 3}, {0, 4, 5, 3}}; const char kSonoffIfanCommands[] PROGMEM = "|" // No prefix D_CMND_FANSPEED; @@ -84,7 +89,7 @@ void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence) uint8_t fans = kIFan02Speed[fanspeed]; if (SONOFF_IFAN03 == TasmotaGlobal.module_type) { if (sequence) { - fanspeed = kIFan03Sequence[fanspeed_now][ifan_fanspeed_goal]; + fanspeed = (TasmotaGlobal.gpio_optiona.ifan04_h) ? kIFan04Sequence[fanspeed_now][ifan_fanspeed_goal] : kIFan03Sequence[fanspeed_now][ifan_fanspeed_goal]; if (fanspeed != ifan_fanspeed_goal) { if (0 == fanspeed_now) { ifan_fanspeed_timer = 20; // Need extra time to power up fan @@ -93,7 +98,7 @@ void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence) } } } - fans = kIFan03Speed[fanspeed]; + fans = (TasmotaGlobal.gpio_optiona.ifan04_h) ? kIFan04Speed[fanspeed] : kIFan03Speed[fanspeed]; } for (uint32_t i = 2; i < 5; i++) { uint8_t state = (fans &1) + POWER_OFF_NO_STATE; // Add no publishPowerState From e085cfd3ab588fd6de4a127090644b52bb440307 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 22 Jul 2024 20:38:14 +0200 Subject: [PATCH 173/252] Berry fix `light.get` for separate RGB/CT (#21818) --- CHANGELOG.md | 1 + tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ab12db37..a2fbf3f1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. ### Changed ### Fixed +- Berry fix `light.get` for separate RGB/CT ### Removed diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino index b268dba3d..11bec6baa 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino @@ -130,7 +130,7 @@ extern "C" { int32_t top = be_top(vm); // Get the number of arguments if (top == 0 || (top == 1 && be_isint(vm, 1))) { int32_t light_num = 0; - if (top > 1) { + if (top > 0) { light_num = be_toint(vm, 1); } push_getlight(vm, light_num); From c84faa79fb4de35ff758dfe2a908a3fb890252fa Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 23 Jul 2024 12:27:47 +0200 Subject: [PATCH 174/252] Matter improve internal `inspect`for superclasses (#21824) --- CHANGELOG.md | 1 + .../src/embedded/Matter_0_Inspect.be | 12 +- .../solidify/solidified_Matter_0_Inspect.h | 206 ++++++++++-------- 3 files changed, 121 insertions(+), 98 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2fbf3f1d..2290464ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [14.1.0.4] ### Added - Support for Sonoff iFan04-H using template (#16402) +- Matter improve internal `inspect`for superclasses ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be index acca8d64c..828de20ab 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be @@ -55,9 +55,15 @@ def inspect(p) import introspect var keys = [] - for k : introspect.members(p) - var v = introspect.get(p, k) - if type(v) != 'function' keys.push(k) end + var o = p + while (o != nil) + for k : introspect.members(p) + var v = introspect.get(p, k) + if (type(v) != 'function') && (keys.find(k) == nil) + keys.push(k) + end + end + o = super(o) # move to superclass end keys = matter.sort(keys) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h index f21bb505c..9fd53e51b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h @@ -110,7 +110,7 @@ be_local_closure(module_matter_jitter, /* name */ ********************************************************************/ be_local_closure(module_matter_inspect, /* name */ be_nested_proto( - 14, /* nstack */ + 15, /* nstack */ 1, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -118,110 +118,126 @@ be_local_closure(module_matter_inspect, /* name */ 0, /* has sup protos */ NULL, 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ + ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), /* K1 */ be_nested_str_weak(members), /* K2 */ be_nested_str_weak(get), /* K3 */ be_nested_str_weak(function), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(sort), - /* K8 */ be_nested_str_weak(_X27_X25s_X27_X3A_X20_X25s), - /* K9 */ be_nested_str_weak(_X7B), - /* K10 */ be_nested_str_weak(concat), - /* K11 */ be_nested_str_weak(_X2C_X20), - /* K12 */ be_nested_str_weak(_X7D), - /* K13 */ be_nested_str_weak(Exception_X3A), - /* K14 */ be_nested_str_weak(_X7C), + /* K4 */ be_nested_str_weak(find), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_nested_str_weak(stop_iteration), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(sort), + /* K9 */ be_nested_str_weak(_X27_X25s_X27_X3A_X20_X25s), + /* K10 */ be_nested_str_weak(_X7B), + /* K11 */ be_nested_str_weak(concat), + /* K12 */ be_nested_str_weak(_X2C_X20), + /* K13 */ be_nested_str_weak(_X7D), + /* K14 */ be_nested_str_weak(Exception_X3A), + /* K15 */ be_nested_str_weak(_X7C), }), be_str_weak(inspect), &be_const_str_solidified, - ( &(const binstruction[84]) { /* code */ - 0xA8020043, // 0000 EXBLK 0 #0045 + ( &(const binstruction[99]) { /* code */ + 0xA8020052, // 0000 EXBLK 0 #0054 0xA4060000, // 0001 IMPORT R1 K0 0x60080012, // 0002 GETGBL R2 G18 0x7C080000, // 0003 CALL R2 0 - 0x600C0010, // 0004 GETGBL R3 G16 - 0x8C100301, // 0005 GETMET R4 R1 K1 - 0x5C180000, // 0006 MOVE R6 R0 - 0x7C100400, // 0007 CALL R4 2 - 0x7C0C0200, // 0008 CALL R3 1 - 0xA802000E, // 0009 EXBLK 0 #0019 - 0x5C100600, // 000A MOVE R4 R3 - 0x7C100000, // 000B CALL R4 0 - 0x8C140302, // 000C GETMET R5 R1 K2 - 0x5C1C0000, // 000D MOVE R7 R0 - 0x5C200800, // 000E MOVE R8 R4 - 0x7C140600, // 000F CALL R5 3 - 0x60180004, // 0010 GETGBL R6 G4 - 0x5C1C0A00, // 0011 MOVE R7 R5 - 0x7C180200, // 0012 CALL R6 1 - 0x20180D03, // 0013 NE R6 R6 K3 - 0x781A0002, // 0014 JMPF R6 #0018 - 0x8C180504, // 0015 GETMET R6 R2 K4 - 0x5C200800, // 0016 MOVE R8 R4 - 0x7C180400, // 0017 CALL R6 2 - 0x7001FFF0, // 0018 JMP #000A - 0x580C0005, // 0019 LDCONST R3 K5 - 0xAC0C0200, // 001A CATCH R3 1 0 - 0xB0080000, // 001B RAISE 2 R0 R0 - 0xB80E0C00, // 001C GETNGBL R3 K6 - 0x8C0C0707, // 001D GETMET R3 R3 K7 - 0x5C140400, // 001E MOVE R5 R2 - 0x7C0C0400, // 001F CALL R3 2 - 0x5C080600, // 0020 MOVE R2 R3 - 0x600C0012, // 0021 GETGBL R3 G18 - 0x7C0C0000, // 0022 CALL R3 0 - 0x60100010, // 0023 GETGBL R4 G16 - 0x5C140400, // 0024 MOVE R5 R2 - 0x7C100200, // 0025 CALL R4 1 - 0xA8020011, // 0026 EXBLK 0 #0039 - 0x5C140800, // 0027 MOVE R5 R4 - 0x7C140000, // 0028 CALL R5 0 - 0x8C180302, // 0029 GETMET R6 R1 K2 - 0x5C200000, // 002A MOVE R8 R0 - 0x5C240A00, // 002B MOVE R9 R5 - 0x7C180600, // 002C CALL R6 3 - 0x8C1C0704, // 002D GETMET R7 R3 K4 - 0x60240018, // 002E GETGBL R9 G24 - 0x58280008, // 002F LDCONST R10 K8 - 0x602C0008, // 0030 GETGBL R11 G8 - 0x5C300A00, // 0031 MOVE R12 R5 - 0x7C2C0200, // 0032 CALL R11 1 - 0x60300008, // 0033 GETGBL R12 G8 - 0x5C340C00, // 0034 MOVE R13 R6 - 0x7C300200, // 0035 CALL R12 1 - 0x7C240600, // 0036 CALL R9 3 - 0x7C1C0400, // 0037 CALL R7 2 - 0x7001FFED, // 0038 JMP #0027 - 0x58100005, // 0039 LDCONST R4 K5 - 0xAC100200, // 003A CATCH R4 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x8C10070A, // 003C GETMET R4 R3 K10 - 0x5818000B, // 003D LDCONST R6 K11 - 0x7C100400, // 003E CALL R4 2 - 0x00121204, // 003F ADD R4 K9 R4 - 0x0010090C, // 0040 ADD R4 R4 K12 - 0xA8040001, // 0041 EXBLK 1 1 - 0x80040800, // 0042 RET 1 R4 - 0xA8040001, // 0043 EXBLK 1 1 - 0x7002000D, // 0044 JMP #0053 - 0xAC040002, // 0045 CATCH R1 0 2 - 0x7002000A, // 0046 JMP #0052 - 0x600C0008, // 0047 GETGBL R3 G8 - 0x5C100200, // 0048 MOVE R4 R1 - 0x7C0C0200, // 0049 CALL R3 1 - 0x000E1A03, // 004A ADD R3 K13 R3 - 0x000C070E, // 004B ADD R3 R3 K14 - 0x60100008, // 004C GETGBL R4 G8 - 0x5C140400, // 004D MOVE R5 R2 - 0x7C100200, // 004E CALL R4 1 - 0x000C0604, // 004F ADD R3 R3 R4 - 0x80040600, // 0050 RET 1 R3 - 0x70020000, // 0051 JMP #0053 - 0xB0080000, // 0052 RAISE 2 R0 R0 - 0x80000000, // 0053 RET 0 + 0x5C0C0000, // 0004 MOVE R3 R0 + 0x4C100000, // 0005 LDNIL R4 + 0x20100604, // 0006 NE R4 R3 R4 + 0x78120022, // 0007 JMPF R4 #002B + 0x60100010, // 0008 GETGBL R4 G16 + 0x8C140301, // 0009 GETMET R5 R1 K1 + 0x5C1C0000, // 000A MOVE R7 R0 + 0x7C140400, // 000B CALL R5 2 + 0x7C100200, // 000C CALL R4 1 + 0xA8020014, // 000D EXBLK 0 #0023 + 0x5C140800, // 000E MOVE R5 R4 + 0x7C140000, // 000F CALL R5 0 + 0x8C180302, // 0010 GETMET R6 R1 K2 + 0x5C200000, // 0011 MOVE R8 R0 + 0x5C240A00, // 0012 MOVE R9 R5 + 0x7C180600, // 0013 CALL R6 3 + 0x601C0004, // 0014 GETGBL R7 G4 + 0x5C200C00, // 0015 MOVE R8 R6 + 0x7C1C0200, // 0016 CALL R7 1 + 0x201C0F03, // 0017 NE R7 R7 K3 + 0x781E0008, // 0018 JMPF R7 #0022 + 0x8C1C0504, // 0019 GETMET R7 R2 K4 + 0x5C240A00, // 001A MOVE R9 R5 + 0x7C1C0400, // 001B CALL R7 2 + 0x4C200000, // 001C LDNIL R8 + 0x1C1C0E08, // 001D EQ R7 R7 R8 + 0x781E0002, // 001E JMPF R7 #0022 + 0x8C1C0505, // 001F GETMET R7 R2 K5 + 0x5C240A00, // 0020 MOVE R9 R5 + 0x7C1C0400, // 0021 CALL R7 2 + 0x7001FFEA, // 0022 JMP #000E + 0x58100006, // 0023 LDCONST R4 K6 + 0xAC100200, // 0024 CATCH R4 1 0 + 0xB0080000, // 0025 RAISE 2 R0 R0 + 0x60100003, // 0026 GETGBL R4 G3 + 0x5C140600, // 0027 MOVE R5 R3 + 0x7C100200, // 0028 CALL R4 1 + 0x5C0C0800, // 0029 MOVE R3 R4 + 0x7001FFD9, // 002A JMP #0005 + 0xB8120E00, // 002B GETNGBL R4 K7 + 0x8C100908, // 002C GETMET R4 R4 K8 + 0x5C180400, // 002D MOVE R6 R2 + 0x7C100400, // 002E CALL R4 2 + 0x5C080800, // 002F MOVE R2 R4 + 0x60100012, // 0030 GETGBL R4 G18 + 0x7C100000, // 0031 CALL R4 0 + 0x60140010, // 0032 GETGBL R5 G16 + 0x5C180400, // 0033 MOVE R6 R2 + 0x7C140200, // 0034 CALL R5 1 + 0xA8020011, // 0035 EXBLK 0 #0048 + 0x5C180A00, // 0036 MOVE R6 R5 + 0x7C180000, // 0037 CALL R6 0 + 0x8C1C0302, // 0038 GETMET R7 R1 K2 + 0x5C240000, // 0039 MOVE R9 R0 + 0x5C280C00, // 003A MOVE R10 R6 + 0x7C1C0600, // 003B CALL R7 3 + 0x8C200905, // 003C GETMET R8 R4 K5 + 0x60280018, // 003D GETGBL R10 G24 + 0x582C0009, // 003E LDCONST R11 K9 + 0x60300008, // 003F GETGBL R12 G8 + 0x5C340C00, // 0040 MOVE R13 R6 + 0x7C300200, // 0041 CALL R12 1 + 0x60340008, // 0042 GETGBL R13 G8 + 0x5C380E00, // 0043 MOVE R14 R7 + 0x7C340200, // 0044 CALL R13 1 + 0x7C280600, // 0045 CALL R10 3 + 0x7C200400, // 0046 CALL R8 2 + 0x7001FFED, // 0047 JMP #0036 + 0x58140006, // 0048 LDCONST R5 K6 + 0xAC140200, // 0049 CATCH R5 1 0 + 0xB0080000, // 004A RAISE 2 R0 R0 + 0x8C14090B, // 004B GETMET R5 R4 K11 + 0x581C000C, // 004C LDCONST R7 K12 + 0x7C140400, // 004D CALL R5 2 + 0x00161405, // 004E ADD R5 K10 R5 + 0x00140B0D, // 004F ADD R5 R5 K13 + 0xA8040001, // 0050 EXBLK 1 1 + 0x80040A00, // 0051 RET 1 R5 + 0xA8040001, // 0052 EXBLK 1 1 + 0x7002000D, // 0053 JMP #0062 + 0xAC040002, // 0054 CATCH R1 0 2 + 0x7002000A, // 0055 JMP #0061 + 0x600C0008, // 0056 GETGBL R3 G8 + 0x5C100200, // 0057 MOVE R4 R1 + 0x7C0C0200, // 0058 CALL R3 1 + 0x000E1C03, // 0059 ADD R3 K14 R3 + 0x000C070F, // 005A ADD R3 R3 K15 + 0x60100008, // 005B GETGBL R4 G8 + 0x5C140400, // 005C MOVE R5 R2 + 0x7C100200, // 005D CALL R4 1 + 0x000C0604, // 005E ADD R3 R3 R4 + 0x80040600, // 005F RET 1 R3 + 0x70020000, // 0060 JMP #0062 + 0xB0080000, // 0061 RAISE 2 R0 R0 + 0x80000000, // 0062 RET 0 }) ) ); From 401d7b9b41a935e0de7fca70e4249d270476cd79 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:28:36 +0200 Subject: [PATCH 175/252] Fix StrCaseStr_P() --- tasmota/tasmota_support/support.ino | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index 4159efb79..ae2308c49 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -590,12 +590,17 @@ char* SetStr(const char* str) { return new_str; } -bool StrCaseStr_P(const char* source, const char* search) { +char* StrCaseStr_P(const char* source, const char* search) { char case_source[strlen_P(source) +1]; UpperCase_P(case_source, source); char case_search[strlen_P(search) +1]; UpperCase_P(case_search, search); - return (strstr(case_source, case_search) != nullptr); + char *cp = strstr(case_source, case_search); + if (cp) { + uint32_t offset = cp - case_source; + cp = (char*)source + offset; + } + return cp; } bool IsNumeric(const char* value) { @@ -1534,16 +1539,7 @@ bool ValidModule(uint32_t index) } bool ValidTemplate(const char *search) { -/* - char template_name[strlen(SettingsText(SET_TEMPLATE_NAME)) +1]; - char search_name[strlen(search) +1]; - - LowerCase(template_name, SettingsText(SET_TEMPLATE_NAME)); - LowerCase(search_name, search); - - return (strstr(template_name, search_name) != nullptr); -*/ - return StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search); + return (StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search) != nullptr); } String AnyModuleName(uint32_t index) From 895fbb2e8a3125ed384492f00acdaee447a4eddb Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 23 Jul 2024 15:35:45 +0200 Subject: [PATCH 176/252] Add optional USE_SONOFF_IFAN_CONFIG --- .../xdrv_22_sonoff_ifan.ino | 150 +++++++++++++----- 1 file changed, 106 insertions(+), 44 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino b/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino index 0644eeab0..ef640165c 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino @@ -21,18 +21,27 @@ /*********************************************************************************************\ * Sonoff iFan02, iFan03 and iFan04 * - * For iFan04 activate below template + * For iFan04-H activate below template: * {"NAME":"Sonoff iFan04-H","GPIO":[32,3200,5735,3232,0,0,256,512,226,320,225,227,0,0],"FLAG":0,"BASE":71} + * + * #ifdef USE_SONOFF_IFAN_CONFIG + * No template change needed. For iFan04-H select + * - a rule like: rule3 on file#ifan.dat do {"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]} endon + * - a script like: -y{"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]}# + * - a file called ifan.dat with contents: {"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]} + * + * For reference only: + * rule3 on file#ifan.dat do {"Name":"iFan03","Speed":[0,1,3,4,5,6],"Sequence":[[0,2,2,2],[0,1,2,4],[1,1,2,5],[4,4,5,3]]} endon \*********************************************************************************************/ #define XDRV_22 22 +//#define USE_SONOFF_IFAN_CONFIG // Enable ifan user config + const uint8_t MAX_FAN_SPEED = 4; // Max number of iFan02 fan speeds (0 .. 3) const uint8_t kIFan02Speed[MAX_FAN_SPEED] = { 0x00, 0x01, 0x03, 0x05 }; -const uint8_t kIFan03Speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x03, 0x04, 0x05, 0x06 }; const uint8_t kIFan04Speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x02, 0x04, 0x05, 0x06 }; -const uint8_t kIFan03Sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 2, 2, 2}, {0, 1, 2, 4}, {1, 1, 2, 5}, {4, 4, 5, 3}}; const uint8_t kIFan04Sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 4, 5, 3}, {0, 1, 2, 3}, {0, 1, 2, 3}, {0, 4, 5, 3}}; const char kSonoffIfanCommands[] PROGMEM = "|" // No prefix @@ -41,27 +50,28 @@ const char kSonoffIfanCommands[] PROGMEM = "|" // No prefix void (* const SonoffIfanCommand[])(void) PROGMEM = { &CmndFanspeed }; -uint8_t ifan_fanspeed_timer = 0; -uint8_t ifan_fanspeed_goal = 0; -bool ifan_receive_flag = false; -bool ifan_restart_flag = true; +struct IFAN { + uint8_t speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x03, 0x04, 0x05, 0x06 }; + uint8_t sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 2, 2, 2}, {0, 1, 2, 4}, {1, 1, 2, 5}, {4, 4, 5, 3}}; + uint8_t fanspeed_timer = 0; + uint8_t fanspeed_goal = 0; + bool receive_flag = false; + bool restart_flag = true; +} Ifan; /*********************************************************************************************/ -bool IsModuleIfan(void) -{ +bool IsModuleIfan(void) { return ((SONOFF_IFAN02 == TasmotaGlobal.module_type) || (SONOFF_IFAN03 == TasmotaGlobal.module_type)); } -uint8_t MaxFanspeed(void) -{ +uint8_t MaxFanspeed(void) { return MAX_FAN_SPEED; } -uint8_t GetFanspeed(void) -{ - if (ifan_fanspeed_timer) { - return ifan_fanspeed_goal; // Do not show sequence fanspeed +uint8_t GetFanspeed(void) { + if (Ifan.fanspeed_timer) { + return Ifan.fanspeed_goal; // Do not show sequence fanspeed } else { /* Fanspeed is controlled by relay 2, 3 and 4 as in Sonoff 4CH. 000x = 0 @@ -77,28 +87,26 @@ uint8_t GetFanspeed(void) /*********************************************************************************************/ -void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence) -{ - ifan_fanspeed_timer = 0; // Stop any sequence - ifan_fanspeed_goal = fanspeed; +void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence) { + Ifan.fanspeed_timer = 0; // Stop any sequence + Ifan.fanspeed_goal = fanspeed; uint8_t fanspeed_now = GetFanspeed(); - if (fanspeed == fanspeed_now) { return; } uint8_t fans = kIFan02Speed[fanspeed]; if (SONOFF_IFAN03 == TasmotaGlobal.module_type) { if (sequence) { - fanspeed = (TasmotaGlobal.gpio_optiona.ifan04_h) ? kIFan04Sequence[fanspeed_now][ifan_fanspeed_goal] : kIFan03Sequence[fanspeed_now][ifan_fanspeed_goal]; - if (fanspeed != ifan_fanspeed_goal) { + fanspeed = Ifan.sequence[fanspeed_now][Ifan.fanspeed_goal]; + if (fanspeed != Ifan.fanspeed_goal) { if (0 == fanspeed_now) { - ifan_fanspeed_timer = 20; // Need extra time to power up fan + Ifan.fanspeed_timer = 20; // Need extra time to power up fan } else { - ifan_fanspeed_timer = 2; + Ifan.fanspeed_timer = 2; } } } - fans = (TasmotaGlobal.gpio_optiona.ifan04_h) ? kIFan04Speed[fanspeed] : kIFan03Speed[fanspeed]; + fans = Ifan.speed[fanspeed]; } for (uint32_t i = 2; i < 5; i++) { uint8_t state = (fans &1) + POWER_OFF_NO_STATE; // Add no publishPowerState @@ -113,8 +121,7 @@ void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence) /*********************************************************************************************/ -void SonoffIfanReceived(void) -{ +void SonoffIfanReceived(void) { char svalue[32]; uint8_t mode = TasmotaGlobal.serial_in_buffer[3]; @@ -159,15 +166,14 @@ void SonoffIfanReceived(void) } } -bool SonoffIfanSerialInput(void) -{ +bool SonoffIfanSerialInput(void) { if (SONOFF_IFAN03 != TasmotaGlobal.module_type) { return false; } if (0xAA == TasmotaGlobal.serial_in_byte) { // 0xAA - Start of text TasmotaGlobal.serial_in_byte_counter = 0; - ifan_receive_flag = true; + Ifan.receive_flag = true; } - if (ifan_receive_flag) { + if (Ifan.receive_flag) { TasmotaGlobal.serial_in_buffer[TasmotaGlobal.serial_in_byte_counter++] = TasmotaGlobal.serial_in_byte; if (TasmotaGlobal.serial_in_byte_counter == 8) { // AA 55 01 01 00 01 01 04 - Wifi long press - start wifi setup @@ -186,7 +192,7 @@ bool SonoffIfanSerialInput(void) } if (crc == TasmotaGlobal.serial_in_buffer[7]) { SonoffIfanReceived(); - ifan_receive_flag = false; + Ifan.receive_flag = false; return true; } } @@ -199,8 +205,7 @@ bool SonoffIfanSerialInput(void) * Commands \*********************************************************************************************/ -void CmndFanspeed(void) -{ +void CmndFanspeed(void) { if (XdrvMailbox.data_len > 0) { if ('-' == XdrvMailbox.data[0]) { XdrvMailbox.payload = (int16_t)GetFanspeed() -1; @@ -219,27 +224,84 @@ void CmndFanspeed(void) /*********************************************************************************************/ -bool SonoffIfanInit(void) -{ +void SonoffIFanParameters(void) { + if (TasmotaGlobal.gpio_optiona.ifan04_h) { // GPIO Option_A8 + memcpy(Ifan.speed, kIFan04Speed, sizeof(Ifan.speed)); + memcpy(Ifan.sequence, kIFan04Sequence, sizeof(Ifan.sequence)); + } + +#ifdef USE_SONOFF_IFAN_CONFIG + + String ifantmplt = ""; +#ifdef USE_UFILESYS + ifantmplt = TfsLoadString("/ifan.dat"); +#endif // USE_UFILESYS +#ifdef USE_RULES + if (!ifantmplt.length()) { + ifantmplt = RuleLoadFile("IFAN.DAT"); + } +#endif // USE_RULES +#ifdef USE_SCRIPT + if (!ifantmplt.length()) { + ifantmplt = ScriptLoadSection(">y"); + } +#endif // USE_SCRIPT + if (ifantmplt.length() > 75) { + JsonParser parser((char*)ifantmplt.c_str()); + JsonParserObject root = parser.getRootObject(); + if (root) { + // rule3 on file#ifan.dat do {"Name":"iFan03","Speed":[0,1,3,4,5,6],"Sequence":[[0,2,2,2],[0,1,2,4],[1,1,2,5],[4,4,5,3]]} endon + // rule3 on file#ifan.dat do {"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]} endon + JsonParserArray arr_speed = root[PSTR("SPEED")]; + if (arr_speed) { + for (uint32_t i = 0; i < sizeof(Ifan.speed); i++) { + JsonParserToken val = arr_speed[i]; + if (!val) { break; } + Ifan.speed[i] = val.getUInt() & 0x07; + } + } + JsonParserArray arr_sequence = root[PSTR("SEQUENCE")]; + if (arr_sequence) { + for (uint32_t j = 0; j < MAX_FAN_SPEED; j++) { + JsonParserArray arr_sequence2 = arr_sequence[j]; + if (!arr_sequence2) { break; } + for (uint32_t i = 0; i < MAX_FAN_SPEED; i++) { + JsonParserToken val = arr_sequence2[i]; + if (!val) { break; } + Ifan.sequence[j][i] = val.getUInt() & 0x07; + } + } + } + JsonParserToken val = root[PSTR(D_JSON_NAME)]; + AddLog(LOG_LEVEL_DEBUG, PSTR("IFN: Loaded%s%s"), (val)?" ":"", (val)?val.getStr():""); + } + } + +#endif // USE_SONOFF_IFAN_CONFIG + +// AddLog(LOG_LEVEL_DEBUG, PSTR("IFN: Speed %6_H, Sequence %16_H"), Ifan.speed, Ifan.sequence); +} + +bool SonoffIfanInit(void) { if (SONOFF_IFAN03 == TasmotaGlobal.module_type) { SetSerial(9600, TS_SERIAL_8N1); + SonoffIFanParameters(); } return false; // Continue init chain } -void SonoffIfanUpdate(void) -{ +void SonoffIfanUpdate(void) { if (SONOFF_IFAN03 == TasmotaGlobal.module_type) { - if (ifan_fanspeed_timer) { - ifan_fanspeed_timer--; - if (!ifan_fanspeed_timer) { - SonoffIFanSetFanspeed(ifan_fanspeed_goal, false); + if (Ifan.fanspeed_timer) { + Ifan.fanspeed_timer--; + if (!Ifan.fanspeed_timer) { + SonoffIFanSetFanspeed(Ifan.fanspeed_goal, false); } } } - if (ifan_restart_flag && (4 == TasmotaGlobal.uptime) && (SONOFF_IFAN02 == TasmotaGlobal.module_type)) { // Microcontroller needs 3 seconds before accepting commands - ifan_restart_flag = false; + if (Ifan.restart_flag && (4 == TasmotaGlobal.uptime) && (SONOFF_IFAN02 == TasmotaGlobal.module_type)) { // Microcontroller needs 3 seconds before accepting commands + Ifan.restart_flag = false; SetDevicePower(1, SRC_RETRY); // Sync with default power on state microcontroller being Light ON and Fan OFF SetDevicePower(TasmotaGlobal.power, SRC_RETRY); // Set required power on state } From 8a7642f12276651fbeb3fbdeba0b80dfb9fc235b Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 24 Jul 2024 08:51:23 +0200 Subject: [PATCH 177/252] Matter fix inspect (#21833) --- lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be | 4 ++-- .../berry_matter/src/solidify/solidified_Matter_0_Inspect.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be index 828de20ab..a916691cc 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be @@ -57,8 +57,8 @@ def inspect(p) var keys = [] var o = p while (o != nil) - for k : introspect.members(p) - var v = introspect.get(p, k) + for k : introspect.members(o) + var v = introspect.get(o, k) if (type(v) != 'function') && (keys.find(k) == nil) keys.push(k) end diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h index 9fd53e51b..d9f56b338 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h @@ -149,14 +149,14 @@ be_local_closure(module_matter_inspect, /* name */ 0x78120022, // 0007 JMPF R4 #002B 0x60100010, // 0008 GETGBL R4 G16 0x8C140301, // 0009 GETMET R5 R1 K1 - 0x5C1C0000, // 000A MOVE R7 R0 + 0x5C1C0600, // 000A MOVE R7 R3 0x7C140400, // 000B CALL R5 2 0x7C100200, // 000C CALL R4 1 0xA8020014, // 000D EXBLK 0 #0023 0x5C140800, // 000E MOVE R5 R4 0x7C140000, // 000F CALL R5 0 0x8C180302, // 0010 GETMET R6 R1 K2 - 0x5C200000, // 0011 MOVE R8 R0 + 0x5C200600, // 0011 MOVE R8 R3 0x5C240A00, // 0012 MOVE R9 R5 0x7C180600, // 0013 CALL R6 3 0x601C0004, // 0014 GETGBL R7 G4 From b62b2d0d9352028270de4535a4a9b914520b295c Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 24 Jul 2024 10:20:25 +0200 Subject: [PATCH 178/252] Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) --- CHANGELOG.md | 1 + .../src/embedded/Matter_Plugin_2_Light0.be | 6 +- .../src/embedded/Matter_Plugin_3_Light1.be | 27 +- .../src/embedded/Matter_Plugin_4_Light2.be | 14 +- .../src/embedded/Matter_Plugin_4_Light3.be | 13 +- .../embedded/Matter_Plugin_8_Bridge_Light1.be | 1 + .../embedded/Matter_Plugin_8_Bridge_Light2.be | 1 + .../embedded/Matter_Plugin_8_Bridge_Light3.be | 1 + .../src/embedded/Matter_zz_Device.be | 42 +- .../solidified_Matter_Plugin_2_Light0.h | 828 ++++----- .../solidified_Matter_Plugin_3_Light1.h | 940 +++++----- .../solidified_Matter_Plugin_4_Light2.h | 840 ++++----- .../solidified_Matter_Plugin_4_Light3.h | 1520 +++++++++-------- ...solidified_Matter_Plugin_8_Bridge_Light1.h | 9 +- ...solidified_Matter_Plugin_8_Bridge_Light2.h | 9 +- ...solidified_Matter_Plugin_8_Bridge_Light3.h | 9 +- .../solidify/solidified_Matter_zz_Device.h | 476 +++--- .../xdrv_52_3_berry_light.ino | 110 +- 18 files changed, 2536 insertions(+), 2311 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2290464ff..4f07e8b70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Support for Sonoff iFan04-H using template (#16402) - Matter improve internal `inspect`for superclasses +- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) ### Breaking Changed diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be index 348bbc090..48747460f 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be @@ -47,13 +47,15 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device # var tick # tick value when it was last updated # var node_label # name of the endpoint, used only in bridge mode, "" if none var tasmota_relay_index # Relay number in Tasmota (1 based), may be nil for Lights 1/2/3 internal + var light_index # index number when using `light.get()` and `light.set()` var shadow_onoff # (bool) status of the light power on/off ############################################################# # Constructor def init(device, endpoint, config) - super(self).init(device, endpoint, config) self.shadow_onoff = false + self.light_index = 0 # default is 0 for light object + super(self).init(device, endpoint, config) end ############################################################# @@ -105,7 +107,7 @@ class Matter_Plugin_Light0 : Matter_Plugin_Device self.update_shadow() else import light - light.set({'power':pow}) + light.set({'power':pow}, self.light_index) self.update_shadow() end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be index c88ec645f..501c11c60 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be @@ -25,7 +25,9 @@ import matter class Matter_Plugin_Light1 : Matter_Plugin_Light0 static var TYPE = "light1" # name of the plug-in in json - static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in + static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in + static var ARG = "light" # additional argument name (or empty if none) + static var ARG_HINT = "(opt) Light number" # static var UPDATE_TIME = 250 # update every 250ms static var CLUSTERS = matter.consolidate_clusters(_class, { # 0x001D: inherited # Descriptor Cluster 9.5 p.453 @@ -46,13 +48,14 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0 # var node_label # name of the endpoint, used only in bridge mode, "" if none # var tasmota_relay_index # Relay number in Tasmota (1 based), nil for internal light # var shadow_onoff # (bool) status of the light power on/off + # var light_index # index number when using `light.get()` and `light.set()` var shadow_bri # (int 0..254) brightness before Gamma correction - as per Matter 255 is not allowed ############################################################# # Constructor def init(device, endpoint, arguments) - super(self).init(device, endpoint, arguments) self.shadow_bri = 0 + super(self).init(device, endpoint, arguments) end ############################################################# @@ -64,6 +67,20 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0 if self.BRIDGE self.tasmota_relay_index = int(config.find(self.ARG #-'relay'-#, nil)) if (self.tasmota_relay_index != nil && self.tasmota_relay_index <= 0) self.tasmota_relay_index = 1 end + else + if (self.tasmota_relay_index == nil) && (self.TYPE == "light1") # only if `light1` and not for subclasses + var light_index_arg = config.find(self.ARG #-'light'-#) + if (light_index_arg == nil) + if (tasmota.get_option(68) == 0) # if default mode, and `SO68 0`, check if we have split RGB/W + import light + if (light.get(1) != nil) + self.light_index = 1 # default value is `0` from superclass + end + end + else + self.light_index = int(light_index_arg) - 1 # internal is 0-based + end + end end end @@ -73,7 +90,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0 def update_shadow() if !self.VIRTUAL && !self.BRIDGE import light - var light_status = light.get() + var light_status = light.get(self.light_index) if light_status != nil var pow = light_status.find('power', nil) if pow != self.shadow_onoff @@ -121,9 +138,9 @@ class Matter_Plugin_Light1 : Matter_Plugin_Light0 import light var bri_255 = tasmota.scale_uint(bri_254, 0, 254, 0, 255) if pow == nil - light.set({'bri': bri_255}) + light.set({'bri': bri_255}, self.light_index) else - light.set({'bri': bri_255, 'power': pow}) + light.set({'bri': bri_255, 'power': pow}, self.light_index) end self.update_shadow() end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be index 2458484c4..189b2d7dc 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be @@ -25,7 +25,9 @@ import matter class Matter_Plugin_Light2 : Matter_Plugin_Light1 static var TYPE = "light2" # name of the plug-in in json - static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in + static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in + static var ARG = "" # no arg for native light + static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var CLUSTERS = matter.consolidate_clusters(_class, { # 0x001D: inherited # Descriptor Cluster 9.5 p.453 # 0x0003: inherited # Identify 1.2 p.16 @@ -46,6 +48,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 # var node_label # name of the endpoint, used only in bridge mode, "" if none # var shadow_onoff # (bool) status of the light power on/off # var shadow_bri # (int 0..254) brightness before Gamma correction - as per Matter 255 is not allowed + # var light_index # index number when using `light.get()` and `light.set()` var shadow_ct # (int 153..500, default 325) Color Temperatur in mireds var ct_min, ct_max # min and max value allowed for CT, Alexa emulation requires to have a narrower range 200..380 @@ -55,6 +58,10 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 super(self).init(device, endpoint, arguments) if !self.BRIDGE # in BRIDGE mode keep default to nil self.shadow_ct = 325 + import light + if (light.get(1) != nil) + self.light_index = 1 # default value is `0` from superclass + end end self.update_ct_minmax() # read SetOption to adjust ct min/max end @@ -67,7 +74,8 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 import light self.update_ct_minmax() super(self).update_shadow() - var light_status = light.get() + # check if the light RGB/CT with split mode, i.e. CT is in `light.get(1)` + var light_status = light.get(self.light_index) if light_status != nil var ct = light_status.find('ct', nil) if ct == nil ct = self.shadow_ct end @@ -110,7 +118,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1 end else import light - light.set({'ct': ct}) + light.set({'ct': ct}, self.light_index) self.update_shadow() end end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be index bbc4e447a..379235f19 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be @@ -25,7 +25,9 @@ import matter class Matter_Plugin_Light3 : Matter_Plugin_Light1 static var TYPE = "light3" # name of the plug-in in json - static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in + static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in + static var ARG = "" # no arg for native light + static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder') static var CLUSTERS = matter.consolidate_clusters(_class, { # 0x001D: inherited # Descriptor Cluster 9.5 p.453 # 0x0003: inherited # Identify 1.2 p.16 @@ -65,7 +67,7 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 if !self.VIRTUAL && !self.BRIDGE import light super(self).update_shadow() - var light_status = light.get() + var light_status = light.get(self.light_index) if light_status != nil var hue = light_status.find('hue', nil) var sat = light_status.find('sat', nil) @@ -122,11 +124,11 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 var sat_255 = (sat_254 != nil) ? tasmota.scale_uint(sat_254, 0, 254, 0, 255) : nil if (hue_360 != nil) && (sat_255 != nil) - light.set({'hue': hue_360, 'sat': sat_255}) + light.set({'hue': hue_360, 'sat': sat_255}, self.light_index) elif (hue_360 != nil) - light.set({'hue': hue_360}) + light.set({'hue': hue_360}, self.light_index) else - light.set({'sat': sat_255}) + light.set({'sat': sat_255}, self.light_index) end self.update_shadow() end @@ -176,7 +178,6 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1 # returns a TLV object if successful, contains the response # or an `int` to indicate a status def invoke_request(session, val, ctx) - import light var TLV = matter.TLV var cluster = ctx.cluster var command = ctx.command diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be index 36df0c048..370e76345 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be @@ -28,6 +28,7 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Light1 static var TYPE = "http_light1" # name of the plug-in in json # static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in static var ARG = "relay" # additional argument name (or empty if none) + static var ARG_HINT = "Relay number" static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var UPDATE_TIME = 3000 # update every 3s end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be index 85c6ca91d..9f10389e3 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be @@ -28,6 +28,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Light2 static var TYPE = "http_light2" # name of the plug-in in json # static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in static var ARG = "relay" # additional argument name (or empty if none) + static var ARG_HINT = "Relay number" static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var UPDATE_TIME = 3000 # update every 3s end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be index 0d41d6721..b272a2e33 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be @@ -28,6 +28,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Light3 static var TYPE = "http_light3" # name of the plug-in in json # static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in static var ARG = "relay" # additional argument name (or empty if none) + static var ARG_HINT = "Relay number" static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type static var UPDATE_TIME = 3000 # update every 3s end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be index 6fcd614b1..cc0528efc 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be @@ -1090,22 +1090,52 @@ class Matter_Device # check if we have a light var endpoint = matter.START_ENDPOINT - var light_present = false + var light_present = 0 import light - var light_status = light.get() + var light_status = light.get(0) if light_status != nil var channels_count = size(light_status.find('channels', "")) + light_present = 1 if channels_count > 0 if channels_count == 1 m[str(endpoint)] = {'type':'light1'} + endpoint += 1 + # check if we have secondary Dimmer lights (SetOption68 1) + var idx = 1 + var light_status_i + while (light_status_i := light.get(idx)) != nil + m[str(endpoint)] = {'type':'light1','light':idx + 1} # arg is 1-based so add 1 + endpoint += 1 + light_present += 1 + idx += 1 + end elif channels_count == 2 m[str(endpoint)] = {'type':'light2'} - else + endpoint += 1 + elif channels_count == 3 m[str(endpoint)] = {'type':'light3'} + endpoint += 1 + # check if we have a split second light (SetOption37 128) with 4/5 channels + var light_status1 = light.get(1) + if (light_status1 != nil) + var channels_count1 = size(light_status1.find('channels', "")) + + if (channels_count1 == 1) + m[str(endpoint)] = {'type':'light1'} + endpoint += 1 + light_present += 1 + elif (channels_count1 == 2) + m[str(endpoint)] = {'type':'light2'} + endpoint += 1 + light_present += 1 + end + end + elif channels_count == 4 + # not supported yet + else # only option left is 5 channels + # not supported yet end - light_present = true - endpoint += 1 end end @@ -1144,7 +1174,7 @@ class Matter_Device # how many relays are present var relay_count = size(tasmota.get_power()) var relay_index = 0 # start at index 0 - if light_present relay_count -= 1 end # last power is taken for lights + relay_count -= light_present # last power(s) taken for lights while relay_index < relay_count if relays_reserved.find(relay_index) == nil # if relay is actual relay diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h index 71079d66b..eca9ea276 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h @@ -6,6 +6,283 @@ extern const bclass be_class_Matter_Plugin_Light0; +/******************************************************************** +** Solidified function: set_onoff +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(call_remote_sync), + /* K2 */ be_nested_str_weak(Power), + /* K3 */ be_nested_str_weak(tasmota_relay_index), + /* K4 */ be_nested_str_weak(1), + /* K5 */ be_nested_str_weak(0), + /* K6 */ be_nested_str_weak(parse_status), + /* K7 */ be_nested_str_weak(VIRTUAL), + /* K8 */ be_nested_str_weak(shadow_onoff), + /* K9 */ be_nested_str_weak(attribute_updated), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(set_power), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(update_shadow), + /* K15 */ be_nested_str_weak(light), + /* K16 */ be_nested_str_weak(set), + /* K17 */ be_nested_str_weak(power), + /* K18 */ be_nested_str_weak(light_index), + }), + be_str_weak(set_onoff), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0011, // 0001 JMPF R2 #0014 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x60100008, // 0003 GETGBL R4 G8 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x7C100200, // 0005 CALL R4 1 + 0x00120404, // 0006 ADD R4 K2 R4 + 0x78060001, // 0007 JMPF R1 #000A + 0x58140004, // 0008 LDCONST R5 K4 + 0x70020000, // 0009 JMP #000B + 0x58140005, // 000A LDCONST R5 K5 + 0x7C080600, // 000B CALL R2 3 + 0x4C0C0000, // 000C LDNIL R3 + 0x200C0403, // 000D NE R3 R2 R3 + 0x780E0003, // 000E JMPF R3 #0013 + 0x8C0C0106, // 000F GETMET R3 R0 K6 + 0x5C140400, // 0010 MOVE R5 R2 + 0x541A000A, // 0011 LDINT R6 11 + 0x7C0C0600, // 0012 CALL R3 3 + 0x70020022, // 0013 JMP #0037 + 0x88080107, // 0014 GETMBR R2 R0 K7 + 0x780A0008, // 0015 JMPF R2 #001F + 0x88080108, // 0016 GETMBR R2 R0 K8 + 0x20080202, // 0017 NE R2 R1 R2 + 0x780A0004, // 0018 JMPF R2 #001E + 0x8C080109, // 0019 GETMET R2 R0 K9 + 0x54120005, // 001A LDINT R4 6 + 0x5814000A, // 001B LDCONST R5 K10 + 0x7C080600, // 001C CALL R2 3 + 0x90021001, // 001D SETMBR R0 K8 R1 + 0x70020017, // 001E JMP #0037 + 0x88080103, // 001F GETMBR R2 R0 K3 + 0x4C0C0000, // 0020 LDNIL R3 + 0x20080403, // 0021 NE R2 R2 R3 + 0x780A000A, // 0022 JMPF R2 #002E + 0xB80A1600, // 0023 GETNGBL R2 K11 + 0x8C08050C, // 0024 GETMET R2 R2 K12 + 0x88100103, // 0025 GETMBR R4 R0 K3 + 0x0410090D, // 0026 SUB R4 R4 K13 + 0x60140017, // 0027 GETGBL R5 G23 + 0x5C180200, // 0028 MOVE R6 R1 + 0x7C140200, // 0029 CALL R5 1 + 0x7C080600, // 002A CALL R2 3 + 0x8C08010E, // 002B GETMET R2 R0 K14 + 0x7C080200, // 002C CALL R2 1 + 0x70020008, // 002D JMP #0037 + 0xA40A1E00, // 002E IMPORT R2 K15 + 0x8C0C0510, // 002F GETMET R3 R2 K16 + 0x60140013, // 0030 GETGBL R5 G19 + 0x7C140000, // 0031 CALL R5 0 + 0x98162201, // 0032 SETIDX R5 K17 R1 + 0x88180112, // 0033 GETMBR R6 R0 K18 + 0x7C0C0600, // 0034 CALL R3 3 + 0x8C0C010E, // 0035 GETMET R3 R0 K14 + 0x7C0C0200, // 0036 CALL R3 1 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_values +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X25s), + /* K4 */ be_nested_str_weak(web_value_onoff), + /* K5 */ be_nested_str_weak(shadow_onoff), + }), + be_str_weak(web_values), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x8C180104, // 0006 GETMET R6 R0 K4 + 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x7C180400, // 0008 CALL R6 2 + 0x7C100400, // 0009 CALL R4 2 + 0x7C080400, // 000A CALL R2 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_onoff), + /* K1 */ be_nested_str_weak(light_index), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(init), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x50100000, // 0000 LDBOOL R4 0 0 + 0x90020004, // 0001 SETMBR R0 K0 R4 + 0x90020302, // 0002 SETMBR R0 K1 K2 + 0x60100003, // 0003 GETGBL R4 G3 + 0x5C140000, // 0004 MOVE R5 R0 + 0x7C100200, // 0005 CALL R4 1 + 0x8C100903, // 0006 GETMET R4 R4 K3 + 0x5C180200, // 0007 MOVE R6 R1 + 0x5C1C0400, // 0008 MOVE R7 R2 + 0x5C200600, // 0009 MOVE R8 R3 + 0x7C100800, // 000A CALL R4 4 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_relay_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0301, // 0001 GETMET R3 R1 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x4C180000, // 0003 LDNIL R6 + 0x7C0C0600, // 0004 CALL R3 3 + 0x7C080200, // 0005 CALL R2 1 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x4C0C0000, // 0008 LDNIL R3 + 0x20080403, // 0009 NE R2 R2 R3 + 0x780A0003, // 000A JMPF R2 #000F + 0x88080100, // 000B GETMBR R2 R0 K0 + 0x18080503, // 000C LE R2 R2 K3 + 0x780A0000, // 000D JMPF R2 #000F + 0x90020104, // 000E SETMBR R0 K0 K4 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light0; +be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light0, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Power), + /* K2 */ be_nested_str_weak(set_onoff), + /* K3 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x58100001, // 0001 LDCONST R4 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0004, // 0005 JMPF R3 #000B + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x60140017, // 0007 GETGBL R5 G23 + 0x5C180400, // 0008 MOVE R6 R2 + 0x7C140200, // 0009 CALL R5 1 + 0x7C0C0400, // 000A CALL R3 2 + 0x600C0003, // 000B GETGBL R3 G3 + 0x5C100000, // 000C MOVE R4 R0 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C0703, // 000E GETMET R3 R3 K3 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ @@ -67,261 +344,81 @@ be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ /******************************************************************** -** Solidified function: update_virtual +** Solidified function: web_values_prefix ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light0; -be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ +be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ + 10, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light0, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Power), - /* K2 */ be_nested_str_weak(set_onoff), - /* K3 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0403, // 0004 NE R3 R2 R3 - 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x60140017, // 0007 GETGBL R5 G23 - 0x5C180400, // 0008 MOVE R6 R2 - 0x7C140200, // 0009 CALL R5 1 - 0x7C0C0400, // 000A CALL R3 2 - 0x600C0003, // 000B GETGBL R3 G3 - 0x5C100000, // 000C MOVE R4 R0 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0703, // 000E GETMET R3 R3 K3 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_status -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; -be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_relay_index), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(POWER), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(ON), - /* K6 */ be_nested_str_weak(shadow_onoff), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_const_int(0), - }), - be_str_weak(parse_status), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x540E000A, // 0000 LDINT R3 11 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0020, // 0002 JMPF R3 #0024 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x1C100901, // 0005 EQ R4 R4 K1 - 0x78120009, // 0006 JMPF R4 #0011 - 0x8C100302, // 0007 GETMET R4 R1 K2 - 0x58180003, // 0008 LDCONST R6 K3 - 0x7C100400, // 0009 CALL R4 2 - 0x78120005, // 000A JMPF R4 #0011 - 0x8C100304, // 000B GETMET R4 R1 K4 - 0x58180003, // 000C LDCONST R6 K3 - 0x7C100400, // 000D CALL R4 2 - 0x1C100905, // 000E EQ R4 R4 K5 - 0x5C0C0800, // 000F MOVE R3 R4 - 0x70020007, // 0010 JMP #0019 - 0x8C100304, // 0011 GETMET R4 R1 K4 - 0x60180008, // 0012 GETGBL R6 G8 - 0x881C0100, // 0013 GETMBR R7 R0 K0 - 0x7C180200, // 0014 CALL R6 1 - 0x001A0606, // 0015 ADD R6 K3 R6 - 0x7C100400, // 0016 CALL R4 2 - 0x1C100905, // 0017 EQ R4 R4 K5 - 0x5C0C0800, // 0018 MOVE R3 R4 - 0x88100106, // 0019 GETMBR R4 R0 K6 - 0x60140017, // 001A GETGBL R5 G23 - 0x5C180600, // 001B MOVE R6 R3 - 0x7C140200, // 001C CALL R5 1 - 0x20100805, // 001D NE R4 R4 R5 - 0x78120004, // 001E JMPF R4 #0024 - 0x8C100107, // 001F GETMET R4 R0 K7 - 0x541A0005, // 0020 LDINT R6 6 - 0x581C0008, // 0021 LDCONST R7 K8 - 0x7C100600, // 0022 CALL R4 3 - 0x90020C03, // 0023 SETMBR R0 K6 R3 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; -be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_relay_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - }), - be_str_weak(parse_configuration), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x4C180000, // 0003 LDNIL R6 - 0x7C0C0600, // 0004 CALL R3 3 - 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x4C0C0000, // 0008 LDNIL R3 - 0x20080403, // 0009 NE R2 R2 R3 - 0x780A0003, // 000A JMPF R2 #000F - 0x88080100, // 000B GETMBR R2 R0 K0 - 0x18080503, // 000C LE R2 R2 K3 - 0x780A0000, // 000D JMPF R2 #000F - 0x90020104, // 000E SETMBR R0 K0 K4 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_onoff -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; -be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(call_remote_sync), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(get_name), /* K2 */ be_nested_str_weak(Power), /* K3 */ be_nested_str_weak(tasmota_relay_index), - /* K4 */ be_nested_str_weak(1), - /* K5 */ be_nested_str_weak(0), - /* K6 */ be_nested_str_weak(parse_status), - /* K7 */ be_nested_str_weak(VIRTUAL), - /* K8 */ be_nested_str_weak(shadow_onoff), - /* K9 */ be_nested_str_weak(attribute_updated), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(set_power), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(update_shadow), - /* K15 */ be_nested_str_weak(light), - /* K16 */ be_nested_str_weak(set), - /* K17 */ be_nested_str_weak(power), + /* K4 */ be_nested_str_weak(content_send), + /* K5 */ be_nested_str_weak(PREFIX), + /* K6 */ be_nested_str_weak(html_escape), + /* K7 */ be_nested_str_weak(), }), - be_str_weak(set_onoff), + be_str_weak(web_values_prefix), &be_const_str_solidified, - ( &(const binstruction[55]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0011, // 0001 JMPF R2 #0014 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x60100008, // 0003 GETGBL R4 G8 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x7C100200, // 0005 CALL R4 1 - 0x00120404, // 0006 ADD R4 K2 R4 - 0x78060001, // 0007 JMPF R1 #000A - 0x58140004, // 0008 LDCONST R5 K4 - 0x70020000, // 0009 JMP #000B - 0x58140005, // 000A LDCONST R5 K5 - 0x7C080600, // 000B CALL R2 3 - 0x4C0C0000, // 000C LDNIL R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0003, // 000E JMPF R3 #0013 - 0x8C0C0106, // 000F GETMET R3 R0 K6 - 0x5C140400, // 0010 MOVE R5 R2 - 0x541A000A, // 0011 LDINT R6 11 - 0x7C0C0600, // 0012 CALL R3 3 - 0x70020021, // 0013 JMP #0036 - 0x88080107, // 0014 GETMBR R2 R0 K7 - 0x780A0008, // 0015 JMPF R2 #001F - 0x88080108, // 0016 GETMBR R2 R0 K8 - 0x20080202, // 0017 NE R2 R1 R2 - 0x780A0004, // 0018 JMPF R2 #001E - 0x8C080109, // 0019 GETMET R2 R0 K9 - 0x54120005, // 001A LDINT R4 6 - 0x5814000A, // 001B LDCONST R5 K10 - 0x7C080600, // 001C CALL R2 3 - 0x90021001, // 001D SETMBR R0 K8 R1 - 0x70020016, // 001E JMP #0036 - 0x88080103, // 001F GETMBR R2 R0 K3 - 0x4C0C0000, // 0020 LDNIL R3 - 0x20080403, // 0021 NE R2 R2 R3 - 0x780A000A, // 0022 JMPF R2 #002E - 0xB80A1600, // 0023 GETNGBL R2 K11 - 0x8C08050C, // 0024 GETMET R2 R2 K12 - 0x88100103, // 0025 GETMBR R4 R0 K3 - 0x0410090D, // 0026 SUB R4 R4 K13 - 0x60140017, // 0027 GETGBL R5 G23 - 0x5C180200, // 0028 MOVE R6 R1 - 0x7C140200, // 0029 CALL R5 1 - 0x7C080600, // 002A CALL R2 3 - 0x8C08010E, // 002B GETMET R2 R0 K14 - 0x7C080200, // 002C CALL R2 1 - 0x70020007, // 002D JMP #0036 - 0xA40A1E00, // 002E IMPORT R2 K15 - 0x8C0C0510, // 002F GETMET R3 R2 K16 - 0x60140013, // 0030 GETGBL R5 G19 - 0x7C140000, // 0031 CALL R5 0 - 0x98162201, // 0032 SETIDX R5 K17 R1 - 0x7C0C0400, // 0033 CALL R3 2 - 0x8C0C010E, // 0034 GETMET R3 R0 K14 - 0x7C0C0200, // 0035 CALL R3 1 - 0x80000000, // 0036 RET 0 + ( &(const binstruction[22]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x5C0C0400, // 0003 MOVE R3 R2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x600C0008, // 0005 GETGBL R3 G8 + 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x000E0403, // 0008 ADD R3 K2 R3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x60140018, // 000B GETGBL R5 G24 + 0x88180105, // 000C GETMBR R6 R0 K5 + 0x780A0003, // 000D JMPF R2 #0012 + 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x5C240400, // 000F MOVE R9 R2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020000, // 0011 JMP #0013 + 0x581C0007, // 0012 LDCONST R7 K7 + 0x7C140400, // 0013 CALL R5 2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(class_Matter_Plugin_Light0__X3Clambda_X3E, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040009, // 0000 GETGBL R1 G9 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -396,87 +493,6 @@ be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; -be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 - 0x7C180400, // 0008 CALL R6 2 - 0x7C100400, // 0009 CALL R4 2 - 0x7C080400, // 000A CALL R2 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; -be_local_closure(class_Matter_Plugin_Light0_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_onoff), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ @@ -567,81 +583,70 @@ be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ /******************************************************************** -** Solidified function: -********************************************************************/ -be_local_closure(class_Matter_Plugin_Light0__X3Clambda_X3E, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040009, // 0000 GETGBL R1 G9 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values_prefix +** Solidified function: parse_status ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light0; -be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ +be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ be_nested_proto( - 10, /* nstack */ - 1, /* argc */ + 8, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light0, 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Power), - /* K3 */ be_nested_str_weak(tasmota_relay_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota_relay_index), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(POWER), + /* K4 */ be_nested_str_weak(find), + /* K5 */ be_nested_str_weak(ON), + /* K6 */ be_nested_str_weak(shadow_onoff), + /* K7 */ be_nested_str_weak(attribute_updated), + /* K8 */ be_const_int(0), }), - be_str_weak(web_values_prefix), + be_str_weak(parse_status), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 - 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 - 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 - 0x5C240400, // 000F MOVE R9 R2 - 0x7C1C0400, // 0010 CALL R7 2 - 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 - 0x7C140400, // 0013 CALL R5 2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x80000000, // 0015 RET 0 + ( &(const binstruction[37]) { /* code */ + 0x540E000A, // 0000 LDINT R3 11 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0020, // 0002 JMPF R3 #0024 + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x88100100, // 0004 GETMBR R4 R0 K0 + 0x1C100901, // 0005 EQ R4 R4 K1 + 0x78120009, // 0006 JMPF R4 #0011 + 0x8C100302, // 0007 GETMET R4 R1 K2 + 0x58180003, // 0008 LDCONST R6 K3 + 0x7C100400, // 0009 CALL R4 2 + 0x78120005, // 000A JMPF R4 #0011 + 0x8C100304, // 000B GETMET R4 R1 K4 + 0x58180003, // 000C LDCONST R6 K3 + 0x7C100400, // 000D CALL R4 2 + 0x1C100905, // 000E EQ R4 R4 K5 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x70020007, // 0010 JMP #0019 + 0x8C100304, // 0011 GETMET R4 R1 K4 + 0x60180008, // 0012 GETGBL R6 G8 + 0x881C0100, // 0013 GETMBR R7 R0 K0 + 0x7C180200, // 0014 CALL R6 1 + 0x001A0606, // 0015 ADD R6 K3 R6 + 0x7C100400, // 0016 CALL R4 2 + 0x1C100905, // 0017 EQ R4 R4 K5 + 0x5C0C0800, // 0018 MOVE R3 R4 + 0x88100106, // 0019 GETMBR R4 R0 K6 + 0x60140017, // 001A GETGBL R5 G23 + 0x5C180600, // 001B MOVE R6 R3 + 0x7C140200, // 001C CALL R5 1 + 0x20100805, // 001D NE R4 R4 R5 + 0x78120004, // 001E JMPF R4 #0024 + 0x8C100107, // 001F GETMET R4 R0 K7 + 0x541A0005, // 0020 LDINT R6 6 + 0x581C0008, // 0021 LDCONST R7 K8 + 0x7C100600, // 0022 CALL R4 3 + 0x90020C03, // 0023 SETMBR R0 K6 R3 + 0x80000000, // 0024 RET 0 }) ) ); @@ -653,22 +658,17 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ ********************************************************************/ extern const bclass be_class_Matter_Plugin_Device; be_local_class(Matter_Plugin_Light0, - 2, + 3, &be_class_Matter_Plugin_Device, - be_nested_map(21, + be_nested_map(22, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light0_read_attribute_closure) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light0_update_virtual_closure) }, - { be_const_key_weak(tasmota_relay_index, 1), be_const_var(0) }, - { be_const_key_weak(parse_status, 5), be_const_closure(class_Matter_Plugin_Light0_parse_status_closure) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Light0_parse_configuration_closure) }, - { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(1, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(Power), - })) ) } )) }, - { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_Light0_set_onoff_closure) }, - { be_const_key_weak(CLUSTERS, 19), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(parse_status, 8), be_const_closure(class_Matter_Plugin_Light0_parse_status_closure) }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Relay_X3Cx_X3E_X20number) }, + { be_const_key_weak(light_index, -1), be_const_var(1) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(250) }, + { be_const_key_weak(set_onoff, 18), be_const_closure(class_Matter_Plugin_Light0_set_onoff_closure) }, + { be_const_key_weak(tasmota_relay_index, -1), be_const_var(0) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -752,23 +752,29 @@ be_local_class(Matter_Plugin_Light0, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light0_init_closure) }, - { be_const_key_weak(UPDATE_TIME, -1), be_const_int(250) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(light0) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light0_web_values_closure) }, - { be_const_key_weak(DISPLAY_NAME, 8), be_nested_str_weak(Light_X200_X20On) }, - { be_const_key_weak(shadow_onoff, -1), be_const_var(1) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light0_invoke_request_closure) }, { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, + { be_const_key_weak(invoke_request, 10), be_const_closure(class_Matter_Plugin_Light0_invoke_request_closure) }, + { be_const_key_weak(init, 5), be_const_closure(class_Matter_Plugin_Light0_init_closure) }, + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Power), + })) ) } )) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light0_read_attribute_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light0_update_virtual_closure) }, + { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Light0_web_values_prefix_closure) }, + { be_const_key_weak(shadow_onoff, 11), be_const_var(2) }, + { be_const_key_weak(TYPE, 13), be_nested_str_weak(light0) }, { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Light0__X3Clambda_X3E_closure) }, + { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light0_update_shadow_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(256, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Relay_X3Cx_X3E_X20number) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light0_update_shadow_closure) }, - { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Light0_web_values_prefix_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X200_X20On) }, + { be_const_key_weak(web_values, 3), be_const_closure(class_Matter_Plugin_Light0_web_values_closure) }, + { be_const_key_weak(parse_configuration, 0), be_const_closure(class_Matter_Plugin_Light0_parse_configuration_closure) }, })), be_str_weak(Matter_Plugin_Light0) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h index 9090db17f..399697c39 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h @@ -6,59 +6,6 @@ extern const bclass be_class_Matter_Plugin_Light1; -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Power), - /* K2 */ be_nested_str_weak(Bri), - /* K3 */ be_nested_str_weak(set_bri), - /* K4 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x7C080400, // 0002 CALL R2 2 - 0x8C0C0300, // 0003 GETMET R3 R1 K0 - 0x58140002, // 0004 LDCONST R5 K2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x4C100000, // 0006 LDNIL R4 - 0x20100604, // 0007 NE R4 R3 R4 - 0x78120006, // 0008 JMPF R4 #0010 - 0x8C100103, // 0009 GETMET R4 R0 K3 - 0x60180009, // 000A GETGBL R6 G9 - 0x5C1C0600, // 000B MOVE R7 R3 - 0x7C180200, // 000C CALL R6 1 - 0x5C1C0400, // 000D MOVE R7 R2 - 0x7C100600, // 000E CALL R4 3 - 0x80000800, // 000F RET 0 - 0x60100003, // 0010 GETGBL R4 G3 - 0x5C140000, // 0011 MOVE R5 R0 - 0x7C100200, // 0012 CALL R4 1 - 0x8C100904, // 0013 GETMET R4 R4 K4 - 0x5C180200, // 0014 MOVE R6 R1 - 0x7C100400, // 0015 CALL R4 2 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: set_bri ********************************************************************/ @@ -73,7 +20,7 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light1, 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[17]) { /* constants */ /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(BRIDGE), /* K2 */ be_nested_str_weak(tasmota), @@ -88,12 +35,13 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ /* K11 */ be_nested_str_weak(light), /* K12 */ be_nested_str_weak(set), /* K13 */ be_nested_str_weak(bri), - /* K14 */ be_nested_str_weak(power), - /* K15 */ be_nested_str_weak(update_shadow), + /* K14 */ be_nested_str_weak(light_index), + /* K15 */ be_nested_str_weak(power), + /* K16 */ be_nested_str_weak(update_shadow), }), be_str_weak(set_bri), &be_const_str_solidified, - ( &(const binstruction[89]) { /* code */ + ( &(const binstruction[91]) { /* code */ 0x140C0300, // 0000 LT R3 R1 K0 0x780E0000, // 0001 JMPF R3 #0003 0x58040000, // 0002 LDCONST R1 K0 @@ -133,7 +81,7 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ 0x5C1C0800, // 0024 MOVE R7 R4 0x5422000A, // 0025 LDINT R8 11 0x7C140600, // 0026 CALL R5 3 - 0x7002002F, // 0027 JMP #0058 + 0x70020031, // 0027 JMP #005A 0x880C0107, // 0028 GETMBR R3 R0 K7 0x780E0013, // 0029 JMPF R3 #003E 0x4C0C0000, // 002A LDNIL R3 @@ -155,7 +103,7 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ 0x58180000, // 003A LDCONST R6 K0 0x7C0C0600, // 003B CALL R3 3 0x90021401, // 003C SETMBR R0 K10 R1 - 0x70020019, // 003D JMP #0058 + 0x7002001B, // 003D JMP #005A 0xA40E1600, // 003E IMPORT R3 K11 0xB8120400, // 003F GETNGBL R4 K2 0x8C100903, // 0040 GETMET R4 R4 K3 @@ -167,22 +115,24 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ 0x7C100C00, // 0046 CALL R4 6 0x4C140000, // 0047 LDNIL R5 0x1C140405, // 0048 EQ R5 R2 R5 - 0x78160005, // 0049 JMPF R5 #0050 + 0x78160006, // 0049 JMPF R5 #0051 0x8C14070C, // 004A GETMET R5 R3 K12 0x601C0013, // 004B GETGBL R7 G19 0x7C1C0000, // 004C CALL R7 0 0x981E1A04, // 004D SETIDX R7 K13 R4 - 0x7C140400, // 004E CALL R5 2 - 0x70020005, // 004F JMP #0056 - 0x8C14070C, // 0050 GETMET R5 R3 K12 - 0x601C0013, // 0051 GETGBL R7 G19 - 0x7C1C0000, // 0052 CALL R7 0 - 0x981E1A04, // 0053 SETIDX R7 K13 R4 - 0x981E1C02, // 0054 SETIDX R7 K14 R2 - 0x7C140400, // 0055 CALL R5 2 - 0x8C14010F, // 0056 GETMET R5 R0 K15 - 0x7C140200, // 0057 CALL R5 1 - 0x80000000, // 0058 RET 0 + 0x8820010E, // 004E GETMBR R8 R0 K14 + 0x7C140600, // 004F CALL R5 3 + 0x70020006, // 0050 JMP #0058 + 0x8C14070C, // 0051 GETMET R5 R3 K12 + 0x601C0013, // 0052 GETGBL R7 G19 + 0x7C1C0000, // 0053 CALL R7 0 + 0x981E1A04, // 0054 SETIDX R7 K13 R4 + 0x981E1E02, // 0055 SETIDX R7 K15 R2 + 0x8820010E, // 0056 GETMBR R8 R0 K14 + 0x7C140600, // 0057 CALL R5 3 + 0x8C140110, // 0058 GETMET R5 R0 K16 + 0x7C140200, // 0059 CALL R5 1 + 0x80000000, // 005A RET 0 }) ) ); @@ -190,50 +140,12 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: web_value_dimmer ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_init, /* name */ +be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */ be_nested_proto( 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_bri), - /* K2 */ be_const_int(0), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x90020302, // 0008 SETMBR R0 K1 K2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ - be_nested_proto( - 12, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -241,290 +153,38 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light1, 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(power), - /* K6 */ be_nested_str_weak(shadow_onoff), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(bri), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(scale_uint), - /* K12 */ be_nested_str_weak(shadow_bri), - /* K13 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x7406002B, // 0001 JMPT R1 #002E - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x74060029, // 0003 JMPT R1 #002E - 0xA4060400, // 0004 IMPORT R1 K2 - 0x8C080303, // 0005 GETMET R2 R1 K3 - 0x7C080200, // 0006 CALL R2 1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0023, // 0009 JMPF R3 #002E - 0x8C0C0504, // 000A GETMET R3 R2 K4 - 0x58140005, // 000B LDCONST R5 K5 - 0x4C180000, // 000C LDNIL R6 - 0x7C0C0600, // 000D CALL R3 3 - 0x88100106, // 000E GETMBR R4 R0 K6 - 0x20100604, // 000F NE R4 R3 R4 - 0x78120004, // 0010 JMPF R4 #0016 - 0x8C100107, // 0011 GETMET R4 R0 K7 - 0x541A0005, // 0012 LDINT R6 6 - 0x581C0008, // 0013 LDCONST R7 K8 - 0x7C100600, // 0014 CALL R4 3 - 0x90020C03, // 0015 SETMBR R0 K6 R3 - 0x8C100504, // 0016 GETMET R4 R2 K4 - 0x58180009, // 0017 LDCONST R6 K9 - 0x4C1C0000, // 0018 LDNIL R7 - 0x7C100600, // 0019 CALL R4 3 - 0x4C140000, // 001A LDNIL R5 - 0x20140805, // 001B NE R5 R4 R5 - 0x78160010, // 001C JMPF R5 #002E - 0xB8161400, // 001D GETNGBL R5 K10 - 0x8C140B0B, // 001E GETMET R5 R5 K11 - 0x5C1C0800, // 001F MOVE R7 R4 - 0x58200008, // 0020 LDCONST R8 K8 - 0x542600FE, // 0021 LDINT R9 255 - 0x58280008, // 0022 LDCONST R10 K8 - 0x542E00FD, // 0023 LDINT R11 254 - 0x7C140C00, // 0024 CALL R5 6 - 0x5C100A00, // 0025 MOVE R4 R5 - 0x8814010C, // 0026 GETMBR R5 R0 K12 - 0x20140805, // 0027 NE R5 R4 R5 - 0x78160004, // 0028 JMPF R5 #002E - 0x8C140107, // 0029 GETMET R5 R0 K7 - 0x541E0007, // 002A LDINT R7 8 - 0x58200008, // 002B LDCONST R8 K8 - 0x7C140600, // 002C CALL R5 3 - 0x90021804, // 002D SETMBR R0 K12 R4 - 0x60040003, // 002E GETGBL R1 G3 - 0x5C080000, // 002F MOVE R2 R0 - 0x7C040200, // 0030 CALL R1 1 - 0x8C04030D, // 0031 GETMET R1 R1 K13 - 0x7C040200, // 0032 CALL R1 1 - 0x80000000, // 0033 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_configuration -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(tasmota_relay_index), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(ARG), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(shadow_bri), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), + /* K5 */ be_nested_str_weak(_X25i_X25_X25), + /* K6 */ be_nested_str_weak(_X26_X23128261_X3B_X20), }), - be_str_weak(parse_configuration), + be_str_weak(web_value_dimmer), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A000E, // 0001 JMPF R2 #0011 - 0x60080009, // 0002 GETGBL R2 G9 - 0x8C0C0302, // 0003 GETMET R3 R1 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x4C180000, // 0005 LDNIL R6 - 0x7C0C0600, // 0006 CALL R3 3 - 0x7C080200, // 0007 CALL R2 1 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x88080101, // 0009 GETMBR R2 R0 K1 - 0x4C0C0000, // 000A LDNIL R3 - 0x20080403, // 000B NE R2 R2 R3 - 0x780A0003, // 000C JMPF R2 #0011 - 0x88080101, // 000D GETMBR R2 R0 K1 - 0x18080504, // 000E LE R2 R2 K4 - 0x780A0000, // 000F JMPF R2 #0011 - 0x90020305, // 0010 SETMBR R0 K1 K5 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_status -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(Dimmer), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(scale_uint), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(shadow_bri), - /* K7 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(parse_status), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x540E000A, // 0007 LDINT R3 11 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0017, // 0009 JMPF R3 #0022 - 0x600C0009, // 000A GETGBL R3 G9 - 0x8C100301, // 000B GETMET R4 R1 K1 - 0x58180002, // 000C LDCONST R6 K2 - 0x7C100400, // 000D CALL R4 2 - 0x7C0C0200, // 000E CALL R3 1 - 0x4C100000, // 000F LDNIL R4 - 0x20100604, // 0010 NE R4 R3 R4 - 0x7812000F, // 0011 JMPF R4 #0022 - 0xB8120600, // 0012 GETNGBL R4 K3 - 0x8C100904, // 0013 GETMET R4 R4 K4 - 0x5C180600, // 0014 MOVE R6 R3 - 0x581C0005, // 0015 LDCONST R7 K5 - 0x54220063, // 0016 LDINT R8 100 - 0x58240005, // 0017 LDCONST R9 K5 - 0x542A00FD, // 0018 LDINT R10 254 - 0x7C100C00, // 0019 CALL R4 6 - 0x88140106, // 001A GETMBR R5 R0 K6 - 0x20140805, // 001B NE R5 R4 R5 - 0x78160004, // 001C JMPF R5 #0022 - 0x8C140107, // 001D GETMET R5 R0 K7 - 0x541E0007, // 001E LDINT R7 8 - 0x58200005, // 001F LDCONST R8 K5 - 0x7C140600, // 0020 CALL R5 3 - 0x90020C04, // 0021 SETMBR R0 K6 R4 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(shadow_bri), - /* K9 */ be_const_int(2), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(read_attribute), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[59]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x541E0007, // 0004 LDINT R7 8 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E002A, // 0006 JMPF R7 #0032 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 - 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 - 0x88280108, // 000D GETMBR R10 R0 K8 - 0x7C1C0600, // 000E CALL R7 3 - 0x80040E00, // 000F RET 1 R7 - 0x70020020, // 0010 JMP #0032 - 0x1C1C0D09, // 0011 EQ R7 R6 K9 - 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240907, // 0014 GETMBR R9 R4 K7 - 0x58280005, // 0015 LDCONST R10 K5 - 0x7C1C0600, // 0016 CALL R7 3 - 0x80040E00, // 0017 RET 1 R7 - 0x70020018, // 0018 JMP #0032 - 0x1C1C0D0A, // 0019 EQ R7 R6 K10 - 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C0706, // 001B GETMET R7 R3 K6 - 0x88240907, // 001C GETMBR R9 R4 K7 - 0x542A00FD, // 001D LDINT R10 254 - 0x7C1C0600, // 001E CALL R7 3 - 0x80040E00, // 001F RET 1 R7 - 0x70020010, // 0020 JMP #0032 - 0x541E000E, // 0021 LDINT R7 15 - 0x1C1C0C07, // 0022 EQ R7 R6 R7 - 0x781E0005, // 0023 JMPF R7 #002A - 0x8C1C0706, // 0024 GETMET R7 R3 K6 - 0x88240907, // 0025 GETMBR R9 R4 K7 - 0x58280005, // 0026 LDCONST R10 K5 - 0x7C1C0600, // 0027 CALL R7 3 - 0x80040E00, // 0028 RET 1 R7 - 0x70020007, // 0029 JMP #0032 - 0x541E0010, // 002A LDINT R7 17 - 0x1C1C0C07, // 002B EQ R7 R6 R7 - 0x781E0004, // 002C JMPF R7 #0032 - 0x8C1C0706, // 002D GETMET R7 R3 K6 - 0x88240907, // 002E GETMBR R9 R4 K7 - 0x88280108, // 002F GETMBR R10 R0 K8 - 0x7C1C0600, // 0030 CALL R7 3 - 0x80040E00, // 0031 RET 1 R7 - 0x601C0003, // 0032 GETGBL R7 G3 - 0x5C200000, // 0033 MOVE R8 R0 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0F0B, // 0035 GETMET R7 R7 K11 - 0x5C240200, // 0036 MOVE R9 R1 - 0x5C280400, // 0037 MOVE R10 R2 - 0x5C2C0600, // 0038 MOVE R11 R3 - 0x7C1C0800, // 0039 CALL R7 4 - 0x80040E00, // 003A RET 1 R7 + ( &(const binstruction[20]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A000C, // 0004 JMPF R2 #0012 + 0xB80A0400, // 0005 GETNGBL R2 K2 + 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x58140004, // 0008 LDCONST R5 K4 + 0x541A00FD, // 0009 LDINT R6 254 + 0x581C0004, // 000A LDCONST R7 K4 + 0x54220063, // 000B LDINT R8 100 + 0x7C080C00, // 000C CALL R2 6 + 0x600C0018, // 000D GETGBL R3 G24 + 0x58100005, // 000E LDCONST R4 K5 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x5C040600, // 0011 MOVE R1 R3 + 0x000A0C01, // 0012 ADD R2 K6 R1 + 0x80040400, // 0013 RET 1 R2 }) ) ); @@ -697,51 +357,276 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ /******************************************************************** -** Solidified function: web_value_dimmer +** Solidified function: read_attribute ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light1; -be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */ +be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ be_nested_proto( - 9, /* nstack */ - 1, /* argc */ + 12, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light1, 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(shadow_bri), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(_X25i_X25_X25), - /* K6 */ be_nested_str_weak(_X26_X23128261_X3B_X20), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(U1), + /* K8 */ be_nested_str_weak(shadow_bri), + /* K9 */ be_const_int(2), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(read_attribute), }), - be_str_weak(web_value_dimmer), + be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A000C, // 0004 JMPF R2 #0012 - 0xB80A0400, // 0005 GETNGBL R2 K2 - 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x88100101, // 0007 GETMBR R4 R0 K1 - 0x58140004, // 0008 LDCONST R5 K4 - 0x541A00FD, // 0009 LDINT R6 254 - 0x581C0004, // 000A LDCONST R7 K4 - 0x54220063, // 000B LDINT R8 100 - 0x7C080C00, // 000C CALL R2 6 - 0x600C0018, // 000D GETGBL R3 G24 - 0x58100005, // 000E LDCONST R4 K5 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x5C040600, // 0011 MOVE R1 R3 - 0x000A0C01, // 0012 ADD R2 K6 R1 - 0x80040400, // 0013 RET 1 R2 + ( &(const binstruction[59]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0007, // 0004 LDINT R7 8 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E002A, // 0006 JMPF R7 #0032 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0005, // 000A JMPF R7 #0011 + 0x8C1C0706, // 000B GETMET R7 R3 K6 + 0x88240907, // 000C GETMBR R9 R4 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x70020020, // 0010 JMP #0032 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x8C1C0706, // 0013 GETMET R7 R3 K6 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x58280005, // 0015 LDCONST R10 K5 + 0x7C1C0600, // 0016 CALL R7 3 + 0x80040E00, // 0017 RET 1 R7 + 0x70020018, // 0018 JMP #0032 + 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x781E0005, // 001A JMPF R7 #0021 + 0x8C1C0706, // 001B GETMET R7 R3 K6 + 0x88240907, // 001C GETMBR R9 R4 K7 + 0x542A00FD, // 001D LDINT R10 254 + 0x7C1C0600, // 001E CALL R7 3 + 0x80040E00, // 001F RET 1 R7 + 0x70020010, // 0020 JMP #0032 + 0x541E000E, // 0021 LDINT R7 15 + 0x1C1C0C07, // 0022 EQ R7 R6 R7 + 0x781E0005, // 0023 JMPF R7 #002A + 0x8C1C0706, // 0024 GETMET R7 R3 K6 + 0x88240907, // 0025 GETMBR R9 R4 K7 + 0x58280005, // 0026 LDCONST R10 K5 + 0x7C1C0600, // 0027 CALL R7 3 + 0x80040E00, // 0028 RET 1 R7 + 0x70020007, // 0029 JMP #0032 + 0x541E0010, // 002A LDINT R7 17 + 0x1C1C0C07, // 002B EQ R7 R6 R7 + 0x781E0004, // 002C JMPF R7 #0032 + 0x8C1C0706, // 002D GETMET R7 R3 K6 + 0x88240907, // 002E GETMBR R9 R4 K7 + 0x88280108, // 002F GETMBR R10 R0 K8 + 0x7C1C0600, // 0030 CALL R7 3 + 0x80040E00, // 0031 RET 1 R7 + 0x601C0003, // 0032 GETGBL R7 G3 + 0x5C200000, // 0033 MOVE R8 R0 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0F0B, // 0035 GETMET R7 R7 K11 + 0x5C240200, // 0036 MOVE R9 R1 + 0x5C280400, // 0037 MOVE R10 R2 + 0x5C2C0600, // 0038 MOVE R11 R3 + 0x7C1C0800, // 0039 CALL R7 4 + 0x80040E00, // 003A RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse_configuration +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(tasmota_relay_index), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(ARG), + /* K4 */ be_const_int(0), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(TYPE), + /* K7 */ be_nested_str_weak(light1), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(get_option), + /* K10 */ be_nested_str_weak(light), + /* K11 */ be_nested_str_weak(get), + /* K12 */ be_nested_str_weak(light_index), + }), + be_str_weak(parse_configuration), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A000F, // 0001 JMPF R2 #0012 + 0x60080009, // 0002 GETGBL R2 G9 + 0x8C0C0302, // 0003 GETMET R3 R1 K2 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x4C180000, // 0005 LDNIL R6 + 0x7C0C0600, // 0006 CALL R3 3 + 0x7C080200, // 0007 CALL R2 1 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x88080101, // 0009 GETMBR R2 R0 K1 + 0x4C0C0000, // 000A LDNIL R3 + 0x20080403, // 000B NE R2 R2 R3 + 0x780A0003, // 000C JMPF R2 #0011 + 0x88080101, // 000D GETMBR R2 R0 K1 + 0x18080504, // 000E LE R2 R2 K4 + 0x780A0000, // 000F JMPF R2 #0011 + 0x90020305, // 0010 SETMBR R0 K1 K5 + 0x70020020, // 0011 JMP #0033 + 0x88080101, // 0012 GETMBR R2 R0 K1 + 0x4C0C0000, // 0013 LDNIL R3 + 0x1C080403, // 0014 EQ R2 R2 R3 + 0x780A001C, // 0015 JMPF R2 #0033 + 0x88080106, // 0016 GETMBR R2 R0 K6 + 0x1C080507, // 0017 EQ R2 R2 K7 + 0x780A0019, // 0018 JMPF R2 #0033 + 0x8C080302, // 0019 GETMET R2 R1 K2 + 0x88100103, // 001A GETMBR R4 R0 K3 + 0x7C080400, // 001B CALL R2 2 + 0x4C0C0000, // 001C LDNIL R3 + 0x1C0C0403, // 001D EQ R3 R2 R3 + 0x780E000E, // 001E JMPF R3 #002E + 0xB80E1000, // 001F GETNGBL R3 K8 + 0x8C0C0709, // 0020 GETMET R3 R3 K9 + 0x54160043, // 0021 LDINT R5 68 + 0x7C0C0400, // 0022 CALL R3 2 + 0x1C0C0704, // 0023 EQ R3 R3 K4 + 0x780E0007, // 0024 JMPF R3 #002D + 0xA40E1400, // 0025 IMPORT R3 K10 + 0x8C10070B, // 0026 GETMET R4 R3 K11 + 0x58180005, // 0027 LDCONST R6 K5 + 0x7C100400, // 0028 CALL R4 2 + 0x4C140000, // 0029 LDNIL R5 + 0x20100805, // 002A NE R4 R4 R5 + 0x78120000, // 002B JMPF R4 #002D + 0x90021905, // 002C SETMBR R0 K12 K5 + 0x70020004, // 002D JMP #0033 + 0x600C0009, // 002E GETGBL R3 G9 + 0x5C100400, // 002F MOVE R4 R2 + 0x7C0C0200, // 0030 CALL R3 1 + 0x040C0705, // 0031 SUB R3 R3 K5 + 0x90021803, // 0032 SETMBR R0 K12 R3 + 0x80000000, // 0033 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Power), + /* K2 */ be_nested_str_weak(Bri), + /* K3 */ be_nested_str_weak(set_bri), + /* K4 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x58100001, // 0001 LDCONST R4 K1 + 0x7C080400, // 0002 CALL R2 2 + 0x8C0C0300, // 0003 GETMET R3 R1 K0 + 0x58140002, // 0004 LDCONST R5 K2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x4C100000, // 0006 LDNIL R4 + 0x20100604, // 0007 NE R4 R3 R4 + 0x78120006, // 0008 JMPF R4 #0010 + 0x8C100103, // 0009 GETMET R4 R0 K3 + 0x60180009, // 000A GETGBL R6 G9 + 0x5C1C0600, // 000B MOVE R7 R3 + 0x7C180200, // 000C CALL R6 1 + 0x5C1C0400, // 000D MOVE R7 R2 + 0x7C100600, // 000E CALL R4 3 + 0x80000800, // 000F RET 0 + 0x60100003, // 0010 GETGBL R4 G3 + 0x5C140000, // 0011 MOVE R5 R0 + 0x7C100200, // 0012 CALL R4 1 + 0x8C100904, // 0013 GETMET R4 R4 K4 + 0x5C180200, // 0014 MOVE R6 R1 + 0x7C100400, // 0015 CALL R4 2 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_bri), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(init), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x90020101, // 0000 SETMBR R0 K0 K1 + 0x60100003, // 0001 GETGBL R4 G3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100902, // 0004 GETMET R4 R4 K2 + 0x5C180200, // 0005 MOVE R6 R1 + 0x5C1C0400, // 0006 MOVE R7 R2 + 0x5C200600, // 0007 MOVE R8 R3 + 0x7C100800, // 0008 CALL R4 4 + 0x80000000, // 0009 RET 0 }) ) ); @@ -794,6 +679,167 @@ be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(Dimmer), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(scale_uint), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(shadow_bri), + /* K7 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x540E000A, // 0007 LDINT R3 11 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E0017, // 0009 JMPF R3 #0022 + 0x600C0009, // 000A GETGBL R3 G9 + 0x8C100301, // 000B GETMET R4 R1 K1 + 0x58180002, // 000C LDCONST R6 K2 + 0x7C100400, // 000D CALL R4 2 + 0x7C0C0200, // 000E CALL R3 1 + 0x4C100000, // 000F LDNIL R4 + 0x20100604, // 0010 NE R4 R3 R4 + 0x7812000F, // 0011 JMPF R4 #0022 + 0xB8120600, // 0012 GETNGBL R4 K3 + 0x8C100904, // 0013 GETMET R4 R4 K4 + 0x5C180600, // 0014 MOVE R6 R3 + 0x581C0005, // 0015 LDCONST R7 K5 + 0x54220063, // 0016 LDINT R8 100 + 0x58240005, // 0017 LDCONST R9 K5 + 0x542A00FD, // 0018 LDINT R10 254 + 0x7C100C00, // 0019 CALL R4 6 + 0x88140106, // 001A GETMBR R5 R0 K6 + 0x20140805, // 001B NE R5 R4 R5 + 0x78160004, // 001C JMPF R5 #0022 + 0x8C140107, // 001D GETMET R5 R0 K7 + 0x541E0007, // 001E LDINT R7 8 + 0x58200005, // 001F LDCONST R8 K5 + 0x7C140600, // 0020 CALL R5 3 + 0x90020C04, // 0021 SETMBR R0 K6 R4 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light1; +be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light1, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(light), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_nested_str_weak(light_index), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(power), + /* K7 */ be_nested_str_weak(shadow_onoff), + /* K8 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(bri), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(scale_uint), + /* K13 */ be_nested_str_weak(shadow_bri), + /* K14 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x7406002C, // 0001 JMPT R1 #002F + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x7406002A, // 0003 JMPT R1 #002F + 0xA4060400, // 0004 IMPORT R1 K2 + 0x8C080303, // 0005 GETMET R2 R1 K3 + 0x88100104, // 0006 GETMBR R4 R0 K4 + 0x7C080400, // 0007 CALL R2 2 + 0x4C0C0000, // 0008 LDNIL R3 + 0x200C0403, // 0009 NE R3 R2 R3 + 0x780E0023, // 000A JMPF R3 #002F + 0x8C0C0505, // 000B GETMET R3 R2 K5 + 0x58140006, // 000C LDCONST R5 K6 + 0x4C180000, // 000D LDNIL R6 + 0x7C0C0600, // 000E CALL R3 3 + 0x88100107, // 000F GETMBR R4 R0 K7 + 0x20100604, // 0010 NE R4 R3 R4 + 0x78120004, // 0011 JMPF R4 #0017 + 0x8C100108, // 0012 GETMET R4 R0 K8 + 0x541A0005, // 0013 LDINT R6 6 + 0x581C0009, // 0014 LDCONST R7 K9 + 0x7C100600, // 0015 CALL R4 3 + 0x90020E03, // 0016 SETMBR R0 K7 R3 + 0x8C100505, // 0017 GETMET R4 R2 K5 + 0x5818000A, // 0018 LDCONST R6 K10 + 0x4C1C0000, // 0019 LDNIL R7 + 0x7C100600, // 001A CALL R4 3 + 0x4C140000, // 001B LDNIL R5 + 0x20140805, // 001C NE R5 R4 R5 + 0x78160010, // 001D JMPF R5 #002F + 0xB8161600, // 001E GETNGBL R5 K11 + 0x8C140B0C, // 001F GETMET R5 R5 K12 + 0x5C1C0800, // 0020 MOVE R7 R4 + 0x58200009, // 0021 LDCONST R8 K9 + 0x542600FE, // 0022 LDINT R9 255 + 0x58280009, // 0023 LDCONST R10 K9 + 0x542E00FD, // 0024 LDINT R11 254 + 0x7C140C00, // 0025 CALL R5 6 + 0x5C100A00, // 0026 MOVE R4 R5 + 0x8814010D, // 0027 GETMBR R5 R0 K13 + 0x20140805, // 0028 NE R5 R4 R5 + 0x78160004, // 0029 JMPF R5 #002F + 0x8C140108, // 002A GETMET R5 R0 K8 + 0x541E0007, // 002B LDINT R7 8 + 0x58200009, // 002C LDCONST R8 K9 + 0x7C140600, // 002D CALL R5 3 + 0x90021A04, // 002E SETMBR R0 K13 R4 + 0x60040003, // 002F GETGBL R1 G3 + 0x5C080000, // 0030 MOVE R2 R0 + 0x7C040200, // 0031 CALL R1 1 + 0x8C04030E, // 0032 GETMET R1 R1 K14 + 0x7C040200, // 0033 CALL R1 1 + 0x80000000, // 0034 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Light1 ********************************************************************/ @@ -801,28 +847,31 @@ extern const bclass be_class_Matter_Plugin_Light0; be_local_class(Matter_Plugin_Light1, 1, &be_class_Matter_Plugin_Light0, - be_nested_map(16, + be_nested_map(18, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update_virtual, 1), be_const_closure(class_Matter_Plugin_Light1_update_virtual_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light1_web_values_closure) }, - { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light1_parse_status_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light1_init_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X201_X20Dimmer) }, - { be_const_key_weak(update_shadow, 6), be_const_closure(class_Matter_Plugin_Light1_update_shadow_closure) }, - { be_const_key_weak(shadow_bri, 15), be_const_var(0) }, + { be_const_key_weak(ARG_HINT, 16), be_nested_str_weak(_X28opt_X29_X20Light_X20number) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(light1) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(257, -1), be_const_int(2) }, + })) ) } )) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(2, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Power), be_nested_str_weak(Bri), })) ) } )) }, - { be_const_key_weak(invoke_request, 2), be_const_closure(class_Matter_Plugin_Light1_invoke_request_closure) }, - { be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_int(257, -1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(CLUSTERS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(web_value_dimmer, 13), be_const_closure(class_Matter_Plugin_Light1_web_value_dimmer_closure) }, + { be_const_key_weak(set_bri, 17), be_const_closure(class_Matter_Plugin_Light1_set_bri_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light1_read_attribute_closure) }, + { be_const_key_weak(parse_configuration, 10), be_const_closure(class_Matter_Plugin_Light1_parse_configuration_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light1_update_virtual_closure) }, + { be_const_key_weak(DISPLAY_NAME, 0), be_nested_str_weak(Light_X201_X20Dimmer) }, + { be_const_key_weak(update_shadow, 12), be_const_closure(class_Matter_Plugin_Light1_update_shadow_closure) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light1_parse_status_closure) }, + { be_const_key_weak(shadow_bri, -1), be_const_var(0) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -921,11 +970,10 @@ be_local_class(Matter_Plugin_Light1, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(set_bri, 8), be_const_closure(class_Matter_Plugin_Light1_set_bri_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light1_read_attribute_closure) }, - { be_const_key_weak(TYPE, 4), be_nested_str_weak(light1) }, - { be_const_key_weak(web_value_dimmer, -1), be_const_closure(class_Matter_Plugin_Light1_web_value_dimmer_closure) }, - { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Light1_parse_configuration_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light1_web_values_closure) }, + { be_const_key_weak(init, 11), be_const_closure(class_Matter_Plugin_Light1_init_closure) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak(light) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light1_invoke_request_closure) }, })), be_str_weak(Matter_Plugin_Light1) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h index 8bbffdf79..4f5fac034 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h @@ -7,12 +7,12 @@ extern const bclass be_class_Matter_Plugin_Light2; /******************************************************************** -** Solidified function: set_ct +** Solidified function: update_virtual ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ +be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -20,174 +20,33 @@ be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light2, 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(ct_min), - /* K1 */ be_nested_str_weak(ct_max), - /* K2 */ be_nested_str_weak(BRIDGE), - /* K3 */ be_nested_str_weak(call_remote_sync), - /* K4 */ be_nested_str_weak(CT), - /* K5 */ be_nested_str_weak(parse_status), - /* K6 */ be_nested_str_weak(VIRTUAL), - /* K7 */ be_nested_str_weak(shadow_ct), - /* K8 */ be_nested_str_weak(attribute_updated), - /* K9 */ be_nested_str_weak(light), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_nested_str_weak(ct), - /* K12 */ be_nested_str_weak(update_shadow), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(CT), + /* K2 */ be_nested_str_weak(set_ct), + /* K3 */ be_nested_str_weak(update_virtual), }), - be_str_weak(set_ct), + be_str_weak(update_virtual), &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x14080202, // 0001 LT R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x24080202, // 0005 GT R2 R1 R2 - 0x780A0000, // 0006 JMPF R2 #0008 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x780A000D, // 0009 JMPF R2 #0018 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 - 0x60140008, // 000C GETGBL R5 G8 - 0x5C180200, // 000D MOVE R6 R1 - 0x7C140200, // 000E CALL R5 1 - 0x7C080600, // 000F CALL R2 3 - 0x4C0C0000, // 0010 LDNIL R3 - 0x200C0403, // 0011 NE R3 R2 R3 - 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0105, // 0013 GETMET R3 R0 K5 - 0x5C140400, // 0014 MOVE R5 R2 - 0x541A000A, // 0015 LDINT R6 11 - 0x7C0C0600, // 0016 CALL R3 3 - 0x70020012, // 0017 JMP #002B - 0x88080106, // 0018 GETMBR R2 R0 K6 - 0x780A0008, // 0019 JMPF R2 #0023 - 0x88080107, // 001A GETMBR R2 R0 K7 - 0x20080202, // 001B NE R2 R1 R2 - 0x780A0004, // 001C JMPF R2 #0022 - 0x8C080108, // 001D GETMET R2 R0 K8 - 0x541202FF, // 001E LDINT R4 768 - 0x54160006, // 001F LDINT R5 7 - 0x7C080600, // 0020 CALL R2 3 - 0x90020E01, // 0021 SETMBR R0 K7 R1 - 0x70020007, // 0022 JMP #002B - 0xA40A1200, // 0023 IMPORT R2 K9 - 0x8C0C050A, // 0024 GETMET R3 R2 K10 - 0x60140013, // 0025 GETGBL R5 G19 - 0x7C140000, // 0026 CALL R5 0 - 0x98161601, // 0027 SETIDX R5 K11 R1 - 0x7C0C0400, // 0028 CALL R3 2 - 0x8C0C010C, // 0029 GETMET R3 R0 K12 - 0x7C0C0200, // 002A CALL R3 1 - 0x80000000, // 002B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(findsubval), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(ct_min), - /* K8 */ be_nested_str_weak(ct_max), - /* K9 */ be_nested_str_weak(set_ct), - /* K10 */ be_nested_str_weak(log), - /* K11 */ be_nested_str_weak(ct_X3A), - /* K12 */ be_nested_str_weak(publish_command), - /* K13 */ be_nested_str_weak(CT), - /* K14 */ be_nested_str_weak(invoke_request), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x541E02FF, // 0004 LDINT R7 768 - 0x1C1C0A07, // 0005 EQ R7 R5 R7 - 0x781E0030, // 0006 JMPF R7 #0038 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 - 0x7C1C0200, // 0008 CALL R7 1 - 0x541E0009, // 0009 LDINT R7 10 - 0x1C1C0C07, // 000A EQ R7 R6 R7 - 0x781E0019, // 000B JMPF R7 #0026 - 0x8C1C0505, // 000C GETMET R7 R2 K5 - 0x58240006, // 000D LDCONST R9 K6 - 0x7C1C0400, // 000E CALL R7 2 - 0x88200107, // 000F GETMBR R8 R0 K7 - 0x14200E08, // 0010 LT R8 R7 R8 - 0x78220000, // 0011 JMPF R8 #0013 - 0x881C0107, // 0012 GETMBR R7 R0 K7 - 0x88200108, // 0013 GETMBR R8 R0 K8 - 0x24200E08, // 0014 GT R8 R7 R8 - 0x78220000, // 0015 JMPF R8 #0017 - 0x881C0108, // 0016 GETMBR R7 R0 K8 - 0x8C200109, // 0017 GETMET R8 R0 K9 - 0x5C280E00, // 0018 MOVE R10 R7 - 0x7C200400, // 0019 CALL R8 2 - 0x60200008, // 001A GETGBL R8 G8 - 0x5C240E00, // 001B MOVE R9 R7 - 0x7C200200, // 001C CALL R8 1 - 0x00221608, // 001D ADD R8 K11 R8 - 0x900E1408, // 001E SETMBR R3 K10 R8 - 0x8C20010C, // 001F GETMET R8 R0 K12 - 0x5828000D, // 0020 LDCONST R10 K13 - 0x5C2C0E00, // 0021 MOVE R11 R7 - 0x7C200600, // 0022 CALL R8 3 - 0x50200200, // 0023 LDBOOL R8 1 0 - 0x80041000, // 0024 RET 1 R8 - 0x70020010, // 0025 JMP #0037 - 0x541E0046, // 0026 LDINT R7 71 - 0x1C1C0C07, // 0027 EQ R7 R6 R7 - 0x781E0002, // 0028 JMPF R7 #002C - 0x501C0200, // 0029 LDBOOL R7 1 0 - 0x80040E00, // 002A RET 1 R7 - 0x7002000A, // 002B JMP #0037 - 0x541E004A, // 002C LDINT R7 75 - 0x1C1C0C07, // 002D EQ R7 R6 R7 - 0x781E0002, // 002E JMPF R7 #0032 - 0x501C0200, // 002F LDBOOL R7 1 0 - 0x80040E00, // 0030 RET 1 R7 - 0x70020004, // 0031 JMP #0037 - 0x541E004B, // 0032 LDINT R7 76 - 0x1C1C0C07, // 0033 EQ R7 R6 R7 - 0x781E0001, // 0034 JMPF R7 #0037 - 0x501C0200, // 0035 LDBOOL R7 1 0 - 0x80040E00, // 0036 RET 1 R7 - 0x70020008, // 0037 JMP #0041 - 0x601C0003, // 0038 GETGBL R7 G3 - 0x5C200000, // 0039 MOVE R8 R0 - 0x7C1C0200, // 003A CALL R7 1 - 0x8C1C0F0E, // 003B GETMET R7 R7 K14 - 0x5C240200, // 003C MOVE R9 R1 - 0x5C280400, // 003D MOVE R10 R2 - 0x5C2C0600, // 003E MOVE R11 R3 - 0x7C1C0800, // 003F CALL R7 4 - 0x80040E00, // 0040 RET 1 R7 - 0x80000000, // 0041 RET 0 + ( &(const binstruction[18]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0300, // 0001 GETMET R3 R1 K0 + 0x58140001, // 0002 LDCONST R5 K1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x7C080200, // 0004 CALL R2 1 + 0x4C0C0000, // 0005 LDNIL R3 + 0x200C0403, // 0006 NE R3 R2 R3 + 0x780E0002, // 0007 JMPF R3 #000B + 0x8C0C0102, // 0008 GETMET R3 R0 K2 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x600C0003, // 000B GETGBL R3 G3 + 0x5C100000, // 000C MOVE R4 R0 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C0703, // 000E GETMET R3 R3 K3 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80000000, // 0011 RET 0 }) ) ); @@ -306,12 +165,89 @@ be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ /******************************************************************** -** Solidified function: update_virtual +** Solidified function: update_shadow ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ +be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ be_nested_proto( - 6, /* nstack */ + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(light), + /* K3 */ be_nested_str_weak(update_ct_minmax), + /* K4 */ be_nested_str_weak(update_shadow), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_nested_str_weak(light_index), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(ct), + /* K9 */ be_nested_str_weak(shadow_ct), + /* K10 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060020, // 0001 JMPT R1 #0023 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x7406001E, // 0003 JMPT R1 #0023 + 0xA4060400, // 0004 IMPORT R1 K2 + 0x8C080103, // 0005 GETMET R2 R0 K3 + 0x7C080200, // 0006 CALL R2 1 + 0x60080003, // 0007 GETGBL R2 G3 + 0x5C0C0000, // 0008 MOVE R3 R0 + 0x7C080200, // 0009 CALL R2 1 + 0x8C080504, // 000A GETMET R2 R2 K4 + 0x7C080200, // 000B CALL R2 1 + 0x8C080305, // 000C GETMET R2 R1 K5 + 0x88100106, // 000D GETMBR R4 R0 K6 + 0x7C080400, // 000E CALL R2 2 + 0x4C0C0000, // 000F LDNIL R3 + 0x200C0403, // 0010 NE R3 R2 R3 + 0x780E000F, // 0011 JMPF R3 #0022 + 0x8C0C0507, // 0012 GETMET R3 R2 K7 + 0x58140008, // 0013 LDCONST R5 K8 + 0x4C180000, // 0014 LDNIL R6 + 0x7C0C0600, // 0015 CALL R3 3 + 0x4C100000, // 0016 LDNIL R4 + 0x1C100604, // 0017 EQ R4 R3 R4 + 0x78120000, // 0018 JMPF R4 #001A + 0x880C0109, // 0019 GETMBR R3 R0 K9 + 0x88100109, // 001A GETMBR R4 R0 K9 + 0x20100604, // 001B NE R4 R3 R4 + 0x78120004, // 001C JMPF R4 #0022 + 0x8C10010A, // 001D GETMET R4 R0 K10 + 0x541A02FF, // 001E LDINT R6 768 + 0x541E0006, // 001F LDINT R7 7 + 0x7C100600, // 0020 CALL R4 3 + 0x90021203, // 0021 SETMBR R0 K9 R3 + 0x70020004, // 0022 JMP #0028 + 0x60040003, // 0023 GETGBL R1 G3 + 0x5C080000, // 0024 MOVE R2 R0 + 0x7C040200, // 0025 CALL R1 1 + 0x8C040304, // 0026 GETMET R1 R1 K4 + 0x7C040200, // 0027 CALL R1 1 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_ct +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ + be_nested_proto( + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -319,170 +255,70 @@ be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light2, 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(CT), - /* K2 */ be_nested_str_weak(set_ct), - /* K3 */ be_nested_str_weak(update_virtual), + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(ct_min), + /* K1 */ be_nested_str_weak(ct_max), + /* K2 */ be_nested_str_weak(BRIDGE), + /* K3 */ be_nested_str_weak(call_remote_sync), + /* K4 */ be_nested_str_weak(CT), + /* K5 */ be_nested_str_weak(parse_status), + /* K6 */ be_nested_str_weak(VIRTUAL), + /* K7 */ be_nested_str_weak(shadow_ct), + /* K8 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_nested_str_weak(light), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_nested_str_weak(ct), + /* K12 */ be_nested_str_weak(light_index), + /* K13 */ be_nested_str_weak(update_shadow), }), - be_str_weak(update_virtual), + be_str_weak(set_ct), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0300, // 0001 GETMET R3 R1 K0 - 0x58140001, // 0002 LDCONST R5 K1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x7C080200, // 0004 CALL R2 1 - 0x4C0C0000, // 0005 LDNIL R3 - 0x200C0403, // 0006 NE R3 R2 R3 - 0x780E0002, // 0007 JMPF R3 #000B - 0x8C0C0102, // 0008 GETMET R3 R0 K2 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x600C0003, // 000B GETGBL R3 G3 - 0x5C100000, // 000C MOVE R4 R0 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0703, // 000E GETMET R3 R3 K3 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_ct_minmax -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(get_option), - /* K2 */ be_nested_str_weak(ct_min), - /* K3 */ be_nested_str_weak(ct_max), - }), - be_str_weak(update_ct_minmax), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x540E0051, // 0002 LDINT R3 82 - 0x7C040400, // 0003 CALL R1 2 - 0x78060001, // 0004 JMPF R1 #0007 - 0x540A00C7, // 0005 LDINT R2 200 - 0x70020000, // 0006 JMP #0008 - 0x540A0098, // 0007 LDINT R2 153 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0x78060001, // 0009 JMPF R1 #000C - 0x540A017B, // 000A LDINT R2 380 - 0x70020000, // 000B JMP #000D - 0x540A01F3, // 000C LDINT R2 500 - 0x90020602, // 000D SETMBR R0 K3 R2 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(shadow_ct), - /* K3 */ be_nested_str_weak(update_ct_minmax), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x88100101, // 0008 GETMBR R4 R0 K1 - 0x74120001, // 0009 JMPT R4 #000C - 0x54120144, // 000A LDINT R4 325 - 0x90020404, // 000B SETMBR R0 K2 R4 - 0x8C100103, // 000C GETMET R4 R0 K3 - 0x7C100200, // 000D CALL R4 1 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_values -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(web_value_dimmer), - /* K7 */ be_nested_str_weak(web_value_ct), - }), - be_str_weak(web_values), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 - 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0106, // 0009 GETMET R7 R0 K6 - 0x7C1C0200, // 000A CALL R7 1 - 0x8C200107, // 000B GETMET R8 R0 K7 - 0x7C200200, // 000C CALL R8 1 - 0x7C100800, // 000D CALL R4 4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 + ( &(const binstruction[45]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x14080202, // 0001 LT R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x88040100, // 0003 GETMBR R1 R0 K0 + 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x24080202, // 0005 GT R2 R1 R2 + 0x780A0000, // 0006 JMPF R2 #0008 + 0x88040101, // 0007 GETMBR R1 R0 K1 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x780A000D, // 0009 JMPF R2 #0018 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x58100004, // 000B LDCONST R4 K4 + 0x60140008, // 000C GETGBL R5 G8 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C140200, // 000E CALL R5 1 + 0x7C080600, // 000F CALL R2 3 + 0x4C0C0000, // 0010 LDNIL R3 + 0x200C0403, // 0011 NE R3 R2 R3 + 0x780E0003, // 0012 JMPF R3 #0017 + 0x8C0C0105, // 0013 GETMET R3 R0 K5 + 0x5C140400, // 0014 MOVE R5 R2 + 0x541A000A, // 0015 LDINT R6 11 + 0x7C0C0600, // 0016 CALL R3 3 + 0x70020013, // 0017 JMP #002C + 0x88080106, // 0018 GETMBR R2 R0 K6 + 0x780A0008, // 0019 JMPF R2 #0023 + 0x88080107, // 001A GETMBR R2 R0 K7 + 0x20080202, // 001B NE R2 R1 R2 + 0x780A0004, // 001C JMPF R2 #0022 + 0x8C080108, // 001D GETMET R2 R0 K8 + 0x541202FF, // 001E LDINT R4 768 + 0x54160006, // 001F LDINT R5 7 + 0x7C080600, // 0020 CALL R2 3 + 0x90020E01, // 0021 SETMBR R0 K7 R1 + 0x70020008, // 0022 JMP #002C + 0xA40A1200, // 0023 IMPORT R2 K9 + 0x8C0C050A, // 0024 GETMET R3 R2 K10 + 0x60140013, // 0025 GETGBL R5 G19 + 0x7C140000, // 0026 CALL R5 0 + 0x98161601, // 0027 SETIDX R5 K11 R1 + 0x8818010C, // 0028 GETMBR R6 R0 K12 + 0x7C0C0600, // 0029 CALL R3 3 + 0x8C0C010D, // 002A GETMET R3 R0 K13 + 0x7C0C0200, // 002B CALL R3 1 + 0x80000000, // 002C RET 0 }) ) ); @@ -607,12 +443,12 @@ be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */ /******************************************************************** -** Solidified function: update_shadow +** Solidified function: web_values ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light2; -be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ +be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */ be_nested_proto( - 8, /* nstack */ + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -620,61 +456,241 @@ be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light2, 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(update_ct_minmax), - /* K4 */ be_nested_str_weak(update_shadow), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(ct), - /* K8 */ be_nested_str_weak(shadow_ct), - /* K9 */ be_nested_str_weak(attribute_updated), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(webserver), + /* K1 */ be_nested_str_weak(web_values_prefix), + /* K2 */ be_nested_str_weak(content_send), + /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K4 */ be_nested_str_weak(web_value_onoff), + /* K5 */ be_nested_str_weak(shadow_onoff), + /* K6 */ be_nested_str_weak(web_value_dimmer), + /* K7 */ be_nested_str_weak(web_value_ct), }), - be_str_weak(update_shadow), + be_str_weak(web_values), &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x7406001F, // 0001 JMPT R1 #0022 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x7406001D, // 0003 JMPT R1 #0022 - 0xA4060400, // 0004 IMPORT R1 K2 - 0x8C080103, // 0005 GETMET R2 R0 K3 - 0x7C080200, // 0006 CALL R2 1 - 0x60080003, // 0007 GETGBL R2 G3 - 0x5C0C0000, // 0008 MOVE R3 R0 - 0x7C080200, // 0009 CALL R2 1 - 0x8C080504, // 000A GETMET R2 R2 K4 - 0x7C080200, // 000B CALL R2 1 - 0x8C080305, // 000C GETMET R2 R1 K5 - 0x7C080200, // 000D CALL R2 1 - 0x4C0C0000, // 000E LDNIL R3 - 0x200C0403, // 000F NE R3 R2 R3 - 0x780E000F, // 0010 JMPF R3 #0021 - 0x8C0C0506, // 0011 GETMET R3 R2 K6 - 0x58140007, // 0012 LDCONST R5 K7 - 0x4C180000, // 0013 LDNIL R6 - 0x7C0C0600, // 0014 CALL R3 3 - 0x4C100000, // 0015 LDNIL R4 - 0x1C100604, // 0016 EQ R4 R3 R4 - 0x78120000, // 0017 JMPF R4 #0019 - 0x880C0108, // 0018 GETMBR R3 R0 K8 - 0x88100108, // 0019 GETMBR R4 R0 K8 - 0x20100604, // 001A NE R4 R3 R4 - 0x78120004, // 001B JMPF R4 #0021 - 0x8C100109, // 001C GETMET R4 R0 K9 - 0x541A02FF, // 001D LDINT R6 768 - 0x541E0006, // 001E LDINT R7 7 - 0x7C100600, // 001F CALL R4 3 - 0x90021003, // 0020 SETMBR R0 K8 R3 - 0x70020004, // 0021 JMP #0027 - 0x60040003, // 0022 GETGBL R1 G3 - 0x5C080000, // 0023 MOVE R2 R0 - 0x7C040200, // 0024 CALL R1 1 - 0x8C040304, // 0025 GETMET R1 R1 K4 - 0x7C040200, // 0026 CALL R1 1 - 0x80000000, // 0027 RET 0 + ( &(const binstruction[16]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x60100018, // 0004 GETGBL R4 G24 + 0x58140003, // 0005 LDCONST R5 K3 + 0x8C180104, // 0006 GETMET R6 R0 K4 + 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x7C180400, // 0008 CALL R6 2 + 0x8C1C0106, // 0009 GETMET R7 R0 K6 + 0x7C1C0200, // 000A CALL R7 1 + 0x8C200107, // 000B GETMET R8 R0 K7 + 0x7C200200, // 000C CALL R8 1 + 0x7C100800, // 000D CALL R4 4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(shadow_ct), + /* K3 */ be_nested_str_weak(light), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(light_index), + /* K7 */ be_nested_str_weak(update_ct_minmax), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x74120009, // 0009 JMPT R4 #0014 + 0x54120144, // 000A LDINT R4 325 + 0x90020404, // 000B SETMBR R0 K2 R4 + 0xA4120600, // 000C IMPORT R4 K3 + 0x8C140904, // 000D GETMET R5 R4 K4 + 0x581C0005, // 000E LDCONST R7 K5 + 0x7C140400, // 000F CALL R5 2 + 0x4C180000, // 0010 LDNIL R6 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x78160000, // 0012 JMPF R5 #0014 + 0x90020D05, // 0013 SETMBR R0 K6 K5 + 0x8C100107, // 0014 GETMET R4 R0 K7 + 0x7C100200, // 0015 CALL R4 1 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(command), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_nested_str_weak(findsubval), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(ct_min), + /* K8 */ be_nested_str_weak(ct_max), + /* K9 */ be_nested_str_weak(set_ct), + /* K10 */ be_nested_str_weak(log), + /* K11 */ be_nested_str_weak(ct_X3A), + /* K12 */ be_nested_str_weak(publish_command), + /* K13 */ be_nested_str_weak(CT), + /* K14 */ be_nested_str_weak(invoke_request), + }), + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[66]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140702, // 0002 GETMBR R5 R3 K2 + 0x88180703, // 0003 GETMBR R6 R3 K3 + 0x541E02FF, // 0004 LDINT R7 768 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0030, // 0006 JMPF R7 #0038 + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x541E0009, // 0009 LDINT R7 10 + 0x1C1C0C07, // 000A EQ R7 R6 R7 + 0x781E0019, // 000B JMPF R7 #0026 + 0x8C1C0505, // 000C GETMET R7 R2 K5 + 0x58240006, // 000D LDCONST R9 K6 + 0x7C1C0400, // 000E CALL R7 2 + 0x88200107, // 000F GETMBR R8 R0 K7 + 0x14200E08, // 0010 LT R8 R7 R8 + 0x78220000, // 0011 JMPF R8 #0013 + 0x881C0107, // 0012 GETMBR R7 R0 K7 + 0x88200108, // 0013 GETMBR R8 R0 K8 + 0x24200E08, // 0014 GT R8 R7 R8 + 0x78220000, // 0015 JMPF R8 #0017 + 0x881C0108, // 0016 GETMBR R7 R0 K8 + 0x8C200109, // 0017 GETMET R8 R0 K9 + 0x5C280E00, // 0018 MOVE R10 R7 + 0x7C200400, // 0019 CALL R8 2 + 0x60200008, // 001A GETGBL R8 G8 + 0x5C240E00, // 001B MOVE R9 R7 + 0x7C200200, // 001C CALL R8 1 + 0x00221608, // 001D ADD R8 K11 R8 + 0x900E1408, // 001E SETMBR R3 K10 R8 + 0x8C20010C, // 001F GETMET R8 R0 K12 + 0x5828000D, // 0020 LDCONST R10 K13 + 0x5C2C0E00, // 0021 MOVE R11 R7 + 0x7C200600, // 0022 CALL R8 3 + 0x50200200, // 0023 LDBOOL R8 1 0 + 0x80041000, // 0024 RET 1 R8 + 0x70020010, // 0025 JMP #0037 + 0x541E0046, // 0026 LDINT R7 71 + 0x1C1C0C07, // 0027 EQ R7 R6 R7 + 0x781E0002, // 0028 JMPF R7 #002C + 0x501C0200, // 0029 LDBOOL R7 1 0 + 0x80040E00, // 002A RET 1 R7 + 0x7002000A, // 002B JMP #0037 + 0x541E004A, // 002C LDINT R7 75 + 0x1C1C0C07, // 002D EQ R7 R6 R7 + 0x781E0002, // 002E JMPF R7 #0032 + 0x501C0200, // 002F LDBOOL R7 1 0 + 0x80040E00, // 0030 RET 1 R7 + 0x70020004, // 0031 JMP #0037 + 0x541E004B, // 0032 LDINT R7 76 + 0x1C1C0C07, // 0033 EQ R7 R6 R7 + 0x781E0001, // 0034 JMPF R7 #0037 + 0x501C0200, // 0035 LDBOOL R7 1 0 + 0x80040E00, // 0036 RET 1 R7 + 0x70020008, // 0037 JMP #0041 + 0x601C0003, // 0038 GETGBL R7 G3 + 0x5C200000, // 0039 MOVE R8 R0 + 0x7C1C0200, // 003A CALL R7 1 + 0x8C1C0F0E, // 003B GETMET R7 R7 K14 + 0x5C240200, // 003C MOVE R9 R1 + 0x5C280400, // 003D MOVE R10 R2 + 0x5C2C0600, // 003E MOVE R11 R3 + 0x7C1C0800, // 003F CALL R7 4 + 0x80040E00, // 0040 RET 1 R7 + 0x80000000, // 0041 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_ct_minmax +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light2; +be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light2, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(get_option), + /* K2 */ be_nested_str_weak(ct_min), + /* K3 */ be_nested_str_weak(ct_max), + }), + be_str_weak(update_ct_minmax), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x540E0051, // 0002 LDINT R3 82 + 0x7C040400, // 0003 CALL R1 2 + 0x78060001, // 0004 JMPF R1 #0007 + 0x540A00C7, // 0005 LDINT R2 200 + 0x70020000, // 0006 JMP #0008 + 0x540A0098, // 0007 LDINT R2 153 + 0x90020402, // 0008 SETMBR R0 K2 R2 + 0x78060001, // 0009 JMPF R1 #000C + 0x540A017B, // 000A LDINT R2 380 + 0x70020000, // 000B JMP #000D + 0x540A01F3, // 000C LDINT R2 500 + 0x90020602, // 000D SETMBR R0 K3 R2 + 0x80000000, // 000E RET 0 }) ) ); @@ -688,22 +704,26 @@ extern const bclass be_class_Matter_Plugin_Light1; be_local_class(Matter_Plugin_Light2, 3, &be_class_Matter_Plugin_Light1, - be_nested_map(18, + be_nested_map(20, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light2_update_shadow_closure) }, - { be_const_key_weak(set_ct, 13), be_const_closure(class_Matter_Plugin_Light2_set_ct_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light2_update_virtual_closure) }, + { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Light_X202_X20CT) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) }, + { be_const_key_weak(ct_max, 18), be_const_var(2) }, + { be_const_key_weak(ARG, -1), be_nested_str_weak() }, + { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(shadow_ct, -1), be_const_var(0) }, + { be_const_key_weak(set_ct, 16), be_const_closure(class_Matter_Plugin_Light2_set_ct_closure) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(light2) }, + { be_const_key_weak(update_shadow, 8), be_const_closure(class_Matter_Plugin_Light2_update_shadow_closure) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(268, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(UPDATE_COMMANDS, 17), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(3, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(Power), - be_nested_str_weak(Bri), - be_nested_str_weak(CT), - })) ) } )) }, + { be_const_key_weak(web_value_ct, -1), be_const_closure(class_Matter_Plugin_Light2_web_value_ct_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light2_web_values_closure) }, + { be_const_key_weak(ct_min, -1), be_const_var(1) }, { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { @@ -818,19 +838,17 @@ be_local_class(Matter_Plugin_Light2, be_const_int(65533), })) ) } )) }, })) ) } )) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light2_init_closure) }, { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light2_invoke_request_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) }, - { be_const_key_weak(shadow_ct, 0), be_const_var(0) }, - { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light2_update_virtual_closure) }, - { be_const_key_weak(DISPLAY_NAME, 16), be_nested_str_weak(Light_X202_X20CT) }, - { be_const_key_weak(web_value_ct, 11), be_const_closure(class_Matter_Plugin_Light2_web_value_ct_closure) }, - { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light2_parse_status_closure) }, - { be_const_key_weak(TYPE, -1), be_nested_str_weak(light2) }, - { be_const_key_weak(ct_min, 12), be_const_var(1) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light2_web_values_closure) }, - { be_const_key_weak(init, 10), be_const_closure(class_Matter_Plugin_Light2_init_closure) }, { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Light2_update_ct_minmax_closure) }, - { be_const_key_weak(ct_max, -1), be_const_var(2) }, + { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light2_parse_status_closure) }, + { be_const_key_weak(UPDATE_COMMANDS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(3, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(Power), + be_nested_str_weak(Bri), + be_nested_str_weak(CT), + })) ) } )) }, })), be_str_weak(Matter_Plugin_Light2) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h index dd07df607..93e3887ba 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h @@ -6,70 +6,13 @@ extern const bclass be_class_Matter_Plugin_Light3; -/******************************************************************** -** Solidified function: update_virtual -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; -be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Hue), - /* K2 */ be_nested_str_weak(Sat), - /* K3 */ be_nested_str_weak(set_hue_sat), - /* K4 */ be_nested_str_weak(update_virtual), - }), - be_str_weak(update_virtual), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0300, // 0001 GETMET R3 R1 K0 - 0x58140001, // 0002 LDCONST R5 K1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x7C080200, // 0004 CALL R2 1 - 0x600C0009, // 0005 GETGBL R3 G9 - 0x8C100300, // 0006 GETMET R4 R1 K0 - 0x58180002, // 0007 LDCONST R6 K2 - 0x7C100400, // 0008 CALL R4 2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x4C100000, // 000A LDNIL R4 - 0x20100404, // 000B NE R4 R2 R4 - 0x74120002, // 000C JMPT R4 #0010 - 0x4C100000, // 000D LDNIL R4 - 0x20100604, // 000E NE R4 R3 R4 - 0x78120003, // 000F JMPF R4 #0014 - 0x8C100103, // 0010 GETMET R4 R0 K3 - 0x5C180400, // 0011 MOVE R6 R2 - 0x5C1C0600, // 0012 MOVE R7 R3 - 0x7C100600, // 0013 CALL R4 3 - 0x60100003, // 0014 GETGBL R4 G3 - 0x5C140000, // 0015 MOVE R5 R0 - 0x7C100200, // 0016 CALL R4 1 - 0x8C100904, // 0017 GETMET R4 R4 K4 - 0x5C180200, // 0018 MOVE R6 R1 - 0x7C100400, // 0019 CALL R4 2 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */ be_nested_proto( - 16, /* nstack */ + 15, /* nstack */ 4, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -77,694 +20,151 @@ be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */ 0, /* has sup protos */ &be_class_Matter_Plugin_Light3, 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(light), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(update_shadow_lazy), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(findsubval), - /* K8 */ be_nested_str_weak(set_hue_sat), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(hue_X3A), - /* K11 */ be_nested_str_weak(publish_command), - /* K12 */ be_nested_str_weak(Hue), - /* K13 */ be_const_int(1), - /* K14 */ be_const_int(2), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(sat_X3A), - /* K17 */ be_nested_str_weak(Sat), - /* K18 */ be_nested_str_weak(_X20sat_X3A), - /* K19 */ be_nested_str_weak(invoke_request), + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(command), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(findsubval), + /* K7 */ be_nested_str_weak(set_hue_sat), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(hue_X3A), + /* K10 */ be_nested_str_weak(publish_command), + /* K11 */ be_nested_str_weak(Hue), + /* K12 */ be_const_int(1), + /* K13 */ be_const_int(2), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(sat_X3A), + /* K16 */ be_nested_str_weak(Sat), + /* K17 */ be_nested_str_weak(_X20sat_X3A), + /* K18 */ be_nested_str_weak(invoke_request), }), be_str_weak(invoke_request), &be_const_str_solidified, - ( &(const binstruction[122]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0xB8160200, // 0001 GETNGBL R5 K1 - 0x88140B02, // 0002 GETMBR R5 R5 K2 + ( &(const binstruction[121]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140702, // 0002 GETMBR R5 R3 K2 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C0704, // 0004 GETMBR R7 R3 K4 - 0x542202FF, // 0005 LDINT R8 768 - 0x1C200C08, // 0006 EQ R8 R6 R8 - 0x78220067, // 0007 JMPF R8 #0070 - 0x8C200105, // 0008 GETMET R8 R0 K5 - 0x7C200200, // 0009 CALL R8 1 - 0x1C200F06, // 000A EQ R8 R7 K6 - 0x78220012, // 000B JMPF R8 #001F - 0x8C200507, // 000C GETMET R8 R2 K7 - 0x58280006, // 000D LDCONST R10 K6 - 0x7C200400, // 000E CALL R8 2 - 0x8C240108, // 000F GETMET R9 R0 K8 - 0x5C2C1000, // 0010 MOVE R11 R8 - 0x4C300000, // 0011 LDNIL R12 - 0x7C240600, // 0012 CALL R9 3 - 0x60240008, // 0013 GETGBL R9 G8 - 0x5C281000, // 0014 MOVE R10 R8 - 0x7C240200, // 0015 CALL R9 1 - 0x00261409, // 0016 ADD R9 K10 R9 - 0x900E1209, // 0017 SETMBR R3 K9 R9 - 0x8C24010B, // 0018 GETMET R9 R0 K11 - 0x582C000C, // 0019 LDCONST R11 K12 - 0x5C301000, // 001A MOVE R12 R8 - 0x7C240600, // 001B CALL R9 3 - 0x50240200, // 001C LDBOOL R9 1 0 - 0x80041200, // 001D RET 1 R9 - 0x7002004F, // 001E JMP #006F - 0x1C200F0D, // 001F EQ R8 R7 K13 - 0x78220002, // 0020 JMPF R8 #0024 - 0x50200200, // 0021 LDBOOL R8 1 0 - 0x80041000, // 0022 RET 1 R8 - 0x7002004A, // 0023 JMP #006F - 0x1C200F0E, // 0024 EQ R8 R7 K14 - 0x78220002, // 0025 JMPF R8 #0029 - 0x50200200, // 0026 LDBOOL R8 1 0 - 0x80041000, // 0027 RET 1 R8 - 0x70020045, // 0028 JMP #006F - 0x1C200F0F, // 0029 EQ R8 R7 K15 - 0x78220012, // 002A JMPF R8 #003E - 0x8C200507, // 002B GETMET R8 R2 K7 - 0x58280006, // 002C LDCONST R10 K6 - 0x7C200400, // 002D CALL R8 2 - 0x8C240108, // 002E GETMET R9 R0 K8 - 0x4C2C0000, // 002F LDNIL R11 - 0x5C301000, // 0030 MOVE R12 R8 - 0x7C240600, // 0031 CALL R9 3 - 0x60240008, // 0032 GETGBL R9 G8 - 0x5C281000, // 0033 MOVE R10 R8 - 0x7C240200, // 0034 CALL R9 1 - 0x00262009, // 0035 ADD R9 K16 R9 - 0x900E1209, // 0036 SETMBR R3 K9 R9 - 0x8C24010B, // 0037 GETMET R9 R0 K11 - 0x582C0011, // 0038 LDCONST R11 K17 - 0x5C301000, // 0039 MOVE R12 R8 - 0x7C240600, // 003A CALL R9 3 - 0x50240200, // 003B LDBOOL R9 1 0 - 0x80041200, // 003C RET 1 R9 - 0x70020030, // 003D JMP #006F - 0x54220003, // 003E LDINT R8 4 - 0x1C200E08, // 003F EQ R8 R7 R8 - 0x78220002, // 0040 JMPF R8 #0044 - 0x50200200, // 0041 LDBOOL R8 1 0 - 0x80041000, // 0042 RET 1 R8 - 0x7002002A, // 0043 JMP #006F - 0x54220004, // 0044 LDINT R8 5 - 0x1C200E08, // 0045 EQ R8 R7 R8 - 0x78220002, // 0046 JMPF R8 #004A - 0x50200200, // 0047 LDBOOL R8 1 0 - 0x80041000, // 0048 RET 1 R8 - 0x70020024, // 0049 JMP #006F - 0x54220005, // 004A LDINT R8 6 - 0x1C200E08, // 004B EQ R8 R7 R8 - 0x7822001C, // 004C JMPF R8 #006A - 0x8C200507, // 004D GETMET R8 R2 K7 - 0x58280006, // 004E LDCONST R10 K6 - 0x7C200400, // 004F CALL R8 2 - 0x8C240507, // 0050 GETMET R9 R2 K7 - 0x582C000D, // 0051 LDCONST R11 K13 - 0x7C240400, // 0052 CALL R9 2 - 0x8C280108, // 0053 GETMET R10 R0 K8 + 0x541E02FF, // 0004 LDINT R7 768 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0067, // 0006 JMPF R7 #006F + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x7C1C0200, // 0008 CALL R7 1 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x781E0012, // 000A JMPF R7 #001E + 0x8C1C0506, // 000B GETMET R7 R2 K6 + 0x58240005, // 000C LDCONST R9 K5 + 0x7C1C0400, // 000D CALL R7 2 + 0x8C200107, // 000E GETMET R8 R0 K7 + 0x5C280E00, // 000F MOVE R10 R7 + 0x4C2C0000, // 0010 LDNIL R11 + 0x7C200600, // 0011 CALL R8 3 + 0x60200008, // 0012 GETGBL R8 G8 + 0x5C240E00, // 0013 MOVE R9 R7 + 0x7C200200, // 0014 CALL R8 1 + 0x00221208, // 0015 ADD R8 K9 R8 + 0x900E1008, // 0016 SETMBR R3 K8 R8 + 0x8C20010A, // 0017 GETMET R8 R0 K10 + 0x5828000B, // 0018 LDCONST R10 K11 + 0x5C2C0E00, // 0019 MOVE R11 R7 + 0x7C200600, // 001A CALL R8 3 + 0x50200200, // 001B LDBOOL R8 1 0 + 0x80041000, // 001C RET 1 R8 + 0x7002004F, // 001D JMP #006E + 0x1C1C0D0C, // 001E EQ R7 R6 K12 + 0x781E0002, // 001F JMPF R7 #0023 + 0x501C0200, // 0020 LDBOOL R7 1 0 + 0x80040E00, // 0021 RET 1 R7 + 0x7002004A, // 0022 JMP #006E + 0x1C1C0D0D, // 0023 EQ R7 R6 K13 + 0x781E0002, // 0024 JMPF R7 #0028 + 0x501C0200, // 0025 LDBOOL R7 1 0 + 0x80040E00, // 0026 RET 1 R7 + 0x70020045, // 0027 JMP #006E + 0x1C1C0D0E, // 0028 EQ R7 R6 K14 + 0x781E0012, // 0029 JMPF R7 #003D + 0x8C1C0506, // 002A GETMET R7 R2 K6 + 0x58240005, // 002B LDCONST R9 K5 + 0x7C1C0400, // 002C CALL R7 2 + 0x8C200107, // 002D GETMET R8 R0 K7 + 0x4C280000, // 002E LDNIL R10 + 0x5C2C0E00, // 002F MOVE R11 R7 + 0x7C200600, // 0030 CALL R8 3 + 0x60200008, // 0031 GETGBL R8 G8 + 0x5C240E00, // 0032 MOVE R9 R7 + 0x7C200200, // 0033 CALL R8 1 + 0x00221E08, // 0034 ADD R8 K15 R8 + 0x900E1008, // 0035 SETMBR R3 K8 R8 + 0x8C20010A, // 0036 GETMET R8 R0 K10 + 0x58280010, // 0037 LDCONST R10 K16 + 0x5C2C0E00, // 0038 MOVE R11 R7 + 0x7C200600, // 0039 CALL R8 3 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x80041000, // 003B RET 1 R8 + 0x70020030, // 003C JMP #006E + 0x541E0003, // 003D LDINT R7 4 + 0x1C1C0C07, // 003E EQ R7 R6 R7 + 0x781E0002, // 003F JMPF R7 #0043 + 0x501C0200, // 0040 LDBOOL R7 1 0 + 0x80040E00, // 0041 RET 1 R7 + 0x7002002A, // 0042 JMP #006E + 0x541E0004, // 0043 LDINT R7 5 + 0x1C1C0C07, // 0044 EQ R7 R6 R7 + 0x781E0002, // 0045 JMPF R7 #0049 + 0x501C0200, // 0046 LDBOOL R7 1 0 + 0x80040E00, // 0047 RET 1 R7 + 0x70020024, // 0048 JMP #006E + 0x541E0005, // 0049 LDINT R7 6 + 0x1C1C0C07, // 004A EQ R7 R6 R7 + 0x781E001C, // 004B JMPF R7 #0069 + 0x8C1C0506, // 004C GETMET R7 R2 K6 + 0x58240005, // 004D LDCONST R9 K5 + 0x7C1C0400, // 004E CALL R7 2 + 0x8C200506, // 004F GETMET R8 R2 K6 + 0x5828000C, // 0050 LDCONST R10 K12 + 0x7C200400, // 0051 CALL R8 2 + 0x8C240107, // 0052 GETMET R9 R0 K7 + 0x5C2C0E00, // 0053 MOVE R11 R7 0x5C301000, // 0054 MOVE R12 R8 - 0x5C341200, // 0055 MOVE R13 R9 - 0x7C280600, // 0056 CALL R10 3 - 0x60280008, // 0057 GETGBL R10 G8 - 0x5C2C1000, // 0058 MOVE R11 R8 - 0x7C280200, // 0059 CALL R10 1 - 0x002A140A, // 005A ADD R10 K10 R10 - 0x00281512, // 005B ADD R10 R10 K18 - 0x602C0008, // 005C GETGBL R11 G8 - 0x5C301200, // 005D MOVE R12 R9 - 0x7C2C0200, // 005E CALL R11 1 - 0x0028140B, // 005F ADD R10 R10 R11 - 0x900E120A, // 0060 SETMBR R3 K9 R10 - 0x8C28010B, // 0061 GETMET R10 R0 K11 - 0x5830000C, // 0062 LDCONST R12 K12 - 0x5C341000, // 0063 MOVE R13 R8 - 0x58380011, // 0064 LDCONST R14 K17 - 0x5C3C1200, // 0065 MOVE R15 R9 - 0x7C280A00, // 0066 CALL R10 5 - 0x50280200, // 0067 LDBOOL R10 1 0 - 0x80041400, // 0068 RET 1 R10 - 0x70020004, // 0069 JMP #006F - 0x54220046, // 006A LDINT R8 71 - 0x1C200E08, // 006B EQ R8 R7 R8 - 0x78220001, // 006C JMPF R8 #006F - 0x50200200, // 006D LDBOOL R8 1 0 - 0x80041000, // 006E RET 1 R8 - 0x70020008, // 006F JMP #0079 - 0x60200003, // 0070 GETGBL R8 G3 - 0x5C240000, // 0071 MOVE R9 R0 - 0x7C200200, // 0072 CALL R8 1 - 0x8C201113, // 0073 GETMET R8 R8 K19 - 0x5C280200, // 0074 MOVE R10 R1 - 0x5C2C0400, // 0075 MOVE R11 R2 - 0x5C300600, // 0076 MOVE R12 R3 - 0x7C200800, // 0077 CALL R8 4 - 0x80041000, // 0078 RET 1 R8 - 0x80000000, // 0079 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; -be_local_closure(class_Matter_Plugin_Light3_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_hue), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(shadow_sat), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60100003, // 0000 GETGBL R4 G3 - 0x5C140000, // 0001 MOVE R5 R0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 - 0x5C180200, // 0004 MOVE R6 R1 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x5C200600, // 0006 MOVE R8 R3 - 0x7C100800, // 0007 CALL R4 4 - 0x90020302, // 0008 SETMBR R0 K1 K2 - 0x90020702, // 0009 SETMBR R0 K3 K2 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_shadow -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; -be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(update_shadow), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(hue), - /* K7 */ be_nested_str_weak(sat), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(shadow_hue), - /* K12 */ be_nested_str_weak(shadow_sat), - /* K13 */ be_nested_str_weak(attribute_updated), - /* K14 */ be_const_int(1), - }), - be_str_weak(update_shadow), - &be_const_str_solidified, - ( &(const binstruction[74]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x74060041, // 0001 JMPT R1 #0044 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x7406003F, // 0003 JMPT R1 #0044 - 0xA4060400, // 0004 IMPORT R1 K2 - 0x60080003, // 0005 GETGBL R2 G3 - 0x5C0C0000, // 0006 MOVE R3 R0 - 0x7C080200, // 0007 CALL R2 1 - 0x8C080503, // 0008 GETMET R2 R2 K3 - 0x7C080200, // 0009 CALL R2 1 - 0x8C080304, // 000A GETMET R2 R1 K4 - 0x7C080200, // 000B CALL R2 1 - 0x4C0C0000, // 000C LDNIL R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0033, // 000E JMPF R3 #0043 - 0x8C0C0505, // 000F GETMET R3 R2 K5 - 0x58140006, // 0010 LDCONST R5 K6 - 0x4C180000, // 0011 LDNIL R6 - 0x7C0C0600, // 0012 CALL R3 3 - 0x8C100505, // 0013 GETMET R4 R2 K5 - 0x58180007, // 0014 LDCONST R6 K7 - 0x4C1C0000, // 0015 LDNIL R7 - 0x7C100600, // 0016 CALL R4 3 - 0x4C140000, // 0017 LDNIL R5 - 0x20140605, // 0018 NE R5 R3 R5 - 0x78160009, // 0019 JMPF R5 #0024 - 0xB8161000, // 001A GETNGBL R5 K8 - 0x8C140B09, // 001B GETMET R5 R5 K9 - 0x5C1C0600, // 001C MOVE R7 R3 - 0x5820000A, // 001D LDCONST R8 K10 - 0x54260167, // 001E LDINT R9 360 - 0x5828000A, // 001F LDCONST R10 K10 - 0x542E00FD, // 0020 LDINT R11 254 - 0x7C140C00, // 0021 CALL R5 6 - 0x5C0C0A00, // 0022 MOVE R3 R5 - 0x70020000, // 0023 JMP #0025 - 0x880C010B, // 0024 GETMBR R3 R0 K11 - 0x4C140000, // 0025 LDNIL R5 - 0x20140805, // 0026 NE R5 R4 R5 - 0x78160009, // 0027 JMPF R5 #0032 - 0xB8161000, // 0028 GETNGBL R5 K8 - 0x8C140B09, // 0029 GETMET R5 R5 K9 - 0x5C1C0800, // 002A MOVE R7 R4 - 0x5820000A, // 002B LDCONST R8 K10 - 0x542600FE, // 002C LDINT R9 255 - 0x5828000A, // 002D LDCONST R10 K10 - 0x542E00FD, // 002E LDINT R11 254 - 0x7C140C00, // 002F CALL R5 6 - 0x5C100A00, // 0030 MOVE R4 R5 - 0x70020000, // 0031 JMP #0033 - 0x8810010C, // 0032 GETMBR R4 R0 K12 - 0x8814010B, // 0033 GETMBR R5 R0 K11 - 0x20140605, // 0034 NE R5 R3 R5 - 0x78160004, // 0035 JMPF R5 #003B - 0x8C14010D, // 0036 GETMET R5 R0 K13 - 0x541E02FF, // 0037 LDINT R7 768 - 0x5820000A, // 0038 LDCONST R8 K10 - 0x7C140600, // 0039 CALL R5 3 - 0x90021603, // 003A SETMBR R0 K11 R3 - 0x8814010C, // 003B GETMBR R5 R0 K12 - 0x20140805, // 003C NE R5 R4 R5 - 0x78160004, // 003D JMPF R5 #0043 - 0x8C14010D, // 003E GETMET R5 R0 K13 - 0x541E02FF, // 003F LDINT R7 768 - 0x5820000E, // 0040 LDCONST R8 K14 - 0x7C140600, // 0041 CALL R5 3 - 0x90021804, // 0042 SETMBR R0 K12 R4 - 0x70020004, // 0043 JMP #0049 - 0x60040003, // 0044 GETGBL R1 G3 - 0x5C080000, // 0045 MOVE R2 R0 - 0x7C040200, // 0046 CALL R1 1 - 0x8C040303, // 0047 GETMET R1 R1 K3 - 0x7C040200, // 0048 CALL R1 1 - 0x80000000, // 0049 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_value_RGB -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; -be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_hue), - /* K1 */ be_nested_str_weak(shadow_sat), - /* K2 */ be_nested_str_weak(light_state), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(set_bri), - /* K5 */ be_nested_str_weak(set_huesat), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_uint), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), - /* K10 */ be_nested_str_weak(r), - /* K11 */ be_nested_str_weak(g), - /* K12 */ be_nested_str_weak(b), - /* K13 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), - /* K14 */ be_nested_str_weak(), - }), - be_str_weak(web_value_RGB), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060027, // 0003 JMPF R1 #002C - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x20040202, // 0006 NE R1 R1 R2 - 0x78060023, // 0007 JMPF R1 #002C - 0xB8060400, // 0008 GETNGBL R1 K2 - 0x58080003, // 0009 LDCONST R2 K3 - 0x7C040200, // 000A CALL R1 1 - 0x8C080304, // 000B GETMET R2 R1 K4 - 0x541200FE, // 000C LDINT R4 255 - 0x7C080400, // 000D CALL R2 2 - 0x8C080305, // 000E GETMET R2 R1 K5 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x8C100907, // 0010 GETMET R4 R4 K7 - 0x88180100, // 0011 GETMBR R6 R0 K0 - 0x581C0008, // 0012 LDCONST R7 K8 - 0x542200FD, // 0013 LDINT R8 254 - 0x58240008, // 0014 LDCONST R9 K8 - 0x542A0167, // 0015 LDINT R10 360 - 0x7C100C00, // 0016 CALL R4 6 - 0xB8160C00, // 0017 GETNGBL R5 K6 - 0x8C140B07, // 0018 GETMET R5 R5 K7 - 0x881C0101, // 0019 GETMBR R7 R0 K1 - 0x58200008, // 001A LDCONST R8 K8 - 0x542600FD, // 001B LDINT R9 254 - 0x58280008, // 001C LDCONST R10 K8 - 0x542E00FE, // 001D LDINT R11 255 - 0x7C140C00, // 001E CALL R5 6 - 0x7C080600, // 001F CALL R2 3 - 0x60080018, // 0020 GETGBL R2 G24 - 0x580C0009, // 0021 LDCONST R3 K9 - 0x8810030A, // 0022 GETMBR R4 R1 K10 - 0x8814030B, // 0023 GETMBR R5 R1 K11 - 0x8818030C, // 0024 GETMBR R6 R1 K12 - 0x7C080800, // 0025 CALL R2 4 - 0x600C0018, // 0026 GETGBL R3 G24 - 0x5810000D, // 0027 LDCONST R4 K13 - 0x5C140400, // 0028 MOVE R5 R2 - 0x5C180400, // 0029 MOVE R6 R2 - 0x7C0C0600, // 002A CALL R3 3 - 0x80040600, // 002B RET 1 R3 - 0x80061C00, // 002C RET 1 K14 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_hue_sat -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; -be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_nested_str_weak(call_remote_sync), - /* K5 */ be_nested_str_weak(HSBColor1), - /* K6 */ be_nested_str_weak(parse_status), - /* K7 */ be_nested_str_weak(HSBColor2), - /* K8 */ be_nested_str_weak(VIRTUAL), - /* K9 */ be_nested_str_weak(shadow_hue), - /* K10 */ be_nested_str_weak(attribute_updated), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(light), - /* K14 */ be_nested_str_weak(set), - /* K15 */ be_nested_str_weak(hue), - /* K16 */ be_nested_str_weak(sat), - /* K17 */ be_nested_str_weak(update_shadow), - }), - be_str_weak(set_hue_sat), - &be_const_str_solidified, - ( &(const binstruction[151]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x200C0203, // 0001 NE R3 R1 R3 - 0x780E0006, // 0002 JMPF R3 #000A - 0x140C0300, // 0003 LT R3 R1 K0 - 0x780E0000, // 0004 JMPF R3 #0006 - 0x58040000, // 0005 LDCONST R1 K0 - 0x540E00FD, // 0006 LDINT R3 254 - 0x240C0203, // 0007 GT R3 R1 R3 - 0x780E0000, // 0008 JMPF R3 #000A - 0x540600FD, // 0009 LDINT R1 254 - 0x4C0C0000, // 000A LDNIL R3 - 0x200C0403, // 000B NE R3 R2 R3 - 0x780E0006, // 000C JMPF R3 #0014 - 0x140C0500, // 000D LT R3 R2 K0 - 0x780E0000, // 000E JMPF R3 #0010 - 0x58080000, // 000F LDCONST R2 K0 - 0x540E00FD, // 0010 LDINT R3 254 - 0x240C0403, // 0011 GT R3 R2 R3 - 0x780E0000, // 0012 JMPF R3 #0014 - 0x540A00FD, // 0013 LDINT R2 254 - 0x880C0101, // 0014 GETMBR R3 R0 K1 - 0x780E002C, // 0015 JMPF R3 #0043 - 0x4C0C0000, // 0016 LDNIL R3 - 0x200C0203, // 0017 NE R3 R1 R3 - 0x780E0012, // 0018 JMPF R3 #002C - 0xB80E0400, // 0019 GETNGBL R3 K2 - 0x8C0C0703, // 001A GETMET R3 R3 K3 - 0x5C140200, // 001B MOVE R5 R1 - 0x58180000, // 001C LDCONST R6 K0 - 0x541E00FD, // 001D LDINT R7 254 - 0x58200000, // 001E LDCONST R8 K0 - 0x54260167, // 001F LDINT R9 360 - 0x7C0C0C00, // 0020 CALL R3 6 - 0x8C100104, // 0021 GETMET R4 R0 K4 - 0x58180005, // 0022 LDCONST R6 K5 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C100600, // 0024 CALL R4 3 - 0x4C140000, // 0025 LDNIL R5 - 0x20140805, // 0026 NE R5 R4 R5 - 0x78160003, // 0027 JMPF R5 #002C - 0x8C140106, // 0028 GETMET R5 R0 K6 - 0x5C1C0800, // 0029 MOVE R7 R4 - 0x5422000A, // 002A LDINT R8 11 - 0x7C140600, // 002B CALL R5 3 - 0x4C0C0000, // 002C LDNIL R3 - 0x200C0403, // 002D NE R3 R2 R3 - 0x780E0012, // 002E JMPF R3 #0042 - 0xB80E0400, // 002F GETNGBL R3 K2 - 0x8C0C0703, // 0030 GETMET R3 R3 K3 - 0x5C140400, // 0031 MOVE R5 R2 - 0x58180000, // 0032 LDCONST R6 K0 - 0x541E00FD, // 0033 LDINT R7 254 - 0x58200000, // 0034 LDCONST R8 K0 - 0x54260063, // 0035 LDINT R9 100 - 0x7C0C0C00, // 0036 CALL R3 6 - 0x8C100104, // 0037 GETMET R4 R0 K4 - 0x58180007, // 0038 LDCONST R6 K7 - 0x5C1C0600, // 0039 MOVE R7 R3 - 0x7C100600, // 003A CALL R4 3 - 0x4C140000, // 003B LDNIL R5 - 0x20140805, // 003C NE R5 R4 R5 - 0x78160003, // 003D JMPF R5 #0042 - 0x8C140106, // 003E GETMET R5 R0 K6 - 0x5C1C0800, // 003F MOVE R7 R4 - 0x5422000A, // 0040 LDINT R8 11 - 0x7C140600, // 0041 CALL R5 3 - 0x70020052, // 0042 JMP #0096 - 0x880C0108, // 0043 GETMBR R3 R0 K8 - 0x780E0016, // 0044 JMPF R3 #005C - 0x4C0C0000, // 0045 LDNIL R3 - 0x200C0203, // 0046 NE R3 R1 R3 - 0x780E0007, // 0047 JMPF R3 #0050 - 0x880C0109, // 0048 GETMBR R3 R0 K9 - 0x200C0203, // 0049 NE R3 R1 R3 - 0x780E0004, // 004A JMPF R3 #0050 - 0x8C0C010A, // 004B GETMET R3 R0 K10 - 0x541602FF, // 004C LDINT R5 768 - 0x58180000, // 004D LDCONST R6 K0 - 0x7C0C0600, // 004E CALL R3 3 - 0x90021201, // 004F SETMBR R0 K9 R1 - 0x4C0C0000, // 0050 LDNIL R3 - 0x200C0403, // 0051 NE R3 R2 R3 - 0x780E0007, // 0052 JMPF R3 #005B - 0x880C010B, // 0053 GETMBR R3 R0 K11 - 0x200C0403, // 0054 NE R3 R2 R3 - 0x780E0004, // 0055 JMPF R3 #005B - 0x8C0C010A, // 0056 GETMET R3 R0 K10 - 0x541602FF, // 0057 LDINT R5 768 - 0x5818000C, // 0058 LDCONST R6 K12 - 0x7C0C0600, // 0059 CALL R3 3 - 0x90021602, // 005A SETMBR R0 K11 R2 - 0x70020039, // 005B JMP #0096 - 0x4C0C0000, // 005C LDNIL R3 - 0x200C0203, // 005D NE R3 R1 R3 - 0x780E0008, // 005E JMPF R3 #0068 - 0xB80E0400, // 005F GETNGBL R3 K2 - 0x8C0C0703, // 0060 GETMET R3 R3 K3 - 0x5C140200, // 0061 MOVE R5 R1 - 0x58180000, // 0062 LDCONST R6 K0 - 0x541E00FD, // 0063 LDINT R7 254 - 0x58200000, // 0064 LDCONST R8 K0 - 0x54260167, // 0065 LDINT R9 360 - 0x7C0C0C00, // 0066 CALL R3 6 - 0x70020000, // 0067 JMP #0069 - 0x4C0C0000, // 0068 LDNIL R3 - 0x4C100000, // 0069 LDNIL R4 - 0x20100404, // 006A NE R4 R2 R4 - 0x78120008, // 006B JMPF R4 #0075 - 0xB8120400, // 006C GETNGBL R4 K2 - 0x8C100903, // 006D GETMET R4 R4 K3 - 0x5C180400, // 006E MOVE R6 R2 - 0x581C0000, // 006F LDCONST R7 K0 - 0x542200FD, // 0070 LDINT R8 254 - 0x58240000, // 0071 LDCONST R9 K0 - 0x542A00FE, // 0072 LDINT R10 255 - 0x7C100C00, // 0073 CALL R4 6 - 0x70020000, // 0074 JMP #0076 - 0x4C100000, // 0075 LDNIL R4 - 0x4C140000, // 0076 LDNIL R5 - 0x20140605, // 0077 NE R5 R3 R5 - 0x7816000A, // 0078 JMPF R5 #0084 - 0x4C140000, // 0079 LDNIL R5 - 0x20140805, // 007A NE R5 R4 R5 - 0x78160007, // 007B JMPF R5 #0084 - 0xB8161A00, // 007C GETNGBL R5 K13 - 0x8C140B0E, // 007D GETMET R5 R5 K14 - 0x601C0013, // 007E GETGBL R7 G19 - 0x7C1C0000, // 007F CALL R7 0 - 0x981E1E03, // 0080 SETIDX R7 K15 R3 - 0x981E2004, // 0081 SETIDX R7 K16 R4 - 0x7C140400, // 0082 CALL R5 2 - 0x7002000F, // 0083 JMP #0094 - 0x4C140000, // 0084 LDNIL R5 - 0x20140605, // 0085 NE R5 R3 R5 - 0x78160006, // 0086 JMPF R5 #008E - 0xB8161A00, // 0087 GETNGBL R5 K13 - 0x8C140B0E, // 0088 GETMET R5 R5 K14 - 0x601C0013, // 0089 GETGBL R7 G19 - 0x7C1C0000, // 008A CALL R7 0 - 0x981E1E03, // 008B SETIDX R7 K15 R3 - 0x7C140400, // 008C CALL R5 2 - 0x70020005, // 008D JMP #0094 - 0xB8161A00, // 008E GETNGBL R5 K13 - 0x8C140B0E, // 008F GETMET R5 R5 K14 - 0x601C0013, // 0090 GETGBL R7 G19 - 0x7C1C0000, // 0091 CALL R7 0 - 0x981E2004, // 0092 SETIDX R7 K16 R4 - 0x7C140400, // 0093 CALL R5 2 - 0x8C140111, // 0094 GETMET R5 R0 K17 - 0x7C140200, // 0095 CALL R5 1 - 0x80000000, // 0096 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: parse_status -********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; -be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(HSBColor), - /* K3 */ be_nested_str_weak(string), - /* K4 */ be_nested_str_weak(split), - /* K5 */ be_nested_str_weak(_X2C), - /* K6 */ be_const_int(0), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_nested_str_weak(shadow_hue), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_nested_str_weak(attribute_updated), - }), - be_str_weak(parse_status), - &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x540E000A, // 0007 LDINT R3 11 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E003A, // 0009 JMPF R3 #0045 - 0x8C0C0301, // 000A GETMET R3 R1 K1 - 0x58140002, // 000B LDCONST R5 K2 - 0x7C0C0400, // 000C CALL R3 2 - 0x780E0036, // 000D JMPF R3 #0045 - 0xA4120600, // 000E IMPORT R4 K3 - 0x8C140904, // 000F GETMET R5 R4 K4 - 0x5C1C0600, // 0010 MOVE R7 R3 - 0x58200005, // 0011 LDCONST R8 K5 - 0x7C140600, // 0012 CALL R5 3 - 0x60180009, // 0013 GETGBL R6 G9 - 0x941C0B06, // 0014 GETIDX R7 R5 K6 - 0x7C180200, // 0015 CALL R6 1 - 0x601C0009, // 0016 GETGBL R7 G9 - 0x94200B07, // 0017 GETIDX R8 R5 K7 - 0x7C1C0200, // 0018 CALL R7 1 - 0x4C200000, // 0019 LDNIL R8 - 0x20200C08, // 001A NE R8 R6 R8 - 0x78220009, // 001B JMPF R8 #0026 - 0xB8221000, // 001C GETNGBL R8 K8 - 0x8C201109, // 001D GETMET R8 R8 K9 - 0x5C280C00, // 001E MOVE R10 R6 - 0x582C0006, // 001F LDCONST R11 K6 - 0x54320167, // 0020 LDINT R12 360 - 0x58340006, // 0021 LDCONST R13 K6 - 0x543A00FD, // 0022 LDINT R14 254 - 0x7C200C00, // 0023 CALL R8 6 - 0x5C181000, // 0024 MOVE R6 R8 - 0x70020000, // 0025 JMP #0027 - 0x8818010A, // 0026 GETMBR R6 R0 K10 - 0x4C200000, // 0027 LDNIL R8 - 0x20200E08, // 0028 NE R8 R7 R8 - 0x78220009, // 0029 JMPF R8 #0034 - 0xB8221000, // 002A GETNGBL R8 K8 - 0x8C201109, // 002B GETMET R8 R8 K9 - 0x5C280E00, // 002C MOVE R10 R7 - 0x582C0006, // 002D LDCONST R11 K6 - 0x54320063, // 002E LDINT R12 100 - 0x58340006, // 002F LDCONST R13 K6 - 0x543A00FD, // 0030 LDINT R14 254 - 0x7C200C00, // 0031 CALL R8 6 - 0x5C1C1000, // 0032 MOVE R7 R8 - 0x70020000, // 0033 JMP #0035 - 0x881C010B, // 0034 GETMBR R7 R0 K11 - 0x8820010A, // 0035 GETMBR R8 R0 K10 - 0x20200C08, // 0036 NE R8 R6 R8 - 0x78220004, // 0037 JMPF R8 #003D - 0x8C20010C, // 0038 GETMET R8 R0 K12 - 0x542A02FF, // 0039 LDINT R10 768 - 0x582C0006, // 003A LDCONST R11 K6 - 0x7C200600, // 003B CALL R8 3 - 0x90021406, // 003C SETMBR R0 K10 R6 - 0x8820010B, // 003D GETMBR R8 R0 K11 - 0x20200E08, // 003E NE R8 R7 R8 - 0x78220004, // 003F JMPF R8 #0045 - 0x8C20010C, // 0040 GETMET R8 R0 K12 - 0x542A02FF, // 0041 LDINT R10 768 - 0x582C0007, // 0042 LDCONST R11 K7 - 0x7C200600, // 0043 CALL R8 3 - 0x90021607, // 0044 SETMBR R0 K11 R7 - 0x80000000, // 0045 RET 0 + 0x7C240600, // 0055 CALL R9 3 + 0x60240008, // 0056 GETGBL R9 G8 + 0x5C280E00, // 0057 MOVE R10 R7 + 0x7C240200, // 0058 CALL R9 1 + 0x00261209, // 0059 ADD R9 K9 R9 + 0x00241311, // 005A ADD R9 R9 K17 + 0x60280008, // 005B GETGBL R10 G8 + 0x5C2C1000, // 005C MOVE R11 R8 + 0x7C280200, // 005D CALL R10 1 + 0x0024120A, // 005E ADD R9 R9 R10 + 0x900E1009, // 005F SETMBR R3 K8 R9 + 0x8C24010A, // 0060 GETMET R9 R0 K10 + 0x582C000B, // 0061 LDCONST R11 K11 + 0x5C300E00, // 0062 MOVE R12 R7 + 0x58340010, // 0063 LDCONST R13 K16 + 0x5C381000, // 0064 MOVE R14 R8 + 0x7C240A00, // 0065 CALL R9 5 + 0x50240200, // 0066 LDBOOL R9 1 0 + 0x80041200, // 0067 RET 1 R9 + 0x70020004, // 0068 JMP #006E + 0x541E0046, // 0069 LDINT R7 71 + 0x1C1C0C07, // 006A EQ R7 R6 R7 + 0x781E0001, // 006B JMPF R7 #006E + 0x501C0200, // 006C LDBOOL R7 1 0 + 0x80040E00, // 006D RET 1 R7 + 0x70020008, // 006E JMP #0078 + 0x601C0003, // 006F GETGBL R7 G3 + 0x5C200000, // 0070 MOVE R8 R0 + 0x7C1C0200, // 0071 CALL R7 1 + 0x8C1C0F12, // 0072 GETMET R7 R7 K18 + 0x5C240200, // 0073 MOVE R9 R1 + 0x5C280400, // 0074 MOVE R10 R2 + 0x5C2C0600, // 0075 MOVE R11 R3 + 0x7C1C0800, // 0076 CALL R7 4 + 0x80040E00, // 0077 RET 1 R7 + 0x80000000, // 0078 RET 0 }) ) ); @@ -906,6 +306,417 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: update_shadow +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(VIRTUAL), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(light), + /* K3 */ be_nested_str_weak(update_shadow), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(light_index), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(hue), + /* K8 */ be_nested_str_weak(sat), + /* K9 */ be_nested_str_weak(tasmota), + /* K10 */ be_nested_str_weak(scale_uint), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(shadow_hue), + /* K13 */ be_nested_str_weak(shadow_sat), + /* K14 */ be_nested_str_weak(attribute_updated), + /* K15 */ be_const_int(1), + }), + be_str_weak(update_shadow), + &be_const_str_solidified, + ( &(const binstruction[75]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060042, // 0001 JMPT R1 #0045 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x74060040, // 0003 JMPT R1 #0045 + 0xA4060400, // 0004 IMPORT R1 K2 + 0x60080003, // 0005 GETGBL R2 G3 + 0x5C0C0000, // 0006 MOVE R3 R0 + 0x7C080200, // 0007 CALL R2 1 + 0x8C080503, // 0008 GETMET R2 R2 K3 + 0x7C080200, // 0009 CALL R2 1 + 0x8C080304, // 000A GETMET R2 R1 K4 + 0x88100105, // 000B GETMBR R4 R0 K5 + 0x7C080400, // 000C CALL R2 2 + 0x4C0C0000, // 000D LDNIL R3 + 0x200C0403, // 000E NE R3 R2 R3 + 0x780E0033, // 000F JMPF R3 #0044 + 0x8C0C0506, // 0010 GETMET R3 R2 K6 + 0x58140007, // 0011 LDCONST R5 K7 + 0x4C180000, // 0012 LDNIL R6 + 0x7C0C0600, // 0013 CALL R3 3 + 0x8C100506, // 0014 GETMET R4 R2 K6 + 0x58180008, // 0015 LDCONST R6 K8 + 0x4C1C0000, // 0016 LDNIL R7 + 0x7C100600, // 0017 CALL R4 3 + 0x4C140000, // 0018 LDNIL R5 + 0x20140605, // 0019 NE R5 R3 R5 + 0x78160009, // 001A JMPF R5 #0025 + 0xB8161200, // 001B GETNGBL R5 K9 + 0x8C140B0A, // 001C GETMET R5 R5 K10 + 0x5C1C0600, // 001D MOVE R7 R3 + 0x5820000B, // 001E LDCONST R8 K11 + 0x54260167, // 001F LDINT R9 360 + 0x5828000B, // 0020 LDCONST R10 K11 + 0x542E00FD, // 0021 LDINT R11 254 + 0x7C140C00, // 0022 CALL R5 6 + 0x5C0C0A00, // 0023 MOVE R3 R5 + 0x70020000, // 0024 JMP #0026 + 0x880C010C, // 0025 GETMBR R3 R0 K12 + 0x4C140000, // 0026 LDNIL R5 + 0x20140805, // 0027 NE R5 R4 R5 + 0x78160009, // 0028 JMPF R5 #0033 + 0xB8161200, // 0029 GETNGBL R5 K9 + 0x8C140B0A, // 002A GETMET R5 R5 K10 + 0x5C1C0800, // 002B MOVE R7 R4 + 0x5820000B, // 002C LDCONST R8 K11 + 0x542600FE, // 002D LDINT R9 255 + 0x5828000B, // 002E LDCONST R10 K11 + 0x542E00FD, // 002F LDINT R11 254 + 0x7C140C00, // 0030 CALL R5 6 + 0x5C100A00, // 0031 MOVE R4 R5 + 0x70020000, // 0032 JMP #0034 + 0x8810010D, // 0033 GETMBR R4 R0 K13 + 0x8814010C, // 0034 GETMBR R5 R0 K12 + 0x20140605, // 0035 NE R5 R3 R5 + 0x78160004, // 0036 JMPF R5 #003C + 0x8C14010E, // 0037 GETMET R5 R0 K14 + 0x541E02FF, // 0038 LDINT R7 768 + 0x5820000B, // 0039 LDCONST R8 K11 + 0x7C140600, // 003A CALL R5 3 + 0x90021803, // 003B SETMBR R0 K12 R3 + 0x8814010D, // 003C GETMBR R5 R0 K13 + 0x20140805, // 003D NE R5 R4 R5 + 0x78160004, // 003E JMPF R5 #0044 + 0x8C14010E, // 003F GETMET R5 R0 K14 + 0x541E02FF, // 0040 LDINT R7 768 + 0x5820000F, // 0041 LDCONST R8 K15 + 0x7C140600, // 0042 CALL R5 3 + 0x90021A04, // 0043 SETMBR R0 K13 R4 + 0x70020004, // 0044 JMP #004A + 0x60040003, // 0045 GETGBL R1 G3 + 0x5C080000, // 0046 MOVE R2 R0 + 0x7C040200, // 0047 CALL R1 1 + 0x8C040303, // 0048 GETMET R1 R1 K3 + 0x7C040200, // 0049 CALL R1 1 + 0x80000000, // 004A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_virtual +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(Hue), + /* K2 */ be_nested_str_weak(Sat), + /* K3 */ be_nested_str_weak(set_hue_sat), + /* K4 */ be_nested_str_weak(update_virtual), + }), + be_str_weak(update_virtual), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x8C0C0300, // 0001 GETMET R3 R1 K0 + 0x58140001, // 0002 LDCONST R5 K1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x7C080200, // 0004 CALL R2 1 + 0x600C0009, // 0005 GETGBL R3 G9 + 0x8C100300, // 0006 GETMET R4 R1 K0 + 0x58180002, // 0007 LDCONST R6 K2 + 0x7C100400, // 0008 CALL R4 2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x4C100000, // 000A LDNIL R4 + 0x20100404, // 000B NE R4 R2 R4 + 0x74120002, // 000C JMPT R4 #0010 + 0x4C100000, // 000D LDNIL R4 + 0x20100604, // 000E NE R4 R3 R4 + 0x78120003, // 000F JMPF R4 #0014 + 0x8C100103, // 0010 GETMET R4 R0 K3 + 0x5C180400, // 0011 MOVE R6 R2 + 0x5C1C0600, // 0012 MOVE R7 R3 + 0x7C100600, // 0013 CALL R4 3 + 0x60100003, // 0014 GETGBL R4 G3 + 0x5C140000, // 0015 MOVE R5 R0 + 0x7C100200, // 0016 CALL R4 1 + 0x8C100904, // 0017 GETMET R4 R4 K4 + 0x5C180200, // 0018 MOVE R6 R1 + 0x7C100400, // 0019 CALL R4 2 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_hue_sat +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), + /* K4 */ be_nested_str_weak(call_remote_sync), + /* K5 */ be_nested_str_weak(HSBColor1), + /* K6 */ be_nested_str_weak(parse_status), + /* K7 */ be_nested_str_weak(HSBColor2), + /* K8 */ be_nested_str_weak(VIRTUAL), + /* K9 */ be_nested_str_weak(shadow_hue), + /* K10 */ be_nested_str_weak(attribute_updated), + /* K11 */ be_nested_str_weak(shadow_sat), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(light), + /* K14 */ be_nested_str_weak(set), + /* K15 */ be_nested_str_weak(hue), + /* K16 */ be_nested_str_weak(sat), + /* K17 */ be_nested_str_weak(light_index), + /* K18 */ be_nested_str_weak(update_shadow), + }), + be_str_weak(set_hue_sat), + &be_const_str_solidified, + ( &(const binstruction[154]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x200C0203, // 0001 NE R3 R1 R3 + 0x780E0006, // 0002 JMPF R3 #000A + 0x140C0300, // 0003 LT R3 R1 K0 + 0x780E0000, // 0004 JMPF R3 #0006 + 0x58040000, // 0005 LDCONST R1 K0 + 0x540E00FD, // 0006 LDINT R3 254 + 0x240C0203, // 0007 GT R3 R1 R3 + 0x780E0000, // 0008 JMPF R3 #000A + 0x540600FD, // 0009 LDINT R1 254 + 0x4C0C0000, // 000A LDNIL R3 + 0x200C0403, // 000B NE R3 R2 R3 + 0x780E0006, // 000C JMPF R3 #0014 + 0x140C0500, // 000D LT R3 R2 K0 + 0x780E0000, // 000E JMPF R3 #0010 + 0x58080000, // 000F LDCONST R2 K0 + 0x540E00FD, // 0010 LDINT R3 254 + 0x240C0403, // 0011 GT R3 R2 R3 + 0x780E0000, // 0012 JMPF R3 #0014 + 0x540A00FD, // 0013 LDINT R2 254 + 0x880C0101, // 0014 GETMBR R3 R0 K1 + 0x780E002C, // 0015 JMPF R3 #0043 + 0x4C0C0000, // 0016 LDNIL R3 + 0x200C0203, // 0017 NE R3 R1 R3 + 0x780E0012, // 0018 JMPF R3 #002C + 0xB80E0400, // 0019 GETNGBL R3 K2 + 0x8C0C0703, // 001A GETMET R3 R3 K3 + 0x5C140200, // 001B MOVE R5 R1 + 0x58180000, // 001C LDCONST R6 K0 + 0x541E00FD, // 001D LDINT R7 254 + 0x58200000, // 001E LDCONST R8 K0 + 0x54260167, // 001F LDINT R9 360 + 0x7C0C0C00, // 0020 CALL R3 6 + 0x8C100104, // 0021 GETMET R4 R0 K4 + 0x58180005, // 0022 LDCONST R6 K5 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C100600, // 0024 CALL R4 3 + 0x4C140000, // 0025 LDNIL R5 + 0x20140805, // 0026 NE R5 R4 R5 + 0x78160003, // 0027 JMPF R5 #002C + 0x8C140106, // 0028 GETMET R5 R0 K6 + 0x5C1C0800, // 0029 MOVE R7 R4 + 0x5422000A, // 002A LDINT R8 11 + 0x7C140600, // 002B CALL R5 3 + 0x4C0C0000, // 002C LDNIL R3 + 0x200C0403, // 002D NE R3 R2 R3 + 0x780E0012, // 002E JMPF R3 #0042 + 0xB80E0400, // 002F GETNGBL R3 K2 + 0x8C0C0703, // 0030 GETMET R3 R3 K3 + 0x5C140400, // 0031 MOVE R5 R2 + 0x58180000, // 0032 LDCONST R6 K0 + 0x541E00FD, // 0033 LDINT R7 254 + 0x58200000, // 0034 LDCONST R8 K0 + 0x54260063, // 0035 LDINT R9 100 + 0x7C0C0C00, // 0036 CALL R3 6 + 0x8C100104, // 0037 GETMET R4 R0 K4 + 0x58180007, // 0038 LDCONST R6 K7 + 0x5C1C0600, // 0039 MOVE R7 R3 + 0x7C100600, // 003A CALL R4 3 + 0x4C140000, // 003B LDNIL R5 + 0x20140805, // 003C NE R5 R4 R5 + 0x78160003, // 003D JMPF R5 #0042 + 0x8C140106, // 003E GETMET R5 R0 K6 + 0x5C1C0800, // 003F MOVE R7 R4 + 0x5422000A, // 0040 LDINT R8 11 + 0x7C140600, // 0041 CALL R5 3 + 0x70020055, // 0042 JMP #0099 + 0x880C0108, // 0043 GETMBR R3 R0 K8 + 0x780E0016, // 0044 JMPF R3 #005C + 0x4C0C0000, // 0045 LDNIL R3 + 0x200C0203, // 0046 NE R3 R1 R3 + 0x780E0007, // 0047 JMPF R3 #0050 + 0x880C0109, // 0048 GETMBR R3 R0 K9 + 0x200C0203, // 0049 NE R3 R1 R3 + 0x780E0004, // 004A JMPF R3 #0050 + 0x8C0C010A, // 004B GETMET R3 R0 K10 + 0x541602FF, // 004C LDINT R5 768 + 0x58180000, // 004D LDCONST R6 K0 + 0x7C0C0600, // 004E CALL R3 3 + 0x90021201, // 004F SETMBR R0 K9 R1 + 0x4C0C0000, // 0050 LDNIL R3 + 0x200C0403, // 0051 NE R3 R2 R3 + 0x780E0007, // 0052 JMPF R3 #005B + 0x880C010B, // 0053 GETMBR R3 R0 K11 + 0x200C0403, // 0054 NE R3 R2 R3 + 0x780E0004, // 0055 JMPF R3 #005B + 0x8C0C010A, // 0056 GETMET R3 R0 K10 + 0x541602FF, // 0057 LDINT R5 768 + 0x5818000C, // 0058 LDCONST R6 K12 + 0x7C0C0600, // 0059 CALL R3 3 + 0x90021602, // 005A SETMBR R0 K11 R2 + 0x7002003C, // 005B JMP #0099 + 0x4C0C0000, // 005C LDNIL R3 + 0x200C0203, // 005D NE R3 R1 R3 + 0x780E0008, // 005E JMPF R3 #0068 + 0xB80E0400, // 005F GETNGBL R3 K2 + 0x8C0C0703, // 0060 GETMET R3 R3 K3 + 0x5C140200, // 0061 MOVE R5 R1 + 0x58180000, // 0062 LDCONST R6 K0 + 0x541E00FD, // 0063 LDINT R7 254 + 0x58200000, // 0064 LDCONST R8 K0 + 0x54260167, // 0065 LDINT R9 360 + 0x7C0C0C00, // 0066 CALL R3 6 + 0x70020000, // 0067 JMP #0069 + 0x4C0C0000, // 0068 LDNIL R3 + 0x4C100000, // 0069 LDNIL R4 + 0x20100404, // 006A NE R4 R2 R4 + 0x78120008, // 006B JMPF R4 #0075 + 0xB8120400, // 006C GETNGBL R4 K2 + 0x8C100903, // 006D GETMET R4 R4 K3 + 0x5C180400, // 006E MOVE R6 R2 + 0x581C0000, // 006F LDCONST R7 K0 + 0x542200FD, // 0070 LDINT R8 254 + 0x58240000, // 0071 LDCONST R9 K0 + 0x542A00FE, // 0072 LDINT R10 255 + 0x7C100C00, // 0073 CALL R4 6 + 0x70020000, // 0074 JMP #0076 + 0x4C100000, // 0075 LDNIL R4 + 0x4C140000, // 0076 LDNIL R5 + 0x20140605, // 0077 NE R5 R3 R5 + 0x7816000B, // 0078 JMPF R5 #0085 + 0x4C140000, // 0079 LDNIL R5 + 0x20140805, // 007A NE R5 R4 R5 + 0x78160008, // 007B JMPF R5 #0085 + 0xB8161A00, // 007C GETNGBL R5 K13 + 0x8C140B0E, // 007D GETMET R5 R5 K14 + 0x601C0013, // 007E GETGBL R7 G19 + 0x7C1C0000, // 007F CALL R7 0 + 0x981E1E03, // 0080 SETIDX R7 K15 R3 + 0x981E2004, // 0081 SETIDX R7 K16 R4 + 0x88200111, // 0082 GETMBR R8 R0 K17 + 0x7C140600, // 0083 CALL R5 3 + 0x70020011, // 0084 JMP #0097 + 0x4C140000, // 0085 LDNIL R5 + 0x20140605, // 0086 NE R5 R3 R5 + 0x78160007, // 0087 JMPF R5 #0090 + 0xB8161A00, // 0088 GETNGBL R5 K13 + 0x8C140B0E, // 0089 GETMET R5 R5 K14 + 0x601C0013, // 008A GETGBL R7 G19 + 0x7C1C0000, // 008B CALL R7 0 + 0x981E1E03, // 008C SETIDX R7 K15 R3 + 0x88200111, // 008D GETMBR R8 R0 K17 + 0x7C140600, // 008E CALL R5 3 + 0x70020006, // 008F JMP #0097 + 0xB8161A00, // 0090 GETNGBL R5 K13 + 0x8C140B0E, // 0091 GETMET R5 R5 K14 + 0x601C0013, // 0092 GETGBL R7 G19 + 0x7C1C0000, // 0093 CALL R7 0 + 0x981E2004, // 0094 SETIDX R7 K16 R4 + 0x88200111, // 0095 GETMBR R8 R0 K17 + 0x7C140600, // 0096 CALL R5 3 + 0x8C140112, // 0097 GETMET R5 R0 K18 + 0x7C140200, // 0098 CALL R5 1 + 0x80000000, // 0099 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(shadow_hue), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(shadow_sat), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60100003, // 0000 GETGBL R4 G3 + 0x5C140000, // 0001 MOVE R5 R0 + 0x7C100200, // 0002 CALL R4 1 + 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x5C200600, // 0006 MOVE R8 R3 + 0x7C100800, // 0007 CALL R4 4 + 0x90020302, // 0008 SETMBR R0 K1 K2 + 0x90020702, // 0009 SETMBR R0 K3 K2 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: web_values ********************************************************************/ @@ -955,6 +766,199 @@ be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: parse_status +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ + be_nested_proto( + 15, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(parse_status), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(HSBColor), + /* K3 */ be_nested_str_weak(string), + /* K4 */ be_nested_str_weak(split), + /* K5 */ be_nested_str_weak(_X2C), + /* K6 */ be_const_int(0), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_nested_str_weak(shadow_hue), + /* K11 */ be_nested_str_weak(shadow_sat), + /* K12 */ be_nested_str_weak(attribute_updated), + }), + be_str_weak(parse_status), + &be_const_str_solidified, + ( &(const binstruction[70]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x540E000A, // 0007 LDINT R3 11 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E003A, // 0009 JMPF R3 #0045 + 0x8C0C0301, // 000A GETMET R3 R1 K1 + 0x58140002, // 000B LDCONST R5 K2 + 0x7C0C0400, // 000C CALL R3 2 + 0x780E0036, // 000D JMPF R3 #0045 + 0xA4120600, // 000E IMPORT R4 K3 + 0x8C140904, // 000F GETMET R5 R4 K4 + 0x5C1C0600, // 0010 MOVE R7 R3 + 0x58200005, // 0011 LDCONST R8 K5 + 0x7C140600, // 0012 CALL R5 3 + 0x60180009, // 0013 GETGBL R6 G9 + 0x941C0B06, // 0014 GETIDX R7 R5 K6 + 0x7C180200, // 0015 CALL R6 1 + 0x601C0009, // 0016 GETGBL R7 G9 + 0x94200B07, // 0017 GETIDX R8 R5 K7 + 0x7C1C0200, // 0018 CALL R7 1 + 0x4C200000, // 0019 LDNIL R8 + 0x20200C08, // 001A NE R8 R6 R8 + 0x78220009, // 001B JMPF R8 #0026 + 0xB8221000, // 001C GETNGBL R8 K8 + 0x8C201109, // 001D GETMET R8 R8 K9 + 0x5C280C00, // 001E MOVE R10 R6 + 0x582C0006, // 001F LDCONST R11 K6 + 0x54320167, // 0020 LDINT R12 360 + 0x58340006, // 0021 LDCONST R13 K6 + 0x543A00FD, // 0022 LDINT R14 254 + 0x7C200C00, // 0023 CALL R8 6 + 0x5C181000, // 0024 MOVE R6 R8 + 0x70020000, // 0025 JMP #0027 + 0x8818010A, // 0026 GETMBR R6 R0 K10 + 0x4C200000, // 0027 LDNIL R8 + 0x20200E08, // 0028 NE R8 R7 R8 + 0x78220009, // 0029 JMPF R8 #0034 + 0xB8221000, // 002A GETNGBL R8 K8 + 0x8C201109, // 002B GETMET R8 R8 K9 + 0x5C280E00, // 002C MOVE R10 R7 + 0x582C0006, // 002D LDCONST R11 K6 + 0x54320063, // 002E LDINT R12 100 + 0x58340006, // 002F LDCONST R13 K6 + 0x543A00FD, // 0030 LDINT R14 254 + 0x7C200C00, // 0031 CALL R8 6 + 0x5C1C1000, // 0032 MOVE R7 R8 + 0x70020000, // 0033 JMP #0035 + 0x881C010B, // 0034 GETMBR R7 R0 K11 + 0x8820010A, // 0035 GETMBR R8 R0 K10 + 0x20200C08, // 0036 NE R8 R6 R8 + 0x78220004, // 0037 JMPF R8 #003D + 0x8C20010C, // 0038 GETMET R8 R0 K12 + 0x542A02FF, // 0039 LDINT R10 768 + 0x582C0006, // 003A LDCONST R11 K6 + 0x7C200600, // 003B CALL R8 3 + 0x90021406, // 003C SETMBR R0 K10 R6 + 0x8820010B, // 003D GETMBR R8 R0 K11 + 0x20200E08, // 003E NE R8 R7 R8 + 0x78220004, // 003F JMPF R8 #0045 + 0x8C20010C, // 0040 GETMET R8 R0 K12 + 0x542A02FF, // 0041 LDINT R10 768 + 0x582C0007, // 0042 LDCONST R11 K7 + 0x7C200600, // 0043 CALL R8 3 + 0x90021607, // 0044 SETMBR R0 K11 R7 + 0x80000000, // 0045 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_value_RGB +********************************************************************/ +extern const bclass be_class_Matter_Plugin_Light3; +be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + &be_class_Matter_Plugin_Light3, + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(shadow_hue), + /* K1 */ be_nested_str_weak(shadow_sat), + /* K2 */ be_nested_str_weak(light_state), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(set_bri), + /* K5 */ be_nested_str_weak(set_huesat), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(scale_uint), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), + /* K10 */ be_nested_str_weak(r), + /* K11 */ be_nested_str_weak(g), + /* K12 */ be_nested_str_weak(b), + /* K13 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), + /* K14 */ be_nested_str_weak(), + }), + be_str_weak(web_value_RGB), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060027, // 0003 JMPF R1 #002C + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060023, // 0007 JMPF R1 #002C + 0xB8060400, // 0008 GETNGBL R1 K2 + 0x58080003, // 0009 LDCONST R2 K3 + 0x7C040200, // 000A CALL R1 1 + 0x8C080304, // 000B GETMET R2 R1 K4 + 0x541200FE, // 000C LDINT R4 255 + 0x7C080400, // 000D CALL R2 2 + 0x8C080305, // 000E GETMET R2 R1 K5 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x8C100907, // 0010 GETMET R4 R4 K7 + 0x88180100, // 0011 GETMBR R6 R0 K0 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x542200FD, // 0013 LDINT R8 254 + 0x58240008, // 0014 LDCONST R9 K8 + 0x542A0167, // 0015 LDINT R10 360 + 0x7C100C00, // 0016 CALL R4 6 + 0xB8160C00, // 0017 GETNGBL R5 K6 + 0x8C140B07, // 0018 GETMET R5 R5 K7 + 0x881C0101, // 0019 GETMBR R7 R0 K1 + 0x58200008, // 001A LDCONST R8 K8 + 0x542600FD, // 001B LDINT R9 254 + 0x58280008, // 001C LDCONST R10 K8 + 0x542E00FE, // 001D LDINT R11 255 + 0x7C140C00, // 001E CALL R5 6 + 0x7C080600, // 001F CALL R2 3 + 0x60080018, // 0020 GETGBL R2 G24 + 0x580C0009, // 0021 LDCONST R3 K9 + 0x8810030A, // 0022 GETMBR R4 R1 K10 + 0x8814030B, // 0023 GETMBR R5 R1 K11 + 0x8818030C, // 0024 GETMBR R6 R1 K12 + 0x7C080800, // 0025 CALL R2 4 + 0x600C0018, // 0026 GETGBL R3 G24 + 0x5810000D, // 0027 LDCONST R4 K13 + 0x5C140400, // 0028 MOVE R5 R2 + 0x5C180400, // 0029 MOVE R6 R2 + 0x7C0C0600, // 002A CALL R3 3 + 0x80040600, // 002B RET 1 R3 + 0x80061C00, // 002C RET 1 K14 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_Light3 ********************************************************************/ @@ -962,20 +966,16 @@ extern const bclass be_class_Matter_Plugin_Light1; be_local_class(Matter_Plugin_Light3, 2, &be_class_Matter_Plugin_Light1, - be_nested_map(16, + be_nested_map(18, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update_virtual, 1), be_const_closure(class_Matter_Plugin_Light3_update_virtual_closure) }, - { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light3_web_values_closure) }, + { be_const_key_weak(ARG_HINT, 17), be_nested_str_weak(_Not_X20used_) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(light3) }, { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(269, -1), be_const_int(2) }, })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light3_init_closure) }, - { be_const_key_weak(shadow_hue, -1), be_const_var(0) }, - { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light3_update_shadow_closure) }, - { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X203_X20RGB) }, - { be_const_key_weak(UPDATE_COMMANDS, 15), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(4, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(Power), @@ -983,9 +983,16 @@ be_local_class(Matter_Plugin_Light3, be_nested_str_weak(Hue), be_nested_str_weak(Sat), })) ) } )) }, - { be_const_key_weak(read_attribute, 2), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) }, - { be_const_key_weak(set_hue_sat, -1), be_const_closure(class_Matter_Plugin_Light3_set_hue_sat_closure) }, - { be_const_key_weak(CLUSTERS, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(shadow_hue, 13), be_const_var(0) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light3_invoke_request_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) }, + { be_const_key_weak(update_shadow, 11), be_const_closure(class_Matter_Plugin_Light3_update_shadow_closure) }, + { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light3_update_virtual_closure) }, + { be_const_key_weak(ARG, 0), be_nested_str_weak() }, + { be_const_key_weak(shadow_sat, -1), be_const_var(1) }, + { be_const_key_weak(web_value_RGB, -1), be_const_closure(class_Matter_Plugin_Light3_web_value_RGB_closure) }, + { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Light3_parse_status_closure) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -1101,11 +1108,10 @@ be_local_class(Matter_Plugin_Light3, be_const_int(65533), })) ) } )) }, })) ) } )) }, - { be_const_key_weak(invoke_request, 12), be_const_closure(class_Matter_Plugin_Light3_invoke_request_closure) }, - { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light3_parse_status_closure) }, - { be_const_key_weak(TYPE, 6), be_nested_str_weak(light3) }, - { be_const_key_weak(shadow_sat, -1), be_const_var(1) }, - { be_const_key_weak(web_value_RGB, -1), be_const_closure(class_Matter_Plugin_Light3_web_value_RGB_closure) }, + { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light3_web_values_closure) }, + { be_const_key_weak(set_hue_sat, 12), be_const_closure(class_Matter_Plugin_Light3_set_hue_sat_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light3_init_closure) }, + { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X203_X20RGB) }, })), be_str_weak(Matter_Plugin_Light3) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h index cd50b370a..f9a4b9cc3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h @@ -40,13 +40,14 @@ extern const bclass be_class_Matter_Plugin_Light1; be_local_class(Matter_Plugin_Bridge_Light1, 0, &be_class_Matter_Plugin_Light1, - be_nested_map(5, + be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(TYPE, 3), be_nested_str_weak(http_light1) }, - { be_const_key_weak(UPDATE_TIME, 2), be_const_int(3000) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light1) }, { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(ARG_HINT, 5), be_nested_str_weak(Relay_X3Cx_X3E_X20number) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light1__X3Clambda_X3E_closure) }, { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, - { be_const_key_weak(ARG_TYPE, 0), be_const_static_closure(class_Matter_Plugin_Bridge_Light1__X3Clambda_X3E_closure) }, })), be_str_weak(Matter_Plugin_Bridge_Light1) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h index e21b658e0..a7c7f71dd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h @@ -40,13 +40,14 @@ extern const bclass be_class_Matter_Plugin_Light2; be_local_class(Matter_Plugin_Bridge_Light2, 0, &be_class_Matter_Plugin_Light2, - be_nested_map(5, + be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(TYPE, 3), be_nested_str_weak(http_light2) }, - { be_const_key_weak(UPDATE_TIME, 2), be_const_int(3000) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light2) }, { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(ARG_HINT, 5), be_nested_str_weak(Relay_X3Cx_X3E_X20number) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light2__X3Clambda_X3E_closure) }, { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, - { be_const_key_weak(ARG_TYPE, 0), be_const_static_closure(class_Matter_Plugin_Bridge_Light2__X3Clambda_X3E_closure) }, })), be_str_weak(Matter_Plugin_Bridge_Light2) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h index ef62d3a68..d8c7a1641 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h @@ -40,13 +40,14 @@ extern const bclass be_class_Matter_Plugin_Light3; be_local_class(Matter_Plugin_Bridge_Light3, 0, &be_class_Matter_Plugin_Light3, - be_nested_map(5, + be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(TYPE, 3), be_nested_str_weak(http_light3) }, - { be_const_key_weak(UPDATE_TIME, 2), be_const_int(3000) }, + { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) }, + { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light3) }, { be_const_key_weak(BRIDGE, -1), be_const_bool(1) }, + { be_const_key_weak(ARG_HINT, 5), be_nested_str_weak(Relay_X3Cx_X3E_X20number) }, + { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light3__X3Clambda_X3E_closure) }, { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) }, - { be_const_key_weak(ARG_TYPE, 0), be_const_static_closure(class_Matter_Plugin_Bridge_Light3__X3Clambda_X3E_closure) }, })), be_str_weak(Matter_Plugin_Bridge_Light3) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index c3f414480..ed75f79e2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -5795,24 +5795,24 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ /* K0 */ be_nested_str_weak(json), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(START_ENDPOINT), - /* K3 */ be_nested_str_weak(light), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(channels), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_const_int(0), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(light), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(channels), + /* K8 */ be_nested_str_weak(), /* K9 */ be_const_int(1), /* K10 */ be_nested_str_weak(type), /* K11 */ be_nested_str_weak(light1), /* K12 */ be_const_int(2), /* K13 */ be_nested_str_weak(light2), - /* K14 */ be_nested_str_weak(light3), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(cmd), - /* K17 */ be_nested_str_weak(Status_X2013), - /* K18 */ be_nested_str_weak(log), - /* K19 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), - /* K20 */ be_const_int(3), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(light3), + /* K16 */ be_nested_str_weak(tasmota), + /* K17 */ be_nested_str_weak(cmd), + /* K18 */ be_nested_str_weak(Status_X2013), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20), /* K21 */ be_nested_str_weak(contains), /* K22 */ be_nested_str_weak(StatusSHT), /* K23 */ be_nested_str_weak(SHT), @@ -5833,203 +5833,269 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ }), be_str_weak(autoconf_device_map), &be_const_str_solidified, - ( &(const binstruction[196]) { /* code */ + ( &(const binstruction[262]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x60080013, // 0001 GETGBL R2 G19 0x7C080000, // 0002 CALL R2 0 0xB80E0200, // 0003 GETNGBL R3 K1 0x880C0702, // 0004 GETMBR R3 R3 K2 - 0x50100000, // 0005 LDBOOL R4 0 0 - 0xA4160600, // 0006 IMPORT R5 K3 - 0x8C180B04, // 0007 GETMET R6 R5 K4 - 0x7C180200, // 0008 CALL R6 1 - 0x4C1C0000, // 0009 LDNIL R7 - 0x201C0C07, // 000A NE R7 R6 R7 - 0x781E0024, // 000B JMPF R7 #0031 - 0x601C000C, // 000C GETGBL R7 G12 - 0x8C200D05, // 000D GETMET R8 R6 K5 - 0x58280006, // 000E LDCONST R10 K6 - 0x582C0007, // 000F LDCONST R11 K7 - 0x7C200600, // 0010 CALL R8 3 - 0x7C1C0200, // 0011 CALL R7 1 - 0x24200F08, // 0012 GT R8 R7 K8 - 0x7822001C, // 0013 JMPF R8 #0031 - 0x1C200F09, // 0014 EQ R8 R7 K9 - 0x78220007, // 0015 JMPF R8 #001E - 0x60200008, // 0016 GETGBL R8 G8 - 0x5C240600, // 0017 MOVE R9 R3 - 0x7C200200, // 0018 CALL R8 1 - 0x60240013, // 0019 GETGBL R9 G19 - 0x7C240000, // 001A CALL R9 0 - 0x9826150B, // 001B SETIDX R9 K10 K11 - 0x98081009, // 001C SETIDX R2 R8 R9 - 0x70020010, // 001D JMP #002F - 0x1C200F0C, // 001E EQ R8 R7 K12 - 0x78220007, // 001F JMPF R8 #0028 - 0x60200008, // 0020 GETGBL R8 G8 - 0x5C240600, // 0021 MOVE R9 R3 - 0x7C200200, // 0022 CALL R8 1 - 0x60240013, // 0023 GETGBL R9 G19 - 0x7C240000, // 0024 CALL R9 0 - 0x9826150D, // 0025 SETIDX R9 K10 K13 - 0x98081009, // 0026 SETIDX R2 R8 R9 - 0x70020006, // 0027 JMP #002F - 0x60200008, // 0028 GETGBL R8 G8 - 0x5C240600, // 0029 MOVE R9 R3 - 0x7C200200, // 002A CALL R8 1 - 0x60240013, // 002B GETGBL R9 G19 - 0x7C240000, // 002C CALL R9 0 - 0x9826150E, // 002D SETIDX R9 K10 K14 - 0x98081009, // 002E SETIDX R2 R8 R9 - 0x50100200, // 002F LDBOOL R4 1 0 - 0x000C0709, // 0030 ADD R3 R3 K9 - 0xB81E1E00, // 0031 GETNGBL R7 K15 - 0x8C1C0F10, // 0032 GETMET R7 R7 K16 - 0x58240011, // 0033 LDCONST R9 K17 - 0x50280200, // 0034 LDBOOL R10 1 0 - 0x7C1C0600, // 0035 CALL R7 3 - 0x60200012, // 0036 GETGBL R8 G18 - 0x7C200000, // 0037 CALL R8 0 - 0xB8262400, // 0038 GETNGBL R9 K18 - 0x60280008, // 0039 GETGBL R10 G8 - 0x5C2C0E00, // 003A MOVE R11 R7 - 0x7C280200, // 003B CALL R10 1 - 0x002A260A, // 003C ADD R10 K19 R10 - 0x582C0014, // 003D LDCONST R11 K20 - 0x7C240400, // 003E CALL R9 2 - 0x4C240000, // 003F LDNIL R9 - 0x20240E09, // 0040 NE R9 R7 R9 - 0x7826004D, // 0041 JMPF R9 #0090 - 0x8C240F15, // 0042 GETMET R9 R7 K21 - 0x582C0016, // 0043 LDCONST R11 K22 - 0x7C240400, // 0044 CALL R9 2 - 0x78260049, // 0045 JMPF R9 #0090 - 0x941C0F16, // 0046 GETIDX R7 R7 K22 - 0x58240008, // 0047 LDCONST R9 K8 - 0x50280200, // 0048 LDBOOL R10 1 0 - 0x782A0045, // 0049 JMPF R10 #0090 - 0x60280008, // 004A GETGBL R10 G8 - 0x5C2C1200, // 004B MOVE R11 R9 - 0x7C280200, // 004C CALL R10 1 - 0x002A2E0A, // 004D ADD R10 K23 R10 - 0x8C2C0F15, // 004E GETMET R11 R7 K21 - 0x5C341400, // 004F MOVE R13 R10 - 0x7C2C0400, // 0050 CALL R11 2 - 0x742E0000, // 0051 JMPT R11 #0053 - 0x7002003C, // 0052 JMP #0090 - 0x942C0E0A, // 0053 GETIDX R11 R7 R10 - 0xB8322400, // 0054 GETNGBL R12 K18 - 0x60340018, // 0055 GETGBL R13 G24 - 0x58380018, // 0056 LDCONST R14 K24 - 0x5C3C1400, // 0057 MOVE R15 R10 - 0x60400008, // 0058 GETGBL R16 G8 - 0x5C441600, // 0059 MOVE R17 R11 - 0x7C400200, // 005A CALL R16 1 - 0x7C340600, // 005B CALL R13 3 - 0x58380014, // 005C LDCONST R14 K20 - 0x7C300400, // 005D CALL R12 2 - 0x8C301705, // 005E GETMET R12 R11 K5 - 0x58380019, // 005F LDCONST R14 K25 - 0x543DFFFE, // 0060 LDINT R15 -1 - 0x7C300600, // 0061 CALL R12 3 - 0x8C341705, // 0062 GETMET R13 R11 K5 - 0x583C001A, // 0063 LDCONST R15 K26 - 0x5441FFFE, // 0064 LDINT R16 -1 - 0x7C340600, // 0065 CALL R13 3 - 0x24381908, // 0066 GT R14 R12 K8 - 0x783A0002, // 0067 JMPF R14 #006B - 0x8C38111B, // 0068 GETMET R14 R8 K27 - 0x04401909, // 0069 SUB R16 R12 K9 - 0x7C380400, // 006A CALL R14 2 - 0x24381B08, // 006B GT R14 R13 K8 - 0x783A0002, // 006C JMPF R14 #0070 - 0x8C38111B, // 006D GETMET R14 R8 K27 - 0x04401B09, // 006E SUB R16 R13 K9 - 0x7C380400, // 006F CALL R14 2 - 0xB83A2400, // 0070 GETNGBL R14 K18 - 0x603C0018, // 0071 GETGBL R15 G24 - 0x5840001C, // 0072 LDCONST R16 K28 - 0x5C441800, // 0073 MOVE R17 R12 - 0x5C481A00, // 0074 MOVE R18 R13 - 0x7C3C0600, // 0075 CALL R15 3 - 0x58400014, // 0076 LDCONST R16 K20 - 0x7C380400, // 0077 CALL R14 2 - 0x8C381705, // 0078 GETMET R14 R11 K5 - 0x5840001D, // 0079 LDCONST R16 K29 - 0x7C380400, // 007A CALL R14 2 - 0x783A0002, // 007B JMPF R14 #007F - 0x943C1D0C, // 007C GETIDX R15 R14 K12 - 0x243C1F08, // 007D GT R15 R15 K8 - 0x743E0000, // 007E JMPT R15 #0080 - 0x503C0001, // 007F LDBOOL R15 0 1 - 0x503C0200, // 0080 LDBOOL R15 1 0 - 0x60400008, // 0081 GETGBL R16 G8 - 0x5C440600, // 0082 MOVE R17 R3 - 0x7C400200, // 0083 CALL R16 1 - 0x60440013, // 0084 GETGBL R17 G19 - 0x7C440000, // 0085 CALL R17 0 - 0x783E0001, // 0086 JMPF R15 #0089 - 0x5848001E, // 0087 LDCONST R18 K30 - 0x70020000, // 0088 JMP #008A - 0x5848001F, // 0089 LDCONST R18 K31 - 0x98461412, // 008A SETIDX R17 K10 R18 - 0x98463E09, // 008B SETIDX R17 K31 R9 - 0x98082011, // 008C SETIDX R2 R16 R17 - 0x000C0709, // 008D ADD R3 R3 K9 - 0x00241309, // 008E ADD R9 R9 K9 - 0x7001FFB7, // 008F JMP #0048 - 0x6024000C, // 0090 GETGBL R9 G12 - 0xB82A1E00, // 0091 GETNGBL R10 K15 - 0x8C281520, // 0092 GETMET R10 R10 K32 - 0x7C280200, // 0093 CALL R10 1 - 0x7C240200, // 0094 CALL R9 1 - 0x58280008, // 0095 LDCONST R10 K8 - 0x78120000, // 0096 JMPF R4 #0098 - 0x04241309, // 0097 SUB R9 R9 K9 - 0x142C1409, // 0098 LT R11 R10 R9 - 0x782E0011, // 0099 JMPF R11 #00AC - 0x8C2C1105, // 009A GETMET R11 R8 K5 - 0x5C341400, // 009B MOVE R13 R10 - 0x7C2C0400, // 009C CALL R11 2 - 0x4C300000, // 009D LDNIL R12 - 0x1C2C160C, // 009E EQ R11 R11 R12 - 0x782E0009, // 009F JMPF R11 #00AA - 0x602C0008, // 00A0 GETGBL R11 G8 - 0x5C300600, // 00A1 MOVE R12 R3 - 0x7C2C0200, // 00A2 CALL R11 1 - 0x60300013, // 00A3 GETGBL R12 G19 - 0x7C300000, // 00A4 CALL R12 0 - 0x98321521, // 00A5 SETIDX R12 K10 K33 - 0x00341509, // 00A6 ADD R13 R10 K9 - 0x9832420D, // 00A7 SETIDX R12 K33 R13 - 0x9808160C, // 00A8 SETIDX R2 R11 R12 - 0x000C0709, // 00A9 ADD R3 R3 K9 - 0x00281509, // 00AA ADD R10 R10 K9 - 0x7001FFEB, // 00AB JMP #0098 - 0x8C2C0322, // 00AC GETMET R11 R1 K34 - 0xB8361E00, // 00AD GETNGBL R13 K15 - 0x8C341B23, // 00AE GETMET R13 R13 K35 - 0x7C340200, // 00AF CALL R13 1 - 0x7C2C0400, // 00B0 CALL R11 2 - 0x8C300124, // 00B1 GETMET R12 R0 K36 - 0x5C381600, // 00B2 MOVE R14 R11 - 0x7C300400, // 00B3 CALL R12 2 - 0x60340010, // 00B4 GETGBL R13 G16 - 0x5C381800, // 00B5 MOVE R14 R12 - 0x7C340200, // 00B6 CALL R13 1 - 0xA8020007, // 00B7 EXBLK 0 #00C0 - 0x5C381A00, // 00B8 MOVE R14 R13 - 0x7C380000, // 00B9 CALL R14 0 - 0x603C0008, // 00BA GETGBL R15 G8 - 0x5C400600, // 00BB MOVE R16 R3 - 0x7C3C0200, // 00BC CALL R15 1 - 0x98081E0E, // 00BD SETIDX R2 R15 R14 - 0x000C0709, // 00BE ADD R3 R3 K9 - 0x7001FFF7, // 00BF JMP #00B8 - 0x58340025, // 00C0 LDCONST R13 K37 - 0xAC340200, // 00C1 CATCH R13 1 0 - 0xB0080000, // 00C2 RAISE 2 R0 R0 - 0x80040400, // 00C3 RET 1 R2 + 0x58100003, // 0005 LDCONST R4 K3 + 0xA4160800, // 0006 IMPORT R5 K4 + 0x8C180B05, // 0007 GETMET R6 R5 K5 + 0x58200003, // 0008 LDCONST R8 K3 + 0x7C180400, // 0009 CALL R6 2 + 0x4C1C0000, // 000A LDNIL R7 + 0x201C0C07, // 000B NE R7 R6 R7 + 0x781E0066, // 000C JMPF R7 #0074 + 0x601C000C, // 000D GETGBL R7 G12 + 0x8C200D06, // 000E GETMET R8 R6 K6 + 0x58280007, // 000F LDCONST R10 K7 + 0x582C0008, // 0010 LDCONST R11 K8 + 0x7C200600, // 0011 CALL R8 3 + 0x7C1C0200, // 0012 CALL R7 1 + 0x58100009, // 0013 LDCONST R4 K9 + 0x24200F03, // 0014 GT R8 R7 K3 + 0x7822005D, // 0015 JMPF R8 #0074 + 0x1C200F09, // 0016 EQ R8 R7 K9 + 0x7822001E, // 0017 JMPF R8 #0037 + 0x60200008, // 0018 GETGBL R8 G8 + 0x5C240600, // 0019 MOVE R9 R3 + 0x7C200200, // 001A CALL R8 1 + 0x60240013, // 001B GETGBL R9 G19 + 0x7C240000, // 001C CALL R9 0 + 0x9826150B, // 001D SETIDX R9 K10 K11 + 0x98081009, // 001E SETIDX R2 R8 R9 + 0x000C0709, // 001F ADD R3 R3 K9 + 0x58200009, // 0020 LDCONST R8 K9 + 0x4C240000, // 0021 LDNIL R9 + 0x8C280B05, // 0022 GETMET R10 R5 K5 + 0x5C301000, // 0023 MOVE R12 R8 + 0x7C280400, // 0024 CALL R10 2 + 0x5C241400, // 0025 MOVE R9 R10 + 0x4C2C0000, // 0026 LDNIL R11 + 0x2028140B, // 0027 NE R10 R10 R11 + 0x782A000C, // 0028 JMPF R10 #0036 + 0x60280008, // 0029 GETGBL R10 G8 + 0x5C2C0600, // 002A MOVE R11 R3 + 0x7C280200, // 002B CALL R10 1 + 0x602C0013, // 002C GETGBL R11 G19 + 0x7C2C0000, // 002D CALL R11 0 + 0x982E150B, // 002E SETIDX R11 K10 K11 + 0x00301109, // 002F ADD R12 R8 K9 + 0x982E080C, // 0030 SETIDX R11 K4 R12 + 0x9808140B, // 0031 SETIDX R2 R10 R11 + 0x000C0709, // 0032 ADD R3 R3 K9 + 0x00100909, // 0033 ADD R4 R4 K9 + 0x00201109, // 0034 ADD R8 R8 K9 + 0x7001FFEB, // 0035 JMP #0022 + 0x7002003C, // 0036 JMP #0074 + 0x1C200F0C, // 0037 EQ R8 R7 K12 + 0x78220008, // 0038 JMPF R8 #0042 + 0x60200008, // 0039 GETGBL R8 G8 + 0x5C240600, // 003A MOVE R9 R3 + 0x7C200200, // 003B CALL R8 1 + 0x60240013, // 003C GETGBL R9 G19 + 0x7C240000, // 003D CALL R9 0 + 0x9826150D, // 003E SETIDX R9 K10 K13 + 0x98081009, // 003F SETIDX R2 R8 R9 + 0x000C0709, // 0040 ADD R3 R3 K9 + 0x70020031, // 0041 JMP #0074 + 0x1C200F0E, // 0042 EQ R8 R7 K14 + 0x7822002B, // 0043 JMPF R8 #0070 + 0x60200008, // 0044 GETGBL R8 G8 + 0x5C240600, // 0045 MOVE R9 R3 + 0x7C200200, // 0046 CALL R8 1 + 0x60240013, // 0047 GETGBL R9 G19 + 0x7C240000, // 0048 CALL R9 0 + 0x9826150F, // 0049 SETIDX R9 K10 K15 + 0x98081009, // 004A SETIDX R2 R8 R9 + 0x000C0709, // 004B ADD R3 R3 K9 + 0x8C200B05, // 004C GETMET R8 R5 K5 + 0x58280009, // 004D LDCONST R10 K9 + 0x7C200400, // 004E CALL R8 2 + 0x4C240000, // 004F LDNIL R9 + 0x20241009, // 0050 NE R9 R8 R9 + 0x7826001C, // 0051 JMPF R9 #006F + 0x6024000C, // 0052 GETGBL R9 G12 + 0x8C281106, // 0053 GETMET R10 R8 K6 + 0x58300007, // 0054 LDCONST R12 K7 + 0x58340008, // 0055 LDCONST R13 K8 + 0x7C280600, // 0056 CALL R10 3 + 0x7C240200, // 0057 CALL R9 1 + 0x1C281309, // 0058 EQ R10 R9 K9 + 0x782A0009, // 0059 JMPF R10 #0064 + 0x60280008, // 005A GETGBL R10 G8 + 0x5C2C0600, // 005B MOVE R11 R3 + 0x7C280200, // 005C CALL R10 1 + 0x602C0013, // 005D GETGBL R11 G19 + 0x7C2C0000, // 005E CALL R11 0 + 0x982E150B, // 005F SETIDX R11 K10 K11 + 0x9808140B, // 0060 SETIDX R2 R10 R11 + 0x000C0709, // 0061 ADD R3 R3 K9 + 0x00100909, // 0062 ADD R4 R4 K9 + 0x7002000A, // 0063 JMP #006F + 0x1C28130C, // 0064 EQ R10 R9 K12 + 0x782A0008, // 0065 JMPF R10 #006F + 0x60280008, // 0066 GETGBL R10 G8 + 0x5C2C0600, // 0067 MOVE R11 R3 + 0x7C280200, // 0068 CALL R10 1 + 0x602C0013, // 0069 GETGBL R11 G19 + 0x7C2C0000, // 006A CALL R11 0 + 0x982E150D, // 006B SETIDX R11 K10 K13 + 0x9808140B, // 006C SETIDX R2 R10 R11 + 0x000C0709, // 006D ADD R3 R3 K9 + 0x00100909, // 006E ADD R4 R4 K9 + 0x70020003, // 006F JMP #0074 + 0x54220003, // 0070 LDINT R8 4 + 0x1C200E08, // 0071 EQ R8 R7 R8 + 0x78220000, // 0072 JMPF R8 #0074 + 0x7001FFFF, // 0073 JMP #0074 + 0xB81E2000, // 0074 GETNGBL R7 K16 + 0x8C1C0F11, // 0075 GETMET R7 R7 K17 + 0x58240012, // 0076 LDCONST R9 K18 + 0x50280200, // 0077 LDBOOL R10 1 0 + 0x7C1C0600, // 0078 CALL R7 3 + 0x60200012, // 0079 GETGBL R8 G18 + 0x7C200000, // 007A CALL R8 0 + 0xB8262600, // 007B GETNGBL R9 K19 + 0x60280008, // 007C GETGBL R10 G8 + 0x5C2C0E00, // 007D MOVE R11 R7 + 0x7C280200, // 007E CALL R10 1 + 0x002A280A, // 007F ADD R10 K20 R10 + 0x582C000E, // 0080 LDCONST R11 K14 + 0x7C240400, // 0081 CALL R9 2 + 0x4C240000, // 0082 LDNIL R9 + 0x20240E09, // 0083 NE R9 R7 R9 + 0x7826004D, // 0084 JMPF R9 #00D3 + 0x8C240F15, // 0085 GETMET R9 R7 K21 + 0x582C0016, // 0086 LDCONST R11 K22 + 0x7C240400, // 0087 CALL R9 2 + 0x78260049, // 0088 JMPF R9 #00D3 + 0x941C0F16, // 0089 GETIDX R7 R7 K22 + 0x58240003, // 008A LDCONST R9 K3 + 0x50280200, // 008B LDBOOL R10 1 0 + 0x782A0045, // 008C JMPF R10 #00D3 + 0x60280008, // 008D GETGBL R10 G8 + 0x5C2C1200, // 008E MOVE R11 R9 + 0x7C280200, // 008F CALL R10 1 + 0x002A2E0A, // 0090 ADD R10 K23 R10 + 0x8C2C0F15, // 0091 GETMET R11 R7 K21 + 0x5C341400, // 0092 MOVE R13 R10 + 0x7C2C0400, // 0093 CALL R11 2 + 0x742E0000, // 0094 JMPT R11 #0096 + 0x7002003C, // 0095 JMP #00D3 + 0x942C0E0A, // 0096 GETIDX R11 R7 R10 + 0xB8322600, // 0097 GETNGBL R12 K19 + 0x60340018, // 0098 GETGBL R13 G24 + 0x58380018, // 0099 LDCONST R14 K24 + 0x5C3C1400, // 009A MOVE R15 R10 + 0x60400008, // 009B GETGBL R16 G8 + 0x5C441600, // 009C MOVE R17 R11 + 0x7C400200, // 009D CALL R16 1 + 0x7C340600, // 009E CALL R13 3 + 0x5838000E, // 009F LDCONST R14 K14 + 0x7C300400, // 00A0 CALL R12 2 + 0x8C301706, // 00A1 GETMET R12 R11 K6 + 0x58380019, // 00A2 LDCONST R14 K25 + 0x543DFFFE, // 00A3 LDINT R15 -1 + 0x7C300600, // 00A4 CALL R12 3 + 0x8C341706, // 00A5 GETMET R13 R11 K6 + 0x583C001A, // 00A6 LDCONST R15 K26 + 0x5441FFFE, // 00A7 LDINT R16 -1 + 0x7C340600, // 00A8 CALL R13 3 + 0x24381903, // 00A9 GT R14 R12 K3 + 0x783A0002, // 00AA JMPF R14 #00AE + 0x8C38111B, // 00AB GETMET R14 R8 K27 + 0x04401909, // 00AC SUB R16 R12 K9 + 0x7C380400, // 00AD CALL R14 2 + 0x24381B03, // 00AE GT R14 R13 K3 + 0x783A0002, // 00AF JMPF R14 #00B3 + 0x8C38111B, // 00B0 GETMET R14 R8 K27 + 0x04401B09, // 00B1 SUB R16 R13 K9 + 0x7C380400, // 00B2 CALL R14 2 + 0xB83A2600, // 00B3 GETNGBL R14 K19 + 0x603C0018, // 00B4 GETGBL R15 G24 + 0x5840001C, // 00B5 LDCONST R16 K28 + 0x5C441800, // 00B6 MOVE R17 R12 + 0x5C481A00, // 00B7 MOVE R18 R13 + 0x7C3C0600, // 00B8 CALL R15 3 + 0x5840000E, // 00B9 LDCONST R16 K14 + 0x7C380400, // 00BA CALL R14 2 + 0x8C381706, // 00BB GETMET R14 R11 K6 + 0x5840001D, // 00BC LDCONST R16 K29 + 0x7C380400, // 00BD CALL R14 2 + 0x783A0002, // 00BE JMPF R14 #00C2 + 0x943C1D0C, // 00BF GETIDX R15 R14 K12 + 0x243C1F03, // 00C0 GT R15 R15 K3 + 0x743E0000, // 00C1 JMPT R15 #00C3 + 0x503C0001, // 00C2 LDBOOL R15 0 1 + 0x503C0200, // 00C3 LDBOOL R15 1 0 + 0x60400008, // 00C4 GETGBL R16 G8 + 0x5C440600, // 00C5 MOVE R17 R3 + 0x7C400200, // 00C6 CALL R16 1 + 0x60440013, // 00C7 GETGBL R17 G19 + 0x7C440000, // 00C8 CALL R17 0 + 0x783E0001, // 00C9 JMPF R15 #00CC + 0x5848001E, // 00CA LDCONST R18 K30 + 0x70020000, // 00CB JMP #00CD + 0x5848001F, // 00CC LDCONST R18 K31 + 0x98461412, // 00CD SETIDX R17 K10 R18 + 0x98463E09, // 00CE SETIDX R17 K31 R9 + 0x98082011, // 00CF SETIDX R2 R16 R17 + 0x000C0709, // 00D0 ADD R3 R3 K9 + 0x00241309, // 00D1 ADD R9 R9 K9 + 0x7001FFB7, // 00D2 JMP #008B + 0x6024000C, // 00D3 GETGBL R9 G12 + 0xB82A2000, // 00D4 GETNGBL R10 K16 + 0x8C281520, // 00D5 GETMET R10 R10 K32 + 0x7C280200, // 00D6 CALL R10 1 + 0x7C240200, // 00D7 CALL R9 1 + 0x58280003, // 00D8 LDCONST R10 K3 + 0x04241204, // 00D9 SUB R9 R9 R4 + 0x142C1409, // 00DA LT R11 R10 R9 + 0x782E0011, // 00DB JMPF R11 #00EE + 0x8C2C1106, // 00DC GETMET R11 R8 K6 + 0x5C341400, // 00DD MOVE R13 R10 + 0x7C2C0400, // 00DE CALL R11 2 + 0x4C300000, // 00DF LDNIL R12 + 0x1C2C160C, // 00E0 EQ R11 R11 R12 + 0x782E0009, // 00E1 JMPF R11 #00EC + 0x602C0008, // 00E2 GETGBL R11 G8 + 0x5C300600, // 00E3 MOVE R12 R3 + 0x7C2C0200, // 00E4 CALL R11 1 + 0x60300013, // 00E5 GETGBL R12 G19 + 0x7C300000, // 00E6 CALL R12 0 + 0x98321521, // 00E7 SETIDX R12 K10 K33 + 0x00341509, // 00E8 ADD R13 R10 K9 + 0x9832420D, // 00E9 SETIDX R12 K33 R13 + 0x9808160C, // 00EA SETIDX R2 R11 R12 + 0x000C0709, // 00EB ADD R3 R3 K9 + 0x00281509, // 00EC ADD R10 R10 K9 + 0x7001FFEB, // 00ED JMP #00DA + 0x8C2C0322, // 00EE GETMET R11 R1 K34 + 0xB8362000, // 00EF GETNGBL R13 K16 + 0x8C341B23, // 00F0 GETMET R13 R13 K35 + 0x7C340200, // 00F1 CALL R13 1 + 0x7C2C0400, // 00F2 CALL R11 2 + 0x8C300124, // 00F3 GETMET R12 R0 K36 + 0x5C381600, // 00F4 MOVE R14 R11 + 0x7C300400, // 00F5 CALL R12 2 + 0x60340010, // 00F6 GETGBL R13 G16 + 0x5C381800, // 00F7 MOVE R14 R12 + 0x7C340200, // 00F8 CALL R13 1 + 0xA8020007, // 00F9 EXBLK 0 #0102 + 0x5C381A00, // 00FA MOVE R14 R13 + 0x7C380000, // 00FB CALL R14 0 + 0x603C0008, // 00FC GETGBL R15 G8 + 0x5C400600, // 00FD MOVE R16 R3 + 0x7C3C0200, // 00FE CALL R15 1 + 0x98081E0E, // 00FF SETIDX R2 R15 R14 + 0x000C0709, // 0100 ADD R3 R3 K9 + 0x7001FFF7, // 0101 JMP #00FA + 0x58340025, // 0102 LDCONST R13 K37 + 0xAC340200, // 0103 CATCH R13 1 0 + 0xB0080000, // 0104 RAISE 2 R0 R0 + 0x80040400, // 0105 RET 1 R2 }) ) ); diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino index 11bec6baa..31eb37125 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino @@ -105,7 +105,7 @@ extern "C" { } } } else { // Light.pwm_multi_channels - if ((light_num >= 0) && (light_num < LST_MAX)) { + if ((light_num >= 0) && (light_num < LST_MAX) && (light_num < Light.subtype)) { data_present = true; be_map_insert_bool(vm, "power", Light.power & (1 << light_num)); be_map_insert_int(vm, "bri", Light.current_color[light_num]); @@ -221,56 +221,72 @@ extern "C" { } } - // ct - if (has_ct) { - light_controller.changeCTB(val_ct, light_state.getBriCT()); - } - - // hue - if (has_hue) { - uint8_t sat; - uint8_t bri; - light_state.getHSB(nullptr, &sat, &bri); - light_controller.changeHSB(val_hue, sat, bri); - } - - // sat - if (has_sat) { - uint16_t hue; - uint8_t bri; - light_state.getHSB(&hue, nullptr, &bri); - light_controller.changeHSB(hue, val_sat, bri); - } - - // rgb - if (has_rgb) { - SBuffer buf = SBuffer::SBufferFromHex(val_rgb_s, strlen(val_rgb_s)); - uint8_t channels[LST_MAX] = {}; - memcpy(channels, buf.buf(), buf.len() > LST_MAX ? LST_MAX : buf.len()); - bool on = false; // if all are zero, then only set power off - for (uint32_t i = 0; i < LST_MAX; i++) { - if (channels[i] != 0) { on = true; } + if (!Light.pwm_multi_channels) { + // ct + if (has_ct) { + light_controller.changeCTB(val_ct, light_state.getBriCT()); } - if (on) { - light_controller.changeChannels(channels); - } else { - ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY); - } - } - // channels - if (has_channels) { - if (val_on) { - light_controller.changeChannels(channels); - } else { - ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY); + // hue + if (has_hue) { + uint8_t sat; + uint8_t bri; + light_state.getHSB(nullptr, &sat, &bri); + light_controller.changeHSB(val_hue, sat, bri); } - } - // bri is done after channels and rgb - // bri - if (has_bri) { - light_controller.changeBri(val_bri); + // sat + if (has_sat) { + uint16_t hue; + uint8_t bri; + light_state.getHSB(&hue, nullptr, &bri); + light_controller.changeHSB(hue, val_sat, bri); + } + + // rgb + if (has_rgb) { + SBuffer buf = SBuffer::SBufferFromHex(val_rgb_s, strlen(val_rgb_s)); + uint8_t channels[LST_MAX] = {}; + memcpy(channels, buf.buf(), buf.len() > LST_MAX ? LST_MAX : buf.len()); + bool on = false; // if all are zero, then only set power off + for (uint32_t i = 0; i < LST_MAX; i++) { + if (channels[i] != 0) { on = true; } + } + if (on) { + light_controller.changeChannels(channels); + } else { + ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY); + } + } + + // channels + if (has_channels) { + if (val_on) { + light_controller.changeChannels(channels); + } else { + ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY); + } + } + + // bri is done after channels and rgb + // bri + if (has_bri) { + if (light_controller.isCTRGBLinked()) { + light_controller.changeBri(val_bri); + } else { + if (idx == 0) { + light_controller.changeBriRGB(val_bri); + } else { + light_controller.changeBriCT(val_bri); + } + } + } + } else { + // multi-channel (SetOption68 1) + // bri + if (has_bri) { + LightSetBri(Light.device + idx, val_bri); + } } push_getlight(vm, idx); From ddcc7d99903749e85cce3911f70a6b403b349a59 Mon Sep 17 00:00:00 2001 From: gemu Date: Wed, 24 Jul 2024 13:32:03 +0200 Subject: [PATCH 179/252] jpeg on bw displays (#21832) --- lib/lib_display/UDisplay/uDisplay.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index d20f6037c..0bd51ae40 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -2196,6 +2196,7 @@ void uDisplay::pushColorsMono(uint16_t *data, uint16_t len, bool rgb16_swap) { uint16_t rgb16_to_mono_mask = rgb16_swap ? RGB16_SWAP_TO_MONO : RGB16_TO_MONO; for (uint32_t y = seta_yp1; y < seta_yp2; y++) { + seta_yp1++; for (uint32_t x = seta_xp1; x < seta_xp2; x++) { uint16_t color = *data++; if (bpp == 1) color = (color & rgb16_to_mono_mask) ? 1 : 0; From 0784637f4f157b7a8ff7ef4364e6abcf40724950 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 24 Jul 2024 13:41:58 +0200 Subject: [PATCH 180/252] Update changelogs --- CHANGELOG.md | 6 +++--- RELEASENOTES.md | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f07e8b70..eaf1201c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,15 +6,15 @@ All notable changes to this project will be documented in this file. ## [14.1.0.4] ### Added - Support for Sonoff iFan04-H using template (#16402) -- Matter improve internal `inspect`for superclasses -- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) +- Matter improve internal `inspect`for superclasses (#21824) +- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) ### Breaking Changed ### Changed ### Fixed -- Berry fix `light.get` for separate RGB/CT +- Berry `light.get` for separate RGB/CT (#21818) ### Removed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d102f3898..b57057ace 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -149,6 +149,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Matter show event name in logs [#21649](https://github.com/arendst/Tasmota/issues/21649) - Matter full support of events [#21698](https://github.com/arendst/Tasmota/issues/21698) - Matter support for 'Generic Switch' based on Tasmota Buttons [#21731](https://github.com/arendst/Tasmota/issues/21731) +- Matter improve internal `inspect`for superclasses [#21824](https://github.com/arendst/Tasmota/issues/21824) +- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) [#21834](https://github.com/arendst/Tasmota/issues/21834) ### Changed - ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668) @@ -181,6 +183,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 Resistive Touch xpt for 2 spi busses [#21814](https://github.com/arendst/Tasmota/issues/21814) - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) - Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716) +- Berry `light.get` for separate RGB/CT [#21818](https://github.com/arendst/Tasmota/issues/21818) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) - Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644) - Matter TLV.U8 unsigned encoding [#21672](https://github.com/arendst/Tasmota/issues/21672) From db3e29dd47c5e0d517cdfba5a2d99b6e11481cf3 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 24 Jul 2024 14:24:11 +0200 Subject: [PATCH 181/252] Berry fix `bytes` setters and getters with negative offsets (#21835) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_byteslib.c | 74 +++++++++++++++++++--------- lib/libesp32/berry/tests/bytes.be | 50 ++++++++++++++++--- 3 files changed, 94 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaf1201c2..14e84f0b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. ### Fixed - Berry `light.get` for separate RGB/CT (#21818) +- Berry fix `bytes` setters and getters with negative offsets ### Removed diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c index f40bc7f43..e2f2257e0 100644 --- a/lib/libesp32/berry/src/be_byteslib.c +++ b/lib/libesp32/berry/src/be_byteslib.c @@ -868,9 +868,15 @@ static int m_get(bvm *vm, bbool sign) if (argc >= 3 && be_isint(vm, 3)) { vsize = be_toint(vm, 3); } + if (idx < 0) { + idx = attr.len + idx; /* if index is negative, count from end */ + } + if (idx < 0) { + vsize = 0; /* if still negative, then invalid, return 0 */ + } int ret = 0; switch (vsize) { - case 0: break; + case 0: break; case -1: /* fallback below */ case 1: ret = buf_get1(&attr, idx); if (sign) { ret = (int8_t)(uint8_t) ret; } @@ -892,11 +898,7 @@ static int m_get(bvm *vm, bbool sign) default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4."); } be_pop(vm, argc - 1); - if (vsize != 0) { - be_pushint(vm, ret); - } else { - be_pushnil(vm); - } + be_pushint(vm, ret); be_return(vm); } be_return_nil(vm); @@ -913,14 +915,20 @@ static int m_getfloat(bvm *vm) check_ptr(vm, &attr); if (argc >=2 && be_isint(vm, 2)) { int32_t idx = be_toint(vm, 2); - bbool be = bfalse; /* little endian? */ - if (argc >= 3) { - be = be_tobool(vm, 3); + float ret_f = 0; + if (idx < 0) { + idx = attr.len + idx; /* if index is negative, count from end */ + } + if (idx >= 0) { + bbool be = bfalse; /* little endian? */ + if (argc >= 3) { + be = be_tobool(vm, 3); + } + int32_t ret_i = be ? buf_get4_be(&attr, idx) : buf_get4_le(&attr, idx); + ret_f = *(float*) &ret_i; } - int32_t ret_i = be ? buf_get4_be(&attr, idx) : buf_get4_le(&attr, idx); - float* ret_f = (float*) &ret_i; be_pop(vm, argc - 1); - be_pushreal(vm, *ret_f); + be_pushreal(vm, ret_f); be_return(vm); } be_return_nil(vm); @@ -958,8 +966,14 @@ static int m_set(bvm *vm) if (argc >= 4 && be_isint(vm, 4)) { vsize = be_toint(vm, 4); } + if (idx < 0) { + idx = attr.len + idx; /* if index is negative, count from end */ + } + if (idx < 0) { + vsize = 0; /* if still negative, then invalid, do nothing */ + } switch (vsize) { - case 0: break; + case 0: break; case -1: /* fallback below */ case 1: buf_set1(&attr, idx, value); break; case 2: buf_set2_le(&attr, idx, value); break; @@ -971,7 +985,7 @@ static int m_set(bvm *vm) default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4."); } be_pop(vm, argc - 1); - m_write_attributes(vm, 1, &attr); /* update attributes */ + // m_write_attributes(vm, 1, &attr); /* update attributes */ be_return_nil(vm); } be_return_nil(vm); @@ -989,15 +1003,20 @@ static int m_setfloat(bvm *vm) check_ptr_modifiable(vm, &attr); if (argc >=3 && be_isint(vm, 2) && (be_isint(vm, 3) || be_isreal(vm, 3))) { int32_t idx = be_toint(vm, 2); - float val_f = (float) be_toreal(vm, 3); - int32_t* val_i = (int32_t*) &val_f; - bbool be = bfalse; - if (argc >= 4) { - be = be_tobool(vm, 4); + if (idx < 0) { + idx = attr.len + idx; /* if index is negative, count from end */ + } + if (idx >= 0) { + float val_f = (float) be_toreal(vm, 3); + int32_t* val_i = (int32_t*) &val_f; + bbool be = bfalse; + if (argc >= 4) { + be = be_tobool(vm, 4); + } + if (be) { buf_set4_be(&attr, idx, *val_i); } else { buf_set4_le(&attr, idx, *val_i); } + be_pop(vm, argc - 1); + // m_write_attributes(vm, 1, &attr); /* update attributes */ } - if (be) { buf_set4_be(&attr, idx, *val_i); } else { buf_set4_le(&attr, idx, *val_i); } - be_pop(vm, argc - 1); - m_write_attributes(vm, 1, &attr); /* update attributes */ be_return_nil(vm); } be_return_nil(vm); @@ -1046,7 +1065,10 @@ static int m_setbytes(bvm *vm) int32_t idx = be_toint(vm, 2); size_t from_len_total; const uint8_t* buf_ptr = (const uint8_t*) be_tobytes(vm, 3, &from_len_total); - if (idx < 0) { idx = 0; } + if (idx < 0) { + idx = attr.len + idx; /* if index is negative, count from end */ + } + if (idx < 0) { idx = 0; } /* if still negative, start from offset 0 */ if (idx >= attr.len) { idx = attr.len; } int32_t from_byte = 0; @@ -1093,6 +1115,7 @@ static int m_reverse(bvm *vm) if (argc >= 2 && be_isint(vm, 2)) { idx = be_toint(vm, 2); + if (idx < 0) { idx = attr.len + idx; } /* if negative, count from end */ if (idx < 0) { idx = 0; } /* railguards */ if (idx > attr.len) { idx = attr.len; } } @@ -1140,9 +1163,12 @@ static int m_setitem(bvm *vm) if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) { int index = be_toint(vm, 2); int val = be_toint(vm, 3); + if (index < 0) { + index += attr.len; /* if index is negative, count from end */ + } if (index >= 0 && index < attr.len) { buf_set1(&attr, index, val); - m_write_attributes(vm, 1, &attr); /* update attributes */ + // m_write_attributes(vm, 1, &attr); /* update attributes */ be_return_nil(vm); } } diff --git a/lib/libesp32/berry/tests/bytes.be b/lib/libesp32/berry/tests/bytes.be index c4d4af3f6..1f58118e7 100644 --- a/lib/libesp32/berry/tests/bytes.be +++ b/lib/libesp32/berry/tests/bytes.be @@ -1,3 +1,12 @@ +def assert_error(f, error_type) + try + f() + assert(false, 'unexpected execution flow') + except .. as e, m + assert(e == error_type) + end +end + #- basic initialization -# b=bytes() assert(str(b) == "bytes('')") @@ -48,18 +57,22 @@ assert(str(b) == "bytes('227878567856341278567812345678')") #- get -# b=bytes("000102030405") assert(b.get(0) == 0) -assert(b.get(-1) == 0) #- could consider nil as well -# -assert(b.get(6) == 0) #- could consider nil as well -# +assert(b.get(-1) == 0x05) #- last byte -# +assert(b.get(6) == 0) assert(b.get(1) == 1) assert(b.get(5) == 5) +assert(b.get(-1000) == 0) # out of range, default to zero +assert(b.get(1000) == 0) # out of range, default to zero -assert(b.get(1,0) == nil) assert(b.get(1,1) == 0x01) assert(b.get(1,2) == 0x0201) assert(b.get(1,4) == 0x04030201) assert(b.get(1,-1) == 0x01) assert(b.get(1,-2) == 0x0102) #- big endian -# assert(b.get(1,-4) == 0x01020304) +assert(b.get(1,0) == 0) # size zero is invalid, returns zero +assert(b.get(-1000,1) == 0) # out of range, default to zero +assert(b.get(1000,1) == 0) # out of range, default to zero #- resize -# assert(bytes().size() == 0) @@ -76,6 +89,10 @@ assert(b.size() == 20) b.resize(0) assert(str(b) == "bytes('')") assert(b.size() == 0) +b=bytes("112233") +b.resize(-5) # resize negative is equivalent to resize(0) +assert(str(b) == "bytes('')") +assert(b.size() == 0) #- clear -# b=bytes("aabb") @@ -110,7 +127,7 @@ assert(str(b) == "bytes('AA')") b = b1 + '01' assert(str(b) == "bytes('AA3031')") -#- .. and append as synonym-# +#- .. and append as synonyms -# b1 = bytes("1122") b2 = bytes("334455") b = b1..b2 @@ -143,6 +160,12 @@ b = bytes("334455") assert(b[0] == 0x33) assert(b[1] == 0x44) assert(b[2] == 0x55) +assert(b[-1] == 0x55) +assert(b[-2] == 0x44) +assert(b[-3] == 0x33) +# out of range raises "index_error" exceptions +assert_error(def () return b[-4] end, 'index_error') +assert_error(def () return b[4] end, 'index_error') #- item range -# b = bytes("00112233445566778899AABBCCDDEEFF") @@ -169,6 +192,14 @@ b[0]=0xBB assert(str(b) =="bytes('BBAA33')") b[2]=-1 assert(str(b) =="bytes('BBAAFF')") +# negative indices, counting from end +b[-1]=0xFE +assert(str(b) =="bytes('BBAAFE')") +b[-3]=0xBC +assert(str(b) =="bytes('BCAAFE')") +# out of range raises "index_error" exceptions +assert_error(def () b[-4]=0x11 end, 'index_error') +assert_error(def () b[4]=0x11 end, 'index_error') #- resize -# b=bytes() @@ -191,9 +222,7 @@ b.fromstring("Aa0") assert(str(b) =="bytes('416130')") b=bytes() b.fromstring("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") -assert(str(b) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73...')") assert(b.tostring(0) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')") - assert(size(bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')) == 123) #- negative index -# @@ -217,6 +246,13 @@ b.setfloat(0, 0.33) assert(b == bytes('C3F5A83E')) b = bytes("0000C03F") assert(b.getfloat(0) == 1.5) +b.addfloat(0.33) +assert(b == bytes("0000C03FC3F5A83E")) +b.addfloat(0.33, true) #- Big Endian -# +assert(b == bytes("0000C03FC3F5A83E3EA8F5C3")) +b = bytes("") +b.addfloat(42) #- add integer -# +assert(b == bytes("00002842")) #- fromhex -# b = bytes("112233") @@ -264,7 +300,7 @@ assert(bytes("0011223344").reverse(3) == bytes("0011224433")) assert(bytes("0011223344").reverse(4) == bytes("0011223344")) assert(bytes("0011223344").reverse(5) == bytes("0011223344")) assert(bytes("0011223344").reverse(15) == bytes("0011223344")) -assert(bytes("0011223344").reverse(-2) == bytes("4433221100")) +assert(bytes("0011223344").reverse(-2) == bytes("0011224433")) # reverse starting 2 from end assert(bytes("0011223344").reverse(1,3) == bytes("0033221144")) assert(bytes("0011223344").reverse(1,0) == bytes("0011223344")) From bf7fbf2cbeb825446837b89d96721cef27382762 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 24 Jul 2024 22:59:53 +0200 Subject: [PATCH 182/252] Berry internal: remove class from closure to simplify code (#21839) --- CHANGELOG.md | 2 +- lib/libesp32/berry/src/be_api.c | 16 - lib/libesp32/berry/src/be_bytecode.c | 4 +- lib/libesp32/berry/src/be_parser.c | 16 +- lib/libesp32/berry/src/be_solidifylib.c | 67 +- lib/libesp32/berry/tests/class.be | 15 - .../src/solidify/solidified_animate_1_core.h | 57 +- .../solidified_animate_2_animate_effects.h | 27 +- .../solidify/solidified_animate_9_module.h | 72 +- .../solidified_leds_frame_be_methods.h | 12 +- .../solidify/solidified_Matter_0_Inspect.h | 10 +- .../src/solidify/solidified_Matter_Base38.h | 6 +- .../solidified_Matter_Commissioning.h | 36 +- .../solidified_Matter_Commissioning_Data.h | 27 +- .../solidified_Matter_Control_Message.h | 12 +- .../solidify/solidified_Matter_EventHandler.h | 51 +- .../solidify/solidified_Matter_Expirable.h | 63 +- .../src/solidify/solidified_Matter_Fabric.h | 126 ++-- .../solidify/solidified_Matter_HTTP_async.h | 66 +- .../solidify/solidified_Matter_HTTP_remote.h | 61 +- .../src/solidify/solidified_Matter_IM.h | 90 +-- .../src/solidify/solidified_Matter_IM_Data.h | 153 ++-- .../solidify/solidified_Matter_IM_Message.h | 93 +-- .../solidified_Matter_IM_Subscription.h | 54 +- .../src/solidify/solidified_Matter_Message.h | 33 +- .../solidified_Matter_MessageHandler.h | 21 +- .../src/solidify/solidified_Matter_Module.h | 4 +- .../src/solidify/solidified_Matter_Path_0.h | 12 +- .../solidified_Matter_Path_1_EventGenerator.h | 24 +- .../solidified_Matter_Path_1_PathGenerator.h | 33 +- .../src/solidify/solidified_Matter_Plugin_0.h | 101 +-- .../solidified_Matter_Plugin_1_Aggregator.h | 6 +- .../solidified_Matter_Plugin_1_Device.h | 54 +- .../solidified_Matter_Plugin_1_Root.h | 15 +- .../solidify/solidified_Matter_Plugin_2_Fan.h | 18 +- .../solidified_Matter_Plugin_2_Light0.h | 32 +- .../solidified_Matter_Plugin_2_Sensor.h | 27 +- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 30 +- ...olidified_Matter_Plugin_2_Sensor_Boolean.h | 17 +- ...Matter_Plugin_2_Sensor_GenericSwitch_Btn.h | 17 +- .../solidified_Matter_Plugin_2_Shutter.h | 20 +- .../solidified_Matter_Plugin_3_Light1.h | 30 +- ...olidified_Matter_Plugin_3_Sensor_Contact.h | 15 +- .../solidified_Matter_Plugin_3_Sensor_Flow.h | 12 +- ...lidified_Matter_Plugin_3_Sensor_Humidity.h | 12 +- ...ified_Matter_Plugin_3_Sensor_Illuminance.h | 12 +- ...idified_Matter_Plugin_3_Sensor_Occupancy.h | 15 +- .../solidified_Matter_Plugin_3_Sensor_OnOff.h | 9 +- ...lidified_Matter_Plugin_3_Sensor_Pressure.h | 12 +- .../solidified_Matter_Plugin_3_Sensor_Rain.h | 15 +- .../solidified_Matter_Plugin_3_Sensor_Temp.h | 12 +- ...idified_Matter_Plugin_3_Sensor_Waterleak.h | 104 ++- .../solidified_Matter_Plugin_3_ShutterTilt.h | 12 +- .../solidified_Matter_Plugin_4_Light2.h | 30 +- .../solidified_Matter_Plugin_4_Light3.h | 27 +- ...solidified_Matter_Plugin_8_Bridge_Light1.h | 2 +- ...solidified_Matter_Plugin_8_Bridge_Light2.h | 2 +- ...solidified_Matter_Plugin_8_Bridge_Light3.h | 2 +- .../solidified_Matter_Plugin_8_Bridge_OnOff.h | 3 +- .../src/solidify/solidified_Matter_Profiler.h | 15 +- .../src/solidify/solidified_Matter_Session.h | 129 ++-- .../solidified_Matter_Session_Store.h | 72 +- .../solidify/solidified_Matter_TCP_async.h | 63 +- .../src/solidify/solidified_Matter_TLV.h | 144 ++-- .../solidify/solidified_Matter_UDPServer.h | 42 +- .../src/solidify/solidified_Matter_UI.h | 78 +- .../solidify/solidified_Matter_zz_Device.h | 250 +++---- .../src/solidify/solidified_Wire.h | 6 +- .../src/solidify/solidified_autoconf_module.h | 55 +- .../solidified_crypto_pbkdf2_hmac_sha256.h | 7 +- .../solidified_crypto_spake2p_matter.h | 30 +- .../src/solidify/solidified_driver_class.h | 6 +- .../src/solidify/solidified_dyn.h | 12 +- .../src/solidify/solidified_energy.h | 10 +- .../src/solidify/solidified_hue_bridge.h | 29 +- .../src/solidify/solidified_i2c_axp192.h | 71 +- .../src/solidify/solidified_i2c_axp202.h | 65 +- .../src/solidify/solidified_i2c_driver.h | 30 +- .../src/solidify/solidified_i2c_ft3663.h | 9 +- .../src/solidify/solidified_leds.h | 168 ++--- .../src/solidify/solidified_lv_tasmota.h | 14 +- .../solidify/solidified_lv_tasmota_widgets.h | 72 +- .../src/solidify/solidified_mqtt.h | 30 +- .../src/solidify/solidified_partition_core.h | 116 +-- .../src/solidify/solidified_persist.h | 44 +- .../src/solidify/solidified_python_compat.h | 2 +- .../src/solidify/solidified_rule_matcher.h | 87 +-- .../src/solidify/solidified_tapp.h | 8 +- .../src/solidify/solidified_tasmota_class.h | 130 ++-- .../src/solidify/solidified_trigger_class.h | 12 +- .../src/solidify/solidified_uuid.h | 2 +- .../src/solidify/solidified_zigbee.h | 3 +- .../src/solidify/solidified_zigbee_zb_coord.h | 12 +- .../solidified_zigbee_zcl_attribute.h | 36 +- .../solidify/solidified_zigbee_zcl_frame.h | 15 +- .../src/solidify/solidified_lv.h | 2 +- .../src/solidify/solidified_lvgl_extra.h | 29 +- .../src/solidify/solidified_lvgl_glob.h | 65 +- .../src/solidify/solidified_lv_haspmota.h | 696 ++++++------------ 99 files changed, 1585 insertions(+), 3007 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14e84f0b0..b6a827706 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ All notable changes to this project will be documented in this file. - Berry fix `bytes` setters and getters with negative offsets ### Removed - +- Berry internal: remove class from closure to simplify code ## [14.1.0.3] 20240722 ### Added diff --git a/lib/libesp32/berry/src/be_api.c b/lib/libesp32/berry/src/be_api.c index f3851b5c6..6ccb65c5a 100644 --- a/lib/libesp32/berry/src/be_api.c +++ b/lib/libesp32/berry/src/be_api.c @@ -544,22 +544,6 @@ BERRY_API bbool be_classof(bvm *vm, int index) binstance *ins = var_toobj(v); var_setclass(top, be_instance_class(ins)); return btrue; - } else if (var_isclosure(v)) { - bclosure *cl = var_toobj(v); - bproto *pr = cl->proto; - if (pr != NULL) { - bclass *cla; - if (pr->nproto > 0) { - cla = (bclass*) pr->ptab[pr->nproto]; - } else { - cla = (bclass*) pr->ptab; - } - if (cla && var_basetype(cla) == BE_CLASS) { - bvalue *top = be_incrtop(vm); - var_setclass(top, cla); - return btrue; - } - } } return bfalse; } diff --git a/lib/libesp32/berry/src/be_bytecode.c b/lib/libesp32/berry/src/be_bytecode.c index 8db2f90da..a636567fa 100644 --- a/lib/libesp32/berry/src/be_bytecode.c +++ b/lib/libesp32/berry/src/be_bytecode.c @@ -524,8 +524,8 @@ static void load_proto_table(bvm *vm, void *fp, bproto *proto, int info, int ver { int size = (int)load_long(fp); /* proto count */ if (size) { - bproto **p = be_malloc(vm, sizeof(bproto *) * (size + 1)); - memset(p, 0, sizeof(bproto *) * (size + 1)); + bproto **p = be_malloc(vm, sizeof(bproto *) * size); + memset(p, 0, sizeof(bproto *) * size); proto->ptab = p; proto->nproto = size; while (size--) { diff --git a/lib/libesp32/berry/src/be_parser.c b/lib/libesp32/berry/src/be_parser.c index 1bec0863f..6be271dd8 100644 --- a/lib/libesp32/berry/src/be_parser.c +++ b/lib/libesp32/berry/src/be_parser.c @@ -311,7 +311,7 @@ static void setupvals(bfuncinfo *finfo) } /* Function is complete, finalize bproto */ -static void end_func(bparser *parser, bclass *c) +static void end_func(bparser *parser) { bvm *vm = parser->vm; bfuncinfo *finfo = parser->finfo; @@ -324,14 +324,8 @@ static void end_func(bparser *parser, bclass *c) proto->codesize = finfo->pc; proto->ktab = be_vector_release(vm, &finfo->kvec); proto->nconst = be_vector_count(&finfo->kvec); - /* special case here */ proto->nproto = be_vector_count(&finfo->pvec); - if (proto->nproto == 0) { - proto->ptab = (void*) c; - } else { - be_vector_push_c(vm, &finfo->pvec, (void*) &c); - proto->ptab = be_vector_release(vm, &finfo->pvec); - } + proto->ptab = be_vector_release(vm, &finfo->pvec); #if BE_USE_MEM_ALIGNED proto->code = be_move_to_aligned(vm, proto->code, proto->codesize * sizeof(binstruction)); /* move `code` to 4-bytes aligned memory region */ proto->ktab = be_move_to_aligned(vm, proto->ktab, proto->nconst * sizeof(bvalue)); /* move `ktab` to 4-bytes aligned memory region */ @@ -644,7 +638,7 @@ static bproto* funcbody(bparser *parser, bstring *name, bclass *c, int type) finfo.proto->varg |= BE_VA_STATICMETHOD; } stmtlist(parser); /* parse statement without final `end` */ - end_func(parser, c); /* close function context */ + end_func(parser); /* close function context */ match_token(parser, KeyEnd); /* skip 'end' */ return finfo.proto; /* return fully constructed `bproto` */ } @@ -700,7 +694,7 @@ static void lambda_expr(bparser *parser, bexpdesc *e) expr(parser, &e1); check_var(parser, &e1); be_code_ret(parser->finfo, &e1); - end_func(parser, NULL); + end_func(parser); init_exp(e, ETPROTO, be_code_proto(parser->finfo, finfo.proto)); be_stackpop(parser->vm, 1); } @@ -1827,7 +1821,7 @@ static void mainfunc(bparser *parser, bclosure *cl) cl->proto = finfo.proto; be_remove(parser->vm, -3); /* pop proto from stack */ stmtlist(parser); - end_func(parser, NULL); + end_func(parser); match_token(parser, TokenEOS); /* skip EOS */ } diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c index 01d1fd1a3..e1790ddb2 100644 --- a/lib/libesp32/berry/src/be_solidifylib.c +++ b/lib/libesp32/berry/src/be_solidifylib.c @@ -114,22 +114,6 @@ static void toidentifier(char *to, const char *p) *to = 0; // final NULL } -/* return the parent class of a function, encoded in ptab, or NULL if none */ -static const bclass *m_solidify_get_parentclass(const bproto *pr) -{ - const bclass *cla; - if (pr->nproto > 0) { - cla = (const bclass*) pr->ptab[pr->nproto]; - } else { - cla = (const bclass*) pr->ptab; - } - if (cla && var_basetype(cla) == BE_CLASS) { - return cla; - } else { - return NULL; - } -} - static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout); static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *prefixname, void* fout) @@ -261,15 +245,9 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, size_t id_len = toidentifier_length(func_name); char func_name_id[id_len]; toidentifier(func_name_id, func_name); - /* get parent class name if any */ - const bclass *parentclass = m_solidify_get_parentclass(clo->proto); - const char *parentclass_name = parentclass ? str(parentclass->name) : NULL; - const char *actualprefix = parentclass_name ? parentclass_name : prefixname; - - logfmt("be_const_%sclosure(%s%s%s%s_closure)", + logfmt("be_const_%sclosure(%s%s%s_closure)", var_isstatic(value) ? "static_" : "", - parentclass_name ? "class_" : "", - actualprefix ? actualprefix : "", actualprefix ? "_" : "", + prefixname ? prefixname : "", prefixname ? "_" : "", func_name_id); } break; @@ -354,10 +332,6 @@ static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bprot static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, int indent, void* fout) { - /* get parent class name if any */ - const bclass *parentclass = m_solidify_get_parentclass(pr); - const char *parentclass_name = parentclass ? str(parentclass->name) : NULL; - logfmt("%*sbe_nested_proto(\n", indent, ""); indent += 2; @@ -378,8 +352,7 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const logfmt("%*s%d, /* has sup protos */\n", indent, "", (pr->nproto > 0) ? 1 : 0); if (pr->nproto > 0) { - // if pr->nproto is not zero, we add a last value that is either NULL or the parent class - logfmt("%*s( &(const struct bproto*[%2d]) {\n", indent, "", pr->nproto + 1); /* one more slot */ + logfmt("%*s( &(const struct bproto*[%2d]) {\n", indent, "", pr->nproto); for (int32_t i = 0; i < pr->nproto; i++) { size_t sub_len = strlen(func_name) + 10; char sub_name[sub_len]; @@ -387,19 +360,10 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, indent+2, fout); logfmt(",\n"); } - if (parentclass_name) { - logfmt("%*s&be_class_%s, \n", indent, "", parentclass_name); - } else { - logfmt("%*sNULL, \n", indent, ""); - } logfmt("%*s}),\n", indent, ""); } else { - if (parentclass_name) { - logfmt("%*s&be_class_%s, \n", indent, "", parentclass_name); - } else { - logfmt("%*sNULL, \n", indent, ""); - } - } + logfmt("%*sNULL, /* no sub protos */\n", indent, ""); + } logfmt("%*s%d, /* has constants */\n", indent, "", (pr->nconst > 0) ? 1 : 0); if (pr->nconst > 0) { @@ -454,22 +418,6 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, bproto *pr = clo->proto; const char * func_name = str(pr->name); - /* get parent class name if any */ - const bclass *parentclass = m_solidify_get_parentclass(pr); - const char *parentclass_name = parentclass ? str(parentclass->name) : NULL; - if (parentclass_name) { - /* check that the class name is the same as the prefix */ - /* meaning that we are solidifying a method from its own class */ - /* if they don't match, then the method is borrowed to another class and we don't export it */ - char parentclass_prefix[strlen(parentclass_name) + 10]; - snprintf(parentclass_prefix, sizeof(parentclass_prefix), "class_%s", parentclass_name); - if (strcmp(parentclass_prefix, prefixname) != 0) { - logfmt("// Borrowed method '%s' from class '%s'\n", func_name, parentclass_prefix); - logfmt("extern bclosure *%s_%s;\n", parentclass_prefix, func_name); - return; - } - } - if (clo->nupvals > 0) { logfmt("--> Unsupported upvals in closure <---"); // be_raise(vm, "internal_error", "Unsupported upvals in closure"); @@ -484,11 +432,6 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, logfmt("** Solidified function: %s\n", func_name); logfmt("********************************************************************/\n"); - if (parentclass_name) { - /* declare exten so we can have a pointer */ - logfmt("extern const bclass be_class_%s;\n", parentclass_name); - } - { size_t id_len = toidentifier_length(func_name); char func_name_id[id_len]; diff --git a/lib/libesp32/berry/tests/class.be b/lib/libesp32/berry/tests/class.be index 0bbc6be56..06d78ee5d 100644 --- a/lib/libesp32/berry/tests/class.be +++ b/lib/libesp32/berry/tests/class.be @@ -58,18 +58,3 @@ assert(type(c4.c) == 'class') c5 = c4.c() assert(type(c5) == 'instance') assert(classname(c5) == 'map') - -#- classof now gets back the class of Berry methods -# -class A - def f() end - static def g() end -end -class B : A - def h() end -end -assert(classof(A.f) == A) -assert(classof(A.g) == A) -assert(classof(B.h) == B) -#- returns nil if native function of not in class -# -assert(classof(int) == nil) -assert(classof(def () end) == nil) diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h index 961c36ff6..a3c954061 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h @@ -9,7 +9,6 @@ extern const bclass be_class_Animate_core; /******************************************************************** ** Solidified function: clear ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_clear, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Animate_core_clear, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(stop), @@ -43,7 +42,6 @@ be_local_closure(class_Animate_core_clear, /* name */ /******************************************************************** ** Solidified function: set_strip_bri ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_set_strip_bri, /* name */ be_nested_proto( 10, /* nstack */ @@ -52,7 +50,7 @@ be_local_closure(class_Animate_core_set_strip_bri, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(strip), @@ -86,7 +84,6 @@ be_local_closure(class_Animate_core_set_strip_bri, /* name */ /******************************************************************** ** Solidified function: remove_painter ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_remove_painter, /* name */ be_nested_proto( 8, /* nstack */ @@ -95,7 +92,7 @@ be_local_closure(class_Animate_core_remove_painter, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(painters), @@ -128,7 +125,6 @@ be_local_closure(class_Animate_core_remove_painter, /* name */ /******************************************************************** ** Solidified function: stop ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_stop, /* name */ be_nested_proto( 6, /* nstack */ @@ -137,7 +133,7 @@ be_local_closure(class_Animate_core_stop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(running), @@ -180,7 +176,6 @@ be_local_closure(class_Animate_core_stop, /* name */ /******************************************************************** ** Solidified function: get_bri ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_get_bri, /* name */ be_nested_proto( 3, /* nstack */ @@ -189,7 +184,7 @@ be_local_closure(class_Animate_core_get_bri, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(bri), @@ -208,7 +203,6 @@ be_local_closure(class_Animate_core_get_bri, /* name */ /******************************************************************** ** Solidified function: set_bri ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_set_bri, /* name */ be_nested_proto( 4, /* nstack */ @@ -217,7 +211,7 @@ be_local_closure(class_Animate_core_set_bri, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(bri), @@ -239,7 +233,6 @@ be_local_closure(class_Animate_core_set_bri, /* name */ /******************************************************************** ** Solidified function: add_painter ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_add_painter, /* name */ be_nested_proto( 5, /* nstack */ @@ -248,7 +241,7 @@ be_local_closure(class_Animate_core_add_painter, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(painters), @@ -279,7 +272,6 @@ be_local_closure(class_Animate_core_add_painter, /* name */ /******************************************************************** ** Solidified function: fast_loop ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_fast_loop, /* name */ be_nested_proto( 13, /* nstack */ @@ -288,7 +280,7 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[28]) { /* constants */ /* K0 */ be_nested_str_weak(running), @@ -416,7 +408,6 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ /******************************************************************** ** Solidified function: remove_animator ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_remove_animator, /* name */ be_nested_proto( 8, /* nstack */ @@ -425,7 +416,7 @@ be_local_closure(class_Animate_core_remove_animator, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(animators), @@ -458,7 +449,6 @@ be_local_closure(class_Animate_core_remove_animator, /* name */ /******************************************************************** ** Solidified function: animate ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_animate, /* name */ be_nested_proto( 1, /* nstack */ @@ -467,7 +457,7 @@ be_local_closure(class_Animate_core_animate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(animate), @@ -483,7 +473,6 @@ be_local_closure(class_Animate_core_animate, /* name */ /******************************************************************** ** Solidified function: set_current ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_set_current, /* name */ be_nested_proto( 2, /* nstack */ @@ -492,7 +481,7 @@ be_local_closure(class_Animate_core_set_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -513,7 +502,6 @@ be_local_closure(class_Animate_core_set_current, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -522,7 +510,7 @@ be_local_closure(class_Animate_core_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -532,7 +520,7 @@ be_local_closure(class_Animate_core_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(fast_loop), @@ -546,7 +534,6 @@ be_local_closure(class_Animate_core_init, /* name */ 0x80000000, // 0003 RET 0 }) ), - &be_class_Animate_core, }), 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ @@ -615,7 +602,6 @@ be_local_closure(class_Animate_core_init, /* name */ /******************************************************************** ** Solidified function: set_cb ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_set_cb, /* name */ be_nested_proto( 3, /* nstack */ @@ -624,7 +610,7 @@ be_local_closure(class_Animate_core_set_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(obj), @@ -645,7 +631,6 @@ be_local_closure(class_Animate_core_set_cb, /* name */ /******************************************************************** ** Solidified function: set_back_color ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_set_back_color, /* name */ be_nested_proto( 2, /* nstack */ @@ -654,7 +639,7 @@ be_local_closure(class_Animate_core_set_back_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(back_color), @@ -673,7 +658,6 @@ be_local_closure(class_Animate_core_set_back_color, /* name */ /******************************************************************** ** Solidified function: add_background_animator ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_add_background_animator, /* name */ be_nested_proto( 6, /* nstack */ @@ -682,7 +666,7 @@ be_local_closure(class_Animate_core_add_background_animator, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(set_cb), @@ -709,7 +693,6 @@ be_local_closure(class_Animate_core_add_background_animator, /* name */ /******************************************************************** ** Solidified function: add_animator ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_add_animator, /* name */ be_nested_proto( 5, /* nstack */ @@ -718,7 +701,7 @@ be_local_closure(class_Animate_core_add_animator, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(animators), @@ -749,7 +732,6 @@ be_local_closure(class_Animate_core_add_animator, /* name */ /******************************************************************** ** Solidified function: remove ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_remove, /* name */ be_nested_proto( 4, /* nstack */ @@ -758,7 +740,7 @@ be_local_closure(class_Animate_core_remove, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(clear), @@ -785,7 +767,6 @@ be_local_closure(class_Animate_core_remove, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_Animate_core; be_local_closure(class_Animate_core_start, /* name */ be_nested_proto( 6, /* nstack */ @@ -794,7 +775,7 @@ be_local_closure(class_Animate_core_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_core, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(running), diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h index 1425a7234..2cafc43fb 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h @@ -9,7 +9,6 @@ extern const bclass be_class_Animate_painter; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Animate_painter; be_local_closure(class_Animate_painter_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Animate_painter_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_painter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -46,7 +45,6 @@ be_local_closure(class_Animate_painter_init, /* name */ /******************************************************************** ** Solidified function: paint ********************************************************************/ -extern const bclass be_class_Animate_painter; be_local_closure(class_Animate_painter_paint, /* name */ be_nested_proto( 2, /* nstack */ @@ -55,7 +53,7 @@ be_local_closure(class_Animate_painter_paint, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_painter, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(paint), @@ -87,7 +85,6 @@ extern const bclass be_class_Animate_pulse; /******************************************************************** ** Solidified function: set_pulse_size ********************************************************************/ -extern const bclass be_class_Animate_pulse; be_local_closure(class_Animate_pulse_set_pulse_size, /* name */ be_nested_proto( 2, /* nstack */ @@ -96,7 +93,7 @@ be_local_closure(class_Animate_pulse_set_pulse_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_pulse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(pulse_size), @@ -115,7 +112,6 @@ be_local_closure(class_Animate_pulse_set_pulse_size, /* name */ /******************************************************************** ** Solidified function: set_slew_size ********************************************************************/ -extern const bclass be_class_Animate_pulse; be_local_closure(class_Animate_pulse_set_slew_size, /* name */ be_nested_proto( 2, /* nstack */ @@ -124,7 +120,7 @@ be_local_closure(class_Animate_pulse_set_slew_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_pulse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(slew_size), @@ -143,7 +139,6 @@ be_local_closure(class_Animate_pulse_set_slew_size, /* name */ /******************************************************************** ** Solidified function: set_back_color ********************************************************************/ -extern const bclass be_class_Animate_pulse; be_local_closure(class_Animate_pulse_set_back_color, /* name */ be_nested_proto( 2, /* nstack */ @@ -152,7 +147,7 @@ be_local_closure(class_Animate_pulse_set_back_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_pulse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(back_color), @@ -171,7 +166,6 @@ be_local_closure(class_Animate_pulse_set_back_color, /* name */ /******************************************************************** ** Solidified function: set_pos ********************************************************************/ -extern const bclass be_class_Animate_pulse; be_local_closure(class_Animate_pulse_set_pos, /* name */ be_nested_proto( 2, /* nstack */ @@ -180,7 +174,7 @@ be_local_closure(class_Animate_pulse_set_pos, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_pulse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(pos), @@ -199,7 +193,6 @@ be_local_closure(class_Animate_pulse_set_pos, /* name */ /******************************************************************** ** Solidified function: set_color ********************************************************************/ -extern const bclass be_class_Animate_pulse; be_local_closure(class_Animate_pulse_set_color, /* name */ be_nested_proto( 2, /* nstack */ @@ -208,7 +201,7 @@ be_local_closure(class_Animate_pulse_set_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_pulse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(color), @@ -227,7 +220,6 @@ be_local_closure(class_Animate_pulse_set_color, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Animate_pulse; be_local_closure(class_Animate_pulse_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -236,7 +228,7 @@ be_local_closure(class_Animate_pulse_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_pulse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -291,7 +283,6 @@ be_local_closure(class_Animate_pulse_init, /* name */ /******************************************************************** ** Solidified function: paint ********************************************************************/ -extern const bclass be_class_Animate_pulse; be_local_closure(class_Animate_pulse_paint, /* name */ be_nested_proto( 22, /* nstack */ @@ -300,7 +291,7 @@ be_local_closure(class_Animate_pulse_paint, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_pulse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(back_color), diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h index e8a6202d1..f6ded0553 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h @@ -9,7 +9,6 @@ extern const bclass be_class_Animate_animator; /******************************************************************** ** Solidified function: is_running ********************************************************************/ -extern const bclass be_class_Animate_animator; be_local_closure(class_Animate_animator_is_running, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Animate_animator_is_running, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_animator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(running), @@ -39,7 +38,6 @@ be_local_closure(class_Animate_animator_is_running, /* name */ /******************************************************************** ** Solidified function: beat ********************************************************************/ -extern const bclass be_class_Animate_animator; be_local_closure(class_Animate_animator_beat, /* name */ be_nested_proto( 1, /* nstack */ @@ -48,7 +46,7 @@ be_local_closure(class_Animate_animator_beat, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_animator, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(beat), @@ -64,7 +62,6 @@ be_local_closure(class_Animate_animator_beat, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Animate_animator; be_local_closure(class_Animate_animator_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -73,7 +70,7 @@ be_local_closure(class_Animate_animator_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_animator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -101,7 +98,6 @@ be_local_closure(class_Animate_animator_init, /* name */ /******************************************************************** ** Solidified function: stop ********************************************************************/ -extern const bclass be_class_Animate_animator; be_local_closure(class_Animate_animator_stop, /* name */ be_nested_proto( 2, /* nstack */ @@ -110,7 +106,7 @@ be_local_closure(class_Animate_animator_stop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_animator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(origin), @@ -133,7 +129,6 @@ be_local_closure(class_Animate_animator_stop, /* name */ /******************************************************************** ** Solidified function: set_duration_ms ********************************************************************/ -extern const bclass be_class_Animate_animator; be_local_closure(class_Animate_animator_set_duration_ms, /* name */ be_nested_proto( 2, /* nstack */ @@ -142,7 +137,7 @@ be_local_closure(class_Animate_animator_set_duration_ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_animator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(duration_ms), @@ -161,7 +156,6 @@ be_local_closure(class_Animate_animator_set_duration_ms, /* name */ /******************************************************************** ** Solidified function: set_cb ********************************************************************/ -extern const bclass be_class_Animate_animator; be_local_closure(class_Animate_animator_set_cb, /* name */ be_nested_proto( 3, /* nstack */ @@ -170,7 +164,7 @@ be_local_closure(class_Animate_animator_set_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_animator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(obj), @@ -191,7 +185,6 @@ be_local_closure(class_Animate_animator_set_cb, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_Animate_animator; be_local_closure(class_Animate_animator_start, /* name */ be_nested_proto( 4, /* nstack */ @@ -200,7 +193,7 @@ be_local_closure(class_Animate_animator_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_animator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(duration_ms), @@ -263,7 +256,6 @@ extern const bclass be_class_Animate_palette; /******************************************************************** ** Solidified function: ptr_to_palette ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_ptr_to_palette, /* name */ be_nested_proto( 8, /* nstack */ @@ -272,7 +264,7 @@ be_local_closure(class_Animate_palette_ptr_to_palette, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_Animate_palette), @@ -337,7 +329,6 @@ be_local_closure(class_Animate_palette_ptr_to_palette, /* name */ /******************************************************************** ** Solidified function: animate ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_animate, /* name */ be_nested_proto( 26, /* nstack */ @@ -346,7 +337,7 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(duration_ms), @@ -576,7 +567,6 @@ be_local_closure(class_Animate_palette_animate, /* name */ /******************************************************************** ** Solidified function: set_palette ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_set_palette, /* name */ be_nested_proto( 6, /* nstack */ @@ -585,7 +575,7 @@ be_local_closure(class_Animate_palette_set_palette, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(ptr), @@ -647,7 +637,6 @@ be_local_closure(class_Animate_palette_set_palette, /* name */ /******************************************************************** ** Solidified function: to_css_gradient ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_to_css_gradient, /* name */ be_nested_proto( 17, /* nstack */ @@ -656,7 +645,7 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_const_class(be_class_Animate_palette), @@ -728,7 +717,6 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ /******************************************************************** ** Solidified function: set_bri ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_set_bri, /* name */ be_nested_proto( 4, /* nstack */ @@ -737,7 +725,7 @@ be_local_closure(class_Animate_palette_set_bri, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(bri), @@ -759,7 +747,6 @@ be_local_closure(class_Animate_palette_set_bri, /* name */ /******************************************************************** ** Solidified function: parse_palette ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_parse_palette, /* name */ be_nested_proto( 15, /* nstack */ @@ -768,7 +755,7 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(slots), @@ -863,7 +850,6 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */ /******************************************************************** ** Solidified function: set_range ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_set_range, /* name */ be_nested_proto( 7, /* nstack */ @@ -872,7 +858,7 @@ be_local_closure(class_Animate_palette_set_range, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(value_error), @@ -905,7 +891,6 @@ be_local_closure(class_Animate_palette_set_range, /* name */ /******************************************************************** ** Solidified function: set_value ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_set_value, /* name */ be_nested_proto( 18, /* nstack */ @@ -914,7 +899,7 @@ be_local_closure(class_Animate_palette_set_value, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(range_min), @@ -1039,7 +1024,6 @@ be_local_closure(class_Animate_palette_set_value, /* name */ /******************************************************************** ** Solidified function: set_duration ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_set_duration, /* name */ be_nested_proto( 6, /* nstack */ @@ -1048,7 +1032,7 @@ be_local_closure(class_Animate_palette_set_duration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_const_int(0), @@ -1085,7 +1069,6 @@ be_local_closure(class_Animate_palette_set_duration, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Animate_palette; be_local_closure(class_Animate_palette_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -1094,7 +1077,7 @@ be_local_closure(class_Animate_palette_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_palette, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1169,7 +1152,6 @@ extern const bclass be_class_Animate_oscillator; /******************************************************************** ** Solidified function: set_duty_cycle ********************************************************************/ -extern const bclass be_class_Animate_oscillator; be_local_closure(class_Animate_oscillator_set_duty_cycle, /* name */ be_nested_proto( 3, /* nstack */ @@ -1178,7 +1160,7 @@ be_local_closure(class_Animate_oscillator_set_duty_cycle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_oscillator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_const_int(0), @@ -1205,7 +1187,6 @@ be_local_closure(class_Animate_oscillator_set_duty_cycle, /* name */ /******************************************************************** ** Solidified function: set_a ********************************************************************/ -extern const bclass be_class_Animate_oscillator; be_local_closure(class_Animate_oscillator_set_a, /* name */ be_nested_proto( 2, /* nstack */ @@ -1214,7 +1195,7 @@ be_local_closure(class_Animate_oscillator_set_a, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_oscillator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(a), @@ -1233,7 +1214,6 @@ be_local_closure(class_Animate_oscillator_set_a, /* name */ /******************************************************************** ** Solidified function: set_b ********************************************************************/ -extern const bclass be_class_Animate_oscillator; be_local_closure(class_Animate_oscillator_set_b, /* name */ be_nested_proto( 2, /* nstack */ @@ -1242,7 +1222,7 @@ be_local_closure(class_Animate_oscillator_set_b, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_oscillator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(b), @@ -1261,7 +1241,6 @@ be_local_closure(class_Animate_oscillator_set_b, /* name */ /******************************************************************** ** Solidified function: set_form ********************************************************************/ -extern const bclass be_class_Animate_oscillator; be_local_closure(class_Animate_oscillator_set_form, /* name */ be_nested_proto( 3, /* nstack */ @@ -1270,7 +1249,7 @@ be_local_closure(class_Animate_oscillator_set_form, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_oscillator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_const_int(1), @@ -1294,7 +1273,6 @@ be_local_closure(class_Animate_oscillator_set_form, /* name */ /******************************************************************** ** Solidified function: set_phase ********************************************************************/ -extern const bclass be_class_Animate_oscillator; be_local_closure(class_Animate_oscillator_set_phase, /* name */ be_nested_proto( 3, /* nstack */ @@ -1303,7 +1281,7 @@ be_local_closure(class_Animate_oscillator_set_phase, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_oscillator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_const_int(0), @@ -1330,7 +1308,6 @@ be_local_closure(class_Animate_oscillator_set_phase, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Animate_oscillator; be_local_closure(class_Animate_oscillator_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -1339,7 +1316,7 @@ be_local_closure(class_Animate_oscillator_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_oscillator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1383,7 +1360,6 @@ be_local_closure(class_Animate_oscillator_init, /* name */ /******************************************************************** ** Solidified function: animate ********************************************************************/ -extern const bclass be_class_Animate_oscillator; be_local_closure(class_Animate_oscillator_animate, /* name */ be_nested_proto( 18, /* nstack */ @@ -1392,7 +1368,7 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Animate_oscillator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ /* K0 */ be_nested_str_weak(duration_ms), diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h index 92452cd4c..9e094c5a2 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h @@ -9,7 +9,6 @@ extern const bclass be_class_Leds_frame_be; /******************************************************************** ** Solidified function: setitem ********************************************************************/ -extern const bclass be_class_Leds_frame_be; be_local_closure(class_Leds_frame_be_setitem, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Leds_frame_be_setitem, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_frame_be, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(set), @@ -42,7 +41,6 @@ be_local_closure(class_Leds_frame_be_setitem, /* name */ /******************************************************************** ** Solidified function: set_pixel ********************************************************************/ -extern const bclass be_class_Leds_frame_be; be_local_closure(class_Leds_frame_be_set_pixel, /* name */ be_nested_proto( 11, /* nstack */ @@ -51,7 +49,7 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_frame_be, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_const_int(0), @@ -95,7 +93,6 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ /******************************************************************** ** Solidified function: item ********************************************************************/ -extern const bclass be_class_Leds_frame_be; be_local_closure(class_Leds_frame_be_item, /* name */ be_nested_proto( 6, /* nstack */ @@ -104,7 +101,7 @@ be_local_closure(class_Leds_frame_be_item, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_frame_be, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(get), @@ -127,7 +124,6 @@ be_local_closure(class_Leds_frame_be_item, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Leds_frame_be; be_local_closure(class_Leds_frame_be_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -136,7 +132,7 @@ be_local_closure(class_Leds_frame_be_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_frame_be, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(0), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h index d9f56b338..46efb89a3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h @@ -15,7 +15,7 @@ be_local_closure(module_matter_sort, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(1), @@ -71,7 +71,7 @@ be_local_closure(module_matter_jitter, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -116,7 +116,7 @@ be_local_closure(module_matter_inspect, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -255,7 +255,7 @@ be_local_closure(module_matter_consolidate_clusters, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(CLUSTERS), @@ -385,7 +385,7 @@ be_local_closure(module_matter_UC_LIST, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h index 7fa23af42..b6646dc6c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Base38; /******************************************************************** ** Solidified function: encode ********************************************************************/ -extern const bclass be_class_Matter_Base38; be_local_closure(class_Matter_Base38_encode, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Base38_encode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -26,7 +25,7 @@ be_local_closure(class_Matter_Base38_encode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_X2D_X2E), @@ -53,7 +52,6 @@ be_local_closure(class_Matter_Base38_encode, /* name */ 0x80040800, // 000D RET 1 R4 }) ), - &be_class_Matter_Base38, }), 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index ff7954af0..18aab1b25 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Commisioning_Context; /******************************************************************** ** Solidified function: parse_StatusReport ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(session), @@ -63,7 +62,6 @@ be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name /******************************************************************** ** Solidified function: find_fabric_by_destination_id ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id, /* name */ be_nested_proto( 13, /* nstack */ @@ -72,7 +70,7 @@ be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -178,7 +176,6 @@ be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_every_second, /* name */ be_nested_proto( 1, /* nstack */ @@ -187,7 +184,7 @@ be_local_closure(class_Matter_Commisioning_Context_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(every_second), @@ -203,7 +200,6 @@ be_local_closure(class_Matter_Commisioning_Context_every_second, /* name */ /******************************************************************** ** Solidified function: add_session ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_add_session, /* name */ be_nested_proto( 12, /* nstack */ @@ -212,7 +208,7 @@ be_local_closure(class_Matter_Commisioning_Context_add_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(log), @@ -254,7 +250,6 @@ be_local_closure(class_Matter_Commisioning_Context_add_session, /* name */ /******************************************************************** ** Solidified function: parse_PBKDFParamRequest ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name */ be_nested_proto( 12, /* nstack */ @@ -263,7 +258,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[47]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -439,7 +434,6 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* /******************************************************************** ** Solidified function: send_status_report ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name */ be_nested_proto( 12, /* nstack */ @@ -448,7 +442,7 @@ be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(build_response), @@ -496,7 +490,6 @@ be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name /******************************************************************** ** Solidified function: parse_Pake1 ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ be_nested_proto( 20, /* nstack */ @@ -505,7 +498,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[51]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -684,7 +677,6 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -693,7 +685,7 @@ be_local_closure(class_Matter_Commisioning_Context_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -717,7 +709,6 @@ be_local_closure(class_Matter_Commisioning_Context_init, /* name */ /******************************************************************** ** Solidified function: parse_Pake3 ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ be_nested_proto( 19, /* nstack */ @@ -726,7 +717,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -874,7 +865,6 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ /******************************************************************** ** Solidified function: parse_Sigma3 ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ be_nested_proto( 36, /* nstack */ @@ -883,7 +873,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[66]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -1245,7 +1235,6 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ /******************************************************************** ** Solidified function: process_incoming ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name */ be_nested_proto( 6, /* nstack */ @@ -1254,7 +1243,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -1371,7 +1360,6 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * /******************************************************************** ** Solidified function: parse_Sigma1 ********************************************************************/ -extern const bclass be_class_Matter_Commisioning_Context; be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ be_nested_proto( 37, /* nstack */ @@ -1380,7 +1368,7 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Commisioning_Context, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[108]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h index caf7aa635..67058d57c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_PBKDFParamRequest; /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_PBKDFParamRequest; be_local_closure(class_Matter_PBKDFParamRequest_parse, /* name */ be_nested_proto( 9, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_PBKDFParamRequest_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PBKDFParamRequest, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -112,7 +111,6 @@ extern const bclass be_class_Matter_PBKDFParamResponse; /******************************************************************** ** Solidified function: tlv2raw ********************************************************************/ -extern const bclass be_class_Matter_PBKDFParamResponse; be_local_closure(class_Matter_PBKDFParamResponse_tlv2raw, /* name */ be_nested_proto( 11, /* nstack */ @@ -121,7 +119,7 @@ be_local_closure(class_Matter_PBKDFParamResponse_tlv2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PBKDFParamResponse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -235,7 +233,6 @@ extern const bclass be_class_Matter_Pake1; /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_Pake1; be_local_closure(class_Matter_Pake1_parse, /* name */ be_nested_proto( 7, /* nstack */ @@ -244,7 +241,7 @@ be_local_closure(class_Matter_Pake1_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Pake1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_const_int(0), @@ -298,7 +295,6 @@ extern const bclass be_class_Matter_Pake2; /******************************************************************** ** Solidified function: tlv2raw ********************************************************************/ -extern const bclass be_class_Matter_Pake2; be_local_closure(class_Matter_Pake2_tlv2raw, /* name */ be_nested_proto( 9, /* nstack */ @@ -307,7 +303,7 @@ be_local_closure(class_Matter_Pake2_tlv2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Pake2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -368,7 +364,6 @@ extern const bclass be_class_Matter_Pake3; /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_Pake3; be_local_closure(class_Matter_Pake3_parse, /* name */ be_nested_proto( 7, /* nstack */ @@ -377,7 +372,7 @@ be_local_closure(class_Matter_Pake3_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Pake3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_const_int(0), @@ -431,7 +426,6 @@ extern const bclass be_class_Matter_Sigma1; /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_Sigma1; be_local_closure(class_Matter_Sigma1_parse, /* name */ be_nested_proto( 8, /* nstack */ @@ -440,7 +434,7 @@ be_local_closure(class_Matter_Sigma1_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Sigma1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ /* K0 */ be_const_int(0), @@ -552,7 +546,6 @@ extern const bclass be_class_Matter_Sigma2; /******************************************************************** ** Solidified function: tlv2raw ********************************************************************/ -extern const bclass be_class_Matter_Sigma2; be_local_closure(class_Matter_Sigma2_tlv2raw, /* name */ be_nested_proto( 10, /* nstack */ @@ -561,7 +554,7 @@ be_local_closure(class_Matter_Sigma2_tlv2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Sigma2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -665,7 +658,6 @@ extern const bclass be_class_Matter_Sigma2Resume; /******************************************************************** ** Solidified function: tlv2raw ********************************************************************/ -extern const bclass be_class_Matter_Sigma2Resume; be_local_closure(class_Matter_Sigma2Resume_tlv2raw, /* name */ be_nested_proto( 10, /* nstack */ @@ -674,7 +666,7 @@ be_local_closure(class_Matter_Sigma2Resume_tlv2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Sigma2Resume, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -771,7 +763,6 @@ extern const bclass be_class_Matter_Sigma3; /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_Sigma3; be_local_closure(class_Matter_Sigma3_parse, /* name */ be_nested_proto( 7, /* nstack */ @@ -780,7 +771,7 @@ be_local_closure(class_Matter_Sigma3_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Sigma3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h index 85fec0872..ac3b652f0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Control_Message; /******************************************************************** ** Solidified function: parse_MsgCounterSyncRsp ********************************************************************/ -extern const bclass be_class_Matter_Control_Message; be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Control_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(session), @@ -57,7 +56,6 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name /******************************************************************** ** Solidified function: parse_MsgCounterSyncReq ********************************************************************/ -extern const bclass be_class_Matter_Control_Message; be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name */ be_nested_proto( 8, /* nstack */ @@ -66,7 +64,7 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Control_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(session), @@ -105,7 +103,6 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Control_Message; be_local_closure(class_Matter_Control_Message_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -114,7 +111,7 @@ be_local_closure(class_Matter_Control_Message_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Control_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -138,7 +135,6 @@ be_local_closure(class_Matter_Control_Message_init, /* name */ /******************************************************************** ** Solidified function: process_incoming_control_message ********************************************************************/ -extern const bclass be_class_Matter_Control_Message; be_local_closure(class_Matter_Control_Message_process_incoming_control_message, /* name */ be_nested_proto( 6, /* nstack */ @@ -147,7 +143,7 @@ be_local_closure(class_Matter_Control_Message_process_incoming_control_message, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Control_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(log), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h index 235660506..623b12921 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_EventHandler; /******************************************************************** ** Solidified function: dump ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_dump, /* name */ be_nested_proto( 9, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_EventHandler_dump, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -120,7 +119,6 @@ be_local_closure(class_Matter_EventHandler_dump, /* name */ /******************************************************************** ** Solidified function: get_last_event_no ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_get_last_event_no, /* name */ be_nested_proto( 2, /* nstack */ @@ -129,7 +127,7 @@ be_local_closure(class_Matter_EventHandler_get_last_event_no, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(counter_event_no), @@ -148,7 +146,6 @@ be_local_closure(class_Matter_EventHandler_get_last_event_no, /* name */ /******************************************************************** ** Solidified function: get_next_event_no ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ be_nested_proto( 4, /* nstack */ @@ -157,7 +154,7 @@ be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(counter_event_no), @@ -191,7 +188,6 @@ be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ /******************************************************************** ** Solidified function: load_event_no_persisted ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ be_nested_proto( 8, /* nstack */ @@ -200,7 +196,7 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(persist), @@ -255,7 +251,6 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ /******************************************************************** ** Solidified function: queue_event ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_queue_event, /* name */ be_nested_proto( 8, /* nstack */ @@ -264,7 +259,7 @@ be_local_closure(class_Matter_EventHandler_queue_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(priority), @@ -345,7 +340,6 @@ be_local_closure(class_Matter_EventHandler_queue_event, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_every_second, /* name */ be_nested_proto( 3, /* nstack */ @@ -354,7 +348,7 @@ be_local_closure(class_Matter_EventHandler_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(compact), @@ -374,7 +368,6 @@ be_local_closure(class_Matter_EventHandler_every_second, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -383,7 +376,7 @@ be_local_closure(class_Matter_EventHandler_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -417,7 +410,6 @@ be_local_closure(class_Matter_EventHandler_init, /* name */ /******************************************************************** ** Solidified function: find_min_no ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ be_nested_proto( 8, /* nstack */ @@ -426,7 +418,7 @@ be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 7, /* nstack */ 3, /* argc */ @@ -434,7 +426,7 @@ be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(1), @@ -471,7 +463,6 @@ be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ 0x80040000, // 0018 RET 1 R0 }) ), - &be_class_Matter_EventHandler, }), 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ @@ -521,7 +512,6 @@ be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ /******************************************************************** ** Solidified function: publish_event ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_publish_event, /* name */ be_nested_proto( 23, /* nstack */ @@ -530,7 +520,7 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -689,7 +679,6 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ /******************************************************************** ** Solidified function: compact ********************************************************************/ -extern const bclass be_class_Matter_EventHandler; be_local_closure(class_Matter_EventHandler_compact, /* name */ be_nested_proto( 4, /* nstack */ @@ -698,7 +687,7 @@ be_local_closure(class_Matter_EventHandler_compact, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -706,7 +695,7 @@ be_local_closure(class_Matter_EventHandler_compact, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(0), @@ -730,7 +719,6 @@ be_local_closure(class_Matter_EventHandler_compact, /* name */ 0x80000000, // 000B RET 0 }) ), - &be_class_Matter_EventHandler, }), 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ @@ -794,7 +782,6 @@ extern const bclass be_class_Matter_EventQueued; /******************************************************************** ** Solidified function: to_raw_bytes ********************************************************************/ -extern const bclass be_class_Matter_EventQueued; be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ be_nested_proto( 14, /* nstack */ @@ -803,7 +790,7 @@ be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventQueued, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(raw_tlv), @@ -854,7 +841,6 @@ be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_EventQueued; be_local_closure(class_Matter_EventQueued_init, /* name */ be_nested_proto( 13, /* nstack */ @@ -863,7 +849,7 @@ be_local_closure(class_Matter_EventQueued_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventQueued, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(event_no), @@ -932,7 +918,6 @@ be_local_closure(class_Matter_EventQueued_init, /* name */ /******************************************************************** ** Solidified function: compact ********************************************************************/ -extern const bclass be_class_Matter_EventQueued; be_local_closure(class_Matter_EventQueued_compact, /* name */ be_nested_proto( 2, /* nstack */ @@ -941,7 +926,7 @@ be_local_closure(class_Matter_EventQueued_compact, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventQueued, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(raw_tlv), @@ -961,7 +946,6 @@ be_local_closure(class_Matter_EventQueued_compact, /* name */ /******************************************************************** ** Solidified function: eventpath2raw ********************************************************************/ -extern const bclass be_class_Matter_EventQueued; be_local_closure(class_Matter_EventQueued_eventpath2raw, /* name */ be_nested_proto( 10, /* nstack */ @@ -970,7 +954,7 @@ be_local_closure(class_Matter_EventQueued_eventpath2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventQueued, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(add), @@ -1080,7 +1064,6 @@ be_local_closure(class_Matter_EventQueued_eventpath2raw, /* name */ /******************************************************************** ** Solidified function: eventreport2raw ********************************************************************/ -extern const bclass be_class_Matter_EventQueued; be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ be_nested_proto( 19, /* nstack */ @@ -1089,7 +1072,7 @@ be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventQueued, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(add), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h index 7cb753b4b..7fbe56719 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Expirable; /******************************************************************** ** Solidified function: before_remove ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_before_remove, /* name */ be_nested_proto( 1, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Expirable_before_remove, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(before_remove), @@ -34,7 +33,6 @@ be_local_closure(class_Matter_Expirable_before_remove, /* name */ /******************************************************************** ** Solidified function: set_no_expiration ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_set_no_expiration, /* name */ be_nested_proto( 2, /* nstack */ @@ -43,7 +41,7 @@ be_local_closure(class_Matter_Expirable_set_no_expiration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_expiration), @@ -63,7 +61,6 @@ be_local_closure(class_Matter_Expirable_set_no_expiration, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -72,7 +69,7 @@ be_local_closure(class_Matter_Expirable_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_persist), @@ -92,7 +89,6 @@ be_local_closure(class_Matter_Expirable_init, /* name */ /******************************************************************** ** Solidified function: set_expire_time ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_set_expire_time, /* name */ be_nested_proto( 4, /* nstack */ @@ -101,7 +97,7 @@ be_local_closure(class_Matter_Expirable_set_expire_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_expiration), @@ -123,7 +119,6 @@ be_local_closure(class_Matter_Expirable_set_expire_time, /* name */ /******************************************************************** ** Solidified function: has_expired ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_has_expired, /* name */ be_nested_proto( 4, /* nstack */ @@ -132,7 +127,7 @@ be_local_closure(class_Matter_Expirable_has_expired, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -167,7 +162,6 @@ be_local_closure(class_Matter_Expirable_has_expired, /* name */ /******************************************************************** ** Solidified function: set_parent_list ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_set_parent_list, /* name */ be_nested_proto( 2, /* nstack */ @@ -176,7 +170,7 @@ be_local_closure(class_Matter_Expirable_set_parent_list, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_list), @@ -195,7 +189,6 @@ be_local_closure(class_Matter_Expirable_set_parent_list, /* name */ /******************************************************************** ** Solidified function: hydrate_post ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_hydrate_post, /* name */ be_nested_proto( 1, /* nstack */ @@ -204,7 +197,7 @@ be_local_closure(class_Matter_Expirable_hydrate_post, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(hydrate_post), @@ -220,7 +213,6 @@ be_local_closure(class_Matter_Expirable_hydrate_post, /* name */ /******************************************************************** ** Solidified function: set_expire_in_seconds ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */ be_nested_proto( 6, /* nstack */ @@ -229,7 +221,7 @@ be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -263,7 +255,6 @@ be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */ /******************************************************************** ** Solidified function: get_parent_list ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_get_parent_list, /* name */ be_nested_proto( 2, /* nstack */ @@ -272,7 +263,7 @@ be_local_closure(class_Matter_Expirable_get_parent_list, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_list), @@ -291,7 +282,6 @@ be_local_closure(class_Matter_Expirable_get_parent_list, /* name */ /******************************************************************** ** Solidified function: does_persist ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_does_persist, /* name */ be_nested_proto( 2, /* nstack */ @@ -300,7 +290,7 @@ be_local_closure(class_Matter_Expirable_does_persist, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_persist), @@ -319,7 +309,6 @@ be_local_closure(class_Matter_Expirable_does_persist, /* name */ /******************************************************************** ** Solidified function: set_persist ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_set_persist, /* name */ be_nested_proto( 4, /* nstack */ @@ -328,7 +317,7 @@ be_local_closure(class_Matter_Expirable_set_persist, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_persist), @@ -350,7 +339,6 @@ be_local_closure(class_Matter_Expirable_set_persist, /* name */ /******************************************************************** ** Solidified function: persist_pre ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_persist_pre, /* name */ be_nested_proto( 1, /* nstack */ @@ -359,7 +347,7 @@ be_local_closure(class_Matter_Expirable_persist_pre, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(persist_pre), @@ -375,7 +363,6 @@ be_local_closure(class_Matter_Expirable_persist_pre, /* name */ /******************************************************************** ** Solidified function: persist_post ********************************************************************/ -extern const bclass be_class_Matter_Expirable; be_local_closure(class_Matter_Expirable_persist_post, /* name */ be_nested_proto( 1, /* nstack */ @@ -384,7 +371,7 @@ be_local_closure(class_Matter_Expirable_persist_post, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(persist_post), @@ -430,7 +417,6 @@ extern const bclass be_class_Matter_Expirable_list; /******************************************************************** ** Solidified function: count_persistables ********************************************************************/ -extern const bclass be_class_Matter_Expirable_list; be_local_closure(class_Matter_Expirable_list_count_persistables, /* name */ be_nested_proto( 5, /* nstack */ @@ -439,7 +425,7 @@ be_local_closure(class_Matter_Expirable_list_count_persistables, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(0), @@ -472,7 +458,6 @@ be_local_closure(class_Matter_Expirable_list_count_persistables, /* name */ /******************************************************************** ** Solidified function: remove ********************************************************************/ -extern const bclass be_class_Matter_Expirable_list; be_local_closure(class_Matter_Expirable_list_remove, /* name */ be_nested_proto( 5, /* nstack */ @@ -481,7 +466,7 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(0), @@ -521,7 +506,6 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ /******************************************************************** ** Solidified function: push ********************************************************************/ -extern const bclass be_class_Matter_Expirable_list; be_local_closure(class_Matter_Expirable_list_push, /* name */ be_nested_proto( 5, /* nstack */ @@ -530,7 +514,7 @@ be_local_closure(class_Matter_Expirable_list_push, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -569,7 +553,6 @@ be_local_closure(class_Matter_Expirable_list_push, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_Expirable_list; be_local_closure(class_Matter_Expirable_list_every_second, /* name */ be_nested_proto( 3, /* nstack */ @@ -578,7 +561,7 @@ be_local_closure(class_Matter_Expirable_list_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(remove_expired), @@ -598,7 +581,6 @@ be_local_closure(class_Matter_Expirable_list_every_second, /* name */ /******************************************************************** ** Solidified function: remove_expired ********************************************************************/ -extern const bclass be_class_Matter_Expirable_list; be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */ be_nested_proto( 6, /* nstack */ @@ -607,7 +589,7 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(0), @@ -650,7 +632,6 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */ /******************************************************************** ** Solidified function: persistables ********************************************************************/ -extern const bclass be_class_Matter_Expirable_list; be_local_closure(class_Matter_Expirable_list_persistables, /* name */ be_nested_proto( 3, /* nstack */ @@ -659,7 +640,7 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -669,7 +650,7 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */ be_local_const_upval(1, 1), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_persist), @@ -688,7 +669,6 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */ 0x80000000, // 0008 RET 0 }) ), - &be_class_Matter_Expirable_list, }), 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ @@ -711,7 +691,6 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */ /******************************************************************** ** Solidified function: setitem ********************************************************************/ -extern const bclass be_class_Matter_Expirable_list; be_local_closure(class_Matter_Expirable_list_setitem, /* name */ be_nested_proto( 7, /* nstack */ @@ -720,7 +699,7 @@ be_local_closure(class_Matter_Expirable_list_setitem, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Expirable_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(matter), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h index 267c4eb50..5c0b174c2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Fabric; /******************************************************************** ** Solidified function: get_icac ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_icac, /* name */ be_nested_proto( 2, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Fabric_get_icac, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(icac), @@ -37,7 +36,6 @@ be_local_closure(class_Matter_Fabric_get_icac, /* name */ /******************************************************************** ** Solidified function: before_remove ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_before_remove, /* name */ be_nested_proto( 6, /* nstack */ @@ -46,7 +44,7 @@ be_local_closure(class_Matter_Fabric_before_remove, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(log), @@ -84,7 +82,6 @@ be_local_closure(class_Matter_Fabric_before_remove, /* name */ /******************************************************************** ** Solidified function: get_pk ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_pk, /* name */ be_nested_proto( 2, /* nstack */ @@ -93,7 +90,7 @@ be_local_closure(class_Matter_Fabric_get_pk, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(no_private_key), @@ -112,7 +109,6 @@ be_local_closure(class_Matter_Fabric_get_pk, /* name */ /******************************************************************** ** Solidified function: get_fabric_compressed ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_fabric_compressed, /* name */ be_nested_proto( 2, /* nstack */ @@ -121,7 +117,7 @@ be_local_closure(class_Matter_Fabric_get_fabric_compressed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(fabric_compressed), @@ -140,7 +136,6 @@ be_local_closure(class_Matter_Fabric_get_fabric_compressed, /* name */ /******************************************************************** ** Solidified function: get_fabric_id ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_fabric_id, /* name */ be_nested_proto( 2, /* nstack */ @@ -149,7 +144,7 @@ be_local_closure(class_Matter_Fabric_get_fabric_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(fabric_id), @@ -168,7 +163,6 @@ be_local_closure(class_Matter_Fabric_get_fabric_id, /* name */ /******************************************************************** ** Solidified function: set_admin_subject_vendor ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_set_admin_subject_vendor, /* name */ be_nested_proto( 3, /* nstack */ @@ -177,7 +171,7 @@ be_local_closure(class_Matter_Fabric_set_admin_subject_vendor, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(admin_subject), @@ -198,7 +192,6 @@ be_local_closure(class_Matter_Fabric_set_admin_subject_vendor, /* name */ /******************************************************************** ** Solidified function: get_admin_vendor ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_admin_vendor, /* name */ be_nested_proto( 2, /* nstack */ @@ -207,7 +200,7 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(admin_vendor), @@ -226,7 +219,6 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor, /* name */ /******************************************************************** ** Solidified function: get_noc ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_noc, /* name */ be_nested_proto( 2, /* nstack */ @@ -235,7 +227,7 @@ be_local_closure(class_Matter_Fabric_get_noc, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(noc), @@ -254,7 +246,6 @@ be_local_closure(class_Matter_Fabric_get_noc, /* name */ /******************************************************************** ** Solidified function: fromjson ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_fromjson, /* name */ be_nested_proto( 16, /* nstack */ @@ -263,7 +254,7 @@ be_local_closure(class_Matter_Fabric_fromjson, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Fabric), @@ -373,7 +364,6 @@ be_local_closure(class_Matter_Fabric_fromjson, /* name */ /******************************************************************** ** Solidified function: set_ca ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_set_ca, /* name */ be_nested_proto( 2, /* nstack */ @@ -382,7 +372,7 @@ be_local_closure(class_Matter_Fabric_set_ca, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(root_ca_certificate), @@ -401,7 +391,6 @@ be_local_closure(class_Matter_Fabric_set_ca, /* name */ /******************************************************************** ** Solidified function: tojson ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_tojson, /* name */ be_nested_proto( 16, /* nstack */ @@ -410,7 +399,7 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -572,7 +561,6 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ /******************************************************************** ** Solidified function: hydrate_post ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_hydrate_post, /* name */ be_nested_proto( 4, /* nstack */ @@ -581,7 +569,7 @@ be_local_closure(class_Matter_Fabric_hydrate_post, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl), @@ -620,7 +608,6 @@ be_local_closure(class_Matter_Fabric_hydrate_post, /* name */ /******************************************************************** ** Solidified function: set_ipk_epoch_key ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_set_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ @@ -629,7 +616,7 @@ be_local_closure(class_Matter_Fabric_set_ipk_epoch_key, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(ipk_epoch_key), @@ -648,7 +635,6 @@ be_local_closure(class_Matter_Fabric_set_ipk_epoch_key, /* name */ /******************************************************************** ** Solidified function: set_fabric_device ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_set_fabric_device, /* name */ be_nested_proto( 7, /* nstack */ @@ -657,7 +643,7 @@ be_local_closure(class_Matter_Fabric_set_fabric_device, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(fabric_id), @@ -690,7 +676,6 @@ be_local_closure(class_Matter_Fabric_set_fabric_device, /* name */ /******************************************************************** ** Solidified function: get_device_id ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_device_id, /* name */ be_nested_proto( 2, /* nstack */ @@ -699,7 +684,7 @@ be_local_closure(class_Matter_Fabric_get_device_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(device_id), @@ -718,7 +703,6 @@ be_local_closure(class_Matter_Fabric_get_device_id, /* name */ /******************************************************************** ** Solidified function: get_admin_subject ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_admin_subject, /* name */ be_nested_proto( 2, /* nstack */ @@ -727,7 +711,7 @@ be_local_closure(class_Matter_Fabric_get_admin_subject, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(admin_subject), @@ -746,7 +730,6 @@ be_local_closure(class_Matter_Fabric_get_admin_subject, /* name */ /******************************************************************** ** Solidified function: is_marked_for_deletion ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_is_marked_for_deletion, /* name */ be_nested_proto( 3, /* nstack */ @@ -755,7 +738,7 @@ be_local_closure(class_Matter_Fabric_is_marked_for_deletion, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(deleted), @@ -776,7 +759,6 @@ be_local_closure(class_Matter_Fabric_is_marked_for_deletion, /* name */ /******************************************************************** ** Solidified function: get_fabric_id_as_int64 ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_fabric_id_as_int64, /* name */ be_nested_proto( 4, /* nstack */ @@ -785,7 +767,7 @@ be_local_closure(class_Matter_Fabric_get_fabric_id_as_int64, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(int64), @@ -809,7 +791,6 @@ be_local_closure(class_Matter_Fabric_get_fabric_id_as_int64, /* name */ /******************************************************************** ** Solidified function: get_ca ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_ca, /* name */ be_nested_proto( 2, /* nstack */ @@ -818,7 +799,7 @@ be_local_closure(class_Matter_Fabric_get_ca, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(root_ca_certificate), @@ -837,7 +818,6 @@ be_local_closure(class_Matter_Fabric_get_ca, /* name */ /******************************************************************** ** Solidified function: get_oldest_session ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_oldest_session, /* name */ be_nested_proto( 4, /* nstack */ @@ -846,7 +826,7 @@ be_local_closure(class_Matter_Fabric_get_oldest_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get_old_recent_session), @@ -867,7 +847,6 @@ be_local_closure(class_Matter_Fabric_get_oldest_session, /* name */ /******************************************************************** ** Solidified function: fabric_completed ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_fabric_completed, /* name */ be_nested_proto( 4, /* nstack */ @@ -876,7 +855,7 @@ be_local_closure(class_Matter_Fabric_fabric_completed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(set_no_expiration), @@ -909,7 +888,6 @@ be_local_closure(class_Matter_Fabric_fabric_completed, /* name */ /******************************************************************** ** Solidified function: counter_group_data_snd_next ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */ be_nested_proto( 6, /* nstack */ @@ -918,7 +896,7 @@ be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl), @@ -972,7 +950,6 @@ be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */ /******************************************************************** ** Solidified function: set_noc_icac ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_set_noc_icac, /* name */ be_nested_proto( 3, /* nstack */ @@ -981,7 +958,7 @@ be_local_closure(class_Matter_Fabric_set_noc_icac, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(noc), @@ -1002,7 +979,6 @@ be_local_closure(class_Matter_Fabric_set_noc_icac, /* name */ /******************************************************************** ** Solidified function: set_pk ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_set_pk, /* name */ be_nested_proto( 2, /* nstack */ @@ -1011,7 +987,7 @@ be_local_closure(class_Matter_Fabric_set_pk, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(no_private_key), @@ -1030,7 +1006,6 @@ be_local_closure(class_Matter_Fabric_set_pk, /* name */ /******************************************************************** ** Solidified function: get_newest_session ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_newest_session, /* name */ be_nested_proto( 4, /* nstack */ @@ -1039,7 +1014,7 @@ be_local_closure(class_Matter_Fabric_get_newest_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get_old_recent_session), @@ -1060,7 +1035,6 @@ be_local_closure(class_Matter_Fabric_get_newest_session, /* name */ /******************************************************************** ** Solidified function: log_new_fabric ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ be_nested_proto( 7, /* nstack */ @@ -1069,7 +1043,7 @@ be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(log), @@ -1110,7 +1084,6 @@ be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ /******************************************************************** ** Solidified function: get_ca_pub ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_ca_pub, /* name */ be_nested_proto( 6, /* nstack */ @@ -1119,7 +1092,7 @@ be_local_closure(class_Matter_Fabric_get_ca_pub, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(root_ca_certificate), @@ -1152,7 +1125,6 @@ be_local_closure(class_Matter_Fabric_get_ca_pub, /* name */ /******************************************************************** ** Solidified function: get_fabric_index ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_fabric_index, /* name */ be_nested_proto( 2, /* nstack */ @@ -1161,7 +1133,7 @@ be_local_closure(class_Matter_Fabric_get_fabric_index, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(fabric_index), @@ -1180,7 +1152,6 @@ be_local_closure(class_Matter_Fabric_get_fabric_index, /* name */ /******************************************************************** ** Solidified function: writejson ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_writejson, /* name */ be_nested_proto( 17, /* nstack */ @@ -1189,7 +1160,7 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[26]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -1356,7 +1327,6 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ /******************************************************************** ** Solidified function: counter_group_ctrl_snd_next ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */ be_nested_proto( 6, /* nstack */ @@ -1365,7 +1335,7 @@ be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), @@ -1419,7 +1389,6 @@ be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */ /******************************************************************** ** Solidified function: fabric_candidate ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_fabric_candidate, /* name */ be_nested_proto( 4, /* nstack */ @@ -1428,7 +1397,7 @@ be_local_closure(class_Matter_Fabric_fabric_candidate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(set_expire_in_seconds), @@ -1458,7 +1427,6 @@ be_local_closure(class_Matter_Fabric_fabric_candidate, /* name */ /******************************************************************** ** Solidified function: assign_fabric_index ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_assign_fabric_index, /* name */ be_nested_proto( 5, /* nstack */ @@ -1467,7 +1435,7 @@ be_local_closure(class_Matter_Fabric_assign_fabric_index, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(get_fabric_index), @@ -1498,7 +1466,6 @@ be_local_closure(class_Matter_Fabric_assign_fabric_index, /* name */ /******************************************************************** ** Solidified function: get_old_recent_session ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ be_nested_proto( 7, /* nstack */ @@ -1507,7 +1474,7 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_sessions), @@ -1557,7 +1524,6 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -1566,7 +1532,7 @@ be_local_closure(class_Matter_Fabric_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -1631,7 +1597,6 @@ be_local_closure(class_Matter_Fabric_init, /* name */ /******************************************************************** ** Solidified function: get_ipk_epoch_key ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ @@ -1640,7 +1605,7 @@ be_local_closure(class_Matter_Fabric_get_ipk_epoch_key, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(ipk_epoch_key), @@ -1659,7 +1624,6 @@ be_local_closure(class_Matter_Fabric_get_ipk_epoch_key, /* name */ /******************************************************************** ** Solidified function: add_session ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_add_session, /* name */ be_nested_proto( 8, /* nstack */ @@ -1668,7 +1632,7 @@ be_local_closure(class_Matter_Fabric_add_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(_sessions), @@ -1724,7 +1688,6 @@ be_local_closure(class_Matter_Fabric_add_session, /* name */ /******************************************************************** ** Solidified function: set_fabric_index ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_set_fabric_index, /* name */ be_nested_proto( 2, /* nstack */ @@ -1733,7 +1696,7 @@ be_local_closure(class_Matter_Fabric_set_fabric_index, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(fabric_index), @@ -1752,7 +1715,6 @@ be_local_closure(class_Matter_Fabric_set_fabric_index, /* name */ /******************************************************************** ** Solidified function: get_device_id_as_int64 ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_device_id_as_int64, /* name */ be_nested_proto( 4, /* nstack */ @@ -1761,7 +1723,7 @@ be_local_closure(class_Matter_Fabric_get_device_id_as_int64, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(int64), @@ -1785,7 +1747,6 @@ be_local_closure(class_Matter_Fabric_get_device_id_as_int64, /* name */ /******************************************************************** ** Solidified function: get_fabric_label ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_fabric_label, /* name */ be_nested_proto( 2, /* nstack */ @@ -1794,7 +1755,7 @@ be_local_closure(class_Matter_Fabric_get_fabric_label, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(fabric_label), @@ -1813,7 +1774,6 @@ be_local_closure(class_Matter_Fabric_get_fabric_label, /* name */ /******************************************************************** ** Solidified function: get_ipk_group_key ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */ be_nested_proto( 10, /* nstack */ @@ -1822,7 +1782,7 @@ be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(ipk_epoch_key), @@ -1870,7 +1830,6 @@ be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */ /******************************************************************** ** Solidified function: mark_for_deletion ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */ be_nested_proto( 3, /* nstack */ @@ -1879,7 +1838,7 @@ be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(deleted), @@ -1903,7 +1862,6 @@ be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */ /******************************************************************** ** Solidified function: get_admin_vendor_name ********************************************************************/ -extern const bclass be_class_Matter_Fabric; be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */ be_nested_proto( 6, /* nstack */ @@ -1912,7 +1870,7 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Fabric, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(admin_vendor), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h index ae907a1c3..47e4869fc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_HTTP_async; /******************************************************************** ** Solidified function: parse_http_payload ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_parse_http_payload, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_HTTP_async_parse_http_payload, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(is_chunked), @@ -132,7 +131,6 @@ be_local_closure(class_Matter_HTTP_async_parse_http_payload, /* name */ /******************************************************************** ** Solidified function: event_http_finished ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_http_finished, /* name */ be_nested_proto( 1, /* nstack */ @@ -141,7 +139,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_finished, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_http_finished), @@ -157,7 +155,6 @@ be_local_closure(class_Matter_HTTP_async_event_http_finished, /* name */ /******************************************************************** ** Solidified function: event_http_header ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_http_header, /* name */ be_nested_proto( 7, /* nstack */ @@ -166,7 +163,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_header, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -206,7 +203,6 @@ be_local_closure(class_Matter_HTTP_async_event_http_header, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_init, /* name */ be_nested_proto( 13, /* nstack */ @@ -215,7 +211,7 @@ be_local_closure(class_Matter_HTTP_async_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -278,7 +274,6 @@ be_local_closure(class_Matter_HTTP_async_init, /* name */ /******************************************************************** ** Solidified function: event_http_failed ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_http_failed, /* name */ be_nested_proto( 1, /* nstack */ @@ -287,7 +282,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_failed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_http_failed), @@ -303,7 +298,6 @@ be_local_closure(class_Matter_HTTP_async_event_http_failed, /* name */ /******************************************************************** ** Solidified function: parse_http_response ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */ be_nested_proto( 3, /* nstack */ @@ -312,7 +306,7 @@ be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(phase), @@ -353,7 +347,6 @@ be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */ /******************************************************************** ** Solidified function: event_refused ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_refused, /* name */ be_nested_proto( 3, /* nstack */ @@ -362,7 +355,7 @@ be_local_closure(class_Matter_HTTP_async_event_refused, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(http_status), @@ -385,7 +378,6 @@ be_local_closure(class_Matter_HTTP_async_event_refused, /* name */ /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_reset, /* name */ be_nested_proto( 3, /* nstack */ @@ -394,7 +386,7 @@ be_local_closure(class_Matter_HTTP_async_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -439,7 +431,6 @@ be_local_closure(class_Matter_HTTP_async_reset, /* name */ /******************************************************************** ** Solidified function: begin ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_begin, /* name */ be_nested_proto( 4, /* nstack */ @@ -448,7 +439,7 @@ be_local_closure(class_Matter_HTTP_async_begin, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(begin), @@ -473,7 +464,6 @@ be_local_closure(class_Matter_HTTP_async_begin, /* name */ /******************************************************************** ** Solidified function: event_established ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_established, /* name */ be_nested_proto( 3, /* nstack */ @@ -482,7 +472,7 @@ be_local_closure(class_Matter_HTTP_async_event_established, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(send_http), @@ -502,7 +492,6 @@ be_local_closure(class_Matter_HTTP_async_event_established, /* name */ /******************************************************************** ** Solidified function: parse_http_headers ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ be_nested_proto( 6, /* nstack */ @@ -511,7 +500,7 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -591,7 +580,6 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ /******************************************************************** ** Solidified function: event_available ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_available, /* name */ be_nested_proto( 3, /* nstack */ @@ -600,7 +588,7 @@ be_local_closure(class_Matter_HTTP_async_event_available, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(receive), @@ -620,7 +608,6 @@ be_local_closure(class_Matter_HTTP_async_event_available, /* name */ /******************************************************************** ** Solidified function: event_timeout ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */ be_nested_proto( 3, /* nstack */ @@ -629,7 +616,7 @@ be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(http_status), @@ -652,7 +639,6 @@ be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */ /******************************************************************** ** Solidified function: compile_re ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_compile_re, /* name */ be_nested_proto( 6, /* nstack */ @@ -661,7 +647,7 @@ be_local_closure(class_Matter_HTTP_async_compile_re, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(re), @@ -716,7 +702,6 @@ be_local_closure(class_Matter_HTTP_async_compile_re, /* name */ /******************************************************************** ** Solidified function: event_closed ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_closed, /* name */ be_nested_proto( 3, /* nstack */ @@ -725,7 +710,7 @@ be_local_closure(class_Matter_HTTP_async_event_closed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(http_status), @@ -752,7 +737,6 @@ be_local_closure(class_Matter_HTTP_async_event_closed, /* name */ /******************************************************************** ** Solidified function: begin_sync ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */ be_nested_proto( 10, /* nstack */ @@ -761,7 +745,7 @@ be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(timeout), @@ -820,7 +804,6 @@ be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */ /******************************************************************** ** Solidified function: send_http ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_send_http, /* name */ be_nested_proto( 10, /* nstack */ @@ -829,7 +812,7 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -914,7 +897,6 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ /******************************************************************** ** Solidified function: event_http_headers_end ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */ be_nested_proto( 3, /* nstack */ @@ -923,7 +905,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(response_offset), @@ -953,7 +935,6 @@ be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */ /******************************************************************** ** Solidified function: event_http_status_code ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */ be_nested_proto( 3, /* nstack */ @@ -962,7 +943,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(status_code), @@ -981,7 +962,6 @@ be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */ /******************************************************************** ** Solidified function: parse_http_status_line ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ be_nested_proto( 5, /* nstack */ @@ -990,7 +970,7 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -1046,7 +1026,6 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ /******************************************************************** ** Solidified function: event_http_timeout ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_event_http_timeout, /* name */ be_nested_proto( 1, /* nstack */ @@ -1055,7 +1034,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_timeout, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_http_timeout), @@ -1071,7 +1050,6 @@ be_local_closure(class_Matter_HTTP_async_event_http_timeout, /* name */ /******************************************************************** ** Solidified function: receive ********************************************************************/ -extern const bclass be_class_Matter_HTTP_async; be_local_closure(class_Matter_HTTP_async_receive, /* name */ be_nested_proto( 6, /* nstack */ @@ -1080,7 +1058,7 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(tcp_connected), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h index 812dbda25..fd70c2b6e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_HTTP_remote; /******************************************************************** ** Solidified function: add_schedule ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(probe_update_time_map), @@ -65,7 +64,6 @@ be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */ /******************************************************************** ** Solidified function: dispatch_cb ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */ be_nested_proto( 11, /* nstack */ @@ -74,7 +72,7 @@ be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(0), @@ -122,7 +120,6 @@ be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */ /******************************************************************** ** Solidified function: get_info ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_get_info, /* name */ be_nested_proto( 2, /* nstack */ @@ -131,7 +128,7 @@ be_local_closure(class_Matter_HTTP_remote_get_info, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(info), @@ -150,7 +147,6 @@ be_local_closure(class_Matter_HTTP_remote_get_info, /* name */ /******************************************************************** ** Solidified function: parse_status_http ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ be_nested_proto( 11, /* nstack */ @@ -159,7 +155,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_const_int(0), @@ -343,7 +339,6 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ /******************************************************************** ** Solidified function: set_info ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_set_info, /* name */ be_nested_proto( 2, /* nstack */ @@ -352,7 +347,7 @@ be_local_closure(class_Matter_HTTP_remote_set_info, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(info), @@ -371,7 +366,6 @@ be_local_closure(class_Matter_HTTP_remote_set_info, /* name */ /******************************************************************** ** Solidified function: device_is_alive ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ be_nested_proto( 4, /* nstack */ @@ -380,7 +374,7 @@ be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(reachable), @@ -411,7 +405,6 @@ be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ /******************************************************************** ** Solidified function: event_http_finished ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ be_nested_proto( 9, /* nstack */ @@ -420,7 +413,7 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(current_cmd), @@ -494,7 +487,6 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ /******************************************************************** ** Solidified function: probe_async ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ be_nested_proto( 11, /* nstack */ @@ -503,7 +495,7 @@ be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -569,7 +561,6 @@ be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ /******************************************************************** ** Solidified function: info_changed ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ be_nested_proto( 3, /* nstack */ @@ -578,7 +569,7 @@ be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -600,7 +591,6 @@ be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ /******************************************************************** ** Solidified function: web_last_seen ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ be_nested_proto( 6, /* nstack */ @@ -609,7 +599,7 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -648,7 +638,6 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_nested_proto( 11, /* nstack */ @@ -657,7 +646,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 4]) { + ( &(const struct bproto*[ 3]) { be_nested_proto( 10, /* nstack */ 3, /* argc */ @@ -667,7 +656,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(parse_status_response_and_call_method), @@ -697,7 +686,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(parse_status_response_and_call_method), @@ -727,7 +716,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(parse_status_response_and_call_method), @@ -748,7 +737,6 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ 0x80040600, // 0009 RET 1 R3 }) ), - &be_class_Matter_HTTP_remote, }), 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ @@ -823,7 +811,6 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ /******************************************************************** ** Solidified function: change_schedule ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */ be_nested_proto( 7, /* nstack */ @@ -832,7 +819,7 @@ be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(probe_update_time_map), @@ -867,7 +854,6 @@ be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */ /******************************************************************** ** Solidified function: parse_status_response_and_call_method ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, /* name */ be_nested_proto( 14, /* nstack */ @@ -876,7 +862,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_const_int(0), @@ -960,7 +946,6 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, /******************************************************************** ** Solidified function: call_sync ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ be_nested_proto( 15, /* nstack */ @@ -969,7 +954,7 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[24]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -1079,7 +1064,6 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ /******************************************************************** ** Solidified function: scheduler ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ be_nested_proto( 7, /* nstack */ @@ -1088,7 +1072,7 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(probe_next_timestamp_map), @@ -1180,7 +1164,6 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ /******************************************************************** ** Solidified function: event_http_failed ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ be_nested_proto( 5, /* nstack */ @@ -1189,7 +1172,7 @@ be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(current_cmd), @@ -1225,7 +1208,6 @@ be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ /******************************************************************** ** Solidified function: add_async_cb ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */ be_nested_proto( 4, /* nstack */ @@ -1234,7 +1216,7 @@ be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(async_cb_map), @@ -1254,7 +1236,6 @@ be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */ /******************************************************************** ** Solidified function: event_http_timeout ********************************************************************/ -extern const bclass be_class_Matter_HTTP_remote; be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ be_nested_proto( 9, /* nstack */ @@ -1263,7 +1244,7 @@ be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_HTTP_remote, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(current_cmd), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index a1b64bee1..daae7a1b4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_IM; /******************************************************************** ** Solidified function: process_write_request ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_write_request, /* name */ be_nested_proto( 21, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[41]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -220,7 +219,6 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ /******************************************************************** ** Solidified function: path2raw ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_path2raw, /* name */ be_nested_proto( 9, /* nstack */ @@ -229,7 +227,7 @@ be_local_closure(class_Matter_IM_path2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(add), @@ -358,7 +356,6 @@ be_local_closure(class_Matter_IM_path2raw, /* name */ /******************************************************************** ** Solidified function: attributedata2raw ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_attributedata2raw, /* name */ be_nested_proto( 11, /* nstack */ @@ -367,7 +364,7 @@ be_local_closure(class_Matter_IM_attributedata2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(add), @@ -413,7 +410,6 @@ be_local_closure(class_Matter_IM_attributedata2raw, /* name */ /******************************************************************** ** Solidified function: send_subscribe_update ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ be_nested_proto( 13, /* nstack */ @@ -422,7 +418,7 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[24]) { /* constants */ /* K0 */ be_nested_str_weak(session), @@ -526,7 +522,6 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ /******************************************************************** ** Solidified function: process_read_request_pull ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ be_nested_proto( 13, /* nstack */ @@ -535,7 +530,7 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -584,7 +579,6 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ /******************************************************************** ** Solidified function: process_read_or_subscribe_request_pull ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */ be_nested_proto( 16, /* nstack */ @@ -593,7 +587,7 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[25]) { /* constants */ /* K0 */ be_nested_str_weak(attributes_requests), @@ -749,7 +743,6 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na /******************************************************************** ** Solidified function: process_timed_request ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_timed_request, /* name */ be_nested_proto( 9, /* nstack */ @@ -758,7 +751,7 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -807,7 +800,6 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */ /******************************************************************** ** Solidified function: every_50ms ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ @@ -816,7 +808,7 @@ be_local_closure(class_Matter_IM_every_50ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(subs_shop), @@ -838,7 +830,6 @@ be_local_closure(class_Matter_IM_every_50ms, /* name */ /******************************************************************** ** Solidified function: process_invoke_request ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_invoke_request, /* name */ be_nested_proto( 19, /* nstack */ @@ -847,7 +838,7 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[41]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1126,7 +1117,6 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ /******************************************************************** ** Solidified function: process_read_or_subscribe_request_event_pull ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, /* name */ be_nested_proto( 24, /* nstack */ @@ -1135,7 +1125,7 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(event_requests), @@ -1322,7 +1312,6 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, /******************************************************************** ** Solidified function: send_enqueued ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_send_enqueued, /* name */ be_nested_proto( 7, /* nstack */ @@ -1331,7 +1320,7 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), @@ -1381,7 +1370,6 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ /******************************************************************** ** Solidified function: subscribe_request ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_subscribe_request, /* name */ be_nested_proto( 17, /* nstack */ @@ -1390,7 +1378,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[35]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1537,7 +1525,6 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ /******************************************************************** ** Solidified function: send_ack_now ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_send_ack_now, /* name */ be_nested_proto( 6, /* nstack */ @@ -1546,7 +1533,7 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(session), @@ -1576,7 +1563,6 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ /******************************************************************** ** Solidified function: expire_sendqueue ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ be_nested_proto( 6, /* nstack */ @@ -1585,7 +1571,7 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_const_int(0), @@ -1633,7 +1619,6 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ /******************************************************************** ** Solidified function: process_incoming_ack ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ be_nested_proto( 7, /* nstack */ @@ -1642,7 +1627,7 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), @@ -1678,7 +1663,6 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ /******************************************************************** ** Solidified function: remove_sendqueue_by_exchangeid ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ be_nested_proto( 6, /* nstack */ @@ -1687,7 +1671,7 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(0), @@ -1732,7 +1716,6 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ /******************************************************************** ** Solidified function: write_single_attribute_status_to_bytes ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* name */ be_nested_proto( 16, /* nstack */ @@ -1741,7 +1724,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[25]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1868,7 +1851,6 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -1877,7 +1859,7 @@ be_local_closure(class_Matter_IM_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -1928,7 +1910,6 @@ be_local_closure(class_Matter_IM_init, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_every_second, /* name */ be_nested_proto( 3, /* nstack */ @@ -1937,7 +1918,7 @@ be_local_closure(class_Matter_IM_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(expire_sendqueue), @@ -1957,7 +1938,6 @@ be_local_closure(class_Matter_IM_every_second, /* name */ /******************************************************************** ** Solidified function: process_invoke_request_solo ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ be_nested_proto( 15, /* nstack */ @@ -1966,7 +1946,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[38]) { /* constants */ /* K0 */ be_nested_str_weak(msg), @@ -2208,7 +2188,6 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ /******************************************************************** ** Solidified function: send_subscribe_heartbeat ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ be_nested_proto( 10, /* nstack */ @@ -2217,7 +2196,7 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(session), @@ -2277,7 +2256,6 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ /******************************************************************** ** Solidified function: find_sendqueue_by_exchangeid ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ be_nested_proto( 6, /* nstack */ @@ -2286,7 +2264,7 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -2328,7 +2306,6 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ /******************************************************************** ** Solidified function: process_read_request_solo ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ be_nested_proto( 19, /* nstack */ @@ -2337,7 +2314,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[52]) { /* constants */ /* K0 */ be_nested_str_weak(status), @@ -2647,7 +2624,6 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ /******************************************************************** ** Solidified function: parse_event_filters_min_no ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ be_nested_proto( 14, /* nstack */ @@ -2656,7 +2632,7 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_IM), @@ -2733,7 +2709,6 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ /******************************************************************** ** Solidified function: invokeresponse2raw ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ be_nested_proto( 9, /* nstack */ @@ -2742,7 +2717,7 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(add), @@ -2917,7 +2892,6 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ /******************************************************************** ** Solidified function: process_status_response ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_status_response, /* name */ be_nested_proto( 10, /* nstack */ @@ -2926,7 +2900,7 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(findsubval), @@ -3000,7 +2974,6 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ /******************************************************************** ** Solidified function: attributestatus2raw ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ be_nested_proto( 9, /* nstack */ @@ -3009,7 +2982,7 @@ be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(add), @@ -3078,7 +3051,6 @@ be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ /******************************************************************** ** Solidified function: read_single_attribute_to_bytes ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ be_nested_proto( 21, /* nstack */ @@ -3087,7 +3059,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -3299,7 +3271,6 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ /******************************************************************** ** Solidified function: send_status ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_send_status, /* name */ be_nested_proto( 9, /* nstack */ @@ -3308,7 +3279,7 @@ be_local_closure(class_Matter_IM_send_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(send_queue), @@ -3337,7 +3308,6 @@ be_local_closure(class_Matter_IM_send_status, /* name */ /******************************************************************** ** Solidified function: process_incoming ********************************************************************/ -extern const bclass be_class_Matter_IM; be_local_closure(class_Matter_IM_process_incoming, /* name */ be_nested_proto( 8, /* nstack */ @@ -3346,7 +3316,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(opcode), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h index 57c388311..b0c62a60c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_IM_base; /******************************************************************** ** Solidified function: to_TLV_array ********************************************************************/ -extern const bclass be_class_Matter_IM_base; be_local_closure(class_Matter_IM_base_to_TLV_array, /* name */ be_nested_proto( 11, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_IM_base_to_TLV_array, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_base, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(add_array), @@ -60,7 +59,6 @@ be_local_closure(class_Matter_IM_base_to_TLV_array, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Matter_IM_base; be_local_closure(class_Matter_IM_base_tostring, /* name */ be_nested_proto( 5, /* nstack */ @@ -69,7 +67,7 @@ be_local_closure(class_Matter_IM_base_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_base, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_X3C), @@ -102,7 +100,6 @@ be_local_closure(class_Matter_IM_base_tostring, /* name */ /******************************************************************** ** Solidified function: from_TLV_array ********************************************************************/ -extern const bclass be_class_Matter_IM_base; be_local_closure(class_Matter_IM_base_from_TLV_array, /* name */ be_nested_proto( 11, /* nstack */ @@ -111,7 +108,7 @@ be_local_closure(class_Matter_IM_base_from_TLV_array, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_base, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(push), @@ -172,7 +169,6 @@ extern const bclass be_class_Matter_IM_Message_base; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_Message_base; be_local_closure(class_Matter_IM_Message_base_init, /* name */ be_nested_proto( 1, /* nstack */ @@ -181,7 +177,7 @@ be_local_closure(class_Matter_IM_Message_base_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message_base, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(InteractionModelRevision), @@ -218,7 +214,6 @@ extern const bclass be_class_Matter_AttributePathIB; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributePathIB; be_local_closure(class_Matter_AttributePathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -227,7 +222,7 @@ be_local_closure(class_Matter_AttributePathIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributePathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -296,7 +291,6 @@ be_local_closure(class_Matter_AttributePathIB_to_TLV, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Matter_AttributePathIB; be_local_closure(class_Matter_AttributePathIB_tostring, /* name */ be_nested_proto( 6, /* nstack */ @@ -305,7 +299,7 @@ be_local_closure(class_Matter_AttributePathIB_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributePathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -396,7 +390,6 @@ be_local_closure(class_Matter_AttributePathIB_tostring, /* name */ /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributePathIB; be_local_closure(class_Matter_AttributePathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -405,7 +398,7 @@ be_local_closure(class_Matter_AttributePathIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributePathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(tag_compression), @@ -486,7 +479,6 @@ extern const bclass be_class_Matter_ClusterPathIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_ClusterPathIB; be_local_closure(class_Matter_ClusterPathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -495,7 +487,7 @@ be_local_closure(class_Matter_ClusterPathIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_ClusterPathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(node), @@ -536,7 +528,6 @@ be_local_closure(class_Matter_ClusterPathIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_ClusterPathIB; be_local_closure(class_Matter_ClusterPathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -545,7 +536,7 @@ be_local_closure(class_Matter_ClusterPathIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_ClusterPathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -614,7 +605,6 @@ extern const bclass be_class_Matter_DataVersionFilterIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_DataVersionFilterIB; be_local_closure(class_Matter_DataVersionFilterIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -623,7 +613,7 @@ be_local_closure(class_Matter_DataVersionFilterIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_DataVersionFilterIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(path), @@ -667,7 +657,6 @@ be_local_closure(class_Matter_DataVersionFilterIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_DataVersionFilterIB; be_local_closure(class_Matter_DataVersionFilterIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -676,7 +665,7 @@ be_local_closure(class_Matter_DataVersionFilterIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_DataVersionFilterIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -735,7 +724,6 @@ extern const bclass be_class_Matter_AttributeDataIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributeDataIB; be_local_closure(class_Matter_AttributeDataIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -744,7 +732,7 @@ be_local_closure(class_Matter_AttributeDataIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributeDataIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(data_version), @@ -794,7 +782,6 @@ be_local_closure(class_Matter_AttributeDataIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributeDataIB; be_local_closure(class_Matter_AttributeDataIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -803,7 +790,7 @@ be_local_closure(class_Matter_AttributeDataIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributeDataIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -869,7 +856,6 @@ extern const bclass be_class_Matter_AttributeReportIB; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributeReportIB; be_local_closure(class_Matter_AttributeReportIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -878,7 +864,7 @@ be_local_closure(class_Matter_AttributeReportIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributeReportIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -915,7 +901,6 @@ be_local_closure(class_Matter_AttributeReportIB_to_TLV, /* name */ /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributeReportIB; be_local_closure(class_Matter_AttributeReportIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -924,7 +909,7 @@ be_local_closure(class_Matter_AttributeReportIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributeReportIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_status), @@ -992,7 +977,6 @@ extern const bclass be_class_Matter_EventFilterIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventFilterIB; be_local_closure(class_Matter_EventFilterIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -1001,7 +985,7 @@ be_local_closure(class_Matter_EventFilterIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventFilterIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(node), @@ -1036,7 +1020,6 @@ be_local_closure(class_Matter_EventFilterIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventFilterIB; be_local_closure(class_Matter_EventFilterIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -1045,7 +1028,7 @@ be_local_closure(class_Matter_EventFilterIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventFilterIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1104,7 +1087,6 @@ extern const bclass be_class_Matter_EventPathIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventPathIB; be_local_closure(class_Matter_EventPathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -1113,7 +1095,7 @@ be_local_closure(class_Matter_EventPathIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventPathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(node), @@ -1165,7 +1147,6 @@ be_local_closure(class_Matter_EventPathIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventPathIB; be_local_closure(class_Matter_EventPathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -1174,7 +1155,7 @@ be_local_closure(class_Matter_EventPathIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventPathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1263,7 +1244,6 @@ extern const bclass be_class_Matter_EventDataIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventDataIB; be_local_closure(class_Matter_EventDataIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1272,7 +1252,7 @@ be_local_closure(class_Matter_EventDataIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventDataIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(path), @@ -1348,7 +1328,6 @@ be_local_closure(class_Matter_EventDataIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventDataIB; be_local_closure(class_Matter_EventDataIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -1357,7 +1336,7 @@ be_local_closure(class_Matter_EventDataIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventDataIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1470,7 +1449,6 @@ extern const bclass be_class_Matter_EventReportIB; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventReportIB; be_local_closure(class_Matter_EventReportIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1479,7 +1457,7 @@ be_local_closure(class_Matter_EventReportIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventReportIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1516,7 +1494,6 @@ be_local_closure(class_Matter_EventReportIB_to_TLV, /* name */ /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventReportIB; be_local_closure(class_Matter_EventReportIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1525,7 +1502,7 @@ be_local_closure(class_Matter_EventReportIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventReportIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(event_status), @@ -1593,7 +1570,6 @@ extern const bclass be_class_Matter_CommandPathIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_CommandPathIB; be_local_closure(class_Matter_CommandPathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -1602,7 +1578,7 @@ be_local_closure(class_Matter_CommandPathIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_CommandPathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(endpoint), @@ -1643,7 +1619,6 @@ be_local_closure(class_Matter_CommandPathIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_CommandPathIB; be_local_closure(class_Matter_CommandPathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -1652,7 +1627,7 @@ be_local_closure(class_Matter_CommandPathIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_CommandPathIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1720,7 +1695,6 @@ extern const bclass be_class_Matter_CommandDataIB; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_CommandDataIB; be_local_closure(class_Matter_CommandDataIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1729,7 +1703,7 @@ be_local_closure(class_Matter_CommandDataIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_CommandDataIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1766,7 +1740,6 @@ be_local_closure(class_Matter_CommandDataIB_to_TLV, /* name */ /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_CommandDataIB; be_local_closure(class_Matter_CommandDataIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1775,7 +1748,7 @@ be_local_closure(class_Matter_CommandDataIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_CommandDataIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(command_path), @@ -1837,7 +1810,6 @@ extern const bclass be_class_Matter_InvokeResponseIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_InvokeResponseIB; be_local_closure(class_Matter_InvokeResponseIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1846,7 +1818,7 @@ be_local_closure(class_Matter_InvokeResponseIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_InvokeResponseIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(command), @@ -1895,7 +1867,6 @@ be_local_closure(class_Matter_InvokeResponseIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_InvokeResponseIB; be_local_closure(class_Matter_InvokeResponseIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1904,7 +1875,7 @@ be_local_closure(class_Matter_InvokeResponseIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_InvokeResponseIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1960,7 +1931,6 @@ extern const bclass be_class_Matter_CommandStatusIB; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_CommandStatusIB; be_local_closure(class_Matter_CommandStatusIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -1969,7 +1939,7 @@ be_local_closure(class_Matter_CommandStatusIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_CommandStatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -2006,7 +1976,6 @@ be_local_closure(class_Matter_CommandStatusIB_to_TLV, /* name */ /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_CommandStatusIB; be_local_closure(class_Matter_CommandStatusIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -2015,7 +1984,7 @@ be_local_closure(class_Matter_CommandStatusIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_CommandStatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(command_path), @@ -2083,7 +2052,6 @@ extern const bclass be_class_Matter_EventStatusIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventStatusIB; be_local_closure(class_Matter_EventStatusIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -2092,7 +2060,7 @@ be_local_closure(class_Matter_EventStatusIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventStatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(path), @@ -2141,7 +2109,6 @@ be_local_closure(class_Matter_EventStatusIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_EventStatusIB; be_local_closure(class_Matter_EventStatusIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -2150,7 +2117,7 @@ be_local_closure(class_Matter_EventStatusIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventStatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -2206,7 +2173,6 @@ extern const bclass be_class_Matter_AttributeStatusIB; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributeStatusIB; be_local_closure(class_Matter_AttributeStatusIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -2215,7 +2181,7 @@ be_local_closure(class_Matter_AttributeStatusIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributeStatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(path), @@ -2264,7 +2230,6 @@ be_local_closure(class_Matter_AttributeStatusIB_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_AttributeStatusIB; be_local_closure(class_Matter_AttributeStatusIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -2273,7 +2238,7 @@ be_local_closure(class_Matter_AttributeStatusIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_AttributeStatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -2329,7 +2294,6 @@ extern const bclass be_class_Matter_StatusIB; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_StatusIB; be_local_closure(class_Matter_StatusIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -2338,7 +2302,7 @@ be_local_closure(class_Matter_StatusIB_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_StatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -2378,7 +2342,6 @@ be_local_closure(class_Matter_StatusIB_to_TLV, /* name */ /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_StatusIB; be_local_closure(class_Matter_StatusIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -2387,7 +2350,7 @@ be_local_closure(class_Matter_StatusIB_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_StatusIB, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(status), @@ -2441,7 +2404,6 @@ extern const bclass be_class_Matter_StatusResponseMessage; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_StatusResponseMessage; be_local_closure(class_Matter_StatusResponseMessage_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -2450,7 +2412,7 @@ be_local_closure(class_Matter_StatusResponseMessage_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_StatusResponseMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(status), @@ -2479,7 +2441,6 @@ be_local_closure(class_Matter_StatusResponseMessage_from_TLV, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_StatusResponseMessage; be_local_closure(class_Matter_StatusResponseMessage_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -2488,7 +2449,7 @@ be_local_closure(class_Matter_StatusResponseMessage_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_StatusResponseMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -2546,7 +2507,6 @@ extern const bclass be_class_Matter_ReadRequestMessage; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_ReadRequestMessage; be_local_closure(class_Matter_ReadRequestMessage_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -2555,7 +2515,7 @@ be_local_closure(class_Matter_ReadRequestMessage_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_ReadRequestMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(attributes_requests), @@ -2650,7 +2610,6 @@ extern const bclass be_class_Matter_ReadRequestMessage_solo; /******************************************************************** ** Solidified function: from_raw ********************************************************************/ -extern const bclass be_class_Matter_ReadRequestMessage_solo; be_local_closure(class_Matter_ReadRequestMessage_solo_from_raw, /* name */ be_nested_proto( 11, /* nstack */ @@ -2659,7 +2618,7 @@ be_local_closure(class_Matter_ReadRequestMessage_solo_from_raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_ReadRequestMessage_solo, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -2832,7 +2791,6 @@ extern const bclass be_class_Matter_ReportDataMessage; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_ReportDataMessage; be_local_closure(class_Matter_ReportDataMessage_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -2841,7 +2799,7 @@ be_local_closure(class_Matter_ReportDataMessage_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_ReportDataMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -2931,7 +2889,6 @@ extern const bclass be_class_Matter_SubscribeRequestMessage; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_SubscribeRequestMessage; be_local_closure(class_Matter_SubscribeRequestMessage_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -2940,7 +2897,7 @@ be_local_closure(class_Matter_SubscribeRequestMessage_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_SubscribeRequestMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(keep_subscriptions), @@ -3057,7 +3014,6 @@ extern const bclass be_class_Matter_SubscribeResponseMessage; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_SubscribeResponseMessage; be_local_closure(class_Matter_SubscribeResponseMessage_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -3066,7 +3022,7 @@ be_local_closure(class_Matter_SubscribeResponseMessage_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_SubscribeResponseMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -3132,7 +3088,6 @@ extern const bclass be_class_Matter_WriteRequestMessage; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_WriteRequestMessage; be_local_closure(class_Matter_WriteRequestMessage_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -3141,7 +3096,7 @@ be_local_closure(class_Matter_WriteRequestMessage_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_WriteRequestMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(suppress_response), @@ -3215,7 +3170,6 @@ extern const bclass be_class_Matter_WriteResponseMessage; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_WriteResponseMessage; be_local_closure(class_Matter_WriteResponseMessage_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -3224,7 +3178,7 @@ be_local_closure(class_Matter_WriteResponseMessage_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_WriteResponseMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -3281,7 +3235,6 @@ extern const bclass be_class_Matter_TimedRequestMessage; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_TimedRequestMessage; be_local_closure(class_Matter_TimedRequestMessage_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ @@ -3290,7 +3243,7 @@ be_local_closure(class_Matter_TimedRequestMessage_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TimedRequestMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(timeout), @@ -3336,7 +3289,6 @@ extern const bclass be_class_Matter_InvokeRequestMessage; /******************************************************************** ** Solidified function: from_TLV ********************************************************************/ -extern const bclass be_class_Matter_InvokeRequestMessage; be_local_closure(class_Matter_InvokeRequestMessage_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -3345,7 +3297,7 @@ be_local_closure(class_Matter_InvokeRequestMessage_from_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_InvokeRequestMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(suppress_response), @@ -3412,7 +3364,6 @@ extern const bclass be_class_Matter_InvokeRequestMessage_solo; /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_InvokeRequestMessage_solo; be_local_closure(class_Matter_InvokeRequestMessage_solo_reset, /* name */ be_nested_proto( 4, /* nstack */ @@ -3421,7 +3372,7 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_InvokeRequestMessage_solo, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -3451,7 +3402,6 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_reset, /* name */ /******************************************************************** ** Solidified function: from_raw ********************************************************************/ -extern const bclass be_class_Matter_InvokeRequestMessage_solo; be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ be_nested_proto( 11, /* nstack */ @@ -3460,7 +3410,7 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_InvokeRequestMessage_solo, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -3682,7 +3632,6 @@ extern const bclass be_class_Matter_InvokeResponseMessage; /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_InvokeResponseMessage; be_local_closure(class_Matter_InvokeResponseMessage_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -3691,7 +3640,7 @@ be_local_closure(class_Matter_InvokeResponseMessage_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_InvokeResponseMessage, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 38d74e2f5..68c2ae3ea 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_IM_Message; /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_reset, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_IM_Message_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(resp), @@ -72,7 +71,6 @@ be_local_closure(class_Matter_IM_Message_reset, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -81,7 +79,7 @@ be_local_closure(class_Matter_IM_Message_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -104,7 +102,6 @@ be_local_closure(class_Matter_IM_Message_init, /* name */ /******************************************************************** ** Solidified function: send_im ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_send_im, /* name */ be_nested_proto( 11, /* nstack */ @@ -113,7 +110,7 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(resp), @@ -182,7 +179,6 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */ /******************************************************************** ** Solidified function: status_error_received ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_status_error_received, /* name */ be_nested_proto( 2, /* nstack */ @@ -191,7 +187,7 @@ be_local_closure(class_Matter_IM_Message_status_error_received, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(status_error_received), @@ -207,7 +203,6 @@ be_local_closure(class_Matter_IM_Message_status_error_received, /* name */ /******************************************************************** ** Solidified function: get_exchangeid ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ be_nested_proto( 2, /* nstack */ @@ -216,7 +211,7 @@ be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(resp), @@ -237,7 +232,6 @@ be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ /******************************************************************** ** Solidified function: ack_received ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_ack_received, /* name */ be_nested_proto( 4, /* nstack */ @@ -246,7 +240,7 @@ be_local_closure(class_Matter_IM_Message_ack_received, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(finishing), @@ -281,7 +275,6 @@ be_local_closure(class_Matter_IM_Message_ack_received, /* name */ /******************************************************************** ** Solidified function: reached_timeout ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_reached_timeout, /* name */ be_nested_proto( 1, /* nstack */ @@ -290,7 +283,7 @@ be_local_closure(class_Matter_IM_Message_reached_timeout, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(reached_timeout), @@ -306,7 +299,6 @@ be_local_closure(class_Matter_IM_Message_reached_timeout, /* name */ /******************************************************************** ** Solidified function: status_ok_received ********************************************************************/ -extern const bclass be_class_Matter_IM_Message; be_local_closure(class_Matter_IM_Message_status_ok_received, /* name */ be_nested_proto( 7, /* nstack */ @@ -315,7 +307,7 @@ be_local_closure(class_Matter_IM_Message_status_ok_received, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Message, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(expiration), @@ -389,7 +381,6 @@ extern const bclass be_class_Matter_IM_Status; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_Status; be_local_closure(class_Matter_IM_Status_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -398,7 +389,7 @@ be_local_closure(class_Matter_IM_Status_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Status, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -450,7 +441,6 @@ extern const bclass be_class_Matter_IM_InvokeResponse; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_InvokeResponse; be_local_closure(class_Matter_IM_InvokeResponse_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -459,7 +449,7 @@ be_local_closure(class_Matter_IM_InvokeResponse_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_InvokeResponse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -503,7 +493,6 @@ extern const bclass be_class_Matter_IM_WriteResponse; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_WriteResponse; be_local_closure(class_Matter_IM_WriteResponse_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -512,7 +501,7 @@ be_local_closure(class_Matter_IM_WriteResponse_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_WriteResponse, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -556,7 +545,6 @@ extern const bclass be_class_Matter_IM_ReportData_Pull; /******************************************************************** ** Solidified function: send_im ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ be_nested_proto( 19, /* nstack */ @@ -565,7 +553,7 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[47]) { /* constants */ /* K0 */ be_nested_str_weak(resp), @@ -989,7 +977,6 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ /******************************************************************** ** Solidified function: status_ok_received ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_closure(class_Matter_IM_ReportData_Pull_status_ok_received, /* name */ be_nested_proto( 6, /* nstack */ @@ -998,7 +985,7 @@ be_local_closure(class_Matter_IM_ReportData_Pull_status_ok_received, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(status_ok_received), @@ -1035,7 +1022,6 @@ be_local_closure(class_Matter_IM_ReportData_Pull_status_ok_received, /* name * /******************************************************************** ** Solidified function: set_subscription_id ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name */ be_nested_proto( 2, /* nstack */ @@ -1044,7 +1030,7 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(subscription_id), @@ -1063,7 +1049,6 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name /******************************************************************** ** Solidified function: set_suppress_response ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* name */ be_nested_proto( 2, /* nstack */ @@ -1072,7 +1057,7 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* nam 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(suppress_response), @@ -1091,7 +1076,6 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* nam /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportData_Pull; be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -1100,7 +1084,7 @@ be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportData_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1156,7 +1140,6 @@ extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; /******************************************************************** ** Solidified function: ack_received ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* name */ be_nested_proto( 5, /* nstack */ @@ -1165,7 +1148,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* na 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(ack_received), @@ -1206,7 +1189,6 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* na /******************************************************************** ** Solidified function: send_im ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ be_nested_proto( 9, /* nstack */ @@ -1215,7 +1197,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(ready), @@ -1331,7 +1313,6 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ be_nested_proto( 12, /* nstack */ @@ -1340,7 +1321,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1393,7 +1374,6 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ /******************************************************************** ** Solidified function: status_error_received ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received, /* name */ be_nested_proto( 4, /* nstack */ @@ -1402,7 +1382,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(sub), @@ -1424,7 +1404,6 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received /******************************************************************** ** Solidified function: reached_timeout ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout, /* name */ be_nested_proto( 3, /* nstack */ @@ -1433,7 +1412,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(sub), @@ -1455,7 +1434,6 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout, /* /******************************************************************** ** Solidified function: status_ok_received ********************************************************************/ -extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_ok_received, /* name */ be_nested_proto( 5, /* nstack */ @@ -1464,7 +1442,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_ok_received, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_ReportDataSubscribed_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(report_data_phase), @@ -1529,7 +1507,6 @@ extern const bclass be_class_Matter_IM_SubscribedHeartbeat; /******************************************************************** ** Solidified function: status_error_received ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribedHeartbeat; be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_error_received, /* name */ be_nested_proto( 4, /* nstack */ @@ -1538,7 +1515,7 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_error_received, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribedHeartbeat, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(sub), @@ -1561,7 +1538,6 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_error_received, /* /******************************************************************** ** Solidified function: send_im ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribedHeartbeat; be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */ be_nested_proto( 5, /* nstack */ @@ -1570,7 +1546,7 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribedHeartbeat, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(send_im), @@ -1597,7 +1573,6 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */ /******************************************************************** ** Solidified function: ack_received ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribedHeartbeat; be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */ be_nested_proto( 5, /* nstack */ @@ -1606,7 +1581,7 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribedHeartbeat, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(ack_received), @@ -1631,7 +1606,6 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */ /******************************************************************** ** Solidified function: reached_timeout ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribedHeartbeat; be_local_closure(class_Matter_IM_SubscribedHeartbeat_reached_timeout, /* name */ be_nested_proto( 3, /* nstack */ @@ -1640,7 +1614,7 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_reached_timeout, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribedHeartbeat, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(sub), @@ -1662,7 +1636,6 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_reached_timeout, /* name /******************************************************************** ** Solidified function: status_ok_received ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribedHeartbeat; be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_ok_received, /* name */ be_nested_proto( 3, /* nstack */ @@ -1671,7 +1644,7 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_ok_received, /* na 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribedHeartbeat, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(status_ok_received), @@ -1688,7 +1661,6 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_ok_received, /* na /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribedHeartbeat; be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */ be_nested_proto( 10, /* nstack */ @@ -1697,7 +1669,7 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribedHeartbeat, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1769,7 +1741,6 @@ extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ be_nested_proto( 10, /* nstack */ @@ -1778,7 +1749,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribeResponse_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1814,7 +1785,6 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ /******************************************************************** ** Solidified function: status_ok_received ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* name */ be_nested_proto( 7, /* nstack */ @@ -1823,7 +1793,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribeResponse_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -1877,7 +1847,6 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* /******************************************************************** ** Solidified function: send_im ********************************************************************/ -extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ be_nested_proto( 8, /* nstack */ @@ -1886,7 +1855,7 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_SubscribeResponse_Pull, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(report_data_phase), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h index f453f78d0..fabfd5757 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_IM_Subscription; /******************************************************************** ** Solidified function: event_published ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_event_published, /* name */ be_nested_proto( 6, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_IM_Subscription_event_published, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(update_event_no), @@ -65,7 +64,6 @@ be_local_closure(class_Matter_IM_Subscription_event_published, /* name */ /******************************************************************** ** Solidified function: attribute_updated_ctx ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name */ be_nested_proto( 8, /* nstack */ @@ -74,7 +72,7 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_const_int(0), @@ -135,7 +133,6 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name * /******************************************************************** ** Solidified function: clear_before_arm ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ be_nested_proto( 3, /* nstack */ @@ -144,7 +141,7 @@ be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(updates), @@ -172,7 +169,6 @@ be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_init, /* name */ be_nested_proto( 17, /* nstack */ @@ -181,7 +177,7 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(subs_shop), @@ -293,7 +289,6 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ /******************************************************************** ** Solidified function: _add_attribute_unique_path ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* name */ be_nested_proto( 6, /* nstack */ @@ -302,7 +297,7 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_const_int(0), @@ -353,7 +348,6 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n /******************************************************************** ** Solidified function: update_event_generator_array ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* name */ be_nested_proto( 6, /* nstack */ @@ -362,7 +356,7 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(event_generators), @@ -430,7 +424,6 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* /******************************************************************** ** Solidified function: re_arm ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ be_nested_proto( 6, /* nstack */ @@ -439,7 +432,7 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(wait_status), @@ -500,7 +493,6 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ /******************************************************************** ** Solidified function: set_event_generator_or_arr ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* name */ be_nested_proto( 5, /* nstack */ @@ -509,7 +501,7 @@ be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* n 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(event_generators), @@ -545,7 +537,6 @@ be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* n /******************************************************************** ** Solidified function: remove_self ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription; be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ be_nested_proto( 4, /* nstack */ @@ -554,7 +545,7 @@ be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(log), @@ -626,7 +617,6 @@ extern const bclass be_class_Matter_IM_Subscription_Shop; /******************************************************************** ** Solidified function: every_50ms ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_every_50ms, /* name */ be_nested_proto( 6, /* nstack */ @@ -635,7 +625,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_50ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_const_int(0), @@ -724,7 +714,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_50ms, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ be_nested_proto( 3, /* nstack */ @@ -733,7 +722,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(im), @@ -756,7 +745,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ /******************************************************************** ** Solidified function: attribute_updated_ctx ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* name */ be_nested_proto( 8, /* nstack */ @@ -765,7 +753,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -800,7 +788,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n /******************************************************************** ** Solidified function: remove_sub ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ be_nested_proto( 6, /* nstack */ @@ -809,7 +796,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -847,7 +834,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ /******************************************************************** ** Solidified function: new_subscription ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name */ be_nested_proto( 13, /* nstack */ @@ -856,7 +842,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -916,7 +902,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name * /******************************************************************** ** Solidified function: event_published ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ be_nested_proto( 6, /* nstack */ @@ -925,7 +910,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -959,7 +944,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ /******************************************************************** ** Solidified function: remove_by_session ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name */ be_nested_proto( 6, /* nstack */ @@ -968,7 +952,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(0), @@ -1008,7 +992,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name /******************************************************************** ** Solidified function: remove_by_fabric ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name */ be_nested_proto( 7, /* nstack */ @@ -1017,7 +1000,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_sessions), @@ -1050,7 +1033,6 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name * /******************************************************************** ** Solidified function: get_by_id ********************************************************************/ -extern const bclass be_class_Matter_IM_Subscription_Shop; be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ be_nested_proto( 5, /* nstack */ @@ -1059,7 +1041,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_IM_Subscription_Shop, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index 2ddee25dd..ff183283a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Frame; /******************************************************************** ** Solidified function: get_node_id ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_get_node_id, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Frame_get_node_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(session), @@ -44,7 +43,6 @@ be_local_closure(class_Matter_Frame_get_node_id, /* name */ /******************************************************************** ** Solidified function: encrypt ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_encrypt, /* name */ be_nested_proto( 23, /* nstack */ @@ -53,7 +51,7 @@ be_local_closure(class_Matter_Frame_encrypt, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -150,7 +148,6 @@ be_local_closure(class_Matter_Frame_encrypt, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -159,7 +156,7 @@ be_local_closure(class_Matter_Frame_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(message_handler), @@ -184,7 +181,6 @@ be_local_closure(class_Matter_Frame_init, /* name */ /******************************************************************** ** Solidified function: encode_frame ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_encode_frame, /* name */ be_nested_proto( 7, /* nstack */ @@ -193,7 +189,7 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[29]) { /* constants */ /* K0 */ be_const_int(0), @@ -399,7 +395,6 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ /******************************************************************** ** Solidified function: decode_header ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_decode_header, /* name */ be_nested_proto( 7, /* nstack */ @@ -408,7 +403,7 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_const_int(0), @@ -566,7 +561,6 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ /******************************************************************** ** Solidified function: debug ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_debug, /* name */ be_nested_proto( 6, /* nstack */ @@ -575,7 +569,7 @@ be_local_closure(class_Matter_Frame_debug, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -606,7 +600,6 @@ be_local_closure(class_Matter_Frame_debug, /* name */ /******************************************************************** ** Solidified function: build_response ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_build_response, /* name */ be_nested_proto( 10, /* nstack */ @@ -615,7 +608,7 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[29]) { /* constants */ /* K0 */ be_nested_str_weak(message_handler), @@ -750,7 +743,6 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ /******************************************************************** ** Solidified function: decrypt ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_decrypt, /* name */ be_nested_proto( 23, /* nstack */ @@ -759,7 +751,7 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[29]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -919,7 +911,6 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ /******************************************************************** ** Solidified function: build_standalone_ack ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ be_nested_proto( 5, /* nstack */ @@ -928,7 +919,7 @@ be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(message_handler), @@ -1010,7 +1001,6 @@ be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ /******************************************************************** ** Solidified function: initiate_response ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_initiate_response, /* name */ be_nested_proto( 9, /* nstack */ @@ -1019,7 +1009,7 @@ be_local_closure(class_Matter_Frame_initiate_response, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Frame), @@ -1104,7 +1094,6 @@ be_local_closure(class_Matter_Frame_initiate_response, /* name */ /******************************************************************** ** Solidified function: decode_payload ********************************************************************/ -extern const bclass be_class_Matter_Frame; be_local_closure(class_Matter_Frame_decode_payload, /* name */ be_nested_proto( 7, /* nstack */ @@ -1113,7 +1102,7 @@ be_local_closure(class_Matter_Frame_decode_payload, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(payload_idx), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index 1d809134a..b9e2bcfbc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_MessageHandler; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_MessageHandler_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_MessageHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -64,7 +63,6 @@ be_local_closure(class_Matter_MessageHandler_init, /* name */ /******************************************************************** ** Solidified function: send_encrypted_ack ********************************************************************/ -extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ be_nested_proto( 11, /* nstack */ @@ -73,7 +71,7 @@ be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_MessageHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(x_flag_r), @@ -136,7 +134,6 @@ be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ /******************************************************************** ** Solidified function: msg_received ********************************************************************/ -extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ be_nested_proto( 18, /* nstack */ @@ -145,7 +142,7 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_MessageHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[65]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -560,7 +557,6 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ /******************************************************************** ** Solidified function: send_response_frame ********************************************************************/ -extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */ be_nested_proto( 5, /* nstack */ @@ -569,7 +565,7 @@ be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_MessageHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -592,7 +588,6 @@ be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */ /******************************************************************** ** Solidified function: send_simple_ack ********************************************************************/ -extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ be_nested_proto( 11, /* nstack */ @@ -601,7 +596,7 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_MessageHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(x_flag_r), @@ -663,7 +658,6 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ /******************************************************************** ** Solidified function: every_50ms ********************************************************************/ -extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ @@ -672,7 +666,7 @@ be_local_closure(class_Matter_MessageHandler_every_50ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_MessageHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(im), @@ -694,7 +688,6 @@ be_local_closure(class_Matter_MessageHandler_every_50ms, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_MessageHandler; be_local_closure(class_Matter_MessageHandler_every_second, /* name */ be_nested_proto( 3, /* nstack */ @@ -703,7 +696,7 @@ be_local_closure(class_Matter_MessageHandler_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_MessageHandler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(commissioning), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h index d36f5bb72..695a24695 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h @@ -15,7 +15,7 @@ be_local_closure(module_matter_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -53,7 +53,7 @@ be_local_closure(module_matter_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(global), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h index c6b0ab25d..8a8b51bad 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Path; /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_Path; be_local_closure(class_Matter_Path_reset, /* name */ be_nested_proto( 2, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Path_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Path, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(endpoint), @@ -52,7 +51,6 @@ be_local_closure(class_Matter_Path_reset, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Path; be_local_closure(class_Matter_Path_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -61,7 +59,7 @@ be_local_closure(class_Matter_Path_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Path, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(endpoint), @@ -84,7 +82,6 @@ be_local_closure(class_Matter_Path_init, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Matter_Path; be_local_closure(class_Matter_Path_tostring, /* name */ be_nested_proto( 6, /* nstack */ @@ -93,7 +90,7 @@ be_local_closure(class_Matter_Path_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Path, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -201,7 +198,6 @@ be_local_closure(class_Matter_Path_tostring, /* name */ /******************************************************************** ** Solidified function: copy ********************************************************************/ -extern const bclass be_class_Matter_Path; be_local_closure(class_Matter_Path_copy, /* name */ be_nested_proto( 4, /* nstack */ @@ -210,7 +206,7 @@ be_local_closure(class_Matter_Path_copy, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Path, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(reset), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h index 678c04f70..f674c5996 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_EventGenerator; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_EventGenerator_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -37,7 +36,6 @@ be_local_closure(class_Matter_EventGenerator_init, /* name */ /******************************************************************** ** Solidified function: get_pi ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_get_pi, /* name */ be_nested_proto( 2, /* nstack */ @@ -46,7 +44,7 @@ be_local_closure(class_Matter_EventGenerator_get_pi, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_pi), @@ -63,7 +61,6 @@ be_local_closure(class_Matter_EventGenerator_get_pi, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_start, /* name */ be_nested_proto( 7, /* nstack */ @@ -72,7 +69,7 @@ be_local_closure(class_Matter_EventGenerator_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -105,7 +102,6 @@ be_local_closure(class_Matter_EventGenerator_start, /* name */ /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_reset, /* name */ be_nested_proto( 3, /* nstack */ @@ -114,7 +110,7 @@ be_local_closure(class_Matter_EventGenerator_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(event_no), @@ -137,7 +133,6 @@ be_local_closure(class_Matter_EventGenerator_reset, /* name */ /******************************************************************** ** Solidified function: is_finished ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_is_finished, /* name */ be_nested_proto( 2, /* nstack */ @@ -146,7 +141,7 @@ be_local_closure(class_Matter_EventGenerator_is_finished, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(finished), @@ -165,7 +160,6 @@ be_local_closure(class_Matter_EventGenerator_is_finished, /* name */ /******************************************************************** ** Solidified function: event_is_match ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */ be_nested_proto( 5, /* nstack */ @@ -174,7 +168,7 @@ be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(path_in_endpoint), @@ -234,7 +228,6 @@ be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */ /******************************************************************** ** Solidified function: next_event ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_next_event, /* name */ be_nested_proto( 5, /* nstack */ @@ -243,7 +236,7 @@ be_local_closure(class_Matter_EventGenerator_next_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(finished), @@ -293,7 +286,6 @@ be_local_closure(class_Matter_EventGenerator_next_event, /* name */ /******************************************************************** ** Solidified function: restart_from ********************************************************************/ -extern const bclass be_class_Matter_EventGenerator; be_local_closure(class_Matter_EventGenerator_restart_from, /* name */ be_nested_proto( 3, /* nstack */ @@ -302,7 +294,7 @@ be_local_closure(class_Matter_EventGenerator_restart_from, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_EventGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(finished), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h index 7ac8fdb3e..5b7cb5181 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_PathGenerator; /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator_reset, /* name */ be_nested_proto( 4, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_PathGenerator_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(path_concrete), @@ -50,7 +49,6 @@ be_local_closure(class_Matter_PathGenerator_reset, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -59,7 +57,7 @@ be_local_closure(class_Matter_PathGenerator_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -78,7 +76,6 @@ be_local_closure(class_Matter_PathGenerator_init, /* name */ /******************************************************************** ** Solidified function: is_direct ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator_is_direct, /* name */ be_nested_proto( 3, /* nstack */ @@ -87,7 +84,7 @@ be_local_closure(class_Matter_PathGenerator_is_direct, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(path_in_endpoint), @@ -121,7 +118,6 @@ be_local_closure(class_Matter_PathGenerator_is_direct, /* name */ /******************************************************************** ** Solidified function: is_finished ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator_is_finished, /* name */ be_nested_proto( 3, /* nstack */ @@ -130,7 +126,7 @@ be_local_closure(class_Matter_PathGenerator_is_finished, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(pi), @@ -151,7 +147,6 @@ be_local_closure(class_Matter_PathGenerator_is_finished, /* name */ /******************************************************************** ** Solidified function: next_attribute ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */ be_nested_proto( 4, /* nstack */ @@ -160,7 +155,7 @@ be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(pi), @@ -292,7 +287,6 @@ be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */ /******************************************************************** ** Solidified function: _next_cluster ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ be_nested_proto( 7, /* nstack */ @@ -301,7 +295,7 @@ be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(cluster), @@ -367,7 +361,6 @@ be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ /******************************************************************** ** Solidified function: _default_status_error ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */ be_nested_proto( 3, /* nstack */ @@ -376,7 +369,7 @@ be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(is_direct), @@ -424,7 +417,6 @@ be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */ /******************************************************************** ** Solidified function: _next_attribute ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ be_nested_proto( 7, /* nstack */ @@ -433,7 +425,7 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(attribute), @@ -501,7 +493,6 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ /******************************************************************** ** Solidified function: _next_endpoint ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ be_nested_proto( 7, /* nstack */ @@ -510,7 +501,7 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(pi), @@ -590,7 +581,6 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ /******************************************************************** ** Solidified function: get_pi ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator_get_pi, /* name */ be_nested_proto( 3, /* nstack */ @@ -599,7 +589,7 @@ be_local_closure(class_Matter_PathGenerator_get_pi, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(pi), @@ -628,7 +618,6 @@ be_local_closure(class_Matter_PathGenerator_get_pi, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_Matter_PathGenerator; be_local_closure(class_Matter_PathGenerator_start, /* name */ be_nested_proto( 7, /* nstack */ @@ -637,7 +626,7 @@ be_local_closure(class_Matter_PathGenerator_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_PathGenerator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(path_concrete), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 335528db8..ad8ef2da2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin; /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_update_shadow, /* name */ be_nested_proto( 2, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tick), @@ -40,7 +39,6 @@ be_local_closure(class_Matter_Plugin_update_shadow, /* name */ /******************************************************************** ** Solidified function: state_json ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_state_json, /* name */ be_nested_proto( 9, /* nstack */ @@ -49,7 +47,7 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -98,7 +96,6 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ /******************************************************************** ** Solidified function: ack_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_ack_request, /* name */ be_nested_proto( 6, /* nstack */ @@ -107,7 +104,7 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(msg), @@ -141,7 +138,6 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ /******************************************************************** ** Solidified function: write_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_write_attribute, /* name */ be_nested_proto( 5, /* nstack */ @@ -150,7 +146,7 @@ be_local_closure(class_Matter_Plugin_write_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(write_attribute), @@ -167,7 +163,6 @@ be_local_closure(class_Matter_Plugin_write_attribute, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_invoke_request, /* name */ be_nested_proto( 5, /* nstack */ @@ -176,7 +171,7 @@ be_local_closure(class_Matter_Plugin_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(invoke_request), @@ -193,7 +188,6 @@ be_local_closure(class_Matter_Plugin_invoke_request, /* name */ /******************************************************************** ** Solidified function: append_state_json ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_append_state_json, /* name */ be_nested_proto( 1, /* nstack */ @@ -202,7 +196,7 @@ be_local_closure(class_Matter_Plugin_append_state_json, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -220,7 +214,6 @@ be_local_closure(class_Matter_Plugin_append_state_json, /* name */ /******************************************************************** ** Solidified function: every_250ms ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_every_250ms, /* name */ be_nested_proto( 4, /* nstack */ @@ -229,7 +222,7 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(update_next), @@ -283,7 +276,6 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ /******************************************************************** ** Solidified function: publish_event ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_publish_event, /* name */ be_nested_proto( 17, /* nstack */ @@ -292,7 +284,7 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -325,7 +317,6 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ /******************************************************************** ** Solidified function: set_name ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_set_name, /* name */ be_nested_proto( 6, /* nstack */ @@ -334,7 +325,7 @@ be_local_closure(class_Matter_Plugin_set_name, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(node_label), @@ -369,7 +360,7 @@ be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), @@ -388,7 +379,6 @@ be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ /******************************************************************** ** Solidified function: ui_string_to_conf ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ be_nested_proto( 8, /* nstack */ @@ -397,7 +387,7 @@ be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Plugin), @@ -426,7 +416,6 @@ be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ /******************************************************************** ** Solidified function: timed_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_timed_request, /* name */ be_nested_proto( 5, /* nstack */ @@ -435,7 +424,7 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(timed_request), @@ -452,7 +441,6 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -461,7 +449,7 @@ be_local_closure(class_Matter_Plugin_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -500,7 +488,6 @@ be_local_closure(class_Matter_Plugin_init, /* name */ /******************************************************************** ** Solidified function: is_local_device ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_is_local_device, /* name */ be_nested_proto( 2, /* nstack */ @@ -509,7 +496,7 @@ be_local_closure(class_Matter_Plugin_is_local_device, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -531,7 +518,6 @@ be_local_closure(class_Matter_Plugin_is_local_device, /* name */ /******************************************************************** ** Solidified function: consolidate_update_commands ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ be_nested_proto( 2, /* nstack */ @@ -540,7 +526,7 @@ be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), @@ -559,7 +545,6 @@ be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ /******************************************************************** ** Solidified function: update_shadow_lazy ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ be_nested_proto( 3, /* nstack */ @@ -568,7 +553,7 @@ be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tick), @@ -598,7 +583,6 @@ be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ /******************************************************************** ** Solidified function: get_cluster_list_sorted ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ be_nested_proto( 4, /* nstack */ @@ -607,7 +591,7 @@ be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -631,7 +615,6 @@ be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ /******************************************************************** ** Solidified function: ui_conf_to_string ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ be_nested_proto( 9, /* nstack */ @@ -640,7 +623,7 @@ be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Plugin), @@ -672,7 +655,6 @@ be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ /******************************************************************** ** Solidified function: attribute_updated ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ be_nested_proto( 10, /* nstack */ @@ -681,7 +663,7 @@ be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -708,7 +690,6 @@ be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_update_virtual, /* name */ be_nested_proto( 2, /* nstack */ @@ -717,7 +698,7 @@ be_local_closure(class_Matter_Plugin_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(update_virtual), @@ -733,7 +714,6 @@ be_local_closure(class_Matter_Plugin_update_virtual, /* name */ /******************************************************************** ** Solidified function: _parse_update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ be_nested_proto( 12, /* nstack */ @@ -742,7 +722,7 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -778,7 +758,6 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ be_nested_proto( 2, /* nstack */ @@ -787,7 +766,7 @@ be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(parse_configuration), @@ -803,7 +782,6 @@ be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ /******************************************************************** ** Solidified function: get_name ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_get_name, /* name */ be_nested_proto( 2, /* nstack */ @@ -812,7 +790,7 @@ be_local_closure(class_Matter_Plugin_get_name, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(node_label), @@ -831,7 +809,6 @@ be_local_closure(class_Matter_Plugin_get_name, /* name */ /******************************************************************** ** Solidified function: get_endpoint ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ be_nested_proto( 2, /* nstack */ @@ -840,7 +817,7 @@ be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(endpoint), @@ -859,7 +836,6 @@ be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ /******************************************************************** ** Solidified function: contains_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ be_nested_proto( 7, /* nstack */ @@ -868,7 +844,7 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(clusters), @@ -910,7 +886,6 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ /******************************************************************** ** Solidified function: subscribe_event ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ be_nested_proto( 6, /* nstack */ @@ -919,7 +894,7 @@ be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(subscribe_event), @@ -936,7 +911,6 @@ be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ /******************************************************************** ** Solidified function: read_event ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_read_event, /* name */ be_nested_proto( 6, /* nstack */ @@ -945,7 +919,7 @@ be_local_closure(class_Matter_Plugin_read_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(read_event), @@ -962,7 +936,6 @@ be_local_closure(class_Matter_Plugin_read_event, /* name */ /******************************************************************** ** Solidified function: parse_sensors ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ be_nested_proto( 2, /* nstack */ @@ -971,7 +944,7 @@ be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(parse_sensors), @@ -987,7 +960,6 @@ be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ /******************************************************************** ** Solidified function: get_attribute_list ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ be_nested_proto( 6, /* nstack */ @@ -996,7 +968,7 @@ be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(clusters), @@ -1021,7 +993,6 @@ be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ /******************************************************************** ** Solidified function: publish_command ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_publish_command, /* name */ be_nested_proto( 16, /* nstack */ @@ -1030,7 +1001,7 @@ be_local_closure(class_Matter_Plugin_publish_command, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -1101,7 +1072,6 @@ be_local_closure(class_Matter_Plugin_publish_command, /* name */ /******************************************************************** ** Solidified function: get_clusters ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_get_clusters, /* name */ be_nested_proto( 2, /* nstack */ @@ -1110,7 +1080,7 @@ be_local_closure(class_Matter_Plugin_get_clusters, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(CLUSTERS), @@ -1129,7 +1099,6 @@ be_local_closure(class_Matter_Plugin_get_clusters, /* name */ /******************************************************************** ** Solidified function: contains_cluster ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ be_nested_proto( 5, /* nstack */ @@ -1138,7 +1107,7 @@ be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(clusters), @@ -1161,7 +1130,6 @@ be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_read_attribute, /* name */ be_nested_proto( 17, /* nstack */ @@ -1170,7 +1138,7 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[22]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1369,7 +1337,6 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ /******************************************************************** ** Solidified function: subscribe_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin; be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ be_nested_proto( 6, /* nstack */ @@ -1378,7 +1345,7 @@ be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(subscribe_attribute), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h index 8b47bb1a8..1306bc9fd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Aggregator; /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Aggregator; be_local_closure(class_Matter_Plugin_Aggregator_read_attribute, /* name */ be_nested_proto( 16, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Aggregator_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Aggregator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -125,7 +124,6 @@ be_local_closure(class_Matter_Plugin_Aggregator_read_attribute, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Aggregator; be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ be_nested_proto( 13, /* nstack */ @@ -134,7 +132,7 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Aggregator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(matter), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index fcba237f4..7ad67d51d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -9,7 +9,6 @@ extern const bclass be_class_GetOptionReader; /******************************************************************** ** Solidified function: getoption ********************************************************************/ -extern const bclass be_class_GetOptionReader; be_local_closure(class_GetOptionReader_getoption, /* name */ be_nested_proto( 6, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_GetOptionReader_getoption, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_GetOptionReader, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(flag), @@ -108,7 +107,6 @@ be_local_closure(class_GetOptionReader_getoption, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_GetOptionReader; be_local_closure(class_GetOptionReader_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -117,7 +115,7 @@ be_local_closure(class_GetOptionReader_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_GetOptionReader, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(value_error), @@ -224,7 +222,6 @@ extern const bclass be_class_Matter_Plugin_Device; /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_parse_status, /* name */ be_nested_proto( 3, /* nstack */ @@ -233,7 +230,7 @@ be_local_closure(class_Matter_Plugin_Device_parse_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(parse_status), @@ -249,7 +246,6 @@ be_local_closure(class_Matter_Plugin_Device_parse_status, /* name */ /******************************************************************** ** Solidified function: register_cmd_cb ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ be_nested_proto( 6, /* nstack */ @@ -258,7 +254,7 @@ be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 8, /* nstack */ 3, /* argc */ @@ -268,7 +264,7 @@ be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(parse_http_response), @@ -285,7 +281,6 @@ be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ 0x80040600, // 0006 RET 1 R3 }) ), - &be_class_Matter_Plugin_Device, }), 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ @@ -314,7 +309,6 @@ be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_web_values, /* name */ be_nested_proto( 5, /* nstack */ @@ -323,7 +317,7 @@ be_local_closure(class_Matter_Plugin_Device_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -354,7 +348,6 @@ be_local_closure(class_Matter_Plugin_Device_web_values, /* name */ /******************************************************************** ** Solidified function: every_250ms ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_every_250ms, /* name */ be_nested_proto( 3, /* nstack */ @@ -363,7 +356,7 @@ be_local_closure(class_Matter_Plugin_Device_every_250ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -395,7 +388,6 @@ be_local_closure(class_Matter_Plugin_Device_every_250ms, /* name */ /******************************************************************** ** Solidified function: web_value_onoff ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_web_value_onoff, /* name */ be_nested_proto( 3, /* nstack */ @@ -404,7 +396,7 @@ be_local_closure(class_Matter_Plugin_Device_web_value_onoff, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_X3Cb_X3EOn_X3C_X2Fb_X3E), @@ -433,7 +425,6 @@ be_local_closure(class_Matter_Plugin_Device_web_value_onoff, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */ be_nested_proto( 13, /* nstack */ @@ -442,7 +433,7 @@ be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -520,7 +511,6 @@ be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */ /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */ be_nested_proto( 7, /* nstack */ @@ -529,7 +519,7 @@ be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -572,7 +562,6 @@ be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */ /******************************************************************** ** Solidified function: call_remote_sync ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ be_nested_proto( 9, /* nstack */ @@ -581,7 +570,7 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -655,7 +644,6 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ /******************************************************************** ** Solidified function: parse_http_response ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */ be_nested_proto( 11, /* nstack */ @@ -664,7 +652,7 @@ be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -700,7 +688,6 @@ be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */ /******************************************************************** ** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ @@ -709,7 +696,7 @@ be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -746,7 +733,6 @@ be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ be_nested_proto( 17, /* nstack */ @@ -755,7 +741,7 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[44]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1059,7 +1045,6 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -1068,7 +1053,7 @@ be_local_closure(class_Matter_Plugin_Device_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1115,7 +1100,6 @@ be_local_closure(class_Matter_Plugin_Device_init, /* name */ /******************************************************************** ** Solidified function: append_state_json ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ be_nested_proto( 11, /* nstack */ @@ -1124,7 +1108,7 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 12, /* nstack */ 2, /* argc */ @@ -1135,7 +1119,7 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ be_local_const_upval(1, 3), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -1181,7 +1165,6 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ 0x80000000, // 001E RET 0 }) ), - &be_class_Matter_Plugin_Device, }), 1, /* has constants */ ( &(const bvalue[42]) { /* constants */ @@ -1335,7 +1318,6 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ /******************************************************************** ** Solidified function: _parse_sensor_entry ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Device; be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ be_nested_proto( 12, /* nstack */ @@ -1344,7 +1326,7 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(find), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index a4fd6f6cc..a976555ce 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Root; /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Root; be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ be_nested_proto( 25, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[96]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -1056,7 +1055,6 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ /******************************************************************** ** Solidified function: write_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Root; be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ be_nested_proto( 11, /* nstack */ @@ -1065,7 +1063,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1194,7 +1192,6 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Root; be_local_closure(class_Matter_Plugin_Root_init, /* name */ be_nested_proto( 14, /* nstack */ @@ -1203,7 +1200,7 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1276,7 +1273,6 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Root; be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ be_nested_proto( 31, /* nstack */ @@ -1285,7 +1281,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 3, /* nstack */ 0, /* argc */ @@ -1296,7 +1292,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ be_local_const_upval(1, 10), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -1313,7 +1309,6 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x80000000, // 0005 RET 0 }) ), - &be_class_Matter_Plugin_Root, }), 1, /* has constants */ ( &(const bvalue[102]) { /* constants */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h index dcb7f62ad..1372389f8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Fan; /******************************************************************** ** Solidified function: set_fan_mode ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_set_fan_mode, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_mode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Fan, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_const_int(0), @@ -90,7 +89,6 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_mode, /* name */ /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ be_nested_proto( 13, /* nstack */ @@ -99,7 +97,7 @@ be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Fan, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -165,7 +163,6 @@ be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ /******************************************************************** ** Solidified function: set_fan_speed_pct ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ be_nested_proto( 10, /* nstack */ @@ -174,7 +171,7 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Fan, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), @@ -241,7 +238,6 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ /******************************************************************** ** Solidified function: write_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ be_nested_proto( 21, /* nstack */ @@ -250,7 +246,7 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Fan, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -364,7 +360,6 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -373,7 +368,7 @@ be_local_closure(class_Matter_Plugin_Fan_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Fan, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -404,7 +399,6 @@ be_local_closure(class_Matter_Plugin_Fan_init, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Fan; be_local_closure(class_Matter_Plugin_Fan_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -413,7 +407,7 @@ be_local_closure(class_Matter_Plugin_Fan_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Fan, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(matter), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h index eca9ea276..362878d3c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Light0; /******************************************************************** ** Solidified function: set_onoff ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */ be_nested_proto( 7, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -109,7 +108,6 @@ be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */ be_nested_proto( 9, /* nstack */ @@ -118,7 +116,7 @@ be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -152,7 +150,6 @@ be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -161,7 +158,7 @@ be_local_closure(class_Matter_Plugin_Light0_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_onoff), @@ -193,7 +190,6 @@ be_local_closure(class_Matter_Plugin_Light0_init, /* name */ /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ be_nested_proto( 7, /* nstack */ @@ -202,7 +198,7 @@ be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_relay_index), @@ -239,7 +235,6 @@ be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ be_nested_proto( 7, /* nstack */ @@ -248,7 +243,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -286,7 +281,6 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -295,7 +289,7 @@ be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -346,7 +340,6 @@ be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ /******************************************************************** ** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ @@ -355,7 +348,7 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -409,7 +402,7 @@ be_local_closure(class_Matter_Plugin_Light0__X3Clambda_X3E, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), @@ -428,7 +421,6 @@ be_local_closure(class_Matter_Plugin_Light0__X3Clambda_X3E, /* name */ /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ be_nested_proto( 6, /* nstack */ @@ -437,7 +429,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(VIRTUAL), @@ -496,7 +488,6 @@ be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ be_nested_proto( 11, /* nstack */ @@ -505,7 +496,7 @@ be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -585,7 +576,6 @@ be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light0; be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ be_nested_proto( 8, /* nstack */ @@ -594,7 +584,7 @@ be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light0, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_relay_index), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h index 19c189e9e..2955e45ed 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor; /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_parse_status, /* name */ be_nested_proto( 9, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(contains), @@ -79,7 +78,6 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_status, /* name */ /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_parse_configuration, /* name */ be_nested_proto( 5, /* nstack */ @@ -88,7 +86,7 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_configuration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_sensor_filter), @@ -132,7 +130,6 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_configuration, /* name */ /******************************************************************** ** Solidified function: pre_value ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */ be_nested_proto( 2, /* nstack */ @@ -141,7 +138,7 @@ be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(pre_value), @@ -157,7 +154,6 @@ be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */ /******************************************************************** ** Solidified function: parse_sensors ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ be_nested_proto( 7, /* nstack */ @@ -166,7 +162,7 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(VIRTUAL), @@ -223,7 +219,6 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ /******************************************************************** ** Solidified function: value_changed ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */ be_nested_proto( 1, /* nstack */ @@ -232,7 +227,7 @@ be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(value_changed), @@ -248,7 +243,6 @@ be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -257,7 +251,7 @@ be_local_closure(class_Matter_Plugin_Sensor_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -288,7 +282,6 @@ be_local_closure(class_Matter_Plugin_Sensor_init, /* name */ /******************************************************************** ** Solidified function: filter_name_html ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_filter_name_html, /* name */ be_nested_proto( 9, /* nstack */ @@ -297,7 +290,7 @@ be_local_closure(class_Matter_Plugin_Sensor_filter_name_html, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_sensor_filter), @@ -334,7 +327,6 @@ be_local_closure(class_Matter_Plugin_Sensor_filter_name_html, /* name */ /******************************************************************** ** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ @@ -343,7 +335,7 @@ be_local_closure(class_Matter_Plugin_Sensor_web_values_prefix, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -386,7 +378,6 @@ be_local_closure(class_Matter_Plugin_Sensor_web_values_prefix, /* name */ /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor; be_local_closure(class_Matter_Plugin_Sensor_update_virtual, /* name */ be_nested_proto( 6, /* nstack */ @@ -395,7 +386,7 @@ be_local_closure(class_Matter_Plugin_Sensor_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(find), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index 0265dc8bc..f9b2ec4cb 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 9, /* nstack */ 2, /* argc */ @@ -26,7 +25,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -50,7 +49,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ 0x80000000, // 000B RET 0 }) ), - &be_class_Matter_Plugin_Sensor_Air_Quality, }), 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ @@ -114,7 +112,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status, /* name */ be_nested_proto( 6, /* nstack */ @@ -123,7 +120,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Air_Quality, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -148,7 +145,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status, /* name /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual, /* name */ be_nested_proto( 10, /* nstack */ @@ -157,7 +153,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual, /* nam 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Air_Quality, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_air_quality), @@ -249,7 +245,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual, /* nam /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -258,7 +253,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Air_Quality, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -292,7 +287,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* name */ be_nested_proto( 14, /* nstack */ @@ -301,7 +295,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -313,7 +307,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam be_local_const_upval(1, 4), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), @@ -405,7 +399,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x80040400, // 0049 RET 1 R2 }) ), - &be_class_Matter_Plugin_Sensor_Air_Quality, }), 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ @@ -530,7 +523,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, /* name */ be_nested_proto( 6, /* nstack */ @@ -539,7 +531,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, / 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Air_Quality, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(prefix), @@ -565,7 +557,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, / /******************************************************************** ** Solidified function: parse_sensors ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name */ be_nested_proto( 11, /* nstack */ @@ -574,7 +565,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Air_Quality, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -674,7 +665,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name /******************************************************************** ** Solidified function: _parse_sensor_entry ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, /* name */ be_nested_proto( 12, /* nstack */ @@ -683,7 +673,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, / 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Air_Quality, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(find), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h index 81f010d5b..7e7c442d8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Boolean; /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration, /* name */ be_nested_proto( 7, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration, /* na 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Boolean, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_switch_index), @@ -51,7 +50,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration, /* na /******************************************************************** ** Solidified function: value_updated ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_closure(class_Matter_Plugin_Sensor_Boolean_value_updated, /* name */ be_nested_proto( 1, /* nstack */ @@ -60,7 +58,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_value_updated, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Boolean, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(value_updated), @@ -84,7 +82,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean__X3Clambda_X3E, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), @@ -103,7 +101,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean__X3Clambda_X3E, /* name */ /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow, /* name */ be_nested_proto( 6, /* nstack */ @@ -112,7 +109,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Boolean, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(update_shadow), @@ -182,7 +179,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_closure(class_Matter_Plugin_Sensor_Boolean_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -191,7 +187,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Boolean, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -220,7 +216,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_init, /* name */ /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Boolean; be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_status, /* name */ be_nested_proto( 8, /* nstack */ @@ -229,7 +224,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Boolean, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(find), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h index 5ce9b2ded..a72993b82 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -103,7 +102,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), @@ -122,7 +121,6 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E, /******************************************************************** ** Solidified function: set_position ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position, /* name */ be_nested_proto( 6, /* nstack */ @@ -131,7 +129,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_position), @@ -159,7 +157,6 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position, /* /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuration, /* name */ be_nested_proto( 7, /* nstack */ @@ -168,7 +165,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuratio 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_switch_index), @@ -201,7 +198,6 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuratio /******************************************************************** ** Solidified function: append_state_json ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, /* name */ be_nested_proto( 5, /* nstack */ @@ -210,7 +206,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), @@ -235,7 +231,6 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, /******************************************************************** ** Solidified function: button_handler ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, /* name */ be_nested_proto( 15, /* nstack */ @@ -244,7 +239,7 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_GenericSwitch_Btn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_const_int(0), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h index bc4d53a53..abf5b2809 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Shutter; /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Shutter; be_local_closure(class_Matter_Plugin_Shutter_parse_configuration, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_configuration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Shutter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_shutter_index), @@ -51,7 +50,6 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_configuration, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Shutter; be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ be_nested_proto( 14, /* nstack */ @@ -60,7 +58,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Shutter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[24]) { /* constants */ /* K0 */ be_nested_str_weak(light), @@ -215,7 +213,6 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Shutter; be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ be_nested_proto( 13, /* nstack */ @@ -224,7 +221,7 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Shutter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -396,7 +393,7 @@ be_local_closure(class_Matter_Plugin_Shutter__X3Clambda_X3E, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), @@ -415,7 +412,6 @@ be_local_closure(class_Matter_Plugin_Shutter__X3Clambda_X3E, /* name */ /******************************************************************** ** Solidified function: parse_sensors ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Shutter; be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */ be_nested_proto( 11, /* nstack */ @@ -424,7 +420,7 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Shutter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(Shutter), @@ -505,7 +501,6 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */ /******************************************************************** ** Solidified function: update_inverted ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Shutter; be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ be_nested_proto( 6, /* nstack */ @@ -514,7 +509,7 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Shutter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_shutter_inverted), @@ -578,7 +573,6 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Shutter; be_local_closure(class_Matter_Plugin_Shutter_update_shadow, /* name */ be_nested_proto( 5, /* nstack */ @@ -587,7 +581,7 @@ be_local_closure(class_Matter_Plugin_Shutter_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Shutter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(VIRTUAL), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h index 399697c39..19840ada1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Light1; /******************************************************************** ** Solidified function: set_bri ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ be_nested_proto( 11, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_const_int(0), @@ -142,7 +141,6 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ /******************************************************************** ** Solidified function: web_value_dimmer ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */ be_nested_proto( 9, /* nstack */ @@ -151,7 +149,7 @@ be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -194,7 +192,6 @@ be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ be_nested_proto( 22, /* nstack */ @@ -203,7 +200,7 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(light), @@ -359,7 +356,6 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -368,7 +364,7 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -455,7 +451,6 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ /******************************************************************** ** Solidified function: parse_configuration ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ be_nested_proto( 7, /* nstack */ @@ -464,7 +459,7 @@ be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -545,7 +540,6 @@ be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ be_nested_proto( 8, /* nstack */ @@ -554,7 +548,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -598,7 +592,6 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -607,7 +600,7 @@ be_local_closure(class_Matter_Plugin_Light1_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_bri), @@ -636,7 +629,6 @@ be_local_closure(class_Matter_Plugin_Light1_init, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ be_nested_proto( 9, /* nstack */ @@ -645,7 +637,7 @@ be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -682,7 +674,6 @@ be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ be_nested_proto( 11, /* nstack */ @@ -691,7 +682,7 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(parse_status), @@ -750,7 +741,6 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light1; be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ be_nested_proto( 12, /* nstack */ @@ -759,7 +749,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light1, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(VIRTUAL), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h index 4d5232838..2894808ac 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Contact; /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_bool_value), @@ -55,7 +54,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -64,7 +62,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -112,7 +110,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ be_nested_proto( 10, /* nstack */ @@ -121,7 +118,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -157,7 +154,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ /******************************************************************** ** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ @@ -166,7 +162,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -212,7 +208,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name /******************************************************************** ** Solidified function: value_updated ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Contact; be_local_closure(class_Matter_Plugin_Sensor_Contact_value_updated, /* name */ be_nested_proto( 5, /* nstack */ @@ -221,7 +216,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_value_updated, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Contact, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h index 060902807..1e756ca1e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Flow; /******************************************************************** ** Solidified function: value_changed ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Flow; be_local_closure(class_Matter_Plugin_Sensor_Flow_value_changed, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_value_changed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Flow, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), @@ -41,7 +40,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_value_changed, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Flow; be_local_closure(class_Matter_Plugin_Sensor_Flow_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Flow, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -119,7 +117,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_read_attribute, /* name */ /******************************************************************** ** Solidified function: pre_value ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Flow; be_local_closure(class_Matter_Plugin_Sensor_Flow_pre_value, /* name */ be_nested_proto( 4, /* nstack */ @@ -128,7 +125,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_pre_value, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Flow, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(pre_value), @@ -153,7 +150,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_pre_value, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Flow; be_local_closure(class_Matter_Plugin_Sensor_Flow_web_values, /* name */ be_nested_proto( 8, /* nstack */ @@ -162,7 +158,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Flow, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h index 978d17ca9..cc4a6b69b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Humidity; /******************************************************************** ** Solidified function: value_changed ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Humidity; be_local_closure(class_Matter_Plugin_Sensor_Humidity_value_changed, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_value_changed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Humidity, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), @@ -41,7 +40,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_value_changed, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Humidity; be_local_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Humidity, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -119,7 +117,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute, /* name * /******************************************************************** ** Solidified function: pre_value ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Humidity; be_local_closure(class_Matter_Plugin_Sensor_Humidity_pre_value, /* name */ be_nested_proto( 4, /* nstack */ @@ -128,7 +125,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_pre_value, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Humidity, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(pre_value), @@ -153,7 +150,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_pre_value, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Humidity; be_local_closure(class_Matter_Plugin_Sensor_Humidity_web_values, /* name */ be_nested_proto( 8, /* nstack */ @@ -162,7 +158,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Humidity, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h index 23f7928ec..692dd6580 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; /******************************************************************** ** Solidified function: value_changed ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; be_local_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Illuminance, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), @@ -41,7 +40,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed, /* name /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* nam 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Illuminance, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -119,7 +117,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* nam /******************************************************************** ** Solidified function: pre_value ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ be_nested_proto( 6, /* nstack */ @@ -128,7 +125,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Illuminance, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(math), @@ -165,7 +162,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; be_local_closure(class_Matter_Plugin_Sensor_Illuminance_web_values, /* name */ be_nested_proto( 8, /* nstack */ @@ -174,7 +170,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Illuminance, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h index 2071c7b95..de56ce535 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_bool_value), @@ -55,7 +54,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -64,7 +62,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -132,7 +130,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ be_nested_proto( 10, /* nstack */ @@ -141,7 +138,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -177,7 +174,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ /******************************************************************** ** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ @@ -186,7 +182,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* na 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -232,7 +228,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* na /******************************************************************** ** Solidified function: value_updated ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; be_local_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated, /* name */ be_nested_proto( 5, /* nstack */ @@ -241,7 +236,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Occupancy, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h index b436d5fbd..ffb1e4765 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_OnOff; /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_OnOff; be_local_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_OnOff, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -69,7 +68,6 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ /******************************************************************** ** Solidified function: append_state_json ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_OnOff; be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name */ be_nested_proto( 5, /* nstack */ @@ -78,7 +76,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_OnOff, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s), @@ -103,7 +101,6 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name * /******************************************************************** ** Solidified function: value_updated ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_OnOff; be_local_closure(class_Matter_Plugin_Sensor_OnOff_value_updated, /* name */ be_nested_proto( 5, /* nstack */ @@ -112,7 +109,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_value_updated, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_OnOff, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h index c8a6e3198..dfa828a0a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Pressure; /******************************************************************** ** Solidified function: value_changed ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Pressure; be_local_closure(class_Matter_Plugin_Sensor_Pressure_value_changed, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_value_changed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Pressure, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), @@ -41,7 +40,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_value_changed, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Pressure; be_local_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Pressure, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -119,7 +117,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute, /* name * /******************************************************************** ** Solidified function: pre_value ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Pressure; be_local_closure(class_Matter_Plugin_Sensor_Pressure_pre_value, /* name */ be_nested_proto( 4, /* nstack */ @@ -128,7 +125,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_pre_value, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Pressure, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(pre_value), @@ -152,7 +149,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_pre_value, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Pressure; be_local_closure(class_Matter_Plugin_Sensor_Pressure_web_values, /* name */ be_nested_proto( 8, /* nstack */ @@ -161,7 +157,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Pressure, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h index f40e86794..93b739422 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Rain; /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Rain; be_local_closure(class_Matter_Plugin_Sensor_Rain_update_virtual, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Rain, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_bool_value), @@ -55,7 +54,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_update_virtual, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Rain; be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -64,7 +62,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Rain, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -112,7 +110,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Rain; be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */ be_nested_proto( 10, /* nstack */ @@ -121,7 +118,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Rain, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -157,7 +154,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */ /******************************************************************** ** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Rain; be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ @@ -166,7 +162,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Rain, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -212,7 +208,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */ /******************************************************************** ** Solidified function: value_updated ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Rain; be_local_closure(class_Matter_Plugin_Sensor_Rain_value_updated, /* name */ be_nested_proto( 5, /* nstack */ @@ -221,7 +216,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_value_updated, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Rain, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h index 4e1663584..47888b46e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Temp; /******************************************************************** ** Solidified function: value_changed ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Temp; be_local_closure(class_Matter_Plugin_Sensor_Temp_value_changed, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_value_changed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Temp, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), @@ -41,7 +40,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_value_changed, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Temp; be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Temp, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -117,7 +115,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */ /******************************************************************** ** Solidified function: pre_value ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Temp; be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ be_nested_proto( 5, /* nstack */ @@ -126,7 +123,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Temp, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(BRIDGE), @@ -191,7 +188,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Temp; be_local_closure(class_Matter_Plugin_Sensor_Temp_web_values, /* name */ be_nested_proto( 8, /* nstack */ @@ -200,7 +196,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Temp, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h index a25021d9a..d00365a5a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_bool_value), @@ -51,13 +50,66 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name ); /*******************************************************************/ -// Borrowed method 'read_attribute' from class 'class_Matter_Plugin_Sensor_Rain' -extern bclosure *class_Matter_Plugin_Sensor_Rain_read_attribute; + +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(set), + /* K6 */ be_nested_str_weak(BOOL), + /* K7 */ be_nested_str_weak(shadow_bool_value), + /* K8 */ be_nested_str_weak(read_attribute), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0xB8120000, // 0000 GETNGBL R4 K0 + 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88140502, // 0002 GETMBR R5 R2 K2 + 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x541E0044, // 0004 LDINT R7 69 + 0x1C1C0A07, // 0005 EQ R7 R5 R7 + 0x781E0006, // 0006 JMPF R7 #000E + 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x781E0004, // 0008 JMPF R7 #000E + 0x8C1C0705, // 0009 GETMET R7 R3 K5 + 0x88240906, // 000A GETMBR R9 R4 K6 + 0x88280107, // 000B GETMBR R10 R0 K7 + 0x7C1C0600, // 000C CALL R7 3 + 0x80040E00, // 000D RET 1 R7 + 0x601C0003, // 000E GETGBL R7 G3 + 0x5C200000, // 000F MOVE R8 R0 + 0x7C1C0200, // 0010 CALL R7 1 + 0x8C1C0F08, // 0011 GETMET R7 R7 K8 + 0x5C240200, // 0012 MOVE R9 R1 + 0x5C280400, // 0013 MOVE R10 R2 + 0x5C2C0600, // 0014 MOVE R11 R3 + 0x7C1C0800, // 0015 CALL R7 4 + 0x80040E00, // 0016 RET 1 R7 + }) + ) +); +/*******************************************************************/ + /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */ be_nested_proto( 10, /* nstack */ @@ -66,7 +118,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -102,7 +154,6 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */ /******************************************************************** ** Solidified function: web_values_prefix ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ @@ -111,7 +162,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* na 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Sensor_Waterleak, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -153,8 +204,37 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* na ); /*******************************************************************/ -// Borrowed method 'value_updated' from class 'class_Matter_Plugin_Sensor_Rain' -extern bclosure *class_Matter_Plugin_Sensor_Rain_value_updated; + +/******************************************************************** +** Solidified function: value_updated +********************************************************************/ +be_local_closure(class_Matter_Plugin_Sensor_Waterleak_value_updated, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + }), + be_str_weak(value_updated), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0044, // 0001 LDINT R3 69 + 0x58100001, // 0002 LDCONST R4 K1 + 0x7C040600, // 0003 CALL R1 3 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + /******************************************************************** ** Solidified class: Matter_Plugin_Sensor_Waterleak @@ -167,7 +247,7 @@ be_local_class(Matter_Plugin_Sensor_Waterleak, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual_closure) }, { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) }, - { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Rain_read_attribute_closure) }, + { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute_closure) }, { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { be_const_list( * be_nested_list(1, ( (struct bvalue*) &(const bvalue[]) { @@ -264,7 +344,7 @@ be_local_class(Matter_Plugin_Sensor_Waterleak, { be_const_key_int(67, -1), be_const_int(1) }, })) ) } )) }, { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix_closure) }, - { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_value_updated_closure) }, + { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_value_updated_closure) }, { be_const_key_weak(TYPE, 3), be_nested_str_weak(waterleak) }, })), be_str_weak(Matter_Plugin_Sensor_Waterleak) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h index ecb89c44b..e1b7f405d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_ShutterTilt; /******************************************************************** ** Solidified function: update_tilt_min_max ********************************************************************/ -extern const bclass be_class_Matter_Plugin_ShutterTilt; be_local_closure(class_Matter_Plugin_ShutterTilt_update_tilt_min_max, /* name */ be_nested_proto( 6, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_update_tilt_min_max, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_ShutterTilt, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -80,7 +79,6 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_update_tilt_min_max, /* name /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_ShutterTilt; be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ be_nested_proto( 14, /* nstack */ @@ -89,7 +87,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_ShutterTilt, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -238,7 +236,6 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ /******************************************************************** ** Solidified function: parse_sensors ********************************************************************/ -extern const bclass be_class_Matter_Plugin_ShutterTilt; be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ be_nested_proto( 9, /* nstack */ @@ -247,7 +244,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_ShutterTilt, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(Shutter), @@ -303,7 +300,6 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_ShutterTilt; be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ be_nested_proto( 18, /* nstack */ @@ -312,7 +308,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_ShutterTilt, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(light), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h index 4f5fac034..85c39360e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Light2; /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ be_nested_proto( 6, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -56,7 +55,6 @@ be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -65,7 +63,7 @@ be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -167,7 +165,6 @@ be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ be_nested_proto( 8, /* nstack */ @@ -176,7 +173,7 @@ be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(VIRTUAL), @@ -244,7 +241,6 @@ be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ /******************************************************************** ** Solidified function: set_ct ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ be_nested_proto( 7, /* nstack */ @@ -253,7 +249,7 @@ be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(ct_min), @@ -328,7 +324,6 @@ be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_parse_status, /* name */ be_nested_proto( 8, /* nstack */ @@ -337,7 +332,7 @@ be_local_closure(class_Matter_Plugin_Light2_parse_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(parse_status), @@ -395,7 +390,6 @@ be_local_closure(class_Matter_Plugin_Light2_parse_status, /* name */ /******************************************************************** ** Solidified function: web_value_ct ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */ be_nested_proto( 6, /* nstack */ @@ -404,7 +398,7 @@ be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -445,7 +439,6 @@ be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */ be_nested_proto( 10, /* nstack */ @@ -454,7 +447,7 @@ be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -494,7 +487,6 @@ be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -503,7 +495,7 @@ be_local_closure(class_Matter_Plugin_Light2_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -550,7 +542,6 @@ be_local_closure(class_Matter_Plugin_Light2_init, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ be_nested_proto( 12, /* nstack */ @@ -559,7 +550,7 @@ be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -656,7 +647,6 @@ be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ /******************************************************************** ** Solidified function: update_ct_minmax ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light2; be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */ be_nested_proto( 4, /* nstack */ @@ -665,7 +655,7 @@ be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light2, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h index 93e3887ba..464f51dd6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Light3; /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */ be_nested_proto( 15, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -174,7 +173,6 @@ be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */ /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ @@ -183,7 +181,7 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -309,7 +307,6 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ /******************************************************************** ** Solidified function: update_shadow ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ be_nested_proto( 12, /* nstack */ @@ -318,7 +315,7 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(VIRTUAL), @@ -425,7 +422,6 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ /******************************************************************** ** Solidified function: update_virtual ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ be_nested_proto( 8, /* nstack */ @@ -434,7 +430,7 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(find), @@ -482,7 +478,6 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ /******************************************************************** ** Solidified function: set_hue_sat ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ be_nested_proto( 11, /* nstack */ @@ -491,7 +486,7 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_const_int(0), @@ -680,7 +675,6 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -689,7 +683,7 @@ be_local_closure(class_Matter_Plugin_Light3_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -720,7 +714,6 @@ be_local_closure(class_Matter_Plugin_Light3_init, /* name */ /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ be_nested_proto( 10, /* nstack */ @@ -729,7 +722,7 @@ be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -769,7 +762,6 @@ be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ /******************************************************************** ** Solidified function: parse_status ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ be_nested_proto( 15, /* nstack */ @@ -778,7 +770,7 @@ be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(parse_status), @@ -877,7 +869,6 @@ be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ /******************************************************************** ** Solidified function: web_value_RGB ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Light3; be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ be_nested_proto( 12, /* nstack */ @@ -886,7 +877,7 @@ be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Light3, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(shadow_hue), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h index f9a4b9cc3..d539cdbb4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h @@ -17,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Bridge_Light1__X3Clambda_X3E, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h index a7c7f71dd..60135b4a8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h @@ -17,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Bridge_Light2__X3Clambda_X3E, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h index d8c7a1641..cdd1bd78e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h @@ -17,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Bridge_Light3__X3Clambda_X3E, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(_X3Clambda_X3E), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h index 7ac5d5852..afbebb66c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Bridge_OnOff; /******************************************************************** ** Solidified function: web_values ********************************************************************/ -extern const bclass be_class_Matter_Plugin_Bridge_OnOff; be_local_closure(class_Matter_Plugin_Bridge_OnOff_web_values, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Bridge_OnOff_web_values, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Plugin_Bridge_OnOff, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h index a87dec5fc..e0aa4d9c7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Profiler; /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_Matter_Profiler; be_local_closure(class_Matter_Profiler_start, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Profiler_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Profiler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(active), @@ -68,7 +67,6 @@ be_local_closure(class_Matter_Profiler_start, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Profiler; be_local_closure(class_Matter_Profiler_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -77,7 +75,7 @@ be_local_closure(class_Matter_Profiler_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Profiler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(active), @@ -134,7 +132,6 @@ be_local_closure(class_Matter_Profiler_init, /* name */ /******************************************************************** ** Solidified function: set_active ********************************************************************/ -extern const bclass be_class_Matter_Profiler; be_local_closure(class_Matter_Profiler_set_active, /* name */ be_nested_proto( 4, /* nstack */ @@ -143,7 +140,7 @@ be_local_closure(class_Matter_Profiler_set_active, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Profiler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(active), @@ -165,7 +162,6 @@ be_local_closure(class_Matter_Profiler_set_active, /* name */ /******************************************************************** ** Solidified function: log ********************************************************************/ -extern const bclass be_class_Matter_Profiler; be_local_closure(class_Matter_Profiler_log, /* name */ be_nested_proto( 7, /* nstack */ @@ -174,7 +170,7 @@ be_local_closure(class_Matter_Profiler_log, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Profiler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(active), @@ -228,7 +224,6 @@ be_local_closure(class_Matter_Profiler_log, /* name */ /******************************************************************** ** Solidified function: dump ********************************************************************/ -extern const bclass be_class_Matter_Profiler; be_local_closure(class_Matter_Profiler_dump, /* name */ be_nested_proto( 12, /* nstack */ @@ -237,7 +232,7 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Profiler, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(active), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index a3546184f..c3eef9e5a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Session; /******************************************************************** ** Solidified function: get_device_id ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_device_id, /* name */ be_nested_proto( 2, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Session_get_device_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -43,7 +42,6 @@ be_local_closure(class_Matter_Session_get_device_id, /* name */ /******************************************************************** ** Solidified function: before_remove ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_before_remove, /* name */ be_nested_proto( 5, /* nstack */ @@ -52,7 +50,7 @@ be_local_closure(class_Matter_Session_before_remove, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(log), @@ -80,7 +78,6 @@ be_local_closure(class_Matter_Session_before_remove, /* name */ /******************************************************************** ** Solidified function: set_mode_CASE ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_set_mode_CASE, /* name */ be_nested_proto( 4, /* nstack */ @@ -89,7 +86,7 @@ be_local_closure(class_Matter_Session_set_mode_CASE, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(set_mode), @@ -111,7 +108,6 @@ be_local_closure(class_Matter_Session_set_mode_CASE, /* name */ /******************************************************************** ** Solidified function: is_CASE ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_is_CASE, /* name */ be_nested_proto( 3, /* nstack */ @@ -120,7 +116,7 @@ be_local_closure(class_Matter_Session_is_CASE, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(mode), @@ -142,7 +138,6 @@ be_local_closure(class_Matter_Session_is_CASE, /* name */ /******************************************************************** ** Solidified function: persist_to_fabric ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_persist_to_fabric, /* name */ be_nested_proto( 4, /* nstack */ @@ -151,7 +146,7 @@ be_local_closure(class_Matter_Session_persist_to_fabric, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -174,7 +169,6 @@ be_local_closure(class_Matter_Session_persist_to_fabric, /* name */ /******************************************************************** ** Solidified function: get_noc ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_noc, /* name */ be_nested_proto( 2, /* nstack */ @@ -183,7 +177,7 @@ be_local_closure(class_Matter_Session_get_noc, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -204,7 +198,6 @@ be_local_closure(class_Matter_Session_get_noc, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_init, /* name */ be_nested_proto( 10, /* nstack */ @@ -213,7 +206,7 @@ be_local_closure(class_Matter_Session_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -293,7 +286,6 @@ be_local_closure(class_Matter_Session_init, /* name */ /******************************************************************** ** Solidified function: get_admin_vendor ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_admin_vendor, /* name */ be_nested_proto( 2, /* nstack */ @@ -302,7 +294,7 @@ be_local_closure(class_Matter_Session_get_admin_vendor, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -327,7 +319,6 @@ be_local_closure(class_Matter_Session_get_admin_vendor, /* name */ /******************************************************************** ** Solidified function: get_i2r ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_i2r, /* name */ be_nested_proto( 2, /* nstack */ @@ -336,7 +327,7 @@ be_local_closure(class_Matter_Session_get_i2r, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(i2rkey), @@ -355,7 +346,6 @@ be_local_closure(class_Matter_Session_get_i2r, /* name */ /******************************************************************** ** Solidified function: counter_rcv_validate ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */ be_nested_proto( 7, /* nstack */ @@ -364,7 +354,7 @@ be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_rcv_impl), @@ -395,7 +385,6 @@ be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */ /******************************************************************** ** Solidified function: get_ca ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_ca, /* name */ be_nested_proto( 2, /* nstack */ @@ -404,7 +393,7 @@ be_local_closure(class_Matter_Session_get_ca, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -425,7 +414,6 @@ be_local_closure(class_Matter_Session_get_ca, /* name */ /******************************************************************** ** Solidified function: get_fabric_index ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_fabric_index, /* name */ be_nested_proto( 2, /* nstack */ @@ -434,7 +422,7 @@ be_local_closure(class_Matter_Session_get_fabric_index, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -459,7 +447,6 @@ be_local_closure(class_Matter_Session_get_fabric_index, /* name */ /******************************************************************** ** Solidified function: get_r2i ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_r2i, /* name */ be_nested_proto( 2, /* nstack */ @@ -468,7 +455,7 @@ be_local_closure(class_Matter_Session_get_r2i, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(r2ikey), @@ -487,7 +474,6 @@ be_local_closure(class_Matter_Session_get_r2i, /* name */ /******************************************************************** ** Solidified function: counter_snd_next ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_counter_snd_next, /* name */ be_nested_proto( 6, /* nstack */ @@ -496,7 +482,7 @@ be_local_closure(class_Matter_Session_counter_snd_next, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_snd_impl), @@ -540,7 +526,6 @@ be_local_closure(class_Matter_Session_counter_snd_next, /* name */ /******************************************************************** ** Solidified function: get_temp_ca_pub ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */ be_nested_proto( 6, /* nstack */ @@ -549,7 +534,7 @@ be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), @@ -582,7 +567,6 @@ be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */ /******************************************************************** ** Solidified function: get_temp_ca ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_temp_ca, /* name */ be_nested_proto( 2, /* nstack */ @@ -591,7 +575,7 @@ be_local_closure(class_Matter_Session_get_temp_ca, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), @@ -610,7 +594,6 @@ be_local_closure(class_Matter_Session_get_temp_ca, /* name */ /******************************************************************** ** Solidified function: get_fabric_id ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_fabric_id, /* name */ be_nested_proto( 2, /* nstack */ @@ -619,7 +602,7 @@ be_local_closure(class_Matter_Session_get_fabric_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -640,7 +623,6 @@ be_local_closure(class_Matter_Session_get_fabric_id, /* name */ /******************************************************************** ** Solidified function: set_mode_PASE ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_set_mode_PASE, /* name */ be_nested_proto( 4, /* nstack */ @@ -649,7 +631,7 @@ be_local_closure(class_Matter_Session_set_mode_PASE, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(set_mode), @@ -671,7 +653,6 @@ be_local_closure(class_Matter_Session_set_mode_PASE, /* name */ /******************************************************************** ** Solidified function: get_fabric_label ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_fabric_label, /* name */ be_nested_proto( 2, /* nstack */ @@ -680,7 +661,7 @@ be_local_closure(class_Matter_Session_get_fabric_label, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -705,7 +686,6 @@ be_local_closure(class_Matter_Session_get_fabric_label, /* name */ /******************************************************************** ** Solidified function: update ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_update, /* name */ be_nested_proto( 3, /* nstack */ @@ -714,7 +694,7 @@ be_local_closure(class_Matter_Session_update, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(last_used), @@ -738,7 +718,6 @@ be_local_closure(class_Matter_Session_update, /* name */ /******************************************************************** ** Solidified function: get_icac ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_icac, /* name */ be_nested_proto( 2, /* nstack */ @@ -747,7 +726,7 @@ be_local_closure(class_Matter_Session_get_icac, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -768,7 +747,6 @@ be_local_closure(class_Matter_Session_get_icac, /* name */ /******************************************************************** ** Solidified function: is_PASE ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_is_PASE, /* name */ be_nested_proto( 3, /* nstack */ @@ -777,7 +755,7 @@ be_local_closure(class_Matter_Session_is_PASE, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(mode), @@ -799,7 +777,6 @@ be_local_closure(class_Matter_Session_is_PASE, /* name */ /******************************************************************** ** Solidified function: set_fabric_label ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_set_fabric_label, /* name */ be_nested_proto( 4, /* nstack */ @@ -808,7 +785,7 @@ be_local_closure(class_Matter_Session_set_fabric_label, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -835,7 +812,6 @@ be_local_closure(class_Matter_Session_set_fabric_label, /* name */ /******************************************************************** ** Solidified function: get_node_id ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_node_id, /* name */ be_nested_proto( 2, /* nstack */ @@ -844,7 +820,7 @@ be_local_closure(class_Matter_Session_get_node_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -869,7 +845,6 @@ be_local_closure(class_Matter_Session_get_node_id, /* name */ /******************************************************************** ** Solidified function: get_ca_pub ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_ca_pub, /* name */ be_nested_proto( 3, /* nstack */ @@ -878,7 +853,7 @@ be_local_closure(class_Matter_Session_get_ca_pub, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -900,7 +875,6 @@ be_local_closure(class_Matter_Session_get_ca_pub, /* name */ /******************************************************************** ** Solidified function: get_pk ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_pk, /* name */ be_nested_proto( 5, /* nstack */ @@ -909,7 +883,7 @@ be_local_closure(class_Matter_Session_get_pk, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -947,7 +921,6 @@ be_local_closure(class_Matter_Session_get_pk, /* name */ /******************************************************************** ** Solidified function: tojson ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_tojson, /* name */ be_nested_proto( 16, /* nstack */ @@ -956,7 +929,7 @@ be_local_closure(class_Matter_Session_tojson, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[22]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -1089,7 +1062,6 @@ be_local_closure(class_Matter_Session_tojson, /* name */ /******************************************************************** ** Solidified function: close ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_close, /* name */ be_nested_proto( 8, /* nstack */ @@ -1098,7 +1070,7 @@ be_local_closure(class_Matter_Session_close, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(local_session_id), @@ -1196,7 +1168,6 @@ be_local_closure(class_Matter_Session_close, /* name */ /******************************************************************** ** Solidified function: get_ac ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_ac, /* name */ be_nested_proto( 2, /* nstack */ @@ -1205,7 +1176,7 @@ be_local_closure(class_Matter_Session_get_ac, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(attestation_challenge), @@ -1224,7 +1195,6 @@ be_local_closure(class_Matter_Session_get_ac, /* name */ /******************************************************************** ** Solidified function: get_fabric ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_fabric, /* name */ be_nested_proto( 2, /* nstack */ @@ -1233,7 +1203,7 @@ be_local_closure(class_Matter_Session_get_fabric, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -1252,7 +1222,6 @@ be_local_closure(class_Matter_Session_get_fabric, /* name */ /******************************************************************** ** Solidified function: get_i2r_privacy ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ be_nested_proto( 9, /* nstack */ @@ -1261,7 +1230,7 @@ be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(_i2r_privacy), @@ -1306,7 +1275,6 @@ be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ /******************************************************************** ** Solidified function: fromjson ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_fromjson, /* name */ be_nested_proto( 17, /* nstack */ @@ -1315,7 +1283,7 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Session), @@ -1423,7 +1391,6 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ /******************************************************************** ** Solidified function: save ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_save, /* name */ be_nested_proto( 3, /* nstack */ @@ -1432,7 +1399,7 @@ be_local_closure(class_Matter_Session_save, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_store), @@ -1454,7 +1421,6 @@ be_local_closure(class_Matter_Session_save, /* name */ /******************************************************************** ** Solidified function: hydrate_post ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_hydrate_post, /* name */ be_nested_proto( 4, /* nstack */ @@ -1463,7 +1429,7 @@ be_local_closure(class_Matter_Session_hydrate_post, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(_counter_snd_impl), @@ -1502,7 +1468,6 @@ be_local_closure(class_Matter_Session_hydrate_post, /* name */ /******************************************************************** ** Solidified function: get_admin_subject ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_admin_subject, /* name */ be_nested_proto( 2, /* nstack */ @@ -1511,7 +1476,7 @@ be_local_closure(class_Matter_Session_get_admin_subject, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -1536,7 +1501,6 @@ be_local_closure(class_Matter_Session_get_admin_subject, /* name */ /******************************************************************** ** Solidified function: get_ipk_epoch_key ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ @@ -1545,7 +1509,7 @@ be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -1566,7 +1530,6 @@ be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ /******************************************************************** ** Solidified function: get_fabric_compressed ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ be_nested_proto( 2, /* nstack */ @@ -1575,7 +1538,7 @@ be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), @@ -1600,7 +1563,6 @@ be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ /******************************************************************** ** Solidified function: get_mode ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_mode, /* name */ be_nested_proto( 2, /* nstack */ @@ -1609,7 +1571,7 @@ be_local_closure(class_Matter_Session_get_mode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(mode), @@ -1628,7 +1590,6 @@ be_local_closure(class_Matter_Session_get_mode, /* name */ /******************************************************************** ** Solidified function: set_temp_ca ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_set_temp_ca, /* name */ be_nested_proto( 2, /* nstack */ @@ -1637,7 +1598,7 @@ be_local_closure(class_Matter_Session_set_temp_ca, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), @@ -1656,7 +1617,6 @@ be_local_closure(class_Matter_Session_set_temp_ca, /* name */ /******************************************************************** ** Solidified function: set_mode ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_set_mode, /* name */ be_nested_proto( 2, /* nstack */ @@ -1665,7 +1625,7 @@ be_local_closure(class_Matter_Session_set_mode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(mode), @@ -1684,7 +1644,6 @@ be_local_closure(class_Matter_Session_set_mode, /* name */ /******************************************************************** ** Solidified function: set_keys ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_set_keys, /* name */ be_nested_proto( 6, /* nstack */ @@ -1693,7 +1652,7 @@ be_local_closure(class_Matter_Session_set_keys, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(i2rkey), @@ -1721,7 +1680,6 @@ be_local_closure(class_Matter_Session_set_keys, /* name */ /******************************************************************** ** Solidified function: gen_CSR ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_gen_CSR, /* name */ be_nested_proto( 15, /* nstack */ @@ -1730,7 +1688,7 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(get_pk), @@ -1831,7 +1789,6 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ /******************************************************************** ** Solidified function: get_ipk_group_key ********************************************************************/ -extern const bclass be_class_Matter_Session; be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */ be_nested_proto( 3, /* nstack */ @@ -1840,7 +1797,7 @@ be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_fabric), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h index 52966ff73..8cbbb0238 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Session_Store; /******************************************************************** ** Solidified function: remove_session ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_remove_session, /* name */ be_nested_proto( 7, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Session_Store_remove_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -55,7 +54,6 @@ be_local_closure(class_Matter_Session_Store_remove_session, /* name */ /******************************************************************** ** Solidified function: gen_local_session_id ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_gen_local_session_id, /* name */ be_nested_proto( 6, /* nstack */ @@ -64,7 +62,7 @@ be_local_closure(class_Matter_Session_Store_gen_local_session_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -105,7 +103,6 @@ be_local_closure(class_Matter_Session_Store_gen_local_session_id, /* name */ /******************************************************************** ** Solidified function: load_fabrics ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ be_nested_proto( 16, /* nstack */ @@ -114,7 +111,7 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -272,7 +269,6 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ /******************************************************************** ** Solidified function: find_children_fabrics ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */ be_nested_proto( 6, /* nstack */ @@ -281,7 +277,7 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 7, /* nstack */ 1, /* argc */ @@ -293,7 +289,7 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */ be_local_const_upval(1, 3), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(active_fabrics), @@ -338,7 +334,6 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */ 0x80000000, // 001D RET 0 }) ), - &be_class_Matter_Session_Store, }), 0, /* has constants */ NULL, /* no const */ @@ -369,7 +364,6 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */ /******************************************************************** ** Solidified function: sessions_active ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_sessions_active, /* name */ be_nested_proto( 7, /* nstack */ @@ -378,7 +372,7 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_int(0), @@ -422,7 +416,6 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */ /******************************************************************** ** Solidified function: find_fabric_by_index ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */ be_nested_proto( 6, /* nstack */ @@ -431,7 +424,7 @@ be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(active_fabrics), @@ -469,7 +462,6 @@ be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */ /******************************************************************** ** Solidified function: active_fabrics ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */ be_nested_proto( 3, /* nstack */ @@ -478,7 +470,7 @@ be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(remove_expired), @@ -503,7 +495,6 @@ be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */ /******************************************************************** ** Solidified function: create_fabric ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_create_fabric, /* name */ be_nested_proto( 4, /* nstack */ @@ -512,7 +503,7 @@ be_local_closure(class_Matter_Session_Store_create_fabric, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -535,7 +526,6 @@ be_local_closure(class_Matter_Session_Store_create_fabric, /* name */ /******************************************************************** ** Solidified function: count_active_fabrics ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */ be_nested_proto( 3, /* nstack */ @@ -544,7 +534,7 @@ be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(remove_expired), @@ -577,7 +567,6 @@ be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */ /******************************************************************** ** Solidified function: find_session_by_resumption_id ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* name */ be_nested_proto( 11, /* nstack */ @@ -586,7 +575,7 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_const_int(0), @@ -647,7 +636,6 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* /******************************************************************** ** Solidified function: add_session ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_add_session, /* name */ be_nested_proto( 6, /* nstack */ @@ -656,7 +644,7 @@ be_local_closure(class_Matter_Session_Store_add_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(set_expire_in_seconds), @@ -686,7 +674,6 @@ be_local_closure(class_Matter_Session_Store_add_session, /* name */ /******************************************************************** ** Solidified function: find_session_source_id_unsecure ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, /* name */ be_nested_proto( 9, /* nstack */ @@ -695,7 +682,7 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, / 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(get_session_by_source_node_id), @@ -744,7 +731,6 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, / /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_every_second, /* name */ be_nested_proto( 3, /* nstack */ @@ -753,7 +739,7 @@ be_local_closure(class_Matter_Session_Store_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(remove_expired), @@ -773,7 +759,6 @@ be_local_closure(class_Matter_Session_Store_every_second, /* name */ /******************************************************************** ** Solidified function: get_session_by_local_session_id ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, /* name */ be_nested_proto( 8, /* nstack */ @@ -782,7 +767,7 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, / 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -825,7 +810,6 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, / /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -834,7 +818,7 @@ be_local_closure(class_Matter_Session_Store_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -865,7 +849,6 @@ be_local_closure(class_Matter_Session_Store_init, /* name */ /******************************************************************** ** Solidified function: remove_expired ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_remove_expired, /* name */ be_nested_proto( 3, /* nstack */ @@ -874,7 +857,7 @@ be_local_closure(class_Matter_Session_Store_remove_expired, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -900,7 +883,6 @@ be_local_closure(class_Matter_Session_Store_remove_expired, /* name */ /******************************************************************** ** Solidified function: remove_redundant_fabric ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name */ be_nested_proto( 7, /* nstack */ @@ -909,7 +891,7 @@ be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_int(0), @@ -957,7 +939,6 @@ be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name * /******************************************************************** ** Solidified function: add_fabric ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ be_nested_proto( 5, /* nstack */ @@ -966,7 +947,7 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -1012,7 +993,6 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ /******************************************************************** ** Solidified function: get_session_by_source_node_id ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* name */ be_nested_proto( 8, /* nstack */ @@ -1021,7 +1001,7 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -1064,7 +1044,6 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* /******************************************************************** ** Solidified function: next_fabric_idx ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ be_nested_proto( 7, /* nstack */ @@ -1073,7 +1052,7 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(remove_expired), @@ -1120,7 +1099,6 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ /******************************************************************** ** Solidified function: save_fabrics ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ be_nested_proto( 11, /* nstack */ @@ -1129,7 +1107,7 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[28]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -1271,7 +1249,6 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ /******************************************************************** ** Solidified function: create_session ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_create_session, /* name */ be_nested_proto( 9, /* nstack */ @@ -1280,7 +1257,7 @@ be_local_closure(class_Matter_Session_Store_create_session, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(get_session_by_local_session_id), @@ -1323,7 +1300,6 @@ be_local_closure(class_Matter_Session_Store_create_session, /* name */ /******************************************************************** ** Solidified function: remove_fabric ********************************************************************/ -extern const bclass be_class_Matter_Session_Store; be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */ be_nested_proto( 7, /* nstack */ @@ -1332,7 +1308,7 @@ be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Session_Store, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h index b2d5f55e7..f13442853 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_TCP_async; /******************************************************************** ** Solidified function: read ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_read, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_TCP_async_read, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tcp_connected), @@ -45,7 +44,6 @@ be_local_closure(class_Matter_TCP_async_read, /* name */ /******************************************************************** ** Solidified function: begin ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_begin, /* name */ be_nested_proto( 6, /* nstack */ @@ -54,7 +52,7 @@ be_local_closure(class_Matter_TCP_async_begin, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -155,7 +153,6 @@ be_local_closure(class_Matter_TCP_async_begin, /* name */ /******************************************************************** ** Solidified function: readbytes ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_readbytes, /* name */ be_nested_proto( 3, /* nstack */ @@ -164,7 +161,7 @@ be_local_closure(class_Matter_TCP_async_readbytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tcp_connected), @@ -191,7 +188,6 @@ be_local_closure(class_Matter_TCP_async_readbytes, /* name */ /******************************************************************** ** Solidified function: event_closed ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_event_closed, /* name */ be_nested_proto( 1, /* nstack */ @@ -200,7 +196,7 @@ be_local_closure(class_Matter_TCP_async_event_closed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_closed), @@ -216,7 +212,6 @@ be_local_closure(class_Matter_TCP_async_event_closed, /* name */ /******************************************************************** ** Solidified function: available ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_available, /* name */ be_nested_proto( 3, /* nstack */ @@ -225,7 +220,7 @@ be_local_closure(class_Matter_TCP_async_available, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tcp_connected), @@ -252,7 +247,6 @@ be_local_closure(class_Matter_TCP_async_available, /* name */ /******************************************************************** ** Solidified function: event_listening ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_event_listening, /* name */ be_nested_proto( 1, /* nstack */ @@ -261,7 +255,7 @@ be_local_closure(class_Matter_TCP_async_event_listening, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_listening), @@ -277,7 +271,6 @@ be_local_closure(class_Matter_TCP_async_event_listening, /* name */ /******************************************************************** ** Solidified function: get_timeout ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_get_timeout, /* name */ be_nested_proto( 2, /* nstack */ @@ -286,7 +279,7 @@ be_local_closure(class_Matter_TCP_async_get_timeout, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(timeout), @@ -305,7 +298,6 @@ be_local_closure(class_Matter_TCP_async_get_timeout, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -314,7 +306,7 @@ be_local_closure(class_Matter_TCP_async_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -324,7 +316,7 @@ be_local_closure(class_Matter_TCP_async_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(loop), @@ -338,7 +330,6 @@ be_local_closure(class_Matter_TCP_async_init, /* name */ 0x80040000, // 0003 RET 1 R0 }) ), - &be_class_Matter_TCP_async, }), 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ @@ -387,7 +378,6 @@ be_local_closure(class_Matter_TCP_async_init, /* name */ /******************************************************************** ** Solidified function: every_50ms ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ @@ -396,7 +386,7 @@ be_local_closure(class_Matter_TCP_async_every_50ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(loop), @@ -416,7 +406,6 @@ be_local_closure(class_Matter_TCP_async_every_50ms, /* name */ /******************************************************************** ** Solidified function: event_timeout ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_event_timeout, /* name */ be_nested_proto( 1, /* nstack */ @@ -425,7 +414,7 @@ be_local_closure(class_Matter_TCP_async_event_timeout, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_timeout), @@ -441,7 +430,6 @@ be_local_closure(class_Matter_TCP_async_event_timeout, /* name */ /******************************************************************** ** Solidified function: event_available ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_event_available, /* name */ be_nested_proto( 1, /* nstack */ @@ -450,7 +438,7 @@ be_local_closure(class_Matter_TCP_async_event_available, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_available), @@ -466,7 +454,6 @@ be_local_closure(class_Matter_TCP_async_event_available, /* name */ /******************************************************************** ** Solidified function: write ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_write, /* name */ be_nested_proto( 5, /* nstack */ @@ -475,7 +462,7 @@ be_local_closure(class_Matter_TCP_async_write, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tcp_connected), @@ -503,7 +490,6 @@ be_local_closure(class_Matter_TCP_async_write, /* name */ /******************************************************************** ** Solidified function: event_established ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_event_established, /* name */ be_nested_proto( 1, /* nstack */ @@ -512,7 +498,7 @@ be_local_closure(class_Matter_TCP_async_event_established, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_established), @@ -528,7 +514,6 @@ be_local_closure(class_Matter_TCP_async_event_established, /* name */ /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_reset, /* name */ be_nested_proto( 3, /* nstack */ @@ -537,7 +522,7 @@ be_local_closure(class_Matter_TCP_async_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tcp), @@ -562,7 +547,6 @@ be_local_closure(class_Matter_TCP_async_reset, /* name */ /******************************************************************** ** Solidified function: loop ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_loop, /* name */ be_nested_proto( 4, /* nstack */ @@ -571,7 +555,7 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(tcp_connected), @@ -694,7 +678,6 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */ /******************************************************************** ** Solidified function: listening ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_listening, /* name */ be_nested_proto( 3, /* nstack */ @@ -703,7 +686,7 @@ be_local_closure(class_Matter_TCP_async_listening, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tcp_connected), @@ -730,7 +713,6 @@ be_local_closure(class_Matter_TCP_async_listening, /* name */ /******************************************************************** ** Solidified function: set_timeout ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_set_timeout, /* name */ be_nested_proto( 3, /* nstack */ @@ -739,7 +721,7 @@ be_local_closure(class_Matter_TCP_async_set_timeout, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(TIMEOUT), @@ -763,7 +745,6 @@ be_local_closure(class_Matter_TCP_async_set_timeout, /* name */ /******************************************************************** ** Solidified function: event_dnsfailed ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_event_dnsfailed, /* name */ be_nested_proto( 1, /* nstack */ @@ -772,7 +753,7 @@ be_local_closure(class_Matter_TCP_async_event_dnsfailed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_dnsfailed), @@ -788,7 +769,6 @@ be_local_closure(class_Matter_TCP_async_event_dnsfailed, /* name */ /******************************************************************** ** Solidified function: close ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_close, /* name */ be_nested_proto( 4, /* nstack */ @@ -797,7 +777,7 @@ be_local_closure(class_Matter_TCP_async_close, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(tcp), @@ -844,7 +824,6 @@ be_local_closure(class_Matter_TCP_async_close, /* name */ /******************************************************************** ** Solidified function: event_refused ********************************************************************/ -extern const bclass be_class_Matter_TCP_async; be_local_closure(class_Matter_TCP_async_event_refused, /* name */ be_nested_proto( 1, /* nstack */ @@ -853,7 +832,7 @@ be_local_closure(class_Matter_TCP_async_event_refused, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TCP_async, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(event_refused), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index b5ee74e2a..b8cc39780 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_TLV_item; /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_reset, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_TLV_item_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(parent), @@ -52,7 +51,6 @@ be_local_closure(class_Matter_TLV_item_reset, /* name */ /******************************************************************** ** Solidified function: set_or_nil ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_set_or_nil, /* name */ be_nested_proto( 5, /* nstack */ @@ -61,7 +59,7 @@ be_local_closure(class_Matter_TLV_item_set_or_nil, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -96,7 +94,6 @@ be_local_closure(class_Matter_TLV_item_set_or_nil, /* name */ /******************************************************************** ** Solidified function: encode_len ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_encode_len, /* name */ be_nested_proto( 5, /* nstack */ @@ -105,7 +102,7 @@ be_local_closure(class_Matter_TLV_item_encode_len, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[32]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), @@ -411,7 +408,6 @@ be_local_closure(class_Matter_TLV_item_encode_len, /* name */ /******************************************************************** ** Solidified function: set ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_set, /* name */ be_nested_proto( 5, /* nstack */ @@ -420,7 +416,7 @@ be_local_closure(class_Matter_TLV_item_set, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(reset), @@ -451,7 +447,6 @@ be_local_closure(class_Matter_TLV_item_set, /* name */ /******************************************************************** ** Solidified function: to_TLV ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_to_TLV, /* name */ be_nested_proto( 1, /* nstack */ @@ -460,7 +455,7 @@ be_local_closure(class_Matter_TLV_item_to_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(to_TLV), @@ -476,7 +471,6 @@ be_local_closure(class_Matter_TLV_item_to_TLV, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_tostring, /* name */ be_nested_proto( 7, /* nstack */ @@ -485,7 +479,7 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[34]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -702,7 +696,6 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ /******************************************************************** ** Solidified function: to_str_val ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ be_nested_proto( 4, /* nstack */ @@ -711,7 +704,7 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(val), @@ -841,7 +834,6 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ /******************************************************************** ** Solidified function: set_fulltag ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */ be_nested_proto( 6, /* nstack */ @@ -850,7 +842,7 @@ be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tag_vendor), @@ -885,7 +877,6 @@ be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */ /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_parse, /* name */ be_nested_proto( 10, /* nstack */ @@ -894,7 +885,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[24]) { /* constants */ /* K0 */ be_nested_str_weak(typ), @@ -1035,7 +1026,6 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ /******************************************************************** ** Solidified function: set_commonprofile ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */ be_nested_proto( 6, /* nstack */ @@ -1044,7 +1034,7 @@ be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set_fulltag), @@ -1067,7 +1057,6 @@ be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */ /******************************************************************** ** Solidified function: _encode_tag ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ be_nested_proto( 9, /* nstack */ @@ -1076,7 +1065,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(tag_number), @@ -1234,7 +1223,6 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ /******************************************************************** ** Solidified function: sort ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_sort, /* name */ be_nested_proto( 9, /* nstack */ @@ -1243,7 +1231,7 @@ be_local_closure(class_Matter_TLV_item_sort, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_TLV_item), @@ -1297,7 +1285,6 @@ be_local_closure(class_Matter_TLV_item_sort, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -1306,7 +1293,7 @@ be_local_closure(class_Matter_TLV_item_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(parent), @@ -1325,7 +1312,6 @@ be_local_closure(class_Matter_TLV_item_init, /* name */ /******************************************************************** ** Solidified function: _cmp_gt ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ be_nested_proto( 4, /* nstack */ @@ -1334,7 +1320,7 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(tag_vendor), @@ -1428,7 +1414,6 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ /******************************************************************** ** Solidified function: tlv2raw ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ be_nested_proto( 9, /* nstack */ @@ -1437,7 +1422,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[44]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), @@ -1901,7 +1886,6 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ /******************************************************************** ** Solidified function: _encode_tag_len ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ be_nested_proto( 6, /* nstack */ @@ -1910,7 +1894,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(tag_number), @@ -1988,7 +1972,6 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ /******************************************************************** ** Solidified function: set_contextspecific ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */ be_nested_proto( 4, /* nstack */ @@ -1997,7 +1980,7 @@ be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(set_fulltag), @@ -2022,7 +2005,6 @@ be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */ /******************************************************************** ** Solidified function: set_parent ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_set_parent, /* name */ be_nested_proto( 2, /* nstack */ @@ -2031,7 +2013,7 @@ be_local_closure(class_Matter_TLV_item_set_parent, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(parent), @@ -2050,7 +2032,6 @@ be_local_closure(class_Matter_TLV_item_set_parent, /* name */ /******************************************************************** ** Solidified function: create_TLV ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ be_nested_proto( 4, /* nstack */ @@ -2059,7 +2040,7 @@ be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_TLV_item), @@ -2091,7 +2072,6 @@ be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ /******************************************************************** ** Solidified function: set_anonymoustag ********************************************************************/ -extern const bclass be_class_Matter_TLV_item; be_local_closure(class_Matter_TLV_item_set_anonymoustag, /* name */ be_nested_proto( 3, /* nstack */ @@ -2100,7 +2080,7 @@ be_local_closure(class_Matter_TLV_item_set_anonymoustag, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_item, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set_fulltag), @@ -2166,7 +2146,6 @@ extern const bclass be_class_Matter_TLV_list; /******************************************************************** ** Solidified function: findsubval ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_findsubval, /* name */ be_nested_proto( 6, /* nstack */ @@ -2175,7 +2154,7 @@ be_local_closure(class_Matter_TLV_list_findsubval, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(findsub), @@ -2202,7 +2181,6 @@ be_local_closure(class_Matter_TLV_list_findsubval, /* name */ /******************************************************************** ** Solidified function: tlv2raw ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */ be_nested_proto( 8, /* nstack */ @@ -2211,7 +2189,7 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(_encode_tag), @@ -2282,7 +2260,6 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */ /******************************************************************** ** Solidified function: to_str_val ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_to_str_val, /* name */ be_nested_proto( 4, /* nstack */ @@ -2291,7 +2268,7 @@ be_local_closure(class_Matter_TLV_list_to_str_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(tostring), @@ -2312,7 +2289,6 @@ be_local_closure(class_Matter_TLV_list_to_str_val, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_tostring, /* name */ be_nested_proto( 8, /* nstack */ @@ -2321,7 +2297,7 @@ be_local_closure(class_Matter_TLV_list_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tostring_inner), @@ -2347,7 +2323,6 @@ be_local_closure(class_Matter_TLV_list_tostring, /* name */ /******************************************************************** ** Solidified function: size ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_size, /* name */ be_nested_proto( 3, /* nstack */ @@ -2356,7 +2331,7 @@ be_local_closure(class_Matter_TLV_list_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(val), @@ -2377,7 +2352,6 @@ be_local_closure(class_Matter_TLV_list_size, /* name */ /******************************************************************** ** Solidified function: setitem ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_setitem, /* name */ be_nested_proto( 4, /* nstack */ @@ -2386,7 +2360,7 @@ be_local_closure(class_Matter_TLV_list_setitem, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(val), @@ -2406,7 +2380,6 @@ be_local_closure(class_Matter_TLV_list_setitem, /* name */ /******************************************************************** ** Solidified function: add_struct ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_add_struct, /* name */ be_nested_proto( 6, /* nstack */ @@ -2415,7 +2388,7 @@ be_local_closure(class_Matter_TLV_list_add_struct, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), @@ -2446,7 +2419,6 @@ be_local_closure(class_Matter_TLV_list_add_struct, /* name */ /******************************************************************** ** Solidified function: add_list ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_add_list, /* name */ be_nested_proto( 6, /* nstack */ @@ -2455,7 +2427,7 @@ be_local_closure(class_Matter_TLV_list_add_list, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), @@ -2486,7 +2458,6 @@ be_local_closure(class_Matter_TLV_list_add_list, /* name */ /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_parse, /* name */ be_nested_proto( 8, /* nstack */ @@ -2495,7 +2466,7 @@ be_local_closure(class_Matter_TLV_list_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), @@ -2538,7 +2509,6 @@ be_local_closure(class_Matter_TLV_list_parse, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -2547,7 +2517,7 @@ be_local_closure(class_Matter_TLV_list_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -2581,7 +2551,6 @@ be_local_closure(class_Matter_TLV_list_init, /* name */ /******************************************************************** ** Solidified function: item ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_item, /* name */ be_nested_proto( 3, /* nstack */ @@ -2590,7 +2559,7 @@ be_local_closure(class_Matter_TLV_list_item, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(val), @@ -2610,7 +2579,6 @@ be_local_closure(class_Matter_TLV_list_item, /* name */ /******************************************************************** ** Solidified function: getsubval ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_getsubval, /* name */ be_nested_proto( 5, /* nstack */ @@ -2619,7 +2587,7 @@ be_local_closure(class_Matter_TLV_list_getsubval, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(getsub), @@ -2642,7 +2610,6 @@ be_local_closure(class_Matter_TLV_list_getsubval, /* name */ /******************************************************************** ** Solidified function: getsub ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_getsub, /* name */ be_nested_proto( 5, /* nstack */ @@ -2651,7 +2618,7 @@ be_local_closure(class_Matter_TLV_list_getsub, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(findsub), @@ -2678,7 +2645,6 @@ be_local_closure(class_Matter_TLV_list_getsub, /* name */ /******************************************************************** ** Solidified function: add_obj ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_add_obj, /* name */ be_nested_proto( 7, /* nstack */ @@ -2687,7 +2653,7 @@ be_local_closure(class_Matter_TLV_list_add_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(val), @@ -2728,7 +2694,6 @@ be_local_closure(class_Matter_TLV_list_add_obj, /* name */ /******************************************************************** ** Solidified function: add_TLV ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_add_TLV, /* name */ be_nested_proto( 8, /* nstack */ @@ -2737,7 +2702,7 @@ be_local_closure(class_Matter_TLV_list_add_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -2781,7 +2746,6 @@ be_local_closure(class_Matter_TLV_list_add_TLV, /* name */ /******************************************************************** ** Solidified function: add_array ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_add_array, /* name */ be_nested_proto( 6, /* nstack */ @@ -2790,7 +2754,7 @@ be_local_closure(class_Matter_TLV_list_add_array, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), @@ -2821,7 +2785,6 @@ be_local_closure(class_Matter_TLV_list_add_array, /* name */ /******************************************************************** ** Solidified function: findsub ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_findsub, /* name */ be_nested_proto( 6, /* nstack */ @@ -2830,7 +2793,7 @@ be_local_closure(class_Matter_TLV_list_findsub, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(val), @@ -2865,7 +2828,6 @@ be_local_closure(class_Matter_TLV_list_findsub, /* name */ /******************************************************************** ** Solidified function: tostring_inner ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */ be_nested_proto( 10, /* nstack */ @@ -2874,7 +2836,7 @@ be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -2993,7 +2955,6 @@ be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */ /******************************************************************** ** Solidified function: push ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_push, /* name */ be_nested_proto( 5, /* nstack */ @@ -3002,7 +2963,7 @@ be_local_closure(class_Matter_TLV_list_push, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(val), @@ -3025,7 +2986,6 @@ be_local_closure(class_Matter_TLV_list_push, /* name */ /******************************************************************** ** Solidified function: findsubtyp ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */ be_nested_proto( 5, /* nstack */ @@ -3034,7 +2994,7 @@ be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(findsub), @@ -3062,7 +3022,6 @@ be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */ /******************************************************************** ** Solidified function: encode_len ********************************************************************/ -extern const bclass be_class_Matter_TLV_list; be_local_closure(class_Matter_TLV_list_encode_len, /* name */ be_nested_proto( 5, /* nstack */ @@ -3071,7 +3030,7 @@ be_local_closure(class_Matter_TLV_list_encode_len, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_encode_tag_len), @@ -3146,7 +3105,6 @@ extern const bclass be_class_Matter_TLV_struct; /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Matter_TLV_struct; be_local_closure(class_Matter_TLV_struct_tostring, /* name */ be_nested_proto( 8, /* nstack */ @@ -3155,7 +3113,7 @@ be_local_closure(class_Matter_TLV_struct_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_struct, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tostring_inner), @@ -3181,7 +3139,6 @@ be_local_closure(class_Matter_TLV_struct_tostring, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_TLV_struct; be_local_closure(class_Matter_TLV_struct_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -3190,7 +3147,7 @@ be_local_closure(class_Matter_TLV_struct_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_struct, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -3243,7 +3200,6 @@ extern const bclass be_class_Matter_TLV_array; /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Matter_TLV_array; be_local_closure(class_Matter_TLV_array_tostring, /* name */ be_nested_proto( 8, /* nstack */ @@ -3252,7 +3208,7 @@ be_local_closure(class_Matter_TLV_array_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_array, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(tostring_inner), @@ -3278,7 +3234,6 @@ be_local_closure(class_Matter_TLV_array_tostring, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_TLV_array; be_local_closure(class_Matter_TLV_array_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -3287,7 +3242,7 @@ be_local_closure(class_Matter_TLV_array_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_array, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -3321,7 +3276,6 @@ be_local_closure(class_Matter_TLV_array_init, /* name */ /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_TLV_array; be_local_closure(class_Matter_TLV_array_parse, /* name */ be_nested_proto( 8, /* nstack */ @@ -3330,7 +3284,7 @@ be_local_closure(class_Matter_TLV_array_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV_array, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(TLV), @@ -3405,7 +3359,6 @@ extern const bclass be_class_Matter_TLV; /******************************************************************** ** Solidified function: create_TLV ********************************************************************/ -extern const bclass be_class_Matter_TLV; be_local_closure(class_Matter_TLV_create_TLV, /* name */ be_nested_proto( 7, /* nstack */ @@ -3414,7 +3367,7 @@ be_local_closure(class_Matter_TLV_create_TLV, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_TLV), @@ -3440,7 +3393,6 @@ be_local_closure(class_Matter_TLV_create_TLV, /* name */ /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Matter_TLV; be_local_closure(class_Matter_TLV_parse, /* name */ be_nested_proto( 12, /* nstack */ @@ -3449,7 +3401,7 @@ be_local_closure(class_Matter_TLV_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_TLV, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_TLV), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index 5c5fe6e53..ed3604294 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_UDPPacket_sent; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_UDPPacket_sent; be_local_closure(class_Matter_UDPPacket_sent_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_UDPPacket_sent_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPPacket_sent, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(raw), @@ -116,7 +115,6 @@ extern const bclass be_class_Matter_UDPServer; /******************************************************************** ** Solidified function: every_50ms ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ @@ -125,7 +123,7 @@ be_local_closure(class_Matter_UDPServer_every_50ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(loop), @@ -145,7 +143,6 @@ be_local_closure(class_Matter_UDPServer_every_50ms, /* name */ /******************************************************************** ** Solidified function: send_UDP ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_send_UDP, /* name */ be_nested_proto( 6, /* nstack */ @@ -154,7 +151,7 @@ be_local_closure(class_Matter_UDPServer_send_UDP, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -190,7 +187,6 @@ be_local_closure(class_Matter_UDPServer_send_UDP, /* name */ /******************************************************************** ** Solidified function: received_ack ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_received_ack, /* name */ be_nested_proto( 9, /* nstack */ @@ -199,7 +195,7 @@ be_local_closure(class_Matter_UDPServer_received_ack, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(ack_message_counter), @@ -266,7 +262,6 @@ be_local_closure(class_Matter_UDPServer_received_ack, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_start, /* name */ be_nested_proto( 6, /* nstack */ @@ -275,7 +270,7 @@ be_local_closure(class_Matter_UDPServer_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(listening), @@ -324,7 +319,6 @@ be_local_closure(class_Matter_UDPServer_start, /* name */ /******************************************************************** ** Solidified function: send ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_send, /* name */ be_nested_proto( 8, /* nstack */ @@ -333,7 +327,7 @@ be_local_closure(class_Matter_UDPServer_send, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(udp_socket), @@ -407,7 +401,6 @@ be_local_closure(class_Matter_UDPServer_send, /* name */ /******************************************************************** ** Solidified function: stop ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_stop, /* name */ be_nested_proto( 4, /* nstack */ @@ -416,7 +409,7 @@ be_local_closure(class_Matter_UDPServer_stop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(listening), @@ -450,7 +443,6 @@ be_local_closure(class_Matter_UDPServer_stop, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -459,7 +451,7 @@ be_local_closure(class_Matter_UDPServer_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -469,7 +461,7 @@ be_local_closure(class_Matter_UDPServer_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(loop), @@ -483,7 +475,6 @@ be_local_closure(class_Matter_UDPServer_init, /* name */ 0x80000000, // 0003 RET 0 }) ), - &be_class_Matter_UDPServer, }), 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ @@ -527,7 +518,6 @@ be_local_closure(class_Matter_UDPServer_init, /* name */ /******************************************************************** ** Solidified function: _resend_packets ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ be_nested_proto( 10, /* nstack */ @@ -536,7 +526,7 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ /* K0 */ be_const_int(0), @@ -630,7 +620,6 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ /******************************************************************** ** Solidified function: _backoff_time ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ be_nested_proto( 10, /* nstack */ @@ -639,7 +628,7 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 4, /* nstack */ 2, /* argc */ @@ -647,7 +636,7 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_const_int(1), @@ -665,7 +654,6 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ 0x80040400, // 0006 RET 1 R2 }) ), - &be_class_Matter_UDPServer, }), 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ @@ -719,7 +707,6 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ /******************************************************************** ** Solidified function: loop ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_loop, /* name */ be_nested_proto( 11, /* nstack */ @@ -728,7 +715,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -822,7 +809,6 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_UDPServer; be_local_closure(class_Matter_UDPServer_every_second, /* name */ be_nested_proto( 1, /* nstack */ @@ -831,7 +817,7 @@ be_local_closure(class_Matter_UDPServer_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UDPServer, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(every_second), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index 81415b3f9..c31d52978 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_UI; /******************************************************************** ** Solidified function: equal_map ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_equal_map, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_UI_equal_map, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_UI), @@ -91,7 +90,6 @@ be_local_closure(class_Matter_UI_equal_map, /* name */ /******************************************************************** ** Solidified function: page_part_mgr_adv ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_page_part_mgr_adv, /* name */ be_nested_proto( 5, /* nstack */ @@ -100,7 +98,7 @@ be_local_closure(class_Matter_UI_page_part_mgr_adv, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -149,7 +147,6 @@ be_local_closure(class_Matter_UI_page_part_mgr_adv, /* name */ /******************************************************************** ** Solidified function: page_part_mgr ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_page_part_mgr, /* name */ be_nested_proto( 5, /* nstack */ @@ -158,7 +155,7 @@ be_local_closure(class_Matter_UI_page_part_mgr, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -218,7 +215,6 @@ be_local_closure(class_Matter_UI_page_part_mgr, /* name */ /******************************************************************** ** Solidified function: plugin_name ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_plugin_name, /* name */ be_nested_proto( 6, /* nstack */ @@ -227,7 +223,7 @@ be_local_closure(class_Matter_UI_plugin_name, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -254,7 +250,6 @@ be_local_closure(class_Matter_UI_plugin_name, /* name */ /******************************************************************** ** Solidified function: matter_enabled ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_matter_enabled, /* name */ be_nested_proto( 5, /* nstack */ @@ -263,7 +258,7 @@ be_local_closure(class_Matter_UI_matter_enabled, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -291,7 +286,6 @@ be_local_closure(class_Matter_UI_matter_enabled, /* name */ /******************************************************************** ** Solidified function: generate_config_from_status ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_generate_config_from_status, /* name */ be_nested_proto( 13, /* nstack */ @@ -300,7 +294,7 @@ be_local_closure(class_Matter_UI_generate_config_from_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_const_int(0), @@ -429,7 +423,6 @@ be_local_closure(class_Matter_UI_generate_config_from_status, /* name */ /******************************************************************** ** Solidified function: web_sensor ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_web_sensor, /* name */ be_nested_proto( 10, /* nstack */ @@ -438,7 +431,7 @@ be_local_closure(class_Matter_UI_web_sensor, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -520,7 +513,6 @@ be_local_closure(class_Matter_UI_web_sensor, /* name */ /******************************************************************** ** Solidified function: page_part_mgr_add ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_page_part_mgr_add, /* name */ be_nested_proto( 6, /* nstack */ @@ -529,7 +521,7 @@ be_local_closure(class_Matter_UI_page_part_mgr_add, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -583,7 +575,6 @@ be_local_closure(class_Matter_UI_page_part_mgr_add, /* name */ /******************************************************************** ** Solidified function: show_plugins_configuration ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ be_nested_proto( 29, /* nstack */ @@ -592,7 +583,7 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[63]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -1032,7 +1023,6 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */ /******************************************************************** ** Solidified function: show_commissioning_info ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_commissioning_info, /* name */ be_nested_proto( 12, /* nstack */ @@ -1041,7 +1031,7 @@ be_local_closure(class_Matter_UI_show_commissioning_info, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -1132,7 +1122,6 @@ be_local_closure(class_Matter_UI_show_commissioning_info, /* name */ /******************************************************************** ** Solidified function: show_remote_autoconf ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ be_nested_proto( 27, /* nstack */ @@ -1141,7 +1130,7 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[46]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -1432,7 +1421,6 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */ /******************************************************************** ** Solidified function: show_fabric_info ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_fabric_info, /* name */ be_nested_proto( 14, /* nstack */ @@ -1441,7 +1429,7 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[28]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -1585,7 +1573,6 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */ /******************************************************************** ** Solidified function: web_get_arg ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_web_get_arg, /* name */ be_nested_proto( 5, /* nstack */ @@ -1594,7 +1581,7 @@ be_local_closure(class_Matter_UI_web_get_arg, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -1634,7 +1621,6 @@ be_local_closure(class_Matter_UI_web_get_arg, /* name */ /******************************************************************** ** Solidified function: plugin_option ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_plugin_option, /* name */ be_nested_proto( 16, /* nstack */ @@ -1643,7 +1629,7 @@ be_local_closure(class_Matter_UI_plugin_option, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -1732,7 +1718,6 @@ be_local_closure(class_Matter_UI_plugin_option, /* name */ /******************************************************************** ** Solidified function: web_add_config_button ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_web_add_config_button, /* name */ be_nested_proto( 5, /* nstack */ @@ -1741,7 +1726,7 @@ be_local_closure(class_Matter_UI_web_add_config_button, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -1775,7 +1760,6 @@ be_local_closure(class_Matter_UI_web_add_config_button, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -1784,7 +1768,7 @@ be_local_closure(class_Matter_UI_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -1809,7 +1793,6 @@ be_local_closure(class_Matter_UI_init, /* name */ /******************************************************************** ** Solidified function: show_bridge_status ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_bridge_status, /* name */ be_nested_proto( 15, /* nstack */ @@ -1818,7 +1801,7 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(device), @@ -1979,7 +1962,6 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */ /******************************************************************** ** Solidified function: web_add_handler ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_web_add_handler, /* name */ be_nested_proto( 7, /* nstack */ @@ -1988,7 +1970,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 5]) { + ( &(const struct bproto*[ 4]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -1998,7 +1980,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(page_part_mgr), @@ -2021,7 +2003,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(page_part_ctl), @@ -2044,7 +2026,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(page_part_mgr_adv), @@ -2067,7 +2049,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(page_part_mgr_add), @@ -2081,7 +2063,6 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ 0x80040000, // 0003 RET 1 R0 }) ), - &be_class_Matter_UI, }), 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ @@ -2128,7 +2109,6 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */ /******************************************************************** ** Solidified function: show_passcode_form ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_passcode_form, /* name */ be_nested_proto( 8, /* nstack */ @@ -2137,7 +2117,7 @@ be_local_closure(class_Matter_UI_show_passcode_form, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -2208,7 +2188,6 @@ be_local_closure(class_Matter_UI_show_passcode_form, /* name */ /******************************************************************** ** Solidified function: page_part_ctl ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_page_part_ctl, /* name */ be_nested_proto( 23, /* nstack */ @@ -2217,7 +2196,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[101]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -2993,7 +2972,6 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */ /******************************************************************** ** Solidified function: show_qrcode ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_qrcode, /* name */ be_nested_proto( 18, /* nstack */ @@ -3002,7 +2980,7 @@ be_local_closure(class_Matter_UI_show_qrcode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[22]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -3160,7 +3138,6 @@ be_local_closure(class_Matter_UI_show_qrcode, /* name */ /******************************************************************** ** Solidified function: show_enable ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_enable, /* name */ be_nested_proto( 11, /* nstack */ @@ -3169,7 +3146,7 @@ be_local_closure(class_Matter_UI_show_enable, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), @@ -3257,7 +3234,6 @@ be_local_closure(class_Matter_UI_show_enable, /* name */ /******************************************************************** ** Solidified function: show_plugins_hints_js ********************************************************************/ -extern const bclass be_class_Matter_UI; be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */ be_nested_proto( 16, /* nstack */ @@ -3266,7 +3242,7 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_UI, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(webserver), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index ed75f79e2..47e2d4acf 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Device; /******************************************************************** ** Solidified function: start_commissioning_complete ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(get_fabric), @@ -67,7 +66,6 @@ be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */ /******************************************************************** ** Solidified function: k2l_num ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_k2l_num, /* name */ be_nested_proto( 9, /* nstack */ @@ -76,7 +74,7 @@ be_local_closure(class_Matter_Device_k2l_num, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Device), @@ -150,7 +148,6 @@ be_local_closure(class_Matter_Device_k2l_num, /* name */ /******************************************************************** ** Solidified function: remove_fabric ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_remove_fabric, /* name */ be_nested_proto( 5, /* nstack */ @@ -159,7 +156,7 @@ be_local_closure(class_Matter_Device_remove_fabric, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(log), @@ -222,7 +219,6 @@ be_local_closure(class_Matter_Device_remove_fabric, /* name */ /******************************************************************** ** Solidified function: _mdns_announce_hostname ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ be_nested_proto( 14, /* nstack */ @@ -231,7 +227,7 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), @@ -418,7 +414,6 @@ be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */ /******************************************************************** ** Solidified function: save_before_restart ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_save_before_restart, /* name */ be_nested_proto( 3, /* nstack */ @@ -427,7 +422,7 @@ be_local_closure(class_Matter_Device_save_before_restart, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(stop_basic_commissioning), @@ -450,7 +445,6 @@ be_local_closure(class_Matter_Device_save_before_restart, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_every_second, /* name */ be_nested_proto( 4, /* nstack */ @@ -459,7 +453,7 @@ be_local_closure(class_Matter_Device_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -503,7 +497,6 @@ be_local_closure(class_Matter_Device_every_second, /* name */ /******************************************************************** ** Solidified function: stop ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_stop, /* name */ be_nested_proto( 4, /* nstack */ @@ -512,7 +505,7 @@ be_local_closure(class_Matter_Device_stop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -542,7 +535,6 @@ be_local_closure(class_Matter_Device_stop, /* name */ /******************************************************************** ** Solidified function: every_250ms ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_every_250ms, /* name */ be_nested_proto( 4, /* nstack */ @@ -551,7 +543,7 @@ be_local_closure(class_Matter_Device_every_250ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(read_sensors_scheduler), @@ -587,7 +579,6 @@ be_local_closure(class_Matter_Device_every_250ms, /* name */ /******************************************************************** ** Solidified function: msg_received ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_msg_received, /* name */ be_nested_proto( 9, /* nstack */ @@ -596,7 +587,7 @@ be_local_closure(class_Matter_Device_msg_received, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(message_handler), @@ -621,7 +612,6 @@ be_local_closure(class_Matter_Device_msg_received, /* name */ /******************************************************************** ** Solidified function: add_read_sensors_schedule ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ be_nested_proto( 5, /* nstack */ @@ -630,7 +620,7 @@ be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(probe_sensor_time), @@ -664,7 +654,6 @@ be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */ /******************************************************************** ** Solidified function: attribute_updated ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_attribute_updated, /* name */ be_nested_proto( 10, /* nstack */ @@ -673,7 +662,7 @@ be_local_closure(class_Matter_Device_attribute_updated, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), @@ -716,7 +705,6 @@ be_local_closure(class_Matter_Device_attribute_updated, /* name */ /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_invoke_request, /* name */ be_nested_proto( 12, /* nstack */ @@ -725,7 +713,7 @@ be_local_closure(class_Matter_Device_invoke_request, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_const_int(0), @@ -773,7 +761,6 @@ be_local_closure(class_Matter_Device_invoke_request, /* name */ /******************************************************************** ** Solidified function: autoconf_device ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_autoconf_device, /* name */ be_nested_proto( 5, /* nstack */ @@ -782,7 +769,7 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -852,7 +839,6 @@ be_local_closure(class_Matter_Device_autoconf_device, /* name */ /******************************************************************** ** Solidified function: get_plugin_class_displayname ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ be_nested_proto( 5, /* nstack */ @@ -861,7 +847,7 @@ be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_classes), @@ -890,7 +876,6 @@ be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */ /******************************************************************** ** Solidified function: every_50ms ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ @@ -899,7 +884,7 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tick), @@ -926,7 +911,6 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */ /******************************************************************** ** Solidified function: button_handler ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_button_handler, /* name */ be_nested_proto( 14, /* nstack */ @@ -935,7 +919,7 @@ be_local_closure(class_Matter_Device_button_handler, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_int(0), @@ -982,7 +966,6 @@ be_local_closure(class_Matter_Device_button_handler, /* name */ /******************************************************************** ** Solidified function: register_commands ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_register_commands, /* name */ be_nested_proto( 5, /* nstack */ @@ -991,7 +974,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 4]) { + ( &(const struct bproto*[ 3]) { be_nested_proto( 10, /* nstack */ 4, /* argc */ @@ -1001,7 +984,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(MtrJoin), @@ -1028,7 +1011,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(MtrUpdate), @@ -1055,7 +1038,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(MtrInfo), @@ -1073,7 +1056,6 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ 0x80040800, // 0007 RET 1 R4 }) ), - &be_class_Matter_Device, }), 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ @@ -1112,7 +1094,6 @@ be_local_closure(class_Matter_Device_register_commands, /* name */ /******************************************************************** ** Solidified function: compute_qrcode_content ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ be_nested_proto( 8, /* nstack */ @@ -1121,7 +1102,7 @@ be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(resize), @@ -1189,7 +1170,6 @@ be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */ /******************************************************************** ** Solidified function: resolve_attribute_read_solo ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ be_nested_proto( 10, /* nstack */ @@ -1198,7 +1178,7 @@ be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(endpoint), @@ -1272,7 +1252,6 @@ be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */ /******************************************************************** ** Solidified function: update_remotes_info ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_update_remotes_info, /* name */ be_nested_proto( 7, /* nstack */ @@ -1281,7 +1260,7 @@ be_local_closure(class_Matter_Device_update_remotes_info, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(http_remotes), @@ -1336,7 +1315,6 @@ be_local_closure(class_Matter_Device_update_remotes_info, /* name */ /******************************************************************** ** Solidified function: button_multi_pressed ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ be_nested_proto( 11, /* nstack */ @@ -1345,7 +1323,7 @@ be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(button_handler), @@ -1378,7 +1356,6 @@ be_local_closure(class_Matter_Device_button_multi_pressed, /* name */ /******************************************************************** ** Solidified function: sort_distinct ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_sort_distinct, /* name */ be_nested_proto( 7, /* nstack */ @@ -1387,7 +1364,7 @@ be_local_closure(class_Matter_Device_sort_distinct, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Device), @@ -1461,7 +1438,6 @@ be_local_closure(class_Matter_Device_sort_distinct, /* name */ /******************************************************************** ** Solidified function: mdns_remove_PASE ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ be_nested_proto( 9, /* nstack */ @@ -1470,7 +1446,7 @@ be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), @@ -1582,7 +1558,6 @@ be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */ /******************************************************************** ** Solidified function: get_plugin_remote_info ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ be_nested_proto( 6, /* nstack */ @@ -1591,7 +1566,7 @@ be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_config_remotes), @@ -1616,7 +1591,6 @@ be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */ /******************************************************************** ** Solidified function: start_root_basic_commissioning ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */ be_nested_proto( 22, /* nstack */ @@ -1625,7 +1599,7 @@ be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name * 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(PASE_TIMEOUT), @@ -1738,7 +1712,6 @@ be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name * /******************************************************************** ** Solidified function: event_fabrics_saved ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ be_nested_proto( 3, /* nstack */ @@ -1747,7 +1720,7 @@ be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -1780,7 +1753,6 @@ be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */ /******************************************************************** ** Solidified function: start_mdns_announce_hostnames ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ be_nested_proto( 6, /* nstack */ @@ -1789,7 +1761,7 @@ be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { + ( &(const struct bproto*[ 2]) { be_nested_proto( 4, /* nstack */ 0, /* argc */ @@ -1799,7 +1771,7 @@ be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_mdns_announce_hostname), @@ -1832,7 +1804,7 @@ be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_mdns_announce_hostname), @@ -1856,7 +1828,6 @@ be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ 0x80000000, // 0009 RET 0 }) ), - &be_class_Matter_Device, }), 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ @@ -1914,7 +1885,6 @@ be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */ /******************************************************************** ** Solidified function: mdns_announce_PASE ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ be_nested_proto( 12, /* nstack */ @@ -1923,7 +1893,7 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[40]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), @@ -2201,7 +2171,6 @@ be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */ /******************************************************************** ** Solidified function: autoconf_sensors_list ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ be_nested_proto( 10, /* nstack */ @@ -2210,7 +2179,7 @@ be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(k2l), @@ -2363,7 +2332,6 @@ be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */ /******************************************************************** ** Solidified function: process_attribute_expansion ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ be_nested_proto( 12, /* nstack */ @@ -2372,7 +2340,7 @@ be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(endpoint), @@ -2425,7 +2393,6 @@ be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */ /******************************************************************** ** Solidified function: stop_basic_commissioning ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ be_nested_proto( 6, /* nstack */ @@ -2434,7 +2401,7 @@ be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(is_root_commissioning_open), @@ -2482,7 +2449,6 @@ be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */ /******************************************************************** ** Solidified function: clean_remotes ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_clean_remotes, /* name */ be_nested_proto( 10, /* nstack */ @@ -2491,7 +2457,7 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -2604,7 +2570,6 @@ be_local_closure(class_Matter_Device_clean_remotes, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -2613,7 +2578,7 @@ be_local_closure(class_Matter_Device_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { + ( &(const struct bproto*[ 2]) { be_nested_proto( 4, /* nstack */ 0, /* argc */ @@ -2623,7 +2588,7 @@ be_local_closure(class_Matter_Device_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(start), @@ -2655,7 +2620,7 @@ be_local_closure(class_Matter_Device_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(start), @@ -2678,7 +2643,6 @@ be_local_closure(class_Matter_Device_init, /* name */ 0x80000000, // 0008 RET 0 }) ), - &be_class_Matter_Device, }), 1, /* has constants */ ( &(const bvalue[38]) { /* constants */ @@ -2835,7 +2799,6 @@ be_local_closure(class_Matter_Device_init, /* name */ /******************************************************************** ** Solidified function: mdns_remove_op_discovery ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ be_nested_proto( 12, /* nstack */ @@ -2844,7 +2807,7 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), @@ -2960,7 +2923,6 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */ /******************************************************************** ** Solidified function: _start_udp ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device__start_udp, /* name */ be_nested_proto( 7, /* nstack */ @@ -2969,7 +2931,7 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 8, /* nstack */ 3, /* argc */ @@ -2979,7 +2941,7 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(msg_received), @@ -2996,7 +2958,6 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ 0x80040600, // 0006 RET 1 R3 }) ), - &be_class_Matter_Device, }), 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ @@ -3048,7 +3009,6 @@ be_local_closure(class_Matter_Device__start_udp, /* name */ /******************************************************************** ** Solidified function: adjust_next_ep ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ be_nested_proto( 5, /* nstack */ @@ -3057,7 +3017,7 @@ be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_config), @@ -3099,7 +3059,6 @@ be_local_closure(class_Matter_Device_adjust_next_ep, /* name */ /******************************************************************** ** Solidified function: _trigger_read_sensors ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ be_nested_proto( 8, /* nstack */ @@ -3108,7 +3067,7 @@ be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -3185,7 +3144,6 @@ be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */ /******************************************************************** ** Solidified function: _instantiate_plugins_from_config ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */ be_nested_proto( 17, /* nstack */ @@ -3194,7 +3152,7 @@ be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(k2l_num), @@ -3387,7 +3345,6 @@ be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name /******************************************************************** ** Solidified function: mdns_announce_op_discovery ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ be_nested_proto( 14, /* nstack */ @@ -3396,7 +3353,7 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(mdns), @@ -3554,7 +3511,6 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */ /******************************************************************** ** Solidified function: start_commissioning_complete_deferred ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */ be_nested_proto( 6, /* nstack */ @@ -3563,7 +3519,7 @@ be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 3, /* nstack */ 0, /* argc */ @@ -3574,7 +3530,7 @@ be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* be_local_const_upval(1, 1), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(start_commissioning_complete), @@ -3589,7 +3545,6 @@ be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* 0x80040000, // 0004 RET 1 R0 }) ), - &be_class_Matter_Device, }), 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ @@ -3616,7 +3571,6 @@ be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* /******************************************************************** ** Solidified function: read_sensors_scheduler ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ be_nested_proto( 4, /* nstack */ @@ -3625,7 +3579,7 @@ be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(probe_sensor_time), @@ -3669,7 +3623,6 @@ be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */ /******************************************************************** ** Solidified function: bridge_remove_endpoint ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ be_nested_proto( 10, /* nstack */ @@ -3678,7 +3631,7 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -3767,7 +3720,6 @@ be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */ /******************************************************************** ** Solidified function: bridge_add_endpoint ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ be_nested_proto( 16, /* nstack */ @@ -3776,7 +3728,7 @@ be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_classes), @@ -3880,7 +3832,6 @@ be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */ /******************************************************************** ** Solidified function: is_root_commissioning_open ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ be_nested_proto( 3, /* nstack */ @@ -3889,7 +3840,7 @@ be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(commissioning_open), @@ -3918,7 +3869,6 @@ be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */ /******************************************************************** ** Solidified function: start_operational_discovery ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ be_nested_proto( 7, /* nstack */ @@ -3927,7 +3877,7 @@ be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -3955,7 +3905,6 @@ be_local_closure(class_Matter_Device_start_operational_discovery, /* name */ /******************************************************************** ** Solidified function: MtrInfo ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_MtrInfo, /* name */ be_nested_proto( 10, /* nstack */ @@ -3964,7 +3913,7 @@ be_local_closure(class_Matter_Device_MtrInfo, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(), @@ -4029,7 +3978,6 @@ be_local_closure(class_Matter_Device_MtrInfo, /* name */ /******************************************************************** ** Solidified function: signal_endpoints_changed ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ be_nested_proto( 7, /* nstack */ @@ -4038,7 +3986,7 @@ be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_updated), @@ -4073,7 +4021,6 @@ be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */ /******************************************************************** ** Solidified function: MtrUpdate ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_MtrUpdate, /* name */ be_nested_proto( 18, /* nstack */ @@ -4082,7 +4029,7 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[25]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -4249,7 +4196,6 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */ /******************************************************************** ** Solidified function: start_operational_discovery_deferred ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */ be_nested_proto( 6, /* nstack */ @@ -4258,7 +4204,7 @@ be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 3, /* nstack */ 0, /* argc */ @@ -4269,7 +4215,7 @@ be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* be_local_const_upval(1, 1), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(start_operational_discovery), @@ -4284,7 +4230,6 @@ be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* 0x80040000, // 0004 RET 1 R0 }) ), - &be_class_Matter_Device, }), 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ @@ -4311,7 +4256,6 @@ be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* /******************************************************************** ** Solidified function: save_param ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_save_param, /* name */ be_nested_proto( 9, /* nstack */ @@ -4320,7 +4264,7 @@ be_local_closure(class_Matter_Device_save_param, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -4450,7 +4394,6 @@ be_local_closure(class_Matter_Device_save_param, /* name */ /******************************************************************** ** Solidified function: load_param ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_load_param, /* name */ be_nested_proto( 12, /* nstack */ @@ -4459,7 +4402,7 @@ be_local_closure(class_Matter_Device_load_param, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[36]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -4644,7 +4587,6 @@ be_local_closure(class_Matter_Device_load_param, /* name */ /******************************************************************** ** Solidified function: compute_manual_pairing_code ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ be_nested_proto( 9, /* nstack */ @@ -4653,7 +4595,7 @@ be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(root_discriminator), @@ -4705,7 +4647,6 @@ be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */ /******************************************************************** ** Solidified function: msg_send ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_msg_send, /* name */ be_nested_proto( 5, /* nstack */ @@ -4714,7 +4655,7 @@ be_local_closure(class_Matter_Device_msg_send, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(udp_server), @@ -4737,7 +4678,6 @@ be_local_closure(class_Matter_Device_msg_send, /* name */ /******************************************************************** ** Solidified function: button_pressed ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_button_pressed, /* name */ be_nested_proto( 13, /* nstack */ @@ -4746,7 +4686,7 @@ be_local_closure(class_Matter_Device_button_pressed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(button_handler), @@ -4793,7 +4733,6 @@ be_local_closure(class_Matter_Device_button_pressed, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start, /* name */ be_nested_proto( 4, /* nstack */ @@ -4802,7 +4741,7 @@ be_local_closure(class_Matter_Device_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(started), @@ -4836,7 +4775,6 @@ be_local_closure(class_Matter_Device_start, /* name */ /******************************************************************** ** Solidified function: register_http_remote ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_register_http_remote, /* name */ be_nested_proto( 9, /* nstack */ @@ -4845,7 +4783,7 @@ be_local_closure(class_Matter_Device_register_http_remote, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(http_remotes), @@ -4911,7 +4849,6 @@ be_local_closure(class_Matter_Device_register_http_remote, /* name */ /******************************************************************** ** Solidified function: check_config_ep ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_check_config_ep, /* name */ be_nested_proto( 10, /* nstack */ @@ -4920,7 +4857,7 @@ be_local_closure(class_Matter_Device_check_config_ep, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_config), @@ -5027,7 +4964,6 @@ be_local_closure(class_Matter_Device_check_config_ep, /* name */ /******************************************************************** ** Solidified function: mdns_remove_op_discovery_all_fabrics ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */ be_nested_proto( 6, /* nstack */ @@ -5036,7 +4972,7 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -5080,7 +5016,6 @@ be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* /******************************************************************** ** Solidified function: mdns_announce_op_discovery_all_fabrics ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */ be_nested_proto( 6, /* nstack */ @@ -5089,7 +5024,7 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, / 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -5133,7 +5068,6 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, / /******************************************************************** ** Solidified function: generate_random_passcode ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ be_nested_proto( 7, /* nstack */ @@ -5142,7 +5076,7 @@ be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -5201,7 +5135,6 @@ be_local_closure(class_Matter_Device_generate_random_passcode, /* name */ /******************************************************************** ** Solidified function: is_commissioning_open ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ be_nested_proto( 3, /* nstack */ @@ -5210,7 +5143,7 @@ be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(commissioning_open), @@ -5231,7 +5164,6 @@ be_local_closure(class_Matter_Device_is_commissioning_open, /* name */ /******************************************************************** ** Solidified function: find_plugin_by_endpoint ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ be_nested_proto( 6, /* nstack */ @@ -5240,7 +5172,7 @@ be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -5277,7 +5209,6 @@ be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */ /******************************************************************** ** Solidified function: conf_to_log ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_conf_to_log, /* name */ be_nested_proto( 9, /* nstack */ @@ -5286,7 +5217,7 @@ be_local_closure(class_Matter_Device_conf_to_log, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Device), @@ -5332,7 +5263,6 @@ be_local_closure(class_Matter_Device_conf_to_log, /* name */ /******************************************************************** ** Solidified function: received_ack ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_received_ack, /* name */ be_nested_proto( 5, /* nstack */ @@ -5341,7 +5271,7 @@ be_local_closure(class_Matter_Device_received_ack, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(udp_server), @@ -5364,7 +5294,6 @@ be_local_closure(class_Matter_Device_received_ack, /* name */ /******************************************************************** ** Solidified function: MtrInfo_one ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ be_nested_proto( 9, /* nstack */ @@ -5373,7 +5302,7 @@ be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(find_plugin_by_endpoint), @@ -5415,7 +5344,6 @@ be_local_closure(class_Matter_Device_MtrInfo_one, /* name */ /******************************************************************** ** Solidified function: get_plugin_class_arg ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ be_nested_proto( 5, /* nstack */ @@ -5424,7 +5352,7 @@ be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(plugins_classes), @@ -5453,7 +5381,6 @@ be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */ /******************************************************************** ** Solidified function: k2l ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_k2l, /* name */ be_nested_proto( 8, /* nstack */ @@ -5462,7 +5389,7 @@ be_local_closure(class_Matter_Device_k2l, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_class(be_class_Matter_Device), @@ -5534,7 +5461,6 @@ be_local_closure(class_Matter_Device_k2l, /* name */ /******************************************************************** ** Solidified function: start_basic_commissioning ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ be_nested_proto( 13, /* nstack */ @@ -5543,7 +5469,7 @@ be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { + ( &(const struct bproto*[ 2]) { be_nested_proto( 4, /* nstack */ 0, /* argc */ @@ -5553,7 +5479,7 @@ be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(mdns_announce_PASE), @@ -5584,7 +5510,7 @@ be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(mdns_announce_PASE), @@ -5606,7 +5532,6 @@ be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ 0x80000000, // 0008 RET 0 }) ), - &be_class_Matter_Device, }), 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ @@ -5679,7 +5604,6 @@ be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */ /******************************************************************** ** Solidified function: _init_basic_commissioning ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ be_nested_proto( 3, /* nstack */ @@ -5688,7 +5612,7 @@ be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(sessions), @@ -5716,7 +5640,6 @@ be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */ /******************************************************************** ** Solidified function: find_plugin_by_friendly_name ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ be_nested_proto( 7, /* nstack */ @@ -5725,7 +5648,7 @@ be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -5780,7 +5703,6 @@ be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */ /******************************************************************** ** Solidified function: autoconf_device_map ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ be_nested_proto( 19, /* nstack */ @@ -5789,7 +5711,7 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[38]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -6105,7 +6027,6 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */ /******************************************************************** ** Solidified function: get_active_endpoints ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ be_nested_proto( 9, /* nstack */ @@ -6114,7 +6035,7 @@ be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(plugins), @@ -6164,7 +6085,6 @@ be_local_closure(class_Matter_Device_get_active_endpoints, /* name */ /******************************************************************** ** Solidified function: MtrJoin ********************************************************************/ -extern const bclass be_class_Matter_Device; be_local_closure(class_Matter_Device_MtrJoin, /* name */ be_nested_proto( 8, /* nstack */ @@ -6173,7 +6093,7 @@ be_local_closure(class_Matter_Device_MtrJoin, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Matter_Device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(start_root_basic_commissioning), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h index 36aa24169..5a34d9b53 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h @@ -7,7 +7,6 @@ /******************************************************************** ** Solidified function: read_bytes ********************************************************************/ -extern const bclass be_class_Wire; be_local_closure(class_Wire_read_bytes, /* name */ be_nested_proto( 8, /* nstack */ @@ -16,7 +15,7 @@ be_local_closure(class_Wire_read_bytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Wire, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(_begin_transmission), @@ -62,7 +61,6 @@ be_local_closure(class_Wire_read_bytes, /* name */ /******************************************************************** ** Solidified function: write_bytes ********************************************************************/ -extern const bclass be_class_Wire; be_local_closure(class_Wire_write_bytes, /* name */ be_nested_proto( 7, /* nstack */ @@ -71,7 +69,7 @@ be_local_closure(class_Wire_write_bytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Wire, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_begin_transmission), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h index a814e12c7..e15158478 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h @@ -9,7 +9,6 @@ extern const bclass be_class_Autoconf; /******************************************************************** ** Solidified function: page_autoconf_ctl ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_page_autoconf_ctl, /* name */ be_nested_proto( 11, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Autoconf_page_autoconf_ctl, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[39]) { /* constants */ /* K0 */ be_nested_str(webserver), @@ -189,7 +188,6 @@ be_local_closure(class_Autoconf_page_autoconf_ctl, /* name */ /******************************************************************** ** Solidified function: autoexec ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_autoexec, /* name */ be_nested_proto( 13, /* nstack */ @@ -198,7 +196,7 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[30]) { /* constants */ /* K0 */ be_nested_str(_archive), @@ -391,7 +389,6 @@ be_local_closure(class_Autoconf_autoexec, /* name */ /******************************************************************** ** Solidified function: run_bat ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_run_bat, /* name */ be_nested_proto( 12, /* nstack */ @@ -400,7 +397,7 @@ be_local_closure(class_Autoconf_run_bat, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str(r), @@ -495,7 +492,6 @@ be_local_closure(class_Autoconf_run_bat, /* name */ /******************************************************************** ** Solidified function: page_autoconf_mgr ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */ be_nested_proto( 18, /* nstack */ @@ -504,7 +500,7 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[38]) { /* constants */ /* K0 */ be_nested_str(webserver), @@ -682,7 +678,6 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */ /******************************************************************** ** Solidified function: get_current_module_name ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_get_current_module_name, /* name */ be_nested_proto( 3, /* nstack */ @@ -691,7 +686,7 @@ be_local_closure(class_Autoconf_get_current_module_name, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_archive), @@ -714,7 +709,6 @@ be_local_closure(class_Autoconf_get_current_module_name, /* name */ /******************************************************************** ** Solidified function: delete_all_configs ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_delete_all_configs, /* name */ be_nested_proto( 10, /* nstack */ @@ -723,7 +717,7 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(path), @@ -773,7 +767,6 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ /******************************************************************** ** Solidified function: set_first_time ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_set_first_time, /* name */ be_nested_proto( 4, /* nstack */ @@ -782,7 +775,7 @@ be_local_closure(class_Autoconf_set_first_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_X2F_X2Eautoconf), @@ -808,7 +801,6 @@ be_local_closure(class_Autoconf_set_first_time, /* name */ /******************************************************************** ** Solidified function: load_templates ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_load_templates, /* name */ be_nested_proto( 13, /* nstack */ @@ -817,7 +809,7 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str(json), @@ -937,7 +929,6 @@ be_local_closure(class_Autoconf_load_templates, /* name */ /******************************************************************** ** Solidified function: web_add_config_button ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_web_add_config_button, /* name */ be_nested_proto( 5, /* nstack */ @@ -946,7 +937,7 @@ be_local_closure(class_Autoconf_web_add_config_button, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(webserver), @@ -970,7 +961,6 @@ be_local_closure(class_Autoconf_web_add_config_button, /* name */ /******************************************************************** ** Solidified function: is_first_time ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_is_first_time, /* name */ be_nested_proto( 5, /* nstack */ @@ -979,7 +969,7 @@ be_local_closure(class_Autoconf_is_first_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(path), @@ -1006,7 +996,6 @@ be_local_closure(class_Autoconf_is_first_time, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_init, /* name */ be_nested_proto( 12, /* nstack */ @@ -1015,7 +1004,7 @@ be_local_closure(class_Autoconf_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str(path), @@ -1101,7 +1090,6 @@ be_local_closure(class_Autoconf_init, /* name */ /******************************************************************** ** Solidified function: preinit ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_preinit, /* name */ be_nested_proto( 7, /* nstack */ @@ -1110,7 +1098,7 @@ be_local_closure(class_Autoconf_preinit, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str(_archive), @@ -1162,7 +1150,6 @@ be_local_closure(class_Autoconf_preinit, /* name */ /******************************************************************** ** Solidified function: reset ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_reset, /* name */ be_nested_proto( 11, /* nstack */ @@ -1171,7 +1158,7 @@ be_local_closure(class_Autoconf_reset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(path), @@ -1234,7 +1221,6 @@ be_local_closure(class_Autoconf_reset, /* name */ /******************************************************************** ** Solidified function: web_add_handler ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_web_add_handler, /* name */ be_nested_proto( 7, /* nstack */ @@ -1243,7 +1229,7 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { + ( &(const struct bproto*[ 2]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -1253,7 +1239,7 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(page_autoconf_mgr), @@ -1276,7 +1262,7 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(page_autoconf_ctl), @@ -1290,7 +1276,6 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ 0x80040000, // 0003 RET 1 R0 }) ), - &be_class_Autoconf, }), 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ @@ -1325,7 +1310,6 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ /******************************************************************** ** Solidified function: clear_first_time ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_clear_first_time, /* name */ be_nested_proto( 5, /* nstack */ @@ -1334,7 +1318,7 @@ be_local_closure(class_Autoconf_clear_first_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(path), @@ -1358,7 +1342,6 @@ be_local_closure(class_Autoconf_clear_first_time, /* name */ /******************************************************************** ** Solidified function: get_current_module_path ********************************************************************/ -extern const bclass be_class_Autoconf; be_local_closure(class_Autoconf_get_current_module_path, /* name */ be_nested_proto( 2, /* nstack */ @@ -1367,7 +1350,7 @@ be_local_closure(class_Autoconf_get_current_module_path, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Autoconf, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(_archive), @@ -1424,7 +1407,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_class(be_class_Autoconf), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h index 5a3d208c4..365a97a07 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h @@ -15,7 +15,7 @@ be_local_closure(_f, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -23,7 +23,7 @@ be_local_closure(_f, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(size), @@ -54,7 +54,6 @@ be_local_closure(_f, /* name */ 0x80000000, // 0012 RET 0 }) ), - NULL, }), 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ @@ -126,7 +125,7 @@ be_local_closure(PBKDF2_HMAC_SHA256, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(string), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h index b4c27d263..9fb7828fe 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h @@ -9,7 +9,6 @@ extern const bclass be_class_SPAKE2P_Matter; /******************************************************************** ** Solidified function: compute_pB ********************************************************************/ -extern const bclass be_class_SPAKE2P_Matter; be_local_closure(class_SPAKE2P_Matter_compute_pB, /* name */ be_nested_proto( 10, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_SPAKE2P_Matter_compute_pB, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE2P_Matter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -69,7 +68,6 @@ extern const bclass be_class_SPAKE_Hasher; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_SPAKE_Hasher; be_local_closure(class_SPAKE_Hasher_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -78,7 +76,7 @@ be_local_closure(class_SPAKE_Hasher_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE_Hasher, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -102,7 +100,6 @@ be_local_closure(class_SPAKE_Hasher_init, /* name */ /******************************************************************** ** Solidified function: add_item ********************************************************************/ -extern const bclass be_class_SPAKE_Hasher; be_local_closure(class_SPAKE_Hasher_add_item, /* name */ be_nested_proto( 7, /* nstack */ @@ -111,7 +108,7 @@ be_local_closure(class_SPAKE_Hasher_add_item, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE_Hasher, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(size), @@ -153,7 +150,6 @@ be_local_closure(class_SPAKE_Hasher_add_item, /* name */ /******************************************************************** ** Solidified function: out ********************************************************************/ -extern const bclass be_class_SPAKE_Hasher; be_local_closure(class_SPAKE_Hasher_out, /* name */ be_nested_proto( 3, /* nstack */ @@ -162,7 +158,7 @@ be_local_closure(class_SPAKE_Hasher_out, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE_Hasher, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(hash), @@ -200,7 +196,6 @@ be_local_class(SPAKE_Hasher, /******************************************************************** ** Solidified function: compute_TT_hash ********************************************************************/ -extern const bclass be_class_SPAKE2P_Matter; be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */ be_nested_proto( 14, /* nstack */ @@ -209,7 +204,7 @@ be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE2P_Matter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[29]) { /* constants */ /* K0 */ be_const_class(be_class_SPAKE_Hasher), @@ -369,7 +364,6 @@ be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_SPAKE2P_Matter; be_local_closure(class_SPAKE2P_Matter_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -378,7 +372,7 @@ be_local_closure(class_SPAKE2P_Matter_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE2P_Matter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(M), @@ -418,7 +412,6 @@ be_local_closure(class_SPAKE2P_Matter_init, /* name */ /******************************************************************** ** Solidified function: compute_pA ********************************************************************/ -extern const bclass be_class_SPAKE2P_Matter; be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */ be_nested_proto( 10, /* nstack */ @@ -427,7 +420,7 @@ be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE2P_Matter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -476,7 +469,6 @@ be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */ /******************************************************************** ** Solidified function: set_context ********************************************************************/ -extern const bclass be_class_SPAKE2P_Matter; be_local_closure(class_SPAKE2P_Matter_set_context, /* name */ be_nested_proto( 5, /* nstack */ @@ -485,7 +477,7 @@ be_local_closure(class_SPAKE2P_Matter_set_context, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE2P_Matter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(Context), @@ -520,7 +512,6 @@ be_local_closure(class_SPAKE2P_Matter_set_context, /* name */ /******************************************************************** ** Solidified function: compute_ZV_verifier ********************************************************************/ -extern const bclass be_class_SPAKE2P_Matter; be_local_closure(class_SPAKE2P_Matter_compute_ZV_verifier, /* name */ be_nested_proto( 11, /* nstack */ @@ -529,7 +520,7 @@ be_local_closure(class_SPAKE2P_Matter_compute_ZV_verifier, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE2P_Matter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), @@ -584,7 +575,6 @@ be_local_closure(class_SPAKE2P_Matter_compute_ZV_verifier, /* name */ /******************************************************************** ** Solidified function: compute_ZV_prover ********************************************************************/ -extern const bclass be_class_SPAKE2P_Matter; be_local_closure(class_SPAKE2P_Matter_compute_ZV_prover, /* name */ be_nested_proto( 11, /* nstack */ @@ -593,7 +583,7 @@ be_local_closure(class_SPAKE2P_Matter_compute_ZV_prover, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_SPAKE2P_Matter, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h index 3572e477e..b022dc55a 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h @@ -9,7 +9,6 @@ extern const bclass be_class_Driver; /******************************************************************** ** Solidified function: add_cmd ********************************************************************/ -extern const bclass be_class_Driver; be_local_closure(class_Driver_add_cmd, /* name */ be_nested_proto( 7, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Driver_add_cmd, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 10, /* nstack */ 4, /* argc */ @@ -29,7 +28,7 @@ be_local_closure(class_Driver_add_cmd, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str__X3Clambda_X3E, @@ -45,7 +44,6 @@ be_local_closure(class_Driver_add_cmd, /* name */ 0x80040800, // 0007 RET 1 R4 }) ), - &be_class_Driver, }), 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h index be718732c..eac9e7551 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h @@ -9,7 +9,6 @@ extern const bclass be_class_dyn; /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_dyn; be_local_closure(class_dyn_tostring, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_dyn_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_dyn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_attr), @@ -40,7 +39,6 @@ be_local_closure(class_dyn_tostring, /* name */ /******************************************************************** ** Solidified function: member ********************************************************************/ -extern const bclass be_class_dyn; be_local_closure(class_dyn_member, /* name */ be_nested_proto( 5, /* nstack */ @@ -49,7 +47,7 @@ be_local_closure(class_dyn_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_dyn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_attr), @@ -80,7 +78,6 @@ be_local_closure(class_dyn_member, /* name */ /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_dyn; be_local_closure(class_dyn_setmember, /* name */ be_nested_proto( 4, /* nstack */ @@ -89,7 +86,7 @@ be_local_closure(class_dyn_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_dyn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(_attr), @@ -109,7 +106,6 @@ be_local_closure(class_dyn_setmember, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_dyn; be_local_closure(class_dyn_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -118,7 +114,7 @@ be_local_closure(class_dyn_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_dyn, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(_attr), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h index 8fe87503b..5682971af 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h @@ -15,7 +15,7 @@ be_local_closure(module_energy_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(global), @@ -45,7 +45,7 @@ be_local_closure(module_energy__deref, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(global), @@ -103,7 +103,7 @@ be_local_closure(module_energy_read, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(energy), @@ -143,7 +143,7 @@ be_local_closure(module_energy_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(energy), @@ -181,7 +181,7 @@ be_local_closure(module_energy_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(energy), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h index 75166567d..00a7cfcfe 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h @@ -9,7 +9,6 @@ extern const bclass be_class_hue_bridge_monad; /******************************************************************** ** Solidified function: full_status ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_full_status, /* name */ be_nested_proto( 11, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_hue_bridge_monad_full_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(hue_ntv), @@ -59,7 +58,6 @@ be_local_closure(class_hue_bridge_monad_full_status, /* name */ /******************************************************************** ** Solidified function: hue_status ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_hue_status, /* name */ be_nested_proto( 6, /* nstack */ @@ -68,7 +66,7 @@ be_local_closure(class_hue_bridge_monad_hue_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(hue_ntv), @@ -102,7 +100,6 @@ be_local_closure(class_hue_bridge_monad_hue_status, /* name */ /******************************************************************** ** Solidified function: add_light ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_add_light, /* name */ be_nested_proto( 10, /* nstack */ @@ -111,7 +108,7 @@ be_local_closure(class_hue_bridge_monad_add_light, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str(int), @@ -184,7 +181,6 @@ be_local_closure(class_hue_bridge_monad_add_light, /* name */ /******************************************************************** ** Solidified function: remove_light ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_remove_light, /* name */ be_nested_proto( 5, /* nstack */ @@ -193,7 +189,7 @@ be_local_closure(class_hue_bridge_monad_remove_light, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(lights), @@ -216,7 +212,6 @@ be_local_closure(class_hue_bridge_monad_remove_light, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -225,7 +220,7 @@ be_local_closure(class_hue_bridge_monad_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(lights), @@ -246,7 +241,6 @@ be_local_closure(class_hue_bridge_monad_init, /* name */ /******************************************************************** ** Solidified function: discover ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_discover, /* name */ be_nested_proto( 10, /* nstack */ @@ -255,7 +249,7 @@ be_local_closure(class_hue_bridge_monad_discover, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(hue_ntv), @@ -322,7 +316,6 @@ be_local_closure(class_hue_bridge_monad_discover, /* name */ /******************************************************************** ** Solidified function: light_to_id ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_light_to_id, /* name */ be_nested_proto( 5, /* nstack */ @@ -331,7 +324,7 @@ be_local_closure(class_hue_bridge_monad_light_to_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(lights), @@ -371,7 +364,6 @@ be_local_closure(class_hue_bridge_monad_light_to_id, /* name */ /******************************************************************** ** Solidified function: cmd ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_cmd, /* name */ be_nested_proto( 18, /* nstack */ @@ -380,7 +372,7 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[31]) { /* constants */ /* K0 */ be_nested_str(json), @@ -594,7 +586,6 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ /******************************************************************** ** Solidified function: groups ********************************************************************/ -extern const bclass be_class_hue_bridge_monad; be_local_closure(class_hue_bridge_monad_groups, /* name */ be_nested_proto( 8, /* nstack */ @@ -603,7 +594,7 @@ be_local_closure(class_hue_bridge_monad_groups, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_hue_bridge_monad, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(lights), @@ -688,7 +679,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_class(be_class_hue_bridge_monad), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h index 696a4aa77..401e8f161 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h @@ -9,7 +9,6 @@ extern const bclass be_class_AXP192; /******************************************************************** ** Solidified function: set_dcdc_enable ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_set_dcdc_enable, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_AXP192_set_dcdc_enable, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(1), @@ -61,7 +60,6 @@ be_local_closure(class_AXP192_set_dcdc_enable, /* name */ /******************************************************************** ** Solidified function: get_bat_power ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_bat_power, /* name */ be_nested_proto( 4, /* nstack */ @@ -70,11 +68,11 @@ be_local_closure(class_AXP192_get_bat_power, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read24), - /* K1 */ be_const_real_hex(0x3A102DE0), + /* K1 */ be_const_real_hex(0x3A102DE1), }), &be_const_str_get_bat_power, &be_const_str_solidified, @@ -93,7 +91,6 @@ be_local_closure(class_AXP192_get_bat_power, /* name */ /******************************************************************** ** Solidified function: get_bat_voltage ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_bat_voltage, /* name */ be_nested_proto( 4, /* nstack */ @@ -102,7 +99,7 @@ be_local_closure(class_AXP192_get_bat_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -125,7 +122,6 @@ be_local_closure(class_AXP192_get_bat_voltage, /* name */ /******************************************************************** ** Solidified function: get_vbus_current ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_vbus_current, /* name */ be_nested_proto( 4, /* nstack */ @@ -134,7 +130,7 @@ be_local_closure(class_AXP192_get_vbus_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -157,7 +153,6 @@ be_local_closure(class_AXP192_get_vbus_current, /* name */ /******************************************************************** ** Solidified function: get_warning_level ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_warning_level, /* name */ be_nested_proto( 4, /* nstack */ @@ -166,7 +161,7 @@ be_local_closure(class_AXP192_get_warning_level, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -189,7 +184,6 @@ be_local_closure(class_AXP192_get_warning_level, /* name */ /******************************************************************** ** Solidified function: set_ldo_enable ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_set_ldo_enable, /* name */ be_nested_proto( 8, /* nstack */ @@ -198,7 +192,7 @@ be_local_closure(class_AXP192_set_ldo_enable, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(2), @@ -232,7 +226,6 @@ be_local_closure(class_AXP192_set_ldo_enable, /* name */ /******************************************************************** ** Solidified function: get_input_power_status ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_input_power_status, /* name */ be_nested_proto( 6, /* nstack */ @@ -241,7 +234,7 @@ be_local_closure(class_AXP192_get_input_power_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -269,7 +262,6 @@ be_local_closure(class_AXP192_get_input_power_status, /* name */ /******************************************************************** ** Solidified function: get_aps_voltage ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_aps_voltage, /* name */ be_nested_proto( 4, /* nstack */ @@ -278,7 +270,7 @@ be_local_closure(class_AXP192_get_aps_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -301,7 +293,6 @@ be_local_closure(class_AXP192_get_aps_voltage, /* name */ /******************************************************************** ** Solidified function: set_exten ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_set_exten, /* name */ be_nested_proto( 7, /* nstack */ @@ -310,7 +301,7 @@ be_local_closure(class_AXP192_set_exten, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(write_bit), @@ -333,7 +324,6 @@ be_local_closure(class_AXP192_set_exten, /* name */ /******************************************************************** ** Solidified function: battery_present ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_battery_present, /* name */ be_nested_proto( 6, /* nstack */ @@ -342,7 +332,7 @@ be_local_closure(class_AXP192_battery_present, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -377,7 +367,6 @@ be_local_closure(class_AXP192_battery_present, /* name */ /******************************************************************** ** Solidified function: get_vbus_voltage ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_vbus_voltage, /* name */ be_nested_proto( 4, /* nstack */ @@ -386,7 +375,7 @@ be_local_closure(class_AXP192_get_vbus_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -409,7 +398,6 @@ be_local_closure(class_AXP192_get_vbus_voltage, /* name */ /******************************************************************** ** Solidified function: write_gpio ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_write_gpio, /* name */ be_nested_proto( 8, /* nstack */ @@ -418,7 +406,7 @@ be_local_closure(class_AXP192_write_gpio, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -459,7 +447,6 @@ be_local_closure(class_AXP192_write_gpio, /* name */ /******************************************************************** ** Solidified function: set_ldo_voltage ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_set_ldo_voltage, /* name */ be_nested_proto( 9, /* nstack */ @@ -468,7 +455,7 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(2), @@ -527,7 +514,6 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ /******************************************************************** ** Solidified function: json_append ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_json_append, /* name */ be_nested_proto( 9, /* nstack */ @@ -536,7 +522,7 @@ be_local_closure(class_AXP192_json_append, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -582,7 +568,6 @@ be_local_closure(class_AXP192_json_append, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -591,7 +576,7 @@ be_local_closure(class_AXP192_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(I2C_Driver), @@ -619,7 +604,6 @@ be_local_closure(class_AXP192_init, /* name */ /******************************************************************** ** Solidified function: get_bat_current ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_bat_current, /* name */ be_nested_proto( 5, /* nstack */ @@ -628,7 +612,7 @@ be_local_closure(class_AXP192_get_bat_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read13), @@ -655,7 +639,6 @@ be_local_closure(class_AXP192_get_bat_current, /* name */ /******************************************************************** ** Solidified function: web_sensor ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_web_sensor, /* name */ be_nested_proto( 9, /* nstack */ @@ -664,7 +647,7 @@ be_local_closure(class_AXP192_web_sensor, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -717,7 +700,6 @@ be_local_closure(class_AXP192_web_sensor, /* name */ /******************************************************************** ** Solidified function: set_chg_current ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_set_chg_current, /* name */ be_nested_proto( 8, /* nstack */ @@ -726,7 +708,7 @@ be_local_closure(class_AXP192_set_chg_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(write8), @@ -756,7 +738,6 @@ be_local_closure(class_AXP192_set_chg_current, /* name */ /******************************************************************** ** Solidified function: get_temp ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_temp, /* name */ be_nested_proto( 4, /* nstack */ @@ -765,7 +746,7 @@ be_local_closure(class_AXP192_get_temp, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -790,7 +771,6 @@ be_local_closure(class_AXP192_get_temp, /* name */ /******************************************************************** ** Solidified function: set_dc_voltage ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_set_dc_voltage, /* name */ be_nested_proto( 11, /* nstack */ @@ -799,7 +779,7 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_int(1), @@ -869,7 +849,6 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ /******************************************************************** ** Solidified function: power_off ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_power_off, /* name */ be_nested_proto( 6, /* nstack */ @@ -878,7 +857,7 @@ be_local_closure(class_AXP192_power_off, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(write_bit), @@ -902,7 +881,6 @@ be_local_closure(class_AXP192_power_off, /* name */ /******************************************************************** ** Solidified function: get_battery_chargin_status ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_battery_chargin_status, /* name */ be_nested_proto( 6, /* nstack */ @@ -911,7 +889,7 @@ be_local_closure(class_AXP192_get_battery_chargin_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -938,7 +916,6 @@ be_local_closure(class_AXP192_get_battery_chargin_status, /* name */ /******************************************************************** ** Solidified function: get_bat_charge_current ********************************************************************/ -extern const bclass be_class_AXP192; be_local_closure(class_AXP192_get_bat_charge_current, /* name */ be_nested_proto( 4, /* nstack */ @@ -947,7 +924,7 @@ be_local_closure(class_AXP192_get_bat_charge_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP192, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read13), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h index 211c9bef6..dc27681fd 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h @@ -9,7 +9,6 @@ extern const bclass be_class_AXP202; /******************************************************************** ** Solidified function: set_shutdown_time ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_shutdown_time, /* name */ be_nested_proto( 9, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_AXP202_set_shutdown_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_int(0), @@ -64,7 +63,6 @@ be_local_closure(class_AXP202_set_shutdown_time, /* name */ /******************************************************************** ** Solidified function: get_vbus_current ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_vbus_current, /* name */ be_nested_proto( 4, /* nstack */ @@ -73,7 +71,7 @@ be_local_closure(class_AXP202_get_vbus_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -96,7 +94,6 @@ be_local_closure(class_AXP202_get_vbus_current, /* name */ /******************************************************************** ** Solidified function: get_bat_voltage ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_bat_voltage, /* name */ be_nested_proto( 4, /* nstack */ @@ -105,7 +102,7 @@ be_local_closure(class_AXP202_get_bat_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -128,7 +125,6 @@ be_local_closure(class_AXP202_get_bat_voltage, /* name */ /******************************************************************** ** Solidified function: get_bat_current ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_bat_current, /* name */ be_nested_proto( 5, /* nstack */ @@ -137,7 +133,7 @@ be_local_closure(class_AXP202_get_bat_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read13), @@ -164,7 +160,6 @@ be_local_closure(class_AXP202_get_bat_current, /* name */ /******************************************************************** ** Solidified function: get_bat_power ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_bat_power, /* name */ be_nested_proto( 4, /* nstack */ @@ -173,11 +168,11 @@ be_local_closure(class_AXP202_get_bat_power, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read24), - /* K1 */ be_const_real_hex(0x3A102DE0), + /* K1 */ be_const_real_hex(0x3A102DE1), }), &be_const_str_get_bat_power, &be_const_str_solidified, @@ -196,7 +191,6 @@ be_local_closure(class_AXP202_get_bat_power, /* name */ /******************************************************************** ** Solidified function: get_aps_voltage ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_aps_voltage, /* name */ be_nested_proto( 4, /* nstack */ @@ -205,7 +199,7 @@ be_local_closure(class_AXP202_get_aps_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -228,7 +222,6 @@ be_local_closure(class_AXP202_get_aps_voltage, /* name */ /******************************************************************** ** Solidified function: get_vbus_voltage ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_vbus_voltage, /* name */ be_nested_proto( 4, /* nstack */ @@ -237,7 +230,7 @@ be_local_closure(class_AXP202_get_vbus_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -260,7 +253,6 @@ be_local_closure(class_AXP202_get_vbus_voltage, /* name */ /******************************************************************** ** Solidified function: set_ldo_enable ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_ldo_enable, /* name */ be_nested_proto( 8, /* nstack */ @@ -269,7 +261,7 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(2), @@ -311,7 +303,6 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ /******************************************************************** ** Solidified function: battery_present ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_battery_present, /* name */ be_nested_proto( 6, /* nstack */ @@ -320,7 +311,7 @@ be_local_closure(class_AXP202_battery_present, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -355,7 +346,6 @@ be_local_closure(class_AXP202_battery_present, /* name */ /******************************************************************** ** Solidified function: set_chg_current_ma ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_chg_current_ma, /* name */ be_nested_proto( 9, /* nstack */ @@ -364,7 +354,7 @@ be_local_closure(class_AXP202_set_chg_current_ma, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(write8), @@ -398,7 +388,6 @@ be_local_closure(class_AXP202_set_chg_current_ma, /* name */ /******************************************************************** ** Solidified function: set_dcdc_enable ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_dcdc_enable, /* name */ be_nested_proto( 8, /* nstack */ @@ -407,7 +396,7 @@ be_local_closure(class_AXP202_set_dcdc_enable, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(2), @@ -442,7 +431,6 @@ be_local_closure(class_AXP202_set_dcdc_enable, /* name */ /******************************************************************** ** Solidified function: set_chg_led_mode ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_chg_led_mode, /* name */ be_nested_proto( 7, /* nstack */ @@ -451,7 +439,7 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(read8), @@ -487,7 +475,6 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -496,7 +483,7 @@ be_local_closure(class_AXP202_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(I2C_Driver), @@ -524,7 +511,6 @@ be_local_closure(class_AXP202_init, /* name */ /******************************************************************** ** Solidified function: set_exten ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_exten, /* name */ be_nested_proto( 7, /* nstack */ @@ -533,7 +519,7 @@ be_local_closure(class_AXP202_set_exten, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(write_bit), @@ -557,7 +543,6 @@ be_local_closure(class_AXP202_set_exten, /* name */ /******************************************************************** ** Solidified function: get_battery_chargin_status ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_battery_chargin_status, /* name */ be_nested_proto( 6, /* nstack */ @@ -566,7 +551,7 @@ be_local_closure(class_AXP202_get_battery_chargin_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -593,7 +578,6 @@ be_local_closure(class_AXP202_get_battery_chargin_status, /* name */ /******************************************************************** ** Solidified function: set_dc_voltage ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_dc_voltage, /* name */ be_nested_proto( 11, /* nstack */ @@ -602,7 +586,7 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(2), @@ -667,7 +651,6 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ /******************************************************************** ** Solidified function: get_bat_charge_current ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_bat_charge_current, /* name */ be_nested_proto( 4, /* nstack */ @@ -676,7 +659,7 @@ be_local_closure(class_AXP202_get_bat_charge_current, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read13), @@ -699,7 +682,6 @@ be_local_closure(class_AXP202_get_bat_charge_current, /* name */ /******************************************************************** ** Solidified function: get_temp ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_temp, /* name */ be_nested_proto( 4, /* nstack */ @@ -708,7 +690,7 @@ be_local_closure(class_AXP202_get_temp, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(read12), @@ -733,7 +715,6 @@ be_local_closure(class_AXP202_get_temp, /* name */ /******************************************************************** ** Solidified function: set_ldo_voltage ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_ldo_voltage, /* name */ be_nested_proto( 9, /* nstack */ @@ -742,7 +723,7 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_const_int(2), @@ -820,7 +801,6 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ /******************************************************************** ** Solidified function: set_limiting_off ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_set_limiting_off, /* name */ be_nested_proto( 7, /* nstack */ @@ -829,7 +809,7 @@ be_local_closure(class_AXP202_set_limiting_off, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(write8), @@ -856,7 +836,6 @@ be_local_closure(class_AXP202_set_limiting_off, /* name */ /******************************************************************** ** Solidified function: get_input_power_status ********************************************************************/ -extern const bclass be_class_AXP202; be_local_closure(class_AXP202_get_input_power_status, /* name */ be_nested_proto( 6, /* nstack */ @@ -865,7 +844,7 @@ be_local_closure(class_AXP202_get_input_power_status, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_AXP202, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(wire), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h index 9b925d78e..f1fb1901e 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h @@ -9,7 +9,6 @@ extern const bclass be_class_I2C_Driver; /******************************************************************** ** Solidified function: write_bit ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_write_bit, /* name */ be_nested_proto( 11, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_I2C_Driver_write_bit, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_int(0), @@ -64,7 +63,6 @@ be_local_closure(class_I2C_Driver_write_bit, /* name */ /******************************************************************** ** Solidified function: read32 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_read32, /* name */ be_nested_proto( 7, /* nstack */ @@ -73,7 +71,7 @@ be_local_closure(class_I2C_Driver_read32, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -116,7 +114,6 @@ be_local_closure(class_I2C_Driver_read32, /* name */ /******************************************************************** ** Solidified function: read13 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_read13, /* name */ be_nested_proto( 7, /* nstack */ @@ -125,7 +122,7 @@ be_local_closure(class_I2C_Driver_read13, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -159,7 +156,6 @@ be_local_closure(class_I2C_Driver_read13, /* name */ /******************************************************************** ** Solidified function: read24 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_read24, /* name */ be_nested_proto( 7, /* nstack */ @@ -168,7 +164,7 @@ be_local_closure(class_I2C_Driver_read24, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -207,7 +203,6 @@ be_local_closure(class_I2C_Driver_read24, /* name */ /******************************************************************** ** Solidified function: read14 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_read14, /* name */ be_nested_proto( 7, /* nstack */ @@ -216,7 +211,7 @@ be_local_closure(class_I2C_Driver_read14, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -250,7 +245,6 @@ be_local_closure(class_I2C_Driver_read14, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -259,7 +253,7 @@ be_local_closure(class_I2C_Driver_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -329,7 +323,6 @@ be_local_closure(class_I2C_Driver_init, /* name */ /******************************************************************** ** Solidified function: write8 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_write8, /* name */ be_nested_proto( 9, /* nstack */ @@ -338,7 +331,7 @@ be_local_closure(class_I2C_Driver_write8, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -366,7 +359,6 @@ be_local_closure(class_I2C_Driver_write8, /* name */ /******************************************************************** ** Solidified function: read8 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_read8, /* name */ be_nested_proto( 7, /* nstack */ @@ -375,7 +367,7 @@ be_local_closure(class_I2C_Driver_read8, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -402,7 +394,6 @@ be_local_closure(class_I2C_Driver_read8, /* name */ /******************************************************************** ** Solidified function: read12 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_read12, /* name */ be_nested_proto( 7, /* nstack */ @@ -411,7 +402,7 @@ be_local_closure(class_I2C_Driver_read12, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -445,7 +436,6 @@ be_local_closure(class_I2C_Driver_read12, /* name */ /******************************************************************** ** Solidified function: read16 ********************************************************************/ -extern const bclass be_class_I2C_Driver; be_local_closure(class_I2C_Driver_read16, /* name */ be_nested_proto( 7, /* nstack */ @@ -454,7 +444,7 @@ be_local_closure(class_I2C_Driver_read16, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_I2C_Driver, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(wire), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h index b9b71da46..3cdd11954 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h @@ -9,7 +9,6 @@ extern const bclass be_class_FT3663; /******************************************************************** ** Solidified function: every_100ms ********************************************************************/ -extern const bclass be_class_FT3663; be_local_closure(class_FT3663_every_100ms, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_FT3663_every_100ms, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_FT3663, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(wire), @@ -41,7 +40,6 @@ be_local_closure(class_FT3663_every_100ms, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_FT3663; be_local_closure(class_FT3663_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_FT3663_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_FT3663, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(init), @@ -128,7 +126,6 @@ be_local_closure(class_FT3663_init, /* name */ /******************************************************************** ** Solidified function: ts_loop ********************************************************************/ -extern const bclass be_class_FT3663; be_local_closure(class_FT3663_ts_loop, /* name */ be_nested_proto( 17, /* nstack */ @@ -137,7 +134,7 @@ be_local_closure(class_FT3663_ts_loop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_FT3663, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str(wire), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h index 99caae874..f311a595e 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h @@ -11,7 +11,6 @@ extern const bclass be_class_Leds_segment; /******************************************************************** ** Solidified function: pixel_offset ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_pixel_offset, /* name */ be_nested_proto( 2, /* nstack */ @@ -20,7 +19,7 @@ be_local_closure(class_Leds_segment_pixel_offset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(offset), @@ -39,7 +38,6 @@ be_local_closure(class_Leds_segment_pixel_offset, /* name */ /******************************************************************** ** Solidified function: clear_to ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_clear_to, /* name */ be_nested_proto( 10, /* nstack */ @@ -48,7 +46,7 @@ be_local_closure(class_Leds_segment_clear_to, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(bri), @@ -86,7 +84,6 @@ be_local_closure(class_Leds_segment_clear_to, /* name */ /******************************************************************** ** Solidified function: pixel_count ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_pixel_count, /* name */ be_nested_proto( 2, /* nstack */ @@ -95,7 +92,7 @@ be_local_closure(class_Leds_segment_pixel_count, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(leds), @@ -114,7 +111,6 @@ be_local_closure(class_Leds_segment_pixel_count, /* name */ /******************************************************************** ** Solidified function: pixels_buffer ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_pixels_buffer, /* name */ be_nested_proto( 2, /* nstack */ @@ -123,7 +119,7 @@ be_local_closure(class_Leds_segment_pixels_buffer, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_pixels_buffer, @@ -140,7 +136,6 @@ be_local_closure(class_Leds_segment_pixels_buffer, /* name */ /******************************************************************** ** Solidified function: dirty ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_dirty, /* name */ be_nested_proto( 3, /* nstack */ @@ -149,7 +144,7 @@ be_local_closure(class_Leds_segment_dirty, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -171,7 +166,6 @@ be_local_closure(class_Leds_segment_dirty, /* name */ /******************************************************************** ** Solidified function: can_show ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_can_show, /* name */ be_nested_proto( 3, /* nstack */ @@ -180,7 +174,7 @@ be_local_closure(class_Leds_segment_can_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -202,7 +196,6 @@ be_local_closure(class_Leds_segment_can_show, /* name */ /******************************************************************** ** Solidified function: set_pixel_color ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_set_pixel_color, /* name */ be_nested_proto( 9, /* nstack */ @@ -211,7 +204,7 @@ be_local_closure(class_Leds_segment_set_pixel_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(bri), @@ -243,7 +236,6 @@ be_local_closure(class_Leds_segment_set_pixel_color, /* name */ /******************************************************************** ** Solidified function: is_dirty ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_is_dirty, /* name */ be_nested_proto( 3, /* nstack */ @@ -252,7 +244,7 @@ be_local_closure(class_Leds_segment_is_dirty, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -274,7 +266,6 @@ be_local_closure(class_Leds_segment_is_dirty, /* name */ /******************************************************************** ** Solidified function: clear ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_clear, /* name */ be_nested_proto( 4, /* nstack */ @@ -283,7 +274,7 @@ be_local_closure(class_Leds_segment_clear, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(clear_to), @@ -308,7 +299,6 @@ be_local_closure(class_Leds_segment_clear, /* name */ /******************************************************************** ** Solidified function: begin ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_begin, /* name */ be_nested_proto( 1, /* nstack */ @@ -317,7 +307,7 @@ be_local_closure(class_Leds_segment_begin, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_begin, @@ -333,7 +323,6 @@ be_local_closure(class_Leds_segment_begin, /* name */ /******************************************************************** ** Solidified function: get_pixel_color ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_get_pixel_color, /* name */ be_nested_proto( 5, /* nstack */ @@ -342,7 +331,7 @@ be_local_closure(class_Leds_segment_get_pixel_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -367,7 +356,6 @@ be_local_closure(class_Leds_segment_get_pixel_color, /* name */ /******************************************************************** ** Solidified function: pixel_size ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_pixel_size, /* name */ be_nested_proto( 3, /* nstack */ @@ -376,7 +364,7 @@ be_local_closure(class_Leds_segment_pixel_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -398,7 +386,6 @@ be_local_closure(class_Leds_segment_pixel_size, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -407,7 +394,7 @@ be_local_closure(class_Leds_segment_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -436,7 +423,6 @@ be_local_closure(class_Leds_segment_init, /* name */ /******************************************************************** ** Solidified function: show ********************************************************************/ -extern const bclass be_class_Leds_segment; be_local_closure(class_Leds_segment_show, /* name */ be_nested_proto( 4, /* nstack */ @@ -445,7 +431,7 @@ be_local_closure(class_Leds_segment_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_segment, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(offset), @@ -511,7 +497,6 @@ be_local_class(Leds_segment, /******************************************************************** ** Solidified function: create_segment ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_create_segment, /* name */ be_nested_proto( 8, /* nstack */ @@ -520,7 +505,7 @@ be_local_closure(class_Leds_create_segment, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(leds), @@ -564,7 +549,6 @@ be_local_closure(class_Leds_create_segment, /* name */ /******************************************************************** ** Solidified function: set_bri ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_set_bri, /* name */ be_nested_proto( 3, /* nstack */ @@ -573,7 +557,7 @@ be_local_closure(class_Leds_set_bri, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_const_int(0), @@ -600,7 +584,6 @@ be_local_closure(class_Leds_set_bri, /* name */ /******************************************************************** ** Solidified function: begin ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_begin, /* name */ be_nested_proto( 4, /* nstack */ @@ -609,7 +592,7 @@ be_local_closure(class_Leds_begin, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -631,7 +614,6 @@ be_local_closure(class_Leds_begin, /* name */ /******************************************************************** ** Solidified function: clear ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_clear, /* name */ be_nested_proto( 4, /* nstack */ @@ -640,7 +622,7 @@ be_local_closure(class_Leds_clear, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(clear_to), @@ -665,7 +647,6 @@ be_local_closure(class_Leds_clear, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_init, /* name */ be_nested_proto( 12, /* nstack */ @@ -674,7 +655,7 @@ be_local_closure(class_Leds_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ /* K0 */ be_nested_str(gpio), @@ -748,7 +729,6 @@ be_local_closure(class_Leds_init, /* name */ /******************************************************************** ** Solidified function: to_gamma ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_to_gamma, /* name */ be_nested_proto( 8, /* nstack */ @@ -757,7 +737,7 @@ be_local_closure(class_Leds_to_gamma, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(bri), @@ -786,7 +766,6 @@ be_local_closure(class_Leds_to_gamma, /* name */ /******************************************************************** ** Solidified function: show ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_show, /* name */ be_nested_proto( 4, /* nstack */ @@ -795,7 +774,7 @@ be_local_closure(class_Leds_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -817,7 +796,6 @@ be_local_closure(class_Leds_show, /* name */ /******************************************************************** ** Solidified function: pixel_count ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_pixel_count, /* name */ be_nested_proto( 4, /* nstack */ @@ -826,7 +804,7 @@ be_local_closure(class_Leds_pixel_count, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -847,7 +825,6 @@ be_local_closure(class_Leds_pixel_count, /* name */ /******************************************************************** ** Solidified function: get_bri ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_get_bri, /* name */ be_nested_proto( 2, /* nstack */ @@ -856,7 +833,7 @@ be_local_closure(class_Leds_get_bri, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(bri), @@ -875,7 +852,6 @@ be_local_closure(class_Leds_get_bri, /* name */ /******************************************************************** ** Solidified function: set_gamma ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_set_gamma, /* name */ be_nested_proto( 4, /* nstack */ @@ -884,7 +860,7 @@ be_local_closure(class_Leds_set_gamma, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(gamma), @@ -906,7 +882,6 @@ be_local_closure(class_Leds_set_gamma, /* name */ /******************************************************************** ** Solidified function: get_pixel_color ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_get_pixel_color, /* name */ be_nested_proto( 6, /* nstack */ @@ -915,7 +890,7 @@ be_local_closure(class_Leds_get_pixel_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -937,7 +912,6 @@ be_local_closure(class_Leds_get_pixel_color, /* name */ /******************************************************************** ** Solidified function: dirty ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_dirty, /* name */ be_nested_proto( 4, /* nstack */ @@ -946,7 +920,7 @@ be_local_closure(class_Leds_dirty, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -967,7 +941,6 @@ be_local_closure(class_Leds_dirty, /* name */ /******************************************************************** ** Solidified function: matrix ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_matrix, /* name */ be_nested_proto( 11, /* nstack */ @@ -976,7 +949,7 @@ be_local_closure(class_Leds_matrix, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_Leds), @@ -1008,7 +981,6 @@ be_local_closure(class_Leds_matrix, /* name */ /******************************************************************** ** Solidified function: pixel_offset ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_pixel_offset, /* name */ be_nested_proto( 1, /* nstack */ @@ -1017,7 +989,7 @@ be_local_closure(class_Leds_pixel_offset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_int(0), @@ -1035,7 +1007,6 @@ be_local_closure(class_Leds_pixel_offset, /* name */ /******************************************************************** ** Solidified function: clear_to ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_clear_to, /* name */ be_nested_proto( 10, /* nstack */ @@ -1044,7 +1015,7 @@ be_local_closure(class_Leds_clear_to, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(bri), @@ -1075,7 +1046,6 @@ be_local_closure(class_Leds_clear_to, /* name */ /******************************************************************** ** Solidified function: set_pixel_color ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_set_pixel_color, /* name */ be_nested_proto( 12, /* nstack */ @@ -1084,7 +1054,7 @@ be_local_closure(class_Leds_set_pixel_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(bri), @@ -1116,7 +1086,6 @@ be_local_closure(class_Leds_set_pixel_color, /* name */ /******************************************************************** ** Solidified function: pixel_size ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_pixel_size, /* name */ be_nested_proto( 4, /* nstack */ @@ -1125,7 +1094,7 @@ be_local_closure(class_Leds_pixel_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -1148,7 +1117,6 @@ extern const bclass be_class_Leds_matrix; /******************************************************************** ** Solidified function: clear_to ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_clear_to, /* name */ be_nested_proto( 10, /* nstack */ @@ -1157,7 +1125,7 @@ be_local_closure(class_Leds_matrix_clear_to, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1199,7 +1167,6 @@ be_local_closure(class_Leds_matrix_clear_to, /* name */ /******************************************************************** ** Solidified function: show ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_show, /* name */ be_nested_proto( 5, /* nstack */ @@ -1208,7 +1175,7 @@ be_local_closure(class_Leds_matrix_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(offset), @@ -1256,7 +1223,6 @@ be_local_closure(class_Leds_matrix_show, /* name */ /******************************************************************** ** Solidified function: pixel_size ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_pixel_size, /* name */ be_nested_proto( 2, /* nstack */ @@ -1265,7 +1231,7 @@ be_local_closure(class_Leds_matrix_pixel_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(pix_size), @@ -1284,7 +1250,6 @@ be_local_closure(class_Leds_matrix_pixel_size, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -1293,7 +1258,7 @@ be_local_closure(class_Leds_matrix_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1333,7 +1298,6 @@ be_local_closure(class_Leds_matrix_init, /* name */ /******************************************************************** ** Solidified function: set_pixel_color ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_set_pixel_color, /* name */ be_nested_proto( 9, /* nstack */ @@ -1342,7 +1306,7 @@ be_local_closure(class_Leds_matrix_set_pixel_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1375,7 +1339,6 @@ be_local_closure(class_Leds_matrix_set_pixel_color, /* name */ /******************************************************************** ** Solidified function: pixels_buffer ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_pixels_buffer, /* name */ be_nested_proto( 3, /* nstack */ @@ -1384,7 +1347,7 @@ be_local_closure(class_Leds_matrix_pixels_buffer, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1406,7 +1369,6 @@ be_local_closure(class_Leds_matrix_pixels_buffer, /* name */ /******************************************************************** ** Solidified function: dirty ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_dirty, /* name */ be_nested_proto( 3, /* nstack */ @@ -1415,7 +1377,7 @@ be_local_closure(class_Leds_matrix_dirty, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1437,7 +1399,6 @@ be_local_closure(class_Leds_matrix_dirty, /* name */ /******************************************************************** ** Solidified function: set_matrix_pixel_color ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */ be_nested_proto( 10, /* nstack */ @@ -1446,7 +1407,7 @@ be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1504,7 +1465,6 @@ be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */ /******************************************************************** ** Solidified function: is_dirty ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_is_dirty, /* name */ be_nested_proto( 3, /* nstack */ @@ -1513,7 +1473,7 @@ be_local_closure(class_Leds_matrix_is_dirty, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1535,7 +1495,6 @@ be_local_closure(class_Leds_matrix_is_dirty, /* name */ /******************************************************************** ** Solidified function: set_alternate ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_set_alternate, /* name */ be_nested_proto( 2, /* nstack */ @@ -1544,7 +1503,7 @@ be_local_closure(class_Leds_matrix_set_alternate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(alternate), @@ -1563,7 +1522,6 @@ be_local_closure(class_Leds_matrix_set_alternate, /* name */ /******************************************************************** ** Solidified function: begin ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_begin, /* name */ be_nested_proto( 1, /* nstack */ @@ -1572,7 +1530,7 @@ be_local_closure(class_Leds_matrix_begin, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_begin, @@ -1588,7 +1546,6 @@ be_local_closure(class_Leds_matrix_begin, /* name */ /******************************************************************** ** Solidified function: pixel_count ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_pixel_count, /* name */ be_nested_proto( 3, /* nstack */ @@ -1597,7 +1554,7 @@ be_local_closure(class_Leds_matrix_pixel_count, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(w), @@ -1619,7 +1576,6 @@ be_local_closure(class_Leds_matrix_pixel_count, /* name */ /******************************************************************** ** Solidified function: get_alternate ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_get_alternate, /* name */ be_nested_proto( 2, /* nstack */ @@ -1628,7 +1584,7 @@ be_local_closure(class_Leds_matrix_get_alternate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(alternate), @@ -1647,7 +1603,6 @@ be_local_closure(class_Leds_matrix_get_alternate, /* name */ /******************************************************************** ** Solidified function: pixel_offset ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_pixel_offset, /* name */ be_nested_proto( 2, /* nstack */ @@ -1656,7 +1611,7 @@ be_local_closure(class_Leds_matrix_pixel_offset, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(offset), @@ -1675,7 +1630,6 @@ be_local_closure(class_Leds_matrix_pixel_offset, /* name */ /******************************************************************** ** Solidified function: can_show ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_can_show, /* name */ be_nested_proto( 3, /* nstack */ @@ -1684,7 +1638,7 @@ be_local_closure(class_Leds_matrix_can_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1706,7 +1660,6 @@ be_local_closure(class_Leds_matrix_can_show, /* name */ /******************************************************************** ** Solidified function: set_bytes ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_set_bytes, /* name */ be_nested_proto( 13, /* nstack */ @@ -1715,7 +1668,7 @@ be_local_closure(class_Leds_matrix_set_bytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(h), @@ -1753,7 +1706,6 @@ be_local_closure(class_Leds_matrix_set_bytes, /* name */ /******************************************************************** ** Solidified function: get_pixel_color ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_get_pixel_color, /* name */ be_nested_proto( 5, /* nstack */ @@ -1762,7 +1714,7 @@ be_local_closure(class_Leds_matrix_get_pixel_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(strip), @@ -1787,7 +1739,6 @@ be_local_closure(class_Leds_matrix_get_pixel_color, /* name */ /******************************************************************** ** Solidified function: clear ********************************************************************/ -extern const bclass be_class_Leds_matrix; be_local_closure(class_Leds_matrix_clear, /* name */ be_nested_proto( 4, /* nstack */ @@ -1796,7 +1747,7 @@ be_local_closure(class_Leds_matrix_clear, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds_matrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(clear_to), @@ -1858,7 +1809,6 @@ be_local_class(Leds_matrix, /******************************************************************** ** Solidified function: create_matrix ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_create_matrix, /* name */ be_nested_proto( 10, /* nstack */ @@ -1867,7 +1817,7 @@ be_local_closure(class_Leds_create_matrix, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(0), @@ -1925,7 +1875,6 @@ be_local_closure(class_Leds_create_matrix, /* name */ /******************************************************************** ** Solidified function: get_gamma ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_get_gamma, /* name */ be_nested_proto( 2, /* nstack */ @@ -1934,7 +1883,7 @@ be_local_closure(class_Leds_get_gamma, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(gamma), @@ -1953,7 +1902,6 @@ be_local_closure(class_Leds_get_gamma, /* name */ /******************************************************************** ** Solidified function: is_dirty ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_is_dirty, /* name */ be_nested_proto( 4, /* nstack */ @@ -1962,7 +1910,7 @@ be_local_closure(class_Leds_is_dirty, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -1983,7 +1931,6 @@ be_local_closure(class_Leds_is_dirty, /* name */ /******************************************************************** ** Solidified function: can_show ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_can_show, /* name */ be_nested_proto( 4, /* nstack */ @@ -1992,7 +1939,7 @@ be_local_closure(class_Leds_can_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -2014,7 +1961,6 @@ be_local_closure(class_Leds_can_show, /* name */ /******************************************************************** ** Solidified function: assign_rmt ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_assign_rmt, /* name */ be_nested_proto( 9, /* nstack */ @@ -2023,7 +1969,7 @@ be_local_closure(class_Leds_assign_rmt, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_const_class(be_class_Leds), @@ -2128,7 +2074,6 @@ be_local_closure(class_Leds_assign_rmt, /* name */ /******************************************************************** ** Solidified function: ctor ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_ctor, /* name */ be_nested_proto( 12, /* nstack */ @@ -2137,7 +2082,7 @@ be_local_closure(class_Leds_ctor, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(call_native), @@ -2183,7 +2128,6 @@ be_local_closure(class_Leds_ctor, /* name */ /******************************************************************** ** Solidified function: pixels_buffer ********************************************************************/ -extern const bclass be_class_Leds; be_local_closure(class_Leds_pixels_buffer, /* name */ be_nested_proto( 8, /* nstack */ @@ -2192,7 +2136,7 @@ be_local_closure(class_Leds_pixels_buffer, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Leds, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(call_native), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h index f3c777748..11845e79b 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h @@ -15,7 +15,7 @@ be_local_closure(module_lv_tasmota_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[36]) { /* constants */ /* K0 */ be_nested_str_weak(lv), @@ -127,7 +127,6 @@ extern const bclass be_class_splash_runner; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_splash_runner; be_local_closure(class_splash_runner_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -136,7 +135,7 @@ be_local_closure(class_splash_runner_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_splash_runner, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -159,7 +158,6 @@ be_local_closure(class_splash_runner_init, /* name */ /******************************************************************** ** Solidified function: display ********************************************************************/ -extern const bclass be_class_splash_runner; be_local_closure(class_splash_runner_display, /* name */ be_nested_proto( 9, /* nstack */ @@ -168,7 +166,7 @@ be_local_closure(class_splash_runner_display, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_splash_runner, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(display), @@ -227,7 +225,7 @@ be_local_closure(module_lv_tasmota_splash_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(display), @@ -269,7 +267,7 @@ be_local_closure(module_lv_tasmota_splash_remove, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(lv), @@ -305,7 +303,7 @@ be_local_closure(module_lv_tasmota_splash, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[43]) { /* constants */ /* K0 */ be_nested_str_weak(display), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h index 2e91aeeb0..57edb8d6e 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h @@ -9,7 +9,6 @@ extern const bclass be_class_lv_clock; /******************************************************************** ** Solidified function: set_time ********************************************************************/ -extern const bclass be_class_lv_clock; be_local_closure(class_lv_clock_set_time, /* name */ be_nested_proto( 9, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_lv_clock_set_time, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_clock, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(hour), @@ -68,7 +67,6 @@ be_local_closure(class_lv_clock_set_time, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_lv_clock; be_local_closure(class_lv_clock_every_second, /* name */ be_nested_proto( 7, /* nstack */ @@ -77,7 +75,7 @@ be_local_closure(class_lv_clock_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_clock, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -119,7 +117,6 @@ be_local_closure(class_lv_clock_every_second, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_clock; be_local_closure(class_lv_clock_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -128,7 +125,7 @@ be_local_closure(class_lv_clock_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -138,7 +135,7 @@ be_local_closure(class_lv_clock_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(before_del), @@ -152,7 +149,6 @@ be_local_closure(class_lv_clock_init, /* name */ 0x80040000, // 0003 RET 1 R0 }) ), - &be_class_lv_clock, }), 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ @@ -218,7 +214,6 @@ be_local_closure(class_lv_clock_init, /* name */ /******************************************************************** ** Solidified function: before_del ********************************************************************/ -extern const bclass be_class_lv_clock; be_local_closure(class_lv_clock_before_del, /* name */ be_nested_proto( 4, /* nstack */ @@ -227,7 +222,7 @@ be_local_closure(class_lv_clock_before_del, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_clock, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -272,7 +267,6 @@ extern const bclass be_class_lv_clock_icon; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_clock_icon; be_local_closure(class_lv_clock_icon_init, /* name */ be_nested_proto( 10, /* nstack */ @@ -281,7 +275,7 @@ be_local_closure(class_lv_clock_icon_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_clock_icon, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -389,7 +383,6 @@ extern const bclass be_class_lv_signal_arcs; /******************************************************************** ** Solidified function: widget_event ********************************************************************/ -extern const bclass be_class_lv_signal_arcs; be_local_closure(class_lv_signal_arcs_widget_event, /* name */ be_nested_proto( 28, /* nstack */ @@ -398,7 +391,7 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -406,7 +399,7 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_int(1), @@ -422,7 +415,6 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */ 0x80000000, // 0005 RET 0 }) ), - &be_class_lv_signal_arcs, }), 1, /* has constants */ ( &(const bvalue[35]) { /* constants */ @@ -635,7 +627,6 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */ /******************************************************************** ** Solidified function: get_percentage ********************************************************************/ -extern const bclass be_class_lv_signal_arcs; be_local_closure(class_lv_signal_arcs_get_percentage, /* name */ be_nested_proto( 2, /* nstack */ @@ -644,7 +635,7 @@ be_local_closure(class_lv_signal_arcs_get_percentage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_signal_arcs, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(percentage), @@ -663,7 +654,6 @@ be_local_closure(class_lv_signal_arcs_get_percentage, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_signal_arcs; be_local_closure(class_lv_signal_arcs_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -672,7 +662,7 @@ be_local_closure(class_lv_signal_arcs_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_signal_arcs, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -736,7 +726,6 @@ be_local_closure(class_lv_signal_arcs_init, /* name */ /******************************************************************** ** Solidified function: set_percentage ********************************************************************/ -extern const bclass be_class_lv_signal_arcs; be_local_closure(class_lv_signal_arcs_set_percentage, /* name */ be_nested_proto( 5, /* nstack */ @@ -745,7 +734,7 @@ be_local_closure(class_lv_signal_arcs_set_percentage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_signal_arcs, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(percentage), @@ -804,7 +793,6 @@ extern const bclass be_class_lv_wifi_arcs; /******************************************************************** ** Solidified function: before_del ********************************************************************/ -extern const bclass be_class_lv_wifi_arcs; be_local_closure(class_lv_wifi_arcs_before_del, /* name */ be_nested_proto( 4, /* nstack */ @@ -813,7 +801,7 @@ be_local_closure(class_lv_wifi_arcs_before_del, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_arcs, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -836,7 +824,6 @@ be_local_closure(class_lv_wifi_arcs_before_del, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_wifi_arcs; be_local_closure(class_lv_wifi_arcs_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -845,7 +832,7 @@ be_local_closure(class_lv_wifi_arcs_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_arcs, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -880,7 +867,6 @@ be_local_closure(class_lv_wifi_arcs_init, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_lv_wifi_arcs; be_local_closure(class_lv_wifi_arcs_every_second, /* name */ be_nested_proto( 7, /* nstack */ @@ -889,7 +875,7 @@ be_local_closure(class_lv_wifi_arcs_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_arcs, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -953,7 +939,6 @@ extern const bclass be_class_lv_wifi_arcs_icon; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_wifi_arcs_icon; be_local_closure(class_lv_wifi_arcs_icon_init, /* name */ be_nested_proto( 10, /* nstack */ @@ -962,7 +947,7 @@ be_local_closure(class_lv_wifi_arcs_icon_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_arcs_icon, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1079,7 +1064,6 @@ extern const bclass be_class_lv_signal_bars; /******************************************************************** ** Solidified function: set_percentage ********************************************************************/ -extern const bclass be_class_lv_signal_bars; be_local_closure(class_lv_signal_bars_set_percentage, /* name */ be_nested_proto( 5, /* nstack */ @@ -1088,7 +1072,7 @@ be_local_closure(class_lv_signal_bars_set_percentage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_signal_bars, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(percentage), @@ -1125,7 +1109,6 @@ be_local_closure(class_lv_signal_bars_set_percentage, /* name */ /******************************************************************** ** Solidified function: get_percentage ********************************************************************/ -extern const bclass be_class_lv_signal_bars; be_local_closure(class_lv_signal_bars_get_percentage, /* name */ be_nested_proto( 2, /* nstack */ @@ -1134,7 +1117,7 @@ be_local_closure(class_lv_signal_bars_get_percentage, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_signal_bars, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(percentage), @@ -1153,7 +1136,6 @@ be_local_closure(class_lv_signal_bars_get_percentage, /* name */ /******************************************************************** ** Solidified function: widget_event ********************************************************************/ -extern const bclass be_class_lv_signal_bars; be_local_closure(class_lv_signal_bars_widget_event, /* name */ be_nested_proto( 22, /* nstack */ @@ -1162,7 +1144,7 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1170,7 +1152,7 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_int(1), @@ -1186,7 +1168,6 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x80000000, // 0005 RET 0 }) ), - &be_class_lv_signal_bars, }), 1, /* has constants */ ( &(const bvalue[33]) { /* constants */ @@ -1341,7 +1322,6 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_signal_bars; be_local_closure(class_lv_signal_bars_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -1350,7 +1330,7 @@ be_local_closure(class_lv_signal_bars_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_signal_bars, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1431,7 +1411,6 @@ extern const bclass be_class_lv_wifi_bars; /******************************************************************** ** Solidified function: before_del ********************************************************************/ -extern const bclass be_class_lv_wifi_bars; be_local_closure(class_lv_wifi_bars_before_del, /* name */ be_nested_proto( 4, /* nstack */ @@ -1440,7 +1419,7 @@ be_local_closure(class_lv_wifi_bars_before_del, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_bars, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -1463,7 +1442,6 @@ be_local_closure(class_lv_wifi_bars_before_del, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_wifi_bars; be_local_closure(class_lv_wifi_bars_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -1472,7 +1450,7 @@ be_local_closure(class_lv_wifi_bars_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_bars, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -1507,7 +1485,6 @@ be_local_closure(class_lv_wifi_bars_init, /* name */ /******************************************************************** ** Solidified function: every_second ********************************************************************/ -extern const bclass be_class_lv_wifi_bars; be_local_closure(class_lv_wifi_bars_every_second, /* name */ be_nested_proto( 7, /* nstack */ @@ -1516,7 +1493,7 @@ be_local_closure(class_lv_wifi_bars_every_second, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_bars, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -1580,7 +1557,6 @@ extern const bclass be_class_lv_wifi_bars_icon; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_wifi_bars_icon; be_local_closure(class_lv_wifi_bars_icon_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -1589,7 +1565,7 @@ be_local_closure(class_lv_wifi_bars_icon_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_wifi_bars_icon, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(init), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h index 267f65ad1..f3a39c672 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h @@ -9,7 +9,6 @@ extern const bclass be_class_MQTT; /******************************************************************** ** Solidified function: mqtt_data ********************************************************************/ -extern const bclass be_class_MQTT; be_local_closure(class_MQTT_mqtt_data, /* name */ be_nested_proto( 14, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_MQTT_mqtt_data, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_MQTT, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(topics), @@ -69,7 +68,6 @@ be_local_closure(class_MQTT_mqtt_data, /* name */ /******************************************************************** ** Solidified function: lazy_init ********************************************************************/ -extern const bclass be_class_MQTT; be_local_closure(class_MQTT_lazy_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -78,7 +76,7 @@ be_local_closure(class_MQTT_lazy_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 2, /* nstack */ 0, /* argc */ @@ -88,7 +86,7 @@ be_local_closure(class_MQTT_lazy_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(mqtt_connect), @@ -102,7 +100,6 @@ be_local_closure(class_MQTT_lazy_init, /* name */ 0x80040000, // 0003 RET 1 R0 }) ), - &be_class_MQTT, }), 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ @@ -142,7 +139,6 @@ be_local_closure(class_MQTT_lazy_init, /* name */ /******************************************************************** ** Solidified function: unsubscribe ********************************************************************/ -extern const bclass be_class_MQTT; be_local_closure(class_MQTT_unsubscribe, /* name */ be_nested_proto( 6, /* nstack */ @@ -151,7 +147,7 @@ be_local_closure(class_MQTT_unsubscribe, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_MQTT, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(topics), @@ -214,7 +210,6 @@ be_local_closure(class_MQTT_unsubscribe, /* name */ /******************************************************************** ** Solidified function: mqtt_connect ********************************************************************/ -extern const bclass be_class_MQTT; be_local_closure(class_MQTT_mqtt_connect, /* name */ be_nested_proto( 7, /* nstack */ @@ -223,7 +218,7 @@ be_local_closure(class_MQTT_mqtt_connect, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_MQTT, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -270,7 +265,6 @@ extern const bclass be_class_mqtt_listener; /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_mqtt_listener; be_local_closure(class_mqtt_listener_tostring, /* name */ be_nested_proto( 5, /* nstack */ @@ -279,7 +273,7 @@ be_local_closure(class_mqtt_listener_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_mqtt_listener, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X27_X25s_X27_X29_X3E), @@ -305,7 +299,6 @@ be_local_closure(class_mqtt_listener_tostring, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_mqtt_listener; be_local_closure(class_mqtt_listener_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -314,7 +307,7 @@ be_local_closure(class_mqtt_listener_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_mqtt_listener, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(string), @@ -345,7 +338,6 @@ be_local_closure(class_mqtt_listener_init, /* name */ /******************************************************************** ** Solidified function: mqtt_data ********************************************************************/ -extern const bclass be_class_mqtt_listener; be_local_closure(class_mqtt_listener_mqtt_data, /* name */ be_nested_proto( 17, /* nstack */ @@ -354,7 +346,7 @@ be_local_closure(class_mqtt_listener_mqtt_data, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_mqtt_listener, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(string), @@ -450,7 +442,6 @@ be_local_class(mqtt_listener, /******************************************************************** ** Solidified function: mqtt_listener_class ********************************************************************/ -extern const bclass be_class_MQTT; be_local_closure(class_MQTT_mqtt_listener_class, /* name */ be_nested_proto( 3, /* nstack */ @@ -459,7 +450,7 @@ be_local_closure(class_MQTT_mqtt_listener_class, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_MQTT, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_class(be_class_mqtt_listener), @@ -480,7 +471,6 @@ be_local_closure(class_MQTT_mqtt_listener_class, /* name */ /******************************************************************** ** Solidified function: subscribe ********************************************************************/ -extern const bclass be_class_MQTT; be_local_closure(class_MQTT_subscribe, /* name */ be_nested_proto( 10, /* nstack */ @@ -489,7 +479,7 @@ be_local_closure(class_MQTT_subscribe, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_MQTT, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str(lazy_init), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h index c3889218d..3ed1d0601 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h @@ -9,7 +9,6 @@ extern const bclass be_class_Partition_otadata; /******************************************************************** ** Solidified function: save ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata_save, /* name */ be_nested_proto( 11, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Partition_otadata_save, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str(flash), @@ -98,7 +97,6 @@ be_local_closure(class_Partition_otadata_save, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata_tostring, /* name */ be_nested_proto( 7, /* nstack */ @@ -107,7 +105,7 @@ be_local_closure(class_Partition_otadata_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(_X3Cinstance_X3A_X20Partition_otadata_X28ota_active_X3A_X25s_X2C_X20ota_seq_X3D_X5B_X25d_X2C_X25d_X5D_X2C_X20ota_max_X3D_X25d_X29_X3E), @@ -147,7 +145,6 @@ be_local_closure(class_Partition_otadata_tostring, /* name */ /******************************************************************** ** Solidified function: _validate ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata__validate, /* name */ be_nested_proto( 3, /* nstack */ @@ -156,7 +153,7 @@ be_local_closure(class_Partition_otadata__validate, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str(active_otadata), @@ -214,7 +211,6 @@ be_local_closure(class_Partition_otadata__validate, /* name */ /******************************************************************** ** Solidified function: set_ota_max ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata_set_ota_max, /* name */ be_nested_proto( 2, /* nstack */ @@ -223,7 +219,7 @@ be_local_closure(class_Partition_otadata_set_ota_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(maxota), @@ -242,7 +238,6 @@ be_local_closure(class_Partition_otadata_set_ota_max, /* name */ /******************************************************************** ** Solidified function: load ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata_load, /* name */ be_nested_proto( 9, /* nstack */ @@ -251,7 +246,7 @@ be_local_closure(class_Partition_otadata_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(flash), @@ -324,7 +319,6 @@ be_local_closure(class_Partition_otadata_load, /* name */ /******************************************************************** ** Solidified function: crc32_ota_seq ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */ be_nested_proto( 10, /* nstack */ @@ -333,7 +327,7 @@ be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_Partition_otadata), @@ -365,7 +359,6 @@ be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */ /******************************************************************** ** Solidified function: set_active ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata_set_active, /* name */ be_nested_proto( 7, /* nstack */ @@ -374,7 +367,7 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_int(0), @@ -437,7 +430,6 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Partition_otadata; be_local_closure(class_Partition_otadata_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -446,7 +438,7 @@ be_local_closure(class_Partition_otadata_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_otadata, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(maxota), @@ -515,7 +507,6 @@ extern const bclass be_class_Partition; /******************************************************************** ** Solidified function: save ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_save, /* name */ be_nested_proto( 7, /* nstack */ @@ -524,7 +515,7 @@ be_local_closure(class_Partition_save, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(flash), @@ -561,7 +552,6 @@ be_local_closure(class_Partition_save, /* name */ /******************************************************************** ** Solidified function: load ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_load, /* name */ be_nested_proto( 6, /* nstack */ @@ -570,7 +560,7 @@ be_local_closure(class_Partition_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(flash), @@ -596,7 +586,6 @@ be_local_closure(class_Partition_load, /* name */ /******************************************************************** ** Solidified function: get_active ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_get_active, /* name */ be_nested_proto( 2, /* nstack */ @@ -605,7 +594,7 @@ be_local_closure(class_Partition_get_active, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(otadata), @@ -626,7 +615,6 @@ be_local_closure(class_Partition_get_active, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_init, /* name */ be_nested_proto( 3, /* nstack */ @@ -635,7 +623,7 @@ be_local_closure(class_Partition_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(slots), @@ -665,7 +653,6 @@ be_local_closure(class_Partition_init, /* name */ /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_parse, /* name */ be_nested_proto( 9, /* nstack */ @@ -674,7 +661,7 @@ be_local_closure(class_Partition_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_const_int(0), @@ -758,7 +745,6 @@ be_local_closure(class_Partition_parse, /* name */ /******************************************************************** ** Solidified function: get_max_flash_size_k ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_get_max_flash_size_k, /* name */ be_nested_proto( 6, /* nstack */ @@ -767,7 +753,7 @@ be_local_closure(class_Partition_get_max_flash_size_k, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -809,7 +795,6 @@ be_local_closure(class_Partition_get_max_flash_size_k, /* name */ /******************************************************************** ** Solidified function: resize_max_flash_size_k ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ be_nested_proto( 16, /* nstack */ @@ -818,7 +803,7 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -944,7 +929,6 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ /******************************************************************** ** Solidified function: get_flash_definition_sector ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_get_flash_definition_sector, /* name */ be_nested_proto( 9, /* nstack */ @@ -953,7 +937,7 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_const_class(be_class_Partition), @@ -1002,7 +986,6 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */ /******************************************************************** ** Solidified function: resize_fs_to_max ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_resize_fs_to_max, /* name */ be_nested_proto( 9, /* nstack */ @@ -1011,7 +994,7 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str(get_unallocated_k), @@ -1093,7 +1076,6 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ /******************************************************************** ** Solidified function: switch_factory ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_switch_factory, /* name */ be_nested_proto( 6, /* nstack */ @@ -1102,7 +1084,7 @@ be_local_closure(class_Partition_switch_factory, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(flash), @@ -1125,7 +1107,6 @@ be_local_closure(class_Partition_switch_factory, /* name */ /******************************************************************** ** Solidified function: load_otadata ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_load_otadata, /* name */ be_nested_proto( 8, /* nstack */ @@ -1134,7 +1115,7 @@ be_local_closure(class_Partition_load_otadata, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(ota_max), @@ -1191,7 +1172,6 @@ be_local_closure(class_Partition_load_otadata, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_tostring, /* name */ be_nested_proto( 6, /* nstack */ @@ -1200,7 +1180,7 @@ be_local_closure(class_Partition_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A), @@ -1248,7 +1228,6 @@ be_local_closure(class_Partition_tostring, /* name */ /******************************************************************** ** Solidified function: has_factory ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_has_factory, /* name */ be_nested_proto( 3, /* nstack */ @@ -1257,7 +1236,7 @@ be_local_closure(class_Partition_has_factory, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(get_factory_slot), @@ -1279,7 +1258,6 @@ be_local_closure(class_Partition_has_factory, /* name */ /******************************************************************** ** Solidified function: tobytes ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_tobytes, /* name */ be_nested_proto( 6, /* nstack */ @@ -1288,7 +1266,7 @@ be_local_closure(class_Partition_tobytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(slots), @@ -1348,7 +1326,6 @@ be_local_closure(class_Partition_tobytes, /* name */ /******************************************************************** ** Solidified function: ota_max ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_ota_max, /* name */ be_nested_proto( 6, /* nstack */ @@ -1357,7 +1334,7 @@ be_local_closure(class_Partition_ota_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(slots), @@ -1410,7 +1387,6 @@ be_local_closure(class_Partition_ota_max, /* name */ /******************************************************************** ** Solidified function: invalidate_spiffs ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_invalidate_spiffs, /* name */ be_nested_proto( 8, /* nstack */ @@ -1419,7 +1395,7 @@ be_local_closure(class_Partition_invalidate_spiffs, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(flash), @@ -1465,7 +1441,6 @@ be_local_closure(class_Partition_invalidate_spiffs, /* name */ /******************************************************************** ** Solidified function: get_factory_slot ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_get_factory_slot, /* name */ be_nested_proto( 5, /* nstack */ @@ -1474,7 +1449,7 @@ be_local_closure(class_Partition_get_factory_slot, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(slots), @@ -1509,7 +1484,6 @@ be_local_closure(class_Partition_get_factory_slot, /* name */ /******************************************************************** ** Solidified function: set_active ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_set_active, /* name */ be_nested_proto( 6, /* nstack */ @@ -1518,7 +1492,7 @@ be_local_closure(class_Partition_set_active, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_const_int(0), @@ -1558,7 +1532,6 @@ be_local_closure(class_Partition_set_active, /* name */ /******************************************************************** ** Solidified function: get_unallocated_k ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_get_unallocated_k, /* name */ be_nested_proto( 5, /* nstack */ @@ -1567,7 +1540,7 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(slots), @@ -1607,7 +1580,6 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ /******************************************************************** ** Solidified function: get_ota_slot ********************************************************************/ -extern const bclass be_class_Partition; be_local_closure(class_Partition_get_ota_slot, /* name */ be_nested_proto( 6, /* nstack */ @@ -1616,7 +1588,7 @@ be_local_closure(class_Partition_get_ota_slot, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(slots), @@ -1691,7 +1663,6 @@ extern const bclass be_class_Partition_info; /******************************************************************** ** Solidified function: is_factory ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_is_factory, /* name */ be_nested_proto( 2, /* nstack */ @@ -1700,7 +1671,7 @@ be_local_closure(class_Partition_info_is_factory, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(type), @@ -1728,7 +1699,6 @@ be_local_closure(class_Partition_info_is_factory, /* name */ /******************************************************************** ** Solidified function: type_to_string ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_type_to_string, /* name */ be_nested_proto( 4, /* nstack */ @@ -1737,7 +1707,7 @@ be_local_closure(class_Partition_info_type_to_string, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(type), @@ -1773,7 +1743,6 @@ be_local_closure(class_Partition_info_type_to_string, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -1782,7 +1751,7 @@ be_local_closure(class_Partition_info_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str(type), @@ -1874,7 +1843,6 @@ be_local_closure(class_Partition_info_init, /* name */ /******************************************************************** ** Solidified function: subtype_to_string ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_subtype_to_string, /* name */ be_nested_proto( 4, /* nstack */ @@ -1883,7 +1851,7 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str(type), @@ -2005,7 +1973,6 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_tostring, /* name */ be_nested_proto( 13, /* nstack */ @@ -2014,7 +1981,7 @@ be_local_closure(class_Partition_info_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(type_to_string), @@ -2068,7 +2035,6 @@ be_local_closure(class_Partition_info_tostring, /* name */ /******************************************************************** ** Solidified function: is_ota ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_is_ota, /* name */ be_nested_proto( 3, /* nstack */ @@ -2077,7 +2043,7 @@ be_local_closure(class_Partition_info_is_ota, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(subtype), @@ -2110,7 +2076,6 @@ be_local_closure(class_Partition_info_is_ota, /* name */ /******************************************************************** ** Solidified function: tobytes ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_tobytes, /* name */ be_nested_proto( 7, /* nstack */ @@ -2119,7 +2084,7 @@ be_local_closure(class_Partition_info_tobytes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(AA50), @@ -2186,7 +2151,6 @@ be_local_closure(class_Partition_info_tobytes, /* name */ /******************************************************************** ** Solidified function: remove_trailing_zeroes ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */ be_nested_proto( 8, /* nstack */ @@ -2195,7 +2159,7 @@ be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_Partition_info), @@ -2239,7 +2203,6 @@ be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */ /******************************************************************** ** Solidified function: is_spiffs ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_is_spiffs, /* name */ be_nested_proto( 3, /* nstack */ @@ -2248,7 +2211,7 @@ be_local_closure(class_Partition_info_is_spiffs, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(type), @@ -2277,7 +2240,6 @@ be_local_closure(class_Partition_info_is_spiffs, /* name */ /******************************************************************** ** Solidified function: get_image_size ********************************************************************/ -extern const bclass be_class_Partition_info; be_local_closure(class_Partition_info_get_image_size, /* name */ be_nested_proto( 14, /* nstack */ @@ -2286,7 +2248,7 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Partition_info, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str(flash), @@ -2437,7 +2399,7 @@ be_local_closure(init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(global), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h index 4308a489d..7bf2a9f2d 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h @@ -15,7 +15,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(Persist), @@ -37,7 +37,6 @@ extern const bclass be_class_Persist; /******************************************************************** ** Solidified function: json_fdump_map ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_json_fdump_map, /* name */ be_nested_proto( 13, /* nstack */ @@ -46,7 +45,7 @@ be_local_closure(class_Persist_json_fdump_map, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str(json), @@ -113,7 +112,6 @@ be_local_closure(class_Persist_json_fdump_map, /* name */ /******************************************************************** ** Solidified function: json_fdump_any ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_json_fdump_any, /* name */ be_nested_proto( 9, /* nstack */ @@ -122,7 +120,7 @@ be_local_closure(class_Persist_json_fdump_any, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(json), @@ -170,7 +168,6 @@ be_local_closure(class_Persist_json_fdump_any, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_init, /* name */ be_nested_proto( 3, /* nstack */ @@ -179,7 +176,7 @@ be_local_closure(class_Persist_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_p), @@ -206,7 +203,6 @@ be_local_closure(class_Persist_init, /* name */ /******************************************************************** ** Solidified function: save ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_save, /* name */ be_nested_proto( 7, /* nstack */ @@ -215,7 +211,7 @@ be_local_closure(class_Persist_save, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str(_dirty), @@ -288,7 +284,6 @@ be_local_closure(class_Persist_save, /* name */ /******************************************************************** ** Solidified function: zero ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_zero, /* name */ be_nested_proto( 2, /* nstack */ @@ -297,7 +292,7 @@ be_local_closure(class_Persist_zero, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_p), @@ -321,7 +316,6 @@ be_local_closure(class_Persist_zero, /* name */ /******************************************************************** ** Solidified function: find ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_find, /* name */ be_nested_proto( 7, /* nstack */ @@ -330,7 +324,7 @@ be_local_closure(class_Persist_find, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_p), @@ -354,7 +348,6 @@ be_local_closure(class_Persist_find, /* name */ /******************************************************************** ** Solidified function: has ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_has, /* name */ be_nested_proto( 5, /* nstack */ @@ -363,7 +356,7 @@ be_local_closure(class_Persist_has, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_p), @@ -386,7 +379,6 @@ be_local_closure(class_Persist_has, /* name */ /******************************************************************** ** Solidified function: json_fdump_list ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_json_fdump_list, /* name */ be_nested_proto( 9, /* nstack */ @@ -395,7 +387,7 @@ be_local_closure(class_Persist_json_fdump_list, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(json), @@ -444,7 +436,6 @@ be_local_closure(class_Persist_json_fdump_list, /* name */ /******************************************************************** ** Solidified function: member ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_member, /* name */ be_nested_proto( 5, /* nstack */ @@ -453,7 +444,7 @@ be_local_closure(class_Persist_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_p), @@ -476,7 +467,6 @@ be_local_closure(class_Persist_member, /* name */ /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_setmember, /* name */ be_nested_proto( 4, /* nstack */ @@ -485,7 +475,7 @@ be_local_closure(class_Persist_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_p), @@ -508,7 +498,6 @@ be_local_closure(class_Persist_setmember, /* name */ /******************************************************************** ** Solidified function: contains ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_contains, /* name */ be_nested_proto( 5, /* nstack */ @@ -517,7 +506,7 @@ be_local_closure(class_Persist_contains, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_p), @@ -540,7 +529,6 @@ be_local_closure(class_Persist_contains, /* name */ /******************************************************************** ** Solidified function: json_fdump ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_json_fdump, /* name */ be_nested_proto( 7, /* nstack */ @@ -549,7 +537,7 @@ be_local_closure(class_Persist_json_fdump, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(json), @@ -583,7 +571,6 @@ be_local_closure(class_Persist_json_fdump, /* name */ /******************************************************************** ** Solidified function: load ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_load, /* name */ be_nested_proto( 9, /* nstack */ @@ -592,7 +579,7 @@ be_local_closure(class_Persist_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(json), @@ -669,7 +656,6 @@ be_local_closure(class_Persist_load, /* name */ /******************************************************************** ** Solidified function: remove ********************************************************************/ -extern const bclass be_class_Persist; be_local_closure(class_Persist_remove, /* name */ be_nested_proto( 5, /* nstack */ @@ -678,7 +664,7 @@ be_local_closure(class_Persist_remove, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Persist, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_p), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h index 21e5ac374..01d239710 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h @@ -15,7 +15,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(global), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h index 727fcf3a9..d480a2929 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h @@ -9,7 +9,6 @@ extern const bclass be_class_Rule_Matcher_Key; /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Key; be_local_closure(class_Rule_Matcher_Key_tostring, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Rule_Matcher_Key_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Key, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_X3CMatcher_X20key_X3D_X27), @@ -43,7 +42,6 @@ be_local_closure(class_Rule_Matcher_Key_tostring, /* name */ /******************************************************************** ** Solidified function: find_key_i ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Key; be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */ be_nested_proto( 11, /* nstack */ @@ -52,7 +50,7 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Key, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_class(be_class_Rule_Matcher_Key), @@ -104,7 +102,6 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */ /******************************************************************** ** Solidified function: match ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Key; be_local_closure(class_Rule_Matcher_Key_match, /* name */ be_nested_proto( 6, /* nstack */ @@ -113,7 +110,7 @@ be_local_closure(class_Rule_Matcher_Key_match, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Key, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(find_key_i), @@ -154,7 +151,6 @@ be_local_closure(class_Rule_Matcher_Key_match, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Key; be_local_closure(class_Rule_Matcher_Key_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -163,7 +159,7 @@ be_local_closure(class_Rule_Matcher_Key_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Key, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(name), @@ -201,7 +197,6 @@ extern const bclass be_class_Rule_Matcher_Wildcard; /******************************************************************** ** Solidified function: match ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Wildcard; be_local_closure(class_Rule_Matcher_Wildcard_match, /* name */ be_nested_proto( 5, /* nstack */ @@ -210,7 +205,7 @@ be_local_closure(class_Rule_Matcher_Wildcard_match, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Wildcard, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_const_int(0), @@ -251,7 +246,6 @@ be_local_closure(class_Rule_Matcher_Wildcard_match, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Wildcard; be_local_closure(class_Rule_Matcher_Wildcard_tostring, /* name */ be_nested_proto( 1, /* nstack */ @@ -260,7 +254,7 @@ be_local_closure(class_Rule_Matcher_Wildcard_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Wildcard, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(_X3CMatcher_X20any_X3E), @@ -294,7 +288,6 @@ extern const bclass be_class_Rule_Matcher_Operator; /******************************************************************** ** Solidified function: match ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Operator; be_local_closure(class_Rule_Matcher_Operator_match, /* name */ be_nested_proto( 7, /* nstack */ @@ -303,7 +296,7 @@ be_local_closure(class_Rule_Matcher_Operator_match, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Operator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(int), @@ -344,7 +337,6 @@ be_local_closure(class_Rule_Matcher_Operator_match, /* name */ /******************************************************************** ** Solidified function: op_parse ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Operator; be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ be_nested_proto( 22, /* nstack */ @@ -353,7 +345,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[14]) { + ( &(const struct bproto*[13]) { be_nested_proto( 7, /* nstack */ 2, /* argc */ @@ -361,7 +353,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -389,7 +381,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -417,7 +409,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -445,7 +437,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -472,7 +464,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -499,7 +491,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -526,7 +518,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_op_eq, @@ -546,7 +538,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_op_neq, @@ -566,7 +558,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_op_gt, @@ -586,7 +578,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_op_gte, @@ -606,7 +598,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_op_lt, @@ -626,7 +618,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ &be_const_str_op_lte, @@ -646,7 +638,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_int(0), @@ -662,7 +654,6 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0x80040400, // 0005 RET 1 R2 }) ), - &be_class_Rule_Matcher_Operator, }), 1, /* has constants */ ( &(const bvalue[23]) { /* constants */ @@ -799,7 +790,6 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Operator; be_local_closure(class_Rule_Matcher_Operator_tostring, /* name */ be_nested_proto( 4, /* nstack */ @@ -808,7 +798,7 @@ be_local_closure(class_Rule_Matcher_Operator_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Operator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(op_value), @@ -857,7 +847,6 @@ be_local_closure(class_Rule_Matcher_Operator_tostring, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Operator; be_local_closure(class_Rule_Matcher_Operator_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -866,7 +855,7 @@ be_local_closure(class_Rule_Matcher_Operator_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Operator, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(op_parse), @@ -909,7 +898,6 @@ extern const bclass be_class_Rule_Matcher_Array; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Array; be_local_closure(class_Rule_Matcher_Array_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -918,7 +906,7 @@ be_local_closure(class_Rule_Matcher_Array_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Array, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(index), @@ -937,7 +925,6 @@ be_local_closure(class_Rule_Matcher_Array_init, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Array; be_local_closure(class_Rule_Matcher_Array_tostring, /* name */ be_nested_proto( 3, /* nstack */ @@ -946,7 +933,7 @@ be_local_closure(class_Rule_Matcher_Array_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Array, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_X3CMatcher_X20_X5B), @@ -971,7 +958,6 @@ be_local_closure(class_Rule_Matcher_Array_tostring, /* name */ /******************************************************************** ** Solidified function: match ********************************************************************/ -extern const bclass be_class_Rule_Matcher_Array; be_local_closure(class_Rule_Matcher_Array_match, /* name */ be_nested_proto( 5, /* nstack */ @@ -980,7 +966,7 @@ be_local_closure(class_Rule_Matcher_Array_match, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_Array, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(index), @@ -1045,7 +1031,6 @@ extern const bclass be_class_Rule_Matcher_AND_List; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Rule_Matcher_AND_List; be_local_closure(class_Rule_Matcher_AND_List_init, /* name */ be_nested_proto( 2, /* nstack */ @@ -1054,7 +1039,7 @@ be_local_closure(class_Rule_Matcher_AND_List_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_AND_List, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(and_list), @@ -1073,7 +1058,6 @@ be_local_closure(class_Rule_Matcher_AND_List_init, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Rule_Matcher_AND_List; be_local_closure(class_Rule_Matcher_AND_List_tostring, /* name */ be_nested_proto( 3, /* nstack */ @@ -1082,7 +1066,7 @@ be_local_closure(class_Rule_Matcher_AND_List_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_AND_List, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_X3CMatcher_AND_List_X20), @@ -1107,7 +1091,6 @@ be_local_closure(class_Rule_Matcher_AND_List_tostring, /* name */ /******************************************************************** ** Solidified function: match ********************************************************************/ -extern const bclass be_class_Rule_Matcher_AND_List; be_local_closure(class_Rule_Matcher_AND_List_match, /* name */ be_nested_proto( 9, /* nstack */ @@ -1116,7 +1099,7 @@ be_local_closure(class_Rule_Matcher_AND_List_match, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher_AND_List, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(0), @@ -1179,7 +1162,6 @@ extern const bclass be_class_Rule_Matcher; /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Rule_Matcher; be_local_closure(class_Rule_Matcher_tostring, /* name */ be_nested_proto( 3, /* nstack */ @@ -1188,7 +1170,7 @@ be_local_closure(class_Rule_Matcher_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(matchers), @@ -1209,7 +1191,6 @@ be_local_closure(class_Rule_Matcher_tostring, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Rule_Matcher; be_local_closure(class_Rule_Matcher_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -1218,7 +1199,7 @@ be_local_closure(class_Rule_Matcher_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(rule), @@ -1241,7 +1222,6 @@ be_local_closure(class_Rule_Matcher_init, /* name */ /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_Rule_Matcher; be_local_closure(class_Rule_Matcher_parse, /* name */ be_nested_proto( 20, /* nstack */ @@ -1250,7 +1230,7 @@ be_local_closure(class_Rule_Matcher_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[26]) { /* constants */ /* K0 */ be_const_class(be_class_Rule_Matcher), @@ -1439,7 +1419,6 @@ be_local_closure(class_Rule_Matcher_parse, /* name */ /******************************************************************** ** Solidified function: match ********************************************************************/ -extern const bclass be_class_Rule_Matcher; be_local_closure(class_Rule_Matcher_match, /* name */ be_nested_proto( 7, /* nstack */ @@ -1448,7 +1427,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Rule_Matcher, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(matchers), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h index 3420576b9..98280a24d 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h @@ -9,7 +9,6 @@ extern const bclass be_class_Tapp; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Tapp; be_local_closure(class_Tapp_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Tapp_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tapp, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(tasmota), @@ -41,7 +40,6 @@ be_local_closure(class_Tapp_init, /* name */ /******************************************************************** ** Solidified function: autoexec ********************************************************************/ -extern const bclass be_class_Tapp; be_local_closure(class_Tapp_autoexec, /* name */ be_nested_proto( 11, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_Tapp_autoexec, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tapp, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str(path), @@ -136,7 +134,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_const_class(be_class_Tapp), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h index ca4ace0ee..bdbd9545a 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h @@ -9,7 +9,6 @@ extern const bclass be_class_Tasmota; /******************************************************************** ** Solidified function: cmd ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_cmd, /* name */ be_nested_proto( 8, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Tasmota_cmd, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str(cmd_res), @@ -68,7 +67,6 @@ be_local_closure(class_Tasmota_cmd, /* name */ /******************************************************************** ** Solidified function: check_not_method ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_check_not_method, /* name */ be_nested_proto( 6, /* nstack */ @@ -77,7 +75,7 @@ be_local_closure(class_Tasmota_check_not_method, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(introspect), @@ -114,7 +112,6 @@ be_local_closure(class_Tasmota_check_not_method, /* name */ /******************************************************************** ** Solidified function: remove_driver ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_remove_driver, /* name */ be_nested_proto( 6, /* nstack */ @@ -123,7 +120,7 @@ be_local_closure(class_Tasmota_remove_driver, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_drivers), @@ -156,7 +153,6 @@ be_local_closure(class_Tasmota_remove_driver, /* name */ /******************************************************************** ** Solidified function: event ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_event, /* name */ be_nested_proto( 19, /* nstack */ @@ -165,7 +161,7 @@ be_local_closure(class_Tasmota_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[25]) { /* constants */ /* K0 */ be_nested_str(introspect), @@ -314,7 +310,6 @@ be_local_closure(class_Tasmota_event, /* name */ /******************************************************************** ** Solidified function: exec_cmd ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_exec_cmd, /* name */ be_nested_proto( 12, /* nstack */ @@ -323,7 +318,7 @@ be_local_closure(class_Tasmota_exec_cmd, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(_ccmd), @@ -371,7 +366,6 @@ be_local_closure(class_Tasmota_exec_cmd, /* name */ /******************************************************************** ** Solidified function: set_light ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_set_light, /* name */ be_nested_proto( 8, /* nstack */ @@ -380,7 +374,7 @@ be_local_closure(class_Tasmota_set_light, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), @@ -417,7 +411,6 @@ be_local_closure(class_Tasmota_set_light, /* name */ /******************************************************************** ** Solidified function: run_cron ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_run_cron, /* name */ be_nested_proto( 9, /* nstack */ @@ -426,7 +419,7 @@ be_local_closure(class_Tasmota_run_cron, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str(_crons), @@ -486,7 +479,6 @@ be_local_closure(class_Tasmota_run_cron, /* name */ /******************************************************************** ** Solidified function: set_timer ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_set_timer, /* name */ be_nested_proto( 10, /* nstack */ @@ -495,7 +487,7 @@ be_local_closure(class_Tasmota_set_timer, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(check_not_method), @@ -537,7 +529,6 @@ be_local_closure(class_Tasmota_set_timer, /* name */ /******************************************************************** ** Solidified function: add_driver ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_add_driver, /* name */ be_nested_proto( 5, /* nstack */ @@ -546,7 +537,7 @@ be_local_closure(class_Tasmota_add_driver, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(instance), @@ -593,7 +584,6 @@ be_local_closure(class_Tasmota_add_driver, /* name */ /******************************************************************** ** Solidified function: next_cron ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_next_cron, /* name */ be_nested_proto( 6, /* nstack */ @@ -602,7 +592,7 @@ be_local_closure(class_Tasmota_next_cron, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(_crons), @@ -641,7 +631,6 @@ be_local_closure(class_Tasmota_next_cron, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -650,7 +639,7 @@ be_local_closure(class_Tasmota_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 10, /* nstack */ 4, /* argc */ @@ -660,7 +649,7 @@ be_local_closure(class_Tasmota_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str(urlfetch_cmd), @@ -678,7 +667,6 @@ be_local_closure(class_Tasmota_init, /* name */ 0x80000000, // 0007 RET 0 }) ), - &be_class_Tasmota, }), 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ @@ -747,7 +735,6 @@ be_local_closure(class_Tasmota_init, /* name */ /******************************************************************** ** Solidified function: add_rule ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_add_rule, /* name */ be_nested_proto( 10, /* nstack */ @@ -756,7 +743,7 @@ be_local_closure(class_Tasmota_add_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(check_not_method), @@ -810,7 +797,6 @@ be_local_closure(class_Tasmota_add_rule, /* name */ /******************************************************************** ** Solidified function: try_rule ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_try_rule, /* name */ be_nested_proto( 9, /* nstack */ @@ -819,7 +805,7 @@ be_local_closure(class_Tasmota_try_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(match), @@ -855,7 +841,6 @@ be_local_closure(class_Tasmota_try_rule, /* name */ /******************************************************************** ** Solidified function: find_op ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_find_op, /* name */ be_nested_proto( 7, /* nstack */ @@ -864,7 +849,7 @@ be_local_closure(class_Tasmota_find_op, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(_find_op), @@ -915,7 +900,6 @@ be_local_closure(class_Tasmota_find_op, /* name */ /******************************************************************** ** Solidified function: remove_cmd ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_remove_cmd, /* name */ be_nested_proto( 5, /* nstack */ @@ -924,7 +908,7 @@ be_local_closure(class_Tasmota_remove_cmd, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(_ccmd), @@ -949,7 +933,6 @@ be_local_closure(class_Tasmota_remove_cmd, /* name */ /******************************************************************** ** Solidified function: gc ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_gc, /* name */ be_nested_proto( 4, /* nstack */ @@ -958,7 +941,7 @@ be_local_closure(class_Tasmota_gc, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(gc), @@ -983,7 +966,6 @@ be_local_closure(class_Tasmota_gc, /* name */ /******************************************************************** ** Solidified function: find_list_i ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_find_list_i, /* name */ be_nested_proto( 9, /* nstack */ @@ -992,7 +974,7 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(string), @@ -1032,7 +1014,6 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ /******************************************************************** ** Solidified function: remove_fast_loop ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_remove_fast_loop, /* name */ be_nested_proto( 6, /* nstack */ @@ -1041,7 +1022,7 @@ be_local_closure(class_Tasmota_remove_fast_loop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_fl), @@ -1075,7 +1056,6 @@ be_local_closure(class_Tasmota_remove_fast_loop, /* name */ /******************************************************************** ** Solidified function: exec_rules ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_exec_rules, /* name */ be_nested_proto( 14, /* nstack */ @@ -1084,7 +1064,7 @@ be_local_closure(class_Tasmota_exec_rules, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(cmd_res), @@ -1162,7 +1142,6 @@ be_local_closure(class_Tasmota_exec_rules, /* name */ /******************************************************************** ** Solidified function: run_deferred ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_run_deferred, /* name */ be_nested_proto( 7, /* nstack */ @@ -1171,7 +1150,7 @@ be_local_closure(class_Tasmota_run_deferred, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(_timers), @@ -1220,7 +1199,6 @@ be_local_closure(class_Tasmota_run_deferred, /* name */ /******************************************************************** ** Solidified function: compile ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_compile, /* name */ be_nested_proto( 12, /* nstack */ @@ -1229,7 +1207,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str(string), @@ -1343,7 +1321,6 @@ be_local_closure(class_Tasmota_compile, /* name */ /******************************************************************** ** Solidified function: remove_timer ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_remove_timer, /* name */ be_nested_proto( 7, /* nstack */ @@ -1352,7 +1329,7 @@ be_local_closure(class_Tasmota_remove_timer, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(_timers), @@ -1392,7 +1369,6 @@ be_local_closure(class_Tasmota_remove_timer, /* name */ /******************************************************************** ** Solidified function: remove_rule ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_remove_rule, /* name */ be_nested_proto( 7, /* nstack */ @@ -1401,7 +1377,7 @@ be_local_closure(class_Tasmota_remove_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str(_rules), @@ -1451,7 +1427,6 @@ be_local_closure(class_Tasmota_remove_rule, /* name */ /******************************************************************** ** Solidified function: exec_tele ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_exec_tele, /* name */ be_nested_proto( 12, /* nstack */ @@ -1460,7 +1435,7 @@ be_local_closure(class_Tasmota_exec_tele, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str(_rules), @@ -1529,7 +1504,6 @@ be_local_closure(class_Tasmota_exec_tele, /* name */ /******************************************************************** ** Solidified function: add_cmd ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_add_cmd, /* name */ be_nested_proto( 6, /* nstack */ @@ -1538,7 +1512,7 @@ be_local_closure(class_Tasmota_add_cmd, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(check_not_method), @@ -1579,7 +1553,6 @@ be_local_closure(class_Tasmota_add_cmd, /* name */ /******************************************************************** ** Solidified function: wire_scan ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_wire_scan, /* name */ be_nested_proto( 6, /* nstack */ @@ -1588,7 +1561,7 @@ be_local_closure(class_Tasmota_wire_scan, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(i2c_enabled), @@ -1642,7 +1615,6 @@ be_local_closure(class_Tasmota_wire_scan, /* name */ /******************************************************************** ** Solidified function: find_key_i ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_find_key_i, /* name */ be_nested_proto( 10, /* nstack */ @@ -1651,7 +1623,7 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str(string), @@ -1702,7 +1674,6 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ /******************************************************************** ** Solidified function: urlfetch ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_urlfetch, /* name */ be_nested_proto( 10, /* nstack */ @@ -1711,7 +1682,7 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str(string), @@ -1792,7 +1763,6 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ /******************************************************************** ** Solidified function: fast_loop ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_fast_loop, /* name */ be_nested_proto( 5, /* nstack */ @@ -1801,7 +1771,7 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(_fl), @@ -1835,7 +1805,6 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ /******************************************************************** ** Solidified function: gen_cb ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_gen_cb, /* name */ be_nested_proto( 6, /* nstack */ @@ -1844,7 +1813,7 @@ be_local_closure(class_Tasmota_gen_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(cb), @@ -1867,7 +1836,6 @@ be_local_closure(class_Tasmota_gen_cb, /* name */ /******************************************************************** ** Solidified function: time_str ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_time_str, /* name */ be_nested_proto( 11, /* nstack */ @@ -1876,7 +1844,7 @@ be_local_closure(class_Tasmota_time_str, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(time_dump), @@ -1913,7 +1881,6 @@ be_local_closure(class_Tasmota_time_str, /* name */ /******************************************************************** ** Solidified function: add_fast_loop ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_add_fast_loop, /* name */ be_nested_proto( 5, /* nstack */ @@ -1922,7 +1889,7 @@ be_local_closure(class_Tasmota_add_fast_loop, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str(check_not_method), @@ -1970,7 +1937,6 @@ be_local_closure(class_Tasmota_add_fast_loop, /* name */ /******************************************************************** ** Solidified function: get_light ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_get_light, /* name */ be_nested_proto( 6, /* nstack */ @@ -1979,7 +1945,7 @@ be_local_closure(class_Tasmota_get_light, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), @@ -2014,7 +1980,6 @@ be_local_closure(class_Tasmota_get_light, /* name */ /******************************************************************** ** Solidified function: add_cron ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_add_cron, /* name */ be_nested_proto( 13, /* nstack */ @@ -2023,7 +1988,7 @@ be_local_closure(class_Tasmota_add_cron, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(check_not_method), @@ -2072,7 +2037,6 @@ be_local_closure(class_Tasmota_add_cron, /* name */ /******************************************************************** ** Solidified function: hs2rgb ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_hs2rgb, /* name */ be_nested_proto( 17, /* nstack */ @@ -2081,7 +2045,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_int(0), @@ -2171,7 +2135,6 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ /******************************************************************** ** Solidified function: remove_cron ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_remove_cron, /* name */ be_nested_proto( 7, /* nstack */ @@ -2180,7 +2143,7 @@ be_local_closure(class_Tasmota_remove_cron, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str(_crons), @@ -2220,7 +2183,6 @@ be_local_closure(class_Tasmota_remove_cron, /* name */ /******************************************************************** ** Solidified function: load ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_load, /* name */ be_nested_proto( 26, /* nstack */ @@ -2229,7 +2191,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 7]) { + ( &(const struct bproto*[ 6]) { be_nested_proto( 6, /* nstack */ 1, /* argc */ @@ -2237,7 +2199,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(sys), @@ -2270,7 +2232,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(sys), @@ -2303,7 +2265,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str(r), @@ -2370,7 +2332,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(path), @@ -2403,7 +2365,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(file), @@ -2446,7 +2408,7 @@ be_local_closure(class_Tasmota_load, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(BRY_X3A_X20failed_X20to_X20run_X20compiled_X20code_X20_X28_X25s_X20_X2D_X20_X25s_X29), @@ -2489,7 +2451,6 @@ be_local_closure(class_Tasmota_load, /* name */ 0x80040200, // 001D RET 1 R1 }) ), - &be_class_Tasmota, }), 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ @@ -2690,7 +2651,6 @@ be_local_closure(class_Tasmota_load, /* name */ /******************************************************************** ** Solidified function: urlfetch_cmd ********************************************************************/ -extern const bclass be_class_Tasmota; be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ be_nested_proto( 10, /* nstack */ @@ -2699,7 +2659,7 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Tasmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str(string), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h index b917c6e09..e57eb0d81 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h @@ -9,7 +9,6 @@ extern const bclass be_class_Trigger; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_Trigger; be_local_closure(class_Trigger_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_Trigger_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Trigger, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(trig), @@ -43,7 +42,6 @@ be_local_closure(class_Trigger_init, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_Trigger; be_local_closure(class_Trigger_tostring, /* name */ be_nested_proto( 8, /* nstack */ @@ -52,7 +50,7 @@ be_local_closure(class_Trigger_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Trigger, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), @@ -90,7 +88,6 @@ be_local_closure(class_Trigger_tostring, /* name */ /******************************************************************** ** Solidified function: time_reached ********************************************************************/ -extern const bclass be_class_Trigger; be_local_closure(class_Trigger_time_reached, /* name */ be_nested_proto( 4, /* nstack */ @@ -99,7 +96,7 @@ be_local_closure(class_Trigger_time_reached, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Trigger, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str(o), @@ -131,7 +128,6 @@ be_local_closure(class_Trigger_time_reached, /* name */ /******************************************************************** ** Solidified function: next ********************************************************************/ -extern const bclass be_class_Trigger; be_local_closure(class_Trigger_next, /* name */ be_nested_proto( 3, /* nstack */ @@ -140,7 +136,7 @@ be_local_closure(class_Trigger_next, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_Trigger, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(o), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h index 32ba659c0..11ad36ff4 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h @@ -15,7 +15,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str(math), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h index 33ee2991e..8f504d019 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h @@ -7,7 +7,6 @@ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_zb_device; be_local_closure(class_zb_device_tostring, /* name */ be_nested_proto( 12, /* nstack */ @@ -16,7 +15,7 @@ be_local_closure(class_zb_device_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zb_device, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(json), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h index 7539e57e7..22a31bb03 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h @@ -9,7 +9,6 @@ extern const bclass be_class_zb_coord; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_zb_coord; be_local_closure(class_zb_coord_init, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_zb_coord_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zb_coord, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -41,7 +40,6 @@ be_local_closure(class_zb_coord_init, /* name */ /******************************************************************** ** Solidified function: add_handler ********************************************************************/ -extern const bclass be_class_zb_coord; be_local_closure(class_zb_coord_add_handler, /* name */ be_nested_proto( 5, /* nstack */ @@ -50,7 +48,7 @@ be_local_closure(class_zb_coord_add_handler, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zb_coord, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(instance), @@ -97,7 +95,6 @@ be_local_closure(class_zb_coord_add_handler, /* name */ /******************************************************************** ** Solidified function: dispatch ********************************************************************/ -extern const bclass be_class_zb_coord; be_local_closure(class_zb_coord_dispatch, /* name */ be_nested_proto( 19, /* nstack */ @@ -106,7 +103,7 @@ be_local_closure(class_zb_coord_dispatch, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zb_coord, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(_handlers), @@ -206,7 +203,6 @@ be_local_closure(class_zb_coord_dispatch, /* name */ /******************************************************************** ** Solidified function: remove_handler ********************************************************************/ -extern const bclass be_class_zb_coord; be_local_closure(class_zb_coord_remove_handler, /* name */ be_nested_proto( 6, /* nstack */ @@ -215,7 +211,7 @@ be_local_closure(class_zb_coord_remove_handler, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zb_coord, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_handlers), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h index ccdf0d811..bec41e19d 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h @@ -9,7 +9,6 @@ extern const bclass be_class_zcl_attribute; /******************************************************************** ** Solidified function: tomap ********************************************************************/ -extern const bclass be_class_zcl_attribute; be_local_closure(class_zcl_attribute_tomap, /* name */ be_nested_proto( 3, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_zcl_attribute_tomap, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(tomap), @@ -59,7 +58,6 @@ be_local_closure(class_zcl_attribute_tomap, /* name */ /******************************************************************** ** Solidified function: key_tostring ********************************************************************/ -extern const bclass be_class_zcl_attribute; be_local_closure(class_zcl_attribute_key_tostring, /* name */ be_nested_proto( 8, /* nstack */ @@ -68,7 +66,7 @@ be_local_closure(class_zcl_attribute_key_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(_X3Cundefined_X3E), @@ -166,7 +164,6 @@ be_local_closure(class_zcl_attribute_key_tostring, /* name */ /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_zcl_attribute; be_local_closure(class_zcl_attribute_setmember, /* name */ be_nested_proto( 7, /* nstack */ @@ -175,7 +172,7 @@ be_local_closure(class_zcl_attribute_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(cluster), @@ -273,7 +270,6 @@ be_local_closure(class_zcl_attribute_setmember, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_zcl_attribute; be_local_closure(class_zcl_attribute_tostring, /* name */ be_nested_proto( 10, /* nstack */ @@ -282,7 +278,7 @@ be_local_closure(class_zcl_attribute_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -361,7 +357,6 @@ be_local_closure(class_zcl_attribute_tostring, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_zcl_attribute; be_local_closure(class_zcl_attribute_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -370,7 +365,7 @@ be_local_closure(class_zcl_attribute_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -400,7 +395,6 @@ be_local_closure(class_zcl_attribute_init, /* name */ /******************************************************************** ** Solidified function: deinit ********************************************************************/ -extern const bclass be_class_zcl_attribute; be_local_closure(class_zcl_attribute_deinit, /* name */ be_nested_proto( 3, /* nstack */ @@ -409,7 +403,7 @@ be_local_closure(class_zcl_attribute_deinit, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(ismapped), @@ -433,7 +427,6 @@ be_local_closure(class_zcl_attribute_deinit, /* name */ /******************************************************************** ** Solidified function: member ********************************************************************/ -extern const bclass be_class_zcl_attribute; be_local_closure(class_zcl_attribute_member, /* name */ be_nested_proto( 6, /* nstack */ @@ -442,7 +435,7 @@ be_local_closure(class_zcl_attribute_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(cluster), @@ -572,7 +565,6 @@ extern const bclass be_class_zcl_attribute_list; /******************************************************************** ** Solidified function: member ********************************************************************/ -extern const bclass be_class_zcl_attribute_list; be_local_closure(class_zcl_attribute_list_member, /* name */ be_nested_proto( 5, /* nstack */ @@ -581,7 +573,7 @@ be_local_closure(class_zcl_attribute_list_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(groupaddr), @@ -645,7 +637,6 @@ be_local_closure(class_zcl_attribute_list_member, /* name */ /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_zcl_attribute_list; be_local_closure(class_zcl_attribute_list_setmember, /* name */ be_nested_proto( 7, /* nstack */ @@ -654,7 +645,7 @@ be_local_closure(class_zcl_attribute_list_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(groupaddr), @@ -715,7 +706,6 @@ be_local_closure(class_zcl_attribute_list_setmember, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_zcl_attribute_list; be_local_closure(class_zcl_attribute_list_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -724,7 +714,7 @@ be_local_closure(class_zcl_attribute_list_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -754,7 +744,6 @@ be_local_closure(class_zcl_attribute_list_init, /* name */ /******************************************************************** ** Solidified function: deinit ********************************************************************/ -extern const bclass be_class_zcl_attribute_list; be_local_closure(class_zcl_attribute_list_deinit, /* name */ be_nested_proto( 3, /* nstack */ @@ -763,7 +752,7 @@ be_local_closure(class_zcl_attribute_list_deinit, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(ismapped), @@ -787,7 +776,6 @@ be_local_closure(class_zcl_attribute_list_deinit, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_zcl_attribute_list; be_local_closure(class_zcl_attribute_list_tostring, /* name */ be_nested_proto( 11, /* nstack */ @@ -796,7 +784,7 @@ be_local_closure(class_zcl_attribute_list_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_attribute_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(json), diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h index 9c6ab3a5d..735fd916f 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h @@ -9,7 +9,6 @@ extern const bclass be_class_zcl_frame; /******************************************************************** ** Solidified function: member ********************************************************************/ -extern const bclass be_class_zcl_frame; be_local_closure(class_zcl_frame_member, /* name */ be_nested_proto( 5, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_zcl_frame_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(payload), @@ -53,7 +52,6 @@ be_local_closure(class_zcl_frame_member, /* name */ /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_zcl_frame; be_local_closure(class_zcl_frame_setmember, /* name */ be_nested_proto( 7, /* nstack */ @@ -62,7 +60,7 @@ be_local_closure(class_zcl_frame_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(payload), @@ -99,7 +97,6 @@ be_local_closure(class_zcl_frame_setmember, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_zcl_frame; be_local_closure(class_zcl_frame_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -108,7 +105,7 @@ be_local_closure(class_zcl_frame_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -136,7 +133,6 @@ be_local_closure(class_zcl_frame_init, /* name */ /******************************************************************** ** Solidified function: tomap ********************************************************************/ -extern const bclass be_class_zcl_frame; be_local_closure(class_zcl_frame_tomap, /* name */ be_nested_proto( 5, /* nstack */ @@ -145,7 +141,7 @@ be_local_closure(class_zcl_frame_tomap, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(tomap), @@ -179,7 +175,6 @@ be_local_closure(class_zcl_frame_tomap, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -extern const bclass be_class_zcl_frame; be_local_closure(class_zcl_frame_tostring, /* name */ be_nested_proto( 4, /* nstack */ @@ -188,7 +183,7 @@ be_local_closure(class_zcl_frame_tostring, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_zcl_frame, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(tomap), diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h index 3a7fdb769..c8a8c84e7 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h +++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h @@ -15,7 +15,7 @@ be_local_closure(lv_module_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(lv), diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h index 6c023695c..9255abbd2 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h +++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h @@ -9,7 +9,6 @@ extern const bclass be_class_lv_str_arr; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_str_arr; be_local_closure(class_lv_str_arr_init, /* name */ be_nested_proto( 11, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_lv_str_arr_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_str_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(l), @@ -88,7 +87,6 @@ extern const bclass be_class_lv_int_arr; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_int_arr; be_local_closure(class_lv_int_arr_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -97,7 +95,7 @@ be_local_closure(class_lv_int_arr_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_int_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(instance), @@ -179,7 +177,6 @@ be_local_closure(class_lv_int_arr_init, /* name */ /******************************************************************** ** Solidified function: item ********************************************************************/ -extern const bclass be_class_lv_int_arr; be_local_closure(class_lv_int_arr_item, /* name */ be_nested_proto( 6, /* nstack */ @@ -188,7 +185,7 @@ be_local_closure(class_lv_int_arr_item, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_int_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get), @@ -211,7 +208,6 @@ be_local_closure(class_lv_int_arr_item, /* name */ /******************************************************************** ** Solidified function: setitem ********************************************************************/ -extern const bclass be_class_lv_int_arr; be_local_closure(class_lv_int_arr_setitem, /* name */ be_nested_proto( 8, /* nstack */ @@ -220,7 +216,7 @@ be_local_closure(class_lv_int_arr_setitem, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_int_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set), @@ -262,7 +258,6 @@ extern const bclass be_class_lv_point_arr; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_point_arr; be_local_closure(class_lv_point_arr_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -271,7 +266,7 @@ be_local_closure(class_lv_point_arr_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_point_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(instance), @@ -372,7 +367,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -421,7 +416,6 @@ extern const bclass be_class_lv_style_prop_arr; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_style_prop_arr; be_local_closure(class_lv_style_prop_arr_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -430,7 +424,7 @@ be_local_closure(class_lv_style_prop_arr_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_style_prop_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(instance), @@ -506,7 +500,6 @@ extern const bclass be_class_lv_coord_arr; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lv_coord_arr; be_local_closure(class_lv_coord_arr_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -515,7 +508,7 @@ be_local_closure(class_lv_coord_arr_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_coord_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(instance), @@ -597,7 +590,6 @@ be_local_closure(class_lv_coord_arr_init, /* name */ /******************************************************************** ** Solidified function: item ********************************************************************/ -extern const bclass be_class_lv_coord_arr; be_local_closure(class_lv_coord_arr_item, /* name */ be_nested_proto( 6, /* nstack */ @@ -606,7 +598,7 @@ be_local_closure(class_lv_coord_arr_item, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_coord_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get), @@ -629,7 +621,6 @@ be_local_closure(class_lv_coord_arr_item, /* name */ /******************************************************************** ** Solidified function: setitem ********************************************************************/ -extern const bclass be_class_lv_coord_arr; be_local_closure(class_lv_coord_arr_setitem, /* name */ be_nested_proto( 8, /* nstack */ @@ -638,7 +629,7 @@ be_local_closure(class_lv_coord_arr_setitem, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lv_coord_arr, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set), diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h index 5801d36dc..a6346f940 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h +++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h @@ -9,7 +9,6 @@ extern const bclass be_class_LVGL_glob; /******************************************************************** ** Solidified function: get_event_cb ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_get_event_cb, /* name */ be_nested_proto( 9, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -29,7 +28,7 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */ be_local_const_upval(1, 4), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(lvgl_event_dispatch), @@ -45,7 +44,6 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */ 0x80040200, // 0005 RET 1 R1 }) ), - &be_class_LVGL_glob, }), 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ @@ -99,7 +97,6 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */ /******************************************************************** ** Solidified function: add_cb_event_closure ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_add_cb_event_closure, /* name */ be_nested_proto( 7, /* nstack */ @@ -108,7 +105,7 @@ be_local_closure(class_LVGL_glob_add_cb_event_closure, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(cb_event_closure), @@ -173,7 +170,6 @@ be_local_closure(class_LVGL_glob_add_cb_event_closure, /* name */ /******************************************************************** ** Solidified function: make_cb ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_make_cb, /* name */ be_nested_proto( 11, /* nstack */ @@ -182,7 +178,7 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { + ( &(const struct bproto*[ 2]) { be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -192,7 +188,7 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(remove_cb), @@ -216,7 +212,7 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(lvgl_timer_dispatch), @@ -231,7 +227,6 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ 0x80040200, // 0004 RET 1 R1 }) ), - &be_class_LVGL_glob, }), 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ @@ -335,7 +330,6 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ /******************************************************************** ** Solidified function: lvgl_timer_dispatch ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ be_nested_proto( 8, /* nstack */ @@ -344,7 +338,7 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -393,7 +387,6 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ /******************************************************************** ** Solidified function: lvgl_event_dispatch ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ be_nested_proto( 11, /* nstack */ @@ -402,7 +395,7 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -470,7 +463,6 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ /******************************************************************** ** Solidified function: deregister_obj ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_deregister_obj, /* name */ be_nested_proto( 5, /* nstack */ @@ -479,7 +471,7 @@ be_local_closure(class_LVGL_glob_deregister_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(cb_obj), @@ -515,7 +507,6 @@ be_local_closure(class_LVGL_glob_deregister_obj, /* name */ /******************************************************************** ** Solidified function: register_obj ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_register_obj, /* name */ be_nested_proto( 5, /* nstack */ @@ -524,7 +515,7 @@ be_local_closure(class_LVGL_glob_register_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(cb_obj), @@ -564,7 +555,6 @@ be_local_closure(class_LVGL_glob_register_obj, /* name */ /******************************************************************** ** Solidified function: widget_event_impl ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_widget_event_impl, /* name */ be_nested_proto( 12, /* nstack */ @@ -573,7 +563,7 @@ be_local_closure(class_LVGL_glob_widget_event_impl, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -650,7 +640,6 @@ be_local_closure(class_LVGL_glob_widget_event_impl, /* name */ /******************************************************************** ** Solidified function: widget_dtor_impl ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */ be_nested_proto( 10, /* nstack */ @@ -659,7 +648,7 @@ be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -704,7 +693,6 @@ be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */ /******************************************************************** ** Solidified function: widget_ctor_impl ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_widget_ctor_impl, /* name */ be_nested_proto( 10, /* nstack */ @@ -713,7 +701,7 @@ be_local_closure(class_LVGL_glob_widget_ctor_impl, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -775,7 +763,7 @@ be_local_closure(class_LVGL_glob__anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(LVG_X3A_X20call_X20to_X20unsupported_X20callback), @@ -796,7 +784,6 @@ be_local_closure(class_LVGL_glob__anonymous_, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -805,7 +792,7 @@ be_local_closure(class_LVGL_glob_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 8, /* nstack */ 3, /* argc */ @@ -815,7 +802,7 @@ be_local_closure(class_LVGL_glob_init, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(make_cb), @@ -832,7 +819,6 @@ be_local_closure(class_LVGL_glob_init, /* name */ 0x80040600, // 0006 RET 1 R3 }) ), - &be_class_LVGL_glob, }), 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ @@ -859,7 +845,6 @@ be_local_closure(class_LVGL_glob_init, /* name */ /******************************************************************** ** Solidified function: get_object_from_ptr ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_get_object_from_ptr, /* name */ be_nested_proto( 5, /* nstack */ @@ -868,7 +853,7 @@ be_local_closure(class_LVGL_glob_get_object_from_ptr, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(cb_obj), @@ -896,7 +881,6 @@ be_local_closure(class_LVGL_glob_get_object_from_ptr, /* name */ /******************************************************************** ** Solidified function: create_custom_widget ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ be_nested_proto( 10, /* nstack */ @@ -905,7 +889,7 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -1034,7 +1018,6 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ /******************************************************************** ** Solidified function: widget_cb ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_widget_cb, /* name */ be_nested_proto( 5, /* nstack */ @@ -1043,7 +1026,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 4]) { + ( &(const struct bproto*[ 3]) { be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -1053,7 +1036,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(widget_ctor_impl), @@ -1078,7 +1061,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(widget_dtor_impl), @@ -1103,7 +1086,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(widget_event_impl), @@ -1119,7 +1102,6 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ 0x80040400, // 0005 RET 1 R2 }) ), - &be_class_LVGL_glob, }), 1, /* has constants */ ( &(const bvalue[15]) { /* constants */ @@ -1205,7 +1187,6 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ /******************************************************************** ** Solidified function: remove_cb ********************************************************************/ -extern const bclass be_class_LVGL_glob; be_local_closure(class_LVGL_glob_remove_cb, /* name */ be_nested_proto( 7, /* nstack */ @@ -1214,7 +1195,7 @@ be_local_closure(class_LVGL_glob_remove_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_LVGL_glob, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h index 83bad6778..a175d780a 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h +++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h @@ -9,7 +9,6 @@ extern const bclass be_class_lvh_root; /******************************************************************** ** Solidified function: get_text ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_text, /* name */ be_nested_proto( 2, /* nstack */ @@ -18,7 +17,7 @@ be_local_closure(class_lvh_root_get_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_text), @@ -35,7 +34,6 @@ be_local_closure(class_lvh_root_get_text, /* name */ /******************************************************************** ** Solidified function: get_text_rule_formula ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_text_rule_formula, /* name */ be_nested_proto( 2, /* nstack */ @@ -44,7 +42,7 @@ be_local_closure(class_lvh_root_get_text_rule_formula, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_text_rule_formula), @@ -63,7 +61,6 @@ be_local_closure(class_lvh_root_get_text_rule_formula, /* name */ /******************************************************************** ** Solidified function: set_text_rule_formula ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_text_rule_formula, /* name */ be_nested_proto( 11, /* nstack */ @@ -72,7 +69,7 @@ be_local_closure(class_lvh_root_set_text_rule_formula, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_text_rule_formula), @@ -122,7 +119,6 @@ be_local_closure(class_lvh_root_set_text_rule_formula, /* name */ /******************************************************************** ** Solidified function: get_text_rule ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_text_rule, /* name */ be_nested_proto( 2, /* nstack */ @@ -131,7 +127,7 @@ be_local_closure(class_lvh_root_get_text_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_text_rule), @@ -150,7 +146,6 @@ be_local_closure(class_lvh_root_get_text_rule, /* name */ /******************************************************************** ** Solidified function: set_text ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_text, /* name */ be_nested_proto( 2, /* nstack */ @@ -159,7 +154,7 @@ be_local_closure(class_lvh_root_set_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(set_text), @@ -175,7 +170,6 @@ be_local_closure(class_lvh_root_set_text, /* name */ /******************************************************************** ** Solidified function: val_rule_matched ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_val_rule_matched, /* name */ be_nested_proto( 11, /* nstack */ @@ -184,7 +178,7 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_val_rule_function), @@ -239,7 +233,6 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */ /******************************************************************** ** Solidified function: parse_font ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_parse_font, /* name */ be_nested_proto( 15, /* nstack */ @@ -248,7 +241,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(int), @@ -430,7 +423,6 @@ be_local_closure(class_lvh_root_parse_font, /* name */ /******************************************************************** ** Solidified function: get_val_rule_formula ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_val_rule_formula, /* name */ be_nested_proto( 2, /* nstack */ @@ -439,7 +431,7 @@ be_local_closure(class_lvh_root_get_val_rule_formula, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_val_rule_formula), @@ -458,7 +450,6 @@ be_local_closure(class_lvh_root_get_val_rule_formula, /* name */ /******************************************************************** ** Solidified function: post_config ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_post_config, /* name */ be_nested_proto( 4, /* nstack */ @@ -467,7 +458,7 @@ be_local_closure(class_lvh_root_post_config, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -493,7 +484,6 @@ be_local_closure(class_lvh_root_post_config, /* name */ /******************************************************************** ** Solidified function: text_rule_matched ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_text_rule_matched, /* name */ be_nested_proto( 10, /* nstack */ @@ -502,7 +492,7 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(int), @@ -572,7 +562,6 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */ /******************************************************************** ** Solidified function: get_meta ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_meta, /* name */ be_nested_proto( 2, /* nstack */ @@ -581,7 +570,7 @@ be_local_closure(class_lvh_root_get_meta, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_meta), @@ -600,7 +589,6 @@ be_local_closure(class_lvh_root_get_meta, /* name */ /******************************************************************** ** Solidified function: set_value_str ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_value_str, /* name */ be_nested_proto( 5, /* nstack */ @@ -609,7 +597,7 @@ be_local_closure(class_lvh_root_set_value_str, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set_text), @@ -630,7 +618,6 @@ be_local_closure(class_lvh_root_set_value_str, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_init, /* name */ be_nested_proto( 9, /* nstack */ @@ -639,7 +626,7 @@ be_local_closure(class_lvh_root_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_page), @@ -677,7 +664,6 @@ be_local_closure(class_lvh_root_init, /* name */ /******************************************************************** ** Solidified function: get_delete ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_delete, /* name */ be_nested_proto( 3, /* nstack */ @@ -686,7 +672,7 @@ be_local_closure(class_lvh_root_get_delete, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(delete), @@ -706,7 +692,6 @@ be_local_closure(class_lvh_root_get_delete, /* name */ /******************************************************************** ** Solidified function: remove_trailing_zeroes ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */ be_nested_proto( 8, /* nstack */ @@ -715,7 +700,7 @@ be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_lvh_root), @@ -759,7 +744,6 @@ be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */ /******************************************************************** ** Solidified function: set_val_rule ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_val_rule, /* name */ be_nested_proto( 7, /* nstack */ @@ -768,7 +752,7 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -778,7 +762,7 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(val_rule_matched), @@ -793,7 +777,6 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ 0x80040200, // 0004 RET 1 R1 }) ), - &be_class_lvh_root, }), 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ @@ -828,7 +811,6 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ /******************************************************************** ** Solidified function: get_val_rule ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_val_rule, /* name */ be_nested_proto( 2, /* nstack */ @@ -837,7 +819,7 @@ be_local_closure(class_lvh_root_get_val_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_val_rule), @@ -856,7 +838,6 @@ be_local_closure(class_lvh_root_get_val_rule, /* name */ /******************************************************************** ** Solidified function: digits_to_style ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_digits_to_style, /* name */ be_nested_proto( 8, /* nstack */ @@ -865,7 +846,7 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_const_int(0), @@ -930,7 +911,6 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ /******************************************************************** ** Solidified function: set_text_rule_format ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_text_rule_format, /* name */ be_nested_proto( 4, /* nstack */ @@ -939,7 +919,7 @@ be_local_closure(class_lvh_root_set_text_rule_format, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_text_rule_format), @@ -961,7 +941,6 @@ be_local_closure(class_lvh_root_set_text_rule_format, /* name */ /******************************************************************** ** Solidified function: remove_val_rule ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_remove_val_rule, /* name */ be_nested_proto( 5, /* nstack */ @@ -970,7 +949,7 @@ be_local_closure(class_lvh_root_remove_val_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_val_rule), @@ -999,7 +978,6 @@ be_local_closure(class_lvh_root_remove_val_rule, /* name */ /******************************************************************** ** Solidified function: delete ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_delete, /* name */ be_nested_proto( 1, /* nstack */ @@ -1008,7 +986,7 @@ be_local_closure(class_lvh_root_delete, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(delete), @@ -1024,7 +1002,6 @@ be_local_closure(class_lvh_root_delete, /* name */ /******************************************************************** ** Solidified function: get_obj ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_obj, /* name */ be_nested_proto( 2, /* nstack */ @@ -1033,7 +1010,7 @@ be_local_closure(class_lvh_root_get_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -1052,7 +1029,6 @@ be_local_closure(class_lvh_root_get_obj, /* name */ /******************************************************************** ** Solidified function: is_color_attribute ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_is_color_attribute, /* name */ be_nested_proto( 7, /* nstack */ @@ -1061,7 +1037,7 @@ be_local_closure(class_lvh_root_is_color_attribute, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -1088,7 +1064,6 @@ be_local_closure(class_lvh_root_is_color_attribute, /* name */ /******************************************************************** ** Solidified function: set_meta ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_meta, /* name */ be_nested_proto( 2, /* nstack */ @@ -1097,7 +1072,7 @@ be_local_closure(class_lvh_root_set_meta, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_meta), @@ -1116,7 +1091,6 @@ be_local_closure(class_lvh_root_set_meta, /* name */ /******************************************************************** ** Solidified function: set_delete ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_delete, /* name */ be_nested_proto( 2, /* nstack */ @@ -1125,7 +1099,7 @@ be_local_closure(class_lvh_root_set_delete, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(type_error), @@ -1145,7 +1119,6 @@ be_local_closure(class_lvh_root_set_delete, /* name */ /******************************************************************** ** Solidified function: get_value_str ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_value_str, /* name */ be_nested_proto( 3, /* nstack */ @@ -1154,7 +1127,7 @@ be_local_closure(class_lvh_root_get_value_str, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get_text), @@ -1174,7 +1147,6 @@ be_local_closure(class_lvh_root_get_value_str, /* name */ /******************************************************************** ** Solidified function: parse_color ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_parse_color, /* name */ be_nested_proto( 10, /* nstack */ @@ -1183,7 +1155,7 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 10, /* nstack */ 1, /* argc */ @@ -1191,7 +1163,7 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -1281,7 +1253,6 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0x80040400, // 0042 RET 1 R2 }) ), - &be_class_lvh_root, }), 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ @@ -1348,7 +1319,6 @@ be_local_closure(class_lvh_root_parse_color, /* name */ /******************************************************************** ** Solidified function: get_text_rule_format ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_get_text_rule_format, /* name */ be_nested_proto( 2, /* nstack */ @@ -1357,7 +1327,7 @@ be_local_closure(class_lvh_root_get_text_rule_format, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_text_rule_format), @@ -1376,7 +1346,6 @@ be_local_closure(class_lvh_root_get_text_rule_format, /* name */ /******************************************************************** ** Solidified function: remove_text_rule ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_remove_text_rule, /* name */ be_nested_proto( 5, /* nstack */ @@ -1385,7 +1354,7 @@ be_local_closure(class_lvh_root_remove_text_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_text_rule), @@ -1414,7 +1383,6 @@ be_local_closure(class_lvh_root_remove_text_rule, /* name */ /******************************************************************** ** Solidified function: set_val_rule_formula ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_val_rule_formula, /* name */ be_nested_proto( 11, /* nstack */ @@ -1423,7 +1391,7 @@ be_local_closure(class_lvh_root_set_val_rule_formula, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_root, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_val_rule_formula), @@ -1473,7 +1441,6 @@ be_local_closure(class_lvh_root_set_val_rule_formula, /* name */ /******************************************************************** ** Solidified function: set_text_rule ********************************************************************/ -extern const bclass be_class_lvh_root; be_local_closure(class_lvh_root_set_text_rule, /* name */ be_nested_proto( 7, /* nstack */ @@ -1482,7 +1449,7 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -1492,7 +1459,7 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(text_rule_matched), @@ -1507,7 +1474,6 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */ 0x80040200, // 0004 RET 1 R1 }) ), - &be_class_lvh_root, }), 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ @@ -1648,7 +1614,6 @@ extern const bclass be_class_lvh_obj; /******************************************************************** ** Solidified function: set_pad_bottom2 ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_pad_bottom2, /* name */ be_nested_proto( 7, /* nstack */ @@ -1657,7 +1622,7 @@ be_local_closure(class_lvh_obj_set_pad_bottom2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -1693,7 +1658,6 @@ be_local_closure(class_lvh_obj_set_pad_bottom2, /* name */ /******************************************************************** ** Solidified function: set_toggle ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_toggle, /* name */ be_nested_proto( 7, /* nstack */ @@ -1702,7 +1666,7 @@ be_local_closure(class_lvh_obj_set_toggle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -1759,7 +1723,6 @@ be_local_closure(class_lvh_obj_set_toggle, /* name */ /******************************************************************** ** Solidified function: set_pad_left2 ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_pad_left2, /* name */ be_nested_proto( 7, /* nstack */ @@ -1768,7 +1731,7 @@ be_local_closure(class_lvh_obj_set_pad_left2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -1804,7 +1767,6 @@ be_local_closure(class_lvh_obj_set_pad_left2, /* name */ /******************************************************************** ** Solidified function: get_pad_top ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_pad_top, /* name */ be_nested_proto( 5, /* nstack */ @@ -1813,7 +1775,7 @@ be_local_closure(class_lvh_obj_get_pad_top, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -1847,7 +1809,6 @@ be_local_closure(class_lvh_obj_get_pad_top, /* name */ /******************************************************************** ** Solidified function: get_line_width ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_line_width, /* name */ be_nested_proto( 5, /* nstack */ @@ -1856,7 +1817,7 @@ be_local_closure(class_lvh_obj_get_line_width, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -1879,7 +1840,6 @@ be_local_closure(class_lvh_obj_get_line_width, /* name */ /******************************************************************** ** Solidified function: get_adjustable ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_adjustable, /* name */ be_nested_proto( 4, /* nstack */ @@ -1888,7 +1848,7 @@ be_local_closure(class_lvh_obj_get_adjustable, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -1914,7 +1874,6 @@ be_local_closure(class_lvh_obj_get_adjustable, /* name */ /******************************************************************** ** Solidified function: get_text ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_text, /* name */ be_nested_proto( 3, /* nstack */ @@ -1923,7 +1882,7 @@ be_local_closure(class_lvh_obj_get_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_label), @@ -1951,7 +1910,6 @@ be_local_closure(class_lvh_obj_get_text, /* name */ /******************************************************************** ** Solidified function: set_line_width ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_line_width, /* name */ be_nested_proto( 7, /* nstack */ @@ -1960,7 +1918,7 @@ be_local_closure(class_lvh_obj_set_line_width, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -1986,7 +1944,6 @@ be_local_closure(class_lvh_obj_set_line_width, /* name */ /******************************************************************** ** Solidified function: set_text ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_text, /* name */ be_nested_proto( 6, /* nstack */ @@ -1995,7 +1952,7 @@ be_local_closure(class_lvh_obj_set_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(check_label), @@ -2023,7 +1980,6 @@ be_local_closure(class_lvh_obj_set_text, /* name */ /******************************************************************** ** Solidified function: set_align ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_align, /* name */ be_nested_proto( 8, /* nstack */ @@ -2032,7 +1988,7 @@ be_local_closure(class_lvh_obj_set_align, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_const_int(0), @@ -2093,7 +2049,6 @@ be_local_closure(class_lvh_obj_set_align, /* name */ /******************************************************************** ** Solidified function: get_value_color ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_value_color, /* name */ be_nested_proto( 3, /* nstack */ @@ -2102,7 +2057,7 @@ be_local_closure(class_lvh_obj_get_value_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get_value_color), @@ -2122,7 +2077,6 @@ be_local_closure(class_lvh_obj_get_value_color, /* name */ /******************************************************************** ** Solidified function: get_pad_right ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_pad_right, /* name */ be_nested_proto( 5, /* nstack */ @@ -2131,7 +2085,7 @@ be_local_closure(class_lvh_obj_get_pad_right, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -2165,7 +2119,6 @@ be_local_closure(class_lvh_obj_get_pad_right, /* name */ /******************************************************************** ** Solidified function: get_text_color ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_text_color, /* name */ be_nested_proto( 5, /* nstack */ @@ -2174,7 +2127,7 @@ be_local_closure(class_lvh_obj_get_text_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -2197,7 +2150,6 @@ be_local_closure(class_lvh_obj_get_text_color, /* name */ /******************************************************************** ** Solidified function: get_action ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_action, /* name */ be_nested_proto( 3, /* nstack */ @@ -2206,7 +2158,7 @@ be_local_closure(class_lvh_obj_get_action, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_action), @@ -2230,7 +2182,6 @@ be_local_closure(class_lvh_obj_get_action, /* name */ /******************************************************************** ** Solidified function: get_value_ofs_y ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_value_ofs_y, /* name */ be_nested_proto( 3, /* nstack */ @@ -2239,7 +2190,7 @@ be_local_closure(class_lvh_obj_get_value_ofs_y, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_label), @@ -2261,7 +2212,6 @@ be_local_closure(class_lvh_obj_get_value_ofs_y, /* name */ /******************************************************************** ** Solidified function: set_pad_all2 ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_pad_all2, /* name */ be_nested_proto( 7, /* nstack */ @@ -2270,7 +2220,7 @@ be_local_closure(class_lvh_obj_set_pad_all2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -2306,7 +2256,6 @@ be_local_closure(class_lvh_obj_set_pad_all2, /* name */ /******************************************************************** ** Solidified function: check_label ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_check_label, /* name */ be_nested_proto( 6, /* nstack */ @@ -2315,7 +2264,7 @@ be_local_closure(class_lvh_obj_check_label, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_label), @@ -2366,7 +2315,6 @@ be_local_closure(class_lvh_obj_check_label, /* name */ /******************************************************************** ** Solidified function: set_value_color ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_value_color, /* name */ be_nested_proto( 5, /* nstack */ @@ -2375,7 +2323,7 @@ be_local_closure(class_lvh_obj_set_value_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set_text_color), @@ -2396,7 +2344,6 @@ be_local_closure(class_lvh_obj_set_value_color, /* name */ /******************************************************************** ** Solidified function: get_flex_in_new_track ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_flex_in_new_track, /* name */ be_nested_proto( 4, /* nstack */ @@ -2405,7 +2352,7 @@ be_local_closure(class_lvh_obj_get_flex_in_new_track, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -2431,7 +2378,6 @@ be_local_closure(class_lvh_obj_get_flex_in_new_track, /* name */ /******************************************************************** ** Solidified function: delete ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_delete, /* name */ be_nested_proto( 4, /* nstack */ @@ -2440,7 +2386,7 @@ be_local_closure(class_lvh_obj_delete, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(remove_val_rule), @@ -2487,7 +2433,6 @@ be_local_closure(class_lvh_obj_delete, /* name */ /******************************************************************** ** Solidified function: get_value_ofs_x ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_value_ofs_x, /* name */ be_nested_proto( 3, /* nstack */ @@ -2496,7 +2441,7 @@ be_local_closure(class_lvh_obj_get_value_ofs_x, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_label), @@ -2518,7 +2463,6 @@ be_local_closure(class_lvh_obj_get_value_ofs_x, /* name */ /******************************************************************** ** Solidified function: set_pad_top2 ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_pad_top2, /* name */ be_nested_proto( 7, /* nstack */ @@ -2527,7 +2471,7 @@ be_local_closure(class_lvh_obj_set_pad_top2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -2563,7 +2507,6 @@ be_local_closure(class_lvh_obj_set_pad_top2, /* name */ /******************************************************************** ** Solidified function: set_click ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_click, /* name */ be_nested_proto( 5, /* nstack */ @@ -2572,7 +2515,7 @@ be_local_closure(class_lvh_obj_set_click, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set_enabled), @@ -2593,7 +2536,6 @@ be_local_closure(class_lvh_obj_set_click, /* name */ /******************************************************************** ** Solidified function: set_adjustable ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_adjustable, /* name */ be_nested_proto( 5, /* nstack */ @@ -2602,7 +2544,7 @@ be_local_closure(class_lvh_obj_set_adjustable, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -2636,7 +2578,6 @@ be_local_closure(class_lvh_obj_set_adjustable, /* name */ /******************************************************************** ** Solidified function: event_cb ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_event_cb, /* name */ be_nested_proto( 13, /* nstack */ @@ -2645,7 +2586,7 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { + ( &(const struct bproto*[ 2]) { be_nested_proto( 4, /* nstack */ 0, /* argc */ @@ -2657,7 +2598,7 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ be_local_const_upval(1, 3), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(do_action), @@ -2682,7 +2623,7 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ be_local_const_upval(1, 7), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -2698,7 +2639,6 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ 0x80040000, // 0004 RET 1 R0 }) ), - &be_class_lvh_obj, }), 1, /* has constants */ ( &(const bvalue[22]) { /* constants */ @@ -2809,7 +2749,6 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_init, /* name */ be_nested_proto( 13, /* nstack */ @@ -2818,7 +2757,7 @@ be_local_closure(class_lvh_obj_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(init), @@ -2846,7 +2785,6 @@ be_local_closure(class_lvh_obj_init, /* name */ /******************************************************************** ** Solidified function: get_enabled ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_enabled, /* name */ be_nested_proto( 4, /* nstack */ @@ -2855,7 +2793,7 @@ be_local_closure(class_lvh_obj_get_enabled, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -2884,7 +2822,6 @@ be_local_closure(class_lvh_obj_get_enabled, /* name */ /******************************************************************** ** Solidified function: get_click ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_click, /* name */ be_nested_proto( 3, /* nstack */ @@ -2893,7 +2830,7 @@ be_local_closure(class_lvh_obj_get_click, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get_enabled), @@ -2913,7 +2850,6 @@ be_local_closure(class_lvh_obj_get_click, /* name */ /******************************************************************** ** Solidified function: get_label_mode ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_label_mode, /* name */ be_nested_proto( 3, /* nstack */ @@ -2922,7 +2858,7 @@ be_local_closure(class_lvh_obj_get_label_mode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_label), @@ -2949,7 +2885,6 @@ be_local_closure(class_lvh_obj_get_label_mode, /* name */ /******************************************************************** ** Solidified function: get_toggle ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_toggle, /* name */ be_nested_proto( 4, /* nstack */ @@ -2958,7 +2893,7 @@ be_local_closure(class_lvh_obj_get_toggle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -2984,7 +2919,6 @@ be_local_closure(class_lvh_obj_get_toggle, /* name */ /******************************************************************** ** Solidified function: get_hidden ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_hidden, /* name */ be_nested_proto( 4, /* nstack */ @@ -2993,7 +2927,7 @@ be_local_closure(class_lvh_obj_get_hidden, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -3019,7 +2953,6 @@ be_local_closure(class_lvh_obj_get_hidden, /* name */ /******************************************************************** ** Solidified function: set_value_font ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_value_font, /* name */ be_nested_proto( 5, /* nstack */ @@ -3028,7 +2961,7 @@ be_local_closure(class_lvh_obj_set_value_font, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(set_text_font), @@ -3049,7 +2982,6 @@ be_local_closure(class_lvh_obj_set_value_font, /* name */ /******************************************************************** ** Solidified function: get_value_font ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_value_font, /* name */ be_nested_proto( 3, /* nstack */ @@ -3058,7 +2990,7 @@ be_local_closure(class_lvh_obj_get_value_font, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get_text_font), @@ -3078,7 +3010,6 @@ be_local_closure(class_lvh_obj_get_value_font, /* name */ /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_val, /* name */ be_nested_proto( 7, /* nstack */ @@ -3087,7 +3018,7 @@ be_local_closure(class_lvh_obj_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -3120,7 +3051,6 @@ be_local_closure(class_lvh_obj_set_val, /* name */ /******************************************************************** ** Solidified function: set_text_color ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_text_color, /* name */ be_nested_proto( 8, /* nstack */ @@ -3129,7 +3059,7 @@ be_local_closure(class_lvh_obj_set_text_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -3156,7 +3086,6 @@ be_local_closure(class_lvh_obj_set_text_color, /* name */ /******************************************************************** ** Solidified function: set_action ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_action, /* name */ be_nested_proto( 4, /* nstack */ @@ -3165,7 +3094,7 @@ be_local_closure(class_lvh_obj_set_action, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_action), @@ -3187,7 +3116,6 @@ be_local_closure(class_lvh_obj_set_action, /* name */ /******************************************************************** ** Solidified function: get_radius2 ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_radius2, /* name */ be_nested_proto( 5, /* nstack */ @@ -3196,7 +3124,7 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -3230,7 +3158,6 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */ /******************************************************************** ** Solidified function: set_pad_right2 ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_pad_right2, /* name */ be_nested_proto( 7, /* nstack */ @@ -3239,7 +3166,7 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -3275,7 +3202,6 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */ /******************************************************************** ** Solidified function: set_label_mode ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_label_mode, /* name */ be_nested_proto( 6, /* nstack */ @@ -3284,7 +3210,7 @@ be_local_closure(class_lvh_obj_set_label_mode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(expand), @@ -3361,7 +3287,6 @@ be_local_closure(class_lvh_obj_set_label_mode, /* name */ /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_setmember, /* name */ be_nested_proto( 12, /* nstack */ @@ -3370,7 +3295,7 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[27]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -3577,7 +3502,6 @@ be_local_closure(class_lvh_obj_setmember, /* name */ /******************************************************************** ** Solidified function: set_enabled ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_enabled, /* name */ be_nested_proto( 5, /* nstack */ @@ -3586,7 +3510,7 @@ be_local_closure(class_lvh_obj_set_enabled, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -3620,7 +3544,6 @@ be_local_closure(class_lvh_obj_set_enabled, /* name */ /******************************************************************** ** Solidified function: get_align ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_align, /* name */ be_nested_proto( 5, /* nstack */ @@ -3629,7 +3552,7 @@ be_local_closure(class_lvh_obj_get_align, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_const_int(0), @@ -3688,7 +3611,6 @@ be_local_closure(class_lvh_obj_get_align, /* name */ /******************************************************************** ** Solidified function: get_pad_left ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_pad_left, /* name */ be_nested_proto( 5, /* nstack */ @@ -3697,7 +3619,7 @@ be_local_closure(class_lvh_obj_get_pad_left, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -3731,7 +3653,6 @@ be_local_closure(class_lvh_obj_get_pad_left, /* name */ /******************************************************************** ** Solidified function: set_value_ofs_x ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_value_ofs_x, /* name */ be_nested_proto( 6, /* nstack */ @@ -3740,7 +3661,7 @@ be_local_closure(class_lvh_obj_set_value_ofs_x, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(check_label), @@ -3768,7 +3689,6 @@ be_local_closure(class_lvh_obj_set_value_ofs_x, /* name */ /******************************************************************** ** Solidified function: set_flex_in_new_track ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_flex_in_new_track, /* name */ be_nested_proto( 5, /* nstack */ @@ -3777,7 +3697,7 @@ be_local_closure(class_lvh_obj_set_flex_in_new_track, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -3811,7 +3731,6 @@ be_local_closure(class_lvh_obj_set_flex_in_new_track, /* name */ /******************************************************************** ** Solidified function: member ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_member, /* name */ be_nested_proto( 11, /* nstack */ @@ -3820,7 +3739,7 @@ be_local_closure(class_lvh_obj_member, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -3979,7 +3898,6 @@ be_local_closure(class_lvh_obj_member, /* name */ /******************************************************************** ** Solidified function: get_text_font ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_text_font, /* name */ be_nested_proto( 1, /* nstack */ @@ -3988,7 +3906,7 @@ be_local_closure(class_lvh_obj_get_text_font, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_text_font), @@ -4004,7 +3922,6 @@ be_local_closure(class_lvh_obj_get_text_font, /* name */ /******************************************************************** ** Solidified function: set_value_ofs_y ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */ be_nested_proto( 6, /* nstack */ @@ -4013,7 +3930,7 @@ be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(check_label), @@ -4041,7 +3958,6 @@ be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */ /******************************************************************** ** Solidified function: set_radius2 ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_radius2, /* name */ be_nested_proto( 7, /* nstack */ @@ -4050,7 +3966,7 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -4086,7 +4002,6 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */ /******************************************************************** ** Solidified function: set_hidden ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_hidden, /* name */ be_nested_proto( 5, /* nstack */ @@ -4095,7 +4010,7 @@ be_local_closure(class_lvh_obj_set_hidden, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4129,7 +4044,6 @@ be_local_closure(class_lvh_obj_set_hidden, /* name */ /******************************************************************** ** Solidified function: register_event_cb ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_register_event_cb, /* name */ be_nested_proto( 8, /* nstack */ @@ -4138,7 +4052,7 @@ be_local_closure(class_lvh_obj_register_event_cb, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(_page), @@ -4179,7 +4093,6 @@ be_local_closure(class_lvh_obj_register_event_cb, /* name */ /******************************************************************** ** Solidified function: set_text_font ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_set_text_font, /* name */ be_nested_proto( 7, /* nstack */ @@ -4188,7 +4101,7 @@ be_local_closure(class_lvh_obj_set_text_font, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(parse_font), @@ -4220,7 +4133,6 @@ be_local_closure(class_lvh_obj_set_text_font, /* name */ /******************************************************************** ** Solidified function: get_pad_bottom ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_pad_bottom, /* name */ be_nested_proto( 5, /* nstack */ @@ -4229,7 +4141,7 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_part2_selector), @@ -4263,7 +4175,6 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */ /******************************************************************** ** Solidified function: get_pad_all ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_pad_all, /* name */ be_nested_proto( 1, /* nstack */ @@ -4272,7 +4183,7 @@ be_local_closure(class_lvh_obj_get_pad_all, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_pad_all), @@ -4288,7 +4199,6 @@ be_local_closure(class_lvh_obj_get_pad_all, /* name */ /******************************************************************** ** Solidified function: get_val ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_get_val, /* name */ be_nested_proto( 3, /* nstack */ @@ -4297,7 +4207,7 @@ be_local_closure(class_lvh_obj_get_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4319,7 +4229,6 @@ be_local_closure(class_lvh_obj_get_val, /* name */ /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_obj; be_local_closure(class_lvh_obj_post_init, /* name */ be_nested_proto( 3, /* nstack */ @@ -4328,7 +4237,7 @@ be_local_closure(class_lvh_obj_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_obj, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(register_event_cb), @@ -4434,7 +4343,6 @@ extern const bclass be_class_lvh_fixed; /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_fixed; be_local_closure(class_lvh_fixed_post_init, /* name */ be_nested_proto( 8, /* nstack */ @@ -4443,7 +4351,7 @@ be_local_closure(class_lvh_fixed_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_fixed, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(post_init), @@ -4523,7 +4431,6 @@ extern const bclass be_class_lvh_flex; /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_flex; be_local_closure(class_lvh_flex_post_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -4532,7 +4439,7 @@ be_local_closure(class_lvh_flex_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_flex, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(post_init), @@ -4580,7 +4487,6 @@ extern const bclass be_class_lvh_label; /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_label; be_local_closure(class_lvh_label_post_init, /* name */ be_nested_proto( 3, /* nstack */ @@ -4589,7 +4495,7 @@ be_local_closure(class_lvh_label_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_label, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_label), @@ -4633,7 +4539,6 @@ extern const bclass be_class_lvh_arc; /******************************************************************** ** Solidified function: get_type ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_get_type, /* name */ be_nested_proto( 3, /* nstack */ @@ -4642,7 +4547,7 @@ be_local_closure(class_lvh_arc_get_type, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4664,7 +4569,6 @@ be_local_closure(class_lvh_arc_get_type, /* name */ /******************************************************************** ** Solidified function: refresh_label_to_angle ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_refresh_label_to_angle, /* name */ be_nested_proto( 5, /* nstack */ @@ -4673,7 +4577,7 @@ be_local_closure(class_lvh_arc_refresh_label_to_angle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_label_angle), @@ -4707,7 +4611,6 @@ be_local_closure(class_lvh_arc_refresh_label_to_angle, /* name */ /******************************************************************** ** Solidified function: set_min ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_min, /* name */ be_nested_proto( 7, /* nstack */ @@ -4716,7 +4619,7 @@ be_local_closure(class_lvh_arc_set_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4747,7 +4650,6 @@ be_local_closure(class_lvh_arc_set_min, /* name */ /******************************************************************** ** Solidified function: get_line_width1 ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_get_line_width1, /* name */ be_nested_proto( 5, /* nstack */ @@ -4756,7 +4658,7 @@ be_local_closure(class_lvh_arc_get_line_width1, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4786,7 +4688,6 @@ be_local_closure(class_lvh_arc_get_line_width1, /* name */ /******************************************************************** ** Solidified function: set_type ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_type, /* name */ be_nested_proto( 6, /* nstack */ @@ -4795,7 +4696,7 @@ be_local_closure(class_lvh_arc_set_type, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), @@ -4843,7 +4744,6 @@ be_local_closure(class_lvh_arc_set_type, /* name */ /******************************************************************** ** Solidified function: set_line_width1 ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_line_width1, /* name */ be_nested_proto( 7, /* nstack */ @@ -4852,7 +4752,7 @@ be_local_closure(class_lvh_arc_set_line_width1, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4885,7 +4785,6 @@ be_local_closure(class_lvh_arc_set_line_width1, /* name */ /******************************************************************** ** Solidified function: get_min ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_get_min, /* name */ be_nested_proto( 3, /* nstack */ @@ -4894,7 +4793,7 @@ be_local_closure(class_lvh_arc_get_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4916,7 +4815,6 @@ be_local_closure(class_lvh_arc_get_min, /* name */ /******************************************************************** ** Solidified function: set_line_width ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_line_width, /* name */ be_nested_proto( 7, /* nstack */ @@ -4925,7 +4823,7 @@ be_local_closure(class_lvh_arc_set_line_width, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4951,7 +4849,6 @@ be_local_closure(class_lvh_arc_set_line_width, /* name */ /******************************************************************** ** Solidified function: get_max ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_get_max, /* name */ be_nested_proto( 3, /* nstack */ @@ -4960,7 +4857,7 @@ be_local_closure(class_lvh_arc_get_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -4982,7 +4879,6 @@ be_local_closure(class_lvh_arc_get_max, /* name */ /******************************************************************** ** Solidified function: set_label_to_angle ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_label_to_angle, /* name */ be_nested_proto( 4, /* nstack */ @@ -4991,7 +4887,7 @@ be_local_closure(class_lvh_arc_set_label_to_angle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_label_angle), @@ -5016,7 +4912,6 @@ be_local_closure(class_lvh_arc_set_label_to_angle, /* name */ /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_val, /* name */ be_nested_proto( 5, /* nstack */ @@ -5025,7 +4920,7 @@ be_local_closure(class_lvh_arc_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(set_val), @@ -5052,7 +4947,6 @@ be_local_closure(class_lvh_arc_set_val, /* name */ /******************************************************************** ** Solidified function: post_config ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_post_config, /* name */ be_nested_proto( 3, /* nstack */ @@ -5061,7 +4955,7 @@ be_local_closure(class_lvh_arc_post_config, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(post_config), @@ -5087,7 +4981,6 @@ be_local_closure(class_lvh_arc_post_config, /* name */ /******************************************************************** ** Solidified function: get_line_width ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_get_line_width, /* name */ be_nested_proto( 5, /* nstack */ @@ -5096,7 +4989,7 @@ be_local_closure(class_lvh_arc_get_line_width, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5119,7 +5012,6 @@ be_local_closure(class_lvh_arc_get_line_width, /* name */ /******************************************************************** ** Solidified function: set_max ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_max, /* name */ be_nested_proto( 7, /* nstack */ @@ -5128,7 +5020,7 @@ be_local_closure(class_lvh_arc_set_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5159,7 +5051,6 @@ be_local_closure(class_lvh_arc_set_max, /* name */ /******************************************************************** ** Solidified function: set_text ********************************************************************/ -extern const bclass be_class_lvh_arc; be_local_closure(class_lvh_arc_set_text, /* name */ be_nested_proto( 5, /* nstack */ @@ -5168,7 +5059,7 @@ be_local_closure(class_lvh_arc_set_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_arc, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(set_text), @@ -5228,7 +5119,6 @@ extern const bclass be_class_lvh_switch; /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_switch; be_local_closure(class_lvh_switch_set_val, /* name */ be_nested_proto( 5, /* nstack */ @@ -5237,7 +5127,7 @@ be_local_closure(class_lvh_switch_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_switch, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -5260,7 +5150,6 @@ be_local_closure(class_lvh_switch_set_val, /* name */ /******************************************************************** ** Solidified function: get_val ********************************************************************/ -extern const bclass be_class_lvh_switch; be_local_closure(class_lvh_switch_get_val, /* name */ be_nested_proto( 3, /* nstack */ @@ -5269,7 +5158,7 @@ be_local_closure(class_lvh_switch_get_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_switch, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(get_toggle), @@ -5308,7 +5197,6 @@ extern const bclass be_class_lvh_spinner; /******************************************************************** ** Solidified function: set_angle ********************************************************************/ -extern const bclass be_class_lvh_spinner; be_local_closure(class_lvh_spinner_set_angle, /* name */ be_nested_proto( 2, /* nstack */ @@ -5317,7 +5205,7 @@ be_local_closure(class_lvh_spinner_set_angle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_spinner, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(set_angle), @@ -5333,7 +5221,6 @@ be_local_closure(class_lvh_spinner_set_angle, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lvh_spinner; be_local_closure(class_lvh_spinner_init, /* name */ be_nested_proto( 10, /* nstack */ @@ -5342,7 +5229,7 @@ be_local_closure(class_lvh_spinner_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_spinner, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(_page), @@ -5389,7 +5276,6 @@ be_local_closure(class_lvh_spinner_init, /* name */ /******************************************************************** ** Solidified function: get_speed ********************************************************************/ -extern const bclass be_class_lvh_spinner; be_local_closure(class_lvh_spinner_get_speed, /* name */ be_nested_proto( 1, /* nstack */ @@ -5398,7 +5284,7 @@ be_local_closure(class_lvh_spinner_get_speed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_spinner, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_speed), @@ -5414,7 +5300,6 @@ be_local_closure(class_lvh_spinner_get_speed, /* name */ /******************************************************************** ** Solidified function: get_angle ********************************************************************/ -extern const bclass be_class_lvh_spinner; be_local_closure(class_lvh_spinner_get_angle, /* name */ be_nested_proto( 1, /* nstack */ @@ -5423,7 +5308,7 @@ be_local_closure(class_lvh_spinner_get_angle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_spinner, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_angle), @@ -5439,7 +5324,6 @@ be_local_closure(class_lvh_spinner_get_angle, /* name */ /******************************************************************** ** Solidified function: set_speed ********************************************************************/ -extern const bclass be_class_lvh_spinner; be_local_closure(class_lvh_spinner_set_speed, /* name */ be_nested_proto( 2, /* nstack */ @@ -5448,7 +5332,7 @@ be_local_closure(class_lvh_spinner_set_speed, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_spinner, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(set_speed), @@ -5487,7 +5371,6 @@ extern const bclass be_class_lvh_img; /******************************************************************** ** Solidified function: set_src ********************************************************************/ -extern const bclass be_class_lvh_img; be_local_closure(class_lvh_img_set_src, /* name */ be_nested_proto( 5, /* nstack */ @@ -5496,7 +5379,7 @@ be_local_closure(class_lvh_img_set_src, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_img, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota_logo), @@ -5527,7 +5410,6 @@ be_local_closure(class_lvh_img_set_src, /* name */ /******************************************************************** ** Solidified function: get_auto_size ********************************************************************/ -extern const bclass be_class_lvh_img; be_local_closure(class_lvh_img_get_auto_size, /* name */ be_nested_proto( 1, /* nstack */ @@ -5536,7 +5418,7 @@ be_local_closure(class_lvh_img_get_auto_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_img, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_auto_size), @@ -5552,7 +5434,6 @@ be_local_closure(class_lvh_img_get_auto_size, /* name */ /******************************************************************** ** Solidified function: set_auto_size ********************************************************************/ -extern const bclass be_class_lvh_img; be_local_closure(class_lvh_img_set_auto_size, /* name */ be_nested_proto( 5, /* nstack */ @@ -5561,7 +5442,7 @@ be_local_closure(class_lvh_img_set_auto_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_img, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5588,7 +5469,6 @@ be_local_closure(class_lvh_img_set_auto_size, /* name */ /******************************************************************** ** Solidified function: set_angle ********************************************************************/ -extern const bclass be_class_lvh_img; be_local_closure(class_lvh_img_set_angle, /* name */ be_nested_proto( 5, /* nstack */ @@ -5597,7 +5477,7 @@ be_local_closure(class_lvh_img_set_angle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_img, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5624,7 +5504,6 @@ be_local_closure(class_lvh_img_set_angle, /* name */ /******************************************************************** ** Solidified function: get_angle ********************************************************************/ -extern const bclass be_class_lvh_img; be_local_closure(class_lvh_img_get_angle, /* name */ be_nested_proto( 3, /* nstack */ @@ -5633,7 +5512,7 @@ be_local_closure(class_lvh_img_get_angle, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_img, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5655,7 +5534,6 @@ be_local_closure(class_lvh_img_get_angle, /* name */ /******************************************************************** ** Solidified function: set_raw ********************************************************************/ -extern const bclass be_class_lvh_img; be_local_closure(class_lvh_img_set_raw, /* name */ be_nested_proto( 6, /* nstack */ @@ -5664,7 +5542,7 @@ be_local_closure(class_lvh_img_set_raw, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_img, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(_raw), @@ -5742,7 +5620,6 @@ extern const bclass be_class_lvh_qrcode; /******************************************************************** ** Solidified function: get_qr_dark_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_get_qr_dark_color, /* name */ be_nested_proto( 1, /* nstack */ @@ -5751,7 +5628,7 @@ be_local_closure(class_lvh_qrcode_get_qr_dark_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_qr_dark_color), @@ -5767,7 +5644,6 @@ be_local_closure(class_lvh_qrcode_get_qr_dark_color, /* name */ /******************************************************************** ** Solidified function: set_qr_text ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_set_qr_text, /* name */ be_nested_proto( 4, /* nstack */ @@ -5776,7 +5652,7 @@ be_local_closure(class_lvh_qrcode_set_qr_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(qr_text), @@ -5801,7 +5677,6 @@ be_local_closure(class_lvh_qrcode_set_qr_text, /* name */ /******************************************************************** ** Solidified function: set_light_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_set_light_color, /* name */ be_nested_proto( 7, /* nstack */ @@ -5810,7 +5685,7 @@ be_local_closure(class_lvh_qrcode_set_light_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5839,7 +5714,6 @@ be_local_closure(class_lvh_qrcode_set_light_color, /* name */ /******************************************************************** ** Solidified function: get_dark_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_get_dark_color, /* name */ be_nested_proto( 1, /* nstack */ @@ -5848,7 +5722,7 @@ be_local_closure(class_lvh_qrcode_get_dark_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_dark_color), @@ -5864,7 +5738,6 @@ be_local_closure(class_lvh_qrcode_get_dark_color, /* name */ /******************************************************************** ** Solidified function: set_qr_light_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_set_qr_light_color, /* name */ be_nested_proto( 7, /* nstack */ @@ -5873,7 +5746,7 @@ be_local_closure(class_lvh_qrcode_set_qr_light_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5902,7 +5775,6 @@ be_local_closure(class_lvh_qrcode_set_qr_light_color, /* name */ /******************************************************************** ** Solidified function: get_qr_light_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_get_qr_light_color, /* name */ be_nested_proto( 1, /* nstack */ @@ -5911,7 +5783,7 @@ be_local_closure(class_lvh_qrcode_get_qr_light_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_qr_light_color), @@ -5927,7 +5799,6 @@ be_local_closure(class_lvh_qrcode_get_qr_light_color, /* name */ /******************************************************************** ** Solidified function: set_qr_size ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_set_qr_size, /* name */ be_nested_proto( 5, /* nstack */ @@ -5936,7 +5807,7 @@ be_local_closure(class_lvh_qrcode_set_qr_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -5962,7 +5833,6 @@ be_local_closure(class_lvh_qrcode_set_qr_size, /* name */ /******************************************************************** ** Solidified function: get_light_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_get_light_color, /* name */ be_nested_proto( 1, /* nstack */ @@ -5971,7 +5841,7 @@ be_local_closure(class_lvh_qrcode_get_light_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_light_color), @@ -5987,7 +5857,6 @@ be_local_closure(class_lvh_qrcode_get_light_color, /* name */ /******************************************************************** ** Solidified function: set_size ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_set_size, /* name */ be_nested_proto( 5, /* nstack */ @@ -5996,7 +5865,7 @@ be_local_closure(class_lvh_qrcode_set_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6022,7 +5891,6 @@ be_local_closure(class_lvh_qrcode_set_size, /* name */ /******************************************************************** ** Solidified function: set_qr_dark_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_set_qr_dark_color, /* name */ be_nested_proto( 7, /* nstack */ @@ -6031,7 +5899,7 @@ be_local_closure(class_lvh_qrcode_set_qr_dark_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6060,7 +5928,6 @@ be_local_closure(class_lvh_qrcode_set_qr_dark_color, /* name */ /******************************************************************** ** Solidified function: get_qr_text ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_get_qr_text, /* name */ be_nested_proto( 1, /* nstack */ @@ -6069,7 +5936,7 @@ be_local_closure(class_lvh_qrcode_get_qr_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_qr_text), @@ -6085,7 +5952,6 @@ be_local_closure(class_lvh_qrcode_get_qr_text, /* name */ /******************************************************************** ** Solidified function: set_dark_color ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_set_dark_color, /* name */ be_nested_proto( 7, /* nstack */ @@ -6094,7 +5960,7 @@ be_local_closure(class_lvh_qrcode_set_dark_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6123,7 +5989,6 @@ be_local_closure(class_lvh_qrcode_set_dark_color, /* name */ /******************************************************************** ** Solidified function: get_size ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_get_size, /* name */ be_nested_proto( 1, /* nstack */ @@ -6132,7 +5997,7 @@ be_local_closure(class_lvh_qrcode_get_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_size), @@ -6148,7 +6013,6 @@ be_local_closure(class_lvh_qrcode_get_size, /* name */ /******************************************************************** ** Solidified function: post_config ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_post_config, /* name */ be_nested_proto( 3, /* nstack */ @@ -6157,7 +6021,7 @@ be_local_closure(class_lvh_qrcode_post_config, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(post_config), @@ -6183,7 +6047,6 @@ be_local_closure(class_lvh_qrcode_post_config, /* name */ /******************************************************************** ** Solidified function: _update ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode__update, /* name */ be_nested_proto( 7, /* nstack */ @@ -6192,7 +6055,7 @@ be_local_closure(class_lvh_qrcode__update, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(qr_text), @@ -6223,7 +6086,6 @@ be_local_closure(class_lvh_qrcode__update, /* name */ /******************************************************************** ** Solidified function: get_qr_size ********************************************************************/ -extern const bclass be_class_lvh_qrcode; be_local_closure(class_lvh_qrcode_get_qr_size, /* name */ be_nested_proto( 1, /* nstack */ @@ -6232,7 +6094,7 @@ be_local_closure(class_lvh_qrcode_get_qr_size, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_qrcode, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_qr_size), @@ -6281,7 +6143,6 @@ extern const bclass be_class_lvh_slider; /******************************************************************** ** Solidified function: set_max ********************************************************************/ -extern const bclass be_class_lvh_slider; be_local_closure(class_lvh_slider_set_max, /* name */ be_nested_proto( 7, /* nstack */ @@ -6290,7 +6151,7 @@ be_local_closure(class_lvh_slider_set_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_slider, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6318,7 +6179,6 @@ be_local_closure(class_lvh_slider_set_max, /* name */ /******************************************************************** ** Solidified function: get_min ********************************************************************/ -extern const bclass be_class_lvh_slider; be_local_closure(class_lvh_slider_get_min, /* name */ be_nested_proto( 3, /* nstack */ @@ -6327,7 +6187,7 @@ be_local_closure(class_lvh_slider_get_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_slider, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6349,7 +6209,6 @@ be_local_closure(class_lvh_slider_get_min, /* name */ /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_slider; be_local_closure(class_lvh_slider_set_val, /* name */ be_nested_proto( 6, /* nstack */ @@ -6358,7 +6217,7 @@ be_local_closure(class_lvh_slider_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_slider, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -6385,7 +6244,6 @@ be_local_closure(class_lvh_slider_set_val, /* name */ /******************************************************************** ** Solidified function: get_max ********************************************************************/ -extern const bclass be_class_lvh_slider; be_local_closure(class_lvh_slider_get_max, /* name */ be_nested_proto( 3, /* nstack */ @@ -6394,7 +6252,7 @@ be_local_closure(class_lvh_slider_get_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_slider, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6416,7 +6274,6 @@ be_local_closure(class_lvh_slider_get_max, /* name */ /******************************************************************** ** Solidified function: set_min ********************************************************************/ -extern const bclass be_class_lvh_slider; be_local_closure(class_lvh_slider_set_min, /* name */ be_nested_proto( 7, /* nstack */ @@ -6425,7 +6282,7 @@ be_local_closure(class_lvh_slider_set_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_slider, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6474,7 +6331,6 @@ extern const bclass be_class_lvh_roller; /******************************************************************** ** Solidified function: set_options ********************************************************************/ -extern const bclass be_class_lvh_roller; be_local_closure(class_lvh_roller_set_options, /* name */ be_nested_proto( 6, /* nstack */ @@ -6483,7 +6339,7 @@ be_local_closure(class_lvh_roller_set_options, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_roller, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6510,7 +6366,6 @@ be_local_closure(class_lvh_roller_set_options, /* name */ /******************************************************************** ** Solidified function: get_text ********************************************************************/ -extern const bclass be_class_lvh_roller; be_local_closure(class_lvh_roller_get_text, /* name */ be_nested_proto( 6, /* nstack */ @@ -6519,7 +6374,7 @@ be_local_closure(class_lvh_roller_get_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_roller, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(resize), @@ -6559,7 +6414,6 @@ be_local_closure(class_lvh_roller_get_text, /* name */ /******************************************************************** ** Solidified function: get_options ********************************************************************/ -extern const bclass be_class_lvh_roller; be_local_closure(class_lvh_roller_get_options, /* name */ be_nested_proto( 3, /* nstack */ @@ -6568,7 +6422,7 @@ be_local_closure(class_lvh_roller_get_options, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_roller, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6590,7 +6444,6 @@ be_local_closure(class_lvh_roller_get_options, /* name */ /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_roller; be_local_closure(class_lvh_roller_set_val, /* name */ be_nested_proto( 6, /* nstack */ @@ -6599,7 +6452,7 @@ be_local_closure(class_lvh_roller_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_roller, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -6626,7 +6479,6 @@ be_local_closure(class_lvh_roller_set_val, /* name */ /******************************************************************** ** Solidified function: set_text ********************************************************************/ -extern const bclass be_class_lvh_roller; be_local_closure(class_lvh_roller_set_text, /* name */ be_nested_proto( 2, /* nstack */ @@ -6635,7 +6487,7 @@ be_local_closure(class_lvh_roller_set_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_roller, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(attribute_error), @@ -6655,7 +6507,6 @@ be_local_closure(class_lvh_roller_set_text, /* name */ /******************************************************************** ** Solidified function: get_val ********************************************************************/ -extern const bclass be_class_lvh_roller; be_local_closure(class_lvh_roller_get_val, /* name */ be_nested_proto( 3, /* nstack */ @@ -6664,7 +6515,7 @@ be_local_closure(class_lvh_roller_get_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_roller, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6708,7 +6559,6 @@ extern const bclass be_class_lvh_led; /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_led; be_local_closure(class_lvh_led_set_val, /* name */ be_nested_proto( 5, /* nstack */ @@ -6717,7 +6567,7 @@ be_local_closure(class_lvh_led_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_led, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -6742,7 +6592,6 @@ be_local_closure(class_lvh_led_set_val, /* name */ /******************************************************************** ** Solidified function: get_color ********************************************************************/ -extern const bclass be_class_lvh_led; be_local_closure(class_lvh_led_get_color, /* name */ be_nested_proto( 1, /* nstack */ @@ -6751,7 +6600,7 @@ be_local_closure(class_lvh_led_get_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_led, + NULL, /* no sub protos */ 0, /* has constants */ NULL, /* no const */ be_str_weak(get_color), @@ -6767,7 +6616,6 @@ be_local_closure(class_lvh_led_get_color, /* name */ /******************************************************************** ** Solidified function: get_val ********************************************************************/ -extern const bclass be_class_lvh_led; be_local_closure(class_lvh_led_get_val, /* name */ be_nested_proto( 3, /* nstack */ @@ -6776,7 +6624,7 @@ be_local_closure(class_lvh_led_get_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_led, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6798,7 +6646,6 @@ be_local_closure(class_lvh_led_get_val, /* name */ /******************************************************************** ** Solidified function: set_color ********************************************************************/ -extern const bclass be_class_lvh_led; be_local_closure(class_lvh_led_set_color, /* name */ be_nested_proto( 6, /* nstack */ @@ -6807,7 +6654,7 @@ be_local_closure(class_lvh_led_set_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_led, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(parse_color), @@ -6854,7 +6701,6 @@ extern const bclass be_class_lvh_dropdown; /******************************************************************** ** Solidified function: get_val ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_get_val, /* name */ be_nested_proto( 3, /* nstack */ @@ -6863,7 +6709,7 @@ be_local_closure(class_lvh_dropdown_get_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6885,7 +6731,6 @@ be_local_closure(class_lvh_dropdown_get_val, /* name */ /******************************************************************** ** Solidified function: set_text ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_set_text, /* name */ be_nested_proto( 5, /* nstack */ @@ -6894,7 +6739,7 @@ be_local_closure(class_lvh_dropdown_set_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -6917,7 +6762,6 @@ be_local_closure(class_lvh_dropdown_set_text, /* name */ /******************************************************************** ** Solidified function: set_direction ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_set_direction, /* name */ be_nested_proto( 5, /* nstack */ @@ -6926,7 +6770,7 @@ be_local_closure(class_lvh_dropdown_set_direction, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_const_int(0), @@ -6996,7 +6840,6 @@ be_local_closure(class_lvh_dropdown_set_direction, /* name */ /******************************************************************** ** Solidified function: get_direction ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_get_direction, /* name */ be_nested_proto( 5, /* nstack */ @@ -7005,7 +6848,7 @@ be_local_closure(class_lvh_dropdown_get_direction, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7044,7 +6887,6 @@ be_local_closure(class_lvh_dropdown_get_direction, /* name */ /******************************************************************** ** Solidified function: set_show_selected ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_set_show_selected, /* name */ be_nested_proto( 5, /* nstack */ @@ -7053,7 +6895,7 @@ be_local_closure(class_lvh_dropdown_set_show_selected, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7077,7 +6919,6 @@ be_local_closure(class_lvh_dropdown_set_show_selected, /* name */ /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_set_val, /* name */ be_nested_proto( 5, /* nstack */ @@ -7086,7 +6927,7 @@ be_local_closure(class_lvh_dropdown_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -7111,7 +6952,6 @@ be_local_closure(class_lvh_dropdown_set_val, /* name */ /******************************************************************** ** Solidified function: get_text ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_get_text, /* name */ be_nested_proto( 7, /* nstack */ @@ -7120,7 +6960,7 @@ be_local_closure(class_lvh_dropdown_get_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7170,7 +7010,6 @@ be_local_closure(class_lvh_dropdown_get_text, /* name */ /******************************************************************** ** Solidified function: get_show_selected ********************************************************************/ -extern const bclass be_class_lvh_dropdown; be_local_closure(class_lvh_dropdown_get_show_selected, /* name */ be_nested_proto( 3, /* nstack */ @@ -7179,7 +7018,7 @@ be_local_closure(class_lvh_dropdown_get_show_selected, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7236,7 +7075,6 @@ extern const bclass be_class_lvh_dropdown_list; /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_dropdown_list; be_local_closure(class_lvh_dropdown_list_post_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -7245,7 +7083,7 @@ be_local_closure(class_lvh_dropdown_list_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_dropdown_list, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7311,7 +7149,6 @@ extern const bclass be_class_lvh_bar; /******************************************************************** ** Solidified function: get_max ********************************************************************/ -extern const bclass be_class_lvh_bar; be_local_closure(class_lvh_bar_get_max, /* name */ be_nested_proto( 3, /* nstack */ @@ -7320,7 +7157,7 @@ be_local_closure(class_lvh_bar_get_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_bar, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7342,7 +7179,6 @@ be_local_closure(class_lvh_bar_get_max, /* name */ /******************************************************************** ** Solidified function: set_max ********************************************************************/ -extern const bclass be_class_lvh_bar; be_local_closure(class_lvh_bar_set_max, /* name */ be_nested_proto( 7, /* nstack */ @@ -7351,7 +7187,7 @@ be_local_closure(class_lvh_bar_set_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_bar, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7380,7 +7216,6 @@ be_local_closure(class_lvh_bar_set_max, /* name */ /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_bar; be_local_closure(class_lvh_bar_post_init, /* name */ be_nested_proto( 7, /* nstack */ @@ -7389,7 +7224,7 @@ be_local_closure(class_lvh_bar_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_bar, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(post_init), @@ -7440,7 +7275,6 @@ be_local_closure(class_lvh_bar_post_init, /* name */ /******************************************************************** ** Solidified function: get_min ********************************************************************/ -extern const bclass be_class_lvh_bar; be_local_closure(class_lvh_bar_get_min, /* name */ be_nested_proto( 3, /* nstack */ @@ -7449,7 +7283,7 @@ be_local_closure(class_lvh_bar_get_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_bar, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7471,7 +7305,6 @@ be_local_closure(class_lvh_bar_get_min, /* name */ /******************************************************************** ** Solidified function: set_min ********************************************************************/ -extern const bclass be_class_lvh_bar; be_local_closure(class_lvh_bar_set_min, /* name */ be_nested_proto( 7, /* nstack */ @@ -7480,7 +7313,7 @@ be_local_closure(class_lvh_bar_set_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_bar, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7509,7 +7342,6 @@ be_local_closure(class_lvh_bar_set_min, /* name */ /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_bar; be_local_closure(class_lvh_bar_set_val, /* name */ be_nested_proto( 6, /* nstack */ @@ -7518,7 +7350,7 @@ be_local_closure(class_lvh_bar_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_bar, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -7569,7 +7401,6 @@ extern const bclass be_class_lvh_line; /******************************************************************** ** Solidified function: set_points ********************************************************************/ -extern const bclass be_class_lvh_line; be_local_closure(class_lvh_line_set_points, /* name */ be_nested_proto( 9, /* nstack */ @@ -7578,7 +7409,7 @@ be_local_closure(class_lvh_line_set_points, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_line, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_const_int(2), @@ -7687,7 +7518,6 @@ extern const bclass be_class_lvh_scale; /******************************************************************** ** Solidified function: set_text_src ********************************************************************/ -extern const bclass be_class_lvh_scale; be_local_closure(class_lvh_scale_set_text_src, /* name */ be_nested_proto( 5, /* nstack */ @@ -7696,7 +7526,7 @@ be_local_closure(class_lvh_scale_set_text_src, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_const_int(0), @@ -7756,7 +7586,6 @@ be_local_closure(class_lvh_scale_set_text_src, /* name */ /******************************************************************** ** Solidified function: get_max ********************************************************************/ -extern const bclass be_class_lvh_scale; be_local_closure(class_lvh_scale_get_max, /* name */ be_nested_proto( 3, /* nstack */ @@ -7765,7 +7594,7 @@ be_local_closure(class_lvh_scale_get_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7787,7 +7616,6 @@ be_local_closure(class_lvh_scale_get_max, /* name */ /******************************************************************** ** Solidified function: set_min ********************************************************************/ -extern const bclass be_class_lvh_scale; be_local_closure(class_lvh_scale_set_min, /* name */ be_nested_proto( 7, /* nstack */ @@ -7796,7 +7624,7 @@ be_local_closure(class_lvh_scale_set_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7825,7 +7653,6 @@ be_local_closure(class_lvh_scale_set_min, /* name */ /******************************************************************** ** Solidified function: get_text_src ********************************************************************/ -extern const bclass be_class_lvh_scale; be_local_closure(class_lvh_scale_get_text_src, /* name */ be_nested_proto( 2, /* nstack */ @@ -7834,7 +7661,7 @@ be_local_closure(class_lvh_scale_get_text_src, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_options), @@ -7853,7 +7680,6 @@ be_local_closure(class_lvh_scale_get_text_src, /* name */ /******************************************************************** ** Solidified function: set_max ********************************************************************/ -extern const bclass be_class_lvh_scale; be_local_closure(class_lvh_scale_set_max, /* name */ be_nested_proto( 7, /* nstack */ @@ -7862,7 +7688,7 @@ be_local_closure(class_lvh_scale_set_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7891,7 +7717,6 @@ be_local_closure(class_lvh_scale_set_max, /* name */ /******************************************************************** ** Solidified function: get_min ********************************************************************/ -extern const bclass be_class_lvh_scale; be_local_closure(class_lvh_scale_get_min, /* name */ be_nested_proto( 3, /* nstack */ @@ -7900,7 +7725,7 @@ be_local_closure(class_lvh_scale_get_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -7946,7 +7771,6 @@ extern const bclass be_class_lvh_scale_section; /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_lvh_scale_section; be_local_closure(class_lvh_scale_section_setmember, /* name */ be_nested_proto( 12, /* nstack */ @@ -7955,7 +7779,7 @@ be_local_closure(class_lvh_scale_section_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_section, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[26]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -8138,7 +7962,6 @@ be_local_closure(class_lvh_scale_section_setmember, /* name */ /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_scale_section; be_local_closure(class_lvh_scale_section_post_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -8147,7 +7970,7 @@ be_local_closure(class_lvh_scale_section_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_section, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[19]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -8233,7 +8056,6 @@ be_local_closure(class_lvh_scale_section_post_init, /* name */ /******************************************************************** ** Solidified function: set_min ********************************************************************/ -extern const bclass be_class_lvh_scale_section; be_local_closure(class_lvh_scale_section_set_min, /* name */ be_nested_proto( 8, /* nstack */ @@ -8242,7 +8064,7 @@ be_local_closure(class_lvh_scale_section_set_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_section, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_max), @@ -8272,7 +8094,6 @@ be_local_closure(class_lvh_scale_section_set_min, /* name */ /******************************************************************** ** Solidified function: set_max ********************************************************************/ -extern const bclass be_class_lvh_scale_section; be_local_closure(class_lvh_scale_section_set_max, /* name */ be_nested_proto( 8, /* nstack */ @@ -8281,7 +8102,7 @@ be_local_closure(class_lvh_scale_section_set_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_section, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_min), @@ -8311,7 +8132,6 @@ be_local_closure(class_lvh_scale_section_set_max, /* name */ /******************************************************************** ** Solidified function: set_range ********************************************************************/ -extern const bclass be_class_lvh_scale_section; be_local_closure(class_lvh_scale_section_set_range, /* name */ be_nested_proto( 7, /* nstack */ @@ -8320,7 +8140,7 @@ be_local_closure(class_lvh_scale_section_set_range, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_section, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_min), @@ -8348,7 +8168,6 @@ be_local_closure(class_lvh_scale_section_set_range, /* name */ /******************************************************************** ** Solidified function: delete ********************************************************************/ -extern const bclass be_class_lvh_scale_section; be_local_closure(class_lvh_scale_section_delete, /* name */ be_nested_proto( 3, /* nstack */ @@ -8357,7 +8176,7 @@ be_local_closure(class_lvh_scale_section_delete, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_section, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_style), @@ -8420,7 +8239,6 @@ extern const bclass be_class_lvh_scale_line; /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_scale_line; be_local_closure(class_lvh_scale_line_set_val, /* name */ be_nested_proto( 7, /* nstack */ @@ -8429,7 +8247,7 @@ be_local_closure(class_lvh_scale_line_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_line, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(set_val), @@ -8495,7 +8313,6 @@ be_local_closure(class_lvh_scale_line_set_val, /* name */ /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_scale_line; be_local_closure(class_lvh_scale_line_post_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -8504,7 +8321,7 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_line, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(_parent_lvh), @@ -8563,7 +8380,6 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */ /******************************************************************** ** Solidified function: get_needle_length ********************************************************************/ -extern const bclass be_class_lvh_scale_line; be_local_closure(class_lvh_scale_line_get_needle_length, /* name */ be_nested_proto( 2, /* nstack */ @@ -8572,7 +8388,7 @@ be_local_closure(class_lvh_scale_line_get_needle_length, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_line, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_needle_length), @@ -8591,7 +8407,6 @@ be_local_closure(class_lvh_scale_line_get_needle_length, /* name */ /******************************************************************** ** Solidified function: set_needle_length ********************************************************************/ -extern const bclass be_class_lvh_scale_line; be_local_closure(class_lvh_scale_line_set_needle_length, /* name */ be_nested_proto( 5, /* nstack */ @@ -8600,7 +8415,7 @@ be_local_closure(class_lvh_scale_line_set_needle_length, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_scale_line, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_needle_length), @@ -8651,7 +8466,6 @@ extern const bclass be_class_lvh_spangroup; /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_spangroup; be_local_closure(class_lvh_spangroup_post_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -8660,7 +8474,7 @@ be_local_closure(class_lvh_spangroup_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_spangroup, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -8696,7 +8510,6 @@ be_local_closure(class_lvh_spangroup_post_init, /* name */ /******************************************************************** ** Solidified function: refr_mode ********************************************************************/ -extern const bclass be_class_lvh_spangroup; be_local_closure(class_lvh_spangroup_refr_mode, /* name */ be_nested_proto( 3, /* nstack */ @@ -8705,7 +8518,7 @@ be_local_closure(class_lvh_spangroup_refr_mode, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_spangroup, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -8745,7 +8558,6 @@ extern const bclass be_class_lvh_span; /******************************************************************** ** Solidified function: setmember ********************************************************************/ -extern const bclass be_class_lvh_span; be_local_closure(class_lvh_span_setmember, /* name */ be_nested_proto( 10, /* nstack */ @@ -8754,7 +8566,7 @@ be_local_closure(class_lvh_span_setmember, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_span, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -8883,7 +8695,6 @@ be_local_closure(class_lvh_span_setmember, /* name */ /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_span; be_local_closure(class_lvh_span_post_init, /* name */ be_nested_proto( 4, /* nstack */ @@ -8892,7 +8703,7 @@ be_local_closure(class_lvh_span_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_span, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -8935,7 +8746,6 @@ be_local_closure(class_lvh_span_post_init, /* name */ /******************************************************************** ** Solidified function: set_text_font ********************************************************************/ -extern const bclass be_class_lvh_span; be_local_closure(class_lvh_span_set_text_font, /* name */ be_nested_proto( 6, /* nstack */ @@ -8944,7 +8754,7 @@ be_local_closure(class_lvh_span_set_text_font, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_span, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(parse_font), @@ -8979,7 +8789,6 @@ be_local_closure(class_lvh_span_set_text_font, /* name */ /******************************************************************** ** Solidified function: set_text ********************************************************************/ -extern const bclass be_class_lvh_span; be_local_closure(class_lvh_span_set_text, /* name */ be_nested_proto( 6, /* nstack */ @@ -8988,7 +8797,7 @@ be_local_closure(class_lvh_span_set_text, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_span, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -9034,7 +8843,6 @@ extern const bclass be_class_lvh_chart; /******************************************************************** ** Solidified function: get_y_min ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_get_y_min, /* name */ be_nested_proto( 2, /* nstack */ @@ -9043,7 +8851,7 @@ be_local_closure(class_lvh_chart_get_y_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_y_min), @@ -9062,7 +8870,6 @@ be_local_closure(class_lvh_chart_get_y_min, /* name */ /******************************************************************** ** Solidified function: add_point ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_add_point, /* name */ be_nested_proto( 6, /* nstack */ @@ -9071,7 +8878,7 @@ be_local_closure(class_lvh_chart_add_point, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -9096,7 +8903,6 @@ be_local_closure(class_lvh_chart_add_point, /* name */ /******************************************************************** ** Solidified function: set_val2 ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_val2, /* name */ be_nested_proto( 5, /* nstack */ @@ -9105,7 +8911,7 @@ be_local_closure(class_lvh_chart_set_val2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(add_point2), @@ -9126,7 +8932,6 @@ be_local_closure(class_lvh_chart_set_val2, /* name */ /******************************************************************** ** Solidified function: set_y_min ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_y_min, /* name */ be_nested_proto( 7, /* nstack */ @@ -9135,7 +8940,7 @@ be_local_closure(class_lvh_chart_set_y_min, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(_y_min), @@ -9166,7 +8971,6 @@ be_local_closure(class_lvh_chart_set_y_min, /* name */ /******************************************************************** ** Solidified function: add_point2 ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_add_point2, /* name */ be_nested_proto( 6, /* nstack */ @@ -9175,7 +8979,7 @@ be_local_closure(class_lvh_chart_add_point2, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -9200,7 +9004,6 @@ be_local_closure(class_lvh_chart_add_point2, /* name */ /******************************************************************** ** Solidified function: set_series1_color ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_series1_color, /* name */ be_nested_proto( 6, /* nstack */ @@ -9209,7 +9012,7 @@ be_local_closure(class_lvh_chart_set_series1_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -9234,7 +9037,6 @@ be_local_closure(class_lvh_chart_set_series1_color, /* name */ /******************************************************************** ** Solidified function: set_series2_color ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_series2_color, /* name */ be_nested_proto( 6, /* nstack */ @@ -9243,7 +9045,7 @@ be_local_closure(class_lvh_chart_set_series2_color, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_obj), @@ -9268,7 +9070,6 @@ be_local_closure(class_lvh_chart_set_series2_color, /* name */ /******************************************************************** ** Solidified function: set_y_max ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_y_max, /* name */ be_nested_proto( 7, /* nstack */ @@ -9277,7 +9078,7 @@ be_local_closure(class_lvh_chart_set_y_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(_y_max), @@ -9308,7 +9109,6 @@ be_local_closure(class_lvh_chart_set_y_max, /* name */ /******************************************************************** ** Solidified function: post_init ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_post_init, /* name */ be_nested_proto( 6, /* nstack */ @@ -9317,7 +9117,7 @@ be_local_closure(class_lvh_chart_post_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_str_weak(_y_min), @@ -9382,7 +9182,6 @@ be_local_closure(class_lvh_chart_post_init, /* name */ /******************************************************************** ** Solidified function: get_y_max ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_get_y_max, /* name */ be_nested_proto( 2, /* nstack */ @@ -9391,7 +9190,7 @@ be_local_closure(class_lvh_chart_get_y_max, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_y_max), @@ -9410,7 +9209,6 @@ be_local_closure(class_lvh_chart_get_y_max, /* name */ /******************************************************************** ** Solidified function: set_val ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_val, /* name */ be_nested_proto( 5, /* nstack */ @@ -9419,7 +9217,7 @@ be_local_closure(class_lvh_chart_set_val, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_val), @@ -9442,7 +9240,6 @@ be_local_closure(class_lvh_chart_set_val, /* name */ /******************************************************************** ** Solidified function: set_v_div_line_count ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_v_div_line_count, /* name */ be_nested_proto( 6, /* nstack */ @@ -9451,7 +9248,7 @@ be_local_closure(class_lvh_chart_set_v_div_line_count, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_v_div), @@ -9478,7 +9275,6 @@ be_local_closure(class_lvh_chart_set_v_div_line_count, /* name */ /******************************************************************** ** Solidified function: set_h_div_line_count ********************************************************************/ -extern const bclass be_class_lvh_chart; be_local_closure(class_lvh_chart_set_h_div_line_count, /* name */ be_nested_proto( 6, /* nstack */ @@ -9487,7 +9283,7 @@ be_local_closure(class_lvh_chart_set_h_div_line_count, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_chart, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(_h_div), @@ -9549,7 +9345,6 @@ extern const bclass be_class_lvh_btnmatrix; /******************************************************************** ** Solidified function: set_options ********************************************************************/ -extern const bclass be_class_lvh_btnmatrix; be_local_closure(class_lvh_btnmatrix_set_options, /* name */ be_nested_proto( 5, /* nstack */ @@ -9558,7 +9353,7 @@ be_local_closure(class_lvh_btnmatrix_set_options, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_btnmatrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ /* K0 */ be_const_int(0), @@ -9618,7 +9413,6 @@ be_local_closure(class_lvh_btnmatrix_set_options, /* name */ /******************************************************************** ** Solidified function: get_options ********************************************************************/ -extern const bclass be_class_lvh_btnmatrix; be_local_closure(class_lvh_btnmatrix_get_options, /* name */ be_nested_proto( 2, /* nstack */ @@ -9627,7 +9421,7 @@ be_local_closure(class_lvh_btnmatrix_get_options, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_btnmatrix, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_options), @@ -9714,7 +9508,6 @@ extern const bclass be_class_lvh_page; /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_lvh_page; be_local_closure(class_lvh_page_init, /* name */ be_nested_proto( 10, /* nstack */ @@ -9723,7 +9516,7 @@ be_local_closure(class_lvh_page_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_page, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -9821,7 +9614,6 @@ be_local_closure(class_lvh_page_init, /* name */ /******************************************************************** ** Solidified function: show ********************************************************************/ -extern const bclass be_class_lvh_page; be_local_closure(class_lvh_page_show, /* name */ be_nested_proto( 13, /* nstack */ @@ -9830,7 +9622,7 @@ be_local_closure(class_lvh_page_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { + ( &(const struct bproto*[ 2]) { be_nested_proto( 3, /* nstack */ 0, /* argc */ @@ -9840,7 +9632,7 @@ be_local_closure(class_lvh_page_show, /* name */ be_local_const_upval(1, 3), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -9865,7 +9657,7 @@ be_local_closure(class_lvh_page_show, /* name */ be_local_const_upval(1, 4), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(tasmota), @@ -9881,7 +9673,6 @@ be_local_closure(class_lvh_page_show, /* name */ 0x80040000, // 0004 RET 1 R0 }) ), - &be_class_lvh_page, }), 1, /* has constants */ ( &(const bvalue[18]) { /* constants */ @@ -9982,7 +9773,6 @@ be_local_closure(class_lvh_page_show, /* name */ /******************************************************************** ** Solidified function: id ********************************************************************/ -extern const bclass be_class_lvh_page; be_local_closure(class_lvh_page_id, /* name */ be_nested_proto( 2, /* nstack */ @@ -9991,7 +9781,7 @@ be_local_closure(class_lvh_page_id, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_page, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_page_id), @@ -10010,7 +9800,6 @@ be_local_closure(class_lvh_page_id, /* name */ /******************************************************************** ** Solidified function: get_scr ********************************************************************/ -extern const bclass be_class_lvh_page; be_local_closure(class_lvh_page_get_scr, /* name */ be_nested_proto( 2, /* nstack */ @@ -10019,7 +9808,7 @@ be_local_closure(class_lvh_page_get_scr, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_page, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(_lv_scr), @@ -10038,7 +9827,6 @@ be_local_closure(class_lvh_page_get_scr, /* name */ /******************************************************************** ** Solidified function: get_obj ********************************************************************/ -extern const bclass be_class_lvh_page; be_local_closure(class_lvh_page_get_obj, /* name */ be_nested_proto( 5, /* nstack */ @@ -10047,7 +9835,7 @@ be_local_closure(class_lvh_page_get_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_page, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(_obj_id), @@ -10070,7 +9858,6 @@ be_local_closure(class_lvh_page_get_obj, /* name */ /******************************************************************** ** Solidified function: add_obj ********************************************************************/ -extern const bclass be_class_lvh_page; be_local_closure(class_lvh_page_add_obj, /* name */ be_nested_proto( 7, /* nstack */ @@ -10079,7 +9866,7 @@ be_local_closure(class_lvh_page_add_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_page, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(_obj_id), @@ -10112,7 +9899,6 @@ be_local_closure(class_lvh_page_add_obj, /* name */ /******************************************************************** ** Solidified function: remove_obj ********************************************************************/ -extern const bclass be_class_lvh_page; be_local_closure(class_lvh_page_remove_obj, /* name */ be_nested_proto( 7, /* nstack */ @@ -10121,7 +9907,7 @@ be_local_closure(class_lvh_page_remove_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_lvh_page, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(_obj_id), @@ -10201,7 +9987,6 @@ extern const bclass be_class_HASPmota; /******************************************************************** ** Solidified function: _load ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota__load, /* name */ be_nested_proto( 15, /* nstack */ @@ -10210,7 +9995,7 @@ be_local_closure(class_HASPmota__load, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[26]) { /* constants */ /* K0 */ be_nested_str_weak(string), @@ -10337,7 +10122,6 @@ be_local_closure(class_HASPmota__load, /* name */ /******************************************************************** ** Solidified function: page_show ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_page_show, /* name */ be_nested_proto( 8, /* nstack */ @@ -10346,7 +10130,7 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(lvh_pages), @@ -10441,7 +10225,6 @@ be_local_closure(class_HASPmota_page_show, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_init, /* name */ be_nested_proto( 5, /* nstack */ @@ -10450,7 +10233,7 @@ be_local_closure(class_HASPmota_init, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(fix_lv_version), @@ -10479,7 +10262,6 @@ be_local_closure(class_HASPmota_init, /* name */ /******************************************************************** ** Solidified function: event_dispatch ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_event_dispatch, /* name */ be_nested_proto( 9, /* nstack */ @@ -10488,7 +10270,7 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), @@ -10549,7 +10331,6 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */ /******************************************************************** ** Solidified function: pages_list_sorted ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_pages_list_sorted, /* name */ be_nested_proto( 8, /* nstack */ @@ -10558,7 +10339,7 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_const_int(0), @@ -10630,7 +10411,6 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ /******************************************************************** ** Solidified function: get_page_cur ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_get_page_cur, /* name */ be_nested_proto( 3, /* nstack */ @@ -10639,7 +10419,7 @@ be_local_closure(class_HASPmota_get_page_cur, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(lvh_pages), @@ -10661,7 +10441,6 @@ be_local_closure(class_HASPmota_get_page_cur, /* name */ /******************************************************************** ** Solidified function: fix_lv_version ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_fix_lv_version, /* name */ be_nested_proto( 6, /* nstack */ @@ -10670,7 +10449,7 @@ be_local_closure(class_HASPmota_fix_lv_version, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_const_class(be_class_HASPmota), @@ -10707,7 +10486,6 @@ be_local_closure(class_HASPmota_fix_lv_version, /* name */ /******************************************************************** ** Solidified function: do_action ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_do_action, /* name */ be_nested_proto( 6, /* nstack */ @@ -10716,7 +10494,7 @@ be_local_closure(class_HASPmota_do_action, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(lv), @@ -10745,7 +10523,6 @@ be_local_closure(class_HASPmota_do_action, /* name */ /******************************************************************** ** Solidified function: parse ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_parse, /* name */ be_nested_proto( 9, /* nstack */ @@ -10754,7 +10531,7 @@ be_local_closure(class_HASPmota_parse, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(json), @@ -10800,7 +10577,6 @@ be_local_closure(class_HASPmota_parse, /* name */ /******************************************************************** ** Solidified function: register_event ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_register_event, /* name */ be_nested_proto( 13, /* nstack */ @@ -10809,7 +10585,7 @@ be_local_closure(class_HASPmota_register_event, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { + ( &(const struct bproto*[ 1]) { be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -10819,7 +10595,7 @@ be_local_closure(class_HASPmota_register_event, /* name */ be_local_const_upval(1, 0), }), 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(event_dispatch), @@ -10834,7 +10610,6 @@ be_local_closure(class_HASPmota_register_event, /* name */ 0x80040200, // 0004 RET 1 R1 }) ), - &be_class_HASPmota, }), 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ @@ -10878,7 +10653,6 @@ be_local_closure(class_HASPmota_register_event, /* name */ /******************************************************************** ** Solidified function: page_dir_to ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_page_dir_to, /* name */ be_nested_proto( 7, /* nstack */ @@ -10887,7 +10661,7 @@ be_local_closure(class_HASPmota_page_dir_to, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(pages_list_sorted), @@ -10940,7 +10714,6 @@ be_local_closure(class_HASPmota_page_dir_to, /* name */ /******************************************************************** ** Solidified function: parse_page ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_parse_page, /* name */ be_nested_proto( 9, /* nstack */ @@ -10949,7 +10722,7 @@ be_local_closure(class_HASPmota_parse_page, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[14]) { /* constants */ /* K0 */ be_nested_str_weak(has), @@ -11033,7 +10806,6 @@ be_local_closure(class_HASPmota_parse_page, /* name */ /******************************************************************** ** Solidified function: sort ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_sort, /* name */ be_nested_proto( 7, /* nstack */ @@ -11042,7 +10814,7 @@ be_local_closure(class_HASPmota_sort, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_const_class(be_class_HASPmota), @@ -11092,7 +10864,6 @@ be_local_closure(class_HASPmota_sort, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_start, /* name */ be_nested_proto( 11, /* nstack */ @@ -11101,7 +10872,7 @@ be_local_closure(class_HASPmota_start, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[33]) { /* constants */ /* K0 */ be_nested_str_weak(path), @@ -11255,7 +11026,6 @@ be_local_closure(class_HASPmota_start, /* name */ /******************************************************************** ** Solidified function: parse_obj ********************************************************************/ -extern const bclass be_class_HASPmota; be_local_closure(class_HASPmota_parse_obj, /* name */ be_nested_proto( 22, /* nstack */ @@ -11264,7 +11034,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - &be_class_HASPmota, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[30]) { /* constants */ /* K0 */ be_nested_str_weak(global), @@ -11599,7 +11369,7 @@ be_local_closure(_anonymous_, /* name */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ - NULL, + NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(HASPmota), From 5096a1362060f2aad96f0877f8bc0713d025f693 Mon Sep 17 00:00:00 2001 From: s-hadinger Date: Wed, 24 Jul 2024 21:00:42 +0000 Subject: [PATCH 183/252] Solidified Code updated --- lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h | 2 +- lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h index 401e8f161..2f6e49d3c 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h @@ -72,7 +72,7 @@ be_local_closure(class_AXP192_get_bat_power, /* name */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read24), - /* K1 */ be_const_real_hex(0x3A102DE1), + /* K1 */ be_const_real_hex(0x3A102DE0), }), &be_const_str_get_bat_power, &be_const_str_solidified, diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h index dc27681fd..041409b52 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h @@ -172,7 +172,7 @@ be_local_closure(class_AXP202_get_bat_power, /* name */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str(read24), - /* K1 */ be_const_real_hex(0x3A102DE1), + /* K1 */ be_const_real_hex(0x3A102DE0), }), &be_const_str_get_bat_power, &be_const_str_solidified, From b9fcfa86c9ce9a6897f09844037e025346f4e923 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 25 Jul 2024 13:33:00 +0200 Subject: [PATCH 184/252] Update changelogs --- CHANGELOG.md | 4 ++-- RELEASENOTES.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6a827706..9bfb3eb26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,10 +15,10 @@ All notable changes to this project will be documented in this file. ### Fixed - Berry `light.get` for separate RGB/CT (#21818) -- Berry fix `bytes` setters and getters with negative offsets +- Berry `bytes` setters and getters with negative offsets (#21835) ### Removed -- Berry internal: remove class from closure to simplify code +- Berry internal: remove class from closure to simplify code (#21839) ## [14.1.0.3] 20240722 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b57057ace..3c96a90ae 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -184,9 +184,11 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565) - Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716) - Berry `light.get` for separate RGB/CT [#21818](https://github.com/arendst/Tasmota/issues/21818) +- Berry `bytes` setters and getters with negative offsets [#21835](https://github.com/arendst/Tasmota/issues/21835) - Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636) - Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644) - Matter TLV.U8 unsigned encoding [#21672](https://github.com/arendst/Tasmota/issues/21672) - Matter resumption final ack [#21673](https://github.com/arendst/Tasmota/issues/21673) ### Removed +- Berry internal: remove class from closure to simplify code [#21839](https://github.com/arendst/Tasmota/issues/21839) From 2f33f8e5a88325d8f3813d1dd9a5900eab14371a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 25 Jul 2024 18:04:01 +0200 Subject: [PATCH 185/252] Fix Non-ESP32 Analog read resolution --- tasmota/tasmota_xsns_sensor/xsns_02_analog.ino | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino index 8ad0de246..88928ab19 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino @@ -35,6 +35,7 @@ #define ANALOG_RANGE 1023 // 4095 = 12, 2047 = 11, 1023 = 10 #define ANALOG_PERCENT 10 // backward compatible div10 range #endif // ESP8266 + #ifdef ESP32 #undef ANALOG_RESOLUTION #define ANALOG_RESOLUTION 12 // 12 = 4095, 11 = 2047, 10 = 1023 @@ -305,10 +306,8 @@ void AdcInit(void) { if (Adcs.present) { #ifdef ESP32 -#if CONFIG_IDF_TARGET_ESP32 - analogSetWidth(ANALOG_RESOLUTION); // Default 12 bits (0 - 4095) -#endif // CONFIG_IDF_TARGET_ESP32 - analogSetAttenuation(ADC_11db); // Default 11db + analogReadResolution(ANALOG_RESOLUTION); // Default 12 bits (0 - 4095) + analogSetAttenuation(ADC_11db); // Default 11db #endif for (uint32_t idx = 0; idx < Adcs.present; idx++) { AdcGetSettings(idx); From 1b887d7202adc7606f69c16b1af9ca0b6525e965 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 25 Jul 2024 22:53:02 +0200 Subject: [PATCH 186/252] Berry consolidated constants for solidified classes reduces Flash size (#21845) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_gc.c | 6 +- lib/libesp32/berry/src/be_object.h | 1 + lib/libesp32/berry/src/be_solidifylib.c | 365 +- .../src/solidify/solidified_animate_1_core.h | 466 +- .../solidified_animate_2_animate_effects.h | 150 +- .../solidify/solidified_animate_9_module.h | 800 ++- .../solidified_leds_frame_be_methods.h | 49 +- .../solidified_Matter_Commissioning.h | 1900 +++---- .../solidified_Matter_Control_Message.h | 117 +- .../solidify/solidified_Matter_EventHandler.h | 659 ++- .../solidify/solidified_Matter_Expirable.h | 235 +- .../src/solidify/solidified_Matter_Fabric.h | 1073 ++-- .../solidify/solidified_Matter_HTTP_async.h | 688 +-- .../solidify/solidified_Matter_HTTP_remote.h | 782 ++- .../src/solidify/solidified_Matter_IM.h | 2568 ++++----- .../src/solidify/solidified_Matter_IM_Data.h | 1505 +++-- .../solidify/solidified_Matter_IM_Message.h | 819 ++- .../solidified_Matter_IM_Subscription.h | 589 +- .../src/solidify/solidified_Matter_Message.h | 1111 ++-- .../solidified_Matter_MessageHandler.h | 564 +- .../src/solidify/solidified_Matter_Path_0.h | 135 +- .../solidified_Matter_Path_1_EventGenerator.h | 141 +- .../solidified_Matter_Path_1_PathGenerator.h | 400 +- .../src/solidify/solidified_Matter_Plugin_0.h | 638 +-- .../solidified_Matter_Plugin_1_Aggregator.h | 79 +- .../solidified_Matter_Plugin_1_Device.h | 921 ++-- .../solidified_Matter_Plugin_1_Root.h | 1048 ++-- .../solidify/solidified_Matter_Plugin_2_Fan.h | 302 +- .../solidified_Matter_Plugin_2_Light0.h | 366 +- .../solidified_Matter_Plugin_2_Sensor.h | 238 +- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 329 +- ...olidified_Matter_Plugin_2_Sensor_Boolean.h | 129 +- ...Matter_Plugin_2_Sensor_GenericSwitch_Btn.h | 260 +- .../solidified_Matter_Plugin_2_Shutter.h | 422 +- .../solidified_Matter_Plugin_3_Light1.h | 493 +- ...olidified_Matter_Plugin_3_Sensor_Contact.h | 136 +- .../solidified_Matter_Plugin_3_Sensor_Flow.h | 103 +- ...lidified_Matter_Plugin_3_Sensor_Humidity.h | 103 +- ...ified_Matter_Plugin_3_Sensor_Illuminance.h | 119 +- ...idified_Matter_Plugin_3_Sensor_Occupancy.h | 160 +- .../solidified_Matter_Plugin_3_Sensor_OnOff.h | 53 +- ...lidified_Matter_Plugin_3_Sensor_Pressure.h | 101 +- .../solidified_Matter_Plugin_3_Sensor_Rain.h | 136 +- .../solidified_Matter_Plugin_3_Sensor_Temp.h | 131 +- ...idified_Matter_Plugin_3_Sensor_Waterleak.h | 128 +- .../solidified_Matter_Plugin_3_ShutterTilt.h | 274 +- .../solidified_Matter_Plugin_4_Light2.h | 411 +- .../solidified_Matter_Plugin_4_Light3.h | 566 +- .../src/solidify/solidified_Matter_Profiler.h | 185 +- .../src/solidify/solidified_Matter_Session.h | 967 ++-- .../solidified_Matter_Session_Store.h | 729 ++- .../solidify/solidified_Matter_TCP_async.h | 416 +- .../src/solidify/solidified_Matter_TLV.h | 2118 ++++--- .../solidify/solidified_Matter_UDPServer.h | 498 +- .../src/solidify/solidified_Matter_UI.h | 1 + .../solidify/solidified_Matter_zz_Device.h | 1 + lib/libesp32/berry_tasmota/solidify_all.be | 1 + .../src/solidify/solidified_autoconf_module.h | 896 ++- .../solidified_crypto_spake2p_matter.h | 630 +-- .../src/solidify/solidified_dyn.h | 39 +- .../src/solidify/solidified_hue_bridge.h | 359 +- .../src/solidify/solidified_i2c_axp192.h | 419 +- .../src/solidify/solidified_i2c_axp202.h | 347 +- .../src/solidify/solidified_i2c_driver.h | 266 +- .../src/solidify/solidified_i2c_ft3663.h | 130 +- .../src/solidify/solidified_leds.h | 1849 +++---- .../src/solidify/solidified_lv_tasmota.h | 45 +- .../solidify/solidified_lv_tasmota_widgets.h | 699 ++- .../src/solidify/solidified_mqtt.h | 518 +- .../src/solidify/solidified_partition_core.h | 1308 ++--- .../src/solidify/solidified_persist.h | 288 +- .../src/solidify/solidified_rule_matcher.h | 495 +- .../src/solidify/solidified_tapp.h | 75 +- .../src/solidify/solidified_tasmota_class.h | 1310 ++--- .../src/solidify/solidified_trigger_class.h | 72 +- .../src/solidify/solidified_zigbee_zb_coord.h | 129 +- .../solidified_zigbee_zcl_attribute.h | 473 +- .../solidify/solidified_zigbee_zcl_frame.h | 79 +- .../src/solidify/solidified_lvgl_glob.h | 667 +-- .../src/solidify/solidified_lv_haspmota.h | 4890 ++++++++--------- 81 files changed, 19944 insertions(+), 23725 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bfb3eb26..c17b966d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. ### Breaking Changed ### Changed +- Berry consolidated constants for solidified classes reduces Flash size ### Fixed - Berry `light.get` for separate RGB/CT (#21818) diff --git a/lib/libesp32/berry/src/be_gc.c b/lib/libesp32/berry/src/be_gc.c index ee5e1a062..35b0737f7 100644 --- a/lib/libesp32/berry/src/be_gc.c +++ b/lib/libesp32/berry/src/be_gc.c @@ -320,7 +320,11 @@ static void free_proto(bvm *vm, bgcobject *obj) bproto *proto = cast_proto(obj); gc_try (proto != NULL) { be_free(vm, proto->upvals, proto->nupvals * sizeof(bupvaldesc)); - be_free(vm, proto->ktab, proto->nconst * sizeof(bvalue)); + if (!(proto->varg & BE_VA_SHARED_KTAB)) { /* do not free shared ktab */ + /*caveat: the shared ktab is never GCed, in practice this is not a problem */ + /* since shared ktab are primarily meant for solidification hence not gc-able */ + be_free(vm, proto->ktab, proto->nconst * sizeof(bvalue)); + } be_free(vm, proto->ptab, proto->nproto * sizeof(bproto*)); be_free(vm, proto->code, proto->codesize * sizeof(binstruction)); #if BE_DEBUG_RUNTIME_INFO diff --git a/lib/libesp32/berry/src/be_object.h b/lib/libesp32/berry/src/be_object.h index d479f9b10..986f693d8 100644 --- a/lib/libesp32/berry/src/be_object.h +++ b/lib/libesp32/berry/src/be_object.h @@ -42,6 +42,7 @@ #define BE_VA_VARARG (1 << 0) /* function has variable number of arguments */ #define BE_VA_METHOD (1 << 1) /* function is a method (this is only a hint) */ #define BE_VA_STATICMETHOD (1 << 2) /* the function is a static method and has the class as implicit '_class' variable */ +#define BE_VA_SHARED_KTAB (1 << 3) /* the funciton has a shared consolidated ktab */ #define array_count(a) (sizeof(a) / sizeof((a)[0])) #define bcommon_header \ diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c index e1790ddb2..a24837682 100644 --- a/lib/libesp32/berry/src/be_solidifylib.c +++ b/lib/libesp32/berry/src/be_solidifylib.c @@ -114,9 +114,9 @@ static void toidentifier(char *to, const char *p) *to = 0; // final NULL } -static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout); +static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefix_name, const char *key, void* fout); -static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *prefixname, void* fout) +static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *prefix_name, void* fout) { // compact first be_map_compact(vm, map); @@ -144,14 +144,14 @@ static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *p } else { logfmt(" { be_const_key_weak(%s, %i), ", id_buf, key_next); } - m_solidify_bvalue(vm, str_literal, &node->value, prefixname, str(node->key.v.s), fout); + m_solidify_bvalue(vm, str_literal, &node->value, prefix_name, str(node->key.v.s), fout); } else if (node->key.type == BE_INT) { #if BE_INTGER_TYPE == 2 logfmt(" { be_const_key_int(%lli, %i), ", node->key.v.i, key_next); #else logfmt(" { be_const_key_int(%i, %i), ", node->key.v.i, key_next); #endif - m_solidify_bvalue(vm, str_literal, &node->value, prefixname, NULL, fout); + m_solidify_bvalue(vm, str_literal, &node->value, prefix_name, NULL, fout); } else { char error[64]; snprintf(error, sizeof(error), "Unsupported type in key: %i", node->key.type); @@ -164,21 +164,21 @@ static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *p } -static void m_solidify_list(bvm *vm, bbool str_literal, const blist * list, const char *prefixname, void* fout) +static void m_solidify_list(bvm *vm, bbool str_literal, const blist * list, const char *prefix_name, void* fout) { logfmt(" be_nested_list(%i,\n", list->count); logfmt(" ( (struct bvalue*) &(const bvalue[]) {\n"); for (int i = 0; i < list->count; i++) { logfmt(" "); - m_solidify_bvalue(vm, str_literal, &list->data[i], prefixname, "", fout); + m_solidify_bvalue(vm, str_literal, &list->data[i], prefix_name, "", fout); logfmt(",\n"); } logfmt(" }))"); // TODO need terminal comma? } // pass key name in case of class, or NULL if none -static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout) +static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefix_name, const char *key, void* fout) { int type = var_primetype(value); switch (type) { @@ -247,7 +247,7 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, toidentifier(func_name_id, func_name); logfmt("be_const_%sclosure(%s%s%s_closure)", var_isstatic(value) ? "static_" : "", - prefixname ? prefixname : "", prefixname ? "_" : "", + prefix_name ? prefix_name : "", prefix_name ? "_" : "", func_name_id); } break; @@ -255,12 +255,12 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, logfmt("be_const_class(be_class_%s)", str(((bclass*) var_toobj(value))->name)); break; case BE_COMPTR: - logfmt("be_const_comptr(&be_ntv_%s_%s)", prefixname ? prefixname : "unknown", key ? key : "unknown"); + logfmt("be_const_comptr(&be_ntv_%s_%s)", prefix_name ? prefix_name : "unknown", key ? key : "unknown"); break; case BE_NTVFUNC: logfmt("be_const_%sfunc(be_ntv_%s_%s)", var_isstatic(value) ? "static_" : "", - prefixname ? prefixname : "unknown", key ? key : "unknown"); + prefix_name ? prefix_name : "unknown", key ? key : "unknown"); break; case BE_INSTANCE: { @@ -290,16 +290,16 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, } else { logfmt(" be_const_list( * "); } - m_solidify_bvalue(vm, str_literal, &ins->members[0], prefixname, key, fout); + m_solidify_bvalue(vm, str_literal, &ins->members[0], prefix_name, key, fout); logfmt(" ) } ))"); } } break; case BE_MAP: - m_solidify_map(vm, str_literal, (bmap *) var_toobj(value), prefixname, fout); + m_solidify_map(vm, str_literal, (bmap *) var_toobj(value), prefix_name, fout); break; case BE_LIST: - m_solidify_list(vm, str_literal, (blist *) var_toobj(value), prefixname, fout); + m_solidify_list(vm, str_literal, (blist *) var_toobj(value), prefix_name, fout); break; default: { @@ -316,7 +316,7 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cl, vo static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bproto *pr, void* fout) { // parse any class in constants to output it first - if (pr->nconst > 0) { + if ((pr->nconst > 0) && (!(pr->varg & BE_VA_SHARED_KTAB))) { /* if shared ktab, this was done already earlier */ for (int k = 0; k < pr->nconst; k++) { if (var_type(&pr->ktab[k]) == BE_CLASS) { if ((k == 0) && (pr->varg & BE_VA_STATICMETHOD)) { @@ -330,7 +330,7 @@ static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bprot } } -static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, int indent, void* fout) +static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, int indent, const char * prefix_name, void* fout) { logfmt("%*sbe_nested_proto(\n", indent, ""); indent += 2; @@ -357,7 +357,7 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const size_t sub_len = strlen(func_name) + 10; char sub_name[sub_len]; snprintf(sub_name, sizeof(sub_name), "%s_%"PRId32, func_name, i); - m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, indent+2, fout); + m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, indent+2, prefix_name, fout); logfmt(",\n"); } logfmt("%*s}),\n", indent, ""); @@ -367,13 +367,18 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const logfmt("%*s%d, /* has constants */\n", indent, "", (pr->nconst > 0) ? 1 : 0); if (pr->nconst > 0) { - logfmt("%*s( &(const bvalue[%2d]) { /* constants */\n", indent, "", pr->nconst); - for (int k = 0; k < pr->nconst; k++) { - logfmt("%*s/* K%-3d */ ", indent, "", k); - m_solidify_bvalue(vm, str_literal, &pr->ktab[k], NULL, NULL, fout); - logfmt(",\n"); + // we output the full table unless it's a shared ktab + if (pr->varg & BE_VA_SHARED_KTAB) { + logfmt("%*s&be_ktab_%s, /* shared constants */\n", indent, "", prefix_name); + } else { + logfmt("%*s( &(const bvalue[%2d]) { /* constants */\n", indent, "", pr->nconst); + for (int k = 0; k < pr->nconst; k++) { + logfmt("%*s/* K%-3d */ ", indent, "", k); + m_solidify_bvalue(vm, str_literal, &pr->ktab[k], NULL, NULL, fout); + logfmt(",\n"); + } + logfmt("%*s}),\n", indent, ""); } - logfmt("%*s}),\n", indent, ""); } else { logfmt("%*sNULL, /* no const */\n", indent, ""); } @@ -413,7 +418,7 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const } -static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, const char * prefixname, void* fout) +static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, const char * prefix_name, void* fout) { bproto *pr = clo->proto; const char * func_name = str(pr->name); @@ -437,11 +442,11 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, char func_name_id[id_len]; toidentifier(func_name_id, func_name); logfmt("be_local_closure(%s%s%s, /* name */\n", - prefixname ? prefixname : "", prefixname ? "_" : "", + prefix_name ? prefix_name : "", prefix_name ? "_" : "", func_name_id); } - m_solidify_proto(vm, str_literal, pr, func_name, indent, fout); + m_solidify_proto(vm, str_literal, pr, func_name, indent, prefix_name, fout); logfmt("\n"); // closure @@ -449,11 +454,17 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, logfmt("/*******************************************************************/\n\n"); } +static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* fout); + static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, void* fout) { const char * classname = str(cla->name); - char prefixname[strlen(classname) + 10]; - snprintf(prefixname, sizeof(prefixname), "class_%s", classname); + + /* TODO try compacting for now */ + m_compact_class(vm, str_literal, cla, fout); + + char prefix_name[strlen(classname) + 10]; + snprintf(prefix_name, sizeof(prefix_name), "class_%s", classname); /* pre-declare class to support '_class' implicit variable */ logfmt("\nextern const bclass be_class_%s;\n", classname); @@ -464,7 +475,7 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v while ((node = be_map_next(cla->members, &iter)) != NULL) { if (var_isstr(&node->key) && var_isclosure(&node->value)) { bclosure *f = var_toobj(&node->value); - m_solidify_closure(vm, str_literal, f, prefixname, fout); + m_solidify_closure(vm, str_literal, f, prefix_name, fout); } } } @@ -488,7 +499,7 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v } if (cla->members) { - m_solidify_map(vm, str_literal, cla->members, prefixname, fout); + m_solidify_map(vm, str_literal, cla->members, prefix_name, fout); logfmt(",\n"); } else { logfmt(" NULL,\n"); @@ -514,8 +525,8 @@ static void m_solidify_module(bvm *vm, bbool str_literal, bmodule *ml, void* fou { const char * modulename = be_module_name(ml); if (!modulename) { modulename = ""; } - // char prefixname[strlen(modulename) + 10]; - // snprintf(prefixname, sizeof(prefixname), "module_%s", modulename); + // char prefix_name[strlen(modulename) + 10]; + // snprintf(prefix_name, sizeof(prefix_name), "module_%s", modulename); /* iterate on members to dump closures and classes */ if (ml->table) { @@ -571,12 +582,12 @@ static int m_dump(bvm *vm) } be_pop(vm, 1); } - const char *prefixname = NULL; /* allow to specify an explicit prefix */ + const char *prefix_name = NULL; /* allow to specify an explicit prefix */ if (top >= 4 && be_isstring(vm, 4)) { - prefixname = be_tostring(vm, 4); + prefix_name = be_tostring(vm, 4); } if (var_isclosure(v)) { - m_solidify_closure(vm, str_literal, var_toobj(v), prefixname, fout); + m_solidify_closure(vm, str_literal, var_toobj(v), prefix_name, fout); } else if (var_isclass(v)) { m_solidify_class(vm, str_literal, var_toobj(v), fout); } else if (var_ismodule(v)) { @@ -588,9 +599,294 @@ static int m_dump(bvm *vm) be_return_nil(vm); } +static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* fout) +{ + const char * classname = str(cla->name); + + /* reserve an array big enough for max size ktab (256) */ + const int MAX_KTAB_SIZE = 256; + bvalue ktab[MAX_KTAB_SIZE]; /* size is 2048 byte for 32 bits, so fitting in ESP32, may need to be changed on smaller architectures */ + int ktab_size = 0; + + /* for statistics, keep the aggregate number of bvalues */ + int ktab_total = 0; + + /* iterate on members to dump closures */ + if (cla->members) { + bmapnode *node; + bmapiter iter = be_map_iter(); + + /* first iteration to build the global ktab */ + while ((node = be_map_next(cla->members, &iter)) != NULL) { + if (var_isstr(&node->key) && var_isclosure(&node->value)) { + bclosure *cl = var_toobj(&node->value); + bproto *pr = cl->proto; + + if (pr->varg & BE_VA_SHARED_KTAB) { continue; } + + // iterate on each bvalue in ktab + for (int i = 0; i < pr->nconst; i++) { + // look if the bvalue pair is already in ktab + int found = 0; + for (int j = 0; j < ktab_size; j++) { + // to avoid any size issue, we compare all bytes + // berry_log_C("// p1=%p p2=%p sz=%i", &pr->ktab[i], &ktab[j], sizeof(bvalue)); + if ((pr->ktab[i].type == ktab[j].type) && (pr->ktab[i].v.i == ktab[j].v.i) && (pr->ktab[i].v.c == ktab[j].v.c)) { + // if (memcmp(&pr->ktab[i], &ktab[j], sizeof(bvalue)) == 0) { + found = 1; + break; + } + } + // if not already there, add it + if (!found) { + ktab[ktab_size++] = pr->ktab[i]; + } + if (ktab_size >= MAX_KTAB_SIZE) { + logfmt("// ktab too big for class '%s' - skipping\n", classname); + return; + } + } + ktab_total += pr->nconst; + } + } + + if (ktab_size == ktab_total) { + return; /* nothing to optimize, can happen for classes with zero or 1 method */ + } + /* allocate a proper ktab */ + bvalue *new_ktab = be_malloc(vm, sizeof(bvalue) * ktab_size); + memmove(new_ktab, ktab, sizeof(bvalue) * ktab_size); + + /* second iteration to replace ktab and patch code */ + iter = be_map_iter(); + while ((node = be_map_next(cla->members, &iter)) != NULL) { + if (var_isstr(&node->key) && var_isclosure(&node->value)) { + bclosure *cl = var_toobj(&node->value); + bproto *pr = cl->proto; + + if (pr->varg & BE_VA_SHARED_KTAB) { continue; } + + uint8_t mapping_array[MAX_KTAB_SIZE]; + // iterate in proto ktab to get the index in the global ktab + for (int i = 0; i < pr->nconst; i++) { + for (int j = 0; j < ktab_size; j++) { + // compare all bytes + if ((pr->ktab[i].type == ktab[j].type) && (pr->ktab[i].v.i == ktab[j].v.i) && (pr->ktab[i].v.c == ktab[j].v.c)) { + // if (memcmp(&pr->ktab[i], &ktab[j], sizeof(bvalue)) == 0) { + mapping_array[i] = j; + break; + } + } + } + + // replace ktab + pr->ktab = new_ktab; + pr->nconst = ktab_size; + // flag as shared ktab + pr->varg |= BE_VA_SHARED_KTAB; + // parse code to replace any K reference + for (int pc = 0; pc < pr->codesize; pc++) { + uint32_t ins = pr->code[pc]; + bopcode op = IGET_OP(ins); + + + switch (op) { + case OP_ADD: case OP_SUB: case OP_MUL: case OP_DIV: + case OP_MOD: case OP_LT: case OP_LE: case OP_EQ: + case OP_NE: case OP_GT: case OP_GE: case OP_CONNECT: + case OP_GETMBR: case OP_SETMBR: case OP_GETMET: case OP_SETMET: + case OP_GETIDX: case OP_SETIDX: case OP_AND: + case OP_OR: case OP_XOR: case OP_SHL: case OP_SHR: + case OP_RAISE: + // B and C might contain 'K' constant + if (isKB(ins)) { + int kidx = IGET_RKB(ins) & KR_MASK; + if (kidx >= ktab_size) { + be_raise(vm, "value_error", "invalid ktab index"); + } + ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx])); + } + if (isKC(ins)) { + int kidx = IGET_RKC(ins) & KR_MASK; + if (kidx >= ktab_size) { + be_raise(vm, "value_error", "invalid ktab index"); + } + ins = (ins & ~IRKC_MASK) | ISET_RKC(setK(mapping_array[kidx])); + } + pr->code[pc] = ins; + break; + case OP_MOVE: case OP_SETSUPER: case OP_NEG: case OP_FLIP: case OP_IMPORT: + case OP_GETNGBL: case OP_SETNGBL: + // Only B might contain 'K' constant + if (isKB(ins)) { + int kidx = IGET_RKB(ins) & KR_MASK; + if (kidx >= ktab_size) { + be_raise(vm, "value_error", "invalid ktab index"); + } + ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx])); + } + pr->code[pc] = ins; + break; + case OP_CLASS: + case OP_LDCONST: + // Bx contains the K + { + int kidx = IGET_Bx(ins); + if (kidx >= ktab_size) { + be_raise(vm, "value_error", "invalid ktab index"); + } + ins = (ins & ~IBx_MASK) | ISET_Bx(mapping_array[kidx]); + pr->code[pc] = ins; + } + break; + // case OP_GETGBL: case OP_SETGBL: + // logbuf("%s\tR%d\tG%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); + // break; + // case OP_MOVE: case OP_SETSUPER: case OP_NEG: case OP_FLIP: case OP_IMPORT: + // logbuf("%s\tR%d\t%c%d", opc2str(op), IGET_RA(ins), + // isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK); + // break; + // case OP_JMP: + // logbuf("%s\t\t#%.4X", opc2str(op), IGET_sBx(ins) + pc + 1); + // break; + // case OP_JMPT: case OP_JMPF: + // logbuf("%s\tR%d\t#%.4X", opc2str(op), IGET_RA(ins), IGET_sBx(ins) + pc + 1); + // break; + // case OP_LDINT: + // logbuf("%s\tR%d\t%d", opc2str(op), IGET_RA(ins), IGET_sBx(ins)); + // break; + // case OP_LDBOOL: + // logbuf("%s\tR%d\t%d\t%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins), IGET_RKC(ins)); + // break; + case OP_RET: + if (IGET_RA(ins)) { + // Only B might contain 'K' constant + if (isKB(ins)) { + int kidx = IGET_RKB(ins) & KR_MASK; + if (kidx >= ktab_size) { + be_raise(vm, "value_error", "invalid ktab index"); + } + ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx])); + } + } + pr->code[pc] = ins; + break; + // case OP_GETUPV: case OP_SETUPV: + // logbuf("%s\tR%d\tU%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); + // break; + // case OP_LDCONST: + // logbuf("%s\tR%d\tK%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); + // break; + // case OP_CALL: + // logbuf("%s\tR%d\t%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins)); + // break; + // case OP_CLOSURE: + // logbuf("%s\tR%d\tP%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); + // break; + // case OP_CLASS: + // logbuf("%s\tK%d", opc2str(op), IGET_Bx(ins)); + // break; + // case OP_CLOSE: case OP_LDNIL: + // logbuf("%s\tR%d", opc2str(op), IGET_RA(ins)); + // break; + // case OP_RAISE: + // logbuf("%s\t%d\t%c%d\t%c%d", opc2str(op), IGET_RA(ins), + // isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK, + // isKC(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); + // break; + // case OP_EXBLK: + // if (IGET_RA(ins)) { + // logbuf("%s\t%d\t%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); + // } else { + // logbuf("%s\t%d\t#%.4X", opc2str(op), IGET_RA(ins), IGET_sBx(ins) + pc + 1); + // } + // break; + // case OP_CATCH: + // logbuf("%s\tR%d\t%d\t%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins), IGET_RKC(ins)); + // break; + default: + break; + } + + } + } + } + } + // logfmt("extern const bclass be_class_%s;\n", classname); + // scan classes and generate extern statements for classes + for (int k = 0; k < ktab_size; k++) { + // if it's a class, print an extern statement + if (var_isclass(&ktab[k])) { + bclass *cl = var_toobj(&ktab[k]); + logfmt("extern const bclass be_class_%s;\n", str(cl->name)); + } + } + + // scan again to export all sub-classes + for (int k = 0; k < ktab_size; k++) { + // if it's a class, print an extern statement + if (var_isclass(&ktab[k])) { + bclass *cl = var_toobj(&ktab[k]); + if (cl != cla) { + m_solidify_subclass(vm, str_literal, cl, fout); + } + } + } + + // output shared ktab + int indent = 0; + logfmt("// compact class '%s' ktab size: %d, total: %d (saved %i bytes)\n", classname, ktab_size, ktab_total, (ktab_total - ktab_size) * 8); + logfmt("static const bvalue be_ktab_class_%s[%i] = {\n", classname, ktab_size); + for (int k = 0; k < ktab_size; k++) { + logfmt("%*s/* K%-3d */ ", indent + 2, "", k); + m_solidify_bvalue(vm, str_literal, &ktab[k], NULL, NULL, fout); + logfmt(",\n"); + } + logfmt("%*s};\n", indent, ""); + logfmt("\n"); +} + +// takes a class or a module +// scans all first level bproto +// build a consolidated 'ktab' array +// check that the array is not bigger than 256 (which is the max acceptable constants) +// (for now) print the potential saving +static int m_compact(bvm *vm) +{ + int top = be_top(vm); + if (top >= 1) { + bvalue *v = be_indexof(vm, 1); + bbool str_literal = bfalse; + if (top >= 2) { + str_literal = be_tobool(vm, 2); + } + void* fout = NULL; /* output file */ + if (top >= 3 && be_isinstance(vm, 3)) { + be_getmember(vm, 3, ".p"); + if (be_iscomptr(vm, -1)) { + fout = be_tocomptr(vm, -1); + } + be_pop(vm, 1); + } + // const char *prefix_name = NULL; /* allow to specify an explicit prefix */ + // if (top >= 4 && be_isstring(vm, 4)) { + // prefix_name = be_tostring(vm, 4); + // } + if (var_isclass(v)) { + m_compact_class(vm, str_literal, var_toobj(v), fout); + } else if (var_ismodule(v)) { + // TODO + } else { + be_raise(vm, "value_error", "unsupported type"); + } + } + be_return_nil(vm); +} + #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(solidify) { be_native_module_function("dump", m_dump), + be_native_module_function("compact", m_compact), }; be_define_native_module(solidify, NULL); @@ -598,6 +894,7 @@ be_define_native_module(solidify, NULL); /* @const_object_info_begin module solidify (scope: global, depend: BE_USE_SOLIDIFY_MODULE) { dump, func(m_dump) + compact, func(m_compact) } @const_object_info_end */ #include "../generate/be_fixed_solidify.h" diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h index a3c954061..74d6411eb 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h @@ -3,6 +3,59 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Animate_core' ktab size: 49, total: 98 (saved 392 bytes) +static const bvalue be_ktab_class_Animate_core[49] = { + /* K0 */ be_nested_str_weak(stop), + /* K1 */ be_nested_str_weak(strip), + /* K2 */ be_nested_str_weak(clear), + /* K3 */ be_nested_str_weak(set_bri), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(scale_uint), + /* K6 */ be_nested_str_weak(bri), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(painters), + /* K9 */ be_nested_str_weak(remove), + /* K10 */ be_nested_str_weak(find), + /* K11 */ be_nested_str_weak(running), + /* K12 */ be_nested_str_weak(animators), + /* K13 */ be_const_int(0), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(remove_fast_loop), + /* K16 */ be_nested_str_weak(fast_loop_cb), + /* K17 */ be_nested_str_weak(set_strip_bri), + /* K18 */ be_nested_str_weak(push), + /* K19 */ be_nested_str_weak(time_reached), + /* K20 */ be_nested_str_weak(fast_loop_next), + /* K21 */ be_nested_str_weak(can_show), + /* K22 */ be_nested_str_weak(frame), + /* K23 */ be_nested_str_weak(fill_pixels), + /* K24 */ be_nested_str_weak(back_color), + /* K25 */ be_nested_str_weak(millis), + /* K26 */ be_nested_str_weak(FAST_LOOP_MIN), + /* K27 */ be_nested_str_weak(animate), + /* K28 */ be_nested_str_weak(layer), + /* K29 */ be_const_int(-16777216), + /* K30 */ be_nested_str_weak(paint), + /* K31 */ be_nested_str_weak(blend_pixels), + /* K32 */ be_nested_str_weak(obj), + /* K33 */ be_nested_str_weak(mth), + /* K34 */ be_nested_str_weak(paste_pixels), + /* K35 */ be_nested_str_weak(pixels_buffer), + /* K36 */ be_nested_str_weak(get_bri), + /* K37 */ be_nested_str_weak(get_gamma), + /* K38 */ be_nested_str_weak(dirty), + /* K39 */ be_nested_str_weak(show), + /* K40 */ be_nested_str_weak(global), + /* K41 */ be_nested_str_weak(_cur_anim), + /* K42 */ be_nested_str_weak(pixel_count), + /* K43 */ be_nested_str_weak(set_current), + /* K44 */ be_nested_str_weak(set_cb), + /* K45 */ be_nested_str_weak(set_back_color), + /* K46 */ be_nested_str_weak(add_animator), + /* K47 */ be_nested_str_weak(start), + /* K48 */ be_nested_str_weak(add_fast_loop), +}; + extern const bclass be_class_Animate_core; @@ -13,17 +66,13 @@ be_local_closure(class_Animate_core_clear, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(stop), - /* K1 */ be_nested_str_weak(strip), - /* K2 */ be_nested_str_weak(clear), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(clear), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ @@ -46,31 +95,24 @@ be_local_closure(class_Animate_core_set_strip_bri, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(strip), - /* K1 */ be_nested_str_weak(set_bri), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_nested_str_weak(bri), - /* K5 */ be_const_int(0), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(set_strip_bri), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x8C0C0703, // 0003 GETMET R3 R3 K3 - 0x88140104, // 0004 GETMBR R5 R0 K4 - 0x58180005, // 0005 LDCONST R6 K5 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040303, // 0001 GETMET R1 R1 K3 + 0xB80E0800, // 0002 GETNGBL R3 K4 + 0x8C0C0705, // 0003 GETMET R3 R3 K5 + 0x88140106, // 0004 GETMBR R5 R0 K6 + 0x58180007, // 0005 LDCONST R6 K7 0x541E0063, // 0006 LDINT R7 100 - 0x58200005, // 0007 LDCONST R8 K5 + 0x58200007, // 0007 LDCONST R8 K7 0x542600FE, // 0008 LDINT R9 255 0x7C0C0C00, // 0009 CALL R3 6 0x7C040400, // 000A CALL R1 2 @@ -88,32 +130,27 @@ be_local_closure(class_Animate_core_remove_painter, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(painters), - /* K1 */ be_nested_str_weak(remove), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(clear), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(remove_painter), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080108, // 0000 GETMBR R2 R0 K8 0x4C0C0000, // 0001 LDNIL R3 0x200C0203, // 0002 NE R3 R1 R3 0x780E0005, // 0003 JMPF R3 #000A - 0x8C0C0501, // 0004 GETMET R3 R2 K1 - 0x8C140502, // 0005 GETMET R5 R2 K2 + 0x8C0C0509, // 0004 GETMET R3 R2 K9 + 0x8C14050A, // 0005 GETMET R5 R2 K10 0x5C1C0200, // 0006 MOVE R7 R1 0x7C140400, // 0007 CALL R5 2 0x7C0C0400, // 0008 CALL R3 2 0x70020001, // 0009 JMP #000C - 0x8C0C0503, // 000A GETMET R3 R2 K3 + 0x8C0C0502, // 000A GETMET R3 R2 K2 0x7C0C0200, // 000B CALL R3 1 0x80000000, // 000C RET 0 }) @@ -129,42 +166,33 @@ be_local_closure(class_Animate_core_stop, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(running), - /* K1 */ be_nested_str_weak(animators), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(remove_fast_loop), - /* K7 */ be_nested_str_weak(fast_loop_cb), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(stop), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x58080002, // 0003 LDCONST R2 K2 + 0x90021601, // 0001 SETMBR R0 K11 R1 + 0x8804010C, // 0002 GETMBR R1 R0 K12 + 0x5808000D, // 0003 LDCONST R2 K13 0x600C000C, // 0004 GETGBL R3 G12 0x5C100200, // 0005 MOVE R4 R1 0x7C0C0200, // 0006 CALL R3 1 0x140C0403, // 0007 LT R3 R2 R3 0x780E0004, // 0008 JMPF R3 #000E 0x940C0202, // 0009 GETIDX R3 R1 R2 - 0x8C0C0703, // 000A GETMET R3 R3 K3 + 0x8C0C0700, // 000A GETMET R3 R3 K0 0x7C0C0200, // 000B CALL R3 1 - 0x00080504, // 000C ADD R2 R2 K4 + 0x0008050E, // 000C ADD R2 R2 K14 0x7001FFF5, // 000D JMP #0004 - 0xB80E0A00, // 000E GETNGBL R3 K5 - 0x8C0C0706, // 000F GETMET R3 R3 K6 - 0x88140107, // 0010 GETMBR R5 R0 K7 + 0xB80E0800, // 000E GETNGBL R3 K4 + 0x8C0C070F, // 000F GETMET R3 R3 K15 + 0x88140110, // 0010 GETMBR R5 R0 K16 0x7C0C0400, // 0011 CALL R3 2 0x80000000, // 0012 RET 0 }) @@ -180,19 +208,17 @@ be_local_closure(class_Animate_core_get_bri, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(bri), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(get_bri), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080106, // 0000 GETMBR R2 R0 K6 0x80040400, // 0001 RET 1 R2 }) ) @@ -207,21 +233,18 @@ be_local_closure(class_Animate_core_set_bri, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(bri), - /* K1 */ be_nested_str_weak(set_strip_bri), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(set_bri), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x90020C01, // 0000 SETMBR R0 K6 R1 + 0x8C080111, // 0001 GETMET R2 R0 K17 0x7C080200, // 0002 CALL R2 1 0x80000000, // 0003 RET 0 }) @@ -237,29 +260,25 @@ be_local_closure(class_Animate_core_add_painter, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(painters), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(push), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(add_painter), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x8C08050A, // 0001 GETMET R2 R2 K10 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0003, // 0006 JMPF R2 #000B - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x8C080502, // 0008 GETMET R2 R2 K2 + 0x88080108, // 0007 GETMBR R2 R0 K8 + 0x8C080512, // 0008 GETMET R2 R2 K18 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 0x80000000, // 000B RET 0 @@ -276,67 +295,38 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ be_nested_proto( 13, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ - /* K0 */ be_nested_str_weak(running), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(time_reached), - /* K3 */ be_nested_str_weak(fast_loop_next), - /* K4 */ be_nested_str_weak(strip), - /* K5 */ be_nested_str_weak(can_show), - /* K6 */ be_nested_str_weak(frame), - /* K7 */ be_nested_str_weak(fill_pixels), - /* K8 */ be_nested_str_weak(back_color), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(millis), - /* K11 */ be_nested_str_weak(FAST_LOOP_MIN), - /* K12 */ be_nested_str_weak(animators), - /* K13 */ be_nested_str_weak(animate), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(layer), - /* K16 */ be_nested_str_weak(painters), - /* K17 */ be_const_int(-16777216), - /* K18 */ be_nested_str_weak(paint), - /* K19 */ be_nested_str_weak(blend_pixels), - /* K20 */ be_nested_str_weak(obj), - /* K21 */ be_nested_str_weak(mth), - /* K22 */ be_nested_str_weak(paste_pixels), - /* K23 */ be_nested_str_weak(pixels_buffer), - /* K24 */ be_nested_str_weak(get_bri), - /* K25 */ be_nested_str_weak(get_gamma), - /* K26 */ be_nested_str_weak(dirty), - /* K27 */ be_nested_str_weak(show), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(fast_loop), &be_const_str_solidified, ( &(const binstruction[84]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010B, // 0000 GETMBR R1 R0 K11 0x78060050, // 0001 JMPF R1 #0053 - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x880C0103, // 0004 GETMBR R3 R0 K3 + 0xB8060800, // 0002 GETNGBL R1 K4 + 0x8C040313, // 0003 GETMET R1 R1 K19 + 0x880C0114, // 0004 GETMBR R3 R0 K20 0x7C040400, // 0005 CALL R1 2 0x7806004B, // 0006 JMPF R1 #0053 - 0x88040104, // 0007 GETMBR R1 R0 K4 - 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x88040101, // 0007 GETMBR R1 R0 K1 + 0x8C040315, // 0008 GETMET R1 R1 K21 0x7C040200, // 0009 CALL R1 1 0x78060047, // 000A JMPF R1 #0053 - 0x88040106, // 000B GETMBR R1 R0 K6 - 0x8C040307, // 000C GETMET R1 R1 K7 - 0x880C0108, // 000D GETMBR R3 R0 K8 + 0x88040116, // 000B GETMBR R1 R0 K22 + 0x8C040317, // 000C GETMET R1 R1 K23 + 0x880C0118, // 000D GETMBR R3 R0 K24 0x7C040400, // 000E CALL R1 2 - 0x58040009, // 000F LDCONST R1 K9 - 0xB80A0200, // 0010 GETNGBL R2 K1 - 0x8C08050A, // 0011 GETMET R2 R2 K10 + 0x58040007, // 000F LDCONST R1 K7 + 0xB80A0800, // 0010 GETNGBL R2 K4 + 0x8C080519, // 0011 GETMET R2 R2 K25 0x7C080200, // 0012 CALL R2 1 - 0x880C010B, // 0013 GETMBR R3 R0 K11 + 0x880C011A, // 0013 GETMBR R3 R0 K26 0x000C0403, // 0014 ADD R3 R2 R3 - 0x90020603, // 0015 SETMBR R0 K3 R3 + 0x90022803, // 0015 SETMBR R0 K20 R3 0x600C000C, // 0016 GETGBL R3 G12 0x8810010C, // 0017 GETMBR R4 R0 K12 0x7C0C0200, // 0018 CALL R3 1 @@ -344,59 +334,59 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0x780E0006, // 001A JMPF R3 #0022 0x880C010C, // 001B GETMBR R3 R0 K12 0x940C0601, // 001C GETIDX R3 R3 R1 - 0x8C0C070D, // 001D GETMET R3 R3 K13 + 0x8C0C071B, // 001D GETMET R3 R3 K27 0x5C140400, // 001E MOVE R5 R2 0x7C0C0400, // 001F CALL R3 2 0x0004030E, // 0020 ADD R1 R1 K14 0x7001FFF3, // 0021 JMP #0016 - 0x58040009, // 0022 LDCONST R1 K9 - 0x880C0106, // 0023 GETMBR R3 R0 K6 - 0x8810010F, // 0024 GETMBR R4 R0 K15 + 0x58040007, // 0022 LDCONST R1 K7 + 0x880C0116, // 0023 GETMBR R3 R0 K22 + 0x8810011C, // 0024 GETMBR R4 R0 K28 0x6014000C, // 0025 GETGBL R5 G12 - 0x88180110, // 0026 GETMBR R6 R0 K16 + 0x88180108, // 0026 GETMBR R6 R0 K8 0x7C140200, // 0027 CALL R5 1 0x14140205, // 0028 LT R5 R1 R5 0x7816000D, // 0029 JMPF R5 #0038 - 0x8C140907, // 002A GETMET R5 R4 K7 - 0x581C0011, // 002B LDCONST R7 K17 + 0x8C140917, // 002A GETMET R5 R4 K23 + 0x581C001D, // 002B LDCONST R7 K29 0x7C140400, // 002C CALL R5 2 - 0x88140110, // 002D GETMBR R5 R0 K16 + 0x88140108, // 002D GETMBR R5 R0 K8 0x94140A01, // 002E GETIDX R5 R5 R1 - 0x8C140B12, // 002F GETMET R5 R5 K18 + 0x8C140B1E, // 002F GETMET R5 R5 K30 0x5C1C0800, // 0030 MOVE R7 R4 0x7C140400, // 0031 CALL R5 2 0x78160002, // 0032 JMPF R5 #0036 - 0x8C140713, // 0033 GETMET R5 R3 K19 + 0x8C14071F, // 0033 GETMET R5 R3 K31 0x5C1C0800, // 0034 MOVE R7 R4 0x7C140400, // 0035 CALL R5 2 0x0004030E, // 0036 ADD R1 R1 K14 0x7001FFEC, // 0037 JMP #0025 - 0x88140114, // 0038 GETMBR R5 R0 K20 - 0x88180115, // 0039 GETMBR R6 R0 K21 + 0x88140120, // 0038 GETMBR R5 R0 K32 + 0x88180121, // 0039 GETMBR R6 R0 K33 0x78160003, // 003A JMPF R5 #003F 0x781A0002, // 003B JMPF R6 #003F 0x5C1C0C00, // 003C MOVE R7 R6 0x5C200A00, // 003D MOVE R8 R5 0x7C1C0200, // 003E CALL R7 1 - 0x8C1C010D, // 003F GETMET R7 R0 K13 + 0x8C1C011B, // 003F GETMET R7 R0 K27 0x7C1C0200, // 0040 CALL R7 1 - 0x881C0106, // 0041 GETMBR R7 R0 K6 - 0x8C1C0F16, // 0042 GETMET R7 R7 K22 - 0x88240104, // 0043 GETMBR R9 R0 K4 - 0x8C241317, // 0044 GETMET R9 R9 K23 + 0x881C0116, // 0041 GETMBR R7 R0 K22 + 0x8C1C0F22, // 0042 GETMET R7 R7 K34 + 0x88240101, // 0043 GETMBR R9 R0 K1 + 0x8C241323, // 0044 GETMET R9 R9 K35 0x7C240200, // 0045 CALL R9 1 - 0x88280104, // 0046 GETMBR R10 R0 K4 - 0x8C281518, // 0047 GETMET R10 R10 K24 + 0x88280101, // 0046 GETMBR R10 R0 K1 + 0x8C281524, // 0047 GETMET R10 R10 K36 0x7C280200, // 0048 CALL R10 1 - 0x882C0104, // 0049 GETMBR R11 R0 K4 - 0x8C2C1719, // 004A GETMET R11 R11 K25 + 0x882C0101, // 0049 GETMBR R11 R0 K1 + 0x8C2C1725, // 004A GETMET R11 R11 K37 0x7C2C0200, // 004B CALL R11 1 0x7C1C0800, // 004C CALL R7 4 - 0x881C0104, // 004D GETMBR R7 R0 K4 - 0x8C1C0F1A, // 004E GETMET R7 R7 K26 + 0x881C0101, // 004D GETMBR R7 R0 K1 + 0x8C1C0F26, // 004E GETMET R7 R7 K38 0x7C1C0200, // 004F CALL R7 1 - 0x881C0104, // 0050 GETMBR R7 R0 K4 - 0x8C1C0F1B, // 0051 GETMET R7 R7 K27 + 0x881C0101, // 0050 GETMBR R7 R0 K1 + 0x8C1C0F27, // 0051 GETMET R7 R7 K39 0x7C1C0200, // 0052 CALL R7 1 0x80000000, // 0053 RET 0 }) @@ -412,32 +402,27 @@ be_local_closure(class_Animate_core_remove_animator, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animators), - /* K1 */ be_nested_str_weak(remove), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(clear), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(remove_animator), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808010C, // 0000 GETMBR R2 R0 K12 0x4C0C0000, // 0001 LDNIL R3 0x200C0203, // 0002 NE R3 R1 R3 0x780E0005, // 0003 JMPF R3 #000A - 0x8C0C0501, // 0004 GETMET R3 R2 K1 - 0x8C140502, // 0005 GETMET R5 R2 K2 + 0x8C0C0509, // 0004 GETMET R3 R2 K9 + 0x8C14050A, // 0005 GETMET R5 R2 K10 0x5C1C0200, // 0006 MOVE R7 R1 0x7C140400, // 0007 CALL R5 2 0x7C0C0400, // 0008 CALL R3 2 0x70020001, // 0009 JMP #000C - 0x8C0C0503, // 000A GETMET R3 R2 K3 + 0x8C0C0502, // 000A GETMET R3 R2 K2 0x7C0C0200, // 000B CALL R3 1 0x80000000, // 000C RET 0 }) @@ -453,13 +438,13 @@ be_local_closure(class_Animate_core_animate, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(animate), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -477,21 +462,18 @@ be_local_closure(class_Animate_core_set_current, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_cur_anim), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(set_current), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x90060200, // 0001 SETMBR R1 K1 R0 + 0xB8065000, // 0000 GETNGBL R1 K40 + 0x90065200, // 0001 SETMBR R1 K41 R0 0x80000000, // 0002 RET 0 }) ) @@ -506,7 +488,7 @@ be_local_closure(class_Animate_core_init, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -536,60 +518,44 @@ be_local_closure(class_Animate_core_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(animate), - /* K1 */ be_nested_str_weak(strip), - /* K2 */ be_nested_str_weak(bri), - /* K3 */ be_nested_str_weak(set_strip_bri), - /* K4 */ be_nested_str_weak(running), - /* K5 */ be_nested_str_weak(pixel_count), - /* K6 */ be_nested_str_weak(animators), - /* K7 */ be_nested_str_weak(painters), - /* K8 */ be_nested_str_weak(clear), - /* K9 */ be_nested_str_weak(frame), - /* K10 */ be_nested_str_weak(layer), - /* K11 */ be_nested_str_weak(fast_loop_cb), - /* K12 */ be_nested_str_weak(back_color), - /* K13 */ be_const_int(0), - /* K14 */ be_nested_str_weak(set_current), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 + 0xA40E3600, // 0000 IMPORT R3 K27 0x90020201, // 0001 SETMBR R0 K1 R1 0x4C100000, // 0002 LDNIL R4 0x1C100404, // 0003 EQ R4 R2 R4 0x78120000, // 0004 JMPF R4 #0006 0x540A0031, // 0005 LDINT R2 50 - 0x90020402, // 0006 SETMBR R0 K2 R2 - 0x8C100103, // 0007 GETMET R4 R0 K3 + 0x90020C02, // 0006 SETMBR R0 K6 R2 + 0x8C100111, // 0007 GETMET R4 R0 K17 0x7C100200, // 0008 CALL R4 1 0x50100000, // 0009 LDBOOL R4 0 0 - 0x90020804, // 000A SETMBR R0 K4 R4 - 0x8C100305, // 000B GETMET R4 R1 K5 + 0x90021604, // 000A SETMBR R0 K11 R4 + 0x8C10032A, // 000B GETMET R4 R1 K42 0x7C100200, // 000C CALL R4 1 - 0x90020A04, // 000D SETMBR R0 K5 R4 + 0x90025404, // 000D SETMBR R0 K42 R4 0x60100012, // 000E GETGBL R4 G18 0x7C100000, // 000F CALL R4 0 - 0x90020C04, // 0010 SETMBR R0 K6 R4 + 0x90021804, // 0010 SETMBR R0 K12 R4 0x60100012, // 0011 GETGBL R4 G18 0x7C100000, // 0012 CALL R4 0 - 0x90020E04, // 0013 SETMBR R0 K7 R4 - 0x8C100108, // 0014 GETMET R4 R0 K8 + 0x90021004, // 0013 SETMBR R0 K8 R4 + 0x8C100102, // 0014 GETMET R4 R0 K2 0x7C100200, // 0015 CALL R4 1 - 0x8C100709, // 0016 GETMET R4 R3 K9 - 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x8C100716, // 0016 GETMET R4 R3 K22 + 0x8818012A, // 0017 GETMBR R6 R0 K42 0x7C100400, // 0018 CALL R4 2 - 0x90021204, // 0019 SETMBR R0 K9 R4 - 0x8C100709, // 001A GETMET R4 R3 K9 - 0x88180105, // 001B GETMBR R6 R0 K5 + 0x90022C04, // 0019 SETMBR R0 K22 R4 + 0x8C100716, // 001A GETMET R4 R3 K22 + 0x8818012A, // 001B GETMBR R6 R0 K42 0x7C100400, // 001C CALL R4 2 - 0x90021404, // 001D SETMBR R0 K10 R4 + 0x90023804, // 001D SETMBR R0 K28 R4 0x84100000, // 001E CLOSURE R4 P0 - 0x90021604, // 001F SETMBR R0 K11 R4 - 0x9002190D, // 0020 SETMBR R0 K12 K13 - 0x8C10010E, // 0021 GETMET R4 R0 K14 + 0x90022004, // 001F SETMBR R0 K16 R4 + 0x90023107, // 0020 SETMBR R0 K24 K7 + 0x8C10012B, // 0021 GETMET R4 R0 K43 0x7C100200, // 0022 CALL R4 1 0xA0000000, // 0023 CLOSE R0 0x80000000, // 0024 RET 0 @@ -606,21 +572,18 @@ be_local_closure(class_Animate_core_set_cb, /* name */ be_nested_proto( 3, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(obj), - /* K1 */ be_nested_str_weak(mth), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(set_cb), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90024001, // 0000 SETMBR R0 K32 R1 + 0x90024202, // 0001 SETMBR R0 K33 R2 0x80000000, // 0002 RET 0 }) ) @@ -635,19 +598,17 @@ be_local_closure(class_Animate_core_set_back_color, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(back_color), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(set_back_color), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90023001, // 0000 SETMBR R0 K24 R1 0x80000000, // 0001 RET 0 }) ) @@ -662,25 +623,21 @@ be_local_closure(class_Animate_core_add_background_animator, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(set_cb), - /* K1 */ be_nested_str_weak(set_back_color), - /* K2 */ be_nested_str_weak(add_animator), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(add_background_animator), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x8C08032C, // 0000 GETMET R2 R1 K44 0x5C100000, // 0001 MOVE R4 R0 - 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x8814012D, // 0002 GETMBR R5 R0 K45 0x7C080600, // 0003 CALL R2 3 - 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x8C08012E, // 0004 GETMET R2 R0 K46 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 0x80000000, // 0007 RET 0 @@ -697,29 +654,25 @@ be_local_closure(class_Animate_core_add_animator, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animators), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(push), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(add_animator), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808010C, // 0000 GETMBR R2 R0 K12 + 0x8C08050A, // 0001 GETMET R2 R2 K10 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0003, // 0006 JMPF R2 #000B - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x8C080502, // 0008 GETMET R2 R2 K2 + 0x8808010C, // 0007 GETMBR R2 R0 K12 + 0x8C080512, // 0008 GETMET R2 R2 K18 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 0x80000000, // 000B RET 0 @@ -736,26 +689,21 @@ be_local_closure(class_Animate_core_remove, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clear), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_fast_loop), - /* K3 */ be_nested_str_weak(fast_loop_cb), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(remove), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040102, // 0000 GETMET R1 R0 K2 0x7C040200, // 0001 CALL R1 1 - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x880C0103, // 0004 GETMBR R3 R0 K3 + 0xB8060800, // 0002 GETNGBL R1 K4 + 0x8C04030F, // 0003 GETMET R1 R1 K15 + 0x880C0110, // 0004 GETMBR R3 R0 K16 0x7C040400, // 0005 CALL R1 2 0x80000000, // 0006 RET 0 }) @@ -771,44 +719,34 @@ be_local_closure(class_Animate_core_start, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(running), - /* K1 */ be_nested_str_weak(animators), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(fast_loop_next), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(add_fast_loop), - /* K8 */ be_nested_str_weak(fast_loop_cb), - }), + &be_ktab_class_Animate_core, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ 0x50040200, // 0000 LDBOOL R1 1 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x58080002, // 0003 LDCONST R2 K2 + 0x90021601, // 0001 SETMBR R0 K11 R1 + 0x8804010C, // 0002 GETMBR R1 R0 K12 + 0x5808000D, // 0003 LDCONST R2 K13 0x600C000C, // 0004 GETGBL R3 G12 0x5C100200, // 0005 MOVE R4 R1 0x7C0C0200, // 0006 CALL R3 1 0x140C0403, // 0007 LT R3 R2 R3 0x780E0004, // 0008 JMPF R3 #000E 0x940C0202, // 0009 GETIDX R3 R1 R2 - 0x8C0C0703, // 000A GETMET R3 R3 K3 + 0x8C0C072F, // 000A GETMET R3 R3 K47 0x7C0C0200, // 000B CALL R3 1 - 0x00080504, // 000C ADD R2 R2 K4 + 0x0008050E, // 000C ADD R2 R2 K14 0x7001FFF5, // 000D JMP #0004 - 0x90020B02, // 000E SETMBR R0 K5 K2 - 0xB80E0C00, // 000F GETNGBL R3 K6 - 0x8C0C0707, // 0010 GETMET R3 R3 K7 - 0x88140108, // 0011 GETMBR R5 R0 K8 + 0x9002290D, // 000E SETMBR R0 K20 K13 + 0xB80E0800, // 000F GETNGBL R3 K4 + 0x8C0C0730, // 0010 GETMET R3 R3 K48 + 0x88140110, // 0011 GETMBR R5 R0 K16 0x7C0C0400, // 0012 CALL R3 2 0x80000000, // 0013 RET 0 }) diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h index 2cafc43fb..28805c5fc 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h @@ -79,6 +79,25 @@ be_local_class(Animate_painter, })), be_str_weak(Animate_painter) ); +// compact class 'Animate_pulse' ktab size: 15, total: 28 (saved 104 bytes) +static const bvalue be_ktab_class_Animate_pulse[15] = { + /* K0 */ be_nested_str_weak(pulse_size), + /* K1 */ be_nested_str_weak(slew_size), + /* K2 */ be_nested_str_weak(back_color), + /* K3 */ be_nested_str_weak(pos), + /* K4 */ be_nested_str_weak(color), + /* K5 */ be_nested_str_weak(init), + /* K6 */ be_const_int(16777215), + /* K7 */ be_const_int(1), + /* K8 */ be_const_int(0), + /* K9 */ be_const_int(-16777216), + /* K10 */ be_nested_str_weak(fill_pixels), + /* K11 */ be_nested_str_weak(pixel_size), + /* K12 */ be_nested_str_weak(blend), + /* K13 */ be_nested_str_weak(tasmota), + /* K14 */ be_nested_str_weak(scale_int), +}; + extern const bclass be_class_Animate_pulse; @@ -89,15 +108,13 @@ be_local_closure(class_Animate_pulse_set_pulse_size, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(pulse_size), - }), + &be_ktab_class_Animate_pulse, /* shared constants */ be_str_weak(set_pulse_size), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -116,19 +133,17 @@ be_local_closure(class_Animate_pulse_set_slew_size, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(slew_size), - }), + &be_ktab_class_Animate_pulse, /* shared constants */ be_str_weak(set_slew_size), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020201, // 0000 SETMBR R0 K1 R1 0x80000000, // 0001 RET 0 }) ) @@ -143,19 +158,17 @@ be_local_closure(class_Animate_pulse_set_back_color, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(back_color), - }), + &be_ktab_class_Animate_pulse, /* shared constants */ be_str_weak(set_back_color), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020401, // 0000 SETMBR R0 K2 R1 0x80000000, // 0001 RET 0 }) ) @@ -170,19 +183,17 @@ be_local_closure(class_Animate_pulse_set_pos, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - }), + &be_ktab_class_Animate_pulse, /* shared constants */ be_str_weak(set_pos), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020601, // 0000 SETMBR R0 K3 R1 0x80000000, // 0001 RET 0 }) ) @@ -197,19 +208,17 @@ be_local_closure(class_Animate_pulse_set_color, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(color), - }), + &be_ktab_class_Animate_pulse, /* shared constants */ be_str_weak(set_color), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020801, // 0000 SETMBR R0 K4 R1 0x80000000, // 0001 RET 0 }) ) @@ -224,55 +233,44 @@ be_local_closure(class_Animate_pulse_init, /* name */ be_nested_proto( 6, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_const_int(16777215), - /* K2 */ be_const_int(1), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(color), - /* K5 */ be_nested_str_weak(back_color), - /* K6 */ be_const_int(-16777216), - /* K7 */ be_nested_str_weak(pulse_size), - /* K8 */ be_nested_str_weak(slew_size), - /* K9 */ be_nested_str_weak(pos), - }), + &be_ktab_class_Animate_pulse, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100905, // 0003 GETMET R4 R4 K5 0x7C100200, // 0004 CALL R4 1 0x4C100000, // 0005 LDNIL R4 0x1C100204, // 0006 EQ R4 R1 R4 0x78120000, // 0007 JMPF R4 #0009 - 0x58040001, // 0008 LDCONST R1 K1 + 0x58040006, // 0008 LDCONST R1 K6 0x4C100000, // 0009 LDNIL R4 0x1C100404, // 000A EQ R4 R2 R4 0x78120000, // 000B JMPF R4 #000D - 0x58080002, // 000C LDCONST R2 K2 + 0x58080007, // 000C LDCONST R2 K7 0x4C100000, // 000D LDNIL R4 0x1C100604, // 000E EQ R4 R3 R4 0x78120000, // 000F JMPF R4 #0011 - 0x580C0003, // 0010 LDCONST R3 K3 + 0x580C0008, // 0010 LDCONST R3 K8 0x90020801, // 0011 SETMBR R0 K4 R1 - 0x90020B06, // 0012 SETMBR R0 K5 K6 - 0x14100503, // 0013 LT R4 R2 K3 + 0x90020509, // 0012 SETMBR R0 K2 K9 + 0x14100508, // 0013 LT R4 R2 K8 0x78120000, // 0014 JMPF R4 #0016 - 0x58080003, // 0015 LDCONST R2 K3 - 0x90020E02, // 0016 SETMBR R0 K7 R2 - 0x14100703, // 0017 LT R4 R3 K3 + 0x58080008, // 0015 LDCONST R2 K8 + 0x90020002, // 0016 SETMBR R0 K0 R2 + 0x14100708, // 0017 LT R4 R3 K8 0x78120000, // 0018 JMPF R4 #001A - 0x580C0003, // 0019 LDCONST R3 K3 - 0x90021003, // 001A SETMBR R0 K8 R3 - 0x90021303, // 001B SETMBR R0 K9 K3 + 0x580C0008, // 0019 LDCONST R3 K8 + 0x90020203, // 001A SETMBR R0 K1 R3 + 0x90020708, // 001B SETMBR R0 K3 K8 0x80000000, // 001C RET 0 }) ) @@ -287,41 +285,27 @@ be_local_closure(class_Animate_pulse_paint, /* name */ be_nested_proto( 22, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(back_color), - /* K1 */ be_const_int(-16777216), - /* K2 */ be_nested_str_weak(fill_pixels), - /* K3 */ be_nested_str_weak(pos), - /* K4 */ be_nested_str_weak(slew_size), - /* K5 */ be_nested_str_weak(pulse_size), - /* K6 */ be_nested_str_weak(color), - /* K7 */ be_nested_str_weak(pixel_size), - /* K8 */ be_const_int(0), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(blend), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_int), - }), + &be_ktab_class_Animate_pulse, /* shared constants */ be_str_weak(paint), &be_const_str_solidified, ( &(const binstruction[91]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x200C0501, // 0001 NE R3 R2 K1 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x200C0509, // 0001 NE R3 R2 K9 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C0302, // 0003 GETMET R3 R1 K2 + 0x8C0C030A, // 0003 GETMET R3 R1 K10 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x88100104, // 0007 GETMBR R4 R0 K4 - 0x88140105, // 0008 GETMBR R5 R0 K5 - 0x88180106, // 0009 GETMBR R6 R0 K6 - 0x881C0307, // 000A GETMBR R7 R1 K7 + 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x88140100, // 0008 GETMBR R5 R0 K0 + 0x88180104, // 0009 GETMBR R6 R0 K4 + 0x881C030B, // 000A GETMBR R7 R1 K11 0x4C200000, // 000B LDNIL R8 0x4C240000, // 000C LDNIL R9 0x5C200600, // 000D MOVE R8 R3 @@ -337,7 +321,7 @@ be_local_closure(class_Animate_pulse_paint, /* name */ 0x142C1409, // 0017 LT R11 R10 R9 0x782E0002, // 0018 JMPF R11 #001C 0x98041406, // 0019 SETIDX R1 R10 R6 - 0x00281509, // 001A ADD R10 R10 K9 + 0x00281507, // 001A ADD R10 R10 K7 0x7001FFFA, // 001B JMP #0017 0x242C0908, // 001C GT R11 R4 K8 0x782E003A, // 001D JMPF R11 #0059 @@ -353,21 +337,21 @@ be_local_closure(class_Animate_pulse_paint, /* name */ 0x5C281000, // 0027 MOVE R10 R8 0x142C1409, // 0028 LT R11 R10 R9 0x782E000F, // 0029 JMPF R11 #003A - 0x8C2C030A, // 002A GETMET R11 R1 K10 + 0x8C2C030C, // 002A GETMET R11 R1 K12 0x5C340400, // 002B MOVE R13 R2 0x5C380C00, // 002C MOVE R14 R6 - 0xB83E1600, // 002D GETNGBL R15 K11 - 0x8C3C1F0C, // 002E GETMET R15 R15 K12 + 0xB83E1A00, // 002D GETNGBL R15 K13 + 0x8C3C1F0E, // 002E GETMET R15 R15 K14 0x5C441400, // 002F MOVE R17 R10 0x04480604, // 0030 SUB R18 R3 R4 - 0x04482509, // 0031 SUB R18 R18 K9 + 0x04482507, // 0031 SUB R18 R18 K7 0x5C4C0600, // 0032 MOVE R19 R3 0x545200FE, // 0033 LDINT R20 255 0x58540008, // 0034 LDCONST R21 K8 0x7C3C0C00, // 0035 CALL R15 6 0x7C2C0800, // 0036 CALL R11 4 0x9804140B, // 0037 SETIDX R1 R10 R11 - 0x00281509, // 0038 ADD R10 R10 K9 + 0x00281507, // 0038 ADD R10 R10 K7 0x7001FFED, // 0039 JMP #0028 0x002C0605, // 003A ADD R11 R3 R5 0x5C201600, // 003B MOVE R8 R11 @@ -383,14 +367,14 @@ be_local_closure(class_Animate_pulse_paint, /* name */ 0x5C281000, // 0045 MOVE R10 R8 0x142C1409, // 0046 LT R11 R10 R9 0x782E0010, // 0047 JMPF R11 #0059 - 0x8C2C030A, // 0048 GETMET R11 R1 K10 + 0x8C2C030C, // 0048 GETMET R11 R1 K12 0x5C340400, // 0049 MOVE R13 R2 0x5C380C00, // 004A MOVE R14 R6 - 0xB83E1600, // 004B GETNGBL R15 K11 - 0x8C3C1F0C, // 004C GETMET R15 R15 K12 + 0xB83E1A00, // 004B GETNGBL R15 K13 + 0x8C3C1F0E, // 004C GETMET R15 R15 K14 0x5C441400, // 004D MOVE R17 R10 0x00480605, // 004E ADD R18 R3 R5 - 0x04482509, // 004F SUB R18 R18 K9 + 0x04482507, // 004F SUB R18 R18 K7 0x004C0605, // 0050 ADD R19 R3 R5 0x004C2604, // 0051 ADD R19 R19 R4 0x58500008, // 0052 LDCONST R20 K8 @@ -398,7 +382,7 @@ be_local_closure(class_Animate_pulse_paint, /* name */ 0x7C3C0C00, // 0054 CALL R15 6 0x7C2C0800, // 0055 CALL R11 4 0x9804140B, // 0056 SETIDX R1 R10 R11 - 0x00281509, // 0057 ADD R10 R10 K9 + 0x00281507, // 0057 ADD R10 R10 K7 0x7001FFEC, // 0058 JMP #0046 0x502C0200, // 0059 LDBOOL R11 1 0 0x80041600, // 005A RET 1 R11 diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h index f6ded0553..50ef57843 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h @@ -3,6 +3,20 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Animate_animator' ktab size: 10, total: 14 (saved 32 bytes) +static const bvalue be_ktab_class_Animate_animator[10] = { + /* K0 */ be_nested_str_weak(running), + /* K1 */ be_nested_str_weak(global), + /* K2 */ be_nested_str_weak(_cur_anim), + /* K3 */ be_nested_str_weak(add_animator), + /* K4 */ be_nested_str_weak(origin), + /* K5 */ be_nested_str_weak(duration_ms), + /* K6 */ be_nested_str_weak(obj), + /* K7 */ be_nested_str_weak(mth), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(millis), +}; + extern const bclass be_class_Animate_animator; @@ -13,15 +27,13 @@ be_local_closure(class_Animate_animator_is_running, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(running), - }), + &be_ktab_class_Animate_animator, /* shared constants */ be_str_weak(is_running), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -42,13 +54,13 @@ be_local_closure(class_Animate_animator_beat, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Animate_animator, /* shared constants */ be_str_weak(beat), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -66,26 +78,22 @@ be_local_closure(class_Animate_animator_init, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_cur_anim), - /* K2 */ be_nested_str_weak(add_animator), - }), + &be_ktab_class_Animate_animator, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0xB8060200, // 0000 GETNGBL R1 K1 + 0x88040302, // 0001 GETMBR R1 R1 K2 0x4C080000, // 0002 LDNIL R2 0x20080202, // 0003 NE R2 R1 R2 0x780A0002, // 0004 JMPF R2 #0008 - 0x8C080302, // 0005 GETMET R2 R1 K2 + 0x8C080303, // 0005 GETMET R2 R1 K3 0x5C100000, // 0006 MOVE R4 R0 0x7C080400, // 0007 CALL R2 2 0x80000000, // 0008 RET 0 @@ -102,23 +110,20 @@ be_local_closure(class_Animate_animator_stop, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(origin), - /* K1 */ be_nested_str_weak(running), - }), + &be_ktab_class_Animate_animator, /* shared constants */ be_str_weak(stop), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90020801, // 0001 SETMBR R0 K4 R1 0x50040000, // 0002 LDBOOL R1 0 0 - 0x90020201, // 0003 SETMBR R0 K1 R1 + 0x90020001, // 0003 SETMBR R0 K0 R1 0x80000000, // 0004 RET 0 }) ) @@ -133,19 +138,17 @@ be_local_closure(class_Animate_animator_set_duration_ms, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(duration_ms), - }), + &be_ktab_class_Animate_animator, /* shared constants */ be_str_weak(set_duration_ms), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020A01, // 0000 SETMBR R0 K5 R1 0x80000000, // 0001 RET 0 }) ) @@ -160,21 +163,18 @@ be_local_closure(class_Animate_animator_set_cb, /* name */ be_nested_proto( 3, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(obj), - /* K1 */ be_nested_str_weak(mth), - }), + &be_ktab_class_Animate_animator, /* shared constants */ be_str_weak(set_cb), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020C01, // 0000 SETMBR R0 K6 R1 + 0x90020E02, // 0001 SETMBR R0 K7 R2 0x80000000, // 0002 RET 0 }) ) @@ -189,23 +189,17 @@ be_local_closure(class_Animate_animator_start, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(duration_ms), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(origin), - /* K4 */ be_nested_str_weak(running), - }), + &be_ktab_class_Animate_animator, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080105, // 0000 GETMBR R2 R0 K5 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0000, // 0003 JMPF R2 #0005 @@ -213,13 +207,13 @@ be_local_closure(class_Animate_animator_start, /* name */ 0x4C080000, // 0005 LDNIL R2 0x1C080202, // 0006 EQ R2 R1 R2 0x780A0003, // 0007 JMPF R2 #000C - 0xB80A0200, // 0008 GETNGBL R2 K1 - 0x8C080502, // 0009 GETMET R2 R2 K2 + 0xB80A1000, // 0008 GETNGBL R2 K8 + 0x8C080509, // 0009 GETMET R2 R2 K9 0x7C080200, // 000A CALL R2 1 0x5C040400, // 000B MOVE R1 R2 - 0x90020601, // 000C SETMBR R0 K3 R1 + 0x90020801, // 000C SETMBR R0 K4 R1 0x50080200, // 000D LDBOOL R2 1 0 - 0x90020802, // 000E SETMBR R0 K4 R2 + 0x90020002, // 000E SETMBR R0 K0 R2 0x80000000, // 000F RET 0 }) ) @@ -250,6 +244,56 @@ be_local_class(Animate_animator, })), be_str_weak(Animate_animator) ); +extern const bclass be_class_Animate_palette; +// compact class 'Animate_palette' ktab size: 45, total: 87 (saved 336 bytes) +static const bvalue be_ktab_class_Animate_palette[45] = { + /* K0 */ be_const_class(be_class_Animate_palette), + /* K1 */ be_nested_str_weak(ptr), + /* K2 */ be_const_int(1), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(duration_ms), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(millis), + /* K7 */ be_nested_str_weak(origin), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_nested_str_weak(slots), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(slots_arr), + /* K13 */ be_nested_str_weak(palette), + /* K14 */ be_nested_str_weak(get), + /* K15 */ be_nested_str_weak(color), + /* K16 */ be_nested_str_weak(set_rgb), + /* K17 */ be_nested_str_weak(bri), + /* K18 */ be_nested_str_weak(set_bri), + /* K19 */ be_nested_str_weak(r), + /* K20 */ be_nested_str_weak(g), + /* K21 */ be_nested_str_weak(b), + /* K22 */ be_nested_str_weak(obj), + /* K23 */ be_nested_str_weak(mth), + /* K24 */ be_nested_str_weak(ptr_to_palette), + /* K25 */ be_nested_str_weak(set_duration), + /* K26 */ be_nested_str_weak(range_min), + /* K27 */ be_nested_str_weak(range_max), + /* K28 */ be_nested_str_weak(set_range), + /* K29 */ be_nested_str_weak(parse_palette), + /* K30 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), + /* K31 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), + /* K32 */ be_const_real_hex(0x41200000), + /* K33 */ be_nested_str_weak(_X29_X3B), + /* K34 */ be_nested_str_weak(resize), + /* K35 */ be_const_int(1), + /* K36 */ be_nested_str_weak(scale_int), + /* K37 */ be_nested_str_weak(value_error), + /* K38 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex), + /* K39 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive), + /* K40 */ be_nested_str_weak(init), + /* K41 */ be_nested_str_weak(running), + /* K42 */ be_nested_str_weak(light_state), + /* K43 */ be_nested_str_weak(RGB), + /* K44 */ be_nested_str_weak(set_palette), +}; + extern const bclass be_class_Animate_palette; @@ -260,18 +304,13 @@ be_local_closure(class_Animate_palette_ptr_to_palette, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Animate_palette), - /* K1 */ be_nested_str_weak(ptr), - /* K2 */ be_const_int(1), - /* K3 */ be_const_int(0), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(ptr_to_palette), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ @@ -333,39 +372,17 @@ be_local_closure(class_Animate_palette_animate, /* name */ be_nested_proto( 26, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(duration_ms), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(origin), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(scale_uint), - /* K6 */ be_nested_str_weak(slots), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(slots_arr), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(palette), - /* K11 */ be_nested_str_weak(get), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(set_rgb), - /* K14 */ be_nested_str_weak(bri), - /* K15 */ be_nested_str_weak(set_bri), - /* K16 */ be_nested_str_weak(r), - /* K17 */ be_nested_str_weak(g), - /* K18 */ be_nested_str_weak(b), - /* K19 */ be_nested_str_weak(obj), - /* K20 */ be_nested_str_weak(mth), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(animate), &be_const_str_solidified, ( &(const binstruction[193]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080104, // 0000 GETMBR R2 R0 K4 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0000, // 0003 JMPF R2 #0005 @@ -373,55 +390,55 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x4C080000, // 0005 LDNIL R2 0x1C080202, // 0006 EQ R2 R1 R2 0x780A0003, // 0007 JMPF R2 #000C - 0xB80A0200, // 0008 GETNGBL R2 K1 - 0x8C080502, // 0009 GETMET R2 R2 K2 + 0xB80A0A00, // 0008 GETNGBL R2 K5 + 0x8C080506, // 0009 GETMET R2 R2 K6 0x7C080200, // 000A CALL R2 1 0x5C040400, // 000B MOVE R1 R2 - 0x88080103, // 000C GETMBR R2 R0 K3 + 0x88080107, // 000C GETMBR R2 R0 K7 0x04080202, // 000D SUB R2 R1 R2 - 0x140C0504, // 000E LT R3 R2 K4 + 0x140C0508, // 000E LT R3 R2 K8 0x780E0001, // 000F JMPF R3 #0012 - 0x58080004, // 0010 LDCONST R2 K4 - 0x88040103, // 0011 GETMBR R1 R0 K3 - 0x880C0100, // 0012 GETMBR R3 R0 K0 - 0xB8120200, // 0013 GETNGBL R4 K1 - 0x88100905, // 0014 GETMBR R4 R4 K5 + 0x58080008, // 0010 LDCONST R2 K8 + 0x88040107, // 0011 GETMBR R1 R0 K7 + 0x880C0104, // 0012 GETMBR R3 R0 K4 + 0xB8120A00, // 0013 GETNGBL R4 K5 + 0x88100909, // 0014 GETMBR R4 R4 K9 0x28140403, // 0015 GE R5 R2 R3 0x78160005, // 0016 JMPF R5 #001D 0x0C180403, // 0017 DIV R6 R2 R3 0x08180C03, // 0018 MUL R6 R6 R3 - 0x88140103, // 0019 GETMBR R5 R0 K3 + 0x88140107, // 0019 GETMBR R5 R0 K7 0x00140A06, // 001A ADD R5 R5 R6 - 0x90020605, // 001B SETMBR R0 K3 R5 + 0x90020E05, // 001B SETMBR R0 K7 R5 0x10080403, // 001C MOD R2 R2 R3 - 0x88140106, // 001D GETMBR R5 R0 K6 - 0x04180B07, // 001E SUB R6 R5 K7 - 0x241C0D04, // 001F GT R7 R6 K4 + 0x8814010A, // 001D GETMBR R5 R0 K10 + 0x04180B0B, // 001E SUB R6 R5 K11 + 0x241C0D08, // 001F GT R7 R6 K8 0x781E0006, // 0020 JMPF R7 #0028 - 0x881C0108, // 0021 GETMBR R7 R0 K8 + 0x881C010C, // 0021 GETMBR R7 R0 K12 0x941C0E06, // 0022 GETIDX R7 R7 R6 0x281C0407, // 0023 GE R7 R2 R7 0x781E0000, // 0024 JMPF R7 #0026 0x70020001, // 0025 JMP #0028 - 0x04180D09, // 0026 SUB R6 R6 K9 + 0x04180D02, // 0026 SUB R6 R6 K2 0x7001FFF6, // 0027 JMP #001F - 0x881C010A, // 0028 GETMBR R7 R0 K10 - 0x8C1C0F0B, // 0029 GETMET R7 R7 K11 + 0x881C010D, // 0028 GETMBR R7 R0 K13 + 0x8C1C0F0E, // 0029 GETMET R7 R7 K14 0x54260003, // 002A LDINT R9 4 0x08240C09, // 002B MUL R9 R6 R9 0x542A0003, // 002C LDINT R10 4 0x7C1C0600, // 002D CALL R7 3 - 0x8820010A, // 002E GETMBR R8 R0 K10 - 0x8C20110B, // 002F GETMET R8 R8 K11 - 0x00280D09, // 0030 ADD R10 R6 K9 + 0x8820010D, // 002E GETMBR R8 R0 K13 + 0x8C20110E, // 002F GETMET R8 R8 K14 + 0x00280D02, // 0030 ADD R10 R6 K2 0x542E0003, // 0031 LDINT R11 4 0x0828140B, // 0032 MUL R10 R10 R11 0x542E0003, // 0033 LDINT R11 4 0x7C200600, // 0034 CALL R8 3 - 0x88240108, // 0035 GETMBR R9 R0 K8 + 0x8824010C, // 0035 GETMBR R9 R0 K12 0x94241206, // 0036 GETIDX R9 R9 R6 - 0x00280D09, // 0037 ADD R10 R6 K9 - 0x882C0108, // 0038 GETMBR R11 R0 K8 + 0x00280D02, // 0037 ADD R10 R6 K2 + 0x882C010C, // 0038 GETMBR R11 R0 K12 0x9428160A, // 0039 GETIDX R10 R11 R10 0x5C300800, // 003A MOVE R12 R4 0x5C340400, // 003B MOVE R13 R2 @@ -463,8 +480,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x544E00FE, // 005F LDINT R19 255 0x2C482413, // 0060 AND R18 R18 R19 0x7C340A00, // 0061 CALL R13 5 - 0x8838010C, // 0062 GETMBR R14 R0 K12 - 0x8C3C1D0D, // 0063 GETMET R15 R14 K13 + 0x8838010F, // 0062 GETMBR R14 R0 K15 + 0x8C3C1D10, // 0063 GETMET R15 R14 K16 0x54460007, // 0064 LDINT R17 8 0x3C440E11, // 0065 SHR R17 R7 R17 0x544A00FE, // 0066 LDINT R18 255 @@ -478,8 +495,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x545200FE, // 006E LDINT R20 255 0x2C4C2614, // 006F AND R19 R19 R20 0x7C3C0800, // 0070 CALL R15 4 - 0x883C1D0E, // 0071 GETMBR R15 R14 K14 - 0x8C401D0D, // 0072 GETMET R16 R14 K13 + 0x883C1D11, // 0071 GETMBR R15 R14 K17 + 0x8C401D10, // 0072 GETMET R16 R14 K16 0x544A0007, // 0073 LDINT R18 8 0x3C481012, // 0074 SHR R18 R8 R18 0x544E00FE, // 0075 LDINT R19 255 @@ -493,7 +510,7 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x545600FE, // 007D LDINT R21 255 0x2C502815, // 007E AND R20 R20 R21 0x7C400800, // 007F CALL R16 4 - 0x88401D0E, // 0080 GETMBR R16 R14 K14 + 0x88401D11, // 0080 GETMBR R16 R14 K17 0x5C440800, // 0081 MOVE R17 R4 0x5C480400, // 0082 MOVE R18 R2 0x5C4C1200, // 0083 MOVE R19 R9 @@ -501,45 +518,45 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x5C541E00, // 0085 MOVE R21 R15 0x5C582000, // 0086 MOVE R22 R16 0x7C440A00, // 0087 CALL R17 5 - 0x8C481D0D, // 0088 GETMET R18 R14 K13 + 0x8C481D10, // 0088 GETMET R18 R14 K16 0x5C501600, // 0089 MOVE R20 R11 0x5C541800, // 008A MOVE R21 R12 0x5C581A00, // 008B MOVE R22 R13 0x7C480800, // 008C CALL R18 4 - 0x8C481D0F, // 008D GETMET R18 R14 K15 + 0x8C481D12, // 008D GETMET R18 R14 K18 0x5C502200, // 008E MOVE R20 R17 0x7C480400, // 008F CALL R18 2 - 0x882C1D10, // 0090 GETMBR R11 R14 K16 - 0x88301D11, // 0091 GETMBR R12 R14 K17 - 0x88341D12, // 0092 GETMBR R13 R14 K18 - 0x8848010E, // 0093 GETMBR R18 R0 K14 + 0x882C1D13, // 0090 GETMBR R11 R14 K19 + 0x88301D14, // 0091 GETMBR R12 R14 K20 + 0x88341D15, // 0092 GETMBR R13 R14 K21 + 0x88480111, // 0093 GETMBR R18 R0 K17 0x544E0063, // 0094 LDINT R19 100 0x204C2413, // 0095 NE R19 R18 R19 0x784E001A, // 0096 JMPF R19 #00B2 - 0xB84E0200, // 0097 GETNGBL R19 K1 - 0x8C4C2705, // 0098 GETMET R19 R19 K5 + 0xB84E0A00, // 0097 GETNGBL R19 K5 + 0x8C4C2709, // 0098 GETMET R19 R19 K9 0x5C541600, // 0099 MOVE R21 R11 - 0x58580004, // 009A LDCONST R22 K4 + 0x58580008, // 009A LDCONST R22 K8 0x545E0063, // 009B LDINT R23 100 - 0x58600004, // 009C LDCONST R24 K4 + 0x58600008, // 009C LDCONST R24 K8 0x5C642400, // 009D MOVE R25 R18 0x7C4C0C00, // 009E CALL R19 6 0x5C2C2600, // 009F MOVE R11 R19 - 0xB84E0200, // 00A0 GETNGBL R19 K1 - 0x8C4C2705, // 00A1 GETMET R19 R19 K5 + 0xB84E0A00, // 00A0 GETNGBL R19 K5 + 0x8C4C2709, // 00A1 GETMET R19 R19 K9 0x5C541800, // 00A2 MOVE R21 R12 - 0x58580004, // 00A3 LDCONST R22 K4 + 0x58580008, // 00A3 LDCONST R22 K8 0x545E0063, // 00A4 LDINT R23 100 - 0x58600004, // 00A5 LDCONST R24 K4 + 0x58600008, // 00A5 LDCONST R24 K8 0x5C642400, // 00A6 MOVE R25 R18 0x7C4C0C00, // 00A7 CALL R19 6 0x5C302600, // 00A8 MOVE R12 R19 - 0xB84E0200, // 00A9 GETNGBL R19 K1 - 0x8C4C2705, // 00AA GETMET R19 R19 K5 + 0xB84E0A00, // 00A9 GETNGBL R19 K5 + 0x8C4C2709, // 00AA GETMET R19 R19 K9 0x5C541A00, // 00AB MOVE R21 R13 - 0x58580004, // 00AC LDCONST R22 K4 + 0x58580008, // 00AC LDCONST R22 K8 0x545E0063, // 00AD LDINT R23 100 - 0x58600004, // 00AE LDCONST R24 K4 + 0x58600008, // 00AE LDCONST R24 K8 0x5C642400, // 00AF MOVE R25 R18 0x7C4C0C00, // 00B0 CALL R19 6 0x5C342600, // 00B1 MOVE R13 R19 @@ -549,8 +566,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x38501814, // 00B5 SHL R20 R12 R20 0x304C2614, // 00B6 OR R19 R19 R20 0x304C260D, // 00B7 OR R19 R19 R13 - 0x88500113, // 00B8 GETMBR R20 R0 K19 - 0x88540114, // 00B9 GETMBR R21 R0 K20 + 0x88500116, // 00B8 GETMBR R20 R0 K22 + 0x88540117, // 00B9 GETMBR R21 R0 K23 0x78520004, // 00BA JMPF R20 #00C0 0x78560003, // 00BB JMPF R21 #00C0 0x5C582A00, // 00BC MOVE R22 R21 @@ -571,61 +588,51 @@ be_local_closure(class_Animate_palette_set_palette, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(ptr), - /* K1 */ be_nested_str_weak(ptr_to_palette), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(slots), - /* K4 */ be_nested_str_weak(duration_ms), - /* K5 */ be_nested_str_weak(set_duration), - /* K6 */ be_nested_str_weak(range_min), - /* K7 */ be_nested_str_weak(range_max), - /* K8 */ be_nested_str_weak(set_range), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(set_palette), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ 0x60080004, // 0000 GETGBL R2 G4 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x1C080500, // 0003 EQ R2 R2 K0 + 0x1C080501, // 0003 EQ R2 R2 K1 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080101, // 0005 GETMET R2 R0 K1 + 0x8C080118, // 0005 GETMET R2 R0 K24 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x5C040400, // 0008 MOVE R1 R2 - 0x90020401, // 0009 SETMBR R0 K2 R1 + 0x90021A01, // 0009 SETMBR R0 K13 R1 0x6008000C, // 000A GETGBL R2 G12 0x5C0C0200, // 000B MOVE R3 R1 0x7C080200, // 000C CALL R2 1 0x540E0003, // 000D LDINT R3 4 0x0C080403, // 000E DIV R2 R2 R3 - 0x90020602, // 000F SETMBR R0 K3 R2 + 0x90021402, // 000F SETMBR R0 K10 R2 0x88080104, // 0010 GETMBR R2 R0 K4 0x4C0C0000, // 0011 LDNIL R3 0x20080403, // 0012 NE R2 R2 R3 0x780A0003, // 0013 JMPF R2 #0018 - 0x8C080105, // 0014 GETMET R2 R0 K5 + 0x8C080119, // 0014 GETMET R2 R0 K25 0x88100104, // 0015 GETMBR R4 R0 K4 0x7C080400, // 0016 CALL R2 2 0x7002000B, // 0017 JMP #0024 - 0x88080106, // 0018 GETMBR R2 R0 K6 + 0x8808011A, // 0018 GETMBR R2 R0 K26 0x4C0C0000, // 0019 LDNIL R3 0x20080403, // 001A NE R2 R2 R3 0x780A0007, // 001B JMPF R2 #0024 - 0x88080107, // 001C GETMBR R2 R0 K7 + 0x8808011B, // 001C GETMBR R2 R0 K27 0x4C0C0000, // 001D LDNIL R3 0x20080403, // 001E NE R2 R2 R3 0x780A0003, // 001F JMPF R2 #0024 - 0x8C080108, // 0020 GETMET R2 R0 K8 - 0x88100106, // 0021 GETMBR R4 R0 K6 - 0x88140107, // 0022 GETMBR R5 R0 K7 + 0x8C08011C, // 0020 GETMET R2 R0 K28 + 0x8810011A, // 0021 GETMBR R4 R0 K26 + 0x8814011B, // 0022 GETMBR R5 R0 K27 0x7C080600, // 0023 CALL R2 3 0x80000000, // 0024 RET 0 }) @@ -641,24 +648,13 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ be_nested_proto( 17, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_const_class(be_class_Animate_palette), - /* K1 */ be_nested_str_weak(parse_palette), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), - /* K4 */ be_nested_str_weak(palette), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), - /* K7 */ be_const_real_hex(0x41200000), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(_X29_X3B), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(to_css_gradient), &be_const_str_solidified, ( &(const binstruction[46]) { /* code */ @@ -666,20 +662,20 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ 0x5C080200, // 0001 MOVE R2 R1 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0501, // 0004 GETMET R3 R2 K1 - 0x58140002, // 0005 LDCONST R5 K2 + 0x8C0C051D, // 0004 GETMET R3 R2 K29 + 0x58140008, // 0005 LDCONST R5 K8 0x541A03E7, // 0006 LDINT R6 1000 0x7C0C0600, // 0007 CALL R3 3 - 0x58100003, // 0008 LDCONST R4 K3 - 0x58140002, // 0009 LDCONST R5 K2 + 0x5810001E, // 0008 LDCONST R4 K30 + 0x58140008, // 0009 LDCONST R5 K8 0x6018000C, // 000A GETGBL R6 G12 0x5C1C0600, // 000B MOVE R7 R3 0x7C180200, // 000C CALL R6 1 0x14180A06, // 000D LT R6 R5 R6 0x781A001C, // 000E JMPF R6 #002C 0x94180605, // 000F GETIDX R6 R3 R5 - 0x881C0504, // 0010 GETMBR R7 R2 K4 - 0x8C1C0F05, // 0011 GETMET R7 R7 K5 + 0x881C050D, // 0010 GETMBR R7 R2 K13 + 0x8C1C0F0E, // 0011 GETMET R7 R7 K14 0x54260003, // 0012 LDINT R9 4 0x08240A09, // 0013 MUL R9 R5 R9 0x542A0003, // 0014 LDINT R10 4 @@ -697,16 +693,16 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ 0x542E00FE, // 0020 LDINT R11 255 0x2C28140B, // 0021 AND R10 R10 R11 0x602C0018, // 0022 GETGBL R11 G24 - 0x58300006, // 0023 LDCONST R12 K6 + 0x5830001F, // 0023 LDCONST R12 K31 0x5C341000, // 0024 MOVE R13 R8 0x5C381200, // 0025 MOVE R14 R9 0x5C3C1400, // 0026 MOVE R15 R10 - 0x0C400D07, // 0027 DIV R16 R6 K7 + 0x0C400D20, // 0027 DIV R16 R6 K32 0x7C2C0A00, // 0028 CALL R11 5 0x0010080B, // 0029 ADD R4 R4 R11 - 0x00140B08, // 002A ADD R5 R5 K8 + 0x00140B02, // 002A ADD R5 R5 K2 0x7001FFDD, // 002B JMP #000A - 0x00100909, // 002C ADD R4 R4 K9 + 0x00100921, // 002C ADD R4 R4 K33 0x80040800, // 002D RET 1 R4 }) ) @@ -721,22 +717,20 @@ be_local_closure(class_Animate_palette_set_bri, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(bri), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(set_bri), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x90022202, // 0003 SETMBR R0 K17 R2 0x80000000, // 0004 RET 0 }) ) @@ -751,94 +745,85 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */ be_nested_proto( 15, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(slots), - /* K1 */ be_nested_str_weak(resize), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_int), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(parse_palette), &be_const_str_solidified, ( &(const binstruction[71]) { /* code */ 0x600C0012, // 0000 GETGBL R3 G18 0x7C0C0000, // 0001 CALL R3 0 - 0x88100100, // 0002 GETMBR R4 R0 K0 - 0x8C140701, // 0003 GETMET R5 R3 K1 + 0x8810010A, // 0002 GETMBR R4 R0 K10 + 0x8C140722, // 0003 GETMET R5 R3 K34 0x5C1C0800, // 0004 MOVE R7 R4 0x7C140400, // 0005 CALL R5 2 - 0x88140102, // 0006 GETMBR R5 R0 K2 - 0x8C140B03, // 0007 GETMET R5 R5 K3 - 0x581C0004, // 0008 LDCONST R7 K4 - 0x58200005, // 0009 LDCONST R8 K5 + 0x8814010D, // 0006 GETMBR R5 R0 K13 + 0x8C140B0E, // 0007 GETMET R5 R5 K14 + 0x581C0008, // 0008 LDCONST R7 K8 + 0x58200023, // 0009 LDCONST R8 K35 0x7C140600, // 000A CALL R5 3 - 0x20140B04, // 000B NE R5 R5 K4 + 0x20140B08, // 000B NE R5 R5 K8 0x78160024, // 000C JMPF R5 #0032 - 0x58140004, // 000D LDCONST R5 K4 - 0x58180004, // 000E LDCONST R6 K4 - 0x041C0905, // 000F SUB R7 R4 K5 + 0x58140008, // 000D LDCONST R5 K8 + 0x58180008, // 000E LDCONST R6 K8 + 0x041C0923, // 000F SUB R7 R4 K35 0x141C0C07, // 0010 LT R7 R6 R7 0x781E0008, // 0011 JMPF R7 #001B - 0x881C0102, // 0012 GETMBR R7 R0 K2 - 0x8C1C0F03, // 0013 GETMET R7 R7 K3 + 0x881C010D, // 0012 GETMBR R7 R0 K13 + 0x8C1C0F0E, // 0013 GETMET R7 R7 K14 0x54260003, // 0014 LDINT R9 4 0x08240C09, // 0015 MUL R9 R6 R9 - 0x58280005, // 0016 LDCONST R10 K5 + 0x58280023, // 0016 LDCONST R10 K35 0x7C1C0600, // 0017 CALL R7 3 0x00140A07, // 0018 ADD R5 R5 R7 - 0x00180D05, // 0019 ADD R6 R6 K5 + 0x00180D23, // 0019 ADD R6 R6 K35 0x7001FFF3, // 001A JMP #000F - 0x581C0004, // 001B LDCONST R7 K4 - 0x58180004, // 001C LDCONST R6 K4 + 0x581C0008, // 001B LDCONST R7 K8 + 0x58180008, // 001C LDCONST R6 K8 0x14200C04, // 001D LT R8 R6 R4 0x78220011, // 001E JMPF R8 #0031 - 0xB8220C00, // 001F GETNGBL R8 K6 - 0x8C201107, // 0020 GETMET R8 R8 K7 + 0xB8220A00, // 001F GETNGBL R8 K5 + 0x8C201124, // 0020 GETMET R8 R8 K36 0x5C280E00, // 0021 MOVE R10 R7 - 0x582C0004, // 0022 LDCONST R11 K4 + 0x582C0008, // 0022 LDCONST R11 K8 0x5C300A00, // 0023 MOVE R12 R5 0x5C340200, // 0024 MOVE R13 R1 0x5C380400, // 0025 MOVE R14 R2 0x7C200C00, // 0026 CALL R8 6 0x980C0C08, // 0027 SETIDX R3 R6 R8 - 0x88200102, // 0028 GETMBR R8 R0 K2 - 0x8C201103, // 0029 GETMET R8 R8 K3 + 0x8820010D, // 0028 GETMBR R8 R0 K13 + 0x8C20110E, // 0029 GETMET R8 R8 K14 0x542A0003, // 002A LDINT R10 4 0x08280C0A, // 002B MUL R10 R6 R10 - 0x582C0005, // 002C LDCONST R11 K5 + 0x582C0023, // 002C LDCONST R11 K35 0x7C200600, // 002D CALL R8 3 0x001C0E08, // 002E ADD R7 R7 R8 - 0x00180D05, // 002F ADD R6 R6 K5 + 0x00180D23, // 002F ADD R6 R6 K35 0x7001FFEB, // 0030 JMP #001D 0x70020013, // 0031 JMP #0046 - 0x58140004, // 0032 LDCONST R5 K4 + 0x58140008, // 0032 LDCONST R5 K8 0x14180A04, // 0033 LT R6 R5 R4 0x781A0010, // 0034 JMPF R6 #0046 - 0x88180102, // 0035 GETMBR R6 R0 K2 - 0x8C180D03, // 0036 GETMET R6 R6 K3 + 0x8818010D, // 0035 GETMBR R6 R0 K13 + 0x8C180D0E, // 0036 GETMET R6 R6 K14 0x54220003, // 0037 LDINT R8 4 0x08200A08, // 0038 MUL R8 R5 R8 - 0x58240005, // 0039 LDCONST R9 K5 + 0x58240023, // 0039 LDCONST R9 K35 0x7C180600, // 003A CALL R6 3 - 0xB81E0C00, // 003B GETNGBL R7 K6 - 0x8C1C0F07, // 003C GETMET R7 R7 K7 + 0xB81E0A00, // 003B GETNGBL R7 K5 + 0x8C1C0F24, // 003C GETMET R7 R7 K36 0x5C240C00, // 003D MOVE R9 R6 - 0x58280004, // 003E LDCONST R10 K4 + 0x58280008, // 003E LDCONST R10 K8 0x542E00FE, // 003F LDINT R11 255 0x5C300200, // 0040 MOVE R12 R1 0x5C340400, // 0041 MOVE R13 R2 0x7C1C0C00, // 0042 CALL R7 6 0x980C0A07, // 0043 SETIDX R3 R5 R7 - 0x00140B05, // 0044 ADD R5 R5 K5 + 0x00140B23, // 0044 ADD R5 R5 K35 0x7001FFEC, // 0045 JMP #0033 0x80040600, // 0046 RET 1 R3 }) @@ -854,33 +839,26 @@ be_local_closure(class_Animate_palette_set_range, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(value_error), - /* K1 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex), - /* K2 */ be_nested_str_weak(range_min), - /* K3 */ be_nested_str_weak(range_max), - /* K4 */ be_nested_str_weak(slots_arr), - /* K5 */ be_nested_str_weak(parse_palette), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(set_range), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x280C0202, // 0000 GE R3 R1 R2 0x780E0000, // 0001 JMPF R3 #0003 - 0xB0060101, // 0002 RAISE 1 K0 K1 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x90020602, // 0004 SETMBR R0 K3 R2 - 0x8C0C0105, // 0005 GETMET R3 R0 K5 + 0xB0064B26, // 0002 RAISE 1 K37 K38 + 0x90023401, // 0003 SETMBR R0 K26 R1 + 0x90023602, // 0004 SETMBR R0 K27 R2 + 0x8C0C011D, // 0005 GETMET R3 R0 K29 0x5C140200, // 0006 MOVE R5 R1 0x5C180400, // 0007 MOVE R6 R2 0x7C0C0600, // 0008 CALL R3 3 - 0x90020803, // 0009 SETMBR R0 K4 R3 + 0x90021803, // 0009 SETMBR R0 K12 R3 0x80000000, // 000A RET 0 }) ) @@ -895,70 +873,56 @@ be_local_closure(class_Animate_palette_set_value, /* name */ be_nested_proto( 18, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(range_min), - /* K1 */ be_nested_str_weak(range_max), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_int), - /* K4 */ be_nested_str_weak(slots), - /* K5 */ be_const_int(2), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(slots_arr), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(palette), - /* K10 */ be_nested_str_weak(get), - /* K11 */ be_nested_str_weak(obj), - /* K12 */ be_nested_str_weak(mth), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(set_value), &be_const_str_solidified, ( &(const binstruction[96]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808011A, // 0000 GETMBR R2 R0 K26 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x740A0003, // 0003 JMPT R2 #0008 - 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x8808011B, // 0004 GETMBR R2 R0 K27 0x4C0C0000, // 0005 LDNIL R3 0x1C080403, // 0006 EQ R2 R2 R3 0x780A0001, // 0007 JMPF R2 #000A 0x4C080000, // 0008 LDNIL R2 0x80040400, // 0009 RET 1 R2 - 0xB80A0400, // 000A GETNGBL R2 K2 - 0x88080503, // 000B GETMBR R2 R2 K3 - 0x880C0104, // 000C GETMBR R3 R0 K4 - 0x04100705, // 000D SUB R4 R3 K5 - 0x24140906, // 000E GT R5 R4 K6 + 0xB80A0A00, // 000A GETNGBL R2 K5 + 0x88080524, // 000B GETMBR R2 R2 K36 + 0x880C010A, // 000C GETMBR R3 R0 K10 + 0x0410070B, // 000D SUB R4 R3 K11 + 0x24140903, // 000E GT R5 R4 K3 0x78160006, // 000F JMPF R5 #0017 - 0x88140107, // 0010 GETMBR R5 R0 K7 + 0x8814010C, // 0010 GETMBR R5 R0 K12 0x94140A04, // 0011 GETIDX R5 R5 R4 0x28140205, // 0012 GE R5 R1 R5 0x78160000, // 0013 JMPF R5 #0015 0x70020001, // 0014 JMP #0017 - 0x04100908, // 0015 SUB R4 R4 K8 + 0x04100902, // 0015 SUB R4 R4 K2 0x7001FFF6, // 0016 JMP #000E - 0x88140109, // 0017 GETMBR R5 R0 K9 - 0x8C140B0A, // 0018 GETMET R5 R5 K10 + 0x8814010D, // 0017 GETMBR R5 R0 K13 + 0x8C140B0E, // 0018 GETMET R5 R5 K14 0x541E0003, // 0019 LDINT R7 4 0x081C0807, // 001A MUL R7 R4 R7 0x54220003, // 001B LDINT R8 4 0x7C140600, // 001C CALL R5 3 - 0x88180109, // 001D GETMBR R6 R0 K9 - 0x8C180D0A, // 001E GETMET R6 R6 K10 - 0x00200908, // 001F ADD R8 R4 K8 + 0x8818010D, // 001D GETMBR R6 R0 K13 + 0x8C180D0E, // 001E GETMET R6 R6 K14 + 0x00200902, // 001F ADD R8 R4 K2 0x54260003, // 0020 LDINT R9 4 0x08201009, // 0021 MUL R8 R8 R9 0x54260003, // 0022 LDINT R9 4 0x7C180600, // 0023 CALL R6 3 - 0x881C0107, // 0024 GETMBR R7 R0 K7 + 0x881C010C, // 0024 GETMBR R7 R0 K12 0x941C0E04, // 0025 GETIDX R7 R7 R4 - 0x00200908, // 0026 ADD R8 R4 K8 - 0x88240107, // 0027 GETMBR R9 R0 K7 + 0x00200902, // 0026 ADD R8 R4 K2 + 0x8824010C, // 0027 GETMBR R9 R0 K12 0x94201208, // 0028 GETIDX R8 R9 R8 0x5C280400, // 0029 MOVE R10 R2 0x5C2C0200, // 002A MOVE R11 R1 @@ -1006,8 +970,8 @@ be_local_closure(class_Animate_palette_set_value, /* name */ 0x3834140D, // 0054 SHL R13 R10 R13 0x3030180D, // 0055 OR R12 R12 R13 0x3030180B, // 0056 OR R12 R12 R11 - 0x8834010B, // 0057 GETMBR R13 R0 K11 - 0x8838010C, // 0058 GETMBR R14 R0 K12 + 0x88340116, // 0057 GETMBR R13 R0 K22 + 0x88380117, // 0058 GETMBR R14 R0 K23 0x78360004, // 0059 JMPF R13 #005F 0x783A0003, // 005A JMPF R14 #005F 0x5C3C1C00, // 005B MOVE R15 R14 @@ -1028,21 +992,13 @@ be_local_closure(class_Animate_palette_set_duration, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(value_error), - /* K2 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive), - /* K3 */ be_nested_str_weak(duration_ms), - /* K4 */ be_nested_str_weak(slots_arr), - /* K5 */ be_nested_str_weak(parse_palette), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(set_duration), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ @@ -1050,15 +1006,15 @@ be_local_closure(class_Animate_palette_set_duration, /* name */ 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x18080300, // 0004 LE R2 R1 K0 + 0x18080308, // 0004 LE R2 R1 K8 0x780A0000, // 0005 JMPF R2 #0007 - 0xB0060302, // 0006 RAISE 1 K1 K2 - 0x90020601, // 0007 SETMBR R0 K3 R1 - 0x8C080105, // 0008 GETMET R2 R0 K5 - 0x58100000, // 0009 LDCONST R4 K0 - 0x04140306, // 000A SUB R5 R1 K6 + 0xB0064B27, // 0006 RAISE 1 K37 K39 + 0x90020801, // 0007 SETMBR R0 K4 R1 + 0x8C08011D, // 0008 GETMET R2 R0 K29 + 0x58100008, // 0009 LDCONST R4 K8 + 0x04140302, // 000A SUB R5 R1 K2 0x7C080600, // 000B CALL R2 3 - 0x90020802, // 000C SETMBR R0 K4 R2 + 0x90021802, // 000C SETMBR R0 K12 R2 0x80000000, // 000D RET 0 }) ) @@ -1073,41 +1029,32 @@ be_local_closure(class_Animate_palette_init, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(duration_ms), - /* K2 */ be_nested_str_weak(running), - /* K3 */ be_nested_str_weak(bri), - /* K4 */ be_nested_str_weak(color), - /* K5 */ be_nested_str_weak(light_state), - /* K6 */ be_nested_str_weak(RGB), - /* K7 */ be_nested_str_weak(set_palette), - }), + &be_ktab_class_Animate_palette, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x8C0C0728, // 0003 GETMET R3 R3 K40 0x7C0C0200, // 0004 CALL R3 1 - 0x90020202, // 0005 SETMBR R0 K1 R2 + 0x90020802, // 0005 SETMBR R0 K4 R2 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x90020403, // 0007 SETMBR R0 K2 R3 + 0x90025203, // 0007 SETMBR R0 K41 R3 0x540E0063, // 0008 LDINT R3 100 - 0x90020603, // 0009 SETMBR R0 K3 R3 - 0xB80E0A00, // 000A GETNGBL R3 K5 - 0xB8120A00, // 000B GETNGBL R4 K5 - 0x88100906, // 000C GETMBR R4 R4 K6 + 0x90022203, // 0009 SETMBR R0 K17 R3 + 0xB80E5400, // 000A GETNGBL R3 K42 + 0xB8125400, // 000B GETNGBL R4 K42 + 0x8810092B, // 000C GETMBR R4 R4 K43 0x7C0C0200, // 000D CALL R3 1 - 0x90020803, // 000E SETMBR R0 K4 R3 - 0x8C0C0107, // 000F GETMET R3 R0 K7 + 0x90021E03, // 000E SETMBR R0 K15 R3 + 0x8C0C012C, // 000F GETMET R3 R0 K44 0x5C140200, // 0010 MOVE R5 R1 0x7C0C0400, // 0011 CALL R3 2 0x80000000, // 0012 RET 0 @@ -1146,6 +1093,32 @@ be_local_class(Animate_palette, })), be_str_weak(Animate_palette) ); +// compact class 'Animate_oscillator' ktab size: 22, total: 38 (saved 128 bytes) +static const bvalue be_ktab_class_Animate_oscillator[22] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(duty_cycle), + /* K2 */ be_nested_str_weak(a), + /* K3 */ be_nested_str_weak(b), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(form), + /* K6 */ be_nested_str_weak(phase), + /* K7 */ be_nested_str_weak(init), + /* K8 */ be_nested_str_weak(duration_ms), + /* K9 */ be_nested_str_weak(value), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(millis), + /* K12 */ be_nested_str_weak(origin), + /* K13 */ be_nested_str_weak(scale_uint), + /* K14 */ be_nested_str_weak(beat), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(scale_int), + /* K17 */ be_const_int(2), + /* K18 */ be_const_int(3), + /* K19 */ be_nested_str_weak(sine_int), + /* K20 */ be_nested_str_weak(obj), + /* K21 */ be_nested_str_weak(mth), +}; + extern const bclass be_class_Animate_oscillator; @@ -1156,16 +1129,13 @@ be_local_closure(class_Animate_oscillator_set_duty_cycle, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(duty_cycle), - }), + &be_ktab_class_Animate_oscillator, /* shared constants */ be_str_weak(set_duty_cycle), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -1191,19 +1161,17 @@ be_local_closure(class_Animate_oscillator_set_a, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(a), - }), + &be_ktab_class_Animate_oscillator, /* shared constants */ be_str_weak(set_a), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020401, // 0000 SETMBR R0 K2 R1 0x80000000, // 0001 RET 0 }) ) @@ -1218,19 +1186,17 @@ be_local_closure(class_Animate_oscillator_set_b, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(b), - }), + &be_ktab_class_Animate_oscillator, /* shared constants */ be_str_weak(set_b), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020601, // 0000 SETMBR R0 K3 R1 0x80000000, // 0001 RET 0 }) ) @@ -1245,24 +1211,21 @@ be_local_closure(class_Animate_oscillator_set_form, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(1), - /* K1 */ be_nested_str_weak(form), - }), + &be_ktab_class_Animate_oscillator, /* shared constants */ be_str_weak(set_form), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 - 0x58040000, // 0003 LDCONST R1 K0 - 0x90020201, // 0004 SETMBR R0 K1 R1 + 0x58040004, // 0003 LDCONST R1 K4 + 0x90020A01, // 0004 SETMBR R0 K5 R1 0x80000000, // 0005 RET 0 }) ) @@ -1277,16 +1240,13 @@ be_local_closure(class_Animate_oscillator_set_phase, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(phase), - }), + &be_ktab_class_Animate_oscillator, /* shared constants */ be_str_weak(set_phase), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -1297,7 +1257,7 @@ be_local_closure(class_Animate_oscillator_set_phase, /* name */ 0x24080202, // 0004 GT R2 R1 R2 0x780A0000, // 0005 JMPF R2 #0007 0x54060063, // 0006 LDINT R1 100 - 0x90020201, // 0007 SETMBR R0 K1 R1 + 0x90020C01, // 0007 SETMBR R0 K6 R1 0x80000000, // 0008 RET 0 }) ) @@ -1312,44 +1272,33 @@ be_local_closure(class_Animate_oscillator_init, /* name */ be_nested_proto( 7, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(phase), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(duty_cycle), - /* K4 */ be_nested_str_weak(a), - /* K5 */ be_nested_str_weak(b), - /* K6 */ be_nested_str_weak(duration_ms), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(form), - }), + &be_ktab_class_Animate_oscillator, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x60140003, // 0000 GETGBL R5 G3 0x5C180000, // 0001 MOVE R6 R0 0x7C140200, // 0002 CALL R5 1 - 0x8C140B00, // 0003 GETMET R5 R5 K0 + 0x8C140B07, // 0003 GETMET R5 R5 K7 0x7C140200, // 0004 CALL R5 1 - 0x90020302, // 0005 SETMBR R0 K1 K2 + 0x90020D00, // 0005 SETMBR R0 K6 K0 0x54160031, // 0006 LDINT R5 50 - 0x90020605, // 0007 SETMBR R0 K3 R5 - 0x90020801, // 0008 SETMBR R0 K4 R1 - 0x90020A02, // 0009 SETMBR R0 K5 R2 - 0x90020C03, // 000A SETMBR R0 K6 R3 - 0x90020E01, // 000B SETMBR R0 K7 R1 + 0x90020205, // 0007 SETMBR R0 K1 R5 + 0x90020401, // 0008 SETMBR R0 K2 R1 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0x90021003, // 000A SETMBR R0 K8 R3 + 0x90021201, // 000B SETMBR R0 K9 R1 0x4C140000, // 000C LDNIL R5 0x1C140805, // 000D EQ R5 R4 R5 0x78160000, // 000E JMPF R5 #0010 - 0x58100008, // 000F LDCONST R4 K8 - 0x90021204, // 0010 SETMBR R0 K9 R4 + 0x58100004, // 000F LDCONST R4 K4 + 0x90020A04, // 0010 SETMBR R0 K5 R4 0x80000000, // 0011 RET 0 }) ) @@ -1364,38 +1313,17 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ be_nested_proto( 18, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(duration_ms), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(origin), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(scale_uint), - /* K6 */ be_nested_str_weak(duty_cycle), - /* K7 */ be_nested_str_weak(beat), - /* K8 */ be_nested_str_weak(a), - /* K9 */ be_nested_str_weak(b), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_nested_str_weak(phase), - /* K12 */ be_nested_str_weak(form), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(scale_int), - /* K15 */ be_const_int(2), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(sine_int), - /* K18 */ be_nested_str_weak(obj), - /* K19 */ be_nested_str_weak(mth), - }), + &be_ktab_class_Animate_oscillator, /* shared constants */ be_str_weak(animate), &be_const_str_solidified, ( &(const binstruction[141]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080108, // 0000 GETMBR R2 R0 K8 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0000, // 0003 JMPF R2 #0005 @@ -1403,24 +1331,24 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x4C080000, // 0005 LDNIL R2 0x1C080202, // 0006 EQ R2 R1 R2 0x780A0003, // 0007 JMPF R2 #000C - 0xB80A0200, // 0008 GETNGBL R2 K1 - 0x8C080502, // 0009 GETMET R2 R2 K2 + 0xB80A1400, // 0008 GETNGBL R2 K10 + 0x8C08050B, // 0009 GETMET R2 R2 K11 0x7C080200, // 000A CALL R2 1 0x5C040400, // 000B MOVE R1 R2 - 0x88080103, // 000C GETMBR R2 R0 K3 + 0x8808010C, // 000C GETMBR R2 R0 K12 0x04080202, // 000D SUB R2 R1 R2 - 0x140C0504, // 000E LT R3 R2 K4 + 0x140C0500, // 000E LT R3 R2 K0 0x780E0001, // 000F JMPF R3 #0012 - 0x58080004, // 0010 LDCONST R2 K4 - 0x88040103, // 0011 GETMBR R1 R0 K3 - 0x880C0100, // 0012 GETMBR R3 R0 K0 + 0x58080000, // 0010 LDCONST R2 K0 + 0x8804010C, // 0011 GETMBR R1 R0 K12 + 0x880C0108, // 0012 GETMBR R3 R0 K8 0x4C100000, // 0013 LDNIL R4 - 0xB8160200, // 0014 GETNGBL R5 K1 - 0x8C140B05, // 0015 GETMET R5 R5 K5 - 0x881C0106, // 0016 GETMBR R7 R0 K6 - 0x58200004, // 0017 LDCONST R8 K4 + 0xB8161400, // 0014 GETNGBL R5 K10 + 0x8C140B0D, // 0015 GETMET R5 R5 K13 + 0x881C0101, // 0016 GETMBR R7 R0 K1 + 0x58200000, // 0017 LDCONST R8 K0 0x54260063, // 0018 LDINT R9 100 - 0x58280004, // 0019 LDCONST R10 K4 + 0x58280000, // 0019 LDCONST R10 K0 0x5C2C0600, // 001A MOVE R11 R3 0x7C140C00, // 001B CALL R5 6 0x5C100A00, // 001C MOVE R4 R5 @@ -1428,71 +1356,71 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x78160007, // 001E JMPF R5 #0027 0x0C180403, // 001F DIV R6 R2 R3 0x08180C03, // 0020 MUL R6 R6 R3 - 0x88140103, // 0021 GETMBR R5 R0 K3 + 0x8814010C, // 0021 GETMBR R5 R0 K12 0x00140A06, // 0022 ADD R5 R5 R6 - 0x90020605, // 0023 SETMBR R0 K3 R5 + 0x90021805, // 0023 SETMBR R0 K12 R5 0x10080403, // 0024 MOD R2 R2 R3 - 0x8C140107, // 0025 GETMET R5 R0 K7 + 0x8C14010E, // 0025 GETMET R5 R0 K14 0x7C140200, // 0026 CALL R5 1 - 0x88140108, // 0027 GETMBR R5 R0 K8 - 0x88180109, // 0028 GETMBR R6 R0 K9 - 0x881C010A, // 0029 GETMBR R7 R0 K10 + 0x88140102, // 0027 GETMBR R5 R0 K2 + 0x88180103, // 0028 GETMBR R6 R0 K3 + 0x881C0109, // 0029 GETMBR R7 R0 K9 0x5C200400, // 002A MOVE R8 R2 - 0x8824010B, // 002B GETMBR R9 R0 K11 - 0x24241304, // 002C GT R9 R9 K4 + 0x88240106, // 002B GETMBR R9 R0 K6 + 0x24241300, // 002C GT R9 R9 K0 0x7826000B, // 002D JMPF R9 #003A - 0xB8260200, // 002E GETNGBL R9 K1 - 0x8C241305, // 002F GETMET R9 R9 K5 - 0x882C010B, // 0030 GETMBR R11 R0 K11 - 0x58300004, // 0031 LDCONST R12 K4 + 0xB8261400, // 002E GETNGBL R9 K10 + 0x8C24130D, // 002F GETMET R9 R9 K13 + 0x882C0106, // 0030 GETMBR R11 R0 K6 + 0x58300000, // 0031 LDCONST R12 K0 0x54360063, // 0032 LDINT R13 100 - 0x58380004, // 0033 LDCONST R14 K4 + 0x58380000, // 0033 LDCONST R14 K0 0x5C3C0600, // 0034 MOVE R15 R3 0x7C240C00, // 0035 CALL R9 6 0x00201009, // 0036 ADD R8 R8 R9 0x24241003, // 0037 GT R9 R8 R3 0x78260000, // 0038 JMPF R9 #003A 0x04201003, // 0039 SUB R8 R8 R3 - 0x8824010C, // 003A GETMBR R9 R0 K12 - 0x1C24130D, // 003B EQ R9 R9 K13 + 0x88240105, // 003A GETMBR R9 R0 K5 + 0x1C24130F, // 003B EQ R9 R9 K15 0x78260009, // 003C JMPF R9 #0047 - 0xB8260200, // 003D GETNGBL R9 K1 - 0x8C24130E, // 003E GETMET R9 R9 K14 + 0xB8261400, // 003D GETNGBL R9 K10 + 0x8C241310, // 003E GETMET R9 R9 K16 0x5C2C1000, // 003F MOVE R11 R8 - 0x58300004, // 0040 LDCONST R12 K4 - 0x0434070D, // 0041 SUB R13 R3 K13 + 0x58300000, // 0040 LDCONST R12 K0 + 0x0434070F, // 0041 SUB R13 R3 K15 0x5C380A00, // 0042 MOVE R14 R5 0x5C3C0C00, // 0043 MOVE R15 R6 0x7C240C00, // 0044 CALL R9 6 0x5C1C1200, // 0045 MOVE R7 R9 0x7002003B, // 0046 JMP #0083 - 0x8824010C, // 0047 GETMBR R9 R0 K12 - 0x1C24130F, // 0048 EQ R9 R9 K15 + 0x88240105, // 0047 GETMBR R9 R0 K5 + 0x1C241311, // 0048 EQ R9 R9 K17 0x78260015, // 0049 JMPF R9 #0060 0x14241004, // 004A LT R9 R8 R4 0x78260009, // 004B JMPF R9 #0056 - 0xB8260200, // 004C GETNGBL R9 K1 - 0x8C24130E, // 004D GETMET R9 R9 K14 + 0xB8261400, // 004C GETNGBL R9 K10 + 0x8C241310, // 004D GETMET R9 R9 K16 0x5C2C1000, // 004E MOVE R11 R8 - 0x58300004, // 004F LDCONST R12 K4 - 0x0434090D, // 0050 SUB R13 R4 K13 + 0x58300000, // 004F LDCONST R12 K0 + 0x0434090F, // 0050 SUB R13 R4 K15 0x5C380A00, // 0051 MOVE R14 R5 0x5C3C0C00, // 0052 MOVE R15 R6 0x7C240C00, // 0053 CALL R9 6 0x5C1C1200, // 0054 MOVE R7 R9 0x70020008, // 0055 JMP #005F - 0xB8260200, // 0056 GETNGBL R9 K1 - 0x8C24130E, // 0057 GETMET R9 R9 K14 + 0xB8261400, // 0056 GETNGBL R9 K10 + 0x8C241310, // 0057 GETMET R9 R9 K16 0x5C2C1000, // 0058 MOVE R11 R8 0x5C300800, // 0059 MOVE R12 R4 - 0x0434070D, // 005A SUB R13 R3 K13 + 0x0434070F, // 005A SUB R13 R3 K15 0x5C380C00, // 005B MOVE R14 R6 0x5C3C0A00, // 005C MOVE R15 R5 0x7C240C00, // 005D CALL R9 6 0x5C1C1200, // 005E MOVE R7 R9 0x70020022, // 005F JMP #0083 - 0x8824010C, // 0060 GETMBR R9 R0 K12 - 0x1C241310, // 0061 EQ R9 R9 K16 + 0x88240105, // 0060 GETMBR R9 R0 K5 + 0x1C241312, // 0061 EQ R9 R9 K18 0x78260005, // 0062 JMPF R9 #0069 0x14241004, // 0063 LT R9 R8 R4 0x78260001, // 0064 JMPF R9 #0067 @@ -1500,25 +1428,25 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x70020000, // 0066 JMP #0068 0x5C1C0C00, // 0067 MOVE R7 R6 0x70020019, // 0068 JMP #0083 - 0x8824010C, // 0069 GETMBR R9 R0 K12 + 0x88240105, // 0069 GETMBR R9 R0 K5 0x542A0003, // 006A LDINT R10 4 0x1C24120A, // 006B EQ R9 R9 R10 0x78260015, // 006C JMPF R9 #0083 - 0xB8260200, // 006D GETNGBL R9 K1 - 0x8C24130E, // 006E GETMET R9 R9 K14 + 0xB8261400, // 006D GETNGBL R9 K10 + 0x8C241310, // 006E GETMET R9 R9 K16 0x5C2C1000, // 006F MOVE R11 R8 - 0x58300004, // 0070 LDCONST R12 K4 - 0x0434070D, // 0071 SUB R13 R3 K13 - 0x58380004, // 0072 LDCONST R14 K4 + 0x58300000, // 0070 LDCONST R12 K0 + 0x0434070F, // 0071 SUB R13 R3 K15 + 0x58380000, // 0072 LDCONST R14 K0 0x543E7FFE, // 0073 LDINT R15 32767 0x7C240C00, // 0074 CALL R9 6 - 0xB82A0200, // 0075 GETNGBL R10 K1 - 0x8C281511, // 0076 GETMET R10 R10 K17 + 0xB82A1400, // 0075 GETNGBL R10 K10 + 0x8C281513, // 0076 GETMET R10 R10 K19 0x54321FFF, // 0077 LDINT R12 8192 0x0430120C, // 0078 SUB R12 R9 R12 0x7C280400, // 0079 CALL R10 2 - 0xB82E0200, // 007A GETNGBL R11 K1 - 0x8C2C170E, // 007B GETMET R11 R11 K14 + 0xB82E1400, // 007A GETNGBL R11 K10 + 0x8C2C1710, // 007B GETMET R11 R11 K16 0x5C341400, // 007C MOVE R13 R10 0x5439EFFF, // 007D LDINT R14 -4096 0x543E0FFF, // 007E LDINT R15 4096 @@ -1526,9 +1454,9 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x5C440C00, // 0080 MOVE R17 R6 0x7C2C0C00, // 0081 CALL R11 6 0x5C1C1600, // 0082 MOVE R7 R11 - 0x90021407, // 0083 SETMBR R0 K10 R7 - 0x88240112, // 0084 GETMBR R9 R0 K18 - 0x88280113, // 0085 GETMBR R10 R0 K19 + 0x90021207, // 0083 SETMBR R0 K9 R7 + 0x88240114, // 0084 GETMBR R9 R0 K20 + 0x88280115, // 0085 GETMBR R10 R0 K21 0x78260004, // 0086 JMPF R9 #008C 0x782A0003, // 0087 JMPF R10 #008C 0x5C2C1400, // 0088 MOVE R11 R10 diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h index 9e094c5a2..4e2246ae4 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h @@ -3,6 +3,16 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Leds_frame_be' ktab size: 6, total: 7 (saved 8 bytes) +static const bvalue be_ktab_class_Leds_frame_be[6] = { + /* K0 */ be_nested_str(set), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str(setitem), + /* K3 */ be_nested_str(get), + /* K4 */ be_nested_str(pixel_size), + /* K5 */ be_nested_str(init), +}; + extern const bclass be_class_Leds_frame_be; @@ -13,15 +23,13 @@ be_local_closure(class_Leds_frame_be_setitem, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(set), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_setitem, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -45,23 +53,20 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ be_nested_proto( 11, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(setitem), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_set_pixel, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x4C180000, // 0000 LDNIL R6 0x1C180A06, // 0001 EQ R6 R5 R6 0x781A0000, // 0002 JMPF R6 #0004 - 0x58140000, // 0003 LDCONST R5 K0 + 0x58140001, // 0003 LDCONST R5 K1 0x541A00FE, // 0004 LDINT R6 255 0x2C180A06, // 0005 AND R6 R5 R6 0x541E0017, // 0006 LDINT R7 24 @@ -79,7 +84,7 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ 0x541E00FE, // 0012 LDINT R7 255 0x2C1C0807, // 0013 AND R7 R4 R7 0x30180C07, // 0014 OR R6 R6 R7 - 0x8C1C0101, // 0015 GETMET R7 R0 K1 + 0x8C1C0102, // 0015 GETMET R7 R0 K2 0x5C240200, // 0016 MOVE R9 R1 0x5C280C00, // 0017 MOVE R10 R6 0x7C1C0600, // 0018 CALL R7 3 @@ -97,19 +102,17 @@ be_local_closure(class_Leds_frame_be_item, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(get), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_item, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080103, // 0000 GETMET R2 R0 K3 0x54120003, // 0001 LDINT R4 4 0x08100204, // 0002 MUL R4 R1 R4 0x54160003, // 0003 LDINT R5 4 @@ -128,28 +131,24 @@ be_local_closure(class_Leds_frame_be_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(pixel_size), - /* K2 */ be_nested_str(init), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x14080300, // 0000 LT R2 R1 K0 + 0x14080301, // 0000 LT R2 R1 K1 0x780A0000, // 0001 JMPF R2 #0003 0x44040200, // 0002 NEG R1 R1 - 0x90020201, // 0003 SETMBR R0 K1 R1 + 0x90020801, // 0003 SETMBR R0 K4 R1 0x60080003, // 0004 GETGBL R2 G3 0x5C0C0000, // 0005 MOVE R3 R0 0x7C080200, // 0006 CALL R2 1 - 0x8C080502, // 0007 GETMET R2 R2 K2 + 0x8C080505, // 0007 GETMET R2 R2 K5 0x5411FFFB, // 0008 LDINT R4 -4 0x08100204, // 0009 MUL R4 R1 R4 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index 18aab1b25..d7d7c0ffd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -3,6 +3,200 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Commisioning_Context' ktab size: 190, total: 359 (saved 1352 bytes) +static const bvalue be_ktab_class_Matter_Commisioning_Context[190] = { + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(app_payload_idx), + /* K3 */ be_const_int(2147483647), + /* K4 */ be_nested_str_weak(tohex), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20_X25s), + /* K7 */ be_nested_str_weak(0000000000000000), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(crypto), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(loglevel), + /* K12 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D), + /* K13 */ be_nested_str_weak(device), + /* K14 */ be_nested_str_weak(sessions), + /* K15 */ be_nested_str_weak(fabrics), + /* K16 */ be_nested_str_weak(noc), + /* K17 */ be_nested_str_weak(fabric_id), + /* K18 */ be_nested_str_weak(device_id), + /* K19 */ be_nested_str_weak(get_ca_pub), + /* K20 */ be_nested_str_weak(get_ipk_group_key), + /* K21 */ be_nested_str_weak(HMAC_SHA256), + /* K22 */ be_nested_str_weak(update), + /* K23 */ be_nested_str_weak(out), + /* K24 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20candidateDestinationId_X3D), + /* K25 */ be_nested_str_weak(stop_iteration), + /* K26 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i), + /* K27 */ be_nested_str_weak(create_session), + /* K28 */ be_nested_str_weak(set_keys), + /* K29 */ be_nested_str_weak(opcode), + /* K30 */ be_nested_str_weak(local_session_id), + /* K31 */ be_const_int(0), + /* K32 */ be_nested_str_weak(protocol_id), + /* K33 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message), + /* K34 */ be_const_int(2), + /* K35 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), + /* K36 */ be_const_int(3), + /* K37 */ be_nested_str_weak(send_status_report), + /* K38 */ be_const_int(1), + /* K39 */ be_nested_str_weak(matter), + /* K40 */ be_nested_str_weak(PBKDFParamRequest), + /* K41 */ be_nested_str_weak(parse), + /* K42 */ be_nested_str_weak(set_mode_PASE), + /* K43 */ be_nested_str_weak(__Msg1), + /* K44 */ be_nested_str_weak(passcodeId), + /* K45 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id), + /* K46 */ be_nested_str_weak(__future_initiator_session_id), + /* K47 */ be_nested_str_weak(initiator_session_id), + /* K48 */ be_nested_str_weak(__future_local_session_id), + /* K49 */ be_nested_str_weak(gen_local_session_id), + /* K50 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K51 */ be_nested_str_weak(remote_ip), + /* K52 */ be_nested_str_weak(remote_port), + /* K53 */ be_nested_str_weak(PBKDFParamResponse), + /* K54 */ be_nested_str_weak(initiatorRandom), + /* K55 */ be_nested_str_weak(responderRandom), + /* K56 */ be_nested_str_weak(random), + /* K57 */ be_nested_str_weak(responderSessionId), + /* K58 */ be_nested_str_weak(pbkdf_parameters_salt), + /* K59 */ be_nested_str_weak(commissioning_salt), + /* K60 */ be_nested_str_weak(pbkdf_parameters_iterations), + /* K61 */ be_nested_str_weak(commissioning_iterations), + /* K62 */ be_nested_str_weak(tlv2raw), + /* K63 */ be_nested_str_weak(__Msg2), + /* K64 */ be_nested_str_weak(build_response), + /* K65 */ be_nested_str_weak(encode_frame), + /* K66 */ be_nested_str_weak(responder), + /* K67 */ be_nested_str_weak(send_response_frame), + /* K68 */ be_nested_str_weak(add), + /* K69 */ be_const_int(2), + /* K70 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), + /* K71 */ be_nested_str_weak(Pake1), + /* K72 */ be_nested_str_weak(pA), + /* K73 */ be_nested_str_weak(SPAKE2P_Matter), + /* K74 */ be_nested_str_weak(commissioning_w0), + /* K75 */ be_nested_str_weak(commissioning_L), + /* K76 */ be_nested_str_weak(compute_pB), + /* K77 */ be_nested_str_weak(compute_ZV_verifier), + /* K78 */ be_nested_str_weak(SHA256), + /* K79 */ be_nested_str_weak(fromstring), + /* K80 */ be_nested_str_weak(Matter_Context_Prefix), + /* K81 */ be_nested_str_weak(set_context), + /* K82 */ be_nested_str_weak(compute_TT_hash), + /* K83 */ be_nested_str_weak(Pake2), + /* K84 */ be_nested_str_weak(pB), + /* K85 */ be_nested_str_weak(cB), + /* K86 */ be_nested_str_weak(__spake_cA), + /* K87 */ be_nested_str_weak(cA), + /* K88 */ be_nested_str_weak(__spake_Ke), + /* K89 */ be_nested_str_weak(Ke), + /* K90 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K91 */ be_nested_str_weak(_ip), + /* K92 */ be_nested_str_weak(_port), + /* K93 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), + /* K94 */ be_nested_str_weak(Pake3), + /* K95 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), + /* K96 */ be_nested_str_weak(rtc_utc), + /* K97 */ be_nested_str_weak(HKDF_SHA256), + /* K98 */ be_nested_str_weak(derive), + /* K99 */ be_nested_str_weak(SEKeys_Info), + /* K100 */ be_nested_str_weak(add_session), + /* K101 */ be_const_int(3), + /* K102 */ be_const_int(1), + /* K103 */ be_const_int(2), + /* K104 */ be_nested_str_weak(Sigma3), + /* K105 */ be_nested_str_weak(S3K_Info), + /* K106 */ be_nested_str_weak(shared_secret), + /* K107 */ be_nested_str_weak(TBEData3Encrypted), + /* K108 */ be_const_int(2147483647), + /* K109 */ be_nested_str_weak(AES_CCM), + /* K110 */ be_nested_str_weak(TBEData3_Nonce), + /* K111 */ be_nested_str_weak(decrypt), + /* K112 */ be_nested_str_weak(tag), + /* K113 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), + /* K114 */ be_nested_str_weak(TLV), + /* K115 */ be_nested_str_weak(findsubval), + /* K116 */ be_nested_str_weak(findsub), + /* K117 */ be_nested_str_weak(int), + /* K118 */ be_nested_str_weak(peer_node_id), + /* K119 */ be_nested_str_weak(int64), + /* K120 */ be_nested_str_weak(fromu32), + /* K121 */ be_nested_str_weak(tobytes), + /* K122 */ be_nested_str_weak(Matter_TLV_struct), + /* K123 */ be_nested_str_weak(add_TLV), + /* K124 */ be_nested_str_weak(B1), + /* K125 */ be_nested_str_weak(__initiator_pub), + /* K126 */ be_nested_str_weak(__responder_pub), + /* K127 */ be_nested_str_weak(EC_P256), + /* K128 */ be_nested_str_weak(ecdsa_verify_sha256), + /* K129 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), + /* K130 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), + /* K131 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), + /* K132 */ be_nested_str_weak(Msg3), + /* K133 */ be_nested_str_weak(close), + /* K134 */ be_nested_str_weak(_breadcrumb), + /* K135 */ be_nested_str_weak(counter_snd_next), + /* K136 */ be_nested_str_weak(set_persist), + /* K137 */ be_nested_str_weak(set_no_expiration), + /* K138 */ be_nested_str_weak(persist_to_fabric), + /* K139 */ be_nested_str_weak(save), + /* K140 */ be_nested_str_weak(is_commissioning_open), + /* K141 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), + /* K142 */ be_nested_str_weak(parse_PBKDFParamRequest), + /* K143 */ be_nested_str_weak(parse_Pake1), + /* K144 */ be_nested_str_weak(parse_Pake3), + /* K145 */ be_nested_str_weak(parse_Sigma1), + /* K146 */ be_nested_str_weak(parse_Sigma3), + /* K147 */ be_nested_str_weak(parse_StatusReport), + /* K148 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), + /* K149 */ be_nested_str_weak(Sigma1), + /* K150 */ be_nested_str_weak(initiatorEphPubKey), + /* K151 */ be_nested_str_weak(resumptionID), + /* K152 */ be_nested_str_weak(initiatorResumeMIC), + /* K153 */ be_nested_str_weak(find_session_by_resumption_id), + /* K154 */ be_nested_str_weak(_fabric), + /* K155 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), + /* K156 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption), + /* K157 */ be_nested_str_weak(Sigma1_Resume), + /* K158 */ be_nested_str_weak(NCASE_SigmaS1), + /* K159 */ be_nested_str_weak(_source_node_id), + /* K160 */ be_nested_str_weak(source_node_id), + /* K161 */ be_nested_str_weak(set_mode_CASE), + /* K162 */ be_nested_str_weak(resumption_id), + /* K163 */ be_nested_str_weak(Sigma2_Resume), + /* K164 */ be_nested_str_weak(NCASE_SigmaS2), + /* K165 */ be_nested_str_weak(Sigma2Resume), + /* K166 */ be_nested_str_weak(sigma2ResumeMIC), + /* K167 */ be_nested_str_weak(responderSessionID), + /* K168 */ be_nested_str_weak(SessionResumptionKeys), + /* K169 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), + /* K170 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), + /* K171 */ be_nested_str_weak(find_fabric_by_destination_id), + /* K172 */ be_nested_str_weak(destinationId), + /* K173 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), + /* K174 */ be_nested_str_weak(__responder_priv), + /* K175 */ be_nested_str_weak(public_key), + /* K176 */ be_nested_str_weak(shared_key), + /* K177 */ be_nested_str_weak(B2), + /* K178 */ be_nested_str_weak(get_noc), + /* K179 */ be_nested_str_weak(get_icac), + /* K180 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K181 */ be_nested_str_weak(get_pk), + /* K182 */ be_nested_str_weak(Msg1), + /* K183 */ be_nested_str_weak(S2K_Info), + /* K184 */ be_nested_str_weak(TBEData2_Nonce), + /* K185 */ be_nested_str_weak(encrypt), + /* K186 */ be_nested_str_weak(Sigma2), + /* K187 */ be_nested_str_weak(responderEphPubKey), + /* K188 */ be_nested_str_weak(encrypted2), + /* K189 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), +}; + extern const bclass be_class_Matter_Commisioning_Context; @@ -13,23 +207,13 @@ be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(app_payload_idx), - /* K3 */ be_const_int(2147483647), - /* K4 */ be_nested_str_weak(tohex), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20_X25s), - /* K7 */ be_nested_str_weak(0000000000000000), - /* K8 */ be_const_int(3), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_StatusReport), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ @@ -66,95 +250,75 @@ be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id be_nested_proto( 13, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(loglevel), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(device), - /* K7 */ be_nested_str_weak(sessions), - /* K8 */ be_nested_str_weak(fabrics), - /* K9 */ be_nested_str_weak(noc), - /* K10 */ be_nested_str_weak(fabric_id), - /* K11 */ be_nested_str_weak(device_id), - /* K12 */ be_nested_str_weak(get_ca_pub), - /* K13 */ be_nested_str_weak(get_ipk_group_key), - /* K14 */ be_nested_str_weak(HMAC_SHA256), - /* K15 */ be_nested_str_weak(update), - /* K16 */ be_nested_str_weak(out), - /* K17 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20candidateDestinationId_X3D), - /* K18 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(find_fabric_by_destination_id), &be_const_str_solidified, ( &(const binstruction[71]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 + 0xA40E1200, // 0000 IMPORT R3 K9 + 0xB8121400, // 0001 GETNGBL R4 K10 + 0x8C10090B, // 0002 GETMET R4 R4 K11 0x541A0003, // 0003 LDINT R6 4 0x7C100400, // 0004 CALL R4 2 0x78120005, // 0005 JMPF R4 #000C - 0xB8120600, // 0006 GETNGBL R4 K3 - 0x8C140305, // 0007 GETMET R5 R1 K5 + 0xB8120A00, // 0006 GETNGBL R4 K5 + 0x8C140304, // 0007 GETMET R5 R1 K4 0x7C140200, // 0008 CALL R5 1 - 0x00160805, // 0009 ADD R5 K4 R5 + 0x00161805, // 0009 ADD R5 K12 R5 0x541A0003, // 000A LDINT R6 4 0x7C100400, // 000B CALL R4 2 0x60100010, // 000C GETGBL R4 G16 - 0x88140106, // 000D GETMBR R5 R0 K6 - 0x88140B07, // 000E GETMBR R5 R5 K7 - 0x88140B08, // 000F GETMBR R5 R5 K8 + 0x8814010D, // 000D GETMBR R5 R0 K13 + 0x88140B0E, // 000E GETMBR R5 R5 K14 + 0x88140B0F, // 000F GETMBR R5 R5 K15 0x7C100200, // 0010 CALL R4 1 0xA802002F, // 0011 EXBLK 0 #0042 0x5C140800, // 0012 MOVE R5 R4 0x7C140000, // 0013 CALL R5 0 - 0x88180B09, // 0014 GETMBR R6 R5 K9 + 0x88180B10, // 0014 GETMBR R6 R5 K16 0x4C1C0000, // 0015 LDNIL R7 0x1C180C07, // 0016 EQ R6 R6 R7 0x741A0007, // 0017 JMPT R6 #0020 - 0x88180B0A, // 0018 GETMBR R6 R5 K10 + 0x88180B11, // 0018 GETMBR R6 R5 K17 0x4C1C0000, // 0019 LDNIL R7 0x1C180C07, // 001A EQ R6 R6 R7 0x741A0003, // 001B JMPT R6 #0020 - 0x88180B0B, // 001C GETMBR R6 R5 K11 + 0x88180B12, // 001C GETMBR R6 R5 K18 0x4C1C0000, // 001D LDNIL R7 0x1C180C07, // 001E EQ R6 R6 R7 0x781A0000, // 001F JMPF R6 #0021 0x7001FFF0, // 0020 JMP #0012 - 0x8C180B0C, // 0021 GETMET R6 R5 K12 + 0x8C180B13, // 0021 GETMET R6 R5 K19 0x7C180200, // 0022 CALL R6 1 0x00180406, // 0023 ADD R6 R2 R6 - 0x881C0B0A, // 0024 GETMBR R7 R5 K10 + 0x881C0B11, // 0024 GETMBR R7 R5 K17 0x00180C07, // 0025 ADD R6 R6 R7 - 0x881C0B0B, // 0026 GETMBR R7 R5 K11 + 0x881C0B12, // 0026 GETMBR R7 R5 K18 0x00180C07, // 0027 ADD R6 R6 R7 - 0x8C1C0B0D, // 0028 GETMET R7 R5 K13 + 0x8C1C0B14, // 0028 GETMET R7 R5 K20 0x7C1C0200, // 0029 CALL R7 1 - 0x8C20070E, // 002A GETMET R8 R3 K14 + 0x8C200715, // 002A GETMET R8 R3 K21 0x5C280E00, // 002B MOVE R10 R7 0x7C200400, // 002C CALL R8 2 - 0x8C24110F, // 002D GETMET R9 R8 K15 + 0x8C241116, // 002D GETMET R9 R8 K22 0x5C2C0C00, // 002E MOVE R11 R6 0x7C240400, // 002F CALL R9 2 - 0x8C241110, // 0030 GETMET R9 R8 K16 + 0x8C241117, // 0030 GETMET R9 R8 K23 0x7C240200, // 0031 CALL R9 1 - 0xB82A0200, // 0032 GETNGBL R10 K1 - 0x8C281502, // 0033 GETMET R10 R10 K2 + 0xB82A1400, // 0032 GETNGBL R10 K10 + 0x8C28150B, // 0033 GETMET R10 R10 K11 0x54320003, // 0034 LDINT R12 4 0x7C280400, // 0035 CALL R10 2 0x782A0005, // 0036 JMPF R10 #003D - 0xB82A0600, // 0037 GETNGBL R10 K3 - 0x8C2C1305, // 0038 GETMET R11 R9 K5 + 0xB82A0A00, // 0037 GETNGBL R10 K5 + 0x8C2C1304, // 0038 GETMET R11 R9 K4 0x7C2C0200, // 0039 CALL R11 1 - 0x002E220B, // 003A ADD R11 K17 R11 + 0x002E300B, // 003A ADD R11 K24 R11 0x54320003, // 003B LDINT R12 4 0x7C280400, // 003C CALL R10 2 0x1C281201, // 003D EQ R10 R9 R1 @@ -162,7 +326,7 @@ be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id 0xA8040001, // 003F EXBLK 1 1 0x80040A00, // 0040 RET 1 R5 0x7001FFCF, // 0041 JMP #0012 - 0x58100012, // 0042 LDCONST R4 K18 + 0x58100019, // 0042 LDCONST R4 K25 0xAC100200, // 0043 CATCH R4 1 0 0xB0080000, // 0044 RAISE 2 R0 R0 0x4C100000, // 0045 LDNIL R4 @@ -180,13 +344,13 @@ be_local_closure(class_Matter_Commisioning_Context_every_second, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -204,38 +368,31 @@ be_local_closure(class_Matter_Commisioning_Context_add_session, /* name */ be_nested_proto( 12, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i), - /* K2 */ be_nested_str_weak(device), - /* K3 */ be_nested_str_weak(sessions), - /* K4 */ be_nested_str_weak(create_session), - /* K5 */ be_nested_str_weak(set_keys), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(add_session), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xB81A0000, // 0000 GETNGBL R6 K0 + 0xB81A0A00, // 0000 GETNGBL R6 K5 0x601C0018, // 0001 GETGBL R7 G24 - 0x58200001, // 0002 LDCONST R8 K1 + 0x5820001A, // 0002 LDCONST R8 K26 0x5C240200, // 0003 MOVE R9 R1 0x5C280400, // 0004 MOVE R10 R2 0x7C1C0600, // 0005 CALL R7 3 0x54220003, // 0006 LDINT R8 4 0x7C180400, // 0007 CALL R6 2 - 0x88180102, // 0008 GETMBR R6 R0 K2 - 0x88180D03, // 0009 GETMBR R6 R6 K3 - 0x8C180D04, // 000A GETMET R6 R6 K4 + 0x8818010D, // 0008 GETMBR R6 R0 K13 + 0x88180D0E, // 0009 GETMBR R6 R6 K14 + 0x8C180D1B, // 000A GETMET R6 R6 K27 0x5C200200, // 000B MOVE R8 R1 0x5C240400, // 000C MOVE R9 R2 0x7C180600, // 000D CALL R6 3 - 0x8C1C0D05, // 000E GETMET R7 R6 K5 + 0x8C1C0D1C, // 000E GETMET R7 R6 K28 0x5C240600, // 000F MOVE R9 R3 0x5C280800, // 0010 MOVE R10 R4 0x5C2C0A00, // 0011 MOVE R11 R5 @@ -254,173 +411,125 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* be_nested_proto( 12, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[47]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(send_status_report), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(matter), - /* K14 */ be_nested_str_weak(PBKDFParamRequest), - /* K15 */ be_nested_str_weak(parse), - /* K16 */ be_nested_str_weak(raw), - /* K17 */ be_nested_str_weak(app_payload_idx), - /* K18 */ be_nested_str_weak(set_mode_PASE), - /* K19 */ be_nested_str_weak(__Msg1), - /* K20 */ be_const_int(2147483647), - /* K21 */ be_nested_str_weak(passcodeId), - /* K22 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id), - /* K23 */ be_nested_str_weak(__future_initiator_session_id), - /* K24 */ be_nested_str_weak(initiator_session_id), - /* K25 */ be_nested_str_weak(__future_local_session_id), - /* K26 */ be_nested_str_weak(device), - /* K27 */ be_nested_str_weak(sessions), - /* K28 */ be_nested_str_weak(gen_local_session_id), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K30 */ be_nested_str_weak(remote_ip), - /* K31 */ be_nested_str_weak(remote_port), - /* K32 */ be_nested_str_weak(PBKDFParamResponse), - /* K33 */ be_nested_str_weak(initiatorRandom), - /* K34 */ be_nested_str_weak(responderRandom), - /* K35 */ be_nested_str_weak(random), - /* K36 */ be_nested_str_weak(responderSessionId), - /* K37 */ be_nested_str_weak(pbkdf_parameters_salt), - /* K38 */ be_nested_str_weak(commissioning_salt), - /* K39 */ be_nested_str_weak(pbkdf_parameters_iterations), - /* K40 */ be_nested_str_weak(commissioning_iterations), - /* K41 */ be_nested_str_weak(tlv2raw), - /* K42 */ be_nested_str_weak(__Msg2), - /* K43 */ be_nested_str_weak(build_response), - /* K44 */ be_nested_str_weak(encode_frame), - /* K45 */ be_nested_str_weak(responder), - /* K46 */ be_nested_str_weak(send_response_frame), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_PBKDFParamRequest), &be_const_str_solidified, ( &(const binstruction[113]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 + 0xA40A1200, // 0000 IMPORT R2 K9 + 0x880C0300, // 0001 GETMBR R3 R1 K0 + 0x8810031D, // 0002 GETMBR R4 R1 K29 0x5416001F, // 0003 LDINT R5 32 0x20100805, // 0004 NE R4 R4 R5 0x74120005, // 0005 JMPT R4 #000C - 0x88100303, // 0006 GETMBR R4 R1 K3 - 0x20100904, // 0007 NE R4 R4 K4 + 0x8810031E, // 0006 GETMBR R4 R1 K30 + 0x2010091F, // 0007 NE R4 R4 K31 0x74120002, // 0008 JMPT R4 #000C - 0x88100305, // 0009 GETMBR R4 R1 K5 - 0x20100904, // 000A NE R4 R4 K4 + 0x88100320, // 0009 GETMBR R4 R1 K32 + 0x2010091F, // 000A NE R4 R4 K31 0x78120010, // 000B JMPF R4 #001D - 0xB8120C00, // 000C GETNGBL R4 K6 - 0x58140007, // 000D LDCONST R5 K7 - 0x58180008, // 000E LDCONST R6 K8 + 0xB8120A00, // 000C GETNGBL R4 K5 + 0x58140021, // 000D LDCONST R5 K33 + 0x58180022, // 000E LDCONST R6 K34 0x7C100400, // 000F CALL R4 2 - 0xB8120C00, // 0010 GETNGBL R4 K6 - 0x58140009, // 0011 LDCONST R5 K9 - 0x5818000A, // 0012 LDCONST R6 K10 + 0xB8120A00, // 0010 GETNGBL R4 K5 + 0x58140023, // 0011 LDCONST R5 K35 + 0x58180024, // 0012 LDCONST R6 K36 0x7C100400, // 0013 CALL R4 2 - 0x8C10010B, // 0014 GETMET R4 R0 K11 + 0x8C100125, // 0014 GETMET R4 R0 K37 0x5C180200, // 0015 MOVE R6 R1 - 0x581C000C, // 0016 LDCONST R7 K12 - 0x58200004, // 0017 LDCONST R8 K4 - 0x58240008, // 0018 LDCONST R9 K8 + 0x581C0026, // 0016 LDCONST R7 K38 + 0x5820001F, // 0017 LDCONST R8 K31 + 0x58240022, // 0018 LDCONST R9 K34 0x50280000, // 0019 LDBOOL R10 0 0 0x7C100C00, // 001A CALL R4 6 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 - 0xB8121A00, // 001D GETNGBL R4 K13 - 0x8C10090E, // 001E GETMET R4 R4 K14 + 0xB8124E00, // 001D GETNGBL R4 K39 + 0x8C100928, // 001E GETMET R4 R4 K40 0x7C100200, // 001F CALL R4 1 - 0x8C10090F, // 0020 GETMET R4 R4 K15 - 0x88180310, // 0021 GETMBR R6 R1 K16 - 0x881C0311, // 0022 GETMBR R7 R1 K17 + 0x8C100929, // 0020 GETMET R4 R4 K41 + 0x88180301, // 0021 GETMBR R6 R1 K1 + 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 - 0x88140301, // 0024 GETMBR R5 R1 K1 - 0x8C140B12, // 0025 GETMET R5 R5 K18 + 0x88140300, // 0024 GETMBR R5 R1 K0 + 0x8C140B2A, // 0025 GETMET R5 R5 K42 0x7C140200, // 0026 CALL R5 1 - 0x88140311, // 0027 GETMBR R5 R1 K17 - 0x40140B14, // 0028 CONNECT R5 R5 K20 - 0x88180310, // 0029 GETMBR R6 R1 K16 + 0x88140302, // 0027 GETMBR R5 R1 K2 + 0x40140B03, // 0028 CONNECT R5 R5 K3 + 0x88180301, // 0029 GETMBR R6 R1 K1 0x94140C05, // 002A GETIDX R5 R6 R5 - 0x900E2605, // 002B SETMBR R3 K19 R5 - 0x88140915, // 002C GETMBR R5 R4 K21 - 0x20140B04, // 002D NE R5 R5 K4 + 0x900E5605, // 002B SETMBR R3 K43 R5 + 0x8814092C, // 002C GETMBR R5 R4 K44 + 0x20140B1F, // 002D NE R5 R5 K31 0x78160010, // 002E JMPF R5 #0040 - 0xB8160C00, // 002F GETNGBL R5 K6 - 0x58180016, // 0030 LDCONST R6 K22 - 0x581C0008, // 0031 LDCONST R7 K8 + 0xB8160A00, // 002F GETNGBL R5 K5 + 0x5818002D, // 0030 LDCONST R6 K45 + 0x581C0022, // 0031 LDCONST R7 K34 0x7C140400, // 0032 CALL R5 2 - 0xB8160C00, // 0033 GETNGBL R5 K6 - 0x58180009, // 0034 LDCONST R6 K9 - 0x581C000A, // 0035 LDCONST R7 K10 + 0xB8160A00, // 0033 GETNGBL R5 K5 + 0x58180023, // 0034 LDCONST R6 K35 + 0x581C0024, // 0035 LDCONST R7 K36 0x7C140400, // 0036 CALL R5 2 - 0x8C14010B, // 0037 GETMET R5 R0 K11 + 0x8C140125, // 0037 GETMET R5 R0 K37 0x5C1C0200, // 0038 MOVE R7 R1 - 0x5820000C, // 0039 LDCONST R8 K12 - 0x58240004, // 003A LDCONST R9 K4 - 0x58280008, // 003B LDCONST R10 K8 + 0x58200026, // 0039 LDCONST R8 K38 + 0x5824001F, // 003A LDCONST R9 K31 + 0x58280022, // 003B LDCONST R10 K34 0x502C0000, // 003C LDBOOL R11 0 0 0x7C140C00, // 003D CALL R5 6 0x50140000, // 003E LDBOOL R5 0 0 0x80040A00, // 003F RET 1 R5 - 0x88140918, // 0040 GETMBR R5 R4 K24 - 0x900E2E05, // 0041 SETMBR R3 K23 R5 - 0x8814011A, // 0042 GETMBR R5 R0 K26 - 0x88140B1B, // 0043 GETMBR R5 R5 K27 - 0x8C140B1C, // 0044 GETMET R5 R5 K28 + 0x8814092F, // 0040 GETMBR R5 R4 K47 + 0x900E5C05, // 0041 SETMBR R3 K46 R5 + 0x8814010D, // 0042 GETMBR R5 R0 K13 + 0x88140B0E, // 0043 GETMBR R5 R5 K14 + 0x8C140B31, // 0044 GETMET R5 R5 K49 0x7C140200, // 0045 CALL R5 1 - 0x900E3205, // 0046 SETMBR R3 K25 R5 - 0xB8160C00, // 0047 GETNGBL R5 K6 + 0x900E6005, // 0046 SETMBR R3 K48 R5 + 0xB8160A00, // 0047 GETNGBL R5 K5 0x60180018, // 0048 GETGBL R6 G24 - 0x581C001D, // 0049 LDCONST R7 K29 - 0x88200719, // 004A GETMBR R8 R3 K25 - 0x8824031E, // 004B GETMBR R9 R1 K30 - 0x8828031F, // 004C GETMBR R10 R1 K31 + 0x581C0032, // 0049 LDCONST R7 K50 + 0x88200730, // 004A GETMBR R8 R3 K48 + 0x88240333, // 004B GETMBR R9 R1 K51 + 0x88280334, // 004C GETMBR R10 R1 K52 0x7C180800, // 004D CALL R6 4 - 0x581C000A, // 004E LDCONST R7 K10 + 0x581C0024, // 004E LDCONST R7 K36 0x7C140400, // 004F CALL R5 2 - 0xB8161A00, // 0050 GETNGBL R5 K13 - 0x8C140B20, // 0051 GETMET R5 R5 K32 + 0xB8164E00, // 0050 GETNGBL R5 K39 + 0x8C140B35, // 0051 GETMET R5 R5 K53 0x7C140200, // 0052 CALL R5 1 - 0x88180921, // 0053 GETMBR R6 R4 K33 - 0x90164206, // 0054 SETMBR R5 K33 R6 - 0x8C180523, // 0055 GETMET R6 R2 K35 + 0x88180936, // 0053 GETMBR R6 R4 K54 + 0x90166C06, // 0054 SETMBR R5 K54 R6 + 0x8C180538, // 0055 GETMET R6 R2 K56 0x5422001F, // 0056 LDINT R8 32 0x7C180400, // 0057 CALL R6 2 - 0x90164406, // 0058 SETMBR R5 K34 R6 - 0x88180719, // 0059 GETMBR R6 R3 K25 - 0x90164806, // 005A SETMBR R5 K36 R6 - 0x8818011A, // 005B GETMBR R6 R0 K26 - 0x88180D26, // 005C GETMBR R6 R6 K38 - 0x90164A06, // 005D SETMBR R5 K37 R6 - 0x8818011A, // 005E GETMBR R6 R0 K26 - 0x88180D28, // 005F GETMBR R6 R6 K40 - 0x90164E06, // 0060 SETMBR R5 K39 R6 - 0x8C180B29, // 0061 GETMET R6 R5 K41 + 0x90166E06, // 0058 SETMBR R5 K55 R6 + 0x88180730, // 0059 GETMBR R6 R3 K48 + 0x90167206, // 005A SETMBR R5 K57 R6 + 0x8818010D, // 005B GETMBR R6 R0 K13 + 0x88180D3B, // 005C GETMBR R6 R6 K59 + 0x90167406, // 005D SETMBR R5 K58 R6 + 0x8818010D, // 005E GETMBR R6 R0 K13 + 0x88180D3D, // 005F GETMBR R6 R6 K61 + 0x90167806, // 0060 SETMBR R5 K60 R6 + 0x8C180B3E, // 0061 GETMET R6 R5 K62 0x7C180200, // 0062 CALL R6 1 - 0x900E5406, // 0063 SETMBR R3 K42 R6 - 0x8C1C032B, // 0064 GETMET R7 R1 K43 + 0x900E7E06, // 0063 SETMBR R3 K63 R6 + 0x8C1C0340, // 0064 GETMET R7 R1 K64 0x54260020, // 0065 LDINT R9 33 0x50280200, // 0066 LDBOOL R10 1 0 0x7C1C0600, // 0067 CALL R7 3 - 0x8C200F2C, // 0068 GETMET R8 R7 K44 + 0x8C200F41, // 0068 GETMET R8 R7 K65 0x5C280C00, // 0069 MOVE R10 R6 0x7C200400, // 006A CALL R8 2 - 0x8824012D, // 006B GETMBR R9 R0 K45 - 0x8C24132E, // 006C GETMET R9 R9 K46 + 0x88240142, // 006B GETMBR R9 R0 K66 + 0x8C241343, // 006C GETMET R9 R9 K67 0x5C2C0E00, // 006D MOVE R11 R7 0x7C240400, // 006E CALL R9 2 0x50240200, // 006F LDBOOL R9 1 0 @@ -438,46 +547,39 @@ be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name be_nested_proto( 12, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(build_response), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(encode_frame), - /* K4 */ be_nested_str_weak(responder), - /* K5 */ be_nested_str_weak(send_response_frame), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(send_status_report), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x8C180300, // 0000 GETMET R6 R1 K0 + 0x8C180340, // 0000 GETMET R6 R1 K64 0x5422003F, // 0001 LDINT R8 64 0x5C240A00, // 0002 MOVE R9 R5 0x7C180600, // 0003 CALL R6 3 0x601C0015, // 0004 GETGBL R7 G21 0x7C1C0000, // 0005 CALL R7 0 - 0x8C200F01, // 0006 GETMET R8 R7 K1 + 0x8C200F44, // 0006 GETMET R8 R7 K68 0x5C280400, // 0007 MOVE R10 R2 - 0x582C0002, // 0008 LDCONST R11 K2 + 0x582C0045, // 0008 LDCONST R11 K69 0x7C200600, // 0009 CALL R8 3 - 0x8C200F01, // 000A GETMET R8 R7 K1 + 0x8C200F44, // 000A GETMET R8 R7 K68 0x5C280600, // 000B MOVE R10 R3 0x542E0003, // 000C LDINT R11 4 0x7C200600, // 000D CALL R8 3 - 0x8C200F01, // 000E GETMET R8 R7 K1 + 0x8C200F44, // 000E GETMET R8 R7 K68 0x5C280800, // 000F MOVE R10 R4 0x542E0003, // 0010 LDINT R11 4 0x7C200600, // 0011 CALL R8 3 - 0x8C200D03, // 0012 GETMET R8 R6 K3 + 0x8C200D41, // 0012 GETMET R8 R6 K65 0x5C280E00, // 0013 MOVE R10 R7 0x7C200400, // 0014 CALL R8 2 - 0x88240104, // 0015 GETMBR R9 R0 K4 - 0x8C241305, // 0016 GETMET R9 R9 K5 + 0x88240142, // 0015 GETMBR R9 R0 K66 + 0x8C241343, // 0016 GETMET R9 R9 K67 0x5C2C0C00, // 0017 MOVE R11 R6 0x7C240400, // 0018 CALL R9 2 0x80000000, // 0019 RET 0 @@ -494,176 +596,124 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ be_nested_proto( 20, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[51]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K10 */ be_nested_str_weak(send_status_report), - /* K11 */ be_const_int(1), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(matter), - /* K14 */ be_nested_str_weak(Pake1), - /* K15 */ be_nested_str_weak(parse), - /* K16 */ be_nested_str_weak(raw), - /* K17 */ be_nested_str_weak(app_payload_idx), - /* K18 */ be_nested_str_weak(pA), - /* K19 */ be_nested_str_weak(SPAKE2P_Matter), - /* K20 */ be_nested_str_weak(device), - /* K21 */ be_nested_str_weak(commissioning_w0), - /* K22 */ be_nested_str_weak(commissioning_L), - /* K23 */ be_nested_str_weak(random), - /* K24 */ be_nested_str_weak(compute_pB), - /* K25 */ be_nested_str_weak(compute_ZV_verifier), - /* K26 */ be_nested_str_weak(SHA256), - /* K27 */ be_nested_str_weak(update), - /* K28 */ be_nested_str_weak(fromstring), - /* K29 */ be_nested_str_weak(Matter_Context_Prefix), - /* K30 */ be_nested_str_weak(__Msg1), - /* K31 */ be_nested_str_weak(__Msg2), - /* K32 */ be_nested_str_weak(out), - /* K33 */ be_nested_str_weak(set_context), - /* K34 */ be_nested_str_weak(compute_TT_hash), - /* K35 */ be_nested_str_weak(Pake2), - /* K36 */ be_nested_str_weak(pB), - /* K37 */ be_nested_str_weak(cB), - /* K38 */ be_nested_str_weak(tlv2raw), - /* K39 */ be_nested_str_weak(__spake_cA), - /* K40 */ be_nested_str_weak(cA), - /* K41 */ be_nested_str_weak(__spake_Ke), - /* K42 */ be_nested_str_weak(Ke), - /* K43 */ be_nested_str_weak(build_response), - /* K44 */ be_nested_str_weak(encode_frame), - /* K45 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K46 */ be_nested_str_weak(__future_local_session_id), - /* K47 */ be_nested_str_weak(_ip), - /* K48 */ be_nested_str_weak(_port), - /* K49 */ be_nested_str_weak(responder), - /* K50 */ be_nested_str_weak(send_response_frame), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_Pake1), &be_const_str_solidified, ( &(const binstruction[112]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 + 0xA40A1200, // 0000 IMPORT R2 K9 + 0x880C0300, // 0001 GETMBR R3 R1 K0 + 0x8810031D, // 0002 GETMBR R4 R1 K29 0x54160021, // 0003 LDINT R5 34 0x20100805, // 0004 NE R4 R4 R5 0x74120005, // 0005 JMPT R4 #000C - 0x88100303, // 0006 GETMBR R4 R1 K3 - 0x20100904, // 0007 NE R4 R4 K4 + 0x8810031E, // 0006 GETMBR R4 R1 K30 + 0x2010091F, // 0007 NE R4 R4 K31 0x74120002, // 0008 JMPT R4 #000C - 0x88100305, // 0009 GETMBR R4 R1 K5 - 0x20100904, // 000A NE R4 R4 K4 + 0x88100320, // 0009 GETMBR R4 R1 K32 + 0x2010091F, // 000A NE R4 R4 K31 0x78120010, // 000B JMPF R4 #001D - 0xB8120C00, // 000C GETNGBL R4 K6 - 0x58140007, // 000D LDCONST R5 K7 - 0x58180008, // 000E LDCONST R6 K8 + 0xB8120A00, // 000C GETNGBL R4 K5 + 0x58140046, // 000D LDCONST R5 K70 + 0x58180024, // 000E LDCONST R6 K36 0x7C100400, // 000F CALL R4 2 - 0xB8120C00, // 0010 GETNGBL R4 K6 - 0x58140009, // 0011 LDCONST R5 K9 - 0x58180008, // 0012 LDCONST R6 K8 + 0xB8120A00, // 0010 GETNGBL R4 K5 + 0x58140023, // 0011 LDCONST R5 K35 + 0x58180024, // 0012 LDCONST R6 K36 0x7C100400, // 0013 CALL R4 2 - 0x8C10010A, // 0014 GETMET R4 R0 K10 + 0x8C100125, // 0014 GETMET R4 R0 K37 0x5C180200, // 0015 MOVE R6 R1 - 0x581C000B, // 0016 LDCONST R7 K11 - 0x58200004, // 0017 LDCONST R8 K4 - 0x5824000C, // 0018 LDCONST R9 K12 + 0x581C0026, // 0016 LDCONST R7 K38 + 0x5820001F, // 0017 LDCONST R8 K31 + 0x58240045, // 0018 LDCONST R9 K69 0x50280000, // 0019 LDBOOL R10 0 0 0x7C100C00, // 001A CALL R4 6 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 - 0xB8121A00, // 001D GETNGBL R4 K13 - 0x8C10090E, // 001E GETMET R4 R4 K14 + 0xB8124E00, // 001D GETNGBL R4 K39 + 0x8C100947, // 001E GETMET R4 R4 K71 0x7C100200, // 001F CALL R4 1 - 0x8C10090F, // 0020 GETMET R4 R4 K15 - 0x88180310, // 0021 GETMBR R6 R1 K16 - 0x881C0311, // 0022 GETMBR R7 R1 K17 + 0x8C100929, // 0020 GETMET R4 R4 K41 + 0x88180301, // 0021 GETMBR R6 R1 K1 + 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 - 0x88140912, // 0024 GETMBR R5 R4 K18 - 0x8C180513, // 0025 GETMET R6 R2 K19 - 0x88200114, // 0026 GETMBR R8 R0 K20 - 0x88201115, // 0027 GETMBR R8 R8 K21 + 0x88140948, // 0024 GETMBR R5 R4 K72 + 0x8C180549, // 0025 GETMET R6 R2 K73 + 0x8820010D, // 0026 GETMBR R8 R0 K13 + 0x8820114A, // 0027 GETMBR R8 R8 K74 0x4C240000, // 0028 LDNIL R9 - 0x88280114, // 0029 GETMBR R10 R0 K20 - 0x88281516, // 002A GETMBR R10 R10 K22 + 0x8828010D, // 0029 GETMBR R10 R0 K13 + 0x8828154B, // 002A GETMBR R10 R10 K75 0x7C180800, // 002B CALL R6 4 - 0x8C1C0517, // 002C GETMET R7 R2 K23 + 0x8C1C0538, // 002C GETMET R7 R2 K56 0x5426001F, // 002D LDINT R9 32 0x7C1C0400, // 002E CALL R7 2 - 0x8C200D18, // 002F GETMET R8 R6 K24 + 0x8C200D4C, // 002F GETMET R8 R6 K76 0x5C280E00, // 0030 MOVE R10 R7 0x7C200400, // 0031 CALL R8 2 - 0x8C200D19, // 0032 GETMET R8 R6 K25 + 0x8C200D4D, // 0032 GETMET R8 R6 K77 0x5C280A00, // 0033 MOVE R10 R5 0x7C200400, // 0034 CALL R8 2 - 0x8C20051A, // 0035 GETMET R8 R2 K26 + 0x8C20054E, // 0035 GETMET R8 R2 K78 0x7C200200, // 0036 CALL R8 1 - 0x8C24111B, // 0037 GETMET R9 R8 K27 + 0x8C241116, // 0037 GETMET R9 R8 K22 0x602C0015, // 0038 GETGBL R11 G21 0x7C2C0000, // 0039 CALL R11 0 - 0x8C2C171C, // 003A GETMET R11 R11 K28 - 0x8834011D, // 003B GETMBR R13 R0 K29 + 0x8C2C174F, // 003A GETMET R11 R11 K79 + 0x88340150, // 003B GETMBR R13 R0 K80 0x7C2C0400, // 003C CALL R11 2 0x7C240400, // 003D CALL R9 2 - 0x8C24111B, // 003E GETMET R9 R8 K27 - 0x882C071E, // 003F GETMBR R11 R3 K30 + 0x8C241116, // 003E GETMET R9 R8 K22 + 0x882C072B, // 003F GETMBR R11 R3 K43 0x7C240400, // 0040 CALL R9 2 - 0x8C24111B, // 0041 GETMET R9 R8 K27 - 0x882C071F, // 0042 GETMBR R11 R3 K31 + 0x8C241116, // 0041 GETMET R9 R8 K22 + 0x882C073F, // 0042 GETMBR R11 R3 K63 0x7C240400, // 0043 CALL R9 2 - 0x8C241120, // 0044 GETMET R9 R8 K32 + 0x8C241117, // 0044 GETMET R9 R8 K23 0x7C240200, // 0045 CALL R9 1 - 0x901A2405, // 0046 SETMBR R6 K18 R5 - 0x8C280D21, // 0047 GETMET R10 R6 K33 + 0x901A9005, // 0046 SETMBR R6 K72 R5 + 0x8C280D51, // 0047 GETMET R10 R6 K81 0x5C301200, // 0048 MOVE R12 R9 0x7C280400, // 0049 CALL R10 2 - 0x8C280D22, // 004A GETMET R10 R6 K34 + 0x8C280D52, // 004A GETMET R10 R6 K82 0x50300200, // 004B LDBOOL R12 1 0 0x7C280400, // 004C CALL R10 2 - 0xB82A1A00, // 004D GETNGBL R10 K13 - 0x8C281523, // 004E GETMET R10 R10 K35 + 0xB82A4E00, // 004D GETNGBL R10 K39 + 0x8C281553, // 004E GETMET R10 R10 K83 0x7C280200, // 004F CALL R10 1 - 0x882C0D24, // 0050 GETMBR R11 R6 K36 - 0x902A480B, // 0051 SETMBR R10 K36 R11 - 0x882C0D25, // 0052 GETMBR R11 R6 K37 - 0x902A4A0B, // 0053 SETMBR R10 K37 R11 - 0x8C2C1526, // 0054 GETMET R11 R10 K38 + 0x882C0D54, // 0050 GETMBR R11 R6 K84 + 0x902AA80B, // 0051 SETMBR R10 K84 R11 + 0x882C0D55, // 0052 GETMBR R11 R6 K85 + 0x902AAA0B, // 0053 SETMBR R10 K85 R11 + 0x8C2C153E, // 0054 GETMET R11 R10 K62 0x7C2C0200, // 0055 CALL R11 1 - 0x88300D28, // 0056 GETMBR R12 R6 K40 - 0x900E4E0C, // 0057 SETMBR R3 K39 R12 - 0x88300D2A, // 0058 GETMBR R12 R6 K42 - 0x900E520C, // 0059 SETMBR R3 K41 R12 - 0x8C30032B, // 005A GETMET R12 R1 K43 + 0x88300D57, // 0056 GETMBR R12 R6 K87 + 0x900EAC0C, // 0057 SETMBR R3 K86 R12 + 0x88300D59, // 0058 GETMBR R12 R6 K89 + 0x900EB00C, // 0059 SETMBR R3 K88 R12 + 0x8C300340, // 005A GETMET R12 R1 K64 0x543A0022, // 005B LDINT R14 35 0x503C0200, // 005C LDBOOL R15 1 0 0x7C300600, // 005D CALL R12 3 - 0x8C34192C, // 005E GETMET R13 R12 K44 + 0x8C341941, // 005E GETMET R13 R12 K65 0x5C3C1600, // 005F MOVE R15 R11 0x7C340400, // 0060 CALL R13 2 - 0xB83A0C00, // 0061 GETNGBL R14 K6 + 0xB83A0A00, // 0061 GETNGBL R14 K5 0x603C0018, // 0062 GETGBL R15 G24 - 0x5840002D, // 0063 LDCONST R16 K45 - 0x8844072E, // 0064 GETMBR R17 R3 K46 - 0x8848072F, // 0065 GETMBR R18 R3 K47 - 0x884C0730, // 0066 GETMBR R19 R3 K48 + 0x5840005A, // 0063 LDCONST R16 K90 + 0x88440730, // 0064 GETMBR R17 R3 K48 + 0x8848075B, // 0065 GETMBR R18 R3 K91 + 0x884C075C, // 0066 GETMBR R19 R3 K92 0x7C3C0800, // 0067 CALL R15 4 - 0x5840000C, // 0068 LDCONST R16 K12 + 0x58400045, // 0068 LDCONST R16 K69 0x7C380400, // 0069 CALL R14 2 - 0x88380131, // 006A GETMBR R14 R0 K49 - 0x8C381D32, // 006B GETMET R14 R14 K50 + 0x88380142, // 006A GETMBR R14 R0 K66 + 0x8C381D43, // 006B GETMET R14 R14 K67 0x5C401800, // 006C MOVE R16 R12 0x7C380400, // 006D CALL R14 2 0x50380200, // 006E LDBOOL R14 1 0 @@ -681,24 +731,20 @@ be_local_closure(class_Matter_Commisioning_Context_init, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(responder), - /* K2 */ be_nested_str_weak(device), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x880C0302, // 0002 GETMBR R3 R1 K2 - 0x90020403, // 0003 SETMBR R0 K2 R3 + 0xA40A1200, // 0000 IMPORT R2 K9 + 0x90028401, // 0001 SETMBR R0 K66 R1 + 0x880C030D, // 0002 GETMBR R3 R1 K13 + 0x90021A03, // 0003 SETMBR R0 K13 R3 0x80000000, // 0004 RET 0 }) ) @@ -713,123 +759,91 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ be_nested_proto( 19, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K10 */ be_nested_str_weak(send_status_report), - /* K11 */ be_const_int(1), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(matter), - /* K14 */ be_nested_str_weak(Pake3), - /* K15 */ be_nested_str_weak(parse), - /* K16 */ be_nested_str_weak(raw), - /* K17 */ be_nested_str_weak(app_payload_idx), - /* K18 */ be_nested_str_weak(cA), - /* K19 */ be_nested_str_weak(__spake_cA), - /* K20 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), - /* K21 */ be_nested_str_weak(tasmota), - /* K22 */ be_nested_str_weak(rtc_utc), - /* K23 */ be_nested_str_weak(HKDF_SHA256), - /* K24 */ be_nested_str_weak(derive), - /* K25 */ be_nested_str_weak(__spake_Ke), - /* K26 */ be_nested_str_weak(fromstring), - /* K27 */ be_nested_str_weak(SEKeys_Info), - /* K28 */ be_nested_str_weak(add_session), - /* K29 */ be_nested_str_weak(__future_local_session_id), - /* K30 */ be_nested_str_weak(__future_initiator_session_id), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_Pake3), &be_const_str_solidified, ( &(const binstruction[101]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 + 0xA40A1200, // 0000 IMPORT R2 K9 + 0x880C0300, // 0001 GETMBR R3 R1 K0 + 0x8810031D, // 0002 GETMBR R4 R1 K29 0x54160023, // 0003 LDINT R5 36 0x20100805, // 0004 NE R4 R4 R5 0x74120005, // 0005 JMPT R4 #000C - 0x88100303, // 0006 GETMBR R4 R1 K3 - 0x20100904, // 0007 NE R4 R4 K4 + 0x8810031E, // 0006 GETMBR R4 R1 K30 + 0x2010091F, // 0007 NE R4 R4 K31 0x74120002, // 0008 JMPT R4 #000C - 0x88100305, // 0009 GETMBR R4 R1 K5 - 0x20100904, // 000A NE R4 R4 K4 + 0x88100320, // 0009 GETMBR R4 R1 K32 + 0x2010091F, // 000A NE R4 R4 K31 0x78120010, // 000B JMPF R4 #001D - 0xB8120C00, // 000C GETNGBL R4 K6 - 0x58140007, // 000D LDCONST R5 K7 - 0x58180008, // 000E LDCONST R6 K8 + 0xB8120A00, // 000C GETNGBL R4 K5 + 0x5814005D, // 000D LDCONST R5 K93 + 0x58180024, // 000E LDCONST R6 K36 0x7C100400, // 000F CALL R4 2 - 0xB8120C00, // 0010 GETNGBL R4 K6 - 0x58140009, // 0011 LDCONST R5 K9 - 0x58180008, // 0012 LDCONST R6 K8 + 0xB8120A00, // 0010 GETNGBL R4 K5 + 0x58140023, // 0011 LDCONST R5 K35 + 0x58180024, // 0012 LDCONST R6 K36 0x7C100400, // 0013 CALL R4 2 - 0x8C10010A, // 0014 GETMET R4 R0 K10 + 0x8C100125, // 0014 GETMET R4 R0 K37 0x5C180200, // 0015 MOVE R6 R1 - 0x581C000B, // 0016 LDCONST R7 K11 - 0x58200004, // 0017 LDCONST R8 K4 - 0x5824000C, // 0018 LDCONST R9 K12 + 0x581C0026, // 0016 LDCONST R7 K38 + 0x5820001F, // 0017 LDCONST R8 K31 + 0x58240045, // 0018 LDCONST R9 K69 0x50280000, // 0019 LDBOOL R10 0 0 0x7C100C00, // 001A CALL R4 6 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 - 0xB8121A00, // 001D GETNGBL R4 K13 - 0x8C10090E, // 001E GETMET R4 R4 K14 + 0xB8124E00, // 001D GETNGBL R4 K39 + 0x8C10095E, // 001E GETMET R4 R4 K94 0x7C100200, // 001F CALL R4 1 - 0x8C10090F, // 0020 GETMET R4 R4 K15 - 0x88180310, // 0021 GETMBR R6 R1 K16 - 0x881C0311, // 0022 GETMBR R7 R1 K17 + 0x8C100929, // 0020 GETMET R4 R4 K41 + 0x88180301, // 0021 GETMBR R6 R1 K1 + 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 - 0x88140912, // 0024 GETMBR R5 R4 K18 - 0x88180713, // 0025 GETMBR R6 R3 K19 + 0x88140957, // 0024 GETMBR R5 R4 K87 + 0x88180756, // 0025 GETMBR R6 R3 K86 0x20180A06, // 0026 NE R6 R5 R6 0x781A0010, // 0027 JMPF R6 #0039 - 0xB81A0C00, // 0028 GETNGBL R6 K6 - 0x581C0014, // 0029 LDCONST R7 K20 - 0x58200008, // 002A LDCONST R8 K8 + 0xB81A0A00, // 0028 GETNGBL R6 K5 + 0x581C005F, // 0029 LDCONST R7 K95 + 0x58200024, // 002A LDCONST R8 K36 0x7C180400, // 002B CALL R6 2 - 0xB81A0C00, // 002C GETNGBL R6 K6 - 0x581C0009, // 002D LDCONST R7 K9 - 0x58200008, // 002E LDCONST R8 K8 + 0xB81A0A00, // 002C GETNGBL R6 K5 + 0x581C0023, // 002D LDCONST R7 K35 + 0x58200024, // 002E LDCONST R8 K36 0x7C180400, // 002F CALL R6 2 - 0x8C18010A, // 0030 GETMET R6 R0 K10 + 0x8C180125, // 0030 GETMET R6 R0 K37 0x5C200200, // 0031 MOVE R8 R1 - 0x5824000B, // 0032 LDCONST R9 K11 - 0x58280004, // 0033 LDCONST R10 K4 - 0x582C000C, // 0034 LDCONST R11 K12 + 0x58240026, // 0032 LDCONST R9 K38 + 0x5828001F, // 0033 LDCONST R10 K31 + 0x582C0045, // 0034 LDCONST R11 K69 0x50300000, // 0035 LDBOOL R12 0 0 0x7C180C00, // 0036 CALL R6 6 0x50180000, // 0037 LDBOOL R6 0 0 0x80040C00, // 0038 RET 1 R6 - 0xB81A2A00, // 0039 GETNGBL R6 K21 - 0x8C180D16, // 003A GETMET R6 R6 K22 + 0xB81A1400, // 0039 GETNGBL R6 K10 + 0x8C180D60, // 003A GETMET R6 R6 K96 0x7C180200, // 003B CALL R6 1 - 0x8C1C0517, // 003C GETMET R7 R2 K23 + 0x8C1C0561, // 003C GETMET R7 R2 K97 0x7C1C0200, // 003D CALL R7 1 - 0x8C1C0F18, // 003E GETMET R7 R7 K24 - 0x88240719, // 003F GETMBR R9 R3 K25 + 0x8C1C0F62, // 003E GETMET R7 R7 K98 + 0x88240758, // 003F GETMBR R9 R3 K88 0x60280015, // 0040 GETGBL R10 G21 0x7C280000, // 0041 CALL R10 0 0x602C0015, // 0042 GETGBL R11 G21 0x7C2C0000, // 0043 CALL R11 0 - 0x8C2C171A, // 0044 GETMET R11 R11 K26 - 0x8834011B, // 0045 GETMBR R13 R0 K27 + 0x8C2C174F, // 0044 GETMET R11 R11 K79 + 0x88340163, // 0045 GETMBR R13 R0 K99 0x7C2C0400, // 0046 CALL R11 2 0x5432002F, // 0047 LDINT R12 48 0x7C1C0A00, // 0048 CALL R7 5 0x5422000E, // 0049 LDINT R8 15 - 0x40220808, // 004A CONNECT R8 K4 R8 + 0x40223E08, // 004A CONNECT R8 K31 R8 0x94200E08, // 004B GETIDX R8 R7 R8 0x5426000F, // 004C LDINT R9 16 0x542A001E, // 004D LDINT R10 31 @@ -839,16 +853,16 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x542E002E, // 0051 LDINT R11 47 0x4028140B, // 0052 CONNECT R10 R10 R11 0x94280E0A, // 0053 GETIDX R10 R7 R10 - 0x8C2C010A, // 0054 GETMET R11 R0 K10 + 0x8C2C0125, // 0054 GETMET R11 R0 K37 0x5C340200, // 0055 MOVE R13 R1 - 0x58380004, // 0056 LDCONST R14 K4 - 0x583C0004, // 0057 LDCONST R15 K4 - 0x58400004, // 0058 LDCONST R16 K4 + 0x5838001F, // 0056 LDCONST R14 K31 + 0x583C001F, // 0057 LDCONST R15 K31 + 0x5840001F, // 0058 LDCONST R16 K31 0x50440000, // 0059 LDBOOL R17 0 0 0x7C2C0C00, // 005A CALL R11 6 - 0x8C2C011C, // 005B GETMET R11 R0 K28 - 0x8834071D, // 005C GETMBR R13 R3 K29 - 0x8838071E, // 005D GETMBR R14 R3 K30 + 0x8C2C0164, // 005B GETMET R11 R0 K100 + 0x88340730, // 005C GETMBR R13 R3 K48 + 0x8838072E, // 005D GETMBR R14 R3 K46 0x5C3C1000, // 005E MOVE R15 R8 0x5C401200, // 005F MOVE R16 R9 0x5C441400, // 0060 MOVE R17 R10 @@ -869,154 +883,87 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ be_nested_proto( 36, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[66]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(opcode), - /* K2 */ be_nested_str_weak(local_session_id), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(protocol_id), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str_weak(send_status_report), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(session), - /* K12 */ be_nested_str_weak(matter), - /* K13 */ be_nested_str_weak(Sigma3), - /* K14 */ be_nested_str_weak(parse), - /* K15 */ be_nested_str_weak(raw), - /* K16 */ be_nested_str_weak(app_payload_idx), - /* K17 */ be_nested_str_weak(SHA256), - /* K18 */ be_nested_str_weak(update), - /* K19 */ be_nested_str_weak(__Msg1), - /* K20 */ be_nested_str_weak(__Msg2), - /* K21 */ be_nested_str_weak(out), - /* K22 */ be_nested_str_weak(fromstring), - /* K23 */ be_nested_str_weak(S3K_Info), - /* K24 */ be_nested_str_weak(HKDF_SHA256), - /* K25 */ be_nested_str_weak(derive), - /* K26 */ be_nested_str_weak(shared_secret), - /* K27 */ be_nested_str_weak(get_ipk_group_key), - /* K28 */ be_nested_str_weak(TBEData3Encrypted), - /* K29 */ be_const_int(2147483647), - /* K30 */ be_nested_str_weak(AES_CCM), - /* K31 */ be_nested_str_weak(TBEData3_Nonce), - /* K32 */ be_nested_str_weak(decrypt), - /* K33 */ be_nested_str_weak(tag), - /* K34 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), - /* K35 */ be_nested_str_weak(TLV), - /* K36 */ be_nested_str_weak(findsubval), - /* K37 */ be_nested_str_weak(findsub), - /* K38 */ be_nested_str_weak(int), - /* K39 */ be_nested_str_weak(peer_node_id), - /* K40 */ be_nested_str_weak(int64), - /* K41 */ be_nested_str_weak(fromu32), - /* K42 */ be_nested_str_weak(tobytes), - /* K43 */ be_nested_str_weak(Matter_TLV_struct), - /* K44 */ be_nested_str_weak(add_TLV), - /* K45 */ be_nested_str_weak(B1), - /* K46 */ be_nested_str_weak(__initiator_pub), - /* K47 */ be_nested_str_weak(__responder_pub), - /* K48 */ be_nested_str_weak(tlv2raw), - /* K49 */ be_nested_str_weak(EC_P256), - /* K50 */ be_nested_str_weak(ecdsa_verify_sha256), - /* K51 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), - /* K52 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), - /* K53 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), - /* K54 */ be_nested_str_weak(Msg3), - /* K55 */ be_nested_str_weak(SEKeys_Info), - /* K56 */ be_nested_str_weak(tasmota), - /* K57 */ be_nested_str_weak(rtc_utc), - /* K58 */ be_nested_str_weak(close), - /* K59 */ be_nested_str_weak(set_keys), - /* K60 */ be_nested_str_weak(_breadcrumb), - /* K61 */ be_nested_str_weak(counter_snd_next), - /* K62 */ be_nested_str_weak(set_persist), - /* K63 */ be_nested_str_weak(set_no_expiration), - /* K64 */ be_nested_str_weak(persist_to_fabric), - /* K65 */ be_nested_str_weak(save), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_Sigma3), &be_const_str_solidified, ( &(const binstruction[280]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0xA40A1200, // 0000 IMPORT R2 K9 + 0x880C031D, // 0001 GETMBR R3 R1 K29 0x54120031, // 0002 LDINT R4 50 0x200C0604, // 0003 NE R3 R3 R4 0x740E0005, // 0004 JMPT R3 #000B - 0x880C0302, // 0005 GETMBR R3 R1 K2 - 0x200C0703, // 0006 NE R3 R3 K3 + 0x880C031E, // 0005 GETMBR R3 R1 K30 + 0x200C071F, // 0006 NE R3 R3 K31 0x740E0002, // 0007 JMPT R3 #000B - 0x880C0304, // 0008 GETMBR R3 R1 K4 - 0x200C0703, // 0009 NE R3 R3 K3 + 0x880C0320, // 0008 GETMBR R3 R1 K32 + 0x200C071F, // 0009 NE R3 R3 K31 0x780E000C, // 000A JMPF R3 #0018 0xB80E0A00, // 000B GETNGBL R3 K5 - 0x58100006, // 000C LDCONST R4 K6 - 0x58140007, // 000D LDCONST R5 K7 + 0x58100023, // 000C LDCONST R4 K35 + 0x58140065, // 000D LDCONST R5 K101 0x7C0C0400, // 000E CALL R3 2 - 0x8C0C0108, // 000F GETMET R3 R0 K8 + 0x8C0C0125, // 000F GETMET R3 R0 K37 0x5C140200, // 0010 MOVE R5 R1 - 0x58180009, // 0011 LDCONST R6 K9 - 0x581C0003, // 0012 LDCONST R7 K3 - 0x5820000A, // 0013 LDCONST R8 K10 + 0x58180066, // 0011 LDCONST R6 K102 + 0x581C001F, // 0012 LDCONST R7 K31 + 0x58200067, // 0013 LDCONST R8 K103 0x50240000, // 0014 LDBOOL R9 0 0 0x7C0C0C00, // 0015 CALL R3 6 0x500C0000, // 0016 LDBOOL R3 0 0 0x80040600, // 0017 RET 1 R3 - 0x880C030B, // 0018 GETMBR R3 R1 K11 - 0xB8121800, // 0019 GETNGBL R4 K12 - 0x8C10090D, // 001A GETMET R4 R4 K13 + 0x880C0300, // 0018 GETMBR R3 R1 K0 + 0xB8124E00, // 0019 GETNGBL R4 K39 + 0x8C100968, // 001A GETMET R4 R4 K104 0x7C100200, // 001B CALL R4 1 - 0x8C10090E, // 001C GETMET R4 R4 K14 - 0x8818030F, // 001D GETMBR R6 R1 K15 - 0x881C0310, // 001E GETMBR R7 R1 K16 + 0x8C100929, // 001C GETMET R4 R4 K41 + 0x88180301, // 001D GETMBR R6 R1 K1 + 0x881C0302, // 001E GETMBR R7 R1 K2 0x7C100600, // 001F CALL R4 3 - 0x8C140511, // 0020 GETMET R5 R2 K17 + 0x8C14054E, // 0020 GETMET R5 R2 K78 0x7C140200, // 0021 CALL R5 1 - 0x8C140B12, // 0022 GETMET R5 R5 K18 - 0x881C0713, // 0023 GETMBR R7 R3 K19 + 0x8C140B16, // 0022 GETMET R5 R5 K22 + 0x881C072B, // 0023 GETMBR R7 R3 K43 0x7C140400, // 0024 CALL R5 2 - 0x8C140B12, // 0025 GETMET R5 R5 K18 - 0x881C0714, // 0026 GETMBR R7 R3 K20 + 0x8C140B16, // 0025 GETMET R5 R5 K22 + 0x881C073F, // 0026 GETMBR R7 R3 K63 0x7C140400, // 0027 CALL R5 2 - 0x8C140B15, // 0028 GETMET R5 R5 K21 + 0x8C140B17, // 0028 GETMET R5 R5 K23 0x7C140200, // 0029 CALL R5 1 0x60180015, // 002A GETGBL R6 G21 0x7C180000, // 002B CALL R6 0 - 0x8C180D16, // 002C GETMET R6 R6 K22 - 0x88200117, // 002D GETMBR R8 R0 K23 + 0x8C180D4F, // 002C GETMET R6 R6 K79 + 0x88200169, // 002D GETMBR R8 R0 K105 0x7C180400, // 002E CALL R6 2 - 0x8C1C0518, // 002F GETMET R7 R2 K24 + 0x8C1C0561, // 002F GETMET R7 R2 K97 0x7C1C0200, // 0030 CALL R7 1 - 0x8C1C0F19, // 0031 GETMET R7 R7 K25 - 0x8824071A, // 0032 GETMBR R9 R3 K26 - 0x8C28071B, // 0033 GETMET R10 R3 K27 + 0x8C1C0F62, // 0031 GETMET R7 R7 K98 + 0x8824076A, // 0032 GETMBR R9 R3 K106 + 0x8C280714, // 0033 GETMET R10 R3 K20 0x7C280200, // 0034 CALL R10 1 0x00281405, // 0035 ADD R10 R10 R5 0x5C2C0C00, // 0036 MOVE R11 R6 0x5432000F, // 0037 LDINT R12 16 0x7C1C0A00, // 0038 CALL R7 5 0x5421FFEE, // 0039 LDINT R8 -17 - 0x40220608, // 003A CONNECT R8 K3 R8 - 0x8824091C, // 003B GETMBR R9 R4 K28 + 0x40223E08, // 003A CONNECT R8 K31 R8 + 0x8824096B, // 003B GETMBR R9 R4 K107 0x94201208, // 003C GETIDX R8 R9 R8 0x5429FFEF, // 003D LDINT R10 -16 - 0x4028151D, // 003E CONNECT R10 R10 K29 - 0x882C091C, // 003F GETMBR R11 R4 K28 + 0x4028156C, // 003E CONNECT R10 R10 K108 + 0x882C096B, // 003F GETMBR R11 R4 K107 0x9424160A, // 0040 GETIDX R9 R11 R10 - 0x8C30051E, // 0041 GETMET R12 R2 K30 + 0x8C30056D, // 0041 GETMET R12 R2 K109 0x5C380E00, // 0042 MOVE R14 R7 0x603C0015, // 0043 GETGBL R15 G21 0x7C3C0000, // 0044 CALL R15 0 - 0x8C3C1F16, // 0045 GETMET R15 R15 K22 - 0x8844011F, // 0046 GETMBR R17 R0 K31 + 0x8C3C1F4F, // 0045 GETMET R15 R15 K79 + 0x8844016E, // 0046 GETMBR R17 R0 K110 0x7C3C0400, // 0047 CALL R15 2 0x60400015, // 0048 GETGBL R16 G21 0x7C400000, // 0049 CALL R16 0 @@ -1026,112 +973,112 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x544A000F, // 004D LDINT R18 16 0x7C300C00, // 004E CALL R12 6 0x5C281800, // 004F MOVE R10 R12 - 0x8C301520, // 0050 GETMET R12 R10 K32 + 0x8C30156F, // 0050 GETMET R12 R10 K111 0x5C381000, // 0051 MOVE R14 R8 0x7C300400, // 0052 CALL R12 2 0x5C2C1800, // 0053 MOVE R11 R12 - 0x8C301521, // 0054 GETMET R12 R10 K33 + 0x8C301570, // 0054 GETMET R12 R10 K112 0x7C300200, // 0055 CALL R12 1 0x20341809, // 0056 NE R13 R12 R9 0x78360010, // 0057 JMPF R13 #0069 0xB8360A00, // 0058 GETNGBL R13 K5 - 0x58380022, // 0059 LDCONST R14 K34 - 0x583C0007, // 005A LDCONST R15 K7 + 0x58380071, // 0059 LDCONST R14 K113 + 0x583C0065, // 005A LDCONST R15 K101 0x7C340400, // 005B CALL R13 2 0xB8360A00, // 005C GETNGBL R13 K5 - 0x58380006, // 005D LDCONST R14 K6 - 0x583C0007, // 005E LDCONST R15 K7 + 0x58380023, // 005D LDCONST R14 K35 + 0x583C0065, // 005E LDCONST R15 K101 0x7C340400, // 005F CALL R13 2 - 0x8C340108, // 0060 GETMET R13 R0 K8 + 0x8C340125, // 0060 GETMET R13 R0 K37 0x5C3C0200, // 0061 MOVE R15 R1 - 0x58400009, // 0062 LDCONST R16 K9 - 0x58440003, // 0063 LDCONST R17 K3 - 0x5848000A, // 0064 LDCONST R18 K10 + 0x58400066, // 0062 LDCONST R16 K102 + 0x5844001F, // 0063 LDCONST R17 K31 + 0x58480067, // 0064 LDCONST R18 K103 0x504C0000, // 0065 LDBOOL R19 0 0 0x7C340C00, // 0066 CALL R13 6 0x50340000, // 0067 LDBOOL R13 0 0 0x80041A00, // 0068 RET 1 R13 - 0xB8361800, // 0069 GETNGBL R13 K12 - 0x88341B23, // 006A GETMBR R13 R13 K35 - 0x8C341B0E, // 006B GETMET R13 R13 K14 + 0xB8364E00, // 0069 GETNGBL R13 K39 + 0x88341B72, // 006A GETMBR R13 R13 K114 + 0x8C341B29, // 006B GETMET R13 R13 K41 0x5C3C1600, // 006C MOVE R15 R11 0x7C340400, // 006D CALL R13 2 - 0x8C381B24, // 006E GETMET R14 R13 K36 - 0x58400009, // 006F LDCONST R16 K9 + 0x8C381B73, // 006E GETMET R14 R13 K115 + 0x58400066, // 006F LDCONST R16 K102 0x7C380400, // 0070 CALL R14 2 - 0x8C3C1B24, // 0071 GETMET R15 R13 K36 - 0x5844000A, // 0072 LDCONST R17 K10 + 0x8C3C1B73, // 0071 GETMET R15 R13 K115 + 0x58440067, // 0072 LDCONST R17 K103 0x7C3C0400, // 0073 CALL R15 2 - 0x8C401B24, // 0074 GETMET R16 R13 K36 - 0x58480007, // 0075 LDCONST R18 K7 + 0x8C401B73, // 0074 GETMET R16 R13 K115 + 0x58480065, // 0075 LDCONST R18 K101 0x7C400400, // 0076 CALL R16 2 - 0xB8461800, // 0077 GETNGBL R17 K12 - 0x88442323, // 0078 GETMBR R17 R17 K35 - 0x8C44230E, // 0079 GETMET R17 R17 K14 + 0xB8464E00, // 0077 GETNGBL R17 K39 + 0x88442372, // 0078 GETMBR R17 R17 K114 + 0x8C442329, // 0079 GETMET R17 R17 K41 0x5C4C1C00, // 007A MOVE R19 R14 0x7C440400, // 007B CALL R17 2 - 0x8C482324, // 007C GETMET R18 R17 K36 + 0x8C482373, // 007C GETMET R18 R17 K115 0x54520008, // 007D LDINT R20 9 0x7C480400, // 007E CALL R18 2 - 0x8C4C2325, // 007F GETMET R19 R17 K37 + 0x8C4C2374, // 007F GETMET R19 R17 K116 0x54560005, // 0080 LDINT R21 6 0x7C4C0400, // 0081 CALL R19 2 - 0x8C502724, // 0082 GETMET R20 R19 K36 + 0x8C502773, // 0082 GETMET R20 R19 K115 0x545A0010, // 0083 LDINT R22 17 0x7C500400, // 0084 CALL R20 2 0x60540004, // 0085 GETGBL R21 G4 0x5C582800, // 0086 MOVE R22 R20 0x7C540200, // 0087 CALL R21 1 - 0x1C542B26, // 0088 EQ R21 R21 K38 + 0x1C542B75, // 0088 EQ R21 R21 K117 0x78560007, // 0089 JMPF R21 #0092 - 0xB8565000, // 008A GETNGBL R21 K40 - 0x8C542B29, // 008B GETMET R21 R21 K41 + 0xB856EE00, // 008A GETNGBL R21 K119 + 0x8C542B78, // 008B GETMET R21 R21 K120 0x5C5C2800, // 008C MOVE R23 R20 0x7C540400, // 008D CALL R21 2 - 0x8C542B2A, // 008E GETMET R21 R21 K42 + 0x8C542B79, // 008E GETMET R21 R21 K121 0x7C540200, // 008F CALL R21 1 - 0x900E4E15, // 0090 SETMBR R3 K39 R21 + 0x900EEC15, // 0090 SETMBR R3 K118 R21 0x70020002, // 0091 JMP #0095 - 0x8C54292A, // 0092 GETMET R21 R20 K42 + 0x8C542979, // 0092 GETMET R21 R20 K121 0x7C540200, // 0093 CALL R21 1 - 0x900E4E15, // 0094 SETMBR R3 K39 R21 - 0xB8561800, // 0095 GETNGBL R21 K12 - 0x88542B23, // 0096 GETMBR R21 R21 K35 - 0x8C542B2B, // 0097 GETMET R21 R21 K43 + 0x900EEC15, // 0094 SETMBR R3 K118 R21 + 0xB8564E00, // 0095 GETNGBL R21 K39 + 0x88542B72, // 0096 GETMBR R21 R21 K114 + 0x8C542B7A, // 0097 GETMET R21 R21 K122 0x7C540200, // 0098 CALL R21 1 - 0x8C582B2C, // 0099 GETMET R22 R21 K44 - 0x58600009, // 009A LDCONST R24 K9 - 0xB8661800, // 009B GETNGBL R25 K12 - 0x88643323, // 009C GETMBR R25 R25 K35 - 0x8864332D, // 009D GETMBR R25 R25 K45 + 0x8C582B7B, // 0099 GETMET R22 R21 K123 + 0x58600066, // 009A LDCONST R24 K102 + 0xB8664E00, // 009B GETNGBL R25 K39 + 0x88643372, // 009C GETMBR R25 R25 K114 + 0x8864337C, // 009D GETMBR R25 R25 K124 0x5C681C00, // 009E MOVE R26 R14 0x7C580800, // 009F CALL R22 4 - 0x8C582B2C, // 00A0 GETMET R22 R21 K44 - 0x5860000A, // 00A1 LDCONST R24 K10 - 0xB8661800, // 00A2 GETNGBL R25 K12 - 0x88643323, // 00A3 GETMBR R25 R25 K35 - 0x8864332D, // 00A4 GETMBR R25 R25 K45 + 0x8C582B7B, // 00A0 GETMET R22 R21 K123 + 0x58600067, // 00A1 LDCONST R24 K103 + 0xB8664E00, // 00A2 GETNGBL R25 K39 + 0x88643372, // 00A3 GETMBR R25 R25 K114 + 0x8864337C, // 00A4 GETMBR R25 R25 K124 0x5C681E00, // 00A5 MOVE R26 R15 0x7C580800, // 00A6 CALL R22 4 - 0x8C582B2C, // 00A7 GETMET R22 R21 K44 - 0x58600007, // 00A8 LDCONST R24 K7 - 0xB8661800, // 00A9 GETNGBL R25 K12 - 0x88643323, // 00AA GETMBR R25 R25 K35 - 0x8864332D, // 00AB GETMBR R25 R25 K45 - 0x8868072E, // 00AC GETMBR R26 R3 K46 + 0x8C582B7B, // 00A7 GETMET R22 R21 K123 + 0x58600065, // 00A8 LDCONST R24 K101 + 0xB8664E00, // 00A9 GETNGBL R25 K39 + 0x88643372, // 00AA GETMBR R25 R25 K114 + 0x8864337C, // 00AB GETMBR R25 R25 K124 + 0x8868077D, // 00AC GETMBR R26 R3 K125 0x7C580800, // 00AD CALL R22 4 - 0x8C582B2C, // 00AE GETMET R22 R21 K44 + 0x8C582B7B, // 00AE GETMET R22 R21 K123 0x54620003, // 00AF LDINT R24 4 - 0xB8661800, // 00B0 GETNGBL R25 K12 - 0x88643323, // 00B1 GETMBR R25 R25 K35 - 0x8864332D, // 00B2 GETMBR R25 R25 K45 - 0x8868072F, // 00B3 GETMBR R26 R3 K47 + 0xB8664E00, // 00B0 GETNGBL R25 K39 + 0x88643372, // 00B1 GETMBR R25 R25 K114 + 0x8864337C, // 00B2 GETMBR R25 R25 K124 + 0x8868077E, // 00B3 GETMBR R26 R3 K126 0x7C580800, // 00B4 CALL R22 4 - 0x8C582B30, // 00B5 GETMET R22 R21 K48 + 0x8C582B3E, // 00B5 GETMET R22 R21 K62 0x7C580200, // 00B6 CALL R22 1 - 0x8C5C0531, // 00B7 GETMET R23 R2 K49 + 0x8C5C057F, // 00B7 GETMET R23 R2 K127 0x7C5C0200, // 00B8 CALL R23 1 - 0x8C5C2F32, // 00B9 GETMET R23 R23 K50 + 0x8C5C2F80, // 00B9 GETMET R23 R23 K128 0x5C642400, // 00BA MOVE R25 R18 0x5C682C00, // 00BB MOVE R26 R22 0x5C6C2000, // 00BC MOVE R27 R16 @@ -1139,52 +1086,52 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x5C602E00, // 00BE MOVE R24 R23 0x74620008, // 00BF JMPT R24 #00C9 0xB8620A00, // 00C0 GETNGBL R24 K5 - 0x58640033, // 00C1 LDCONST R25 K51 - 0x5868000A, // 00C2 LDCONST R26 K10 + 0x58640081, // 00C1 LDCONST R25 K129 + 0x58680067, // 00C2 LDCONST R26 K103 0x7C600400, // 00C3 CALL R24 2 0xB8620A00, // 00C4 GETNGBL R24 K5 - 0x58640034, // 00C5 LDCONST R25 K52 - 0x5868000A, // 00C6 LDCONST R26 K10 + 0x58640082, // 00C5 LDCONST R25 K130 + 0x58680067, // 00C6 LDCONST R26 K103 0x7C600400, // 00C7 CALL R24 2 0x70020003, // 00C8 JMP #00CD 0xB8620A00, // 00C9 GETNGBL R24 K5 - 0x58640035, // 00CA LDCONST R25 K53 - 0x58680007, // 00CB LDCONST R26 K7 + 0x58640083, // 00CA LDCONST R25 K131 + 0x58680065, // 00CB LDCONST R26 K101 0x7C600400, // 00CC CALL R24 2 - 0x8C600511, // 00CD GETMET R24 R2 K17 + 0x8C60054E, // 00CD GETMET R24 R2 K78 0x7C600200, // 00CE CALL R24 1 - 0x8C603112, // 00CF GETMET R24 R24 K18 - 0x88680713, // 00D0 GETMBR R26 R3 K19 + 0x8C603116, // 00CF GETMET R24 R24 K22 + 0x8868072B, // 00D0 GETMBR R26 R3 K43 0x7C600400, // 00D1 CALL R24 2 - 0x8C603112, // 00D2 GETMET R24 R24 K18 - 0x88680714, // 00D3 GETMBR R26 R3 K20 + 0x8C603116, // 00D2 GETMET R24 R24 K22 + 0x8868073F, // 00D3 GETMBR R26 R3 K63 0x7C600400, // 00D4 CALL R24 2 - 0x8C603112, // 00D5 GETMET R24 R24 K18 - 0x88680936, // 00D6 GETMBR R26 R4 K54 + 0x8C603116, // 00D5 GETMET R24 R24 K22 + 0x88680984, // 00D6 GETMBR R26 R4 K132 0x7C600400, // 00D7 CALL R24 2 - 0x8C603115, // 00D8 GETMET R24 R24 K21 + 0x8C603117, // 00D8 GETMET R24 R24 K23 0x7C600200, // 00D9 CALL R24 1 0x5C143000, // 00DA MOVE R5 R24 0x4C600000, // 00DB LDNIL R24 - 0x900E2618, // 00DC SETMBR R3 K19 R24 + 0x900E5618, // 00DC SETMBR R3 K43 R24 0x4C600000, // 00DD LDNIL R24 - 0x900E2818, // 00DE SETMBR R3 K20 R24 - 0x8C600518, // 00DF GETMET R24 R2 K24 + 0x900E7E18, // 00DE SETMBR R3 K63 R24 + 0x8C600561, // 00DF GETMET R24 R2 K97 0x7C600200, // 00E0 CALL R24 1 - 0x8C603119, // 00E1 GETMET R24 R24 K25 - 0x8868071A, // 00E2 GETMBR R26 R3 K26 - 0x8C6C071B, // 00E3 GETMET R27 R3 K27 + 0x8C603162, // 00E1 GETMET R24 R24 K98 + 0x8868076A, // 00E2 GETMBR R26 R3 K106 + 0x8C6C0714, // 00E3 GETMET R27 R3 K20 0x7C6C0200, // 00E4 CALL R27 1 0x006C3605, // 00E5 ADD R27 R27 R5 0x60700015, // 00E6 GETGBL R28 G21 0x7C700000, // 00E7 CALL R28 0 - 0x8C703916, // 00E8 GETMET R28 R28 K22 - 0x88780137, // 00E9 GETMBR R30 R0 K55 + 0x8C70394F, // 00E8 GETMET R28 R28 K79 + 0x88780163, // 00E9 GETMBR R30 R0 K99 0x7C700400, // 00EA CALL R28 2 0x5476002F, // 00EB LDINT R29 48 0x7C600A00, // 00EC CALL R24 5 0x5466000E, // 00ED LDINT R25 15 - 0x40660619, // 00EE CONNECT R25 K3 R25 + 0x40663E19, // 00EE CONNECT R25 K31 R25 0x94643019, // 00EF GETIDX R25 R24 R25 0x546A000F, // 00F0 LDINT R26 16 0x546E001E, // 00F1 LDINT R27 31 @@ -1194,35 +1141,35 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x5472002E, // 00F5 LDINT R28 47 0x406C361C, // 00F6 CONNECT R27 R27 R28 0x946C301B, // 00F7 GETIDX R27 R24 R27 - 0xB8727000, // 00F8 GETNGBL R28 K56 - 0x8C703939, // 00F9 GETMET R28 R28 K57 + 0xB8721400, // 00F8 GETNGBL R28 K10 + 0x8C703960, // 00F9 GETMET R28 R28 K96 0x7C700200, // 00FA CALL R28 1 - 0x8C740108, // 00FB GETMET R29 R0 K8 + 0x8C740125, // 00FB GETMET R29 R0 K37 0x5C7C0200, // 00FC MOVE R31 R1 - 0x58800003, // 00FD LDCONST R32 K3 - 0x58840003, // 00FE LDCONST R33 K3 - 0x58880003, // 00FF LDCONST R34 K3 + 0x5880001F, // 00FD LDCONST R32 K31 + 0x5884001F, // 00FE LDCONST R33 K31 + 0x5888001F, // 00FF LDCONST R34 K31 0x508C0200, // 0100 LDBOOL R35 1 0 0x7C740C00, // 0101 CALL R29 6 - 0x8C74073A, // 0102 GETMET R29 R3 K58 + 0x8C740785, // 0102 GETMET R29 R3 K133 0x7C740200, // 0103 CALL R29 1 - 0x8C74073B, // 0104 GETMET R29 R3 K59 + 0x8C74071C, // 0104 GETMET R29 R3 K28 0x5C7C3200, // 0105 MOVE R31 R25 0x5C803400, // 0106 MOVE R32 R26 0x5C843600, // 0107 MOVE R33 R27 0x5C883800, // 0108 MOVE R34 R28 0x7C740A00, // 0109 CALL R29 5 - 0x900E7903, // 010A SETMBR R3 K60 K3 - 0x8C74073D, // 010B GETMET R29 R3 K61 + 0x900F0D1F, // 010A SETMBR R3 K134 K31 + 0x8C740787, // 010B GETMET R29 R3 K135 0x7C740200, // 010C CALL R29 1 - 0x8C74073E, // 010D GETMET R29 R3 K62 + 0x8C740788, // 010D GETMET R29 R3 K136 0x507C0200, // 010E LDBOOL R31 1 0 0x7C740400, // 010F CALL R29 2 - 0x8C74073F, // 0110 GETMET R29 R3 K63 + 0x8C740789, // 0110 GETMET R29 R3 K137 0x7C740200, // 0111 CALL R29 1 - 0x8C740740, // 0112 GETMET R29 R3 K64 + 0x8C74078A, // 0112 GETMET R29 R3 K138 0x7C740200, // 0113 CALL R29 1 - 0x8C740741, // 0114 GETMET R29 R3 K65 + 0x8C74078B, // 0114 GETMET R29 R3 K139 0x7C740200, // 0115 CALL R29 1 0x50740200, // 0116 LDBOOL R29 1 0 0x80043A00, // 0117 RET 1 R29 @@ -1239,113 +1186,99 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(is_commissioning_open), - /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(parse_PBKDFParamRequest), - /* K7 */ be_nested_str_weak(parse_Pake1), - /* K8 */ be_nested_str_weak(parse_Pake3), - /* K9 */ be_nested_str_weak(parse_Sigma1), - /* K10 */ be_nested_str_weak(parse_Sigma3), - /* K11 */ be_nested_str_weak(parse_StatusReport), - /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(process_incoming), &be_const_str_solidified, ( &(const binstruction[88]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808010D, // 0000 GETMBR R2 R0 K13 + 0x8C08058C, // 0001 GETMET R2 R2 K140 0x7C080200, // 0002 CALL R2 1 0x740A000D, // 0003 JMPT R2 #0012 - 0x88080302, // 0004 GETMBR R2 R1 K2 + 0x8808031D, // 0004 GETMBR R2 R1 K29 0x540E001F, // 0005 LDINT R3 32 0x28080403, // 0006 GE R2 R2 R3 0x780A0009, // 0007 JMPF R2 #0012 - 0x88080302, // 0008 GETMBR R2 R1 K2 + 0x8808031D, // 0008 GETMBR R2 R1 K29 0x540E0023, // 0009 LDINT R3 36 0x18080403, // 000A LE R2 R2 R3 0x780A0005, // 000B JMPF R2 #0012 - 0xB80A0600, // 000C GETNGBL R2 K3 - 0x580C0004, // 000D LDCONST R3 K4 - 0x58100005, // 000E LDCONST R4 K5 + 0xB80A0A00, // 000C GETNGBL R2 K5 + 0x580C008D, // 000D LDCONST R3 K141 + 0x58100022, // 000E LDCONST R4 K34 0x7C080400, // 000F CALL R2 2 0x50080000, // 0010 LDBOOL R2 0 0 0x80040400, // 0011 RET 1 R2 - 0x88080302, // 0012 GETMBR R2 R1 K2 + 0x8808031D, // 0012 GETMBR R2 R1 K29 0x540E000F, // 0013 LDINT R3 16 0x1C080403, // 0014 EQ R2 R2 R3 0x780A0000, // 0015 JMPF R2 #0017 0x7002003E, // 0016 JMP #0056 - 0x88080302, // 0017 GETMBR R2 R1 K2 + 0x8808031D, // 0017 GETMBR R2 R1 K29 0x540E001F, // 0018 LDINT R3 32 0x1C080403, // 0019 EQ R2 R2 R3 0x780A0004, // 001A JMPF R2 #0020 - 0x8C080106, // 001B GETMET R2 R0 K6 + 0x8C08018E, // 001B GETMET R2 R0 K142 0x5C100200, // 001C MOVE R4 R1 0x7C080400, // 001D CALL R2 2 0x80040400, // 001E RET 1 R2 0x70020035, // 001F JMP #0056 - 0x88080302, // 0020 GETMBR R2 R1 K2 + 0x8808031D, // 0020 GETMBR R2 R1 K29 0x540E0021, // 0021 LDINT R3 34 0x1C080403, // 0022 EQ R2 R2 R3 0x780A0004, // 0023 JMPF R2 #0029 - 0x8C080107, // 0024 GETMET R2 R0 K7 + 0x8C08018F, // 0024 GETMET R2 R0 K143 0x5C100200, // 0025 MOVE R4 R1 0x7C080400, // 0026 CALL R2 2 0x80040400, // 0027 RET 1 R2 0x7002002C, // 0028 JMP #0056 - 0x88080302, // 0029 GETMBR R2 R1 K2 + 0x8808031D, // 0029 GETMBR R2 R1 K29 0x540E0023, // 002A LDINT R3 36 0x1C080403, // 002B EQ R2 R2 R3 0x780A0004, // 002C JMPF R2 #0032 - 0x8C080108, // 002D GETMET R2 R0 K8 + 0x8C080190, // 002D GETMET R2 R0 K144 0x5C100200, // 002E MOVE R4 R1 0x7C080400, // 002F CALL R2 2 0x80040400, // 0030 RET 1 R2 0x70020023, // 0031 JMP #0056 - 0x88080302, // 0032 GETMBR R2 R1 K2 + 0x8808031D, // 0032 GETMBR R2 R1 K29 0x540E002F, // 0033 LDINT R3 48 0x1C080403, // 0034 EQ R2 R2 R3 0x780A0004, // 0035 JMPF R2 #003B - 0x8C080109, // 0036 GETMET R2 R0 K9 + 0x8C080191, // 0036 GETMET R2 R0 K145 0x5C100200, // 0037 MOVE R4 R1 0x7C080400, // 0038 CALL R2 2 0x80040400, // 0039 RET 1 R2 0x7002001A, // 003A JMP #0056 - 0x88080302, // 003B GETMBR R2 R1 K2 + 0x8808031D, // 003B GETMBR R2 R1 K29 0x540E0031, // 003C LDINT R3 50 0x1C080403, // 003D EQ R2 R2 R3 0x780A0004, // 003E JMPF R2 #0044 - 0x8C08010A, // 003F GETMET R2 R0 K10 + 0x8C080192, // 003F GETMET R2 R0 K146 0x5C100200, // 0040 MOVE R4 R1 0x7C080400, // 0041 CALL R2 2 0x80040400, // 0042 RET 1 R2 0x70020011, // 0043 JMP #0056 - 0x88080302, // 0044 GETMBR R2 R1 K2 + 0x8808031D, // 0044 GETMBR R2 R1 K29 0x540E003F, // 0045 LDINT R3 64 0x1C080403, // 0046 EQ R2 R2 R3 0x780A0004, // 0047 JMPF R2 #004D - 0x8C08010B, // 0048 GETMET R2 R0 K11 + 0x8C080193, // 0048 GETMET R2 R0 K147 0x5C100200, // 0049 MOVE R4 R1 0x7C080400, // 004A CALL R2 2 0x80040400, // 004B RET 1 R2 0x70020008, // 004C JMP #0056 - 0xB80A0600, // 004D GETNGBL R2 K3 + 0xB80A0A00, // 004D GETNGBL R2 K5 0x600C0018, // 004E GETGBL R3 G24 - 0x5810000C, // 004F LDCONST R4 K12 - 0x88140302, // 0050 GETMBR R5 R1 K2 + 0x58100094, // 004F LDCONST R4 K148 + 0x8814031D, // 0050 GETMBR R5 R1 K29 0x7C0C0400, // 0051 CALL R3 2 - 0x58100005, // 0052 LDCONST R4 K5 + 0x58100022, // 0052 LDCONST R4 K34 0x7C080400, // 0053 CALL R2 2 0x50080000, // 0054 LDBOOL R2 0 0 0x80040400, // 0055 RET 1 R2 @@ -1364,164 +1297,55 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ be_nested_proto( 37, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[108]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(opcode), - /* K3 */ be_nested_str_weak(local_session_id), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(protocol_id), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(send_status_report), - /* K10 */ be_const_int(1), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(matter), - /* K13 */ be_nested_str_weak(Sigma1), - /* K14 */ be_nested_str_weak(parse), - /* K15 */ be_nested_str_weak(raw), - /* K16 */ be_nested_str_weak(app_payload_idx), - /* K17 */ be_nested_str_weak(__initiator_pub), - /* K18 */ be_nested_str_weak(initiatorEphPubKey), - /* K19 */ be_nested_str_weak(resumptionID), - /* K20 */ be_nested_str_weak(initiatorResumeMIC), - /* K21 */ be_nested_str_weak(device), - /* K22 */ be_nested_str_weak(sessions), - /* K23 */ be_nested_str_weak(find_session_by_resumption_id), - /* K24 */ be_nested_str_weak(_fabric), - /* K25 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), - /* K26 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption), - /* K27 */ be_nested_str_weak(initiatorRandom), - /* K28 */ be_nested_str_weak(fromstring), - /* K29 */ be_nested_str_weak(Sigma1_Resume), - /* K30 */ be_nested_str_weak(HKDF_SHA256), - /* K31 */ be_nested_str_weak(derive), - /* K32 */ be_nested_str_weak(shared_secret), - /* K33 */ be_nested_str_weak(NCASE_SigmaS1), - /* K34 */ be_const_int(2147483647), - /* K35 */ be_nested_str_weak(AES_CCM), - /* K36 */ be_nested_str_weak(decrypt), - /* K37 */ be_nested_str_weak(tag), - /* K38 */ be_nested_str_weak(_source_node_id), - /* K39 */ be_nested_str_weak(source_node_id), - /* K40 */ be_nested_str_weak(set_mode_CASE), - /* K41 */ be_nested_str_weak(__future_initiator_session_id), - /* K42 */ be_nested_str_weak(initiator_session_id), - /* K43 */ be_nested_str_weak(__future_local_session_id), - /* K44 */ be_nested_str_weak(gen_local_session_id), - /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K46 */ be_nested_str_weak(remote_ip), - /* K47 */ be_nested_str_weak(remote_port), - /* K48 */ be_nested_str_weak(resumption_id), - /* K49 */ be_nested_str_weak(random), - /* K50 */ be_nested_str_weak(Sigma2_Resume), - /* K51 */ be_nested_str_weak(NCASE_SigmaS2), - /* K52 */ be_nested_str_weak(Sigma2Resume), - /* K53 */ be_nested_str_weak(sigma2ResumeMIC), - /* K54 */ be_nested_str_weak(responderSessionID), - /* K55 */ be_nested_str_weak(SessionResumptionKeys), - /* K56 */ be_nested_str_weak(tasmota), - /* K57 */ be_nested_str_weak(rtc_utc), - /* K58 */ be_nested_str_weak(tlv2raw), - /* K59 */ be_nested_str_weak(__Msg1), - /* K60 */ be_nested_str_weak(build_response), - /* K61 */ be_nested_str_weak(encode_frame), - /* K62 */ be_nested_str_weak(responder), - /* K63 */ be_nested_str_weak(send_response_frame), - /* K64 */ be_nested_str_weak(close), - /* K65 */ be_nested_str_weak(set_keys), - /* K66 */ be_nested_str_weak(peer_node_id), - /* K67 */ be_nested_str_weak(_breadcrumb), - /* K68 */ be_nested_str_weak(counter_snd_next), - /* K69 */ be_nested_str_weak(set_persist), - /* K70 */ be_nested_str_weak(set_no_expiration), - /* K71 */ be_nested_str_weak(persist_to_fabric), - /* K72 */ be_nested_str_weak(save), - /* K73 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), - /* K74 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), - /* K75 */ be_nested_str_weak(find_fabric_by_destination_id), - /* K76 */ be_nested_str_weak(destinationId), - /* K77 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), - /* K78 */ be_nested_str_weak(__responder_priv), - /* K79 */ be_nested_str_weak(__responder_pub), - /* K80 */ be_nested_str_weak(EC_P256), - /* K81 */ be_nested_str_weak(public_key), - /* K82 */ be_nested_str_weak(shared_key), - /* K83 */ be_nested_str_weak(TLV), - /* K84 */ be_nested_str_weak(Matter_TLV_struct), - /* K85 */ be_nested_str_weak(add_TLV), - /* K86 */ be_nested_str_weak(B2), - /* K87 */ be_nested_str_weak(get_noc), - /* K88 */ be_nested_str_weak(get_icac), - /* K89 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K90 */ be_nested_str_weak(get_pk), - /* K91 */ be_nested_str_weak(Msg1), - /* K92 */ be_nested_str_weak(SHA256), - /* K93 */ be_nested_str_weak(update), - /* K94 */ be_nested_str_weak(out), - /* K95 */ be_nested_str_weak(S2K_Info), - /* K96 */ be_nested_str_weak(get_ipk_group_key), - /* K97 */ be_nested_str_weak(TBEData2_Nonce), - /* K98 */ be_nested_str_weak(encrypt), - /* K99 */ be_nested_str_weak(Sigma2), - /* K100 */ be_nested_str_weak(responderRandom), - /* K101 */ be_nested_str_weak(responderSessionId), - /* K102 */ be_nested_str_weak(responderEphPubKey), - /* K103 */ be_nested_str_weak(encrypted2), - /* K104 */ be_nested_str_weak(__Msg2), - /* K105 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K106 */ be_nested_str_weak(_ip), - /* K107 */ be_nested_str_weak(_port), - }), + &be_ktab_class_Matter_Commisioning_Context, /* shared constants */ be_str_weak(parse_Sigma1), &be_const_str_solidified, ( &(const binstruction[497]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 + 0xA40A1200, // 0000 IMPORT R2 K9 + 0x880C0300, // 0001 GETMBR R3 R1 K0 + 0x8810031D, // 0002 GETMBR R4 R1 K29 0x5416002F, // 0003 LDINT R5 48 0x20100805, // 0004 NE R4 R4 R5 0x74120005, // 0005 JMPT R4 #000C - 0x88100303, // 0006 GETMBR R4 R1 K3 - 0x20100904, // 0007 NE R4 R4 K4 + 0x8810031E, // 0006 GETMBR R4 R1 K30 + 0x2010091F, // 0007 NE R4 R4 K31 0x74120002, // 0008 JMPT R4 #000C - 0x88100305, // 0009 GETMBR R4 R1 K5 - 0x20100904, // 000A NE R4 R4 K4 + 0x88100320, // 0009 GETMBR R4 R1 K32 + 0x2010091F, // 000A NE R4 R4 K31 0x7812000C, // 000B JMPF R4 #0019 - 0xB8120C00, // 000C GETNGBL R4 K6 - 0x58140007, // 000D LDCONST R5 K7 - 0x58180008, // 000E LDCONST R6 K8 + 0xB8120A00, // 000C GETNGBL R4 K5 + 0x58140023, // 000D LDCONST R5 K35 + 0x58180024, // 000E LDCONST R6 K36 0x7C100400, // 000F CALL R4 2 - 0x8C100109, // 0010 GETMET R4 R0 K9 + 0x8C100125, // 0010 GETMET R4 R0 K37 0x5C180200, // 0011 MOVE R6 R1 - 0x581C000A, // 0012 LDCONST R7 K10 - 0x58200004, // 0013 LDCONST R8 K4 - 0x5824000B, // 0014 LDCONST R9 K11 + 0x581C0026, // 0012 LDCONST R7 K38 + 0x5820001F, // 0013 LDCONST R8 K31 + 0x58240045, // 0014 LDCONST R9 K69 0x50280000, // 0015 LDBOOL R10 0 0 0x7C100C00, // 0016 CALL R4 6 0x50100000, // 0017 LDBOOL R4 0 0 0x80040800, // 0018 RET 1 R4 - 0xB8121800, // 0019 GETNGBL R4 K12 - 0x8C10090D, // 001A GETMET R4 R4 K13 + 0xB8124E00, // 0019 GETNGBL R4 K39 + 0x8C100995, // 001A GETMET R4 R4 K149 0x7C100200, // 001B CALL R4 1 - 0x8C10090E, // 001C GETMET R4 R4 K14 - 0x8818030F, // 001D GETMBR R6 R1 K15 - 0x881C0310, // 001E GETMBR R7 R1 K16 + 0x8C100929, // 001C GETMET R4 R4 K41 + 0x88180301, // 001D GETMBR R6 R1 K1 + 0x881C0302, // 001E GETMBR R7 R1 K2 0x7C100600, // 001F CALL R4 3 - 0x88140912, // 0020 GETMBR R5 R4 K18 - 0x900E2205, // 0021 SETMBR R3 K17 R5 - 0x88140913, // 0022 GETMBR R5 R4 K19 + 0x88140996, // 0020 GETMBR R5 R4 K150 + 0x900EFA05, // 0021 SETMBR R3 K125 R5 + 0x88140997, // 0022 GETMBR R5 R4 K151 0x4C180000, // 0023 LDNIL R6 0x20140A06, // 0024 NE R5 R5 R6 0x78160003, // 0025 JMPF R5 #002A - 0x88140914, // 0026 GETMBR R5 R4 K20 + 0x88140998, // 0026 GETMBR R5 R4 K152 0x4C180000, // 0027 LDNIL R6 0x20140A06, // 0028 NE R5 R5 R6 0x74160000, // 0029 JMPT R5 #002B @@ -1529,62 +1353,62 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x50140200, // 002B LDBOOL R5 1 0 0x4C180000, // 002C LDNIL R6 0x78160014, // 002D JMPF R5 #0043 - 0x881C0115, // 002E GETMBR R7 R0 K21 - 0x881C0F16, // 002F GETMBR R7 R7 K22 - 0x8C1C0F17, // 0030 GETMET R7 R7 K23 - 0x88240913, // 0031 GETMBR R9 R4 K19 + 0x881C010D, // 002E GETMBR R7 R0 K13 + 0x881C0F0E, // 002F GETMBR R7 R7 K14 + 0x8C1C0F99, // 0030 GETMET R7 R7 K153 + 0x88240997, // 0031 GETMBR R9 R4 K151 0x7C1C0400, // 0032 CALL R7 2 0x5C180E00, // 0033 MOVE R6 R7 0x4C1C0000, // 0034 LDNIL R7 0x1C1C0C07, // 0035 EQ R7 R6 R7 0x741E0003, // 0036 JMPT R7 #003B - 0x881C0D18, // 0037 GETMBR R7 R6 K24 + 0x881C0D9A, // 0037 GETMBR R7 R6 K154 0x4C200000, // 0038 LDNIL R8 0x1C1C0E08, // 0039 EQ R7 R7 R8 0x781E0007, // 003A JMPF R7 #0043 - 0xB81E0C00, // 003B GETNGBL R7 K6 + 0xB81E0A00, // 003B GETNGBL R7 K5 0x60200018, // 003C GETGBL R8 G24 - 0x58240019, // 003D LDCONST R9 K25 - 0x88280913, // 003E GETMBR R10 R4 K19 + 0x5824009B, // 003D LDCONST R9 K155 + 0x88280997, // 003E GETMBR R10 R4 K151 0x7C200400, // 003F CALL R8 2 - 0x58240008, // 0040 LDCONST R9 K8 + 0x58240024, // 0040 LDCONST R9 K36 0x7C1C0400, // 0041 CALL R7 2 0x50140000, // 0042 LDBOOL R5 0 0 0x781600C3, // 0043 JMPF R5 #0108 - 0xB81E0C00, // 0044 GETNGBL R7 K6 - 0x5820001A, // 0045 LDCONST R8 K26 - 0x58240008, // 0046 LDCONST R9 K8 + 0xB81E0A00, // 0044 GETNGBL R7 K5 + 0x5820009C, // 0045 LDCONST R8 K156 + 0x58240024, // 0046 LDCONST R9 K36 0x7C1C0400, // 0047 CALL R7 2 - 0x881C091B, // 0048 GETMBR R7 R4 K27 - 0x88200913, // 0049 GETMBR R8 R4 K19 + 0x881C0936, // 0048 GETMBR R7 R4 K54 + 0x88200997, // 0049 GETMBR R8 R4 K151 0x001C0E08, // 004A ADD R7 R7 R8 0x60200015, // 004B GETGBL R8 G21 0x7C200000, // 004C CALL R8 0 - 0x8C20111C, // 004D GETMET R8 R8 K28 - 0x5828001D, // 004E LDCONST R10 K29 + 0x8C20114F, // 004D GETMET R8 R8 K79 + 0x5828009D, // 004E LDCONST R10 K157 0x7C200400, // 004F CALL R8 2 - 0x8C24051E, // 0050 GETMET R9 R2 K30 + 0x8C240561, // 0050 GETMET R9 R2 K97 0x7C240200, // 0051 CALL R9 1 - 0x8C24131F, // 0052 GETMET R9 R9 K31 - 0x882C0D20, // 0053 GETMBR R11 R6 K32 + 0x8C241362, // 0052 GETMET R9 R9 K98 + 0x882C0D6A, // 0053 GETMBR R11 R6 K106 0x5C300E00, // 0054 MOVE R12 R7 0x5C341000, // 0055 MOVE R13 R8 0x543A000F, // 0056 LDINT R14 16 0x7C240A00, // 0057 CALL R9 5 0x60280015, // 0058 GETGBL R10 G21 0x7C280000, // 0059 CALL R10 0 - 0x8C28151C, // 005A GETMET R10 R10 K28 - 0x58300021, // 005B LDCONST R12 K33 + 0x8C28154F, // 005A GETMET R10 R10 K79 + 0x5830009E, // 005B LDCONST R12 K158 0x7C280400, // 005C CALL R10 2 0x542DFFEE, // 005D LDINT R11 -17 - 0x402E080B, // 005E CONNECT R11 K4 R11 - 0x88300914, // 005F GETMBR R12 R4 K20 + 0x402E3E0B, // 005E CONNECT R11 K31 R11 + 0x88300998, // 005F GETMBR R12 R4 K152 0x942C180B, // 0060 GETIDX R11 R12 R11 0x5435FFEF, // 0061 LDINT R13 -16 - 0x40341B22, // 0062 CONNECT R13 R13 K34 - 0x88380914, // 0063 GETMBR R14 R4 K20 + 0x40341B03, // 0062 CONNECT R13 R13 K3 + 0x88380998, // 0063 GETMBR R14 R4 K152 0x94301C0D, // 0064 GETIDX R12 R14 R13 - 0x8C3C0523, // 0065 GETMET R15 R2 K35 + 0x8C3C056D, // 0065 GETMET R15 R2 K109 0x5C441200, // 0066 MOVE R17 R9 0x5C481400, // 0067 MOVE R18 R10 0x604C0015, // 0068 GETGBL R19 G21 @@ -1595,97 +1419,97 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x5456000F, // 006D LDINT R21 16 0x7C3C0C00, // 006E CALL R15 6 0x5C341E00, // 006F MOVE R13 R15 - 0x8C3C1B24, // 0070 GETMET R15 R13 K36 + 0x8C3C1B6F, // 0070 GETMET R15 R13 K111 0x5C441600, // 0071 MOVE R17 R11 0x7C3C0400, // 0072 CALL R15 2 0x5C381E00, // 0073 MOVE R14 R15 - 0x8C3C1B25, // 0074 GETMET R15 R13 K37 + 0x8C3C1B70, // 0074 GETMET R15 R13 K112 0x7C3C0200, // 0075 CALL R15 1 0x1C40180F, // 0076 EQ R16 R12 R15 0x7842008A, // 0077 JMPF R16 #0103 - 0x88400D18, // 0078 GETMBR R16 R6 K24 - 0x900E3010, // 0079 SETMBR R3 K24 R16 - 0x88400327, // 007A GETMBR R16 R1 K39 - 0x900E4C10, // 007B SETMBR R3 K38 R16 - 0x8C400728, // 007C GETMET R16 R3 K40 + 0x88400D9A, // 0078 GETMBR R16 R6 K154 + 0x900F3410, // 0079 SETMBR R3 K154 R16 + 0x884003A0, // 007A GETMBR R16 R1 K160 + 0x900F3E10, // 007B SETMBR R3 K159 R16 + 0x8C4007A1, // 007C GETMET R16 R3 K161 0x7C400200, // 007D CALL R16 1 - 0x8840092A, // 007E GETMBR R16 R4 K42 - 0x900E5210, // 007F SETMBR R3 K41 R16 - 0x88400115, // 0080 GETMBR R16 R0 K21 - 0x88402116, // 0081 GETMBR R16 R16 K22 - 0x8C40212C, // 0082 GETMET R16 R16 K44 + 0x8840092F, // 007E GETMBR R16 R4 K47 + 0x900E5C10, // 007F SETMBR R3 K46 R16 + 0x8840010D, // 0080 GETMBR R16 R0 K13 + 0x8840210E, // 0081 GETMBR R16 R16 K14 + 0x8C402131, // 0082 GETMET R16 R16 K49 0x7C400200, // 0083 CALL R16 1 - 0x900E5610, // 0084 SETMBR R3 K43 R16 - 0xB8420C00, // 0085 GETNGBL R16 K6 + 0x900E6010, // 0084 SETMBR R3 K48 R16 + 0xB8420A00, // 0085 GETNGBL R16 K5 0x60440018, // 0086 GETGBL R17 G24 - 0x5848002D, // 0087 LDCONST R18 K45 - 0x884C072B, // 0088 GETMBR R19 R3 K43 - 0x8850032E, // 0089 GETMBR R20 R1 K46 - 0x8854032F, // 008A GETMBR R21 R1 K47 + 0x58480032, // 0087 LDCONST R18 K50 + 0x884C0730, // 0088 GETMBR R19 R3 K48 + 0x88500333, // 0089 GETMBR R20 R1 K51 + 0x88540334, // 008A GETMBR R21 R1 K52 0x7C440800, // 008B CALL R17 4 - 0x58480008, // 008C LDCONST R18 K8 + 0x58480024, // 008C LDCONST R18 K36 0x7C400400, // 008D CALL R16 2 - 0x88400D20, // 008E GETMBR R16 R6 K32 - 0x900E4010, // 008F SETMBR R3 K32 R16 - 0x8C400531, // 0090 GETMET R16 R2 K49 + 0x88400D6A, // 008E GETMBR R16 R6 K106 + 0x900ED410, // 008F SETMBR R3 K106 R16 + 0x8C400538, // 0090 GETMET R16 R2 K56 0x544A000F, // 0091 LDINT R18 16 0x7C400400, // 0092 CALL R16 2 - 0x900E6010, // 0093 SETMBR R3 K48 R16 + 0x900F4410, // 0093 SETMBR R3 K162 R16 0x60400015, // 0094 GETGBL R16 G21 0x7C400000, // 0095 CALL R16 0 - 0x8C40211C, // 0096 GETMET R16 R16 K28 - 0x58480032, // 0097 LDCONST R18 K50 + 0x8C40214F, // 0096 GETMET R16 R16 K79 + 0x584800A3, // 0097 LDCONST R18 K163 0x7C400400, // 0098 CALL R16 2 - 0x8844091B, // 0099 GETMBR R17 R4 K27 - 0x88480730, // 009A GETMBR R18 R3 K48 + 0x88440936, // 0099 GETMBR R17 R4 K54 + 0x884807A2, // 009A GETMBR R18 R3 K162 0x00442212, // 009B ADD R17 R17 R18 - 0x8C48051E, // 009C GETMET R18 R2 K30 + 0x8C480561, // 009C GETMET R18 R2 K97 0x7C480200, // 009D CALL R18 1 - 0x8C48251F, // 009E GETMET R18 R18 K31 - 0x88500720, // 009F GETMBR R20 R3 K32 + 0x8C482562, // 009E GETMET R18 R18 K98 + 0x8850076A, // 009F GETMBR R20 R3 K106 0x5C542200, // 00A0 MOVE R21 R17 0x5C582000, // 00A1 MOVE R22 R16 0x545E000F, // 00A2 LDINT R23 16 0x7C480A00, // 00A3 CALL R18 5 - 0x8C4C0523, // 00A4 GETMET R19 R2 K35 + 0x8C4C056D, // 00A4 GETMET R19 R2 K109 0x5C542400, // 00A5 MOVE R21 R18 0x60580015, // 00A6 GETGBL R22 G21 0x7C580000, // 00A7 CALL R22 0 - 0x8C582D1C, // 00A8 GETMET R22 R22 K28 - 0x58600033, // 00A9 LDCONST R24 K51 + 0x8C582D4F, // 00A8 GETMET R22 R22 K79 + 0x586000A4, // 00A9 LDCONST R24 K164 0x7C580400, // 00AA CALL R22 2 0x605C0015, // 00AB GETGBL R23 G21 0x7C5C0000, // 00AC CALL R23 0 - 0x58600004, // 00AD LDCONST R24 K4 + 0x5860001F, // 00AD LDCONST R24 K31 0x5466000F, // 00AE LDINT R25 16 0x7C4C0C00, // 00AF CALL R19 6 - 0x8C502725, // 00B0 GETMET R20 R19 K37 + 0x8C502770, // 00B0 GETMET R20 R19 K112 0x7C500200, // 00B1 CALL R20 1 - 0xB8561800, // 00B2 GETNGBL R21 K12 - 0x8C542B34, // 00B3 GETMET R21 R21 K52 + 0xB8564E00, // 00B2 GETNGBL R21 K39 + 0x8C542BA5, // 00B3 GETMET R21 R21 K165 0x7C540200, // 00B4 CALL R21 1 - 0x88580730, // 00B5 GETMBR R22 R3 K48 - 0x90562616, // 00B6 SETMBR R21 K19 R22 - 0x90566A14, // 00B7 SETMBR R21 K53 R20 - 0x8858072B, // 00B8 GETMBR R22 R3 K43 - 0x90566C16, // 00B9 SETMBR R21 K54 R22 - 0x8858091B, // 00BA GETMBR R22 R4 K27 - 0x885C0D30, // 00BB GETMBR R23 R6 K48 + 0x885807A2, // 00B5 GETMBR R22 R3 K162 + 0x90572E16, // 00B6 SETMBR R21 K151 R22 + 0x90574C14, // 00B7 SETMBR R21 K166 R20 + 0x88580730, // 00B8 GETMBR R22 R3 K48 + 0x90574E16, // 00B9 SETMBR R21 K167 R22 + 0x88580936, // 00BA GETMBR R22 R4 K54 + 0x885C0DA2, // 00BB GETMBR R23 R6 K162 0x00582C17, // 00BC ADD R22 R22 R23 - 0x8C5C051E, // 00BD GETMET R23 R2 K30 + 0x8C5C0561, // 00BD GETMET R23 R2 K97 0x7C5C0200, // 00BE CALL R23 1 - 0x8C5C2F1F, // 00BF GETMET R23 R23 K31 - 0x88640720, // 00C0 GETMBR R25 R3 K32 + 0x8C5C2F62, // 00BF GETMET R23 R23 K98 + 0x8864076A, // 00C0 GETMBR R25 R3 K106 0x5C682C00, // 00C1 MOVE R26 R22 0x606C0015, // 00C2 GETGBL R27 G21 0x7C6C0000, // 00C3 CALL R27 0 - 0x8C6C371C, // 00C4 GETMET R27 R27 K28 - 0x58740037, // 00C5 LDCONST R29 K55 + 0x8C6C374F, // 00C4 GETMET R27 R27 K79 + 0x587400A8, // 00C5 LDCONST R29 K168 0x7C6C0400, // 00C6 CALL R27 2 0x5472002F, // 00C7 LDINT R28 48 0x7C5C0A00, // 00C8 CALL R23 5 0x5462000E, // 00C9 LDINT R24 15 - 0x40620818, // 00CA CONNECT R24 K4 R24 + 0x40623E18, // 00CA CONNECT R24 K31 R24 0x94602E18, // 00CB GETIDX R24 R23 R24 0x5466000F, // 00CC LDINT R25 16 0x546A001E, // 00CD LDINT R26 31 @@ -1695,241 +1519,241 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x546E002E, // 00D1 LDINT R27 47 0x4068341B, // 00D2 CONNECT R26 R26 R27 0x94682E1A, // 00D3 GETIDX R26 R23 R26 - 0xB86E7000, // 00D4 GETNGBL R27 K56 - 0x8C6C3739, // 00D5 GETMET R27 R27 K57 + 0xB86E1400, // 00D4 GETNGBL R27 K10 + 0x8C6C3760, // 00D5 GETMET R27 R27 K96 0x7C6C0200, // 00D6 CALL R27 1 - 0x8C702B3A, // 00D7 GETMET R28 R21 K58 + 0x8C702B3E, // 00D7 GETMET R28 R21 K62 0x7C700200, // 00D8 CALL R28 1 0x4C740000, // 00D9 LDNIL R29 - 0x900E761D, // 00DA SETMBR R3 K59 R29 - 0x8C74033C, // 00DB GETMET R29 R1 K60 + 0x900E561D, // 00DA SETMBR R3 K43 R29 + 0x8C740340, // 00DB GETMET R29 R1 K64 0x547E0032, // 00DC LDINT R31 51 0x50800200, // 00DD LDBOOL R32 1 0 0x7C740600, // 00DE CALL R29 3 - 0x8C783B3D, // 00DF GETMET R30 R29 K61 + 0x8C783B41, // 00DF GETMET R30 R29 K65 0x5C803800, // 00E0 MOVE R32 R28 0x7C780400, // 00E1 CALL R30 2 - 0x887C013E, // 00E2 GETMBR R31 R0 K62 - 0x8C7C3F3F, // 00E3 GETMET R31 R31 K63 + 0x887C0142, // 00E2 GETMBR R31 R0 K66 + 0x8C7C3F43, // 00E3 GETMET R31 R31 K67 0x5C843A00, // 00E4 MOVE R33 R29 0x7C7C0400, // 00E5 CALL R31 2 - 0x8C7C0740, // 00E6 GETMET R31 R3 K64 + 0x8C7C0785, // 00E6 GETMET R31 R3 K133 0x7C7C0200, // 00E7 CALL R31 1 - 0x8C7C0741, // 00E8 GETMET R31 R3 K65 + 0x8C7C071C, // 00E8 GETMET R31 R3 K28 0x5C843000, // 00E9 MOVE R33 R24 0x5C883200, // 00EA MOVE R34 R25 0x5C8C3400, // 00EB MOVE R35 R26 0x5C903600, // 00EC MOVE R36 R27 0x7C7C0A00, // 00ED CALL R31 5 - 0x887C0D42, // 00EE GETMBR R31 R6 K66 - 0x900E841F, // 00EF SETMBR R3 K66 R31 - 0x900E8704, // 00F0 SETMBR R3 K67 K4 - 0x8C7C0744, // 00F1 GETMET R31 R3 K68 + 0x887C0D76, // 00EE GETMBR R31 R6 K118 + 0x900EEC1F, // 00EF SETMBR R3 K118 R31 + 0x900F0D1F, // 00F0 SETMBR R3 K134 K31 + 0x8C7C0787, // 00F1 GETMET R31 R3 K135 0x7C7C0200, // 00F2 CALL R31 1 - 0x8C7C0745, // 00F3 GETMET R31 R3 K69 + 0x8C7C0788, // 00F3 GETMET R31 R3 K136 0x50840200, // 00F4 LDBOOL R33 1 0 0x7C7C0400, // 00F5 CALL R31 2 - 0x8C7C0746, // 00F6 GETMET R31 R3 K70 + 0x8C7C0789, // 00F6 GETMET R31 R3 K137 0x7C7C0200, // 00F7 CALL R31 1 - 0x8C7C0747, // 00F8 GETMET R31 R3 K71 + 0x8C7C078A, // 00F8 GETMET R31 R3 K138 0x7C7C0200, // 00F9 CALL R31 1 - 0x8C7C0748, // 00FA GETMET R31 R3 K72 + 0x8C7C078B, // 00FA GETMET R31 R3 K139 0x7C7C0200, // 00FB CALL R31 1 - 0xB87E0C00, // 00FC GETNGBL R31 K6 - 0x58800049, // 00FD LDCONST R32 K73 - 0x58840008, // 00FE LDCONST R33 K8 + 0xB87E0A00, // 00FC GETNGBL R31 K5 + 0x588000A9, // 00FD LDCONST R32 K169 + 0x58840024, // 00FE LDCONST R33 K36 0x7C7C0400, // 00FF CALL R31 2 0x507C0200, // 0100 LDBOOL R31 1 0 0x80043E00, // 0101 RET 1 R31 0x70020004, // 0102 JMP #0108 - 0xB8420C00, // 0103 GETNGBL R16 K6 - 0x5844004A, // 0104 LDCONST R17 K74 - 0x58480008, // 0105 LDCONST R18 K8 + 0xB8420A00, // 0103 GETNGBL R16 K5 + 0x584400AA, // 0104 LDCONST R17 K170 + 0x58480024, // 0105 LDCONST R18 K36 0x7C400400, // 0106 CALL R16 2 0x50140000, // 0107 LDBOOL R5 0 0 0x5C1C0A00, // 0108 MOVE R7 R5 0x741E00E4, // 0109 JMPT R7 #01EF - 0x8C1C014B, // 010A GETMET R7 R0 K75 - 0x8824094C, // 010B GETMBR R9 R4 K76 - 0x8828091B, // 010C GETMBR R10 R4 K27 + 0x8C1C01AB, // 010A GETMET R7 R0 K171 + 0x882409AC, // 010B GETMBR R9 R4 K172 + 0x88280936, // 010C GETMBR R10 R4 K54 0x7C1C0600, // 010D CALL R7 3 - 0x900E3007, // 010E SETMBR R3 K24 R7 + 0x900F3407, // 010E SETMBR R3 K154 R7 0x4C200000, // 010F LDNIL R8 0x1C200608, // 0110 EQ R8 R3 R8 0x74220003, // 0111 JMPT R8 #0116 - 0x88200718, // 0112 GETMBR R8 R3 K24 + 0x8820079A, // 0112 GETMBR R8 R3 K154 0x4C240000, // 0113 LDNIL R9 0x1C201009, // 0114 EQ R8 R8 R9 0x7822000C, // 0115 JMPF R8 #0123 - 0xB8220C00, // 0116 GETNGBL R8 K6 - 0x5824004D, // 0117 LDCONST R9 K77 - 0x58280008, // 0118 LDCONST R10 K8 + 0xB8220A00, // 0116 GETNGBL R8 K5 + 0x582400AD, // 0117 LDCONST R9 K173 + 0x58280024, // 0118 LDCONST R10 K36 0x7C200400, // 0119 CALL R8 2 - 0x8C200109, // 011A GETMET R8 R0 K9 + 0x8C200125, // 011A GETMET R8 R0 K37 0x5C280200, // 011B MOVE R10 R1 - 0x582C000A, // 011C LDCONST R11 K10 - 0x58300004, // 011D LDCONST R12 K4 - 0x5834000A, // 011E LDCONST R13 K10 + 0x582C0026, // 011C LDCONST R11 K38 + 0x5830001F, // 011D LDCONST R12 K31 + 0x58340026, // 011E LDCONST R13 K38 0x50380000, // 011F LDBOOL R14 0 0 0x7C200C00, // 0120 CALL R8 6 0x50200000, // 0121 LDBOOL R8 0 0 0x80041000, // 0122 RET 1 R8 - 0x88200327, // 0123 GETMBR R8 R1 K39 - 0x900E4C08, // 0124 SETMBR R3 K38 R8 - 0x8C200728, // 0125 GETMET R8 R3 K40 + 0x882003A0, // 0123 GETMBR R8 R1 K160 + 0x900F3E08, // 0124 SETMBR R3 K159 R8 + 0x8C2007A1, // 0125 GETMET R8 R3 K161 0x7C200200, // 0126 CALL R8 1 - 0x8820092A, // 0127 GETMBR R8 R4 K42 - 0x900E5208, // 0128 SETMBR R3 K41 R8 - 0x88200115, // 0129 GETMBR R8 R0 K21 - 0x88201116, // 012A GETMBR R8 R8 K22 - 0x8C20112C, // 012B GETMET R8 R8 K44 + 0x8820092F, // 0127 GETMBR R8 R4 K47 + 0x900E5C08, // 0128 SETMBR R3 K46 R8 + 0x8820010D, // 0129 GETMBR R8 R0 K13 + 0x8820110E, // 012A GETMBR R8 R8 K14 + 0x8C201131, // 012B GETMET R8 R8 K49 0x7C200200, // 012C CALL R8 1 - 0x900E5608, // 012D SETMBR R3 K43 R8 - 0xB8220C00, // 012E GETNGBL R8 K6 + 0x900E6008, // 012D SETMBR R3 K48 R8 + 0xB8220A00, // 012E GETNGBL R8 K5 0x60240018, // 012F GETGBL R9 G24 - 0x5828002D, // 0130 LDCONST R10 K45 - 0x882C072B, // 0131 GETMBR R11 R3 K43 - 0x8830032E, // 0132 GETMBR R12 R1 K46 - 0x8834032F, // 0133 GETMBR R13 R1 K47 + 0x58280032, // 0130 LDCONST R10 K50 + 0x882C0730, // 0131 GETMBR R11 R3 K48 + 0x88300333, // 0132 GETMBR R12 R1 K51 + 0x88340334, // 0133 GETMBR R13 R1 K52 0x7C240800, // 0134 CALL R9 4 - 0x58280008, // 0135 LDCONST R10 K8 + 0x58280024, // 0135 LDCONST R10 K36 0x7C200400, // 0136 CALL R8 2 - 0x8C200531, // 0137 GETMET R8 R2 K49 + 0x8C200538, // 0137 GETMET R8 R2 K56 0x542A000F, // 0138 LDINT R10 16 0x7C200400, // 0139 CALL R8 2 - 0x900E6008, // 013A SETMBR R3 K48 R8 - 0x8C200531, // 013B GETMET R8 R2 K49 + 0x900F4408, // 013A SETMBR R3 K162 R8 + 0x8C200538, // 013B GETMET R8 R2 K56 0x542A001F, // 013C LDINT R10 32 0x7C200400, // 013D CALL R8 2 - 0x900E9C08, // 013E SETMBR R3 K78 R8 - 0x8C200550, // 013F GETMET R8 R2 K80 + 0x900F5C08, // 013E SETMBR R3 K174 R8 + 0x8C20057F, // 013F GETMET R8 R2 K127 0x7C200200, // 0140 CALL R8 1 - 0x8C201151, // 0141 GETMET R8 R8 K81 - 0x8828074E, // 0142 GETMBR R10 R3 K78 + 0x8C2011AF, // 0141 GETMET R8 R8 K175 + 0x882807AE, // 0142 GETMBR R10 R3 K174 0x7C200400, // 0143 CALL R8 2 - 0x900E9E08, // 0144 SETMBR R3 K79 R8 - 0x8C200531, // 0145 GETMET R8 R2 K49 + 0x900EFC08, // 0144 SETMBR R3 K126 R8 + 0x8C200538, // 0145 GETMET R8 R2 K56 0x542A001F, // 0146 LDINT R10 32 0x7C200400, // 0147 CALL R8 2 - 0x8C240550, // 0148 GETMET R9 R2 K80 + 0x8C24057F, // 0148 GETMET R9 R2 K127 0x7C240200, // 0149 CALL R9 1 - 0x8C241352, // 014A GETMET R9 R9 K82 - 0x882C074E, // 014B GETMBR R11 R3 K78 - 0x88300912, // 014C GETMBR R12 R4 K18 + 0x8C2413B0, // 014A GETMET R9 R9 K176 + 0x882C07AE, // 014B GETMBR R11 R3 K174 + 0x88300996, // 014C GETMBR R12 R4 K150 0x7C240600, // 014D CALL R9 3 - 0x900E4009, // 014E SETMBR R3 K32 R9 - 0xB8261800, // 014F GETNGBL R9 K12 - 0x88241353, // 0150 GETMBR R9 R9 K83 - 0x8C241354, // 0151 GETMET R9 R9 K84 + 0x900ED409, // 014E SETMBR R3 K106 R9 + 0xB8264E00, // 014F GETNGBL R9 K39 + 0x88241372, // 0150 GETMBR R9 R9 K114 + 0x8C24137A, // 0151 GETMET R9 R9 K122 0x7C240200, // 0152 CALL R9 1 - 0x8C281355, // 0153 GETMET R10 R9 K85 - 0x5830000A, // 0154 LDCONST R12 K10 - 0xB8361800, // 0155 GETNGBL R13 K12 - 0x88341B53, // 0156 GETMBR R13 R13 K83 - 0x88341B56, // 0157 GETMBR R13 R13 K86 - 0x8C380F57, // 0158 GETMET R14 R7 K87 + 0x8C28137B, // 0153 GETMET R10 R9 K123 + 0x58300026, // 0154 LDCONST R12 K38 + 0xB8364E00, // 0155 GETNGBL R13 K39 + 0x88341B72, // 0156 GETMBR R13 R13 K114 + 0x88341BB1, // 0157 GETMBR R13 R13 K177 + 0x8C380FB2, // 0158 GETMET R14 R7 K178 0x7C380200, // 0159 CALL R14 1 0x7C280800, // 015A CALL R10 4 - 0x8C281355, // 015B GETMET R10 R9 K85 - 0x5830000B, // 015C LDCONST R12 K11 - 0xB8361800, // 015D GETNGBL R13 K12 - 0x88341B53, // 015E GETMBR R13 R13 K83 - 0x88341B56, // 015F GETMBR R13 R13 K86 - 0x8C380F58, // 0160 GETMET R14 R7 K88 + 0x8C28137B, // 015B GETMET R10 R9 K123 + 0x58300045, // 015C LDCONST R12 K69 + 0xB8364E00, // 015D GETNGBL R13 K39 + 0x88341B72, // 015E GETMBR R13 R13 K114 + 0x88341BB1, // 015F GETMBR R13 R13 K177 + 0x8C380FB3, // 0160 GETMET R14 R7 K179 0x7C380200, // 0161 CALL R14 1 0x7C280800, // 0162 CALL R10 4 - 0x8C281355, // 0163 GETMET R10 R9 K85 - 0x58300008, // 0164 LDCONST R12 K8 - 0xB8361800, // 0165 GETNGBL R13 K12 - 0x88341B53, // 0166 GETMBR R13 R13 K83 - 0x88341B56, // 0167 GETMBR R13 R13 K86 - 0x8838074F, // 0168 GETMBR R14 R3 K79 + 0x8C28137B, // 0163 GETMET R10 R9 K123 + 0x58300024, // 0164 LDCONST R12 K36 + 0xB8364E00, // 0165 GETNGBL R13 K39 + 0x88341B72, // 0166 GETMBR R13 R13 K114 + 0x88341BB1, // 0167 GETMBR R13 R13 K177 + 0x8838077E, // 0168 GETMBR R14 R3 K126 0x7C280800, // 0169 CALL R10 4 - 0x8C281355, // 016A GETMET R10 R9 K85 + 0x8C28137B, // 016A GETMET R10 R9 K123 0x54320003, // 016B LDINT R12 4 - 0xB8361800, // 016C GETNGBL R13 K12 - 0x88341B53, // 016D GETMBR R13 R13 K83 - 0x88341B56, // 016E GETMBR R13 R13 K86 - 0x88380912, // 016F GETMBR R14 R4 K18 + 0xB8364E00, // 016C GETNGBL R13 K39 + 0x88341B72, // 016D GETMBR R13 R13 K114 + 0x88341BB1, // 016E GETMBR R13 R13 K177 + 0x88380996, // 016F GETMBR R14 R4 K150 0x7C280800, // 0170 CALL R10 4 - 0x8C280550, // 0171 GETMET R10 R2 K80 + 0x8C28057F, // 0171 GETMET R10 R2 K127 0x7C280200, // 0172 CALL R10 1 - 0x8C281559, // 0173 GETMET R10 R10 K89 - 0x8C300F5A, // 0174 GETMET R12 R7 K90 + 0x8C2815B4, // 0173 GETMET R10 R10 K180 + 0x8C300FB5, // 0174 GETMET R12 R7 K181 0x7C300200, // 0175 CALL R12 1 - 0x8C34133A, // 0176 GETMET R13 R9 K58 + 0x8C34133E, // 0176 GETMET R13 R9 K62 0x7C340200, // 0177 CALL R13 1 0x7C280600, // 0178 CALL R10 3 - 0xB82E1800, // 0179 GETNGBL R11 K12 - 0x882C1753, // 017A GETMBR R11 R11 K83 - 0x8C2C1754, // 017B GETMET R11 R11 K84 + 0xB82E4E00, // 0179 GETNGBL R11 K39 + 0x882C1772, // 017A GETMBR R11 R11 K114 + 0x8C2C177A, // 017B GETMET R11 R11 K122 0x7C2C0200, // 017C CALL R11 1 - 0x8C301755, // 017D GETMET R12 R11 K85 - 0x5838000A, // 017E LDCONST R14 K10 - 0xB83E1800, // 017F GETNGBL R15 K12 - 0x883C1F53, // 0180 GETMBR R15 R15 K83 - 0x883C1F56, // 0181 GETMBR R15 R15 K86 - 0x8C400F57, // 0182 GETMET R16 R7 K87 + 0x8C30177B, // 017D GETMET R12 R11 K123 + 0x58380026, // 017E LDCONST R14 K38 + 0xB83E4E00, // 017F GETNGBL R15 K39 + 0x883C1F72, // 0180 GETMBR R15 R15 K114 + 0x883C1FB1, // 0181 GETMBR R15 R15 K177 + 0x8C400FB2, // 0182 GETMET R16 R7 K178 0x7C400200, // 0183 CALL R16 1 0x7C300800, // 0184 CALL R12 4 - 0x8C301755, // 0185 GETMET R12 R11 K85 - 0x5838000B, // 0186 LDCONST R14 K11 - 0xB83E1800, // 0187 GETNGBL R15 K12 - 0x883C1F53, // 0188 GETMBR R15 R15 K83 - 0x883C1F56, // 0189 GETMBR R15 R15 K86 - 0x8C400F58, // 018A GETMET R16 R7 K88 + 0x8C30177B, // 0185 GETMET R12 R11 K123 + 0x58380045, // 0186 LDCONST R14 K69 + 0xB83E4E00, // 0187 GETNGBL R15 K39 + 0x883C1F72, // 0188 GETMBR R15 R15 K114 + 0x883C1FB1, // 0189 GETMBR R15 R15 K177 + 0x8C400FB3, // 018A GETMET R16 R7 K179 0x7C400200, // 018B CALL R16 1 0x7C300800, // 018C CALL R12 4 - 0x8C301755, // 018D GETMET R12 R11 K85 - 0x58380008, // 018E LDCONST R14 K8 - 0xB83E1800, // 018F GETNGBL R15 K12 - 0x883C1F53, // 0190 GETMBR R15 R15 K83 - 0x883C1F56, // 0191 GETMBR R15 R15 K86 + 0x8C30177B, // 018D GETMET R12 R11 K123 + 0x58380024, // 018E LDCONST R14 K36 + 0xB83E4E00, // 018F GETNGBL R15 K39 + 0x883C1F72, // 0190 GETMBR R15 R15 K114 + 0x883C1FB1, // 0191 GETMBR R15 R15 K177 0x5C401400, // 0192 MOVE R16 R10 0x7C300800, // 0193 CALL R12 4 - 0x8C301755, // 0194 GETMET R12 R11 K85 + 0x8C30177B, // 0194 GETMET R12 R11 K123 0x543A0003, // 0195 LDINT R14 4 - 0xB83E1800, // 0196 GETNGBL R15 K12 - 0x883C1F53, // 0197 GETMBR R15 R15 K83 - 0x883C1F56, // 0198 GETMBR R15 R15 K86 - 0x88400730, // 0199 GETMBR R16 R3 K48 + 0xB83E4E00, // 0196 GETNGBL R15 K39 + 0x883C1F72, // 0197 GETMBR R15 R15 K114 + 0x883C1FB1, // 0198 GETMBR R15 R15 K177 + 0x884007A2, // 0199 GETMBR R16 R3 K162 0x7C300800, // 019A CALL R12 4 - 0x8830095B, // 019B GETMBR R12 R4 K91 - 0x900E760C, // 019C SETMBR R3 K59 R12 - 0x8C30055C, // 019D GETMET R12 R2 K92 + 0x883009B6, // 019B GETMBR R12 R4 K182 + 0x900E560C, // 019C SETMBR R3 K43 R12 + 0x8C30054E, // 019D GETMET R12 R2 K78 0x7C300200, // 019E CALL R12 1 - 0x8C30195D, // 019F GETMET R12 R12 K93 - 0x8838073B, // 01A0 GETMBR R14 R3 K59 + 0x8C301916, // 019F GETMET R12 R12 K22 + 0x8838072B, // 01A0 GETMBR R14 R3 K43 0x7C300400, // 01A1 CALL R12 2 - 0x8C30195E, // 01A2 GETMET R12 R12 K94 + 0x8C301917, // 01A2 GETMET R12 R12 K23 0x7C300200, // 01A3 CALL R12 1 0x60340015, // 01A4 GETGBL R13 G21 0x7C340000, // 01A5 CALL R13 0 - 0x8C341B1C, // 01A6 GETMET R13 R13 K28 - 0x883C015F, // 01A7 GETMBR R15 R0 K95 + 0x8C341B4F, // 01A6 GETMET R13 R13 K79 + 0x883C01B7, // 01A7 GETMBR R15 R0 K183 0x7C340400, // 01A8 CALL R13 2 - 0x8C380F60, // 01A9 GETMET R14 R7 K96 + 0x8C380F14, // 01A9 GETMET R14 R7 K20 0x7C380200, // 01AA CALL R14 1 0x00381C08, // 01AB ADD R14 R14 R8 - 0x883C074F, // 01AC GETMBR R15 R3 K79 + 0x883C077E, // 01AC GETMBR R15 R3 K126 0x00381C0F, // 01AD ADD R14 R14 R15 0x00381C0C, // 01AE ADD R14 R14 R12 - 0x8C3C051E, // 01AF GETMET R15 R2 K30 + 0x8C3C0561, // 01AF GETMET R15 R2 K97 0x7C3C0200, // 01B0 CALL R15 1 - 0x8C3C1F1F, // 01B1 GETMET R15 R15 K31 - 0x88440720, // 01B2 GETMBR R17 R3 K32 + 0x8C3C1F62, // 01B1 GETMET R15 R15 K98 + 0x8844076A, // 01B2 GETMBR R17 R3 K106 0x5C481C00, // 01B3 MOVE R18 R14 0x5C4C1A00, // 01B4 MOVE R19 R13 0x5452000F, // 01B5 LDINT R20 16 0x7C3C0A00, // 01B6 CALL R15 5 - 0x8C40173A, // 01B7 GETMET R16 R11 K58 + 0x8C40173E, // 01B7 GETMET R16 R11 K62 0x7C400200, // 01B8 CALL R16 1 - 0x8C440523, // 01B9 GETMET R17 R2 K35 + 0x8C44056D, // 01B9 GETMET R17 R2 K109 0x5C4C1E00, // 01BA MOVE R19 R15 0x60500015, // 01BB GETGBL R20 G21 0x7C500000, // 01BC CALL R20 0 - 0x8C50291C, // 01BD GETMET R20 R20 K28 - 0x88580161, // 01BE GETMBR R22 R0 K97 + 0x8C50294F, // 01BD GETMET R20 R20 K79 + 0x885801B8, // 01BE GETMBR R22 R0 K184 0x7C500400, // 01BF CALL R20 2 0x60540015, // 01C0 GETGBL R21 G21 0x7C540000, // 01C1 CALL R21 0 @@ -1938,42 +1762,42 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x7C580200, // 01C4 CALL R22 1 0x545E000F, // 01C5 LDINT R23 16 0x7C440C00, // 01C6 CALL R17 6 - 0x8C482362, // 01C7 GETMET R18 R17 K98 + 0x8C4823B9, // 01C7 GETMET R18 R17 K185 0x5C502000, // 01C8 MOVE R20 R16 0x7C480400, // 01C9 CALL R18 2 - 0x8C4C2325, // 01CA GETMET R19 R17 K37 + 0x8C4C2370, // 01CA GETMET R19 R17 K112 0x7C4C0200, // 01CB CALL R19 1 0x00482413, // 01CC ADD R18 R18 R19 - 0xB84E1800, // 01CD GETNGBL R19 K12 - 0x8C4C2763, // 01CE GETMET R19 R19 K99 + 0xB84E4E00, // 01CD GETNGBL R19 K39 + 0x8C4C27BA, // 01CE GETMET R19 R19 K186 0x7C4C0200, // 01CF CALL R19 1 - 0x904EC808, // 01D0 SETMBR R19 K100 R8 - 0x8850072B, // 01D1 GETMBR R20 R3 K43 - 0x904ECA14, // 01D2 SETMBR R19 K101 R20 - 0x8850074F, // 01D3 GETMBR R20 R3 K79 - 0x904ECC14, // 01D4 SETMBR R19 K102 R20 - 0x904ECE12, // 01D5 SETMBR R19 K103 R18 - 0x8C50273A, // 01D6 GETMET R20 R19 K58 + 0x904E6E08, // 01D0 SETMBR R19 K55 R8 + 0x88500730, // 01D1 GETMBR R20 R3 K48 + 0x904E7214, // 01D2 SETMBR R19 K57 R20 + 0x8850077E, // 01D3 GETMBR R20 R3 K126 + 0x904F7614, // 01D4 SETMBR R19 K187 R20 + 0x904F7812, // 01D5 SETMBR R19 K188 R18 + 0x8C50273E, // 01D6 GETMET R20 R19 K62 0x7C500200, // 01D7 CALL R20 1 - 0x900ED014, // 01D8 SETMBR R3 K104 R20 - 0x8C54033C, // 01D9 GETMET R21 R1 K60 + 0x900E7E14, // 01D8 SETMBR R3 K63 R20 + 0x8C540340, // 01D9 GETMET R21 R1 K64 0x545E0030, // 01DA LDINT R23 49 0x50600200, // 01DB LDBOOL R24 1 0 0x7C540600, // 01DC CALL R21 3 - 0x8C582B3D, // 01DD GETMET R22 R21 K61 + 0x8C582B41, // 01DD GETMET R22 R21 K65 0x5C602800, // 01DE MOVE R24 R20 0x7C580400, // 01DF CALL R22 2 - 0xB85E0C00, // 01E0 GETNGBL R23 K6 + 0xB85E0A00, // 01E0 GETNGBL R23 K5 0x60600018, // 01E1 GETGBL R24 G24 - 0x58640069, // 01E2 LDCONST R25 K105 - 0x8868072B, // 01E3 GETMBR R26 R3 K43 - 0x886C076A, // 01E4 GETMBR R27 R3 K106 - 0x8870076B, // 01E5 GETMBR R28 R3 K107 + 0x586400BD, // 01E2 LDCONST R25 K189 + 0x88680730, // 01E3 GETMBR R26 R3 K48 + 0x886C075B, // 01E4 GETMBR R27 R3 K91 + 0x8870075C, // 01E5 GETMBR R28 R3 K92 0x7C600800, // 01E6 CALL R24 4 - 0x5864000B, // 01E7 LDCONST R25 K11 + 0x58640045, // 01E7 LDCONST R25 K69 0x7C5C0400, // 01E8 CALL R23 2 - 0x885C013E, // 01E9 GETMBR R23 R0 K62 - 0x8C5C2F3F, // 01EA GETMET R23 R23 K63 + 0x885C0142, // 01E9 GETMBR R23 R0 K66 + 0x8C5C2F43, // 01EA GETMET R23 R23 K67 0x5C642A00, // 01EB MOVE R25 R21 0x7C5C0400, // 01EC CALL R23 2 0x505C0200, // 01ED LDBOOL R23 1 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h index ac3b652f0..e8ccdbd73 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h @@ -3,6 +3,32 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Control_Message' ktab size: 22, total: 31 (saved 72 bytes) +static const bvalue be_ktab_class_Matter_Control_Message[22] = { + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s), + /* K3 */ be_nested_str_weak(raw), + /* K4 */ be_nested_str_weak(app_payload_idx), + /* K5 */ be_const_int(2147483647), + /* K6 */ be_nested_str_weak(tohex), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncReq_X20_X2A_X20Not_X20implemented_X20_X25s), + /* K9 */ be_nested_str_weak(crypto), + /* K10 */ be_nested_str_weak(responder), + /* K11 */ be_nested_str_weak(device), + /* K12 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20), + /* K13 */ be_nested_str_weak(matter), + /* K14 */ be_nested_str_weak(inspect), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str_weak(opcode), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(parse_MsgCounterSyncReq), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_str_weak(parse_MsgCounterSyncRsp), + /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X), +}; + extern const bclass be_class_Matter_Control_Message; @@ -13,22 +39,13 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s), - /* K3 */ be_nested_str_weak(raw), - /* K4 */ be_nested_str_weak(app_payload_idx), - /* K5 */ be_const_int(2147483647), - /* K6 */ be_nested_str_weak(tohex), - /* K7 */ be_const_int(2), - }), + &be_ktab_class_Matter_Control_Message, /* shared constants */ be_str_weak(parse_MsgCounterSyncRsp), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -60,29 +77,20 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncReq_X20_X2A_X20Not_X20implemented_X20_X25s), - /* K3 */ be_nested_str_weak(raw), - /* K4 */ be_nested_str_weak(app_payload_idx), - /* K5 */ be_const_int(2147483647), - /* K6 */ be_nested_str_weak(tohex), - /* K7 */ be_const_int(2), - }), + &be_ktab_class_Matter_Control_Message, /* shared constants */ be_str_weak(parse_MsgCounterSyncReq), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ 0x88080300, // 0000 GETMBR R2 R1 K0 0xB80E0200, // 0001 GETNGBL R3 K1 0x60100018, // 0002 GETGBL R4 G24 - 0x58140002, // 0003 LDCONST R5 K2 + 0x58140008, // 0003 LDCONST R5 K8 0x88180304, // 0004 GETMBR R6 R1 K4 0x40180D05, // 0005 CONNECT R6 R6 K5 0x881C0303, // 0006 GETMBR R7 R1 K3 @@ -107,24 +115,20 @@ be_local_closure(class_Matter_Control_Message_init, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(responder), - /* K2 */ be_nested_str_weak(device), - }), + &be_ktab_class_Matter_Control_Message, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x880C0302, // 0002 GETMBR R3 R1 K2 - 0x90020403, // 0003 SETMBR R0 K2 R3 + 0xA40A1200, // 0000 IMPORT R2 K9 + 0x90021401, // 0001 SETMBR R0 K10 R1 + 0x880C030B, // 0002 GETMBR R3 R1 K11 + 0x90021603, // 0003 SETMBR R0 K11 R3 0x80000000, // 0004 RET 0 }) ) @@ -139,59 +143,46 @@ be_local_closure(class_Matter_Control_Message_process_incoming_control_message, be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(inspect), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(opcode), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(parse_MsgCounterSyncReq), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(parse_MsgCounterSyncRsp), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X), - /* K11 */ be_const_int(2), - }), + &be_ktab_class_Matter_Control_Message, /* shared constants */ be_str_weak(process_incoming_control_message), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0xB80E0400, // 0001 GETNGBL R3 K2 - 0x8C0C0703, // 0002 GETMET R3 R3 K3 + 0xB80A0200, // 0000 GETNGBL R2 K1 + 0xB80E1A00, // 0001 GETNGBL R3 K13 + 0x8C0C070E, // 0002 GETMET R3 R3 K14 0x5C140200, // 0003 MOVE R5 R1 0x7C0C0400, // 0004 CALL R3 2 - 0x000E0203, // 0005 ADD R3 K1 R3 - 0x58100004, // 0006 LDCONST R4 K4 + 0x000E1803, // 0005 ADD R3 K12 R3 + 0x5810000F, // 0006 LDCONST R4 K15 0x7C080400, // 0007 CALL R2 2 - 0x88080305, // 0008 GETMBR R2 R1 K5 - 0x1C080506, // 0009 EQ R2 R2 K6 + 0x88080310, // 0008 GETMBR R2 R1 K16 + 0x1C080511, // 0009 EQ R2 R2 K17 0x780A0004, // 000A JMPF R2 #0010 - 0x8C080107, // 000B GETMET R2 R0 K7 + 0x8C080112, // 000B GETMET R2 R0 K18 0x5C100200, // 000C MOVE R4 R1 0x7C080400, // 000D CALL R2 2 0x80040400, // 000E RET 1 R2 0x70020010, // 000F JMP #0021 - 0x88080305, // 0010 GETMBR R2 R1 K5 - 0x1C080508, // 0011 EQ R2 R2 K8 + 0x88080310, // 0010 GETMBR R2 R1 K16 + 0x1C080513, // 0011 EQ R2 R2 K19 0x780A0004, // 0012 JMPF R2 #0018 - 0x8C080109, // 0013 GETMET R2 R0 K9 + 0x8C080114, // 0013 GETMET R2 R0 K20 0x5C100200, // 0014 MOVE R4 R1 0x7C080400, // 0015 CALL R2 2 0x80040400, // 0016 RET 1 R2 0x70020008, // 0017 JMP #0021 - 0xB80A0000, // 0018 GETNGBL R2 K0 + 0xB80A0200, // 0018 GETNGBL R2 K1 0x600C0018, // 0019 GETGBL R3 G24 - 0x5810000A, // 001A LDCONST R4 K10 - 0x88140305, // 001B GETMBR R5 R1 K5 + 0x58100015, // 001A LDCONST R4 K21 + 0x88140310, // 001B GETMBR R5 R1 K16 0x7C0C0400, // 001C CALL R3 2 - 0x5810000B, // 001D LDCONST R4 K11 + 0x58100007, // 001D LDCONST R4 K7 0x7C080400, // 001E CALL R2 2 0x50080000, // 001F LDBOOL R2 0 0 0x80040400, // 0020 RET 1 R2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h index 623b12921..be84d44c8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -3,6 +3,69 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_EventHandler' ktab size: 59, total: 86 (saved 216 bytes) +static const bvalue be_ktab_class_Matter_EventHandler[59] = { + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20Events_X20queues_X20sizes_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), + /* K3 */ be_nested_str_weak(queue_critical), + /* K4 */ be_nested_str_weak(queue_info), + /* K5 */ be_nested_str_weak(queue_debug), + /* K6 */ be_const_int(2), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(priority), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(stop_iteration), + /* K11 */ be_nested_str_weak(MTR_X3A_X20Events_X20by_X20types_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), + /* K12 */ be_nested_str_weak(counter_event_no), + /* K13 */ be_nested_str_weak(add), + /* K14 */ be_nested_str_weak(counter_event_no_persisted), + /* K15 */ be_nested_str_weak(load_event_no_persisted), + /* K16 */ be_nested_str_weak(persist), + /* K17 */ be_nested_str_weak(find), + /* K18 */ be_nested_str_weak(EVENT_NO_KEY), + /* K19 */ be_nested_str_weak(0), + /* K20 */ be_nested_str_weak(int64), + /* K21 */ be_nested_str_weak(fromstring), + /* K22 */ be_nested_str_weak(EVENT_NO_INCR), + /* K23 */ be_nested_str_weak(setmember), + /* K24 */ be_nested_str_weak(tostring), + /* K25 */ be_nested_str_weak(save), + /* K26 */ be_nested_str_weak(push), + /* K27 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), + /* K28 */ be_nested_str_weak(pop), + /* K29 */ be_const_int(0), + /* K30 */ be_nested_str_weak(matter), + /* K31 */ be_nested_str_weak(EVENT_DEBUG), + /* K32 */ be_nested_str_weak(EVENT_INFO), + /* K33 */ be_nested_str_weak(compact), + /* K34 */ be_nested_str_weak(device), + /* K35 */ be_nested_str_weak(EventQueued), + /* K36 */ be_nested_str_weak(get_next_event_no), + /* K37 */ be_nested_str_weak(loglevel), + /* K38 */ be_const_int(3), + /* K39 */ be_nested_str_weak(), + /* K40 */ be_nested_str_weak(_X2C_X20), + /* K41 */ be_nested_str_weak(val), + /* K42 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), + /* K43 */ be_nested_str_weak(CRIT_X20_X20), + /* K44 */ be_nested_str_weak(INFO_X20_X20), + /* K45 */ be_nested_str_weak(DEBUG_X20), + /* K46 */ be_nested_str_weak(get_event_name), + /* K47 */ be_nested_str_weak(_X28), + /* K48 */ be_nested_str_weak(_X29_X20), + /* K49 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), + /* K50 */ be_nested_str_weak(event_no), + /* K51 */ be_nested_str_weak(endpoint), + /* K52 */ be_nested_str_weak(cluster), + /* K53 */ be_nested_str_weak(event_id), + /* K54 */ be_nested_str_weak(queue_event), + /* K55 */ be_nested_str_weak(message_handler), + /* K56 */ be_nested_str_weak(im), + /* K57 */ be_nested_str_weak(subs_shop), + /* K58 */ be_nested_str_weak(event_published), +}; + extern const bclass be_class_Matter_EventHandler; @@ -13,26 +76,13 @@ be_local_closure(class_Matter_EventHandler_dump, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20Events_X20queues_X20sizes_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), - /* K3 */ be_nested_str_weak(queue_critical), - /* K4 */ be_nested_str_weak(queue_info), - /* K5 */ be_nested_str_weak(queue_debug), - /* K6 */ be_const_int(2), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(priority), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(stop_iteration), - /* K11 */ be_nested_str_weak(MTR_X3A_X20Events_X20by_X20types_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(dump), &be_const_str_solidified, ( &(const binstruction[74]) { /* code */ @@ -123,19 +173,17 @@ be_local_closure(class_Matter_EventHandler_get_last_event_no, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(counter_event_no), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(get_last_event_no), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010C, // 0000 GETMBR R1 R0 K12 0x80040200, // 0001 RET 1 R1 }) ) @@ -150,34 +198,28 @@ be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(counter_event_no), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(counter_event_no_persisted), - /* K4 */ be_nested_str_weak(load_event_no_persisted), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(get_next_event_no), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8C04030D, // 0001 GETMET R1 R1 K13 + 0x580C0009, // 0002 LDCONST R3 K9 0x7C040400, // 0003 CALL R1 2 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0x88040100, // 0005 GETMBR R1 R0 K0 - 0x88080103, // 0006 GETMBR R2 R0 K3 + 0x90021801, // 0004 SETMBR R0 K12 R1 + 0x8804010C, // 0005 GETMBR R1 R0 K12 + 0x8808010E, // 0006 GETMBR R2 R0 K14 0x28040202, // 0007 GE R1 R1 R2 0x78060001, // 0008 JMPF R1 #000B - 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x8C04010F, // 0009 GETMET R1 R0 K15 0x7C040200, // 000A CALL R1 1 - 0x88040100, // 000B GETMBR R1 R0 K0 + 0x8804010C, // 000B GETMBR R1 R0 K12 0x80040200, // 000C RET 1 R1 }) ) @@ -192,54 +234,40 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(persist), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(EVENT_NO_KEY), - /* K3 */ be_nested_str_weak(0), - /* K4 */ be_nested_str_weak(counter_event_no), - /* K5 */ be_nested_str_weak(int64), - /* K6 */ be_nested_str_weak(fromstring), - /* K7 */ be_nested_str_weak(counter_event_no_persisted), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(EVENT_NO_INCR), - /* K10 */ be_nested_str_weak(setmember), - /* K11 */ be_nested_str_weak(tostring), - /* K12 */ be_nested_str_weak(save), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(load_event_no_persisted), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 + 0xA4062000, // 0000 IMPORT R1 K16 0x60080008, // 0001 GETGBL R2 G8 - 0x8C0C0301, // 0002 GETMET R3 R1 K1 - 0x88140102, // 0003 GETMBR R5 R0 K2 - 0x58180003, // 0004 LDCONST R6 K3 + 0x8C0C0311, // 0002 GETMET R3 R1 K17 + 0x88140112, // 0003 GETMBR R5 R0 K18 + 0x58180013, // 0004 LDCONST R6 K19 0x7C0C0600, // 0005 CALL R3 3 0x7C080200, // 0006 CALL R2 1 - 0xB80E0A00, // 0007 GETNGBL R3 K5 - 0x8C0C0706, // 0008 GETMET R3 R3 K6 + 0xB80E2800, // 0007 GETNGBL R3 K20 + 0x8C0C0715, // 0008 GETMET R3 R3 K21 0x5C140400, // 0009 MOVE R5 R2 0x7C0C0400, // 000A CALL R3 2 - 0x90020803, // 000B SETMBR R0 K4 R3 - 0x880C0104, // 000C GETMBR R3 R0 K4 - 0x8C0C0708, // 000D GETMET R3 R3 K8 - 0x88140109, // 000E GETMBR R5 R0 K9 + 0x90021803, // 000B SETMBR R0 K12 R3 + 0x880C010C, // 000C GETMBR R3 R0 K12 + 0x8C0C070D, // 000D GETMET R3 R3 K13 + 0x88140116, // 000E GETMBR R5 R0 K22 0x7C0C0400, // 000F CALL R3 2 - 0x90020E03, // 0010 SETMBR R0 K7 R3 - 0x8C0C030A, // 0011 GETMET R3 R1 K10 - 0x88140102, // 0012 GETMBR R5 R0 K2 - 0x88180107, // 0013 GETMBR R6 R0 K7 - 0x8C180D0B, // 0014 GETMET R6 R6 K11 + 0x90021C03, // 0010 SETMBR R0 K14 R3 + 0x8C0C0317, // 0011 GETMET R3 R1 K23 + 0x88140112, // 0012 GETMBR R5 R0 K18 + 0x8818010E, // 0013 GETMBR R6 R0 K14 + 0x8C180D18, // 0014 GETMET R6 R6 K24 0x7C180200, // 0015 CALL R6 1 0x7C0C0600, // 0016 CALL R3 3 - 0x8C0C030C, // 0017 GETMET R3 R1 K12 + 0x8C0C0319, // 0017 GETMET R3 R1 K25 0x7C0C0200, // 0018 CALL R3 1 0x80000000, // 0019 RET 0 }) @@ -255,80 +283,68 @@ be_local_closure(class_Matter_EventHandler_queue_event, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(priority), - /* K1 */ be_nested_str_weak(queue_debug), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), - /* K4 */ be_nested_str_weak(pop), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(EVENT_DEBUG), - /* K8 */ be_nested_str_weak(queue_info), - /* K9 */ be_nested_str_weak(EVENT_INFO), - /* K10 */ be_nested_str_weak(queue_critical), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(queue_event), &be_const_str_solidified, ( &(const binstruction[54]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x88080308, // 0000 GETMBR R2 R1 K8 + 0x880C0105, // 0001 GETMBR R3 R0 K5 + 0x8C0C071A, // 0002 GETMET R3 R3 K26 0x5C140200, // 0003 MOVE R5 R1 0x7C0C0400, // 0004 CALL R3 2 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x88100105, // 0006 GETMBR R4 R0 K5 0x7C0C0200, // 0007 CALL R3 1 - 0x88100103, // 0008 GETMBR R4 R0 K3 + 0x8810011B, // 0008 GETMBR R4 R0 K27 0x240C0604, // 0009 GT R3 R3 R4 0x780E0029, // 000A JMPF R3 #0035 - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x8C0C0704, // 000C GETMET R3 R3 K4 - 0x58140005, // 000D LDCONST R5 K5 + 0x880C0105, // 000B GETMBR R3 R0 K5 + 0x8C0C071C, // 000C GETMET R3 R3 K28 + 0x5814001D, // 000D LDCONST R5 K29 0x7C0C0400, // 000E CALL R3 2 - 0x88100700, // 000F GETMBR R4 R3 K0 - 0xB8160C00, // 0010 GETNGBL R5 K6 - 0x88140B07, // 0011 GETMBR R5 R5 K7 + 0x88100708, // 000F GETMBR R4 R3 K8 + 0xB8163C00, // 0010 GETNGBL R5 K30 + 0x88140B1F, // 0011 GETMBR R5 R5 K31 0x24100805, // 0012 GT R4 R4 R5 0x78120020, // 0013 JMPF R4 #0035 - 0x88100108, // 0014 GETMBR R4 R0 K8 - 0x8C100902, // 0015 GETMET R4 R4 K2 + 0x88100104, // 0014 GETMBR R4 R0 K4 + 0x8C10091A, // 0015 GETMET R4 R4 K26 0x5C180600, // 0016 MOVE R6 R3 0x7C100400, // 0017 CALL R4 2 0x6010000C, // 0018 GETGBL R4 G12 - 0x88140108, // 0019 GETMBR R5 R0 K8 + 0x88140104, // 0019 GETMBR R5 R0 K4 0x7C100200, // 001A CALL R4 1 - 0x88140103, // 001B GETMBR R5 R0 K3 + 0x8814011B, // 001B GETMBR R5 R0 K27 0x24100805, // 001C GT R4 R4 R5 0x78120016, // 001D JMPF R4 #0035 - 0x88100108, // 001E GETMBR R4 R0 K8 - 0x8C100904, // 001F GETMET R4 R4 K4 - 0x58180005, // 0020 LDCONST R6 K5 + 0x88100104, // 001E GETMBR R4 R0 K4 + 0x8C10091C, // 001F GETMET R4 R4 K28 + 0x5818001D, // 0020 LDCONST R6 K29 0x7C100400, // 0021 CALL R4 2 - 0x88140900, // 0022 GETMBR R5 R4 K0 - 0xB81A0C00, // 0023 GETNGBL R6 K6 - 0x88180D09, // 0024 GETMBR R6 R6 K9 + 0x88140908, // 0022 GETMBR R5 R4 K8 + 0xB81A3C00, // 0023 GETNGBL R6 K30 + 0x88180D20, // 0024 GETMBR R6 R6 K32 0x24140A06, // 0025 GT R5 R5 R6 0x7816000D, // 0026 JMPF R5 #0035 - 0x8814010A, // 0027 GETMBR R5 R0 K10 - 0x8C140B02, // 0028 GETMET R5 R5 K2 + 0x88140103, // 0027 GETMBR R5 R0 K3 + 0x8C140B1A, // 0028 GETMET R5 R5 K26 0x5C1C0800, // 0029 MOVE R7 R4 0x7C140400, // 002A CALL R5 2 0x6014000C, // 002B GETGBL R5 G12 - 0x8818010A, // 002C GETMBR R6 R0 K10 + 0x88180103, // 002C GETMBR R6 R0 K3 0x7C140200, // 002D CALL R5 1 - 0x88180103, // 002E GETMBR R6 R0 K3 + 0x8818011B, // 002E GETMBR R6 R0 K27 0x24140A06, // 002F GT R5 R5 R6 0x78160003, // 0030 JMPF R5 #0035 - 0x8814010A, // 0031 GETMBR R5 R0 K10 - 0x8C140B04, // 0032 GETMET R5 R5 K4 - 0x581C0005, // 0033 LDCONST R7 K5 + 0x88140103, // 0031 GETMBR R5 R0 K3 + 0x8C140B1C, // 0032 GETMET R5 R5 K28 + 0x581C001D, // 0033 LDCONST R7 K29 0x7C140400, // 0034 CALL R5 2 0x80000000, // 0035 RET 0 }) @@ -344,19 +360,17 @@ be_local_closure(class_Matter_EventHandler_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(compact), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040121, // 0000 GETMET R1 R0 K33 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -372,33 +386,27 @@ be_local_closure(class_Matter_EventHandler_init, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(queue_debug), - /* K2 */ be_nested_str_weak(queue_info), - /* K3 */ be_nested_str_weak(queue_critical), - /* K4 */ be_nested_str_weak(load_event_no_persisted), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024401, // 0000 SETMBR R0 K34 R1 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x90020A02, // 0003 SETMBR R0 K5 R2 0x60080012, // 0004 GETGBL R2 G18 0x7C080000, // 0005 CALL R2 0 - 0x90020402, // 0006 SETMBR R0 K2 R2 + 0x90020802, // 0006 SETMBR R0 K4 R2 0x60080012, // 0007 GETGBL R2 G18 0x7C080000, // 0008 CALL R2 0 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x8C080104, // 000A GETMET R2 R0 K4 + 0x8C08010F, // 000A GETMET R2 R0 K15 0x7C080200, // 000B CALL R2 1 0x80000000, // 000C RET 0 }) @@ -414,7 +422,7 @@ be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -465,19 +473,14 @@ be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(counter_event_no), - /* K1 */ be_nested_str_weak(queue_debug), - /* K2 */ be_nested_str_weak(queue_info), - /* K3 */ be_nested_str_weak(queue_critical), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(find_min_no), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x20080202, // 0001 NE R2 R1 R2 0x780A0004, // 0002 JMPF R2 #0008 - 0x88080100, // 0003 GETMBR R2 R0 K0 + 0x8808010C, // 0003 GETMBR R2 R0 K12 0x28080202, // 0004 GE R2 R1 R2 0x780A0001, // 0005 JMPF R2 #0008 0x4C080000, // 0006 LDNIL R2 @@ -486,13 +489,13 @@ be_local_closure(class_Matter_EventHandler_find_min_no, /* name */ 0x4C0C0000, // 0009 LDNIL R3 0x5C100400, // 000A MOVE R4 R2 0x5C140600, // 000B MOVE R5 R3 - 0x88180101, // 000C GETMBR R6 R0 K1 + 0x88180105, // 000C GETMBR R6 R0 K5 0x5C1C0200, // 000D MOVE R7 R1 0x7C100600, // 000E CALL R4 3 0x5C0C0800, // 000F MOVE R3 R4 0x5C100400, // 0010 MOVE R4 R2 0x5C140600, // 0011 MOVE R5 R3 - 0x88180102, // 0012 GETMBR R6 R0 K2 + 0x88180104, // 0012 GETMBR R6 R0 K4 0x5C1C0200, // 0013 MOVE R7 R1 0x7C100600, // 0014 CALL R4 3 0x5C0C0800, // 0015 MOVE R3 R4 @@ -516,51 +519,19 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ be_nested_proto( 23, /* nstack */ 9, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(EventQueued), - /* K2 */ be_nested_str_weak(get_next_event_no), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(loglevel), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(_X2C_X20), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(val), - /* K10 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(CRIT_X20_X20), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(INFO_X20_X20), - /* K15 */ be_nested_str_weak(DEBUG_X20), - /* K16 */ be_nested_str_weak(get_event_name), - /* K17 */ be_nested_str_weak(_X28), - /* K18 */ be_nested_str_weak(_X29_X20), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), - /* K21 */ be_nested_str_weak(event_no), - /* K22 */ be_nested_str_weak(endpoint), - /* K23 */ be_nested_str_weak(cluster), - /* K24 */ be_nested_str_weak(event_id), - /* K25 */ be_nested_str_weak(queue_event), - /* K26 */ be_nested_str_weak(device), - /* K27 */ be_nested_str_weak(message_handler), - /* K28 */ be_nested_str_weak(im), - /* K29 */ be_nested_str_weak(subs_shop), - /* K30 */ be_nested_str_weak(event_published), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(publish_event), &be_const_str_solidified, ( &(const binstruction[112]) { /* code */ - 0xB8260000, // 0000 GETNGBL R9 K0 - 0x8C241301, // 0001 GETMET R9 R9 K1 - 0x8C2C0102, // 0002 GETMET R11 R0 K2 + 0xB8263C00, // 0000 GETNGBL R9 K30 + 0x8C241323, // 0001 GETMET R9 R9 K35 + 0x8C2C0124, // 0002 GETMET R11 R0 K36 0x7C2C0200, // 0003 CALL R11 1 0x5C300200, // 0004 MOVE R12 R1 0x5C340400, // 0005 MOVE R13 R2 @@ -571,12 +542,12 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x5C480E00, // 000A MOVE R18 R7 0x5C4C1000, // 000B MOVE R19 R8 0x7C241400, // 000C CALL R9 10 - 0xB82A0600, // 000D GETNGBL R10 K3 - 0x8C281504, // 000E GETMET R10 R10 K4 - 0x58300005, // 000F LDCONST R12 K5 + 0xB82A0000, // 000D GETNGBL R10 K0 + 0x8C281525, // 000E GETMET R10 R10 K37 + 0x58300026, // 000F LDCONST R12 K38 0x7C280400, // 0010 CALL R10 2 0x782A0052, // 0011 JMPF R10 #0065 - 0x58280006, // 0012 LDCONST R10 K6 + 0x58280027, // 0012 LDCONST R10 K39 0x4C2C0000, // 0013 LDNIL R11 0x202C0C0B, // 0014 NE R11 R6 R11 0x782E0003, // 0015 JMPF R11 #001A @@ -590,7 +561,7 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x602C0008, // 001D GETGBL R11 G8 0x5C300E00, // 001E MOVE R12 R7 0x7C2C0200, // 001F CALL R11 1 - 0x002E0E0B, // 0020 ADD R11 K7 R11 + 0x002E500B, // 0020 ADD R11 K40 R11 0x0028140B, // 0021 ADD R10 R10 R11 0x4C2C0000, // 0022 LDNIL R11 0x202C100B, // 0023 NE R11 R8 R11 @@ -598,16 +569,16 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x602C0008, // 0025 GETGBL R11 G8 0x5C301000, // 0026 MOVE R12 R8 0x7C2C0200, // 0027 CALL R11 1 - 0x002E0E0B, // 0028 ADD R11 K7 R11 + 0x002E500B, // 0028 ADD R11 K40 R11 0x0028140B, // 0029 ADD R10 R10 R11 0x542E0027, // 002A LDINT R11 40 0x1C2C040B, // 002B EQ R11 R2 R11 0x782E0014, // 002C JMPF R11 #0042 - 0x1C2C0708, // 002D EQ R11 R3 K8 + 0x1C2C071D, // 002D EQ R11 R3 K29 0x782E0012, // 002E JMPF R11 #0042 - 0x882C0D09, // 002F GETMBR R11 R6 K9 + 0x882C0D29, // 002F GETMBR R11 R6 K41 0x60300018, // 0030 GETGBL R12 G24 - 0x5834000A, // 0031 LDCONST R13 K10 + 0x5834002A, // 0031 LDCONST R13 K42 0x543A0017, // 0032 LDINT R14 24 0x3C38160E, // 0033 SHR R14 R11 R14 0x543E00FE, // 0034 LDINT R15 255 @@ -624,49 +595,49 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x2C441611, // 003F AND R17 R11 R17 0x7C300A00, // 0040 CALL R12 5 0x5C281800, // 0041 MOVE R10 R12 - 0x1C2C0B0B, // 0042 EQ R11 R5 K11 + 0x1C2C0B06, // 0042 EQ R11 R5 K6 0x782E0001, // 0043 JMPF R11 #0046 - 0x582C000C, // 0044 LDCONST R11 K12 + 0x582C002B, // 0044 LDCONST R11 K43 0x70020004, // 0045 JMP #004B - 0x1C2C0B0D, // 0046 EQ R11 R5 K13 + 0x1C2C0B09, // 0046 EQ R11 R5 K9 0x782E0001, // 0047 JMPF R11 #004A - 0x582C000E, // 0048 LDCONST R11 K14 + 0x582C002C, // 0048 LDCONST R11 K44 0x70020000, // 0049 JMP #004B - 0x582C000F, // 004A LDCONST R11 K15 - 0xB8320000, // 004B GETNGBL R12 K0 - 0x8C301910, // 004C GETMET R12 R12 K16 + 0x582C002D, // 004A LDCONST R11 K45 + 0xB8323C00, // 004B GETNGBL R12 K30 + 0x8C30192E, // 004C GETMET R12 R12 K46 0x5C380400, // 004D MOVE R14 R2 0x5C3C0600, // 004E MOVE R15 R3 0x7C300600, // 004F CALL R12 3 0x4C340000, // 0050 LDNIL R13 0x2034180D, // 0051 NE R13 R12 R13 0x78360002, // 0052 JMPF R13 #0056 - 0x0036220C, // 0053 ADD R13 K17 R12 - 0x00341B12, // 0054 ADD R13 R13 K18 + 0x00365E0C, // 0053 ADD R13 K47 R12 + 0x00341B30, // 0054 ADD R13 R13 K48 0x70020000, // 0055 JMP #0057 - 0x58340006, // 0056 LDCONST R13 K6 + 0x58340027, // 0056 LDCONST R13 K39 0x5C301A00, // 0057 MOVE R12 R13 - 0xB8362600, // 0058 GETNGBL R13 K19 + 0xB8360200, // 0058 GETNGBL R13 K1 0x60380018, // 0059 GETGBL R14 G24 - 0x583C0014, // 005A LDCONST R15 K20 + 0x583C0031, // 005A LDCONST R15 K49 0x5C401600, // 005B MOVE R16 R11 - 0x88441315, // 005C GETMBR R17 R9 K21 - 0x88481316, // 005D GETMBR R18 R9 K22 - 0x884C1317, // 005E GETMBR R19 R9 K23 - 0x88501318, // 005F GETMBR R20 R9 K24 + 0x88441332, // 005C GETMBR R17 R9 K50 + 0x88481333, // 005D GETMBR R18 R9 K51 + 0x884C1334, // 005E GETMBR R19 R9 K52 + 0x88501335, // 005F GETMBR R20 R9 K53 0x5C541800, // 0060 MOVE R21 R12 0x5C581400, // 0061 MOVE R22 R10 0x7C381000, // 0062 CALL R14 8 - 0x583C000B, // 0063 LDCONST R15 K11 + 0x583C0006, // 0063 LDCONST R15 K6 0x7C340400, // 0064 CALL R13 2 - 0x8C280119, // 0065 GETMET R10 R0 K25 + 0x8C280136, // 0065 GETMET R10 R0 K54 0x5C301200, // 0066 MOVE R12 R9 0x7C280400, // 0067 CALL R10 2 - 0x8828011A, // 0068 GETMBR R10 R0 K26 - 0x8828151B, // 0069 GETMBR R10 R10 K27 - 0x8828151C, // 006A GETMBR R10 R10 K28 - 0x8828151D, // 006B GETMBR R10 R10 K29 - 0x8C28151E, // 006C GETMET R10 R10 K30 + 0x88280122, // 0068 GETMBR R10 R0 K34 + 0x88281537, // 0069 GETMBR R10 R10 K55 + 0x88281538, // 006A GETMBR R10 R10 K56 + 0x88281539, // 006B GETMBR R10 R10 K57 + 0x8C28153A, // 006C GETMET R10 R10 K58 0x5C301200, // 006D MOVE R12 R9 0x7C280400, // 006E CALL R10 2 0x80000000, // 006F RET 0 @@ -683,7 +654,7 @@ be_local_closure(class_Matter_EventHandler_compact, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -721,23 +692,19 @@ be_local_closure(class_Matter_EventHandler_compact, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(queue_debug), - /* K1 */ be_nested_str_weak(queue_info), - /* K2 */ be_nested_str_weak(queue_critical), - }), + &be_ktab_class_Matter_EventHandler, /* shared constants */ be_str_weak(compact), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x84040000, // 0000 CLOSURE R1 P0 0x5C080200, // 0001 MOVE R2 R1 - 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x880C0105, // 0002 GETMBR R3 R0 K5 0x7C080200, // 0003 CALL R2 1 0x5C080200, // 0004 MOVE R2 R1 - 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x880C0104, // 0005 GETMBR R3 R0 K4 0x7C080200, // 0006 CALL R2 1 0x5C080200, // 0007 MOVE R2 R1 - 0x880C0102, // 0008 GETMBR R3 R0 K2 + 0x880C0103, // 0008 GETMBR R3 R0 K3 0x7C080200, // 0009 CALL R2 1 0x80000000, // 000A RET 0 }) @@ -776,6 +743,40 @@ be_local_class(Matter_EventHandler, })), be_str_weak(Matter_EventHandler) ); +// compact class 'Matter_EventQueued' ktab size: 30, total: 43 (saved 104 bytes) +static const bvalue be_ktab_class_Matter_EventQueued[30] = { + /* K0 */ be_nested_str_weak(raw_tlv), + /* K1 */ be_nested_str_weak(eventreport2raw), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(event_id), + /* K5 */ be_nested_str_weak(is_urgent), + /* K6 */ be_nested_str_weak(priority), + /* K7 */ be_nested_str_weak(event_no), + /* K8 */ be_nested_str_weak(epoch_timestamp), + /* K9 */ be_nested_str_weak(data0), + /* K10 */ be_nested_str_weak(data1), + /* K11 */ be_nested_str_weak(data2), + /* K12 */ be_const_int(0), + /* K13 */ be_nested_str_weak(matter), + /* K14 */ be_nested_str_weak(EVENT_CRITICAL), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(rtc), + /* K17 */ be_nested_str_weak(utc), + /* K18 */ be_const_int(1700000000), + /* K19 */ be_nested_str_weak(config_time), + /* K20 */ be_nested_str_weak(add), + /* K21 */ be_const_int(1), + /* K22 */ be_const_int(2), + /* K23 */ be_const_int(1), + /* K24 */ be_nested_str_weak(eventpath2raw), + /* K25 */ be_nested_str_weak(low32), + /* K26 */ be_nested_str_weak(high32), + /* K27 */ be_nested_str_weak(tag_sub), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str_weak(tlv2raw), +}; + extern const bclass be_class_Matter_EventQueued; @@ -786,26 +787,13 @@ be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */ be_nested_proto( 14, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(raw_tlv), - /* K1 */ be_nested_str_weak(eventreport2raw), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(event_id), - /* K5 */ be_nested_str_weak(is_urgent), - /* K6 */ be_nested_str_weak(priority), - /* K7 */ be_nested_str_weak(event_no), - /* K8 */ be_nested_str_weak(epoch_timestamp), - /* K9 */ be_nested_str_weak(data0), - /* K10 */ be_nested_str_weak(data1), - /* K11 */ be_nested_str_weak(data2), - }), + &be_ktab_class_Matter_EventQueued, /* shared constants */ be_str_weak(to_raw_bytes), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ @@ -845,69 +833,50 @@ be_local_closure(class_Matter_EventQueued_init, /* name */ be_nested_proto( 13, /* nstack */ 10, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(event_no), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(event_id), - /* K4 */ be_nested_str_weak(is_urgent), - /* K5 */ be_nested_str_weak(priority), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(EVENT_CRITICAL), - /* K9 */ be_nested_str_weak(epoch_timestamp), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(rtc), - /* K12 */ be_nested_str_weak(utc), - /* K13 */ be_const_int(1700000000), - /* K14 */ be_nested_str_weak(config_time), - /* K15 */ be_nested_str_weak(data0), - /* K16 */ be_nested_str_weak(data1), - /* K17 */ be_nested_str_weak(data2), - }), + &be_ktab_class_Matter_EventQueued, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x90020604, // 0003 SETMBR R0 K3 R4 - 0x90020805, // 0004 SETMBR R0 K4 R5 - 0x90020A06, // 0005 SETMBR R0 K5 R6 - 0x88280105, // 0006 GETMBR R10 R0 K5 - 0x14281506, // 0007 LT R10 R10 K6 + 0x90020E01, // 0000 SETMBR R0 K7 R1 + 0x90020402, // 0001 SETMBR R0 K2 R2 + 0x90020603, // 0002 SETMBR R0 K3 R3 + 0x90020804, // 0003 SETMBR R0 K4 R4 + 0x90020A05, // 0004 SETMBR R0 K5 R5 + 0x90020C06, // 0005 SETMBR R0 K6 R6 + 0x88280106, // 0006 GETMBR R10 R0 K6 + 0x1428150C, // 0007 LT R10 R10 K12 0x782A0000, // 0008 JMPF R10 #000A - 0x90020B06, // 0009 SETMBR R0 K5 K6 - 0x88280105, // 000A GETMBR R10 R0 K5 - 0xB82E0E00, // 000B GETNGBL R11 K7 - 0x882C1708, // 000C GETMBR R11 R11 K8 + 0x90020D0C, // 0009 SETMBR R0 K6 K12 + 0x88280106, // 000A GETMBR R10 R0 K6 + 0xB82E1A00, // 000B GETNGBL R11 K13 + 0x882C170E, // 000C GETMBR R11 R11 K14 0x2428140B, // 000D GT R10 R10 R11 0x782A0002, // 000E JMPF R10 #0012 - 0xB82A0E00, // 000F GETNGBL R10 K7 - 0x88281508, // 0010 GETMBR R10 R10 K8 - 0x90020A0A, // 0011 SETMBR R0 K5 R10 - 0xB82A1400, // 0012 GETNGBL R10 K10 - 0x8C28150B, // 0013 GETMET R10 R10 K11 - 0x5830000C, // 0014 LDCONST R12 K12 + 0xB82A1A00, // 000F GETNGBL R10 K13 + 0x8828150E, // 0010 GETMBR R10 R10 K14 + 0x90020C0A, // 0011 SETMBR R0 K6 R10 + 0xB82A1E00, // 0012 GETNGBL R10 K15 + 0x8C281510, // 0013 GETMET R10 R10 K16 + 0x58300011, // 0014 LDCONST R12 K17 0x7C280400, // 0015 CALL R10 2 - 0x9002120A, // 0016 SETMBR R0 K9 R10 - 0x88280109, // 0017 GETMBR R10 R0 K9 - 0x1428150D, // 0018 LT R10 R10 K13 + 0x9002100A, // 0016 SETMBR R0 K8 R10 + 0x88280108, // 0017 GETMBR R10 R0 K8 + 0x14281512, // 0018 LT R10 R10 K18 0x782A0004, // 0019 JMPF R10 #001F - 0xB82A1400, // 001A GETNGBL R10 K10 - 0x8C28150B, // 001B GETMET R10 R10 K11 - 0x5830000E, // 001C LDCONST R12 K14 + 0xB82A1E00, // 001A GETNGBL R10 K15 + 0x8C281510, // 001B GETMET R10 R10 K16 + 0x58300013, // 001C LDCONST R12 K19 0x7C280400, // 001D CALL R10 2 - 0x9002120A, // 001E SETMBR R0 K9 R10 - 0x90021E07, // 001F SETMBR R0 K15 R7 - 0x90022008, // 0020 SETMBR R0 K16 R8 - 0x90022209, // 0021 SETMBR R0 K17 R9 + 0x9002100A, // 001E SETMBR R0 K8 R10 + 0x90021207, // 001F SETMBR R0 K9 R7 + 0x90021408, // 0020 SETMBR R0 K10 R8 + 0x90021609, // 0021 SETMBR R0 K11 R9 0x80000000, // 0022 RET 0 }) ) @@ -922,15 +891,13 @@ be_local_closure(class_Matter_EventQueued_compact, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(raw_tlv), - }), + &be_ktab_class_Matter_EventQueued, /* shared constants */ be_str_weak(compact), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ @@ -950,109 +917,105 @@ be_local_closure(class_Matter_EventQueued_eventpath2raw, /* name */ be_nested_proto( 10, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(2), - }), + &be_ktab_class_Matter_EventQueued, /* shared constants */ be_str_weak(eventpath2raw), &be_const_str_solidified, ( &(const binstruction[91]) { /* code */ - 0x8C180300, // 0000 GETMET R6 R1 K0 + 0x8C180314, // 0000 GETMET R6 R1 K20 0x542236FF, // 0001 LDINT R8 14080 0x5425FFFD, // 0002 LDINT R9 -2 0x7C180600, // 0003 CALL R6 3 0x541A00FE, // 0004 LDINT R6 255 0x18180406, // 0005 LE R6 R2 R6 0x781A0008, // 0006 JMPF R6 #0010 - 0x8C180300, // 0007 GETMET R6 R1 K0 + 0x8C180314, // 0007 GETMET R6 R1 K20 0x54222400, // 0008 LDINT R8 9217 0x5425FFFD, // 0009 LDINT R9 -2 0x7C180600, // 000A CALL R6 3 - 0x8C180300, // 000B GETMET R6 R1 K0 + 0x8C180314, // 000B GETMET R6 R1 K20 0x5C200400, // 000C MOVE R8 R2 - 0x58240001, // 000D LDCONST R9 K1 + 0x58240015, // 000D LDCONST R9 K21 0x7C180600, // 000E CALL R6 3 0x70020007, // 000F JMP #0018 - 0x8C180300, // 0010 GETMET R6 R1 K0 + 0x8C180314, // 0010 GETMET R6 R1 K20 0x54222500, // 0011 LDINT R8 9473 0x5425FFFD, // 0012 LDINT R9 -2 0x7C180600, // 0013 CALL R6 3 - 0x8C180300, // 0014 GETMET R6 R1 K0 + 0x8C180314, // 0014 GETMET R6 R1 K20 0x5C200400, // 0015 MOVE R8 R2 - 0x58240002, // 0016 LDCONST R9 K2 + 0x58240016, // 0016 LDCONST R9 K22 0x7C180600, // 0017 CALL R6 3 0x541A00FE, // 0018 LDINT R6 255 0x18180606, // 0019 LE R6 R3 R6 0x781A0008, // 001A JMPF R6 #0024 - 0x8C180300, // 001B GETMET R6 R1 K0 + 0x8C180314, // 001B GETMET R6 R1 K20 0x54222401, // 001C LDINT R8 9218 0x5425FFFD, // 001D LDINT R9 -2 0x7C180600, // 001E CALL R6 3 - 0x8C180300, // 001F GETMET R6 R1 K0 + 0x8C180314, // 001F GETMET R6 R1 K20 0x5C200600, // 0020 MOVE R8 R3 - 0x58240001, // 0021 LDCONST R9 K1 + 0x58240015, // 0021 LDCONST R9 K21 0x7C180600, // 0022 CALL R6 3 0x70020013, // 0023 JMP #0038 0x541AFFFE, // 0024 LDINT R6 65535 0x18180606, // 0025 LE R6 R3 R6 0x781A0008, // 0026 JMPF R6 #0030 - 0x8C180300, // 0027 GETMET R6 R1 K0 + 0x8C180314, // 0027 GETMET R6 R1 K20 0x54222501, // 0028 LDINT R8 9474 0x5425FFFD, // 0029 LDINT R9 -2 0x7C180600, // 002A CALL R6 3 - 0x8C180300, // 002B GETMET R6 R1 K0 + 0x8C180314, // 002B GETMET R6 R1 K20 0x5C200600, // 002C MOVE R8 R3 - 0x58240002, // 002D LDCONST R9 K2 + 0x58240016, // 002D LDCONST R9 K22 0x7C180600, // 002E CALL R6 3 0x70020007, // 002F JMP #0038 - 0x8C180300, // 0030 GETMET R6 R1 K0 + 0x8C180314, // 0030 GETMET R6 R1 K20 0x54222601, // 0031 LDINT R8 9730 0x5425FFFD, // 0032 LDINT R9 -2 0x7C180600, // 0033 CALL R6 3 - 0x8C180300, // 0034 GETMET R6 R1 K0 + 0x8C180314, // 0034 GETMET R6 R1 K20 0x5C200600, // 0035 MOVE R8 R3 0x54260003, // 0036 LDINT R9 4 0x7C180600, // 0037 CALL R6 3 0x541A00FE, // 0038 LDINT R6 255 0x18180806, // 0039 LE R6 R4 R6 0x781A0008, // 003A JMPF R6 #0044 - 0x8C180300, // 003B GETMET R6 R1 K0 + 0x8C180314, // 003B GETMET R6 R1 K20 0x54222402, // 003C LDINT R8 9219 0x5425FFFD, // 003D LDINT R9 -2 0x7C180600, // 003E CALL R6 3 - 0x8C180300, // 003F GETMET R6 R1 K0 + 0x8C180314, // 003F GETMET R6 R1 K20 0x5C200800, // 0040 MOVE R8 R4 - 0x58240001, // 0041 LDCONST R9 K1 + 0x58240015, // 0041 LDCONST R9 K21 0x7C180600, // 0042 CALL R6 3 0x70020007, // 0043 JMP #004C - 0x8C180300, // 0044 GETMET R6 R1 K0 + 0x8C180314, // 0044 GETMET R6 R1 K20 0x54222502, // 0045 LDINT R8 9475 0x5425FFFD, // 0046 LDINT R9 -2 0x7C180600, // 0047 CALL R6 3 - 0x8C180300, // 0048 GETMET R6 R1 K0 + 0x8C180314, // 0048 GETMET R6 R1 K20 0x5C200800, // 0049 MOVE R8 R4 - 0x58240002, // 004A LDCONST R9 K2 + 0x58240016, // 004A LDCONST R9 K22 0x7C180600, // 004B CALL R6 3 0x78160004, // 004C JMPF R5 #0052 - 0x8C180300, // 004D GETMET R6 R1 K0 + 0x8C180314, // 004D GETMET R6 R1 K20 0x54222903, // 004E LDINT R8 10500 0x5425FFFD, // 004F LDINT R9 -2 0x7C180600, // 0050 CALL R6 3 0x70020003, // 0051 JMP #0056 - 0x8C180300, // 0052 GETMET R6 R1 K0 + 0x8C180314, // 0052 GETMET R6 R1 K20 0x54222803, // 0053 LDINT R8 10244 0x5425FFFD, // 0054 LDINT R9 -2 0x7C180600, // 0055 CALL R6 3 - 0x8C180300, // 0056 GETMET R6 R1 K0 + 0x8C180314, // 0056 GETMET R6 R1 K20 0x54220017, // 0057 LDINT R8 24 - 0x58240001, // 0058 LDCONST R9 K1 + 0x58240015, // 0058 LDCONST R9 K21 0x7C180600, // 0059 CALL R6 3 0x80000000, // 005A RET 0 }) @@ -1068,107 +1031,97 @@ be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ be_nested_proto( 19, /* nstack */ 12, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(eventpath2raw), - /* K3 */ be_nested_str_weak(low32), - /* K4 */ be_nested_str_weak(high32), - /* K5 */ be_nested_str_weak(tag_sub), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(tlv2raw), - /* K8 */ be_const_int(2), - }), + &be_ktab_class_Matter_EventQueued, /* shared constants */ be_str_weak(eventreport2raw), &be_const_str_solidified, ( &(const binstruction[83]) { /* code */ - 0x8C300300, // 0000 GETMET R12 R1 K0 + 0x8C300314, // 0000 GETMET R12 R1 K20 0x543A0014, // 0001 LDINT R14 21 - 0x583C0001, // 0002 LDCONST R15 K1 + 0x583C0017, // 0002 LDCONST R15 K23 0x7C300600, // 0003 CALL R12 3 - 0x8C300300, // 0004 GETMET R12 R1 K0 + 0x8C300314, // 0004 GETMET R12 R1 K20 0x543A3500, // 0005 LDINT R14 13569 0x543DFFFD, // 0006 LDINT R15 -2 0x7C300600, // 0007 CALL R12 3 - 0x8C300102, // 0008 GETMET R12 R0 K2 + 0x8C300118, // 0008 GETMET R12 R0 K24 0x5C380200, // 0009 MOVE R14 R1 0x5C3C0400, // 000A MOVE R15 R2 0x5C400600, // 000B MOVE R16 R3 0x5C440800, // 000C MOVE R17 R4 0x5C480A00, // 000D MOVE R18 R5 0x7C300C00, // 000E CALL R12 6 - 0x8C300300, // 000F GETMET R12 R1 K0 + 0x8C300314, // 000F GETMET R12 R1 K20 0x543A2700, // 0010 LDINT R14 9985 0x543DFFFD, // 0011 LDINT R15 -2 0x7C300600, // 0012 CALL R12 3 - 0x8C300300, // 0013 GETMET R12 R1 K0 - 0x8C380F03, // 0014 GETMET R14 R7 K3 + 0x8C300314, // 0013 GETMET R12 R1 K20 + 0x8C380F19, // 0014 GETMET R14 R7 K25 0x7C380200, // 0015 CALL R14 1 0x543E0003, // 0016 LDINT R15 4 0x7C300600, // 0017 CALL R12 3 - 0x8C300300, // 0018 GETMET R12 R1 K0 - 0x8C380F04, // 0019 GETMET R14 R7 K4 + 0x8C300314, // 0018 GETMET R12 R1 K20 + 0x8C380F1A, // 0019 GETMET R14 R7 K26 0x7C380200, // 001A CALL R14 1 0x543E0003, // 001B LDINT R15 4 0x7C300600, // 001C CALL R12 3 - 0x8C300300, // 001D GETMET R12 R1 K0 + 0x8C300314, // 001D GETMET R12 R1 K20 0x543A2401, // 001E LDINT R14 9218 0x543DFFFD, // 001F LDINT R15 -2 0x7C300600, // 0020 CALL R12 3 - 0x8C300300, // 0021 GETMET R12 R1 K0 + 0x8C300314, // 0021 GETMET R12 R1 K20 0x5C380C00, // 0022 MOVE R14 R6 - 0x583C0001, // 0023 LDCONST R15 K1 + 0x583C0017, // 0023 LDCONST R15 K23 0x7C300600, // 0024 CALL R12 3 - 0x8C300300, // 0025 GETMET R12 R1 K0 + 0x8C300314, // 0025 GETMET R12 R1 K20 0x543A2602, // 0026 LDINT R14 9731 0x543DFFFD, // 0027 LDINT R15 -2 0x7C300600, // 0028 CALL R12 3 - 0x8C300300, // 0029 GETMET R12 R1 K0 + 0x8C300314, // 0029 GETMET R12 R1 K20 0x5C381000, // 002A MOVE R14 R8 0x543E0003, // 002B LDINT R15 4 0x7C300600, // 002C CALL R12 3 - 0x8C300300, // 002D GETMET R12 R1 K0 + 0x8C300314, // 002D GETMET R12 R1 K20 0x543A3506, // 002E LDINT R14 13575 0x543DFFFD, // 002F LDINT R15 -2 0x7C300600, // 0030 CALL R12 3 0x4C300000, // 0031 LDNIL R12 0x2030120C, // 0032 NE R12 R9 R12 0x78320003, // 0033 JMPF R12 #0038 - 0x90260B06, // 0034 SETMBR R9 K5 K6 - 0x8C301307, // 0035 GETMET R12 R9 K7 + 0x9026371C, // 0034 SETMBR R9 K27 K28 + 0x8C30131D, // 0035 GETMET R12 R9 K29 0x5C380200, // 0036 MOVE R14 R1 0x7C300400, // 0037 CALL R12 2 0x4C300000, // 0038 LDNIL R12 0x2030140C, // 0039 NE R12 R10 R12 0x78320003, // 003A JMPF R12 #003F - 0x902A0B01, // 003B SETMBR R10 K5 K1 - 0x8C301507, // 003C GETMET R12 R10 K7 + 0x902A3717, // 003B SETMBR R10 K27 K23 + 0x8C30151D, // 003C GETMET R12 R10 K29 0x5C380200, // 003D MOVE R14 R1 0x7C300400, // 003E CALL R12 2 0x4C300000, // 003F LDNIL R12 0x2030160C, // 0040 NE R12 R11 R12 0x78320003, // 0041 JMPF R12 #0046 - 0x902E0B08, // 0042 SETMBR R11 K5 K8 - 0x8C301707, // 0043 GETMET R12 R11 K7 + 0x902E3716, // 0042 SETMBR R11 K27 K22 + 0x8C30171D, // 0043 GETMET R12 R11 K29 0x5C380200, // 0044 MOVE R14 R1 0x7C300400, // 0045 CALL R12 2 - 0x8C300300, // 0046 GETMET R12 R1 K0 + 0x8C300314, // 0046 GETMET R12 R1 K20 0x543A0017, // 0047 LDINT R14 24 - 0x583C0001, // 0048 LDCONST R15 K1 + 0x583C0017, // 0048 LDCONST R15 K23 0x7C300600, // 0049 CALL R12 3 - 0x8C300300, // 004A GETMET R12 R1 K0 + 0x8C300314, // 004A GETMET R12 R1 K20 0x543A0017, // 004B LDINT R14 24 - 0x583C0001, // 004C LDCONST R15 K1 + 0x583C0017, // 004C LDCONST R15 K23 0x7C300600, // 004D CALL R12 3 - 0x8C300300, // 004E GETMET R12 R1 K0 + 0x8C300314, // 004E GETMET R12 R1 K20 0x543A0017, // 004F LDINT R14 24 - 0x583C0001, // 0050 LDCONST R15 K1 + 0x583C0017, // 0050 LDCONST R15 K23 0x7C300600, // 0051 CALL R12 3 0x80000000, // 0052 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h index 7fbe56719..42724514c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h @@ -3,6 +3,16 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Expirable' ktab size: 6, total: 13 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Expirable[6] = { + /* K0 */ be_nested_str_weak(_expiration), + /* K1 */ be_nested_str_weak(_persist), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(rtc_utc), + /* K4 */ be_nested_str_weak(_list), + /* K5 */ be_nested_str_weak(set_expire_time), +}; + extern const bclass be_class_Matter_Expirable; @@ -13,13 +23,13 @@ be_local_closure(class_Matter_Expirable_before_remove, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(before_remove), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -37,15 +47,13 @@ be_local_closure(class_Matter_Expirable_set_no_expiration, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_expiration), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(set_no_expiration), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ @@ -65,20 +73,18 @@ be_local_closure(class_Matter_Expirable_init, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_persist), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90020201, // 0001 SETMBR R0 K1 R1 0x80000000, // 0002 RET 0 }) ) @@ -93,15 +99,13 @@ be_local_closure(class_Matter_Expirable_set_expire_time, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_expiration), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(set_expire_time), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -123,32 +127,28 @@ be_local_closure(class_Matter_Expirable_has_expired, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(rtc_utc), - /* K2 */ be_nested_str_weak(_expiration), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(has_expired), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0003, // 0002 JMPF R2 #0007 - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C080501, // 0004 GETMET R2 R2 K1 + 0xB80A0400, // 0003 GETNGBL R2 K2 + 0x8C080503, // 0004 GETMET R2 R2 K3 0x7C080200, // 0005 CALL R2 1 0x5C040400, // 0006 MOVE R1 R2 - 0x88080102, // 0007 GETMBR R2 R0 K2 + 0x88080100, // 0007 GETMBR R2 R0 K0 0x4C0C0000, // 0008 LDNIL R3 0x20080403, // 0009 NE R2 R2 R3 0x780A0002, // 000A JMPF R2 #000E - 0x88080102, // 000B GETMBR R2 R0 K2 + 0x88080100, // 000B GETMBR R2 R0 K0 0x28080202, // 000C GE R2 R1 R2 0x80040400, // 000D RET 1 R2 0x50080000, // 000E LDBOOL R2 0 0 @@ -166,19 +166,17 @@ be_local_closure(class_Matter_Expirable_set_parent_list, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_list), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(set_parent_list), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020801, // 0000 SETMBR R0 K4 R1 0x80000000, // 0001 RET 0 }) ) @@ -193,13 +191,13 @@ be_local_closure(class_Matter_Expirable_hydrate_post, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(hydrate_post), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -217,17 +215,13 @@ be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(rtc_utc), - /* K2 */ be_nested_str_weak(set_expire_time), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(set_expire_in_seconds), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -238,11 +232,11 @@ be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */ 0x4C0C0000, // 0004 LDNIL R3 0x1C0C0403, // 0005 EQ R3 R2 R3 0x780E0003, // 0006 JMPF R3 #000B - 0xB80E0000, // 0007 GETNGBL R3 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 + 0xB80E0400, // 0007 GETNGBL R3 K2 + 0x8C0C0703, // 0008 GETMET R3 R3 K3 0x7C0C0200, // 0009 CALL R3 1 0x5C080600, // 000A MOVE R2 R3 - 0x8C0C0102, // 000B GETMET R3 R0 K2 + 0x8C0C0105, // 000B GETMET R3 R0 K5 0x00140401, // 000C ADD R5 R2 R1 0x7C0C0400, // 000D CALL R3 2 0x80000000, // 000E RET 0 @@ -259,19 +253,17 @@ be_local_closure(class_Matter_Expirable_get_parent_list, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_list), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(get_parent_list), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040104, // 0000 GETMBR R1 R0 K4 0x80040200, // 0001 RET 1 R1 }) ) @@ -286,19 +278,17 @@ be_local_closure(class_Matter_Expirable_does_persist, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_persist), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(does_persist), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040101, // 0000 GETMBR R1 R0 K1 0x80040200, // 0001 RET 1 R1 }) ) @@ -313,22 +303,20 @@ be_local_closure(class_Matter_Expirable_set_persist, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_persist), - }), + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(set_persist), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x60080017, // 0000 GETGBL R2 G23 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x90020202, // 0003 SETMBR R0 K1 R2 0x80000000, // 0004 RET 0 }) ) @@ -343,13 +331,13 @@ be_local_closure(class_Matter_Expirable_persist_pre, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(persist_pre), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -367,13 +355,13 @@ be_local_closure(class_Matter_Expirable_persist_post, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Expirable, /* shared constants */ be_str_weak(persist_post), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -411,6 +399,27 @@ be_local_class(Matter_Expirable, })), be_str_weak(Matter_Expirable) ); +// compact class 'Matter_Expirable_list' ktab size: 17, total: 25 (saved 64 bytes) +static const bvalue be_ktab_class_Matter_Expirable_list[17] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(_persist), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(before_remove), + /* K4 */ be_nested_str_weak(remove), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(Expirable), + /* K7 */ be_nested_str_weak(type_error), + /* K8 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27), + /* K9 */ be_nested_str_weak(set_parent_list), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(remove_expired), + /* K12 */ be_const_int(0), + /* K13 */ be_nested_str_weak(has_expired), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(iter), + /* K16 */ be_nested_str_weak(setitem), +}; + extern const bclass be_class_Matter_Expirable_list; @@ -421,17 +430,13 @@ be_local_closure(class_Matter_Expirable_list_count_persistables, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(_persist), - /* K2 */ be_const_int(1), - }), + &be_ktab_class_Matter_Expirable_list, /* shared constants */ be_str_weak(count_persistables), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ @@ -462,17 +467,13 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(before_remove), - /* K2 */ be_nested_str_weak(remove), - }), + &be_ktab_class_Matter_Expirable_list, /* shared constants */ be_str_weak(remove), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ @@ -487,12 +488,12 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ 0x14080202, // 0008 LT R2 R1 R2 0x780A0002, // 0009 JMPF R2 #000D 0x94080001, // 000A GETIDX R2 R0 R1 - 0x8C080501, // 000B GETMET R2 R2 K1 + 0x8C080503, // 000B GETMET R2 R2 K3 0x7C080200, // 000C CALL R2 1 0x60080003, // 000D GETGBL R2 G3 0x5C0C0000, // 000E MOVE R3 R0 0x7C080200, // 000F CALL R2 1 - 0x8C080502, // 0010 GETMET R2 R2 K2 + 0x8C080504, // 0010 GETMET R2 R2 K4 0x5C100200, // 0011 MOVE R4 R1 0x7C080400, // 0012 CALL R2 2 0x80040400, // 0013 RET 1 R2 @@ -510,37 +511,30 @@ be_local_closure(class_Matter_Expirable_list_push, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Expirable), - /* K2 */ be_nested_str_weak(type_error), - /* K3 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27), - /* K4 */ be_nested_str_weak(set_parent_list), - /* K5 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_Expirable_list, /* shared constants */ be_str_weak(push), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ 0x6008000F, // 0000 GETGBL R2 G15 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8120000, // 0002 GETNGBL R4 K0 - 0x88100901, // 0003 GETMBR R4 R4 K1 + 0xB8120A00, // 0002 GETNGBL R4 K5 + 0x88100906, // 0003 GETMBR R4 R4 K6 0x7C080400, // 0004 CALL R2 2 0x740A0000, // 0005 JMPT R2 #0007 - 0xB0060503, // 0006 RAISE 1 K2 K3 - 0x8C080304, // 0007 GETMET R2 R1 K4 + 0xB0060F08, // 0006 RAISE 1 K7 K8 + 0x8C080309, // 0007 GETMET R2 R1 K9 0x5C100000, // 0008 MOVE R4 R0 0x7C080400, // 0009 CALL R2 2 0x60080003, // 000A GETGBL R2 G3 0x5C0C0000, // 000B MOVE R3 R0 0x7C080200, // 000C CALL R2 1 - 0x8C080505, // 000D GETMET R2 R2 K5 + 0x8C08050A, // 000D GETMET R2 R2 K10 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80040400, // 0010 RET 1 R2 @@ -557,19 +551,17 @@ be_local_closure(class_Matter_Expirable_list_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_expired), - }), + &be_ktab_class_Matter_Expirable_list, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010B, // 0000 GETMET R1 R0 K11 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -585,42 +577,36 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(has_expired), - /* K2 */ be_nested_str_weak(_persist), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_Expirable_list, /* shared constants */ be_str_weak(remove_expired), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0x50040000, // 0000 LDBOOL R1 0 0 - 0x58080000, // 0001 LDCONST R2 K0 + 0x5808000C, // 0001 LDCONST R2 K12 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 0x140C0403, // 0005 LT R3 R2 R3 0x780E000D, // 0006 JMPF R3 #0015 0x940C0002, // 0007 GETIDX R3 R0 R2 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 + 0x8C0C070D, // 0008 GETMET R3 R3 K13 0x7C0C0200, // 0009 CALL R3 1 0x780E0007, // 000A JMPF R3 #0013 0x940C0002, // 000B GETIDX R3 R0 R2 - 0x880C0702, // 000C GETMBR R3 R3 K2 + 0x880C0701, // 000C GETMBR R3 R3 K1 0x780E0000, // 000D JMPF R3 #000F 0x50040200, // 000E LDBOOL R1 1 0 - 0x8C0C0103, // 000F GETMET R3 R0 K3 + 0x8C0C0104, // 000F GETMET R3 R0 K4 0x5C140400, // 0010 MOVE R5 R2 0x7C0C0400, // 0011 CALL R3 2 0x70020000, // 0012 JMP #0014 - 0x00080504, // 0013 ADD R2 R2 K4 + 0x0008050E, // 0013 ADD R2 R2 K14 0x7001FFEC, // 0014 JMP #0002 0x80040200, // 0015 RET 1 R1 }) @@ -636,7 +622,7 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -671,13 +657,11 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(iter), - }), + &be_ktab_class_Matter_Expirable_list, /* shared constants */ be_str_weak(persistables), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010F, // 0000 GETMET R1 R0 K15 0x7C040200, // 0001 CALL R1 1 0x84080000, // 0002 CLOSURE R2 P0 0xA0000000, // 0003 CLOSE R0 @@ -695,37 +679,30 @@ be_local_closure(class_Matter_Expirable_list_setitem, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Expirable), - /* K2 */ be_nested_str_weak(type_error), - /* K3 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27), - /* K4 */ be_nested_str_weak(set_parent_list), - /* K5 */ be_nested_str_weak(setitem), - }), + &be_ktab_class_Matter_Expirable_list, /* shared constants */ be_str_weak(setitem), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x600C000F, // 0000 GETGBL R3 G15 0x5C100400, // 0001 MOVE R4 R2 - 0xB8160000, // 0002 GETNGBL R5 K0 - 0x88140B01, // 0003 GETMBR R5 R5 K1 + 0xB8160A00, // 0002 GETNGBL R5 K5 + 0x88140B06, // 0003 GETMBR R5 R5 K6 0x7C0C0400, // 0004 CALL R3 2 0x740E0000, // 0005 JMPT R3 #0007 - 0xB0060503, // 0006 RAISE 1 K2 K3 - 0x8C0C0504, // 0007 GETMET R3 R2 K4 + 0xB0060F08, // 0006 RAISE 1 K7 K8 + 0x8C0C0509, // 0007 GETMET R3 R2 K9 0x5C140000, // 0008 MOVE R5 R0 0x7C0C0400, // 0009 CALL R3 2 0x600C0003, // 000A GETGBL R3 G3 0x5C100000, // 000B MOVE R4 R0 0x7C0C0200, // 000C CALL R3 1 - 0x8C0C0705, // 000D GETMET R3 R3 K5 + 0x8C0C0710, // 000D GETMET R3 R3 K16 0x5C140200, // 000E MOVE R5 R1 0x5C180400, // 000F MOVE R6 R2 0x7C0C0600, // 0010 CALL R3 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h index 5c0b174c2..60fdff552 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h @@ -3,6 +3,123 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Matter_Fabric; +// compact class 'Matter_Fabric' ktab size: 112, total: 212 (saved 800 bytes) +static const bvalue be_ktab_class_Matter_Fabric[112] = { + /* K0 */ be_nested_str_weak(icac), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), + /* K3 */ be_nested_str_weak(get_fabric_id), + /* K4 */ be_nested_str_weak(copy), + /* K5 */ be_nested_str_weak(reverse), + /* K6 */ be_nested_str_weak(tohex), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(no_private_key), + /* K9 */ be_nested_str_weak(fabric_compressed), + /* K10 */ be_nested_str_weak(fabric_id), + /* K11 */ be_nested_str_weak(admin_subject), + /* K12 */ be_nested_str_weak(admin_vendor), + /* K13 */ be_nested_str_weak(noc), + /* K14 */ be_const_class(be_class_Matter_Fabric), + /* K15 */ be_nested_str_weak(string), + /* K16 */ be_nested_str_weak(introspect), + /* K17 */ be_nested_str_weak(matter), + /* K18 */ be_nested_str_weak(Fabric), + /* K19 */ be_nested_str_weak(keys), + /* K20 */ be_const_int(0), + /* K21 */ be_nested_str_weak(_), + /* K22 */ be_nested_str_weak(find), + /* K23 */ be_nested_str_weak(0x), + /* K24 */ be_nested_str_weak(set), + /* K25 */ be_nested_str_weak(fromhex), + /* K26 */ be_const_int(2), + /* K27 */ be_const_int(2147483647), + /* K28 */ be_nested_str_weak(_X24_X24), + /* K29 */ be_nested_str_weak(fromb64), + /* K30 */ be_nested_str_weak(stop_iteration), + /* K31 */ be_nested_str_weak(hydrate_post), + /* K32 */ be_nested_str_weak(root_ca_certificate), + /* K33 */ be_nested_str_weak(json), + /* K34 */ be_nested_str_weak(persist_pre), + /* K35 */ be_nested_str_weak(members), + /* K36 */ be_nested_str_weak(get), + /* K37 */ be_nested_str_weak(function), + /* K38 */ be_const_int(0), + /* K39 */ be_nested_str_weak(push), + /* K40 */ be_nested_str_weak(sort), + /* K41 */ be_nested_str_weak(tob64), + /* K42 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K43 */ be_nested_str_weak(dump), + /* K44 */ be_nested_str_weak(_sessions), + /* K45 */ be_nested_str_weak(persistables), + /* K46 */ be_nested_str_weak(tojson), + /* K47 */ be_nested_str_weak(_X5B), + /* K48 */ be_nested_str_weak(concat), + /* K49 */ be_nested_str_weak(_X2C), + /* K50 */ be_nested_str_weak(_X5D), + /* K51 */ be_nested_str_weak(_X22_sessions_X22_X3A), + /* K52 */ be_nested_str_weak(persist_post), + /* K53 */ be_nested_str_weak(_X7B), + /* K54 */ be_nested_str_weak(_X7D), + /* K55 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K56 */ be_nested_str_weak(reset), + /* K57 */ be_nested_str_weak(counter_group_data_snd), + /* K58 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K59 */ be_nested_str_weak(counter_group_ctrl_snd), + /* K60 */ be_nested_str_weak(val), + /* K61 */ be_nested_str_weak(ipk_epoch_key), + /* K62 */ be_nested_str_weak(device_id), + /* K63 */ be_nested_str_weak(fabric_parent), + /* K64 */ be_nested_str_weak(get_fabric_index), + /* K65 */ be_nested_str_weak(deleted), + /* K66 */ be_nested_str_weak(int64), + /* K67 */ be_nested_str_weak(frombytes), + /* K68 */ be_nested_str_weak(get_old_recent_session), + /* K69 */ be_nested_str_weak(set_no_expiration), + /* K70 */ be_nested_str_weak(set_persist), + /* K71 */ be_nested_str_weak(assign_fabric_index), + /* K72 */ be_nested_str_weak(_store), + /* K73 */ be_nested_str_weak(add_fabric), + /* K74 */ be_nested_str_weak(next), + /* K75 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), + /* K76 */ be_nested_str_weak(Counter), + /* K77 */ be_nested_str_weak(is_greater), + /* K78 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K79 */ be_nested_str_weak(does_persist), + /* K80 */ be_nested_str_weak(save), + /* K81 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s), + /* K82 */ be_nested_str_weak(get_admin_vendor_name), + /* K83 */ be_nested_str_weak(TLV), + /* K84 */ be_nested_str_weak(parse), + /* K85 */ be_nested_str_weak(findsubval), + /* K86 */ be_nested_str_weak(fabric_index), + /* K87 */ be_nested_str_weak(write), + /* K88 */ be_nested_str_weak(_X2C_X22_sessions_X22_X3A_X5B), + /* K89 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i), + /* K90 */ be_nested_str_weak(set_expire_in_seconds), + /* K91 */ be_nested_str_weak(set_fabric_index), + /* K92 */ be_nested_str_weak(next_fabric_idx), + /* K93 */ be_nested_str_weak(last_used), + /* K94 */ be_const_int(1), + /* K95 */ be_nested_str_weak(crypto), + /* K96 */ be_nested_str_weak(Expirable_list), + /* K97 */ be_nested_str_weak(fabric_label), + /* K98 */ be_nested_str_weak(), + /* K99 */ be_nested_str_weak(created), + /* K100 */ be_nested_str_weak(tasmota), + /* K101 */ be_nested_str_weak(rtc_utc), + /* K102 */ be_nested_str_weak(_MAX_CASE), + /* K103 */ be_nested_str_weak(get_oldest_session), + /* K104 */ be_nested_str_weak(remove), + /* K105 */ be_nested_str_weak(remove_session), + /* K106 */ be_nested_str_weak(HKDF_SHA256), + /* K107 */ be_nested_str_weak(fromstring), + /* K108 */ be_nested_str_weak(_GROUP_KEY), + /* K109 */ be_nested_str_weak(derive), + /* K110 */ be_nested_str_weak(get_vendor_name), + /* K111 */ be_nested_str_weak(0x_X2504X), +}; + extern const bclass be_class_Matter_Fabric; @@ -13,15 +130,13 @@ be_local_closure(class_Matter_Fabric_get_icac, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(icac), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_icac), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -40,37 +155,29 @@ be_local_closure(class_Matter_Fabric_before_remove, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), - /* K2 */ be_nested_str_weak(get_fabric_id), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(reverse), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_const_int(3), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(before_remove), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 + 0xB8060200, // 0000 GETNGBL R1 K1 0x60080018, // 0001 GETGBL R2 G24 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x8C100102, // 0003 GETMET R4 R0 K2 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x8C100103, // 0003 GETMET R4 R0 K3 0x7C100200, // 0004 CALL R4 1 - 0x8C100903, // 0005 GETMET R4 R4 K3 + 0x8C100904, // 0005 GETMET R4 R4 K4 0x7C100200, // 0006 CALL R4 1 - 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x8C100905, // 0007 GETMET R4 R4 K5 0x7C100200, // 0008 CALL R4 1 - 0x8C100905, // 0009 GETMET R4 R4 K5 + 0x8C100906, // 0009 GETMET R4 R4 K6 0x7C100200, // 000A CALL R4 1 0x7C080400, // 000B CALL R2 2 - 0x580C0006, // 000C LDCONST R3 K6 + 0x580C0007, // 000C LDCONST R3 K7 0x7C040400, // 000D CALL R1 2 0x80000000, // 000E RET 0 }) @@ -86,19 +193,17 @@ be_local_closure(class_Matter_Fabric_get_pk, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(no_private_key), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_pk), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040108, // 0000 GETMBR R1 R0 K8 0x80040200, // 0001 RET 1 R1 }) ) @@ -113,19 +218,17 @@ be_local_closure(class_Matter_Fabric_get_fabric_compressed, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_compressed), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_fabric_compressed), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x80040200, // 0001 RET 1 R1 }) ) @@ -140,19 +243,17 @@ be_local_closure(class_Matter_Fabric_get_fabric_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_id), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_fabric_id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010A, // 0000 GETMBR R1 R0 K10 0x80040200, // 0001 RET 1 R1 }) ) @@ -167,21 +268,18 @@ be_local_closure(class_Matter_Fabric_set_admin_subject_vendor, /* name */ be_nested_proto( 3, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(admin_subject), - /* K1 */ be_nested_str_weak(admin_vendor), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(set_admin_subject_vendor), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90021601, // 0000 SETMBR R0 K11 R1 + 0x90021802, // 0001 SETMBR R0 K12 R2 0x80000000, // 0002 RET 0 }) ) @@ -196,19 +294,17 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(admin_vendor), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_admin_vendor), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010C, // 0000 GETMBR R1 R0 K12 0x80040200, // 0001 RET 1 R1 }) ) @@ -223,19 +319,17 @@ be_local_closure(class_Matter_Fabric_get_noc, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(noc), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_noc), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010D, // 0000 GETMBR R1 R0 K13 0x80040200, // 0001 RET 1 R1 }) ) @@ -250,109 +344,90 @@ be_local_closure(class_Matter_Fabric_fromjson, /* name */ be_nested_proto( 16, /* nstack */ 2, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Fabric), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Fabric), - /* K5 */ be_nested_str_weak(keys), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(_), - /* K8 */ be_nested_str_weak(find), - /* K9 */ be_nested_str_weak(0x), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_nested_str_weak(fromhex), - /* K12 */ be_const_int(2), - /* K13 */ be_const_int(2147483647), - /* K14 */ be_nested_str_weak(_X24_X24), - /* K15 */ be_nested_str_weak(fromb64), - /* K16 */ be_nested_str_weak(stop_iteration), - /* K17 */ be_nested_str_weak(hydrate_post), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(fromjson), &be_const_str_solidified, ( &(const binstruction[76]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0xA4120400, // 0002 IMPORT R4 K2 - 0xB8160600, // 0003 GETNGBL R5 K3 - 0x8C140B04, // 0004 GETMET R5 R5 K4 + 0x5808000E, // 0000 LDCONST R2 K14 + 0xA40E1E00, // 0001 IMPORT R3 K15 + 0xA4122000, // 0002 IMPORT R4 K16 + 0xB8162200, // 0003 GETNGBL R5 K17 + 0x8C140B12, // 0004 GETMET R5 R5 K18 0x5C1C0000, // 0005 MOVE R7 R0 0x7C140400, // 0006 CALL R5 2 0x60180010, // 0007 GETGBL R6 G16 - 0x8C1C0305, // 0008 GETMET R7 R1 K5 + 0x8C1C0313, // 0008 GETMET R7 R1 K19 0x7C1C0200, // 0009 CALL R7 1 0x7C180200, // 000A CALL R6 1 0xA8020039, // 000B EXBLK 0 #0046 0x5C1C0C00, // 000C MOVE R7 R6 0x7C1C0000, // 000D CALL R7 0 - 0x94200F06, // 000E GETIDX R8 R7 K6 - 0x1C201107, // 000F EQ R8 R8 K7 + 0x94200F14, // 000E GETIDX R8 R7 K20 + 0x1C201115, // 000F EQ R8 R8 K21 0x78220000, // 0010 JMPF R8 #0012 0x7001FFF9, // 0011 JMP #000C 0x94200207, // 0012 GETIDX R8 R1 R7 0x60240004, // 0013 GETGBL R9 G4 0x5C281000, // 0014 MOVE R10 R8 0x7C240200, // 0015 CALL R9 1 - 0x1C241301, // 0016 EQ R9 R9 K1 + 0x1C24130F, // 0016 EQ R9 R9 K15 0x78260027, // 0017 JMPF R9 #0040 - 0x8C240708, // 0018 GETMET R9 R3 K8 + 0x8C240716, // 0018 GETMET R9 R3 K22 0x5C2C1000, // 0019 MOVE R11 R8 - 0x58300009, // 001A LDCONST R12 K9 + 0x58300017, // 001A LDCONST R12 K23 0x7C240600, // 001B CALL R9 3 - 0x1C241306, // 001C EQ R9 R9 K6 + 0x1C241314, // 001C EQ R9 R9 K20 0x7826000A, // 001D JMPF R9 #0029 - 0x8C24090A, // 001E GETMET R9 R4 K10 + 0x8C240918, // 001E GETMET R9 R4 K24 0x5C2C0A00, // 001F MOVE R11 R5 0x5C300E00, // 0020 MOVE R12 R7 0x60340015, // 0021 GETGBL R13 G21 0x7C340000, // 0022 CALL R13 0 - 0x8C341B0B, // 0023 GETMET R13 R13 K11 - 0x403E190D, // 0024 CONNECT R15 K12 K13 + 0x8C341B19, // 0023 GETMET R13 R13 K25 + 0x403E351B, // 0024 CONNECT R15 K26 K27 0x943C100F, // 0025 GETIDX R15 R8 R15 0x7C340400, // 0026 CALL R13 2 0x7C240800, // 0027 CALL R9 4 0x70020015, // 0028 JMP #003F - 0x8C240708, // 0029 GETMET R9 R3 K8 + 0x8C240716, // 0029 GETMET R9 R3 K22 0x5C2C1000, // 002A MOVE R11 R8 - 0x5830000E, // 002B LDCONST R12 K14 + 0x5830001C, // 002B LDCONST R12 K28 0x7C240600, // 002C CALL R9 3 - 0x1C241306, // 002D EQ R9 R9 K6 + 0x1C241314, // 002D EQ R9 R9 K20 0x7826000A, // 002E JMPF R9 #003A - 0x8C24090A, // 002F GETMET R9 R4 K10 + 0x8C240918, // 002F GETMET R9 R4 K24 0x5C2C0A00, // 0030 MOVE R11 R5 0x5C300E00, // 0031 MOVE R12 R7 0x60340015, // 0032 GETGBL R13 G21 0x7C340000, // 0033 CALL R13 0 - 0x8C341B0F, // 0034 GETMET R13 R13 K15 - 0x403E190D, // 0035 CONNECT R15 K12 K13 + 0x8C341B1D, // 0034 GETMET R13 R13 K29 + 0x403E351B, // 0035 CONNECT R15 K26 K27 0x943C100F, // 0036 GETIDX R15 R8 R15 0x7C340400, // 0037 CALL R13 2 0x7C240800, // 0038 CALL R9 4 0x70020004, // 0039 JMP #003F - 0x8C24090A, // 003A GETMET R9 R4 K10 + 0x8C240918, // 003A GETMET R9 R4 K24 0x5C2C0A00, // 003B MOVE R11 R5 0x5C300E00, // 003C MOVE R12 R7 0x5C341000, // 003D MOVE R13 R8 0x7C240800, // 003E CALL R9 4 0x70020004, // 003F JMP #0045 - 0x8C24090A, // 0040 GETMET R9 R4 K10 + 0x8C240918, // 0040 GETMET R9 R4 K24 0x5C2C0A00, // 0041 MOVE R11 R5 0x5C300E00, // 0042 MOVE R12 R7 0x5C341000, // 0043 MOVE R13 R8 0x7C240800, // 0044 CALL R9 4 0x7001FFC5, // 0045 JMP #000C - 0x58180010, // 0046 LDCONST R6 K16 + 0x5818001E, // 0046 LDCONST R6 K30 0xAC180200, // 0047 CATCH R6 1 0 0xB0080000, // 0048 RAISE 2 R0 R0 - 0x8C180B11, // 0049 GETMET R6 R5 K17 + 0x8C180B1F, // 0049 GETMET R6 R5 K31 0x7C180200, // 004A CALL R6 1 0x80040A00, // 004B RET 1 R5 }) @@ -368,19 +443,17 @@ be_local_closure(class_Matter_Fabric_set_ca, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(root_ca_certificate), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(set_ca), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024001, // 0000 SETMBR R0 K32 R1 0x80000000, // 0001 RET 0 }) ) @@ -395,79 +468,51 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ be_nested_proto( 16, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(persist_pre), - /* K3 */ be_nested_str_weak(members), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(function), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(_), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(stop_iteration), - /* K10 */ be_nested_str_weak(matter), - /* K11 */ be_nested_str_weak(sort), - /* K12 */ be_nested_str_weak(_X24_X24), - /* K13 */ be_nested_str_weak(tob64), - /* K14 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K15 */ be_nested_str_weak(dump), - /* K16 */ be_nested_str_weak(_sessions), - /* K17 */ be_nested_str_weak(persistables), - /* K18 */ be_nested_str_weak(tojson), - /* K19 */ be_nested_str_weak(_X5B), - /* K20 */ be_nested_str_weak(concat), - /* K21 */ be_nested_str_weak(_X2C), - /* K22 */ be_nested_str_weak(_X5D), - /* K23 */ be_nested_str_weak(_X22_sessions_X22_X3A), - /* K24 */ be_nested_str_weak(persist_post), - /* K25 */ be_nested_str_weak(_X7B), - /* K26 */ be_nested_str_weak(_X7D), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(tojson), &be_const_str_solidified, ( &(const binstruction[119]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0102, // 0002 GETMET R3 R0 K2 + 0xA4064200, // 0000 IMPORT R1 K33 + 0xA40A2000, // 0001 IMPORT R2 K16 + 0x8C0C0122, // 0002 GETMET R3 R0 K34 0x7C0C0200, // 0003 CALL R3 1 0x600C0012, // 0004 GETGBL R3 G18 0x7C0C0000, // 0005 CALL R3 0 0x60100010, // 0006 GETGBL R4 G16 - 0x8C140503, // 0007 GETMET R5 R2 K3 + 0x8C140523, // 0007 GETMET R5 R2 K35 0x5C1C0000, // 0008 MOVE R7 R0 0x7C140400, // 0009 CALL R5 2 0x7C100200, // 000A CALL R4 1 0xA8020011, // 000B EXBLK 0 #001E 0x5C140800, // 000C MOVE R5 R4 0x7C140000, // 000D CALL R5 0 - 0x8C180504, // 000E GETMET R6 R2 K4 + 0x8C180524, // 000E GETMET R6 R2 K36 0x5C200000, // 000F MOVE R8 R0 0x5C240A00, // 0010 MOVE R9 R5 0x7C180600, // 0011 CALL R6 3 0x601C0004, // 0012 GETGBL R7 G4 0x5C200C00, // 0013 MOVE R8 R6 0x7C1C0200, // 0014 CALL R7 1 - 0x201C0F05, // 0015 NE R7 R7 K5 + 0x201C0F25, // 0015 NE R7 R7 K37 0x781E0005, // 0016 JMPF R7 #001D - 0x941C0B06, // 0017 GETIDX R7 R5 K6 - 0x201C0F07, // 0018 NE R7 R7 K7 + 0x941C0B26, // 0017 GETIDX R7 R5 K38 + 0x201C0F15, // 0018 NE R7 R7 K21 0x781E0002, // 0019 JMPF R7 #001D - 0x8C1C0708, // 001A GETMET R7 R3 K8 + 0x8C1C0727, // 001A GETMET R7 R3 K39 0x5C240A00, // 001B MOVE R9 R5 0x7C1C0400, // 001C CALL R7 2 0x7001FFED, // 001D JMP #000C - 0x58100009, // 001E LDCONST R4 K9 + 0x5810001E, // 001E LDCONST R4 K30 0xAC100200, // 001F CATCH R4 1 0 0xB0080000, // 0020 RAISE 2 R0 R0 - 0xB8121400, // 0021 GETNGBL R4 K10 - 0x8C10090B, // 0022 GETMET R4 R4 K11 + 0xB8122200, // 0021 GETNGBL R4 K17 + 0x8C100928, // 0022 GETMET R4 R4 K40 0x5C180600, // 0023 MOVE R6 R3 0x7C100400, // 0024 CALL R4 2 0x5C0C0800, // 0025 MOVE R3 R4 @@ -479,7 +524,7 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0xA8020020, // 002B EXBLK 0 #004D 0x5C180A00, // 002C MOVE R6 R5 0x7C180000, // 002D CALL R6 0 - 0x8C1C0504, // 002E GETMET R7 R2 K4 + 0x8C1C0524, // 002E GETMET R7 R2 K36 0x5C240000, // 002F MOVE R9 R0 0x5C280C00, // 0030 MOVE R10 R6 0x7C1C0600, // 0031 CALL R7 3 @@ -492,65 +537,65 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0x60280015, // 0038 GETGBL R10 G21 0x7C200400, // 0039 CALL R8 2 0x78220003, // 003A JMPF R8 #003F - 0x8C200F0D, // 003B GETMET R8 R7 K13 + 0x8C200F29, // 003B GETMET R8 R7 K41 0x7C200200, // 003C CALL R8 1 - 0x00221808, // 003D ADD R8 K12 R8 + 0x00223808, // 003D ADD R8 K28 R8 0x5C1C1000, // 003E MOVE R7 R8 - 0x8C200908, // 003F GETMET R8 R4 K8 + 0x8C200927, // 003F GETMET R8 R4 K39 0x60280018, // 0040 GETGBL R10 G24 - 0x582C000E, // 0041 LDCONST R11 K14 - 0x8C30030F, // 0042 GETMET R12 R1 K15 + 0x582C002A, // 0041 LDCONST R11 K42 + 0x8C30032B, // 0042 GETMET R12 R1 K43 0x60380008, // 0043 GETGBL R14 G8 0x5C3C0C00, // 0044 MOVE R15 R6 0x7C380200, // 0045 CALL R14 1 0x7C300400, // 0046 CALL R12 2 - 0x8C34030F, // 0047 GETMET R13 R1 K15 + 0x8C34032B, // 0047 GETMET R13 R1 K43 0x5C3C0E00, // 0048 MOVE R15 R7 0x7C340400, // 0049 CALL R13 2 0x7C280600, // 004A CALL R10 3 0x7C200400, // 004B CALL R8 2 0x7001FFDE, // 004C JMP #002C - 0x58140009, // 004D LDCONST R5 K9 + 0x5814001E, // 004D LDCONST R5 K30 0xAC140200, // 004E CATCH R5 1 0 0xB0080000, // 004F RAISE 2 R0 R0 0x60140012, // 0050 GETGBL R5 G18 0x7C140000, // 0051 CALL R5 0 0x60180010, // 0052 GETGBL R6 G16 - 0x881C0110, // 0053 GETMBR R7 R0 K16 - 0x8C1C0F11, // 0054 GETMET R7 R7 K17 + 0x881C012C, // 0053 GETMBR R7 R0 K44 + 0x8C1C0F2D, // 0054 GETMET R7 R7 K45 0x7C1C0200, // 0055 CALL R7 1 0x7C180200, // 0056 CALL R6 1 0xA8020006, // 0057 EXBLK 0 #005F 0x5C1C0C00, // 0058 MOVE R7 R6 0x7C1C0000, // 0059 CALL R7 0 - 0x8C200B08, // 005A GETMET R8 R5 K8 - 0x8C280F12, // 005B GETMET R10 R7 K18 + 0x8C200B27, // 005A GETMET R8 R5 K39 + 0x8C280F2E, // 005B GETMET R10 R7 K46 0x7C280200, // 005C CALL R10 1 0x7C200400, // 005D CALL R8 2 0x7001FFF8, // 005E JMP #0058 - 0x58180009, // 005F LDCONST R6 K9 + 0x5818001E, // 005F LDCONST R6 K30 0xAC180200, // 0060 CATCH R6 1 0 0xB0080000, // 0061 RAISE 2 R0 R0 0x6018000C, // 0062 GETGBL R6 G12 0x5C1C0A00, // 0063 MOVE R7 R5 0x7C180200, // 0064 CALL R6 1 - 0x24180D06, // 0065 GT R6 R6 K6 + 0x24180D26, // 0065 GT R6 R6 K38 0x781A0007, // 0066 JMPF R6 #006F - 0x8C180B14, // 0067 GETMET R6 R5 K20 - 0x58200015, // 0068 LDCONST R8 K21 + 0x8C180B30, // 0067 GETMET R6 R5 K48 + 0x58200031, // 0068 LDCONST R8 K49 0x7C180400, // 0069 CALL R6 2 - 0x001A2606, // 006A ADD R6 K19 R6 - 0x00180D16, // 006B ADD R6 R6 K22 - 0x8C1C0908, // 006C GETMET R7 R4 K8 - 0x00262E06, // 006D ADD R9 K23 R6 + 0x001A5E06, // 006A ADD R6 K47 R6 + 0x00180D32, // 006B ADD R6 R6 K50 + 0x8C1C0927, // 006C GETMET R7 R4 K39 + 0x00266606, // 006D ADD R9 K51 R6 0x7C1C0400, // 006E CALL R7 2 - 0x8C180118, // 006F GETMET R6 R0 K24 + 0x8C180134, // 006F GETMET R6 R0 K52 0x7C180200, // 0070 CALL R6 1 - 0x8C180914, // 0071 GETMET R6 R4 K20 - 0x58200015, // 0072 LDCONST R8 K21 + 0x8C180930, // 0071 GETMET R6 R4 K48 + 0x58200031, // 0072 LDCONST R8 K49 0x7C180400, // 0073 CALL R6 2 - 0x001A3206, // 0074 ADD R6 K25 R6 - 0x00180D1A, // 0075 ADD R6 R6 K26 + 0x001A6A06, // 0074 ADD R6 K53 R6 + 0x00180D36, // 0075 ADD R6 R6 K54 0x80040C00, // 0076 RET 1 R6 }) ) @@ -565,39 +610,32 @@ be_local_closure(class_Matter_Fabric_hydrate_post, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K1 */ be_nested_str_weak(reset), - /* K2 */ be_nested_str_weak(counter_group_data_snd), - /* K3 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), - /* K4 */ be_nested_str_weak(counter_group_ctrl_snd), - /* K5 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(hydrate_post), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x88040137, // 0000 GETMBR R1 R0 K55 + 0x8C040338, // 0001 GETMET R1 R1 K56 + 0x880C0139, // 0002 GETMBR R3 R0 K57 0x7C040400, // 0003 CALL R1 2 - 0x88040103, // 0004 GETMBR R1 R0 K3 - 0x8C040301, // 0005 GETMET R1 R1 K1 - 0x880C0104, // 0006 GETMBR R3 R0 K4 + 0x8804013A, // 0004 GETMBR R1 R0 K58 + 0x8C040338, // 0005 GETMET R1 R1 K56 + 0x880C013B, // 0006 GETMBR R3 R0 K59 0x7C040400, // 0007 CALL R1 2 - 0x88040100, // 0008 GETMBR R1 R0 K0 - 0x8C040305, // 0009 GETMET R1 R1 K5 + 0x88040137, // 0008 GETMBR R1 R0 K55 + 0x8C04033C, // 0009 GETMET R1 R1 K60 0x7C040200, // 000A CALL R1 1 - 0x90020401, // 000B SETMBR R0 K2 R1 - 0x88040103, // 000C GETMBR R1 R0 K3 - 0x8C040305, // 000D GETMET R1 R1 K5 + 0x90027201, // 000B SETMBR R0 K57 R1 + 0x8804013A, // 000C GETMBR R1 R0 K58 + 0x8C04033C, // 000D GETMET R1 R1 K60 0x7C040200, // 000E CALL R1 1 - 0x90020801, // 000F SETMBR R0 K4 R1 + 0x90027601, // 000F SETMBR R0 K59 R1 0x80000000, // 0010 RET 0 }) ) @@ -612,19 +650,17 @@ be_local_closure(class_Matter_Fabric_set_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(set_ipk_epoch_key), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90027A01, // 0000 SETMBR R0 K61 R1 0x80000000, // 0001 RET 0 }) ) @@ -639,33 +675,27 @@ be_local_closure(class_Matter_Fabric_set_fabric_device, /* name */ be_nested_proto( 7, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_id), - /* K1 */ be_nested_str_weak(device_id), - /* K2 */ be_nested_str_weak(fabric_compressed), - /* K3 */ be_nested_str_weak(fabric_parent), - /* K4 */ be_nested_str_weak(get_fabric_index), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(set_fabric_device), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x90021401, // 0000 SETMBR R0 K10 R1 + 0x90027C02, // 0001 SETMBR R0 K62 R2 + 0x90021203, // 0002 SETMBR R0 K9 R3 0x4C140000, // 0003 LDNIL R5 0x20140805, // 0004 NE R5 R4 R5 0x78160002, // 0005 JMPF R5 #0009 - 0x8C140904, // 0006 GETMET R5 R4 K4 + 0x8C140940, // 0006 GETMET R5 R4 K64 0x7C140200, // 0007 CALL R5 1 0x70020000, // 0008 JMP #000A 0x4C140000, // 0009 LDNIL R5 - 0x90020605, // 000A SETMBR R0 K3 R5 + 0x90027E05, // 000A SETMBR R0 K63 R5 0x80000000, // 000B RET 0 }) ) @@ -680,19 +710,17 @@ be_local_closure(class_Matter_Fabric_get_device_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(device_id), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_device_id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804013E, // 0000 GETMBR R1 R0 K62 0x80040200, // 0001 RET 1 R1 }) ) @@ -707,19 +735,17 @@ be_local_closure(class_Matter_Fabric_get_admin_subject, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(admin_subject), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_admin_subject), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010B, // 0000 GETMBR R1 R0 K11 0x80040200, // 0001 RET 1 R1 }) ) @@ -734,19 +760,17 @@ be_local_closure(class_Matter_Fabric_is_marked_for_deletion, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(deleted), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(is_marked_for_deletion), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040141, // 0000 GETMBR R1 R0 K65 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x80040200, // 0003 RET 1 R1 @@ -763,23 +787,19 @@ be_local_closure(class_Matter_Fabric_get_fabric_id_as_int64, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(int64), - /* K1 */ be_nested_str_weak(frombytes), - /* K2 */ be_nested_str_weak(fabric_id), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_fabric_id_as_int64), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0xB8068400, // 0000 GETNGBL R1 K66 + 0x8C040343, // 0001 GETMET R1 R1 K67 + 0x880C010A, // 0002 GETMBR R3 R0 K10 0x7C040400, // 0003 CALL R1 2 0x80040200, // 0004 RET 1 R1 }) @@ -795,19 +815,17 @@ be_local_closure(class_Matter_Fabric_get_ca, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(root_ca_certificate), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_ca), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040120, // 0000 GETMBR R1 R0 K32 0x80040200, // 0001 RET 1 R1 }) ) @@ -822,19 +840,17 @@ be_local_closure(class_Matter_Fabric_get_oldest_session, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_old_recent_session), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_oldest_session), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040144, // 0000 GETMET R1 R0 K68 0x500C0200, // 0001 LDBOOL R3 1 0 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 @@ -851,31 +867,25 @@ be_local_closure(class_Matter_Fabric_fabric_completed, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(set_no_expiration), - /* K1 */ be_nested_str_weak(set_persist), - /* K2 */ be_nested_str_weak(assign_fabric_index), - /* K3 */ be_nested_str_weak(_store), - /* K4 */ be_nested_str_weak(add_fabric), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(fabric_completed), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040145, // 0000 GETMET R1 R0 K69 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x8C040146, // 0002 GETMET R1 R0 K70 0x500C0200, // 0003 LDBOOL R3 1 0 0x7C040400, // 0004 CALL R1 2 - 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x8C040147, // 0005 GETMET R1 R0 K71 0x7C040200, // 0006 CALL R1 1 - 0x88040103, // 0007 GETMBR R1 R0 K3 - 0x8C040304, // 0008 GETMET R1 R1 K4 + 0x88040148, // 0007 GETMBR R1 R0 K72 + 0x8C040349, // 0008 GETMET R1 R1 K73 0x5C0C0000, // 0009 MOVE R3 R0 0x7C040400, // 000A CALL R1 2 0x80000000, // 000B RET 0 @@ -892,53 +902,40 @@ be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K1 */ be_nested_str_weak(next), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(Counter), - /* K7 */ be_nested_str_weak(is_greater), - /* K8 */ be_nested_str_weak(counter_group_data_snd), - /* K9 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K10 */ be_nested_str_weak(does_persist), - /* K11 */ be_nested_str_weak(save), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(counter_group_data_snd_next), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040137, // 0000 GETMBR R1 R0 K55 + 0x8C04034A, // 0001 GETMET R1 R1 K74 0x7C040200, // 0002 CALL R1 1 - 0xB80A0400, // 0003 GETNGBL R2 K2 + 0xB80A0200, // 0003 GETNGBL R2 K1 0x600C0018, // 0004 GETGBL R3 G24 - 0x58100003, // 0005 LDCONST R4 K3 + 0x5810004B, // 0005 LDCONST R4 K75 0x5C140200, // 0006 MOVE R5 R1 0x7C0C0400, // 0007 CALL R3 2 - 0x58100004, // 0008 LDCONST R4 K4 + 0x58100007, // 0008 LDCONST R4 K7 0x7C080400, // 0009 CALL R2 2 - 0xB80A0A00, // 000A GETNGBL R2 K5 - 0x88080506, // 000B GETMBR R2 R2 K6 - 0x8C080507, // 000C GETMET R2 R2 K7 + 0xB80A2200, // 000A GETNGBL R2 K17 + 0x8808054C, // 000B GETMBR R2 R2 K76 + 0x8C08054D, // 000C GETMET R2 R2 K77 0x5C100200, // 000D MOVE R4 R1 - 0x88140108, // 000E GETMBR R5 R0 K8 + 0x88140139, // 000E GETMBR R5 R0 K57 0x7C080600, // 000F CALL R2 3 0x780A0007, // 0010 JMPF R2 #0019 - 0x88080109, // 0011 GETMBR R2 R0 K9 + 0x8808014E, // 0011 GETMBR R2 R0 K78 0x00080202, // 0012 ADD R2 R1 R2 - 0x90021002, // 0013 SETMBR R0 K8 R2 - 0x8C08010A, // 0014 GETMET R2 R0 K10 + 0x90027202, // 0013 SETMBR R0 K57 R2 + 0x8C08014F, // 0014 GETMET R2 R0 K79 0x7C080200, // 0015 CALL R2 1 0x780A0001, // 0016 JMPF R2 #0019 - 0x8C08010B, // 0017 GETMET R2 R0 K11 + 0x8C080150, // 0017 GETMET R2 R0 K80 0x7C080200, // 0018 CALL R2 1 0x80040200, // 0019 RET 1 R1 }) @@ -954,21 +951,18 @@ be_local_closure(class_Matter_Fabric_set_noc_icac, /* name */ be_nested_proto( 3, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(noc), - /* K1 */ be_nested_str_weak(icac), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(set_noc_icac), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90021A01, // 0000 SETMBR R0 K13 R1 + 0x90020002, // 0001 SETMBR R0 K0 R2 0x80000000, // 0002 RET 0 }) ) @@ -983,19 +977,17 @@ be_local_closure(class_Matter_Fabric_set_pk, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(no_private_key), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(set_pk), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021001, // 0000 SETMBR R0 K8 R1 0x80000000, // 0001 RET 0 }) ) @@ -1010,19 +1002,17 @@ be_local_closure(class_Matter_Fabric_get_newest_session, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_old_recent_session), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_newest_session), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040144, // 0000 GETMET R1 R0 K68 0x500C0000, // 0001 LDBOOL R3 0 0 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 @@ -1039,37 +1029,28 @@ be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s), - /* K2 */ be_nested_str_weak(get_fabric_id), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(reverse), - /* K5 */ be_nested_str_weak(tohex), - /* K6 */ be_nested_str_weak(get_admin_vendor_name), - /* K7 */ be_const_int(3), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(log_new_fabric), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 + 0xB8060200, // 0000 GETNGBL R1 K1 0x60080018, // 0001 GETGBL R2 G24 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x8C100102, // 0003 GETMET R4 R0 K2 + 0x580C0051, // 0002 LDCONST R3 K81 + 0x8C100103, // 0003 GETMET R4 R0 K3 0x7C100200, // 0004 CALL R4 1 - 0x8C100903, // 0005 GETMET R4 R4 K3 + 0x8C100904, // 0005 GETMET R4 R4 K4 0x7C100200, // 0006 CALL R4 1 - 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x8C100905, // 0007 GETMET R4 R4 K5 0x7C100200, // 0008 CALL R4 1 - 0x8C100905, // 0009 GETMET R4 R4 K5 + 0x8C100906, // 0009 GETMET R4 R4 K6 0x7C100200, // 000A CALL R4 1 - 0x8C140106, // 000B GETMET R5 R0 K6 + 0x8C140152, // 000B GETMET R5 R0 K82 0x7C140200, // 000C CALL R5 1 0x7C080600, // 000D CALL R2 3 0x580C0007, // 000E LDCONST R3 K7 @@ -1088,30 +1069,24 @@ be_local_closure(class_Matter_Fabric_get_ca_pub, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(root_ca_certificate), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(parse), - /* K4 */ be_nested_str_weak(findsubval), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_ca_pub), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040120, // 0000 GETMBR R1 R0 K32 0x78060008, // 0001 JMPF R1 #000B - 0xB80A0200, // 0002 GETNGBL R2 K1 - 0x88080502, // 0003 GETMBR R2 R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 + 0xB80A2200, // 0002 GETNGBL R2 K17 + 0x88080553, // 0003 GETMBR R2 R2 K83 + 0x8C080554, // 0004 GETMET R2 R2 K84 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 - 0x8C0C0504, // 0007 GETMET R3 R2 K4 + 0x8C0C0555, // 0007 GETMET R3 R2 K85 0x54160008, // 0008 LDINT R5 9 0x7C0C0400, // 0009 CALL R3 2 0x80040600, // 000A RET 1 R3 @@ -1129,19 +1104,17 @@ be_local_closure(class_Matter_Fabric_get_fabric_index, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_index), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_fabric_index), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040156, // 0000 GETMBR R1 R0 K86 0x80040200, // 0001 RET 1 R1 }) ) @@ -1156,81 +1129,54 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ be_nested_proto( 17, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(write), - /* K3 */ be_nested_str_weak(_X7B), - /* K4 */ be_nested_str_weak(persist_pre), - /* K5 */ be_nested_str_weak(members), - /* K6 */ be_nested_str_weak(get), - /* K7 */ be_nested_str_weak(function), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(_), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(matter), - /* K13 */ be_nested_str_weak(sort), - /* K14 */ be_nested_str_weak(_X24_X24), - /* K15 */ be_nested_str_weak(tob64), - /* K16 */ be_nested_str_weak(_X2C), - /* K17 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K18 */ be_nested_str_weak(dump), - /* K19 */ be_nested_str_weak(_sessions), - /* K20 */ be_nested_str_weak(persistables), - /* K21 */ be_nested_str_weak(_X2C_X22_sessions_X22_X3A_X5B), - /* K22 */ be_nested_str_weak(tojson), - /* K23 */ be_nested_str_weak(_X5D), - /* K24 */ be_nested_str_weak(persist_post), - /* K25 */ be_nested_str_weak(_X7D), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(writejson), &be_const_str_solidified, ( &(const binstruction[125]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100302, // 0002 GETMET R4 R1 K2 - 0x58180003, // 0003 LDCONST R6 K3 + 0xA40A4200, // 0000 IMPORT R2 K33 + 0xA40E2000, // 0001 IMPORT R3 K16 + 0x8C100357, // 0002 GETMET R4 R1 K87 + 0x58180035, // 0003 LDCONST R6 K53 0x7C100400, // 0004 CALL R4 2 - 0x8C100104, // 0005 GETMET R4 R0 K4 + 0x8C100122, // 0005 GETMET R4 R0 K34 0x7C100200, // 0006 CALL R4 1 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 0x60140010, // 0009 GETGBL R5 G16 - 0x8C180705, // 000A GETMET R6 R3 K5 + 0x8C180723, // 000A GETMET R6 R3 K35 0x5C200000, // 000B MOVE R8 R0 0x7C180400, // 000C CALL R6 2 0x7C140200, // 000D CALL R5 1 0xA8020011, // 000E EXBLK 0 #0021 0x5C180A00, // 000F MOVE R6 R5 0x7C180000, // 0010 CALL R6 0 - 0x8C1C0706, // 0011 GETMET R7 R3 K6 + 0x8C1C0724, // 0011 GETMET R7 R3 K36 0x5C240000, // 0012 MOVE R9 R0 0x5C280C00, // 0013 MOVE R10 R6 0x7C1C0600, // 0014 CALL R7 3 0x60200004, // 0015 GETGBL R8 G4 0x5C240E00, // 0016 MOVE R9 R7 0x7C200200, // 0017 CALL R8 1 - 0x20201107, // 0018 NE R8 R8 K7 + 0x20201125, // 0018 NE R8 R8 K37 0x78220005, // 0019 JMPF R8 #0020 - 0x94200D08, // 001A GETIDX R8 R6 K8 - 0x20201109, // 001B NE R8 R8 K9 + 0x94200D26, // 001A GETIDX R8 R6 K38 + 0x20201115, // 001B NE R8 R8 K21 0x78220002, // 001C JMPF R8 #0020 - 0x8C20090A, // 001D GETMET R8 R4 K10 + 0x8C200927, // 001D GETMET R8 R4 K39 0x5C280C00, // 001E MOVE R10 R6 0x7C200400, // 001F CALL R8 2 0x7001FFED, // 0020 JMP #000F - 0x5814000B, // 0021 LDCONST R5 K11 + 0x5814001E, // 0021 LDCONST R5 K30 0xAC140200, // 0022 CATCH R5 1 0 0xB0080000, // 0023 RAISE 2 R0 R0 - 0xB8161800, // 0024 GETNGBL R5 K12 - 0x8C140B0D, // 0025 GETMET R5 R5 K13 + 0xB8162200, // 0024 GETNGBL R5 K17 + 0x8C140B28, // 0025 GETMET R5 R5 K40 0x5C1C0800, // 0026 MOVE R7 R4 0x7C140400, // 0027 CALL R5 2 0x5C100A00, // 0028 MOVE R4 R5 @@ -1241,7 +1187,7 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0xA8020026, // 002D EXBLK 0 #0055 0x5C1C0C00, // 002E MOVE R7 R6 0x7C1C0000, // 002F CALL R7 0 - 0x8C200706, // 0030 GETMET R8 R3 K6 + 0x8C200724, // 0030 GETMET R8 R3 K36 0x5C280000, // 0031 MOVE R10 R0 0x5C2C0E00, // 0032 MOVE R11 R7 0x7C200600, // 0033 CALL R8 3 @@ -1254,68 +1200,68 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0x602C0015, // 003A GETGBL R11 G21 0x7C240400, // 003B CALL R9 2 0x78260003, // 003C JMPF R9 #0041 - 0x8C24110F, // 003D GETMET R9 R8 K15 + 0x8C241129, // 003D GETMET R9 R8 K41 0x7C240200, // 003E CALL R9 1 - 0x00261C09, // 003F ADD R9 K14 R9 + 0x00263809, // 003F ADD R9 K28 R9 0x5C201200, // 0040 MOVE R8 R9 0x5C240A00, // 0041 MOVE R9 R5 0x74260002, // 0042 JMPT R9 #0046 - 0x8C240302, // 0043 GETMET R9 R1 K2 - 0x582C0010, // 0044 LDCONST R11 K16 + 0x8C240357, // 0043 GETMET R9 R1 K87 + 0x582C0031, // 0044 LDCONST R11 K49 0x7C240400, // 0045 CALL R9 2 - 0x8C240302, // 0046 GETMET R9 R1 K2 + 0x8C240357, // 0046 GETMET R9 R1 K87 0x602C0018, // 0047 GETGBL R11 G24 - 0x58300011, // 0048 LDCONST R12 K17 - 0x8C340512, // 0049 GETMET R13 R2 K18 + 0x5830002A, // 0048 LDCONST R12 K42 + 0x8C34052B, // 0049 GETMET R13 R2 K43 0x603C0008, // 004A GETGBL R15 G8 0x5C400E00, // 004B MOVE R16 R7 0x7C3C0200, // 004C CALL R15 1 0x7C340400, // 004D CALL R13 2 - 0x8C380512, // 004E GETMET R14 R2 K18 + 0x8C38052B, // 004E GETMET R14 R2 K43 0x5C401000, // 004F MOVE R16 R8 0x7C380400, // 0050 CALL R14 2 0x7C2C0600, // 0051 CALL R11 3 0x7C240400, // 0052 CALL R9 2 0x50140000, // 0053 LDBOOL R5 0 0 0x7001FFD8, // 0054 JMP #002E - 0x5818000B, // 0055 LDCONST R6 K11 + 0x5818001E, // 0055 LDCONST R6 K30 0xAC180200, // 0056 CATCH R6 1 0 0xB0080000, // 0057 RAISE 2 R0 R0 0x50180200, // 0058 LDBOOL R6 1 0 0x601C0010, // 0059 GETGBL R7 G16 - 0x88200113, // 005A GETMBR R8 R0 K19 - 0x8C201114, // 005B GETMET R8 R8 K20 + 0x8820012C, // 005A GETMBR R8 R0 K44 + 0x8C20112D, // 005B GETMET R8 R8 K45 0x7C200200, // 005C CALL R8 1 0x7C1C0200, // 005D CALL R7 1 0xA802000F, // 005E EXBLK 0 #006F 0x5C200E00, // 005F MOVE R8 R7 0x7C200000, // 0060 CALL R8 0 0x781A0003, // 0061 JMPF R6 #0066 - 0x8C240302, // 0062 GETMET R9 R1 K2 - 0x582C0015, // 0063 LDCONST R11 K21 + 0x8C240357, // 0062 GETMET R9 R1 K87 + 0x582C0058, // 0063 LDCONST R11 K88 0x7C240400, // 0064 CALL R9 2 0x70020002, // 0065 JMP #0069 - 0x8C240302, // 0066 GETMET R9 R1 K2 - 0x582C0010, // 0067 LDCONST R11 K16 + 0x8C240357, // 0066 GETMET R9 R1 K87 + 0x582C0031, // 0067 LDCONST R11 K49 0x7C240400, // 0068 CALL R9 2 - 0x8C240302, // 0069 GETMET R9 R1 K2 - 0x8C2C1116, // 006A GETMET R11 R8 K22 + 0x8C240357, // 0069 GETMET R9 R1 K87 + 0x8C2C112E, // 006A GETMET R11 R8 K46 0x7C2C0200, // 006B CALL R11 1 0x7C240400, // 006C CALL R9 2 0x50180000, // 006D LDBOOL R6 0 0 0x7001FFEF, // 006E JMP #005F - 0x581C000B, // 006F LDCONST R7 K11 + 0x581C001E, // 006F LDCONST R7 K30 0xAC1C0200, // 0070 CATCH R7 1 0 0xB0080000, // 0071 RAISE 2 R0 R0 0x5C1C0C00, // 0072 MOVE R7 R6 0x741E0002, // 0073 JMPT R7 #0077 - 0x8C1C0302, // 0074 GETMET R7 R1 K2 - 0x58240017, // 0075 LDCONST R9 K23 + 0x8C1C0357, // 0074 GETMET R7 R1 K87 + 0x58240032, // 0075 LDCONST R9 K50 0x7C1C0400, // 0076 CALL R7 2 - 0x8C1C0118, // 0077 GETMET R7 R0 K24 + 0x8C1C0134, // 0077 GETMET R7 R0 K52 0x7C1C0200, // 0078 CALL R7 1 - 0x8C1C0302, // 0079 GETMET R7 R1 K2 - 0x58240019, // 007A LDCONST R9 K25 + 0x8C1C0357, // 0079 GETMET R7 R1 K87 + 0x58240036, // 007A LDCONST R9 K54 0x7C1C0400, // 007B CALL R7 2 0x80000000, // 007C RET 0 }) @@ -1331,53 +1277,40 @@ be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), - /* K1 */ be_nested_str_weak(next), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(Counter), - /* K7 */ be_nested_str_weak(is_greater), - /* K8 */ be_nested_str_weak(counter_group_ctrl_snd), - /* K9 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K10 */ be_nested_str_weak(does_persist), - /* K11 */ be_nested_str_weak(save), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(counter_group_ctrl_snd_next), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8804013A, // 0000 GETMBR R1 R0 K58 + 0x8C04034A, // 0001 GETMET R1 R1 K74 0x7C040200, // 0002 CALL R1 1 - 0xB80A0400, // 0003 GETNGBL R2 K2 + 0xB80A0200, // 0003 GETNGBL R2 K1 0x600C0018, // 0004 GETGBL R3 G24 - 0x58100003, // 0005 LDCONST R4 K3 + 0x58100059, // 0005 LDCONST R4 K89 0x5C140200, // 0006 MOVE R5 R1 0x7C0C0400, // 0007 CALL R3 2 - 0x58100004, // 0008 LDCONST R4 K4 + 0x58100007, // 0008 LDCONST R4 K7 0x7C080400, // 0009 CALL R2 2 - 0xB80A0A00, // 000A GETNGBL R2 K5 - 0x88080506, // 000B GETMBR R2 R2 K6 - 0x8C080507, // 000C GETMET R2 R2 K7 + 0xB80A2200, // 000A GETNGBL R2 K17 + 0x8808054C, // 000B GETMBR R2 R2 K76 + 0x8C08054D, // 000C GETMET R2 R2 K77 0x5C100200, // 000D MOVE R4 R1 - 0x88140108, // 000E GETMBR R5 R0 K8 + 0x8814013B, // 000E GETMBR R5 R0 K59 0x7C080600, // 000F CALL R2 3 0x780A0007, // 0010 JMPF R2 #0019 - 0x88080109, // 0011 GETMBR R2 R0 K9 + 0x8808014E, // 0011 GETMBR R2 R0 K78 0x00080202, // 0012 ADD R2 R1 R2 - 0x90021002, // 0013 SETMBR R0 K8 R2 - 0x8C08010A, // 0014 GETMET R2 R0 K10 + 0x90027602, // 0013 SETMBR R0 K59 R2 + 0x8C08014F, // 0014 GETMET R2 R0 K79 0x7C080200, // 0015 CALL R2 1 0x780A0001, // 0016 JMPF R2 #0019 - 0x8C08010B, // 0017 GETMET R2 R0 K11 + 0x8C080150, // 0017 GETMET R2 R0 K80 0x7C080200, // 0018 CALL R2 1 0x80040200, // 0019 RET 1 R1 }) @@ -1393,28 +1326,23 @@ be_local_closure(class_Matter_Fabric_fabric_candidate, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(set_expire_in_seconds), - /* K1 */ be_nested_str_weak(assign_fabric_index), - /* K2 */ be_nested_str_weak(_store), - /* K3 */ be_nested_str_weak(add_fabric), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(fabric_candidate), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04015A, // 0000 GETMET R1 R0 K90 0x540E0077, // 0001 LDINT R3 120 0x7C040400, // 0002 CALL R1 2 - 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x8C040147, // 0003 GETMET R1 R0 K71 0x7C040200, // 0004 CALL R1 1 - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x8C040303, // 0006 GETMET R1 R1 K3 + 0x88040148, // 0005 GETMBR R1 R0 K72 + 0x8C040349, // 0006 GETMET R1 R1 K73 0x5C0C0000, // 0007 MOVE R3 R0 0x7C040400, // 0008 CALL R1 2 0x80000000, // 0009 RET 0 @@ -1431,29 +1359,24 @@ be_local_closure(class_Matter_Fabric_assign_fabric_index, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(get_fabric_index), - /* K1 */ be_nested_str_weak(set_fabric_index), - /* K2 */ be_nested_str_weak(_store), - /* K3 */ be_nested_str_weak(next_fabric_idx), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(assign_fabric_index), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040140, // 0000 GETMET R1 R0 K64 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x1C040202, // 0003 EQ R1 R1 R2 0x78060004, // 0004 JMPF R1 #000A - 0x8C040101, // 0005 GETMET R1 R0 K1 - 0x880C0102, // 0006 GETMBR R3 R0 K2 - 0x8C0C0703, // 0007 GETMET R3 R3 K3 + 0x8C04015B, // 0005 GETMET R1 R0 K91 + 0x880C0148, // 0006 GETMBR R3 R0 K72 + 0x8C0C075C, // 0007 GETMET R3 R3 K92 0x7C0C0200, // 0008 CALL R3 1 0x7C040400, // 0009 CALL R1 2 0x80000000, // 000A RET 0 @@ -1470,49 +1393,44 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_sessions), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(last_used), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_old_recent_session), &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ 0x6008000C, // 0000 GETGBL R2 G12 - 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x880C012C, // 0001 GETMBR R3 R0 K44 0x7C080200, // 0002 CALL R2 1 - 0x1C080501, // 0003 EQ R2 R2 K1 + 0x1C080514, // 0003 EQ R2 R2 K20 0x780A0001, // 0004 JMPF R2 #0007 0x4C080000, // 0005 LDNIL R2 0x80040400, // 0006 RET 1 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x94080501, // 0008 GETIDX R2 R2 K1 - 0x880C0502, // 0009 GETMBR R3 R2 K2 - 0x58100003, // 000A LDCONST R4 K3 + 0x8808012C, // 0007 GETMBR R2 R0 K44 + 0x94080514, // 0008 GETIDX R2 R2 K20 + 0x880C055D, // 0009 GETMBR R3 R2 K93 + 0x5810005E, // 000A LDCONST R4 K94 0x6014000C, // 000B GETGBL R5 G12 - 0x88180100, // 000C GETMBR R6 R0 K0 + 0x8818012C, // 000C GETMBR R6 R0 K44 0x7C140200, // 000D CALL R5 1 0x14140805, // 000E LT R5 R4 R5 0x7816000C, // 000F JMPF R5 #001D - 0x88140100, // 0010 GETMBR R5 R0 K0 + 0x8814012C, // 0010 GETMBR R5 R0 K44 0x94140A04, // 0011 GETIDX R5 R5 R4 - 0x88140B02, // 0012 GETMBR R5 R5 K2 + 0x88140B5D, // 0012 GETMBR R5 R5 K93 0x78060001, // 0013 JMPF R1 #0016 0x14180A03, // 0014 LT R6 R5 R3 0x70020000, // 0015 JMP #0017 0x24180A03, // 0016 GT R6 R5 R3 0x781A0002, // 0017 JMPF R6 #001B - 0x88180100, // 0018 GETMBR R6 R0 K0 + 0x8818012C, // 0018 GETMBR R6 R0 K44 0x94080C04, // 0019 GETIDX R2 R6 R4 0x5C0C0A00, // 001A MOVE R3 R5 - 0x00100903, // 001B ADD R4 R4 K3 + 0x0010095E, // 001B ADD R4 R4 K94 0x7001FFED, // 001C JMP #000B 0x80040400, // 001D RET 1 R2 }) @@ -1528,65 +1446,47 @@ be_local_closure(class_Matter_Fabric_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(_store), - /* K2 */ be_nested_str_weak(_sessions), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Expirable_list), - /* K5 */ be_nested_str_weak(fabric_label), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(created), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(rtc_utc), - /* K10 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K11 */ be_nested_str_weak(Counter), - /* K12 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), - /* K13 */ be_nested_str_weak(counter_group_data_snd), - /* K14 */ be_nested_str_weak(next), - /* K15 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K16 */ be_nested_str_weak(counter_group_ctrl_snd), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0xB80E0600, // 0002 GETNGBL R3 K3 - 0x8C0C0704, // 0003 GETMET R3 R3 K4 + 0xA40ABE00, // 0000 IMPORT R2 K95 + 0x90029001, // 0001 SETMBR R0 K72 R1 + 0xB80E2200, // 0002 GETNGBL R3 K17 + 0x8C0C0760, // 0003 GETMET R3 R3 K96 0x7C0C0200, // 0004 CALL R3 1 - 0x90020403, // 0005 SETMBR R0 K2 R3 - 0x90020B06, // 0006 SETMBR R0 K5 K6 - 0xB80E1000, // 0007 GETNGBL R3 K8 - 0x8C0C0709, // 0008 GETMET R3 R3 K9 + 0x90025803, // 0005 SETMBR R0 K44 R3 + 0x9002C362, // 0006 SETMBR R0 K97 K98 + 0xB80EC800, // 0007 GETNGBL R3 K100 + 0x8C0C0765, // 0008 GETMET R3 R3 K101 0x7C0C0200, // 0009 CALL R3 1 - 0x90020E03, // 000A SETMBR R0 K7 R3 - 0xB80E0600, // 000B GETNGBL R3 K3 - 0x8C0C070B, // 000C GETMET R3 R3 K11 + 0x9002C603, // 000A SETMBR R0 K99 R3 + 0xB80E2200, // 000B GETNGBL R3 K17 + 0x8C0C074C, // 000C GETMET R3 R3 K76 0x7C0C0200, // 000D CALL R3 1 - 0x90021403, // 000E SETMBR R0 K10 R3 - 0xB80E0600, // 000F GETNGBL R3 K3 - 0x8C0C070B, // 0010 GETMET R3 R3 K11 + 0x90026E03, // 000E SETMBR R0 K55 R3 + 0xB80E2200, // 000F GETNGBL R3 K17 + 0x8C0C074C, // 0010 GETMET R3 R3 K76 0x7C0C0200, // 0011 CALL R3 1 - 0x90021803, // 0012 SETMBR R0 K12 R3 - 0x880C010A, // 0013 GETMBR R3 R0 K10 - 0x8C0C070E, // 0014 GETMET R3 R3 K14 + 0x90027403, // 0012 SETMBR R0 K58 R3 + 0x880C0137, // 0013 GETMBR R3 R0 K55 + 0x8C0C074A, // 0014 GETMET R3 R3 K74 0x7C0C0200, // 0015 CALL R3 1 - 0x8810010F, // 0016 GETMBR R4 R0 K15 + 0x8810014E, // 0016 GETMBR R4 R0 K78 0x000C0604, // 0017 ADD R3 R3 R4 - 0x90021A03, // 0018 SETMBR R0 K13 R3 - 0x880C010A, // 0019 GETMBR R3 R0 K10 - 0x8C0C070E, // 001A GETMET R3 R3 K14 + 0x90027203, // 0018 SETMBR R0 K57 R3 + 0x880C0137, // 0019 GETMBR R3 R0 K55 + 0x8C0C074A, // 001A GETMET R3 R3 K74 0x7C0C0200, // 001B CALL R3 1 - 0x8810010F, // 001C GETMBR R4 R0 K15 + 0x8810014E, // 001C GETMBR R4 R0 K78 0x000C0604, // 001D ADD R3 R3 R4 - 0x90022003, // 001E SETMBR R0 K16 R3 + 0x90027603, // 001E SETMBR R0 K59 R3 0x80000000, // 001F RET 0 }) ) @@ -1601,19 +1501,17 @@ be_local_closure(class_Matter_Fabric_get_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_ipk_epoch_key), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804013D, // 0000 GETMBR R1 R0 K61 0x80040200, // 0001 RET 1 R1 }) ) @@ -1628,54 +1526,45 @@ be_local_closure(class_Matter_Fabric_add_session, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(_sessions), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_MAX_CASE), - /* K3 */ be_nested_str_weak(get_oldest_session), - /* K4 */ be_nested_str_weak(remove), - /* K5 */ be_nested_str_weak(_store), - /* K6 */ be_nested_str_weak(remove_session), - /* K7 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(add_session), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808012C, // 0000 GETMBR R2 R0 K44 + 0x8C080516, // 0001 GETMET R2 R2 K22 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0017, // 0006 JMPF R2 #001F 0x6008000C, // 0007 GETGBL R2 G12 - 0x880C0100, // 0008 GETMBR R3 R0 K0 + 0x880C012C, // 0008 GETMBR R3 R0 K44 0x7C080200, // 0009 CALL R2 1 - 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x880C0166, // 000A GETMBR R3 R0 K102 0x28080403, // 000B GE R2 R2 R3 0x780A000D, // 000C JMPF R2 #001B - 0x8C080103, // 000D GETMET R2 R0 K3 + 0x8C080167, // 000D GETMET R2 R0 K103 0x7C080200, // 000E CALL R2 1 - 0x880C0100, // 000F GETMBR R3 R0 K0 - 0x8C0C0704, // 0010 GETMET R3 R3 K4 - 0x88140100, // 0011 GETMBR R5 R0 K0 - 0x8C140B01, // 0012 GETMET R5 R5 K1 + 0x880C012C, // 000F GETMBR R3 R0 K44 + 0x8C0C0768, // 0010 GETMET R3 R3 K104 + 0x8814012C, // 0011 GETMBR R5 R0 K44 + 0x8C140B16, // 0012 GETMET R5 R5 K22 0x5C1C0400, // 0013 MOVE R7 R2 0x7C140400, // 0014 CALL R5 2 0x7C0C0400, // 0015 CALL R3 2 - 0x880C0105, // 0016 GETMBR R3 R0 K5 - 0x8C0C0706, // 0017 GETMET R3 R3 K6 + 0x880C0148, // 0016 GETMBR R3 R0 K72 + 0x8C0C0769, // 0017 GETMET R3 R3 K105 0x5C140400, // 0018 MOVE R5 R2 0x7C0C0400, // 0019 CALL R3 2 0x7001FFEB, // 001A JMP #0007 - 0x88080100, // 001B GETMBR R2 R0 K0 - 0x8C080507, // 001C GETMET R2 R2 K7 + 0x8808012C, // 001B GETMBR R2 R0 K44 + 0x8C080527, // 001C GETMET R2 R2 K39 0x5C100200, // 001D MOVE R4 R1 0x7C080400, // 001E CALL R2 2 0x80000000, // 001F RET 0 @@ -1692,19 +1581,17 @@ be_local_closure(class_Matter_Fabric_set_fabric_index, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_index), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(set_fabric_index), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x9002AC01, // 0000 SETMBR R0 K86 R1 0x80000000, // 0001 RET 0 }) ) @@ -1719,23 +1606,19 @@ be_local_closure(class_Matter_Fabric_get_device_id_as_int64, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(int64), - /* K1 */ be_nested_str_weak(frombytes), - /* K2 */ be_nested_str_weak(device_id), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_device_id_as_int64), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0xB8068400, // 0000 GETNGBL R1 K66 + 0x8C040343, // 0001 GETMET R1 R1 K67 + 0x880C013E, // 0002 GETMBR R3 R0 K62 0x7C040400, // 0003 CALL R1 2 0x80040200, // 0004 RET 1 R1 }) @@ -1751,19 +1634,17 @@ be_local_closure(class_Matter_Fabric_get_fabric_label, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_label), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_fabric_label), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040161, // 0000 GETMBR R1 R0 K97 0x80040200, // 0001 RET 1 R1 }) ) @@ -1778,45 +1659,37 @@ be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), - /* K1 */ be_nested_str_weak(fabric_compressed), - /* K2 */ be_nested_str_weak(crypto), - /* K3 */ be_nested_str_weak(HKDF_SHA256), - /* K4 */ be_nested_str_weak(fromstring), - /* K5 */ be_nested_str_weak(_GROUP_KEY), - /* K6 */ be_nested_str_weak(derive), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_ipk_group_key), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804013D, // 0000 GETMBR R1 R0 K61 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x74060003, // 0003 JMPT R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x88040109, // 0004 GETMBR R1 R0 K9 0x4C080000, // 0005 LDNIL R2 0x1C040202, // 0006 EQ R1 R1 R2 0x78060001, // 0007 JMPF R1 #000A 0x4C040000, // 0008 LDNIL R1 0x80040200, // 0009 RET 1 R1 - 0xA4060400, // 000A IMPORT R1 K2 - 0x8C080303, // 000B GETMET R2 R1 K3 + 0xA406BE00, // 000A IMPORT R1 K95 + 0x8C08036A, // 000B GETMET R2 R1 K106 0x7C080200, // 000C CALL R2 1 0x600C0015, // 000D GETGBL R3 G21 0x7C0C0000, // 000E CALL R3 0 - 0x8C0C0704, // 000F GETMET R3 R3 K4 - 0x88140105, // 0010 GETMBR R5 R0 K5 + 0x8C0C076B, // 000F GETMET R3 R3 K107 + 0x8814016C, // 0010 GETMBR R5 R0 K108 0x7C0C0400, // 0011 CALL R3 2 - 0x8C100506, // 0012 GETMET R4 R2 K6 - 0x88180100, // 0013 GETMBR R6 R0 K0 - 0x881C0101, // 0014 GETMBR R7 R0 K1 + 0x8C10056D, // 0012 GETMET R4 R2 K109 + 0x8818013D, // 0013 GETMBR R6 R0 K61 + 0x881C0109, // 0014 GETMBR R7 R0 K9 0x5C200600, // 0015 MOVE R8 R3 0x5426000F, // 0016 LDINT R9 16 0x7C100A00, // 0017 CALL R4 5 @@ -1834,24 +1707,20 @@ be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(deleted), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(rtc_utc), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(mark_for_deletion), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8060200, // 0000 GETNGBL R1 K1 - 0x8C040302, // 0001 GETMET R1 R1 K2 + 0xB806C800, // 0000 GETNGBL R1 K100 + 0x8C040365, // 0001 GETMET R1 R1 K101 0x7C040200, // 0002 CALL R1 1 - 0x90020001, // 0003 SETMBR R0 K0 R1 + 0x90028201, // 0003 SETMBR R0 K65 R1 0x80000000, // 0004 RET 0 }) ) @@ -1866,29 +1735,23 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(admin_vendor), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(get_vendor_name), - /* K4 */ be_nested_str_weak(0x_X2504X), - }), + &be_ktab_class_Matter_Fabric, /* shared constants */ be_str_weak(get_admin_vendor_name), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010C, // 0000 GETMBR R1 R0 K12 0x4C080000, // 0001 LDNIL R2 0x1C080202, // 0002 EQ R2 R1 R2 0x780A0000, // 0003 JMPF R2 #0005 - 0x80060200, // 0004 RET 1 K1 - 0xB80A0400, // 0005 GETNGBL R2 K2 - 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x8006C400, // 0004 RET 1 K98 + 0xB80A2200, // 0005 GETNGBL R2 K17 + 0x8C08056E, // 0006 GETMET R2 R2 K110 0x5C100200, // 0007 MOVE R4 R1 0x7C080400, // 0008 CALL R2 2 0x4C0C0000, // 0009 LDNIL R3 @@ -1897,7 +1760,7 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */ 0x80040400, // 000C RET 1 R2 0x70020004, // 000D JMP #0013 0x600C0018, // 000E GETGBL R3 G24 - 0x58100004, // 000F LDCONST R4 K4 + 0x5810006F, // 000F LDCONST R4 K111 0x5C140200, // 0010 MOVE R5 R1 0x7C0C0400, // 0011 CALL R3 2 0x80040600, // 0012 RET 1 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h index 47e4869fc..0693c89b7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h @@ -3,6 +3,89 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_HTTP_async' ktab size: 79, total: 152 (saved 584 bytes) +static const bvalue be_ktab_class_Matter_HTTP_async[79] = { + /* K0 */ be_nested_str_weak(is_chunked), + /* K1 */ be_nested_str_weak(chunk_size), + /* K2 */ be_nested_str_weak(global), + /* K3 */ be_nested_str_weak(_re_http_chunk), + /* K4 */ be_nested_str_weak(match2), + /* K5 */ be_nested_str_weak(response), + /* K6 */ be_nested_str_weak(response_offset), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(0x), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(status), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(), + /* K13 */ be_nested_str_weak(close), + /* K14 */ be_nested_str_weak(payload), + /* K15 */ be_const_int(2147483647), + /* K16 */ be_nested_str_weak(string), + /* K17 */ be_nested_str_weak(tolower), + /* K18 */ be_nested_str_weak(transfer_X2Dencoding), + /* K19 */ be_nested_str_weak(chunked), + /* K20 */ be_nested_str_weak(find), + /* K21 */ be_nested_str_weak(_X40), + /* K22 */ be_const_int(0), + /* K23 */ be_nested_str_weak(auth), + /* K24 */ be_nested_str_weak(fromstring), + /* K25 */ be_const_int(1), + /* K26 */ be_nested_str_weak(tob64), + /* K27 */ be_nested_str_weak(init), + /* K28 */ be_nested_str_weak(compile_re), + /* K29 */ be_nested_str_weak(phase), + /* K30 */ be_nested_str_weak(parse_http_status_line), + /* K31 */ be_nested_str_weak(parse_http_headers), + /* K32 */ be_const_int(2), + /* K33 */ be_nested_str_weak(parse_http_payload), + /* K34 */ be_nested_str_weak(http_status), + /* K35 */ be_nested_str_weak(event_http_failed), + /* K36 */ be_nested_str_weak(reset), + /* K37 */ be_nested_str_weak(cmd), + /* K38 */ be_nested_str_weak(begin), + /* K39 */ be_nested_str_weak(send_http), + /* K40 */ be_nested_str_weak(_re_http_header), + /* K41 */ be_nested_str_weak(event_http_header), + /* K42 */ be_nested_str_weak(_re_http_body), + /* K43 */ be_nested_str_weak(event_http_headers_end), + /* K44 */ be_nested_str_weak(receive), + /* K45 */ be_nested_str_weak(event_http_timeout), + /* K46 */ be_nested_str_weak(re), + /* K47 */ be_nested_str_weak(contains), + /* K48 */ be_nested_str_weak(_re_http_status), + /* K49 */ be_nested_str_weak(compile), + /* K50 */ be_nested_str_weak(HTTP_STATUS_REGEX), + /* K51 */ be_nested_str_weak(HTTP_HEADER_REGEX), + /* K52 */ be_nested_str_weak(HTTP_BODY_REGEX), + /* K53 */ be_nested_str_weak(HTTP_CHUNK_REGEX), + /* K54 */ be_nested_str_weak(event_http_finished), + /* K55 */ be_nested_str_weak(timeout), + /* K56 */ be_nested_str_weak(set_timeout), + /* K57 */ be_nested_str_weak(SPINLOCK), + /* K58 */ be_nested_str_weak(loop), + /* K59 */ be_nested_str_weak(tasmota), + /* K60 */ be_nested_str_weak(delay), + /* K61 */ be_nested_str_weak(addr), + /* K62 */ be_nested_str_weak(_X3A), + /* K63 */ be_nested_str_weak(_X5B), + /* K64 */ be_nested_str_weak(_X5D), + /* K65 */ be_nested_str_weak(HTTP_GET), + /* K66 */ be_nested_str_weak(port), + /* K67 */ be_nested_str_weak(HTTP_GET_AUTH), + /* K68 */ be_nested_str_weak(write), + /* K69 */ be_const_int(2147483647), + /* K70 */ be_nested_str_weak(status_code), + /* K71 */ be_const_int(1), + /* K72 */ be_nested_str_weak(tcp_connected), + /* K73 */ be_nested_str_weak(millis), + /* K74 */ be_nested_str_weak(time_start), + /* K75 */ be_nested_str_weak(tcp), + /* K76 */ be_nested_str_weak(available), + /* K77 */ be_nested_str_weak(read), + /* K78 */ be_nested_str_weak(parse_http_response), +}; + extern const bclass be_class_Matter_HTTP_async; @@ -13,30 +96,13 @@ be_local_closure(class_Matter_HTTP_async_parse_http_payload, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(is_chunked), - /* K1 */ be_nested_str_weak(chunk_size), - /* K2 */ be_nested_str_weak(global), - /* K3 */ be_nested_str_weak(_re_http_chunk), - /* K4 */ be_nested_str_weak(match2), - /* K5 */ be_nested_str_weak(response), - /* K6 */ be_nested_str_weak(response_offset), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(0x), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(status), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(close), - /* K14 */ be_nested_str_weak(payload), - /* K15 */ be_const_int(2147483647), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(parse_http_payload), &be_const_str_solidified, ( &(const binstruction[82]) { /* code */ @@ -135,13 +201,13 @@ be_local_closure(class_Matter_HTTP_async_event_http_finished, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_http_finished), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -159,40 +225,34 @@ be_local_closure(class_Matter_HTTP_async_event_http_header, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tolower), - /* K2 */ be_nested_str_weak(transfer_X2Dencoding), - /* K3 */ be_nested_str_weak(chunked), - /* K4 */ be_nested_str_weak(is_chunked), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_http_header), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100701, // 0001 GETMET R4 R3 K1 + 0xA40E2000, // 0000 IMPORT R3 K16 + 0x8C100711, // 0001 GETMET R4 R3 K17 0x5C180200, // 0002 MOVE R6 R1 0x7C100400, // 0003 CALL R4 2 0x5C040800, // 0004 MOVE R1 R4 - 0x8C100701, // 0005 GETMET R4 R3 K1 + 0x8C100711, // 0005 GETMET R4 R3 K17 0x5C180400, // 0006 MOVE R6 R2 0x7C100400, // 0007 CALL R4 2 0x5C080800, // 0008 MOVE R2 R4 - 0x1C100302, // 0009 EQ R4 R1 K2 + 0x1C100312, // 0009 EQ R4 R1 K18 0x78120006, // 000A JMPF R4 #0012 - 0x8C100701, // 000B GETMET R4 R3 K1 + 0x8C100711, // 000B GETMET R4 R3 K17 0x5C180400, // 000C MOVE R6 R2 0x7C100400, // 000D CALL R4 2 - 0x1C100903, // 000E EQ R4 R4 K3 + 0x1C100913, // 000E EQ R4 R4 K19 0x78120001, // 000F JMPF R4 #0012 0x50100200, // 0010 LDBOOL R4 1 0 - 0x90020804, // 0011 SETMBR R0 K4 R4 + 0x90020004, // 0011 SETMBR R0 K0 R4 0x80000000, // 0012 RET 0 }) ) @@ -207,62 +267,50 @@ be_local_closure(class_Matter_HTTP_async_init, /* name */ be_nested_proto( 13, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X40), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(auth), - /* K5 */ be_nested_str_weak(fromstring), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(tob64), - /* K8 */ be_const_int(2147483647), - /* K9 */ be_nested_str_weak(init), - /* K10 */ be_nested_str_weak(compile_re), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[36]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 + 0xA4162000, // 0000 IMPORT R5 K16 0x60180008, // 0001 GETGBL R6 G8 0x5C1C0200, // 0002 MOVE R7 R1 0x7C180200, // 0003 CALL R6 1 0x5C040C00, // 0004 MOVE R1 R6 - 0x8C180B01, // 0005 GETMET R6 R5 K1 + 0x8C180B14, // 0005 GETMET R6 R5 K20 0x5C200200, // 0006 MOVE R8 R1 - 0x58240002, // 0007 LDCONST R9 K2 + 0x58240015, // 0007 LDCONST R9 K21 0x7C180600, // 0008 CALL R6 3 - 0x281C0D03, // 0009 GE R7 R6 K3 + 0x281C0D16, // 0009 GE R7 R6 K22 0x781E000C, // 000A JMPF R7 #0018 0x601C0015, // 000B GETGBL R7 G21 0x7C1C0000, // 000C CALL R7 0 - 0x8C1C0F05, // 000D GETMET R7 R7 K5 - 0x04240D06, // 000E SUB R9 R6 K6 - 0x40260609, // 000F CONNECT R9 K3 R9 + 0x8C1C0F18, // 000D GETMET R7 R7 K24 + 0x04240D19, // 000E SUB R9 R6 K25 + 0x40262C09, // 000F CONNECT R9 K22 R9 0x94240209, // 0010 GETIDX R9 R1 R9 0x7C1C0400, // 0011 CALL R7 2 - 0x8C1C0F07, // 0012 GETMET R7 R7 K7 + 0x8C1C0F1A, // 0012 GETMET R7 R7 K26 0x7C1C0200, // 0013 CALL R7 1 - 0x90020807, // 0014 SETMBR R0 K4 R7 - 0x001C0D06, // 0015 ADD R7 R6 K6 - 0x401C0F08, // 0016 CONNECT R7 R7 K8 + 0x90022E07, // 0014 SETMBR R0 K23 R7 + 0x001C0D19, // 0015 ADD R7 R6 K25 + 0x401C0F0F, // 0016 CONNECT R7 R7 K15 0x94040207, // 0017 GETIDX R1 R1 R7 0x601C0003, // 0018 GETGBL R7 G3 0x5C200000, // 0019 MOVE R8 R0 0x7C1C0200, // 001A CALL R7 1 - 0x8C1C0F09, // 001B GETMET R7 R7 K9 + 0x8C1C0F1B, // 001B GETMET R7 R7 K27 0x5C240200, // 001C MOVE R9 R1 0x5C280400, // 001D MOVE R10 R2 0x5C2C0600, // 001E MOVE R11 R3 0x5C300800, // 001F MOVE R12 R4 0x7C1C0A00, // 0020 CALL R7 5 - 0x8C1C010A, // 0021 GETMET R7 R0 K10 + 0x8C1C011C, // 0021 GETMET R7 R0 K28 0x7C1C0200, // 0022 CALL R7 1 0x80000000, // 0023 RET 0 }) @@ -278,13 +326,13 @@ be_local_closure(class_Matter_HTTP_async_event_http_failed, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_http_failed), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -302,40 +350,32 @@ be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(phase), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(parse_http_status_line), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(parse_http_headers), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(parse_http_payload), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(parse_http_response), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x1C040301, // 0001 EQ R1 R1 K1 + 0x8804011D, // 0000 GETMBR R1 R0 K29 + 0x1C040316, // 0001 EQ R1 R1 K22 0x78060002, // 0002 JMPF R1 #0006 - 0x8C040102, // 0003 GETMET R1 R0 K2 + 0x8C04011E, // 0003 GETMET R1 R0 K30 0x7C040200, // 0004 CALL R1 1 0x7002000A, // 0005 JMP #0011 - 0x88040100, // 0006 GETMBR R1 R0 K0 - 0x1C040303, // 0007 EQ R1 R1 K3 + 0x8804011D, // 0006 GETMBR R1 R0 K29 + 0x1C040319, // 0007 EQ R1 R1 K25 0x78060002, // 0008 JMPF R1 #000C - 0x8C040104, // 0009 GETMET R1 R0 K4 + 0x8C04011F, // 0009 GETMET R1 R0 K31 0x7C040200, // 000A CALL R1 1 0x70020004, // 000B JMP #0011 - 0x88040100, // 000C GETMBR R1 R0 K0 - 0x1C040305, // 000D EQ R1 R1 K5 + 0x8804011D, // 000C GETMBR R1 R0 K29 + 0x1C040320, // 000D EQ R1 R1 K32 0x78060001, // 000E JMPF R1 #0011 - 0x8C040106, // 000F GETMET R1 R0 K6 + 0x8C040121, // 000F GETMET R1 R0 K33 0x7C040200, // 0010 CALL R1 1 0x80000000, // 0011 RET 0 }) @@ -351,22 +391,19 @@ be_local_closure(class_Matter_HTTP_async_event_refused, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(http_status), - /* K1 */ be_nested_str_weak(event_http_failed), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_refused), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFFE, // 0000 LDINT R1 -1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x90024401, // 0001 SETMBR R0 K34 R1 + 0x8C040123, // 0002 GETMET R1 R0 K35 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -382,45 +419,33 @@ be_local_closure(class_Matter_HTTP_async_reset, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(cmd), - /* K2 */ be_nested_str_weak(response), - /* K3 */ be_nested_str_weak(response_offset), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(payload), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(phase), - /* K8 */ be_nested_str_weak(http_status), - /* K9 */ be_nested_str_weak(is_chunked), - /* K10 */ be_nested_str_weak(chunk_size), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x8C040324, // 0003 GETMET R1 R1 K36 0x7C040200, // 0004 CALL R1 1 0x4C040000, // 0005 LDNIL R1 - 0x90020201, // 0006 SETMBR R0 K1 R1 + 0x90024A01, // 0006 SETMBR R0 K37 R1 0x4C040000, // 0007 LDNIL R1 - 0x90020401, // 0008 SETMBR R0 K2 R1 - 0x90020704, // 0009 SETMBR R0 K3 K4 - 0x90020B06, // 000A SETMBR R0 K5 K6 - 0x90020F04, // 000B SETMBR R0 K7 K4 - 0x90021104, // 000C SETMBR R0 K8 K4 + 0x90020A01, // 0008 SETMBR R0 K5 R1 + 0x90020D16, // 0009 SETMBR R0 K6 K22 + 0x90021D0C, // 000A SETMBR R0 K14 K12 + 0x90023B16, // 000B SETMBR R0 K29 K22 + 0x90024516, // 000C SETMBR R0 K34 K22 0x50040000, // 000D LDBOOL R1 0 0 - 0x90021201, // 000E SETMBR R0 K9 R1 + 0x90020001, // 000E SETMBR R0 K0 R1 0x4C040000, // 000F LDNIL R1 - 0x90021401, // 0010 SETMBR R0 K10 R1 + 0x90020201, // 0010 SETMBR R0 K1 R1 0x80000000, // 0011 RET 0 }) ) @@ -435,25 +460,22 @@ be_local_closure(class_Matter_HTTP_async_begin, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(begin), - /* K1 */ be_nested_str_weak(cmd), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(begin), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080526, // 0003 GETMET R2 R2 K38 0x7C080200, // 0004 CALL R2 1 - 0x90020201, // 0005 SETMBR R0 K1 R1 + 0x90024A01, // 0005 SETMBR R0 K37 R1 0x80040400, // 0006 RET 1 R2 }) ) @@ -468,19 +490,17 @@ be_local_closure(class_Matter_HTTP_async_event_established, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(send_http), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_established), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -496,66 +516,48 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_re_http_header), - /* K2 */ be_nested_str_weak(match2), - /* K3 */ be_nested_str_weak(response), - /* K4 */ be_nested_str_weak(response_offset), - /* K5 */ be_nested_str_weak(event_http_header), - /* K6 */ be_const_int(1), - /* K7 */ be_const_int(2), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(_re_http_body), - /* K10 */ be_nested_str_weak(event_http_headers_end), - /* K11 */ be_nested_str_weak(phase), - /* K12 */ be_nested_str_weak(parse_http_payload), - /* K13 */ be_nested_str_weak(close), - /* K14 */ be_nested_str_weak(status), - /* K15 */ be_nested_str_weak(http_status), - /* K16 */ be_nested_str_weak(event_http_failed), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(parse_http_headers), &be_const_str_solidified, ( &(const binstruction[47]) { /* code */ 0x50040200, // 0000 LDBOOL R1 1 0 0x7806002B, // 0001 JMPF R1 #002E - 0xB8060000, // 0002 GETNGBL R1 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 - 0x8C040302, // 0004 GETMET R1 R1 K2 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x88100104, // 0006 GETMBR R4 R0 K4 + 0xB8060400, // 0002 GETNGBL R1 K2 + 0x88040328, // 0003 GETMBR R1 R1 K40 + 0x8C040304, // 0004 GETMET R1 R1 K4 + 0x880C0105, // 0005 GETMBR R3 R0 K5 + 0x88100106, // 0006 GETMBR R4 R0 K6 0x7C040600, // 0007 CALL R1 3 0x78060008, // 0008 JMPF R1 #0012 - 0x8C080105, // 0009 GETMET R2 R0 K5 - 0x94100306, // 000A GETIDX R4 R1 K6 - 0x94140307, // 000B GETIDX R5 R1 K7 + 0x8C080129, // 0009 GETMET R2 R0 K41 + 0x94100319, // 000A GETIDX R4 R1 K25 + 0x94140320, // 000B GETIDX R5 R1 K32 0x7C080600, // 000C CALL R2 3 - 0x88080104, // 000D GETMBR R2 R0 K4 - 0x940C0308, // 000E GETIDX R3 R1 K8 + 0x88080106, // 000D GETMBR R2 R0 K6 + 0x940C0307, // 000E GETIDX R3 R1 K7 0x00080403, // 000F ADD R2 R2 R3 - 0x90020802, // 0010 SETMBR R0 K4 R2 + 0x90020C02, // 0010 SETMBR R0 K6 R2 0x7002001A, // 0011 JMP #002D - 0xB80A0000, // 0012 GETNGBL R2 K0 - 0x88080509, // 0013 GETMBR R2 R2 K9 - 0x8C080502, // 0014 GETMET R2 R2 K2 - 0x88100103, // 0015 GETMBR R4 R0 K3 - 0x88140104, // 0016 GETMBR R5 R0 K4 + 0xB80A0400, // 0012 GETNGBL R2 K2 + 0x8808052A, // 0013 GETMBR R2 R2 K42 + 0x8C080504, // 0014 GETMET R2 R2 K4 + 0x88100105, // 0015 GETMBR R4 R0 K5 + 0x88140106, // 0016 GETMBR R5 R0 K6 0x7C080600, // 0017 CALL R2 3 0x780A0004, // 0018 JMPF R2 #001E - 0x8C0C010A, // 0019 GETMET R3 R0 K10 + 0x8C0C012B, // 0019 GETMET R3 R0 K43 0x7C0C0200, // 001A CALL R3 1 - 0x90021707, // 001B SETMBR R0 K11 K7 - 0x8C0C010C, // 001C GETMET R3 R0 K12 + 0x90023B20, // 001B SETMBR R0 K29 K32 + 0x8C0C0121, // 001C GETMET R3 R0 K33 0x7C0C0200, // 001D CALL R3 1 0x600C000C, // 001E GETGBL R3 G12 - 0x88100103, // 001F GETMBR R4 R0 K3 + 0x88100105, // 001F GETMBR R4 R0 K5 0x7C0C0200, // 0020 CALL R3 1 0x541203FF, // 0021 LDINT R4 1024 0x240C0604, // 0022 GT R3 R3 R4 @@ -563,10 +565,10 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0x8C0C010D, // 0024 GETMET R3 R0 K13 0x7C0C0200, // 0025 CALL R3 1 0x540DFFFB, // 0026 LDINT R3 -4 - 0x90021C03, // 0027 SETMBR R0 K14 R3 + 0x90021403, // 0027 SETMBR R0 K10 R3 0x540DFFFE, // 0028 LDINT R3 -1 - 0x90021E03, // 0029 SETMBR R0 K15 R3 - 0x8C0C0110, // 002A GETMET R3 R0 K16 + 0x90024403, // 0029 SETMBR R0 K34 R3 + 0x8C0C0123, // 002A GETMET R3 R0 K35 0x7C0C0200, // 002B CALL R3 1 0x80000600, // 002C RET 0 0x7001FFD1, // 002D JMP #0000 @@ -584,19 +586,17 @@ be_local_closure(class_Matter_HTTP_async_event_available, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(receive), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_available), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04012C, // 0000 GETMET R1 R0 K44 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -612,22 +612,19 @@ be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(http_status), - /* K1 */ be_nested_str_weak(event_http_timeout), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_timeout), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFFD, // 0000 LDINT R1 -2 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x90024401, // 0001 SETMBR R0 K34 R1 + 0x8C04012D, // 0002 GETMET R1 R0 K45 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -643,55 +640,42 @@ be_local_closure(class_Matter_HTTP_async_compile_re, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(re), - /* K1 */ be_nested_str_weak(global), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(_re_http_status), - /* K4 */ be_nested_str_weak(compile), - /* K5 */ be_nested_str_weak(HTTP_STATUS_REGEX), - /* K6 */ be_nested_str_weak(_re_http_header), - /* K7 */ be_nested_str_weak(HTTP_HEADER_REGEX), - /* K8 */ be_nested_str_weak(_re_http_body), - /* K9 */ be_nested_str_weak(HTTP_BODY_REGEX), - /* K10 */ be_nested_str_weak(_re_http_chunk), - /* K11 */ be_nested_str_weak(HTTP_CHUNK_REGEX), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(compile_re), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0200, // 0001 GETNGBL R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x58100003, // 0003 LDCONST R4 K3 + 0xA4065C00, // 0000 IMPORT R1 K46 + 0xB80A0400, // 0001 GETNGBL R2 K2 + 0x8C08052F, // 0002 GETMET R2 R2 K47 + 0x58100030, // 0003 LDCONST R4 K48 0x7C080400, // 0004 CALL R2 2 0x740A0013, // 0005 JMPT R2 #001A - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C0C0304, // 0007 GETMET R3 R1 K4 - 0x88140105, // 0008 GETMBR R5 R0 K5 + 0xB80A0400, // 0006 GETNGBL R2 K2 + 0x8C0C0331, // 0007 GETMET R3 R1 K49 + 0x88140132, // 0008 GETMBR R5 R0 K50 0x7C0C0400, // 0009 CALL R3 2 - 0x900A0603, // 000A SETMBR R2 K3 R3 - 0xB80A0200, // 000B GETNGBL R2 K1 - 0x8C0C0304, // 000C GETMET R3 R1 K4 - 0x88140107, // 000D GETMBR R5 R0 K7 + 0x900A6003, // 000A SETMBR R2 K48 R3 + 0xB80A0400, // 000B GETNGBL R2 K2 + 0x8C0C0331, // 000C GETMET R3 R1 K49 + 0x88140133, // 000D GETMBR R5 R0 K51 0x7C0C0400, // 000E CALL R3 2 - 0x900A0C03, // 000F SETMBR R2 K6 R3 - 0xB80A0200, // 0010 GETNGBL R2 K1 - 0x8C0C0304, // 0011 GETMET R3 R1 K4 - 0x88140109, // 0012 GETMBR R5 R0 K9 + 0x900A5003, // 000F SETMBR R2 K40 R3 + 0xB80A0400, // 0010 GETNGBL R2 K2 + 0x8C0C0331, // 0011 GETMET R3 R1 K49 + 0x88140134, // 0012 GETMBR R5 R0 K52 0x7C0C0400, // 0013 CALL R3 2 - 0x900A1003, // 0014 SETMBR R2 K8 R3 - 0xB80A0200, // 0015 GETNGBL R2 K1 - 0x8C0C0304, // 0016 GETMET R3 R1 K4 - 0x8814010B, // 0017 GETMBR R5 R0 K11 + 0x900A5403, // 0014 SETMBR R2 K42 R3 + 0xB80A0400, // 0015 GETNGBL R2 K2 + 0x8C0C0331, // 0016 GETMET R3 R1 K49 + 0x88140135, // 0017 GETMBR R5 R0 K53 0x7C0C0400, // 0018 CALL R3 2 - 0x900A1403, // 0019 SETMBR R2 K10 R3 + 0x900A0603, // 0019 SETMBR R2 K3 R3 0x80000000, // 001A RET 0 }) ) @@ -706,26 +690,21 @@ be_local_closure(class_Matter_HTTP_async_event_closed, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(http_status), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(event_http_finished), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_closed), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x1C040301, // 0001 EQ R1 R1 K1 + 0x88040122, // 0000 GETMBR R1 R0 K34 + 0x1C040316, // 0001 EQ R1 R1 K22 0x78060002, // 0002 JMPF R1 #0006 - 0x90020102, // 0003 SETMBR R0 K0 K2 - 0x8C040103, // 0004 GETMET R1 R0 K3 + 0x90024509, // 0003 SETMBR R0 K34 K9 + 0x8C040136, // 0004 GETMET R1 R0 K54 0x7C040200, // 0005 CALL R1 1 0x80000000, // 0006 RET 0 }) @@ -741,57 +720,46 @@ be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(timeout), - /* K1 */ be_nested_str_weak(set_timeout), - /* K2 */ be_nested_str_weak(SPINLOCK), - /* K3 */ be_nested_str_weak(begin), - /* K4 */ be_nested_str_weak(http_status), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(loop), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(delay), - /* K9 */ be_nested_str_weak(payload), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(begin_sync), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C0137, // 0000 GETMBR R3 R0 K55 0x4C100000, // 0001 LDNIL R4 0x20100404, // 0002 NE R4 R2 R4 0x78120002, // 0003 JMPF R4 #0007 - 0x8C100101, // 0004 GETMET R4 R0 K1 + 0x8C100138, // 0004 GETMET R4 R0 K56 0x5C180400, // 0005 MOVE R6 R2 0x7C100400, // 0006 CALL R4 2 0x4C100000, // 0007 LDNIL R4 - 0x88140102, // 0008 GETMBR R5 R0 K2 - 0x8C180103, // 0009 GETMET R6 R0 K3 + 0x88140139, // 0008 GETMBR R5 R0 K57 + 0x8C180126, // 0009 GETMET R6 R0 K38 0x5C200200, // 000A MOVE R8 R1 0x7C180400, // 000B CALL R6 2 0x781A0009, // 000C JMPF R6 #0017 - 0x881C0104, // 000D GETMBR R7 R0 K4 - 0x1C1C0F05, // 000E EQ R7 R7 K5 + 0x881C0122, // 000D GETMBR R7 R0 K34 + 0x1C1C0F16, // 000E EQ R7 R7 K22 0x781E0006, // 000F JMPF R7 #0017 - 0x8C1C0106, // 0010 GETMET R7 R0 K6 + 0x8C1C013A, // 0010 GETMET R7 R0 K58 0x7C1C0200, // 0011 CALL R7 1 - 0xB81E0E00, // 0012 GETNGBL R7 K7 - 0x8C1C0F08, // 0013 GETMET R7 R7 K8 + 0xB81E7600, // 0012 GETNGBL R7 K59 + 0x8C1C0F3C, // 0013 GETMET R7 R7 K60 0x5C240A00, // 0014 MOVE R9 R5 0x7C1C0400, // 0015 CALL R7 2 0x7001FFF5, // 0016 JMP #000D - 0x8C1C0101, // 0017 GETMET R7 R0 K1 + 0x8C1C0138, // 0017 GETMET R7 R0 K56 0x5C240600, // 0018 MOVE R9 R3 0x7C1C0400, // 0019 CALL R7 2 - 0x881C0104, // 001A GETMBR R7 R0 K4 - 0x241C0F05, // 001B GT R7 R7 K5 + 0x881C0122, // 001A GETMBR R7 R0 K34 + 0x241C0F16, // 001B GT R7 R7 K22 0x781E0001, // 001C JMPF R7 #001F - 0x881C0109, // 001D GETMBR R7 R0 K9 + 0x881C010E, // 001D GETMBR R7 R0 K14 0x70020000, // 001E JMP #0020 0x4C1C0000, // 001F LDNIL R7 0x80040E00, // 0020 RET 1 R7 @@ -808,70 +776,50 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(response), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(addr), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(_X3A), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(_X5B), - /* K8 */ be_nested_str_weak(_X5D), - /* K9 */ be_nested_str_weak(auth), - /* K10 */ be_nested_str_weak(HTTP_GET), - /* K11 */ be_nested_str_weak(cmd), - /* K12 */ be_nested_str_weak(port), - /* K13 */ be_nested_str_weak(HTTP_GET_AUTH), - /* K14 */ be_nested_str_weak(write), - /* K15 */ be_nested_str_weak(close), - /* K16 */ be_nested_str_weak(status), - /* K17 */ be_nested_str_weak(http_status), - /* K18 */ be_nested_str_weak(event_http_failed), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(send_http), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x90020302, // 0001 SETMBR R0 K1 K2 - 0x88080103, // 0002 GETMBR R2 R0 K3 - 0x8C0C0304, // 0003 GETMET R3 R1 K4 + 0xA4062000, // 0000 IMPORT R1 K16 + 0x90020B0C, // 0001 SETMBR R0 K5 K12 + 0x8808013D, // 0002 GETMBR R2 R0 K61 + 0x8C0C0314, // 0003 GETMET R3 R1 K20 0x5C140400, // 0004 MOVE R5 R2 - 0x58180005, // 0005 LDCONST R6 K5 + 0x5818003E, // 0005 LDCONST R6 K62 0x7C0C0600, // 0006 CALL R3 3 - 0x280C0706, // 0007 GE R3 R3 K6 + 0x280C0707, // 0007 GE R3 R3 K7 0x780E0002, // 0008 JMPF R3 #000C - 0x000E0E02, // 0009 ADD R3 K7 R2 - 0x000C0708, // 000A ADD R3 R3 K8 + 0x000E7E02, // 0009 ADD R3 K63 R2 + 0x000C0740, // 000A ADD R3 R3 K64 0x5C080600, // 000B MOVE R2 R3 0x4C0C0000, // 000C LDNIL R3 - 0x88100109, // 000D GETMBR R4 R0 K9 + 0x88100117, // 000D GETMBR R4 R0 K23 0x4C140000, // 000E LDNIL R5 0x1C100805, // 000F EQ R4 R4 R5 0x78120007, // 0010 JMPF R4 #0019 0x60100018, // 0011 GETGBL R4 G24 - 0x8814010A, // 0012 GETMBR R5 R0 K10 - 0x8818010B, // 0013 GETMBR R6 R0 K11 + 0x88140141, // 0012 GETMBR R5 R0 K65 + 0x88180125, // 0013 GETMBR R6 R0 K37 0x5C1C0400, // 0014 MOVE R7 R2 - 0x8820010C, // 0015 GETMBR R8 R0 K12 + 0x88200142, // 0015 GETMBR R8 R0 K66 0x7C100800, // 0016 CALL R4 4 0x5C0C0800, // 0017 MOVE R3 R4 0x70020007, // 0018 JMP #0021 0x60100018, // 0019 GETGBL R4 G24 - 0x8814010D, // 001A GETMBR R5 R0 K13 - 0x8818010B, // 001B GETMBR R6 R0 K11 + 0x88140143, // 001A GETMBR R5 R0 K67 + 0x88180125, // 001B GETMBR R6 R0 K37 0x5C1C0400, // 001C MOVE R7 R2 - 0x8820010C, // 001D GETMBR R8 R0 K12 - 0x88240109, // 001E GETMBR R9 R0 K9 + 0x88200142, // 001D GETMBR R8 R0 K66 + 0x88240117, // 001E GETMBR R9 R0 K23 0x7C100A00, // 001F CALL R4 5 0x5C0C0800, // 0020 MOVE R3 R4 - 0x8C10010E, // 0021 GETMET R4 R0 K14 + 0x8C100144, // 0021 GETMET R4 R0 K68 0x5C180600, // 0022 MOVE R6 R3 0x7C100400, // 0023 CALL R4 2 0x6014000C, // 0024 GETGBL R5 G12 @@ -879,13 +827,13 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ 0x7C140200, // 0026 CALL R5 1 0x20140805, // 0027 NE R5 R4 R5 0x78160007, // 0028 JMPF R5 #0031 - 0x8C14010F, // 0029 GETMET R5 R0 K15 + 0x8C14010D, // 0029 GETMET R5 R0 K13 0x7C140200, // 002A CALL R5 1 0x5415FFFB, // 002B LDINT R5 -4 - 0x90022005, // 002C SETMBR R0 K16 R5 + 0x90021405, // 002C SETMBR R0 K10 R5 0x5415FFFE, // 002D LDINT R5 -1 - 0x90022205, // 002E SETMBR R0 K17 R5 - 0x8C140112, // 002F GETMET R5 R0 K18 + 0x90024405, // 002E SETMBR R0 K34 R5 + 0x8C140123, // 002F GETMET R5 R0 K35 0x7C140200, // 0030 CALL R5 1 0x80000000, // 0031 RET 0 }) @@ -901,30 +849,25 @@ be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(response_offset), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(response), - /* K3 */ be_const_int(2147483647), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_http_headers_end), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x24040301, // 0001 GT R1 R1 K1 + 0x88040106, // 0000 GETMBR R1 R0 K6 + 0x24040316, // 0001 GT R1 R1 K22 0x78060005, // 0002 JMPF R1 #0009 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x40040303, // 0004 CONNECT R1 R1 K3 - 0x88080102, // 0005 GETMBR R2 R0 K2 + 0x88040106, // 0003 GETMBR R1 R0 K6 + 0x40040345, // 0004 CONNECT R1 R1 K69 + 0x88080105, // 0005 GETMBR R2 R0 K5 0x94040401, // 0006 GETIDX R1 R2 R1 - 0x90020401, // 0007 SETMBR R0 K2 R1 - 0x90020101, // 0008 SETMBR R0 K0 K1 + 0x90020A01, // 0007 SETMBR R0 K5 R1 + 0x90020D16, // 0008 SETMBR R0 K6 K22 0x80000000, // 0009 RET 0 }) ) @@ -939,19 +882,17 @@ be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */ be_nested_proto( 3, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(status_code), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_http_status_code), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90028C01, // 0000 SETMBR R0 K70 R1 0x80000000, // 0001 RET 0 }) ) @@ -966,56 +907,43 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_re_http_status), - /* K2 */ be_nested_str_weak(match2), - /* K3 */ be_nested_str_weak(response), - /* K4 */ be_nested_str_weak(response_offset), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(status_code), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(phase), - /* K9 */ be_nested_str_weak(parse_http_headers), - /* K10 */ be_nested_str_weak(close), - /* K11 */ be_nested_str_weak(status), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(parse_http_status_line), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C040302, // 0002 GETMET R1 R1 K2 - 0x880C0103, // 0003 GETMBR R3 R0 K3 - 0x88100104, // 0004 GETMBR R4 R0 K4 + 0xB8060400, // 0000 GETNGBL R1 K2 + 0x88040330, // 0001 GETMBR R1 R1 K48 + 0x8C040304, // 0002 GETMET R1 R1 K4 + 0x880C0105, // 0003 GETMBR R3 R0 K5 + 0x88100106, // 0004 GETMBR R4 R0 K6 0x7C040600, // 0005 CALL R1 3 0x78060009, // 0006 JMPF R1 #0011 - 0x94080305, // 0007 GETIDX R2 R1 K5 - 0x90020802, // 0008 SETMBR R0 K4 R2 + 0x94080307, // 0007 GETIDX R2 R1 K7 + 0x90020C02, // 0008 SETMBR R0 K6 R2 0x60080009, // 0009 GETGBL R2 G9 - 0x940C0307, // 000A GETIDX R3 R1 K7 + 0x940C0347, // 000A GETIDX R3 R1 K71 0x7C080200, // 000B CALL R2 1 - 0x90020C02, // 000C SETMBR R0 K6 R2 - 0x90021107, // 000D SETMBR R0 K8 K7 - 0x8C080109, // 000E GETMET R2 R0 K9 + 0x90028C02, // 000C SETMBR R0 K70 R2 + 0x90023B47, // 000D SETMBR R0 K29 K71 + 0x8C08011F, // 000E GETMET R2 R0 K31 0x7C080200, // 000F CALL R2 1 0x70020009, // 0010 JMP #001B 0x6008000C, // 0011 GETGBL R2 G12 - 0x880C0103, // 0012 GETMBR R3 R0 K3 + 0x880C0105, // 0012 GETMBR R3 R0 K5 0x7C080200, // 0013 CALL R2 1 0x540E0063, // 0014 LDINT R3 100 0x24080403, // 0015 GT R2 R2 R3 0x780A0003, // 0016 JMPF R2 #001B - 0x8C08010A, // 0017 GETMET R2 R0 K10 + 0x8C08010D, // 0017 GETMET R2 R0 K13 0x7C080200, // 0018 CALL R2 1 0x5409FFFB, // 0019 LDINT R2 -4 - 0x90021602, // 001A SETMBR R0 K11 R2 + 0x90021402, // 001A SETMBR R0 K10 R2 0x80000000, // 001B RET 0 }) ) @@ -1030,13 +958,13 @@ be_local_closure(class_Matter_HTTP_async_event_http_timeout, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(event_http_timeout), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -1054,78 +982,62 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp_connected), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(time_start), - /* K4 */ be_nested_str_weak(timeout), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(close), - /* K7 */ be_nested_str_weak(http_status), - /* K8 */ be_nested_str_weak(event_http_timeout), - /* K9 */ be_nested_str_weak(tcp), - /* K10 */ be_nested_str_weak(available), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(read), - /* K13 */ be_nested_str_weak(response), - /* K14 */ be_nested_str_weak(parse_http_response), - }), + &be_ktab_class_Matter_HTTP_async, /* shared constants */ be_str_weak(receive), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040148, // 0000 GETMBR R1 R0 K72 0x50080200, // 0001 LDBOOL R2 1 0 0x20040202, // 0002 NE R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 + 0xB8067600, // 0005 GETNGBL R1 K59 + 0x8C040349, // 0006 GETMET R1 R1 K73 0x7C040200, // 0007 CALL R1 1 - 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x8808014A, // 0008 GETMBR R2 R0 K74 0x04040202, // 0009 SUB R1 R1 R2 - 0x88080104, // 000A GETMBR R2 R0 K4 + 0x88080137, // 000A GETMBR R2 R0 K55 0x24040202, // 000B GT R1 R1 R2 0x78060008, // 000C JMPF R1 #0016 0x5405FFFC, // 000D LDINT R1 -3 - 0x90020A01, // 000E SETMBR R0 K5 R1 - 0x8C040106, // 000F GETMET R1 R0 K6 + 0x90021401, // 000E SETMBR R0 K10 R1 + 0x8C04010D, // 000F GETMET R1 R0 K13 0x7C040200, // 0010 CALL R1 1 0x5405FFFD, // 0011 LDINT R1 -2 - 0x90020E01, // 0012 SETMBR R0 K7 R1 - 0x8C040108, // 0013 GETMET R1 R0 K8 + 0x90024401, // 0012 SETMBR R0 K34 R1 + 0x8C04012D, // 0013 GETMET R1 R0 K45 0x7C040200, // 0014 CALL R1 1 0x70020018, // 0015 JMP #002F - 0x88040109, // 0016 GETMBR R1 R0 K9 - 0x8C04030A, // 0017 GETMET R1 R1 K10 + 0x8804014B, // 0016 GETMBR R1 R0 K75 + 0x8C04034C, // 0017 GETMET R1 R1 K76 0x7C040200, // 0018 CALL R1 1 - 0x5808000B, // 0019 LDCONST R2 K11 - 0x240C030B, // 001A GT R3 R1 K11 + 0x58080016, // 0019 LDCONST R2 K22 + 0x240C0316, // 001A GT R3 R1 K22 0x780E000E, // 001B JMPF R3 #002B - 0x880C0109, // 001C GETMBR R3 R0 K9 - 0x8C0C070C, // 001D GETMET R3 R3 K12 + 0x880C014B, // 001C GETMBR R3 R0 K75 + 0x8C0C074D, // 001D GETMET R3 R3 K77 0x7C0C0200, // 001E CALL R3 1 - 0x8810010D, // 001F GETMBR R4 R0 K13 + 0x88100105, // 001F GETMBR R4 R0 K5 0x00100803, // 0020 ADD R4 R4 R3 - 0x90021A04, // 0021 SETMBR R0 K13 R4 + 0x90020A04, // 0021 SETMBR R0 K5 R4 0x6010000C, // 0022 GETGBL R4 G12 0x5C140600, // 0023 MOVE R5 R3 0x7C100200, // 0024 CALL R4 1 0x00080404, // 0025 ADD R2 R2 R4 - 0x88100109, // 0026 GETMBR R4 R0 K9 - 0x8C10090A, // 0027 GETMET R4 R4 K10 + 0x8810014B, // 0026 GETMBR R4 R0 K75 + 0x8C10094C, // 0027 GETMET R4 R4 K76 0x7C100200, // 0028 CALL R4 1 0x5C040800, // 0029 MOVE R1 R4 0x7001FFEE, // 002A JMP #001A - 0x240C050B, // 002B GT R3 R2 K11 + 0x240C0516, // 002B GT R3 R2 K22 0x780E0001, // 002C JMPF R3 #002F - 0x8C0C010E, // 002D GETMET R3 R0 K14 + 0x8C0C014E, // 002D GETMET R3 R0 K78 0x7C0C0200, // 002E CALL R3 1 0x80000000, // 002F RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h index fd70c2b6e..d39dc513b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h @@ -3,6 +3,95 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_HTTP_remote' ktab size: 85, total: 161 (saved 608 bytes) +static const bvalue be_ktab_class_Matter_HTTP_remote[85] = { + /* K0 */ be_nested_str_weak(probe_update_time_map), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(probe_next_timestamp_map), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(jitter), + /* K5 */ be_nested_str_weak(add_async_cb), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(async_cb_map), + /* K8 */ be_nested_str_weak(keys), + /* K9 */ be_nested_str_weak(current_cmd), + /* K10 */ be_nested_str_weak(stop_iteration), + /* K11 */ be_nested_str_weak(info), + /* K12 */ be_nested_str_weak(find), + /* K13 */ be_nested_str_weak(DeviceName), + /* K14 */ be_nested_str_weak(Tasmota), + /* K15 */ be_nested_str_weak(name), + /* K16 */ be_nested_str_weak(remove), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20name_X3D_X27_X25s_X27), + /* K19 */ be_nested_str_weak(addr), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(change_schedule), + /* K22 */ be_nested_str_weak(UPDATE_CMD0), + /* K23 */ be_nested_str_weak(UPDATE_TIME2), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str_weak(Version), + /* K26 */ be_nested_str_weak(Hardware), + /* K27 */ be_nested_str_weak(version), + /* K28 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20version_X3D_X27_X25s_X27), + /* K29 */ be_nested_str_weak(hardware), + /* K30 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20hardware_X3D_X27_X25s_X27), + /* K31 */ be_nested_str_weak(UPDATE_CMD2), + /* K32 */ be_nested_str_weak(Mac), + /* K33 */ be_nested_str_weak(mac), + /* K34 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20mac_X3D_X27_X25s_X27), + /* K35 */ be_nested_str_weak(UPDATE_CMD5), + /* K36 */ be_nested_str_weak(info_changed), + /* K37 */ be_nested_str_weak(reachable), + /* K38 */ be_nested_str_weak(reachable_utc), + /* K39 */ be_nested_str_weak(tasmota), + /* K40 */ be_nested_str_weak(rtc_utc), + /* K41 */ be_nested_str_weak(payload), + /* K42 */ be_nested_str_weak(nil), + /* K43 */ be_nested_str_weak(_X2E_X2E_X2E), + /* K44 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K45 */ be_nested_str_weak(millis), + /* K46 */ be_nested_str_weak(time_start), + /* K47 */ be_nested_str_weak(dispatch_cb), + /* K48 */ be_nested_str_weak(http_status), + /* K49 */ be_nested_str_weak(string), + /* K50 */ be_nested_str_weak(webserver), + /* K51 */ be_nested_str_weak(wifi), + /* K52 */ be_nested_str_weak(up), + /* K53 */ be_nested_str_weak(eth), + /* K54 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), + /* K55 */ be_nested_str_weak(tr), + /* K56 */ be_nested_str_weak(_X20), + /* K57 */ be_nested_str_weak(_X2B), + /* K58 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K59 */ be_nested_str_weak(port), + /* K60 */ be_nested_str_weak(begin), + /* K61 */ be_nested_str_weak(device), + /* K62 */ be_nested_str_weak(save_param), + /* K63 */ be_nested_str_weak(seconds_to_dhm), + /* K64 */ be_nested_str_weak(init), + /* K65 */ be_nested_str_weak(add_schedule), + /* K66 */ be_nested_str_weak(UPDATE_TIME), + /* K67 */ be_nested_str_weak(device_is_alive), + /* K68 */ be_nested_str_weak(json), + /* K69 */ be_nested_str_weak(load), + /* K70 */ be_nested_str_weak(STATUS_PREFIX), + /* K71 */ be_const_int(1), + /* K72 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), + /* K73 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K74 */ be_nested_str_weak(begin_sync), + /* K75 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K76 */ be_const_int(0), + /* K77 */ be_nested_str_weak(time_reached), + /* K78 */ be_nested_str_weak(tcp_connected), + /* K79 */ be_nested_str_weak(probe_async), + /* K80 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), + /* K81 */ be_const_int(3), + /* K82 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), + /* K83 */ be_nested_str_weak(phase), + /* K84 */ be_nested_str_weak(status), +}; + extern const bclass be_class_Matter_HTTP_remote; @@ -13,20 +102,13 @@ be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */ be_nested_proto( 8, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_update_time_map), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(probe_next_timestamp_map), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(jitter), - /* K5 */ be_nested_str_weak(add_async_cb), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(add_schedule), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ @@ -68,34 +150,28 @@ be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(async_cb_map), - /* K2 */ be_nested_str_weak(keys), - /* K3 */ be_nested_str_weak(current_cmd), - /* K4 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(dispatch_cb), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 + 0x580C0006, // 0000 LDCONST R3 K6 0x60100010, // 0001 GETGBL R4 G16 - 0x88140101, // 0002 GETMBR R5 R0 K1 - 0x8C140B02, // 0003 GETMET R5 R5 K2 + 0x88140107, // 0002 GETMBR R5 R0 K7 + 0x8C140B08, // 0003 GETMET R5 R5 K8 0x7C140200, // 0004 CALL R5 1 0x7C100200, // 0005 CALL R4 1 0xA802000F, // 0006 EXBLK 0 #0017 0x5C140800, // 0007 MOVE R5 R4 0x7C140000, // 0008 CALL R5 0 - 0x88180101, // 0009 GETMBR R6 R0 K1 + 0x88180107, // 0009 GETMBR R6 R0 K7 0x94180C05, // 000A GETIDX R6 R6 R5 - 0x881C0103, // 000B GETMBR R7 R0 K3 + 0x881C0109, // 000B GETMBR R7 R0 K9 0x1C1C0C07, // 000C EQ R7 R6 R7 0x741E0002, // 000D JMPT R7 #0011 0x4C1C0000, // 000E LDNIL R7 @@ -104,10 +180,10 @@ be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */ 0x5C1C0A00, // 0011 MOVE R7 R5 0x5C200200, // 0012 MOVE R8 R1 0x5C240400, // 0013 MOVE R9 R2 - 0x88280103, // 0014 GETMBR R10 R0 K3 + 0x88280109, // 0014 GETMBR R10 R0 K9 0x7C1C0600, // 0015 CALL R7 3 0x7001FFEF, // 0016 JMP #0007 - 0x58100004, // 0017 LDCONST R4 K4 + 0x5810000A, // 0017 LDCONST R4 K10 0xAC100200, // 0018 CATCH R4 1 0 0xB0080000, // 0019 RAISE 2 R0 R0 0x80000000, // 001A RET 0 @@ -124,19 +200,17 @@ be_local_closure(class_Matter_HTTP_remote_get_info, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(info), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(get_info), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010B, // 0000 GETMBR R1 R0 K11 0x80040200, // 0001 RET 1 R1 }) ) @@ -151,183 +225,155 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(DeviceName), - /* K3 */ be_nested_str_weak(Tasmota), - /* K4 */ be_nested_str_weak(info), - /* K5 */ be_nested_str_weak(name), - /* K6 */ be_nested_str_weak(remove), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20name_X3D_X27_X25s_X27), - /* K9 */ be_nested_str_weak(addr), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(change_schedule), - /* K12 */ be_nested_str_weak(UPDATE_CMD0), - /* K13 */ be_nested_str_weak(UPDATE_TIME2), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(Version), - /* K16 */ be_nested_str_weak(Hardware), - /* K17 */ be_nested_str_weak(version), - /* K18 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20version_X3D_X27_X25s_X27), - /* K19 */ be_nested_str_weak(hardware), - /* K20 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20hardware_X3D_X27_X25s_X27), - /* K21 */ be_nested_str_weak(UPDATE_CMD2), - /* K22 */ be_nested_str_weak(Mac), - /* K23 */ be_nested_str_weak(mac), - /* K24 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20mac_X3D_X27_X25s_X27), - /* K25 */ be_nested_str_weak(UPDATE_CMD5), - /* K26 */ be_nested_str_weak(info_changed), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(parse_status_http), &be_const_str_solidified, ( &(const binstruction[141]) { /* code */ 0x500C0000, // 0000 LDBOOL R3 0 0 - 0x1C100500, // 0001 EQ R4 R2 K0 + 0x1C100506, // 0001 EQ R4 R2 K6 0x78120023, // 0002 JMPF R4 #0027 - 0x8C100301, // 0003 GETMET R4 R1 K1 - 0x58180002, // 0004 LDCONST R6 K2 + 0x8C10030C, // 0003 GETMET R4 R1 K12 + 0x5818000D, // 0004 LDCONST R6 K13 0x7C100400, // 0005 CALL R4 2 - 0x1C140903, // 0006 EQ R5 R4 K3 + 0x1C14090E, // 0006 EQ R5 R4 K14 0x78160000, // 0007 JMPF R5 #0009 0x4C100000, // 0008 LDNIL R4 - 0x88140104, // 0009 GETMBR R5 R0 K4 - 0x8C140B01, // 000A GETMET R5 R5 K1 - 0x581C0005, // 000B LDCONST R7 K5 + 0x8814010B, // 0009 GETMBR R5 R0 K11 + 0x8C140B0C, // 000A GETMET R5 R5 K12 + 0x581C000F, // 000B LDCONST R7 K15 0x7C140400, // 000C CALL R5 2 0x20140A04, // 000D NE R5 R5 R4 0x78160012, // 000E JMPF R5 #0022 0x4C140000, // 000F LDNIL R5 0x20140805, // 0010 NE R5 R4 R5 0x78160002, // 0011 JMPF R5 #0015 - 0x88140104, // 0012 GETMBR R5 R0 K4 - 0x98160A04, // 0013 SETIDX R5 K5 R4 + 0x8814010B, // 0012 GETMBR R5 R0 K11 + 0x98161E04, // 0013 SETIDX R5 K15 R4 0x70020003, // 0014 JMP #0019 - 0x88140104, // 0015 GETMBR R5 R0 K4 - 0x8C140B06, // 0016 GETMET R5 R5 K6 - 0x581C0005, // 0017 LDCONST R7 K5 + 0x8814010B, // 0015 GETMBR R5 R0 K11 + 0x8C140B10, // 0016 GETMET R5 R5 K16 + 0x581C000F, // 0017 LDCONST R7 K15 0x7C140400, // 0018 CALL R5 2 - 0xB8160E00, // 0019 GETNGBL R5 K7 + 0xB8162200, // 0019 GETNGBL R5 K17 0x60180018, // 001A GETGBL R6 G24 - 0x581C0008, // 001B LDCONST R7 K8 - 0x88200109, // 001C GETMBR R8 R0 K9 + 0x581C0012, // 001B LDCONST R7 K18 + 0x88200113, // 001C GETMBR R8 R0 K19 0x5C240800, // 001D MOVE R9 R4 0x7C180600, // 001E CALL R6 3 - 0x581C000A, // 001F LDCONST R7 K10 + 0x581C0014, // 001F LDCONST R7 K20 0x7C140400, // 0020 CALL R5 2 0x500C0200, // 0021 LDBOOL R3 1 0 - 0x8C14010B, // 0022 GETMET R5 R0 K11 - 0x881C010C, // 0023 GETMBR R7 R0 K12 - 0x8820010D, // 0024 GETMBR R8 R0 K13 + 0x8C140115, // 0022 GETMET R5 R0 K21 + 0x881C0116, // 0023 GETMBR R7 R0 K22 + 0x88200117, // 0024 GETMBR R8 R0 K23 0x7C140600, // 0025 CALL R5 3 0x70020061, // 0026 JMP #0089 - 0x1C10050E, // 0027 EQ R4 R2 K14 + 0x1C100518, // 0027 EQ R4 R2 K24 0x7812003C, // 0028 JMPF R4 #0066 - 0x8C100301, // 0029 GETMET R4 R1 K1 - 0x5818000F, // 002A LDCONST R6 K15 + 0x8C10030C, // 0029 GETMET R4 R1 K12 + 0x58180019, // 002A LDCONST R6 K25 0x7C100400, // 002B CALL R4 2 - 0x8C140301, // 002C GETMET R5 R1 K1 - 0x581C0010, // 002D LDCONST R7 K16 + 0x8C14030C, // 002C GETMET R5 R1 K12 + 0x581C001A, // 002D LDCONST R7 K26 0x7C140400, // 002E CALL R5 2 - 0x88180104, // 002F GETMBR R6 R0 K4 - 0x8C180D01, // 0030 GETMET R6 R6 K1 - 0x58200011, // 0031 LDCONST R8 K17 + 0x8818010B, // 002F GETMBR R6 R0 K11 + 0x8C180D0C, // 0030 GETMET R6 R6 K12 + 0x5820001B, // 0031 LDCONST R8 K27 0x7C180400, // 0032 CALL R6 2 0x20180C04, // 0033 NE R6 R6 R4 0x781A0012, // 0034 JMPF R6 #0048 0x4C180000, // 0035 LDNIL R6 0x20180806, // 0036 NE R6 R4 R6 0x781A0002, // 0037 JMPF R6 #003B - 0x88180104, // 0038 GETMBR R6 R0 K4 - 0x981A2204, // 0039 SETIDX R6 K17 R4 + 0x8818010B, // 0038 GETMBR R6 R0 K11 + 0x981A3604, // 0039 SETIDX R6 K27 R4 0x70020003, // 003A JMP #003F - 0x88180104, // 003B GETMBR R6 R0 K4 - 0x8C180D06, // 003C GETMET R6 R6 K6 - 0x58200011, // 003D LDCONST R8 K17 + 0x8818010B, // 003B GETMBR R6 R0 K11 + 0x8C180D10, // 003C GETMET R6 R6 K16 + 0x5820001B, // 003D LDCONST R8 K27 0x7C180400, // 003E CALL R6 2 - 0xB81A0E00, // 003F GETNGBL R6 K7 + 0xB81A2200, // 003F GETNGBL R6 K17 0x601C0018, // 0040 GETGBL R7 G24 - 0x58200012, // 0041 LDCONST R8 K18 - 0x88240109, // 0042 GETMBR R9 R0 K9 + 0x5820001C, // 0041 LDCONST R8 K28 + 0x88240113, // 0042 GETMBR R9 R0 K19 0x5C280800, // 0043 MOVE R10 R4 0x7C1C0600, // 0044 CALL R7 3 - 0x5820000A, // 0045 LDCONST R8 K10 + 0x58200014, // 0045 LDCONST R8 K20 0x7C180400, // 0046 CALL R6 2 0x500C0200, // 0047 LDBOOL R3 1 0 - 0x88180104, // 0048 GETMBR R6 R0 K4 - 0x8C180D01, // 0049 GETMET R6 R6 K1 - 0x58200013, // 004A LDCONST R8 K19 + 0x8818010B, // 0048 GETMBR R6 R0 K11 + 0x8C180D0C, // 0049 GETMET R6 R6 K12 + 0x5820001D, // 004A LDCONST R8 K29 0x7C180400, // 004B CALL R6 2 0x20180C05, // 004C NE R6 R6 R5 0x781A0012, // 004D JMPF R6 #0061 0x4C180000, // 004E LDNIL R6 0x20180A06, // 004F NE R6 R5 R6 0x781A0002, // 0050 JMPF R6 #0054 - 0x88180104, // 0051 GETMBR R6 R0 K4 - 0x981A2605, // 0052 SETIDX R6 K19 R5 + 0x8818010B, // 0051 GETMBR R6 R0 K11 + 0x981A3A05, // 0052 SETIDX R6 K29 R5 0x70020003, // 0053 JMP #0058 - 0x88180104, // 0054 GETMBR R6 R0 K4 - 0x8C180D06, // 0055 GETMET R6 R6 K6 - 0x58200013, // 0056 LDCONST R8 K19 + 0x8818010B, // 0054 GETMBR R6 R0 K11 + 0x8C180D10, // 0055 GETMET R6 R6 K16 + 0x5820001D, // 0056 LDCONST R8 K29 0x7C180400, // 0057 CALL R6 2 - 0xB81A0E00, // 0058 GETNGBL R6 K7 + 0xB81A2200, // 0058 GETNGBL R6 K17 0x601C0018, // 0059 GETGBL R7 G24 - 0x58200014, // 005A LDCONST R8 K20 - 0x88240109, // 005B GETMBR R9 R0 K9 + 0x5820001E, // 005A LDCONST R8 K30 + 0x88240113, // 005B GETMBR R9 R0 K19 0x5C280A00, // 005C MOVE R10 R5 0x7C1C0600, // 005D CALL R7 3 - 0x5820000A, // 005E LDCONST R8 K10 + 0x58200014, // 005E LDCONST R8 K20 0x7C180400, // 005F CALL R6 2 0x500C0200, // 0060 LDBOOL R3 1 0 - 0x8C18010B, // 0061 GETMET R6 R0 K11 - 0x88200115, // 0062 GETMBR R8 R0 K21 - 0x8824010D, // 0063 GETMBR R9 R0 K13 + 0x8C180115, // 0061 GETMET R6 R0 K21 + 0x8820011F, // 0062 GETMBR R8 R0 K31 + 0x88240117, // 0063 GETMBR R9 R0 K23 0x7C180600, // 0064 CALL R6 3 0x70020022, // 0065 JMP #0089 0x54120004, // 0066 LDINT R4 5 0x1C100404, // 0067 EQ R4 R2 R4 0x7812001F, // 0068 JMPF R4 #0089 - 0x8C100301, // 0069 GETMET R4 R1 K1 - 0x58180016, // 006A LDCONST R6 K22 + 0x8C10030C, // 0069 GETMET R4 R1 K12 + 0x58180020, // 006A LDCONST R6 K32 0x7C100400, // 006B CALL R4 2 - 0x88140104, // 006C GETMBR R5 R0 K4 - 0x8C140B01, // 006D GETMET R5 R5 K1 - 0x581C0017, // 006E LDCONST R7 K23 + 0x8814010B, // 006C GETMBR R5 R0 K11 + 0x8C140B0C, // 006D GETMET R5 R5 K12 + 0x581C0021, // 006E LDCONST R7 K33 0x7C140400, // 006F CALL R5 2 0x20140A04, // 0070 NE R5 R5 R4 0x78160012, // 0071 JMPF R5 #0085 0x4C140000, // 0072 LDNIL R5 0x20140805, // 0073 NE R5 R4 R5 0x78160002, // 0074 JMPF R5 #0078 - 0x88140104, // 0075 GETMBR R5 R0 K4 - 0x98162E04, // 0076 SETIDX R5 K23 R4 + 0x8814010B, // 0075 GETMBR R5 R0 K11 + 0x98164204, // 0076 SETIDX R5 K33 R4 0x70020003, // 0077 JMP #007C - 0x88140104, // 0078 GETMBR R5 R0 K4 - 0x8C140B06, // 0079 GETMET R5 R5 K6 - 0x581C0017, // 007A LDCONST R7 K23 + 0x8814010B, // 0078 GETMBR R5 R0 K11 + 0x8C140B10, // 0079 GETMET R5 R5 K16 + 0x581C0021, // 007A LDCONST R7 K33 0x7C140400, // 007B CALL R5 2 - 0xB8160E00, // 007C GETNGBL R5 K7 + 0xB8162200, // 007C GETNGBL R5 K17 0x60180018, // 007D GETGBL R6 G24 - 0x581C0018, // 007E LDCONST R7 K24 - 0x88200109, // 007F GETMBR R8 R0 K9 + 0x581C0022, // 007E LDCONST R7 K34 + 0x88200113, // 007F GETMBR R8 R0 K19 0x5C240800, // 0080 MOVE R9 R4 0x7C180600, // 0081 CALL R6 3 - 0x581C000A, // 0082 LDCONST R7 K10 + 0x581C0014, // 0082 LDCONST R7 K20 0x7C140400, // 0083 CALL R5 2 0x500C0200, // 0084 LDBOOL R3 1 0 - 0x8C14010B, // 0085 GETMET R5 R0 K11 - 0x881C0119, // 0086 GETMBR R7 R0 K25 - 0x8820010D, // 0087 GETMBR R8 R0 K13 + 0x8C140115, // 0085 GETMET R5 R0 K21 + 0x881C0123, // 0086 GETMBR R7 R0 K35 + 0x88200117, // 0087 GETMBR R8 R0 K23 0x7C140600, // 0088 CALL R5 3 0x780E0001, // 0089 JMPF R3 #008C - 0x8C10011A, // 008A GETMET R4 R0 K26 + 0x8C100124, // 008A GETMET R4 R0 K36 0x7C100200, // 008B CALL R4 1 0x80000000, // 008C RET 0 }) @@ -343,19 +389,17 @@ be_local_closure(class_Matter_HTTP_remote_set_info, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(info), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(set_info), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021601, // 0000 SETMBR R0 K11 R1 0x80000000, // 0001 RET 0 }) ) @@ -370,31 +414,26 @@ be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(reachable), - /* K1 */ be_nested_str_weak(reachable_utc), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(rtc_utc), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(device_is_alive), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x78060006, // 0000 JMPF R1 #0008 0x50080200, // 0001 LDBOOL R2 1 0 - 0x90020002, // 0002 SETMBR R0 K0 R2 - 0xB80A0400, // 0003 GETNGBL R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 + 0x90024A02, // 0002 SETMBR R0 K37 R2 + 0xB80A4E00, // 0003 GETNGBL R2 K39 + 0x8C080528, // 0004 GETMET R2 R2 K40 0x7C080200, // 0005 CALL R2 1 - 0x90020202, // 0006 SETMBR R0 K1 R2 + 0x90024C02, // 0006 SETMBR R0 K38 R2 0x70020001, // 0007 JMP #000A 0x50080000, // 0008 LDBOOL R2 0 0 - 0x90020002, // 0009 SETMBR R0 K0 R2 + 0x90024A02, // 0009 SETMBR R0 K37 R2 0x80000000, // 000A RET 0 }) ) @@ -409,43 +448,28 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(current_cmd), - /* K1 */ be_nested_str_weak(payload), - /* K2 */ be_nested_str_weak(nil), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_X2E_X2E_X2E), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(millis), - /* K9 */ be_nested_str_weak(time_start), - /* K10 */ be_nested_str_weak(addr), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(dispatch_cb), - /* K13 */ be_nested_str_weak(http_status), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(event_http_finished), &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 - 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x88040129, // 0005 GETMBR R1 R0 K41 0x4C080000, // 0006 LDNIL R2 0x20040202, // 0007 NE R1 R1 R2 0x78060001, // 0008 JMPF R1 #000B - 0x88040101, // 0009 GETMBR R1 R0 K1 + 0x88040129, // 0009 GETMBR R1 R0 K41 0x70020000, // 000A JMP #000C - 0x58040002, // 000B LDCONST R1 K2 + 0x5804002A, // 000B LDCONST R1 K42 0x6008000C, // 000C GETGBL R2 G12 0x5C0C0200, // 000D MOVE R3 R1 0x7C080200, // 000E CALL R2 1 @@ -453,29 +477,29 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ 0x24080403, // 0010 GT R2 R2 R3 0x780A0004, // 0011 JMPF R2 #0017 0x540A001C, // 0012 LDINT R2 29 - 0x400A0602, // 0013 CONNECT R2 K3 R2 + 0x400A0C02, // 0013 CONNECT R2 K6 R2 0x94080202, // 0014 GETIDX R2 R1 R2 - 0x00080504, // 0015 ADD R2 R2 K4 + 0x0008052B, // 0015 ADD R2 R2 K43 0x5C040400, // 0016 MOVE R1 R2 - 0xB80A0A00, // 0017 GETNGBL R2 K5 + 0xB80A2200, // 0017 GETNGBL R2 K17 0x600C0018, // 0018 GETGBL R3 G24 - 0x58100006, // 0019 LDCONST R4 K6 - 0xB8160E00, // 001A GETNGBL R5 K7 - 0x8C140B08, // 001B GETMET R5 R5 K8 + 0x5810002C, // 0019 LDCONST R4 K44 + 0xB8164E00, // 001A GETNGBL R5 K39 + 0x8C140B2D, // 001B GETMET R5 R5 K45 0x7C140200, // 001C CALL R5 1 - 0x88180109, // 001D GETMBR R6 R0 K9 + 0x8818012E, // 001D GETMBR R6 R0 K46 0x04140A06, // 001E SUB R5 R5 R6 - 0x8818010A, // 001F GETMBR R6 R0 K10 + 0x88180113, // 001F GETMBR R6 R0 K19 0x601C000C, // 0020 GETGBL R7 G12 - 0x88200101, // 0021 GETMBR R8 R0 K1 + 0x88200129, // 0021 GETMBR R8 R0 K41 0x7C1C0200, // 0022 CALL R7 1 0x5C200200, // 0023 MOVE R8 R1 0x7C0C0A00, // 0024 CALL R3 5 - 0x5810000B, // 0025 LDCONST R4 K11 + 0x58100014, // 0025 LDCONST R4 K20 0x7C080400, // 0026 CALL R2 2 - 0x8C08010C, // 0027 GETMET R2 R0 K12 - 0x8810010D, // 0028 GETMBR R4 R0 K13 - 0x88140101, // 0029 GETMBR R5 R0 K1 + 0x8C08012F, // 0027 GETMET R2 R0 K47 + 0x88100130, // 0028 GETMBR R4 R0 K48 + 0x88140129, // 0029 GETMBR R5 R0 K41 0x7C080600, // 002A CALL R2 3 0x80000000, // 002B RET 0 }) @@ -491,64 +515,47 @@ be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(webserver), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(wifi), - /* K4 */ be_nested_str_weak(up), - /* K5 */ be_nested_str_weak(eth), - /* K6 */ be_nested_str_weak(current_cmd), - /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), - /* K8 */ be_nested_str_weak(tr), - /* K9 */ be_nested_str_weak(_X20), - /* K10 */ be_nested_str_weak(_X2B), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_nested_str_weak(port), - /* K15 */ be_nested_str_weak(begin), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(probe_async), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 + 0xA40A6200, // 0000 IMPORT R2 K49 + 0xA40E6400, // 0001 IMPORT R3 K50 + 0xB8124E00, // 0002 GETNGBL R4 K39 + 0x8C100933, // 0003 GETMET R4 R4 K51 0x7C100200, // 0004 CALL R4 1 - 0x94100904, // 0005 GETIDX R4 R4 K4 + 0x94100934, // 0005 GETIDX R4 R4 K52 0x74120006, // 0006 JMPT R4 #000E - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x8C100905, // 0008 GETMET R4 R4 K5 + 0xB8124E00, // 0007 GETNGBL R4 K39 + 0x8C100935, // 0008 GETMET R4 R4 K53 0x7C100200, // 0009 CALL R4 1 - 0x94100904, // 000A GETIDX R4 R4 K4 + 0x94100934, // 000A GETIDX R4 R4 K52 0x74120001, // 000B JMPT R4 #000E 0x4C100000, // 000C LDNIL R4 0x80040800, // 000D RET 1 R4 - 0x90020C01, // 000E SETMBR R0 K6 R1 - 0x8C100508, // 000F GETMET R4 R2 K8 + 0x90021201, // 000E SETMBR R0 K9 R1 + 0x8C100537, // 000F GETMET R4 R2 K55 0x5C180200, // 0010 MOVE R6 R1 - 0x581C0009, // 0011 LDCONST R7 K9 - 0x5820000A, // 0012 LDCONST R8 K10 + 0x581C0038, // 0011 LDCONST R7 K56 + 0x58200039, // 0012 LDCONST R8 K57 0x7C100800, // 0013 CALL R4 4 - 0x00120E04, // 0014 ADD R4 K7 R4 - 0xB8161600, // 0015 GETNGBL R5 K11 + 0x00126C04, // 0014 ADD R4 K54 R4 + 0xB8162200, // 0015 GETNGBL R5 K17 0x60180018, // 0016 GETGBL R6 G24 - 0x581C000C, // 0017 LDCONST R7 K12 - 0x8820010D, // 0018 GETMBR R8 R0 K13 - 0x8824010E, // 0019 GETMBR R9 R0 K14 + 0x581C003A, // 0017 LDCONST R7 K58 + 0x88200113, // 0018 GETMBR R8 R0 K19 + 0x8824013B, // 0019 GETMBR R9 R0 K59 0x5C280800, // 001A MOVE R10 R4 0x7C180800, // 001B CALL R6 4 0x541E0003, // 001C LDINT R7 4 0x7C140400, // 001D CALL R5 2 - 0x8C14010F, // 001E GETMET R5 R0 K15 + 0x8C14013C, // 001E GETMET R5 R0 K60 0x5C1C0800, // 001F MOVE R7 R4 0x7C140400, // 0020 CALL R5 2 0x80000000, // 0021 RET 0 @@ -565,21 +572,18 @@ be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(save_param), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(info_changed), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8804013D, // 0000 GETMBR R1 R0 K61 + 0x8C04033E, // 0001 GETMET R1 R1 K62 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -595,37 +599,30 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(reachable_utc), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(rtc_utc), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(seconds_to_dhm), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(web_last_seen), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 + 0xA4066400, // 0000 IMPORT R1 K50 0x5409FFFE, // 0001 LDINT R2 -1 - 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x880C0126, // 0002 GETMBR R3 R0 K38 0x4C100000, // 0003 LDNIL R4 0x200C0604, // 0004 NE R3 R3 R4 0x780E0005, // 0005 JMPF R3 #000C - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x8C0C0703, // 0007 GETMET R3 R3 K3 + 0xB80E4E00, // 0006 GETNGBL R3 K39 + 0x8C0C0728, // 0007 GETMET R3 R3 K40 0x7C0C0200, // 0008 CALL R3 1 - 0x88100101, // 0009 GETMBR R4 R0 K1 + 0x88100126, // 0009 GETMBR R4 R0 K38 0x040C0604, // 000A SUB R3 R3 R4 0x5C080600, // 000B MOVE R2 R3 - 0xB80E0800, // 000C GETNGBL R3 K4 - 0x8C0C0705, // 000D GETMET R3 R3 K5 + 0xB80E0600, // 000C GETNGBL R3 K3 + 0x8C0C073F, // 000D GETMET R3 R3 K63 0x5C140400, // 000E MOVE R5 R2 0x7C0C0400, // 000F CALL R3 2 0x80040600, // 0010 RET 1 R3 @@ -642,7 +639,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_nested_proto( 11, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -739,42 +736,28 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(probe_update_time_map), - /* K2 */ be_nested_str_weak(probe_next_timestamp_map), - /* K3 */ be_nested_str_weak(async_cb_map), - /* K4 */ be_nested_str_weak(current_cmd), - /* K5 */ be_nested_str_weak(reachable), - /* K6 */ be_nested_str_weak(init), - /* K7 */ be_nested_str_weak(info), - /* K8 */ be_nested_str_weak(add_schedule), - /* K9 */ be_nested_str_weak(UPDATE_CMD0), - /* K10 */ be_nested_str_weak(UPDATE_TIME), - /* K11 */ be_nested_str_weak(UPDATE_CMD2), - /* K12 */ be_nested_str_weak(UPDATE_CMD5), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90027A01, // 0000 SETMBR R0 K61 R1 0x60140013, // 0001 GETGBL R5 G19 0x7C140000, // 0002 CALL R5 0 - 0x90020205, // 0003 SETMBR R0 K1 R5 + 0x90020005, // 0003 SETMBR R0 K0 R5 0x60140013, // 0004 GETGBL R5 G19 0x7C140000, // 0005 CALL R5 0 0x90020405, // 0006 SETMBR R0 K2 R5 0x60140013, // 0007 GETGBL R5 G19 0x7C140000, // 0008 CALL R5 0 - 0x90020605, // 0009 SETMBR R0 K3 R5 + 0x90020E05, // 0009 SETMBR R0 K7 R5 0x4C140000, // 000A LDNIL R5 - 0x90020805, // 000B SETMBR R0 K4 R5 + 0x90021205, // 000B SETMBR R0 K9 R5 0x50140000, // 000C LDBOOL R5 0 0 - 0x90020A05, // 000D SETMBR R0 K5 R5 + 0x90024A05, // 000D SETMBR R0 K37 R5 0x60140003, // 000E GETGBL R5 G3 0x5C180000, // 000F MOVE R6 R0 0x7C140200, // 0010 CALL R5 1 - 0x8C140B06, // 0011 GETMET R5 R5 K6 + 0x8C140B40, // 0011 GETMET R5 R5 K64 0x5C1C0400, // 0012 MOVE R7 R2 0x5422004F, // 0013 LDINT R8 80 0x5C240600, // 0014 MOVE R9 R3 @@ -782,22 +765,22 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ 0x7C140A00, // 0016 CALL R5 5 0x60140013, // 0017 GETGBL R5 G19 0x7C140000, // 0018 CALL R5 0 - 0x90020E05, // 0019 SETMBR R0 K7 R5 - 0x88140100, // 001A GETMBR R5 R0 K0 + 0x90021605, // 0019 SETMBR R0 K11 R5 + 0x8814013D, // 001A GETMBR R5 R0 K61 0x7816000E, // 001B JMPF R5 #002B - 0x8C140108, // 001C GETMET R5 R0 K8 - 0x881C0109, // 001D GETMBR R7 R0 K9 - 0x8820010A, // 001E GETMBR R8 R0 K10 + 0x8C140141, // 001C GETMET R5 R0 K65 + 0x881C0116, // 001D GETMBR R7 R0 K22 + 0x88200142, // 001E GETMBR R8 R0 K66 0x84240000, // 001F CLOSURE R9 P0 0x7C140800, // 0020 CALL R5 4 - 0x8C140108, // 0021 GETMET R5 R0 K8 - 0x881C010B, // 0022 GETMBR R7 R0 K11 - 0x8820010A, // 0023 GETMBR R8 R0 K10 + 0x8C140141, // 0021 GETMET R5 R0 K65 + 0x881C011F, // 0022 GETMBR R7 R0 K31 + 0x88200142, // 0023 GETMBR R8 R0 K66 0x84240001, // 0024 CLOSURE R9 P1 0x7C140800, // 0025 CALL R5 4 - 0x8C140108, // 0026 GETMET R5 R0 K8 - 0x881C010C, // 0027 GETMBR R7 R0 K12 - 0x8820010A, // 0028 GETMBR R8 R0 K10 + 0x8C140141, // 0026 GETMET R5 R0 K65 + 0x881C0123, // 0027 GETMBR R7 R0 K35 + 0x88200142, // 0028 GETMBR R8 R0 K66 0x84240002, // 0029 CLOSURE R9 P2 0x7C140800, // 002A CALL R5 4 0xA0000000, // 002B CLOSE R0 @@ -815,19 +798,13 @@ be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_update_time_map), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(probe_next_timestamp_map), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(jitter), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(change_schedule), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ @@ -858,44 +835,32 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, be_nested_proto( 14, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(device_is_alive), - /* K2 */ be_nested_str_weak(string), - /* K3 */ be_nested_str_weak(json), - /* K4 */ be_nested_str_weak(load), - /* K5 */ be_nested_str_weak(STATUS_PREFIX), - /* K6 */ be_nested_str_weak(contains), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), - /* K10 */ be_const_int(3), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(parse_status_response_and_call_method), &be_const_str_solidified, ( &(const binstruction[57]) { /* code */ 0x4C180000, // 0000 LDNIL R6 0x20180206, // 0001 NE R6 R1 R6 0x781A0034, // 0002 JMPF R6 #0038 - 0x24180300, // 0003 GT R6 R1 K0 + 0x24180306, // 0003 GT R6 R1 K6 0x781A0032, // 0004 JMPF R6 #0038 - 0x8C180101, // 0005 GETMET R6 R0 K1 + 0x8C180143, // 0005 GETMET R6 R0 K67 0x50200200, // 0006 LDBOOL R8 1 0 0x7C180400, // 0007 CALL R6 2 0x5C180400, // 0008 MOVE R6 R2 0x601C0004, // 0009 GETGBL R7 G4 0x5C200C00, // 000A MOVE R8 R6 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0F02, // 000C EQ R7 R7 K2 + 0x1C1C0F31, // 000C EQ R7 R7 K49 0x781E0004, // 000D JMPF R7 #0013 - 0xA41E0600, // 000E IMPORT R7 K3 - 0x8C200F04, // 000F GETMET R8 R7 K4 + 0xA41E8800, // 000E IMPORT R7 K68 + 0x8C200F45, // 000F GETMET R8 R7 K69 0x5C280C00, // 0010 MOVE R10 R6 0x7C200400, // 0011 CALL R8 2 0x5C181000, // 0012 MOVE R6 R8 @@ -903,8 +868,8 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x4C200000, // 0014 LDNIL R8 0x20200C08, // 0015 NE R8 R6 R8 0x78220019, // 0016 JMPF R8 #0031 - 0x58200000, // 0017 LDCONST R8 K0 - 0x88240105, // 0018 GETMBR R9 R0 K5 + 0x58200006, // 0017 LDCONST R8 K6 + 0x88240146, // 0018 GETMBR R9 R0 K70 0x6028000C, // 0019 GETGBL R10 G12 0x5C2C1200, // 001A MOVE R11 R9 0x7C280200, // 001B CALL R10 1 @@ -914,14 +879,14 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x4C2C0000, // 001F LDNIL R11 0x202C140B, // 0020 NE R11 R10 R11 0x782E0006, // 0021 JMPF R11 #0029 - 0x8C2C0D06, // 0022 GETMET R11 R6 K6 + 0x8C2C0D01, // 0022 GETMET R11 R6 K1 0x5C341400, // 0023 MOVE R13 R10 0x7C2C0400, // 0024 CALL R11 2 0x782E0002, // 0025 JMPF R11 #0029 0x94180C0A, // 0026 GETIDX R6 R6 R10 0x5C1C1000, // 0027 MOVE R7 R8 0x70020001, // 0028 JMP #002B - 0x00201107, // 0029 ADD R8 R8 K7 + 0x00201147, // 0029 ADD R8 R8 K71 0x7001FFED, // 002A JMP #0019 0x5C280A00, // 002B MOVE R10 R5 0x5C2C0800, // 002C MOVE R11 R4 @@ -929,12 +894,12 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x5C340E00, // 002E MOVE R13 R7 0x7C280600, // 002F CALL R10 3 0x70020006, // 0030 JMP #0038 - 0xB8221000, // 0031 GETNGBL R8 K8 + 0xB8222200, // 0031 GETNGBL R8 K17 0x60240018, // 0032 GETGBL R9 G24 - 0x58280009, // 0033 LDCONST R10 K9 + 0x58280048, // 0033 LDCONST R10 K72 0x5C2C0400, // 0034 MOVE R11 R2 0x7C240400, // 0035 CALL R9 2 - 0x5828000A, // 0036 LDCONST R10 K10 + 0x58280014, // 0036 LDCONST R10 K20 0x7C200400, // 0037 CALL R8 2 0x80000000, // 0038 RET 0 }) @@ -950,68 +915,43 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ be_nested_proto( 15, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(webserver), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(wifi), - /* K4 */ be_nested_str_weak(up), - /* K5 */ be_nested_str_weak(eth), - /* K6 */ be_nested_str_weak(current_cmd), - /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), - /* K8 */ be_nested_str_weak(tr), - /* K9 */ be_nested_str_weak(_X20), - /* K10 */ be_nested_str_weak(_X2B), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K13 */ be_nested_str_weak(addr), - /* K14 */ be_nested_str_weak(port), - /* K15 */ be_nested_str_weak(begin_sync), - /* K16 */ be_nested_str_weak(nil), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(_X2E_X2E_X2E), - /* K19 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), - /* K20 */ be_nested_str_weak(millis), - /* K21 */ be_nested_str_weak(time_start), - /* K22 */ be_nested_str_weak(payload), - /* K23 */ be_const_int(3), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(call_sync), &be_const_str_solidified, ( &(const binstruction[70]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0xA40E6200, // 0000 IMPORT R3 K49 + 0xA4126400, // 0001 IMPORT R4 K50 + 0xB8164E00, // 0002 GETNGBL R5 K39 + 0x8C140B33, // 0003 GETMET R5 R5 K51 0x7C140200, // 0004 CALL R5 1 - 0x94140B04, // 0005 GETIDX R5 R5 K4 + 0x94140B34, // 0005 GETIDX R5 R5 K52 0x74160006, // 0006 JMPT R5 #000E - 0xB8160400, // 0007 GETNGBL R5 K2 - 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0xB8164E00, // 0007 GETNGBL R5 K39 + 0x8C140B35, // 0008 GETMET R5 R5 K53 0x7C140200, // 0009 CALL R5 1 - 0x94140B04, // 000A GETIDX R5 R5 K4 + 0x94140B34, // 000A GETIDX R5 R5 K52 0x74160001, // 000B JMPT R5 #000E 0x4C140000, // 000C LDNIL R5 0x80040A00, // 000D RET 1 R5 0x4C140000, // 000E LDNIL R5 - 0x90020C05, // 000F SETMBR R0 K6 R5 - 0x8C140708, // 0010 GETMET R5 R3 K8 + 0x90021205, // 000F SETMBR R0 K9 R5 + 0x8C140737, // 0010 GETMET R5 R3 K55 0x5C1C0200, // 0011 MOVE R7 R1 - 0x58200009, // 0012 LDCONST R8 K9 - 0x5824000A, // 0013 LDCONST R9 K10 + 0x58200038, // 0012 LDCONST R8 K56 + 0x58240039, // 0013 LDCONST R9 K57 0x7C140800, // 0014 CALL R5 4 - 0x00160E05, // 0015 ADD R5 K7 R5 - 0xB81A1600, // 0016 GETNGBL R6 K11 + 0x00166C05, // 0015 ADD R5 K54 R5 + 0xB81A2200, // 0016 GETNGBL R6 K17 0x601C0018, // 0017 GETGBL R7 G24 - 0x5820000C, // 0018 LDCONST R8 K12 - 0x8824010D, // 0019 GETMBR R9 R0 K13 - 0x8828010E, // 001A GETMBR R10 R0 K14 + 0x58200049, // 0018 LDCONST R8 K73 + 0x88240113, // 0019 GETMBR R9 R0 K19 + 0x8828013B, // 001A GETMBR R10 R0 K59 0x5C2C0A00, // 001B MOVE R11 R5 0x7C1C0800, // 001C CALL R7 4 0x54220003, // 001D LDINT R8 4 @@ -1019,14 +959,14 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0x60180003, // 001F GETGBL R6 G3 0x5C1C0000, // 0020 MOVE R7 R0 0x7C180200, // 0021 CALL R6 1 - 0x8C180D0F, // 0022 GETMET R6 R6 K15 + 0x8C180D4A, // 0022 GETMET R6 R6 K74 0x5C200A00, // 0023 MOVE R8 R5 0x5C240400, // 0024 MOVE R9 R2 0x7C180600, // 0025 CALL R6 3 0x781A0001, // 0026 JMPF R6 #0029 0x5C1C0C00, // 0027 MOVE R7 R6 0x70020000, // 0028 JMP #002A - 0x581C0010, // 0029 LDCONST R7 K16 + 0x581C002A, // 0029 LDCONST R7 K42 0x6020000C, // 002A GETGBL R8 G12 0x5C240E00, // 002B MOVE R9 R7 0x7C200200, // 002C CALL R8 1 @@ -1034,25 +974,25 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0x24201009, // 002E GT R8 R8 R9 0x78220004, // 002F JMPF R8 #0035 0x5422001C, // 0030 LDINT R8 29 - 0x40222208, // 0031 CONNECT R8 K17 R8 + 0x40220C08, // 0031 CONNECT R8 K6 R8 0x94200E08, // 0032 GETIDX R8 R7 R8 - 0x00201112, // 0033 ADD R8 R8 K18 + 0x0020112B, // 0033 ADD R8 R8 K43 0x5C1C1000, // 0034 MOVE R7 R8 - 0xB8221600, // 0035 GETNGBL R8 K11 + 0xB8222200, // 0035 GETNGBL R8 K17 0x60240018, // 0036 GETGBL R9 G24 - 0x58280013, // 0037 LDCONST R10 K19 - 0xB82E0400, // 0038 GETNGBL R11 K2 - 0x8C2C1714, // 0039 GETMET R11 R11 K20 + 0x5828004B, // 0037 LDCONST R10 K75 + 0xB82E4E00, // 0038 GETNGBL R11 K39 + 0x8C2C172D, // 0039 GETMET R11 R11 K45 0x7C2C0200, // 003A CALL R11 1 - 0x88300115, // 003B GETMBR R12 R0 K21 + 0x8830012E, // 003B GETMBR R12 R0 K46 0x042C160C, // 003C SUB R11 R11 R12 - 0x8830010D, // 003D GETMBR R12 R0 K13 + 0x88300113, // 003D GETMBR R12 R0 K19 0x6034000C, // 003E GETGBL R13 G12 - 0x88380116, // 003F GETMBR R14 R0 K22 + 0x88380129, // 003F GETMBR R14 R0 K41 0x7C340200, // 0040 CALL R13 1 0x5C380E00, // 0041 MOVE R14 R7 0x7C240A00, // 0042 CALL R9 5 - 0x58280017, // 0043 LDCONST R10 K23 + 0x58280014, // 0043 LDCONST R10 K20 0x7C200400, // 0044 CALL R8 2 0x80040C00, // 0045 RET 1 R6 }) @@ -1068,62 +1008,51 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(probe_next_timestamp_map), - /* K1 */ be_nested_str_weak(keys), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - /* K6 */ be_nested_str_weak(tcp_connected), - /* K7 */ be_nested_str_weak(millis), - /* K8 */ be_nested_str_weak(probe_update_time_map), - /* K9 */ be_nested_str_weak(probe_async), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(scheduler), &be_const_str_solidified, ( &(const binstruction[66]) { /* code */ 0x4C040000, // 0000 LDNIL R1 0x60080010, // 0001 GETGBL R2 G16 - 0x880C0100, // 0002 GETMBR R3 R0 K0 - 0x8C0C0701, // 0003 GETMET R3 R3 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x8C0C0708, // 0003 GETMET R3 R3 K8 0x7C0C0200, // 0004 CALL R3 1 0x7C080200, // 0005 CALL R2 1 0xA802000A, // 0006 EXBLK 0 #0012 0x5C0C0400, // 0007 MOVE R3 R2 0x7C0C0000, // 0008 CALL R3 0 - 0x88100100, // 0009 GETMBR R4 R0 K0 + 0x88100102, // 0009 GETMBR R4 R0 K2 0x94100803, // 000A GETIDX R4 R4 R3 - 0x1C100902, // 000B EQ R4 R4 K2 + 0x1C10094C, // 000B EQ R4 R4 K76 0x78120001, // 000C JMPF R4 #000F 0x5C040600, // 000D MOVE R1 R3 0x70020000, // 000E JMP #0010 0x7001FFF6, // 000F JMP #0007 0xA8040001, // 0010 EXBLK 1 1 0x70020002, // 0011 JMP #0015 - 0x58080003, // 0012 LDCONST R2 K3 + 0x5808000A, // 0012 LDCONST R2 K10 0xAC080200, // 0013 CATCH R2 1 0 0xB0080000, // 0014 RAISE 2 R0 R0 0x4C080000, // 0015 LDNIL R2 0x1C080202, // 0016 EQ R2 R1 R2 0x780A0015, // 0017 JMPF R2 #002E 0x60080010, // 0018 GETGBL R2 G16 - 0x880C0100, // 0019 GETMBR R3 R0 K0 - 0x8C0C0701, // 001A GETMET R3 R3 K1 + 0x880C0102, // 0019 GETMBR R3 R0 K2 + 0x8C0C0708, // 001A GETMET R3 R3 K8 0x7C0C0200, // 001B CALL R3 1 0x7C080200, // 001C CALL R2 1 0xA802000C, // 001D EXBLK 0 #002B 0x5C0C0400, // 001E MOVE R3 R2 0x7C0C0000, // 001F CALL R3 0 - 0xB8120800, // 0020 GETNGBL R4 K4 - 0x8C100905, // 0021 GETMET R4 R4 K5 - 0x88180100, // 0022 GETMBR R6 R0 K0 + 0xB8124E00, // 0020 GETNGBL R4 K39 + 0x8C10094D, // 0021 GETMET R4 R4 K77 + 0x88180102, // 0022 GETMBR R6 R0 K2 0x94180C03, // 0023 GETIDX R6 R6 R3 0x7C100400, // 0024 CALL R4 2 0x78120001, // 0025 JMPF R4 #0028 @@ -1132,26 +1061,26 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0x7001FFF4, // 0028 JMP #001E 0xA8040001, // 0029 EXBLK 1 1 0x70020002, // 002A JMP #002E - 0x58080003, // 002B LDCONST R2 K3 + 0x5808000A, // 002B LDCONST R2 K10 0xAC080200, // 002C CATCH R2 1 0 0xB0080000, // 002D RAISE 2 R0 R0 0x4C080000, // 002E LDNIL R2 0x1C080202, // 002F EQ R2 R1 R2 0x780A0000, // 0030 JMPF R2 #0032 0x80000400, // 0031 RET 0 - 0x88080106, // 0032 GETMBR R2 R0 K6 + 0x8808014E, // 0032 GETMBR R2 R0 K78 0x780A0002, // 0033 JMPF R2 #0037 - 0x88080100, // 0034 GETMBR R2 R0 K0 - 0x98080302, // 0035 SETIDX R2 R1 K2 + 0x88080102, // 0034 GETMBR R2 R0 K2 + 0x9808034C, // 0035 SETIDX R2 R1 K76 0x80000400, // 0036 RET 0 - 0x88080100, // 0037 GETMBR R2 R0 K0 - 0xB80E0800, // 0038 GETNGBL R3 K4 - 0x8C0C0707, // 0039 GETMET R3 R3 K7 - 0x88140108, // 003A GETMBR R5 R0 K8 + 0x88080102, // 0037 GETMBR R2 R0 K2 + 0xB80E4E00, // 0038 GETNGBL R3 K39 + 0x8C0C072D, // 0039 GETMET R3 R3 K45 + 0x88140100, // 003A GETMBR R5 R0 K0 0x94140A01, // 003B GETIDX R5 R5 R1 0x7C0C0400, // 003C CALL R3 2 0x98080203, // 003D SETIDX R2 R1 R3 - 0x8C080109, // 003E GETMET R2 R0 K9 + 0x8C08014F, // 003E GETMET R2 R0 K79 0x5C100200, // 003F MOVE R4 R1 0x7C080400, // 0040 CALL R2 2 0x80000000, // 0041 RET 0 @@ -1168,34 +1097,27 @@ be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(current_cmd), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(dispatch_cb), - /* K5 */ be_nested_str_weak(http_status), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(event_http_failed), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x58080002, // 0006 LDCONST R2 K2 - 0x580C0003, // 0007 LDCONST R3 K3 + 0xB8062200, // 0005 GETNGBL R1 K17 + 0x58080050, // 0006 LDCONST R2 K80 + 0x580C0051, // 0007 LDCONST R3 K81 0x7C040400, // 0008 CALL R1 2 - 0x8C040104, // 0009 GETMET R1 R0 K4 - 0x880C0105, // 000A GETMBR R3 R0 K5 + 0x8C04012F, // 0009 GETMET R1 R0 K47 + 0x880C0130, // 000A GETMBR R3 R0 K48 0x4C100000, // 000B LDNIL R4 0x7C040600, // 000C CALL R1 3 0x80000000, // 000D RET 0 @@ -1212,19 +1134,17 @@ be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */ be_nested_proto( 4, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(async_cb_map), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(add_async_cb), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C0107, // 0000 GETMBR R3 R0 K7 0x980C0202, // 0001 SETIDX R3 R1 R2 0x80000000, // 0002 RET 0 }) @@ -1240,45 +1160,35 @@ be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(current_cmd), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), - /* K3 */ be_nested_str_weak(http_status), - /* K4 */ be_nested_str_weak(phase), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(payload), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str_weak(dispatch_cb), - }), + &be_ktab_class_Matter_HTTP_remote, /* shared constants */ be_str_weak(event_http_timeout), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 - 0xB8060200, // 0005 GETNGBL R1 K1 + 0xB8062200, // 0005 GETNGBL R1 K17 0x60080018, // 0006 GETGBL R2 G24 - 0x580C0002, // 0007 LDCONST R3 K2 - 0x88100103, // 0008 GETMBR R4 R0 K3 - 0x88140104, // 0009 GETMBR R5 R0 K4 - 0x88180105, // 000A GETMBR R6 R0 K5 + 0x580C0052, // 0007 LDCONST R3 K82 + 0x88100130, // 0008 GETMBR R4 R0 K48 + 0x88140153, // 0009 GETMBR R5 R0 K83 + 0x88180154, // 000A GETMBR R6 R0 K84 0x601C000C, // 000B GETGBL R7 G12 - 0x88200106, // 000C GETMBR R8 R0 K6 + 0x88200129, // 000C GETMBR R8 R0 K41 0x7C1C0200, // 000D CALL R7 1 0x7C080A00, // 000E CALL R2 5 - 0x580C0007, // 000F LDCONST R3 K7 + 0x580C0014, // 000F LDCONST R3 K20 0x7C040400, // 0010 CALL R1 2 - 0x8C040108, // 0011 GETMET R1 R0 K8 - 0x880C0103, // 0012 GETMBR R3 R0 K3 + 0x8C04012F, // 0011 GETMET R1 R0 K47 + 0x880C0130, // 0012 GETMBR R3 R0 K48 0x4C100000, // 0013 LDNIL R4 0x7C040600, // 0014 CALL R1 3 0x80000000, // 0015 RET 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index daae7a1b4..ea9ff59fa 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -3,6 +3,217 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Matter_IM; +// compact class 'Matter_IM' ktab size: 206, total: 507 (saved 2408 bytes) +static const bvalue be_ktab_class_Matter_IM[206] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(WriteRequestMessage), + /* K2 */ be_nested_str_weak(from_TLV), + /* K3 */ be_nested_str_weak(Path), + /* K4 */ be_nested_str_weak(suppress_response), + /* K5 */ be_nested_str_weak(write_requests), + /* K6 */ be_nested_str_weak(WriteResponseMessage), + /* K7 */ be_nested_str_weak(write_responses), + /* K8 */ be_nested_str_weak(PathGenerator), + /* K9 */ be_nested_str_weak(device), + /* K10 */ be_nested_str_weak(path), + /* K11 */ be_nested_str_weak(data), + /* K12 */ be_nested_str_weak(copy), + /* K13 */ be_nested_str_weak(cluster), + /* K14 */ be_nested_str_weak(attribute), + /* K15 */ be_nested_str_weak(status), + /* K16 */ be_nested_str_weak(INVALID_ACTION), + /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), + /* K18 */ be_nested_str_weak(endpoint), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(loglevel), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(get_attribute_name), + /* K23 */ be_nested_str_weak(log), + /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), + /* K25 */ be_nested_str_weak(_X20_X28), + /* K26 */ be_nested_str_weak(_X29), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(start), + /* K29 */ be_nested_str_weak(is_direct), + /* K30 */ be_nested_str_weak(next_attribute), + /* K31 */ be_nested_str_weak(msg), + /* K32 */ be_nested_str_weak(get_pi), + /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), + /* K34 */ be_nested_str_weak(write_attribute), + /* K35 */ be_nested_str_weak(session), + /* K36 */ be_nested_str_weak(SUCCESS), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_nested_str_weak(send_queue), + /* K39 */ be_nested_str_weak(push), + /* K40 */ be_nested_str_weak(IM_WriteResponse), + /* K41 */ be_nested_str_weak(add), + /* K42 */ be_const_int(1), + /* K43 */ be_const_int(2), + /* K44 */ be_const_int(355795236), + /* K45 */ be_nested_str_weak(path2raw), + /* K46 */ be_nested_str_weak(tag_sub), + /* K47 */ be_nested_str_weak(tlv2raw), + /* K48 */ be_nested_str_weak(ReadRequestMessage), + /* K49 */ be_nested_str_weak(fabric_filtered), + /* K50 */ be_nested_str_weak(attributes_requests), + /* K51 */ be_nested_str_weak(updates), + /* K52 */ be_nested_str_weak(AttributePathIB), + /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K54 */ be_nested_str_weak(local_session_id), + /* K55 */ be_nested_str_weak(subscription_id), + /* K56 */ be_nested_str_weak(is_keep_alive), + /* K57 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K58 */ be_nested_str_weak(update_event_generator_array), + /* K59 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), + /* K60 */ be_nested_str_weak(_message_handler), + /* K61 */ be_nested_str_weak(send_enqueued), + /* K62 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K63 */ be_nested_str_weak(IM_ReportData_Pull), + /* K64 */ be_const_int(0), + /* K65 */ be_const_int(1), + /* K66 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K67 */ be_nested_str_weak(TimedRequestMessage), + /* K68 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K69 */ be_nested_str_weak(timeout), + /* K70 */ be_nested_str_weak(send_status), + /* K71 */ be_nested_str_weak(subs_shop), + /* K72 */ be_nested_str_weak(every_50ms), + /* K73 */ be_nested_str_weak(InvokeRequestMessage), + /* K74 */ be_nested_str_weak(invoke_requests), + /* K75 */ be_nested_str_weak(InvokeResponseMessage), + /* K76 */ be_nested_str_weak(invoke_responses), + /* K77 */ be_nested_str_weak(command_path), + /* K78 */ be_nested_str_weak(command), + /* K79 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K80 */ be_nested_str_weak(get_command_name), + /* K81 */ be_nested_str_weak(invoke_request), + /* K82 */ be_nested_str_weak(command_fields), + /* K83 */ be_nested_str_weak(_X28), + /* K84 */ be_nested_str_weak(_X29_X20), + /* K85 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K86 */ be_nested_str_weak(invokeresponse2raw), + /* K87 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), + /* K88 */ be_nested_str_weak(exchange_id), + /* K89 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K90 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K91 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K92 */ be_const_int(0), + /* K93 */ be_nested_str_weak(IM_InvokeResponse), + /* K94 */ be_nested_str_weak(event_requests), + /* K95 */ be_nested_str_weak(get_node_id), + /* K96 */ be_nested_str_weak(parse_event_filters_min_no), + /* K97 */ be_nested_str_weak(event_filters), + /* K98 */ be_nested_str_weak(EventGenerator), + /* K99 */ be_nested_str_weak(event), + /* K100 */ be_nested_str_weak(get_event_name), + /* K101 */ be_nested_str_weak(_X2502X), + /* K102 */ be_nested_str_weak(_X2A_X2A), + /* K103 */ be_nested_str_weak(_X2504X), + /* K104 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K105 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), + /* K106 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), + /* K107 */ be_nested_str_weak(finished), + /* K108 */ be_nested_str_weak(ready), + /* K109 */ be_nested_str_weak(send_im), + /* K110 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K111 */ be_nested_str_weak(resp), + /* K112 */ be_nested_str_weak(SubscribeRequestMessage), + /* K113 */ be_nested_str_weak(keep_subscriptions), + /* K114 */ be_nested_str_weak(remove_by_session), + /* K115 */ be_nested_str_weak(new_subscription), + /* K116 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), + /* K117 */ be_nested_str_weak(concat), + /* K118 */ be_nested_str_weak(_X20), + /* K119 */ be_nested_str_weak(min_interval), + /* K120 */ be_nested_str_weak(max_interval), + /* K121 */ be_nested_str_weak(set_event_generator_or_arr), + /* K122 */ be_nested_str_weak(IM_SubscribeResponse_Pull), + /* K123 */ be_nested_str_weak(send_encrypted_ack), + /* K124 */ be_nested_str_weak(time_reached), + /* K125 */ be_nested_str_weak(expiration), + /* K126 */ be_nested_str_weak(reached_timeout), + /* K127 */ be_nested_str_weak(remove), + /* K128 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K129 */ be_nested_str_weak(ack_received), + /* K130 */ be_nested_str_weak(get_exchangeid), + /* K131 */ be_nested_str_weak(TLV), + /* K132 */ be_nested_str_weak(AttributeStatusIB), + /* K133 */ be_nested_str_weak(StatusIB), + /* K134 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K135 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), + /* K136 */ be_nested_str_weak(IM_Subscription_Shop), + /* K137 */ be_nested_str_weak(read_request_solo), + /* K138 */ be_nested_str_weak(ReadRequestMessage_solo), + /* K139 */ be_nested_str_weak(invoke_request_solo), + /* K140 */ be_nested_str_weak(InvokeRequestMessage_solo), + /* K141 */ be_nested_str_weak(tlv_solo), + /* K142 */ be_nested_str_weak(Matter_TLV_item), + /* K143 */ be_nested_str_weak(expire_sendqueue), + /* K144 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K145 */ be_const_int(354943030), + /* K146 */ be_const_int(405077761), + /* K147 */ be_nested_str_weak(build_response), + /* K148 */ be_nested_str_weak(message_handler), + /* K149 */ be_nested_str_weak(raw), + /* K150 */ be_nested_str_weak(clear), + /* K151 */ be_nested_str_weak(encode_frame), + /* K152 */ be_nested_str_weak(encrypt), + /* K153 */ be_nested_str_weak(send_response_frame), + /* K154 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), + /* K155 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K156 */ be_nested_str_weak(resolve_attribute_read_solo), + /* K157 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K158 */ be_nested_str_weak(read_attribute), + /* K159 */ be_nested_str_weak(is_list), + /* K160 */ be_nested_str_weak(is_array), + /* K161 */ be_nested_str_weak(encode_len), + /* K162 */ be_nested_str_weak(MAX_MESSAGE), + /* K163 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), + /* K164 */ be_nested_str_weak(parse), + /* K165 */ be_nested_str_weak(app_payload_idx), + /* K166 */ be_nested_str_weak(process_read_request_pull), + /* K167 */ be_nested_str_weak(attributedata2raw), + /* K168 */ be_const_int(405077761), + /* K169 */ be_nested_str_weak(attributestatus2raw), + /* K170 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), + /* K171 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), + /* K172 */ be_nested_str_weak(message_counter), + /* K173 */ be_nested_str_weak(ack_message_counter), + /* K174 */ be_nested_str_weak(to_str_val), + /* K175 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K176 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K177 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), + /* K178 */ be_const_class(be_class_Matter_IM), + /* K179 */ be_nested_str_weak(int64), + /* K180 */ be_nested_str_weak(toint64), + /* K181 */ be_nested_str_weak(node), + /* K182 */ be_nested_str_weak(tobytes), + /* K183 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), + /* K184 */ be_nested_str_weak(tohex), + /* K185 */ be_nested_str_weak(event_min), + /* K186 */ be_nested_str_weak(findsubval), + /* K187 */ be_nested_str_weak(status_ok_received), + /* K188 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K189 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K190 */ be_nested_str_weak(status_error_received), + /* K191 */ be_nested_str_weak(Matter_TLV_array), + /* K192 */ be_nested_str_weak(val), + /* K193 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K194 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K195 */ be_nested_str_weak(IM_Status), + /* K196 */ be_nested_str_weak(opcode), + /* K197 */ be_nested_str_weak(from_raw), + /* K198 */ be_nested_str_weak(process_read_request_solo), + /* K199 */ be_nested_str_weak(process_invoke_request_solo), + /* K200 */ be_nested_str_weak(process_status_response), + /* K201 */ be_nested_str_weak(send_ack_now), + /* K202 */ be_nested_str_weak(subscribe_request), + /* K203 */ be_nested_str_weak(process_write_request), + /* K204 */ be_nested_str_weak(process_invoke_request), + /* K205 */ be_nested_str_weak(process_timed_request), +}; + extern const bclass be_class_Matter_IM; @@ -13,55 +224,13 @@ be_local_closure(class_Matter_IM_process_write_request, /* name */ be_nested_proto( 21, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[41]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(WriteRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(Path), - /* K4 */ be_nested_str_weak(suppress_response), - /* K5 */ be_nested_str_weak(write_requests), - /* K6 */ be_nested_str_weak(WriteResponseMessage), - /* K7 */ be_nested_str_weak(write_responses), - /* K8 */ be_nested_str_weak(PathGenerator), - /* K9 */ be_nested_str_weak(device), - /* K10 */ be_nested_str_weak(path), - /* K11 */ be_nested_str_weak(data), - /* K12 */ be_nested_str_weak(copy), - /* K13 */ be_nested_str_weak(cluster), - /* K14 */ be_nested_str_weak(attribute), - /* K15 */ be_nested_str_weak(status), - /* K16 */ be_nested_str_weak(INVALID_ACTION), - /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes), - /* K18 */ be_nested_str_weak(endpoint), - /* K19 */ be_nested_str_weak(tasmota), - /* K20 */ be_nested_str_weak(loglevel), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(get_attribute_name), - /* K23 */ be_nested_str_weak(log), - /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20), - /* K25 */ be_nested_str_weak(_X20_X28), - /* K26 */ be_nested_str_weak(_X29), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_nested_str_weak(start), - /* K29 */ be_nested_str_weak(is_direct), - /* K30 */ be_nested_str_weak(next_attribute), - /* K31 */ be_nested_str_weak(msg), - /* K32 */ be_nested_str_weak(get_pi), - /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE), - /* K34 */ be_nested_str_weak(write_attribute), - /* K35 */ be_nested_str_weak(session), - /* K36 */ be_nested_str_weak(SUCCESS), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(send_queue), - /* K39 */ be_nested_str_weak(push), - /* K40 */ be_nested_str_weak(IM_WriteResponse), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_write_request), &be_const_str_solidified, ( &(const binstruction[145]) { /* code */ @@ -223,128 +392,121 @@ be_local_closure(class_Matter_IM_path2raw, /* name */ be_nested_proto( 9, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(attribute), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(path2raw), &be_const_str_solidified, ( &(const binstruction[107]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 + 0x8C140329, // 0000 GETMET R5 R1 K41 0x541E0036, // 0001 LDINT R7 55 - 0x58200001, // 0002 LDCONST R8 K1 + 0x5820002A, // 0002 LDCONST R8 K42 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 + 0x8C140329, // 0004 GETMET R5 R1 K41 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200001, // 0006 LDCONST R8 K1 + 0x5820002A, // 0006 LDCONST R8 K42 0x7C140600, // 0007 CALL R5 3 - 0x88140502, // 0008 GETMBR R5 R2 K2 + 0x88140512, // 0008 GETMBR R5 R2 K18 0x541A00FE, // 0009 LDINT R6 255 0x18140A06, // 000A LE R5 R5 R6 0x78160008, // 000B JMPF R5 #0015 - 0x8C140300, // 000C GETMET R5 R1 K0 + 0x8C140329, // 000C GETMET R5 R1 K41 0x541E2401, // 000D LDINT R7 9218 0x5421FFFD, // 000E LDINT R8 -2 0x7C140600, // 000F CALL R5 3 - 0x8C140300, // 0010 GETMET R5 R1 K0 - 0x881C0502, // 0011 GETMBR R7 R2 K2 - 0x58200001, // 0012 LDCONST R8 K1 + 0x8C140329, // 0010 GETMET R5 R1 K41 + 0x881C0512, // 0011 GETMBR R7 R2 K18 + 0x5820002A, // 0012 LDCONST R8 K42 0x7C140600, // 0013 CALL R5 3 0x70020007, // 0014 JMP #001D - 0x8C140300, // 0015 GETMET R5 R1 K0 + 0x8C140329, // 0015 GETMET R5 R1 K41 0x541E2501, // 0016 LDINT R7 9474 0x5421FFFD, // 0017 LDINT R8 -2 0x7C140600, // 0018 CALL R5 3 - 0x8C140300, // 0019 GETMET R5 R1 K0 - 0x881C0502, // 001A GETMBR R7 R2 K2 - 0x58200003, // 001B LDCONST R8 K3 + 0x8C140329, // 0019 GETMET R5 R1 K41 + 0x881C0512, // 001A GETMBR R7 R2 K18 + 0x5820002B, // 001B LDCONST R8 K43 0x7C140600, // 001C CALL R5 3 - 0x88140504, // 001D GETMBR R5 R2 K4 + 0x8814050D, // 001D GETMBR R5 R2 K13 0x541A00FE, // 001E LDINT R6 255 0x18140A06, // 001F LE R5 R5 R6 0x78160008, // 0020 JMPF R5 #002A - 0x8C140300, // 0021 GETMET R5 R1 K0 + 0x8C140329, // 0021 GETMET R5 R1 K41 0x541E2402, // 0022 LDINT R7 9219 0x5421FFFD, // 0023 LDINT R8 -2 0x7C140600, // 0024 CALL R5 3 - 0x8C140300, // 0025 GETMET R5 R1 K0 - 0x881C0504, // 0026 GETMBR R7 R2 K4 - 0x58200001, // 0027 LDCONST R8 K1 + 0x8C140329, // 0025 GETMET R5 R1 K41 + 0x881C050D, // 0026 GETMBR R7 R2 K13 + 0x5820002A, // 0027 LDCONST R8 K42 0x7C140600, // 0028 CALL R5 3 0x70020014, // 0029 JMP #003F - 0x88140504, // 002A GETMBR R5 R2 K4 + 0x8814050D, // 002A GETMBR R5 R2 K13 0x541AFFFE, // 002B LDINT R6 65535 0x18140A06, // 002C LE R5 R5 R6 0x78160008, // 002D JMPF R5 #0037 - 0x8C140300, // 002E GETMET R5 R1 K0 + 0x8C140329, // 002E GETMET R5 R1 K41 0x541E2502, // 002F LDINT R7 9475 0x5421FFFD, // 0030 LDINT R8 -2 0x7C140600, // 0031 CALL R5 3 - 0x8C140300, // 0032 GETMET R5 R1 K0 - 0x881C0504, // 0033 GETMBR R7 R2 K4 - 0x58200003, // 0034 LDCONST R8 K3 + 0x8C140329, // 0032 GETMET R5 R1 K41 + 0x881C050D, // 0033 GETMBR R7 R2 K13 + 0x5820002B, // 0034 LDCONST R8 K43 0x7C140600, // 0035 CALL R5 3 0x70020007, // 0036 JMP #003F - 0x8C140300, // 0037 GETMET R5 R1 K0 + 0x8C140329, // 0037 GETMET R5 R1 K41 0x541E2602, // 0038 LDINT R7 9731 0x5421FFFD, // 0039 LDINT R8 -2 0x7C140600, // 003A CALL R5 3 - 0x8C140300, // 003B GETMET R5 R1 K0 - 0x881C0504, // 003C GETMBR R7 R2 K4 + 0x8C140329, // 003B GETMET R5 R1 K41 + 0x881C050D, // 003C GETMBR R7 R2 K13 0x54220003, // 003D LDINT R8 4 0x7C140600, // 003E CALL R5 3 - 0x88140505, // 003F GETMBR R5 R2 K5 + 0x8814050E, // 003F GETMBR R5 R2 K14 0x541A00FE, // 0040 LDINT R6 255 0x18140A06, // 0041 LE R5 R5 R6 0x78160008, // 0042 JMPF R5 #004C - 0x8C140300, // 0043 GETMET R5 R1 K0 + 0x8C140329, // 0043 GETMET R5 R1 K41 0x541E2403, // 0044 LDINT R7 9220 0x5421FFFD, // 0045 LDINT R8 -2 0x7C140600, // 0046 CALL R5 3 - 0x8C140300, // 0047 GETMET R5 R1 K0 - 0x881C0505, // 0048 GETMBR R7 R2 K5 - 0x58200001, // 0049 LDCONST R8 K1 + 0x8C140329, // 0047 GETMET R5 R1 K41 + 0x881C050E, // 0048 GETMBR R7 R2 K14 + 0x5820002A, // 0049 LDCONST R8 K42 0x7C140600, // 004A CALL R5 3 0x70020014, // 004B JMP #0061 - 0x88140505, // 004C GETMBR R5 R2 K5 + 0x8814050E, // 004C GETMBR R5 R2 K14 0x541AFFFE, // 004D LDINT R6 65535 0x18140A06, // 004E LE R5 R5 R6 0x78160008, // 004F JMPF R5 #0059 - 0x8C140300, // 0050 GETMET R5 R1 K0 + 0x8C140329, // 0050 GETMET R5 R1 K41 0x541E2503, // 0051 LDINT R7 9476 0x5421FFFD, // 0052 LDINT R8 -2 0x7C140600, // 0053 CALL R5 3 - 0x8C140300, // 0054 GETMET R5 R1 K0 - 0x881C0505, // 0055 GETMBR R7 R2 K5 - 0x58200003, // 0056 LDCONST R8 K3 + 0x8C140329, // 0054 GETMET R5 R1 K41 + 0x881C050E, // 0055 GETMBR R7 R2 K14 + 0x5820002B, // 0056 LDCONST R8 K43 0x7C140600, // 0057 CALL R5 3 0x70020007, // 0058 JMP #0061 - 0x8C140300, // 0059 GETMET R5 R1 K0 + 0x8C140329, // 0059 GETMET R5 R1 K41 0x541E2603, // 005A LDINT R7 9732 0x5421FFFD, // 005B LDINT R8 -2 0x7C140600, // 005C CALL R5 3 - 0x8C140300, // 005D GETMET R5 R1 K0 - 0x881C0505, // 005E GETMBR R7 R2 K5 + 0x8C140329, // 005D GETMET R5 R1 K41 + 0x881C050E, // 005E GETMBR R7 R2 K14 0x54220003, // 005F LDINT R8 4 0x7C140600, // 0060 CALL R5 3 0x78120003, // 0061 JMPF R4 #0066 - 0x8C140300, // 0062 GETMET R5 R1 K0 + 0x8C140329, // 0062 GETMET R5 R1 K41 0x541E3404, // 0063 LDINT R7 13317 0x5421FFFD, // 0064 LDINT R8 -2 0x7C140600, // 0065 CALL R5 3 - 0x8C140300, // 0066 GETMET R5 R1 K0 + 0x8C140329, // 0066 GETMET R5 R1 K41 0x541E0017, // 0067 LDINT R7 24 - 0x58200001, // 0068 LDCONST R8 K1 + 0x5820002A, // 0068 LDCONST R8 K42 0x7C140600, // 0069 CALL R5 3 0x80000000, // 006A RET 0 }) @@ -360,43 +522,35 @@ be_local_closure(class_Matter_IM_attributedata2raw, /* name */ be_nested_proto( 11, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(355795236), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(path2raw), - /* K4 */ be_nested_str_weak(tag_sub), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(tlv2raw), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(attributedata2raw), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C140300, // 0000 GETMET R5 R1 K0 - 0x581C0001, // 0001 LDCONST R7 K1 + 0x8C140329, // 0000 GETMET R5 R1 K41 + 0x581C002C, // 0001 LDCONST R7 K44 0x5421FFFB, // 0002 LDINT R8 -4 0x7C140600, // 0003 CALL R5 3 - 0x8C140300, // 0004 GETMET R5 R1 K0 - 0x581C0002, // 0005 LDCONST R7 K2 + 0x8C140329, // 0004 GETMET R5 R1 K41 + 0x581C002A, // 0005 LDCONST R7 K42 0x5421FFFD, // 0006 LDINT R8 -2 0x7C140600, // 0007 CALL R5 3 - 0x8C140103, // 0008 GETMET R5 R0 K3 + 0x8C14012D, // 0008 GETMET R5 R0 K45 0x5C1C0200, // 0009 MOVE R7 R1 0x5C200400, // 000A MOVE R8 R2 - 0x58240002, // 000B LDCONST R9 K2 + 0x5824002A, // 000B LDCONST R9 K42 0x5C280800, // 000C MOVE R10 R4 0x7C140A00, // 000D CALL R5 5 - 0x900E0905, // 000E SETMBR R3 K4 K5 - 0x8C140706, // 000F GETMET R5 R3 K6 + 0x900E5D2B, // 000E SETMBR R3 K46 K43 + 0x8C14072F, // 000F GETMET R5 R3 K47 0x5C1C0200, // 0010 MOVE R7 R1 0x7C140400, // 0011 CALL R5 2 - 0x8C140300, // 0012 GETMET R5 R1 K0 + 0x8C140329, // 0012 GETMET R5 R1 K41 0x541E1817, // 0013 LDINT R7 6168 0x5421FFFD, // 0014 LDINT R8 -2 0x7C140600, // 0015 CALL R5 3 @@ -414,103 +568,78 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ be_nested_proto( 13, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReadRequestMessage), - /* K3 */ be_nested_str_weak(fabric_filtered), - /* K4 */ be_nested_str_weak(attributes_requests), - /* K5 */ be_nested_str_weak(updates), - /* K6 */ be_nested_str_weak(AttributePathIB), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K14 */ be_nested_str_weak(local_session_id), - /* K15 */ be_nested_str_weak(subscription_id), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(is_keep_alive), - /* K18 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K19 */ be_nested_str_weak(update_event_generator_array), - /* K20 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), - /* K21 */ be_nested_str_weak(_message_handler), - /* K22 */ be_nested_str_weak(send_queue), - /* K23 */ be_nested_str_weak(send_enqueued), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(send_subscribe_update), &be_const_str_solidified, ( &(const binstruction[64]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x88080323, // 0000 GETMBR R2 R1 K35 + 0xB80E0000, // 0001 GETNGBL R3 K0 + 0x8C0C0730, // 0002 GETMET R3 R3 K48 0x7C0C0200, // 0003 CALL R3 1 0x50100000, // 0004 LDBOOL R4 0 0 - 0x900E0604, // 0005 SETMBR R3 K3 R4 + 0x900E6204, // 0005 SETMBR R3 K49 R4 0x60100012, // 0006 GETGBL R4 G18 0x7C100000, // 0007 CALL R4 0 - 0x900E0804, // 0008 SETMBR R3 K4 R4 + 0x900E6404, // 0008 SETMBR R3 K50 R4 0x60100010, // 0009 GETGBL R4 G16 - 0x88140305, // 000A GETMBR R5 R1 K5 + 0x88140333, // 000A GETMBR R5 R1 K51 0x7C100200, // 000B CALL R4 1 0xA802000F, // 000C EXBLK 0 #001D 0x5C140800, // 000D MOVE R5 R4 0x7C140000, // 000E CALL R5 0 - 0xB81A0200, // 000F GETNGBL R6 K1 - 0x8C180D06, // 0010 GETMET R6 R6 K6 + 0xB81A0000, // 000F GETNGBL R6 K0 + 0x8C180D34, // 0010 GETMET R6 R6 K52 0x7C180200, // 0011 CALL R6 1 - 0x881C0B07, // 0012 GETMBR R7 R5 K7 - 0x901A0E07, // 0013 SETMBR R6 K7 R7 - 0x881C0B08, // 0014 GETMBR R7 R5 K8 - 0x901A1007, // 0015 SETMBR R6 K8 R7 - 0x881C0B09, // 0016 GETMBR R7 R5 K9 - 0x901A1207, // 0017 SETMBR R6 K9 R7 - 0x881C0704, // 0018 GETMBR R7 R3 K4 - 0x8C1C0F0A, // 0019 GETMET R7 R7 K10 + 0x881C0B12, // 0012 GETMBR R7 R5 K18 + 0x901A2407, // 0013 SETMBR R6 K18 R7 + 0x881C0B0D, // 0014 GETMBR R7 R5 K13 + 0x901A1A07, // 0015 SETMBR R6 K13 R7 + 0x881C0B0E, // 0016 GETMBR R7 R5 K14 + 0x901A1C07, // 0017 SETMBR R6 K14 R7 + 0x881C0732, // 0018 GETMBR R7 R3 K50 + 0x8C1C0F27, // 0019 GETMET R7 R7 K39 0x5C240C00, // 001A MOVE R9 R6 0x7C1C0400, // 001B CALL R7 2 0x7001FFEF, // 001C JMP #000D - 0x5810000B, // 001D LDCONST R4 K11 + 0x58100025, // 001D LDCONST R4 K37 0xAC100200, // 001E CATCH R4 1 0 0xB0080000, // 001F RAISE 2 R0 R0 - 0xB8121800, // 0020 GETNGBL R4 K12 + 0xB8122E00, // 0020 GETNGBL R4 K23 0x60140018, // 0021 GETGBL R5 G24 - 0x5818000D, // 0022 LDCONST R6 K13 - 0x881C050E, // 0023 GETMBR R7 R2 K14 - 0x8820030F, // 0024 GETMBR R8 R1 K15 + 0x58180035, // 0022 LDCONST R6 K53 + 0x881C0536, // 0023 GETMBR R7 R2 K54 + 0x88200337, // 0024 GETMBR R8 R1 K55 0x7C140600, // 0025 CALL R5 3 - 0x58180010, // 0026 LDCONST R6 K16 + 0x58180015, // 0026 LDCONST R6 K21 0x7C100400, // 0027 CALL R4 2 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90062204, // 0029 SETMBR R1 K17 R4 - 0x8C100112, // 002A GETMET R4 R0 K18 + 0x90067004, // 0029 SETMBR R1 K56 R4 + 0x8C100139, // 002A GETMET R4 R0 K57 0x5C180600, // 002B MOVE R6 R3 0x4C1C0000, // 002C LDNIL R7 0x7C100600, // 002D CALL R4 3 - 0x8C140313, // 002E GETMET R5 R1 K19 + 0x8C14033A, // 002E GETMET R5 R1 K58 0x7C140200, // 002F CALL R5 1 - 0xB81A0200, // 0030 GETNGBL R6 K1 - 0x8C180D14, // 0031 GETMET R6 R6 K20 - 0x88200515, // 0032 GETMBR R8 R2 K21 + 0xB81A0000, // 0030 GETNGBL R6 K0 + 0x8C180D3B, // 0031 GETMET R6 R6 K59 + 0x8820053C, // 0032 GETMBR R8 R2 K60 0x5C240400, // 0033 MOVE R9 R2 0x5C280800, // 0034 MOVE R10 R4 0x5C2C0A00, // 0035 MOVE R11 R5 0x5C300200, // 0036 MOVE R12 R1 0x7C180C00, // 0037 CALL R6 6 - 0x881C0116, // 0038 GETMBR R7 R0 K22 - 0x8C1C0F0A, // 0039 GETMET R7 R7 K10 + 0x881C0126, // 0038 GETMBR R7 R0 K38 + 0x8C1C0F27, // 0039 GETMET R7 R7 K39 0x5C240C00, // 003A MOVE R9 R6 0x7C1C0400, // 003B CALL R7 2 - 0x8C1C0117, // 003C GETMET R7 R0 K23 - 0x88240515, // 003D GETMBR R9 R2 K21 + 0x8C1C013D, // 003C GETMET R7 R0 K61 + 0x8824053C, // 003D GETMBR R9 R2 K60 0x7C1C0400, // 003E CALL R7 2 0x80000000, // 003F RET 0 }) @@ -526,43 +655,34 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ be_nested_proto( 13, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(ReadRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K4 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), - /* K5 */ be_nested_str_weak(send_queue), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(IM_ReportData_Pull), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_read_request_pull), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x8C0C0730, // 0001 GETMET R3 R3 K48 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x8C100103, // 0006 GETMET R4 R0 K3 + 0x8C100139, // 0006 GETMET R4 R0 K57 0x5C180600, // 0007 MOVE R6 R3 0x5C1C0200, // 0008 MOVE R7 R1 0x7C100600, // 0009 CALL R4 3 - 0x8C140104, // 000A GETMET R5 R0 K4 + 0x8C14013E, // 000A GETMET R5 R0 K62 0x5C1C0600, // 000B MOVE R7 R3 0x5C200200, // 000C MOVE R8 R1 0x7C140600, // 000D CALL R5 3 - 0x88180105, // 000E GETMBR R6 R0 K5 - 0x8C180D06, // 000F GETMET R6 R6 K6 + 0x88180126, // 000E GETMBR R6 R0 K38 + 0x8C180D27, // 000F GETMET R6 R6 K39 0xB8220000, // 0010 GETNGBL R8 K0 - 0x8C201107, // 0011 GETMET R8 R8 K7 + 0x8C20113F, // 0011 GETMET R8 R8 K63 0x5C280200, // 0012 MOVE R10 R1 0x5C2C0800, // 0013 MOVE R11 R4 0x5C300A00, // 0014 MOVE R12 R5 @@ -583,152 +703,126 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na be_nested_proto( 16, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(attributes_requests), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(PathGenerator), - /* K5 */ be_nested_str_weak(device), - /* K6 */ be_nested_str_weak(start), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(fabric_filtered), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(loglevel), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(Path), - /* K16 */ be_nested_str_weak(get_attribute_name), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K19 */ be_nested_str_weak(session), - /* K20 */ be_nested_str_weak(local_session_id), - /* K21 */ be_nested_str_weak(_X20_X28), - /* K22 */ be_nested_str_weak(_X29), - /* K23 */ be_nested_str_weak(), - /* K24 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_read_or_subscribe_request_pull), &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x880C0332, // 0000 GETMBR R3 R1 K50 0x4C100000, // 0001 LDNIL R4 0x200C0604, // 0002 NE R3 R3 R4 0x780E006C, // 0003 JMPF R3 #0071 0x4C0C0000, // 0004 LDNIL R3 - 0x88100300, // 0005 GETMBR R4 R1 K0 + 0x88100332, // 0005 GETMBR R4 R1 K50 0x78120003, // 0006 JMPF R4 #000B 0x6010000C, // 0007 GETGBL R4 G12 - 0x88140300, // 0008 GETMBR R5 R1 K0 + 0x88140332, // 0008 GETMBR R5 R1 K50 0x7C100200, // 0009 CALL R4 1 0x70020000, // 000A JMP #000C - 0x58100001, // 000B LDCONST R4 K1 - 0x24140902, // 000C GT R5 R4 K2 + 0x58100040, // 000B LDCONST R4 K64 + 0x24140941, // 000C GT R5 R4 K65 0x78160002, // 000D JMPF R5 #0011 0x60140012, // 000E GETGBL R5 G18 0x7C140000, // 000F CALL R5 0 0x5C0C0A00, // 0010 MOVE R3 R5 0x60140010, // 0011 GETGBL R5 G16 - 0x88180300, // 0012 GETMBR R6 R1 K0 + 0x88180332, // 0012 GETMBR R6 R1 K50 0x7C140200, // 0013 CALL R5 1 0xA8020057, // 0014 EXBLK 0 #006D 0x5C180A00, // 0015 MOVE R6 R5 0x7C180000, // 0016 CALL R6 0 - 0xB81E0600, // 0017 GETNGBL R7 K3 - 0x8C1C0F04, // 0018 GETMET R7 R7 K4 - 0x88240105, // 0019 GETMBR R9 R0 K5 + 0xB81E0000, // 0017 GETNGBL R7 K0 + 0x8C1C0F08, // 0018 GETMET R7 R7 K8 + 0x88240109, // 0019 GETMBR R9 R0 K9 0x7C1C0400, // 001A CALL R7 2 - 0x8C200F06, // 001B GETMET R8 R7 K6 - 0x88280D07, // 001C GETMBR R10 R6 K7 - 0x882C0D08, // 001D GETMBR R11 R6 K8 - 0x88300D09, // 001E GETMBR R12 R6 K9 - 0x8834030A, // 001F GETMBR R13 R1 K10 + 0x8C200F1C, // 001B GETMET R8 R7 K28 + 0x88280D12, // 001C GETMBR R10 R6 K18 + 0x882C0D0D, // 001D GETMBR R11 R6 K13 + 0x88300D0E, // 001E GETMBR R12 R6 K14 + 0x88340331, // 001F GETMBR R13 R1 K49 0x7C200A00, // 0020 CALL R8 5 - 0x24200902, // 0021 GT R8 R4 K2 + 0x24200941, // 0021 GT R8 R4 K65 0x78220003, // 0022 JMPF R8 #0027 - 0x8C20070B, // 0023 GETMET R8 R3 K11 + 0x8C200727, // 0023 GETMET R8 R3 K39 0x5C280E00, // 0024 MOVE R10 R7 0x7C200400, // 0025 CALL R8 2 0x70020000, // 0026 JMP #0028 0x5C0C0E00, // 0027 MOVE R3 R7 - 0xB8221800, // 0028 GETNGBL R8 K12 - 0x8C20110D, // 0029 GETMET R8 R8 K13 - 0x5828000E, // 002A LDCONST R10 K14 + 0xB8222600, // 0028 GETNGBL R8 K19 + 0x8C201114, // 0029 GETMET R8 R8 K20 + 0x58280015, // 002A LDCONST R10 K21 0x7C200400, // 002B CALL R8 2 0x7822003E, // 002C JMPF R8 #006C - 0x88200D07, // 002D GETMBR R8 R6 K7 + 0x88200D12, // 002D GETMBR R8 R6 K18 0x4C240000, // 002E LDNIL R9 0x1C201009, // 002F EQ R8 R8 R9 0x74220007, // 0030 JMPT R8 #0039 - 0x88200D08, // 0031 GETMBR R8 R6 K8 + 0x88200D0D, // 0031 GETMBR R8 R6 K13 0x4C240000, // 0032 LDNIL R9 0x1C201009, // 0033 EQ R8 R8 R9 0x74220003, // 0034 JMPT R8 #0039 - 0x88200D09, // 0035 GETMBR R8 R6 K9 + 0x88200D0E, // 0035 GETMBR R8 R6 K14 0x4C240000, // 0036 LDNIL R9 0x1C201009, // 0037 EQ R8 R8 R9 0x78220032, // 0038 JMPF R8 #006C - 0xB8220600, // 0039 GETNGBL R8 K3 - 0x8C20110F, // 003A GETMET R8 R8 K15 + 0xB8220000, // 0039 GETNGBL R8 K0 + 0x8C201103, // 003A GETMET R8 R8 K3 0x7C200200, // 003B CALL R8 1 - 0x88240D07, // 003C GETMBR R9 R6 K7 - 0x90220E09, // 003D SETMBR R8 K7 R9 - 0x88240D08, // 003E GETMBR R9 R6 K8 - 0x90221009, // 003F SETMBR R8 K8 R9 - 0x88240D09, // 0040 GETMBR R9 R6 K9 - 0x90221209, // 0041 SETMBR R8 K9 R9 - 0x8824030A, // 0042 GETMBR R9 R1 K10 - 0x90221409, // 0043 SETMBR R8 K10 R9 + 0x88240D12, // 003C GETMBR R9 R6 K18 + 0x90222409, // 003D SETMBR R8 K18 R9 + 0x88240D0D, // 003E GETMBR R9 R6 K13 + 0x90221A09, // 003F SETMBR R8 K13 R9 + 0x88240D0E, // 0040 GETMBR R9 R6 K14 + 0x90221C09, // 0041 SETMBR R8 K14 R9 + 0x88240331, // 0042 GETMBR R9 R1 K49 + 0x90226209, // 0043 SETMBR R8 K49 R9 0x60240008, // 0044 GETGBL R9 G8 0x5C281000, // 0045 MOVE R10 R8 0x7C240200, // 0046 CALL R9 1 - 0x88280D08, // 0047 GETMBR R10 R6 K8 + 0x88280D0D, // 0047 GETMBR R10 R6 K13 0x4C2C0000, // 0048 LDNIL R11 0x2028140B, // 0049 NE R10 R10 R11 0x782A0017, // 004A JMPF R10 #0063 - 0x88280D09, // 004B GETMBR R10 R6 K9 + 0x88280D0E, // 004B GETMBR R10 R6 K14 0x4C2C0000, // 004C LDNIL R11 0x2028140B, // 004D NE R10 R10 R11 0x782A0013, // 004E JMPF R10 #0063 - 0xB82A0600, // 004F GETNGBL R10 K3 - 0x8C281510, // 0050 GETMET R10 R10 K16 - 0x88300D08, // 0051 GETMBR R12 R6 K8 - 0x88340D09, // 0052 GETMBR R13 R6 K9 + 0xB82A0000, // 004F GETNGBL R10 K0 + 0x8C281516, // 0050 GETMET R10 R10 K22 + 0x88300D0D, // 0051 GETMBR R12 R6 K13 + 0x88340D0E, // 0052 GETMBR R13 R6 K14 0x7C280600, // 0053 CALL R10 3 - 0xB82E2200, // 0054 GETNGBL R11 K17 + 0xB82E2E00, // 0054 GETNGBL R11 K23 0x60300018, // 0055 GETGBL R12 G24 - 0x58340012, // 0056 LDCONST R13 K18 - 0x88380513, // 0057 GETMBR R14 R2 K19 - 0x88381D14, // 0058 GETMBR R14 R14 K20 + 0x58340042, // 0056 LDCONST R13 K66 + 0x88380523, // 0057 GETMBR R14 R2 K35 + 0x88381D36, // 0058 GETMBR R14 R14 K54 0x782A0002, // 0059 JMPF R10 #005D - 0x003E2A0A, // 005A ADD R15 K21 R10 - 0x003C1F16, // 005B ADD R15 R15 K22 + 0x003E320A, // 005A ADD R15 K25 R10 + 0x003C1F1A, // 005B ADD R15 R15 K26 0x70020000, // 005C JMP #005E - 0x583C0017, // 005D LDCONST R15 K23 + 0x583C001B, // 005D LDCONST R15 K27 0x003C120F, // 005E ADD R15 R9 R15 0x7C300600, // 005F CALL R12 3 - 0x5834000E, // 0060 LDCONST R13 K14 + 0x58340015, // 0060 LDCONST R13 K21 0x7C2C0400, // 0061 CALL R11 2 0x70020008, // 0062 JMP #006C - 0xB82A2200, // 0063 GETNGBL R10 K17 + 0xB82A2E00, // 0063 GETNGBL R10 K23 0x602C0018, // 0064 GETGBL R11 G24 - 0x58300012, // 0065 LDCONST R12 K18 - 0x88340513, // 0066 GETMBR R13 R2 K19 - 0x88341B14, // 0067 GETMBR R13 R13 K20 + 0x58300042, // 0065 LDCONST R12 K66 + 0x88340523, // 0066 GETMBR R13 R2 K35 + 0x88341B36, // 0067 GETMBR R13 R13 K54 0x5C381200, // 0068 MOVE R14 R9 0x7C2C0600, // 0069 CALL R11 3 - 0x5830000E, // 006A LDCONST R12 K14 + 0x58300015, // 006A LDCONST R12 K21 0x7C280400, // 006B CALL R10 2 0x7001FFA7, // 006C JMP #0015 - 0x58140018, // 006D LDCONST R5 K24 + 0x58140025, // 006D LDCONST R5 K37 0xAC140200, // 006E CATCH R5 1 0 0xB0080000, // 006F RAISE 2 R0 R0 0x80040600, // 0070 RET 1 R3 @@ -747,47 +841,35 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TimedRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(timeout), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(send_status), - /* K10 */ be_nested_str_weak(SUCCESS), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_timed_request), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x8C0C0743, // 0001 GETMET R3 R3 K67 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0xB8120600, // 0006 GETNGBL R4 K3 + 0xB8122E00, // 0006 GETNGBL R4 K23 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x881C0305, // 0009 GETMBR R7 R1 K5 - 0x881C0F06, // 000A GETMBR R7 R7 K6 - 0x88200707, // 000B GETMBR R8 R3 K7 + 0x58180044, // 0008 LDCONST R6 K68 + 0x881C0323, // 0009 GETMBR R7 R1 K35 + 0x881C0F36, // 000A GETMBR R7 R7 K54 + 0x88200745, // 000B GETMBR R8 R3 K69 0x7C140600, // 000C CALL R5 3 - 0x58180008, // 000D LDCONST R6 K8 + 0x58180015, // 000D LDCONST R6 K21 0x7C100400, // 000E CALL R4 2 - 0x8C100109, // 000F GETMET R4 R0 K9 + 0x8C100146, // 000F GETMET R4 R0 K70 0x5C180200, // 0010 MOVE R6 R1 0xB81E0000, // 0011 GETNGBL R7 K0 - 0x881C0F0A, // 0012 GETMBR R7 R7 K10 + 0x881C0F24, // 0012 GETMBR R7 R7 K36 0x7C100600, // 0013 CALL R4 3 0x50100200, // 0014 LDBOOL R4 1 0 0x80040800, // 0015 RET 1 R4 @@ -804,21 +886,18 @@ be_local_closure(class_Matter_IM_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(every_50ms), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040147, // 0000 GETMBR R1 R0 K71 + 0x8C040348, // 0001 GETMET R1 R1 K72 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -834,270 +913,228 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ be_nested_proto( 19, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[41]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Path), - /* K2 */ be_nested_str_weak(msg), - /* K3 */ be_nested_str_weak(InvokeRequestMessage), - /* K4 */ be_nested_str_weak(from_TLV), - /* K5 */ be_nested_str_weak(invoke_requests), - /* K6 */ be_nested_str_weak(InvokeResponseMessage), - /* K7 */ be_nested_str_weak(suppress_response), - /* K8 */ be_nested_str_weak(invoke_responses), - /* K9 */ be_nested_str_weak(endpoint), - /* K10 */ be_nested_str_weak(command_path), - /* K11 */ be_nested_str_weak(cluster), - /* K12 */ be_nested_str_weak(command), - /* K13 */ be_nested_str_weak(status), - /* K14 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K15 */ be_nested_str_weak(get_command_name), - /* K16 */ be_nested_str_weak(device), - /* K17 */ be_nested_str_weak(invoke_request), - /* K18 */ be_nested_str_weak(session), - /* K19 */ be_nested_str_weak(command_fields), - /* K20 */ be_nested_str_weak(log), - /* K21 */ be_nested_str_weak(_X28), - /* K22 */ be_nested_str_weak(_X29_X20), - /* K23 */ be_nested_str_weak(), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K25 */ be_nested_str_weak(local_session_id), - /* K26 */ be_const_int(3), - /* K27 */ be_nested_str_weak(SUCCESS), - /* K28 */ be_nested_str_weak(invokeresponse2raw), - /* K29 */ be_nested_str_weak(push), - /* K30 */ be_nested_str_weak(tasmota), - /* K31 */ be_nested_str_weak(loglevel), - /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K33 */ be_nested_str_weak(exchange_id), - /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K36 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_const_int(0), - /* K39 */ be_nested_str_weak(send_queue), - /* K40 */ be_nested_str_weak(IM_InvokeResponse), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_invoke_request), &be_const_str_solidified, ( &(const binstruction[222]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x8C0C0703, // 0001 GETMET R3 R3 K3 0x7C0C0200, // 0002 CALL R3 1 - 0x900E0401, // 0003 SETMBR R3 K2 R1 + 0x900E3E01, // 0003 SETMBR R3 K31 R1 0xB8120000, // 0004 GETNGBL R4 K0 - 0x8C100903, // 0005 GETMET R4 R4 K3 + 0x8C100949, // 0005 GETMET R4 R4 K73 0x7C100200, // 0006 CALL R4 1 - 0x8C100904, // 0007 GETMET R4 R4 K4 + 0x8C100902, // 0007 GETMET R4 R4 K2 0x5C180400, // 0008 MOVE R6 R2 0x7C100400, // 0009 CALL R4 2 - 0x88140905, // 000A GETMBR R5 R4 K5 + 0x8814094A, // 000A GETMBR R5 R4 K74 0x4C180000, // 000B LDNIL R6 0x20140A06, // 000C NE R5 R5 R6 0x781600CE, // 000D JMPF R5 #00DD 0xB8160000, // 000E GETNGBL R5 K0 - 0x8C140B06, // 000F GETMET R5 R5 K6 + 0x8C140B4B, // 000F GETMET R5 R5 K75 0x7C140200, // 0010 CALL R5 1 0x50180000, // 0011 LDBOOL R6 0 0 - 0x90160E06, // 0012 SETMBR R5 K7 R6 + 0x90160806, // 0012 SETMBR R5 K4 R6 0x60180012, // 0013 GETGBL R6 G18 0x7C180000, // 0014 CALL R6 0 - 0x90161006, // 0015 SETMBR R5 K8 R6 + 0x90169806, // 0015 SETMBR R5 K76 R6 0x60180010, // 0016 GETGBL R6 G16 - 0x881C0905, // 0017 GETMBR R7 R4 K5 + 0x881C094A, // 0017 GETMBR R7 R4 K74 0x7C180200, // 0018 CALL R6 1 0xA80200AD, // 0019 EXBLK 0 #00C8 0x5C1C0C00, // 001A MOVE R7 R6 0x7C1C0000, // 001B CALL R7 0 - 0x88200F0A, // 001C GETMBR R8 R7 K10 - 0x88201109, // 001D GETMBR R8 R8 K9 - 0x900E1208, // 001E SETMBR R3 K9 R8 - 0x88200F0A, // 001F GETMBR R8 R7 K10 - 0x8820110B, // 0020 GETMBR R8 R8 K11 - 0x900E1608, // 0021 SETMBR R3 K11 R8 - 0x88200F0A, // 0022 GETMBR R8 R7 K10 - 0x8820110C, // 0023 GETMBR R8 R8 K12 - 0x900E1808, // 0024 SETMBR R3 K12 R8 + 0x88200F4D, // 001C GETMBR R8 R7 K77 + 0x88201112, // 001D GETMBR R8 R8 K18 + 0x900E2408, // 001E SETMBR R3 K18 R8 + 0x88200F4D, // 001F GETMBR R8 R7 K77 + 0x8820110D, // 0020 GETMBR R8 R8 K13 + 0x900E1A08, // 0021 SETMBR R3 K13 R8 + 0x88200F4D, // 0022 GETMBR R8 R7 K77 + 0x8820114E, // 0023 GETMBR R8 R8 K78 + 0x900E9C08, // 0024 SETMBR R3 K78 R8 0xB8220000, // 0025 GETNGBL R8 K0 - 0x8820110E, // 0026 GETMBR R8 R8 K14 - 0x900E1A08, // 0027 SETMBR R3 K13 R8 + 0x8820114F, // 0026 GETMBR R8 R8 K79 + 0x900E1E08, // 0027 SETMBR R3 K15 R8 0xB8220000, // 0028 GETNGBL R8 K0 - 0x8C20110F, // 0029 GETMET R8 R8 K15 - 0x8828070B, // 002A GETMBR R10 R3 K11 - 0x882C070C, // 002B GETMBR R11 R3 K12 + 0x8C201150, // 0029 GETMET R8 R8 K80 + 0x8828070D, // 002A GETMBR R10 R3 K13 + 0x882C074E, // 002B GETMBR R11 R3 K78 0x7C200600, // 002C CALL R8 3 0x60240008, // 002D GETGBL R9 G8 0x5C280600, // 002E MOVE R10 R3 0x7C240200, // 002F CALL R9 1 - 0x88280110, // 0030 GETMBR R10 R0 K16 - 0x8C281511, // 0031 GETMET R10 R10 K17 - 0x88300312, // 0032 GETMBR R12 R1 K18 - 0x88340F13, // 0033 GETMBR R13 R7 K19 + 0x88280109, // 0030 GETMBR R10 R0 K9 + 0x8C281551, // 0031 GETMET R10 R10 K81 + 0x88300323, // 0032 GETMBR R12 R1 K35 + 0x88340F52, // 0033 GETMBR R13 R7 K82 0x5C380600, // 0034 MOVE R14 R3 0x7C280800, // 0035 CALL R10 4 - 0x882C0714, // 0036 GETMBR R11 R3 K20 + 0x882C0717, // 0036 GETMBR R11 R3 K23 0x4C300000, // 0037 LDNIL R12 0x202C160C, // 0038 NE R11 R11 R12 0x782E0005, // 0039 JMPF R11 #0040 0x602C0008, // 003A GETGBL R11 G8 - 0x88300714, // 003B GETMBR R12 R3 K20 + 0x88300717, // 003B GETMBR R12 R3 K23 0x7C2C0200, // 003C CALL R11 1 - 0x002E2A0B, // 003D ADD R11 K21 R11 - 0x002C1716, // 003E ADD R11 R11 K22 + 0x002EA60B, // 003D ADD R11 K83 R11 + 0x002C1754, // 003E ADD R11 R11 K84 0x70020000, // 003F JMP #0041 - 0x582C0017, // 0040 LDCONST R11 K23 - 0xB8322800, // 0041 GETNGBL R12 K20 + 0x582C001B, // 0040 LDCONST R11 K27 + 0xB8322E00, // 0041 GETNGBL R12 K23 0x60340018, // 0042 GETGBL R13 G24 - 0x58380018, // 0043 LDCONST R14 K24 - 0x883C0312, // 0044 GETMBR R15 R1 K18 - 0x883C1F19, // 0045 GETMBR R15 R15 K25 + 0x58380055, // 0043 LDCONST R14 K85 + 0x883C0323, // 0044 GETMBR R15 R1 K35 + 0x883C1F36, // 0045 GETMBR R15 R15 K54 0x5C401200, // 0046 MOVE R16 R9 0x78220001, // 0047 JMPF R8 #004A 0x5C441000, // 0048 MOVE R17 R8 0x70020000, // 0049 JMP #004B - 0x58440017, // 004A LDCONST R17 K23 + 0x5844001B, // 004A LDCONST R17 K27 0x5C481600, // 004B MOVE R18 R11 0x7C340A00, // 004C CALL R13 5 - 0x5838001A, // 004D LDCONST R14 K26 + 0x58380015, // 004D LDCONST R14 K21 0x7C300400, // 004E CALL R12 2 0x4C300000, // 004F LDNIL R12 - 0x900E280C, // 0050 SETMBR R3 K20 R12 + 0x900E2E0C, // 0050 SETMBR R3 K23 R12 0x60300015, // 0051 GETGBL R12 G21 0x5436001F, // 0052 LDINT R13 32 0x7C300200, // 0053 CALL R12 1 0x50340200, // 0054 LDBOOL R13 1 0 0x1C34140D, // 0055 EQ R13 R10 R13 0x74360004, // 0056 JMPT R13 #005C - 0x8834070D, // 0057 GETMBR R13 R3 K13 + 0x8834070F, // 0057 GETMBR R13 R3 K15 0xB83A0000, // 0058 GETNGBL R14 K0 - 0x88381D1B, // 0059 GETMBR R14 R14 K27 + 0x88381D24, // 0059 GETMBR R14 R14 K36 0x1C341A0E, // 005A EQ R13 R13 R14 0x7836001A, // 005B JMPF R13 #0077 0xB8360000, // 005C GETNGBL R13 K0 - 0x88341B1B, // 005D GETMBR R13 R13 K27 - 0x900E1A0D, // 005E SETMBR R3 K13 R13 - 0x8C34011C, // 005F GETMET R13 R0 K28 + 0x88341B24, // 005D GETMBR R13 R13 K36 + 0x900E1E0D, // 005E SETMBR R3 K15 R13 + 0x8C340156, // 005F GETMET R13 R0 K86 0x5C3C1800, // 0060 MOVE R15 R12 0x5C400600, // 0061 MOVE R16 R3 0x4C440000, // 0062 LDNIL R17 0x7C340800, // 0063 CALL R13 4 - 0x88340B08, // 0064 GETMBR R13 R5 K8 - 0x8C341B1D, // 0065 GETMET R13 R13 K29 + 0x88340B4C, // 0064 GETMBR R13 R5 K76 + 0x8C341B27, // 0065 GETMET R13 R13 K39 0x5C3C1800, // 0066 MOVE R15 R12 0x7C340400, // 0067 CALL R13 2 - 0xB8363C00, // 0068 GETNGBL R13 K30 - 0x8C341B1F, // 0069 GETMET R13 R13 K31 - 0x583C001A, // 006A LDCONST R15 K26 + 0xB8362600, // 0068 GETNGBL R13 K19 + 0x8C341B14, // 0069 GETMET R13 R13 K20 + 0x583C0015, // 006A LDCONST R15 K21 0x7C340400, // 006B CALL R13 2 0x78360008, // 006C JMPF R13 #0076 - 0xB8362800, // 006D GETNGBL R13 K20 + 0xB8362E00, // 006D GETNGBL R13 K23 0x60380018, // 006E GETGBL R14 G24 - 0x583C0020, // 006F LDCONST R15 K32 - 0x88400312, // 0070 GETMBR R16 R1 K18 - 0x88402119, // 0071 GETMBR R16 R16 K25 - 0x88440321, // 0072 GETMBR R17 R1 K33 + 0x583C0057, // 006F LDCONST R15 K87 + 0x88400323, // 0070 GETMBR R16 R1 K35 + 0x88402136, // 0071 GETMBR R16 R16 K54 + 0x88440358, // 0072 GETMBR R17 R1 K88 0x7C380600, // 0073 CALL R14 3 - 0x583C001A, // 0074 LDCONST R15 K26 + 0x583C0015, // 0074 LDCONST R15 K21 0x7C340400, // 0075 CALL R13 2 0x7002004F, // 0076 JMP #00C7 0x4C340000, // 0077 LDNIL R13 0x2034140D, // 0078 NE R13 R10 R13 0x78360021, // 0079 JMPF R13 #009C - 0x8C34011C, // 007A GETMET R13 R0 K28 + 0x8C340156, // 007A GETMET R13 R0 K86 0x5C3C1800, // 007B MOVE R15 R12 0x5C400600, // 007C MOVE R16 R3 0x5C441400, // 007D MOVE R17 R10 0x7C340800, // 007E CALL R13 4 - 0x88340B08, // 007F GETMBR R13 R5 K8 - 0x8C341B1D, // 0080 GETMET R13 R13 K29 + 0x88340B4C, // 007F GETMBR R13 R5 K76 + 0x8C341B27, // 0080 GETMET R13 R13 K39 0x5C3C1800, // 0081 MOVE R15 R12 0x7C340400, // 0082 CALL R13 2 0xB8360000, // 0083 GETNGBL R13 K0 - 0x8C341B0F, // 0084 GETMET R13 R13 K15 - 0x883C070B, // 0085 GETMBR R15 R3 K11 - 0x8840070C, // 0086 GETMBR R16 R3 K12 + 0x8C341B50, // 0084 GETMET R13 R13 K80 + 0x883C070D, // 0085 GETMBR R15 R3 K13 + 0x8840074E, // 0086 GETMBR R16 R3 K78 0x7C340600, // 0087 CALL R13 3 0x5C201A00, // 0088 MOVE R8 R13 0x5C341000, // 0089 MOVE R13 R8 0x74360000, // 008A JMPT R13 #008C - 0x58200017, // 008B LDCONST R8 K23 - 0xB8363C00, // 008C GETNGBL R13 K30 - 0x8C341B1F, // 008D GETMET R13 R13 K31 - 0x583C001A, // 008E LDCONST R15 K26 + 0x5820001B, // 008B LDCONST R8 K27 + 0xB8362600, // 008C GETNGBL R13 K19 + 0x8C341B14, // 008D GETMET R13 R13 K20 + 0x583C0015, // 008E LDCONST R15 K21 0x7C340400, // 008F CALL R13 2 0x78360009, // 0090 JMPF R13 #009B - 0xB8362800, // 0091 GETNGBL R13 K20 + 0xB8362E00, // 0091 GETNGBL R13 K23 0x60380018, // 0092 GETGBL R14 G24 - 0x583C0022, // 0093 LDCONST R15 K34 - 0x88400312, // 0094 GETMBR R16 R1 K18 - 0x88402119, // 0095 GETMBR R16 R16 K25 + 0x583C0059, // 0093 LDCONST R15 K89 + 0x88400323, // 0094 GETMBR R16 R1 K35 + 0x88402136, // 0095 GETMBR R16 R16 K54 0x5C440600, // 0096 MOVE R17 R3 0x5C481000, // 0097 MOVE R18 R8 0x7C380800, // 0098 CALL R14 4 - 0x583C001A, // 0099 LDCONST R15 K26 + 0x583C0015, // 0099 LDCONST R15 K21 0x7C340400, // 009A CALL R13 2 0x7002002A, // 009B JMP #00C7 - 0x8834070D, // 009C GETMBR R13 R3 K13 + 0x8834070F, // 009C GETMBR R13 R3 K15 0x4C380000, // 009D LDNIL R14 0x20341A0E, // 009E NE R13 R13 R14 0x78360018, // 009F JMPF R13 #00B9 - 0x8C34011C, // 00A0 GETMET R13 R0 K28 + 0x8C340156, // 00A0 GETMET R13 R0 K86 0x5C3C1800, // 00A1 MOVE R15 R12 0x5C400600, // 00A2 MOVE R16 R3 0x4C440000, // 00A3 LDNIL R17 0x7C340800, // 00A4 CALL R13 4 - 0x88340B08, // 00A5 GETMBR R13 R5 K8 - 0x8C341B1D, // 00A6 GETMET R13 R13 K29 + 0x88340B4C, // 00A5 GETMBR R13 R5 K76 + 0x8C341B27, // 00A6 GETMET R13 R13 K39 0x5C3C1800, // 00A7 MOVE R15 R12 0x7C340400, // 00A8 CALL R13 2 - 0xB8363C00, // 00A9 GETNGBL R13 K30 - 0x8C341B1F, // 00AA GETMET R13 R13 K31 - 0x583C001A, // 00AB LDCONST R15 K26 + 0xB8362600, // 00A9 GETNGBL R13 K19 + 0x8C341B14, // 00AA GETMET R13 R13 K20 + 0x583C0015, // 00AB LDCONST R15 K21 0x7C340400, // 00AC CALL R13 2 0x78360009, // 00AD JMPF R13 #00B8 - 0xB8362800, // 00AE GETNGBL R13 K20 + 0xB8362E00, // 00AE GETNGBL R13 K23 0x60380018, // 00AF GETGBL R14 G24 - 0x583C0023, // 00B0 LDCONST R15 K35 - 0x88400312, // 00B1 GETMBR R16 R1 K18 - 0x88402119, // 00B2 GETMBR R16 R16 K25 - 0x8844070D, // 00B3 GETMBR R17 R3 K13 - 0x88480321, // 00B4 GETMBR R18 R1 K33 + 0x583C005A, // 00B0 LDCONST R15 K90 + 0x88400323, // 00B1 GETMBR R16 R1 K35 + 0x88402136, // 00B2 GETMBR R16 R16 K54 + 0x8844070F, // 00B3 GETMBR R17 R3 K15 + 0x88480358, // 00B4 GETMBR R18 R1 K88 0x7C380800, // 00B5 CALL R14 4 - 0x583C001A, // 00B6 LDCONST R15 K26 + 0x583C0015, // 00B6 LDCONST R15 K21 0x7C340400, // 00B7 CALL R13 2 0x7002000D, // 00B8 JMP #00C7 - 0xB8363C00, // 00B9 GETNGBL R13 K30 - 0x8C341B1F, // 00BA GETMET R13 R13 K31 - 0x583C001A, // 00BB LDCONST R15 K26 + 0xB8362600, // 00B9 GETNGBL R13 K19 + 0x8C341B14, // 00BA GETMET R13 R13 K20 + 0x583C0015, // 00BB LDCONST R15 K21 0x7C340400, // 00BC CALL R13 2 0x78360008, // 00BD JMPF R13 #00C7 - 0xB8362800, // 00BE GETNGBL R13 K20 + 0xB8362E00, // 00BE GETNGBL R13 K23 0x60380018, // 00BF GETGBL R14 G24 - 0x583C0024, // 00C0 LDCONST R15 K36 - 0x88400312, // 00C1 GETMBR R16 R1 K18 - 0x88402119, // 00C2 GETMBR R16 R16 K25 - 0x88440321, // 00C3 GETMBR R17 R1 K33 + 0x583C005B, // 00C0 LDCONST R15 K91 + 0x88400323, // 00C1 GETMBR R16 R1 K35 + 0x88402136, // 00C2 GETMBR R16 R16 K54 + 0x88440358, // 00C3 GETMBR R17 R1 K88 0x7C380600, // 00C4 CALL R14 3 - 0x583C001A, // 00C5 LDCONST R15 K26 + 0x583C0015, // 00C5 LDCONST R15 K21 0x7C340400, // 00C6 CALL R13 2 0x7001FF51, // 00C7 JMP #001A 0x58180025, // 00C8 LDCONST R6 K37 0xAC180200, // 00C9 CATCH R6 1 0 0xB0080000, // 00CA RAISE 2 R0 R0 0x6018000C, // 00CB GETGBL R6 G12 - 0x881C0B08, // 00CC GETMBR R7 R5 K8 + 0x881C0B4C, // 00CC GETMBR R7 R5 K76 0x7C180200, // 00CD CALL R6 1 - 0x24180D26, // 00CE GT R6 R6 K38 + 0x24180D5C, // 00CE GT R6 R6 K92 0x781A0008, // 00CF JMPF R6 #00D9 - 0x88180127, // 00D0 GETMBR R6 R0 K39 - 0x8C180D1D, // 00D1 GETMET R6 R6 K29 + 0x88180126, // 00D0 GETMBR R6 R0 K38 + 0x8C180D27, // 00D1 GETMET R6 R6 K39 0xB8220000, // 00D2 GETNGBL R8 K0 - 0x8C201128, // 00D3 GETMET R8 R8 K40 + 0x8C20115D, // 00D3 GETMET R8 R8 K93 0x5C280200, // 00D4 MOVE R10 R1 0x5C2C0A00, // 00D5 MOVE R11 R5 0x7C200600, // 00D6 CALL R8 3 @@ -1121,49 +1158,17 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, be_nested_proto( 24, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(event_requests), - /* K1 */ be_nested_str_weak(get_node_id), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(parse_event_filters_min_no), - /* K5 */ be_nested_str_weak(event_filters), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(EventGenerator), - /* K8 */ be_nested_str_weak(device), - /* K9 */ be_nested_str_weak(start), - /* K10 */ be_nested_str_weak(endpoint), - /* K11 */ be_nested_str_weak(cluster), - /* K12 */ be_nested_str_weak(event), - /* K13 */ be_nested_str_weak(push), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(loglevel), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(), - /* K18 */ be_nested_str_weak(get_event_name), - /* K19 */ be_nested_str_weak(_X28), - /* K20 */ be_nested_str_weak(_X29_X20), - /* K21 */ be_nested_str_weak(_X2502X), - /* K22 */ be_nested_str_weak(_X2A_X2A), - /* K23 */ be_nested_str_weak(_X2504X), - /* K24 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), - /* K25 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), - /* K26 */ be_nested_str_weak(log), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), - /* K28 */ be_nested_str_weak(session), - /* K29 */ be_nested_str_weak(local_session_id), - /* K30 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_read_or_subscribe_request_event_pull), &be_const_str_solidified, ( &(const binstruction[140]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x880C035E, // 0000 GETMBR R3 R1 K94 0x4C100000, // 0001 LDNIL R4 0x200C0604, // 0002 NE R3 R3 R4 0x780E0085, // 0003 JMPF R3 #008A @@ -1171,133 +1176,133 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0x4C100000, // 0005 LDNIL R4 0x20100404, // 0006 NE R4 R2 R4 0x78120002, // 0007 JMPF R4 #000B - 0x8C100501, // 0008 GETMET R4 R2 K1 + 0x8C10055F, // 0008 GETMET R4 R2 K95 0x7C100200, // 0009 CALL R4 1 0x70020000, // 000A JMP #000C 0x4C100000, // 000B LDNIL R4 - 0x88140300, // 000C GETMBR R5 R1 K0 + 0x8814035E, // 000C GETMBR R5 R1 K94 0x78160003, // 000D JMPF R5 #0012 0x6014000C, // 000E GETGBL R5 G12 - 0x88180300, // 000F GETMBR R6 R1 K0 + 0x8818035E, // 000F GETMBR R6 R1 K94 0x7C140200, // 0010 CALL R5 1 0x70020000, // 0011 JMP #0013 - 0x58140002, // 0012 LDCONST R5 K2 - 0x24180B03, // 0013 GT R6 R5 K3 + 0x5814005C, // 0012 LDCONST R5 K92 + 0x24180B2A, // 0013 GT R6 R5 K42 0x781A0002, // 0014 JMPF R6 #0018 0x60180012, // 0015 GETGBL R6 G18 0x7C180000, // 0016 CALL R6 0 0x5C0C0C00, // 0017 MOVE R3 R6 - 0x8C180104, // 0018 GETMET R6 R0 K4 - 0x88200305, // 0019 GETMBR R8 R1 K5 + 0x8C180160, // 0018 GETMET R6 R0 K96 + 0x88200361, // 0019 GETMBR R8 R1 K97 0x5C240800, // 001A MOVE R9 R4 0x7C180600, // 001B CALL R6 3 - 0x881C0300, // 001C GETMBR R7 R1 K0 + 0x881C035E, // 001C GETMBR R7 R1 K94 0x781E006A, // 001D JMPF R7 #0089 0x601C0010, // 001E GETGBL R7 G16 - 0x88200300, // 001F GETMBR R8 R1 K0 + 0x8820035E, // 001F GETMBR R8 R1 K94 0x7C1C0200, // 0020 CALL R7 1 0xA8020063, // 0021 EXBLK 0 #0086 0x5C200E00, // 0022 MOVE R8 R7 0x7C200000, // 0023 CALL R8 0 - 0xB8260C00, // 0024 GETNGBL R9 K6 - 0x8C241307, // 0025 GETMET R9 R9 K7 - 0x882C0108, // 0026 GETMBR R11 R0 K8 + 0xB8260000, // 0024 GETNGBL R9 K0 + 0x8C241362, // 0025 GETMET R9 R9 K98 + 0x882C0109, // 0026 GETMBR R11 R0 K9 0x7C240400, // 0027 CALL R9 2 - 0x8C281309, // 0028 GETMET R10 R9 K9 - 0x8830110A, // 0029 GETMBR R12 R8 K10 - 0x8834110B, // 002A GETMBR R13 R8 K11 - 0x8838110C, // 002B GETMBR R14 R8 K12 + 0x8C28131C, // 0028 GETMET R10 R9 K28 + 0x88301112, // 0029 GETMBR R12 R8 K18 + 0x8834110D, // 002A GETMBR R13 R8 K13 + 0x88381163, // 002B GETMBR R14 R8 K99 0x5C3C0C00, // 002C MOVE R15 R6 0x7C280A00, // 002D CALL R10 5 - 0x24280B03, // 002E GT R10 R5 K3 + 0x24280B2A, // 002E GT R10 R5 K42 0x782A0003, // 002F JMPF R10 #0034 - 0x8C28070D, // 0030 GETMET R10 R3 K13 + 0x8C280727, // 0030 GETMET R10 R3 K39 0x5C301200, // 0031 MOVE R12 R9 0x7C280400, // 0032 CALL R10 2 0x70020000, // 0033 JMP #0035 0x5C0C1200, // 0034 MOVE R3 R9 - 0xB82A1C00, // 0035 GETNGBL R10 K14 - 0x8C28150F, // 0036 GETMET R10 R10 K15 - 0x58300010, // 0037 LDCONST R12 K16 + 0xB82A2600, // 0035 GETNGBL R10 K19 + 0x8C281514, // 0036 GETMET R10 R10 K20 + 0x58300015, // 0037 LDCONST R12 K21 0x7C280400, // 0038 CALL R10 2 0x782A004A, // 0039 JMPF R10 #0085 - 0x58280011, // 003A LDCONST R10 K17 - 0x882C110B, // 003B GETMBR R11 R8 K11 + 0x5828001B, // 003A LDCONST R10 K27 + 0x882C110D, // 003B GETMBR R11 R8 K13 0x4C300000, // 003C LDNIL R12 0x202C160C, // 003D NE R11 R11 R12 0x782E0011, // 003E JMPF R11 #0051 - 0x882C110C, // 003F GETMBR R11 R8 K12 + 0x882C1163, // 003F GETMBR R11 R8 K99 0x4C300000, // 0040 LDNIL R12 0x202C160C, // 0041 NE R11 R11 R12 0x782E000D, // 0042 JMPF R11 #0051 - 0xB82E0C00, // 0043 GETNGBL R11 K6 - 0x8C2C1712, // 0044 GETMET R11 R11 K18 - 0x8834110B, // 0045 GETMBR R13 R8 K11 - 0x8838110C, // 0046 GETMBR R14 R8 K12 + 0xB82E0000, // 0043 GETNGBL R11 K0 + 0x8C2C1764, // 0044 GETMET R11 R11 K100 + 0x8834110D, // 0045 GETMBR R13 R8 K13 + 0x88381163, // 0046 GETMBR R14 R8 K99 0x7C2C0600, // 0047 CALL R11 3 0x5C281600, // 0048 MOVE R10 R11 0x4C2C0000, // 0049 LDNIL R11 0x202C140B, // 004A NE R11 R10 R11 0x782E0002, // 004B JMPF R11 #004F - 0x002E260A, // 004C ADD R11 K19 R10 - 0x002C1714, // 004D ADD R11 R11 K20 + 0x002EA60A, // 004C ADD R11 K83 R10 + 0x002C1754, // 004D ADD R11 R11 K84 0x70020000, // 004E JMP #0050 - 0x582C0011, // 004F LDCONST R11 K17 + 0x582C001B, // 004F LDCONST R11 K27 0x5C281600, // 0050 MOVE R10 R11 - 0x882C110A, // 0051 GETMBR R11 R8 K10 + 0x882C1112, // 0051 GETMBR R11 R8 K18 0x4C300000, // 0052 LDNIL R12 0x202C160C, // 0053 NE R11 R11 R12 0x782E0004, // 0054 JMPF R11 #005A 0x602C0018, // 0055 GETGBL R11 G24 - 0x58300015, // 0056 LDCONST R12 K21 - 0x8834110A, // 0057 GETMBR R13 R8 K10 + 0x58300065, // 0056 LDCONST R12 K101 + 0x88341112, // 0057 GETMBR R13 R8 K18 0x7C2C0400, // 0058 CALL R11 2 0x70020000, // 0059 JMP #005B - 0x582C0016, // 005A LDCONST R11 K22 - 0x8830110B, // 005B GETMBR R12 R8 K11 + 0x582C0066, // 005A LDCONST R11 K102 + 0x8830110D, // 005B GETMBR R12 R8 K13 0x4C340000, // 005C LDNIL R13 0x2030180D, // 005D NE R12 R12 R13 0x78320004, // 005E JMPF R12 #0064 0x60300018, // 005F GETGBL R12 G24 - 0x58340017, // 0060 LDCONST R13 K23 - 0x8838110B, // 0061 GETMBR R14 R8 K11 + 0x58340067, // 0060 LDCONST R13 K103 + 0x8838110D, // 0061 GETMBR R14 R8 K13 0x7C300400, // 0062 CALL R12 2 0x70020000, // 0063 JMP #0065 - 0x58300018, // 0064 LDCONST R12 K24 - 0x8834110C, // 0065 GETMBR R13 R8 K12 + 0x58300068, // 0064 LDCONST R12 K104 + 0x88341163, // 0065 GETMBR R13 R8 K99 0x4C380000, // 0066 LDNIL R14 0x20341A0E, // 0067 NE R13 R13 R14 0x78360004, // 0068 JMPF R13 #006E 0x60340018, // 0069 GETGBL R13 G24 - 0x58380015, // 006A LDCONST R14 K21 - 0x883C110C, // 006B GETMBR R15 R8 K12 + 0x58380065, // 006A LDCONST R14 K101 + 0x883C1163, // 006B GETMBR R15 R8 K99 0x7C340400, // 006C CALL R13 2 0x70020000, // 006D JMP #006F - 0x58340016, // 006E LDCONST R13 K22 + 0x58340066, // 006E LDCONST R13 K102 0x4C380000, // 006F LDNIL R14 0x20380C0E, // 0070 NE R14 R6 R14 0x783A0004, // 0071 JMPF R14 #0077 0x60380018, // 0072 GETGBL R14 G24 - 0x583C0019, // 0073 LDCONST R15 K25 + 0x583C0069, // 0073 LDCONST R15 K105 0x5C400C00, // 0074 MOVE R16 R6 0x7C380400, // 0075 CALL R14 2 0x70020000, // 0076 JMP #0078 - 0x58380011, // 0077 LDCONST R14 K17 - 0xB83E3400, // 0078 GETNGBL R15 K26 + 0x5838001B, // 0077 LDCONST R14 K27 + 0xB83E2E00, // 0078 GETNGBL R15 K23 0x60400018, // 0079 GETGBL R16 G24 - 0x5844001B, // 007A LDCONST R17 K27 - 0x8848051C, // 007B GETMBR R18 R2 K28 - 0x8848251D, // 007C GETMBR R18 R18 K29 + 0x5844006A, // 007A LDCONST R17 K106 + 0x88480523, // 007B GETMBR R18 R2 K35 + 0x88482536, // 007C GETMBR R18 R18 K54 0x5C4C1600, // 007D MOVE R19 R11 0x5C501800, // 007E MOVE R20 R12 0x5C541A00, // 007F MOVE R21 R13 0x5C581400, // 0080 MOVE R22 R10 0x5C5C1C00, // 0081 MOVE R23 R14 0x7C400E00, // 0082 CALL R16 7 - 0x58440010, // 0083 LDCONST R17 K16 + 0x58440015, // 0083 LDCONST R17 K21 0x7C3C0400, // 0084 CALL R15 2 0x7001FF9B, // 0085 JMP #0022 - 0x581C001E, // 0086 LDCONST R7 K30 + 0x581C0025, // 0086 LDCONST R7 K37 0xAC1C0200, // 0087 CATCH R7 1 0 0xB0080000, // 0088 RAISE 2 R0 R0 0x80040600, // 0089 RET 1 R3 @@ -1316,49 +1321,39 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(finished), - /* K3 */ be_nested_str_weak(ready), - /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - /* K6 */ be_nested_str_weak(resp), - /* K7 */ be_nested_str_weak(exchange_id), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(send_enqueued), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080040, // 0000 LDCONST R2 K64 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x88100126, // 0002 GETMBR R4 R0 K38 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 0x780E0011, // 0005 JMPF R3 #0018 - 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x880C0126, // 0006 GETMBR R3 R0 K38 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x8810076B, // 0008 GETMBR R4 R3 K107 0x74120004, // 0009 JMPT R4 #000F - 0x88100703, // 000A GETMBR R4 R3 K3 + 0x8810076C, // 000A GETMBR R4 R3 K108 0x78120002, // 000B JMPF R4 #000F - 0x8C100704, // 000C GETMET R4 R3 K4 + 0x8C10076D, // 000C GETMET R4 R3 K109 0x5C180200, // 000D MOVE R6 R1 0x7C100400, // 000E CALL R4 2 - 0x88100702, // 000F GETMBR R4 R3 K2 + 0x8810076B, // 000F GETMBR R4 R3 K107 0x78120004, // 0010 JMPF R4 #0016 - 0x8C100105, // 0011 GETMET R4 R0 K5 - 0x88180706, // 0012 GETMBR R6 R3 K6 - 0x88180D07, // 0013 GETMBR R6 R6 K7 + 0x8C10016E, // 0011 GETMET R4 R0 K110 + 0x8818076F, // 0012 GETMBR R6 R3 K111 + 0x88180D58, // 0013 GETMBR R6 R6 K88 0x7C100400, // 0014 CALL R4 2 0x70020000, // 0015 JMP #0017 - 0x00080508, // 0016 ADD R2 R2 K8 + 0x00080541, // 0016 ADD R2 R2 K65 0x7001FFE8, // 0017 JMP #0001 0x80000000, // 0018 RET 0 }) @@ -1374,140 +1369,104 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ be_nested_proto( 17, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(SubscribeRequestMessage), - /* K2 */ be_nested_str_weak(from_TLV), - /* K3 */ be_nested_str_weak(keep_subscriptions), - /* K4 */ be_nested_str_weak(subs_shop), - /* K5 */ be_nested_str_weak(remove_by_session), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(new_subscription), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(loglevel), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(attributes_requests), - /* K12 */ be_nested_str_weak(Path), - /* K13 */ be_nested_str_weak(msg), - /* K14 */ be_nested_str_weak(endpoint), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(attribute), - /* K17 */ be_nested_str_weak(push), - /* K18 */ be_nested_str_weak(stop_iteration), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), - /* K21 */ be_nested_str_weak(local_session_id), - /* K22 */ be_nested_str_weak(concat), - /* K23 */ be_nested_str_weak(_X20), - /* K24 */ be_nested_str_weak(min_interval), - /* K25 */ be_nested_str_weak(max_interval), - /* K26 */ be_const_int(1), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str_weak(subscription_id), - /* K29 */ be_nested_str_weak(fabric_filtered), - /* K30 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K31 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), - /* K32 */ be_nested_str_weak(set_event_generator_or_arr), - /* K33 */ be_nested_str_weak(send_queue), - /* K34 */ be_nested_str_weak(IM_SubscribeResponse_Pull), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(subscribe_request), &be_const_str_solidified, ( &(const binstruction[96]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x8C0C0770, // 0001 GETMET R3 R3 K112 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x88100703, // 0006 GETMBR R4 R3 K3 + 0x88100771, // 0006 GETMBR R4 R3 K113 0x74120003, // 0007 JMPT R4 #000C - 0x88100104, // 0008 GETMBR R4 R0 K4 - 0x8C100905, // 0009 GETMET R4 R4 K5 - 0x88180306, // 000A GETMBR R6 R1 K6 + 0x88100147, // 0008 GETMBR R4 R0 K71 + 0x8C100972, // 0009 GETMET R4 R4 K114 + 0x88180323, // 000A GETMBR R6 R1 K35 0x7C100400, // 000B CALL R4 2 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x8C100907, // 000D GETMET R4 R4 K7 - 0x88180306, // 000E GETMBR R6 R1 K6 + 0x88100147, // 000C GETMBR R4 R0 K71 + 0x8C100973, // 000D GETMET R4 R4 K115 + 0x88180323, // 000E GETMBR R6 R1 K35 0x5C1C0600, // 000F MOVE R7 R3 0x7C100600, // 0010 CALL R4 3 - 0xB8161000, // 0011 GETNGBL R5 K8 - 0x8C140B09, // 0012 GETMET R5 R5 K9 - 0x581C000A, // 0013 LDCONST R7 K10 + 0xB8162600, // 0011 GETNGBL R5 K19 + 0x8C140B14, // 0012 GETMET R5 R5 K20 + 0x581C0015, // 0013 LDCONST R7 K21 0x7C140400, // 0014 CALL R5 2 0x78160032, // 0015 JMPF R5 #0049 - 0x8814070B, // 0016 GETMBR R5 R3 K11 + 0x88140732, // 0016 GETMBR R5 R3 K50 0x4C180000, // 0017 LDNIL R6 0x20140A06, // 0018 NE R5 R5 R6 0x7816002E, // 0019 JMPF R5 #0049 0x60140012, // 001A GETGBL R5 G18 0x7C140000, // 001B CALL R5 0 0xB81A0000, // 001C GETNGBL R6 K0 - 0x8C180D0C, // 001D GETMET R6 R6 K12 + 0x8C180D03, // 001D GETMET R6 R6 K3 0x7C180200, // 001E CALL R6 1 - 0x901A1A01, // 001F SETMBR R6 K13 R1 + 0x901A3E01, // 001F SETMBR R6 K31 R1 0x601C0010, // 0020 GETGBL R7 G16 - 0x8820070B, // 0021 GETMBR R8 R3 K11 + 0x88200732, // 0021 GETMBR R8 R3 K50 0x7C1C0200, // 0022 CALL R7 1 0xA802000D, // 0023 EXBLK 0 #0032 0x5C200E00, // 0024 MOVE R8 R7 0x7C200000, // 0025 CALL R8 0 - 0x8824110E, // 0026 GETMBR R9 R8 K14 - 0x901A1C09, // 0027 SETMBR R6 K14 R9 - 0x8824110F, // 0028 GETMBR R9 R8 K15 - 0x901A1E09, // 0029 SETMBR R6 K15 R9 - 0x88241110, // 002A GETMBR R9 R8 K16 - 0x901A2009, // 002B SETMBR R6 K16 R9 - 0x8C240B11, // 002C GETMET R9 R5 K17 + 0x88241112, // 0026 GETMBR R9 R8 K18 + 0x901A2409, // 0027 SETMBR R6 K18 R9 + 0x8824110D, // 0028 GETMBR R9 R8 K13 + 0x901A1A09, // 0029 SETMBR R6 K13 R9 + 0x8824110E, // 002A GETMBR R9 R8 K14 + 0x901A1C09, // 002B SETMBR R6 K14 R9 + 0x8C240B27, // 002C GETMET R9 R5 K39 0x602C0008, // 002D GETGBL R11 G8 0x5C300C00, // 002E MOVE R12 R6 0x7C2C0200, // 002F CALL R11 1 0x7C240400, // 0030 CALL R9 2 0x7001FFF1, // 0031 JMP #0024 - 0x581C0012, // 0032 LDCONST R7 K18 + 0x581C0025, // 0032 LDCONST R7 K37 0xAC1C0200, // 0033 CATCH R7 1 0 0xB0080000, // 0034 RAISE 2 R0 R0 - 0xB81E2600, // 0035 GETNGBL R7 K19 + 0xB81E2E00, // 0035 GETNGBL R7 K23 0x60200018, // 0036 GETGBL R8 G24 - 0x58240014, // 0037 LDCONST R9 K20 - 0x88280306, // 0038 GETMBR R10 R1 K6 - 0x88281515, // 0039 GETMBR R10 R10 K21 - 0x8C2C0B16, // 003A GETMET R11 R5 K22 - 0x58340017, // 003B LDCONST R13 K23 + 0x58240074, // 0037 LDCONST R9 K116 + 0x88280323, // 0038 GETMBR R10 R1 K35 + 0x88281536, // 0039 GETMBR R10 R10 K54 + 0x8C2C0B75, // 003A GETMET R11 R5 K117 + 0x58340076, // 003B LDCONST R13 K118 0x7C2C0400, // 003C CALL R11 2 - 0x88300918, // 003D GETMBR R12 R4 K24 - 0x88340919, // 003E GETMBR R13 R4 K25 - 0x88380703, // 003F GETMBR R14 R3 K3 + 0x88300977, // 003D GETMBR R12 R4 K119 + 0x88340978, // 003E GETMBR R13 R4 K120 + 0x88380771, // 003F GETMBR R14 R3 K113 0x783A0001, // 0040 JMPF R14 #0043 - 0x5838001A, // 0041 LDCONST R14 K26 + 0x5838002A, // 0041 LDCONST R14 K42 0x70020000, // 0042 JMP #0044 - 0x5838001B, // 0043 LDCONST R14 K27 - 0x883C091C, // 0044 GETMBR R15 R4 K28 - 0x8840071D, // 0045 GETMBR R16 R3 K29 + 0x5838005C, // 0043 LDCONST R14 K92 + 0x883C0937, // 0044 GETMBR R15 R4 K55 + 0x88400731, // 0045 GETMBR R16 R3 K49 0x7C201000, // 0046 CALL R8 8 - 0x5824000A, // 0047 LDCONST R9 K10 + 0x58240015, // 0047 LDCONST R9 K21 0x7C1C0400, // 0048 CALL R7 2 - 0x8C14011E, // 0049 GETMET R5 R0 K30 + 0x8C140139, // 0049 GETMET R5 R0 K57 0x5C1C0600, // 004A MOVE R7 R3 0x5C200200, // 004B MOVE R8 R1 0x7C140600, // 004C CALL R5 3 - 0x8C18011F, // 004D GETMET R6 R0 K31 + 0x8C18013E, // 004D GETMET R6 R0 K62 0x5C200600, // 004E MOVE R8 R3 0x5C240200, // 004F MOVE R9 R1 0x7C180600, // 0050 CALL R6 3 - 0x8C1C0920, // 0051 GETMET R7 R4 K32 + 0x8C1C0979, // 0051 GETMET R7 R4 K121 0x5C240C00, // 0052 MOVE R9 R6 0x7C1C0400, // 0053 CALL R7 2 - 0x881C0121, // 0054 GETMBR R7 R0 K33 - 0x8C1C0F11, // 0055 GETMET R7 R7 K17 + 0x881C0126, // 0054 GETMBR R7 R0 K38 + 0x8C1C0F27, // 0055 GETMET R7 R7 K39 0xB8260000, // 0056 GETNGBL R9 K0 - 0x8C241322, // 0057 GETMET R9 R9 K34 + 0x8C24137A, // 0057 GETMET R9 R9 K122 0x5C2C0200, // 0058 MOVE R11 R1 0x5C300A00, // 0059 MOVE R12 R5 0x5C340C00, // 005A MOVE R13 R6 @@ -1529,17 +1488,13 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(_message_handler), - /* K2 */ be_nested_str_weak(send_encrypted_ack), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(send_ack_now), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ @@ -1547,9 +1502,9 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x88080501, // 0005 GETMBR R2 R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 + 0x88080323, // 0004 GETMBR R2 R1 K35 + 0x8808053C, // 0005 GETMBR R2 R2 K60 + 0x8C08057B, // 0006 GETMET R2 R2 K123 0x5C100200, // 0007 MOVE R4 R1 0x50140000, // 0008 LDBOOL R5 0 0 0x7C080600, // 0009 CALL R2 3 @@ -1567,46 +1522,37 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(time_reached), - /* K4 */ be_nested_str_weak(expiration), - /* K5 */ be_nested_str_weak(reached_timeout), - /* K6 */ be_nested_str_weak(remove), - /* K7 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(expire_sendqueue), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x5804005C, // 0000 LDCONST R1 K92 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x880C0126, // 0002 GETMBR R3 R0 K38 0x7C080200, // 0003 CALL R2 1 0x14080202, // 0004 LT R2 R1 R2 0x780A000F, // 0005 JMPF R2 #0016 - 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x88080126, // 0006 GETMBR R2 R0 K38 0x94080401, // 0007 GETIDX R2 R2 R1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0703, // 0009 GETMET R3 R3 K3 - 0x88140504, // 000A GETMBR R5 R2 K4 + 0xB80E2600, // 0008 GETNGBL R3 K19 + 0x8C0C077C, // 0009 GETMET R3 R3 K124 + 0x8814057D, // 000A GETMBR R5 R2 K125 0x7C0C0400, // 000B CALL R3 2 0x780E0006, // 000C JMPF R3 #0014 - 0x8C0C0505, // 000D GETMET R3 R2 K5 + 0x8C0C057E, // 000D GETMET R3 R2 K126 0x7C0C0200, // 000E CALL R3 1 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x8C0C0706, // 0010 GETMET R3 R3 K6 + 0x880C0126, // 000F GETMBR R3 R0 K38 + 0x8C0C077F, // 0010 GETMET R3 R3 K127 0x5C140200, // 0011 MOVE R5 R1 0x7C0C0400, // 0012 CALL R3 2 0x70020000, // 0013 JMP #0015 - 0x00040307, // 0014 ADD R1 R1 K7 + 0x00040341, // 0014 ADD R1 R1 K65 0x7001FFEA, // 0015 JMP #0001 0x4C080000, // 0016 LDNIL R2 0x80040400, // 0017 RET 1 R2 @@ -1623,33 +1569,27 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K1 */ be_nested_str_weak(exchange_id), - /* K2 */ be_nested_str_weak(ack_received), - /* K3 */ be_nested_str_weak(finished), - /* K4 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_incoming_ack), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x8C080180, // 0000 GETMET R2 R0 K128 + 0x88100358, // 0001 GETMBR R4 R1 K88 0x7C080400, // 0002 CALL R2 2 0x780A0008, // 0003 JMPF R2 #000D - 0x8C0C0502, // 0004 GETMET R3 R2 K2 + 0x8C0C0581, // 0004 GETMET R3 R2 K129 0x5C140200, // 0005 MOVE R5 R1 0x7C0C0400, // 0006 CALL R3 2 - 0x88100503, // 0007 GETMBR R4 R2 K3 + 0x8810056B, // 0007 GETMBR R4 R2 K107 0x78120002, // 0008 JMPF R4 #000C - 0x8C100104, // 0009 GETMET R4 R0 K4 - 0x88180301, // 000A GETMBR R6 R1 K1 + 0x8C10016E, // 0009 GETMET R4 R0 K110 + 0x88180358, // 000A GETMBR R6 R1 K88 0x7C100400, // 000B CALL R4 2 0x80040600, // 000C RET 1 R3 0x500C0000, // 000D LDBOOL R3 0 0 @@ -1667,19 +1607,13 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(remove_sendqueue_by_exchangeid), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -1687,24 +1621,24 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x58080000, // 0004 LDCONST R2 K0 + 0x58080040, // 0004 LDCONST R2 K64 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x88100126, // 0006 GETMBR R4 R0 K38 0x7C0C0200, // 0007 CALL R3 1 0x140C0403, // 0008 LT R3 R2 R3 0x780E000C, // 0009 JMPF R3 #0017 - 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x880C0126, // 000A GETMBR R3 R0 K38 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x8C0C0782, // 000C GETMET R3 R3 K130 0x7C0C0200, // 000D CALL R3 1 0x1C0C0601, // 000E EQ R3 R3 R1 0x780E0004, // 000F JMPF R3 #0015 - 0x880C0101, // 0010 GETMBR R3 R0 K1 - 0x8C0C0703, // 0011 GETMET R3 R3 K3 + 0x880C0126, // 0010 GETMBR R3 R0 K38 + 0x8C0C077F, // 0011 GETMET R3 R3 K127 0x5C140400, // 0012 MOVE R5 R2 0x7C0C0400, // 0013 CALL R3 2 0x70020000, // 0014 JMP #0016 - 0x00080504, // 0015 ADD R2 R2 K4 + 0x0008052A, // 0015 ADD R2 R2 K42 0x7001FFED, // 0016 JMP #0005 0x80000000, // 0017 RET 0 }) @@ -1720,120 +1654,94 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na be_nested_proto( 16, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(get_attribute_name), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(_X20_X28), - /* K6 */ be_nested_str_weak(_X29), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_nested_str_weak(status), - /* K9 */ be_nested_str_weak(AttributeStatusIB), - /* K10 */ be_nested_str_weak(path), - /* K11 */ be_nested_str_weak(AttributePathIB), - /* K12 */ be_nested_str_weak(StatusIB), - /* K13 */ be_nested_str_weak(endpoint), - /* K14 */ be_nested_str_weak(write_responses), - /* K15 */ be_nested_str_weak(push), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K18 */ be_nested_str_weak(SUCCESS), - /* K19 */ be_const_int(0), - /* K20 */ be_const_int(2), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(tasmota), - /* K23 */ be_nested_str_weak(loglevel), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(write_single_attribute_status_to_bytes), &be_const_str_solidified, ( &(const binstruction[86]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 + 0x88100983, // 0001 GETMBR R4 R4 K131 0xB8160000, // 0002 GETNGBL R5 K0 - 0x8C140B02, // 0003 GETMET R5 R5 K2 - 0x881C0503, // 0004 GETMBR R7 R2 K3 - 0x88200504, // 0005 GETMBR R8 R2 K4 + 0x8C140B16, // 0003 GETMET R5 R5 K22 + 0x881C050D, // 0004 GETMBR R7 R2 K13 + 0x8820050E, // 0005 GETMBR R8 R2 K14 0x7C140600, // 0006 CALL R5 3 0x78160002, // 0007 JMPF R5 #000B - 0x001A0A05, // 0008 ADD R6 K5 R5 - 0x00180D06, // 0009 ADD R6 R6 K6 + 0x001A3205, // 0008 ADD R6 K25 R5 + 0x00180D1A, // 0009 ADD R6 R6 K26 0x70020000, // 000A JMP #000C - 0x58180007, // 000B LDCONST R6 K7 + 0x5818001B, // 000B LDCONST R6 K27 0x5C140C00, // 000C MOVE R5 R6 - 0x88180508, // 000D GETMBR R6 R2 K8 + 0x8818050F, // 000D GETMBR R6 R2 K15 0x4C1C0000, // 000E LDNIL R7 0x20180C07, // 000F NE R6 R6 R7 0x781A0034, // 0010 JMPF R6 #0046 0xB81A0000, // 0011 GETNGBL R6 K0 - 0x8C180D09, // 0012 GETMET R6 R6 K9 + 0x8C180D84, // 0012 GETMET R6 R6 K132 0x7C180200, // 0013 CALL R6 1 0xB81E0000, // 0014 GETNGBL R7 K0 - 0x8C1C0F0B, // 0015 GETMET R7 R7 K11 + 0x8C1C0F34, // 0015 GETMET R7 R7 K52 0x7C1C0200, // 0016 CALL R7 1 0x901A1407, // 0017 SETMBR R6 K10 R7 0xB81E0000, // 0018 GETNGBL R7 K0 - 0x8C1C0F0C, // 0019 GETMET R7 R7 K12 + 0x8C1C0F85, // 0019 GETMET R7 R7 K133 0x7C1C0200, // 001A CALL R7 1 - 0x901A1007, // 001B SETMBR R6 K8 R7 + 0x901A1E07, // 001B SETMBR R6 K15 R7 0x881C0D0A, // 001C GETMBR R7 R6 K10 - 0x8820050D, // 001D GETMBR R8 R2 K13 - 0x901E1A08, // 001E SETMBR R7 K13 R8 + 0x88200512, // 001D GETMBR R8 R2 K18 + 0x901E2408, // 001E SETMBR R7 K18 R8 0x881C0D0A, // 001F GETMBR R7 R6 K10 - 0x88200503, // 0020 GETMBR R8 R2 K3 - 0x901E0608, // 0021 SETMBR R7 K3 R8 + 0x8820050D, // 0020 GETMBR R8 R2 K13 + 0x901E1A08, // 0021 SETMBR R7 K13 R8 0x881C0D0A, // 0022 GETMBR R7 R6 K10 - 0x88200504, // 0023 GETMBR R8 R2 K4 - 0x901E0808, // 0024 SETMBR R7 K4 R8 - 0x881C0D08, // 0025 GETMBR R7 R6 K8 - 0x88200508, // 0026 GETMBR R8 R2 K8 - 0x901E1008, // 0027 SETMBR R7 K8 R8 - 0x881C030E, // 0028 GETMBR R7 R1 K14 - 0x8C1C0F0F, // 0029 GETMET R7 R7 K15 + 0x8820050E, // 0023 GETMBR R8 R2 K14 + 0x901E1C08, // 0024 SETMBR R7 K14 R8 + 0x881C0D0F, // 0025 GETMBR R7 R6 K15 + 0x8820050F, // 0026 GETMBR R8 R2 K15 + 0x901E1E08, // 0027 SETMBR R7 K15 R8 + 0x881C0307, // 0028 GETMBR R7 R1 K7 + 0x8C1C0F27, // 0029 GETMET R7 R7 K39 0x5C240C00, // 002A MOVE R9 R6 0x7C1C0400, // 002B CALL R7 2 - 0xB81E2000, // 002C GETNGBL R7 K16 + 0xB81E2E00, // 002C GETNGBL R7 K23 0x60200018, // 002D GETGBL R8 G24 - 0x58240011, // 002E LDCONST R9 K17 + 0x58240086, // 002E LDCONST R9 K134 0x60280008, // 002F GETGBL R10 G8 0x5C2C0400, // 0030 MOVE R11 R2 0x7C280200, // 0031 CALL R10 1 0x5C2C0A00, // 0032 MOVE R11 R5 0x5C300600, // 0033 MOVE R12 R3 - 0x88340508, // 0034 GETMBR R13 R2 K8 - 0x88380508, // 0035 GETMBR R14 R2 K8 + 0x8834050F, // 0034 GETMBR R13 R2 K15 + 0x8838050F, // 0035 GETMBR R14 R2 K15 0xB83E0000, // 0036 GETNGBL R15 K0 - 0x883C1F12, // 0037 GETMBR R15 R15 K18 + 0x883C1F24, // 0037 GETMBR R15 R15 K36 0x1C381C0F, // 0038 EQ R14 R14 R15 0x783A0001, // 0039 JMPF R14 #003C - 0x58380012, // 003A LDCONST R14 K18 + 0x58380024, // 003A LDCONST R14 K36 0x70020000, // 003B JMP #003D - 0x58380007, // 003C LDCONST R14 K7 + 0x5838001B, // 003C LDCONST R14 K27 0x7C200C00, // 003D CALL R8 6 - 0x8824050D, // 003E GETMBR R9 R2 K13 - 0x20241313, // 003F NE R9 R9 K19 + 0x88240512, // 003E GETMBR R9 R2 K18 + 0x20241340, // 003F NE R9 R9 K64 0x78260001, // 0040 JMPF R9 #0043 - 0x58240014, // 0041 LDCONST R9 K20 + 0x5824002B, // 0041 LDCONST R9 K43 0x70020000, // 0042 JMP #0044 0x58240015, // 0043 LDCONST R9 K21 0x7C1C0400, // 0044 CALL R7 2 0x7002000E, // 0045 JMP #0055 - 0xB81A2C00, // 0046 GETNGBL R6 K22 - 0x8C180D17, // 0047 GETMET R6 R6 K23 + 0xB81A2600, // 0046 GETNGBL R6 K19 + 0x8C180D14, // 0047 GETMET R6 R6 K20 0x58200015, // 0048 LDCONST R8 K21 0x7C180400, // 0049 CALL R6 2 0x781A0009, // 004A JMPF R6 #0055 - 0xB81A2000, // 004B GETNGBL R6 K16 + 0xB81A2E00, // 004B GETNGBL R6 K23 0x601C0018, // 004C GETGBL R7 G24 - 0x58200018, // 004D LDCONST R8 K24 + 0x58200087, // 004D LDCONST R8 K135 0x60240008, // 004E GETGBL R9 G8 0x5C280400, // 004F MOVE R10 R2 0x7C240200, // 0050 CALL R9 1 @@ -1855,51 +1763,38 @@ be_local_closure(class_Matter_IM_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(subs_shop), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(IM_Subscription_Shop), - /* K5 */ be_nested_str_weak(read_request_solo), - /* K6 */ be_nested_str_weak(ReadRequestMessage_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo), - /* K9 */ be_nested_str_weak(tlv_solo), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(Matter_TLV_item), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021201, // 0000 SETMBR R0 K9 R1 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0xB80A0600, // 0004 GETNGBL R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 + 0x90024C02, // 0003 SETMBR R0 K38 R2 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x8C080588, // 0005 GETMET R2 R2 K136 0x5C100000, // 0006 MOVE R4 R0 0x7C080400, // 0007 CALL R2 2 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0xB80A0600, // 0009 GETNGBL R2 K3 - 0x8C080506, // 000A GETMET R2 R2 K6 + 0x90028E02, // 0008 SETMBR R0 K71 R2 + 0xB80A0000, // 0009 GETNGBL R2 K0 + 0x8C08058A, // 000A GETMET R2 R2 K138 0x7C080200, // 000B CALL R2 1 - 0x90020A02, // 000C SETMBR R0 K5 R2 - 0xB80A0600, // 000D GETNGBL R2 K3 - 0x8C080508, // 000E GETMET R2 R2 K8 + 0x90031202, // 000C SETMBR R0 K137 R2 + 0xB80A0000, // 000D GETNGBL R2 K0 + 0x8C08058C, // 000E GETMET R2 R2 K140 0x7C080200, // 000F CALL R2 1 - 0x90020E02, // 0010 SETMBR R0 K7 R2 - 0xB80A0600, // 0011 GETNGBL R2 K3 - 0x8808050A, // 0012 GETMBR R2 R2 K10 - 0x8C08050B, // 0013 GETMET R2 R2 K11 + 0x90031602, // 0010 SETMBR R0 K139 R2 + 0xB80A0000, // 0011 GETNGBL R2 K0 + 0x88080583, // 0012 GETMBR R2 R2 K131 + 0x8C08058E, // 0013 GETMET R2 R2 K142 0x7C080200, // 0014 CALL R2 1 - 0x90021202, // 0015 SETMBR R0 K9 R2 + 0x90031A02, // 0015 SETMBR R0 K141 R2 0x80000000, // 0016 RET 0 }) ) @@ -1914,19 +1809,17 @@ be_local_closure(class_Matter_IM_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expire_sendqueue), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04018F, // 0000 GETMET R1 R0 K143 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -1942,239 +1835,200 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ be_nested_proto( 15, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(msg), - /* K1 */ be_nested_str_weak(status), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K4 */ be_nested_str_weak(get_command_name), - /* K5 */ be_nested_str_weak(cluster), - /* K6 */ be_nested_str_weak(command), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(invoke_request), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(command_fields), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(_X28), - /* K13 */ be_nested_str_weak(_X29_X20), - /* K14 */ be_nested_str_weak(), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(loglevel), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K19 */ be_nested_str_weak(local_session_id), - /* K20 */ be_nested_str_weak(add), - /* K21 */ be_const_int(354943030), - /* K22 */ be_const_int(1), - /* K23 */ be_nested_str_weak(SUCCESS), - /* K24 */ be_nested_str_weak(invokeresponse2raw), - /* K25 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K26 */ be_nested_str_weak(exchange_id), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K30 */ be_const_int(405077761), - /* K31 */ be_nested_str_weak(build_response), - /* K32 */ be_nested_str_weak(message_handler), - /* K33 */ be_nested_str_weak(raw), - /* K34 */ be_nested_str_weak(clear), - /* K35 */ be_nested_str_weak(encode_frame), - /* K36 */ be_nested_str_weak(encrypt), - /* K37 */ be_nested_str_weak(send_response_frame), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_invoke_request_solo), &be_const_str_solidified, ( &(const binstruction[188]) { /* code */ - 0x900A0001, // 0000 SETMBR R2 K0 R1 - 0xB80E0400, // 0001 GETNGBL R3 K2 - 0x880C0703, // 0002 GETMBR R3 R3 K3 - 0x900A0203, // 0003 SETMBR R2 K1 R3 - 0xB80E0400, // 0004 GETNGBL R3 K2 - 0x8C0C0704, // 0005 GETMET R3 R3 K4 - 0x88140505, // 0006 GETMBR R5 R2 K5 - 0x88180506, // 0007 GETMBR R6 R2 K6 + 0x900A3E01, // 0000 SETMBR R2 K31 R1 + 0xB80E0000, // 0001 GETNGBL R3 K0 + 0x880C074F, // 0002 GETMBR R3 R3 K79 + 0x900A1E03, // 0003 SETMBR R2 K15 R3 + 0xB80E0000, // 0004 GETNGBL R3 K0 + 0x8C0C0750, // 0005 GETMET R3 R3 K80 + 0x8814050D, // 0006 GETMBR R5 R2 K13 + 0x8818054E, // 0007 GETMBR R6 R2 K78 0x7C0C0600, // 0008 CALL R3 3 0x60100008, // 0009 GETGBL R4 G8 0x5C140400, // 000A MOVE R5 R2 0x7C100200, // 000B CALL R4 1 - 0x88140107, // 000C GETMBR R5 R0 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x881C0309, // 000E GETMBR R7 R1 K9 - 0x8820050A, // 000F GETMBR R8 R2 K10 + 0x88140109, // 000C GETMBR R5 R0 K9 + 0x8C140B51, // 000D GETMET R5 R5 K81 + 0x881C0323, // 000E GETMBR R7 R1 K35 + 0x88200552, // 000F GETMBR R8 R2 K82 0x5C240400, // 0010 MOVE R9 R2 0x7C140800, // 0011 CALL R5 4 - 0x8818050B, // 0012 GETMBR R6 R2 K11 + 0x88180517, // 0012 GETMBR R6 R2 K23 0x4C1C0000, // 0013 LDNIL R7 0x20180C07, // 0014 NE R6 R6 R7 0x781A0005, // 0015 JMPF R6 #001C 0x60180008, // 0016 GETGBL R6 G8 - 0x881C050B, // 0017 GETMBR R7 R2 K11 + 0x881C0517, // 0017 GETMBR R7 R2 K23 0x7C180200, // 0018 CALL R6 1 - 0x001A1806, // 0019 ADD R6 K12 R6 - 0x00180D0D, // 001A ADD R6 R6 K13 + 0x001AA606, // 0019 ADD R6 K83 R6 + 0x00180D54, // 001A ADD R6 R6 K84 0x70020000, // 001B JMP #001D - 0x5818000E, // 001C LDCONST R6 K14 - 0xB81E1E00, // 001D GETNGBL R7 K15 - 0x8C1C0F10, // 001E GETMET R7 R7 K16 - 0x58240011, // 001F LDCONST R9 K17 + 0x5818001B, // 001C LDCONST R6 K27 + 0xB81E2600, // 001D GETNGBL R7 K19 + 0x8C1C0F14, // 001E GETMET R7 R7 K20 + 0x58240015, // 001F LDCONST R9 K21 0x7C1C0400, // 0020 CALL R7 2 0x781E000D, // 0021 JMPF R7 #0030 - 0xB81E1600, // 0022 GETNGBL R7 K11 + 0xB81E2E00, // 0022 GETNGBL R7 K23 0x60200018, // 0023 GETGBL R8 G24 - 0x58240012, // 0024 LDCONST R9 K18 - 0x88280309, // 0025 GETMBR R10 R1 K9 - 0x88281513, // 0026 GETMBR R10 R10 K19 + 0x58240090, // 0024 LDCONST R9 K144 + 0x88280323, // 0025 GETMBR R10 R1 K35 + 0x88281536, // 0026 GETMBR R10 R10 K54 0x5C2C0800, // 0027 MOVE R11 R4 0x780E0001, // 0028 JMPF R3 #002B 0x5C300600, // 0029 MOVE R12 R3 0x70020000, // 002A JMP #002C - 0x5830000E, // 002B LDCONST R12 K14 + 0x5830001B, // 002B LDCONST R12 K27 0x5C340C00, // 002C MOVE R13 R6 0x7C200A00, // 002D CALL R8 5 - 0x58240011, // 002E LDCONST R9 K17 + 0x58240015, // 002E LDCONST R9 K21 0x7C1C0400, // 002F CALL R7 2 0x4C1C0000, // 0030 LDNIL R7 - 0x900A1607, // 0031 SETMBR R2 K11 R7 + 0x900A2E07, // 0031 SETMBR R2 K23 R7 0x601C0015, // 0032 GETGBL R7 G21 0x5422002F, // 0033 LDINT R8 48 0x7C1C0200, // 0034 CALL R7 1 - 0x8C200F14, // 0035 GETMET R8 R7 K20 - 0x58280015, // 0036 LDCONST R10 K21 + 0x8C200F29, // 0035 GETMET R8 R7 K41 + 0x58280091, // 0036 LDCONST R10 K145 0x542DFFFB, // 0037 LDINT R11 -4 0x7C200600, // 0038 CALL R8 3 - 0x8C200F14, // 0039 GETMET R8 R7 K20 - 0x58280016, // 003A LDCONST R10 K22 - 0x582C0016, // 003B LDCONST R11 K22 + 0x8C200F29, // 0039 GETMET R8 R7 K41 + 0x5828002A, // 003A LDCONST R10 K42 + 0x582C002A, // 003B LDCONST R11 K42 0x7C200600, // 003C CALL R8 3 0x50200200, // 003D LDBOOL R8 1 0 0x1C200A08, // 003E EQ R8 R5 R8 0x74220004, // 003F JMPT R8 #0045 - 0x88200501, // 0040 GETMBR R8 R2 K1 - 0xB8260400, // 0041 GETNGBL R9 K2 - 0x88241317, // 0042 GETMBR R9 R9 K23 + 0x8820050F, // 0040 GETMBR R8 R2 K15 + 0xB8260000, // 0041 GETNGBL R9 K0 + 0x88241324, // 0042 GETMBR R9 R9 K36 0x1C201009, // 0043 EQ R8 R8 R9 0x78220016, // 0044 JMPF R8 #005C - 0xB8220400, // 0045 GETNGBL R8 K2 - 0x88201117, // 0046 GETMBR R8 R8 K23 - 0x900A0208, // 0047 SETMBR R2 K1 R8 - 0x8C200118, // 0048 GETMET R8 R0 K24 + 0xB8220000, // 0045 GETNGBL R8 K0 + 0x88201124, // 0046 GETMBR R8 R8 K36 + 0x900A1E08, // 0047 SETMBR R2 K15 R8 + 0x8C200156, // 0048 GETMET R8 R0 K86 0x5C280E00, // 0049 MOVE R10 R7 0x5C2C0400, // 004A MOVE R11 R2 0x4C300000, // 004B LDNIL R12 0x7C200800, // 004C CALL R8 4 - 0xB8221E00, // 004D GETNGBL R8 K15 - 0x8C201110, // 004E GETMET R8 R8 K16 - 0x58280011, // 004F LDCONST R10 K17 + 0xB8222600, // 004D GETNGBL R8 K19 + 0x8C201114, // 004E GETMET R8 R8 K20 + 0x58280015, // 004F LDCONST R10 K21 0x7C200400, // 0050 CALL R8 2 0x78220008, // 0051 JMPF R8 #005B - 0xB8221600, // 0052 GETNGBL R8 K11 + 0xB8222E00, // 0052 GETNGBL R8 K23 0x60240018, // 0053 GETGBL R9 G24 - 0x58280019, // 0054 LDCONST R10 K25 - 0x882C0309, // 0055 GETMBR R11 R1 K9 - 0x882C1713, // 0056 GETMBR R11 R11 K19 - 0x8830031A, // 0057 GETMBR R12 R1 K26 + 0x58280057, // 0054 LDCONST R10 K87 + 0x882C0323, // 0055 GETMBR R11 R1 K35 + 0x882C1736, // 0056 GETMBR R11 R11 K54 + 0x88300358, // 0057 GETMBR R12 R1 K88 0x7C240600, // 0058 CALL R9 3 - 0x58280011, // 0059 LDCONST R10 K17 + 0x58280015, // 0059 LDCONST R10 K21 0x7C200400, // 005A CALL R8 2 0x70020043, // 005B JMP #00A0 0x4C200000, // 005C LDNIL R8 0x20200A08, // 005D NE R8 R5 R8 0x78220017, // 005E JMPF R8 #0077 - 0x8C200118, // 005F GETMET R8 R0 K24 + 0x8C200156, // 005F GETMET R8 R0 K86 0x5C280E00, // 0060 MOVE R10 R7 0x5C2C0400, // 0061 MOVE R11 R2 0x5C300A00, // 0062 MOVE R12 R5 0x7C200800, // 0063 CALL R8 4 0x5C200600, // 0064 MOVE R8 R3 0x74220000, // 0065 JMPT R8 #0067 - 0x580C000E, // 0066 LDCONST R3 K14 - 0xB8221E00, // 0067 GETNGBL R8 K15 - 0x8C201110, // 0068 GETMET R8 R8 K16 - 0x58280011, // 0069 LDCONST R10 K17 + 0x580C001B, // 0066 LDCONST R3 K27 + 0xB8222600, // 0067 GETNGBL R8 K19 + 0x8C201114, // 0068 GETMET R8 R8 K20 + 0x58280015, // 0069 LDCONST R10 K21 0x7C200400, // 006A CALL R8 2 0x78220009, // 006B JMPF R8 #0076 - 0xB8221600, // 006C GETNGBL R8 K11 + 0xB8222E00, // 006C GETNGBL R8 K23 0x60240018, // 006D GETGBL R9 G24 - 0x5828001B, // 006E LDCONST R10 K27 - 0x882C0309, // 006F GETMBR R11 R1 K9 - 0x882C1713, // 0070 GETMBR R11 R11 K19 + 0x58280059, // 006E LDCONST R10 K89 + 0x882C0323, // 006F GETMBR R11 R1 K35 + 0x882C1736, // 0070 GETMBR R11 R11 K54 0x5C300400, // 0071 MOVE R12 R2 0x5C340600, // 0072 MOVE R13 R3 0x7C240800, // 0073 CALL R9 4 - 0x58280011, // 0074 LDCONST R10 K17 + 0x58280015, // 0074 LDCONST R10 K21 0x7C200400, // 0075 CALL R8 2 0x70020028, // 0076 JMP #00A0 - 0x88200501, // 0077 GETMBR R8 R2 K1 + 0x8820050F, // 0077 GETMBR R8 R2 K15 0x4C240000, // 0078 LDNIL R9 0x20201009, // 0079 NE R8 R8 R9 0x78220014, // 007A JMPF R8 #0090 - 0x8C200118, // 007B GETMET R8 R0 K24 + 0x8C200156, // 007B GETMET R8 R0 K86 0x5C280E00, // 007C MOVE R10 R7 0x5C2C0400, // 007D MOVE R11 R2 0x4C300000, // 007E LDNIL R12 0x7C200800, // 007F CALL R8 4 - 0xB8221E00, // 0080 GETNGBL R8 K15 - 0x8C201110, // 0081 GETMET R8 R8 K16 - 0x58280011, // 0082 LDCONST R10 K17 + 0xB8222600, // 0080 GETNGBL R8 K19 + 0x8C201114, // 0081 GETMET R8 R8 K20 + 0x58280015, // 0082 LDCONST R10 K21 0x7C200400, // 0083 CALL R8 2 0x78220009, // 0084 JMPF R8 #008F - 0xB8221600, // 0085 GETNGBL R8 K11 + 0xB8222E00, // 0085 GETNGBL R8 K23 0x60240018, // 0086 GETGBL R9 G24 - 0x5828001C, // 0087 LDCONST R10 K28 - 0x882C0309, // 0088 GETMBR R11 R1 K9 - 0x882C1713, // 0089 GETMBR R11 R11 K19 - 0x88300501, // 008A GETMBR R12 R2 K1 - 0x8834031A, // 008B GETMBR R13 R1 K26 + 0x5828005A, // 0087 LDCONST R10 K90 + 0x882C0323, // 0088 GETMBR R11 R1 K35 + 0x882C1736, // 0089 GETMBR R11 R11 K54 + 0x8830050F, // 008A GETMBR R12 R2 K15 + 0x88340358, // 008B GETMBR R13 R1 K88 0x7C240800, // 008C CALL R9 4 - 0x58280011, // 008D LDCONST R10 K17 + 0x58280015, // 008D LDCONST R10 K21 0x7C200400, // 008E CALL R8 2 0x7002000F, // 008F JMP #00A0 - 0xB8221E00, // 0090 GETNGBL R8 K15 - 0x8C201110, // 0091 GETMET R8 R8 K16 - 0x58280011, // 0092 LDCONST R10 K17 + 0xB8222600, // 0090 GETNGBL R8 K19 + 0x8C201114, // 0091 GETMET R8 R8 K20 + 0x58280015, // 0092 LDCONST R10 K21 0x7C200400, // 0093 CALL R8 2 0x78220008, // 0094 JMPF R8 #009E - 0xB8221600, // 0095 GETNGBL R8 K11 + 0xB8222E00, // 0095 GETNGBL R8 K23 0x60240018, // 0096 GETGBL R9 G24 - 0x5828001D, // 0097 LDCONST R10 K29 - 0x882C0309, // 0098 GETMBR R11 R1 K9 - 0x882C1713, // 0099 GETMBR R11 R11 K19 - 0x8830031A, // 009A GETMBR R12 R1 K26 + 0x5828005B, // 0097 LDCONST R10 K91 + 0x882C0323, // 0098 GETMBR R11 R1 K35 + 0x882C1736, // 0099 GETMBR R11 R11 K54 + 0x88300358, // 009A GETMBR R12 R1 K88 0x7C240600, // 009B CALL R9 3 - 0x58280011, // 009C LDCONST R10 K17 + 0x58280015, // 009C LDCONST R10 K21 0x7C200400, // 009D CALL R8 2 0x50200000, // 009E LDBOOL R8 0 0 0x80041000, // 009F RET 1 R8 - 0x8C200F14, // 00A0 GETMET R8 R7 K20 - 0x5828001E, // 00A1 LDCONST R10 K30 + 0x8C200F29, // 00A0 GETMET R8 R7 K41 + 0x58280092, // 00A1 LDCONST R10 K146 0x542DFFFB, // 00A2 LDINT R11 -4 0x7C200600, // 00A3 CALL R8 3 - 0x8C200F14, // 00A4 GETMET R8 R7 K20 + 0x8C200F29, // 00A4 GETMET R8 R7 K41 0x542A0017, // 00A5 LDINT R10 24 - 0x582C0016, // 00A6 LDCONST R11 K22 + 0x582C002A, // 00A6 LDCONST R11 K42 0x7C200600, // 00A7 CALL R8 3 - 0x8C20031F, // 00A8 GETMET R8 R1 K31 + 0x8C200393, // 00A8 GETMET R8 R1 K147 0x542A0008, // 00A9 LDINT R10 9 0x502C0200, // 00AA LDBOOL R11 1 0 0x7C200600, // 00AB CALL R8 3 - 0x88240107, // 00AC GETMBR R9 R0 K7 - 0x88241320, // 00AD GETMBR R9 R9 K32 - 0x88280321, // 00AE GETMBR R10 R1 K33 - 0x8C2C1522, // 00AF GETMET R11 R10 K34 + 0x88240109, // 00AC GETMBR R9 R0 K9 + 0x88241394, // 00AD GETMBR R9 R9 K148 + 0x88280395, // 00AE GETMBR R10 R1 K149 + 0x8C2C1596, // 00AF GETMET R11 R10 K150 0x7C2C0200, // 00B0 CALL R11 1 - 0x8C2C1123, // 00B1 GETMET R11 R8 K35 + 0x8C2C1197, // 00B1 GETMET R11 R8 K151 0x5C340E00, // 00B2 MOVE R13 R7 0x5C381400, // 00B3 MOVE R14 R10 0x7C2C0600, // 00B4 CALL R11 3 - 0x8C2C1124, // 00B5 GETMET R11 R8 K36 + 0x8C2C1198, // 00B5 GETMET R11 R8 K152 0x7C2C0200, // 00B6 CALL R11 1 - 0x8C2C1325, // 00B7 GETMET R11 R9 K37 + 0x8C2C1399, // 00B7 GETMET R11 R9 K153 0x5C341000, // 00B8 MOVE R13 R8 0x7C2C0400, // 00B9 CALL R11 2 0x502C0200, // 00BA LDBOOL R11 1 0 @@ -2192,59 +2046,43 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(loglevel), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(log), - /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(subscription_id), - /* K8 */ be_nested_str_weak(is_keep_alive), - /* K9 */ be_nested_str_weak(send_queue), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(matter), - /* K12 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K13 */ be_nested_str_weak(_message_handler), - /* K14 */ be_nested_str_weak(send_enqueued), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(send_subscribe_heartbeat), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x58140003, // 0003 LDCONST R5 K3 + 0x88080323, // 0000 GETMBR R2 R1 K35 + 0xB80E2600, // 0001 GETNGBL R3 K19 + 0x8C0C0714, // 0002 GETMET R3 R3 K20 + 0x58140015, // 0003 LDCONST R5 K21 0x7C0C0400, // 0004 CALL R3 2 0x780E0007, // 0005 JMPF R3 #000E - 0xB80E0800, // 0006 GETNGBL R3 K4 + 0xB80E2E00, // 0006 GETNGBL R3 K23 0x60100018, // 0007 GETGBL R4 G24 - 0x58140005, // 0008 LDCONST R5 K5 - 0x88180506, // 0009 GETMBR R6 R2 K6 - 0x881C0307, // 000A GETMBR R7 R1 K7 + 0x5814009A, // 0008 LDCONST R5 K154 + 0x88180536, // 0009 GETMBR R6 R2 K54 + 0x881C0337, // 000A GETMBR R7 R1 K55 0x7C100600, // 000B CALL R4 3 - 0x58140003, // 000C LDCONST R5 K3 + 0x58140015, // 000C LDCONST R5 K21 0x7C0C0400, // 000D CALL R3 2 0x500C0200, // 000E LDBOOL R3 1 0 - 0x90061003, // 000F SETMBR R1 K8 R3 - 0x880C0109, // 0010 GETMBR R3 R0 K9 - 0x8C0C070A, // 0011 GETMET R3 R3 K10 - 0xB8161600, // 0012 GETNGBL R5 K11 - 0x8C140B0C, // 0013 GETMET R5 R5 K12 - 0x881C050D, // 0014 GETMBR R7 R2 K13 + 0x90067003, // 000F SETMBR R1 K56 R3 + 0x880C0126, // 0010 GETMBR R3 R0 K38 + 0x8C0C0727, // 0011 GETMET R3 R3 K39 + 0xB8160000, // 0012 GETNGBL R5 K0 + 0x8C140B9B, // 0013 GETMET R5 R5 K155 + 0x881C053C, // 0014 GETMBR R7 R2 K60 0x5C200400, // 0015 MOVE R8 R2 0x5C240200, // 0016 MOVE R9 R1 0x7C140800, // 0017 CALL R5 4 0x7C0C0400, // 0018 CALL R3 2 - 0x8C0C010E, // 0019 GETMET R3 R0 K14 - 0x8814050D, // 001A GETMBR R5 R2 K13 + 0x8C0C013D, // 0019 GETMET R3 R0 K61 + 0x8814053C, // 001A GETMBR R5 R2 K60 0x7C0C0400, // 001B CALL R3 2 0x80000000, // 001C RET 0 }) @@ -2260,18 +2098,13 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(send_queue), - /* K2 */ be_nested_str_weak(get_exchangeid), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(find_sendqueue_by_exchangeid), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ @@ -2280,20 +2113,20 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0x58080000, // 0005 LDCONST R2 K0 + 0x58080040, // 0005 LDCONST R2 K64 0x600C000C, // 0006 GETGBL R3 G12 - 0x88100101, // 0007 GETMBR R4 R0 K1 + 0x88100126, // 0007 GETMBR R4 R0 K38 0x7C0C0200, // 0008 CALL R3 1 0x140C0403, // 0009 LT R3 R2 R3 0x780E0008, // 000A JMPF R3 #0014 - 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x880C0126, // 000B GETMBR R3 R0 K38 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x8C100702, // 000D GETMET R4 R3 K2 + 0x8C100782, // 000D GETMET R4 R3 K130 0x7C100200, // 000E CALL R4 1 0x1C100801, // 000F EQ R4 R4 R1 0x78120000, // 0010 JMPF R4 #0012 0x80040600, // 0011 RET 1 R3 - 0x00080503, // 0012 ADD R2 R2 K3 + 0x0008052A, // 0012 ADD R2 R2 K42 0x7001FFF1, // 0013 JMP #0006 0x4C0C0000, // 0014 LDNIL R3 0x80040600, // 0015 RET 1 R3 @@ -2310,75 +2143,22 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ be_nested_proto( 19, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[52]) { /* constants */ - /* K0 */ be_nested_str_weak(status), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(INVALID_ACTION), - /* K3 */ be_nested_str_weak(msg), - /* K4 */ be_nested_str_weak(device), - /* K5 */ be_nested_str_weak(resolve_attribute_read_solo), - /* K6 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K7 */ be_nested_str_weak(read_attribute), - /* K8 */ be_nested_str_weak(session), - /* K9 */ be_nested_str_weak(tlv_solo), - /* K10 */ be_nested_str_weak(is_list), - /* K11 */ be_nested_str_weak(is_array), - /* K12 */ be_nested_str_weak(encode_len), - /* K13 */ be_nested_str_weak(IM_ReportData_Pull), - /* K14 */ be_nested_str_weak(MAX_MESSAGE), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(TLV), - /* K19 */ be_nested_str_weak(parse), - /* K20 */ be_nested_str_weak(raw), - /* K21 */ be_nested_str_weak(app_payload_idx), - /* K22 */ be_nested_str_weak(process_read_request_pull), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_const_int(1), - /* K25 */ be_nested_str_weak(attributedata2raw), - /* K26 */ be_const_int(405077761), - /* K27 */ be_nested_str_weak(attributestatus2raw), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), - /* K29 */ be_nested_str_weak(local_session_id), - /* K30 */ be_nested_str_weak(build_response), - /* K31 */ be_nested_str_weak(message_handler), - /* K32 */ be_nested_str_weak(clear), - /* K33 */ be_nested_str_weak(encode_frame), - /* K34 */ be_nested_str_weak(encrypt), - /* K35 */ be_nested_str_weak(tasmota), - /* K36 */ be_nested_str_weak(loglevel), - /* K37 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), - /* K38 */ be_nested_str_weak(message_counter), - /* K39 */ be_nested_str_weak(exchange_id), - /* K40 */ be_nested_str_weak(ack_message_counter), - /* K41 */ be_nested_str_weak(send_response_frame), - /* K42 */ be_nested_str_weak(get_attribute_name), - /* K43 */ be_nested_str_weak(cluster), - /* K44 */ be_nested_str_weak(attribute), - /* K45 */ be_nested_str_weak(_X20_X28), - /* K46 */ be_nested_str_weak(_X29), - /* K47 */ be_nested_str_weak(), - /* K48 */ be_nested_str_weak(to_str_val), - /* K49 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K50 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K51 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_read_request_solo), &be_const_str_solidified, ( &(const binstruction[242]) { /* code */ - 0xB80E0200, // 0000 GETNGBL R3 K1 - 0x880C0702, // 0001 GETMBR R3 R3 K2 - 0x900A0003, // 0002 SETMBR R2 K0 R3 - 0x900A0601, // 0003 SETMBR R2 K3 R1 - 0x880C0104, // 0004 GETMBR R3 R0 K4 - 0x8C0C0705, // 0005 GETMET R3 R3 K5 + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x880C0710, // 0001 GETMBR R3 R3 K16 + 0x900A1E03, // 0002 SETMBR R2 K15 R3 + 0x900A3E01, // 0003 SETMBR R2 K31 R1 + 0x880C0109, // 0004 GETMBR R3 R0 K9 + 0x8C0C079C, // 0005 GETMET R3 R3 K156 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x4C100000, // 0008 LDNIL R4 @@ -2386,43 +2166,43 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x4C180000, // 000A LDNIL R6 0x20180606, // 000B NE R6 R3 R6 0x781A0008, // 000C JMPF R6 #0016 - 0xB81A0200, // 000D GETNGBL R6 K1 - 0x88180D06, // 000E GETMBR R6 R6 K6 - 0x900A0006, // 000F SETMBR R2 K0 R6 - 0x8C180707, // 0010 GETMET R6 R3 K7 - 0x88200308, // 0011 GETMBR R8 R1 K8 + 0xB81A0000, // 000D GETNGBL R6 K0 + 0x88180D9D, // 000E GETMBR R6 R6 K157 + 0x900A1E06, // 000F SETMBR R2 K15 R6 + 0x8C18079E, // 0010 GETMET R6 R3 K158 + 0x88200323, // 0011 GETMBR R8 R1 K35 0x5C240400, // 0012 MOVE R9 R2 - 0x88280109, // 0013 GETMBR R10 R0 K9 + 0x8828018D, // 0013 GETMBR R10 R0 K141 0x7C180800, // 0014 CALL R6 4 0x5C100C00, // 0015 MOVE R4 R6 0x4C180000, // 0016 LDNIL R6 0x20180806, // 0017 NE R6 R4 R6 0x781A0036, // 0018 JMPF R6 #0050 - 0x8818090A, // 0019 GETMBR R6 R4 K10 + 0x8818099F, // 0019 GETMBR R6 R4 K159 0x741A0001, // 001A JMPT R6 #001D - 0x8818090B, // 001B GETMBR R6 R4 K11 + 0x881809A0, // 001B GETMBR R6 R4 K160 0x781A0018, // 001C JMPF R6 #0036 - 0x8C18090C, // 001D GETMET R6 R4 K12 + 0x8C1809A1, // 001D GETMET R6 R4 K161 0x7C180200, // 001E CALL R6 1 - 0xB81E0200, // 001F GETNGBL R7 K1 - 0x881C0F0D, // 0020 GETMBR R7 R7 K13 - 0x881C0F0E, // 0021 GETMBR R7 R7 K14 + 0xB81E0000, // 001F GETNGBL R7 K0 + 0x881C0F3F, // 0020 GETMBR R7 R7 K63 + 0x881C0FA2, // 0021 GETMBR R7 R7 K162 0x24180C07, // 0022 GT R6 R6 R7 0x781A0011, // 0023 JMPF R6 #0036 0x4C100000, // 0024 LDNIL R4 - 0xB81A1E00, // 0025 GETNGBL R6 K15 + 0xB81A2E00, // 0025 GETNGBL R6 K23 0x601C0018, // 0026 GETGBL R7 G24 - 0x58200010, // 0027 LDCONST R8 K16 + 0x582000A3, // 0027 LDCONST R8 K163 0x7C1C0200, // 0028 CALL R7 1 - 0x58200011, // 0029 LDCONST R8 K17 + 0x58200015, // 0029 LDCONST R8 K21 0x7C180400, // 002A CALL R6 2 - 0xB81A0200, // 002B GETNGBL R6 K1 - 0x88180D12, // 002C GETMBR R6 R6 K18 - 0x8C180D13, // 002D GETMET R6 R6 K19 - 0x88200314, // 002E GETMBR R8 R1 K20 - 0x88240315, // 002F GETMBR R9 R1 K21 + 0xB81A0000, // 002B GETNGBL R6 K0 + 0x88180D83, // 002C GETMBR R6 R6 K131 + 0x8C180DA4, // 002D GETMET R6 R6 K164 + 0x88200395, // 002E GETMBR R8 R1 K149 + 0x882403A5, // 002F GETMBR R9 R1 K165 0x7C180600, // 0030 CALL R6 3 - 0x8C1C0116, // 0031 GETMET R7 R0 K22 + 0x8C1C01A6, // 0031 GETMET R7 R0 K166 0x5C240200, // 0032 MOVE R9 R1 0x5C280C00, // 0033 MOVE R10 R6 0x7C1C0600, // 0034 CALL R7 3 @@ -2431,29 +2211,29 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x541E002F, // 0037 LDINT R7 48 0x7C180200, // 0038 CALL R6 1 0x5C140C00, // 0039 MOVE R5 R6 - 0x8C180B17, // 003A GETMET R6 R5 K23 + 0x8C180B29, // 003A GETMET R6 R5 K41 0x54220014, // 003B LDINT R8 21 - 0x58240018, // 003C LDCONST R9 K24 + 0x5824002A, // 003C LDCONST R9 K42 0x7C180600, // 003D CALL R6 3 - 0x8C180B17, // 003E GETMET R6 R5 K23 + 0x8C180B29, // 003E GETMET R6 R5 K41 0x54223600, // 003F LDINT R8 13825 0x5425FFFD, // 0040 LDINT R9 -2 0x7C180600, // 0041 CALL R6 3 - 0x8C180119, // 0042 GETMET R6 R0 K25 + 0x8C1801A7, // 0042 GETMET R6 R0 K167 0x5C200A00, // 0043 MOVE R8 R5 0x5C240400, // 0044 MOVE R9 R2 0x5C280800, // 0045 MOVE R10 R4 0x7C180800, // 0046 CALL R6 4 - 0x8C180B17, // 0047 GETMET R6 R5 K23 - 0x5820001A, // 0048 LDCONST R8 K26 + 0x8C180B29, // 0047 GETMET R6 R5 K41 + 0x582000A8, // 0048 LDCONST R8 K168 0x5425FFFB, // 0049 LDINT R9 -4 0x7C180600, // 004A CALL R6 3 - 0x8C180B17, // 004B GETMET R6 R5 K23 + 0x8C180B29, // 004B GETMET R6 R5 K41 0x54220017, // 004C LDINT R8 24 - 0x58240018, // 004D LDCONST R9 K24 + 0x5824002A, // 004D LDCONST R9 K42 0x7C180600, // 004E CALL R6 3 0x70020028, // 004F JMP #0079 - 0x88180500, // 0050 GETMBR R6 R2 K0 + 0x8818050F, // 0050 GETMBR R6 R2 K15 0x4C1C0000, // 0051 LDNIL R7 0x20180C07, // 0052 NE R6 R6 R7 0x781A0019, // 0053 JMPF R6 #006E @@ -2461,157 +2241,157 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x541E002F, // 0055 LDINT R7 48 0x7C180200, // 0056 CALL R6 1 0x5C140C00, // 0057 MOVE R5 R6 - 0x8C180B17, // 0058 GETMET R6 R5 K23 + 0x8C180B29, // 0058 GETMET R6 R5 K41 0x54220014, // 0059 LDINT R8 21 - 0x58240018, // 005A LDCONST R9 K24 + 0x5824002A, // 005A LDCONST R9 K42 0x7C180600, // 005B CALL R6 3 - 0x8C180B17, // 005C GETMET R6 R5 K23 + 0x8C180B29, // 005C GETMET R6 R5 K41 0x54223600, // 005D LDINT R8 13825 0x5425FFFD, // 005E LDINT R9 -2 0x7C180600, // 005F CALL R6 3 - 0x8C18011B, // 0060 GETMET R6 R0 K27 + 0x8C1801A9, // 0060 GETMET R6 R0 K169 0x5C200A00, // 0061 MOVE R8 R5 0x5C240400, // 0062 MOVE R9 R2 - 0x88280500, // 0063 GETMBR R10 R2 K0 + 0x8828050F, // 0063 GETMBR R10 R2 K15 0x7C180800, // 0064 CALL R6 4 - 0x8C180B17, // 0065 GETMET R6 R5 K23 - 0x5820001A, // 0066 LDCONST R8 K26 + 0x8C180B29, // 0065 GETMET R6 R5 K41 + 0x582000A8, // 0066 LDCONST R8 K168 0x5425FFFB, // 0067 LDINT R9 -4 0x7C180600, // 0068 CALL R6 3 - 0x8C180B17, // 0069 GETMET R6 R5 K23 + 0x8C180B29, // 0069 GETMET R6 R5 K41 0x54220017, // 006A LDINT R8 24 - 0x58240018, // 006B LDCONST R9 K24 + 0x5824002A, // 006B LDCONST R9 K42 0x7C180600, // 006C CALL R6 3 0x7002000A, // 006D JMP #0079 - 0xB81A1E00, // 006E GETNGBL R6 K15 + 0xB81A2E00, // 006E GETNGBL R6 K23 0x601C0018, // 006F GETGBL R7 G24 - 0x5820001C, // 0070 LDCONST R8 K28 - 0x88240308, // 0071 GETMBR R9 R1 K8 - 0x8824131D, // 0072 GETMBR R9 R9 K29 + 0x582000AA, // 0070 LDCONST R8 K170 + 0x88240323, // 0071 GETMBR R9 R1 K35 + 0x88241336, // 0072 GETMBR R9 R9 K54 0x5C280400, // 0073 MOVE R10 R2 0x7C1C0600, // 0074 CALL R7 3 - 0x58200011, // 0075 LDCONST R8 K17 + 0x58200015, // 0075 LDCONST R8 K21 0x7C180400, // 0076 CALL R6 2 0x50180000, // 0077 LDBOOL R6 0 0 0x80040C00, // 0078 RET 1 R6 - 0x8C18031E, // 0079 GETMET R6 R1 K30 + 0x8C180393, // 0079 GETMET R6 R1 K147 0x54220004, // 007A LDINT R8 5 0x50240200, // 007B LDBOOL R9 1 0 0x7C180600, // 007C CALL R6 3 - 0x881C0104, // 007D GETMBR R7 R0 K4 - 0x881C0F1F, // 007E GETMBR R7 R7 K31 - 0x88200314, // 007F GETMBR R8 R1 K20 - 0x8C241120, // 0080 GETMET R9 R8 K32 + 0x881C0109, // 007D GETMBR R7 R0 K9 + 0x881C0F94, // 007E GETMBR R7 R7 K148 + 0x88200395, // 007F GETMBR R8 R1 K149 + 0x8C241196, // 0080 GETMET R9 R8 K150 0x7C240200, // 0081 CALL R9 1 - 0x8C240D21, // 0082 GETMET R9 R6 K33 + 0x8C240D97, // 0082 GETMET R9 R6 K151 0x5C2C0A00, // 0083 MOVE R11 R5 0x5C301000, // 0084 MOVE R12 R8 0x7C240600, // 0085 CALL R9 3 - 0x8C240D22, // 0086 GETMET R9 R6 K34 + 0x8C240D98, // 0086 GETMET R9 R6 K152 0x7C240200, // 0087 CALL R9 1 - 0xB8264600, // 0088 GETNGBL R9 K35 - 0x8C241324, // 0089 GETMET R9 R9 K36 + 0xB8262600, // 0088 GETNGBL R9 K19 + 0x8C241314, // 0089 GETMET R9 R9 K20 0x542E0003, // 008A LDINT R11 4 0x7C240400, // 008B CALL R9 2 0x7826000A, // 008C JMPF R9 #0098 - 0xB8261E00, // 008D GETNGBL R9 K15 + 0xB8262E00, // 008D GETNGBL R9 K23 0x60280018, // 008E GETGBL R10 G24 - 0x582C0025, // 008F LDCONST R11 K37 - 0x88300D08, // 0090 GETMBR R12 R6 K8 - 0x8830191D, // 0091 GETMBR R12 R12 K29 - 0x88340D26, // 0092 GETMBR R13 R6 K38 - 0x88380D27, // 0093 GETMBR R14 R6 K39 - 0x883C0D28, // 0094 GETMBR R15 R6 K40 + 0x582C00AB, // 008F LDCONST R11 K171 + 0x88300D23, // 0090 GETMBR R12 R6 K35 + 0x88301936, // 0091 GETMBR R12 R12 K54 + 0x88340DAC, // 0092 GETMBR R13 R6 K172 + 0x88380D58, // 0093 GETMBR R14 R6 K88 + 0x883C0DAD, // 0094 GETMBR R15 R6 K173 0x7C280A00, // 0095 CALL R10 5 0x542E0003, // 0096 LDINT R11 4 0x7C240400, // 0097 CALL R9 2 - 0x8C240F29, // 0098 GETMET R9 R7 K41 + 0x8C240F99, // 0098 GETMET R9 R7 K153 0x5C2C0C00, // 0099 MOVE R11 R6 0x7C240400, // 009A CALL R9 2 0x4C240000, // 009B LDNIL R9 - 0xB82A4600, // 009C GETNGBL R10 K35 - 0x8C281524, // 009D GETMET R10 R10 K36 - 0x58300011, // 009E LDCONST R12 K17 + 0xB82A2600, // 009C GETNGBL R10 K19 + 0x8C281514, // 009D GETMET R10 R10 K20 + 0x58300015, // 009E LDCONST R12 K21 0x7C280400, // 009F CALL R10 2 0x782A000B, // 00A0 JMPF R10 #00AD - 0xB82A0200, // 00A1 GETNGBL R10 K1 - 0x8C28152A, // 00A2 GETMET R10 R10 K42 - 0x8830052B, // 00A3 GETMBR R12 R2 K43 - 0x8834052C, // 00A4 GETMBR R13 R2 K44 + 0xB82A0000, // 00A1 GETNGBL R10 K0 + 0x8C281516, // 00A2 GETMET R10 R10 K22 + 0x8830050D, // 00A3 GETMBR R12 R2 K13 + 0x8834050E, // 00A4 GETMBR R13 R2 K14 0x7C280600, // 00A5 CALL R10 3 0x5C241400, // 00A6 MOVE R9 R10 0x78260002, // 00A7 JMPF R9 #00AB - 0x002A5A09, // 00A8 ADD R10 K45 R9 - 0x0028152E, // 00A9 ADD R10 R10 K46 + 0x002A3209, // 00A8 ADD R10 K25 R9 + 0x0028151A, // 00A9 ADD R10 R10 K26 0x70020000, // 00AA JMP #00AC - 0x5828002F, // 00AB LDCONST R10 K47 + 0x5828001B, // 00AB LDCONST R10 K27 0x5C241400, // 00AC MOVE R9 R10 0x4C280000, // 00AD LDNIL R10 0x2028080A, // 00AE NE R10 R4 R10 0x782A0012, // 00AF JMPF R10 #00C3 - 0xB82A4600, // 00B0 GETNGBL R10 K35 - 0x8C281524, // 00B1 GETMET R10 R10 K36 - 0x58300011, // 00B2 LDCONST R12 K17 + 0xB82A2600, // 00B0 GETNGBL R10 K19 + 0x8C281514, // 00B1 GETMET R10 R10 K20 + 0x58300015, // 00B2 LDCONST R12 K21 0x7C280400, // 00B3 CALL R10 2 0x782A000C, // 00B4 JMPF R10 #00C2 - 0x8C280930, // 00B5 GETMET R10 R4 K48 + 0x8C2809AE, // 00B5 GETMET R10 R4 K174 0x7C280200, // 00B6 CALL R10 1 - 0xB82E1E00, // 00B7 GETNGBL R11 K15 + 0xB82E2E00, // 00B7 GETNGBL R11 K23 0x60300018, // 00B8 GETGBL R12 G24 - 0x58340031, // 00B9 LDCONST R13 K49 - 0x88380308, // 00BA GETMBR R14 R1 K8 - 0x88381D1D, // 00BB GETMBR R14 R14 K29 + 0x583400AF, // 00B9 LDCONST R13 K175 + 0x88380323, // 00BA GETMBR R14 R1 K35 + 0x88381D36, // 00BB GETMBR R14 R14 K54 0x5C3C0400, // 00BC MOVE R15 R2 0x5C401200, // 00BD MOVE R16 R9 0x5C441400, // 00BE MOVE R17 R10 0x7C300A00, // 00BF CALL R12 5 - 0x58340011, // 00C0 LDCONST R13 K17 + 0x58340015, // 00C0 LDCONST R13 K21 0x7C2C0400, // 00C1 CALL R11 2 0x7002002C, // 00C2 JMP #00F0 - 0x88280500, // 00C3 GETMBR R10 R2 K0 + 0x8828050F, // 00C3 GETMBR R10 R2 K15 0x4C2C0000, // 00C4 LDNIL R11 0x2028140B, // 00C5 NE R10 R10 R11 0x782A0019, // 00C6 JMPF R10 #00E1 - 0x88280500, // 00C7 GETMBR R10 R2 K0 - 0xB82E0200, // 00C8 GETNGBL R11 K1 - 0x882C1706, // 00C9 GETMBR R11 R11 K6 + 0x8828050F, // 00C7 GETMBR R10 R2 K15 + 0xB82E0000, // 00C8 GETNGBL R11 K0 + 0x882C179D, // 00C9 GETMBR R11 R11 K157 0x1C28140B, // 00CA EQ R10 R10 R11 0x782A0001, // 00CB JMPF R10 #00CE - 0x58280006, // 00CC LDCONST R10 K6 + 0x5828009D, // 00CC LDCONST R10 K157 0x70020000, // 00CD JMP #00CF - 0x5828002F, // 00CE LDCONST R10 K47 - 0xB82E4600, // 00CF GETNGBL R11 K35 - 0x8C2C1724, // 00D0 GETMET R11 R11 K36 - 0x58340011, // 00D1 LDCONST R13 K17 + 0x5828001B, // 00CE LDCONST R10 K27 + 0xB82E2600, // 00CF GETNGBL R11 K19 + 0x8C2C1714, // 00D0 GETMET R11 R11 K20 + 0x58340015, // 00D1 LDCONST R13 K21 0x7C2C0400, // 00D2 CALL R11 2 0x782E000B, // 00D3 JMPF R11 #00E0 - 0xB82E1E00, // 00D4 GETNGBL R11 K15 + 0xB82E2E00, // 00D4 GETNGBL R11 K23 0x60300018, // 00D5 GETGBL R12 G24 - 0x58340032, // 00D6 LDCONST R13 K50 - 0x88380308, // 00D7 GETMBR R14 R1 K8 - 0x88381D1D, // 00D8 GETMBR R14 R14 K29 + 0x583400B0, // 00D6 LDCONST R13 K176 + 0x88380323, // 00D7 GETMBR R14 R1 K35 + 0x88381D36, // 00D8 GETMBR R14 R14 K54 0x5C3C0400, // 00D9 MOVE R15 R2 0x5C401200, // 00DA MOVE R16 R9 - 0x88440500, // 00DB GETMBR R17 R2 K0 + 0x8844050F, // 00DB GETMBR R17 R2 K15 0x5C481400, // 00DC MOVE R18 R10 0x7C300C00, // 00DD CALL R12 6 - 0x58340011, // 00DE LDCONST R13 K17 + 0x58340015, // 00DE LDCONST R13 K21 0x7C2C0400, // 00DF CALL R11 2 0x7002000E, // 00E0 JMP #00F0 - 0xB82A4600, // 00E1 GETNGBL R10 K35 - 0x8C281524, // 00E2 GETMET R10 R10 K36 - 0x58300011, // 00E3 LDCONST R12 K17 + 0xB82A2600, // 00E1 GETNGBL R10 K19 + 0x8C281514, // 00E2 GETMET R10 R10 K20 + 0x58300015, // 00E3 LDCONST R12 K21 0x7C280400, // 00E4 CALL R10 2 0x782A0009, // 00E5 JMPF R10 #00F0 - 0xB82A1E00, // 00E6 GETNGBL R10 K15 + 0xB82A2E00, // 00E6 GETNGBL R10 K23 0x602C0018, // 00E7 GETGBL R11 G24 - 0x58300033, // 00E8 LDCONST R12 K51 - 0x88340308, // 00E9 GETMBR R13 R1 K8 - 0x88341B1D, // 00EA GETMBR R13 R13 K29 + 0x583000B1, // 00E8 LDCONST R12 K177 + 0x88340323, // 00E9 GETMBR R13 R1 K35 + 0x88341B36, // 00EA GETMBR R13 R13 K54 0x5C380400, // 00EB MOVE R14 R2 0x5C3C1200, // 00EC MOVE R15 R9 0x7C2C0800, // 00ED CALL R11 4 - 0x58300011, // 00EE LDCONST R12 K17 + 0x58300015, // 00EE LDCONST R12 K21 0x7C280400, // 00EF CALL R10 2 0x50280200, // 00F0 LDBOOL R10 1 0 0x80041400, // 00F1 RET 1 R10 @@ -2628,29 +2408,17 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ be_nested_proto( 14, /* nstack */ 2, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_IM), - /* K1 */ be_nested_str_weak(int64), - /* K2 */ be_nested_str_weak(toint64), - /* K3 */ be_nested_str_weak(node), - /* K4 */ be_nested_str_weak(tobytes), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), - /* K8 */ be_nested_str_weak(tohex), - /* K9 */ be_nested_str_weak(event_min), - /* K10 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(parse_event_filters_min_no), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x580800B2, // 0000 LDCONST R2 K178 0x4C0C0000, // 0001 LDNIL R3 0x4C100000, // 0002 LDNIL R4 0x20100004, // 0003 NE R4 R0 R4 @@ -2661,33 +2429,33 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ 0xA8020024, // 0008 EXBLK 0 #002E 0x5C140800, // 0009 MOVE R5 R4 0x7C140000, // 000A CALL R5 0 - 0xB81A0200, // 000B GETNGBL R6 K1 - 0x8C180D02, // 000C GETMET R6 R6 K2 - 0x88200B03, // 000D GETMBR R8 R5 K3 + 0xB81B6600, // 000B GETNGBL R6 K179 + 0x8C180DB4, // 000C GETMET R6 R6 K180 + 0x88200BB5, // 000D GETMBR R8 R5 K181 0x7C180400, // 000E CALL R6 2 0x781A0012, // 000F JMPF R6 #0023 0x78060011, // 0010 JMPF R1 #0023 - 0x881C0B03, // 0011 GETMBR R7 R5 K3 - 0x8C1C0F04, // 0012 GETMET R7 R7 K4 + 0x881C0BB5, // 0011 GETMBR R7 R5 K181 + 0x8C1C0FB6, // 0012 GETMET R7 R7 K182 0x7C1C0200, // 0013 CALL R7 1 0x201C0E01, // 0014 NE R7 R7 R1 0x781E000C, // 0015 JMPF R7 #0023 - 0xB81E0A00, // 0016 GETNGBL R7 K5 - 0x8C1C0F06, // 0017 GETMET R7 R7 K6 + 0xB81E2600, // 0016 GETNGBL R7 K19 + 0x8C1C0F17, // 0017 GETMET R7 R7 K23 0x60240018, // 0018 GETGBL R9 G24 - 0x58280007, // 0019 LDCONST R10 K7 - 0x8C2C0D04, // 001A GETMET R11 R6 K4 + 0x582800B7, // 0019 LDCONST R10 K183 + 0x8C2C0DB6, // 001A GETMET R11 R6 K182 0x7C2C0200, // 001B CALL R11 1 - 0x8C2C1708, // 001C GETMET R11 R11 K8 + 0x8C2C17B8, // 001C GETMET R11 R11 K184 0x7C2C0200, // 001D CALL R11 1 - 0x8C300308, // 001E GETMET R12 R1 K8 + 0x8C3003B8, // 001E GETMET R12 R1 K184 0x7C300200, // 001F CALL R12 1 0x7C240600, // 0020 CALL R9 3 0x7C1C0400, // 0021 CALL R7 2 0x7001FFE5, // 0022 JMP #0009 - 0xB81E0200, // 0023 GETNGBL R7 K1 - 0x8C1C0F02, // 0024 GETMET R7 R7 K2 - 0x88240B09, // 0025 GETMBR R9 R5 K9 + 0xB81F6600, // 0023 GETNGBL R7 K179 + 0x8C1C0FB4, // 0024 GETMET R7 R7 K180 + 0x88240BB9, // 0025 GETMBR R9 R5 K185 0x7C1C0400, // 0026 CALL R7 2 0x4C200000, // 0027 LDNIL R8 0x1C200608, // 0028 EQ R8 R3 R8 @@ -2696,7 +2464,7 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ 0x78220000, // 002B JMPF R8 #002D 0x5C0C0E00, // 002C MOVE R3 R7 0x7001FFDA, // 002D JMP #0009 - 0x5810000A, // 002E LDCONST R4 K10 + 0x58100025, // 002E LDCONST R4 K37 0xAC100200, // 002F CATCH R4 1 0 0xB0080000, // 0030 RAISE 2 R0 R0 0x80040600, // 0031 RET 1 R3 @@ -2713,172 +2481,160 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(command), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(SUCCESS), - /* K9 */ be_nested_str_weak(tag_sub), - /* K10 */ be_nested_str_weak(tlv2raw), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(invokeresponse2raw), &be_const_str_solidified, ( &(const binstruction[148]) { /* code */ - 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x8C100329, // 0000 GETMET R4 R1 K41 0x541A0014, // 0001 LDINT R6 21 - 0x581C0001, // 0002 LDCONST R7 K1 + 0x581C002A, // 0002 LDCONST R7 K42 0x7C100600, // 0003 CALL R4 3 0x4C100000, // 0004 LDNIL R4 0x1C100604, // 0005 EQ R4 R3 R4 0x78120004, // 0006 JMPF R4 #000C - 0x8C100300, // 0007 GETMET R4 R1 K0 + 0x8C100329, // 0007 GETMET R4 R1 K41 0x541A3500, // 0008 LDINT R6 13569 0x541DFFFD, // 0009 LDINT R7 -2 0x7C100600, // 000A CALL R4 3 0x70020003, // 000B JMP #0010 - 0x8C100300, // 000C GETMET R4 R1 K0 + 0x8C100329, // 000C GETMET R4 R1 K41 0x541A34FF, // 000D LDINT R6 13568 0x541DFFFD, // 000E LDINT R7 -2 0x7C100600, // 000F CALL R4 3 - 0x8C100300, // 0010 GETMET R4 R1 K0 + 0x8C100329, // 0010 GETMET R4 R1 K41 0x541A36FF, // 0011 LDINT R6 14080 0x541DFFFD, // 0012 LDINT R7 -2 0x7C100600, // 0013 CALL R4 3 - 0x88100502, // 0014 GETMBR R4 R2 K2 + 0x88100512, // 0014 GETMBR R4 R2 K18 0x541600FE, // 0015 LDINT R5 255 0x18100805, // 0016 LE R4 R4 R5 0x78120008, // 0017 JMPF R4 #0021 - 0x8C100300, // 0018 GETMET R4 R1 K0 + 0x8C100329, // 0018 GETMET R4 R1 K41 0x541A23FF, // 0019 LDINT R6 9216 0x541DFFFD, // 001A LDINT R7 -2 0x7C100600, // 001B CALL R4 3 - 0x8C100300, // 001C GETMET R4 R1 K0 - 0x88180502, // 001D GETMBR R6 R2 K2 - 0x581C0001, // 001E LDCONST R7 K1 + 0x8C100329, // 001C GETMET R4 R1 K41 + 0x88180512, // 001D GETMBR R6 R2 K18 + 0x581C002A, // 001E LDCONST R7 K42 0x7C100600, // 001F CALL R4 3 0x70020007, // 0020 JMP #0029 - 0x8C100300, // 0021 GETMET R4 R1 K0 + 0x8C100329, // 0021 GETMET R4 R1 K41 0x541A24FF, // 0022 LDINT R6 9472 0x541DFFFD, // 0023 LDINT R7 -2 0x7C100600, // 0024 CALL R4 3 - 0x8C100300, // 0025 GETMET R4 R1 K0 - 0x88180502, // 0026 GETMBR R6 R2 K2 - 0x581C0003, // 0027 LDCONST R7 K3 + 0x8C100329, // 0025 GETMET R4 R1 K41 + 0x88180512, // 0026 GETMBR R6 R2 K18 + 0x581C002B, // 0027 LDCONST R7 K43 0x7C100600, // 0028 CALL R4 3 - 0x88100504, // 0029 GETMBR R4 R2 K4 + 0x8810050D, // 0029 GETMBR R4 R2 K13 0x541600FE, // 002A LDINT R5 255 0x18100805, // 002B LE R4 R4 R5 0x78120008, // 002C JMPF R4 #0036 - 0x8C100300, // 002D GETMET R4 R1 K0 + 0x8C100329, // 002D GETMET R4 R1 K41 0x541A2400, // 002E LDINT R6 9217 0x541DFFFD, // 002F LDINT R7 -2 0x7C100600, // 0030 CALL R4 3 - 0x8C100300, // 0031 GETMET R4 R1 K0 - 0x88180504, // 0032 GETMBR R6 R2 K4 - 0x581C0001, // 0033 LDCONST R7 K1 + 0x8C100329, // 0031 GETMET R4 R1 K41 + 0x8818050D, // 0032 GETMBR R6 R2 K13 + 0x581C002A, // 0033 LDCONST R7 K42 0x7C100600, // 0034 CALL R4 3 0x70020014, // 0035 JMP #004B - 0x88100504, // 0036 GETMBR R4 R2 K4 + 0x8810050D, // 0036 GETMBR R4 R2 K13 0x5416FFFE, // 0037 LDINT R5 65535 0x18100805, // 0038 LE R4 R4 R5 0x78120008, // 0039 JMPF R4 #0043 - 0x8C100300, // 003A GETMET R4 R1 K0 + 0x8C100329, // 003A GETMET R4 R1 K41 0x541A2500, // 003B LDINT R6 9473 0x541DFFFD, // 003C LDINT R7 -2 0x7C100600, // 003D CALL R4 3 - 0x8C100300, // 003E GETMET R4 R1 K0 - 0x88180504, // 003F GETMBR R6 R2 K4 - 0x581C0003, // 0040 LDCONST R7 K3 + 0x8C100329, // 003E GETMET R4 R1 K41 + 0x8818050D, // 003F GETMBR R6 R2 K13 + 0x581C002B, // 0040 LDCONST R7 K43 0x7C100600, // 0041 CALL R4 3 0x70020007, // 0042 JMP #004B - 0x8C100300, // 0043 GETMET R4 R1 K0 + 0x8C100329, // 0043 GETMET R4 R1 K41 0x541A2600, // 0044 LDINT R6 9729 0x541DFFFD, // 0045 LDINT R7 -2 0x7C100600, // 0046 CALL R4 3 - 0x8C100300, // 0047 GETMET R4 R1 K0 - 0x88180504, // 0048 GETMBR R6 R2 K4 + 0x8C100329, // 0047 GETMET R4 R1 K41 + 0x8818050D, // 0048 GETMBR R6 R2 K13 0x541E0003, // 0049 LDINT R7 4 0x7C100600, // 004A CALL R4 3 - 0x88100505, // 004B GETMBR R4 R2 K5 + 0x8810054E, // 004B GETMBR R4 R2 K78 0x541600FE, // 004C LDINT R5 255 0x18100805, // 004D LE R4 R4 R5 0x78120008, // 004E JMPF R4 #0058 - 0x8C100300, // 004F GETMET R4 R1 K0 + 0x8C100329, // 004F GETMET R4 R1 K41 0x541A2401, // 0050 LDINT R6 9218 0x541DFFFD, // 0051 LDINT R7 -2 0x7C100600, // 0052 CALL R4 3 - 0x8C100300, // 0053 GETMET R4 R1 K0 - 0x88180505, // 0054 GETMBR R6 R2 K5 - 0x581C0001, // 0055 LDCONST R7 K1 + 0x8C100329, // 0053 GETMET R4 R1 K41 + 0x8818054E, // 0054 GETMBR R6 R2 K78 + 0x581C002A, // 0055 LDCONST R7 K42 0x7C100600, // 0056 CALL R4 3 0x70020014, // 0057 JMP #006D - 0x88100505, // 0058 GETMBR R4 R2 K5 + 0x8810054E, // 0058 GETMBR R4 R2 K78 0x5416FFFE, // 0059 LDINT R5 65535 0x18100805, // 005A LE R4 R4 R5 0x78120008, // 005B JMPF R4 #0065 - 0x8C100300, // 005C GETMET R4 R1 K0 + 0x8C100329, // 005C GETMET R4 R1 K41 0x541A2501, // 005D LDINT R6 9474 0x541DFFFD, // 005E LDINT R7 -2 0x7C100600, // 005F CALL R4 3 - 0x8C100300, // 0060 GETMET R4 R1 K0 - 0x88180505, // 0061 GETMBR R6 R2 K5 - 0x581C0003, // 0062 LDCONST R7 K3 + 0x8C100329, // 0060 GETMET R4 R1 K41 + 0x8818054E, // 0061 GETMBR R6 R2 K78 + 0x581C002B, // 0062 LDCONST R7 K43 0x7C100600, // 0063 CALL R4 3 0x70020007, // 0064 JMP #006D - 0x8C100300, // 0065 GETMET R4 R1 K0 + 0x8C100329, // 0065 GETMET R4 R1 K41 0x541A2601, // 0066 LDINT R6 9730 0x541DFFFD, // 0067 LDINT R7 -2 0x7C100600, // 0068 CALL R4 3 - 0x8C100300, // 0069 GETMET R4 R1 K0 - 0x88180505, // 006A GETMBR R6 R2 K5 + 0x8C100329, // 0069 GETMET R4 R1 K41 + 0x8818054E, // 006A GETMBR R6 R2 K78 0x541E0003, // 006B LDINT R7 4 0x7C100600, // 006C CALL R4 3 - 0x8C100300, // 006D GETMET R4 R1 K0 + 0x8C100329, // 006D GETMET R4 R1 K41 0x541A0017, // 006E LDINT R6 24 - 0x581C0001, // 006F LDCONST R7 K1 + 0x581C002A, // 006F LDCONST R7 K42 0x7C100600, // 0070 CALL R4 3 0x4C100000, // 0071 LDNIL R4 0x1C100604, // 0072 EQ R4 R3 R4 0x78120016, // 0073 JMPF R4 #008B - 0x88100506, // 0074 GETMBR R4 R2 K6 + 0x8810050F, // 0074 GETMBR R4 R2 K15 0x4C140000, // 0075 LDNIL R5 0x1C140805, // 0076 EQ R5 R4 R5 0x78160001, // 0077 JMPF R5 #007A - 0xB8160E00, // 0078 GETNGBL R5 K7 - 0x88100B08, // 0079 GETMBR R4 R5 K8 - 0x8C140300, // 007A GETMET R5 R1 K0 + 0xB8160000, // 0078 GETNGBL R5 K0 + 0x88100B24, // 0079 GETMBR R4 R5 K36 + 0x8C140329, // 007A GETMET R5 R1 K41 0x541E3500, // 007B LDINT R7 13569 0x5421FFFD, // 007C LDINT R8 -2 0x7C140600, // 007D CALL R5 3 - 0x8C140300, // 007E GETMET R5 R1 K0 + 0x8C140329, // 007E GETMET R5 R1 K41 0x541E23FF, // 007F LDINT R7 9216 0x5421FFFD, // 0080 LDINT R8 -2 0x7C140600, // 0081 CALL R5 3 - 0x8C140300, // 0082 GETMET R5 R1 K0 - 0x881C0506, // 0083 GETMBR R7 R2 K6 - 0x58200001, // 0084 LDCONST R8 K1 + 0x8C140329, // 0082 GETMET R5 R1 K41 + 0x881C050F, // 0083 GETMBR R7 R2 K15 + 0x5820002A, // 0084 LDCONST R8 K42 0x7C140600, // 0085 CALL R5 3 - 0x8C140300, // 0086 GETMET R5 R1 K0 + 0x8C140329, // 0086 GETMET R5 R1 K41 0x541E0017, // 0087 LDINT R7 24 - 0x58200001, // 0088 LDCONST R8 K1 + 0x5820002A, // 0088 LDCONST R8 K42 0x7C140600, // 0089 CALL R5 3 0x70020003, // 008A JMP #008F - 0x900E1301, // 008B SETMBR R3 K9 K1 - 0x8C10070A, // 008C GETMET R4 R3 K10 + 0x900E5D2A, // 008B SETMBR R3 K46 K42 + 0x8C10072F, // 008C GETMET R4 R3 K47 0x5C180200, // 008D MOVE R6 R1 0x7C100400, // 008E CALL R4 2 - 0x8C100300, // 008F GETMET R4 R1 K0 + 0x8C100329, // 008F GETMET R4 R1 K41 0x541A1817, // 0090 LDINT R6 6168 0x541DFFFD, // 0091 LDINT R7 -2 0x7C100600, // 0092 CALL R4 3 @@ -2896,72 +2652,56 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(findsubval), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K3 */ be_nested_str_weak(exchange_id), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(SUCCESS), - /* K6 */ be_nested_str_weak(status_ok_received), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(status_error_received), - /* K14 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_status_response), &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ - 0x8C0C0500, // 0000 GETMET R3 R2 K0 - 0x58140001, // 0001 LDCONST R5 K1 + 0x8C0C05BA, // 0000 GETMET R3 R2 K186 + 0x5814005C, // 0001 LDCONST R5 K92 0x541A00FE, // 0002 LDINT R6 255 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100102, // 0004 GETMET R4 R0 K2 - 0x88180303, // 0005 GETMBR R6 R1 K3 + 0x8C100180, // 0004 GETMET R4 R0 K128 + 0x88180358, // 0005 GETMBR R6 R1 K88 0x7C100400, // 0006 CALL R4 2 - 0xB8160800, // 0007 GETNGBL R5 K4 - 0x88140B05, // 0008 GETMBR R5 R5 K5 + 0xB8160000, // 0007 GETNGBL R5 K0 + 0x88140B24, // 0008 GETMBR R5 R5 K36 0x1C140605, // 0009 EQ R5 R3 R5 0x7816000F, // 000A JMPF R5 #001B 0x78120004, // 000B JMPF R4 #0011 - 0x8C140906, // 000C GETMET R5 R4 K6 + 0x8C1409BB, // 000C GETMET R5 R4 K187 0x5C1C0200, // 000D MOVE R7 R1 0x7C140400, // 000E CALL R5 2 0x80040A00, // 000F RET 1 R5 0x70020008, // 0010 JMP #001A - 0xB8160E00, // 0011 GETNGBL R5 K7 + 0xB8162E00, // 0011 GETNGBL R5 K23 0x60180018, // 0012 GETGBL R6 G24 - 0x581C0008, // 0013 LDCONST R7 K8 - 0x88200309, // 0014 GETMBR R8 R1 K9 - 0x8820110A, // 0015 GETMBR R8 R8 K10 - 0x88240303, // 0016 GETMBR R9 R1 K3 + 0x581C00BC, // 0013 LDCONST R7 K188 + 0x88200323, // 0014 GETMBR R8 R1 K35 + 0x88201136, // 0015 GETMBR R8 R8 K54 + 0x88240358, // 0016 GETMBR R9 R1 K88 0x7C180600, // 0017 CALL R6 3 0x541E0003, // 0018 LDINT R7 4 0x7C140400, // 0019 CALL R5 2 0x7002000D, // 001A JMP #0029 - 0xB8160E00, // 001B GETNGBL R5 K7 + 0xB8162E00, // 001B GETNGBL R5 K23 0x60180018, // 001C GETGBL R6 G24 - 0x581C000B, // 001D LDCONST R7 K11 + 0x581C00BD, // 001D LDCONST R7 K189 0x5C200600, // 001E MOVE R8 R3 0x7C180400, // 001F CALL R6 2 - 0x581C000C, // 0020 LDCONST R7 K12 + 0x581C0015, // 0020 LDCONST R7 K21 0x7C140400, // 0021 CALL R5 2 0x78120005, // 0022 JMPF R4 #0029 - 0x8C14090D, // 0023 GETMET R5 R4 K13 + 0x8C1409BE, // 0023 GETMET R5 R4 K190 0x5C1C0200, // 0024 MOVE R7 R1 0x7C140400, // 0025 CALL R5 2 - 0x8C14010E, // 0026 GETMET R5 R0 K14 - 0x881C0303, // 0027 GETMBR R7 R1 K3 + 0x8C14016E, // 0026 GETMET R5 R0 K110 + 0x881C0358, // 0027 GETMBR R7 R1 K88 0x7C140400, // 0028 CALL R5 2 0x50140000, // 0029 LDBOOL R5 0 0 0x80040A00, // 002A RET 1 R5 @@ -2978,68 +2718,61 @@ be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(path2raw), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(status), - /* K5 */ be_const_int(2), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(attributestatus2raw), &be_const_str_solidified, ( &(const binstruction[47]) { /* code */ - 0x8C100300, // 0000 GETMET R4 R1 K0 + 0x8C100329, // 0000 GETMET R4 R1 K41 0x541A0014, // 0001 LDINT R6 21 - 0x581C0001, // 0002 LDCONST R7 K1 + 0x581C002A, // 0002 LDCONST R7 K42 0x7C100600, // 0003 CALL R4 3 - 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x8C100329, // 0004 GETMET R4 R1 K41 0x541A34FF, // 0005 LDINT R6 13568 0x541DFFFD, // 0006 LDINT R7 -2 0x7C100600, // 0007 CALL R4 3 - 0x8C100102, // 0008 GETMET R4 R0 K2 + 0x8C10012D, // 0008 GETMET R4 R0 K45 0x5C180200, // 0009 MOVE R6 R1 0x5C1C0400, // 000A MOVE R7 R2 - 0x58200003, // 000B LDCONST R8 K3 + 0x58200040, // 000B LDCONST R8 K64 0x7C100800, // 000C CALL R4 4 - 0x8C100300, // 000D GETMET R4 R1 K0 + 0x8C100329, // 000D GETMET R4 R1 K41 0x541A3500, // 000E LDINT R6 13569 0x541DFFFD, // 000F LDINT R7 -2 0x7C100600, // 0010 CALL R4 3 - 0x88100504, // 0011 GETMBR R4 R2 K4 + 0x8810050F, // 0011 GETMBR R4 R2 K15 0x541600FE, // 0012 LDINT R5 255 0x18100805, // 0013 LE R4 R4 R5 0x78120008, // 0014 JMPF R4 #001E - 0x8C100300, // 0015 GETMET R4 R1 K0 + 0x8C100329, // 0015 GETMET R4 R1 K41 0x541A23FF, // 0016 LDINT R6 9216 0x541DFFFD, // 0017 LDINT R7 -2 0x7C100600, // 0018 CALL R4 3 - 0x8C100300, // 0019 GETMET R4 R1 K0 - 0x88180504, // 001A GETMBR R6 R2 K4 - 0x581C0001, // 001B LDCONST R7 K1 + 0x8C100329, // 0019 GETMET R4 R1 K41 + 0x8818050F, // 001A GETMBR R6 R2 K15 + 0x581C002A, // 001B LDCONST R7 K42 0x7C100600, // 001C CALL R4 3 0x70020007, // 001D JMP #0026 - 0x8C100300, // 001E GETMET R4 R1 K0 + 0x8C100329, // 001E GETMET R4 R1 K41 0x541A24FF, // 001F LDINT R6 9472 0x541DFFFD, // 0020 LDINT R7 -2 0x7C100600, // 0021 CALL R4 3 - 0x8C100300, // 0022 GETMET R4 R1 K0 - 0x88180504, // 0023 GETMBR R6 R2 K4 - 0x581C0005, // 0024 LDCONST R7 K5 + 0x8C100329, // 0022 GETMET R4 R1 K41 + 0x8818050F, // 0023 GETMBR R6 R2 K15 + 0x581C002B, // 0024 LDCONST R7 K43 0x7C100600, // 0025 CALL R4 3 - 0x8C100300, // 0026 GETMET R4 R1 K0 + 0x8C100329, // 0026 GETMET R4 R1 K41 0x541A1817, // 0027 LDINT R6 6168 0x541DFFFD, // 0028 LDINT R7 -2 0x7C100600, // 0029 CALL R4 3 - 0x8C100300, // 002A GETMET R4 R1 K0 + 0x8C100329, // 002A GETMET R4 R1 K41 0x541A0017, // 002B LDINT R6 24 - 0x581C0001, // 002C LDCONST R7 K1 + 0x581C002A, // 002C LDCONST R7 K42 0x7C100600, // 002D CALL R4 3 0x80000000, // 002E RET 0 }) @@ -3055,69 +2788,37 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ be_nested_proto( 21, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(loglevel), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(get_attribute_name), - /* K6 */ be_nested_str_weak(cluster), - /* K7 */ be_nested_str_weak(attribute), - /* K8 */ be_nested_str_weak(_X20_X28), - /* K9 */ be_nested_str_weak(_X29), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(status), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(tlv_solo), - /* K14 */ be_nested_str_weak(to_str_val), - /* K15 */ be_nested_str_weak(is_list), - /* K16 */ be_nested_str_weak(is_array), - /* K17 */ be_nested_str_weak(encode_len), - /* K18 */ be_nested_str_weak(IM_ReportData_Pull), - /* K19 */ be_nested_str_weak(MAX_MESSAGE), - /* K20 */ be_nested_str_weak(Matter_TLV_array), - /* K21 */ be_nested_str_weak(attributedata2raw), - /* K22 */ be_nested_str_weak(push), - /* K23 */ be_nested_str_weak(val), - /* K24 */ be_nested_str_weak(stop_iteration), - /* K25 */ be_nested_str_weak(log), - /* K26 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K27 */ be_nested_str_weak(local_session_id), - /* K28 */ be_nested_str_weak(attributestatus2raw), - /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(read_single_attribute_to_bytes), &be_const_str_solidified, ( &(const binstruction[165]) { /* code */ 0xB8160000, // 0000 GETNGBL R5 K0 - 0x88140B01, // 0001 GETMBR R5 R5 K1 + 0x88140B83, // 0001 GETMBR R5 R5 K131 0x4C180000, // 0002 LDNIL R6 - 0xB81E0400, // 0003 GETNGBL R7 K2 - 0x8C1C0F03, // 0004 GETMET R7 R7 K3 - 0x58240004, // 0005 LDCONST R9 K4 + 0xB81E2600, // 0003 GETNGBL R7 K19 + 0x8C1C0F14, // 0004 GETMET R7 R7 K20 + 0x58240015, // 0005 LDCONST R9 K21 0x7C1C0400, // 0006 CALL R7 2 0x781E000B, // 0007 JMPF R7 #0014 0xB81E0000, // 0008 GETNGBL R7 K0 - 0x8C1C0F05, // 0009 GETMET R7 R7 K5 - 0x88240506, // 000A GETMBR R9 R2 K6 - 0x88280507, // 000B GETMBR R10 R2 K7 + 0x8C1C0F16, // 0009 GETMET R7 R7 K22 + 0x8824050D, // 000A GETMBR R9 R2 K13 + 0x8828050E, // 000B GETMBR R10 R2 K14 0x7C1C0600, // 000C CALL R7 3 0x5C180E00, // 000D MOVE R6 R7 0x781A0002, // 000E JMPF R6 #0012 - 0x001E1006, // 000F ADD R7 K8 R6 - 0x001C0F09, // 0010 ADD R7 R7 K9 + 0x001E3206, // 000F ADD R7 K25 R6 + 0x001C0F1A, // 0010 ADD R7 R7 K26 0x70020000, // 0011 JMP #0013 - 0x581C000A, // 0012 LDCONST R7 K10 + 0x581C001B, // 0012 LDCONST R7 K27 0x5C180E00, // 0013 MOVE R6 R7 - 0x881C050B, // 0014 GETMBR R7 R2 K11 + 0x881C050F, // 0014 GETMBR R7 R2 K15 0x4C200000, // 0015 LDNIL R8 0x201C0E08, // 0016 NE R7 R7 R8 0x4C200000, // 0017 LDNIL R8 @@ -3125,34 +2826,34 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x4C280000, // 0019 LDNIL R10 0x2028020A, // 001A NE R10 R1 R10 0x782A0005, // 001B JMPF R10 #0022 - 0x8C28030C, // 001C GETMET R10 R1 K12 + 0x8C28039E, // 001C GETMET R10 R1 K158 0x5C300600, // 001D MOVE R12 R3 0x5C340400, // 001E MOVE R13 R2 - 0x8838010D, // 001F GETMBR R14 R0 K13 + 0x8838018D, // 001F GETMBR R14 R0 K141 0x7C280800, // 0020 CALL R10 4 0x5C201400, // 0021 MOVE R8 R10 0x4C280000, // 0022 LDNIL R10 0x2028100A, // 0023 NE R10 R8 R10 0x782A0057, // 0024 JMPF R10 #007D - 0x5828000A, // 0025 LDCONST R10 K10 - 0xB82E0400, // 0026 GETNGBL R11 K2 - 0x8C2C1703, // 0027 GETMET R11 R11 K3 - 0x58340004, // 0028 LDCONST R13 K4 + 0x5828001B, // 0025 LDCONST R10 K27 + 0xB82E2600, // 0026 GETNGBL R11 K19 + 0x8C2C1714, // 0027 GETMET R11 R11 K20 + 0x58340015, // 0028 LDCONST R13 K21 0x7C2C0400, // 0029 CALL R11 2 0x782E0003, // 002A JMPF R11 #002F 0x78120002, // 002B JMPF R4 #002F - 0x8C2C110E, // 002C GETMET R11 R8 K14 + 0x8C2C11AE, // 002C GETMET R11 R8 K174 0x7C2C0200, // 002D CALL R11 1 0x5C281600, // 002E MOVE R10 R11 - 0x882C110F, // 002F GETMBR R11 R8 K15 + 0x882C119F, // 002F GETMBR R11 R8 K159 0x742E0001, // 0030 JMPT R11 #0033 - 0x882C1110, // 0031 GETMBR R11 R8 K16 + 0x882C11A0, // 0031 GETMBR R11 R8 K160 0x782E002F, // 0032 JMPF R11 #0063 - 0x8C2C1111, // 0033 GETMET R11 R8 K17 + 0x8C2C11A1, // 0033 GETMET R11 R8 K161 0x7C2C0200, // 0034 CALL R11 1 0xB8320000, // 0035 GETNGBL R12 K0 - 0x88301912, // 0036 GETMBR R12 R12 K18 - 0x88301913, // 0037 GETMBR R12 R12 K19 + 0x8830193F, // 0036 GETMBR R12 R12 K63 + 0x883019A2, // 0037 GETMBR R12 R12 K162 0x242C160C, // 0038 GT R11 R11 R12 0x782E0028, // 0039 JMPF R11 #0063 0x602C0012, // 003A GETGBL R11 G18 @@ -3161,19 +2862,19 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x602C0015, // 003D GETGBL R11 G21 0x5432002F, // 003E LDINT R12 48 0x7C2C0200, // 003F CALL R11 1 - 0x8C300B14, // 0040 GETMET R12 R5 K20 + 0x8C300BBF, // 0040 GETMET R12 R5 K191 0x7C300200, // 0041 CALL R12 1 - 0x8C340115, // 0042 GETMET R13 R0 K21 + 0x8C3401A7, // 0042 GETMET R13 R0 K167 0x5C3C1600, // 0043 MOVE R15 R11 0x5C400400, // 0044 MOVE R16 R2 0x5C441800, // 0045 MOVE R17 R12 0x50480000, // 0046 LDBOOL R18 0 0 0x7C340A00, // 0047 CALL R13 5 - 0x8C341316, // 0048 GETMET R13 R9 K22 + 0x8C341327, // 0048 GETMET R13 R9 K39 0x5C3C1600, // 0049 MOVE R15 R11 0x7C340400, // 004A CALL R13 2 0x60340010, // 004B GETGBL R13 G16 - 0x88381117, // 004C GETMBR R14 R8 K23 + 0x883811C0, // 004C GETMBR R14 R8 K192 0x7C340200, // 004D CALL R13 1 0xA802000F, // 004E EXBLK 0 #005F 0x5C381A00, // 004F MOVE R14 R13 @@ -3182,17 +2883,17 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5442002F, // 0052 LDINT R16 48 0x7C3C0200, // 0053 CALL R15 1 0x5C2C1E00, // 0054 MOVE R11 R15 - 0x8C3C0115, // 0055 GETMET R15 R0 K21 + 0x8C3C01A7, // 0055 GETMET R15 R0 K167 0x5C441600, // 0056 MOVE R17 R11 0x5C480400, // 0057 MOVE R18 R2 0x5C4C1C00, // 0058 MOVE R19 R14 0x50500200, // 0059 LDBOOL R20 1 0 0x7C3C0A00, // 005A CALL R15 5 - 0x8C3C1316, // 005B GETMET R15 R9 K22 + 0x8C3C1327, // 005B GETMET R15 R9 K39 0x5C441600, // 005C MOVE R17 R11 0x7C3C0400, // 005D CALL R15 2 0x7001FFEF, // 005E JMP #004F - 0x58340018, // 005F LDCONST R13 K24 + 0x58340025, // 005F LDCONST R13 K37 0xAC340200, // 0060 CATCH R13 1 0 0xB0080000, // 0061 RAISE 2 R0 R0 0x70020008, // 0062 JMP #006C @@ -3200,29 +2901,29 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5432002F, // 0064 LDINT R12 48 0x7C2C0200, // 0065 CALL R11 1 0x5C241600, // 0066 MOVE R9 R11 - 0x8C2C0115, // 0067 GETMET R11 R0 K21 + 0x8C2C01A7, // 0067 GETMET R11 R0 K167 0x5C341200, // 0068 MOVE R13 R9 0x5C380400, // 0069 MOVE R14 R2 0x5C3C1000, // 006A MOVE R15 R8 0x7C2C0800, // 006B CALL R11 4 - 0xB82E0400, // 006C GETNGBL R11 K2 - 0x8C2C1703, // 006D GETMET R11 R11 K3 - 0x58340004, // 006E LDCONST R13 K4 + 0xB82E2600, // 006C GETNGBL R11 K19 + 0x8C2C1714, // 006D GETMET R11 R11 K20 + 0x58340015, // 006E LDCONST R13 K21 0x7C2C0400, // 006F CALL R11 2 0x782E000A, // 0070 JMPF R11 #007C 0x78120009, // 0071 JMPF R4 #007C - 0xB82E3200, // 0072 GETNGBL R11 K25 + 0xB82E2E00, // 0072 GETNGBL R11 K23 0x60300018, // 0073 GETGBL R12 G24 - 0x5834001A, // 0074 LDCONST R13 K26 - 0x8838071B, // 0075 GETMBR R14 R3 K27 + 0x583400C1, // 0074 LDCONST R13 K193 + 0x88380736, // 0075 GETMBR R14 R3 K54 0x5C3C0400, // 0076 MOVE R15 R2 0x5C400C00, // 0077 MOVE R16 R6 0x5C441400, // 0078 MOVE R17 R10 0x7C300A00, // 0079 CALL R12 5 - 0x58340004, // 007A LDCONST R13 K4 + 0x58340015, // 007A LDCONST R13 K21 0x7C2C0400, // 007B CALL R11 2 0x70020026, // 007C JMP #00A4 - 0x8828050B, // 007D GETMBR R10 R2 K11 + 0x8828050F, // 007D GETMBR R10 R2 K15 0x4C2C0000, // 007E LDNIL R11 0x2028140B, // 007F NE R10 R10 R11 0x782A0022, // 0080 JMPF R10 #00A4 @@ -3231,35 +2932,35 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x542E002F, // 0083 LDINT R11 48 0x7C280200, // 0084 CALL R10 1 0x5C241400, // 0085 MOVE R9 R10 - 0x8C28011C, // 0086 GETMET R10 R0 K28 + 0x8C2801A9, // 0086 GETMET R10 R0 K169 0x5C301200, // 0087 MOVE R12 R9 0x5C340400, // 0088 MOVE R13 R2 - 0x8838050B, // 0089 GETMBR R14 R2 K11 + 0x8838050F, // 0089 GETMBR R14 R2 K15 0x7C280800, // 008A CALL R10 4 - 0xB82A0400, // 008B GETNGBL R10 K2 - 0x8C281503, // 008C GETMET R10 R10 K3 - 0x58300004, // 008D LDCONST R12 K4 + 0xB82A2600, // 008B GETNGBL R10 K19 + 0x8C281514, // 008C GETMET R10 R10 K20 + 0x58300015, // 008D LDCONST R12 K21 0x7C280400, // 008E CALL R10 2 0x782A0013, // 008F JMPF R10 #00A4 - 0xB82A3200, // 0090 GETNGBL R10 K25 + 0xB82A2E00, // 0090 GETNGBL R10 K23 0x602C0018, // 0091 GETGBL R11 G24 - 0x5830001D, // 0092 LDCONST R12 K29 - 0x8834071B, // 0093 GETMBR R13 R3 K27 + 0x583000C2, // 0092 LDCONST R12 K194 + 0x88340736, // 0093 GETMBR R13 R3 K54 0x60380008, // 0094 GETGBL R14 G8 0x5C3C0400, // 0095 MOVE R15 R2 0x7C380200, // 0096 CALL R14 1 0x5C3C0C00, // 0097 MOVE R15 R6 - 0x8840050B, // 0098 GETMBR R16 R2 K11 - 0x8844050B, // 0099 GETMBR R17 R2 K11 + 0x8840050F, // 0098 GETMBR R16 R2 K15 + 0x8844050F, // 0099 GETMBR R17 R2 K15 0xB84A0000, // 009A GETNGBL R18 K0 - 0x8848251E, // 009B GETMBR R18 R18 K30 + 0x8848259D, // 009B GETMBR R18 R18 K157 0x1C442212, // 009C EQ R17 R17 R18 0x78460001, // 009D JMPF R17 #00A0 - 0x5844001E, // 009E LDCONST R17 K30 + 0x5844009D, // 009E LDCONST R17 K157 0x70020000, // 009F JMP #00A1 - 0x5844000A, // 00A0 LDCONST R17 K10 + 0x5844001B, // 00A0 LDCONST R17 K27 0x7C2C0C00, // 00A1 CALL R11 6 - 0x58300004, // 00A2 LDCONST R12 K4 + 0x58300015, // 00A2 LDCONST R12 K21 0x7C280400, // 00A3 CALL R10 2 0x80041200, // 00A4 RET 1 R9 }) @@ -3275,25 +2976,20 @@ be_local_closure(class_Matter_IM_send_status, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(send_queue), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(IM_Status), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(send_status), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0xB8160400, // 0002 GETNGBL R5 K2 - 0x8C140B03, // 0003 GETMET R5 R5 K3 + 0x880C0126, // 0000 GETMBR R3 R0 K38 + 0x8C0C0727, // 0001 GETMET R3 R3 K39 + 0xB8160000, // 0002 GETNGBL R5 K0 + 0x8C140BC3, // 0003 GETMET R5 R5 K195 0x5C1C0200, // 0004 MOVE R7 R1 0x5C200400, // 0005 MOVE R8 R2 0x7C140600, // 0006 CALL R5 3 @@ -3312,50 +3008,28 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(opcode), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str_weak(read_request_solo), - /* K3 */ be_nested_str_weak(from_raw), - /* K4 */ be_nested_str_weak(raw), - /* K5 */ be_nested_str_weak(app_payload_idx), - /* K6 */ be_nested_str_weak(process_read_request_solo), - /* K7 */ be_nested_str_weak(invoke_request_solo), - /* K8 */ be_nested_str_weak(process_invoke_request_solo), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(TLV), - /* K11 */ be_nested_str_weak(parse), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(process_status_response), - /* K14 */ be_nested_str_weak(send_ack_now), - /* K15 */ be_nested_str_weak(process_read_request_pull), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(subscribe_request), - /* K18 */ be_nested_str_weak(process_write_request), - /* K19 */ be_nested_str_weak(process_invoke_request), - /* K20 */ be_nested_str_weak(process_timed_request), - }), + &be_ktab_class_Matter_IM, /* shared constants */ be_str_weak(process_incoming), &be_const_str_solidified, ( &(const binstruction[124]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x1C0C0501, // 0001 EQ R3 R2 K1 + 0x880803C4, // 0000 GETMBR R2 R1 K196 + 0x1C0C052B, // 0001 EQ R3 R2 K43 0x780E000D, // 0002 JMPF R3 #0011 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x8C0C0703, // 0004 GETMET R3 R3 K3 - 0x88140304, // 0005 GETMBR R5 R1 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 + 0x880C0189, // 0003 GETMBR R3 R0 K137 + 0x8C0C07C5, // 0004 GETMET R3 R3 K197 + 0x88140395, // 0005 GETMBR R5 R1 K149 + 0x881803A5, // 0006 GETMBR R6 R1 K165 0x7C0C0600, // 0007 CALL R3 3 0x4C100000, // 0008 LDNIL R4 0x20100604, // 0009 NE R4 R3 R4 0x78120004, // 000A JMPF R4 #0010 - 0x8C100106, // 000B GETMET R4 R0 K6 + 0x8C1001C6, // 000B GETMET R4 R0 K198 0x5C180200, // 000C MOVE R6 R1 0x5C1C0600, // 000D MOVE R7 R3 0x7C100600, // 000E CALL R4 3 @@ -3364,50 +3038,50 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x540E0007, // 0011 LDINT R3 8 0x1C0C0403, // 0012 EQ R3 R2 R3 0x780E000C, // 0013 JMPF R3 #0021 - 0x880C0107, // 0014 GETMBR R3 R0 K7 - 0x8C0C0703, // 0015 GETMET R3 R3 K3 - 0x88140304, // 0016 GETMBR R5 R1 K4 - 0x88180305, // 0017 GETMBR R6 R1 K5 + 0x880C018B, // 0014 GETMBR R3 R0 K139 + 0x8C0C07C5, // 0015 GETMET R3 R3 K197 + 0x88140395, // 0016 GETMBR R5 R1 K149 + 0x881803A5, // 0017 GETMBR R6 R1 K165 0x7C0C0600, // 0018 CALL R3 3 0x4C100000, // 0019 LDNIL R4 0x20100604, // 001A NE R4 R3 R4 0x78120004, // 001B JMPF R4 #0021 - 0x8C100108, // 001C GETMET R4 R0 K8 + 0x8C1001C7, // 001C GETMET R4 R0 K199 0x5C180200, // 001D MOVE R6 R1 0x5C1C0600, // 001E MOVE R7 R3 0x7C100600, // 001F CALL R4 3 0x80040800, // 0020 RET 1 R4 - 0xB80E1200, // 0021 GETNGBL R3 K9 - 0x880C070A, // 0022 GETMBR R3 R3 K10 - 0x8C0C070B, // 0023 GETMET R3 R3 K11 - 0x88140304, // 0024 GETMBR R5 R1 K4 - 0x88180305, // 0025 GETMBR R6 R1 K5 + 0xB80E0000, // 0021 GETNGBL R3 K0 + 0x880C0783, // 0022 GETMBR R3 R3 K131 + 0x8C0C07A4, // 0023 GETMET R3 R3 K164 + 0x88140395, // 0024 GETMBR R5 R1 K149 + 0x881803A5, // 0025 GETMBR R6 R1 K165 0x7C0C0600, // 0026 CALL R3 3 - 0x1C10050C, // 0027 EQ R4 R2 K12 + 0x1C10052A, // 0027 EQ R4 R2 K42 0x78120005, // 0028 JMPF R4 #002F - 0x8C10010D, // 0029 GETMET R4 R0 K13 + 0x8C1001C8, // 0029 GETMET R4 R0 K200 0x5C180200, // 002A MOVE R6 R1 0x5C1C0600, // 002B MOVE R7 R3 0x7C100600, // 002C CALL R4 3 0x80040800, // 002D RET 1 R4 0x7002004A, // 002E JMP #007A - 0x1C100501, // 002F EQ R4 R2 K1 + 0x1C10052B, // 002F EQ R4 R2 K43 0x78120008, // 0030 JMPF R4 #003A - 0x8C10010E, // 0031 GETMET R4 R0 K14 + 0x8C1001C9, // 0031 GETMET R4 R0 K201 0x5C180200, // 0032 MOVE R6 R1 0x7C100400, // 0033 CALL R4 2 - 0x8C10010F, // 0034 GETMET R4 R0 K15 + 0x8C1001A6, // 0034 GETMET R4 R0 K166 0x5C180200, // 0035 MOVE R6 R1 0x5C1C0600, // 0036 MOVE R7 R3 0x7C100600, // 0037 CALL R4 3 0x80040800, // 0038 RET 1 R4 0x7002003F, // 0039 JMP #007A - 0x1C100510, // 003A EQ R4 R2 K16 + 0x1C100515, // 003A EQ R4 R2 K21 0x78120008, // 003B JMPF R4 #0045 - 0x8C10010E, // 003C GETMET R4 R0 K14 + 0x8C1001C9, // 003C GETMET R4 R0 K201 0x5C180200, // 003D MOVE R6 R1 0x7C100400, // 003E CALL R4 2 - 0x8C100111, // 003F GETMET R4 R0 K17 + 0x8C1001CA, // 003F GETMET R4 R0 K202 0x5C180200, // 0040 MOVE R6 R1 0x5C1C0600, // 0041 MOVE R7 R3 0x7C100600, // 0042 CALL R4 3 @@ -3428,10 +3102,10 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120005, // 0051 LDINT R4 6 0x1C100404, // 0052 EQ R4 R2 R4 0x78120008, // 0053 JMPF R4 #005D - 0x8C10010E, // 0054 GETMET R4 R0 K14 + 0x8C1001C9, // 0054 GETMET R4 R0 K201 0x5C180200, // 0055 MOVE R6 R1 0x7C100400, // 0056 CALL R4 2 - 0x8C100112, // 0057 GETMET R4 R0 K18 + 0x8C1001CB, // 0057 GETMET R4 R0 K203 0x5C180200, // 0058 MOVE R6 R1 0x5C1C0600, // 0059 MOVE R7 R3 0x7C100600, // 005A CALL R4 3 @@ -3446,7 +3120,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120007, // 0063 LDINT R4 8 0x1C100404, // 0064 EQ R4 R2 R4 0x78120005, // 0065 JMPF R4 #006C - 0x8C100113, // 0066 GETMET R4 R0 K19 + 0x8C1001CC, // 0066 GETMET R4 R0 K204 0x5C180200, // 0067 MOVE R6 R1 0x5C1C0600, // 0068 MOVE R7 R3 0x7C100600, // 0069 CALL R4 3 @@ -3461,7 +3135,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120009, // 0072 LDINT R4 10 0x1C100404, // 0073 EQ R4 R2 R4 0x78120004, // 0074 JMPF R4 #007A - 0x8C100114, // 0075 GETMET R4 R0 K20 + 0x8C1001CD, // 0075 GETMET R4 R0 K205 0x5C180200, // 0076 MOVE R6 R1 0x5C1C0600, // 0077 MOVE R7 R3 0x7C100600, // 0078 CALL R4 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h index b0c62a60c..e4612d228 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h @@ -3,6 +3,20 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_IM_base' ktab size: 10, total: 11 (saved 8 bytes) +static const bvalue be_ktab_class_Matter_IM_base[10] = { + /* K0 */ be_nested_str_weak(add_array), + /* K1 */ be_nested_str_weak(add_obj), + /* K2 */ be_nested_str_weak(stop_iteration), + /* K3 */ be_nested_str_weak(_X3C), + /* K4 */ be_nested_str_weak(_X3A), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(inspect), + /* K7 */ be_nested_str_weak(_X3E), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(from_TLV), +}; + extern const bclass be_class_Matter_IM_base; @@ -13,17 +27,13 @@ be_local_closure(class_Matter_IM_base_to_TLV_array, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(add_array), - /* K1 */ be_nested_str_weak(add_obj), - /* K2 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_IM_base, /* shared constants */ be_str_weak(to_TLV_array), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ @@ -63,33 +73,27 @@ be_local_closure(class_Matter_IM_base_tostring, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_X3C), - /* K1 */ be_nested_str_weak(_X3A), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(inspect), - /* K4 */ be_nested_str_weak(_X3E), - }), + &be_ktab_class_Matter_IM_base, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x60040005, // 0000 GETGBL R1 G5 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x00060001, // 0003 ADD R1 K0 R1 - 0x00040301, // 0004 ADD R1 R1 K1 - 0xB80A0400, // 0005 GETNGBL R2 K2 - 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x00060601, // 0003 ADD R1 K3 R1 + 0x00040304, // 0004 ADD R1 R1 K4 + 0xB80A0A00, // 0005 GETNGBL R2 K5 + 0x8C080506, // 0006 GETMET R2 R2 K6 0x5C100000, // 0007 MOVE R4 R0 0x7C080400, // 0008 CALL R2 2 0x00040202, // 0009 ADD R1 R1 R2 - 0x00040304, // 000A ADD R1 R1 K4 + 0x00040307, // 000A ADD R1 R1 K7 0x80040200, // 000B RET 1 R1 }) ) @@ -104,17 +108,13 @@ be_local_closure(class_Matter_IM_base_from_TLV_array, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(push), - /* K1 */ be_nested_str_weak(from_TLV), - /* K2 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_IM_base, /* shared constants */ be_str_weak(from_TLV_array), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ @@ -131,10 +131,10 @@ be_local_closure(class_Matter_IM_base_from_TLV_array, /* name */ 0xA8020009, // 000A EXBLK 0 #0015 0x5C140800, // 000B MOVE R5 R4 0x7C140000, // 000C CALL R5 0 - 0x8C180700, // 000D GETMET R6 R3 K0 + 0x8C180708, // 000D GETMET R6 R3 K8 0x5C200400, // 000E MOVE R8 R2 0x7C200000, // 000F CALL R8 0 - 0x8C201101, // 0010 GETMET R8 R8 K1 + 0x8C201109, // 0010 GETMET R8 R8 K9 0x5C280A00, // 0011 MOVE R10 R5 0x7C200400, // 0012 CALL R8 2 0x7C180400, // 0013 CALL R6 2 @@ -208,6 +208,39 @@ be_local_class(Matter_IM_Message_base, })), be_str_weak(Matter_IM_Message_base) ); +// compact class 'Matter_AttributePathIB' ktab size: 29, total: 43 (saved 112 bytes) +static const bvalue be_ktab_class_Matter_AttributePathIB[29] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(Matter_TLV_list), + /* K3 */ be_nested_str_weak(add_TLV), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(BOOL), + /* K6 */ be_nested_str_weak(tag_compression), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(U8), + /* K9 */ be_nested_str_weak(node), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(U2), + /* K12 */ be_nested_str_weak(endpoint), + /* K13 */ be_const_int(3), + /* K14 */ be_nested_str_weak(U4), + /* K15 */ be_nested_str_weak(cluster), + /* K16 */ be_nested_str_weak(attribute), + /* K17 */ be_nested_str_weak(list_index), + /* K18 */ be_nested_str_weak(), + /* K19 */ be_nested_str_weak(node_X3D_X25s_X20), + /* K20 */ be_nested_str_weak(_X5B_X2502X_X5D), + /* K21 */ be_nested_str_weak(_X5B_X2A_X2A_X5D), + /* K22 */ be_nested_str_weak(_X2504X_X2F), + /* K23 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F), + /* K24 */ be_nested_str_weak(_X2504X), + /* K25 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K26 */ be_nested_str_weak(Exception_X3E_X20), + /* K27 */ be_nested_str_weak(_X2C_X20), + /* K28 */ be_nested_str_weak(findsubval), +}; + extern const bclass be_class_Matter_AttributePathIB; @@ -218,32 +251,13 @@ be_local_closure(class_Matter_AttributePathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_list), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(BOOL), - /* K6 */ be_nested_str_weak(tag_compression), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(U8), - /* K9 */ be_nested_str_weak(node), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(U2), - /* K12 */ be_nested_str_weak(endpoint), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(U4), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(attribute), - /* K17 */ be_nested_str_weak(list_index), - }), + &be_ktab_class_Matter_AttributePathIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ @@ -295,72 +309,57 @@ be_local_closure(class_Matter_AttributePathIB_tostring, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(node), - /* K2 */ be_nested_str_weak(node_X3D_X25s_X20), - /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_nested_str_weak(_X5B_X2502X_X5D), - /* K5 */ be_nested_str_weak(_X5B_X2A_X2A_X5D), - /* K6 */ be_nested_str_weak(cluster), - /* K7 */ be_nested_str_weak(_X2504X_X2F), - /* K8 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(_X2504X), - /* K11 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), - /* K12 */ be_nested_str_weak(Exception_X3E_X20), - /* K13 */ be_nested_str_weak(_X2C_X20), - }), + &be_ktab_class_Matter_AttributePathIB, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[61]) { /* code */ 0xA802002C, // 0000 EXBLK 0 #002E - 0x58040000, // 0001 LDCONST R1 K0 - 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x58040012, // 0001 LDCONST R1 K18 + 0x88080109, // 0002 GETMBR R2 R0 K9 0x780A0004, // 0003 JMPF R2 #0009 0x60080018, // 0004 GETGBL R2 G24 - 0x580C0002, // 0005 LDCONST R3 K2 - 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x580C0013, // 0005 LDCONST R3 K19 + 0x88100109, // 0006 GETMBR R4 R0 K9 0x7C080400, // 0007 CALL R2 2 0x00040202, // 0008 ADD R1 R1 R2 - 0x88080103, // 0009 GETMBR R2 R0 K3 + 0x8808010C, // 0009 GETMBR R2 R0 K12 0x4C0C0000, // 000A LDNIL R3 0x20080403, // 000B NE R2 R2 R3 0x780A0004, // 000C JMPF R2 #0012 0x60080018, // 000D GETGBL R2 G24 - 0x580C0004, // 000E LDCONST R3 K4 - 0x88100103, // 000F GETMBR R4 R0 K3 + 0x580C0014, // 000E LDCONST R3 K20 + 0x8810010C, // 000F GETMBR R4 R0 K12 0x7C080400, // 0010 CALL R2 2 0x70020000, // 0011 JMP #0013 - 0x58080005, // 0012 LDCONST R2 K5 + 0x58080015, // 0012 LDCONST R2 K21 0x00040202, // 0013 ADD R1 R1 R2 - 0x88080106, // 0014 GETMBR R2 R0 K6 + 0x8808010F, // 0014 GETMBR R2 R0 K15 0x4C0C0000, // 0015 LDNIL R3 0x20080403, // 0016 NE R2 R2 R3 0x780A0004, // 0017 JMPF R2 #001D 0x60080018, // 0018 GETGBL R2 G24 - 0x580C0007, // 0019 LDCONST R3 K7 - 0x88100106, // 001A GETMBR R4 R0 K6 + 0x580C0016, // 0019 LDCONST R3 K22 + 0x8810010F, // 001A GETMBR R4 R0 K15 0x7C080400, // 001B CALL R2 2 0x70020000, // 001C JMP #001E - 0x58080008, // 001D LDCONST R2 K8 + 0x58080017, // 001D LDCONST R2 K23 0x00040202, // 001E ADD R1 R1 R2 - 0x88080109, // 001F GETMBR R2 R0 K9 + 0x88080110, // 001F GETMBR R2 R0 K16 0x4C0C0000, // 0020 LDNIL R3 0x20080403, // 0021 NE R2 R2 R3 0x780A0004, // 0022 JMPF R2 #0028 0x60080018, // 0023 GETGBL R2 G24 - 0x580C000A, // 0024 LDCONST R3 K10 - 0x88100109, // 0025 GETMBR R4 R0 K9 + 0x580C0018, // 0024 LDCONST R3 K24 + 0x88100110, // 0025 GETMBR R4 R0 K16 0x7C080400, // 0026 CALL R2 2 0x70020000, // 0027 JMP #0029 - 0x5808000B, // 0028 LDCONST R2 K11 + 0x58080019, // 0028 LDCONST R2 K25 0x00040202, // 0029 ADD R1 R1 R2 0xA8040001, // 002A EXBLK 1 1 0x80040200, // 002B RET 1 R1 @@ -371,8 +370,8 @@ be_local_closure(class_Matter_AttributePathIB_tostring, /* name */ 0x600C0008, // 0030 GETGBL R3 G8 0x5C100200, // 0031 MOVE R4 R1 0x7C0C0200, // 0032 CALL R3 1 - 0x000E1803, // 0033 ADD R3 K12 R3 - 0x000C070D, // 0034 ADD R3 R3 K13 + 0x000E3403, // 0033 ADD R3 K26 R3 + 0x000C071B, // 0034 ADD R3 R3 K27 0x60100008, // 0035 GETGBL R4 G8 0x5C140400, // 0036 MOVE R5 R2 0x7C100200, // 0037 CALL R4 1 @@ -394,25 +393,13 @@ be_local_closure(class_Matter_AttributePathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_compression), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(node), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(endpoint), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(cluster), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(attribute), - /* K10 */ be_nested_str_weak(list_index), - }), + &be_ktab_class_Matter_AttributePathIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ @@ -421,30 +408,30 @@ be_local_closure(class_Matter_AttributePathIB_from_TLV, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 + 0x8C08031C, // 0005 GETMET R2 R1 K28 + 0x58100004, // 0006 LDCONST R4 K4 0x7C080400, // 0007 CALL R2 2 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x8C080301, // 0009 GETMET R2 R1 K1 - 0x58100004, // 000A LDCONST R4 K4 + 0x90020C02, // 0008 SETMBR R0 K6 R2 + 0x8C08031C, // 0009 GETMET R2 R1 K28 + 0x58100007, // 000A LDCONST R4 K7 0x7C080400, // 000B CALL R2 2 - 0x90020602, // 000C SETMBR R0 K3 R2 - 0x8C080301, // 000D GETMET R2 R1 K1 - 0x58100006, // 000E LDCONST R4 K6 + 0x90021202, // 000C SETMBR R0 K9 R2 + 0x8C08031C, // 000D GETMET R2 R1 K28 + 0x5810000A, // 000E LDCONST R4 K10 0x7C080400, // 000F CALL R2 2 - 0x90020A02, // 0010 SETMBR R0 K5 R2 - 0x8C080301, // 0011 GETMET R2 R1 K1 - 0x58100008, // 0012 LDCONST R4 K8 + 0x90021802, // 0010 SETMBR R0 K12 R2 + 0x8C08031C, // 0011 GETMET R2 R1 K28 + 0x5810000D, // 0012 LDCONST R4 K13 0x7C080400, // 0013 CALL R2 2 - 0x90020E02, // 0014 SETMBR R0 K7 R2 - 0x8C080301, // 0015 GETMET R2 R1 K1 + 0x90021E02, // 0014 SETMBR R0 K15 R2 + 0x8C08031C, // 0015 GETMET R2 R1 K28 0x54120003, // 0016 LDINT R4 4 0x7C080400, // 0017 CALL R2 2 - 0x90021202, // 0018 SETMBR R0 K9 R2 - 0x8C080301, // 0019 GETMET R2 R1 K1 + 0x90022002, // 0018 SETMBR R0 K16 R2 + 0x8C08031C, // 0019 GETMET R2 R1 K28 0x54120004, // 001A LDINT R4 5 0x7C080400, // 001B CALL R2 2 - 0x90021402, // 001C SETMBR R0 K10 R2 + 0x90022202, // 001C SETMBR R0 K17 R2 0x80040000, // 001D RET 1 R0 }) ) @@ -473,6 +460,24 @@ be_local_class(Matter_AttributePathIB, })), be_str_weak(Matter_AttributePathIB) ); +// compact class 'Matter_ClusterPathIB' ktab size: 14, total: 20 (saved 48 bytes) +static const bvalue be_ktab_class_Matter_ClusterPathIB[14] = { + /* K0 */ be_nested_str_weak(node), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(endpoint), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(cluster), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(TLV), + /* K9 */ be_nested_str_weak(Matter_TLV_list), + /* K10 */ be_nested_str_weak(add_TLV), + /* K11 */ be_nested_str_weak(U8), + /* K12 */ be_nested_str_weak(U2), + /* K13 */ be_nested_str_weak(U4), +}; + extern const bclass be_class_Matter_ClusterPathIB; @@ -483,21 +488,13 @@ be_local_closure(class_Matter_ClusterPathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(node), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(cluster), - /* K6 */ be_const_int(2), - }), + &be_ktab_class_Matter_ClusterPathIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -532,48 +529,34 @@ be_local_closure(class_Matter_ClusterPathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_list), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U8), - /* K6 */ be_nested_str_weak(node), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(U2), - /* K9 */ be_nested_str_weak(endpoint), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(U4), - /* K12 */ be_nested_str_weak(cluster), - }), + &be_ktab_class_Matter_ClusterPathIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060E00, // 0000 GETNGBL R1 K7 + 0x88040308, // 0001 GETMBR R1 R1 K8 + 0x8C080309, // 0002 GETMET R2 R1 K9 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 + 0x8C0C050A, // 0004 GETMET R3 R2 K10 + 0x58140002, // 0005 LDCONST R5 K2 + 0x8818030B, // 0006 GETMBR R6 R1 K11 + 0x881C0100, // 0007 GETMBR R7 R0 K0 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x58140007, // 000A LDCONST R5 K7 - 0x88180308, // 000B GETMBR R6 R1 K8 - 0x881C0109, // 000C GETMBR R7 R0 K9 + 0x8C0C050A, // 0009 GETMET R3 R2 K10 + 0x58140004, // 000A LDCONST R5 K4 + 0x8818030C, // 000B GETMBR R6 R1 K12 + 0x881C0103, // 000C GETMBR R7 R0 K3 0x7C0C0800, // 000D CALL R3 4 - 0x8C0C0503, // 000E GETMET R3 R2 K3 - 0x5814000A, // 000F LDCONST R5 K10 - 0x8818030B, // 0010 GETMBR R6 R1 K11 - 0x881C010C, // 0011 GETMBR R7 R0 K12 + 0x8C0C050A, // 000E GETMET R3 R2 K10 + 0x58140006, // 000F LDCONST R5 K6 + 0x8818030D, // 0010 GETMBR R6 R1 K13 + 0x881C0105, // 0011 GETMBR R7 R0 K5 0x7C0C0800, // 0012 CALL R3 4 0x80040400, // 0013 RET 1 R2 }) @@ -599,6 +582,24 @@ be_local_class(Matter_ClusterPathIB, })), be_str_weak(Matter_ClusterPathIB) ); +// compact class 'Matter_DataVersionFilterIB' ktab size: 14, total: 19 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_DataVersionFilterIB[14] = { + /* K0 */ be_nested_str_weak(path), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(ClusterPathIB), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(findsub), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(data_version), + /* K7 */ be_nested_str_weak(findsubval), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(TLV), + /* K10 */ be_nested_str_weak(Matter_TLV_struct), + /* K11 */ be_nested_str_weak(add_obj), + /* K12 */ be_nested_str_weak(add_TLV), + /* K13 */ be_nested_str_weak(U4), +}; + extern const bclass be_class_Matter_DataVersionFilterIB; @@ -609,23 +610,13 @@ be_local_closure(class_Matter_DataVersionFilterIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(path), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ClusterPathIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(data_version), - /* K7 */ be_nested_str_weak(findsubval), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_DataVersionFilterIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ @@ -661,39 +652,28 @@ be_local_closure(class_Matter_DataVersionFilterIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(path), - /* K6 */ be_nested_str_weak(add_TLV), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(U4), - /* K9 */ be_nested_str_weak(data_version), - }), + &be_ktab_class_Matter_DataVersionFilterIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060200, // 0000 GETNGBL R1 K1 + 0x88040309, // 0001 GETMBR R1 R1 K9 + 0x8C08030A, // 0002 GETMET R2 R1 K10 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180105, // 0006 GETMBR R6 R0 K5 + 0x8C0C050B, // 0004 GETMET R3 R2 K11 + 0x58140005, // 0005 LDCONST R5 K5 + 0x88180100, // 0006 GETMBR R6 R0 K0 0x7C0C0600, // 0007 CALL R3 3 - 0x8C0C0506, // 0008 GETMET R3 R2 K6 - 0x58140007, // 0009 LDCONST R5 K7 - 0x88180308, // 000A GETMBR R6 R1 K8 - 0x881C0109, // 000B GETMBR R7 R0 K9 + 0x8C0C050C, // 0008 GETMET R3 R2 K12 + 0x58140008, // 0009 LDCONST R5 K8 + 0x8818030D, // 000A GETMBR R6 R1 K13 + 0x881C0106, // 000B GETMBR R7 R0 K6 0x7C0C0800, // 000C CALL R3 4 0x80040400, // 000D RET 1 R2 }) @@ -718,6 +698,26 @@ be_local_class(Matter_DataVersionFilterIB, })), be_str_weak(Matter_DataVersionFilterIB) ); +// compact class 'Matter_AttributeDataIB' ktab size: 16, total: 23 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_AttributeDataIB[16] = { + /* K0 */ be_nested_str_weak(data_version), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(path), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(AttributePathIB), + /* K6 */ be_nested_str_weak(from_TLV), + /* K7 */ be_nested_str_weak(findsub), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(data), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(TLV), + /* K12 */ be_nested_str_weak(Matter_TLV_struct), + /* K13 */ be_nested_str_weak(add_TLV), + /* K14 */ be_nested_str_weak(U4), + /* K15 */ be_nested_str_weak(add_obj), +}; + extern const bclass be_class_Matter_AttributeDataIB; @@ -728,25 +728,13 @@ be_local_closure(class_Matter_AttributeDataIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(data_version), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(path), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(AttributePathIB), - /* K6 */ be_nested_str_weak(from_TLV), - /* K7 */ be_nested_str_weak(findsub), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(data), - /* K10 */ be_const_int(2), - }), + &be_ktab_class_Matter_AttributeDataIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ @@ -786,45 +774,32 @@ be_local_closure(class_Matter_AttributeDataIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U4), - /* K6 */ be_nested_str_weak(data_version), - /* K7 */ be_nested_str_weak(add_obj), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(path), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(data), - }), + &be_ktab_class_Matter_AttributeDataIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060800, // 0000 GETNGBL R1 K4 + 0x8804030B, // 0001 GETMBR R1 R1 K11 + 0x8C08030C, // 0002 GETMET R2 R1 K12 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 + 0x8C0C050D, // 0004 GETMET R3 R2 K13 + 0x58140002, // 0005 LDCONST R5 K2 + 0x8818030E, // 0006 GETMBR R6 R1 K14 + 0x881C0100, // 0007 GETMBR R7 R0 K0 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0507, // 0009 GETMET R3 R2 K7 + 0x8C0C050F, // 0009 GETMET R3 R2 K15 0x58140008, // 000A LDCONST R5 K8 - 0x88180109, // 000B GETMBR R6 R0 K9 + 0x88180103, // 000B GETMBR R6 R0 K3 0x7C0C0600, // 000C CALL R3 3 - 0x8C0C0507, // 000D GETMET R3 R2 K7 + 0x8C0C050F, // 000D GETMET R3 R2 K15 0x5814000A, // 000E LDCONST R5 K10 - 0x8818010B, // 000F GETMBR R6 R0 K11 + 0x88180109, // 000F GETMBR R6 R0 K9 0x7C0C0600, // 0010 CALL R3 3 0x80040400, // 0011 RET 1 R2 }) @@ -850,6 +825,22 @@ be_local_class(Matter_AttributeDataIB, })), be_str_weak(Matter_AttributeDataIB) ); +// compact class 'Matter_AttributeReportIB' ktab size: 12, total: 17 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_AttributeReportIB[12] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(Matter_TLV_struct), + /* K3 */ be_nested_str_weak(add_obj), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(attribute_status), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(attribute_data), + /* K8 */ be_nested_str_weak(AttributeStatusIB), + /* K9 */ be_nested_str_weak(from_TLV), + /* K10 */ be_nested_str_weak(findsub), + /* K11 */ be_nested_str_weak(AttributeDataIB), +}; + extern const bclass be_class_Matter_AttributeReportIB; @@ -860,22 +851,13 @@ be_local_closure(class_Matter_AttributeReportIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(attribute_status), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(attribute_data), - }), + &be_ktab_class_Matter_AttributeReportIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -905,23 +887,13 @@ be_local_closure(class_Matter_AttributeReportIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_status), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(AttributeStatusIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(attribute_data), - /* K7 */ be_nested_str_weak(AttributeDataIB), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_AttributeReportIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -930,24 +902,24 @@ be_local_closure(class_Matter_AttributeReportIB_from_TLV, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0xB80A0200, // 0005 GETNGBL R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 + 0xB80A0000, // 0005 GETNGBL R2 K0 + 0x8C080508, // 0006 GETMET R2 R2 K8 0x7C080200, // 0007 CALL R2 1 - 0x8C080503, // 0008 GETMET R2 R2 K3 - 0x8C100304, // 0009 GETMET R4 R1 K4 - 0x58180005, // 000A LDCONST R6 K5 + 0x8C080509, // 0008 GETMET R2 R2 K9 + 0x8C10030A, // 0009 GETMET R4 R1 K10 + 0x58180004, // 000A LDCONST R6 K4 0x7C100400, // 000B CALL R4 2 0x7C080400, // 000C CALL R2 2 - 0x90020002, // 000D SETMBR R0 K0 R2 - 0xB80A0200, // 000E GETNGBL R2 K1 - 0x8C080507, // 000F GETMET R2 R2 K7 + 0x90020A02, // 000D SETMBR R0 K5 R2 + 0xB80A0000, // 000E GETNGBL R2 K0 + 0x8C08050B, // 000F GETMET R2 R2 K11 0x7C080200, // 0010 CALL R2 1 - 0x8C080503, // 0011 GETMET R2 R2 K3 - 0x8C100304, // 0012 GETMET R4 R1 K4 - 0x58180008, // 0013 LDCONST R6 K8 + 0x8C080509, // 0011 GETMET R2 R2 K9 + 0x8C10030A, // 0012 GETMET R4 R1 K10 + 0x58180006, // 0013 LDCONST R6 K6 0x7C100400, // 0014 CALL R4 2 0x7C080400, // 0015 CALL R2 2 - 0x90020C02, // 0016 SETMBR R0 K6 R2 + 0x90020E02, // 0016 SETMBR R0 K7 R2 0x80040000, // 0017 RET 1 R0 }) ) @@ -971,6 +943,20 @@ be_local_class(Matter_AttributeReportIB, })), be_str_weak(Matter_AttributeReportIB) ); +// compact class 'Matter_EventFilterIB' ktab size: 10, total: 14 (saved 32 bytes) +static const bvalue be_ktab_class_Matter_EventFilterIB[10] = { + /* K0 */ be_nested_str_weak(node), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(event_min), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(TLV), + /* K7 */ be_nested_str_weak(Matter_TLV_struct), + /* K8 */ be_nested_str_weak(add_TLV), + /* K9 */ be_nested_str_weak(U8), +}; + extern const bclass be_class_Matter_EventFilterIB; @@ -981,19 +967,13 @@ be_local_closure(class_Matter_EventFilterIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(node), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(event_min), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_EventFilterIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ @@ -1024,39 +1004,29 @@ be_local_closure(class_Matter_EventFilterIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U8), - /* K6 */ be_nested_str_weak(node), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(event_min), - }), + &be_ktab_class_Matter_EventFilterIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060A00, // 0000 GETNGBL R1 K5 + 0x88040306, // 0001 GETMBR R1 R1 K6 + 0x8C080307, // 0002 GETMET R2 R1 K7 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 + 0x8C0C0508, // 0004 GETMET R3 R2 K8 + 0x58140002, // 0005 LDCONST R5 K2 + 0x88180309, // 0006 GETMBR R6 R1 K9 + 0x881C0100, // 0007 GETMBR R7 R0 K0 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x58140007, // 000A LDCONST R5 K7 - 0x88180305, // 000B GETMBR R6 R1 K5 - 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x8C0C0508, // 0009 GETMET R3 R2 K8 + 0x58140004, // 000A LDCONST R5 K4 + 0x88180309, // 000B GETMBR R6 R1 K9 + 0x881C0103, // 000C GETMBR R7 R0 K3 0x7C0C0800, // 000D CALL R3 4 0x80040400, // 000E RET 1 R2 }) @@ -1081,6 +1051,28 @@ be_local_class(Matter_EventFilterIB, })), be_str_weak(Matter_EventFilterIB) ); +// compact class 'Matter_EventPathIB' ktab size: 18, total: 27 (saved 72 bytes) +static const bvalue be_ktab_class_Matter_EventPathIB[18] = { + /* K0 */ be_nested_str_weak(node), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(endpoint), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(cluster), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(event), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(is_urgent), + /* K10 */ be_nested_str_weak(matter), + /* K11 */ be_nested_str_weak(TLV), + /* K12 */ be_nested_str_weak(Matter_TLV_list), + /* K13 */ be_nested_str_weak(add_TLV), + /* K14 */ be_nested_str_weak(U8), + /* K15 */ be_nested_str_weak(U2), + /* K16 */ be_nested_str_weak(U4), + /* K17 */ be_nested_str_weak(BOOL), +}; + extern const bclass be_class_Matter_EventPathIB; @@ -1091,24 +1083,13 @@ be_local_closure(class_Matter_EventPathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(node), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(endpoint), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(cluster), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(event), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(is_urgent), - }), + &be_ktab_class_Matter_EventPathIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ @@ -1151,66 +1132,48 @@ be_local_closure(class_Matter_EventPathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_list), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U8), - /* K6 */ be_nested_str_weak(node), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(U2), - /* K9 */ be_nested_str_weak(endpoint), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(U4), - /* K12 */ be_nested_str_weak(cluster), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(event), - /* K15 */ be_nested_str_weak(BOOL), - /* K16 */ be_nested_str_weak(is_urgent), - }), + &be_ktab_class_Matter_EventPathIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 + 0xB80A1400, // 0000 GETNGBL R2 K10 + 0x8808050B, // 0001 GETMBR R2 R2 K11 0x4C0C0000, // 0002 LDNIL R3 0x1C0C0203, // 0003 EQ R3 R1 R3 0x780E0002, // 0004 JMPF R3 #0008 - 0x8C0C0502, // 0005 GETMET R3 R2 K2 + 0x8C0C050C, // 0005 GETMET R3 R2 K12 0x7C0C0200, // 0006 CALL R3 1 0x5C040600, // 0007 MOVE R1 R3 - 0x8C0C0303, // 0008 GETMET R3 R1 K3 - 0x58140004, // 0009 LDCONST R5 K4 - 0x88180505, // 000A GETMBR R6 R2 K5 - 0x881C0106, // 000B GETMBR R7 R0 K6 + 0x8C0C030D, // 0008 GETMET R3 R1 K13 + 0x58140002, // 0009 LDCONST R5 K2 + 0x8818050E, // 000A GETMBR R6 R2 K14 + 0x881C0100, // 000B GETMBR R7 R0 K0 0x7C0C0800, // 000C CALL R3 4 - 0x8C0C0303, // 000D GETMET R3 R1 K3 - 0x58140007, // 000E LDCONST R5 K7 - 0x88180508, // 000F GETMBR R6 R2 K8 - 0x881C0109, // 0010 GETMBR R7 R0 K9 + 0x8C0C030D, // 000D GETMET R3 R1 K13 + 0x58140004, // 000E LDCONST R5 K4 + 0x8818050F, // 000F GETMBR R6 R2 K15 + 0x881C0103, // 0010 GETMBR R7 R0 K3 0x7C0C0800, // 0011 CALL R3 4 - 0x8C0C0303, // 0012 GETMET R3 R1 K3 - 0x5814000A, // 0013 LDCONST R5 K10 - 0x8818050B, // 0014 GETMBR R6 R2 K11 - 0x881C010C, // 0015 GETMBR R7 R0 K12 + 0x8C0C030D, // 0012 GETMET R3 R1 K13 + 0x58140006, // 0013 LDCONST R5 K6 + 0x88180510, // 0014 GETMBR R6 R2 K16 + 0x881C0105, // 0015 GETMBR R7 R0 K5 0x7C0C0800, // 0016 CALL R3 4 - 0x8C0C0303, // 0017 GETMET R3 R1 K3 - 0x5814000D, // 0018 LDCONST R5 K13 - 0x8818050B, // 0019 GETMBR R6 R2 K11 - 0x881C010E, // 001A GETMBR R7 R0 K14 + 0x8C0C030D, // 0017 GETMET R3 R1 K13 + 0x58140008, // 0018 LDCONST R5 K8 + 0x88180510, // 0019 GETMBR R6 R2 K16 + 0x881C0107, // 001A GETMBR R7 R0 K7 0x7C0C0800, // 001B CALL R3 4 - 0x8C0C0303, // 001C GETMET R3 R1 K3 + 0x8C0C030D, // 001C GETMET R3 R1 K13 0x54160003, // 001D LDINT R5 4 - 0x8818050F, // 001E GETMBR R6 R2 K15 - 0x881C0110, // 001F GETMBR R7 R0 K16 + 0x88180511, // 001E GETMBR R6 R2 K17 + 0x881C0109, // 001F GETMBR R7 R0 K9 0x7C0C0800, // 0020 CALL R3 4 0x80040200, // 0021 RET 1 R1 }) @@ -1238,6 +1201,35 @@ be_local_class(Matter_EventPathIB, })), be_str_weak(Matter_EventPathIB) ); +// compact class 'Matter_EventDataIB' ktab size: 25, total: 38 (saved 104 bytes) +static const bvalue be_ktab_class_Matter_EventDataIB[25] = { + /* K0 */ be_nested_str_weak(path), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(EventPathIB), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(findsub), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(event_number), + /* K7 */ be_nested_str_weak(findsubval), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(priority), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(epoch_timestamp), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str_weak(system_timestamp), + /* K14 */ be_nested_str_weak(delta_epoch_timestamp), + /* K15 */ be_nested_str_weak(delta_system_timestamp), + /* K16 */ be_nested_str_weak(data), + /* K17 */ be_nested_str_weak(TLV), + /* K18 */ be_nested_str_weak(Matter_TLV_struct), + /* K19 */ be_nested_str_weak(to_TLV), + /* K20 */ be_nested_str_weak(add_list), + /* K21 */ be_nested_str_weak(add_TLV), + /* K22 */ be_nested_str_weak(U8), + /* K23 */ be_nested_str_weak(U1), + /* K24 */ be_nested_str_weak(add_obj), +}; + extern const bclass be_class_Matter_EventDataIB; @@ -1248,31 +1240,13 @@ be_local_closure(class_Matter_EventDataIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(path), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(EventPathIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(event_number), - /* K7 */ be_nested_str_weak(findsubval), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(priority), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(epoch_timestamp), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(system_timestamp), - /* K14 */ be_nested_str_weak(delta_epoch_timestamp), - /* K15 */ be_nested_str_weak(delta_system_timestamp), - /* K16 */ be_nested_str_weak(data), - }), + &be_ktab_class_Matter_EventDataIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ @@ -1332,87 +1306,65 @@ be_local_closure(class_Matter_EventDataIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(path), - /* K4 */ be_nested_str_weak(to_TLV), - /* K5 */ be_nested_str_weak(add_list), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(add_TLV), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(U8), - /* K10 */ be_nested_str_weak(event_number), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(U1), - /* K13 */ be_nested_str_weak(priority), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(epoch_timestamp), - /* K16 */ be_nested_str_weak(system_timestamp), - /* K17 */ be_nested_str_weak(delta_epoch_timestamp), - /* K18 */ be_nested_str_weak(delta_system_timestamp), - /* K19 */ be_nested_str_weak(add_obj), - /* K20 */ be_nested_str_weak(data), - }), + &be_ktab_class_Matter_EventDataIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[51]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 + 0xB80A0200, // 0000 GETNGBL R2 K1 + 0x88080511, // 0001 GETMBR R2 R2 K17 0x4C0C0000, // 0002 LDNIL R3 0x1C0C0203, // 0003 EQ R3 R1 R3 0x780E0002, // 0004 JMPF R3 #0008 - 0x8C0C0502, // 0005 GETMET R3 R2 K2 + 0x8C0C0512, // 0005 GETMET R3 R2 K18 0x7C0C0200, // 0006 CALL R3 1 0x5C040600, // 0007 MOVE R1 R3 - 0x880C0103, // 0008 GETMBR R3 R0 K3 + 0x880C0100, // 0008 GETMBR R3 R0 K0 0x780E0005, // 0009 JMPF R3 #0010 - 0x880C0103, // 000A GETMBR R3 R0 K3 - 0x8C0C0704, // 000B GETMET R3 R3 K4 - 0x8C140305, // 000C GETMET R5 R1 K5 - 0x581C0006, // 000D LDCONST R7 K6 + 0x880C0100, // 000A GETMBR R3 R0 K0 + 0x8C0C0713, // 000B GETMET R3 R3 K19 + 0x8C140314, // 000C GETMET R5 R1 K20 + 0x581C0005, // 000D LDCONST R7 K5 0x7C140400, // 000E CALL R5 2 0x7C0C0400, // 000F CALL R3 2 - 0x8C0C0307, // 0010 GETMET R3 R1 K7 + 0x8C0C0315, // 0010 GETMET R3 R1 K21 0x58140008, // 0011 LDCONST R5 K8 - 0x88180509, // 0012 GETMBR R6 R2 K9 - 0x881C010A, // 0013 GETMBR R7 R0 K10 + 0x88180516, // 0012 GETMBR R6 R2 K22 + 0x881C0106, // 0013 GETMBR R7 R0 K6 0x7C0C0800, // 0014 CALL R3 4 - 0x8C0C0307, // 0015 GETMET R3 R1 K7 - 0x5814000B, // 0016 LDCONST R5 K11 - 0x8818050C, // 0017 GETMBR R6 R2 K12 - 0x881C010D, // 0018 GETMBR R7 R0 K13 + 0x8C0C0315, // 0015 GETMET R3 R1 K21 + 0x5814000A, // 0016 LDCONST R5 K10 + 0x88180517, // 0017 GETMBR R6 R2 K23 + 0x881C0109, // 0018 GETMBR R7 R0 K9 0x7C0C0800, // 0019 CALL R3 4 - 0x8C0C0307, // 001A GETMET R3 R1 K7 - 0x5814000E, // 001B LDCONST R5 K14 - 0x88180509, // 001C GETMBR R6 R2 K9 - 0x881C010F, // 001D GETMBR R7 R0 K15 + 0x8C0C0315, // 001A GETMET R3 R1 K21 + 0x5814000C, // 001B LDCONST R5 K12 + 0x88180516, // 001C GETMBR R6 R2 K22 + 0x881C010B, // 001D GETMBR R7 R0 K11 0x7C0C0800, // 001E CALL R3 4 - 0x8C0C0307, // 001F GETMET R3 R1 K7 + 0x8C0C0315, // 001F GETMET R3 R1 K21 0x54160003, // 0020 LDINT R5 4 - 0x88180509, // 0021 GETMBR R6 R2 K9 - 0x881C0110, // 0022 GETMBR R7 R0 K16 + 0x88180516, // 0021 GETMBR R6 R2 K22 + 0x881C010D, // 0022 GETMBR R7 R0 K13 0x7C0C0800, // 0023 CALL R3 4 - 0x8C0C0307, // 0024 GETMET R3 R1 K7 + 0x8C0C0315, // 0024 GETMET R3 R1 K21 0x54160004, // 0025 LDINT R5 5 - 0x88180509, // 0026 GETMBR R6 R2 K9 - 0x881C0111, // 0027 GETMBR R7 R0 K17 + 0x88180516, // 0026 GETMBR R6 R2 K22 + 0x881C010E, // 0027 GETMBR R7 R0 K14 0x7C0C0800, // 0028 CALL R3 4 - 0x8C0C0307, // 0029 GETMET R3 R1 K7 + 0x8C0C0315, // 0029 GETMET R3 R1 K21 0x54160005, // 002A LDINT R5 6 - 0x88180509, // 002B GETMBR R6 R2 K9 - 0x881C0112, // 002C GETMBR R7 R0 K18 + 0x88180516, // 002B GETMBR R6 R2 K22 + 0x881C010F, // 002C GETMBR R7 R0 K15 0x7C0C0800, // 002D CALL R3 4 - 0x8C0C0313, // 002E GETMET R3 R1 K19 + 0x8C0C0318, // 002E GETMET R3 R1 K24 0x54160006, // 002F LDINT R5 7 - 0x88180114, // 0030 GETMBR R6 R0 K20 + 0x88180110, // 0030 GETMBR R6 R0 K16 0x7C0C0600, // 0031 CALL R3 3 0x80040200, // 0032 RET 1 R1 }) @@ -1443,6 +1395,22 @@ be_local_class(Matter_EventDataIB, })), be_str_weak(Matter_EventDataIB) ); +// compact class 'Matter_EventReportIB' ktab size: 12, total: 17 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_EventReportIB[12] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(Matter_TLV_struct), + /* K3 */ be_nested_str_weak(add_obj), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(event_status), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(event_data), + /* K8 */ be_nested_str_weak(EventStatusIB), + /* K9 */ be_nested_str_weak(from_TLV), + /* K10 */ be_nested_str_weak(findsub), + /* K11 */ be_nested_str_weak(EventDataIB), +}; + extern const bclass be_class_Matter_EventReportIB; @@ -1453,22 +1421,13 @@ be_local_closure(class_Matter_EventReportIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(event_status), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(event_data), - }), + &be_ktab_class_Matter_EventReportIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -1498,23 +1457,13 @@ be_local_closure(class_Matter_EventReportIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(event_status), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(EventStatusIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(event_data), - /* K7 */ be_nested_str_weak(EventDataIB), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_EventReportIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -1523,24 +1472,24 @@ be_local_closure(class_Matter_EventReportIB_from_TLV, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0xB80A0200, // 0005 GETNGBL R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 + 0xB80A0000, // 0005 GETNGBL R2 K0 + 0x8C080508, // 0006 GETMET R2 R2 K8 0x7C080200, // 0007 CALL R2 1 - 0x8C080503, // 0008 GETMET R2 R2 K3 - 0x8C100304, // 0009 GETMET R4 R1 K4 - 0x58180005, // 000A LDCONST R6 K5 + 0x8C080509, // 0008 GETMET R2 R2 K9 + 0x8C10030A, // 0009 GETMET R4 R1 K10 + 0x58180004, // 000A LDCONST R6 K4 0x7C100400, // 000B CALL R4 2 0x7C080400, // 000C CALL R2 2 - 0x90020002, // 000D SETMBR R0 K0 R2 - 0xB80A0200, // 000E GETNGBL R2 K1 - 0x8C080507, // 000F GETMET R2 R2 K7 + 0x90020A02, // 000D SETMBR R0 K5 R2 + 0xB80A0000, // 000E GETNGBL R2 K0 + 0x8C08050B, // 000F GETMET R2 R2 K11 0x7C080200, // 0010 CALL R2 1 - 0x8C080503, // 0011 GETMET R2 R2 K3 - 0x8C100304, // 0012 GETMET R4 R1 K4 - 0x58180008, // 0013 LDCONST R6 K8 + 0x8C080509, // 0011 GETMET R2 R2 K9 + 0x8C10030A, // 0012 GETMET R4 R1 K10 + 0x58180006, // 0013 LDCONST R6 K6 0x7C100400, // 0014 CALL R4 2 0x7C080400, // 0015 CALL R2 2 - 0x90020C02, // 0016 SETMBR R0 K6 R2 + 0x90020E02, // 0016 SETMBR R0 K7 R2 0x80040000, // 0017 RET 1 R0 }) ) @@ -1564,6 +1513,23 @@ be_local_class(Matter_EventReportIB, })), be_str_weak(Matter_EventReportIB) ); +// compact class 'Matter_CommandPathIB' ktab size: 13, total: 19 (saved 48 bytes) +static const bvalue be_ktab_class_Matter_CommandPathIB[13] = { + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(command), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(TLV), + /* K9 */ be_nested_str_weak(Matter_TLV_list), + /* K10 */ be_nested_str_weak(add_TLV), + /* K11 */ be_nested_str_weak(U2), + /* K12 */ be_nested_str_weak(U4), +}; + extern const bclass be_class_Matter_CommandPathIB; @@ -1574,21 +1540,13 @@ be_local_closure(class_Matter_CommandPathIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(command), - /* K6 */ be_const_int(2), - }), + &be_ktab_class_Matter_CommandPathIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -1623,47 +1581,34 @@ be_local_closure(class_Matter_CommandPathIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_list), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U2), - /* K6 */ be_nested_str_weak(endpoint), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(U4), - /* K9 */ be_nested_str_weak(cluster), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(command), - }), + &be_ktab_class_Matter_CommandPathIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060E00, // 0000 GETNGBL R1 K7 + 0x88040308, // 0001 GETMBR R1 R1 K8 + 0x8C080309, // 0002 GETMET R2 R1 K9 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 + 0x8C0C050A, // 0004 GETMET R3 R2 K10 + 0x58140002, // 0005 LDCONST R5 K2 + 0x8818030B, // 0006 GETMBR R6 R1 K11 + 0x881C0100, // 0007 GETMBR R7 R0 K0 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x58140007, // 000A LDCONST R5 K7 - 0x88180308, // 000B GETMBR R6 R1 K8 - 0x881C0109, // 000C GETMBR R7 R0 K9 + 0x8C0C050A, // 0009 GETMET R3 R2 K10 + 0x58140004, // 000A LDCONST R5 K4 + 0x8818030C, // 000B GETMBR R6 R1 K12 + 0x881C0103, // 000C GETMBR R7 R0 K3 0x7C0C0800, // 000D CALL R3 4 - 0x8C0C0503, // 000E GETMET R3 R2 K3 - 0x5814000A, // 000F LDCONST R5 K10 - 0x88180308, // 0010 GETMBR R6 R1 K8 - 0x881C010B, // 0011 GETMBR R7 R0 K11 + 0x8C0C050A, // 000E GETMET R3 R2 K10 + 0x58140006, // 000F LDCONST R5 K6 + 0x8818030C, // 0010 GETMBR R6 R1 K12 + 0x881C0105, // 0011 GETMBR R7 R0 K5 0x7C0C0800, // 0012 CALL R3 4 0x80040400, // 0013 RET 1 R2 }) @@ -1689,6 +1634,21 @@ be_local_class(Matter_CommandPathIB, })), be_str_weak(Matter_CommandPathIB) ); +// compact class 'Matter_CommandDataIB' ktab size: 11, total: 16 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_CommandDataIB[11] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(Matter_TLV_struct), + /* K3 */ be_nested_str_weak(add_obj), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(command_path), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(command_fields), + /* K8 */ be_nested_str_weak(CommandPathIB), + /* K9 */ be_nested_str_weak(from_TLV), + /* K10 */ be_nested_str_weak(findsub), +}; + extern const bclass be_class_Matter_CommandDataIB; @@ -1699,22 +1659,13 @@ be_local_closure(class_Matter_CommandDataIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(command_path), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(command_fields), - }), + &be_ktab_class_Matter_CommandDataIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -1744,22 +1695,13 @@ be_local_closure(class_Matter_CommandDataIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(command_path), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(CommandPathIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(command_fields), - /* K7 */ be_const_int(1), - }), + &be_ktab_class_Matter_CommandDataIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ @@ -1768,19 +1710,19 @@ be_local_closure(class_Matter_CommandDataIB_from_TLV, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0xB80A0200, // 0005 GETNGBL R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 + 0xB80A0000, // 0005 GETNGBL R2 K0 + 0x8C080508, // 0006 GETMET R2 R2 K8 0x7C080200, // 0007 CALL R2 1 - 0x8C080503, // 0008 GETMET R2 R2 K3 - 0x8C100304, // 0009 GETMET R4 R1 K4 - 0x58180005, // 000A LDCONST R6 K5 + 0x8C080509, // 0008 GETMET R2 R2 K9 + 0x8C10030A, // 0009 GETMET R4 R1 K10 + 0x58180004, // 000A LDCONST R6 K4 0x7C100400, // 000B CALL R4 2 0x7C080400, // 000C CALL R2 2 - 0x90020002, // 000D SETMBR R0 K0 R2 - 0x8C080304, // 000E GETMET R2 R1 K4 - 0x58100007, // 000F LDCONST R4 K7 + 0x90020A02, // 000D SETMBR R0 K5 R2 + 0x8C08030A, // 000E GETMET R2 R1 K10 + 0x58100006, // 000F LDCONST R4 K6 0x7C080400, // 0010 CALL R2 2 - 0x90020C02, // 0011 SETMBR R0 K6 R2 + 0x90020E02, // 0011 SETMBR R0 K7 R2 0x80040000, // 0012 RET 1 R0 }) ) @@ -1804,6 +1746,22 @@ be_local_class(Matter_CommandDataIB, })), be_str_weak(Matter_CommandDataIB) ); +// compact class 'Matter_InvokeResponseIB' ktab size: 12, total: 17 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_InvokeResponseIB[12] = { + /* K0 */ be_nested_str_weak(command), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(CommandDataIB), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(findsub), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_nested_str_weak(CommandStatusIB), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(TLV), + /* K10 */ be_nested_str_weak(Matter_TLV_struct), + /* K11 */ be_nested_str_weak(add_obj), +}; + extern const bclass be_class_Matter_InvokeResponseIB; @@ -1814,23 +1772,13 @@ be_local_closure(class_Matter_InvokeResponseIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(command), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(CommandDataIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(CommandStatusIB), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_InvokeResponseIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -1871,36 +1819,27 @@ be_local_closure(class_Matter_InvokeResponseIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(command), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(status), - }), + &be_ktab_class_Matter_InvokeResponseIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060200, // 0000 GETNGBL R1 K1 + 0x88040309, // 0001 GETMBR R1 R1 K9 + 0x8C08030A, // 0002 GETMET R2 R1 K10 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180105, // 0006 GETMBR R6 R0 K5 + 0x8C0C050B, // 0004 GETMET R3 R2 K11 + 0x58140005, // 0005 LDCONST R5 K5 + 0x88180100, // 0006 GETMBR R6 R0 K0 0x7C0C0600, // 0007 CALL R3 3 - 0x8C0C0503, // 0008 GETMET R3 R2 K3 - 0x58140006, // 0009 LDCONST R5 K6 - 0x88180107, // 000A GETMBR R6 R0 K7 + 0x8C0C050B, // 0008 GETMET R3 R2 K11 + 0x58140008, // 0009 LDCONST R5 K8 + 0x88180106, // 000A GETMBR R6 R0 K6 0x7C0C0600, // 000B CALL R3 3 0x80040400, // 000C RET 1 R2 }) @@ -1925,6 +1864,22 @@ be_local_class(Matter_InvokeResponseIB, })), be_str_weak(Matter_InvokeResponseIB) ); +// compact class 'Matter_CommandStatusIB' ktab size: 12, total: 17 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_CommandStatusIB[12] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(Matter_TLV_struct), + /* K3 */ be_nested_str_weak(add_obj), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(command_path), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(status), + /* K8 */ be_nested_str_weak(CommandPathIB), + /* K9 */ be_nested_str_weak(from_TLV), + /* K10 */ be_nested_str_weak(findsub), + /* K11 */ be_nested_str_weak(StatusIB), +}; + extern const bclass be_class_Matter_CommandStatusIB; @@ -1935,22 +1890,13 @@ be_local_closure(class_Matter_CommandStatusIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(command_path), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(status), - }), + &be_ktab_class_Matter_CommandStatusIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -1980,23 +1926,13 @@ be_local_closure(class_Matter_CommandStatusIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(command_path), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(CommandPathIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(StatusIB), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_CommandStatusIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -2005,24 +1941,24 @@ be_local_closure(class_Matter_CommandStatusIB_from_TLV, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0xB80A0200, // 0005 GETNGBL R2 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 + 0xB80A0000, // 0005 GETNGBL R2 K0 + 0x8C080508, // 0006 GETMET R2 R2 K8 0x7C080200, // 0007 CALL R2 1 - 0x8C080503, // 0008 GETMET R2 R2 K3 - 0x8C100304, // 0009 GETMET R4 R1 K4 - 0x58180005, // 000A LDCONST R6 K5 + 0x8C080509, // 0008 GETMET R2 R2 K9 + 0x8C10030A, // 0009 GETMET R4 R1 K10 + 0x58180004, // 000A LDCONST R6 K4 0x7C100400, // 000B CALL R4 2 0x7C080400, // 000C CALL R2 2 - 0x90020002, // 000D SETMBR R0 K0 R2 - 0xB80A0200, // 000E GETNGBL R2 K1 - 0x8C080507, // 000F GETMET R2 R2 K7 + 0x90020A02, // 000D SETMBR R0 K5 R2 + 0xB80A0000, // 000E GETNGBL R2 K0 + 0x8C08050B, // 000F GETMET R2 R2 K11 0x7C080200, // 0010 CALL R2 1 - 0x8C080503, // 0011 GETMET R2 R2 K3 - 0x8C100304, // 0012 GETMET R4 R1 K4 - 0x58180008, // 0013 LDCONST R6 K8 + 0x8C080509, // 0011 GETMET R2 R2 K9 + 0x8C10030A, // 0012 GETMET R4 R1 K10 + 0x58180006, // 0013 LDCONST R6 K6 0x7C100400, // 0014 CALL R4 2 0x7C080400, // 0015 CALL R2 2 - 0x90020C02, // 0016 SETMBR R0 K6 R2 + 0x90020E02, // 0016 SETMBR R0 K7 R2 0x80040000, // 0017 RET 1 R0 }) ) @@ -2046,6 +1982,22 @@ be_local_class(Matter_CommandStatusIB, })), be_str_weak(Matter_CommandStatusIB) ); +// compact class 'Matter_EventStatusIB' ktab size: 12, total: 17 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_EventStatusIB[12] = { + /* K0 */ be_nested_str_weak(path), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(EventPathIB), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(findsub), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_nested_str_weak(StatusIB), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(TLV), + /* K10 */ be_nested_str_weak(Matter_TLV_struct), + /* K11 */ be_nested_str_weak(add_obj), +}; + extern const bclass be_class_Matter_EventStatusIB; @@ -2056,23 +2008,13 @@ be_local_closure(class_Matter_EventStatusIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(path), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(EventPathIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(StatusIB), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_EventStatusIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -2113,36 +2055,27 @@ be_local_closure(class_Matter_EventStatusIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(path), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(status), - }), + &be_ktab_class_Matter_EventStatusIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060200, // 0000 GETNGBL R1 K1 + 0x88040309, // 0001 GETMBR R1 R1 K9 + 0x8C08030A, // 0002 GETMET R2 R1 K10 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180105, // 0006 GETMBR R6 R0 K5 + 0x8C0C050B, // 0004 GETMET R3 R2 K11 + 0x58140005, // 0005 LDCONST R5 K5 + 0x88180100, // 0006 GETMBR R6 R0 K0 0x7C0C0600, // 0007 CALL R3 3 - 0x8C0C0503, // 0008 GETMET R3 R2 K3 - 0x58140006, // 0009 LDCONST R5 K6 - 0x88180107, // 000A GETMBR R6 R0 K7 + 0x8C0C050B, // 0008 GETMET R3 R2 K11 + 0x58140008, // 0009 LDCONST R5 K8 + 0x88180106, // 000A GETMBR R6 R0 K6 0x7C0C0600, // 000B CALL R3 3 0x80040400, // 000C RET 1 R2 }) @@ -2167,6 +2100,22 @@ be_local_class(Matter_EventStatusIB, })), be_str_weak(Matter_EventStatusIB) ); +// compact class 'Matter_AttributeStatusIB' ktab size: 12, total: 17 (saved 40 bytes) +static const bvalue be_ktab_class_Matter_AttributeStatusIB[12] = { + /* K0 */ be_nested_str_weak(path), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(AttributePathIB), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(findsub), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_nested_str_weak(StatusIB), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(TLV), + /* K10 */ be_nested_str_weak(Matter_TLV_struct), + /* K11 */ be_nested_str_weak(add_obj), +}; + extern const bclass be_class_Matter_AttributeStatusIB; @@ -2177,23 +2126,13 @@ be_local_closure(class_Matter_AttributeStatusIB_from_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(path), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(AttributePathIB), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(findsub), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(StatusIB), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_Matter_AttributeStatusIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -2234,36 +2173,27 @@ be_local_closure(class_Matter_AttributeStatusIB_to_TLV, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_obj), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(path), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(status), - }), + &be_ktab_class_Matter_AttributeStatusIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060200, // 0000 GETNGBL R1 K1 + 0x88040309, // 0001 GETMBR R1 R1 K9 + 0x8C08030A, // 0002 GETMET R2 R1 K10 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180105, // 0006 GETMBR R6 R0 K5 + 0x8C0C050B, // 0004 GETMET R3 R2 K11 + 0x58140005, // 0005 LDCONST R5 K5 + 0x88180100, // 0006 GETMBR R6 R0 K0 0x7C0C0600, // 0007 CALL R3 3 - 0x8C0C0503, // 0008 GETMET R3 R2 K3 - 0x58140006, // 0009 LDCONST R5 K6 - 0x88180107, // 000A GETMBR R6 R0 K7 + 0x8C0C050B, // 0008 GETMET R3 R2 K11 + 0x58140008, // 0009 LDCONST R5 K8 + 0x88180106, // 000A GETMBR R6 R0 K6 0x7C0C0600, // 000B CALL R3 3 0x80040400, // 000C RET 1 R2 }) @@ -2288,6 +2218,20 @@ be_local_class(Matter_AttributeStatusIB, })), be_str_weak(Matter_AttributeStatusIB) ); +// compact class 'Matter_StatusIB' ktab size: 10, total: 14 (saved 32 bytes) +static const bvalue be_ktab_class_Matter_StatusIB[10] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(Matter_TLV_struct), + /* K3 */ be_nested_str_weak(add_TLV), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(U2), + /* K6 */ be_nested_str_weak(status), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(cluster_status), + /* K9 */ be_nested_str_weak(findsubval), +}; + extern const bclass be_class_Matter_StatusIB; @@ -2298,23 +2242,13 @@ be_local_closure(class_Matter_StatusIB_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U2), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(cluster_status), - }), + &be_ktab_class_Matter_StatusIB, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -2346,19 +2280,13 @@ be_local_closure(class_Matter_StatusIB_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(status), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(cluster_status), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_StatusIB, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ @@ -2367,14 +2295,14 @@ be_local_closure(class_Matter_StatusIB_from_TLV, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 + 0x8C080309, // 0005 GETMET R2 R1 K9 + 0x58100004, // 0006 LDCONST R4 K4 0x7C080400, // 0007 CALL R2 2 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x8C080301, // 0009 GETMET R2 R1 K1 - 0x58100004, // 000A LDCONST R4 K4 + 0x90020C02, // 0008 SETMBR R0 K6 R2 + 0x8C080309, // 0009 GETMET R2 R1 K9 + 0x58100007, // 000A LDCONST R4 K7 0x7C080400, // 000B CALL R2 2 - 0x90020602, // 000C SETMBR R0 K3 R2 + 0x90021002, // 000C SETMBR R0 K8 R2 0x80040000, // 000D RET 1 R0 }) ) @@ -2398,6 +2326,20 @@ be_local_class(Matter_StatusIB, })), be_str_weak(Matter_StatusIB) ); +// compact class 'Matter_StatusResponseMessage' ktab size: 10, total: 12 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_StatusResponseMessage[10] = { + /* K0 */ be_nested_str_weak(status), + /* K1 */ be_nested_str_weak(findsubval), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(matter), + /* K4 */ be_nested_str_weak(TLV), + /* K5 */ be_nested_str_weak(Matter_TLV_struct), + /* K6 */ be_nested_str_weak(add_TLV), + /* K7 */ be_nested_str_weak(U4), + /* K8 */ be_nested_str_weak(U1), + /* K9 */ be_nested_str_weak(InteractionModelRevision), +}; + extern const bclass be_class_Matter_StatusResponseMessage; @@ -2408,17 +2350,13 @@ be_local_closure(class_Matter_StatusResponseMessage_from_TLV, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(status), - /* K1 */ be_nested_str_weak(findsubval), - /* K2 */ be_const_int(0), - }), + &be_ktab_class_Matter_StatusResponseMessage, /* shared constants */ be_str_weak(from_TLV), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -2445,39 +2383,29 @@ be_local_closure(class_Matter_StatusResponseMessage_to_TLV, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_struct), - /* K3 */ be_nested_str_weak(add_TLV), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(U4), - /* K6 */ be_nested_str_weak(status), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(InteractionModelRevision), - }), + &be_ktab_class_Matter_StatusResponseMessage, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 + 0xB8060600, // 0000 GETNGBL R1 K3 + 0x88040304, // 0001 GETMBR R1 R1 K4 + 0x8C080305, // 0002 GETMET R2 R1 K5 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x58140004, // 0005 LDCONST R5 K4 - 0x88180305, // 0006 GETMBR R6 R1 K5 - 0x881C0106, // 0007 GETMBR R7 R0 K6 + 0x8C0C0506, // 0004 GETMET R3 R2 K6 + 0x58140002, // 0005 LDCONST R5 K2 + 0x88180307, // 0006 GETMBR R6 R1 K7 + 0x881C0100, // 0007 GETMBR R7 R0 K0 0x7C0C0800, // 0008 CALL R3 4 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 + 0x8C0C0506, // 0009 GETMET R3 R2 K6 0x541600FE, // 000A LDINT R5 255 - 0x88180307, // 000B GETMBR R6 R1 K7 - 0x881C0108, // 000C GETMBR R7 R0 K8 + 0x88180308, // 000B GETMBR R6 R1 K8 + 0x881C0109, // 000C GETMBR R7 R0 K9 0x7C0C0800, // 000D CALL R3 4 0x80040400, // 000E RET 1 R2 }) @@ -3358,6 +3286,27 @@ be_local_class(Matter_InvokeRequestMessage, })), be_str_weak(Matter_InvokeRequestMessage) ); +// compact class 'Matter_InvokeRequestMessage_solo' ktab size: 17, total: 20 (saved 24 bytes) +static const bvalue be_ktab_class_Matter_InvokeRequestMessage_solo[17] = { + /* K0 */ be_nested_str_weak(reset), + /* K1 */ be_nested_str_weak(SuppressResponse), + /* K2 */ be_nested_str_weak(TimedRequest), + /* K3 */ be_nested_str_weak(command_fields), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_const_int(1), + /* K6 */ be_const_int(2), + /* K7 */ be_const_int(3), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(endpoint), + /* K10 */ be_nested_str_weak(cluster), + /* K11 */ be_nested_str_weak(command), + /* K12 */ be_nested_str_weak(matter), + /* K13 */ be_nested_str_weak(TLV), + /* K14 */ be_nested_str_weak(parse), + /* K15 */ be_nested_str_weak(next_idx), + /* K16 */ be_const_int(620691736), +}; + extern const bclass be_class_Matter_InvokeRequestMessage_solo; @@ -3368,18 +3317,13 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_reset, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(SuppressResponse), - /* K2 */ be_nested_str_weak(TimedRequest), - /* K3 */ be_nested_str_weak(command_fields), - }), + &be_ktab_class_Matter_InvokeRequestMessage_solo, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -3406,30 +3350,13 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(get), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(SuppressResponse), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(3), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(command), - /* K10 */ be_nested_str_weak(command_fields), - /* K11 */ be_nested_str_weak(matter), - /* K12 */ be_nested_str_weak(TLV), - /* K13 */ be_nested_str_weak(parse), - /* K14 */ be_nested_str_weak(next_idx), - /* K15 */ be_const_int(620691736), - }), + &be_ktab_class_Matter_InvokeRequestMessage_solo, /* shared constants */ be_str_weak(from_raw), &be_const_str_solidified, ( &(const binstruction[170]) { /* code */ @@ -3439,17 +3366,17 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0x5C100200, // 0003 MOVE R4 R1 0x7C0C0200, // 0004 CALL R3 1 0x4C100000, // 0005 LDNIL R4 - 0x8C140301, // 0006 GETMET R5 R1 K1 + 0x8C140304, // 0006 GETMET R5 R1 K4 0x5C1C0400, // 0007 MOVE R7 R2 - 0x58200002, // 0008 LDCONST R8 K2 + 0x58200005, // 0008 LDCONST R8 K5 0x7C140600, // 0009 CALL R5 3 0x541A0014, // 000A LDINT R6 21 0x20140A06, // 000B NE R5 R5 R6 0x78160001, // 000C JMPF R5 #000F 0x4C140000, // 000D LDNIL R5 0x80040A00, // 000E RET 1 R5 - 0x00080502, // 000F ADD R2 R2 K2 - 0x8C140301, // 0010 GETMET R5 R1 K1 + 0x00080505, // 000F ADD R2 R2 K5 + 0x8C140304, // 0010 GETMET R5 R1 K4 0x5C1C0400, // 0011 MOVE R7 R2 0x5421FFFD, // 0012 LDINT R8 -2 0x7C140600, // 0013 CALL R5 3 @@ -3462,9 +3389,9 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0x78160003, // 001A JMPF R5 #001F 0x541628FF, // 001B LDINT R5 10496 0x1C140805, // 001C EQ R5 R4 R5 - 0x90020605, // 001D SETMBR R0 K3 R5 - 0x00080504, // 001E ADD R2 R2 K4 - 0x8C140301, // 001F GETMET R5 R1 K1 + 0x90020205, // 001D SETMBR R0 K1 R5 + 0x00080506, // 001E ADD R2 R2 K6 + 0x8C140304, // 001F GETMET R5 R1 K4 0x5C1C0400, // 0020 MOVE R7 R2 0x5421FFFD, // 0021 LDINT R8 -2 0x7C140600, // 0022 CALL R5 3 @@ -3477,9 +3404,9 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0x78160003, // 0029 JMPF R5 #002E 0x54162900, // 002A LDINT R5 10497 0x1C140805, // 002B EQ R5 R4 R5 - 0x90020605, // 002C SETMBR R0 K3 R5 - 0x00080504, // 002D ADD R2 R2 K4 - 0x8C140301, // 002E GETMET R5 R1 K1 + 0x90020205, // 002C SETMBR R0 K1 R5 + 0x00080506, // 002D ADD R2 R2 K6 + 0x8C140304, // 002E GETMET R5 R1 K4 0x5C1C0400, // 002F MOVE R7 R2 0x5421FFFD, // 0030 LDINT R8 -2 0x7C140600, // 0031 CALL R5 3 @@ -3488,18 +3415,18 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0x78160001, // 0034 JMPF R5 #0037 0x4C140000, // 0035 LDNIL R5 0x80040A00, // 0036 RET 1 R5 - 0x00080504, // 0037 ADD R2 R2 K4 - 0x8C140301, // 0038 GETMET R5 R1 K1 + 0x00080506, // 0037 ADD R2 R2 K6 + 0x8C140304, // 0038 GETMET R5 R1 K4 0x5C1C0400, // 0039 MOVE R7 R2 - 0x58200002, // 003A LDCONST R8 K2 + 0x58200005, // 003A LDCONST R8 K5 0x7C140600, // 003B CALL R5 3 0x541A0014, // 003C LDINT R6 21 0x20140A06, // 003D NE R5 R5 R6 0x78160001, // 003E JMPF R5 #0041 0x4C140000, // 003F LDNIL R5 0x80040A00, // 0040 RET 1 R5 - 0x00080502, // 0041 ADD R2 R2 K2 - 0x8C140301, // 0042 GETMET R5 R1 K1 + 0x00080505, // 0041 ADD R2 R2 K5 + 0x8C140304, // 0042 GETMET R5 R1 K4 0x5C1C0400, // 0043 MOVE R7 R2 0x5421FFFD, // 0044 LDINT R8 -2 0x7C140600, // 0045 CALL R5 3 @@ -3508,65 +3435,65 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0x78160001, // 0048 JMPF R5 #004B 0x4C140000, // 0049 LDNIL R5 0x80040A00, // 004A RET 1 R5 - 0x00080504, // 004B ADD R2 R2 K4 + 0x00080506, // 004B ADD R2 R2 K6 0x14140403, // 004C LT R5 R2 R3 0x7816002C, // 004D JMPF R5 #007B - 0x8C140301, // 004E GETMET R5 R1 K1 - 0x001C0502, // 004F ADD R7 R2 K2 - 0x58200002, // 0050 LDCONST R8 K2 + 0x8C140304, // 004E GETMET R5 R1 K4 + 0x001C0505, // 004F ADD R7 R2 K5 + 0x58200005, // 0050 LDCONST R8 K5 0x7C140600, // 0051 CALL R5 3 - 0x8C180301, // 0052 GETMET R6 R1 K1 + 0x8C180304, // 0052 GETMET R6 R1 K4 0x5C200400, // 0053 MOVE R8 R2 - 0x58240002, // 0054 LDCONST R9 K2 + 0x58240005, // 0054 LDCONST R9 K5 0x7C180600, // 0055 CALL R6 3 0x541E0023, // 0056 LDINT R7 36 0x1C1C0C07, // 0057 EQ R7 R6 R7 0x781E0006, // 0058 JMPF R7 #0060 - 0x8C1C0301, // 0059 GETMET R7 R1 K1 - 0x00240504, // 005A ADD R9 R2 K4 - 0x58280002, // 005B LDCONST R10 K2 + 0x8C1C0304, // 0059 GETMET R7 R1 K4 + 0x00240506, // 005A ADD R9 R2 K6 + 0x58280005, // 005B LDCONST R10 K5 0x7C1C0600, // 005C CALL R7 3 0x5C100E00, // 005D MOVE R4 R7 - 0x00080505, // 005E ADD R2 R2 K5 + 0x00080507, // 005E ADD R2 R2 K7 0x7002000B, // 005F JMP #006C 0x541E0024, // 0060 LDINT R7 37 0x1C1C0C07, // 0061 EQ R7 R6 R7 0x781E0007, // 0062 JMPF R7 #006B - 0x8C1C0301, // 0063 GETMET R7 R1 K1 - 0x00240504, // 0064 ADD R9 R2 K4 - 0x58280004, // 0065 LDCONST R10 K4 + 0x8C1C0304, // 0063 GETMET R7 R1 K4 + 0x00240506, // 0064 ADD R9 R2 K6 + 0x58280006, // 0065 LDCONST R10 K6 0x7C1C0600, // 0066 CALL R7 3 0x5C100E00, // 0067 MOVE R4 R7 0x541E0003, // 0068 LDINT R7 4 0x00080407, // 0069 ADD R2 R2 R7 0x70020000, // 006A JMP #006C 0x7002000E, // 006B JMP #007B - 0x1C1C0B06, // 006C EQ R7 R5 K6 + 0x1C1C0B08, // 006C EQ R7 R5 K8 0x781E0001, // 006D JMPF R7 #0070 - 0x90020E04, // 006E SETMBR R0 K7 R4 + 0x90021204, // 006E SETMBR R0 K9 R4 0x70020009, // 006F JMP #007A - 0x1C1C0B02, // 0070 EQ R7 R5 K2 + 0x1C1C0B05, // 0070 EQ R7 R5 K5 0x781E0001, // 0071 JMPF R7 #0074 - 0x90021004, // 0072 SETMBR R0 K8 R4 + 0x90021404, // 0072 SETMBR R0 K10 R4 0x70020005, // 0073 JMP #007A - 0x1C1C0B04, // 0074 EQ R7 R5 K4 + 0x1C1C0B06, // 0074 EQ R7 R5 K6 0x781E0001, // 0075 JMPF R7 #0078 - 0x90021204, // 0076 SETMBR R0 K9 R4 + 0x90021604, // 0076 SETMBR R0 K11 R4 0x70020001, // 0077 JMP #007A 0x4C1C0000, // 0078 LDNIL R7 0x80040E00, // 0079 RET 1 R7 0x7001FFD0, // 007A JMP #004C - 0x8C140301, // 007B GETMET R5 R1 K1 + 0x8C140304, // 007B GETMET R5 R1 K4 0x5C1C0400, // 007C MOVE R7 R2 - 0x58200002, // 007D LDCONST R8 K2 + 0x58200005, // 007D LDCONST R8 K5 0x7C140600, // 007E CALL R5 3 0x541A0017, // 007F LDINT R6 24 0x20140A06, // 0080 NE R5 R5 R6 0x78160001, // 0081 JMPF R5 #0084 0x4C140000, // 0082 LDNIL R5 0x80040A00, // 0083 RET 1 R5 - 0x00080502, // 0084 ADD R2 R2 K2 - 0x8C140301, // 0085 GETMET R5 R1 K1 + 0x00080505, // 0084 ADD R2 R2 K5 + 0x8C140304, // 0085 GETMET R5 R1 K4 0x5C1C0400, // 0086 MOVE R7 R2 0x5421FFFD, // 0087 LDINT R8 -2 0x7C140600, // 0088 CALL R5 3 @@ -3575,16 +3502,16 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0x78160001, // 008B JMPF R5 #008E 0x4C140000, // 008C LDNIL R5 0x80040A00, // 008D RET 1 R5 - 0xB8161600, // 008E GETNGBL R5 K11 - 0x88140B0C, // 008F GETMBR R5 R5 K12 - 0x8C140B0D, // 0090 GETMET R5 R5 K13 + 0xB8161800, // 008E GETNGBL R5 K12 + 0x88140B0D, // 008F GETMBR R5 R5 K13 + 0x8C140B0E, // 0090 GETMET R5 R5 K14 0x5C1C0200, // 0091 MOVE R7 R1 0x5C200400, // 0092 MOVE R8 R2 0x7C140600, // 0093 CALL R5 3 - 0x90021405, // 0094 SETMBR R0 K10 R5 - 0x8814010A, // 0095 GETMBR R5 R0 K10 - 0x88080B0E, // 0096 GETMBR R2 R5 K14 - 0x8C180301, // 0097 GETMET R6 R1 K1 + 0x90020605, // 0094 SETMBR R0 K3 R5 + 0x88140103, // 0095 GETMBR R5 R0 K3 + 0x88080B0F, // 0096 GETMBR R2 R5 K15 + 0x8C180304, // 0097 GETMET R6 R1 K4 0x5C200400, // 0098 MOVE R8 R2 0x5425FFFD, // 0099 LDINT R9 -2 0x7C180600, // 009A CALL R6 3 @@ -3593,12 +3520,12 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */ 0x781A0001, // 009D JMPF R6 #00A0 0x4C180000, // 009E LDNIL R6 0x80040C00, // 009F RET 1 R6 - 0x00080504, // 00A0 ADD R2 R2 K4 - 0x8C140301, // 00A1 GETMET R5 R1 K1 + 0x00080506, // 00A0 ADD R2 R2 K6 + 0x8C140304, // 00A1 GETMET R5 R1 K4 0x5C1C0400, // 00A2 MOVE R7 R2 0x5421FFFB, // 00A3 LDINT R8 -4 0x7C140600, // 00A4 CALL R5 3 - 0x20140B0F, // 00A5 NE R5 R5 K15 + 0x20140B10, // 00A5 NE R5 R5 K16 0x78160001, // 00A6 JMPF R5 #00A9 0x4C140000, // 00A7 LDNIL R5 0x80040A00, // 00A8 RET 1 R5 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h index 68c2ae3ea..5e6fbfda6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h @@ -3,6 +3,38 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_IM_Message' ktab size: 28, total: 48 (saved 160 bytes) +static const bvalue be_ktab_class_Matter_IM_Message[28] = { + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(build_response), + /* K2 */ be_nested_str_weak(ready), + /* K3 */ be_nested_str_weak(expiration), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(millis), + /* K6 */ be_nested_str_weak(MSG_TIMEOUT), + /* K7 */ be_nested_str_weak(last_counter), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(finishing), + /* K10 */ be_nested_str_weak(finished), + /* K11 */ be_nested_str_weak(data), + /* K12 */ be_nested_str_weak(reset), + /* K13 */ be_nested_str_weak(to_TLV), + /* K14 */ be_nested_str_weak(tlv2raw), + /* K15 */ be_nested_str_weak(encode_frame), + /* K16 */ be_nested_str_weak(encrypt), + /* K17 */ be_nested_str_weak(loglevel), + /* K18 */ be_nested_str_weak(log), + /* K19 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25s_X20exch_X3D_X25s_X20rack_X3D_X25s), + /* K20 */ be_nested_str_weak(session), + /* K21 */ be_nested_str_weak(local_session_id), + /* K22 */ be_nested_str_weak(message_counter), + /* K23 */ be_nested_str_weak(exchange_id), + /* K24 */ be_nested_str_weak(ack_message_counter), + /* K25 */ be_nested_str_weak(send_response_frame), + /* K26 */ be_nested_str_weak(opcode), + /* K27 */ be_nested_str_weak(x_flag_r), +}; + extern const bclass be_class_Matter_IM_Message; @@ -13,26 +45,13 @@ be_local_closure(class_Matter_IM_Message_reset, /* name */ be_nested_proto( 8, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(build_response), - /* K2 */ be_nested_str_weak(ready), - /* K3 */ be_nested_str_weak(expiration), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(millis), - /* K6 */ be_nested_str_weak(MSG_TIMEOUT), - /* K7 */ be_nested_str_weak(last_counter), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(finishing), - /* K10 */ be_nested_str_weak(finished), - /* K11 */ be_nested_str_weak(data), - }), + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ @@ -75,19 +94,17 @@ be_local_closure(class_Matter_IM_Message_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - }), + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x8C10010C, // 0000 GETMET R4 R0 K12 0x5C180200, // 0001 MOVE R6 R1 0x5C1C0400, // 0002 MOVE R7 R2 0x5C200600, // 0003 MOVE R8 R3 @@ -106,69 +123,50 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(data), - /* K2 */ be_nested_str_weak(to_TLV), - /* K3 */ be_nested_str_weak(tlv2raw), - /* K4 */ be_nested_str_weak(encode_frame), - /* K5 */ be_nested_str_weak(encrypt), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(loglevel), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25s_X20exch_X3D_X25s_X20rack_X3D_X25s), - /* K10 */ be_nested_str_weak(session), - /* K11 */ be_nested_str_weak(local_session_id), - /* K12 */ be_nested_str_weak(message_counter), - /* K13 */ be_nested_str_weak(exchange_id), - /* K14 */ be_nested_str_weak(ack_message_counter), - /* K15 */ be_nested_str_weak(send_response_frame), - /* K16 */ be_nested_str_weak(last_counter), - /* K17 */ be_nested_str_weak(finishing), - }), + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(send_im), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x880C010B, // 0001 GETMBR R3 R0 K11 + 0x8C0C070D, // 0002 GETMET R3 R3 K13 0x7C0C0200, // 0003 CALL R3 1 - 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x8C0C070E, // 0004 GETMET R3 R3 K14 0x7C0C0200, // 0005 CALL R3 1 - 0x8C100504, // 0006 GETMET R4 R2 K4 + 0x8C10050F, // 0006 GETMET R4 R2 K15 0x5C180600, // 0007 MOVE R6 R3 0x7C100400, // 0008 CALL R4 2 - 0x8C100505, // 0009 GETMET R4 R2 K5 + 0x8C100510, // 0009 GETMET R4 R2 K16 0x7C100200, // 000A CALL R4 1 - 0xB8120C00, // 000B GETNGBL R4 K6 - 0x8C100907, // 000C GETMET R4 R4 K7 + 0xB8120800, // 000B GETNGBL R4 K4 + 0x8C100911, // 000C GETMET R4 R4 K17 0x541A0003, // 000D LDINT R6 4 0x7C100400, // 000E CALL R4 2 0x7812000A, // 000F JMPF R4 #001B - 0xB8121000, // 0010 GETNGBL R4 K8 + 0xB8122400, // 0010 GETNGBL R4 K18 0x60140018, // 0011 GETGBL R5 G24 - 0x58180009, // 0012 LDCONST R6 K9 - 0x881C050A, // 0013 GETMBR R7 R2 K10 - 0x881C0F0B, // 0014 GETMBR R7 R7 K11 - 0x8820050C, // 0015 GETMBR R8 R2 K12 - 0x8824050D, // 0016 GETMBR R9 R2 K13 - 0x8828050E, // 0017 GETMBR R10 R2 K14 + 0x58180013, // 0012 LDCONST R6 K19 + 0x881C0514, // 0013 GETMBR R7 R2 K20 + 0x881C0F15, // 0014 GETMBR R7 R7 K21 + 0x88200516, // 0015 GETMBR R8 R2 K22 + 0x88240517, // 0016 GETMBR R9 R2 K23 + 0x88280518, // 0017 GETMBR R10 R2 K24 0x7C140A00, // 0018 CALL R5 5 0x541A0003, // 0019 LDINT R6 4 0x7C100400, // 001A CALL R4 2 - 0x8C10030F, // 001B GETMET R4 R1 K15 + 0x8C100319, // 001B GETMET R4 R1 K25 0x5C180400, // 001C MOVE R6 R2 0x7C100400, // 001D CALL R4 2 - 0x8810050C, // 001E GETMBR R4 R2 K12 - 0x90022004, // 001F SETMBR R0 K16 R4 + 0x88100516, // 001E GETMBR R4 R2 K22 + 0x90020E04, // 001F SETMBR R0 K7 R4 0x50100200, // 0020 LDBOOL R4 1 0 - 0x90022204, // 0021 SETMBR R0 K17 R4 + 0x90021204, // 0021 SETMBR R0 K9 R4 0x80000000, // 0022 RET 0 }) ) @@ -183,13 +181,13 @@ be_local_closure(class_Matter_IM_Message_status_error_received, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(status_error_received), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -207,21 +205,18 @@ be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(exchange_id), - }), + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(get_exchangeid), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x88040317, // 0001 GETMBR R1 R1 K23 0x80040200, // 0002 RET 1 R1 }) ) @@ -236,34 +231,27 @@ be_local_closure(class_Matter_IM_Message_ack_received, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(finishing), - /* K1 */ be_nested_str_weak(finished), - /* K2 */ be_nested_str_weak(expiration), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(millis), - /* K5 */ be_nested_str_weak(MSG_TIMEOUT), - }), + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(ack_received), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080109, // 0000 GETMBR R2 R0 K9 0x780A0002, // 0001 JMPF R2 #0005 0x50080200, // 0002 LDBOOL R2 1 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x90021402, // 0003 SETMBR R0 K10 R2 0x70020005, // 0004 JMP #000B - 0xB80A0600, // 0005 GETNGBL R2 K3 - 0x8C080504, // 0006 GETMET R2 R2 K4 + 0xB80A0800, // 0005 GETNGBL R2 K4 + 0x8C080505, // 0006 GETMET R2 R2 K5 0x7C080200, // 0007 CALL R2 1 - 0x880C0105, // 0008 GETMBR R3 R0 K5 + 0x880C0106, // 0008 GETMBR R3 R0 K6 0x00080403, // 0009 ADD R2 R2 R3 - 0x90020402, // 000A SETMBR R0 K2 R2 + 0x90020602, // 000A SETMBR R0 K3 R2 0x50080000, // 000B LDBOOL R2 0 0 0x80040400, // 000C RET 1 R2 }) @@ -279,13 +267,13 @@ be_local_closure(class_Matter_IM_Message_reached_timeout, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(reached_timeout), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -303,43 +291,33 @@ be_local_closure(class_Matter_IM_Message_status_ok_received, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(expiration), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(MSG_TIMEOUT), - /* K4 */ be_nested_str_weak(resp), - /* K5 */ be_nested_str_weak(build_response), - /* K6 */ be_nested_str_weak(opcode), - /* K7 */ be_nested_str_weak(x_flag_r), - /* K8 */ be_nested_str_weak(ready), - }), + &be_ktab_class_Matter_IM_Message, /* shared constants */ be_str_weak(status_ok_received), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0xB80A0200, // 0000 GETNGBL R2 K1 - 0x8C080502, // 0001 GETMET R2 R2 K2 + 0xB80A0800, // 0000 GETNGBL R2 K4 + 0x8C080505, // 0001 GETMET R2 R2 K5 0x7C080200, // 0002 CALL R2 1 - 0x880C0103, // 0003 GETMBR R3 R0 K3 + 0x880C0106, // 0003 GETMBR R3 R0 K6 0x00080403, // 0004 ADD R2 R2 R3 - 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x90020602, // 0005 SETMBR R0 K3 R2 0x78060007, // 0006 JMPF R1 #000F - 0x8C080305, // 0007 GETMET R2 R1 K5 - 0x88100104, // 0008 GETMBR R4 R0 K4 - 0x88100906, // 0009 GETMBR R4 R4 K6 - 0x88140104, // 000A GETMBR R5 R0 K4 - 0x88140B07, // 000B GETMBR R5 R5 K7 - 0x88180104, // 000C GETMBR R6 R0 K4 + 0x8C080301, // 0007 GETMET R2 R1 K1 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x8810091A, // 0009 GETMBR R4 R4 K26 + 0x88140100, // 000A GETMBR R5 R0 K0 + 0x88140B1B, // 000B GETMBR R5 R5 K27 + 0x88180100, // 000C GETMBR R6 R0 K0 0x7C080800, // 000D CALL R2 4 - 0x90020802, // 000E SETMBR R0 K4 R2 + 0x90020002, // 000E SETMBR R0 K0 R2 0x50080200, // 000F LDBOOL R2 1 0 - 0x90021002, // 0010 SETMBR R0 K8 R2 + 0x90020402, // 0010 SETMBR R0 K2 R2 0x50080200, // 0011 LDBOOL R2 1 0 0x80040400, // 0012 RET 1 R2 }) @@ -539,6 +517,61 @@ be_local_class(Matter_IM_WriteResponse, })), be_str_weak(Matter_IM_WriteResponse) ); +// compact class 'Matter_IM_ReportData_Pull' ktab size: 51, total: 57 (saved 48 bytes) +static const bvalue be_ktab_class_Matter_IM_ReportData_Pull[51] = { + /* K0 */ be_nested_str_weak(resp), + /* K1 */ be_nested_str_weak(data), + /* K2 */ be_nested_str_weak(device), + /* K3 */ be_nested_str_weak(debug), + /* K4 */ be_nested_str_weak(data_ev), + /* K5 */ be_nested_str_weak(event_generator_or_arr), + /* K6 */ be_nested_str_weak(generator_or_arr), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(next_attribute), + /* K9 */ be_nested_str_weak(is_direct), + /* K10 */ be_nested_str_weak(im), + /* K11 */ be_nested_str_weak(read_single_attribute_to_bytes), + /* K12 */ be_nested_str_weak(get_pi), + /* K13 */ be_nested_str_weak(session), + /* K14 */ be_nested_str_weak(MAX_MESSAGE), + /* K15 */ be_nested_str_weak(append), + /* K16 */ be_nested_str_weak(remove), + /* K17 */ be_nested_str_weak(next_event), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(loglevel), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(data0), + /* K23 */ be_nested_str_weak(_X20_X2D_X20), + /* K24 */ be_nested_str_weak(data1), + /* K25 */ be_nested_str_weak(_X2C_X20), + /* K26 */ be_nested_str_weak(data2), + /* K27 */ be_nested_str_weak(log), + /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s), + /* K29 */ be_nested_str_weak(local_session_id), + /* K30 */ be_nested_str_weak(event_no), + /* K31 */ be_nested_str_weak(endpoint), + /* K32 */ be_nested_str_weak(cluster), + /* K33 */ be_nested_str_weak(event_id), + /* K34 */ be_nested_str_weak(to_raw_bytes), + /* K35 */ be_nested_str_weak(add), + /* K36 */ be_const_int(1), + /* K37 */ be_nested_str_weak(subscription_id), + /* K38 */ be_const_int(2), + /* K39 */ be_nested_str_weak(suppress_response), + /* K40 */ be_nested_str_weak(encode_frame), + /* K41 */ be_nested_str_weak(encrypt), + /* K42 */ be_nested_str_weak(send_response_frame), + /* K43 */ be_nested_str_weak(last_counter), + /* K44 */ be_nested_str_weak(message_counter), + /* K45 */ be_nested_str_weak(ready), + /* K46 */ be_nested_str_weak(finishing), + /* K47 */ be_nested_str_weak(status_ok_received), + /* K48 */ be_nested_str_weak(_message_handler), + /* K49 */ be_nested_str_weak(send_encrypted_ack), + /* K50 */ be_nested_str_weak(init), +}; + extern const bclass be_class_Matter_IM_ReportData_Pull; @@ -549,61 +582,13 @@ be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */ be_nested_proto( 19, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[47]) { /* constants */ - /* K0 */ be_nested_str_weak(resp), - /* K1 */ be_nested_str_weak(data), - /* K2 */ be_nested_str_weak(device), - /* K3 */ be_nested_str_weak(debug), - /* K4 */ be_nested_str_weak(data_ev), - /* K5 */ be_nested_str_weak(event_generator_or_arr), - /* K6 */ be_nested_str_weak(generator_or_arr), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(next_attribute), - /* K9 */ be_nested_str_weak(is_direct), - /* K10 */ be_nested_str_weak(im), - /* K11 */ be_nested_str_weak(read_single_attribute_to_bytes), - /* K12 */ be_nested_str_weak(get_pi), - /* K13 */ be_nested_str_weak(session), - /* K14 */ be_nested_str_weak(MAX_MESSAGE), - /* K15 */ be_nested_str_weak(append), - /* K16 */ be_nested_str_weak(remove), - /* K17 */ be_nested_str_weak(next_event), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(loglevel), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_nested_str_weak(data0), - /* K23 */ be_nested_str_weak(_X20_X2D_X20), - /* K24 */ be_nested_str_weak(data1), - /* K25 */ be_nested_str_weak(_X2C_X20), - /* K26 */ be_nested_str_weak(data2), - /* K27 */ be_nested_str_weak(log), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s), - /* K29 */ be_nested_str_weak(local_session_id), - /* K30 */ be_nested_str_weak(event_no), - /* K31 */ be_nested_str_weak(endpoint), - /* K32 */ be_nested_str_weak(cluster), - /* K33 */ be_nested_str_weak(event_id), - /* K34 */ be_nested_str_weak(to_raw_bytes), - /* K35 */ be_nested_str_weak(add), - /* K36 */ be_const_int(1), - /* K37 */ be_nested_str_weak(subscription_id), - /* K38 */ be_const_int(2), - /* K39 */ be_nested_str_weak(suppress_response), - /* K40 */ be_nested_str_weak(encode_frame), - /* K41 */ be_nested_str_weak(encrypt), - /* K42 */ be_nested_str_weak(send_response_frame), - /* K43 */ be_nested_str_weak(last_counter), - /* K44 */ be_nested_str_weak(message_counter), - /* K45 */ be_nested_str_weak(ready), - /* K46 */ be_nested_str_weak(finishing), - }), + &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */ be_str_weak(send_im), &be_const_str_solidified, ( &(const binstruction[361]) { /* code */ @@ -981,33 +966,27 @@ be_local_closure(class_Matter_IM_ReportData_Pull_status_ok_received, /* name * be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(status_ok_received), - /* K1 */ be_nested_str_weak(finishing), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(_message_handler), - /* K4 */ be_nested_str_weak(send_encrypted_ack), - }), + &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */ be_str_weak(status_ok_received), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C08052F, // 0003 GETMET R2 R2 K47 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x8808012E, // 0006 GETMBR R2 R0 K46 0x740A0005, // 0007 JMPT R2 #000E - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0x88080503, // 0009 GETMBR R2 R2 K3 - 0x8C080504, // 000A GETMET R2 R2 K4 + 0x8808030D, // 0008 GETMBR R2 R1 K13 + 0x88080530, // 0009 GETMBR R2 R2 K48 + 0x8C080531, // 000A GETMET R2 R2 K49 0x5C100200, // 000B MOVE R4 R1 0x50140000, // 000C LDBOOL R5 0 0 0x7C080600, // 000D CALL R2 3 @@ -1026,19 +1005,17 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(subscription_id), - }), + &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */ be_str_weak(set_subscription_id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024A01, // 0000 SETMBR R0 K37 R1 0x80000000, // 0001 RET 0 }) ) @@ -1053,19 +1030,17 @@ be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* nam be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(suppress_response), - }), + &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */ be_str_weak(set_suppress_response), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024E01, // 0000 SETMBR R0 K39 R1 0x80000000, // 0001 RET 0 }) ) @@ -1080,30 +1055,26 @@ be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(generator_or_arr), - /* K2 */ be_nested_str_weak(event_generator_or_arr), - }), + &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100932, // 0003 GETMET R4 R4 K50 0x5C180200, // 0004 MOVE R6 R1 0x541E0004, // 0005 LDINT R7 5 0x50200200, // 0006 LDBOOL R8 1 0 0x7C100800, // 0007 CALL R4 4 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x90020403, // 0009 SETMBR R0 K2 R3 + 0x90020C02, // 0008 SETMBR R0 K6 R2 + 0x90020A03, // 0009 SETMBR R0 K5 R3 0x80000000, // 000A RET 0 }) ) @@ -1134,6 +1105,44 @@ be_local_class(Matter_IM_ReportData_Pull, })), be_str_weak(Matter_IM_ReportData_Pull) ); +// compact class 'Matter_IM_ReportDataSubscribed_Pull' ktab size: 34, total: 46 (saved 96 bytes) +static const bvalue be_ktab_class_Matter_IM_ReportDataSubscribed_Pull[34] = { + /* K0 */ be_nested_str_weak(ack_received), + /* K1 */ be_nested_str_weak(report_data_phase), + /* K2 */ be_nested_str_weak(sub), + /* K3 */ be_nested_str_weak(is_keep_alive), + /* K4 */ be_nested_str_weak(re_arm), + /* K5 */ be_nested_str_weak(ready), + /* K6 */ be_nested_str_weak(generator_or_arr), + /* K7 */ be_nested_str_weak(event_generator_or_arr), + /* K8 */ be_nested_str_weak(send_im), + /* K9 */ be_nested_str_weak(finishing), + /* K10 */ be_nested_str_weak(finished), + /* K11 */ be_nested_str_weak(resp), + /* K12 */ be_nested_str_weak(build_standalone_ack), + /* K13 */ be_nested_str_weak(encode_frame), + /* K14 */ be_nested_str_weak(encrypt), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(loglevel), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), + /* K19 */ be_nested_str_weak(session), + /* K20 */ be_nested_str_weak(local_session_id), + /* K21 */ be_nested_str_weak(ack_message_counter), + /* K22 */ be_nested_str_weak(message_counter), + /* K23 */ be_nested_str_weak(send_response_frame), + /* K24 */ be_nested_str_weak(last_counter), + /* K25 */ be_nested_str_weak(init), + /* K26 */ be_nested_str_weak(matter), + /* K27 */ be_nested_str_weak(Frame), + /* K28 */ be_nested_str_weak(initiate_response), + /* K29 */ be_nested_str_weak(set_subscription_id), + /* K30 */ be_nested_str_weak(subscription_id), + /* K31 */ be_nested_str_weak(set_suppress_response), + /* K32 */ be_nested_str_weak(remove_self), + /* K33 */ be_nested_str_weak(status_ok_received), +}; + extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull; @@ -1144,19 +1153,13 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* na be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(ack_received), - /* K1 */ be_nested_str_weak(report_data_phase), - /* K2 */ be_nested_str_weak(sub), - /* K3 */ be_nested_str_weak(is_keep_alive), - /* K4 */ be_nested_str_weak(re_arm), - }), + &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */ be_str_weak(ack_received), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ @@ -1193,115 +1196,91 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(ready), - /* K1 */ be_nested_str_weak(generator_or_arr), - /* K2 */ be_nested_str_weak(event_generator_or_arr), - /* K3 */ be_nested_str_weak(report_data_phase), - /* K4 */ be_nested_str_weak(send_im), - /* K5 */ be_nested_str_weak(finishing), - /* K6 */ be_nested_str_weak(finished), - /* K7 */ be_nested_str_weak(resp), - /* K8 */ be_nested_str_weak(build_standalone_ack), - /* K9 */ be_nested_str_weak(encode_frame), - /* K10 */ be_nested_str_weak(encrypt), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(loglevel), - /* K13 */ be_nested_str_weak(log), - /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i), - /* K15 */ be_nested_str_weak(session), - /* K16 */ be_nested_str_weak(local_session_id), - /* K17 */ be_nested_str_weak(ack_message_counter), - /* K18 */ be_nested_str_weak(message_counter), - /* K19 */ be_nested_str_weak(send_response_frame), - /* K20 */ be_nested_str_weak(last_counter), - /* K21 */ be_nested_str_weak(sub), - /* K22 */ be_nested_str_weak(re_arm), - }), + &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */ be_str_weak(send_im), &be_const_str_solidified, ( &(const binstruction[77]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080105, // 0000 GETMBR R2 R0 K5 0x740A0001, // 0001 JMPT R2 #0004 0x50080000, // 0002 LDBOOL R2 0 0 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x88080106, // 0004 GETMBR R2 R0 K6 0x4C0C0000, // 0005 LDNIL R3 0x20080403, // 0006 NE R2 R2 R3 0x740A0003, // 0007 JMPT R2 #000C - 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x88080107, // 0008 GETMBR R2 R0 K7 0x4C0C0000, // 0009 LDNIL R3 0x20080403, // 000A NE R2 R2 R3 0x780A0031, // 000B JMPF R2 #003E - 0x88080103, // 000C GETMBR R2 R0 K3 + 0x88080101, // 000C GETMBR R2 R0 K1 0x780A000F, // 000D JMPF R2 #001E 0x60080003, // 000E GETGBL R2 G3 0x5C0C0000, // 000F MOVE R3 R0 0x7C080200, // 0010 CALL R2 1 - 0x8C080504, // 0011 GETMET R2 R2 K4 + 0x8C080508, // 0011 GETMET R2 R2 K8 0x5C100200, // 0012 MOVE R4 R1 0x7C080400, // 0013 CALL R2 2 - 0x88080105, // 0014 GETMBR R2 R0 K5 + 0x88080109, // 0014 GETMBR R2 R0 K9 0x740A0000, // 0015 JMPT R2 #0017 0x80000400, // 0016 RET 0 0x50080000, // 0017 LDBOOL R2 0 0 - 0x90020602, // 0018 SETMBR R0 K3 R2 + 0x90020202, // 0018 SETMBR R0 K1 R2 0x50080000, // 0019 LDBOOL R2 0 0 - 0x90020002, // 001A SETMBR R0 K0 R2 + 0x90020A02, // 001A SETMBR R0 K5 R2 0x50080000, // 001B LDBOOL R2 0 0 - 0x90020C02, // 001C SETMBR R0 K6 R2 + 0x90021402, // 001C SETMBR R0 K10 R2 0x7002001E, // 001D JMP #003D - 0x88080107, // 001E GETMBR R2 R0 K7 - 0x8C080508, // 001F GETMET R2 R2 K8 + 0x8808010B, // 001E GETMBR R2 R0 K11 + 0x8C08050C, // 001F GETMET R2 R2 K12 0x50100000, // 0020 LDBOOL R4 0 0 0x7C080400, // 0021 CALL R2 2 - 0x8C0C0509, // 0022 GETMET R3 R2 K9 + 0x8C0C050D, // 0022 GETMET R3 R2 K13 0x7C0C0200, // 0023 CALL R3 1 - 0x8C0C050A, // 0024 GETMET R3 R2 K10 + 0x8C0C050E, // 0024 GETMET R3 R2 K14 0x7C0C0200, // 0025 CALL R3 1 - 0xB80E1600, // 0026 GETNGBL R3 K11 - 0x8C0C070C, // 0027 GETMET R3 R3 K12 + 0xB80E1E00, // 0026 GETNGBL R3 K15 + 0x8C0C0710, // 0027 GETMET R3 R3 K16 0x54160003, // 0028 LDINT R5 4 0x7C0C0400, // 0029 CALL R3 2 0x780E0009, // 002A JMPF R3 #0035 - 0xB80E1A00, // 002B GETNGBL R3 K13 + 0xB80E2200, // 002B GETNGBL R3 K17 0x60100018, // 002C GETGBL R4 G24 - 0x5814000E, // 002D LDCONST R5 K14 - 0x8818050F, // 002E GETMBR R6 R2 K15 - 0x88180D10, // 002F GETMBR R6 R6 K16 - 0x881C0511, // 0030 GETMBR R7 R2 K17 - 0x88200512, // 0031 GETMBR R8 R2 K18 + 0x58140012, // 002D LDCONST R5 K18 + 0x88180513, // 002E GETMBR R6 R2 K19 + 0x88180D14, // 002F GETMBR R6 R6 K20 + 0x881C0515, // 0030 GETMBR R7 R2 K21 + 0x88200516, // 0031 GETMBR R8 R2 K22 0x7C100800, // 0032 CALL R4 4 0x54160003, // 0033 LDINT R5 4 0x7C0C0400, // 0034 CALL R3 2 - 0x8C0C0313, // 0035 GETMET R3 R1 K19 + 0x8C0C0317, // 0035 GETMET R3 R1 K23 0x5C140400, // 0036 MOVE R5 R2 0x7C0C0400, // 0037 CALL R3 2 - 0x880C0512, // 0038 GETMBR R3 R2 K18 - 0x90022803, // 0039 SETMBR R0 K20 R3 - 0x880C0115, // 003A GETMBR R3 R0 K21 - 0x8C0C0716, // 003B GETMET R3 R3 K22 + 0x880C0516, // 0038 GETMBR R3 R2 K22 + 0x90023003, // 0039 SETMBR R0 K24 R3 + 0x880C0102, // 003A GETMBR R3 R0 K2 + 0x8C0C0704, // 003B GETMET R3 R3 K4 0x7C0C0200, // 003C CALL R3 1 0x7002000D, // 003D JMP #004C - 0x88080103, // 003E GETMBR R2 R0 K3 + 0x88080101, // 003E GETMBR R2 R0 K1 0x780A0008, // 003F JMPF R2 #0049 0x60080003, // 0040 GETGBL R2 G3 0x5C0C0000, // 0041 MOVE R3 R0 0x7C080200, // 0042 CALL R2 1 - 0x8C080504, // 0043 GETMET R2 R2 K4 + 0x8C080508, // 0043 GETMET R2 R2 K8 0x5C100200, // 0044 MOVE R4 R1 0x7C080400, // 0045 CALL R2 2 0x50080000, // 0046 LDBOOL R2 0 0 - 0x90020602, // 0047 SETMBR R0 K3 R2 + 0x90020202, // 0047 SETMBR R0 K1 R2 0x70020002, // 0048 JMP #004C - 0x88080115, // 0049 GETMBR R2 R0 K21 - 0x8C080516, // 004A GETMET R2 R2 K22 + 0x88080102, // 0049 GETMBR R2 R0 K2 + 0x8C080504, // 004A GETMET R2 R2 K4 0x7C080200, // 004B CALL R2 1 0x80000000, // 004C RET 0 }) @@ -1317,51 +1296,40 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */ be_nested_proto( 12, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(resp), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Frame), - /* K4 */ be_nested_str_weak(initiate_response), - /* K5 */ be_nested_str_weak(sub), - /* K6 */ be_nested_str_weak(report_data_phase), - /* K7 */ be_nested_str_weak(set_subscription_id), - /* K8 */ be_nested_str_weak(subscription_id), - /* K9 */ be_nested_str_weak(set_suppress_response), - }), + &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ 0x60180003, // 0000 GETGBL R6 G3 0x5C1C0000, // 0001 MOVE R7 R0 0x7C180200, // 0002 CALL R6 1 - 0x8C180D00, // 0003 GETMET R6 R6 K0 + 0x8C180D19, // 0003 GETMET R6 R6 K25 0x4C200000, // 0004 LDNIL R8 0x5C240600, // 0005 MOVE R9 R3 0x5C280800, // 0006 MOVE R10 R4 0x7C180800, // 0007 CALL R6 4 - 0xB81A0400, // 0008 GETNGBL R6 K2 - 0x88180D03, // 0009 GETMBR R6 R6 K3 - 0x8C180D04, // 000A GETMET R6 R6 K4 + 0xB81A3400, // 0008 GETNGBL R6 K26 + 0x88180D1B, // 0009 GETMBR R6 R6 K27 + 0x8C180D1C, // 000A GETMET R6 R6 K28 0x5C200200, // 000B MOVE R8 R1 0x5C240400, // 000C MOVE R9 R2 0x542A0004, // 000D LDINT R10 5 0x502C0200, // 000E LDBOOL R11 1 0 0x7C180A00, // 000F CALL R6 5 - 0x90020206, // 0010 SETMBR R0 K1 R6 - 0x90020A05, // 0011 SETMBR R0 K5 R5 + 0x90021606, // 0010 SETMBR R0 K11 R6 + 0x90020405, // 0011 SETMBR R0 K2 R5 0x50180200, // 0012 LDBOOL R6 1 0 - 0x90020C06, // 0013 SETMBR R0 K6 R6 - 0x8C180107, // 0014 GETMET R6 R0 K7 - 0x88200B08, // 0015 GETMBR R8 R5 K8 + 0x90020206, // 0013 SETMBR R0 K1 R6 + 0x8C18011D, // 0014 GETMET R6 R0 K29 + 0x88200B1E, // 0015 GETMBR R8 R5 K30 0x7C180400, // 0016 CALL R6 2 - 0x8C180109, // 0017 GETMET R6 R0 K9 + 0x8C18011F, // 0017 GETMET R6 R0 K31 0x50200000, // 0018 LDBOOL R8 0 0 0x7C180400, // 0019 CALL R6 2 0x80000000, // 001A RET 0 @@ -1378,21 +1346,18 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(sub), - /* K1 */ be_nested_str_weak(remove_self), - }), + &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */ be_str_weak(status_error_received), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C080520, // 0001 GETMET R2 R2 K32 0x7C080200, // 0002 CALL R2 1 0x80000000, // 0003 RET 0 }) @@ -1408,21 +1373,18 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout, /* be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(sub), - /* K1 */ be_nested_str_weak(remove_self), - }), + &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */ be_str_weak(reached_timeout), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C040320, // 0001 GETMET R1 R1 K32 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -1438,38 +1400,33 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_ok_received, be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(report_data_phase), - /* K1 */ be_nested_str_weak(status_ok_received), - /* K2 */ be_nested_str_weak(sub), - /* K3 */ be_nested_str_weak(re_arm), - }), + &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */ be_str_weak(status_ok_received), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080101, // 0000 GETMBR R2 R0 K1 0x780A0007, // 0001 JMPF R2 #000A 0x60080003, // 0002 GETGBL R2 G3 0x5C0C0000, // 0003 MOVE R3 R0 0x7C080200, // 0004 CALL R2 1 - 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x8C080521, // 0005 GETMET R2 R2 K33 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x80040400, // 0008 RET 1 R2 0x7002000A, // 0009 JMP #0015 0x88080102, // 000A GETMBR R2 R0 K2 - 0x8C080503, // 000B GETMET R2 R2 K3 + 0x8C080504, // 000B GETMET R2 R2 K4 0x7C080200, // 000C CALL R2 1 0x60080003, // 000D GETGBL R2 G3 0x5C0C0000, // 000E MOVE R3 R0 0x7C080200, // 000F CALL R2 1 - 0x8C080501, // 0010 GETMET R2 R2 K1 + 0x8C080521, // 0010 GETMET R2 R2 K33 0x4C100000, // 0011 LDNIL R4 0x7C080400, // 0012 CALL R2 2 0x50080000, // 0013 LDBOOL R2 0 0 @@ -1501,6 +1458,23 @@ be_local_class(Matter_IM_ReportDataSubscribed_Pull, })), be_str_weak(Matter_IM_ReportDataSubscribed_Pull) ); +// compact class 'Matter_IM_SubscribedHeartbeat' ktab size: 13, total: 16 (saved 24 bytes) +static const bvalue be_ktab_class_Matter_IM_SubscribedHeartbeat[13] = { + /* K0 */ be_nested_str_weak(sub), + /* K1 */ be_nested_str_weak(remove_self), + /* K2 */ be_nested_str_weak(send_im), + /* K3 */ be_nested_str_weak(ready), + /* K4 */ be_nested_str_weak(ack_received), + /* K5 */ be_nested_str_weak(init), + /* K6 */ be_nested_str_weak(resp), + /* K7 */ be_nested_str_weak(matter), + /* K8 */ be_nested_str_weak(Frame), + /* K9 */ be_nested_str_weak(initiate_response), + /* K10 */ be_nested_str_weak(set_subscription_id), + /* K11 */ be_nested_str_weak(subscription_id), + /* K12 */ be_nested_str_weak(set_suppress_response), +}; + extern const bclass be_class_Matter_IM_SubscribedHeartbeat; @@ -1511,16 +1485,13 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_error_received, /* be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(sub), - /* K1 */ be_nested_str_weak(remove_self), - }), + &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */ be_str_weak(status_error_received), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -1542,27 +1513,24 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(send_im), - /* K1 */ be_nested_str_weak(ready), - }), + &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */ be_str_weak(send_im), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080502, // 0003 GETMET R2 R2 K2 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x50080000, // 0006 LDBOOL R2 0 0 - 0x90020202, // 0007 SETMBR R0 K1 R2 + 0x90020602, // 0007 SETMBR R0 K3 R2 0x80000000, // 0008 RET 0 }) ) @@ -1577,22 +1545,20 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(ack_received), - }), + &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */ be_str_weak(ack_received), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080504, // 0003 GETMET R2 R2 K4 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x50080000, // 0006 LDBOOL R2 0 0 @@ -1610,16 +1576,13 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_reached_timeout, /* name be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(sub), - /* K1 */ be_nested_str_weak(remove_self), - }), + &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */ be_str_weak(reached_timeout), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -1640,13 +1603,13 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_ok_received, /* na be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */ be_str_weak(status_ok_received), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -1665,48 +1628,38 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(resp), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Frame), - /* K4 */ be_nested_str_weak(initiate_response), - /* K5 */ be_nested_str_weak(sub), - /* K6 */ be_nested_str_weak(set_subscription_id), - /* K7 */ be_nested_str_weak(subscription_id), - /* K8 */ be_nested_str_weak(set_suppress_response), - }), + &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100905, // 0003 GETMET R4 R4 K5 0x4C180000, // 0004 LDNIL R6 0x4C1C0000, // 0005 LDNIL R7 0x4C200000, // 0006 LDNIL R8 0x7C100800, // 0007 CALL R4 4 - 0xB8120400, // 0008 GETNGBL R4 K2 - 0x88100903, // 0009 GETMBR R4 R4 K3 - 0x8C100904, // 000A GETMET R4 R4 K4 + 0xB8120E00, // 0008 GETNGBL R4 K7 + 0x88100908, // 0009 GETMBR R4 R4 K8 + 0x8C100909, // 000A GETMET R4 R4 K9 0x5C180200, // 000B MOVE R6 R1 0x5C1C0400, // 000C MOVE R7 R2 0x54220004, // 000D LDINT R8 5 0x50240200, // 000E LDBOOL R9 1 0 0x7C100A00, // 000F CALL R4 5 - 0x90020204, // 0010 SETMBR R0 K1 R4 - 0x90020A03, // 0011 SETMBR R0 K5 R3 - 0x8C100106, // 0012 GETMET R4 R0 K6 - 0x88180707, // 0013 GETMBR R6 R3 K7 + 0x90020C04, // 0010 SETMBR R0 K6 R4 + 0x90020003, // 0011 SETMBR R0 K0 R3 + 0x8C10010A, // 0012 GETMET R4 R0 K10 + 0x8818070B, // 0013 GETMBR R6 R3 K11 0x7C100400, // 0014 CALL R4 2 - 0x8C100108, // 0015 GETMET R4 R0 K8 + 0x8C10010C, // 0015 GETMET R4 R0 K12 0x50180200, // 0016 LDBOOL R6 1 0 0x7C100400, // 0017 CALL R4 2 0x80000000, // 0018 RET 0 @@ -1735,6 +1688,39 @@ be_local_class(Matter_IM_SubscribedHeartbeat, })), be_str_weak(Matter_IM_SubscribedHeartbeat) ); +// compact class 'Matter_IM_SubscribeResponse_Pull' ktab size: 29, total: 36 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_IM_SubscribeResponse_Pull[29] = { + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(sub), + /* K2 */ be_nested_str_weak(report_data_phase), + /* K3 */ be_nested_str_weak(set_subscription_id), + /* K4 */ be_nested_str_weak(subscription_id), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(loglevel), + /* K7 */ be_const_int(3), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K10 */ be_nested_str_weak(session), + /* K11 */ be_nested_str_weak(local_session_id), + /* K12 */ be_nested_str_weak(status_ok_received), + /* K13 */ be_nested_str_weak(finishing), + /* K14 */ be_nested_str_weak(send_im), + /* K15 */ be_nested_str_weak(ready), + /* K16 */ be_nested_str_weak(resp), + /* K17 */ be_nested_str_weak(matter), + /* K18 */ be_nested_str_weak(SubscribeResponseMessage), + /* K19 */ be_nested_str_weak(max_interval), + /* K20 */ be_nested_str_weak(opcode), + /* K21 */ be_nested_str_weak(encode_frame), + /* K22 */ be_nested_str_weak(to_TLV), + /* K23 */ be_nested_str_weak(tlv2raw), + /* K24 */ be_nested_str_weak(encrypt), + /* K25 */ be_nested_str_weak(send_response_frame), + /* K26 */ be_nested_str_weak(last_counter), + /* K27 */ be_nested_str_weak(message_counter), + /* K28 */ be_nested_str_weak(re_arm), +}; + extern const bclass be_class_Matter_IM_SubscribeResponse_Pull; @@ -1745,19 +1731,13 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */ be_nested_proto( 10, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(sub), - /* K2 */ be_nested_str_weak(report_data_phase), - /* K3 */ be_nested_str_weak(set_subscription_id), - /* K4 */ be_nested_str_weak(subscription_id), - }), + &be_ktab_class_Matter_IM_SubscribeResponse_Pull, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -1789,55 +1769,42 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(loglevel), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(log), - /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K5 */ be_nested_str_weak(session), - /* K6 */ be_nested_str_weak(local_session_id), - /* K7 */ be_nested_str_weak(sub), - /* K8 */ be_nested_str_weak(subscription_id), - /* K9 */ be_nested_str_weak(status_ok_received), - /* K10 */ be_nested_str_weak(report_data_phase), - /* K11 */ be_nested_str_weak(finishing), - }), + &be_ktab_class_Matter_IM_SubscribeResponse_Pull, /* shared constants */ be_str_weak(status_ok_received), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xB80A0A00, // 0000 GETNGBL R2 K5 + 0x8C080506, // 0001 GETMET R2 R2 K6 + 0x58100007, // 0002 LDCONST R4 K7 0x7C080400, // 0003 CALL R2 2 0x780A0009, // 0004 JMPF R2 #000F - 0xB80A0600, // 0005 GETNGBL R2 K3 + 0xB80A1000, // 0005 GETNGBL R2 K8 0x600C0018, // 0006 GETGBL R3 G24 - 0x58100004, // 0007 LDCONST R4 K4 - 0x88140305, // 0008 GETMBR R5 R1 K5 - 0x88140B06, // 0009 GETMBR R5 R5 K6 - 0x88180107, // 000A GETMBR R6 R0 K7 - 0x88180D08, // 000B GETMBR R6 R6 K8 + 0x58100009, // 0007 LDCONST R4 K9 + 0x8814030A, // 0008 GETMBR R5 R1 K10 + 0x88140B0B, // 0009 GETMBR R5 R5 K11 + 0x88180101, // 000A GETMBR R6 R0 K1 + 0x88180D04, // 000B GETMBR R6 R6 K4 0x7C0C0600, // 000C CALL R3 3 - 0x58100002, // 000D LDCONST R4 K2 + 0x58100007, // 000D LDCONST R4 K7 0x7C080400, // 000E CALL R2 2 0x60080003, // 000F GETGBL R2 G3 0x5C0C0000, // 0010 MOVE R3 R0 0x7C080200, // 0011 CALL R2 1 - 0x8C080509, // 0012 GETMET R2 R2 K9 + 0x8C08050C, // 0012 GETMET R2 R2 K12 0x5C100200, // 0013 MOVE R4 R1 0x7C080400, // 0014 CALL R2 2 0x80040400, // 0015 RET 1 R2 - 0x8808010A, // 0016 GETMBR R2 R0 K10 + 0x88080102, // 0016 GETMBR R2 R0 K2 0x740A0001, // 0017 JMPT R2 #001A 0x50080200, // 0018 LDBOOL R2 1 0 - 0x90021602, // 0019 SETMBR R0 K11 R2 + 0x90021A02, // 0019 SETMBR R0 K13 R2 }) ) ); @@ -1851,84 +1818,64 @@ be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(report_data_phase), - /* K1 */ be_nested_str_weak(send_im), - /* K2 */ be_nested_str_weak(finishing), - /* K3 */ be_nested_str_weak(ready), - /* K4 */ be_nested_str_weak(resp), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(SubscribeResponseMessage), - /* K7 */ be_nested_str_weak(subscription_id), - /* K8 */ be_nested_str_weak(sub), - /* K9 */ be_nested_str_weak(max_interval), - /* K10 */ be_nested_str_weak(opcode), - /* K11 */ be_nested_str_weak(encode_frame), - /* K12 */ be_nested_str_weak(to_TLV), - /* K13 */ be_nested_str_weak(tlv2raw), - /* K14 */ be_nested_str_weak(encrypt), - /* K15 */ be_nested_str_weak(send_response_frame), - /* K16 */ be_nested_str_weak(last_counter), - /* K17 */ be_nested_str_weak(message_counter), - /* K18 */ be_nested_str_weak(re_arm), - }), + &be_ktab_class_Matter_IM_SubscribeResponse_Pull, /* shared constants */ be_str_weak(send_im), &be_const_str_solidified, ( &(const binstruction[49]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080102, // 0000 GETMBR R2 R0 K2 0x780A000E, // 0001 JMPF R2 #0011 0x60080003, // 0002 GETGBL R2 G3 0x5C0C0000, // 0003 MOVE R3 R0 0x7C080200, // 0004 CALL R2 1 - 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x8C08050E, // 0005 GETMET R2 R2 K14 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 - 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x8808010D, // 0008 GETMBR R2 R0 K13 0x780A0003, // 0009 JMPF R2 #000E 0x50080000, // 000A LDBOOL R2 0 0 - 0x90020002, // 000B SETMBR R0 K0 R2 + 0x90020402, // 000B SETMBR R0 K2 R2 0x50080000, // 000C LDBOOL R2 0 0 - 0x90020402, // 000D SETMBR R0 K2 R2 + 0x90021A02, // 000D SETMBR R0 K13 R2 0x50080000, // 000E LDBOOL R2 0 0 - 0x90020602, // 000F SETMBR R0 K3 R2 + 0x90021E02, // 000F SETMBR R0 K15 R2 0x7002001E, // 0010 JMP #0030 - 0x88080104, // 0011 GETMBR R2 R0 K4 - 0xB80E0A00, // 0012 GETNGBL R3 K5 - 0x8C0C0706, // 0013 GETMET R3 R3 K6 + 0x88080110, // 0011 GETMBR R2 R0 K16 + 0xB80E2200, // 0012 GETNGBL R3 K17 + 0x8C0C0712, // 0013 GETMET R3 R3 K18 0x7C0C0200, // 0014 CALL R3 1 - 0x88100108, // 0015 GETMBR R4 R0 K8 - 0x88100907, // 0016 GETMBR R4 R4 K7 - 0x900E0E04, // 0017 SETMBR R3 K7 R4 - 0x88100108, // 0018 GETMBR R4 R0 K8 - 0x88100909, // 0019 GETMBR R4 R4 K9 - 0x900E1204, // 001A SETMBR R3 K9 R4 - 0x88100104, // 001B GETMBR R4 R0 K4 + 0x88100101, // 0015 GETMBR R4 R0 K1 + 0x88100904, // 0016 GETMBR R4 R4 K4 + 0x900E0804, // 0017 SETMBR R3 K4 R4 + 0x88100101, // 0018 GETMBR R4 R0 K1 + 0x88100913, // 0019 GETMBR R4 R4 K19 + 0x900E2604, // 001A SETMBR R3 K19 R4 + 0x88100110, // 001B GETMBR R4 R0 K16 0x54160003, // 001C LDINT R5 4 - 0x90121405, // 001D SETMBR R4 K10 R5 - 0x8C10050B, // 001E GETMET R4 R2 K11 - 0x8C18070C, // 001F GETMET R6 R3 K12 + 0x90122805, // 001D SETMBR R4 K20 R5 + 0x8C100515, // 001E GETMET R4 R2 K21 + 0x8C180716, // 001F GETMET R6 R3 K22 0x7C180200, // 0020 CALL R6 1 - 0x8C180D0D, // 0021 GETMET R6 R6 K13 + 0x8C180D17, // 0021 GETMET R6 R6 K23 0x7C180200, // 0022 CALL R6 1 0x7C100400, // 0023 CALL R4 2 - 0x8C10050E, // 0024 GETMET R4 R2 K14 + 0x8C100518, // 0024 GETMET R4 R2 K24 0x7C100200, // 0025 CALL R4 1 - 0x8C10030F, // 0026 GETMET R4 R1 K15 + 0x8C100319, // 0026 GETMET R4 R1 K25 0x5C180400, // 0027 MOVE R6 R2 0x7C100400, // 0028 CALL R4 2 - 0x88100511, // 0029 GETMBR R4 R2 K17 - 0x90022004, // 002A SETMBR R0 K16 R4 - 0x88100108, // 002B GETMBR R4 R0 K8 - 0x8C100912, // 002C GETMET R4 R4 K18 + 0x8810051B, // 0029 GETMBR R4 R2 K27 + 0x90023404, // 002A SETMBR R0 K26 R4 + 0x88100101, // 002B GETMBR R4 R0 K1 + 0x8C10091C, // 002C GETMET R4 R4 K28 0x7C100200, // 002D CALL R4 1 0x50100200, // 002E LDBOOL R4 1 0 - 0x90020404, // 002F SETMBR R0 K2 R4 + 0x90021A04, // 002F SETMBR R0 K13 R4 0x80000000, // 0030 RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h index fabfd5757..39e8336e9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h @@ -3,6 +3,60 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_IM_Subscription' ktab size: 50, total: 79 (saved 232 bytes) +static const bvalue be_ktab_class_Matter_IM_Subscription[50] = { + /* K0 */ be_nested_str_weak(update_event_no), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(event_generators), + /* K3 */ be_nested_str_weak(event_is_match), + /* K4 */ be_nested_str_weak(event_no), + /* K5 */ be_nested_str_weak(add), + /* K6 */ be_const_int(1), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(path_list), + /* K9 */ be_nested_str_weak(endpoint), + /* K10 */ be_nested_str_weak(cluster), + /* K11 */ be_nested_str_weak(attribute), + /* K12 */ be_nested_str_weak(_add_attribute_unique_path), + /* K13 */ be_nested_str_weak(updates), + /* K14 */ be_nested_str_weak(clear), + /* K15 */ be_nested_str_weak(wait_status), + /* K16 */ be_nested_str_weak(subs_shop), + /* K17 */ be_nested_str_weak(subscription_id), + /* K18 */ be_nested_str_weak(session), + /* K19 */ be_nested_str_weak(min_interval_floor), + /* K20 */ be_const_int(0), + /* K21 */ be_nested_str_weak(min_interval), + /* K22 */ be_nested_str_weak(max_interval_ceiling), + /* K23 */ be_nested_str_weak(max_interval), + /* K24 */ be_nested_str_weak(fabric_filtered), + /* K25 */ be_nested_str_weak(im), + /* K26 */ be_nested_str_weak(device), + /* K27 */ be_nested_str_weak(attributes_requests), + /* K28 */ be_nested_str_weak(push), + /* K29 */ be_nested_str_weak(matter), + /* K30 */ be_nested_str_weak(Path), + /* K31 */ be_nested_str_weak(stop_iteration), + /* K32 */ be_nested_str_weak(IM), + /* K33 */ be_nested_str_weak(parse_event_filters_min_no), + /* K34 */ be_nested_str_weak(event_filters), + /* K35 */ be_nested_str_weak(clear_before_arm), + /* K36 */ be_nested_str_weak(is_keep_alive), + /* K37 */ be_nested_str_weak(restart_from), + /* K38 */ be_nested_str_weak(resize), + /* K39 */ be_nested_str_weak(tasmota), + /* K40 */ be_nested_str_weak(millis), + /* K41 */ be_nested_str_weak(expiration), + /* K42 */ be_nested_str_weak(MAX_INTERVAL_MARGIN), + /* K43 */ be_nested_str_weak(not_before), + /* K44 */ be_const_int(1), + /* K45 */ be_nested_str_weak(log), + /* K46 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i), + /* K47 */ be_const_int(3), + /* K48 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), + /* K49 */ be_nested_str_weak(remove_sub), +}; + extern const bclass be_class_Matter_IM_Subscription; @@ -13,21 +67,13 @@ be_local_closure(class_Matter_IM_Subscription_event_published, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(update_event_no), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(event_generators), - /* K3 */ be_nested_str_weak(event_is_match), - /* K4 */ be_nested_str_weak(event_no), - /* K5 */ be_nested_str_weak(add), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(event_published), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -68,57 +114,49 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name * be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(path_list), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(_add_attribute_unique_path), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(attribute_updated_ctx), &be_const_str_solidified, ( &(const binstruction[38]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 + 0x580C0007, // 0000 LDCONST R3 K7 0x6010000C, // 0001 GETGBL R4 G12 - 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x88140108, // 0002 GETMBR R5 R0 K8 0x7C100200, // 0003 CALL R4 1 0x14100604, // 0004 LT R4 R3 R4 0x7812001E, // 0005 JMPF R4 #0025 - 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x88100108, // 0006 GETMBR R4 R0 K8 0x94100803, // 0007 GETIDX R4 R4 R3 - 0x88140902, // 0008 GETMBR R5 R4 K2 + 0x88140909, // 0008 GETMBR R5 R4 K9 0x4C180000, // 0009 LDNIL R6 0x1C140A06, // 000A EQ R5 R5 R6 0x74160003, // 000B JMPT R5 #0010 - 0x88140902, // 000C GETMBR R5 R4 K2 - 0x88180302, // 000D GETMBR R6 R1 K2 + 0x88140909, // 000C GETMBR R5 R4 K9 + 0x88180309, // 000D GETMBR R6 R1 K9 0x1C140A06, // 000E EQ R5 R5 R6 0x78160012, // 000F JMPF R5 #0023 - 0x88140903, // 0010 GETMBR R5 R4 K3 + 0x8814090A, // 0010 GETMBR R5 R4 K10 0x4C180000, // 0011 LDNIL R6 0x1C140A06, // 0012 EQ R5 R5 R6 0x74160003, // 0013 JMPT R5 #0018 - 0x88140903, // 0014 GETMBR R5 R4 K3 - 0x88180303, // 0015 GETMBR R6 R1 K3 + 0x8814090A, // 0014 GETMBR R5 R4 K10 + 0x8818030A, // 0015 GETMBR R6 R1 K10 0x1C140A06, // 0016 EQ R5 R5 R6 0x7816000A, // 0017 JMPF R5 #0023 - 0x88140904, // 0018 GETMBR R5 R4 K4 + 0x8814090B, // 0018 GETMBR R5 R4 K11 0x4C180000, // 0019 LDNIL R6 0x1C140A06, // 001A EQ R5 R5 R6 0x74160003, // 001B JMPT R5 #0020 - 0x88140904, // 001C GETMBR R5 R4 K4 - 0x88180304, // 001D GETMBR R6 R1 K4 + 0x8814090B, // 001C GETMBR R5 R4 K11 + 0x8818030B, // 001D GETMBR R6 R1 K11 0x1C140A06, // 001E EQ R5 R5 R6 0x78160002, // 001F JMPF R5 #0023 - 0x8C140105, // 0020 GETMET R5 R0 K5 + 0x8C14010C, // 0020 GETMET R5 R0 K12 0x5C1C0200, // 0021 MOVE R7 R1 0x7C140400, // 0022 CALL R5 2 0x000C0706, // 0023 ADD R3 R3 K6 @@ -137,28 +175,23 @@ be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(updates), - /* K1 */ be_nested_str_weak(clear), - /* K2 */ be_nested_str_weak(wait_status), - /* K3 */ be_nested_str_weak(update_event_no), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(clear_before_arm), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8C04030E, // 0001 GETMET R1 R1 K14 0x7C040200, // 0002 CALL R1 1 0x50040200, // 0003 LDBOOL R1 1 0 - 0x90020401, // 0004 SETMBR R0 K2 R1 + 0x90021E01, // 0004 SETMBR R0 K15 R1 0x4C040000, // 0005 LDNIL R1 - 0x90020601, // 0006 SETMBR R0 K3 R1 + 0x90020001, // 0006 SETMBR R0 K0 R1 0x80000000, // 0007 RET 0 }) ) @@ -173,57 +206,29 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ be_nested_proto( 17, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(subs_shop), - /* K1 */ be_nested_str_weak(subscription_id), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(min_interval_floor), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(min_interval), - /* K6 */ be_nested_str_weak(max_interval_ceiling), - /* K7 */ be_nested_str_weak(max_interval), - /* K8 */ be_nested_str_weak(wait_status), - /* K9 */ be_nested_str_weak(fabric_filtered), - /* K10 */ be_nested_str_weak(im), - /* K11 */ be_nested_str_weak(device), - /* K12 */ be_nested_str_weak(path_list), - /* K13 */ be_nested_str_weak(attributes_requests), - /* K14 */ be_nested_str_weak(push), - /* K15 */ be_nested_str_weak(matter), - /* K16 */ be_nested_str_weak(Path), - /* K17 */ be_nested_str_weak(endpoint), - /* K18 */ be_nested_str_weak(cluster), - /* K19 */ be_nested_str_weak(attribute), - /* K20 */ be_nested_str_weak(stop_iteration), - /* K21 */ be_nested_str_weak(IM), - /* K22 */ be_nested_str_weak(parse_event_filters_min_no), - /* K23 */ be_nested_str_weak(event_filters), - /* K24 */ be_nested_str_weak(updates), - /* K25 */ be_nested_str_weak(clear_before_arm), - /* K26 */ be_nested_str_weak(is_keep_alive), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[69]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x88140903, // 0003 GETMBR R5 R4 K3 - 0x14180B04, // 0004 LT R6 R5 K4 + 0x90022001, // 0000 SETMBR R0 K16 R1 + 0x90022202, // 0001 SETMBR R0 K17 R2 + 0x90022403, // 0002 SETMBR R0 K18 R3 + 0x88140913, // 0003 GETMBR R5 R4 K19 + 0x14180B14, // 0004 LT R6 R5 K20 0x781A0000, // 0005 JMPF R6 #0007 - 0x58140004, // 0006 LDCONST R5 K4 + 0x58140014, // 0006 LDCONST R5 K20 0x541A003B, // 0007 LDINT R6 60 0x24180A06, // 0008 GT R6 R5 R6 0x781A0000, // 0009 JMPF R6 #000B 0x5416003B, // 000A LDINT R5 60 - 0x90020A05, // 000B SETMBR R0 K5 R5 - 0x88180906, // 000C GETMBR R6 R4 K6 + 0x90022A05, // 000B SETMBR R0 K21 R5 + 0x88180916, // 000C GETMBR R6 R4 K22 0x541E003B, // 000D LDINT R7 60 0x141C0C07, // 000E LT R7 R6 R7 0x781E0000, // 000F JMPF R7 #0011 @@ -233,52 +238,52 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ 0x781E0000, // 0013 JMPF R7 #0015 0x541A0E0F, // 0014 LDINT R6 3600 0x541A003B, // 0015 LDINT R6 60 - 0x90020E06, // 0016 SETMBR R0 K7 R6 + 0x90022E06, // 0016 SETMBR R0 K23 R6 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x90021007, // 0018 SETMBR R0 K8 R7 - 0x881C0909, // 0019 GETMBR R7 R4 K9 - 0x90021207, // 001A SETMBR R0 K9 R7 - 0x881C030A, // 001B GETMBR R7 R1 K10 - 0x881C0F0B, // 001C GETMBR R7 R7 K11 + 0x90021E07, // 0018 SETMBR R0 K15 R7 + 0x881C0918, // 0019 GETMBR R7 R4 K24 + 0x90023007, // 001A SETMBR R0 K24 R7 + 0x881C0319, // 001B GETMBR R7 R1 K25 + 0x881C0F1A, // 001C GETMBR R7 R7 K26 0x60200012, // 001D GETGBL R8 G18 0x7C200000, // 001E CALL R8 0 - 0x90021808, // 001F SETMBR R0 K12 R8 - 0x8820090D, // 0020 GETMBR R8 R4 K13 + 0x90021008, // 001F SETMBR R0 K8 R8 + 0x8820091B, // 0020 GETMBR R8 R4 K27 0x4C240000, // 0021 LDNIL R9 0x20201009, // 0022 NE R8 R8 R9 0x78220012, // 0023 JMPF R8 #0037 0x60200010, // 0024 GETGBL R8 G16 - 0x8824090D, // 0025 GETMBR R9 R4 K13 + 0x8824091B, // 0025 GETMBR R9 R4 K27 0x7C200200, // 0026 CALL R8 1 0xA802000B, // 0027 EXBLK 0 #0034 0x5C241000, // 0028 MOVE R9 R8 0x7C240000, // 0029 CALL R9 0 - 0x8828010C, // 002A GETMBR R10 R0 K12 - 0x8C28150E, // 002B GETMET R10 R10 K14 - 0xB8321E00, // 002C GETNGBL R12 K15 - 0x8C301910, // 002D GETMET R12 R12 K16 - 0x88381311, // 002E GETMBR R14 R9 K17 - 0x883C1312, // 002F GETMBR R15 R9 K18 - 0x88401313, // 0030 GETMBR R16 R9 K19 + 0x88280108, // 002A GETMBR R10 R0 K8 + 0x8C28151C, // 002B GETMET R10 R10 K28 + 0xB8323A00, // 002C GETNGBL R12 K29 + 0x8C30191E, // 002D GETMET R12 R12 K30 + 0x88381309, // 002E GETMBR R14 R9 K9 + 0x883C130A, // 002F GETMBR R15 R9 K10 + 0x8840130B, // 0030 GETMBR R16 R9 K11 0x7C300800, // 0031 CALL R12 4 0x7C280400, // 0032 CALL R10 2 0x7001FFF3, // 0033 JMP #0028 - 0x58200014, // 0034 LDCONST R8 K20 + 0x5820001F, // 0034 LDCONST R8 K31 0xAC200200, // 0035 CATCH R8 1 0 0xB0080000, // 0036 RAISE 2 R0 R0 - 0xB8221E00, // 0037 GETNGBL R8 K15 - 0x88201115, // 0038 GETMBR R8 R8 K21 - 0x8C201116, // 0039 GETMET R8 R8 K22 - 0x88280917, // 003A GETMBR R10 R4 K23 + 0xB8223A00, // 0037 GETNGBL R8 K29 + 0x88201120, // 0038 GETMBR R8 R8 K32 + 0x8C201121, // 0039 GETMET R8 R8 K33 + 0x88280922, // 003A GETMBR R10 R4 K34 0x4C2C0000, // 003B LDNIL R11 0x7C200600, // 003C CALL R8 3 0x60240012, // 003D GETGBL R9 G18 0x7C240000, // 003E CALL R9 0 - 0x90023009, // 003F SETMBR R0 K24 R9 - 0x8C240119, // 0040 GETMET R9 R0 K25 + 0x90021A09, // 003F SETMBR R0 K13 R9 + 0x8C240123, // 0040 GETMET R9 R0 K35 0x7C240200, // 0041 CALL R9 1 0x50240000, // 0042 LDBOOL R9 0 0 - 0x90023409, // 0043 SETMBR R0 K26 R9 + 0x90024809, // 0043 SETMBR R0 K36 R9 0x80000000, // 0044 RET 0 }) ) @@ -293,49 +298,41 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(updates), - /* K2 */ be_nested_str_weak(endpoint), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(_add_attribute_unique_path), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080001, // 0000 LDCONST R2 K1 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x8810010D, // 0002 GETMBR R4 R0 K13 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 0x780E0010, // 0005 JMPF R3 #0017 - 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x880C010D, // 0006 GETMBR R3 R0 K13 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100702, // 0008 GETMBR R4 R3 K2 - 0x88140302, // 0009 GETMBR R5 R1 K2 + 0x88100709, // 0008 GETMBR R4 R3 K9 + 0x88140309, // 0009 GETMBR R5 R1 K9 0x1C100805, // 000A EQ R4 R4 R5 0x78120008, // 000B JMPF R4 #0015 - 0x88100703, // 000C GETMBR R4 R3 K3 - 0x88140303, // 000D GETMBR R5 R1 K3 + 0x8810070A, // 000C GETMBR R4 R3 K10 + 0x8814030A, // 000D GETMBR R5 R1 K10 0x1C100805, // 000E EQ R4 R4 R5 0x78120004, // 000F JMPF R4 #0015 - 0x88100704, // 0010 GETMBR R4 R3 K4 - 0x88140304, // 0011 GETMBR R5 R1 K4 + 0x8810070B, // 0010 GETMBR R4 R3 K11 + 0x8814030B, // 0011 GETMBR R5 R1 K11 0x1C100805, // 0012 EQ R4 R4 R5 0x78120000, // 0013 JMPF R4 #0015 0x80000800, // 0014 RET 0 - 0x00080505, // 0015 ADD R2 R2 K5 + 0x00080506, // 0015 ADD R2 R2 K6 0x7001FFE9, // 0016 JMP #0001 - 0x880C0101, // 0017 GETMBR R3 R0 K1 - 0x8C0C0706, // 0018 GETMET R3 R3 K6 + 0x880C010D, // 0017 GETMBR R3 R0 K13 + 0x8C0C071C, // 0018 GETMET R3 R3 K28 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 0x80000000, // 001B RET 0 @@ -352,67 +349,60 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(event_generators), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(restart_from), - /* K4 */ be_nested_str_weak(update_event_no), - /* K5 */ be_nested_str_weak(resize), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(update_event_generator_array), &be_const_str_solidified, ( &(const binstruction[46]) { /* code */ 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080102, // 0001 GETMBR R2 R0 K2 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 + 0x1C040307, // 0003 EQ R1 R1 K7 0x78060002, // 0004 JMPF R1 #0008 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 0x70020024, // 0007 JMP #002D 0x6004000C, // 0008 GETGBL R1 G12 - 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x88080102, // 0009 GETMBR R2 R0 K2 0x7C040200, // 000A CALL R1 1 - 0x1C040302, // 000B EQ R1 R1 K2 + 0x1C040306, // 000B EQ R1 R1 K6 0x78060008, // 000C JMPF R1 #0016 - 0x88040100, // 000D GETMBR R1 R0 K0 - 0x94040301, // 000E GETIDX R1 R1 K1 - 0x8C040303, // 000F GETMET R1 R1 K3 - 0x880C0104, // 0010 GETMBR R3 R0 K4 + 0x88040102, // 000D GETMBR R1 R0 K2 + 0x94040307, // 000E GETIDX R1 R1 K7 + 0x8C040325, // 000F GETMET R1 R1 K37 + 0x880C0100, // 0010 GETMBR R3 R0 K0 0x7C040400, // 0011 CALL R1 2 - 0x88040100, // 0012 GETMBR R1 R0 K0 - 0x94040301, // 0013 GETIDX R1 R1 K1 + 0x88040102, // 0012 GETMBR R1 R0 K2 + 0x94040307, // 0013 GETIDX R1 R1 K7 0x80040200, // 0014 RET 1 R1 0x70020016, // 0015 JMP #002D 0x60040012, // 0016 GETGBL R1 G18 0x7C040000, // 0017 CALL R1 0 - 0x8C080305, // 0018 GETMET R2 R1 K5 + 0x8C080326, // 0018 GETMET R2 R1 K38 0x6010000C, // 0019 GETGBL R4 G12 - 0x88140100, // 001A GETMBR R5 R0 K0 + 0x88140102, // 001A GETMBR R5 R0 K2 0x7C100200, // 001B CALL R4 1 0x7C080400, // 001C CALL R2 2 - 0x58080001, // 001D LDCONST R2 K1 + 0x58080007, // 001D LDCONST R2 K7 0x600C000C, // 001E GETGBL R3 G12 - 0x88100100, // 001F GETMBR R4 R0 K0 + 0x88100102, // 001F GETMBR R4 R0 K2 0x7C0C0200, // 0020 CALL R3 1 0x140C0403, // 0021 LT R3 R2 R3 0x780E0009, // 0022 JMPF R3 #002D - 0x880C0100, // 0023 GETMBR R3 R0 K0 + 0x880C0102, // 0023 GETMBR R3 R0 K2 0x940C0602, // 0024 GETIDX R3 R3 R2 - 0x8C0C0703, // 0025 GETMET R3 R3 K3 - 0x88140104, // 0026 GETMBR R5 R0 K4 + 0x8C0C0725, // 0025 GETMET R3 R3 K37 + 0x88140100, // 0026 GETMBR R5 R0 K0 0x7C0C0400, // 0027 CALL R3 2 - 0x880C0100, // 0028 GETMBR R3 R0 K0 + 0x880C0102, // 0028 GETMBR R3 R0 K2 0x940C0602, // 0029 GETIDX R3 R3 R2 0x98040403, // 002A SETIDX R1 R2 R3 - 0x00080502, // 002B ADD R2 R2 K2 + 0x00080506, // 002B ADD R2 R2 K6 0x7001FFF0, // 002C JMP #001E 0x80000000, // 002D RET 0 }) @@ -428,60 +418,45 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(wait_status), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(millis), - /* K3 */ be_nested_str_weak(expiration), - /* K4 */ be_nested_str_weak(max_interval), - /* K5 */ be_nested_str_weak(MAX_INTERVAL_MARGIN), - /* K6 */ be_nested_str_weak(not_before), - /* K7 */ be_nested_str_weak(min_interval), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(is_keep_alive), - /* K10 */ be_nested_str_weak(log), - /* K11 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i), - /* K12 */ be_nested_str_weak(subscription_id), - /* K13 */ be_const_int(3), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(re_arm), &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010F, // 0000 GETMBR R1 R0 K15 0x74060000, // 0001 JMPT R1 #0003 0x80000200, // 0002 RET 0 0x50040000, // 0003 LDBOOL R1 0 0 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x90021E01, // 0004 SETMBR R0 K15 R1 + 0xB8064E00, // 0005 GETNGBL R1 K39 + 0x8C040328, // 0006 GETMET R1 R1 K40 0x7C040200, // 0007 CALL R1 1 - 0x88080104, // 0008 GETMBR R2 R0 K4 - 0x880C0105, // 0009 GETMBR R3 R0 K5 + 0x88080117, // 0008 GETMBR R2 R0 K23 + 0x880C012A, // 0009 GETMBR R3 R0 K42 0x04080403, // 000A SUB R2 R2 R3 0x540E03E7, // 000B LDINT R3 1000 0x08080403, // 000C MUL R2 R2 R3 0x00080202, // 000D ADD R2 R1 R2 - 0x90020602, // 000E SETMBR R0 K3 R2 - 0x88080107, // 000F GETMBR R2 R0 K7 + 0x90025202, // 000E SETMBR R0 K41 R2 + 0x88080115, // 000F GETMBR R2 R0 K21 0x540E03E7, // 0010 LDINT R3 1000 0x08080403, // 0011 MUL R2 R2 R3 0x00080202, // 0012 ADD R2 R1 R2 - 0x04080508, // 0013 SUB R2 R2 K8 - 0x90020C02, // 0014 SETMBR R0 K6 R2 - 0x88080109, // 0015 GETMBR R2 R0 K9 + 0x0408052C, // 0013 SUB R2 R2 K44 + 0x90025602, // 0014 SETMBR R0 K43 R2 + 0x88080124, // 0015 GETMBR R2 R0 K36 0x740A0006, // 0016 JMPT R2 #001E - 0xB80A1400, // 0017 GETNGBL R2 K10 + 0xB80A5A00, // 0017 GETNGBL R2 K45 0x600C0018, // 0018 GETGBL R3 G24 - 0x5810000B, // 0019 LDCONST R4 K11 - 0x8814010C, // 001A GETMBR R5 R0 K12 + 0x5810002E, // 0019 LDCONST R4 K46 + 0x88140111, // 001A GETMBR R5 R0 K17 0x7C0C0400, // 001B CALL R3 2 - 0x5810000D, // 001C LDCONST R4 K13 + 0x5810002F, // 001C LDCONST R4 K47 0x7C080400, // 001D CALL R2 2 0x80000000, // 001E RET 0 }) @@ -497,15 +472,13 @@ be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* n be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(event_generators), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(set_event_generator_or_arr), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ @@ -514,19 +487,19 @@ be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* n 0x780A0003, // 0002 JMPF R2 #0007 0x60080012, // 0003 GETGBL R2 G18 0x7C080000, // 0004 CALL R2 0 - 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x90020402, // 0005 SETMBR R0 K2 R2 0x7002000A, // 0006 JMP #0012 0x6008000F, // 0007 GETGBL R2 G15 0x5C0C0200, // 0008 MOVE R3 R1 0x60100012, // 0009 GETGBL R4 G18 0x7C080400, // 000A CALL R2 2 0x780A0001, // 000B JMPF R2 #000E - 0x90020001, // 000C SETMBR R0 K0 R1 + 0x90020401, // 000C SETMBR R0 K2 R1 0x70020003, // 000D JMP #0012 0x60080012, // 000E GETGBL R2 G18 0x7C080000, // 000F CALL R2 0 0x400C0401, // 0010 CONNECT R3 R2 R1 - 0x90020002, // 0011 SETMBR R0 K0 R2 + 0x90020402, // 0011 SETMBR R0 K2 R2 0x80000000, // 0012 RET 0 }) ) @@ -541,32 +514,25 @@ be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), - /* K2 */ be_nested_str_weak(subscription_id), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(subs_shop), - /* K5 */ be_nested_str_weak(remove_sub), - }), + &be_ktab_class_Matter_IM_Subscription, /* shared constants */ be_str_weak(remove_self), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 + 0xB8065A00, // 0000 GETNGBL R1 K45 0x60080008, // 0001 GETGBL R2 G8 - 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x880C0111, // 0002 GETMBR R3 R0 K17 0x7C080200, // 0003 CALL R2 1 - 0x000A0202, // 0004 ADD R2 K1 R2 - 0x580C0003, // 0005 LDCONST R3 K3 + 0x000A6002, // 0004 ADD R2 K48 R2 + 0x580C002F, // 0005 LDCONST R3 K47 0x7C040400, // 0006 CALL R1 2 - 0x88040104, // 0007 GETMBR R1 R0 K4 - 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x88040110, // 0007 GETMBR R1 R0 K16 + 0x8C040331, // 0008 GETMET R1 R1 K49 0x5C0C0000, // 0009 MOVE R3 R0 0x7C040400, // 000A CALL R1 2 0x80000000, // 000B RET 0 @@ -611,6 +577,43 @@ be_local_class(Matter_IM_Subscription, })), be_str_weak(Matter_IM_Subscription) ); +// compact class 'Matter_IM_Subscription_Shop' ktab size: 33, total: 51 (saved 144 bytes) +static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[33] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(subs), + /* K2 */ be_nested_str_weak(wait_status), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(time_reached), + /* K5 */ be_nested_str_weak(not_before), + /* K6 */ be_nested_str_weak(updates), + /* K7 */ be_nested_str_weak(update_event_no), + /* K8 */ be_nested_str_weak(im), + /* K9 */ be_nested_str_weak(send_subscribe_update), + /* K10 */ be_nested_str_weak(clear_before_arm), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(expiration), + /* K13 */ be_nested_str_weak(send_subscribe_heartbeat), + /* K14 */ be_nested_str_weak(re_arm), + /* K15 */ be_nested_str_weak(attribute_updated_ctx), + /* K16 */ be_const_int(1), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(remove), + /* K19 */ be_nested_str_weak(crypto), + /* K20 */ be_nested_str_weak(random), + /* K21 */ be_const_int(2), + /* K22 */ be_nested_str_weak(get), + /* K23 */ be_nested_str_weak(get_by_id), + /* K24 */ be_nested_str_weak(matter), + /* K25 */ be_nested_str_weak(IM_Subscription), + /* K26 */ be_nested_str_weak(push), + /* K27 */ be_nested_str_weak(event_published), + /* K28 */ be_nested_str_weak(session), + /* K29 */ be_nested_str_weak(_sessions), + /* K30 */ be_nested_str_weak(remove_by_session), + /* K31 */ be_nested_str_weak(stop_iteration), + /* K32 */ be_nested_str_weak(subscription_id), +}; + extern const bclass be_class_Matter_IM_Subscription_Shop; @@ -621,29 +624,13 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_50ms, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(wait_status), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(time_reached), - /* K5 */ be_nested_str_weak(not_before), - /* K6 */ be_nested_str_weak(updates), - /* K7 */ be_nested_str_weak(update_event_no), - /* K8 */ be_nested_str_weak(im), - /* K9 */ be_nested_str_weak(send_subscribe_update), - /* K10 */ be_nested_str_weak(clear_before_arm), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(expiration), - /* K13 */ be_nested_str_weak(send_subscribe_heartbeat), - /* K14 */ be_nested_str_weak(re_arm), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[58]) { /* code */ @@ -718,20 +705,17 @@ be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(im), - /* K1 */ be_nested_str_weak(subs), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021001, // 0000 SETMBR R0 K8 R1 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 0x90020202, // 0003 SETMBR R0 K1 R2 @@ -749,18 +733,13 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(attribute_updated_ctx), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(attribute_updated_ctx), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -772,11 +751,11 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n 0x78120007, // 0005 JMPF R4 #000E 0x88100101, // 0006 GETMBR R4 R0 K1 0x94100803, // 0007 GETIDX R4 R4 R3 - 0x8C100902, // 0008 GETMET R4 R4 K2 + 0x8C10090F, // 0008 GETMET R4 R4 K15 0x5C180200, // 0009 MOVE R6 R1 0x5C1C0400, // 000A MOVE R7 R2 0x7C100600, // 000B CALL R4 3 - 0x000C0703, // 000C ADD R3 R3 K3 + 0x000C0710, // 000C ADD R3 R3 K16 0x7001FFF2, // 000D JMP #0001 0x80000000, // 000E RET 0 }) @@ -792,22 +771,17 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(remove), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(remove_sub), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080011, // 0000 LDCONST R2 K17 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -818,11 +792,11 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ 0x1C0C0601, // 0008 EQ R3 R3 R1 0x780E0004, // 0009 JMPF R3 #000F 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x8C0C0702, // 000B GETMET R3 R3 K2 + 0x8C0C0712, // 000B GETMET R3 R3 K18 0x5C140400, // 000C MOVE R5 R2 0x7C0C0400, // 000D CALL R3 2 0x70020000, // 000E JMP #0010 - 0x00080503, // 000F ADD R2 R2 K3 + 0x0008050B, // 000F ADD R2 R2 K11 0x7001FFEF, // 0010 JMP #0001 0x80000000, // 0011 RET 0 }) @@ -838,58 +812,47 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name * be_nested_proto( 13, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(get_by_id), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(IM_Subscription), - /* K8 */ be_nested_str_weak(subs), - /* K9 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(new_subscription), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140901, // 0001 GETMET R5 R4 K1 - 0x581C0002, // 0002 LDCONST R7 K2 + 0xA4122600, // 0000 IMPORT R4 K19 + 0x8C140914, // 0001 GETMET R5 R4 K20 + 0x581C0015, // 0002 LDCONST R7 K21 0x7C140400, // 0003 CALL R5 2 - 0x8C140B03, // 0004 GETMET R5 R5 K3 - 0x581C0004, // 0005 LDCONST R7 K4 - 0x58200002, // 0006 LDCONST R8 K2 + 0x8C140B16, // 0004 GETMET R5 R5 K22 + 0x581C0000, // 0005 LDCONST R7 K0 + 0x58200015, // 0006 LDCONST R8 K21 0x7C140600, // 0007 CALL R5 3 - 0x8C180105, // 0008 GETMET R6 R0 K5 + 0x8C180117, // 0008 GETMET R6 R0 K23 0x5C200A00, // 0009 MOVE R8 R5 0x7C180400, // 000A CALL R6 2 0x781A0008, // 000B JMPF R6 #0015 - 0x8C180901, // 000C GETMET R6 R4 K1 - 0x58200002, // 000D LDCONST R8 K2 + 0x8C180914, // 000C GETMET R6 R4 K20 + 0x58200015, // 000D LDCONST R8 K21 0x7C180400, // 000E CALL R6 2 - 0x8C180D03, // 000F GETMET R6 R6 K3 - 0x58200004, // 0010 LDCONST R8 K4 - 0x58240002, // 0011 LDCONST R9 K2 + 0x8C180D16, // 000F GETMET R6 R6 K22 + 0x58200000, // 0010 LDCONST R8 K0 + 0x58240015, // 0011 LDCONST R9 K21 0x7C180600, // 0012 CALL R6 3 0x5C140C00, // 0013 MOVE R5 R6 0x7001FFF2, // 0014 JMP #0008 - 0xB81A0C00, // 0015 GETNGBL R6 K6 - 0x8C180D07, // 0016 GETMET R6 R6 K7 + 0xB81A3000, // 0015 GETNGBL R6 K24 + 0x8C180D19, // 0016 GETMET R6 R6 K25 0x5C200000, // 0017 MOVE R8 R0 0x5C240A00, // 0018 MOVE R9 R5 0x5C280200, // 0019 MOVE R10 R1 0x5C2C0400, // 001A MOVE R11 R2 0x5C300600, // 001B MOVE R12 R3 0x7C180C00, // 001C CALL R6 6 - 0x881C0108, // 001D GETMBR R7 R0 K8 - 0x8C1C0F09, // 001E GETMET R7 R7 K9 + 0x881C0101, // 001D GETMBR R7 R0 K1 + 0x8C1C0F1A, // 001E GETMET R7 R7 K26 0x5C240C00, // 001F MOVE R9 R6 0x7C1C0400, // 0020 CALL R7 2 0x80040C00, // 0021 RET 1 R6 @@ -906,22 +869,17 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(event_published), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(event_published), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080011, // 0000 LDCONST R2 K17 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -929,10 +887,10 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ 0x780E0006, // 0005 JMPF R3 #000D 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C0C0702, // 0008 GETMET R3 R3 K2 + 0x8C0C071B, // 0008 GETMET R3 R3 K27 0x5C140200, // 0009 MOVE R5 R1 0x7C0C0400, // 000A CALL R3 2 - 0x00080503, // 000B ADD R2 R2 K3 + 0x00080510, // 000B ADD R2 R2 K16 0x7001FFF3, // 000C JMP #0001 0x80000000, // 000D RET 0 }) @@ -948,23 +906,17 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(remove_by_session), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080011, // 0000 LDCONST R2 K17 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -972,15 +924,15 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name 0x780E000B, // 0005 JMPF R3 #0012 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x880C0702, // 0008 GETMBR R3 R3 K2 + 0x880C071C, // 0008 GETMBR R3 R3 K28 0x1C0C0601, // 0009 EQ R3 R3 R1 0x780E0004, // 000A JMPF R3 #0010 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x8C0C0703, // 000C GETMET R3 R3 K3 + 0x8C0C0712, // 000C GETMET R3 R3 K18 0x5C140400, // 000D MOVE R5 R2 0x7C0C0400, // 000E CALL R3 2 0x70020000, // 000F JMP #0011 - 0x00080504, // 0010 ADD R2 R2 K4 + 0x0008050B, // 0010 ADD R2 R2 K11 0x7001FFEE, // 0011 JMP #0001 0x80000000, // 0012 RET 0 }) @@ -996,31 +948,27 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name * be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_sessions), - /* K1 */ be_nested_str_weak(remove_by_session), - /* K2 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(remove_by_fabric), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x880C0300, // 0001 GETMBR R3 R1 K0 + 0x880C031D, // 0001 GETMBR R3 R1 K29 0x7C080200, // 0002 CALL R2 1 0xA8020005, // 0003 EXBLK 0 #000A 0x5C0C0400, // 0004 MOVE R3 R2 0x7C0C0000, // 0005 CALL R3 0 - 0x8C100101, // 0006 GETMET R4 R0 K1 + 0x8C10011E, // 0006 GETMET R4 R0 K30 0x5C180600, // 0007 MOVE R6 R3 0x7C100400, // 0008 CALL R4 2 0x7001FFF9, // 0009 JMP #0004 - 0x58080002, // 000A LDCONST R2 K2 + 0x5808001F, // 000A LDCONST R2 K31 0xAC080200, // 000B CATCH R2 1 0 0xB0080000, // 000C RAISE 2 R0 R0 0x80000000, // 000D RET 0 @@ -1037,22 +985,17 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(subs), - /* K2 */ be_nested_str_weak(subscription_id), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */ be_str_weak(get_by_id), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080011, // 0000 LDCONST R2 K17 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -1060,13 +1003,13 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ 0x780E0009, // 0005 JMPF R3 #0010 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x880C0702, // 0008 GETMBR R3 R3 K2 + 0x880C0720, // 0008 GETMBR R3 R3 K32 0x1C0C0601, // 0009 EQ R3 R3 R1 0x780E0002, // 000A JMPF R3 #000E 0x880C0101, // 000B GETMBR R3 R0 K1 0x940C0602, // 000C GETIDX R3 R3 R2 0x80040600, // 000D RET 1 R3 - 0x00080503, // 000E ADD R2 R2 K3 + 0x0008050B, // 000E ADD R2 R2 K11 0x7001FFF0, // 000F JMP #0001 0x80000000, // 0010 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index ff183283a..fe1bf4967 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -3,6 +3,88 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Matter_Frame; +// compact class 'Matter_Frame' ktab size: 77, total: 200 (saved 984 bytes) +static const bvalue be_ktab_class_Matter_Frame[77] = { + /* K0 */ be_nested_str_weak(session), + /* K1 */ be_nested_str_weak(get_node_id), + /* K2 */ be_nested_str_weak(crypto), + /* K3 */ be_nested_str_weak(raw), + /* K4 */ be_nested_str_weak(payload_idx), + /* K5 */ be_nested_str_weak(get_r2i), + /* K6 */ be_nested_str_weak(message_handler), + /* K7 */ be_nested_str_weak(_n_bytes), + /* K8 */ be_nested_str_weak(clear), + /* K9 */ be_nested_str_weak(add), + /* K10 */ be_nested_str_weak(flags), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(message_counter), + /* K13 */ be_nested_str_weak(is_CASE), + /* K14 */ be_nested_str_weak(get_device_id), + /* K15 */ be_nested_str_weak(resize), + /* K16 */ be_nested_str_weak(AES_CCM), + /* K17 */ be_nested_str_weak(encrypt1), + /* K18 */ be_const_int(0), + /* K19 */ be_nested_str_weak(remote_ip), + /* K20 */ be_nested_str_weak(remote_port), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str_weak(flag_s), + /* K23 */ be_nested_str_weak(flag_dsiz), + /* K24 */ be_const_int(3), + /* K25 */ be_nested_str_weak(local_session_id), + /* K26 */ be_const_int(2), + /* K27 */ be_nested_str_weak(sec_flags), + /* K28 */ be_nested_str_weak(sec_p), + /* K29 */ be_nested_str_weak(sec_c), + /* K30 */ be_nested_str_weak(sec_sesstype), + /* K31 */ be_nested_str_weak(source_node_id), + /* K32 */ be_nested_str_weak(dest_node_id_8), + /* K33 */ be_nested_str_weak(dest_node_id_2), + /* K34 */ be_nested_str_weak(x_flags), + /* K35 */ be_nested_str_weak(x_flag_v), + /* K36 */ be_nested_str_weak(x_flag_r), + /* K37 */ be_nested_str_weak(x_flag_a), + /* K38 */ be_nested_str_weak(x_flag_i), + /* K39 */ be_nested_str_weak(opcode), + /* K40 */ be_nested_str_weak(exchange_id), + /* K41 */ be_nested_str_weak(protocol_id), + /* K42 */ be_nested_str_weak(ack_message_counter), + /* K43 */ be_nested_str_weak(app_payload_idx), + /* K44 */ be_nested_str_weak(get), + /* K45 */ be_nested_str_weak(getbits), + /* K46 */ be_nested_str_weak(sec_mx), + /* K47 */ be_nested_str_weak(matter), + /* K48 */ be_nested_str_weak(Frame), + /* K49 */ be_nested_str_weak(decode_header), + /* K50 */ be_nested_str_weak(decode_payload), + /* K51 */ be_const_int(1), + /* K52 */ be_nested_str_weak(initiator_session_id), + /* K53 */ be_nested_str_weak(counter_snd_next), + /* K54 */ be_nested_str_weak(_counter_insecure_snd), + /* K55 */ be_nested_str_weak(next), + /* K56 */ be_nested_str_weak(get_opcode_name), + /* K57 */ be_nested_str_weak(0x_X2502X), + /* K58 */ be_nested_str_weak(log), + /* K59 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), + /* K60 */ be_const_int(3), + /* K61 */ be_nested_str_weak(get_i2r), + /* K62 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), + /* K63 */ be_const_int(2), + /* K64 */ be_nested_str_weak(get_i2r_privacy), + /* K65 */ be_const_int(2147483647), + /* K66 */ be_nested_str_weak(AES_CTR), + /* K67 */ be_nested_str_weak(decrypt), + /* K68 */ be_nested_str_weak(peer_node_id), + /* K69 */ be_nested_str_weak(decrypt1), + /* K70 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), + /* K71 */ be_const_class(be_class_Matter_Frame), + /* K72 */ be_nested_str_weak(_ip), + /* K73 */ be_nested_str_weak(_port), + /* K74 */ be_nested_str_weak(_exchange_id), + /* K75 */ be_nested_str_weak(x_flag_sx), + /* K76 */ be_nested_str_weak(vendor_id), +}; + extern const bclass be_class_Matter_Frame; @@ -13,16 +95,13 @@ be_local_closure(class_Matter_Frame_get_node_id, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(session), - /* K1 */ be_nested_str_weak(get_node_id), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(get_node_id), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ @@ -47,82 +126,63 @@ be_local_closure(class_Matter_Frame_encrypt, /* name */ be_nested_proto( 23, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(payload_idx), - /* K4 */ be_nested_str_weak(get_r2i), - /* K5 */ be_nested_str_weak(message_handler), - /* K6 */ be_nested_str_weak(_n_bytes), - /* K7 */ be_nested_str_weak(clear), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(flags), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(message_counter), - /* K12 */ be_nested_str_weak(is_CASE), - /* K13 */ be_nested_str_weak(get_device_id), - /* K14 */ be_nested_str_weak(resize), - /* K15 */ be_nested_str_weak(AES_CCM), - /* K16 */ be_nested_str_weak(encrypt1), - /* K17 */ be_const_int(0), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(encrypt), &be_const_str_solidified, ( &(const binstruction[63]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x88100103, // 0003 GETMBR R4 R0 K3 + 0xA4060400, // 0000 IMPORT R1 K2 + 0x88080103, // 0001 GETMBR R2 R0 K3 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x88100104, // 0003 GETMBR R4 R0 K4 0x5416000F, // 0004 LDINT R5 16 - 0x8C180704, // 0005 GETMET R6 R3 K4 + 0x8C180705, // 0005 GETMET R6 R3 K5 0x7C180200, // 0006 CALL R6 1 - 0x881C0105, // 0007 GETMBR R7 R0 K5 - 0x881C0F06, // 0008 GETMBR R7 R7 K6 - 0x8C200F07, // 0009 GETMET R8 R7 K7 + 0x881C0106, // 0007 GETMBR R7 R0 K6 + 0x881C0F07, // 0008 GETMBR R7 R7 K7 + 0x8C200F08, // 0009 GETMET R8 R7 K8 0x7C200200, // 000A CALL R8 1 - 0x8C200F08, // 000B GETMET R8 R7 K8 - 0x88280109, // 000C GETMBR R10 R0 K9 - 0x582C000A, // 000D LDCONST R11 K10 + 0x8C200F09, // 000B GETMET R8 R7 K9 + 0x8828010A, // 000C GETMBR R10 R0 K10 + 0x582C000B, // 000D LDCONST R11 K11 0x7C200600, // 000E CALL R8 3 - 0x8C200F08, // 000F GETMET R8 R7 K8 - 0x8828010B, // 0010 GETMBR R10 R0 K11 + 0x8C200F09, // 000F GETMET R8 R7 K9 + 0x8828010C, // 0010 GETMBR R10 R0 K12 0x542E0003, // 0011 LDINT R11 4 0x7C200600, // 0012 CALL R8 3 - 0x8C20070C, // 0013 GETMET R8 R3 K12 + 0x8C20070D, // 0013 GETMET R8 R3 K13 0x7C200200, // 0014 CALL R8 1 0x78220005, // 0015 JMPF R8 #001C - 0x8C20070D, // 0016 GETMET R8 R3 K13 + 0x8C20070E, // 0016 GETMET R8 R3 K14 0x7C200200, // 0017 CALL R8 1 0x78220002, // 0018 JMPF R8 #001C - 0x8C20070D, // 0019 GETMET R8 R3 K13 + 0x8C20070E, // 0019 GETMET R8 R3 K14 0x7C200200, // 001A CALL R8 1 0x40200E08, // 001B CONNECT R8 R7 R8 - 0x8C200F0E, // 001C GETMET R8 R7 K14 + 0x8C200F0F, // 001C GETMET R8 R7 K15 0x542A000C, // 001D LDINT R10 13 0x7C200400, // 001E CALL R8 2 - 0x8C20050E, // 001F GETMET R8 R2 K14 + 0x8C20050F, // 001F GETMET R8 R2 K15 0x6028000C, // 0020 GETGBL R10 G12 0x5C2C0400, // 0021 MOVE R11 R2 0x7C280200, // 0022 CALL R10 1 0x00281405, // 0023 ADD R10 R10 R5 0x7C200400, // 0024 CALL R8 2 - 0x8820030F, // 0025 GETMBR R8 R1 K15 - 0x8C201110, // 0026 GETMET R8 R8 K16 + 0x88200310, // 0025 GETMBR R8 R1 K16 + 0x8C201111, // 0026 GETMET R8 R8 K17 0x5C280C00, // 0027 MOVE R10 R6 0x5C2C0E00, // 0028 MOVE R11 R7 - 0x58300011, // 0029 LDCONST R12 K17 + 0x58300012, // 0029 LDCONST R12 K18 0x6034000C, // 002A GETGBL R13 G12 0x5C380E00, // 002B MOVE R14 R7 0x7C340200, // 002C CALL R13 1 0x5C380400, // 002D MOVE R14 R2 - 0x583C0011, // 002E LDCONST R15 K17 + 0x583C0012, // 002E LDCONST R15 K18 0x5C400800, // 002F MOVE R16 R4 0x5C440400, // 0030 MOVE R17 R2 0x5C480800, // 0031 MOVE R18 R4 @@ -152,25 +212,20 @@ be_local_closure(class_Matter_Frame_init, /* name */ be_nested_proto( 5, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(remote_ip), - /* K3 */ be_nested_str_weak(remote_port), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x90020604, // 0003 SETMBR R0 K3 R4 + 0x90020C01, // 0000 SETMBR R0 K6 R1 + 0x90020602, // 0001 SETMBR R0 K3 R2 + 0x90022603, // 0002 SETMBR R0 K19 R3 + 0x90022804, // 0003 SETMBR R0 K20 R4 0x80000000, // 0004 RET 0 }) ) @@ -185,43 +240,13 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(flags), - /* K2 */ be_nested_str_weak(flag_s), - /* K3 */ be_nested_str_weak(flag_dsiz), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(add), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(local_session_id), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(sec_flags), - /* K10 */ be_nested_str_weak(sec_p), - /* K11 */ be_nested_str_weak(sec_c), - /* K12 */ be_nested_str_weak(sec_sesstype), - /* K13 */ be_nested_str_weak(message_counter), - /* K14 */ be_nested_str_weak(source_node_id), - /* K15 */ be_nested_str_weak(dest_node_id_8), - /* K16 */ be_nested_str_weak(dest_node_id_2), - /* K17 */ be_nested_str_weak(payload_idx), - /* K18 */ be_nested_str_weak(x_flags), - /* K19 */ be_nested_str_weak(x_flag_v), - /* K20 */ be_nested_str_weak(x_flag_r), - /* K21 */ be_nested_str_weak(x_flag_a), - /* K22 */ be_nested_str_weak(x_flag_i), - /* K23 */ be_nested_str_weak(opcode), - /* K24 */ be_nested_str_weak(exchange_id), - /* K25 */ be_nested_str_weak(protocol_id), - /* K26 */ be_nested_str_weak(ack_message_counter), - /* K27 */ be_nested_str_weak(app_payload_idx), - /* K28 */ be_nested_str_weak(raw), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(encode_frame), &be_const_str_solidified, ( &(const binstruction[161]) { /* code */ @@ -235,156 +260,156 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ 0x5C180200, // 0007 MOVE R6 R1 0x7C140200, // 0008 CALL R5 1 0x70020000, // 0009 JMP #000B - 0x58140000, // 000A LDCONST R5 K0 + 0x58140015, // 000A LDCONST R5 K21 0x00100805, // 000B ADD R4 R4 R5 0x7C0C0200, // 000C CALL R3 1 0x5C080600, // 000D MOVE R2 R3 - 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x880C010A, // 000E GETMBR R3 R0 K10 0x4C100000, // 000F LDNIL R4 0x1C0C0604, // 0010 EQ R3 R3 R4 0x780E000D, // 0011 JMPF R3 #0020 - 0x90020300, // 0012 SETMBR R0 K1 K0 - 0x880C0102, // 0013 GETMBR R3 R0 K2 + 0x90021515, // 0012 SETMBR R0 K10 K21 + 0x880C0116, // 0013 GETMBR R3 R0 K22 0x780E0003, // 0014 JMPF R3 #0019 - 0x880C0101, // 0015 GETMBR R3 R0 K1 + 0x880C010A, // 0015 GETMBR R3 R0 K10 0x54120003, // 0016 LDINT R4 4 0x300C0604, // 0017 OR R3 R3 R4 - 0x90020203, // 0018 SETMBR R0 K1 R3 - 0x880C0103, // 0019 GETMBR R3 R0 K3 + 0x90021403, // 0018 SETMBR R0 K10 R3 + 0x880C0117, // 0019 GETMBR R3 R0 K23 0x780E0004, // 001A JMPF R3 #0020 - 0x880C0101, // 001B GETMBR R3 R0 K1 - 0x88100103, // 001C GETMBR R4 R0 K3 - 0x2C100904, // 001D AND R4 R4 K4 + 0x880C010A, // 001B GETMBR R3 R0 K10 + 0x88100117, // 001C GETMBR R4 R0 K23 + 0x2C100918, // 001D AND R4 R4 K24 0x300C0604, // 001E OR R3 R3 R4 - 0x90020203, // 001F SETMBR R0 K1 R3 - 0x8C0C0505, // 0020 GETMET R3 R2 K5 - 0x88140101, // 0021 GETMBR R5 R0 K1 - 0x58180006, // 0022 LDCONST R6 K6 + 0x90021403, // 001F SETMBR R0 K10 R3 + 0x8C0C0509, // 0020 GETMET R3 R2 K9 + 0x8814010A, // 0021 GETMBR R5 R0 K10 + 0x5818000B, // 0022 LDCONST R6 K11 0x7C0C0600, // 0023 CALL R3 3 - 0x8C0C0505, // 0024 GETMET R3 R2 K5 - 0x88140107, // 0025 GETMBR R5 R0 K7 + 0x8C0C0509, // 0024 GETMET R3 R2 K9 + 0x88140119, // 0025 GETMBR R5 R0 K25 0x78160001, // 0026 JMPF R5 #0029 - 0x88140107, // 0027 GETMBR R5 R0 K7 + 0x88140119, // 0027 GETMBR R5 R0 K25 0x70020000, // 0028 JMP #002A - 0x58140000, // 0029 LDCONST R5 K0 - 0x58180008, // 002A LDCONST R6 K8 + 0x58140015, // 0029 LDCONST R5 K21 + 0x5818001A, // 002A LDCONST R6 K26 0x7C0C0600, // 002B CALL R3 3 - 0x880C0109, // 002C GETMBR R3 R0 K9 + 0x880C011B, // 002C GETMBR R3 R0 K27 0x4C100000, // 002D LDNIL R4 0x1C0C0604, // 002E EQ R3 R3 R4 0x780E0013, // 002F JMPF R3 #0044 - 0x90021300, // 0030 SETMBR R0 K9 K0 - 0x880C010A, // 0031 GETMBR R3 R0 K10 + 0x90023715, // 0030 SETMBR R0 K27 K21 + 0x880C011C, // 0031 GETMBR R3 R0 K28 0x780E0003, // 0032 JMPF R3 #0037 - 0x880C0109, // 0033 GETMBR R3 R0 K9 + 0x880C011B, // 0033 GETMBR R3 R0 K27 0x5412007F, // 0034 LDINT R4 128 0x300C0604, // 0035 OR R3 R3 R4 - 0x90021203, // 0036 SETMBR R0 K9 R3 - 0x880C010B, // 0037 GETMBR R3 R0 K11 + 0x90023603, // 0036 SETMBR R0 K27 R3 + 0x880C011D, // 0037 GETMBR R3 R0 K29 0x780E0003, // 0038 JMPF R3 #003D - 0x880C0109, // 0039 GETMBR R3 R0 K9 + 0x880C011B, // 0039 GETMBR R3 R0 K27 0x5412003F, // 003A LDINT R4 64 0x300C0604, // 003B OR R3 R3 R4 - 0x90021203, // 003C SETMBR R0 K9 R3 - 0x880C010C, // 003D GETMBR R3 R0 K12 + 0x90023603, // 003C SETMBR R0 K27 R3 + 0x880C011E, // 003D GETMBR R3 R0 K30 0x780E0004, // 003E JMPF R3 #0044 - 0x880C0109, // 003F GETMBR R3 R0 K9 - 0x8810010C, // 0040 GETMBR R4 R0 K12 - 0x2C100904, // 0041 AND R4 R4 K4 + 0x880C011B, // 003F GETMBR R3 R0 K27 + 0x8810011E, // 0040 GETMBR R4 R0 K30 + 0x2C100918, // 0041 AND R4 R4 K24 0x300C0604, // 0042 OR R3 R3 R4 - 0x90021203, // 0043 SETMBR R0 K9 R3 - 0x8C0C0505, // 0044 GETMET R3 R2 K5 - 0x88140109, // 0045 GETMBR R5 R0 K9 - 0x58180006, // 0046 LDCONST R6 K6 + 0x90023603, // 0043 SETMBR R0 K27 R3 + 0x8C0C0509, // 0044 GETMET R3 R2 K9 + 0x8814011B, // 0045 GETMBR R5 R0 K27 + 0x5818000B, // 0046 LDCONST R6 K11 0x7C0C0600, // 0047 CALL R3 3 - 0x8C0C0505, // 0048 GETMET R3 R2 K5 - 0x8814010D, // 0049 GETMBR R5 R0 K13 + 0x8C0C0509, // 0048 GETMET R3 R2 K9 + 0x8814010C, // 0049 GETMBR R5 R0 K12 0x541A0003, // 004A LDINT R6 4 0x7C0C0600, // 004B CALL R3 3 - 0x880C0102, // 004C GETMBR R3 R0 K2 + 0x880C0116, // 004C GETMBR R3 R0 K22 0x780E0001, // 004D JMPF R3 #0050 - 0x880C010E, // 004E GETMBR R3 R0 K14 + 0x880C011F, // 004E GETMBR R3 R0 K31 0x400C0403, // 004F CONNECT R3 R2 R3 - 0x880C0103, // 0050 GETMBR R3 R0 K3 - 0x1C0C0706, // 0051 EQ R3 R3 K6 + 0x880C0117, // 0050 GETMBR R3 R0 K23 + 0x1C0C070B, // 0051 EQ R3 R3 K11 0x780E0001, // 0052 JMPF R3 #0055 - 0x880C010F, // 0053 GETMBR R3 R0 K15 + 0x880C0120, // 0053 GETMBR R3 R0 K32 0x400C0403, // 0054 CONNECT R3 R2 R3 - 0x880C0103, // 0055 GETMBR R3 R0 K3 - 0x1C0C0708, // 0056 EQ R3 R3 K8 + 0x880C0117, // 0055 GETMBR R3 R0 K23 + 0x1C0C071A, // 0056 EQ R3 R3 K26 0x780E0003, // 0057 JMPF R3 #005C - 0x8C0C0505, // 0058 GETMET R3 R2 K5 - 0x88140110, // 0059 GETMBR R5 R0 K16 - 0x58180008, // 005A LDCONST R6 K8 + 0x8C0C0509, // 0058 GETMET R3 R2 K9 + 0x88140121, // 0059 GETMBR R5 R0 K33 + 0x5818001A, // 005A LDCONST R6 K26 0x7C0C0600, // 005B CALL R3 3 0x600C000C, // 005C GETGBL R3 G12 0x5C100400, // 005D MOVE R4 R2 0x7C0C0200, // 005E CALL R3 1 - 0x90022203, // 005F SETMBR R0 K17 R3 - 0x880C0112, // 0060 GETMBR R3 R0 K18 + 0x90020803, // 005F SETMBR R0 K4 R3 + 0x880C0122, // 0060 GETMBR R3 R0 K34 0x4C100000, // 0061 LDNIL R4 0x1C0C0604, // 0062 EQ R3 R3 R4 0x780E0016, // 0063 JMPF R3 #007B - 0x90022500, // 0064 SETMBR R0 K18 K0 - 0x880C0113, // 0065 GETMBR R3 R0 K19 + 0x90024515, // 0064 SETMBR R0 K34 K21 + 0x880C0123, // 0065 GETMBR R3 R0 K35 0x780E0003, // 0066 JMPF R3 #006B - 0x880C0112, // 0067 GETMBR R3 R0 K18 + 0x880C0122, // 0067 GETMBR R3 R0 K34 0x5412000F, // 0068 LDINT R4 16 0x300C0604, // 0069 OR R3 R3 R4 - 0x90022403, // 006A SETMBR R0 K18 R3 - 0x880C0114, // 006B GETMBR R3 R0 K20 + 0x90024403, // 006A SETMBR R0 K34 R3 + 0x880C0124, // 006B GETMBR R3 R0 K36 0x780E0003, // 006C JMPF R3 #0071 - 0x880C0112, // 006D GETMBR R3 R0 K18 + 0x880C0122, // 006D GETMBR R3 R0 K34 0x54120003, // 006E LDINT R4 4 0x300C0604, // 006F OR R3 R3 R4 - 0x90022403, // 0070 SETMBR R0 K18 R3 - 0x880C0115, // 0071 GETMBR R3 R0 K21 + 0x90024403, // 0070 SETMBR R0 K34 R3 + 0x880C0125, // 0071 GETMBR R3 R0 K37 0x780E0002, // 0072 JMPF R3 #0076 - 0x880C0112, // 0073 GETMBR R3 R0 K18 - 0x300C0708, // 0074 OR R3 R3 K8 - 0x90022403, // 0075 SETMBR R0 K18 R3 - 0x880C0116, // 0076 GETMBR R3 R0 K22 + 0x880C0122, // 0073 GETMBR R3 R0 K34 + 0x300C071A, // 0074 OR R3 R3 K26 + 0x90024403, // 0075 SETMBR R0 K34 R3 + 0x880C0126, // 0076 GETMBR R3 R0 K38 0x780E0002, // 0077 JMPF R3 #007B - 0x880C0112, // 0078 GETMBR R3 R0 K18 - 0x300C0706, // 0079 OR R3 R3 K6 - 0x90022403, // 007A SETMBR R0 K18 R3 - 0x8C0C0505, // 007B GETMET R3 R2 K5 - 0x88140112, // 007C GETMBR R5 R0 K18 - 0x58180006, // 007D LDCONST R6 K6 + 0x880C0122, // 0078 GETMBR R3 R0 K34 + 0x300C070B, // 0079 OR R3 R3 K11 + 0x90024403, // 007A SETMBR R0 K34 R3 + 0x8C0C0509, // 007B GETMET R3 R2 K9 + 0x88140122, // 007C GETMBR R5 R0 K34 + 0x5818000B, // 007D LDCONST R6 K11 0x7C0C0600, // 007E CALL R3 3 - 0x8C0C0505, // 007F GETMET R3 R2 K5 - 0x88140117, // 0080 GETMBR R5 R0 K23 - 0x58180006, // 0081 LDCONST R6 K6 + 0x8C0C0509, // 007F GETMET R3 R2 K9 + 0x88140127, // 0080 GETMBR R5 R0 K39 + 0x5818000B, // 0081 LDCONST R6 K11 0x7C0C0600, // 0082 CALL R3 3 - 0x8C0C0505, // 0083 GETMET R3 R2 K5 - 0x88140118, // 0084 GETMBR R5 R0 K24 + 0x8C0C0509, // 0083 GETMET R3 R2 K9 + 0x88140128, // 0084 GETMBR R5 R0 K40 0x4C180000, // 0085 LDNIL R6 0x20140A06, // 0086 NE R5 R5 R6 0x78160003, // 0087 JMPF R5 #008C - 0x88140118, // 0088 GETMBR R5 R0 K24 + 0x88140128, // 0088 GETMBR R5 R0 K40 0x541AFFFE, // 0089 LDINT R6 65535 0x2C140A06, // 008A AND R5 R5 R6 0x70020000, // 008B JMP #008D - 0x58140000, // 008C LDCONST R5 K0 - 0x58180008, // 008D LDCONST R6 K8 + 0x58140015, // 008C LDCONST R5 K21 + 0x5818001A, // 008D LDCONST R6 K26 0x7C0C0600, // 008E CALL R3 3 - 0x8C0C0505, // 008F GETMET R3 R2 K5 - 0x88140119, // 0090 GETMBR R5 R0 K25 - 0x58180008, // 0091 LDCONST R6 K8 + 0x8C0C0509, // 008F GETMET R3 R2 K9 + 0x88140129, // 0090 GETMBR R5 R0 K41 + 0x5818001A, // 0091 LDCONST R6 K26 0x7C0C0600, // 0092 CALL R3 3 - 0x880C0115, // 0093 GETMBR R3 R0 K21 + 0x880C0125, // 0093 GETMBR R3 R0 K37 0x780E0003, // 0094 JMPF R3 #0099 - 0x8C0C0505, // 0095 GETMET R3 R2 K5 - 0x8814011A, // 0096 GETMBR R5 R0 K26 + 0x8C0C0509, // 0095 GETMET R3 R2 K9 + 0x8814012A, // 0096 GETMBR R5 R0 K42 0x541A0003, // 0097 LDINT R6 4 0x7C0C0600, // 0098 CALL R3 3 0x600C000C, // 0099 GETGBL R3 G12 0x5C100400, // 009A MOVE R4 R2 0x7C0C0200, // 009B CALL R3 1 - 0x90023603, // 009C SETMBR R0 K27 R3 + 0x90025603, // 009C SETMBR R0 K43 R3 0x78060000, // 009D JMPF R1 #009F 0x400C0401, // 009E CONNECT R3 R2 R1 - 0x90023802, // 009F SETMBR R0 K28 R2 + 0x90020602, // 009F SETMBR R0 K3 R2 0x80040400, // 00A0 RET 1 R2 }) ) @@ -399,157 +424,135 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(flags), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(flag_s), - /* K6 */ be_nested_str_weak(getbits), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(flag_dsiz), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(sec_flags), - /* K11 */ be_nested_str_weak(sec_p), - /* K12 */ be_nested_str_weak(sec_c), - /* K13 */ be_nested_str_weak(sec_mx), - /* K14 */ be_nested_str_weak(sec_sesstype), - /* K15 */ be_nested_str_weak(local_session_id), - /* K16 */ be_nested_str_weak(message_counter), - /* K17 */ be_nested_str_weak(source_node_id), - /* K18 */ be_nested_str_weak(dest_node_id_8), - /* K19 */ be_nested_str_weak(dest_node_id_2), - /* K20 */ be_nested_str_weak(payload_idx), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(decode_header), &be_const_str_solidified, ( &(const binstruction[121]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C0C0503, // 0002 GETMET R3 R2 K3 - 0x58140000, // 0003 LDCONST R5 K0 - 0x58180004, // 0004 LDCONST R6 K4 + 0x58040015, // 0000 LDCONST R1 K21 + 0x88080103, // 0001 GETMBR R2 R0 K3 + 0x8C0C052C, // 0002 GETMET R3 R2 K44 + 0x58140015, // 0003 LDCONST R5 K21 + 0x5818000B, // 0004 LDCONST R6 K11 0x7C0C0600, // 0005 CALL R3 3 - 0x90020403, // 0006 SETMBR R0 K2 R3 - 0x880C0102, // 0007 GETMBR R3 R0 K2 + 0x90021403, // 0006 SETMBR R0 K10 R3 + 0x880C010A, // 0007 GETMBR R3 R0 K10 0x541200F7, // 0008 LDINT R4 248 0x2C0C0604, // 0009 AND R3 R3 R4 - 0x200C0700, // 000A NE R3 R3 K0 + 0x200C0715, // 000A NE R3 R3 K21 0x780E0001, // 000B JMPF R3 #000E 0x500C0000, // 000C LDBOOL R3 0 0 0x80040600, // 000D RET 1 R3 - 0x8C0C0506, // 000E GETMET R3 R2 K6 - 0x58140007, // 000F LDCONST R5 K7 - 0x58180004, // 0010 LDCONST R6 K4 + 0x8C0C052D, // 000E GETMET R3 R2 K45 + 0x5814001A, // 000F LDCONST R5 K26 + 0x5818000B, // 0010 LDCONST R6 K11 0x7C0C0600, // 0011 CALL R3 3 - 0x90020A03, // 0012 SETMBR R0 K5 R3 - 0x8C0C0506, // 0013 GETMET R3 R2 K6 - 0x58140000, // 0014 LDCONST R5 K0 - 0x58180007, // 0015 LDCONST R6 K7 + 0x90022C03, // 0012 SETMBR R0 K22 R3 + 0x8C0C052D, // 0013 GETMET R3 R2 K45 + 0x58140015, // 0014 LDCONST R5 K21 + 0x5818001A, // 0015 LDCONST R6 K26 0x7C0C0600, // 0016 CALL R3 3 - 0x90021003, // 0017 SETMBR R0 K8 R3 - 0x880C0108, // 0018 GETMBR R3 R0 K8 - 0x1C0C0709, // 0019 EQ R3 R3 K9 + 0x90022E03, // 0017 SETMBR R0 K23 R3 + 0x880C0117, // 0018 GETMBR R3 R0 K23 + 0x1C0C0718, // 0019 EQ R3 R3 K24 0x780E0001, // 001A JMPF R3 #001D 0x500C0000, // 001B LDBOOL R3 0 0 0x80040600, // 001C RET 1 R3 - 0x8C0C0503, // 001D GETMET R3 R2 K3 - 0x58140009, // 001E LDCONST R5 K9 - 0x58180004, // 001F LDCONST R6 K4 + 0x8C0C052C, // 001D GETMET R3 R2 K44 + 0x58140018, // 001E LDCONST R5 K24 + 0x5818000B, // 001F LDCONST R6 K11 0x7C0C0600, // 0020 CALL R3 3 - 0x90021403, // 0021 SETMBR R0 K10 R3 - 0x8C0C0506, // 0022 GETMET R3 R2 K6 + 0x90023603, // 0021 SETMBR R0 K27 R3 + 0x8C0C052D, // 0022 GETMET R3 R2 K45 0x54160007, // 0023 LDINT R5 8 - 0x08161205, // 0024 MUL R5 K9 R5 + 0x08163005, // 0024 MUL R5 K24 R5 0x541A0006, // 0025 LDINT R6 7 0x00140A06, // 0026 ADD R5 R5 R6 - 0x58180004, // 0027 LDCONST R6 K4 + 0x5818000B, // 0027 LDCONST R6 K11 0x7C0C0600, // 0028 CALL R3 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x8C0C0506, // 002A GETMET R3 R2 K6 + 0x90023803, // 0029 SETMBR R0 K28 R3 + 0x8C0C052D, // 002A GETMET R3 R2 K45 0x54160007, // 002B LDINT R5 8 - 0x08161205, // 002C MUL R5 K9 R5 + 0x08163005, // 002C MUL R5 K24 R5 0x541A0005, // 002D LDINT R6 6 0x00140A06, // 002E ADD R5 R5 R6 - 0x58180004, // 002F LDCONST R6 K4 + 0x5818000B, // 002F LDCONST R6 K11 0x7C0C0600, // 0030 CALL R3 3 - 0x90021803, // 0031 SETMBR R0 K12 R3 - 0x8C0C0506, // 0032 GETMET R3 R2 K6 + 0x90023A03, // 0031 SETMBR R0 K29 R3 + 0x8C0C052D, // 0032 GETMET R3 R2 K45 0x54160007, // 0033 LDINT R5 8 - 0x08161205, // 0034 MUL R5 K9 R5 + 0x08163005, // 0034 MUL R5 K24 R5 0x541A0004, // 0035 LDINT R6 5 0x00140A06, // 0036 ADD R5 R5 R6 - 0x58180004, // 0037 LDCONST R6 K4 + 0x5818000B, // 0037 LDCONST R6 K11 0x7C0C0600, // 0038 CALL R3 3 - 0x90021A03, // 0039 SETMBR R0 K13 R3 - 0x8C0C0506, // 003A GETMET R3 R2 K6 + 0x90025C03, // 0039 SETMBR R0 K46 R3 + 0x8C0C052D, // 003A GETMET R3 R2 K45 0x54160007, // 003B LDINT R5 8 - 0x08161205, // 003C MUL R5 K9 R5 - 0x58180007, // 003D LDCONST R6 K7 + 0x08163005, // 003C MUL R5 K24 R5 + 0x5818001A, // 003D LDCONST R6 K26 0x7C0C0600, // 003E CALL R3 3 - 0x90021C03, // 003F SETMBR R0 K14 R3 - 0x880C010E, // 0040 GETMBR R3 R0 K14 - 0x240C0704, // 0041 GT R3 R3 K4 + 0x90023C03, // 003F SETMBR R0 K30 R3 + 0x880C011E, // 0040 GETMBR R3 R0 K30 + 0x240C070B, // 0041 GT R3 R3 K11 0x780E0001, // 0042 JMPF R3 #0045 0x500C0000, // 0043 LDBOOL R3 0 0 0x80040600, // 0044 RET 1 R3 - 0x8C0C0503, // 0045 GETMET R3 R2 K3 - 0x58140004, // 0046 LDCONST R5 K4 - 0x58180007, // 0047 LDCONST R6 K7 + 0x8C0C052C, // 0045 GETMET R3 R2 K44 + 0x5814000B, // 0046 LDCONST R5 K11 + 0x5818001A, // 0047 LDCONST R6 K26 0x7C0C0600, // 0048 CALL R3 3 - 0x90021E03, // 0049 SETMBR R0 K15 R3 - 0x8C0C0503, // 004A GETMET R3 R2 K3 + 0x90023203, // 0049 SETMBR R0 K25 R3 + 0x8C0C052C, // 004A GETMET R3 R2 K44 0x54160003, // 004B LDINT R5 4 0x541A0003, // 004C LDINT R6 4 0x7C0C0600, // 004D CALL R3 3 - 0x90022003, // 004E SETMBR R0 K16 R3 + 0x90021803, // 004E SETMBR R0 K12 R3 0x540E0007, // 004F LDINT R3 8 0x00040203, // 0050 ADD R1 R1 R3 - 0x880C0105, // 0051 GETMBR R3 R0 K5 + 0x880C0116, // 0051 GETMBR R3 R0 K22 0x780E0006, // 0052 JMPF R3 #005A 0x540E0006, // 0053 LDINT R3 7 0x000C0203, // 0054 ADD R3 R1 R3 0x400C0203, // 0055 CONNECT R3 R1 R3 0x940C0403, // 0056 GETIDX R3 R2 R3 - 0x90022203, // 0057 SETMBR R0 K17 R3 + 0x90023E03, // 0057 SETMBR R0 K31 R3 0x540E0007, // 0058 LDINT R3 8 0x00040203, // 0059 ADD R1 R1 R3 - 0x880C0108, // 005A GETMBR R3 R0 K8 - 0x1C0C0704, // 005B EQ R3 R3 K4 + 0x880C0117, // 005A GETMBR R3 R0 K23 + 0x1C0C070B, // 005B EQ R3 R3 K11 0x780E0007, // 005C JMPF R3 #0065 0x540E0006, // 005D LDINT R3 7 0x000C0203, // 005E ADD R3 R1 R3 0x400C0203, // 005F CONNECT R3 R1 R3 0x940C0403, // 0060 GETIDX R3 R2 R3 - 0x90022403, // 0061 SETMBR R0 K18 R3 + 0x90024003, // 0061 SETMBR R0 K32 R3 0x540E0007, // 0062 LDINT R3 8 0x00040203, // 0063 ADD R1 R1 R3 0x70020008, // 0064 JMP #006E - 0x880C0108, // 0065 GETMBR R3 R0 K8 - 0x1C0C0707, // 0066 EQ R3 R3 K7 + 0x880C0117, // 0065 GETMBR R3 R0 K23 + 0x1C0C071A, // 0066 EQ R3 R3 K26 0x780E0005, // 0067 JMPF R3 #006E - 0x8C0C0503, // 0068 GETMET R3 R2 K3 + 0x8C0C052C, // 0068 GETMET R3 R2 K44 0x5C140200, // 0069 MOVE R5 R1 - 0x58180007, // 006A LDCONST R6 K7 + 0x5818001A, // 006A LDCONST R6 K26 0x7C0C0600, // 006B CALL R3 3 - 0x90022603, // 006C SETMBR R0 K19 R3 - 0x00040307, // 006D ADD R1 R1 K7 - 0x880C010D, // 006E GETMBR R3 R0 K13 + 0x90024203, // 006C SETMBR R0 K33 R3 + 0x0004031A, // 006D ADD R1 R1 K26 + 0x880C012E, // 006E GETMBR R3 R0 K46 0x780E0005, // 006F JMPF R3 #0076 - 0x8C0C0503, // 0070 GETMET R3 R2 K3 + 0x8C0C052C, // 0070 GETMET R3 R2 K44 0x5C140200, // 0071 MOVE R5 R1 - 0x58180007, // 0072 LDCONST R6 K7 + 0x5818001A, // 0072 LDCONST R6 K26 0x7C0C0600, // 0073 CALL R3 3 - 0x00100707, // 0074 ADD R4 R3 K7 + 0x0010071A, // 0074 ADD R4 R3 K26 0x00040204, // 0075 ADD R1 R1 R4 - 0x90022801, // 0076 SETMBR R0 K20 R1 + 0x90020801, // 0076 SETMBR R0 K4 R1 0x500C0200, // 0077 LDBOOL R3 1 0 0x80040600, // 0078 RET 1 R3 }) @@ -565,31 +568,25 @@ be_local_closure(class_Matter_Frame_debug, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Frame), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(decode_header), - /* K4 */ be_nested_str_weak(decode_payload), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(debug), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x80000400, // 0000 RET 0 - 0xB80A0000, // 0001 GETNGBL R2 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 + 0xB80A5E00, // 0001 GETNGBL R2 K47 + 0x8C080530, // 0002 GETMET R2 R2 K48 + 0x88100106, // 0003 GETMBR R4 R0 K6 0x5C140200, // 0004 MOVE R5 R1 0x7C080600, // 0005 CALL R2 3 - 0x8C0C0503, // 0006 GETMET R3 R2 K3 + 0x8C0C0531, // 0006 GETMET R3 R2 K49 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0504, // 0008 GETMET R3 R2 K4 + 0x8C0C0532, // 0008 GETMET R3 R2 K50 0x7C0C0200, // 0009 CALL R3 1 }) ) @@ -604,43 +601,13 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(remote_ip), - /* K2 */ be_nested_str_weak(remote_port), - /* K3 */ be_nested_str_weak(flag_s), - /* K4 */ be_nested_str_weak(flag_dsiz), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(dest_node_id_8), - /* K7 */ be_nested_str_weak(source_node_id), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_nested_str_weak(initiator_session_id), - /* K12 */ be_nested_str_weak(message_counter), - /* K13 */ be_nested_str_weak(counter_snd_next), - /* K14 */ be_nested_str_weak(_counter_insecure_snd), - /* K15 */ be_nested_str_weak(next), - /* K16 */ be_nested_str_weak(x_flag_i), - /* K17 */ be_nested_str_weak(opcode), - /* K18 */ be_nested_str_weak(exchange_id), - /* K19 */ be_nested_str_weak(protocol_id), - /* K20 */ be_nested_str_weak(x_flag_r), - /* K21 */ be_nested_str_weak(x_flag_a), - /* K22 */ be_nested_str_weak(ack_message_counter), - /* K23 */ be_nested_str_weak(matter), - /* K24 */ be_nested_str_weak(get_opcode_name), - /* K25 */ be_nested_str_weak(0x_X2502X), - /* K26 */ be_nested_str_weak(log), - /* K27 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), - /* K28 */ be_const_int(3), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(build_response), &be_const_str_solidified, ( &(const binstruction[90]) { /* code */ @@ -650,88 +617,88 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x60100006, // 0003 GETGBL R4 G6 0x5C140000, // 0004 MOVE R5 R0 0x7C100200, // 0005 CALL R4 1 - 0x88140100, // 0006 GETMBR R5 R0 K0 + 0x88140106, // 0006 GETMBR R5 R0 K6 0x7C100200, // 0007 CALL R4 1 0x5C0C0800, // 0008 MOVE R3 R4 - 0x88100101, // 0009 GETMBR R4 R0 K1 - 0x900E0204, // 000A SETMBR R3 K1 R4 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x900E0404, // 000C SETMBR R3 K2 R4 - 0x88100103, // 000D GETMBR R4 R0 K3 + 0x88100113, // 0009 GETMBR R4 R0 K19 + 0x900E2604, // 000A SETMBR R3 K19 R4 + 0x88100114, // 000B GETMBR R4 R0 K20 + 0x900E2804, // 000C SETMBR R3 K20 R4 + 0x88100116, // 000D GETMBR R4 R0 K22 0x78120003, // 000E JMPF R4 #0013 - 0x900E0905, // 000F SETMBR R3 K4 K5 - 0x88100107, // 0010 GETMBR R4 R0 K7 - 0x900E0C04, // 0011 SETMBR R3 K6 R4 + 0x900E2F33, // 000F SETMBR R3 K23 K51 + 0x8810011F, // 0010 GETMBR R4 R0 K31 + 0x900E4004, // 0011 SETMBR R3 K32 R4 0x70020000, // 0012 JMP #0014 - 0x900E0908, // 0013 SETMBR R3 K4 K8 - 0x88100109, // 0014 GETMBR R4 R0 K9 - 0x900E1204, // 0015 SETMBR R3 K9 R4 - 0x8810010A, // 0016 GETMBR R4 R0 K10 - 0x20100908, // 0017 NE R4 R4 K8 + 0x900E2F15, // 0013 SETMBR R3 K23 K21 + 0x88100100, // 0014 GETMBR R4 R0 K0 + 0x900E0004, // 0015 SETMBR R3 K0 R4 + 0x88100119, // 0016 GETMBR R4 R0 K25 + 0x20100915, // 0017 NE R4 R4 K21 0x7812000D, // 0018 JMPF R4 #0027 - 0x88100109, // 0019 GETMBR R4 R0 K9 + 0x88100100, // 0019 GETMBR R4 R0 K0 0x7812000B, // 001A JMPF R4 #0027 - 0x88100109, // 001B GETMBR R4 R0 K9 - 0x8810090B, // 001C GETMBR R4 R4 K11 - 0x20100908, // 001D NE R4 R4 K8 + 0x88100100, // 001B GETMBR R4 R0 K0 + 0x88100934, // 001C GETMBR R4 R4 K52 + 0x20100915, // 001D NE R4 R4 K21 0x78120007, // 001E JMPF R4 #0027 - 0x88100109, // 001F GETMBR R4 R0 K9 - 0x8C10090D, // 0020 GETMET R4 R4 K13 + 0x88100100, // 001F GETMBR R4 R0 K0 + 0x8C100935, // 0020 GETMET R4 R4 K53 0x7C100200, // 0021 CALL R4 1 0x900E1804, // 0022 SETMBR R3 K12 R4 - 0x88100109, // 0023 GETMBR R4 R0 K9 - 0x8810090B, // 0024 GETMBR R4 R4 K11 - 0x900E1404, // 0025 SETMBR R3 K10 R4 + 0x88100100, // 0023 GETMBR R4 R0 K0 + 0x88100934, // 0024 GETMBR R4 R4 K52 + 0x900E3204, // 0025 SETMBR R3 K25 R4 0x70020005, // 0026 JMP #002D - 0x88100109, // 0027 GETMBR R4 R0 K9 - 0x8810090E, // 0028 GETMBR R4 R4 K14 - 0x8C10090F, // 0029 GETMET R4 R4 K15 + 0x88100100, // 0027 GETMBR R4 R0 K0 + 0x88100936, // 0028 GETMBR R4 R4 K54 + 0x8C100937, // 0029 GETMET R4 R4 K55 0x7C100200, // 002A CALL R4 1 0x900E1804, // 002B SETMBR R3 K12 R4 - 0x900E1508, // 002C SETMBR R3 K10 K8 - 0x88100110, // 002D GETMBR R4 R0 K16 + 0x900E3315, // 002C SETMBR R3 K25 K21 + 0x88100126, // 002D GETMBR R4 R0 K38 0x78120001, // 002E JMPF R4 #0031 - 0x58100008, // 002F LDCONST R4 K8 + 0x58100015, // 002F LDCONST R4 K21 0x70020000, // 0030 JMP #0032 - 0x58100005, // 0031 LDCONST R4 K5 - 0x900E2004, // 0032 SETMBR R3 K16 R4 - 0x900E2201, // 0033 SETMBR R3 K17 R1 - 0x88100112, // 0034 GETMBR R4 R0 K18 - 0x900E2404, // 0035 SETMBR R3 K18 R4 - 0x88100113, // 0036 GETMBR R4 R0 K19 - 0x900E2604, // 0037 SETMBR R3 K19 R4 - 0x88100114, // 0038 GETMBR R4 R0 K20 + 0x58100033, // 0031 LDCONST R4 K51 + 0x900E4C04, // 0032 SETMBR R3 K38 R4 + 0x900E4E01, // 0033 SETMBR R3 K39 R1 + 0x88100128, // 0034 GETMBR R4 R0 K40 + 0x900E5004, // 0035 SETMBR R3 K40 R4 + 0x88100129, // 0036 GETMBR R4 R0 K41 + 0x900E5204, // 0037 SETMBR R3 K41 R4 + 0x88100124, // 0038 GETMBR R4 R0 K36 0x78120002, // 0039 JMPF R4 #003D - 0x900E2B05, // 003A SETMBR R3 K21 K5 + 0x900E4B33, // 003A SETMBR R3 K37 K51 0x8810010C, // 003B GETMBR R4 R0 K12 - 0x900E2C04, // 003C SETMBR R3 K22 R4 + 0x900E5404, // 003C SETMBR R3 K42 R4 0x780A0001, // 003D JMPF R2 #0040 - 0x58100005, // 003E LDCONST R4 K5 + 0x58100033, // 003E LDCONST R4 K51 0x70020000, // 003F JMP #0041 - 0x58100008, // 0040 LDCONST R4 K8 - 0x900E2804, // 0041 SETMBR R3 K20 R4 - 0x8810070A, // 0042 GETMBR R4 R3 K10 - 0x1C100908, // 0043 EQ R4 R4 K8 + 0x58100015, // 0040 LDCONST R4 K21 + 0x900E4804, // 0041 SETMBR R3 K36 R4 + 0x88100719, // 0042 GETMBR R4 R3 K25 + 0x1C100915, // 0043 EQ R4 R4 K21 0x78120013, // 0044 JMPF R4 #0059 - 0xB8122E00, // 0045 GETNGBL R4 K23 - 0x8C100918, // 0046 GETMET R4 R4 K24 - 0x88180711, // 0047 GETMBR R6 R3 K17 + 0xB8125E00, // 0045 GETNGBL R4 K47 + 0x8C100938, // 0046 GETMET R4 R4 K56 + 0x88180727, // 0047 GETMBR R6 R3 K39 0x7C100400, // 0048 CALL R4 2 0x5C140800, // 0049 MOVE R5 R4 0x74160004, // 004A JMPT R5 #0050 0x60140018, // 004B GETGBL R5 G24 - 0x58180019, // 004C LDCONST R6 K25 - 0x881C0711, // 004D GETMBR R7 R3 K17 + 0x58180039, // 004C LDCONST R6 K57 + 0x881C0727, // 004D GETMBR R7 R3 K39 0x7C140400, // 004E CALL R5 2 0x5C100A00, // 004F MOVE R4 R5 - 0xB8163400, // 0050 GETNGBL R5 K26 + 0xB8167400, // 0050 GETNGBL R5 K58 0x60180018, // 0051 GETGBL R6 G24 - 0x581C001B, // 0052 LDCONST R7 K27 - 0x88200709, // 0053 GETMBR R8 R3 K9 - 0x8820110A, // 0054 GETMBR R8 R8 K10 + 0x581C003B, // 0052 LDCONST R7 K59 + 0x88200700, // 0053 GETMBR R8 R3 K0 + 0x88201119, // 0054 GETMBR R8 R8 K25 0x5C240800, // 0055 MOVE R9 R4 0x7C180600, // 0056 CALL R6 3 - 0x581C001C, // 0057 LDCONST R7 K28 + 0x581C003C, // 0057 LDCONST R7 K60 0x7C140400, // 0058 CALL R5 2 0x80040600, // 0059 RET 1 R3 }) @@ -747,68 +714,38 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ be_nested_proto( 23, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(session), - /* K2 */ be_nested_str_weak(raw), - /* K3 */ be_nested_str_weak(payload_idx), - /* K4 */ be_nested_str_weak(get_i2r), - /* K5 */ be_nested_str_weak(sec_p), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(get_i2r_privacy), - /* K10 */ be_const_int(2147483647), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(local_session_id), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(AES_CTR), - /* K15 */ be_nested_str_weak(decrypt), - /* K16 */ be_const_int(0), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str_weak(message_handler), - /* K19 */ be_nested_str_weak(_n_bytes), - /* K20 */ be_nested_str_weak(clear), - /* K21 */ be_nested_str_weak(flags), - /* K22 */ be_nested_str_weak(message_counter), - /* K23 */ be_nested_str_weak(source_node_id), - /* K24 */ be_nested_str_weak(peer_node_id), - /* K25 */ be_nested_str_weak(resize), - /* K26 */ be_nested_str_weak(AES_CCM), - /* K27 */ be_nested_str_weak(decrypt1), - /* K28 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(decrypt), &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x88100103, // 0003 GETMBR R4 R0 K3 + 0xA4060400, // 0000 IMPORT R1 K2 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x880C0103, // 0002 GETMBR R3 R0 K3 + 0x88100104, // 0003 GETMBR R4 R0 K4 0x5416000F, // 0004 LDINT R5 16 - 0x8C180504, // 0005 GETMET R6 R2 K4 + 0x8C18053D, // 0005 GETMET R6 R2 K61 0x7C180200, // 0006 CALL R6 1 - 0x881C0105, // 0007 GETMBR R7 R0 K5 + 0x881C011C, // 0007 GETMBR R7 R0 K28 0x781E002B, // 0008 JMPF R7 #0035 - 0xB81E0C00, // 0009 GETNGBL R7 K6 - 0x58200007, // 000A LDCONST R8 K7 - 0x58240008, // 000B LDCONST R9 K8 + 0xB81E7400, // 0009 GETNGBL R7 K58 + 0x5820003E, // 000A LDCONST R8 K62 + 0x5824003F, // 000B LDCONST R9 K63 0x7C1C0400, // 000C CALL R7 2 - 0x8C1C0509, // 000D GETMET R7 R2 K9 + 0x8C1C0540, // 000D GETMET R7 R2 K64 0x7C1C0200, // 000E CALL R7 1 0x5421FFEF, // 000F LDINT R8 -16 - 0x4020110A, // 0010 CONNECT R8 R8 K10 + 0x40201141, // 0010 CONNECT R8 R8 K65 0x94200608, // 0011 GETIDX R8 R3 R8 0x60240015, // 0012 GETGBL R9 G21 0x7C240000, // 0013 CALL R9 0 - 0x8C24130B, // 0014 GETMET R9 R9 K11 - 0x882C010C, // 0015 GETMBR R11 R0 K12 + 0x8C241309, // 0014 GETMET R9 R9 K9 + 0x882C0119, // 0015 GETMBR R11 R0 K25 0x5431FFFD, // 0016 LDINT R12 -2 0x7C240600, // 0017 CALL R9 3 0x542A0004, // 0018 LDINT R10 5 @@ -817,63 +754,63 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x9428100A, // 001B GETIDX R10 R8 R10 0x0024120A, // 001C ADD R9 R9 R10 0x542A0003, // 001D LDINT R10 4 - 0x882C0103, // 001E GETMBR R11 R0 K3 - 0x042C170D, // 001F SUB R11 R11 K13 + 0x882C0104, // 001E GETMBR R11 R0 K4 + 0x042C1733, // 001F SUB R11 R11 K51 0x4028140B, // 0020 CONNECT R10 R10 R11 - 0x882C0102, // 0021 GETMBR R11 R0 K2 + 0x882C0103, // 0021 GETMBR R11 R0 K3 0x9428160A, // 0022 GETIDX R10 R11 R10 - 0x8C30030E, // 0023 GETMET R12 R1 K14 + 0x8C300342, // 0023 GETMET R12 R1 K66 0x5C380E00, // 0024 MOVE R14 R7 0x7C300400, // 0025 CALL R12 2 - 0x8C30190F, // 0026 GETMET R12 R12 K15 + 0x8C301943, // 0026 GETMET R12 R12 K67 0x5C381400, // 0027 MOVE R14 R10 0x5C3C1200, // 0028 MOVE R15 R9 - 0x58400008, // 0029 LDCONST R16 K8 + 0x5840003F, // 0029 LDCONST R16 K63 0x7C300800, // 002A CALL R12 4 0x5C2C1800, // 002B MOVE R11 R12 - 0x40322111, // 002C CONNECT R12 K16 K17 - 0x88340102, // 002D GETMBR R13 R0 K2 + 0x40322518, // 002C CONNECT R12 K18 K24 + 0x88340103, // 002D GETMBR R13 R0 K3 0x94301A0C, // 002E GETIDX R12 R13 R12 0x0030180B, // 002F ADD R12 R12 R11 - 0x88340103, // 0030 GETMBR R13 R0 K3 - 0x40341B0A, // 0031 CONNECT R13 R13 K10 + 0x88340104, // 0030 GETMBR R13 R0 K4 + 0x40341B41, // 0031 CONNECT R13 R13 K65 0x9434140D, // 0032 GETIDX R13 R10 R13 0x0030180D, // 0033 ADD R12 R12 R13 - 0x9002040C, // 0034 SETMBR R0 K2 R12 - 0x881C0112, // 0035 GETMBR R7 R0 K18 - 0x881C0F13, // 0036 GETMBR R7 R7 K19 - 0x8C200F14, // 0037 GETMET R8 R7 K20 + 0x9002060C, // 0034 SETMBR R0 K3 R12 + 0x881C0106, // 0035 GETMBR R7 R0 K6 + 0x881C0F07, // 0036 GETMBR R7 R7 K7 + 0x8C200F08, // 0037 GETMET R8 R7 K8 0x7C200200, // 0038 CALL R8 1 - 0x8C200F0B, // 0039 GETMET R8 R7 K11 - 0x88280115, // 003A GETMBR R10 R0 K21 - 0x582C000D, // 003B LDCONST R11 K13 + 0x8C200F09, // 0039 GETMET R8 R7 K9 + 0x8828010A, // 003A GETMBR R10 R0 K10 + 0x582C0033, // 003B LDCONST R11 K51 0x7C200600, // 003C CALL R8 3 - 0x8C200F0B, // 003D GETMET R8 R7 K11 - 0x88280116, // 003E GETMBR R10 R0 K22 + 0x8C200F09, // 003D GETMET R8 R7 K9 + 0x8828010C, // 003E GETMBR R10 R0 K12 0x542E0003, // 003F LDINT R11 4 0x7C200600, // 0040 CALL R8 3 - 0x88200117, // 0041 GETMBR R8 R0 K23 + 0x8820011F, // 0041 GETMBR R8 R0 K31 0x78220002, // 0042 JMPF R8 #0046 - 0x88200117, // 0043 GETMBR R8 R0 K23 + 0x8820011F, // 0043 GETMBR R8 R0 K31 0x40200E08, // 0044 CONNECT R8 R7 R8 0x70020006, // 0045 JMP #004D - 0x88200518, // 0046 GETMBR R8 R2 K24 + 0x88200544, // 0046 GETMBR R8 R2 K68 0x78220001, // 0047 JMPF R8 #004A - 0x88200518, // 0048 GETMBR R8 R2 K24 + 0x88200544, // 0048 GETMBR R8 R2 K68 0x40200E08, // 0049 CONNECT R8 R7 R8 - 0x8C200F19, // 004A GETMET R8 R7 K25 + 0x8C200F0F, // 004A GETMET R8 R7 K15 0x542A000C, // 004B LDINT R10 13 0x7C200400, // 004C CALL R8 2 - 0x8820031A, // 004D GETMBR R8 R1 K26 - 0x8C20111B, // 004E GETMET R8 R8 K27 + 0x88200310, // 004D GETMBR R8 R1 K16 + 0x8C201145, // 004E GETMET R8 R8 K69 0x5C280C00, // 004F MOVE R10 R6 0x5C2C0E00, // 0050 MOVE R11 R7 - 0x58300010, // 0051 LDCONST R12 K16 + 0x58300012, // 0051 LDCONST R12 K18 0x6034000C, // 0052 GETGBL R13 G12 0x5C380E00, // 0053 MOVE R14 R7 0x7C340200, // 0054 CALL R13 1 0x5C380600, // 0055 MOVE R14 R3 - 0x583C0010, // 0056 LDCONST R15 K16 + 0x583C0012, // 0056 LDCONST R15 K18 0x5C400800, // 0057 MOVE R16 R4 0x5C440600, // 0058 MOVE R17 R3 0x5C480800, // 0059 MOVE R18 R4 @@ -890,16 +827,16 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x5C580A00, // 0064 MOVE R22 R5 0x7C201C00, // 0065 CALL R8 14 0x78220006, // 0066 JMPF R8 #006E - 0x8C240719, // 0067 GETMET R9 R3 K25 + 0x8C24070F, // 0067 GETMET R9 R3 K15 0x602C000C, // 0068 GETGBL R11 G12 0x5C300600, // 0069 MOVE R12 R3 0x7C2C0200, // 006A CALL R11 1 0x042C1605, // 006B SUB R11 R11 R5 0x7C240400, // 006C CALL R9 2 0x70020003, // 006D JMP #0072 - 0xB8260C00, // 006E GETNGBL R9 K6 - 0x5828001C, // 006F LDCONST R10 K28 - 0x582C0011, // 0070 LDCONST R11 K17 + 0xB8267400, // 006E GETNGBL R9 K58 + 0x58280046, // 006F LDCONST R10 K70 + 0x582C0018, // 0070 LDCONST R11 K24 0x7C240400, // 0071 CALL R9 2 0x80041000, // 0072 RET 1 R8 }) @@ -915,82 +852,60 @@ be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(remote_ip), - /* K2 */ be_nested_str_weak(remote_port), - /* K3 */ be_nested_str_weak(flag_s), - /* K4 */ be_nested_str_weak(flag_dsiz), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(dest_node_id_8), - /* K7 */ be_nested_str_weak(source_node_id), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(message_counter), - /* K11 */ be_nested_str_weak(counter_snd_next), - /* K12 */ be_nested_str_weak(local_session_id), - /* K13 */ be_nested_str_weak(initiator_session_id), - /* K14 */ be_nested_str_weak(x_flag_i), - /* K15 */ be_nested_str_weak(opcode), - /* K16 */ be_nested_str_weak(exchange_id), - /* K17 */ be_nested_str_weak(protocol_id), - /* K18 */ be_nested_str_weak(x_flag_a), - /* K19 */ be_nested_str_weak(ack_message_counter), - /* K20 */ be_nested_str_weak(x_flag_r), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(build_standalone_ack), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ 0x60080006, // 0000 GETGBL R2 G6 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x880C0100, // 0003 GETMBR R3 R0 K0 + 0x880C0106, // 0003 GETMBR R3 R0 K6 0x7C080200, // 0004 CALL R2 1 - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x900A0203, // 0006 SETMBR R2 K1 R3 - 0x880C0102, // 0007 GETMBR R3 R0 K2 - 0x900A0403, // 0008 SETMBR R2 K2 R3 - 0x880C0103, // 0009 GETMBR R3 R0 K3 + 0x880C0113, // 0005 GETMBR R3 R0 K19 + 0x900A2603, // 0006 SETMBR R2 K19 R3 + 0x880C0114, // 0007 GETMBR R3 R0 K20 + 0x900A2803, // 0008 SETMBR R2 K20 R3 + 0x880C0116, // 0009 GETMBR R3 R0 K22 0x780E0003, // 000A JMPF R3 #000F - 0x900A0905, // 000B SETMBR R2 K4 K5 - 0x880C0107, // 000C GETMBR R3 R0 K7 - 0x900A0C03, // 000D SETMBR R2 K6 R3 + 0x900A2F33, // 000B SETMBR R2 K23 K51 + 0x880C011F, // 000C GETMBR R3 R0 K31 + 0x900A4003, // 000D SETMBR R2 K32 R3 0x70020000, // 000E JMP #0010 - 0x900A0908, // 000F SETMBR R2 K4 K8 - 0x880C0109, // 0010 GETMBR R3 R0 K9 - 0x900A1203, // 0011 SETMBR R2 K9 R3 - 0x880C0109, // 0012 GETMBR R3 R0 K9 - 0x8C0C070B, // 0013 GETMET R3 R3 K11 + 0x900A2F15, // 000F SETMBR R2 K23 K21 + 0x880C0100, // 0010 GETMBR R3 R0 K0 + 0x900A0003, // 0011 SETMBR R2 K0 R3 + 0x880C0100, // 0012 GETMBR R3 R0 K0 + 0x8C0C0735, // 0013 GETMET R3 R3 K53 0x7C0C0200, // 0014 CALL R3 1 - 0x900A1403, // 0015 SETMBR R2 K10 R3 - 0x880C0109, // 0016 GETMBR R3 R0 K9 - 0x880C070D, // 0017 GETMBR R3 R3 K13 - 0x900A1803, // 0018 SETMBR R2 K12 R3 - 0x880C010E, // 0019 GETMBR R3 R0 K14 + 0x900A1803, // 0015 SETMBR R2 K12 R3 + 0x880C0100, // 0016 GETMBR R3 R0 K0 + 0x880C0734, // 0017 GETMBR R3 R3 K52 + 0x900A3203, // 0018 SETMBR R2 K25 R3 + 0x880C0126, // 0019 GETMBR R3 R0 K38 0x780E0001, // 001A JMPF R3 #001D - 0x580C0008, // 001B LDCONST R3 K8 + 0x580C0015, // 001B LDCONST R3 K21 0x70020000, // 001C JMP #001E - 0x580C0005, // 001D LDCONST R3 K5 - 0x900A1C03, // 001E SETMBR R2 K14 R3 + 0x580C0033, // 001D LDCONST R3 K51 + 0x900A4C03, // 001E SETMBR R2 K38 R3 0x540E000F, // 001F LDINT R3 16 - 0x900A1E03, // 0020 SETMBR R2 K15 R3 - 0x880C0110, // 0021 GETMBR R3 R0 K16 - 0x900A2003, // 0022 SETMBR R2 K16 R3 - 0x900A2308, // 0023 SETMBR R2 K17 K8 - 0x900A2505, // 0024 SETMBR R2 K18 K5 - 0x880C010A, // 0025 GETMBR R3 R0 K10 - 0x900A2603, // 0026 SETMBR R2 K19 R3 + 0x900A4E03, // 0020 SETMBR R2 K39 R3 + 0x880C0128, // 0021 GETMBR R3 R0 K40 + 0x900A5003, // 0022 SETMBR R2 K40 R3 + 0x900A5315, // 0023 SETMBR R2 K41 K21 + 0x900A4B33, // 0024 SETMBR R2 K37 K51 + 0x880C010C, // 0025 GETMBR R3 R0 K12 + 0x900A5403, // 0026 SETMBR R2 K42 R3 0x78060001, // 0027 JMPF R1 #002A - 0x580C0005, // 0028 LDCONST R3 K5 + 0x580C0033, // 0028 LDCONST R3 K51 0x70020000, // 0029 JMP #002B - 0x580C0008, // 002A LDCONST R3 K8 - 0x900A2803, // 002B SETMBR R2 K20 R3 + 0x580C0015, // 002A LDCONST R3 K21 + 0x900A4803, // 002B SETMBR R2 K36 R3 0x80040400, // 002C RET 1 R2 }) ) @@ -1005,85 +920,61 @@ be_local_closure(class_Matter_Frame_initiate_response, /* name */ be_nested_proto( 9, /* nstack */ 5, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Frame), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Frame), - /* K3 */ be_nested_str_weak(remote_ip), - /* K4 */ be_nested_str_weak(_ip), - /* K5 */ be_nested_str_weak(remote_port), - /* K6 */ be_nested_str_weak(_port), - /* K7 */ be_nested_str_weak(flag_dsiz), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(session), - /* K10 */ be_nested_str_weak(initiator_session_id), - /* K11 */ be_nested_str_weak(message_counter), - /* K12 */ be_nested_str_weak(counter_snd_next), - /* K13 */ be_nested_str_weak(local_session_id), - /* K14 */ be_nested_str_weak(_counter_insecure_snd), - /* K15 */ be_nested_str_weak(next), - /* K16 */ be_nested_str_weak(x_flag_i), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(opcode), - /* K19 */ be_nested_str_weak(_exchange_id), - /* K20 */ be_nested_str_weak(exchange_id), - /* K21 */ be_nested_str_weak(protocol_id), - /* K22 */ be_nested_str_weak(x_flag_r), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(initiate_response), &be_const_str_solidified, ( &(const binstruction[46]) { /* code */ - 0x58140000, // 0000 LDCONST R5 K0 + 0x58140047, // 0000 LDCONST R5 K71 0x4C180000, // 0001 LDNIL R6 0x1C180806, // 0002 EQ R6 R4 R6 0x781A0004, // 0003 JMPF R6 #0009 - 0xB81A0200, // 0004 GETNGBL R6 K1 - 0x8C180D02, // 0005 GETMET R6 R6 K2 + 0xB81A5E00, // 0004 GETNGBL R6 K47 + 0x8C180D30, // 0005 GETMET R6 R6 K48 0x5C200000, // 0006 MOVE R8 R0 0x7C180400, // 0007 CALL R6 2 0x5C100C00, // 0008 MOVE R4 R6 - 0x88180304, // 0009 GETMBR R6 R1 K4 - 0x90120606, // 000A SETMBR R4 K3 R6 - 0x88180306, // 000B GETMBR R6 R1 K6 - 0x90120A06, // 000C SETMBR R4 K5 R6 - 0x90120F08, // 000D SETMBR R4 K7 K8 - 0x90121201, // 000E SETMBR R4 K9 R1 + 0x88180348, // 0009 GETMBR R6 R1 K72 + 0x90122606, // 000A SETMBR R4 K19 R6 + 0x88180349, // 000B GETMBR R6 R1 K73 + 0x90122806, // 000C SETMBR R4 K20 R6 + 0x90122F12, // 000D SETMBR R4 K23 K18 + 0x90120001, // 000E SETMBR R4 K0 R1 0x78060008, // 000F JMPF R1 #0019 - 0x8818030A, // 0010 GETMBR R6 R1 K10 - 0x20180D08, // 0011 NE R6 R6 K8 + 0x88180334, // 0010 GETMBR R6 R1 K52 + 0x20180D12, // 0011 NE R6 R6 K18 0x781A0005, // 0012 JMPF R6 #0019 - 0x8C18030C, // 0013 GETMET R6 R1 K12 + 0x8C180335, // 0013 GETMET R6 R1 K53 0x7C180200, // 0014 CALL R6 1 - 0x90121606, // 0015 SETMBR R4 K11 R6 - 0x8818030A, // 0016 GETMBR R6 R1 K10 - 0x90121A06, // 0017 SETMBR R4 K13 R6 + 0x90121806, // 0015 SETMBR R4 K12 R6 + 0x88180334, // 0016 GETMBR R6 R1 K52 + 0x90123206, // 0017 SETMBR R4 K25 R6 0x70020004, // 0018 JMP #001E - 0x8818030E, // 0019 GETMBR R6 R1 K14 - 0x8C180D0F, // 001A GETMET R6 R6 K15 + 0x88180336, // 0019 GETMBR R6 R1 K54 + 0x8C180D37, // 001A GETMET R6 R6 K55 0x7C180200, // 001B CALL R6 1 - 0x90121606, // 001C SETMBR R4 K11 R6 - 0x90121B08, // 001D SETMBR R4 K13 K8 - 0x90122111, // 001E SETMBR R4 K16 K17 - 0x90122402, // 001F SETMBR R4 K18 R2 - 0x88180313, // 0020 GETMBR R6 R1 K19 - 0x00180D11, // 0021 ADD R6 R6 K17 - 0x90062606, // 0022 SETMBR R1 K19 R6 - 0x88180313, // 0023 GETMBR R6 R1 K19 + 0x90121806, // 001C SETMBR R4 K12 R6 + 0x90123312, // 001D SETMBR R4 K25 K18 + 0x90124D0B, // 001E SETMBR R4 K38 K11 + 0x90124E02, // 001F SETMBR R4 K39 R2 + 0x8818034A, // 0020 GETMBR R6 R1 K74 + 0x00180D0B, // 0021 ADD R6 R6 K11 + 0x90069406, // 0022 SETMBR R1 K74 R6 + 0x8818034A, // 0023 GETMBR R6 R1 K74 0x541EFFFF, // 0024 LDINT R7 65536 0x30180C07, // 0025 OR R6 R6 R7 - 0x90122806, // 0026 SETMBR R4 K20 R6 - 0x90122B11, // 0027 SETMBR R4 K21 K17 + 0x90125006, // 0026 SETMBR R4 K40 R6 + 0x9012530B, // 0027 SETMBR R4 K41 K11 0x780E0001, // 0028 JMPF R3 #002B - 0x58180011, // 0029 LDCONST R6 K17 + 0x5818000B, // 0029 LDCONST R6 K11 0x70020000, // 002A JMP #002C - 0x58180008, // 002B LDCONST R6 K8 - 0x90122C06, // 002C SETMBR R4 K22 R6 + 0x58180012, // 002B LDCONST R6 K18 + 0x90124806, // 002C SETMBR R4 K36 R6 0x80040800, // 002D RET 1 R4 }) ) @@ -1098,128 +989,108 @@ be_local_closure(class_Matter_Frame_decode_payload, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(payload_idx), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(x_flags), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(x_flag_v), - /* K6 */ be_nested_str_weak(getbits), - /* K7 */ be_nested_str_weak(x_flag_sx), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(x_flag_r), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(x_flag_a), - /* K12 */ be_nested_str_weak(x_flag_i), - /* K13 */ be_nested_str_weak(opcode), - /* K14 */ be_nested_str_weak(exchange_id), - /* K15 */ be_nested_str_weak(protocol_id), - /* K16 */ be_nested_str_weak(vendor_id), - /* K17 */ be_nested_str_weak(ack_message_counter), - /* K18 */ be_nested_str_weak(app_payload_idx), - }), + &be_ktab_class_Matter_Frame, /* shared constants */ be_str_weak(decode_payload), &be_const_str_solidified, ( &(const binstruction[93]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C0C0503, // 0002 GETMET R3 R2 K3 + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080103, // 0001 GETMBR R2 R0 K3 + 0x8C0C052C, // 0002 GETMET R3 R2 K44 0x5C140200, // 0003 MOVE R5 R1 - 0x58180004, // 0004 LDCONST R6 K4 + 0x5818000B, // 0004 LDCONST R6 K11 0x7C0C0600, // 0005 CALL R3 3 - 0x90020403, // 0006 SETMBR R0 K2 R3 - 0x8C0C0506, // 0007 GETMET R3 R2 K6 + 0x90024403, // 0006 SETMBR R0 K34 R3 + 0x8C0C052D, // 0007 GETMET R3 R2 K45 0x54160007, // 0008 LDINT R5 8 0x08140205, // 0009 MUL R5 R1 R5 0x541A0003, // 000A LDINT R6 4 0x00140A06, // 000B ADD R5 R5 R6 - 0x58180004, // 000C LDCONST R6 K4 + 0x5818000B, // 000C LDCONST R6 K11 0x7C0C0600, // 000D CALL R3 3 - 0x90020A03, // 000E SETMBR R0 K5 R3 - 0x8C0C0506, // 000F GETMET R3 R2 K6 + 0x90024603, // 000E SETMBR R0 K35 R3 + 0x8C0C052D, // 000F GETMET R3 R2 K45 0x54160007, // 0010 LDINT R5 8 0x08140205, // 0011 MUL R5 R1 R5 - 0x00140B08, // 0012 ADD R5 R5 K8 - 0x58180004, // 0013 LDCONST R6 K4 + 0x00140B3C, // 0012 ADD R5 R5 K60 + 0x5818000B, // 0013 LDCONST R6 K11 0x7C0C0600, // 0014 CALL R3 3 - 0x90020E03, // 0015 SETMBR R0 K7 R3 - 0x8C0C0506, // 0016 GETMET R3 R2 K6 + 0x90029603, // 0015 SETMBR R0 K75 R3 + 0x8C0C052D, // 0016 GETMET R3 R2 K45 0x54160007, // 0017 LDINT R5 8 0x08140205, // 0018 MUL R5 R1 R5 - 0x00140B0A, // 0019 ADD R5 R5 K10 - 0x58180004, // 001A LDCONST R6 K4 + 0x00140B3F, // 0019 ADD R5 R5 K63 + 0x5818000B, // 001A LDCONST R6 K11 0x7C0C0600, // 001B CALL R3 3 - 0x90021203, // 001C SETMBR R0 K9 R3 - 0x8C0C0506, // 001D GETMET R3 R2 K6 + 0x90024803, // 001C SETMBR R0 K36 R3 + 0x8C0C052D, // 001D GETMET R3 R2 K45 0x54160007, // 001E LDINT R5 8 0x08140205, // 001F MUL R5 R1 R5 - 0x00140B04, // 0020 ADD R5 R5 K4 - 0x58180004, // 0021 LDCONST R6 K4 + 0x00140B0B, // 0020 ADD R5 R5 K11 + 0x5818000B, // 0021 LDCONST R6 K11 0x7C0C0600, // 0022 CALL R3 3 - 0x90021603, // 0023 SETMBR R0 K11 R3 - 0x8C0C0506, // 0024 GETMET R3 R2 K6 + 0x90024A03, // 0023 SETMBR R0 K37 R3 + 0x8C0C052D, // 0024 GETMET R3 R2 K45 0x54160007, // 0025 LDINT R5 8 0x08140205, // 0026 MUL R5 R1 R5 - 0x58180004, // 0027 LDCONST R6 K4 + 0x5818000B, // 0027 LDCONST R6 K11 0x7C0C0600, // 0028 CALL R3 3 - 0x90021803, // 0029 SETMBR R0 K12 R3 - 0x8C0C0503, // 002A GETMET R3 R2 K3 - 0x00140304, // 002B ADD R5 R1 K4 - 0x58180004, // 002C LDCONST R6 K4 + 0x90024C03, // 0029 SETMBR R0 K38 R3 + 0x8C0C052C, // 002A GETMET R3 R2 K44 + 0x0014030B, // 002B ADD R5 R1 K11 + 0x5818000B, // 002C LDCONST R6 K11 0x7C0C0600, // 002D CALL R3 3 - 0x90021A03, // 002E SETMBR R0 K13 R3 - 0x8C0C0503, // 002F GETMET R3 R2 K3 - 0x0014030A, // 0030 ADD R5 R1 K10 - 0x5818000A, // 0031 LDCONST R6 K10 + 0x90024E03, // 002E SETMBR R0 K39 R3 + 0x8C0C052C, // 002F GETMET R3 R2 K44 + 0x0014033F, // 0030 ADD R5 R1 K63 + 0x5818003F, // 0031 LDCONST R6 K63 0x7C0C0600, // 0032 CALL R3 3 - 0x90021C03, // 0033 SETMBR R0 K14 R3 - 0x880C010C, // 0034 GETMBR R3 R0 K12 + 0x90025003, // 0033 SETMBR R0 K40 R3 + 0x880C0126, // 0034 GETMBR R3 R0 K38 0x740E0003, // 0035 JMPT R3 #003A - 0x880C010E, // 0036 GETMBR R3 R0 K14 + 0x880C0128, // 0036 GETMBR R3 R0 K40 0x5412FFFF, // 0037 LDINT R4 65536 0x300C0604, // 0038 OR R3 R3 R4 - 0x90021C03, // 0039 SETMBR R0 K14 R3 - 0x8C0C0503, // 003A GETMET R3 R2 K3 + 0x90025003, // 0039 SETMBR R0 K40 R3 + 0x8C0C052C, // 003A GETMET R3 R2 K44 0x54160003, // 003B LDINT R5 4 0x00140205, // 003C ADD R5 R1 R5 - 0x5818000A, // 003D LDCONST R6 K10 + 0x5818003F, // 003D LDCONST R6 K63 0x7C0C0600, // 003E CALL R3 3 - 0x90021E03, // 003F SETMBR R0 K15 R3 + 0x90025203, // 003F SETMBR R0 K41 R3 0x540E0005, // 0040 LDINT R3 6 0x00040203, // 0041 ADD R1 R1 R3 - 0x880C0105, // 0042 GETMBR R3 R0 K5 + 0x880C0123, // 0042 GETMBR R3 R0 K35 0x780E0005, // 0043 JMPF R3 #004A - 0x8C0C0503, // 0044 GETMET R3 R2 K3 + 0x8C0C052C, // 0044 GETMET R3 R2 K44 0x5C140200, // 0045 MOVE R5 R1 - 0x5818000A, // 0046 LDCONST R6 K10 + 0x5818003F, // 0046 LDCONST R6 K63 0x7C0C0600, // 0047 CALL R3 3 - 0x90022003, // 0048 SETMBR R0 K16 R3 - 0x0004030A, // 0049 ADD R1 R1 K10 - 0x880C010B, // 004A GETMBR R3 R0 K11 + 0x90029803, // 0048 SETMBR R0 K76 R3 + 0x0004033F, // 0049 ADD R1 R1 K63 + 0x880C0125, // 004A GETMBR R3 R0 K37 0x780E0006, // 004B JMPF R3 #0053 - 0x8C0C0503, // 004C GETMET R3 R2 K3 + 0x8C0C052C, // 004C GETMET R3 R2 K44 0x5C140200, // 004D MOVE R5 R1 0x541A0003, // 004E LDINT R6 4 0x7C0C0600, // 004F CALL R3 3 - 0x90022203, // 0050 SETMBR R0 K17 R3 + 0x90025403, // 0050 SETMBR R0 K42 R3 0x540E0003, // 0051 LDINT R3 4 0x00040203, // 0052 ADD R1 R1 R3 - 0x880C0107, // 0053 GETMBR R3 R0 K7 + 0x880C014B, // 0053 GETMBR R3 R0 K75 0x780E0005, // 0054 JMPF R3 #005B - 0x8C0C0503, // 0055 GETMET R3 R2 K3 + 0x8C0C052C, // 0055 GETMET R3 R2 K44 0x5C140200, // 0056 MOVE R5 R1 - 0x5818000A, // 0057 LDCONST R6 K10 + 0x5818003F, // 0057 LDCONST R6 K63 0x7C0C0600, // 0058 CALL R3 3 - 0x0010070A, // 0059 ADD R4 R3 K10 + 0x0010073F, // 0059 ADD R4 R3 K63 0x00040204, // 005A ADD R1 R1 R4 - 0x90022401, // 005B SETMBR R0 K18 R1 + 0x90025601, // 005B SETMBR R0 K43 R1 0x80040000, // 005C RET 1 R0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index b9e2bcfbc..64ac3b77c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -3,6 +3,89 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_MessageHandler' ktab size: 79, total: 110 (saved 248 bytes) +static const bvalue be_ktab_class_Matter_MessageHandler[79] = { + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(commissioning), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(Commisioning_Context), + /* K4 */ be_nested_str_weak(im), + /* K5 */ be_nested_str_weak(IM), + /* K6 */ be_nested_str_weak(control_message), + /* K7 */ be_nested_str_weak(Control_Message), + /* K8 */ be_nested_str_weak(_n_bytes), + /* K9 */ be_nested_str_weak(x_flag_r), + /* K10 */ be_nested_str_weak(build_standalone_ack), + /* K11 */ be_nested_str_weak(encode_frame), + /* K12 */ be_nested_str_weak(encrypt), + /* K13 */ be_nested_str_weak(tasmota), + /* K14 */ be_nested_str_weak(loglevel), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), + /* K17 */ be_nested_str_weak(session), + /* K18 */ be_nested_str_weak(local_session_id), + /* K19 */ be_nested_str_weak(ack_message_counter), + /* K20 */ be_nested_str_weak(message_counter), + /* K21 */ be_nested_str_weak(_X7Breliable_X7D), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(send_response_frame), + /* K24 */ be_nested_str_weak(Frame), + /* K25 */ be_nested_str_weak(decode_header), + /* K26 */ be_nested_str_weak(sec_p), + /* K27 */ be_nested_str_weak(sessions), + /* K28 */ be_nested_str_weak(find_session_source_id_unsecure), + /* K29 */ be_nested_str_weak(source_node_id), + /* K30 */ be_nested_str_weak(process_incoming_control_message), + /* K31 */ be_const_int(0), + /* K32 */ be_nested_str_weak(sec_sesstype), + /* K33 */ be_nested_str_weak(_ip), + /* K34 */ be_nested_str_weak(_port), + /* K35 */ be_nested_str_weak(_message_handler), + /* K36 */ be_nested_str_weak(_counter_insecure_rcv), + /* K37 */ be_nested_str_weak(validate), + /* K38 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i), + /* K39 */ be_nested_str_weak(val), + /* K40 */ be_nested_str_weak(send_simple_ack), + /* K41 */ be_nested_str_weak(decode_payload), + /* K42 */ be_nested_str_weak(received_ack), + /* K43 */ be_nested_str_weak(opcode), + /* K44 */ be_nested_str_weak(get_opcode_name), + /* K45 */ be_nested_str_weak(0x_X2502X), + /* K46 */ be_const_int(3), + /* K47 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K48 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), + /* K49 */ be_nested_str_weak(_X7Breliable_X7D_X20), + /* K50 */ be_nested_str_weak(exchange_id), + /* K51 */ be_nested_str_weak(process_incoming), + /* K52 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i), + /* K53 */ be_nested_str_weak(get_session_by_local_session_id), + /* K54 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D), + /* K55 */ be_nested_str_weak(counter_rcv_validate), + /* K56 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20), + /* K57 */ be_nested_str_weak(_X20counter_X3D), + /* K58 */ be_nested_str_weak(counter_rcv), + /* K59 */ be_nested_str_weak(send_encrypted_ack), + /* K60 */ be_nested_str_weak(decrypt), + /* K61 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A), + /* K62 */ be_nested_str_weak(protocol_id), + /* K63 */ be_nested_str_weak(_X20opcode_X3D), + /* K64 */ be_nested_str_weak(_X20exchange_id_X3D), + /* K65 */ be_nested_str_weak(process_incoming_ack), + /* K66 */ be_nested_str_weak(send_enqueued), + /* K67 */ be_const_int(1), + /* K68 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), + /* K69 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), + /* K70 */ be_nested_str_weak(_X3B), + /* K71 */ be_const_int(2), + /* K72 */ be_nested_str_weak(_debug_present), + /* K73 */ be_nested_str_weak(debug), + /* K74 */ be_nested_str_weak(traceback), + /* K75 */ be_nested_str_weak(msg_send), + /* K76 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), + /* K77 */ be_nested_str_weak(every_50ms), + /* K78 */ be_nested_str_weak(every_second), +}; + extern const bclass be_class_Matter_MessageHandler; @@ -13,23 +96,13 @@ be_local_closure(class_Matter_MessageHandler_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(commissioning), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Commisioning_Context), - /* K4 */ be_nested_str_weak(im), - /* K5 */ be_nested_str_weak(IM), - /* K6 */ be_nested_str_weak(control_message), - /* K7 */ be_nested_str_weak(Control_Message), - /* K8 */ be_nested_str_weak(_n_bytes), - }), + &be_ktab_class_Matter_MessageHandler, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ @@ -67,61 +140,45 @@ be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(x_flag_r), - /* K1 */ be_nested_str_weak(build_standalone_ack), - /* K2 */ be_nested_str_weak(encode_frame), - /* K3 */ be_nested_str_weak(encrypt), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(loglevel), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), - /* K8 */ be_nested_str_weak(session), - /* K9 */ be_nested_str_weak(local_session_id), - /* K10 */ be_nested_str_weak(ack_message_counter), - /* K11 */ be_nested_str_weak(message_counter), - /* K12 */ be_nested_str_weak(_X7Breliable_X7D), - /* K13 */ be_nested_str_weak(), - /* K14 */ be_nested_str_weak(send_response_frame), - }), + &be_ktab_class_Matter_MessageHandler, /* shared constants */ be_str_weak(send_encrypted_ack), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x880C0309, // 0000 GETMBR R3 R1 K9 0x780E001C, // 0001 JMPF R3 #001F - 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x8C0C030A, // 0002 GETMET R3 R1 K10 0x5C140400, // 0003 MOVE R5 R2 0x7C0C0400, // 0004 CALL R3 2 - 0x8C100702, // 0005 GETMET R4 R3 K2 + 0x8C10070B, // 0005 GETMET R4 R3 K11 0x7C100200, // 0006 CALL R4 1 - 0x8C100703, // 0007 GETMET R4 R3 K3 + 0x8C10070C, // 0007 GETMET R4 R3 K12 0x7C100200, // 0008 CALL R4 1 - 0xB8120800, // 0009 GETNGBL R4 K4 - 0x8C100905, // 000A GETMET R4 R4 K5 + 0xB8121A00, // 0009 GETNGBL R4 K13 + 0x8C10090E, // 000A GETMET R4 R4 K14 0x541A0003, // 000B LDINT R6 4 0x7C100400, // 000C CALL R4 2 0x7812000D, // 000D JMPF R4 #001C - 0xB8120C00, // 000E GETNGBL R4 K6 + 0xB8121E00, // 000E GETNGBL R4 K15 0x60140018, // 000F GETGBL R5 G24 - 0x58180007, // 0010 LDCONST R6 K7 - 0x881C0708, // 0011 GETMBR R7 R3 K8 - 0x881C0F09, // 0012 GETMBR R7 R7 K9 - 0x8820070A, // 0013 GETMBR R8 R3 K10 - 0x8824070B, // 0014 GETMBR R9 R3 K11 + 0x58180010, // 0010 LDCONST R6 K16 + 0x881C0711, // 0011 GETMBR R7 R3 K17 + 0x881C0F12, // 0012 GETMBR R7 R7 K18 + 0x88200713, // 0013 GETMBR R8 R3 K19 + 0x88240714, // 0014 GETMBR R9 R3 K20 0x780A0001, // 0015 JMPF R2 #0018 - 0x5828000C, // 0016 LDCONST R10 K12 + 0x58280015, // 0016 LDCONST R10 K21 0x70020000, // 0017 JMP #0019 - 0x5828000D, // 0018 LDCONST R10 K13 + 0x58280016, // 0018 LDCONST R10 K22 0x7C140A00, // 0019 CALL R5 5 0x541A0003, // 001A LDINT R6 4 0x7C100400, // 001B CALL R4 2 - 0x8C10010E, // 001C GETMET R4 R0 K14 + 0x8C100117, // 001C GETMET R4 R0 K23 0x5C180600, // 001D MOVE R6 R3 0x7C100400, // 001E CALL R4 2 0x80000000, // 001F RET 0 @@ -138,232 +195,166 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ be_nested_proto( 18, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[65]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Frame), - /* K2 */ be_nested_str_weak(decode_header), - /* K3 */ be_nested_str_weak(sec_p), - /* K4 */ be_nested_str_weak(device), - /* K5 */ be_nested_str_weak(sessions), - /* K6 */ be_nested_str_weak(find_session_source_id_unsecure), - /* K7 */ be_nested_str_weak(source_node_id), - /* K8 */ be_nested_str_weak(control_message), - /* K9 */ be_nested_str_weak(process_incoming_control_message), - /* K10 */ be_nested_str_weak(local_session_id), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(sec_sesstype), - /* K13 */ be_nested_str_weak(_ip), - /* K14 */ be_nested_str_weak(_port), - /* K15 */ be_nested_str_weak(_message_handler), - /* K16 */ be_nested_str_weak(session), - /* K17 */ be_nested_str_weak(_counter_insecure_rcv), - /* K18 */ be_nested_str_weak(validate), - /* K19 */ be_nested_str_weak(message_counter), - /* K20 */ be_nested_str_weak(tasmota), - /* K21 */ be_nested_str_weak(loglevel), - /* K22 */ be_nested_str_weak(log), - /* K23 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i), - /* K24 */ be_nested_str_weak(val), - /* K25 */ be_nested_str_weak(send_simple_ack), - /* K26 */ be_nested_str_weak(decode_payload), - /* K27 */ be_nested_str_weak(received_ack), - /* K28 */ be_nested_str_weak(opcode), - /* K29 */ be_nested_str_weak(get_opcode_name), - /* K30 */ be_nested_str_weak(0x_X2502X), - /* K31 */ be_const_int(3), - /* K32 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K33 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i), - /* K34 */ be_nested_str_weak(x_flag_r), - /* K35 */ be_nested_str_weak(_X7Breliable_X7D_X20), - /* K36 */ be_nested_str_weak(), - /* K37 */ be_nested_str_weak(exchange_id), - /* K38 */ be_nested_str_weak(ack_message_counter), - /* K39 */ be_nested_str_weak(commissioning), - /* K40 */ be_nested_str_weak(process_incoming), - /* K41 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i), - /* K42 */ be_nested_str_weak(get_session_by_local_session_id), - /* K43 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D), - /* K44 */ be_nested_str_weak(counter_rcv_validate), - /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20), - /* K46 */ be_nested_str_weak(_X20counter_X3D), - /* K47 */ be_nested_str_weak(counter_rcv), - /* K48 */ be_nested_str_weak(send_encrypted_ack), - /* K49 */ be_nested_str_weak(decrypt), - /* K50 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A), - /* K51 */ be_nested_str_weak(protocol_id), - /* K52 */ be_nested_str_weak(_X20opcode_X3D), - /* K53 */ be_nested_str_weak(_X20exchange_id_X3D), - /* K54 */ be_nested_str_weak(im), - /* K55 */ be_nested_str_weak(process_incoming_ack), - /* K56 */ be_nested_str_weak(send_enqueued), - /* K57 */ be_const_int(1), - /* K58 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A), - /* K59 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20), - /* K60 */ be_nested_str_weak(_X3B), - /* K61 */ be_const_int(2), - /* K62 */ be_nested_str_weak(_debug_present), - /* K63 */ be_nested_str_weak(debug), - /* K64 */ be_nested_str_weak(traceback), - }), + &be_ktab_class_Matter_MessageHandler, /* shared constants */ be_str_weak(msg_received), &be_const_str_solidified, ( &(const binstruction[334]) { /* code */ 0x50100000, // 0000 LDBOOL R4 0 0 0xA8020132, // 0001 EXBLK 0 #0135 - 0xB8160000, // 0002 GETNGBL R5 K0 - 0x8C140B01, // 0003 GETMET R5 R5 K1 + 0xB8160400, // 0002 GETNGBL R5 K2 + 0x8C140B18, // 0003 GETMET R5 R5 K24 0x5C1C0000, // 0004 MOVE R7 R0 0x5C200200, // 0005 MOVE R8 R1 0x5C240400, // 0006 MOVE R9 R2 0x5C280600, // 0007 MOVE R10 R3 0x7C140A00, // 0008 CALL R5 5 - 0x8C180B02, // 0009 GETMET R6 R5 K2 + 0x8C180B19, // 0009 GETMET R6 R5 K25 0x7C180200, // 000A CALL R6 1 0x5C1C0C00, // 000B MOVE R7 R6 0x741E0002, // 000C JMPT R7 #0010 0x501C0000, // 000D LDBOOL R7 0 0 0xA8040001, // 000E EXBLK 1 1 0x80040E00, // 000F RET 1 R7 - 0x881C0B03, // 0010 GETMBR R7 R5 K3 + 0x881C0B1A, // 0010 GETMBR R7 R5 K26 0x781E000C, // 0011 JMPF R7 #001F - 0x881C0104, // 0012 GETMBR R7 R0 K4 - 0x881C0F05, // 0013 GETMBR R7 R7 K5 - 0x8C1C0F06, // 0014 GETMET R7 R7 K6 - 0x88240B07, // 0015 GETMBR R9 R5 K7 + 0x881C0100, // 0012 GETMBR R7 R0 K0 + 0x881C0F1B, // 0013 GETMBR R7 R7 K27 + 0x8C1C0F1C, // 0014 GETMET R7 R7 K28 + 0x88240B1D, // 0015 GETMBR R9 R5 K29 0x542A0059, // 0016 LDINT R10 90 0x7C1C0600, // 0017 CALL R7 3 - 0x88200108, // 0018 GETMBR R8 R0 K8 - 0x8C201109, // 0019 GETMET R8 R8 K9 + 0x88200106, // 0018 GETMBR R8 R0 K6 + 0x8C20111E, // 0019 GETMET R8 R8 K30 0x5C280A00, // 001A MOVE R10 R5 0x7C200400, // 001B CALL R8 2 0xA8040001, // 001C EXBLK 1 1 0x80041000, // 001D RET 1 R8 0x70020111, // 001E JMP #0131 - 0x881C0B0A, // 001F GETMBR R7 R5 K10 - 0x1C1C0F0B, // 0020 EQ R7 R7 K11 + 0x881C0B12, // 001F GETMBR R7 R5 K18 + 0x1C1C0F1F, // 0020 EQ R7 R7 K31 0x781E007A, // 0021 JMPF R7 #009D - 0x881C0B0C, // 0022 GETMBR R7 R5 K12 - 0x1C1C0F0B, // 0023 EQ R7 R7 K11 + 0x881C0B20, // 0022 GETMBR R7 R5 K32 + 0x1C1C0F1F, // 0023 EQ R7 R7 K31 0x781E0077, // 0024 JMPF R7 #009D - 0x881C0104, // 0025 GETMBR R7 R0 K4 - 0x881C0F05, // 0026 GETMBR R7 R7 K5 - 0x8C1C0F06, // 0027 GETMET R7 R7 K6 - 0x88240B07, // 0028 GETMBR R9 R5 K7 + 0x881C0100, // 0025 GETMBR R7 R0 K0 + 0x881C0F1B, // 0026 GETMBR R7 R7 K27 + 0x8C1C0F1C, // 0027 GETMET R7 R7 K28 + 0x88240B1D, // 0028 GETMBR R9 R5 K29 0x542A0059, // 0029 LDINT R10 90 0x7C1C0600, // 002A CALL R7 3 0x780A0000, // 002B JMPF R2 #002D - 0x901E1A02, // 002C SETMBR R7 K13 R2 + 0x901E4202, // 002C SETMBR R7 K33 R2 0x780E0000, // 002D JMPF R3 #002F - 0x901E1C03, // 002E SETMBR R7 K14 R3 - 0x901E1E00, // 002F SETMBR R7 K15 R0 - 0x90162007, // 0030 SETMBR R5 K16 R7 - 0x88200F11, // 0031 GETMBR R8 R7 K17 - 0x8C201112, // 0032 GETMET R8 R8 K18 - 0x88280B13, // 0033 GETMBR R10 R5 K19 + 0x901E4403, // 002E SETMBR R7 K34 R3 + 0x901E4600, // 002F SETMBR R7 K35 R0 + 0x90162207, // 0030 SETMBR R5 K17 R7 + 0x88200F24, // 0031 GETMBR R8 R7 K36 + 0x8C201125, // 0032 GETMET R8 R8 K37 + 0x88280B14, // 0033 GETMBR R10 R5 K20 0x502C0000, // 0034 LDBOOL R11 0 0 0x7C200600, // 0035 CALL R8 3 0x74220015, // 0036 JMPT R8 #004D - 0xB8222800, // 0037 GETNGBL R8 K20 - 0x8C201115, // 0038 GETMET R8 R8 K21 + 0xB8221A00, // 0037 GETNGBL R8 K13 + 0x8C20110E, // 0038 GETMET R8 R8 K14 0x542A0003, // 0039 LDINT R10 4 0x7C200400, // 003A CALL R8 2 0x78220009, // 003B JMPF R8 #0046 - 0xB8222C00, // 003C GETNGBL R8 K22 + 0xB8221E00, // 003C GETNGBL R8 K15 0x60240018, // 003D GETGBL R9 G24 - 0x58280017, // 003E LDCONST R10 K23 - 0x882C0B13, // 003F GETMBR R11 R5 K19 - 0x88300F11, // 0040 GETMBR R12 R7 K17 - 0x8C301918, // 0041 GETMET R12 R12 K24 + 0x58280026, // 003E LDCONST R10 K38 + 0x882C0B14, // 003F GETMBR R11 R5 K20 + 0x88300F24, // 0040 GETMBR R12 R7 K36 + 0x8C301927, // 0041 GETMET R12 R12 K39 0x7C300200, // 0042 CALL R12 1 0x7C240600, // 0043 CALL R9 3 0x542A0003, // 0044 LDINT R10 4 0x7C200400, // 0045 CALL R8 2 - 0x8C200119, // 0046 GETMET R8 R0 K25 + 0x8C200128, // 0046 GETMET R8 R0 K40 0x5C280A00, // 0047 MOVE R10 R5 0x502C0000, // 0048 LDBOOL R11 0 0 0x7C200600, // 0049 CALL R8 3 0x50200000, // 004A LDBOOL R8 0 0 0xA8040001, // 004B EXBLK 1 1 0x80041000, // 004C RET 1 R8 - 0x8C200B1A, // 004D GETMET R8 R5 K26 + 0x8C200B29, // 004D GETMET R8 R5 K41 0x7C200200, // 004E CALL R8 1 0x74220002, // 004F JMPT R8 #0053 0x50200000, // 0050 LDBOOL R8 0 0 0xA8040001, // 0051 EXBLK 1 1 0x80041000, // 0052 RET 1 R8 - 0x88200104, // 0053 GETMBR R8 R0 K4 - 0x8C20111B, // 0054 GETMET R8 R8 K27 + 0x88200100, // 0053 GETMBR R8 R0 K0 + 0x8C20112A, // 0054 GETMET R8 R8 K42 0x5C280A00, // 0055 MOVE R10 R5 0x7C200400, // 0056 CALL R8 2 - 0x88200B1C, // 0057 GETMBR R8 R5 K28 + 0x88200B2B, // 0057 GETMBR R8 R5 K43 0x5426000F, // 0058 LDINT R9 16 0x20201009, // 0059 NE R8 R8 R9 0x7822001A, // 005A JMPF R8 #0076 - 0xB8220000, // 005B GETNGBL R8 K0 - 0x8C20111D, // 005C GETMET R8 R8 K29 - 0x88280B1C, // 005D GETMBR R10 R5 K28 + 0xB8220400, // 005B GETNGBL R8 K2 + 0x8C20112C, // 005C GETMET R8 R8 K44 + 0x88280B2B, // 005D GETMBR R10 R5 K43 0x7C200400, // 005E CALL R8 2 0x5C241000, // 005F MOVE R9 R8 0x74260004, // 0060 JMPT R9 #0066 0x60240018, // 0061 GETGBL R9 G24 - 0x5828001E, // 0062 LDCONST R10 K30 - 0x882C0B1C, // 0063 GETMBR R11 R5 K28 + 0x5828002D, // 0062 LDCONST R10 K45 + 0x882C0B2B, // 0063 GETMBR R11 R5 K43 0x7C240400, // 0064 CALL R9 2 0x5C201200, // 0065 MOVE R8 R9 - 0xB8262800, // 0066 GETNGBL R9 K20 - 0x8C241315, // 0067 GETMET R9 R9 K21 - 0x582C001F, // 0068 LDCONST R11 K31 + 0xB8261A00, // 0066 GETNGBL R9 K13 + 0x8C24130E, // 0067 GETMET R9 R9 K14 + 0x582C002E, // 0068 LDCONST R11 K46 0x7C240400, // 0069 CALL R9 2 0x78260009, // 006A JMPF R9 #0075 - 0xB8262C00, // 006B GETNGBL R9 K22 + 0xB8261E00, // 006B GETNGBL R9 K15 0x60280018, // 006C GETGBL R10 G24 - 0x582C0020, // 006D LDCONST R11 K32 - 0x88300F0A, // 006E GETMBR R12 R7 K10 + 0x582C002F, // 006D LDCONST R11 K47 + 0x88300F12, // 006E GETMBR R12 R7 K18 0x5C341000, // 006F MOVE R13 R8 0x5C380400, // 0070 MOVE R14 R2 0x5C3C0600, // 0071 MOVE R15 R3 0x7C280A00, // 0072 CALL R10 5 - 0x582C001F, // 0073 LDCONST R11 K31 + 0x582C002E, // 0073 LDCONST R11 K46 0x7C240400, // 0074 CALL R9 2 0x70020017, // 0075 JMP #008E - 0xB8222800, // 0076 GETNGBL R8 K20 - 0x8C201115, // 0077 GETMET R8 R8 K21 + 0xB8221A00, // 0076 GETNGBL R8 K13 + 0x8C20110E, // 0077 GETMET R8 R8 K14 0x542A0003, // 0078 LDINT R10 4 0x7C200400, // 0079 CALL R8 2 0x78220012, // 007A JMPF R8 #008E - 0xB8222C00, // 007B GETNGBL R8 K22 + 0xB8221E00, // 007B GETNGBL R8 K15 0x60240018, // 007C GETGBL R9 G24 - 0x58280021, // 007D LDCONST R10 K33 - 0x882C0F0A, // 007E GETMBR R11 R7 K10 - 0x88300B13, // 007F GETMBR R12 R5 K19 - 0x88340B22, // 0080 GETMBR R13 R5 K34 + 0x58280030, // 007D LDCONST R10 K48 + 0x882C0F12, // 007E GETMBR R11 R7 K18 + 0x88300B14, // 007F GETMBR R12 R5 K20 + 0x88340B09, // 0080 GETMBR R13 R5 K9 0x78360001, // 0081 JMPF R13 #0084 - 0x58340023, // 0082 LDCONST R13 K35 + 0x58340031, // 0082 LDCONST R13 K49 0x70020000, // 0083 JMP #0085 - 0x58340024, // 0084 LDCONST R13 K36 - 0x88380B25, // 0085 GETMBR R14 R5 K37 + 0x58340016, // 0084 LDCONST R13 K22 + 0x88380B32, // 0085 GETMBR R14 R5 K50 0x603C0008, // 0086 GETGBL R15 G8 - 0x88400B26, // 0087 GETMBR R16 R5 K38 + 0x88400B13, // 0087 GETMBR R16 R5 K19 0x7C3C0200, // 0088 CALL R15 1 0x5C400400, // 0089 MOVE R16 R2 0x5C440600, // 008A MOVE R17 R3 0x7C241000, // 008B CALL R9 8 0x542A0003, // 008C LDINT R10 4 0x7C200400, // 008D CALL R8 2 - 0x88200127, // 008E GETMBR R8 R0 K39 - 0x8C201128, // 008F GETMET R8 R8 K40 + 0x88200101, // 008E GETMBR R8 R0 K1 + 0x8C201133, // 008F GETMET R8 R8 K51 0x5C280A00, // 0090 MOVE R10 R5 0x7C200400, // 0091 CALL R8 2 0x5C101000, // 0092 MOVE R4 R8 0x5C200800, // 0093 MOVE R8 R4 0x74220003, // 0094 JMPT R8 #0099 - 0x8C200119, // 0095 GETMET R8 R0 K25 + 0x8C200128, // 0095 GETMET R8 R0 K40 0x5C280A00, // 0096 MOVE R10 R5 0x502C0000, // 0097 LDBOOL R11 0 0 0x7C200600, // 0098 CALL R8 3 @@ -371,153 +362,153 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0xA8040001, // 009A EXBLK 1 1 0x80041000, // 009B RET 1 R8 0x70020093, // 009C JMP #0131 - 0xB81E2800, // 009D GETNGBL R7 K20 - 0x8C1C0F15, // 009E GETMET R7 R7 K21 + 0xB81E1A00, // 009D GETNGBL R7 K13 + 0x8C1C0F0E, // 009E GETMET R7 R7 K14 0x54260003, // 009F LDINT R9 4 0x7C1C0400, // 00A0 CALL R7 2 0x781E0007, // 00A1 JMPF R7 #00AA - 0xB81E2C00, // 00A2 GETNGBL R7 K22 + 0xB81E1E00, // 00A2 GETNGBL R7 K15 0x60200018, // 00A3 GETGBL R8 G24 - 0x58240029, // 00A4 LDCONST R9 K41 - 0x88280B0A, // 00A5 GETMBR R10 R5 K10 - 0x882C0B13, // 00A6 GETMBR R11 R5 K19 + 0x58240034, // 00A4 LDCONST R9 K52 + 0x88280B12, // 00A5 GETMBR R10 R5 K18 + 0x882C0B14, // 00A6 GETMBR R11 R5 K20 0x7C200600, // 00A7 CALL R8 3 0x54260003, // 00A8 LDINT R9 4 0x7C1C0400, // 00A9 CALL R7 2 - 0x881C0104, // 00AA GETMBR R7 R0 K4 - 0x881C0F05, // 00AB GETMBR R7 R7 K5 - 0x8C1C0F2A, // 00AC GETMET R7 R7 K42 - 0x88240B0A, // 00AD GETMBR R9 R5 K10 + 0x881C0100, // 00AA GETMBR R7 R0 K0 + 0x881C0F1B, // 00AB GETMBR R7 R7 K27 + 0x8C1C0F35, // 00AC GETMET R7 R7 K53 + 0x88240B12, // 00AD GETMBR R9 R5 K18 0x7C1C0400, // 00AE CALL R7 2 0x4C200000, // 00AF LDNIL R8 0x1C200E08, // 00B0 EQ R8 R7 R8 0x78220009, // 00B1 JMPF R8 #00BC - 0xB8222C00, // 00B2 GETNGBL R8 K22 + 0xB8221E00, // 00B2 GETNGBL R8 K15 0x60240008, // 00B3 GETGBL R9 G8 - 0x88280B0A, // 00B4 GETMBR R10 R5 K10 + 0x88280B12, // 00B4 GETMBR R10 R5 K18 0x7C240200, // 00B5 CALL R9 1 - 0x00265609, // 00B6 ADD R9 K43 R9 - 0x5828001F, // 00B7 LDCONST R10 K31 + 0x00266C09, // 00B6 ADD R9 K54 R9 + 0x5828002E, // 00B7 LDCONST R10 K46 0x7C200400, // 00B8 CALL R8 2 0x50200000, // 00B9 LDBOOL R8 0 0 0xA8040001, // 00BA EXBLK 1 1 0x80041000, // 00BB RET 1 R8 0x780A0000, // 00BC JMPF R2 #00BE - 0x901E1A02, // 00BD SETMBR R7 K13 R2 + 0x901E4202, // 00BD SETMBR R7 K33 R2 0x780E0000, // 00BE JMPF R3 #00C0 - 0x901E1C03, // 00BF SETMBR R7 K14 R3 - 0x901E1E00, // 00C0 SETMBR R7 K15 R0 - 0x90162007, // 00C1 SETMBR R5 K16 R7 - 0x8C200F2C, // 00C2 GETMET R8 R7 K44 - 0x88280B13, // 00C3 GETMBR R10 R5 K19 + 0x901E4403, // 00BF SETMBR R7 K34 R3 + 0x901E4600, // 00C0 SETMBR R7 K35 R0 + 0x90162207, // 00C1 SETMBR R5 K17 R7 + 0x8C200F37, // 00C2 GETMET R8 R7 K55 + 0x88280B14, // 00C3 GETMBR R10 R5 K20 0x502C0200, // 00C4 LDBOOL R11 1 0 0x7C200600, // 00C5 CALL R8 3 0x74220017, // 00C6 JMPT R8 #00DF - 0xB8222800, // 00C7 GETNGBL R8 K20 - 0x8C201115, // 00C8 GETMET R8 R8 K21 - 0x5828001F, // 00C9 LDCONST R10 K31 + 0xB8221A00, // 00C7 GETNGBL R8 K13 + 0x8C20110E, // 00C8 GETMET R8 R8 K14 + 0x5828002E, // 00C9 LDCONST R10 K46 0x7C200400, // 00CA CALL R8 2 0x7822000B, // 00CB JMPF R8 #00D8 - 0xB8222C00, // 00CC GETNGBL R8 K22 + 0xB8221E00, // 00CC GETNGBL R8 K15 0x60240008, // 00CD GETGBL R9 G8 - 0x88280B13, // 00CE GETMBR R10 R5 K19 + 0x88280B14, // 00CE GETMBR R10 R5 K20 0x7C240200, // 00CF CALL R9 1 - 0x00265A09, // 00D0 ADD R9 K45 R9 - 0x0024132E, // 00D1 ADD R9 R9 K46 + 0x00267009, // 00D0 ADD R9 K56 R9 + 0x00241339, // 00D1 ADD R9 R9 K57 0x60280008, // 00D2 GETGBL R10 G8 - 0x882C0F2F, // 00D3 GETMBR R11 R7 K47 + 0x882C0F3A, // 00D3 GETMBR R11 R7 K58 0x7C280200, // 00D4 CALL R10 1 0x0024120A, // 00D5 ADD R9 R9 R10 - 0x5828001F, // 00D6 LDCONST R10 K31 + 0x5828002E, // 00D6 LDCONST R10 K46 0x7C200400, // 00D7 CALL R8 2 - 0x8C200130, // 00D8 GETMET R8 R0 K48 + 0x8C20013B, // 00D8 GETMET R8 R0 K59 0x5C280A00, // 00D9 MOVE R10 R5 0x502C0000, // 00DA LDBOOL R11 0 0 0x7C200600, // 00DB CALL R8 3 0x50200000, // 00DC LDBOOL R8 0 0 0xA8040001, // 00DD EXBLK 1 1 0x80041000, // 00DE RET 1 R8 - 0x8C200B31, // 00DF GETMET R8 R5 K49 + 0x8C200B3C, // 00DF GETMET R8 R5 K60 0x7C200200, // 00E0 CALL R8 1 0x5C241000, // 00E1 MOVE R9 R8 0x74260002, // 00E2 JMPT R9 #00E6 0x50240000, // 00E3 LDBOOL R9 0 0 0xA8040001, // 00E4 EXBLK 1 1 0x80041200, // 00E5 RET 1 R9 - 0x8C240B1A, // 00E6 GETMET R9 R5 K26 + 0x8C240B29, // 00E6 GETMET R9 R5 K41 0x7C240200, // 00E7 CALL R9 1 - 0xB8262800, // 00E8 GETNGBL R9 K20 - 0x8C241315, // 00E9 GETMET R9 R9 K21 + 0xB8261A00, // 00E8 GETNGBL R9 K13 + 0x8C24130E, // 00E9 GETMET R9 R9 K14 0x542E0003, // 00EA LDINT R11 4 0x7C240400, // 00EB CALL R9 2 0x78260012, // 00EC JMPF R9 #0100 - 0xB8262C00, // 00ED GETNGBL R9 K22 + 0xB8261E00, // 00ED GETNGBL R9 K15 0x60280008, // 00EE GETGBL R10 G8 - 0x882C0B33, // 00EF GETMBR R11 R5 K51 + 0x882C0B3E, // 00EF GETMBR R11 R5 K62 0x7C280200, // 00F0 CALL R10 1 - 0x002A640A, // 00F1 ADD R10 K50 R10 - 0x00281534, // 00F2 ADD R10 R10 K52 + 0x002A7A0A, // 00F1 ADD R10 K61 R10 + 0x0028153F, // 00F2 ADD R10 R10 K63 0x602C0008, // 00F3 GETGBL R11 G8 - 0x88300B1C, // 00F4 GETMBR R12 R5 K28 + 0x88300B2B, // 00F4 GETMBR R12 R5 K43 0x7C2C0200, // 00F5 CALL R11 1 0x0028140B, // 00F6 ADD R10 R10 R11 - 0x00281535, // 00F7 ADD R10 R10 K53 + 0x00281540, // 00F7 ADD R10 R10 K64 0x602C0008, // 00F8 GETGBL R11 G8 - 0x88300B25, // 00F9 GETMBR R12 R5 K37 + 0x88300B32, // 00F9 GETMBR R12 R5 K50 0x5436FFFE, // 00FA LDINT R13 65535 0x2C30180D, // 00FB AND R12 R12 R13 0x7C2C0200, // 00FC CALL R11 1 0x0028140B, // 00FD ADD R10 R10 R11 0x542E0003, // 00FE LDINT R11 4 0x7C240400, // 00FF CALL R9 2 - 0x88240104, // 0100 GETMBR R9 R0 K4 - 0x8C24131B, // 0101 GETMET R9 R9 K27 + 0x88240100, // 0100 GETMBR R9 R0 K0 + 0x8C24132A, // 0101 GETMET R9 R9 K42 0x5C2C0A00, // 0102 MOVE R11 R5 0x7C240400, // 0103 CALL R9 2 - 0x88240B33, // 0104 GETMBR R9 R5 K51 - 0x1C28130B, // 0105 EQ R10 R9 K11 + 0x88240B3E, // 0104 GETMBR R9 R5 K62 + 0x1C28131F, // 0105 EQ R10 R9 K31 0x782A000F, // 0106 JMPF R10 #0117 - 0x88280B1C, // 0107 GETMBR R10 R5 K28 + 0x88280B2B, // 0107 GETMBR R10 R5 K43 0x542E000F, // 0108 LDINT R11 16 0x1C28140B, // 0109 EQ R10 R10 R11 0x782A0009, // 010A JMPF R10 #0115 - 0x88280136, // 010B GETMBR R10 R0 K54 - 0x8C281537, // 010C GETMET R10 R10 K55 + 0x88280104, // 010B GETMBR R10 R0 K4 + 0x8C281541, // 010C GETMET R10 R10 K65 0x5C300A00, // 010D MOVE R12 R5 0x7C280400, // 010E CALL R10 2 0x5C101400, // 010F MOVE R4 R10 0x78120003, // 0110 JMPF R4 #0115 - 0x88280136, // 0111 GETMBR R10 R0 K54 - 0x8C281538, // 0112 GETMET R10 R10 K56 + 0x88280104, // 0111 GETMBR R10 R0 K4 + 0x8C281542, // 0112 GETMET R10 R10 K66 0x5C300000, // 0113 MOVE R12 R0 0x7C280400, // 0114 CALL R10 2 0x50100200, // 0115 LDBOOL R4 1 0 0x70020019, // 0116 JMP #0131 - 0x1C281339, // 0117 EQ R10 R9 K57 + 0x1C281343, // 0117 EQ R10 R9 K67 0x782A0010, // 0118 JMPF R10 #012A - 0x88280136, // 0119 GETMBR R10 R0 K54 - 0x8C281528, // 011A GETMET R10 R10 K40 + 0x88280104, // 0119 GETMBR R10 R0 K4 + 0x8C281533, // 011A GETMET R10 R10 K51 0x5C300A00, // 011B MOVE R12 R5 0x7C280400, // 011C CALL R10 2 0x5C101400, // 011D MOVE R4 R10 0x78120004, // 011E JMPF R4 #0124 - 0x88280136, // 011F GETMBR R10 R0 K54 - 0x8C281538, // 0120 GETMET R10 R10 K56 + 0x88280104, // 011F GETMBR R10 R0 K4 + 0x8C281542, // 0120 GETMET R10 R10 K66 0x5C300000, // 0121 MOVE R12 R0 0x7C280400, // 0122 CALL R10 2 0x70020003, // 0123 JMP #0128 - 0x8C280130, // 0124 GETMET R10 R0 K48 + 0x8C28013B, // 0124 GETMET R10 R0 K59 0x5C300A00, // 0125 MOVE R12 R5 0x50340200, // 0126 LDBOOL R13 1 0 0x7C280600, // 0127 CALL R10 3 0x50100200, // 0128 LDBOOL R4 1 0 0x70020006, // 0129 JMP #0131 - 0xB82A2C00, // 012A GETNGBL R10 K22 + 0xB82A1E00, // 012A GETNGBL R10 K15 0x602C0008, // 012B GETGBL R11 G8 0x5C301200, // 012C MOVE R12 R9 0x7C2C0200, // 012D CALL R11 1 - 0x002E740B, // 012E ADD R11 K58 R11 - 0x5830001F, // 012F LDCONST R12 K31 + 0x002E880B, // 012E ADD R11 K68 R11 + 0x5830002E, // 012F LDCONST R12 K46 0x7C280400, // 0130 CALL R10 2 0xA8040001, // 0131 EXBLK 1 1 0x80040800, // 0132 RET 1 R4 @@ -525,23 +516,23 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */ 0x70020017, // 0134 JMP #014D 0xAC140002, // 0135 CATCH R5 0 2 0x70020014, // 0136 JMP #014C - 0xB81E2C00, // 0137 GETNGBL R7 K22 + 0xB81E1E00, // 0137 GETNGBL R7 K15 0x60200008, // 0138 GETGBL R8 G8 0x5C240A00, // 0139 MOVE R9 R5 0x7C200200, // 013A CALL R8 1 - 0x00227608, // 013B ADD R8 K59 R8 - 0x0020113C, // 013C ADD R8 R8 K60 + 0x00228A08, // 013B ADD R8 K69 R8 + 0x00201146, // 013C ADD R8 R8 K70 0x60240008, // 013D GETGBL R9 G8 0x5C280C00, // 013E MOVE R10 R6 0x7C240200, // 013F CALL R9 1 0x00201009, // 0140 ADD R8 R8 R9 - 0x5824003D, // 0141 LDCONST R9 K61 + 0x58240047, // 0141 LDCONST R9 K71 0x7C1C0400, // 0142 CALL R7 2 - 0xB81E2800, // 0143 GETNGBL R7 K20 - 0x881C0F3E, // 0144 GETMBR R7 R7 K62 + 0xB81E1A00, // 0143 GETNGBL R7 K13 + 0x881C0F48, // 0144 GETMBR R7 R7 K72 0x781E0002, // 0145 JMPF R7 #0149 - 0xA41E7E00, // 0146 IMPORT R7 K63 - 0x8C200F40, // 0147 GETMET R8 R7 K64 + 0xA41E9200, // 0146 IMPORT R7 K73 + 0x8C200F4A, // 0147 GETMET R8 R7 K74 0x7C200200, // 0148 CALL R8 1 0x501C0000, // 0149 LDBOOL R7 0 0 0x80040E00, // 014A RET 1 R7 @@ -561,21 +552,18 @@ be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(msg_send), - }), + &be_ktab_class_Matter_MessageHandler, /* shared constants */ be_str_weak(send_response_frame), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C08054B, // 0001 GETMET R2 R2 K75 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 @@ -592,60 +580,45 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(x_flag_r), - /* K1 */ be_nested_str_weak(build_standalone_ack), - /* K2 */ be_nested_str_weak(local_session_id), - /* K3 */ be_nested_str_weak(encode_frame), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(loglevel), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s), - /* K8 */ be_nested_str_weak(session), - /* K9 */ be_nested_str_weak(ack_message_counter), - /* K10 */ be_nested_str_weak(message_counter), - /* K11 */ be_nested_str_weak(_X7Breliable_X7D), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(send_response_frame), - }), + &be_ktab_class_Matter_MessageHandler, /* shared constants */ be_str_weak(send_simple_ack), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0x880C0300, // 0000 GETMBR R3 R1 K0 + 0x880C0309, // 0000 GETMBR R3 R1 K9 0x780E001C, // 0001 JMPF R3 #001F - 0x8C0C0301, // 0002 GETMET R3 R1 K1 + 0x8C0C030A, // 0002 GETMET R3 R1 K10 0x5C140400, // 0003 MOVE R5 R2 0x7C0C0400, // 0004 CALL R3 2 - 0x88100302, // 0005 GETMBR R4 R1 K2 - 0x900E0404, // 0006 SETMBR R3 K2 R4 - 0x8C100703, // 0007 GETMET R4 R3 K3 + 0x88100312, // 0005 GETMBR R4 R1 K18 + 0x900E2404, // 0006 SETMBR R3 K18 R4 + 0x8C10070B, // 0007 GETMET R4 R3 K11 0x7C100200, // 0008 CALL R4 1 - 0xB8120800, // 0009 GETNGBL R4 K4 - 0x8C100905, // 000A GETMET R4 R4 K5 + 0xB8121A00, // 0009 GETNGBL R4 K13 + 0x8C10090E, // 000A GETMET R4 R4 K14 0x541A0003, // 000B LDINT R6 4 0x7C100400, // 000C CALL R4 2 0x7812000D, // 000D JMPF R4 #001C - 0xB8120C00, // 000E GETNGBL R4 K6 + 0xB8121E00, // 000E GETNGBL R4 K15 0x60140018, // 000F GETGBL R5 G24 - 0x58180007, // 0010 LDCONST R6 K7 - 0x881C0708, // 0011 GETMBR R7 R3 K8 - 0x881C0F02, // 0012 GETMBR R7 R7 K2 - 0x88200709, // 0013 GETMBR R8 R3 K9 - 0x8824070A, // 0014 GETMBR R9 R3 K10 + 0x5818004C, // 0010 LDCONST R6 K76 + 0x881C0711, // 0011 GETMBR R7 R3 K17 + 0x881C0F12, // 0012 GETMBR R7 R7 K18 + 0x88200713, // 0013 GETMBR R8 R3 K19 + 0x88240714, // 0014 GETMBR R9 R3 K20 0x780A0001, // 0015 JMPF R2 #0018 - 0x5828000B, // 0016 LDCONST R10 K11 + 0x58280015, // 0016 LDCONST R10 K21 0x70020000, // 0017 JMP #0019 - 0x5828000C, // 0018 LDCONST R10 K12 + 0x58280016, // 0018 LDCONST R10 K22 0x7C140A00, // 0019 CALL R5 5 0x541A0003, // 001A LDINT R6 4 0x7C100400, // 001B CALL R4 2 - 0x8C10010D, // 001C GETMET R4 R0 K13 + 0x8C100117, // 001C GETMET R4 R0 K23 0x5C180600, // 001D MOVE R6 R3 0x7C100400, // 001E CALL R4 2 0x80000000, // 001F RET 0 @@ -662,21 +635,18 @@ be_local_closure(class_Matter_MessageHandler_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(im), - /* K1 */ be_nested_str_weak(every_50ms), - }), + &be_ktab_class_Matter_MessageHandler, /* shared constants */ be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C04034D, // 0001 GETMET R1 R1 K77 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -692,25 +662,21 @@ be_local_closure(class_Matter_MessageHandler_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(commissioning), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(im), - }), + &be_ktab_class_Matter_MessageHandler, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C04034E, // 0001 GETMET R1 R1 K78 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x88040104, // 0003 GETMBR R1 R0 K4 + 0x8C04034E, // 0004 GETMET R1 R1 K78 0x7C040200, // 0005 CALL R1 1 0x80000000, // 0006 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h index 8a8b51bad..673983919 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h @@ -3,6 +3,29 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Path' ktab size: 19, total: 30 (saved 88 bytes) +static const bvalue be_ktab_class_Matter_Path[19] = { + /* K0 */ be_nested_str_weak(endpoint), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attribute), + /* K3 */ be_nested_str_weak(fabric_filtered), + /* K4 */ be_nested_str_weak(command), + /* K5 */ be_nested_str_weak(status), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(msg), + /* K8 */ be_nested_str_weak(), + /* K9 */ be_nested_str_weak(_X5B_X2502X_X5D), + /* K10 */ be_nested_str_weak(_X5B_X2A_X2A_X5D), + /* K11 */ be_nested_str_weak(_X2504X_X2F), + /* K12 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F), + /* K13 */ be_nested_str_weak(_X2504X), + /* K14 */ be_nested_str_weak(_X21), + /* K15 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K16 */ be_nested_str_weak(Exception_X3E_X20), + /* K17 */ be_nested_str_weak(_X2C_X20), + /* K18 */ be_nested_str_weak(reset), +}; + extern const bclass be_class_Matter_Path; @@ -13,22 +36,13 @@ be_local_closure(class_Matter_Path_reset, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - /* K3 */ be_nested_str_weak(fabric_filtered), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(status), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(msg), - }), + &be_ktab_class_Matter_Path, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -55,17 +69,13 @@ be_local_closure(class_Matter_Path_init, /* name */ be_nested_proto( 4, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attribute), - }), + &be_ktab_class_Matter_Path, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -86,90 +96,74 @@ be_local_closure(class_Matter_Path_tostring, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(_X5B_X2502X_X5D), - /* K3 */ be_nested_str_weak(_X5B_X2A_X2A_X5D), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(_X2504X_X2F), - /* K6 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F), - /* K7 */ be_nested_str_weak(attribute), - /* K8 */ be_nested_str_weak(_X2504X), - /* K9 */ be_nested_str_weak(command), - /* K10 */ be_nested_str_weak(fabric_filtered), - /* K11 */ be_nested_str_weak(_X21), - /* K12 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), - /* K13 */ be_nested_str_weak(Exception_X3E_X20), - /* K14 */ be_nested_str_weak(_X2C_X20), - }), + &be_ktab_class_Matter_Path, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[77]) { /* code */ 0xA802003C, // 0000 EXBLK 0 #003E - 0x58040000, // 0001 LDCONST R1 K0 - 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x58040008, // 0001 LDCONST R1 K8 + 0x88080100, // 0002 GETMBR R2 R0 K0 0x4C0C0000, // 0003 LDNIL R3 0x20080403, // 0004 NE R2 R2 R3 0x780A0004, // 0005 JMPF R2 #000B 0x60080018, // 0006 GETGBL R2 G24 - 0x580C0002, // 0007 LDCONST R3 K2 - 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x580C0009, // 0007 LDCONST R3 K9 + 0x88100100, // 0008 GETMBR R4 R0 K0 0x7C080400, // 0009 CALL R2 2 0x70020000, // 000A JMP #000C - 0x58080003, // 000B LDCONST R2 K3 + 0x5808000A, // 000B LDCONST R2 K10 0x00040202, // 000C ADD R1 R1 R2 - 0x88080104, // 000D GETMBR R2 R0 K4 + 0x88080101, // 000D GETMBR R2 R0 K1 0x4C0C0000, // 000E LDNIL R3 0x20080403, // 000F NE R2 R2 R3 0x780A0004, // 0010 JMPF R2 #0016 0x60080018, // 0011 GETGBL R2 G24 - 0x580C0005, // 0012 LDCONST R3 K5 - 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x580C000B, // 0012 LDCONST R3 K11 + 0x88100101, // 0013 GETMBR R4 R0 K1 0x7C080400, // 0014 CALL R2 2 0x70020000, // 0015 JMP #0017 - 0x58080006, // 0016 LDCONST R2 K6 + 0x5808000C, // 0016 LDCONST R2 K12 0x00040202, // 0017 ADD R1 R1 R2 - 0x88080107, // 0018 GETMBR R2 R0 K7 + 0x88080102, // 0018 GETMBR R2 R0 K2 0x4C0C0000, // 0019 LDNIL R3 0x20080403, // 001A NE R2 R2 R3 0x780A0004, // 001B JMPF R2 #0021 0x60080018, // 001C GETGBL R2 G24 - 0x580C0008, // 001D LDCONST R3 K8 - 0x88100107, // 001E GETMBR R4 R0 K7 + 0x580C000D, // 001D LDCONST R3 K13 + 0x88100102, // 001E GETMBR R4 R0 K2 0x7C080400, // 001F CALL R2 2 0x70020000, // 0020 JMP #0022 - 0x58080000, // 0021 LDCONST R2 K0 + 0x58080008, // 0021 LDCONST R2 K8 0x00040202, // 0022 ADD R1 R1 R2 - 0x88080109, // 0023 GETMBR R2 R0 K9 + 0x88080104, // 0023 GETMBR R2 R0 K4 0x4C0C0000, // 0024 LDNIL R3 0x20080403, // 0025 NE R2 R2 R3 0x780A0004, // 0026 JMPF R2 #002C 0x60080018, // 0027 GETGBL R2 G24 - 0x580C0008, // 0028 LDCONST R3 K8 - 0x88100109, // 0029 GETMBR R4 R0 K9 + 0x580C000D, // 0028 LDCONST R3 K13 + 0x88100104, // 0029 GETMBR R4 R0 K4 0x7C080400, // 002A CALL R2 2 0x70020000, // 002B JMP #002D - 0x58080000, // 002C LDCONST R2 K0 + 0x58080008, // 002C LDCONST R2 K8 0x00040202, // 002D ADD R1 R1 R2 - 0x8808010A, // 002E GETMBR R2 R0 K10 + 0x88080103, // 002E GETMBR R2 R0 K3 0x780A0000, // 002F JMPF R2 #0031 - 0x0004030B, // 0030 ADD R1 R1 K11 - 0x88080107, // 0031 GETMBR R2 R0 K7 + 0x0004030E, // 0030 ADD R1 R1 K14 + 0x88080102, // 0031 GETMBR R2 R0 K2 0x4C0C0000, // 0032 LDNIL R3 0x1C080403, // 0033 EQ R2 R2 R3 0x780A0004, // 0034 JMPF R2 #003A - 0x88080109, // 0035 GETMBR R2 R0 K9 + 0x88080104, // 0035 GETMBR R2 R0 K4 0x4C0C0000, // 0036 LDNIL R3 0x1C080403, // 0037 EQ R2 R2 R3 0x780A0000, // 0038 JMPF R2 #003A - 0x0004030C, // 0039 ADD R1 R1 K12 + 0x0004030F, // 0039 ADD R1 R1 K15 0xA8040001, // 003A EXBLK 1 1 0x80040200, // 003B RET 1 R1 0xA8040001, // 003C EXBLK 1 1 @@ -179,8 +173,8 @@ be_local_closure(class_Matter_Path_tostring, /* name */ 0x600C0008, // 0040 GETGBL R3 G8 0x5C100200, // 0041 MOVE R4 R1 0x7C0C0200, // 0042 CALL R3 1 - 0x000E1A03, // 0043 ADD R3 K13 R3 - 0x000C070E, // 0044 ADD R3 R3 K14 + 0x000E2003, // 0043 ADD R3 K16 R3 + 0x000C0711, // 0044 ADD R3 R3 K17 0x60100008, // 0045 GETGBL R4 G8 0x5C140400, // 0046 MOVE R5 R2 0x7C100200, // 0047 CALL R4 1 @@ -202,29 +196,24 @@ be_local_closure(class_Matter_Path_copy, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - }), + &be_ktab_class_Matter_Path, /* shared constants */ be_str_weak(copy), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080112, // 0000 GETMET R2 R0 K18 0x7C080200, // 0001 CALL R2 1 - 0x88080301, // 0002 GETMBR R2 R1 K1 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x88080302, // 0004 GETMBR R2 R1 K2 - 0x90020402, // 0005 SETMBR R0 K2 R2 - 0x88080303, // 0006 GETMBR R2 R1 K3 - 0x90020602, // 0007 SETMBR R0 K3 R2 + 0x88080300, // 0002 GETMBR R2 R1 K0 + 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x88080301, // 0004 GETMBR R2 R1 K1 + 0x90020202, // 0005 SETMBR R0 K1 R2 + 0x88080302, // 0006 GETMBR R2 R1 K2 + 0x90020402, // 0007 SETMBR R0 K2 R2 0x80000000, // 0008 RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h index f674c5996..2e26570f3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h @@ -3,6 +3,24 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_EventGenerator' ktab size: 14, total: 26 (saved 96 bytes) +static const bvalue be_ktab_class_Matter_EventGenerator[14] = { + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(reset), + /* K2 */ be_nested_str_weak(path_in_endpoint), + /* K3 */ be_nested_str_weak(path_in_cluster), + /* K4 */ be_nested_str_weak(path_in_event), + /* K5 */ be_nested_str_weak(path_in_event_min), + /* K6 */ be_nested_str_weak(event_no), + /* K7 */ be_nested_str_weak(finished), + /* K8 */ be_nested_str_weak(endpoint), + /* K9 */ be_nested_str_weak(cluster), + /* K10 */ be_nested_str_weak(event_id), + /* K11 */ be_nested_str_weak(events), + /* K12 */ be_nested_str_weak(find_min_no), + /* K13 */ be_nested_str_weak(event_is_match), +}; + extern const bclass be_class_Matter_EventGenerator; @@ -13,15 +31,13 @@ be_local_closure(class_Matter_EventGenerator_init, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - }), + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -40,13 +56,13 @@ be_local_closure(class_Matter_EventGenerator_get_pi, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(get_pi), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -65,33 +81,25 @@ be_local_closure(class_Matter_EventGenerator_start, /* name */ be_nested_proto( 7, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(path_in_endpoint), - /* K2 */ be_nested_str_weak(path_in_cluster), - /* K3 */ be_nested_str_weak(path_in_event), - /* K4 */ be_nested_str_weak(path_in_event_min), - /* K5 */ be_nested_str_weak(event_no), - /* K6 */ be_nested_str_weak(finished), - }), + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x8C140100, // 0000 GETMET R5 R0 K0 + 0x8C140101, // 0000 GETMET R5 R0 K1 0x7C140200, // 0001 CALL R5 1 - 0x90020201, // 0002 SETMBR R0 K1 R1 - 0x90020402, // 0003 SETMBR R0 K2 R2 - 0x90020603, // 0004 SETMBR R0 K3 R3 - 0x90020804, // 0005 SETMBR R0 K4 R4 - 0x90020A04, // 0006 SETMBR R0 K5 R4 + 0x90020401, // 0002 SETMBR R0 K2 R1 + 0x90020602, // 0003 SETMBR R0 K3 R2 + 0x90020803, // 0004 SETMBR R0 K4 R3 + 0x90020A04, // 0005 SETMBR R0 K5 R4 + 0x90020C04, // 0006 SETMBR R0 K6 R4 0x50140000, // 0007 LDBOOL R5 0 0 - 0x90020C05, // 0008 SETMBR R0 K6 R5 + 0x90020E05, // 0008 SETMBR R0 K7 R5 0x80000000, // 0009 RET 0 }) ) @@ -106,23 +114,20 @@ be_local_closure(class_Matter_EventGenerator_reset, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(event_no), - /* K1 */ be_nested_str_weak(finished), - }), + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90020C01, // 0001 SETMBR R0 K6 R1 0x50080200, // 0002 LDBOOL R2 1 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x90020E02, // 0003 SETMBR R0 K7 R2 0x80000000, // 0004 RET 0 }) ) @@ -137,19 +142,17 @@ be_local_closure(class_Matter_EventGenerator_is_finished, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(finished), - }), + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(is_finished), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040107, // 0000 GETMBR R1 R0 K7 0x80040200, // 0001 RET 1 R1 }) ) @@ -164,43 +167,36 @@ be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(path_in_endpoint), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(path_in_cluster), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(path_in_event), - /* K5 */ be_nested_str_weak(event_id), - }), + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(event_is_match), &be_const_str_solidified, ( &(const binstruction[38]) { /* code */ 0x50080200, // 0000 LDBOOL R2 1 0 - 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x880C0102, // 0001 GETMBR R3 R0 K2 0x4C100000, // 0002 LDNIL R4 0x200C0604, // 0003 NE R3 R3 R4 0x780E0007, // 0004 JMPF R3 #000D 0x780A0003, // 0005 JMPF R2 #000A - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x88100301, // 0007 GETMBR R4 R1 K1 + 0x880C0102, // 0006 GETMBR R3 R0 K2 + 0x88100308, // 0007 GETMBR R4 R1 K8 0x1C0C0604, // 0008 EQ R3 R3 R4 0x740E0000, // 0009 JMPT R3 #000B 0x500C0001, // 000A LDBOOL R3 0 1 0x500C0200, // 000B LDBOOL R3 1 0 0x5C080600, // 000C MOVE R2 R3 - 0x880C0102, // 000D GETMBR R3 R0 K2 + 0x880C0103, // 000D GETMBR R3 R0 K3 0x4C100000, // 000E LDNIL R4 0x200C0604, // 000F NE R3 R3 R4 0x780E0007, // 0010 JMPF R3 #0019 0x780A0003, // 0011 JMPF R2 #0016 - 0x880C0102, // 0012 GETMBR R3 R0 K2 - 0x88100303, // 0013 GETMBR R4 R1 K3 + 0x880C0103, // 0012 GETMBR R3 R0 K3 + 0x88100309, // 0013 GETMBR R4 R1 K9 0x1C0C0604, // 0014 EQ R3 R3 R4 0x740E0000, // 0015 JMPT R3 #0017 0x500C0001, // 0016 LDBOOL R3 0 1 @@ -212,7 +208,7 @@ be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */ 0x780E0007, // 001C JMPF R3 #0025 0x780A0003, // 001D JMPF R2 #0022 0x880C0104, // 001E GETMBR R3 R0 K4 - 0x88100305, // 001F GETMBR R4 R1 K5 + 0x8810030A, // 001F GETMBR R4 R1 K10 0x1C0C0604, // 0020 EQ R3 R3 R4 0x740E0000, // 0021 JMPT R3 #0023 0x500C0001, // 0022 LDBOOL R3 0 1 @@ -232,45 +228,37 @@ be_local_closure(class_Matter_EventGenerator_next_event, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(finished), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(events), - /* K3 */ be_nested_str_weak(find_min_no), - /* K4 */ be_nested_str_weak(event_no), - /* K5 */ be_nested_str_weak(reset), - /* K6 */ be_nested_str_weak(event_is_match), - }), + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(next_event), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040107, // 0000 GETMBR R1 R0 K7 0x78060001, // 0001 JMPF R1 #0004 0x4C040000, // 0002 LDNIL R1 0x80040200, // 0003 RET 1 R1 0x50040200, // 0004 LDBOOL R1 1 0 0x78060013, // 0005 JMPF R1 #001A - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88040302, // 0007 GETMBR R1 R1 K2 - 0x8C040303, // 0008 GETMET R1 R1 K3 - 0x880C0104, // 0009 GETMBR R3 R0 K4 + 0x88040100, // 0006 GETMBR R1 R0 K0 + 0x8804030B, // 0007 GETMBR R1 R1 K11 + 0x8C04030C, // 0008 GETMET R1 R1 K12 + 0x880C0106, // 0009 GETMBR R3 R0 K6 0x7C040400, // 000A CALL R1 2 0x4C080000, // 000B LDNIL R2 0x1C080202, // 000C EQ R2 R1 R2 0x780A0003, // 000D JMPF R2 #0012 - 0x8C080105, // 000E GETMET R2 R0 K5 + 0x8C080101, // 000E GETMET R2 R0 K1 0x7C080200, // 000F CALL R2 1 0x4C080000, // 0010 LDNIL R2 0x80040400, // 0011 RET 1 R2 - 0x88080304, // 0012 GETMBR R2 R1 K4 - 0x90020802, // 0013 SETMBR R0 K4 R2 - 0x8C080106, // 0014 GETMET R2 R0 K6 + 0x88080306, // 0012 GETMBR R2 R1 K6 + 0x90020C02, // 0013 SETMBR R0 K6 R2 + 0x8C08010D, // 0014 GETMET R2 R0 K13 0x5C100200, // 0015 MOVE R4 R1 0x7C080400, // 0016 CALL R2 2 0x780A0000, // 0017 JMPF R2 #0019 @@ -290,22 +278,19 @@ be_local_closure(class_Matter_EventGenerator_restart_from, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(finished), - /* K1 */ be_nested_str_weak(event_no), - }), + &be_ktab_class_Matter_EventGenerator, /* shared constants */ be_str_weak(restart_from), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x50080000, // 0000 LDBOOL R2 0 0 - 0x90020002, // 0001 SETMBR R0 K0 R2 - 0x90020201, // 0002 SETMBR R0 K1 R1 + 0x90020E02, // 0001 SETMBR R0 K7 R2 + 0x90020C01, // 0002 SETMBR R0 K6 R1 0x80000000, // 0003 RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h index 5b7cb5181..41ca290fc 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h @@ -3,6 +3,45 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_PathGenerator' ktab size: 35, total: 78 (saved 344 bytes) +static const bvalue be_ktab_class_Matter_PathGenerator[35] = { + /* K0 */ be_nested_str_weak(path_concrete), + /* K1 */ be_nested_str_weak(reset), + /* K2 */ be_nested_str_weak(pi), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(clusters), + /* K6 */ be_nested_str_weak(device), + /* K7 */ be_nested_str_weak(path_in_endpoint), + /* K8 */ be_nested_str_weak(path_in_cluster), + /* K9 */ be_nested_str_weak(path_in_attribute), + /* K10 */ be_nested_str_weak(is_direct), + /* K11 */ be_nested_str_weak(_next_endpoint), + /* K12 */ be_nested_str_weak(endpoint_found), + /* K13 */ be_nested_str_weak(_next_cluster), + /* K14 */ be_nested_str_weak(cluster_found), + /* K15 */ be_nested_str_weak(_next_attribute), + /* K16 */ be_nested_str_weak(attribute_found), + /* K17 */ be_nested_str_weak(endpoint), + /* K18 */ be_nested_str_weak(get_endpoint), + /* K19 */ be_nested_str_weak(fabric_filtered), + /* K20 */ be_nested_str_weak(path_in_fabric_filtered), + /* K21 */ be_nested_str_weak(status), + /* K22 */ be_nested_str_weak(_default_status_error), + /* K23 */ be_nested_str_weak(find), + /* K24 */ be_const_int(1), + /* K25 */ be_nested_str_weak(matter), + /* K26 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K27 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K28 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K29 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + /* K30 */ be_nested_str_weak(get_attribute_list), + /* K31 */ be_const_int(1), + /* K32 */ be_nested_str_weak(plugins), + /* K33 */ be_nested_str_weak(get_cluster_list_sorted), + /* K34 */ be_nested_str_weak(Path), +}; + extern const bclass be_class_Matter_PathGenerator; @@ -13,20 +52,13 @@ be_local_closure(class_Matter_PathGenerator_reset, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(path_concrete), - /* K1 */ be_nested_str_weak(reset), - /* K2 */ be_nested_str_weak(pi), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_nested_str_weak(clusters), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -53,19 +85,17 @@ be_local_closure(class_Matter_PathGenerator_init, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020C01, // 0000 SETMBR R0 K6 R1 0x80000000, // 0001 RET 0 }) ) @@ -80,29 +110,25 @@ be_local_closure(class_Matter_PathGenerator_is_direct, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(path_in_endpoint), - /* K1 */ be_nested_str_weak(path_in_cluster), - /* K2 */ be_nested_str_weak(path_in_attribute), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(is_direct), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040107, // 0000 GETMBR R1 R0 K7 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C - 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x88040108, // 0004 GETMBR R1 R0 K8 0x4C080000, // 0005 LDNIL R2 0x20040202, // 0006 NE R1 R1 R2 0x78060003, // 0007 JMPF R1 #000C - 0x88040102, // 0008 GETMBR R1 R0 K2 + 0x88040109, // 0008 GETMBR R1 R0 K9 0x4C080000, // 0009 LDNIL R2 0x20040202, // 000A NE R1 R1 R2 0x74060000, // 000B JMPT R1 #000D @@ -122,19 +148,17 @@ be_local_closure(class_Matter_PathGenerator_is_finished, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(is_finished), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040102, // 0000 GETMBR R1 R0 K2 0x50080000, // 0001 LDBOOL R2 0 0 0x20040202, // 0002 NE R1 R1 R2 0x80040200, // 0003 RET 1 R1 @@ -151,58 +175,36 @@ be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), - /* K1 */ be_nested_str_weak(is_direct), - /* K2 */ be_nested_str_weak(reset), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(_next_endpoint), - /* K5 */ be_nested_str_weak(endpoint_found), - /* K6 */ be_nested_str_weak(attribute), - /* K7 */ be_nested_str_weak(_next_cluster), - /* K8 */ be_nested_str_weak(cluster_found), - /* K9 */ be_nested_str_weak(_next_attribute), - /* K10 */ be_nested_str_weak(attribute_found), - /* K11 */ be_nested_str_weak(path_concrete), - /* K12 */ be_nested_str_weak(endpoint), - /* K13 */ be_nested_str_weak(get_endpoint), - /* K14 */ be_nested_str_weak(fabric_filtered), - /* K15 */ be_nested_str_weak(path_in_fabric_filtered), - /* K16 */ be_nested_str_weak(status), - /* K17 */ be_nested_str_weak(path_in_endpoint), - /* K18 */ be_nested_str_weak(path_in_cluster), - /* K19 */ be_nested_str_weak(path_in_attribute), - /* K20 */ be_nested_str_weak(_default_status_error), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(next_attribute), &be_const_str_solidified, ( &(const binstruction[95]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040102, // 0000 GETMBR R1 R0 K2 0x50080200, // 0001 LDBOOL R2 1 0 0x1C040202, // 0002 EQ R1 R1 R2 0x74060006, // 0003 JMPT R1 #000B - 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x88040102, // 0004 GETMBR R1 R0 K2 0x4C080000, // 0005 LDNIL R2 0x20040202, // 0006 NE R1 R1 R2 0x78060006, // 0007 JMPF R1 #000F - 0x8C040101, // 0008 GETMET R1 R0 K1 + 0x8C04010A, // 0008 GETMET R1 R0 K10 0x7C040200, // 0009 CALL R1 1 0x78060003, // 000A JMPF R1 #000F - 0x8C040102, // 000B GETMET R1 R0 K2 + 0x8C040101, // 000B GETMET R1 R0 K1 0x7C040200, // 000C CALL R1 1 0x4C040000, // 000D LDNIL R1 0x80040200, // 000E RET 1 R1 - 0x88040100, // 000F GETMBR R1 R0 K0 + 0x88040102, // 000F GETMBR R1 R0 K2 0x50080000, // 0010 LDBOOL R2 0 0 0x20040202, // 0011 NE R1 R1 R2 0x78060033, // 0012 JMPF R1 #0047 - 0x88040100, // 0013 GETMBR R1 R0 K0 + 0x88040102, // 0013 GETMBR R1 R0 K2 0x4C080000, // 0014 LDNIL R2 0x1C040202, // 0015 EQ R1 R1 R2 0x74060003, // 0016 JMPT R1 #001B @@ -210,71 +212,71 @@ be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */ 0x50080000, // 0018 LDBOOL R2 0 0 0x1C040202, // 0019 EQ R1 R1 R2 0x78060002, // 001A JMPF R1 #001E - 0x8C040104, // 001B GETMET R1 R0 K4 + 0x8C04010B, // 001B GETMET R1 R0 K11 0x7C040200, // 001C CALL R1 1 0x7001FFF0, // 001D JMP #000F 0x50040200, // 001E LDBOOL R1 1 0 - 0x90020A01, // 001F SETMBR R0 K5 R1 + 0x90021801, // 001F SETMBR R0 K12 R1 0x88040103, // 0020 GETMBR R1 R0 K3 0x4C080000, // 0021 LDNIL R2 0x1C040202, // 0022 EQ R1 R1 R2 0x74060003, // 0023 JMPT R1 #0028 - 0x88040106, // 0024 GETMBR R1 R0 K6 + 0x88040104, // 0024 GETMBR R1 R0 K4 0x50080000, // 0025 LDBOOL R2 0 0 0x1C040202, // 0026 EQ R1 R1 R2 0x78060002, // 0027 JMPF R1 #002B - 0x8C040107, // 0028 GETMET R1 R0 K7 + 0x8C04010D, // 0028 GETMET R1 R0 K13 0x7C040200, // 0029 CALL R1 1 0x7001FFE3, // 002A JMP #000F 0x50040200, // 002B LDBOOL R1 1 0 - 0x90021001, // 002C SETMBR R0 K8 R1 - 0x8C040109, // 002D GETMET R1 R0 K9 + 0x90021C01, // 002C SETMBR R0 K14 R1 + 0x8C04010F, // 002D GETMET R1 R0 K15 0x7C040200, // 002E CALL R1 1 - 0x88040106, // 002F GETMBR R1 R0 K6 + 0x88040104, // 002F GETMBR R1 R0 K4 0x50080000, // 0030 LDBOOL R2 0 0 0x1C040202, // 0031 EQ R1 R1 R2 0x78060000, // 0032 JMPF R1 #0034 0x7001FFDA, // 0033 JMP #000F 0x50040200, // 0034 LDBOOL R1 1 0 - 0x90021401, // 0035 SETMBR R0 K10 R1 - 0x8804010B, // 0036 GETMBR R1 R0 K11 - 0x8C080302, // 0037 GETMET R2 R1 K2 + 0x90022001, // 0035 SETMBR R0 K16 R1 + 0x88040100, // 0036 GETMBR R1 R0 K0 + 0x8C080301, // 0037 GETMET R2 R1 K1 0x7C080200, // 0038 CALL R2 1 - 0x88080100, // 0039 GETMBR R2 R0 K0 - 0x8C08050D, // 003A GETMET R2 R2 K13 + 0x88080102, // 0039 GETMBR R2 R0 K2 + 0x8C080512, // 003A GETMET R2 R2 K18 0x7C080200, // 003B CALL R2 1 - 0x90061802, // 003C SETMBR R1 K12 R2 + 0x90062202, // 003C SETMBR R1 K17 R2 0x88080103, // 003D GETMBR R2 R0 K3 0x90060602, // 003E SETMBR R1 K3 R2 - 0x88080106, // 003F GETMBR R2 R0 K6 - 0x90060C02, // 0040 SETMBR R1 K6 R2 - 0x8808010F, // 0041 GETMBR R2 R0 K15 - 0x90061C02, // 0042 SETMBR R1 K14 R2 + 0x88080104, // 003F GETMBR R2 R0 K4 + 0x90060802, // 0040 SETMBR R1 K4 R2 + 0x88080114, // 0041 GETMBR R2 R0 K20 + 0x90062602, // 0042 SETMBR R1 K19 R2 0x4C080000, // 0043 LDNIL R2 - 0x90062002, // 0044 SETMBR R1 K16 R2 + 0x90062A02, // 0044 SETMBR R1 K21 R2 0x80040200, // 0045 RET 1 R1 0x7001FFC7, // 0046 JMP #000F - 0x8C040101, // 0047 GETMET R1 R0 K1 + 0x8C04010A, // 0047 GETMET R1 R0 K10 0x7C040200, // 0048 CALL R1 1 0x78060010, // 0049 JMPF R1 #005B - 0x8804010B, // 004A GETMBR R1 R0 K11 - 0x8C080302, // 004B GETMET R2 R1 K2 + 0x88040100, // 004A GETMBR R1 R0 K0 + 0x8C080301, // 004B GETMET R2 R1 K1 0x7C080200, // 004C CALL R2 1 - 0x88080111, // 004D GETMBR R2 R0 K17 - 0x90061802, // 004E SETMBR R1 K12 R2 - 0x88080112, // 004F GETMBR R2 R0 K18 + 0x88080107, // 004D GETMBR R2 R0 K7 + 0x90062202, // 004E SETMBR R1 K17 R2 + 0x88080108, // 004F GETMBR R2 R0 K8 0x90060602, // 0050 SETMBR R1 K3 R2 - 0x88080113, // 0051 GETMBR R2 R0 K19 - 0x90060C02, // 0052 SETMBR R1 K6 R2 - 0x8808010F, // 0053 GETMBR R2 R0 K15 - 0x90061C02, // 0054 SETMBR R1 K14 R2 - 0x8C080114, // 0055 GETMET R2 R0 K20 + 0x88080109, // 0051 GETMBR R2 R0 K9 + 0x90060802, // 0052 SETMBR R1 K4 R2 + 0x88080114, // 0053 GETMBR R2 R0 K20 + 0x90062602, // 0054 SETMBR R1 K19 R2 + 0x8C080116, // 0055 GETMET R2 R0 K22 0x7C080200, // 0056 CALL R2 1 - 0x90062002, // 0057 SETMBR R1 K16 R2 + 0x90062A02, // 0057 SETMBR R1 K21 R2 0x50080200, // 0058 LDBOOL R2 1 0 - 0x90020002, // 0059 SETMBR R0 K0 R2 + 0x90020402, // 0059 SETMBR R0 K2 R2 0x80040200, // 005A RET 1 R1 - 0x8C040102, // 005B GETMET R1 R0 K2 + 0x8C040101, // 005B GETMET R1 R0 K1 0x7C040200, // 005C CALL R1 1 0x4C040000, // 005D LDNIL R1 0x80040200, // 005E RET 1 R1 @@ -291,65 +293,58 @@ be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(cluster), - /* K1 */ be_nested_str_weak(clusters), - /* K2 */ be_nested_str_weak(path_in_cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(_next_cluster), &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 0x50080000, // 0001 LDBOOL R2 0 0 0x1C040202, // 0002 EQ R1 R1 R2 0x78060001, // 0003 JMPF R1 #0006 0x50040000, // 0004 LDBOOL R1 0 0 0x80040200, // 0005 RET 1 R1 - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88080102, // 0007 GETMBR R2 R0 K2 + 0x88040105, // 0006 GETMBR R1 R0 K5 + 0x88080108, // 0007 GETMBR R2 R0 K8 0x4C0C0000, // 0008 LDNIL R3 - 0x90020603, // 0009 SETMBR R0 K3 R3 + 0x90020803, // 0009 SETMBR R0 K4 R3 0x540DFFFE, // 000A LDINT R3 -1 - 0x88100100, // 000B GETMBR R4 R0 K0 + 0x88100103, // 000B GETMBR R4 R0 K3 0x4C140000, // 000C LDNIL R5 0x20100805, // 000D NE R4 R4 R5 0x78120003, // 000E JMPF R4 #0013 - 0x8C100304, // 000F GETMET R4 R1 K4 - 0x88180100, // 0010 GETMBR R6 R0 K0 + 0x8C100317, // 000F GETMET R4 R1 K23 + 0x88180103, // 0010 GETMBR R6 R0 K3 0x7C100400, // 0011 CALL R4 2 0x5C0C0800, // 0012 MOVE R3 R4 0x4C100000, // 0013 LDNIL R4 0x20100604, // 0014 NE R4 R3 R4 0x78120011, // 0015 JMPF R4 #0028 - 0x00100705, // 0016 ADD R4 R3 K5 + 0x00100718, // 0016 ADD R4 R3 K24 0x6014000C, // 0017 GETGBL R5 G12 0x5C180200, // 0018 MOVE R6 R1 0x7C140200, // 0019 CALL R5 1 0x14100805, // 001A LT R4 R4 R5 0x7812000B, // 001B JMPF R4 #0028 - 0x000C0705, // 001C ADD R3 R3 K5 + 0x000C0718, // 001C ADD R3 R3 K24 0x94100203, // 001D GETIDX R4 R1 R3 - 0x90020004, // 001E SETMBR R0 K0 R4 + 0x90020604, // 001E SETMBR R0 K3 R4 0x4C100000, // 001F LDNIL R4 0x1C100404, // 0020 EQ R4 R2 R4 0x74120002, // 0021 JMPT R4 #0025 - 0x88100100, // 0022 GETMBR R4 R0 K0 + 0x88100103, // 0022 GETMBR R4 R0 K3 0x1C100404, // 0023 EQ R4 R2 R4 0x78120001, // 0024 JMPF R4 #0027 - 0x88100100, // 0025 GETMBR R4 R0 K0 + 0x88100103, // 0025 GETMBR R4 R0 K3 0x80040800, // 0026 RET 1 R4 0x7001FFED, // 0027 JMP #0016 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90020004, // 0029 SETMBR R0 K0 R4 + 0x90020604, // 0029 SETMBR R0 K3 R4 0x50100000, // 002A LDBOOL R4 0 0 0x80040800, // 002B RET 1 R4 }) @@ -365,46 +360,36 @@ be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(is_direct), - /* K1 */ be_nested_str_weak(endpoint_found), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), - /* K4 */ be_nested_str_weak(cluster_found), - /* K5 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), - /* K6 */ be_nested_str_weak(attribute_found), - /* K7 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K8 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(_default_status_error), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010A, // 0000 GETMET R1 R0 K10 0x7C040200, // 0001 CALL R1 1 0x78060011, // 0002 JMPF R1 #0015 - 0x88040101, // 0003 GETMBR R1 R0 K1 + 0x8804010C, // 0003 GETMBR R1 R0 K12 0x74060002, // 0004 JMPT R1 #0008 - 0xB8060400, // 0005 GETNGBL R1 K2 - 0x88040303, // 0006 GETMBR R1 R1 K3 + 0xB8063200, // 0005 GETNGBL R1 K25 + 0x8804031A, // 0006 GETMBR R1 R1 K26 0x80040200, // 0007 RET 1 R1 - 0x88040104, // 0008 GETMBR R1 R0 K4 + 0x8804010E, // 0008 GETMBR R1 R0 K14 0x74060002, // 0009 JMPT R1 #000D - 0xB8060400, // 000A GETNGBL R1 K2 - 0x88040305, // 000B GETMBR R1 R1 K5 + 0xB8063200, // 000A GETNGBL R1 K25 + 0x8804031B, // 000B GETMBR R1 R1 K27 0x80040200, // 000C RET 1 R1 - 0x88040106, // 000D GETMBR R1 R0 K6 + 0x88040110, // 000D GETMBR R1 R0 K16 0x74060002, // 000E JMPT R1 #0012 - 0xB8060400, // 000F GETNGBL R1 K2 - 0x88040307, // 0010 GETMBR R1 R1 K7 + 0xB8063200, // 000F GETNGBL R1 K25 + 0x8804031C, // 0010 GETMBR R1 R1 K28 0x80040200, // 0011 RET 1 R1 - 0xB8060400, // 0012 GETNGBL R1 K2 - 0x88040308, // 0013 GETMBR R1 R1 K8 + 0xB8063200, // 0012 GETNGBL R1 K25 + 0x8804031D, // 0013 GETMBR R1 R1 K29 0x80040200, // 0014 RET 1 R1 0x4C040000, // 0015 LDNIL R1 0x80040200, // 0016 RET 1 R1 @@ -421,67 +406,59 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute), - /* K1 */ be_nested_str_weak(pi), - /* K2 */ be_nested_str_weak(get_attribute_list), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(path_in_attribute), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(_next_attribute), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040104, // 0000 GETMBR R1 R0 K4 0x50080000, // 0001 LDBOOL R2 0 0 0x1C040202, // 0002 EQ R1 R1 R2 0x78060001, // 0003 JMPF R1 #0006 0x50040000, // 0004 LDBOOL R1 0 0 0x80040200, // 0005 RET 1 R1 - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x8C040302, // 0007 GETMET R1 R1 K2 + 0x88040102, // 0006 GETMBR R1 R0 K2 + 0x8C04031E, // 0007 GETMET R1 R1 K30 0x880C0103, // 0008 GETMBR R3 R0 K3 0x7C040400, // 0009 CALL R1 2 - 0x88080104, // 000A GETMBR R2 R0 K4 + 0x88080109, // 000A GETMBR R2 R0 K9 0x540DFFFE, // 000B LDINT R3 -1 - 0x88100100, // 000C GETMBR R4 R0 K0 + 0x88100104, // 000C GETMBR R4 R0 K4 0x4C140000, // 000D LDNIL R5 0x20100805, // 000E NE R4 R4 R5 0x78120003, // 000F JMPF R4 #0014 - 0x8C100305, // 0010 GETMET R4 R1 K5 - 0x88180100, // 0011 GETMBR R6 R0 K0 + 0x8C100317, // 0010 GETMET R4 R1 K23 + 0x88180104, // 0011 GETMBR R6 R0 K4 0x7C100400, // 0012 CALL R4 2 0x5C0C0800, // 0013 MOVE R3 R4 0x4C100000, // 0014 LDNIL R4 0x20100604, // 0015 NE R4 R3 R4 0x78120011, // 0016 JMPF R4 #0029 - 0x00100706, // 0017 ADD R4 R3 K6 + 0x0010071F, // 0017 ADD R4 R3 K31 0x6014000C, // 0018 GETGBL R5 G12 0x5C180200, // 0019 MOVE R6 R1 0x7C140200, // 001A CALL R5 1 0x14100805, // 001B LT R4 R4 R5 0x7812000B, // 001C JMPF R4 #0029 - 0x000C0706, // 001D ADD R3 R3 K6 + 0x000C071F, // 001D ADD R3 R3 K31 0x94100203, // 001E GETIDX R4 R1 R3 - 0x90020004, // 001F SETMBR R0 K0 R4 + 0x90020804, // 001F SETMBR R0 K4 R4 0x4C100000, // 0020 LDNIL R4 0x1C100404, // 0021 EQ R4 R2 R4 0x74120002, // 0022 JMPT R4 #0026 - 0x88100100, // 0023 GETMBR R4 R0 K0 + 0x88100104, // 0023 GETMBR R4 R0 K4 0x1C100404, // 0024 EQ R4 R2 R4 0x78120001, // 0025 JMPF R4 #0028 - 0x88100100, // 0026 GETMBR R4 R0 K0 + 0x88100104, // 0026 GETMBR R4 R0 K4 0x80040800, // 0027 RET 1 R4 0x7001FFED, // 0028 JMP #0017 0x50100000, // 0029 LDBOOL R4 0 0 - 0x90020004, // 002A SETMBR R0 K0 R4 + 0x90020804, // 002A SETMBR R0 K4 R4 0x50100000, // 002B LDBOOL R4 0 0 0x80040800, // 002C RET 1 R4 }) @@ -497,79 +474,67 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(plugins), - /* K3 */ be_nested_str_weak(path_in_endpoint), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(attribute), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(get_endpoint), - /* K9 */ be_nested_str_weak(clusters), - /* K10 */ be_nested_str_weak(get_cluster_list_sorted), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(_next_endpoint), &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040102, // 0000 GETMBR R1 R0 K2 0x50080000, // 0001 LDBOOL R2 0 0 0x1C040202, // 0002 EQ R1 R1 R2 0x78060001, // 0003 JMPF R1 #0006 0x50040000, // 0004 LDBOOL R1 0 0 0x80040200, // 0005 RET 1 R1 - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88040302, // 0007 GETMBR R1 R1 K2 - 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x88040106, // 0006 GETMBR R1 R0 K6 + 0x88040320, // 0007 GETMBR R1 R1 K32 + 0x88080107, // 0008 GETMBR R2 R0 K7 0x4C0C0000, // 0009 LDNIL R3 - 0x90020803, // 000A SETMBR R0 K4 R3 + 0x90020603, // 000A SETMBR R0 K3 R3 0x4C0C0000, // 000B LDNIL R3 - 0x90020A03, // 000C SETMBR R0 K5 R3 + 0x90020803, // 000C SETMBR R0 K4 R3 0x540DFFFE, // 000D LDINT R3 -1 - 0x88100100, // 000E GETMBR R4 R0 K0 + 0x88100102, // 000E GETMBR R4 R0 K2 0x4C140000, // 000F LDNIL R5 0x20100805, // 0010 NE R4 R4 R5 0x78120003, // 0011 JMPF R4 #0016 - 0x8C100306, // 0012 GETMET R4 R1 K6 - 0x88180100, // 0013 GETMBR R6 R0 K0 + 0x8C100317, // 0012 GETMET R4 R1 K23 + 0x88180102, // 0013 GETMBR R6 R0 K2 0x7C100400, // 0014 CALL R4 2 0x5C0C0800, // 0015 MOVE R3 R4 0x4C100000, // 0016 LDNIL R4 0x20100604, // 0017 NE R4 R3 R4 0x78120017, // 0018 JMPF R4 #0031 - 0x00100707, // 0019 ADD R4 R3 K7 + 0x0010071F, // 0019 ADD R4 R3 K31 0x6014000C, // 001A GETGBL R5 G12 0x5C180200, // 001B MOVE R6 R1 0x7C140200, // 001C CALL R5 1 0x14100805, // 001D LT R4 R4 R5 0x78120011, // 001E JMPF R4 #0031 - 0x000C0707, // 001F ADD R3 R3 K7 + 0x000C071F, // 001F ADD R3 R3 K31 0x94100203, // 0020 GETIDX R4 R1 R3 - 0x90020004, // 0021 SETMBR R0 K0 R4 + 0x90020404, // 0021 SETMBR R0 K2 R4 0x4C100000, // 0022 LDNIL R4 0x1C100404, // 0023 EQ R4 R2 R4 0x74120004, // 0024 JMPT R4 #002A - 0x88100100, // 0025 GETMBR R4 R0 K0 - 0x8C100908, // 0026 GETMET R4 R4 K8 + 0x88100102, // 0025 GETMBR R4 R0 K2 + 0x8C100912, // 0026 GETMET R4 R4 K18 0x7C100200, // 0027 CALL R4 1 0x1C100404, // 0028 EQ R4 R2 R4 0x78120005, // 0029 JMPF R4 #0030 - 0x88100100, // 002A GETMBR R4 R0 K0 - 0x8C10090A, // 002B GETMET R4 R4 K10 + 0x88100102, // 002A GETMBR R4 R0 K2 + 0x8C100921, // 002B GETMET R4 R4 K33 0x7C100200, // 002C CALL R4 1 - 0x90021204, // 002D SETMBR R0 K9 R4 - 0x88100100, // 002E GETMBR R4 R0 K0 + 0x90020A04, // 002D SETMBR R0 K5 R4 + 0x88100102, // 002E GETMBR R4 R0 K2 0x80040800, // 002F RET 1 R4 0x7001FFE7, // 0030 JMP #0019 0x50100000, // 0031 LDBOOL R4 0 0 - 0x90020004, // 0032 SETMBR R0 K0 R4 + 0x90020404, // 0032 SETMBR R0 K2 R4 0x50100000, // 0033 LDBOOL R4 0 0 0x80040800, // 0034 RET 1 R4 }) @@ -585,29 +550,27 @@ be_local_closure(class_Matter_PathGenerator_get_pi, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(pi), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(get_pi), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040102, // 0000 GETMBR R1 R0 K2 0x50080000, // 0001 LDBOOL R2 0 0 0x1C040202, // 0002 EQ R1 R1 R2 0x74060003, // 0003 JMPT R1 #0008 - 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x88040102, // 0004 GETMBR R1 R0 K2 0x50080200, // 0005 LDBOOL R2 1 0 0x1C040202, // 0006 EQ R1 R1 R2 0x78060001, // 0007 JMPF R1 #000A 0x4C040000, // 0008 LDNIL R1 0x70020000, // 0009 JMP #000B - 0x88040100, // 000A GETMBR R1 R0 K0 + 0x88040102, // 000A GETMBR R1 R0 K2 0x80040200, // 000B RET 1 R1 }) ) @@ -622,50 +585,37 @@ be_local_closure(class_Matter_PathGenerator_start, /* name */ be_nested_proto( 7, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(path_concrete), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Path), - /* K3 */ be_nested_str_weak(reset), - /* K4 */ be_nested_str_weak(path_in_endpoint), - /* K5 */ be_nested_str_weak(path_in_cluster), - /* K6 */ be_nested_str_weak(path_in_attribute), - /* K7 */ be_nested_str_weak(path_in_fabric_filtered), - /* K8 */ be_nested_str_weak(pi), - /* K9 */ be_nested_str_weak(endpoint_found), - /* K10 */ be_nested_str_weak(cluster_found), - /* K11 */ be_nested_str_weak(attribute_found), - }), + &be_ktab_class_Matter_PathGenerator, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xB8160200, // 0000 GETNGBL R5 K1 - 0x8C140B02, // 0001 GETMET R5 R5 K2 + 0xB8163200, // 0000 GETNGBL R5 K25 + 0x8C140B22, // 0001 GETMET R5 R5 K34 0x7C140200, // 0002 CALL R5 1 0x90020005, // 0003 SETMBR R0 K0 R5 - 0x8C140103, // 0004 GETMET R5 R0 K3 + 0x8C140101, // 0004 GETMET R5 R0 K1 0x7C140200, // 0005 CALL R5 1 - 0x90020801, // 0006 SETMBR R0 K4 R1 - 0x90020A02, // 0007 SETMBR R0 K5 R2 - 0x90020C03, // 0008 SETMBR R0 K6 R3 + 0x90020E01, // 0006 SETMBR R0 K7 R1 + 0x90021002, // 0007 SETMBR R0 K8 R2 + 0x90021203, // 0008 SETMBR R0 K9 R3 0x60140017, // 0009 GETGBL R5 G23 0x5C180800, // 000A MOVE R6 R4 0x7C140200, // 000B CALL R5 1 - 0x90020E05, // 000C SETMBR R0 K7 R5 + 0x90022805, // 000C SETMBR R0 K20 R5 0x4C140000, // 000D LDNIL R5 - 0x90021005, // 000E SETMBR R0 K8 R5 + 0x90020405, // 000E SETMBR R0 K2 R5 0x50140000, // 000F LDBOOL R5 0 0 - 0x90021205, // 0010 SETMBR R0 K9 R5 + 0x90021805, // 0010 SETMBR R0 K12 R5 0x50140000, // 0011 LDBOOL R5 0 0 - 0x90021405, // 0012 SETMBR R0 K10 R5 + 0x90021C05, // 0012 SETMBR R0 K14 R5 0x50140000, // 0013 LDBOOL R5 0 0 - 0x90021605, // 0014 SETMBR R0 K11 R5 + 0x90022005, // 0014 SETMBR R0 K16 R5 0x80000000, // 0015 RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index ad8ef2da2..1e617d6a0 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -3,6 +3,75 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Matter_Plugin; +// compact class 'Matter_Plugin' ktab size: 64, total: 103 (saved 312 bytes) +static const bvalue be_ktab_class_Matter_Plugin[64] = { + /* K0 */ be_nested_str_weak(tick), + /* K1 */ be_nested_str_weak(device), + /* K2 */ be_nested_str_weak(json), + /* K3 */ be_nested_str_weak(node_label), + /* K4 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s), + /* K5 */ be_nested_str_weak(dump), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(append_state_json), + /* K8 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D), + /* K9 */ be_nested_str_weak(endpoint), + /* K10 */ be_nested_str_weak(msg), + /* K11 */ be_nested_str_weak(message_handler), + /* K12 */ be_nested_str_weak(im), + /* K13 */ be_nested_str_weak(send_ack_now), + /* K14 */ be_nested_str_weak(update_next), + /* K15 */ be_nested_str_weak(matter), + /* K16 */ be_nested_str_weak(jitter), + /* K17 */ be_nested_str_weak(UPDATE_TIME), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(time_reached), + /* K20 */ be_nested_str_weak(update_shadow), + /* K21 */ be_nested_str_weak(millis), + /* K22 */ be_nested_str_weak(events), + /* K23 */ be_nested_str_weak(publish_event), + /* K24 */ be_nested_str_weak(attribute_updated), + /* K25 */ be_const_class(be_class_Matter_Plugin), + /* K26 */ be_nested_str_weak(ARG), + /* K27 */ be_nested_str_weak(ARG_TYPE), + /* K28 */ be_nested_str_weak(clusters), + /* K29 */ be_nested_str_weak(get_clusters), + /* K30 */ be_nested_str_weak(parse_configuration), + /* K31 */ be_nested_str_weak(find), + /* K32 */ be_nested_str_weak(name), + /* K33 */ be_nested_str_weak(BRIDGE), + /* K34 */ be_nested_str_weak(UPDATE_COMMANDS), + /* K35 */ be_nested_str_weak(k2l), + /* K36 */ be_const_int(0), + /* K37 */ be_const_int(1), + /* K38 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K39 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s), + /* K40 */ be_nested_str_weak(publish_command), + /* K41 */ be_nested_str_weak(MtrReceived), + /* K42 */ be_nested_str_weak(CLUSTERS), + /* K43 */ be_nested_str_weak(contains), + /* K44 */ be_nested_str_weak(TLV), + /* K45 */ be_nested_str_weak(cluster), + /* K46 */ be_nested_str_weak(attribute), + /* K47 */ be_const_int(0), + /* K48 */ be_nested_str_weak(Matter_TLV_array), + /* K49 */ be_nested_str_weak(TYPES), + /* K50 */ be_nested_str_weak(keys), + /* K51 */ be_nested_str_weak(add_struct), + /* K52 */ be_nested_str_weak(add_TLV), + /* K53 */ be_nested_str_weak(U2), + /* K54 */ be_const_int(1), + /* K55 */ be_nested_str_weak(stop_iteration), + /* K56 */ be_nested_str_weak(get_cluster_list_sorted), + /* K57 */ be_nested_str_weak(U4), + /* K58 */ be_const_int(2), + /* K59 */ be_const_int(3), + /* K60 */ be_nested_str_weak(set), + /* K61 */ be_nested_str_weak(get_attribute_list), + /* K62 */ be_nested_str_weak(FEATURE_MAPS), + /* K63 */ be_nested_str_weak(CLUSTER_REVISIONS), +}; + extern const bclass be_class_Matter_Plugin; @@ -13,16 +82,13 @@ be_local_closure(class_Matter_Plugin_update_shadow, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -43,42 +109,33 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(node_label), - /* K2 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s), - /* K3 */ be_nested_str_weak(dump), - /* K4 */ be_nested_str_weak(), - /* K5 */ be_nested_str_weak(append_state_json), - /* K6 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D), - /* K7 */ be_nested_str_weak(endpoint), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(state_json), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0xA4060400, // 0000 IMPORT R1 K2 + 0x88080103, // 0001 GETMBR R2 R0 K3 0x780A0006, // 0002 JMPF R2 #000A 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x8C100303, // 0005 GETMET R4 R1 K3 - 0x88180101, // 0006 GETMBR R6 R0 K1 + 0x580C0004, // 0004 LDCONST R3 K4 + 0x8C100305, // 0005 GETMET R4 R1 K5 + 0x88180103, // 0006 GETMBR R6 R0 K3 0x7C100400, // 0007 CALL R4 2 0x7C080400, // 0008 CALL R2 2 0x70020000, // 0009 JMP #000B - 0x58080004, // 000A LDCONST R2 K4 - 0x8C0C0105, // 000B GETMET R3 R0 K5 + 0x58080006, // 000A LDCONST R2 K6 + 0x8C0C0107, // 000B GETMET R3 R0 K7 0x7C0C0200, // 000C CALL R3 1 0x780E0007, // 000D JMPF R3 #0016 0x60100018, // 000E GETGBL R4 G24 - 0x58140006, // 000F LDCONST R5 K6 - 0x88180107, // 0010 GETMBR R6 R0 K7 + 0x58140008, // 000F LDCONST R5 K8 + 0x88180109, // 0010 GETMBR R6 R0 K9 0x5C1C0400, // 0011 MOVE R7 R2 0x5C200600, // 0012 MOVE R8 R3 0x7C100800, // 0013 CALL R4 4 @@ -100,34 +157,28 @@ be_local_closure(class_Matter_Plugin_ack_request, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(msg), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(im), - /* K4 */ be_nested_str_weak(send_ack_now), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(ack_request), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x8808030A, // 0000 GETMBR R2 R1 K10 0x4C0C0000, // 0001 LDNIL R3 0x200C0403, // 0002 NE R3 R2 R3 0x780E0005, // 0003 JMPF R3 #000A 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x880C0702, // 0005 GETMBR R3 R3 K2 - 0x880C0703, // 0006 GETMBR R3 R3 K3 - 0x8C0C0704, // 0007 GETMET R3 R3 K4 + 0x880C070B, // 0005 GETMBR R3 R3 K11 + 0x880C070C, // 0006 GETMBR R3 R3 K12 + 0x8C0C070D, // 0007 GETMET R3 R3 K13 0x5C140400, // 0008 MOVE R5 R2 0x7C0C0400, // 0009 CALL R3 2 0x4C0C0000, // 000A LDNIL R3 - 0x90060003, // 000B SETMBR R1 K0 R3 + 0x90061403, // 000B SETMBR R1 K10 R3 0x80000000, // 000C RET 0 }) ) @@ -142,13 +193,13 @@ be_local_closure(class_Matter_Plugin_write_attribute, /* name */ be_nested_proto( 5, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(write_attribute), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -167,13 +218,13 @@ be_local_closure(class_Matter_Plugin_invoke_request, /* name */ be_nested_proto( 5, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -192,19 +243,17 @@ be_local_closure(class_Matter_Plugin_append_state_json, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(append_state_json), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ - 0x80060000, // 0000 RET 1 K0 + 0x80060C00, // 0000 RET 1 K6 }) ) ); @@ -218,54 +267,43 @@ be_local_closure(class_Matter_Plugin_every_250ms, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(update_next), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(jitter), - /* K3 */ be_nested_str_weak(UPDATE_TIME), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(time_reached), - /* K6 */ be_nested_str_weak(tick), - /* K7 */ be_nested_str_weak(device), - /* K8 */ be_nested_str_weak(update_shadow), - /* K9 */ be_nested_str_weak(millis), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(every_250ms), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010E, // 0000 GETMBR R1 R0 K14 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060005, // 0003 JMPF R1 #000A - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0xB8061E00, // 0004 GETNGBL R1 K15 + 0x8C040310, // 0005 GETMET R1 R1 K16 + 0x880C0111, // 0006 GETMBR R3 R0 K17 0x7C040400, // 0007 CALL R1 2 - 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x90021C01, // 0008 SETMBR R0 K14 R1 0x70020010, // 0009 JMP #001B - 0xB8060800, // 000A GETNGBL R1 K4 - 0x8C040305, // 000B GETMET R1 R1 K5 - 0x880C0100, // 000C GETMBR R3 R0 K0 + 0xB8062400, // 000A GETNGBL R1 K18 + 0x8C040313, // 000B GETMET R1 R1 K19 + 0x880C010E, // 000C GETMBR R3 R0 K14 0x7C040400, // 000D CALL R1 2 0x7806000B, // 000E JMPF R1 #001B - 0x88040106, // 000F GETMBR R1 R0 K6 - 0x88080107, // 0010 GETMBR R2 R0 K7 - 0x88080506, // 0011 GETMBR R2 R2 K6 + 0x88040100, // 000F GETMBR R1 R0 K0 + 0x88080101, // 0010 GETMBR R2 R0 K1 + 0x88080500, // 0011 GETMBR R2 R2 K0 0x20040202, // 0012 NE R1 R1 R2 0x78060001, // 0013 JMPF R1 #0016 - 0x8C040108, // 0014 GETMET R1 R0 K8 + 0x8C040114, // 0014 GETMET R1 R0 K20 0x7C040200, // 0015 CALL R1 1 - 0xB8060800, // 0016 GETNGBL R1 K4 - 0x8C040309, // 0017 GETMET R1 R1 K9 - 0x880C0103, // 0018 GETMBR R3 R0 K3 + 0xB8062400, // 0016 GETNGBL R1 K18 + 0x8C040315, // 0017 GETMET R1 R1 K21 + 0x880C0111, // 0018 GETMBR R3 R0 K17 0x7C040400, // 0019 CALL R1 2 - 0x90020001, // 001A SETMBR R0 K0 R1 + 0x90021C01, // 001A SETMBR R0 K14 R1 0x80000000, // 001B RET 0 }) ) @@ -280,25 +318,20 @@ be_local_closure(class_Matter_Plugin_publish_event, /* name */ be_nested_proto( 17, /* nstack */ 7, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(events), - /* K2 */ be_nested_str_weak(publish_event), - /* K3 */ be_nested_str_weak(endpoint), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(publish_event), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x881C0100, // 0000 GETMBR R7 R0 K0 - 0x881C0F01, // 0001 GETMBR R7 R7 K1 - 0x8C1C0F02, // 0002 GETMET R7 R7 K2 - 0x88240103, // 0003 GETMBR R9 R0 K3 + 0x881C0101, // 0000 GETMBR R7 R0 K1 + 0x881C0F16, // 0001 GETMBR R7 R7 K22 + 0x8C1C0F17, // 0002 GETMET R7 R7 K23 + 0x88240109, // 0003 GETMBR R9 R0 K9 0x5C280200, // 0004 MOVE R10 R1 0x5C2C0400, // 0005 MOVE R11 R2 0x50300200, // 0006 LDBOOL R12 1 0 @@ -321,27 +354,24 @@ be_local_closure(class_Matter_Plugin_set_name, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), - /* K1 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(set_name), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080103, // 0000 GETMBR R2 R0 K3 0x20080202, // 0001 NE R2 R1 R2 0x780A0003, // 0002 JMPF R2 #0007 - 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x8C080118, // 0003 GETMET R2 R0 K24 0x54120038, // 0004 LDINT R4 57 0x54160004, // 0005 LDINT R5 5 0x7C080600, // 0006 CALL R2 3 - 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x90020601, // 0007 SETMBR R0 K3 R1 0x80000000, // 0008 RET 0 }) ) @@ -356,13 +386,13 @@ be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 0, /* varg */ + 8, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -383,23 +413,19 @@ be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(ARG_TYPE), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(ui_string_to_conf), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x580C0019, // 0000 LDCONST R3 K25 + 0x8810011A, // 0001 GETMBR R4 R0 K26 + 0x8814011B, // 0002 GETMBR R5 R0 K27 0x780A0004, // 0003 JMPF R2 #0009 0x78120003, // 0004 JMPF R4 #0009 0x5C180A00, // 0005 MOVE R6 R5 @@ -420,13 +446,13 @@ be_local_closure(class_Matter_Plugin_timed_request, /* name */ be_nested_proto( 5, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(timed_request), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -445,39 +471,29 @@ be_local_closure(class_Matter_Plugin_init, /* name */ be_nested_proto( 8, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(endpoint), - /* K2 */ be_nested_str_weak(clusters), - /* K3 */ be_nested_str_weak(get_clusters), - /* K4 */ be_nested_str_weak(parse_configuration), - /* K5 */ be_nested_str_weak(node_label), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x8C100103, // 0002 GETMET R4 R0 K3 + 0x90020201, // 0000 SETMBR R0 K1 R1 + 0x90021202, // 0001 SETMBR R0 K9 R2 + 0x8C10011D, // 0002 GETMET R4 R0 K29 0x7C100200, // 0003 CALL R4 1 - 0x90020404, // 0004 SETMBR R0 K2 R4 - 0x8C100104, // 0005 GETMET R4 R0 K4 + 0x90023804, // 0004 SETMBR R0 K28 R4 + 0x8C10011E, // 0005 GETMET R4 R0 K30 0x5C180600, // 0006 MOVE R6 R3 0x7C100400, // 0007 CALL R4 2 - 0x8C100706, // 0008 GETMET R4 R3 K6 - 0x58180007, // 0009 LDCONST R6 K7 - 0x581C0008, // 000A LDCONST R7 K8 + 0x8C10071F, // 0008 GETMET R4 R3 K31 + 0x58180020, // 0009 LDCONST R6 K32 + 0x581C0006, // 000A LDCONST R7 K6 0x7C100600, // 000B CALL R4 3 - 0x90020A04, // 000C SETMBR R0 K5 R4 + 0x90020604, // 000C SETMBR R0 K3 R4 0x80000000, // 000D RET 0 }) ) @@ -492,19 +508,17 @@ be_local_closure(class_Matter_Plugin_is_local_device, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(is_local_device), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040121, // 0000 GETMBR R1 R0 K33 0x78060000, // 0001 JMPF R1 #0003 0x50040001, // 0002 LDBOOL R1 0 1 0x50040200, // 0003 LDBOOL R1 1 0 @@ -522,19 +536,17 @@ be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(UPDATE_COMMANDS), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(consolidate_update_commands), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040122, // 0000 GETMBR R1 R0 K34 0x80040200, // 0001 RET 1 R1 }) ) @@ -549,17 +561,13 @@ be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tick), - /* K1 */ be_nested_str_weak(device), - /* K2 */ be_nested_str_weak(update_shadow), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(update_shadow_lazy), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ @@ -568,7 +576,7 @@ be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */ 0x88080500, // 0002 GETMBR R2 R2 K0 0x20040202, // 0003 NE R1 R1 R2 0x78060004, // 0004 JMPF R1 #000A - 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x8C040114, // 0005 GETMET R1 R0 K20 0x7C040200, // 0006 CALL R1 1 0x88040101, // 0007 GETMBR R1 R0 K1 0x88040300, // 0008 GETMBR R1 R1 K0 @@ -587,23 +595,19 @@ be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(k2l), - /* K2 */ be_nested_str_weak(clusters), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(get_cluster_list_sorted), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040323, // 0001 GETMET R1 R1 K35 + 0x880C011C, // 0002 GETMBR R3 R0 K28 0x7C040400, // 0003 CALL R1 2 0x80040200, // 0004 RET 1 R1 }) @@ -619,32 +623,27 @@ be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Plugin), - /* K1 */ be_nested_str_weak(ARG), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(ui_conf_to_string), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x58080019, // 0000 LDCONST R2 K25 + 0x880C011A, // 0001 GETMBR R3 R0 K26 0x780E0006, // 0002 JMPF R3 #000A 0x60100008, // 0003 GETGBL R4 G8 - 0x8C140302, // 0004 GETMET R5 R1 K2 + 0x8C14031F, // 0004 GETMET R5 R1 K31 0x5C1C0600, // 0005 MOVE R7 R3 - 0x58200003, // 0006 LDCONST R8 K3 + 0x58200006, // 0006 LDCONST R8 K6 0x7C140600, // 0007 CALL R5 3 0x7C100200, // 0008 CALL R4 1 0x70020000, // 0009 JMP #000B - 0x58100003, // 000A LDCONST R4 K3 + 0x58100006, // 000A LDCONST R4 K6 0x80040800, // 000B RET 1 R4 }) ) @@ -659,23 +658,19 @@ be_local_closure(class_Matter_Plugin_attribute_updated, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(attribute_updated), - /* K2 */ be_nested_str_weak(endpoint), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(attribute_updated), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x88100101, // 0000 GETMBR R4 R0 K1 + 0x8C100918, // 0001 GETMET R4 R4 K24 + 0x88180109, // 0002 GETMBR R6 R0 K9 0x5C1C0200, // 0003 MOVE R7 R1 0x5C200400, // 0004 MOVE R8 R2 0x5C240600, // 0005 MOVE R9 R3 @@ -694,13 +689,13 @@ be_local_closure(class_Matter_Plugin_update_virtual, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -718,20 +713,17 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ be_nested_proto( 12, /* nstack */ 7, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(_parse_update_virtual), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x8C1C031F, // 0000 GETMET R7 R1 K31 0x5C240400, // 0001 MOVE R9 R2 0x7C1C0400, // 0002 CALL R7 2 0x4C200000, // 0003 LDNIL R8 @@ -743,7 +735,7 @@ be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */ 0x5C1C1000, // 0009 MOVE R7 R8 0x20200E03, // 000A NE R8 R7 R3 0x78220003, // 000B JMPF R8 #0010 - 0x8C200101, // 000C GETMET R8 R0 K1 + 0x8C200118, // 000C GETMET R8 R0 K24 0x5C280A00, // 000D MOVE R10 R5 0x5C2C0C00, // 000E MOVE R11 R6 0x7C200600, // 000F CALL R8 3 @@ -762,13 +754,13 @@ be_local_closure(class_Matter_Plugin_parse_configuration, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -786,19 +778,17 @@ be_local_closure(class_Matter_Plugin_get_name, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(node_label), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(get_name), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 0x80040200, // 0001 RET 1 R1 }) ) @@ -813,19 +803,17 @@ be_local_closure(class_Matter_Plugin_get_endpoint, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoint), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(get_endpoint), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x80040200, // 0001 RET 1 R1 }) ) @@ -840,29 +828,24 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(contains_attribute), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x880C011C, // 0000 GETMBR R3 R0 K28 + 0x8C0C071F, // 0001 GETMET R3 R3 K31 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x4C100000, // 0004 LDNIL R4 0x20100604, // 0005 NE R4 R3 R4 0x7812000C, // 0006 JMPF R4 #0014 - 0x58100002, // 0007 LDCONST R4 K2 + 0x58100024, // 0007 LDCONST R4 K36 0x6014000C, // 0008 GETGBL R5 G12 0x5C180600, // 0009 MOVE R6 R3 0x7C140200, // 000A CALL R5 1 @@ -873,7 +856,7 @@ be_local_closure(class_Matter_Plugin_contains_attribute, /* name */ 0x78160001, // 000F JMPF R5 #0012 0x50140200, // 0010 LDBOOL R5 1 0 0x80040A00, // 0011 RET 1 R5 - 0x00100903, // 0012 ADD R4 R4 K3 + 0x00100925, // 0012 ADD R4 R4 K37 0x7001FFF3, // 0013 JMP #0008 0x50100000, // 0014 LDBOOL R4 0 0 0x80040800, // 0015 RET 1 R4 @@ -890,13 +873,13 @@ be_local_closure(class_Matter_Plugin_subscribe_event, /* name */ be_nested_proto( 6, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(subscribe_event), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -915,13 +898,13 @@ be_local_closure(class_Matter_Plugin_read_event, /* name */ be_nested_proto( 6, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(read_event), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -940,13 +923,13 @@ be_local_closure(class_Matter_Plugin_parse_sensors, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(parse_sensors), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -964,21 +947,18 @@ be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(find), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(get_attribute_list), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808011C, // 0000 GETMBR R2 R0 K28 + 0x8C08051F, // 0001 GETMET R2 R2 K31 0x5C100200, // 0002 MOVE R4 R1 0x60140012, // 0003 GETGBL R5 G18 0x7C140000, // 0004 CALL R5 0 @@ -997,33 +977,23 @@ be_local_closure(class_Matter_Plugin_publish_command, /* name */ be_nested_proto( 16, /* nstack */ 7, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K2 */ be_nested_str_weak(dump), - /* K3 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(publish_command), - /* K6 */ be_nested_str_weak(MtrReceived), - /* K7 */ be_nested_str_weak(endpoint), - /* K8 */ be_nested_str_weak(node_label), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(publish_command), &be_const_str_solidified, ( &(const binstruction[46]) { /* code */ - 0xA41E0000, // 0000 IMPORT R7 K0 + 0xA41E0400, // 0000 IMPORT R7 K2 0x60200018, // 0001 GETGBL R8 G24 - 0x58240001, // 0002 LDCONST R9 K1 - 0x8C280F02, // 0003 GETMET R10 R7 K2 + 0x58240026, // 0002 LDCONST R9 K38 + 0x8C280F05, // 0003 GETMET R10 R7 K5 0x5C300200, // 0004 MOVE R12 R1 0x7C280400, // 0005 CALL R10 2 - 0x8C2C0F02, // 0006 GETMET R11 R7 K2 + 0x8C2C0F05, // 0006 GETMET R11 R7 K5 0x5C340400, // 0007 MOVE R13 R2 0x7C2C0400, // 0008 CALL R11 2 0x7C200600, // 0009 CALL R8 3 @@ -1031,12 +1001,12 @@ be_local_closure(class_Matter_Plugin_publish_command, /* name */ 0x20240609, // 000B NE R9 R3 R9 0x7826000A, // 000C JMPF R9 #0018 0x60240018, // 000D GETGBL R9 G24 - 0x58280003, // 000E LDCONST R10 K3 + 0x58280027, // 000E LDCONST R10 K39 0x5C2C1000, // 000F MOVE R11 R8 - 0x8C300F02, // 0010 GETMET R12 R7 K2 + 0x8C300F05, // 0010 GETMET R12 R7 K5 0x5C380600, // 0011 MOVE R14 R3 0x7C300400, // 0012 CALL R12 2 - 0x8C340F02, // 0013 GETMET R13 R7 K2 + 0x8C340F05, // 0013 GETMET R13 R7 K5 0x5C3C0800, // 0014 MOVE R15 R4 0x7C340400, // 0015 CALL R13 2 0x7C240800, // 0016 CALL R9 4 @@ -1045,21 +1015,21 @@ be_local_closure(class_Matter_Plugin_publish_command, /* name */ 0x20240A09, // 0019 NE R9 R5 R9 0x7826000A, // 001A JMPF R9 #0026 0x60240018, // 001B GETGBL R9 G24 - 0x58280003, // 001C LDCONST R10 K3 + 0x58280027, // 001C LDCONST R10 K39 0x5C2C1000, // 001D MOVE R11 R8 - 0x8C300F02, // 001E GETMET R12 R7 K2 + 0x8C300F05, // 001E GETMET R12 R7 K5 0x5C380A00, // 001F MOVE R14 R5 0x7C300400, // 0020 CALL R12 2 - 0x8C340F02, // 0021 GETMET R13 R7 K2 + 0x8C340F05, // 0021 GETMET R13 R7 K5 0x5C3C0C00, // 0022 MOVE R15 R6 0x7C340400, // 0023 CALL R13 2 0x7C240800, // 0024 CALL R9 4 0x5C201200, // 0025 MOVE R8 R9 - 0xB8260800, // 0026 GETNGBL R9 K4 - 0x8C241305, // 0027 GETMET R9 R9 K5 - 0x582C0006, // 0028 LDCONST R11 K6 - 0x88300107, // 0029 GETMBR R12 R0 K7 - 0x88340108, // 002A GETMBR R13 R0 K8 + 0xB8261E00, // 0026 GETNGBL R9 K15 + 0x8C241328, // 0027 GETMET R9 R9 K40 + 0x582C0029, // 0028 LDCONST R11 K41 + 0x88300109, // 0029 GETMBR R12 R0 K9 + 0x88340103, // 002A GETMBR R13 R0 K3 0x5C381000, // 002B MOVE R14 R8 0x7C240A00, // 002C CALL R9 5 0x80000000, // 002D RET 0 @@ -1076,19 +1046,17 @@ be_local_closure(class_Matter_Plugin_get_clusters, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(CLUSTERS), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(get_clusters), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804012A, // 0000 GETMBR R1 R0 K42 0x80040200, // 0001 RET 1 R1 }) ) @@ -1103,21 +1071,18 @@ be_local_closure(class_Matter_Plugin_contains_cluster, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(clusters), - /* K1 */ be_nested_str_weak(contains), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(contains_cluster), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808011C, // 0000 GETMBR R2 R0 K28 + 0x8C08052B, // 0001 GETMET R2 R2 K43 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -1134,181 +1099,158 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ be_nested_proto( 17, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(Matter_TLV_array), - /* K6 */ be_nested_str_weak(TYPES), - /* K7 */ be_nested_str_weak(keys), - /* K8 */ be_nested_str_weak(add_struct), - /* K9 */ be_nested_str_weak(add_TLV), - /* K10 */ be_nested_str_weak(U2), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(get_cluster_list_sorted), - /* K14 */ be_nested_str_weak(U4), - /* K15 */ be_const_int(2), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(set), - /* K18 */ be_nested_str_weak(get_attribute_list), - /* K19 */ be_nested_str_weak(FEATURE_MAPS), - /* K20 */ be_nested_str_weak(find), - /* K21 */ be_nested_str_weak(CLUSTER_REVISIONS), - }), + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[161]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8121E00, // 0000 GETNGBL R4 K15 + 0x8810092C, // 0001 GETMBR R4 R4 K44 + 0x8814052D, // 0002 GETMBR R5 R2 K45 + 0x8818052E, // 0003 GETMBR R6 R2 K46 0x541E001C, // 0004 LDINT R7 29 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0050, // 0006 JMPF R7 #0058 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D2F, // 0007 EQ R7 R6 K47 0x781E001B, // 0008 JMPF R7 #0025 - 0x8C1C0905, // 0009 GETMET R7 R4 K5 + 0x8C1C0930, // 0009 GETMET R7 R4 K48 0x7C1C0200, // 000A CALL R7 1 - 0x88200106, // 000B GETMBR R8 R0 K6 + 0x88200131, // 000B GETMBR R8 R0 K49 0x60240010, // 000C GETGBL R9 G16 - 0x8C281107, // 000D GETMET R10 R8 K7 + 0x8C281132, // 000D GETMET R10 R8 K50 0x7C280200, // 000E CALL R10 1 0x7C240200, // 000F CALL R9 1 0xA802000E, // 0010 EXBLK 0 #0020 0x5C281200, // 0011 MOVE R10 R9 0x7C280000, // 0012 CALL R10 0 - 0x8C2C0F08, // 0013 GETMET R11 R7 K8 + 0x8C2C0F33, // 0013 GETMET R11 R7 K51 0x7C2C0200, // 0014 CALL R11 1 - 0x8C301709, // 0015 GETMET R12 R11 K9 - 0x58380004, // 0016 LDCONST R14 K4 - 0x883C090A, // 0017 GETMBR R15 R4 K10 + 0x8C301734, // 0015 GETMET R12 R11 K52 + 0x5838002F, // 0016 LDCONST R14 K47 + 0x883C0935, // 0017 GETMBR R15 R4 K53 0x5C401400, // 0018 MOVE R16 R10 0x7C300800, // 0019 CALL R12 4 - 0x8C301709, // 001A GETMET R12 R11 K9 - 0x5838000B, // 001B LDCONST R14 K11 - 0x883C090A, // 001C GETMBR R15 R4 K10 + 0x8C301734, // 001A GETMET R12 R11 K52 + 0x58380036, // 001B LDCONST R14 K54 + 0x883C0935, // 001C GETMBR R15 R4 K53 0x9440100A, // 001D GETIDX R16 R8 R10 0x7C300800, // 001E CALL R12 4 0x7001FFF0, // 001F JMP #0011 - 0x5824000C, // 0020 LDCONST R9 K12 + 0x58240037, // 0020 LDCONST R9 K55 0xAC240200, // 0021 CATCH R9 1 0 0xB0080000, // 0022 RAISE 2 R0 R0 0x80040E00, // 0023 RET 1 R7 0x70020032, // 0024 JMP #0058 - 0x1C1C0D0B, // 0025 EQ R7 R6 K11 + 0x1C1C0D36, // 0025 EQ R7 R6 K54 0x781E0013, // 0026 JMPF R7 #003B - 0x8C1C0905, // 0027 GETMET R7 R4 K5 + 0x8C1C0930, // 0027 GETMET R7 R4 K48 0x7C1C0200, // 0028 CALL R7 1 0x60200010, // 0029 GETGBL R8 G16 - 0x8C24010D, // 002A GETMET R9 R0 K13 + 0x8C240138, // 002A GETMET R9 R0 K56 0x7C240200, // 002B CALL R9 1 0x7C200200, // 002C CALL R8 1 0xA8020007, // 002D EXBLK 0 #0036 0x5C241000, // 002E MOVE R9 R8 0x7C240000, // 002F CALL R9 0 - 0x8C280F09, // 0030 GETMET R10 R7 K9 + 0x8C280F34, // 0030 GETMET R10 R7 K52 0x4C300000, // 0031 LDNIL R12 - 0x8834090E, // 0032 GETMBR R13 R4 K14 + 0x88340939, // 0032 GETMBR R13 R4 K57 0x5C381200, // 0033 MOVE R14 R9 0x7C280800, // 0034 CALL R10 4 0x7001FFF7, // 0035 JMP #002E - 0x5820000C, // 0036 LDCONST R8 K12 + 0x58200037, // 0036 LDCONST R8 K55 0xAC200200, // 0037 CATCH R8 1 0 0xB0080000, // 0038 RAISE 2 R0 R0 0x80040E00, // 0039 RET 1 R7 0x7002001C, // 003A JMP #0058 - 0x1C1C0D0F, // 003B EQ R7 R6 K15 + 0x1C1C0D3A, // 003B EQ R7 R6 K58 0x781E0003, // 003C JMPF R7 #0041 - 0x8C1C0905, // 003D GETMET R7 R4 K5 + 0x8C1C0930, // 003D GETMET R7 R4 K48 0x7C1C0200, // 003E CALL R7 1 0x80040E00, // 003F RET 1 R7 0x70020016, // 0040 JMP #0058 - 0x1C1C0D10, // 0041 EQ R7 R6 K16 + 0x1C1C0D3B, // 0041 EQ R7 R6 K59 0x781E0003, // 0042 JMPF R7 #0047 - 0x8C1C0905, // 0043 GETMET R7 R4 K5 + 0x8C1C0930, // 0043 GETMET R7 R4 K48 0x7C1C0200, // 0044 CALL R7 1 0x80040E00, // 0045 RET 1 R7 0x70020010, // 0046 JMP #0058 0x541EFFFB, // 0047 LDINT R7 65532 0x1C1C0C07, // 0048 EQ R7 R6 R7 0x781E0005, // 0049 JMPF R7 #0050 - 0x8C1C0711, // 004A GETMET R7 R3 K17 - 0x8824090E, // 004B GETMBR R9 R4 K14 - 0x58280004, // 004C LDCONST R10 K4 + 0x8C1C073C, // 004A GETMET R7 R3 K60 + 0x88240939, // 004B GETMBR R9 R4 K57 + 0x5828002F, // 004C LDCONST R10 K47 0x7C1C0600, // 004D CALL R7 3 0x80040E00, // 004E RET 1 R7 0x70020007, // 004F JMP #0058 0x541EFFFC, // 0050 LDINT R7 65533 0x1C1C0C07, // 0051 EQ R7 R6 R7 0x781E0004, // 0052 JMPF R7 #0058 - 0x8C1C0711, // 0053 GETMET R7 R3 K17 - 0x8824090E, // 0054 GETMBR R9 R4 K14 - 0x5828000B, // 0055 LDCONST R10 K11 + 0x8C1C073C, // 0053 GETMET R7 R3 K60 + 0x88240939, // 0054 GETMBR R9 R4 K57 + 0x58280036, // 0055 LDCONST R10 K54 0x7C1C0600, // 0056 CALL R7 3 0x80040E00, // 0057 RET 1 R7 0x541EFFF7, // 0058 LDINT R7 65528 0x1C1C0C07, // 0059 EQ R7 R6 R7 0x781E0003, // 005A JMPF R7 #005F - 0x8C1C0905, // 005B GETMET R7 R4 K5 + 0x8C1C0930, // 005B GETMET R7 R4 K48 0x7C1C0200, // 005C CALL R7 1 0x80040E00, // 005D RET 1 R7 0x7002003F, // 005E JMP #009F 0x541EFFFA, // 005F LDINT R7 65531 0x1C1C0C07, // 0060 EQ R7 R6 R7 0x781E0013, // 0061 JMPF R7 #0076 - 0x8C1C0905, // 0062 GETMET R7 R4 K5 + 0x8C1C0930, // 0062 GETMET R7 R4 K48 0x7C1C0200, // 0063 CALL R7 1 - 0x8C200112, // 0064 GETMET R8 R0 K18 + 0x8C20013D, // 0064 GETMET R8 R0 K61 0x5C280A00, // 0065 MOVE R10 R5 0x7C200400, // 0066 CALL R8 2 - 0x58240004, // 0067 LDCONST R9 K4 + 0x5824002F, // 0067 LDCONST R9 K47 0x6028000C, // 0068 GETGBL R10 G12 0x5C2C1000, // 0069 MOVE R11 R8 0x7C280200, // 006A CALL R10 1 0x1428120A, // 006B LT R10 R9 R10 0x782A0006, // 006C JMPF R10 #0074 - 0x8C280F09, // 006D GETMET R10 R7 K9 + 0x8C280F34, // 006D GETMET R10 R7 K52 0x4C300000, // 006E LDNIL R12 - 0x8834090A, // 006F GETMBR R13 R4 K10 + 0x88340935, // 006F GETMBR R13 R4 K53 0x94381009, // 0070 GETIDX R14 R8 R9 0x7C280800, // 0071 CALL R10 4 - 0x0024130B, // 0072 ADD R9 R9 K11 + 0x00241336, // 0072 ADD R9 R9 K54 0x7001FFF3, // 0073 JMP #0068 0x80040E00, // 0074 RET 1 R7 0x70020028, // 0075 JMP #009F 0x541EFFF9, // 0076 LDINT R7 65530 0x1C1C0C07, // 0077 EQ R7 R6 R7 0x781E0003, // 0078 JMPF R7 #007D - 0x8C1C0905, // 0079 GETMET R7 R4 K5 + 0x8C1C0930, // 0079 GETMET R7 R4 K48 0x7C1C0200, // 007A CALL R7 1 0x80040E00, // 007B RET 1 R7 0x70020021, // 007C JMP #009F 0x541EFFF8, // 007D LDINT R7 65529 0x1C1C0C07, // 007E EQ R7 R6 R7 0x781E0003, // 007F JMPF R7 #0084 - 0x8C1C0905, // 0080 GETMET R7 R4 K5 + 0x8C1C0930, // 0080 GETMET R7 R4 K48 0x7C1C0200, // 0081 CALL R7 1 0x80040E00, // 0082 RET 1 R7 0x7002001A, // 0083 JMP #009F 0x541EFFFB, // 0084 LDINT R7 65532 0x1C1C0C07, // 0085 EQ R7 R6 R7 0x781E000A, // 0086 JMPF R7 #0092 - 0x881C0113, // 0087 GETMBR R7 R0 K19 - 0x8C1C0F14, // 0088 GETMET R7 R7 K20 + 0x881C013E, // 0087 GETMBR R7 R0 K62 + 0x8C1C0F1F, // 0088 GETMET R7 R7 K31 0x5C240A00, // 0089 MOVE R9 R5 - 0x58280004, // 008A LDCONST R10 K4 + 0x5828002F, // 008A LDCONST R10 K47 0x7C1C0600, // 008B CALL R7 3 - 0x8C200711, // 008C GETMET R8 R3 K17 - 0x8828090E, // 008D GETMBR R10 R4 K14 + 0x8C20073C, // 008C GETMET R8 R3 K60 + 0x88280939, // 008D GETMBR R10 R4 K57 0x5C2C0E00, // 008E MOVE R11 R7 0x7C200600, // 008F CALL R8 3 0x80041000, // 0090 RET 1 R8 @@ -1316,13 +1258,13 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x541EFFFC, // 0092 LDINT R7 65533 0x1C1C0C07, // 0093 EQ R7 R6 R7 0x781E0009, // 0094 JMPF R7 #009F - 0x881C0115, // 0095 GETMBR R7 R0 K21 - 0x8C1C0F14, // 0096 GETMET R7 R7 K20 + 0x881C013F, // 0095 GETMBR R7 R0 K63 + 0x8C1C0F1F, // 0096 GETMET R7 R7 K31 0x5C240A00, // 0097 MOVE R9 R5 - 0x5828000B, // 0098 LDCONST R10 K11 + 0x58280036, // 0098 LDCONST R10 K54 0x7C1C0600, // 0099 CALL R7 3 - 0x8C200711, // 009A GETMET R8 R3 K17 - 0x8828090E, // 009B GETMBR R10 R4 K14 + 0x8C20073C, // 009A GETMET R8 R3 K60 + 0x88280939, // 009B GETMBR R10 R4 K57 0x5C2C0E00, // 009C MOVE R11 R7 0x7C200600, // 009D CALL R8 3 0x80041000, // 009E RET 1 R8 @@ -1341,13 +1283,13 @@ be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */ be_nested_proto( 6, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin, /* shared constants */ be_str_weak(subscribe_attribute), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h index 1306bc9fd..97b7f8412 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h @@ -3,6 +3,32 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Aggregator' ktab size: 22, total: 29 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Aggregator[22] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(3), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(U2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(U1), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(Matter_TLV_array), + /* K12 */ be_nested_str_weak(add_TLV), + /* K13 */ be_nested_str_weak(device), + /* K14 */ be_nested_str_weak(get_active_endpoints), + /* K15 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K16 */ be_nested_str_weak(stop_iteration), + /* K17 */ be_nested_str_weak(read_attribute), + /* K18 */ be_nested_str_weak(command), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_str_weak(Matter_TLV_struct), + /* K21 */ be_nested_str_weak(invoke_request), +}; + extern const bclass be_class_Matter_Plugin_Aggregator; @@ -13,32 +39,13 @@ be_local_closure(class_Matter_Plugin_Aggregator_read_attribute, /* name */ be_nested_proto( 16, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(3), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(U1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(Matter_TLV_array), - /* K12 */ be_nested_str_weak(add_TLV), - /* K13 */ be_nested_str_weak(device), - /* K14 */ be_nested_str_weak(get_active_endpoints), - /* K15 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K16 */ be_nested_str_weak(stop_iteration), - /* K17 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Aggregator, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[73]) { /* code */ @@ -128,32 +135,20 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ be_nested_proto( 13, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_const_int(3), - /* K5 */ be_const_int(0), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(Matter_TLV_struct), - /* K8 */ be_nested_str_weak(add_TLV), - /* K9 */ be_nested_str_weak(U2), - /* K10 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_Aggregator, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 + 0x88180712, // 0003 GETMBR R6 R3 K18 0x1C1C0B04, // 0004 EQ R7 R5 K4 0x781E0016, // 0005 JMPF R7 #001D 0x1C1C0D05, // 0006 EQ R7 R6 K5 @@ -161,16 +156,16 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ 0x501C0200, // 0008 LDBOOL R7 1 0 0x80040E00, // 0009 RET 1 R7 0x70020010, // 000A JMP #001C - 0x1C1C0D06, // 000B EQ R7 R6 K6 + 0x1C1C0D13, // 000B EQ R7 R6 K19 0x781E0009, // 000C JMPF R7 #0017 - 0x8C1C0907, // 000D GETMET R7 R4 K7 + 0x8C1C0914, // 000D GETMET R7 R4 K20 0x7C1C0200, // 000E CALL R7 1 - 0x8C200F08, // 000F GETMET R8 R7 K8 + 0x8C200F0C, // 000F GETMET R8 R7 K12 0x58280005, // 0010 LDCONST R10 K5 - 0x882C0909, // 0011 GETMBR R11 R4 K9 + 0x882C0907, // 0011 GETMBR R11 R4 K7 0x58300005, // 0012 LDCONST R12 K5 0x7C200800, // 0013 CALL R8 4 - 0x900E0705, // 0014 SETMBR R3 K3 K5 + 0x900E2505, // 0014 SETMBR R3 K18 K5 0x80040E00, // 0015 RET 1 R7 0x70020004, // 0016 JMP #001C 0x541E003F, // 0017 LDINT R7 64 @@ -182,7 +177,7 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ 0x601C0003, // 001D GETGBL R7 G3 0x5C200000, // 001E MOVE R8 R0 0x7C1C0200, // 001F CALL R7 1 - 0x8C1C0F0A, // 0020 GETMET R7 R7 K10 + 0x8C1C0F15, // 0020 GETMET R7 R7 K21 0x5C240200, // 0021 MOVE R9 R1 0x5C280400, // 0022 MOVE R10 R2 0x5C2C0600, // 0023 MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index 7ad67d51d..0e314759d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -3,6 +3,28 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'GetOptionReader' ktab size: 18, total: 24 (saved 48 bytes) +static const bvalue be_ktab_class_GetOptionReader[18] = { + /* K0 */ be_nested_str_weak(flag), + /* K1 */ be_nested_str_weak(getbits), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(flag2), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(flag3), + /* K6 */ be_nested_str_weak(flag4), + /* K7 */ be_nested_str_weak(flag5), + /* K8 */ be_nested_str_weak(flag6), + /* K9 */ be_nested_str_weak(value_error), + /* K10 */ be_nested_str_weak(invalid_X20json), + /* K11 */ be_nested_str_weak(SetOption), + /* K12 */ be_nested_str_weak(fromhex), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(reverse), + /* K15 */ be_const_int(1), + /* K16 */ be_const_int(2), + /* K17 */ be_const_int(3), +}; + extern const bclass be_class_GetOptionReader; @@ -13,23 +35,13 @@ be_local_closure(class_GetOptionReader_getoption, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(flag), - /* K1 */ be_nested_str_weak(getbits), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(flag2), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(flag3), - /* K6 */ be_nested_str_weak(flag4), - /* K7 */ be_nested_str_weak(flag5), - /* K8 */ be_nested_str_weak(flag6), - }), + &be_ktab_class_GetOptionReader, /* shared constants */ be_str_weak(getoption), &be_const_str_solidified, ( &(const binstruction[65]) { /* code */ @@ -111,85 +123,69 @@ be_local_closure(class_GetOptionReader_init, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(value_error), - /* K1 */ be_nested_str_weak(invalid_X20json), - /* K2 */ be_nested_str_weak(SetOption), - /* K3 */ be_nested_str_weak(flag), - /* K4 */ be_nested_str_weak(fromhex), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(reverse), - /* K7 */ be_nested_str_weak(flag2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(flag3), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(flag4), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(flag5), - /* K14 */ be_nested_str_weak(flag6), - }), + &be_ktab_class_GetOptionReader, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[54]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 - 0xB0060101, // 0003 RAISE 1 K0 K1 - 0x94080302, // 0004 GETIDX R2 R1 K2 + 0xB006130A, // 0003 RAISE 1 K9 K10 + 0x9408030B, // 0004 GETIDX R2 R1 K11 0x600C0015, // 0005 GETGBL R3 G21 0x7C0C0000, // 0006 CALL R3 0 - 0x8C0C0704, // 0007 GETMET R3 R3 K4 - 0x94140505, // 0008 GETIDX R5 R2 K5 + 0x8C0C070C, // 0007 GETMET R3 R3 K12 + 0x9414050D, // 0008 GETIDX R5 R2 K13 0x7C0C0400, // 0009 CALL R3 2 - 0x8C0C0706, // 000A GETMET R3 R3 K6 + 0x8C0C070E, // 000A GETMET R3 R3 K14 0x7C0C0200, // 000B CALL R3 1 - 0x90020603, // 000C SETMBR R0 K3 R3 + 0x90020003, // 000C SETMBR R0 K0 R3 0x600C0015, // 000D GETGBL R3 G21 0x7C0C0000, // 000E CALL R3 0 - 0x8C0C0704, // 000F GETMET R3 R3 K4 - 0x94140508, // 0010 GETIDX R5 R2 K8 + 0x8C0C070C, // 000F GETMET R3 R3 K12 + 0x9414050F, // 0010 GETIDX R5 R2 K15 0x7C0C0400, // 0011 CALL R3 2 - 0x90020E03, // 0012 SETMBR R0 K7 R3 + 0x90020603, // 0012 SETMBR R0 K3 R3 0x600C0015, // 0013 GETGBL R3 G21 0x7C0C0000, // 0014 CALL R3 0 - 0x8C0C0704, // 0015 GETMET R3 R3 K4 - 0x9414050A, // 0016 GETIDX R5 R2 K10 + 0x8C0C070C, // 0015 GETMET R3 R3 K12 + 0x94140510, // 0016 GETIDX R5 R2 K16 0x7C0C0400, // 0017 CALL R3 2 - 0x8C0C0706, // 0018 GETMET R3 R3 K6 + 0x8C0C070E, // 0018 GETMET R3 R3 K14 0x7C0C0200, // 0019 CALL R3 1 - 0x90021203, // 001A SETMBR R0 K9 R3 + 0x90020A03, // 001A SETMBR R0 K5 R3 0x600C0015, // 001B GETGBL R3 G21 0x7C0C0000, // 001C CALL R3 0 - 0x8C0C0704, // 001D GETMET R3 R3 K4 - 0x9414050C, // 001E GETIDX R5 R2 K12 + 0x8C0C070C, // 001D GETMET R3 R3 K12 + 0x94140511, // 001E GETIDX R5 R2 K17 0x7C0C0400, // 001F CALL R3 2 - 0x8C0C0706, // 0020 GETMET R3 R3 K6 + 0x8C0C070E, // 0020 GETMET R3 R3 K14 0x7C0C0200, // 0021 CALL R3 1 - 0x90021603, // 0022 SETMBR R0 K11 R3 + 0x90020C03, // 0022 SETMBR R0 K6 R3 0x600C0015, // 0023 GETGBL R3 G21 0x7C0C0000, // 0024 CALL R3 0 - 0x8C0C0704, // 0025 GETMET R3 R3 K4 + 0x8C0C070C, // 0025 GETMET R3 R3 K12 0x54160003, // 0026 LDINT R5 4 0x94140405, // 0027 GETIDX R5 R2 R5 0x7C0C0400, // 0028 CALL R3 2 - 0x8C0C0706, // 0029 GETMET R3 R3 K6 + 0x8C0C070E, // 0029 GETMET R3 R3 K14 0x7C0C0200, // 002A CALL R3 1 - 0x90021A03, // 002B SETMBR R0 K13 R3 + 0x90020E03, // 002B SETMBR R0 K7 R3 0x600C0015, // 002C GETGBL R3 G21 0x7C0C0000, // 002D CALL R3 0 - 0x8C0C0704, // 002E GETMET R3 R3 K4 + 0x8C0C070C, // 002E GETMET R3 R3 K12 0x54160004, // 002F LDINT R5 5 0x94140405, // 0030 GETIDX R5 R2 R5 0x7C0C0400, // 0031 CALL R3 2 - 0x8C0C0706, // 0032 GETMET R3 R3 K6 + 0x8C0C070E, // 0032 GETMET R3 R3 K14 0x7C0C0200, // 0033 CALL R3 1 - 0x90021C03, // 0034 SETMBR R0 K14 R3 + 0x90021003, // 0034 SETMBR R0 K8 R3 0x80000000, // 0035 RET 0 }) ) @@ -216,6 +212,136 @@ be_local_class(GetOptionReader, })), be_str_weak(GetOptionReader) ); +// compact class 'Matter_Plugin_Device' ktab size: 126, total: 158 (saved 256 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Device[126] = { + /* K0 */ be_nested_str_weak(http_remote), + /* K1 */ be_nested_str_weak(add_schedule), + /* K2 */ be_nested_str_weak(UPDATE_CMD), + /* K3 */ be_nested_str_weak(UPDATE_TIME), + /* K4 */ be_nested_str_weak(webserver), + /* K5 */ be_nested_str_weak(web_values_prefix), + /* K6 */ be_nested_str_weak(content_send), + /* K7 */ be_nested_str_weak(_X26lt_X3B_X2D_X2D_X20_X28), + /* K8 */ be_nested_str_weak(DISPLAY_NAME), + /* K9 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B), + /* K10 */ be_nested_str_weak(BRIDGE), + /* K11 */ be_nested_str_weak(scheduler), + /* K12 */ be_nested_str_weak(every_250ms), + /* K13 */ be_nested_str_weak(_X3Cb_X3EOn_X3C_X2Fb_X3E), + /* K14 */ be_nested_str_weak(Off), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_nested_str_weak(matter), + /* K17 */ be_nested_str_weak(TLV), + /* K18 */ be_nested_str_weak(cluster), + /* K19 */ be_nested_str_weak(command), + /* K20 */ be_const_int(3), + /* K21 */ be_const_int(0), + /* K22 */ be_const_int(1), + /* K23 */ be_nested_str_weak(Matter_TLV_struct), + /* K24 */ be_nested_str_weak(add_TLV), + /* K25 */ be_nested_str_weak(U2), + /* K26 */ be_nested_str_weak(invoke_request), + /* K27 */ be_nested_str_weak(tick), + /* K28 */ be_nested_str_weak(device), + /* K29 */ be_nested_str_weak(call_remote_sync), + /* K30 */ be_nested_str_weak(parse_http_response), + /* K31 */ be_const_int(1), + /* K32 */ be_nested_str_weak(json), + /* K33 */ be_const_int(2), + /* K34 */ be_nested_str_weak(_X20), + /* K35 */ be_const_int(0), + /* K36 */ be_nested_str_weak(call_sync), + /* K37 */ be_nested_str_weak(SYNC_TIMEOUT), + /* K38 */ be_nested_str_weak(device_is_alive), + /* K39 */ be_nested_str_weak(load), + /* K40 */ be_const_int(1), + /* K41 */ be_nested_str_weak(log), + /* K42 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), + /* K43 */ be_const_int(3), + /* K44 */ be_nested_str_weak(parse_status_response_and_call_method), + /* K45 */ be_nested_str_weak(parse_status), + /* K46 */ be_nested_str_weak(get_name), + /* K47 */ be_nested_str_weak(PREFIX), + /* K48 */ be_nested_str_weak(html_escape), + /* K49 */ be_nested_str_weak(attribute), + /* K50 */ be_nested_str_weak(set), + /* K51 */ be_nested_str_weak(U1), + /* K52 */ be_nested_str_weak(Matter_TLV_array), + /* K53 */ be_nested_str_weak(TYPES), + /* K54 */ be_nested_str_weak(keys), + /* K55 */ be_nested_str_weak(add_struct), + /* K56 */ be_nested_str_weak(stop_iteration), + /* K57 */ be_nested_str_weak(NON_BRIDGE_VENDOR), + /* K58 */ be_nested_str_weak(find), + /* K59 */ be_nested_str_weak(get_admin_vendor), + /* K60 */ be_nested_str_weak(disable_bridge_mode), + /* K61 */ be_nested_str_weak(string), + /* K62 */ be_nested_str_weak(get_info), + /* K63 */ be_nested_str_weak(name), + /* K64 */ be_nested_str_weak(set_or_nil), + /* K65 */ be_nested_str_weak(UTF1), + /* K66 */ be_nested_str_weak(tasmota), + /* K67 */ be_nested_str_weak(cmd), + /* K68 */ be_nested_str_weak(DeviceName), + /* K69 */ be_nested_str_weak(version), + /* K70 */ be_nested_str_weak(_X28), + /* K71 */ be_nested_str_weak(NULL), + /* K72 */ be_nested_str_weak(Status_X202), + /* K73 */ be_nested_str_weak(StatusFWR), + /* K74 */ be_nested_str_weak(Version), + /* K75 */ be_nested_str_weak(mac), + /* K76 */ be_nested_str_weak(wifi), + /* K77 */ be_nested_str_weak(BOOL), + /* K78 */ be_nested_str_weak(reachable), + /* K79 */ be_nested_str_weak(read_attribute), + /* K80 */ be_nested_str_weak(init), + /* K81 */ be_nested_str_weak(ARG_HTTP), + /* K82 */ be_nested_str_weak(register_http_remote), + /* K83 */ be_nested_str_weak(PROBE_TIMEOUT), + /* K84 */ be_nested_str_weak(register_cmd_cb), + /* K85 */ be_nested_str_weak(introspect), + /* K86 */ be_nested_str_weak(get), + /* K87 */ be_nested_str_weak(JSON_NAME), + /* K88 */ be_nested_str_weak(contains), + /* K89 */ be_nested_str_weak(shadow_value), + /* K90 */ be_nested_str_weak(dump), + /* K91 */ be_nested_str_weak(null), + /* K92 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s), + /* K93 */ be_nested_str_weak(shadow_onoff), + /* K94 */ be_nested_str_weak(Power), + /* K95 */ be_nested_str_weak(shadow_bri), + /* K96 */ be_nested_str_weak(Bri), + /* K97 */ be_nested_str_weak(shadow_ct), + /* K98 */ be_nested_str_weak(CT), + /* K99 */ be_nested_str_weak(shadow_hue), + /* K100 */ be_nested_str_weak(Hue), + /* K101 */ be_nested_str_weak(shadow_sat), + /* K102 */ be_nested_str_weak(Sat), + /* K103 */ be_nested_str_weak(shadow_shutter_pos), + /* K104 */ be_nested_str_weak(ShutterPos), + /* K105 */ be_nested_str_weak(shadow_shutter_target), + /* K106 */ be_nested_str_weak(ShutterTarget), + /* K107 */ be_nested_str_weak(shadow_shutter_tilt), + /* K108 */ be_nested_str_weak(ShutterTilt), + /* K109 */ be_nested_str_weak(shadow_contact), + /* K110 */ be_nested_str_weak(Contact), + /* K111 */ be_nested_str_weak(shadow_occupancy), + /* K112 */ be_nested_str_weak(Occupancy), + /* K113 */ be_nested_str_weak(shadow_air_quality), + /* K114 */ be_nested_str_weak(AirQuality), + /* K115 */ be_nested_str_weak(shadow_co2), + /* K116 */ be_nested_str_weak(CO2), + /* K117 */ be_nested_str_weak(shadow_pm1), + /* K118 */ be_nested_str_weak(PM1), + /* K119 */ be_nested_str_weak(shadow_pm2_5), + /* K120 */ be_nested_str_weak(PM2_X2E5), + /* K121 */ be_nested_str_weak(shadow_pm10), + /* K122 */ be_nested_str_weak(PM10), + /* K123 */ be_nested_str_weak(shadow_tvoc), + /* K124 */ be_nested_str_weak(TVOC), + /* K125 */ be_nested_str_weak(attribute_updated), +}; + extern const bclass be_class_Matter_Plugin_Device; @@ -226,13 +352,13 @@ be_local_closure(class_Matter_Plugin_Device_parse_status, /* name */ be_nested_proto( 3, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -250,7 +376,7 @@ be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -283,12 +409,7 @@ be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(http_remote), - /* K1 */ be_nested_str_weak(add_schedule), - /* K2 */ be_nested_str_weak(UPDATE_CMD), - /* K3 */ be_nested_str_weak(UPDATE_TIME), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(register_cmd_cb), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ @@ -313,30 +434,23 @@ be_local_closure(class_Matter_Plugin_Device_web_values, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26lt_X3B_X2D_X2D_X20_X28), - /* K4 */ be_nested_str_weak(DISPLAY_NAME), - /* K5 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C080105, // 0001 GETMET R2 R0 K5 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x88100104, // 0004 GETMBR R4 R0 K4 - 0x00120604, // 0005 ADD R4 K3 R4 - 0x00100905, // 0006 ADD R4 R4 K5 + 0x8C080306, // 0003 GETMET R2 R1 K6 + 0x88100108, // 0004 GETMBR R4 R0 K8 + 0x00120E04, // 0005 ADD R4 K7 R4 + 0x00100909, // 0006 ADD R4 R4 K9 0x7C080400, // 0007 CALL R2 2 0x80000000, // 0008 RET 0 }) @@ -352,31 +466,26 @@ be_local_closure(class_Matter_Plugin_Device_every_250ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(http_remote), - /* K2 */ be_nested_str_weak(scheduler), - /* K3 */ be_nested_str_weak(every_250ms), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(every_250ms), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010A, // 0000 GETMBR R1 R0 K10 0x78060003, // 0001 JMPF R1 #0006 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x8C04030B, // 0003 GETMET R1 R1 K11 0x7C040200, // 0004 CALL R1 1 0x70020004, // 0005 JMP #000B 0x60040003, // 0006 GETGBL R1 G3 0x5C080000, // 0007 MOVE R2 R0 0x7C040200, // 0008 CALL R1 1 - 0x8C040303, // 0009 GETMET R1 R1 K3 + 0x8C04030C, // 0009 GETMET R1 R1 K12 0x7C040200, // 000A CALL R1 1 0x80000000, // 000B RET 0 }) @@ -392,17 +501,13 @@ be_local_closure(class_Matter_Plugin_Device_web_value_onoff, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_X3Cb_X3EOn_X3C_X2Fb_X3E), - /* K1 */ be_nested_str_weak(Off), - /* K2 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(web_value_onoff), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -410,11 +515,11 @@ be_local_closure(class_Matter_Plugin_Device_web_value_onoff, /* name */ 0x20080202, // 0001 NE R2 R1 R2 0x780A0004, // 0002 JMPF R2 #0008 0x78060001, // 0003 JMPF R1 #0006 - 0x58080000, // 0004 LDCONST R2 K0 + 0x5808000D, // 0004 LDCONST R2 K13 0x70020000, // 0005 JMP #0007 - 0x58080001, // 0006 LDCONST R2 K1 + 0x5808000E, // 0006 LDCONST R2 K14 0x70020000, // 0007 JMP #0009 - 0x58080002, // 0008 LDCONST R2 K2 + 0x5808000F, // 0008 LDCONST R2 K15 0x80040400, // 0009 RET 1 R2 }) ) @@ -429,49 +534,37 @@ be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */ be_nested_proto( 13, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_const_int(3), - /* K5 */ be_const_int(0), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(Matter_TLV_struct), - /* K8 */ be_nested_str_weak(add_TLV), - /* K9 */ be_nested_str_weak(U2), - /* K10 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[51]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x1C1C0B04, // 0004 EQ R7 R5 K4 + 0xB8122000, // 0000 GETNGBL R4 K16 + 0x88100911, // 0001 GETMBR R4 R4 K17 + 0x88140712, // 0002 GETMBR R5 R3 K18 + 0x88180713, // 0003 GETMBR R6 R3 K19 + 0x1C1C0B14, // 0004 EQ R7 R5 K20 0x781E0016, // 0005 JMPF R7 #001D - 0x1C1C0D05, // 0006 EQ R7 R6 K5 + 0x1C1C0D15, // 0006 EQ R7 R6 K21 0x781E0002, // 0007 JMPF R7 #000B 0x501C0200, // 0008 LDBOOL R7 1 0 0x80040E00, // 0009 RET 1 R7 0x70020010, // 000A JMP #001C - 0x1C1C0D06, // 000B EQ R7 R6 K6 + 0x1C1C0D16, // 000B EQ R7 R6 K22 0x781E0009, // 000C JMPF R7 #0017 - 0x8C1C0907, // 000D GETMET R7 R4 K7 + 0x8C1C0917, // 000D GETMET R7 R4 K23 0x7C1C0200, // 000E CALL R7 1 - 0x8C200F08, // 000F GETMET R8 R7 K8 - 0x58280005, // 0010 LDCONST R10 K5 - 0x882C0909, // 0011 GETMBR R11 R4 K9 - 0x58300005, // 0012 LDCONST R12 K5 + 0x8C200F18, // 000F GETMET R8 R7 K24 + 0x58280015, // 0010 LDCONST R10 K21 + 0x882C0919, // 0011 GETMBR R11 R4 K25 + 0x58300015, // 0012 LDCONST R12 K21 0x7C200800, // 0013 CALL R8 4 - 0x900E0705, // 0014 SETMBR R3 K3 K5 + 0x900E2715, // 0014 SETMBR R3 K19 K21 0x80040E00, // 0015 RET 1 R7 0x70020004, // 0016 JMP #001C 0x541E003F, // 0017 LDINT R7 64 @@ -495,7 +588,7 @@ be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */ 0x601C0003, // 0029 GETGBL R7 G3 0x5C200000, // 002A MOVE R8 R0 0x7C1C0200, // 002B CALL R7 1 - 0x8C1C0F0A, // 002C GETMET R7 R7 K10 + 0x8C1C0F1A, // 002C GETMET R7 R7 K26 0x5C240200, // 002D MOVE R9 R1 0x5C280400, // 002E MOVE R10 R2 0x5C2C0600, // 002F MOVE R11 R3 @@ -515,43 +608,35 @@ be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(tick), - /* K2 */ be_nested_str_weak(device), - /* K3 */ be_nested_str_weak(call_remote_sync), - /* K4 */ be_nested_str_weak(UPDATE_CMD), - /* K5 */ be_nested_str_weak(parse_http_response), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010A, // 0000 GETMBR R1 R0 K10 0x7806000D, // 0001 JMPF R1 #0010 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x88080102, // 0003 GETMBR R2 R0 K2 - 0x88080501, // 0004 GETMBR R2 R2 K1 + 0x8804011B, // 0002 GETMBR R1 R0 K27 + 0x8808011C, // 0003 GETMBR R2 R0 K28 + 0x8808051B, // 0004 GETMBR R2 R2 K27 0x20040202, // 0005 NE R1 R1 R2 0x78060008, // 0006 JMPF R1 #0010 - 0x8C040103, // 0007 GETMET R1 R0 K3 - 0x880C0104, // 0008 GETMBR R3 R0 K4 + 0x8C04011D, // 0007 GETMET R1 R0 K29 + 0x880C0102, // 0008 GETMBR R3 R0 K2 0x7C040400, // 0009 CALL R1 2 0x78060004, // 000A JMPF R1 #0010 - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x58100006, // 000C LDCONST R4 K6 + 0x8C08011E, // 000B GETMET R2 R0 K30 + 0x5810001F, // 000C LDCONST R4 K31 0x5C140200, // 000D MOVE R5 R1 - 0x88180104, // 000E GETMBR R6 R0 K4 + 0x88180102, // 000E GETMBR R6 R0 K2 0x7C080800, // 000F CALL R2 4 - 0x88040102, // 0010 GETMBR R1 R0 K2 - 0x88040301, // 0011 GETMBR R1 R1 K1 - 0x90020201, // 0012 SETMBR R0 K1 R1 + 0x8804011C, // 0010 GETMBR R1 R0 K28 + 0x8804031B, // 0011 GETMBR R1 R1 K27 + 0x90023601, // 0012 SETMBR R0 K27 R1 0x80000000, // 0013 RET 0 }) ) @@ -566,70 +651,55 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(json), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(_X20), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(http_remote), - /* K6 */ be_nested_str_weak(call_sync), - /* K7 */ be_nested_str_weak(SYNC_TIMEOUT), - /* K8 */ be_nested_str_weak(device_is_alive), - /* K9 */ be_nested_str_weak(load), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), - /* K13 */ be_const_int(3), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(call_remote_sync), &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C010A, // 0000 GETMBR R3 R0 K10 0x780E0028, // 0001 JMPF R3 #002B - 0xA40E0200, // 0002 IMPORT R3 K1 - 0x58100002, // 0003 LDCONST R4 K2 + 0xA40E4000, // 0002 IMPORT R3 K32 + 0x58100021, // 0003 LDCONST R4 K33 0x4C140000, // 0004 LDNIL R5 0x20140405, // 0005 NE R5 R2 R5 0x78160005, // 0006 JMPF R5 #000D - 0x00140303, // 0007 ADD R5 R1 K3 + 0x00140322, // 0007 ADD R5 R1 K34 0x60180008, // 0008 GETGBL R6 G8 0x5C1C0400, // 0009 MOVE R7 R2 0x7C180200, // 000A CALL R6 1 0x00140A06, // 000B ADD R5 R5 R6 0x5C040A00, // 000C MOVE R1 R5 - 0x24140904, // 000D GT R5 R4 K4 + 0x24140923, // 000D GT R5 R4 K35 0x78160015, // 000E JMPF R5 #0025 - 0x88140105, // 000F GETMBR R5 R0 K5 - 0x8C140B06, // 0010 GETMET R5 R5 K6 + 0x88140100, // 000F GETMBR R5 R0 K0 + 0x8C140B24, // 0010 GETMET R5 R5 K36 0x5C1C0200, // 0011 MOVE R7 R1 - 0x88200107, // 0012 GETMBR R8 R0 K7 + 0x88200125, // 0012 GETMBR R8 R0 K37 0x7C140600, // 0013 CALL R5 3 0x4C180000, // 0014 LDNIL R6 0x20180A06, // 0015 NE R6 R5 R6 0x781A0007, // 0016 JMPF R6 #001F - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x8C180D08, // 0018 GETMET R6 R6 K8 + 0x88180100, // 0017 GETMBR R6 R0 K0 + 0x8C180D26, // 0018 GETMET R6 R6 K38 0x50200200, // 0019 LDBOOL R8 1 0 0x7C180400, // 001A CALL R6 2 - 0x8C180709, // 001B GETMET R6 R3 K9 + 0x8C180727, // 001B GETMET R6 R3 K39 0x5C200A00, // 001C MOVE R8 R5 0x7C180400, // 001D CALL R6 2 0x80040C00, // 001E RET 1 R6 - 0x0410090A, // 001F SUB R4 R4 K10 - 0xB81A1600, // 0020 GETNGBL R6 K11 - 0x581C000C, // 0021 LDCONST R7 K12 - 0x5820000D, // 0022 LDCONST R8 K13 + 0x04100928, // 001F SUB R4 R4 K40 + 0xB81A5200, // 0020 GETNGBL R6 K41 + 0x581C002A, // 0021 LDCONST R7 K42 + 0x5820002B, // 0022 LDCONST R8 K43 0x7C180400, // 0023 CALL R6 2 0x7001FFE7, // 0024 JMP #000D - 0x88140105, // 0025 GETMBR R5 R0 K5 - 0x8C140B08, // 0026 GETMET R5 R5 K8 + 0x88140100, // 0025 GETMBR R5 R0 K0 + 0x8C140B26, // 0026 GETMET R5 R5 K38 0x501C0000, // 0027 LDBOOL R7 0 0 0x7C140400, // 0028 CALL R5 2 0x4C140000, // 0029 LDNIL R5 @@ -648,35 +718,28 @@ be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(tick), - /* K2 */ be_nested_str_weak(device), - /* K3 */ be_nested_str_weak(http_remote), - /* K4 */ be_nested_str_weak(parse_status_response_and_call_method), - /* K5 */ be_nested_str_weak(parse_status), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(parse_http_response), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8810010A, // 0000 GETMBR R4 R0 K10 0x7812000A, // 0001 JMPF R4 #000D - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x88100901, // 0003 GETMBR R4 R4 K1 - 0x90020204, // 0004 SETMBR R0 K1 R4 - 0x88100103, // 0005 GETMBR R4 R0 K3 - 0x8C100904, // 0006 GETMET R4 R4 K4 + 0x8810011C, // 0002 GETMBR R4 R0 K28 + 0x8810091B, // 0003 GETMBR R4 R4 K27 + 0x90023604, // 0004 SETMBR R0 K27 R4 + 0x88100100, // 0005 GETMBR R4 R0 K0 + 0x8C10092C, // 0006 GETMET R4 R4 K44 0x5C180200, // 0007 MOVE R6 R1 0x5C1C0400, // 0008 MOVE R7 R2 0x5C200600, // 0009 MOVE R8 R3 0x5C240000, // 000A MOVE R9 R0 - 0x88280105, // 000B GETMBR R10 R0 K5 + 0x8828012D, // 000B GETMBR R10 R0 K45 0x7C100C00, // 000C CALL R4 6 0x80000000, // 000D RET 0 }) @@ -692,35 +755,28 @@ be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(PREFIX), - /* K4 */ be_nested_str_weak(html_escape), - /* K5 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4060800, // 0000 IMPORT R1 K4 + 0x8C08012E, // 0001 GETMET R2 R0 K46 0x7C080200, // 0002 CALL R2 1 - 0x8C0C0302, // 0003 GETMET R3 R1 K2 + 0x8C0C0306, // 0003 GETMET R3 R1 K6 0x60140018, // 0004 GETGBL R5 G24 - 0x88180103, // 0005 GETMBR R6 R0 K3 + 0x8818012F, // 0005 GETMBR R6 R0 K47 0x780A0003, // 0006 JMPF R2 #000B - 0x8C1C0304, // 0007 GETMET R7 R1 K4 + 0x8C1C0330, // 0007 GETMET R7 R1 K48 0x5C240400, // 0008 MOVE R9 R2 0x7C1C0400, // 0009 CALL R7 2 0x70020000, // 000A JMP #000C - 0x581C0005, // 000B LDCONST R7 K5 + 0x581C000F, // 000B LDCONST R7 K15 0x7C140400, // 000C CALL R5 2 0x7C0C0400, // 000D CALL R3 2 0x80000000, // 000E RET 0 @@ -737,87 +793,42 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ be_nested_proto( 17, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[44]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(3), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(U1), - /* K10 */ be_nested_str_weak(Matter_TLV_array), - /* K11 */ be_nested_str_weak(TYPES), - /* K12 */ be_nested_str_weak(keys), - /* K13 */ be_nested_str_weak(add_struct), - /* K14 */ be_nested_str_weak(add_TLV), - /* K15 */ be_nested_str_weak(stop_iteration), - /* K16 */ be_nested_str_weak(NON_BRIDGE_VENDOR), - /* K17 */ be_nested_str_weak(find), - /* K18 */ be_nested_str_weak(get_admin_vendor), - /* K19 */ be_nested_str_weak(device), - /* K20 */ be_nested_str_weak(disable_bridge_mode), - /* K21 */ be_nested_str_weak(string), - /* K22 */ be_nested_str_weak(BRIDGE), - /* K23 */ be_nested_str_weak(http_remote), - /* K24 */ be_nested_str_weak(get_info), - /* K25 */ be_nested_str_weak(name), - /* K26 */ be_nested_str_weak(set_or_nil), - /* K27 */ be_nested_str_weak(UTF1), - /* K28 */ be_nested_str_weak(tasmota), - /* K29 */ be_nested_str_weak(cmd), - /* K30 */ be_nested_str_weak(DeviceName), - /* K31 */ be_nested_str_weak(get_name), - /* K32 */ be_nested_str_weak(version), - /* K33 */ be_nested_str_weak(_X28), - /* K34 */ be_nested_str_weak(NULL), - /* K35 */ be_nested_str_weak(Status_X202), - /* K36 */ be_nested_str_weak(StatusFWR), - /* K37 */ be_nested_str_weak(Version), - /* K38 */ be_nested_str_weak(mac), - /* K39 */ be_nested_str_weak(wifi), - /* K40 */ be_nested_str_weak(), - /* K41 */ be_nested_str_weak(BOOL), - /* K42 */ be_nested_str_weak(reachable), - /* K43 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[244]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 - 0x1C1C0B04, // 0004 EQ R7 R5 K4 + 0xB8122000, // 0000 GETNGBL R4 K16 + 0x88100911, // 0001 GETMBR R4 R4 K17 + 0x88140512, // 0002 GETMBR R5 R2 K18 + 0x88180531, // 0003 GETMBR R6 R2 K49 + 0x1C1C0B14, // 0004 EQ R7 R5 K20 0x781E000F, // 0005 JMPF R7 #0016 - 0x1C1C0D05, // 0006 EQ R7 R6 K5 + 0x1C1C0D15, // 0006 EQ R7 R6 K21 0x781E0005, // 0007 JMPF R7 #000E - 0x8C1C0706, // 0008 GETMET R7 R3 K6 - 0x88240907, // 0009 GETMBR R9 R4 K7 - 0x58280005, // 000A LDCONST R10 K5 + 0x8C1C0732, // 0008 GETMET R7 R3 K50 + 0x88240919, // 0009 GETMBR R9 R4 K25 + 0x58280015, // 000A LDCONST R10 K21 0x7C1C0600, // 000B CALL R7 3 0x80040E00, // 000C RET 1 R7 0x70020006, // 000D JMP #0015 - 0x1C1C0D08, // 000E EQ R7 R6 K8 + 0x1C1C0D28, // 000E EQ R7 R6 K40 0x781E0004, // 000F JMPF R7 #0015 - 0x8C1C0706, // 0010 GETMET R7 R3 K6 - 0x88240909, // 0011 GETMBR R9 R4 K9 - 0x58280005, // 0012 LDCONST R10 K5 + 0x8C1C0732, // 0010 GETMET R7 R3 K50 + 0x88240933, // 0011 GETMBR R9 R4 K51 + 0x58280015, // 0012 LDCONST R10 K21 0x7C1C0600, // 0013 CALL R7 3 0x80040E00, // 0014 RET 1 R7 0x700200D4, // 0015 JMP #00EB 0x541E0003, // 0016 LDINT R7 4 0x1C1C0A07, // 0017 EQ R7 R5 R7 0x781E0004, // 0018 JMPF R7 #001E - 0x1C1C0D05, // 0019 EQ R7 R6 K5 + 0x1C1C0D15, // 0019 EQ R7 R6 K21 0x781E0001, // 001A JMPF R7 #001D 0x4C1C0000, // 001B LDNIL R7 0x80040E00, // 001C RET 1 R7 @@ -829,96 +840,96 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x541E001C, // 0022 LDINT R7 29 0x1C1C0A07, // 0023 EQ R7 R5 R7 0x781E0034, // 0024 JMPF R7 #005A - 0x1C1C0D05, // 0025 EQ R7 R6 K5 + 0x1C1C0D15, // 0025 EQ R7 R6 K21 0x781E0031, // 0026 JMPF R7 #0059 - 0x8C1C090A, // 0027 GETMET R7 R4 K10 + 0x8C1C0934, // 0027 GETMET R7 R4 K52 0x7C1C0200, // 0028 CALL R7 1 - 0x8820010B, // 0029 GETMBR R8 R0 K11 + 0x88200135, // 0029 GETMBR R8 R0 K53 0x60240010, // 002A GETGBL R9 G16 - 0x8C28110C, // 002B GETMET R10 R8 K12 + 0x8C281136, // 002B GETMET R10 R8 K54 0x7C280200, // 002C CALL R10 1 0x7C240200, // 002D CALL R9 1 0xA802000E, // 002E EXBLK 0 #003E 0x5C281200, // 002F MOVE R10 R9 0x7C280000, // 0030 CALL R10 0 - 0x8C2C0F0D, // 0031 GETMET R11 R7 K13 + 0x8C2C0F37, // 0031 GETMET R11 R7 K55 0x7C2C0200, // 0032 CALL R11 1 - 0x8C30170E, // 0033 GETMET R12 R11 K14 - 0x58380005, // 0034 LDCONST R14 K5 - 0x883C0907, // 0035 GETMBR R15 R4 K7 + 0x8C301718, // 0033 GETMET R12 R11 K24 + 0x58380015, // 0034 LDCONST R14 K21 + 0x883C0919, // 0035 GETMBR R15 R4 K25 0x5C401400, // 0036 MOVE R16 R10 0x7C300800, // 0037 CALL R12 4 - 0x8C30170E, // 0038 GETMET R12 R11 K14 - 0x58380008, // 0039 LDCONST R14 K8 - 0x883C0907, // 003A GETMBR R15 R4 K7 + 0x8C301718, // 0038 GETMET R12 R11 K24 + 0x58380028, // 0039 LDCONST R14 K40 + 0x883C0919, // 003A GETMBR R15 R4 K25 0x9440100A, // 003B GETIDX R16 R8 R10 0x7C300800, // 003C CALL R12 4 0x7001FFF0, // 003D JMP #002F - 0x5824000F, // 003E LDCONST R9 K15 + 0x58240038, // 003E LDCONST R9 K56 0xAC240200, // 003F CATCH R9 1 0 0xB0080000, // 0040 RAISE 2 R0 R0 - 0x88240110, // 0041 GETMBR R9 R0 K16 - 0x8C241311, // 0042 GETMET R9 R9 K17 - 0x8C2C0312, // 0043 GETMET R11 R1 K18 + 0x88240139, // 0041 GETMBR R9 R0 K57 + 0x8C24133A, // 0042 GETMET R9 R9 K58 + 0x8C2C033B, // 0043 GETMET R11 R1 K59 0x7C2C0200, // 0044 CALL R11 1 0x7C240400, // 0045 CALL R9 2 0x4C280000, // 0046 LDNIL R10 0x1C24120A, // 0047 EQ R9 R9 R10 0x7826000E, // 0048 JMPF R9 #0058 - 0x88240113, // 0049 GETMBR R9 R0 K19 - 0x88241314, // 004A GETMBR R9 R9 K20 + 0x8824011C, // 0049 GETMBR R9 R0 K28 + 0x8824133C, // 004A GETMBR R9 R9 K60 0x7426000B, // 004B JMPT R9 #0058 - 0x8C240F0D, // 004C GETMET R9 R7 K13 + 0x8C240F37, // 004C GETMET R9 R7 K55 0x7C240200, // 004D CALL R9 1 - 0x8C28130E, // 004E GETMET R10 R9 K14 - 0x58300005, // 004F LDCONST R12 K5 - 0x88340907, // 0050 GETMBR R13 R4 K7 + 0x8C281318, // 004E GETMET R10 R9 K24 + 0x58300015, // 004F LDCONST R12 K21 + 0x88340919, // 0050 GETMBR R13 R4 K25 0x543A0012, // 0051 LDINT R14 19 0x7C280800, // 0052 CALL R10 4 - 0x8C28130E, // 0053 GETMET R10 R9 K14 - 0x58300008, // 0054 LDCONST R12 K8 - 0x88340907, // 0055 GETMBR R13 R4 K7 - 0x58380008, // 0056 LDCONST R14 K8 + 0x8C281318, // 0053 GETMET R10 R9 K24 + 0x58300028, // 0054 LDCONST R12 K40 + 0x88340919, // 0055 GETMBR R13 R4 K25 + 0x58380028, // 0056 LDCONST R14 K40 0x7C280800, // 0057 CALL R10 4 0x80040E00, // 0058 RET 1 R7 0x70020090, // 0059 JMP #00EB 0x541E0038, // 005A LDINT R7 57 0x1C1C0A07, // 005B EQ R7 R5 R7 0x781E008D, // 005C JMPF R7 #00EB - 0xA41E2A00, // 005D IMPORT R7 K21 - 0x1C200D04, // 005E EQ R8 R6 K4 + 0xA41E7A00, // 005D IMPORT R7 K61 + 0x1C200D14, // 005E EQ R8 R6 K20 0x78220018, // 005F JMPF R8 #0079 - 0x88200116, // 0060 GETMBR R8 R0 K22 + 0x8820010A, // 0060 GETMBR R8 R0 K10 0x7822000B, // 0061 JMPF R8 #006E - 0x88200117, // 0062 GETMBR R8 R0 K23 - 0x8C201118, // 0063 GETMET R8 R8 K24 + 0x88200100, // 0062 GETMBR R8 R0 K0 + 0x8C20113E, // 0063 GETMET R8 R8 K62 0x7C200200, // 0064 CALL R8 1 - 0x8C201111, // 0065 GETMET R8 R8 K17 - 0x58280019, // 0066 LDCONST R10 K25 + 0x8C20113A, // 0065 GETMET R8 R8 K58 + 0x5828003F, // 0066 LDCONST R10 K63 0x7C200400, // 0067 CALL R8 2 - 0x8C24071A, // 0068 GETMET R9 R3 K26 - 0x882C091B, // 0069 GETMBR R11 R4 K27 + 0x8C240740, // 0068 GETMET R9 R3 K64 + 0x882C0941, // 0069 GETMBR R11 R4 K65 0x5C301000, // 006A MOVE R12 R8 0x7C240600, // 006B CALL R9 3 0x80041200, // 006C RET 1 R9 0x70020009, // 006D JMP #0078 - 0x8C200706, // 006E GETMET R8 R3 K6 - 0x8828091B, // 006F GETMBR R10 R4 K27 - 0xB82E3800, // 0070 GETNGBL R11 K28 - 0x8C2C171D, // 0071 GETMET R11 R11 K29 - 0x5834001E, // 0072 LDCONST R13 K30 + 0x8C200732, // 006E GETMET R8 R3 K50 + 0x88280941, // 006F GETMBR R10 R4 K65 + 0xB82E8400, // 0070 GETNGBL R11 K66 + 0x8C2C1743, // 0071 GETMET R11 R11 K67 + 0x58340044, // 0072 LDCONST R13 K68 0x50380200, // 0073 LDBOOL R14 1 0 0x7C2C0600, // 0074 CALL R11 3 - 0x942C171E, // 0075 GETIDX R11 R11 K30 + 0x942C1744, // 0075 GETIDX R11 R11 K68 0x7C200600, // 0076 CALL R8 3 0x80041000, // 0077 RET 1 R8 0x70020071, // 0078 JMP #00EB 0x54220004, // 0079 LDINT R8 5 0x1C200C08, // 007A EQ R8 R6 R8 0x78220006, // 007B JMPF R8 #0083 - 0x8C200706, // 007C GETMET R8 R3 K6 - 0x8828091B, // 007D GETMBR R10 R4 K27 - 0x8C2C011F, // 007E GETMET R11 R0 K31 + 0x8C200732, // 007C GETMET R8 R3 K50 + 0x88280941, // 007D GETMBR R10 R4 K65 + 0x8C2C012E, // 007E GETMET R11 R0 K46 0x7C2C0200, // 007F CALL R11 1 0x7C200600, // 0080 CALL R8 3 0x80041000, // 0081 RET 1 R8 @@ -926,54 +937,54 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x54220009, // 0083 LDINT R8 10 0x1C200C08, // 0084 EQ R8 R6 R8 0x78220033, // 0085 JMPF R8 #00BA - 0x88200116, // 0086 GETMBR R8 R0 K22 + 0x8820010A, // 0086 GETMBR R8 R0 K10 0x7822001B, // 0087 JMPF R8 #00A4 - 0x88200117, // 0088 GETMBR R8 R0 K23 - 0x8C201118, // 0089 GETMET R8 R8 K24 + 0x88200100, // 0088 GETMBR R8 R0 K0 + 0x8C20113E, // 0089 GETMET R8 R8 K62 0x7C200200, // 008A CALL R8 1 - 0x8C201111, // 008B GETMET R8 R8 K17 - 0x58280020, // 008C LDCONST R10 K32 + 0x8C20113A, // 008B GETMET R8 R8 K58 + 0x58280045, // 008C LDCONST R10 K69 0x7C200400, // 008D CALL R8 2 0x7822000E, // 008E JMPF R8 #009E - 0x8C240F11, // 008F GETMET R9 R7 K17 + 0x8C240F3A, // 008F GETMET R9 R7 K58 0x5C2C1000, // 0090 MOVE R11 R8 - 0x58300021, // 0091 LDCONST R12 K33 + 0x58300046, // 0091 LDCONST R12 K70 0x7C240600, // 0092 CALL R9 3 - 0x24281305, // 0093 GT R10 R9 K5 + 0x24281315, // 0093 GT R10 R9 K21 0x782A0002, // 0094 JMPF R10 #0098 - 0x04281308, // 0095 SUB R10 R9 K8 - 0x402A0A0A, // 0096 CONNECT R10 K5 R10 + 0x04281328, // 0095 SUB R10 R9 K40 + 0x402A2A0A, // 0096 CONNECT R10 K21 R10 0x9420100A, // 0097 GETIDX R8 R8 R10 - 0x8C280706, // 0098 GETMET R10 R3 K6 - 0x8830091B, // 0099 GETMBR R12 R4 K27 + 0x8C280732, // 0098 GETMET R10 R3 K50 + 0x88300941, // 0099 GETMBR R12 R4 K65 0x5C341000, // 009A MOVE R13 R8 0x7C280600, // 009B CALL R10 3 0x80041400, // 009C RET 1 R10 0x70020004, // 009D JMP #00A3 - 0x8C240706, // 009E GETMET R9 R3 K6 - 0x882C0922, // 009F GETMBR R11 R4 K34 + 0x8C240732, // 009E GETMET R9 R3 K50 + 0x882C0947, // 009F GETMBR R11 R4 K71 0x4C300000, // 00A0 LDNIL R12 0x7C240600, // 00A1 CALL R9 3 0x80041200, // 00A2 RET 1 R9 0x70020014, // 00A3 JMP #00B9 - 0xB8223800, // 00A4 GETNGBL R8 K28 - 0x8C20111D, // 00A5 GETMET R8 R8 K29 - 0x58280023, // 00A6 LDCONST R10 K35 + 0xB8228400, // 00A4 GETNGBL R8 K66 + 0x8C201143, // 00A5 GETMET R8 R8 K67 + 0x58280048, // 00A6 LDCONST R10 K72 0x502C0200, // 00A7 LDBOOL R11 1 0 0x7C200600, // 00A8 CALL R8 3 - 0x94201124, // 00A9 GETIDX R8 R8 K36 - 0x94201125, // 00AA GETIDX R8 R8 K37 - 0x8C240F11, // 00AB GETMET R9 R7 K17 + 0x94201149, // 00A9 GETIDX R8 R8 K73 + 0x9420114A, // 00AA GETIDX R8 R8 K74 + 0x8C240F3A, // 00AB GETMET R9 R7 K58 0x5C2C1000, // 00AC MOVE R11 R8 - 0x58300021, // 00AD LDCONST R12 K33 + 0x58300046, // 00AD LDCONST R12 K70 0x7C240600, // 00AE CALL R9 3 - 0x24281305, // 00AF GT R10 R9 K5 + 0x24281315, // 00AF GT R10 R9 K21 0x782A0002, // 00B0 JMPF R10 #00B4 - 0x04281308, // 00B1 SUB R10 R9 K8 - 0x402A0A0A, // 00B2 CONNECT R10 K5 R10 + 0x04281328, // 00B1 SUB R10 R9 K40 + 0x402A2A0A, // 00B2 CONNECT R10 K21 R10 0x9420100A, // 00B3 GETIDX R8 R8 R10 - 0x8C280706, // 00B4 GETMET R10 R3 K6 - 0x8830091B, // 00B5 GETMBR R12 R4 K27 + 0x8C280732, // 00B4 GETMET R10 R3 K50 + 0x88300941, // 00B5 GETMBR R12 R4 K65 0x5C341000, // 00B6 MOVE R13 R8 0x7C280600, // 00B7 CALL R10 3 0x80041400, // 00B8 RET 1 R10 @@ -984,28 +995,28 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x54220011, // 00BD LDINT R8 18 0x1C200C08, // 00BE EQ R8 R6 R8 0x78220019, // 00BF JMPF R8 #00DA - 0x88200116, // 00C0 GETMBR R8 R0 K22 + 0x8820010A, // 00C0 GETMBR R8 R0 K10 0x7822000B, // 00C1 JMPF R8 #00CE - 0x88200117, // 00C2 GETMBR R8 R0 K23 - 0x8C201118, // 00C3 GETMET R8 R8 K24 + 0x88200100, // 00C2 GETMBR R8 R0 K0 + 0x8C20113E, // 00C3 GETMET R8 R8 K62 0x7C200200, // 00C4 CALL R8 1 - 0x8C201111, // 00C5 GETMET R8 R8 K17 - 0x58280026, // 00C6 LDCONST R10 K38 + 0x8C20113A, // 00C5 GETMET R8 R8 K58 + 0x5828004B, // 00C6 LDCONST R10 K75 0x7C200400, // 00C7 CALL R8 2 - 0x8C24071A, // 00C8 GETMET R9 R3 K26 - 0x882C091B, // 00C9 GETMBR R11 R4 K27 + 0x8C240740, // 00C8 GETMET R9 R3 K64 + 0x882C0941, // 00C9 GETMBR R11 R4 K65 0x5C301000, // 00CA MOVE R12 R8 0x7C240600, // 00CB CALL R9 3 0x80041200, // 00CC RET 1 R9 0x7002000A, // 00CD JMP #00D9 - 0x8C200706, // 00CE GETMET R8 R3 K6 - 0x8828091B, // 00CF GETMBR R10 R4 K27 - 0xB82E3800, // 00D0 GETNGBL R11 K28 - 0x8C2C1727, // 00D1 GETMET R11 R11 K39 + 0x8C200732, // 00CE GETMET R8 R3 K50 + 0x88280941, // 00CF GETMBR R10 R4 K65 + 0xB82E8400, // 00D0 GETNGBL R11 K66 + 0x8C2C174C, // 00D1 GETMET R11 R11 K76 0x7C2C0200, // 00D2 CALL R11 1 - 0x8C2C1711, // 00D3 GETMET R11 R11 K17 - 0x58340026, // 00D4 LDCONST R13 K38 - 0x58380028, // 00D5 LDCONST R14 K40 + 0x8C2C173A, // 00D3 GETMET R11 R11 K58 + 0x5834004B, // 00D4 LDCONST R13 K75 + 0x5838000F, // 00D5 LDCONST R14 K15 0x7C2C0600, // 00D6 CALL R11 3 0x7C200600, // 00D7 CALL R8 3 0x80041000, // 00D8 RET 1 R8 @@ -1013,24 +1024,24 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x54220010, // 00DA LDINT R8 17 0x1C200C08, // 00DB EQ R8 R6 R8 0x7822000D, // 00DC JMPF R8 #00EB - 0x88200116, // 00DD GETMBR R8 R0 K22 + 0x8820010A, // 00DD GETMBR R8 R0 K10 0x78220006, // 00DE JMPF R8 #00E6 - 0x8C200706, // 00DF GETMET R8 R3 K6 - 0x88280929, // 00E0 GETMBR R10 R4 K41 - 0x882C0117, // 00E1 GETMBR R11 R0 K23 - 0x882C172A, // 00E2 GETMBR R11 R11 K42 + 0x8C200732, // 00DF GETMET R8 R3 K50 + 0x8828094D, // 00E0 GETMBR R10 R4 K77 + 0x882C0100, // 00E1 GETMBR R11 R0 K0 + 0x882C174E, // 00E2 GETMBR R11 R11 K78 0x7C200600, // 00E3 CALL R8 3 0x80041000, // 00E4 RET 1 R8 0x70020004, // 00E5 JMP #00EB - 0x8C200706, // 00E6 GETMET R8 R3 K6 - 0x88280929, // 00E7 GETMBR R10 R4 K41 - 0x582C0008, // 00E8 LDCONST R11 K8 + 0x8C200732, // 00E6 GETMET R8 R3 K50 + 0x8828094D, // 00E7 GETMBR R10 R4 K77 + 0x582C0028, // 00E8 LDCONST R11 K40 0x7C200600, // 00E9 CALL R8 3 0x80041000, // 00EA RET 1 R8 0x601C0003, // 00EB GETGBL R7 G3 0x5C200000, // 00EC MOVE R8 R0 0x7C1C0200, // 00ED CALL R7 1 - 0x8C1C0F2B, // 00EE GETMET R7 R7 K43 + 0x8C1C0F4F, // 00EE GETMET R7 R7 K79 0x5C240200, // 00EF MOVE R9 R1 0x5C280400, // 00F0 MOVE R10 R2 0x5C2C0600, // 00F1 MOVE R11 R3 @@ -1049,46 +1060,36 @@ be_local_closure(class_Matter_Plugin_Device_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(ARG_HTTP), - /* K4 */ be_nested_str_weak(http_remote), - /* K5 */ be_nested_str_weak(device), - /* K6 */ be_nested_str_weak(register_http_remote), - /* K7 */ be_nested_str_weak(PROBE_TIMEOUT), - /* K8 */ be_nested_str_weak(register_cmd_cb), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100950, // 0003 GETMET R4 R4 K80 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x8810010A, // 0008 GETMBR R4 R0 K10 0x7812000A, // 0009 JMPF R4 #0015 - 0x8C100702, // 000A GETMET R4 R3 K2 - 0x88180103, // 000B GETMBR R6 R0 K3 + 0x8C10073A, // 000A GETMET R4 R3 K58 + 0x88180151, // 000B GETMBR R6 R0 K81 0x7C100400, // 000C CALL R4 2 - 0x88140105, // 000D GETMBR R5 R0 K5 - 0x8C140B06, // 000E GETMET R5 R5 K6 + 0x8814011C, // 000D GETMBR R5 R0 K28 + 0x8C140B52, // 000E GETMET R5 R5 K82 0x5C1C0800, // 000F MOVE R7 R4 - 0x88200107, // 0010 GETMBR R8 R0 K7 + 0x88200153, // 0010 GETMBR R8 R0 K83 0x7C140600, // 0011 CALL R5 3 - 0x90020805, // 0012 SETMBR R0 K4 R5 - 0x8C140108, // 0013 GETMET R5 R0 K8 + 0x90020005, // 0012 SETMBR R0 K0 R5 + 0x8C140154, // 0013 GETMET R5 R0 K84 0x7C140200, // 0014 CALL R5 1 0x80000000, // 0015 RET 0 }) @@ -1104,7 +1105,7 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1167,145 +1168,102 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[42]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(json), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_nested_str_weak(JSON_NAME), - /* K5 */ be_nested_str_weak(contains), - /* K6 */ be_nested_str_weak(shadow_value), - /* K7 */ be_nested_str_weak(dump), - /* K8 */ be_nested_str_weak(null), - /* K9 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s), - /* K10 */ be_nested_str_weak(shadow_onoff), - /* K11 */ be_nested_str_weak(Power), - /* K12 */ be_nested_str_weak(shadow_bri), - /* K13 */ be_nested_str_weak(Bri), - /* K14 */ be_nested_str_weak(shadow_ct), - /* K15 */ be_nested_str_weak(CT), - /* K16 */ be_nested_str_weak(shadow_hue), - /* K17 */ be_nested_str_weak(Hue), - /* K18 */ be_nested_str_weak(shadow_sat), - /* K19 */ be_nested_str_weak(Sat), - /* K20 */ be_nested_str_weak(shadow_shutter_pos), - /* K21 */ be_nested_str_weak(ShutterPos), - /* K22 */ be_nested_str_weak(shadow_shutter_target), - /* K23 */ be_nested_str_weak(ShutterTarget), - /* K24 */ be_nested_str_weak(shadow_shutter_tilt), - /* K25 */ be_nested_str_weak(ShutterTilt), - /* K26 */ be_nested_str_weak(shadow_contact), - /* K27 */ be_nested_str_weak(Contact), - /* K28 */ be_nested_str_weak(shadow_occupancy), - /* K29 */ be_nested_str_weak(Occupancy), - /* K30 */ be_nested_str_weak(shadow_air_quality), - /* K31 */ be_nested_str_weak(AirQuality), - /* K32 */ be_nested_str_weak(shadow_co2), - /* K33 */ be_nested_str_weak(CO2), - /* K34 */ be_nested_str_weak(shadow_pm1), - /* K35 */ be_nested_str_weak(PM1), - /* K36 */ be_nested_str_weak(shadow_pm2_5), - /* K37 */ be_nested_str_weak(PM2_X2E5), - /* K38 */ be_nested_str_weak(shadow_pm10), - /* K39 */ be_nested_str_weak(PM10), - /* K40 */ be_nested_str_weak(shadow_tvoc), - /* K41 */ be_nested_str_weak(TVOC), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(append_state_json), &be_const_str_solidified, ( &(const binstruction[95]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x580C0002, // 0002 LDCONST R3 K2 + 0xA406AA00, // 0000 IMPORT R1 K85 + 0xA40A4000, // 0001 IMPORT R2 K32 + 0x580C000F, // 0002 LDCONST R3 K15 0x84100000, // 0003 CLOSURE R4 P0 - 0x8C140303, // 0004 GETMET R5 R1 K3 + 0x8C140356, // 0004 GETMET R5 R1 K86 0x5C1C0000, // 0005 MOVE R7 R0 - 0x58200004, // 0006 LDCONST R8 K4 + 0x58200057, // 0006 LDCONST R8 K87 0x7C140600, // 0007 CALL R5 3 0x78160013, // 0008 JMPF R5 #001D - 0x8C180305, // 0009 GETMET R6 R1 K5 + 0x8C180358, // 0009 GETMET R6 R1 K88 0x5C200000, // 000A MOVE R8 R0 - 0x58240006, // 000B LDCONST R9 K6 + 0x58240059, // 000B LDCONST R9 K89 0x7C180600, // 000C CALL R6 3 0x781A000E, // 000D JMPF R6 #001D - 0x88180106, // 000E GETMBR R6 R0 K6 + 0x88180159, // 000E GETMBR R6 R0 K89 0x4C1C0000, // 000F LDNIL R7 0x20180C07, // 0010 NE R6 R6 R7 0x781A0003, // 0011 JMPF R6 #0016 - 0x8C180507, // 0012 GETMET R6 R2 K7 - 0x88200106, // 0013 GETMBR R8 R0 K6 + 0x8C18055A, // 0012 GETMET R6 R2 K90 + 0x88200159, // 0013 GETMBR R8 R0 K89 0x7C180400, // 0014 CALL R6 2 0x70020000, // 0015 JMP #0017 - 0x58180008, // 0016 LDCONST R6 K8 + 0x5818005B, // 0016 LDCONST R6 K91 0x601C0018, // 0017 GETGBL R7 G24 - 0x58200009, // 0018 LDCONST R8 K9 + 0x5820005C, // 0018 LDCONST R8 K92 0x5C240A00, // 0019 MOVE R9 R5 0x5C280C00, // 001A MOVE R10 R6 0x7C1C0600, // 001B CALL R7 3 0x000C0607, // 001C ADD R3 R3 R7 0x5C180800, // 001D MOVE R6 R4 - 0x581C000A, // 001E LDCONST R7 K10 - 0x5820000B, // 001F LDCONST R8 K11 + 0x581C005D, // 001E LDCONST R7 K93 + 0x5820005E, // 001F LDCONST R8 K94 0x7C180400, // 0020 CALL R6 2 0x5C180800, // 0021 MOVE R6 R4 - 0x581C000C, // 0022 LDCONST R7 K12 - 0x5820000D, // 0023 LDCONST R8 K13 + 0x581C005F, // 0022 LDCONST R7 K95 + 0x58200060, // 0023 LDCONST R8 K96 0x7C180400, // 0024 CALL R6 2 0x5C180800, // 0025 MOVE R6 R4 - 0x581C000E, // 0026 LDCONST R7 K14 - 0x5820000F, // 0027 LDCONST R8 K15 + 0x581C0061, // 0026 LDCONST R7 K97 + 0x58200062, // 0027 LDCONST R8 K98 0x7C180400, // 0028 CALL R6 2 0x5C180800, // 0029 MOVE R6 R4 - 0x581C0010, // 002A LDCONST R7 K16 - 0x58200011, // 002B LDCONST R8 K17 + 0x581C0063, // 002A LDCONST R7 K99 + 0x58200064, // 002B LDCONST R8 K100 0x7C180400, // 002C CALL R6 2 0x5C180800, // 002D MOVE R6 R4 - 0x581C0012, // 002E LDCONST R7 K18 - 0x58200013, // 002F LDCONST R8 K19 + 0x581C0065, // 002E LDCONST R7 K101 + 0x58200066, // 002F LDCONST R8 K102 0x7C180400, // 0030 CALL R6 2 0x5C180800, // 0031 MOVE R6 R4 - 0x581C0014, // 0032 LDCONST R7 K20 - 0x58200015, // 0033 LDCONST R8 K21 + 0x581C0067, // 0032 LDCONST R7 K103 + 0x58200068, // 0033 LDCONST R8 K104 0x7C180400, // 0034 CALL R6 2 0x5C180800, // 0035 MOVE R6 R4 - 0x581C0016, // 0036 LDCONST R7 K22 - 0x58200017, // 0037 LDCONST R8 K23 + 0x581C0069, // 0036 LDCONST R7 K105 + 0x5820006A, // 0037 LDCONST R8 K106 0x7C180400, // 0038 CALL R6 2 0x5C180800, // 0039 MOVE R6 R4 - 0x581C0018, // 003A LDCONST R7 K24 - 0x58200019, // 003B LDCONST R8 K25 + 0x581C006B, // 003A LDCONST R7 K107 + 0x5820006C, // 003B LDCONST R8 K108 0x7C180400, // 003C CALL R6 2 0x5C180800, // 003D MOVE R6 R4 - 0x581C001A, // 003E LDCONST R7 K26 - 0x5820001B, // 003F LDCONST R8 K27 + 0x581C006D, // 003E LDCONST R7 K109 + 0x5820006E, // 003F LDCONST R8 K110 0x7C180400, // 0040 CALL R6 2 0x5C180800, // 0041 MOVE R6 R4 - 0x581C001C, // 0042 LDCONST R7 K28 - 0x5820001D, // 0043 LDCONST R8 K29 + 0x581C006F, // 0042 LDCONST R7 K111 + 0x58200070, // 0043 LDCONST R8 K112 0x7C180400, // 0044 CALL R6 2 0x5C180800, // 0045 MOVE R6 R4 - 0x581C001E, // 0046 LDCONST R7 K30 - 0x5820001F, // 0047 LDCONST R8 K31 + 0x581C0071, // 0046 LDCONST R7 K113 + 0x58200072, // 0047 LDCONST R8 K114 0x7C180400, // 0048 CALL R6 2 0x5C180800, // 0049 MOVE R6 R4 - 0x581C0020, // 004A LDCONST R7 K32 - 0x58200021, // 004B LDCONST R8 K33 + 0x581C0073, // 004A LDCONST R7 K115 + 0x58200074, // 004B LDCONST R8 K116 0x7C180400, // 004C CALL R6 2 0x5C180800, // 004D MOVE R6 R4 - 0x581C0022, // 004E LDCONST R7 K34 - 0x58200023, // 004F LDCONST R8 K35 + 0x581C0075, // 004E LDCONST R7 K117 + 0x58200076, // 004F LDCONST R8 K118 0x7C180400, // 0050 CALL R6 2 0x5C180800, // 0051 MOVE R6 R4 - 0x581C0024, // 0052 LDCONST R7 K36 - 0x58200025, // 0053 LDCONST R8 K37 + 0x581C0077, // 0052 LDCONST R7 K119 + 0x58200078, // 0053 LDCONST R8 K120 0x7C180400, // 0054 CALL R6 2 0x5C180800, // 0055 MOVE R6 R4 - 0x581C0026, // 0056 LDCONST R7 K38 - 0x58200027, // 0057 LDCONST R8 K39 + 0x581C0079, // 0056 LDCONST R7 K121 + 0x5820007A, // 0057 LDCONST R8 K122 0x7C180400, // 0058 CALL R6 2 0x5C180800, // 0059 MOVE R6 R4 - 0x581C0028, // 005A LDCONST R7 K40 - 0x58200029, // 005B LDCONST R8 K41 + 0x581C007B, // 005A LDCONST R7 K123 + 0x5820007C, // 005B LDCONST R8 K124 0x7C180400, // 005C CALL R6 2 0xA0000000, // 005D CLOSE R0 0x80040600, // 005E RET 1 R3 @@ -1322,20 +1280,17 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ be_nested_proto( 12, /* nstack */ 7, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin_Device, /* shared constants */ be_str_weak(_parse_sensor_entry), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x8C1C033A, // 0000 GETMET R7 R1 K58 0x5C240400, // 0001 MOVE R9 R2 0x7C1C0400, // 0002 CALL R7 2 0x4C200000, // 0003 LDNIL R8 @@ -1347,7 +1302,7 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ 0x5C1C1000, // 0009 MOVE R7 R8 0x20200E03, // 000A NE R8 R7 R3 0x78220003, // 000B JMPF R8 #0010 - 0x8C200101, // 000C GETMET R8 R0 K1 + 0x8C20017D, // 000C GETMET R8 R0 K125 0x5C280A00, // 000D MOVE R10 R5 0x5C2C0C00, // 000E MOVE R11 R6 0x7C200600, // 000F CALL R8 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index a976555ce..be7d425a7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -3,6 +3,183 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Root' ktab size: 173, total: 225 (saved 416 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Root[173] = { + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(U8), + /* K8 */ be_nested_str_weak(_breadcrumb), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(Matter_TLV_struct), + /* K11 */ be_nested_str_weak(add_TLV), + /* K12 */ be_nested_str_weak(U2), + /* K13 */ be_const_int(2), + /* K14 */ be_nested_str_weak(U1), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str_weak(BOOL), + /* K17 */ be_nested_str_weak(Matter_TLV_array), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(eth), + /* K20 */ be_nested_str_weak(up), + /* K21 */ be_nested_str_weak(add_struct), + /* K22 */ be_nested_str_weak(UTF1), + /* K23 */ be_nested_str_weak(ethernet), + /* K24 */ be_nested_str_weak(NULL), + /* K25 */ be_nested_str_weak(fromhex), + /* K26 */ be_nested_str_weak(replace), + /* K27 */ be_nested_str_weak(find), + /* K28 */ be_nested_str_weak(mac), + /* K29 */ be_nested_str_weak(), + /* K30 */ be_nested_str_weak(_X3A), + /* K31 */ be_nested_str_weak(B1), + /* K32 */ be_nested_str_weak(add_array), + /* K33 */ be_nested_str_weak(get_ip_bytes), + /* K34 */ be_nested_str_weak(ip), + /* K35 */ be_nested_str_weak(ip6local), + /* K36 */ be_nested_str_weak(ip6), + /* K37 */ be_nested_str_weak(wifi), + /* K38 */ be_nested_str_weak(cmd), + /* K39 */ be_nested_str_weak(Status_X201), + /* K40 */ be_nested_str_weak(StatusPRM), + /* K41 */ be_nested_str_weak(BootCount), + /* K42 */ be_nested_str_weak(U4), + /* K43 */ be_nested_str_weak(Status_X2011), + /* K44 */ be_nested_str_weak(StatusSTS), + /* K45 */ be_nested_str_weak(UptimeSec), + /* K46 */ be_nested_str_weak(int64), + /* K47 */ be_nested_str_weak(rtc_utc), + /* K48 */ be_const_int(1000000), + /* K49 */ be_nested_str_weak(rtc), + /* K50 */ be_nested_str_weak(local), + /* K51 */ be_nested_str_weak(ack_request), + /* K52 */ be_nested_str_weak(fabric_filtered), + /* K53 */ be_nested_str_weak(get_fabric), + /* K54 */ be_nested_str_weak(device), + /* K55 */ be_nested_str_weak(sessions), + /* K56 */ be_nested_str_weak(active_fabrics), + /* K57 */ be_nested_str_weak(is_marked_for_deletion), + /* K58 */ be_nested_str_weak(B2), + /* K59 */ be_nested_str_weak(get_noc), + /* K60 */ be_nested_str_weak(get_icac), + /* K61 */ be_nested_str_weak(get_fabric_index), + /* K62 */ be_nested_str_weak(stop_iteration), + /* K63 */ be_nested_str_weak(parse), + /* K64 */ be_nested_str_weak(get_ca), + /* K65 */ be_nested_str_weak(findsubval), + /* K66 */ be_nested_str_weak(get_admin_vendor), + /* K67 */ be_nested_str_weak(get_fabric_id_as_int64), + /* K68 */ be_nested_str_weak(get_device_id_as_int64), + /* K69 */ be_nested_str_weak(get_fabric_label), + /* K70 */ be_nested_str_weak(Fabric), + /* K71 */ be_nested_str_weak(_MAX_CASE), + /* K72 */ be_nested_str_weak(count_active_fabrics), + /* K73 */ be_nested_str_weak(_fabric), + /* K74 */ be_nested_str_weak(is_commissioning_open), + /* K75 */ be_nested_str_weak(is_root_commissioning_open), + /* K76 */ be_nested_str_weak(commissioning_admin_fabric), + /* K77 */ be_nested_str_weak(set_or_nil), + /* K78 */ be_nested_str_weak(Tasmota), + /* K79 */ be_nested_str_weak(VENDOR_ID), + /* K80 */ be_nested_str_weak(DeviceName), + /* K81 */ be_nested_str_weak(FriendlyName), + /* K82 */ be_nested_str_weak(FriendlyName1), + /* K83 */ be_nested_str_weak(XX), + /* K84 */ be_nested_str_weak(Status_X202), + /* K85 */ be_nested_str_weak(StatusFWR), + /* K86 */ be_nested_str_weak(Hardware), + /* K87 */ be_nested_str_weak(version), + /* K88 */ be_nested_str_weak(Version), + /* K89 */ be_nested_str_weak(_X28), + /* K90 */ be_nested_str_weak(locale), + /* K91 */ be_nested_str_weak(create_TLV), + /* K92 */ be_nested_str_weak(get_active_endpoints), + /* K93 */ be_nested_str_weak(disable_bridge_mode), + /* K94 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), + /* K95 */ be_nested_str_weak(read_attribute), + /* K96 */ be_nested_str_weak(int), + /* K97 */ be_nested_str_weak(attribute_updated), + /* K98 */ be_nested_str_weak(status), + /* K99 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K100 */ be_nested_str_weak(INVALID_ACTION), + /* K101 */ be_nested_str_weak(init), + /* K102 */ be_nested_str_weak(publish_event), + /* K103 */ be_nested_str_weak(EVENT_CRITICAL), + /* K104 */ be_nested_str_weak(Matter_TLV_item), + /* K105 */ be_nested_str_weak(crypto), + /* K106 */ be_nested_str_weak(command), + /* K107 */ be_const_int(3), + /* K108 */ be_nested_str_weak(fabric_completed), + /* K109 */ be_nested_str_weak(set_no_expiration), + /* K110 */ be_nested_str_weak(save), + /* K111 */ be_nested_str_weak(start_commissioning_complete_deferred), + /* K112 */ be_nested_str_weak(context_error), + /* K113 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), + /* K114 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K115 */ be_nested_str_weak(DAC_Cert_FFF1_8000), + /* K116 */ be_nested_str_weak(PAI_Cert_FFF1), + /* K117 */ be_nested_str_weak(CD_FFF1_8000), + /* K118 */ be_nested_str_weak(tlv2raw), + /* K119 */ be_nested_str_weak(get_ac), + /* K120 */ be_nested_str_weak(EC_P256), + /* K121 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K122 */ be_nested_str_weak(DAC_Priv_FFF1_8000), + /* K123 */ be_nested_str_weak(gen_CSR), + /* K124 */ be_nested_str_weak(set_temp_ca), + /* K125 */ be_nested_str_weak(SUCCESS), + /* K126 */ be_nested_str_weak(log), + /* K127 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), + /* K128 */ be_nested_str_weak(get_temp_ca), + /* K129 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), + /* K130 */ be_nested_str_weak(create_fabric), + /* K131 */ be_nested_str_weak(set_ca), + /* K132 */ be_nested_str_weak(set_noc_icac), + /* K133 */ be_nested_str_weak(set_ipk_epoch_key), + /* K134 */ be_nested_str_weak(set_admin_subject_vendor), + /* K135 */ be_nested_str_weak(set_pk), + /* K136 */ be_nested_str_weak(get_pk), + /* K137 */ be_nested_str_weak(findsub), + /* K138 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), + /* K139 */ be_nested_str_weak(fromu32), + /* K140 */ be_nested_str_weak(tobytes), + /* K141 */ be_nested_str_weak(get_temp_ca_pub), + /* K142 */ be_const_int(2147483647), + /* K143 */ be_nested_str_weak(fromstring), + /* K144 */ be_nested_str_weak(CompressedFabric), + /* K145 */ be_nested_str_weak(HKDF_SHA256), + /* K146 */ be_nested_str_weak(copy), + /* K147 */ be_nested_str_weak(reverse), + /* K148 */ be_nested_str_weak(derive), + /* K149 */ be_nested_str_weak(set_fabric_device), + /* K150 */ be_nested_str_weak(fabric_candidate), + /* K151 */ be_nested_str_weak(start_operational_discovery_deferred), + /* K152 */ be_nested_str_weak(is_PASE), + /* K153 */ be_nested_str_weak(set_expire_in_seconds), + /* K154 */ be_nested_str_weak(log_new_fabric), + /* K155 */ be_nested_str_weak(assign_fabric_index), + /* K156 */ be_nested_str_weak(set_fabric_label), + /* K157 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), + /* K158 */ be_nested_str_weak(get_fabric_id), + /* K159 */ be_nested_str_weak(tohex), + /* K160 */ be_nested_str_weak(fabric_index_X3A), + /* K161 */ be_nested_str_weak(mark_for_deletion), + /* K162 */ be_nested_str_weak(set_timer), + /* K163 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), + /* K164 */ be_nested_str_weak(_X29_X20not_X20found), + /* K165 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), + /* K166 */ be_nested_str_weak(INVALID_DATA_TYPE), + /* K167 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), + /* K168 */ be_nested_str_weak(start_basic_commissioning), + /* K169 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), + /* K170 */ be_nested_str_weak(start_root_basic_commissioning), + /* K171 */ be_nested_str_weak(stop_basic_commissioning), + /* K172 */ be_nested_str_weak(invoke_request), +}; + extern const bclass be_class_Matter_Plugin_Root; @@ -13,110 +190,13 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */ be_nested_proto( 25, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[96]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(attribute), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U8), - /* K8 */ be_nested_str_weak(_breadcrumb), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(Matter_TLV_struct), - /* K11 */ be_nested_str_weak(add_TLV), - /* K12 */ be_nested_str_weak(U2), - /* K13 */ be_const_int(2), - /* K14 */ be_nested_str_weak(U1), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str_weak(BOOL), - /* K17 */ be_nested_str_weak(Matter_TLV_array), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(eth), - /* K20 */ be_nested_str_weak(up), - /* K21 */ be_nested_str_weak(add_struct), - /* K22 */ be_nested_str_weak(UTF1), - /* K23 */ be_nested_str_weak(ethernet), - /* K24 */ be_nested_str_weak(NULL), - /* K25 */ be_nested_str_weak(fromhex), - /* K26 */ be_nested_str_weak(replace), - /* K27 */ be_nested_str_weak(find), - /* K28 */ be_nested_str_weak(mac), - /* K29 */ be_nested_str_weak(), - /* K30 */ be_nested_str_weak(_X3A), - /* K31 */ be_nested_str_weak(B1), - /* K32 */ be_nested_str_weak(add_array), - /* K33 */ be_nested_str_weak(get_ip_bytes), - /* K34 */ be_nested_str_weak(ip), - /* K35 */ be_nested_str_weak(ip6local), - /* K36 */ be_nested_str_weak(ip6), - /* K37 */ be_nested_str_weak(wifi), - /* K38 */ be_nested_str_weak(cmd), - /* K39 */ be_nested_str_weak(Status_X201), - /* K40 */ be_nested_str_weak(StatusPRM), - /* K41 */ be_nested_str_weak(BootCount), - /* K42 */ be_nested_str_weak(U4), - /* K43 */ be_nested_str_weak(Status_X2011), - /* K44 */ be_nested_str_weak(StatusSTS), - /* K45 */ be_nested_str_weak(UptimeSec), - /* K46 */ be_nested_str_weak(int64), - /* K47 */ be_nested_str_weak(rtc_utc), - /* K48 */ be_const_int(1000000), - /* K49 */ be_nested_str_weak(rtc), - /* K50 */ be_nested_str_weak(local), - /* K51 */ be_nested_str_weak(ack_request), - /* K52 */ be_nested_str_weak(fabric_filtered), - /* K53 */ be_nested_str_weak(get_fabric), - /* K54 */ be_nested_str_weak(device), - /* K55 */ be_nested_str_weak(sessions), - /* K56 */ be_nested_str_weak(active_fabrics), - /* K57 */ be_nested_str_weak(is_marked_for_deletion), - /* K58 */ be_nested_str_weak(B2), - /* K59 */ be_nested_str_weak(get_noc), - /* K60 */ be_nested_str_weak(get_icac), - /* K61 */ be_nested_str_weak(get_fabric_index), - /* K62 */ be_nested_str_weak(stop_iteration), - /* K63 */ be_nested_str_weak(parse), - /* K64 */ be_nested_str_weak(get_ca), - /* K65 */ be_nested_str_weak(findsubval), - /* K66 */ be_nested_str_weak(get_admin_vendor), - /* K67 */ be_nested_str_weak(get_fabric_id_as_int64), - /* K68 */ be_nested_str_weak(get_device_id_as_int64), - /* K69 */ be_nested_str_weak(get_fabric_label), - /* K70 */ be_nested_str_weak(Fabric), - /* K71 */ be_nested_str_weak(_MAX_CASE), - /* K72 */ be_nested_str_weak(count_active_fabrics), - /* K73 */ be_nested_str_weak(_fabric), - /* K74 */ be_nested_str_weak(is_commissioning_open), - /* K75 */ be_nested_str_weak(is_root_commissioning_open), - /* K76 */ be_nested_str_weak(commissioning_admin_fabric), - /* K77 */ be_nested_str_weak(set_or_nil), - /* K78 */ be_nested_str_weak(Tasmota), - /* K79 */ be_nested_str_weak(VENDOR_ID), - /* K80 */ be_nested_str_weak(DeviceName), - /* K81 */ be_nested_str_weak(FriendlyName), - /* K82 */ be_nested_str_weak(FriendlyName1), - /* K83 */ be_nested_str_weak(XX), - /* K84 */ be_nested_str_weak(Status_X202), - /* K85 */ be_nested_str_weak(StatusFWR), - /* K86 */ be_nested_str_weak(Hardware), - /* K87 */ be_nested_str_weak(version), - /* K88 */ be_nested_str_weak(Version), - /* K89 */ be_nested_str_weak(_X28), - /* K90 */ be_nested_str_weak(locale), - /* K91 */ be_nested_str_weak(create_TLV), - /* K92 */ be_nested_str_weak(get_active_endpoints), - /* K93 */ be_nested_str_weak(disable_bridge_mode), - /* K94 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), - /* K95 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Root, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[926]) { /* code */ @@ -1059,67 +1139,53 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(int), - /* K6 */ be_nested_str_weak(int64), - /* K7 */ be_nested_str_weak(_breadcrumb), - /* K8 */ be_nested_str_weak(attribute_updated), - /* K9 */ be_nested_str_weak(status), - /* K10 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(INVALID_ACTION), - }), + &be_ktab_class_Matter_Plugin_Root, /* shared constants */ be_str_weak(write_attribute), &be_const_str_solidified, ( &(const binstruction[100]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120200, // 0000 GETNGBL R4 K1 + 0x88100902, // 0001 GETMBR R4 R4 K2 + 0x88140503, // 0002 GETMBR R5 R2 K3 + 0x88180504, // 0003 GETMBR R6 R2 K4 0x541E002F, // 0004 LDINT R7 48 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0019, // 0006 JMPF R7 #0021 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D05, // 0007 EQ R7 R6 K5 0x781E0016, // 0008 JMPF R7 #0020 0x601C0004, // 0009 GETGBL R7 G4 0x5C200600, // 000A MOVE R8 R3 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0F05, // 000C EQ R7 R7 K5 + 0x1C1C0F60, // 000C EQ R7 R7 K96 0x741E0004, // 000D JMPT R7 #0013 0x601C000F, // 000E GETGBL R7 G15 0x5C200600, // 000F MOVE R8 R3 - 0xB8260C00, // 0010 GETNGBL R9 K6 + 0xB8265C00, // 0010 GETNGBL R9 K46 0x7C1C0400, // 0011 CALL R7 2 0x781E0007, // 0012 JMPF R7 #001B - 0x90060E03, // 0013 SETMBR R1 K7 R3 - 0x8C1C0108, // 0014 GETMET R7 R0 K8 - 0x88240502, // 0015 GETMBR R9 R2 K2 - 0x88280503, // 0016 GETMBR R10 R2 K3 + 0x90061003, // 0013 SETMBR R1 K8 R3 + 0x8C1C0161, // 0014 GETMET R7 R0 K97 + 0x88240503, // 0015 GETMBR R9 R2 K3 + 0x88280504, // 0016 GETMBR R10 R2 K4 0x7C1C0600, // 0017 CALL R7 3 0x501C0200, // 0018 LDBOOL R7 1 0 0x80040E00, // 0019 RET 1 R7 0x70020004, // 001A JMP #0020 - 0xB81E0000, // 001B GETNGBL R7 K0 - 0x881C0F0A, // 001C GETMBR R7 R7 K10 - 0x900A1207, // 001D SETMBR R2 K9 R7 + 0xB81E0200, // 001B GETNGBL R7 K1 + 0x881C0F63, // 001C GETMBR R7 R7 K99 + 0x900AC407, // 001D SETMBR R2 K98 R7 0x501C0000, // 001E LDBOOL R7 0 0 0x80040E00, // 001F RET 1 R7 0x70020041, // 0020 JMP #0063 0x541E001E, // 0021 LDINT R7 31 0x1C1C0A07, // 0022 EQ R7 R5 R7 0x781E0004, // 0023 JMPF R7 #0029 - 0x1C1C0D04, // 0024 EQ R7 R6 K4 + 0x1C1C0D05, // 0024 EQ R7 R6 K5 0x781E0001, // 0025 JMPF R7 #0028 0x501C0200, // 0026 LDBOOL R7 1 0 0x80040E00, // 0027 RET 1 R7 @@ -1142,7 +1208,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E0029, // 0038 LDINT R7 42 0x1C1C0A07, // 0039 EQ R7 R5 R7 0x781E0004, // 003A JMPF R7 #0040 - 0x1C1C0D04, // 003B EQ R7 R6 K4 + 0x1C1C0D05, // 003B EQ R7 R6 K5 0x781E0001, // 003C JMPF R7 #003F 0x501C0200, // 003D LDBOOL R7 1 0 0x80040E00, // 003E RET 1 R7 @@ -1150,23 +1216,23 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E002A, // 0040 LDINT R7 43 0x1C1C0A07, // 0041 EQ R7 R5 R7 0x781E0007, // 0042 JMPF R7 #004B - 0x1C1C0D04, // 0043 EQ R7 R6 K4 + 0x1C1C0D05, // 0043 EQ R7 R6 K5 0x781E0004, // 0044 JMPF R7 #004A - 0xB81E0000, // 0045 GETNGBL R7 K0 - 0x881C0F0A, // 0046 GETMBR R7 R7 K10 - 0x900A1207, // 0047 SETMBR R2 K9 R7 + 0xB81E0200, // 0045 GETNGBL R7 K1 + 0x881C0F63, // 0046 GETMBR R7 R7 K99 + 0x900AC407, // 0047 SETMBR R2 K98 R7 0x501C0000, // 0048 LDBOOL R7 0 0 0x80040E00, // 0049 RET 1 R7 0x70020017, // 004A JMP #0063 0x541E002B, // 004B LDINT R7 44 0x1C1C0A07, // 004C EQ R7 R5 R7 0x781E0009, // 004D JMPF R7 #0058 - 0x1C1C0D04, // 004E EQ R7 R6 K4 + 0x1C1C0D05, // 004E EQ R7 R6 K5 0x781E0002, // 004F JMPF R7 #0053 0x501C0200, // 0050 LDBOOL R7 1 0 0x80040E00, // 0051 RET 1 R7 0x70020003, // 0052 JMP #0057 - 0x1C1C0D0B, // 0053 EQ R7 R6 K11 + 0x1C1C0D09, // 0053 EQ R7 R6 K9 0x781E0001, // 0054 JMPF R7 #0057 0x501C0200, // 0055 LDBOOL R7 1 0 0x80040E00, // 0056 RET 1 R7 @@ -1177,9 +1243,9 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E0003, // 005B LDINT R7 4 0x1C1C0C07, // 005C EQ R7 R6 R7 0x781E0004, // 005D JMPF R7 #0063 - 0xB81E0000, // 005E GETNGBL R7 K0 - 0x881C0F0C, // 005F GETMBR R7 R7 K12 - 0x900A1207, // 0060 SETMBR R2 K9 R7 + 0xB81E0200, // 005E GETNGBL R7 K1 + 0x881C0F64, // 005F GETMBR R7 R7 K100 + 0x900AC407, // 0060 SETMBR R2 K98 R7 0x501C0000, // 0061 LDBOOL R7 0 0 0x80040E00, // 0062 RET 1 R7 0x80000000, // 0063 RET 0 @@ -1196,71 +1262,56 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ be_nested_proto( 14, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(publish_event), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(EVENT_CRITICAL), - /* K5 */ be_nested_str_weak(TLV), - /* K6 */ be_nested_str_weak(Matter_TLV_item), - /* K7 */ be_nested_str_weak(set), - /* K8 */ be_nested_str_weak(U4), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(version), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(U1), - /* K13 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Root, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100965, // 0003 GETMET R4 R4 K101 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x8C100101, // 0008 GETMET R4 R0 K1 + 0x8C100166, // 0008 GETMET R4 R0 K102 0x541A0027, // 0009 LDINT R6 40 - 0x581C0002, // 000A LDCONST R7 K2 - 0xB8220600, // 000B GETNGBL R8 K3 - 0x88201104, // 000C GETMBR R8 R8 K4 - 0xB8260600, // 000D GETNGBL R9 K3 - 0x88241305, // 000E GETMBR R9 R9 K5 - 0x8C241306, // 000F GETMET R9 R9 K6 + 0x581C0005, // 000A LDCONST R7 K5 + 0xB8220200, // 000B GETNGBL R8 K1 + 0x88201167, // 000C GETMBR R8 R8 K103 + 0xB8260200, // 000D GETNGBL R9 K1 + 0x88241302, // 000E GETMBR R9 R9 K2 + 0x8C241368, // 000F GETMET R9 R9 K104 0x7C240200, // 0010 CALL R9 1 - 0x8C241307, // 0011 GETMET R9 R9 K7 - 0xB82E0600, // 0012 GETNGBL R11 K3 - 0x882C1705, // 0013 GETMBR R11 R11 K5 - 0x882C1708, // 0014 GETMBR R11 R11 K8 - 0xB8321200, // 0015 GETNGBL R12 K9 - 0x8C30190A, // 0016 GETMET R12 R12 K10 + 0x8C241306, // 0011 GETMET R9 R9 K6 + 0xB82E0200, // 0012 GETNGBL R11 K1 + 0x882C1702, // 0013 GETMBR R11 R11 K2 + 0x882C172A, // 0014 GETMBR R11 R11 K42 + 0xB8322400, // 0015 GETNGBL R12 K18 + 0x8C301957, // 0016 GETMET R12 R12 K87 0x7C300200, // 0017 CALL R12 1 0x7C240600, // 0018 CALL R9 3 0x7C100A00, // 0019 CALL R4 5 - 0x8C100101, // 001A GETMET R4 R0 K1 + 0x8C100166, // 001A GETMET R4 R0 K102 0x541A0032, // 001B LDINT R6 51 - 0x581C000B, // 001C LDCONST R7 K11 - 0xB8220600, // 001D GETNGBL R8 K3 - 0x88201104, // 001E GETMBR R8 R8 K4 - 0xB8260600, // 001F GETNGBL R9 K3 - 0x88241305, // 0020 GETMBR R9 R9 K5 - 0x8C241306, // 0021 GETMET R9 R9 K6 + 0x581C000F, // 001C LDCONST R7 K15 + 0xB8220200, // 001D GETNGBL R8 K1 + 0x88201167, // 001E GETMBR R8 R8 K103 + 0xB8260200, // 001F GETNGBL R9 K1 + 0x88241302, // 0020 GETMBR R9 R9 K2 + 0x8C241368, // 0021 GETMET R9 R9 K104 0x7C240200, // 0022 CALL R9 1 - 0x8C241307, // 0023 GETMET R9 R9 K7 - 0xB82E0600, // 0024 GETNGBL R11 K3 - 0x882C1705, // 0025 GETMBR R11 R11 K5 - 0x882C170C, // 0026 GETMBR R11 R11 K12 - 0x5830000D, // 0027 LDCONST R12 K13 + 0x8C241306, // 0023 GETMET R9 R9 K6 + 0xB82E0200, // 0024 GETNGBL R11 K1 + 0x882C1702, // 0025 GETMBR R11 R11 K2 + 0x882C170E, // 0026 GETMBR R11 R11 K14 + 0x58300009, // 0027 LDCONST R12 K9 0x7C240600, // 0028 CALL R9 3 0x7C100A00, // 0029 CALL R4 5 0x80000000, // 002A RET 0 @@ -1277,7 +1328,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ be_nested_proto( 31, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1311,252 +1362,149 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[102]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(findsubval), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(_breadcrumb), - /* K9 */ be_nested_str_weak(Matter_TLV_struct), - /* K10 */ be_nested_str_weak(add_TLV), - /* K11 */ be_nested_str_weak(U1), - /* K12 */ be_nested_str_weak(UTF1), - /* K13 */ be_nested_str_weak(), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(XX), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(ack_request), - /* K18 */ be_nested_str_weak(_fabric), - /* K19 */ be_nested_str_weak(fabric_completed), - /* K20 */ be_nested_str_weak(set_no_expiration), - /* K21 */ be_nested_str_weak(save), - /* K22 */ be_nested_str_weak(device), - /* K23 */ be_nested_str_weak(start_commissioning_complete_deferred), - /* K24 */ be_nested_str_weak(context_error), - /* K25 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), - /* K26 */ be_nested_str_weak(status), - /* K27 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K28 */ be_nested_str_weak(B2), - /* K29 */ be_nested_str_weak(DAC_Cert_FFF1_8000), - /* K30 */ be_nested_str_weak(PAI_Cert_FFF1), - /* K31 */ be_nested_str_weak(CD_FFF1_8000), - /* K32 */ be_nested_str_weak(B1), - /* K33 */ be_nested_str_weak(U4), - /* K34 */ be_nested_str_weak(tasmota), - /* K35 */ be_nested_str_weak(rtc_utc), - /* K36 */ be_nested_str_weak(tlv2raw), - /* K37 */ be_nested_str_weak(get_ac), - /* K38 */ be_nested_str_weak(EC_P256), - /* K39 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K40 */ be_nested_str_weak(DAC_Priv_FFF1_8000), - /* K41 */ be_nested_str_weak(gen_CSR), - /* K42 */ be_nested_str_weak(set_temp_ca), - /* K43 */ be_nested_str_weak(SUCCESS), - /* K44 */ be_nested_str_weak(log), - /* K45 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), - /* K46 */ be_nested_str_weak(get_temp_ca), - /* K47 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), - /* K48 */ be_nested_str_weak(sessions), - /* K49 */ be_nested_str_weak(create_fabric), - /* K50 */ be_nested_str_weak(set_ca), - /* K51 */ be_nested_str_weak(set_noc_icac), - /* K52 */ be_nested_str_weak(set_ipk_epoch_key), - /* K53 */ be_nested_str_weak(set_admin_subject_vendor), - /* K54 */ be_nested_str_weak(set_pk), - /* K55 */ be_nested_str_weak(get_pk), - /* K56 */ be_nested_str_weak(parse), - /* K57 */ be_nested_str_weak(findsub), - /* K58 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), - /* K59 */ be_nested_str_weak(int), - /* K60 */ be_nested_str_weak(int64), - /* K61 */ be_nested_str_weak(fromu32), - /* K62 */ be_nested_str_weak(tobytes), - /* K63 */ be_nested_str_weak(get_temp_ca_pub), - /* K64 */ be_const_int(2147483647), - /* K65 */ be_nested_str_weak(fromstring), - /* K66 */ be_nested_str_weak(CompressedFabric), - /* K67 */ be_nested_str_weak(HKDF_SHA256), - /* K68 */ be_nested_str_weak(copy), - /* K69 */ be_nested_str_weak(reverse), - /* K70 */ be_nested_str_weak(derive), - /* K71 */ be_nested_str_weak(commissioning_admin_fabric), - /* K72 */ be_nested_str_weak(set_fabric_device), - /* K73 */ be_nested_str_weak(fabric_candidate), - /* K74 */ be_nested_str_weak(start_operational_discovery_deferred), - /* K75 */ be_nested_str_weak(is_PASE), - /* K76 */ be_nested_str_weak(set_expire_in_seconds), - /* K77 */ be_nested_str_weak(log_new_fabric), - /* K78 */ be_nested_str_weak(assign_fabric_index), - /* K79 */ be_nested_str_weak(get_fabric_index), - /* K80 */ be_nested_str_weak(set_fabric_label), - /* K81 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), - /* K82 */ be_nested_str_weak(get_fabric_id), - /* K83 */ be_nested_str_weak(tohex), - /* K84 */ be_nested_str_weak(get_fabric), - /* K85 */ be_nested_str_weak(fabric_index_X3A), - /* K86 */ be_nested_str_weak(active_fabrics), - /* K87 */ be_nested_str_weak(mark_for_deletion), - /* K88 */ be_nested_str_weak(set_timer), - /* K89 */ be_nested_str_weak(stop_iteration), - /* K90 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), - /* K91 */ be_nested_str_weak(_X29_X20not_X20found), - /* K92 */ be_nested_str_weak(INVALID_ACTION), - /* K93 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), - /* K94 */ be_nested_str_weak(INVALID_DATA_TYPE), - /* K95 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), - /* K96 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K97 */ be_nested_str_weak(start_basic_commissioning), - /* K98 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), - /* K99 */ be_nested_str_weak(start_root_basic_commissioning), - /* K100 */ be_nested_str_weak(stop_basic_commissioning), - /* K101 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_Root, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[737]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 + 0xA412D200, // 0000 IMPORT R4 K105 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C0704, // 0004 GETMBR R7 R3 K4 + 0x881C076A, // 0004 GETMBR R7 R3 K106 0x5422002F, // 0005 LDINT R8 48 0x1C200C08, // 0006 EQ R8 R6 R8 0x7822005C, // 0007 JMPF R8 #0065 0x1C200F05, // 0008 EQ R8 R7 K5 0x78220017, // 0009 JMPF R8 #0022 - 0x8C200506, // 000A GETMET R8 R2 K6 + 0x8C200541, // 000A GETMET R8 R2 K65 0x58280005, // 000B LDCONST R10 K5 0x542E0383, // 000C LDINT R11 900 0x7C200600, // 000D CALL R8 3 - 0x8C240506, // 000E GETMET R9 R2 K6 - 0x582C0007, // 000F LDCONST R11 K7 + 0x8C240541, // 000E GETMET R9 R2 K65 + 0x582C0009, // 000F LDCONST R11 K9 0x58300005, // 0010 LDCONST R12 K5 0x7C240600, // 0011 CALL R9 3 0x90061009, // 0012 SETMBR R1 K8 R9 - 0x8C280B09, // 0013 GETMET R10 R5 K9 + 0x8C280B0A, // 0013 GETMET R10 R5 K10 0x7C280200, // 0014 CALL R10 1 - 0x8C2C150A, // 0015 GETMET R11 R10 K10 + 0x8C2C150B, // 0015 GETMET R11 R10 K11 0x58340005, // 0016 LDCONST R13 K5 - 0x88380B0B, // 0017 GETMBR R14 R5 K11 + 0x88380B0E, // 0017 GETMBR R14 R5 K14 0x583C0005, // 0018 LDCONST R15 K5 0x7C2C0800, // 0019 CALL R11 4 - 0x8C2C150A, // 001A GETMET R11 R10 K10 - 0x58340007, // 001B LDCONST R13 K7 - 0x88380B0C, // 001C GETMBR R14 R5 K12 - 0x583C000D, // 001D LDCONST R15 K13 + 0x8C2C150B, // 001A GETMET R11 R10 K11 + 0x58340009, // 001B LDCONST R13 K9 + 0x88380B16, // 001C GETMBR R14 R5 K22 + 0x583C001D, // 001D LDCONST R15 K29 0x7C2C0800, // 001E CALL R11 4 - 0x900E0907, // 001F SETMBR R3 K4 K7 + 0x900ED509, // 001F SETMBR R3 K106 K9 0x80041400, // 0020 RET 1 R10 0x70020041, // 0021 JMP #0064 - 0x1C200F0E, // 0022 EQ R8 R7 K14 + 0x1C200F0D, // 0022 EQ R8 R7 K13 0x7822001A, // 0023 JMPF R8 #003F - 0x8C200506, // 0024 GETMET R8 R2 K6 + 0x8C200541, // 0024 GETMET R8 R2 K65 0x58280005, // 0025 LDCONST R10 K5 0x7C200400, // 0026 CALL R8 2 - 0x8C240506, // 0027 GETMET R9 R2 K6 - 0x582C0007, // 0028 LDCONST R11 K7 - 0x5830000F, // 0029 LDCONST R12 K15 + 0x8C240541, // 0027 GETMET R9 R2 K65 + 0x582C0009, // 0028 LDCONST R11 K9 + 0x58300053, // 0029 LDCONST R12 K83 0x7C240600, // 002A CALL R9 3 - 0x8C280506, // 002B GETMET R10 R2 K6 - 0x5830000E, // 002C LDCONST R12 K14 + 0x8C280541, // 002B GETMET R10 R2 K65 + 0x5830000D, // 002C LDCONST R12 K13 0x58340005, // 002D LDCONST R13 K5 0x7C280600, // 002E CALL R10 3 0x9006100A, // 002F SETMBR R1 K8 R10 - 0x8C2C0B09, // 0030 GETMET R11 R5 K9 + 0x8C2C0B0A, // 0030 GETMET R11 R5 K10 0x7C2C0200, // 0031 CALL R11 1 - 0x8C30170A, // 0032 GETMET R12 R11 K10 + 0x8C30170B, // 0032 GETMET R12 R11 K11 0x58380005, // 0033 LDCONST R14 K5 - 0x883C0B0B, // 0034 GETMBR R15 R5 K11 + 0x883C0B0E, // 0034 GETMBR R15 R5 K14 0x58400005, // 0035 LDCONST R16 K5 0x7C300800, // 0036 CALL R12 4 - 0x8C30170A, // 0037 GETMET R12 R11 K10 - 0x58380007, // 0038 LDCONST R14 K7 - 0x883C0B0C, // 0039 GETMBR R15 R5 K12 - 0x5840000D, // 003A LDCONST R16 K13 + 0x8C30170B, // 0037 GETMET R12 R11 K11 + 0x58380009, // 0038 LDCONST R14 K9 + 0x883C0B16, // 0039 GETMBR R15 R5 K22 + 0x5840001D, // 003A LDCONST R16 K29 0x7C300800, // 003B CALL R12 4 - 0x900E0910, // 003C SETMBR R3 K4 K16 + 0x900ED56B, // 003C SETMBR R3 K106 K107 0x80041600, // 003D RET 1 R11 0x70020024, // 003E JMP #0064 0x54220003, // 003F LDINT R8 4 0x1C200E08, // 0040 EQ R8 R7 R8 0x78220021, // 0041 JMPF R8 #0064 - 0x8C200111, // 0042 GETMET R8 R0 K17 + 0x8C200133, // 0042 GETMET R8 R0 K51 0x5C280600, // 0043 MOVE R10 R3 0x7C200400, // 0044 CALL R8 2 - 0x88200312, // 0045 GETMBR R8 R1 K18 + 0x88200349, // 0045 GETMBR R8 R1 K73 0x7822001B, // 0046 JMPF R8 #0063 0x90061105, // 0047 SETMBR R1 K8 K5 - 0x88200312, // 0048 GETMBR R8 R1 K18 - 0x8C201113, // 0049 GETMET R8 R8 K19 + 0x88200349, // 0048 GETMBR R8 R1 K73 + 0x8C20116C, // 0049 GETMET R8 R8 K108 0x7C200200, // 004A CALL R8 1 - 0x8C200314, // 004B GETMET R8 R1 K20 + 0x8C20036D, // 004B GETMET R8 R1 K109 0x7C200200, // 004C CALL R8 1 - 0x8C200315, // 004D GETMET R8 R1 K21 + 0x8C20036E, // 004D GETMET R8 R1 K110 0x7C200200, // 004E CALL R8 1 - 0x8C200B09, // 004F GETMET R8 R5 K9 + 0x8C200B0A, // 004F GETMET R8 R5 K10 0x7C200200, // 0050 CALL R8 1 - 0x8C24110A, // 0051 GETMET R9 R8 K10 + 0x8C24110B, // 0051 GETMET R9 R8 K11 0x582C0005, // 0052 LDCONST R11 K5 - 0x88300B0B, // 0053 GETMBR R12 R5 K11 + 0x88300B0E, // 0053 GETMBR R12 R5 K14 0x58340005, // 0054 LDCONST R13 K5 0x7C240800, // 0055 CALL R9 4 - 0x8C24110A, // 0056 GETMET R9 R8 K10 - 0x582C0007, // 0057 LDCONST R11 K7 - 0x88300B0C, // 0058 GETMBR R12 R5 K12 - 0x5834000D, // 0059 LDCONST R13 K13 + 0x8C24110B, // 0056 GETMET R9 R8 K11 + 0x582C0009, // 0057 LDCONST R11 K9 + 0x88300B16, // 0058 GETMBR R12 R5 K22 + 0x5834001D, // 0059 LDCONST R13 K29 0x7C240800, // 005A CALL R9 4 0x54260004, // 005B LDINT R9 5 - 0x900E0809, // 005C SETMBR R3 K4 R9 - 0x88240116, // 005D GETMBR R9 R0 K22 - 0x8C241317, // 005E GETMET R9 R9 K23 + 0x900ED409, // 005C SETMBR R3 K106 R9 + 0x88240136, // 005D GETMBR R9 R0 K54 + 0x8C24136F, // 005E GETMET R9 R9 K111 0x5C2C0200, // 005F MOVE R11 R1 0x7C240400, // 0060 CALL R9 2 0x80041000, // 0061 RET 1 R8 0x70020000, // 0062 JMP #0064 - 0xB0063119, // 0063 RAISE 1 K24 K25 + 0xB006E171, // 0063 RAISE 1 K112 K113 0x70020279, // 0064 JMP #02DF 0x5422003D, // 0065 LDINT R8 62 0x1C200C08, // 0066 EQ R8 R6 R8 0x782201DD, // 0067 JMPF R8 #0246 - 0x1C200F0E, // 0068 EQ R8 R7 K14 + 0x1C200F0D, // 0068 EQ R8 R7 K13 0x7822001D, // 0069 JMPF R8 #0088 - 0x8C200506, // 006A GETMET R8 R2 K6 + 0x8C200541, // 006A GETMET R8 R2 K65 0x58280005, // 006B LDCONST R10 K5 0x7C200400, // 006C CALL R8 2 - 0x20241107, // 006D NE R9 R8 K7 + 0x20241109, // 006D NE R9 R8 K9 0x78260006, // 006E JMPF R9 #0076 - 0x2024110E, // 006F NE R9 R8 K14 + 0x2024110D, // 006F NE R9 R8 K13 0x78260004, // 0070 JMPF R9 #0076 0xB8260200, // 0071 GETNGBL R9 K1 - 0x8824131B, // 0072 GETMBR R9 R9 K27 - 0x900E3409, // 0073 SETMBR R3 K26 R9 + 0x88241372, // 0072 GETMBR R9 R9 K114 + 0x900EC409, // 0073 SETMBR R3 K98 R9 0x4C240000, // 0074 LDNIL R9 0x80041200, // 0075 RET 1 R9 - 0x8C240B09, // 0076 GETMET R9 R5 K9 + 0x8C240B0A, // 0076 GETMET R9 R5 K10 0x7C240200, // 0077 CALL R9 1 - 0x8C28130A, // 0078 GETMET R10 R9 K10 + 0x8C28130B, // 0078 GETMET R10 R9 K11 0x58300005, // 0079 LDCONST R12 K5 - 0x88340B1C, // 007A GETMBR R13 R5 K28 - 0x1C381107, // 007B EQ R14 R8 K7 + 0x88340B3A, // 007A GETMBR R13 R5 K58 + 0x1C381109, // 007B EQ R14 R8 K9 0x783A0003, // 007C JMPF R14 #0081 0xB83A0200, // 007D GETNGBL R14 K1 - 0x8C381D1D, // 007E GETMET R14 R14 K29 + 0x8C381D73, // 007E GETMET R14 R14 K115 0x7C380200, // 007F CALL R14 1 0x70020002, // 0080 JMP #0084 0xB83A0200, // 0081 GETNGBL R14 K1 - 0x8C381D1E, // 0082 GETMET R14 R14 K30 + 0x8C381D74, // 0082 GETMET R14 R14 K116 0x7C380200, // 0083 CALL R14 1 0x7C280800, // 0084 CALL R10 4 - 0x900E0910, // 0085 SETMBR R3 K4 K16 + 0x900ED56B, // 0085 SETMBR R3 K106 K107 0x80041200, // 0086 RET 1 R9 0x700201BC, // 0087 JMP #0245 0x1C200F05, // 0088 EQ R8 R7 K5 0x7822003C, // 0089 JMPF R8 #00C7 - 0x8C200506, // 008A GETMET R8 R2 K6 + 0x8C200541, // 008A GETMET R8 R2 K65 0x58280005, // 008B LDCONST R10 K5 0x7C200400, // 008C CALL R8 2 0x6024000C, // 008D GETGBL R9 G12 @@ -1567,63 +1515,63 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x78260001, // 0092 JMPF R9 #0095 0x4C240000, // 0093 LDNIL R9 0x80041200, // 0094 RET 1 R9 - 0x900E0907, // 0095 SETMBR R3 K4 K7 - 0x8C240B09, // 0096 GETMET R9 R5 K9 + 0x900ED509, // 0095 SETMBR R3 K106 K9 + 0x8C240B0A, // 0096 GETMET R9 R5 K10 0x7C240200, // 0097 CALL R9 1 - 0x8C28130A, // 0098 GETMET R10 R9 K10 - 0x58300007, // 0099 LDCONST R12 K7 - 0x88340B1C, // 009A GETMBR R13 R5 K28 + 0x8C28130B, // 0098 GETMET R10 R9 K11 + 0x58300009, // 0099 LDCONST R12 K9 + 0x88340B3A, // 009A GETMBR R13 R5 K58 0xB83A0200, // 009B GETNGBL R14 K1 - 0x8C381D1F, // 009C GETMET R14 R14 K31 + 0x8C381D75, // 009C GETMET R14 R14 K117 0x7C380200, // 009D CALL R14 1 0x7C280800, // 009E CALL R10 4 - 0x8C28130A, // 009F GETMET R10 R9 K10 - 0x5830000E, // 00A0 LDCONST R12 K14 - 0x88340B20, // 00A1 GETMBR R13 R5 K32 + 0x8C28130B, // 009F GETMET R10 R9 K11 + 0x5830000D, // 00A0 LDCONST R12 K13 + 0x88340B1F, // 00A1 GETMBR R13 R5 K31 0x5C381000, // 00A2 MOVE R14 R8 0x7C280800, // 00A3 CALL R10 4 - 0x8C28130A, // 00A4 GETMET R10 R9 K10 - 0x58300010, // 00A5 LDCONST R12 K16 - 0x88340B21, // 00A6 GETMBR R13 R5 K33 - 0xB83A4400, // 00A7 GETNGBL R14 K34 - 0x8C381D23, // 00A8 GETMET R14 R14 K35 + 0x8C28130B, // 00A4 GETMET R10 R9 K11 + 0x5830006B, // 00A5 LDCONST R12 K107 + 0x88340B2A, // 00A6 GETMBR R13 R5 K42 + 0xB83A2400, // 00A7 GETNGBL R14 K18 + 0x8C381D2F, // 00A8 GETMET R14 R14 K47 0x7C380200, // 00A9 CALL R14 1 0x7C280800, // 00AA CALL R10 4 - 0x8C281324, // 00AB GETMET R10 R9 K36 + 0x8C281376, // 00AB GETMET R10 R9 K118 0x7C280200, // 00AC CALL R10 1 - 0x8C2C0325, // 00AD GETMET R11 R1 K37 + 0x8C2C0377, // 00AD GETMET R11 R1 K119 0x7C2C0200, // 00AE CALL R11 1 0x0030140B, // 00AF ADD R12 R10 R11 - 0x8C340926, // 00B0 GETMET R13 R4 K38 + 0x8C340978, // 00B0 GETMET R13 R4 K120 0x7C340200, // 00B1 CALL R13 1 - 0x8C341B27, // 00B2 GETMET R13 R13 K39 + 0x8C341B79, // 00B2 GETMET R13 R13 K121 0xB83E0200, // 00B3 GETNGBL R15 K1 - 0x8C3C1F28, // 00B4 GETMET R15 R15 K40 + 0x8C3C1F7A, // 00B4 GETMET R15 R15 K122 0x7C3C0200, // 00B5 CALL R15 1 0x5C401800, // 00B6 MOVE R16 R12 0x7C340600, // 00B7 CALL R13 3 - 0x8C380B09, // 00B8 GETMET R14 R5 K9 + 0x8C380B0A, // 00B8 GETMET R14 R5 K10 0x7C380200, // 00B9 CALL R14 1 - 0x8C3C1D0A, // 00BA GETMET R15 R14 K10 + 0x8C3C1D0B, // 00BA GETMET R15 R14 K11 0x58440005, // 00BB LDCONST R17 K5 - 0x88480B1C, // 00BC GETMBR R18 R5 K28 + 0x88480B3A, // 00BC GETMBR R18 R5 K58 0x5C4C1400, // 00BD MOVE R19 R10 0x7C3C0800, // 00BE CALL R15 4 - 0x8C3C1D0A, // 00BF GETMET R15 R14 K10 - 0x58440007, // 00C0 LDCONST R17 K7 - 0x88480B20, // 00C1 GETMBR R18 R5 K32 + 0x8C3C1D0B, // 00BF GETMET R15 R14 K11 + 0x58440009, // 00C0 LDCONST R17 K9 + 0x88480B1F, // 00C1 GETMBR R18 R5 K31 0x5C4C1A00, // 00C2 MOVE R19 R13 0x7C3C0800, // 00C3 CALL R15 4 - 0x900E0907, // 00C4 SETMBR R3 K4 K7 + 0x900ED509, // 00C4 SETMBR R3 K106 K9 0x80041C00, // 00C5 RET 1 R14 0x7002017D, // 00C6 JMP #0245 0x54220003, // 00C7 LDINT R8 4 0x1C200E08, // 00C8 EQ R8 R7 R8 0x7822003C, // 00C9 JMPF R8 #0107 - 0x8C200111, // 00CA GETMET R8 R0 K17 + 0x8C200133, // 00CA GETMET R8 R0 K51 0x5C280600, // 00CB MOVE R10 R3 0x7C200400, // 00CC CALL R8 2 - 0x8C200506, // 00CD GETMET R8 R2 K6 + 0x8C200541, // 00CD GETMET R8 R2 K65 0x58280005, // 00CE LDCONST R10 K5 0x7C200400, // 00CF CALL R8 2 0x6024000C, // 00D0 GETGBL R9 G12 @@ -1634,83 +1582,83 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x78260001, // 00D5 JMPF R9 #00D8 0x4C240000, // 00D6 LDNIL R9 0x80041200, // 00D7 RET 1 R9 - 0x8C240506, // 00D8 GETMET R9 R2 K6 - 0x582C0007, // 00D9 LDCONST R11 K7 + 0x8C240541, // 00D8 GETMET R9 R2 K65 + 0x582C0009, // 00D9 LDCONST R11 K9 0x50300000, // 00DA LDBOOL R12 0 0 0x7C240600, // 00DB CALL R9 3 - 0x8C280329, // 00DC GETMET R10 R1 K41 + 0x8C28037B, // 00DC GETMET R10 R1 K123 0x7C280200, // 00DD CALL R10 1 - 0x8C2C0B09, // 00DE GETMET R11 R5 K9 + 0x8C2C0B0A, // 00DE GETMET R11 R5 K10 0x7C2C0200, // 00DF CALL R11 1 - 0x8C30170A, // 00E0 GETMET R12 R11 K10 - 0x58380007, // 00E1 LDCONST R14 K7 - 0x883C0B1C, // 00E2 GETMBR R15 R5 K28 + 0x8C30170B, // 00E0 GETMET R12 R11 K11 + 0x58380009, // 00E1 LDCONST R14 K9 + 0x883C0B3A, // 00E2 GETMBR R15 R5 K58 0x5C401400, // 00E3 MOVE R16 R10 0x7C300800, // 00E4 CALL R12 4 - 0x8C30170A, // 00E5 GETMET R12 R11 K10 - 0x5838000E, // 00E6 LDCONST R14 K14 - 0x883C0B20, // 00E7 GETMBR R15 R5 K32 + 0x8C30170B, // 00E5 GETMET R12 R11 K11 + 0x5838000D, // 00E6 LDCONST R14 K13 + 0x883C0B1F, // 00E7 GETMBR R15 R5 K31 0x5C401000, // 00E8 MOVE R16 R8 0x7C300800, // 00E9 CALL R12 4 - 0x8C301724, // 00EA GETMET R12 R11 K36 + 0x8C301776, // 00EA GETMET R12 R11 K118 0x7C300200, // 00EB CALL R12 1 - 0x8C340325, // 00EC GETMET R13 R1 K37 + 0x8C340377, // 00EC GETMET R13 R1 K119 0x7C340200, // 00ED CALL R13 1 0x0034180D, // 00EE ADD R13 R12 R13 - 0x8C380926, // 00EF GETMET R14 R4 K38 + 0x8C380978, // 00EF GETMET R14 R4 K120 0x7C380200, // 00F0 CALL R14 1 - 0x8C381D27, // 00F1 GETMET R14 R14 K39 + 0x8C381D79, // 00F1 GETMET R14 R14 K121 0xB8420200, // 00F2 GETNGBL R16 K1 - 0x8C402128, // 00F3 GETMET R16 R16 K40 + 0x8C40217A, // 00F3 GETMET R16 R16 K122 0x7C400200, // 00F4 CALL R16 1 0x5C441A00, // 00F5 MOVE R17 R13 0x7C380600, // 00F6 CALL R14 3 - 0x8C3C0B09, // 00F7 GETMET R15 R5 K9 + 0x8C3C0B0A, // 00F7 GETMET R15 R5 K10 0x7C3C0200, // 00F8 CALL R15 1 - 0x8C401F0A, // 00F9 GETMET R16 R15 K10 + 0x8C401F0B, // 00F9 GETMET R16 R15 K11 0x58480005, // 00FA LDCONST R18 K5 - 0x884C0B1C, // 00FB GETMBR R19 R5 K28 + 0x884C0B3A, // 00FB GETMBR R19 R5 K58 0x5C501800, // 00FC MOVE R20 R12 0x7C400800, // 00FD CALL R16 4 - 0x8C401F0A, // 00FE GETMET R16 R15 K10 - 0x58480007, // 00FF LDCONST R18 K7 - 0x884C0B20, // 0100 GETMBR R19 R5 K32 + 0x8C401F0B, // 00FE GETMET R16 R15 K11 + 0x58480009, // 00FF LDCONST R18 K9 + 0x884C0B1F, // 0100 GETMBR R19 R5 K31 0x5C501C00, // 0101 MOVE R20 R14 0x7C400800, // 0102 CALL R16 4 0x54420004, // 0103 LDINT R16 5 - 0x900E0810, // 0104 SETMBR R3 K4 R16 + 0x900ED410, // 0104 SETMBR R3 K106 R16 0x80041E00, // 0105 RET 1 R15 0x7002013D, // 0106 JMP #0245 0x5422000A, // 0107 LDINT R8 11 0x1C200E08, // 0108 EQ R8 R7 R8 0x7822000B, // 0109 JMPF R8 #0116 - 0x8C200506, // 010A GETMET R8 R2 K6 + 0x8C200541, // 010A GETMET R8 R2 K65 0x58280005, // 010B LDCONST R10 K5 0x7C200400, // 010C CALL R8 2 - 0x8C24032A, // 010D GETMET R9 R1 K42 + 0x8C24037C, // 010D GETMET R9 R1 K124 0x5C2C1000, // 010E MOVE R11 R8 0x7C240400, // 010F CALL R9 2 0xB8260200, // 0110 GETNGBL R9 K1 - 0x8824132B, // 0111 GETMBR R9 R9 K43 - 0x900E3409, // 0112 SETMBR R3 K26 R9 + 0x8824137D, // 0111 GETMBR R9 R9 K125 + 0x900EC409, // 0112 SETMBR R3 K98 R9 0x4C240000, // 0113 LDNIL R9 0x80041200, // 0114 RET 1 R9 0x7002012E, // 0115 JMP #0245 0x54220005, // 0116 LDINT R8 6 0x1C200E08, // 0117 EQ R8 R7 R8 0x782200B8, // 0118 JMPF R8 #01D2 - 0xB8225800, // 0119 GETNGBL R8 K44 + 0xB822FC00, // 0119 GETNGBL R8 K126 0x60240008, // 011A GETGBL R9 G8 0x5C280400, // 011B MOVE R10 R2 0x7C240200, // 011C CALL R9 1 - 0x00265A09, // 011D ADD R9 K45 R9 + 0x0026FE09, // 011D ADD R9 K127 R9 0x542A0003, // 011E LDINT R10 4 0x7C200400, // 011F CALL R8 2 - 0x8C200506, // 0120 GETMET R8 R2 K6 + 0x8C200541, // 0120 GETMET R8 R2 K65 0x58280005, // 0121 LDCONST R10 K5 0x7C200400, // 0122 CALL R8 2 - 0x8C240506, // 0123 GETMET R9 R2 K6 - 0x582C0007, // 0124 LDCONST R11 K7 + 0x8C240541, // 0123 GETMET R9 R2 K65 + 0x582C0009, // 0124 LDCONST R11 K9 0x7C240400, // 0125 CALL R9 2 0x6028000C, // 0126 GETGBL R10 G12 0x5C2C1200, // 0127 MOVE R11 R9 @@ -1718,284 +1666,284 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C281505, // 0129 EQ R10 R10 K5 0x782A0000, // 012A JMPF R10 #012C 0x4C240000, // 012B LDNIL R9 - 0x8C280506, // 012C GETMET R10 R2 K6 - 0x5830000E, // 012D LDCONST R12 K14 + 0x8C280541, // 012C GETMET R10 R2 K65 + 0x5830000D, // 012D LDCONST R12 K13 0x7C280400, // 012E CALL R10 2 - 0x8C2C0506, // 012F GETMET R11 R2 K6 - 0x58340010, // 0130 LDCONST R13 K16 + 0x8C2C0541, // 012F GETMET R11 R2 K65 + 0x5834006B, // 0130 LDCONST R13 K107 0x7C2C0400, // 0131 CALL R11 2 - 0x8C300506, // 0132 GETMET R12 R2 K6 + 0x8C300541, // 0132 GETMET R12 R2 K65 0x543A0003, // 0133 LDINT R14 4 0x7C300400, // 0134 CALL R12 2 - 0x8C34032E, // 0135 GETMET R13 R1 K46 + 0x8C340380, // 0135 GETMET R13 R1 K128 0x7C340200, // 0136 CALL R13 1 0x4C380000, // 0137 LDNIL R14 0x1C341A0E, // 0138 EQ R13 R13 R14 0x78360005, // 0139 JMPF R13 #0140 - 0xB8365800, // 013A GETNGBL R13 K44 - 0x5838002F, // 013B LDCONST R14 K47 - 0x583C000E, // 013C LDCONST R15 K14 + 0xB836FC00, // 013A GETNGBL R13 K126 + 0x58380081, // 013B LDCONST R14 K129 + 0x583C000D, // 013C LDCONST R15 K13 0x7C340400, // 013D CALL R13 2 0x4C340000, // 013E LDNIL R13 0x80041A00, // 013F RET 1 R13 - 0x88340116, // 0140 GETMBR R13 R0 K22 - 0x88341B30, // 0141 GETMBR R13 R13 K48 - 0x8C341B31, // 0142 GETMET R13 R13 K49 + 0x88340136, // 0140 GETMBR R13 R0 K54 + 0x88341B37, // 0141 GETMBR R13 R13 K55 + 0x8C341B82, // 0142 GETMET R13 R13 K130 0x7C340200, // 0143 CALL R13 1 - 0x8C381B32, // 0144 GETMET R14 R13 K50 - 0x8C40032E, // 0145 GETMET R16 R1 K46 + 0x8C381B83, // 0144 GETMET R14 R13 K131 + 0x8C400380, // 0145 GETMET R16 R1 K128 0x7C400200, // 0146 CALL R16 1 0x7C380400, // 0147 CALL R14 2 - 0x8C381B33, // 0148 GETMET R14 R13 K51 + 0x8C381B84, // 0148 GETMET R14 R13 K132 0x5C401000, // 0149 MOVE R16 R8 0x5C441200, // 014A MOVE R17 R9 0x7C380600, // 014B CALL R14 3 - 0x8C381B34, // 014C GETMET R14 R13 K52 + 0x8C381B85, // 014C GETMET R14 R13 K133 0x5C401400, // 014D MOVE R16 R10 0x7C380400, // 014E CALL R14 2 - 0x8C381B35, // 014F GETMET R14 R13 K53 + 0x8C381B86, // 014F GETMET R14 R13 K134 0x5C401600, // 0150 MOVE R16 R11 0x5C441800, // 0151 MOVE R17 R12 0x7C380600, // 0152 CALL R14 3 - 0x8C381B36, // 0153 GETMET R14 R13 K54 - 0x8C400337, // 0154 GETMET R16 R1 K55 + 0x8C381B87, // 0153 GETMET R14 R13 K135 + 0x8C400388, // 0154 GETMET R16 R1 K136 0x7C400200, // 0155 CALL R16 1 0x7C380400, // 0156 CALL R14 2 0xB83A0200, // 0157 GETNGBL R14 K1 0x88381D02, // 0158 GETMBR R14 R14 K2 - 0x8C381D38, // 0159 GETMET R14 R14 K56 + 0x8C381D3F, // 0159 GETMET R14 R14 K63 0x5C401000, // 015A MOVE R16 R8 0x7C380400, // 015B CALL R14 2 - 0x8C3C1D39, // 015C GETMET R15 R14 K57 + 0x8C3C1D89, // 015C GETMET R15 R14 K137 0x54460005, // 015D LDINT R17 6 0x7C3C0400, // 015E CALL R15 2 - 0x8C401F06, // 015F GETMET R16 R15 K6 + 0x8C401F41, // 015F GETMET R16 R15 K65 0x544A0014, // 0160 LDINT R18 21 0x7C400400, // 0161 CALL R16 2 - 0x8C441F06, // 0162 GETMET R17 R15 K6 + 0x8C441F41, // 0162 GETMET R17 R15 K65 0x544E0010, // 0163 LDINT R19 17 0x7C440400, // 0164 CALL R17 2 0x5C482000, // 0165 MOVE R18 R16 0x784A0001, // 0166 JMPF R18 #0169 0x5C482200, // 0167 MOVE R18 R17 0x744A0005, // 0168 JMPT R18 #016F - 0xB84A5800, // 0169 GETNGBL R18 K44 - 0x584C003A, // 016A LDCONST R19 K58 - 0x5850000E, // 016B LDCONST R20 K14 + 0xB84AFC00, // 0169 GETNGBL R18 K126 + 0x584C008A, // 016A LDCONST R19 K138 + 0x5850000D, // 016B LDCONST R20 K13 0x7C480400, // 016C CALL R18 2 0x50480000, // 016D LDBOOL R18 0 0 0x80042400, // 016E RET 1 R18 0x60480004, // 016F GETGBL R18 G4 0x5C4C2000, // 0170 MOVE R19 R16 0x7C480200, // 0171 CALL R18 1 - 0x1C48253B, // 0172 EQ R18 R18 K59 + 0x1C482560, // 0172 EQ R18 R18 K96 0x784A0007, // 0173 JMPF R18 #017C - 0xB84A7800, // 0174 GETNGBL R18 K60 - 0x8C48253D, // 0175 GETMET R18 R18 K61 + 0xB84A5C00, // 0174 GETNGBL R18 K46 + 0x8C48258B, // 0175 GETMET R18 R18 K139 0x5C502000, // 0176 MOVE R20 R16 0x7C480400, // 0177 CALL R18 2 - 0x8C48253E, // 0178 GETMET R18 R18 K62 + 0x8C48258C, // 0178 GETMET R18 R18 K140 0x7C480200, // 0179 CALL R18 1 0x5C402400, // 017A MOVE R16 R18 0x70020002, // 017B JMP #017F - 0x8C48213E, // 017C GETMET R18 R16 K62 + 0x8C48218C, // 017C GETMET R18 R16 K140 0x7C480200, // 017D CALL R18 1 0x5C402400, // 017E MOVE R16 R18 0x60480004, // 017F GETGBL R18 G4 0x5C4C2200, // 0180 MOVE R19 R17 0x7C480200, // 0181 CALL R18 1 - 0x1C48253B, // 0182 EQ R18 R18 K59 + 0x1C482560, // 0182 EQ R18 R18 K96 0x784A0007, // 0183 JMPF R18 #018C - 0xB84A7800, // 0184 GETNGBL R18 K60 - 0x8C48253D, // 0185 GETMET R18 R18 K61 + 0xB84A5C00, // 0184 GETNGBL R18 K46 + 0x8C48258B, // 0185 GETMET R18 R18 K139 0x5C502200, // 0186 MOVE R20 R17 0x7C480400, // 0187 CALL R18 2 - 0x8C48253E, // 0188 GETMET R18 R18 K62 + 0x8C48258C, // 0188 GETMET R18 R18 K140 0x7C480200, // 0189 CALL R18 1 0x5C442400, // 018A MOVE R17 R18 0x70020002, // 018B JMP #018F - 0x8C48233E, // 018C GETMET R18 R17 K62 + 0x8C48238C, // 018C GETMET R18 R17 K140 0x7C480200, // 018D CALL R18 1 0x5C442400, // 018E MOVE R17 R18 - 0x8C48033F, // 018F GETMET R18 R1 K63 + 0x8C48038D, // 018F GETMET R18 R1 K141 0x7C480200, // 0190 CALL R18 1 - 0x404E0F40, // 0191 CONNECT R19 K7 K64 + 0x404E138E, // 0191 CONNECT R19 K9 K142 0x94482413, // 0192 GETIDX R18 R18 R19 0x604C0015, // 0193 GETGBL R19 G21 0x7C4C0000, // 0194 CALL R19 0 - 0x8C4C2741, // 0195 GETMET R19 R19 K65 - 0x58540042, // 0196 LDCONST R21 K66 + 0x8C4C278F, // 0195 GETMET R19 R19 K143 + 0x58540090, // 0196 LDCONST R21 K144 0x7C4C0400, // 0197 CALL R19 2 - 0x8C500943, // 0198 GETMET R20 R4 K67 + 0x8C500991, // 0198 GETMET R20 R4 K145 0x7C500200, // 0199 CALL R20 1 - 0x8C542144, // 019A GETMET R21 R16 K68 + 0x8C542192, // 019A GETMET R21 R16 K146 0x7C540200, // 019B CALL R21 1 - 0x8C542B45, // 019C GETMET R21 R21 K69 + 0x8C542B93, // 019C GETMET R21 R21 K147 0x7C540200, // 019D CALL R21 1 - 0x8C582946, // 019E GETMET R22 R20 K70 + 0x8C582994, // 019E GETMET R22 R20 K148 0x5C602400, // 019F MOVE R24 R18 0x5C642A00, // 01A0 MOVE R25 R21 0x5C682600, // 01A1 MOVE R26 R19 0x546E0007, // 01A2 LDINT R27 8 0x7C580A00, // 01A3 CALL R22 5 - 0x885C0312, // 01A4 GETMBR R23 R1 K18 + 0x885C0349, // 01A4 GETMBR R23 R1 K73 0x785E0001, // 01A5 JMPF R23 #01A8 - 0x885C0312, // 01A6 GETMBR R23 R1 K18 + 0x885C0349, // 01A6 GETMBR R23 R1 K73 0x70020001, // 01A7 JMP #01AA - 0x885C0116, // 01A8 GETMBR R23 R0 K22 - 0x885C2F47, // 01A9 GETMBR R23 R23 K71 - 0x8C601B48, // 01AA GETMET R24 R13 K72 + 0x885C0136, // 01A8 GETMBR R23 R0 K54 + 0x885C2F4C, // 01A9 GETMBR R23 R23 K76 + 0x8C601B95, // 01AA GETMET R24 R13 K149 0x5C682000, // 01AB MOVE R26 R16 0x5C6C2200, // 01AC MOVE R27 R17 0x5C702C00, // 01AD MOVE R28 R22 0x5C742E00, // 01AE MOVE R29 R23 0x7C600A00, // 01AF CALL R24 5 - 0x8C601B49, // 01B0 GETMET R24 R13 K73 + 0x8C601B96, // 01B0 GETMET R24 R13 K150 0x7C600200, // 01B1 CALL R24 1 - 0x88600116, // 01B2 GETMBR R24 R0 K22 - 0x8C60314A, // 01B3 GETMET R24 R24 K74 + 0x88600136, // 01B2 GETMBR R24 R0 K54 + 0x8C603197, // 01B3 GETMET R24 R24 K151 0x5C681A00, // 01B4 MOVE R26 R13 0x7C600400, // 01B5 CALL R24 2 - 0x8C60034B, // 01B6 GETMET R24 R1 K75 + 0x8C600398, // 01B6 GETMET R24 R1 K152 0x7C600200, // 01B7 CALL R24 1 0x78620002, // 01B8 JMPF R24 #01BC - 0x8C60034C, // 01B9 GETMET R24 R1 K76 + 0x8C600399, // 01B9 GETMET R24 R1 K153 0x546A003B, // 01BA LDINT R26 60 0x7C600400, // 01BB CALL R24 2 - 0x8C601B4D, // 01BC GETMET R24 R13 K77 + 0x8C601B9A, // 01BC GETMET R24 R13 K154 0x7C600200, // 01BD CALL R24 1 - 0x8C601B4E, // 01BE GETMET R24 R13 K78 + 0x8C601B9B, // 01BE GETMET R24 R13 K155 0x7C600200, // 01BF CALL R24 1 - 0x8C600B09, // 01C0 GETMET R24 R5 K9 + 0x8C600B0A, // 01C0 GETMET R24 R5 K10 0x7C600200, // 01C1 CALL R24 1 - 0x8C64310A, // 01C2 GETMET R25 R24 K10 + 0x8C64310B, // 01C2 GETMET R25 R24 K11 0x586C0005, // 01C3 LDCONST R27 K5 - 0x88700B0B, // 01C4 GETMBR R28 R5 K11 + 0x88700B0E, // 01C4 GETMBR R28 R5 K14 0xB8760200, // 01C5 GETNGBL R29 K1 - 0x88743B2B, // 01C6 GETMBR R29 R29 K43 + 0x88743B7D, // 01C6 GETMBR R29 R29 K125 0x7C640800, // 01C7 CALL R25 4 - 0x8C64310A, // 01C8 GETMET R25 R24 K10 - 0x586C0007, // 01C9 LDCONST R27 K7 - 0x88700B0B, // 01CA GETMBR R28 R5 K11 - 0x8C741B4F, // 01CB GETMET R29 R13 K79 + 0x8C64310B, // 01C8 GETMET R25 R24 K11 + 0x586C0009, // 01C9 LDCONST R27 K9 + 0x88700B0E, // 01CA GETMBR R28 R5 K14 + 0x8C741B3D, // 01CB GETMET R29 R13 K61 0x7C740200, // 01CC CALL R29 1 0x7C640800, // 01CD CALL R25 4 0x54660007, // 01CE LDINT R25 8 - 0x900E0819, // 01CF SETMBR R3 K4 R25 + 0x900ED419, // 01CF SETMBR R3 K106 R25 0x80043000, // 01D0 RET 1 R24 0x70020072, // 01D1 JMP #0245 0x54220008, // 01D2 LDINT R8 9 0x1C200E08, // 01D3 EQ R8 R7 R8 0x7822002B, // 01D4 JMPF R8 #0201 - 0x8C200506, // 01D5 GETMET R8 R2 K6 + 0x8C200541, // 01D5 GETMET R8 R2 K65 0x58280005, // 01D6 LDCONST R10 K5 0x7C200400, // 01D7 CALL R8 2 - 0x8C240350, // 01D8 GETMET R9 R1 K80 + 0x8C24039C, // 01D8 GETMET R9 R1 K156 0x5C2C1000, // 01D9 MOVE R11 R8 0x7C240400, // 01DA CALL R9 2 - 0xB8265800, // 01DB GETNGBL R9 K44 + 0xB826FC00, // 01DB GETNGBL R9 K126 0x60280018, // 01DC GETGBL R10 G24 - 0x582C0051, // 01DD LDCONST R11 K81 - 0x88300312, // 01DE GETMBR R12 R1 K18 - 0x8C301952, // 01DF GETMET R12 R12 K82 + 0x582C009D, // 01DD LDCONST R11 K157 + 0x88300349, // 01DE GETMBR R12 R1 K73 + 0x8C30199E, // 01DF GETMET R12 R12 K158 0x7C300200, // 01E0 CALL R12 1 - 0x8C301944, // 01E1 GETMET R12 R12 K68 + 0x8C301992, // 01E1 GETMET R12 R12 K146 0x7C300200, // 01E2 CALL R12 1 - 0x8C301945, // 01E3 GETMET R12 R12 K69 + 0x8C301993, // 01E3 GETMET R12 R12 K147 0x7C300200, // 01E4 CALL R12 1 - 0x8C301953, // 01E5 GETMET R12 R12 K83 + 0x8C30199F, // 01E5 GETMET R12 R12 K159 0x7C300200, // 01E6 CALL R12 1 0x60340008, // 01E7 GETGBL R13 G8 0x5C381000, // 01E8 MOVE R14 R8 0x7C340200, // 01E9 CALL R13 1 0x7C280600, // 01EA CALL R10 3 - 0x582C0010, // 01EB LDCONST R11 K16 + 0x582C006B, // 01EB LDCONST R11 K107 0x7C240400, // 01EC CALL R9 2 - 0x8C240B09, // 01ED GETMET R9 R5 K9 + 0x8C240B0A, // 01ED GETMET R9 R5 K10 0x7C240200, // 01EE CALL R9 1 - 0x8C28130A, // 01EF GETMET R10 R9 K10 + 0x8C28130B, // 01EF GETMET R10 R9 K11 0x58300005, // 01F0 LDCONST R12 K5 - 0x88340B0B, // 01F1 GETMBR R13 R5 K11 + 0x88340B0E, // 01F1 GETMBR R13 R5 K14 0xB83A0200, // 01F2 GETNGBL R14 K1 - 0x88381D2B, // 01F3 GETMBR R14 R14 K43 + 0x88381D7D, // 01F3 GETMBR R14 R14 K125 0x7C280800, // 01F4 CALL R10 4 - 0x8C28130A, // 01F5 GETMET R10 R9 K10 - 0x58300007, // 01F6 LDCONST R12 K7 - 0x88340B0B, // 01F7 GETMBR R13 R5 K11 - 0x8C380354, // 01F8 GETMET R14 R1 K84 + 0x8C28130B, // 01F5 GETMET R10 R9 K11 + 0x58300009, // 01F6 LDCONST R12 K9 + 0x88340B0E, // 01F7 GETMBR R13 R5 K14 + 0x8C380335, // 01F8 GETMET R14 R1 K53 0x7C380200, // 01F9 CALL R14 1 - 0x8C381D4F, // 01FA GETMET R14 R14 K79 + 0x8C381D3D, // 01FA GETMET R14 R14 K61 0x7C380200, // 01FB CALL R14 1 0x7C280800, // 01FC CALL R10 4 0x542A0007, // 01FD LDINT R10 8 - 0x900E080A, // 01FE SETMBR R3 K4 R10 + 0x900ED40A, // 01FE SETMBR R3 K106 R10 0x80041200, // 01FF RET 1 R9 0x70020043, // 0200 JMP #0245 0x54220009, // 0201 LDINT R8 10 0x1C200E08, // 0202 EQ R8 R7 R8 0x78220040, // 0203 JMPF R8 #0245 - 0x8C200506, // 0204 GETMET R8 R2 K6 + 0x8C200541, // 0204 GETMET R8 R2 K65 0x58280005, // 0205 LDCONST R10 K5 0x7C200400, // 0206 CALL R8 2 0x60240008, // 0207 GETGBL R9 G8 0x5C281000, // 0208 MOVE R10 R8 0x7C240200, // 0209 CALL R9 1 - 0x0026AA09, // 020A ADD R9 K85 R9 - 0x900E5809, // 020B SETMBR R3 K44 R9 + 0x00274009, // 020A ADD R9 K160 R9 + 0x900EFC09, // 020B SETMBR R3 K126 R9 0x60240010, // 020C GETGBL R9 G16 - 0x88280116, // 020D GETMBR R10 R0 K22 - 0x88281530, // 020E GETMBR R10 R10 K48 - 0x8C281556, // 020F GETMET R10 R10 K86 + 0x88280136, // 020D GETMBR R10 R0 K54 + 0x88281537, // 020E GETMBR R10 R10 K55 + 0x8C281538, // 020F GETMET R10 R10 K56 0x7C280200, // 0210 CALL R10 1 0x7C240200, // 0211 CALL R9 1 0xA8020020, // 0212 EXBLK 0 #0234 0x5C281200, // 0213 MOVE R10 R9 0x7C280000, // 0214 CALL R10 0 - 0x8C2C154F, // 0215 GETMET R11 R10 K79 + 0x8C2C153D, // 0215 GETMET R11 R10 K61 0x7C2C0200, // 0216 CALL R11 1 0x1C2C1608, // 0217 EQ R11 R11 R8 0x782E0018, // 0218 JMPF R11 #0232 - 0x8C2C1557, // 0219 GETMET R11 R10 K87 + 0x8C2C15A1, // 0219 GETMET R11 R10 K161 0x7C2C0200, // 021A CALL R11 1 - 0xB82E4400, // 021B GETNGBL R11 K34 - 0x8C2C1758, // 021C GETMET R11 R11 K88 + 0xB82E2400, // 021B GETNGBL R11 K18 + 0x8C2C17A2, // 021C GETMET R11 R11 K162 0x543607CF, // 021D LDINT R13 2000 0x84380000, // 021E CLOSURE R14 P0 0x7C2C0600, // 021F CALL R11 3 - 0x8C2C0B09, // 0220 GETMET R11 R5 K9 + 0x8C2C0B0A, // 0220 GETMET R11 R5 K10 0x7C2C0200, // 0221 CALL R11 1 - 0x8C30170A, // 0222 GETMET R12 R11 K10 + 0x8C30170B, // 0222 GETMET R12 R11 K11 0x58380005, // 0223 LDCONST R14 K5 - 0x883C0B0B, // 0224 GETMBR R15 R5 K11 + 0x883C0B0E, // 0224 GETMBR R15 R5 K14 0xB8420200, // 0225 GETNGBL R16 K1 - 0x8840212B, // 0226 GETMBR R16 R16 K43 + 0x8840217D, // 0226 GETMBR R16 R16 K125 0x7C300800, // 0227 CALL R12 4 - 0x8C30170A, // 0228 GETMET R12 R11 K10 - 0x58380007, // 0229 LDCONST R14 K7 - 0x883C0B0B, // 022A GETMBR R15 R5 K11 + 0x8C30170B, // 0228 GETMET R12 R11 K11 + 0x58380009, // 0229 LDCONST R14 K9 + 0x883C0B0E, // 022A GETMBR R15 R5 K14 0x5C401000, // 022B MOVE R16 R8 0x7C300800, // 022C CALL R12 4 0x54320007, // 022D LDINT R12 8 - 0x900E080C, // 022E SETMBR R3 K4 R12 + 0x900ED40C, // 022E SETMBR R3 K106 R12 0xA0000000, // 022F CLOSE R0 0xA8040001, // 0230 EXBLK 1 1 0x80041600, // 0231 RET 1 R11 0xA0240000, // 0232 CLOSE R9 0x7001FFDE, // 0233 JMP #0213 - 0x58240059, // 0234 LDCONST R9 K89 + 0x5824003E, // 0234 LDCONST R9 K62 0xAC240200, // 0235 CATCH R9 1 0 0xB0080000, // 0236 RAISE 2 R0 R0 - 0xB8265800, // 0237 GETNGBL R9 K44 + 0xB826FC00, // 0237 GETNGBL R9 K126 0x60280008, // 0238 GETGBL R10 G8 0x5C2C1000, // 0239 MOVE R11 R8 0x7C280200, // 023A CALL R10 1 - 0x002AB40A, // 023B ADD R10 K90 R10 - 0x0028155B, // 023C ADD R10 R10 K91 - 0x582C000E, // 023D LDCONST R11 K14 + 0x002B460A, // 023B ADD R10 K163 R10 + 0x002815A4, // 023C ADD R10 R10 K164 + 0x582C000D, // 023D LDCONST R11 K13 0x7C240400, // 023E CALL R9 2 0xB8260200, // 023F GETNGBL R9 K1 - 0x8824135C, // 0240 GETMBR R9 R9 K92 - 0x900E3409, // 0241 SETMBR R3 K26 R9 + 0x88241364, // 0240 GETMBR R9 R9 K100 + 0x900EC409, // 0241 SETMBR R3 K98 R9 0x4C240000, // 0242 LDNIL R9 0xA0000000, // 0243 CLOSE R0 0x80041200, // 0244 RET 1 R9 @@ -2005,30 +1953,30 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x78220082, // 0248 JMPF R8 #02CC 0x1C200F05, // 0249 EQ R8 R7 K5 0x78220063, // 024A JMPF R8 #02AF - 0x8C200506, // 024B GETMET R8 R2 K6 + 0x8C200541, // 024B GETMET R8 R2 K65 0x58280005, // 024C LDCONST R10 K5 0x7C200400, // 024D CALL R8 2 - 0x8C240506, // 024E GETMET R9 R2 K6 - 0x582C0007, // 024F LDCONST R11 K7 + 0x8C240541, // 024E GETMET R9 R2 K65 + 0x582C0009, // 024F LDCONST R11 K9 0x7C240400, // 0250 CALL R9 2 - 0x8C280506, // 0251 GETMET R10 R2 K6 - 0x5830000E, // 0252 LDCONST R12 K14 + 0x8C280541, // 0251 GETMET R10 R2 K65 + 0x5830000D, // 0252 LDCONST R12 K13 0x7C280400, // 0253 CALL R10 2 - 0x8C2C0506, // 0254 GETMET R11 R2 K6 - 0x58340010, // 0255 LDCONST R13 K16 + 0x8C2C0541, // 0254 GETMET R11 R2 K65 + 0x5834006B, // 0255 LDCONST R13 K107 0x7C2C0400, // 0256 CALL R11 2 - 0x8C300506, // 0257 GETMET R12 R2 K6 + 0x8C300541, // 0257 GETMET R12 R2 K65 0x543A0003, // 0258 LDINT R14 4 0x7C300400, // 0259 CALL R12 2 - 0xB8365800, // 025A GETNGBL R13 K44 + 0xB836FC00, // 025A GETNGBL R13 K126 0x60380018, // 025B GETGBL R14 G24 - 0x583C005D, // 025C LDCONST R15 K93 + 0x583C00A5, // 025C LDCONST R15 K165 0x5C401000, // 025D MOVE R16 R8 - 0x8C441353, // 025E GETMET R17 R9 K83 + 0x8C44139F, // 025E GETMET R17 R9 K159 0x7C440200, // 025F CALL R17 1 0x5C481400, // 0260 MOVE R18 R10 0x5C4C1600, // 0261 MOVE R19 R11 - 0x8C501953, // 0262 GETMET R20 R12 K83 + 0x8C50199F, // 0262 GETMET R20 R12 K159 0x7C500200, // 0263 CALL R20 1 0x7C380C00, // 0264 CALL R14 6 0x543E0003, // 0265 LDINT R15 4 @@ -2049,8 +1997,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C34180D, // 0274 EQ R13 R12 R13 0x78360005, // 0275 JMPF R13 #027C 0xB8360200, // 0276 GETNGBL R13 K1 - 0x88341B5E, // 0277 GETMBR R13 R13 K94 - 0x900E340D, // 0278 SETMBR R3 K26 R13 + 0x88341BA6, // 0277 GETMBR R13 R13 K166 + 0x900EC40D, // 0278 SETMBR R3 K98 R13 0x4C340000, // 0279 LDNIL R13 0xA0000000, // 027A CLOSE R0 0x80041A00, // 027B RET 1 R13 @@ -2074,13 +2022,13 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x543A001F, // 028D LDINT R14 32 0x24341A0E, // 028E GT R13 R13 R14 0x78360009, // 028F JMPF R13 #029A - 0xB8365800, // 0290 GETNGBL R13 K44 - 0x5838005F, // 0291 LDCONST R14 K95 - 0x583C000E, // 0292 LDCONST R15 K14 + 0xB836FC00, // 0290 GETNGBL R13 K126 + 0x583800A7, // 0291 LDCONST R14 K167 + 0x583C000D, // 0292 LDCONST R15 K13 0x7C340400, // 0293 CALL R13 2 0xB8360200, // 0294 GETNGBL R13 K1 - 0x88341B60, // 0295 GETMBR R13 R13 K96 - 0x900E340D, // 0296 SETMBR R3 K26 R13 + 0x88341B63, // 0295 GETMBR R13 R13 K99 + 0x900EC40D, // 0296 SETMBR R3 K98 R13 0x4C340000, // 0297 LDNIL R13 0xA0000000, // 0298 CLOSE R0 0x80041A00, // 0299 RET 1 R13 @@ -2088,47 +2036,47 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x40360A0D, // 029B CONNECT R13 K5 R13 0x9434120D, // 029C GETIDX R13 R9 R13 0x543A001F, // 029D LDINT R14 32 - 0x40381D40, // 029E CONNECT R14 R14 K64 + 0x40381D8E, // 029E CONNECT R14 R14 K142 0x9438120E, // 029F GETIDX R14 R9 R14 - 0x883C0116, // 02A0 GETMBR R15 R0 K22 - 0x8C3C1F61, // 02A1 GETMET R15 R15 K97 + 0x883C0136, // 02A0 GETMBR R15 R0 K54 + 0x8C3C1FA8, // 02A1 GETMET R15 R15 K168 0x5C441000, // 02A2 MOVE R17 R8 0x5C481600, // 02A3 MOVE R18 R11 0x5C4C1400, // 02A4 MOVE R19 R10 0x5C501800, // 02A5 MOVE R20 R12 0x5C541A00, // 02A6 MOVE R21 R13 0x5C581C00, // 02A7 MOVE R22 R14 - 0x8C5C0354, // 02A8 GETMET R23 R1 K84 + 0x8C5C0335, // 02A8 GETMET R23 R1 K53 0x7C5C0200, // 02A9 CALL R23 1 0x7C3C1000, // 02AA CALL R15 8 0x503C0200, // 02AB LDBOOL R15 1 0 0xA0000000, // 02AC CLOSE R0 0x80041E00, // 02AD RET 1 R15 0x7002001B, // 02AE JMP #02CB - 0x1C200F07, // 02AF EQ R8 R7 K7 + 0x1C200F09, // 02AF EQ R8 R7 K9 0x78220011, // 02B0 JMPF R8 #02C3 - 0x8C200506, // 02B1 GETMET R8 R2 K6 + 0x8C200541, // 02B1 GETMET R8 R2 K65 0x58280005, // 02B2 LDCONST R10 K5 0x7C200400, // 02B3 CALL R8 2 - 0xB8265800, // 02B4 GETNGBL R9 K44 + 0xB826FC00, // 02B4 GETNGBL R9 K126 0x60280008, // 02B5 GETGBL R10 G8 0x5C2C1000, // 02B6 MOVE R11 R8 0x7C280200, // 02B7 CALL R10 1 - 0x002AC40A, // 02B8 ADD R10 K98 R10 - 0x582C0010, // 02B9 LDCONST R11 K16 + 0x002B520A, // 02B8 ADD R10 K169 R10 + 0x582C006B, // 02B9 LDCONST R11 K107 0x7C240400, // 02BA CALL R9 2 - 0x88240116, // 02BB GETMBR R9 R0 K22 - 0x8C241363, // 02BC GETMET R9 R9 K99 + 0x88240136, // 02BB GETMBR R9 R0 K54 + 0x8C2413AA, // 02BC GETMET R9 R9 K170 0x5C2C1000, // 02BD MOVE R11 R8 0x7C240400, // 02BE CALL R9 2 0x50240200, // 02BF LDBOOL R9 1 0 0xA0000000, // 02C0 CLOSE R0 0x80041200, // 02C1 RET 1 R9 0x70020007, // 02C2 JMP #02CB - 0x1C200F0E, // 02C3 EQ R8 R7 K14 + 0x1C200F0D, // 02C3 EQ R8 R7 K13 0x78220005, // 02C4 JMPF R8 #02CB - 0x88200116, // 02C5 GETMBR R8 R0 K22 - 0x8C201164, // 02C6 GETMET R8 R8 K100 + 0x88200136, // 02C5 GETMBR R8 R0 K54 + 0x8C2011AB, // 02C6 GETMET R8 R8 K171 0x7C200200, // 02C7 CALL R8 1 0x50200200, // 02C8 LDBOOL R8 1 0 0xA0000000, // 02C9 CLOSE R0 @@ -2146,7 +2094,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x60200003, // 02D5 GETGBL R8 G3 0x5C240000, // 02D6 MOVE R9 R0 0x7C200200, // 02D7 CALL R8 1 - 0x8C201165, // 02D8 GETMET R8 R8 K101 + 0x8C2011AC, // 02D8 GETMET R8 R8 K172 0x5C280200, // 02D9 MOVE R10 R1 0x5C2C0400, // 02DA MOVE R11 R2 0x5C300600, // 02DB MOVE R12 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h index 1372389f8..f69f28986 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h @@ -3,6 +3,40 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Fan' ktab size: 30, total: 64 (saved 272 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Fan[30] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(shadow_fan_mode), + /* K2 */ be_nested_str_weak(attribute_updated), + /* K3 */ be_nested_str_weak(shadow_fan_speed_pct), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(scale_uint), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(find), + /* K9 */ be_nested_str_weak(FanMode), + /* K10 */ be_nested_str_weak(set_fan_mode), + /* K11 */ be_nested_str_weak(FanSpeed255), + /* K12 */ be_nested_str_weak(set_fan_speed_pct), + /* K13 */ be_nested_str_weak(FanSpeed), + /* K14 */ be_const_int(0), + /* K15 */ be_const_int(1), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(matter), + /* K18 */ be_nested_str_weak(TLV), + /* K19 */ be_nested_str_weak(cluster), + /* K20 */ be_nested_str_weak(attribute), + /* K21 */ be_nested_str_weak(update_shadow_lazy), + /* K22 */ be_nested_str_weak(int), + /* K23 */ be_nested_str_weak(publish_command), + /* K24 */ be_nested_str_weak(status), + /* K25 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K26 */ be_nested_str_weak(init), + /* K27 */ be_nested_str_weak(set), + /* K28 */ be_nested_str_weak(U1), + /* K29 */ be_nested_str_weak(read_attribute), +}; + extern const bclass be_class_Matter_Plugin_Fan; @@ -13,22 +47,13 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_mode, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(shadow_fan_mode), - /* K2 */ be_nested_str_weak(attribute_updated), - /* K3 */ be_nested_str_weak(shadow_fan_speed_pct), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(scale_uint), - /* K7 */ be_const_int(2), - }), + &be_ktab_class_Matter_Plugin_Fan, /* shared constants */ be_str_weak(set_fan_mode), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ @@ -93,62 +118,52 @@ be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ be_nested_proto( 13, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(FanMode), - /* K2 */ be_nested_str_weak(set_fan_mode), - /* K3 */ be_nested_str_weak(FanSpeed255), - /* K4 */ be_nested_str_weak(set_fan_speed_pct), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(scale_uint), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(FanSpeed), - }), + &be_ktab_class_Matter_Plugin_Fan, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 + 0x8C080308, // 0000 GETMET R2 R1 K8 + 0x58100009, // 0001 LDCONST R4 K9 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x8C0C010A, // 0006 GETMET R3 R0 K10 0x60140009, // 0007 GETGBL R5 G9 0x5C180400, // 0008 MOVE R6 R2 0x7C140200, // 0009 CALL R5 1 0x7C0C0400, // 000A CALL R3 2 - 0x8C0C0300, // 000B GETMET R3 R1 K0 - 0x58140003, // 000C LDCONST R5 K3 + 0x8C0C0308, // 000B GETMET R3 R1 K8 + 0x5814000B, // 000C LDCONST R5 K11 0x7C0C0400, // 000D CALL R3 2 0x4C100000, // 000E LDNIL R4 0x20100604, // 000F NE R4 R3 R4 0x7812000B, // 0010 JMPF R4 #001D - 0x8C100104, // 0011 GETMET R4 R0 K4 + 0x8C10010C, // 0011 GETMET R4 R0 K12 0xB81A0A00, // 0012 GETNGBL R6 K5 0x8C180D06, // 0013 GETMET R6 R6 K6 0x60200009, // 0014 GETGBL R8 G9 0x5C240600, // 0015 MOVE R9 R3 0x7C200200, // 0016 CALL R8 1 - 0x58240007, // 0017 LDCONST R9 K7 + 0x58240000, // 0017 LDCONST R9 K0 0x542A00FE, // 0018 LDINT R10 255 - 0x582C0007, // 0019 LDCONST R11 K7 + 0x582C0000, // 0019 LDCONST R11 K0 0x54320063, // 001A LDINT R12 100 0x7C180C00, // 001B CALL R6 6 0x7C100400, // 001C CALL R4 2 - 0x8C100300, // 001D GETMET R4 R1 K0 - 0x58180008, // 001E LDCONST R6 K8 + 0x8C100308, // 001D GETMET R4 R1 K8 + 0x5818000D, // 001E LDCONST R6 K13 0x7C100400, // 001F CALL R4 2 0x4C140000, // 0020 LDNIL R5 0x20140805, // 0021 NE R5 R4 R5 0x78160004, // 0022 JMPF R5 #0028 - 0x8C140104, // 0023 GETMET R5 R0 K4 + 0x8C14010C, // 0023 GETMET R5 R0 K12 0x601C0009, // 0024 GETGBL R7 G9 0x5C200800, // 0025 MOVE R8 R4 0x7C1C0200, // 0026 CALL R7 1 @@ -167,23 +182,13 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(shadow_fan_speed_pct), - /* K2 */ be_nested_str_weak(attribute_updated), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(shadow_fan_mode), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(scale_uint), - /* K7 */ be_const_int(1), - /* K8 */ be_const_int(3), - }), + &be_ktab_class_Matter_Plugin_Fan, /* shared constants */ be_str_weak(set_fan_speed_pct), &be_const_str_solidified, ( &(const binstruction[42]) { /* code */ @@ -191,42 +196,42 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 0x5C040400, // 0003 MOVE R1 R2 - 0x14080300, // 0004 LT R2 R1 K0 + 0x1408030E, // 0004 LT R2 R1 K14 0x780A0000, // 0005 JMPF R2 #0007 - 0x58040000, // 0006 LDCONST R1 K0 + 0x5804000E, // 0006 LDCONST R1 K14 0x540A0063, // 0007 LDINT R2 100 0x24080202, // 0008 GT R2 R1 R2 0x780A0000, // 0009 JMPF R2 #000B 0x54060063, // 000A LDINT R1 100 - 0x88080101, // 000B GETMBR R2 R0 K1 + 0x88080103, // 000B GETMBR R2 R0 K3 0x20080202, // 000C NE R2 R1 R2 0x780A001A, // 000D JMPF R2 #0029 0x8C080102, // 000E GETMET R2 R0 K2 0x54120201, // 000F LDINT R4 514 - 0x58140003, // 0010 LDCONST R5 K3 + 0x58140007, // 0010 LDCONST R5 K7 0x7C080600, // 0011 CALL R2 3 - 0x90020201, // 0012 SETMBR R0 K1 R1 - 0x88080104, // 0013 GETMBR R2 R0 K4 - 0x1C0C0300, // 0014 EQ R3 R1 K0 + 0x90020601, // 0012 SETMBR R0 K3 R1 + 0x88080101, // 0013 GETMBR R2 R0 K1 + 0x1C0C030E, // 0014 EQ R3 R1 K14 0x780E0001, // 0015 JMPF R3 #0018 - 0x58080000, // 0016 LDCONST R2 K0 + 0x5808000E, // 0016 LDCONST R2 K14 0x70020008, // 0017 JMP #0021 0xB80E0A00, // 0018 GETNGBL R3 K5 0x8C0C0706, // 0019 GETMET R3 R3 K6 0x5C140200, // 001A MOVE R5 R1 - 0x58180007, // 001B LDCONST R6 K7 + 0x5818000F, // 001B LDCONST R6 K15 0x541E0063, // 001C LDINT R7 100 - 0x58200007, // 001D LDCONST R8 K7 - 0x58240008, // 001E LDCONST R9 K8 + 0x5820000F, // 001D LDCONST R8 K15 + 0x58240010, // 001E LDCONST R9 K16 0x7C0C0C00, // 001F CALL R3 6 0x5C080600, // 0020 MOVE R2 R3 - 0x880C0104, // 0021 GETMBR R3 R0 K4 + 0x880C0101, // 0021 GETMBR R3 R0 K1 0x200C0403, // 0022 NE R3 R2 R3 0x780E0004, // 0023 JMPF R3 #0029 - 0x90020802, // 0024 SETMBR R0 K4 R2 + 0x90020202, // 0024 SETMBR R0 K1 R2 0x8C0C0102, // 0025 GETMET R3 R0 K2 0x54160201, // 0026 LDINT R5 514 - 0x58180000, // 0027 LDCONST R6 K0 + 0x5818000E, // 0027 LDCONST R6 K14 0x7C0C0600, // 0028 CALL R3 3 0x80000000, // 0029 RET 0 }) @@ -242,111 +247,90 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ be_nested_proto( 21, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(int), - /* K7 */ be_nested_str_weak(set_fan_mode), - /* K8 */ be_nested_str_weak(publish_command), - /* K9 */ be_nested_str_weak(FanMode), - /* K10 */ be_nested_str_weak(shadow_fan_mode), - /* K11 */ be_nested_str_weak(FanSpeed), - /* K12 */ be_nested_str_weak(shadow_fan_speed_pct), - /* K13 */ be_nested_str_weak(FanSpeed255), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(scale_uint), - /* K16 */ be_nested_str_weak(status), - /* K17 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K18 */ be_const_int(2), - /* K19 */ be_nested_str_weak(set_fan_speed_pct), - }), + &be_ktab_class_Matter_Plugin_Fan, /* shared constants */ be_str_weak(write_attribute), &be_const_str_solidified, ( &(const binstruction[78]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8122200, // 0000 GETNGBL R4 K17 + 0x88100912, // 0001 GETMBR R4 R4 K18 + 0x88140513, // 0002 GETMBR R5 R2 K19 + 0x88180514, // 0003 GETMBR R6 R2 K20 0x541E0201, // 0004 LDINT R7 514 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0044, // 0006 JMPF R7 #004C - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0115, // 0007 GETMET R7 R0 K21 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x1C1C0D00, // 0009 EQ R7 R6 K0 0x781E001F, // 000A JMPF R7 #002B 0x601C0004, // 000B GETGBL R7 G4 0x5C200600, // 000C MOVE R8 R3 0x7C1C0200, // 000D CALL R7 1 - 0x1C1C0F06, // 000E EQ R7 R7 K6 + 0x1C1C0F16, // 000E EQ R7 R7 K22 0x781E0014, // 000F JMPF R7 #0025 - 0x8C1C0107, // 0010 GETMET R7 R0 K7 + 0x8C1C010A, // 0010 GETMET R7 R0 K10 0x5C240600, // 0011 MOVE R9 R3 0x7C1C0400, // 0012 CALL R7 2 - 0x8C1C0108, // 0013 GETMET R7 R0 K8 + 0x8C1C0117, // 0013 GETMET R7 R0 K23 0x58240009, // 0014 LDCONST R9 K9 - 0x8828010A, // 0015 GETMBR R10 R0 K10 - 0x582C000B, // 0016 LDCONST R11 K11 - 0x8830010C, // 0017 GETMBR R12 R0 K12 - 0x5834000D, // 0018 LDCONST R13 K13 - 0xB83A1C00, // 0019 GETNGBL R14 K14 - 0x8C381D0F, // 001A GETMET R14 R14 K15 - 0x8840010C, // 001B GETMBR R16 R0 K12 - 0x58440005, // 001C LDCONST R17 K5 + 0x88280101, // 0015 GETMBR R10 R0 K1 + 0x582C000D, // 0016 LDCONST R11 K13 + 0x88300103, // 0017 GETMBR R12 R0 K3 + 0x5834000B, // 0018 LDCONST R13 K11 + 0xB83A0A00, // 0019 GETNGBL R14 K5 + 0x8C381D06, // 001A GETMET R14 R14 K6 + 0x88400103, // 001B GETMBR R16 R0 K3 + 0x58440000, // 001C LDCONST R17 K0 0x544A0063, // 001D LDINT R18 100 - 0x584C0005, // 001E LDCONST R19 K5 + 0x584C0000, // 001E LDCONST R19 K0 0x545200FE, // 001F LDINT R20 255 0x7C380C00, // 0020 CALL R14 6 0x7C1C0E00, // 0021 CALL R7 7 0x501C0200, // 0022 LDBOOL R7 1 0 0x80040E00, // 0023 RET 1 R7 0x70020004, // 0024 JMP #002A - 0xB81E0000, // 0025 GETNGBL R7 K0 - 0x881C0F11, // 0026 GETMBR R7 R7 K17 - 0x900A2007, // 0027 SETMBR R2 K16 R7 + 0xB81E2200, // 0025 GETNGBL R7 K17 + 0x881C0F19, // 0026 GETMBR R7 R7 K25 + 0x900A3007, // 0027 SETMBR R2 K24 R7 0x501C0000, // 0028 LDBOOL R7 0 0 0x80040E00, // 0029 RET 1 R7 0x70020020, // 002A JMP #004C - 0x1C1C0D12, // 002B EQ R7 R6 K18 + 0x1C1C0D07, // 002B EQ R7 R6 K7 0x781E001E, // 002C JMPF R7 #004C 0x601C0004, // 002D GETGBL R7 G4 0x5C200600, // 002E MOVE R8 R3 0x7C1C0200, // 002F CALL R7 1 - 0x1C1C0F06, // 0030 EQ R7 R7 K6 + 0x1C1C0F16, // 0030 EQ R7 R7 K22 0x781E0014, // 0031 JMPF R7 #0047 - 0x8C1C0113, // 0032 GETMET R7 R0 K19 + 0x8C1C010C, // 0032 GETMET R7 R0 K12 0x5C240600, // 0033 MOVE R9 R3 0x7C1C0400, // 0034 CALL R7 2 - 0x8C1C0108, // 0035 GETMET R7 R0 K8 + 0x8C1C0117, // 0035 GETMET R7 R0 K23 0x58240009, // 0036 LDCONST R9 K9 - 0x8828010A, // 0037 GETMBR R10 R0 K10 - 0x582C000B, // 0038 LDCONST R11 K11 - 0x8830010C, // 0039 GETMBR R12 R0 K12 - 0x5834000D, // 003A LDCONST R13 K13 - 0xB83A1C00, // 003B GETNGBL R14 K14 - 0x8C381D0F, // 003C GETMET R14 R14 K15 - 0x8840010C, // 003D GETMBR R16 R0 K12 - 0x58440005, // 003E LDCONST R17 K5 + 0x88280101, // 0037 GETMBR R10 R0 K1 + 0x582C000D, // 0038 LDCONST R11 K13 + 0x88300103, // 0039 GETMBR R12 R0 K3 + 0x5834000B, // 003A LDCONST R13 K11 + 0xB83A0A00, // 003B GETNGBL R14 K5 + 0x8C381D06, // 003C GETMET R14 R14 K6 + 0x88400103, // 003D GETMBR R16 R0 K3 + 0x58440000, // 003E LDCONST R17 K0 0x544A0063, // 003F LDINT R18 100 - 0x584C0005, // 0040 LDCONST R19 K5 + 0x584C0000, // 0040 LDCONST R19 K0 0x545200FE, // 0041 LDINT R20 255 0x7C380C00, // 0042 CALL R14 6 0x7C1C0E00, // 0043 CALL R7 7 0x501C0200, // 0044 LDBOOL R7 1 0 0x80040E00, // 0045 RET 1 R7 0x70020004, // 0046 JMP #004C - 0xB81E0000, // 0047 GETNGBL R7 K0 - 0x881C0F11, // 0048 GETMBR R7 R7 K17 - 0x900A2007, // 0049 SETMBR R2 K16 R7 + 0xB81E2200, // 0047 GETNGBL R7 K17 + 0x881C0F19, // 0048 GETMBR R7 R7 K25 + 0x900A3007, // 0049 SETMBR R2 K24 R7 0x501C0000, // 004A LDBOOL R7 0 0 0x80040E00, // 004B RET 1 R7 0x4C1C0000, // 004C LDNIL R7 @@ -364,31 +348,26 @@ be_local_closure(class_Matter_Plugin_Fan_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_fan_mode), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(shadow_fan_speed_pct), - }), + &be_ktab_class_Matter_Plugin_Fan, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C10091A, // 0003 GETMET R4 R4 K26 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x90020302, // 0008 SETMBR R0 K1 K2 - 0x90020702, // 0009 SETMBR R0 K3 K2 + 0x90020300, // 0008 SETMBR R0 K1 K0 + 0x90020700, // 0009 SETMBR R0 K3 K0 0x80000000, // 000A RET 0 }) ) @@ -403,75 +382,60 @@ be_local_closure(class_Matter_Plugin_Fan_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(shadow_fan_mode), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(shadow_fan_speed_pct), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Fan, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[49]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8122200, // 0000 GETNGBL R4 K17 + 0x88100912, // 0001 GETMBR R4 R4 K18 + 0x88140513, // 0002 GETMBR R5 R2 K19 + 0x88180514, // 0003 GETMBR R6 R2 K20 0x541E0201, // 0004 LDINT R7 514 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0020, // 0006 JMPF R7 #0028 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0115, // 0007 GETMET R7 R0 K21 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x1C1C0D00, // 0009 EQ R7 R6 K0 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 - 0x88280108, // 000D GETMBR R10 R0 K8 + 0x8C1C071B, // 000B GETMET R7 R3 K27 + 0x8824091C, // 000C GETMBR R9 R4 K28 + 0x88280101, // 000D GETMBR R10 R0 K1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020016, // 0010 JMP #0028 - 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x1C1C0D0F, // 0011 EQ R7 R6 K15 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240907, // 0014 GETMBR R9 R4 K7 - 0x5828000A, // 0015 LDCONST R10 K10 + 0x8C1C071B, // 0013 GETMET R7 R3 K27 + 0x8824091C, // 0014 GETMBR R9 R4 K28 + 0x58280007, // 0015 LDCONST R10 K7 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x7002000E, // 0018 JMP #0028 - 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x1C1C0D07, // 0019 EQ R7 R6 K7 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C0706, // 001B GETMET R7 R3 K6 - 0x88240907, // 001C GETMBR R9 R4 K7 - 0x8828010B, // 001D GETMBR R10 R0 K11 + 0x8C1C071B, // 001B GETMET R7 R3 K27 + 0x8824091C, // 001C GETMBR R9 R4 K28 + 0x88280103, // 001D GETMBR R10 R0 K3 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x70020006, // 0020 JMP #0028 - 0x1C1C0D0C, // 0021 EQ R7 R6 K12 + 0x1C1C0D10, // 0021 EQ R7 R6 K16 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C0706, // 0023 GETMET R7 R3 K6 - 0x88240907, // 0024 GETMBR R9 R4 K7 - 0x8828010B, // 0025 GETMBR R10 R0 K11 + 0x8C1C071B, // 0023 GETMET R7 R3 K27 + 0x8824091C, // 0024 GETMBR R9 R4 K28 + 0x88280103, // 0025 GETMBR R10 R0 K3 0x7C1C0600, // 0026 CALL R7 3 0x80040E00, // 0027 RET 1 R7 0x601C0003, // 0028 GETGBL R7 G3 0x5C200000, // 0029 MOVE R8 R0 0x7C1C0200, // 002A CALL R7 1 - 0x8C1C0F0D, // 002B GETMET R7 R7 K13 + 0x8C1C0F1D, // 002B GETMET R7 R7 K29 0x5C240200, // 002C MOVE R9 R1 0x5C280400, // 002D MOVE R10 R2 0x5C2C0600, // 002E MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h index 362878d3c..349d2a6cd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h @@ -3,6 +3,59 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Light0' ktab size: 49, total: 87 (saved 304 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light0[49] = { + /* K0 */ be_nested_str_weak(BRIDGE), + /* K1 */ be_nested_str_weak(call_remote_sync), + /* K2 */ be_nested_str_weak(Power), + /* K3 */ be_nested_str_weak(tasmota_relay_index), + /* K4 */ be_nested_str_weak(1), + /* K5 */ be_nested_str_weak(0), + /* K6 */ be_nested_str_weak(parse_status), + /* K7 */ be_nested_str_weak(VIRTUAL), + /* K8 */ be_nested_str_weak(shadow_onoff), + /* K9 */ be_nested_str_weak(attribute_updated), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(set_power), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(update_shadow), + /* K15 */ be_nested_str_weak(light), + /* K16 */ be_nested_str_weak(set), + /* K17 */ be_nested_str_weak(power), + /* K18 */ be_nested_str_weak(light_index), + /* K19 */ be_nested_str_weak(webserver), + /* K20 */ be_nested_str_weak(web_values_prefix), + /* K21 */ be_nested_str_weak(content_send), + /* K22 */ be_nested_str_weak(_X25s), + /* K23 */ be_nested_str_weak(web_value_onoff), + /* K24 */ be_nested_str_weak(init), + /* K25 */ be_nested_str_weak(find), + /* K26 */ be_nested_str_weak(ARG), + /* K27 */ be_const_int(0), + /* K28 */ be_const_int(1), + /* K29 */ be_nested_str_weak(set_onoff), + /* K30 */ be_nested_str_weak(update_virtual), + /* K31 */ be_nested_str_weak(matter), + /* K32 */ be_nested_str_weak(TLV), + /* K33 */ be_nested_str_weak(cluster), + /* K34 */ be_nested_str_weak(attribute), + /* K35 */ be_nested_str_weak(update_shadow_lazy), + /* K36 */ be_nested_str_weak(BOOL), + /* K37 */ be_nested_str_weak(read_attribute), + /* K38 */ be_nested_str_weak(get_name), + /* K39 */ be_nested_str_weak(PREFIX), + /* K40 */ be_nested_str_weak(html_escape), + /* K41 */ be_nested_str_weak(), + /* K42 */ be_nested_str_weak(get_power), + /* K43 */ be_nested_str_weak(command), + /* K44 */ be_nested_str_weak(publish_command), + /* K45 */ be_const_int(2), + /* K46 */ be_nested_str_weak(contains), + /* K47 */ be_nested_str_weak(POWER), + /* K48 */ be_nested_str_weak(ON), +}; + extern const bclass be_class_Matter_Plugin_Light0; @@ -13,33 +66,13 @@ be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(call_remote_sync), - /* K2 */ be_nested_str_weak(Power), - /* K3 */ be_nested_str_weak(tasmota_relay_index), - /* K4 */ be_nested_str_weak(1), - /* K5 */ be_nested_str_weak(0), - /* K6 */ be_nested_str_weak(parse_status), - /* K7 */ be_nested_str_weak(VIRTUAL), - /* K8 */ be_nested_str_weak(shadow_onoff), - /* K9 */ be_nested_str_weak(attribute_updated), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(set_power), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(update_shadow), - /* K15 */ be_nested_str_weak(light), - /* K16 */ be_nested_str_weak(set), - /* K17 */ be_nested_str_weak(power), - /* K18 */ be_nested_str_weak(light_index), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(set_onoff), &be_const_str_solidified, ( &(const binstruction[56]) { /* code */ @@ -112,31 +145,24 @@ be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4062600, // 0000 IMPORT R1 K19 + 0x8C080114, // 0001 GETMET R2 R0 K20 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080315, // 0003 GETMET R2 R1 K21 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x58140016, // 0005 LDCONST R5 K22 + 0x8C180117, // 0006 GETMET R6 R0 K23 + 0x88200108, // 0007 GETMBR R8 R0 K8 0x7C180400, // 0008 CALL R6 2 0x7C100400, // 0009 CALL R4 2 0x7C080400, // 000A CALL R2 2 @@ -154,28 +180,23 @@ be_local_closure(class_Matter_Plugin_Light0_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_onoff), - /* K1 */ be_nested_str_weak(light_index), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(init), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x50100000, // 0000 LDBOOL R4 0 0 - 0x90020004, // 0001 SETMBR R0 K0 R4 - 0x90020302, // 0002 SETMBR R0 K1 K2 + 0x90021004, // 0001 SETMBR R0 K8 R4 + 0x9002250A, // 0002 SETMBR R0 K18 K10 0x60100003, // 0003 GETGBL R4 G3 0x5C140000, // 0004 MOVE R5 R0 0x7C100200, // 0005 CALL R4 1 - 0x8C100903, // 0006 GETMET R4 R4 K3 + 0x8C100918, // 0006 GETMET R4 R4 K24 0x5C180200, // 0007 MOVE R6 R1 0x5C1C0400, // 0008 MOVE R7 R2 0x5C200600, // 0009 MOVE R8 R3 @@ -194,37 +215,31 @@ be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_relay_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x8C0C0319, // 0001 GETMET R3 R1 K25 + 0x8814011A, // 0002 GETMBR R5 R0 K26 0x4C180000, // 0003 LDNIL R6 0x7C0C0600, // 0004 CALL R3 3 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x90020602, // 0006 SETMBR R0 K3 R2 + 0x88080103, // 0007 GETMBR R2 R0 K3 0x4C0C0000, // 0008 LDNIL R3 0x20080403, // 0009 NE R2 R2 R3 0x780A0003, // 000A JMPF R2 #000F - 0x88080100, // 000B GETMBR R2 R0 K0 - 0x18080503, // 000C LE R2 R2 K3 + 0x88080103, // 000B GETMBR R2 R0 K3 + 0x1808051B, // 000C LE R2 R2 K27 0x780A0000, // 000D JMPF R2 #000F - 0x90020104, // 000E SETMBR R0 K0 K4 + 0x9002071C, // 000E SETMBR R0 K3 K28 0x80000000, // 000F RET 0 }) ) @@ -239,28 +254,23 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Power), - /* K2 */ be_nested_str_weak(set_onoff), - /* K3 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 + 0x8C080319, // 0000 GETMET R2 R1 K25 + 0x58100002, // 0001 LDCONST R4 K2 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x8C0C011D, // 0006 GETMET R3 R0 K29 0x60140017, // 0007 GETGBL R5 G23 0x5C180400, // 0008 MOVE R6 R2 0x7C140200, // 0009 CALL R5 1 @@ -268,7 +278,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ 0x600C0003, // 000B GETGBL R3 G3 0x5C100000, // 000C MOVE R4 R0 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0703, // 000E GETMET R3 R3 K3 + 0x8C0C071E, // 000E GETMET R3 R3 K30 0x5C140200, // 000F MOVE R5 R1 0x7C0C0400, // 0010 CALL R3 2 0x80000000, // 0011 RET 0 @@ -285,47 +295,36 @@ be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(shadow_onoff), - /* K9 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8123E00, // 0000 GETNGBL R4 K31 + 0x88100920, // 0001 GETMBR R4 R4 K32 + 0x88140521, // 0002 GETMBR R5 R2 K33 + 0x88180522, // 0003 GETMBR R6 R2 K34 0x541E0005, // 0004 LDINT R7 6 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0008, // 0006 JMPF R7 #0010 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0123, // 0007 GETMET R7 R0 K35 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x1C1C0D0A, // 0009 EQ R7 R6 K10 0x781E0004, // 000A JMPF R7 #0010 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 + 0x8C1C0710, // 000B GETMET R7 R3 K16 + 0x88240924, // 000C GETMBR R9 R4 K36 0x88280108, // 000D GETMBR R10 R0 K8 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x601C0003, // 0010 GETGBL R7 G3 0x5C200000, // 0011 MOVE R8 R0 0x7C1C0200, // 0012 CALL R7 1 - 0x8C1C0F09, // 0013 GETMET R7 R7 K9 + 0x8C1C0F25, // 0013 GETMET R7 R7 K37 0x5C240200, // 0014 MOVE R9 R1 0x5C280400, // 0015 MOVE R10 R2 0x5C2C0600, // 0016 MOVE R11 R3 @@ -344,27 +343,18 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Power), - /* K3 */ be_nested_str_weak(tasmota_relay_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4062600, // 0000 IMPORT R1 K19 + 0x8C080126, // 0001 GETMET R2 R0 K38 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A @@ -373,15 +363,15 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ 0x7C0C0200, // 0007 CALL R3 1 0x000E0403, // 0008 ADD R3 K2 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x8C0C0315, // 000A GETMET R3 R1 K21 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 + 0x88180127, // 000C GETMBR R6 R0 K39 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x8C1C0328, // 000E GETMET R7 R1 K40 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 + 0x581C0029, // 0012 LDCONST R7 K41 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -398,13 +388,13 @@ be_local_closure(class_Matter_Plugin_Light0__X3Clambda_X3E, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 0, /* varg */ + 8, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -425,58 +415,47 @@ be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(tasmota_relay_index), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(get_power), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(shadow_onoff), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(update_shadow), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040107, // 0000 GETMBR R1 R0 K7 0x74060018, // 0001 JMPT R1 #001B - 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x88040100, // 0002 GETMBR R1 R0 K0 0x74060016, // 0003 JMPT R1 #001B - 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x88040103, // 0004 GETMBR R1 R0 K3 0x4C080000, // 0005 LDNIL R2 0x20040202, // 0006 NE R1 R1 R2 0x78060012, // 0007 JMPF R1 #001B - 0xB8060600, // 0008 GETNGBL R1 K3 - 0x8C040304, // 0009 GETMET R1 R1 K4 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x040C0705, // 000B SUB R3 R3 K5 + 0xB8061600, // 0008 GETNGBL R1 K11 + 0x8C04032A, // 0009 GETMET R1 R1 K42 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x040C070D, // 000B SUB R3 R3 K13 0x7C040400, // 000C CALL R1 2 0x4C080000, // 000D LDNIL R2 0x20080202, // 000E NE R2 R1 R2 0x780A000A, // 000F JMPF R2 #001B - 0x88080106, // 0010 GETMBR R2 R0 K6 + 0x88080108, // 0010 GETMBR R2 R0 K8 0x600C0017, // 0011 GETGBL R3 G23 0x5C100200, // 0012 MOVE R4 R1 0x7C0C0200, // 0013 CALL R3 1 0x20080403, // 0014 NE R2 R2 R3 0x780A0003, // 0015 JMPF R2 #001A - 0x8C080107, // 0016 GETMET R2 R0 K7 + 0x8C080109, // 0016 GETMET R2 R0 K9 0x54120005, // 0017 LDINT R4 6 - 0x58140008, // 0018 LDCONST R5 K8 + 0x5814000A, // 0018 LDCONST R5 K10 0x7C080600, // 0019 CALL R2 3 - 0x90020C01, // 001A SETMBR R0 K6 R1 + 0x90021001, // 001A SETMBR R0 K8 R1 0x60040003, // 001B GETGBL R1 G3 0x5C080000, // 001C MOVE R2 R0 0x7C040200, // 001D CALL R1 1 - 0x8C040309, // 001E GETMET R1 R1 K9 + 0x8C04030E, // 001E GETMET R1 R1 K14 0x7C040200, // 001F CALL R1 1 0x80000000, // 0020 RET 0 }) @@ -492,77 +471,64 @@ be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set_onoff), - /* K7 */ be_nested_str_weak(publish_command), - /* K8 */ be_nested_str_weak(Power), - /* K9 */ be_const_int(1), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(shadow_onoff), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 + 0xB8123E00, // 0000 GETNGBL R4 K31 + 0x88100920, // 0001 GETMBR R4 R4 K32 + 0x88140721, // 0002 GETMBR R5 R3 K33 + 0x8818072B, // 0003 GETMBR R6 R3 K43 0x541E0005, // 0004 LDINT R7 6 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E002B, // 0006 JMPF R7 #0033 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0123, // 0007 GETMET R7 R0 K35 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x1C1C0D0A, // 0009 EQ R7 R6 K10 0x781E0009, // 000A JMPF R7 #0015 - 0x8C1C0106, // 000B GETMET R7 R0 K6 + 0x8C1C011D, // 000B GETMET R7 R0 K29 0x50240000, // 000C LDBOOL R9 0 0 0x7C1C0400, // 000D CALL R7 2 - 0x8C1C0107, // 000E GETMET R7 R0 K7 - 0x58240008, // 000F LDCONST R9 K8 - 0x58280005, // 0010 LDCONST R10 K5 + 0x8C1C012C, // 000E GETMET R7 R0 K44 + 0x58240002, // 000F LDCONST R9 K2 + 0x5828000A, // 0010 LDCONST R10 K10 0x7C1C0600, // 0011 CALL R7 3 0x501C0200, // 0012 LDBOOL R7 1 0 0x80040E00, // 0013 RET 1 R7 0x7002001D, // 0014 JMP #0033 - 0x1C1C0D09, // 0015 EQ R7 R6 K9 + 0x1C1C0D1C, // 0015 EQ R7 R6 K28 0x781E0009, // 0016 JMPF R7 #0021 - 0x8C1C0106, // 0017 GETMET R7 R0 K6 + 0x8C1C011D, // 0017 GETMET R7 R0 K29 0x50240200, // 0018 LDBOOL R9 1 0 0x7C1C0400, // 0019 CALL R7 2 - 0x8C1C0107, // 001A GETMET R7 R0 K7 - 0x58240008, // 001B LDCONST R9 K8 - 0x58280009, // 001C LDCONST R10 K9 + 0x8C1C012C, // 001A GETMET R7 R0 K44 + 0x58240002, // 001B LDCONST R9 K2 + 0x5828001C, // 001C LDCONST R10 K28 0x7C1C0600, // 001D CALL R7 3 0x501C0200, // 001E LDBOOL R7 1 0 0x80040E00, // 001F RET 1 R7 0x70020011, // 0020 JMP #0033 - 0x1C1C0D0A, // 0021 EQ R7 R6 K10 + 0x1C1C0D2D, // 0021 EQ R7 R6 K45 0x781E000F, // 0022 JMPF R7 #0033 - 0x8C1C0106, // 0023 GETMET R7 R0 K6 - 0x8824010B, // 0024 GETMBR R9 R0 K11 + 0x8C1C011D, // 0023 GETMET R7 R0 K29 + 0x88240108, // 0024 GETMBR R9 R0 K8 0x78260000, // 0025 JMPF R9 #0027 0x50240001, // 0026 LDBOOL R9 0 1 0x50240200, // 0027 LDBOOL R9 1 0 0x7C1C0400, // 0028 CALL R7 2 - 0x8C1C0107, // 0029 GETMET R7 R0 K7 - 0x58240008, // 002A LDCONST R9 K8 - 0x8828010B, // 002B GETMBR R10 R0 K11 + 0x8C1C012C, // 0029 GETMET R7 R0 K44 + 0x58240002, // 002A LDCONST R9 K2 + 0x88280108, // 002B GETMBR R10 R0 K8 0x782A0001, // 002C JMPF R10 #002F - 0x58280009, // 002D LDCONST R10 K9 + 0x5828001C, // 002D LDCONST R10 K28 0x70020000, // 002E JMP #0030 - 0x58280005, // 002F LDCONST R10 K5 + 0x5828000A, // 002F LDCONST R10 K10 0x7C1C0600, // 0030 CALL R7 3 0x501C0200, // 0031 LDBOOL R7 1 0 0x80040E00, // 0032 RET 1 R7 @@ -580,23 +546,13 @@ be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_relay_index), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(POWER), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(ON), - /* K6 */ be_nested_str_weak(shadow_onoff), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Light0, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ @@ -604,38 +560,38 @@ be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E0020, // 0002 JMPF R3 #0024 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x1C100901, // 0005 EQ R4 R4 K1 + 0x88100103, // 0004 GETMBR R4 R0 K3 + 0x1C10090D, // 0005 EQ R4 R4 K13 0x78120009, // 0006 JMPF R4 #0011 - 0x8C100302, // 0007 GETMET R4 R1 K2 - 0x58180003, // 0008 LDCONST R6 K3 + 0x8C10032E, // 0007 GETMET R4 R1 K46 + 0x5818002F, // 0008 LDCONST R6 K47 0x7C100400, // 0009 CALL R4 2 0x78120005, // 000A JMPF R4 #0011 - 0x8C100304, // 000B GETMET R4 R1 K4 - 0x58180003, // 000C LDCONST R6 K3 + 0x8C100319, // 000B GETMET R4 R1 K25 + 0x5818002F, // 000C LDCONST R6 K47 0x7C100400, // 000D CALL R4 2 - 0x1C100905, // 000E EQ R4 R4 K5 + 0x1C100930, // 000E EQ R4 R4 K48 0x5C0C0800, // 000F MOVE R3 R4 0x70020007, // 0010 JMP #0019 - 0x8C100304, // 0011 GETMET R4 R1 K4 + 0x8C100319, // 0011 GETMET R4 R1 K25 0x60180008, // 0012 GETGBL R6 G8 - 0x881C0100, // 0013 GETMBR R7 R0 K0 + 0x881C0103, // 0013 GETMBR R7 R0 K3 0x7C180200, // 0014 CALL R6 1 - 0x001A0606, // 0015 ADD R6 K3 R6 + 0x001A5E06, // 0015 ADD R6 K47 R6 0x7C100400, // 0016 CALL R4 2 - 0x1C100905, // 0017 EQ R4 R4 K5 + 0x1C100930, // 0017 EQ R4 R4 K48 0x5C0C0800, // 0018 MOVE R3 R4 - 0x88100106, // 0019 GETMBR R4 R0 K6 + 0x88100108, // 0019 GETMBR R4 R0 K8 0x60140017, // 001A GETGBL R5 G23 0x5C180600, // 001B MOVE R6 R3 0x7C140200, // 001C CALL R5 1 0x20100805, // 001D NE R4 R4 R5 0x78120004, // 001E JMPF R4 #0024 - 0x8C100107, // 001F GETMET R4 R0 K7 + 0x8C100109, // 001F GETMET R4 R0 K9 0x541A0005, // 0020 LDINT R6 6 - 0x581C0008, // 0021 LDCONST R7 K8 + 0x581C000A, // 0021 LDCONST R7 K10 0x7C100600, // 0022 CALL R4 3 - 0x90020C03, // 0023 SETMBR R0 K6 R3 + 0x90021003, // 0023 SETMBR R0 K8 R3 0x80000000, // 0024 RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h index 2955e45ed..828febd99 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h @@ -3,6 +3,46 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor' ktab size: 36, total: 53 (saved 136 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor[36] = { + /* K0 */ be_nested_str_weak(contains), + /* K1 */ be_nested_str_weak(TempUnit), + /* K2 */ be_nested_str_weak(temp_unit), + /* K3 */ be_nested_str_weak(PressureUnit), + /* K4 */ be_nested_str_weak(pressure_unit), + /* K5 */ be_nested_str_weak(tasmota_sensor_matcher), + /* K6 */ be_nested_str_weak(pre_value), + /* K7 */ be_nested_str_weak(match), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_nested_str_weak(value_changed), + /* K10 */ be_nested_str_weak(tasmota_sensor_filter), + /* K11 */ be_nested_str_weak(find), + /* K12 */ be_nested_str_weak(ARG), + /* K13 */ be_nested_str_weak(tasmota), + /* K14 */ be_nested_str_weak(Rule_Matcher), + /* K15 */ be_nested_str_weak(parse), + /* K16 */ be_nested_str_weak(TEMP_C), + /* K17 */ be_nested_str_weak(PRESSURE_HPA), + /* K18 */ be_nested_str_weak(VIRTUAL), + /* K19 */ be_nested_str_weak(JSON_NAME), + /* K20 */ be_nested_str_weak(init), + /* K21 */ be_nested_str_weak(add_read_sensors_schedule), + /* K22 */ be_nested_str_weak(UPDATE_TIME), + /* K23 */ be_nested_str_weak(string), + /* K24 */ be_nested_str_weak(webserver), + /* K25 */ be_nested_str_weak(html_escape), + /* K26 */ be_nested_str_weak(split), + /* K27 */ be_nested_str_weak(_X23), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str_weak(), + /* K30 */ be_nested_str_weak(get_name), + /* K31 */ be_nested_str_weak(filter_name_html), + /* K32 */ be_nested_str_weak(content_send), + /* K33 */ be_nested_str_weak(PREFIX), + /* K34 */ be_nested_str_weak(bool), + /* K35 */ be_nested_str_weak(update_virtual), +}; + extern const bclass be_class_Matter_Plugin_Sensor; @@ -13,24 +53,13 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_status, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(contains), - /* K1 */ be_nested_str_weak(TempUnit), - /* K2 */ be_nested_str_weak(temp_unit), - /* K3 */ be_nested_str_weak(PressureUnit), - /* K4 */ be_nested_str_weak(pressure_unit), - /* K5 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K6 */ be_nested_str_weak(pre_value), - /* K7 */ be_nested_str_weak(match), - /* K8 */ be_nested_str_weak(shadow_value), - /* K9 */ be_nested_str_weak(value_changed), - }), + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ @@ -82,44 +111,32 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_configuration, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_sensor_filter), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(Rule_Matcher), - /* K6 */ be_nested_str_weak(parse), - /* K7 */ be_nested_str_weak(temp_unit), - /* K8 */ be_nested_str_weak(TEMP_C), - /* K9 */ be_nested_str_weak(pressure_unit), - /* K10 */ be_nested_str_weak(PRESSURE_HPA), - }), + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x8C080301, // 0000 GETMET R2 R1 K1 - 0x88100102, // 0001 GETMBR R4 R0 K2 + 0x8C08030B, // 0000 GETMET R2 R1 K11 + 0x8810010C, // 0001 GETMBR R4 R0 K12 0x7C080400, // 0002 CALL R2 2 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x90021402, // 0003 SETMBR R0 K10 R2 + 0x8808010A, // 0004 GETMBR R2 R0 K10 0x780A0005, // 0005 JMPF R2 #000C - 0xB80A0800, // 0006 GETNGBL R2 K4 - 0x88080505, // 0007 GETMBR R2 R2 K5 - 0x8C080506, // 0008 GETMET R2 R2 K6 - 0x88100100, // 0009 GETMBR R4 R0 K0 + 0xB80A1A00, // 0006 GETNGBL R2 K13 + 0x8808050E, // 0007 GETMBR R2 R2 K14 + 0x8C08050F, // 0008 GETMET R2 R2 K15 + 0x8810010A, // 0009 GETMBR R4 R0 K10 0x7C080400, // 000A CALL R2 2 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x88080108, // 000C GETMBR R2 R0 K8 - 0x90020E02, // 000D SETMBR R0 K7 R2 - 0x8808010A, // 000E GETMBR R2 R0 K10 - 0x90021202, // 000F SETMBR R0 K9 R2 + 0x90020A02, // 000B SETMBR R0 K5 R2 + 0x88080110, // 000C GETMBR R2 R0 K16 + 0x90020402, // 000D SETMBR R0 K2 R2 + 0x88080111, // 000E GETMBR R2 R0 K17 + 0x90020802, // 000F SETMBR R0 K4 R2 0x80000000, // 0010 RET 0 }) ) @@ -134,13 +151,13 @@ be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -158,31 +175,22 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(tasmota_sensor_matcher), - /* K2 */ be_nested_str_weak(match), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(JSON_NAME), - /* K5 */ be_nested_str_weak(pre_value), - /* K6 */ be_nested_str_weak(shadow_value), - /* K7 */ be_nested_str_weak(value_changed), - }), + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(parse_sensors), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080112, // 0000 GETMBR R2 R0 K18 0x740A001D, // 0001 JMPT R2 #0020 - 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x88080105, // 0002 GETMBR R2 R0 K5 0x780A001B, // 0003 JMPF R2 #0020 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x88080105, // 0004 GETMBR R2 R0 K5 + 0x8C080507, // 0005 GETMET R2 R2 K7 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x600C000F, // 0008 GETGBL R3 G15 @@ -190,11 +198,11 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ 0x60140013, // 000A GETGBL R5 G19 0x7C0C0400, // 000B CALL R3 2 0x780E0003, // 000C JMPF R3 #0011 - 0x8C0C0503, // 000D GETMET R3 R2 K3 - 0x88140104, // 000E GETMBR R5 R0 K4 + 0x8C0C050B, // 000D GETMET R3 R2 K11 + 0x88140113, // 000E GETMBR R5 R0 K19 0x7C0C0400, // 000F CALL R3 2 0x5C080600, // 0010 MOVE R2 R3 - 0x8C0C0105, // 0011 GETMET R3 R0 K5 + 0x8C0C0106, // 0011 GETMET R3 R0 K6 0x6014000A, // 0012 GETGBL R5 G10 0x5C180400, // 0013 MOVE R6 R2 0x7C140200, // 0014 CALL R5 1 @@ -203,12 +211,12 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */ 0x4C0C0000, // 0017 LDNIL R3 0x200C0403, // 0018 NE R3 R2 R3 0x780E0005, // 0019 JMPF R3 #0020 - 0x880C0106, // 001A GETMBR R3 R0 K6 + 0x880C0108, // 001A GETMBR R3 R0 K8 0x200C0403, // 001B NE R3 R2 R3 0x780E0002, // 001C JMPF R3 #0020 - 0x8C0C0107, // 001D GETMET R3 R0 K7 + 0x8C0C0109, // 001D GETMET R3 R0 K9 0x7C0C0200, // 001E CALL R3 1 - 0x90020C02, // 001F SETMBR R0 K6 R2 + 0x90021002, // 001F SETMBR R0 K8 R2 0x80000000, // 0020 RET 0 }) ) @@ -223,13 +231,13 @@ be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(value_changed), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -247,30 +255,26 @@ be_local_closure(class_Matter_Plugin_Sensor_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(add_read_sensors_schedule), - /* K2 */ be_nested_str_weak(UPDATE_TIME), - }), + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100914, // 0003 GETMET R4 R4 K20 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x8C100301, // 0008 GETMET R4 R1 K1 - 0x88180102, // 0009 GETMBR R6 R0 K2 + 0x8C100315, // 0008 GETMET R4 R1 K21 + 0x88180116, // 0009 GETMBR R6 R0 K22 0x7C100400, // 000A CALL R4 2 0x80000000, // 000B RET 0 }) @@ -286,38 +290,29 @@ be_local_closure(class_Matter_Plugin_Sensor_filter_name_html, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_sensor_filter), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(webserver), - /* K3 */ be_nested_str_weak(html_escape), - /* K4 */ be_nested_str_weak(split), - /* K5 */ be_nested_str_weak(_X23), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(filter_name_html), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010A, // 0000 GETMBR R1 R0 K10 0x78060009, // 0001 JMPF R1 #000C - 0xA4060200, // 0002 IMPORT R1 K1 - 0xA40A0400, // 0003 IMPORT R2 K2 - 0x8C0C0503, // 0004 GETMET R3 R2 K3 - 0x8C140304, // 0005 GETMET R5 R1 K4 - 0x881C0100, // 0006 GETMBR R7 R0 K0 - 0x58200005, // 0007 LDCONST R8 K5 + 0xA4062E00, // 0002 IMPORT R1 K23 + 0xA40A3000, // 0003 IMPORT R2 K24 + 0x8C0C0519, // 0004 GETMET R3 R2 K25 + 0x8C14031A, // 0005 GETMET R5 R1 K26 + 0x881C010A, // 0006 GETMBR R7 R0 K10 + 0x5820001B, // 0007 LDCONST R8 K27 0x7C140600, // 0008 CALL R5 3 - 0x94140B06, // 0009 GETIDX R5 R5 K6 + 0x94140B1C, // 0009 GETIDX R5 R5 K28 0x7C0C0400, // 000A CALL R3 2 0x80040600, // 000B RET 1 R3 - 0x80060E00, // 000C RET 1 K7 + 0x80063A00, // 000C RET 1 K29 }) ) ); @@ -331,41 +326,33 @@ be_local_closure(class_Matter_Plugin_Sensor_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(filter_name_html), - /* K3 */ be_nested_str_weak(content_send), - /* K4 */ be_nested_str_weak(PREFIX), - /* K5 */ be_nested_str_weak(html_escape), - /* K6 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4063000, // 0000 IMPORT R1 K24 + 0x8C08011E, // 0001 GETMET R2 R0 K30 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0002, // 0004 JMPT R3 #0008 - 0x8C0C0102, // 0005 GETMET R3 R0 K2 + 0x8C0C011F, // 0005 GETMET R3 R0 K31 0x7C0C0200, // 0006 CALL R3 1 0x5C080600, // 0007 MOVE R2 R3 - 0x8C0C0303, // 0008 GETMET R3 R1 K3 + 0x8C0C0320, // 0008 GETMET R3 R1 K32 0x60140018, // 0009 GETGBL R5 G24 - 0x88180104, // 000A GETMBR R6 R0 K4 + 0x88180121, // 000A GETMBR R6 R0 K33 0x780A0003, // 000B JMPF R2 #0010 - 0x8C1C0305, // 000C GETMET R7 R1 K5 + 0x8C1C0319, // 000C GETMET R7 R1 K25 0x5C240400, // 000D MOVE R9 R2 0x7C1C0400, // 000E CALL R7 2 0x70020000, // 000F JMP #0011 - 0x581C0006, // 0010 LDCONST R7 K6 + 0x581C001D, // 0010 LDCONST R7 K29 0x7C140400, // 0011 CALL R5 2 0x7C0C0400, // 0012 CALL R3 2 0x80000000, // 0013 RET 0 @@ -382,25 +369,18 @@ be_local_closure(class_Matter_Plugin_Sensor_update_virtual, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(JSON_NAME), - /* K2 */ be_nested_str_weak(bool), - /* K3 */ be_nested_str_weak(shadow_value), - /* K4 */ be_nested_str_weak(value_changed), - /* K5 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x8C08030B, // 0000 GETMET R2 R1 K11 + 0x88100113, // 0001 GETMBR R4 R0 K19 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 @@ -408,22 +388,22 @@ be_local_closure(class_Matter_Plugin_Sensor_update_virtual, /* name */ 0x600C0004, // 0006 GETGBL R3 G4 0x5C100400, // 0007 MOVE R4 R2 0x7C0C0200, // 0008 CALL R3 1 - 0x1C0C0702, // 0009 EQ R3 R3 K2 + 0x1C0C0722, // 0009 EQ R3 R3 K34 0x780E0003, // 000A JMPF R3 #000F 0x600C0009, // 000B GETGBL R3 G9 0x5C100400, // 000C MOVE R4 R2 0x7C0C0200, // 000D CALL R3 1 0x5C080600, // 000E MOVE R2 R3 - 0x880C0103, // 000F GETMBR R3 R0 K3 + 0x880C0108, // 000F GETMBR R3 R0 K8 0x200C0602, // 0010 NE R3 R3 R2 0x780E0002, // 0011 JMPF R3 #0015 - 0x8C0C0104, // 0012 GETMET R3 R0 K4 + 0x8C0C0109, // 0012 GETMET R3 R0 K9 0x7C0C0200, // 0013 CALL R3 1 - 0x90020602, // 0014 SETMBR R0 K3 R2 + 0x90021002, // 0014 SETMBR R0 K8 R2 0x600C0003, // 0015 GETGBL R3 G3 0x5C100000, // 0016 MOVE R4 R0 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C0705, // 0018 GETMET R3 R3 K5 + 0x8C0C0723, // 0018 GETMET R3 R3 K35 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 0x80000000, // 001B RET 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index f9b2ec4cb..5693e1f72 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -3,6 +3,46 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Air_Quality' ktab size: 36, total: 73 (saved 296 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[36] = { + /* K0 */ be_nested_str_weak(web_values_prefix), + /* K1 */ be_nested_str_weak(Air), + /* K2 */ be_nested_str_weak(shadow_air_quality), + /* K3 */ be_nested_str_weak(PM1), + /* K4 */ be_nested_str_weak(shadow_pm1), + /* K5 */ be_nested_str_weak(PM2_X2E5), + /* K6 */ be_nested_str_weak(shadow_pm2_5), + /* K7 */ be_nested_str_weak(PM10), + /* K8 */ be_nested_str_weak(shadow_pm10), + /* K9 */ be_nested_str_weak(CO2), + /* K10 */ be_nested_str_weak(shadow_co2), + /* K11 */ be_nested_str_weak(NO2), + /* K12 */ be_nested_str_weak(shadow_no2), + /* K13 */ be_nested_str_weak(TVOC), + /* K14 */ be_nested_str_weak(shadow_tvoc), + /* K15 */ be_nested_str_weak(find), + /* K16 */ be_nested_str_weak(prefix), + /* K17 */ be_nested_str_weak(_parse_update_virtual), + /* K18 */ be_nested_str_weak(AirQuality), + /* K19 */ be_const_int(0), + /* K20 */ be_nested_str_weak(update_virtual), + /* K21 */ be_nested_str_weak(init), + /* K22 */ be_nested_str_weak(add_read_sensors_schedule), + /* K23 */ be_nested_str_weak(UPDATE_TIME), + /* K24 */ be_nested_str_weak(matter), + /* K25 */ be_nested_str_weak(TLV), + /* K26 */ be_nested_str_weak(cluster), + /* K27 */ be_nested_str_weak(attribute), + /* K28 */ be_nested_str_weak(set_or_nil), + /* K29 */ be_nested_str_weak(U1), + /* K30 */ be_nested_str_weak(read_attribute), + /* K31 */ be_nested_str_weak(ARG), + /* K32 */ be_nested_str_weak(_parse_sensor_entry), + /* K33 */ be_nested_str_weak(CarbonDioxide), + /* K34 */ be_nested_str_weak(parse_sensors), + /* K35 */ be_nested_str_weak(attribute_updated), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality; @@ -13,7 +53,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -51,23 +91,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(web_values_prefix), - /* K1 */ be_nested_str_weak(Air), - /* K2 */ be_nested_str_weak(shadow_air_quality), - /* K3 */ be_nested_str_weak(PM1), - /* K4 */ be_nested_str_weak(shadow_pm1), - /* K5 */ be_nested_str_weak(PM2_X2E5), - /* K6 */ be_nested_str_weak(shadow_pm2_5), - /* K7 */ be_nested_str_weak(PM10), - /* K8 */ be_nested_str_weak(shadow_pm10), - /* K9 */ be_nested_str_weak(CO2), - /* K10 */ be_nested_str_weak(shadow_co2), - /* K11 */ be_nested_str_weak(NO2), - /* K12 */ be_nested_str_weak(shadow_no2), - /* K13 */ be_nested_str_weak(TVOC), - /* K14 */ be_nested_str_weak(shadow_tvoc), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ @@ -116,24 +140,21 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status, /* name be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(prefix), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x540E0009, // 0000 LDINT R3 10 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C0300, // 0003 GETMET R3 R1 K0 - 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x8C0C030F, // 0003 GETMET R3 R1 K15 + 0x88140110, // 0004 GETMBR R5 R0 K16 0x7C0C0400, // 0005 CALL R3 2 0x80000000, // 0006 RET 0 }) @@ -149,90 +170,74 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual, /* nam be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_air_quality), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(AirQuality), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(shadow_co2), - /* K5 */ be_nested_str_weak(CO2), - /* K6 */ be_nested_str_weak(shadow_pm1), - /* K7 */ be_nested_str_weak(PM1), - /* K8 */ be_nested_str_weak(shadow_pm2_5), - /* K9 */ be_nested_str_weak(PM2_X2E5), - /* K10 */ be_nested_str_weak(shadow_pm10), - /* K11 */ be_nested_str_weak(PM10), - /* K12 */ be_nested_str_weak(shadow_tvoc), - /* K13 */ be_nested_str_weak(TVOC), - /* K14 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[61]) { /* code */ - 0x8C080101, // 0000 GETMET R2 R0 K1 + 0x8C080111, // 0000 GETMET R2 R0 K17 0x5C100200, // 0001 MOVE R4 R1 - 0x58140002, // 0002 LDCONST R5 K2 + 0x58140012, // 0002 LDCONST R5 K18 0x60180007, // 0003 GETGBL R6 G7 - 0x881C0100, // 0004 GETMBR R7 R0 K0 + 0x881C0102, // 0004 GETMBR R7 R0 K2 0x5422005A, // 0005 LDINT R8 91 - 0x58240003, // 0006 LDCONST R9 K3 + 0x58240013, // 0006 LDCONST R9 K19 0x7C080E00, // 0007 CALL R2 7 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x8C080101, // 0009 GETMET R2 R0 K1 + 0x90020402, // 0008 SETMBR R0 K2 R2 + 0x8C080111, // 0009 GETMET R2 R0 K17 0x5C100200, // 000A MOVE R4 R1 - 0x58140005, // 000B LDCONST R5 K5 - 0x88180104, // 000C GETMBR R6 R0 K4 + 0x58140009, // 000B LDCONST R5 K9 + 0x8818010A, // 000C GETMBR R6 R0 K10 0x601C0007, // 000D GETGBL R7 G7 0x5422040C, // 000E LDINT R8 1037 - 0x58240003, // 000F LDCONST R9 K3 + 0x58240013, // 000F LDCONST R9 K19 0x7C080E00, // 0010 CALL R2 7 - 0x90020802, // 0011 SETMBR R0 K4 R2 - 0x8C080101, // 0012 GETMET R2 R0 K1 + 0x90021402, // 0011 SETMBR R0 K10 R2 + 0x8C080111, // 0012 GETMET R2 R0 K17 0x5C100200, // 0013 MOVE R4 R1 - 0x58140007, // 0014 LDCONST R5 K7 - 0x88180106, // 0015 GETMBR R6 R0 K6 + 0x58140003, // 0014 LDCONST R5 K3 + 0x88180104, // 0015 GETMBR R6 R0 K4 0x601C0007, // 0016 GETGBL R7 G7 0x5422042B, // 0017 LDINT R8 1068 - 0x58240003, // 0018 LDCONST R9 K3 + 0x58240013, // 0018 LDCONST R9 K19 0x7C080E00, // 0019 CALL R2 7 - 0x90020C02, // 001A SETMBR R0 K6 R2 - 0x8C080101, // 001B GETMET R2 R0 K1 + 0x90020802, // 001A SETMBR R0 K4 R2 + 0x8C080111, // 001B GETMET R2 R0 K17 0x5C100200, // 001C MOVE R4 R1 - 0x58140009, // 001D LDCONST R5 K9 - 0x88180108, // 001E GETMBR R6 R0 K8 + 0x58140005, // 001D LDCONST R5 K5 + 0x88180106, // 001E GETMBR R6 R0 K6 0x601C0007, // 001F GETGBL R7 G7 0x54220429, // 0020 LDINT R8 1066 - 0x58240003, // 0021 LDCONST R9 K3 + 0x58240013, // 0021 LDCONST R9 K19 0x7C080E00, // 0022 CALL R2 7 - 0x90021002, // 0023 SETMBR R0 K8 R2 - 0x8C080101, // 0024 GETMET R2 R0 K1 + 0x90020C02, // 0023 SETMBR R0 K6 R2 + 0x8C080111, // 0024 GETMET R2 R0 K17 0x5C100200, // 0025 MOVE R4 R1 - 0x5814000B, // 0026 LDCONST R5 K11 - 0x8818010A, // 0027 GETMBR R6 R0 K10 + 0x58140007, // 0026 LDCONST R5 K7 + 0x88180108, // 0027 GETMBR R6 R0 K8 0x601C0007, // 0028 GETGBL R7 G7 0x5422042C, // 0029 LDINT R8 1069 - 0x58240003, // 002A LDCONST R9 K3 + 0x58240013, // 002A LDCONST R9 K19 0x7C080E00, // 002B CALL R2 7 - 0x90021402, // 002C SETMBR R0 K10 R2 - 0x8C080101, // 002D GETMET R2 R0 K1 + 0x90021002, // 002C SETMBR R0 K8 R2 + 0x8C080111, // 002D GETMET R2 R0 K17 0x5C100200, // 002E MOVE R4 R1 0x5814000D, // 002F LDCONST R5 K13 - 0x8818010C, // 0030 GETMBR R6 R0 K12 + 0x8818010E, // 0030 GETMBR R6 R0 K14 0x601C0007, // 0031 GETGBL R7 G7 0x5422042D, // 0032 LDINT R8 1070 - 0x58240003, // 0033 LDCONST R9 K3 + 0x58240013, // 0033 LDCONST R9 K19 0x7C080E00, // 0034 CALL R2 7 - 0x90021802, // 0035 SETMBR R0 K12 R2 + 0x90021C02, // 0035 SETMBR R0 K14 R2 0x60080003, // 0036 GETGBL R2 G3 0x5C0C0000, // 0037 MOVE R3 R0 0x7C080200, // 0038 CALL R2 1 - 0x8C08050E, // 0039 GETMET R2 R2 K14 + 0x8C080514, // 0039 GETMET R2 R2 K20 0x5C100200, // 003A MOVE R4 R1 0x7C080400, // 003B CALL R2 2 0x80000000, // 003C RET 0 @@ -249,33 +254,28 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_air_quality), - /* K2 */ be_nested_str_weak(add_read_sensors_schedule), - /* K3 */ be_nested_str_weak(UPDATE_TIME), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100915, // 0003 GETMET R4 R4 K21 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x8C100302, // 000A GETMET R4 R1 K2 - 0x88180103, // 000B GETMBR R6 R0 K3 + 0x90020404, // 0009 SETMBR R0 K2 R4 + 0x8C100316, // 000A GETMET R4 R1 K22 + 0x88180117, // 000B GETMBR R6 R0 K23 0x7C100400, // 000C CALL R4 2 0x80000000, // 000D RET 0 }) @@ -291,7 +291,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam be_nested_proto( 14, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -401,40 +401,24 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam ), }), 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_nested_str_weak(shadow_air_quality), - /* K8 */ be_nested_str_weak(shadow_co2), - /* K9 */ be_nested_str_weak(shadow_pm1), - /* K10 */ be_nested_str_weak(shadow_pm2_5), - /* K11 */ be_nested_str_weak(shadow_pm10), - /* K12 */ be_nested_str_weak(shadow_tvoc), - /* K13 */ be_nested_str_weak(shadow_no2), - /* K14 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[93]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8123000, // 0000 GETNGBL R4 K24 + 0x88100919, // 0001 GETMBR R4 R4 K25 + 0x8814051A, // 0002 GETMBR R5 R2 K26 + 0x8818051B, // 0003 GETMBR R6 R2 K27 0x4C1C0000, // 0004 LDNIL R7 0x84200000, // 0005 CLOSURE R8 P0 0x5426005A, // 0006 LDINT R9 91 0x1C240A09, // 0007 EQ R9 R5 R9 0x78260008, // 0008 JMPF R9 #0012 - 0x1C240D04, // 0009 EQ R9 R6 K4 + 0x1C240D13, // 0009 EQ R9 R6 K19 0x78260005, // 000A JMPF R9 #0011 - 0x8C240705, // 000B GETMET R9 R3 K5 - 0x882C0906, // 000C GETMBR R11 R4 K6 - 0x88300107, // 000D GETMBR R12 R0 K7 + 0x8C24071C, // 000B GETMET R9 R3 K28 + 0x882C091D, // 000C GETMBR R11 R4 K29 + 0x88300102, // 000D GETMBR R12 R0 K2 0x7C240600, // 000E CALL R9 3 0xA0000000, // 000F CLOSE R0 0x80041200, // 0010 RET 1 R9 @@ -443,7 +427,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x1C240A09, // 0013 EQ R9 R5 R9 0x78260007, // 0014 JMPF R9 #001D 0x5C241000, // 0015 MOVE R9 R8 - 0x88280108, // 0016 GETMBR R10 R0 K8 + 0x8828010A, // 0016 GETMBR R10 R0 K10 0x7C240200, // 0017 CALL R9 1 0x5C1C1200, // 0018 MOVE R7 R9 0x78260001, // 0019 JMPF R9 #001C @@ -454,7 +438,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x1C240A09, // 001E EQ R9 R5 R9 0x78260007, // 001F JMPF R9 #0028 0x5C241000, // 0020 MOVE R9 R8 - 0x88280109, // 0021 GETMBR R10 R0 K9 + 0x88280104, // 0021 GETMBR R10 R0 K4 0x7C240200, // 0022 CALL R9 1 0x5C1C1200, // 0023 MOVE R7 R9 0x78260001, // 0024 JMPF R9 #0027 @@ -465,7 +449,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x1C240A09, // 0029 EQ R9 R5 R9 0x78260007, // 002A JMPF R9 #0033 0x5C241000, // 002B MOVE R9 R8 - 0x8828010A, // 002C GETMBR R10 R0 K10 + 0x88280106, // 002C GETMBR R10 R0 K6 0x7C240200, // 002D CALL R9 1 0x5C1C1200, // 002E MOVE R7 R9 0x78260001, // 002F JMPF R9 #0032 @@ -476,7 +460,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x1C240A09, // 0034 EQ R9 R5 R9 0x78260007, // 0035 JMPF R9 #003E 0x5C241000, // 0036 MOVE R9 R8 - 0x8828010B, // 0037 GETMBR R10 R0 K11 + 0x88280108, // 0037 GETMBR R10 R0 K8 0x7C240200, // 0038 CALL R9 1 0x5C1C1200, // 0039 MOVE R7 R9 0x78260001, // 003A JMPF R9 #003D @@ -487,7 +471,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x1C240A09, // 003F EQ R9 R5 R9 0x78260007, // 0040 JMPF R9 #0049 0x5C241000, // 0041 MOVE R9 R8 - 0x8828010C, // 0042 GETMBR R10 R0 K12 + 0x8828010E, // 0042 GETMBR R10 R0 K14 0x7C240200, // 0043 CALL R9 1 0x5C1C1200, // 0044 MOVE R7 R9 0x78260001, // 0045 JMPF R9 #0048 @@ -498,7 +482,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x1C240A09, // 004A EQ R9 R5 R9 0x78260006, // 004B JMPF R9 #0053 0x5C241000, // 004C MOVE R9 R8 - 0x8828010D, // 004D GETMBR R10 R0 K13 + 0x8828010C, // 004D GETMBR R10 R0 K12 0x7C240200, // 004E CALL R9 1 0x5C1C1200, // 004F MOVE R7 R9 0x78260001, // 0050 JMPF R9 #0053 @@ -507,7 +491,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x60240003, // 0053 GETGBL R9 G3 0x5C280000, // 0054 MOVE R10 R0 0x7C240200, // 0055 CALL R9 1 - 0x8C24130E, // 0056 GETMET R9 R9 K14 + 0x8C24131E, // 0056 GETMET R9 R9 K30 0x5C2C0200, // 0057 MOVE R11 R1 0x5C300400, // 0058 MOVE R12 R2 0x5C340600, // 0059 MOVE R13 R3 @@ -527,26 +511,22 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, / be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(prefix), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x8C0C030F, // 0001 GETMET R3 R1 K15 + 0x8814011F, // 0002 GETMBR R5 R0 K31 0x7C0C0400, // 0003 CALL R3 2 0x7C080200, // 0004 CALL R2 1 - 0x90020002, // 0005 SETMBR R0 K0 R2 + 0x90022002, // 0005 SETMBR R0 K16 R2 0x80000000, // 0006 RET 0 }) ) @@ -561,98 +541,80 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(prefix), - /* K2 */ be_nested_str_weak(shadow_co2), - /* K3 */ be_nested_str_weak(_parse_sensor_entry), - /* K4 */ be_nested_str_weak(CarbonDioxide), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(shadow_pm1), - /* K7 */ be_nested_str_weak(PM1), - /* K8 */ be_nested_str_weak(shadow_pm2_5), - /* K9 */ be_nested_str_weak(PM2_X2E5), - /* K10 */ be_nested_str_weak(shadow_pm10), - /* K11 */ be_nested_str_weak(PM10), - /* K12 */ be_nested_str_weak(shadow_tvoc), - /* K13 */ be_nested_str_weak(TVOC), - /* K14 */ be_nested_str_weak(shadow_no2), - /* K15 */ be_nested_str_weak(NO2), - /* K16 */ be_nested_str_weak(parse_sensors), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(parse_sensors), &be_const_str_solidified, ( &(const binstruction[67]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x8C08030F, // 0000 GETMET R2 R1 K15 + 0x88100110, // 0001 GETMBR R4 R0 K16 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0035, // 0005 JMPF R3 #003C - 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x8C0C0120, // 0006 GETMET R3 R0 K32 0x5C140400, // 0007 MOVE R5 R2 - 0x58180004, // 0008 LDCONST R6 K4 - 0x881C0102, // 0009 GETMBR R7 R0 K2 + 0x58180021, // 0008 LDCONST R6 K33 + 0x881C010A, // 0009 GETMBR R7 R0 K10 0x60200007, // 000A GETGBL R8 G7 0x5426040C, // 000B LDINT R9 1037 - 0x58280005, // 000C LDCONST R10 K5 + 0x58280013, // 000C LDCONST R10 K19 0x7C0C0E00, // 000D CALL R3 7 - 0x90020403, // 000E SETMBR R0 K2 R3 - 0x8C0C0103, // 000F GETMET R3 R0 K3 + 0x90021403, // 000E SETMBR R0 K10 R3 + 0x8C0C0120, // 000F GETMET R3 R0 K32 0x5C140400, // 0010 MOVE R5 R2 - 0x58180007, // 0011 LDCONST R6 K7 - 0x881C0106, // 0012 GETMBR R7 R0 K6 + 0x58180003, // 0011 LDCONST R6 K3 + 0x881C0104, // 0012 GETMBR R7 R0 K4 0x60200007, // 0013 GETGBL R8 G7 0x5426042B, // 0014 LDINT R9 1068 - 0x58280005, // 0015 LDCONST R10 K5 + 0x58280013, // 0015 LDCONST R10 K19 0x7C0C0E00, // 0016 CALL R3 7 - 0x90020C03, // 0017 SETMBR R0 K6 R3 - 0x8C0C0103, // 0018 GETMET R3 R0 K3 + 0x90020803, // 0017 SETMBR R0 K4 R3 + 0x8C0C0120, // 0018 GETMET R3 R0 K32 0x5C140400, // 0019 MOVE R5 R2 - 0x58180009, // 001A LDCONST R6 K9 - 0x881C0108, // 001B GETMBR R7 R0 K8 + 0x58180005, // 001A LDCONST R6 K5 + 0x881C0106, // 001B GETMBR R7 R0 K6 0x60200007, // 001C GETGBL R8 G7 0x54260429, // 001D LDINT R9 1066 - 0x58280005, // 001E LDCONST R10 K5 + 0x58280013, // 001E LDCONST R10 K19 0x7C0C0E00, // 001F CALL R3 7 - 0x90021003, // 0020 SETMBR R0 K8 R3 - 0x8C0C0103, // 0021 GETMET R3 R0 K3 + 0x90020C03, // 0020 SETMBR R0 K6 R3 + 0x8C0C0120, // 0021 GETMET R3 R0 K32 0x5C140400, // 0022 MOVE R5 R2 - 0x5818000B, // 0023 LDCONST R6 K11 - 0x881C010A, // 0024 GETMBR R7 R0 K10 + 0x58180007, // 0023 LDCONST R6 K7 + 0x881C0108, // 0024 GETMBR R7 R0 K8 0x60200007, // 0025 GETGBL R8 G7 0x5426042C, // 0026 LDINT R9 1069 - 0x58280005, // 0027 LDCONST R10 K5 + 0x58280013, // 0027 LDCONST R10 K19 0x7C0C0E00, // 0028 CALL R3 7 - 0x90021403, // 0029 SETMBR R0 K10 R3 - 0x8C0C0103, // 002A GETMET R3 R0 K3 + 0x90021003, // 0029 SETMBR R0 K8 R3 + 0x8C0C0120, // 002A GETMET R3 R0 K32 0x5C140400, // 002B MOVE R5 R2 0x5818000D, // 002C LDCONST R6 K13 - 0x881C010C, // 002D GETMBR R7 R0 K12 + 0x881C010E, // 002D GETMBR R7 R0 K14 0x60200007, // 002E GETGBL R8 G7 0x5426042D, // 002F LDINT R9 1070 - 0x58280005, // 0030 LDCONST R10 K5 + 0x58280013, // 0030 LDCONST R10 K19 0x7C0C0E00, // 0031 CALL R3 7 - 0x90021803, // 0032 SETMBR R0 K12 R3 - 0x8C0C0103, // 0033 GETMET R3 R0 K3 + 0x90021C03, // 0032 SETMBR R0 K14 R3 + 0x8C0C0120, // 0033 GETMET R3 R0 K32 0x5C140400, // 0034 MOVE R5 R2 - 0x5818000F, // 0035 LDCONST R6 K15 - 0x881C010E, // 0036 GETMBR R7 R0 K14 + 0x5818000B, // 0035 LDCONST R6 K11 + 0x881C010C, // 0036 GETMBR R7 R0 K12 0x60200007, // 0037 GETGBL R8 G7 0x54260412, // 0038 LDINT R9 1043 - 0x58280005, // 0039 LDCONST R10 K5 + 0x58280013, // 0039 LDCONST R10 K19 0x7C0C0E00, // 003A CALL R3 7 - 0x90021C03, // 003B SETMBR R0 K14 R3 + 0x90021803, // 003B SETMBR R0 K12 R3 0x600C0003, // 003C GETGBL R3 G3 0x5C100000, // 003D MOVE R4 R0 0x7C0C0200, // 003E CALL R3 1 - 0x8C0C0710, // 003F GETMET R3 R3 K16 + 0x8C0C0722, // 003F GETMET R3 R3 K34 0x5C140200, // 0040 MOVE R5 R1 0x7C0C0400, // 0041 CALL R3 2 0x80000000, // 0042 RET 0 @@ -669,20 +631,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, / be_nested_proto( 12, /* nstack */ 7, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */ be_str_weak(_parse_sensor_entry), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x8C1C0300, // 0000 GETMET R7 R1 K0 + 0x8C1C030F, // 0000 GETMET R7 R1 K15 0x5C240400, // 0001 MOVE R9 R2 0x7C1C0400, // 0002 CALL R7 2 0x4C200000, // 0003 LDNIL R8 @@ -697,7 +656,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, / 0x78220005, // 000C JMPF R8 #0013 0x20200E03, // 000D NE R8 R7 R3 0x78220003, // 000E JMPF R8 #0013 - 0x8C200101, // 000F GETMET R8 R0 K1 + 0x8C200123, // 000F GETMET R8 R0 K35 0x5C280A00, // 0010 MOVE R10 R5 0x5C2C0C00, // 0011 MOVE R11 R6 0x7C200600, // 0012 CALL R8 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h index 7e7c442d8..673392504 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h @@ -3,6 +3,27 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Boolean' ktab size: 17, total: 26 (saved 72 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Boolean[17] = { + /* K0 */ be_nested_str_weak(tasmota_switch_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(update_shadow), + /* K6 */ be_nested_str_weak(VIRTUAL), + /* K7 */ be_nested_str_weak(Switch), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(cmd), + /* K10 */ be_nested_str_weak(Status_X2010), + /* K11 */ be_nested_str_weak(StatusSNS), + /* K12 */ be_nested_str_weak(contains), + /* K13 */ be_nested_str_weak(ON), + /* K14 */ be_nested_str_weak(shadow_bool_value), + /* K15 */ be_nested_str_weak(value_updated), + /* K16 */ be_nested_str_weak(init), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Boolean; @@ -13,19 +34,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration, /* na be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ @@ -54,13 +69,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_value_updated, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -78,13 +93,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean__X3Clambda_X3E, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 0, /* varg */ + 8, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */ be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -105,70 +120,56 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(update_shadow), - /* K1 */ be_nested_str_weak(VIRTUAL), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(Status_X2010), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(StatusSNS), - /* K9 */ be_nested_str_weak(contains), - /* K10 */ be_nested_str_weak(ON), - /* K11 */ be_nested_str_weak(shadow_bool_value), - /* K12 */ be_nested_str_weak(value_updated), - }), + &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x8C040305, // 0003 GETMET R1 R1 K5 0x7C040200, // 0004 CALL R1 1 - 0x88040101, // 0005 GETMBR R1 R0 K1 + 0x88040106, // 0005 GETMBR R1 R0 K6 0x74060020, // 0006 JMPT R1 #0028 0x60040008, // 0007 GETGBL R1 G8 - 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x88080100, // 0008 GETMBR R2 R0 K0 0x7C040200, // 0009 CALL R1 1 - 0x00060401, // 000A ADD R1 K2 R1 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x58100006, // 000D LDCONST R4 K6 + 0x00060E01, // 000A ADD R1 K7 R1 + 0xB80A1000, // 000B GETNGBL R2 K8 + 0x8C080509, // 000C GETMET R2 R2 K9 + 0x5810000A, // 000D LDCONST R4 K10 0x50140200, // 000E LDBOOL R5 1 0 0x7C080600, // 000F CALL R2 3 0x4C0C0000, // 0010 LDNIL R3 0x200C0403, // 0011 NE R3 R2 R3 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0507, // 0013 GETMET R3 R2 K7 - 0x58140008, // 0014 LDCONST R5 K8 + 0x8C0C0501, // 0013 GETMET R3 R2 K1 + 0x5814000B, // 0014 LDCONST R5 K11 0x7C0C0400, // 0015 CALL R3 2 0x5C080600, // 0016 MOVE R2 R3 0x4C0C0000, // 0017 LDNIL R3 0x200C0403, // 0018 NE R3 R2 R3 0x780E000D, // 0019 JMPF R3 #0028 - 0x8C0C0509, // 001A GETMET R3 R2 K9 + 0x8C0C050C, // 001A GETMET R3 R2 K12 0x5C140200, // 001B MOVE R5 R1 0x7C0C0400, // 001C CALL R3 2 0x780E0009, // 001D JMPF R3 #0028 - 0x8C0C0507, // 001E GETMET R3 R2 K7 + 0x8C0C0501, // 001E GETMET R3 R2 K1 0x5C140200, // 001F MOVE R5 R1 0x7C0C0400, // 0020 CALL R3 2 - 0x1C0C070A, // 0021 EQ R3 R3 K10 - 0x8810010B, // 0022 GETMBR R4 R0 K11 + 0x1C0C070D, // 0021 EQ R3 R3 K13 + 0x8810010E, // 0022 GETMBR R4 R0 K14 0x20100803, // 0023 NE R4 R4 R3 0x78120001, // 0024 JMPF R4 #0027 - 0x8C10010C, // 0025 GETMET R4 R0 K12 + 0x8C10010F, // 0025 GETMET R4 R0 K15 0x7C100200, // 0026 CALL R4 1 - 0x90021603, // 0027 SETMBR R0 K11 R3 + 0x90021C03, // 0027 SETMBR R0 K14 R3 0x80000000, // 0028 RET 0 }) ) @@ -183,29 +184,26 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_bool_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C100910, // 0003 GETMET R4 R4 K16 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 0x50100000, // 0008 LDBOOL R4 0 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x90021C04, // 0009 SETMBR R0 K14 R4 0x80000000, // 000A RET 0 }) ) @@ -220,20 +218,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_status, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Switch), - /* K2 */ be_nested_str_weak(tasmota_switch_index), - /* K3 */ be_nested_str_weak(ON), - /* K4 */ be_nested_str_weak(shadow_bool_value), - /* K5 */ be_nested_str_weak(value_updated), - }), + &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ @@ -241,27 +232,27 @@ be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_status, /* name */ 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E0015, // 0002 JMPF R3 #0019 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x8C100300, // 0004 GETMET R4 R1 K0 + 0x8C100301, // 0004 GETMET R4 R1 K1 0x60180008, // 0005 GETGBL R6 G8 - 0x881C0102, // 0006 GETMBR R7 R0 K2 + 0x881C0100, // 0006 GETMBR R7 R0 K0 0x7C180200, // 0007 CALL R6 1 - 0x001A0206, // 0008 ADD R6 K1 R6 + 0x001A0E06, // 0008 ADD R6 K7 R6 0x7C100400, // 0009 CALL R4 2 - 0x1C100903, // 000A EQ R4 R4 K3 + 0x1C10090D, // 000A EQ R4 R4 K13 0x5C0C0800, // 000B MOVE R3 R4 - 0x88100104, // 000C GETMBR R4 R0 K4 + 0x8810010E, // 000C GETMBR R4 R0 K14 0x4C140000, // 000D LDNIL R5 0x20100805, // 000E NE R4 R4 R5 0x78120007, // 000F JMPF R4 #0018 - 0x88100104, // 0010 GETMBR R4 R0 K4 + 0x8810010E, // 0010 GETMBR R4 R0 K14 0x60140017, // 0011 GETGBL R5 G23 0x5C180600, // 0012 MOVE R6 R3 0x7C140200, // 0013 CALL R5 1 0x20100805, // 0014 NE R4 R4 R5 0x78120001, // 0015 JMPF R4 #0018 - 0x8C100105, // 0016 GETMET R4 R0 K5 + 0x8C10010F, // 0016 GETMET R4 R0 K15 0x7C100200, // 0017 CALL R4 1 - 0x90020803, // 0018 SETMBR R0 K4 R3 + 0x90021C03, // 0018 SETMBR R0 K14 R3 0x80000000, // 0019 RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h index a72993b82..421a3afd2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h @@ -3,6 +3,36 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_GenericSwitch_Btn' ktab size: 26, total: 35 (saved 72 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[26] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(set), + /* K6 */ be_nested_str_weak(U1), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(set_or_nil), + /* K10 */ be_nested_str_weak(shadow_position), + /* K11 */ be_nested_str_weak(U4), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(attribute_updated), + /* K14 */ be_nested_str_weak(tasmota_switch_index), + /* K15 */ be_nested_str_weak(find), + /* K16 */ be_nested_str_weak(ARG), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), + /* K19 */ be_nested_str_weak(shadow_onoff), + /* K20 */ be_nested_str_weak(set_position), + /* K21 */ be_nested_str_weak(publish_event), + /* K22 */ be_nested_str_weak(EVENT_INFO), + /* K23 */ be_nested_str_weak(Matter_TLV_item), + /* K24 */ be_const_int(3), + /* K25 */ be_const_int(2), +}; + extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn; @@ -13,27 +43,13 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_const_int(2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(set_or_nil), - /* K10 */ be_nested_str_weak(shadow_position), - /* K11 */ be_nested_str_weak(U4), - /* K12 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ @@ -98,13 +114,13 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E, be_nested_proto( 3, /* nstack */ 1, /* argc */ - 0, /* varg */ + 8, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */ be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -125,28 +141,24 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position, /* be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_position), - /* K1 */ be_nested_str_weak(attribute_updated), - /* K2 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */ be_str_weak(set_position), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808010A, // 0000 GETMBR R2 R0 K10 0x20080202, // 0001 NE R2 R1 R2 0x780A0004, // 0002 JMPF R2 #0008 - 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x8C08010D, // 0003 GETMET R2 R0 K13 0x5412003A, // 0004 LDINT R4 59 - 0x58140002, // 0005 LDCONST R5 K2 + 0x58140008, // 0005 LDCONST R5 K8 0x7C080600, // 0006 CALL R2 3 - 0x90020001, // 0007 SETMBR R0 K0 R1 + 0x90021401, // 0007 SETMBR R0 K10 R1 0x80000000, // 0008 RET 0 }) ) @@ -161,33 +173,27 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuratio be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_switch_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0301, // 0001 GETMET R3 R1 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x58180003, // 0003 LDCONST R6 K3 + 0x8C0C030F, // 0001 GETMET R3 R1 K15 + 0x88140110, // 0002 GETMBR R5 R0 K16 + 0x58180008, // 0003 LDCONST R6 K8 0x7C0C0600, // 0004 CALL R3 3 0x7C080200, // 0005 CALL R2 1 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x18080504, // 0008 LE R2 R2 K4 + 0x90021C02, // 0006 SETMBR R0 K14 R2 + 0x8808010E, // 0007 GETMBR R2 R0 K14 + 0x18080511, // 0008 LE R2 R2 K17 0x780A0000, // 0009 JMPF R2 #000B - 0x90020103, // 000A SETMBR R0 K0 K3 + 0x90021D08, // 000A SETMBR R0 K14 K8 0x80000000, // 000B RET 0 }) ) @@ -202,23 +208,20 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), - /* K1 */ be_nested_str_weak(shadow_onoff), - }), + &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */ be_str_weak(append_state_json), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 + 0x58080012, // 0001 LDCONST R2 K18 0x600C0009, // 0002 GETGBL R3 G9 - 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x88100113, // 0003 GETMBR R4 R0 K19 0x7C0C0200, // 0004 CALL R3 1 0x7C040400, // 0005 CALL R1 2 0x80040200, // 0006 RET 1 R1 @@ -235,130 +238,117 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, be_nested_proto( 15, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(set_position), - /* K3 */ be_nested_str_weak(publish_event), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(EVENT_INFO), - /* K6 */ be_nested_str_weak(TLV), - /* K7 */ be_nested_str_weak(Matter_TLV_item), - /* K8 */ be_nested_str_weak(set), - /* K9 */ be_nested_str_weak(U1), - /* K10 */ be_const_int(3), - /* K11 */ be_const_int(2), - }), + &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */ be_str_weak(button_handler), &be_const_str_solidified, ( &(const binstruction[105]) { /* code */ - 0x1C140500, // 0000 EQ R5 R2 K0 + 0x1C140511, // 0000 EQ R5 R2 K17 0x74160001, // 0001 JMPT R5 #0004 - 0x1C140501, // 0002 EQ R5 R2 K1 + 0x1C140508, // 0002 EQ R5 R2 K8 0x78160002, // 0003 JMPF R5 #0007 - 0x8C140102, // 0004 GETMET R5 R0 K2 + 0x8C140114, // 0004 GETMET R5 R0 K20 0x5C1C0600, // 0005 MOVE R7 R3 0x7C140400, // 0006 CALL R5 2 - 0x1C140501, // 0007 EQ R5 R2 K1 + 0x1C140508, // 0007 EQ R5 R2 K8 0x78160040, // 0008 JMPF R5 #004A 0x780E0010, // 0009 JMPF R3 #001B - 0x8C140103, // 000A GETMET R5 R0 K3 + 0x8C140115, // 000A GETMET R5 R0 K21 0x541E003A, // 000B LDINT R7 59 - 0x58200001, // 000C LDCONST R8 K1 - 0xB8260800, // 000D GETNGBL R9 K4 - 0x88241305, // 000E GETMBR R9 R9 K5 - 0xB82A0800, // 000F GETNGBL R10 K4 - 0x88281506, // 0010 GETMBR R10 R10 K6 - 0x8C281507, // 0011 GETMET R10 R10 K7 + 0x58200008, // 000C LDCONST R8 K8 + 0xB8260000, // 000D GETNGBL R9 K0 + 0x88241316, // 000E GETMBR R9 R9 K22 + 0xB82A0000, // 000F GETNGBL R10 K0 + 0x88281501, // 0010 GETMBR R10 R10 K1 + 0x8C281517, // 0011 GETMET R10 R10 K23 0x7C280200, // 0012 CALL R10 1 - 0x8C281508, // 0013 GETMET R10 R10 K8 - 0xB8320800, // 0014 GETNGBL R12 K4 - 0x88301906, // 0015 GETMBR R12 R12 K6 - 0x88301909, // 0016 GETMBR R12 R12 K9 - 0x58340001, // 0017 LDCONST R13 K1 + 0x8C281505, // 0013 GETMET R10 R10 K5 + 0xB8320000, // 0014 GETNGBL R12 K0 + 0x88301901, // 0015 GETMBR R12 R12 K1 + 0x88301906, // 0016 GETMBR R12 R12 K6 + 0x58340008, // 0017 LDCONST R13 K8 0x7C280600, // 0018 CALL R10 3 0x7C140A00, // 0019 CALL R5 5 0x7002000F, // 001A JMP #002B - 0x8C140103, // 001B GETMET R5 R0 K3 + 0x8C140115, // 001B GETMET R5 R0 K21 0x541E003A, // 001C LDINT R7 59 - 0x5820000A, // 001D LDCONST R8 K10 - 0xB8260800, // 001E GETNGBL R9 K4 - 0x88241305, // 001F GETMBR R9 R9 K5 - 0xB82A0800, // 0020 GETNGBL R10 K4 - 0x88281506, // 0021 GETMBR R10 R10 K6 - 0x8C281507, // 0022 GETMET R10 R10 K7 + 0x58200018, // 001D LDCONST R8 K24 + 0xB8260000, // 001E GETNGBL R9 K0 + 0x88241316, // 001F GETMBR R9 R9 K22 + 0xB82A0000, // 0020 GETNGBL R10 K0 + 0x88281501, // 0021 GETMBR R10 R10 K1 + 0x8C281517, // 0022 GETMET R10 R10 K23 0x7C280200, // 0023 CALL R10 1 - 0x8C281508, // 0024 GETMET R10 R10 K8 - 0xB8320800, // 0025 GETNGBL R12 K4 - 0x88301906, // 0026 GETMBR R12 R12 K6 - 0x88301909, // 0027 GETMBR R12 R12 K9 - 0x58340001, // 0028 LDCONST R13 K1 + 0x8C281505, // 0024 GETMET R10 R10 K5 + 0xB8320000, // 0025 GETNGBL R12 K0 + 0x88301901, // 0026 GETMBR R12 R12 K1 + 0x88301906, // 0027 GETMBR R12 R12 K6 + 0x58340008, // 0028 LDCONST R13 K8 0x7C280600, // 0029 CALL R10 3 0x7C140A00, // 002A CALL R5 5 - 0x1C140701, // 002B EQ R5 R3 K1 + 0x1C140708, // 002B EQ R5 R3 K8 0x7816001B, // 002C JMPF R5 #0049 - 0x24140900, // 002D GT R5 R4 K0 + 0x24140911, // 002D GT R5 R4 K17 0x78160019, // 002E JMPF R5 #0049 - 0x8C140103, // 002F GETMET R5 R0 K3 + 0x8C140115, // 002F GETMET R5 R0 K21 0x541E003A, // 0030 LDINT R7 59 0x54220004, // 0031 LDINT R8 5 - 0xB8260800, // 0032 GETNGBL R9 K4 - 0x88241305, // 0033 GETMBR R9 R9 K5 - 0xB82A0800, // 0034 GETNGBL R10 K4 - 0x88281506, // 0035 GETMBR R10 R10 K6 - 0x8C281507, // 0036 GETMET R10 R10 K7 + 0xB8260000, // 0032 GETNGBL R9 K0 + 0x88241316, // 0033 GETMBR R9 R9 K22 + 0xB82A0000, // 0034 GETNGBL R10 K0 + 0x88281501, // 0035 GETMBR R10 R10 K1 + 0x8C281517, // 0036 GETMET R10 R10 K23 0x7C280200, // 0037 CALL R10 1 - 0x8C281508, // 0038 GETMET R10 R10 K8 - 0xB8320800, // 0039 GETNGBL R12 K4 - 0x88301906, // 003A GETMBR R12 R12 K6 - 0x88301909, // 003B GETMBR R12 R12 K9 - 0x58340001, // 003C LDCONST R13 K1 + 0x8C281505, // 0038 GETMET R10 R10 K5 + 0xB8320000, // 0039 GETNGBL R12 K0 + 0x88301901, // 003A GETMBR R12 R12 K1 + 0x88301906, // 003B GETMBR R12 R12 K6 + 0x58340008, // 003C LDCONST R13 K8 0x7C280600, // 003D CALL R10 3 - 0xB82E0800, // 003E GETNGBL R11 K4 - 0x882C1706, // 003F GETMBR R11 R11 K6 - 0x8C2C1707, // 0040 GETMET R11 R11 K7 + 0xB82E0000, // 003E GETNGBL R11 K0 + 0x882C1701, // 003F GETMBR R11 R11 K1 + 0x8C2C1717, // 0040 GETMET R11 R11 K23 0x7C2C0200, // 0041 CALL R11 1 - 0x8C2C1708, // 0042 GETMET R11 R11 K8 - 0xB8360800, // 0043 GETNGBL R13 K4 - 0x88341B06, // 0044 GETMBR R13 R13 K6 - 0x88341B09, // 0045 GETMBR R13 R13 K9 - 0x00380901, // 0046 ADD R14 R4 K1 + 0x8C2C1705, // 0042 GETMET R11 R11 K5 + 0xB8360000, // 0043 GETNGBL R13 K0 + 0x88341B01, // 0044 GETMBR R13 R13 K1 + 0x88341B06, // 0045 GETMBR R13 R13 K6 + 0x00380908, // 0046 ADD R14 R4 K8 0x7C2C0600, // 0047 CALL R11 3 0x7C140C00, // 0048 CALL R5 6 0x7002001D, // 0049 JMP #0068 - 0x1C14050B, // 004A EQ R5 R2 K11 + 0x1C140519, // 004A EQ R5 R2 K25 0x7816001B, // 004B JMPF R5 #0068 - 0x24140900, // 004C GT R5 R4 K0 + 0x24140911, // 004C GT R5 R4 K17 0x78160019, // 004D JMPF R5 #0068 - 0x8C140103, // 004E GETMET R5 R0 K3 + 0x8C140115, // 004E GETMET R5 R0 K21 0x541E003A, // 004F LDINT R7 59 0x54220005, // 0050 LDINT R8 6 - 0xB8260800, // 0051 GETNGBL R9 K4 - 0x88241305, // 0052 GETMBR R9 R9 K5 - 0xB82A0800, // 0053 GETNGBL R10 K4 - 0x88281506, // 0054 GETMBR R10 R10 K6 - 0x8C281507, // 0055 GETMET R10 R10 K7 + 0xB8260000, // 0051 GETNGBL R9 K0 + 0x88241316, // 0052 GETMBR R9 R9 K22 + 0xB82A0000, // 0053 GETNGBL R10 K0 + 0x88281501, // 0054 GETMBR R10 R10 K1 + 0x8C281517, // 0055 GETMET R10 R10 K23 0x7C280200, // 0056 CALL R10 1 - 0x8C281508, // 0057 GETMET R10 R10 K8 - 0xB8320800, // 0058 GETNGBL R12 K4 - 0x88301906, // 0059 GETMBR R12 R12 K6 - 0x88301909, // 005A GETMBR R12 R12 K9 - 0x58340001, // 005B LDCONST R13 K1 + 0x8C281505, // 0057 GETMET R10 R10 K5 + 0xB8320000, // 0058 GETNGBL R12 K0 + 0x88301901, // 0059 GETMBR R12 R12 K1 + 0x88301906, // 005A GETMBR R12 R12 K6 + 0x58340008, // 005B LDCONST R13 K8 0x7C280600, // 005C CALL R10 3 - 0xB82E0800, // 005D GETNGBL R11 K4 - 0x882C1706, // 005E GETMBR R11 R11 K6 - 0x8C2C1707, // 005F GETMET R11 R11 K7 + 0xB82E0000, // 005D GETNGBL R11 K0 + 0x882C1701, // 005E GETMBR R11 R11 K1 + 0x8C2C1717, // 005F GETMET R11 R11 K23 0x7C2C0200, // 0060 CALL R11 1 - 0x8C2C1708, // 0061 GETMET R11 R11 K8 - 0xB8360800, // 0062 GETNGBL R13 K4 - 0x88341B06, // 0063 GETMBR R13 R13 K6 - 0x88341B09, // 0064 GETMBR R13 R13 K9 + 0x8C2C1705, // 0061 GETMET R11 R11 K5 + 0xB8360000, // 0062 GETNGBL R13 K0 + 0x88341B01, // 0063 GETMBR R13 R13 K1 + 0x88341B06, // 0064 GETMBR R13 R13 K6 0x5C380800, // 0065 MOVE R14 R4 0x7C2C0600, // 0066 CALL R11 3 0x7C140C00, // 0067 CALL R5 6 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h index abf5b2809..3dfbe94e3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h @@ -3,6 +3,58 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Shutter' ktab size: 48, total: 78 (saved 240 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Shutter[48] = { + /* K0 */ be_nested_str_weak(tasmota_shutter_index), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(ARG), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(shadow_shutter_inverted), + /* K5 */ be_nested_str_weak(light), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(TLV), + /* K8 */ be_nested_str_weak(cluster), + /* K9 */ be_nested_str_weak(command), + /* K10 */ be_nested_str_weak(update_shadow_lazy), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(cmd), + /* K13 */ be_nested_str_weak(ShutterStopOpen), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(update_shadow), + /* K16 */ be_nested_str_weak(ShutterStopClose), + /* K17 */ be_const_int(2), + /* K18 */ be_nested_str_weak(ShutterStop), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20), + /* K21 */ be_nested_str_weak(findsubval), + /* K22 */ be_nested_str_weak(ShutterPosition), + /* K23 */ be_nested_str_weak(_X20), + /* K24 */ be_nested_str_weak(pos_X25_X3A), + /* K25 */ be_nested_str_weak(invoke_request), + /* K26 */ be_nested_str_weak(attribute), + /* K27 */ be_nested_str_weak(update_inverted), + /* K28 */ be_nested_str_weak(set), + /* K29 */ be_nested_str_weak(U1), + /* K30 */ be_nested_str_weak(U2), + /* K31 */ be_nested_str_weak(shadow_shutter_pos), + /* K32 */ be_nested_str_weak(shadow_shutter_direction), + /* K33 */ be_nested_str_weak(shadow_shutter_target), + /* K34 */ be_nested_str_weak(read_attribute), + /* K35 */ be_nested_str_weak(Shutter), + /* K36 */ be_nested_str_weak(contains), + /* K37 */ be_nested_str_weak(Position), + /* K38 */ be_nested_str_weak(attribute_updated), + /* K39 */ be_nested_str_weak(Direction), + /* K40 */ be_nested_str_weak(Target), + /* K41 */ be_nested_str_weak(Status_X2013), + /* K42 */ be_nested_str_weak(StatusSHT), + /* K43 */ be_nested_str_weak(SHT), + /* K44 */ be_nested_str_weak(Opt), + /* K45 */ be_const_int(1), + /* K46 */ be_nested_str_weak(VIRTUAL), + /* K47 */ be_nested_str_weak(parse_sensors), +}; + extern const bclass be_class_Matter_Plugin_Shutter; @@ -13,19 +65,13 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_configuration, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_shutter_index), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(ARG), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(shadow_shutter_inverted), - }), + &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ @@ -54,95 +100,70 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ be_nested_proto( 14, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(light), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(update_shadow_lazy), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(cmd), - /* K9 */ be_nested_str_weak(ShutterStopOpen), - /* K10 */ be_nested_str_weak(tasmota_shutter_index), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(update_shadow), - /* K13 */ be_nested_str_weak(ShutterStopClose), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(ShutterStop), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20), - /* K18 */ be_nested_str_weak(findsubval), - /* K19 */ be_nested_str_weak(shadow_shutter_inverted), - /* K20 */ be_nested_str_weak(ShutterPosition), - /* K21 */ be_nested_str_weak(_X20), - /* K22 */ be_nested_str_weak(pos_X25_X3A), - /* K23 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0xB8160200, // 0001 GETNGBL R5 K1 - 0x88140B02, // 0002 GETMBR R5 R5 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C0704, // 0004 GETMBR R7 R3 K4 + 0xA4120A00, // 0000 IMPORT R4 K5 + 0xB8160C00, // 0001 GETNGBL R5 K6 + 0x88140B07, // 0002 GETMBR R5 R5 K7 + 0x88180708, // 0003 GETMBR R6 R3 K8 + 0x881C0709, // 0004 GETMBR R7 R3 K9 0x54220101, // 0005 LDINT R8 258 0x1C200C08, // 0006 EQ R8 R6 R8 0x78220060, // 0007 JMPF R8 #0069 - 0x8C200105, // 0008 GETMET R8 R0 K5 + 0x8C20010A, // 0008 GETMET R8 R0 K10 0x7C200200, // 0009 CALL R8 1 - 0x1C200F06, // 000A EQ R8 R7 K6 + 0x1C200F03, // 000A EQ R8 R7 K3 0x7822000D, // 000B JMPF R8 #001A - 0xB8220E00, // 000C GETNGBL R8 K7 - 0x8C201108, // 000D GETMET R8 R8 K8 + 0xB8221600, // 000C GETNGBL R8 K11 + 0x8C20110C, // 000D GETMET R8 R8 K12 0x60280008, // 000E GETGBL R10 G8 - 0x882C010A, // 000F GETMBR R11 R0 K10 - 0x002C170B, // 0010 ADD R11 R11 K11 + 0x882C0100, // 000F GETMBR R11 R0 K0 + 0x002C170E, // 0010 ADD R11 R11 K14 0x7C280200, // 0011 CALL R10 1 - 0x002A120A, // 0012 ADD R10 K9 R10 + 0x002A1A0A, // 0012 ADD R10 K13 R10 0x502C0200, // 0013 LDBOOL R11 1 0 0x7C200600, // 0014 CALL R8 3 - 0x8C20010C, // 0015 GETMET R8 R0 K12 + 0x8C20010F, // 0015 GETMET R8 R0 K15 0x7C200200, // 0016 CALL R8 1 0x50200200, // 0017 LDBOOL R8 1 0 0x80041000, // 0018 RET 1 R8 0x7002004D, // 0019 JMP #0068 - 0x1C200F0B, // 001A EQ R8 R7 K11 + 0x1C200F0E, // 001A EQ R8 R7 K14 0x7822000D, // 001B JMPF R8 #002A - 0xB8220E00, // 001C GETNGBL R8 K7 - 0x8C201108, // 001D GETMET R8 R8 K8 + 0xB8221600, // 001C GETNGBL R8 K11 + 0x8C20110C, // 001D GETMET R8 R8 K12 0x60280008, // 001E GETGBL R10 G8 - 0x882C010A, // 001F GETMBR R11 R0 K10 - 0x002C170B, // 0020 ADD R11 R11 K11 + 0x882C0100, // 001F GETMBR R11 R0 K0 + 0x002C170E, // 0020 ADD R11 R11 K14 0x7C280200, // 0021 CALL R10 1 - 0x002A1A0A, // 0022 ADD R10 K13 R10 + 0x002A200A, // 0022 ADD R10 K16 R10 0x502C0200, // 0023 LDBOOL R11 1 0 0x7C200600, // 0024 CALL R8 3 - 0x8C20010C, // 0025 GETMET R8 R0 K12 + 0x8C20010F, // 0025 GETMET R8 R0 K15 0x7C200200, // 0026 CALL R8 1 0x50200200, // 0027 LDBOOL R8 1 0 0x80041000, // 0028 RET 1 R8 0x7002003D, // 0029 JMP #0068 - 0x1C200F0E, // 002A EQ R8 R7 K14 + 0x1C200F11, // 002A EQ R8 R7 K17 0x7822000D, // 002B JMPF R8 #003A - 0xB8220E00, // 002C GETNGBL R8 K7 - 0x8C201108, // 002D GETMET R8 R8 K8 + 0xB8221600, // 002C GETNGBL R8 K11 + 0x8C20110C, // 002D GETMET R8 R8 K12 0x60280008, // 002E GETGBL R10 G8 - 0x882C010A, // 002F GETMBR R11 R0 K10 - 0x002C170B, // 0030 ADD R11 R11 K11 + 0x882C0100, // 002F GETMBR R11 R0 K0 + 0x002C170E, // 0030 ADD R11 R11 K14 0x7C280200, // 0031 CALL R10 1 - 0x002A1E0A, // 0032 ADD R10 K15 R10 + 0x002A240A, // 0032 ADD R10 K18 R10 0x502C0200, // 0033 LDBOOL R11 1 0 0x7C200600, // 0034 CALL R8 3 - 0x8C20010C, // 0035 GETMET R8 R0 K12 + 0x8C20010F, // 0035 GETMET R8 R0 K15 0x7C200200, // 0036 CALL R8 1 0x50200200, // 0037 LDBOOL R8 1 0 0x80041000, // 0038 RET 1 R8 @@ -150,34 +171,34 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x54220004, // 003A LDINT R8 5 0x1C200E08, // 003B EQ R8 R7 R8 0x7822002A, // 003C JMPF R8 #0068 - 0xB8222000, // 003D GETNGBL R8 K16 + 0xB8222600, // 003D GETNGBL R8 K19 0x60240008, // 003E GETGBL R9 G8 0x5C280400, // 003F MOVE R10 R2 0x7C240200, // 0040 CALL R9 1 - 0x00262209, // 0041 ADD R9 K17 R9 - 0x5828000E, // 0042 LDCONST R10 K14 + 0x00262809, // 0041 ADD R9 K20 R9 + 0x58280011, // 0042 LDCONST R10 K17 0x7C200400, // 0043 CALL R8 2 - 0x8C200512, // 0044 GETMET R8 R2 K18 - 0x58280006, // 0045 LDCONST R10 K6 + 0x8C200515, // 0044 GETMET R8 R2 K21 + 0x58280003, // 0045 LDCONST R10 K3 0x7C200400, // 0046 CALL R8 2 0x4C240000, // 0047 LDNIL R9 0x20241009, // 0048 NE R9 R8 R9 0x7826001B, // 0049 JMPF R9 #0066 0x54260063, // 004A LDINT R9 100 0x0C201009, // 004B DIV R8 R8 R9 - 0x88240113, // 004C GETMBR R9 R0 K19 - 0x1C241306, // 004D EQ R9 R9 K6 + 0x88240104, // 004C GETMBR R9 R0 K4 + 0x1C241303, // 004D EQ R9 R9 K3 0x78260001, // 004E JMPF R9 #0051 0x54260063, // 004F LDINT R9 100 0x04201208, // 0050 SUB R8 R9 R8 - 0xB8260E00, // 0051 GETNGBL R9 K7 - 0x8C241308, // 0052 GETMET R9 R9 K8 + 0xB8261600, // 0051 GETNGBL R9 K11 + 0x8C24130C, // 0052 GETMET R9 R9 K12 0x602C0008, // 0053 GETGBL R11 G8 - 0x8830010A, // 0054 GETMBR R12 R0 K10 - 0x0030190B, // 0055 ADD R12 R12 K11 + 0x88300100, // 0054 GETMBR R12 R0 K0 + 0x0030190E, // 0055 ADD R12 R12 K14 0x7C2C0200, // 0056 CALL R11 1 - 0x002E280B, // 0057 ADD R11 K20 R11 - 0x002C1715, // 0058 ADD R11 R11 K21 + 0x002E2C0B, // 0057 ADD R11 K22 R11 + 0x002C1717, // 0058 ADD R11 R11 K23 0x60300008, // 0059 GETGBL R12 G8 0x5C341000, // 005A MOVE R13 R8 0x7C300200, // 005B CALL R12 1 @@ -187,9 +208,9 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x60240008, // 005F GETGBL R9 G8 0x5C281000, // 0060 MOVE R10 R8 0x7C240200, // 0061 CALL R9 1 - 0x00262C09, // 0062 ADD R9 K22 R9 - 0x900E2009, // 0063 SETMBR R3 K16 R9 - 0x8C24010C, // 0064 GETMET R9 R0 K12 + 0x00263009, // 0062 ADD R9 K24 R9 + 0x900E2609, // 0063 SETMBR R3 K19 R9 + 0x8C24010F, // 0064 GETMET R9 R0 K15 0x7C240200, // 0065 CALL R9 1 0x50240200, // 0066 LDBOOL R9 1 0 0x80041200, // 0067 RET 1 R9 @@ -197,7 +218,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x60200003, // 0069 GETGBL R8 G3 0x5C240000, // 006A MOVE R9 R0 0x7C200200, // 006B CALL R8 1 - 0x8C201117, // 006C GETMET R8 R8 K23 + 0x8C201119, // 006C GETMET R8 R8 K25 0x5C280200, // 006D MOVE R10 R1 0x5C2C0400, // 006E MOVE R11 R2 0x5C300600, // 006F MOVE R12 R3 @@ -217,50 +238,32 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ be_nested_proto( 13, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(update_inverted), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(set), - /* K8 */ be_nested_str_weak(U1), - /* K9 */ be_nested_str_weak(U2), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(shadow_shutter_inverted), - /* K12 */ be_nested_str_weak(shadow_shutter_pos), - /* K13 */ be_nested_str_weak(shadow_shutter_direction), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(shadow_shutter_target), - /* K16 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[131]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120C00, // 0000 GETNGBL R4 K6 + 0x88100907, // 0001 GETMBR R4 R4 K7 + 0x88140508, // 0002 GETMBR R5 R2 K8 + 0x8818051A, // 0003 GETMBR R6 R2 K26 0x4C1C0000, // 0004 LDNIL R7 0x54220101, // 0005 LDINT R8 258 0x1C200A08, // 0006 EQ R8 R5 R8 0x78220071, // 0007 JMPF R8 #007A - 0x8C200104, // 0008 GETMET R8 R0 K4 + 0x8C20010A, // 0008 GETMET R8 R0 K10 0x7C200200, // 0009 CALL R8 1 - 0x8C200105, // 000A GETMET R8 R0 K5 + 0x8C20011B, // 000A GETMET R8 R0 K27 0x7C200200, // 000B CALL R8 1 - 0x1C200D06, // 000C EQ R8 R6 K6 + 0x1C200D03, // 000C EQ R8 R6 K3 0x78220005, // 000D JMPF R8 #0014 - 0x8C200707, // 000E GETMET R8 R3 K7 - 0x88280908, // 000F GETMBR R10 R4 K8 + 0x8C20071C, // 000E GETMET R8 R3 K28 + 0x8828091D, // 000F GETMBR R10 R4 K29 0x542E00FE, // 0010 LDINT R11 255 0x7C200600, // 0011 CALL R8 3 0x80041000, // 0012 RET 1 R8 @@ -268,27 +271,27 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220004, // 0014 LDINT R8 5 0x1C200C08, // 0015 EQ R8 R6 R8 0x78220005, // 0016 JMPF R8 #001D - 0x8C200707, // 0017 GETMET R8 R3 K7 - 0x88280909, // 0018 GETMBR R10 R4 K9 - 0x582C0006, // 0019 LDCONST R11 K6 + 0x8C20071C, // 0017 GETMET R8 R3 K28 + 0x8828091E, // 0018 GETMBR R10 R4 K30 + 0x582C0003, // 0019 LDCONST R11 K3 0x7C200600, // 001A CALL R8 3 0x80041000, // 001B RET 1 R8 0x7002005C, // 001C JMP #007A 0x54220006, // 001D LDINT R8 7 0x1C200C08, // 001E EQ R8 R6 R8 0x78220006, // 001F JMPF R8 #0027 - 0x8C200707, // 0020 GETMET R8 R3 K7 - 0x88280908, // 0021 GETMBR R10 R4 K8 + 0x8C20071C, // 0020 GETMET R8 R3 K28 + 0x8828091D, // 0021 GETMBR R10 R4 K29 0x542E0007, // 0022 LDINT R11 8 - 0x002E140B, // 0023 ADD R11 K10 R11 + 0x002E1C0B, // 0023 ADD R11 K14 R11 0x7C200600, // 0024 CALL R8 3 0x80041000, // 0025 RET 1 R8 0x70020052, // 0026 JMP #007A 0x5422000C, // 0027 LDINT R8 13 0x1C200C08, // 0028 EQ R8 R6 R8 0x78220005, // 0029 JMPF R8 #0030 - 0x8C200707, // 002A GETMET R8 R3 K7 - 0x88280908, // 002B GETMBR R10 R4 K8 + 0x8C20071C, // 002A GETMET R8 R3 K28 + 0x8828091D, // 002B GETMBR R10 R4 K29 0x542E00FE, // 002C LDINT R11 255 0x7C200600, // 002D CALL R8 3 0x80041000, // 002E RET 1 R8 @@ -296,22 +299,22 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x5422000D, // 0030 LDINT R8 14 0x1C200C08, // 0031 EQ R8 R6 R8 0x78220013, // 0032 JMPF R8 #0047 - 0x8820010B, // 0033 GETMBR R8 R0 K11 - 0x1C201106, // 0034 EQ R8 R8 K6 + 0x88200104, // 0033 GETMBR R8 R0 K4 + 0x1C201103, // 0034 EQ R8 R8 K3 0x78220006, // 0035 JMPF R8 #003D 0x54220063, // 0036 LDINT R8 100 - 0x8824010C, // 0037 GETMBR R9 R0 K12 + 0x8824011F, // 0037 GETMBR R9 R0 K31 0x04201009, // 0038 SUB R8 R8 R9 0x54260063, // 0039 LDINT R9 100 0x08201009, // 003A MUL R8 R8 R9 0x5C1C1000, // 003B MOVE R7 R8 0x70020003, // 003C JMP #0041 - 0x8820010C, // 003D GETMBR R8 R0 K12 + 0x8820011F, // 003D GETMBR R8 R0 K31 0x54260063, // 003E LDINT R9 100 0x08201009, // 003F MUL R8 R8 R9 0x5C1C1000, // 0040 MOVE R7 R8 - 0x8C200707, // 0041 GETMET R8 R3 K7 - 0x88280909, // 0042 GETMBR R10 R4 K9 + 0x8C20071C, // 0041 GETMET R8 R3 K28 + 0x8828091E, // 0042 GETMBR R10 R4 K30 0x5C2C0E00, // 0043 MOVE R11 R7 0x7C200600, // 0044 CALL R8 3 0x80041000, // 0045 RET 1 R8 @@ -319,19 +322,19 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220009, // 0047 LDINT R8 10 0x1C200C08, // 0048 EQ R8 R6 R8 0x78220010, // 0049 JMPF R8 #005B - 0x8820010D, // 004A GETMBR R8 R0 K13 - 0x1C201106, // 004B EQ R8 R8 K6 + 0x88200120, // 004A GETMBR R8 R0 K32 + 0x1C201103, // 004B EQ R8 R8 K3 0x78220001, // 004C JMPF R8 #004F - 0x58200006, // 004D LDCONST R8 K6 + 0x58200003, // 004D LDCONST R8 K3 0x70020005, // 004E JMP #0055 - 0x8820010D, // 004F GETMBR R8 R0 K13 - 0x24201106, // 0050 GT R8 R8 K6 + 0x88200120, // 004F GETMBR R8 R0 K32 + 0x24201103, // 0050 GT R8 R8 K3 0x78220001, // 0051 JMPF R8 #0054 - 0x5820000A, // 0052 LDCONST R8 K10 + 0x5820000E, // 0052 LDCONST R8 K14 0x70020000, // 0053 JMP #0055 - 0x5820000E, // 0054 LDCONST R8 K14 - 0x8C240707, // 0055 GETMET R9 R3 K7 - 0x882C0908, // 0056 GETMBR R11 R4 K8 + 0x58200011, // 0054 LDCONST R8 K17 + 0x8C24071C, // 0055 GETMET R9 R3 K28 + 0x882C091D, // 0056 GETMBR R11 R4 K29 0x5C301000, // 0057 MOVE R12 R8 0x7C240600, // 0058 CALL R9 3 0x80041200, // 0059 RET 1 R9 @@ -339,22 +342,22 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x5422000A, // 005B LDINT R8 11 0x1C200C08, // 005C EQ R8 R6 R8 0x78220013, // 005D JMPF R8 #0072 - 0x8820010B, // 005E GETMBR R8 R0 K11 - 0x1C201106, // 005F EQ R8 R8 K6 + 0x88200104, // 005E GETMBR R8 R0 K4 + 0x1C201103, // 005F EQ R8 R8 K3 0x78220006, // 0060 JMPF R8 #0068 0x54220063, // 0061 LDINT R8 100 - 0x8824010F, // 0062 GETMBR R9 R0 K15 + 0x88240121, // 0062 GETMBR R9 R0 K33 0x04201009, // 0063 SUB R8 R8 R9 0x54260063, // 0064 LDINT R9 100 0x08201009, // 0065 MUL R8 R8 R9 0x5C1C1000, // 0066 MOVE R7 R8 0x70020003, // 0067 JMP #006C - 0x8820010F, // 0068 GETMBR R8 R0 K15 + 0x88200121, // 0068 GETMBR R8 R0 K33 0x54260063, // 0069 LDINT R9 100 0x08201009, // 006A MUL R8 R8 R9 0x5C1C1000, // 006B MOVE R7 R8 - 0x8C200707, // 006C GETMET R8 R3 K7 - 0x88280909, // 006D GETMBR R10 R4 K9 + 0x8C20071C, // 006C GETMET R8 R3 K28 + 0x8828091E, // 006D GETMBR R10 R4 K30 0x5C2C0E00, // 006E MOVE R11 R7 0x7C200600, // 006F CALL R8 3 0x80041000, // 0070 RET 1 R8 @@ -362,15 +365,15 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220016, // 0072 LDINT R8 23 0x1C200C08, // 0073 EQ R8 R6 R8 0x78220004, // 0074 JMPF R8 #007A - 0x8C200707, // 0075 GETMET R8 R3 K7 - 0x88280908, // 0076 GETMBR R10 R4 K8 - 0x582C0006, // 0077 LDCONST R11 K6 + 0x8C20071C, // 0075 GETMET R8 R3 K28 + 0x8828091D, // 0076 GETMBR R10 R4 K29 + 0x582C0003, // 0077 LDCONST R11 K3 0x7C200600, // 0078 CALL R8 3 0x80041000, // 0079 RET 1 R8 0x60200003, // 007A GETGBL R8 G3 0x5C240000, // 007B MOVE R9 R0 0x7C200200, // 007C CALL R8 1 - 0x8C201110, // 007D GETMET R8 R8 K16 + 0x8C201122, // 007D GETMET R8 R8 K34 0x5C280200, // 007E MOVE R10 R1 0x5C2C0400, // 007F MOVE R11 R2 0x5C300600, // 0080 MOVE R12 R3 @@ -389,13 +392,13 @@ be_local_closure(class_Matter_Plugin_Shutter__X3Clambda_X3E, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 0, /* varg */ + 8, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */ be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -416,81 +419,68 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(Shutter), - /* K1 */ be_nested_str_weak(tasmota_shutter_index), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(Position), - /* K6 */ be_nested_str_weak(shadow_shutter_pos), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_nested_str_weak(Direction), - /* K9 */ be_nested_str_weak(shadow_shutter_direction), - /* K10 */ be_nested_str_weak(Target), - /* K11 */ be_nested_str_weak(shadow_shutter_target), - }), + &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */ be_str_weak(parse_sensors), &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x000C0702, // 0002 ADD R3 R3 K2 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x000C070E, // 0002 ADD R3 R3 K14 0x7C080200, // 0003 CALL R2 1 - 0x000A0002, // 0004 ADD R2 K0 R2 - 0x8C0C0303, // 0005 GETMET R3 R1 K3 + 0x000A4602, // 0004 ADD R2 K35 R2 + 0x8C0C0324, // 0005 GETMET R3 R1 K36 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E002A, // 0008 JMPF R3 #0034 0x940C0202, // 0009 GETIDX R3 R1 R2 - 0x8C100704, // 000A GETMET R4 R3 K4 - 0x58180005, // 000B LDCONST R6 K5 + 0x8C100701, // 000A GETMET R4 R3 K1 + 0x58180025, // 000B LDCONST R6 K37 0x7C100400, // 000C CALL R4 2 0x4C140000, // 000D LDNIL R5 0x20140805, // 000E NE R5 R4 R5 0x78160007, // 000F JMPF R5 #0018 - 0x88140106, // 0010 GETMBR R5 R0 K6 + 0x8814011F, // 0010 GETMBR R5 R0 K31 0x20140805, // 0011 NE R5 R4 R5 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140107, // 0013 GETMET R5 R0 K7 + 0x8C140126, // 0013 GETMET R5 R0 K38 0x541E0101, // 0014 LDINT R7 258 0x5422000D, // 0015 LDINT R8 14 0x7C140600, // 0016 CALL R5 3 - 0x90020C04, // 0017 SETMBR R0 K6 R4 - 0x8C140704, // 0018 GETMET R5 R3 K4 - 0x581C0008, // 0019 LDCONST R7 K8 + 0x90023E04, // 0017 SETMBR R0 K31 R4 + 0x8C140701, // 0018 GETMET R5 R3 K1 + 0x581C0027, // 0019 LDCONST R7 K39 0x7C140400, // 001A CALL R5 2 0x4C180000, // 001B LDNIL R6 0x20180A06, // 001C NE R6 R5 R6 0x781A0007, // 001D JMPF R6 #0026 - 0x88180109, // 001E GETMBR R6 R0 K9 + 0x88180120, // 001E GETMBR R6 R0 K32 0x20180A06, // 001F NE R6 R5 R6 0x781A0003, // 0020 JMPF R6 #0025 - 0x8C180107, // 0021 GETMET R6 R0 K7 + 0x8C180126, // 0021 GETMET R6 R0 K38 0x54220101, // 0022 LDINT R8 258 0x54260009, // 0023 LDINT R9 10 0x7C180600, // 0024 CALL R6 3 - 0x90021205, // 0025 SETMBR R0 K9 R5 - 0x8C180704, // 0026 GETMET R6 R3 K4 - 0x5820000A, // 0027 LDCONST R8 K10 + 0x90024005, // 0025 SETMBR R0 K32 R5 + 0x8C180701, // 0026 GETMET R6 R3 K1 + 0x58200028, // 0027 LDCONST R8 K40 0x7C180400, // 0028 CALL R6 2 0x4C1C0000, // 0029 LDNIL R7 0x201C0C07, // 002A NE R7 R6 R7 0x781E0007, // 002B JMPF R7 #0034 - 0x881C010B, // 002C GETMBR R7 R0 K11 + 0x881C0121, // 002C GETMBR R7 R0 K33 0x201C0C07, // 002D NE R7 R6 R7 0x781E0003, // 002E JMPF R7 #0033 - 0x8C1C0107, // 002F GETMET R7 R0 K7 + 0x8C1C0126, // 002F GETMET R7 R0 K38 0x54260101, // 0030 LDINT R9 258 0x542A000A, // 0031 LDINT R10 11 0x7C1C0600, // 0032 CALL R7 3 - 0x90021606, // 0033 SETMBR R0 K11 R6 + 0x90024206, // 0033 SETMBR R0 K33 R6 0x80000000, // 0034 RET 0 }) ) @@ -505,52 +495,40 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_shutter_inverted), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(cmd), - /* K3 */ be_nested_str_weak(Status_X2013), - /* K4 */ be_nested_str_weak(contains), - /* K5 */ be_nested_str_weak(StatusSHT), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(SHT), - /* K8 */ be_nested_str_weak(tasmota_shutter_index), - /* K9 */ be_nested_str_weak(Opt), - /* K10 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */ be_str_weak(update_inverted), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040104, // 0000 GETMBR R1 R0 K4 0x5409FFFE, // 0001 LDINT R2 -1 0x1C040202, // 0002 EQ R1 R1 R2 0x7806001F, // 0003 JMPF R1 #0024 - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x580C0003, // 0006 LDCONST R3 K3 + 0xB8061600, // 0004 GETNGBL R1 K11 + 0x8C04030C, // 0005 GETMET R1 R1 K12 + 0x580C0029, // 0006 LDCONST R3 K41 0x50100200, // 0007 LDBOOL R4 1 0 0x7C040600, // 0008 CALL R1 3 - 0x8C080304, // 0009 GETMET R2 R1 K4 - 0x58100005, // 000A LDCONST R4 K5 + 0x8C080324, // 0009 GETMET R2 R1 K36 + 0x5810002A, // 000A LDCONST R4 K42 0x7C080400, // 000B CALL R2 2 0x780A0016, // 000C JMPF R2 #0024 - 0x94040305, // 000D GETIDX R1 R1 K5 - 0x8C080306, // 000E GETMET R2 R1 K6 + 0x9404032A, // 000D GETIDX R1 R1 K42 + 0x8C080301, // 000E GETMET R2 R1 K1 0x60100008, // 000F GETGBL R4 G8 - 0x88140108, // 0010 GETMBR R5 R0 K8 + 0x88140100, // 0010 GETMBR R5 R0 K0 0x7C100200, // 0011 CALL R4 1 - 0x00120E04, // 0012 ADD R4 K7 R4 + 0x00125604, // 0012 ADD R4 K43 R4 0x60140013, // 0013 GETGBL R5 G19 0x7C140000, // 0014 CALL R5 0 0x7C080600, // 0015 CALL R2 3 - 0x8C080506, // 0016 GETMET R2 R2 K6 - 0x58100009, // 0017 LDCONST R4 K9 + 0x8C080501, // 0016 GETMET R2 R2 K1 + 0x5810002C, // 0017 LDCONST R4 K44 0x7C080400, // 0018 CALL R2 2 0x4C0C0000, // 0019 LDNIL R3 0x200C0403, // 001A NE R3 R2 R3 @@ -559,10 +537,10 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ 0x6010000C, // 001D GETGBL R4 G12 0x5C140400, // 001E MOVE R5 R2 0x7C100200, // 001F CALL R4 1 - 0x0410090A, // 0020 SUB R4 R4 K10 + 0x0410092D, // 0020 SUB R4 R4 K45 0x94100404, // 0021 GETIDX R4 R2 R4 0x7C0C0200, // 0022 CALL R3 1 - 0x90020003, // 0023 SETMBR R0 K0 R3 + 0x90020803, // 0023 SETMBR R0 K4 R3 0x80000000, // 0024 RET 0 }) ) @@ -577,47 +555,37 @@ be_local_closure(class_Matter_Plugin_Shutter_update_shadow, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(update_inverted), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(cmd), - /* K4 */ be_nested_str_weak(ShutterPosition), - /* K5 */ be_nested_str_weak(tasmota_shutter_index), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(parse_sensors), - /* K8 */ be_nested_str_weak(update_shadow), - }), + &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804012E, // 0000 GETMBR R1 R0 K46 0x7406000E, // 0001 JMPT R1 #0011 - 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x8C04011B, // 0002 GETMET R1 R0 K27 0x7C040200, // 0003 CALL R1 1 - 0xB8060400, // 0004 GETNGBL R1 K2 - 0x8C040303, // 0005 GETMET R1 R1 K3 + 0xB8061600, // 0004 GETNGBL R1 K11 + 0x8C04030C, // 0005 GETMET R1 R1 K12 0x600C0008, // 0006 GETGBL R3 G8 - 0x88100105, // 0007 GETMBR R4 R0 K5 - 0x00100906, // 0008 ADD R4 R4 K6 + 0x88100100, // 0007 GETMBR R4 R0 K0 + 0x0010090E, // 0008 ADD R4 R4 K14 0x7C0C0200, // 0009 CALL R3 1 - 0x000E0803, // 000A ADD R3 K4 R3 + 0x000E2C03, // 000A ADD R3 K22 R3 0x50100200, // 000B LDBOOL R4 1 0 0x7C040600, // 000C CALL R1 3 0x78060002, // 000D JMPF R1 #0011 - 0x8C080107, // 000E GETMET R2 R0 K7 + 0x8C08012F, // 000E GETMET R2 R0 K47 0x5C100200, // 000F MOVE R4 R1 0x7C080400, // 0010 CALL R2 2 0x60040003, // 0011 GETGBL R1 G3 0x5C080000, // 0012 MOVE R2 R0 0x7C040200, // 0013 CALL R1 1 - 0x8C040308, // 0014 GETMET R1 R1 K8 + 0x8C04030F, // 0014 GETMET R1 R1 K15 0x7C040200, // 0015 CALL R1 1 0x80000000, // 0016 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h index 19840ada1..c0136e105 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h @@ -3,6 +3,65 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Light1' ktab size: 55, total: 108 (saved 424 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light1[55] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(BRIDGE), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), + /* K4 */ be_nested_str_weak(call_remote_sync), + /* K5 */ be_nested_str_weak(Dimmer), + /* K6 */ be_nested_str_weak(parse_status), + /* K7 */ be_nested_str_weak(VIRTUAL), + /* K8 */ be_nested_str_weak(shadow_onoff), + /* K9 */ be_nested_str_weak(attribute_updated), + /* K10 */ be_nested_str_weak(shadow_bri), + /* K11 */ be_nested_str_weak(light), + /* K12 */ be_nested_str_weak(set), + /* K13 */ be_nested_str_weak(bri), + /* K14 */ be_nested_str_weak(light_index), + /* K15 */ be_nested_str_weak(power), + /* K16 */ be_nested_str_weak(update_shadow), + /* K17 */ be_nested_str_weak(), + /* K18 */ be_nested_str_weak(_X25i_X25_X25), + /* K19 */ be_nested_str_weak(_X26_X23128261_X3B_X20), + /* K20 */ be_nested_str_weak(matter), + /* K21 */ be_nested_str_weak(TLV), + /* K22 */ be_nested_str_weak(cluster), + /* K23 */ be_nested_str_weak(command), + /* K24 */ be_nested_str_weak(update_shadow_lazy), + /* K25 */ be_nested_str_weak(findsubval), + /* K26 */ be_nested_str_weak(set_bri), + /* K27 */ be_nested_str_weak(log), + /* K28 */ be_nested_str_weak(bri_X3A), + /* K29 */ be_nested_str_weak(publish_command), + /* K30 */ be_nested_str_weak(Bri), + /* K31 */ be_const_int(1), + /* K32 */ be_const_int(2), + /* K33 */ be_const_int(3), + /* K34 */ be_nested_str_weak(Power), + /* K35 */ be_nested_str_weak(invoke_request), + /* K36 */ be_nested_str_weak(attribute), + /* K37 */ be_nested_str_weak(U1), + /* K38 */ be_nested_str_weak(read_attribute), + /* K39 */ be_nested_str_weak(tasmota_relay_index), + /* K40 */ be_nested_str_weak(find), + /* K41 */ be_nested_str_weak(ARG), + /* K42 */ be_const_int(0), + /* K43 */ be_nested_str_weak(TYPE), + /* K44 */ be_nested_str_weak(light1), + /* K45 */ be_nested_str_weak(get_option), + /* K46 */ be_nested_str_weak(get), + /* K47 */ be_nested_str_weak(update_virtual), + /* K48 */ be_nested_str_weak(init), + /* K49 */ be_nested_str_weak(webserver), + /* K50 */ be_nested_str_weak(web_values_prefix), + /* K51 */ be_nested_str_weak(content_send), + /* K52 */ be_nested_str_weak(_X25s_X20_X25s), + /* K53 */ be_nested_str_weak(web_value_onoff), + /* K54 */ be_nested_str_weak(web_value_dimmer), +}; + extern const bclass be_class_Matter_Plugin_Light1; @@ -13,31 +72,13 @@ be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_nested_str_weak(call_remote_sync), - /* K5 */ be_nested_str_weak(Dimmer), - /* K6 */ be_nested_str_weak(parse_status), - /* K7 */ be_nested_str_weak(VIRTUAL), - /* K8 */ be_nested_str_weak(shadow_onoff), - /* K9 */ be_nested_str_weak(attribute_updated), - /* K10 */ be_nested_str_weak(shadow_bri), - /* K11 */ be_nested_str_weak(light), - /* K12 */ be_nested_str_weak(set), - /* K13 */ be_nested_str_weak(bri), - /* K14 */ be_nested_str_weak(light_index), - /* K15 */ be_nested_str_weak(power), - /* K16 */ be_nested_str_weak(update_shadow), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(set_bri), &be_const_str_solidified, ( &(const binstruction[91]) { /* code */ @@ -145,43 +186,35 @@ be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(shadow_bri), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(_X25i_X25_X25), - /* K6 */ be_nested_str_weak(_X26_X23128261_X3B_X20), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(web_value_dimmer), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x58040011, // 0000 LDCONST R1 K17 + 0x8808010A, // 0001 GETMBR R2 R0 K10 0x4C0C0000, // 0002 LDNIL R3 0x20080403, // 0003 NE R2 R2 R3 0x780A000C, // 0004 JMPF R2 #0012 0xB80A0400, // 0005 GETNGBL R2 K2 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x88100101, // 0007 GETMBR R4 R0 K1 - 0x58140004, // 0008 LDCONST R5 K4 + 0x8810010A, // 0007 GETMBR R4 R0 K10 + 0x58140000, // 0008 LDCONST R5 K0 0x541A00FD, // 0009 LDINT R6 254 - 0x581C0004, // 000A LDCONST R7 K4 + 0x581C0000, // 000A LDCONST R7 K0 0x54220063, // 000B LDINT R8 100 0x7C080C00, // 000C CALL R2 6 0x600C0018, // 000D GETGBL R3 G24 - 0x58100005, // 000E LDCONST R4 K5 + 0x58100012, // 000E LDCONST R4 K18 0x5C140400, // 000F MOVE R5 R2 0x7C0C0400, // 0010 CALL R3 2 0x5C040600, // 0011 MOVE R1 R3 - 0x000A0C01, // 0012 ADD R2 K6 R1 + 0x000A2601, // 0012 ADD R2 K19 R1 0x80040400, // 0013 RET 1 R2 }) ) @@ -196,88 +229,66 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ be_nested_proto( 22, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(light), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(update_shadow_lazy), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(findsubval), - /* K8 */ be_nested_str_weak(set_bri), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(bri_X3A), - /* K11 */ be_nested_str_weak(publish_command), - /* K12 */ be_nested_str_weak(Bri), - /* K13 */ be_nested_str_weak(Dimmer), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(scale_uint), - /* K16 */ be_const_int(1), - /* K17 */ be_const_int(2), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(Power), - /* K20 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[119]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0xB8160200, // 0001 GETNGBL R5 K1 - 0x88140B02, // 0002 GETMBR R5 R5 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C0704, // 0004 GETMBR R7 R3 K4 + 0xA4121600, // 0000 IMPORT R4 K11 + 0xB8162800, // 0001 GETNGBL R5 K20 + 0x88140B15, // 0002 GETMBR R5 R5 K21 + 0x88180716, // 0003 GETMBR R6 R3 K22 + 0x881C0717, // 0004 GETMBR R7 R3 K23 0x54220007, // 0005 LDINT R8 8 0x1C200C08, // 0006 EQ R8 R6 R8 0x78220064, // 0007 JMPF R8 #006D - 0x8C200105, // 0008 GETMET R8 R0 K5 + 0x8C200118, // 0008 GETMET R8 R0 K24 0x7C200200, // 0009 CALL R8 1 - 0x1C200F06, // 000A EQ R8 R7 K6 + 0x1C200F00, // 000A EQ R8 R7 K0 0x7822001A, // 000B JMPF R8 #0027 - 0x8C200507, // 000C GETMET R8 R2 K7 - 0x58280006, // 000D LDCONST R10 K6 + 0x8C200519, // 000C GETMET R8 R2 K25 + 0x58280000, // 000D LDCONST R10 K0 0x7C200400, // 000E CALL R8 2 - 0x8C240108, // 000F GETMET R9 R0 K8 + 0x8C24011A, // 000F GETMET R9 R0 K26 0x5C2C1000, // 0010 MOVE R11 R8 0x7C240400, // 0011 CALL R9 2 0x60240008, // 0012 GETGBL R9 G8 0x5C281000, // 0013 MOVE R10 R8 0x7C240200, // 0014 CALL R9 1 - 0x00261409, // 0015 ADD R9 K10 R9 - 0x900E1209, // 0016 SETMBR R3 K9 R9 - 0x8C24010B, // 0017 GETMET R9 R0 K11 - 0x582C000C, // 0018 LDCONST R11 K12 + 0x00263809, // 0015 ADD R9 K28 R9 + 0x900E3609, // 0016 SETMBR R3 K27 R9 + 0x8C24011D, // 0017 GETMET R9 R0 K29 + 0x582C001E, // 0018 LDCONST R11 K30 0x5C301000, // 0019 MOVE R12 R8 - 0x5834000D, // 001A LDCONST R13 K13 - 0xB83A1C00, // 001B GETNGBL R14 K14 - 0x8C381D0F, // 001C GETMET R14 R14 K15 + 0x58340005, // 001A LDCONST R13 K5 + 0xB83A0400, // 001B GETNGBL R14 K2 + 0x8C381D03, // 001C GETMET R14 R14 K3 0x5C401000, // 001D MOVE R16 R8 - 0x58440006, // 001E LDCONST R17 K6 + 0x58440000, // 001E LDCONST R17 K0 0x544A00FD, // 001F LDINT R18 254 - 0x584C0006, // 0020 LDCONST R19 K6 + 0x584C0000, // 0020 LDCONST R19 K0 0x54520063, // 0021 LDINT R20 100 0x7C380C00, // 0022 CALL R14 6 0x7C240A00, // 0023 CALL R9 5 0x50240200, // 0024 LDBOOL R9 1 0 0x80041200, // 0025 RET 1 R9 0x70020044, // 0026 JMP #006C - 0x1C200F10, // 0027 EQ R8 R7 K16 + 0x1C200F1F, // 0027 EQ R8 R7 K31 0x78220002, // 0028 JMPF R8 #002C 0x50200200, // 0029 LDBOOL R8 1 0 0x80041000, // 002A RET 1 R8 0x7002003F, // 002B JMP #006C - 0x1C200F11, // 002C EQ R8 R7 K17 + 0x1C200F20, // 002C EQ R8 R7 K32 0x78220002, // 002D JMPF R8 #0031 0x50200200, // 002E LDBOOL R8 1 0 0x80041000, // 002F RET 1 R8 0x7002003A, // 0030 JMP #006C - 0x1C200F12, // 0031 EQ R8 R7 K18 + 0x1C200F21, // 0031 EQ R8 R7 K33 0x78220002, // 0032 JMPF R8 #0036 0x50200200, // 0033 LDBOOL R8 1 0 0x80041000, // 0034 RET 1 R8 @@ -285,36 +296,36 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x54220003, // 0036 LDINT R8 4 0x1C200E08, // 0037 EQ R8 R7 R8 0x78220021, // 0038 JMPF R8 #005B - 0x8C200507, // 0039 GETMET R8 R2 K7 - 0x58280006, // 003A LDCONST R10 K6 + 0x8C200519, // 0039 GETMET R8 R2 K25 + 0x58280000, // 003A LDCONST R10 K0 0x7C200400, // 003B CALL R8 2 - 0x24241106, // 003C GT R9 R8 K6 - 0x8C280108, // 003D GETMET R10 R0 K8 + 0x24241100, // 003C GT R9 R8 K0 + 0x8C28011A, // 003D GETMET R10 R0 K26 0x5C301000, // 003E MOVE R12 R8 0x5C341200, // 003F MOVE R13 R9 0x7C280600, // 0040 CALL R10 3 0x60280008, // 0041 GETGBL R10 G8 0x5C2C1000, // 0042 MOVE R11 R8 0x7C280200, // 0043 CALL R10 1 - 0x002A140A, // 0044 ADD R10 K10 R10 - 0x900E120A, // 0045 SETMBR R3 K9 R10 - 0x8C28010B, // 0046 GETMET R10 R0 K11 - 0x5830000C, // 0047 LDCONST R12 K12 + 0x002A380A, // 0044 ADD R10 K28 R10 + 0x900E360A, // 0045 SETMBR R3 K27 R10 + 0x8C28011D, // 0046 GETMET R10 R0 K29 + 0x5830001E, // 0047 LDCONST R12 K30 0x5C341000, // 0048 MOVE R13 R8 - 0x5838000D, // 0049 LDCONST R14 K13 - 0xB83E1C00, // 004A GETNGBL R15 K14 - 0x8C3C1F0F, // 004B GETMET R15 R15 K15 + 0x58380005, // 0049 LDCONST R14 K5 + 0xB83E0400, // 004A GETNGBL R15 K2 + 0x8C3C1F03, // 004B GETMET R15 R15 K3 0x5C441000, // 004C MOVE R17 R8 - 0x58480006, // 004D LDCONST R18 K6 + 0x58480000, // 004D LDCONST R18 K0 0x544E00FD, // 004E LDINT R19 254 - 0x58500006, // 004F LDCONST R20 K6 + 0x58500000, // 004F LDCONST R20 K0 0x54560063, // 0050 LDINT R21 100 0x7C3C0C00, // 0051 CALL R15 6 - 0x58400013, // 0052 LDCONST R16 K19 + 0x58400022, // 0052 LDCONST R16 K34 0x78260001, // 0053 JMPF R9 #0056 - 0x58440010, // 0054 LDCONST R17 K16 + 0x5844001F, // 0054 LDCONST R17 K31 0x70020000, // 0055 JMP #0057 - 0x58440006, // 0056 LDCONST R17 K6 + 0x58440000, // 0056 LDCONST R17 K0 0x7C280E00, // 0057 CALL R10 7 0x50280200, // 0058 LDBOOL R10 1 0 0x80041400, // 0059 RET 1 R10 @@ -340,7 +351,7 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x60200003, // 006D GETGBL R8 G3 0x5C240000, // 006E MOVE R9 R0 0x7C200200, // 006F CALL R8 1 - 0x8C201114, // 0070 GETMET R8 R8 K20 + 0x8C201123, // 0070 GETMET R8 R8 K35 0x5C280200, // 0071 MOVE R10 R1 0x5C2C0400, // 0072 MOVE R11 R2 0x5C300600, // 0073 MOVE R12 R3 @@ -360,58 +371,45 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(shadow_bri), - /* K9 */ be_const_int(2), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[59]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8122800, // 0000 GETNGBL R4 K20 + 0x88100915, // 0001 GETMBR R4 R4 K21 + 0x88140516, // 0002 GETMBR R5 R2 K22 + 0x88180524, // 0003 GETMBR R6 R2 K36 0x541E0007, // 0004 LDINT R7 8 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E002A, // 0006 JMPF R7 #0032 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0118, // 0007 GETMET R7 R0 K24 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x1C1C0D00, // 0009 EQ R7 R6 K0 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 - 0x88280108, // 000D GETMBR R10 R0 K8 + 0x8C1C070C, // 000B GETMET R7 R3 K12 + 0x88240925, // 000C GETMBR R9 R4 K37 + 0x8828010A, // 000D GETMBR R10 R0 K10 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020020, // 0010 JMP #0032 - 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x1C1C0D20, // 0011 EQ R7 R6 K32 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240907, // 0014 GETMBR R9 R4 K7 - 0x58280005, // 0015 LDCONST R10 K5 + 0x8C1C070C, // 0013 GETMET R7 R3 K12 + 0x88240925, // 0014 GETMBR R9 R4 K37 + 0x58280000, // 0015 LDCONST R10 K0 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020018, // 0018 JMP #0032 - 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x1C1C0D21, // 0019 EQ R7 R6 K33 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C0706, // 001B GETMET R7 R3 K6 - 0x88240907, // 001C GETMBR R9 R4 K7 + 0x8C1C070C, // 001B GETMET R7 R3 K12 + 0x88240925, // 001C GETMBR R9 R4 K37 0x542A00FD, // 001D LDINT R10 254 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 @@ -419,24 +417,24 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0x541E000E, // 0021 LDINT R7 15 0x1C1C0C07, // 0022 EQ R7 R6 R7 0x781E0005, // 0023 JMPF R7 #002A - 0x8C1C0706, // 0024 GETMET R7 R3 K6 - 0x88240907, // 0025 GETMBR R9 R4 K7 - 0x58280005, // 0026 LDCONST R10 K5 + 0x8C1C070C, // 0024 GETMET R7 R3 K12 + 0x88240925, // 0025 GETMBR R9 R4 K37 + 0x58280000, // 0026 LDCONST R10 K0 0x7C1C0600, // 0027 CALL R7 3 0x80040E00, // 0028 RET 1 R7 0x70020007, // 0029 JMP #0032 0x541E0010, // 002A LDINT R7 17 0x1C1C0C07, // 002B EQ R7 R6 R7 0x781E0004, // 002C JMPF R7 #0032 - 0x8C1C0706, // 002D GETMET R7 R3 K6 - 0x88240907, // 002E GETMBR R9 R4 K7 - 0x88280108, // 002F GETMBR R10 R0 K8 + 0x8C1C070C, // 002D GETMET R7 R3 K12 + 0x88240925, // 002E GETMBR R9 R4 K37 + 0x8828010A, // 002F GETMBR R10 R0 K10 0x7C1C0600, // 0030 CALL R7 3 0x80040E00, // 0031 RET 1 R7 0x601C0003, // 0032 GETGBL R7 G3 0x5C200000, // 0033 MOVE R8 R0 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0F0B, // 0035 GETMET R7 R7 K11 + 0x8C1C0F26, // 0035 GETMET R7 R7 K38 0x5C240200, // 0036 MOVE R9 R1 0x5C280400, // 0037 MOVE R10 R2 0x5C2C0600, // 0038 MOVE R11 R3 @@ -455,81 +453,67 @@ be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(tasmota_relay_index), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(ARG), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(TYPE), - /* K7 */ be_nested_str_weak(light1), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(get_option), - /* K10 */ be_nested_str_weak(light), - /* K11 */ be_nested_str_weak(get), - /* K12 */ be_nested_str_weak(light_index), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(parse_configuration), &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080101, // 0000 GETMBR R2 R0 K1 0x780A000F, // 0001 JMPF R2 #0012 0x60080009, // 0002 GETGBL R2 G9 - 0x8C0C0302, // 0003 GETMET R3 R1 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x8C0C0328, // 0003 GETMET R3 R1 K40 + 0x88140129, // 0004 GETMBR R5 R0 K41 0x4C180000, // 0005 LDNIL R6 0x7C0C0600, // 0006 CALL R3 3 0x7C080200, // 0007 CALL R2 1 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x88080101, // 0009 GETMBR R2 R0 K1 + 0x90024E02, // 0008 SETMBR R0 K39 R2 + 0x88080127, // 0009 GETMBR R2 R0 K39 0x4C0C0000, // 000A LDNIL R3 0x20080403, // 000B NE R2 R2 R3 0x780A0003, // 000C JMPF R2 #0011 - 0x88080101, // 000D GETMBR R2 R0 K1 - 0x18080504, // 000E LE R2 R2 K4 + 0x88080127, // 000D GETMBR R2 R0 K39 + 0x1808052A, // 000E LE R2 R2 K42 0x780A0000, // 000F JMPF R2 #0011 - 0x90020305, // 0010 SETMBR R0 K1 K5 + 0x90024F1F, // 0010 SETMBR R0 K39 K31 0x70020020, // 0011 JMP #0033 - 0x88080101, // 0012 GETMBR R2 R0 K1 + 0x88080127, // 0012 GETMBR R2 R0 K39 0x4C0C0000, // 0013 LDNIL R3 0x1C080403, // 0014 EQ R2 R2 R3 0x780A001C, // 0015 JMPF R2 #0033 - 0x88080106, // 0016 GETMBR R2 R0 K6 - 0x1C080507, // 0017 EQ R2 R2 K7 + 0x8808012B, // 0016 GETMBR R2 R0 K43 + 0x1C08052C, // 0017 EQ R2 R2 K44 0x780A0019, // 0018 JMPF R2 #0033 - 0x8C080302, // 0019 GETMET R2 R1 K2 - 0x88100103, // 001A GETMBR R4 R0 K3 + 0x8C080328, // 0019 GETMET R2 R1 K40 + 0x88100129, // 001A GETMBR R4 R0 K41 0x7C080400, // 001B CALL R2 2 0x4C0C0000, // 001C LDNIL R3 0x1C0C0403, // 001D EQ R3 R2 R3 0x780E000E, // 001E JMPF R3 #002E - 0xB80E1000, // 001F GETNGBL R3 K8 - 0x8C0C0709, // 0020 GETMET R3 R3 K9 + 0xB80E0400, // 001F GETNGBL R3 K2 + 0x8C0C072D, // 0020 GETMET R3 R3 K45 0x54160043, // 0021 LDINT R5 68 0x7C0C0400, // 0022 CALL R3 2 - 0x1C0C0704, // 0023 EQ R3 R3 K4 + 0x1C0C072A, // 0023 EQ R3 R3 K42 0x780E0007, // 0024 JMPF R3 #002D - 0xA40E1400, // 0025 IMPORT R3 K10 - 0x8C10070B, // 0026 GETMET R4 R3 K11 - 0x58180005, // 0027 LDCONST R6 K5 + 0xA40E1600, // 0025 IMPORT R3 K11 + 0x8C10072E, // 0026 GETMET R4 R3 K46 + 0x5818001F, // 0027 LDCONST R6 K31 0x7C100400, // 0028 CALL R4 2 0x4C140000, // 0029 LDNIL R5 0x20100805, // 002A NE R4 R4 R5 0x78120000, // 002B JMPF R4 #002D - 0x90021905, // 002C SETMBR R0 K12 K5 + 0x90021D1F, // 002C SETMBR R0 K14 K31 0x70020004, // 002D JMP #0033 0x600C0009, // 002E GETGBL R3 G9 0x5C100400, // 002F MOVE R4 R2 0x7C0C0200, // 0030 CALL R3 1 - 0x040C0705, // 0031 SUB R3 R3 K5 - 0x90021803, // 0032 SETMBR R0 K12 R3 + 0x040C071F, // 0031 SUB R3 R3 K31 + 0x90021C03, // 0032 SETMBR R0 K14 R3 0x80000000, // 0033 RET 0 }) ) @@ -544,32 +528,26 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Power), - /* K2 */ be_nested_str_weak(Bri), - /* K3 */ be_nested_str_weak(set_bri), - /* K4 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 + 0x8C080328, // 0000 GETMET R2 R1 K40 + 0x58100022, // 0001 LDCONST R4 K34 0x7C080400, // 0002 CALL R2 2 - 0x8C0C0300, // 0003 GETMET R3 R1 K0 - 0x58140002, // 0004 LDCONST R5 K2 + 0x8C0C0328, // 0003 GETMET R3 R1 K40 + 0x5814001E, // 0004 LDCONST R5 K30 0x7C0C0400, // 0005 CALL R3 2 0x4C100000, // 0006 LDNIL R4 0x20100604, // 0007 NE R4 R3 R4 0x78120006, // 0008 JMPF R4 #0010 - 0x8C100103, // 0009 GETMET R4 R0 K3 + 0x8C10011A, // 0009 GETMET R4 R0 K26 0x60180009, // 000A GETGBL R6 G9 0x5C1C0600, // 000B MOVE R7 R3 0x7C180200, // 000C CALL R6 1 @@ -579,7 +557,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ 0x60100003, // 0010 GETGBL R4 G3 0x5C140000, // 0011 MOVE R5 R0 0x7C100200, // 0012 CALL R4 1 - 0x8C100904, // 0013 GETMET R4 R4 K4 + 0x8C10092F, // 0013 GETMET R4 R4 K47 0x5C180200, // 0014 MOVE R6 R1 0x7C100400, // 0015 CALL R4 2 0x80000000, // 0016 RET 0 @@ -596,25 +574,21 @@ be_local_closure(class_Matter_Plugin_Light1_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_bri), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(init), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x90020101, // 0000 SETMBR R0 K0 K1 + 0x90021500, // 0000 SETMBR R0 K10 K0 0x60100003, // 0001 GETGBL R4 G3 0x5C140000, // 0002 MOVE R5 R0 0x7C100200, // 0003 CALL R4 1 - 0x8C100902, // 0004 GETMET R4 R4 K2 + 0x8C100930, // 0004 GETMET R4 R4 K48 0x5C180200, // 0005 MOVE R6 R1 0x5C1C0400, // 0006 MOVE R7 R2 0x5C200600, // 0007 MOVE R8 R3 @@ -633,34 +607,26 @@ be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s_X20_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(web_value_dimmer), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4066200, // 0000 IMPORT R1 K49 + 0x8C080132, // 0001 GETMET R2 R0 K50 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080333, // 0003 GETMET R2 R1 K51 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x58140034, // 0005 LDCONST R5 K52 + 0x8C180135, // 0006 GETMET R6 R0 K53 + 0x88200108, // 0007 GETMBR R8 R0 K8 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0106, // 0009 GETMET R7 R0 K6 + 0x8C1C0136, // 0009 GETMET R7 R0 K54 0x7C1C0200, // 000A CALL R7 1 0x7C100600, // 000B CALL R4 3 0x7C080400, // 000C CALL R2 2 @@ -678,29 +644,20 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(Dimmer), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(scale_uint), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(shadow_bri), - /* K7 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x8C0C0706, // 0003 GETMET R3 R3 K6 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 @@ -708,29 +665,29 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ 0x1C0C0403, // 0008 EQ R3 R2 R3 0x780E0017, // 0009 JMPF R3 #0022 0x600C0009, // 000A GETGBL R3 G9 - 0x8C100301, // 000B GETMET R4 R1 K1 - 0x58180002, // 000C LDCONST R6 K2 + 0x8C100328, // 000B GETMET R4 R1 K40 + 0x58180005, // 000C LDCONST R6 K5 0x7C100400, // 000D CALL R4 2 0x7C0C0200, // 000E CALL R3 1 0x4C100000, // 000F LDNIL R4 0x20100604, // 0010 NE R4 R3 R4 0x7812000F, // 0011 JMPF R4 #0022 - 0xB8120600, // 0012 GETNGBL R4 K3 - 0x8C100904, // 0013 GETMET R4 R4 K4 + 0xB8120400, // 0012 GETNGBL R4 K2 + 0x8C100903, // 0013 GETMET R4 R4 K3 0x5C180600, // 0014 MOVE R6 R3 - 0x581C0005, // 0015 LDCONST R7 K5 + 0x581C002A, // 0015 LDCONST R7 K42 0x54220063, // 0016 LDINT R8 100 - 0x58240005, // 0017 LDCONST R9 K5 + 0x5824002A, // 0017 LDCONST R9 K42 0x542A00FD, // 0018 LDINT R10 254 0x7C100C00, // 0019 CALL R4 6 - 0x88140106, // 001A GETMBR R5 R0 K6 + 0x8814010A, // 001A GETMBR R5 R0 K10 0x20140805, // 001B NE R5 R4 R5 0x78160004, // 001C JMPF R5 #0022 - 0x8C140107, // 001D GETMET R5 R0 K7 + 0x8C140109, // 001D GETMET R5 R0 K9 0x541E0007, // 001E LDINT R7 8 - 0x58200005, // 001F LDCONST R8 K5 + 0x5820002A, // 001F LDCONST R8 K42 0x7C140600, // 0020 CALL R5 3 - 0x90020C04, // 0021 SETMBR R0 K6 R4 + 0x90021404, // 0021 SETMBR R0 K10 R4 0x80000000, // 0022 RET 0 }) ) @@ -745,83 +702,67 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ be_nested_proto( 12, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_nested_str_weak(light_index), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(power), - /* K7 */ be_nested_str_weak(shadow_onoff), - /* K8 */ be_nested_str_weak(attribute_updated), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(bri), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_uint), - /* K13 */ be_nested_str_weak(shadow_bri), - /* K14 */ be_nested_str_weak(update_shadow), - }), + &be_ktab_class_Matter_Plugin_Light1, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040107, // 0000 GETMBR R1 R0 K7 0x7406002C, // 0001 JMPT R1 #002F 0x88040101, // 0002 GETMBR R1 R0 K1 0x7406002A, // 0003 JMPT R1 #002F - 0xA4060400, // 0004 IMPORT R1 K2 - 0x8C080303, // 0005 GETMET R2 R1 K3 - 0x88100104, // 0006 GETMBR R4 R0 K4 + 0xA4061600, // 0004 IMPORT R1 K11 + 0x8C08032E, // 0005 GETMET R2 R1 K46 + 0x8810010E, // 0006 GETMBR R4 R0 K14 0x7C080400, // 0007 CALL R2 2 0x4C0C0000, // 0008 LDNIL R3 0x200C0403, // 0009 NE R3 R2 R3 0x780E0023, // 000A JMPF R3 #002F - 0x8C0C0505, // 000B GETMET R3 R2 K5 - 0x58140006, // 000C LDCONST R5 K6 + 0x8C0C0528, // 000B GETMET R3 R2 K40 + 0x5814000F, // 000C LDCONST R5 K15 0x4C180000, // 000D LDNIL R6 0x7C0C0600, // 000E CALL R3 3 - 0x88100107, // 000F GETMBR R4 R0 K7 + 0x88100108, // 000F GETMBR R4 R0 K8 0x20100604, // 0010 NE R4 R3 R4 0x78120004, // 0011 JMPF R4 #0017 - 0x8C100108, // 0012 GETMET R4 R0 K8 + 0x8C100109, // 0012 GETMET R4 R0 K9 0x541A0005, // 0013 LDINT R6 6 - 0x581C0009, // 0014 LDCONST R7 K9 + 0x581C0000, // 0014 LDCONST R7 K0 0x7C100600, // 0015 CALL R4 3 - 0x90020E03, // 0016 SETMBR R0 K7 R3 - 0x8C100505, // 0017 GETMET R4 R2 K5 - 0x5818000A, // 0018 LDCONST R6 K10 + 0x90021003, // 0016 SETMBR R0 K8 R3 + 0x8C100528, // 0017 GETMET R4 R2 K40 + 0x5818000D, // 0018 LDCONST R6 K13 0x4C1C0000, // 0019 LDNIL R7 0x7C100600, // 001A CALL R4 3 0x4C140000, // 001B LDNIL R5 0x20140805, // 001C NE R5 R4 R5 0x78160010, // 001D JMPF R5 #002F - 0xB8161600, // 001E GETNGBL R5 K11 - 0x8C140B0C, // 001F GETMET R5 R5 K12 + 0xB8160400, // 001E GETNGBL R5 K2 + 0x8C140B03, // 001F GETMET R5 R5 K3 0x5C1C0800, // 0020 MOVE R7 R4 - 0x58200009, // 0021 LDCONST R8 K9 + 0x58200000, // 0021 LDCONST R8 K0 0x542600FE, // 0022 LDINT R9 255 - 0x58280009, // 0023 LDCONST R10 K9 + 0x58280000, // 0023 LDCONST R10 K0 0x542E00FD, // 0024 LDINT R11 254 0x7C140C00, // 0025 CALL R5 6 0x5C100A00, // 0026 MOVE R4 R5 - 0x8814010D, // 0027 GETMBR R5 R0 K13 + 0x8814010A, // 0027 GETMBR R5 R0 K10 0x20140805, // 0028 NE R5 R4 R5 0x78160004, // 0029 JMPF R5 #002F - 0x8C140108, // 002A GETMET R5 R0 K8 + 0x8C140109, // 002A GETMET R5 R0 K9 0x541E0007, // 002B LDINT R7 8 - 0x58200009, // 002C LDCONST R8 K9 + 0x58200000, // 002C LDCONST R8 K0 0x7C140600, // 002D CALL R5 3 - 0x90021A04, // 002E SETMBR R0 K13 R4 + 0x90021404, // 002E SETMBR R0 K10 R4 0x60040003, // 002F GETGBL R1 G3 0x5C080000, // 0030 MOVE R2 R0 0x7C040200, // 0031 CALL R1 1 - 0x8C04030E, // 0032 GETMET R1 R1 K14 + 0x8C040310, // 0032 GETMET R1 R1 K16 0x7C040200, // 0033 CALL R1 1 0x80000000, // 0034 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h index 2894808ac..09e1374b2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h @@ -3,6 +3,34 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Contact' ktab size: 24, total: 31 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[24] = { + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Contact), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(TLV), + /* K7 */ be_nested_str_weak(cluster), + /* K8 */ be_nested_str_weak(attribute), + /* K9 */ be_nested_str_weak(set_or_nil), + /* K10 */ be_nested_str_weak(BOOL), + /* K11 */ be_nested_str_weak(read_attribute), + /* K12 */ be_nested_str_weak(webserver), + /* K13 */ be_nested_str_weak(web_values_prefix), + /* K14 */ be_nested_str_weak(content_send), + /* K15 */ be_nested_str_weak(Contact_X25i_X20_X25s), + /* K16 */ be_nested_str_weak(tasmota_switch_index), + /* K17 */ be_nested_str_weak(web_value_onoff), + /* K18 */ be_nested_str_weak(get_name), + /* K19 */ be_nested_str_weak(Switch), + /* K20 */ be_nested_str_weak(PREFIX), + /* K21 */ be_nested_str_weak(html_escape), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(attribute_updated), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Contact; @@ -13,19 +41,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_bool_value), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(Contact), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -58,44 +80,34 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(BOOL), - /* K7 */ be_nested_str_weak(shadow_bool_value), - /* K8 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120A00, // 0000 GETNGBL R4 K5 + 0x88100906, // 0001 GETMBR R4 R4 K6 + 0x88140507, // 0002 GETMBR R5 R2 K7 + 0x88180508, // 0003 GETMBR R6 R2 K8 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 - 0x88280107, // 000B GETMBR R10 R0 K7 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F08, // 0011 GETMET R7 R7 K8 + 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -114,33 +126,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Contact_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_bool_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C08010D, // 0001 GETMET R2 R0 K13 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C08030E, // 0003 GETMET R2 R1 K14 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x5814000F, // 0005 LDCONST R5 K15 + 0x88180110, // 0006 GETMBR R6 R0 K16 + 0x8C1C0111, // 0007 GETMET R7 R0 K17 + 0x88240100, // 0008 GETMBR R9 R0 K0 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 0x7C080400, // 000B CALL R2 2 @@ -158,44 +162,35 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C080112, // 0001 GETMET R2 R0 K18 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x88100110, // 0006 GETMBR R4 R0 K16 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 + 0x000E2603, // 0008 ADD R3 K19 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x8C0C030E, // 000A GETMET R3 R1 K14 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 + 0x88180114, // 000C GETMBR R6 R0 K20 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x8C1C0315, // 000E GETMET R7 R1 K21 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 + 0x581C0016, // 0012 LDCONST R7 K22 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -212,22 +207,19 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_value_updated, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040117, // 0000 GETMET R1 R0 K23 0x540E0044, // 0001 LDINT R3 69 - 0x58100001, // 0002 LDCONST R4 K1 + 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h index 1e756ca1e..6846bc331 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h @@ -3,6 +3,27 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Flow' ktab size: 17, total: 19 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Flow[17] = { + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(TLV), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + /* K6 */ be_nested_str_weak(set_or_nil), + /* K7 */ be_nested_str_weak(U2), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(webserver), + /* K14 */ be_nested_str_weak(web_values_prefix), + /* K15 */ be_nested_str_weak(content_send), + /* K16 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20m_X26sup3_X3B_X2Fh), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Flow; @@ -13,16 +34,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_value_changed, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */ be_str_weak(value_changed), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -44,65 +62,52 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(U2), - /* K7 */ be_nested_str_weak(shadow_value), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120400, // 0000 GETNGBL R4 K2 + 0x88100903, // 0001 GETMBR R4 R4 K3 + 0x88140504, // 0002 GETMBR R5 R2 K4 + 0x88180505, // 0003 GETMBR R6 R2 K5 0x541E0403, // 0004 LDINT R7 1028 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0018, // 0006 JMPF R7 #0020 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D01, // 0007 EQ R7 R6 K1 0x781E0007, // 0008 JMPF R7 #0011 - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 + 0x8C1C0706, // 0009 GETMET R7 R3 K6 + 0x88240907, // 000A GETMBR R9 R4 K7 0x60280009, // 000B GETGBL R10 G9 - 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x882C0108, // 000C GETMBR R11 R0 K8 0x7C280200, // 000D CALL R10 1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x7002000E, // 0010 JMP #0020 - 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0709, // 0013 GETMET R7 R3 K9 - 0x88240906, // 0014 GETMBR R9 R4 K6 - 0x58280004, // 0015 LDCONST R10 K4 + 0x8C1C070A, // 0013 GETMET R7 R3 K10 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x58280001, // 0015 LDCONST R10 K1 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020006, // 0018 JMP #0020 - 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x1C1C0D0B, // 0019 EQ R7 R6 K11 0x781E0004, // 001A JMPF R7 #0020 - 0x8C1C0709, // 001B GETMET R7 R3 K9 - 0x88240906, // 001C GETMBR R9 R4 K6 + 0x8C1C070A, // 001B GETMET R7 R3 K10 + 0x88240907, // 001C GETMBR R9 R4 K7 0x542AFFFD, // 001D LDINT R10 65534 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x601C0003, // 0020 GETGBL R7 G3 0x5C200000, // 0021 MOVE R8 R0 0x7C1C0200, // 0022 CALL R7 1 - 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 0x5C240200, // 0024 MOVE R9 R1 0x5C280400, // 0025 MOVE R10 R2 0x5C2C0600, // 0026 MOVE R11 R3 @@ -121,13 +126,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_pre_value, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -154,30 +159,24 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_web_values, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20m_X26sup3_X3B_X2Fh), - /* K4 */ be_nested_str_weak(shadow_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4061A00, // 0000 IMPORT R1 K13 + 0x8C08010E, // 0001 GETMET R2 R0 K14 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C08030F, // 0003 GETMET R2 R1 K15 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 + 0x58140010, // 0005 LDCONST R5 K16 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0104, // 0007 GETMBR R7 R0 K4 + 0x881C0108, // 0007 GETMBR R7 R0 K8 0x7C180200, // 0008 CALL R6 1 0x7C100400, // 0009 CALL R4 2 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h index cc4a6b69b..5894417d8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h @@ -3,6 +3,27 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Humidity' ktab size: 17, total: 19 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Humidity[17] = { + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(TLV), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + /* K6 */ be_nested_str_weak(set_or_nil), + /* K7 */ be_nested_str_weak(U2), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(webserver), + /* K14 */ be_nested_str_weak(web_values_prefix), + /* K15 */ be_nested_str_weak(content_send), + /* K16 */ be_nested_str_weak(_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Humidity; @@ -13,16 +34,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_value_changed, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */ be_str_weak(value_changed), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -44,65 +62,52 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute, /* name * be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(U2), - /* K7 */ be_nested_str_weak(shadow_value), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120400, // 0000 GETNGBL R4 K2 + 0x88100903, // 0001 GETMBR R4 R4 K3 + 0x88140504, // 0002 GETMBR R5 R2 K4 + 0x88180505, // 0003 GETMBR R6 R2 K5 0x541E0404, // 0004 LDINT R7 1029 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0018, // 0006 JMPF R7 #0020 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D01, // 0007 EQ R7 R6 K1 0x781E0007, // 0008 JMPF R7 #0011 - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 + 0x8C1C0706, // 0009 GETMET R7 R3 K6 + 0x88240907, // 000A GETMBR R9 R4 K7 0x60280009, // 000B GETGBL R10 G9 - 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x882C0108, // 000C GETMBR R11 R0 K8 0x7C280200, // 000D CALL R10 1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x7002000E, // 0010 JMP #0020 - 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0709, // 0013 GETMET R7 R3 K9 - 0x88240906, // 0014 GETMBR R9 R4 K6 + 0x8C1C070A, // 0013 GETMET R7 R3 K10 + 0x88240907, // 0014 GETMBR R9 R4 K7 0x542A01F3, // 0015 LDINT R10 500 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020006, // 0018 JMP #0020 - 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x1C1C0D0B, // 0019 EQ R7 R6 K11 0x781E0004, // 001A JMPF R7 #0020 - 0x8C1C0709, // 001B GETMET R7 R3 K9 - 0x88240906, // 001C GETMBR R9 R4 K6 + 0x8C1C070A, // 001B GETMET R7 R3 K10 + 0x88240907, // 001C GETMBR R9 R4 K7 0x542A270F, // 001D LDINT R10 10000 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x601C0003, // 0020 GETGBL R7 G3 0x5C200000, // 0021 MOVE R8 R0 0x7C1C0200, // 0022 CALL R7 1 - 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 0x5C240200, // 0024 MOVE R9 R1 0x5C280400, // 0025 MOVE R10 R2 0x5C2C0600, // 0026 MOVE R11 R3 @@ -121,13 +126,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_pre_value, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -154,34 +159,28 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_web_values, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25), - /* K4 */ be_nested_str_weak(shadow_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4061A00, // 0000 IMPORT R1 K13 + 0x8C08010E, // 0001 GETMET R2 R0 K14 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C08030F, // 0003 GETMET R2 R1 K15 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x58140010, // 0005 LDCONST R5 K16 + 0x88180108, // 0006 GETMBR R6 R0 K8 0x4C1C0000, // 0007 LDNIL R7 0x20180C07, // 0008 NE R6 R6 R7 0x781A0005, // 0009 JMPF R6 #0010 0x6018000A, // 000A GETGBL R6 G10 - 0x881C0104, // 000B GETMBR R7 R0 K4 + 0x881C0108, // 000B GETMBR R7 R0 K8 0x7C180200, // 000C CALL R6 1 0x541E0063, // 000D LDINT R7 100 0x0C180C07, // 000E DIV R6 R6 R7 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h index 692dd6580..7e95bcd46 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h @@ -3,6 +3,30 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Illuminance' ktab size: 20, total: 23 (saved 24 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Illuminance[20] = { + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(TLV), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + /* K6 */ be_nested_str_weak(set_or_nil), + /* K7 */ be_nested_str_weak(U2), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(math), + /* K14 */ be_const_int(0), + /* K15 */ be_nested_str_weak(log10), + /* K16 */ be_nested_str_weak(webserver), + /* K17 */ be_nested_str_weak(web_values_prefix), + /* K18 */ be_nested_str_weak(content_send), + /* K19 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Illuminance; @@ -13,16 +37,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed, /* name be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */ be_str_weak(value_changed), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -44,65 +65,52 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* nam be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(U2), - /* K7 */ be_nested_str_weak(shadow_value), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120400, // 0000 GETNGBL R4 K2 + 0x88100903, // 0001 GETMBR R4 R4 K3 + 0x88140504, // 0002 GETMBR R5 R2 K4 + 0x88180505, // 0003 GETMBR R6 R2 K5 0x541E03FF, // 0004 LDINT R7 1024 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0018, // 0006 JMPF R7 #0020 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D01, // 0007 EQ R7 R6 K1 0x781E0007, // 0008 JMPF R7 #0011 - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 + 0x8C1C0706, // 0009 GETMET R7 R3 K6 + 0x88240907, // 000A GETMBR R9 R4 K7 0x60280009, // 000B GETGBL R10 G9 - 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x882C0108, // 000C GETMBR R11 R0 K8 0x7C280200, // 000D CALL R10 1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x7002000E, // 0010 JMP #0020 - 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0709, // 0013 GETMET R7 R3 K9 - 0x88240906, // 0014 GETMBR R9 R4 K6 - 0x58280008, // 0015 LDCONST R10 K8 + 0x8C1C070A, // 0013 GETMET R7 R3 K10 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x58280009, // 0015 LDCONST R10 K9 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020006, // 0018 JMP #0020 - 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x1C1C0D0B, // 0019 EQ R7 R6 K11 0x781E0004, // 001A JMPF R7 #0020 - 0x8C1C0709, // 001B GETMET R7 R3 K9 - 0x88240906, // 001C GETMBR R9 R4 K6 + 0x8C1C070A, // 001B GETMET R7 R3 K10 + 0x88240907, // 001C GETMBR R9 R4 K7 0x542AFFFD, // 001D LDINT R10 65534 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x601C0003, // 0020 GETGBL R7 G3 0x5C200000, // 0021 MOVE R8 R0 0x7C1C0200, // 0022 CALL R7 1 - 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 0x5C240200, // 0024 MOVE R9 R1 0x5C280400, // 0025 MOVE R10 R2 0x5C2C0600, // 0026 MOVE R11 R3 @@ -121,18 +129,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(math), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(log10), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ @@ -141,13 +144,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0xA40A0000, // 0005 IMPORT R2 K0 - 0x140C0301, // 0006 LT R3 R1 K1 + 0xA40A1A00, // 0005 IMPORT R2 K13 + 0x140C030E, // 0006 LT R3 R1 K14 0x780E0001, // 0007 JMPF R3 #000A - 0x80060200, // 0008 RET 1 K1 + 0x80061C00, // 0008 RET 1 K14 0x70020005, // 0009 JMP #0010 - 0x8C0C0502, // 000A GETMET R3 R2 K2 - 0x00140303, // 000B ADD R5 R1 K3 + 0x8C0C050F, // 000A GETMET R3 R2 K15 + 0x00140309, // 000B ADD R5 R1 K9 0x7C0C0400, // 000C CALL R3 2 0x5412270F, // 000D LDINT R4 10000 0x080C0604, // 000E MUL R3 R3 R4 @@ -166,30 +169,24 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_web_values, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux), - /* K4 */ be_nested_str_weak(shadow_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4062000, // 0000 IMPORT R1 K16 + 0x8C080111, // 0001 GETMET R2 R0 K17 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080312, // 0003 GETMET R2 R1 K18 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 + 0x58140013, // 0005 LDCONST R5 K19 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0104, // 0007 GETMBR R7 R0 K4 + 0x881C0108, // 0007 GETMBR R7 R0 K8 0x7C180200, // 0008 CALL R6 1 0x7C100400, // 0009 CALL R4 2 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h index de56ce535..d1d1788ec 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h @@ -3,6 +3,38 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Occupancy' ktab size: 28, total: 35 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[28] = { + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Occupancy), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(TLV), + /* K7 */ be_nested_str_weak(cluster), + /* K8 */ be_nested_str_weak(attribute), + /* K9 */ be_nested_str_weak(set_or_nil), + /* K10 */ be_nested_str_weak(U1), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(set), + /* K13 */ be_const_int(3), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(read_attribute), + /* K16 */ be_nested_str_weak(webserver), + /* K17 */ be_nested_str_weak(web_values_prefix), + /* K18 */ be_nested_str_weak(content_send), + /* K19 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), + /* K20 */ be_nested_str_weak(web_value_onoff), + /* K21 */ be_nested_str_weak(shadow_occupancy), + /* K22 */ be_nested_str_weak(get_name), + /* K23 */ be_nested_str_weak(Switch), + /* K24 */ be_nested_str_weak(PREFIX), + /* K25 */ be_nested_str_weak(html_escape), + /* K26 */ be_nested_str_weak(), + /* K27 */ be_nested_str_weak(attribute_updated), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Occupancy; @@ -13,19 +45,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_bool_value), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(Occupancy), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -58,64 +84,50 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_nested_str_weak(shadow_bool_value), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_const_int(3), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120A00, // 0000 GETNGBL R4 K5 + 0x88100906, // 0001 GETMBR R4 R4 K6 + 0x88140507, // 0002 GETMBR R5 R2 K7 + 0x88180508, // 0003 GETMBR R6 R2 K8 0x541E0405, // 0004 LDINT R7 1030 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0016, // 0006 JMPF R7 #001E - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 - 0x88280107, // 000B GETMBR R10 R0 K7 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x7002000E, // 000E JMP #001E - 0x1C1C0D08, // 000F EQ R7 R6 K8 + 0x1C1C0D0B, // 000F EQ R7 R6 K11 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C0709, // 0011 GETMET R7 R3 K9 - 0x88240906, // 0012 GETMBR R9 R4 K6 - 0x5828000A, // 0013 LDCONST R10 K10 + 0x8C1C070C, // 0011 GETMET R7 R3 K12 + 0x8824090A, // 0012 GETMBR R9 R4 K10 + 0x5828000D, // 0013 LDCONST R10 K13 0x7C1C0600, // 0014 CALL R7 3 0x80040E00, // 0015 RET 1 R7 0x70020006, // 0016 JMP #001E - 0x1C1C0D0B, // 0017 EQ R7 R6 K11 + 0x1C1C0D0E, // 0017 EQ R7 R6 K14 0x781E0004, // 0018 JMPF R7 #001E - 0x8C1C0709, // 0019 GETMET R7 R3 K9 - 0x88240906, // 001A GETMBR R9 R4 K6 - 0x58280004, // 001B LDCONST R10 K4 + 0x8C1C070C, // 0019 GETMET R7 R3 K12 + 0x8824090A, // 001A GETMBR R9 R4 K10 + 0x58280003, // 001B LDCONST R10 K3 0x7C1C0600, // 001C CALL R7 3 0x80040E00, // 001D RET 1 R7 0x601C0003, // 001E GETGBL R7 G3 0x5C200000, // 001F MOVE R8 R0 0x7C1C0200, // 0020 CALL R7 1 - 0x8C1C0F0C, // 0021 GETMET R7 R7 K12 + 0x8C1C0F0F, // 0021 GETMET R7 R7 K15 0x5C240200, // 0022 MOVE R9 R1 0x5C280400, // 0023 MOVE R10 R2 0x5C2C0600, // 0024 MOVE R11 R3 @@ -134,33 +146,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(shadow_bool_value), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_occupancy), - }), + &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4062000, // 0000 IMPORT R1 K16 + 0x8C080111, // 0001 GETMET R2 R0 K17 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080312, // 0003 GETMET R2 R1 K18 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x58140013, // 0005 LDCONST R5 K19 + 0x88180100, // 0006 GETMBR R6 R0 K0 + 0x8C1C0114, // 0007 GETMET R7 R0 K20 + 0x88240115, // 0008 GETMBR R9 R0 K21 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 0x7C080400, // 000B CALL R2 2 @@ -178,44 +182,35 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* na be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(shadow_bool_value), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4062000, // 0000 IMPORT R1 K16 + 0x8C080116, // 0001 GETMET R2 R0 K22 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x88100100, // 0006 GETMBR R4 R0 K0 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 + 0x000E2E03, // 0008 ADD R3 K23 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x8C0C0312, // 000A GETMET R3 R1 K18 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 + 0x88180118, // 000C GETMBR R6 R0 K24 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x8C1C0319, // 000E GETMET R7 R1 K25 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 + 0x581C001A, // 0012 LDCONST R7 K26 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -232,22 +227,19 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated, /* name * be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04011B, // 0000 GETMET R1 R0 K27 0x540E0405, // 0001 LDINT R3 1030 - 0x58100001, // 0002 LDCONST R4 K1 + 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h index ffb1e4765..b6d971888 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h @@ -3,6 +3,22 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_OnOff' ktab size: 12, total: 14 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[12] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(set), + /* K7 */ be_nested_str_weak(BOOL), + /* K8 */ be_nested_str_weak(shadow_bool_value), + /* K9 */ be_nested_str_weak(read_attribute), + /* K10 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s), + /* K11 */ be_nested_str_weak(attribute_updated), +}; + extern const bclass be_class_Matter_Plugin_Sensor_OnOff; @@ -13,24 +29,13 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set), - /* K7 */ be_nested_str_weak(BOOL), - /* K8 */ be_nested_str_weak(shadow_bool_value), - /* K9 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_OnOff, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ @@ -72,23 +77,20 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name * be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s), - /* K1 */ be_nested_str_weak(shadow_bool_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_OnOff, /* shared constants */ be_str_weak(append_state_json), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 + 0x5808000A, // 0001 LDCONST R2 K10 0x600C0009, // 0002 GETGBL R3 G9 - 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x88100108, // 0003 GETMBR R4 R0 K8 0x7C0C0200, // 0004 CALL R3 1 0x7C040400, // 0005 CALL R1 2 0x80040200, // 0006 RET 1 R1 @@ -105,22 +107,19 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_value_updated, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_OnOff, /* shared constants */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010B, // 0000 GETMET R1 R0 K11 0x540E0005, // 0001 LDINT R3 6 - 0x58100001, // 0002 LDCONST R4 K1 + 0x58100005, // 0002 LDCONST R4 K5 0x7C040600, // 0003 CALL R1 3 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h index dfa828a0a..77abbec27 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h @@ -3,6 +3,27 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Pressure' ktab size: 17, total: 19 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Pressure[17] = { + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(TLV), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + /* K6 */ be_nested_str_weak(set_or_nil), + /* K7 */ be_nested_str_weak(I2), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(webserver), + /* K14 */ be_nested_str_weak(web_values_prefix), + /* K15 */ be_nested_str_weak(content_send), + /* K16 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20hPa), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Pressure; @@ -13,16 +34,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_value_changed, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */ be_str_weak(value_changed), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -44,65 +62,52 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute, /* name * be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(I2), - /* K7 */ be_nested_str_weak(shadow_value), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120400, // 0000 GETNGBL R4 K2 + 0x88100903, // 0001 GETMBR R4 R4 K3 + 0x88140504, // 0002 GETMBR R5 R2 K4 + 0x88180505, // 0003 GETMBR R6 R2 K5 0x541E0402, // 0004 LDINT R7 1027 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0018, // 0006 JMPF R7 #0020 - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D01, // 0007 EQ R7 R6 K1 0x781E0007, // 0008 JMPF R7 #0011 - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 + 0x8C1C0706, // 0009 GETMET R7 R3 K6 + 0x88240907, // 000A GETMBR R9 R4 K7 0x60280009, // 000B GETGBL R10 G9 - 0x882C0107, // 000C GETMBR R11 R0 K7 + 0x882C0108, // 000C GETMBR R11 R0 K8 0x7C280200, // 000D CALL R10 1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x7002000E, // 0010 JMP #0020 - 0x1C1C0D08, // 0011 EQ R7 R6 K8 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0709, // 0013 GETMET R7 R3 K9 - 0x88240906, // 0014 GETMBR R9 R4 K6 + 0x8C1C070A, // 0013 GETMET R7 R3 K10 + 0x88240907, // 0014 GETMBR R9 R4 K7 0x542A01F3, // 0015 LDINT R10 500 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020006, // 0018 JMP #0020 - 0x1C1C0D0A, // 0019 EQ R7 R6 K10 + 0x1C1C0D0B, // 0019 EQ R7 R6 K11 0x781E0004, // 001A JMPF R7 #0020 - 0x8C1C0709, // 001B GETMET R7 R3 K9 - 0x88240906, // 001C GETMBR R9 R4 K6 + 0x8C1C070A, // 001B GETMET R7 R3 K10 + 0x88240907, // 001C GETMBR R9 R4 K7 0x542A05DB, // 001D LDINT R10 1500 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x601C0003, // 0020 GETGBL R7 G3 0x5C200000, // 0021 MOVE R8 R0 0x7C1C0200, // 0022 CALL R7 1 - 0x8C1C0F0B, // 0023 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 0x5C240200, // 0024 MOVE R9 R1 0x5C280400, // 0025 MOVE R10 R2 0x5C2C0600, // 0026 MOVE R11 R3 @@ -121,13 +126,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_pre_value, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -153,30 +158,24 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_web_values, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20hPa), - /* K4 */ be_nested_str_weak(shadow_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4061A00, // 0000 IMPORT R1 K13 + 0x8C08010E, // 0001 GETMET R2 R0 K14 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C08030F, // 0003 GETMET R2 R1 K15 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 + 0x58140010, // 0005 LDCONST R5 K16 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0104, // 0007 GETMBR R7 R0 K4 + 0x881C0108, // 0007 GETMBR R7 R0 K8 0x7C180200, // 0008 CALL R6 1 0x7C100400, // 0009 CALL R4 2 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h index 93b739422..f4d3878d6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h @@ -3,6 +3,34 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Rain' ktab size: 24, total: 31 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[24] = { + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Rain), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(TLV), + /* K7 */ be_nested_str_weak(cluster), + /* K8 */ be_nested_str_weak(attribute), + /* K9 */ be_nested_str_weak(set), + /* K10 */ be_nested_str_weak(BOOL), + /* K11 */ be_nested_str_weak(read_attribute), + /* K12 */ be_nested_str_weak(webserver), + /* K13 */ be_nested_str_weak(web_values_prefix), + /* K14 */ be_nested_str_weak(content_send), + /* K15 */ be_nested_str_weak(Rain_X25i_X20_X25s), + /* K16 */ be_nested_str_weak(tasmota_switch_index), + /* K17 */ be_nested_str_weak(web_value_onoff), + /* K18 */ be_nested_str_weak(get_name), + /* K19 */ be_nested_str_weak(Switch), + /* K20 */ be_nested_str_weak(PREFIX), + /* K21 */ be_nested_str_weak(html_escape), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(attribute_updated), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Rain; @@ -13,19 +41,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_update_virtual, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_bool_value), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(Rain), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -58,44 +80,34 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(BOOL), - /* K7 */ be_nested_str_weak(shadow_bool_value), - /* K8 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120A00, // 0000 GETNGBL R4 K5 + 0x88100906, // 0001 GETMBR R4 R4 K6 + 0x88140507, // 0002 GETMBR R5 R2 K7 + 0x88180508, // 0003 GETMBR R6 R2 K8 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 - 0x88280107, // 000B GETMBR R10 R0 K7 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F08, // 0011 GETMET R7 R7 K8 + 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -114,33 +126,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Rain_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_bool_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C08010D, // 0001 GETMET R2 R0 K13 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C08030E, // 0003 GETMET R2 R1 K14 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x5814000F, // 0005 LDCONST R5 K15 + 0x88180110, // 0006 GETMBR R6 R0 K16 + 0x8C1C0111, // 0007 GETMET R7 R0 K17 + 0x88240100, // 0008 GETMBR R9 R0 K0 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 0x7C080400, // 000B CALL R2 2 @@ -158,44 +162,35 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C080112, // 0001 GETMET R2 R0 K18 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x88100110, // 0006 GETMBR R4 R0 K16 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 + 0x000E2603, // 0008 ADD R3 K19 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x8C0C030E, // 000A GETMET R3 R1 K14 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 + 0x88180114, // 000C GETMBR R6 R0 K20 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x8C1C0315, // 000E GETMET R7 R1 K21 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 + 0x581C0016, // 0012 LDCONST R7 K22 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -212,22 +207,19 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_value_updated, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040117, // 0000 GETMET R1 R0 K23 0x540E0044, // 0001 LDINT R3 69 - 0x58100001, // 0002 LDCONST R4 K1 + 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h index 47888b46e..526dacca4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h @@ -3,6 +3,33 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Temp' ktab size: 23, total: 26 (saved 24 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Temp[23] = { + /* K0 */ be_nested_str_weak(attribute_updated), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(TLV), + /* K4 */ be_nested_str_weak(cluster), + /* K5 */ be_nested_str_weak(attribute), + /* K6 */ be_nested_str_weak(set_or_nil), + /* K7 */ be_nested_str_weak(I2), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(BRIDGE), + /* K14 */ be_nested_str_weak(temp_unit), + /* K15 */ be_nested_str_weak(TEMP_F), + /* K16 */ be_const_real_hex(0x3FE66666), + /* K17 */ be_nested_str_weak(tasmota), + /* K18 */ be_nested_str_weak(get_option), + /* K19 */ be_nested_str_weak(webserver), + /* K20 */ be_nested_str_weak(web_values_prefix), + /* K21 */ be_nested_str_weak(content_send), + /* K22 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Temp; @@ -13,16 +40,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_value_changed, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */ be_str_weak(value_changed), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -44,63 +68,50 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(I2), - /* K7 */ be_nested_str_weak(shadow_value), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120400, // 0000 GETNGBL R4 K2 + 0x88100903, // 0001 GETMBR R4 R4 K3 + 0x88140504, // 0002 GETMBR R5 R2 K4 + 0x88180505, // 0003 GETMBR R6 R2 K5 0x541E0401, // 0004 LDINT R7 1026 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0016, // 0006 JMPF R7 #001E - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D01, // 0007 EQ R7 R6 K1 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 - 0x88280107, // 000B GETMBR R10 R0 K7 + 0x8C1C0706, // 0009 GETMET R7 R3 K6 + 0x88240907, // 000A GETMBR R9 R4 K7 + 0x88280108, // 000B GETMBR R10 R0 K8 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x7002000E, // 000E JMP #001E - 0x1C1C0D08, // 000F EQ R7 R6 K8 + 0x1C1C0D09, // 000F EQ R7 R6 K9 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C0709, // 0011 GETMET R7 R3 K9 - 0x88240906, // 0012 GETMBR R9 R4 K6 + 0x8C1C070A, // 0011 GETMET R7 R3 K10 + 0x88240907, // 0012 GETMBR R9 R4 K7 0x5429EC77, // 0013 LDINT R10 -5000 0x7C1C0600, // 0014 CALL R7 3 0x80040E00, // 0015 RET 1 R7 0x70020006, // 0016 JMP #001E - 0x1C1C0D0A, // 0017 EQ R7 R6 K10 + 0x1C1C0D0B, // 0017 EQ R7 R6 K11 0x781E0004, // 0018 JMPF R7 #001E - 0x8C1C0709, // 0019 GETMET R7 R3 K9 - 0x88240906, // 001A GETMBR R9 R4 K6 + 0x8C1C070A, // 0019 GETMET R7 R3 K10 + 0x88240907, // 001A GETMBR R9 R4 K7 0x542A3A97, // 001B LDINT R10 15000 0x7C1C0600, // 001C CALL R7 3 0x80040E00, // 001D RET 1 R7 0x601C0003, // 001E GETGBL R7 G3 0x5C200000, // 001F MOVE R8 R0 0x7C1C0200, // 0020 CALL R7 1 - 0x8C1C0F0B, // 0021 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0021 GETMET R7 R7 K12 0x5C240200, // 0022 MOVE R9 R1 0x5C280400, // 0023 MOVE R10 R2 0x5C2C0600, // 0024 MOVE R11 R3 @@ -119,33 +130,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(BRIDGE), - /* K1 */ be_nested_str_weak(temp_unit), - /* K2 */ be_nested_str_weak(TEMP_F), - /* K3 */ be_const_real_hex(0x3FE66666), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(get_option), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[42]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808010D, // 0000 GETMBR R2 R0 K13 0x780A0012, // 0001 JMPF R2 #0015 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x8808010E, // 0002 GETMBR R2 R0 K14 + 0x880C010F, // 0003 GETMBR R3 R0 K15 0x1C080403, // 0004 EQ R2 R2 R3 0x780A0003, // 0005 JMPF R2 #000A 0x540A001F, // 0006 LDINT R2 32 0x04080202, // 0007 SUB R2 R1 R2 - 0x0C080503, // 0008 DIV R2 R2 K3 + 0x0C080510, // 0008 DIV R2 R2 K16 0x5C040400, // 0009 MOVE R1 R2 0x4C080000, // 000A LDNIL R2 0x20080202, // 000B NE R2 R1 R2 @@ -158,15 +161,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ 0x4C080000, // 0012 LDNIL R2 0x80040400, // 0013 RET 1 R2 0x70020013, // 0014 JMP #0029 - 0xB80A0800, // 0015 GETNGBL R2 K4 - 0x8C080505, // 0016 GETMET R2 R2 K5 + 0xB80A2200, // 0015 GETNGBL R2 K17 + 0x8C080512, // 0016 GETMET R2 R2 K18 0x54120007, // 0017 LDINT R4 8 0x7C080400, // 0018 CALL R2 2 - 0x1C080506, // 0019 EQ R2 R2 K6 + 0x1C080509, // 0019 EQ R2 R2 K9 0x780A0003, // 001A JMPF R2 #001F 0x540A001F, // 001B LDINT R2 32 0x04080202, // 001C SUB R2 R1 R2 - 0x0C080503, // 001D DIV R2 R2 K3 + 0x0C080510, // 001D DIV R2 R2 K16 0x5C040400, // 001E MOVE R1 R2 0x4C080000, // 001F LDNIL R2 0x20080202, // 0020 NE R2 R1 R2 @@ -192,34 +195,28 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_web_values, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), - /* K4 */ be_nested_str_weak(shadow_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4062600, // 0000 IMPORT R1 K19 + 0x8C080114, // 0001 GETMET R2 R0 K20 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080315, // 0003 GETMET R2 R1 K21 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x58140016, // 0005 LDCONST R5 K22 + 0x88180108, // 0006 GETMBR R6 R0 K8 0x4C1C0000, // 0007 LDNIL R7 0x20180C07, // 0008 NE R6 R6 R7 0x781A0005, // 0009 JMPF R6 #0010 0x6018000A, // 000A GETGBL R6 G10 - 0x881C0104, // 000B GETMBR R7 R0 K4 + 0x881C0108, // 000B GETMBR R7 R0 K8 0x7C180200, // 000C CALL R6 1 0x541E0063, // 000D LDINT R7 100 0x0C180C07, // 000E DIV R6 R6 R7 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h index d00365a5a..6c4974a1e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h @@ -3,6 +3,26 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Sensor_Waterleak' ktab size: 16, total: 20 (saved 32 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Waterleak[16] = { + /* K0 */ be_nested_str_weak(shadow_bool_value), + /* K1 */ be_nested_str_weak(_parse_update_virtual), + /* K2 */ be_nested_str_weak(Waterleak), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(update_virtual), + /* K5 */ be_nested_str_weak(webserver), + /* K6 */ be_nested_str_weak(web_values_prefix), + /* K7 */ be_nested_str_weak(content_send), + /* K8 */ be_nested_str_weak(Waterleak_X25i_X20_X25s), + /* K9 */ be_nested_str_weak(tasmota_switch_index), + /* K10 */ be_nested_str_weak(web_value_onoff), + /* K11 */ be_nested_str_weak(get_name), + /* K12 */ be_nested_str_weak(Switch), + /* K13 */ be_nested_str_weak(PREFIX), + /* K14 */ be_nested_str_weak(html_escape), + /* K15 */ be_nested_str_weak(), +}; + extern const bclass be_class_Matter_Plugin_Sensor_Waterleak; @@ -13,19 +33,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_bool_value), - /* K1 */ be_nested_str_weak(_parse_update_virtual), - /* K2 */ be_nested_str_weak(Waterleak), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -58,44 +72,34 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(BOOL), - /* K7 */ be_nested_str_weak(shadow_bool_value), - /* K8 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120A00, // 0000 GETNGBL R4 K5 + 0x88100906, // 0001 GETMBR R4 R4 K6 + 0x88140507, // 0002 GETMBR R5 R2 K7 + 0x88180508, // 0003 GETMBR R6 R2 K8 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D04, // 0007 EQ R7 R6 K4 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C0705, // 0009 GETMET R7 R3 K5 - 0x88240906, // 000A GETMBR R9 R4 K6 - 0x88280107, // 000B GETMBR R10 R0 K7 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F08, // 0011 GETMET R7 R7 K8 + 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -114,33 +118,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(Waterleak_X25i_X20_X25s), - /* K4 */ be_nested_str_weak(tasmota_switch_index), - /* K5 */ be_nested_str_weak(web_value_onoff), - /* K6 */ be_nested_str_weak(shadow_bool_value), - }), + &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4060A00, // 0000 IMPORT R1 K5 + 0x8C080106, // 0001 GETMET R2 R0 K6 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080307, // 0003 GETMET R2 R1 K7 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x8C1C0105, // 0007 GETMET R7 R0 K5 - 0x88240106, // 0008 GETMBR R9 R0 K6 + 0x58140008, // 0005 LDCONST R5 K8 + 0x88180109, // 0006 GETMBR R6 R0 K9 + 0x8C1C010A, // 0007 GETMET R7 R0 K10 + 0x88240100, // 0008 GETMBR R9 R0 K0 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 0x7C080400, // 000B CALL R2 2 @@ -158,44 +154,35 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* na be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(get_name), - /* K2 */ be_nested_str_weak(Switch), - /* K3 */ be_nested_str_weak(tasmota_switch_index), - /* K4 */ be_nested_str_weak(content_send), - /* K5 */ be_nested_str_weak(PREFIX), - /* K6 */ be_nested_str_weak(html_escape), - /* K7 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4060A00, // 0000 IMPORT R1 K5 + 0x8C08010B, // 0001 GETMET R2 R0 K11 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100103, // 0006 GETMBR R4 R0 K3 + 0x88100109, // 0006 GETMBR R4 R0 K9 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0403, // 0008 ADD R3 K2 R3 + 0x000E1803, // 0008 ADD R3 K12 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0304, // 000A GETMET R3 R1 K4 + 0x8C0C0307, // 000A GETMET R3 R1 K7 0x60140018, // 000B GETGBL R5 G24 - 0x88180105, // 000C GETMBR R6 R0 K5 + 0x8818010D, // 000C GETMBR R6 R0 K13 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0306, // 000E GETMET R7 R1 K6 + 0x8C1C030E, // 000E GETMET R7 R1 K14 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0007, // 0012 LDCONST R7 K7 + 0x581C000F, // 0012 LDCONST R7 K15 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -212,22 +199,19 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_value_updated, /* name * be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_updated), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040117, // 0000 GETMET R1 R0 K23 0x540E0044, // 0001 LDINT R3 69 - 0x58100001, // 0002 LDCONST R4 K1 + 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h index e1b7f405d..774ce0169 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h @@ -3,6 +3,53 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_ShutterTilt' ktab size: 43, total: 65 (saved 176 bytes) +static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[43] = { + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(cmd), + /* K2 */ be_nested_str_weak(Status_X2013), + /* K3 */ be_nested_str_weak(contains), + /* K4 */ be_nested_str_weak(StatusSHT), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(SHT), + /* K7 */ be_nested_str_weak(tasmota_shutter_index), + /* K8 */ be_nested_str_weak(TiltConfig), + /* K9 */ be_nested_str_weak(tilt_min), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(tilt_max), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(matter), + /* K14 */ be_nested_str_weak(TLV), + /* K15 */ be_nested_str_weak(cluster), + /* K16 */ be_nested_str_weak(attribute), + /* K17 */ be_nested_str_weak(update_shadow_lazy), + /* K18 */ be_nested_str_weak(set), + /* K19 */ be_nested_str_weak(U1), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(update_tilt_min_max), + /* K22 */ be_nested_str_weak(scale_uint), + /* K23 */ be_nested_str_weak(shadow_shutter_tilt), + /* K24 */ be_nested_str_weak(U2), + /* K25 */ be_nested_str_weak(NULL), + /* K26 */ be_nested_str_weak(U4), + /* K27 */ be_const_int(3), + /* K28 */ be_nested_str_weak(read_attribute), + /* K29 */ be_nested_str_weak(Shutter), + /* K30 */ be_nested_str_weak(Tilt), + /* K31 */ be_nested_str_weak(attribute_updated), + /* K32 */ be_nested_str_weak(parse_sensors), + /* K33 */ be_nested_str_weak(light), + /* K34 */ be_nested_str_weak(command), + /* K35 */ be_nested_str_weak(findsubval), + /* K36 */ be_nested_str_weak(ShutterTilt), + /* K37 */ be_nested_str_weak(_X20), + /* K38 */ be_nested_str_weak(update_shadow), + /* K39 */ be_nested_str_weak(log), + /* K40 */ be_nested_str_weak(tilt_X25_X3A), + /* K41 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A), + /* K42 */ be_nested_str_weak(invoke_request), +}; + extern const bclass be_class_Matter_Plugin_ShutterTilt; @@ -13,27 +60,13 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_update_tilt_min_max, /* name be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(cmd), - /* K2 */ be_nested_str_weak(Status_X2013), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(StatusSHT), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(SHT), - /* K7 */ be_nested_str_weak(tasmota_shutter_index), - /* K8 */ be_nested_str_weak(TiltConfig), - /* K9 */ be_nested_str_weak(tilt_min), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(tilt_max), - /* K12 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */ be_str_weak(update_tilt_min_max), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ @@ -83,53 +116,32 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ be_nested_proto( 14, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(set), - /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(update_tilt_min_max), - /* K9 */ be_nested_str_weak(tilt_min), - /* K10 */ be_nested_str_weak(tilt_max), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_uint), - /* K13 */ be_nested_str_weak(shadow_shutter_tilt), - /* K14 */ be_const_int(0), - /* K15 */ be_nested_str_weak(U2), - /* K16 */ be_nested_str_weak(NULL), - /* K17 */ be_nested_str_weak(U4), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[113]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8121A00, // 0000 GETNGBL R4 K13 + 0x8810090E, // 0001 GETMBR R4 R4 K14 + 0x8814050F, // 0002 GETMBR R5 R2 K15 + 0x88180510, // 0003 GETMBR R6 R2 K16 0x541E0101, // 0004 LDINT R7 258 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0060, // 0006 JMPF R7 #0068 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0111, // 0007 GETMET R7 R0 K17 0x7C1C0200, // 0008 CALL R7 1 0x541E0006, // 0009 LDINT R7 7 0x1C1C0C07, // 000A EQ R7 R6 R7 0x781E0008, // 000B JMPF R7 #0015 - 0x8C1C0705, // 000C GETMET R7 R3 K5 - 0x88240906, // 000D GETMBR R9 R4 K6 + 0x8C1C0712, // 000C GETMET R7 R3 K18 + 0x88240913, // 000D GETMBR R9 R4 K19 0x542A0007, // 000E LDINT R10 8 - 0x002A0E0A, // 000F ADD R10 K7 R10 + 0x002A280A, // 000F ADD R10 K20 R10 0x542E000F, // 0010 LDINT R11 16 0x0028140B, // 0011 ADD R10 R10 R11 0x7C1C0600, // 0012 CALL R7 3 @@ -138,36 +150,36 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x541E000E, // 0015 LDINT R7 15 0x1C1C0C07, // 0016 EQ R7 R6 R7 0x781E0021, // 0017 JMPF R7 #003A - 0x8C1C0108, // 0018 GETMET R7 R0 K8 + 0x8C1C0115, // 0018 GETMET R7 R0 K21 0x7C1C0200, // 0019 CALL R7 1 0x881C0109, // 001A GETMBR R7 R0 K9 0x4C200000, // 001B LDNIL R8 0x201C0E08, // 001C NE R7 R7 R8 0x781E0015, // 001D JMPF R7 #0034 - 0x881C010A, // 001E GETMBR R7 R0 K10 + 0x881C010B, // 001E GETMBR R7 R0 K11 0x4C200000, // 001F LDNIL R8 0x201C0E08, // 0020 NE R7 R7 R8 0x781E0011, // 0021 JMPF R7 #0034 - 0xB81E1600, // 0022 GETNGBL R7 K11 - 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 - 0x8824010D, // 0024 GETMBR R9 R0 K13 + 0xB81E0000, // 0022 GETNGBL R7 K0 + 0x8C1C0F16, // 0023 GETMET R7 R7 K22 + 0x88240117, // 0024 GETMBR R9 R0 K23 0x88280109, // 0025 GETMBR R10 R0 K9 0x0424120A, // 0026 SUB R9 R9 R10 - 0x5828000E, // 0027 LDCONST R10 K14 - 0x882C010A, // 0028 GETMBR R11 R0 K10 + 0x5828000A, // 0027 LDCONST R10 K10 + 0x882C010B, // 0028 GETMBR R11 R0 K11 0x88300109, // 0029 GETMBR R12 R0 K9 0x042C160C, // 002A SUB R11 R11 R12 - 0x5830000E, // 002B LDCONST R12 K14 + 0x5830000A, // 002B LDCONST R12 K10 0x5436270F, // 002C LDINT R13 10000 0x7C1C0C00, // 002D CALL R7 6 - 0x8C200705, // 002E GETMET R8 R3 K5 - 0x8828090F, // 002F GETMBR R10 R4 K15 + 0x8C200712, // 002E GETMET R8 R3 K18 + 0x88280918, // 002F GETMBR R10 R4 K24 0x5C2C0E00, // 0030 MOVE R11 R7 0x7C200600, // 0031 CALL R8 3 0x80041000, // 0032 RET 1 R8 0x70020004, // 0033 JMP #0039 - 0x8C1C0705, // 0034 GETMET R7 R3 K5 - 0x88240910, // 0035 GETMBR R9 R4 K16 + 0x8C1C0712, // 0034 GETMET R7 R3 K18 + 0x88240919, // 0035 GETMBR R9 R4 K25 0x4C280000, // 0036 LDNIL R10 0x7C1C0600, // 0037 CALL R7 3 0x80040E00, // 0038 RET 1 R7 @@ -179,30 +191,30 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x4C200000, // 003E LDNIL R8 0x201C0E08, // 003F NE R7 R7 R8 0x781E0015, // 0040 JMPF R7 #0057 - 0x881C010A, // 0041 GETMBR R7 R0 K10 + 0x881C010B, // 0041 GETMBR R7 R0 K11 0x4C200000, // 0042 LDNIL R8 0x201C0E08, // 0043 NE R7 R7 R8 0x781E0011, // 0044 JMPF R7 #0057 - 0xB81E1600, // 0045 GETNGBL R7 K11 - 0x8C1C0F0C, // 0046 GETMET R7 R7 K12 - 0x8824010D, // 0047 GETMBR R9 R0 K13 + 0xB81E0000, // 0045 GETNGBL R7 K0 + 0x8C1C0F16, // 0046 GETMET R7 R7 K22 + 0x88240117, // 0047 GETMBR R9 R0 K23 0x88280109, // 0048 GETMBR R10 R0 K9 0x0424120A, // 0049 SUB R9 R9 R10 - 0x5828000E, // 004A LDCONST R10 K14 - 0x882C010A, // 004B GETMBR R11 R0 K10 + 0x5828000A, // 004A LDCONST R10 K10 + 0x882C010B, // 004B GETMBR R11 R0 K11 0x88300109, // 004C GETMBR R12 R0 K9 0x042C160C, // 004D SUB R11 R11 R12 - 0x5830000E, // 004E LDCONST R12 K14 + 0x5830000A, // 004E LDCONST R12 K10 0x5436270F, // 004F LDINT R13 10000 0x7C1C0C00, // 0050 CALL R7 6 - 0x8C200705, // 0051 GETMET R8 R3 K5 - 0x8828090F, // 0052 GETMBR R10 R4 K15 + 0x8C200712, // 0051 GETMET R8 R3 K18 + 0x88280918, // 0052 GETMBR R10 R4 K24 0x5C2C0E00, // 0053 MOVE R11 R7 0x7C200600, // 0054 CALL R8 3 0x80041000, // 0055 RET 1 R8 0x70020004, // 0056 JMP #005C - 0x8C1C0705, // 0057 GETMET R7 R3 K5 - 0x88240910, // 0058 GETMBR R9 R4 K16 + 0x8C1C0712, // 0057 GETMET R7 R3 K18 + 0x88240919, // 0058 GETMBR R9 R4 K25 0x4C280000, // 0059 LDNIL R10 0x7C1C0600, // 005A CALL R7 3 0x80040E00, // 005B RET 1 R7 @@ -210,10 +222,10 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x541EFFFB, // 005D LDINT R7 65532 0x1C1C0C07, // 005E EQ R7 R6 R7 0x781E0007, // 005F JMPF R7 #0068 - 0x8C1C0705, // 0060 GETMET R7 R3 K5 - 0x88240911, // 0061 GETMBR R9 R4 K17 + 0x8C1C0712, // 0060 GETMET R7 R3 K18 + 0x8824091A, // 0061 GETMBR R9 R4 K26 0x542A0003, // 0062 LDINT R10 4 - 0x002A240A, // 0063 ADD R10 K18 R10 + 0x002A360A, // 0063 ADD R10 K27 R10 0x542E000F, // 0064 LDINT R11 16 0x0028140B, // 0065 ADD R10 R10 R11 0x7C1C0600, // 0066 CALL R7 3 @@ -221,7 +233,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x601C0003, // 0068 GETGBL R7 G3 0x5C200000, // 0069 MOVE R8 R0 0x7C1C0200, // 006A CALL R7 1 - 0x8C1C0F13, // 006B GETMET R7 R7 K19 + 0x8C1C0F1C, // 006B GETMET R7 R7 K28 0x5C240200, // 006C MOVE R9 R1 0x5C280400, // 006D MOVE R10 R2 0x5C2C0600, // 006E MOVE R11 R3 @@ -240,54 +252,44 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(Shutter), - /* K1 */ be_nested_str_weak(tasmota_shutter_index), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(Tilt), - /* K6 */ be_nested_str_weak(shadow_shutter_tilt), - /* K7 */ be_nested_str_weak(attribute_updated), - /* K8 */ be_nested_str_weak(parse_sensors), - }), + &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */ be_str_weak(parse_sensors), &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x000C0702, // 0002 ADD R3 R3 K2 + 0x880C0107, // 0001 GETMBR R3 R0 K7 + 0x000C0714, // 0002 ADD R3 R3 K20 0x7C080200, // 0003 CALL R2 1 - 0x000A0002, // 0004 ADD R2 K0 R2 + 0x000A3A02, // 0004 ADD R2 K29 R2 0x8C0C0303, // 0005 GETMET R3 R1 K3 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E000E, // 0008 JMPF R3 #0018 0x940C0202, // 0009 GETIDX R3 R1 R2 - 0x8C100704, // 000A GETMET R4 R3 K4 - 0x58180005, // 000B LDCONST R6 K5 + 0x8C100705, // 000A GETMET R4 R3 K5 + 0x5818001E, // 000B LDCONST R6 K30 0x7C100400, // 000C CALL R4 2 0x4C140000, // 000D LDNIL R5 0x20140805, // 000E NE R5 R4 R5 0x78160007, // 000F JMPF R5 #0018 - 0x88140106, // 0010 GETMBR R5 R0 K6 + 0x88140117, // 0010 GETMBR R5 R0 K23 0x20140805, // 0011 NE R5 R4 R5 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140107, // 0013 GETMET R5 R0 K7 + 0x8C14011F, // 0013 GETMET R5 R0 K31 0x541E0101, // 0014 LDINT R7 258 0x5422000E, // 0015 LDINT R8 15 0x7C140600, // 0016 CALL R5 3 - 0x90020C04, // 0017 SETMBR R0 K6 R4 + 0x90022E04, // 0017 SETMBR R0 K23 R4 0x600C0003, // 0018 GETGBL R3 G3 0x5C100000, // 0019 MOVE R4 R0 0x7C0C0200, // 001A CALL R3 1 - 0x8C0C0708, // 001B GETMET R3 R3 K8 + 0x8C0C0720, // 001B GETMET R3 R3 K32 0x5C140200, // 001C MOVE R5 R1 0x7C0C0400, // 001D CALL R3 2 0x80000000, // 001E RET 0 @@ -304,114 +306,90 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ be_nested_proto( 18, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(light), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(cluster), - /* K4 */ be_nested_str_weak(command), - /* K5 */ be_nested_str_weak(update_shadow_lazy), - /* K6 */ be_nested_str_weak(findsubval), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(update_tilt_min_max), - /* K9 */ be_nested_str_weak(tilt_min), - /* K10 */ be_nested_str_weak(tilt_max), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_uint), - /* K13 */ be_nested_str_weak(cmd), - /* K14 */ be_nested_str_weak(ShutterTilt), - /* K15 */ be_nested_str_weak(tasmota_shutter_index), - /* K16 */ be_const_int(1), - /* K17 */ be_nested_str_weak(_X20), - /* K18 */ be_nested_str_weak(update_shadow), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(tilt_X25_X3A), - /* K21 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A), - /* K22 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[79]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0xB8160200, // 0001 GETNGBL R5 K1 - 0x88140B02, // 0002 GETMBR R5 R5 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C0704, // 0004 GETMBR R7 R3 K4 + 0xA4124200, // 0000 IMPORT R4 K33 + 0xB8161A00, // 0001 GETNGBL R5 K13 + 0x88140B0E, // 0002 GETMBR R5 R5 K14 + 0x8818070F, // 0003 GETMBR R6 R3 K15 + 0x881C0722, // 0004 GETMBR R7 R3 K34 0x54220101, // 0005 LDINT R8 258 0x1C200C08, // 0006 EQ R8 R6 R8 0x7822003D, // 0007 JMPF R8 #0046 - 0x8C200105, // 0008 GETMET R8 R0 K5 + 0x8C200111, // 0008 GETMET R8 R0 K17 0x7C200200, // 0009 CALL R8 1 0x54220007, // 000A LDINT R8 8 0x1C200E08, // 000B EQ R8 R7 R8 0x78220038, // 000C JMPF R8 #0046 - 0x8C200506, // 000D GETMET R8 R2 K6 - 0x58280007, // 000E LDCONST R10 K7 + 0x8C200523, // 000D GETMET R8 R2 K35 + 0x5828000A, // 000E LDCONST R10 K10 0x7C200400, // 000F CALL R8 2 0x4C240000, // 0010 LDNIL R9 0x20241009, // 0011 NE R9 R8 R9 0x78260030, // 0012 JMPF R9 #0044 - 0x8C240108, // 0013 GETMET R9 R0 K8 + 0x8C240115, // 0013 GETMET R9 R0 K21 0x7C240200, // 0014 CALL R9 1 0x88240109, // 0015 GETMBR R9 R0 K9 0x4C280000, // 0016 LDNIL R10 0x2024120A, // 0017 NE R9 R9 R10 0x78260025, // 0018 JMPF R9 #003F - 0x8824010A, // 0019 GETMBR R9 R0 K10 + 0x8824010B, // 0019 GETMBR R9 R0 K11 0x4C280000, // 001A LDNIL R10 0x2024120A, // 001B NE R9 R9 R10 0x78260021, // 001C JMPF R9 #003F 0x88240109, // 001D GETMBR R9 R0 K9 - 0xB82A1600, // 001E GETNGBL R10 K11 - 0x8C28150C, // 001F GETMET R10 R10 K12 + 0xB82A0000, // 001E GETNGBL R10 K0 + 0x8C281516, // 001F GETMET R10 R10 K22 0x5C301000, // 0020 MOVE R12 R8 - 0x58340007, // 0021 LDCONST R13 K7 + 0x5834000A, // 0021 LDCONST R13 K10 0x543A270F, // 0022 LDINT R14 10000 - 0x583C0007, // 0023 LDCONST R15 K7 - 0x8840010A, // 0024 GETMBR R16 R0 K10 + 0x583C000A, // 0023 LDCONST R15 K10 + 0x8840010B, // 0024 GETMBR R16 R0 K11 0x88440109, // 0025 GETMBR R17 R0 K9 0x04402011, // 0026 SUB R16 R16 R17 0x7C280C00, // 0027 CALL R10 6 0x0024120A, // 0028 ADD R9 R9 R10 - 0xB82A1600, // 0029 GETNGBL R10 K11 - 0x8C28150D, // 002A GETMET R10 R10 K13 + 0xB82A0000, // 0029 GETNGBL R10 K0 + 0x8C281501, // 002A GETMET R10 R10 K1 0x60300008, // 002B GETGBL R12 G8 - 0x8834010F, // 002C GETMBR R13 R0 K15 - 0x00341B10, // 002D ADD R13 R13 K16 + 0x88340107, // 002C GETMBR R13 R0 K7 + 0x00341B14, // 002D ADD R13 R13 K20 0x7C300200, // 002E CALL R12 1 - 0x00321C0C, // 002F ADD R12 K14 R12 - 0x00301911, // 0030 ADD R12 R12 K17 + 0x0032480C, // 002F ADD R12 K36 R12 + 0x00301925, // 0030 ADD R12 R12 K37 0x60340008, // 0031 GETGBL R13 G8 0x5C381200, // 0032 MOVE R14 R9 0x7C340200, // 0033 CALL R13 1 0x0030180D, // 0034 ADD R12 R12 R13 0x50340000, // 0035 LDBOOL R13 0 0 0x7C280600, // 0036 CALL R10 3 - 0x8C280112, // 0037 GETMET R10 R0 K18 + 0x8C280126, // 0037 GETMET R10 R0 K38 0x7C280200, // 0038 CALL R10 1 0x60280008, // 0039 GETGBL R10 G8 0x5C2C1000, // 003A MOVE R11 R8 0x7C280200, // 003B CALL R10 1 - 0x002A280A, // 003C ADD R10 K20 R10 - 0x900E260A, // 003D SETMBR R3 K19 R10 + 0x002A500A, // 003C ADD R10 K40 R10 + 0x900E4E0A, // 003D SETMBR R3 K39 R10 0x70020004, // 003E JMP #0044 0x60240008, // 003F GETGBL R9 G8 0x5C281000, // 0040 MOVE R10 R8 0x7C240200, // 0041 CALL R9 1 - 0x00262A09, // 0042 ADD R9 K21 R9 - 0x900E2609, // 0043 SETMBR R3 K19 R9 + 0x00265209, // 0042 ADD R9 K41 R9 + 0x900E4E09, // 0043 SETMBR R3 K39 R9 0x50240200, // 0044 LDBOOL R9 1 0 0x80041200, // 0045 RET 1 R9 0x60200003, // 0046 GETGBL R8 G3 0x5C240000, // 0047 MOVE R9 R0 0x7C200200, // 0048 CALL R8 1 - 0x8C201116, // 0049 GETMET R8 R8 K22 + 0x8C20112A, // 0049 GETMET R8 R8 K42 0x5C280200, // 004A MOVE R10 R1 0x5C2C0400, // 004B MOVE R11 R2 0x5C300600, // 004C MOVE R12 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h index 85c39360e..20ce0312b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h @@ -3,6 +3,62 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Light2' ktab size: 52, total: 91 (saved 312 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light2[52] = { + /* K0 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(CT), + /* K2 */ be_nested_str_weak(set_ct), + /* K3 */ be_nested_str_weak(update_virtual), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(TLV), + /* K6 */ be_nested_str_weak(cluster), + /* K7 */ be_nested_str_weak(attribute), + /* K8 */ be_nested_str_weak(update_shadow_lazy), + /* K9 */ be_nested_str_weak(set_or_nil), + /* K10 */ be_nested_str_weak(U1), + /* K11 */ be_nested_str_weak(shadow_ct), + /* K12 */ be_nested_str_weak(set), + /* K13 */ be_const_int(2), + /* K14 */ be_const_int(0), + /* K15 */ be_nested_str_weak(ct_min), + /* K16 */ be_nested_str_weak(ct_max), + /* K17 */ be_nested_str_weak(U4), + /* K18 */ be_nested_str_weak(read_attribute), + /* K19 */ be_nested_str_weak(VIRTUAL), + /* K20 */ be_nested_str_weak(BRIDGE), + /* K21 */ be_nested_str_weak(light), + /* K22 */ be_nested_str_weak(update_ct_minmax), + /* K23 */ be_nested_str_weak(update_shadow), + /* K24 */ be_nested_str_weak(get), + /* K25 */ be_nested_str_weak(light_index), + /* K26 */ be_nested_str_weak(ct), + /* K27 */ be_nested_str_weak(attribute_updated), + /* K28 */ be_nested_str_weak(call_remote_sync), + /* K29 */ be_nested_str_weak(parse_status), + /* K30 */ be_nested_str_weak(), + /* K31 */ be_const_int(1000000), + /* K32 */ be_nested_str_weak(_X25iK), + /* K33 */ be_nested_str_weak(_X26_X239898_X3B_X20), + /* K34 */ be_nested_str_weak(webserver), + /* K35 */ be_nested_str_weak(web_values_prefix), + /* K36 */ be_nested_str_weak(content_send), + /* K37 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K38 */ be_nested_str_weak(web_value_onoff), + /* K39 */ be_nested_str_weak(shadow_onoff), + /* K40 */ be_nested_str_weak(web_value_dimmer), + /* K41 */ be_nested_str_weak(web_value_ct), + /* K42 */ be_nested_str_weak(init), + /* K43 */ be_const_int(1), + /* K44 */ be_nested_str_weak(command), + /* K45 */ be_nested_str_weak(findsubval), + /* K46 */ be_nested_str_weak(log), + /* K47 */ be_nested_str_weak(ct_X3A), + /* K48 */ be_nested_str_weak(publish_command), + /* K49 */ be_nested_str_weak(invoke_request), + /* K50 */ be_nested_str_weak(tasmota), + /* K51 */ be_nested_str_weak(get_option), +}; + extern const bclass be_class_Matter_Plugin_Light2; @@ -13,18 +69,13 @@ be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(CT), - /* K2 */ be_nested_str_weak(set_ct), - /* K3 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -59,98 +110,82 @@ be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(set_or_nil), - /* K6 */ be_nested_str_weak(U1), - /* K7 */ be_nested_str_weak(shadow_ct), - /* K8 */ be_nested_str_weak(set), - /* K9 */ be_const_int(2), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(ct_min), - /* K12 */ be_nested_str_weak(ct_max), - /* K13 */ be_nested_str_weak(U4), - /* K14 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[71]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0xB8120800, // 0000 GETNGBL R4 K4 + 0x88100905, // 0001 GETMBR R4 R4 K5 + 0x88140506, // 0002 GETMBR R5 R2 K6 + 0x88180507, // 0003 GETMBR R6 R2 K7 0x541E02FF, // 0004 LDINT R7 768 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0036, // 0006 JMPF R7 #003E - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0108, // 0007 GETMET R7 R0 K8 0x7C1C0200, // 0008 CALL R7 1 0x541E0006, // 0009 LDINT R7 7 0x1C1C0C07, // 000A EQ R7 R6 R7 0x781E0005, // 000B JMPF R7 #0012 - 0x8C1C0705, // 000C GETMET R7 R3 K5 - 0x88240906, // 000D GETMBR R9 R4 K6 - 0x88280107, // 000E GETMBR R10 R0 K7 + 0x8C1C0709, // 000C GETMET R7 R3 K9 + 0x8824090A, // 000D GETMBR R9 R4 K10 + 0x8828010B, // 000E GETMBR R10 R0 K11 0x7C1C0600, // 000F CALL R7 3 0x80040E00, // 0010 RET 1 R7 0x7002002B, // 0011 JMP #003E 0x541E0007, // 0012 LDINT R7 8 0x1C1C0C07, // 0013 EQ R7 R6 R7 0x781E0005, // 0014 JMPF R7 #001B - 0x8C1C0708, // 0015 GETMET R7 R3 K8 - 0x88240906, // 0016 GETMBR R9 R4 K6 - 0x58280009, // 0017 LDCONST R10 K9 + 0x8C1C070C, // 0015 GETMET R7 R3 K12 + 0x8824090A, // 0016 GETMBR R9 R4 K10 + 0x5828000D, // 0017 LDCONST R10 K13 0x7C1C0600, // 0018 CALL R7 3 0x80040E00, // 0019 RET 1 R7 0x70020022, // 001A JMP #003E 0x541E000E, // 001B LDINT R7 15 0x1C1C0C07, // 001C EQ R7 R6 R7 0x781E0005, // 001D JMPF R7 #0024 - 0x8C1C0708, // 001E GETMET R7 R3 K8 - 0x88240906, // 001F GETMBR R9 R4 K6 - 0x5828000A, // 0020 LDCONST R10 K10 + 0x8C1C070C, // 001E GETMET R7 R3 K12 + 0x8824090A, // 001F GETMBR R9 R4 K10 + 0x5828000E, // 0020 LDCONST R10 K14 0x7C1C0600, // 0021 CALL R7 3 0x80040E00, // 0022 RET 1 R7 0x70020019, // 0023 JMP #003E 0x541E400A, // 0024 LDINT R7 16395 0x1C1C0C07, // 0025 EQ R7 R6 R7 0x781E0005, // 0026 JMPF R7 #002D - 0x8C1C0708, // 0027 GETMET R7 R3 K8 - 0x88240906, // 0028 GETMBR R9 R4 K6 - 0x8828010B, // 0029 GETMBR R10 R0 K11 + 0x8C1C070C, // 0027 GETMET R7 R3 K12 + 0x8824090A, // 0028 GETMBR R9 R4 K10 + 0x8828010F, // 0029 GETMBR R10 R0 K15 0x7C1C0600, // 002A CALL R7 3 0x80040E00, // 002B RET 1 R7 0x70020010, // 002C JMP #003E 0x541E400B, // 002D LDINT R7 16396 0x1C1C0C07, // 002E EQ R7 R6 R7 0x781E0005, // 002F JMPF R7 #0036 - 0x8C1C0708, // 0030 GETMET R7 R3 K8 - 0x88240906, // 0031 GETMBR R9 R4 K6 - 0x8828010C, // 0032 GETMBR R10 R0 K12 + 0x8C1C070C, // 0030 GETMET R7 R3 K12 + 0x8824090A, // 0031 GETMBR R9 R4 K10 + 0x88280110, // 0032 GETMBR R10 R0 K16 0x7C1C0600, // 0033 CALL R7 3 0x80040E00, // 0034 RET 1 R7 0x70020007, // 0035 JMP #003E 0x541EFFFB, // 0036 LDINT R7 65532 0x1C1C0C07, // 0037 EQ R7 R6 R7 0x781E0004, // 0038 JMPF R7 #003E - 0x8C1C0708, // 0039 GETMET R7 R3 K8 - 0x8824090D, // 003A GETMBR R9 R4 K13 + 0x8C1C070C, // 0039 GETMET R7 R3 K12 + 0x88240911, // 003A GETMBR R9 R4 K17 0x542A000F, // 003B LDINT R10 16 0x7C1C0600, // 003C CALL R7 3 0x80040E00, // 003D RET 1 R7 0x601C0003, // 003E GETGBL R7 G3 0x5C200000, // 003F MOVE R8 R0 0x7C1C0200, // 0040 CALL R7 1 - 0x8C1C0F0E, // 0041 GETMET R7 R7 K14 + 0x8C1C0F12, // 0041 GETMET R7 R7 K18 0x5C240200, // 0042 MOVE R9 R1 0x5C280400, // 0043 MOVE R10 R2 0x5C2C0600, // 0044 MOVE R11 R3 @@ -169,67 +204,55 @@ be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(update_ct_minmax), - /* K4 */ be_nested_str_weak(update_shadow), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(light_index), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(ct), - /* K9 */ be_nested_str_weak(shadow_ct), - /* K10 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040113, // 0000 GETMBR R1 R0 K19 0x74060020, // 0001 JMPT R1 #0023 - 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x88040114, // 0002 GETMBR R1 R0 K20 0x7406001E, // 0003 JMPT R1 #0023 - 0xA4060400, // 0004 IMPORT R1 K2 - 0x8C080103, // 0005 GETMET R2 R0 K3 + 0xA4062A00, // 0004 IMPORT R1 K21 + 0x8C080116, // 0005 GETMET R2 R0 K22 0x7C080200, // 0006 CALL R2 1 0x60080003, // 0007 GETGBL R2 G3 0x5C0C0000, // 0008 MOVE R3 R0 0x7C080200, // 0009 CALL R2 1 - 0x8C080504, // 000A GETMET R2 R2 K4 + 0x8C080517, // 000A GETMET R2 R2 K23 0x7C080200, // 000B CALL R2 1 - 0x8C080305, // 000C GETMET R2 R1 K5 - 0x88100106, // 000D GETMBR R4 R0 K6 + 0x8C080318, // 000C GETMET R2 R1 K24 + 0x88100119, // 000D GETMBR R4 R0 K25 0x7C080400, // 000E CALL R2 2 0x4C0C0000, // 000F LDNIL R3 0x200C0403, // 0010 NE R3 R2 R3 0x780E000F, // 0011 JMPF R3 #0022 - 0x8C0C0507, // 0012 GETMET R3 R2 K7 - 0x58140008, // 0013 LDCONST R5 K8 + 0x8C0C0500, // 0012 GETMET R3 R2 K0 + 0x5814001A, // 0013 LDCONST R5 K26 0x4C180000, // 0014 LDNIL R6 0x7C0C0600, // 0015 CALL R3 3 0x4C100000, // 0016 LDNIL R4 0x1C100604, // 0017 EQ R4 R3 R4 0x78120000, // 0018 JMPF R4 #001A - 0x880C0109, // 0019 GETMBR R3 R0 K9 - 0x88100109, // 001A GETMBR R4 R0 K9 + 0x880C010B, // 0019 GETMBR R3 R0 K11 + 0x8810010B, // 001A GETMBR R4 R0 K11 0x20100604, // 001B NE R4 R3 R4 0x78120004, // 001C JMPF R4 #0022 - 0x8C10010A, // 001D GETMET R4 R0 K10 + 0x8C10011B, // 001D GETMET R4 R0 K27 0x541A02FF, // 001E LDINT R6 768 0x541E0006, // 001F LDINT R7 7 0x7C100600, // 0020 CALL R4 3 - 0x90021203, // 0021 SETMBR R0 K9 R3 + 0x90021603, // 0021 SETMBR R0 K11 R3 0x70020004, // 0022 JMP #0028 0x60040003, // 0023 GETGBL R1 G3 0x5C080000, // 0024 MOVE R2 R0 0x7C040200, // 0025 CALL R1 1 - 0x8C040304, // 0026 GETMET R1 R1 K4 + 0x8C040317, // 0026 GETMET R1 R1 K23 0x7C040200, // 0027 CALL R1 1 0x80000000, // 0028 RET 0 }) @@ -245,43 +268,28 @@ be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(ct_min), - /* K1 */ be_nested_str_weak(ct_max), - /* K2 */ be_nested_str_weak(BRIDGE), - /* K3 */ be_nested_str_weak(call_remote_sync), - /* K4 */ be_nested_str_weak(CT), - /* K5 */ be_nested_str_weak(parse_status), - /* K6 */ be_nested_str_weak(VIRTUAL), - /* K7 */ be_nested_str_weak(shadow_ct), - /* K8 */ be_nested_str_weak(attribute_updated), - /* K9 */ be_nested_str_weak(light), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_nested_str_weak(ct), - /* K12 */ be_nested_str_weak(light_index), - /* K13 */ be_nested_str_weak(update_shadow), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(set_ct), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808010F, // 0000 GETMBR R2 R0 K15 0x14080202, // 0001 LT R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x8804010F, // 0003 GETMBR R1 R0 K15 + 0x88080110, // 0004 GETMBR R2 R0 K16 0x24080202, // 0005 GT R2 R1 R2 0x780A0000, // 0006 JMPF R2 #0008 - 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x88040110, // 0007 GETMBR R1 R0 K16 + 0x88080114, // 0008 GETMBR R2 R0 K20 0x780A000D, // 0009 JMPF R2 #0018 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 + 0x8C08011C, // 000A GETMET R2 R0 K28 + 0x58100001, // 000B LDCONST R4 K1 0x60140008, // 000C GETGBL R5 G8 0x5C180200, // 000D MOVE R6 R1 0x7C140200, // 000E CALL R5 1 @@ -289,30 +297,30 @@ be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */ 0x4C0C0000, // 0010 LDNIL R3 0x200C0403, // 0011 NE R3 R2 R3 0x780E0003, // 0012 JMPF R3 #0017 - 0x8C0C0105, // 0013 GETMET R3 R0 K5 + 0x8C0C011D, // 0013 GETMET R3 R0 K29 0x5C140400, // 0014 MOVE R5 R2 0x541A000A, // 0015 LDINT R6 11 0x7C0C0600, // 0016 CALL R3 3 0x70020013, // 0017 JMP #002C - 0x88080106, // 0018 GETMBR R2 R0 K6 + 0x88080113, // 0018 GETMBR R2 R0 K19 0x780A0008, // 0019 JMPF R2 #0023 - 0x88080107, // 001A GETMBR R2 R0 K7 + 0x8808010B, // 001A GETMBR R2 R0 K11 0x20080202, // 001B NE R2 R1 R2 0x780A0004, // 001C JMPF R2 #0022 - 0x8C080108, // 001D GETMET R2 R0 K8 + 0x8C08011B, // 001D GETMET R2 R0 K27 0x541202FF, // 001E LDINT R4 768 0x54160006, // 001F LDINT R5 7 0x7C080600, // 0020 CALL R2 3 - 0x90020E01, // 0021 SETMBR R0 K7 R1 + 0x90021601, // 0021 SETMBR R0 K11 R1 0x70020008, // 0022 JMP #002C - 0xA40A1200, // 0023 IMPORT R2 K9 - 0x8C0C050A, // 0024 GETMET R3 R2 K10 + 0xA40A2A00, // 0023 IMPORT R2 K21 + 0x8C0C050C, // 0024 GETMET R3 R2 K12 0x60140013, // 0025 GETGBL R5 G19 0x7C140000, // 0026 CALL R5 0 - 0x98161601, // 0027 SETIDX R5 K11 R1 - 0x8818010C, // 0028 GETMBR R6 R0 K12 + 0x98163401, // 0027 SETIDX R5 K26 R1 + 0x88180119, // 0028 GETMBR R6 R0 K25 0x7C0C0600, // 0029 CALL R3 3 - 0x8C0C010D, // 002A GETMET R3 R0 K13 + 0x8C0C0117, // 002A GETMET R3 R0 K23 0x7C0C0200, // 002B CALL R3 1 0x80000000, // 002C RET 0 }) @@ -328,28 +336,20 @@ be_local_closure(class_Matter_Plugin_Light2_parse_status, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(CT), - /* K3 */ be_nested_str_weak(shadow_ct), - /* K4 */ be_nested_str_weak(ct_min), - /* K5 */ be_nested_str_weak(ct_max), - /* K6 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x8C0C071D, // 0003 GETMET R3 R3 K29 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 @@ -357,29 +357,29 @@ be_local_closure(class_Matter_Plugin_Light2_parse_status, /* name */ 0x1C0C0403, // 0008 EQ R3 R2 R3 0x780E0017, // 0009 JMPF R3 #0022 0x600C0009, // 000A GETGBL R3 G9 - 0x8C100301, // 000B GETMET R4 R1 K1 - 0x58180002, // 000C LDCONST R6 K2 + 0x8C100300, // 000B GETMET R4 R1 K0 + 0x58180001, // 000C LDCONST R6 K1 0x7C100400, // 000D CALL R4 2 0x7C0C0200, // 000E CALL R3 1 0x4C100000, // 000F LDNIL R4 0x20100604, // 0010 NE R4 R3 R4 0x7812000F, // 0011 JMPF R4 #0022 - 0x88100103, // 0012 GETMBR R4 R0 K3 + 0x8810010B, // 0012 GETMBR R4 R0 K11 0x20100604, // 0013 NE R4 R3 R4 0x7812000C, // 0014 JMPF R4 #0022 - 0x88100104, // 0015 GETMBR R4 R0 K4 + 0x8810010F, // 0015 GETMBR R4 R0 K15 0x14100604, // 0016 LT R4 R3 R4 0x78120000, // 0017 JMPF R4 #0019 - 0x880C0104, // 0018 GETMBR R3 R0 K4 - 0x88100105, // 0019 GETMBR R4 R0 K5 + 0x880C010F, // 0018 GETMBR R3 R0 K15 + 0x88100110, // 0019 GETMBR R4 R0 K16 0x24100604, // 001A GT R4 R3 R4 0x78120000, // 001B JMPF R4 #001D - 0x880C0105, // 001C GETMBR R3 R0 K5 - 0x8C100106, // 001D GETMET R4 R0 K6 + 0x880C0110, // 001C GETMBR R3 R0 K16 + 0x8C10011B, // 001D GETMET R4 R0 K27 0x541A02FF, // 001E LDINT R6 768 0x541E0006, // 001F LDINT R7 7 0x7C100600, // 0020 CALL R4 3 - 0x90020603, // 0021 SETMBR R0 K3 R3 + 0x90021603, // 0021 SETMBR R0 K11 R3 0x80000000, // 0022 RET 0 }) ) @@ -394,29 +394,23 @@ be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(shadow_ct), - /* K2 */ be_const_int(1000000), - /* K3 */ be_nested_str_weak(_X25iK), - /* K4 */ be_nested_str_weak(_X26_X239898_X3B_X20), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(web_value_ct), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x5804001E, // 0000 LDCONST R1 K30 + 0x8808010B, // 0001 GETMBR R2 R0 K11 0x4C0C0000, // 0002 LDNIL R3 0x20080403, // 0003 NE R2 R2 R3 0x780A000C, // 0004 JMPF R2 #0012 - 0x88080101, // 0005 GETMBR R2 R0 K1 - 0x0C0A0402, // 0006 DIV R2 K2 R2 + 0x8808010B, // 0005 GETMBR R2 R0 K11 + 0x0C0A3E02, // 0006 DIV R2 K31 R2 0x540E0018, // 0007 LDINT R3 25 0x00080403, // 0008 ADD R2 R2 R3 0x540E0031, // 0009 LDINT R3 50 @@ -424,11 +418,11 @@ be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */ 0x540E0031, // 000B LDINT R3 50 0x08080403, // 000C MUL R2 R2 R3 0x600C0018, // 000D GETGBL R3 G24 - 0x58100003, // 000E LDCONST R4 K3 + 0x58100020, // 000E LDCONST R4 K32 0x5C140400, // 000F MOVE R5 R2 0x7C0C0400, // 0010 CALL R3 2 0x5C040600, // 0011 MOVE R1 R3 - 0x000A0801, // 0012 ADD R2 K4 R1 + 0x000A4201, // 0012 ADD R2 K33 R1 0x80040400, // 0013 RET 1 R2 }) ) @@ -443,37 +437,28 @@ be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(web_value_dimmer), - /* K7 */ be_nested_str_weak(web_value_ct), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4064400, // 0000 IMPORT R1 K34 + 0x8C080123, // 0001 GETMET R2 R0 K35 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080324, // 0003 GETMET R2 R1 K36 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x58140025, // 0005 LDCONST R5 K37 + 0x8C180126, // 0006 GETMET R6 R0 K38 + 0x88200127, // 0007 GETMBR R8 R0 K39 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0106, // 0009 GETMET R7 R0 K6 + 0x8C1C0128, // 0009 GETMET R7 R0 K40 0x7C1C0200, // 000A CALL R7 1 - 0x8C200107, // 000B GETMET R8 R0 K7 + 0x8C200129, // 000B GETMET R8 R0 K41 0x7C200200, // 000C CALL R8 1 0x7C100800, // 000D CALL R4 4 0x7C080400, // 000E CALL R2 2 @@ -491,46 +476,37 @@ be_local_closure(class_Matter_Plugin_Light2_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(shadow_ct), - /* K3 */ be_nested_str_weak(light), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(light_index), - /* K7 */ be_nested_str_weak(update_ct_minmax), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C10092A, // 0003 GETMET R4 R4 K42 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x88100114, // 0008 GETMBR R4 R0 K20 0x74120009, // 0009 JMPT R4 #0014 0x54120144, // 000A LDINT R4 325 - 0x90020404, // 000B SETMBR R0 K2 R4 - 0xA4120600, // 000C IMPORT R4 K3 - 0x8C140904, // 000D GETMET R5 R4 K4 - 0x581C0005, // 000E LDCONST R7 K5 + 0x90021604, // 000B SETMBR R0 K11 R4 + 0xA4122A00, // 000C IMPORT R4 K21 + 0x8C140918, // 000D GETMET R5 R4 K24 + 0x581C002B, // 000E LDCONST R7 K43 0x7C140400, // 000F CALL R5 2 0x4C180000, // 0010 LDNIL R6 0x20140A06, // 0011 NE R5 R5 R6 0x78160000, // 0012 JMPF R5 #0014 - 0x90020D05, // 0013 SETMBR R0 K6 K5 - 0x8C100107, // 0014 GETMET R4 R0 K7 + 0x9002332B, // 0013 SETMBR R0 K25 K43 + 0x8C100116, // 0014 GETMET R4 R0 K22 0x7C100200, // 0015 CALL R4 1 0x80000000, // 0016 RET 0 }) @@ -546,65 +522,49 @@ be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_nested_str_weak(findsubval), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(ct_min), - /* K8 */ be_nested_str_weak(ct_max), - /* K9 */ be_nested_str_weak(set_ct), - /* K10 */ be_nested_str_weak(log), - /* K11 */ be_nested_str_weak(ct_X3A), - /* K12 */ be_nested_str_weak(publish_command), - /* K13 */ be_nested_str_weak(CT), - /* K14 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[66]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100901, // 0001 GETMBR R4 R4 K1 - 0x88140702, // 0002 GETMBR R5 R3 K2 - 0x88180703, // 0003 GETMBR R6 R3 K3 + 0xB8120800, // 0000 GETNGBL R4 K4 + 0x88100905, // 0001 GETMBR R4 R4 K5 + 0x88140706, // 0002 GETMBR R5 R3 K6 + 0x8818072C, // 0003 GETMBR R6 R3 K44 0x541E02FF, // 0004 LDINT R7 768 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0030, // 0006 JMPF R7 #0038 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0108, // 0007 GETMET R7 R0 K8 0x7C1C0200, // 0008 CALL R7 1 0x541E0009, // 0009 LDINT R7 10 0x1C1C0C07, // 000A EQ R7 R6 R7 0x781E0019, // 000B JMPF R7 #0026 - 0x8C1C0505, // 000C GETMET R7 R2 K5 - 0x58240006, // 000D LDCONST R9 K6 + 0x8C1C052D, // 000C GETMET R7 R2 K45 + 0x5824000E, // 000D LDCONST R9 K14 0x7C1C0400, // 000E CALL R7 2 - 0x88200107, // 000F GETMBR R8 R0 K7 + 0x8820010F, // 000F GETMBR R8 R0 K15 0x14200E08, // 0010 LT R8 R7 R8 0x78220000, // 0011 JMPF R8 #0013 - 0x881C0107, // 0012 GETMBR R7 R0 K7 - 0x88200108, // 0013 GETMBR R8 R0 K8 + 0x881C010F, // 0012 GETMBR R7 R0 K15 + 0x88200110, // 0013 GETMBR R8 R0 K16 0x24200E08, // 0014 GT R8 R7 R8 0x78220000, // 0015 JMPF R8 #0017 - 0x881C0108, // 0016 GETMBR R7 R0 K8 - 0x8C200109, // 0017 GETMET R8 R0 K9 + 0x881C0110, // 0016 GETMBR R7 R0 K16 + 0x8C200102, // 0017 GETMET R8 R0 K2 0x5C280E00, // 0018 MOVE R10 R7 0x7C200400, // 0019 CALL R8 2 0x60200008, // 001A GETGBL R8 G8 0x5C240E00, // 001B MOVE R9 R7 0x7C200200, // 001C CALL R8 1 - 0x00221608, // 001D ADD R8 K11 R8 - 0x900E1408, // 001E SETMBR R3 K10 R8 - 0x8C20010C, // 001F GETMET R8 R0 K12 - 0x5828000D, // 0020 LDCONST R10 K13 + 0x00225E08, // 001D ADD R8 K47 R8 + 0x900E5C08, // 001E SETMBR R3 K46 R8 + 0x8C200130, // 001F GETMET R8 R0 K48 + 0x58280001, // 0020 LDCONST R10 K1 0x5C2C0E00, // 0021 MOVE R11 R7 0x7C200600, // 0022 CALL R8 3 0x50200200, // 0023 LDBOOL R8 1 0 @@ -631,7 +591,7 @@ be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */ 0x601C0003, // 0038 GETGBL R7 G3 0x5C200000, // 0039 MOVE R8 R0 0x7C1C0200, // 003A CALL R7 1 - 0x8C1C0F0E, // 003B GETMET R7 R7 K14 + 0x8C1C0F31, // 003B GETMET R7 R7 K49 0x5C240200, // 003C MOVE R9 R1 0x5C280400, // 003D MOVE R10 R2 0x5C2C0600, // 003E MOVE R11 R3 @@ -651,35 +611,30 @@ be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(get_option), - /* K2 */ be_nested_str_weak(ct_min), - /* K3 */ be_nested_str_weak(ct_max), - }), + &be_ktab_class_Matter_Plugin_Light2, /* shared constants */ be_str_weak(update_ct_minmax), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0xB8066400, // 0000 GETNGBL R1 K50 + 0x8C040333, // 0001 GETMET R1 R1 K51 0x540E0051, // 0002 LDINT R3 82 0x7C040400, // 0003 CALL R1 2 0x78060001, // 0004 JMPF R1 #0007 0x540A00C7, // 0005 LDINT R2 200 0x70020000, // 0006 JMP #0008 0x540A0098, // 0007 LDINT R2 153 - 0x90020402, // 0008 SETMBR R0 K2 R2 + 0x90021E02, // 0008 SETMBR R0 K15 R2 0x78060001, // 0009 JMPF R1 #000C 0x540A017B, // 000A LDINT R2 380 0x70020000, // 000B JMP #000D 0x540A01F3, // 000C LDINT R2 500 - 0x90020602, // 000D SETMBR R0 K3 R2 + 0x90022002, // 000D SETMBR R0 K16 R2 0x80000000, // 000E RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h index 464f51dd6..870cb69d8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h @@ -3,6 +3,78 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Plugin_Light3' ktab size: 68, total: 113 (saved 360 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light3[68] = { + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(TLV), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(command), + /* K4 */ be_nested_str_weak(update_shadow_lazy), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(findsubval), + /* K7 */ be_nested_str_weak(set_hue_sat), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(hue_X3A), + /* K10 */ be_nested_str_weak(publish_command), + /* K11 */ be_nested_str_weak(Hue), + /* K12 */ be_const_int(1), + /* K13 */ be_const_int(2), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str_weak(sat_X3A), + /* K16 */ be_nested_str_weak(Sat), + /* K17 */ be_nested_str_weak(_X20sat_X3A), + /* K18 */ be_nested_str_weak(invoke_request), + /* K19 */ be_nested_str_weak(attribute), + /* K20 */ be_nested_str_weak(set_or_nil), + /* K21 */ be_nested_str_weak(U1), + /* K22 */ be_nested_str_weak(shadow_hue), + /* K23 */ be_nested_str_weak(shadow_sat), + /* K24 */ be_nested_str_weak(set), + /* K25 */ be_nested_str_weak(U4), + /* K26 */ be_nested_str_weak(read_attribute), + /* K27 */ be_nested_str_weak(VIRTUAL), + /* K28 */ be_nested_str_weak(BRIDGE), + /* K29 */ be_nested_str_weak(light), + /* K30 */ be_nested_str_weak(update_shadow), + /* K31 */ be_nested_str_weak(get), + /* K32 */ be_nested_str_weak(light_index), + /* K33 */ be_nested_str_weak(find), + /* K34 */ be_nested_str_weak(hue), + /* K35 */ be_nested_str_weak(sat), + /* K36 */ be_nested_str_weak(tasmota), + /* K37 */ be_nested_str_weak(scale_uint), + /* K38 */ be_nested_str_weak(attribute_updated), + /* K39 */ be_nested_str_weak(update_virtual), + /* K40 */ be_nested_str_weak(call_remote_sync), + /* K41 */ be_nested_str_weak(HSBColor1), + /* K42 */ be_nested_str_weak(parse_status), + /* K43 */ be_nested_str_weak(HSBColor2), + /* K44 */ be_nested_str_weak(init), + /* K45 */ be_nested_str_weak(webserver), + /* K46 */ be_nested_str_weak(web_values_prefix), + /* K47 */ be_nested_str_weak(content_send), + /* K48 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K49 */ be_nested_str_weak(web_value_onoff), + /* K50 */ be_nested_str_weak(shadow_onoff), + /* K51 */ be_nested_str_weak(web_value_dimmer), + /* K52 */ be_nested_str_weak(web_value_RGB), + /* K53 */ be_nested_str_weak(HSBColor), + /* K54 */ be_nested_str_weak(string), + /* K55 */ be_nested_str_weak(split), + /* K56 */ be_nested_str_weak(_X2C), + /* K57 */ be_const_int(0), + /* K58 */ be_const_int(1), + /* K59 */ be_nested_str_weak(light_state), + /* K60 */ be_nested_str_weak(set_bri), + /* K61 */ be_nested_str_weak(set_huesat), + /* K62 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), + /* K63 */ be_nested_str_weak(r), + /* K64 */ be_nested_str_weak(g), + /* K65 */ be_nested_str_weak(b), + /* K66 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), + /* K67 */ be_nested_str_weak(), +}; + extern const bclass be_class_Matter_Plugin_Light3; @@ -13,33 +85,13 @@ be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */ be_nested_proto( 15, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(command), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(findsubval), - /* K7 */ be_nested_str_weak(set_hue_sat), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(hue_X3A), - /* K10 */ be_nested_str_weak(publish_command), - /* K11 */ be_nested_str_weak(Hue), - /* K12 */ be_const_int(1), - /* K13 */ be_const_int(2), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(sat_X3A), - /* K16 */ be_nested_str_weak(Sat), - /* K17 */ be_nested_str_weak(_X20sat_X3A), - /* K18 */ be_nested_str_weak(invoke_request), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[121]) { /* code */ @@ -177,35 +229,20 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(cluster), - /* K3 */ be_nested_str_weak(attribute), - /* K4 */ be_nested_str_weak(update_shadow_lazy), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(set_or_nil), - /* K7 */ be_nested_str_weak(U1), - /* K8 */ be_nested_str_weak(shadow_hue), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(shadow_sat), - /* K11 */ be_nested_str_weak(set), - /* K12 */ be_nested_str_weak(U4), - /* K13 */ be_nested_str_weak(read_attribute), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[96]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 0x88100901, // 0001 GETMBR R4 R4 K1 0x88140502, // 0002 GETMBR R5 R2 K2 - 0x88180503, // 0003 GETMBR R6 R2 K3 + 0x88180513, // 0003 GETMBR R6 R2 K19 0x541E02FF, // 0004 LDINT R7 768 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E004F, // 0006 JMPF R7 #0057 @@ -213,25 +250,25 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x7C1C0200, // 0008 CALL R7 1 0x1C1C0D05, // 0009 EQ R7 R6 K5 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C0706, // 000B GETMET R7 R3 K6 - 0x88240907, // 000C GETMBR R9 R4 K7 - 0x88280108, // 000D GETMBR R10 R0 K8 + 0x8C1C0714, // 000B GETMET R7 R3 K20 + 0x88240915, // 000C GETMBR R9 R4 K21 + 0x88280116, // 000D GETMBR R10 R0 K22 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020045, // 0010 JMP #0057 - 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x1C1C0D0C, // 0011 EQ R7 R6 K12 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0706, // 0013 GETMET R7 R3 K6 - 0x88240907, // 0014 GETMBR R9 R4 K7 - 0x8828010A, // 0015 GETMBR R10 R0 K10 + 0x8C1C0714, // 0013 GETMET R7 R3 K20 + 0x88240915, // 0014 GETMBR R9 R4 K21 + 0x88280117, // 0015 GETMBR R10 R0 K23 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x7002003D, // 0018 JMP #0057 0x541E0006, // 0019 LDINT R7 7 0x1C1C0C07, // 001A EQ R7 R6 R7 0x781E0005, // 001B JMPF R7 #0022 - 0x8C1C070B, // 001C GETMET R7 R3 K11 - 0x88240907, // 001D GETMBR R9 R4 K7 + 0x8C1C0718, // 001C GETMET R7 R3 K24 + 0x88240915, // 001D GETMBR R9 R4 K21 0x58280005, // 001E LDCONST R10 K5 0x7C1C0600, // 001F CALL R7 3 0x80040E00, // 0020 RET 1 R7 @@ -239,8 +276,8 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E0007, // 0022 LDINT R7 8 0x1C1C0C07, // 0023 EQ R7 R6 R7 0x781E0005, // 0024 JMPF R7 #002B - 0x8C1C070B, // 0025 GETMET R7 R3 K11 - 0x88240907, // 0026 GETMBR R9 R4 K7 + 0x8C1C0718, // 0025 GETMET R7 R3 K24 + 0x88240915, // 0026 GETMBR R9 R4 K21 0x58280005, // 0027 LDCONST R10 K5 0x7C1C0600, // 0028 CALL R7 3 0x80040E00, // 0029 RET 1 R7 @@ -248,8 +285,8 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E000E, // 002B LDINT R7 15 0x1C1C0C07, // 002C EQ R7 R6 R7 0x781E0005, // 002D JMPF R7 #0034 - 0x8C1C070B, // 002E GETMET R7 R3 K11 - 0x88240907, // 002F GETMBR R9 R4 K7 + 0x8C1C0718, // 002E GETMET R7 R3 K24 + 0x88240915, // 002F GETMBR R9 R4 K21 0x58280005, // 0030 LDCONST R10 K5 0x7C1C0600, // 0031 CALL R7 3 0x80040E00, // 0032 RET 1 R7 @@ -257,8 +294,8 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E4000, // 0034 LDINT R7 16385 0x1C1C0C07, // 0035 EQ R7 R6 R7 0x781E0005, // 0036 JMPF R7 #003D - 0x8C1C070B, // 0037 GETMET R7 R3 K11 - 0x88240907, // 0038 GETMBR R9 R4 K7 + 0x8C1C0718, // 0037 GETMET R7 R3 K24 + 0x88240915, // 0038 GETMBR R9 R4 K21 0x58280005, // 0039 LDCONST R10 K5 0x7C1C0600, // 003A CALL R7 3 0x80040E00, // 003B RET 1 R7 @@ -266,17 +303,17 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541E4009, // 003D LDINT R7 16394 0x1C1C0C07, // 003E EQ R7 R6 R7 0x781E0005, // 003F JMPF R7 #0046 - 0x8C1C070B, // 0040 GETMET R7 R3 K11 - 0x88240907, // 0041 GETMBR R9 R4 K7 - 0x58280009, // 0042 LDCONST R10 K9 + 0x8C1C0718, // 0040 GETMET R7 R3 K24 + 0x88240915, // 0041 GETMBR R9 R4 K21 + 0x5828000C, // 0042 LDCONST R10 K12 0x7C1C0600, // 0043 CALL R7 3 0x80040E00, // 0044 RET 1 R7 0x70020010, // 0045 JMP #0057 0x541E000F, // 0046 LDINT R7 16 0x1C1C0C07, // 0047 EQ R7 R6 R7 0x781E0005, // 0048 JMPF R7 #004F - 0x8C1C070B, // 0049 GETMET R7 R3 K11 - 0x88240907, // 004A GETMBR R9 R4 K7 + 0x8C1C0718, // 0049 GETMET R7 R3 K24 + 0x88240915, // 004A GETMBR R9 R4 K21 0x58280005, // 004B LDCONST R10 K5 0x7C1C0600, // 004C CALL R7 3 0x80040E00, // 004D RET 1 R7 @@ -284,15 +321,15 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x541EFFFB, // 004F LDINT R7 65532 0x1C1C0C07, // 0050 EQ R7 R6 R7 0x781E0004, // 0051 JMPF R7 #0057 - 0x8C1C070B, // 0052 GETMET R7 R3 K11 - 0x8824090C, // 0053 GETMBR R9 R4 K12 - 0x58280009, // 0054 LDCONST R10 K9 + 0x8C1C0718, // 0052 GETMET R7 R3 K24 + 0x88240919, // 0053 GETMBR R9 R4 K25 + 0x5828000C, // 0054 LDCONST R10 K12 0x7C1C0600, // 0055 CALL R7 3 0x80040E00, // 0056 RET 1 R7 0x601C0003, // 0057 GETGBL R7 G3 0x5C200000, // 0058 MOVE R8 R0 0x7C1C0200, // 0059 CALL R7 1 - 0x8C1C0F0D, // 005A GETMET R7 R7 K13 + 0x8C1C0F1A, // 005A GETMET R7 R7 K26 0x5C240200, // 005B MOVE R9 R1 0x5C280400, // 005C MOVE R10 R2 0x5C2C0600, // 005D MOVE R11 R3 @@ -311,106 +348,89 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ be_nested_proto( 12, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(VIRTUAL), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(light), - /* K3 */ be_nested_str_weak(update_shadow), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(light_index), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(hue), - /* K8 */ be_nested_str_weak(sat), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(scale_uint), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(shadow_hue), - /* K13 */ be_nested_str_weak(shadow_sat), - /* K14 */ be_nested_str_weak(attribute_updated), - /* K15 */ be_const_int(1), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804011B, // 0000 GETMBR R1 R0 K27 0x74060042, // 0001 JMPT R1 #0045 - 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x8804011C, // 0002 GETMBR R1 R0 K28 0x74060040, // 0003 JMPT R1 #0045 - 0xA4060400, // 0004 IMPORT R1 K2 + 0xA4063A00, // 0004 IMPORT R1 K29 0x60080003, // 0005 GETGBL R2 G3 0x5C0C0000, // 0006 MOVE R3 R0 0x7C080200, // 0007 CALL R2 1 - 0x8C080503, // 0008 GETMET R2 R2 K3 + 0x8C08051E, // 0008 GETMET R2 R2 K30 0x7C080200, // 0009 CALL R2 1 - 0x8C080304, // 000A GETMET R2 R1 K4 - 0x88100105, // 000B GETMBR R4 R0 K5 + 0x8C08031F, // 000A GETMET R2 R1 K31 + 0x88100120, // 000B GETMBR R4 R0 K32 0x7C080400, // 000C CALL R2 2 0x4C0C0000, // 000D LDNIL R3 0x200C0403, // 000E NE R3 R2 R3 0x780E0033, // 000F JMPF R3 #0044 - 0x8C0C0506, // 0010 GETMET R3 R2 K6 - 0x58140007, // 0011 LDCONST R5 K7 + 0x8C0C0521, // 0010 GETMET R3 R2 K33 + 0x58140022, // 0011 LDCONST R5 K34 0x4C180000, // 0012 LDNIL R6 0x7C0C0600, // 0013 CALL R3 3 - 0x8C100506, // 0014 GETMET R4 R2 K6 - 0x58180008, // 0015 LDCONST R6 K8 + 0x8C100521, // 0014 GETMET R4 R2 K33 + 0x58180023, // 0015 LDCONST R6 K35 0x4C1C0000, // 0016 LDNIL R7 0x7C100600, // 0017 CALL R4 3 0x4C140000, // 0018 LDNIL R5 0x20140605, // 0019 NE R5 R3 R5 0x78160009, // 001A JMPF R5 #0025 - 0xB8161200, // 001B GETNGBL R5 K9 - 0x8C140B0A, // 001C GETMET R5 R5 K10 + 0xB8164800, // 001B GETNGBL R5 K36 + 0x8C140B25, // 001C GETMET R5 R5 K37 0x5C1C0600, // 001D MOVE R7 R3 - 0x5820000B, // 001E LDCONST R8 K11 + 0x58200005, // 001E LDCONST R8 K5 0x54260167, // 001F LDINT R9 360 - 0x5828000B, // 0020 LDCONST R10 K11 + 0x58280005, // 0020 LDCONST R10 K5 0x542E00FD, // 0021 LDINT R11 254 0x7C140C00, // 0022 CALL R5 6 0x5C0C0A00, // 0023 MOVE R3 R5 0x70020000, // 0024 JMP #0026 - 0x880C010C, // 0025 GETMBR R3 R0 K12 + 0x880C0116, // 0025 GETMBR R3 R0 K22 0x4C140000, // 0026 LDNIL R5 0x20140805, // 0027 NE R5 R4 R5 0x78160009, // 0028 JMPF R5 #0033 - 0xB8161200, // 0029 GETNGBL R5 K9 - 0x8C140B0A, // 002A GETMET R5 R5 K10 + 0xB8164800, // 0029 GETNGBL R5 K36 + 0x8C140B25, // 002A GETMET R5 R5 K37 0x5C1C0800, // 002B MOVE R7 R4 - 0x5820000B, // 002C LDCONST R8 K11 + 0x58200005, // 002C LDCONST R8 K5 0x542600FE, // 002D LDINT R9 255 - 0x5828000B, // 002E LDCONST R10 K11 + 0x58280005, // 002E LDCONST R10 K5 0x542E00FD, // 002F LDINT R11 254 0x7C140C00, // 0030 CALL R5 6 0x5C100A00, // 0031 MOVE R4 R5 0x70020000, // 0032 JMP #0034 - 0x8810010D, // 0033 GETMBR R4 R0 K13 - 0x8814010C, // 0034 GETMBR R5 R0 K12 + 0x88100117, // 0033 GETMBR R4 R0 K23 + 0x88140116, // 0034 GETMBR R5 R0 K22 0x20140605, // 0035 NE R5 R3 R5 0x78160004, // 0036 JMPF R5 #003C - 0x8C14010E, // 0037 GETMET R5 R0 K14 + 0x8C140126, // 0037 GETMET R5 R0 K38 0x541E02FF, // 0038 LDINT R7 768 - 0x5820000B, // 0039 LDCONST R8 K11 + 0x58200005, // 0039 LDCONST R8 K5 0x7C140600, // 003A CALL R5 3 - 0x90021803, // 003B SETMBR R0 K12 R3 - 0x8814010D, // 003C GETMBR R5 R0 K13 + 0x90022C03, // 003B SETMBR R0 K22 R3 + 0x88140117, // 003C GETMBR R5 R0 K23 0x20140805, // 003D NE R5 R4 R5 0x78160004, // 003E JMPF R5 #0044 - 0x8C14010E, // 003F GETMET R5 R0 K14 + 0x8C140126, // 003F GETMET R5 R0 K38 0x541E02FF, // 0040 LDINT R7 768 - 0x5820000F, // 0041 LDCONST R8 K15 + 0x5820000C, // 0041 LDCONST R8 K12 0x7C140600, // 0042 CALL R5 3 - 0x90021A04, // 0043 SETMBR R0 K13 R4 + 0x90022E04, // 0043 SETMBR R0 K23 R4 0x70020004, // 0044 JMP #004A 0x60040003, // 0045 GETGBL R1 G3 0x5C080000, // 0046 MOVE R2 R0 0x7C040200, // 0047 CALL R1 1 - 0x8C040303, // 0048 GETMET R1 R1 K3 + 0x8C04031E, // 0048 GETMET R1 R1 K30 0x7C040200, // 0049 CALL R1 1 0x80000000, // 004A RET 0 }) @@ -426,30 +446,24 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(find), - /* K1 */ be_nested_str_weak(Hue), - /* K2 */ be_nested_str_weak(Sat), - /* K3 */ be_nested_str_weak(set_hue_sat), - /* K4 */ be_nested_str_weak(update_virtual), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0300, // 0001 GETMET R3 R1 K0 - 0x58140001, // 0002 LDCONST R5 K1 + 0x8C0C0321, // 0001 GETMET R3 R1 K33 + 0x5814000B, // 0002 LDCONST R5 K11 0x7C0C0400, // 0003 CALL R3 2 0x7C080200, // 0004 CALL R2 1 0x600C0009, // 0005 GETGBL R3 G9 - 0x8C100300, // 0006 GETMET R4 R1 K0 - 0x58180002, // 0007 LDCONST R6 K2 + 0x8C100321, // 0006 GETMET R4 R1 K33 + 0x58180010, // 0007 LDCONST R6 K16 0x7C100400, // 0008 CALL R4 2 0x7C0C0200, // 0009 CALL R3 1 0x4C100000, // 000A LDNIL R4 @@ -458,14 +472,14 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ 0x4C100000, // 000D LDNIL R4 0x20100604, // 000E NE R4 R3 R4 0x78120003, // 000F JMPF R4 #0014 - 0x8C100103, // 0010 GETMET R4 R0 K3 + 0x8C100107, // 0010 GETMET R4 R0 K7 0x5C180400, // 0011 MOVE R6 R2 0x5C1C0600, // 0012 MOVE R7 R3 0x7C100600, // 0013 CALL R4 3 0x60100003, // 0014 GETGBL R4 G3 0x5C140000, // 0015 MOVE R5 R0 0x7C100200, // 0016 CALL R4 1 - 0x8C100904, // 0017 GETMET R4 R4 K4 + 0x8C100927, // 0017 GETMET R4 R4 K39 0x5C180200, // 0018 MOVE R6 R1 0x7C100400, // 0019 CALL R4 2 0x80000000, // 001A RET 0 @@ -482,42 +496,22 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(BRIDGE), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_nested_str_weak(call_remote_sync), - /* K5 */ be_nested_str_weak(HSBColor1), - /* K6 */ be_nested_str_weak(parse_status), - /* K7 */ be_nested_str_weak(HSBColor2), - /* K8 */ be_nested_str_weak(VIRTUAL), - /* K9 */ be_nested_str_weak(shadow_hue), - /* K10 */ be_nested_str_weak(attribute_updated), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(light), - /* K14 */ be_nested_str_weak(set), - /* K15 */ be_nested_str_weak(hue), - /* K16 */ be_nested_str_weak(sat), - /* K17 */ be_nested_str_weak(light_index), - /* K18 */ be_nested_str_weak(update_shadow), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(set_hue_sat), &be_const_str_solidified, ( &(const binstruction[154]) { /* code */ 0x4C0C0000, // 0000 LDNIL R3 0x200C0203, // 0001 NE R3 R1 R3 0x780E0006, // 0002 JMPF R3 #000A - 0x140C0300, // 0003 LT R3 R1 K0 + 0x140C0305, // 0003 LT R3 R1 K5 0x780E0000, // 0004 JMPF R3 #0006 - 0x58040000, // 0005 LDCONST R1 K0 + 0x58040005, // 0005 LDCONST R1 K5 0x540E00FD, // 0006 LDINT R3 254 0x240C0203, // 0007 GT R3 R1 R3 0x780E0000, // 0008 JMPF R3 #000A @@ -525,94 +519,94 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x4C0C0000, // 000A LDNIL R3 0x200C0403, // 000B NE R3 R2 R3 0x780E0006, // 000C JMPF R3 #0014 - 0x140C0500, // 000D LT R3 R2 K0 + 0x140C0505, // 000D LT R3 R2 K5 0x780E0000, // 000E JMPF R3 #0010 - 0x58080000, // 000F LDCONST R2 K0 + 0x58080005, // 000F LDCONST R2 K5 0x540E00FD, // 0010 LDINT R3 254 0x240C0403, // 0011 GT R3 R2 R3 0x780E0000, // 0012 JMPF R3 #0014 0x540A00FD, // 0013 LDINT R2 254 - 0x880C0101, // 0014 GETMBR R3 R0 K1 + 0x880C011C, // 0014 GETMBR R3 R0 K28 0x780E002C, // 0015 JMPF R3 #0043 0x4C0C0000, // 0016 LDNIL R3 0x200C0203, // 0017 NE R3 R1 R3 0x780E0012, // 0018 JMPF R3 #002C - 0xB80E0400, // 0019 GETNGBL R3 K2 - 0x8C0C0703, // 001A GETMET R3 R3 K3 + 0xB80E4800, // 0019 GETNGBL R3 K36 + 0x8C0C0725, // 001A GETMET R3 R3 K37 0x5C140200, // 001B MOVE R5 R1 - 0x58180000, // 001C LDCONST R6 K0 + 0x58180005, // 001C LDCONST R6 K5 0x541E00FD, // 001D LDINT R7 254 - 0x58200000, // 001E LDCONST R8 K0 + 0x58200005, // 001E LDCONST R8 K5 0x54260167, // 001F LDINT R9 360 0x7C0C0C00, // 0020 CALL R3 6 - 0x8C100104, // 0021 GETMET R4 R0 K4 - 0x58180005, // 0022 LDCONST R6 K5 + 0x8C100128, // 0021 GETMET R4 R0 K40 + 0x58180029, // 0022 LDCONST R6 K41 0x5C1C0600, // 0023 MOVE R7 R3 0x7C100600, // 0024 CALL R4 3 0x4C140000, // 0025 LDNIL R5 0x20140805, // 0026 NE R5 R4 R5 0x78160003, // 0027 JMPF R5 #002C - 0x8C140106, // 0028 GETMET R5 R0 K6 + 0x8C14012A, // 0028 GETMET R5 R0 K42 0x5C1C0800, // 0029 MOVE R7 R4 0x5422000A, // 002A LDINT R8 11 0x7C140600, // 002B CALL R5 3 0x4C0C0000, // 002C LDNIL R3 0x200C0403, // 002D NE R3 R2 R3 0x780E0012, // 002E JMPF R3 #0042 - 0xB80E0400, // 002F GETNGBL R3 K2 - 0x8C0C0703, // 0030 GETMET R3 R3 K3 + 0xB80E4800, // 002F GETNGBL R3 K36 + 0x8C0C0725, // 0030 GETMET R3 R3 K37 0x5C140400, // 0031 MOVE R5 R2 - 0x58180000, // 0032 LDCONST R6 K0 + 0x58180005, // 0032 LDCONST R6 K5 0x541E00FD, // 0033 LDINT R7 254 - 0x58200000, // 0034 LDCONST R8 K0 + 0x58200005, // 0034 LDCONST R8 K5 0x54260063, // 0035 LDINT R9 100 0x7C0C0C00, // 0036 CALL R3 6 - 0x8C100104, // 0037 GETMET R4 R0 K4 - 0x58180007, // 0038 LDCONST R6 K7 + 0x8C100128, // 0037 GETMET R4 R0 K40 + 0x5818002B, // 0038 LDCONST R6 K43 0x5C1C0600, // 0039 MOVE R7 R3 0x7C100600, // 003A CALL R4 3 0x4C140000, // 003B LDNIL R5 0x20140805, // 003C NE R5 R4 R5 0x78160003, // 003D JMPF R5 #0042 - 0x8C140106, // 003E GETMET R5 R0 K6 + 0x8C14012A, // 003E GETMET R5 R0 K42 0x5C1C0800, // 003F MOVE R7 R4 0x5422000A, // 0040 LDINT R8 11 0x7C140600, // 0041 CALL R5 3 0x70020055, // 0042 JMP #0099 - 0x880C0108, // 0043 GETMBR R3 R0 K8 + 0x880C011B, // 0043 GETMBR R3 R0 K27 0x780E0016, // 0044 JMPF R3 #005C 0x4C0C0000, // 0045 LDNIL R3 0x200C0203, // 0046 NE R3 R1 R3 0x780E0007, // 0047 JMPF R3 #0050 - 0x880C0109, // 0048 GETMBR R3 R0 K9 + 0x880C0116, // 0048 GETMBR R3 R0 K22 0x200C0203, // 0049 NE R3 R1 R3 0x780E0004, // 004A JMPF R3 #0050 - 0x8C0C010A, // 004B GETMET R3 R0 K10 + 0x8C0C0126, // 004B GETMET R3 R0 K38 0x541602FF, // 004C LDINT R5 768 - 0x58180000, // 004D LDCONST R6 K0 + 0x58180005, // 004D LDCONST R6 K5 0x7C0C0600, // 004E CALL R3 3 - 0x90021201, // 004F SETMBR R0 K9 R1 + 0x90022C01, // 004F SETMBR R0 K22 R1 0x4C0C0000, // 0050 LDNIL R3 0x200C0403, // 0051 NE R3 R2 R3 0x780E0007, // 0052 JMPF R3 #005B - 0x880C010B, // 0053 GETMBR R3 R0 K11 + 0x880C0117, // 0053 GETMBR R3 R0 K23 0x200C0403, // 0054 NE R3 R2 R3 0x780E0004, // 0055 JMPF R3 #005B - 0x8C0C010A, // 0056 GETMET R3 R0 K10 + 0x8C0C0126, // 0056 GETMET R3 R0 K38 0x541602FF, // 0057 LDINT R5 768 0x5818000C, // 0058 LDCONST R6 K12 0x7C0C0600, // 0059 CALL R3 3 - 0x90021602, // 005A SETMBR R0 K11 R2 + 0x90022E02, // 005A SETMBR R0 K23 R2 0x7002003C, // 005B JMP #0099 0x4C0C0000, // 005C LDNIL R3 0x200C0203, // 005D NE R3 R1 R3 0x780E0008, // 005E JMPF R3 #0068 - 0xB80E0400, // 005F GETNGBL R3 K2 - 0x8C0C0703, // 0060 GETMET R3 R3 K3 + 0xB80E4800, // 005F GETNGBL R3 K36 + 0x8C0C0725, // 0060 GETMET R3 R3 K37 0x5C140200, // 0061 MOVE R5 R1 - 0x58180000, // 0062 LDCONST R6 K0 + 0x58180005, // 0062 LDCONST R6 K5 0x541E00FD, // 0063 LDINT R7 254 - 0x58200000, // 0064 LDCONST R8 K0 + 0x58200005, // 0064 LDCONST R8 K5 0x54260167, // 0065 LDINT R9 360 0x7C0C0C00, // 0066 CALL R3 6 0x70020000, // 0067 JMP #0069 @@ -620,12 +614,12 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x4C100000, // 0069 LDNIL R4 0x20100404, // 006A NE R4 R2 R4 0x78120008, // 006B JMPF R4 #0075 - 0xB8120400, // 006C GETNGBL R4 K2 - 0x8C100903, // 006D GETMET R4 R4 K3 + 0xB8124800, // 006C GETNGBL R4 K36 + 0x8C100925, // 006D GETMET R4 R4 K37 0x5C180400, // 006E MOVE R6 R2 - 0x581C0000, // 006F LDCONST R7 K0 + 0x581C0005, // 006F LDCONST R7 K5 0x542200FD, // 0070 LDINT R8 254 - 0x58240000, // 0071 LDCONST R9 K0 + 0x58240005, // 0071 LDCONST R9 K5 0x542A00FE, // 0072 LDINT R10 255 0x7C100C00, // 0073 CALL R4 6 0x70020000, // 0074 JMP #0076 @@ -636,34 +630,34 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x4C140000, // 0079 LDNIL R5 0x20140805, // 007A NE R5 R4 R5 0x78160008, // 007B JMPF R5 #0085 - 0xB8161A00, // 007C GETNGBL R5 K13 - 0x8C140B0E, // 007D GETMET R5 R5 K14 + 0xB8163A00, // 007C GETNGBL R5 K29 + 0x8C140B18, // 007D GETMET R5 R5 K24 0x601C0013, // 007E GETGBL R7 G19 0x7C1C0000, // 007F CALL R7 0 - 0x981E1E03, // 0080 SETIDX R7 K15 R3 - 0x981E2004, // 0081 SETIDX R7 K16 R4 - 0x88200111, // 0082 GETMBR R8 R0 K17 + 0x981E4403, // 0080 SETIDX R7 K34 R3 + 0x981E4604, // 0081 SETIDX R7 K35 R4 + 0x88200120, // 0082 GETMBR R8 R0 K32 0x7C140600, // 0083 CALL R5 3 0x70020011, // 0084 JMP #0097 0x4C140000, // 0085 LDNIL R5 0x20140605, // 0086 NE R5 R3 R5 0x78160007, // 0087 JMPF R5 #0090 - 0xB8161A00, // 0088 GETNGBL R5 K13 - 0x8C140B0E, // 0089 GETMET R5 R5 K14 + 0xB8163A00, // 0088 GETNGBL R5 K29 + 0x8C140B18, // 0089 GETMET R5 R5 K24 0x601C0013, // 008A GETGBL R7 G19 0x7C1C0000, // 008B CALL R7 0 - 0x981E1E03, // 008C SETIDX R7 K15 R3 - 0x88200111, // 008D GETMBR R8 R0 K17 + 0x981E4403, // 008C SETIDX R7 K34 R3 + 0x88200120, // 008D GETMBR R8 R0 K32 0x7C140600, // 008E CALL R5 3 0x70020006, // 008F JMP #0097 - 0xB8161A00, // 0090 GETNGBL R5 K13 - 0x8C140B0E, // 0091 GETMET R5 R5 K14 + 0xB8163A00, // 0090 GETNGBL R5 K29 + 0x8C140B18, // 0091 GETMET R5 R5 K24 0x601C0013, // 0092 GETGBL R7 G19 0x7C1C0000, // 0093 CALL R7 0 - 0x981E2004, // 0094 SETIDX R7 K16 R4 - 0x88200111, // 0095 GETMBR R8 R0 K17 + 0x981E4604, // 0094 SETIDX R7 K35 R4 + 0x88200120, // 0095 GETMBR R8 R0 K32 0x7C140600, // 0096 CALL R5 3 - 0x8C140112, // 0097 GETMET R5 R0 K18 + 0x8C14011E, // 0097 GETMET R5 R0 K30 0x7C140200, // 0098 CALL R5 1 0x80000000, // 0099 RET 0 }) @@ -679,31 +673,26 @@ be_local_closure(class_Matter_Plugin_Light3_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(shadow_hue), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(shadow_sat), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100900, // 0003 GETMET R4 R4 K0 + 0x8C10092C, // 0003 GETMET R4 R4 K44 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x90020302, // 0008 SETMBR R0 K1 K2 - 0x90020702, // 0009 SETMBR R0 K3 K2 + 0x90022D05, // 0008 SETMBR R0 K22 K5 + 0x90022F05, // 0009 SETMBR R0 K23 K5 0x80000000, // 000A RET 0 }) ) @@ -718,37 +707,28 @@ be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(webserver), - /* K1 */ be_nested_str_weak(web_values_prefix), - /* K2 */ be_nested_str_weak(content_send), - /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K4 */ be_nested_str_weak(web_value_onoff), - /* K5 */ be_nested_str_weak(shadow_onoff), - /* K6 */ be_nested_str_weak(web_value_dimmer), - /* K7 */ be_nested_str_weak(web_value_RGB), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4065A00, // 0000 IMPORT R1 K45 + 0x8C08012E, // 0001 GETMET R2 R0 K46 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C08032F, // 0003 GETMET R2 R1 K47 0x60100018, // 0004 GETGBL R4 G24 - 0x58140003, // 0005 LDCONST R5 K3 - 0x8C180104, // 0006 GETMET R6 R0 K4 - 0x88200105, // 0007 GETMBR R8 R0 K5 + 0x58140030, // 0005 LDCONST R5 K48 + 0x8C180131, // 0006 GETMET R6 R0 K49 + 0x88200132, // 0007 GETMBR R8 R0 K50 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0106, // 0009 GETMET R7 R0 K6 + 0x8C1C0133, // 0009 GETMET R7 R0 K51 0x7C1C0200, // 000A CALL R7 1 - 0x8C200107, // 000B GETMET R8 R0 K7 + 0x8C200134, // 000B GETMET R8 R0 K52 0x7C200200, // 000C CALL R8 1 0x7C100800, // 000D CALL R4 4 0x7C080400, // 000E CALL R2 2 @@ -766,99 +746,85 @@ be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ be_nested_proto( 15, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_status), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(HSBColor), - /* K3 */ be_nested_str_weak(string), - /* K4 */ be_nested_str_weak(split), - /* K5 */ be_nested_str_weak(_X2C), - /* K6 */ be_const_int(0), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_nested_str_weak(shadow_hue), - /* K11 */ be_nested_str_weak(shadow_sat), - /* K12 */ be_nested_str_weak(attribute_updated), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(parse_status), &be_const_str_solidified, ( &(const binstruction[70]) { /* code */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x8C0C072A, // 0003 GETMET R3 R3 K42 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 0x540E000A, // 0007 LDINT R3 11 0x1C0C0403, // 0008 EQ R3 R2 R3 0x780E003A, // 0009 JMPF R3 #0045 - 0x8C0C0301, // 000A GETMET R3 R1 K1 - 0x58140002, // 000B LDCONST R5 K2 + 0x8C0C0321, // 000A GETMET R3 R1 K33 + 0x58140035, // 000B LDCONST R5 K53 0x7C0C0400, // 000C CALL R3 2 0x780E0036, // 000D JMPF R3 #0045 - 0xA4120600, // 000E IMPORT R4 K3 - 0x8C140904, // 000F GETMET R5 R4 K4 + 0xA4126C00, // 000E IMPORT R4 K54 + 0x8C140937, // 000F GETMET R5 R4 K55 0x5C1C0600, // 0010 MOVE R7 R3 - 0x58200005, // 0011 LDCONST R8 K5 + 0x58200038, // 0011 LDCONST R8 K56 0x7C140600, // 0012 CALL R5 3 0x60180009, // 0013 GETGBL R6 G9 - 0x941C0B06, // 0014 GETIDX R7 R5 K6 + 0x941C0B39, // 0014 GETIDX R7 R5 K57 0x7C180200, // 0015 CALL R6 1 0x601C0009, // 0016 GETGBL R7 G9 - 0x94200B07, // 0017 GETIDX R8 R5 K7 + 0x94200B3A, // 0017 GETIDX R8 R5 K58 0x7C1C0200, // 0018 CALL R7 1 0x4C200000, // 0019 LDNIL R8 0x20200C08, // 001A NE R8 R6 R8 0x78220009, // 001B JMPF R8 #0026 - 0xB8221000, // 001C GETNGBL R8 K8 - 0x8C201109, // 001D GETMET R8 R8 K9 + 0xB8224800, // 001C GETNGBL R8 K36 + 0x8C201125, // 001D GETMET R8 R8 K37 0x5C280C00, // 001E MOVE R10 R6 - 0x582C0006, // 001F LDCONST R11 K6 + 0x582C0039, // 001F LDCONST R11 K57 0x54320167, // 0020 LDINT R12 360 - 0x58340006, // 0021 LDCONST R13 K6 + 0x58340039, // 0021 LDCONST R13 K57 0x543A00FD, // 0022 LDINT R14 254 0x7C200C00, // 0023 CALL R8 6 0x5C181000, // 0024 MOVE R6 R8 0x70020000, // 0025 JMP #0027 - 0x8818010A, // 0026 GETMBR R6 R0 K10 + 0x88180116, // 0026 GETMBR R6 R0 K22 0x4C200000, // 0027 LDNIL R8 0x20200E08, // 0028 NE R8 R7 R8 0x78220009, // 0029 JMPF R8 #0034 - 0xB8221000, // 002A GETNGBL R8 K8 - 0x8C201109, // 002B GETMET R8 R8 K9 + 0xB8224800, // 002A GETNGBL R8 K36 + 0x8C201125, // 002B GETMET R8 R8 K37 0x5C280E00, // 002C MOVE R10 R7 - 0x582C0006, // 002D LDCONST R11 K6 + 0x582C0039, // 002D LDCONST R11 K57 0x54320063, // 002E LDINT R12 100 - 0x58340006, // 002F LDCONST R13 K6 + 0x58340039, // 002F LDCONST R13 K57 0x543A00FD, // 0030 LDINT R14 254 0x7C200C00, // 0031 CALL R8 6 0x5C1C1000, // 0032 MOVE R7 R8 0x70020000, // 0033 JMP #0035 - 0x881C010B, // 0034 GETMBR R7 R0 K11 - 0x8820010A, // 0035 GETMBR R8 R0 K10 + 0x881C0117, // 0034 GETMBR R7 R0 K23 + 0x88200116, // 0035 GETMBR R8 R0 K22 0x20200C08, // 0036 NE R8 R6 R8 0x78220004, // 0037 JMPF R8 #003D - 0x8C20010C, // 0038 GETMET R8 R0 K12 + 0x8C200126, // 0038 GETMET R8 R0 K38 0x542A02FF, // 0039 LDINT R10 768 - 0x582C0006, // 003A LDCONST R11 K6 + 0x582C0039, // 003A LDCONST R11 K57 0x7C200600, // 003B CALL R8 3 - 0x90021406, // 003C SETMBR R0 K10 R6 - 0x8820010B, // 003D GETMBR R8 R0 K11 + 0x90022C06, // 003C SETMBR R0 K22 R6 + 0x88200117, // 003D GETMBR R8 R0 K23 0x20200E08, // 003E NE R8 R7 R8 0x78220004, // 003F JMPF R8 #0045 - 0x8C20010C, // 0040 GETMET R8 R0 K12 + 0x8C200126, // 0040 GETMET R8 R0 K38 0x542A02FF, // 0041 LDINT R10 768 - 0x582C0007, // 0042 LDCONST R11 K7 + 0x582C003A, // 0042 LDCONST R11 K58 0x7C200600, // 0043 CALL R8 3 - 0x90021607, // 0044 SETMBR R0 K11 R7 + 0x90022E07, // 0044 SETMBR R0 K23 R7 0x80000000, // 0045 RET 0 }) ) @@ -873,77 +839,61 @@ be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ be_nested_proto( 12, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(shadow_hue), - /* K1 */ be_nested_str_weak(shadow_sat), - /* K2 */ be_nested_str_weak(light_state), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(set_bri), - /* K5 */ be_nested_str_weak(set_huesat), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_uint), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), - /* K10 */ be_nested_str_weak(r), - /* K11 */ be_nested_str_weak(g), - /* K12 */ be_nested_str_weak(b), - /* K13 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), - /* K14 */ be_nested_str_weak(), - }), + &be_ktab_class_Matter_Plugin_Light3, /* shared constants */ be_str_weak(web_value_RGB), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040116, // 0000 GETMBR R1 R0 K22 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060027, // 0003 JMPF R1 #002C - 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x88040117, // 0004 GETMBR R1 R0 K23 0x4C080000, // 0005 LDNIL R2 0x20040202, // 0006 NE R1 R1 R2 0x78060023, // 0007 JMPF R1 #002C - 0xB8060400, // 0008 GETNGBL R1 K2 - 0x58080003, // 0009 LDCONST R2 K3 + 0xB8067600, // 0008 GETNGBL R1 K59 + 0x5808000E, // 0009 LDCONST R2 K14 0x7C040200, // 000A CALL R1 1 - 0x8C080304, // 000B GETMET R2 R1 K4 + 0x8C08033C, // 000B GETMET R2 R1 K60 0x541200FE, // 000C LDINT R4 255 0x7C080400, // 000D CALL R2 2 - 0x8C080305, // 000E GETMET R2 R1 K5 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x8C100907, // 0010 GETMET R4 R4 K7 - 0x88180100, // 0011 GETMBR R6 R0 K0 - 0x581C0008, // 0012 LDCONST R7 K8 + 0x8C08033D, // 000E GETMET R2 R1 K61 + 0xB8124800, // 000F GETNGBL R4 K36 + 0x8C100925, // 0010 GETMET R4 R4 K37 + 0x88180116, // 0011 GETMBR R6 R0 K22 + 0x581C0005, // 0012 LDCONST R7 K5 0x542200FD, // 0013 LDINT R8 254 - 0x58240008, // 0014 LDCONST R9 K8 + 0x58240005, // 0014 LDCONST R9 K5 0x542A0167, // 0015 LDINT R10 360 0x7C100C00, // 0016 CALL R4 6 - 0xB8160C00, // 0017 GETNGBL R5 K6 - 0x8C140B07, // 0018 GETMET R5 R5 K7 - 0x881C0101, // 0019 GETMBR R7 R0 K1 - 0x58200008, // 001A LDCONST R8 K8 + 0xB8164800, // 0017 GETNGBL R5 K36 + 0x8C140B25, // 0018 GETMET R5 R5 K37 + 0x881C0117, // 0019 GETMBR R7 R0 K23 + 0x58200005, // 001A LDCONST R8 K5 0x542600FD, // 001B LDINT R9 254 - 0x58280008, // 001C LDCONST R10 K8 + 0x58280005, // 001C LDCONST R10 K5 0x542E00FE, // 001D LDINT R11 255 0x7C140C00, // 001E CALL R5 6 0x7C080600, // 001F CALL R2 3 0x60080018, // 0020 GETGBL R2 G24 - 0x580C0009, // 0021 LDCONST R3 K9 - 0x8810030A, // 0022 GETMBR R4 R1 K10 - 0x8814030B, // 0023 GETMBR R5 R1 K11 - 0x8818030C, // 0024 GETMBR R6 R1 K12 + 0x580C003E, // 0021 LDCONST R3 K62 + 0x8810033F, // 0022 GETMBR R4 R1 K63 + 0x88140340, // 0023 GETMBR R5 R1 K64 + 0x88180341, // 0024 GETMBR R6 R1 K65 0x7C080800, // 0025 CALL R2 4 0x600C0018, // 0026 GETGBL R3 G24 - 0x5810000D, // 0027 LDCONST R4 K13 + 0x58100042, // 0027 LDCONST R4 K66 0x5C140400, // 0028 MOVE R5 R2 0x5C180400, // 0029 MOVE R6 R2 0x7C0C0600, // 002A CALL R3 3 0x80040600, // 002B RET 1 R3 - 0x80061C00, // 002C RET 1 K14 + 0x80068600, // 002C RET 1 K67 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h index e0aa4d9c7..43f7b7455 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h @@ -3,6 +3,29 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Profiler' ktab size: 19, total: 43 (saved 192 bytes) +static const bvalue be_ktab_class_Matter_Profiler[19] = { + /* K0 */ be_nested_str_weak(active), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(PREALLOCATED), + /* K3 */ be_nested_str_weak(millis), + /* K4 */ be_nested_str_weak(names), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(len), + /* K7 */ be_nested_str_weak(tasmota), + /* K8 */ be_nested_str_weak(gc), + /* K9 */ be_nested_str_weak(log), + /* K10 */ be_nested_str_weak(start), + /* K11 */ be_nested_str_weak(resize), + /* K12 */ be_nested_str_weak(allocs), + /* K13 */ be_nested_str_weak(reallocs), + /* K14 */ be_nested_str_weak(debug), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E), + /* K17 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), + /* K18 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), +}; + extern const bclass be_class_Matter_Profiler; @@ -13,25 +36,13 @@ be_local_closure(class_Matter_Profiler_start, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(active), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(PREALLOCATED), - /* K3 */ be_nested_str_weak(millis), - /* K4 */ be_nested_str_weak(names), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(len), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(gc), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(start), - }), + &be_ktab_class_Matter_Profiler, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ @@ -71,23 +82,13 @@ be_local_closure(class_Matter_Profiler_init, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(active), - /* K1 */ be_nested_str_weak(millis), - /* K2 */ be_nested_str_weak(resize), - /* K3 */ be_nested_str_weak(PREALLOCATED), - /* K4 */ be_nested_str_weak(names), - /* K5 */ be_nested_str_weak(allocs), - /* K6 */ be_nested_str_weak(reallocs), - /* K7 */ be_nested_str_weak(len), - /* K8 */ be_const_int(0), - }), + &be_ktab_class_Matter_Profiler, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ @@ -95,33 +96,33 @@ be_local_closure(class_Matter_Profiler_init, /* name */ 0x90020001, // 0001 SETMBR R0 K0 R1 0x60040012, // 0002 GETGBL R1 G18 0x7C040000, // 0003 CALL R1 0 - 0x90020201, // 0004 SETMBR R0 K1 R1 - 0x88040101, // 0005 GETMBR R1 R0 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x880C0103, // 0007 GETMBR R3 R0 K3 + 0x90020601, // 0004 SETMBR R0 K3 R1 + 0x88040103, // 0005 GETMBR R1 R0 K3 + 0x8C04030B, // 0006 GETMET R1 R1 K11 + 0x880C0102, // 0007 GETMBR R3 R0 K2 0x7C040400, // 0008 CALL R1 2 0x60040012, // 0009 GETGBL R1 G18 0x7C040000, // 000A CALL R1 0 0x90020801, // 000B SETMBR R0 K4 R1 0x88040104, // 000C GETMBR R1 R0 K4 - 0x8C040302, // 000D GETMET R1 R1 K2 - 0x880C0103, // 000E GETMBR R3 R0 K3 + 0x8C04030B, // 000D GETMET R1 R1 K11 + 0x880C0102, // 000E GETMBR R3 R0 K2 0x7C040400, // 000F CALL R1 2 0x60040012, // 0010 GETGBL R1 G18 0x7C040000, // 0011 CALL R1 0 - 0x90020A01, // 0012 SETMBR R0 K5 R1 - 0x88040105, // 0013 GETMBR R1 R0 K5 - 0x8C040302, // 0014 GETMET R1 R1 K2 - 0x880C0103, // 0015 GETMBR R3 R0 K3 + 0x90021801, // 0012 SETMBR R0 K12 R1 + 0x8804010C, // 0013 GETMBR R1 R0 K12 + 0x8C04030B, // 0014 GETMET R1 R1 K11 + 0x880C0102, // 0015 GETMBR R3 R0 K2 0x7C040400, // 0016 CALL R1 2 0x60040012, // 0017 GETGBL R1 G18 0x7C040000, // 0018 CALL R1 0 - 0x90020C01, // 0019 SETMBR R0 K6 R1 - 0x88040106, // 001A GETMBR R1 R0 K6 - 0x8C040302, // 001B GETMET R1 R1 K2 - 0x880C0103, // 001C GETMBR R3 R0 K3 + 0x90021A01, // 0019 SETMBR R0 K13 R1 + 0x8804010D, // 001A GETMBR R1 R0 K13 + 0x8C04030B, // 001B GETMET R1 R1 K11 + 0x880C0102, // 001C GETMBR R3 R0 K2 0x7C040400, // 001D CALL R1 2 - 0x90020F08, // 001E SETMBR R0 K7 K8 + 0x90020D01, // 001E SETMBR R0 K6 K1 0x80000000, // 001F RET 0 }) ) @@ -136,15 +137,13 @@ be_local_closure(class_Matter_Profiler_set_active, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(active), - }), + &be_ktab_class_Matter_Profiler, /* shared constants */ be_str_weak(set_active), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -166,54 +165,43 @@ be_local_closure(class_Matter_Profiler_log, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(active), - /* K1 */ be_nested_str_weak(debug), - /* K2 */ be_nested_str_weak(len), - /* K3 */ be_nested_str_weak(PREALLOCATED), - /* K4 */ be_nested_str_weak(millis), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(names), - /* K7 */ be_nested_str_weak(allocs), - /* K8 */ be_nested_str_weak(reallocs), - /* K9 */ be_const_int(1), - }), + &be_ktab_class_Matter_Profiler, /* shared constants */ be_str_weak(log), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 - 0xA40A0200, // 0003 IMPORT R2 K1 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x88100103, // 0005 GETMBR R4 R0 K3 + 0xA40A1C00, // 0003 IMPORT R2 K14 + 0x880C0106, // 0004 GETMBR R3 R0 K6 + 0x88100102, // 0005 GETMBR R4 R0 K2 0x28100604, // 0006 GE R4 R3 R4 0x78120000, // 0007 JMPF R4 #0009 0x80000800, // 0008 RET 0 - 0x88100104, // 0009 GETMBR R4 R0 K4 - 0xB8160A00, // 000A GETNGBL R5 K5 - 0x8C140B04, // 000B GETMET R5 R5 K4 + 0x88100103, // 0009 GETMBR R4 R0 K3 + 0xB8160E00, // 000A GETNGBL R5 K7 + 0x8C140B03, // 000B GETMET R5 R5 K3 0x7C140200, // 000C CALL R5 1 0x98100605, // 000D SETIDX R4 R3 R5 - 0x88100106, // 000E GETMBR R4 R0 K6 + 0x88100104, // 000E GETMBR R4 R0 K4 0x98100601, // 000F SETIDX R4 R3 R1 - 0x88100107, // 0010 GETMBR R4 R0 K7 - 0x8C140507, // 0011 GETMET R5 R2 K7 + 0x8810010C, // 0010 GETMBR R4 R0 K12 + 0x8C14050C, // 0011 GETMET R5 R2 K12 0x7C140200, // 0012 CALL R5 1 0x98100605, // 0013 SETIDX R4 R3 R5 - 0x88100108, // 0014 GETMBR R4 R0 K8 - 0x8C140508, // 0015 GETMET R5 R2 K8 + 0x8810010D, // 0014 GETMBR R4 R0 K13 + 0x8C14050D, // 0015 GETMET R5 R2 K13 0x7C140200, // 0016 CALL R5 1 0x98100605, // 0017 SETIDX R4 R3 R5 - 0x88100102, // 0018 GETMBR R4 R0 K2 - 0x00100909, // 0019 ADD R4 R4 K9 - 0x90020404, // 001A SETMBR R0 K2 R4 + 0x88100106, // 0018 GETMBR R4 R0 K6 + 0x0010090F, // 0019 ADD R4 R4 K15 + 0x90020C04, // 001A SETMBR R0 K6 R4 0x80000000, // 001B RET 0 }) ) @@ -228,64 +216,51 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ be_nested_proto( 12, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(active), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E), - /* K3 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), - /* K4 */ be_nested_str_weak(millis), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(allocs), - /* K7 */ be_nested_str_weak(reallocs), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(len), - /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), - /* K11 */ be_nested_str_weak(names), - }), + &be_ktab_class_Matter_Profiler, /* shared constants */ be_str_weak(dump), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x58100002, // 0004 LDCONST R4 K2 + 0x8C080109, // 0003 GETMET R2 R0 K9 + 0x58100010, // 0004 LDCONST R4 K16 0x7C080400, // 0005 CALL R2 2 - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x580C0003, // 0007 LDCONST R3 K3 + 0xB80A1200, // 0006 GETNGBL R2 K9 + 0x580C0011, // 0007 LDCONST R3 K17 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 - 0x88080104, // 000A GETMBR R2 R0 K4 - 0x94080505, // 000B GETIDX R2 R2 K5 - 0x880C0106, // 000C GETMBR R3 R0 K6 - 0x940C0705, // 000D GETIDX R3 R3 K5 - 0x88100107, // 000E GETMBR R4 R0 K7 - 0x94100905, // 000F GETIDX R4 R4 K5 - 0x58140008, // 0010 LDCONST R5 K8 - 0x88180109, // 0011 GETMBR R6 R0 K9 + 0x88080103, // 000A GETMBR R2 R0 K3 + 0x94080501, // 000B GETIDX R2 R2 K1 + 0x880C010C, // 000C GETMBR R3 R0 K12 + 0x940C0701, // 000D GETIDX R3 R3 K1 + 0x8810010D, // 000E GETMBR R4 R0 K13 + 0x94100901, // 000F GETIDX R4 R4 K1 + 0x5814000F, // 0010 LDCONST R5 K15 + 0x88180106, // 0011 GETMBR R6 R0 K6 0x14180A06, // 0012 LT R6 R5 R6 0x781A000F, // 0013 JMPF R6 #0024 - 0xB81A0200, // 0014 GETNGBL R6 K1 + 0xB81A1200, // 0014 GETNGBL R6 K9 0x601C0018, // 0015 GETGBL R7 G24 - 0x5820000A, // 0016 LDCONST R8 K10 - 0x88240104, // 0017 GETMBR R9 R0 K4 + 0x58200012, // 0016 LDCONST R8 K18 + 0x88240103, // 0017 GETMBR R9 R0 K3 0x94241205, // 0018 GETIDX R9 R9 R5 0x04241202, // 0019 SUB R9 R9 R2 - 0x88280106, // 001A GETMBR R10 R0 K6 + 0x8828010C, // 001A GETMBR R10 R0 K12 0x94281405, // 001B GETIDX R10 R10 R5 0x04281403, // 001C SUB R10 R10 R3 - 0x882C010B, // 001D GETMBR R11 R0 K11 + 0x882C0104, // 001D GETMBR R11 R0 K4 0x942C1605, // 001E GETIDX R11 R11 R5 0x7C1C0800, // 001F CALL R7 4 0x5C200200, // 0020 MOVE R8 R1 0x7C180400, // 0021 CALL R6 2 - 0x00140B08, // 0022 ADD R5 R5 K8 + 0x00140B0F, // 0022 ADD R5 R5 K15 0x7001FFEC, // 0023 JMP #0011 0x80000000, // 0024 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index c3eef9e5a..815d4de72 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -3,6 +3,122 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Matter_Session; +// compact class 'Matter_Session' ktab size: 111, total: 196 (saved 680 bytes) +static const bvalue be_ktab_class_Matter_Session[111] = { + /* K0 */ be_nested_str_weak(_fabric), + /* K1 */ be_nested_str_weak(device_id), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29), + /* K4 */ be_nested_str_weak(local_session_id), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(set_mode), + /* K7 */ be_nested_str_weak(_CASE), + /* K8 */ be_nested_str_weak(mode), + /* K9 */ be_nested_str_weak(add_session), + /* K10 */ be_nested_str_weak(noc), + /* K11 */ be_nested_str_weak(crypto), + /* K12 */ be_nested_str_weak(_store), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(initiator_session_id), + /* K15 */ be_nested_str_weak(_counter_snd_impl), + /* K16 */ be_nested_str_weak(matter), + /* K17 */ be_nested_str_weak(Counter), + /* K18 */ be_nested_str_weak(_counter_rcv_impl), + /* K19 */ be_nested_str_weak(counter_rcv), + /* K20 */ be_nested_str_weak(counter_snd), + /* K21 */ be_nested_str_weak(next), + /* K22 */ be_nested_str_weak(_COUNTER_SND_INCR), + /* K23 */ be_nested_str_weak(_counter_insecure_rcv), + /* K24 */ be_nested_str_weak(_counter_insecure_snd), + /* K25 */ be_nested_str_weak(_breadcrumb), + /* K26 */ be_nested_str_weak(_exchange_id), + /* K27 */ be_nested_str_weak(random), + /* K28 */ be_const_int(2), + /* K29 */ be_nested_str_weak(get), + /* K30 */ be_nested_str_weak(update), + /* K31 */ be_nested_str_weak(admin_vendor), + /* K32 */ be_nested_str_weak(i2rkey), + /* K33 */ be_nested_str_weak(validate), + /* K34 */ be_nested_str_weak(val), + /* K35 */ be_nested_str_weak(root_ca_certificate), + /* K36 */ be_nested_str_weak(fabric_index), + /* K37 */ be_nested_str_weak(r2ikey), + /* K38 */ be_nested_str_weak(is_greater), + /* K39 */ be_nested_str_weak(does_persist), + /* K40 */ be_nested_str_weak(save), + /* K41 */ be_nested_str_weak(_temp_root_ca_certificate), + /* K42 */ be_nested_str_weak(TLV), + /* K43 */ be_nested_str_weak(parse), + /* K44 */ be_nested_str_weak(findsubval), + /* K45 */ be_nested_str_weak(fabric_id), + /* K46 */ be_nested_str_weak(_PASE), + /* K47 */ be_nested_str_weak(fabric_label), + /* K48 */ be_nested_str_weak(last_used), + /* K49 */ be_nested_str_weak(tasmota), + /* K50 */ be_nested_str_weak(rtc_utc), + /* K51 */ be_nested_str_weak(icac), + /* K52 */ be_nested_str_weak(string), + /* K53 */ be_nested_str_weak(get_ca_pub), + /* K54 */ be_nested_str_weak(get_pk), + /* K55 */ be_nested_str_weak(_temp_pk), + /* K56 */ be_nested_str_weak(json), + /* K57 */ be_nested_str_weak(introspect), + /* K58 */ be_nested_str_weak(persist_pre), + /* K59 */ be_nested_str_weak(members), + /* K60 */ be_nested_str_weak(function), + /* K61 */ be_const_int(0), + /* K62 */ be_nested_str_weak(_), + /* K63 */ be_nested_str_weak(push), + /* K64 */ be_nested_str_weak(stop_iteration), + /* K65 */ be_nested_str_weak(sort), + /* K66 */ be_nested_str_weak(_X24_X24), + /* K67 */ be_nested_str_weak(tob64), + /* K68 */ be_nested_str_weak(instance), + /* K69 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K70 */ be_nested_str_weak(dump), + /* K71 */ be_nested_str_weak(persist_post), + /* K72 */ be_nested_str_weak(_X7B), + /* K73 */ be_nested_str_weak(concat), + /* K74 */ be_nested_str_weak(_X2C), + /* K75 */ be_nested_str_weak(_X7D), + /* K76 */ be_nested_str_weak(__future_local_session_id), + /* K77 */ be_nested_str_weak(__future_initiator_session_id), + /* K78 */ be_nested_str_weak(reset), + /* K79 */ be_nested_str_weak(_i2r_privacy), + /* K80 */ be_nested_str_weak(attestation_challenge), + /* K81 */ be_const_int(1), + /* K82 */ be_nested_str_weak(HKDF_SHA256), + /* K83 */ be_nested_str_weak(derive), + /* K84 */ be_nested_str_weak(get_i2r), + /* K85 */ be_nested_str_weak(fromstring), + /* K86 */ be_nested_str_weak(PrivacyKey), + /* K87 */ be_const_class(be_class_Matter_Session), + /* K88 */ be_nested_str_weak(Session), + /* K89 */ be_nested_str_weak(keys), + /* K90 */ be_nested_str_weak(find), + /* K91 */ be_nested_str_weak(0x), + /* K92 */ be_nested_str_weak(set), + /* K93 */ be_nested_str_weak(fromhex), + /* K94 */ be_const_int(2), + /* K95 */ be_const_int(2147483647), + /* K96 */ be_nested_str_weak(fromb64), + /* K97 */ be_nested_str_weak(hydrate_post), + /* K98 */ be_nested_str_weak(save_fabrics), + /* K99 */ be_nested_str_weak(admin_subject), + /* K100 */ be_nested_str_weak(ipk_epoch_key), + /* K101 */ be_nested_str_weak(fabric_compressed), + /* K102 */ be_nested_str_weak(created), + /* K103 */ be_nested_str_weak(EC_P256), + /* K104 */ be_nested_str_weak(public_key), + /* K105 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200), + /* K106 */ be_nested_str_weak(A000), + /* K107 */ be_nested_str_weak(300C06082A8648CE3D0403020500), + /* K108 */ be_nested_str_weak(ecdsa_sign_sha256_asn1), + /* K109 */ be_nested_str_weak(add), + /* K110 */ be_nested_str_weak(get_ipk_group_key), +}; + extern const bclass be_class_Matter_Session; @@ -13,16 +129,13 @@ be_local_closure(class_Matter_Session_get_device_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(device_id), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_device_id), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -46,27 +159,22 @@ be_local_closure(class_Matter_Session_before_remove, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(log), - /* K1 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29), - /* K2 */ be_nested_str_weak(local_session_id), - /* K3 */ be_const_int(3), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(before_remove), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 + 0xB8060400, // 0000 GETNGBL R1 K2 0x60080018, // 0001 GETGBL R2 G24 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x580C0003, // 0002 LDCONST R3 K3 + 0x88100104, // 0003 GETMBR R4 R0 K4 0x7C080400, // 0004 CALL R2 2 - 0x580C0003, // 0005 LDCONST R3 K3 + 0x580C0005, // 0005 LDCONST R3 K5 0x7C040400, // 0006 CALL R1 2 0x80000000, // 0007 RET 0 }) @@ -82,21 +190,18 @@ be_local_closure(class_Matter_Session_set_mode_CASE, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_mode), - /* K1 */ be_nested_str_weak(_CASE), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(set_mode_CASE), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x880C0107, // 0001 GETMBR R3 R0 K7 0x7C040400, // 0002 CALL R1 2 0x80000000, // 0003 RET 0 }) @@ -112,21 +217,18 @@ be_local_closure(class_Matter_Session_is_CASE, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - /* K1 */ be_nested_str_weak(_CASE), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(is_CASE), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x88080107, // 0001 GETMBR R2 R0 K7 0x1C040202, // 0002 EQ R1 R1 R2 0x80040200, // 0003 RET 1 R1 }) @@ -142,21 +244,18 @@ be_local_closure(class_Matter_Session_persist_to_fabric, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(add_session), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(persist_to_fabric), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040309, // 0001 GETMET R1 R1 K9 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 0x80000000, // 0004 RET 0 @@ -173,21 +272,18 @@ be_local_closure(class_Matter_Session_get_noc, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(noc), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_noc), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8804030A, // 0001 GETMBR R1 R1 K10 0x80040200, // 0002 RET 1 R1 }) ) @@ -202,79 +298,55 @@ be_local_closure(class_Matter_Session_init, /* name */ be_nested_proto( 10, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(_store), - /* K2 */ be_nested_str_weak(mode), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(local_session_id), - /* K5 */ be_nested_str_weak(initiator_session_id), - /* K6 */ be_nested_str_weak(_counter_snd_impl), - /* K7 */ be_nested_str_weak(matter), - /* K8 */ be_nested_str_weak(Counter), - /* K9 */ be_nested_str_weak(_counter_rcv_impl), - /* K10 */ be_nested_str_weak(counter_rcv), - /* K11 */ be_nested_str_weak(counter_snd), - /* K12 */ be_nested_str_weak(next), - /* K13 */ be_nested_str_weak(_COUNTER_SND_INCR), - /* K14 */ be_nested_str_weak(_counter_insecure_rcv), - /* K15 */ be_nested_str_weak(_counter_insecure_snd), - /* K16 */ be_nested_str_weak(_breadcrumb), - /* K17 */ be_nested_str_weak(_exchange_id), - /* K18 */ be_nested_str_weak(random), - /* K19 */ be_const_int(2), - /* K20 */ be_nested_str_weak(get), - /* K21 */ be_nested_str_weak(_fabric), - /* K22 */ be_nested_str_weak(update), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x90020503, // 0002 SETMBR R0 K2 K3 + 0xA4161600, // 0000 IMPORT R5 K11 + 0x90021801, // 0001 SETMBR R0 K12 R1 + 0x9002110D, // 0002 SETMBR R0 K8 K13 0x90020802, // 0003 SETMBR R0 K4 R2 - 0x90020A03, // 0004 SETMBR R0 K5 R3 - 0xB81A0E00, // 0005 GETNGBL R6 K7 - 0x8C180D08, // 0006 GETMET R6 R6 K8 + 0x90021C03, // 0004 SETMBR R0 K14 R3 + 0xB81A2000, // 0005 GETNGBL R6 K16 + 0x8C180D11, // 0006 GETMET R6 R6 K17 0x7C180200, // 0007 CALL R6 1 - 0x90020C06, // 0008 SETMBR R0 K6 R6 - 0xB81A0E00, // 0009 GETNGBL R6 K7 - 0x8C180D08, // 000A GETMET R6 R6 K8 + 0x90021E06, // 0008 SETMBR R0 K15 R6 + 0xB81A2000, // 0009 GETNGBL R6 K16 + 0x8C180D11, // 000A GETMET R6 R6 K17 0x7C180200, // 000B CALL R6 1 - 0x90021206, // 000C SETMBR R0 K9 R6 - 0x90021503, // 000D SETMBR R0 K10 K3 - 0x88180106, // 000E GETMBR R6 R0 K6 - 0x8C180D0C, // 000F GETMET R6 R6 K12 + 0x90022406, // 000C SETMBR R0 K18 R6 + 0x9002270D, // 000D SETMBR R0 K19 K13 + 0x8818010F, // 000E GETMBR R6 R0 K15 + 0x8C180D15, // 000F GETMET R6 R6 K21 0x7C180200, // 0010 CALL R6 1 - 0x881C010D, // 0011 GETMBR R7 R0 K13 + 0x881C0116, // 0011 GETMBR R7 R0 K22 0x00180C07, // 0012 ADD R6 R6 R7 - 0x90021606, // 0013 SETMBR R0 K11 R6 - 0xB81A0E00, // 0014 GETNGBL R6 K7 - 0x8C180D08, // 0015 GETMET R6 R6 K8 + 0x90022806, // 0013 SETMBR R0 K20 R6 + 0xB81A2000, // 0014 GETNGBL R6 K16 + 0x8C180D11, // 0015 GETMET R6 R6 K17 0x7C180200, // 0016 CALL R6 1 - 0x90021C06, // 0017 SETMBR R0 K14 R6 - 0xB81A0E00, // 0018 GETNGBL R6 K7 - 0x8C180D08, // 0019 GETMET R6 R6 K8 + 0x90022E06, // 0017 SETMBR R0 K23 R6 + 0xB81A2000, // 0018 GETNGBL R6 K16 + 0x8C180D11, // 0019 GETMET R6 R6 K17 0x7C180200, // 001A CALL R6 1 - 0x90021E06, // 001B SETMBR R0 K15 R6 - 0x90022103, // 001C SETMBR R0 K16 K3 - 0x8C180B12, // 001D GETMET R6 R5 K18 - 0x58200013, // 001E LDCONST R8 K19 + 0x90023006, // 001B SETMBR R0 K24 R6 + 0x9002330D, // 001C SETMBR R0 K25 K13 + 0x8C180B1B, // 001D GETMET R6 R5 K27 + 0x5820001C, // 001E LDCONST R8 K28 0x7C180400, // 001F CALL R6 2 - 0x8C180D14, // 0020 GETMET R6 R6 K20 - 0x58200003, // 0021 LDCONST R8 K3 - 0x58240013, // 0022 LDCONST R9 K19 + 0x8C180D1D, // 0020 GETMET R6 R6 K29 + 0x5820000D, // 0021 LDCONST R8 K13 + 0x5824001C, // 0022 LDCONST R9 K28 0x7C180600, // 0023 CALL R6 3 - 0x90022206, // 0024 SETMBR R0 K17 R6 - 0x90022A04, // 0025 SETMBR R0 K21 R4 - 0x8C180116, // 0026 GETMET R6 R0 K22 + 0x90023406, // 0024 SETMBR R0 K26 R6 + 0x90020004, // 0025 SETMBR R0 K0 R4 + 0x8C18011E, // 0026 GETMET R6 R0 K30 0x7C180200, // 0027 CALL R6 1 0x80000000, // 0028 RET 0 }) @@ -290,23 +362,20 @@ be_local_closure(class_Matter_Session_get_admin_vendor, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(admin_vendor), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_admin_vendor), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x8804031F, // 0003 GETMBR R1 R1 K31 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -323,19 +392,17 @@ be_local_closure(class_Matter_Session_get_i2r, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(i2rkey), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_i2r), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040120, // 0000 GETMBR R1 R0 K32 0x80040200, // 0001 RET 1 R1 }) ) @@ -350,31 +417,26 @@ be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_rcv_impl), - /* K1 */ be_nested_str_weak(validate), - /* K2 */ be_nested_str_weak(counter_rcv), - /* K3 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(counter_rcv_validate), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x880C0112, // 0000 GETMBR R3 R0 K18 + 0x8C0C0721, // 0001 GETMET R3 R3 K33 0x5C140200, // 0002 MOVE R5 R1 0x5C180400, // 0003 MOVE R6 R2 0x7C0C0600, // 0004 CALL R3 3 0x780E0003, // 0005 JMPF R3 #000A - 0x88100100, // 0006 GETMBR R4 R0 K0 - 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x88100112, // 0006 GETMBR R4 R0 K18 + 0x8C100922, // 0007 GETMET R4 R4 K34 0x7C100200, // 0008 CALL R4 1 - 0x90020404, // 0009 SETMBR R0 K2 R4 + 0x90022604, // 0009 SETMBR R0 K19 R4 0x80040600, // 000A RET 1 R3 }) ) @@ -389,21 +451,18 @@ be_local_closure(class_Matter_Session_get_ca, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(root_ca_certificate), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_ca), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x88040323, // 0001 GETMBR R1 R1 K35 0x80040200, // 0002 RET 1 R1 }) ) @@ -418,23 +477,20 @@ be_local_closure(class_Matter_Session_get_fabric_index, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_index), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_fabric_index), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x88040324, // 0003 GETMBR R1 R1 K36 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -451,19 +507,17 @@ be_local_closure(class_Matter_Session_get_r2i, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(r2ikey), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_r2i), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040125, // 0000 GETMBR R1 R0 K37 0x80040200, // 0001 RET 1 R1 }) ) @@ -478,43 +532,33 @@ be_local_closure(class_Matter_Session_counter_snd_next, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_snd_impl), - /* K1 */ be_nested_str_weak(next), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Counter), - /* K4 */ be_nested_str_weak(is_greater), - /* K5 */ be_nested_str_weak(counter_snd), - /* K6 */ be_nested_str_weak(_COUNTER_SND_INCR), - /* K7 */ be_nested_str_weak(does_persist), - /* K8 */ be_nested_str_weak(save), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(counter_snd_next), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8804010F, // 0000 GETMBR R1 R0 K15 + 0x8C040315, // 0001 GETMET R1 R1 K21 0x7C040200, // 0002 CALL R1 1 - 0xB80A0400, // 0003 GETNGBL R2 K2 - 0x88080503, // 0004 GETMBR R2 R2 K3 - 0x8C080504, // 0005 GETMET R2 R2 K4 + 0xB80A2000, // 0003 GETNGBL R2 K16 + 0x88080511, // 0004 GETMBR R2 R2 K17 + 0x8C080526, // 0005 GETMET R2 R2 K38 0x5C100200, // 0006 MOVE R4 R1 - 0x88140105, // 0007 GETMBR R5 R0 K5 + 0x88140114, // 0007 GETMBR R5 R0 K20 0x7C080600, // 0008 CALL R2 3 0x780A0007, // 0009 JMPF R2 #0012 - 0x88080106, // 000A GETMBR R2 R0 K6 + 0x88080116, // 000A GETMBR R2 R0 K22 0x00080202, // 000B ADD R2 R1 R2 - 0x90020A02, // 000C SETMBR R0 K5 R2 - 0x8C080107, // 000D GETMET R2 R0 K7 + 0x90022802, // 000C SETMBR R0 K20 R2 + 0x8C080127, // 000D GETMET R2 R0 K39 0x7C080200, // 000E CALL R2 1 0x780A0001, // 000F JMPF R2 #0012 - 0x8C080108, // 0010 GETMET R2 R0 K8 + 0x8C080128, // 0010 GETMET R2 R0 K40 0x7C080200, // 0011 CALL R2 1 0x80040200, // 0012 RET 1 R1 }) @@ -530,30 +574,24 @@ be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(parse), - /* K4 */ be_nested_str_weak(findsubval), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_temp_ca_pub), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040129, // 0000 GETMBR R1 R0 K41 0x78060008, // 0001 JMPF R1 #000B - 0xB80A0200, // 0002 GETNGBL R2 K1 - 0x88080502, // 0003 GETMBR R2 R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 + 0xB80A2000, // 0002 GETNGBL R2 K16 + 0x8808052A, // 0003 GETMBR R2 R2 K42 + 0x8C08052B, // 0004 GETMET R2 R2 K43 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 - 0x8C0C0504, // 0007 GETMET R3 R2 K4 + 0x8C0C052C, // 0007 GETMET R3 R2 K44 0x54160008, // 0008 LDINT R5 9 0x7C0C0400, // 0009 CALL R3 2 0x80040600, // 000A RET 1 R3 @@ -571,19 +609,17 @@ be_local_closure(class_Matter_Session_get_temp_ca, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_temp_ca), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040129, // 0000 GETMBR R1 R0 K41 0x80040200, // 0001 RET 1 R1 }) ) @@ -598,21 +634,18 @@ be_local_closure(class_Matter_Session_get_fabric_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_id), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_fabric_id), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8804032D, // 0001 GETMBR R1 R1 K45 0x80040200, // 0002 RET 1 R1 }) ) @@ -627,21 +660,18 @@ be_local_closure(class_Matter_Session_set_mode_PASE, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_mode), - /* K1 */ be_nested_str_weak(_PASE), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(set_mode_PASE), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x880C012E, // 0001 GETMBR R3 R0 K46 0x7C040400, // 0002 CALL R1 2 0x80000000, // 0003 RET 0 }) @@ -657,23 +687,20 @@ be_local_closure(class_Matter_Session_get_fabric_label, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_label), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_fabric_label), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x8804032F, // 0003 GETMBR R1 R1 K47 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -690,24 +717,20 @@ be_local_closure(class_Matter_Session_update, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(last_used), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(rtc_utc), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(update), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8060200, // 0000 GETNGBL R1 K1 - 0x8C040302, // 0001 GETMET R1 R1 K2 + 0xB8066200, // 0000 GETNGBL R1 K49 + 0x8C040332, // 0001 GETMET R1 R1 K50 0x7C040200, // 0002 CALL R1 1 - 0x90020001, // 0003 SETMBR R0 K0 R1 + 0x90026001, // 0003 SETMBR R0 K48 R1 0x80000000, // 0004 RET 0 }) ) @@ -722,21 +745,18 @@ be_local_closure(class_Matter_Session_get_icac, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(icac), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_icac), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x88040333, // 0001 GETMBR R1 R1 K51 0x80040200, // 0002 RET 1 R1 }) ) @@ -751,21 +771,18 @@ be_local_closure(class_Matter_Session_is_PASE, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - /* K1 */ be_nested_str_weak(_PASE), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(is_PASE), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x8808012E, // 0001 GETMBR R2 R0 K46 0x1C040202, // 0002 EQ R1 R1 R2 0x80040200, // 0003 RET 1 R1 }) @@ -781,27 +798,23 @@ be_local_closure(class_Matter_Session_set_fabric_label, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(_fabric), - /* K2 */ be_nested_str_weak(fabric_label), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(set_fabric_label), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60080004, // 0000 GETGBL R2 G4 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x1C080500, // 0003 EQ R2 R2 K0 + 0x1C080534, // 0003 EQ R2 R2 K52 0x780A0001, // 0004 JMPF R2 #0007 - 0x88080101, // 0005 GETMBR R2 R0 K1 - 0x900A0401, // 0006 SETMBR R2 K2 R1 + 0x88080100, // 0005 GETMBR R2 R0 K0 + 0x900A5E01, // 0006 SETMBR R2 K47 R1 0x80000000, // 0007 RET 0 }) ) @@ -816,16 +829,13 @@ be_local_closure(class_Matter_Session_get_node_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(device_id), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_node_id), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -849,21 +859,18 @@ be_local_closure(class_Matter_Session_get_ca_pub, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(get_ca_pub), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_ca_pub), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040335, // 0001 GETMET R1 R1 K53 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -879,37 +886,31 @@ be_local_closure(class_Matter_Session_get_pk, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(get_pk), - /* K2 */ be_nested_str_weak(_temp_pk), - /* K3 */ be_nested_str_weak(crypto), - /* K4 */ be_nested_str_weak(random), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_pk), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060004, // 0001 JMPF R1 #0007 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x8C040301, // 0003 GETMET R1 R1 K1 + 0x8C040336, // 0003 GETMET R1 R1 K54 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 0x70020008, // 0006 JMP #0010 - 0x88040102, // 0007 GETMBR R1 R0 K2 + 0x88040137, // 0007 GETMBR R1 R0 K55 0x74060004, // 0008 JMPT R1 #000E - 0xA4060600, // 0009 IMPORT R1 K3 - 0x8C080304, // 000A GETMET R2 R1 K4 + 0xA4061600, // 0009 IMPORT R1 K11 + 0x8C08031B, // 000A GETMET R2 R1 K27 0x5412001F, // 000B LDINT R4 32 0x7C080400, // 000C CALL R2 2 - 0x90020402, // 000D SETMBR R0 K2 R2 - 0x88040102, // 000E GETMBR R1 R0 K2 + 0x90026E02, // 000D SETMBR R0 K55 R2 + 0x88040137, // 000E GETMBR R1 R0 K55 0x80040200, // 000F RET 1 R1 0x80000000, // 0010 RET 0 }) @@ -925,74 +926,51 @@ be_local_closure(class_Matter_Session_tojson, /* name */ be_nested_proto( 16, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(persist_pre), - /* K3 */ be_nested_str_weak(members), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(function), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(_), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(stop_iteration), - /* K10 */ be_nested_str_weak(matter), - /* K11 */ be_nested_str_weak(sort), - /* K12 */ be_nested_str_weak(_X24_X24), - /* K13 */ be_nested_str_weak(tob64), - /* K14 */ be_nested_str_weak(instance), - /* K15 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K16 */ be_nested_str_weak(dump), - /* K17 */ be_nested_str_weak(persist_post), - /* K18 */ be_nested_str_weak(_X7B), - /* K19 */ be_nested_str_weak(concat), - /* K20 */ be_nested_str_weak(_X2C), - /* K21 */ be_nested_str_weak(_X7D), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(tojson), &be_const_str_solidified, ( &(const binstruction[95]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0102, // 0002 GETMET R3 R0 K2 + 0xA4067000, // 0000 IMPORT R1 K56 + 0xA40A7200, // 0001 IMPORT R2 K57 + 0x8C0C013A, // 0002 GETMET R3 R0 K58 0x7C0C0200, // 0003 CALL R3 1 0x600C0012, // 0004 GETGBL R3 G18 0x7C0C0000, // 0005 CALL R3 0 0x60100010, // 0006 GETGBL R4 G16 - 0x8C140503, // 0007 GETMET R5 R2 K3 + 0x8C14053B, // 0007 GETMET R5 R2 K59 0x5C1C0000, // 0008 MOVE R7 R0 0x7C140400, // 0009 CALL R5 2 0x7C100200, // 000A CALL R4 1 0xA8020011, // 000B EXBLK 0 #001E 0x5C140800, // 000C MOVE R5 R4 0x7C140000, // 000D CALL R5 0 - 0x8C180504, // 000E GETMET R6 R2 K4 + 0x8C18051D, // 000E GETMET R6 R2 K29 0x5C200000, // 000F MOVE R8 R0 0x5C240A00, // 0010 MOVE R9 R5 0x7C180600, // 0011 CALL R6 3 0x601C0004, // 0012 GETGBL R7 G4 0x5C200C00, // 0013 MOVE R8 R6 0x7C1C0200, // 0014 CALL R7 1 - 0x201C0F05, // 0015 NE R7 R7 K5 + 0x201C0F3C, // 0015 NE R7 R7 K60 0x781E0005, // 0016 JMPF R7 #001D - 0x941C0B06, // 0017 GETIDX R7 R5 K6 - 0x201C0F07, // 0018 NE R7 R7 K7 + 0x941C0B3D, // 0017 GETIDX R7 R5 K61 + 0x201C0F3E, // 0018 NE R7 R7 K62 0x781E0002, // 0019 JMPF R7 #001D - 0x8C1C0708, // 001A GETMET R7 R3 K8 + 0x8C1C073F, // 001A GETMET R7 R3 K63 0x5C240A00, // 001B MOVE R9 R5 0x7C1C0400, // 001C CALL R7 2 0x7001FFED, // 001D JMP #000C - 0x58100009, // 001E LDCONST R4 K9 + 0x58100040, // 001E LDCONST R4 K64 0xAC100200, // 001F CATCH R4 1 0 0xB0080000, // 0020 RAISE 2 R0 R0 - 0xB8121400, // 0021 GETNGBL R4 K10 - 0x8C10090B, // 0022 GETMET R4 R4 K11 + 0xB8122000, // 0021 GETNGBL R4 K16 + 0x8C100941, // 0022 GETMET R4 R4 K65 0x5C180600, // 0023 MOVE R6 R3 0x7C100400, // 0024 CALL R4 2 0x5C0C0800, // 0025 MOVE R3 R4 @@ -1004,7 +982,7 @@ be_local_closure(class_Matter_Session_tojson, /* name */ 0xA8020027, // 002B EXBLK 0 #0054 0x5C180A00, // 002C MOVE R6 R5 0x7C180000, // 002D CALL R6 0 - 0x8C1C0504, // 002E GETMET R7 R2 K4 + 0x8C1C051D, // 002E GETMET R7 R2 K29 0x5C240000, // 002F MOVE R9 R0 0x5C280C00, // 0030 MOVE R10 R6 0x7C1C0600, // 0031 CALL R7 3 @@ -1017,41 +995,41 @@ be_local_closure(class_Matter_Session_tojson, /* name */ 0x60280015, // 0038 GETGBL R10 G21 0x7C200400, // 0039 CALL R8 2 0x78220004, // 003A JMPF R8 #0040 - 0x8C200F0D, // 003B GETMET R8 R7 K13 + 0x8C200F43, // 003B GETMET R8 R7 K67 0x7C200200, // 003C CALL R8 1 - 0x00221808, // 003D ADD R8 K12 R8 + 0x00228408, // 003D ADD R8 K66 R8 0x5C1C1000, // 003E MOVE R7 R8 0x70020005, // 003F JMP #0046 0x60200004, // 0040 GETGBL R8 G4 0x5C240E00, // 0041 MOVE R9 R7 0x7C200200, // 0042 CALL R8 1 - 0x1C20110E, // 0043 EQ R8 R8 K14 + 0x1C201144, // 0043 EQ R8 R8 K68 0x78220000, // 0044 JMPF R8 #0046 0x7001FFE5, // 0045 JMP #002C - 0x8C200908, // 0046 GETMET R8 R4 K8 + 0x8C20093F, // 0046 GETMET R8 R4 K63 0x60280018, // 0047 GETGBL R10 G24 - 0x582C000F, // 0048 LDCONST R11 K15 - 0x8C300310, // 0049 GETMET R12 R1 K16 + 0x582C0045, // 0048 LDCONST R11 K69 + 0x8C300346, // 0049 GETMET R12 R1 K70 0x60380008, // 004A GETGBL R14 G8 0x5C3C0C00, // 004B MOVE R15 R6 0x7C380200, // 004C CALL R14 1 0x7C300400, // 004D CALL R12 2 - 0x8C340310, // 004E GETMET R13 R1 K16 + 0x8C340346, // 004E GETMET R13 R1 K70 0x5C3C0E00, // 004F MOVE R15 R7 0x7C340400, // 0050 CALL R13 2 0x7C280600, // 0051 CALL R10 3 0x7C200400, // 0052 CALL R8 2 0x7001FFD7, // 0053 JMP #002C - 0x58140009, // 0054 LDCONST R5 K9 + 0x58140040, // 0054 LDCONST R5 K64 0xAC140200, // 0055 CATCH R5 1 0 0xB0080000, // 0056 RAISE 2 R0 R0 - 0x8C140111, // 0057 GETMET R5 R0 K17 + 0x8C140147, // 0057 GETMET R5 R0 K71 0x7C140200, // 0058 CALL R5 1 - 0x8C140913, // 0059 GETMET R5 R4 K19 - 0x581C0014, // 005A LDCONST R7 K20 + 0x8C140949, // 0059 GETMET R5 R4 K73 + 0x581C004A, // 005A LDCONST R7 K74 0x7C140400, // 005B CALL R5 2 - 0x00162405, // 005C ADD R5 K18 R5 - 0x00140B15, // 005D ADD R5 R5 K21 + 0x00169005, // 005C ADD R5 K72 R5 + 0x00140B4B, // 005D ADD R5 R5 K75 0x80040A00, // 005E RET 1 R5 }) ) @@ -1066,96 +1044,72 @@ be_local_closure(class_Matter_Session_close, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(local_session_id), - /* K1 */ be_nested_str_weak(__future_local_session_id), - /* K2 */ be_nested_str_weak(initiator_session_id), - /* K3 */ be_nested_str_weak(__future_initiator_session_id), - /* K4 */ be_nested_str_weak(_counter_rcv_impl), - /* K5 */ be_nested_str_weak(reset), - /* K6 */ be_nested_str_weak(_counter_snd_impl), - /* K7 */ be_nested_str_weak(counter_rcv), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(counter_snd), - /* K10 */ be_nested_str_weak(next), - /* K11 */ be_nested_str_weak(i2rkey), - /* K12 */ be_nested_str_weak(_i2r_privacy), - /* K13 */ be_nested_str_weak(r2ikey), - /* K14 */ be_nested_str_weak(attestation_challenge), - /* K15 */ be_nested_str_weak(introspect), - /* K16 */ be_nested_str_weak(members), - /* K17 */ be_nested_str_weak(get), - /* K18 */ be_nested_str_weak(function), - /* K19 */ be_nested_str_weak(instance), - /* K20 */ be_nested_str_weak(_), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(close), &be_const_str_solidified, ( &(const binstruction[59]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x88040103, // 0002 GETMBR R1 R0 K3 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x88040104, // 0004 GETMBR R1 R0 K4 - 0x8C040305, // 0005 GETMET R1 R1 K5 + 0x8804014C, // 0000 GETMBR R1 R0 K76 + 0x90020801, // 0001 SETMBR R0 K4 R1 + 0x8804014D, // 0002 GETMBR R1 R0 K77 + 0x90021C01, // 0003 SETMBR R0 K14 R1 + 0x88040112, // 0004 GETMBR R1 R0 K18 + 0x8C04034E, // 0005 GETMET R1 R1 K78 0x7C040200, // 0006 CALL R1 1 - 0x88040106, // 0007 GETMBR R1 R0 K6 - 0x8C040305, // 0008 GETMET R1 R1 K5 + 0x8804010F, // 0007 GETMBR R1 R0 K15 + 0x8C04034E, // 0008 GETMET R1 R1 K78 0x7C040200, // 0009 CALL R1 1 - 0x90020F08, // 000A SETMBR R0 K7 K8 - 0x88040106, // 000B GETMBR R1 R0 K6 - 0x8C04030A, // 000C GETMET R1 R1 K10 + 0x9002270D, // 000A SETMBR R0 K19 K13 + 0x8804010F, // 000B GETMBR R1 R0 K15 + 0x8C040315, // 000C GETMET R1 R1 K21 0x7C040200, // 000D CALL R1 1 - 0x90021201, // 000E SETMBR R0 K9 R1 + 0x90022801, // 000E SETMBR R0 K20 R1 0x4C040000, // 000F LDNIL R1 - 0x90021601, // 0010 SETMBR R0 K11 R1 + 0x90024001, // 0010 SETMBR R0 K32 R1 0x4C040000, // 0011 LDNIL R1 - 0x90021801, // 0012 SETMBR R0 K12 R1 + 0x90029E01, // 0012 SETMBR R0 K79 R1 0x4C040000, // 0013 LDNIL R1 - 0x90021A01, // 0014 SETMBR R0 K13 R1 + 0x90024A01, // 0014 SETMBR R0 K37 R1 0x4C040000, // 0015 LDNIL R1 - 0x90021C01, // 0016 SETMBR R0 K14 R1 - 0xA4061E00, // 0017 IMPORT R1 K15 + 0x9002A001, // 0016 SETMBR R0 K80 R1 + 0xA4067200, // 0017 IMPORT R1 K57 0x60080010, // 0018 GETGBL R2 G16 - 0x8C0C0310, // 0019 GETMET R3 R1 K16 + 0x8C0C033B, // 0019 GETMET R3 R1 K59 0x5C140000, // 001A MOVE R5 R0 0x7C0C0400, // 001B CALL R3 2 0x7C080200, // 001C CALL R2 1 0xA8020018, // 001D EXBLK 0 #0037 0x5C0C0400, // 001E MOVE R3 R2 0x7C0C0000, // 001F CALL R3 0 - 0x8C100311, // 0020 GETMET R4 R1 K17 + 0x8C10031D, // 0020 GETMET R4 R1 K29 0x5C180000, // 0021 MOVE R6 R0 0x5C1C0600, // 0022 MOVE R7 R3 0x7C100600, // 0023 CALL R4 3 0x60140004, // 0024 GETGBL R5 G4 0x5C180800, // 0025 MOVE R6 R4 0x7C140200, // 0026 CALL R5 1 - 0x20140B12, // 0027 NE R5 R5 K18 + 0x20140B3C, // 0027 NE R5 R5 K60 0x7816000C, // 0028 JMPF R5 #0036 0x60140004, // 0029 GETGBL R5 G4 0x5C180800, // 002A MOVE R6 R4 0x7C140200, // 002B CALL R5 1 - 0x20140B13, // 002C NE R5 R5 K19 + 0x20140B44, // 002C NE R5 R5 K68 0x78160007, // 002D JMPF R5 #0036 - 0x94140708, // 002E GETIDX R5 R3 K8 - 0x1C140B14, // 002F EQ R5 R5 K20 + 0x9414070D, // 002E GETIDX R5 R3 K13 + 0x1C140B3E, // 002F EQ R5 R5 K62 0x78160004, // 0030 JMPF R5 #0036 - 0x94140715, // 0031 GETIDX R5 R3 K21 - 0x1C140B14, // 0032 EQ R5 R5 K20 + 0x94140751, // 0031 GETIDX R5 R3 K81 + 0x1C140B3E, // 0032 EQ R5 R5 K62 0x78160001, // 0033 JMPF R5 #0036 0x4C140000, // 0034 LDNIL R5 0x90000605, // 0035 SETMBR R0 R3 R5 0x7001FFE6, // 0036 JMP #001E - 0x58080016, // 0037 LDCONST R2 K22 + 0x58080040, // 0037 LDCONST R2 K64 0xAC080200, // 0038 CATCH R2 1 0 0xB0080000, // 0039 RAISE 2 R0 R0 0x80000000, // 003A RET 0 @@ -1172,19 +1126,17 @@ be_local_closure(class_Matter_Session_get_ac, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(attestation_challenge), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_ac), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040150, // 0000 GETMBR R1 R0 K80 0x80040200, // 0001 RET 1 R1 }) ) @@ -1199,15 +1151,13 @@ be_local_closure(class_Matter_Session_get_fabric, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_fabric), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -1226,45 +1176,37 @@ be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(_i2r_privacy), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(HKDF_SHA256), - /* K3 */ be_nested_str_weak(derive), - /* K4 */ be_nested_str_weak(get_i2r), - /* K5 */ be_nested_str_weak(fromstring), - /* K6 */ be_nested_str_weak(PrivacyKey), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_i2r_privacy), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804014F, // 0000 GETMBR R1 R0 K79 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x7806000F, // 0003 JMPF R1 #0014 - 0xA4060200, // 0004 IMPORT R1 K1 - 0x8C080302, // 0005 GETMET R2 R1 K2 + 0xA4061600, // 0004 IMPORT R1 K11 + 0x8C080352, // 0005 GETMET R2 R1 K82 0x7C080200, // 0006 CALL R2 1 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x8C100104, // 0008 GETMET R4 R0 K4 + 0x8C080553, // 0007 GETMET R2 R2 K83 + 0x8C100154, // 0008 GETMET R4 R0 K84 0x7C100200, // 0009 CALL R4 1 0x60140015, // 000A GETGBL R5 G21 0x7C140000, // 000B CALL R5 0 0x60180015, // 000C GETGBL R6 G21 0x7C180000, // 000D CALL R6 0 - 0x8C180D05, // 000E GETMET R6 R6 K5 - 0x58200006, // 000F LDCONST R8 K6 + 0x8C180D55, // 000E GETMET R6 R6 K85 + 0x58200056, // 000F LDCONST R8 K86 0x7C180400, // 0010 CALL R6 2 0x541E000F, // 0011 LDINT R7 16 0x7C080A00, // 0012 CALL R2 5 - 0x90020002, // 0013 SETMBR R0 K0 R2 - 0x88040100, // 0014 GETMBR R1 R0 K0 + 0x90029E02, // 0013 SETMBR R0 K79 R2 + 0x8804014F, // 0014 GETMBR R1 R0 K79 0x80040200, // 0015 RET 1 R1 }) ) @@ -1279,46 +1221,28 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ be_nested_proto( 17, /* nstack */ 3, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_Session), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(matter), - /* K4 */ be_nested_str_weak(Session), - /* K5 */ be_nested_str_weak(keys), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(0x), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_nested_str_weak(fromhex), - /* K11 */ be_const_int(2), - /* K12 */ be_const_int(2147483647), - /* K13 */ be_nested_str_weak(_X24_X24), - /* K14 */ be_nested_str_weak(fromb64), - /* K15 */ be_nested_str_weak(stop_iteration), - /* K16 */ be_nested_str_weak(hydrate_post), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(fromjson), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 - 0xA4160400, // 0002 IMPORT R5 K2 - 0xB81A0600, // 0003 GETNGBL R6 K3 - 0x8C180D04, // 0004 GETMET R6 R6 K4 + 0x580C0057, // 0000 LDCONST R3 K87 + 0xA4126800, // 0001 IMPORT R4 K52 + 0xA4167200, // 0002 IMPORT R5 K57 + 0xB81A2000, // 0003 GETNGBL R6 K16 + 0x8C180D58, // 0004 GETMET R6 R6 K88 0x5C200000, // 0005 MOVE R8 R0 0x4C240000, // 0006 LDNIL R9 0x4C280000, // 0007 LDNIL R10 0x5C2C0400, // 0008 MOVE R11 R2 0x7C180A00, // 0009 CALL R6 5 0x601C0010, // 000A GETGBL R7 G16 - 0x8C200305, // 000B GETMET R8 R1 K5 + 0x8C200359, // 000B GETMET R8 R1 K89 0x7C200200, // 000C CALL R8 1 0x7C1C0200, // 000D CALL R7 1 0xA8020035, // 000E EXBLK 0 #0045 @@ -1328,58 +1252,58 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ 0x60280004, // 0012 GETGBL R10 G4 0x5C2C1200, // 0013 MOVE R11 R9 0x7C280200, // 0014 CALL R10 1 - 0x1C281501, // 0015 EQ R10 R10 K1 + 0x1C281534, // 0015 EQ R10 R10 K52 0x782A0027, // 0016 JMPF R10 #003F - 0x8C280906, // 0017 GETMET R10 R4 K6 + 0x8C28095A, // 0017 GETMET R10 R4 K90 0x5C301200, // 0018 MOVE R12 R9 - 0x58340007, // 0019 LDCONST R13 K7 + 0x5834005B, // 0019 LDCONST R13 K91 0x7C280600, // 001A CALL R10 3 - 0x1C281508, // 001B EQ R10 R10 K8 + 0x1C28150D, // 001B EQ R10 R10 K13 0x782A000A, // 001C JMPF R10 #0028 - 0x8C280B09, // 001D GETMET R10 R5 K9 + 0x8C280B5C, // 001D GETMET R10 R5 K92 0x5C300C00, // 001E MOVE R12 R6 0x5C341000, // 001F MOVE R13 R8 0x60380015, // 0020 GETGBL R14 G21 0x7C380000, // 0021 CALL R14 0 - 0x8C381D0A, // 0022 GETMET R14 R14 K10 - 0x4042170C, // 0023 CONNECT R16 K11 K12 + 0x8C381D5D, // 0022 GETMET R14 R14 K93 + 0x4042BD5F, // 0023 CONNECT R16 K94 K95 0x94401210, // 0024 GETIDX R16 R9 R16 0x7C380400, // 0025 CALL R14 2 0x7C280800, // 0026 CALL R10 4 0x70020015, // 0027 JMP #003E - 0x8C280906, // 0028 GETMET R10 R4 K6 + 0x8C28095A, // 0028 GETMET R10 R4 K90 0x5C301200, // 0029 MOVE R12 R9 - 0x5834000D, // 002A LDCONST R13 K13 + 0x58340042, // 002A LDCONST R13 K66 0x7C280600, // 002B CALL R10 3 - 0x1C281508, // 002C EQ R10 R10 K8 + 0x1C28150D, // 002C EQ R10 R10 K13 0x782A000A, // 002D JMPF R10 #0039 - 0x8C280B09, // 002E GETMET R10 R5 K9 + 0x8C280B5C, // 002E GETMET R10 R5 K92 0x5C300C00, // 002F MOVE R12 R6 0x5C341000, // 0030 MOVE R13 R8 0x60380015, // 0031 GETGBL R14 G21 0x7C380000, // 0032 CALL R14 0 - 0x8C381D0E, // 0033 GETMET R14 R14 K14 - 0x4042170C, // 0034 CONNECT R16 K11 K12 + 0x8C381D60, // 0033 GETMET R14 R14 K96 + 0x4042BD5F, // 0034 CONNECT R16 K94 K95 0x94401210, // 0035 GETIDX R16 R9 R16 0x7C380400, // 0036 CALL R14 2 0x7C280800, // 0037 CALL R10 4 0x70020004, // 0038 JMP #003E - 0x8C280B09, // 0039 GETMET R10 R5 K9 + 0x8C280B5C, // 0039 GETMET R10 R5 K92 0x5C300C00, // 003A MOVE R12 R6 0x5C341000, // 003B MOVE R13 R8 0x5C381200, // 003C MOVE R14 R9 0x7C280800, // 003D CALL R10 4 0x70020004, // 003E JMP #0044 - 0x8C280B09, // 003F GETMET R10 R5 K9 + 0x8C280B5C, // 003F GETMET R10 R5 K92 0x5C300C00, // 0040 MOVE R12 R6 0x5C341000, // 0041 MOVE R13 R8 0x5C381200, // 0042 MOVE R14 R9 0x7C280800, // 0043 CALL R10 4 0x7001FFC9, // 0044 JMP #000F - 0x581C000F, // 0045 LDCONST R7 K15 + 0x581C0040, // 0045 LDCONST R7 K64 0xAC1C0200, // 0046 CATCH R7 1 0 0xB0080000, // 0047 RAISE 2 R0 R0 - 0x8C1C0D10, // 0048 GETMET R7 R6 K16 + 0x8C1C0D61, // 0048 GETMET R7 R6 K97 0x7C1C0200, // 0049 CALL R7 1 0x80040C00, // 004A RET 1 R6 }) @@ -1395,21 +1319,18 @@ be_local_closure(class_Matter_Session_save, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_store), - /* K1 */ be_nested_str_weak(save_fabrics), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(save), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8C040362, // 0001 GETMET R1 R1 K98 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -1425,39 +1346,32 @@ be_local_closure(class_Matter_Session_hydrate_post, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_counter_snd_impl), - /* K1 */ be_nested_str_weak(reset), - /* K2 */ be_nested_str_weak(counter_snd), - /* K3 */ be_nested_str_weak(_counter_rcv_impl), - /* K4 */ be_nested_str_weak(counter_rcv), - /* K5 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(hydrate_post), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x8804010F, // 0000 GETMBR R1 R0 K15 + 0x8C04034E, // 0001 GETMET R1 R1 K78 + 0x880C0114, // 0002 GETMBR R3 R0 K20 0x7C040400, // 0003 CALL R1 2 - 0x88040103, // 0004 GETMBR R1 R0 K3 - 0x8C040301, // 0005 GETMET R1 R1 K1 - 0x880C0104, // 0006 GETMBR R3 R0 K4 + 0x88040112, // 0004 GETMBR R1 R0 K18 + 0x8C04034E, // 0005 GETMET R1 R1 K78 + 0x880C0113, // 0006 GETMBR R3 R0 K19 0x7C040400, // 0007 CALL R1 2 - 0x88040100, // 0008 GETMBR R1 R0 K0 - 0x8C040305, // 0009 GETMET R1 R1 K5 + 0x8804010F, // 0008 GETMBR R1 R0 K15 + 0x8C040322, // 0009 GETMET R1 R1 K34 0x7C040200, // 000A CALL R1 1 - 0x90020401, // 000B SETMBR R0 K2 R1 - 0x88040103, // 000C GETMBR R1 R0 K3 - 0x8C040305, // 000D GETMET R1 R1 K5 + 0x90022801, // 000B SETMBR R0 K20 R1 + 0x88040112, // 000C GETMBR R1 R0 K18 + 0x8C040322, // 000D GETMET R1 R1 K34 0x7C040200, // 000E CALL R1 1 - 0x90020801, // 000F SETMBR R0 K4 R1 + 0x90022601, // 000F SETMBR R0 K19 R1 0x80000000, // 0010 RET 0 }) ) @@ -1472,23 +1386,20 @@ be_local_closure(class_Matter_Session_get_admin_subject, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(admin_subject), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_admin_subject), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x88040363, // 0003 GETMBR R1 R1 K99 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -1505,21 +1416,18 @@ be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(ipk_epoch_key), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_ipk_epoch_key), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x88040364, // 0001 GETMBR R1 R1 K100 0x80040200, // 0002 RET 1 R1 }) ) @@ -1534,23 +1442,20 @@ be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(fabric_compressed), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_fabric_compressed), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040301, // 0003 GETMBR R1 R1 K1 + 0x88040365, // 0003 GETMBR R1 R1 K101 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -1567,19 +1472,17 @@ be_local_closure(class_Matter_Session_get_mode, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_mode), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040108, // 0000 GETMBR R1 R0 K8 0x80040200, // 0001 RET 1 R1 }) ) @@ -1594,19 +1497,17 @@ be_local_closure(class_Matter_Session_set_temp_ca, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_temp_root_ca_certificate), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(set_temp_ca), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90025201, // 0000 SETMBR R0 K41 R1 0x80000000, // 0001 RET 0 }) ) @@ -1621,19 +1522,17 @@ be_local_closure(class_Matter_Session_set_mode, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(set_mode), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021001, // 0000 SETMBR R0 K8 R1 0x80000000, // 0001 RET 0 }) ) @@ -1648,28 +1547,22 @@ be_local_closure(class_Matter_Session_set_keys, /* name */ be_nested_proto( 6, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(i2rkey), - /* K1 */ be_nested_str_weak(_i2r_privacy), - /* K2 */ be_nested_str_weak(r2ikey), - /* K3 */ be_nested_str_weak(attestation_challenge), - /* K4 */ be_nested_str_weak(created), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(set_keys), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024001, // 0000 SETMBR R0 K32 R1 0x4C140000, // 0001 LDNIL R5 - 0x90020205, // 0002 SETMBR R0 K1 R5 - 0x90020402, // 0003 SETMBR R0 K2 R2 - 0x90020603, // 0004 SETMBR R0 K3 R3 - 0x90020804, // 0005 SETMBR R0 K4 R4 + 0x90029E05, // 0002 SETMBR R0 K79 R5 + 0x90024A02, // 0003 SETMBR R0 K37 R2 + 0x9002A003, // 0004 SETMBR R0 K80 R3 + 0x9002CC04, // 0005 SETMBR R0 K102 R4 0x80000000, // 0006 RET 0 }) ) @@ -1684,69 +1577,56 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ be_nested_proto( 15, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(get_pk), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(EC_P256), - /* K3 */ be_nested_str_weak(public_key), - /* K4 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200), - /* K5 */ be_nested_str_weak(A000), - /* K6 */ be_nested_str_weak(300C06082A8648CE3D0403020500), - /* K7 */ be_nested_str_weak(ecdsa_sign_sha256_asn1), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_const_int(3), - /* K10 */ be_const_int(1), - /* K11 */ be_const_int(0), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(gen_CSR), &be_const_str_solidified, ( &(const binstruction[73]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040136, // 0000 GETMET R1 R0 K54 0x7C040200, // 0001 CALL R1 1 - 0xA40A0200, // 0002 IMPORT R2 K1 - 0x8C0C0502, // 0003 GETMET R3 R2 K2 + 0xA40A1600, // 0002 IMPORT R2 K11 + 0x8C0C0567, // 0003 GETMET R3 R2 K103 0x7C0C0200, // 0004 CALL R3 1 - 0x8C100703, // 0005 GETMET R4 R3 K3 + 0x8C100768, // 0005 GETMET R4 R3 K104 0x5C180200, // 0006 MOVE R6 R1 0x7C100400, // 0007 CALL R4 2 0x60140015, // 0008 GETGBL R5 G21 - 0x58180004, // 0009 LDCONST R6 K4 + 0x58180069, // 0009 LDCONST R6 K105 0x7C140200, // 000A CALL R5 1 0x40180A04, // 000B CONNECT R6 R5 R4 0x60180015, // 000C GETGBL R6 G21 - 0x581C0005, // 000D LDCONST R7 K5 + 0x581C006A, // 000D LDCONST R7 K106 0x7C180200, // 000E CALL R6 1 0x40180A06, // 000F CONNECT R6 R5 R6 0x60180015, // 0010 GETGBL R6 G21 - 0x581C0006, // 0011 LDCONST R7 K6 + 0x581C006B, // 0011 LDCONST R7 K107 0x7C180200, // 0012 CALL R6 1 - 0x8C1C0707, // 0013 GETMET R7 R3 K7 + 0x8C1C076C, // 0013 GETMET R7 R3 K108 0x5C240200, // 0014 MOVE R9 R1 0x5C280A00, // 0015 MOVE R10 R5 0x7C1C0600, // 0016 CALL R7 3 0x60200015, // 0017 GETGBL R8 G21 0x5426007F, // 0018 LDINT R9 128 0x7C200200, // 0019 CALL R8 1 - 0x8C241108, // 001A GETMET R9 R8 K8 - 0x582C0009, // 001B LDCONST R11 K9 - 0x5830000A, // 001C LDCONST R12 K10 + 0x8C24116D, // 001A GETMET R9 R8 K109 + 0x582C0005, // 001B LDCONST R11 K5 + 0x58300051, // 001C LDCONST R12 K81 0x7C240600, // 001D CALL R9 3 - 0x8C241108, // 001E GETMET R9 R8 K8 + 0x8C24116D, // 001E GETMET R9 R8 K109 0x602C000C, // 001F GETGBL R11 G12 0x5C300E00, // 0020 MOVE R12 R7 0x7C2C0200, // 0021 CALL R11 1 - 0x002C170A, // 0022 ADD R11 R11 K10 - 0x5830000A, // 0023 LDCONST R12 K10 + 0x002C1751, // 0022 ADD R11 R11 K81 + 0x58300051, // 0023 LDCONST R12 K81 0x7C240600, // 0024 CALL R9 3 - 0x8C241108, // 0025 GETMET R9 R8 K8 - 0x582C000B, // 0026 LDCONST R11 K11 - 0x5830000A, // 0027 LDCONST R12 K10 + 0x8C24116D, // 0025 GETMET R9 R8 K109 + 0x582C003D, // 0026 LDCONST R11 K61 + 0x58300051, // 0027 LDCONST R12 K81 0x7C240600, // 0028 CALL R9 3 0x40241007, // 0029 CONNECT R9 R8 R7 0x6024000C, // 002A GETGBL R9 G12 @@ -1763,18 +1643,18 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ 0x60280015, // 0035 GETGBL R10 G21 0x542E00CF, // 0036 LDINT R11 208 0x7C280200, // 0037 CALL R10 1 - 0x8C2C1508, // 0038 GETMET R11 R10 K8 + 0x8C2C156D, // 0038 GETMET R11 R10 K109 0x5436002F, // 0039 LDINT R13 48 - 0x5838000A, // 003A LDCONST R14 K10 + 0x58380051, // 003A LDCONST R14 K81 0x7C2C0600, // 003B CALL R11 3 - 0x8C2C1508, // 003C GETMET R11 R10 K8 + 0x8C2C156D, // 003C GETMET R11 R10 K109 0x54360080, // 003D LDINT R13 129 - 0x5838000A, // 003E LDCONST R14 K10 + 0x58380051, // 003E LDCONST R14 K81 0x7C2C0600, // 003F CALL R11 3 - 0x8C2C1508, // 0040 GETMET R11 R10 K8 + 0x8C2C156D, // 0040 GETMET R11 R10 K109 0x543600FE, // 0041 LDINT R13 255 0x2C34120D, // 0042 AND R13 R9 R13 - 0x5838000A, // 0043 LDCONST R14 K10 + 0x58380051, // 0043 LDCONST R14 K81 0x7C2C0600, // 0044 CALL R11 3 0x402C1405, // 0045 CONNECT R11 R10 R5 0x402C1406, // 0046 CONNECT R11 R10 R6 @@ -1793,21 +1673,18 @@ be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_fabric), - /* K1 */ be_nested_str_weak(get_ipk_group_key), - }), + &be_ktab_class_Matter_Session, /* shared constants */ be_str_weak(get_ipk_group_key), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C04036E, // 0001 GETMET R1 R1 K110 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h index 8cbbb0238..f8e4c6342 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h @@ -3,6 +3,84 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_Session_Store' ktab size: 74, total: 155 (saved 648 bytes) +static const bvalue be_ktab_class_Matter_Session_Store[74] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(sessions), + /* K2 */ be_nested_str_weak(remove), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(crypto), + /* K5 */ be_nested_str_weak(random), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_str_weak(get), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(get_session_by_local_session_id), + /* K10 */ be_nested_str_weak(matter), + /* K11 */ be_nested_str_weak(Expirable_list), + /* K12 */ be_nested_str_weak(fabrics), + /* K13 */ be_nested_str_weak(_FABRICS), + /* K14 */ be_nested_str_weak(read), + /* K15 */ be_nested_str_weak(close), + /* K16 */ be_nested_str_weak(json), + /* K17 */ be_nested_str_weak(load), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(gc), + /* K20 */ be_nested_str_weak(Fabric), + /* K21 */ be_nested_str_weak(fromjson), + /* K22 */ be_nested_str_weak(set_no_expiration), + /* K23 */ be_nested_str_weak(set_persist), + /* K24 */ be_nested_str_weak(find), + /* K25 */ be_nested_str_weak(_sessions), + /* K26 */ be_nested_str_weak(Session), + /* K27 */ be_nested_str_weak(add_session), + /* K28 */ be_nested_str_weak(stop_iteration), + /* K29 */ be_nested_str_weak(push), + /* K30 */ be_nested_str_weak(log), + /* K31 */ be_nested_str_weak(MTR_X3A_X20Loaded_X20_X25i_X20fabric_X28s_X29), + /* K32 */ be_nested_str_weak(io_error), + /* K33 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A), + /* K34 */ be_nested_str_weak(_X7C), + /* K35 */ be_nested_str_weak(get_device_id), + /* K36 */ be_nested_str_weak(get_fabric_id), + /* K37 */ be_nested_str_weak(active_fabrics), + /* K38 */ be_nested_str_weak(get_fabric_index), + /* K39 */ be_nested_str_weak(remove_expired), + /* K40 */ be_nested_str_weak(persistables), + /* K41 */ be_nested_str_weak(count_persistables), + /* K42 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s), + /* K43 */ be_nested_str_weak(resumption_id), + /* K44 */ be_nested_str_weak(shared_secret), + /* K45 */ be_nested_str_weak(update), + /* K46 */ be_nested_str_weak(set_expire_in_seconds), + /* K47 */ be_nested_str_weak(get_session_by_source_node_id), + /* K48 */ be_nested_str_weak(_source_node_id), + /* K49 */ be_nested_str_weak(local_session_id), + /* K50 */ be_nested_str_weak(device), + /* K51 */ be_nested_str_weak(every_second), + /* K52 */ be_nested_str_weak(fabric_id), + /* K53 */ be_nested_str_weak(device_id), + /* K54 */ be_nested_str_weak(value_error), + /* K55 */ be_nested_str_weak(must_X20be_X20of_X20class_X20matter_X2EFabric), + /* K56 */ be_nested_str_weak(remove_redundant_fabric), + /* K57 */ be_nested_str_weak(fabric_index), + /* K58 */ be_nested_str_weak(int), + /* K59 */ be_nested_str_weak(path), + /* K60 */ be_nested_str_weak(_FABRICS_TEMP), + /* K61 */ be_nested_str_weak(w), + /* K62 */ be_nested_str_weak(write), + /* K63 */ be_nested_str_weak(_X5B), + /* K64 */ be_nested_str_weak(_X2C), + /* K65 */ be_nested_str_weak(writejson), + /* K66 */ be_nested_str_weak(_X5D), + /* K67 */ be_nested_str_weak(rename), + /* K68 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), + /* K69 */ be_nested_str_weak(event_fabrics_saved), + /* K70 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), + /* K71 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K72 */ be_nested_str_weak(remove_session), + /* K73 */ be_nested_str_weak(_fabric), +}; + extern const bclass be_class_Matter_Session_Store; @@ -13,18 +91,13 @@ be_local_closure(class_Matter_Session_Store_remove_session, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(remove), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(remove_session), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ @@ -58,34 +131,27 @@ be_local_closure(class_Matter_Session_Store_gen_local_session_id, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(get_session_by_local_session_id), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(gen_local_session_id), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 + 0xA4060800, // 0000 IMPORT R1 K4 0x50080200, // 0001 LDBOOL R2 1 0 0x780A000E, // 0002 JMPF R2 #0012 - 0x8C080301, // 0003 GETMET R2 R1 K1 - 0x58100002, // 0004 LDCONST R4 K2 + 0x8C080305, // 0003 GETMET R2 R1 K5 + 0x58100006, // 0004 LDCONST R4 K6 0x7C080400, // 0005 CALL R2 2 - 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x58100004, // 0007 LDCONST R4 K4 - 0x58140002, // 0008 LDCONST R5 K2 + 0x8C080507, // 0006 GETMET R2 R2 K7 + 0x58100008, // 0007 LDCONST R4 K8 + 0x58140006, // 0008 LDCONST R5 K6 0x7C080600, // 0009 CALL R2 3 - 0x8C0C0105, // 000A GETMET R3 R0 K5 + 0x8C0C0109, // 000A GETMET R3 R0 K9 0x5C140400, // 000B MOVE R5 R2 0x7C0C0400, // 000C CALL R3 2 0x4C100000, // 000D LDNIL R4 @@ -107,67 +173,39 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ be_nested_proto( 16, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Expirable_list), - /* K3 */ be_nested_str_weak(fabrics), - /* K4 */ be_nested_str_weak(_FABRICS), - /* K5 */ be_nested_str_weak(read), - /* K6 */ be_nested_str_weak(close), - /* K7 */ be_nested_str_weak(json), - /* K8 */ be_nested_str_weak(load), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(gc), - /* K11 */ be_nested_str_weak(Fabric), - /* K12 */ be_nested_str_weak(fromjson), - /* K13 */ be_nested_str_weak(set_no_expiration), - /* K14 */ be_nested_str_weak(set_persist), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(_sessions), - /* K17 */ be_nested_str_weak(Session), - /* K18 */ be_nested_str_weak(add_session), - /* K19 */ be_nested_str_weak(stop_iteration), - /* K20 */ be_nested_str_weak(push), - /* K21 */ be_nested_str_weak(log), - /* K22 */ be_nested_str_weak(MTR_X3A_X20Loaded_X20_X25i_X20fabric_X28s_X29), - /* K23 */ be_const_int(2), - /* K24 */ be_nested_str_weak(io_error), - /* K25 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A), - /* K26 */ be_nested_str_weak(_X7C), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(load_fabrics), &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ 0xA802005E, // 0000 EXBLK 0 #0060 - 0xB8060200, // 0001 GETNGBL R1 K1 - 0x8C040302, // 0002 GETMET R1 R1 K2 + 0xB8061400, // 0001 GETNGBL R1 K10 + 0x8C04030B, // 0002 GETMET R1 R1 K11 0x7C040200, // 0003 CALL R1 1 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x90020201, // 0004 SETMBR R0 K1 R1 + 0xB8061400, // 0005 GETNGBL R1 K10 + 0x8C04030B, // 0006 GETMET R1 R1 K11 0x7C040200, // 0007 CALL R1 1 - 0x90020601, // 0008 SETMBR R0 K3 R1 + 0x90021801, // 0008 SETMBR R0 K12 R1 0x60040011, // 0009 GETGBL R1 G17 - 0x88080104, // 000A GETMBR R2 R0 K4 + 0x8808010D, // 000A GETMBR R2 R0 K13 0x7C040200, // 000B CALL R1 1 - 0x8C080305, // 000C GETMET R2 R1 K5 + 0x8C08030E, // 000C GETMET R2 R1 K14 0x7C080200, // 000D CALL R2 1 - 0x8C0C0306, // 000E GETMET R3 R1 K6 + 0x8C0C030F, // 000E GETMET R3 R1 K15 0x7C0C0200, // 000F CALL R3 1 - 0xA40E0E00, // 0010 IMPORT R3 K7 - 0x8C100708, // 0011 GETMET R4 R3 K8 + 0xA40E2000, // 0010 IMPORT R3 K16 + 0x8C100711, // 0011 GETMET R4 R3 K17 0x5C180400, // 0012 MOVE R6 R2 0x7C100400, // 0013 CALL R4 2 0x4C080000, // 0014 LDNIL R2 - 0xB8161200, // 0015 GETNGBL R5 K9 - 0x8C140B0A, // 0016 GETMET R5 R5 K10 + 0xB8162400, // 0015 GETNGBL R5 K18 + 0x8C140B13, // 0016 GETMET R5 R5 K19 0x7C140200, // 0017 CALL R5 1 0x60140010, // 0018 GETGBL R5 G16 0x5C180800, // 0019 MOVE R6 R4 @@ -175,19 +213,19 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0xA8020035, // 001B EXBLK 0 #0052 0x5C180A00, // 001C MOVE R6 R5 0x7C180000, // 001D CALL R6 0 - 0xB81E0200, // 001E GETNGBL R7 K1 - 0x881C0F0B, // 001F GETMBR R7 R7 K11 - 0x8C1C0F0C, // 0020 GETMET R7 R7 K12 + 0xB81E1400, // 001E GETNGBL R7 K10 + 0x881C0F14, // 001F GETMBR R7 R7 K20 + 0x8C1C0F15, // 0020 GETMET R7 R7 K21 0x5C240000, // 0021 MOVE R9 R0 0x5C280C00, // 0022 MOVE R10 R6 0x7C1C0600, // 0023 CALL R7 3 - 0x8C200F0D, // 0024 GETMET R8 R7 K13 + 0x8C200F16, // 0024 GETMET R8 R7 K22 0x7C200200, // 0025 CALL R8 1 - 0x8C200F0E, // 0026 GETMET R8 R7 K14 + 0x8C200F17, // 0026 GETMET R8 R7 K23 0x50280200, // 0027 LDBOOL R10 1 0 0x7C200400, // 0028 CALL R8 2 - 0x8C200D0F, // 0029 GETMET R8 R6 K15 - 0x58280010, // 002A LDCONST R10 K16 + 0x8C200D18, // 0029 GETMET R8 R6 K24 + 0x58280019, // 002A LDCONST R10 K25 0x602C0012, // 002B GETGBL R11 G18 0x7C2C0000, // 002C CALL R11 0 0x7C200600, // 002D CALL R8 3 @@ -197,9 +235,9 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0xA8020017, // 0031 EXBLK 0 #004A 0x5C281200, // 0032 MOVE R10 R9 0x7C280000, // 0033 CALL R10 0 - 0xB82E0200, // 0034 GETNGBL R11 K1 - 0x882C1711, // 0035 GETMBR R11 R11 K17 - 0x8C2C170C, // 0036 GETMET R11 R11 K12 + 0xB82E1400, // 0034 GETNGBL R11 K10 + 0x882C171A, // 0035 GETMBR R11 R11 K26 + 0x8C2C1715, // 0036 GETMET R11 R11 K21 0x5C340000, // 0037 MOVE R13 R0 0x5C381400, // 0038 MOVE R14 R10 0x5C3C0E00, // 0039 MOVE R15 R7 @@ -207,55 +245,55 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0x4C300000, // 003B LDNIL R12 0x2030160C, // 003C NE R12 R11 R12 0x7832000A, // 003D JMPF R12 #0049 - 0x8C30170D, // 003E GETMET R12 R11 K13 + 0x8C301716, // 003E GETMET R12 R11 K22 0x7C300200, // 003F CALL R12 1 - 0x8C30170E, // 0040 GETMET R12 R11 K14 + 0x8C301717, // 0040 GETMET R12 R11 K23 0x50380200, // 0041 LDBOOL R14 1 0 0x7C300400, // 0042 CALL R12 2 - 0x8C300112, // 0043 GETMET R12 R0 K18 + 0x8C30011B, // 0043 GETMET R12 R0 K27 0x5C381600, // 0044 MOVE R14 R11 0x7C300400, // 0045 CALL R12 2 - 0x8C300F12, // 0046 GETMET R12 R7 K18 + 0x8C300F1B, // 0046 GETMET R12 R7 K27 0x5C381600, // 0047 MOVE R14 R11 0x7C300400, // 0048 CALL R12 2 0x7001FFE7, // 0049 JMP #0032 - 0x58240013, // 004A LDCONST R9 K19 + 0x5824001C, // 004A LDCONST R9 K28 0xAC240200, // 004B CATCH R9 1 0 0xB0080000, // 004C RAISE 2 R0 R0 - 0x88240103, // 004D GETMBR R9 R0 K3 - 0x8C241314, // 004E GETMET R9 R9 K20 + 0x8824010C, // 004D GETMBR R9 R0 K12 + 0x8C24131D, // 004E GETMET R9 R9 K29 0x5C2C0E00, // 004F MOVE R11 R7 0x7C240400, // 0050 CALL R9 2 0x7001FFC9, // 0051 JMP #001C - 0x58140013, // 0052 LDCONST R5 K19 + 0x5814001C, // 0052 LDCONST R5 K28 0xAC140200, // 0053 CATCH R5 1 0 0xB0080000, // 0054 RAISE 2 R0 R0 - 0xB8162A00, // 0055 GETNGBL R5 K21 + 0xB8163C00, // 0055 GETNGBL R5 K30 0x60180018, // 0056 GETGBL R6 G24 - 0x581C0016, // 0057 LDCONST R7 K22 + 0x581C001F, // 0057 LDCONST R7 K31 0x6020000C, // 0058 GETGBL R8 G12 - 0x88240103, // 0059 GETMBR R9 R0 K3 + 0x8824010C, // 0059 GETMBR R9 R0 K12 0x7C200200, // 005A CALL R8 1 0x7C180400, // 005B CALL R6 2 - 0x581C0017, // 005C LDCONST R7 K23 + 0x581C0006, // 005C LDCONST R7 K6 0x7C140400, // 005D CALL R5 2 0xA8040001, // 005E EXBLK 1 1 0x70020011, // 005F JMP #0072 0xAC040002, // 0060 CATCH R1 0 2 0x7002000E, // 0061 JMP #0071 - 0x200C0318, // 0062 NE R3 R1 K24 + 0x200C0320, // 0062 NE R3 R1 K32 0x780E000B, // 0063 JMPF R3 #0070 - 0xB80E2A00, // 0064 GETNGBL R3 K21 + 0xB80E3C00, // 0064 GETNGBL R3 K30 0x60100008, // 0065 GETGBL R4 G8 0x5C140200, // 0066 MOVE R5 R1 0x7C100200, // 0067 CALL R4 1 - 0x00123204, // 0068 ADD R4 K25 R4 - 0x0010091A, // 0069 ADD R4 R4 K26 + 0x00124204, // 0068 ADD R4 K33 R4 + 0x00100922, // 0069 ADD R4 R4 K34 0x60140008, // 006A GETGBL R5 G8 0x5C180400, // 006B MOVE R6 R2 0x7C140200, // 006C CALL R5 1 0x00100805, // 006D ADD R4 R4 R5 - 0x58140017, // 006E LDCONST R5 K23 + 0x58140006, // 006E LDCONST R5 K6 0x7C0C0400, // 006F CALL R3 2 0x70020000, // 0070 JMP #0072 0xB0080000, // 0071 RAISE 2 R0 R0 @@ -273,7 +311,7 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -335,8 +373,8 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */ }) ), }), - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(find_children_fabrics), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -368,20 +406,13 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(get_device_id), - /* K3 */ be_nested_str_weak(get_fabric_id), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(sessions_active), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ @@ -395,16 +426,16 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */ 0x780E000C, // 0007 JMPF R3 #0015 0x880C0101, // 0008 GETMBR R3 R0 K1 0x940C0602, // 0009 GETIDX R3 R3 R2 - 0x8C100702, // 000A GETMET R4 R3 K2 + 0x8C100723, // 000A GETMET R4 R3 K35 0x7C100200, // 000B CALL R4 1 0x78120005, // 000C JMPF R4 #0013 - 0x8C100703, // 000D GETMET R4 R3 K3 + 0x8C100724, // 000D GETMET R4 R3 K36 0x7C100200, // 000E CALL R4 1 0x78120002, // 000F JMPF R4 #0013 - 0x8C100304, // 0010 GETMET R4 R1 K4 + 0x8C10031D, // 0010 GETMET R4 R1 K29 0x5C180600, // 0011 MOVE R6 R3 0x7C100400, // 0012 CALL R4 2 - 0x00080505, // 0013 ADD R2 R2 K5 + 0x00080503, // 0013 ADD R2 R2 K3 0x7001FFED, // 0014 JMP #0003 0x80040200, // 0015 RET 1 R1 }) @@ -420,35 +451,31 @@ be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(active_fabrics), - /* K1 */ be_nested_str_weak(get_fabric_index), - /* K2 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(find_fabric_by_index), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x8C0C0100, // 0001 GETMET R3 R0 K0 + 0x8C0C0125, // 0001 GETMET R3 R0 K37 0x7C0C0200, // 0002 CALL R3 1 0x7C080200, // 0003 CALL R2 1 0xA8020008, // 0004 EXBLK 0 #000E 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x8C100701, // 0007 GETMET R4 R3 K1 + 0x8C100726, // 0007 GETMET R4 R3 K38 0x7C100200, // 0008 CALL R4 1 0x1C100801, // 0009 EQ R4 R4 R1 0x78120001, // 000A JMPF R4 #000D 0xA8040001, // 000B EXBLK 1 1 0x80040600, // 000C RET 1 R3 0x7001FFF6, // 000D JMP #0005 - 0x58080002, // 000E LDCONST R2 K2 + 0x5808001C, // 000E LDCONST R2 K28 0xAC080200, // 000F CATCH R2 1 0 0xB0080000, // 0010 RAISE 2 R0 R0 0x4C080000, // 0011 LDNIL R2 @@ -466,24 +493,20 @@ be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_expired), - /* K1 */ be_nested_str_weak(fabrics), - /* K2 */ be_nested_str_weak(persistables), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(active_fabrics), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x8804010C, // 0002 GETMBR R1 R0 K12 + 0x8C040328, // 0003 GETMET R1 R1 K40 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 }) @@ -499,21 +522,18 @@ be_local_closure(class_Matter_Session_Store_create_fabric, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Fabric), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(create_fabric), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0xB8061400, // 0000 GETNGBL R1 K10 + 0x8C040314, // 0001 GETMET R1 R1 K20 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 0x80040200, // 0004 RET 1 R1 @@ -530,33 +550,28 @@ be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_expired), - /* K1 */ be_nested_str_weak(fabrics), - /* K2 */ be_nested_str_weak(count_persistables), - /* K3 */ be_const_int(0), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(count_active_fabrics), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 - 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x8804010C, // 0002 GETMBR R1 R0 K12 0x4C080000, // 0003 LDNIL R2 0x20040202, // 0004 NE R1 R1 R2 0x78060004, // 0005 JMPF R1 #000B - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x8C040302, // 0007 GETMET R1 R1 K2 + 0x8804010C, // 0006 GETMBR R1 R0 K12 + 0x8C040329, // 0007 GETMET R1 R1 K41 0x7C040200, // 0008 CALL R1 1 0x80040200, // 0009 RET 1 R1 0x70020000, // 000A JMP #000C - 0x80060600, // 000B RET 1 K3 + 0x80060000, // 000B RET 1 K0 0x80000000, // 000C RET 0 }) ) @@ -571,22 +586,13 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s), - /* K4 */ be_nested_str_weak(resumption_id), - /* K5 */ be_nested_str_weak(shared_secret), - /* K6 */ be_nested_str_weak(update), - /* K7 */ be_const_int(1), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(find_session_by_resumption_id), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ @@ -602,11 +608,11 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0x14100404, // 0009 LT R4 R2 R4 0x78120018, // 000A JMPF R4 #0024 0x94100602, // 000B GETIDX R4 R3 R2 - 0xB8160400, // 000C GETNGBL R5 K2 + 0xB8163C00, // 000C GETNGBL R5 K30 0x60180018, // 000D GETGBL R6 G24 - 0x581C0003, // 000E LDCONST R7 K3 + 0x581C002A, // 000E LDCONST R7 K42 0x60200008, // 000F GETGBL R8 G8 - 0x88240904, // 0010 GETMBR R9 R4 K4 + 0x8824092B, // 0010 GETMBR R9 R4 K43 0x7C200200, // 0011 CALL R8 1 0x60240008, // 0012 GETGBL R9 G8 0x5C280200, // 0013 MOVE R10 R1 @@ -614,17 +620,17 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0x7C180600, // 0015 CALL R6 3 0x541E0003, // 0016 LDINT R7 4 0x7C140400, // 0017 CALL R5 2 - 0x88140904, // 0018 GETMBR R5 R4 K4 + 0x8814092B, // 0018 GETMBR R5 R4 K43 0x1C140A01, // 0019 EQ R5 R5 R1 0x78160006, // 001A JMPF R5 #0022 - 0x88140905, // 001B GETMBR R5 R4 K5 + 0x8814092C, // 001B GETMBR R5 R4 K44 0x4C180000, // 001C LDNIL R6 0x20140A06, // 001D NE R5 R5 R6 0x78160002, // 001E JMPF R5 #0022 - 0x8C140906, // 001F GETMET R5 R4 K6 + 0x8C14092D, // 001F GETMET R5 R4 K45 0x7C140200, // 0020 CALL R5 1 0x80040800, // 0021 RET 1 R4 - 0x00080507, // 0022 ADD R2 R2 K7 + 0x00080503, // 0022 ADD R2 R2 K3 0x7001FFE1, // 0023 JMP #0006 0x80000000, // 0024 RET 0 }) @@ -640,28 +646,24 @@ be_local_closure(class_Matter_Session_Store_add_session, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(set_expire_in_seconds), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(add_session), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x4C0C0000, // 0000 LDNIL R3 0x200C0403, // 0001 NE R3 R2 R3 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C0300, // 0003 GETMET R3 R1 K0 + 0x8C0C032E, // 0003 GETMET R3 R1 K46 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x8C0C071D, // 0007 GETMET R3 R3 K29 0x5C140200, // 0008 MOVE R5 R1 0x7C0C0400, // 0009 CALL R3 2 0x80000000, // 000A RET 0 @@ -678,48 +680,38 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, / be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(get_session_by_source_node_id), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Session), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_source_node_id), - /* K5 */ be_nested_str_weak(sessions), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(set_expire_in_seconds), - /* K8 */ be_nested_str_weak(update), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(find_session_source_id_unsecure), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C012F, // 0000 GETMET R3 R0 K47 0x5C140200, // 0001 MOVE R5 R1 0x7C0C0400, // 0002 CALL R3 2 0x4C100000, // 0003 LDNIL R4 0x1C100604, // 0004 EQ R4 R3 R4 0x7812000E, // 0005 JMPF R4 #0015 - 0xB8120200, // 0006 GETNGBL R4 K1 - 0x8C100902, // 0007 GETMET R4 R4 K2 + 0xB8121400, // 0006 GETNGBL R4 K10 + 0x8C10091A, // 0007 GETMET R4 R4 K26 0x5C180000, // 0008 MOVE R6 R0 - 0x581C0003, // 0009 LDCONST R7 K3 - 0x58200003, // 000A LDCONST R8 K3 + 0x581C0000, // 0009 LDCONST R7 K0 + 0x58200000, // 000A LDCONST R8 K0 0x7C100800, // 000B CALL R4 4 0x5C0C0800, // 000C MOVE R3 R4 - 0x900E0801, // 000D SETMBR R3 K4 R1 - 0x88100105, // 000E GETMBR R4 R0 K5 - 0x8C100906, // 000F GETMET R4 R4 K6 + 0x900E6001, // 000D SETMBR R3 K48 R1 + 0x88100101, // 000E GETMBR R4 R0 K1 + 0x8C10091D, // 000F GETMET R4 R4 K29 0x5C180600, // 0010 MOVE R6 R3 0x7C100400, // 0011 CALL R4 2 - 0x8C100707, // 0012 GETMET R4 R3 K7 + 0x8C10072E, // 0012 GETMET R4 R3 K46 0x5C180400, // 0013 MOVE R6 R2 0x7C100400, // 0014 CALL R4 2 - 0x8C100708, // 0015 GETMET R4 R3 K8 + 0x8C10072D, // 0015 GETMET R4 R3 K45 0x7C100200, // 0016 CALL R4 1 0x80040600, // 0017 RET 1 R3 }) @@ -735,19 +727,17 @@ be_local_closure(class_Matter_Session_Store_every_second, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_expired), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -763,19 +753,13 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, / be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(local_session_id), - /* K3 */ be_nested_str_weak(update), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(get_session_by_local_session_id), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ @@ -785,20 +769,20 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, / 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 0x6008000C, // 0005 GETGBL R2 G12 - 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0x880C0101, // 0006 GETMBR R3 R0 K1 0x7C080200, // 0007 CALL R2 1 - 0x580C0001, // 0008 LDCONST R3 K1 - 0x88100100, // 0009 GETMBR R4 R0 K0 + 0x580C0008, // 0008 LDCONST R3 K8 + 0x88100101, // 0009 GETMBR R4 R0 K1 0x14140602, // 000A LT R5 R3 R2 0x78160008, // 000B JMPF R5 #0015 0x94140803, // 000C GETIDX R5 R4 R3 - 0x88180B02, // 000D GETMBR R6 R5 K2 + 0x88180B31, // 000D GETMBR R6 R5 K49 0x1C180C01, // 000E EQ R6 R6 R1 0x781A0002, // 000F JMPF R6 #0013 - 0x8C180B03, // 0010 GETMET R6 R5 K3 + 0x8C180B2D, // 0010 GETMET R6 R5 K45 0x7C180200, // 0011 CALL R6 1 0x80040A00, // 0012 RET 1 R5 - 0x000C0704, // 0013 ADD R3 R3 K4 + 0x000C0703, // 0013 ADD R3 R3 K3 0x7001FFF4, // 0014 JMP #000A 0x80000000, // 0015 RET 0 }) @@ -814,31 +798,25 @@ be_local_closure(class_Matter_Session_Store_init, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Expirable_list), - /* K4 */ be_nested_str_weak(fabrics), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0xB80A0400, // 0001 GETNGBL R2 K2 - 0x8C080503, // 0002 GETMET R2 R2 K3 + 0x90026401, // 0000 SETMBR R0 K50 R1 + 0xB80A1400, // 0001 GETNGBL R2 K10 + 0x8C08050B, // 0002 GETMET R2 R2 K11 0x7C080200, // 0003 CALL R2 1 0x90020202, // 0004 SETMBR R0 K1 R2 - 0xB80A0400, // 0005 GETNGBL R2 K2 - 0x8C080503, // 0006 GETMET R2 R2 K3 + 0xB80A1400, // 0005 GETNGBL R2 K10 + 0x8C08050B, // 0006 GETMET R2 R2 K11 0x7C080200, // 0007 CALL R2 1 - 0x90020802, // 0008 SETMBR R0 K4 R2 + 0x90021802, // 0008 SETMBR R0 K12 R2 0x80000000, // 0009 RET 0 }) ) @@ -853,25 +831,21 @@ be_local_closure(class_Matter_Session_Store_remove_expired, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(fabrics), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(remove_expired), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040333, // 0001 GETMET R1 R1 K51 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x8804010C, // 0003 GETMBR R1 R0 K12 + 0x8C040333, // 0004 GETMET R1 R1 K51 0x7C040200, // 0005 CALL R1 1 0x80000000, // 0006 RET 0 }) @@ -887,47 +861,40 @@ be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name * be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(fabrics), - /* K2 */ be_nested_str_weak(fabric_id), - /* K3 */ be_nested_str_weak(device_id), - /* K4 */ be_nested_str_weak(remove), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(remove_redundant_fabric), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x8810010C, // 0002 GETMBR R4 R0 K12 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 0x780E0012, // 0005 JMPF R3 #0019 - 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x880C010C, // 0006 GETMBR R3 R0 K12 0x940C0602, // 0007 GETIDX R3 R3 R2 0x20100601, // 0008 NE R4 R3 R1 0x7812000C, // 0009 JMPF R4 #0017 - 0x88100702, // 000A GETMBR R4 R3 K2 - 0x88140302, // 000B GETMBR R5 R1 K2 + 0x88100734, // 000A GETMBR R4 R3 K52 + 0x88140334, // 000B GETMBR R5 R1 K52 0x1C100805, // 000C EQ R4 R4 R5 0x78120008, // 000D JMPF R4 #0017 - 0x88100703, // 000E GETMBR R4 R3 K3 - 0x88140303, // 000F GETMBR R5 R1 K3 + 0x88100735, // 000E GETMBR R4 R3 K53 + 0x88140335, // 000F GETMBR R5 R1 K53 0x1C100805, // 0010 EQ R4 R4 R5 0x78120004, // 0011 JMPF R4 #0017 - 0x88100101, // 0012 GETMBR R4 R0 K1 - 0x8C100904, // 0013 GETMET R4 R4 K4 + 0x8810010C, // 0012 GETMBR R4 R0 K12 + 0x8C100902, // 0013 GETMET R4 R4 K2 0x5C180400, // 0014 MOVE R6 R2 0x7C100400, // 0015 CALL R4 2 0x70020000, // 0016 JMP #0018 - 0x00080505, // 0017 ADD R2 R2 K5 + 0x00080503, // 0017 ADD R2 R2 K3 0x7001FFE7, // 0018 JMP #0001 0x80000000, // 0019 RET 0 }) @@ -943,44 +910,35 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Fabric), - /* K2 */ be_nested_str_weak(value_error), - /* K3 */ be_nested_str_weak(must_X20be_X20of_X20class_X20matter_X2EFabric), - /* K4 */ be_nested_str_weak(fabrics), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(remove_redundant_fabric), - /* K7 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(add_fabric), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0x6008000F, // 0000 GETGBL R2 G15 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8120000, // 0002 GETNGBL R4 K0 - 0x88100901, // 0003 GETMBR R4 R4 K1 + 0xB8121400, // 0002 GETNGBL R4 K10 + 0x88100914, // 0003 GETMBR R4 R4 K20 0x7C080400, // 0004 CALL R2 2 0x740A0000, // 0005 JMPT R2 #0007 - 0xB0060503, // 0006 RAISE 1 K2 K3 - 0x88080104, // 0007 GETMBR R2 R0 K4 - 0x8C080505, // 0008 GETMET R2 R2 K5 + 0xB0066D37, // 0006 RAISE 1 K54 K55 + 0x8808010C, // 0007 GETMBR R2 R0 K12 + 0x8C080518, // 0008 GETMET R2 R2 K24 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 0x4C0C0000, // 000B LDNIL R3 0x1C080403, // 000C EQ R2 R2 R3 0x780A0006, // 000D JMPF R2 #0015 - 0x8C080106, // 000E GETMET R2 R0 K6 + 0x8C080138, // 000E GETMET R2 R0 K56 0x5C100200, // 000F MOVE R4 R1 0x7C080400, // 0010 CALL R2 2 - 0x88080104, // 0011 GETMBR R2 R0 K4 - 0x8C080507, // 0012 GETMET R2 R2 K7 + 0x8808010C, // 0011 GETMBR R2 R0 K12 + 0x8C08051D, // 0012 GETMET R2 R2 K29 0x5C100200, // 0013 MOVE R4 R1 0x7C080400, // 0014 CALL R2 2 0x80000000, // 0015 RET 0 @@ -997,19 +955,13 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(_source_node_id), - /* K3 */ be_nested_str_weak(update), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(get_session_by_source_node_id), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ @@ -1019,20 +971,20 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 0x6008000C, // 0005 GETGBL R2 G12 - 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0x880C0101, // 0006 GETMBR R3 R0 K1 0x7C080200, // 0007 CALL R2 1 - 0x580C0001, // 0008 LDCONST R3 K1 - 0x88100100, // 0009 GETMBR R4 R0 K0 + 0x580C0008, // 0008 LDCONST R3 K8 + 0x88100101, // 0009 GETMBR R4 R0 K1 0x14140602, // 000A LT R5 R3 R2 0x78160008, // 000B JMPF R5 #0015 0x94140803, // 000C GETIDX R5 R4 R3 - 0x88180B02, // 000D GETMBR R6 R5 K2 + 0x88180B30, // 000D GETMBR R6 R5 K48 0x1C180C01, // 000E EQ R6 R6 R1 0x781A0002, // 000F JMPF R6 #0013 - 0x8C180B03, // 0010 GETMET R6 R5 K3 + 0x8C180B2D, // 0010 GETMET R6 R5 K45 0x7C180200, // 0011 CALL R6 1 0x80040A00, // 0012 RET 1 R5 - 0x000C0704, // 0013 ADD R3 R3 K4 + 0x000C0703, // 0013 ADD R3 R3 K3 0x7001FFF4, // 0014 JMP #000A 0x80000000, // 0015 RET 0 }) @@ -1048,45 +1000,38 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_expired), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(active_fabrics), - /* K3 */ be_nested_str_weak(fabric_index), - /* K4 */ be_nested_str_weak(int), - /* K5 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(next_fabric_idx), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 + 0x58040003, // 0002 LDCONST R1 K3 0x60080010, // 0003 GETGBL R2 G16 - 0x8C0C0102, // 0004 GETMET R3 R0 K2 + 0x8C0C0125, // 0004 GETMET R3 R0 K37 0x7C0C0200, // 0005 CALL R3 1 0x7C080200, // 0006 CALL R2 1 0xA802000C, // 0007 EXBLK 0 #0015 0x5C0C0400, // 0008 MOVE R3 R2 0x7C0C0000, // 0009 CALL R3 0 - 0x88100703, // 000A GETMBR R4 R3 K3 + 0x88100739, // 000A GETMBR R4 R3 K57 0x60140004, // 000B GETGBL R5 G4 0x5C180800, // 000C MOVE R6 R4 0x7C140200, // 000D CALL R5 1 - 0x1C140B04, // 000E EQ R5 R5 K4 + 0x1C140B3A, // 000E EQ R5 R5 K58 0x78160003, // 000F JMPF R5 #0014 0x28140801, // 0010 GE R5 R4 R1 0x78160001, // 0011 JMPF R5 #0014 - 0x00140901, // 0012 ADD R5 R4 K1 + 0x00140903, // 0012 ADD R5 R4 K3 0x5C040A00, // 0013 MOVE R1 R5 0x7001FFF2, // 0014 JMP #0008 - 0x58080005, // 0015 LDCONST R2 K5 + 0x5808001C, // 0015 LDCONST R2 K28 0xAC080200, // 0016 CATCH R2 1 0 0xB0080000, // 0017 RAISE 2 R0 R0 0x80040200, // 0018 RET 1 R1 @@ -1103,139 +1048,110 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(path), - /* K2 */ be_nested_str_weak(remove_expired), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_FABRICS_TEMP), - /* K5 */ be_nested_str_weak(w), - /* K6 */ be_nested_str_weak(write), - /* K7 */ be_nested_str_weak(_X5B), - /* K8 */ be_nested_str_weak(fabrics), - /* K9 */ be_nested_str_weak(persistables), - /* K10 */ be_nested_str_weak(_sessions), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(_X2C), - /* K14 */ be_nested_str_weak(writejson), - /* K15 */ be_nested_str_weak(_X5D), - /* K16 */ be_nested_str_weak(close), - /* K17 */ be_nested_str_weak(remove), - /* K18 */ be_nested_str_weak(_FABRICS), - /* K19 */ be_nested_str_weak(rename), - /* K20 */ be_nested_str_weak(log), - /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), - /* K22 */ be_const_int(2), - /* K23 */ be_nested_str_weak(device), - /* K24 */ be_nested_str_weak(event_fabrics_saved), - /* K25 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), - /* K26 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K27 */ be_nested_str_weak(_X7C), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(save_fabrics), &be_const_str_solidified, ( &(const binstruction[98]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 + 0xA4062000, // 0000 IMPORT R1 K16 + 0xA40A7600, // 0001 IMPORT R2 K59 0xA802004D, // 0002 EXBLK 0 #0051 - 0x8C0C0102, // 0003 GETMET R3 R0 K2 + 0x8C0C0127, // 0003 GETMET R3 R0 K39 0x7C0C0200, // 0004 CALL R3 1 - 0x580C0003, // 0005 LDCONST R3 K3 - 0x58100003, // 0006 LDCONST R4 K3 + 0x580C0008, // 0005 LDCONST R3 K8 + 0x58100008, // 0006 LDCONST R4 K8 0x60140011, // 0007 GETGBL R5 G17 - 0x88180104, // 0008 GETMBR R6 R0 K4 - 0x581C0005, // 0009 LDCONST R7 K5 + 0x8818013C, // 0008 GETMBR R6 R0 K60 + 0x581C003D, // 0009 LDCONST R7 K61 0x7C140400, // 000A CALL R5 2 - 0x8C180B06, // 000B GETMET R6 R5 K6 - 0x58200007, // 000C LDCONST R8 K7 + 0x8C180B3E, // 000B GETMET R6 R5 K62 + 0x5820003F, // 000C LDCONST R8 K63 0x7C180400, // 000D CALL R6 2 0x60180010, // 000E GETGBL R6 G16 - 0x881C0108, // 000F GETMBR R7 R0 K8 - 0x8C1C0F09, // 0010 GETMET R7 R7 K9 + 0x881C010C, // 000F GETMBR R7 R0 K12 + 0x8C1C0F28, // 0010 GETMET R7 R7 K40 0x7C1C0200, // 0011 CALL R7 1 0x7C180200, // 0012 CALL R6 1 0xA8020018, // 0013 EXBLK 0 #002D 0x5C1C0C00, // 0014 MOVE R7 R6 0x7C1C0000, // 0015 CALL R7 0 0x60200010, // 0016 GETGBL R8 G16 - 0x88240F0A, // 0017 GETMBR R9 R7 K10 - 0x8C241309, // 0018 GETMET R9 R9 K9 + 0x88240F19, // 0017 GETMBR R9 R7 K25 + 0x8C241328, // 0018 GETMET R9 R9 K40 0x7C240200, // 0019 CALL R9 1 0x7C200200, // 001A CALL R8 1 0xA8020003, // 001B EXBLK 0 #0020 0x5C241000, // 001C MOVE R9 R8 0x7C240000, // 001D CALL R9 0 - 0x000C070B, // 001E ADD R3 R3 K11 + 0x000C0703, // 001E ADD R3 R3 K3 0x7001FFFB, // 001F JMP #001C - 0x5820000C, // 0020 LDCONST R8 K12 + 0x5820001C, // 0020 LDCONST R8 K28 0xAC200200, // 0021 CATCH R8 1 0 0xB0080000, // 0022 RAISE 2 R0 R0 - 0x24200903, // 0023 GT R8 R4 K3 + 0x24200908, // 0023 GT R8 R4 K8 0x78220002, // 0024 JMPF R8 #0028 - 0x8C200B06, // 0025 GETMET R8 R5 K6 - 0x5828000D, // 0026 LDCONST R10 K13 + 0x8C200B3E, // 0025 GETMET R8 R5 K62 + 0x58280040, // 0026 LDCONST R10 K64 0x7C200400, // 0027 CALL R8 2 - 0x8C200F0E, // 0028 GETMET R8 R7 K14 + 0x8C200F41, // 0028 GETMET R8 R7 K65 0x5C280A00, // 0029 MOVE R10 R5 0x7C200400, // 002A CALL R8 2 - 0x0010090B, // 002B ADD R4 R4 K11 + 0x00100903, // 002B ADD R4 R4 K3 0x7001FFE6, // 002C JMP #0014 - 0x5818000C, // 002D LDCONST R6 K12 + 0x5818001C, // 002D LDCONST R6 K28 0xAC180200, // 002E CATCH R6 1 0 0xB0080000, // 002F RAISE 2 R0 R0 - 0x8C180B06, // 0030 GETMET R6 R5 K6 - 0x5820000F, // 0031 LDCONST R8 K15 + 0x8C180B3E, // 0030 GETMET R6 R5 K62 + 0x58200042, // 0031 LDCONST R8 K66 0x7C180400, // 0032 CALL R6 2 - 0x8C180B10, // 0033 GETMET R6 R5 K16 + 0x8C180B0F, // 0033 GETMET R6 R5 K15 0x7C180200, // 0034 CALL R6 1 - 0x8C180511, // 0035 GETMET R6 R2 K17 - 0x88200112, // 0036 GETMBR R8 R0 K18 + 0x8C180502, // 0035 GETMET R6 R2 K2 + 0x8820010D, // 0036 GETMBR R8 R0 K13 0x7C180400, // 0037 CALL R6 2 - 0x8C180513, // 0038 GETMET R6 R2 K19 - 0x88200104, // 0039 GETMBR R8 R0 K4 - 0x88240112, // 003A GETMBR R9 R0 K18 + 0x8C180543, // 0038 GETMET R6 R2 K67 + 0x8820013C, // 0039 GETMBR R8 R0 K60 + 0x8824010D, // 003A GETMBR R9 R0 K13 0x7C180600, // 003B CALL R6 3 0x781A000B, // 003C JMPF R6 #0049 - 0xB81A2800, // 003D GETNGBL R6 K20 + 0xB81A3C00, // 003D GETNGBL R6 K30 0x601C0018, // 003E GETGBL R7 G24 - 0x58200015, // 003F LDCONST R8 K21 + 0x58200044, // 003F LDCONST R8 K68 0x5C240800, // 0040 MOVE R9 R4 0x5C280600, // 0041 MOVE R10 R3 0x7C1C0600, // 0042 CALL R7 3 - 0x58200016, // 0043 LDCONST R8 K22 + 0x58200006, // 0043 LDCONST R8 K6 0x7C180400, // 0044 CALL R6 2 - 0x88180117, // 0045 GETMBR R6 R0 K23 - 0x8C180D18, // 0046 GETMET R6 R6 K24 + 0x88180132, // 0045 GETMBR R6 R0 K50 + 0x8C180D45, // 0046 GETMET R6 R6 K69 0x7C180200, // 0047 CALL R6 1 0x70020005, // 0048 JMP #004F - 0xB81A2800, // 0049 GETNGBL R6 K20 + 0xB81A3C00, // 0049 GETNGBL R6 K30 0x601C0018, // 004A GETGBL R7 G24 - 0x58200019, // 004B LDCONST R8 K25 + 0x58200046, // 004B LDCONST R8 K70 0x7C1C0200, // 004C CALL R7 1 - 0x58200016, // 004D LDCONST R8 K22 + 0x58200006, // 004D LDCONST R8 K6 0x7C180400, // 004E CALL R6 2 0xA8040001, // 004F EXBLK 1 1 0x7002000F, // 0050 JMP #0061 0xAC0C0002, // 0051 CATCH R3 0 2 0x7002000C, // 0052 JMP #0060 - 0xB8162800, // 0053 GETNGBL R5 K20 + 0xB8163C00, // 0053 GETNGBL R5 K30 0x60180008, // 0054 GETGBL R6 G8 0x5C1C0600, // 0055 MOVE R7 R3 0x7C180200, // 0056 CALL R6 1 - 0x001A3406, // 0057 ADD R6 K26 R6 - 0x00180D1B, // 0058 ADD R6 R6 K27 + 0x001A8E06, // 0057 ADD R6 K71 R6 + 0x00180D22, // 0058 ADD R6 R6 K34 0x601C0008, // 0059 GETGBL R7 G8 0x5C200800, // 005A MOVE R8 R4 0x7C1C0200, // 005B CALL R7 1 0x00180C07, // 005C ADD R6 R6 R7 - 0x581C0016, // 005D LDCONST R7 K22 + 0x581C0006, // 005D LDCONST R7 K6 0x7C140400, // 005E CALL R5 2 0x70020000, // 005F JMP #0061 0xB0080000, // 0060 RAISE 2 R0 R0 @@ -1253,41 +1169,34 @@ be_local_closure(class_Matter_Session_Store_create_session, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(get_session_by_local_session_id), - /* K1 */ be_nested_str_weak(remove_session), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Session), - /* K4 */ be_nested_str_weak(sessions), - /* K5 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(create_session), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C0109, // 0000 GETMET R3 R0 K9 0x5C140200, // 0001 MOVE R5 R1 0x7C0C0400, // 0002 CALL R3 2 0x4C100000, // 0003 LDNIL R4 0x20100604, // 0004 NE R4 R3 R4 0x78120002, // 0005 JMPF R4 #0009 - 0x8C100101, // 0006 GETMET R4 R0 K1 + 0x8C100148, // 0006 GETMET R4 R0 K72 0x5C180600, // 0007 MOVE R6 R3 0x7C100400, // 0008 CALL R4 2 - 0xB8120400, // 0009 GETNGBL R4 K2 - 0x8C100903, // 000A GETMET R4 R4 K3 + 0xB8121400, // 0009 GETNGBL R4 K10 + 0x8C10091A, // 000A GETMET R4 R4 K26 0x5C180000, // 000B MOVE R6 R0 0x5C1C0200, // 000C MOVE R7 R1 0x5C200400, // 000D MOVE R8 R2 0x7C100800, // 000E CALL R4 4 0x5C0C0800, // 000F MOVE R3 R4 - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x8C100905, // 0011 GETMET R4 R4 K5 + 0x88100101, // 0010 GETMBR R4 R0 K1 + 0x8C10091D, // 0011 GETMET R4 R4 K29 0x5C180600, // 0012 MOVE R6 R3 0x7C100400, // 0013 CALL R4 2 0x80040600, // 0014 RET 1 R3 @@ -1304,54 +1213,46 @@ be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(_fabric), - /* K3 */ be_nested_str_weak(remove), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(fabrics), - /* K6 */ be_nested_str_weak(find), - }), + &be_ktab_class_Matter_Session_Store, /* shared constants */ be_str_weak(remove_fabric), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080101, // 0000 GETMBR R2 R0 K1 0x4C0C0000, // 0001 LDNIL R3 0x20080403, // 0002 NE R2 R2 R3 0x780A0011, // 0003 JMPF R2 #0016 - 0x58080001, // 0004 LDCONST R2 K1 + 0x58080000, // 0004 LDCONST R2 K0 0x600C000C, // 0005 GETGBL R3 G12 - 0x88100100, // 0006 GETMBR R4 R0 K0 + 0x88100101, // 0006 GETMBR R4 R0 K1 0x7C0C0200, // 0007 CALL R3 1 0x140C0403, // 0008 LT R3 R2 R3 0x780E000B, // 0009 JMPF R3 #0016 - 0x880C0100, // 000A GETMBR R3 R0 K0 + 0x880C0101, // 000A GETMBR R3 R0 K1 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x880C0702, // 000C GETMBR R3 R3 K2 + 0x880C0749, // 000C GETMBR R3 R3 K73 0x1C0C0601, // 000D EQ R3 R3 R1 0x780E0004, // 000E JMPF R3 #0014 - 0x880C0100, // 000F GETMBR R3 R0 K0 - 0x8C0C0703, // 0010 GETMET R3 R3 K3 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C0702, // 0010 GETMET R3 R3 K2 0x5C140400, // 0011 MOVE R5 R2 0x7C0C0400, // 0012 CALL R3 2 0x70020000, // 0013 JMP #0015 - 0x00080504, // 0014 ADD R2 R2 K4 + 0x00080503, // 0014 ADD R2 R2 K3 0x7001FFEE, // 0015 JMP #0005 - 0x88080105, // 0016 GETMBR R2 R0 K5 + 0x8808010C, // 0016 GETMBR R2 R0 K12 0x4C0C0000, // 0017 LDNIL R3 0x20080403, // 0018 NE R2 R2 R3 0x780A0006, // 0019 JMPF R2 #0021 - 0x88080105, // 001A GETMBR R2 R0 K5 - 0x8C080503, // 001B GETMET R2 R2 K3 - 0x88100105, // 001C GETMBR R4 R0 K5 - 0x8C100906, // 001D GETMET R4 R4 K6 + 0x8808010C, // 001A GETMBR R2 R0 K12 + 0x8C080502, // 001B GETMET R2 R2 K2 + 0x8810010C, // 001C GETMBR R4 R0 K12 + 0x8C100918, // 001D GETMET R4 R4 K24 0x5C180200, // 001E MOVE R6 R1 0x7C100400, // 001F CALL R4 2 0x7C080400, // 0020 CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h index f13442853..9ba0435a7 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h @@ -3,6 +3,51 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Matter_TCP_async' ktab size: 41, total: 80 (saved 312 bytes) +static const bvalue be_ktab_class_Matter_TCP_async[41] = { + /* K0 */ be_nested_str_weak(tcp_connected), + /* K1 */ be_nested_str_weak(tcp), + /* K2 */ be_nested_str_weak(read), + /* K3 */ be_nested_str_weak(reset), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(wifi), + /* K6 */ be_nested_str_weak(up), + /* K7 */ be_nested_str_weak(eth), + /* K8 */ be_nested_str_weak(time_start), + /* K9 */ be_nested_str_weak(millis), + /* K10 */ be_nested_str_weak(status), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(connect), + /* K13 */ be_nested_str_weak(addr), + /* K14 */ be_nested_str_weak(port), + /* K15 */ be_nested_str_weak(fast_loop), + /* K16 */ be_nested_str_weak(remove_fast_loop), + /* K17 */ be_nested_str_weak(add_fast_loop), + /* K18 */ be_nested_str_weak(add_driver), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(BRY_X3A_X20failed_X20to_X20resolve_X20_X5B_X25s_X5D_X3A_X25i), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(close), + /* K23 */ be_nested_str_weak(event_dnsfailed), + /* K24 */ be_nested_str_weak(readbytes), + /* K25 */ be_nested_str_weak(available), + /* K26 */ be_nested_str_weak(timeout), + /* K27 */ be_nested_str_weak(TIMEOUT), + /* K28 */ be_nested_str_weak(tcpclientasync), + /* K29 */ be_nested_str_weak(loop), + /* K30 */ be_nested_str_weak(write), + /* K31 */ be_nested_str_weak(connected), + /* K32 */ be_const_int(1), + /* K33 */ be_nested_str_weak(event_established), + /* K34 */ be_nested_str_weak(event_refused), + /* K35 */ be_nested_str_weak(event_timeout), + /* K36 */ be_nested_str_weak(event_closed), + /* K37 */ be_nested_str_weak(event_available), + /* K38 */ be_nested_str_weak(listening), + /* K39 */ be_nested_str_weak(event_listening), + /* K40 */ be_nested_str_weak(remove_driver), +}; + extern const bclass be_class_Matter_TCP_async; @@ -13,17 +58,13 @@ be_local_closure(class_Matter_TCP_async_read, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp_connected), - /* K1 */ be_nested_str_weak(tcp), - /* K2 */ be_nested_str_weak(read), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(read), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ @@ -48,98 +89,74 @@ be_local_closure(class_Matter_TCP_async_begin, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(wifi), - /* K3 */ be_nested_str_weak(up), - /* K4 */ be_nested_str_weak(eth), - /* K5 */ be_nested_str_weak(time_start), - /* K6 */ be_nested_str_weak(millis), - /* K7 */ be_nested_str_weak(status), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(tcp), - /* K10 */ be_nested_str_weak(connect), - /* K11 */ be_nested_str_weak(addr), - /* K12 */ be_nested_str_weak(port), - /* K13 */ be_nested_str_weak(fast_loop), - /* K14 */ be_nested_str_weak(remove_fast_loop), - /* K15 */ be_nested_str_weak(add_fast_loop), - /* K16 */ be_nested_str_weak(add_driver), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(BRY_X3A_X20failed_X20to_X20resolve_X20_X5B_X25s_X5D_X3A_X25i), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(close), - /* K21 */ be_nested_str_weak(tcp_connected), - /* K22 */ be_nested_str_weak(event_dnsfailed), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(begin), &be_const_str_solidified, ( &(const binstruction[62]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040103, // 0000 GETMET R1 R0 K3 0x7C040200, // 0001 CALL R1 1 - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 + 0xB8060800, // 0002 GETNGBL R1 K4 + 0x8C040305, // 0003 GETMET R1 R1 K5 0x7C040200, // 0004 CALL R1 1 - 0x94040303, // 0005 GETIDX R1 R1 K3 + 0x94040306, // 0005 GETIDX R1 R1 K6 0x74060006, // 0006 JMPT R1 #000E - 0xB8060200, // 0007 GETNGBL R1 K1 - 0x8C040304, // 0008 GETMET R1 R1 K4 + 0xB8060800, // 0007 GETNGBL R1 K4 + 0x8C040307, // 0008 GETMET R1 R1 K7 0x7C040200, // 0009 CALL R1 1 - 0x94040303, // 000A GETIDX R1 R1 K3 + 0x94040306, // 000A GETIDX R1 R1 K6 0x74060001, // 000B JMPT R1 #000E 0x4C040000, // 000C LDNIL R1 0x80040200, // 000D RET 1 R1 - 0xB8060200, // 000E GETNGBL R1 K1 - 0x8C040306, // 000F GETMET R1 R1 K6 + 0xB8060800, // 000E GETNGBL R1 K4 + 0x8C040309, // 000F GETMET R1 R1 K9 0x7C040200, // 0010 CALL R1 1 - 0x90020A01, // 0011 SETMBR R0 K5 R1 - 0x90020F08, // 0012 SETMBR R0 K7 K8 - 0x88040109, // 0013 GETMBR R1 R0 K9 - 0x8C04030A, // 0014 GETMET R1 R1 K10 - 0x880C010B, // 0015 GETMBR R3 R0 K11 - 0x8810010C, // 0016 GETMBR R4 R0 K12 + 0x90021001, // 0011 SETMBR R0 K8 R1 + 0x9002150B, // 0012 SETMBR R0 K10 K11 + 0x88040101, // 0013 GETMBR R1 R0 K1 + 0x8C04030C, // 0014 GETMET R1 R1 K12 + 0x880C010D, // 0015 GETMBR R3 R0 K13 + 0x8810010E, // 0016 GETMBR R4 R0 K14 0x7C040600, // 0017 CALL R1 3 0x78060011, // 0018 JMPF R1 #002B - 0x8804010D, // 0019 GETMBR R1 R0 K13 + 0x8804010F, // 0019 GETMBR R1 R0 K15 0x78060008, // 001A JMPF R1 #0024 - 0xB8060200, // 001B GETNGBL R1 K1 - 0x8C04030E, // 001C GETMET R1 R1 K14 - 0x880C010D, // 001D GETMBR R3 R0 K13 + 0xB8060800, // 001B GETNGBL R1 K4 + 0x8C040310, // 001C GETMET R1 R1 K16 + 0x880C010F, // 001D GETMBR R3 R0 K15 0x7C040400, // 001E CALL R1 2 - 0xB8060200, // 001F GETNGBL R1 K1 - 0x8C04030F, // 0020 GETMET R1 R1 K15 - 0x880C010D, // 0021 GETMBR R3 R0 K13 + 0xB8060800, // 001F GETNGBL R1 K4 + 0x8C040311, // 0020 GETMET R1 R1 K17 + 0x880C010F, // 0021 GETMBR R3 R0 K15 0x7C040400, // 0022 CALL R1 2 0x70020003, // 0023 JMP #0028 - 0xB8060200, // 0024 GETNGBL R1 K1 - 0x8C040310, // 0025 GETMET R1 R1 K16 + 0xB8060800, // 0024 GETNGBL R1 K4 + 0x8C040312, // 0025 GETMET R1 R1 K18 0x5C0C0000, // 0026 MOVE R3 R0 0x7C040400, // 0027 CALL R1 2 0x50040200, // 0028 LDBOOL R1 1 0 0x80040200, // 0029 RET 1 R1 0x70020011, // 002A JMP #003D - 0xB8062200, // 002B GETNGBL R1 K17 + 0xB8062600, // 002B GETNGBL R1 K19 0x60080018, // 002C GETGBL R2 G24 - 0x580C0012, // 002D LDCONST R3 K18 - 0x8810010B, // 002E GETMBR R4 R0 K11 - 0x8814010C, // 002F GETMBR R5 R0 K12 + 0x580C0014, // 002D LDCONST R3 K20 + 0x8810010D, // 002E GETMBR R4 R0 K13 + 0x8814010E, // 002F GETMBR R5 R0 K14 0x7C080600, // 0030 CALL R2 3 - 0x580C0013, // 0031 LDCONST R3 K19 + 0x580C0015, // 0031 LDCONST R3 K21 0x7C040400, // 0032 CALL R1 2 - 0x8C040114, // 0033 GETMET R1 R0 K20 + 0x8C040116, // 0033 GETMET R1 R0 K22 0x7C040200, // 0034 CALL R1 1 0x5405FFFE, // 0035 LDINT R1 -1 - 0x90020E01, // 0036 SETMBR R0 K7 R1 + 0x90021401, // 0036 SETMBR R0 K10 R1 0x50040000, // 0037 LDBOOL R1 0 0 - 0x90022A01, // 0038 SETMBR R0 K21 R1 - 0x8C040116, // 0039 GETMET R1 R0 K22 + 0x90020001, // 0038 SETMBR R0 K0 R1 + 0x8C040117, // 0039 GETMET R1 R0 K23 0x7C040200, // 003A CALL R1 1 0x50040000, // 003B LDBOOL R1 0 0 0x80040200, // 003C RET 1 R1 @@ -157,24 +174,20 @@ be_local_closure(class_Matter_TCP_async_readbytes, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp_connected), - /* K1 */ be_nested_str_weak(tcp), - /* K2 */ be_nested_str_weak(readbytes), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(readbytes), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060003, // 0001 JMPF R1 #0006 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x8C040318, // 0003 GETMET R1 R1 K24 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 0x4C040000, // 0006 LDNIL R1 @@ -192,13 +205,13 @@ be_local_closure(class_Matter_TCP_async_event_closed, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(event_closed), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -216,28 +229,23 @@ be_local_closure(class_Matter_TCP_async_available, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp_connected), - /* K1 */ be_nested_str_weak(tcp), - /* K2 */ be_nested_str_weak(available), - /* K3 */ be_const_int(0), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(available), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060003, // 0001 JMPF R1 #0006 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x8C040319, // 0003 GETMET R1 R1 K25 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 - 0x80060600, // 0006 RET 1 K3 + 0x80061600, // 0006 RET 1 K11 }) ) ); @@ -251,13 +259,13 @@ be_local_closure(class_Matter_TCP_async_event_listening, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(event_listening), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -275,19 +283,17 @@ be_local_closure(class_Matter_TCP_async_get_timeout, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(timeout), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(get_timeout), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804011A, // 0000 GETMBR R1 R0 K26 0x80040200, // 0001 RET 1 R1 }) ) @@ -302,7 +308,7 @@ be_local_closure(class_Matter_TCP_async_init, /* name */ be_nested_proto( 7, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -332,22 +338,14 @@ be_local_closure(class_Matter_TCP_async_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(TIMEOUT), - /* K1 */ be_nested_str_weak(addr), - /* K2 */ be_nested_str_weak(port), - /* K3 */ be_nested_str_weak(timeout), - /* K4 */ be_nested_str_weak(tcp), - /* K5 */ be_nested_str_weak(tcpclientasync), - /* K6 */ be_nested_str_weak(fast_loop), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0x4C140000, // 0000 LDNIL R5 0x1C140605, // 0001 EQ R5 R3 R5 0x78160000, // 0002 JMPF R5 #0004 - 0x880C0100, // 0003 GETMBR R3 R0 K0 + 0x880C011B, // 0003 GETMBR R3 R0 K27 0x4C140000, // 0004 LDNIL R5 0x1C140405, // 0005 EQ R5 R2 R5 0x78160000, // 0006 JMPF R5 #0008 @@ -355,18 +353,18 @@ be_local_closure(class_Matter_TCP_async_init, /* name */ 0x60140008, // 0008 GETGBL R5 G8 0x5C180200, // 0009 MOVE R6 R1 0x7C140200, // 000A CALL R5 1 - 0x90020205, // 000B SETMBR R0 K1 R5 + 0x90021A05, // 000B SETMBR R0 K13 R5 0x60140009, // 000C GETGBL R5 G9 0x5C180400, // 000D MOVE R6 R2 0x7C140200, // 000E CALL R5 1 - 0x90020405, // 000F SETMBR R0 K2 R5 - 0x90020603, // 0010 SETMBR R0 K3 R3 - 0xB8160A00, // 0011 GETNGBL R5 K5 + 0x90021C05, // 000F SETMBR R0 K14 R5 + 0x90023403, // 0010 SETMBR R0 K26 R3 + 0xB8163800, // 0011 GETNGBL R5 K28 0x7C140000, // 0012 CALL R5 0 - 0x90020805, // 0013 SETMBR R0 K4 R5 + 0x90020205, // 0013 SETMBR R0 K1 R5 0x78120001, // 0014 JMPF R4 #0017 0x84140000, // 0015 CLOSURE R5 P0 - 0x90020C05, // 0016 SETMBR R0 K6 R5 + 0x90021E05, // 0016 SETMBR R0 K15 R5 0xA0000000, // 0017 CLOSE R0 0x80000000, // 0018 RET 0 }) @@ -382,19 +380,17 @@ be_local_closure(class_Matter_TCP_async_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(loop), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04011D, // 0000 GETMET R1 R0 K29 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -410,13 +406,13 @@ be_local_closure(class_Matter_TCP_async_event_timeout, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(event_timeout), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -434,13 +430,13 @@ be_local_closure(class_Matter_TCP_async_event_available, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(event_available), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -458,29 +454,24 @@ be_local_closure(class_Matter_TCP_async_write, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp_connected), - /* K1 */ be_nested_str_weak(tcp), - /* K2 */ be_nested_str_weak(write), - /* K3 */ be_const_int(0), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(write), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x780A0004, // 0001 JMPF R2 #0007 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x8C080502, // 0003 GETMET R2 R2 K2 + 0x8C08051E, // 0003 GETMET R2 R2 K30 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x80040400, // 0006 RET 1 R2 - 0x80060600, // 0007 RET 1 K3 + 0x80061600, // 0007 RET 1 K11 }) ) ); @@ -494,13 +485,13 @@ be_local_closure(class_Matter_TCP_async_event_established, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(event_established), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -518,25 +509,21 @@ be_local_closure(class_Matter_TCP_async_reset, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp), - /* K1 */ be_nested_str_weak(close), - /* K2 */ be_nested_str_weak(tcp_connected), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040316, // 0001 GETMET R1 R1 K22 0x7C040200, // 0002 CALL R1 1 0x4C040000, // 0003 LDNIL R1 - 0x90020401, // 0004 SETMBR R0 K2 R1 + 0x90020001, // 0004 SETMBR R0 K0 R1 0x80000000, // 0005 RET 0 }) ) @@ -551,45 +538,26 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp_connected), - /* K1 */ be_nested_str_weak(status), - /* K2 */ be_nested_str_weak(close), - /* K3 */ be_nested_str_weak(tcp), - /* K4 */ be_nested_str_weak(connected), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(event_established), - /* K7 */ be_nested_str_weak(event_refused), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(millis), - /* K10 */ be_nested_str_weak(time_start), - /* K11 */ be_nested_str_weak(timeout), - /* K12 */ be_nested_str_weak(event_timeout), - /* K13 */ be_nested_str_weak(event_closed), - /* K14 */ be_nested_str_weak(available), - /* K15 */ be_nested_str_weak(event_available), - /* K16 */ be_nested_str_weak(listening), - /* K17 */ be_nested_str_weak(event_listening), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(loop), &be_const_str_solidified, ( &(const binstruction[89]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8808010A, // 0001 GETMBR R2 R0 K10 0x4C0C0000, // 0002 LDNIL R3 0x1C080403, // 0003 EQ R2 R2 R3 0x780A0002, // 0004 JMPF R2 #0008 - 0x8C080102, // 0005 GETMET R2 R0 K2 + 0x8C080116, // 0005 GETMET R2 R0 K22 0x7C080200, // 0006 CALL R2 1 0x80000400, // 0007 RET 0 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x8C080504, // 0009 GETMET R2 R2 K4 + 0x88080101, // 0008 GETMBR R2 R0 K1 + 0x8C08051F, // 0009 GETMET R2 R2 K31 0x7C080200, // 000A CALL R2 1 0x90020002, // 000B SETMBR R0 K0 R2 0x4C080000, // 000C LDNIL R2 @@ -599,8 +567,8 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */ 0x500C0200, // 0010 LDBOOL R3 1 0 0x1C080403, // 0011 EQ R2 R2 R3 0x780A0003, // 0012 JMPF R2 #0017 - 0x90020305, // 0013 SETMBR R0 K1 K5 - 0x8C080106, // 0014 GETMET R2 R0 K6 + 0x90021520, // 0013 SETMBR R0 K10 K32 + 0x8C080121, // 0014 GETMET R2 R0 K33 0x7C080200, // 0015 CALL R2 1 0x70020019, // 0016 JMP #0031 0x88080100, // 0017 GETMBR R2 R0 K0 @@ -608,40 +576,40 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */ 0x1C080403, // 0019 EQ R2 R2 R3 0x780A0007, // 001A JMPF R2 #0023 0x5409FFFD, // 001B LDINT R2 -2 - 0x90020202, // 001C SETMBR R0 K1 R2 - 0x8C080107, // 001D GETMET R2 R0 K7 + 0x90021402, // 001C SETMBR R0 K10 R2 + 0x8C080122, // 001D GETMET R2 R0 K34 0x7C080200, // 001E CALL R2 1 - 0x8C080102, // 001F GETMET R2 R0 K2 + 0x8C080116, // 001F GETMET R2 R0 K22 0x7C080200, // 0020 CALL R2 1 0x80000400, // 0021 RET 0 0x7002000D, // 0022 JMP #0031 - 0xB80A1000, // 0023 GETNGBL R2 K8 + 0xB80A0800, // 0023 GETNGBL R2 K4 0x8C080509, // 0024 GETMET R2 R2 K9 0x7C080200, // 0025 CALL R2 1 - 0x880C010A, // 0026 GETMBR R3 R0 K10 + 0x880C0108, // 0026 GETMBR R3 R0 K8 0x04080403, // 0027 SUB R2 R2 R3 - 0x880C010B, // 0028 GETMBR R3 R0 K11 + 0x880C011A, // 0028 GETMBR R3 R0 K26 0x24080403, // 0029 GT R2 R2 R3 0x780A0005, // 002A JMPF R2 #0031 0x5409FFFC, // 002B LDINT R2 -3 - 0x90020202, // 002C SETMBR R0 K1 R2 + 0x90021402, // 002C SETMBR R0 K10 R2 0x50080000, // 002D LDBOOL R2 0 0 0x90020002, // 002E SETMBR R0 K0 R2 - 0x8C08010C, // 002F GETMET R2 R0 K12 + 0x8C080123, // 002F GETMET R2 R0 K35 0x7C080200, // 0030 CALL R2 1 - 0xB80A1000, // 0031 GETNGBL R2 K8 + 0xB80A0800, // 0031 GETNGBL R2 K4 0x8C080509, // 0032 GETMET R2 R2 K9 0x7C080200, // 0033 CALL R2 1 - 0x880C010A, // 0034 GETMBR R3 R0 K10 + 0x880C0108, // 0034 GETMBR R3 R0 K8 0x04080403, // 0035 SUB R2 R2 R3 - 0x880C010B, // 0036 GETMBR R3 R0 K11 + 0x880C011A, // 0036 GETMBR R3 R0 K26 0x24080403, // 0037 GT R2 R2 R3 0x780A0006, // 0038 JMPF R2 #0040 - 0x8C080102, // 0039 GETMET R2 R0 K2 + 0x8C080116, // 0039 GETMET R2 R0 K22 0x7C080200, // 003A CALL R2 1 0x5409FFFC, // 003B LDINT R2 -3 - 0x90020202, // 003C SETMBR R0 K1 R2 - 0x8C08010C, // 003D GETMET R2 R0 K12 + 0x90021402, // 003C SETMBR R0 K10 R2 + 0x8C080123, // 003D GETMET R2 R0 K35 0x7C080200, // 003E CALL R2 1 0x80000400, // 003F RET 0 0x88080100, // 0040 GETMBR R2 R0 K0 @@ -651,22 +619,22 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */ 0x50080200, // 0044 LDBOOL R2 1 0 0x1C080202, // 0045 EQ R2 R1 R2 0x780A0001, // 0046 JMPF R2 #0049 - 0x8C08010D, // 0047 GETMET R2 R0 K13 + 0x8C080124, // 0047 GETMET R2 R0 K36 0x7C080200, // 0048 CALL R2 1 - 0x8C080102, // 0049 GETMET R2 R0 K2 + 0x8C080116, // 0049 GETMET R2 R0 K22 0x7C080200, // 004A CALL R2 1 0x80000400, // 004B RET 0 - 0x88080103, // 004C GETMBR R2 R0 K3 - 0x8C08050E, // 004D GETMET R2 R2 K14 + 0x88080101, // 004C GETMBR R2 R0 K1 + 0x8C080519, // 004D GETMET R2 R2 K25 0x7C080200, // 004E CALL R2 1 0x780A0001, // 004F JMPF R2 #0052 - 0x8C08010F, // 0050 GETMET R2 R0 K15 + 0x8C080125, // 0050 GETMET R2 R0 K37 0x7C080200, // 0051 CALL R2 1 - 0x88080103, // 0052 GETMBR R2 R0 K3 - 0x8C080510, // 0053 GETMET R2 R2 K16 + 0x88080101, // 0052 GETMBR R2 R0 K1 + 0x8C080526, // 0053 GETMET R2 R2 K38 0x7C080200, // 0054 CALL R2 1 0x780A0001, // 0055 JMPF R2 #0058 - 0x8C080111, // 0056 GETMET R2 R0 K17 + 0x8C080127, // 0056 GETMET R2 R0 K39 0x7C080200, // 0057 CALL R2 1 0x80000000, // 0058 RET 0 }) @@ -682,24 +650,20 @@ be_local_closure(class_Matter_TCP_async_listening, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp_connected), - /* K1 */ be_nested_str_weak(tcp), - /* K2 */ be_nested_str_weak(listening), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(listening), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060003, // 0001 JMPF R1 #0006 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x8C040326, // 0003 GETMET R1 R1 K38 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 0x50040000, // 0006 LDBOOL R1 0 0 @@ -717,24 +681,21 @@ be_local_closure(class_Matter_TCP_async_set_timeout, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(TIMEOUT), - /* K1 */ be_nested_str_weak(timeout), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(set_timeout), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 - 0x88040100, // 0003 GETMBR R1 R0 K0 - 0x90020201, // 0004 SETMBR R0 K1 R1 + 0x8804011B, // 0003 GETMBR R1 R0 K27 + 0x90023401, // 0004 SETMBR R0 K26 R1 0x80000000, // 0005 RET 0 }) ) @@ -749,13 +710,13 @@ be_local_closure(class_Matter_TCP_async_event_dnsfailed, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(event_dnsfailed), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -773,47 +734,38 @@ be_local_closure(class_Matter_TCP_async_close, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(tcp), - /* K1 */ be_nested_str_weak(close), - /* K2 */ be_nested_str_weak(fast_loop), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(remove_fast_loop), - /* K5 */ be_nested_str_weak(remove_driver), - /* K6 */ be_nested_str_weak(tcp_connected), - /* K7 */ be_nested_str_weak(event_closed), - }), + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(close), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040316, // 0001 GETMET R1 R1 K22 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8804010F, // 0003 GETMBR R1 R0 K15 0x78060004, // 0004 JMPF R1 #000A - 0xB8060600, // 0005 GETNGBL R1 K3 - 0x8C040304, // 0006 GETMET R1 R1 K4 - 0x880C0102, // 0007 GETMBR R3 R0 K2 + 0xB8060800, // 0005 GETNGBL R1 K4 + 0x8C040310, // 0006 GETMET R1 R1 K16 + 0x880C010F, // 0007 GETMBR R3 R0 K15 0x7C040400, // 0008 CALL R1 2 0x70020003, // 0009 JMP #000E - 0xB8060600, // 000A GETNGBL R1 K3 - 0x8C040305, // 000B GETMET R1 R1 K5 + 0xB8060800, // 000A GETNGBL R1 K4 + 0x8C040328, // 000B GETMET R1 R1 K40 0x5C0C0000, // 000C MOVE R3 R0 0x7C040400, // 000D CALL R1 2 - 0x88040106, // 000E GETMBR R1 R0 K6 + 0x88040100, // 000E GETMBR R1 R0 K0 0x50080200, // 000F LDBOOL R2 1 0 0x1C040202, // 0010 EQ R1 R1 R2 0x78060001, // 0011 JMPF R1 #0014 - 0x8C040107, // 0012 GETMET R1 R0 K7 + 0x8C040124, // 0012 GETMET R1 R0 K36 0x7C040200, // 0013 CALL R1 1 0x50040000, // 0014 LDBOOL R1 0 0 - 0x90020C01, // 0015 SETMBR R0 K6 R1 + 0x90020001, // 0015 SETMBR R0 K0 R1 0x80000000, // 0016 RET 0 }) ) @@ -828,13 +780,13 @@ be_local_closure(class_Matter_TCP_async_event_refused, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TCP_async, /* shared constants */ be_str_weak(event_refused), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index b8cc39780..104fddec9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -3,6 +3,104 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Matter_TLV_item; +// compact class 'Matter_TLV_item' ktab size: 93, total: 205 (saved 896 bytes) +static const bvalue be_ktab_class_Matter_TLV_item[93] = { + /* K0 */ be_nested_str_weak(parent), + /* K1 */ be_nested_str_weak(next_idx), + /* K2 */ be_nested_str_weak(tag_vendor), + /* K3 */ be_nested_str_weak(tag_profile), + /* K4 */ be_nested_str_weak(tag_number), + /* K5 */ be_nested_str_weak(tag_sub), + /* K6 */ be_nested_str_weak(typ), + /* K7 */ be_nested_str_weak(val), + /* K8 */ be_nested_str_weak(reset), + /* K9 */ be_nested_str_weak(TLV), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(RAW), + /* K12 */ be_nested_str_weak(BFALSE), + /* K13 */ be_nested_str_weak(BTRUE), + /* K14 */ be_nested_str_weak(I2), + /* K15 */ be_nested_str_weak(I4), + /* K16 */ be_nested_str_weak(I1), + /* K17 */ be_nested_str_weak(U2), + /* K18 */ be_nested_str_weak(U4), + /* K19 */ be_nested_str_weak(U1), + /* K20 */ be_nested_str_weak(B1), + /* K21 */ be_nested_str_weak(B8), + /* K22 */ be_nested_str_weak(B2), + /* K23 */ be_nested_str_weak(B4), + /* K24 */ be_nested_str_weak(UTF1), + /* K25 */ be_nested_str_weak(UTF8), + /* K26 */ be_nested_str_weak(UTF2), + /* K27 */ be_nested_str_weak(UTF4), + /* K28 */ be_nested_str_weak(_encode_tag_len), + /* K29 */ be_const_int(1), + /* K30 */ be_const_int(2), + /* K31 */ be_nested_str_weak(I8), + /* K32 */ be_nested_str_weak(U8), + /* K33 */ be_nested_str_weak(FLOAT), + /* K34 */ be_nested_str_weak(DOUBLE), + /* K35 */ be_nested_str_weak(value_error), + /* K36 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE), + /* K37 */ be_nested_str_weak(NULL), + /* K38 */ be_nested_str_weak(unsupported_X20type_X20), + /* K39 */ be_nested_str_weak(), + /* K40 */ be_nested_str_weak(Matter_X3A_X3A), + /* K41 */ be_nested_str_weak(0x_X2508X_X20), + /* K42 */ be_nested_str_weak(0x_X2504X_X3A_X3A), + /* K43 */ be_nested_str_weak(0x_X2504X_X3A), + /* K44 */ be_nested_str_weak(_X25i_X20), + /* K45 */ be_const_int(0), + /* K46 */ be_nested_str_weak(_X3D_X20), + /* K47 */ be_nested_str_weak(int), + /* K48 */ be_nested_str_weak(_X25i), + /* K49 */ be_nested_str_weak(U), + /* K50 */ be_nested_str_weak(bool), + /* K51 */ be_nested_str_weak(true), + /* K52 */ be_nested_str_weak(false), + /* K53 */ be_nested_str_weak(null), + /* K54 */ be_nested_str_weak(real), + /* K55 */ be_nested_str_weak(_X25g), + /* K56 */ be_nested_str_weak(string), + /* K57 */ be_nested_str_weak(_X22_X25s_X22), + /* K58 */ be_nested_str_weak(int64), + /* K59 */ be_nested_str_weak(tostring), + /* K60 */ be_nested_str_weak(instance), + /* K61 */ be_nested_str_weak(_X25s), + /* K62 */ be_nested_str_weak(tohex), + /* K63 */ be_nested_str_weak(_X20), + /* K64 */ be_nested_str_weak(_len), + /* K65 */ be_nested_str_weak(frombytes), + /* K66 */ be_nested_str_weak(geti), + /* K67 */ be_nested_str_weak(get), + /* K68 */ be_nested_str_weak(getfloat), + /* K69 */ be_nested_str_weak(asstring), + /* K70 */ be_nested_str_weak(EOC), + /* K71 */ be_nested_str_weak(log), + /* K72 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), + /* K73 */ be_const_int(3), + /* K74 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), + /* K75 */ be_nested_str_weak(set_fulltag), + /* K76 */ be_nested_str_weak(add), + /* K77 */ be_const_class(be_class_Matter_TLV_item), + /* K78 */ be_const_int(1), + /* K79 */ be_nested_str_weak(_cmp_gt), + /* K80 */ be_nested_str_weak(stop_iteration), + /* K81 */ be_nested_str_weak(_encode_tag), + /* K82 */ be_nested_str_weak(copy), + /* K83 */ be_nested_str_weak(resize), + /* K84 */ be_nested_str_weak(tobytes), + /* K85 */ be_nested_str_weak(fromu32), + /* K86 */ be_nested_str_weak(setfloat), + /* K87 */ be_nested_str_weak(string_X20too_X20big), + /* K88 */ be_nested_str_weak(fromstring), + /* K89 */ be_nested_str_weak(frostring), + /* K90 */ be_nested_str_weak(bytes_X20too_X20big), + /* K91 */ be_const_int(3), + /* K92 */ be_const_int(2), +}; + extern const bclass be_class_Matter_TLV_item; @@ -13,22 +111,13 @@ be_local_closure(class_Matter_TLV_item_reset, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(parent), - /* K1 */ be_nested_str_weak(next_idx), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(tag_profile), - /* K4 */ be_nested_str_weak(tag_number), - /* K5 */ be_nested_str_weak(tag_sub), - /* K6 */ be_nested_str_weak(typ), - /* K7 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(reset), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -55,21 +144,17 @@ be_local_closure(class_Matter_TLV_item_set_or_nil, /* name */ be_nested_proto( 5, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(set_or_nil), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C0108, // 0000 GETMET R3 R0 K8 0x7C0C0200, // 0001 CALL R3 1 0x4C0C0000, // 0002 LDNIL R3 0x1C0C0403, // 0003 EQ R3 R2 R3 @@ -81,8 +166,8 @@ be_local_closure(class_Matter_TLV_item_set_or_nil, /* name */ 0x540E0013, // 0009 LDINT R3 20 0x1C0C0203, // 000A EQ R3 R1 R3 0x780E0002, // 000B JMPF R3 #000F - 0x90020201, // 000C SETMBR R0 K1 R1 - 0x90020402, // 000D SETMBR R0 K2 R2 + 0x90020C01, // 000C SETMBR R0 K6 R1 + 0x90020E02, // 000D SETMBR R0 K7 R2 0x80040000, // 000E RET 1 R0 0x80000000, // 000F RET 0 }) @@ -98,86 +183,53 @@ be_local_closure(class_Matter_TLV_item_encode_len, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[32]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(typ), - /* K3 */ be_nested_str_weak(RAW), - /* K4 */ be_nested_str_weak(val), - /* K5 */ be_nested_str_weak(BFALSE), - /* K6 */ be_nested_str_weak(BTRUE), - /* K7 */ be_nested_str_weak(I2), - /* K8 */ be_nested_str_weak(I4), - /* K9 */ be_nested_str_weak(I1), - /* K10 */ be_nested_str_weak(U2), - /* K11 */ be_nested_str_weak(U4), - /* K12 */ be_nested_str_weak(U1), - /* K13 */ be_nested_str_weak(B1), - /* K14 */ be_nested_str_weak(B8), - /* K15 */ be_nested_str_weak(B2), - /* K16 */ be_nested_str_weak(B4), - /* K17 */ be_nested_str_weak(UTF1), - /* K18 */ be_nested_str_weak(UTF8), - /* K19 */ be_nested_str_weak(UTF2), - /* K20 */ be_nested_str_weak(UTF4), - /* K21 */ be_nested_str_weak(_encode_tag_len), - /* K22 */ be_const_int(1), - /* K23 */ be_const_int(2), - /* K24 */ be_nested_str_weak(I8), - /* K25 */ be_nested_str_weak(U8), - /* K26 */ be_nested_str_weak(FLOAT), - /* K27 */ be_nested_str_weak(DOUBLE), - /* K28 */ be_nested_str_weak(value_error), - /* K29 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE), - /* K30 */ be_nested_str_weak(NULL), - /* K31 */ be_nested_str_weak(unsupported_X20type_X20), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(encode_len), &be_const_str_solidified, ( &(const binstruction[258]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x58080001, // 0001 LDCONST R2 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x88100303, // 0003 GETMBR R4 R1 K3 + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x5808000A, // 0001 LDCONST R2 K10 + 0x880C0106, // 0002 GETMBR R3 R0 K6 + 0x8810030B, // 0003 GETMBR R4 R1 K11 0x1C0C0604, // 0004 EQ R3 R3 R4 0x780E0003, // 0005 JMPF R3 #000A 0x600C000C, // 0006 GETGBL R3 G12 - 0x88100104, // 0007 GETMBR R4 R0 K4 + 0x88100107, // 0007 GETMBR R4 R0 K7 0x7C0C0200, // 0008 CALL R3 1 0x80040600, // 0009 RET 1 R3 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x88100305, // 000B GETMBR R4 R1 K5 + 0x880C0106, // 000A GETMBR R3 R0 K6 + 0x8810030C, // 000B GETMBR R4 R1 K12 0x1C0C0604, // 000C EQ R3 R3 R4 0x740E0003, // 000D JMPT R3 #0012 - 0x880C0102, // 000E GETMBR R3 R0 K2 - 0x88100306, // 000F GETMBR R4 R1 K6 + 0x880C0106, // 000E GETMBR R3 R0 K6 + 0x8810030D, // 000F GETMBR R4 R1 K13 0x1C0C0604, // 0010 EQ R3 R3 R4 0x780E0008, // 0011 JMPF R3 #001B 0x600C0017, // 0012 GETGBL R3 G23 - 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x88100107, // 0013 GETMBR R4 R0 K7 0x7C0C0200, // 0014 CALL R3 1 0x780E0001, // 0015 JMPF R3 #0018 - 0x880C0306, // 0016 GETMBR R3 R1 K6 + 0x880C030D, // 0016 GETMBR R3 R1 K13 0x70020000, // 0017 JMP #0019 - 0x880C0305, // 0018 GETMBR R3 R1 K5 - 0x90020403, // 0019 SETMBR R0 K2 R3 + 0x880C030C, // 0018 GETMBR R3 R1 K12 + 0x90020C03, // 0019 SETMBR R0 K6 R3 0x70020070, // 001A JMP #008C - 0x880C0102, // 001B GETMBR R3 R0 K2 - 0x88100307, // 001C GETMBR R4 R1 K7 + 0x880C0106, // 001B GETMBR R3 R0 K6 + 0x8810030E, // 001C GETMBR R4 R1 K14 0x280C0604, // 001D GE R3 R3 R4 0x780E0018, // 001E JMPF R3 #0038 - 0x880C0102, // 001F GETMBR R3 R0 K2 - 0x88100308, // 0020 GETMBR R4 R1 K8 + 0x880C0106, // 001F GETMBR R3 R0 K6 + 0x8810030F, // 0020 GETMBR R4 R1 K15 0x180C0604, // 0021 LE R3 R3 R4 0x780E0014, // 0022 JMPF R3 #0038 0x600C0009, // 0023 GETGBL R3 G9 - 0x88100104, // 0024 GETMBR R4 R0 K4 + 0x88100107, // 0024 GETMBR R4 R0 K7 0x7C0C0200, // 0025 CALL R3 1 0x5412007E, // 0026 LDINT R4 127 0x18100604, // 0027 LE R4 R3 R4 @@ -185,8 +237,8 @@ be_local_closure(class_Matter_TLV_item_encode_len, /* name */ 0x5411FF7F, // 0029 LDINT R4 -128 0x28100604, // 002A GE R4 R3 R4 0x78120002, // 002B JMPF R4 #002F - 0x88100309, // 002C GETMBR R4 R1 K9 - 0x90020404, // 002D SETMBR R0 K2 R4 + 0x88100310, // 002C GETMBR R4 R1 K16 + 0x90020C04, // 002D SETMBR R0 K6 R4 0x70020007, // 002E JMP #0037 0x54127FFE, // 002F LDINT R4 32767 0x18100604, // 0030 LE R4 R3 R4 @@ -194,210 +246,210 @@ be_local_closure(class_Matter_TLV_item_encode_len, /* name */ 0x54117FFF, // 0032 LDINT R4 -32768 0x28100604, // 0033 GE R4 R3 R4 0x78120001, // 0034 JMPF R4 #0037 - 0x88100307, // 0035 GETMBR R4 R1 K7 - 0x90020404, // 0036 SETMBR R0 K2 R4 + 0x8810030E, // 0035 GETMBR R4 R1 K14 + 0x90020C04, // 0036 SETMBR R0 K6 R4 0x70020053, // 0037 JMP #008C - 0x880C0102, // 0038 GETMBR R3 R0 K2 - 0x8810030A, // 0039 GETMBR R4 R1 K10 + 0x880C0106, // 0038 GETMBR R3 R0 K6 + 0x88100311, // 0039 GETMBR R4 R1 K17 0x280C0604, // 003A GE R3 R3 R4 0x780E0016, // 003B JMPF R3 #0053 - 0x880C0102, // 003C GETMBR R3 R0 K2 - 0x8810030B, // 003D GETMBR R4 R1 K11 + 0x880C0106, // 003C GETMBR R3 R0 K6 + 0x88100312, // 003D GETMBR R4 R1 K18 0x180C0604, // 003E LE R3 R3 R4 0x780E0012, // 003F JMPF R3 #0053 0x600C0009, // 0040 GETGBL R3 G9 - 0x88100104, // 0041 GETMBR R4 R0 K4 + 0x88100107, // 0041 GETMBR R4 R0 K7 0x7C0C0200, // 0042 CALL R3 1 0x541200FE, // 0043 LDINT R4 255 0x18100604, // 0044 LE R4 R3 R4 0x78120004, // 0045 JMPF R4 #004B - 0x28100701, // 0046 GE R4 R3 K1 + 0x2810070A, // 0046 GE R4 R3 K10 0x78120002, // 0047 JMPF R4 #004B - 0x8810030C, // 0048 GETMBR R4 R1 K12 - 0x90020404, // 0049 SETMBR R0 K2 R4 + 0x88100313, // 0048 GETMBR R4 R1 K19 + 0x90020C04, // 0049 SETMBR R0 K6 R4 0x70020006, // 004A JMP #0052 0x5412FFFE, // 004B LDINT R4 65535 0x18100604, // 004C LE R4 R3 R4 0x78120003, // 004D JMPF R4 #0052 - 0x28100701, // 004E GE R4 R3 K1 + 0x2810070A, // 004E GE R4 R3 K10 0x78120001, // 004F JMPF R4 #0052 - 0x8810030A, // 0050 GETMBR R4 R1 K10 - 0x90020404, // 0051 SETMBR R0 K2 R4 + 0x88100311, // 0050 GETMBR R4 R1 K17 + 0x90020C04, // 0051 SETMBR R0 K6 R4 0x70020038, // 0052 JMP #008C - 0x880C0102, // 0053 GETMBR R3 R0 K2 - 0x8810030D, // 0054 GETMBR R4 R1 K13 + 0x880C0106, // 0053 GETMBR R3 R0 K6 + 0x88100314, // 0054 GETMBR R4 R1 K20 0x280C0604, // 0055 GE R3 R3 R4 0x780E0018, // 0056 JMPF R3 #0070 - 0x880C0102, // 0057 GETMBR R3 R0 K2 - 0x8810030E, // 0058 GETMBR R4 R1 K14 + 0x880C0106, // 0057 GETMBR R3 R0 K6 + 0x88100315, // 0058 GETMBR R4 R1 K21 0x180C0604, // 0059 LE R3 R3 R4 0x780E0014, // 005A JMPF R3 #0070 0x600C000C, // 005B GETGBL R3 G12 - 0x88100104, // 005C GETMBR R4 R0 K4 + 0x88100107, // 005C GETMBR R4 R0 K7 0x7C0C0200, // 005D CALL R3 1 0x541200FE, // 005E LDINT R4 255 0x180C0604, // 005F LE R3 R3 R4 0x780E0002, // 0060 JMPF R3 #0064 - 0x880C030D, // 0061 GETMBR R3 R1 K13 - 0x90020403, // 0062 SETMBR R0 K2 R3 + 0x880C0314, // 0061 GETMBR R3 R1 K20 + 0x90020C03, // 0062 SETMBR R0 K6 R3 0x7002000A, // 0063 JMP #006F 0x600C000C, // 0064 GETGBL R3 G12 - 0x88100104, // 0065 GETMBR R4 R0 K4 + 0x88100107, // 0065 GETMBR R4 R0 K7 0x7C0C0200, // 0066 CALL R3 1 0x5412FFFE, // 0067 LDINT R4 65535 0x180C0604, // 0068 LE R3 R3 R4 0x780E0002, // 0069 JMPF R3 #006D - 0x880C030F, // 006A GETMBR R3 R1 K15 - 0x90020403, // 006B SETMBR R0 K2 R3 + 0x880C0316, // 006A GETMBR R3 R1 K22 + 0x90020C03, // 006B SETMBR R0 K6 R3 0x70020001, // 006C JMP #006F - 0x880C0310, // 006D GETMBR R3 R1 K16 - 0x90020403, // 006E SETMBR R0 K2 R3 + 0x880C0317, // 006D GETMBR R3 R1 K23 + 0x90020C03, // 006E SETMBR R0 K6 R3 0x7002001B, // 006F JMP #008C - 0x880C0102, // 0070 GETMBR R3 R0 K2 - 0x88100311, // 0071 GETMBR R4 R1 K17 + 0x880C0106, // 0070 GETMBR R3 R0 K6 + 0x88100318, // 0071 GETMBR R4 R1 K24 0x280C0604, // 0072 GE R3 R3 R4 0x780E0017, // 0073 JMPF R3 #008C - 0x880C0102, // 0074 GETMBR R3 R0 K2 - 0x88100312, // 0075 GETMBR R4 R1 K18 + 0x880C0106, // 0074 GETMBR R3 R0 K6 + 0x88100319, // 0075 GETMBR R4 R1 K25 0x180C0604, // 0076 LE R3 R3 R4 0x780E0013, // 0077 JMPF R3 #008C 0x600C000C, // 0078 GETGBL R3 G12 - 0x88100104, // 0079 GETMBR R4 R0 K4 + 0x88100107, // 0079 GETMBR R4 R0 K7 0x7C0C0200, // 007A CALL R3 1 0x541200FE, // 007B LDINT R4 255 0x180C0604, // 007C LE R3 R3 R4 0x780E0002, // 007D JMPF R3 #0081 - 0x880C0311, // 007E GETMBR R3 R1 K17 - 0x90020403, // 007F SETMBR R0 K2 R3 + 0x880C0318, // 007E GETMBR R3 R1 K24 + 0x90020C03, // 007F SETMBR R0 K6 R3 0x7002000A, // 0080 JMP #008C 0x600C000C, // 0081 GETGBL R3 G12 - 0x88100104, // 0082 GETMBR R4 R0 K4 + 0x88100107, // 0082 GETMBR R4 R0 K7 0x7C0C0200, // 0083 CALL R3 1 0x5412FFFE, // 0084 LDINT R4 65535 0x180C0604, // 0085 LE R3 R3 R4 0x780E0002, // 0086 JMPF R3 #008A - 0x880C0313, // 0087 GETMBR R3 R1 K19 - 0x90020403, // 0088 SETMBR R0 K2 R3 + 0x880C031A, // 0087 GETMBR R3 R1 K26 + 0x90020C03, // 0088 SETMBR R0 K6 R3 0x70020001, // 0089 JMP #008C - 0x880C0314, // 008A GETMBR R3 R1 K20 - 0x90020403, // 008B SETMBR R0 K2 R3 - 0x8C0C0115, // 008C GETMET R3 R0 K21 + 0x880C031B, // 008A GETMBR R3 R1 K27 + 0x90020C03, // 008B SETMBR R0 K6 R3 + 0x8C0C011C, // 008C GETMET R3 R0 K28 0x7C0C0200, // 008D CALL R3 1 0x00080403, // 008E ADD R2 R2 R3 - 0x880C0102, // 008F GETMBR R3 R0 K2 - 0x88100309, // 0090 GETMBR R4 R1 K9 + 0x880C0106, // 008F GETMBR R3 R0 K6 + 0x88100310, // 0090 GETMBR R4 R1 K16 0x1C0C0604, // 0091 EQ R3 R3 R4 0x740E0003, // 0092 JMPT R3 #0097 - 0x880C0102, // 0093 GETMBR R3 R0 K2 - 0x8810030C, // 0094 GETMBR R4 R1 K12 + 0x880C0106, // 0093 GETMBR R3 R0 K6 + 0x88100313, // 0094 GETMBR R4 R1 K19 0x1C0C0604, // 0095 EQ R3 R3 R4 0x780E0001, // 0096 JMPF R3 #0099 - 0x00080516, // 0097 ADD R2 R2 K22 + 0x0008051D, // 0097 ADD R2 R2 K29 0x70020067, // 0098 JMP #0101 - 0x880C0102, // 0099 GETMBR R3 R0 K2 - 0x88100307, // 009A GETMBR R4 R1 K7 + 0x880C0106, // 0099 GETMBR R3 R0 K6 + 0x8810030E, // 009A GETMBR R4 R1 K14 0x1C0C0604, // 009B EQ R3 R3 R4 0x740E0003, // 009C JMPT R3 #00A1 - 0x880C0102, // 009D GETMBR R3 R0 K2 - 0x8810030A, // 009E GETMBR R4 R1 K10 + 0x880C0106, // 009D GETMBR R3 R0 K6 + 0x88100311, // 009E GETMBR R4 R1 K17 0x1C0C0604, // 009F EQ R3 R3 R4 0x780E0001, // 00A0 JMPF R3 #00A3 - 0x00080517, // 00A1 ADD R2 R2 K23 + 0x0008051E, // 00A1 ADD R2 R2 K30 0x7002005D, // 00A2 JMP #0101 - 0x880C0102, // 00A3 GETMBR R3 R0 K2 - 0x88100308, // 00A4 GETMBR R4 R1 K8 + 0x880C0106, // 00A3 GETMBR R3 R0 K6 + 0x8810030F, // 00A4 GETMBR R4 R1 K15 0x1C0C0604, // 00A5 EQ R3 R3 R4 0x740E0003, // 00A6 JMPT R3 #00AB - 0x880C0102, // 00A7 GETMBR R3 R0 K2 - 0x8810030B, // 00A8 GETMBR R4 R1 K11 + 0x880C0106, // 00A7 GETMBR R3 R0 K6 + 0x88100312, // 00A8 GETMBR R4 R1 K18 0x1C0C0604, // 00A9 EQ R3 R3 R4 0x780E0002, // 00AA JMPF R3 #00AE 0x540E0003, // 00AB LDINT R3 4 0x00080403, // 00AC ADD R2 R2 R3 0x70020052, // 00AD JMP #0101 - 0x880C0102, // 00AE GETMBR R3 R0 K2 - 0x88100318, // 00AF GETMBR R4 R1 K24 + 0x880C0106, // 00AE GETMBR R3 R0 K6 + 0x8810031F, // 00AF GETMBR R4 R1 K31 0x1C0C0604, // 00B0 EQ R3 R3 R4 0x740E0003, // 00B1 JMPT R3 #00B6 - 0x880C0102, // 00B2 GETMBR R3 R0 K2 - 0x88100319, // 00B3 GETMBR R4 R1 K25 + 0x880C0106, // 00B2 GETMBR R3 R0 K6 + 0x88100320, // 00B3 GETMBR R4 R1 K32 0x1C0C0604, // 00B4 EQ R3 R3 R4 0x780E0002, // 00B5 JMPF R3 #00B9 0x540E0007, // 00B6 LDINT R3 8 0x00080403, // 00B7 ADD R2 R2 R3 0x70020047, // 00B8 JMP #0101 - 0x880C0102, // 00B9 GETMBR R3 R0 K2 - 0x88100305, // 00BA GETMBR R4 R1 K5 + 0x880C0106, // 00B9 GETMBR R3 R0 K6 + 0x8810030C, // 00BA GETMBR R4 R1 K12 0x1C0C0604, // 00BB EQ R3 R3 R4 0x740E0003, // 00BC JMPT R3 #00C1 - 0x880C0102, // 00BD GETMBR R3 R0 K2 - 0x88100306, // 00BE GETMBR R4 R1 K6 + 0x880C0106, // 00BD GETMBR R3 R0 K6 + 0x8810030D, // 00BE GETMBR R4 R1 K13 0x1C0C0604, // 00BF EQ R3 R3 R4 0x780E0000, // 00C0 JMPF R3 #00C2 0x7002003E, // 00C1 JMP #0101 - 0x880C0102, // 00C2 GETMBR R3 R0 K2 - 0x8810031A, // 00C3 GETMBR R4 R1 K26 + 0x880C0106, // 00C2 GETMBR R3 R0 K6 + 0x88100321, // 00C3 GETMBR R4 R1 K33 0x1C0C0604, // 00C4 EQ R3 R3 R4 0x780E0002, // 00C5 JMPF R3 #00C9 0x540E0003, // 00C6 LDINT R3 4 0x00080403, // 00C7 ADD R2 R2 R3 0x70020037, // 00C8 JMP #0101 - 0x880C0102, // 00C9 GETMBR R3 R0 K2 - 0x8810031B, // 00CA GETMBR R4 R1 K27 + 0x880C0106, // 00C9 GETMBR R3 R0 K6 + 0x88100322, // 00CA GETMBR R4 R1 K34 0x1C0C0604, // 00CB EQ R3 R3 R4 0x780E0001, // 00CC JMPF R3 #00CF - 0xB006391D, // 00CD RAISE 1 K28 K29 + 0xB0064724, // 00CD RAISE 1 K35 K36 0x70020031, // 00CE JMP #0101 - 0x880C0102, // 00CF GETMBR R3 R0 K2 - 0x88100311, // 00D0 GETMBR R4 R1 K17 + 0x880C0106, // 00CF GETMBR R3 R0 K6 + 0x88100318, // 00D0 GETMBR R4 R1 K24 0x1C0C0604, // 00D1 EQ R3 R3 R4 0x780E0005, // 00D2 JMPF R3 #00D9 0x600C000C, // 00D3 GETGBL R3 G12 - 0x88100104, // 00D4 GETMBR R4 R0 K4 + 0x88100107, // 00D4 GETMBR R4 R0 K7 0x7C0C0200, // 00D5 CALL R3 1 - 0x000E2C03, // 00D6 ADD R3 K22 R3 + 0x000E3A03, // 00D6 ADD R3 K29 R3 0x00080403, // 00D7 ADD R2 R2 R3 0x70020027, // 00D8 JMP #0101 - 0x880C0102, // 00D9 GETMBR R3 R0 K2 - 0x88100313, // 00DA GETMBR R4 R1 K19 + 0x880C0106, // 00D9 GETMBR R3 R0 K6 + 0x8810031A, // 00DA GETMBR R4 R1 K26 0x1C0C0604, // 00DB EQ R3 R3 R4 0x780E0005, // 00DC JMPF R3 #00E3 0x600C000C, // 00DD GETGBL R3 G12 - 0x88100104, // 00DE GETMBR R4 R0 K4 + 0x88100107, // 00DE GETMBR R4 R0 K7 0x7C0C0200, // 00DF CALL R3 1 - 0x000E2E03, // 00E0 ADD R3 K23 R3 + 0x000E3C03, // 00E0 ADD R3 K30 R3 0x00080403, // 00E1 ADD R2 R2 R3 0x7002001D, // 00E2 JMP #0101 - 0x880C0102, // 00E3 GETMBR R3 R0 K2 - 0x8810030D, // 00E4 GETMBR R4 R1 K13 + 0x880C0106, // 00E3 GETMBR R3 R0 K6 + 0x88100314, // 00E4 GETMBR R4 R1 K20 0x1C0C0604, // 00E5 EQ R3 R3 R4 0x780E0005, // 00E6 JMPF R3 #00ED 0x600C000C, // 00E7 GETGBL R3 G12 - 0x88100104, // 00E8 GETMBR R4 R0 K4 + 0x88100107, // 00E8 GETMBR R4 R0 K7 0x7C0C0200, // 00E9 CALL R3 1 - 0x000E2C03, // 00EA ADD R3 K22 R3 + 0x000E3A03, // 00EA ADD R3 K29 R3 0x00080403, // 00EB ADD R2 R2 R3 0x70020013, // 00EC JMP #0101 - 0x880C0102, // 00ED GETMBR R3 R0 K2 - 0x8810030F, // 00EE GETMBR R4 R1 K15 + 0x880C0106, // 00ED GETMBR R3 R0 K6 + 0x88100316, // 00EE GETMBR R4 R1 K22 0x1C0C0604, // 00EF EQ R3 R3 R4 0x780E0005, // 00F0 JMPF R3 #00F7 0x600C000C, // 00F1 GETGBL R3 G12 - 0x88100104, // 00F2 GETMBR R4 R0 K4 + 0x88100107, // 00F2 GETMBR R4 R0 K7 0x7C0C0200, // 00F3 CALL R3 1 - 0x000E2E03, // 00F4 ADD R3 K23 R3 + 0x000E3C03, // 00F4 ADD R3 K30 R3 0x00080403, // 00F5 ADD R2 R2 R3 0x70020009, // 00F6 JMP #0101 - 0x880C0102, // 00F7 GETMBR R3 R0 K2 - 0x8810031E, // 00F8 GETMBR R4 R1 K30 + 0x880C0106, // 00F7 GETMBR R3 R0 K6 + 0x88100325, // 00F8 GETMBR R4 R1 K37 0x1C0C0604, // 00F9 EQ R3 R3 R4 0x780E0000, // 00FA JMPF R3 #00FC 0x70020004, // 00FB JMP #0101 0x600C0008, // 00FC GETGBL R3 G8 - 0x88100102, // 00FD GETMBR R4 R0 K2 + 0x88100106, // 00FD GETMBR R4 R0 K6 0x7C0C0200, // 00FE CALL R3 1 - 0x000E3E03, // 00FF ADD R3 K31 R3 - 0xB0063803, // 0100 RAISE 1 K28 R3 + 0x000E4C03, // 00FF ADD R3 K38 R3 + 0xB0064603, // 0100 RAISE 1 K35 R3 0x80040400, // 0101 RET 1 R2 }) ) @@ -412,21 +464,17 @@ be_local_closure(class_Matter_TLV_item_set, /* name */ be_nested_proto( 5, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(reset), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(set), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C0108, // 0000 GETMET R3 R0 K8 0x7C0C0200, // 0001 CALL R3 1 0x4C0C0000, // 0002 LDNIL R3 0x200C0403, // 0003 NE R3 R2 R3 @@ -434,8 +482,8 @@ be_local_closure(class_Matter_TLV_item_set, /* name */ 0x540E0013, // 0005 LDINT R3 20 0x1C0C0203, // 0006 EQ R3 R1 R3 0x780E0002, // 0007 JMPF R3 #000B - 0x90020201, // 0008 SETMBR R0 K1 R1 - 0x90020402, // 0009 SETMBR R0 K2 R2 + 0x90020C01, // 0008 SETMBR R0 K6 R1 + 0x90020E02, // 0009 SETMBR R0 K7 R2 0x80040000, // 000A RET 1 R0 0x80000000, // 000B RET 0 }) @@ -451,13 +499,13 @@ be_local_closure(class_Matter_TLV_item_to_TLV, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(to_TLV), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -475,205 +523,170 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(tag_profile), - /* K2 */ be_nested_str_weak(Matter_X3A_X3A), - /* K3 */ be_nested_str_weak(tag_number), - /* K4 */ be_nested_str_weak(0x_X2508X_X20), - /* K5 */ be_nested_str_weak(tag_vendor), - /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A), - /* K7 */ be_nested_str_weak(0x_X2504X_X3A), - /* K8 */ be_nested_str_weak(tag_sub), - /* K9 */ be_nested_str_weak(_X25i_X20), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(_X3D_X20), - /* K12 */ be_nested_str_weak(val), - /* K13 */ be_nested_str_weak(int), - /* K14 */ be_nested_str_weak(_X25i), - /* K15 */ be_nested_str_weak(typ), - /* K16 */ be_nested_str_weak(TLV), - /* K17 */ be_nested_str_weak(U1), - /* K18 */ be_nested_str_weak(U8), - /* K19 */ be_nested_str_weak(U), - /* K20 */ be_nested_str_weak(bool), - /* K21 */ be_nested_str_weak(true), - /* K22 */ be_nested_str_weak(false), - /* K23 */ be_nested_str_weak(null), - /* K24 */ be_nested_str_weak(real), - /* K25 */ be_nested_str_weak(_X25g), - /* K26 */ be_nested_str_weak(string), - /* K27 */ be_nested_str_weak(_X22_X25s_X22), - /* K28 */ be_nested_str_weak(int64), - /* K29 */ be_nested_str_weak(tostring), - /* K30 */ be_nested_str_weak(instance), - /* K31 */ be_nested_str_weak(_X25s), - /* K32 */ be_nested_str_weak(tohex), - /* K33 */ be_nested_str_weak(_X20), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[167]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080027, // 0000 LDCONST R2 K39 0xA802009C, // 0001 EXBLK 0 #009F 0x500C0200, // 0002 LDBOOL R3 1 0 0x200C0203, // 0003 NE R3 R1 R3 0x780E0038, // 0004 JMPF R3 #003E - 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x880C0103, // 0005 GETMBR R3 R0 K3 0x5411FFFE, // 0006 LDINT R4 -1 0x1C0C0604, // 0007 EQ R3 R3 R4 0x780E000A, // 0008 JMPF R3 #0014 - 0x00080502, // 0009 ADD R2 R2 K2 - 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x00080528, // 0009 ADD R2 R2 K40 + 0x880C0104, // 000A GETMBR R3 R0 K4 0x4C100000, // 000B LDNIL R4 0x200C0604, // 000C NE R3 R3 R4 0x780E0004, // 000D JMPF R3 #0013 0x600C0018, // 000E GETGBL R3 G24 - 0x58100004, // 000F LDCONST R4 K4 - 0x88140103, // 0010 GETMBR R5 R0 K3 + 0x58100029, // 000F LDCONST R4 K41 + 0x88140104, // 0010 GETMBR R5 R0 K4 0x7C0C0400, // 0011 CALL R3 2 0x00080403, // 0012 ADD R2 R2 R3 0x70020023, // 0013 JMP #0038 - 0x880C0105, // 0014 GETMBR R3 R0 K5 + 0x880C0102, // 0014 GETMBR R3 R0 K2 0x4C100000, // 0015 LDNIL R4 0x200C0604, // 0016 NE R3 R3 R4 0x780E0004, // 0017 JMPF R3 #001D 0x600C0018, // 0018 GETGBL R3 G24 - 0x58100006, // 0019 LDCONST R4 K6 - 0x88140105, // 001A GETMBR R5 R0 K5 + 0x5810002A, // 0019 LDCONST R4 K42 + 0x88140102, // 001A GETMBR R5 R0 K2 0x7C0C0400, // 001B CALL R3 2 0x00080403, // 001C ADD R2 R2 R3 - 0x880C0101, // 001D GETMBR R3 R0 K1 + 0x880C0103, // 001D GETMBR R3 R0 K3 0x4C100000, // 001E LDNIL R4 0x200C0604, // 001F NE R3 R3 R4 0x780E0004, // 0020 JMPF R3 #0026 0x600C0018, // 0021 GETGBL R3 G24 - 0x58100007, // 0022 LDCONST R4 K7 - 0x88140101, // 0023 GETMBR R5 R0 K1 + 0x5810002B, // 0022 LDCONST R4 K43 + 0x88140103, // 0023 GETMBR R5 R0 K3 0x7C0C0400, // 0024 CALL R3 2 0x00080403, // 0025 ADD R2 R2 R3 - 0x880C0103, // 0026 GETMBR R3 R0 K3 + 0x880C0104, // 0026 GETMBR R3 R0 K4 0x4C100000, // 0027 LDNIL R4 0x200C0604, // 0028 NE R3 R3 R4 0x780E0004, // 0029 JMPF R3 #002F 0x600C0018, // 002A GETGBL R3 G24 - 0x58100004, // 002B LDCONST R4 K4 - 0x88140103, // 002C GETMBR R5 R0 K3 + 0x58100029, // 002B LDCONST R4 K41 + 0x88140104, // 002C GETMBR R5 R0 K4 0x7C0C0400, // 002D CALL R3 2 0x00080403, // 002E ADD R2 R2 R3 - 0x880C0108, // 002F GETMBR R3 R0 K8 + 0x880C0105, // 002F GETMBR R3 R0 K5 0x4C100000, // 0030 LDNIL R4 0x200C0604, // 0031 NE R3 R3 R4 0x780E0004, // 0032 JMPF R3 #0038 0x600C0018, // 0033 GETGBL R3 G24 - 0x58100009, // 0034 LDCONST R4 K9 - 0x88140108, // 0035 GETMBR R5 R0 K8 + 0x5810002C, // 0034 LDCONST R4 K44 + 0x88140105, // 0035 GETMBR R5 R0 K5 0x7C0C0400, // 0036 CALL R3 2 0x00080403, // 0037 ADD R2 R2 R3 0x600C000C, // 0038 GETGBL R3 G12 0x5C100400, // 0039 MOVE R4 R2 0x7C0C0200, // 003A CALL R3 1 - 0x240C070A, // 003B GT R3 R3 K10 + 0x240C072D, // 003B GT R3 R3 K45 0x780E0000, // 003C JMPF R3 #003E - 0x0008050B, // 003D ADD R2 R2 K11 + 0x0008052E, // 003D ADD R2 R2 K46 0x600C0004, // 003E GETGBL R3 G4 - 0x8810010C, // 003F GETMBR R4 R0 K12 + 0x88100107, // 003F GETMBR R4 R0 K7 0x7C0C0200, // 0040 CALL R3 1 - 0x1C0C070D, // 0041 EQ R3 R3 K13 + 0x1C0C072F, // 0041 EQ R3 R3 K47 0x780E0010, // 0042 JMPF R3 #0054 0x600C0018, // 0043 GETGBL R3 G24 - 0x5810000E, // 0044 LDCONST R4 K14 - 0x8814010C, // 0045 GETMBR R5 R0 K12 + 0x58100030, // 0044 LDCONST R4 K48 + 0x88140107, // 0045 GETMBR R5 R0 K7 0x7C0C0400, // 0046 CALL R3 2 0x00080403, // 0047 ADD R2 R2 R3 - 0x880C010F, // 0048 GETMBR R3 R0 K15 - 0x88100110, // 0049 GETMBR R4 R0 K16 - 0x88100911, // 004A GETMBR R4 R4 K17 + 0x880C0106, // 0048 GETMBR R3 R0 K6 + 0x88100109, // 0049 GETMBR R4 R0 K9 + 0x88100913, // 004A GETMBR R4 R4 K19 0x280C0604, // 004B GE R3 R3 R4 0x780E0005, // 004C JMPF R3 #0053 - 0x880C010F, // 004D GETMBR R3 R0 K15 - 0x88100110, // 004E GETMBR R4 R0 K16 - 0x88100912, // 004F GETMBR R4 R4 K18 + 0x880C0106, // 004D GETMBR R3 R0 K6 + 0x88100109, // 004E GETMBR R4 R0 K9 + 0x88100920, // 004F GETMBR R4 R4 K32 0x180C0604, // 0050 LE R3 R3 R4 0x780E0000, // 0051 JMPF R3 #0053 - 0x00080513, // 0052 ADD R2 R2 K19 + 0x00080531, // 0052 ADD R2 R2 K49 0x70020048, // 0053 JMP #009D 0x600C0004, // 0054 GETGBL R3 G4 - 0x8810010C, // 0055 GETMBR R4 R0 K12 + 0x88100107, // 0055 GETMBR R4 R0 K7 0x7C0C0200, // 0056 CALL R3 1 - 0x1C0C0714, // 0057 EQ R3 R3 K20 + 0x1C0C0732, // 0057 EQ R3 R3 K50 0x780E0006, // 0058 JMPF R3 #0060 - 0x880C010C, // 0059 GETMBR R3 R0 K12 + 0x880C0107, // 0059 GETMBR R3 R0 K7 0x780E0001, // 005A JMPF R3 #005D - 0x580C0015, // 005B LDCONST R3 K21 + 0x580C0033, // 005B LDCONST R3 K51 0x70020000, // 005C JMP #005E - 0x580C0016, // 005D LDCONST R3 K22 + 0x580C0034, // 005D LDCONST R3 K52 0x00080403, // 005E ADD R2 R2 R3 0x7002003C, // 005F JMP #009D - 0x880C010C, // 0060 GETMBR R3 R0 K12 + 0x880C0107, // 0060 GETMBR R3 R0 K7 0x4C100000, // 0061 LDNIL R4 0x1C0C0604, // 0062 EQ R3 R3 R4 0x780E0001, // 0063 JMPF R3 #0066 - 0x00080517, // 0064 ADD R2 R2 K23 + 0x00080535, // 0064 ADD R2 R2 K53 0x70020036, // 0065 JMP #009D 0x600C0004, // 0066 GETGBL R3 G4 - 0x8810010C, // 0067 GETMBR R4 R0 K12 + 0x88100107, // 0067 GETMBR R4 R0 K7 0x7C0C0200, // 0068 CALL R3 1 - 0x1C0C0718, // 0069 EQ R3 R3 K24 + 0x1C0C0736, // 0069 EQ R3 R3 K54 0x780E0005, // 006A JMPF R3 #0071 0x600C0018, // 006B GETGBL R3 G24 - 0x58100019, // 006C LDCONST R4 K25 - 0x8814010C, // 006D GETMBR R5 R0 K12 + 0x58100037, // 006C LDCONST R4 K55 + 0x88140107, // 006D GETMBR R5 R0 K7 0x7C0C0400, // 006E CALL R3 2 0x00080403, // 006F ADD R2 R2 R3 0x7002002B, // 0070 JMP #009D 0x600C0004, // 0071 GETGBL R3 G4 - 0x8810010C, // 0072 GETMBR R4 R0 K12 + 0x88100107, // 0072 GETMBR R4 R0 K7 0x7C0C0200, // 0073 CALL R3 1 - 0x1C0C071A, // 0074 EQ R3 R3 K26 + 0x1C0C0738, // 0074 EQ R3 R3 K56 0x780E0005, // 0075 JMPF R3 #007C 0x600C0018, // 0076 GETGBL R3 G24 - 0x5810001B, // 0077 LDCONST R4 K27 - 0x8814010C, // 0078 GETMBR R5 R0 K12 + 0x58100039, // 0077 LDCONST R4 K57 + 0x88140107, // 0078 GETMBR R5 R0 K7 0x7C0C0400, // 0079 CALL R3 2 0x00080403, // 007A ADD R2 R2 R3 0x70020020, // 007B JMP #009D 0x600C000F, // 007C GETGBL R3 G15 - 0x8810010C, // 007D GETMBR R4 R0 K12 - 0xB8163800, // 007E GETNGBL R5 K28 + 0x88100107, // 007D GETMBR R4 R0 K7 + 0xB8167400, // 007E GETNGBL R5 K58 0x7C0C0400, // 007F CALL R3 2 0x780E000F, // 0080 JMPF R3 #0091 - 0x880C010C, // 0081 GETMBR R3 R0 K12 - 0x8C0C071D, // 0082 GETMET R3 R3 K29 + 0x880C0107, // 0081 GETMBR R3 R0 K7 + 0x8C0C073B, // 0082 GETMET R3 R3 K59 0x7C0C0200, // 0083 CALL R3 1 0x00080403, // 0084 ADD R2 R2 R3 - 0x880C010F, // 0085 GETMBR R3 R0 K15 - 0x88100110, // 0086 GETMBR R4 R0 K16 - 0x88100911, // 0087 GETMBR R4 R4 K17 + 0x880C0106, // 0085 GETMBR R3 R0 K6 + 0x88100109, // 0086 GETMBR R4 R0 K9 + 0x88100913, // 0087 GETMBR R4 R4 K19 0x280C0604, // 0088 GE R3 R3 R4 0x780E0005, // 0089 JMPF R3 #0090 - 0x880C010F, // 008A GETMBR R3 R0 K15 - 0x88100110, // 008B GETMBR R4 R0 K16 - 0x88100912, // 008C GETMBR R4 R4 K18 + 0x880C0106, // 008A GETMBR R3 R0 K6 + 0x88100109, // 008B GETMBR R4 R0 K9 + 0x88100920, // 008C GETMBR R4 R4 K32 0x180C0604, // 008D LE R3 R3 R4 0x780E0000, // 008E JMPF R3 #0090 - 0x00080513, // 008F ADD R2 R2 K19 + 0x00080531, // 008F ADD R2 R2 K49 0x7002000B, // 0090 JMP #009D 0x600C0004, // 0091 GETGBL R3 G4 - 0x8810010C, // 0092 GETMBR R4 R0 K12 + 0x88100107, // 0092 GETMBR R4 R0 K7 0x7C0C0200, // 0093 CALL R3 1 - 0x1C0C071E, // 0094 EQ R3 R3 K30 + 0x1C0C073C, // 0094 EQ R3 R3 K60 0x780E0006, // 0095 JMPF R3 #009D 0x600C0018, // 0096 GETGBL R3 G24 - 0x5810001F, // 0097 LDCONST R4 K31 - 0x8814010C, // 0098 GETMBR R5 R0 K12 - 0x8C140B20, // 0099 GETMET R5 R5 K32 + 0x5810003D, // 0097 LDCONST R4 K61 + 0x88140107, // 0098 GETMBR R5 R0 K7 + 0x8C140B3E, // 0099 GETMET R5 R5 K62 0x7C140200, // 009A CALL R5 1 0x7C0C0400, // 009B CALL R3 2 0x00080403, // 009C ADD R2 R2 R3 @@ -681,7 +694,7 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ 0x70020006, // 009E JMP #00A6 0xAC0C0002, // 009F CATCH R3 0 2 0x70020003, // 00A0 JMP #00A5 - 0x00140721, // 00A1 ADD R5 R3 K33 + 0x0014073F, // 00A1 ADD R5 R3 K63 0x00140A04, // 00A2 ADD R5 R5 R4 0x80040A00, // 00A3 RET 1 R5 0x70020000, // 00A4 JMP #00A6 @@ -700,127 +713,110 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(int), - /* K2 */ be_nested_str_weak(typ), - /* K3 */ be_nested_str_weak(TLV), - /* K4 */ be_nested_str_weak(U1), - /* K5 */ be_nested_str_weak(U8), - /* K6 */ be_nested_str_weak(U), - /* K7 */ be_nested_str_weak(bool), - /* K8 */ be_nested_str_weak(true), - /* K9 */ be_nested_str_weak(false), - /* K10 */ be_nested_str_weak(null), - /* K11 */ be_nested_str_weak(real), - /* K12 */ be_nested_str_weak(string), - /* K13 */ be_nested_str_weak(int64), - /* K14 */ be_nested_str_weak(tostring), - /* K15 */ be_nested_str_weak(instance), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(to_str_val), &be_const_str_solidified, ( &(const binstruction[98]) { /* code */ 0x60040004, // 0000 GETGBL R1 G4 - 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080107, // 0001 GETMBR R2 R0 K7 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 + 0x1C04032F, // 0003 EQ R1 R1 K47 0x78060014, // 0004 JMPF R1 #001A - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x88080103, // 0006 GETMBR R2 R0 K3 - 0x88080504, // 0007 GETMBR R2 R2 K4 + 0x88040106, // 0005 GETMBR R1 R0 K6 + 0x88080109, // 0006 GETMBR R2 R0 K9 + 0x88080513, // 0007 GETMBR R2 R2 K19 0x28040202, // 0008 GE R1 R1 R2 0x7806000A, // 0009 JMPF R1 #0015 - 0x88040102, // 000A GETMBR R1 R0 K2 - 0x88080103, // 000B GETMBR R2 R0 K3 - 0x88080505, // 000C GETMBR R2 R2 K5 + 0x88040106, // 000A GETMBR R1 R0 K6 + 0x88080109, // 000B GETMBR R2 R0 K9 + 0x88080520, // 000C GETMBR R2 R2 K32 0x18040202, // 000D LE R1 R1 R2 0x78060005, // 000E JMPF R1 #0015 0x60040008, // 000F GETGBL R1 G8 - 0x88080100, // 0010 GETMBR R2 R0 K0 + 0x88080107, // 0010 GETMBR R2 R0 K7 0x7C040200, // 0011 CALL R1 1 - 0x00040306, // 0012 ADD R1 R1 K6 + 0x00040331, // 0012 ADD R1 R1 K49 0x80040200, // 0013 RET 1 R1 0x70020003, // 0014 JMP #0019 0x60040008, // 0015 GETGBL R1 G8 - 0x88080100, // 0016 GETMBR R2 R0 K0 + 0x88080107, // 0016 GETMBR R2 R0 K7 0x7C040200, // 0017 CALL R1 1 0x80040200, // 0018 RET 1 R1 0x70020046, // 0019 JMP #0061 0x60040004, // 001A GETGBL R1 G4 - 0x88080100, // 001B GETMBR R2 R0 K0 + 0x88080107, // 001B GETMBR R2 R0 K7 0x7C040200, // 001C CALL R1 1 - 0x1C040307, // 001D EQ R1 R1 K7 + 0x1C040332, // 001D EQ R1 R1 K50 0x78060006, // 001E JMPF R1 #0026 - 0x88040100, // 001F GETMBR R1 R0 K0 + 0x88040107, // 001F GETMBR R1 R0 K7 0x78060001, // 0020 JMPF R1 #0023 - 0x58040008, // 0021 LDCONST R1 K8 + 0x58040033, // 0021 LDCONST R1 K51 0x70020000, // 0022 JMP #0024 - 0x58040009, // 0023 LDCONST R1 K9 + 0x58040034, // 0023 LDCONST R1 K52 0x80040200, // 0024 RET 1 R1 0x7002003A, // 0025 JMP #0061 - 0x88040100, // 0026 GETMBR R1 R0 K0 + 0x88040107, // 0026 GETMBR R1 R0 K7 0x4C080000, // 0027 LDNIL R2 0x1C040202, // 0028 EQ R1 R1 R2 0x78060001, // 0029 JMPF R1 #002C - 0x80061400, // 002A RET 1 K10 + 0x80066A00, // 002A RET 1 K53 0x70020034, // 002B JMP #0061 0x60040004, // 002C GETGBL R1 G4 - 0x88080100, // 002D GETMBR R2 R0 K0 + 0x88080107, // 002D GETMBR R2 R0 K7 0x7C040200, // 002E CALL R1 1 - 0x1C04030B, // 002F EQ R1 R1 K11 + 0x1C040336, // 002F EQ R1 R1 K54 0x78060004, // 0030 JMPF R1 #0036 0x60040008, // 0031 GETGBL R1 G8 - 0x88080100, // 0032 GETMBR R2 R0 K0 + 0x88080107, // 0032 GETMBR R2 R0 K7 0x7C040200, // 0033 CALL R1 1 0x80040200, // 0034 RET 1 R1 0x7002002A, // 0035 JMP #0061 0x60040004, // 0036 GETGBL R1 G4 - 0x88080100, // 0037 GETMBR R2 R0 K0 + 0x88080107, // 0037 GETMBR R2 R0 K7 0x7C040200, // 0038 CALL R1 1 - 0x1C04030C, // 0039 EQ R1 R1 K12 + 0x1C040338, // 0039 EQ R1 R1 K56 0x78060002, // 003A JMPF R1 #003E - 0x88040100, // 003B GETMBR R1 R0 K0 + 0x88040107, // 003B GETMBR R1 R0 K7 0x80040200, // 003C RET 1 R1 0x70020022, // 003D JMP #0061 0x6004000F, // 003E GETGBL R1 G15 - 0x88080100, // 003F GETMBR R2 R0 K0 - 0xB80E1A00, // 0040 GETNGBL R3 K13 + 0x88080107, // 003F GETMBR R2 R0 K7 + 0xB80E7400, // 0040 GETNGBL R3 K58 0x7C040400, // 0041 CALL R1 2 0x78060014, // 0042 JMPF R1 #0058 - 0x88040102, // 0043 GETMBR R1 R0 K2 - 0x88080103, // 0044 GETMBR R2 R0 K3 - 0x88080504, // 0045 GETMBR R2 R2 K4 + 0x88040106, // 0043 GETMBR R1 R0 K6 + 0x88080109, // 0044 GETMBR R2 R0 K9 + 0x88080513, // 0045 GETMBR R2 R2 K19 0x28040202, // 0046 GE R1 R1 R2 0x7806000A, // 0047 JMPF R1 #0053 - 0x88040102, // 0048 GETMBR R1 R0 K2 - 0x88080103, // 0049 GETMBR R2 R0 K3 - 0x88080505, // 004A GETMBR R2 R2 K5 + 0x88040106, // 0048 GETMBR R1 R0 K6 + 0x88080109, // 0049 GETMBR R2 R0 K9 + 0x88080520, // 004A GETMBR R2 R2 K32 0x18040202, // 004B LE R1 R1 R2 0x78060005, // 004C JMPF R1 #0053 - 0x88040100, // 004D GETMBR R1 R0 K0 - 0x8C04030E, // 004E GETMET R1 R1 K14 + 0x88040107, // 004D GETMBR R1 R0 K7 + 0x8C04033B, // 004E GETMET R1 R1 K59 0x7C040200, // 004F CALL R1 1 - 0x00040306, // 0050 ADD R1 R1 K6 + 0x00040331, // 0050 ADD R1 R1 K49 0x80040200, // 0051 RET 1 R1 0x70020003, // 0052 JMP #0057 - 0x88040100, // 0053 GETMBR R1 R0 K0 - 0x8C04030E, // 0054 GETMET R1 R1 K14 + 0x88040107, // 0053 GETMBR R1 R0 K7 + 0x8C04033B, // 0054 GETMET R1 R1 K59 0x7C040200, // 0055 CALL R1 1 0x80040200, // 0056 RET 1 R1 0x70020008, // 0057 JMP #0061 0x60040004, // 0058 GETGBL R1 G4 - 0x88080100, // 0059 GETMBR R2 R0 K0 + 0x88080107, // 0059 GETMBR R2 R0 K7 0x7C040200, // 005A CALL R1 1 - 0x1C04030F, // 005B EQ R1 R1 K15 + 0x1C04033C, // 005B EQ R1 R1 K60 0x78060003, // 005C JMPF R1 #0061 - 0x8C04010E, // 005D GETMET R1 R0 K14 + 0x8C04013B, // 005D GETMET R1 R0 K59 0x500C0200, // 005E LDBOOL R3 1 0 0x7C040400, // 005F CALL R1 2 0x80040200, // 0060 RET 1 R1 @@ -838,35 +834,30 @@ be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */ be_nested_proto( 6, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_vendor), - /* K1 */ be_nested_str_weak(tag_profile), - /* K2 */ be_nested_str_weak(tag_number), - /* K3 */ be_nested_str_weak(tag_sub), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(set_fulltag), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ 0x60100009, // 0000 GETGBL R4 G9 0x5C140200, // 0001 MOVE R5 R1 0x7C100200, // 0002 CALL R4 1 - 0x90020004, // 0003 SETMBR R0 K0 R4 + 0x90020404, // 0003 SETMBR R0 K2 R4 0x60100009, // 0004 GETGBL R4 G9 0x5C140400, // 0005 MOVE R5 R2 0x7C100200, // 0006 CALL R4 1 - 0x90020204, // 0007 SETMBR R0 K1 R4 + 0x90020604, // 0007 SETMBR R0 K3 R4 0x60100009, // 0008 GETGBL R4 G9 0x5C140600, // 0009 MOVE R5 R3 0x7C100200, // 000A CALL R4 1 - 0x90020404, // 000B SETMBR R0 K2 R4 + 0x90020804, // 000B SETMBR R0 K4 R4 0x4C100000, // 000C LDNIL R4 - 0x90020604, // 000D SETMBR R0 K3 R4 + 0x90020A04, // 000D SETMBR R0 K5 R4 0x80000000, // 000E RET 0 }) ) @@ -881,92 +872,67 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(typ), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(_len), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(int64), - /* K5 */ be_nested_str_weak(frombytes), - /* K6 */ be_nested_str_weak(BFALSE), - /* K7 */ be_nested_str_weak(BTRUE), - /* K8 */ be_nested_str_weak(U8), - /* K9 */ be_nested_str_weak(I8), - /* K10 */ be_nested_str_weak(geti), - /* K11 */ be_nested_str_weak(get), - /* K12 */ be_nested_str_weak(FLOAT), - /* K13 */ be_nested_str_weak(getfloat), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(UTF8), - /* K16 */ be_nested_str_weak(asstring), - /* K17 */ be_nested_str_weak(NULL), - /* K18 */ be_nested_str_weak(EOC), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), - /* K23 */ be_nested_str_weak(next_idx), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(parse), &be_const_str_solidified, ( &(const binstruction[101]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140902, // 0002 GETMBR R5 R4 K2 + 0x880C0106, // 0000 GETMBR R3 R0 K6 + 0x88100109, // 0001 GETMBR R4 R0 K9 + 0x88140940, // 0002 GETMBR R5 R4 K64 0x94140A03, // 0003 GETIDX R5 R5 R3 0x541A0007, // 0004 LDINT R6 8 0x1C180A06, // 0005 EQ R6 R5 R6 0x781A0008, // 0006 JMPF R6 #0010 - 0xB81A0800, // 0007 GETNGBL R6 K4 - 0x8C180D05, // 0008 GETMET R6 R6 K5 + 0xB81A7400, // 0007 GETNGBL R6 K58 + 0x8C180D41, // 0008 GETMET R6 R6 K65 0x5C200200, // 0009 MOVE R8 R1 0x5C240400, // 000A MOVE R9 R2 0x7C180600, // 000B CALL R6 3 - 0x90020606, // 000C SETMBR R0 K3 R6 + 0x90020E06, // 000C SETMBR R0 K7 R6 0x541A0007, // 000D LDINT R6 8 0x00080406, // 000E ADD R2 R2 R6 0x70020052, // 000F JMP #0063 - 0x88180906, // 0010 GETMBR R6 R4 K6 + 0x8818090C, // 0010 GETMBR R6 R4 K12 0x1C180606, // 0011 EQ R6 R3 R6 0x741A0002, // 0012 JMPT R6 #0016 - 0x88180907, // 0013 GETMBR R6 R4 K7 + 0x8818090D, // 0013 GETMBR R6 R4 K13 0x1C180606, // 0014 EQ R6 R3 R6 0x781A0003, // 0015 JMPF R6 #001A - 0x88180907, // 0016 GETMBR R6 R4 K7 + 0x8818090D, // 0016 GETMBR R6 R4 K13 0x1C180606, // 0017 EQ R6 R3 R6 - 0x90020606, // 0018 SETMBR R0 K3 R6 + 0x90020E06, // 0018 SETMBR R0 K7 R6 0x70020048, // 0019 JMP #0063 - 0x88180908, // 001A GETMBR R6 R4 K8 + 0x88180920, // 001A GETMBR R6 R4 K32 0x14180606, // 001B LT R6 R3 R6 0x781A000E, // 001C JMPF R6 #002C - 0x88180909, // 001D GETMBR R6 R4 K9 + 0x8818091F, // 001D GETMBR R6 R4 K31 0x18180606, // 001E LE R6 R3 R6 0x781A0004, // 001F JMPF R6 #0025 - 0x8C18030A, // 0020 GETMET R6 R1 K10 + 0x8C180342, // 0020 GETMET R6 R1 K66 0x5C200400, // 0021 MOVE R8 R2 0x5C240A00, // 0022 MOVE R9 R5 0x7C180600, // 0023 CALL R6 3 0x70020003, // 0024 JMP #0029 - 0x8C18030B, // 0025 GETMET R6 R1 K11 + 0x8C180343, // 0025 GETMET R6 R1 K67 0x5C200400, // 0026 MOVE R8 R2 0x5C240A00, // 0027 MOVE R9 R5 0x7C180600, // 0028 CALL R6 3 - 0x90020606, // 0029 SETMBR R0 K3 R6 + 0x90020E06, // 0029 SETMBR R0 K7 R6 0x00080405, // 002A ADD R2 R2 R5 0x70020036, // 002B JMP #0063 - 0x8818090C, // 002C GETMBR R6 R4 K12 + 0x88180921, // 002C GETMBR R6 R4 K33 0x1C180606, // 002D EQ R6 R3 R6 0x781A0006, // 002E JMPF R6 #0036 - 0x8C18030D, // 002F GETMET R6 R1 K13 + 0x8C180344, // 002F GETMET R6 R1 K68 0x5C200400, // 0030 MOVE R8 R2 0x7C180400, // 0031 CALL R6 2 - 0x90020606, // 0032 SETMBR R0 K3 R6 + 0x90020E06, // 0032 SETMBR R0 K7 R6 0x541A0003, // 0033 LDINT R6 4 0x00080406, // 0034 ADD R2 R2 R6 0x7002002C, // 0035 JMP #0063 @@ -976,46 +942,46 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x5419FFFE, // 0039 LDINT R6 -1 0x18180A06, // 003A LE R6 R5 R6 0x781A0013, // 003B JMPF R6 #0050 - 0x8C18030B, // 003C GETMET R6 R1 K11 + 0x8C180343, // 003C GETMET R6 R1 K67 0x5C200400, // 003D MOVE R8 R2 0x44240A00, // 003E NEG R9 R5 0x7C180600, // 003F CALL R6 3 0x441C0A00, // 0040 NEG R7 R5 0x00080407, // 0041 ADD R2 R2 R7 0x001C0406, // 0042 ADD R7 R2 R6 - 0x041C0F0E, // 0043 SUB R7 R7 K14 + 0x041C0F1D, // 0043 SUB R7 R7 K29 0x401C0407, // 0044 CONNECT R7 R2 R7 0x941C0207, // 0045 GETIDX R7 R1 R7 - 0x90020607, // 0046 SETMBR R0 K3 R7 + 0x90020E07, // 0046 SETMBR R0 K7 R7 0x00080406, // 0047 ADD R2 R2 R6 - 0x881C090F, // 0048 GETMBR R7 R4 K15 + 0x881C0919, // 0048 GETMBR R7 R4 K25 0x181C0607, // 0049 LE R7 R3 R7 0x781E0003, // 004A JMPF R7 #004F - 0x881C0103, // 004B GETMBR R7 R0 K3 - 0x8C1C0F10, // 004C GETMET R7 R7 K16 + 0x881C0107, // 004B GETMBR R7 R0 K7 + 0x8C1C0F45, // 004C GETMET R7 R7 K69 0x7C1C0200, // 004D CALL R7 1 - 0x90020607, // 004E SETMBR R0 K3 R7 + 0x90020E07, // 004E SETMBR R0 K7 R7 0x70020012, // 004F JMP #0063 - 0x88180911, // 0050 GETMBR R6 R4 K17 + 0x88180925, // 0050 GETMBR R6 R4 K37 0x1C180606, // 0051 EQ R6 R3 R6 0x781A0000, // 0052 JMPF R6 #0054 0x7002000E, // 0053 JMP #0063 - 0x88180912, // 0054 GETMBR R6 R4 K18 + 0x88180946, // 0054 GETMBR R6 R4 K70 0x1C180606, // 0055 EQ R6 R3 R6 0x781A0004, // 0056 JMPF R6 #005C - 0xB81A2600, // 0057 GETNGBL R6 K19 - 0x581C0014, // 0058 LDCONST R7 K20 - 0x58200015, // 0059 LDCONST R8 K21 + 0xB81A8E00, // 0057 GETNGBL R6 K71 + 0x581C0048, // 0058 LDCONST R7 K72 + 0x58200049, // 0059 LDCONST R8 K73 0x7C180400, // 005A CALL R6 2 0x70020006, // 005B JMP #0063 - 0xB81A2600, // 005C GETNGBL R6 K19 + 0xB81A8E00, // 005C GETNGBL R6 K71 0x601C0008, // 005D GETGBL R7 G8 0x5C200600, // 005E MOVE R8 R3 0x7C1C0200, // 005F CALL R7 1 - 0x001E2C07, // 0060 ADD R7 K22 R7 - 0x58200015, // 0061 LDCONST R8 K21 + 0x001E9407, // 0060 ADD R7 K74 R7 + 0x58200049, // 0061 LDCONST R8 K73 0x7C180400, // 0062 CALL R6 2 - 0x90022E02, // 0063 SETMBR R0 K23 R2 + 0x90020202, // 0063 SETMBR R0 K1 R2 0x80040400, // 0064 RET 1 R2 }) ) @@ -1030,19 +996,17 @@ be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_fulltag), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(set_commonprofile), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04014B, // 0000 GETMET R1 R0 K75 0x4C0C0000, // 0001 LDNIL R3 0x5411FFFE, // 0002 LDINT R4 -1 0x4C140000, // 0003 LDNIL R5 @@ -1061,157 +1025,147 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_number), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(typ), - /* K5 */ be_const_int(1), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str_weak(tag_profile), - /* K8 */ be_nested_str_weak(tag_sub), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(_encode_tag), &be_const_str_solidified, ( &(const binstruction[133]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080104, // 0000 GETMBR R2 R0 K4 0x4C0C0000, // 0001 LDNIL R3 0x20080403, // 0002 NE R2 R2 R3 0x780A0001, // 0003 JMPF R2 #0006 - 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x88080104, // 0004 GETMBR R2 R0 K4 0x70020000, // 0005 JMP #0007 - 0x58080001, // 0006 LDCONST R2 K1 + 0x5808002D, // 0006 LDCONST R2 K45 0x540EFFFF, // 0007 LDINT R3 65536 0x280C0403, // 0008 GE R3 R2 R3 0x740E0002, // 0009 JMPT R3 #000D - 0x140C0501, // 000A LT R3 R2 K1 + 0x140C052D, // 000A LT R3 R2 K45 0x740E0000, // 000B JMPT R3 #000D 0x500C0001, // 000C LDBOOL R3 0 1 0x500C0200, // 000D LDBOOL R3 1 0 - 0x58100001, // 000E LDCONST R4 K1 + 0x5810002D, // 000E LDCONST R4 K45 0x88140102, // 000F GETMBR R5 R0 K2 0x4C180000, // 0010 LDNIL R6 0x20140A06, // 0011 NE R5 R5 R6 0x78160026, // 0012 JMPF R5 #003A 0x780E0012, // 0013 JMPF R3 #0027 - 0x8C140303, // 0014 GETMET R5 R1 K3 + 0x8C14034C, // 0014 GETMET R5 R1 K76 0x541E00DF, // 0015 LDINT R7 224 - 0x88200104, // 0016 GETMBR R8 R0 K4 + 0x88200106, // 0016 GETMBR R8 R0 K6 0x001C0E08, // 0017 ADD R7 R7 R8 - 0x58200005, // 0018 LDCONST R8 K5 + 0x5820001D, // 0018 LDCONST R8 K29 0x7C140600, // 0019 CALL R5 3 - 0x8C140303, // 001A GETMET R5 R1 K3 + 0x8C14034C, // 001A GETMET R5 R1 K76 0x881C0102, // 001B GETMBR R7 R0 K2 - 0x58200006, // 001C LDCONST R8 K6 + 0x5820001E, // 001C LDCONST R8 K30 0x7C140600, // 001D CALL R5 3 - 0x8C140303, // 001E GETMET R5 R1 K3 - 0x881C0107, // 001F GETMBR R7 R0 K7 - 0x58200006, // 0020 LDCONST R8 K6 + 0x8C14034C, // 001E GETMET R5 R1 K76 + 0x881C0103, // 001F GETMBR R7 R0 K3 + 0x5820001E, // 0020 LDCONST R8 K30 0x7C140600, // 0021 CALL R5 3 - 0x8C140303, // 0022 GETMET R5 R1 K3 - 0x881C0100, // 0023 GETMBR R7 R0 K0 + 0x8C14034C, // 0022 GETMET R5 R1 K76 + 0x881C0104, // 0023 GETMBR R7 R0 K4 0x54220003, // 0024 LDINT R8 4 0x7C140600, // 0025 CALL R5 3 0x70020011, // 0026 JMP #0039 - 0x8C140303, // 0027 GETMET R5 R1 K3 + 0x8C14034C, // 0027 GETMET R5 R1 K76 0x541E00BF, // 0028 LDINT R7 192 - 0x88200104, // 0029 GETMBR R8 R0 K4 + 0x88200106, // 0029 GETMBR R8 R0 K6 0x001C0E08, // 002A ADD R7 R7 R8 - 0x58200005, // 002B LDCONST R8 K5 + 0x5820001D, // 002B LDCONST R8 K29 0x7C140600, // 002C CALL R5 3 - 0x8C140303, // 002D GETMET R5 R1 K3 + 0x8C14034C, // 002D GETMET R5 R1 K76 0x881C0102, // 002E GETMBR R7 R0 K2 - 0x58200006, // 002F LDCONST R8 K6 + 0x5820001E, // 002F LDCONST R8 K30 0x7C140600, // 0030 CALL R5 3 - 0x8C140303, // 0031 GETMET R5 R1 K3 - 0x881C0107, // 0032 GETMBR R7 R0 K7 - 0x58200006, // 0033 LDCONST R8 K6 + 0x8C14034C, // 0031 GETMET R5 R1 K76 + 0x881C0103, // 0032 GETMBR R7 R0 K3 + 0x5820001E, // 0033 LDCONST R8 K30 0x7C140600, // 0034 CALL R5 3 - 0x8C140303, // 0035 GETMET R5 R1 K3 - 0x881C0100, // 0036 GETMBR R7 R0 K0 - 0x58200006, // 0037 LDCONST R8 K6 + 0x8C14034C, // 0035 GETMET R5 R1 K76 + 0x881C0104, // 0036 GETMBR R7 R0 K4 + 0x5820001E, // 0037 LDCONST R8 K30 0x7C140600, // 0038 CALL R5 3 0x70020049, // 0039 JMP #0084 - 0x88140107, // 003A GETMBR R5 R0 K7 + 0x88140103, // 003A GETMBR R5 R0 K3 0x5419FFFE, // 003B LDINT R6 -1 0x1C140A06, // 003C EQ R5 R5 R6 0x78160016, // 003D JMPF R5 #0055 0x780E000A, // 003E JMPF R3 #004A - 0x8C140303, // 003F GETMET R5 R1 K3 + 0x8C14034C, // 003F GETMET R5 R1 K76 0x541E005F, // 0040 LDINT R7 96 - 0x88200104, // 0041 GETMBR R8 R0 K4 + 0x88200106, // 0041 GETMBR R8 R0 K6 0x001C0E08, // 0042 ADD R7 R7 R8 - 0x58200005, // 0043 LDCONST R8 K5 + 0x5820001D, // 0043 LDCONST R8 K29 0x7C140600, // 0044 CALL R5 3 - 0x8C140303, // 0045 GETMET R5 R1 K3 - 0x881C0100, // 0046 GETMBR R7 R0 K0 + 0x8C14034C, // 0045 GETMET R5 R1 K76 + 0x881C0104, // 0046 GETMBR R7 R0 K4 0x54220003, // 0047 LDINT R8 4 0x7C140600, // 0048 CALL R5 3 0x70020009, // 0049 JMP #0054 - 0x8C140303, // 004A GETMET R5 R1 K3 + 0x8C14034C, // 004A GETMET R5 R1 K76 0x541E003F, // 004B LDINT R7 64 - 0x88200104, // 004C GETMBR R8 R0 K4 + 0x88200106, // 004C GETMBR R8 R0 K6 0x001C0E08, // 004D ADD R7 R7 R8 - 0x58200005, // 004E LDCONST R8 K5 + 0x5820001D, // 004E LDCONST R8 K29 0x7C140600, // 004F CALL R5 3 - 0x8C140303, // 0050 GETMET R5 R1 K3 - 0x881C0100, // 0051 GETMBR R7 R0 K0 - 0x58200006, // 0052 LDCONST R8 K6 + 0x8C14034C, // 0050 GETMET R5 R1 K76 + 0x881C0104, // 0051 GETMBR R7 R0 K4 + 0x5820001E, // 0052 LDCONST R8 K30 0x7C140600, // 0053 CALL R5 3 0x7002002E, // 0054 JMP #0084 - 0x88140107, // 0055 GETMBR R5 R0 K7 + 0x88140103, // 0055 GETMBR R5 R0 K3 0x4C180000, // 0056 LDNIL R6 0x20140A06, // 0057 NE R5 R5 R6 0x78160016, // 0058 JMPF R5 #0070 0x780E000A, // 0059 JMPF R3 #0065 - 0x8C140303, // 005A GETMET R5 R1 K3 + 0x8C14034C, // 005A GETMET R5 R1 K76 0x541E009F, // 005B LDINT R7 160 - 0x88200104, // 005C GETMBR R8 R0 K4 + 0x88200106, // 005C GETMBR R8 R0 K6 0x001C0E08, // 005D ADD R7 R7 R8 - 0x58200005, // 005E LDCONST R8 K5 + 0x5820001D, // 005E LDCONST R8 K29 0x7C140600, // 005F CALL R5 3 - 0x8C140303, // 0060 GETMET R5 R1 K3 - 0x881C0100, // 0061 GETMBR R7 R0 K0 + 0x8C14034C, // 0060 GETMET R5 R1 K76 + 0x881C0104, // 0061 GETMBR R7 R0 K4 0x54220003, // 0062 LDINT R8 4 0x7C140600, // 0063 CALL R5 3 0x70020009, // 0064 JMP #006F - 0x8C140303, // 0065 GETMET R5 R1 K3 + 0x8C14034C, // 0065 GETMET R5 R1 K76 0x541E007F, // 0066 LDINT R7 128 - 0x88200104, // 0067 GETMBR R8 R0 K4 + 0x88200106, // 0067 GETMBR R8 R0 K6 0x001C0E08, // 0068 ADD R7 R7 R8 - 0x58200005, // 0069 LDCONST R8 K5 + 0x5820001D, // 0069 LDCONST R8 K29 0x7C140600, // 006A CALL R5 3 - 0x8C140303, // 006B GETMET R5 R1 K3 - 0x881C0100, // 006C GETMBR R7 R0 K0 - 0x58200006, // 006D LDCONST R8 K6 + 0x8C14034C, // 006B GETMET R5 R1 K76 + 0x881C0104, // 006C GETMBR R7 R0 K4 + 0x5820001E, // 006D LDCONST R8 K30 0x7C140600, // 006E CALL R5 3 0x70020013, // 006F JMP #0084 - 0x88140108, // 0070 GETMBR R5 R0 K8 + 0x88140105, // 0070 GETMBR R5 R0 K5 0x4C180000, // 0071 LDNIL R6 0x20140A06, // 0072 NE R5 R5 R6 0x7816000A, // 0073 JMPF R5 #007F - 0x8C140303, // 0074 GETMET R5 R1 K3 + 0x8C14034C, // 0074 GETMET R5 R1 K76 0x541E001F, // 0075 LDINT R7 32 - 0x88200104, // 0076 GETMBR R8 R0 K4 + 0x88200106, // 0076 GETMBR R8 R0 K6 0x001C0E08, // 0077 ADD R7 R7 R8 - 0x58200005, // 0078 LDCONST R8 K5 + 0x5820001D, // 0078 LDCONST R8 K29 0x7C140600, // 0079 CALL R5 3 - 0x8C140303, // 007A GETMET R5 R1 K3 - 0x881C0108, // 007B GETMBR R7 R0 K8 - 0x58200005, // 007C LDCONST R8 K5 + 0x8C14034C, // 007A GETMET R5 R1 K76 + 0x881C0105, // 007B GETMBR R7 R0 K5 + 0x5820001D, // 007C LDCONST R8 K29 0x7C140600, // 007D CALL R5 3 0x70020004, // 007E JMP #0084 - 0x8C140303, // 007F GETMET R5 R1 K3 - 0x881C0104, // 0080 GETMBR R7 R0 K4 - 0x001E0207, // 0081 ADD R7 K1 R7 - 0x58200005, // 0082 LDCONST R8 K5 + 0x8C14034C, // 007F GETMET R5 R1 K76 + 0x881C0106, // 0080 GETMBR R7 R0 K6 + 0x001E5A07, // 0081 ADD R7 K45 R7 + 0x5820001D, // 0082 LDCONST R8 K29 0x7C140600, // 0083 CALL R5 3 0x80000000, // 0084 RET 0 }) @@ -1227,52 +1181,46 @@ be_local_closure(class_Matter_TLV_item_sort, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV_item), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(_cmp_gt), - /* K4 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(sort), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x5804004D, // 0000 LDCONST R1 K77 0x60080010, // 0001 GETGBL R2 G16 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x040C074E, // 0005 SUB R3 R3 K78 + 0x400E9C03, // 0006 CONNECT R3 K78 R3 0x7C080200, // 0007 CALL R2 1 0xA8020013, // 0008 EXBLK 0 #001D 0x5C0C0400, // 0009 MOVE R3 R2 0x7C0C0000, // 000A CALL R3 0 0x94100003, // 000B GETIDX R4 R0 R3 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 + 0x24180B2D, // 000D GT R6 R5 K45 0x781A000B, // 000E JMPF R6 #001B - 0x04180B01, // 000F SUB R6 R5 K1 + 0x04180B4E, // 000F SUB R6 R5 K78 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x8C180D03, // 0011 GETMET R6 R6 K3 + 0x8C180D4F, // 0011 GETMET R6 R6 K79 0x5C200800, // 0012 MOVE R8 R4 0x7C180400, // 0013 CALL R6 2 - 0x24180D02, // 0014 GT R6 R6 K2 + 0x24180D2D, // 0014 GT R6 R6 K45 0x781A0004, // 0015 JMPF R6 #001B - 0x04180B01, // 0016 SUB R6 R5 K1 + 0x04180B4E, // 0016 SUB R6 R5 K78 0x94180006, // 0017 GETIDX R6 R0 R6 0x98000A06, // 0018 SETIDX R0 R5 R6 - 0x04140B01, // 0019 SUB R5 R5 K1 + 0x04140B4E, // 0019 SUB R5 R5 K78 0x7001FFF1, // 001A JMP #000D 0x98000A04, // 001B SETIDX R0 R5 R4 0x7001FFEB, // 001C JMP #0009 - 0x58080004, // 001D LDCONST R2 K4 + 0x58080050, // 001D LDCONST R2 K80 0xAC080200, // 001E CATCH R2 1 0 0xB0080000, // 001F RAISE 2 R0 R0 0x80040000, // 0020 RET 1 R0 @@ -1289,15 +1237,13 @@ be_local_closure(class_Matter_TLV_item_init, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parent), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -1316,65 +1262,58 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_vendor), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(tag_profile), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(tag_number), - /* K5 */ be_nested_str_weak(tag_sub), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(_cmp_gt), &be_const_str_solidified, ( &(const binstruction[72]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080102, // 0000 GETMBR R2 R0 K2 0x4C0C0000, // 0001 LDNIL R3 0x20080403, // 0002 NE R2 R2 R3 0x780A0012, // 0003 JMPF R2 #0017 - 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x88080302, // 0004 GETMBR R2 R1 K2 0x4C0C0000, // 0005 LDNIL R3 0x1C080403, // 0006 EQ R2 R2 R3 0x780A0000, // 0007 JMPF R2 #0009 - 0x80060200, // 0008 RET 1 K1 - 0x88080100, // 0009 GETMBR R2 R0 K0 - 0x880C0300, // 000A GETMBR R3 R1 K0 + 0x80069C00, // 0008 RET 1 K78 + 0x88080102, // 0009 GETMBR R2 R0 K2 + 0x880C0302, // 000A GETMBR R3 R1 K2 0x24080403, // 000B GT R2 R2 R3 0x780A0000, // 000C JMPF R2 #000E - 0x80060200, // 000D RET 1 K1 - 0x88080100, // 000E GETMBR R2 R0 K0 - 0x880C0300, // 000F GETMBR R3 R1 K0 + 0x80069C00, // 000D RET 1 K78 + 0x88080102, // 000E GETMBR R2 R0 K2 + 0x880C0302, // 000F GETMBR R3 R1 K2 0x1C080403, // 0010 EQ R2 R2 R3 0x780A0004, // 0011 JMPF R2 #0017 - 0x88080102, // 0012 GETMBR R2 R0 K2 - 0x880C0302, // 0013 GETMBR R3 R1 K2 + 0x88080103, // 0012 GETMBR R2 R0 K3 + 0x880C0303, // 0013 GETMBR R3 R1 K3 0x24080403, // 0014 GT R2 R2 R3 0x780A0000, // 0015 JMPF R2 #0017 - 0x80060200, // 0016 RET 1 K1 - 0x88080102, // 0017 GETMBR R2 R0 K2 + 0x80069C00, // 0016 RET 1 K78 + 0x88080103, // 0017 GETMBR R2 R0 K3 0x540DFFFE, // 0018 LDINT R3 -1 0x1C080403, // 0019 EQ R2 R2 R3 0x780A0005, // 001A JMPF R2 #0021 - 0x88080302, // 001B GETMBR R2 R1 K2 + 0x88080303, // 001B GETMBR R2 R1 K3 0x4C0C0000, // 001C LDNIL R3 0x1C080403, // 001D EQ R2 R2 R3 0x780A0000, // 001E JMPF R2 #0020 - 0x80060200, // 001F RET 1 K1 + 0x80069C00, // 001F RET 1 K78 0x70020008, // 0020 JMP #002A - 0x88080102, // 0021 GETMBR R2 R0 K2 + 0x88080103, // 0021 GETMBR R2 R0 K3 0x4C0C0000, // 0022 LDNIL R3 0x1C080403, // 0023 EQ R2 R2 R3 0x780A0004, // 0024 JMPF R2 #002A - 0x88080302, // 0025 GETMBR R2 R1 K2 + 0x88080303, // 0025 GETMBR R2 R1 K3 0x540DFFFE, // 0026 LDINT R3 -1 0x1C080403, // 0027 EQ R2 R2 R3 0x780A0000, // 0028 JMPF R2 #002A - 0x80060600, // 0029 RET 1 K3 + 0x80061400, // 0029 RET 1 K10 0x88080104, // 002A GETMBR R2 R0 K4 0x4C0C0000, // 002B LDNIL R3 0x20080403, // 002C NE R2 R2 R3 @@ -1383,13 +1322,13 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x4C0C0000, // 002F LDNIL R3 0x1C080403, // 0030 EQ R2 R2 R3 0x780A0000, // 0031 JMPF R2 #0033 - 0x80060200, // 0032 RET 1 K1 + 0x80069C00, // 0032 RET 1 K78 0x88080104, // 0033 GETMBR R2 R0 K4 0x880C0304, // 0034 GETMBR R3 R1 K4 0x24080403, // 0035 GT R2 R2 R3 0x780A0000, // 0036 JMPF R2 #0038 - 0x80060200, // 0037 RET 1 K1 - 0x80060600, // 0038 RET 1 K3 + 0x80069C00, // 0037 RET 1 K78 + 0x80061400, // 0038 RET 1 K10 0x88080105, // 0039 GETMBR R2 R0 K5 0x4C0C0000, // 003A LDNIL R3 0x20080403, // 003B NE R2 R2 R3 @@ -1398,13 +1337,13 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x4C0C0000, // 003E LDNIL R3 0x1C080403, // 003F EQ R2 R2 R3 0x780A0000, // 0040 JMPF R2 #0042 - 0x80060200, // 0041 RET 1 K1 + 0x80069C00, // 0041 RET 1 K78 0x88080105, // 0042 GETMBR R2 R0 K5 0x880C0305, // 0043 GETMBR R3 R1 K5 0x24080403, // 0044 GT R2 R2 R3 0x780A0000, // 0045 JMPF R2 #0047 - 0x80060200, // 0046 RET 1 K1 - 0x80060600, // 0047 RET 1 K3 + 0x80069C00, // 0046 RET 1 K78 + 0x80061400, // 0047 RET 1 K10 }) ) ); @@ -1418,124 +1357,79 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[44]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(RAW), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(I8), - /* K5 */ be_nested_str_weak(U8), - /* K6 */ be_nested_str_weak(int), - /* K7 */ be_nested_str_weak(I4), - /* K8 */ be_nested_str_weak(U4), - /* K9 */ be_nested_str_weak(BFALSE), - /* K10 */ be_nested_str_weak(BTRUE), - /* K11 */ be_nested_str_weak(I2), - /* K12 */ be_nested_str_weak(I1), - /* K13 */ be_nested_str_weak(U2), - /* K14 */ be_const_int(0), - /* K15 */ be_nested_str_weak(U1), - /* K16 */ be_nested_str_weak(B1), - /* K17 */ be_nested_str_weak(B8), - /* K18 */ be_nested_str_weak(B2), - /* K19 */ be_nested_str_weak(B4), - /* K20 */ be_nested_str_weak(UTF1), - /* K21 */ be_nested_str_weak(UTF8), - /* K22 */ be_nested_str_weak(UTF2), - /* K23 */ be_nested_str_weak(UTF4), - /* K24 */ be_nested_str_weak(_encode_tag), - /* K25 */ be_nested_str_weak(add), - /* K26 */ be_const_int(1), - /* K27 */ be_const_int(2), - /* K28 */ be_nested_str_weak(copy), - /* K29 */ be_nested_str_weak(resize), - /* K30 */ be_nested_str_weak(int64), - /* K31 */ be_nested_str_weak(tobytes), - /* K32 */ be_nested_str_weak(fromu32), - /* K33 */ be_nested_str_weak(FLOAT), - /* K34 */ be_nested_str_weak(setfloat), - /* K35 */ be_nested_str_weak(DOUBLE), - /* K36 */ be_nested_str_weak(value_error), - /* K37 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE), - /* K38 */ be_nested_str_weak(string_X20too_X20big), - /* K39 */ be_nested_str_weak(fromstring), - /* K40 */ be_nested_str_weak(frostring), - /* K41 */ be_nested_str_weak(bytes_X20too_X20big), - /* K42 */ be_nested_str_weak(NULL), - /* K43 */ be_nested_str_weak(unsupported_X20type_X20), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(tlv2raw), &be_const_str_solidified, ( &(const binstruction[404]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080109, // 0000 GETMBR R2 R0 K9 0x4C0C0000, // 0001 LDNIL R3 0x1C0C0203, // 0002 EQ R3 R1 R3 0x780E0002, // 0003 JMPF R3 #0007 0x600C0015, // 0004 GETGBL R3 G21 0x7C0C0000, // 0005 CALL R3 0 0x5C040600, // 0006 MOVE R1 R3 - 0x880C0101, // 0007 GETMBR R3 R0 K1 - 0x88100502, // 0008 GETMBR R4 R2 K2 + 0x880C0106, // 0007 GETMBR R3 R0 K6 + 0x8810050B, // 0008 GETMBR R4 R2 K11 0x1C0C0604, // 0009 EQ R3 R3 R4 0x780E0002, // 000A JMPF R3 #000E - 0x880C0103, // 000B GETMBR R3 R0 K3 + 0x880C0107, // 000B GETMBR R3 R0 K7 0x400C0203, // 000C CONNECT R3 R1 R3 0x80040200, // 000D RET 1 R1 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x88100504, // 000F GETMBR R4 R2 K4 + 0x880C0106, // 000E GETMBR R3 R0 K6 + 0x8810051F, // 000F GETMBR R4 R2 K31 0x1C0C0604, // 0010 EQ R3 R3 R4 0x740E0003, // 0011 JMPT R3 #0016 - 0x880C0101, // 0012 GETMBR R3 R0 K1 - 0x88100505, // 0013 GETMBR R4 R2 K5 + 0x880C0106, // 0012 GETMBR R3 R0 K6 + 0x88100520, // 0013 GETMBR R4 R2 K32 0x1C0C0604, // 0014 EQ R3 R3 R4 0x780E000D, // 0015 JMPF R3 #0024 0x600C0004, // 0016 GETGBL R3 G4 - 0x88100103, // 0017 GETMBR R4 R0 K3 + 0x88100107, // 0017 GETMBR R4 R0 K7 0x7C0C0200, // 0018 CALL R3 1 - 0x1C0C0706, // 0019 EQ R3 R3 K6 + 0x1C0C072F, // 0019 EQ R3 R3 K47 0x780E0008, // 001A JMPF R3 #0024 - 0x880C0101, // 001B GETMBR R3 R0 K1 - 0x88100504, // 001C GETMBR R4 R2 K4 + 0x880C0106, // 001B GETMBR R3 R0 K6 + 0x8810051F, // 001C GETMBR R4 R2 K31 0x1C0C0604, // 001D EQ R3 R3 R4 0x780E0002, // 001E JMPF R3 #0022 - 0x880C0507, // 001F GETMBR R3 R2 K7 - 0x90020203, // 0020 SETMBR R0 K1 R3 + 0x880C050F, // 001F GETMBR R3 R2 K15 + 0x90020C03, // 0020 SETMBR R0 K6 R3 0x70020001, // 0021 JMP #0024 - 0x880C0508, // 0022 GETMBR R3 R2 K8 - 0x90020203, // 0023 SETMBR R0 K1 R3 - 0x880C0101, // 0024 GETMBR R3 R0 K1 - 0x88100509, // 0025 GETMBR R4 R2 K9 + 0x880C0512, // 0022 GETMBR R3 R2 K18 + 0x90020C03, // 0023 SETMBR R0 K6 R3 + 0x880C0106, // 0024 GETMBR R3 R0 K6 + 0x8810050C, // 0025 GETMBR R4 R2 K12 0x1C0C0604, // 0026 EQ R3 R3 R4 0x740E0003, // 0027 JMPT R3 #002C - 0x880C0101, // 0028 GETMBR R3 R0 K1 - 0x8810050A, // 0029 GETMBR R4 R2 K10 + 0x880C0106, // 0028 GETMBR R3 R0 K6 + 0x8810050D, // 0029 GETMBR R4 R2 K13 0x1C0C0604, // 002A EQ R3 R3 R4 0x780E0008, // 002B JMPF R3 #0035 0x600C0017, // 002C GETGBL R3 G23 - 0x88100103, // 002D GETMBR R4 R0 K3 + 0x88100107, // 002D GETMBR R4 R0 K7 0x7C0C0200, // 002E CALL R3 1 0x780E0001, // 002F JMPF R3 #0032 - 0x880C050A, // 0030 GETMBR R3 R2 K10 + 0x880C050D, // 0030 GETMBR R3 R2 K13 0x70020000, // 0031 JMP #0033 - 0x880C0509, // 0032 GETMBR R3 R2 K9 - 0x90020203, // 0033 SETMBR R0 K1 R3 + 0x880C050C, // 0032 GETMBR R3 R2 K12 + 0x90020C03, // 0033 SETMBR R0 K6 R3 0x70020070, // 0034 JMP #00A6 - 0x880C0101, // 0035 GETMBR R3 R0 K1 - 0x8810050B, // 0036 GETMBR R4 R2 K11 + 0x880C0106, // 0035 GETMBR R3 R0 K6 + 0x8810050E, // 0036 GETMBR R4 R2 K14 0x280C0604, // 0037 GE R3 R3 R4 0x780E0018, // 0038 JMPF R3 #0052 - 0x880C0101, // 0039 GETMBR R3 R0 K1 - 0x88100507, // 003A GETMBR R4 R2 K7 + 0x880C0106, // 0039 GETMBR R3 R0 K6 + 0x8810050F, // 003A GETMBR R4 R2 K15 0x180C0604, // 003B LE R3 R3 R4 0x780E0014, // 003C JMPF R3 #0052 0x600C0009, // 003D GETGBL R3 G9 - 0x88100103, // 003E GETMBR R4 R0 K3 + 0x88100107, // 003E GETMBR R4 R0 K7 0x7C0C0200, // 003F CALL R3 1 0x5412007E, // 0040 LDINT R4 127 0x18100604, // 0041 LE R4 R3 R4 @@ -1543,8 +1437,8 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5411FF7F, // 0043 LDINT R4 -128 0x28100604, // 0044 GE R4 R3 R4 0x78120002, // 0045 JMPF R4 #0049 - 0x8810050C, // 0046 GETMBR R4 R2 K12 - 0x90020204, // 0047 SETMBR R0 K1 R4 + 0x88100510, // 0046 GETMBR R4 R2 K16 + 0x90020C04, // 0047 SETMBR R0 K6 R4 0x70020007, // 0048 JMP #0051 0x54127FFE, // 0049 LDINT R4 32767 0x18100604, // 004A LE R4 R3 R4 @@ -1552,330 +1446,330 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x54117FFF, // 004C LDINT R4 -32768 0x28100604, // 004D GE R4 R3 R4 0x78120001, // 004E JMPF R4 #0051 - 0x8810050B, // 004F GETMBR R4 R2 K11 - 0x90020204, // 0050 SETMBR R0 K1 R4 + 0x8810050E, // 004F GETMBR R4 R2 K14 + 0x90020C04, // 0050 SETMBR R0 K6 R4 0x70020053, // 0051 JMP #00A6 - 0x880C0101, // 0052 GETMBR R3 R0 K1 - 0x8810050D, // 0053 GETMBR R4 R2 K13 + 0x880C0106, // 0052 GETMBR R3 R0 K6 + 0x88100511, // 0053 GETMBR R4 R2 K17 0x280C0604, // 0054 GE R3 R3 R4 0x780E0016, // 0055 JMPF R3 #006D - 0x880C0101, // 0056 GETMBR R3 R0 K1 - 0x88100508, // 0057 GETMBR R4 R2 K8 + 0x880C0106, // 0056 GETMBR R3 R0 K6 + 0x88100512, // 0057 GETMBR R4 R2 K18 0x180C0604, // 0058 LE R3 R3 R4 0x780E0012, // 0059 JMPF R3 #006D 0x600C0009, // 005A GETGBL R3 G9 - 0x88100103, // 005B GETMBR R4 R0 K3 + 0x88100107, // 005B GETMBR R4 R0 K7 0x7C0C0200, // 005C CALL R3 1 0x541200FE, // 005D LDINT R4 255 0x18100604, // 005E LE R4 R3 R4 0x78120004, // 005F JMPF R4 #0065 - 0x2810070E, // 0060 GE R4 R3 K14 + 0x2810072D, // 0060 GE R4 R3 K45 0x78120002, // 0061 JMPF R4 #0065 - 0x8810050F, // 0062 GETMBR R4 R2 K15 - 0x90020204, // 0063 SETMBR R0 K1 R4 + 0x88100513, // 0062 GETMBR R4 R2 K19 + 0x90020C04, // 0063 SETMBR R0 K6 R4 0x70020006, // 0064 JMP #006C 0x5412FFFE, // 0065 LDINT R4 65535 0x18100604, // 0066 LE R4 R3 R4 0x78120003, // 0067 JMPF R4 #006C - 0x2810070E, // 0068 GE R4 R3 K14 + 0x2810072D, // 0068 GE R4 R3 K45 0x78120001, // 0069 JMPF R4 #006C - 0x8810050D, // 006A GETMBR R4 R2 K13 - 0x90020204, // 006B SETMBR R0 K1 R4 + 0x88100511, // 006A GETMBR R4 R2 K17 + 0x90020C04, // 006B SETMBR R0 K6 R4 0x70020038, // 006C JMP #00A6 - 0x880C0101, // 006D GETMBR R3 R0 K1 - 0x88100510, // 006E GETMBR R4 R2 K16 + 0x880C0106, // 006D GETMBR R3 R0 K6 + 0x88100514, // 006E GETMBR R4 R2 K20 0x280C0604, // 006F GE R3 R3 R4 0x780E0018, // 0070 JMPF R3 #008A - 0x880C0101, // 0071 GETMBR R3 R0 K1 - 0x88100511, // 0072 GETMBR R4 R2 K17 + 0x880C0106, // 0071 GETMBR R3 R0 K6 + 0x88100515, // 0072 GETMBR R4 R2 K21 0x180C0604, // 0073 LE R3 R3 R4 0x780E0014, // 0074 JMPF R3 #008A 0x600C000C, // 0075 GETGBL R3 G12 - 0x88100103, // 0076 GETMBR R4 R0 K3 + 0x88100107, // 0076 GETMBR R4 R0 K7 0x7C0C0200, // 0077 CALL R3 1 0x541200FE, // 0078 LDINT R4 255 0x180C0604, // 0079 LE R3 R3 R4 0x780E0002, // 007A JMPF R3 #007E - 0x880C0510, // 007B GETMBR R3 R2 K16 - 0x90020203, // 007C SETMBR R0 K1 R3 + 0x880C0514, // 007B GETMBR R3 R2 K20 + 0x90020C03, // 007C SETMBR R0 K6 R3 0x7002000A, // 007D JMP #0089 0x600C000C, // 007E GETGBL R3 G12 - 0x88100103, // 007F GETMBR R4 R0 K3 + 0x88100107, // 007F GETMBR R4 R0 K7 0x7C0C0200, // 0080 CALL R3 1 0x5412FFFE, // 0081 LDINT R4 65535 0x180C0604, // 0082 LE R3 R3 R4 0x780E0002, // 0083 JMPF R3 #0087 - 0x880C0512, // 0084 GETMBR R3 R2 K18 - 0x90020203, // 0085 SETMBR R0 K1 R3 + 0x880C0516, // 0084 GETMBR R3 R2 K22 + 0x90020C03, // 0085 SETMBR R0 K6 R3 0x70020001, // 0086 JMP #0089 - 0x880C0513, // 0087 GETMBR R3 R2 K19 - 0x90020203, // 0088 SETMBR R0 K1 R3 + 0x880C0517, // 0087 GETMBR R3 R2 K23 + 0x90020C03, // 0088 SETMBR R0 K6 R3 0x7002001B, // 0089 JMP #00A6 - 0x880C0101, // 008A GETMBR R3 R0 K1 - 0x88100514, // 008B GETMBR R4 R2 K20 + 0x880C0106, // 008A GETMBR R3 R0 K6 + 0x88100518, // 008B GETMBR R4 R2 K24 0x280C0604, // 008C GE R3 R3 R4 0x780E0017, // 008D JMPF R3 #00A6 - 0x880C0101, // 008E GETMBR R3 R0 K1 - 0x88100515, // 008F GETMBR R4 R2 K21 + 0x880C0106, // 008E GETMBR R3 R0 K6 + 0x88100519, // 008F GETMBR R4 R2 K25 0x180C0604, // 0090 LE R3 R3 R4 0x780E0013, // 0091 JMPF R3 #00A6 0x600C000C, // 0092 GETGBL R3 G12 - 0x88100103, // 0093 GETMBR R4 R0 K3 + 0x88100107, // 0093 GETMBR R4 R0 K7 0x7C0C0200, // 0094 CALL R3 1 0x541200FE, // 0095 LDINT R4 255 0x180C0604, // 0096 LE R3 R3 R4 0x780E0002, // 0097 JMPF R3 #009B - 0x880C0514, // 0098 GETMBR R3 R2 K20 - 0x90020203, // 0099 SETMBR R0 K1 R3 + 0x880C0518, // 0098 GETMBR R3 R2 K24 + 0x90020C03, // 0099 SETMBR R0 K6 R3 0x7002000A, // 009A JMP #00A6 0x600C000C, // 009B GETGBL R3 G12 - 0x88100103, // 009C GETMBR R4 R0 K3 + 0x88100107, // 009C GETMBR R4 R0 K7 0x7C0C0200, // 009D CALL R3 1 0x5412FFFE, // 009E LDINT R4 65535 0x180C0604, // 009F LE R3 R3 R4 0x780E0002, // 00A0 JMPF R3 #00A4 - 0x880C0516, // 00A1 GETMBR R3 R2 K22 - 0x90020203, // 00A2 SETMBR R0 K1 R3 + 0x880C051A, // 00A1 GETMBR R3 R2 K26 + 0x90020C03, // 00A2 SETMBR R0 K6 R3 0x70020001, // 00A3 JMP #00A6 - 0x880C0517, // 00A4 GETMBR R3 R2 K23 - 0x90020203, // 00A5 SETMBR R0 K1 R3 - 0x8C0C0118, // 00A6 GETMET R3 R0 K24 + 0x880C051B, // 00A4 GETMBR R3 R2 K27 + 0x90020C03, // 00A5 SETMBR R0 K6 R3 + 0x8C0C0151, // 00A6 GETMET R3 R0 K81 0x5C140200, // 00A7 MOVE R5 R1 0x7C0C0400, // 00A8 CALL R3 2 - 0x880C0101, // 00A9 GETMBR R3 R0 K1 - 0x8810050C, // 00AA GETMBR R4 R2 K12 + 0x880C0106, // 00A9 GETMBR R3 R0 K6 + 0x88100510, // 00AA GETMBR R4 R2 K16 0x1C0C0604, // 00AB EQ R3 R3 R4 0x740E0003, // 00AC JMPT R3 #00B1 - 0x880C0101, // 00AD GETMBR R3 R0 K1 - 0x8810050F, // 00AE GETMBR R4 R2 K15 + 0x880C0106, // 00AD GETMBR R3 R0 K6 + 0x88100513, // 00AE GETMBR R4 R2 K19 0x1C0C0604, // 00AF EQ R3 R3 R4 0x780E0006, // 00B0 JMPF R3 #00B8 - 0x8C0C0319, // 00B1 GETMET R3 R1 K25 + 0x8C0C034C, // 00B1 GETMET R3 R1 K76 0x60140009, // 00B2 GETGBL R5 G9 - 0x88180103, // 00B3 GETMBR R6 R0 K3 + 0x88180107, // 00B3 GETMBR R6 R0 K7 0x7C140200, // 00B4 CALL R5 1 - 0x5818001A, // 00B5 LDCONST R6 K26 + 0x5818001D, // 00B5 LDCONST R6 K29 0x7C0C0600, // 00B6 CALL R3 3 0x700200DA, // 00B7 JMP #0193 - 0x880C0101, // 00B8 GETMBR R3 R0 K1 - 0x8810050B, // 00B9 GETMBR R4 R2 K11 + 0x880C0106, // 00B8 GETMBR R3 R0 K6 + 0x8810050E, // 00B9 GETMBR R4 R2 K14 0x1C0C0604, // 00BA EQ R3 R3 R4 0x740E0003, // 00BB JMPT R3 #00C0 - 0x880C0101, // 00BC GETMBR R3 R0 K1 - 0x8810050D, // 00BD GETMBR R4 R2 K13 + 0x880C0106, // 00BC GETMBR R3 R0 K6 + 0x88100511, // 00BD GETMBR R4 R2 K17 0x1C0C0604, // 00BE EQ R3 R3 R4 0x780E0006, // 00BF JMPF R3 #00C7 - 0x8C0C0319, // 00C0 GETMET R3 R1 K25 + 0x8C0C034C, // 00C0 GETMET R3 R1 K76 0x60140009, // 00C1 GETGBL R5 G9 - 0x88180103, // 00C2 GETMBR R6 R0 K3 + 0x88180107, // 00C2 GETMBR R6 R0 K7 0x7C140200, // 00C3 CALL R5 1 - 0x5818001B, // 00C4 LDCONST R6 K27 + 0x5818001E, // 00C4 LDCONST R6 K30 0x7C0C0600, // 00C5 CALL R3 3 0x700200CB, // 00C6 JMP #0193 - 0x880C0101, // 00C7 GETMBR R3 R0 K1 - 0x88100507, // 00C8 GETMBR R4 R2 K7 + 0x880C0106, // 00C7 GETMBR R3 R0 K6 + 0x8810050F, // 00C8 GETMBR R4 R2 K15 0x1C0C0604, // 00C9 EQ R3 R3 R4 0x740E0003, // 00CA JMPT R3 #00CF - 0x880C0101, // 00CB GETMBR R3 R0 K1 - 0x88100508, // 00CC GETMBR R4 R2 K8 + 0x880C0106, // 00CB GETMBR R3 R0 K6 + 0x88100512, // 00CC GETMBR R4 R2 K18 0x1C0C0604, // 00CD EQ R3 R3 R4 0x780E0006, // 00CE JMPF R3 #00D6 - 0x8C0C0319, // 00CF GETMET R3 R1 K25 + 0x8C0C034C, // 00CF GETMET R3 R1 K76 0x60140009, // 00D0 GETGBL R5 G9 - 0x88180103, // 00D1 GETMBR R6 R0 K3 + 0x88180107, // 00D1 GETMBR R6 R0 K7 0x7C140200, // 00D2 CALL R5 1 0x541A0003, // 00D3 LDINT R6 4 0x7C0C0600, // 00D4 CALL R3 3 0x700200BC, // 00D5 JMP #0193 - 0x880C0101, // 00D6 GETMBR R3 R0 K1 - 0x88100504, // 00D7 GETMBR R4 R2 K4 + 0x880C0106, // 00D6 GETMBR R3 R0 K6 + 0x8810051F, // 00D7 GETMBR R4 R2 K31 0x1C0C0604, // 00D8 EQ R3 R3 R4 0x740E0003, // 00D9 JMPT R3 #00DE - 0x880C0101, // 00DA GETMBR R3 R0 K1 - 0x88100505, // 00DB GETMBR R4 R2 K5 + 0x880C0106, // 00DA GETMBR R3 R0 K6 + 0x88100520, // 00DB GETMBR R4 R2 K32 0x1C0C0604, // 00DC EQ R3 R3 R4 0x780E002D, // 00DD JMPF R3 #010C - 0x880C0103, // 00DE GETMBR R3 R0 K3 + 0x880C0107, // 00DE GETMBR R3 R0 K7 0x6010000F, // 00DF GETGBL R4 G15 0x5C140600, // 00E0 MOVE R5 R3 0x60180015, // 00E1 GETGBL R6 G21 0x7C100400, // 00E2 CALL R4 2 0x78120006, // 00E3 JMPF R4 #00EB - 0x8C10071C, // 00E4 GETMET R4 R3 K28 + 0x8C100752, // 00E4 GETMET R4 R3 K82 0x7C100200, // 00E5 CALL R4 1 - 0x8C10091D, // 00E6 GETMET R4 R4 K29 + 0x8C100953, // 00E6 GETMET R4 R4 K83 0x541A0007, // 00E7 LDINT R6 8 0x7C100400, // 00E8 CALL R4 2 0x5C0C0800, // 00E9 MOVE R3 R4 0x7002001E, // 00EA JMP #010A 0x6010000F, // 00EB GETGBL R4 G15 0x5C140600, // 00EC MOVE R5 R3 - 0xB81A3C00, // 00ED GETNGBL R6 K30 + 0xB81A7400, // 00ED GETNGBL R6 K58 0x7C100400, // 00EE CALL R4 2 0x78120003, // 00EF JMPF R4 #00F4 - 0x8C10071F, // 00F0 GETMET R4 R3 K31 + 0x8C100754, // 00F0 GETMET R4 R3 K84 0x7C100200, // 00F1 CALL R4 1 0x5C0C0800, // 00F2 MOVE R3 R4 0x70020015, // 00F3 JMP #010A - 0x88100101, // 00F4 GETMBR R4 R0 K1 - 0x88140504, // 00F5 GETMBR R5 R2 K4 + 0x88100106, // 00F4 GETMBR R4 R0 K6 + 0x8814051F, // 00F5 GETMBR R5 R2 K31 0x1C100805, // 00F6 EQ R4 R4 R5 0x78120008, // 00F7 JMPF R4 #0101 - 0xB8123C00, // 00F8 GETNGBL R4 K30 + 0xB8127400, // 00F8 GETNGBL R4 K58 0x60140009, // 00F9 GETGBL R5 G9 0x5C180600, // 00FA MOVE R6 R3 0x7C140200, // 00FB CALL R5 1 0x7C100200, // 00FC CALL R4 1 - 0x8C10091F, // 00FD GETMET R4 R4 K31 + 0x8C100954, // 00FD GETMET R4 R4 K84 0x7C100200, // 00FE CALL R4 1 0x5C0C0800, // 00FF MOVE R3 R4 0x70020008, // 0100 JMP #010A - 0xB8123C00, // 0101 GETNGBL R4 K30 - 0x8C100920, // 0102 GETMET R4 R4 K32 + 0xB8127400, // 0101 GETNGBL R4 K58 + 0x8C100955, // 0102 GETMET R4 R4 K85 0x60180009, // 0103 GETGBL R6 G9 0x5C1C0600, // 0104 MOVE R7 R3 0x7C180200, // 0105 CALL R6 1 0x7C100400, // 0106 CALL R4 2 - 0x8C10091F, // 0107 GETMET R4 R4 K31 + 0x8C100954, // 0107 GETMET R4 R4 K84 0x7C100200, // 0108 CALL R4 1 0x5C0C0800, // 0109 MOVE R3 R4 0x40100203, // 010A CONNECT R4 R1 R3 0x70020086, // 010B JMP #0193 - 0x880C0101, // 010C GETMBR R3 R0 K1 - 0x88100509, // 010D GETMBR R4 R2 K9 + 0x880C0106, // 010C GETMBR R3 R0 K6 + 0x8810050C, // 010D GETMBR R4 R2 K12 0x1C0C0604, // 010E EQ R3 R3 R4 0x740E0003, // 010F JMPT R3 #0114 - 0x880C0101, // 0110 GETMBR R3 R0 K1 - 0x8810050A, // 0111 GETMBR R4 R2 K10 + 0x880C0106, // 0110 GETMBR R3 R0 K6 + 0x8810050D, // 0111 GETMBR R4 R2 K13 0x1C0C0604, // 0112 EQ R3 R3 R4 0x780E0000, // 0113 JMPF R3 #0115 0x7002007D, // 0114 JMP #0193 - 0x880C0101, // 0115 GETMBR R3 R0 K1 + 0x880C0106, // 0115 GETMBR R3 R0 K6 0x88100521, // 0116 GETMBR R4 R2 K33 0x1C0C0604, // 0117 EQ R3 R3 R4 0x780E000D, // 0118 JMPF R3 #0127 0x600C000C, // 0119 GETGBL R3 G12 0x5C100200, // 011A MOVE R4 R1 0x7C0C0200, // 011B CALL R3 1 - 0x8C100319, // 011C GETMET R4 R1 K25 - 0x5818000E, // 011D LDCONST R6 K14 + 0x8C10034C, // 011C GETMET R4 R1 K76 + 0x5818002D, // 011D LDCONST R6 K45 0x541E0003, // 011E LDINT R7 4 0x7C100600, // 011F CALL R4 3 - 0x8C100322, // 0120 GETMET R4 R1 K34 + 0x8C100356, // 0120 GETMET R4 R1 K86 0x5C180600, // 0121 MOVE R6 R3 0x601C000A, // 0122 GETGBL R7 G10 - 0x88200103, // 0123 GETMBR R8 R0 K3 + 0x88200107, // 0123 GETMBR R8 R0 K7 0x7C1C0200, // 0124 CALL R7 1 0x7C100600, // 0125 CALL R4 3 0x7002006B, // 0126 JMP #0193 - 0x880C0101, // 0127 GETMBR R3 R0 K1 - 0x88100523, // 0128 GETMBR R4 R2 K35 + 0x880C0106, // 0127 GETMBR R3 R0 K6 + 0x88100522, // 0128 GETMBR R4 R2 K34 0x1C0C0604, // 0129 EQ R3 R3 R4 0x780E0001, // 012A JMPF R3 #012D - 0xB0064925, // 012B RAISE 1 K36 K37 + 0xB0064724, // 012B RAISE 1 K35 K36 0x70020065, // 012C JMP #0193 - 0x880C0101, // 012D GETMBR R3 R0 K1 - 0x88100514, // 012E GETMBR R4 R2 K20 + 0x880C0106, // 012D GETMBR R3 R0 K6 + 0x88100518, // 012E GETMBR R4 R2 K24 0x1C0C0604, // 012F EQ R3 R3 R4 0x780E0015, // 0130 JMPF R3 #0147 0x600C000C, // 0131 GETGBL R3 G12 - 0x88100103, // 0132 GETMBR R4 R0 K3 + 0x88100107, // 0132 GETMBR R4 R0 K7 0x7C0C0200, // 0133 CALL R3 1 0x541200FE, // 0134 LDINT R4 255 0x240C0604, // 0135 GT R3 R3 R4 0x780E0000, // 0136 JMPF R3 #0138 - 0xB0064926, // 0137 RAISE 1 K36 K38 - 0x8C0C0319, // 0138 GETMET R3 R1 K25 + 0xB0064757, // 0137 RAISE 1 K35 K87 + 0x8C0C034C, // 0138 GETMET R3 R1 K76 0x6014000C, // 0139 GETGBL R5 G12 - 0x88180103, // 013A GETMBR R6 R0 K3 + 0x88180107, // 013A GETMBR R6 R0 K7 0x7C140200, // 013B CALL R5 1 - 0x5818001A, // 013C LDCONST R6 K26 + 0x5818001D, // 013C LDCONST R6 K29 0x7C0C0600, // 013D CALL R3 3 0x600C0015, // 013E GETGBL R3 G21 0x7C0C0000, // 013F CALL R3 0 - 0x8C0C0727, // 0140 GETMET R3 R3 K39 + 0x8C0C0758, // 0140 GETMET R3 R3 K88 0x60140008, // 0141 GETGBL R5 G8 - 0x88180103, // 0142 GETMBR R6 R0 K3 + 0x88180107, // 0142 GETMBR R6 R0 K7 0x7C140200, // 0143 CALL R5 1 0x7C0C0400, // 0144 CALL R3 2 0x400C0203, // 0145 CONNECT R3 R1 R3 0x7002004B, // 0146 JMP #0193 - 0x880C0101, // 0147 GETMBR R3 R0 K1 - 0x88100516, // 0148 GETMBR R4 R2 K22 + 0x880C0106, // 0147 GETMBR R3 R0 K6 + 0x8810051A, // 0148 GETMBR R4 R2 K26 0x1C0C0604, // 0149 EQ R3 R3 R4 0x780E0015, // 014A JMPF R3 #0161 0x600C000C, // 014B GETGBL R3 G12 - 0x88100103, // 014C GETMBR R4 R0 K3 + 0x88100107, // 014C GETMBR R4 R0 K7 0x7C0C0200, // 014D CALL R3 1 0x5412FFFE, // 014E LDINT R4 65535 0x240C0604, // 014F GT R3 R3 R4 0x780E0000, // 0150 JMPF R3 #0152 - 0xB0064926, // 0151 RAISE 1 K36 K38 - 0x8C0C0319, // 0152 GETMET R3 R1 K25 + 0xB0064757, // 0151 RAISE 1 K35 K87 + 0x8C0C034C, // 0152 GETMET R3 R1 K76 0x6014000C, // 0153 GETGBL R5 G12 - 0x88180103, // 0154 GETMBR R6 R0 K3 + 0x88180107, // 0154 GETMBR R6 R0 K7 0x7C140200, // 0155 CALL R5 1 - 0x5818001B, // 0156 LDCONST R6 K27 + 0x5818001E, // 0156 LDCONST R6 K30 0x7C0C0600, // 0157 CALL R3 3 0x600C0015, // 0158 GETGBL R3 G21 0x7C0C0000, // 0159 CALL R3 0 - 0x8C0C0728, // 015A GETMET R3 R3 K40 + 0x8C0C0759, // 015A GETMET R3 R3 K89 0x60140008, // 015B GETGBL R5 G8 - 0x88180103, // 015C GETMBR R6 R0 K3 + 0x88180107, // 015C GETMBR R6 R0 K7 0x7C140200, // 015D CALL R5 1 0x7C0C0400, // 015E CALL R3 2 0x400C0203, // 015F CONNECT R3 R1 R3 0x70020031, // 0160 JMP #0193 - 0x880C0101, // 0161 GETMBR R3 R0 K1 - 0x88100510, // 0162 GETMBR R4 R2 K16 + 0x880C0106, // 0161 GETMBR R3 R0 K6 + 0x88100514, // 0162 GETMBR R4 R2 K20 0x1C0C0604, // 0163 EQ R3 R3 R4 0x780E000F, // 0164 JMPF R3 #0175 0x600C000C, // 0165 GETGBL R3 G12 - 0x88100103, // 0166 GETMBR R4 R0 K3 + 0x88100107, // 0166 GETMBR R4 R0 K7 0x7C0C0200, // 0167 CALL R3 1 0x541200FE, // 0168 LDINT R4 255 0x240C0604, // 0169 GT R3 R3 R4 0x780E0000, // 016A JMPF R3 #016C - 0xB0064929, // 016B RAISE 1 K36 K41 - 0x8C0C0319, // 016C GETMET R3 R1 K25 + 0xB006475A, // 016B RAISE 1 K35 K90 + 0x8C0C034C, // 016C GETMET R3 R1 K76 0x6014000C, // 016D GETGBL R5 G12 - 0x88180103, // 016E GETMBR R6 R0 K3 + 0x88180107, // 016E GETMBR R6 R0 K7 0x7C140200, // 016F CALL R5 1 - 0x5818001A, // 0170 LDCONST R6 K26 + 0x5818001D, // 0170 LDCONST R6 K29 0x7C0C0600, // 0171 CALL R3 3 - 0x880C0103, // 0172 GETMBR R3 R0 K3 + 0x880C0107, // 0172 GETMBR R3 R0 K7 0x400C0203, // 0173 CONNECT R3 R1 R3 0x7002001D, // 0174 JMP #0193 - 0x880C0101, // 0175 GETMBR R3 R0 K1 - 0x88100512, // 0176 GETMBR R4 R2 K18 + 0x880C0106, // 0175 GETMBR R3 R0 K6 + 0x88100516, // 0176 GETMBR R4 R2 K22 0x1C0C0604, // 0177 EQ R3 R3 R4 0x780E000F, // 0178 JMPF R3 #0189 0x600C000C, // 0179 GETGBL R3 G12 - 0x88100103, // 017A GETMBR R4 R0 K3 + 0x88100107, // 017A GETMBR R4 R0 K7 0x7C0C0200, // 017B CALL R3 1 0x5412FFFE, // 017C LDINT R4 65535 0x240C0604, // 017D GT R3 R3 R4 0x780E0000, // 017E JMPF R3 #0180 - 0xB0064929, // 017F RAISE 1 K36 K41 - 0x8C0C0319, // 0180 GETMET R3 R1 K25 + 0xB006475A, // 017F RAISE 1 K35 K90 + 0x8C0C034C, // 0180 GETMET R3 R1 K76 0x6014000C, // 0181 GETGBL R5 G12 - 0x88180103, // 0182 GETMBR R6 R0 K3 + 0x88180107, // 0182 GETMBR R6 R0 K7 0x7C140200, // 0183 CALL R5 1 - 0x5818001B, // 0184 LDCONST R6 K27 + 0x5818001E, // 0184 LDCONST R6 K30 0x7C0C0600, // 0185 CALL R3 3 - 0x880C0103, // 0186 GETMBR R3 R0 K3 + 0x880C0107, // 0186 GETMBR R3 R0 K7 0x400C0203, // 0187 CONNECT R3 R1 R3 0x70020009, // 0188 JMP #0193 - 0x880C0101, // 0189 GETMBR R3 R0 K1 - 0x8810052A, // 018A GETMBR R4 R2 K42 + 0x880C0106, // 0189 GETMBR R3 R0 K6 + 0x88100525, // 018A GETMBR R4 R2 K37 0x1C0C0604, // 018B EQ R3 R3 R4 0x780E0000, // 018C JMPF R3 #018E 0x70020004, // 018D JMP #0193 0x600C0008, // 018E GETGBL R3 G8 - 0x88100101, // 018F GETMBR R4 R0 K1 + 0x88100106, // 018F GETMBR R4 R0 K6 0x7C0C0200, // 0190 CALL R3 1 - 0x000E5603, // 0191 ADD R3 K43 R3 - 0xB0064803, // 0192 RAISE 1 K36 R3 + 0x000E4C03, // 0191 ADD R3 K38 R3 + 0xB0064603, // 0192 RAISE 1 K35 R3 0x80040200, // 0193 RET 1 R1 }) ) @@ -1890,40 +1784,31 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(tag_number), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(tag_vendor), - /* K3 */ be_nested_str_weak(tag_profile), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(tag_sub), - /* K6 */ be_const_int(2), - /* K7 */ be_const_int(1), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(_encode_tag_len), &be_const_str_solidified, ( &(const binstruction[54]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040104, // 0000 GETMBR R1 R0 K4 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060001, // 0003 JMPF R1 #0006 - 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x88040104, // 0004 GETMBR R1 R0 K4 0x70020000, // 0005 JMP #0007 - 0x58040001, // 0006 LDCONST R1 K1 + 0x5804002D, // 0006 LDCONST R1 K45 0x540AFFFF, // 0007 LDINT R2 65536 0x28080202, // 0008 GE R2 R1 R2 0x740A0002, // 0009 JMPT R2 #000D - 0x14080301, // 000A LT R2 R1 K1 + 0x1408032D, // 000A LT R2 R1 K45 0x740A0000, // 000B JMPT R2 #000D 0x50080001, // 000C LDBOOL R2 0 1 0x50080200, // 000D LDBOOL R2 1 0 - 0x580C0001, // 000E LDCONST R3 K1 + 0x580C002D, // 000E LDCONST R3 K45 0x88100102, // 000F GETMBR R4 R0 K2 0x4C140000, // 0010 LDNIL R5 0x20100805, // 0011 NE R4 R4 R5 @@ -1943,7 +1828,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x54120004, // 001F LDINT R4 5 0x80040800, // 0020 RET 1 R4 0x70020000, // 0021 JMP #0023 - 0x80060800, // 0022 RET 1 K4 + 0x8006B600, // 0022 RET 1 K91 0x70020010, // 0023 JMP #0035 0x88100103, // 0024 GETMBR R4 R0 K3 0x4C140000, // 0025 LDNIL R5 @@ -1953,15 +1838,15 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x54120004, // 0029 LDINT R4 5 0x80040800, // 002A RET 1 R4 0x70020000, // 002B JMP #002D - 0x80060800, // 002C RET 1 K4 + 0x8006B600, // 002C RET 1 K91 0x70020006, // 002D JMP #0035 0x88100105, // 002E GETMBR R4 R0 K5 0x4C140000, // 002F LDNIL R5 0x20100805, // 0030 NE R4 R4 R5 0x78120001, // 0031 JMPF R4 #0034 - 0x80060C00, // 0032 RET 1 K6 + 0x8006B800, // 0032 RET 1 K92 0x70020000, // 0033 JMP #0035 - 0x80060E00, // 0034 RET 1 K7 + 0x80069C00, // 0034 RET 1 K78 0x80000000, // 0035 RET 0 }) ) @@ -1976,25 +1861,22 @@ be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_fulltag), - /* K1 */ be_nested_str_weak(tag_sub), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(set_contextspecific), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08014B, // 0000 GETMET R2 R0 K75 0x7C080200, // 0001 CALL R2 1 0x60080009, // 0002 GETGBL R2 G9 0x5C0C0200, // 0003 MOVE R3 R1 0x7C080200, // 0004 CALL R2 1 - 0x90020202, // 0005 SETMBR R0 K1 R2 + 0x90020A02, // 0005 SETMBR R0 K5 R2 0x80000000, // 0006 RET 0 }) ) @@ -2009,15 +1891,13 @@ be_local_closure(class_Matter_TLV_item_set_parent, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(parent), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(set_parent), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -2036,21 +1916,17 @@ be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV_item), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(create_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x5808004D, // 0000 LDCONST R2 K77 0x4C0C0000, // 0001 LDNIL R3 0x200C0203, // 0002 NE R3 R1 R3 0x740E0002, // 0003 JMPT R3 #0007 @@ -2059,8 +1935,8 @@ be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ 0x780E0004, // 0006 JMPF R3 #000C 0x5C0C0400, // 0007 MOVE R3 R2 0x7C0C0000, // 0008 CALL R3 0 - 0x900E0200, // 0009 SETMBR R3 K1 R0 - 0x900E0401, // 000A SETMBR R3 K2 R1 + 0x900E0C00, // 0009 SETMBR R3 K6 R0 + 0x900E0E01, // 000A SETMBR R3 K7 R1 0x80040600, // 000B RET 1 R3 0x80000000, // 000C RET 0 }) @@ -2076,19 +1952,17 @@ be_local_closure(class_Matter_TLV_item_set_anonymoustag, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_fulltag), - }), + &be_ktab_class_Matter_TLV_item, /* shared constants */ be_str_weak(set_anonymoustag), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04014B, // 0000 GETMET R1 R0 K75 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -2140,6 +2014,61 @@ be_local_class(Matter_TLV_item, })), be_str_weak(Matter_TLV_item) ); +// compact class 'Matter_TLV_list' ktab size: 51, total: 94 (saved 344 bytes) +static const bvalue be_ktab_class_Matter_TLV_list[51] = { + /* K0 */ be_nested_str_weak(findsub), + /* K1 */ be_nested_str_weak(val), + /* K2 */ be_nested_str_weak(_encode_tag), + /* K3 */ be_nested_str_weak(is_struct), + /* K4 */ be_nested_str_weak(copy), + /* K5 */ be_nested_str_weak(sort), + /* K6 */ be_nested_str_weak(tlv2raw), + /* K7 */ be_nested_str_weak(stop_iteration), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(TLV), + /* K10 */ be_nested_str_weak(EOC), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(tostring), + /* K13 */ be_nested_str_weak(tostring_inner), + /* K14 */ be_nested_str_weak(_X5B_X5B), + /* K15 */ be_nested_str_weak(_X5D_X5D), + /* K16 */ be_nested_str_weak(Matter_TLV_struct), + /* K17 */ be_nested_str_weak(tag_sub), + /* K18 */ be_nested_str_weak(push), + /* K19 */ be_nested_str_weak(Matter_TLV_list), + /* K20 */ be_nested_str_weak(parse), + /* K21 */ be_nested_str_weak(next_idx), + /* K22 */ be_nested_str_weak(init), + /* K23 */ be_nested_str_weak(typ), + /* K24 */ be_nested_str_weak(LIST), + /* K25 */ be_nested_str_weak(getsub), + /* K26 */ be_nested_str_weak(value_error), + /* K27 */ be_nested_str_weak(sub_X20not_X20found), + /* K28 */ be_nested_str_weak(to_TLV), + /* K29 */ be_nested_str_weak(matter), + /* K30 */ be_nested_str_weak(NULL), + /* K31 */ be_nested_str_weak(Matter_TLV_item), + /* K32 */ be_nested_str_weak(Matter_TLV_array), + /* K33 */ be_nested_str_weak(), + /* K34 */ be_nested_str_weak(tag_profile), + /* K35 */ be_nested_str_weak(Matter_X3A_X3A), + /* K36 */ be_nested_str_weak(tag_number), + /* K37 */ be_nested_str_weak(0x_X2508X_X20), + /* K38 */ be_nested_str_weak(tag_vendor), + /* K39 */ be_nested_str_weak(0x_X2504X_X3A_X3A), + /* K40 */ be_nested_str_weak(0x_X2504X_X3A), + /* K41 */ be_nested_str_weak(_X25i_X20), + /* K42 */ be_const_int(0), + /* K43 */ be_nested_str_weak(_X3D_X20), + /* K44 */ be_nested_str_weak(concat), + /* K45 */ be_nested_str_weak(_X2C_X20), + /* K46 */ be_nested_str_weak(_X20), + /* K47 */ be_nested_str_weak(_encode_tag_len), + /* K48 */ be_const_int(0), + /* K49 */ be_nested_str_weak(encode_len), + /* K50 */ be_const_int(1), +}; + extern const bclass be_class_Matter_TLV_list; @@ -2150,16 +2079,13 @@ be_local_closure(class_Matter_TLV_list_findsubval, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(findsub), - /* K1 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(findsubval), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -2185,25 +2111,13 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(_encode_tag), - /* K1 */ be_nested_str_weak(val), - /* K2 */ be_nested_str_weak(is_struct), - /* K3 */ be_nested_str_weak(copy), - /* K4 */ be_nested_str_weak(sort), - /* K5 */ be_nested_str_weak(tlv2raw), - /* K6 */ be_nested_str_weak(stop_iteration), - /* K7 */ be_nested_str_weak(add), - /* K8 */ be_nested_str_weak(TLV), - /* K9 */ be_nested_str_weak(EOC), - /* K10 */ be_const_int(1), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(tlv2raw), &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ @@ -2213,16 +2127,16 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */ 0x60080015, // 0003 GETGBL R2 G21 0x7C080000, // 0004 CALL R2 0 0x5C040400, // 0005 MOVE R1 R2 - 0x8C080100, // 0006 GETMET R2 R0 K0 + 0x8C080102, // 0006 GETMET R2 R0 K2 0x5C100200, // 0007 MOVE R4 R1 0x7C080400, // 0008 CALL R2 2 0x88080101, // 0009 GETMBR R2 R0 K1 - 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x880C0103, // 000A GETMBR R3 R0 K3 0x780E0005, // 000B JMPF R3 #0012 - 0x8C0C0503, // 000C GETMET R3 R2 K3 + 0x8C0C0504, // 000C GETMET R3 R2 K4 0x7C0C0200, // 000D CALL R3 1 0x5C080600, // 000E MOVE R2 R3 - 0x8C0C0104, // 000F GETMET R3 R0 K4 + 0x8C0C0105, // 000F GETMET R3 R0 K5 0x5C140400, // 0010 MOVE R5 R2 0x7C0C0400, // 0011 CALL R3 2 0x600C0010, // 0012 GETGBL R3 G16 @@ -2238,17 +2152,17 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */ 0x78160001, // 001C JMPF R5 #001F 0x40140204, // 001D CONNECT R5 R1 R4 0x70020002, // 001E JMP #0022 - 0x8C140905, // 001F GETMET R5 R4 K5 + 0x8C140906, // 001F GETMET R5 R4 K6 0x5C1C0200, // 0020 MOVE R7 R1 0x7C140400, // 0021 CALL R5 2 0x7001FFF2, // 0022 JMP #0016 - 0x580C0006, // 0023 LDCONST R3 K6 + 0x580C0007, // 0023 LDCONST R3 K7 0xAC0C0200, // 0024 CATCH R3 1 0 0xB0080000, // 0025 RAISE 2 R0 R0 - 0x8C0C0307, // 0026 GETMET R3 R1 K7 - 0x88140108, // 0027 GETMBR R5 R0 K8 - 0x88140B09, // 0028 GETMBR R5 R5 K9 - 0x5818000A, // 0029 LDCONST R6 K10 + 0x8C0C0308, // 0026 GETMET R3 R1 K8 + 0x88140109, // 0027 GETMBR R5 R0 K9 + 0x88140B0A, // 0028 GETMBR R5 R5 K10 + 0x5818000B, // 0029 LDCONST R6 K11 0x7C0C0600, // 002A CALL R3 3 0x80040200, // 002B RET 1 R1 }) @@ -2264,19 +2178,17 @@ be_local_closure(class_Matter_TLV_list_to_str_val, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(tostring), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(to_str_val), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010C, // 0000 GETMET R1 R0 K12 0x500C0200, // 0001 LDBOOL R3 1 0 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 @@ -2293,24 +2205,20 @@ be_local_closure(class_Matter_TLV_list_tostring, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tostring_inner), - /* K1 */ be_nested_str_weak(_X5B_X5B), - /* K2 */ be_nested_str_weak(_X5D_X5D), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08010D, // 0000 GETMET R2 R0 K13 0x50100000, // 0001 LDBOOL R4 0 0 - 0x58140001, // 0002 LDCONST R5 K1 - 0x58180002, // 0003 LDCONST R6 K2 + 0x5814000E, // 0002 LDCONST R5 K14 + 0x5818000F, // 0003 LDCONST R6 K15 0x5C1C0200, // 0004 MOVE R7 R1 0x7C080A00, // 0005 CALL R2 5 0x80040400, // 0006 RET 1 R2 @@ -2327,20 +2235,18 @@ be_local_closure(class_Matter_TLV_list_size, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(size), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -2356,19 +2262,17 @@ be_local_closure(class_Matter_TLV_list_setitem, /* name */ be_nested_proto( 4, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(setitem), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C0101, // 0000 GETMBR R3 R0 K1 0x980C0202, // 0001 SETIDX R3 R1 R2 0x80000000, // 0002 RET 0 }) @@ -2384,29 +2288,23 @@ be_local_closure(class_Matter_TLV_list_add_struct, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(Matter_TLV_struct), - /* K2 */ be_nested_str_weak(tag_sub), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(add_struct), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080109, // 0000 GETMBR R2 R0 K9 + 0x8C080510, // 0001 GETMET R2 R2 K16 0x5C100000, // 0002 MOVE R4 R0 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x900A2201, // 0004 SETMBR R2 K17 R1 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x8C0C0712, // 0006 GETMET R3 R3 K18 0x5C140400, // 0007 MOVE R5 R2 0x7C0C0400, // 0008 CALL R3 2 0x80040400, // 0009 RET 1 R2 @@ -2423,29 +2321,23 @@ be_local_closure(class_Matter_TLV_list_add_list, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(Matter_TLV_list), - /* K2 */ be_nested_str_weak(tag_sub), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(add_list), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080109, // 0000 GETMBR R2 R0 K9 + 0x8C080513, // 0001 GETMET R2 R2 K19 0x5C100000, // 0002 MOVE R4 R0 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x900A2201, // 0004 SETMBR R2 K17 R1 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x8C0C0712, // 0006 GETMET R3 R3 K18 0x5C140400, // 0007 MOVE R5 R2 0x7C0C0400, // 0008 CALL R3 2 0x80040400, // 0009 RET 1 R2 @@ -2462,43 +2354,35 @@ be_local_closure(class_Matter_TLV_list_parse, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(EOC), - /* K2 */ be_nested_str_weak(parse), - /* K3 */ be_nested_str_weak(next_idx), - /* K4 */ be_nested_str_weak(val), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(parse), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ 0x940C0202, // 0000 GETIDX R3 R1 R2 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x88100901, // 0002 GETMBR R4 R4 K1 + 0x88100109, // 0001 GETMBR R4 R0 K9 + 0x8810090A, // 0002 GETMBR R4 R4 K10 0x200C0604, // 0003 NE R3 R3 R4 0x780E000B, // 0004 JMPF R3 #0011 - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x8C0C0702, // 0006 GETMET R3 R3 K2 + 0x880C0109, // 0005 GETMBR R3 R0 K9 + 0x8C0C0714, // 0006 GETMET R3 R3 K20 0x5C140200, // 0007 MOVE R5 R1 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0000, // 0009 MOVE R7 R0 0x7C0C0800, // 000A CALL R3 4 - 0x88080703, // 000B GETMBR R2 R3 K3 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x8C100905, // 000D GETMET R4 R4 K5 + 0x88080715, // 000B GETMBR R2 R3 K21 + 0x88100101, // 000C GETMBR R4 R0 K1 + 0x8C100912, // 000D GETMET R4 R4 K18 0x5C180600, // 000E MOVE R6 R3 0x7C100400, // 000F CALL R4 2 0x7001FFEE, // 0010 JMP #0000 - 0x00080506, // 0011 ADD R2 R2 K6 - 0x90020602, // 0012 SETMBR R0 K3 R2 + 0x0008050B, // 0011 ADD R2 R2 K11 + 0x90022A02, // 0012 SETMBR R0 K21 R2 0x80040400, // 0013 RET 1 R2 }) ) @@ -2513,34 +2397,28 @@ be_local_closure(class_Matter_TLV_list_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(LIST), - /* K4 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080516, // 0003 GETMET R2 R2 K22 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x88080102, // 0006 GETMBR R2 R0 K2 - 0x88080503, // 0007 GETMBR R2 R2 K3 - 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x88080109, // 0006 GETMBR R2 R0 K9 + 0x88080518, // 0007 GETMBR R2 R2 K24 + 0x90022E02, // 0008 SETMBR R0 K23 R2 0x60080012, // 0009 GETGBL R2 G18 0x7C080000, // 000A CALL R2 0 - 0x90020802, // 000B SETMBR R0 K4 R2 + 0x90020202, // 000B SETMBR R0 K1 R2 0x80000000, // 000C RET 0 }) ) @@ -2555,19 +2433,17 @@ be_local_closure(class_Matter_TLV_list_item, /* name */ be_nested_proto( 3, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(item), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080101, // 0000 GETMBR R2 R0 K1 0x94080401, // 0001 GETIDX R2 R2 R1 0x80040400, // 0002 RET 1 R2 }) @@ -2583,20 +2459,17 @@ be_local_closure(class_Matter_TLV_list_getsubval, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(getsub), - /* K1 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(getsubval), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080119, // 0000 GETMET R2 R0 K25 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x88080501, // 0003 GETMBR R2 R2 K1 @@ -2614,17 +2487,13 @@ be_local_closure(class_Matter_TLV_list_getsub, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(findsub), - /* K1 */ be_nested_str_weak(value_error), - /* K2 */ be_nested_str_weak(sub_X20not_X20found), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(getsub), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ @@ -2634,7 +2503,7 @@ be_local_closure(class_Matter_TLV_list_getsub, /* name */ 0x4C0C0000, // 0003 LDNIL R3 0x1C0C0403, // 0004 EQ R3 R2 R3 0x780E0000, // 0005 JMPF R3 #0007 - 0xB0060302, // 0006 RAISE 1 K1 K2 + 0xB006351B, // 0006 RAISE 1 K26 K27 0x80040400, // 0007 RET 1 R2 }) ) @@ -2649,18 +2518,13 @@ be_local_closure(class_Matter_TLV_list_add_obj, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(to_TLV), - /* K3 */ be_nested_str_weak(tag_sub), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(add_obj), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ @@ -2672,16 +2536,16 @@ be_local_closure(class_Matter_TLV_list_add_obj, /* name */ 0x60140015, // 0005 GETGBL R5 G21 0x7C0C0400, // 0006 CALL R3 2 0x780E0004, // 0007 JMPF R3 #000D - 0x880C0100, // 0008 GETMBR R3 R0 K0 - 0x8C0C0701, // 0009 GETMET R3 R3 K1 + 0x880C0101, // 0008 GETMBR R3 R0 K1 + 0x8C0C0712, // 0009 GETMET R3 R3 K18 0x5C140400, // 000A MOVE R5 R2 0x7C0C0400, // 000B CALL R3 2 0x70020006, // 000C JMP #0014 - 0x8C0C0502, // 000D GETMET R3 R2 K2 + 0x8C0C051C, // 000D GETMET R3 R2 K28 0x7C0C0200, // 000E CALL R3 1 - 0x900E0601, // 000F SETMBR R3 K3 R1 - 0x88100100, // 0010 GETMBR R4 R0 K0 - 0x8C100901, // 0011 GETMET R4 R4 K1 + 0x900E2201, // 000F SETMBR R3 K17 R1 + 0x88100101, // 0010 GETMBR R4 R0 K1 + 0x8C100912, // 0011 GETMET R4 R4 K18 0x5C180600, // 0012 MOVE R6 R3 0x7C100400, // 0013 CALL R4 2 0x80040000, // 0014 RET 1 R0 @@ -2698,42 +2562,33 @@ be_local_closure(class_Matter_TLV_list_add_TLV, /* name */ be_nested_proto( 8, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(NULL), - /* K3 */ be_nested_str_weak(Matter_TLV_item), - /* K4 */ be_nested_str_weak(tag_sub), - /* K5 */ be_nested_str_weak(typ), - /* K6 */ be_nested_str_weak(val), - /* K7 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(add_TLV), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ 0x4C100000, // 0000 LDNIL R4 0x20100604, // 0001 NE R4 R3 R4 0x74120004, // 0002 JMPT R4 #0008 - 0xB8120000, // 0003 GETNGBL R4 K0 - 0x88100901, // 0004 GETMBR R4 R4 K1 - 0x88100902, // 0005 GETMBR R4 R4 K2 + 0xB8123A00, // 0003 GETNGBL R4 K29 + 0x88100909, // 0004 GETMBR R4 R4 K9 + 0x8810091E, // 0005 GETMBR R4 R4 K30 0x1C100404, // 0006 EQ R4 R2 R4 0x7812000A, // 0007 JMPF R4 #0013 - 0x88100101, // 0008 GETMBR R4 R0 K1 - 0x8C100903, // 0009 GETMET R4 R4 K3 + 0x88100109, // 0008 GETMBR R4 R0 K9 + 0x8C10091F, // 0009 GETMET R4 R4 K31 0x5C180000, // 000A MOVE R6 R0 0x7C100400, // 000B CALL R4 2 - 0x90120801, // 000C SETMBR R4 K4 R1 - 0x90120A02, // 000D SETMBR R4 K5 R2 - 0x90120C03, // 000E SETMBR R4 K6 R3 - 0x88140106, // 000F GETMBR R5 R0 K6 - 0x8C140B07, // 0010 GETMET R5 R5 K7 + 0x90122201, // 000C SETMBR R4 K17 R1 + 0x90122E02, // 000D SETMBR R4 K23 R2 + 0x90120203, // 000E SETMBR R4 K1 R3 + 0x88140101, // 000F GETMBR R5 R0 K1 + 0x8C140B12, // 0010 GETMET R5 R5 K18 0x5C1C0800, // 0011 MOVE R7 R4 0x7C140400, // 0012 CALL R5 2 0x80040000, // 0013 RET 1 R0 @@ -2750,29 +2605,23 @@ be_local_closure(class_Matter_TLV_list_add_array, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(Matter_TLV_array), - /* K2 */ be_nested_str_weak(tag_sub), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(add_array), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080109, // 0000 GETMBR R2 R0 K9 + 0x8C080520, // 0001 GETMET R2 R2 K32 0x5C100000, // 0002 MOVE R4 R0 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x900A2201, // 0004 SETMBR R2 K17 R1 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x8C0C0712, // 0006 GETMET R3 R3 K18 0x5C140400, // 0007 MOVE R5 R2 0x7C0C0400, // 0008 CALL R3 2 0x80040400, // 0009 RET 1 R2 @@ -2789,33 +2638,29 @@ be_local_closure(class_Matter_TLV_list_findsub, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(tag_sub), - /* K2 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(findsub), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x600C0010, // 0000 GETGBL R3 G16 - 0x88100100, // 0001 GETMBR R4 R0 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 0x7C0C0200, // 0002 CALL R3 1 0xA8020007, // 0003 EXBLK 0 #000C 0x5C100600, // 0004 MOVE R4 R3 0x7C100000, // 0005 CALL R4 0 - 0x88140901, // 0006 GETMBR R5 R4 K1 + 0x88140911, // 0006 GETMBR R5 R4 K17 0x1C140A01, // 0007 EQ R5 R5 R1 0x78160001, // 0008 JMPF R5 #000B 0xA8040001, // 0009 EXBLK 1 1 0x80040800, // 000A RET 1 R4 0x7001FFF7, // 000B JMP #0004 - 0x580C0002, // 000C LDCONST R3 K2 + 0x580C0007, // 000C LDCONST R3 K7 0xAC0C0200, // 000D CATCH R3 1 0 0xB0080000, // 000E RAISE 2 R0 R0 0x80040400, // 000F RET 1 R2 @@ -2832,107 +2677,88 @@ be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */ be_nested_proto( 10, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(tag_profile), - /* K2 */ be_nested_str_weak(Matter_X3A_X3A), - /* K3 */ be_nested_str_weak(tag_number), - /* K4 */ be_nested_str_weak(0x_X2508X_X20), - /* K5 */ be_nested_str_weak(tag_vendor), - /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A), - /* K7 */ be_nested_str_weak(0x_X2504X_X3A), - /* K8 */ be_nested_str_weak(tag_sub), - /* K9 */ be_nested_str_weak(_X25i_X20), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(_X3D_X20), - /* K12 */ be_nested_str_weak(val), - /* K13 */ be_nested_str_weak(copy), - /* K14 */ be_nested_str_weak(sort), - /* K15 */ be_nested_str_weak(concat), - /* K16 */ be_nested_str_weak(_X2C_X20), - /* K17 */ be_nested_str_weak(_X20), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(tostring_inner), &be_const_str_solidified, ( &(const binstruction[85]) { /* code */ - 0x58140000, // 0000 LDCONST R5 K0 + 0x58140021, // 0000 LDCONST R5 K33 0xA802004A, // 0001 EXBLK 0 #004D 0x50180200, // 0002 LDBOOL R6 1 0 0x20180806, // 0003 NE R6 R4 R6 0x781A0038, // 0004 JMPF R6 #003E - 0x88180101, // 0005 GETMBR R6 R0 K1 + 0x88180122, // 0005 GETMBR R6 R0 K34 0x541DFFFE, // 0006 LDINT R7 -1 0x1C180C07, // 0007 EQ R6 R6 R7 0x781A000A, // 0008 JMPF R6 #0014 - 0x00140B02, // 0009 ADD R5 R5 K2 - 0x88180103, // 000A GETMBR R6 R0 K3 + 0x00140B23, // 0009 ADD R5 R5 K35 + 0x88180124, // 000A GETMBR R6 R0 K36 0x4C1C0000, // 000B LDNIL R7 0x20180C07, // 000C NE R6 R6 R7 0x781A0004, // 000D JMPF R6 #0013 0x60180018, // 000E GETGBL R6 G24 - 0x581C0004, // 000F LDCONST R7 K4 - 0x88200103, // 0010 GETMBR R8 R0 K3 + 0x581C0025, // 000F LDCONST R7 K37 + 0x88200124, // 0010 GETMBR R8 R0 K36 0x7C180400, // 0011 CALL R6 2 0x00140A06, // 0012 ADD R5 R5 R6 0x70020023, // 0013 JMP #0038 - 0x88180105, // 0014 GETMBR R6 R0 K5 + 0x88180126, // 0014 GETMBR R6 R0 K38 0x4C1C0000, // 0015 LDNIL R7 0x20180C07, // 0016 NE R6 R6 R7 0x781A0004, // 0017 JMPF R6 #001D 0x60180018, // 0018 GETGBL R6 G24 - 0x581C0006, // 0019 LDCONST R7 K6 - 0x88200105, // 001A GETMBR R8 R0 K5 + 0x581C0027, // 0019 LDCONST R7 K39 + 0x88200126, // 001A GETMBR R8 R0 K38 0x7C180400, // 001B CALL R6 2 0x00140A06, // 001C ADD R5 R5 R6 - 0x88180101, // 001D GETMBR R6 R0 K1 + 0x88180122, // 001D GETMBR R6 R0 K34 0x4C1C0000, // 001E LDNIL R7 0x20180C07, // 001F NE R6 R6 R7 0x781A0004, // 0020 JMPF R6 #0026 0x60180018, // 0021 GETGBL R6 G24 - 0x581C0007, // 0022 LDCONST R7 K7 - 0x88200101, // 0023 GETMBR R8 R0 K1 + 0x581C0028, // 0022 LDCONST R7 K40 + 0x88200122, // 0023 GETMBR R8 R0 K34 0x7C180400, // 0024 CALL R6 2 0x00140A06, // 0025 ADD R5 R5 R6 - 0x88180103, // 0026 GETMBR R6 R0 K3 + 0x88180124, // 0026 GETMBR R6 R0 K36 0x4C1C0000, // 0027 LDNIL R7 0x20180C07, // 0028 NE R6 R6 R7 0x781A0004, // 0029 JMPF R6 #002F 0x60180018, // 002A GETGBL R6 G24 - 0x581C0004, // 002B LDCONST R7 K4 - 0x88200103, // 002C GETMBR R8 R0 K3 + 0x581C0025, // 002B LDCONST R7 K37 + 0x88200124, // 002C GETMBR R8 R0 K36 0x7C180400, // 002D CALL R6 2 0x00140A06, // 002E ADD R5 R5 R6 - 0x88180108, // 002F GETMBR R6 R0 K8 + 0x88180111, // 002F GETMBR R6 R0 K17 0x4C1C0000, // 0030 LDNIL R7 0x20180C07, // 0031 NE R6 R6 R7 0x781A0004, // 0032 JMPF R6 #0038 0x60180018, // 0033 GETGBL R6 G24 - 0x581C0009, // 0034 LDCONST R7 K9 - 0x88200108, // 0035 GETMBR R8 R0 K8 + 0x581C0029, // 0034 LDCONST R7 K41 + 0x88200111, // 0035 GETMBR R8 R0 K17 0x7C180400, // 0036 CALL R6 2 0x00140A06, // 0037 ADD R5 R5 R6 0x6018000C, // 0038 GETGBL R6 G12 0x5C1C0A00, // 0039 MOVE R7 R5 0x7C180200, // 003A CALL R6 1 - 0x24180D0A, // 003B GT R6 R6 K10 + 0x24180D2A, // 003B GT R6 R6 K42 0x781A0000, // 003C JMPF R6 #003E - 0x00140B0B, // 003D ADD R5 R5 K11 + 0x00140B2B, // 003D ADD R5 R5 K43 0x00140A02, // 003E ADD R5 R5 R2 - 0x8818010C, // 003F GETMBR R6 R0 K12 - 0x8C180D0D, // 0040 GETMET R6 R6 K13 + 0x88180101, // 003F GETMBR R6 R0 K1 + 0x8C180D04, // 0040 GETMET R6 R6 K4 0x7C180200, // 0041 CALL R6 1 0x78060002, // 0042 JMPF R1 #0046 - 0x8C1C010E, // 0043 GETMET R7 R0 K14 + 0x8C1C0105, // 0043 GETMET R7 R0 K5 0x5C240C00, // 0044 MOVE R9 R6 0x7C1C0400, // 0045 CALL R7 2 - 0x8C1C0D0F, // 0046 GETMET R7 R6 K15 - 0x58240010, // 0047 LDCONST R9 K16 + 0x8C1C0D2C, // 0046 GETMET R7 R6 K44 + 0x5824002D, // 0047 LDCONST R9 K45 0x7C1C0400, // 0048 CALL R7 2 0x00140A07, // 0049 ADD R5 R5 R7 0x00140A03, // 004A ADD R5 R5 R3 @@ -2940,7 +2766,7 @@ be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */ 0x70020006, // 004C JMP #0054 0xAC180002, // 004D CATCH R6 0 2 0x70020003, // 004E JMP #0053 - 0x00200D11, // 004F ADD R8 R6 K17 + 0x00200D2E, // 004F ADD R8 R6 K46 0x00201007, // 0050 ADD R8 R8 R7 0x80041000, // 0051 RET 1 R8 0x70020000, // 0052 JMP #0054 @@ -2959,21 +2785,18 @@ be_local_closure(class_Matter_TLV_list_push, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(push), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080512, // 0001 GETMET R2 R2 K18 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 @@ -2990,16 +2813,13 @@ be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(findsub), - /* K1 */ be_nested_str_weak(typ), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(findsubtyp), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ @@ -3009,7 +2829,7 @@ be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */ 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0001, // 0005 JMPF R3 #0008 - 0x880C0501, // 0006 GETMBR R3 R2 K1 + 0x880C0517, // 0006 GETMBR R3 R2 K23 0x80040600, // 0007 RET 1 R3 0x4C0C0000, // 0008 LDNIL R3 0x80040600, // 0009 RET 1 R3 @@ -3026,38 +2846,32 @@ be_local_closure(class_Matter_TLV_list_encode_len, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_encode_tag_len), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(val), - /* K3 */ be_nested_str_weak(encode_len), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Matter_TLV_list, /* shared constants */ be_str_weak(encode_len), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04012F, // 0000 GETMET R1 R0 K47 0x7C040200, // 0001 CALL R1 1 - 0x58080001, // 0002 LDCONST R2 K1 + 0x58080030, // 0002 LDCONST R2 K48 0x600C000C, // 0003 GETGBL R3 G12 - 0x88100102, // 0004 GETMBR R4 R0 K2 + 0x88100101, // 0004 GETMBR R4 R0 K1 0x7C0C0200, // 0005 CALL R3 1 0x140C0403, // 0006 LT R3 R2 R3 0x780E0006, // 0007 JMPF R3 #000F - 0x880C0102, // 0008 GETMBR R3 R0 K2 + 0x880C0101, // 0008 GETMBR R3 R0 K1 0x940C0602, // 0009 GETIDX R3 R3 R2 - 0x8C0C0703, // 000A GETMET R3 R3 K3 + 0x8C0C0731, // 000A GETMET R3 R3 K49 0x7C0C0200, // 000B CALL R3 1 0x00040203, // 000C ADD R1 R1 R3 - 0x00080504, // 000D ADD R2 R2 K4 + 0x00080532, // 000D ADD R2 R2 K50 0x7001FFF3, // 000E JMP #0003 - 0x00040304, // 000F ADD R1 R1 K4 + 0x00040332, // 000F ADD R1 R1 K50 0x80040200, // 0010 RET 1 R1 }) ) @@ -3194,6 +3008,27 @@ be_local_class(Matter_TLV_struct, })), be_str_weak(Matter_TLV_struct) ); +// compact class 'Matter_TLV_array' ktab size: 17, total: 19 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_TLV_array[17] = { + /* K0 */ be_nested_str_weak(tostring_inner), + /* K1 */ be_nested_str_weak(_X5B), + /* K2 */ be_nested_str_weak(_X5D), + /* K3 */ be_nested_str_weak(init), + /* K4 */ be_nested_str_weak(typ), + /* K5 */ be_nested_str_weak(TLV), + /* K6 */ be_nested_str_weak(ARRAY), + /* K7 */ be_nested_str_weak(val), + /* K8 */ be_nested_str_weak(EOC), + /* K9 */ be_nested_str_weak(parse), + /* K10 */ be_nested_str_weak(next_idx), + /* K11 */ be_nested_str_weak(tag_vendor), + /* K12 */ be_nested_str_weak(tag_profile), + /* K13 */ be_nested_str_weak(tag_number), + /* K14 */ be_nested_str_weak(tag_sub), + /* K15 */ be_nested_str_weak(push), + /* K16 */ be_const_int(1), +}; + extern const bclass be_class_Matter_TLV_array; @@ -3204,17 +3039,13 @@ be_local_closure(class_Matter_TLV_array_tostring, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tostring_inner), - /* K1 */ be_nested_str_weak(_X5B), - /* K2 */ be_nested_str_weak(_X5D), - }), + &be_ktab_class_Matter_TLV_array, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -3238,34 +3069,28 @@ be_local_closure(class_Matter_TLV_array_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(ARRAY), - /* K4 */ be_nested_str_weak(val), - }), + &be_ktab_class_Matter_TLV_array, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080503, // 0003 GETMET R2 R2 K3 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x88080102, // 0006 GETMBR R2 R0 K2 - 0x88080503, // 0007 GETMBR R2 R2 K3 - 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x88080105, // 0006 GETMBR R2 R0 K5 + 0x88080506, // 0007 GETMBR R2 R2 K6 + 0x90020802, // 0008 SETMBR R0 K4 R2 0x60080012, // 0009 GETGBL R2 G18 0x7C080000, // 000A CALL R2 0 - 0x90020802, // 000B SETMBR R0 K4 R2 + 0x90020E02, // 000B SETMBR R0 K7 R2 0x80000000, // 000C RET 0 }) ) @@ -3280,55 +3105,43 @@ be_local_closure(class_Matter_TLV_array_parse, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(EOC), - /* K2 */ be_nested_str_weak(parse), - /* K3 */ be_nested_str_weak(next_idx), - /* K4 */ be_nested_str_weak(tag_vendor), - /* K5 */ be_nested_str_weak(tag_profile), - /* K6 */ be_nested_str_weak(tag_number), - /* K7 */ be_nested_str_weak(tag_sub), - /* K8 */ be_nested_str_weak(val), - /* K9 */ be_nested_str_weak(push), - /* K10 */ be_const_int(1), - }), + &be_ktab_class_Matter_TLV_array, /* shared constants */ be_str_weak(parse), &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ 0x940C0202, // 0000 GETIDX R3 R1 R2 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x88100901, // 0002 GETMBR R4 R4 K1 + 0x88100105, // 0001 GETMBR R4 R0 K5 + 0x88100908, // 0002 GETMBR R4 R4 K8 0x200C0604, // 0003 NE R3 R3 R4 0x780E0013, // 0004 JMPF R3 #0019 - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x8C0C0702, // 0006 GETMET R3 R3 K2 + 0x880C0105, // 0005 GETMBR R3 R0 K5 + 0x8C0C0709, // 0006 GETMET R3 R3 K9 0x5C140200, // 0007 MOVE R5 R1 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0000, // 0009 MOVE R7 R0 0x7C0C0800, // 000A CALL R3 4 - 0x88080703, // 000B GETMBR R2 R3 K3 + 0x8808070A, // 000B GETMBR R2 R3 K10 0x4C100000, // 000C LDNIL R4 - 0x900E0804, // 000D SETMBR R3 K4 R4 + 0x900E1604, // 000D SETMBR R3 K11 R4 0x4C100000, // 000E LDNIL R4 - 0x900E0A04, // 000F SETMBR R3 K5 R4 + 0x900E1804, // 000F SETMBR R3 K12 R4 0x4C100000, // 0010 LDNIL R4 - 0x900E0C04, // 0011 SETMBR R3 K6 R4 + 0x900E1A04, // 0011 SETMBR R3 K13 R4 0x4C100000, // 0012 LDNIL R4 - 0x900E0E04, // 0013 SETMBR R3 K7 R4 - 0x88100108, // 0014 GETMBR R4 R0 K8 - 0x8C100909, // 0015 GETMET R4 R4 K9 + 0x900E1C04, // 0013 SETMBR R3 K14 R4 + 0x88100107, // 0014 GETMBR R4 R0 K7 + 0x8C10090F, // 0015 GETMET R4 R4 K15 0x5C180600, // 0016 MOVE R6 R3 0x7C100400, // 0017 CALL R4 2 0x7001FFE6, // 0018 JMP #0000 - 0x0008050A, // 0019 ADD R2 R2 K10 - 0x90020602, // 001A SETMBR R0 K3 R2 + 0x00080510, // 0019 ADD R2 R2 K16 + 0x90021402, // 001A SETMBR R0 K10 R2 0x80040400, // 001B RET 1 R2 }) ) @@ -3353,6 +3166,33 @@ be_local_class(Matter_TLV_array, })), be_str_weak(Matter_TLV_array) ); +extern const bclass be_class_Matter_TLV; +// compact class 'Matter_TLV' ktab size: 22, total: 24 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_TLV[22] = { + /* K0 */ be_const_class(be_class_Matter_TLV), + /* K1 */ be_nested_str_weak(Matter_TLV_item), + /* K2 */ be_nested_str_weak(create_TLV), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(EOC), + /* K6 */ be_nested_str_weak(invalid_X20TLV_X20type_X20), + /* K7 */ be_nested_str_weak(TLV_error), + /* K8 */ be_nested_str_weak(STRUCT), + /* K9 */ be_nested_str_weak(Matter_TLV_struct), + /* K10 */ be_nested_str_weak(ARRAY), + /* K11 */ be_nested_str_weak(Matter_TLV_array), + /* K12 */ be_nested_str_weak(LIST), + /* K13 */ be_nested_str_weak(Matter_TLV_list), + /* K14 */ be_nested_str_weak(typ), + /* K15 */ be_nested_str_weak(tag_vendor), + /* K16 */ be_nested_str_weak(get), + /* K17 */ be_const_int(2), + /* K18 */ be_nested_str_weak(tag_profile), + /* K19 */ be_nested_str_weak(tag_sub), + /* K20 */ be_nested_str_weak(tag_number), + /* K21 */ be_nested_str_weak(parse), +}; + extern const bclass be_class_Matter_TLV; @@ -3363,17 +3203,13 @@ be_local_closure(class_Matter_TLV_create_TLV, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV), - /* K1 */ be_nested_str_weak(Matter_TLV_item), - /* K2 */ be_nested_str_weak(create_TLV), - }), + &be_ktab_class_Matter_TLV, /* shared constants */ be_str_weak(create_TLV), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -3397,35 +3233,13 @@ be_local_closure(class_Matter_TLV_parse, /* name */ be_nested_proto( 12, /* nstack */ 3, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_TLV), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(EOC), - /* K4 */ be_nested_str_weak(invalid_X20TLV_X20type_X20), - /* K5 */ be_nested_str_weak(TLV_error), - /* K6 */ be_nested_str_weak(STRUCT), - /* K7 */ be_nested_str_weak(Matter_TLV_struct), - /* K8 */ be_nested_str_weak(ARRAY), - /* K9 */ be_nested_str_weak(Matter_TLV_array), - /* K10 */ be_nested_str_weak(LIST), - /* K11 */ be_nested_str_weak(Matter_TLV_list), - /* K12 */ be_nested_str_weak(Matter_TLV_item), - /* K13 */ be_nested_str_weak(typ), - /* K14 */ be_nested_str_weak(tag_vendor), - /* K15 */ be_nested_str_weak(get), - /* K16 */ be_const_int(2), - /* K17 */ be_nested_str_weak(tag_profile), - /* K18 */ be_nested_str_weak(tag_sub), - /* K19 */ be_nested_str_weak(tag_number), - /* K20 */ be_nested_str_weak(parse), - }), + &be_ktab_class_Matter_TLV, /* shared constants */ be_str_weak(parse), &be_const_str_solidified, ( &(const binstruction[118]) { /* code */ @@ -3434,68 +3248,68 @@ be_local_closure(class_Matter_TLV_parse, /* name */ 0x4C140000, // 0002 LDNIL R5 0x1C140205, // 0003 EQ R5 R1 R5 0x78160000, // 0004 JMPF R5 #0006 - 0x58040001, // 0005 LDCONST R1 K1 + 0x58040003, // 0005 LDCONST R1 K3 0x94140001, // 0006 GETIDX R5 R0 R1 0x541A001E, // 0007 LDINT R6 31 0x2C140A06, // 0008 AND R5 R5 R6 0x94180001, // 0009 GETIDX R6 R0 R1 0x541E00DF, // 000A LDINT R7 224 0x2C180C07, // 000B AND R6 R6 R7 - 0x00040302, // 000C ADD R1 R1 K2 - 0x881C0903, // 000D GETMBR R7 R4 K3 + 0x00040304, // 000C ADD R1 R1 K4 + 0x881C0905, // 000D GETMBR R7 R4 K5 0x241C0A07, // 000E GT R7 R5 R7 0x781E0004, // 000F JMPF R7 #0015 0x601C0008, // 0010 GETGBL R7 G8 0x5C200A00, // 0011 MOVE R8 R5 0x7C1C0200, // 0012 CALL R7 1 - 0x001E0807, // 0013 ADD R7 K4 R7 - 0xB0060A07, // 0014 RAISE 1 K5 R7 + 0x001E0C07, // 0013 ADD R7 K6 R7 + 0xB0060E07, // 0014 RAISE 1 K7 R7 0x4C1C0000, // 0015 LDNIL R7 - 0x88200906, // 0016 GETMBR R8 R4 K6 + 0x88200908, // 0016 GETMBR R8 R4 K8 0x1C200A08, // 0017 EQ R8 R5 R8 0x78220004, // 0018 JMPF R8 #001E - 0x8C200707, // 0019 GETMET R8 R3 K7 + 0x8C200709, // 0019 GETMET R8 R3 K9 0x5C280400, // 001A MOVE R10 R2 0x7C200400, // 001B CALL R8 2 0x5C1C1000, // 001C MOVE R7 R8 0x70020013, // 001D JMP #0032 - 0x88200908, // 001E GETMBR R8 R4 K8 + 0x8820090A, // 001E GETMBR R8 R4 K10 0x1C200A08, // 001F EQ R8 R5 R8 0x78220004, // 0020 JMPF R8 #0026 - 0x8C200709, // 0021 GETMET R8 R3 K9 + 0x8C20070B, // 0021 GETMET R8 R3 K11 0x5C280400, // 0022 MOVE R10 R2 0x7C200400, // 0023 CALL R8 2 0x5C1C1000, // 0024 MOVE R7 R8 0x7002000B, // 0025 JMP #0032 - 0x8820090A, // 0026 GETMBR R8 R4 K10 + 0x8820090C, // 0026 GETMBR R8 R4 K12 0x1C200A08, // 0027 EQ R8 R5 R8 0x78220004, // 0028 JMPF R8 #002E - 0x8C20070B, // 0029 GETMET R8 R3 K11 + 0x8C20070D, // 0029 GETMET R8 R3 K13 0x5C280400, // 002A MOVE R10 R2 0x7C200400, // 002B CALL R8 2 0x5C1C1000, // 002C MOVE R7 R8 0x70020003, // 002D JMP #0032 - 0x8C20070C, // 002E GETMET R8 R3 K12 + 0x8C200701, // 002E GETMET R8 R3 K1 0x5C280400, // 002F MOVE R10 R2 0x7C200400, // 0030 CALL R8 2 0x5C1C1000, // 0031 MOVE R7 R8 - 0x901E1A05, // 0032 SETMBR R7 K13 R5 + 0x901E1C05, // 0032 SETMBR R7 K14 R5 0x542200BF, // 0033 LDINT R8 192 0x1C200C08, // 0034 EQ R8 R6 R8 0x74220002, // 0035 JMPT R8 #0039 0x542200DF, // 0036 LDINT R8 224 0x1C200C08, // 0037 EQ R8 R6 R8 0x7822000B, // 0038 JMPF R8 #0045 - 0x8C20010F, // 0039 GETMET R8 R0 K15 + 0x8C200110, // 0039 GETMET R8 R0 K16 0x5C280200, // 003A MOVE R10 R1 - 0x582C0010, // 003B LDCONST R11 K16 + 0x582C0011, // 003B LDCONST R11 K17 0x7C200600, // 003C CALL R8 3 - 0x901E1C08, // 003D SETMBR R7 K14 R8 - 0x8C20010F, // 003E GETMET R8 R0 K15 - 0x00280310, // 003F ADD R10 R1 K16 - 0x582C0010, // 0040 LDCONST R11 K16 + 0x901E1E08, // 003D SETMBR R7 K15 R8 + 0x8C200110, // 003E GETMET R8 R0 K16 + 0x00280311, // 003F ADD R10 R1 K17 + 0x582C0011, // 0040 LDCONST R11 K17 0x7C200600, // 0041 CALL R8 3 - 0x901E2208, // 0042 SETMBR R7 K17 R8 + 0x901E2408, // 0042 SETMBR R7 K18 R8 0x54220003, // 0043 LDINT R8 4 0x00040208, // 0044 ADD R1 R1 R8 0x5422003F, // 0045 LDINT R8 64 @@ -3505,18 +3319,18 @@ be_local_closure(class_Matter_TLV_parse, /* name */ 0x1C200C08, // 0049 EQ R8 R6 R8 0x78220003, // 004A JMPF R8 #004F 0x4C200000, // 004B LDNIL R8 - 0x901E1C08, // 004C SETMBR R7 K14 R8 + 0x901E1E08, // 004C SETMBR R7 K15 R8 0x5421FFFE, // 004D LDINT R8 -1 - 0x901E2208, // 004E SETMBR R7 K17 R8 - 0x1C200D01, // 004F EQ R8 R6 K1 + 0x901E2408, // 004E SETMBR R7 K18 R8 + 0x1C200D03, // 004F EQ R8 R6 K3 0x78220000, // 0050 JMPF R8 #0052 0x7002001D, // 0051 JMP #0070 0x5422001F, // 0052 LDINT R8 32 0x1C200C08, // 0053 EQ R8 R6 R8 0x78220003, // 0054 JMPF R8 #0059 0x94200001, // 0055 GETIDX R8 R0 R1 - 0x901E2408, // 0056 SETMBR R7 K18 R8 - 0x00040302, // 0057 ADD R1 R1 K2 + 0x901E2608, // 0056 SETMBR R7 K19 R8 + 0x00040304, // 0057 ADD R1 R1 K4 0x70020016, // 0058 JMP #0070 0x542200BF, // 0059 LDINT R8 192 0x1C200C08, // 005A EQ R8 R6 R8 @@ -3527,21 +3341,21 @@ be_local_closure(class_Matter_TLV_parse, /* name */ 0x5422003F, // 005F LDINT R8 64 0x1C200C08, // 0060 EQ R8 R6 R8 0x78220006, // 0061 JMPF R8 #0069 - 0x8C20010F, // 0062 GETMET R8 R0 K15 + 0x8C200110, // 0062 GETMET R8 R0 K16 0x5C280200, // 0063 MOVE R10 R1 - 0x582C0010, // 0064 LDCONST R11 K16 + 0x582C0011, // 0064 LDCONST R11 K17 0x7C200600, // 0065 CALL R8 3 - 0x901E2608, // 0066 SETMBR R7 K19 R8 - 0x00040310, // 0067 ADD R1 R1 K16 + 0x901E2808, // 0066 SETMBR R7 K20 R8 + 0x00040311, // 0067 ADD R1 R1 K17 0x70020006, // 0068 JMP #0070 - 0x8C20010F, // 0069 GETMET R8 R0 K15 + 0x8C200110, // 0069 GETMET R8 R0 K16 0x5C280200, // 006A MOVE R10 R1 0x542E0003, // 006B LDINT R11 4 0x7C200600, // 006C CALL R8 3 - 0x901E2608, // 006D SETMBR R7 K19 R8 + 0x901E2808, // 006D SETMBR R7 K20 R8 0x54220003, // 006E LDINT R8 4 0x00040208, // 006F ADD R1 R1 R8 - 0x8C200F14, // 0070 GETMET R8 R7 K20 + 0x8C200F15, // 0070 GETMET R8 R7 K21 0x5C280000, // 0071 MOVE R10 R0 0x5C2C0200, // 0072 MOVE R11 R1 0x7C200600, // 0073 CALL R8 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index ed3604294..f90c1a24c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -109,6 +109,73 @@ be_local_class(Matter_UDPPacket_sent, })), be_str_weak(Matter_UDPPacket_sent) ); +extern const bclass be_class_Matter_UDPServer; +// compact class 'Matter_UDPServer' ktab size: 62, total: 103 (saved 328 bytes) +static const bvalue be_ktab_class_Matter_UDPServer[62] = { + /* K0 */ be_nested_str_weak(loop), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(UDPPacket_sent), + /* K3 */ be_nested_str_weak(send), + /* K4 */ be_nested_str_weak(msg_id), + /* K5 */ be_nested_str_weak(packets_sent), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(ack_message_counter), + /* K8 */ be_nested_str_weak(exchange_id), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(remove), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(loglevel), + /* K13 */ be_nested_str_weak(log), + /* K14 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(listening), + /* K17 */ be_nested_str_weak(udp_socket), + /* K18 */ be_nested_str_weak(udp), + /* K19 */ be_nested_str_weak(begin), + /* K20 */ be_nested_str_weak(addr), + /* K21 */ be_nested_str_weak(port), + /* K22 */ be_nested_str_weak(network_error), + /* K23 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server), + /* K24 */ be_nested_str_weak(dispatch_cb), + /* K25 */ be_nested_str_weak(add_fast_loop), + /* K26 */ be_nested_str_weak(loop_cb), + /* K27 */ be_nested_str_weak(remote_ip), + /* K28 */ be_nested_str_weak(remote_port), + /* K29 */ be_nested_str_weak(raw), + /* K30 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K31 */ be_const_int(3), + /* K32 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K33 */ be_nested_str_weak(stop), + /* K34 */ be_nested_str_weak(remove_fast_loop), + /* K35 */ be_nested_str_weak(device), + /* K36 */ be_nested_str_weak(), + /* K37 */ be_const_int(0), + /* K38 */ be_nested_str_weak(time_reached), + /* K39 */ be_nested_str_weak(next_try), + /* K40 */ be_nested_str_weak(retries), + /* K41 */ be_nested_str_weak(RETRIES), + /* K42 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D), + /* K43 */ be_nested_str_weak(millis), + /* K44 */ be_nested_str_weak(_backoff_time), + /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i), + /* K46 */ be_nested_str_weak(session_id), + /* K47 */ be_const_class(be_class_Matter_UDPServer), + /* K48 */ be_nested_str_weak(math), + /* K49 */ be_nested_str_weak(rand), + /* K50 */ be_const_real_hex(0x3FCCCCCD), + /* K51 */ be_const_real_hex(0x3F800000), + /* K52 */ be_const_real_hex(0x3E800000), + /* K53 */ be_nested_str_weak(profiler), + /* K54 */ be_nested_str_weak(read), + /* K55 */ be_nested_str_weak(packet), + /* K56 */ be_nested_str_weak(start), + /* K57 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K58 */ be_nested_str_weak(dump), + /* K59 */ be_const_int(2), + /* K60 */ be_nested_str_weak(MAX_PACKETS_READ), + /* K61 */ be_nested_str_weak(_resend_packets), +}; + extern const bclass be_class_Matter_UDPServer; @@ -119,15 +186,13 @@ be_local_closure(class_Matter_UDPServer_every_50ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(loop), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ @@ -147,34 +212,27 @@ be_local_closure(class_Matter_UDPServer_send_UDP, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(UDPPacket_sent), - /* K2 */ be_nested_str_weak(send), - /* K3 */ be_nested_str_weak(msg_id), - /* K4 */ be_nested_str_weak(packets_sent), - /* K5 */ be_nested_str_weak(push), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(send_UDP), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0xB80A0200, // 0000 GETNGBL R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x8C0C0102, // 0004 GETMET R3 R0 K2 + 0x8C0C0103, // 0004 GETMET R3 R0 K3 0x5C140400, // 0005 MOVE R5 R2 0x7C0C0400, // 0006 CALL R3 2 - 0x880C0503, // 0007 GETMBR R3 R2 K3 + 0x880C0504, // 0007 GETMBR R3 R2 K4 0x780E0003, // 0008 JMPF R3 #000D - 0x880C0104, // 0009 GETMBR R3 R0 K4 - 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x880C0105, // 0009 GETMBR R3 R0 K5 + 0x8C0C0706, // 000A GETMET R3 R3 K6 0x5C140400, // 000B MOVE R5 R2 0x7C0C0400, // 000C CALL R3 2 0x80000000, // 000D RET 0 @@ -191,66 +249,54 @@ be_local_closure(class_Matter_UDPServer_received_ack, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(ack_message_counter), - /* K1 */ be_nested_str_weak(exchange_id), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(packets_sent), - /* K4 */ be_nested_str_weak(msg_id), - /* K5 */ be_nested_str_weak(remove), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(loglevel), - /* K8 */ be_nested_str_weak(log), - /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D), - /* K10 */ be_const_int(1), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(received_ack), &be_const_str_solidified, ( &(const binstruction[40]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x88080307, // 0000 GETMBR R2 R1 K7 + 0x880C0308, // 0001 GETMBR R3 R1 K8 0x4C100000, // 0002 LDNIL R4 0x1C100404, // 0003 EQ R4 R2 R4 0x78120000, // 0004 JMPF R4 #0006 0x80000800, // 0005 RET 0 - 0x58100002, // 0006 LDCONST R4 K2 + 0x58100009, // 0006 LDCONST R4 K9 0x6014000C, // 0007 GETGBL R5 G12 - 0x88180103, // 0008 GETMBR R6 R0 K3 + 0x88180105, // 0008 GETMBR R6 R0 K5 0x7C140200, // 0009 CALL R5 1 0x14140805, // 000A LT R5 R4 R5 0x7816001A, // 000B JMPF R5 #0027 - 0x88140103, // 000C GETMBR R5 R0 K3 + 0x88140105, // 000C GETMBR R5 R0 K5 0x94140A04, // 000D GETIDX R5 R5 R4 0x88180B04, // 000E GETMBR R6 R5 K4 0x1C180C02, // 000F EQ R6 R6 R2 0x781A0013, // 0010 JMPF R6 #0025 - 0x88180B01, // 0011 GETMBR R6 R5 K1 + 0x88180B08, // 0011 GETMBR R6 R5 K8 0x1C180C03, // 0012 EQ R6 R6 R3 0x781A0010, // 0013 JMPF R6 #0025 - 0x88180103, // 0014 GETMBR R6 R0 K3 - 0x8C180D05, // 0015 GETMET R6 R6 K5 + 0x88180105, // 0014 GETMBR R6 R0 K5 + 0x8C180D0A, // 0015 GETMET R6 R6 K10 0x5C200800, // 0016 MOVE R8 R4 0x7C180400, // 0017 CALL R6 2 - 0xB81A0C00, // 0018 GETNGBL R6 K6 - 0x8C180D07, // 0019 GETMET R6 R6 K7 + 0xB81A1600, // 0018 GETNGBL R6 K11 + 0x8C180D0C, // 0019 GETMET R6 R6 K12 0x54220003, // 001A LDINT R8 4 0x7C180400, // 001B CALL R6 2 0x781A0006, // 001C JMPF R6 #0024 - 0xB81A1000, // 001D GETNGBL R6 K8 + 0xB81A1A00, // 001D GETNGBL R6 K13 0x601C0008, // 001E GETGBL R7 G8 0x5C200400, // 001F MOVE R8 R2 0x7C1C0200, // 0020 CALL R7 1 - 0x001E1207, // 0021 ADD R7 K9 R7 + 0x001E1C07, // 0021 ADD R7 K14 R7 0x54220003, // 0022 LDINT R8 4 0x7C180400, // 0023 CALL R6 2 0x70020000, // 0024 JMP #0026 - 0x0010090A, // 0025 ADD R4 R4 K10 + 0x0010090F, // 0025 ADD R4 R4 K15 0x7001FFDF, // 0026 JMP #0007 0x80000000, // 0027 RET 0 }) @@ -266,48 +312,35 @@ be_local_closure(class_Matter_UDPServer_start, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(listening), - /* K1 */ be_nested_str_weak(udp_socket), - /* K2 */ be_nested_str_weak(udp), - /* K3 */ be_nested_str_weak(begin), - /* K4 */ be_nested_str_weak(addr), - /* K5 */ be_nested_str_weak(port), - /* K6 */ be_nested_str_weak(network_error), - /* K7 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server), - /* K8 */ be_nested_str_weak(dispatch_cb), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(add_fast_loop), - /* K11 */ be_nested_str_weak(loop_cb), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080110, // 0000 GETMBR R2 R0 K16 0x740A0011, // 0001 JMPT R2 #0014 - 0xB80A0400, // 0002 GETNGBL R2 K2 + 0xB80A2400, // 0002 GETNGBL R2 K18 0x7C080000, // 0003 CALL R2 0 - 0x90020202, // 0004 SETMBR R0 K1 R2 - 0x88080101, // 0005 GETMBR R2 R0 K1 - 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x88100104, // 0007 GETMBR R4 R0 K4 - 0x88140105, // 0008 GETMBR R5 R0 K5 + 0x90022202, // 0004 SETMBR R0 K17 R2 + 0x88080111, // 0005 GETMBR R2 R0 K17 + 0x8C080513, // 0006 GETMET R2 R2 K19 + 0x88100114, // 0007 GETMBR R4 R0 K20 + 0x88140115, // 0008 GETMBR R5 R0 K21 0x7C080600, // 0009 CALL R2 3 0x5C0C0400, // 000A MOVE R3 R2 0x740E0000, // 000B JMPT R3 #000D - 0xB0060D07, // 000C RAISE 1 K6 K7 + 0xB0062D17, // 000C RAISE 1 K22 K23 0x500C0200, // 000D LDBOOL R3 1 0 - 0x90020003, // 000E SETMBR R0 K0 R3 - 0x90021001, // 000F SETMBR R0 K8 R1 - 0xB80E1200, // 0010 GETNGBL R3 K9 - 0x8C0C070A, // 0011 GETMET R3 R3 K10 - 0x8814010B, // 0012 GETMBR R5 R0 K11 + 0x90022003, // 000E SETMBR R0 K16 R3 + 0x90023001, // 000F SETMBR R0 K24 R1 + 0xB80E1600, // 0010 GETNGBL R3 K11 + 0x8C0C0719, // 0011 GETMET R3 R3 K25 + 0x8814011A, // 0012 GETMBR R5 R0 K26 0x7C0C0400, // 0013 CALL R3 2 0x80000000, // 0014 RET 0 }) @@ -323,73 +356,59 @@ be_local_closure(class_Matter_UDPServer_send, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_socket), - /* K1 */ be_nested_str_weak(send), - /* K2 */ be_nested_str_weak(addr), - /* K3 */ be_nested_str_weak(remote_ip), - /* K4 */ be_nested_str_weak(port), - /* K5 */ be_nested_str_weak(remote_port), - /* K6 */ be_nested_str_weak(raw), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(loglevel), - /* K9 */ be_nested_str_weak(log), - /* K10 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(send), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100302, // 0002 GETMBR R4 R1 K2 + 0x88080111, // 0000 GETMBR R2 R0 K17 + 0x8C080503, // 0001 GETMET R2 R2 K3 + 0x88100314, // 0002 GETMBR R4 R1 K20 0x78120001, // 0003 JMPF R4 #0006 - 0x88100302, // 0004 GETMBR R4 R1 K2 + 0x88100314, // 0004 GETMBR R4 R1 K20 0x70020001, // 0005 JMP #0008 - 0x88100100, // 0006 GETMBR R4 R0 K0 - 0x88100903, // 0007 GETMBR R4 R4 K3 - 0x88140304, // 0008 GETMBR R5 R1 K4 + 0x88100111, // 0006 GETMBR R4 R0 K17 + 0x8810091B, // 0007 GETMBR R4 R4 K27 + 0x88140315, // 0008 GETMBR R5 R1 K21 0x78160001, // 0009 JMPF R5 #000C - 0x88140304, // 000A GETMBR R5 R1 K4 + 0x88140315, // 000A GETMBR R5 R1 K21 0x70020001, // 000B JMP #000E - 0x88140100, // 000C GETMBR R5 R0 K0 - 0x88140B05, // 000D GETMBR R5 R5 K5 - 0x88180306, // 000E GETMBR R6 R1 K6 + 0x88140111, // 000C GETMBR R5 R0 K17 + 0x88140B1C, // 000D GETMBR R5 R5 K28 + 0x8818031D, // 000E GETMBR R6 R1 K29 0x7C080800, // 000F CALL R2 4 0x780A000D, // 0010 JMPF R2 #001F - 0xB80E0E00, // 0011 GETNGBL R3 K7 - 0x8C0C0708, // 0012 GETMET R3 R3 K8 + 0xB80E1600, // 0011 GETNGBL R3 K11 + 0x8C0C070C, // 0012 GETMET R3 R3 K12 0x54160003, // 0013 LDINT R5 4 0x7C0C0400, // 0014 CALL R3 2 0x780E0007, // 0015 JMPF R3 #001E - 0xB80E1200, // 0016 GETNGBL R3 K9 + 0xB80E1A00, // 0016 GETNGBL R3 K13 0x60100018, // 0017 GETGBL R4 G24 - 0x5814000A, // 0018 LDCONST R5 K10 - 0x88180302, // 0019 GETMBR R6 R1 K2 - 0x881C0304, // 001A GETMBR R7 R1 K4 + 0x5814001E, // 0018 LDCONST R5 K30 + 0x88180314, // 0019 GETMBR R6 R1 K20 + 0x881C0315, // 001A GETMBR R7 R1 K21 0x7C100600, // 001B CALL R4 3 0x54160003, // 001C LDINT R5 4 0x7C0C0400, // 001D CALL R3 2 0x7002000C, // 001E JMP #002C - 0xB80E0E00, // 001F GETNGBL R3 K7 - 0x8C0C0708, // 0020 GETMET R3 R3 K8 - 0x5814000B, // 0021 LDCONST R5 K11 + 0xB80E1600, // 001F GETNGBL R3 K11 + 0x8C0C070C, // 0020 GETMET R3 R3 K12 + 0x5814001F, // 0021 LDCONST R5 K31 0x7C0C0400, // 0022 CALL R3 2 0x780E0007, // 0023 JMPF R3 #002C - 0xB80E1200, // 0024 GETNGBL R3 K9 + 0xB80E1A00, // 0024 GETNGBL R3 K13 0x60100018, // 0025 GETGBL R4 G24 - 0x5814000C, // 0026 LDCONST R5 K12 - 0x88180302, // 0027 GETMBR R6 R1 K2 - 0x881C0304, // 0028 GETMBR R7 R1 K4 + 0x58140020, // 0026 LDCONST R5 K32 + 0x88180314, // 0027 GETMBR R6 R1 K20 + 0x881C0315, // 0028 GETMBR R7 R1 K21 0x7C100600, // 0029 CALL R4 3 - 0x5814000B, // 002A LDCONST R5 K11 + 0x5814001F, // 002A LDCONST R5 K31 0x7C0C0400, // 002B CALL R3 2 0x80040400, // 002C RET 1 R2 }) @@ -405,33 +424,26 @@ be_local_closure(class_Matter_UDPServer_stop, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(listening), - /* K1 */ be_nested_str_weak(udp_socket), - /* K2 */ be_nested_str_weak(stop), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(remove_fast_loop), - /* K5 */ be_nested_str_weak(loop_cb), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(stop), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040110, // 0000 GETMBR R1 R0 K16 0x78060008, // 0001 JMPF R1 #000B - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x88040111, // 0002 GETMBR R1 R0 K17 + 0x8C040321, // 0003 GETMET R1 R1 K33 0x7C040200, // 0004 CALL R1 1 0x50040000, // 0005 LDBOOL R1 0 0 - 0x90020001, // 0006 SETMBR R0 K0 R1 - 0xB8060600, // 0007 GETNGBL R1 K3 - 0x8C040304, // 0008 GETMET R1 R1 K4 - 0x880C0105, // 0009 GETMBR R3 R0 K5 + 0x90022001, // 0006 SETMBR R0 K16 R1 + 0xB8061600, // 0007 GETNGBL R1 K11 + 0x8C040322, // 0008 GETMET R1 R1 K34 + 0x880C011A, // 0009 GETMBR R3 R0 K26 0x7C040400, // 000A CALL R1 2 0x80000000, // 000B RET 0 }) @@ -447,7 +459,7 @@ be_local_closure(class_Matter_UDPServer_init, /* name */ be_nested_proto( 5, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -477,36 +489,28 @@ be_local_closure(class_Matter_UDPServer_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(addr), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(port), - /* K4 */ be_nested_str_weak(listening), - /* K5 */ be_nested_str_weak(packets_sent), - /* K6 */ be_nested_str_weak(loop_cb), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024601, // 0000 SETMBR R0 K35 R1 0x780A0001, // 0001 JMPF R2 #0004 0x5C100400, // 0002 MOVE R4 R2 0x70020000, // 0003 JMP #0005 - 0x58100002, // 0004 LDCONST R4 K2 - 0x90020204, // 0005 SETMBR R0 K1 R4 + 0x58100024, // 0004 LDCONST R4 K36 + 0x90022804, // 0005 SETMBR R0 K20 R4 0x780E0001, // 0006 JMPF R3 #0009 0x5C100600, // 0007 MOVE R4 R3 0x70020000, // 0008 JMP #000A 0x541215A3, // 0009 LDINT R4 5540 - 0x90020604, // 000A SETMBR R0 K3 R4 + 0x90022A04, // 000A SETMBR R0 K21 R4 0x50100000, // 000B LDBOOL R4 0 0 - 0x90020804, // 000C SETMBR R0 K4 R4 + 0x90022004, // 000C SETMBR R0 K16 R4 0x60100012, // 000D GETGBL R4 G18 0x7C100000, // 000E CALL R4 0 0x90020A04, // 000F SETMBR R0 K5 R4 0x84100000, // 0010 CLOSURE R4 P0 - 0x90020C04, // 0011 SETMBR R0 K6 R4 + 0x90023404, // 0011 SETMBR R0 K26 R4 0xA0000000, // 0012 CLOSE R0 0x80000000, // 0013 RET 0 }) @@ -522,93 +526,72 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(packets_sent), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(time_reached), - /* K4 */ be_nested_str_weak(next_try), - /* K5 */ be_nested_str_weak(retries), - /* K6 */ be_nested_str_weak(RETRIES), - /* K7 */ be_nested_str_weak(log), - /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D), - /* K9 */ be_nested_str_weak(msg_id), - /* K10 */ be_nested_str_weak(send), - /* K11 */ be_nested_str_weak(millis), - /* K12 */ be_nested_str_weak(_backoff_time), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(remove), - /* K15 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i), - /* K16 */ be_nested_str_weak(session_id), - /* K17 */ be_nested_str_weak(addr), - /* K18 */ be_nested_str_weak(port), - /* K19 */ be_const_int(3), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(_resend_packets), &be_const_str_solidified, ( &(const binstruction[58]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x58040025, // 0000 LDCONST R1 K37 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x880C0105, // 0002 GETMBR R3 R0 K5 0x7C080200, // 0003 CALL R2 1 0x14080202, // 0004 LT R2 R1 R2 0x780A0032, // 0005 JMPF R2 #0039 - 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x88080105, // 0006 GETMBR R2 R0 K5 0x94080401, // 0007 GETIDX R2 R2 R1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0703, // 0009 GETMET R3 R3 K3 - 0x88140504, // 000A GETMBR R5 R2 K4 + 0xB80E1600, // 0008 GETNGBL R3 K11 + 0x8C0C0726, // 0009 GETMET R3 R3 K38 + 0x88140527, // 000A GETMBR R5 R2 K39 0x7C0C0400, // 000B CALL R3 2 0x780E0029, // 000C JMPF R3 #0037 - 0x880C0505, // 000D GETMBR R3 R2 K5 - 0x88100106, // 000E GETMBR R4 R0 K6 + 0x880C0528, // 000D GETMBR R3 R2 K40 + 0x88100129, // 000E GETMBR R4 R0 K41 0x180C0604, // 000F LE R3 R3 R4 0x780E0016, // 0010 JMPF R3 #0028 - 0xB80E0E00, // 0011 GETNGBL R3 K7 + 0xB80E1A00, // 0011 GETNGBL R3 K13 0x60100008, // 0012 GETGBL R4 G8 - 0x88140509, // 0013 GETMBR R5 R2 K9 + 0x88140504, // 0013 GETMBR R5 R2 K4 0x7C100200, // 0014 CALL R4 1 - 0x00121004, // 0015 ADD R4 K8 R4 + 0x00125404, // 0015 ADD R4 K42 R4 0x54160003, // 0016 LDINT R5 4 0x7C0C0400, // 0017 CALL R3 2 - 0x8C0C010A, // 0018 GETMET R3 R0 K10 + 0x8C0C0103, // 0018 GETMET R3 R0 K3 0x5C140400, // 0019 MOVE R5 R2 0x7C0C0400, // 001A CALL R3 2 - 0xB80E0400, // 001B GETNGBL R3 K2 - 0x8C0C070B, // 001C GETMET R3 R3 K11 + 0xB80E1600, // 001B GETNGBL R3 K11 + 0x8C0C072B, // 001C GETMET R3 R3 K43 0x7C0C0200, // 001D CALL R3 1 - 0x8C10010C, // 001E GETMET R4 R0 K12 - 0x88180505, // 001F GETMBR R6 R2 K5 + 0x8C10012C, // 001E GETMET R4 R0 K44 + 0x88180528, // 001F GETMBR R6 R2 K40 0x7C100400, // 0020 CALL R4 2 0x000C0604, // 0021 ADD R3 R3 R4 - 0x900A0803, // 0022 SETMBR R2 K4 R3 - 0x880C0505, // 0023 GETMBR R3 R2 K5 - 0x000C070D, // 0024 ADD R3 R3 K13 - 0x900A0A03, // 0025 SETMBR R2 K5 R3 - 0x0004030D, // 0026 ADD R1 R1 K13 + 0x900A4E03, // 0022 SETMBR R2 K39 R3 + 0x880C0528, // 0023 GETMBR R3 R2 K40 + 0x000C070F, // 0024 ADD R3 R3 K15 + 0x900A5003, // 0025 SETMBR R2 K40 R3 + 0x0004030F, // 0026 ADD R1 R1 K15 0x7002000D, // 0027 JMP #0036 - 0x880C0101, // 0028 GETMBR R3 R0 K1 - 0x8C0C070E, // 0029 GETMET R3 R3 K14 + 0x880C0105, // 0028 GETMBR R3 R0 K5 + 0x8C0C070A, // 0029 GETMET R3 R3 K10 0x5C140200, // 002A MOVE R5 R1 0x7C0C0400, // 002B CALL R3 2 - 0xB80E0E00, // 002C GETNGBL R3 K7 + 0xB80E1A00, // 002C GETNGBL R3 K13 0x60100018, // 002D GETGBL R4 G24 - 0x5814000F, // 002E LDCONST R5 K15 - 0x88180510, // 002F GETMBR R6 R2 K16 - 0x881C0511, // 0030 GETMBR R7 R2 K17 - 0x88200512, // 0031 GETMBR R8 R2 K18 - 0x88240509, // 0032 GETMBR R9 R2 K9 + 0x5814002D, // 002E LDCONST R5 K45 + 0x8818052E, // 002F GETMBR R6 R2 K46 + 0x881C0514, // 0030 GETMBR R7 R2 K20 + 0x88200515, // 0031 GETMBR R8 R2 K21 + 0x88240504, // 0032 GETMBR R9 R2 K4 0x7C100A00, // 0033 CALL R4 5 - 0x58140013, // 0034 LDCONST R5 K19 + 0x5814001F, // 0034 LDCONST R5 K31 0x7C0C0400, // 0035 CALL R3 2 0x70020000, // 0036 JMP #0038 - 0x0004030D, // 0037 ADD R1 R1 K13 + 0x0004030F, // 0037 ADD R1 R1 K15 0x7001FFC7, // 0038 JMP #0001 0x80000000, // 0039 RET 0 }) @@ -624,7 +607,7 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -656,43 +639,34 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_const_class(be_class_Matter_UDPServer), - /* K1 */ be_nested_str_weak(math), - /* K2 */ be_nested_str_weak(rand), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - /* K5 */ be_const_real_hex(0x3FCCCCCD), - /* K6 */ be_const_real_hex(0x3F800000), - /* K7 */ be_const_real_hex(0x3E800000), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(_backoff_time), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x5804002F, // 0000 LDCONST R1 K47 0x84080000, // 0001 CLOSURE R2 P0 - 0xA40E0200, // 0002 IMPORT R3 K1 + 0xA40E6000, // 0002 IMPORT R3 K48 0x5412012B, // 0003 LDINT R4 300 0x6014000A, // 0004 GETGBL R5 G10 - 0x8C180702, // 0005 GETMET R6 R3 K2 + 0x8C180731, // 0005 GETMET R6 R3 K49 0x7C180200, // 0006 CALL R6 1 0x541E00FE, // 0007 LDINT R7 255 0x2C180C07, // 0008 AND R6 R6 R7 0x7C140200, // 0009 CALL R5 1 0x541A00FE, // 000A LDINT R6 255 0x0C140A06, // 000B DIV R5 R5 R6 - 0x24180103, // 000C GT R6 R0 K3 + 0x24180125, // 000C GT R6 R0 K37 0x781A0001, // 000D JMPF R6 #0010 - 0x04180104, // 000E SUB R6 R0 K4 + 0x0418010F, // 000E SUB R6 R0 K15 0x70020000, // 000F JMP #0011 - 0x58180003, // 0010 LDCONST R6 K3 + 0x58180025, // 0010 LDCONST R6 K37 0x5C1C0400, // 0011 MOVE R7 R2 - 0x58200005, // 0012 LDCONST R8 K5 + 0x58200032, // 0012 LDCONST R8 K50 0x5C240C00, // 0013 MOVE R9 R6 0x7C1C0400, // 0014 CALL R7 2 0x081C0807, // 0015 MUL R7 R4 R7 - 0x08200B07, // 0016 MUL R8 R5 K7 - 0x00220C08, // 0017 ADD R8 K6 R8 + 0x08200B34, // 0016 MUL R8 R5 K52 + 0x00226608, // 0017 ADD R8 K51 R8 0x081C0E08, // 0018 MUL R7 R7 R8 0x60200009, // 0019 GETGBL R8 G9 0x5C240E00, // 001A MOVE R9 R7 @@ -711,93 +685,73 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(profiler), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(udp_socket), - /* K4 */ be_nested_str_weak(read), - /* K5 */ be_nested_str_weak(packet), - /* K6 */ be_nested_str_weak(start), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(remote_ip), - /* K9 */ be_nested_str_weak(remote_port), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(loglevel), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K14 */ be_nested_str_weak(dispatch_cb), - /* K15 */ be_nested_str_weak(dump), - /* K16 */ be_const_int(2), - /* K17 */ be_nested_str_weak(MAX_PACKETS_READ), - /* K18 */ be_nested_str_weak(_resend_packets), - }), + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(loop), &be_const_str_solidified, ( &(const binstruction[59]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x58080002, // 0002 LDCONST R2 K2 - 0x880C0103, // 0003 GETMBR R3 R0 K3 + 0xB8060200, // 0000 GETNGBL R1 K1 + 0x88040335, // 0001 GETMBR R1 R1 K53 + 0x58080009, // 0002 LDCONST R2 K9 + 0x880C0111, // 0003 GETMBR R3 R0 K17 0x4C100000, // 0004 LDNIL R4 0x1C0C0604, // 0005 EQ R3 R3 R4 0x780E0000, // 0006 JMPF R3 #0008 0x80000600, // 0007 RET 0 - 0x880C0103, // 0008 GETMBR R3 R0 K3 - 0x8C0C0704, // 0009 GETMET R3 R3 K4 - 0x88140105, // 000A GETMBR R5 R0 K5 + 0x880C0111, // 0008 GETMBR R3 R0 K17 + 0x8C0C0736, // 0009 GETMET R3 R3 K54 + 0x88140137, // 000A GETMBR R5 R0 K55 0x7C0C0400, // 000B CALL R3 2 0x4C100000, // 000C LDNIL R4 0x20100604, // 000D NE R4 R3 R4 0x78120028, // 000E JMPF R4 #0038 - 0x8C100306, // 000F GETMET R4 R1 K6 + 0x8C100338, // 000F GETMET R4 R1 K56 0x7C100200, // 0010 CALL R4 1 - 0x90020A03, // 0011 SETMBR R0 K5 R3 - 0x00080507, // 0012 ADD R2 R2 K7 - 0x88100103, // 0013 GETMBR R4 R0 K3 - 0x88100908, // 0014 GETMBR R4 R4 K8 - 0x88140103, // 0015 GETMBR R5 R0 K3 - 0x88140B09, // 0016 GETMBR R5 R5 K9 - 0xB81A1400, // 0017 GETNGBL R6 K10 - 0x8C180D0B, // 0018 GETMET R6 R6 K11 + 0x90026E03, // 0011 SETMBR R0 K55 R3 + 0x0008050F, // 0012 ADD R2 R2 K15 + 0x88100111, // 0013 GETMBR R4 R0 K17 + 0x8810091B, // 0014 GETMBR R4 R4 K27 + 0x88140111, // 0015 GETMBR R5 R0 K17 + 0x88140B1C, // 0016 GETMBR R5 R5 K28 + 0xB81A1600, // 0017 GETNGBL R6 K11 + 0x8C180D0C, // 0018 GETMET R6 R6 K12 0x54220003, // 0019 LDINT R8 4 0x7C180400, // 001A CALL R6 2 0x781A0007, // 001B JMPF R6 #0024 - 0xB81A1800, // 001C GETNGBL R6 K12 + 0xB81A1A00, // 001C GETNGBL R6 K13 0x601C0018, // 001D GETGBL R7 G24 - 0x5820000D, // 001E LDCONST R8 K13 + 0x58200039, // 001E LDCONST R8 K57 0x5C240800, // 001F MOVE R9 R4 0x5C280A00, // 0020 MOVE R10 R5 0x7C1C0600, // 0021 CALL R7 3 0x54220003, // 0022 LDINT R8 4 0x7C180400, // 0023 CALL R6 2 - 0x8818010E, // 0024 GETMBR R6 R0 K14 + 0x88180118, // 0024 GETMBR R6 R0 K24 0x781A0004, // 0025 JMPF R6 #002B - 0x8C18010E, // 0026 GETMET R6 R0 K14 + 0x8C180118, // 0026 GETMET R6 R0 K24 0x5C200600, // 0027 MOVE R8 R3 0x5C240800, // 0028 MOVE R9 R4 0x5C280A00, // 0029 MOVE R10 R5 0x7C180800, // 002A CALL R6 4 - 0x8C18030F, // 002B GETMET R6 R1 K15 - 0x58200010, // 002C LDCONST R8 K16 + 0x8C18033A, // 002B GETMET R6 R1 K58 + 0x5820003B, // 002C LDCONST R8 K59 0x7C180400, // 002D CALL R6 2 - 0x88180111, // 002E GETMBR R6 R0 K17 + 0x8818013C, // 002E GETMBR R6 R0 K60 0x14180406, // 002F LT R6 R2 R6 0x781A0004, // 0030 JMPF R6 #0036 - 0x88180103, // 0031 GETMBR R6 R0 K3 - 0x8C180D04, // 0032 GETMET R6 R6 K4 + 0x88180111, // 0031 GETMBR R6 R0 K17 + 0x8C180D36, // 0032 GETMET R6 R6 K54 0x7C180200, // 0033 CALL R6 1 0x5C0C0C00, // 0034 MOVE R3 R6 0x70020000, // 0035 JMP #0037 0x4C0C0000, // 0036 LDNIL R3 0x7001FFD3, // 0037 JMP #000C - 0x8C100112, // 0038 GETMET R4 R0 K18 + 0x8C10013D, // 0038 GETMET R4 R0 K61 0x7C100200, // 0039 CALL R4 1 0x80000000, // 003A RET 0 }) @@ -813,13 +767,13 @@ be_local_closure(class_Matter_UDPServer_every_second, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Matter_UDPServer, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h index c31d52978..590fdb306 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h @@ -3,6 +3,7 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// ktab too big for class 'Matter_UI' - skipping extern const bclass be_class_Matter_UI; diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h index 47e2d4acf..b13c67c7c 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h @@ -3,6 +3,7 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// ktab too big for class 'Matter_Device' - skipping extern const bclass be_class_Matter_Device; diff --git a/lib/libesp32/berry_tasmota/solidify_all.be b/lib/libesp32/berry_tasmota/solidify_all.be index c15d0c4fa..eab2647e0 100755 --- a/lib/libesp32/berry_tasmota/solidify_all.be +++ b/lib/libesp32/berry_tasmota/solidify_all.be @@ -7,6 +7,7 @@ import global import solidify import string as string2 import re +import introspect import sys sys.path().push('src/embedded') # allow to import from src/embedded diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h index e15158478..a620800c5 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h @@ -3,6 +3,137 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Autoconf' ktab size: 127, total: 205 (saved 624 bytes) +static const bvalue be_ktab_class_Autoconf[127] = { + /* K0 */ be_nested_str(webserver), + /* K1 */ be_nested_str(path), + /* K2 */ be_nested_str(check_privileged_access), + /* K3 */ be_nested_str(has_arg), + /* K4 */ be_nested_str(reapply), + /* K5 */ be_nested_str(tasmota), + /* K6 */ be_nested_str(log), + /* K7 */ be_nested_str(CFG_X3A_X20removing_X20first_X20time_X20marker), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str(clear_first_time), + /* K10 */ be_nested_str(redirect), + /* K11 */ be_nested_str(_X2F_X3Frst_X3D), + /* K12 */ be_nested_str(zip), + /* K13 */ be_nested_str(CFG_X3A_X20removing_X20autoconf_X20files), + /* K14 */ be_nested_str(delete_all_configs), + /* K15 */ be_nested_str(arg), + /* K16 */ be_nested_str(reset), + /* K17 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_X2F_X25s_X2Eautoconf), + /* K18 */ be_nested_str(arch), + /* K19 */ be_nested_str(CFG_X3A_X20downloading_X20_X27_X25s_X27), + /* K20 */ be_nested_str(_X25s_X2Eautoconf), + /* K21 */ be_nested_str(webclient), + /* K22 */ be_nested_str(begin), + /* K23 */ be_nested_str(GET), + /* K24 */ be_nested_str(return_X20code_X3D_X25i), + /* K25 */ be_nested_str(connection_error), + /* K26 */ be_nested_str(write_file), + /* K27 */ be_nested_str(close), + /* K28 */ be_nested_str(value_error), + /* K29 */ be_nested_str(Unknown_X20command), + /* K30 */ be_nested_str(CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K31 */ be_nested_str(content_start), + /* K32 */ be_nested_str(Parameter_X20error), + /* K33 */ be_nested_str(content_send_style), + /* K34 */ be_nested_str(content_send), + /* K35 */ be_nested_str(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E), + /* K36 */ be_nested_str(content_button), + /* K37 */ be_nested_str(BUTTON_CONFIGURATION), + /* K38 */ be_nested_str(content_stop), + /* K39 */ be_nested_str(_archive), + /* K40 */ be_nested_str(_X23init_X2Ebat), + /* K41 */ be_nested_str(is_first_time), + /* K42 */ be_nested_str(exists), + /* K43 */ be_nested_str(set_first_time), + /* K44 */ be_nested_str(run_bat), + /* K45 */ be_nested_str(CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting), + /* K46 */ be_const_int(2), + /* K47 */ be_nested_str(_X23display_X2Eini), + /* K48 */ be_nested_str(display_X2Eini), + /* K49 */ be_nested_str(r), + /* K50 */ be_nested_str(w), + /* K51 */ be_nested_str(readbytes), + /* K52 */ be_nested_str(write), + /* K53 */ be_nested_str(CFG_X3A_X20_X27display_X2Eini_X27_X20extracted_X2C_X20restarting), + /* K54 */ be_nested_str(CFG_X3A_X20could_X20not_X20copy_X20_X27display_X2Eini_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29_X27), + /* K55 */ be_nested_str(cmd), + /* K56 */ be_nested_str(Restart_X201), + /* K57 */ be_nested_str(_X23autoexec_X2Ebat), + /* K58 */ be_nested_str(CFG_X3A_X20running_X20), + /* K59 */ be_const_int(3), + /* K60 */ be_nested_str(CFG_X3A_X20ran_X20_X20), + /* K61 */ be_nested_str(_X23autoexec_X2Ebe), + /* K62 */ be_nested_str(CFG_X3A_X20loading_X20), + /* K63 */ be_nested_str(load), + /* K64 */ be_nested_str(CFG_X3A_X20loaded_X20_X20), + /* K65 */ be_nested_str(readline), + /* K66 */ be_const_int(0), + /* K67 */ be_nested_str(_X0A), + /* K68 */ be_nested_str(_X0D), + /* K69 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29), + /* K70 */ be_const_int(1), + /* K71 */ be_nested_str(string), + /* K72 */ be_nested_str(Auto_X2Dconfiguration), + /* K73 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E), + /* K74 */ be_nested_str(get_current_module_path), + /* K75 */ be_nested_str(tr), + /* K76 */ be_nested_str(get_current_module_name), + /* K77 */ be_nested_str(_), + /* K78 */ be_nested_str(_X20), + /* K79 */ be_nested_str(_error), + /* K80 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B), + /* K81 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B), + /* K82 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E), + /* K83 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), + /* K84 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K85 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), + /* K86 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), + /* K87 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E), + /* K88 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E), + /* K89 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K90 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), + /* K91 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), + /* K92 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), + /* K93 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E), + /* K94 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E), + /* K95 */ be_nested_str(load_templates), + /* K96 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E), + /* K97 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E), + /* K98 */ be_nested_str(stop_iteration), + /* K99 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K100 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E), + /* K101 */ be_nested_str(listdir), + /* K102 */ be_nested_str(_X2F), + /* K103 */ be_nested_str(find), + /* K104 */ be_nested_str(_X2Eautoconf), + /* K105 */ be_nested_str(remove), + /* K106 */ be_nested_str(_X2F_X2Eautoconf), + /* K107 */ be_nested_str(json), + /* K108 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson), + /* K109 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27), + /* K110 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i), + /* K111 */ be_const_int(2), + /* K112 */ be_nested_str(get_string), + /* K113 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27), + /* K114 */ be_nested_str(files), + /* K115 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27), + /* K116 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), + /* K117 */ be_nested_str(add_driver), + /* K118 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29), + /* K119 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found), + /* K120 */ be_const_int(3), + /* K121 */ be_nested_str(_X23preinit_X2Ebe), + /* K122 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27), + /* K123 */ be_nested_str(on), + /* K124 */ be_nested_str(_X2Fac), + /* K125 */ be_nested_str(HTTP_GET), + /* K126 */ be_nested_str(HTTP_POST), +}; + extern const bclass be_class_Autoconf; @@ -13,53 +144,13 @@ be_local_closure(class_Autoconf_page_autoconf_ctl, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[39]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(check_privileged_access), - /* K3 */ be_nested_str(has_arg), - /* K4 */ be_nested_str(reapply), - /* K5 */ be_nested_str(tasmota), - /* K6 */ be_nested_str(log), - /* K7 */ be_nested_str(CFG_X3A_X20removing_X20first_X20time_X20marker), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str(clear_first_time), - /* K10 */ be_nested_str(redirect), - /* K11 */ be_nested_str(_X2F_X3Frst_X3D), - /* K12 */ be_nested_str(zip), - /* K13 */ be_nested_str(CFG_X3A_X20removing_X20autoconf_X20files), - /* K14 */ be_nested_str(delete_all_configs), - /* K15 */ be_nested_str(arg), - /* K16 */ be_nested_str(reset), - /* K17 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_X2F_X25s_X2Eautoconf), - /* K18 */ be_nested_str(arch), - /* K19 */ be_nested_str(CFG_X3A_X20downloading_X20_X27_X25s_X27), - /* K20 */ be_nested_str(_X25s_X2Eautoconf), - /* K21 */ be_nested_str(webclient), - /* K22 */ be_nested_str(begin), - /* K23 */ be_nested_str(GET), - /* K24 */ be_nested_str(return_X20code_X3D_X25i), - /* K25 */ be_nested_str(connection_error), - /* K26 */ be_nested_str(write_file), - /* K27 */ be_nested_str(close), - /* K28 */ be_nested_str(value_error), - /* K29 */ be_nested_str(Unknown_X20command), - /* K30 */ be_nested_str(CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K31 */ be_nested_str(content_start), - /* K32 */ be_nested_str(Parameter_X20error), - /* K33 */ be_nested_str(content_send_style), - /* K34 */ be_nested_str(content_send), - /* K35 */ be_nested_str(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E), - /* K36 */ be_nested_str(content_button), - /* K37 */ be_nested_str(BUTTON_CONFIGURATION), - /* K38 */ be_nested_str(content_stop), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_page_autoconf_ctl, &be_const_str_solidified, ( &(const binstruction[116]) { /* code */ @@ -192,123 +283,92 @@ be_local_closure(class_Autoconf_autoexec, /* name */ be_nested_proto( 13, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str(_archive), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(_X23init_X2Ebat), - /* K3 */ be_nested_str(is_first_time), - /* K4 */ be_nested_str(exists), - /* K5 */ be_nested_str(set_first_time), - /* K6 */ be_nested_str(run_bat), - /* K7 */ be_nested_str(tasmota), - /* K8 */ be_nested_str(log), - /* K9 */ be_nested_str(CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str(_X23display_X2Eini), - /* K12 */ be_nested_str(display_X2Eini), - /* K13 */ be_nested_str(r), - /* K14 */ be_nested_str(w), - /* K15 */ be_nested_str(readbytes), - /* K16 */ be_nested_str(write), - /* K17 */ be_nested_str(close), - /* K18 */ be_nested_str(CFG_X3A_X20_X27display_X2Eini_X27_X20extracted_X2C_X20restarting), - /* K19 */ be_nested_str(CFG_X3A_X20could_X20not_X20copy_X20_X27display_X2Eini_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29_X27), - /* K20 */ be_nested_str(cmd), - /* K21 */ be_nested_str(Restart_X201), - /* K22 */ be_nested_str(_X23autoexec_X2Ebat), - /* K23 */ be_nested_str(CFG_X3A_X20running_X20), - /* K24 */ be_const_int(3), - /* K25 */ be_nested_str(CFG_X3A_X20ran_X20_X20), - /* K26 */ be_nested_str(_X23autoexec_X2Ebe), - /* K27 */ be_nested_str(CFG_X3A_X20loading_X20), - /* K28 */ be_nested_str(load), - /* K29 */ be_nested_str(CFG_X3A_X20loaded_X20_X20), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_autoexec, &be_const_str_solidified, ( &(const binstruction[147]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040127, // 0000 GETMBR R1 R0 K39 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 0xA4060200, // 0005 IMPORT R1 K1 0x50080000, // 0006 LDBOOL R2 0 0 - 0x880C0100, // 0007 GETMBR R3 R0 K0 - 0x000C0702, // 0008 ADD R3 R3 K2 - 0x8C100103, // 0009 GETMET R4 R0 K3 + 0x880C0127, // 0007 GETMBR R3 R0 K39 + 0x000C0728, // 0008 ADD R3 R3 K40 + 0x8C100129, // 0009 GETMET R4 R0 K41 0x7C100200, // 000A CALL R4 1 0x7812000F, // 000B JMPF R4 #001C - 0x8C100304, // 000C GETMET R4 R1 K4 + 0x8C10032A, // 000C GETMET R4 R1 K42 0x5C180600, // 000D MOVE R6 R3 0x7C100400, // 000E CALL R4 2 0x7812000B, // 000F JMPF R4 #001C - 0x8C100105, // 0010 GETMET R4 R0 K5 + 0x8C10012B, // 0010 GETMET R4 R0 K43 0x7C100200, // 0011 CALL R4 1 - 0x8C100106, // 0012 GETMET R4 R0 K6 + 0x8C10012C, // 0012 GETMET R4 R0 K44 0x5C180600, // 0013 MOVE R6 R3 0x7C100400, // 0014 CALL R4 2 - 0xB8120E00, // 0015 GETNGBL R4 K7 - 0x8C100908, // 0016 GETMET R4 R4 K8 - 0x58180009, // 0017 LDCONST R6 K9 - 0x581C000A, // 0018 LDCONST R7 K10 + 0xB8120A00, // 0015 GETNGBL R4 K5 + 0x8C100906, // 0016 GETMET R4 R4 K6 + 0x5818002D, // 0017 LDCONST R6 K45 + 0x581C002E, // 0018 LDCONST R7 K46 0x7C100600, // 0019 CALL R4 3 0x50080200, // 001A LDBOOL R2 1 0 0x80000800, // 001B RET 0 - 0x88100100, // 001C GETMBR R4 R0 K0 - 0x0010090B, // 001D ADD R4 R4 K11 + 0x88100127, // 001C GETMBR R4 R0 K39 + 0x0010092F, // 001D ADD R4 R4 K47 0x5C0C0800, // 001E MOVE R3 R4 - 0x8C100304, // 001F GETMET R4 R1 K4 + 0x8C10032A, // 001F GETMET R4 R1 K42 0x5C180600, // 0020 MOVE R6 R3 0x7C100400, // 0021 CALL R4 2 0x78120040, // 0022 JMPF R4 #0064 - 0x8C100103, // 0023 GETMET R4 R0 K3 + 0x8C100129, // 0023 GETMET R4 R0 K41 0x7C100200, // 0024 CALL R4 1 0x74120003, // 0025 JMPT R4 #002A - 0x8C100304, // 0026 GETMET R4 R1 K4 - 0x5818000C, // 0027 LDCONST R6 K12 + 0x8C10032A, // 0026 GETMET R4 R1 K42 + 0x58180030, // 0027 LDCONST R6 K48 0x7C100400, // 0028 CALL R4 2 0x74120039, // 0029 JMPT R4 #0064 - 0x8C100103, // 002A GETMET R4 R0 K3 + 0x8C100129, // 002A GETMET R4 R0 K41 0x7C100200, // 002B CALL R4 1 0x78120003, // 002C JMPF R4 #0031 0x5C100400, // 002D MOVE R4 R2 0x74120001, // 002E JMPT R4 #0031 - 0x8C100105, // 002F GETMET R4 R0 K5 + 0x8C10012B, // 002F GETMET R4 R0 K43 0x7C100200, // 0030 CALL R4 1 0x4C100000, // 0031 LDNIL R4 0x4C140000, // 0032 LDNIL R5 0xA802001A, // 0033 EXBLK 0 #004F 0x60180011, // 0034 GETGBL R6 G17 0x5C1C0600, // 0035 MOVE R7 R3 - 0x5820000D, // 0036 LDCONST R8 K13 + 0x58200031, // 0036 LDCONST R8 K49 0x7C180400, // 0037 CALL R6 2 0x5C100C00, // 0038 MOVE R4 R6 0x60180011, // 0039 GETGBL R6 G17 - 0x581C000C, // 003A LDCONST R7 K12 - 0x5820000E, // 003B LDCONST R8 K14 + 0x581C0030, // 003A LDCONST R7 K48 + 0x58200032, // 003B LDCONST R8 K50 0x7C180400, // 003C CALL R6 2 0x5C140C00, // 003D MOVE R5 R6 - 0x8C18090F, // 003E GETMET R6 R4 K15 + 0x8C180933, // 003E GETMET R6 R4 K51 0x7C180200, // 003F CALL R6 1 - 0x8C1C0B10, // 0040 GETMET R7 R5 K16 + 0x8C1C0B34, // 0040 GETMET R7 R5 K52 0x5C240C00, // 0041 MOVE R9 R6 0x7C1C0400, // 0042 CALL R7 2 - 0x8C1C0911, // 0043 GETMET R7 R4 K17 + 0x8C1C091B, // 0043 GETMET R7 R4 K27 0x7C1C0200, // 0044 CALL R7 1 - 0x8C1C0B11, // 0045 GETMET R7 R5 K17 + 0x8C1C0B1B, // 0045 GETMET R7 R5 K27 0x7C1C0200, // 0046 CALL R7 1 0x50080200, // 0047 LDBOOL R2 1 0 - 0xB81E0E00, // 0048 GETNGBL R7 K7 - 0x8C1C0F08, // 0049 GETMET R7 R7 K8 - 0x58240012, // 004A LDCONST R9 K18 - 0x5828000A, // 004B LDCONST R10 K10 + 0xB81E0A00, // 0048 GETNGBL R7 K5 + 0x8C1C0F06, // 0049 GETMET R7 R7 K6 + 0x58240035, // 004A LDCONST R9 K53 + 0x5828002E, // 004B LDCONST R10 K46 0x7C1C0600, // 004C CALL R7 3 0xA8040001, // 004D EXBLK 1 1 0x70020014, // 004E JMP #0064 @@ -316,7 +376,7 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0x70020011, // 0050 JMP #0063 0x60200001, // 0051 GETGBL R8 G1 0x60240018, // 0052 GETGBL R9 G24 - 0x58280013, // 0053 LDCONST R10 K19 + 0x58280036, // 0053 LDCONST R10 K54 0x5C2C0C00, // 0054 MOVE R11 R6 0x5C300E00, // 0055 MOVE R12 R7 0x7C240600, // 0056 CALL R9 3 @@ -324,60 +384,60 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0x4C200000, // 0058 LDNIL R8 0x20200808, // 0059 NE R8 R4 R8 0x78220001, // 005A JMPF R8 #005D - 0x8C200911, // 005B GETMET R8 R4 K17 + 0x8C20091B, // 005B GETMET R8 R4 K27 0x7C200200, // 005C CALL R8 1 0x4C200000, // 005D LDNIL R8 0x20200A08, // 005E NE R8 R5 R8 0x78220001, // 005F JMPF R8 #0062 - 0x8C200B11, // 0060 GETMET R8 R5 K17 + 0x8C200B1B, // 0060 GETMET R8 R5 K27 0x7C200200, // 0061 CALL R8 1 0x70020000, // 0062 JMP #0064 0xB0080000, // 0063 RAISE 2 R0 R0 0x780A0004, // 0064 JMPF R2 #006A - 0xB8120E00, // 0065 GETNGBL R4 K7 - 0x8C100914, // 0066 GETMET R4 R4 K20 - 0x58180015, // 0067 LDCONST R6 K21 + 0xB8120A00, // 0065 GETNGBL R4 K5 + 0x8C100937, // 0066 GETMET R4 R4 K55 + 0x58180038, // 0067 LDCONST R6 K56 0x7C100400, // 0068 CALL R4 2 0x80000800, // 0069 RET 0 - 0x88100100, // 006A GETMBR R4 R0 K0 - 0x00100916, // 006B ADD R4 R4 K22 + 0x88100127, // 006A GETMBR R4 R0 K39 + 0x00100939, // 006B ADD R4 R4 K57 0x5C0C0800, // 006C MOVE R3 R4 - 0x8C100304, // 006D GETMET R4 R1 K4 + 0x8C10032A, // 006D GETMET R4 R1 K42 0x5C180600, // 006E MOVE R6 R3 0x7C100400, // 006F CALL R4 2 0x7812000C, // 0070 JMPF R4 #007E - 0xB8120E00, // 0071 GETNGBL R4 K7 - 0x8C100908, // 0072 GETMET R4 R4 K8 - 0x001A2E03, // 0073 ADD R6 K23 R3 - 0x581C0018, // 0074 LDCONST R7 K24 + 0xB8120A00, // 0071 GETNGBL R4 K5 + 0x8C100906, // 0072 GETMET R4 R4 K6 + 0x001A7403, // 0073 ADD R6 K58 R3 + 0x581C003B, // 0074 LDCONST R7 K59 0x7C100600, // 0075 CALL R4 3 - 0x8C100106, // 0076 GETMET R4 R0 K6 + 0x8C10012C, // 0076 GETMET R4 R0 K44 0x5C180600, // 0077 MOVE R6 R3 0x7C100400, // 0078 CALL R4 2 - 0xB8120E00, // 0079 GETNGBL R4 K7 - 0x8C100908, // 007A GETMET R4 R4 K8 - 0x001A3203, // 007B ADD R6 K25 R3 - 0x581C0018, // 007C LDCONST R7 K24 + 0xB8120A00, // 0079 GETNGBL R4 K5 + 0x8C100906, // 007A GETMET R4 R4 K6 + 0x001A7803, // 007B ADD R6 K60 R3 + 0x581C003B, // 007C LDCONST R7 K59 0x7C100600, // 007D CALL R4 3 - 0x88100100, // 007E GETMBR R4 R0 K0 - 0x0010091A, // 007F ADD R4 R4 K26 + 0x88100127, // 007E GETMBR R4 R0 K39 + 0x0010093D, // 007F ADD R4 R4 K61 0x5C0C0800, // 0080 MOVE R3 R4 - 0x8C100304, // 0081 GETMET R4 R1 K4 + 0x8C10032A, // 0081 GETMET R4 R1 K42 0x5C180600, // 0082 MOVE R6 R3 0x7C100400, // 0083 CALL R4 2 0x7812000C, // 0084 JMPF R4 #0092 - 0xB8120E00, // 0085 GETNGBL R4 K7 - 0x8C100908, // 0086 GETMET R4 R4 K8 - 0x001A3603, // 0087 ADD R6 K27 R3 - 0x581C0018, // 0088 LDCONST R7 K24 + 0xB8120A00, // 0085 GETNGBL R4 K5 + 0x8C100906, // 0086 GETMET R4 R4 K6 + 0x001A7C03, // 0087 ADD R6 K62 R3 + 0x581C003B, // 0088 LDCONST R7 K59 0x7C100600, // 0089 CALL R4 3 - 0xB8123800, // 008A GETNGBL R4 K28 + 0xB8127E00, // 008A GETNGBL R4 K63 0x5C140600, // 008B MOVE R5 R3 0x7C100200, // 008C CALL R4 1 - 0xB8120E00, // 008D GETNGBL R4 K7 - 0x8C100908, // 008E GETMET R4 R4 K8 - 0x001A3A03, // 008F ADD R6 K29 R3 - 0x581C0018, // 0090 LDCONST R7 K24 + 0xB8120A00, // 008D GETNGBL R4 K5 + 0x8C100906, // 008E GETMET R4 R4 K6 + 0x001A8003, // 008F ADD R6 K64 R3 + 0x581C003B, // 0090 LDCONST R7 K59 0x7C100600, // 0091 CALL R4 3 0x80000000, // 0092 RET 0 }) @@ -393,25 +453,13 @@ be_local_closure(class_Autoconf_run_bat, /* name */ be_nested_proto( 12, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str(r), - /* K1 */ be_nested_str(readline), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(_X0A), - /* K4 */ be_nested_str(_X0D), - /* K5 */ be_nested_str(tasmota), - /* K6 */ be_nested_str(cmd), - /* K7 */ be_nested_str(close), - /* K8 */ be_nested_str(log), - /* K9 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29), - /* K10 */ be_const_int(1), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_run_bat, &be_const_str_solidified, ( &(const binstruction[68]) { /* code */ @@ -419,66 +467,66 @@ be_local_closure(class_Autoconf_run_bat, /* name */ 0xA802002D, // 0001 EXBLK 0 #0030 0x600C0011, // 0002 GETGBL R3 G17 0x5C100200, // 0003 MOVE R4 R1 - 0x58140000, // 0004 LDCONST R5 K0 + 0x58140031, // 0004 LDCONST R5 K49 0x7C0C0400, // 0005 CALL R3 2 0x5C080600, // 0006 MOVE R2 R3 0x500C0200, // 0007 LDBOOL R3 1 0 0x780E0022, // 0008 JMPF R3 #002C - 0x8C0C0501, // 0009 GETMET R3 R2 K1 + 0x8C0C0541, // 0009 GETMET R3 R2 K65 0x7C0C0200, // 000A CALL R3 1 0x6010000C, // 000B GETGBL R4 G12 0x5C140600, // 000C MOVE R5 R3 0x7C100200, // 000D CALL R4 1 - 0x1C100902, // 000E EQ R4 R4 K2 + 0x1C100942, // 000E EQ R4 R4 K66 0x78120000, // 000F JMPF R4 #0011 0x7002001A, // 0010 JMP #002C 0x6010000C, // 0011 GETGBL R4 G12 0x5C140600, // 0012 MOVE R5 R3 0x7C100200, // 0013 CALL R4 1 - 0x24100902, // 0014 GT R4 R4 K2 + 0x24100942, // 0014 GT R4 R4 K66 0x7812000B, // 0015 JMPF R4 #0022 0x5411FFFE, // 0016 LDINT R4 -1 0x94100604, // 0017 GETIDX R4 R3 R4 - 0x1C100903, // 0018 EQ R4 R4 K3 + 0x1C100943, // 0018 EQ R4 R4 K67 0x74120003, // 0019 JMPT R4 #001E 0x5411FFFE, // 001A LDINT R4 -1 0x94100604, // 001B GETIDX R4 R3 R4 - 0x1C100904, // 001C EQ R4 R4 K4 + 0x1C100944, // 001C EQ R4 R4 K68 0x78120003, // 001D JMPF R4 #0022 0x5411FFFD, // 001E LDINT R4 -2 - 0x40120404, // 001F CONNECT R4 K2 R4 + 0x40128404, // 001F CONNECT R4 K66 R4 0x940C0604, // 0020 GETIDX R3 R3 R4 0x7001FFEE, // 0021 JMP #0011 0x6010000C, // 0022 GETGBL R4 G12 0x5C140600, // 0023 MOVE R5 R3 0x7C100200, // 0024 CALL R4 1 - 0x24100902, // 0025 GT R4 R4 K2 + 0x24100942, // 0025 GT R4 R4 K66 0x78120003, // 0026 JMPF R4 #002B 0xB8120A00, // 0027 GETNGBL R4 K5 - 0x8C100906, // 0028 GETMET R4 R4 K6 + 0x8C100937, // 0028 GETMET R4 R4 K55 0x5C180600, // 0029 MOVE R6 R3 0x7C100400, // 002A CALL R4 2 0x7001FFDA, // 002B JMP #0007 - 0x8C0C0507, // 002C GETMET R3 R2 K7 + 0x8C0C051B, // 002C GETMET R3 R2 K27 0x7C0C0200, // 002D CALL R3 1 0xA8040001, // 002E EXBLK 1 1 0x70020012, // 002F JMP #0043 0xAC0C0002, // 0030 CATCH R3 0 2 0x7002000F, // 0031 JMP #0042 0xB8160A00, // 0032 GETNGBL R5 K5 - 0x8C140B08, // 0033 GETMET R5 R5 K8 + 0x8C140B06, // 0033 GETMET R5 R5 K6 0x601C0018, // 0034 GETGBL R7 G24 - 0x58200009, // 0035 LDCONST R8 K9 + 0x58200045, // 0035 LDCONST R8 K69 0x5C240200, // 0036 MOVE R9 R1 0x5C280600, // 0037 MOVE R10 R3 0x5C2C0800, // 0038 MOVE R11 R4 0x7C1C0800, // 0039 CALL R7 4 - 0x5820000A, // 003A LDCONST R8 K10 + 0x58200046, // 003A LDCONST R8 K70 0x7C140600, // 003B CALL R5 3 0x4C140000, // 003C LDNIL R5 0x20140405, // 003D NE R5 R2 R5 0x78160001, // 003E JMPF R5 #0041 - 0x8C140507, // 003F GETMET R5 R2 K7 + 0x8C14051B, // 003F GETMET R5 R2 K27 0x7C140200, // 0040 CALL R5 1 0x70020000, // 0041 JMP #0043 0xB0080000, // 0042 RAISE 2 R0 R0 @@ -496,139 +544,100 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */ be_nested_proto( 18, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(check_privileged_access), - /* K3 */ be_nested_str(content_start), - /* K4 */ be_nested_str(Auto_X2Dconfiguration), - /* K5 */ be_nested_str(content_send_style), - /* K6 */ be_nested_str(content_send), - /* K7 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E), - /* K8 */ be_nested_str(get_current_module_path), - /* K9 */ be_nested_str(tr), - /* K10 */ be_nested_str(get_current_module_name), - /* K11 */ be_nested_str(_), - /* K12 */ be_nested_str(_X20), - /* K13 */ be_nested_str(_error), - /* K14 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B), - /* K15 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B), - /* K16 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E), - /* K17 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), - /* K18 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E), - /* K19 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), - /* K20 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), - /* K21 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E), - /* K22 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - /* K23 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K24 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), - /* K25 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), - /* K26 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), - /* K27 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E), - /* K28 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E), - /* K29 */ be_nested_str(load_templates), - /* K30 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E), - /* K31 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E), - /* K32 */ be_nested_str(stop_iteration), - /* K33 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K34 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E), - /* K35 */ be_nested_str(content_button), - /* K36 */ be_nested_str(BUTTON_CONFIGURATION), - /* K37 */ be_nested_str(content_stop), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_page_autoconf_mgr, &be_const_str_solidified, ( &(const binstruction[124]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 + 0xA40A8E00, // 0001 IMPORT R2 K71 0x8C0C0302, // 0002 GETMET R3 R1 K2 0x7C0C0200, // 0003 CALL R3 1 0x740E0001, // 0004 JMPT R3 #0007 0x4C0C0000, // 0005 LDNIL R3 0x80040600, // 0006 RET 1 R3 - 0x8C0C0303, // 0007 GETMET R3 R1 K3 - 0x58140004, // 0008 LDCONST R5 K4 + 0x8C0C031F, // 0007 GETMET R3 R1 K31 + 0x58140048, // 0008 LDCONST R5 K72 0x7C0C0400, // 0009 CALL R3 2 - 0x8C0C0305, // 000A GETMET R3 R1 K5 + 0x8C0C0321, // 000A GETMET R3 R1 K33 0x7C0C0200, // 000B CALL R3 1 - 0x8C0C0306, // 000C GETMET R3 R1 K6 - 0x58140007, // 000D LDCONST R5 K7 + 0x8C0C0322, // 000C GETMET R3 R1 K34 + 0x58140049, // 000D LDCONST R5 K73 0x7C0C0400, // 000E CALL R3 2 - 0x8C0C0108, // 000F GETMET R3 R0 K8 + 0x8C0C014A, // 000F GETMET R3 R0 K74 0x7C0C0200, // 0010 CALL R3 1 0x780E0006, // 0011 JMPF R3 #0019 - 0x8C100509, // 0012 GETMET R4 R2 K9 - 0x8C18010A, // 0013 GETMET R6 R0 K10 + 0x8C10054B, // 0012 GETMET R4 R2 K75 + 0x8C18014C, // 0013 GETMET R6 R0 K76 0x7C180200, // 0014 CALL R6 1 - 0x581C000B, // 0015 LDCONST R7 K11 - 0x5820000C, // 0016 LDCONST R8 K12 + 0x581C004D, // 0015 LDCONST R7 K77 + 0x5820004E, // 0016 LDCONST R8 K78 0x7C100800, // 0017 CALL R4 4 0x70020004, // 0018 JMP #001E - 0x8810010D, // 0019 GETMBR R4 R0 K13 + 0x8810014F, // 0019 GETMBR R4 R0 K79 0x78120001, // 001A JMPF R4 #001D - 0x5810000E, // 001B LDCONST R4 K14 + 0x58100050, // 001B LDCONST R4 K80 0x70020000, // 001C JMP #001E - 0x5810000F, // 001D LDCONST R4 K15 - 0x8C140306, // 001E GETMET R5 R1 K6 - 0x581C0010, // 001F LDCONST R7 K16 + 0x58100051, // 001D LDCONST R4 K81 + 0x8C140322, // 001E GETMET R5 R1 K34 + 0x581C0052, // 001F LDCONST R7 K82 0x7C140400, // 0020 CALL R5 2 - 0x8C140306, // 0021 GETMET R5 R1 K6 + 0x8C140322, // 0021 GETMET R5 R1 K34 0x601C0018, // 0022 GETGBL R7 G24 - 0x58200011, // 0023 LDCONST R8 K17 + 0x58200053, // 0023 LDCONST R8 K83 0x7C1C0200, // 0024 CALL R7 1 0x7C140400, // 0025 CALL R5 2 - 0x8C140306, // 0026 GETMET R5 R1 K6 + 0x8C140322, // 0026 GETMET R5 R1 K34 0x601C0018, // 0027 GETGBL R7 G24 - 0x58200012, // 0028 LDCONST R8 K18 + 0x58200054, // 0028 LDCONST R8 K84 0x5C240800, // 0029 MOVE R9 R4 0x7C1C0400, // 002A CALL R7 2 0x7C140400, // 002B CALL R5 2 0x780E000B, // 002C JMPF R3 #0039 - 0x8C140306, // 002D GETMET R5 R1 K6 - 0x581C0013, // 002E LDCONST R7 K19 + 0x8C140322, // 002D GETMET R5 R1 K34 + 0x581C0055, // 002E LDCONST R7 K85 0x7C140400, // 002F CALL R5 2 - 0x8C140306, // 0030 GETMET R5 R1 K6 - 0x581C0014, // 0031 LDCONST R7 K20 + 0x8C140322, // 0030 GETMET R5 R1 K34 + 0x581C0056, // 0031 LDCONST R7 K86 0x7C140400, // 0032 CALL R5 2 - 0x8C140306, // 0033 GETMET R5 R1 K6 - 0x581C0015, // 0034 LDCONST R7 K21 + 0x8C140322, // 0033 GETMET R5 R1 K34 + 0x581C0057, // 0034 LDCONST R7 K87 0x7C140400, // 0035 CALL R5 2 - 0x8C140306, // 0036 GETMET R5 R1 K6 - 0x581C0016, // 0037 LDCONST R7 K22 + 0x8C140322, // 0036 GETMET R5 R1 K34 + 0x581C0058, // 0037 LDCONST R7 K88 0x7C140400, // 0038 CALL R5 2 - 0x8C140306, // 0039 GETMET R5 R1 K6 - 0x581C0017, // 003A LDCONST R7 K23 + 0x8C140322, // 0039 GETMET R5 R1 K34 + 0x581C0059, // 003A LDCONST R7 K89 0x7C140400, // 003B CALL R5 2 - 0x8C140306, // 003C GETMET R5 R1 K6 - 0x581C0010, // 003D LDCONST R7 K16 + 0x8C140322, // 003C GETMET R5 R1 K34 + 0x581C0052, // 003D LDCONST R7 K82 0x7C140400, // 003E CALL R5 2 - 0x8C140306, // 003F GETMET R5 R1 K6 + 0x8C140322, // 003F GETMET R5 R1 K34 0x601C0018, // 0040 GETGBL R7 G24 - 0x58200018, // 0041 LDCONST R8 K24 + 0x5820005A, // 0041 LDCONST R8 K90 0x7C1C0200, // 0042 CALL R7 1 0x7C140400, // 0043 CALL R5 2 - 0x8C140306, // 0044 GETMET R5 R1 K6 - 0x581C0019, // 0045 LDCONST R7 K25 + 0x8C140322, // 0044 GETMET R5 R1 K34 + 0x581C005B, // 0045 LDCONST R7 K91 0x7C140400, // 0046 CALL R5 2 - 0x8C140306, // 0047 GETMET R5 R1 K6 - 0x581C001A, // 0048 LDCONST R7 K26 + 0x8C140322, // 0047 GETMET R5 R1 K34 + 0x581C005C, // 0048 LDCONST R7 K92 0x7C140400, // 0049 CALL R5 2 - 0x8C140306, // 004A GETMET R5 R1 K6 - 0x581C001B, // 004B LDCONST R7 K27 + 0x8C140322, // 004A GETMET R5 R1 K34 + 0x581C005D, // 004B LDCONST R7 K93 0x7C140400, // 004C CALL R5 2 - 0x8C140306, // 004D GETMET R5 R1 K6 - 0x581C001C, // 004E LDCONST R7 K28 + 0x8C140322, // 004D GETMET R5 R1 K34 + 0x581C005E, // 004E LDCONST R7 K94 0x7C140400, // 004F CALL R5 2 - 0x8C14011D, // 0050 GETMET R5 R0 K29 + 0x8C14015F, // 0050 GETMET R5 R0 K95 0x7C140200, // 0051 CALL R5 1 - 0x8C180306, // 0052 GETMET R6 R1 K6 - 0x5820001E, // 0053 LDCONST R8 K30 + 0x8C180322, // 0052 GETMET R6 R1 K34 + 0x58200060, // 0053 LDCONST R8 K96 0x7C180400, // 0054 CALL R6 2 0x60180010, // 0055 GETGBL R6 G16 0x5C1C0A00, // 0056 MOVE R7 R5 @@ -636,37 +645,37 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */ 0xA802000D, // 0058 EXBLK 0 #0067 0x5C1C0C00, // 0059 MOVE R7 R6 0x7C1C0000, // 005A CALL R7 0 - 0x8C200306, // 005B GETMET R8 R1 K6 + 0x8C200322, // 005B GETMET R8 R1 K34 0x60280018, // 005C GETGBL R10 G24 - 0x582C001F, // 005D LDCONST R11 K31 + 0x582C0061, // 005D LDCONST R11 K97 0x5C300E00, // 005E MOVE R12 R7 - 0x8C340509, // 005F GETMET R13 R2 K9 + 0x8C34054B, // 005F GETMET R13 R2 K75 0x5C3C0E00, // 0060 MOVE R15 R7 - 0x5840000B, // 0061 LDCONST R16 K11 - 0x5844000C, // 0062 LDCONST R17 K12 + 0x5840004D, // 0061 LDCONST R16 K77 + 0x5844004E, // 0062 LDCONST R17 K78 0x7C340800, // 0063 CALL R13 4 0x7C280600, // 0064 CALL R10 3 0x7C200400, // 0065 CALL R8 2 0x7001FFF1, // 0066 JMP #0059 - 0x58180020, // 0067 LDCONST R6 K32 + 0x58180062, // 0067 LDCONST R6 K98 0xAC180200, // 0068 CATCH R6 1 0 0xB0080000, // 0069 RAISE 2 R0 R0 - 0x8C180306, // 006A GETMET R6 R1 K6 - 0x58200021, // 006B LDCONST R8 K33 + 0x8C180322, // 006A GETMET R6 R1 K34 + 0x58200063, // 006B LDCONST R8 K99 0x7C180400, // 006C CALL R6 2 - 0x8C180306, // 006D GETMET R6 R1 K6 - 0x58200022, // 006E LDCONST R8 K34 + 0x8C180322, // 006D GETMET R6 R1 K34 + 0x58200064, // 006E LDCONST R8 K100 0x7C180400, // 006F CALL R6 2 - 0x8C180306, // 0070 GETMET R6 R1 K6 - 0x58200016, // 0071 LDCONST R8 K22 + 0x8C180322, // 0070 GETMET R6 R1 K34 + 0x58200058, // 0071 LDCONST R8 K88 0x7C180400, // 0072 CALL R6 2 - 0x8C180306, // 0073 GETMET R6 R1 K6 - 0x58200017, // 0074 LDCONST R8 K23 + 0x8C180322, // 0073 GETMET R6 R1 K34 + 0x58200059, // 0074 LDCONST R8 K89 0x7C180400, // 0075 CALL R6 2 - 0x8C180323, // 0076 GETMET R6 R1 K35 - 0x88200324, // 0077 GETMBR R8 R1 K36 + 0x8C180324, // 0076 GETMET R6 R1 K36 + 0x88200325, // 0077 GETMBR R8 R1 K37 0x7C180400, // 0078 CALL R6 2 - 0x8C180325, // 0079 GETMET R6 R1 K37 + 0x8C180326, // 0079 GETMET R6 R1 K38 0x7C180200, // 007A CALL R6 1 0x80000000, // 007B RET 0 }) @@ -682,22 +691,19 @@ be_local_closure(class_Autoconf_get_current_module_name, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_archive), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_get_current_module_name, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFF5, // 0000 LDINT R1 -10 - 0x40060201, // 0001 CONNECT R1 K1 R1 - 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x40068401, // 0001 CONNECT R1 K66 R1 + 0x88080127, // 0002 GETMBR R2 R0 K39 0x94040401, // 0003 GETIDX R1 R2 R1 0x80040200, // 0004 RET 1 R1 }) @@ -713,30 +719,20 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_nested_str(find), - /* K5 */ be_nested_str(_X2Eautoconf), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(remove), - /* K8 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_delete_all_configs, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 + 0xA4060200, // 0000 IMPORT R1 K1 + 0xA40A8E00, // 0001 IMPORT R2 K71 + 0x8C0C0365, // 0002 GETMET R3 R1 K101 + 0x58140066, // 0003 LDCONST R5 K102 0x7C0C0400, // 0004 CALL R3 2 0x60100010, // 0005 GETGBL R4 G16 0x5C140600, // 0006 MOVE R5 R3 @@ -744,17 +740,17 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ 0xA802000B, // 0008 EXBLK 0 #0015 0x5C140800, // 0009 MOVE R5 R4 0x7C140000, // 000A CALL R5 0 - 0x8C180504, // 000B GETMET R6 R2 K4 + 0x8C180567, // 000B GETMET R6 R2 K103 0x5C200A00, // 000C MOVE R8 R5 - 0x58240005, // 000D LDCONST R9 K5 + 0x58240068, // 000D LDCONST R9 K104 0x7C180600, // 000E CALL R6 3 - 0x24180D06, // 000F GT R6 R6 K6 + 0x24180D42, // 000F GT R6 R6 K66 0x781A0002, // 0010 JMPF R6 #0014 - 0x8C180307, // 0011 GETMET R6 R1 K7 + 0x8C180369, // 0011 GETMET R6 R1 K105 0x5C200A00, // 0012 MOVE R8 R5 0x7C180400, // 0013 CALL R6 2 0x7001FFF3, // 0014 JMP #0009 - 0x58100008, // 0015 LDCONST R4 K8 + 0x58100062, // 0015 LDCONST R4 K98 0xAC100200, // 0016 CATCH R4 1 0 0xB0080000, // 0017 RAISE 2 R0 R0 0x80000000, // 0018 RET 0 @@ -771,25 +767,21 @@ be_local_closure(class_Autoconf_set_first_time, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_X2F_X2Eautoconf), - /* K1 */ be_nested_str(w), - /* K2 */ be_nested_str(close), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_set_first_time, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60040011, // 0000 GETGBL R1 G17 - 0x58080000, // 0001 LDCONST R2 K0 - 0x580C0001, // 0002 LDCONST R3 K1 + 0x5808006A, // 0001 LDCONST R2 K106 + 0x580C0032, // 0002 LDCONST R3 K50 0x7C040400, // 0003 CALL R1 2 - 0x8C080302, // 0004 GETMET R2 R1 K2 + 0x8C08031B, // 0004 GETMET R2 R1 K27 0x7C080200, // 0005 CALL R2 1 0x80000000, // 0006 RET 0 }) @@ -805,92 +797,72 @@ be_local_closure(class_Autoconf_load_templates, /* name */ be_nested_proto( 13, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson), - /* K2 */ be_nested_str(tasmota), - /* K3 */ be_nested_str(arch), - /* K4 */ be_nested_str(log), - /* K5 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27), - /* K6 */ be_const_int(3), - /* K7 */ be_nested_str(webclient), - /* K8 */ be_nested_str(begin), - /* K9 */ be_nested_str(GET), - /* K10 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str(get_string), - /* K13 */ be_nested_str(close), - /* K14 */ be_nested_str(load), - /* K15 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27), - /* K16 */ be_nested_str(find), - /* K17 */ be_nested_str(files), - /* K18 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_load_templates, &be_const_str_solidified, ( &(const binstruction[85]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 + 0xA406D600, // 0000 IMPORT R1 K107 0xA8020042, // 0001 EXBLK 0 #0045 0x60080018, // 0002 GETGBL R2 G24 - 0x580C0001, // 0003 LDCONST R3 K1 - 0xB8120400, // 0004 GETNGBL R4 K2 - 0x8C100903, // 0005 GETMET R4 R4 K3 + 0x580C006C, // 0003 LDCONST R3 K108 + 0xB8120A00, // 0004 GETNGBL R4 K5 + 0x8C100912, // 0005 GETMET R4 R4 K18 0x7C100200, // 0006 CALL R4 1 0x7C080400, // 0007 CALL R2 2 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x8C0C0704, // 0009 GETMET R3 R3 K4 + 0xB80E0A00, // 0008 GETNGBL R3 K5 + 0x8C0C0706, // 0009 GETMET R3 R3 K6 0x60140018, // 000A GETGBL R5 G24 - 0x58180005, // 000B LDCONST R6 K5 + 0x5818006D, // 000B LDCONST R6 K109 0x5C1C0400, // 000C MOVE R7 R2 0x7C140400, // 000D CALL R5 2 - 0x58180006, // 000E LDCONST R6 K6 + 0x5818003B, // 000E LDCONST R6 K59 0x7C0C0600, // 000F CALL R3 3 - 0xB80E0E00, // 0010 GETNGBL R3 K7 + 0xB80E2A00, // 0010 GETNGBL R3 K21 0x7C0C0000, // 0011 CALL R3 0 - 0x8C100708, // 0012 GETMET R4 R3 K8 + 0x8C100716, // 0012 GETMET R4 R3 K22 0x5C180400, // 0013 MOVE R6 R2 0x7C100400, // 0014 CALL R4 2 - 0x8C100709, // 0015 GETMET R4 R3 K9 + 0x8C100717, // 0015 GETMET R4 R3 K23 0x7C100200, // 0016 CALL R4 1 0x541600C7, // 0017 LDINT R5 200 0x20140805, // 0018 NE R5 R4 R5 0x7816000A, // 0019 JMPF R5 #0025 - 0xB8160400, // 001A GETNGBL R5 K2 - 0x8C140B04, // 001B GETMET R5 R5 K4 + 0xB8160A00, // 001A GETNGBL R5 K5 + 0x8C140B06, // 001B GETMET R5 R5 K6 0x601C0018, // 001C GETGBL R7 G24 - 0x5820000A, // 001D LDCONST R8 K10 + 0x5820006E, // 001D LDCONST R8 K110 0x5C240800, // 001E MOVE R9 R4 0x7C1C0400, // 001F CALL R7 2 - 0x5820000B, // 0020 LDCONST R8 K11 + 0x5820006F, // 0020 LDCONST R8 K111 0x7C140600, // 0021 CALL R5 3 0x4C140000, // 0022 LDNIL R5 0xA8040001, // 0023 EXBLK 1 1 0x80040A00, // 0024 RET 1 R5 - 0x8C14070C, // 0025 GETMET R5 R3 K12 + 0x8C140770, // 0025 GETMET R5 R3 K112 0x7C140200, // 0026 CALL R5 1 - 0x8C18070D, // 0027 GETMET R6 R3 K13 + 0x8C18071B, // 0027 GETMET R6 R3 K27 0x7C180200, // 0028 CALL R6 1 - 0x8C18030E, // 0029 GETMET R6 R1 K14 + 0x8C18033F, // 0029 GETMET R6 R1 K63 0x5C200A00, // 002A MOVE R8 R5 0x7C180400, // 002B CALL R6 2 - 0xB81E0400, // 002C GETNGBL R7 K2 - 0x8C1C0F04, // 002D GETMET R7 R7 K4 + 0xB81E0A00, // 002C GETNGBL R7 K5 + 0x8C1C0F06, // 002D GETMET R7 R7 K6 0x60240018, // 002E GETGBL R9 G24 - 0x5828000F, // 002F LDCONST R10 K15 + 0x58280071, // 002F LDCONST R10 K113 0x602C0008, // 0030 GETGBL R11 G8 0x5C300C00, // 0031 MOVE R12 R6 0x7C2C0200, // 0032 CALL R11 1 0x7C240400, // 0033 CALL R9 2 - 0x58280006, // 0034 LDCONST R10 K6 + 0x5828003B, // 0034 LDCONST R10 K59 0x7C1C0600, // 0035 CALL R7 3 - 0x8C1C0D10, // 0036 GETMET R7 R6 K16 - 0x58240011, // 0037 LDCONST R9 K17 + 0x8C1C0D67, // 0036 GETMET R7 R6 K103 + 0x58240072, // 0037 LDCONST R9 K114 0x7C1C0400, // 0038 CALL R7 2 0x6020000F, // 0039 GETGBL R8 G15 0x5C240E00, // 003A MOVE R9 R7 @@ -906,14 +878,14 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0x7002000E, // 0044 JMP #0054 0xAC080002, // 0045 CATCH R2 0 2 0x7002000B, // 0046 JMP #0053 - 0xB8120400, // 0047 GETNGBL R4 K2 - 0x8C100904, // 0048 GETMET R4 R4 K4 + 0xB8120A00, // 0047 GETNGBL R4 K5 + 0x8C100906, // 0048 GETMET R4 R4 K6 0x60180018, // 0049 GETGBL R6 G24 - 0x581C0012, // 004A LDCONST R7 K18 + 0x581C0073, // 004A LDCONST R7 K115 0x5C200400, // 004B MOVE R8 R2 0x5C240600, // 004C MOVE R9 R3 0x7C180600, // 004D CALL R6 3 - 0x581C000B, // 004E LDCONST R7 K11 + 0x581C006F, // 004E LDCONST R7 K111 0x7C100600, // 004F CALL R4 3 0x4C100000, // 0050 LDNIL R4 0x80040800, // 0051 RET 1 R4 @@ -933,23 +905,19 @@ be_local_closure(class_Autoconf_web_add_config_button, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(content_send), - /* K2 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_web_add_config_button, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0x8C080322, // 0001 GETMET R2 R1 K34 + 0x58100074, // 0002 LDCONST R4 K116 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 }) @@ -965,23 +933,19 @@ be_local_closure(class_Autoconf_is_first_time, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(exists), - /* K2 */ be_nested_str(_X2F_X2Eautoconf), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_is_first_time, &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xA4060200, // 0000 IMPORT R1 K1 + 0x8C08032A, // 0001 GETMET R2 R1 K42 + 0x5810006A, // 0002 LDCONST R4 K106 0x7C080400, // 0003 CALL R2 2 0x780A0000, // 0004 JMPF R2 #0006 0x50080001, // 0005 LDBOOL R2 0 1 @@ -1000,86 +964,68 @@ be_local_closure(class_Autoconf_init, /* name */ be_nested_proto( 12, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_nested_str(tasmota), - /* K5 */ be_nested_str(add_driver), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(find), - /* K8 */ be_nested_str(_X2Eautoconf), - /* K9 */ be_nested_str(log), - /* K10 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str(_error), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str(_archive), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 + 0xA4060200, // 0000 IMPORT R1 K1 + 0xA40A8E00, // 0001 IMPORT R2 K71 + 0x8C0C0365, // 0002 GETMET R3 R1 K101 + 0x58140066, // 0003 LDCONST R5 K102 0x7C0C0400, // 0004 CALL R3 2 0x4C100000, // 0005 LDNIL R4 - 0xB8160800, // 0006 GETNGBL R5 K4 - 0x8C140B05, // 0007 GETMET R5 R5 K5 + 0xB8160A00, // 0006 GETNGBL R5 K5 + 0x8C140B75, // 0007 GETMET R5 R5 K117 0x5C1C0000, // 0008 MOVE R7 R0 0x7C140400, // 0009 CALL R5 2 - 0x58140006, // 000A LDCONST R5 K6 + 0x58140042, // 000A LDCONST R5 K66 0x6018000C, // 000B GETGBL R6 G12 0x5C1C0600, // 000C MOVE R7 R3 0x7C180200, // 000D CALL R6 1 0x14180A06, // 000E LT R6 R5 R6 0x781A0018, // 000F JMPF R6 #0029 - 0x8C180507, // 0010 GETMET R6 R2 K7 + 0x8C180567, // 0010 GETMET R6 R2 K103 0x94200605, // 0011 GETIDX R8 R3 R5 - 0x58240008, // 0012 LDCONST R9 K8 + 0x58240068, // 0012 LDCONST R9 K104 0x7C180600, // 0013 CALL R6 3 - 0x24180D06, // 0014 GT R6 R6 K6 + 0x24180D42, // 0014 GT R6 R6 K66 0x781A0010, // 0015 JMPF R6 #0027 0x4C180000, // 0016 LDNIL R6 0x20180806, // 0017 NE R6 R4 R6 0x781A000C, // 0018 JMPF R6 #0026 - 0xB81A0800, // 0019 GETNGBL R6 K4 - 0x8C180D09, // 001A GETMET R6 R6 K9 + 0xB81A0A00, // 0019 GETNGBL R6 K5 + 0x8C180D06, // 001A GETMET R6 R6 K6 0x60200018, // 001B GETGBL R8 G24 - 0x5824000A, // 001C LDCONST R9 K10 + 0x58240076, // 001C LDCONST R9 K118 0x5C280800, // 001D MOVE R10 R4 0x942C0605, // 001E GETIDX R11 R3 R5 0x7C200600, // 001F CALL R8 3 - 0x5824000B, // 0020 LDCONST R9 K11 + 0x5824006F, // 0020 LDCONST R9 K111 0x7C180600, // 0021 CALL R6 3 0x50180200, // 0022 LDBOOL R6 1 0 - 0x90021806, // 0023 SETMBR R0 K12 R6 + 0x90029E06, // 0023 SETMBR R0 K79 R6 0x4C180000, // 0024 LDNIL R6 0x80040C00, // 0025 RET 1 R6 0x94100605, // 0026 GETIDX R4 R3 R5 - 0x00140B0D, // 0027 ADD R5 R5 K13 + 0x00140B46, // 0027 ADD R5 R5 K70 0x7001FFE1, // 0028 JMP #000B 0x4C180000, // 0029 LDNIL R6 0x1C180806, // 002A EQ R6 R4 R6 0x781A0006, // 002B JMPF R6 #0033 - 0xB81A0800, // 002C GETNGBL R6 K4 - 0x8C180D09, // 002D GETMET R6 R6 K9 - 0x5820000E, // 002E LDCONST R8 K14 - 0x5824000F, // 002F LDCONST R9 K15 + 0xB81A0A00, // 002C GETNGBL R6 K5 + 0x8C180D06, // 002D GETMET R6 R6 K6 + 0x58200077, // 002E LDCONST R8 K119 + 0x58240078, // 002F LDCONST R9 K120 0x7C180600, // 0030 CALL R6 3 0x4C180000, // 0031 LDNIL R6 0x80040C00, // 0032 RET 1 R6 - 0x90022004, // 0033 SETMBR R0 K16 R4 + 0x90024E04, // 0033 SETMBR R0 K39 R4 0x80000000, // 0034 RET 0 }) ) @@ -1094,51 +1040,40 @@ be_local_closure(class_Autoconf_preinit, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(_archive), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(_X23preinit_X2Ebe), - /* K3 */ be_nested_str(exists), - /* K4 */ be_nested_str(tasmota), - /* K5 */ be_nested_str(log), - /* K6 */ be_nested_str(CFG_X3A_X20loading_X20), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str(load), - /* K9 */ be_nested_str(CFG_X3A_X20loaded_X20_X20), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_preinit, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040127, // 0000 GETMBR R1 R0 K39 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 0xA4060200, // 0005 IMPORT R1 K1 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x00080502, // 0007 ADD R2 R2 K2 - 0x8C0C0303, // 0008 GETMET R3 R1 K3 + 0x88080127, // 0006 GETMBR R2 R0 K39 + 0x00080579, // 0007 ADD R2 R2 K121 + 0x8C0C032A, // 0008 GETMET R3 R1 K42 0x5C140400, // 0009 MOVE R5 R2 0x7C0C0400, // 000A CALL R3 2 0x780E000C, // 000B JMPF R3 #0019 - 0xB80E0800, // 000C GETNGBL R3 K4 - 0x8C0C0705, // 000D GETMET R3 R3 K5 - 0x00160C02, // 000E ADD R5 K6 R2 - 0x58180007, // 000F LDCONST R6 K7 + 0xB80E0A00, // 000C GETNGBL R3 K5 + 0x8C0C0706, // 000D GETMET R3 R3 K6 + 0x00167C02, // 000E ADD R5 K62 R2 + 0x5818003B, // 000F LDCONST R6 K59 0x7C0C0600, // 0010 CALL R3 3 - 0xB80E1000, // 0011 GETNGBL R3 K8 + 0xB80E7E00, // 0011 GETNGBL R3 K63 0x5C100400, // 0012 MOVE R4 R2 0x7C0C0200, // 0013 CALL R3 1 - 0xB80E0800, // 0014 GETNGBL R3 K4 - 0x8C0C0705, // 0015 GETMET R3 R3 K5 - 0x00161202, // 0016 ADD R5 K9 R2 - 0x58180007, // 0017 LDCONST R6 K7 + 0xB80E0A00, // 0014 GETNGBL R3 K5 + 0x8C0C0706, // 0015 GETMET R3 R3 K6 + 0x00168002, // 0016 ADD R5 K64 R2 + 0x5818003B, // 0017 LDCONST R6 K59 0x7C0C0600, // 0018 CALL R3 3 0x80000000, // 0019 RET 0 }) @@ -1154,63 +1089,50 @@ be_local_closure(class_Autoconf_reset, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str(find), - /* K6 */ be_nested_str(_X2Eautoconf), - /* K7 */ be_nested_str(remove), - /* K8 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str(_archive), - /* K11 */ be_nested_str(_error), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_reset, &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 + 0xA4060200, // 0000 IMPORT R1 K1 + 0xA40A8E00, // 0001 IMPORT R2 K71 + 0x8C0C0365, // 0002 GETMET R3 R1 K101 + 0x58140066, // 0003 LDCONST R5 K102 0x7C0C0400, // 0004 CALL R3 2 0x4C100000, // 0005 LDNIL R4 - 0x58140004, // 0006 LDCONST R5 K4 + 0x58140042, // 0006 LDCONST R5 K66 0x6018000C, // 0007 GETGBL R6 G12 0x5C1C0600, // 0008 MOVE R7 R3 0x7C180200, // 0009 CALL R6 1 0x14180A06, // 000A LT R6 R5 R6 0x781A0011, // 000B JMPF R6 #001E 0x94180605, // 000C GETIDX R6 R3 R5 - 0x8C1C0505, // 000D GETMET R7 R2 K5 + 0x8C1C0567, // 000D GETMET R7 R2 K103 0x5C240C00, // 000E MOVE R9 R6 - 0x58280006, // 000F LDCONST R10 K6 + 0x58280068, // 000F LDCONST R10 K104 0x7C1C0600, // 0010 CALL R7 3 - 0x241C0F04, // 0011 GT R7 R7 K4 + 0x241C0F42, // 0011 GT R7 R7 K66 0x781E0008, // 0012 JMPF R7 #001C - 0x8C1C0307, // 0013 GETMET R7 R1 K7 + 0x8C1C0369, // 0013 GETMET R7 R1 K105 0x5C240C00, // 0014 MOVE R9 R6 0x7C1C0400, // 0015 CALL R7 2 0x601C0001, // 0016 GETGBL R7 G1 0x60200018, // 0017 GETGBL R8 G24 - 0x58240008, // 0018 LDCONST R9 K8 + 0x5824007A, // 0018 LDCONST R9 K122 0x5C280C00, // 0019 MOVE R10 R6 0x7C200400, // 001A CALL R8 2 0x7C1C0200, // 001B CALL R7 1 - 0x00140B09, // 001C ADD R5 R5 K9 + 0x00140B46, // 001C ADD R5 R5 K70 0x7001FFE8, // 001D JMP #0007 0x4C180000, // 001E LDNIL R6 - 0x90021406, // 001F SETMBR R0 K10 R6 + 0x90024E06, // 001F SETMBR R0 K39 R6 0x4C180000, // 0020 LDNIL R6 - 0x90021606, // 0021 SETMBR R0 K11 R6 + 0x90029E06, // 0021 SETMBR R0 K79 R6 0x80000000, // 0022 RET 0 }) ) @@ -1225,7 +1147,7 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1278,26 +1200,20 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(on), - /* K2 */ be_nested_str(_X2Fac), - /* K3 */ be_nested_str(HTTP_GET), - /* K4 */ be_nested_str(HTTP_POST), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_web_add_handler, &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0x8C08037B, // 0001 GETMET R2 R1 K123 + 0x5810007C, // 0002 LDCONST R4 K124 0x84140000, // 0003 CLOSURE R5 P0 - 0x88180303, // 0004 GETMBR R6 R1 K3 + 0x8818037D, // 0004 GETMBR R6 R1 K125 0x7C080800, // 0005 CALL R2 4 - 0x8C080301, // 0006 GETMET R2 R1 K1 - 0x58100002, // 0007 LDCONST R4 K2 + 0x8C08037B, // 0006 GETMET R2 R1 K123 + 0x5810007C, // 0007 LDCONST R4 K124 0x84140001, // 0008 CLOSURE R5 P1 - 0x88180304, // 0009 GETMBR R6 R1 K4 + 0x8818037E, // 0009 GETMBR R6 R1 K126 0x7C080800, // 000A CALL R2 4 0xA0000000, // 000B CLOSE R0 0x80000000, // 000C RET 0 @@ -1314,23 +1230,19 @@ be_local_closure(class_Autoconf_clear_first_time, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(remove), - /* K2 */ be_nested_str(_X2F_X2Eautoconf), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_clear_first_time, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 + 0xA4060200, // 0000 IMPORT R1 K1 + 0x8C080369, // 0001 GETMET R2 R1 K105 + 0x5810006A, // 0002 LDCONST R4 K106 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 }) @@ -1346,19 +1258,17 @@ be_local_closure(class_Autoconf_get_current_module_path, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(_archive), - }), + &be_ktab_class_Autoconf, /* shared constants */ &be_const_str_get_current_module_path, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040127, // 0000 GETMBR R1 R0 K39 0x80040200, // 0001 RET 1 R1 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h index 9fb7828fe..ed42f2852 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h @@ -3,6 +3,183 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_SPAKE_Hasher; +// compact class 'SPAKE_Hasher' ktab size: 8, total: 10 (saved 16 bytes) +static const bvalue be_ktab_class_SPAKE_Hasher[8] = { + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(hash), + /* K2 */ be_nested_str_weak(SHA256), + /* K3 */ be_nested_str_weak(size), + /* K4 */ be_nested_str_weak(add), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(update), + /* K7 */ be_nested_str_weak(out), +}; + + +extern const bclass be_class_SPAKE_Hasher; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_SPAKE_Hasher_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SPAKE_Hasher, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080302, // 0001 GETMET R2 R1 K2 + 0x7C080200, // 0002 CALL R2 1 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_item +********************************************************************/ +be_local_closure(class_SPAKE_Hasher_add_item, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SPAKE_Hasher, /* shared constants */ + be_str_weak(add_item), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x8C080303, // 0000 GETMET R2 R1 K3 + 0x7C080200, // 0001 CALL R2 1 + 0x600C0015, // 0002 GETGBL R3 G21 + 0x7C0C0000, // 0003 CALL R3 0 + 0x8C0C0704, // 0004 GETMET R3 R3 K4 + 0x5C140400, // 0005 MOVE R5 R2 + 0x541A0003, // 0006 LDINT R6 4 + 0x7C0C0600, // 0007 CALL R3 3 + 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x58140005, // 0009 LDCONST R5 K5 + 0x541A0003, // 000A LDINT R6 4 + 0x7C0C0600, // 000B CALL R3 3 + 0x88100101, // 000C GETMBR R4 R0 K1 + 0x8C100906, // 000D GETMET R4 R4 K6 + 0x5C180600, // 000E MOVE R6 R3 + 0x7C100400, // 000F CALL R4 2 + 0x88100101, // 0010 GETMBR R4 R0 K1 + 0x8C100906, // 0011 GETMET R4 R4 K6 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C100400, // 0013 CALL R4 2 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: out +********************************************************************/ +be_local_closure(class_SPAKE_Hasher_out, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SPAKE_Hasher, /* shared constants */ + be_str_weak(out), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040307, // 0001 GETMET R1 R1 K7 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: SPAKE_Hasher +********************************************************************/ +be_local_class(SPAKE_Hasher, + 1, + NULL, + be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(out, -1), be_const_closure(class_SPAKE_Hasher_out_closure) }, + { be_const_key_weak(hash, -1), be_const_var(0) }, + { be_const_key_weak(add_item, -1), be_const_closure(class_SPAKE_Hasher_add_item_closure) }, + { be_const_key_weak(init, 0), be_const_closure(class_SPAKE_Hasher_init_closure) }, + })), + be_str_weak(SPAKE_Hasher) +); +// compact class 'SPAKE2P_Matter' ktab size: 43, total: 84 (saved 328 bytes) +static const bvalue be_ktab_class_SPAKE2P_Matter[43] = { + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_nested_str_weak(EC_P256), + /* K3 */ be_nested_str_weak(y), + /* K4 */ be_nested_str_weak(mod), + /* K5 */ be_nested_str_weak(pB), + /* K6 */ be_nested_str_weak(muladd), + /* K7 */ be_nested_str_weak(w0), + /* K8 */ be_nested_str_weak(N), + /* K9 */ be_const_class(be_class_SPAKE_Hasher), + /* K10 */ be_nested_str_weak(add_item), + /* K11 */ be_nested_str_weak(Context), + /* K12 */ be_nested_str_weak(A), + /* K13 */ be_nested_str_weak(B), + /* K14 */ be_nested_str_weak(M), + /* K15 */ be_nested_str_weak(pA), + /* K16 */ be_nested_str_weak(Z), + /* K17 */ be_nested_str_weak(V), + /* K18 */ be_nested_str_weak(Kmain), + /* K19 */ be_nested_str_weak(out), + /* K20 */ be_nested_str_weak(Ke), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str_weak(HKDF_SHA256), + /* K23 */ be_nested_str_weak(derive), + /* K24 */ be_nested_str_weak(fromstring), + /* K25 */ be_nested_str_weak(ConfirmationKeys), + /* K26 */ be_nested_str_weak(KcA), + /* K27 */ be_nested_str_weak(KcB), + /* K28 */ be_nested_str_weak(K_shared), + /* K29 */ be_nested_str_weak(SharedKey), + /* K30 */ be_nested_str_weak(cA), + /* K31 */ be_nested_str_weak(HMAC_SHA256), + /* K32 */ be_nested_str_weak(update), + /* K33 */ be_nested_str_weak(cB), + /* K34 */ be_nested_str_weak(fromhex), + /* K35 */ be_nested_str_weak(spake_M_hex), + /* K36 */ be_nested_str_weak(spake_N_hex), + /* K37 */ be_nested_str_weak(w1), + /* K38 */ be_nested_str_weak(L), + /* K39 */ be_nested_str_weak(x), + /* K40 */ be_nested_str_weak(neg), + /* K41 */ be_nested_str_weak(01), + /* K42 */ be_nested_str_weak(mul), +}; + extern const bclass be_class_SPAKE2P_Matter; @@ -13,23 +190,13 @@ be_local_closure(class_SPAKE2P_Matter_compute_pB, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(EC_P256), - /* K3 */ be_nested_str_weak(y), - /* K4 */ be_nested_str_weak(mod), - /* K5 */ be_nested_str_weak(pB), - /* K6 */ be_nested_str_weak(muladd), - /* K7 */ be_nested_str_weak(w0), - /* K8 */ be_nested_str_weak(N), - }), + &be_ktab_class_SPAKE2P_Matter, /* shared constants */ be_str_weak(compute_pB), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -63,136 +230,6 @@ be_local_closure(class_SPAKE2P_Matter_compute_pB, /* name */ /*******************************************************************/ -extern const bclass be_class_SPAKE_Hasher; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_SPAKE_Hasher_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(hash), - /* K2 */ be_nested_str_weak(SHA256), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080302, // 0001 GETMET R2 R1 K2 - 0x7C080200, // 0002 CALL R2 1 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_item -********************************************************************/ -be_local_closure(class_SPAKE_Hasher_add_item, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(size), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(hash), - /* K4 */ be_nested_str_weak(update), - }), - be_str_weak(add_item), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x600C0015, // 0002 GETGBL R3 G21 - 0x7C0C0000, // 0003 CALL R3 0 - 0x8C0C0701, // 0004 GETMET R3 R3 K1 - 0x5C140400, // 0005 MOVE R5 R2 - 0x541A0003, // 0006 LDINT R6 4 - 0x7C0C0600, // 0007 CALL R3 3 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x58140002, // 0009 LDCONST R5 K2 - 0x541A0003, // 000A LDINT R6 4 - 0x7C0C0600, // 000B CALL R3 3 - 0x88100103, // 000C GETMBR R4 R0 K3 - 0x8C100904, // 000D GETMET R4 R4 K4 - 0x5C180600, // 000E MOVE R6 R3 - 0x7C100400, // 000F CALL R4 2 - 0x88100103, // 0010 GETMBR R4 R0 K3 - 0x8C100904, // 0011 GETMET R4 R4 K4 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C100400, // 0013 CALL R4 2 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: out -********************************************************************/ -be_local_closure(class_SPAKE_Hasher_out, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(hash), - /* K1 */ be_nested_str_weak(out), - }), - be_str_weak(out), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: SPAKE_Hasher -********************************************************************/ -be_local_class(SPAKE_Hasher, - 1, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(out, -1), be_const_closure(class_SPAKE_Hasher_out_closure) }, - { be_const_key_weak(hash, -1), be_const_var(0) }, - { be_const_key_weak(add_item, -1), be_const_closure(class_SPAKE_Hasher_add_item_closure) }, - { be_const_key_weak(init, 0), be_const_closure(class_SPAKE_Hasher_init_closure) }, - })), - be_str_weak(SPAKE_Hasher) -); - /******************************************************************** ** Solidified function: compute_TT_hash ********************************************************************/ @@ -200,119 +237,89 @@ be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */ be_nested_proto( 14, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[29]) { /* constants */ - /* K0 */ be_const_class(be_class_SPAKE_Hasher), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(add_item), - /* K3 */ be_nested_str_weak(Context), - /* K4 */ be_nested_str_weak(A), - /* K5 */ be_nested_str_weak(B), - /* K6 */ be_nested_str_weak(M), - /* K7 */ be_nested_str_weak(N), - /* K8 */ be_nested_str_weak(pA), - /* K9 */ be_nested_str_weak(pB), - /* K10 */ be_nested_str_weak(Z), - /* K11 */ be_nested_str_weak(V), - /* K12 */ be_nested_str_weak(w0), - /* K13 */ be_nested_str_weak(Kmain), - /* K14 */ be_nested_str_weak(out), - /* K15 */ be_nested_str_weak(Ke), - /* K16 */ be_const_int(0), - /* K17 */ be_nested_str_weak(HKDF_SHA256), - /* K18 */ be_nested_str_weak(derive), - /* K19 */ be_nested_str_weak(fromstring), - /* K20 */ be_nested_str_weak(ConfirmationKeys), - /* K21 */ be_nested_str_weak(KcA), - /* K22 */ be_nested_str_weak(KcB), - /* K23 */ be_nested_str_weak(K_shared), - /* K24 */ be_nested_str_weak(SharedKey), - /* K25 */ be_nested_str_weak(cA), - /* K26 */ be_nested_str_weak(HMAC_SHA256), - /* K27 */ be_nested_str_weak(update), - /* K28 */ be_nested_str_weak(cB), - }), + &be_ktab_class_SPAKE2P_Matter, /* shared constants */ be_str_weak(compute_TT_hash), &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0xB4000000, // 0001 CLASS K0 + 0x58080009, // 0000 LDCONST R2 K9 + 0xB4000009, // 0001 CLASS K9 0x5C0C0400, // 0002 MOVE R3 R2 - 0xA40E0200, // 0003 IMPORT R3 K1 + 0xA40E0000, // 0003 IMPORT R3 K0 0x5C100400, // 0004 MOVE R4 R2 0x7C100000, // 0005 CALL R4 0 - 0x8C140902, // 0006 GETMET R5 R4 K2 - 0x881C0103, // 0007 GETMBR R7 R0 K3 + 0x8C14090A, // 0006 GETMET R5 R4 K10 + 0x881C010B, // 0007 GETMBR R7 R0 K11 0x7C140400, // 0008 CALL R5 2 - 0x8C140902, // 0009 GETMET R5 R4 K2 - 0x881C0104, // 000A GETMBR R7 R0 K4 + 0x8C14090A, // 0009 GETMET R5 R4 K10 + 0x881C010C, // 000A GETMBR R7 R0 K12 0x7C140400, // 000B CALL R5 2 - 0x8C140902, // 000C GETMET R5 R4 K2 - 0x881C0105, // 000D GETMBR R7 R0 K5 + 0x8C14090A, // 000C GETMET R5 R4 K10 + 0x881C010D, // 000D GETMBR R7 R0 K13 0x7C140400, // 000E CALL R5 2 - 0x8C140902, // 000F GETMET R5 R4 K2 - 0x881C0106, // 0010 GETMBR R7 R0 K6 + 0x8C14090A, // 000F GETMET R5 R4 K10 + 0x881C010E, // 0010 GETMBR R7 R0 K14 0x7C140400, // 0011 CALL R5 2 - 0x8C140902, // 0012 GETMET R5 R4 K2 - 0x881C0107, // 0013 GETMBR R7 R0 K7 + 0x8C14090A, // 0012 GETMET R5 R4 K10 + 0x881C0108, // 0013 GETMBR R7 R0 K8 0x7C140400, // 0014 CALL R5 2 - 0x8C140902, // 0015 GETMET R5 R4 K2 - 0x881C0108, // 0016 GETMBR R7 R0 K8 + 0x8C14090A, // 0015 GETMET R5 R4 K10 + 0x881C010F, // 0016 GETMBR R7 R0 K15 0x7C140400, // 0017 CALL R5 2 - 0x8C140902, // 0018 GETMET R5 R4 K2 - 0x881C0109, // 0019 GETMBR R7 R0 K9 + 0x8C14090A, // 0018 GETMET R5 R4 K10 + 0x881C0105, // 0019 GETMBR R7 R0 K5 0x7C140400, // 001A CALL R5 2 - 0x8C140902, // 001B GETMET R5 R4 K2 - 0x881C010A, // 001C GETMBR R7 R0 K10 + 0x8C14090A, // 001B GETMET R5 R4 K10 + 0x881C0110, // 001C GETMBR R7 R0 K16 0x7C140400, // 001D CALL R5 2 - 0x8C140902, // 001E GETMET R5 R4 K2 - 0x881C010B, // 001F GETMBR R7 R0 K11 + 0x8C14090A, // 001E GETMET R5 R4 K10 + 0x881C0111, // 001F GETMBR R7 R0 K17 0x7C140400, // 0020 CALL R5 2 - 0x8C140902, // 0021 GETMET R5 R4 K2 - 0x881C010C, // 0022 GETMBR R7 R0 K12 + 0x8C14090A, // 0021 GETMET R5 R4 K10 + 0x881C0107, // 0022 GETMBR R7 R0 K7 0x7C140400, // 0023 CALL R5 2 - 0x8C14090E, // 0024 GETMET R5 R4 K14 + 0x8C140913, // 0024 GETMET R5 R4 K19 0x7C140200, // 0025 CALL R5 1 - 0x90021A05, // 0026 SETMBR R0 K13 R5 + 0x90022405, // 0026 SETMBR R0 K18 R5 0x7806000A, // 0027 JMPF R1 #0033 0x5416000F, // 0028 LDINT R5 16 0x541A001E, // 0029 LDINT R6 31 0x40140A06, // 002A CONNECT R5 R5 R6 - 0x8818010D, // 002B GETMBR R6 R0 K13 + 0x88180112, // 002B GETMBR R6 R0 K18 0x94140C05, // 002C GETIDX R5 R6 R5 - 0x90021E05, // 002D SETMBR R0 K15 R5 + 0x90022805, // 002D SETMBR R0 K20 R5 0x5416000E, // 002E LDINT R5 15 - 0x40162005, // 002F CONNECT R5 K16 R5 - 0x8818010D, // 0030 GETMBR R6 R0 K13 + 0x40162A05, // 002F CONNECT R5 K21 R5 + 0x88180112, // 0030 GETMBR R6 R0 K18 0x94140C05, // 0031 GETIDX R5 R6 R5 - 0x90021A05, // 0032 SETMBR R0 K13 R5 - 0x8C140711, // 0033 GETMET R5 R3 K17 + 0x90022405, // 0032 SETMBR R0 K18 R5 + 0x8C140716, // 0033 GETMET R5 R3 K22 0x7C140200, // 0034 CALL R5 1 - 0x8C180B12, // 0035 GETMET R6 R5 K18 - 0x8820010D, // 0036 GETMBR R8 R0 K13 + 0x8C180B17, // 0035 GETMET R6 R5 K23 + 0x88200112, // 0036 GETMBR R8 R0 K18 0x60240015, // 0037 GETGBL R9 G21 0x7C240000, // 0038 CALL R9 0 0x60280015, // 0039 GETGBL R10 G21 0x7C280000, // 003A CALL R10 0 - 0x8C281513, // 003B GETMET R10 R10 K19 - 0x58300014, // 003C LDCONST R12 K20 + 0x8C281518, // 003B GETMET R10 R10 K24 + 0x58300019, // 003C LDCONST R12 K25 0x7C280400, // 003D CALL R10 2 0x542E003F, // 003E LDINT R11 64 0x7C180A00, // 003F CALL R6 5 0x78060003, // 0040 JMPF R1 #0045 0x541E000E, // 0041 LDINT R7 15 - 0x401E2007, // 0042 CONNECT R7 K16 R7 + 0x401E2A07, // 0042 CONNECT R7 K21 R7 0x941C0C07, // 0043 GETIDX R7 R6 R7 0x70020002, // 0044 JMP #0048 0x541E001E, // 0045 LDINT R7 31 - 0x401E2007, // 0046 CONNECT R7 K16 R7 + 0x401E2A07, // 0046 CONNECT R7 K21 R7 0x941C0C07, // 0047 GETIDX R7 R6 R7 - 0x90022A07, // 0048 SETMBR R0 K21 R7 + 0x90023407, // 0048 SETMBR R0 K26 R7 0x78060004, // 0049 JMPF R1 #004F 0x541E000F, // 004A LDINT R7 16 0x5422001E, // 004B LDINT R8 31 @@ -323,37 +330,37 @@ be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */ 0x5422003E, // 0050 LDINT R8 63 0x401C0E08, // 0051 CONNECT R7 R7 R8 0x941C0C07, // 0052 GETIDX R7 R6 R7 - 0x90022C07, // 0053 SETMBR R0 K22 R7 - 0x8C1C0B12, // 0054 GETMET R7 R5 K18 - 0x8824010D, // 0055 GETMBR R9 R0 K13 + 0x90023607, // 0053 SETMBR R0 K27 R7 + 0x8C1C0B17, // 0054 GETMET R7 R5 K23 + 0x88240112, // 0055 GETMBR R9 R0 K18 0x60280015, // 0056 GETGBL R10 G21 0x7C280000, // 0057 CALL R10 0 0x602C0015, // 0058 GETGBL R11 G21 0x7C2C0000, // 0059 CALL R11 0 - 0x8C2C1713, // 005A GETMET R11 R11 K19 - 0x58340018, // 005B LDCONST R13 K24 + 0x8C2C1718, // 005A GETMET R11 R11 K24 + 0x5834001D, // 005B LDCONST R13 K29 0x7C2C0400, // 005C CALL R11 2 0x5432001F, // 005D LDINT R12 32 0x7C1C0A00, // 005E CALL R7 5 - 0x90022E07, // 005F SETMBR R0 K23 R7 - 0x8C1C071A, // 0060 GETMET R7 R3 K26 - 0x88240115, // 0061 GETMBR R9 R0 K21 + 0x90023807, // 005F SETMBR R0 K28 R7 + 0x8C1C071F, // 0060 GETMET R7 R3 K31 + 0x8824011A, // 0061 GETMBR R9 R0 K26 0x7C1C0400, // 0062 CALL R7 2 - 0x8C1C0F1B, // 0063 GETMET R7 R7 K27 - 0x88240109, // 0064 GETMBR R9 R0 K9 + 0x8C1C0F20, // 0063 GETMET R7 R7 K32 + 0x88240105, // 0064 GETMBR R9 R0 K5 0x7C1C0400, // 0065 CALL R7 2 - 0x8C1C0F0E, // 0066 GETMET R7 R7 K14 + 0x8C1C0F13, // 0066 GETMET R7 R7 K19 0x7C1C0200, // 0067 CALL R7 1 - 0x90023207, // 0068 SETMBR R0 K25 R7 - 0x8C1C071A, // 0069 GETMET R7 R3 K26 - 0x88240116, // 006A GETMBR R9 R0 K22 + 0x90023C07, // 0068 SETMBR R0 K30 R7 + 0x8C1C071F, // 0069 GETMET R7 R3 K31 + 0x8824011B, // 006A GETMBR R9 R0 K27 0x7C1C0400, // 006B CALL R7 2 - 0x8C1C0F1B, // 006C GETMET R7 R7 K27 - 0x88240108, // 006D GETMBR R9 R0 K8 + 0x8C1C0F20, // 006C GETMET R7 R7 K32 + 0x8824010F, // 006D GETMBR R9 R0 K15 0x7C1C0400, // 006E CALL R7 2 - 0x8C1C0F0E, // 006F GETMET R7 R7 K14 + 0x8C1C0F13, // 006F GETMET R7 R7 K19 0x7C1C0200, // 0070 CALL R7 1 - 0x90023807, // 0071 SETMBR R0 K28 R7 + 0x90024207, // 0071 SETMBR R0 K33 R7 0x80000000, // 0072 RET 0 }) ) @@ -368,40 +375,31 @@ be_local_closure(class_SPAKE2P_Matter_init, /* name */ be_nested_proto( 7, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(M), - /* K1 */ be_nested_str_weak(fromhex), - /* K2 */ be_nested_str_weak(spake_M_hex), - /* K3 */ be_nested_str_weak(N), - /* K4 */ be_nested_str_weak(spake_N_hex), - /* K5 */ be_nested_str_weak(w0), - /* K6 */ be_nested_str_weak(w1), - /* K7 */ be_nested_str_weak(L), - }), + &be_ktab_class_SPAKE2P_Matter, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60100015, // 0000 GETGBL R4 G21 0x7C100000, // 0001 CALL R4 0 - 0x8C100901, // 0002 GETMET R4 R4 K1 - 0x88180102, // 0003 GETMBR R6 R0 K2 + 0x8C100922, // 0002 GETMET R4 R4 K34 + 0x88180123, // 0003 GETMBR R6 R0 K35 0x7C100400, // 0004 CALL R4 2 - 0x90020004, // 0005 SETMBR R0 K0 R4 + 0x90021C04, // 0005 SETMBR R0 K14 R4 0x60100015, // 0006 GETGBL R4 G21 0x7C100000, // 0007 CALL R4 0 - 0x8C100901, // 0008 GETMET R4 R4 K1 - 0x88180104, // 0009 GETMBR R6 R0 K4 + 0x8C100922, // 0008 GETMET R4 R4 K34 + 0x88180124, // 0009 GETMBR R6 R0 K36 0x7C100400, // 000A CALL R4 2 - 0x90020604, // 000B SETMBR R0 K3 R4 - 0x90020A01, // 000C SETMBR R0 K5 R1 - 0x90020C02, // 000D SETMBR R0 K6 R2 - 0x90020E03, // 000E SETMBR R0 K7 R3 + 0x90021004, // 000B SETMBR R0 K8 R4 + 0x90020E01, // 000C SETMBR R0 K7 R1 + 0x90024A02, // 000D SETMBR R0 K37 R2 + 0x90024C03, // 000E SETMBR R0 K38 R3 0x80000000, // 000F RET 0 }) ) @@ -416,23 +414,13 @@ be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_nested_str_weak(EC_P256), - /* K3 */ be_nested_str_weak(x), - /* K4 */ be_nested_str_weak(mod), - /* K5 */ be_nested_str_weak(pA), - /* K6 */ be_nested_str_weak(muladd), - /* K7 */ be_nested_str_weak(w0), - /* K8 */ be_nested_str_weak(M), - }), + &be_ktab_class_SPAKE2P_Matter, /* shared constants */ be_str_weak(compute_pA), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -449,16 +437,16 @@ be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */ 0x8C100704, // 000A GETMET R4 R3 K4 0x5C180200, // 000B MOVE R6 R1 0x7C100400, // 000C CALL R4 2 - 0x90020604, // 000D SETMBR R0 K3 R4 + 0x90024E04, // 000D SETMBR R0 K39 R4 0x8C100706, // 000E GETMET R4 R3 K6 0x88180107, // 000F GETMBR R6 R0 K7 - 0x881C0108, // 0010 GETMBR R7 R0 K8 - 0x88200103, // 0011 GETMBR R8 R0 K3 + 0x881C010E, // 0010 GETMBR R7 R0 K14 + 0x88200127, // 0011 GETMBR R8 R0 K39 0x60240015, // 0012 GETGBL R9 G21 0x7C240000, // 0013 CALL R9 0 0x7C100A00, // 0014 CALL R4 5 - 0x90020A04, // 0015 SETMBR R0 K5 R4 - 0x88100105, // 0016 GETMBR R4 R0 K5 + 0x90021E04, // 0015 SETMBR R0 K15 R4 + 0x8810010F, // 0016 GETMBR R4 R0 K15 0x80040800, // 0017 RET 1 R4 }) ) @@ -473,17 +461,13 @@ be_local_closure(class_SPAKE2P_Matter_set_context, /* name */ be_nested_proto( 5, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(Context), - /* K1 */ be_nested_str_weak(A), - /* K2 */ be_nested_str_weak(B), - }), + &be_ktab_class_SPAKE2P_Matter, /* shared constants */ be_str_weak(set_context), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -499,9 +483,9 @@ be_local_closure(class_SPAKE2P_Matter_set_context, /* name */ 0x60100015, // 0009 GETGBL R4 G21 0x7C100000, // 000A CALL R4 0 0x5C0C0800, // 000B MOVE R3 R4 - 0x90020001, // 000C SETMBR R0 K0 R1 - 0x90020202, // 000D SETMBR R0 K1 R2 - 0x90020403, // 000E SETMBR R0 K2 R3 + 0x90021601, // 000C SETMBR R0 K11 R1 + 0x90021802, // 000D SETMBR R0 K12 R2 + 0x90021A03, // 000E SETMBR R0 K13 R3 0x80000000, // 000F RET 0 }) ) @@ -516,55 +500,41 @@ be_local_closure(class_SPAKE2P_Matter_compute_ZV_verifier, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(EC_P256), - /* K2 */ be_nested_str_weak(pA), - /* K3 */ be_nested_str_weak(neg), - /* K4 */ be_nested_str_weak(w0), - /* K5 */ be_nested_str_weak(muladd), - /* K6 */ be_nested_str_weak(01), - /* K7 */ be_nested_str_weak(M), - /* K8 */ be_nested_str_weak(Z), - /* K9 */ be_nested_str_weak(mul), - /* K10 */ be_nested_str_weak(y), - /* K11 */ be_nested_str_weak(V), - /* K12 */ be_nested_str_weak(L), - }), + &be_ktab_class_SPAKE2P_Matter, /* shared constants */ be_str_weak(compute_ZV_verifier), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x8C0C0502, // 0001 GETMET R3 R2 K2 0x7C0C0200, // 0002 CALL R3 1 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x8C100703, // 0004 GETMET R4 R3 K3 - 0x88180104, // 0005 GETMBR R6 R0 K4 + 0x90021E01, // 0003 SETMBR R0 K15 R1 + 0x8C100728, // 0004 GETMET R4 R3 K40 + 0x88180107, // 0005 GETMBR R6 R0 K7 0x7C100400, // 0006 CALL R4 2 - 0x8C140705, // 0007 GETMET R5 R3 K5 + 0x8C140706, // 0007 GETMET R5 R3 K6 0x601C0015, // 0008 GETGBL R7 G21 - 0x58200006, // 0009 LDCONST R8 K6 + 0x58200029, // 0009 LDCONST R8 K41 0x7C1C0200, // 000A CALL R7 1 - 0x88200102, // 000B GETMBR R8 R0 K2 + 0x8820010F, // 000B GETMBR R8 R0 K15 0x5C240800, // 000C MOVE R9 R4 - 0x88280107, // 000D GETMBR R10 R0 K7 + 0x8828010E, // 000D GETMBR R10 R0 K14 0x7C140A00, // 000E CALL R5 5 - 0x8C180709, // 000F GETMET R6 R3 K9 - 0x8820010A, // 0010 GETMBR R8 R0 K10 + 0x8C18072A, // 000F GETMET R6 R3 K42 + 0x88200103, // 0010 GETMBR R8 R0 K3 0x5C240A00, // 0011 MOVE R9 R5 0x7C180600, // 0012 CALL R6 3 - 0x90021006, // 0013 SETMBR R0 K8 R6 - 0x8C180709, // 0014 GETMET R6 R3 K9 - 0x8820010A, // 0015 GETMBR R8 R0 K10 - 0x8824010C, // 0016 GETMBR R9 R0 K12 + 0x90022006, // 0013 SETMBR R0 K16 R6 + 0x8C18072A, // 0014 GETMET R6 R3 K42 + 0x88200103, // 0015 GETMBR R8 R0 K3 + 0x88240126, // 0016 GETMBR R9 R0 K38 0x7C180600, // 0017 CALL R6 3 - 0x90021606, // 0018 SETMBR R0 K11 R6 + 0x90022206, // 0018 SETMBR R0 K17 R6 0x80000000, // 0019 RET 0 }) ) @@ -579,55 +549,41 @@ be_local_closure(class_SPAKE2P_Matter_compute_ZV_prover, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(EC_P256), - /* K2 */ be_nested_str_weak(pB), - /* K3 */ be_nested_str_weak(neg), - /* K4 */ be_nested_str_weak(w0), - /* K5 */ be_nested_str_weak(muladd), - /* K6 */ be_nested_str_weak(01), - /* K7 */ be_nested_str_weak(N), - /* K8 */ be_nested_str_weak(Z), - /* K9 */ be_nested_str_weak(mul), - /* K10 */ be_nested_str_weak(x), - /* K11 */ be_nested_str_weak(V), - /* K12 */ be_nested_str_weak(w1), - }), + &be_ktab_class_SPAKE2P_Matter, /* shared constants */ be_str_weak(compute_ZV_prover), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x8C0C0502, // 0001 GETMET R3 R2 K2 0x7C0C0200, // 0002 CALL R3 1 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x8C100703, // 0004 GETMET R4 R3 K3 - 0x88180104, // 0005 GETMBR R6 R0 K4 + 0x90020A01, // 0003 SETMBR R0 K5 R1 + 0x8C100728, // 0004 GETMET R4 R3 K40 + 0x88180107, // 0005 GETMBR R6 R0 K7 0x7C100400, // 0006 CALL R4 2 - 0x8C140705, // 0007 GETMET R5 R3 K5 + 0x8C140706, // 0007 GETMET R5 R3 K6 0x601C0015, // 0008 GETGBL R7 G21 - 0x58200006, // 0009 LDCONST R8 K6 + 0x58200029, // 0009 LDCONST R8 K41 0x7C1C0200, // 000A CALL R7 1 - 0x88200102, // 000B GETMBR R8 R0 K2 + 0x88200105, // 000B GETMBR R8 R0 K5 0x5C240800, // 000C MOVE R9 R4 - 0x88280107, // 000D GETMBR R10 R0 K7 + 0x88280108, // 000D GETMBR R10 R0 K8 0x7C140A00, // 000E CALL R5 5 - 0x8C180709, // 000F GETMET R6 R3 K9 - 0x8820010A, // 0010 GETMBR R8 R0 K10 + 0x8C18072A, // 000F GETMET R6 R3 K42 + 0x88200127, // 0010 GETMBR R8 R0 K39 0x5C240A00, // 0011 MOVE R9 R5 0x7C180600, // 0012 CALL R6 3 - 0x90021006, // 0013 SETMBR R0 K8 R6 - 0x8C180709, // 0014 GETMET R6 R3 K9 - 0x8820010C, // 0015 GETMBR R8 R0 K12 + 0x90022006, // 0013 SETMBR R0 K16 R6 + 0x8C18072A, // 0014 GETMET R6 R3 K42 + 0x88200125, // 0015 GETMBR R8 R0 K37 0x5C240A00, // 0016 MOVE R9 R5 0x7C180600, // 0017 CALL R6 3 - 0x90021606, // 0018 SETMBR R0 K11 R6 + 0x90022206, // 0018 SETMBR R0 K17 R6 0x80000000, // 0019 RET 0 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h index eac9e7551..5632678a0 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h @@ -3,6 +3,14 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'dyn' ktab size: 4, total: 7 (saved 24 bytes) +static const bvalue be_ktab_class_dyn[4] = { + /* K0 */ be_nested_str(_attr), + /* K1 */ be_nested_str(tostring), + /* K2 */ be_nested_str(contains), + /* K3 */ be_nested_str(undefined), +}; + extern const bclass be_class_dyn; @@ -13,16 +21,13 @@ be_local_closure(class_dyn_tostring, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_attr), - /* K1 */ be_nested_str(tostring), - }), + &be_ktab_class_dyn, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -43,22 +48,18 @@ be_local_closure(class_dyn_member, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_attr), - /* K1 */ be_nested_str(contains), - /* K2 */ be_nested_str(undefined), - }), + &be_ktab_class_dyn, /* shared constants */ &be_const_str_member, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x780A0003, // 0004 JMPF R2 #0009 @@ -66,7 +67,7 @@ be_local_closure(class_dyn_member, /* name */ 0x94080401, // 0006 GETIDX R2 R2 R1 0x80040400, // 0007 RET 1 R2 0x70020001, // 0008 JMP #000B - 0xA40A0400, // 0009 IMPORT R2 K2 + 0xA40A0600, // 0009 IMPORT R2 K3 0x80040400, // 000A RET 1 R2 0x80000000, // 000B RET 0 }) @@ -82,15 +83,13 @@ be_local_closure(class_dyn_setmember, /* name */ be_nested_proto( 4, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(_attr), - }), + &be_ktab_class_dyn, /* shared constants */ &be_const_str_setmember, &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ @@ -110,15 +109,13 @@ be_local_closure(class_dyn_init, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(_attr), - }), + &be_ktab_class_dyn, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h index 00a7cfcfe..65197633d 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h @@ -3,6 +3,61 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'hue_bridge_monad' ktab size: 51, total: 85 (saved 272 bytes) +static const bvalue be_ktab_class_hue_bridge_monad[51] = { + /* K0 */ be_nested_str(hue_ntv), + /* K1 */ be_nested_str(lights), + /* K2 */ be_nested_str(contains), + /* K3 */ be_nested_str(full_state), + /* K4 */ be_nested_str(light), + /* K5 */ be_nested_str(name), + /* K6 */ be_nested_str(model), + /* K7 */ be_nested_str(manuf), + /* K8 */ be_nested_str(light_state), + /* K9 */ be_nested_str(int), + /* K10 */ be_nested_str(value_error), + /* K11 */ be_nested_str(id_X20must_X20be_X20of_X20type_X20_X27int_X27), + /* K12 */ be_nested_str(light_X20must_X20be_X20of_X20class_X20_X27light_state_X27), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str(missing_X20name), + /* K15 */ be_nested_str(Unknown), + /* K16 */ be_nested_str(Tasmota), + /* K17 */ be_nested_str(remove), + /* K18 */ be_nested_str(json), + /* K19 */ be_nested_str(keys), + /* K20 */ be_nested_str(full_status), + /* K21 */ be_nested_str(_X22), + /* K22 */ be_nested_str(_X22_X3A), + /* K23 */ be_nested_str(push), + /* K24 */ be_nested_str(stop_iteration), + /* K25 */ be_nested_str(concat), + /* K26 */ be_nested_str(_X2C), + /* K27 */ be_nested_str(load), + /* K28 */ be_nested_str(tasmota), + /* K29 */ be_nested_str(log), + /* K30 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20), + /* K31 */ be_const_int(3), + /* K32 */ be_nested_str(on), + /* K33 */ be_nested_str(set_power), + /* K34 */ be_nested_str(xy), + /* K35 */ be_const_int(0), + /* K36 */ be_const_int(1), + /* K37 */ be_nested_str(set_xy), + /* K38 */ be_nested_str(hue), + /* K39 */ be_nested_str(sat), + /* K40 */ be_nested_str(type), + /* K41 */ be_nested_str(set_hue16sat), + /* K42 */ be_nested_str(ct), + /* K43 */ be_nested_str(set_ct), + /* K44 */ be_nested_str(bri), + /* K45 */ be_nested_str(set_bri), + /* K46 */ be_nested_str(_X2Flights_X2F), + /* K47 */ be_nested_str(_X2Fstate_X2F), + /* K48 */ be_nested_str(success), + /* K49 */ be_nested_str(signal_change), + /* K50 */ be_nested_str(dump), +}; + extern const bclass be_class_hue_bridge_monad; @@ -13,22 +68,13 @@ be_local_closure(class_hue_bridge_monad_full_status, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(hue_ntv), - /* K1 */ be_nested_str(lights), - /* K2 */ be_nested_str(contains), - /* K3 */ be_nested_str(full_state), - /* K4 */ be_nested_str(light), - /* K5 */ be_nested_str(name), - /* K6 */ be_nested_str(model), - /* K7 */ be_nested_str(manuf), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_full_status, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ @@ -62,19 +108,13 @@ be_local_closure(class_hue_bridge_monad_hue_status, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(hue_ntv), - /* K1 */ be_nested_str(lights), - /* K2 */ be_nested_str(contains), - /* K3 */ be_nested_str(light_state), - /* K4 */ be_nested_str(light), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_hue_status, &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -84,7 +124,7 @@ be_local_closure(class_hue_bridge_monad_hue_status, /* name */ 0x5C140200, // 0003 MOVE R5 R1 0x7C0C0400, // 0004 CALL R3 2 0x780E0005, // 0005 JMPF R3 #000C - 0x8C0C0503, // 0006 GETMET R3 R2 K3 + 0x8C0C0508, // 0006 GETMET R3 R2 K8 0x88140101, // 0007 GETMBR R5 R0 K1 0x94140A01, // 0008 GETIDX R5 R5 R1 0x94140B04, // 0009 GETIDX R5 R5 K4 @@ -104,43 +144,28 @@ be_local_closure(class_hue_bridge_monad_add_light, /* name */ be_nested_proto( 10, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str(int), - /* K1 */ be_nested_str(value_error), - /* K2 */ be_nested_str(id_X20must_X20be_X20of_X20type_X20_X27int_X27), - /* K3 */ be_nested_str(light_state), - /* K4 */ be_nested_str(light_X20must_X20be_X20of_X20class_X20_X27light_state_X27), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str(missing_X20name), - /* K7 */ be_nested_str(Unknown), - /* K8 */ be_nested_str(Tasmota), - /* K9 */ be_nested_str(lights), - /* K10 */ be_nested_str(light), - /* K11 */ be_nested_str(name), - /* K12 */ be_nested_str(model), - /* K13 */ be_nested_str(manuf), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_add_light, &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ 0x60180004, // 0000 GETGBL R6 G4 0x5C1C0200, // 0001 MOVE R7 R1 0x7C180200, // 0002 CALL R6 1 - 0x20180D00, // 0003 NE R6 R6 K0 + 0x20180D09, // 0003 NE R6 R6 K9 0x781A0000, // 0004 JMPF R6 #0006 - 0xB0060302, // 0005 RAISE 1 K1 K2 + 0xB006150B, // 0005 RAISE 1 K10 K11 0x6018000F, // 0006 GETGBL R6 G15 0x5C1C0400, // 0007 MOVE R7 R2 - 0xB8220600, // 0008 GETNGBL R8 K3 + 0xB8221000, // 0008 GETNGBL R8 K8 0x7C180400, // 0009 CALL R6 2 0x741A0000, // 000A JMPT R6 #000C - 0xB0060304, // 000B RAISE 1 K1 K4 + 0xB006150C, // 000B RAISE 1 K10 K12 0x60180008, // 000C GETGBL R6 G8 0x5C1C0600, // 000D MOVE R7 R3 0x7C180200, // 000E CALL R6 1 @@ -148,28 +173,28 @@ be_local_closure(class_hue_bridge_monad_add_light, /* name */ 0x6018000C, // 0010 GETGBL R6 G12 0x5C1C0600, // 0011 MOVE R7 R3 0x7C180200, // 0012 CALL R6 1 - 0x1C180D05, // 0013 EQ R6 R6 K5 + 0x1C180D0D, // 0013 EQ R6 R6 K13 0x781A0000, // 0014 JMPF R6 #0016 - 0xB0060306, // 0015 RAISE 1 K1 K6 + 0xB006150E, // 0015 RAISE 1 K10 K14 0x5C180800, // 0016 MOVE R6 R4 0x741A0000, // 0017 JMPT R6 #0019 - 0x58100007, // 0018 LDCONST R4 K7 + 0x5810000F, // 0018 LDCONST R4 K15 0x5C180A00, // 0019 MOVE R6 R5 0x741A0000, // 001A JMPT R6 #001C - 0x58140008, // 001B LDCONST R5 K8 - 0x88180109, // 001C GETMBR R6 R0 K9 + 0x58140010, // 001B LDCONST R5 K16 + 0x88180101, // 001C GETMBR R6 R0 K1 0x601C0013, // 001D GETGBL R7 G19 0x7C1C0000, // 001E CALL R7 0 - 0x981E1402, // 001F SETIDX R7 K10 R2 - 0x981E1603, // 0020 SETIDX R7 K11 R3 + 0x981E0802, // 001F SETIDX R7 K4 R2 + 0x981E0A03, // 0020 SETIDX R7 K5 R3 0x60200008, // 0021 GETGBL R8 G8 0x5C240800, // 0022 MOVE R9 R4 0x7C200200, // 0023 CALL R8 1 - 0x981E1808, // 0024 SETIDX R7 K12 R8 + 0x981E0C08, // 0024 SETIDX R7 K6 R8 0x60200008, // 0025 GETGBL R8 G8 0x5C240A00, // 0026 MOVE R9 R5 0x7C200200, // 0027 CALL R8 1 - 0x981E1A08, // 0028 SETIDX R7 K13 R8 + 0x981E0E08, // 0028 SETIDX R7 K7 R8 0x98180207, // 0029 SETIDX R6 R1 R7 0x80040400, // 002A RET 1 R2 }) @@ -185,21 +210,18 @@ be_local_closure(class_hue_bridge_monad_remove_light, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(lights), - /* K1 */ be_nested_str(remove), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_remove_light, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080511, // 0001 GETMET R2 R2 K17 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 @@ -216,21 +238,19 @@ be_local_closure(class_hue_bridge_monad_init, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(lights), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x60040013, // 0000 GETGBL R1 G19 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x90020201, // 0002 SETMBR R0 K1 R1 0x80000000, // 0003 RET 0 }) ) @@ -245,65 +265,52 @@ be_local_closure(class_hue_bridge_monad_discover, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(hue_ntv), - /* K1 */ be_nested_str(json), - /* K2 */ be_nested_str(lights), - /* K3 */ be_nested_str(keys), - /* K4 */ be_nested_str(full_status), - /* K5 */ be_nested_str(_X22), - /* K6 */ be_nested_str(_X22_X3A), - /* K7 */ be_nested_str(push), - /* K8 */ be_nested_str(stop_iteration), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str(concat), - /* K11 */ be_nested_str(_X2C), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_discover, &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 + 0xA40A2400, // 0001 IMPORT R2 K18 0x600C0012, // 0002 GETGBL R3 G18 0x7C0C0000, // 0003 CALL R3 0 0x60100010, // 0004 GETGBL R4 G16 - 0x88140102, // 0005 GETMBR R5 R0 K2 - 0x8C140B03, // 0006 GETMET R5 R5 K3 + 0x88140101, // 0005 GETMBR R5 R0 K1 + 0x8C140B13, // 0006 GETMET R5 R5 K19 0x7C140200, // 0007 CALL R5 1 0x7C100200, // 0008 CALL R4 1 0xA802000F, // 0009 EXBLK 0 #001A 0x5C140800, // 000A MOVE R5 R4 0x7C140000, // 000B CALL R5 0 - 0x8C180104, // 000C GETMET R6 R0 K4 + 0x8C180114, // 000C GETMET R6 R0 K20 0x5C200A00, // 000D MOVE R8 R5 0x7C180400, // 000E CALL R6 2 0x781A0008, // 000F JMPF R6 #0019 0x601C0008, // 0010 GETGBL R7 G8 0x5C200A00, // 0011 MOVE R8 R5 0x7C1C0200, // 0012 CALL R7 1 - 0x001E0A07, // 0013 ADD R7 K5 R7 - 0x001C0F06, // 0014 ADD R7 R7 K6 + 0x001E2A07, // 0013 ADD R7 K21 R7 + 0x001C0F16, // 0014 ADD R7 R7 K22 0x00180E06, // 0015 ADD R6 R7 R6 - 0x8C1C0707, // 0016 GETMET R7 R3 K7 + 0x8C1C0717, // 0016 GETMET R7 R3 K23 0x5C240C00, // 0017 MOVE R9 R6 0x7C1C0400, // 0018 CALL R7 2 0x7001FFEF, // 0019 JMP #000A - 0x58100008, // 001A LDCONST R4 K8 + 0x58100018, // 001A LDCONST R4 K24 0xAC100200, // 001B CATCH R4 1 0 0xB0080000, // 001C RAISE 2 R0 R0 0x6010000C, // 001D GETGBL R4 G12 0x5C140600, // 001E MOVE R5 R3 0x7C100200, // 001F CALL R4 1 - 0x24100909, // 0020 GT R4 R4 K9 + 0x2410090D, // 0020 GT R4 R4 K13 0x78120003, // 0021 JMPF R4 #0026 - 0x8C10070A, // 0022 GETMET R4 R3 K10 - 0x5818000B, // 0023 LDCONST R6 K11 + 0x8C100719, // 0022 GETMET R4 R3 K25 + 0x5818001A, // 0023 LDCONST R6 K26 0x7C100400, // 0024 CALL R4 2 0x80040800, // 0025 RET 1 R4 0x80000000, // 0026 RET 0 @@ -320,38 +327,33 @@ be_local_closure(class_hue_bridge_monad_light_to_id, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(lights), - /* K1 */ be_nested_str(keys), - /* K2 */ be_nested_str(light), - /* K3 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_light_to_id, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x8C0C0701, // 0002 GETMET R3 R3 K1 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C0C0713, // 0002 GETMET R3 R3 K19 0x7C0C0200, // 0003 CALL R3 1 0x7C080200, // 0004 CALL R2 1 0xA8020009, // 0005 EXBLK 0 #0010 0x5C0C0400, // 0006 MOVE R3 R2 0x7C0C0000, // 0007 CALL R3 0 - 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x88100101, // 0008 GETMBR R4 R0 K1 0x94100803, // 0009 GETIDX R4 R4 R3 - 0x94100902, // 000A GETIDX R4 R4 K2 + 0x94100904, // 000A GETIDX R4 R4 K4 0x1C100204, // 000B EQ R4 R1 R4 0x78120001, // 000C JMPF R4 #000F 0xA8040001, // 000D EXBLK 1 1 0x80040600, // 000E RET 1 R3 0x7001FFF5, // 000F JMP #0006 - 0x58080003, // 0010 LDCONST R2 K3 + 0x58080018, // 0010 LDCONST R2 K24 0xAC080200, // 0011 CATCH R2 1 0 0xB0080000, // 0012 RAISE 2 R0 R0 0x80000000, // 0013 RET 0 @@ -368,49 +370,17 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ be_nested_proto( 18, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(lights), - /* K2 */ be_nested_str(contains), - /* K3 */ be_nested_str(light), - /* K4 */ be_nested_str(load), - /* K5 */ be_nested_str(tasmota), - /* K6 */ be_nested_str(log), - /* K7 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str(on), - /* K10 */ be_nested_str(set_power), - /* K11 */ be_nested_str(xy), - /* K12 */ be_const_int(0), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str(set_xy), - /* K15 */ be_nested_str(hue), - /* K16 */ be_nested_str(sat), - /* K17 */ be_nested_str(type), - /* K18 */ be_nested_str(set_hue16sat), - /* K19 */ be_nested_str(ct), - /* K20 */ be_nested_str(set_ct), - /* K21 */ be_nested_str(bri), - /* K22 */ be_nested_str(set_bri), - /* K23 */ be_nested_str(keys), - /* K24 */ be_nested_str(_X2Flights_X2F), - /* K25 */ be_nested_str(_X2Fstate_X2F), - /* K26 */ be_nested_str(success), - /* K27 */ be_nested_str(push), - /* K28 */ be_nested_str(stop_iteration), - /* K29 */ be_nested_str(signal_change), - /* K30 */ be_nested_str(dump), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_cmd, &be_const_str_solidified, ( &(const binstruction[167]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 + 0xA40E2400, // 0000 IMPORT R3 K18 0x88100101, // 0001 GETMBR R4 R0 K1 0x8C100902, // 0002 GETMET R4 R4 K2 0x5C180200, // 0003 MOVE R6 R1 @@ -419,128 +389,128 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x80000800, // 0006 RET 0 0x88100101, // 0007 GETMBR R4 R0 K1 0x94100801, // 0008 GETIDX R4 R4 R1 - 0x94100903, // 0009 GETIDX R4 R4 K3 + 0x94100904, // 0009 GETIDX R4 R4 K4 0x60140013, // 000A GETGBL R5 G19 0x7C140000, // 000B CALL R5 0 - 0x8C180704, // 000C GETMET R6 R3 K4 + 0x8C18071B, // 000C GETMET R6 R3 K27 0x5C200400, // 000D MOVE R8 R2 0x7C180400, // 000E CALL R6 2 0x4C1C0000, // 000F LDNIL R7 0x1C1C0407, // 0010 EQ R7 R2 R7 0x781E0008, // 0011 JMPF R7 #001B - 0xB81E0A00, // 0012 GETNGBL R7 K5 - 0x8C1C0F06, // 0013 GETMET R7 R7 K6 + 0xB81E3800, // 0012 GETNGBL R7 K28 + 0x8C1C0F1D, // 0013 GETMET R7 R7 K29 0x60240008, // 0014 GETGBL R9 G8 0x5C280400, // 0015 MOVE R10 R2 0x7C240200, // 0016 CALL R9 1 - 0x00260E09, // 0017 ADD R9 K7 R9 - 0x58280008, // 0018 LDCONST R10 K8 + 0x00263C09, // 0017 ADD R9 K30 R9 + 0x5828001F, // 0018 LDCONST R10 K31 0x7C1C0600, // 0019 CALL R7 3 0x80000E00, // 001A RET 0 0x8C1C0D02, // 001B GETMET R7 R6 K2 - 0x58240009, // 001C LDCONST R9 K9 + 0x58240020, // 001C LDCONST R9 K32 0x7C1C0400, // 001D CALL R7 2 0x781E0006, // 001E JMPF R7 #0026 0x601C0017, // 001F GETGBL R7 G23 - 0x94200D09, // 0020 GETIDX R8 R6 K9 + 0x94200D20, // 0020 GETIDX R8 R6 K32 0x7C1C0200, // 0021 CALL R7 1 - 0x98161207, // 0022 SETIDX R5 K9 R7 - 0x8C20090A, // 0023 GETMET R8 R4 K10 + 0x98164007, // 0022 SETIDX R5 K32 R7 + 0x8C200921, // 0023 GETMET R8 R4 K33 0x5C280E00, // 0024 MOVE R10 R7 0x7C200400, // 0025 CALL R8 2 0x8C1C0D02, // 0026 GETMET R7 R6 K2 - 0x5824000B, // 0027 LDCONST R9 K11 + 0x58240022, // 0027 LDCONST R9 K34 0x7C1C0400, // 0028 CALL R7 2 0x781E0013, // 0029 JMPF R7 #003E - 0x941C0D0B, // 002A GETIDX R7 R6 K11 + 0x941C0D22, // 002A GETIDX R7 R6 K34 0x6020000A, // 002B GETGBL R8 G10 - 0x94240F0C, // 002C GETIDX R9 R7 K12 + 0x94240F23, // 002C GETIDX R9 R7 K35 0x7C200200, // 002D CALL R8 1 0x6024000A, // 002E GETGBL R9 G10 - 0x94280F0D, // 002F GETIDX R10 R7 K13 + 0x94280F24, // 002F GETIDX R10 R7 K36 0x7C240200, // 0030 CALL R9 1 0x60280012, // 0031 GETGBL R10 G18 0x7C280000, // 0032 CALL R10 0 0x402C1408, // 0033 CONNECT R11 R10 R8 0x402C1409, // 0034 CONNECT R11 R10 R9 - 0x9816160A, // 0035 SETIDX R5 K11 R10 + 0x9816440A, // 0035 SETIDX R5 K34 R10 0x542AFFFF, // 0036 LDINT R10 65536 0x0820100A, // 0037 MUL R8 R8 R10 0x542AFFFF, // 0038 LDINT R10 65536 0x0824120A, // 0039 MUL R9 R9 R10 - 0x8C28090E, // 003A GETMET R10 R4 K14 + 0x8C280925, // 003A GETMET R10 R4 K37 0x5C301000, // 003B MOVE R12 R8 0x5C341200, // 003C MOVE R13 R9 0x7C280600, // 003D CALL R10 3 0x501C0000, // 003E LDBOOL R7 0 0 - 0x8820090F, // 003F GETMBR R8 R4 K15 - 0x88240910, // 0040 GETMBR R9 R4 K16 + 0x88200926, // 003F GETMBR R8 R4 K38 + 0x88240927, // 0040 GETMBR R9 R4 K39 0x8C280D02, // 0041 GETMET R10 R6 K2 - 0x5830000F, // 0042 LDCONST R12 K15 + 0x58300026, // 0042 LDCONST R12 K38 0x7C280400, // 0043 CALL R10 2 0x782A0009, // 0044 JMPF R10 #004F 0x60280009, // 0045 GETGBL R10 G9 - 0x942C0D0F, // 0046 GETIDX R11 R6 K15 + 0x942C0D26, // 0046 GETIDX R11 R6 K38 0x7C280200, // 0047 CALL R10 1 0x5C201400, // 0048 MOVE R8 R10 - 0x98161E08, // 0049 SETIDX R5 K15 R8 + 0x98164C08, // 0049 SETIDX R5 K38 R8 0x542AFFFE, // 004A LDINT R10 65535 0x2428100A, // 004B GT R10 R8 R10 0x782A0000, // 004C JMPF R10 #004E 0x5422FFFE, // 004D LDINT R8 65535 0x501C0200, // 004E LDBOOL R7 1 0 0x8C280D02, // 004F GETMET R10 R6 K2 - 0x58300010, // 0050 LDCONST R12 K16 + 0x58300027, // 0050 LDCONST R12 K39 0x7C280400, // 0051 CALL R10 2 0x782A000C, // 0052 JMPF R10 #0060 0x60280009, // 0053 GETGBL R10 G9 - 0x942C0D10, // 0054 GETIDX R11 R6 K16 + 0x942C0D27, // 0054 GETIDX R11 R6 K39 0x7C280200, // 0055 CALL R10 1 0x5C241400, // 0056 MOVE R9 R10 - 0x98162009, // 0057 SETIDX R5 K16 R9 + 0x98164E09, // 0057 SETIDX R5 K39 R9 0x542A00FD, // 0058 LDINT R10 254 0x2828120A, // 0059 GE R10 R9 R10 0x782A0000, // 005A JMPF R10 #005C 0x542600FE, // 005B LDINT R9 255 - 0x88280911, // 005C GETMBR R10 R4 K17 - 0x28281508, // 005D GE R10 R10 K8 + 0x88280928, // 005C GETMBR R10 R4 K40 + 0x2828151F, // 005D GE R10 R10 K31 0x782A0000, // 005E JMPF R10 #0060 0x501C0200, // 005F LDBOOL R7 1 0 0x781E0003, // 0060 JMPF R7 #0065 - 0x8C280912, // 0061 GETMET R10 R4 K18 + 0x8C280929, // 0061 GETMET R10 R4 K41 0x5C301000, // 0062 MOVE R12 R8 0x5C341200, // 0063 MOVE R13 R9 0x7C280600, // 0064 CALL R10 3 0x8C280D02, // 0065 GETMET R10 R6 K2 - 0x58300013, // 0066 LDCONST R12 K19 + 0x5830002A, // 0066 LDCONST R12 K42 0x7C280400, // 0067 CALL R10 2 0x782A0006, // 0068 JMPF R10 #0070 0x60280009, // 0069 GETGBL R10 G9 - 0x942C0D13, // 006A GETIDX R11 R6 K19 + 0x942C0D2A, // 006A GETIDX R11 R6 K42 0x7C280200, // 006B CALL R10 1 - 0x9816260A, // 006C SETIDX R5 K19 R10 - 0x8C2C0914, // 006D GETMET R11 R4 K20 + 0x9816540A, // 006C SETIDX R5 K42 R10 + 0x8C2C092B, // 006D GETMET R11 R4 K43 0x5C341400, // 006E MOVE R13 R10 0x7C2C0400, // 006F CALL R11 2 0x8C280D02, // 0070 GETMET R10 R6 K2 - 0x58300015, // 0071 LDCONST R12 K21 + 0x5830002C, // 0071 LDCONST R12 K44 0x7C280400, // 0072 CALL R10 2 0x782A000A, // 0073 JMPF R10 #007F 0x60280009, // 0074 GETGBL R10 G9 - 0x942C0D15, // 0075 GETIDX R11 R6 K21 + 0x942C0D2C, // 0075 GETIDX R11 R6 K44 0x7C280200, // 0076 CALL R10 1 - 0x98162A0A, // 0077 SETIDX R5 K21 R10 + 0x9816580A, // 0077 SETIDX R5 K44 R10 0x542E00FD, // 0078 LDINT R11 254 0x282C140B, // 0079 GE R11 R10 R11 0x782E0000, // 007A JMPF R11 #007C 0x542A00FE, // 007B LDINT R10 255 - 0x8C2C0916, // 007C GETMET R11 R4 K22 + 0x8C2C092D, // 007C GETMET R11 R4 K45 0x5C341400, // 007D MOVE R13 R10 0x7C2C0400, // 007E CALL R11 2 0x60280012, // 007F GETGBL R10 G18 0x7C280000, // 0080 CALL R10 0 0x602C0010, // 0081 GETGBL R11 G16 - 0x8C300B17, // 0082 GETMET R12 R5 K23 + 0x8C300B13, // 0082 GETMET R12 R5 K19 0x7C300200, // 0083 CALL R12 1 0x7C2C0200, // 0084 CALL R11 1 0xA8020012, // 0085 EXBLK 0 #0099 @@ -549,8 +519,8 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x60340008, // 0088 GETGBL R13 G8 0x5C380200, // 0089 MOVE R14 R1 0x7C340200, // 008A CALL R13 1 - 0x0036300D, // 008B ADD R13 K24 R13 - 0x00341B19, // 008C ADD R13 R13 K25 + 0x00365C0D, // 008B ADD R13 K46 R13 + 0x00341B2F, // 008C ADD R13 R13 K47 0x00341A0C, // 008D ADD R13 R13 R12 0x60380013, // 008E GETGBL R14 G19 0x7C380000, // 008F CALL R14 0 @@ -558,22 +528,22 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x7C3C0000, // 0091 CALL R15 0 0x94400A0C, // 0092 GETIDX R16 R5 R12 0x983C1A10, // 0093 SETIDX R15 R13 R16 - 0x983A340F, // 0094 SETIDX R14 K26 R15 - 0x8C3C151B, // 0095 GETMET R15 R10 K27 + 0x983A600F, // 0094 SETIDX R14 K48 R15 + 0x8C3C1517, // 0095 GETMET R15 R10 K23 0x5C441C00, // 0096 MOVE R17 R14 0x7C3C0400, // 0097 CALL R15 2 0x7001FFEC, // 0098 JMP #0086 - 0x582C001C, // 0099 LDCONST R11 K28 + 0x582C0018, // 0099 LDCONST R11 K24 0xAC2C0200, // 009A CATCH R11 1 0 0xB0080000, // 009B RAISE 2 R0 R0 0x602C000C, // 009C GETGBL R11 G12 0x5C301400, // 009D MOVE R12 R10 0x7C2C0200, // 009E CALL R11 1 - 0x242C170C, // 009F GT R11 R11 K12 + 0x242C1723, // 009F GT R11 R11 K35 0x782E0001, // 00A0 JMPF R11 #00A3 - 0x8C2C091D, // 00A1 GETMET R11 R4 K29 + 0x8C2C0931, // 00A1 GETMET R11 R4 K49 0x7C2C0200, // 00A2 CALL R11 1 - 0x8C2C071E, // 00A3 GETMET R11 R3 K30 + 0x8C2C0732, // 00A3 GETMET R11 R3 K50 0x5C341400, // 00A4 MOVE R13 R10 0x7C2C0400, // 00A5 CALL R11 2 0x80041600, // 00A6 RET 1 R11 @@ -590,53 +560,44 @@ be_local_closure(class_hue_bridge_monad_groups, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(lights), - /* K1 */ be_nested_str(keys), - /* K2 */ be_nested_str(push), - /* K3 */ be_nested_str(_X22), - /* K4 */ be_nested_str(stop_iteration), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str(concat), - /* K7 */ be_nested_str(_X2C), - }), + &be_ktab_class_hue_bridge_monad, /* shared constants */ &be_const_str_groups, &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ 0x60040012, // 0000 GETGBL R1 G18 0x7C040000, // 0001 CALL R1 0 0x60080010, // 0002 GETGBL R2 G16 - 0x880C0100, // 0003 GETMBR R3 R0 K0 - 0x8C0C0701, // 0004 GETMET R3 R3 K1 + 0x880C0101, // 0003 GETMBR R3 R0 K1 + 0x8C0C0713, // 0004 GETMET R3 R3 K19 0x7C0C0200, // 0005 CALL R3 1 0x7C080200, // 0006 CALL R2 1 0xA8020009, // 0007 EXBLK 0 #0012 0x5C0C0400, // 0008 MOVE R3 R2 0x7C0C0000, // 0009 CALL R3 0 - 0x8C100302, // 000A GETMET R4 R1 K2 + 0x8C100317, // 000A GETMET R4 R1 K23 0x60180008, // 000B GETGBL R6 G8 0x5C1C0600, // 000C MOVE R7 R3 0x7C180200, // 000D CALL R6 1 - 0x001A0606, // 000E ADD R6 K3 R6 - 0x00180D03, // 000F ADD R6 R6 K3 + 0x001A2A06, // 000E ADD R6 K21 R6 + 0x00180D15, // 000F ADD R6 R6 K21 0x7C100400, // 0010 CALL R4 2 0x7001FFF5, // 0011 JMP #0008 - 0x58080004, // 0012 LDCONST R2 K4 + 0x58080018, // 0012 LDCONST R2 K24 0xAC080200, // 0013 CATCH R2 1 0 0xB0080000, // 0014 RAISE 2 R0 R0 0x6008000C, // 0015 GETGBL R2 G12 0x5C0C0200, // 0016 MOVE R3 R1 0x7C080200, // 0017 CALL R2 1 - 0x24080505, // 0018 GT R2 R2 K5 + 0x2408050D, // 0018 GT R2 R2 K13 0x780A0003, // 0019 JMPF R2 #001E - 0x8C080306, // 001A GETMET R2 R1 K6 - 0x58100007, // 001B LDCONST R4 K7 + 0x8C080319, // 001A GETMET R2 R1 K25 + 0x5810001A, // 001B LDCONST R4 K26 0x7C080400, // 001C CALL R2 2 0x80040400, // 001D RET 1 R2 0x80000000, // 001E RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h index 2f6e49d3c..300573634 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h @@ -3,6 +3,54 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'AXP192' ktab size: 44, total: 82 (saved 304 bytes) +static const bvalue be_ktab_class_AXP192[44] = { + /* K0 */ be_const_int(1), + /* K1 */ be_nested_str(write_bit), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(2), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str(read24), + /* K6 */ be_const_real_hex(0x3A102DE1), + /* K7 */ be_nested_str(read12), + /* K8 */ be_const_real_hex(0x3A902DE0), + /* K9 */ be_const_real_hex(0x3EC00000), + /* K10 */ be_const_int(1), + /* K11 */ be_const_int(2), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_str(wire), + /* K14 */ be_nested_str(read), + /* K15 */ be_nested_str(addr), + /* K16 */ be_const_real_hex(0x3AB78035), + /* K17 */ be_const_real_hex(0x3ADED28A), + /* K18 */ be_const_int(0), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str(write8), + /* K21 */ be_nested_str(read8), + /* K22 */ be_nested_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D), + /* K23 */ be_nested_str(get_vbus_voltage), + /* K24 */ be_nested_str(get_bat_voltage), + /* K25 */ be_nested_str(get_bat_current), + /* K26 */ be_nested_str(get_temp), + /* K27 */ be_nested_str(tasmota), + /* K28 */ be_nested_str(response_append), + /* K29 */ be_nested_str(I2C_Driver), + /* K30 */ be_nested_str(init), + /* K31 */ be_nested_str(AXP192), + /* K32 */ be_nested_str(read13), + /* K33 */ be_const_real_hex(0x3F000000), + /* K34 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), + /* K35 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), + /* K36 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), + /* K37 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), + /* K38 */ be_nested_str(_X7Bs_X7DAXP_X20Temperature_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D), + /* K39 */ be_nested_str(web_send_decimal), + /* K40 */ be_const_real_hex(0x3DCCCCCD), + /* K41 */ be_const_real_hex(0x4310B333), + /* K42 */ be_const_int(1), + /* K43 */ be_const_real_hex(0x3F000000), +}; + extern const bclass be_class_AXP192; @@ -13,19 +61,13 @@ be_local_closure(class_AXP192_set_dcdc_enable, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(1), - /* K1 */ be_nested_str(write_bit), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(3), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_set_dcdc_enable, &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ @@ -64,23 +106,20 @@ be_local_closure(class_AXP192_get_bat_power, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read24), - /* K1 */ be_const_real_hex(0x3A102DE0), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_bat_power, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040105, // 0000 GETMET R1 R0 K5 0x540E006F, // 0001 LDINT R3 112 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040306, // 0003 MUL R1 R1 K6 0x80040200, // 0004 RET 1 R1 }) ) @@ -95,23 +134,20 @@ be_local_closure(class_AXP192_get_bat_voltage, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3A902DE0), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_bat_voltage, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E0077, // 0001 LDINT R3 120 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040308, // 0003 MUL R1 R1 K8 0x80040200, // 0004 RET 1 R1 }) ) @@ -126,23 +162,20 @@ be_local_closure(class_AXP192_get_vbus_current, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3EC00000), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_vbus_current, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E005B, // 0001 LDINT R3 92 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040309, // 0003 MUL R1 R1 K9 0x80040200, // 0004 RET 1 R1 }) ) @@ -157,23 +190,20 @@ be_local_closure(class_AXP192_get_warning_level, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_int(1), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_warning_level, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E0046, // 0001 LDINT R3 71 0x7C040400, // 0002 CALL R1 2 - 0x2C040301, // 0003 AND R1 R1 K1 + 0x2C04030A, // 0003 AND R1 R1 K10 0x80040200, // 0004 RET 1 R1 }) ) @@ -188,32 +218,28 @@ be_local_closure(class_AXP192_set_ldo_enable, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_nested_str(write_bit), - /* K2 */ be_const_int(3), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_set_ldo_enable, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x1C0C030B, // 0000 EQ R3 R1 K11 0x780E0004, // 0001 JMPF R3 #0007 0x8C0C0101, // 0002 GETMET R3 R0 K1 0x54160011, // 0003 LDINT R5 18 - 0x58180000, // 0004 LDCONST R6 K0 + 0x5818000B, // 0004 LDCONST R6 K11 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 - 0x1C0C0302, // 0007 EQ R3 R1 K2 + 0x1C0C030C, // 0007 EQ R3 R1 K12 0x780E0004, // 0008 JMPF R3 #000E 0x8C0C0101, // 0009 GETMET R3 R0 K1 0x54160011, // 000A LDINT R5 18 - 0x58180002, // 000B LDCONST R6 K2 + 0x5818000C, // 000B LDCONST R6 K12 0x5C1C0400, // 000C MOVE R7 R2 0x7C0C0800, // 000D CALL R3 4 0x80000000, // 000E RET 0 @@ -230,27 +256,21 @@ be_local_closure(class_AXP192_get_input_power_status, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_input_power_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140004, // 0004 LDCONST R5 K4 + 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8C04030E, // 0001 GETMET R1 R1 K14 + 0x880C010F, // 0002 GETMBR R3 R0 K15 + 0x58100002, // 0003 LDCONST R4 K2 + 0x58140000, // 0004 LDCONST R5 K0 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -266,23 +286,20 @@ be_local_closure(class_AXP192_get_aps_voltage, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3AB78035), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_aps_voltage, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E007D, // 0001 LDINT R3 126 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040310, // 0003 MUL R1 R1 K16 0x80040200, // 0004 RET 1 R1 }) ) @@ -297,19 +314,17 @@ be_local_closure(class_AXP192_set_exten, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(write_bit), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_set_exten, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080101, // 0000 GETMET R2 R0 K1 0x54120011, // 0001 LDINT R4 18 0x54160005, // 0002 LDINT R5 6 0x5C180200, // 0003 MOVE R6 R1 @@ -328,26 +343,21 @@ be_local_closure(class_AXP192_battery_present, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_battery_present, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140003, // 0004 LDCONST R5 K3 + 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8C04030E, // 0001 GETMET R1 R1 K14 + 0x880C010F, // 0002 GETMBR R3 R0 K15 + 0x58100000, // 0003 LDCONST R4 K0 + 0x58140000, // 0004 LDCONST R5 K0 0x7C040800, // 0005 CALL R1 4 0x540A001F, // 0006 LDINT R2 32 0x2C040202, // 0007 AND R1 R1 R2 @@ -371,23 +381,20 @@ be_local_closure(class_AXP192_get_vbus_voltage, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3ADED28A), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_vbus_voltage, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E0059, // 0001 LDINT R3 90 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040311, // 0003 MUL R1 R1 K17 0x80040200, // 0004 RET 1 R1 }) ) @@ -402,39 +409,34 @@ be_local_closure(class_AXP192_write_gpio, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str(write_bit), - /* K3 */ be_const_int(3), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_write_gpio, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x280C0300, // 0000 GE R3 R1 K0 + 0x280C0312, // 0000 GE R3 R1 K18 0x780E0007, // 0001 JMPF R3 #000A - 0x180C0301, // 0002 LE R3 R1 K1 + 0x180C0303, // 0002 LE R3 R1 K3 0x780E0005, // 0003 JMPF R3 #000A - 0x8C0C0102, // 0004 GETMET R3 R0 K2 + 0x8C0C0101, // 0004 GETMET R3 R0 K1 0x54160093, // 0005 LDINT R5 148 0x5C180200, // 0006 MOVE R6 R1 0x5C1C0400, // 0007 MOVE R7 R2 0x7C0C0800, // 0008 CALL R3 4 0x70020009, // 0009 JMP #0014 - 0x280C0303, // 000A GE R3 R1 K3 + 0x280C0313, // 000A GE R3 R1 K19 0x780E0007, // 000B JMPF R3 #0014 0x540E0003, // 000C LDINT R3 4 0x180C0203, // 000D LE R3 R1 R3 0x780E0004, // 000E JMPF R3 #0014 - 0x8C0C0102, // 000F GETMET R3 R0 K2 + 0x8C0C0101, // 000F GETMET R3 R0 K1 0x54160095, // 0010 LDINT R5 150 - 0x04180303, // 0011 SUB R6 R1 K3 + 0x04180313, // 0011 SUB R6 R1 K19 0x5C1C0400, // 0012 MOVE R7 R2 0x7C0C0800, // 0013 CALL R3 4 0x80000000, // 0014 RET 0 @@ -451,18 +453,13 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_nested_str(write8), - /* K2 */ be_nested_str(read8), - /* K3 */ be_const_int(3), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_set_ldo_voltage, &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ @@ -476,11 +473,11 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ 0x54120011, // 0007 LDINT R4 18 0x040C0604, // 0008 SUB R3 R3 R4 0x5C080600, // 0009 MOVE R2 R3 - 0x1C0C0300, // 000A EQ R3 R1 K0 + 0x1C0C0303, // 000A EQ R3 R1 K3 0x780E000C, // 000B JMPF R3 #0019 - 0x8C0C0101, // 000C GETMET R3 R0 K1 + 0x8C0C0114, // 000C GETMET R3 R0 K20 0x54160027, // 000D LDINT R5 40 - 0x8C180102, // 000E GETMET R6 R0 K2 + 0x8C180115, // 000E GETMET R6 R0 K21 0x54220027, // 000F LDINT R8 40 0x7C180400, // 0010 CALL R6 2 0x541E000E, // 0011 LDINT R7 15 @@ -491,11 +488,11 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ 0x381C0E08, // 0016 SHL R7 R7 R8 0x30180C07, // 0017 OR R6 R6 R7 0x7C0C0600, // 0018 CALL R3 3 - 0x1C0C0303, // 0019 EQ R3 R1 K3 + 0x1C0C030C, // 0019 EQ R3 R1 K12 0x780E000A, // 001A JMPF R3 #0026 - 0x8C0C0101, // 001B GETMET R3 R0 K1 + 0x8C0C0114, // 001B GETMET R3 R0 K20 0x54160027, // 001C LDINT R5 40 - 0x8C180102, // 001D GETMET R6 R0 K2 + 0x8C180115, // 001D GETMET R6 R0 K21 0x54220027, // 001E LDINT R8 40 0x7C180400, // 001F CALL R6 2 0x541E00EF, // 0020 LDINT R7 240 @@ -518,44 +515,35 @@ be_local_closure(class_AXP192_json_append, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D), - /* K2 */ be_nested_str(get_vbus_voltage), - /* K3 */ be_nested_str(get_bat_voltage), - /* K4 */ be_nested_str(get_bat_current), - /* K5 */ be_nested_str(get_temp), - /* K6 */ be_nested_str(tasmota), - /* K7 */ be_nested_str(response_append), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_json_append, &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010D, // 0000 GETMBR R1 R0 K13 0x74060001, // 0001 JMPT R1 #0004 0x4C040000, // 0002 LDNIL R1 0x80040200, // 0003 RET 1 R1 0x60040018, // 0004 GETGBL R1 G24 - 0x58080001, // 0005 LDCONST R2 K1 - 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x58080016, // 0005 LDCONST R2 K22 + 0x8C0C0117, // 0006 GETMET R3 R0 K23 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100102, // 0008 GETMET R4 R0 K2 + 0x8C100117, // 0008 GETMET R4 R0 K23 0x7C100200, // 0009 CALL R4 1 - 0x8C140103, // 000A GETMET R5 R0 K3 + 0x8C140118, // 000A GETMET R5 R0 K24 0x7C140200, // 000B CALL R5 1 - 0x8C180104, // 000C GETMET R6 R0 K4 + 0x8C180119, // 000C GETMET R6 R0 K25 0x7C180200, // 000D CALL R6 1 - 0x8C1C0105, // 000E GETMET R7 R0 K5 + 0x8C1C011A, // 000E GETMET R7 R0 K26 0x7C1C0200, // 000F CALL R7 1 0x7C040C00, // 0010 CALL R1 6 - 0xB80A0C00, // 0011 GETNGBL R2 K6 - 0x8C080507, // 0012 GETMET R2 R2 K7 + 0xB80A3600, // 0011 GETNGBL R2 K27 + 0x8C08051C, // 0012 GETMET R2 R2 K28 0x5C100200, // 0013 MOVE R4 R1 0x7C080400, // 0014 CALL R2 2 0x80000000, // 0015 RET 0 @@ -572,26 +560,22 @@ be_local_closure(class_AXP192_init, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(I2C_Driver), - /* K1 */ be_nested_str(init), - /* K2 */ be_nested_str(AXP192), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E0000, // 0002 GETNGBL R3 K0 + 0xB80E3A00, // 0002 GETNGBL R3 K29 0x7C040400, // 0003 CALL R1 2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x580C0002, // 0005 LDCONST R3 K2 + 0x8C04031E, // 0004 GETMET R1 R1 K30 + 0x580C001F, // 0005 LDCONST R3 K31 0x54120033, // 0006 LDINT R4 52 0x7C040600, // 0007 CALL R1 3 0x80000000, // 0008 RET 0 @@ -608,27 +592,24 @@ be_local_closure(class_AXP192_get_bat_current, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read13), - /* K1 */ be_const_real_hex(0x3F000000), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_bat_current, &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040120, // 0000 GETMET R1 R0 K32 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x8C080100, // 0003 GETMET R2 R0 K0 + 0x8C080120, // 0003 GETMET R2 R0 K32 0x5412007B, // 0004 LDINT R4 124 0x7C080400, // 0005 CALL R2 2 0x04040202, // 0006 SUB R1 R1 R2 - 0x08040301, // 0007 MUL R1 R1 K1 + 0x08040321, // 0007 MUL R1 R1 K33 0x80040200, // 0008 RET 1 R1 }) ) @@ -643,51 +624,38 @@ be_local_closure(class_AXP192_web_sensor, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), - /* K2 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), - /* K3 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), - /* K4 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), - /* K5 */ be_nested_str(_X7Bs_X7DAXP_X20Temperature_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D), - /* K6 */ be_nested_str(get_vbus_voltage), - /* K7 */ be_nested_str(get_bat_voltage), - /* K8 */ be_nested_str(get_bat_current), - /* K9 */ be_nested_str(get_temp), - /* K10 */ be_nested_str(tasmota), - /* K11 */ be_nested_str(web_send_decimal), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_web_sensor, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010D, // 0000 GETMBR R1 R0 K13 0x74060001, // 0001 JMPT R1 #0004 0x4C040000, // 0002 LDNIL R1 0x80040200, // 0003 RET 1 R1 0x60040018, // 0004 GETGBL R1 G24 - 0x400A0302, // 0005 CONNECT R2 K1 K2 - 0x40080503, // 0006 CONNECT R2 R2 K3 - 0x40080504, // 0007 CONNECT R2 R2 K4 - 0x40080505, // 0008 CONNECT R2 R2 K5 - 0x8C0C0106, // 0009 GETMET R3 R0 K6 + 0x400A4523, // 0005 CONNECT R2 K34 K35 + 0x40080524, // 0006 CONNECT R2 R2 K36 + 0x40080525, // 0007 CONNECT R2 R2 K37 + 0x40080526, // 0008 CONNECT R2 R2 K38 + 0x8C0C0117, // 0009 GETMET R3 R0 K23 0x7C0C0200, // 000A CALL R3 1 - 0x8C100106, // 000B GETMET R4 R0 K6 + 0x8C100117, // 000B GETMET R4 R0 K23 0x7C100200, // 000C CALL R4 1 - 0x8C140107, // 000D GETMET R5 R0 K7 + 0x8C140118, // 000D GETMET R5 R0 K24 0x7C140200, // 000E CALL R5 1 - 0x8C180108, // 000F GETMET R6 R0 K8 + 0x8C180119, // 000F GETMET R6 R0 K25 0x7C180200, // 0010 CALL R6 1 - 0x8C1C0109, // 0011 GETMET R7 R0 K9 + 0x8C1C011A, // 0011 GETMET R7 R0 K26 0x7C1C0200, // 0012 CALL R7 1 0x7C040C00, // 0013 CALL R1 6 - 0xB80A1400, // 0014 GETNGBL R2 K10 - 0x8C08050B, // 0015 GETMET R2 R2 K11 + 0xB80A3600, // 0014 GETNGBL R2 K27 + 0x8C080527, // 0015 GETMET R2 R2 K39 0x5C100200, // 0016 MOVE R4 R1 0x7C080400, // 0017 CALL R2 2 0x80000000, // 0018 RET 0 @@ -704,22 +672,19 @@ be_local_closure(class_AXP192_set_chg_current, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(write8), - /* K1 */ be_nested_str(read8), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_set_chg_current, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080114, // 0000 GETMET R2 R0 K20 0x54120032, // 0001 LDINT R4 51 - 0x8C140101, // 0002 GETMET R5 R0 K1 + 0x8C140115, // 0002 GETMET R5 R0 K21 0x541E0032, // 0003 LDINT R7 51 0x7C140400, // 0004 CALL R5 2 0x541A00EF, // 0005 LDINT R6 240 @@ -742,25 +707,21 @@ be_local_closure(class_AXP192_get_temp, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3DCCCCCD), - /* K2 */ be_const_real_hex(0x4310B333), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_temp, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E005D, // 0001 LDINT R3 94 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x04040302, // 0004 SUB R1 R1 K2 + 0x08040328, // 0003 MUL R1 R1 K40 + 0x04040329, // 0004 SUB R1 R1 K41 0x80040200, // 0005 RET 1 R1 }) ) @@ -775,26 +736,19 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(1), - /* K1 */ be_const_int(3), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str(write8), - /* K5 */ be_nested_str(read8), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_set_dc_voltage, &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x140C0300, // 0000 LT R3 R1 K0 + 0x140C032A, // 0000 LT R3 R1 K42 0x740E0001, // 0001 JMPT R3 #0004 - 0x240C0301, // 0002 GT R3 R1 K1 + 0x240C0304, // 0002 GT R3 R1 K4 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 0x4C0C0000, // 0005 LDNIL R3 @@ -808,7 +762,7 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ 0x78120001, // 000D JMPF R4 #0010 0x540E006F, // 000E LDINT R3 112 0x7002000B, // 000F JMP #001C - 0x1C100303, // 0010 EQ R4 R1 K3 + 0x1C10030B, // 0010 EQ R4 R1 K11 0x78120004, // 0011 JMPF R4 #0017 0x541208E2, // 0012 LDINT R4 2275 0x24100404, // 0013 GT R4 R2 R4 @@ -821,16 +775,16 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ 0x0C100805, // 001A DIV R4 R4 R5 0x5C0C0800, // 001B MOVE R3 R4 0x54120025, // 001C LDINT R4 38 - 0x1C140301, // 001D EQ R5 R1 K1 + 0x1C140304, // 001D EQ R5 R1 K4 0x78160001, // 001E JMPF R5 #0021 0x54120026, // 001F LDINT R4 39 0x70020002, // 0020 JMP #0024 - 0x1C140303, // 0021 EQ R5 R1 K3 + 0x1C14030B, // 0021 EQ R5 R1 K11 0x78160000, // 0022 JMPF R5 #0024 0x54120022, // 0023 LDINT R4 35 - 0x8C140104, // 0024 GETMET R5 R0 K4 + 0x8C140114, // 0024 GETMET R5 R0 K20 0x5C1C0800, // 0025 MOVE R7 R4 - 0x8C200105, // 0026 GETMET R8 R0 K5 + 0x8C200115, // 0026 GETMET R8 R0 K21 0x5C280800, // 0027 MOVE R10 R4 0x7C200400, // 0028 CALL R8 2 0x5426007F, // 0029 LDINT R9 128 @@ -853,23 +807,20 @@ be_local_closure(class_AXP192_power_off, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(write_bit), - /* K1 */ be_const_int(1), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_power_off, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040101, // 0000 GETMET R1 R0 K1 0x540E0031, // 0001 LDINT R3 50 0x54120006, // 0002 LDINT R4 7 - 0x58140001, // 0003 LDCONST R5 K1 + 0x58140000, // 0003 LDCONST R5 K0 0x7C040800, // 0004 CALL R1 4 0x80000000, // 0005 RET 0 }) @@ -885,26 +836,21 @@ be_local_closure(class_AXP192_get_battery_chargin_status, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_battery_chargin_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140003, // 0004 LDCONST R5 K3 + 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8C04030E, // 0001 GETMET R1 R1 K14 + 0x880C010F, // 0002 GETMBR R3 R0 K15 + 0x58100000, // 0003 LDCONST R4 K0 + 0x58140000, // 0004 LDCONST R5 K0 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -920,23 +866,20 @@ be_local_closure(class_AXP192_get_bat_charge_current, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read13), - /* K1 */ be_const_real_hex(0x3F000000), - }), + &be_ktab_class_AXP192, /* shared constants */ &be_const_str_get_bat_charge_current, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040120, // 0000 GETMET R1 R0 K32 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x0804032B, // 0003 MUL R1 R1 K43 0x80040200, // 0004 RET 1 R1 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h index 041409b52..03870f2bc 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h @@ -3,6 +3,38 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'AXP202' ktab size: 28, total: 64 (saved 288 bytes) +static const bvalue be_ktab_class_AXP202[28] = { + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(2), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str(write8), + /* K5 */ be_nested_str(read8), + /* K6 */ be_nested_str(read12), + /* K7 */ be_const_real_hex(0x3EC00000), + /* K8 */ be_const_real_hex(0x3A902DE0), + /* K9 */ be_nested_str(read13), + /* K10 */ be_const_real_hex(0x3F000000), + /* K11 */ be_nested_str(read24), + /* K12 */ be_const_real_hex(0x3A102DE1), + /* K13 */ be_const_real_hex(0x3AB78035), + /* K14 */ be_const_real_hex(0x3ADED28A), + /* K15 */ be_nested_str(write_bit), + /* K16 */ be_nested_str(wire), + /* K17 */ be_nested_str(read), + /* K18 */ be_nested_str(addr), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str(I2C_Driver), + /* K21 */ be_nested_str(init), + /* K22 */ be_nested_str(AXP202), + /* K23 */ be_const_int(0), + /* K24 */ be_const_int(2), + /* K25 */ be_const_real_hex(0x3F000000), + /* K26 */ be_const_real_hex(0x3DCCCCCD), + /* K27 */ be_const_real_hex(0x4310B333), +}; + extern const bclass be_class_AXP202; @@ -13,20 +45,13 @@ be_local_closure(class_AXP202_set_shutdown_time, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(2), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str(write8), - /* K5 */ be_nested_str(read8), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_shutdown_time, &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ @@ -67,23 +92,20 @@ be_local_closure(class_AXP202_get_vbus_current, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3EC00000), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_vbus_current, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E005B, // 0001 LDINT R3 92 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040307, // 0003 MUL R1 R1 K7 0x80040200, // 0004 RET 1 R1 }) ) @@ -98,23 +120,20 @@ be_local_closure(class_AXP202_get_bat_voltage, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3A902DE0), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_bat_voltage, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E0077, // 0001 LDINT R3 120 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040308, // 0003 MUL R1 R1 K8 0x80040200, // 0004 RET 1 R1 }) ) @@ -129,27 +148,24 @@ be_local_closure(class_AXP202_get_bat_current, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read13), - /* K1 */ be_const_real_hex(0x3F000000), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_bat_current, &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040109, // 0000 GETMET R1 R0 K9 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x8C080100, // 0003 GETMET R2 R0 K0 + 0x8C080109, // 0003 GETMET R2 R0 K9 0x5412007B, // 0004 LDINT R4 124 0x7C080400, // 0005 CALL R2 2 0x04040202, // 0006 SUB R1 R1 R2 - 0x08040301, // 0007 MUL R1 R1 K1 + 0x0804030A, // 0007 MUL R1 R1 K10 0x80040200, // 0008 RET 1 R1 }) ) @@ -164,23 +180,20 @@ be_local_closure(class_AXP202_get_bat_power, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read24), - /* K1 */ be_const_real_hex(0x3A102DE0), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_bat_power, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010B, // 0000 GETMET R1 R0 K11 0x540E006F, // 0001 LDINT R3 112 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x0804030C, // 0003 MUL R1 R1 K12 0x80040200, // 0004 RET 1 R1 }) ) @@ -195,23 +208,20 @@ be_local_closure(class_AXP202_get_aps_voltage, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3AB78035), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_aps_voltage, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E007D, // 0001 LDINT R3 126 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x0804030D, // 0003 MUL R1 R1 K13 0x80040200, // 0004 RET 1 R1 }) ) @@ -226,23 +236,20 @@ be_local_closure(class_AXP202_get_vbus_voltage, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3ADED28A), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_vbus_voltage, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E0059, // 0001 LDINT R3 90 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x0804030E, // 0003 MUL R1 R1 K14 0x80040200, // 0004 RET 1 R1 }) ) @@ -257,30 +264,26 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_nested_str(write_bit), - /* K2 */ be_const_int(3), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_ldo_enable, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x1C0C0302, // 0000 EQ R3 R1 K2 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 + 0x8C0C010F, // 0002 GETMET R3 R0 K15 0x54160011, // 0003 LDINT R5 18 - 0x58180000, // 0004 LDCONST R6 K0 + 0x58180002, // 0004 LDCONST R6 K2 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 - 0x1C0C0302, // 0007 EQ R3 R1 K2 + 0x1C0C0303, // 0007 EQ R3 R1 K3 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C0101, // 0009 GETMET R3 R0 K1 + 0x8C0C010F, // 0009 GETMET R3 R0 K15 0x54160011, // 000A LDINT R5 18 0x541A0005, // 000B LDINT R6 6 0x5C1C0400, // 000C MOVE R7 R2 @@ -288,9 +291,9 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ 0x540E0003, // 000E LDINT R3 4 0x1C0C0203, // 000F EQ R3 R1 R3 0x780E0004, // 0010 JMPF R3 #0016 - 0x8C0C0101, // 0011 GETMET R3 R0 K1 + 0x8C0C010F, // 0011 GETMET R3 R0 K15 0x54160011, // 0012 LDINT R5 18 - 0x58180002, // 0013 LDCONST R6 K2 + 0x58180003, // 0013 LDCONST R6 K3 0x5C1C0400, // 0014 MOVE R7 R2 0x7C0C0800, // 0015 CALL R3 4 0x80000000, // 0016 RET 0 @@ -307,26 +310,21 @@ be_local_closure(class_AXP202_battery_present, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_battery_present, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140003, // 0004 LDCONST R5 K3 + 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x880C0112, // 0002 GETMBR R3 R0 K18 + 0x58100001, // 0003 LDCONST R4 K1 + 0x58140001, // 0004 LDCONST R5 K1 0x7C040800, // 0005 CALL R1 4 0x540A001F, // 0006 LDINT R2 32 0x2C040202, // 0007 AND R1 R1 R2 @@ -350,16 +348,13 @@ be_local_closure(class_AXP202_set_chg_current_ma, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(write8), - /* K1 */ be_nested_str(read8), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_chg_current_ma, &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -367,9 +362,9 @@ be_local_closure(class_AXP202_set_chg_current_ma, /* name */ 0x04080202, // 0001 SUB R2 R1 R2 0x540E0063, // 0002 LDINT R3 100 0x0C080403, // 0003 DIV R2 R2 R3 - 0x8C0C0100, // 0004 GETMET R3 R0 K0 + 0x8C0C0104, // 0004 GETMET R3 R0 K4 0x54160032, // 0005 LDINT R5 51 - 0x8C180101, // 0006 GETMET R6 R0 K1 + 0x8C180105, // 0006 GETMET R6 R0 K5 0x54220032, // 0007 LDINT R8 51 0x7C180400, // 0008 CALL R6 2 0x541E00EF, // 0009 LDINT R7 240 @@ -392,33 +387,28 @@ be_local_closure(class_AXP202_set_dcdc_enable, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_nested_str(write_bit), - /* K2 */ be_const_int(3), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_dcdc_enable, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x1C0C0302, // 0000 EQ R3 R1 K2 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 + 0x8C0C010F, // 0002 GETMET R3 R0 K15 0x54160011, // 0003 LDINT R5 18 0x541A0003, // 0004 LDINT R6 4 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 - 0x1C0C0302, // 0007 EQ R3 R1 K2 + 0x1C0C0303, // 0007 EQ R3 R1 K3 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C0101, // 0009 GETMET R3 R0 K1 + 0x8C0C010F, // 0009 GETMET R3 R0 K15 0x54160011, // 000A LDINT R5 18 - 0x58180003, // 000B LDCONST R6 K3 + 0x58180001, // 000B LDCONST R6 K1 0x5C1C0400, // 000C MOVE R7 R2 0x7C0C0800, // 000D CALL R3 4 0x80000000, // 000E RET 0 @@ -435,21 +425,17 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(read8), - /* K1 */ be_const_int(3), - /* K2 */ be_nested_str(write8), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_chg_led_mode, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080105, // 0000 GETMET R2 R0 K5 0x54120031, // 0001 LDINT R4 50 0x7C080400, // 0002 CALL R2 2 0x540E00CE, // 0003 LDINT R3 207 @@ -457,11 +443,11 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */ 0x54120007, // 0005 LDINT R4 8 0x300C0604, // 0006 OR R3 R3 R4 0x5C080600, // 0007 MOVE R2 R3 - 0x2C0C0301, // 0008 AND R3 R1 K1 + 0x2C0C0313, // 0008 AND R3 R1 K19 0x54120003, // 0009 LDINT R4 4 0x380C0604, // 000A SHL R3 R3 R4 0x30080403, // 000B OR R2 R2 R3 - 0x8C0C0102, // 000C GETMET R3 R0 K2 + 0x8C0C0104, // 000C GETMET R3 R0 K4 0x54160031, // 000D LDINT R5 50 0x5C180400, // 000E MOVE R6 R2 0x7C0C0600, // 000F CALL R3 3 @@ -479,26 +465,22 @@ be_local_closure(class_AXP202_init, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(I2C_Driver), - /* K1 */ be_nested_str(init), - /* K2 */ be_nested_str(AXP202), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E0000, // 0002 GETNGBL R3 K0 + 0xB80E2800, // 0002 GETNGBL R3 K20 0x7C040400, // 0003 CALL R1 2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x580C0002, // 0005 LDCONST R3 K2 + 0x8C040315, // 0004 GETMET R1 R1 K21 + 0x580C0016, // 0005 LDCONST R3 K22 0x54120034, // 0006 LDINT R4 53 0x7C040600, // 0007 CALL R1 3 0x80000000, // 0008 RET 0 @@ -515,22 +497,19 @@ be_local_closure(class_AXP202_set_exten, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(write_bit), - /* K1 */ be_const_int(0), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_exten, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08010F, // 0000 GETMET R2 R0 K15 0x54120011, // 0001 LDINT R4 18 - 0x58140001, // 0002 LDCONST R5 K1 + 0x58140017, // 0002 LDCONST R5 K23 0x5C180200, // 0003 MOVE R6 R1 0x7C080800, // 0004 CALL R2 4 0x80000000, // 0005 RET 0 @@ -547,26 +526,21 @@ be_local_closure(class_AXP202_get_battery_chargin_status, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_battery_chargin_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140003, // 0004 LDCONST R5 K3 + 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x880C0112, // 0002 GETMBR R3 R0 K18 + 0x58100001, // 0003 LDCONST R4 K1 + 0x58140001, // 0004 LDCONST R5 K1 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -582,39 +556,33 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_const_int(3), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(write8), - /* K4 */ be_nested_str(read8), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_dc_voltage, &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ - 0x140C0300, // 0000 LT R3 R1 K0 + 0x140C0318, // 0000 LT R3 R1 K24 0x740E0001, // 0001 JMPT R3 #0004 - 0x240C0301, // 0002 GT R3 R1 K1 + 0x240C0303, // 0002 GT R3 R1 K3 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 0x4C0C0000, // 0005 LDNIL R3 0x541202BB, // 0006 LDINT R4 700 0x14100404, // 0007 LT R4 R2 R4 0x78120001, // 0008 JMPF R4 #000B - 0x580C0002, // 0009 LDCONST R3 K2 + 0x580C0017, // 0009 LDCONST R3 K23 0x70020010, // 000A JMP #001C 0x54120DAB, // 000B LDINT R4 3500 0x24100404, // 000C GT R4 R2 R4 0x78120001, // 000D JMPF R4 #0010 0x540E006F, // 000E LDINT R3 112 0x7002000B, // 000F JMP #001C - 0x1C100300, // 0010 EQ R4 R1 K0 + 0x1C100318, // 0010 EQ R4 R1 K24 0x78120004, // 0011 JMPF R4 #0017 0x541208E2, // 0012 LDINT R4 2275 0x24100404, // 0013 GT R4 R2 R4 @@ -627,12 +595,12 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ 0x0C100805, // 001A DIV R4 R4 R5 0x5C0C0800, // 001B MOVE R3 R4 0x54120022, // 001C LDINT R4 35 - 0x1C140301, // 001D EQ R5 R1 K1 + 0x1C140303, // 001D EQ R5 R1 K3 0x78160000, // 001E JMPF R5 #0020 0x54120026, // 001F LDINT R4 39 - 0x8C140103, // 0020 GETMET R5 R0 K3 + 0x8C140104, // 0020 GETMET R5 R0 K4 0x5C1C0800, // 0021 MOVE R7 R4 - 0x8C200104, // 0022 GETMET R8 R0 K4 + 0x8C200105, // 0022 GETMET R8 R0 K5 0x5C280800, // 0023 MOVE R10 R4 0x7C200400, // 0024 CALL R8 2 0x5426007F, // 0025 LDINT R9 128 @@ -655,23 +623,20 @@ be_local_closure(class_AXP202_get_bat_charge_current, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read13), - /* K1 */ be_const_real_hex(0x3F000000), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_bat_charge_current, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040109, // 0000 GETMET R1 R0 K9 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 + 0x08040319, // 0003 MUL R1 R1 K25 0x80040200, // 0004 RET 1 R1 }) ) @@ -686,25 +651,21 @@ be_local_closure(class_AXP202_get_temp, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3DCCCCCD), - /* K2 */ be_const_real_hex(0x4310B333), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_temp, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E005D, // 0001 LDINT R3 94 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x04040302, // 0004 SUB R1 R1 K2 + 0x0804031A, // 0003 MUL R1 R1 K26 + 0x0404031B, // 0004 SUB R1 R1 K27 0x80040200, // 0005 RET 1 R1 }) ) @@ -719,17 +680,13 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_nested_str(write8), - /* K2 */ be_nested_str(read8), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_ldo_voltage, &be_const_str_solidified, ( &(const binstruction[59]) { /* code */ @@ -737,7 +694,7 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x240C0403, // 0001 GT R3 R2 R3 0x780E0000, // 0002 JMPF R3 #0004 0x540A000E, // 0003 LDINT R2 15 - 0x1C0C0300, // 0004 EQ R3 R1 K0 + 0x1C0C0302, // 0004 EQ R3 R1 K2 0x740E0002, // 0005 JMPT R3 #0009 0x540E0003, // 0006 LDINT R3 4 0x1C0C0203, // 0007 EQ R3 R1 R3 @@ -747,11 +704,11 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x54120011, // 000B LDINT R4 18 0x040C0604, // 000C SUB R3 R3 R4 0x5C080600, // 000D MOVE R2 R3 - 0x1C0C0300, // 000E EQ R3 R1 K0 + 0x1C0C0302, // 000E EQ R3 R1 K2 0x780E000D, // 000F JMPF R3 #001E - 0x8C0C0101, // 0010 GETMET R3 R0 K1 + 0x8C0C0104, // 0010 GETMET R3 R0 K4 0x54160027, // 0011 LDINT R5 40 - 0x8C180102, // 0012 GETMET R6 R0 K2 + 0x8C180105, // 0012 GETMET R6 R0 K5 0x54220027, // 0013 LDINT R8 40 0x7C180400, // 0014 CALL R6 2 0x541E000E, // 0015 LDINT R7 15 @@ -763,9 +720,9 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x30180C07, // 001B OR R6 R6 R7 0x7C0C0600, // 001C CALL R3 3 0x7002000A, // 001D JMP #0029 - 0x8C0C0101, // 001E GETMET R3 R0 K1 + 0x8C0C0104, // 001E GETMET R3 R0 K4 0x54160027, // 001F LDINT R5 40 - 0x8C180102, // 0020 GETMET R6 R0 K2 + 0x8C180105, // 0020 GETMET R6 R0 K5 0x54220027, // 0021 LDINT R8 40 0x7C180400, // 0022 CALL R6 2 0x541E00EF, // 0023 LDINT R7 240 @@ -780,9 +737,9 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x5412001B, // 002C LDINT R4 28 0x040C0604, // 002D SUB R3 R3 R4 0x5C080600, // 002E MOVE R2 R3 - 0x8C0C0101, // 002F GETMET R3 R0 K1 + 0x8C0C0104, // 002F GETMET R3 R0 K4 0x54160027, // 0030 LDINT R5 40 - 0x8C180102, // 0031 GETMET R6 R0 K2 + 0x8C180105, // 0031 GETMET R6 R0 K5 0x54220028, // 0032 LDINT R8 41 0x7C180400, // 0033 CALL R6 2 0x541E007F, // 0034 LDINT R7 128 @@ -805,26 +762,22 @@ be_local_closure(class_AXP202_set_limiting_off, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(write8), - /* K1 */ be_nested_str(read8), - /* K2 */ be_const_int(3), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_set_limiting_off, &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040104, // 0000 GETMET R1 R0 K4 0x540E002F, // 0001 LDINT R3 48 - 0x8C100101, // 0002 GETMET R4 R0 K1 + 0x8C100105, // 0002 GETMET R4 R0 K5 0x541A002F, // 0003 LDINT R6 48 0x7C100400, // 0004 CALL R4 2 - 0x30100902, // 0005 OR R4 R4 K2 + 0x30100903, // 0005 OR R4 R4 K3 0x7C040600, // 0006 CALL R1 3 0x80000000, // 0007 RET 0 }) @@ -840,27 +793,21 @@ be_local_closure(class_AXP202_get_input_power_status, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_AXP202, /* shared constants */ &be_const_str_get_input_power_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140004, // 0004 LDCONST R5 K4 + 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x880C0112, // 0002 GETMBR R3 R0 K18 + 0x58100017, // 0003 LDCONST R4 K23 + 0x58140001, // 0004 LDCONST R5 K1 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h index f1fb1901e..e397df9a1 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h @@ -3,6 +3,32 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'I2C_Driver' ktab size: 22, total: 60 (saved 304 bytes) +static const bvalue be_ktab_class_I2C_Driver[22] = { + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str(write8), + /* K3 */ be_nested_str(read8), + /* K4 */ be_nested_str(wire), + /* K5 */ be_nested_str(read_bytes), + /* K6 */ be_nested_str(addr), + /* K7 */ be_const_int(1), + /* K8 */ be_const_int(2), + /* K9 */ be_const_int(3), + /* K10 */ be_const_int(3), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str(tasmota), + /* K13 */ be_nested_str(i2c_enabled), + /* K14 */ be_nested_str(wire_scan), + /* K15 */ be_nested_str(function), + /* K16 */ be_nested_str(name), + /* K17 */ be_nested_str(I2C_X3A), + /* K18 */ be_nested_str(detected_X20on_X20bus), + /* K19 */ be_nested_str(bus), + /* K20 */ be_nested_str(write), + /* K21 */ be_nested_str(read), +}; + extern const bclass be_class_I2C_Driver; @@ -13,18 +39,13 @@ be_local_closure(class_I2C_Driver_write_bit, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str(write8), - /* K3 */ be_nested_str(read8), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_write_bit, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ @@ -67,42 +88,34 @@ be_local_closure(class_I2C_Driver_read32, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(2), - /* K6 */ be_const_int(3), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_read32, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080505, // 0001 GETMET R2 R2 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 0x541A0003, // 0004 LDINT R6 4 0x7C080800, // 0005 CALL R2 4 - 0x940C0503, // 0006 GETIDX R3 R2 K3 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120017, // 0007 LDINT R4 24 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100504, // 0009 GETIDX R4 R2 K4 + 0x94100507, // 0009 GETIDX R4 R2 K7 0x5416000F, // 000A LDINT R5 16 0x38100805, // 000B SHL R4 R4 R5 0x000C0604, // 000C ADD R3 R3 R4 - 0x94100505, // 000D GETIDX R4 R2 K5 + 0x94100508, // 000D GETIDX R4 R2 K8 0x54160007, // 000E LDINT R5 8 0x38100805, // 000F SHL R4 R4 R5 0x000C0604, // 0010 ADD R3 R3 R4 - 0x94100506, // 0011 GETIDX R4 R2 K6 + 0x94100509, // 0011 GETIDX R4 R2 K9 0x000C0604, // 0012 ADD R3 R3 R4 0x80040600, // 0013 RET 1 R3 }) @@ -118,33 +131,26 @@ be_local_closure(class_I2C_Driver_read13, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_read13, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080505, // 0001 GETMET R2 R2 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 + 0x58180008, // 0004 LDCONST R6 K8 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120004, // 0007 LDINT R4 5 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x94100507, // 0009 GETIDX R4 R2 K7 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -160,38 +166,30 @@ be_local_closure(class_I2C_Driver_read24, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(3), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - /* K6 */ be_const_int(2), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_read24, &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080505, // 0001 GETMET R2 R2 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 + 0x5818000A, // 0004 LDCONST R6 K10 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x5412000F, // 0007 LDINT R4 16 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x94100507, // 0009 GETIDX R4 R2 K7 0x54160007, // 000A LDINT R5 8 0x38100805, // 000B SHL R4 R4 R5 0x000C0604, // 000C ADD R3 R3 R4 - 0x94100506, // 000D GETIDX R4 R2 K6 + 0x9410050B, // 000D GETIDX R4 R2 K11 0x000C0604, // 000E ADD R3 R3 R4 0x80040600, // 000F RET 1 R3 }) @@ -207,33 +205,26 @@ be_local_closure(class_I2C_Driver_read14, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_read14, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080505, // 0001 GETMET R2 R2 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 + 0x58180008, // 0004 LDCONST R6 K8 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120005, // 0007 LDINT R4 6 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x94100507, // 0009 GETIDX R4 R2 K7 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -249,69 +240,58 @@ be_local_closure(class_I2C_Driver_init, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(i2c_enabled), - /* K2 */ be_nested_str(addr), - /* K3 */ be_nested_str(wire), - /* K4 */ be_nested_str(wire_scan), - /* K5 */ be_nested_str(function), - /* K6 */ be_nested_str(name), - /* K7 */ be_nested_str(I2C_X3A), - /* K8 */ be_nested_str(detected_X20on_X20bus), - /* K9 */ be_nested_str(bus), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ 0x4C100000, // 0000 LDNIL R4 0x20100604, // 0001 NE R4 R3 R4 0x78120005, // 0002 JMPF R4 #0009 - 0xB8120000, // 0003 GETNGBL R4 K0 - 0x8C100901, // 0004 GETMET R4 R4 K1 + 0xB8121800, // 0003 GETNGBL R4 K12 + 0x8C10090D, // 0004 GETMET R4 R4 K13 0x5C180600, // 0005 MOVE R6 R3 0x7C100400, // 0006 CALL R4 2 0x74120000, // 0007 JMPT R4 #0009 0x80000800, // 0008 RET 0 - 0x90020402, // 0009 SETMBR R0 K2 R2 - 0xB8120000, // 000A GETNGBL R4 K0 - 0x8C100904, // 000B GETMET R4 R4 K4 - 0x88180102, // 000C GETMBR R6 R0 K2 + 0x90020C02, // 0009 SETMBR R0 K6 R2 + 0xB8121800, // 000A GETNGBL R4 K12 + 0x8C10090E, // 000B GETMET R4 R4 K14 + 0x88180106, // 000C GETMBR R6 R0 K6 0x7C100400, // 000D CALL R4 2 - 0x90020604, // 000E SETMBR R0 K3 R4 - 0x88100103, // 000F GETMBR R4 R0 K3 + 0x90020804, // 000E SETMBR R0 K4 R4 + 0x88100104, // 000F GETMBR R4 R0 K4 0x78120019, // 0010 JMPF R4 #002B 0x60100004, // 0011 GETGBL R4 G4 0x5C140200, // 0012 MOVE R5 R1 0x7C100200, // 0013 CALL R4 1 - 0x1C100905, // 0014 EQ R4 R4 K5 + 0x1C10090F, // 0014 EQ R4 R4 K15 0x78120004, // 0015 JMPF R4 #001B 0x5C100200, // 0016 MOVE R4 R1 0x5C140000, // 0017 MOVE R5 R0 0x7C100200, // 0018 CALL R4 1 - 0x90020C04, // 0019 SETMBR R0 K6 R4 + 0x90022004, // 0019 SETMBR R0 K16 R4 0x70020000, // 001A JMP #001C - 0x90020C01, // 001B SETMBR R0 K6 R1 - 0x88100106, // 001C GETMBR R4 R0 K6 + 0x90022001, // 001B SETMBR R0 K16 R1 + 0x88100110, // 001C GETMBR R4 R0 K16 0x4C140000, // 001D LDNIL R5 0x1C100805, // 001E EQ R4 R4 R5 0x78120001, // 001F JMPF R4 #0022 0x4C100000, // 0020 LDNIL R4 - 0x90020604, // 0021 SETMBR R0 K3 R4 - 0x88100103, // 0022 GETMBR R4 R0 K3 + 0x90020804, // 0021 SETMBR R0 K4 R4 + 0x88100104, // 0022 GETMBR R4 R0 K4 0x78120006, // 0023 JMPF R4 #002B 0x60100001, // 0024 GETGBL R4 G1 - 0x58140007, // 0025 LDCONST R5 K7 - 0x88180106, // 0026 GETMBR R6 R0 K6 - 0x581C0008, // 0027 LDCONST R7 K8 - 0x88200103, // 0028 GETMBR R8 R0 K3 - 0x88201109, // 0029 GETMBR R8 R8 K9 + 0x58140011, // 0025 LDCONST R5 K17 + 0x88180110, // 0026 GETMBR R6 R0 K16 + 0x581C0012, // 0027 LDCONST R7 K18 + 0x88200104, // 0028 GETMBR R8 R0 K4 + 0x88201113, // 0029 GETMBR R8 R8 K19 0x7C100800, // 002A CALL R4 4 0x80000000, // 002B RET 0 }) @@ -327,27 +307,22 @@ be_local_closure(class_I2C_Driver_write8, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(write), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_write8, &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x8C0C0714, // 0001 GETMET R3 R3 K20 + 0x88140106, // 0002 GETMBR R5 R0 K6 0x5C180200, // 0003 MOVE R6 R1 0x5C1C0400, // 0004 MOVE R7 R2 - 0x58200003, // 0005 LDCONST R8 K3 + 0x58200001, // 0005 LDCONST R8 K1 0x7C0C0A00, // 0006 CALL R3 5 0x80040600, // 0007 RET 1 R3 }) @@ -363,26 +338,21 @@ be_local_closure(class_I2C_Driver_read8, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_read8, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080515, // 0001 GETMET R2 R2 K21 + 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 + 0x58180007, // 0004 LDCONST R6 K7 0x7C080800, // 0005 CALL R2 4 0x80040400, // 0006 RET 1 R2 }) @@ -398,33 +368,26 @@ be_local_closure(class_I2C_Driver_read12, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_read12, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080505, // 0001 GETMET R2 R2 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 + 0x58180008, // 0004 LDCONST R6 K8 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120003, // 0007 LDINT R4 4 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x94100507, // 0009 GETIDX R4 R2 K7 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -440,33 +403,26 @@ be_local_closure(class_I2C_Driver_read16, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_I2C_Driver, /* shared constants */ &be_const_str_read16, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080505, // 0001 GETMET R2 R2 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 + 0x58180008, // 0004 LDCONST R6 K8 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120007, // 0007 LDINT R4 8 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x94100507, // 0009 GETIDX R4 R2 K7 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h index 3cdd11954..c94e04b1b 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h @@ -3,6 +3,32 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'FT3663' ktab size: 22, total: 25 (saved 24 bytes) +static const bvalue be_ktab_class_FT3663[22] = { + /* K0 */ be_nested_str(wire), + /* K1 */ be_nested_str(ts_loop), + /* K2 */ be_nested_str(init), + /* K3 */ be_nested_str(FT3663), + /* K4 */ be_nested_str(read8), + /* K5 */ be_nested_str(tasmota), + /* K6 */ be_nested_str(log), + /* K7 */ be_nested_str(I2C_X3A_X20ignoring_X20address_X200x38_X2C_X20not_X20FT3663), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str(TS_X20_X3A_X20FT3663_X20Touch_X20Screen_X20detected), + /* K10 */ be_nested_str(write8), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str(add_driver), + /* K13 */ be_nested_str(display), + /* K14 */ be_nested_str(read_bytes), + /* K15 */ be_nested_str(addr), + /* K16 */ be_const_int(2), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str(gest_id_codes), + /* K19 */ be_nested_str(find), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str(touch_update), +}; + extern const bclass be_class_FT3663; @@ -13,16 +39,13 @@ be_local_closure(class_FT3663_every_100ms, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(ts_loop), - }), + &be_ktab_class_FT3663, /* shared constants */ &be_const_str_every_100ms, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -44,42 +67,29 @@ be_local_closure(class_FT3663_init, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(FT3663), - /* K2 */ be_nested_str(wire), - /* K3 */ be_nested_str(read8), - /* K4 */ be_nested_str(tasmota), - /* K5 */ be_nested_str(log), - /* K6 */ be_nested_str(I2C_X3A_X20ignoring_X20address_X200x38_X2C_X20not_X20FT3663), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str(TS_X20_X3A_X20FT3663_X20Touch_X20Screen_X20detected), - /* K9 */ be_nested_str(write8), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str(add_driver), - }), + &be_ktab_class_FT3663, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x580C0001, // 0004 LDCONST R3 K1 + 0x8C040302, // 0003 GETMET R1 R1 K2 + 0x580C0003, // 0004 LDCONST R3 K3 0x54120037, // 0005 LDINT R4 56 0x7C040600, // 0006 CALL R1 3 - 0x88040102, // 0007 GETMBR R1 R0 K2 + 0x88040100, // 0007 GETMBR R1 R0 K0 0x78060027, // 0008 JMPF R1 #0031 - 0x8C040103, // 0009 GETMET R1 R0 K3 + 0x8C040104, // 0009 GETMET R1 R0 K4 0x540E00A7, // 000A LDINT R3 168 0x7C040400, // 000B CALL R1 2 - 0x8C080103, // 000C GETMET R2 R0 K3 + 0x8C080104, // 000C GETMET R2 R0 K4 0x541200A2, // 000D LDINT R4 163 0x7C080400, // 000E CALL R2 2 0x540E0010, // 000F LDINT R3 17 @@ -88,32 +98,32 @@ be_local_closure(class_FT3663_init, /* name */ 0x540E0063, // 0012 LDINT R3 100 0x200C0403, // 0013 NE R3 R2 R3 0x780E0007, // 0014 JMPF R3 #001D - 0xB80E0800, // 0015 GETNGBL R3 K4 - 0x8C0C0705, // 0016 GETMET R3 R3 K5 - 0x58140006, // 0017 LDCONST R5 K6 - 0x58180007, // 0018 LDCONST R6 K7 + 0xB80E0A00, // 0015 GETNGBL R3 K5 + 0x8C0C0706, // 0016 GETMET R3 R3 K6 + 0x58140007, // 0017 LDCONST R5 K7 + 0x58180008, // 0018 LDCONST R6 K8 0x7C0C0600, // 0019 CALL R3 3 0x4C0C0000, // 001A LDNIL R3 - 0x90020403, // 001B SETMBR R0 K2 R3 + 0x90020003, // 001B SETMBR R0 K0 R3 0x80000600, // 001C RET 0 - 0xB80E0800, // 001D GETNGBL R3 K4 - 0x8C0C0705, // 001E GETMET R3 R3 K5 - 0x58140008, // 001F LDCONST R5 K8 + 0xB80E0A00, // 001D GETNGBL R3 K5 + 0x8C0C0706, // 001E GETMET R3 R3 K6 + 0x58140009, // 001F LDCONST R5 K9 0x7C0C0400, // 0020 CALL R3 2 - 0x8C0C0109, // 0021 GETMET R3 R0 K9 - 0x5814000A, // 0022 LDCONST R5 K10 - 0x5818000A, // 0023 LDCONST R6 K10 + 0x8C0C010A, // 0021 GETMET R3 R0 K10 + 0x5814000B, // 0022 LDCONST R5 K11 + 0x5818000B, // 0023 LDCONST R6 K11 0x7C0C0600, // 0024 CALL R3 3 - 0x8C0C0109, // 0025 GETMET R3 R0 K9 + 0x8C0C010A, // 0025 GETMET R3 R0 K10 0x5416007F, // 0026 LDINT R5 128 0x541A0015, // 0027 LDINT R6 22 0x7C0C0600, // 0028 CALL R3 3 - 0x8C0C0109, // 0029 GETMET R3 R0 K9 + 0x8C0C010A, // 0029 GETMET R3 R0 K10 0x54160087, // 002A LDINT R5 136 0x541A000D, // 002B LDINT R6 14 0x7C0C0600, // 002C CALL R3 3 - 0xB80E0800, // 002D GETNGBL R3 K4 - 0x8C0C070B, // 002E GETMET R3 R3 K11 + 0xB80E0A00, // 002D GETNGBL R3 K5 + 0x8C0C070C, // 002E GETMET R3 R3 K12 0x5C140000, // 002F MOVE R5 R0 0x7C0C0400, // 0030 CALL R3 2 0x80000000, // 0031 RET 0 @@ -130,42 +140,30 @@ be_local_closure(class_FT3663_ts_loop, /* name */ be_nested_proto( 17, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(display), - /* K2 */ be_nested_str(read_bytes), - /* K3 */ be_nested_str(addr), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(2), - /* K6 */ be_const_int(3), - /* K7 */ be_nested_str(gest_id_codes), - /* K8 */ be_nested_str(find), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str(touch_update), - }), + &be_ktab_class_FT3663, /* shared constants */ &be_const_str_ts_loop, &be_const_str_solidified, ( &(const binstruction[63]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x74060000, // 0001 JMPT R1 #0003 0x80000200, // 0002 RET 0 - 0xA4060200, // 0003 IMPORT R1 K1 + 0xA4061A00, // 0003 IMPORT R1 K13 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x58140004, // 0007 LDCONST R5 K4 + 0x8C08050E, // 0005 GETMET R2 R2 K14 + 0x8810010F, // 0006 GETMBR R4 R0 K15 + 0x5814000B, // 0007 LDCONST R5 K11 0x541A000E, // 0008 LDINT R6 15 0x7C080800, // 0009 CALL R2 4 - 0x940C0505, // 000A GETIDX R3 R2 K5 + 0x940C0510, // 000A GETIDX R3 R2 K16 0x5412000E, // 000B LDINT R4 15 0x2C0C0604, // 000C AND R3 R3 R4 - 0x94100506, // 000D GETIDX R4 R2 K6 + 0x94100511, // 000D GETIDX R4 R2 K17 0x5416000E, // 000E LDINT R5 15 0x2C100805, // 000F AND R4 R4 R5 0x54160007, // 0010 LDINT R5 8 @@ -184,7 +182,7 @@ be_local_closure(class_FT3663_ts_loop, /* name */ 0x30140A06, // 001D OR R5 R5 R6 0x541A0006, // 001E LDINT R6 7 0x94180406, // 001F GETIDX R6 R2 R6 - 0x941C0506, // 0020 GETIDX R7 R2 K6 + 0x941C0511, // 0020 GETIDX R7 R2 K17 0x54220008, // 0021 LDINT R8 9 0x2C1C0E08, // 0022 AND R7 R7 R8 0x54220007, // 0023 LDINT R8 8 @@ -203,12 +201,12 @@ be_local_closure(class_FT3663_ts_loop, /* name */ 0x30201009, // 0030 OR R8 R8 R9 0x5426000C, // 0031 LDINT R9 13 0x94240409, // 0032 GETIDX R9 R2 R9 - 0x88280107, // 0033 GETMBR R10 R0 K7 - 0x8C281508, // 0034 GETMET R10 R10 K8 - 0x94300509, // 0035 GETIDX R12 R2 K9 - 0x58340004, // 0036 LDCONST R13 K4 + 0x88280112, // 0033 GETMBR R10 R0 K18 + 0x8C281513, // 0034 GETMET R10 R10 K19 + 0x94300514, // 0035 GETIDX R12 R2 K20 + 0x5834000B, // 0036 LDCONST R13 K11 0x7C280600, // 0037 CALL R10 3 - 0x8C2C030A, // 0038 GETMET R11 R1 K10 + 0x8C2C0315, // 0038 GETMET R11 R1 K21 0x5C340600, // 0039 MOVE R13 R3 0x5C380800, // 003A MOVE R14 R4 0x5C3C0A00, // 003B MOVE R15 R5 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h index f311a595e..4bacc84f2 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h @@ -3,8 +3,30 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" - +extern const bclass be_class_Leds_segment; extern const bclass be_class_Leds; +extern const bclass be_class_Leds_matrix; +// compact class 'Leds_segment' ktab size: 17, total: 34 (saved 136 bytes) +static const bvalue be_ktab_class_Leds_segment[17] = { + /* K0 */ be_nested_str(offset), + /* K1 */ be_nested_str(bri), + /* K2 */ be_nested_str(strip), + /* K3 */ be_nested_str(call_native), + /* K4 */ be_nested_str(to_gamma), + /* K5 */ be_nested_str(leds), + /* K6 */ be_nested_str(dirty), + /* K7 */ be_nested_str(can_show), + /* K8 */ be_nested_str(set_pixel_color), + /* K9 */ be_nested_str(is_dirty), + /* K10 */ be_nested_str(clear_to), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str(show), + /* K13 */ be_nested_str(get_pixel_color), + /* K14 */ be_nested_str(offseta), + /* K15 */ be_nested_str(pixel_size), + /* K16 */ be_const_int(0), +}; + extern const bclass be_class_Leds_segment; @@ -15,15 +37,13 @@ be_local_closure(class_Leds_segment_pixel_offset, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(offset), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_pixel_offset, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -42,36 +62,29 @@ be_local_closure(class_Leds_segment_clear_to, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(bri), - /* K1 */ be_nested_str(strip), - /* K2 */ be_nested_str(call_native), - /* K3 */ be_nested_str(to_gamma), - /* K4 */ be_nested_str(offset), - /* K5 */ be_nested_str(leds), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_clear_to, &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x4C0C0000, // 0000 LDNIL R3 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E0000, // 0002 JMPF R3 #0004 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x8C0C0702, // 0005 GETMET R3 R3 K2 + 0x88080101, // 0003 GETMBR R2 R0 K1 + 0x880C0102, // 0004 GETMBR R3 R0 K2 + 0x8C0C0703, // 0005 GETMET R3 R3 K3 0x54160008, // 0006 LDINT R5 9 - 0x88180101, // 0007 GETMBR R6 R0 K1 - 0x8C180D03, // 0008 GETMET R6 R6 K3 + 0x88180102, // 0007 GETMBR R6 R0 K2 + 0x8C180D04, // 0008 GETMET R6 R6 K4 0x5C200200, // 0009 MOVE R8 R1 0x5C240400, // 000A MOVE R9 R2 0x7C180600, // 000B CALL R6 3 - 0x881C0104, // 000C GETMBR R7 R0 K4 + 0x881C0100, // 000C GETMBR R7 R0 K0 0x88200105, // 000D GETMBR R8 R0 K5 0x7C0C0A00, // 000E CALL R3 5 0x80000000, // 000F RET 0 @@ -88,19 +101,17 @@ be_local_closure(class_Leds_segment_pixel_count, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(leds), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_pixel_count, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040105, // 0000 GETMBR R1 R0 K5 0x80040200, // 0001 RET 1 R1 }) ) @@ -115,13 +126,13 @@ be_local_closure(class_Leds_segment_pixels_buffer, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_pixels_buffer, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -140,21 +151,18 @@ be_local_closure(class_Leds_segment_dirty, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(dirty), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_dirty, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C040306, // 0001 GETMET R1 R1 K6 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -170,21 +178,18 @@ be_local_closure(class_Leds_segment_can_show, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(can_show), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_can_show, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C040307, // 0001 GETMET R1 R1 K7 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -200,28 +205,23 @@ be_local_closure(class_Leds_segment_set_pixel_color, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(bri), - /* K1 */ be_nested_str(strip), - /* K2 */ be_nested_str(set_pixel_color), - /* K3 */ be_nested_str(offset), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_set_pixel_color, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x4C100000, // 0000 LDNIL R4 0x1C100604, // 0001 EQ R4 R3 R4 0x78120000, // 0002 JMPF R4 #0004 - 0x880C0100, // 0003 GETMBR R3 R0 K0 - 0x88100101, // 0004 GETMBR R4 R0 K1 - 0x8C100902, // 0005 GETMET R4 R4 K2 - 0x88180103, // 0006 GETMBR R6 R0 K3 + 0x880C0101, // 0003 GETMBR R3 R0 K1 + 0x88100102, // 0004 GETMBR R4 R0 K2 + 0x8C100908, // 0005 GETMET R4 R4 K8 + 0x88180100, // 0006 GETMBR R6 R0 K0 0x00180206, // 0007 ADD R6 R1 R6 0x5C1C0400, // 0008 MOVE R7 R2 0x5C200600, // 0009 MOVE R8 R3 @@ -240,21 +240,18 @@ be_local_closure(class_Leds_segment_is_dirty, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(is_dirty), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_is_dirty, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C040309, // 0001 GETMET R1 R1 K9 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -270,24 +267,20 @@ be_local_closure(class_Leds_segment_clear, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(clear_to), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(show), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_clear, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 + 0x8C04010A, // 0000 GETMET R1 R0 K10 + 0x580C000B, // 0001 LDCONST R3 K11 0x7C040400, // 0002 CALL R1 2 - 0x8C040102, // 0003 GETMET R1 R0 K2 + 0x8C04010C, // 0003 GETMET R1 R0 K12 0x7C040200, // 0004 CALL R1 1 0x80000000, // 0005 RET 0 }) @@ -303,13 +296,13 @@ be_local_closure(class_Leds_segment_begin, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_begin, &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -327,23 +320,19 @@ be_local_closure(class_Leds_segment_get_pixel_color, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(get_pixel_color), - /* K2 */ be_nested_str(offseta), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_get_pixel_color, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C08050D, // 0001 GETMET R2 R2 K13 + 0x8810010E, // 0002 GETMBR R4 R0 K14 0x00100204, // 0003 ADD R4 R1 R4 0x7C080400, // 0004 CALL R2 2 0x80040400, // 0005 RET 1 R2 @@ -360,21 +349,18 @@ be_local_closure(class_Leds_segment_pixel_size, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(pixel_size), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_pixel_size, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C04030F, // 0001 GETMET R1 R1 K15 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -390,29 +376,25 @@ be_local_closure(class_Leds_segment_init, /* name */ be_nested_proto( 6, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(offset), - /* K2 */ be_nested_str(leds), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020401, // 0000 SETMBR R0 K2 R1 0x60100009, // 0001 GETGBL R4 G9 0x5C140400, // 0002 MOVE R5 R2 0x7C100200, // 0003 CALL R4 1 - 0x90020204, // 0004 SETMBR R0 K1 R4 + 0x90020004, // 0004 SETMBR R0 K0 R4 0x60100009, // 0005 GETGBL R4 G9 0x5C140600, // 0006 MOVE R5 R3 0x7C100200, // 0007 CALL R4 1 - 0x90020404, // 0008 SETMBR R0 K2 R4 + 0x90020A04, // 0008 SETMBR R0 K5 R4 0x80000000, // 0009 RET 0 }) ) @@ -427,19 +409,13 @@ be_local_closure(class_Leds_segment_show, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(offset), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(leds), - /* K3 */ be_nested_str(strip), - /* K4 */ be_nested_str(show), - }), + &be_ktab_class_Leds_segment, /* shared constants */ &be_const_str_show, &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -448,15 +424,15 @@ be_local_closure(class_Leds_segment_show, /* name */ 0x7C080200, // 0002 CALL R2 1 0x740A0007, // 0003 JMPT R2 #000C 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x1C080501, // 0005 EQ R2 R2 K1 + 0x1C080510, // 0005 EQ R2 R2 K16 0x780A0007, // 0006 JMPF R2 #000F - 0x88080102, // 0007 GETMBR R2 R0 K2 - 0x880C0103, // 0008 GETMBR R3 R0 K3 - 0x880C0702, // 0009 GETMBR R3 R3 K2 + 0x88080105, // 0007 GETMBR R2 R0 K5 + 0x880C0102, // 0008 GETMBR R3 R0 K2 + 0x880C0705, // 0009 GETMBR R3 R3 K5 0x1C080403, // 000A EQ R2 R2 R3 0x780A0002, // 000B JMPF R2 #000F - 0x88080103, // 000C GETMBR R2 R0 K3 - 0x8C080504, // 000D GETMET R2 R2 K4 + 0x88080102, // 000C GETMBR R2 R0 K2 + 0x8C08050C, // 000D GETMET R2 R2 K12 0x7C080200, // 000E CALL R2 1 0x80000000, // 000F RET 0 }) @@ -493,623 +469,34 @@ be_local_class(Leds_segment, })), (bstring*) &be_const_str_Leds_segment ); - -/******************************************************************** -** Solidified function: create_segment -********************************************************************/ -be_local_closure(class_Leds_create_segment, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(leds), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(value_error), - /* K3 */ be_nested_str(out_X20of_X20range), - /* K4 */ be_const_class(be_class_Leds_segment), - }), - &be_const_str_create_segment, - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x600C0009, // 0000 GETGBL R3 G9 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x60100009, // 0003 GETGBL R4 G9 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C100200, // 0005 CALL R4 1 - 0x000C0604, // 0006 ADD R3 R3 R4 - 0x88100100, // 0007 GETMBR R4 R0 K0 - 0x240C0604, // 0008 GT R3 R3 R4 - 0x740E0003, // 0009 JMPT R3 #000E - 0x140C0301, // 000A LT R3 R1 K1 - 0x740E0001, // 000B JMPT R3 #000E - 0x140C0501, // 000C LT R3 R2 K1 - 0x780E0000, // 000D JMPF R3 #000F - 0xB0060503, // 000E RAISE 1 K2 K3 - 0x580C0004, // 000F LDCONST R3 K4 - 0xB4000004, // 0010 CLASS K4 - 0x5C100600, // 0011 MOVE R4 R3 - 0x5C140000, // 0012 MOVE R5 R0 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C100600, // 0015 CALL R4 3 - 0x80040800, // 0016 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_bri -********************************************************************/ -be_local_closure(class_Leds_set_bri, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(bri), - }), - &be_const_str_set_bri, - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x14080300, // 0000 LT R2 R1 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x58040000, // 0002 LDCONST R1 K0 - 0x540A00FE, // 0003 LDINT R2 255 - 0x24080202, // 0004 GT R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540600FE, // 0006 LDINT R1 255 - 0x90020201, // 0007 SETMBR R0 K1 R1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: begin -********************************************************************/ -be_local_closure(class_Leds_begin, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(1), - }), - &be_const_str_begin, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(class_Leds_clear, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(clear_to), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(show), - }), - &be_const_str_clear, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_Leds_init, /* name */ - be_nested_proto( - 12, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str(gpio), - /* K1 */ be_nested_str(gamma), - /* K2 */ be_nested_str(pin), - /* K3 */ be_nested_str(WS2812), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str(ctor), - /* K6 */ be_nested_str(leds), - /* K7 */ be_nested_str(pixel_count), - /* K8 */ be_nested_str(light), - /* K9 */ be_nested_str(bri), - /* K10 */ be_nested_str(get), - /* K11 */ be_nested_str(_p), - /* K12 */ be_nested_str(internal_error), - /* K13 */ be_nested_str(couldn_X27t_X20not_X20initialize_X20noepixelbus), - /* K14 */ be_nested_str(begin), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x50180200, // 0001 LDBOOL R6 1 0 - 0x90020206, // 0002 SETMBR R0 K1 R6 - 0x4C180000, // 0003 LDNIL R6 - 0x1C180406, // 0004 EQ R6 R2 R6 - 0x741A0005, // 0005 JMPT R6 #000C - 0x8C180B02, // 0006 GETMET R6 R5 K2 - 0x88200B03, // 0007 GETMBR R8 R5 K3 - 0x58240004, // 0008 LDCONST R9 K4 - 0x7C180600, // 0009 CALL R6 3 - 0x1C180406, // 000A EQ R6 R2 R6 - 0x781A000A, // 000B JMPF R6 #0017 - 0x8C180105, // 000C GETMET R6 R0 K5 - 0x7C180200, // 000D CALL R6 1 - 0x8C180107, // 000E GETMET R6 R0 K7 - 0x7C180200, // 000F CALL R6 1 - 0x90020C06, // 0010 SETMBR R0 K6 R6 - 0xA41A1000, // 0011 IMPORT R6 K8 - 0x8C1C0D0A, // 0012 GETMET R7 R6 K10 - 0x7C1C0200, // 0013 CALL R7 1 - 0x941C0F09, // 0014 GETIDX R7 R7 K9 - 0x90021207, // 0015 SETMBR R0 K9 R7 - 0x7002000B, // 0016 JMP #0023 - 0x60180009, // 0017 GETGBL R6 G9 - 0x5C1C0200, // 0018 MOVE R7 R1 - 0x7C180200, // 0019 CALL R6 1 - 0x90020C06, // 001A SETMBR R0 K6 R6 - 0x541A007E, // 001B LDINT R6 127 - 0x90021206, // 001C SETMBR R0 K9 R6 - 0x8C180105, // 001D GETMET R6 R0 K5 - 0x88200106, // 001E GETMBR R8 R0 K6 - 0x5C240400, // 001F MOVE R9 R2 - 0x5C280600, // 0020 MOVE R10 R3 - 0x5C2C0800, // 0021 MOVE R11 R4 - 0x7C180A00, // 0022 CALL R6 5 - 0x8818010B, // 0023 GETMBR R6 R0 K11 - 0x4C1C0000, // 0024 LDNIL R7 - 0x1C180C07, // 0025 EQ R6 R6 R7 - 0x781A0000, // 0026 JMPF R6 #0028 - 0xB006190D, // 0027 RAISE 1 K12 K13 - 0x8C18010E, // 0028 GETMET R6 R0 K14 - 0x7C180200, // 0029 CALL R6 1 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: to_gamma -********************************************************************/ -be_local_closure(class_Leds_to_gamma, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(bri), - /* K1 */ be_nested_str(apply_bri_gamma), - /* K2 */ be_nested_str(gamma), - }), - &be_const_str_to_gamma, - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0000, // 0002 JMPF R3 #0004 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x8C0C0101, // 0004 GETMET R3 R0 K1 - 0x5C140200, // 0005 MOVE R5 R1 - 0x5C180400, // 0006 MOVE R6 R2 - 0x881C0102, // 0007 GETMBR R7 R0 K2 - 0x7C0C0800, // 0008 CALL R3 4 - 0x80040600, // 0009 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: show -********************************************************************/ -be_local_closure(class_Leds_show, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(2), - }), - &be_const_str_show, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_count -********************************************************************/ -be_local_closure(class_Leds_pixel_count, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_pixel_count, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0007, // 0001 LDINT R3 8 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_bri -********************************************************************/ -be_local_closure(class_Leds_get_bri, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(bri), - }), - &be_const_str_get_bri, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_gamma -********************************************************************/ -be_local_closure(class_Leds_set_gamma, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(gamma), - }), - &be_const_str_set_gamma, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x60080017, // 0000 GETGBL R2 G23 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pixel_color -********************************************************************/ -be_local_closure(class_Leds_get_pixel_color, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_get_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5412000A, // 0001 LDINT R4 11 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: dirty -********************************************************************/ -be_local_closure(class_Leds_dirty, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_dirty, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0004, // 0001 LDINT R3 5 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: matrix -********************************************************************/ -be_local_closure(class_Leds_matrix, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 4, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Leds), - /* K1 */ be_nested_str(Leds), - /* K2 */ be_nested_str(create_matrix), - /* K3 */ be_const_int(0), - }), - &be_const_str_matrix, - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0xB8160200, // 0001 GETNGBL R5 K1 - 0x08180001, // 0002 MUL R6 R0 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C140600, // 0005 CALL R5 3 - 0x8C180B02, // 0006 GETMET R6 R5 K2 - 0x5C200000, // 0007 MOVE R8 R0 - 0x5C240200, // 0008 MOVE R9 R1 - 0x58280003, // 0009 LDCONST R10 K3 - 0x7C180800, // 000A CALL R6 4 - 0x80040C00, // 000B RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_offset -********************************************************************/ -be_local_closure(class_Leds_pixel_offset, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_int(0), - }), - &be_const_str_pixel_offset, - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80060000, // 0000 RET 1 K0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_to -********************************************************************/ -be_local_closure(class_Leds_clear_to, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(bri), - /* K1 */ be_nested_str(call_native), - /* K2 */ be_nested_str(to_gamma), - }), - &be_const_str_clear_to, - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0000, // 0002 JMPF R3 #0004 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x8C0C0101, // 0004 GETMET R3 R0 K1 - 0x54160008, // 0005 LDINT R5 9 - 0x8C180102, // 0006 GETMET R6 R0 K2 - 0x5C200200, // 0007 MOVE R8 R1 - 0x5C240400, // 0008 MOVE R9 R2 - 0x7C180600, // 0009 CALL R6 3 - 0x7C0C0600, // 000A CALL R3 3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_pixel_color -********************************************************************/ -be_local_closure(class_Leds_set_pixel_color, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(bri), - /* K1 */ be_nested_str(call_native), - /* K2 */ be_nested_str(to_gamma), - }), - &be_const_str_set_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x1C100604, // 0001 EQ R4 R3 R4 - 0x78120000, // 0002 JMPF R4 #0004 - 0x880C0100, // 0003 GETMBR R3 R0 K0 - 0x8C100101, // 0004 GETMET R4 R0 K1 - 0x541A0009, // 0005 LDINT R6 10 - 0x5C1C0200, // 0006 MOVE R7 R1 - 0x8C200102, // 0007 GETMET R8 R0 K2 - 0x5C280400, // 0008 MOVE R10 R2 - 0x5C2C0600, // 0009 MOVE R11 R3 - 0x7C200600, // 000A CALL R8 3 - 0x7C100800, // 000B CALL R4 4 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_size -********************************************************************/ -be_local_closure(class_Leds_pixel_size, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_pixel_size, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0006, // 0001 LDINT R3 7 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ +// compact class 'Leds_matrix' ktab size: 25, total: 62 (saved 296 bytes) +static const bvalue be_ktab_class_Leds_matrix[25] = { + /* K0 */ be_nested_str(strip), + /* K1 */ be_nested_str(bri), + /* K2 */ be_nested_str(call_native), + /* K3 */ be_nested_str(to_gamma), + /* K4 */ be_nested_str(offset), + /* K5 */ be_nested_str(w), + /* K6 */ be_nested_str(h), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str(leds), + /* K9 */ be_nested_str(show), + /* K10 */ be_nested_str(pix_buffer), + /* K11 */ be_nested_str(pixels_buffer), + /* K12 */ be_nested_str(pix_size), + /* K13 */ be_nested_str(alternate), + /* K14 */ be_nested_str(pixel_size), + /* K15 */ be_nested_str(set_pixel_color), + /* K16 */ be_nested_str(dirty), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str(is_dirty), + /* K19 */ be_nested_str(can_show), + /* K20 */ be_nested_str(setbytes), + /* K21 */ be_nested_str(get_pixel_color), + /* K22 */ be_nested_str(offseta), + /* K23 */ be_nested_str(clear_to), + /* K24 */ be_const_int(0), +}; extern const bclass be_class_Leds_matrix; @@ -1121,21 +508,13 @@ be_local_closure(class_Leds_matrix_clear_to, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(bri), - /* K2 */ be_nested_str(call_native), - /* K3 */ be_nested_str(to_gamma), - /* K4 */ be_nested_str(offset), - /* K5 */ be_nested_str(w), - /* K6 */ be_nested_str(h), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_clear_to, &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ @@ -1171,23 +550,13 @@ be_local_closure(class_Leds_matrix_show, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(offset), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(w), - /* K3 */ be_nested_str(h), - /* K4 */ be_nested_str(strip), - /* K5 */ be_nested_str(leds), - /* K6 */ be_nested_str(show), - /* K7 */ be_nested_str(pix_buffer), - /* K8 */ be_nested_str(pixels_buffer), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_show, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ @@ -1195,24 +564,24 @@ be_local_closure(class_Leds_matrix_show, /* name */ 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 0x740A0009, // 0003 JMPT R2 #000E - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x1C080501, // 0005 EQ R2 R2 K1 + 0x88080104, // 0004 GETMBR R2 R0 K4 + 0x1C080507, // 0005 EQ R2 R2 K7 0x780A000E, // 0006 JMPF R2 #0016 - 0x88080102, // 0007 GETMBR R2 R0 K2 - 0x880C0103, // 0008 GETMBR R3 R0 K3 + 0x88080105, // 0007 GETMBR R2 R0 K5 + 0x880C0106, // 0008 GETMBR R3 R0 K6 0x08080403, // 0009 MUL R2 R2 R3 - 0x880C0104, // 000A GETMBR R3 R0 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x880C0100, // 000A GETMBR R3 R0 K0 + 0x880C0708, // 000B GETMBR R3 R3 K8 0x1C080403, // 000C EQ R2 R2 R3 0x780A0007, // 000D JMPF R2 #0016 - 0x88080104, // 000E GETMBR R2 R0 K4 - 0x8C080506, // 000F GETMET R2 R2 K6 + 0x88080100, // 000E GETMBR R2 R0 K0 + 0x8C080509, // 000F GETMET R2 R2 K9 0x7C080200, // 0010 CALL R2 1 - 0x88080104, // 0011 GETMBR R2 R0 K4 - 0x8C080508, // 0012 GETMET R2 R2 K8 - 0x88100107, // 0013 GETMBR R4 R0 K7 + 0x88080100, // 0011 GETMBR R2 R0 K0 + 0x8C08050B, // 0012 GETMET R2 R2 K11 + 0x8810010A, // 0013 GETMBR R4 R0 K10 0x7C080400, // 0014 CALL R2 2 - 0x90020E02, // 0015 SETMBR R0 K7 R2 + 0x90021402, // 0015 SETMBR R0 K10 R2 0x80000000, // 0016 RET 0 }) ) @@ -1227,19 +596,17 @@ be_local_closure(class_Leds_matrix_pixel_size, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(pix_size), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_pixel_size, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010C, // 0000 GETMBR R1 R0 K12 0x80040200, // 0001 RET 1 R1 }) ) @@ -1254,40 +621,30 @@ be_local_closure(class_Leds_matrix_init, /* name */ be_nested_proto( 7, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(offset), - /* K2 */ be_nested_str(h), - /* K3 */ be_nested_str(w), - /* K4 */ be_nested_str(alternate), - /* K5 */ be_nested_str(pix_buffer), - /* K6 */ be_nested_str(pixels_buffer), - /* K7 */ be_nested_str(pix_size), - /* K8 */ be_nested_str(pixel_size), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020204, // 0001 SETMBR R0 K1 R4 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x90020602, // 0003 SETMBR R0 K3 R2 + 0x90020804, // 0001 SETMBR R0 K4 R4 + 0x90020C03, // 0002 SETMBR R0 K6 R3 + 0x90020A02, // 0003 SETMBR R0 K5 R2 0x50140000, // 0004 LDBOOL R5 0 0 - 0x90020805, // 0005 SETMBR R0 K4 R5 + 0x90021A05, // 0005 SETMBR R0 K13 R5 0x88140100, // 0006 GETMBR R5 R0 K0 - 0x8C140B06, // 0007 GETMET R5 R5 K6 + 0x8C140B0B, // 0007 GETMET R5 R5 K11 0x7C140200, // 0008 CALL R5 1 - 0x90020A05, // 0009 SETMBR R0 K5 R5 + 0x90021405, // 0009 SETMBR R0 K10 R5 0x88140100, // 000A GETMBR R5 R0 K0 - 0x8C140B08, // 000B GETMET R5 R5 K8 + 0x8C140B0E, // 000B GETMET R5 R5 K14 0x7C140200, // 000C CALL R5 1 - 0x90020E05, // 000D SETMBR R0 K7 R5 + 0x90021805, // 000D SETMBR R0 K12 R5 0x80000000, // 000E RET 0 }) ) @@ -1302,18 +659,13 @@ be_local_closure(class_Leds_matrix_set_pixel_color, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(bri), - /* K2 */ be_nested_str(set_pixel_color), - /* K3 */ be_nested_str(offset), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_set_pixel_color, &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -1323,8 +675,8 @@ be_local_closure(class_Leds_matrix_set_pixel_color, /* name */ 0x88100100, // 0003 GETMBR R4 R0 K0 0x880C0901, // 0004 GETMBR R3 R4 K1 0x88100100, // 0005 GETMBR R4 R0 K0 - 0x8C100902, // 0006 GETMET R4 R4 K2 - 0x88180103, // 0007 GETMBR R6 R0 K3 + 0x8C10090F, // 0006 GETMET R4 R4 K15 + 0x88180104, // 0007 GETMBR R6 R0 K4 0x00180206, // 0008 ADD R6 R1 R6 0x5C1C0400, // 0009 MOVE R7 R2 0x5C200600, // 000A MOVE R8 R3 @@ -1343,21 +695,18 @@ be_local_closure(class_Leds_matrix_pixels_buffer, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(pixels_buffer), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_pixels_buffer, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C04030B, // 0001 GETMET R1 R1 K11 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -1373,21 +722,18 @@ be_local_closure(class_Leds_matrix_dirty, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(dirty), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_dirty, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040310, // 0001 GETMET R1 R1 K16 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -1403,22 +749,13 @@ be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */ be_nested_proto( 10, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(bri), - /* K2 */ be_nested_str(alternate), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str(set_pixel_color), - /* K5 */ be_nested_str(w), - /* K6 */ be_nested_str(h), - /* K7 */ be_nested_str(offset), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_set_matrix_pixel_color, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ @@ -1427,30 +764,30 @@ be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */ 0x78160001, // 0002 JMPF R5 #0005 0x88140100, // 0003 GETMBR R5 R0 K0 0x88100B01, // 0004 GETMBR R4 R5 K1 - 0x88140102, // 0005 GETMBR R5 R0 K2 + 0x8814010D, // 0005 GETMBR R5 R0 K13 0x7816000F, // 0006 JMPF R5 #0017 - 0x2C140503, // 0007 AND R5 R2 K3 + 0x2C140511, // 0007 AND R5 R2 K17 0x7816000D, // 0008 JMPF R5 #0017 0x88140100, // 0009 GETMBR R5 R0 K0 - 0x8C140B04, // 000A GETMET R5 R5 K4 + 0x8C140B0F, // 000A GETMET R5 R5 K15 0x881C0105, // 000B GETMBR R7 R0 K5 0x081C0207, // 000C MUL R7 R1 R7 0x88200106, // 000D GETMBR R8 R0 K6 0x001C0E08, // 000E ADD R7 R7 R8 0x041C0E02, // 000F SUB R7 R7 R2 - 0x041C0F03, // 0010 SUB R7 R7 K3 - 0x88200107, // 0011 GETMBR R8 R0 K7 + 0x041C0F11, // 0010 SUB R7 R7 K17 + 0x88200104, // 0011 GETMBR R8 R0 K4 0x001C0E08, // 0012 ADD R7 R7 R8 0x5C200600, // 0013 MOVE R8 R3 0x5C240800, // 0014 MOVE R9 R4 0x7C140800, // 0015 CALL R5 4 0x70020009, // 0016 JMP #0021 0x88140100, // 0017 GETMBR R5 R0 K0 - 0x8C140B04, // 0018 GETMET R5 R5 K4 + 0x8C140B0F, // 0018 GETMET R5 R5 K15 0x881C0105, // 0019 GETMBR R7 R0 K5 0x081C0207, // 001A MUL R7 R1 R7 0x001C0E02, // 001B ADD R7 R7 R2 - 0x88200107, // 001C GETMBR R8 R0 K7 + 0x88200104, // 001C GETMBR R8 R0 K4 0x001C0E08, // 001D ADD R7 R7 R8 0x5C200600, // 001E MOVE R8 R3 0x5C240800, // 001F MOVE R9 R4 @@ -1469,21 +806,18 @@ be_local_closure(class_Leds_matrix_is_dirty, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(is_dirty), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_is_dirty, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040312, // 0001 GETMET R1 R1 K18 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -1499,19 +833,17 @@ be_local_closure(class_Leds_matrix_set_alternate, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(alternate), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_set_alternate, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021A01, // 0000 SETMBR R0 K13 R1 0x80000000, // 0001 RET 0 }) ) @@ -1526,13 +858,13 @@ be_local_closure(class_Leds_matrix_begin, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_begin, &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -1550,21 +882,18 @@ be_local_closure(class_Leds_matrix_pixel_count, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(w), - /* K1 */ be_nested_str(h), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_pixel_count, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88040105, // 0000 GETMBR R1 R0 K5 + 0x88080106, // 0001 GETMBR R2 R0 K6 0x08040202, // 0002 MUL R1 R1 R2 0x80040200, // 0003 RET 1 R1 }) @@ -1580,19 +909,17 @@ be_local_closure(class_Leds_matrix_get_alternate, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(alternate), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_get_alternate, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010D, // 0000 GETMBR R1 R0 K13 0x80040200, // 0001 RET 1 R1 }) ) @@ -1607,19 +934,17 @@ be_local_closure(class_Leds_matrix_pixel_offset, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(offset), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_pixel_offset, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040104, // 0000 GETMBR R1 R0 K4 0x80040200, // 0001 RET 1 R1 }) ) @@ -1634,21 +959,18 @@ be_local_closure(class_Leds_matrix_can_show, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(can_show), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_can_show, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040313, // 0001 GETMET R1 R1 K19 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -1664,33 +986,27 @@ be_local_closure(class_Leds_matrix_set_bytes, /* name */ be_nested_proto( 13, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(h), - /* K1 */ be_nested_str(pix_size), - /* K2 */ be_nested_str(offset), - /* K3 */ be_nested_str(pix_buffer), - /* K4 */ be_nested_str(setbytes), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_set_bytes, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88140100, // 0000 GETMBR R5 R0 K0 - 0x88180101, // 0001 GETMBR R6 R0 K1 + 0x88140106, // 0000 GETMBR R5 R0 K6 + 0x8818010C, // 0001 GETMBR R6 R0 K12 0x08140A06, // 0002 MUL R5 R5 R6 0x24180805, // 0003 GT R6 R4 R5 0x781A0000, // 0004 JMPF R6 #0006 0x5C100A00, // 0005 MOVE R4 R5 - 0x88180102, // 0006 GETMBR R6 R0 K2 + 0x88180104, // 0006 GETMBR R6 R0 K4 0x00180C01, // 0007 ADD R6 R6 R1 0x08180C05, // 0008 MUL R6 R6 R5 - 0x881C0103, // 0009 GETMBR R7 R0 K3 - 0x8C1C0F04, // 000A GETMET R7 R7 K4 + 0x881C010A, // 0009 GETMBR R7 R0 K10 + 0x8C1C0F14, // 000A GETMET R7 R7 K20 0x5C240C00, // 000B MOVE R9 R6 0x5C280400, // 000C MOVE R10 R2 0x5C2C0600, // 000D MOVE R11 R3 @@ -1710,23 +1026,19 @@ be_local_closure(class_Leds_matrix_get_pixel_color, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(get_pixel_color), - /* K2 */ be_nested_str(offseta), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_get_pixel_color, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x8C080515, // 0001 GETMET R2 R2 K21 + 0x88100116, // 0002 GETMBR R4 R0 K22 0x00100204, // 0003 ADD R4 R1 R4 0x7C080400, // 0004 CALL R2 2 0x80040400, // 0005 RET 1 R2 @@ -1743,24 +1055,20 @@ be_local_closure(class_Leds_matrix_clear, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(clear_to), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(show), - }), + &be_ktab_class_Leds_matrix, /* shared constants */ &be_const_str_clear, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 + 0x8C040117, // 0000 GETMET R1 R0 K23 + 0x580C0018, // 0001 LDCONST R3 K24 0x7C040400, // 0002 CALL R1 2 - 0x8C040102, // 0003 GETMET R1 R0 K2 + 0x8C040109, // 0003 GETMET R1 R0 K9 0x7C040200, // 0004 CALL R1 1 0x80000000, // 0005 RET 0 }) @@ -1805,6 +1113,610 @@ be_local_class(Leds_matrix, })), (bstring*) &be_const_str_Leds_matrix ); +// compact class 'Leds' ktab size: 46, total: 83 (saved 296 bytes) +static const bvalue be_ktab_class_Leds[46] = { + /* K0 */ be_nested_str(leds), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str(value_error), + /* K3 */ be_nested_str(out_X20of_X20range), + /* K4 */ be_const_class(be_class_Leds_segment), + /* K5 */ be_nested_str(bri), + /* K6 */ be_nested_str(call_native), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str(clear_to), + /* K9 */ be_nested_str(show), + /* K10 */ be_nested_str(gpio), + /* K11 */ be_nested_str(gamma), + /* K12 */ be_nested_str(pin), + /* K13 */ be_nested_str(WS2812), + /* K14 */ be_nested_str(ctor), + /* K15 */ be_nested_str(pixel_count), + /* K16 */ be_nested_str(light), + /* K17 */ be_nested_str(get), + /* K18 */ be_nested_str(_p), + /* K19 */ be_nested_str(internal_error), + /* K20 */ be_nested_str(couldn_X27t_X20not_X20initialize_X20noepixelbus), + /* K21 */ be_nested_str(begin), + /* K22 */ be_nested_str(apply_bri_gamma), + /* K23 */ be_const_int(2), + /* K24 */ be_const_class(be_class_Leds), + /* K25 */ be_nested_str(Leds), + /* K26 */ be_nested_str(create_matrix), + /* K27 */ be_const_int(0), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str(to_gamma), + /* K30 */ be_const_class(be_class_Leds_matrix), + /* K31 */ be_const_int(3), + /* K32 */ be_nested_str(invalid_X20GPIO_X20number), + /* K33 */ be_nested_str(global), + /* K34 */ be_nested_str(contains), + /* K35 */ be_nested_str(_rmt), + /* K36 */ be_nested_str(MAX_RMT), + /* K37 */ be_const_int(1), + /* K38 */ be_nested_str(push), + /* K39 */ be_nested_str(stop_iteration), + /* K40 */ be_nested_str(pin_used), + /* K41 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available), + /* K42 */ be_nested_str(WS2812_GRB), + /* K43 */ be_nested_str(assign_rmt), + /* K44 */ be_nested_str(pixel_size), + /* K45 */ be_nested_str(_change_buffer), +}; + + +extern const bclass be_class_Leds; + +/******************************************************************** +** Solidified function: create_segment +********************************************************************/ +be_local_closure(class_Leds_create_segment, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_create_segment, + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x600C0009, // 0000 GETGBL R3 G9 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x60100009, // 0003 GETGBL R4 G9 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C100200, // 0005 CALL R4 1 + 0x000C0604, // 0006 ADD R3 R3 R4 + 0x88100100, // 0007 GETMBR R4 R0 K0 + 0x240C0604, // 0008 GT R3 R3 R4 + 0x740E0003, // 0009 JMPT R3 #000E + 0x140C0301, // 000A LT R3 R1 K1 + 0x740E0001, // 000B JMPT R3 #000E + 0x140C0501, // 000C LT R3 R2 K1 + 0x780E0000, // 000D JMPF R3 #000F + 0xB0060503, // 000E RAISE 1 K2 K3 + 0x580C0004, // 000F LDCONST R3 K4 + 0xB4000004, // 0010 CLASS K4 + 0x5C100600, // 0011 MOVE R4 R3 + 0x5C140000, // 0012 MOVE R5 R0 + 0x5C180200, // 0013 MOVE R6 R1 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x7C100600, // 0015 CALL R4 3 + 0x80040800, // 0016 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_bri +********************************************************************/ +be_local_closure(class_Leds_set_bri, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_set_bri, + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x14080301, // 0000 LT R2 R1 K1 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x58040001, // 0002 LDCONST R1 K1 + 0x540A00FE, // 0003 LDINT R2 255 + 0x24080202, // 0004 GT R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540600FE, // 0006 LDINT R1 255 + 0x90020A01, // 0007 SETMBR R0 K5 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: begin +********************************************************************/ +be_local_closure(class_Leds_begin, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_begin, + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x580C0007, // 0001 LDCONST R3 K7 + 0x7C040400, // 0002 CALL R1 2 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear +********************************************************************/ +be_local_closure(class_Leds_clear, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_clear, + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C040108, // 0000 GETMET R1 R0 K8 + 0x580C0001, // 0001 LDCONST R3 K1 + 0x7C040400, // 0002 CALL R1 2 + 0x8C040109, // 0003 GETMET R1 R0 K9 + 0x7C040200, // 0004 CALL R1 1 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_Leds_init, /* name */ + be_nested_proto( + 12, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0xA4161400, // 0000 IMPORT R5 K10 + 0x50180200, // 0001 LDBOOL R6 1 0 + 0x90021606, // 0002 SETMBR R0 K11 R6 + 0x4C180000, // 0003 LDNIL R6 + 0x1C180406, // 0004 EQ R6 R2 R6 + 0x741A0005, // 0005 JMPT R6 #000C + 0x8C180B0C, // 0006 GETMET R6 R5 K12 + 0x88200B0D, // 0007 GETMBR R8 R5 K13 + 0x58240001, // 0008 LDCONST R9 K1 + 0x7C180600, // 0009 CALL R6 3 + 0x1C180406, // 000A EQ R6 R2 R6 + 0x781A000A, // 000B JMPF R6 #0017 + 0x8C18010E, // 000C GETMET R6 R0 K14 + 0x7C180200, // 000D CALL R6 1 + 0x8C18010F, // 000E GETMET R6 R0 K15 + 0x7C180200, // 000F CALL R6 1 + 0x90020006, // 0010 SETMBR R0 K0 R6 + 0xA41A2000, // 0011 IMPORT R6 K16 + 0x8C1C0D11, // 0012 GETMET R7 R6 K17 + 0x7C1C0200, // 0013 CALL R7 1 + 0x941C0F05, // 0014 GETIDX R7 R7 K5 + 0x90020A07, // 0015 SETMBR R0 K5 R7 + 0x7002000B, // 0016 JMP #0023 + 0x60180009, // 0017 GETGBL R6 G9 + 0x5C1C0200, // 0018 MOVE R7 R1 + 0x7C180200, // 0019 CALL R6 1 + 0x90020006, // 001A SETMBR R0 K0 R6 + 0x541A007E, // 001B LDINT R6 127 + 0x90020A06, // 001C SETMBR R0 K5 R6 + 0x8C18010E, // 001D GETMET R6 R0 K14 + 0x88200100, // 001E GETMBR R8 R0 K0 + 0x5C240400, // 001F MOVE R9 R2 + 0x5C280600, // 0020 MOVE R10 R3 + 0x5C2C0800, // 0021 MOVE R11 R4 + 0x7C180A00, // 0022 CALL R6 5 + 0x88180112, // 0023 GETMBR R6 R0 K18 + 0x4C1C0000, // 0024 LDNIL R7 + 0x1C180C07, // 0025 EQ R6 R6 R7 + 0x781A0000, // 0026 JMPF R6 #0028 + 0xB0062714, // 0027 RAISE 1 K19 K20 + 0x8C180115, // 0028 GETMET R6 R0 K21 + 0x7C180200, // 0029 CALL R6 1 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: to_gamma +********************************************************************/ +be_local_closure(class_Leds_to_gamma, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_to_gamma, + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0000, // 0002 JMPF R3 #0004 + 0x88080105, // 0003 GETMBR R2 R0 K5 + 0x8C0C0116, // 0004 GETMET R3 R0 K22 + 0x5C140200, // 0005 MOVE R5 R1 + 0x5C180400, // 0006 MOVE R6 R2 + 0x881C010B, // 0007 GETMBR R7 R0 K11 + 0x7C0C0800, // 0008 CALL R3 4 + 0x80040600, // 0009 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: show +********************************************************************/ +be_local_closure(class_Leds_show, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_show, + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x580C0017, // 0001 LDCONST R3 K23 + 0x7C040400, // 0002 CALL R1 2 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: pixel_count +********************************************************************/ +be_local_closure(class_Leds_pixel_count, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_pixel_count, + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x540E0007, // 0001 LDINT R3 8 + 0x7C040400, // 0002 CALL R1 2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_bri +********************************************************************/ +be_local_closure(class_Leds_get_bri, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_get_bri, + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040105, // 0000 GETMBR R1 R0 K5 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_gamma +********************************************************************/ +be_local_closure(class_Leds_set_gamma, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_set_gamma, + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x60080017, // 0000 GETGBL R2 G23 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x90021602, // 0003 SETMBR R0 K11 R2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_pixel_color +********************************************************************/ +be_local_closure(class_Leds_get_pixel_color, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_get_pixel_color, + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C080106, // 0000 GETMET R2 R0 K6 + 0x5412000A, // 0001 LDINT R4 11 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C080600, // 0003 CALL R2 3 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: dirty +********************************************************************/ +be_local_closure(class_Leds_dirty, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_dirty, + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x540E0004, // 0001 LDINT R3 5 + 0x7C040400, // 0002 CALL R1 2 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: matrix +********************************************************************/ +be_local_closure(class_Leds_matrix, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_matrix, + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x58100018, // 0000 LDCONST R4 K24 + 0xB8163200, // 0001 GETNGBL R5 K25 + 0x08180001, // 0002 MUL R6 R0 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C140600, // 0005 CALL R5 3 + 0x8C180B1A, // 0006 GETMET R6 R5 K26 + 0x5C200000, // 0007 MOVE R8 R0 + 0x5C240200, // 0008 MOVE R9 R1 + 0x5828001B, // 0009 LDCONST R10 K27 + 0x7C180800, // 000A CALL R6 4 + 0x80040C00, // 000B RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: pixel_offset +********************************************************************/ +be_local_closure(class_Leds_pixel_offset, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_pixel_offset, + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80063800, // 0000 RET 1 K28 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear_to +********************************************************************/ +be_local_closure(class_Leds_clear_to, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_clear_to, + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0403, // 0001 EQ R3 R2 R3 + 0x780E0000, // 0002 JMPF R3 #0004 + 0x88080105, // 0003 GETMBR R2 R0 K5 + 0x8C0C0106, // 0004 GETMET R3 R0 K6 + 0x54160008, // 0005 LDINT R5 9 + 0x8C18011D, // 0006 GETMET R6 R0 K29 + 0x5C200200, // 0007 MOVE R8 R1 + 0x5C240400, // 0008 MOVE R9 R2 + 0x7C180600, // 0009 CALL R6 3 + 0x7C0C0600, // 000A CALL R3 3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_pixel_color +********************************************************************/ +be_local_closure(class_Leds_set_pixel_color, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_set_pixel_color, + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x1C100604, // 0001 EQ R4 R3 R4 + 0x78120000, // 0002 JMPF R4 #0004 + 0x880C0105, // 0003 GETMBR R3 R0 K5 + 0x8C100106, // 0004 GETMET R4 R0 K6 + 0x541A0009, // 0005 LDINT R6 10 + 0x5C1C0200, // 0006 MOVE R7 R1 + 0x8C20011D, // 0007 GETMET R8 R0 K29 + 0x5C280400, // 0008 MOVE R10 R2 + 0x5C2C0600, // 0009 MOVE R11 R3 + 0x7C200600, // 000A CALL R8 3 + 0x7C100800, // 000B CALL R4 4 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: pixel_size +********************************************************************/ +be_local_closure(class_Leds_pixel_size, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Leds, /* shared constants */ + &be_const_str_pixel_size, + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x540E0006, // 0001 LDINT R3 7 + 0x7C040400, // 0002 CALL R1 2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + /******************************************************************** ** Solidified function: create_matrix @@ -1813,19 +1725,13 @@ be_local_closure(class_Leds_create_matrix, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(leds), - /* K2 */ be_nested_str(value_error), - /* K3 */ be_nested_str(out_X20of_X20range), - /* K4 */ be_const_class(be_class_Leds_matrix), - }), + &be_ktab_class_Leds, /* shared constants */ &be_const_str_create_matrix, &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ @@ -1844,21 +1750,21 @@ be_local_closure(class_Leds_create_matrix, /* name */ 0x4C100000, // 000C LDNIL R4 0x1C100604, // 000D EQ R4 R3 R4 0x78120000, // 000E JMPF R4 #0010 - 0x580C0000, // 000F LDCONST R3 K0 + 0x580C0001, // 000F LDCONST R3 K1 0x08100202, // 0010 MUL R4 R1 R2 0x00100803, // 0011 ADD R4 R4 R3 - 0x88140101, // 0012 GETMBR R5 R0 K1 + 0x88140100, // 0012 GETMBR R5 R0 K0 0x24100805, // 0013 GT R4 R4 R5 0x74120005, // 0014 JMPT R4 #001B - 0x14100500, // 0015 LT R4 R2 K0 + 0x14100501, // 0015 LT R4 R2 K1 0x74120003, // 0016 JMPT R4 #001B - 0x14100300, // 0017 LT R4 R1 K0 + 0x14100301, // 0017 LT R4 R1 K1 0x74120001, // 0018 JMPT R4 #001B - 0x14100700, // 0019 LT R4 R3 K0 + 0x14100701, // 0019 LT R4 R3 K1 0x78120000, // 001A JMPF R4 #001C 0xB0060503, // 001B RAISE 1 K2 K3 - 0x58100004, // 001C LDCONST R4 K4 - 0xB4000004, // 001D CLASS K4 + 0x5810001E, // 001C LDCONST R4 K30 + 0xB400001E, // 001D CLASS K30 0x5C140800, // 001E MOVE R5 R4 0x5C180000, // 001F MOVE R6 R0 0x5C1C0200, // 0020 MOVE R7 R1 @@ -1879,19 +1785,17 @@ be_local_closure(class_Leds_get_gamma, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(gamma), - }), + &be_ktab_class_Leds, /* shared constants */ &be_const_str_get_gamma, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010B, // 0000 GETMBR R1 R0 K11 0x80040200, // 0001 RET 1 R1 }) ) @@ -1906,19 +1810,17 @@ be_local_closure(class_Leds_is_dirty, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), + &be_ktab_class_Leds, /* shared constants */ &be_const_str_is_dirty, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E0003, // 0001 LDINT R3 4 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 @@ -1935,21 +1837,18 @@ be_local_closure(class_Leds_can_show, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(3), - }), + &be_ktab_class_Leds, /* shared constants */ &be_const_str_can_show, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 + 0x8C040106, // 0000 GETMET R1 R0 K6 + 0x580C001F, // 0001 LDCONST R3 K31 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 }) @@ -1965,87 +1864,69 @@ be_local_closure(class_Leds_assign_rmt, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_const_class(be_class_Leds), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(value_error), - /* K3 */ be_nested_str(invalid_X20GPIO_X20number), - /* K4 */ be_nested_str(global), - /* K5 */ be_nested_str(contains), - /* K6 */ be_nested_str(_rmt), - /* K7 */ be_nested_str(gpio), - /* K8 */ be_nested_str(MAX_RMT), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str(push), - /* K11 */ be_nested_str(stop_iteration), - /* K12 */ be_nested_str(pin_used), - /* K13 */ be_nested_str(WS2812), - /* K14 */ be_nested_str(pin), - /* K15 */ be_nested_str(internal_error), - /* K16 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available), - }), + &be_ktab_class_Leds, /* shared constants */ &be_const_str_assign_rmt, &be_const_str_solidified, ( &(const binstruction[72]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x58040018, // 0000 LDCONST R1 K24 0x60080009, // 0001 GETGBL R2 G9 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 0x5C000400, // 0004 MOVE R0 R2 0x14080101, // 0005 LT R2 R0 K1 0x780A0000, // 0006 JMPF R2 #0008 - 0xB0060503, // 0007 RAISE 1 K2 K3 - 0xA40A0800, // 0008 IMPORT R2 K4 + 0xB0060520, // 0007 RAISE 1 K2 K32 + 0xA40A4200, // 0008 IMPORT R2 K33 0x4C0C0000, // 0009 LDNIL R3 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x58180006, // 000B LDCONST R6 K6 + 0x8C100522, // 000A GETMET R4 R2 K34 + 0x58180023, // 000B LDCONST R6 K35 0x7C100400, // 000C CALL R4 2 0x74120021, // 000D JMPT R4 #0030 0x60100012, // 000E GETGBL R4 G18 0x7C100000, // 000F CALL R4 0 0x5C0C0800, // 0010 MOVE R3 R4 - 0x900A0C03, // 0011 SETMBR R2 K6 R3 + 0x900A4603, // 0011 SETMBR R2 K35 R3 0x60100010, // 0012 GETGBL R4 G16 - 0xB8160E00, // 0013 GETNGBL R5 K7 - 0x88140B08, // 0014 GETMBR R5 R5 K8 - 0x04140B09, // 0015 SUB R5 R5 K9 + 0xB8161400, // 0013 GETNGBL R5 K10 + 0x88140B24, // 0014 GETMBR R5 R5 K36 + 0x04140B25, // 0015 SUB R5 R5 K37 0x40160205, // 0016 CONNECT R5 K1 R5 0x7C100200, // 0017 CALL R4 1 0xA8020005, // 0018 EXBLK 0 #001F 0x5C140800, // 0019 MOVE R5 R4 0x7C140000, // 001A CALL R5 0 - 0x8C18070A, // 001B GETMET R6 R3 K10 + 0x8C180726, // 001B GETMET R6 R3 K38 0x5421FFFE, // 001C LDINT R8 -1 0x7C180400, // 001D CALL R6 2 0x7001FFF9, // 001E JMP #0019 - 0x5810000B, // 001F LDCONST R4 K11 + 0x58100027, // 001F LDCONST R4 K39 0xAC100200, // 0020 CATCH R4 1 0 0xB0080000, // 0021 RAISE 2 R0 R0 - 0xB8120E00, // 0022 GETNGBL R4 K7 - 0x8C10090C, // 0023 GETMET R4 R4 K12 - 0xB81A0E00, // 0024 GETNGBL R6 K7 + 0xB8121400, // 0022 GETNGBL R4 K10 + 0x8C100928, // 0023 GETMET R4 R4 K40 + 0xB81A1400, // 0024 GETNGBL R6 K10 0x88180D0D, // 0025 GETMBR R6 R6 K13 0x581C0001, // 0026 LDCONST R7 K1 0x7C100600, // 0027 CALL R4 3 0x78120006, // 0028 JMPF R4 #0030 - 0xB8120E00, // 0029 GETNGBL R4 K7 - 0x8C10090E, // 002A GETMET R4 R4 K14 - 0xB81A0E00, // 002B GETNGBL R6 K7 + 0xB8121400, // 0029 GETNGBL R4 K10 + 0x8C10090C, // 002A GETMET R4 R4 K12 + 0xB81A1400, // 002B GETNGBL R6 K10 0x88180D0D, // 002C GETMBR R6 R6 K13 0x581C0001, // 002D LDCONST R7 K1 0x7C100600, // 002E CALL R4 3 0x980E0204, // 002F SETIDX R3 K1 R4 - 0x880C0506, // 0030 GETMBR R3 R2 K6 + 0x880C0523, // 0030 GETMBR R3 R2 K35 0x58100001, // 0031 LDCONST R4 K1 0x5415FFFE, // 0032 LDINT R5 -1 - 0xB81A0E00, // 0033 GETNGBL R6 K7 - 0x88180D08, // 0034 GETMBR R6 R6 K8 + 0xB81A1400, // 0033 GETNGBL R6 K10 + 0x88180D24, // 0034 GETMBR R6 R6 K36 0x14180806, // 0035 LT R6 R4 R6 0x781A000A, // 0036 JMPF R6 #0042 0x94180604, // 0037 GETIDX R6 R3 R4 @@ -2057,13 +1938,13 @@ be_local_closure(class_Leds_assign_rmt, /* name */ 0x141C0B01, // 003D LT R7 R5 K1 0x781E0000, // 003E JMPF R7 #0040 0x5C140800, // 003F MOVE R5 R4 - 0x00100909, // 0040 ADD R4 R4 K9 + 0x00100925, // 0040 ADD R4 R4 K37 0x7001FFF0, // 0041 JMP #0033 0x28180B01, // 0042 GE R6 R5 K1 0x781A0001, // 0043 JMPF R6 #0046 0x980C0A00, // 0044 SETIDX R3 R5 R0 0x80040A00, // 0045 RET 1 R5 - 0xB0061F10, // 0046 RAISE 1 K15 K16 + 0xB0062729, // 0046 RAISE 1 K19 K41 0x80000000, // 0047 RET 0 }) ) @@ -2078,40 +1959,35 @@ be_local_closure(class_Leds_ctor, /* name */ be_nested_proto( 12, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(WS2812_GRB), - /* K3 */ be_nested_str(assign_rmt), - }), + &be_ktab_class_Leds, /* shared constants */ &be_const_str_ctor, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x4C140000, // 0000 LDNIL R5 0x1C140405, // 0001 EQ R5 R2 R5 0x78160003, // 0002 JMPF R5 #0007 - 0x8C140100, // 0003 GETMET R5 R0 K0 + 0x8C140106, // 0003 GETMET R5 R0 K6 0x581C0001, // 0004 LDCONST R7 K1 0x7C140400, // 0005 CALL R5 2 0x70020011, // 0006 JMP #0019 0x4C140000, // 0007 LDNIL R5 0x1C140605, // 0008 EQ R5 R3 R5 0x78160000, // 0009 JMPF R5 #000B - 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x880C012A, // 000A GETMBR R3 R0 K42 0x4C140000, // 000B LDNIL R5 0x1C140805, // 000C EQ R5 R4 R5 0x78160003, // 000D JMPF R5 #0012 - 0x8C140103, // 000E GETMET R5 R0 K3 + 0x8C14012B, // 000E GETMET R5 R0 K43 0x5C1C0400, // 000F MOVE R7 R2 0x7C140400, // 0010 CALL R5 2 0x5C100A00, // 0011 MOVE R4 R5 - 0x8C140100, // 0012 GETMET R5 R0 K0 + 0x8C140106, // 0012 GETMET R5 R0 K6 0x581C0001, // 0013 LDCONST R7 K1 0x5C200200, // 0014 MOVE R8 R1 0x5C240400, // 0015 MOVE R9 R2 @@ -2132,22 +2008,17 @@ be_local_closure(class_Leds_pixels_buffer, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_nested_str(pixel_size), - /* K2 */ be_nested_str(pixel_count), - /* K3 */ be_nested_str(_change_buffer), - }), + &be_ktab_class_Leds, /* shared constants */ &be_const_str_pixels_buffer, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080106, // 0000 GETMET R2 R0 K6 0x54120005, // 0001 LDINT R4 6 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 @@ -2155,15 +2026,15 @@ be_local_closure(class_Leds_pixels_buffer, /* name */ 0x780E0009, // 0005 JMPF R3 #0010 0x600C0015, // 0006 GETGBL R3 G21 0x5C100400, // 0007 MOVE R4 R2 - 0x8C140101, // 0008 GETMET R5 R0 K1 + 0x8C14012C, // 0008 GETMET R5 R0 K44 0x7C140200, // 0009 CALL R5 1 - 0x8C180102, // 000A GETMET R6 R0 K2 + 0x8C18010F, // 000A GETMET R6 R0 K15 0x7C180200, // 000B CALL R6 1 0x08140A06, // 000C MUL R5 R5 R6 0x7C0C0400, // 000D CALL R3 2 0x80040600, // 000E RET 1 R3 0x70020003, // 000F JMP #0014 - 0x8C0C0303, // 0010 GETMET R3 R1 K3 + 0x8C0C032D, // 0010 GETMET R3 R1 K45 0x5C140400, // 0011 MOVE R5 R2 0x7C0C0400, // 0012 CALL R3 2 0x80040200, // 0013 RET 1 R1 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h index 11845e79b..5d4d0254b 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h @@ -121,6 +121,18 @@ be_local_closure(module_lv_tasmota_init, /* name */ ); /*******************************************************************/ +// compact class 'splash_runner' ktab size: 8, total: 9 (saved 8 bytes) +static const bvalue be_ktab_class_splash_runner[8] = { + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(add_driver), + /* K2 */ be_nested_str_weak(display), + /* K3 */ be_nested_str_weak(dim), + /* K4 */ be_nested_str_weak(started), + /* K5 */ be_nested_str_weak(remove_driver), + /* K6 */ be_nested_str_weak(lv), + /* K7 */ be_nested_str_weak(splash), +}; + extern const bclass be_class_splash_runner; @@ -131,16 +143,13 @@ be_local_closure(class_splash_runner_init, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(add_driver), - }), + &be_ktab_class_splash_runner, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -162,36 +171,28 @@ be_local_closure(class_splash_runner_display, /* name */ be_nested_proto( 9, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(display), - /* K1 */ be_nested_str_weak(dim), - /* K2 */ be_nested_str_weak(started), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(remove_driver), - /* K5 */ be_nested_str_weak(lv), - /* K6 */ be_nested_str_weak(splash), - }), + &be_ktab_class_splash_runner, /* shared constants */ be_str_weak(display), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x1C180301, // 0001 EQ R6 R1 K1 + 0xA4160400, // 0000 IMPORT R5 K2 + 0x1C180303, // 0001 EQ R6 R1 K3 0x781A0009, // 0002 JMPF R6 #000D - 0x8C180B02, // 0003 GETMET R6 R5 K2 + 0x8C180B04, // 0003 GETMET R6 R5 K4 0x7C180200, // 0004 CALL R6 1 0x781A0006, // 0005 JMPF R6 #000D - 0xB81A0600, // 0006 GETNGBL R6 K3 - 0x8C180D04, // 0007 GETMET R6 R6 K4 + 0xB81A0000, // 0006 GETNGBL R6 K0 + 0x8C180D05, // 0007 GETMET R6 R6 K5 0x5C200000, // 0008 MOVE R8 R0 0x7C180400, // 0009 CALL R6 2 - 0xB81A0A00, // 000A GETNGBL R6 K5 - 0x8C180D06, // 000B GETMET R6 R6 K6 + 0xB81A0C00, // 000A GETNGBL R6 K6 + 0x8C180D07, // 000B GETMET R6 R6 K7 0x7C180200, // 000C CALL R6 1 0x80000000, // 000D RET 0 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h index 57edb8d6e..5382c8446 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h @@ -3,6 +3,37 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'lv_clock' ktab size: 27, total: 32 (saved 40 bytes) +static const bvalue be_ktab_class_lv_clock[27] = { + /* K0 */ be_nested_str_weak(hour), + /* K1 */ be_nested_str_weak(minute), + /* K2 */ be_nested_str_weak(sec), + /* K3 */ be_nested_str_weak(_X2502d_X25s_X2502d), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(_X3A), + /* K6 */ be_nested_str_weak(_X20), + /* K7 */ be_nested_str_weak(set_text), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(time_dump), + /* K10 */ be_nested_str_weak(rtc), + /* K11 */ be_nested_str_weak(local), + /* K12 */ be_nested_str_weak(year), + /* K13 */ be_nested_str_weak(set_time), + /* K14 */ be_nested_str_weak(min), + /* K15 */ be_nested_str_weak(init), + /* K16 */ be_nested_str_weak(lv), + /* K17 */ be_nested_str_weak(seg7_font), + /* K18 */ be_nested_str_weak(set_style_text_font), + /* K19 */ be_nested_str_weak(PART_MAIN), + /* K20 */ be_nested_str_weak(STATE_DEFAULT), + /* K21 */ be_nested_str_weak(_X2D_X2D_X3A_X2D_X2D), + /* K22 */ be_nested_str_weak(add_event_cb), + /* K23 */ be_nested_str_weak(EVENT_DELETE), + /* K24 */ be_const_int(0), + /* K25 */ be_nested_str_weak(add_driver), + /* K26 */ be_nested_str_weak(remove_driver), +}; + extern const bclass be_class_lv_clock; @@ -13,22 +44,13 @@ be_local_closure(class_lv_clock_set_time, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(hour), - /* K1 */ be_nested_str_weak(minute), - /* K2 */ be_nested_str_weak(sec), - /* K3 */ be_nested_str_weak(_X2502d_X25s_X2502d), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(_X3A), - /* K6 */ be_nested_str_weak(_X20), - /* K7 */ be_nested_str_weak(set_text), - }), + &be_ktab_class_lv_clock, /* shared constants */ be_str_weak(set_time), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ @@ -71,41 +93,31 @@ be_local_closure(class_lv_clock_every_second, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(time_dump), - /* K2 */ be_nested_str_weak(rtc), - /* K3 */ be_nested_str_weak(local), - /* K4 */ be_nested_str_weak(year), - /* K5 */ be_nested_str_weak(set_time), - /* K6 */ be_nested_str_weak(hour), - /* K7 */ be_nested_str_weak(min), - /* K8 */ be_nested_str_weak(sec), - }), + &be_ktab_class_lv_clock, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0000, // 0002 GETNGBL R3 K0 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0xB8061000, // 0000 GETNGBL R1 K8 + 0x8C040309, // 0001 GETMET R1 R1 K9 + 0xB80E1000, // 0002 GETNGBL R3 K8 + 0x8C0C070A, // 0003 GETMET R3 R3 K10 0x7C0C0200, // 0004 CALL R3 1 - 0x940C0703, // 0005 GETIDX R3 R3 K3 + 0x940C070B, // 0005 GETIDX R3 R3 K11 0x7C040400, // 0006 CALL R1 2 - 0x94080304, // 0007 GETIDX R2 R1 K4 + 0x9408030C, // 0007 GETIDX R2 R1 K12 0x540E07B1, // 0008 LDINT R3 1970 0x20080403, // 0009 NE R2 R2 R3 0x780A0004, // 000A JMPF R2 #0010 - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x94100306, // 000C GETIDX R4 R1 K6 - 0x94140307, // 000D GETIDX R5 R1 K7 - 0x94180308, // 000E GETIDX R6 R1 K8 + 0x8C08010D, // 000B GETMET R2 R0 K13 + 0x94100300, // 000C GETIDX R4 R1 K0 + 0x9414030E, // 000D GETIDX R5 R1 K14 + 0x94180302, // 000E GETIDX R6 R1 K2 0x7C080800, // 000F CALL R2 4 0x80000000, // 0010 RET 0 }) @@ -121,7 +133,7 @@ be_local_closure(class_lv_clock_init, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -151,56 +163,42 @@ be_local_closure(class_lv_clock_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(lv), - /* K2 */ be_nested_str_weak(seg7_font), - /* K3 */ be_nested_str_weak(set_style_text_font), - /* K4 */ be_nested_str_weak(PART_MAIN), - /* K5 */ be_nested_str_weak(STATE_DEFAULT), - /* K6 */ be_nested_str_weak(set_text), - /* K7 */ be_nested_str_weak(_X2D_X2D_X3A_X2D_X2D), - /* K8 */ be_nested_str_weak(add_event_cb), - /* K9 */ be_nested_str_weak(EVENT_DELETE), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(add_driver), - }), + &be_ktab_class_lv_clock, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[36]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C08050F, // 0003 GETMET R2 R2 K15 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C080502, // 0007 GETMET R2 R2 K2 + 0xB80A2000, // 0006 GETNGBL R2 K16 + 0x8C080511, // 0007 GETMET R2 R2 K17 0x5412000F, // 0008 LDINT R4 16 0x7C080400, // 0009 CALL R2 2 0x4C0C0000, // 000A LDNIL R3 0x200C0403, // 000B NE R3 R2 R3 0x780E0007, // 000C JMPF R3 #0015 - 0x8C0C0103, // 000D GETMET R3 R0 K3 + 0x8C0C0112, // 000D GETMET R3 R0 K18 0x5C140400, // 000E MOVE R5 R2 - 0xB81A0200, // 000F GETNGBL R6 K1 - 0x88180D04, // 0010 GETMBR R6 R6 K4 - 0xB81E0200, // 0011 GETNGBL R7 K1 - 0x881C0F05, // 0012 GETMBR R7 R7 K5 + 0xB81A2000, // 000F GETNGBL R6 K16 + 0x88180D13, // 0010 GETMBR R6 R6 K19 + 0xB81E2000, // 0011 GETNGBL R7 K16 + 0x881C0F14, // 0012 GETMBR R7 R7 K20 0x30180C07, // 0013 OR R6 R6 R7 0x7C0C0600, // 0014 CALL R3 3 - 0x8C0C0106, // 0015 GETMET R3 R0 K6 - 0x58140007, // 0016 LDCONST R5 K7 + 0x8C0C0107, // 0015 GETMET R3 R0 K7 + 0x58140015, // 0016 LDCONST R5 K21 0x7C0C0400, // 0017 CALL R3 2 - 0x8C0C0108, // 0018 GETMET R3 R0 K8 + 0x8C0C0116, // 0018 GETMET R3 R0 K22 0x84140000, // 0019 CLOSURE R5 P0 - 0xB81A0200, // 001A GETNGBL R6 K1 - 0x88180D09, // 001B GETMBR R6 R6 K9 - 0x581C000A, // 001C LDCONST R7 K10 + 0xB81A2000, // 001A GETNGBL R6 K16 + 0x88180D17, // 001B GETMBR R6 R6 K23 + 0x581C0018, // 001C LDCONST R7 K24 0x7C0C0800, // 001D CALL R3 4 - 0xB80E1600, // 001E GETNGBL R3 K11 - 0x8C0C070C, // 001F GETMET R3 R3 K12 + 0xB80E1000, // 001E GETNGBL R3 K8 + 0x8C0C0719, // 001F GETMET R3 R3 K25 0x5C140000, // 0020 MOVE R5 R0 0x7C0C0400, // 0021 CALL R3 2 0xA0000000, // 0022 CLOSE R0 @@ -218,21 +216,18 @@ be_local_closure(class_lv_clock_before_del, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - }), + &be_ktab_class_lv_clock, /* shared constants */ be_str_weak(before_del), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0xB8061000, // 0000 GETNGBL R1 K8 + 0x8C04031A, // 0001 GETMET R1 R1 K26 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 0x80000000, // 0004 RET 0 @@ -377,6 +372,54 @@ be_local_class(lv_clock_icon, })), be_str_weak(lv_clock_icon) ); +// compact class 'lv_signal_arcs' ktab size: 44, total: 52 (saved 64 bytes) +static const bvalue be_ktab_class_lv_signal_arcs[44] = { + /* K0 */ be_nested_str_weak(get_code), + /* K1 */ be_nested_str_weak(math), + /* K2 */ be_nested_str_weak(get_height), + /* K3 */ be_nested_str_weak(get_width), + /* K4 */ be_const_int(2), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(lv), + /* K7 */ be_nested_str_weak(EVENT_DRAW_MAIN), + /* K8 */ be_nested_str_weak(arc_dsc), + /* K9 */ be_nested_str_weak(get_param), + /* K10 */ be_nested_str_weak(get_layer), + /* K11 */ be_nested_str_weak(get_coords), + /* K12 */ be_nested_str_weak(area), + /* K13 */ be_nested_str_weak(x1), + /* K14 */ be_nested_str_weak(y1), + /* K15 */ be_nested_str_weak(draw_arc_dsc_init), + /* K16 */ be_nested_str_weak(init_draw_arc_dsc), + /* K17 */ be_nested_str_weak(PART_MAIN), + /* K18 */ be_nested_str_weak(rounded), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_str_weak(width), + /* K21 */ be_nested_str_weak(get_style_line_color), + /* K22 */ be_nested_str_weak(STATE_DEFAULT), + /* K23 */ be_nested_str_weak(get_style_bg_color), + /* K24 */ be_nested_str_weak(deg), + /* K25 */ be_nested_str_weak(acos), + /* K26 */ be_nested_str_weak(center_x), + /* K27 */ be_nested_str_weak(center_y), + /* K28 */ be_nested_str_weak(color), + /* K29 */ be_nested_str_weak(percentage), + /* K30 */ be_nested_str_weak(radius), + /* K31 */ be_const_int(0), + /* K32 */ be_nested_str_weak(start_angle), + /* K33 */ be_nested_str_weak(end_angle), + /* K34 */ be_nested_str_weak(draw_arc), + /* K35 */ be_nested_str_weak(init), + /* K36 */ be_nested_str_weak(set_style_bg_opa), + /* K37 */ be_nested_str_weak(set_style_border_width), + /* K38 */ be_nested_str_weak(set_style_pad_all), + /* K39 */ be_nested_str_weak(draw_arc_dsc), + /* K40 */ be_nested_str_weak(add_event_cb), + /* K41 */ be_nested_str_weak(widget_event), + /* K42 */ be_const_int(0), + /* K43 */ be_nested_str_weak(invalidate), +}; + extern const bclass be_class_lv_signal_arcs; @@ -387,7 +430,7 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */ be_nested_proto( 28, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -417,43 +460,7 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ - /* K0 */ be_nested_str_weak(get_code), - /* K1 */ be_nested_str_weak(math), - /* K2 */ be_nested_str_weak(get_height), - /* K3 */ be_nested_str_weak(get_width), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(lv), - /* K7 */ be_nested_str_weak(EVENT_DRAW_MAIN), - /* K8 */ be_nested_str_weak(arc_dsc), - /* K9 */ be_nested_str_weak(get_param), - /* K10 */ be_nested_str_weak(get_layer), - /* K11 */ be_nested_str_weak(get_coords), - /* K12 */ be_nested_str_weak(area), - /* K13 */ be_nested_str_weak(x1), - /* K14 */ be_nested_str_weak(y1), - /* K15 */ be_nested_str_weak(draw_arc_dsc_init), - /* K16 */ be_nested_str_weak(init_draw_arc_dsc), - /* K17 */ be_nested_str_weak(PART_MAIN), - /* K18 */ be_nested_str_weak(rounded), - /* K19 */ be_const_int(1), - /* K20 */ be_nested_str_weak(width), - /* K21 */ be_nested_str_weak(get_style_line_color), - /* K22 */ be_nested_str_weak(STATE_DEFAULT), - /* K23 */ be_nested_str_weak(get_style_bg_color), - /* K24 */ be_nested_str_weak(deg), - /* K25 */ be_nested_str_weak(acos), - /* K26 */ be_nested_str_weak(center_x), - /* K27 */ be_nested_str_weak(center_y), - /* K28 */ be_nested_str_weak(color), - /* K29 */ be_nested_str_weak(percentage), - /* K30 */ be_nested_str_weak(radius), - /* K31 */ be_const_int(0), - /* K32 */ be_nested_str_weak(start_angle), - /* K33 */ be_nested_str_weak(end_angle), - /* K34 */ be_nested_str_weak(draw_arc), - }), + &be_ktab_class_lv_signal_arcs, /* shared constants */ be_str_weak(widget_event), &be_const_str_solidified, ( &(const binstruction[161]) { /* code */ @@ -631,19 +638,17 @@ be_local_closure(class_lv_signal_arcs_get_percentage, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(percentage), - }), + &be_ktab_class_lv_signal_arcs, /* shared constants */ be_str_weak(get_percentage), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804011D, // 0000 GETMBR R1 R0 K29 0x80040200, // 0001 RET 1 R1 }) ) @@ -658,63 +663,49 @@ be_local_closure(class_lv_signal_arcs_init, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(set_style_bg_opa), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(set_style_border_width), - /* K4 */ be_nested_str_weak(set_style_pad_all), - /* K5 */ be_nested_str_weak(percentage), - /* K6 */ be_nested_str_weak(area), - /* K7 */ be_nested_str_weak(lv), - /* K8 */ be_nested_str_weak(arc_dsc), - /* K9 */ be_nested_str_weak(draw_arc_dsc), - /* K10 */ be_nested_str_weak(add_event_cb), - /* K11 */ be_nested_str_weak(widget_event), - /* K12 */ be_nested_str_weak(EVENT_DRAW_MAIN), - }), + &be_ktab_class_lv_signal_arcs, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080523, // 0003 GETMET R2 R2 K35 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x8C080101, // 0006 GETMET R2 R0 K1 - 0x58100002, // 0007 LDCONST R4 K2 - 0x58140002, // 0008 LDCONST R5 K2 + 0x8C080124, // 0006 GETMET R2 R0 K36 + 0x5810001F, // 0007 LDCONST R4 K31 + 0x5814001F, // 0008 LDCONST R5 K31 0x7C080600, // 0009 CALL R2 3 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100002, // 000B LDCONST R4 K2 - 0x58140002, // 000C LDCONST R5 K2 + 0x8C080125, // 000A GETMET R2 R0 K37 + 0x5810001F, // 000B LDCONST R4 K31 + 0x5814001F, // 000C LDCONST R5 K31 0x7C080600, // 000D CALL R2 3 - 0x8C080104, // 000E GETMET R2 R0 K4 - 0x58100002, // 000F LDCONST R4 K2 - 0x58140002, // 0010 LDCONST R5 K2 + 0x8C080126, // 000E GETMET R2 R0 K38 + 0x5810001F, // 000F LDCONST R4 K31 + 0x5814001F, // 0010 LDCONST R5 K31 0x7C080600, // 0011 CALL R2 3 0x540A0063, // 0012 LDINT R2 100 - 0x90020A02, // 0013 SETMBR R0 K5 R2 - 0xB80A0E00, // 0014 GETNGBL R2 K7 - 0x8C080506, // 0015 GETMET R2 R2 K6 + 0x90023A02, // 0013 SETMBR R0 K29 R2 + 0xB80A0C00, // 0014 GETNGBL R2 K6 + 0x8C08050C, // 0015 GETMET R2 R2 K12 0x7C080200, // 0016 CALL R2 1 - 0x90020C02, // 0017 SETMBR R0 K6 R2 - 0xB80A0E00, // 0018 GETNGBL R2 K7 - 0x8C080509, // 0019 GETMET R2 R2 K9 + 0x90021802, // 0017 SETMBR R0 K12 R2 + 0xB80A0C00, // 0018 GETNGBL R2 K6 + 0x8C080527, // 0019 GETMET R2 R2 K39 0x7C080200, // 001A CALL R2 1 0x90021002, // 001B SETMBR R0 K8 R2 - 0x8C08010A, // 001C GETMET R2 R0 K10 - 0x8810010B, // 001D GETMBR R4 R0 K11 - 0xB8160E00, // 001E GETNGBL R5 K7 - 0x88140B0C, // 001F GETMBR R5 R5 K12 - 0x58180002, // 0020 LDCONST R6 K2 + 0x8C080128, // 001C GETMET R2 R0 K40 + 0x88100129, // 001D GETMBR R4 R0 K41 + 0xB8160C00, // 001E GETNGBL R5 K6 + 0x88140B07, // 001F GETMBR R5 R5 K7 + 0x5818001F, // 0020 LDCONST R6 K31 0x7C080800, // 0021 CALL R2 4 0x80000000, // 0022 RET 0 }) @@ -730,36 +721,32 @@ be_local_closure(class_lv_signal_arcs_set_percentage, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(percentage), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(invalidate), - }), + &be_ktab_class_lv_signal_arcs, /* shared constants */ be_str_weak(set_percentage), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808011D, // 0000 GETMBR R2 R0 K29 0x540E0018, // 0001 LDINT R3 25 0x0C080403, // 0002 DIV R2 R2 R3 0x540E0063, // 0003 LDINT R3 100 0x240C0203, // 0004 GT R3 R1 R3 0x780E0000, // 0005 JMPF R3 #0007 0x54060063, // 0006 LDINT R1 100 - 0x140C0301, // 0007 LT R3 R1 K1 + 0x140C032A, // 0007 LT R3 R1 K42 0x780E0000, // 0008 JMPF R3 #000A - 0x58040001, // 0009 LDCONST R1 K1 - 0x90020001, // 000A SETMBR R0 K0 R1 + 0x5804002A, // 0009 LDCONST R1 K42 + 0x90023A01, // 000A SETMBR R0 K29 R1 0x540E0018, // 000B LDINT R3 25 0x0C0C0203, // 000C DIV R3 R1 R3 0x200C0403, // 000D NE R3 R2 R3 0x780E0001, // 000E JMPF R3 #0011 - 0x8C0C0102, // 000F GETMET R3 R0 K2 + 0x8C0C012B, // 000F GETMET R3 R0 K43 0x7C0C0200, // 0010 CALL R3 1 0x80000000, // 0011 RET 0 }) @@ -787,6 +774,20 @@ be_local_class(lv_signal_arcs, })), be_str_weak(lv_signal_arcs) ); +// compact class 'lv_wifi_arcs' ktab size: 10, total: 14 (saved 32 bytes) +static const bvalue be_ktab_class_lv_wifi_arcs[10] = { + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(remove_driver), + /* K2 */ be_nested_str_weak(init), + /* K3 */ be_nested_str_weak(add_driver), + /* K4 */ be_nested_str_weak(set_percentage), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(wifi), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(quality), + /* K9 */ be_nested_str_weak(ip), +}; + extern const bclass be_class_lv_wifi_arcs; @@ -797,16 +798,13 @@ be_local_closure(class_lv_wifi_arcs_before_del, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - }), + &be_ktab_class_lv_wifi_arcs, /* shared constants */ be_str_weak(before_del), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -828,34 +826,28 @@ be_local_closure(class_lv_wifi_arcs_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(add_driver), - /* K3 */ be_nested_str_weak(set_percentage), - /* K4 */ be_const_int(0), - }), + &be_ktab_class_lv_wifi_arcs, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080502, // 0003 GETMET R2 R2 K2 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C080502, // 0007 GETMET R2 R2 K2 + 0xB80A0000, // 0006 GETNGBL R2 K0 + 0x8C080503, // 0007 GETMET R2 R2 K3 0x5C100000, // 0008 MOVE R4 R0 0x7C080400, // 0009 CALL R2 2 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 + 0x8C080104, // 000A GETMET R2 R0 K4 + 0x58100005, // 000B LDCONST R4 K5 0x7C080400, // 000C CALL R2 2 0x80000000, // 000D RET 0 }) @@ -871,44 +863,36 @@ be_local_closure(class_lv_wifi_arcs_every_second, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(wifi), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(quality), - /* K4 */ be_nested_str_weak(ip), - /* K5 */ be_nested_str_weak(set_percentage), - /* K6 */ be_const_int(0), - }), + &be_ktab_class_lv_wifi_arcs, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040306, // 0001 GETMET R1 R1 K6 0x7C040200, // 0002 CALL R1 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x58100003, // 0004 LDCONST R4 K3 + 0x8C080307, // 0003 GETMET R2 R1 K7 + 0x58100008, // 0004 LDCONST R4 K8 0x7C080400, // 0005 CALL R2 2 - 0x8C0C0302, // 0006 GETMET R3 R1 K2 - 0x58140004, // 0007 LDCONST R5 K4 + 0x8C0C0307, // 0006 GETMET R3 R1 K7 + 0x58140009, // 0007 LDCONST R5 K9 0x7C0C0400, // 0008 CALL R3 2 0x4C100000, // 0009 LDNIL R4 0x1C100604, // 000A EQ R4 R3 R4 0x78120003, // 000B JMPF R4 #0010 - 0x8C100105, // 000C GETMET R4 R0 K5 - 0x58180006, // 000D LDCONST R6 K6 + 0x8C100104, // 000C GETMET R4 R0 K4 + 0x58180005, // 000D LDCONST R6 K5 0x7C100400, // 000E CALL R4 2 0x70020005, // 000F JMP #0016 0x4C100000, // 0010 LDNIL R4 0x20100404, // 0011 NE R4 R2 R4 0x78120002, // 0012 JMPF R4 #0016 - 0x8C100105, // 0013 GETMET R4 R0 K5 + 0x8C100104, // 0013 GETMET R4 R0 K4 0x5C180400, // 0014 MOVE R6 R2 0x7C100400, // 0015 CALL R4 2 0x80000000, // 0016 RET 0 @@ -1058,6 +1042,51 @@ be_local_class(lv_wifi_arcs_icon, })), be_str_weak(lv_wifi_arcs_icon) ); +// compact class 'lv_signal_bars' ktab size: 41, total: 49 (saved 64 bytes) +static const bvalue be_ktab_class_lv_signal_bars[41] = { + /* K0 */ be_nested_str_weak(percentage), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(invalidate), + /* K3 */ be_nested_str_weak(get_code), + /* K4 */ be_nested_str_weak(get_height), + /* K5 */ be_nested_str_weak(get_width), + /* K6 */ be_const_int(3), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(lv), + /* K9 */ be_nested_str_weak(EVENT_DRAW_MAIN), + /* K10 */ be_nested_str_weak(line_dsc), + /* K11 */ be_nested_str_weak(get_param), + /* K12 */ be_nested_str_weak(get_layer), + /* K13 */ be_nested_str_weak(get_coords), + /* K14 */ be_nested_str_weak(area), + /* K15 */ be_nested_str_weak(x1), + /* K16 */ be_nested_str_weak(y1), + /* K17 */ be_nested_str_weak(draw_line_dsc_init), + /* K18 */ be_nested_str_weak(init_draw_line_dsc), + /* K19 */ be_nested_str_weak(PART_MAIN), + /* K20 */ be_nested_str_weak(round_start), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(round_end), + /* K23 */ be_nested_str_weak(width), + /* K24 */ be_nested_str_weak(get_style_line_color), + /* K25 */ be_nested_str_weak(STATE_DEFAULT), + /* K26 */ be_nested_str_weak(get_style_bg_color), + /* K27 */ be_nested_str_weak(color), + /* K28 */ be_nested_str_weak(p1_y), + /* K29 */ be_nested_str_weak(p1_x), + /* K30 */ be_nested_str_weak(p2_y), + /* K31 */ be_nested_str_weak(p2_x), + /* K32 */ be_nested_str_weak(draw_line), + /* K33 */ be_nested_str_weak(stop_iteration), + /* K34 */ be_nested_str_weak(init), + /* K35 */ be_nested_str_weak(set_style_bg_opa), + /* K36 */ be_const_int(0), + /* K37 */ be_nested_str_weak(set_style_border_width), + /* K38 */ be_nested_str_weak(draw_line_dsc), + /* K39 */ be_nested_str_weak(add_event_cb), + /* K40 */ be_nested_str_weak(widget_event), +}; + extern const bclass be_class_lv_signal_bars; @@ -1068,17 +1097,13 @@ be_local_closure(class_lv_signal_bars_set_percentage, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(percentage), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(invalidate), - }), + &be_ktab_class_lv_signal_bars, /* shared constants */ be_str_weak(set_percentage), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -1113,15 +1138,13 @@ be_local_closure(class_lv_signal_bars_get_percentage, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(percentage), - }), + &be_ktab_class_lv_signal_bars, /* shared constants */ be_str_weak(get_percentage), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -1140,7 +1163,7 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ be_nested_proto( 22, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1170,112 +1193,78 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ - /* K0 */ be_nested_str_weak(get_code), - /* K1 */ be_nested_str_weak(get_height), - /* K2 */ be_nested_str_weak(get_width), - /* K3 */ be_const_int(3), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(lv), - /* K6 */ be_nested_str_weak(EVENT_DRAW_MAIN), - /* K7 */ be_nested_str_weak(line_dsc), - /* K8 */ be_nested_str_weak(get_param), - /* K9 */ be_nested_str_weak(get_layer), - /* K10 */ be_nested_str_weak(get_coords), - /* K11 */ be_nested_str_weak(area), - /* K12 */ be_nested_str_weak(x1), - /* K13 */ be_nested_str_weak(y1), - /* K14 */ be_nested_str_weak(draw_line_dsc_init), - /* K15 */ be_nested_str_weak(init_draw_line_dsc), - /* K16 */ be_nested_str_weak(PART_MAIN), - /* K17 */ be_nested_str_weak(round_start), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(round_end), - /* K20 */ be_nested_str_weak(width), - /* K21 */ be_nested_str_weak(get_style_line_color), - /* K22 */ be_nested_str_weak(STATE_DEFAULT), - /* K23 */ be_nested_str_weak(get_style_bg_color), - /* K24 */ be_const_int(0), - /* K25 */ be_nested_str_weak(color), - /* K26 */ be_nested_str_weak(percentage), - /* K27 */ be_nested_str_weak(p1_y), - /* K28 */ be_nested_str_weak(p1_x), - /* K29 */ be_nested_str_weak(p2_y), - /* K30 */ be_nested_str_weak(p2_x), - /* K31 */ be_nested_str_weak(draw_line), - /* K32 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_lv_signal_bars, /* shared constants */ be_str_weak(widget_event), &be_const_str_solidified, ( &(const binstruction[105]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 + 0x8C080303, // 0000 GETMET R2 R1 K3 0x7C080200, // 0001 CALL R2 1 0x840C0000, // 0002 CLOSURE R3 P0 - 0x8C100101, // 0003 GETMET R4 R0 K1 + 0x8C100104, // 0003 GETMET R4 R0 K4 0x7C100200, // 0004 CALL R4 1 - 0x8C140102, // 0005 GETMET R5 R0 K2 + 0x8C140105, // 0005 GETMET R5 R0 K5 0x7C140200, // 0006 CALL R5 1 0x5C180600, // 0007 MOVE R6 R3 0x541E000E, // 0008 LDINT R7 15 0x0C1C0A07, // 0009 DIV R7 R5 R7 0x7C180200, // 000A CALL R6 1 0x5C1C0600, // 000B MOVE R7 R3 - 0x08200D03, // 000C MUL R8 R6 K3 + 0x08200D06, // 000C MUL R8 R6 K6 0x04200A08, // 000D SUB R8 R5 R8 0x54260003, // 000E LDINT R9 4 0x0C201009, // 000F DIV R8 R8 R9 0x7C1C0200, // 0010 CALL R7 1 - 0x0C200F04, // 0011 DIV R8 R7 K4 - 0xB8260A00, // 0012 GETNGBL R9 K5 - 0x88241306, // 0013 GETMBR R9 R9 K6 + 0x0C200F07, // 0011 DIV R8 R7 K7 + 0xB8261000, // 0012 GETNGBL R9 K8 + 0x88241309, // 0013 GETMBR R9 R9 K9 0x1C240409, // 0014 EQ R9 R2 R9 0x78260051, // 0015 JMPF R9 #0068 - 0x88240107, // 0016 GETMBR R9 R0 K7 - 0x8C280308, // 0017 GETMET R10 R1 K8 + 0x8824010A, // 0016 GETMBR R9 R0 K10 + 0x8C28030B, // 0017 GETMET R10 R1 K11 0x7C280200, // 0018 CALL R10 1 - 0x8C2C0309, // 0019 GETMET R11 R1 K9 + 0x8C2C030C, // 0019 GETMET R11 R1 K12 0x7C2C0200, // 001A CALL R11 1 - 0x8C30010A, // 001B GETMET R12 R0 K10 - 0x8838010B, // 001C GETMBR R14 R0 K11 + 0x8C30010D, // 001B GETMET R12 R0 K13 + 0x8838010E, // 001C GETMBR R14 R0 K14 0x7C300400, // 001D CALL R12 2 - 0x8830010B, // 001E GETMBR R12 R0 K11 - 0x8830190C, // 001F GETMBR R12 R12 K12 - 0x8834010B, // 0020 GETMBR R13 R0 K11 - 0x88341B0D, // 0021 GETMBR R13 R13 K13 - 0xB83A0A00, // 0022 GETNGBL R14 K5 - 0x8C381D0E, // 0023 GETMET R14 R14 K14 + 0x8830010E, // 001E GETMBR R12 R0 K14 + 0x8830190F, // 001F GETMBR R12 R12 K15 + 0x8834010E, // 0020 GETMBR R13 R0 K14 + 0x88341B10, // 0021 GETMBR R13 R13 K16 + 0xB83A1000, // 0022 GETNGBL R14 K8 + 0x8C381D11, // 0023 GETMET R14 R14 K17 0x5C401200, // 0024 MOVE R16 R9 0x7C380400, // 0025 CALL R14 2 - 0x8C38010F, // 0026 GETMET R14 R0 K15 - 0xB8420A00, // 0027 GETNGBL R16 K5 - 0x88402110, // 0028 GETMBR R16 R16 K16 + 0x8C380112, // 0026 GETMET R14 R0 K18 + 0xB8421000, // 0027 GETNGBL R16 K8 + 0x88402113, // 0028 GETMBR R16 R16 K19 0x5C441200, // 0029 MOVE R17 R9 0x7C380600, // 002A CALL R14 3 - 0x90262312, // 002B SETMBR R9 K17 K18 - 0x90262712, // 002C SETMBR R9 K19 K18 - 0x90262807, // 002D SETMBR R9 K20 R7 - 0x8C380115, // 002E GETMET R14 R0 K21 - 0xB8420A00, // 002F GETNGBL R16 K5 - 0x88402110, // 0030 GETMBR R16 R16 K16 - 0xB8460A00, // 0031 GETNGBL R17 K5 - 0x88442316, // 0032 GETMBR R17 R17 K22 + 0x90262915, // 002B SETMBR R9 K20 K21 + 0x90262D15, // 002C SETMBR R9 K22 K21 + 0x90262E07, // 002D SETMBR R9 K23 R7 + 0x8C380118, // 002E GETMET R14 R0 K24 + 0xB8421000, // 002F GETNGBL R16 K8 + 0x88402113, // 0030 GETMBR R16 R16 K19 + 0xB8461000, // 0031 GETNGBL R17 K8 + 0x88442319, // 0032 GETMBR R17 R17 K25 0x30402011, // 0033 OR R16 R16 R17 0x7C380400, // 0034 CALL R14 2 - 0x8C3C0117, // 0035 GETMET R15 R0 K23 - 0xB8460A00, // 0036 GETNGBL R17 K5 - 0x88442310, // 0037 GETMBR R17 R17 K16 - 0xB84A0A00, // 0038 GETNGBL R18 K5 - 0x88482516, // 0039 GETMBR R18 R18 K22 + 0x8C3C011A, // 0035 GETMET R15 R0 K26 + 0xB8461000, // 0036 GETNGBL R17 K8 + 0x88442313, // 0037 GETMBR R17 R17 K19 + 0xB84A1000, // 0038 GETNGBL R18 K8 + 0x88482519, // 0039 GETMBR R18 R18 K25 0x30442212, // 003A OR R17 R17 R18 0x7C3C0400, // 003B CALL R15 2 0x60400010, // 003C GETGBL R16 G16 - 0x40463103, // 003D CONNECT R17 K24 K3 + 0x40460306, // 003D CONNECT R17 K1 K6 0x7C400200, // 003E CALL R16 1 0xA8020024, // 003F EXBLK 0 #0065 0x5C442000, // 0040 MOVE R17 R16 0x7C440000, // 0041 CALL R17 0 - 0x8848011A, // 0042 GETMBR R18 R0 K26 - 0x004C2312, // 0043 ADD R19 R17 K18 + 0x88480100, // 0042 GETMBR R18 R0 K0 + 0x004C2315, // 0043 ADD R19 R17 K21 0x54520013, // 0044 LDINT R20 20 0x084C2614, // 0045 MUL R19 R19 R20 0x28482413, // 0046 GE R18 R18 R19 @@ -1283,33 +1272,33 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x5C481C00, // 0048 MOVE R18 R14 0x70020000, // 0049 JMP #004B 0x5C481E00, // 004A MOVE R18 R15 - 0x90263212, // 004B SETMBR R9 K25 R18 + 0x90263612, // 004B SETMBR R9 K27 R18 0x00481A04, // 004C ADD R18 R13 R4 - 0x04482512, // 004D SUB R18 R18 K18 + 0x04482515, // 004D SUB R18 R18 K21 0x04482408, // 004E SUB R18 R18 R8 - 0x90263612, // 004F SETMBR R9 K27 R18 + 0x90263812, // 004F SETMBR R9 K28 R18 0x00480E06, // 0050 ADD R18 R7 R6 0x08482212, // 0051 MUL R18 R17 R18 0x00481812, // 0052 ADD R18 R12 R18 0x00482408, // 0053 ADD R18 R18 R8 - 0x90263812, // 0054 SETMBR R9 K28 R18 - 0x044A0611, // 0055 SUB R18 K3 R17 + 0x90263A12, // 0054 SETMBR R9 K29 R18 + 0x044A0C11, // 0055 SUB R18 K6 R17 0x044C0807, // 0056 SUB R19 R4 R7 0x08482413, // 0057 MUL R18 R18 R19 0x544E0003, // 0058 LDINT R19 4 0x0C482413, // 0059 DIV R18 R18 R19 0x00481A12, // 005A ADD R18 R13 R18 0x00482408, // 005B ADD R18 R18 R8 - 0x90263A12, // 005C SETMBR R9 K29 R18 - 0x8848131C, // 005D GETMBR R18 R9 K28 - 0x90263C12, // 005E SETMBR R9 K30 R18 - 0xB84A0A00, // 005F GETNGBL R18 K5 - 0x8C48251F, // 0060 GETMET R18 R18 K31 + 0x90263C12, // 005C SETMBR R9 K30 R18 + 0x8848131D, // 005D GETMBR R18 R9 K29 + 0x90263E12, // 005E SETMBR R9 K31 R18 + 0xB84A1000, // 005F GETNGBL R18 K8 + 0x8C482520, // 0060 GETMET R18 R18 K32 0x5C501600, // 0061 MOVE R20 R11 0x5C541200, // 0062 MOVE R21 R9 0x7C480600, // 0063 CALL R18 3 0x7001FFDA, // 0064 JMP #0040 - 0x58400020, // 0065 LDCONST R16 K32 + 0x58400021, // 0065 LDCONST R16 K33 0xAC400200, // 0066 CATCH R16 1 0 0xB0080000, // 0067 RAISE 2 R0 R0 0x80000000, // 0068 RET 0 @@ -1326,58 +1315,45 @@ be_local_closure(class_lv_signal_bars_init, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(set_style_bg_opa), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(set_style_border_width), - /* K4 */ be_nested_str_weak(percentage), - /* K5 */ be_nested_str_weak(area), - /* K6 */ be_nested_str_weak(lv), - /* K7 */ be_nested_str_weak(line_dsc), - /* K8 */ be_nested_str_weak(draw_line_dsc), - /* K9 */ be_nested_str_weak(add_event_cb), - /* K10 */ be_nested_str_weak(widget_event), - /* K11 */ be_nested_str_weak(EVENT_DRAW_MAIN), - }), + &be_ktab_class_lv_signal_bars, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080522, // 0003 GETMET R2 R2 K34 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x8C080101, // 0006 GETMET R2 R0 K1 - 0x58100002, // 0007 LDCONST R4 K2 - 0x58140002, // 0008 LDCONST R5 K2 + 0x8C080123, // 0006 GETMET R2 R0 K35 + 0x58100024, // 0007 LDCONST R4 K36 + 0x58140024, // 0008 LDCONST R5 K36 0x7C080600, // 0009 CALL R2 3 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100002, // 000B LDCONST R4 K2 - 0x58140002, // 000C LDCONST R5 K2 + 0x8C080125, // 000A GETMET R2 R0 K37 + 0x58100024, // 000B LDCONST R4 K36 + 0x58140024, // 000C LDCONST R5 K36 0x7C080600, // 000D CALL R2 3 0x540A0063, // 000E LDINT R2 100 - 0x90020802, // 000F SETMBR R0 K4 R2 - 0xB80A0C00, // 0010 GETNGBL R2 K6 - 0x8C080505, // 0011 GETMET R2 R2 K5 + 0x90020002, // 000F SETMBR R0 K0 R2 + 0xB80A1000, // 0010 GETNGBL R2 K8 + 0x8C08050E, // 0011 GETMET R2 R2 K14 0x7C080200, // 0012 CALL R2 1 - 0x90020A02, // 0013 SETMBR R0 K5 R2 - 0xB80A0C00, // 0014 GETNGBL R2 K6 - 0x8C080508, // 0015 GETMET R2 R2 K8 + 0x90021C02, // 0013 SETMBR R0 K14 R2 + 0xB80A1000, // 0014 GETNGBL R2 K8 + 0x8C080526, // 0015 GETMET R2 R2 K38 0x7C080200, // 0016 CALL R2 1 - 0x90020E02, // 0017 SETMBR R0 K7 R2 - 0x8C080109, // 0018 GETMET R2 R0 K9 - 0x8810010A, // 0019 GETMBR R4 R0 K10 - 0xB8160C00, // 001A GETNGBL R5 K6 - 0x88140B0B, // 001B GETMBR R5 R5 K11 - 0x58180002, // 001C LDCONST R6 K2 + 0x90021402, // 0017 SETMBR R0 K10 R2 + 0x8C080127, // 0018 GETMET R2 R0 K39 + 0x88100128, // 0019 GETMBR R4 R0 K40 + 0xB8161000, // 001A GETNGBL R5 K8 + 0x88140B09, // 001B GETMBR R5 R5 K9 + 0x58180024, // 001C LDCONST R6 K36 0x7C080800, // 001D CALL R2 4 0x80000000, // 001E RET 0 }) @@ -1405,6 +1381,20 @@ be_local_class(lv_signal_bars, })), be_str_weak(lv_signal_bars) ); +// compact class 'lv_wifi_bars' ktab size: 10, total: 14 (saved 32 bytes) +static const bvalue be_ktab_class_lv_wifi_bars[10] = { + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(remove_driver), + /* K2 */ be_nested_str_weak(init), + /* K3 */ be_nested_str_weak(add_driver), + /* K4 */ be_nested_str_weak(set_percentage), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(wifi), + /* K7 */ be_nested_str_weak(find), + /* K8 */ be_nested_str_weak(quality), + /* K9 */ be_nested_str_weak(ip), +}; + extern const bclass be_class_lv_wifi_bars; @@ -1415,16 +1405,13 @@ be_local_closure(class_lv_wifi_bars_before_del, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(remove_driver), - }), + &be_ktab_class_lv_wifi_bars, /* shared constants */ be_str_weak(before_del), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -1446,34 +1433,28 @@ be_local_closure(class_lv_wifi_bars_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(add_driver), - /* K3 */ be_nested_str_weak(set_percentage), - /* K4 */ be_const_int(0), - }), + &be_ktab_class_lv_wifi_bars, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080502, // 0003 GETMET R2 R2 K2 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C080502, // 0007 GETMET R2 R2 K2 + 0xB80A0000, // 0006 GETNGBL R2 K0 + 0x8C080503, // 0007 GETMET R2 R2 K3 0x5C100000, // 0008 MOVE R4 R0 0x7C080400, // 0009 CALL R2 2 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 + 0x8C080104, // 000A GETMET R2 R0 K4 + 0x58100005, // 000B LDCONST R4 K5 0x7C080400, // 000C CALL R2 2 0x80000000, // 000D RET 0 }) @@ -1489,44 +1470,36 @@ be_local_closure(class_lv_wifi_bars_every_second, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(wifi), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(quality), - /* K4 */ be_nested_str_weak(ip), - /* K5 */ be_nested_str_weak(set_percentage), - /* K6 */ be_const_int(0), - }), + &be_ktab_class_lv_wifi_bars, /* shared constants */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040306, // 0001 GETMET R1 R1 K6 0x7C040200, // 0002 CALL R1 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x58100003, // 0004 LDCONST R4 K3 + 0x8C080307, // 0003 GETMET R2 R1 K7 + 0x58100008, // 0004 LDCONST R4 K8 0x7C080400, // 0005 CALL R2 2 - 0x8C0C0302, // 0006 GETMET R3 R1 K2 - 0x58140004, // 0007 LDCONST R5 K4 + 0x8C0C0307, // 0006 GETMET R3 R1 K7 + 0x58140009, // 0007 LDCONST R5 K9 0x7C0C0400, // 0008 CALL R3 2 0x4C100000, // 0009 LDNIL R4 0x1C100604, // 000A EQ R4 R3 R4 0x78120003, // 000B JMPF R4 #0010 - 0x8C100105, // 000C GETMET R4 R0 K5 - 0x58180006, // 000D LDCONST R6 K6 + 0x8C100104, // 000C GETMET R4 R0 K4 + 0x58180005, // 000D LDCONST R6 K5 0x7C100400, // 000E CALL R4 2 0x70020005, // 000F JMP #0016 0x4C100000, // 0010 LDNIL R4 0x20100404, // 0011 NE R4 R2 R4 0x78120002, // 0012 JMPF R4 #0016 - 0x8C100105, // 0013 GETMET R4 R0 K5 + 0x8C100104, // 0013 GETMET R4 R0 K4 0x5C180400, // 0014 MOVE R6 R2 0x7C100400, // 0015 CALL R4 2 0x80000000, // 0016 RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h index f3a39c672..a1d6a85b3 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h @@ -3,6 +3,208 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_mqtt_listener; +// compact class 'mqtt_listener' ktab size: 11, total: 17 (saved 48 bytes) +static const bvalue be_ktab_class_mqtt_listener[11] = { + /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X27_X25s_X27_X29_X3E), + /* K1 */ be_nested_str(fulltopic), + /* K2 */ be_nested_str(string), + /* K3 */ be_nested_str(topic), + /* K4 */ be_nested_str(split), + /* K5 */ be_nested_str(_X2F), + /* K6 */ be_nested_str(closure), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str(_X23), + /* K9 */ be_nested_str(_X2B), + /* K10 */ be_const_int(1), +}; + + +extern const bclass be_class_mqtt_listener; + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_mqtt_listener_tostring, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_mqtt_listener, /* shared constants */ + &be_const_str_tostring, + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080000, // 0001 LDCONST R2 K0 + 0x600C0005, // 0002 GETGBL R3 G5 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x88100101, // 0005 GETMBR R4 R0 K1 + 0x7C040600, // 0006 CALL R1 3 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_mqtt_listener_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_mqtt_listener, /* shared constants */ + &be_const_str_init, + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0xA40E0400, // 0000 IMPORT R3 K2 + 0x90020201, // 0001 SETMBR R0 K1 R1 + 0x8C100704, // 0002 GETMET R4 R3 K4 + 0x5C180200, // 0003 MOVE R6 R1 + 0x581C0005, // 0004 LDCONST R7 K5 + 0x7C100600, // 0005 CALL R4 3 + 0x90020604, // 0006 SETMBR R0 K3 R4 + 0x90020C02, // 0007 SETMBR R0 K6 R2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: mqtt_data +********************************************************************/ +be_local_closure(class_mqtt_listener_mqtt_data, /* name */ + be_nested_proto( + 17, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_mqtt_listener, /* shared constants */ + &be_const_str_mqtt_data, + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0xA4160400, // 0000 IMPORT R5 K2 + 0x8C180B04, // 0001 GETMET R6 R5 K4 + 0x5C200200, // 0002 MOVE R8 R1 + 0x58240005, // 0003 LDCONST R9 K5 + 0x7C180600, // 0004 CALL R6 3 + 0x601C000C, // 0005 GETGBL R7 G12 + 0x5C200C00, // 0006 MOVE R8 R6 + 0x7C1C0200, // 0007 CALL R7 1 + 0x88200103, // 0008 GETMBR R8 R0 K3 + 0x6024000C, // 0009 GETGBL R9 G12 + 0x5C281000, // 000A MOVE R10 R8 + 0x7C240200, // 000B CALL R9 1 + 0x58280007, // 000C LDCONST R10 K7 + 0x142C1409, // 000D LT R11 R10 R9 + 0x782E0013, // 000E JMPF R11 #0023 + 0x942C100A, // 000F GETIDX R11 R8 R10 + 0x1C301708, // 0010 EQ R12 R11 K8 + 0x78320001, // 0011 JMPF R12 #0014 + 0x7002000F, // 0012 JMP #0023 + 0x7002000C, // 0013 JMP #0021 + 0x28301407, // 0014 GE R12 R10 R7 + 0x78320002, // 0015 JMPF R12 #0019 + 0x50300000, // 0016 LDBOOL R12 0 0 + 0x80041800, // 0017 RET 1 R12 + 0x70020007, // 0018 JMP #0021 + 0x1C301709, // 0019 EQ R12 R11 K9 + 0x78320000, // 001A JMPF R12 #001C + 0x70020004, // 001B JMP #0021 + 0x94300C0A, // 001C GETIDX R12 R6 R10 + 0x2030160C, // 001D NE R12 R11 R12 + 0x78320001, // 001E JMPF R12 #0021 + 0x50300000, // 001F LDBOOL R12 0 0 + 0x80041800, // 0020 RET 1 R12 + 0x0028150A, // 0021 ADD R10 R10 K10 + 0x7001FFE9, // 0022 JMP #000D + 0x282C1409, // 0023 GE R11 R10 R9 + 0x782E0003, // 0024 JMPF R11 #0029 + 0x202C1207, // 0025 NE R11 R9 R7 + 0x782E0001, // 0026 JMPF R11 #0029 + 0x502C0000, // 0027 LDBOOL R11 0 0 + 0x80041600, // 0028 RET 1 R11 + 0x882C0106, // 0029 GETMBR R11 R0 K6 + 0x5C301600, // 002A MOVE R12 R11 + 0x5C340200, // 002B MOVE R13 R1 + 0x5C380400, // 002C MOVE R14 R2 + 0x5C3C0600, // 002D MOVE R15 R3 + 0x5C400800, // 002E MOVE R16 R4 + 0x7C300800, // 002F CALL R12 4 + 0x4C340000, // 0030 LDNIL R13 + 0x1C34180D, // 0031 EQ R13 R12 R13 + 0x78360000, // 0032 JMPF R13 #0034 + 0x50300200, // 0033 LDBOOL R12 1 0 + 0x80041800, // 0034 RET 1 R12 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: mqtt_listener +********************************************************************/ +be_local_class(mqtt_listener, + 3, + NULL, + be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key(mqtt_data, -1), be_const_closure(class_mqtt_listener_mqtt_data_closure) }, + { be_const_key(tostring, -1), be_const_closure(class_mqtt_listener_tostring_closure) }, + { be_const_key(topic, -1), be_const_var(0) }, + { be_const_key(init, -1), be_const_closure(class_mqtt_listener_init_closure) }, + { be_const_key(closure, 0), be_const_var(2) }, + { be_const_key(fulltopic, -1), be_const_var(1) }, + })), + (bstring*) &be_const_str_mqtt_listener +); +// compact class 'MQTT' ktab size: 23, total: 35 (saved 96 bytes) +static const bvalue be_ktab_class_MQTT[23] = { + /* K0 */ be_nested_str(topics), + /* K1 */ be_nested_str(closure), + /* K2 */ be_nested_str(mqtt_data), + /* K3 */ be_nested_str(stop_iteration), + /* K4 */ be_nested_str(tasmota), + /* K5 */ be_nested_str(add_driver), + /* K6 */ be_nested_str(add_rule), + /* K7 */ be_nested_str(Mqtt_X23Connected), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str(fulltopic), + /* K10 */ be_nested_str(_unsubscribe), + /* K11 */ be_nested_str(remove), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str(log), + /* K14 */ be_nested_str(BRY_X3A_X20mqtt_X20subscribe_X20all_X20registered_X20topics), + /* K15 */ be_const_int(3), + /* K16 */ be_nested_str(_subscribe), + /* K17 */ be_const_class(be_class_mqtt_listener), + /* K18 */ be_nested_str(lazy_init), + /* K19 */ be_nested_str(mqtt_listener_class), + /* K20 */ be_nested_str(function), + /* K21 */ be_nested_str(check_not_method), + /* K22 */ be_nested_str(push), +}; + extern const bclass be_class_MQTT; @@ -13,18 +215,13 @@ be_local_closure(class_MQTT_mqtt_data, /* name */ be_nested_proto( 14, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(topics), - /* K1 */ be_nested_str(closure), - /* K2 */ be_nested_str(mqtt_data), - /* K3 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_MQTT, /* shared constants */ &be_const_str_mqtt_data, &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ @@ -72,7 +269,7 @@ be_local_closure(class_MQTT_lazy_init, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -102,13 +299,7 @@ be_local_closure(class_MQTT_lazy_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(topics), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(add_driver), - /* K3 */ be_nested_str(add_rule), - /* K4 */ be_nested_str(Mqtt_X23Connected), - }), + &be_ktab_class_MQTT, /* shared constants */ &be_const_str_lazy_init, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -119,13 +310,13 @@ be_local_closure(class_MQTT_lazy_init, /* name */ 0x60040012, // 0004 GETGBL R1 G18 0x7C040000, // 0005 CALL R1 0 0x90020001, // 0006 SETMBR R0 K0 R1 - 0xB8060200, // 0007 GETNGBL R1 K1 - 0x8C040302, // 0008 GETMET R1 R1 K2 + 0xB8060800, // 0007 GETNGBL R1 K4 + 0x8C040305, // 0008 GETMET R1 R1 K5 0x5C0C0000, // 0009 MOVE R3 R0 0x7C040400, // 000A CALL R1 2 - 0xB8060200, // 000B GETNGBL R1 K1 - 0x8C040303, // 000C GETMET R1 R1 K3 - 0x580C0004, // 000D LDCONST R3 K4 + 0xB8060800, // 000B GETNGBL R1 K4 + 0x8C040306, // 000C GETMET R1 R1 K6 + 0x580C0007, // 000D LDCONST R3 K7 0x84100000, // 000E CLOSURE R4 P0 0x7C040600, // 000F CALL R1 3 0xA0000000, // 0010 CLOSE R0 @@ -143,20 +334,13 @@ be_local_closure(class_MQTT_unsubscribe, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(topics), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(fulltopic), - /* K3 */ be_nested_str(_unsubscribe), - /* K4 */ be_nested_str(remove), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_MQTT, /* shared constants */ &be_const_str_unsubscribe, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ @@ -165,7 +349,7 @@ be_local_closure(class_MQTT_unsubscribe, /* name */ 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0000, // 0003 JMPF R2 #0005 0x80000400, // 0004 RET 0 - 0x58080001, // 0005 LDCONST R2 K1 + 0x58080008, // 0005 LDCONST R2 K8 0x600C000C, // 0006 GETGBL R3 G12 0x88100100, // 0007 GETMBR R4 R0 K0 0x7C0C0200, // 0008 CALL R3 1 @@ -176,28 +360,28 @@ be_local_closure(class_MQTT_unsubscribe, /* name */ 0x740E0004, // 000D JMPT R3 #0013 0x880C0100, // 000E GETMBR R3 R0 K0 0x940C0602, // 000F GETIDX R3 R3 R2 - 0x880C0702, // 0010 GETMBR R3 R3 K2 + 0x880C0709, // 0010 GETMBR R3 R3 K9 0x1C0C0601, // 0011 EQ R3 R3 R1 0x780E000C, // 0012 JMPF R3 #0020 0x4C0C0000, // 0013 LDNIL R3 0x1C0C0203, // 0014 EQ R3 R1 R3 0x780E0004, // 0015 JMPF R3 #001B - 0x8C0C0103, // 0016 GETMET R3 R0 K3 + 0x8C0C010A, // 0016 GETMET R3 R0 K10 0x88140100, // 0017 GETMBR R5 R0 K0 0x94140A02, // 0018 GETIDX R5 R5 R2 - 0x88140B02, // 0019 GETMBR R5 R5 K2 + 0x88140B09, // 0019 GETMBR R5 R5 K9 0x7C0C0400, // 001A CALL R3 2 0x880C0100, // 001B GETMBR R3 R0 K0 - 0x8C0C0704, // 001C GETMET R3 R3 K4 + 0x8C0C070B, // 001C GETMET R3 R3 K11 0x5C140400, // 001D MOVE R5 R2 0x7C0C0400, // 001E CALL R3 2 0x70020000, // 001F JMP #0021 - 0x00080505, // 0020 ADD R2 R2 K5 + 0x0008050C, // 0020 ADD R2 R2 K12 0x7001FFE3, // 0021 JMP #0006 0x4C0C0000, // 0022 LDNIL R3 0x200C0203, // 0023 NE R3 R1 R3 0x780E0002, // 0024 JMPF R3 #0028 - 0x8C0C0103, // 0025 GETMET R3 R0 K3 + 0x8C0C010A, // 0025 GETMET R3 R0 K10 0x5C140200, // 0026 MOVE R5 R1 0x7C0C0400, // 0027 CALL R3 2 0x80000000, // 0028 RET 0 @@ -214,42 +398,33 @@ be_local_closure(class_MQTT_mqtt_connect, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(log), - /* K2 */ be_nested_str(BRY_X3A_X20mqtt_X20subscribe_X20all_X20registered_X20topics), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str(topics), - /* K5 */ be_nested_str(fulltopic), - /* K6 */ be_nested_str(_subscribe), - /* K7 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_MQTT, /* shared constants */ &be_const_str_mqtt_connect, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x58100003, // 0003 LDCONST R4 K3 + 0xB8060800, // 0000 GETNGBL R1 K4 + 0x8C04030D, // 0001 GETMET R1 R1 K13 + 0x580C000E, // 0002 LDCONST R3 K14 + 0x5810000F, // 0003 LDCONST R4 K15 0x7C040600, // 0004 CALL R1 3 0x60040010, // 0005 GETGBL R1 G16 - 0x88080104, // 0006 GETMBR R2 R0 K4 + 0x88080100, // 0006 GETMBR R2 R0 K0 0x7C040200, // 0007 CALL R1 1 0xA8020006, // 0008 EXBLK 0 #0010 0x5C080200, // 0009 MOVE R2 R1 0x7C080000, // 000A CALL R2 0 - 0x880C0505, // 000B GETMBR R3 R2 K5 - 0x8C100106, // 000C GETMET R4 R0 K6 + 0x880C0509, // 000B GETMBR R3 R2 K9 + 0x8C100110, // 000C GETMET R4 R0 K16 0x5C180600, // 000D MOVE R6 R3 0x7C100400, // 000E CALL R4 2 0x7001FFF8, // 000F JMP #0009 - 0x58040007, // 0010 LDCONST R1 K7 + 0x58040003, // 0010 LDCONST R1 K3 0xAC040200, // 0011 CATCH R1 1 0 0xB0080000, // 0012 RAISE 2 R0 R0 0x50040000, // 0013 LDBOOL R1 0 0 @@ -260,185 +435,6 @@ be_local_closure(class_MQTT_mqtt_connect, /* name */ /*******************************************************************/ -extern const bclass be_class_mqtt_listener; - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_mqtt_listener_tostring, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X27_X25s_X27_X29_X3E), - /* K1 */ be_nested_str(fulltopic), - }), - &be_const_str_tostring, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 - 0x600C0005, // 0002 GETGBL R3 G5 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x88100101, // 0005 GETMBR R4 R0 K1 - 0x7C040600, // 0006 CALL R1 3 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_mqtt_listener_init, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(fulltopic), - /* K2 */ be_nested_str(topic), - /* K3 */ be_nested_str(split), - /* K4 */ be_nested_str(_X2F), - /* K5 */ be_nested_str(closure), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x8C100703, // 0002 GETMET R4 R3 K3 - 0x5C180200, // 0003 MOVE R6 R1 - 0x581C0004, // 0004 LDCONST R7 K4 - 0x7C100600, // 0005 CALL R4 3 - 0x90020404, // 0006 SETMBR R0 K2 R4 - 0x90020A02, // 0007 SETMBR R0 K5 R2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: mqtt_data -********************************************************************/ -be_local_closure(class_mqtt_listener_mqtt_data, /* name */ - be_nested_proto( - 17, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(split), - /* K2 */ be_nested_str(_X2F), - /* K3 */ be_nested_str(topic), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str(_X23), - /* K6 */ be_nested_str(_X2B), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str(closure), - }), - &be_const_str_mqtt_data, - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x8C180B01, // 0001 GETMET R6 R5 K1 - 0x5C200200, // 0002 MOVE R8 R1 - 0x58240002, // 0003 LDCONST R9 K2 - 0x7C180600, // 0004 CALL R6 3 - 0x601C000C, // 0005 GETGBL R7 G12 - 0x5C200C00, // 0006 MOVE R8 R6 - 0x7C1C0200, // 0007 CALL R7 1 - 0x88200103, // 0008 GETMBR R8 R0 K3 - 0x6024000C, // 0009 GETGBL R9 G12 - 0x5C281000, // 000A MOVE R10 R8 - 0x7C240200, // 000B CALL R9 1 - 0x58280004, // 000C LDCONST R10 K4 - 0x142C1409, // 000D LT R11 R10 R9 - 0x782E0013, // 000E JMPF R11 #0023 - 0x942C100A, // 000F GETIDX R11 R8 R10 - 0x1C301705, // 0010 EQ R12 R11 K5 - 0x78320001, // 0011 JMPF R12 #0014 - 0x7002000F, // 0012 JMP #0023 - 0x7002000C, // 0013 JMP #0021 - 0x28301407, // 0014 GE R12 R10 R7 - 0x78320002, // 0015 JMPF R12 #0019 - 0x50300000, // 0016 LDBOOL R12 0 0 - 0x80041800, // 0017 RET 1 R12 - 0x70020007, // 0018 JMP #0021 - 0x1C301706, // 0019 EQ R12 R11 K6 - 0x78320000, // 001A JMPF R12 #001C - 0x70020004, // 001B JMP #0021 - 0x94300C0A, // 001C GETIDX R12 R6 R10 - 0x2030160C, // 001D NE R12 R11 R12 - 0x78320001, // 001E JMPF R12 #0021 - 0x50300000, // 001F LDBOOL R12 0 0 - 0x80041800, // 0020 RET 1 R12 - 0x00281507, // 0021 ADD R10 R10 K7 - 0x7001FFE9, // 0022 JMP #000D - 0x282C1409, // 0023 GE R11 R10 R9 - 0x782E0003, // 0024 JMPF R11 #0029 - 0x202C1207, // 0025 NE R11 R9 R7 - 0x782E0001, // 0026 JMPF R11 #0029 - 0x502C0000, // 0027 LDBOOL R11 0 0 - 0x80041600, // 0028 RET 1 R11 - 0x882C0108, // 0029 GETMBR R11 R0 K8 - 0x5C301600, // 002A MOVE R12 R11 - 0x5C340200, // 002B MOVE R13 R1 - 0x5C380400, // 002C MOVE R14 R2 - 0x5C3C0600, // 002D MOVE R15 R3 - 0x5C400800, // 002E MOVE R16 R4 - 0x7C300800, // 002F CALL R12 4 - 0x4C340000, // 0030 LDNIL R13 - 0x1C34180D, // 0031 EQ R13 R12 R13 - 0x78360000, // 0032 JMPF R13 #0034 - 0x50300200, // 0033 LDBOOL R12 1 0 - 0x80041800, // 0034 RET 1 R12 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: mqtt_listener -********************************************************************/ -be_local_class(mqtt_listener, - 3, - NULL, - be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(mqtt_data, -1), be_const_closure(class_mqtt_listener_mqtt_data_closure) }, - { be_const_key(tostring, -1), be_const_closure(class_mqtt_listener_tostring_closure) }, - { be_const_key(topic, -1), be_const_var(0) }, - { be_const_key(init, -1), be_const_closure(class_mqtt_listener_init_closure) }, - { be_const_key(closure, 0), be_const_var(2) }, - { be_const_key(fulltopic, -1), be_const_var(1) }, - })), - (bstring*) &be_const_str_mqtt_listener -); - /******************************************************************** ** Solidified function: mqtt_listener_class ********************************************************************/ @@ -446,20 +442,18 @@ be_local_closure(class_MQTT_mqtt_listener_class, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_class(be_class_mqtt_listener), - }), + &be_ktab_class_MQTT, /* shared constants */ &be_const_str_mqtt_listener_class, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0xB4000000, // 0001 CLASS K0 + 0x58040011, // 0000 LDCONST R1 K17 + 0xB4000011, // 0001 CLASS K17 0x5C080200, // 0002 MOVE R2 R1 0x80040200, // 0003 RET 1 R1 }) @@ -475,75 +469,63 @@ be_local_closure(class_MQTT_subscribe, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str(lazy_init), - /* K1 */ be_nested_str(topics), - /* K2 */ be_nested_str(fulltopic), - /* K3 */ be_nested_str(closure), - /* K4 */ be_nested_str(stop_iteration), - /* K5 */ be_nested_str(mqtt_listener_class), - /* K6 */ be_nested_str(function), - /* K7 */ be_nested_str(tasmota), - /* K8 */ be_nested_str(check_not_method), - /* K9 */ be_nested_str(push), - /* K10 */ be_nested_str(_subscribe), - }), + &be_ktab_class_MQTT, /* shared constants */ &be_const_str_subscribe, &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C0112, // 0000 GETMET R3 R0 K18 0x7C0C0200, // 0001 CALL R3 1 0x500C0000, // 0002 LDBOOL R3 0 0 0x60100010, // 0003 GETGBL R4 G16 - 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x88140100, // 0004 GETMBR R5 R0 K0 0x7C100200, // 0005 CALL R4 1 0xA802000A, // 0006 EXBLK 0 #0012 0x5C140800, // 0007 MOVE R5 R4 0x7C140000, // 0008 CALL R5 0 - 0x88180B02, // 0009 GETMBR R6 R5 K2 + 0x88180B09, // 0009 GETMBR R6 R5 K9 0x1C180C01, // 000A EQ R6 R6 R1 0x781A0004, // 000B JMPF R6 #0011 - 0x88180B03, // 000C GETMBR R6 R5 K3 + 0x88180B01, // 000C GETMBR R6 R5 K1 0x1C180C02, // 000D EQ R6 R6 R2 0x781A0001, // 000E JMPF R6 #0011 0xA8040001, // 000F EXBLK 1 1 0x80000C00, // 0010 RET 0 0x7001FFF4, // 0011 JMP #0007 - 0x58100004, // 0012 LDCONST R4 K4 + 0x58100003, // 0012 LDCONST R4 K3 0xAC100200, // 0013 CATCH R4 1 0 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x8C100105, // 0015 GETMET R4 R0 K5 + 0x8C100113, // 0015 GETMET R4 R0 K19 0x7C100200, // 0016 CALL R4 1 0x60140004, // 0017 GETGBL R5 G4 0x5C180400, // 0018 MOVE R6 R2 0x7C140200, // 0019 CALL R5 1 - 0x1C140B06, // 001A EQ R5 R5 K6 + 0x1C140B14, // 001A EQ R5 R5 K20 0x7816000B, // 001B JMPF R5 #0028 - 0xB8160E00, // 001C GETNGBL R5 K7 - 0x8C140B08, // 001D GETMET R5 R5 K8 + 0xB8160800, // 001C GETNGBL R5 K4 + 0x8C140B15, // 001D GETMET R5 R5 K21 0x5C1C0400, // 001E MOVE R7 R2 0x7C140400, // 001F CALL R5 2 - 0x88140101, // 0020 GETMBR R5 R0 K1 - 0x8C140B09, // 0021 GETMET R5 R5 K9 + 0x88140100, // 0020 GETMBR R5 R0 K0 + 0x8C140B16, // 0021 GETMET R5 R5 K22 0x5C1C0800, // 0022 MOVE R7 R4 0x5C200200, // 0023 MOVE R8 R1 0x5C240400, // 0024 MOVE R9 R2 0x7C1C0400, // 0025 CALL R7 2 0x7C140400, // 0026 CALL R5 2 0x70020005, // 0027 JMP #002E - 0x88140101, // 0028 GETMBR R5 R0 K1 - 0x8C140B09, // 0029 GETMET R5 R5 K9 + 0x88140100, // 0028 GETMBR R5 R0 K0 + 0x8C140B16, // 0029 GETMET R5 R5 K22 0x5C1C0800, // 002A MOVE R7 R4 0x5C200200, // 002B MOVE R8 R1 0x7C1C0200, // 002C CALL R7 1 0x7C140400, // 002D CALL R5 2 - 0x8C14010A, // 002E GETMET R5 R0 K10 + 0x8C140110, // 002E GETMET R5 R0 K16 0x5C1C0200, // 002F MOVE R7 R1 0x7C140400, // 0030 CALL R5 2 0x80000000, // 0031 RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h index 3ed1d0601..d52d3ea33 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h @@ -3,6 +3,37 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Partition_otadata; +// compact class 'Partition_otadata' ktab size: 26, total: 52 (saved 208 bytes) +static const bvalue be_ktab_class_Partition_otadata[26] = { + /* K0 */ be_nested_str(flash), + /* K1 */ be_nested_str(seq0), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str(seq1), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str(offset), + /* K6 */ be_nested_str(add), + /* K7 */ be_nested_str(FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF), + /* K8 */ be_nested_str(crc32_ota_seq), + /* K9 */ be_nested_str(erase), + /* K10 */ be_nested_str(write), + /* K11 */ be_nested_str(_X3Cinstance_X3A_X20Partition_otadata_X28ota_active_X3A_X25s_X2C_X20ota_seq_X3D_X5B_X25d_X2C_X25d_X5D_X2C_X20ota_max_X3D_X25d_X29_X3E), + /* K12 */ be_nested_str(active_otadata), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str(ota_), + /* K15 */ be_nested_str(factory), + /* K16 */ be_nested_str(maxota), + /* K17 */ be_nested_str(has_factory), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str(read), + /* K20 */ be_nested_str(get), + /* K21 */ be_nested_str(_validate), + /* K22 */ be_const_class(be_class_Partition_otadata), + /* K23 */ be_nested_str(crc), + /* K24 */ be_nested_str(crc32), + /* K25 */ be_nested_str(load), +}; + extern const bclass be_class_Partition_otadata; @@ -13,25 +44,13 @@ be_local_closure(class_Partition_otadata_save, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str(flash), - /* K1 */ be_nested_str(seq0), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(seq1), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str(offset), - /* K6 */ be_nested_str(add), - /* K7 */ be_nested_str(FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF), - /* K8 */ be_nested_str(crc32_ota_seq), - /* K9 */ be_nested_str(erase), - /* K10 */ be_nested_str(write), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str_save, &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ @@ -101,39 +120,30 @@ be_local_closure(class_Partition_otadata_tostring, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(_X3Cinstance_X3A_X20Partition_otadata_X28ota_active_X3A_X25s_X2C_X20ota_seq_X3D_X5B_X25d_X2C_X25d_X5D_X2C_X20ota_max_X3D_X25d_X29_X3E), - /* K1 */ be_nested_str(active_otadata), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(ota_), - /* K4 */ be_nested_str(factory), - /* K5 */ be_nested_str(seq0), - /* K6 */ be_nested_str(seq1), - /* K7 */ be_nested_str(maxota), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x280C0702, // 0003 GE R3 R3 K2 + 0x5808000B, // 0001 LDCONST R2 K11 + 0x880C010C, // 0002 GETMBR R3 R0 K12 + 0x280C070D, // 0003 GE R3 R3 K13 0x780E0004, // 0004 JMPF R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x8810010C, // 0006 GETMBR R4 R0 K12 0x7C0C0200, // 0007 CALL R3 1 - 0x000E0603, // 0008 ADD R3 K3 R3 + 0x000E1C03, // 0008 ADD R3 K14 R3 0x70020000, // 0009 JMP #000B - 0x580C0004, // 000A LDCONST R3 K4 - 0x88100105, // 000B GETMBR R4 R0 K5 - 0x88140106, // 000C GETMBR R5 R0 K6 - 0x88180107, // 000D GETMBR R6 R0 K7 + 0x580C000F, // 000A LDCONST R3 K15 + 0x88100101, // 000B GETMBR R4 R0 K1 + 0x88140103, // 000C GETMBR R5 R0 K3 + 0x88180110, // 000D GETMBR R6 R0 K16 0x7C040A00, // 000E CALL R1 5 0x80040200, // 000F RET 1 R1 }) @@ -149,58 +159,50 @@ be_local_closure(class_Partition_otadata__validate, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(active_otadata), - /* K1 */ be_nested_str(has_factory), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(seq0), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str(maxota), - /* K6 */ be_nested_str(seq1), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str__validate, &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x88040111, // 0000 GETMBR R1 R0 K17 0x78060001, // 0001 JMPF R1 #0004 0x5405FFFE, // 0002 LDINT R1 -1 0x70020000, // 0003 JMP #0005 0x58040002, // 0004 LDCONST R1 K2 - 0x90020001, // 0005 SETMBR R0 K0 R1 - 0x88040103, // 0006 GETMBR R1 R0 K3 + 0x90021801, // 0005 SETMBR R0 K12 R1 + 0x88040101, // 0006 GETMBR R1 R0 K1 0x4C080000, // 0007 LDNIL R2 0x20040202, // 0008 NE R1 R1 R2 0x78060005, // 0009 JMPF R1 #0010 - 0x88040103, // 000A GETMBR R1 R0 K3 - 0x04040304, // 000B SUB R1 R1 K4 - 0x88080105, // 000C GETMBR R2 R0 K5 - 0x00080504, // 000D ADD R2 R2 K4 + 0x88040101, // 000A GETMBR R1 R0 K1 + 0x04040312, // 000B SUB R1 R1 K18 + 0x88080110, // 000C GETMBR R2 R0 K16 + 0x00080512, // 000D ADD R2 R2 K18 0x10040202, // 000E MOD R1 R1 R2 - 0x90020001, // 000F SETMBR R0 K0 R1 - 0x88040106, // 0010 GETMBR R1 R0 K6 + 0x90021801, // 000F SETMBR R0 K12 R1 + 0x88040103, // 0010 GETMBR R1 R0 K3 0x4C080000, // 0011 LDNIL R2 0x20040202, // 0012 NE R1 R1 R2 0x7806000D, // 0013 JMPF R1 #0022 - 0x88040103, // 0014 GETMBR R1 R0 K3 + 0x88040101, // 0014 GETMBR R1 R0 K1 0x4C080000, // 0015 LDNIL R2 0x1C040202, // 0016 EQ R1 R1 R2 0x74060003, // 0017 JMPT R1 #001C - 0x88040106, // 0018 GETMBR R1 R0 K6 - 0x88080103, // 0019 GETMBR R2 R0 K3 + 0x88040103, // 0018 GETMBR R1 R0 K3 + 0x88080101, // 0019 GETMBR R2 R0 K1 0x24040202, // 001A GT R1 R1 R2 0x78060005, // 001B JMPF R1 #0022 - 0x88040106, // 001C GETMBR R1 R0 K6 - 0x04040304, // 001D SUB R1 R1 K4 - 0x88080105, // 001E GETMBR R2 R0 K5 - 0x00080504, // 001F ADD R2 R2 K4 + 0x88040103, // 001C GETMBR R1 R0 K3 + 0x04040312, // 001D SUB R1 R1 K18 + 0x88080110, // 001E GETMBR R2 R0 K16 + 0x00080512, // 001F ADD R2 R2 K18 0x10040202, // 0020 MOD R1 R1 R2 - 0x90020001, // 0021 SETMBR R0 K0 R1 + 0x90021801, // 0021 SETMBR R0 K12 R1 0x80000000, // 0022 RET 0 }) ) @@ -215,19 +217,17 @@ be_local_closure(class_Partition_otadata_set_ota_max, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(maxota), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str_set_ota_max, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90022001, // 0000 SETMBR R0 K16 R1 0x80000000, // 0001 RET 0 }) ) @@ -242,72 +242,62 @@ be_local_closure(class_Partition_otadata_load, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(flash), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(offset), - /* K3 */ be_nested_str(seq0), - /* K4 */ be_nested_str(get), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str(seq1), - /* K7 */ be_nested_str(crc32_ota_seq), - /* K8 */ be_nested_str(_validate), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str_load, &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x8C080313, // 0001 GETMET R2 R1 K19 + 0x88100105, // 0002 GETMBR R4 R0 K5 0x5416001F, // 0003 LDINT R5 32 0x7C080600, // 0004 CALL R2 3 - 0x8C0C0301, // 0005 GETMET R3 R1 K1 - 0x88140102, // 0006 GETMBR R5 R0 K2 + 0x8C0C0313, // 0005 GETMET R3 R1 K19 + 0x88140105, // 0006 GETMBR R5 R0 K5 0x541A0FFF, // 0007 LDINT R6 4096 0x00140A06, // 0008 ADD R5 R5 R6 0x541A001F, // 0009 LDINT R6 32 0x7C0C0600, // 000A CALL R3 3 - 0x8C100504, // 000B GETMET R4 R2 K4 - 0x58180005, // 000C LDCONST R6 K5 + 0x8C100514, // 000B GETMET R4 R2 K20 + 0x58180002, // 000C LDCONST R6 K2 0x541E0003, // 000D LDINT R7 4 0x7C100600, // 000E CALL R4 3 - 0x90020604, // 000F SETMBR R0 K3 R4 - 0x8C100704, // 0010 GETMET R4 R3 K4 - 0x58180005, // 0011 LDCONST R6 K5 + 0x90020204, // 000F SETMBR R0 K1 R4 + 0x8C100714, // 0010 GETMET R4 R3 K20 + 0x58180002, // 0011 LDCONST R6 K2 0x541E0003, // 0012 LDINT R7 4 0x7C100600, // 0013 CALL R4 3 - 0x90020C04, // 0014 SETMBR R0 K6 R4 - 0x8C100504, // 0015 GETMET R4 R2 K4 + 0x90020604, // 0014 SETMBR R0 K3 R4 + 0x8C100514, // 0015 GETMET R4 R2 K20 0x541A001B, // 0016 LDINT R6 28 0x541E0003, // 0017 LDINT R7 4 0x7C100600, // 0018 CALL R4 3 - 0x8C140107, // 0019 GETMET R5 R0 K7 - 0x881C0103, // 001A GETMBR R7 R0 K3 + 0x8C140108, // 0019 GETMET R5 R0 K8 + 0x881C0101, // 001A GETMBR R7 R0 K1 0x7C140400, // 001B CALL R5 2 0x1C100805, // 001C EQ R4 R4 R5 - 0x8C140704, // 001D GETMET R5 R3 K4 + 0x8C140714, // 001D GETMET R5 R3 K20 0x541E001B, // 001E LDINT R7 28 0x54220003, // 001F LDINT R8 4 0x7C140600, // 0020 CALL R5 3 - 0x8C180107, // 0021 GETMET R6 R0 K7 - 0x88200106, // 0022 GETMBR R8 R0 K6 + 0x8C180108, // 0021 GETMET R6 R0 K8 + 0x88200103, // 0022 GETMBR R8 R0 K3 0x7C180400, // 0023 CALL R6 2 0x1C140A06, // 0024 EQ R5 R5 R6 0x5C180800, // 0025 MOVE R6 R4 0x741A0001, // 0026 JMPT R6 #0029 0x4C180000, // 0027 LDNIL R6 - 0x90020606, // 0028 SETMBR R0 K3 R6 + 0x90020206, // 0028 SETMBR R0 K1 R6 0x5C180A00, // 0029 MOVE R6 R5 0x741A0001, // 002A JMPT R6 #002D 0x4C180000, // 002B LDNIL R6 - 0x90020C06, // 002C SETMBR R0 K6 R6 - 0x8C180108, // 002D GETMET R6 R0 K8 + 0x90020606, // 002C SETMBR R0 K3 R6 + 0x8C180115, // 002D GETMET R6 R0 K21 0x7C180200, // 002E CALL R6 1 0x80000000, // 002F RET 0 }) @@ -323,28 +313,23 @@ be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Partition_otadata), - /* K1 */ be_nested_str(crc), - /* K2 */ be_nested_str(crc32), - /* K3 */ be_nested_str(add), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str_crc32_ota_seq, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0502, // 0002 GETMET R3 R2 K2 + 0x58040016, // 0000 LDCONST R1 K22 + 0xA40A2E00, // 0001 IMPORT R2 K23 + 0x8C0C0518, // 0002 GETMET R3 R2 K24 0x5415FFFE, // 0003 LDINT R5 -1 0x60180015, // 0004 GETGBL R6 G21 0x7C180000, // 0005 CALL R6 0 - 0x8C180D03, // 0006 GETMET R6 R6 K3 + 0x8C180D06, // 0006 GETMET R6 R6 K6 0x5C200000, // 0007 MOVE R8 R0 0x54260003, // 0008 LDINT R9 4 0x7C180600, // 0009 CALL R6 3 @@ -363,43 +348,36 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(seq0), - /* K2 */ be_nested_str(seq1), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str(maxota), - /* K5 */ be_nested_str(_validate), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str_set_active, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x580C0000, // 0001 LDCONST R3 K0 + 0x5808000D, // 0000 LDCONST R2 K13 + 0x580C000D, // 0001 LDCONST R3 K13 0x88100101, // 0002 GETMBR R4 R0 K1 0x4C140000, // 0003 LDNIL R5 0x20100805, // 0004 NE R4 R4 R5 0x78120001, // 0005 JMPF R4 #0008 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x580C0000, // 0007 LDCONST R3 K0 - 0x88100102, // 0008 GETMBR R4 R0 K2 + 0x580C000D, // 0007 LDCONST R3 K13 + 0x88100103, // 0008 GETMBR R4 R0 K3 0x4C140000, // 0009 LDNIL R5 0x20100805, // 000A NE R4 R4 R5 0x78120004, // 000B JMPF R4 #0011 - 0x88100102, // 000C GETMBR R4 R0 K2 + 0x88100103, // 000C GETMBR R4 R0 K3 0x24100802, // 000D GT R4 R4 R2 0x78120001, // 000E JMPF R4 #0011 - 0x88080102, // 000F GETMBR R2 R0 K2 - 0x580C0003, // 0010 LDCONST R3 K3 - 0x04100503, // 0011 SUB R4 R2 K3 - 0x88140104, // 0012 GETMBR R5 R0 K4 - 0x00140B03, // 0013 ADD R5 R5 K3 + 0x88080103, // 000F GETMBR R2 R0 K3 + 0x580C0004, // 0010 LDCONST R3 K4 + 0x04100504, // 0011 SUB R4 R2 K4 + 0x88140110, // 0012 GETMBR R5 R0 K16 + 0x00140B04, // 0013 ADD R5 R5 K4 0x10100805, // 0014 MOD R4 R4 R5 0x20140801, // 0015 NE R5 R4 R1 0x78160010, // 0016 JMPF R5 #0028 @@ -408,17 +386,17 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ 0x04140204, // 0019 SUB R5 R1 R4 0x00080405, // 001A ADD R2 R2 R5 0x70020004, // 001B JMP #0021 - 0x88140104, // 001C GETMBR R5 R0 K4 - 0x00140B03, // 001D ADD R5 R5 K3 + 0x88140110, // 001C GETMBR R5 R0 K16 + 0x00140B04, // 001D ADD R5 R5 K4 0x04140A04, // 001E SUB R5 R5 R4 0x00140A01, // 001F ADD R5 R5 R1 0x00080405, // 0020 ADD R2 R2 R5 - 0x1C140703, // 0021 EQ R5 R3 K3 + 0x1C140704, // 0021 EQ R5 R3 K4 0x78160001, // 0022 JMPF R5 #0025 0x90020202, // 0023 SETMBR R0 K1 R2 0x70020000, // 0024 JMP #0026 - 0x90020402, // 0025 SETMBR R0 K2 R2 - 0x8C140105, // 0026 GETMET R5 R0 K5 + 0x90020602, // 0025 SETMBR R0 K3 R2 + 0x8C140115, // 0026 GETMET R5 R0 K21 0x7C140200, // 0027 CALL R5 1 0x80000000, // 0028 RET 0 }) @@ -434,40 +412,33 @@ be_local_closure(class_Partition_otadata_init, /* name */ be_nested_proto( 6, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(maxota), - /* K1 */ be_nested_str(has_factory), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str(offset), - /* K4 */ be_nested_str(active_otadata), - /* K5 */ be_nested_str(load), - }), + &be_ktab_class_Partition_otadata, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x88100100, // 0002 GETMBR R4 R0 K0 + 0x90022001, // 0000 SETMBR R0 K16 R1 + 0x90022202, // 0001 SETMBR R0 K17 R2 + 0x88100110, // 0002 GETMBR R4 R0 K16 0x4C140000, // 0003 LDNIL R5 0x1C100805, // 0004 EQ R4 R4 R5 0x78120000, // 0005 JMPF R4 #0007 - 0x90020102, // 0006 SETMBR R0 K0 K2 - 0x90020603, // 0007 SETMBR R0 K3 R3 - 0x88100103, // 0008 GETMBR R4 R0 K3 + 0x90022104, // 0006 SETMBR R0 K16 K4 + 0x90020A03, // 0007 SETMBR R0 K5 R3 + 0x88100105, // 0008 GETMBR R4 R0 K5 0x4C140000, // 0009 LDNIL R5 0x1C100805, // 000A EQ R4 R4 R5 0x78120001, // 000B JMPF R4 #000E 0x5412DFFF, // 000C LDINT R4 57344 - 0x90020604, // 000D SETMBR R0 K3 R4 + 0x90020A04, // 000D SETMBR R0 K5 R4 0x5411FFFE, // 000E LDINT R4 -1 - 0x90020804, // 000F SETMBR R0 K4 R4 - 0x8C100105, // 0010 GETMET R4 R0 K5 + 0x90021804, // 000F SETMBR R0 K12 R4 + 0x8C100119, // 0010 GETMET R4 R0 K25 0x7C100200, // 0011 CALL R4 1 0x80000000, // 0012 RET 0 }) @@ -501,6 +472,85 @@ be_local_class(Partition_otadata, })), (bstring*) &be_const_str_Partition_otadata ); +extern const bclass be_class_Partition; +// compact class 'Partition' ktab size: 74, total: 134 (saved 480 bytes) +static const bvalue be_ktab_class_Partition[74] = { + /* K0 */ be_nested_str(flash), + /* K1 */ be_nested_str(tobytes), + /* K2 */ be_nested_str(erase), + /* K3 */ be_nested_str(write), + /* K4 */ be_nested_str(otadata), + /* K5 */ be_nested_str(save), + /* K6 */ be_nested_str(raw), + /* K7 */ be_nested_str(read), + /* K8 */ be_nested_str(active_otadata), + /* K9 */ be_nested_str(slots), + /* K10 */ be_nested_str(load), + /* K11 */ be_nested_str(parse), + /* K12 */ be_nested_str(load_otadata), + /* K13 */ be_const_int(0), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str(get), + /* K16 */ be_const_int(2), + /* K17 */ be_nested_str(partition_core), + /* K18 */ be_nested_str(Partition_info), + /* K19 */ be_nested_str(push), + /* K20 */ be_nested_str(md5), + /* K21 */ be_nested_str(stop_iteration), + /* K22 */ be_nested_str(tasmota), + /* K23 */ be_nested_str(memory), + /* K24 */ be_nested_str(find), + /* K25 */ be_nested_str(flash_real), + /* K26 */ be_nested_str(get_flash_definition_sector), + /* K27 */ be_const_int(3), + /* K28 */ be_const_int(1), + /* K29 */ be_const_int(2), + /* K30 */ be_nested_str(log), + /* K31 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X), + /* K32 */ be_nested_str(wrong_X20flash_X20size_X20), + /* K33 */ be_nested_str(internal_error), + /* K34 */ be_const_class(be_class_Partition), + /* K35 */ be_const_int(0), + /* K36 */ be_nested_str(E9), + /* K37 */ be_nested_str(get_unallocated_k), + /* K38 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB), + /* K39 */ be_nested_str(resize_max_flash_size_k), + /* K40 */ be_nested_str(sz), + /* K41 */ be_nested_str(global), + /* K42 */ be_nested_str(restart_flag), + /* K43 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting), + /* K44 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K45 */ be_nested_str(factory), + /* K46 */ be_nested_str(ota_max), + /* K47 */ be_nested_str(type), + /* K48 */ be_nested_str(subtype), + /* K49 */ be_nested_str(start), + /* K50 */ be_nested_str(Partition_otadata), + /* K51 */ be_nested_str(has_factory), + /* K52 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A), + /* K53 */ be_nested_str(_X20_X20), + /* K54 */ be_nested_str(tostring), + /* K55 */ be_nested_str(_X0A), + /* K56 */ be_nested_str(_X5D_X2C_X0A_X20_X20), + /* K57 */ be_nested_str(_X0A_X29_X3E), + /* K58 */ be_nested_str(get_factory_slot), + /* K59 */ be_nested_str(value_error), + /* K60 */ be_nested_str(Too_X20many_X20partiition_X20slots), + /* K61 */ be_nested_str(MD5), + /* K62 */ be_nested_str(update), + /* K63 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF), + /* K64 */ be_nested_str(finish), + /* K65 */ be_nested_str(is_spiffs), + /* K66 */ be_nested_str(No_X20FS_X20partition_X20found), + /* K67 */ be_nested_str(00), + /* K68 */ be_nested_str(is_factory), + /* K69 */ be_nested_str(Invalid_X20ota_X20partition_X20number), + /* K70 */ be_nested_str(set_ota_max), + /* K71 */ be_nested_str(set_active), + /* K72 */ be_nested_str(get_max_flash_size_k), + /* K73 */ be_nested_str(is_ota), +}; + extern const bclass be_class_Partition; @@ -511,20 +561,13 @@ be_local_closure(class_Partition_save, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(flash), - /* K1 */ be_nested_str(tobytes), - /* K2 */ be_nested_str(erase), - /* K3 */ be_nested_str(write), - /* K4 */ be_nested_str(otadata), - /* K5 */ be_nested_str(save), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_save, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -556,26 +599,22 @@ be_local_closure(class_Partition_load, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(flash), - /* K1 */ be_nested_str(raw), - /* K2 */ be_nested_str(read), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_load, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080302, // 0001 GETMET R2 R1 K2 + 0x8C080307, // 0001 GETMET R2 R1 K7 0x54127FFF, // 0002 LDINT R4 32768 0x54160FFF, // 0003 LDINT R5 4096 0x7C080600, // 0004 CALL R2 3 - 0x90020202, // 0005 SETMBR R0 K1 R2 + 0x90020C02, // 0005 SETMBR R0 K6 R2 0x80000000, // 0006 RET 0 }) ) @@ -590,21 +629,18 @@ be_local_closure(class_Partition_get_active, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(otadata), - /* K1 */ be_nested_str(active_otadata), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_get_active, &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88040308, // 0001 GETMBR R1 R1 K8 0x80040200, // 0002 RET 1 R1 }) ) @@ -619,29 +655,24 @@ be_local_closure(class_Partition_init, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(slots), - /* K1 */ be_nested_str(load), - /* K2 */ be_nested_str(parse), - /* K3 */ be_nested_str(load_otadata), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x60040012, // 0000 GETGBL R1 G18 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x90021201, // 0002 SETMBR R0 K9 R1 + 0x8C04010A, // 0003 GETMET R1 R0 K10 0x7C040200, // 0004 CALL R1 1 - 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x8C04010B, // 0005 GETMET R1 R0 K11 0x7C040200, // 0006 CALL R1 1 - 0x8C040103, // 0007 GETMET R1 R0 K3 + 0x8C04010C, // 0007 GETMET R1 R0 K12 0x7C040200, // 0008 CALL R1 1 0x80000000, // 0009 RET 0 }) @@ -657,58 +688,46 @@ be_local_closure(class_Partition_parse, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(raw), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str(get), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str(partition_core), - /* K6 */ be_nested_str(Partition_info), - /* K7 */ be_nested_str(slots), - /* K8 */ be_nested_str(push), - /* K9 */ be_nested_str(md5), - /* K10 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_parse, &be_const_str_solidified, ( &(const binstruction[57]) { /* code */ 0x60040010, // 0000 GETGBL R1 G16 0x540A005D, // 0001 LDINT R2 94 - 0x400A0002, // 0002 CONNECT R2 K0 R2 + 0x400A1A02, // 0002 CONNECT R2 K13 R2 0x7C040200, // 0003 CALL R1 1 0xA802002F, // 0004 EXBLK 0 #0035 0x5C080200, // 0005 MOVE R2 R1 0x7C080000, // 0006 CALL R2 0 0x540E001F, // 0007 LDINT R3 32 0x080C0403, // 0008 MUL R3 R2 R3 - 0x00100502, // 0009 ADD R4 R2 K2 + 0x0010050E, // 0009 ADD R4 R2 K14 0x5416001F, // 000A LDINT R5 32 0x08100805, // 000B MUL R4 R4 R5 - 0x04100902, // 000C SUB R4 R4 K2 + 0x0410090E, // 000C SUB R4 R4 K14 0x400C0604, // 000D CONNECT R3 R3 R4 - 0x88100101, // 000E GETMBR R4 R0 K1 + 0x88100106, // 000E GETMBR R4 R0 K6 0x940C0803, // 000F GETIDX R3 R4 R3 - 0x8C140703, // 0010 GETMET R5 R3 K3 - 0x581C0000, // 0011 LDCONST R7 K0 - 0x58200004, // 0012 LDCONST R8 K4 + 0x8C14070F, // 0010 GETMET R5 R3 K15 + 0x581C000D, // 0011 LDCONST R7 K13 + 0x58200010, // 0012 LDCONST R8 K16 0x7C140600, // 0013 CALL R5 3 0x5C100A00, // 0014 MOVE R4 R5 0x541650A9, // 0015 LDINT R5 20650 0x1C140805, // 0016 EQ R5 R4 R5 0x78160008, // 0017 JMPF R5 #0021 - 0xB8160A00, // 0018 GETNGBL R5 K5 - 0x8C140B06, // 0019 GETMET R5 R5 K6 + 0xB8162200, // 0018 GETNGBL R5 K17 + 0x8C140B12, // 0019 GETMET R5 R5 K18 0x5C1C0600, // 001A MOVE R7 R3 0x7C140400, // 001B CALL R5 2 - 0x88180107, // 001C GETMBR R6 R0 K7 - 0x8C180D08, // 001D GETMET R6 R6 K8 + 0x88180109, // 001C GETMBR R6 R0 K9 + 0x8C180D13, // 001D GETMET R6 R6 K19 0x5C200A00, // 001E MOVE R8 R5 0x7C180400, // 001F CALL R6 2 0x70020010, // 0020 JMP #0032 @@ -721,18 +740,18 @@ be_local_closure(class_Partition_parse, /* name */ 0x00140A06, // 0027 ADD R5 R5 R6 0x541A0020, // 0028 LDINT R6 33 0x08180406, // 0029 MUL R6 R2 R6 - 0x04180D02, // 002A SUB R6 R6 K2 + 0x04180D0E, // 002A SUB R6 R6 K14 0x40140A06, // 002B CONNECT R5 R5 R6 - 0x88180101, // 002C GETMBR R6 R0 K1 + 0x88180106, // 002C GETMBR R6 R0 K6 0x94140C05, // 002D GETIDX R5 R6 R5 - 0x90021205, // 002E SETMBR R0 K9 R5 + 0x90022805, // 002E SETMBR R0 K20 R5 0x70020002, // 002F JMP #0033 0x70020000, // 0030 JMP #0032 0x70020000, // 0031 JMP #0033 0x7001FFD1, // 0032 JMP #0005 0xA8040001, // 0033 EXBLK 1 1 0x70020002, // 0034 JMP #0038 - 0x5804000A, // 0035 LDCONST R1 K10 + 0x58040015, // 0035 LDCONST R1 K21 0xAC040200, // 0036 CATCH R1 1 0 0xB0080000, // 0037 RAISE 2 R0 R0 0x80000000, // 0038 RET 0 @@ -749,37 +768,30 @@ be_local_closure(class_Partition_get_max_flash_size_k, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(memory), - /* K2 */ be_nested_str(flash), - /* K3 */ be_nested_str(find), - /* K4 */ be_nested_str(flash_real), - /* K5 */ be_nested_str(get_flash_definition_sector), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_get_max_flash_size_k, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0xB8062C00, // 0000 GETNGBL R1 K22 + 0x8C040317, // 0001 GETMET R1 R1 K23 0x7C040200, // 0002 CALL R1 1 - 0x94040302, // 0003 GETIDX R1 R1 K2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x94040300, // 0003 GETIDX R1 R1 K0 + 0xB80A2C00, // 0004 GETNGBL R2 K22 + 0x8C080517, // 0005 GETMET R2 R2 K23 0x7C080200, // 0006 CALL R2 1 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x58100004, // 0008 LDCONST R4 K4 + 0x8C080518, // 0007 GETMET R2 R2 K24 + 0x58100019, // 0008 LDCONST R4 K25 0x5C140200, // 0009 MOVE R5 R1 0x7C080600, // 000A CALL R2 3 0x200C0202, // 000B NE R3 R1 R2 0x780E0005, // 000C JMPF R3 #0013 - 0x8C0C0105, // 000D GETMET R3 R0 K5 + 0x8C0C011A, // 000D GETMET R3 R0 K26 0x7C0C0200, // 000E CALL R3 1 0x4C100000, // 000F LDNIL R4 0x200C0604, // 0010 NE R3 R3 R4 @@ -799,66 +811,49 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ be_nested_proto( 16, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(memory), - /* K2 */ be_nested_str(flash), - /* K3 */ be_nested_str(find), - /* K4 */ be_nested_str(flash_real), - /* K5 */ be_nested_str(get_flash_definition_sector), - /* K6 */ be_nested_str(read), - /* K7 */ be_const_int(3), - /* K8 */ be_const_int(1), - /* K9 */ be_const_int(0), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str(write), - /* K12 */ be_nested_str(log), - /* K13 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X), - /* K14 */ be_nested_str(wrong_X20flash_X20size_X20), - /* K15 */ be_nested_str(internal_error), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_resize_max_flash_size_k, &be_const_str_solidified, ( &(const binstruction[94]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0xB8062C00, // 0000 GETNGBL R1 K22 + 0x8C040317, // 0001 GETMET R1 R1 K23 0x7C040200, // 0002 CALL R1 1 - 0x94040302, // 0003 GETIDX R1 R1 K2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x94040300, // 0003 GETIDX R1 R1 K0 + 0xB80A2C00, // 0004 GETNGBL R2 K22 + 0x8C080517, // 0005 GETMET R2 R2 K23 0x7C080200, // 0006 CALL R2 1 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x58100004, // 0008 LDCONST R4 K4 + 0x8C080518, // 0007 GETMET R2 R2 K24 + 0x58100019, // 0008 LDCONST R4 K25 0x5C140200, // 0009 MOVE R5 R1 0x7C080600, // 000A CALL R2 3 - 0x8C0C0105, // 000B GETMET R3 R0 K5 + 0x8C0C011A, // 000B GETMET R3 R0 K26 0x7C0C0200, // 000C CALL R3 1 0x20100202, // 000D NE R4 R1 R2 0x7812004D, // 000E JMPF R4 #005D 0x4C100000, // 000F LDNIL R4 0x20100604, // 0010 NE R4 R3 R4 0x7812004A, // 0011 JMPF R4 #005D - 0xA4120400, // 0012 IMPORT R4 K2 + 0xA4120000, // 0012 IMPORT R4 K0 0x5C040400, // 0013 MOVE R1 R2 - 0x8C140906, // 0014 GETMET R5 R4 K6 + 0x8C140907, // 0014 GETMET R5 R4 K7 0x5C1C0600, // 0015 MOVE R7 R3 0x54220003, // 0016 LDINT R8 4 0x7C140600, // 0017 CALL R5 3 - 0x94180B07, // 0018 GETIDX R6 R5 K7 + 0x94180B1B, // 0018 GETIDX R6 R5 K27 0x4C1C0000, // 0019 LDNIL R7 0x542203FF, // 001A LDINT R8 1024 0x0C200408, // 001B DIV R8 R2 R8 - 0x1C241108, // 001C EQ R9 R8 K8 + 0x1C24111C, // 001C EQ R9 R8 K28 0x78260001, // 001D JMPF R9 #0020 - 0x581C0009, // 001E LDCONST R7 K9 + 0x581C000D, // 001E LDCONST R7 K13 0x70020020, // 001F JMP #0041 - 0x1C24110A, // 0020 EQ R9 R8 K10 + 0x1C24111D, // 0020 EQ R9 R8 K29 0x78260001, // 0021 JMPF R9 #0024 0x541E000F, // 0022 LDINT R7 16 0x7002001C, // 0023 JMP #0041 @@ -894,31 +889,31 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0x4C240000, // 0041 LDNIL R9 0x20240E09, // 0042 NE R9 R7 R9 0x78260013, // 0043 JMPF R9 #0058 - 0x94240B07, // 0044 GETIDX R9 R5 K7 - 0x94280B07, // 0045 GETIDX R10 R5 K7 + 0x94240B1B, // 0044 GETIDX R9 R5 K27 + 0x94280B1B, // 0045 GETIDX R10 R5 K27 0x542E000E, // 0046 LDINT R11 15 0x2C28140B, // 0047 AND R10 R10 R11 0x30281407, // 0048 OR R10 R10 R7 - 0x98160E0A, // 0049 SETIDX R5 K7 R10 - 0x8C28090B, // 004A GETMET R10 R4 K11 + 0x9816360A, // 0049 SETIDX R5 K27 R10 + 0x8C280903, // 004A GETMET R10 R4 K3 0x5C300600, // 004B MOVE R12 R3 0x5C340A00, // 004C MOVE R13 R5 0x7C280600, // 004D CALL R10 3 - 0xB82A0000, // 004E GETNGBL R10 K0 - 0x8C28150C, // 004F GETMET R10 R10 K12 + 0xB82A2C00, // 004E GETNGBL R10 K22 + 0x8C28151E, // 004F GETMET R10 R10 K30 0x60300018, // 0050 GETGBL R12 G24 - 0x5834000D, // 0051 LDCONST R13 K13 + 0x5834001F, // 0051 LDCONST R13 K31 0x5C381200, // 0052 MOVE R14 R9 - 0x943C0B07, // 0053 GETIDX R15 R5 K7 + 0x943C0B1B, // 0053 GETIDX R15 R5 K27 0x7C300600, // 0054 CALL R12 3 - 0x58340007, // 0055 LDCONST R13 K7 + 0x5834001B, // 0055 LDCONST R13 K27 0x7C280600, // 0056 CALL R10 3 0x70020004, // 0057 JMP #005D 0x60240008, // 0058 GETGBL R9 G8 0x5C281000, // 0059 MOVE R10 R8 0x7C240200, // 005A CALL R9 1 - 0x00261C09, // 005B ADD R9 K14 R9 - 0xB0061E09, // 005C RAISE 1 K15 R9 + 0x00264009, // 005B ADD R9 K32 R9 + 0xB0064209, // 005C RAISE 1 K33 R9 0x80000000, // 005D RET 0 }) ) @@ -933,47 +928,39 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */ be_nested_proto( 9, /* nstack */ 0, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_class(be_class_Partition), - /* K1 */ be_nested_str(flash), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str(read), - /* K5 */ be_nested_str(E9), - /* K6 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_get_flash_definition_sector, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x58000000, // 0000 LDCONST R0 K0 - 0xA4060200, // 0001 IMPORT R1 K1 + 0x58000022, // 0000 LDCONST R0 K34 + 0xA4060000, // 0001 IMPORT R1 K0 0x60080010, // 0002 GETGBL R2 G16 - 0x400E0503, // 0003 CONNECT R3 K2 K3 + 0x400E471C, // 0003 CONNECT R3 K35 K28 0x7C080200, // 0004 CALL R2 1 0xA802000F, // 0005 EXBLK 0 #0016 0x5C0C0400, // 0006 MOVE R3 R2 0x7C0C0000, // 0007 CALL R3 0 0x54120FFF, // 0008 LDINT R4 4096 0x08100604, // 0009 MUL R4 R3 R4 - 0x8C140304, // 000A GETMET R5 R1 K4 + 0x8C140307, // 000A GETMET R5 R1 K7 0x5C1C0800, // 000B MOVE R7 R4 - 0x58200003, // 000C LDCONST R8 K3 + 0x5820001C, // 000C LDCONST R8 K28 0x7C140600, // 000D CALL R5 3 0x60180015, // 000E GETGBL R6 G21 - 0x581C0005, // 000F LDCONST R7 K5 + 0x581C0024, // 000F LDCONST R7 K36 0x7C180200, // 0010 CALL R6 1 0x1C140A06, // 0011 EQ R5 R5 R6 0x78160001, // 0012 JMPF R5 #0015 0xA8040001, // 0013 EXBLK 1 1 0x80040800, // 0014 RET 1 R4 0x7001FFEF, // 0015 JMP #0006 - 0x58080006, // 0016 LDCONST R2 K6 + 0x58080015, // 0016 LDCONST R2 K21 0xAC080200, // 0017 CATCH R2 1 0 0xB0080000, // 0018 RAISE 2 R0 R0 0x80000000, // 0019 RET 0 @@ -990,79 +977,64 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str(get_unallocated_k), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(tasmota), - /* K3 */ be_nested_str(log), - /* K4 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str(resize_max_flash_size_k), - /* K7 */ be_nested_str(slots), - /* K8 */ be_nested_str(sz), - /* K9 */ be_nested_str(save), - /* K10 */ be_nested_str(global), - /* K11 */ be_nested_str(restart_flag), - /* K12 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting), - /* K13 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_resize_fs_to_max, &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ 0xA8020024, // 0000 EXBLK 0 #0026 - 0x8C040100, // 0001 GETMET R1 R0 K0 + 0x8C040125, // 0001 GETMET R1 R0 K37 0x7C040200, // 0002 CALL R1 1 - 0x18080301, // 0003 LE R2 R1 K1 + 0x1808030D, // 0003 LE R2 R1 K13 0x780A0002, // 0004 JMPF R2 #0008 0x4C080000, // 0005 LDNIL R2 0xA8040001, // 0006 EXBLK 1 1 0x80040400, // 0007 RET 1 R2 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x8C080503, // 0009 GETMET R2 R2 K3 + 0xB80A2C00, // 0008 GETNGBL R2 K22 + 0x8C08051E, // 0009 GETMET R2 R2 K30 0x60100018, // 000A GETGBL R4 G24 - 0x58140004, // 000B LDCONST R5 K4 + 0x58140026, // 000B LDCONST R5 K38 0x5C180200, // 000C MOVE R6 R1 0x7C100400, // 000D CALL R4 2 - 0x58140005, // 000E LDCONST R5 K5 + 0x58140010, // 000E LDCONST R5 K16 0x7C080600, // 000F CALL R2 3 - 0x8C080106, // 0010 GETMET R2 R0 K6 + 0x8C080127, // 0010 GETMET R2 R0 K39 0x7C080200, // 0011 CALL R2 1 - 0x88080107, // 0012 GETMBR R2 R0 K7 + 0x88080109, // 0012 GETMBR R2 R0 K9 0x540DFFFE, // 0013 LDINT R3 -1 0x94080403, // 0014 GETIDX R2 R2 R3 0x541203FF, // 0015 LDINT R4 1024 0x08100204, // 0016 MUL R4 R1 R4 - 0x880C0508, // 0017 GETMBR R3 R2 K8 + 0x880C0528, // 0017 GETMBR R3 R2 K40 0x000C0604, // 0018 ADD R3 R3 R4 - 0x900A1003, // 0019 SETMBR R2 K8 R3 - 0x8C0C0109, // 001A GETMET R3 R0 K9 + 0x900A5003, // 0019 SETMBR R2 K40 R3 + 0x8C0C0105, // 001A GETMET R3 R0 K5 0x7C0C0200, // 001B CALL R3 1 - 0xB80E0400, // 001C GETNGBL R3 K2 - 0x880C070A, // 001D GETMBR R3 R3 K10 - 0x900E1705, // 001E SETMBR R3 K11 K5 - 0xB80E0400, // 001F GETNGBL R3 K2 - 0x8C0C0703, // 0020 GETMET R3 R3 K3 - 0x5814000C, // 0021 LDCONST R5 K12 - 0x58180005, // 0022 LDCONST R6 K5 + 0xB80E2C00, // 001C GETNGBL R3 K22 + 0x880C0729, // 001D GETMBR R3 R3 K41 + 0x900E5510, // 001E SETMBR R3 K42 K16 + 0xB80E2C00, // 001F GETNGBL R3 K22 + 0x8C0C071E, // 0020 GETMET R3 R3 K30 + 0x5814002B, // 0021 LDCONST R5 K43 + 0x58180010, // 0022 LDCONST R6 K16 0x7C0C0600, // 0023 CALL R3 3 0xA8040001, // 0024 EXBLK 1 1 0x7002000C, // 0025 JMP #0033 0xAC040002, // 0026 CATCH R1 0 2 0x70020009, // 0027 JMP #0032 - 0xB80E0400, // 0028 GETNGBL R3 K2 - 0x8C0C0703, // 0029 GETMET R3 R3 K3 + 0xB80E2C00, // 0028 GETNGBL R3 K22 + 0x8C0C071E, // 0029 GETMET R3 R3 K30 0x60140018, // 002A GETGBL R5 G24 - 0x5818000D, // 002B LDCONST R6 K13 + 0x5818002C, // 002B LDCONST R6 K44 0x5C1C0200, // 002C MOVE R7 R1 0x5C200400, // 002D MOVE R8 R2 0x7C140600, // 002E CALL R5 3 - 0x58180005, // 002F LDCONST R6 K5 + 0x58180010, // 002F LDCONST R6 K16 0x7C0C0600, // 0030 CALL R3 3 0x70020000, // 0031 JMP #0033 0xB0080000, // 0032 RAISE 2 R0 R0 @@ -1080,21 +1052,18 @@ be_local_closure(class_Partition_switch_factory, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(flash), - /* K1 */ be_nested_str(factory), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_switch_factory, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x8C0C052D, // 0001 GETMET R3 R2 K45 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x80000000, // 0004 RET 0 @@ -1111,57 +1080,44 @@ be_local_closure(class_Partition_load_otadata, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(ota_max), - /* K1 */ be_nested_str(slots), - /* K2 */ be_nested_str(type), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str(subtype), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str(start), - /* K7 */ be_nested_str(stop_iteration), - /* K8 */ be_nested_str(otadata), - /* K9 */ be_nested_str(partition_core), - /* K10 */ be_nested_str(Partition_otadata), - /* K11 */ be_nested_str(has_factory), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_load_otadata, &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x5406DFFF, // 0000 LDINT R1 57344 - 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x8C08012E, // 0001 GETMET R2 R0 K46 0x7C080200, // 0002 CALL R2 1 0x600C0010, // 0003 GETGBL R3 G16 - 0x88100101, // 0004 GETMBR R4 R0 K1 + 0x88100109, // 0004 GETMBR R4 R0 K9 0x7C0C0200, // 0005 CALL R3 1 0xA8020009, // 0006 EXBLK 0 #0011 0x5C100600, // 0007 MOVE R4 R3 0x7C100000, // 0008 CALL R4 0 - 0x88140902, // 0009 GETMBR R5 R4 K2 - 0x1C140B03, // 000A EQ R5 R5 K3 + 0x8814092F, // 0009 GETMBR R5 R4 K47 + 0x1C140B1C, // 000A EQ R5 R5 K28 0x78160003, // 000B JMPF R5 #0010 - 0x88140904, // 000C GETMBR R5 R4 K4 - 0x1C140B05, // 000D EQ R5 R5 K5 + 0x88140930, // 000C GETMBR R5 R4 K48 + 0x1C140B23, // 000D EQ R5 R5 K35 0x78160000, // 000E JMPF R5 #0010 - 0x88040906, // 000F GETMBR R1 R4 K6 + 0x88040931, // 000F GETMBR R1 R4 K49 0x7001FFF5, // 0010 JMP #0007 - 0x580C0007, // 0011 LDCONST R3 K7 + 0x580C0015, // 0011 LDCONST R3 K21 0xAC0C0200, // 0012 CATCH R3 1 0 0xB0080000, // 0013 RAISE 2 R0 R0 - 0xB80E1200, // 0014 GETNGBL R3 K9 - 0x8C0C070A, // 0015 GETMET R3 R3 K10 + 0xB80E2200, // 0014 GETNGBL R3 K17 + 0x8C0C0732, // 0015 GETMET R3 R3 K50 0x5C140400, // 0016 MOVE R5 R2 - 0x8C18010B, // 0017 GETMET R6 R0 K11 + 0x8C180133, // 0017 GETMET R6 R0 K51 0x7C180200, // 0018 CALL R6 1 0x5C1C0200, // 0019 MOVE R7 R1 0x7C0C0800, // 001A CALL R3 4 - 0x90021003, // 001B SETMBR R0 K8 R3 + 0x90020803, // 001B SETMBR R0 K4 R3 0x80000000, // 001C RET 0 }) ) @@ -1176,48 +1132,38 @@ be_local_closure(class_Partition_tostring, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A), - /* K1 */ be_nested_str(slots), - /* K2 */ be_nested_str(_X20_X20), - /* K3 */ be_nested_str(tostring), - /* K4 */ be_nested_str(_X0A), - /* K5 */ be_nested_str(stop_iteration), - /* K6 */ be_nested_str(_X5D_X2C_X0A_X20_X20), - /* K7 */ be_nested_str(otadata), - /* K8 */ be_nested_str(_X0A_X29_X3E), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x58040034, // 0000 LDCONST R1 K52 0x60080010, // 0001 GETGBL R2 G16 - 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x880C0109, // 0002 GETMBR R3 R0 K9 0x7C080200, // 0003 CALL R2 1 0xA8020007, // 0004 EXBLK 0 #000D 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x00040302, // 0007 ADD R1 R1 K2 - 0x8C100703, // 0008 GETMET R4 R3 K3 + 0x00040335, // 0007 ADD R1 R1 K53 + 0x8C100736, // 0008 GETMET R4 R3 K54 0x7C100200, // 0009 CALL R4 1 0x00040204, // 000A ADD R1 R1 R4 - 0x00040304, // 000B ADD R1 R1 K4 + 0x00040337, // 000B ADD R1 R1 K55 0x7001FFF7, // 000C JMP #0005 - 0x58080005, // 000D LDCONST R2 K5 + 0x58080015, // 000D LDCONST R2 K21 0xAC080200, // 000E CATCH R2 1 0 0xB0080000, // 000F RAISE 2 R0 R0 - 0x00040306, // 0010 ADD R1 R1 K6 - 0x88080107, // 0011 GETMBR R2 R0 K7 - 0x8C080503, // 0012 GETMET R2 R2 K3 + 0x00040338, // 0010 ADD R1 R1 K56 + 0x88080104, // 0011 GETMBR R2 R0 K4 + 0x8C080536, // 0012 GETMET R2 R2 K54 0x7C080200, // 0013 CALL R2 1 0x00040202, // 0014 ADD R1 R1 R2 - 0x00040308, // 0015 ADD R1 R1 K8 + 0x00040339, // 0015 ADD R1 R1 K57 0x80040200, // 0016 RET 1 R1 }) ) @@ -1232,19 +1178,17 @@ be_local_closure(class_Partition_has_factory, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(get_factory_slot), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_has_factory, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04013A, // 0000 GETMET R1 R0 K58 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x20040202, // 0003 NE R1 R1 R2 @@ -1262,58 +1206,48 @@ be_local_closure(class_Partition_tobytes, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(slots), - /* K1 */ be_nested_str(value_error), - /* K2 */ be_nested_str(Too_X20many_X20partiition_X20slots), - /* K3 */ be_nested_str(tobytes), - /* K4 */ be_nested_str(stop_iteration), - /* K5 */ be_nested_str(MD5), - /* K6 */ be_nested_str(update), - /* K7 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF), - /* K8 */ be_nested_str(finish), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_tobytes, &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080109, // 0001 GETMBR R2 R0 K9 0x7C040200, // 0002 CALL R1 1 0x540A005E, // 0003 LDINT R2 95 0x24040202, // 0004 GT R1 R1 R2 0x78060000, // 0005 JMPF R1 #0007 - 0xB0060302, // 0006 RAISE 1 K1 K2 + 0xB006773C, // 0006 RAISE 1 K59 K60 0x60040015, // 0007 GETGBL R1 G21 0x7C040000, // 0008 CALL R1 0 0x60080010, // 0009 GETGBL R2 G16 - 0x880C0100, // 000A GETMBR R3 R0 K0 + 0x880C0109, // 000A GETMBR R3 R0 K9 0x7C080200, // 000B CALL R2 1 0xA8020005, // 000C EXBLK 0 #0013 0x5C0C0400, // 000D MOVE R3 R2 0x7C0C0000, // 000E CALL R3 0 - 0x8C100703, // 000F GETMET R4 R3 K3 + 0x8C100701, // 000F GETMET R4 R3 K1 0x7C100200, // 0010 CALL R4 1 0x00040204, // 0011 ADD R1 R1 R4 0x7001FFF9, // 0012 JMP #000D - 0x58080004, // 0013 LDCONST R2 K4 + 0x58080015, // 0013 LDCONST R2 K21 0xAC080200, // 0014 CATCH R2 1 0 0xB0080000, // 0015 RAISE 2 R0 R0 - 0xB80A0A00, // 0016 GETNGBL R2 K5 + 0xB80A7A00, // 0016 GETNGBL R2 K61 0x7C080000, // 0017 CALL R2 0 - 0x8C0C0506, // 0018 GETMET R3 R2 K6 + 0x8C0C053E, // 0018 GETMET R3 R2 K62 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 0x600C0015, // 001B GETGBL R3 G21 - 0x58100007, // 001C LDCONST R4 K7 + 0x5810003F, // 001C LDCONST R4 K63 0x7C0C0200, // 001D CALL R3 1 0x00040203, // 001E ADD R1 R1 R3 - 0x8C0C0508, // 001F GETMET R3 R2 K8 + 0x8C0C0540, // 001F GETMET R3 R2 K64 0x7C0C0200, // 0020 CALL R3 1 0x00040203, // 0021 ADD R1 R1 R3 0x80040200, // 0022 RET 1 R1 @@ -1330,41 +1264,35 @@ be_local_closure(class_Partition_ota_max, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(slots), - /* K1 */ be_nested_str(type), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(subtype), - /* K4 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_ota_max, &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ 0x4C040000, // 0000 LDNIL R1 0x60080010, // 0001 GETGBL R2 G16 - 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x880C0109, // 0002 GETMBR R3 R0 K9 0x7C080200, // 0003 CALL R2 1 0xA8020016, // 0004 EXBLK 0 #001C 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x88100701, // 0007 GETMBR R4 R3 K1 - 0x1C100902, // 0008 EQ R4 R4 K2 + 0x8810072F, // 0007 GETMBR R4 R3 K47 + 0x1C100923, // 0008 EQ R4 R4 K35 0x78120010, // 0009 JMPF R4 #001B - 0x88100703, // 000A GETMBR R4 R3 K3 + 0x88100730, // 000A GETMBR R4 R3 K48 0x5416000F, // 000B LDINT R5 16 0x28100805, // 000C GE R4 R4 R5 0x7812000C, // 000D JMPF R4 #001B - 0x88100703, // 000E GETMBR R4 R3 K3 + 0x88100730, // 000E GETMBR R4 R3 K48 0x5416001F, // 000F LDINT R5 32 0x14100805, // 0010 LT R4 R4 R5 0x78120008, // 0011 JMPF R4 #001B - 0x88100703, // 0012 GETMBR R4 R3 K3 + 0x88100730, // 0012 GETMBR R4 R3 K48 0x5416000F, // 0013 LDINT R5 16 0x04100805, // 0014 SUB R4 R4 R5 0x4C140000, // 0015 LDNIL R5 @@ -1374,7 +1302,7 @@ be_local_closure(class_Partition_ota_max, /* name */ 0x78160000, // 0019 JMPF R5 #001B 0x5C040800, // 001A MOVE R1 R4 0x7001FFE8, // 001B JMP #0005 - 0x58080004, // 001C LDCONST R2 K4 + 0x58080015, // 001C LDCONST R2 K21 0xAC080200, // 001D CATCH R2 1 0 0xB0080000, // 001E RAISE 2 R0 R0 0x80040200, // 001F RET 1 R1 @@ -1391,42 +1319,33 @@ be_local_closure(class_Partition_invalidate_spiffs, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(flash), - /* K1 */ be_nested_str(slots), - /* K2 */ be_nested_str(is_spiffs), - /* K3 */ be_nested_str(value_error), - /* K4 */ be_nested_str(No_X20FS_X20partition_X20found), - /* K5 */ be_nested_str(00), - /* K6 */ be_nested_str(write), - /* K7 */ be_nested_str(start), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_invalidate_spiffs, &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88080109, // 0001 GETMBR R2 R0 K9 0x540DFFFE, // 0002 LDINT R3 -1 0x94080403, // 0003 GETIDX R2 R2 R3 - 0x8C0C0502, // 0004 GETMET R3 R2 K2 + 0x8C0C0541, // 0004 GETMET R3 R2 K65 0x7C0C0200, // 0005 CALL R3 1 0x740E0000, // 0006 JMPT R3 #0008 - 0xB0060704, // 0007 RAISE 1 K3 K4 + 0xB0067742, // 0007 RAISE 1 K59 K66 0x600C0015, // 0008 GETGBL R3 G21 - 0x58100005, // 0009 LDCONST R4 K5 + 0x58100043, // 0009 LDCONST R4 K67 0x7C0C0200, // 000A CALL R3 1 - 0x8C100306, // 000B GETMET R4 R1 K6 - 0x88180507, // 000C GETMBR R6 R2 K7 + 0x8C100303, // 000B GETMET R4 R1 K3 + 0x88180531, // 000C GETMBR R6 R2 K49 0x5C1C0600, // 000D MOVE R7 R3 0x7C100600, // 000E CALL R4 3 - 0x8C100306, // 000F GETMET R4 R1 K6 - 0x88180507, // 0010 GETMBR R6 R2 K7 + 0x8C100303, // 000F GETMET R4 R1 K3 + 0x88180531, // 0010 GETMBR R6 R2 K49 0x541E0FFF, // 0011 LDINT R7 4096 0x00180C07, // 0012 ADD R6 R6 R7 0x5C1C0600, // 0013 MOVE R7 R3 @@ -1445,33 +1364,29 @@ be_local_closure(class_Partition_get_factory_slot, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(slots), - /* K1 */ be_nested_str(is_factory), - /* K2 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_get_factory_slot, &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080109, // 0001 GETMBR R2 R0 K9 0x7C040200, // 0002 CALL R1 1 0xA8020007, // 0003 EXBLK 0 #000C 0x5C080200, // 0004 MOVE R2 R1 0x7C080000, // 0005 CALL R2 0 - 0x8C0C0501, // 0006 GETMET R3 R2 K1 + 0x8C0C0544, // 0006 GETMET R3 R2 K68 0x7C0C0200, // 0007 CALL R3 1 0x780E0001, // 0008 JMPF R3 #000B 0xA8040001, // 0009 EXBLK 1 1 0x80040400, // 000A RET 1 R2 0x7001FFF7, // 000B JMP #0004 - 0x58040002, // 000C LDCONST R1 K2 + 0x58040015, // 000C LDCONST R1 K21 0xAC040200, // 000D CATCH R1 1 0 0xB0080000, // 000E RAISE 2 R0 R0 0x80000000, // 000F RET 0 @@ -1488,38 +1403,30 @@ be_local_closure(class_Partition_set_active, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(ota_max), - /* K2 */ be_nested_str(value_error), - /* K3 */ be_nested_str(Invalid_X20ota_X20partition_X20number), - /* K4 */ be_nested_str(otadata), - /* K5 */ be_nested_str(set_ota_max), - /* K6 */ be_nested_str(set_active), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_set_active, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x14080300, // 0000 LT R2 R1 K0 + 0x1408030D, // 0000 LT R2 R1 K13 0x740A0003, // 0001 JMPT R2 #0006 - 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x8C08012E, // 0002 GETMET R2 R0 K46 0x7C080200, // 0003 CALL R2 1 0x24080202, // 0004 GT R2 R1 R2 0x780A0000, // 0005 JMPF R2 #0007 - 0xB0060503, // 0006 RAISE 1 K2 K3 + 0xB0067745, // 0006 RAISE 1 K59 K69 0x88080104, // 0007 GETMBR R2 R0 K4 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x8C100101, // 0009 GETMET R4 R0 K1 + 0x8C080546, // 0008 GETMET R2 R2 K70 + 0x8C10012E, // 0009 GETMET R4 R0 K46 0x7C100200, // 000A CALL R4 1 0x7C080400, // 000B CALL R2 2 0x88080104, // 000C GETMBR R2 R0 K4 - 0x8C080506, // 000D GETMET R2 R2 K6 + 0x8C080547, // 000D GETMET R2 R2 K71 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80000000, // 0010 RET 0 @@ -1536,33 +1443,26 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(slots), - /* K1 */ be_nested_str(is_spiffs), - /* K2 */ be_nested_str(get_max_flash_size_k), - /* K3 */ be_nested_str(start), - /* K4 */ be_nested_str(sz), - /* K5 */ be_const_int(0), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_get_unallocated_k, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x5409FFFE, // 0001 LDINT R2 -1 0x94040202, // 0002 GETIDX R1 R1 R2 - 0x8C080301, // 0003 GETMET R2 R1 K1 + 0x8C080341, // 0003 GETMET R2 R1 K65 0x7C080200, // 0004 CALL R2 1 0x780A000A, // 0005 JMPF R2 #0011 - 0x8C080102, // 0006 GETMET R2 R0 K2 + 0x8C080148, // 0006 GETMET R2 R0 K72 0x7C080200, // 0007 CALL R2 1 - 0x880C0303, // 0008 GETMBR R3 R1 K3 - 0x88100304, // 0009 GETMBR R4 R1 K4 + 0x880C0331, // 0008 GETMBR R3 R1 K49 + 0x88100328, // 0009 GETMBR R4 R1 K40 0x000C0604, // 000A ADD R3 R3 R4 0x541203FF, // 000B LDINT R4 1024 0x0C0C0604, // 000C DIV R3 R3 R4 @@ -1570,7 +1470,7 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ 0x78120001, // 000E JMPF R4 #0011 0x04100403, // 000F SUB R4 R2 R3 0x80040800, // 0010 RET 1 R4 - 0x80060A00, // 0011 RET 1 K5 + 0x80061A00, // 0011 RET 1 K13 }) ) ); @@ -1584,34 +1484,30 @@ be_local_closure(class_Partition_get_ota_slot, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(slots), - /* K1 */ be_nested_str(is_ota), - /* K2 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Partition, /* shared constants */ &be_const_str_get_ota_slot, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x880C0109, // 0001 GETMBR R3 R0 K9 0x7C080200, // 0002 CALL R2 1 0xA8020008, // 0003 EXBLK 0 #000D 0x5C0C0400, // 0004 MOVE R3 R2 0x7C0C0000, // 0005 CALL R3 0 - 0x8C100701, // 0006 GETMET R4 R3 K1 + 0x8C100749, // 0006 GETMET R4 R3 K73 0x7C100200, // 0007 CALL R4 1 0x1C100801, // 0008 EQ R4 R4 R1 0x78120001, // 0009 JMPF R4 #000C 0xA8040001, // 000A EXBLK 1 1 0x80040600, // 000B RET 1 R3 0x7001FFF6, // 000C JMP #0004 - 0x58080002, // 000D LDCONST R2 K2 + 0x58080015, // 000D LDCONST R2 K21 0xAC080200, // 000E CATCH R2 1 0 0xB0080000, // 000F RAISE 2 R0 R0 0x4C080000, // 0010 LDNIL R2 @@ -1657,6 +1553,64 @@ be_local_class(Partition, })), (bstring*) &be_const_str_Partition ); +extern const bclass be_class_Partition_info; +// compact class 'Partition_info' ktab size: 53, total: 92 (saved 312 bytes) +static const bvalue be_ktab_class_Partition_info[53] = { + /* K0 */ be_nested_str(type), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str(subtype), + /* K3 */ be_nested_str(app), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str(data), + /* K6 */ be_nested_str(0x_X2502X), + /* K7 */ be_nested_str(start), + /* K8 */ be_nested_str(sz), + /* K9 */ be_nested_str(label), + /* K10 */ be_nested_str(), + /* K11 */ be_nested_str(flags), + /* K12 */ be_nested_str(get), + /* K13 */ be_const_int(2), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str(remove_trailing_zeroes), + /* K16 */ be_nested_str(asstring), + /* K17 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X), + /* K18 */ be_nested_str(internal_error), + /* K19 */ be_nested_str(factory), + /* K20 */ be_nested_str(ota_), + /* K21 */ be_nested_str(test), + /* K22 */ be_nested_str(otadata), + /* K23 */ be_nested_str(phy), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str(nvs), + /* K26 */ be_const_int(3), + /* K27 */ be_nested_str(coredump), + /* K28 */ be_nested_str(nvskeys), + /* K29 */ be_nested_str(efuse_em), + /* K30 */ be_nested_str(esphttpd), + /* K31 */ be_nested_str(fat), + /* K32 */ be_nested_str(spiffs), + /* K33 */ be_nested_str(type_to_string), + /* K34 */ be_nested_str(subtype_to_string), + /* K35 */ be_nested_str(_X20_X28), + /* K36 */ be_nested_str(_X29), + /* K37 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E), + /* K38 */ be_nested_str(AA50), + /* K39 */ be_nested_str(resize), + /* K40 */ be_nested_str(add), + /* K41 */ be_const_int(1), + /* K42 */ be_nested_str(fromstring), + /* K43 */ be_const_class(be_class_Partition_info), + /* K44 */ be_const_int(0), + /* K45 */ be_nested_str(flash), + /* K46 */ be_nested_str(is_ota), + /* K47 */ be_nested_str(is_factory), + /* K48 */ be_nested_str(read), + /* K49 */ be_nested_str(tasmota), + /* K50 */ be_nested_str(log), + /* K51 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27), + /* K52 */ be_nested_str(_X27_X20_X2D_X20), +}; + extern const bclass be_class_Partition_info; @@ -1667,17 +1621,13 @@ be_local_closure(class_Partition_info_is_factory, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(type), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(subtype), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_is_factory, &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -1703,34 +1653,27 @@ be_local_closure(class_Partition_info_type_to_string, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(type), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(app), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str(data), - /* K5 */ be_nested_str(0x_X2502X), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_type_to_string, &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x1C040301, // 0001 EQ R1 R1 K1 0x78060001, // 0002 JMPF R1 #0005 - 0x80060400, // 0003 RET 1 K2 + 0x80060600, // 0003 RET 1 K3 0x70020003, // 0004 JMP #0009 0x88040100, // 0005 GETMBR R1 R0 K0 - 0x1C040303, // 0006 EQ R1 R1 K3 + 0x1C040304, // 0006 EQ R1 R1 K4 0x78060000, // 0007 JMPF R1 #0009 - 0x80060800, // 0008 RET 1 K4 + 0x80060A00, // 0008 RET 1 K5 0x60040018, // 0009 GETGBL R1 G24 - 0x58080005, // 000A LDCONST R2 K5 + 0x58080006, // 000A LDCONST R2 K6 0x880C0100, // 000B GETMBR R3 R0 K0 0x7C040400, // 000C CALL R1 2 0x80040200, // 000D RET 1 R1 @@ -1747,92 +1690,75 @@ be_local_closure(class_Partition_info_init, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str(type), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(subtype), - /* K3 */ be_nested_str(start), - /* K4 */ be_nested_str(sz), - /* K5 */ be_nested_str(label), - /* K6 */ be_nested_str(), - /* K7 */ be_nested_str(flags), - /* K8 */ be_nested_str(get), - /* K9 */ be_const_int(2), - /* K10 */ be_const_int(1), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str(remove_trailing_zeroes), - /* K13 */ be_nested_str(asstring), - /* K14 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X), - /* K15 */ be_nested_str(internal_error), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[60]) { /* code */ 0x90020101, // 0000 SETMBR R0 K0 K1 0x90020501, // 0001 SETMBR R0 K2 K1 - 0x90020701, // 0002 SETMBR R0 K3 K1 - 0x90020901, // 0003 SETMBR R0 K4 K1 - 0x90020B06, // 0004 SETMBR R0 K5 K6 - 0x90020F01, // 0005 SETMBR R0 K7 K1 + 0x90020F01, // 0002 SETMBR R0 K7 K1 + 0x90021101, // 0003 SETMBR R0 K8 K1 + 0x9002130A, // 0004 SETMBR R0 K9 K10 + 0x90021701, // 0005 SETMBR R0 K11 K1 0x6008000E, // 0006 GETGBL R2 G14 0x600C0015, // 0007 GETGBL R3 G21 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 0x740A0000, // 000A JMPT R2 #000C 0x80000400, // 000B RET 0 - 0x8C080308, // 000C GETMET R2 R1 K8 + 0x8C08030C, // 000C GETMET R2 R1 K12 0x58100001, // 000D LDCONST R4 K1 - 0x58140009, // 000E LDCONST R5 K9 + 0x5814000D, // 000E LDCONST R5 K13 0x7C080600, // 000F CALL R2 3 0x540E50A9, // 0010 LDINT R3 20650 0x1C0C0403, // 0011 EQ R3 R2 R3 0x780E0022, // 0012 JMPF R3 #0036 - 0x8C0C0308, // 0013 GETMET R3 R1 K8 - 0x58140009, // 0014 LDCONST R5 K9 - 0x5818000A, // 0015 LDCONST R6 K10 + 0x8C0C030C, // 0013 GETMET R3 R1 K12 + 0x5814000D, // 0014 LDCONST R5 K13 + 0x58180004, // 0015 LDCONST R6 K4 0x7C0C0600, // 0016 CALL R3 3 0x90020003, // 0017 SETMBR R0 K0 R3 - 0x8C0C0308, // 0018 GETMET R3 R1 K8 - 0x5814000B, // 0019 LDCONST R5 K11 - 0x5818000A, // 001A LDCONST R6 K10 + 0x8C0C030C, // 0018 GETMET R3 R1 K12 + 0x5814000E, // 0019 LDCONST R5 K14 + 0x58180004, // 001A LDCONST R6 K4 0x7C0C0600, // 001B CALL R3 3 0x90020403, // 001C SETMBR R0 K2 R3 - 0x8C0C0308, // 001D GETMET R3 R1 K8 + 0x8C0C030C, // 001D GETMET R3 R1 K12 0x54160003, // 001E LDINT R5 4 0x541A0003, // 001F LDINT R6 4 0x7C0C0600, // 0020 CALL R3 3 - 0x90020603, // 0021 SETMBR R0 K3 R3 - 0x8C0C0308, // 0022 GETMET R3 R1 K8 + 0x90020E03, // 0021 SETMBR R0 K7 R3 + 0x8C0C030C, // 0022 GETMET R3 R1 K12 0x54160007, // 0023 LDINT R5 8 0x541A0003, // 0024 LDINT R6 4 0x7C0C0600, // 0025 CALL R3 3 - 0x90020803, // 0026 SETMBR R0 K4 R3 - 0x8C0C010C, // 0027 GETMET R3 R0 K12 + 0x90021003, // 0026 SETMBR R0 K8 R3 + 0x8C0C010F, // 0027 GETMET R3 R0 K15 0x5416000B, // 0028 LDINT R5 12 0x541A001A, // 0029 LDINT R6 27 0x40140A06, // 002A CONNECT R5 R5 R6 0x94140205, // 002B GETIDX R5 R1 R5 0x7C0C0400, // 002C CALL R3 2 - 0x8C0C070D, // 002D GETMET R3 R3 K13 + 0x8C0C0710, // 002D GETMET R3 R3 K16 0x7C0C0200, // 002E CALL R3 1 - 0x90020A03, // 002F SETMBR R0 K5 R3 - 0x8C0C0308, // 0030 GETMET R3 R1 K8 + 0x90021203, // 002F SETMBR R0 K9 R3 + 0x8C0C030C, // 0030 GETMET R3 R1 K12 0x5416001B, // 0031 LDINT R5 28 0x541A0003, // 0032 LDINT R6 4 0x7C0C0600, // 0033 CALL R3 3 - 0x90020E03, // 0034 SETMBR R0 K7 R3 + 0x90021603, // 0034 SETMBR R0 K11 R3 0x70020004, // 0035 JMP #003B 0x600C0018, // 0036 GETGBL R3 G24 - 0x5810000E, // 0037 LDCONST R4 K14 + 0x58100011, // 0037 LDCONST R4 K17 0x5C140400, // 0038 MOVE R5 R2 0x7C0C0400, // 0039 CALL R3 2 - 0xB0061E03, // 003A RAISE 1 K15 R3 + 0xB0062403, // 003A RAISE 1 K18 R3 0x80000000, // 003B RET 0 }) ) @@ -1847,33 +1773,13 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str(type), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(subtype), - /* K3 */ be_nested_str(factory), - /* K4 */ be_nested_str(ota_), - /* K5 */ be_nested_str(test), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str(otadata), - /* K8 */ be_nested_str(phy), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str(nvs), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str(coredump), - /* K13 */ be_nested_str(nvskeys), - /* K14 */ be_nested_str(efuse_em), - /* K15 */ be_nested_str(esphttpd), - /* K16 */ be_nested_str(fat), - /* K17 */ be_nested_str(spiffs), - /* K18 */ be_nested_str(0x_X2502X), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_subtype_to_string, &be_const_str_solidified, ( &(const binstruction[87]) { /* code */ @@ -1883,7 +1789,7 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ 0x88040102, // 0003 GETMBR R1 R0 K2 0x1C040301, // 0004 EQ R1 R1 K1 0x78060001, // 0005 JMPF R1 #0008 - 0x80060600, // 0006 RET 1 K3 + 0x80062600, // 0006 RET 1 K19 0x70020014, // 0007 JMP #001D 0x88040102, // 0008 GETMBR R1 R0 K2 0x540A000F, // 0009 LDINT R2 16 @@ -1898,69 +1804,69 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ 0x540E000F, // 0012 LDINT R3 16 0x04080403, // 0013 SUB R2 R2 R3 0x7C040200, // 0014 CALL R1 1 - 0x00060801, // 0015 ADD R1 K4 R1 + 0x00062801, // 0015 ADD R1 K20 R1 0x80040200, // 0016 RET 1 R1 0x70020004, // 0017 JMP #001D 0x88040102, // 0018 GETMBR R1 R0 K2 0x540A001F, // 0019 LDINT R2 32 0x1C040202, // 001A EQ R1 R1 R2 0x78060000, // 001B JMPF R1 #001D - 0x80060A00, // 001C RET 1 K5 + 0x80062A00, // 001C RET 1 K21 0x70020033, // 001D JMP #0052 0x88040100, // 001E GETMBR R1 R0 K0 - 0x1C040306, // 001F EQ R1 R1 K6 + 0x1C040304, // 001F EQ R1 R1 K4 0x78060030, // 0020 JMPF R1 #0052 0x88040102, // 0021 GETMBR R1 R0 K2 0x1C040301, // 0022 EQ R1 R1 K1 0x78060001, // 0023 JMPF R1 #0026 - 0x80060E00, // 0024 RET 1 K7 + 0x80062C00, // 0024 RET 1 K22 0x7002002B, // 0025 JMP #0052 0x88040102, // 0026 GETMBR R1 R0 K2 - 0x1C040306, // 0027 EQ R1 R1 K6 + 0x1C040304, // 0027 EQ R1 R1 K4 0x78060001, // 0028 JMPF R1 #002B - 0x80061000, // 0029 RET 1 K8 + 0x80062E00, // 0029 RET 1 K23 0x70020026, // 002A JMP #0052 0x88040102, // 002B GETMBR R1 R0 K2 - 0x1C040309, // 002C EQ R1 R1 K9 + 0x1C040318, // 002C EQ R1 R1 K24 0x78060001, // 002D JMPF R1 #0030 - 0x80061400, // 002E RET 1 K10 + 0x80063200, // 002E RET 1 K25 0x70020021, // 002F JMP #0052 0x88040102, // 0030 GETMBR R1 R0 K2 - 0x1C04030B, // 0031 EQ R1 R1 K11 + 0x1C04031A, // 0031 EQ R1 R1 K26 0x78060001, // 0032 JMPF R1 #0035 - 0x80061800, // 0033 RET 1 K12 + 0x80063600, // 0033 RET 1 K27 0x7002001C, // 0034 JMP #0052 0x88040102, // 0035 GETMBR R1 R0 K2 0x540A0003, // 0036 LDINT R2 4 0x1C040202, // 0037 EQ R1 R1 R2 0x78060001, // 0038 JMPF R1 #003B - 0x80061A00, // 0039 RET 1 K13 + 0x80063800, // 0039 RET 1 K28 0x70020016, // 003A JMP #0052 0x88040102, // 003B GETMBR R1 R0 K2 0x540A0004, // 003C LDINT R2 5 0x1C040202, // 003D EQ R1 R1 R2 0x78060001, // 003E JMPF R1 #0041 - 0x80061C00, // 003F RET 1 K14 + 0x80063A00, // 003F RET 1 K29 0x70020010, // 0040 JMP #0052 0x88040102, // 0041 GETMBR R1 R0 K2 0x540A007F, // 0042 LDINT R2 128 0x1C040202, // 0043 EQ R1 R1 R2 0x78060001, // 0044 JMPF R1 #0047 - 0x80061E00, // 0045 RET 1 K15 + 0x80063C00, // 0045 RET 1 K30 0x7002000A, // 0046 JMP #0052 0x88040102, // 0047 GETMBR R1 R0 K2 0x540A0080, // 0048 LDINT R2 129 0x1C040202, // 0049 EQ R1 R1 R2 0x78060001, // 004A JMPF R1 #004D - 0x80062000, // 004B RET 1 K16 + 0x80063E00, // 004B RET 1 K31 0x70020004, // 004C JMP #0052 0x88040102, // 004D GETMBR R1 R0 K2 0x540A0081, // 004E LDINT R2 130 0x1C040202, // 004F EQ R1 R1 R2 0x78060000, // 0050 JMPF R1 #0052 - 0x80062200, // 0051 RET 1 K17 + 0x80064000, // 0051 RET 1 K32 0x60040018, // 0052 GETGBL R1 G24 - 0x58080012, // 0053 LDCONST R2 K18 + 0x58080006, // 0053 LDCONST R2 K6 0x880C0102, // 0054 GETMBR R3 R0 K2 0x7C040400, // 0055 CALL R1 2 0x80040200, // 0056 RET 1 R1 @@ -1977,52 +1883,39 @@ be_local_closure(class_Partition_info_tostring, /* name */ be_nested_proto( 13, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(type_to_string), - /* K1 */ be_nested_str(subtype_to_string), - /* K2 */ be_nested_str(), - /* K3 */ be_nested_str(_X20_X28), - /* K4 */ be_nested_str(_X29), - /* K5 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E), - /* K6 */ be_nested_str(type), - /* K7 */ be_nested_str(subtype), - /* K8 */ be_nested_str(start), - /* K9 */ be_nested_str(sz), - /* K10 */ be_nested_str(label), - /* K11 */ be_nested_str(flags), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040121, // 0000 GETMET R1 R0 K33 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x8C080122, // 0002 GETMET R2 R0 K34 0x7C080200, // 0003 CALL R2 1 - 0x200C0302, // 0004 NE R3 R1 K2 + 0x200C030A, // 0004 NE R3 R1 K10 0x780E0002, // 0005 JMPF R3 #0009 - 0x000E0601, // 0006 ADD R3 K3 R1 - 0x000C0704, // 0007 ADD R3 R3 K4 + 0x000E4601, // 0006 ADD R3 K35 R1 + 0x000C0724, // 0007 ADD R3 R3 K36 0x5C040600, // 0008 MOVE R1 R3 - 0x200C0502, // 0009 NE R3 R2 K2 + 0x200C050A, // 0009 NE R3 R2 K10 0x780E0002, // 000A JMPF R3 #000E - 0x000E0602, // 000B ADD R3 K3 R2 - 0x000C0704, // 000C ADD R3 R3 K4 + 0x000E4602, // 000B ADD R3 K35 R2 + 0x000C0724, // 000C ADD R3 R3 K36 0x5C080600, // 000D MOVE R2 R3 0x600C0018, // 000E GETGBL R3 G24 - 0x58100005, // 000F LDCONST R4 K5 - 0x88140106, // 0010 GETMBR R5 R0 K6 + 0x58100025, // 000F LDCONST R4 K37 + 0x88140100, // 0010 GETMBR R5 R0 K0 0x5C180200, // 0011 MOVE R6 R1 - 0x881C0107, // 0012 GETMBR R7 R0 K7 + 0x881C0102, // 0012 GETMBR R7 R0 K2 0x5C200400, // 0013 MOVE R8 R2 - 0x88240108, // 0014 GETMBR R9 R0 K8 - 0x88280109, // 0015 GETMBR R10 R0 K9 - 0x882C010A, // 0016 GETMBR R11 R0 K10 + 0x88240107, // 0014 GETMBR R9 R0 K7 + 0x88280108, // 0015 GETMBR R10 R0 K8 + 0x882C0109, // 0016 GETMBR R11 R0 K9 0x8830010B, // 0017 GETMBR R12 R0 K11 0x7C0C1200, // 0018 CALL R3 9 0x80040600, // 0019 RET 1 R3 @@ -2039,23 +1932,19 @@ be_local_closure(class_Partition_info_is_ota, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(subtype), - /* K1 */ be_nested_str(type), - /* K2 */ be_const_int(0), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_is_ota, &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x1C080502, // 0002 EQ R2 R2 K2 + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x1C080501, // 0002 EQ R2 R2 K1 0x780A0008, // 0003 JMPF R2 #000D 0x540A000F, // 0004 LDINT R2 16 0x28080202, // 0005 GE R2 R1 R2 @@ -2080,64 +1969,51 @@ be_local_closure(class_Partition_info_tobytes, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(AA50), - /* K1 */ be_nested_str(resize), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str(add), - /* K4 */ be_nested_str(type), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str(subtype), - /* K7 */ be_nested_str(start), - /* K8 */ be_nested_str(sz), - /* K9 */ be_nested_str(fromstring), - /* K10 */ be_nested_str(label), - /* K11 */ be_nested_str(flags), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_tobytes, &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ 0x60040015, // 0000 GETGBL R1 G21 - 0x58080000, // 0001 LDCONST R2 K0 + 0x58080026, // 0001 LDCONST R2 K38 0x7C040200, // 0002 CALL R1 1 - 0x8C080301, // 0003 GETMET R2 R1 K1 + 0x8C080327, // 0003 GETMET R2 R1 K39 0x5412001F, // 0004 LDINT R4 32 0x7C080400, // 0005 CALL R2 2 - 0x8C080501, // 0006 GETMET R2 R2 K1 - 0x58100002, // 0007 LDCONST R4 K2 + 0x8C080527, // 0006 GETMET R2 R2 K39 + 0x5810000D, // 0007 LDCONST R4 K13 0x7C080400, // 0008 CALL R2 2 - 0x8C080303, // 0009 GETMET R2 R1 K3 - 0x88100104, // 000A GETMBR R4 R0 K4 - 0x58140005, // 000B LDCONST R5 K5 + 0x8C080328, // 0009 GETMET R2 R1 K40 + 0x88100100, // 000A GETMBR R4 R0 K0 + 0x58140029, // 000B LDCONST R5 K41 0x7C080600, // 000C CALL R2 3 - 0x8C080303, // 000D GETMET R2 R1 K3 - 0x88100106, // 000E GETMBR R4 R0 K6 - 0x58140005, // 000F LDCONST R5 K5 + 0x8C080328, // 000D GETMET R2 R1 K40 + 0x88100102, // 000E GETMBR R4 R0 K2 + 0x58140029, // 000F LDCONST R5 K41 0x7C080600, // 0010 CALL R2 3 - 0x8C080303, // 0011 GETMET R2 R1 K3 + 0x8C080328, // 0011 GETMET R2 R1 K40 0x88100107, // 0012 GETMBR R4 R0 K7 0x54160003, // 0013 LDINT R5 4 0x7C080600, // 0014 CALL R2 3 - 0x8C080303, // 0015 GETMET R2 R1 K3 + 0x8C080328, // 0015 GETMET R2 R1 K40 0x88100108, // 0016 GETMBR R4 R0 K8 0x54160003, // 0017 LDINT R5 4 0x7C080600, // 0018 CALL R2 3 0x60080015, // 0019 GETGBL R2 G21 0x7C080000, // 001A CALL R2 0 - 0x8C080509, // 001B GETMET R2 R2 K9 - 0x8810010A, // 001C GETMBR R4 R0 K10 + 0x8C08052A, // 001B GETMET R2 R2 K42 + 0x88100109, // 001C GETMBR R4 R0 K9 0x7C080400, // 001D CALL R2 2 - 0x8C0C0501, // 001E GETMET R3 R2 K1 + 0x8C0C0527, // 001E GETMET R3 R2 K39 0x5416000F, // 001F LDINT R5 16 0x7C0C0400, // 0020 CALL R3 2 0x00040202, // 0021 ADD R1 R1 R2 - 0x8C0C0303, // 0022 GETMET R3 R1 K3 + 0x8C0C0328, // 0022 GETMET R3 R1 K40 0x8814010B, // 0023 GETMBR R5 R0 K11 0x541A0003, // 0024 LDINT R6 4 0x7C0C0600, // 0025 CALL R3 3 @@ -2155,39 +2031,34 @@ be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_Partition_info), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str(resize), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_remove_trailing_zeroes, &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x5804002B, // 0000 LDCONST R1 K43 0x6008000C, // 0001 GETGBL R2 G12 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 - 0x580C0001, // 0004 LDCONST R3 K1 + 0x580C002C, // 0004 LDCONST R3 K44 0x14100602, // 0005 LT R4 R3 R2 0x78120007, // 0006 JMPF R4 #000F 0x5411FFFE, // 0007 LDINT R4 -1 0x04100803, // 0008 SUB R4 R4 R3 0x94100004, // 0009 GETIDX R4 R0 R4 - 0x20100901, // 000A NE R4 R4 K1 + 0x2010092C, // 000A NE R4 R4 K44 0x78120000, // 000B JMPF R4 #000D 0x70020001, // 000C JMP #000F - 0x000C0702, // 000D ADD R3 R3 K2 + 0x000C0729, // 000D ADD R3 R3 K41 0x7001FFF5, // 000E JMP #0005 - 0x24100701, // 000F GT R4 R3 K1 + 0x2410072C, // 000F GT R4 R3 K44 0x78120005, // 0010 JMPF R4 #0017 - 0x8C100103, // 0011 GETMET R4 R0 K3 + 0x8C100127, // 0011 GETMET R4 R0 K39 0x6018000C, // 0012 GETGBL R6 G12 0x5C1C0000, // 0013 MOVE R7 R0 0x7C180200, // 0014 CALL R6 1 @@ -2207,22 +2078,18 @@ be_local_closure(class_Partition_info_is_spiffs, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(type), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str(subtype), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_is_spiffs, &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x1C040301, // 0001 EQ R1 R1 K1 + 0x1C040304, // 0001 EQ R1 R1 K4 0x78060003, // 0002 JMPF R1 #0007 0x88040102, // 0003 GETMBR R1 R0 K2 0x540A0081, // 0004 LDINT R2 130 @@ -2244,52 +2111,37 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ be_nested_proto( 14, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str(flash), - /* K1 */ be_nested_str(is_ota), - /* K2 */ be_nested_str(is_factory), - /* K3 */ be_nested_str(start), - /* K4 */ be_nested_str(sz), - /* K5 */ be_nested_str(read), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str(get), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str(tasmota), - /* K10 */ be_nested_str(log), - /* K11 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27), - /* K12 */ be_nested_str(_X27_X20_X2D_X20), - /* K13 */ be_const_int(2), - }), + &be_ktab_class_Partition_info, /* shared constants */ &be_const_str_get_image_size, &be_const_str_solidified, ( &(const binstruction[85]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0xA4065A00, // 0000 IMPORT R1 K45 + 0x8C08012E, // 0001 GETMET R2 R0 K46 0x7C080200, // 0002 CALL R2 1 0x4C0C0000, // 0003 LDNIL R3 0x1C080403, // 0004 EQ R2 R2 R3 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080102, // 0006 GETMET R2 R0 K2 + 0x8C08012F, // 0006 GETMET R2 R0 K47 0x7C080200, // 0007 CALL R2 1 0x740A0001, // 0008 JMPT R2 #000B 0x5409FFFE, // 0009 LDINT R2 -1 0x80040400, // 000A RET 1 R2 0xA802003A, // 000B EXBLK 0 #0047 - 0x88080103, // 000C GETMBR R2 R0 K3 - 0x880C0104, // 000D GETMBR R3 R0 K4 - 0x8C100305, // 000E GETMET R4 R1 K5 + 0x88080107, // 000C GETMBR R2 R0 K7 + 0x880C0108, // 000D GETMBR R3 R0 K8 + 0x8C100330, // 000E GETMET R4 R1 K48 0x5C180400, // 000F MOVE R6 R2 - 0x581C0006, // 0010 LDCONST R7 K6 + 0x581C0029, // 0010 LDCONST R7 K41 0x7C100600, // 0011 CALL R4 3 - 0x8C100907, // 0012 GETMET R4 R4 K7 - 0x58180008, // 0013 LDCONST R6 K8 - 0x581C0006, // 0014 LDCONST R7 K6 + 0x8C10090C, // 0012 GETMET R4 R4 K12 + 0x5818002C, // 0013 LDCONST R6 K44 + 0x581C0029, // 0014 LDCONST R7 K41 0x7C100600, // 0015 CALL R4 3 0x541600E8, // 0016 LDINT R5 233 0x20140805, // 0017 NE R5 R4 R5 @@ -2297,29 +2149,29 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ 0x5415FFFE, // 0019 LDINT R5 -1 0xA8040001, // 001A EXBLK 1 1 0x80040A00, // 001B RET 1 R5 - 0x8C140305, // 001C GETMET R5 R1 K5 - 0x001C0506, // 001D ADD R7 R2 K6 - 0x58200006, // 001E LDCONST R8 K6 + 0x8C140330, // 001C GETMET R5 R1 K48 + 0x001C0529, // 001D ADD R7 R2 K41 + 0x58200029, // 001E LDCONST R8 K41 0x7C140600, // 001F CALL R5 3 - 0x8C140B07, // 0020 GETMET R5 R5 K7 - 0x581C0008, // 0021 LDCONST R7 K8 - 0x58200006, // 0022 LDCONST R8 K6 + 0x8C140B0C, // 0020 GETMET R5 R5 K12 + 0x581C002C, // 0021 LDCONST R7 K44 + 0x58200029, // 0022 LDCONST R8 K41 0x7C140600, // 0023 CALL R5 3 0x541A001F, // 0024 LDINT R6 32 0x00180406, // 0025 ADD R6 R2 R6 - 0x581C0008, // 0026 LDCONST R7 K8 + 0x581C002C, // 0026 LDCONST R7 K44 0x14200E05, // 0027 LT R8 R7 R5 0x78220017, // 0028 JMPF R8 #0041 - 0x8C200305, // 0029 GETMET R8 R1 K5 + 0x8C200330, // 0029 GETMET R8 R1 K48 0x542A0007, // 002A LDINT R10 8 0x04280C0A, // 002B SUB R10 R6 R10 0x542E0007, // 002C LDINT R11 8 0x7C200600, // 002D CALL R8 3 - 0x8C241107, // 002E GETMET R9 R8 K7 - 0x582C0008, // 002F LDCONST R11 K8 + 0x8C24110C, // 002E GETMET R9 R8 K12 + 0x582C002C, // 002F LDCONST R11 K44 0x54320003, // 0030 LDINT R12 4 0x7C240600, // 0031 CALL R9 3 - 0x8C281107, // 0032 GETMET R10 R8 K7 + 0x8C28110C, // 0032 GETMET R10 R8 K12 0x54320003, // 0033 LDINT R12 4 0x54360003, // 0034 LDINT R13 4 0x7C280600, // 0035 CALL R10 3 @@ -2332,20 +2184,20 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ 0x542DFFFE, // 003C LDINT R11 -1 0xA8040001, // 003D EXBLK 1 1 0x80041600, // 003E RET 1 R11 - 0x001C0F06, // 003F ADD R7 R7 K6 + 0x001C0F29, // 003F ADD R7 R7 K41 0x7001FFE5, // 0040 JMP #0027 0x04200C02, // 0041 SUB R8 R6 R2 - 0x00201106, // 0042 ADD R8 R8 K6 + 0x00201129, // 0042 ADD R8 R8 K41 0xA8040001, // 0043 EXBLK 1 1 0x80041000, // 0044 RET 1 R8 0xA8040001, // 0045 EXBLK 1 1 0x7002000C, // 0046 JMP #0054 0xAC080002, // 0047 CATCH R2 0 2 0x70020009, // 0048 JMP #0053 - 0xB8121200, // 0049 GETNGBL R4 K9 - 0x8C10090A, // 004A GETMET R4 R4 K10 - 0x001A1602, // 004B ADD R6 K11 R2 - 0x00180D0C, // 004C ADD R6 R6 K12 + 0xB8126200, // 0049 GETNGBL R4 K49 + 0x8C100932, // 004A GETMET R4 R4 K50 + 0x001A6602, // 004B ADD R6 K51 R2 + 0x00180D34, // 004C ADD R6 R6 K52 0x00180C03, // 004D ADD R6 R6 R3 0x581C000D, // 004E LDCONST R7 K13 0x7C100600, // 004F CALL R4 3 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h index 7bf2a9f2d..44d7da7e1 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h @@ -31,6 +31,45 @@ be_local_closure(_anonymous_, /* name */ ); /*******************************************************************/ +// compact class 'Persist' ktab size: 35, total: 65 (saved 240 bytes) +static const bvalue be_ktab_class_Persist[35] = { + /* K0 */ be_nested_str(json), + /* K1 */ be_nested_str(write), + /* K2 */ be_nested_str(_X7B), + /* K3 */ be_nested_str(keys), + /* K4 */ be_nested_str(dump), + /* K5 */ be_nested_str(_X3A), + /* K6 */ be_nested_str(json_fdump_any), + /* K7 */ be_nested_str(_X2C), + /* K8 */ be_nested_str(stop_iteration), + /* K9 */ be_nested_str(_X7D), + /* K10 */ be_nested_str(json_fdump_map), + /* K11 */ be_nested_str(json_fdump_list), + /* K12 */ be_nested_str(_p), + /* K13 */ be_nested_str(_dirty), + /* K14 */ be_nested_str(load), + /* K15 */ be_nested_str(_filename), + /* K16 */ be_nested_str(w), + /* K17 */ be_nested_str(json_fdump), + /* K18 */ be_nested_str(close), + /* K19 */ be_nested_str(_X7B_X7D), + /* K20 */ be_nested_str(find), + /* K21 */ be_nested_str(contains), + /* K22 */ be_nested_str(_X5B), + /* K23 */ be_const_int(0), + /* K24 */ be_const_int(1), + /* K25 */ be_nested_str(_X5D), + /* K26 */ be_nested_str(internal_error), + /* K27 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map), + /* K28 */ be_nested_str(path), + /* K29 */ be_nested_str(exists), + /* K30 */ be_nested_str(r), + /* K31 */ be_nested_str(read), + /* K32 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_persist_X2Ejson), + /* K33 */ be_nested_str(save), + /* K34 */ be_nested_str(remove), +}; + extern const bclass be_class_Persist; @@ -41,24 +80,13 @@ be_local_closure(class_Persist_json_fdump_map, /* name */ be_nested_proto( 13, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(write), - /* K2 */ be_nested_str(_X7B), - /* K3 */ be_nested_str(keys), - /* K4 */ be_nested_str(dump), - /* K5 */ be_nested_str(_X3A), - /* K6 */ be_nested_str(json_fdump_any), - /* K7 */ be_nested_str(_X2C), - /* K8 */ be_nested_str(stop_iteration), - /* K9 */ be_nested_str(_X7D), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_json_fdump_map, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ @@ -116,19 +144,13 @@ be_local_closure(class_Persist_json_fdump_any, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(json_fdump_map), - /* K2 */ be_nested_str(json_fdump_list), - /* K3 */ be_nested_str(write), - /* K4 */ be_nested_str(dump), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_json_fdump_any, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ @@ -138,7 +160,7 @@ be_local_closure(class_Persist_json_fdump_any, /* name */ 0x60180013, // 0003 GETGBL R6 G19 0x7C100400, // 0004 CALL R4 2 0x78120004, // 0005 JMPF R4 #000B - 0x8C100101, // 0006 GETMET R4 R0 K1 + 0x8C10010A, // 0006 GETMET R4 R0 K10 0x5C180200, // 0007 MOVE R6 R1 0x5C1C0400, // 0008 MOVE R7 R2 0x7C100600, // 0009 CALL R4 3 @@ -148,12 +170,12 @@ be_local_closure(class_Persist_json_fdump_any, /* name */ 0x60180012, // 000D GETGBL R6 G18 0x7C100400, // 000E CALL R4 2 0x78120004, // 000F JMPF R4 #0015 - 0x8C100102, // 0010 GETMET R4 R0 K2 + 0x8C10010B, // 0010 GETMET R4 R0 K11 0x5C180200, // 0011 MOVE R6 R1 0x5C1C0400, // 0012 MOVE R7 R2 0x7C100600, // 0013 CALL R4 3 0x70020004, // 0014 JMP #001A - 0x8C100303, // 0015 GETMET R4 R1 K3 + 0x8C100301, // 0015 GETMET R4 R1 K1 0x8C180704, // 0016 GETMET R6 R3 K4 0x5C200400, // 0017 MOVE R8 R2 0x7C180400, // 0018 CALL R6 2 @@ -172,26 +194,22 @@ be_local_closure(class_Persist_init, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(_dirty), - /* K2 */ be_nested_str(load), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040013, // 0000 GETGBL R1 G19 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x90021801, // 0002 SETMBR R0 K12 R1 0x50040000, // 0003 LDBOOL R1 0 0 - 0x90020201, // 0004 SETMBR R0 K1 R1 - 0x8C040102, // 0005 GETMET R1 R0 K2 + 0x90021A01, // 0004 SETMBR R0 K13 R1 + 0x8C04010E, // 0005 GETMET R1 R0 K14 0x7C040200, // 0006 CALL R1 1 0x80000000, // 0007 RET 0 }) @@ -207,37 +225,29 @@ be_local_closure(class_Persist_save, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(_dirty), - /* K1 */ be_nested_str(_filename), - /* K2 */ be_nested_str(w), - /* K3 */ be_nested_str(json_fdump), - /* K4 */ be_nested_str(close), - /* K5 */ be_nested_str(write), - /* K6 */ be_nested_str(_X7B_X7D), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_save, &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804010D, // 0000 GETMBR R1 R0 K13 0x7806002E, // 0001 JMPF R1 #0031 0x4C040000, // 0002 LDNIL R1 0xA802000B, // 0003 EXBLK 0 #0010 0x60080011, // 0004 GETGBL R2 G17 - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x58100002, // 0006 LDCONST R4 K2 + 0x880C010F, // 0005 GETMBR R3 R0 K15 + 0x58100010, // 0006 LDCONST R4 K16 0x7C080400, // 0007 CALL R2 2 0x5C040400, // 0008 MOVE R1 R2 - 0x8C080103, // 0009 GETMET R2 R0 K3 + 0x8C080111, // 0009 GETMET R2 R0 K17 0x5C100200, // 000A MOVE R4 R1 0x7C080400, // 000B CALL R2 2 - 0x8C080304, // 000C GETMET R2 R1 K4 + 0x8C080312, // 000C GETMET R2 R1 K18 0x7C080200, // 000D CALL R2 1 0xA8040001, // 000E EXBLK 1 1 0x7002001E, // 000F JMP #002F @@ -246,17 +256,17 @@ be_local_closure(class_Persist_save, /* name */ 0x4C100000, // 0012 LDNIL R4 0x20100204, // 0013 NE R4 R1 R4 0x78120001, // 0014 JMPF R4 #0017 - 0x8C100304, // 0015 GETMET R4 R1 K4 + 0x8C100312, // 0015 GETMET R4 R1 K18 0x7C100200, // 0016 CALL R4 1 0x4C040000, // 0017 LDNIL R1 0xA8020009, // 0018 EXBLK 0 #0023 0x60100011, // 0019 GETGBL R4 G17 - 0x88140101, // 001A GETMBR R5 R0 K1 - 0x58180002, // 001B LDCONST R6 K2 + 0x8814010F, // 001A GETMBR R5 R0 K15 + 0x58180010, // 001B LDCONST R6 K16 0x7C100400, // 001C CALL R4 2 0x5C040800, // 001D MOVE R1 R4 - 0x8C100305, // 001E GETMET R4 R1 K5 - 0x58180006, // 001F LDCONST R6 K6 + 0x8C100301, // 001E GETMET R4 R1 K1 + 0x58180013, // 001F LDCONST R6 K19 0x7C100400, // 0020 CALL R4 2 0xA8040001, // 0021 EXBLK 1 1 0x70020003, // 0022 JMP #0027 @@ -267,13 +277,13 @@ be_local_closure(class_Persist_save, /* name */ 0x4C100000, // 0027 LDNIL R4 0x20100204, // 0028 NE R4 R1 R4 0x78120001, // 0029 JMPF R4 #002C - 0x8C100304, // 002A GETMET R4 R1 K4 + 0x8C100312, // 002A GETMET R4 R1 K18 0x7C100200, // 002B CALL R4 1 0xB0040403, // 002C RAISE 1 R2 R3 0x70020000, // 002D JMP #002F 0xB0080000, // 002E RAISE 2 R0 R0 0x50080000, // 002F LDBOOL R2 0 0 - 0x90020002, // 0030 SETMBR R0 K0 R2 + 0x90021A02, // 0030 SETMBR R0 K13 R2 0x80000000, // 0031 RET 0 }) ) @@ -288,24 +298,21 @@ be_local_closure(class_Persist_zero, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(_dirty), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_zero, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x60040013, // 0000 GETGBL R1 G19 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x90021801, // 0002 SETMBR R0 K12 R1 0x50040200, // 0003 LDBOOL R1 1 0 - 0x90020201, // 0004 SETMBR R0 K1 R1 + 0x90021A01, // 0004 SETMBR R0 K13 R1 0x80000000, // 0005 RET 0 }) ) @@ -320,21 +327,18 @@ be_local_closure(class_Persist_find, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(find), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_find, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x880C010C, // 0000 GETMBR R3 R0 K12 + 0x8C0C0714, // 0001 GETMET R3 R3 K20 0x5C140200, // 0002 MOVE R5 R1 0x5C180400, // 0003 MOVE R6 R2 0x7C0C0600, // 0004 CALL R3 3 @@ -352,21 +356,18 @@ be_local_closure(class_Persist_has, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(contains), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_has, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808010C, // 0000 GETMBR R2 R0 K12 + 0x8C080515, // 0001 GETMET R2 R2 K21 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -383,48 +384,39 @@ be_local_closure(class_Persist_json_fdump_list, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(write), - /* K2 */ be_nested_str(_X5B), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str(_X2C), - /* K5 */ be_nested_str(json_fdump_any), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str(_X5D), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_json_fdump_list, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0xA40E0000, // 0000 IMPORT R3 K0 0x8C100301, // 0001 GETMET R4 R1 K1 - 0x58180002, // 0002 LDCONST R6 K2 + 0x58180016, // 0002 LDCONST R6 K22 0x7C100400, // 0003 CALL R4 2 - 0x58100003, // 0004 LDCONST R4 K3 + 0x58100017, // 0004 LDCONST R4 K23 0x6014000C, // 0005 GETGBL R5 G12 0x5C180400, // 0006 MOVE R6 R2 0x7C140200, // 0007 CALL R5 1 0x14140805, // 0008 LT R5 R4 R5 0x7816000A, // 0009 JMPF R5 #0015 - 0x24140903, // 000A GT R5 R4 K3 + 0x24140917, // 000A GT R5 R4 K23 0x78160002, // 000B JMPF R5 #000F 0x8C140301, // 000C GETMET R5 R1 K1 - 0x581C0004, // 000D LDCONST R7 K4 + 0x581C0007, // 000D LDCONST R7 K7 0x7C140400, // 000E CALL R5 2 - 0x8C140105, // 000F GETMET R5 R0 K5 + 0x8C140106, // 000F GETMET R5 R0 K6 0x5C1C0200, // 0010 MOVE R7 R1 0x94200404, // 0011 GETIDX R8 R2 R4 0x7C140600, // 0012 CALL R5 3 - 0x00100906, // 0013 ADD R4 R4 K6 + 0x00100918, // 0013 ADD R4 R4 K24 0x7001FFEF, // 0014 JMP #0005 0x8C140301, // 0015 GETMET R5 R1 K1 - 0x581C0007, // 0016 LDCONST R7 K7 + 0x581C0019, // 0016 LDCONST R7 K25 0x7C140400, // 0017 CALL R5 2 0x80000000, // 0018 RET 0 }) @@ -440,21 +432,18 @@ be_local_closure(class_Persist_member, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(find), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_member, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808010C, // 0000 GETMBR R2 R0 K12 + 0x8C080514, // 0001 GETMET R2 R2 K20 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -471,23 +460,20 @@ be_local_closure(class_Persist_setmember, /* name */ be_nested_proto( 4, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(_dirty), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_setmember, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C010C, // 0000 GETMBR R3 R0 K12 0x980C0202, // 0001 SETIDX R3 R1 R2 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x90020203, // 0003 SETMBR R0 K1 R3 + 0x90021A03, // 0003 SETMBR R0 K13 R3 0x80000000, // 0004 RET 0 }) ) @@ -502,21 +488,18 @@ be_local_closure(class_Persist_contains, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(contains), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_contains, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808010C, // 0000 GETMBR R2 R0 K12 + 0x8C080515, // 0001 GETMET R2 R2 K21 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -533,34 +516,28 @@ be_local_closure(class_Persist_json_fdump, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(_p), - /* K2 */ be_nested_str(json_fdump_map), - /* K3 */ be_nested_str(internal_error), - /* K4 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_json_fdump, &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x600C000F, // 0001 GETGBL R3 G15 - 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x8810010C, // 0002 GETMBR R4 R0 K12 0x60140013, // 0003 GETGBL R5 G19 0x7C0C0400, // 0004 CALL R3 2 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x8C0C010A, // 0006 GETMET R3 R0 K10 0x5C140200, // 0007 MOVE R5 R1 - 0x88180101, // 0008 GETMBR R6 R0 K1 + 0x8818010C, // 0008 GETMBR R6 R0 K12 0x7C0C0600, // 0009 CALL R3 3 0x70020000, // 000A JMP #000C - 0xB0060704, // 000B RAISE 1 K3 K4 + 0xB006351B, // 000B RAISE 1 K26 K27 0x80000000, // 000C RET 0 }) ) @@ -575,49 +552,36 @@ be_local_closure(class_Persist_load, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(exists), - /* K3 */ be_nested_str(_filename), - /* K4 */ be_nested_str(r), - /* K5 */ be_nested_str(load), - /* K6 */ be_nested_str(read), - /* K7 */ be_nested_str(close), - /* K8 */ be_nested_str(_p), - /* K9 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_persist_X2Ejson), - /* K10 */ be_nested_str(_dirty), - /* K11 */ be_nested_str(save), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_load, &be_const_str_solidified, ( &(const binstruction[49]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 + 0xA40A3800, // 0001 IMPORT R2 K28 0x4C0C0000, // 0002 LDNIL R3 0x4C100000, // 0003 LDNIL R4 - 0x8C140502, // 0004 GETMET R5 R2 K2 - 0x881C0103, // 0005 GETMBR R7 R0 K3 + 0x8C14051D, // 0004 GETMET R5 R2 K29 + 0x881C010F, // 0005 GETMBR R7 R0 K15 0x7C140400, // 0006 CALL R5 2 0x78160025, // 0007 JMPF R5 #002E 0xA802000D, // 0008 EXBLK 0 #0017 0x60140011, // 0009 GETGBL R5 G17 - 0x88180103, // 000A GETMBR R6 R0 K3 - 0x581C0004, // 000B LDCONST R7 K4 + 0x8818010F, // 000A GETMBR R6 R0 K15 + 0x581C001E, // 000B LDCONST R7 K30 0x7C140400, // 000C CALL R5 2 0x5C0C0A00, // 000D MOVE R3 R5 - 0x8C140305, // 000E GETMET R5 R1 K5 - 0x8C1C0706, // 000F GETMET R7 R3 K6 + 0x8C14030E, // 000E GETMET R5 R1 K14 + 0x8C1C071F, // 000F GETMET R7 R3 K31 0x7C1C0200, // 0010 CALL R7 1 0x7C140400, // 0011 CALL R5 2 0x5C100A00, // 0012 MOVE R4 R5 - 0x8C140707, // 0013 GETMET R5 R3 K7 + 0x8C140712, // 0013 GETMET R5 R3 K18 0x7C140200, // 0014 CALL R5 1 0xA8040001, // 0015 EXBLK 1 1 0x70020009, // 0016 JMP #0021 @@ -626,7 +590,7 @@ be_local_closure(class_Persist_load, /* name */ 0x4C1C0000, // 0019 LDNIL R7 0x201C0607, // 001A NE R7 R3 R7 0x781E0001, // 001B JMPF R7 #001E - 0x8C1C0707, // 001C GETMET R7 R3 K7 + 0x8C1C0712, // 001C GETMET R7 R3 K18 0x7C1C0200, // 001D CALL R7 1 0xB0040A06, // 001E RAISE 1 R5 R6 0x70020000, // 001F JMP #0021 @@ -636,15 +600,15 @@ be_local_closure(class_Persist_load, /* name */ 0x601C0013, // 0023 GETGBL R7 G19 0x7C140400, // 0024 CALL R5 2 0x78160001, // 0025 JMPF R5 #0028 - 0x90021004, // 0026 SETMBR R0 K8 R4 + 0x90021804, // 0026 SETMBR R0 K12 R4 0x70020002, // 0027 JMP #002B 0x60140001, // 0028 GETGBL R5 G1 - 0x58180009, // 0029 LDCONST R6 K9 + 0x58180020, // 0029 LDCONST R6 K32 0x7C140200, // 002A CALL R5 1 0x50140000, // 002B LDBOOL R5 0 0 - 0x90021405, // 002C SETMBR R0 K10 R5 + 0x90021A05, // 002C SETMBR R0 K13 R5 0x70020001, // 002D JMP #0030 - 0x8C14010B, // 002E GETMET R5 R0 K11 + 0x8C140121, // 002E GETMET R5 R0 K33 0x7C140200, // 002F CALL R5 1 0x80000000, // 0030 RET 0 }) @@ -660,26 +624,22 @@ be_local_closure(class_Persist_remove, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(remove), - /* K2 */ be_nested_str(_dirty), - }), + &be_ktab_class_Persist, /* shared constants */ &be_const_str_remove, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8808010C, // 0000 GETMBR R2 R0 K12 + 0x8C080522, // 0001 GETMET R2 R2 K34 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x50080200, // 0004 LDBOOL R2 1 0 - 0x90020402, // 0005 SETMBR R0 K2 R2 + 0x90021A02, // 0005 SETMBR R0 K13 R2 0x80000000, // 0006 RET 0 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h index d480a2929..66322afb7 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h @@ -3,6 +3,20 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_Rule_Matcher_Key; +// compact class 'Rule_Matcher_Key' ktab size: 9, total: 11 (saved 16 bytes) +static const bvalue be_ktab_class_Rule_Matcher_Key[9] = { + /* K0 */ be_nested_str(_X3CMatcher_X20key_X3D_X27), + /* K1 */ be_nested_str(name), + /* K2 */ be_nested_str(_X27_X3E), + /* K3 */ be_const_class(be_class_Rule_Matcher_Key), + /* K4 */ be_nested_str(string), + /* K5 */ be_nested_str(toupper), + /* K6 */ be_nested_str(keys), + /* K7 */ be_nested_str(stop_iteration), + /* K8 */ be_nested_str(find_key_i), +}; + extern const bclass be_class_Rule_Matcher_Key; @@ -13,17 +27,13 @@ be_local_closure(class_Rule_Matcher_Key_tostring, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_X3CMatcher_X20key_X3D_X27), - /* K1 */ be_nested_str(name), - /* K2 */ be_nested_str(_X27_X3E), - }), + &be_ktab_class_Rule_Matcher_Key, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ @@ -46,25 +56,19 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_class(be_class_Rule_Matcher_Key), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(toupper), - /* K3 */ be_nested_str(keys), - /* K4 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Rule_Matcher_Key, /* shared constants */ &be_const_str_find_key_i, &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100702, // 0002 GETMET R4 R3 K2 + 0x58080003, // 0000 LDCONST R2 K3 + 0xA40E0800, // 0001 IMPORT R3 K4 + 0x8C100705, // 0002 GETMET R4 R3 K5 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 0x6014000F, // 0005 GETGBL R5 G15 @@ -73,13 +77,13 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */ 0x7C140400, // 0008 CALL R5 2 0x78160013, // 0009 JMPF R5 #001E 0x60140010, // 000A GETGBL R5 G16 - 0x8C180103, // 000B GETMET R6 R0 K3 + 0x8C180106, // 000B GETMET R6 R0 K6 0x7C180200, // 000C CALL R6 1 0x7C140200, // 000D CALL R5 1 0xA802000B, // 000E EXBLK 0 #001B 0x5C180A00, // 000F MOVE R6 R5 0x7C180000, // 0010 CALL R6 0 - 0x8C1C0702, // 0011 GETMET R7 R3 K2 + 0x8C1C0705, // 0011 GETMET R7 R3 K5 0x60240008, // 0012 GETGBL R9 G8 0x5C280C00, // 0013 MOVE R10 R6 0x7C240200, // 0014 CALL R9 1 @@ -89,7 +93,7 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */ 0xA8040001, // 0018 EXBLK 1 1 0x80040C00, // 0019 RET 1 R6 0x7001FFF3, // 001A JMP #000F - 0x58140004, // 001B LDCONST R5 K4 + 0x58140007, // 001B LDCONST R5 K7 0xAC140200, // 001C CATCH R5 1 0 0xB0080000, // 001D RAISE 2 R0 R0 0x80000000, // 001E RET 0 @@ -106,16 +110,13 @@ be_local_closure(class_Rule_Matcher_Key_match, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(find_key_i), - /* K1 */ be_nested_str(name), - }), + &be_ktab_class_Rule_Matcher_Key, /* shared constants */ &be_const_str_match, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ @@ -131,7 +132,7 @@ be_local_closure(class_Rule_Matcher_Key_match, /* name */ 0x740A0001, // 0009 JMPT R2 #000C 0x4C080000, // 000A LDNIL R2 0x80040400, // 000B RET 1 R2 - 0x8C080100, // 000C GETMET R2 R0 K0 + 0x8C080108, // 000C GETMET R2 R0 K8 0x5C100200, // 000D MOVE R4 R1 0x88140101, // 000E GETMBR R5 R0 K1 0x7C080600, // 000F CALL R2 3 @@ -155,19 +156,17 @@ be_local_closure(class_Rule_Matcher_Key_init, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(name), - }), + &be_ktab_class_Rule_Matcher_Key, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020201, // 0000 SETMBR R0 K1 R1 0x80000000, // 0001 RET 0 }) ) @@ -282,6 +281,39 @@ be_local_class(Rule_Matcher_Wildcard, })), (bstring*) &be_const_str_Rule_Matcher_Wildcard ); +// compact class 'Rule_Matcher_Operator' ktab size: 29, total: 37 (saved 64 bytes) +static const bvalue be_ktab_class_Rule_Matcher_Operator[29] = { + /* K0 */ be_nested_str(int), + /* K1 */ be_nested_str(real), + /* K2 */ be_nested_str(string), + /* K3 */ be_nested_str(op_func), + /* K4 */ be_nested_str(op_value), + /* K5 */ be_nested_str(op_str), + /* K6 */ be_nested_str(_X3D), + /* K7 */ be_nested_str(_X21_X3D_X3D), + /* K8 */ be_nested_str(_X24_X21), + /* K9 */ be_nested_str(_X24_X3C), + /* K10 */ be_nested_str(_X24_X3E), + /* K11 */ be_nested_str(_X24_X7C), + /* K12 */ be_nested_str(_X24_X5E), + /* K13 */ be_nested_str(_X3D_X3D), + /* K14 */ be_nested_str(_X21_X3D), + /* K15 */ be_nested_str(_X3E), + /* K16 */ be_nested_str(_X3E_X3D), + /* K17 */ be_nested_str(_X3C), + /* K18 */ be_nested_str(_X3C_X3D), + /* K19 */ be_nested_str(_X7C), + /* K20 */ be_nested_str(json), + /* K21 */ be_nested_str(load), + /* K22 */ be_nested_str(value_error), + /* K23 */ be_nested_str(value_X20needs_X20to_X20be_X20a_X20number), + /* K24 */ be_nested_str(_X3CMatcher_X20op_X20_X27), + /* K25 */ be_nested_str(_X27_X20val_X3D_X27), + /* K26 */ be_nested_str(_X27_X3E), + /* K27 */ be_nested_str(_X27_X20val_X3D), + /* K28 */ be_nested_str(op_parse), +}; + extern const bclass be_class_Rule_Matcher_Operator; @@ -292,19 +324,13 @@ be_local_closure(class_Rule_Matcher_Operator_match, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(int), - /* K1 */ be_nested_str(real), - /* K2 */ be_nested_str(string), - /* K3 */ be_nested_str(op_func), - /* K4 */ be_nested_str(op_value), - }), + &be_ktab_class_Rule_Matcher_Operator, /* shared constants */ &be_const_str_match, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ @@ -341,7 +367,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ be_nested_proto( 22, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -656,35 +682,11 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str(op_str), - /* K1 */ be_nested_str(_X3D), - /* K2 */ be_nested_str(_X21_X3D_X3D), - /* K3 */ be_nested_str(_X24_X21), - /* K4 */ be_nested_str(_X24_X3C), - /* K5 */ be_nested_str(_X24_X3E), - /* K6 */ be_nested_str(_X24_X7C), - /* K7 */ be_nested_str(_X24_X5E), - /* K8 */ be_nested_str(_X3D_X3D), - /* K9 */ be_nested_str(_X21_X3D), - /* K10 */ be_nested_str(_X3E), - /* K11 */ be_nested_str(_X3E_X3D), - /* K12 */ be_nested_str(_X3C), - /* K13 */ be_nested_str(_X3C_X3D), - /* K14 */ be_nested_str(_X7C), - /* K15 */ be_nested_str(op_func), - /* K16 */ be_nested_str(json), - /* K17 */ be_nested_str(load), - /* K18 */ be_nested_str(int), - /* K19 */ be_nested_str(real), - /* K20 */ be_nested_str(value_error), - /* K21 */ be_nested_str(value_X20needs_X20to_X20be_X20a_X20number), - /* K22 */ be_nested_str(op_value), - }), + &be_ktab_class_Rule_Matcher_Operator, /* shared constants */ &be_const_str_op_parse, &be_const_str_solidified, ( &(const binstruction[97]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020A01, // 0000 SETMBR R0 K5 R1 0x840C0000, // 0001 CLOSURE R3 P0 0x84100001, // 0002 CLOSURE R4 P1 0x84140002, // 0003 CLOSURE R5 P2 @@ -700,86 +702,86 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */ 0x843C000C, // 000D CLOSURE R15 P12 0x50400000, // 000E LDBOOL R16 0 0 0x4C440000, // 000F LDNIL R17 - 0x1C480301, // 0010 EQ R18 R1 K1 + 0x1C480306, // 0010 EQ R18 R1 K6 0x784A0001, // 0011 JMPF R18 #0014 0x5C440600, // 0012 MOVE R17 R3 0x70020033, // 0013 JMP #0048 - 0x1C480302, // 0014 EQ R18 R1 K2 + 0x1C480307, // 0014 EQ R18 R1 K7 0x784A0001, // 0015 JMPF R18 #0018 0x5C440800, // 0016 MOVE R17 R4 0x7002002F, // 0017 JMP #0048 - 0x1C480303, // 0018 EQ R18 R1 K3 + 0x1C480308, // 0018 EQ R18 R1 K8 0x784A0001, // 0019 JMPF R18 #001C 0x5C440800, // 001A MOVE R17 R4 0x7002002B, // 001B JMP #0048 - 0x1C480304, // 001C EQ R18 R1 K4 + 0x1C480309, // 001C EQ R18 R1 K9 0x784A0001, // 001D JMPF R18 #0020 0x5C440A00, // 001E MOVE R17 R5 0x70020027, // 001F JMP #0048 - 0x1C480305, // 0020 EQ R18 R1 K5 + 0x1C48030A, // 0020 EQ R18 R1 K10 0x784A0001, // 0021 JMPF R18 #0024 0x5C440C00, // 0022 MOVE R17 R6 0x70020023, // 0023 JMP #0048 - 0x1C480306, // 0024 EQ R18 R1 K6 + 0x1C48030B, // 0024 EQ R18 R1 K11 0x784A0001, // 0025 JMPF R18 #0028 0x5C440E00, // 0026 MOVE R17 R7 0x7002001F, // 0027 JMP #0048 - 0x1C480307, // 0028 EQ R18 R1 K7 + 0x1C48030C, // 0028 EQ R18 R1 K12 0x784A0001, // 0029 JMPF R18 #002C 0x5C441000, // 002A MOVE R17 R8 0x7002001B, // 002B JMP #0048 0x50400200, // 002C LDBOOL R16 1 0 - 0x1C480308, // 002D EQ R18 R1 K8 + 0x1C48030D, // 002D EQ R18 R1 K13 0x784A0001, // 002E JMPF R18 #0031 0x5C441200, // 002F MOVE R17 R9 0x70020016, // 0030 JMP #0048 - 0x1C480309, // 0031 EQ R18 R1 K9 + 0x1C48030E, // 0031 EQ R18 R1 K14 0x784A0001, // 0032 JMPF R18 #0035 0x5C441400, // 0033 MOVE R17 R10 0x70020012, // 0034 JMP #0048 - 0x1C48030A, // 0035 EQ R18 R1 K10 + 0x1C48030F, // 0035 EQ R18 R1 K15 0x784A0001, // 0036 JMPF R18 #0039 0x5C441600, // 0037 MOVE R17 R11 0x7002000E, // 0038 JMP #0048 - 0x1C48030B, // 0039 EQ R18 R1 K11 + 0x1C480310, // 0039 EQ R18 R1 K16 0x784A0001, // 003A JMPF R18 #003D 0x5C441800, // 003B MOVE R17 R12 0x7002000A, // 003C JMP #0048 - 0x1C48030C, // 003D EQ R18 R1 K12 + 0x1C480311, // 003D EQ R18 R1 K17 0x784A0001, // 003E JMPF R18 #0041 0x5C441A00, // 003F MOVE R17 R13 0x70020006, // 0040 JMP #0048 - 0x1C48030D, // 0041 EQ R18 R1 K13 + 0x1C480312, // 0041 EQ R18 R1 K18 0x784A0001, // 0042 JMPF R18 #0045 0x5C441C00, // 0043 MOVE R17 R14 0x70020002, // 0044 JMP #0048 - 0x1C48030E, // 0045 EQ R18 R1 K14 + 0x1C480313, // 0045 EQ R18 R1 K19 0x784A0000, // 0046 JMPF R18 #0048 0x5C441E00, // 0047 MOVE R17 R15 - 0x90021E11, // 0048 SETMBR R0 K15 R17 + 0x90020611, // 0048 SETMBR R0 K3 R17 0x78420011, // 0049 JMPF R16 #005C - 0xA44A2000, // 004A IMPORT R18 K16 - 0x8C4C2511, // 004B GETMET R19 R18 K17 + 0xA44A2800, // 004A IMPORT R18 K20 + 0x8C4C2515, // 004B GETMET R19 R18 K21 0x5C540400, // 004C MOVE R21 R2 0x7C4C0400, // 004D CALL R19 2 0x60500004, // 004E GETGBL R20 G4 0x5C542600, // 004F MOVE R21 R19 0x7C500200, // 0050 CALL R20 1 - 0x20502912, // 0051 NE R20 R20 K18 + 0x20502900, // 0051 NE R20 R20 K0 0x78520006, // 0052 JMPF R20 #005A 0x60500004, // 0053 GETGBL R20 G4 0x5C542600, // 0054 MOVE R21 R19 0x7C500200, // 0055 CALL R20 1 - 0x20502913, // 0056 NE R20 R20 K19 + 0x20502901, // 0056 NE R20 R20 K1 0x78520001, // 0057 JMPF R20 #005A - 0xB0062915, // 0058 RAISE 1 K20 K21 + 0xB0062D17, // 0058 RAISE 1 K22 K23 0x70020000, // 0059 JMP #005B - 0x90022C13, // 005A SETMBR R0 K22 R19 + 0x90020813, // 005A SETMBR R0 K4 R19 0x70020003, // 005B JMP #0060 0x60480008, // 005C GETGBL R18 G8 0x5C4C0400, // 005D MOVE R19 R2 0x7C480200, // 005E CALL R18 1 - 0x90022C12, // 005F SETMBR R0 K22 R18 + 0x90020812, // 005F SETMBR R0 K4 R18 0x80000000, // 0060 RET 0 }) ) @@ -794,48 +796,39 @@ be_local_closure(class_Rule_Matcher_Operator_tostring, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(op_value), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(_X3CMatcher_X20op_X20_X27), - /* K3 */ be_nested_str(op_str), - /* K4 */ be_nested_str(_X27_X20val_X3D_X27), - /* K5 */ be_nested_str(_X27_X3E), - /* K6 */ be_nested_str(_X27_X20val_X3D), - /* K7 */ be_nested_str(_X3E), - }), + &be_ktab_class_Rule_Matcher_Operator, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0x60040004, // 0000 GETGBL R1 G4 - 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080104, // 0001 GETMBR R2 R0 K4 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 + 0x1C040302, // 0003 EQ R1 R1 K2 0x78060009, // 0004 JMPF R1 #000F - 0x88040103, // 0005 GETMBR R1 R0 K3 - 0x00060401, // 0006 ADD R1 K2 R1 - 0x00040304, // 0007 ADD R1 R1 K4 + 0x88040105, // 0005 GETMBR R1 R0 K5 + 0x00063001, // 0006 ADD R1 K24 R1 + 0x00040319, // 0007 ADD R1 R1 K25 0x60080008, // 0008 GETGBL R2 G8 - 0x880C0100, // 0009 GETMBR R3 R0 K0 + 0x880C0104, // 0009 GETMBR R3 R0 K4 0x7C080200, // 000A CALL R2 1 0x00040202, // 000B ADD R1 R1 R2 - 0x00040305, // 000C ADD R1 R1 K5 + 0x0004031A, // 000C ADD R1 R1 K26 0x80040200, // 000D RET 1 R1 0x70020008, // 000E JMP #0018 - 0x88040103, // 000F GETMBR R1 R0 K3 - 0x00060401, // 0010 ADD R1 K2 R1 - 0x00040306, // 0011 ADD R1 R1 K6 + 0x88040105, // 000F GETMBR R1 R0 K5 + 0x00063001, // 0010 ADD R1 K24 R1 + 0x0004031B, // 0011 ADD R1 R1 K27 0x60080008, // 0012 GETGBL R2 G8 - 0x880C0100, // 0013 GETMBR R3 R0 K0 + 0x880C0104, // 0013 GETMBR R3 R0 K4 0x7C080200, // 0014 CALL R2 1 0x00040202, // 0015 ADD R1 R1 R2 - 0x00040307, // 0016 ADD R1 R1 K7 + 0x0004030F, // 0016 ADD R1 R1 K15 0x80040200, // 0017 RET 1 R1 0x80000000, // 0018 RET 0 }) @@ -851,19 +844,17 @@ be_local_closure(class_Rule_Matcher_Operator_init, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(op_parse), - }), + &be_ktab_class_Rule_Matcher_Operator, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C011C, // 0000 GETMET R3 R0 K28 0x5C140200, // 0001 MOVE R5 R1 0x5C180400, // 0002 MOVE R6 R2 0x7C0C0600, // 0003 CALL R3 3 @@ -892,6 +883,15 @@ be_local_class(Rule_Matcher_Operator, })), (bstring*) &be_const_str_Rule_Matcher_Operator ); +// compact class 'Rule_Matcher_Array' ktab size: 5, total: 7 (saved 16 bytes) +static const bvalue be_ktab_class_Rule_Matcher_Array[5] = { + /* K0 */ be_nested_str(index), + /* K1 */ be_nested_str(_X3CMatcher_X20_X5B), + /* K2 */ be_nested_str(_X5D_X3E), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), +}; + extern const bclass be_class_Rule_Matcher_Array; @@ -902,15 +902,13 @@ be_local_closure(class_Rule_Matcher_Array_init, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(index), - }), + &be_ktab_class_Rule_Matcher_Array, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -929,24 +927,20 @@ be_local_closure(class_Rule_Matcher_Array_tostring, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_X3CMatcher_X20_X5B), - /* K1 */ be_nested_str(index), - /* K2 */ be_nested_str(_X5D_X3E), - }), + &be_ktab_class_Rule_Matcher_Array, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x60040008, // 0000 GETGBL R1 G8 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88080100, // 0001 GETMBR R2 R0 K0 0x7C040200, // 0002 CALL R1 1 - 0x00060001, // 0003 ADD R1 K0 R1 + 0x00060201, // 0003 ADD R1 K1 R1 0x00040302, // 0004 ADD R1 R1 K2 0x80040200, // 0005 RET 1 R1 }) @@ -962,17 +956,13 @@ be_local_closure(class_Rule_Matcher_Array_match, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(index), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - }), + &be_ktab_class_Rule_Matcher_Array, /* shared constants */ &be_const_str_match, &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ @@ -988,7 +978,7 @@ be_local_closure(class_Rule_Matcher_Array_match, /* name */ 0x740A0000, // 0009 JMPT R2 #000B 0x80040200, // 000A RET 1 R1 0x88080100, // 000B GETMBR R2 R0 K0 - 0x18080501, // 000C LE R2 R2 K1 + 0x18080503, // 000C LE R2 R2 K3 0x780A0001, // 000D JMPF R2 #0010 0x4C080000, // 000E LDNIL R2 0x80040400, // 000F RET 1 R2 @@ -1001,7 +991,7 @@ be_local_closure(class_Rule_Matcher_Array_match, /* name */ 0x4C080000, // 0016 LDNIL R2 0x80040400, // 0017 RET 1 R2 0x88080100, // 0018 GETMBR R2 R0 K0 - 0x04080502, // 0019 SUB R2 R2 K2 + 0x04080504, // 0019 SUB R2 R2 K4 0x94080202, // 001A GETIDX R2 R1 R2 0x80040400, // 001B RET 1 R2 }) @@ -1025,6 +1015,17 @@ be_local_class(Rule_Matcher_Array, })), (bstring*) &be_const_str_Rule_Matcher_Array ); +// compact class 'Rule_Matcher_AND_List' ktab size: 7, total: 9 (saved 16 bytes) +static const bvalue be_ktab_class_Rule_Matcher_AND_List[7] = { + /* K0 */ be_nested_str(and_list), + /* K1 */ be_nested_str(_X3CMatcher_AND_List_X20), + /* K2 */ be_nested_str(_X3E), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str(match), + /* K5 */ be_nested_str(push), + /* K6 */ be_const_int(1), +}; + extern const bclass be_class_Rule_Matcher_AND_List; @@ -1035,15 +1036,13 @@ be_local_closure(class_Rule_Matcher_AND_List_init, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(and_list), - }), + &be_ktab_class_Rule_Matcher_AND_List, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -1062,24 +1061,20 @@ be_local_closure(class_Rule_Matcher_AND_List_tostring, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_X3CMatcher_AND_List_X20), - /* K1 */ be_nested_str(and_list), - /* K2 */ be_nested_str(_X3E), - }), + &be_ktab_class_Rule_Matcher_AND_List, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x60040008, // 0000 GETGBL R1 G8 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88080100, // 0001 GETMBR R2 R0 K0 0x7C040200, // 0002 CALL R1 1 - 0x00060001, // 0003 ADD R1 K0 R1 + 0x00060201, // 0003 ADD R1 K1 R1 0x00040302, // 0004 ADD R1 R1 K2 0x80040200, // 0005 RET 1 R1 }) @@ -1095,33 +1090,27 @@ be_local_closure(class_Rule_Matcher_AND_List_match, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(and_list), - /* K2 */ be_nested_str(match), - /* K3 */ be_nested_str(push), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_Rule_Matcher_AND_List, /* shared constants */ &be_const_str_match, &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 + 0x58080003, // 0000 LDCONST R2 K3 0x600C0012, // 0001 GETGBL R3 G18 0x7C0C0000, // 0002 CALL R3 0 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x88140100, // 0004 GETMBR R5 R0 K0 0x7C100200, // 0005 CALL R4 1 0x14100404, // 0006 LT R4 R2 R4 0x7812000E, // 0007 JMPF R4 #0017 - 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x88100100, // 0008 GETMBR R4 R0 K0 0x94100802, // 0009 GETIDX R4 R4 R2 - 0x8C140902, // 000A GETMET R5 R4 K2 + 0x8C140904, // 000A GETMET R5 R4 K4 0x5C1C0200, // 000B MOVE R7 R1 0x7C140400, // 000C CALL R5 2 0x4C180000, // 000D LDNIL R6 @@ -1129,10 +1118,10 @@ be_local_closure(class_Rule_Matcher_AND_List_match, /* name */ 0x781A0001, // 000F JMPF R6 #0012 0x4C180000, // 0010 LDNIL R6 0x80040C00, // 0011 RET 1 R6 - 0x8C180703, // 0012 GETMET R6 R3 K3 + 0x8C180705, // 0012 GETMET R6 R3 K5 0x5C200A00, // 0013 MOVE R8 R5 0x7C180400, // 0014 CALL R6 2 - 0x00080504, // 0015 ADD R2 R2 K4 + 0x00080506, // 0015 ADD R2 R2 K6 0x7001FFEB, // 0016 JMP #0003 0x80040600, // 0017 RET 1 R3 }) @@ -1156,6 +1145,40 @@ be_local_class(Rule_Matcher_AND_List, })), (bstring*) &be_const_str_Rule_Matcher_AND_List ); +extern const bclass be_class_Rule_Matcher; +// compact class 'Rule_Matcher' ktab size: 29, total: 34 (saved 40 bytes) +static const bvalue be_ktab_class_Rule_Matcher[29] = { + /* K0 */ be_nested_str(matchers), + /* K1 */ be_nested_str(rule), + /* K2 */ be_nested_str(trigger), + /* K3 */ be_const_class(be_class_Rule_Matcher), + /* K4 */ be_nested_str(string), + /* K5 */ be_nested_str(parse), + /* K6 */ be_nested_str(push), + /* K7 */ be_nested_str(stop_iteration), + /* K8 */ be_nested_str(Rule_Matcher_AND_List), + /* K9 */ be_nested_str(tasmota), + /* K10 */ be_nested_str(find_op), + /* K11 */ be_const_int(0), + /* K12 */ be_const_int(1), + /* K13 */ be_const_int(2), + /* K14 */ be_nested_str(find), + /* K15 */ be_nested_str(_X23), + /* K16 */ be_nested_str(pattern_error), + /* K17 */ be_nested_str(empty_X20pattern_X20not_X20allowed), + /* K18 */ be_const_int(2147483647), + /* K19 */ be_nested_str(_X5B), + /* K20 */ be_nested_str(_X5D), + /* K21 */ be_nested_str(value_error), + /* K22 */ be_nested_str(missing_X20_X27_X5D_X27_X20in_X20rule_X20pattern), + /* K23 */ be_nested_str(_X3F), + /* K24 */ be_nested_str(Rule_Matcher_Wildcard), + /* K25 */ be_nested_str(Rule_Matcher_Key), + /* K26 */ be_nested_str(Rule_Matcher_Array), + /* K27 */ be_nested_str(Rule_Matcher_Operator), + /* K28 */ be_nested_str(match), +}; + extern const bclass be_class_Rule_Matcher; @@ -1166,15 +1189,13 @@ be_local_closure(class_Rule_Matcher_tostring, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(matchers), - }), + &be_ktab_class_Rule_Matcher, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -1195,23 +1216,19 @@ be_local_closure(class_Rule_Matcher_init, /* name */ be_nested_proto( 4, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(rule), - /* K1 */ be_nested_str(trigger), - /* K2 */ be_nested_str(matchers), - }), + &be_ktab_class_Rule_Matcher, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x90020201, // 0000 SETMBR R0 K1 R1 + 0x90020402, // 0001 SETMBR R0 K2 R2 + 0x90020003, // 0002 SETMBR R0 K0 R3 0x80000000, // 0003 RET 0 }) ) @@ -1226,45 +1243,18 @@ be_local_closure(class_Rule_Matcher_parse, /* name */ be_nested_proto( 20, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_const_class(be_class_Rule_Matcher), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(parse), - /* K3 */ be_nested_str(push), - /* K4 */ be_nested_str(trigger), - /* K5 */ be_nested_str(stop_iteration), - /* K6 */ be_nested_str(Rule_Matcher_AND_List), - /* K7 */ be_nested_str(tasmota), - /* K8 */ be_nested_str(find_op), - /* K9 */ be_const_int(0), - /* K10 */ be_const_int(1), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str(find), - /* K13 */ be_nested_str(_X23), - /* K14 */ be_nested_str(pattern_error), - /* K15 */ be_nested_str(empty_X20pattern_X20not_X20allowed), - /* K16 */ be_const_int(2147483647), - /* K17 */ be_nested_str(_X5B), - /* K18 */ be_nested_str(_X5D), - /* K19 */ be_nested_str(value_error), - /* K20 */ be_nested_str(missing_X20_X27_X5D_X27_X20in_X20rule_X20pattern), - /* K21 */ be_nested_str(_X3F), - /* K22 */ be_nested_str(Rule_Matcher_Wildcard), - /* K23 */ be_nested_str(Rule_Matcher_Key), - /* K24 */ be_nested_str(Rule_Matcher_Array), - /* K25 */ be_nested_str(Rule_Matcher_Operator), - }), + &be_ktab_class_Rule_Matcher, /* shared constants */ &be_const_str_parse, &be_const_str_solidified, ( &(const binstruction[147]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 + 0x58040003, // 0000 LDCONST R1 K3 + 0xA40A0800, // 0001 IMPORT R2 K4 0x4C0C0000, // 0002 LDNIL R3 0x1C0C0003, // 0003 EQ R3 R0 R3 0x780E0001, // 0004 JMPF R3 #0007 @@ -1285,17 +1275,17 @@ be_local_closure(class_Rule_Matcher_parse, /* name */ 0xA802000B, // 0013 EXBLK 0 #0020 0x5C180A00, // 0014 MOVE R6 R5 0x7C180000, // 0015 CALL R6 0 - 0x8C1C0302, // 0016 GETMET R7 R1 K2 + 0x8C1C0305, // 0016 GETMET R7 R1 K5 0x5C240C00, // 0017 MOVE R9 R6 0x7C1C0400, // 0018 CALL R7 2 - 0x8C200703, // 0019 GETMET R8 R3 K3 + 0x8C200706, // 0019 GETMET R8 R3 K6 0x5C280E00, // 001A MOVE R10 R7 0x7C200400, // 001B CALL R8 2 - 0x8C200903, // 001C GETMET R8 R4 K3 - 0x88280F04, // 001D GETMBR R10 R7 K4 + 0x8C200906, // 001C GETMET R8 R4 K6 + 0x88280F02, // 001D GETMBR R10 R7 K2 0x7C200400, // 001E CALL R8 2 0x7001FFF3, // 001F JMP #0014 - 0x58140005, // 0020 LDCONST R5 K5 + 0x58140007, // 0020 LDCONST R5 K7 0xAC140200, // 0021 CATCH R5 1 0 0xB0080000, // 0022 RAISE 2 R0 R0 0x5C140200, // 0023 MOVE R5 R1 @@ -1303,7 +1293,7 @@ be_local_closure(class_Rule_Matcher_parse, /* name */ 0x5C1C0800, // 0025 MOVE R7 R4 0x60200012, // 0026 GETGBL R8 G18 0x7C200000, // 0027 CALL R8 0 - 0x8C240306, // 0028 GETMET R9 R1 K6 + 0x8C240308, // 0028 GETMET R9 R1 K8 0x5C2C0600, // 0029 MOVE R11 R3 0x7C240400, // 002A CALL R9 2 0x40241009, // 002B CONNECT R9 R8 R9 @@ -1311,83 +1301,83 @@ be_local_closure(class_Rule_Matcher_parse, /* name */ 0x80040A00, // 002D RET 1 R5 0x600C0012, // 002E GETGBL R3 G18 0x7C0C0000, // 002F CALL R3 0 - 0xB8120E00, // 0030 GETNGBL R4 K7 - 0x8C100908, // 0031 GETMET R4 R4 K8 + 0xB8121200, // 0030 GETNGBL R4 K9 + 0x8C10090A, // 0031 GETMET R4 R4 K10 0x5C180000, // 0032 MOVE R6 R0 0x7C100400, // 0033 CALL R4 2 - 0x94140909, // 0034 GETIDX R5 R4 K9 - 0x9418090A, // 0035 GETIDX R6 R4 K10 - 0x941C090B, // 0036 GETIDX R7 R4 K11 + 0x9414090B, // 0034 GETIDX R5 R4 K11 + 0x9418090C, // 0035 GETIDX R6 R4 K12 + 0x941C090D, // 0036 GETIDX R7 R4 K13 0x6020000C, // 0037 GETGBL R8 G12 0x5C240A00, // 0038 MOVE R9 R5 0x7C200200, // 0039 CALL R8 1 - 0x58240009, // 003A LDCONST R9 K9 + 0x5824000B, // 003A LDCONST R9 K11 0x5429FFFE, // 003B LDINT R10 -1 0x142C1208, // 003C LT R11 R9 R8 0x782E0042, // 003D JMPF R11 #0081 - 0x8C2C050C, // 003E GETMET R11 R2 K12 + 0x8C2C050E, // 003E GETMET R11 R2 K14 0x5C340A00, // 003F MOVE R13 R5 - 0x5838000D, // 0040 LDCONST R14 K13 + 0x5838000F, // 0040 LDCONST R14 K15 0x5C3C1200, // 0041 MOVE R15 R9 0x7C2C0800, // 0042 CALL R11 4 0x4C300000, // 0043 LDNIL R12 - 0x28341709, // 0044 GE R13 R11 K9 + 0x2834170B, // 0044 GE R13 R11 K11 0x78360008, // 0045 JMPF R13 #004F 0x1C341609, // 0046 EQ R13 R11 R9 0x78360000, // 0047 JMPF R13 #0049 - 0xB0061D0F, // 0048 RAISE 1 K14 K15 - 0x0434170A, // 0049 SUB R13 R11 K10 + 0xB0062111, // 0048 RAISE 1 K16 K17 + 0x0434170C, // 0049 SUB R13 R11 K12 0x4034120D, // 004A CONNECT R13 R9 R13 0x94300A0D, // 004B GETIDX R12 R5 R13 - 0x0034170A, // 004C ADD R13 R11 K10 + 0x0034170C, // 004C ADD R13 R11 K12 0x5C241A00, // 004D MOVE R9 R13 0x70020002, // 004E JMP #0052 - 0x40341310, // 004F CONNECT R13 R9 K16 + 0x40341312, // 004F CONNECT R13 R9 K18 0x94300A0D, // 0050 GETIDX R12 R5 R13 0x5C241000, // 0051 MOVE R9 R8 - 0x8C34050C, // 0052 GETMET R13 R2 K12 + 0x8C34050E, // 0052 GETMET R13 R2 K14 0x5C3C1800, // 0053 MOVE R15 R12 - 0x58400011, // 0054 LDCONST R16 K17 + 0x58400013, // 0054 LDCONST R16 K19 0x7C340600, // 0055 CALL R13 3 0x4C380000, // 0056 LDNIL R14 - 0x283C1B09, // 0057 GE R15 R13 K9 + 0x283C1B0B, // 0057 GE R15 R13 K11 0x783E0012, // 0058 JMPF R15 #006C - 0x8C3C050C, // 0059 GETMET R15 R2 K12 + 0x8C3C050E, // 0059 GETMET R15 R2 K14 0x5C441800, // 005A MOVE R17 R12 - 0x58480012, // 005B LDCONST R18 K18 + 0x58480014, // 005B LDCONST R18 K20 0x5C4C1A00, // 005C MOVE R19 R13 0x7C3C0800, // 005D CALL R15 4 - 0x14401F09, // 005E LT R16 R15 K9 + 0x14401F0B, // 005E LT R16 R15 K11 0x78420000, // 005F JMPF R16 #0061 - 0xB0062714, // 0060 RAISE 1 K19 K20 - 0x00401B0A, // 0061 ADD R16 R13 K10 - 0x04441F0A, // 0062 SUB R17 R15 K10 + 0xB0062B16, // 0060 RAISE 1 K21 K22 + 0x00401B0C, // 0061 ADD R16 R13 K12 + 0x04441F0C, // 0062 SUB R17 R15 K12 0x40402011, // 0063 CONNECT R16 R16 R17 0x94401810, // 0064 GETIDX R16 R12 R16 - 0x04441B0A, // 0065 SUB R17 R13 K10 - 0x40461211, // 0066 CONNECT R17 K9 R17 + 0x04441B0C, // 0065 SUB R17 R13 K12 + 0x40461611, // 0066 CONNECT R17 K11 R17 0x94301811, // 0067 GETIDX R12 R12 R17 0x60440009, // 0068 GETGBL R17 G9 0x5C482000, // 0069 MOVE R18 R16 0x7C440200, // 006A CALL R17 1 0x5C382200, // 006B MOVE R14 R17 - 0x1C3C1915, // 006C EQ R15 R12 K21 + 0x1C3C1917, // 006C EQ R15 R12 K23 0x783E0004, // 006D JMPF R15 #0073 - 0x8C3C0703, // 006E GETMET R15 R3 K3 - 0x8C440316, // 006F GETMET R17 R1 K22 + 0x8C3C0706, // 006E GETMET R15 R3 K6 + 0x8C440318, // 006F GETMET R17 R1 K24 0x7C440200, // 0070 CALL R17 1 0x7C3C0400, // 0071 CALL R15 2 0x70020004, // 0072 JMP #0078 - 0x8C3C0703, // 0073 GETMET R15 R3 K3 - 0x8C440317, // 0074 GETMET R17 R1 K23 + 0x8C3C0706, // 0073 GETMET R15 R3 K6 + 0x8C440319, // 0074 GETMET R17 R1 K25 0x5C4C1800, // 0075 MOVE R19 R12 0x7C440400, // 0076 CALL R17 2 0x7C3C0400, // 0077 CALL R15 2 0x4C3C0000, // 0078 LDNIL R15 0x203C1C0F, // 0079 NE R15 R14 R15 0x783E0004, // 007A JMPF R15 #0080 - 0x8C3C0703, // 007B GETMET R15 R3 K3 - 0x8C440318, // 007C GETMET R17 R1 K24 + 0x8C3C0706, // 007B GETMET R15 R3 K6 + 0x8C44031A, // 007C GETMET R17 R1 K26 0x5C4C1C00, // 007D MOVE R19 R14 0x7C440400, // 007E CALL R17 2 0x7C3C0400, // 007F CALL R15 2 @@ -1398,8 +1388,8 @@ be_local_closure(class_Rule_Matcher_parse, /* name */ 0x4C2C0000, // 0084 LDNIL R11 0x202C0E0B, // 0085 NE R11 R7 R11 0x782E0005, // 0086 JMPF R11 #008D - 0x8C2C0703, // 0087 GETMET R11 R3 K3 - 0x8C340319, // 0088 GETMET R13 R1 K25 + 0x8C2C0706, // 0087 GETMET R11 R3 K6 + 0x8C34031B, // 0088 GETMET R13 R1 K27 0x5C3C0C00, // 0089 MOVE R15 R6 0x5C400E00, // 008A MOVE R16 R7 0x7C340600, // 008B CALL R13 3 @@ -1423,18 +1413,13 @@ be_local_closure(class_Rule_Matcher_match, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(matchers), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(match), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Rule_Matcher, /* shared constants */ &be_const_str_match, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ @@ -1445,7 +1430,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */ 0x4C080000, // 0004 LDNIL R2 0x80040400, // 0005 RET 1 R2 0x5C080200, // 0006 MOVE R2 R1 - 0x580C0001, // 0007 LDCONST R3 K1 + 0x580C000B, // 0007 LDCONST R3 K11 0x6010000C, // 0008 GETGBL R4 G12 0x88140100, // 0009 GETMBR R5 R0 K0 0x7C100200, // 000A CALL R4 1 @@ -1453,7 +1438,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */ 0x7812000C, // 000C JMPF R4 #001A 0x88100100, // 000D GETMBR R4 R0 K0 0x94100803, // 000E GETIDX R4 R4 R3 - 0x8C100902, // 000F GETMET R4 R4 K2 + 0x8C10091C, // 000F GETMET R4 R4 K28 0x5C180400, // 0010 MOVE R6 R2 0x7C100400, // 0011 CALL R4 2 0x5C080800, // 0012 MOVE R2 R4 @@ -1462,7 +1447,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */ 0x78120001, // 0015 JMPF R4 #0018 0x4C100000, // 0016 LDNIL R4 0x80040800, // 0017 RET 1 R4 - 0x000C0703, // 0018 ADD R3 R3 K3 + 0x000C070C, // 0018 ADD R3 R3 K12 0x7001FFED, // 0019 JMP #0008 0x80040400, // 001A RET 1 R2 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h index 98280a24d..56da5bbc5 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h @@ -3,6 +3,25 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Tapp' ktab size: 15, total: 16 (saved 8 bytes) +static const bvalue be_ktab_class_Tapp[15] = { + /* K0 */ be_nested_str(tasmota), + /* K1 */ be_nested_str(add_driver), + /* K2 */ be_nested_str(path), + /* K3 */ be_nested_str(string), + /* K4 */ be_nested_str(listdir), + /* K5 */ be_nested_str(_X2F), + /* K6 */ be_nested_str(find), + /* K7 */ be_nested_str(_X2Etapp), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str(log), + /* K10 */ be_nested_str(TAP_X3A_X20Loaded_X20Tasmota_X20App_X20_X27_X25s_X27), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str(load), + /* K13 */ be_nested_str(_X23autoexec_X2Ebe), + /* K14 */ be_nested_str(stop_iteration), +}; + extern const bclass be_class_Tapp; @@ -13,16 +32,13 @@ be_local_closure(class_Tapp_init, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(add_driver), - }), + &be_ktab_class_Tapp, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -44,35 +60,20 @@ be_local_closure(class_Tapp_autoexec, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_nested_str(find), - /* K5 */ be_nested_str(_X2Etapp), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(tasmota), - /* K8 */ be_nested_str(log), - /* K9 */ be_nested_str(TAP_X3A_X20Loaded_X20Tasmota_X20App_X20_X27_X25s_X27), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str(load), - /* K12 */ be_nested_str(_X23autoexec_X2Ebe), - /* K13 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Tapp, /* shared constants */ &be_const_str_autoexec, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 + 0xA4060400, // 0000 IMPORT R1 K2 + 0xA40A0600, // 0001 IMPORT R2 K3 + 0x8C0C0304, // 0002 GETMET R3 R1 K4 + 0x58140005, // 0003 LDCONST R5 K5 0x7C0C0400, // 0004 CALL R3 2 0x60100010, // 0005 GETGBL R4 G16 0x5C140600, // 0006 MOVE R5 R3 @@ -80,26 +81,26 @@ be_local_closure(class_Tapp_autoexec, /* name */ 0xA8020014, // 0008 EXBLK 0 #001E 0x5C140800, // 0009 MOVE R5 R4 0x7C140000, // 000A CALL R5 0 - 0x8C180504, // 000B GETMET R6 R2 K4 + 0x8C180506, // 000B GETMET R6 R2 K6 0x5C200A00, // 000C MOVE R8 R5 - 0x58240005, // 000D LDCONST R9 K5 + 0x58240007, // 000D LDCONST R9 K7 0x7C180600, // 000E CALL R6 3 - 0x24180D06, // 000F GT R6 R6 K6 + 0x24180D08, // 000F GT R6 R6 K8 0x781A000B, // 0010 JMPF R6 #001D - 0xB81A0E00, // 0011 GETNGBL R6 K7 - 0x8C180D08, // 0012 GETMET R6 R6 K8 + 0xB81A0000, // 0011 GETNGBL R6 K0 + 0x8C180D09, // 0012 GETMET R6 R6 K9 0x60200018, // 0013 GETGBL R8 G24 - 0x58240009, // 0014 LDCONST R9 K9 + 0x5824000A, // 0014 LDCONST R9 K10 0x5C280A00, // 0015 MOVE R10 R5 0x7C200400, // 0016 CALL R8 2 - 0x5824000A, // 0017 LDCONST R9 K10 + 0x5824000B, // 0017 LDCONST R9 K11 0x7C180600, // 0018 CALL R6 3 - 0xB81A0E00, // 0019 GETNGBL R6 K7 - 0x8C180D0B, // 001A GETMET R6 R6 K11 - 0x00200B0C, // 001B ADD R8 R5 K12 + 0xB81A0000, // 0019 GETNGBL R6 K0 + 0x8C180D0C, // 001A GETMET R6 R6 K12 + 0x00200B0D, // 001B ADD R8 R5 K13 0x7C180400, // 001C CALL R6 2 0x7001FFEA, // 001D JMP #0009 - 0x5810000D, // 001E LDCONST R4 K13 + 0x5810000E, // 001E LDCONST R4 K14 0xAC100200, // 001F CATCH R4 1 0 0xB0080000, // 0020 RAISE 2 R0 R0 0x80000000, // 0021 RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h index bdbd9545a..2583c5604 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h @@ -3,6 +3,165 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Tasmota' ktab size: 155, total: 285 (saved 1040 bytes) +static const bvalue be_ktab_class_Tasmota[155] = { + /* K0 */ be_nested_str(cmd_res), + /* K1 */ be_nested_str(tasmota), + /* K2 */ be_nested_str(global), + /* K3 */ be_nested_str(maxlog_level), + /* K4 */ be_const_int(2), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str(_cmd), + /* K7 */ be_nested_str(introspect), + /* K8 */ be_nested_str(function), + /* K9 */ be_nested_str(type_error), + /* K10 */ be_nested_str(BRY_X3A_X20argument_X20must_X20be_X20a_X20function), + /* K11 */ be_nested_str(ismethod), + /* K12 */ be_nested_str(BRY_X3A_X20method_X20not_X20allowed_X2C_X20use_X20a_X20closure_X20like_X20_X27_X2F_X20args_X20_X2D_X3E_X20obj_X2Efunc_X28args_X29_X27), + /* K13 */ be_nested_str(_drivers), + /* K14 */ be_nested_str(find), + /* K15 */ be_nested_str(pop), + /* K16 */ be_nested_str(every_50ms), + /* K17 */ be_nested_str(run_deferred), + /* K18 */ be_nested_str(every_250ms), + /* K19 */ be_nested_str(run_cron), + /* K20 */ be_nested_str(mqtt_data), + /* K21 */ be_nested_str(cmd), + /* K22 */ be_nested_str(exec_cmd), + /* K23 */ be_nested_str(tele), + /* K24 */ be_nested_str(exec_tele), + /* K25 */ be_nested_str(rule), + /* K26 */ be_nested_str(exec_rules), + /* K27 */ be_nested_str(gc), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str(get), + /* K30 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K31 */ be_nested_str(_debug_present), + /* K32 */ be_nested_str(debug), + /* K33 */ be_nested_str(traceback), + /* K34 */ be_nested_str(save_before_restart), + /* K35 */ be_nested_str(persist), + /* K36 */ be_nested_str(save), + /* K37 */ be_nested_str(_ccmd), + /* K38 */ be_nested_str(json), + /* K39 */ be_nested_str(load), + /* K40 */ be_nested_str(find_key_i), + /* K41 */ be_nested_str(resolvecmnd), + /* K42 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), + /* K43 */ be_nested_str(light), + /* K44 */ be_nested_str(set), + /* K45 */ be_nested_str(_crons), + /* K46 */ be_nested_str(ccronexpr), + /* K47 */ be_nested_str(now), + /* K48 */ be_nested_str(size), + /* K49 */ be_nested_str(trig), + /* K50 */ be_nested_str(next), + /* K51 */ be_nested_str(time_reached), + /* K52 */ be_nested_str(f), + /* K53 */ be_nested_str(check_not_method), + /* K54 */ be_nested_str(_timers), + /* K55 */ be_nested_str(push), + /* K56 */ be_nested_str(Trigger), + /* K57 */ be_nested_str(millis), + /* K58 */ be_nested_str(instance), + /* K59 */ be_nested_str(value_error), + /* K60 */ be_nested_str(instance_X20required), + /* K61 */ be_nested_str(id), + /* K62 */ be_nested_str(ctypes_bytes_dyn), + /* K63 */ be_nested_str(_global_addr), + /* K64 */ be_nested_str(_global_def), + /* K65 */ be_nested_str(_settings_ptr), + /* K66 */ be_nested_str(settings), + /* K67 */ be_nested_str(toptr), + /* K68 */ be_nested_str(_settings_def), + /* K69 */ be_nested_str(wd), + /* K70 */ be_nested_str(), + /* K71 */ be_nested_str(contains), + /* K72 */ be_nested_str(add_cmd), + /* K73 */ be_nested_str(UrlFetch), + /* K74 */ be_nested_str(_rules), + /* K75 */ be_nested_str(Rule_Matcher), + /* K76 */ be_nested_str(parse), + /* K77 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), + /* K78 */ be_nested_str(match), + /* K79 */ be_nested_str(trigger), + /* K80 */ be_nested_str(_find_op), + /* K81 */ be_const_int(2147483647), + /* K82 */ be_nested_str(remove), + /* K83 */ be_nested_str(collect), + /* K84 */ be_nested_str(allocated), + /* K85 */ be_nested_str(string), + /* K86 */ be_const_int(0), + /* K87 */ be_nested_str(toupper), + /* K88 */ be_nested_str(_fl), + /* K89 */ be_nested_str(log), + /* K90 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), + /* K91 */ be_const_int(3), + /* K92 */ be_nested_str(try_rule), + /* K93 */ be_const_int(1), + /* K94 */ be_nested_str(endswith), + /* K95 */ be_nested_str(_X2Ebe), + /* K96 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension), + /* K97 */ be_nested_str(_X23), + /* K98 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive), + /* K99 */ be_nested_str(file), + /* K100 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file), + /* K101 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29), + /* K102 */ be_nested_str(c), + /* K103 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29), + /* K104 */ be_nested_str(Tele), + /* K105 */ be_nested_str(i2c_enabled), + /* K106 */ be_nested_str(wire1), + /* K107 */ be_nested_str(enabled), + /* K108 */ be_nested_str(detect), + /* K109 */ be_nested_str(wire2), + /* K110 */ be_nested_str(keys), + /* K111 */ be_nested_str(_X3F), + /* K112 */ be_nested_str(stop_iteration), + /* K113 */ be_nested_str(split), + /* K114 */ be_nested_str(_X2F), + /* K115 */ be_nested_str(index_X2Ehtml), + /* K116 */ be_nested_str(webclient), + /* K117 */ be_nested_str(set_follow_redirects), + /* K118 */ be_nested_str(begin), + /* K119 */ be_nested_str(GET), + /* K120 */ be_nested_str(status_X3A_X20), + /* K121 */ be_nested_str(connection_error), + /* K122 */ be_nested_str(write_file), + /* K123 */ be_nested_str(close), + /* K124 */ be_nested_str(BRY_X3A_X20Fetched_X20), + /* K125 */ be_nested_str(cb), + /* K126 */ be_nested_str(gen_cb), + /* K127 */ be_nested_str(time_dump), + /* K128 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d), + /* K129 */ be_nested_str(year), + /* K130 */ be_nested_str(month), + /* K131 */ be_nested_str(day), + /* K132 */ be_nested_str(hour), + /* K133 */ be_nested_str(min), + /* K134 */ be_nested_str(sec), + /* K135 */ be_nested_str(argument_X20must_X20be_X20a_X20function), + /* K136 */ be_nested_str(fast_loop_enabled), + /* K137 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), + /* K138 */ be_nested_str(scale_uint), + /* K139 */ be_nested_str(path), + /* K140 */ be_nested_str(startswith), + /* K141 */ be_const_int(1), + /* K142 */ be_const_int(2147483647), + /* K143 */ be_nested_str(_X2E), + /* K144 */ be_nested_str(_X2Ebec), + /* K145 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27), + /* K146 */ be_nested_str(exists), + /* K147 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27), + /* K148 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29), + /* K149 */ be_nested_str(http), + /* K150 */ be_nested_str(resp_cmnd_str), + /* K151 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27), + /* K152 */ be_nested_str(urlfetch), + /* K153 */ be_nested_str(resp_cmnd_failed), + /* K154 */ be_nested_str(resp_cmnd_done), +}; + extern const bclass be_class_Tasmota; @@ -13,21 +172,13 @@ be_local_closure(class_Tasmota_cmd, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(cmd_res), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(global), - /* K3 */ be_nested_str(maxlog_level), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str(_cmd), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_cmd, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ @@ -71,37 +222,30 @@ be_local_closure(class_Tasmota_check_not_method, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(function), - /* K2 */ be_nested_str(type_error), - /* K3 */ be_nested_str(BRY_X3A_X20argument_X20must_X20be_X20a_X20function), - /* K4 */ be_nested_str(ismethod), - /* K5 */ be_nested_str(BRY_X3A_X20method_X20not_X20allowed_X2C_X20use_X20a_X20closure_X20like_X20_X27_X2F_X20args_X20_X2D_X3E_X20obj_X2Efunc_X28args_X29_X27), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_check_not_method, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40A0E00, // 0000 IMPORT R2 K7 0x600C0004, // 0001 GETGBL R3 G4 0x5C100200, // 0002 MOVE R4 R1 0x7C0C0200, // 0003 CALL R3 1 - 0x200C0701, // 0004 NE R3 R3 K1 + 0x200C0708, // 0004 NE R3 R3 K8 0x780E0000, // 0005 JMPF R3 #0007 - 0xB0060503, // 0006 RAISE 1 K2 K3 - 0x8C0C0504, // 0007 GETMET R3 R2 K4 + 0xB006130A, // 0006 RAISE 1 K9 K10 + 0x8C0C050B, // 0007 GETMET R3 R2 K11 0x5C140200, // 0008 MOVE R5 R1 0x7C0C0400, // 0009 CALL R3 2 0x50100200, // 000A LDBOOL R4 1 0 0x1C0C0604, // 000B EQ R3 R3 R4 0x780E0000, // 000C JMPF R3 #000E - 0xB0060505, // 000D RAISE 1 K2 K5 + 0xB006130C, // 000D RAISE 1 K9 K12 0x80000000, // 000E RET 0 }) ) @@ -116,31 +260,27 @@ be_local_closure(class_Tasmota_remove_driver, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_drivers), - /* K1 */ be_nested_str(find), - /* K2 */ be_nested_str(pop), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_remove_driver, &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808010D, // 0000 GETMBR R2 R0 K13 0x780A000A, // 0001 JMPF R2 #000D - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x8808010D, // 0002 GETMBR R2 R0 K13 + 0x8C08050E, // 0003 GETMET R2 R2 K14 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x4C0C0000, // 0006 LDNIL R3 0x200C0403, // 0007 NE R3 R2 R3 0x780E0003, // 0008 JMPF R3 #000D - 0x880C0100, // 0009 GETMBR R3 R0 K0 - 0x8C0C0702, // 000A GETMET R3 R3 K2 + 0x880C010D, // 0009 GETMBR R3 R0 K13 + 0x8C0C070F, // 000A GETMET R3 R3 K15 0x5C140400, // 000B MOVE R5 R2 0x7C0C0400, // 000C CALL R3 2 0x80000000, // 000D RET 0 @@ -157,75 +297,49 @@ be_local_closure(class_Tasmota_event, /* name */ be_nested_proto( 19, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(every_50ms), - /* K2 */ be_nested_str(run_deferred), - /* K3 */ be_nested_str(every_250ms), - /* K4 */ be_nested_str(run_cron), - /* K5 */ be_nested_str(mqtt_data), - /* K6 */ be_nested_str(cmd), - /* K7 */ be_nested_str(exec_cmd), - /* K8 */ be_nested_str(tele), - /* K9 */ be_nested_str(exec_tele), - /* K10 */ be_nested_str(rule), - /* K11 */ be_nested_str(exec_rules), - /* K12 */ be_nested_str(gc), - /* K13 */ be_nested_str(_drivers), - /* K14 */ be_const_int(0), - /* K15 */ be_nested_str(get), - /* K16 */ be_nested_str(function), - /* K17 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K18 */ be_nested_str(_debug_present), - /* K19 */ be_nested_str(debug), - /* K20 */ be_nested_str(traceback), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str(save_before_restart), - /* K23 */ be_nested_str(persist), - /* K24 */ be_nested_str(save), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_event, &be_const_str_solidified, ( &(const binstruction[108]) { /* code */ - 0xA41A0000, // 0000 IMPORT R6 K0 - 0x1C1C0301, // 0001 EQ R7 R1 K1 + 0xA41A0E00, // 0000 IMPORT R6 K7 + 0x1C1C0310, // 0001 EQ R7 R1 K16 0x781E0001, // 0002 JMPF R7 #0005 - 0x8C1C0102, // 0003 GETMET R7 R0 K2 + 0x8C1C0111, // 0003 GETMET R7 R0 K17 0x7C1C0200, // 0004 CALL R7 1 - 0x1C1C0303, // 0005 EQ R7 R1 K3 + 0x1C1C0312, // 0005 EQ R7 R1 K18 0x781E0001, // 0006 JMPF R7 #0009 - 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x8C1C0113, // 0007 GETMET R7 R0 K19 0x7C1C0200, // 0008 CALL R7 1 0x501C0000, // 0009 LDBOOL R7 0 0 0x50200000, // 000A LDBOOL R8 0 0 - 0x1C240305, // 000B EQ R9 R1 K5 + 0x1C240314, // 000B EQ R9 R1 K20 0x78260000, // 000C JMPF R9 #000E 0x50200200, // 000D LDBOOL R8 1 0 - 0x1C240306, // 000E EQ R9 R1 K6 + 0x1C240315, // 000E EQ R9 R1 K21 0x78260006, // 000F JMPF R9 #0017 - 0x8C240107, // 0010 GETMET R9 R0 K7 + 0x8C240116, // 0010 GETMET R9 R0 K22 0x5C2C0400, // 0011 MOVE R11 R2 0x5C300600, // 0012 MOVE R12 R3 0x5C340800, // 0013 MOVE R13 R4 0x7C240800, // 0014 CALL R9 4 0x80041200, // 0015 RET 1 R9 0x7002004E, // 0016 JMP #0066 - 0x1C240308, // 0017 EQ R9 R1 K8 + 0x1C240317, // 0017 EQ R9 R1 K23 0x78260004, // 0018 JMPF R9 #001E - 0x8C240109, // 0019 GETMET R9 R0 K9 + 0x8C240118, // 0019 GETMET R9 R0 K24 0x5C2C0800, // 001A MOVE R11 R4 0x7C240400, // 001B CALL R9 2 0x80041200, // 001C RET 1 R9 0x70020047, // 001D JMP #0066 - 0x1C24030A, // 001E EQ R9 R1 K10 + 0x1C240319, // 001E EQ R9 R1 K25 0x78260007, // 001F JMPF R9 #0028 - 0x8C24010B, // 0020 GETMET R9 R0 K11 + 0x8C24011A, // 0020 GETMET R9 R0 K26 0x5C2C0800, // 0021 MOVE R11 R4 0x60300017, // 0022 GETGBL R12 G23 0x5C340600, // 0023 MOVE R13 R3 @@ -233,15 +347,15 @@ be_local_closure(class_Tasmota_event, /* name */ 0x7C240600, // 0025 CALL R9 3 0x80041200, // 0026 RET 1 R9 0x7002003D, // 0027 JMP #0066 - 0x1C24030C, // 0028 EQ R9 R1 K12 + 0x1C24031B, // 0028 EQ R9 R1 K27 0x78260003, // 0029 JMPF R9 #002E - 0x8C24010C, // 002A GETMET R9 R0 K12 + 0x8C24011B, // 002A GETMET R9 R0 K27 0x7C240200, // 002B CALL R9 1 0x80041200, // 002C RET 1 R9 0x70020037, // 002D JMP #0066 0x8824010D, // 002E GETMBR R9 R0 K13 0x78260035, // 002F JMPF R9 #0066 - 0x5824000E, // 0030 LDCONST R9 K14 + 0x5824001C, // 0030 LDCONST R9 K28 0x6028000C, // 0031 GETGBL R10 G12 0x882C010D, // 0032 GETMBR R11 R0 K13 0x7C280200, // 0033 CALL R10 1 @@ -249,14 +363,14 @@ be_local_closure(class_Tasmota_event, /* name */ 0x782A002F, // 0035 JMPF R10 #0066 0x8828010D, // 0036 GETMBR R10 R0 K13 0x94281409, // 0037 GETIDX R10 R10 R9 - 0x8C2C0D0F, // 0038 GETMET R11 R6 K15 + 0x8C2C0D1D, // 0038 GETMET R11 R6 K29 0x5C341400, // 0039 MOVE R13 R10 0x5C380200, // 003A MOVE R14 R1 0x7C2C0600, // 003B CALL R11 3 0x60300004, // 003C GETGBL R12 G4 0x5C341600, // 003D MOVE R13 R11 0x7C300200, // 003E CALL R12 1 - 0x1C301910, // 003F EQ R12 R12 K16 + 0x1C301908, // 003F EQ R12 R12 K8 0x78320022, // 0040 JMPF R12 #0064 0xA8020011, // 0041 EXBLK 0 #0054 0x5C301600, // 0042 MOVE R12 R11 @@ -281,24 +395,24 @@ be_local_closure(class_Tasmota_event, /* name */ 0x7002000C, // 0055 JMP #0063 0x60380001, // 0056 GETGBL R14 G1 0x603C0018, // 0057 GETGBL R15 G24 - 0x58400011, // 0058 LDCONST R16 K17 + 0x5840001E, // 0058 LDCONST R16 K30 0x5C441800, // 0059 MOVE R17 R12 0x5C481A00, // 005A MOVE R18 R13 0x7C3C0600, // 005B CALL R15 3 0x7C380200, // 005C CALL R14 1 - 0x88380112, // 005D GETMBR R14 R0 K18 + 0x8838011F, // 005D GETMBR R14 R0 K31 0x783A0002, // 005E JMPF R14 #0062 - 0xA43A2600, // 005F IMPORT R14 K19 - 0x8C3C1D14, // 0060 GETMET R15 R14 K20 + 0xA43A4000, // 005F IMPORT R14 K32 + 0x8C3C1D21, // 0060 GETMET R15 R14 K33 0x7C3C0200, // 0061 CALL R15 1 0x70020000, // 0062 JMP #0064 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x00241315, // 0064 ADD R9 R9 K21 + 0x00241305, // 0064 ADD R9 R9 K5 0x7001FFCA, // 0065 JMP #0031 - 0x1C240316, // 0066 EQ R9 R1 K22 + 0x1C240322, // 0066 EQ R9 R1 K34 0x78260002, // 0067 JMPF R9 #006B - 0xA4262E00, // 0068 IMPORT R9 K23 - 0x8C281318, // 0069 GETMET R10 R9 K24 + 0xA4264600, // 0068 IMPORT R9 K35 + 0x8C281324, // 0069 GETMET R10 R9 K36 0x7C280200, // 006A CALL R10 1 0x80040E00, // 006B RET 1 R7 }) @@ -314,39 +428,33 @@ be_local_closure(class_Tasmota_exec_cmd, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(_ccmd), - /* K1 */ be_nested_str(json), - /* K2 */ be_nested_str(load), - /* K3 */ be_nested_str(find_key_i), - /* K4 */ be_nested_str(resolvecmnd), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_exec_cmd, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x88100125, // 0000 GETMBR R4 R0 K37 0x78120016, // 0001 JMPF R4 #0019 - 0xA4120200, // 0002 IMPORT R4 K1 - 0x8C140902, // 0003 GETMET R5 R4 K2 + 0xA4124C00, // 0002 IMPORT R4 K38 + 0x8C140927, // 0003 GETMET R5 R4 K39 0x5C1C0600, // 0004 MOVE R7 R3 0x7C140400, // 0005 CALL R5 2 - 0x8C180103, // 0006 GETMET R6 R0 K3 - 0x88200100, // 0007 GETMBR R8 R0 K0 + 0x8C180128, // 0006 GETMET R6 R0 K40 + 0x88200125, // 0007 GETMBR R8 R0 K37 0x5C240200, // 0008 MOVE R9 R1 0x7C180600, // 0009 CALL R6 3 0x4C1C0000, // 000A LDNIL R7 0x201C0C07, // 000B NE R7 R6 R7 0x781E000B, // 000C JMPF R7 #0019 - 0x8C1C0104, // 000D GETMET R7 R0 K4 + 0x8C1C0129, // 000D GETMET R7 R0 K41 0x5C240C00, // 000E MOVE R9 R6 0x7C1C0400, // 000F CALL R7 2 - 0x881C0100, // 0010 GETMBR R7 R0 K0 + 0x881C0125, // 0010 GETMBR R7 R0 K37 0x941C0E06, // 0011 GETIDX R7 R7 R6 0x5C200C00, // 0012 MOVE R8 R6 0x5C240400, // 0013 MOVE R9 R2 @@ -370,34 +478,30 @@ be_local_closure(class_Tasmota_set_light, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), - /* K1 */ be_nested_str(light), - /* K2 */ be_nested_str(set), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_set_light, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x600C0001, // 0000 GETGBL R3 G1 - 0x58100000, // 0001 LDCONST R4 K0 + 0x5810002A, // 0001 LDCONST R4 K42 0x7C0C0200, // 0002 CALL R3 1 - 0xA40E0200, // 0003 IMPORT R3 K1 + 0xA40E5600, // 0003 IMPORT R3 K43 0x4C100000, // 0004 LDNIL R4 0x20100404, // 0005 NE R4 R2 R4 0x78120005, // 0006 JMPF R4 #000D - 0x8C100702, // 0007 GETMET R4 R3 K2 + 0x8C10072C, // 0007 GETMET R4 R3 K44 0x5C180200, // 0008 MOVE R6 R1 0x5C1C0400, // 0009 MOVE R7 R2 0x7C100600, // 000A CALL R4 3 0x80040800, // 000B RET 1 R4 0x70020003, // 000C JMP #0011 - 0x8C100702, // 000D GETMET R4 R3 K2 + 0x8C10072C, // 000D GETMET R4 R3 K44 0x5C180200, // 000E MOVE R6 R1 0x7C100400, // 000F CALL R4 2 0x80040800, // 0010 RET 1 R4 @@ -415,59 +519,48 @@ be_local_closure(class_Tasmota_run_cron, /* name */ be_nested_proto( 9, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(_crons), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(ccronexpr), - /* K3 */ be_nested_str(now), - /* K4 */ be_nested_str(size), - /* K5 */ be_nested_str(trig), - /* K6 */ be_nested_str(next), - /* K7 */ be_nested_str(time_reached), - /* K8 */ be_nested_str(f), - /* K9 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_run_cron, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804012D, // 0000 GETMBR R1 R0 K45 0x7806001E, // 0001 JMPF R1 #0021 - 0x58040001, // 0002 LDCONST R1 K1 - 0xB80A0400, // 0003 GETNGBL R2 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 + 0x5804001C, // 0002 LDCONST R1 K28 + 0xB80A5C00, // 0003 GETNGBL R2 K46 + 0x8C08052F, // 0004 GETMET R2 R2 K47 0x7C080200, // 0005 CALL R2 1 - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x8C0C0704, // 0007 GETMET R3 R3 K4 + 0x880C012D, // 0006 GETMBR R3 R0 K45 + 0x8C0C0730, // 0007 GETMET R3 R3 K48 0x7C0C0200, // 0008 CALL R3 1 0x140C0203, // 0009 LT R3 R1 R3 0x780E0015, // 000A JMPF R3 #0021 - 0x880C0100, // 000B GETMBR R3 R0 K0 + 0x880C012D, // 000B GETMBR R3 R0 K45 0x940C0601, // 000C GETIDX R3 R3 R1 - 0x88100705, // 000D GETMBR R4 R3 K5 - 0x1C100901, // 000E EQ R4 R4 K1 + 0x88100731, // 000D GETMBR R4 R3 K49 + 0x1C10091C, // 000E EQ R4 R4 K28 0x78120003, // 000F JMPF R4 #0014 - 0x8C100706, // 0010 GETMET R4 R3 K6 + 0x8C100732, // 0010 GETMET R4 R3 K50 0x7C100200, // 0011 CALL R4 1 - 0x900E0A04, // 0012 SETMBR R3 K5 R4 + 0x900E6204, // 0012 SETMBR R3 K49 R4 0x7002000A, // 0013 JMP #001F - 0x8C100707, // 0014 GETMET R4 R3 K7 + 0x8C100733, // 0014 GETMET R4 R3 K51 0x7C100200, // 0015 CALL R4 1 0x78120007, // 0016 JMPF R4 #001F - 0x88100708, // 0017 GETMBR R4 R3 K8 - 0x8C140706, // 0018 GETMET R5 R3 K6 + 0x88100734, // 0017 GETMBR R4 R3 K52 + 0x8C140732, // 0018 GETMET R5 R3 K50 0x7C140200, // 0019 CALL R5 1 - 0x900E0A05, // 001A SETMBR R3 K5 R5 + 0x900E6205, // 001A SETMBR R3 K49 R5 0x5C180800, // 001B MOVE R6 R4 0x5C1C0400, // 001C MOVE R7 R2 0x5C200A00, // 001D MOVE R8 R5 0x7C180400, // 001E CALL R6 2 - 0x00040309, // 001F ADD R1 R1 K9 + 0x00040305, // 001F ADD R1 R1 K5 0x7001FFE4, // 0020 JMP #0006 0x80000000, // 0021 RET 0 }) @@ -483,36 +576,30 @@ be_local_closure(class_Tasmota_set_timer, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(check_not_method), - /* K1 */ be_nested_str(_timers), - /* K2 */ be_nested_str(push), - /* K3 */ be_nested_str(Trigger), - /* K4 */ be_nested_str(millis), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_set_timer, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x8C100135, // 0000 GETMET R4 R0 K53 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x88100136, // 0003 GETMBR R4 R0 K54 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x88100101, // 000A GETMBR R4 R0 K1 - 0x8C100902, // 000B GETMET R4 R4 K2 - 0xB81A0600, // 000C GETNGBL R6 K3 - 0x8C1C0104, // 000D GETMET R7 R0 K4 + 0x90026C04, // 0009 SETMBR R0 K54 R4 + 0x88100136, // 000A GETMBR R4 R0 K54 + 0x8C100937, // 000B GETMET R4 R4 K55 + 0xB81A7000, // 000C GETNGBL R6 K56 + 0x8C1C0139, // 000D GETMET R7 R0 K57 0x5C240200, // 000E MOVE R9 R1 0x7C1C0400, // 000F CALL R7 2 0x5C200400, // 0010 MOVE R8 R2 @@ -533,47 +620,40 @@ be_local_closure(class_Tasmota_add_driver, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(instance), - /* K1 */ be_nested_str(value_error), - /* K2 */ be_nested_str(instance_X20required), - /* K3 */ be_nested_str(_drivers), - /* K4 */ be_nested_str(find), - /* K5 */ be_nested_str(push), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_add_driver, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0x60080004, // 0000 GETGBL R2 G4 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x20080500, // 0003 NE R2 R2 K0 + 0x2008053A, // 0003 NE R2 R2 K58 0x780A0000, // 0004 JMPF R2 #0006 - 0xB0060302, // 0005 RAISE 1 K1 K2 - 0x88080103, // 0006 GETMBR R2 R0 K3 + 0xB006773C, // 0005 RAISE 1 K59 K60 + 0x8808010D, // 0006 GETMBR R2 R0 K13 0x780A000B, // 0007 JMPF R2 #0014 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x8C080504, // 0009 GETMET R2 R2 K4 + 0x8808010D, // 0008 GETMBR R2 R0 K13 + 0x8C08050E, // 0009 GETMET R2 R2 K14 0x5C100200, // 000A MOVE R4 R1 0x7C080400, // 000B CALL R2 2 0x4C0C0000, // 000C LDNIL R3 0x1C080403, // 000D EQ R2 R2 R3 0x780A0003, // 000E JMPF R2 #0013 - 0x88080103, // 000F GETMBR R2 R0 K3 - 0x8C080505, // 0010 GETMET R2 R2 K5 + 0x8808010D, // 000F GETMBR R2 R0 K13 + 0x8C080537, // 0010 GETMET R2 R2 K55 0x5C100200, // 0011 MOVE R4 R1 0x7C080400, // 0012 CALL R2 2 0x70020003, // 0013 JMP #0018 0x60080012, // 0014 GETGBL R2 G18 0x7C080000, // 0015 CALL R2 0 0x400C0401, // 0016 CONNECT R3 R2 R1 - 0x90020602, // 0017 SETMBR R0 K3 R2 + 0x90021A02, // 0017 SETMBR R0 K13 R2 0x80000000, // 0018 RET 0 }) ) @@ -588,36 +668,29 @@ be_local_closure(class_Tasmota_next_cron, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(_crons), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(size), - /* K3 */ be_nested_str(id), - /* K4 */ be_nested_str(trig), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_next_cron, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808012D, // 0000 GETMBR R2 R0 K45 0x780A000D, // 0001 JMPF R2 #0010 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x8C100502, // 0003 GETMET R4 R2 K2 + 0x580C001C, // 0002 LDCONST R3 K28 + 0x8C100530, // 0003 GETMET R4 R2 K48 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120008, // 0006 JMPF R4 #0010 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x88100903, // 0008 GETMBR R4 R4 K3 + 0x8810093D, // 0008 GETMBR R4 R4 K61 0x1C100801, // 0009 EQ R4 R4 R1 0x78120002, // 000A JMPF R4 #000E 0x94100403, // 000B GETIDX R4 R2 R3 - 0x88100904, // 000C GETMBR R4 R4 K4 + 0x88100931, // 000C GETMBR R4 R4 K49 0x80040800, // 000D RET 1 R4 0x000C0705, // 000E ADD R3 R3 K5 0x7001FFF2, // 000F JMP #0003 @@ -635,7 +708,7 @@ be_local_closure(class_Tasmota_init, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -669,59 +742,40 @@ be_local_closure(class_Tasmota_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str(global), - /* K1 */ be_nested_str(ctypes_bytes_dyn), - /* K2 */ be_nested_str(_global_addr), - /* K3 */ be_nested_str(_global_def), - /* K4 */ be_nested_str(introspect), - /* K5 */ be_nested_str(_settings_ptr), - /* K6 */ be_nested_str(get), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str(settings), - /* K9 */ be_nested_str(toptr), - /* K10 */ be_nested_str(_settings_def), - /* K11 */ be_nested_str(wd), - /* K12 */ be_nested_str(), - /* K13 */ be_nested_str(_debug_present), - /* K14 */ be_nested_str(contains), - /* K15 */ be_nested_str(debug), - /* K16 */ be_nested_str(add_cmd), - /* K17 */ be_nested_str(UrlFetch), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xB8060200, // 0000 GETNGBL R1 K1 - 0x88080102, // 0001 GETMBR R2 R0 K2 - 0x880C0103, // 0002 GETMBR R3 R0 K3 + 0xB8067C00, // 0000 GETNGBL R1 K62 + 0x8808013F, // 0001 GETMBR R2 R0 K63 + 0x880C0140, // 0002 GETMBR R3 R0 K64 0x7C040400, // 0003 CALL R1 2 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0xA4060800, // 0005 IMPORT R1 K4 + 0x90020401, // 0004 SETMBR R0 K2 R1 + 0xA4060E00, // 0005 IMPORT R1 K7 0x60080015, // 0006 GETGBL R2 G21 - 0x880C0105, // 0007 GETMBR R3 R0 K5 + 0x880C0141, // 0007 GETMBR R3 R0 K65 0x54120003, // 0008 LDINT R4 4 0x7C080400, // 0009 CALL R2 2 - 0x8C080506, // 000A GETMET R2 R2 K6 - 0x58100007, // 000B LDCONST R4 K7 + 0x8C08051D, // 000A GETMET R2 R2 K29 + 0x5810001C, // 000B LDCONST R4 K28 0x54160003, // 000C LDINT R5 4 0x7C080600, // 000D CALL R2 3 0x780A0006, // 000E JMPF R2 #0016 - 0xB80E0200, // 000F GETNGBL R3 K1 - 0x8C100309, // 0010 GETMET R4 R1 K9 + 0xB80E7C00, // 000F GETNGBL R3 K62 + 0x8C100343, // 0010 GETMET R4 R1 K67 0x5C180400, // 0011 MOVE R6 R2 0x7C100400, // 0012 CALL R4 2 - 0x8814010A, // 0013 GETMBR R5 R0 K10 + 0x88140144, // 0013 GETMBR R5 R0 K68 0x7C0C0400, // 0014 CALL R3 2 - 0x90021003, // 0015 SETMBR R0 K8 R3 - 0x9002170C, // 0016 SETMBR R0 K11 K12 - 0xB80E0000, // 0017 GETNGBL R3 K0 - 0x8C0C070E, // 0018 GETMET R3 R3 K14 - 0x5814000F, // 0019 LDCONST R5 K15 + 0x90028403, // 0015 SETMBR R0 K66 R3 + 0x90028B46, // 0016 SETMBR R0 K69 K70 + 0xB80E0400, // 0017 GETNGBL R3 K2 + 0x8C0C0747, // 0018 GETMET R3 R3 K71 + 0x58140020, // 0019 LDCONST R5 K32 0x7C0C0400, // 001A CALL R3 2 - 0x90021A03, // 001B SETMBR R0 K13 R3 - 0x8C0C0110, // 001C GETMET R3 R0 K16 - 0x58140011, // 001D LDCONST R5 K17 + 0x90023E03, // 001B SETMBR R0 K31 R3 + 0x8C0C0148, // 001C GETMET R3 R0 K72 + 0x58140049, // 001D LDCONST R5 K73 0x84180000, // 001E CLOSURE R6 P0 0x7C0C0600, // 001F CALL R3 3 0xA0000000, // 0020 CLOSE R0 @@ -739,46 +793,36 @@ be_local_closure(class_Tasmota_add_rule, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(check_not_method), - /* K1 */ be_nested_str(_rules), - /* K2 */ be_nested_str(function), - /* K3 */ be_nested_str(push), - /* K4 */ be_nested_str(Trigger), - /* K5 */ be_nested_str(Rule_Matcher), - /* K6 */ be_nested_str(parse), - /* K7 */ be_nested_str(value_error), - /* K8 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_add_rule, &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x8C100135, // 0000 GETMET R4 R0 K53 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x8810014A, // 0003 GETMBR R4 R0 K74 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x90029404, // 0009 SETMBR R0 K74 R4 0x60100004, // 000A GETGBL R4 G4 0x5C140400, // 000B MOVE R5 R2 0x7C100200, // 000C CALL R4 1 - 0x1C100902, // 000D EQ R4 R4 K2 + 0x1C100908, // 000D EQ R4 R4 K8 0x7812000B, // 000E JMPF R4 #001B - 0x88100101, // 000F GETMBR R4 R0 K1 - 0x8C100903, // 0010 GETMET R4 R4 K3 - 0xB81A0800, // 0011 GETNGBL R6 K4 - 0x881C0105, // 0012 GETMBR R7 R0 K5 - 0x8C1C0F06, // 0013 GETMET R7 R7 K6 + 0x8810014A, // 000F GETMBR R4 R0 K74 + 0x8C100937, // 0010 GETMET R4 R4 K55 + 0xB81A7000, // 0011 GETNGBL R6 K56 + 0x881C014B, // 0012 GETMBR R7 R0 K75 + 0x8C1C0F4C, // 0013 GETMET R7 R7 K76 0x5C240200, // 0014 MOVE R9 R1 0x7C1C0400, // 0015 CALL R7 2 0x5C200400, // 0016 MOVE R8 R2 @@ -786,7 +830,7 @@ be_local_closure(class_Tasmota_add_rule, /* name */ 0x7C180600, // 0018 CALL R6 3 0x7C100400, // 0019 CALL R4 2 0x70020000, // 001A JMP #001C - 0xB0060F08, // 001B RAISE 1 K7 K8 + 0xB006774D, // 001B RAISE 1 K59 K77 0x80000000, // 001C RET 0 }) ) @@ -801,20 +845,17 @@ be_local_closure(class_Tasmota_try_rule, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(match), - /* K1 */ be_nested_str(trigger), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_try_rule, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C100500, // 0000 GETMET R4 R2 K0 + 0x8C10054E, // 0000 GETMET R4 R2 K78 0x5C180200, // 0001 MOVE R6 R1 0x7C100400, // 0002 CALL R4 2 0x4C140000, // 0003 LDNIL R5 @@ -825,7 +866,7 @@ be_local_closure(class_Tasmota_try_rule, /* name */ 0x78160004, // 0008 JMPF R5 #000E 0x5C140600, // 0009 MOVE R5 R3 0x5C180800, // 000A MOVE R6 R4 - 0x881C0501, // 000B GETMBR R7 R2 K1 + 0x881C054F, // 000B GETMBR R7 R2 K79 0x5C200200, // 000C MOVE R8 R1 0x7C140600, // 000D CALL R5 3 0x50140200, // 000E LDBOOL R5 1 0 @@ -845,25 +886,20 @@ be_local_closure(class_Tasmota_find_op, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(_find_op), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_const_int(2147483647), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_find_op, &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080150, // 0000 GETMET R2 R0 K80 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 - 0x280C0501, // 0003 GE R3 R2 K1 + 0x280C051C, // 0003 GE R3 R2 K28 0x780E0011, // 0004 JMPF R3 #0017 0x540E7FFE, // 0005 LDINT R3 32767 0x2C0C0403, // 0006 AND R3 R2 R3 @@ -871,15 +907,15 @@ be_local_closure(class_Tasmota_find_op, /* name */ 0x3C100404, // 0008 SHR R4 R2 R4 0x60140012, // 0009 GETGBL R5 G18 0x7C140000, // 000A CALL R5 0 - 0x04180702, // 000B SUB R6 R3 K2 - 0x401A0206, // 000C CONNECT R6 K1 R6 + 0x04180705, // 000B SUB R6 R3 K5 + 0x401A3806, // 000C CONNECT R6 K28 R6 0x94180206, // 000D GETIDX R6 R1 R6 0x40180A06, // 000E CONNECT R6 R5 R6 - 0x04180902, // 000F SUB R6 R4 K2 + 0x04180905, // 000F SUB R6 R4 K5 0x40180606, // 0010 CONNECT R6 R3 R6 0x94180206, // 0011 GETIDX R6 R1 R6 0x40180A06, // 0012 CONNECT R6 R5 R6 - 0x40180903, // 0013 CONNECT R6 R4 K3 + 0x40180951, // 0013 CONNECT R6 R4 K81 0x94180206, // 0014 GETIDX R6 R1 R6 0x40180A06, // 0015 CONNECT R6 R5 R6 0x80040A00, // 0016 RET 1 R5 @@ -904,23 +940,20 @@ be_local_closure(class_Tasmota_remove_cmd, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_ccmd), - /* K1 */ be_nested_str(remove), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_remove_cmd, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080125, // 0000 GETMBR R2 R0 K37 0x780A0003, // 0001 JMPF R2 #0006 - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x88080125, // 0002 GETMBR R2 R0 K37 + 0x8C080552, // 0003 GETMET R2 R2 K82 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x80000000, // 0006 RET 0 @@ -937,24 +970,20 @@ be_local_closure(class_Tasmota_gc, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(gc), - /* K1 */ be_nested_str(collect), - /* K2 */ be_nested_str(allocated), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_gc, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 + 0xA4063600, // 0000 IMPORT R1 K27 + 0x8C080353, // 0001 GETMET R2 R1 K83 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x8C080354, // 0003 GETMET R2 R1 K84 0x7C080200, // 0004 CALL R2 1 0x80040400, // 0005 RET 1 R2 }) @@ -970,24 +999,19 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(toupper), - /* K3 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_find_list_i, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x8C140702, // 0002 GETMET R5 R3 K2 + 0xA40EAA00, // 0000 IMPORT R3 K85 + 0x58100056, // 0001 LDCONST R4 K86 + 0x8C140757, // 0002 GETMET R5 R3 K87 0x5C1C0400, // 0003 MOVE R7 R2 0x7C140400, // 0004 CALL R5 2 0x6018000C, // 0005 GETGBL R6 G12 @@ -995,13 +1019,13 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ 0x7C180200, // 0007 CALL R6 1 0x14180806, // 0008 LT R6 R4 R6 0x781A0007, // 0009 JMPF R6 #0012 - 0x8C180702, // 000A GETMET R6 R3 K2 + 0x8C180757, // 000A GETMET R6 R3 K87 0x94200204, // 000B GETIDX R8 R1 R4 0x7C180400, // 000C CALL R6 2 0x1C180C05, // 000D EQ R6 R6 R5 0x781A0000, // 000E JMPF R6 #0010 0x80040800, // 000F RET 1 R4 - 0x00100903, // 0010 ADD R4 R4 K3 + 0x00100905, // 0010 ADD R4 R4 K5 0x7001FFF2, // 0011 JMP #0005 0x4C180000, // 0012 LDNIL R6 0x80040C00, // 0013 RET 1 R6 @@ -1018,32 +1042,28 @@ be_local_closure(class_Tasmota_remove_fast_loop, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_fl), - /* K1 */ be_nested_str(find), - /* K2 */ be_nested_str(remove), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_remove_fast_loop, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080158, // 0000 GETMBR R2 R0 K88 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x8C080501, // 0004 GETMET R2 R2 K1 + 0x88080158, // 0003 GETMBR R2 R0 K88 + 0x8C08050E, // 0004 GETMET R2 R2 K14 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 0x4C0C0000, // 0007 LDNIL R3 0x200C0403, // 0008 NE R3 R2 R3 0x780E0003, // 0009 JMPF R3 #000E - 0x880C0100, // 000A GETMBR R3 R0 K0 - 0x8C0C0702, // 000B GETMET R3 R3 K2 + 0x880C0158, // 000A GETMBR R3 R0 K88 + 0x8C0C0752, // 000B GETMET R3 R3 K82 0x5C140400, // 000C MOVE R5 R2 0x7C0C0400, // 000D CALL R3 2 0x80000000, // 000E RET 0 @@ -1060,71 +1080,58 @@ be_local_closure(class_Tasmota_exec_rules, /* name */ be_nested_proto( 14, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(cmd_res), - /* K1 */ be_nested_str(_rules), - /* K2 */ be_nested_str(json), - /* K3 */ be_nested_str(load), - /* K4 */ be_nested_str(log), - /* K5 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), - /* K6 */ be_const_int(3), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str(try_rule), - /* K9 */ be_nested_str(trig), - /* K10 */ be_nested_str(f), - /* K11 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_exec_rules, &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x8810014A, // 0001 GETMBR R4 R0 K74 0x74120002, // 0002 JMPT R4 #0006 0x4C100000, // 0003 LDNIL R4 0x20100604, // 0004 NE R4 R3 R4 0x78120029, // 0005 JMPF R4 #0030 - 0xA4120400, // 0006 IMPORT R4 K2 + 0xA4124C00, // 0006 IMPORT R4 K38 0x4C140000, // 0007 LDNIL R5 0x90020005, // 0008 SETMBR R0 K0 R5 0x50140000, // 0009 LDBOOL R5 0 0 - 0x8C180903, // 000A GETMET R6 R4 K3 + 0x8C180927, // 000A GETMET R6 R4 K39 0x5C200200, // 000B MOVE R8 R1 0x7C180400, // 000C CALL R6 2 0x4C1C0000, // 000D LDNIL R7 0x1C1C0C07, // 000E EQ R7 R6 R7 0x781E0004, // 000F JMPF R7 #0015 - 0x8C1C0104, // 0010 GETMET R7 R0 K4 - 0x00260A01, // 0011 ADD R9 K5 R1 - 0x58280006, // 0012 LDCONST R10 K6 + 0x8C1C0159, // 0010 GETMET R7 R0 K89 + 0x0026B401, // 0011 ADD R9 K90 R1 + 0x5828005B, // 0012 LDCONST R10 K91 0x7C1C0600, // 0013 CALL R7 3 0x5C180200, // 0014 MOVE R6 R1 0x780A0014, // 0015 JMPF R2 #002B - 0x881C0101, // 0016 GETMBR R7 R0 K1 + 0x881C014A, // 0016 GETMBR R7 R0 K74 0x781E0012, // 0017 JMPF R7 #002B - 0x581C0007, // 0018 LDCONST R7 K7 + 0x581C001C, // 0018 LDCONST R7 K28 0x6020000C, // 0019 GETGBL R8 G12 - 0x88240101, // 001A GETMBR R9 R0 K1 + 0x8824014A, // 001A GETMBR R9 R0 K74 0x7C200200, // 001B CALL R8 1 0x14200E08, // 001C LT R8 R7 R8 0x7822000C, // 001D JMPF R8 #002B - 0x88200101, // 001E GETMBR R8 R0 K1 + 0x8820014A, // 001E GETMBR R8 R0 K74 0x94201007, // 001F GETIDX R8 R8 R7 - 0x8C240108, // 0020 GETMET R9 R0 K8 + 0x8C24015C, // 0020 GETMET R9 R0 K92 0x5C2C0C00, // 0021 MOVE R11 R6 - 0x88301109, // 0022 GETMBR R12 R8 K9 - 0x8834110A, // 0023 GETMBR R13 R8 K10 + 0x88301131, // 0022 GETMBR R12 R8 K49 + 0x88341134, // 0023 GETMBR R13 R8 K52 0x7C240800, // 0024 CALL R9 4 0x74260001, // 0025 JMPT R9 #0028 0x74160000, // 0026 JMPT R5 #0028 0x50140001, // 0027 LDBOOL R5 0 1 0x50140200, // 0028 LDBOOL R5 1 0 - 0x001C0F0B, // 0029 ADD R7 R7 K11 + 0x001C0F5D, // 0029 ADD R7 R7 K93 0x7001FFED, // 002A JMP #0019 0x4C1C0000, // 002B LDNIL R7 0x201C0607, // 002C NE R7 R3 R7 @@ -1146,48 +1153,39 @@ be_local_closure(class_Tasmota_run_deferred, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(_timers), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(size), - /* K3 */ be_nested_str(time_reached), - /* K4 */ be_nested_str(trig), - /* K5 */ be_nested_str(f), - /* K6 */ be_nested_str(remove), - /* K7 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_run_deferred, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040136, // 0000 GETMBR R1 R0 K54 0x78060015, // 0001 JMPF R1 #0018 - 0x58040001, // 0002 LDCONST R1 K1 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x8C080502, // 0004 GETMET R2 R2 K2 + 0x5804001C, // 0002 LDCONST R1 K28 + 0x88080136, // 0003 GETMBR R2 R0 K54 + 0x8C080530, // 0004 GETMET R2 R2 K48 0x7C080200, // 0005 CALL R2 1 0x14080202, // 0006 LT R2 R1 R2 0x780A000F, // 0007 JMPF R2 #0018 - 0x88080100, // 0008 GETMBR R2 R0 K0 + 0x88080136, // 0008 GETMBR R2 R0 K54 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C0C0103, // 000A GETMET R3 R0 K3 - 0x88140504, // 000B GETMBR R5 R2 K4 + 0x8C0C0133, // 000A GETMET R3 R0 K51 + 0x88140531, // 000B GETMBR R5 R2 K49 0x7C0C0400, // 000C CALL R3 2 0x780E0007, // 000D JMPF R3 #0016 - 0x880C0505, // 000E GETMBR R3 R2 K5 - 0x88100100, // 000F GETMBR R4 R0 K0 - 0x8C100906, // 0010 GETMET R4 R4 K6 + 0x880C0534, // 000E GETMBR R3 R2 K52 + 0x88100136, // 000F GETMBR R4 R0 K54 + 0x8C100952, // 0010 GETMET R4 R4 K82 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x5C100600, // 0013 MOVE R4 R3 0x7C100000, // 0014 CALL R4 0 0x70020000, // 0015 JMP #0017 - 0x00040307, // 0016 ADD R1 R1 K7 + 0x0004035D, // 0016 ADD R1 R1 K93 0x7001FFEA, // 0017 JMP #0003 0x80000000, // 0018 RET 0 }) @@ -1203,54 +1201,39 @@ be_local_closure(class_Tasmota_compile, /* name */ be_nested_proto( 12, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(endswith), - /* K2 */ be_nested_str(_X2Ebe), - /* K3 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension), - /* K4 */ be_nested_str(find), - /* K5 */ be_nested_str(_X23), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive), - /* K8 */ be_nested_str(file), - /* K9 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file), - /* K10 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29), - /* K11 */ be_nested_str(c), - /* K12 */ be_nested_str(save), - /* K13 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_compile, &be_const_str_solidified, ( &(const binstruction[84]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0xA40AAA00, // 0000 IMPORT R2 K85 + 0x8C0C055E, // 0001 GETMET R3 R2 K94 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 + 0x5818005F, // 0003 LDCONST R6 K95 0x7C0C0600, // 0004 CALL R3 3 0x740E0007, // 0005 JMPT R3 #000E 0x600C0001, // 0006 GETGBL R3 G1 0x60100018, // 0007 GETGBL R4 G24 - 0x58140003, // 0008 LDCONST R5 K3 + 0x58140060, // 0008 LDCONST R5 K96 0x5C180200, // 0009 MOVE R6 R1 0x7C100400, // 000A CALL R4 2 0x7C0C0200, // 000B CALL R3 1 0x500C0000, // 000C LDBOOL R3 0 0 0x80040600, // 000D RET 1 R3 - 0x8C0C0504, // 000E GETMET R3 R2 K4 + 0x8C0C050E, // 000E GETMET R3 R2 K14 0x5C140200, // 000F MOVE R5 R1 - 0x58180005, // 0010 LDCONST R6 K5 + 0x58180061, // 0010 LDCONST R6 K97 0x7C0C0600, // 0011 CALL R3 3 - 0x240C0706, // 0012 GT R3 R3 K6 + 0x240C071C, // 0012 GT R3 R3 K28 0x780E0006, // 0013 JMPF R3 #001B 0x600C0001, // 0014 GETGBL R3 G1 0x60100018, // 0015 GETGBL R4 G24 - 0x58140007, // 0016 LDCONST R5 K7 + 0x58140062, // 0016 LDCONST R5 K98 0x7C100200, // 0017 CALL R4 1 0x7C0C0200, // 0018 CALL R3 1 0x500C0000, // 0019 LDBOOL R3 0 0 @@ -1259,7 +1242,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0xA8020011, // 001C EXBLK 0 #002F 0x6010000D, // 001D GETGBL R4 G13 0x5C140200, // 001E MOVE R5 R1 - 0x58180008, // 001F LDCONST R6 K8 + 0x58180063, // 001F LDCONST R6 K99 0x7C100400, // 0020 CALL R4 2 0x5C0C0800, // 0021 MOVE R3 R4 0x4C100000, // 0022 LDNIL R4 @@ -1267,7 +1250,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x78120007, // 0024 JMPF R4 #002D 0x60100001, // 0025 GETGBL R4 G1 0x60140018, // 0026 GETGBL R5 G24 - 0x58180009, // 0027 LDCONST R6 K9 + 0x58180064, // 0027 LDCONST R6 K100 0x7C140200, // 0028 CALL R5 1 0x7C100200, // 0029 CALL R4 1 0x50100000, // 002A LDBOOL R4 0 0 @@ -1279,7 +1262,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x7002000A, // 0030 JMP #003C 0x60180001, // 0031 GETGBL R6 G1 0x601C0018, // 0032 GETGBL R7 G24 - 0x5820000A, // 0033 LDCONST R8 K10 + 0x58200065, // 0033 LDCONST R8 K101 0x5C240200, // 0034 MOVE R9 R1 0x5C280800, // 0035 MOVE R10 R4 0x5C2C0A00, // 0036 MOVE R11 R5 @@ -1289,9 +1272,9 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x80040C00, // 003A RET 1 R6 0x70020000, // 003B JMP #003D 0xB0080000, // 003C RAISE 2 R0 R0 - 0x0010030B, // 003D ADD R4 R1 K11 + 0x00100366, // 003D ADD R4 R1 K102 0xA8020005, // 003E EXBLK 0 #0045 - 0x8C14010C, // 003F GETMET R5 R0 K12 + 0x8C140124, // 003F GETMET R5 R0 K36 0x5C1C0800, // 0040 MOVE R7 R4 0x5C200600, // 0041 MOVE R8 R3 0x7C140600, // 0042 CALL R5 3 @@ -1301,7 +1284,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x70020009, // 0046 JMP #0051 0x60180001, // 0047 GETGBL R6 G1 0x601C0018, // 0048 GETGBL R7 G24 - 0x5820000D, // 0049 LDCONST R8 K13 + 0x58200067, // 0049 LDCONST R8 K103 0x5C240800, // 004A MOVE R9 R4 0x5C280A00, // 004B MOVE R10 R5 0x7C1C0600, // 004C CALL R7 3 @@ -1325,35 +1308,28 @@ be_local_closure(class_Tasmota_remove_timer, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(_timers), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(size), - /* K3 */ be_nested_str(id), - /* K4 */ be_nested_str(remove), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_remove_timer, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080136, // 0000 GETMBR R2 R0 K54 0x780A000E, // 0001 JMPF R2 #0011 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x8C100502, // 0003 GETMET R4 R2 K2 + 0x580C001C, // 0002 LDCONST R3 K28 + 0x8C100530, // 0003 GETMET R4 R2 K48 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120009, // 0006 JMPF R4 #0011 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x88100903, // 0008 GETMBR R4 R4 K3 + 0x8810093D, // 0008 GETMBR R4 R4 K61 0x1C100801, // 0009 EQ R4 R4 R1 0x78120003, // 000A JMPF R4 #000F - 0x8C100504, // 000B GETMET R4 R2 K4 + 0x8C100552, // 000B GETMET R4 R2 K82 0x5C180600, // 000C MOVE R6 R3 0x7C100400, // 000D CALL R4 2 0x70020000, // 000E JMP #0010 @@ -1373,49 +1349,41 @@ be_local_closure(class_Tasmota_remove_rule, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(_rules), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(trig), - /* K3 */ be_nested_str(rule), - /* K4 */ be_nested_str(id), - /* K5 */ be_nested_str(remove), - /* K6 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_remove_rule, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C014A, // 0000 GETMBR R3 R0 K74 0x780E0017, // 0001 JMPF R3 #001A - 0x580C0001, // 0002 LDCONST R3 K1 + 0x580C001C, // 0002 LDCONST R3 K28 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140100, // 0004 GETMBR R5 R0 K0 + 0x8814014A, // 0004 GETMBR R5 R0 K74 0x7C100200, // 0005 CALL R4 1 0x14100604, // 0006 LT R4 R3 R4 0x78120011, // 0007 JMPF R4 #001A - 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x8810014A, // 0008 GETMBR R4 R0 K74 0x94100803, // 0009 GETIDX R4 R4 R3 - 0x88100902, // 000A GETMBR R4 R4 K2 - 0x88100903, // 000B GETMBR R4 R4 K3 + 0x88100931, // 000A GETMBR R4 R4 K49 + 0x88100919, // 000B GETMBR R4 R4 K25 0x1C100801, // 000C EQ R4 R4 R1 0x78120009, // 000D JMPF R4 #0018 - 0x88100100, // 000E GETMBR R4 R0 K0 + 0x8810014A, // 000E GETMBR R4 R0 K74 0x94100803, // 000F GETIDX R4 R4 R3 - 0x88100904, // 0010 GETMBR R4 R4 K4 + 0x8810093D, // 0010 GETMBR R4 R4 K61 0x1C100802, // 0011 EQ R4 R4 R2 0x78120004, // 0012 JMPF R4 #0018 - 0x88100100, // 0013 GETMBR R4 R0 K0 - 0x8C100905, // 0014 GETMET R4 R4 K5 + 0x8810014A, // 0013 GETMBR R4 R0 K74 + 0x8C100952, // 0014 GETMET R4 R4 K82 0x5C180600, // 0015 MOVE R6 R3 0x7C100400, // 0016 CALL R4 2 0x70020000, // 0017 JMP #0019 - 0x000C0706, // 0018 ADD R3 R3 K6 + 0x000C0705, // 0018 ADD R3 R3 K5 0x7001FFE8, // 0019 JMP #0003 0x80000000, // 001A RET 0 }) @@ -1431,66 +1399,53 @@ be_local_closure(class_Tasmota_exec_tele, /* name */ be_nested_proto( 12, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(_rules), - /* K1 */ be_nested_str(json), - /* K2 */ be_nested_str(load), - /* K3 */ be_nested_str(log), - /* K4 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str(Tele), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str(try_rule), - /* K9 */ be_nested_str(trig), - /* K10 */ be_nested_str(f), - /* K11 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_exec_tele, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808014A, // 0000 GETMBR R2 R0 K74 0x780A0024, // 0001 JMPF R2 #0027 - 0xA40A0200, // 0002 IMPORT R2 K1 - 0x8C0C0502, // 0003 GETMET R3 R2 K2 + 0xA40A4C00, // 0002 IMPORT R2 K38 + 0x8C0C0527, // 0003 GETMET R3 R2 K39 0x5C140200, // 0004 MOVE R5 R1 0x7C0C0400, // 0005 CALL R3 2 0x50100000, // 0006 LDBOOL R4 0 0 0x4C140000, // 0007 LDNIL R5 0x1C140605, // 0008 EQ R5 R3 R5 0x78160004, // 0009 JMPF R5 #000F - 0x8C140103, // 000A GETMET R5 R0 K3 - 0x001E0801, // 000B ADD R7 K4 R1 - 0x58200005, // 000C LDCONST R8 K5 + 0x8C140159, // 000A GETMET R5 R0 K89 + 0x001EB401, // 000B ADD R7 K90 R1 + 0x5820005B, // 000C LDCONST R8 K91 0x7C140600, // 000D CALL R5 3 0x5C0C0200, // 000E MOVE R3 R1 0x60140013, // 000F GETGBL R5 G19 0x7C140000, // 0010 CALL R5 0 - 0x98160C03, // 0011 SETIDX R5 K6 R3 + 0x9816D003, // 0011 SETIDX R5 K104 R3 0x5C0C0A00, // 0012 MOVE R3 R5 - 0x58140007, // 0013 LDCONST R5 K7 + 0x5814001C, // 0013 LDCONST R5 K28 0x6018000C, // 0014 GETGBL R6 G12 - 0x881C0100, // 0015 GETMBR R7 R0 K0 + 0x881C014A, // 0015 GETMBR R7 R0 K74 0x7C180200, // 0016 CALL R6 1 0x14180A06, // 0017 LT R6 R5 R6 0x781A000C, // 0018 JMPF R6 #0026 - 0x88180100, // 0019 GETMBR R6 R0 K0 + 0x8818014A, // 0019 GETMBR R6 R0 K74 0x94180C05, // 001A GETIDX R6 R6 R5 - 0x8C1C0108, // 001B GETMET R7 R0 K8 + 0x8C1C015C, // 001B GETMET R7 R0 K92 0x5C240600, // 001C MOVE R9 R3 - 0x88280D09, // 001D GETMBR R10 R6 K9 - 0x882C0D0A, // 001E GETMBR R11 R6 K10 + 0x88280D31, // 001D GETMBR R10 R6 K49 + 0x882C0D34, // 001E GETMBR R11 R6 K52 0x7C1C0800, // 001F CALL R7 4 0x741E0001, // 0020 JMPT R7 #0023 0x74120000, // 0021 JMPT R4 #0023 0x50100001, // 0022 LDBOOL R4 0 1 0x50100200, // 0023 LDBOOL R4 1 0 - 0x00140B0B, // 0024 ADD R5 R5 K11 + 0x00140B5D, // 0024 ADD R5 R5 K93 0x7001FFED, // 0025 JMP #0014 0x80040800, // 0026 RET 1 R4 0x50080000, // 0027 LDBOOL R2 0 0 @@ -1508,41 +1463,35 @@ be_local_closure(class_Tasmota_add_cmd, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(check_not_method), - /* K1 */ be_nested_str(_ccmd), - /* K2 */ be_nested_str(function), - /* K3 */ be_nested_str(value_error), - /* K4 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_add_cmd, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C0135, // 0000 GETMET R3 R0 K53 0x5C140400, // 0001 MOVE R5 R2 0x7C0C0400, // 0002 CALL R3 2 - 0x880C0101, // 0003 GETMBR R3 R0 K1 + 0x880C0125, // 0003 GETMBR R3 R0 K37 0x4C100000, // 0004 LDNIL R4 0x1C0C0604, // 0005 EQ R3 R3 R4 0x780E0002, // 0006 JMPF R3 #000A 0x600C0013, // 0007 GETGBL R3 G19 0x7C0C0000, // 0008 CALL R3 0 - 0x90020203, // 0009 SETMBR R0 K1 R3 + 0x90024A03, // 0009 SETMBR R0 K37 R3 0x600C0004, // 000A GETGBL R3 G4 0x5C100400, // 000B MOVE R4 R2 0x7C0C0200, // 000C CALL R3 1 - 0x1C0C0702, // 000D EQ R3 R3 K2 + 0x1C0C0708, // 000D EQ R3 R3 K8 0x780E0002, // 000E JMPF R3 #0012 - 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x880C0125, // 000F GETMBR R3 R0 K37 0x980C0202, // 0010 SETIDX R3 R1 R2 0x70020000, // 0011 JMP #0013 - 0xB0060704, // 0012 RAISE 1 K3 K4 + 0xB006774D, // 0012 RAISE 1 K59 K77 0x80000000, // 0013 RET 0 }) ) @@ -1557,52 +1506,46 @@ be_local_closure(class_Tasmota_wire_scan, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(i2c_enabled), - /* K1 */ be_nested_str(wire1), - /* K2 */ be_nested_str(enabled), - /* K3 */ be_nested_str(detect), - /* K4 */ be_nested_str(wire2), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_wire_scan, &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ 0x4C0C0000, // 0000 LDNIL R3 0x200C0403, // 0001 NE R3 R2 R3 0x780E0005, // 0002 JMPF R3 #0009 - 0x8C0C0100, // 0003 GETMET R3 R0 K0 + 0x8C0C0169, // 0003 GETMET R3 R0 K105 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x740E0001, // 0006 JMPT R3 #0009 0x4C0C0000, // 0007 LDNIL R3 0x80040600, // 0008 RET 1 R3 - 0x880C0101, // 0009 GETMBR R3 R0 K1 - 0x8C0C0702, // 000A GETMET R3 R3 K2 + 0x880C016A, // 0009 GETMBR R3 R0 K106 + 0x8C0C076B, // 000A GETMET R3 R3 K107 0x7C0C0200, // 000B CALL R3 1 0x780E0006, // 000C JMPF R3 #0014 - 0x880C0101, // 000D GETMBR R3 R0 K1 - 0x8C0C0703, // 000E GETMET R3 R3 K3 + 0x880C016A, // 000D GETMBR R3 R0 K106 + 0x8C0C076C, // 000E GETMET R3 R3 K108 0x5C140200, // 000F MOVE R5 R1 0x7C0C0400, // 0010 CALL R3 2 0x780E0001, // 0011 JMPF R3 #0014 - 0x880C0101, // 0012 GETMBR R3 R0 K1 + 0x880C016A, // 0012 GETMBR R3 R0 K106 0x80040600, // 0013 RET 1 R3 - 0x880C0104, // 0014 GETMBR R3 R0 K4 - 0x8C0C0702, // 0015 GETMET R3 R3 K2 + 0x880C016D, // 0014 GETMBR R3 R0 K109 + 0x8C0C076B, // 0015 GETMET R3 R3 K107 0x7C0C0200, // 0016 CALL R3 1 0x780E0006, // 0017 JMPF R3 #001F - 0x880C0104, // 0018 GETMBR R3 R0 K4 - 0x8C0C0703, // 0019 GETMET R3 R3 K3 + 0x880C016D, // 0018 GETMBR R3 R0 K109 + 0x8C0C076C, // 0019 GETMET R3 R3 K108 0x5C140200, // 001A MOVE R5 R1 0x7C0C0400, // 001B CALL R3 2 0x780E0001, // 001C JMPF R3 #001F - 0x880C0104, // 001D GETMBR R3 R0 K4 + 0x880C016D, // 001D GETMBR R3 R0 K109 0x80040600, // 001E RET 1 R3 0x4C0C0000, // 001F LDNIL R3 0x80040600, // 0020 RET 1 R3 @@ -1619,24 +1562,18 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(toupper), - /* K2 */ be_nested_str(keys), - /* K3 */ be_nested_str(_X3F), - /* K4 */ be_nested_str(stop_iteration), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_find_key_i, &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100701, // 0001 GETMET R4 R3 K1 + 0xA40EAA00, // 0000 IMPORT R3 K85 + 0x8C100757, // 0001 GETMET R4 R3 K87 0x5C180400, // 0002 MOVE R6 R2 0x7C100400, // 0003 CALL R4 2 0x6014000F, // 0004 GETGBL R5 G15 @@ -1645,23 +1582,23 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ 0x7C140400, // 0007 CALL R5 2 0x78160013, // 0008 JMPF R5 #001D 0x60140010, // 0009 GETGBL R5 G16 - 0x8C180302, // 000A GETMET R6 R1 K2 + 0x8C18036E, // 000A GETMET R6 R1 K110 0x7C180200, // 000B CALL R6 1 0x7C140200, // 000C CALL R5 1 0xA802000B, // 000D EXBLK 0 #001A 0x5C180A00, // 000E MOVE R6 R5 0x7C180000, // 000F CALL R6 0 - 0x8C1C0701, // 0010 GETMET R7 R3 K1 + 0x8C1C0757, // 0010 GETMET R7 R3 K87 0x5C240C00, // 0011 MOVE R9 R6 0x7C1C0400, // 0012 CALL R7 2 0x1C1C0E04, // 0013 EQ R7 R7 R4 0x741E0001, // 0014 JMPT R7 #0017 - 0x1C1C0503, // 0015 EQ R7 R2 K3 + 0x1C1C056F, // 0015 EQ R7 R2 K111 0x781E0001, // 0016 JMPF R7 #0019 0xA8040001, // 0017 EXBLK 1 1 0x80040C00, // 0018 RET 1 R6 0x7001FFF3, // 0019 JMP #000E - 0x58140004, // 001A LDCONST R5 K4 + 0x58140070, // 001A LDCONST R5 K112 0xAC140200, // 001B CATCH R5 1 0 0xB0080000, // 001C RAISE 2 R0 R0 0x80000000, // 001D RET 0 @@ -1678,60 +1615,42 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(split), - /* K2 */ be_nested_str(_X2F), - /* K3 */ be_nested_str(pop), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str(index_X2Ehtml), - /* K6 */ be_nested_str(webclient), - /* K7 */ be_nested_str(set_follow_redirects), - /* K8 */ be_nested_str(begin), - /* K9 */ be_nested_str(GET), - /* K10 */ be_nested_str(status_X3A_X20), - /* K11 */ be_nested_str(connection_error), - /* K12 */ be_nested_str(write_file), - /* K13 */ be_nested_str(close), - /* K14 */ be_nested_str(log), - /* K15 */ be_nested_str(BRY_X3A_X20Fetched_X20), - /* K16 */ be_const_int(3), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_urlfetch, &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ 0x4C0C0000, // 0000 LDNIL R3 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E000D, // 0002 JMPF R3 #0011 - 0xA40E0000, // 0003 IMPORT R3 K0 - 0x8C100701, // 0004 GETMET R4 R3 K1 + 0xA40EAA00, // 0003 IMPORT R3 K85 + 0x8C100771, // 0004 GETMET R4 R3 K113 0x5C180200, // 0005 MOVE R6 R1 - 0x581C0002, // 0006 LDCONST R7 K2 + 0x581C0072, // 0006 LDCONST R7 K114 0x7C100600, // 0007 CALL R4 3 - 0x8C100903, // 0008 GETMET R4 R4 K3 + 0x8C10090F, // 0008 GETMET R4 R4 K15 0x7C100200, // 0009 CALL R4 1 0x5C080800, // 000A MOVE R2 R4 0x6010000C, // 000B GETGBL R4 G12 0x5C140400, // 000C MOVE R5 R2 0x7C100200, // 000D CALL R4 1 - 0x1C100904, // 000E EQ R4 R4 K4 + 0x1C10091C, // 000E EQ R4 R4 K28 0x78120000, // 000F JMPF R4 #0011 - 0x58080005, // 0010 LDCONST R2 K5 - 0xB80E0C00, // 0011 GETNGBL R3 K6 + 0x58080073, // 0010 LDCONST R2 K115 + 0xB80EE800, // 0011 GETNGBL R3 K116 0x7C0C0000, // 0012 CALL R3 0 - 0x8C100707, // 0013 GETMET R4 R3 K7 + 0x8C100775, // 0013 GETMET R4 R3 K117 0x50180200, // 0014 LDBOOL R6 1 0 0x7C100400, // 0015 CALL R4 2 - 0x8C100708, // 0016 GETMET R4 R3 K8 + 0x8C100776, // 0016 GETMET R4 R3 K118 0x5C180200, // 0017 MOVE R6 R1 0x7C100400, // 0018 CALL R4 2 - 0x8C100709, // 0019 GETMET R4 R3 K9 + 0x8C100777, // 0019 GETMET R4 R3 K119 0x7C100200, // 001A CALL R4 1 0x541600C7, // 001B LDINT R5 200 0x20140805, // 001C NE R5 R4 R5 @@ -1739,19 +1658,19 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0x60140008, // 001E GETGBL R5 G8 0x5C180800, // 001F MOVE R6 R4 0x7C140200, // 0020 CALL R5 1 - 0x00161405, // 0021 ADD R5 K10 R5 - 0xB0061605, // 0022 RAISE 1 K11 R5 - 0x8C14070C, // 0023 GETMET R5 R3 K12 + 0x0016F005, // 0021 ADD R5 K120 R5 + 0xB006F205, // 0022 RAISE 1 K121 R5 + 0x8C14077A, // 0023 GETMET R5 R3 K122 0x5C1C0400, // 0024 MOVE R7 R2 0x7C140400, // 0025 CALL R5 2 - 0x8C18070D, // 0026 GETMET R6 R3 K13 + 0x8C18077B, // 0026 GETMET R6 R3 K123 0x7C180200, // 0027 CALL R6 1 - 0x8C18010E, // 0028 GETMET R6 R0 K14 + 0x8C180159, // 0028 GETMET R6 R0 K89 0x60200008, // 0029 GETGBL R8 G8 0x5C240A00, // 002A MOVE R9 R5 0x7C200200, // 002B CALL R8 1 - 0x00221E08, // 002C ADD R8 K15 R8 - 0x58240010, // 002D LDCONST R9 K16 + 0x0022F808, // 002C ADD R8 K124 R8 + 0x5824005B, // 002D LDCONST R9 K91 0x7C180600, // 002E CALL R6 3 0x80040800, // 002F RET 1 R4 }) @@ -1767,25 +1686,21 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_fl), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_fast_loop, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040158, // 0000 GETMBR R1 R0 K88 0x5C080200, // 0001 MOVE R2 R1 0x740A0000, // 0002 JMPT R2 #0004 0x80000400, // 0003 RET 0 - 0x58080001, // 0004 LDCONST R2 K1 + 0x58080056, // 0004 LDCONST R2 K86 0x600C000C, // 0005 GETGBL R3 G12 0x5C100200, // 0006 MOVE R4 R1 0x7C0C0200, // 0007 CALL R3 1 @@ -1793,7 +1708,7 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ 0x780E0003, // 0009 JMPF R3 #000E 0x940C0202, // 000A GETIDX R3 R1 R2 0x7C0C0000, // 000B CALL R3 0 - 0x00080502, // 000C ADD R2 R2 K2 + 0x0008055D, // 000C ADD R2 R2 K93 0x7001FFF6, // 000D JMP #0005 0x80000000, // 000E RET 0 }) @@ -1809,21 +1724,18 @@ be_local_closure(class_Tasmota_gen_cb, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(cb), - /* K1 */ be_nested_str(gen_cb), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_gen_cb, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0xA40AFA00, // 0000 IMPORT R2 K125 + 0x8C0C057E, // 0001 GETMET R3 R2 K126 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x80040600, // 0004 RET 1 R3 @@ -1840,36 +1752,27 @@ be_local_closure(class_Tasmota_time_str, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(time_dump), - /* K1 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d), - /* K2 */ be_nested_str(year), - /* K3 */ be_nested_str(month), - /* K4 */ be_nested_str(day), - /* K5 */ be_nested_str(hour), - /* K6 */ be_nested_str(min), - /* K7 */ be_nested_str(sec), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_time_str, &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08017F, // 0000 GETMET R2 R0 K127 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x600C0018, // 0003 GETGBL R3 G24 - 0x58100001, // 0004 LDCONST R4 K1 - 0x94140502, // 0005 GETIDX R5 R2 K2 - 0x94180503, // 0006 GETIDX R6 R2 K3 - 0x941C0504, // 0007 GETIDX R7 R2 K4 - 0x94200505, // 0008 GETIDX R8 R2 K5 - 0x94240506, // 0009 GETIDX R9 R2 K6 - 0x94280507, // 000A GETIDX R10 R2 K7 + 0x58100080, // 0004 LDCONST R4 K128 + 0x94140581, // 0005 GETIDX R5 R2 K129 + 0x94180582, // 0006 GETIDX R6 R2 K130 + 0x941C0583, // 0007 GETIDX R7 R2 K131 + 0x94200584, // 0008 GETIDX R8 R2 K132 + 0x94240585, // 0009 GETIDX R9 R2 K133 + 0x94280586, // 000A GETIDX R10 R2 K134 0x7C0C0E00, // 000B CALL R3 7 0x80040600, // 000C RET 1 R3 }) @@ -1885,46 +1788,36 @@ be_local_closure(class_Tasmota_add_fast_loop, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(check_not_method), - /* K1 */ be_nested_str(_fl), - /* K2 */ be_nested_str(function), - /* K3 */ be_nested_str(value_error), - /* K4 */ be_nested_str(argument_X20must_X20be_X20a_X20function), - /* K5 */ be_nested_str(global), - /* K6 */ be_nested_str(fast_loop_enabled), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str(push), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_add_fast_loop, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080135, // 0000 GETMET R2 R0 K53 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 - 0x88080101, // 0003 GETMBR R2 R0 K1 + 0x88080158, // 0003 GETMBR R2 R0 K88 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0002, // 0006 JMPF R2 #000A 0x60080012, // 0007 GETGBL R2 G18 0x7C080000, // 0008 CALL R2 0 - 0x90020202, // 0009 SETMBR R0 K1 R2 + 0x9002B002, // 0009 SETMBR R0 K88 R2 0x60080004, // 000A GETGBL R2 G4 0x5C0C0200, // 000B MOVE R3 R1 0x7C080200, // 000C CALL R2 1 - 0x20080502, // 000D NE R2 R2 K2 + 0x20080508, // 000D NE R2 R2 K8 0x780A0000, // 000E JMPF R2 #0010 - 0xB0060704, // 000F RAISE 1 K3 K4 - 0x88080105, // 0010 GETMBR R2 R0 K5 - 0x900A0D07, // 0011 SETMBR R2 K6 K7 - 0x88080101, // 0012 GETMBR R2 R0 K1 - 0x8C080508, // 0013 GETMET R2 R2 K8 + 0xB0067787, // 000F RAISE 1 K59 K135 + 0x88080102, // 0010 GETMBR R2 R0 K2 + 0x900B1105, // 0011 SETMBR R2 K136 K5 + 0x88080158, // 0012 GETMBR R2 R0 K88 + 0x8C080537, // 0013 GETMET R2 R2 K55 0x5C100200, // 0014 MOVE R4 R1 0x7C080400, // 0015 CALL R2 2 0x80000000, // 0016 RET 0 @@ -1941,33 +1834,29 @@ be_local_closure(class_Tasmota_get_light, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), - /* K1 */ be_nested_str(light), - /* K2 */ be_nested_str(get), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_get_light, &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60080001, // 0000 GETGBL R2 G1 - 0x580C0000, // 0001 LDCONST R3 K0 + 0x580C0089, // 0001 LDCONST R3 K137 0x7C080200, // 0002 CALL R2 1 - 0xA40A0200, // 0003 IMPORT R2 K1 + 0xA40A5600, // 0003 IMPORT R2 K43 0x4C0C0000, // 0004 LDNIL R3 0x200C0203, // 0005 NE R3 R1 R3 0x780E0004, // 0006 JMPF R3 #000C - 0x8C0C0502, // 0007 GETMET R3 R2 K2 + 0x8C0C051D, // 0007 GETMET R3 R2 K29 0x5C140200, // 0008 MOVE R5 R1 0x7C0C0400, // 0009 CALL R3 2 0x80040600, // 000A RET 1 R3 0x70020002, // 000B JMP #000F - 0x8C0C0502, // 000C GETMET R3 R2 K2 + 0x8C0C051D, // 000C GETMET R3 R2 K29 0x7C0C0200, // 000D CALL R3 1 0x80040600, // 000E RET 1 R3 0x80000000, // 000F RET 0 @@ -1984,43 +1873,36 @@ be_local_closure(class_Tasmota_add_cron, /* name */ be_nested_proto( 13, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(check_not_method), - /* K1 */ be_nested_str(_crons), - /* K2 */ be_nested_str(ccronexpr), - /* K3 */ be_nested_str(next), - /* K4 */ be_nested_str(push), - /* K5 */ be_nested_str(Trigger), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_add_cron, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x8C100135, // 0000 GETMET R4 R0 K53 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x8810012D, // 0003 GETMBR R4 R0 K45 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0xB8120400, // 000A GETNGBL R4 K2 + 0x90025A04, // 0009 SETMBR R0 K45 R4 + 0xB8125C00, // 000A GETNGBL R4 K46 0x60140008, // 000B GETGBL R5 G8 0x5C180200, // 000C MOVE R6 R1 0x7C140200, // 000D CALL R5 1 0x7C100200, // 000E CALL R4 1 - 0x8C140903, // 000F GETMET R5 R4 K3 + 0x8C140932, // 000F GETMET R5 R4 K50 0x7C140200, // 0010 CALL R5 1 - 0x88180101, // 0011 GETMBR R6 R0 K1 - 0x8C180D04, // 0012 GETMET R6 R6 K4 - 0xB8220A00, // 0013 GETNGBL R8 K5 + 0x8818012D, // 0011 GETMBR R6 R0 K45 + 0x8C180D37, // 0012 GETMET R6 R6 K55 + 0xB8227000, // 0013 GETNGBL R8 K56 0x5C240A00, // 0014 MOVE R9 R5 0x5C280400, // 0015 MOVE R10 R2 0x5C2C0600, // 0016 MOVE R11 R3 @@ -2041,20 +1923,13 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ be_nested_proto( 17, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(scale_uint), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(3), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_hs2rgb, &be_const_str_solidified, ( &(const binstruction[68]) { /* code */ @@ -2067,7 +1942,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x541600FE, // 0006 LDINT R5 255 0x541A0167, // 0007 LDINT R6 360 0x10040206, // 0008 MOD R1 R1 R6 - 0x24180500, // 0009 GT R6 R2 K0 + 0x2418051C, // 0009 GT R6 R2 K28 0x781A0031, // 000A JMPF R6 #003D 0x541A003B, // 000B LDINT R6 60 0x0C180206, // 000C DIV R6 R1 R6 @@ -2076,27 +1951,27 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x542200FE, // 000F LDINT R8 255 0x04201002, // 0010 SUB R8 R8 R2 0xB8260200, // 0011 GETNGBL R9 K1 - 0x8C241302, // 0012 GETMET R9 R9 K2 + 0x8C24138A, // 0012 GETMET R9 R9 K138 0x5C2C0E00, // 0013 MOVE R11 R7 - 0x58300000, // 0014 LDCONST R12 K0 + 0x5830001C, // 0014 LDCONST R12 K28 0x5436003B, // 0015 LDINT R13 60 0x543A00FE, // 0016 LDINT R14 255 0x5C3C1000, // 0017 MOVE R15 R8 0x7C240C00, // 0018 CALL R9 6 0xB82A0200, // 0019 GETNGBL R10 K1 - 0x8C281502, // 001A GETMET R10 R10 K2 + 0x8C28158A, // 001A GETMET R10 R10 K138 0x5C300E00, // 001B MOVE R12 R7 - 0x58340000, // 001C LDCONST R13 K0 + 0x5834001C, // 001C LDCONST R13 K28 0x543A003B, // 001D LDINT R14 60 0x5C3C1000, // 001E MOVE R15 R8 0x544200FE, // 001F LDINT R16 255 0x7C280C00, // 0020 CALL R10 6 - 0x1C2C0D00, // 0021 EQ R11 R6 K0 + 0x1C2C0D1C, // 0021 EQ R11 R6 K28 0x782E0002, // 0022 JMPF R11 #0026 0x5C141400, // 0023 MOVE R5 R10 0x5C101000, // 0024 MOVE R4 R8 0x70020016, // 0025 JMP #003D - 0x1C2C0D03, // 0026 EQ R11 R6 K3 + 0x1C2C0D05, // 0026 EQ R11 R6 K5 0x782E0002, // 0027 JMPF R11 #002B 0x5C0C1200, // 0028 MOVE R3 R9 0x5C101000, // 0029 MOVE R4 R8 @@ -2106,7 +1981,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x5C0C1000, // 002D MOVE R3 R8 0x5C101400, // 002E MOVE R4 R10 0x7002000C, // 002F JMP #003D - 0x1C2C0D05, // 0030 EQ R11 R6 K5 + 0x1C2C0D5B, // 0030 EQ R11 R6 K91 0x782E0002, // 0031 JMPF R11 #0035 0x5C0C1000, // 0032 MOVE R3 R8 0x5C141200, // 0033 MOVE R5 R9 @@ -2139,35 +2014,28 @@ be_local_closure(class_Tasmota_remove_cron, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(_crons), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(size), - /* K3 */ be_nested_str(id), - /* K4 */ be_nested_str(remove), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_remove_cron, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808012D, // 0000 GETMBR R2 R0 K45 0x780A000E, // 0001 JMPF R2 #0011 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x8C100502, // 0003 GETMET R4 R2 K2 + 0x580C001C, // 0002 LDCONST R3 K28 + 0x8C100530, // 0003 GETMET R4 R2 K48 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120009, // 0006 JMPF R4 #0011 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x88100903, // 0008 GETMBR R4 R4 K3 + 0x8810093D, // 0008 GETMBR R4 R4 K61 0x1C100801, // 0009 EQ R4 R4 R1 0x78120003, // 000A JMPF R4 #000F - 0x8C100504, // 000B GETMET R4 R2 K4 + 0x8C100552, // 000B GETMET R4 R2 K82 0x5C180600, // 000C MOVE R6 R3 0x7C100400, // 000D CALL R4 2 0x70020000, // 000E JMP #0010 @@ -2187,7 +2055,7 @@ be_local_closure(class_Tasmota_load, /* name */ be_nested_proto( 26, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -2453,28 +2321,7 @@ be_local_closure(class_Tasmota_load, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(path), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(startswith), - /* K4 */ be_nested_str(_X2F), - /* K5 */ be_nested_str(find), - /* K6 */ be_nested_str(_X23), - /* K7 */ be_const_int(1), - /* K8 */ be_const_int(2147483647), - /* K9 */ be_nested_str(_X2E), - /* K10 */ be_nested_str(_X2Ebe), - /* K11 */ be_nested_str(endswith), - /* K12 */ be_nested_str(_X2Ebec), - /* K13 */ be_nested_str(c), - /* K14 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27), - /* K15 */ be_nested_str(exists), - /* K16 */ be_nested_str(wd), - /* K17 */ be_nested_str(), - /* K18 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27), - /* K19 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_load, &be_const_str_solidified, ( &(const binstruction[164]) { /* code */ @@ -2484,72 +2331,72 @@ be_local_closure(class_Tasmota_load, /* name */ 0x84140003, // 0003 CLOSURE R5 P3 0x84180004, // 0004 CLOSURE R6 P4 0x841C0005, // 0005 CLOSURE R7 P5 - 0xA4220000, // 0006 IMPORT R8 K0 - 0xA4260200, // 0007 IMPORT R9 K1 + 0xA422AA00, // 0006 IMPORT R8 K85 + 0xA4271600, // 0007 IMPORT R9 K139 0x6028000C, // 0008 GETGBL R10 G12 0x5C2C0200, // 0009 MOVE R11 R1 0x7C280200, // 000A CALL R10 1 - 0x1C281502, // 000B EQ R10 R10 K2 + 0x1C28151C, // 000B EQ R10 R10 K28 0x782A0002, // 000C JMPF R10 #0010 0x50280000, // 000D LDBOOL R10 0 0 0xA0000000, // 000E CLOSE R0 0x80041400, // 000F RET 1 R10 - 0x8C281103, // 0010 GETMET R10 R8 K3 + 0x8C28118C, // 0010 GETMET R10 R8 K140 0x5C300200, // 0011 MOVE R12 R1 - 0x58340004, // 0012 LDCONST R13 K4 + 0x58340072, // 0012 LDCONST R13 K114 0x7C280600, // 0013 CALL R10 3 0x742A0000, // 0014 JMPT R10 #0016 - 0x00060801, // 0015 ADD R1 K4 R1 - 0x8C281105, // 0016 GETMET R10 R8 K5 + 0x0006E401, // 0015 ADD R1 K114 R1 + 0x8C28110E, // 0016 GETMET R10 R8 K14 0x5C300200, // 0017 MOVE R12 R1 - 0x58340006, // 0018 LDCONST R13 K6 + 0x58340061, // 0018 LDCONST R13 K97 0x7C280600, // 0019 CALL R10 3 - 0x242C1502, // 001A GT R11 R10 K2 + 0x242C151C, // 001A GT R11 R10 K28 0x782E0003, // 001B JMPF R11 #0020 - 0x04301507, // 001C SUB R12 R10 K7 - 0x4032040C, // 001D CONNECT R12 K2 R12 + 0x0430158D, // 001C SUB R12 R10 K141 + 0x4032380C, // 001D CONNECT R12 K28 R12 0x9430020C, // 001E GETIDX R12 R1 R12 0x70020000, // 001F JMP #0021 0x5C300200, // 0020 MOVE R12 R1 0x782E0003, // 0021 JMPF R11 #0026 - 0x00341507, // 0022 ADD R13 R10 K7 - 0x40341B08, // 0023 CONNECT R13 R13 K8 + 0x0034158D, // 0022 ADD R13 R10 K141 + 0x40341B8E, // 0023 CONNECT R13 R13 K142 0x9434020D, // 0024 GETIDX R13 R1 R13 0x70020000, // 0025 JMP #0027 0x5C340200, // 0026 MOVE R13 R1 - 0x8C381105, // 0027 GETMET R14 R8 K5 + 0x8C38110E, // 0027 GETMET R14 R8 K14 0x5C401A00, // 0028 MOVE R16 R13 - 0x58440009, // 0029 LDCONST R17 K9 + 0x5844008F, // 0029 LDCONST R17 K143 0x7C380600, // 002A CALL R14 3 - 0x14381D02, // 002B LT R14 R14 K2 + 0x14381D1C, // 002B LT R14 R14 K28 0x783A0001, // 002C JMPF R14 #002F - 0x0004030A, // 002D ADD R1 R1 K10 - 0x00341B0A, // 002E ADD R13 R13 K10 - 0x8C38110B, // 002F GETMET R14 R8 K11 + 0x0004035F, // 002D ADD R1 R1 K95 + 0x00341B5F, // 002E ADD R13 R13 K95 + 0x8C38115E, // 002F GETMET R14 R8 K94 0x5C401A00, // 0030 MOVE R16 R13 - 0x5844000A, // 0031 LDCONST R17 K10 + 0x5844005F, // 0031 LDCONST R17 K95 0x7C380600, // 0032 CALL R14 3 - 0x8C3C110B, // 0033 GETMET R15 R8 K11 + 0x8C3C115E, // 0033 GETMET R15 R8 K94 0x5C441A00, // 0034 MOVE R17 R13 - 0x5848000C, // 0035 LDCONST R18 K12 + 0x58480090, // 0035 LDCONST R18 K144 0x7C3C0600, // 0036 CALL R15 3 0x783E0001, // 0037 JMPF R15 #003A 0x5C400200, // 0038 MOVE R16 R1 0x70020000, // 0039 JMP #003B - 0x0040030D, // 003A ADD R16 R1 K13 + 0x00400366, // 003A ADD R16 R1 K102 0x5C441C00, // 003B MOVE R17 R14 0x74460007, // 003C JMPT R17 #0045 0x5C441E00, // 003D MOVE R17 R15 0x74460005, // 003E JMPT R17 #0045 0x60440001, // 003F GETGBL R17 G1 - 0x5848000E, // 0040 LDCONST R18 K14 + 0x58480091, // 0040 LDCONST R18 K145 0x7C440200, // 0041 CALL R17 1 0x50440000, // 0042 LDBOOL R17 0 0 0xA0000000, // 0043 CLOSE R0 0x80042200, // 0044 RET 1 R17 0x50440000, // 0045 LDBOOL R17 0 0 0x783E0008, // 0046 JMPF R15 #0050 - 0x8C48130F, // 0047 GETMET R18 R9 K15 + 0x8C481392, // 0047 GETMET R18 R9 K146 0x5C502000, // 0048 MOVE R20 R16 0x7C480400, // 0049 CALL R18 2 0x744A0002, // 004A JMPT R18 #004E @@ -2558,11 +2405,11 @@ be_local_closure(class_Tasmota_load, /* name */ 0x80042400, // 004D RET 1 R18 0x50440200, // 004E LDBOOL R17 1 0 0x70020014, // 004F JMP #0065 - 0x8C48130F, // 0050 GETMET R18 R9 K15 + 0x8C481392, // 0050 GETMET R18 R9 K146 0x5C500200, // 0051 MOVE R20 R1 0x7C480400, // 0052 CALL R18 2 0x784A0007, // 0053 JMPF R18 #005C - 0x8C48130F, // 0054 GETMET R18 R9 K15 + 0x8C481392, // 0054 GETMET R18 R9 K146 0x5C502000, // 0055 MOVE R20 R16 0x7C480400, // 0056 CALL R18 2 0x784A0002, // 0057 JMPF R18 #005B @@ -2570,7 +2417,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x5C4C2000, // 0059 MOVE R19 R16 0x7C480200, // 005A CALL R18 1 0x70020008, // 005B JMP #0065 - 0x8C48130F, // 005C GETMET R18 R9 K15 + 0x8C481392, // 005C GETMET R18 R9 K146 0x5C502000, // 005D MOVE R20 R16 0x7C480400, // 005E CALL R18 2 0x784A0001, // 005F JMPF R18 #0062 @@ -2580,13 +2427,13 @@ be_local_closure(class_Tasmota_load, /* name */ 0xA0000000, // 0063 CLOSE R0 0x80042400, // 0064 RET 1 R18 0x782E0005, // 0065 JMPF R11 #006C - 0x00481906, // 0066 ADD R18 R12 K6 - 0x90022012, // 0067 SETMBR R0 K16 R18 + 0x00481961, // 0066 ADD R18 R12 K97 + 0x90028A12, // 0067 SETMBR R0 K69 R18 0x5C480400, // 0068 MOVE R18 R2 - 0x884C0110, // 0069 GETMBR R19 R0 K16 + 0x884C0145, // 0069 GETMBR R19 R0 K69 0x7C480200, // 006A CALL R18 1 0x70020000, // 006B JMP #006D - 0x90022111, // 006C SETMBR R0 K16 K17 + 0x90028B46, // 006C SETMBR R0 K69 K70 0x4C480000, // 006D LDNIL R18 0x78460025, // 006E JMPF R17 #0095 0x5C4C0800, // 006F MOVE R19 R4 @@ -2598,7 +2445,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x78560007, // 0075 JMPF R21 #007E 0x60540001, // 0076 GETGBL R21 G1 0x60580018, // 0077 GETGBL R22 G24 - 0x585C0012, // 0078 LDCONST R23 K18 + 0x585C0093, // 0078 LDCONST R23 K147 0x5C602000, // 0079 MOVE R24 R16 0x7C580400, // 007A CALL R22 2 0x7C540200, // 007B CALL R21 1 @@ -2609,7 +2456,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x78560007, // 0080 JMPF R21 #0089 0x60540001, // 0081 GETGBL R21 G1 0x60580018, // 0082 GETGBL R22 G24 - 0x585C0013, // 0083 LDCONST R23 K19 + 0x585C0094, // 0083 LDCONST R23 K148 0x5C602000, // 0084 MOVE R24 R16 0x5C642600, // 0085 MOVE R25 R19 0x7C580600, // 0086 CALL R22 3 @@ -2638,7 +2485,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x7C4C0200, // 009D CALL R19 1 0x782E0002, // 009E JMPF R11 #00A2 0x5C500600, // 009F MOVE R20 R3 - 0x00541906, // 00A0 ADD R21 R12 K6 + 0x00541961, // 00A0 ADD R21 R12 K97 0x7C500200, // 00A1 CALL R20 1 0xA0000000, // 00A2 CLOSE R0 0x80042600, // 00A3 RET 1 R19 @@ -2655,45 +2502,34 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ be_nested_proto( 10, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(find), - /* K2 */ be_nested_str(http), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str(resp_cmnd_str), - /* K5 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27), - /* K6 */ be_nested_str(urlfetch), - /* K7 */ be_nested_str(resp_cmnd_failed), - /* K8 */ be_nested_str(tasmota), - /* K9 */ be_nested_str(resp_cmnd_done), - }), + &be_ktab_class_Tasmota, /* shared constants */ &be_const_str_urlfetch_cmd, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x8C180B01, // 0001 GETMET R6 R5 K1 + 0xA416AA00, // 0000 IMPORT R5 K85 + 0x8C180B0E, // 0001 GETMET R6 R5 K14 0x5C200600, // 0002 MOVE R8 R3 - 0x58240002, // 0003 LDCONST R9 K2 + 0x58240095, // 0003 LDCONST R9 K149 0x7C180600, // 0004 CALL R6 3 - 0x20180D03, // 0005 NE R6 R6 K3 + 0x20180D1C, // 0005 NE R6 R6 K28 0x781A0003, // 0006 JMPF R6 #000B - 0x8C180104, // 0007 GETMET R6 R0 K4 - 0x58200005, // 0008 LDCONST R8 K5 + 0x8C180196, // 0007 GETMET R6 R0 K150 + 0x58200097, // 0008 LDCONST R8 K151 0x7C180400, // 0009 CALL R6 2 0x80000C00, // 000A RET 0 0xA802000A, // 000B EXBLK 0 #0017 - 0x8C180106, // 000C GETMET R6 R0 K6 + 0x8C180198, // 000C GETMET R6 R0 K152 0x5C200600, // 000D MOVE R8 R3 0x7C180400, // 000E CALL R6 2 - 0x141C0D03, // 000F LT R7 R6 K3 + 0x141C0D1C, // 000F LT R7 R6 K28 0x781E0003, // 0010 JMPF R7 #0015 - 0x8C1C0107, // 0011 GETMET R7 R0 K7 + 0x8C1C0199, // 0011 GETMET R7 R0 K153 0x7C1C0200, // 0012 CALL R7 1 0xA8040001, // 0013 EXBLK 1 1 0x80000E00, // 0014 RET 0 @@ -2701,13 +2537,13 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ 0x70020006, // 0016 JMP #001E 0xAC180002, // 0017 CATCH R6 0 2 0x70020003, // 0018 JMP #001D - 0x8C200107, // 0019 GETMET R8 R0 K7 + 0x8C200199, // 0019 GETMET R8 R0 K153 0x7C200200, // 001A CALL R8 1 0x80001000, // 001B RET 0 0x70020000, // 001C JMP #001E 0xB0080000, // 001D RAISE 2 R0 R0 - 0xB81A1000, // 001E GETNGBL R6 K8 - 0x8C180D09, // 001F GETMET R6 R6 K9 + 0xB81A0200, // 001E GETNGBL R6 K1 + 0x8C180D9A, // 001F GETMET R6 R6 K154 0x7C180200, // 0020 CALL R6 1 0x80000000, // 0021 RET 0 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h index e57eb0d81..7a27c3116 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h @@ -3,6 +3,18 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Trigger' ktab size: 8, total: 14 (saved 48 bytes) +static const bvalue be_ktab_class_Trigger[8] = { + /* K0 */ be_nested_str(trig), + /* K1 */ be_nested_str(f), + /* K2 */ be_nested_str(id), + /* K3 */ be_nested_str(o), + /* K4 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str(time_reached), + /* K7 */ be_nested_str(next), +}; + extern const bclass be_class_Trigger; @@ -13,18 +25,13 @@ be_local_closure(class_Trigger_init, /* name */ be_nested_proto( 5, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(trig), - /* K1 */ be_nested_str(f), - /* K2 */ be_nested_str(id), - /* K3 */ be_nested_str(o), - }), + &be_ktab_class_Trigger, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ @@ -46,36 +53,31 @@ be_local_closure(class_Trigger_tostring, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K1 */ be_nested_str(trig), - /* K2 */ be_nested_str(f), - /* K3 */ be_nested_str(id), - }), + &be_ktab_class_Trigger, /* shared constants */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 + 0x58080004, // 0001 LDCONST R2 K4 0x600C0008, // 0002 GETGBL R3 G8 0x60100006, // 0003 GETGBL R4 G6 0x5C140000, // 0004 MOVE R5 R0 0x7C100200, // 0005 CALL R4 1 0x7C0C0200, // 0006 CALL R3 1 0x60100008, // 0007 GETGBL R4 G8 - 0x88140101, // 0008 GETMBR R5 R0 K1 + 0x88140100, // 0008 GETMBR R5 R0 K0 0x7C100200, // 0009 CALL R4 1 0x60140008, // 000A GETGBL R5 G8 - 0x88180102, // 000B GETMBR R6 R0 K2 + 0x88180101, // 000B GETMBR R6 R0 K1 0x7C140200, // 000C CALL R5 1 0x60180008, // 000D GETGBL R6 G8 - 0x881C0103, // 000E GETMBR R7 R0 K3 + 0x881C0102, // 000E GETMBR R7 R0 K2 0x7C180200, // 000F CALL R6 1 0x7C040A00, // 0010 CALL R1 5 0x80040200, // 0011 RET 1 R1 @@ -92,29 +94,24 @@ be_local_closure(class_Trigger_time_reached, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(o), - /* K1 */ be_nested_str(trig), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(time_reached), - }), + &be_ktab_class_Trigger, /* shared constants */ &be_const_str_time_reached, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 0x78060007, // 0001 JMPF R1 #000A - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x24040302, // 0003 GT R1 R1 K2 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x24040305, // 0003 GT R1 R1 K5 0x78060004, // 0004 JMPF R1 #000A - 0x88040100, // 0005 GETMBR R1 R0 K0 - 0x8C040303, // 0006 GETMET R1 R1 K3 - 0x880C0101, // 0007 GETMBR R3 R0 K1 + 0x88040103, // 0005 GETMBR R1 R0 K3 + 0x8C040306, // 0006 GETMET R1 R1 K6 + 0x880C0100, // 0007 GETMBR R3 R0 K0 0x7C040400, // 0008 CALL R1 2 0x80040200, // 0009 RET 1 R1 0x50040000, // 000A LDBOOL R1 0 0 @@ -132,23 +129,20 @@ be_local_closure(class_Trigger_next, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(o), - /* K1 */ be_nested_str(next), - }), + &be_ktab_class_Trigger, /* shared constants */ &be_const_str_next, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 0x78060003, // 0001 JMPF R1 #0006 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x8C040301, // 0003 GETMET R1 R1 K1 + 0x88040103, // 0002 GETMBR R1 R0 K3 + 0x8C040307, // 0003 GETMET R1 R1 K7 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 0x80000000, // 0006 RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h index 22a31bb03..95dbf423b 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h @@ -3,6 +3,31 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'zb_coord' ktab size: 21, total: 24 (saved 24 bytes) +static const bvalue be_ktab_class_zb_coord[21] = { + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(instance), + /* K2 */ be_nested_str_weak(value_error), + /* K3 */ be_nested_str_weak(instance_X20required), + /* K4 */ be_nested_str_weak(_handlers), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(introspect), + /* K8 */ be_nested_str_weak(toptr), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(zcl_frame), + /* K11 */ be_nested_str_weak(zcl_attribute_list), + /* K12 */ be_nested_str_weak(get), + /* K13 */ be_nested_str_weak(function), + /* K14 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(_debug_present), + /* K17 */ be_nested_str_weak(debug), + /* K18 */ be_nested_str_weak(traceback), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_str_weak(remove), +}; + extern const bclass be_class_zb_coord; @@ -13,15 +38,13 @@ be_local_closure(class_zb_coord_init, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - }), + &be_ktab_class_zb_coord, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ @@ -44,47 +67,40 @@ be_local_closure(class_zb_coord_add_handler, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(instance), - /* K1 */ be_nested_str_weak(value_error), - /* K2 */ be_nested_str_weak(instance_X20required), - /* K3 */ be_nested_str_weak(_handlers), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_nested_str_weak(push), - }), + &be_ktab_class_zb_coord, /* shared constants */ be_str_weak(add_handler), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0x60080004, // 0000 GETGBL R2 G4 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x20080500, // 0003 NE R2 R2 K0 + 0x20080501, // 0003 NE R2 R2 K1 0x780A0000, // 0004 JMPF R2 #0006 - 0xB0060302, // 0005 RAISE 1 K1 K2 - 0x88080103, // 0006 GETMBR R2 R0 K3 + 0xB0060503, // 0005 RAISE 1 K2 K3 + 0x88080104, // 0006 GETMBR R2 R0 K4 0x780A000B, // 0007 JMPF R2 #0014 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x8C080504, // 0009 GETMET R2 R2 K4 + 0x88080104, // 0008 GETMBR R2 R0 K4 + 0x8C080505, // 0009 GETMET R2 R2 K5 0x5C100200, // 000A MOVE R4 R1 0x7C080400, // 000B CALL R2 2 0x4C0C0000, // 000C LDNIL R3 0x1C080403, // 000D EQ R2 R2 R3 0x780A0003, // 000E JMPF R2 #0013 - 0x88080103, // 000F GETMBR R2 R0 K3 - 0x8C080505, // 0010 GETMET R2 R2 K5 + 0x88080104, // 000F GETMBR R2 R0 K4 + 0x8C080506, // 0010 GETMET R2 R2 K6 0x5C100200, // 0011 MOVE R4 R1 0x7C080400, // 0012 CALL R2 2 0x70020003, // 0013 JMP #0018 0x60080012, // 0014 GETGBL R2 G18 0x7C080000, // 0015 CALL R2 0 0x400C0401, // 0016 CONNECT R3 R2 R1 - 0x90020602, // 0017 SETMBR R0 K3 R2 + 0x90020802, // 0017 SETMBR R0 K4 R2 0x80000000, // 0018 RET 0 }) ) @@ -99,70 +115,55 @@ be_local_closure(class_zb_coord_dispatch, /* name */ be_nested_proto( 19, /* nstack */ 5, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(_handlers), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(toptr), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(zcl_frame), - /* K5 */ be_nested_str_weak(zcl_attribute_list), - /* K6 */ be_nested_str_weak(get), - /* K7 */ be_nested_str_weak(function), - /* K8 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(_debug_present), - /* K11 */ be_nested_str_weak(debug), - /* K12 */ be_nested_str_weak(traceback), - /* K13 */ be_const_int(1), - }), + &be_ktab_class_zb_coord, /* shared constants */ be_str_weak(dispatch), &be_const_str_solidified, ( &(const binstruction[70]) { /* code */ - 0x88140100, // 0000 GETMBR R5 R0 K0 + 0x88140104, // 0000 GETMBR R5 R0 K4 0x4C180000, // 0001 LDNIL R6 0x1C140A06, // 0002 EQ R5 R5 R6 0x78160000, // 0003 JMPF R5 #0005 0x80000A00, // 0004 RET 0 - 0xA4160200, // 0005 IMPORT R5 K1 + 0xA4160E00, // 0005 IMPORT R5 K7 0x4C180000, // 0006 LDNIL R6 0x4C1C0000, // 0007 LDNIL R7 - 0x8C200B02, // 0008 GETMET R8 R5 K2 - 0x58280003, // 0009 LDCONST R10 K3 + 0x8C200B08, // 0008 GETMET R8 R5 K8 + 0x58280009, // 0009 LDCONST R10 K9 0x7C200400, // 000A CALL R8 2 0x20240408, // 000B NE R9 R2 R8 0x78260003, // 000C JMPF R9 #0011 - 0x8C240104, // 000D GETMET R9 R0 K4 + 0x8C24010A, // 000D GETMET R9 R0 K10 0x5C2C0400, // 000E MOVE R11 R2 0x7C240400, // 000F CALL R9 2 0x5C181200, // 0010 MOVE R6 R9 0x20240608, // 0011 NE R9 R3 R8 0x78260003, // 0012 JMPF R9 #0017 - 0x8C240105, // 0013 GETMET R9 R0 K5 + 0x8C24010B, // 0013 GETMET R9 R0 K11 0x5C2C0600, // 0014 MOVE R11 R3 0x7C240400, // 0015 CALL R9 2 0x5C1C1200, // 0016 MOVE R7 R9 - 0x58240003, // 0017 LDCONST R9 K3 + 0x58240009, // 0017 LDCONST R9 K9 0x6028000C, // 0018 GETGBL R10 G12 - 0x882C0100, // 0019 GETMBR R11 R0 K0 + 0x882C0104, // 0019 GETMBR R11 R0 K4 0x7C280200, // 001A CALL R10 1 0x1428120A, // 001B LT R10 R9 R10 0x782A0027, // 001C JMPF R10 #0045 - 0x88280100, // 001D GETMBR R10 R0 K0 + 0x88280104, // 001D GETMBR R10 R0 K4 0x94281409, // 001E GETIDX R10 R10 R9 - 0x8C2C0B06, // 001F GETMET R11 R5 K6 + 0x8C2C0B0C, // 001F GETMET R11 R5 K12 0x5C341400, // 0020 MOVE R13 R10 0x5C380200, // 0021 MOVE R14 R1 0x7C2C0600, // 0022 CALL R11 3 0x60300004, // 0023 GETGBL R12 G4 0x5C341600, // 0024 MOVE R13 R11 0x7C300200, // 0025 CALL R12 1 - 0x1C301907, // 0026 EQ R12 R12 K7 + 0x1C30190D, // 0026 EQ R12 R12 K13 0x7832001A, // 0027 JMPF R12 #0043 0xA8020008, // 0028 EXBLK 0 #0032 0x5C301600, // 0029 MOVE R12 R11 @@ -178,20 +179,20 @@ be_local_closure(class_zb_coord_dispatch, /* name */ 0x7002000D, // 0033 JMP #0042 0x60380001, // 0034 GETGBL R14 G1 0x603C0018, // 0035 GETGBL R15 G24 - 0x58400008, // 0036 LDCONST R16 K8 + 0x5840000E, // 0036 LDCONST R16 K14 0x5C441800, // 0037 MOVE R17 R12 0x5C481A00, // 0038 MOVE R18 R13 0x7C3C0600, // 0039 CALL R15 3 0x7C380200, // 003A CALL R14 1 - 0xB83A1200, // 003B GETNGBL R14 K9 - 0x88381D0A, // 003C GETMBR R14 R14 K10 + 0xB83A1E00, // 003B GETNGBL R14 K15 + 0x88381D10, // 003C GETMBR R14 R14 K16 0x783A0002, // 003D JMPF R14 #0041 - 0xA43A1600, // 003E IMPORT R14 K11 - 0x8C3C1D0C, // 003F GETMET R15 R14 K12 + 0xA43A2200, // 003E IMPORT R14 K17 + 0x8C3C1D12, // 003F GETMET R15 R14 K18 0x7C3C0200, // 0040 CALL R15 1 0x70020000, // 0041 JMP #0043 0xB0080000, // 0042 RAISE 2 R0 R0 - 0x0024130D, // 0043 ADD R9 R9 K13 + 0x00241313, // 0043 ADD R9 R9 K19 0x7001FFD2, // 0044 JMP #0018 0x80000000, // 0045 RET 0 }) @@ -207,31 +208,27 @@ be_local_closure(class_zb_coord_remove_handler, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_handlers), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(remove), - }), + &be_ktab_class_zb_coord, /* shared constants */ be_str_weak(remove_handler), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080104, // 0000 GETMBR R2 R0 K4 0x780A000A, // 0001 JMPF R2 #000D - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x88080104, // 0002 GETMBR R2 R0 K4 + 0x8C080505, // 0003 GETMET R2 R2 K5 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x4C0C0000, // 0006 LDNIL R3 0x200C0403, // 0007 NE R3 R2 R3 0x780E0003, // 0008 JMPF R3 #000D - 0x880C0100, // 0009 GETMBR R3 R0 K0 - 0x8C0C0702, // 000A GETMET R3 R3 K2 + 0x880C0104, // 0009 GETMBR R3 R0 K4 + 0x8C0C0714, // 000A GETMET R3 R3 K20 0x5C140400, // 000B MOVE R5 R2 0x7C0C0400, // 000C CALL R3 2 0x80000000, // 000D RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h index bec41e19d..d48ad4054 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h @@ -3,6 +3,54 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'zcl_attribute' ktab size: 44, total: 70 (saved 208 bytes) +static const bvalue be_ktab_class_zcl_attribute[44] = { + /* K0 */ be_nested_str_weak(tomap), + /* K1 */ be_nested_str_weak(cluster), + /* K2 */ be_nested_str_weak(attr_id), + /* K3 */ be_nested_str_weak(cmd), + /* K4 */ be_nested_str_weak(direction), + /* K5 */ be_nested_str_weak(key), + /* K6 */ be_nested_str_weak(val), + /* K7 */ be_nested_str_weak(_X3Cundefined_X3E), + /* K8 */ be_nested_str_weak(key_suffix), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(_X2504X_X2F_X2504X), + /* K11 */ be_nested_str_weak(_X2B), + /* K12 */ be_nested_str_weak(_X2504X_X25s_X2502X), + /* K13 */ be_nested_str_weak(_X3F), + /* K14 */ be_nested_str_weak(_X21), + /* K15 */ be_nested_str_weak(_cluster), + /* K16 */ be_nested_str_weak(_attr_id), + /* K17 */ be_nested_str_weak(_iscmd), + /* K18 */ be_const_int(0), + /* K19 */ be_nested_str_weak(_cmd), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(_direction), + /* K22 */ be_nested_str_weak(_set_val), + /* K23 */ be_nested_str_weak(_set_key), + /* K24 */ be_nested_str_weak(setmember), + /* K25 */ be_nested_str_weak(introspect), + /* K26 */ be_nested_str_weak(json), + /* K27 */ be_nested_str_weak(dump), + /* K28 */ be_nested_str_weak(key_tostring), + /* K29 */ be_nested_str_weak(_X3A), + /* K30 */ be_nested_str_weak(get), + /* K31 */ be_nested_str_weak(tojson), + /* K32 */ be_nested_str_weak(_X28_X25s_X29), + /* K33 */ be_nested_str_weak(_X2C_X25s_X3A_X22_X2504X_X2F_X2504X_X22), + /* K34 */ be_nested_str_weak(init), + /* K35 */ be_nested_str_weak(_init), + /* K36 */ be_nested_str_weak(ismapped), + /* K37 */ be_nested_str_weak(_deinit), + /* K38 */ be_nested_str_weak(cmd_general), + /* K39 */ be_nested_str_weak(_cmd_general), + /* K40 */ be_nested_str_weak(_get_val), + /* K41 */ be_nested_str_weak(tohex), + /* K42 */ be_nested_str_weak(_get_key), + /* K43 */ be_nested_str_weak(member), +}; + extern const bclass be_class_zcl_attribute; @@ -13,21 +61,13 @@ be_local_closure(class_zcl_attribute_tomap, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(tomap), - /* K1 */ be_nested_str_weak(cluster), - /* K2 */ be_nested_str_weak(attr_id), - /* K3 */ be_nested_str_weak(cmd), - /* K4 */ be_nested_str_weak(direction), - /* K5 */ be_nested_str_weak(key), - /* K6 */ be_nested_str_weak(val), - }), + &be_ktab_class_zcl_attribute, /* shared constants */ be_str_weak(tomap), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -62,97 +102,83 @@ be_local_closure(class_zcl_attribute_key_tostring, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(_X3Cundefined_X3E), - /* K1 */ be_nested_str_weak(key), - /* K2 */ be_nested_str_weak(key_suffix), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(cluster), - /* K5 */ be_nested_str_weak(attr_id), - /* K6 */ be_nested_str_weak(_X2504X_X2F_X2504X), - /* K7 */ be_nested_str_weak(_X2B), - /* K8 */ be_nested_str_weak(cmd), - /* K9 */ be_nested_str_weak(direction), - /* K10 */ be_nested_str_weak(_X2504X_X25s_X2502X), - /* K11 */ be_nested_str_weak(_X3F), - /* K12 */ be_nested_str_weak(_X21), - }), + &be_ktab_class_zcl_attribute, /* shared constants */ be_str_weak(key_tostring), &be_const_str_solidified, ( &(const binstruction[69]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x58040007, // 0000 LDCONST R1 K7 + 0x88080105, // 0001 GETMBR R2 R0 K5 0x4C0C0000, // 0002 LDNIL R3 0x200C0403, // 0003 NE R3 R2 R3 0x780E0008, // 0004 JMPF R3 #000E 0x5C040400, // 0005 MOVE R1 R2 - 0x880C0102, // 0006 GETMBR R3 R0 K2 - 0x240C0703, // 0007 GT R3 R3 K3 + 0x880C0108, // 0006 GETMBR R3 R0 K8 + 0x240C0709, // 0007 GT R3 R3 K9 0x780E0003, // 0008 JMPF R3 #000D 0x600C0008, // 0009 GETGBL R3 G8 - 0x88100102, // 000A GETMBR R4 R0 K2 + 0x88100108, // 000A GETMBR R4 R0 K8 0x7C0C0200, // 000B CALL R3 1 0x00040203, // 000C ADD R1 R1 R3 0x70020035, // 000D JMP #0044 - 0x880C0104, // 000E GETMBR R3 R0 K4 + 0x880C0101, // 000E GETMBR R3 R0 K1 0x4C100000, // 000F LDNIL R4 0x200C0604, // 0010 NE R3 R3 R4 0x780E0012, // 0011 JMPF R3 #0025 - 0x880C0105, // 0012 GETMBR R3 R0 K5 + 0x880C0102, // 0012 GETMBR R3 R0 K2 0x4C100000, // 0013 LDNIL R4 0x200C0604, // 0014 NE R3 R3 R4 0x780E000E, // 0015 JMPF R3 #0025 0x600C0018, // 0016 GETGBL R3 G24 - 0x58100006, // 0017 LDCONST R4 K6 - 0x88140104, // 0018 GETMBR R5 R0 K4 - 0x88180105, // 0019 GETMBR R6 R0 K5 + 0x5810000A, // 0017 LDCONST R4 K10 + 0x88140101, // 0018 GETMBR R5 R0 K1 + 0x88180102, // 0019 GETMBR R6 R0 K2 0x7C0C0600, // 001A CALL R3 3 0x5C040600, // 001B MOVE R1 R3 - 0x880C0102, // 001C GETMBR R3 R0 K2 - 0x240C0703, // 001D GT R3 R3 K3 + 0x880C0108, // 001C GETMBR R3 R0 K8 + 0x240C0709, // 001D GT R3 R3 K9 0x780E0004, // 001E JMPF R3 #0024 0x600C0008, // 001F GETGBL R3 G8 - 0x88100102, // 0020 GETMBR R4 R0 K2 + 0x88100108, // 0020 GETMBR R4 R0 K8 0x7C0C0200, // 0021 CALL R3 1 - 0x000E0E03, // 0022 ADD R3 K7 R3 + 0x000E1603, // 0022 ADD R3 K11 R3 0x00040203, // 0023 ADD R1 R1 R3 0x7002001E, // 0024 JMP #0044 - 0x880C0104, // 0025 GETMBR R3 R0 K4 + 0x880C0101, // 0025 GETMBR R3 R0 K1 0x4C100000, // 0026 LDNIL R4 0x200C0604, // 0027 NE R3 R3 R4 0x780E001A, // 0028 JMPF R3 #0044 - 0x880C0108, // 0029 GETMBR R3 R0 K8 + 0x880C0103, // 0029 GETMBR R3 R0 K3 0x4C100000, // 002A LDNIL R4 0x200C0604, // 002B NE R3 R3 R4 0x780E0016, // 002C JMPF R3 #0044 - 0x880C0109, // 002D GETMBR R3 R0 K9 + 0x880C0104, // 002D GETMBR R3 R0 K4 0x4C100000, // 002E LDNIL R4 0x200C0604, // 002F NE R3 R3 R4 0x780E0012, // 0030 JMPF R3 #0044 0x600C0018, // 0031 GETGBL R3 G24 - 0x5810000A, // 0032 LDCONST R4 K10 - 0x88140104, // 0033 GETMBR R5 R0 K4 - 0x88180109, // 0034 GETMBR R6 R0 K9 + 0x5810000C, // 0032 LDCONST R4 K12 + 0x88140101, // 0033 GETMBR R5 R0 K1 + 0x88180104, // 0034 GETMBR R6 R0 K4 0x781A0001, // 0035 JMPF R6 #0038 - 0x5818000B, // 0036 LDCONST R6 K11 + 0x5818000D, // 0036 LDCONST R6 K13 0x70020000, // 0037 JMP #0039 - 0x5818000C, // 0038 LDCONST R6 K12 - 0x881C0108, // 0039 GETMBR R7 R0 K8 + 0x5818000E, // 0038 LDCONST R6 K14 + 0x881C0103, // 0039 GETMBR R7 R0 K3 0x7C0C0800, // 003A CALL R3 4 0x5C040600, // 003B MOVE R1 R3 - 0x880C0102, // 003C GETMBR R3 R0 K2 - 0x240C0703, // 003D GT R3 R3 K3 + 0x880C0108, // 003C GETMBR R3 R0 K8 + 0x240C0709, // 003D GT R3 R3 K9 0x780E0004, // 003E JMPF R3 #0044 0x600C0008, // 003F GETGBL R3 G8 - 0x88100102, // 0040 GETMBR R4 R0 K2 + 0x88100108, // 0040 GETMBR R4 R0 K8 0x7C0C0200, // 0041 CALL R3 1 - 0x000E0E03, // 0042 ADD R3 K7 R3 + 0x000E1603, // 0042 ADD R3 K11 R3 0x00040203, // 0043 ADD R1 R1 R3 0x80040200, // 0044 RET 1 R1 }) @@ -168,42 +194,25 @@ be_local_closure(class_zcl_attribute_setmember, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(cluster), - /* K1 */ be_nested_str_weak(_cluster), - /* K2 */ be_nested_str_weak(attr_id), - /* K3 */ be_nested_str_weak(_attr_id), - /* K4 */ be_nested_str_weak(_iscmd), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(cmd), - /* K7 */ be_nested_str_weak(_cmd), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(direction), - /* K10 */ be_nested_str_weak(_direction), - /* K11 */ be_nested_str_weak(val), - /* K12 */ be_nested_str_weak(_set_val), - /* K13 */ be_nested_str_weak(key), - /* K14 */ be_nested_str_weak(_set_key), - /* K15 */ be_nested_str_weak(setmember), - }), + &be_ktab_class_zcl_attribute, /* shared constants */ be_str_weak(setmember), &be_const_str_solidified, ( &(const binstruction[66]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x1C0C0301, // 0000 EQ R3 R1 K1 0x780E0007, // 0001 JMPF R3 #000A 0x4C0C0000, // 0002 LDNIL R3 0x1C0C0403, // 0003 EQ R3 R2 R3 0x780E0002, // 0004 JMPF R3 #0008 0x540EFFFE, // 0005 LDINT R3 65535 - 0x90020203, // 0006 SETMBR R0 K1 R3 + 0x90021E03, // 0006 SETMBR R0 K15 R3 0x70020000, // 0007 JMP #0009 - 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x90021E02, // 0008 SETMBR R0 K15 R2 0x70020036, // 0009 JMP #0041 0x1C0C0302, // 000A EQ R3 R1 K2 0x780E0008, // 000B JMPF R3 #0015 @@ -211,52 +220,52 @@ be_local_closure(class_zcl_attribute_setmember, /* name */ 0x1C0C0403, // 000D EQ R3 R2 R3 0x780E0002, // 000E JMPF R3 #0012 0x540EFFFE, // 000F LDINT R3 65535 - 0x90020603, // 0010 SETMBR R0 K3 R3 + 0x90022003, // 0010 SETMBR R0 K16 R3 0x70020001, // 0011 JMP #0014 - 0x90020602, // 0012 SETMBR R0 K3 R2 - 0x90020905, // 0013 SETMBR R0 K4 K5 + 0x90022002, // 0012 SETMBR R0 K16 R2 + 0x90022312, // 0013 SETMBR R0 K17 K18 0x7002002B, // 0014 JMP #0041 - 0x1C0C0306, // 0015 EQ R3 R1 K6 + 0x1C0C0303, // 0015 EQ R3 R1 K3 0x780E0008, // 0016 JMPF R3 #0020 0x4C0C0000, // 0017 LDNIL R3 0x1C0C0403, // 0018 EQ R3 R2 R3 0x780E0002, // 0019 JMPF R3 #001D 0x540E00FE, // 001A LDINT R3 255 - 0x90020E03, // 001B SETMBR R0 K7 R3 + 0x90022603, // 001B SETMBR R0 K19 R3 0x70020001, // 001C JMP #001F - 0x90020E02, // 001D SETMBR R0 K7 R2 - 0x90020908, // 001E SETMBR R0 K4 K8 + 0x90022602, // 001D SETMBR R0 K19 R2 + 0x90022314, // 001E SETMBR R0 K17 K20 0x70020020, // 001F JMP #0041 - 0x1C0C0309, // 0020 EQ R3 R1 K9 + 0x1C0C0304, // 0020 EQ R3 R1 K4 0x780E000B, // 0021 JMPF R3 #002E 0x4C0C0000, // 0022 LDNIL R3 0x1C0C0403, // 0023 EQ R3 R2 R3 0x780E0001, // 0024 JMPF R3 #0027 - 0x90021505, // 0025 SETMBR R0 K10 K5 + 0x90022B12, // 0025 SETMBR R0 K21 K18 0x70020005, // 0026 JMP #002D 0x780A0001, // 0027 JMPF R2 #002A - 0x580C0008, // 0028 LDCONST R3 K8 + 0x580C0014, // 0028 LDCONST R3 K20 0x70020000, // 0029 JMP #002B - 0x580C0005, // 002A LDCONST R3 K5 - 0x90021403, // 002B SETMBR R0 K10 R3 - 0x90020908, // 002C SETMBR R0 K4 K8 + 0x580C0012, // 002A LDCONST R3 K18 + 0x90022A03, // 002B SETMBR R0 K21 R3 + 0x90022314, // 002C SETMBR R0 K17 K20 0x70020012, // 002D JMP #0041 - 0x1C0C030B, // 002E EQ R3 R1 K11 + 0x1C0C0306, // 002E EQ R3 R1 K6 0x780E0003, // 002F JMPF R3 #0034 - 0x8C0C010C, // 0030 GETMET R3 R0 K12 + 0x8C0C0116, // 0030 GETMET R3 R0 K22 0x5C140400, // 0031 MOVE R5 R2 0x7C0C0400, // 0032 CALL R3 2 0x7002000C, // 0033 JMP #0041 - 0x1C0C030D, // 0034 EQ R3 R1 K13 + 0x1C0C0305, // 0034 EQ R3 R1 K5 0x780E0003, // 0035 JMPF R3 #003A - 0x8C0C010E, // 0036 GETMET R3 R0 K14 + 0x8C0C0117, // 0036 GETMET R3 R0 K23 0x5C140400, // 0037 MOVE R5 R2 0x7C0C0400, // 0038 CALL R3 2 0x70020006, // 0039 JMP #0041 0x600C0003, // 003A GETGBL R3 G3 0x5C100000, // 003B MOVE R4 R0 0x7C0C0200, // 003C CALL R3 1 - 0x8C0C070F, // 003D GETMET R3 R3 K15 + 0x8C0C0718, // 003D GETMET R3 R3 K24 0x5C140200, // 003E MOVE R5 R1 0x5C180400, // 003F MOVE R6 R2 0x7C0C0600, // 0040 CALL R3 3 @@ -274,77 +283,63 @@ be_local_closure(class_zcl_attribute_tostring, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(json), - /* K2 */ be_nested_str_weak(dump), - /* K3 */ be_nested_str_weak(key_tostring), - /* K4 */ be_nested_str_weak(_X3A), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(val), - /* K7 */ be_nested_str_weak(tojson), - /* K8 */ be_nested_str_weak(cluster), - /* K9 */ be_nested_str_weak(attr_id), - /* K10 */ be_nested_str_weak(key), - /* K11 */ be_nested_str_weak(_X28_X25s_X29), - /* K12 */ be_nested_str_weak(_X2C_X25s_X3A_X22_X2504X_X2F_X2504X_X22), - }), + &be_ktab_class_zcl_attribute, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0502, // 0002 GETMET R3 R2 K2 - 0x8C140103, // 0003 GETMET R5 R0 K3 + 0xA4063200, // 0000 IMPORT R1 K25 + 0xA40A3400, // 0001 IMPORT R2 K26 + 0x8C0C051B, // 0002 GETMET R3 R2 K27 + 0x8C14011C, // 0003 GETMET R5 R0 K28 0x7C140200, // 0004 CALL R5 1 0x7C0C0400, // 0005 CALL R3 2 - 0x000C0704, // 0006 ADD R3 R3 K4 - 0x8C100305, // 0007 GETMET R4 R1 K5 + 0x000C071D, // 0006 ADD R3 R3 K29 + 0x8C10031E, // 0007 GETMET R4 R1 K30 0x88180106, // 0008 GETMBR R6 R0 K6 - 0x581C0007, // 0009 LDCONST R7 K7 + 0x581C001F, // 0009 LDCONST R7 K31 0x7C100600, // 000A CALL R4 3 0x4C140000, // 000B LDNIL R5 0x20100805, // 000C NE R4 R4 R5 0x78120004, // 000D JMPF R4 #0013 0x88100106, // 000E GETMBR R4 R0 K6 - 0x8C100907, // 000F GETMET R4 R4 K7 + 0x8C10091F, // 000F GETMET R4 R4 K31 0x7C100200, // 0010 CALL R4 1 0x000C0604, // 0011 ADD R3 R3 R4 0x70020003, // 0012 JMP #0017 - 0x8C100502, // 0013 GETMET R4 R2 K2 + 0x8C10051B, // 0013 GETMET R4 R2 K27 0x88180106, // 0014 GETMBR R6 R0 K6 0x7C100400, // 0015 CALL R4 2 0x000C0604, // 0016 ADD R3 R3 R4 - 0x88100108, // 0017 GETMBR R4 R0 K8 + 0x88100101, // 0017 GETMBR R4 R0 K1 0x4C140000, // 0018 LDNIL R5 0x20100805, // 0019 NE R4 R4 R5 0x78120015, // 001A JMPF R4 #0031 - 0x88100109, // 001B GETMBR R4 R0 K9 + 0x88100102, // 001B GETMBR R4 R0 K2 0x4C140000, // 001C LDNIL R5 0x20100805, // 001D NE R4 R4 R5 0x78120011, // 001E JMPF R4 #0031 - 0x8810010A, // 001F GETMBR R4 R0 K10 + 0x88100105, // 001F GETMBR R4 R0 K5 0x4C140000, // 0020 LDNIL R5 0x20100805, // 0021 NE R4 R4 R5 0x7812000D, // 0022 JMPF R4 #0031 0x60100018, // 0023 GETGBL R4 G24 - 0x5814000B, // 0024 LDCONST R5 K11 - 0x8C180103, // 0025 GETMET R6 R0 K3 + 0x58140020, // 0024 LDCONST R5 K32 + 0x8C18011C, // 0025 GETMET R6 R0 K28 0x7C180200, // 0026 CALL R6 1 0x7C100400, // 0027 CALL R4 2 0x60140018, // 0028 GETGBL R5 G24 - 0x5818000C, // 0029 LDCONST R6 K12 - 0x8C1C0502, // 002A GETMET R7 R2 K2 + 0x58180021, // 0029 LDCONST R6 K33 + 0x8C1C051B, // 002A GETMET R7 R2 K27 0x5C240800, // 002B MOVE R9 R4 0x7C1C0400, // 002C CALL R7 2 - 0x88200108, // 002D GETMBR R8 R0 K8 - 0x88240109, // 002E GETMBR R9 R0 K9 + 0x88200101, // 002D GETMBR R8 R0 K1 + 0x88240102, // 002E GETMBR R9 R0 K2 0x7C140800, // 002F CALL R5 4 0x000C0605, // 0030 ADD R3 R3 R5 0x80040600, // 0031 RET 1 R3 @@ -361,29 +356,26 @@ be_local_closure(class_zcl_attribute_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(_init), - }), + &be_ktab_class_zcl_attribute, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080522, // 0003 GETMET R2 R2 K34 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x4C080000, // 0006 LDNIL R2 0x1C080202, // 0007 EQ R2 R1 R2 0x780A0001, // 0008 JMPF R2 #000B - 0x8C080101, // 0009 GETMET R2 R0 K1 + 0x8C080123, // 0009 GETMET R2 R0 K35 0x7C080200, // 000A CALL R2 1 0x80000000, // 000B RET 0 }) @@ -399,23 +391,20 @@ be_local_closure(class_zcl_attribute_deinit, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(ismapped), - /* K1 */ be_nested_str_weak(_deinit), - }), + &be_ktab_class_zcl_attribute, /* shared constants */ be_str_weak(deinit), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040124, // 0000 GETMET R1 R0 K36 0x7C040200, // 0001 CALL R1 1 0x74060001, // 0002 JMPT R1 #0005 - 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x8C040125, // 0003 GETMET R1 R0 K37 0x7C040200, // 0004 CALL R1 1 0x80000000, // 0005 RET 0 }) @@ -431,37 +420,19 @@ be_local_closure(class_zcl_attribute_member, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(cluster), - /* K1 */ be_nested_str_weak(_cluster), - /* K2 */ be_nested_str_weak(attr_id), - /* K3 */ be_nested_str_weak(_attr_id), - /* K4 */ be_nested_str_weak(_iscmd), - /* K5 */ be_nested_str_weak(cmd), - /* K6 */ be_nested_str_weak(_cmd), - /* K7 */ be_nested_str_weak(direction), - /* K8 */ be_nested_str_weak(_direction), - /* K9 */ be_nested_str_weak(cmd_general), - /* K10 */ be_nested_str_weak(_cmd_general), - /* K11 */ be_nested_str_weak(val), - /* K12 */ be_nested_str_weak(_get_val), - /* K13 */ be_nested_str_weak(tohex), - /* K14 */ be_nested_str_weak(key), - /* K15 */ be_nested_str_weak(_get_key), - /* K16 */ be_nested_str_weak(member), - }), + &be_ktab_class_zcl_attribute, /* shared constants */ be_str_weak(member), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ - 0x1C080300, // 0000 EQ R2 R1 K0 + 0x1C080301, // 0000 EQ R2 R1 K1 0x780A0008, // 0001 JMPF R2 #000B - 0x88080101, // 0002 GETMBR R2 R0 K1 + 0x8808010F, // 0002 GETMBR R2 R0 K15 0x540EFFFE, // 0003 LDINT R3 65535 0x200C0403, // 0004 NE R3 R2 R3 0x780E0001, // 0005 JMPF R3 #0008 @@ -472,64 +443,64 @@ be_local_closure(class_zcl_attribute_member, /* name */ 0x7002003E, // 000A JMP #004A 0x1C080302, // 000B EQ R2 R1 K2 0x780A000A, // 000C JMPF R2 #0018 - 0x88080103, // 000D GETMBR R2 R0 K3 + 0x88080110, // 000D GETMBR R2 R0 K16 0x540EFFFE, // 000E LDINT R3 65535 0x200C0403, // 000F NE R3 R2 R3 0x780E0003, // 0010 JMPF R3 #0015 - 0x880C0104, // 0011 GETMBR R3 R0 K4 + 0x880C0111, // 0011 GETMBR R3 R0 K17 0x740E0001, // 0012 JMPT R3 #0015 0x5C0C0400, // 0013 MOVE R3 R2 0x70020000, // 0014 JMP #0016 0x4C0C0000, // 0015 LDNIL R3 0x80040600, // 0016 RET 1 R3 0x70020031, // 0017 JMP #004A - 0x1C080305, // 0018 EQ R2 R1 K5 + 0x1C080303, // 0018 EQ R2 R1 K3 0x780A000A, // 0019 JMPF R2 #0025 - 0x88080106, // 001A GETMBR R2 R0 K6 + 0x88080113, // 001A GETMBR R2 R0 K19 0x540E00FE, // 001B LDINT R3 255 0x200C0403, // 001C NE R3 R2 R3 0x780E0003, // 001D JMPF R3 #0022 - 0x880C0104, // 001E GETMBR R3 R0 K4 + 0x880C0111, // 001E GETMBR R3 R0 K17 0x780E0001, // 001F JMPF R3 #0022 0x5C0C0400, // 0020 MOVE R3 R2 0x70020000, // 0021 JMP #0023 0x4C0C0000, // 0022 LDNIL R3 0x80040600, // 0023 RET 1 R3 0x70020024, // 0024 JMP #004A - 0x1C080307, // 0025 EQ R2 R1 K7 + 0x1C080304, // 0025 EQ R2 R1 K4 0x780A0002, // 0026 JMPF R2 #002A - 0x88080108, // 0027 GETMBR R2 R0 K8 + 0x88080115, // 0027 GETMBR R2 R0 K21 0x80040400, // 0028 RET 1 R2 0x7002001F, // 0029 JMP #004A - 0x1C080309, // 002A EQ R2 R1 K9 + 0x1C080326, // 002A EQ R2 R1 K38 0x780A0002, // 002B JMPF R2 #002F - 0x8808010A, // 002C GETMBR R2 R0 K10 + 0x88080127, // 002C GETMBR R2 R0 K39 0x80040400, // 002D RET 1 R2 0x7002001A, // 002E JMP #004A - 0x1C08030B, // 002F EQ R2 R1 K11 + 0x1C080306, // 002F EQ R2 R1 K6 0x780A000B, // 0030 JMPF R2 #003D - 0x8C08010C, // 0031 GETMET R2 R0 K12 + 0x8C080128, // 0031 GETMET R2 R0 K40 0x7C080200, // 0032 CALL R2 1 0x600C000F, // 0033 GETGBL R3 G15 0x5C100400, // 0034 MOVE R4 R2 0x60140015, // 0035 GETGBL R5 G21 0x7C0C0400, // 0036 CALL R3 2 0x780E0002, // 0037 JMPF R3 #003B - 0x8C0C050D, // 0038 GETMET R3 R2 K13 + 0x8C0C0529, // 0038 GETMET R3 R2 K41 0x7C0C0200, // 0039 CALL R3 1 0x5C080600, // 003A MOVE R2 R3 0x80040400, // 003B RET 1 R2 0x7002000C, // 003C JMP #004A - 0x1C08030E, // 003D EQ R2 R1 K14 + 0x1C080305, // 003D EQ R2 R1 K5 0x780A0003, // 003E JMPF R2 #0043 - 0x8C08010F, // 003F GETMET R2 R0 K15 + 0x8C08012A, // 003F GETMET R2 R0 K42 0x7C080200, // 0040 CALL R2 1 0x80040400, // 0041 RET 1 R2 0x70020006, // 0042 JMP #004A 0x60080003, // 0043 GETGBL R2 G3 0x5C0C0000, // 0044 MOVE R3 R0 0x7C080200, // 0045 CALL R2 1 - 0x8C080510, // 0046 GETMET R2 R2 K16 + 0x8C08052B, // 0046 GETMET R2 R2 K43 0x5C100200, // 0047 MOVE R4 R1 0x7C080400, // 0048 CALL R2 2 0x80040400, // 0049 RET 1 R2 @@ -559,6 +530,37 @@ be_local_class(zcl_attribute, })), be_str_weak(zcl_attribute) ); +// compact class 'zcl_attribute_list' ktab size: 27, total: 36 (saved 72 bytes) +static const bvalue be_ktab_class_zcl_attribute_list[27] = { + /* K0 */ be_nested_str_weak(groupaddr), + /* K1 */ be_nested_str_weak(_groupaddr), + /* K2 */ be_nested_str_weak(src_ep), + /* K3 */ be_nested_str_weak(_src_ep), + /* K4 */ be_nested_str_weak(lqi), + /* K5 */ be_nested_str_weak(_lqi), + /* K6 */ be_nested_str_weak(member), + /* K7 */ be_nested_str_weak(setmember), + /* K8 */ be_nested_str_weak(init), + /* K9 */ be_nested_str_weak(_init), + /* K10 */ be_nested_str_weak(ismapped), + /* K11 */ be_nested_str_weak(_deinit), + /* K12 */ be_nested_str_weak(json), + /* K13 */ be_nested_str_weak(shortaddr), + /* K14 */ be_nested_str_weak(push), + /* K15 */ be_nested_str_weak(_X22Device_X22_X3A_X220x_X2504X_X22), + /* K16 */ be_nested_str_weak(_X22Group_X22_X3A_X220x_X2504X_X22), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(size), + /* K19 */ be_nested_str_weak(tostring), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(_X22Endpoint_X22_X3A_X25s), + /* K22 */ be_nested_str_weak(_X22LinkQuality_X22_X3A_X25s), + /* K23 */ be_nested_str_weak(_X7B), + /* K24 */ be_nested_str_weak(concat), + /* K25 */ be_nested_str_weak(_X2C), + /* K26 */ be_nested_str_weak(_X7D), +}; + extern const bclass be_class_zcl_attribute_list; @@ -569,21 +571,13 @@ be_local_closure(class_zcl_attribute_list_member, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(groupaddr), - /* K1 */ be_nested_str_weak(_groupaddr), - /* K2 */ be_nested_str_weak(src_ep), - /* K3 */ be_nested_str_weak(_src_ep), - /* K4 */ be_nested_str_weak(lqi), - /* K5 */ be_nested_str_weak(_lqi), - /* K6 */ be_nested_str_weak(member), - }), + &be_ktab_class_zcl_attribute_list, /* shared constants */ be_str_weak(member), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ @@ -641,21 +635,13 @@ be_local_closure(class_zcl_attribute_list_setmember, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(groupaddr), - /* K1 */ be_nested_str_weak(_groupaddr), - /* K2 */ be_nested_str_weak(src_ep), - /* K3 */ be_nested_str_weak(_src_ep), - /* K4 */ be_nested_str_weak(lqi), - /* K5 */ be_nested_str_weak(_lqi), - /* K6 */ be_nested_str_weak(setmember), - }), + &be_ktab_class_zcl_attribute_list, /* shared constants */ be_str_weak(setmember), &be_const_str_solidified, ( &(const binstruction[38]) { /* code */ @@ -692,7 +678,7 @@ be_local_closure(class_zcl_attribute_list_setmember, /* name */ 0x600C0003, // 001E GETGBL R3 G3 0x5C100000, // 001F MOVE R4 R0 0x7C0C0200, // 0020 CALL R3 1 - 0x8C0C0706, // 0021 GETMET R3 R3 K6 + 0x8C0C0707, // 0021 GETMET R3 R3 K7 0x5C140200, // 0022 MOVE R5 R1 0x5C180400, // 0023 MOVE R6 R2 0x7C0C0600, // 0024 CALL R3 3 @@ -710,29 +696,26 @@ be_local_closure(class_zcl_attribute_list_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(_init), - }), + &be_ktab_class_zcl_attribute_list, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080508, // 0003 GETMET R2 R2 K8 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x4C080000, // 0006 LDNIL R2 0x1C080202, // 0007 EQ R2 R1 R2 0x780A0001, // 0008 JMPF R2 #000B - 0x8C080101, // 0009 GETMET R2 R0 K1 + 0x8C080109, // 0009 GETMET R2 R0 K9 0x7C080200, // 000A CALL R2 1 0x80000000, // 000B RET 0 }) @@ -748,23 +731,20 @@ be_local_closure(class_zcl_attribute_list_deinit, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(ismapped), - /* K1 */ be_nested_str_weak(_deinit), - }), + &be_ktab_class_zcl_attribute_list, /* shared constants */ be_str_weak(deinit), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04010A, // 0000 GETMET R1 R0 K10 0x7C040200, // 0001 CALL R1 1 0x74060001, // 0002 JMPT R1 #0005 - 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x8C04010B, // 0003 GETMET R1 R0 K11 0x7C040200, // 0004 CALL R1 1 0x80000000, // 0005 RET 0 }) @@ -780,96 +760,77 @@ be_local_closure(class_zcl_attribute_list_tostring, /* name */ be_nested_proto( 11, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(shortaddr), - /* K2 */ be_nested_str_weak(push), - /* K3 */ be_nested_str_weak(_X22Device_X22_X3A_X220x_X2504X_X22), - /* K4 */ be_nested_str_weak(groupaddr), - /* K5 */ be_nested_str_weak(_X22Group_X22_X3A_X220x_X2504X_X22), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(size), - /* K8 */ be_nested_str_weak(tostring), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(src_ep), - /* K11 */ be_nested_str_weak(_X22Endpoint_X22_X3A_X25s), - /* K12 */ be_nested_str_weak(lqi), - /* K13 */ be_nested_str_weak(_X22LinkQuality_X22_X3A_X25s), - /* K14 */ be_nested_str_weak(_X7B), - /* K15 */ be_nested_str_weak(concat), - /* K16 */ be_nested_str_weak(_X2C), - /* K17 */ be_nested_str_weak(_X7D), - }), + &be_ktab_class_zcl_attribute_list, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[62]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 + 0xA4061800, // 0000 IMPORT R1 K12 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 0x4C0C0000, // 0003 LDNIL R3 - 0x880C0101, // 0004 GETMBR R3 R0 K1 + 0x880C010D, // 0004 GETMBR R3 R0 K13 0x4C100000, // 0005 LDNIL R4 0x200C0604, // 0006 NE R3 R3 R4 0x780E0005, // 0007 JMPF R3 #000E - 0x8C0C0502, // 0008 GETMET R3 R2 K2 + 0x8C0C050E, // 0008 GETMET R3 R2 K14 0x60140018, // 0009 GETGBL R5 G24 - 0x58180003, // 000A LDCONST R6 K3 + 0x5818000F, // 000A LDCONST R6 K15 0x5C1C0600, // 000B MOVE R7 R3 0x7C140400, // 000C CALL R5 2 0x7C0C0400, // 000D CALL R3 2 - 0x880C0104, // 000E GETMBR R3 R0 K4 + 0x880C0100, // 000E GETMBR R3 R0 K0 0x4C100000, // 000F LDNIL R4 0x200C0604, // 0010 NE R3 R3 R4 0x780E0005, // 0011 JMPF R3 #0018 - 0x8C0C0502, // 0012 GETMET R3 R2 K2 + 0x8C0C050E, // 0012 GETMET R3 R2 K14 0x60140018, // 0013 GETGBL R5 G24 - 0x58180005, // 0014 LDCONST R6 K5 + 0x58180010, // 0014 LDCONST R6 K16 0x5C1C0600, // 0015 MOVE R7 R3 0x7C140400, // 0016 CALL R5 2 0x7C0C0400, // 0017 CALL R3 2 - 0x58100006, // 0018 LDCONST R4 K6 - 0x8C140107, // 0019 GETMET R5 R0 K7 + 0x58100011, // 0018 LDCONST R4 K17 + 0x8C140112, // 0019 GETMET R5 R0 K18 0x7C140200, // 001A CALL R5 1 0x14180805, // 001B LT R6 R4 R5 0x781A0006, // 001C JMPF R6 #0024 - 0x8C180502, // 001D GETMET R6 R2 K2 + 0x8C18050E, // 001D GETMET R6 R2 K14 0x94200004, // 001E GETIDX R8 R0 R4 - 0x8C201108, // 001F GETMET R8 R8 K8 + 0x8C201113, // 001F GETMET R8 R8 K19 0x7C200200, // 0020 CALL R8 1 0x7C180400, // 0021 CALL R6 2 - 0x00100909, // 0022 ADD R4 R4 K9 + 0x00100914, // 0022 ADD R4 R4 K20 0x7001FFF6, // 0023 JMP #001B - 0x880C010A, // 0024 GETMBR R3 R0 K10 + 0x880C0102, // 0024 GETMBR R3 R0 K2 0x4C180000, // 0025 LDNIL R6 0x200C0606, // 0026 NE R3 R3 R6 0x780E0005, // 0027 JMPF R3 #002E - 0x8C180502, // 0028 GETMET R6 R2 K2 + 0x8C18050E, // 0028 GETMET R6 R2 K14 0x60200018, // 0029 GETGBL R8 G24 - 0x5824000B, // 002A LDCONST R9 K11 + 0x58240015, // 002A LDCONST R9 K21 0x5C280600, // 002B MOVE R10 R3 0x7C200400, // 002C CALL R8 2 0x7C180400, // 002D CALL R6 2 - 0x880C010C, // 002E GETMBR R3 R0 K12 + 0x880C0104, // 002E GETMBR R3 R0 K4 0x4C180000, // 002F LDNIL R6 0x200C0606, // 0030 NE R3 R3 R6 0x780E0005, // 0031 JMPF R3 #0038 - 0x8C180502, // 0032 GETMET R6 R2 K2 + 0x8C18050E, // 0032 GETMET R6 R2 K14 0x60200018, // 0033 GETGBL R8 G24 - 0x5824000D, // 0034 LDCONST R9 K13 + 0x58240016, // 0034 LDCONST R9 K22 0x5C280600, // 0035 MOVE R10 R3 0x7C200400, // 0036 CALL R8 2 0x7C180400, // 0037 CALL R6 2 - 0x8C18050F, // 0038 GETMET R6 R2 K15 - 0x58200010, // 0039 LDCONST R8 K16 + 0x8C180518, // 0038 GETMET R6 R2 K24 + 0x58200019, // 0039 LDCONST R8 K25 0x7C180400, // 003A CALL R6 2 - 0x001A1C06, // 003B ADD R6 K14 R6 - 0x00180D11, // 003C ADD R6 R6 K17 + 0x001A2E06, // 003B ADD R6 K23 R6 + 0x00180D1A, // 003C ADD R6 R6 K26 0x80040C00, // 003D RET 1 R6 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h index 735fd916f..a6d64dc00 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h @@ -3,6 +3,22 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'zcl_frame' ktab size: 12, total: 16 (saved 32 bytes) +static const bvalue be_ktab_class_zcl_frame[12] = { + /* K0 */ be_nested_str_weak(payload), + /* K1 */ be_nested_str_weak(_get_bytes), + /* K2 */ be_nested_str_weak(payload_ptr), + /* K3 */ be_nested_str_weak(member), + /* K4 */ be_nested_str_weak(_set_bytes), + /* K5 */ be_nested_str_weak(setmember), + /* K6 */ be_nested_str_weak(init), + /* K7 */ be_nested_str_weak(no_bytes), + /* K8 */ be_nested_str_weak(tomap), + /* K9 */ be_nested_str_weak(shortaddr_hex), + /* K10 */ be_nested_str_weak(0x_X2504X), + /* K11 */ be_nested_str_weak(shortaddr), +}; + extern const bclass be_class_zcl_frame; @@ -13,18 +29,13 @@ be_local_closure(class_zcl_frame_member, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(payload), - /* K1 */ be_nested_str_weak(_get_bytes), - /* K2 */ be_nested_str_weak(payload_ptr), - /* K3 */ be_nested_str_weak(member), - }), + &be_ktab_class_zcl_frame, /* shared constants */ be_str_weak(member), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -56,24 +67,19 @@ be_local_closure(class_zcl_frame_setmember, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(payload), - /* K1 */ be_nested_str_weak(_set_bytes), - /* K2 */ be_nested_str_weak(payload_ptr), - /* K3 */ be_nested_str_weak(setmember), - }), + &be_ktab_class_zcl_frame, /* shared constants */ be_str_weak(setmember), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ 0x1C0C0300, // 0000 EQ R3 R1 K0 0x780E0005, // 0001 JMPF R3 #0008 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 + 0x8C0C0104, // 0002 GETMET R3 R0 K4 0x88140102, // 0003 GETMBR R5 R0 K2 0x5C180400, // 0004 MOVE R6 R2 0x7C0C0600, // 0005 CALL R3 3 @@ -82,7 +88,7 @@ be_local_closure(class_zcl_frame_setmember, /* name */ 0x600C0003, // 0008 GETGBL R3 G3 0x5C100000, // 0009 MOVE R4 R0 0x7C0C0200, // 000A CALL R3 1 - 0x8C0C0703, // 000B GETMET R3 R3 K3 + 0x8C0C0705, // 000B GETMET R3 R3 K5 0x5C140200, // 000C MOVE R5 R1 0x5C180400, // 000D MOVE R6 R2 0x7C0C0600, // 000E CALL R3 3 @@ -101,28 +107,25 @@ be_local_closure(class_zcl_frame_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(no_bytes), - }), + &be_ktab_class_zcl_frame, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080506, // 0003 GETMET R2 R2 K6 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x60080015, // 0006 GETGBL R2 G21 0x7C080000, // 0007 CALL R2 0 - 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x90020E02, // 0008 SETMBR R0 K7 R2 0x80000000, // 0009 RET 0 }) ) @@ -137,34 +140,28 @@ be_local_closure(class_zcl_frame_tomap, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(tomap), - /* K1 */ be_nested_str_weak(shortaddr_hex), - /* K2 */ be_nested_str_weak(0x_X2504X), - /* K3 */ be_nested_str_weak(shortaddr), - /* K4 */ be_nested_str_weak(payload), - }), + &be_ktab_class_zcl_frame, /* shared constants */ be_str_weak(tomap), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x8C040308, // 0003 GETMET R1 R1 K8 0x7C040200, // 0004 CALL R1 1 0x60080018, // 0005 GETGBL R2 G24 - 0x580C0002, // 0006 LDCONST R3 K2 - 0x88100103, // 0007 GETMBR R4 R0 K3 + 0x580C000A, // 0006 LDCONST R3 K10 + 0x8810010B, // 0007 GETMBR R4 R0 K11 0x7C080400, // 0008 CALL R2 2 - 0x98060202, // 0009 SETIDX R1 K1 R2 - 0x88080104, // 000A GETMBR R2 R0 K4 - 0x98060802, // 000B SETIDX R1 K4 R2 + 0x98061202, // 0009 SETIDX R1 K9 R2 + 0x88080100, // 000A GETMBR R2 R0 K0 + 0x98060002, // 000B SETIDX R1 K0 R2 0x80040200, // 000C RET 1 R1 }) ) @@ -179,19 +176,17 @@ be_local_closure(class_zcl_frame_tostring, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(tomap), - }), + &be_ktab_class_zcl_frame, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040108, // 0000 GETMET R1 R0 K8 0x7C040200, // 0001 CALL R1 1 0x60080008, // 0002 GETGBL R2 G8 0x5C0C0200, // 0003 MOVE R3 R1 diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h index a6346f940..780a51478 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h +++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h @@ -3,6 +3,84 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'LVGL_glob' ktab size: 74, total: 131 (saved 456 bytes) +static const bvalue be_ktab_class_LVGL_glob[74] = { + /* K0 */ be_nested_str_weak(event_cb), + /* K1 */ be_nested_str_weak(cb), + /* K2 */ be_nested_str_weak(gen_cb), + /* K3 */ be_nested_str_weak(push), + /* K4 */ be_nested_str_weak(stop_iteration), + /* K5 */ be_nested_str_weak(cb_event_closure), + /* K6 */ be_nested_str_weak(contains), + /* K7 */ be_nested_str_weak(function), + /* K8 */ be_const_int(1), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(lv_event_cb), + /* K11 */ be_nested_str_weak(register_obj), + /* K12 */ be_nested_str_weak(add_event_cb), + /* K13 */ be_nested_str_weak(lv), + /* K14 */ be_nested_str_weak(EVENT_DELETE), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(add_cb_event_closure), + /* K17 */ be_nested_str_weak(_p), + /* K18 */ be_nested_str_weak(get_event_cb), + /* K19 */ be_nested_str_weak(lv_timer_cb), + /* K20 */ be_nested_str_weak(timer_cb), + /* K21 */ be_const_int(2), + /* K22 */ be_nested_str_weak(lv_), + /* K23 */ be_nested_str_weak(null_cb), + /* K24 */ be_nested_str_weak(cb_do_nothing), + /* K25 */ be_nested_str_weak(introspect), + /* K26 */ be_nested_str_weak(toptr), + /* K27 */ be_const_int(1), + /* K28 */ be_nested_str_weak(event), + /* K29 */ be_nested_str_weak(lv_event), + /* K30 */ be_nested_str_weak(get_target), + /* K31 */ be_nested_str_weak(get_object_from_ptr), + /* K32 */ be_nested_str_weak(cb_obj), + /* K33 */ be_nested_str_weak(remove), + /* K34 */ be_nested_str_weak(lv_obj_class), + /* K35 */ be_nested_str_weak(get_target_obj), + /* K36 */ be_nested_str_weak(instance), + /* K37 */ be_nested_str_weak(get_code), + /* K38 */ be_nested_str_weak(get), + /* K39 */ be_nested_str_weak(before_del), + /* K40 */ be_nested_str_weak(widget_event), + /* K41 */ be_nested_str_weak(widget_destructor), + /* K42 */ be_nested_str_weak(find), + /* K43 */ be_nested_str_weak(widget_constructor), + /* K44 */ be_nested_str_weak(LVG_X3A_X20call_X20to_X20unsupported_X20callback), + /* K45 */ be_nested_str_weak(add_handler), + /* K46 */ be_nested_str_weak(lv_extra), + /* K47 */ be_nested_str_weak(lv_obj), + /* K48 */ be_nested_str_weak(value_error), + /* K49 */ be_nested_str_weak(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj), + /* K50 */ be_nested_str_weak(widget_struct_by_class), + /* K51 */ be_nested_str_weak(widget_cb), + /* K52 */ be_nested_str_weak(widget_struct_default), + /* K53 */ be_nested_str_weak(copy), + /* K54 */ be_nested_str_weak(base_class), + /* K55 */ be_nested_str_weak(_class), + /* K56 */ be_nested_str_weak(widget_width_def), + /* K57 */ be_nested_str_weak(width_def), + /* K58 */ be_nested_str_weak(widget_height_def), + /* K59 */ be_nested_str_weak(height_def), + /* K60 */ be_nested_str_weak(widget_editable), + /* K61 */ be_nested_str_weak(editable), + /* K62 */ be_nested_str_weak(widget_group_def), + /* K63 */ be_nested_str_weak(group_def), + /* K64 */ be_nested_str_weak(widget_instance_size), + /* K65 */ be_nested_str_weak(instance_size), + /* K66 */ be_nested_str_weak(obj_class_create_obj), + /* K67 */ be_nested_str_weak(class_init_obj), + /* K68 */ be_nested_str_weak(widget_ctor_cb), + /* K69 */ be_nested_str_weak(widget_dtor_cb), + /* K70 */ be_nested_str_weak(widget_event_cb), + /* K71 */ be_nested_str_weak(constructor_cb), + /* K72 */ be_nested_str_weak(destructor_cb), + /* K73 */ be_nested_str_weak(deregister_obj), +}; + extern const bclass be_class_LVGL_glob; @@ -13,7 +91,7 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -46,13 +124,7 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(event_cb), - /* K1 */ be_nested_str_weak(cb), - /* K2 */ be_nested_str_weak(gen_cb), - /* K3 */ be_nested_str_weak(push), - /* K4 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(get_event_cb), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ @@ -101,65 +173,58 @@ be_local_closure(class_LVGL_glob_add_cb_event_closure, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(cb_event_closure), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(function), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_const_int(0), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(add_cb_event_closure), &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C0105, // 0000 GETMBR R3 R0 K5 0x4C100000, // 0001 LDNIL R4 0x1C0C0604, // 0002 EQ R3 R3 R4 0x780E0002, // 0003 JMPF R3 #0007 0x600C0013, // 0004 GETGBL R3 G19 0x7C0C0000, // 0005 CALL R3 0 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x880C0100, // 0007 GETMBR R3 R0 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 + 0x90020A03, // 0006 SETMBR R0 K5 R3 + 0x880C0105, // 0007 GETMBR R3 R0 K5 + 0x8C0C0706, // 0008 GETMET R3 R3 K6 0x5C140200, // 0009 MOVE R5 R1 0x7C0C0400, // 000A CALL R3 2 0x780E001A, // 000B JMPF R3 #0027 - 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x880C0105, // 000C GETMBR R3 R0 K5 0x940C0601, // 000D GETIDX R3 R3 R1 0x60100004, // 000E GETGBL R4 G4 0x5C140600, // 000F MOVE R5 R3 0x7C100200, // 0010 CALL R4 1 - 0x1C100902, // 0011 EQ R4 R4 K2 + 0x1C100907, // 0011 EQ R4 R4 K7 0x78120007, // 0012 JMPF R4 #001B - 0x88100100, // 0013 GETMBR R4 R0 K0 + 0x88100105, // 0013 GETMBR R4 R0 K5 0x60140012, // 0014 GETGBL R5 G18 0x7C140000, // 0015 CALL R5 0 0x40180A03, // 0016 CONNECT R6 R5 R3 0x40180A02, // 0017 CONNECT R6 R5 R2 0x98100205, // 0018 SETIDX R4 R1 R5 - 0x80060600, // 0019 RET 1 K3 + 0x80061000, // 0019 RET 1 K8 0x7002000A, // 001A JMP #0026 - 0x88100100, // 001B GETMBR R4 R0 K0 + 0x88100105, // 001B GETMBR R4 R0 K5 0x94100801, // 001C GETIDX R4 R4 R1 - 0x8C100904, // 001D GETMET R4 R4 K4 + 0x8C100903, // 001D GETMET R4 R4 K3 0x5C180400, // 001E MOVE R6 R2 0x7C100400, // 001F CALL R4 2 0x6010000C, // 0020 GETGBL R4 G12 - 0x88140100, // 0021 GETMBR R5 R0 K0 + 0x88140105, // 0021 GETMBR R5 R0 K5 0x94140A01, // 0022 GETIDX R5 R5 R1 0x7C100200, // 0023 CALL R4 1 - 0x04100903, // 0024 SUB R4 R4 K3 + 0x04100908, // 0024 SUB R4 R4 K8 0x80040800, // 0025 RET 1 R4 0x70020002, // 0026 JMP #002A - 0x880C0100, // 0027 GETMBR R3 R0 K0 + 0x880C0105, // 0027 GETMBR R3 R0 K5 0x980C0202, // 0028 SETIDX R3 R1 R2 - 0x80060A00, // 0029 RET 1 K5 + 0x80061200, // 0029 RET 1 K9 0x80000000, // 002A RET 0 }) ) @@ -174,7 +239,7 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -229,25 +294,7 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(cb), - /* K1 */ be_nested_str_weak(lv_event_cb), - /* K2 */ be_nested_str_weak(register_obj), - /* K3 */ be_nested_str_weak(add_event_cb), - /* K4 */ be_nested_str_weak(lv), - /* K5 */ be_nested_str_weak(EVENT_DELETE), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(add_cb_event_closure), - /* K8 */ be_nested_str_weak(_p), - /* K9 */ be_nested_str_weak(get_event_cb), - /* K10 */ be_nested_str_weak(lv_timer_cb), - /* K11 */ be_nested_str_weak(timer_cb), - /* K12 */ be_nested_str_weak(gen_cb), - /* K13 */ be_const_int(2), - /* K14 */ be_nested_str_weak(lv_), - /* K15 */ be_nested_str_weak(null_cb), - /* K16 */ be_nested_str_weak(cb_do_nothing), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(make_cb), &be_const_str_solidified, ( &(const binstruction[70]) { /* code */ @@ -256,63 +303,63 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ 0x78120001, // 0002 JMPF R4 #0005 0x4C100000, // 0003 LDNIL R4 0x80040800, // 0004 RET 1 R4 - 0xA4120000, // 0005 IMPORT R4 K0 - 0x1C140701, // 0006 EQ R5 R3 K1 + 0xA4120200, // 0005 IMPORT R4 K1 + 0x1C14070A, // 0006 EQ R5 R3 K10 0x78160016, // 0007 JMPF R5 #001F - 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x8C14010B, // 0008 GETMET R5 R0 K11 0x5C1C0400, // 0009 MOVE R7 R2 0x7C140400, // 000A CALL R5 2 0x78160000, // 000B JMPF R5 #000D 0x50140001, // 000C LDBOOL R5 0 1 0x50140200, // 000D LDBOOL R5 1 0 0x78160005, // 000E JMPF R5 #0015 - 0x8C180503, // 000F GETMET R6 R2 K3 + 0x8C18050C, // 000F GETMET R6 R2 K12 0x84200000, // 0010 CLOSURE R8 P0 - 0xB8260800, // 0011 GETNGBL R9 K4 - 0x88241305, // 0012 GETMBR R9 R9 K5 - 0x58280006, // 0013 LDCONST R10 K6 + 0xB8261A00, // 0011 GETNGBL R9 K13 + 0x8824130E, // 0012 GETMBR R9 R9 K14 + 0x5828000F, // 0013 LDCONST R10 K15 0x7C180800, // 0014 CALL R6 4 - 0x8C180107, // 0015 GETMET R6 R0 K7 - 0x88200508, // 0016 GETMBR R8 R2 K8 + 0x8C180110, // 0015 GETMET R6 R0 K16 + 0x88200511, // 0016 GETMBR R8 R2 K17 0x5C240200, // 0017 MOVE R9 R1 0x7C180600, // 0018 CALL R6 3 - 0x8C1C0109, // 0019 GETMET R7 R0 K9 + 0x8C1C0112, // 0019 GETMET R7 R0 K18 0x5C240C00, // 001A MOVE R9 R6 0x7C1C0400, // 001B CALL R7 2 0xA0000000, // 001C CLOSE R0 0x80040E00, // 001D RET 1 R7 0x70020024, // 001E JMP #0044 - 0x1C14070A, // 001F EQ R5 R3 K10 + 0x1C140713, // 001F EQ R5 R3 K19 0x7816000F, // 0020 JMPF R5 #0031 - 0x8814010B, // 0021 GETMBR R5 R0 K11 + 0x88140114, // 0021 GETMBR R5 R0 K20 0x4C180000, // 0022 LDNIL R6 0x1C140A06, // 0023 EQ R5 R5 R6 0x78160003, // 0024 JMPF R5 #0029 - 0x8C14090C, // 0025 GETMET R5 R4 K12 + 0x8C140902, // 0025 GETMET R5 R4 K2 0x841C0001, // 0026 CLOSURE R7 P1 0x7C140400, // 0027 CALL R5 2 - 0x90021605, // 0028 SETMBR R0 K11 R5 - 0x8C140107, // 0029 GETMET R5 R0 K7 - 0x881C0508, // 002A GETMBR R7 R2 K8 + 0x90022805, // 0028 SETMBR R0 K20 R5 + 0x8C140110, // 0029 GETMET R5 R0 K16 + 0x881C0511, // 002A GETMBR R7 R2 K17 0x5C200200, // 002B MOVE R8 R1 0x7C140600, // 002C CALL R5 3 - 0x8814010B, // 002D GETMBR R5 R0 K11 + 0x88140114, // 002D GETMBR R5 R0 K20 0xA0000000, // 002E CLOSE R0 0x80040A00, // 002F RET 1 R5 0x70020012, // 0030 JMP #0044 - 0x40160D0D, // 0031 CONNECT R5 K6 K13 + 0x40161F15, // 0031 CONNECT R5 K15 K21 0x94140605, // 0032 GETIDX R5 R3 R5 - 0x1C140B0E, // 0033 EQ R5 R5 K14 + 0x1C140B16, // 0033 EQ R5 R5 K22 0x7816000B, // 0034 JMPF R5 #0041 - 0x8814010F, // 0035 GETMBR R5 R0 K15 + 0x88140117, // 0035 GETMBR R5 R0 K23 0x4C180000, // 0036 LDNIL R6 0x1C140A06, // 0037 EQ R5 R5 R6 0x78160003, // 0038 JMPF R5 #003D - 0x8C14090C, // 0039 GETMET R5 R4 K12 - 0x881C0110, // 003A GETMBR R7 R0 K16 + 0x8C140902, // 0039 GETMET R5 R4 K2 + 0x881C0118, // 003A GETMBR R7 R0 K24 0x7C140400, // 003B CALL R5 2 - 0x90021E05, // 003C SETMBR R0 K15 R5 - 0x8814010F, // 003D GETMBR R5 R0 K15 + 0x90022E05, // 003C SETMBR R0 K23 R5 + 0x88140117, // 003D GETMBR R5 R0 K23 0xA0000000, // 003E CLOSE R0 0x80040A00, // 003F RET 1 R5 0x70020002, // 0040 JMP #0044 @@ -334,39 +381,32 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(toptr), - /* K2 */ be_nested_str_weak(cb_event_closure), - /* K3 */ be_nested_str_weak(function), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(lvgl_timer_dispatch), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0xA40A3200, // 0000 IMPORT R2 K25 + 0x8C0C051A, // 0001 GETMET R3 R2 K26 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 - 0x88100102, // 0004 GETMBR R4 R0 K2 + 0x88100105, // 0004 GETMBR R4 R0 K5 0x94100803, // 0005 GETIDX R4 R4 R3 0x60140004, // 0006 GETGBL R5 G4 0x5C180800, // 0007 MOVE R6 R4 0x7C140200, // 0008 CALL R5 1 - 0x1C140B03, // 0009 EQ R5 R5 K3 + 0x1C140B07, // 0009 EQ R5 R5 K7 0x78160003, // 000A JMPF R5 #000F 0x5C140800, // 000B MOVE R5 R4 0x5C180600, // 000C MOVE R6 R3 0x7C140200, // 000D CALL R5 1 0x7002000A, // 000E JMP #001A - 0x58140004, // 000F LDCONST R5 K4 + 0x5814000F, // 000F LDCONST R5 K15 0x6018000C, // 0010 GETGBL R6 G12 0x5C1C0800, // 0011 MOVE R7 R4 0x7C180200, // 0012 CALL R6 1 @@ -375,7 +415,7 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ 0x94180805, // 0015 GETIDX R6 R4 R5 0x5C1C0600, // 0016 MOVE R7 R3 0x7C180200, // 0017 CALL R6 1 - 0x00140B05, // 0018 ADD R5 R5 K5 + 0x00140B1B, // 0018 ADD R5 R5 K27 0x7001FFF5, // 0019 JMP #0010 0x80000000, // 001A RET 0 }) @@ -391,57 +431,46 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(toptr), - /* K2 */ be_nested_str_weak(event), - /* K3 */ be_nested_str_weak(_p), - /* K4 */ be_nested_str_weak(lv), - /* K5 */ be_nested_str_weak(lv_event), - /* K6 */ be_nested_str_weak(get_target), - /* K7 */ be_nested_str_weak(get_object_from_ptr), - /* K8 */ be_nested_str_weak(cb_event_closure), - /* K9 */ be_nested_str_weak(function), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(lvgl_event_dispatch), &be_const_str_solidified, ( &(const binstruction[42]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100701, // 0001 GETMET R4 R3 K1 + 0xA40E3200, // 0000 IMPORT R3 K25 + 0x8C10071A, // 0001 GETMET R4 R3 K26 0x5C180400, // 0002 MOVE R6 R2 0x7C100400, // 0003 CALL R4 2 - 0x88140102, // 0004 GETMBR R5 R0 K2 + 0x8814011C, // 0004 GETMBR R5 R0 K28 0x78160002, // 0005 JMPF R5 #0009 - 0x88140102, // 0006 GETMBR R5 R0 K2 - 0x90160604, // 0007 SETMBR R5 K3 R4 + 0x8814011C, // 0006 GETMBR R5 R0 K28 + 0x90162204, // 0007 SETMBR R5 K17 R4 0x70020004, // 0008 JMP #000E - 0xB8160800, // 0009 GETNGBL R5 K4 - 0x8C140B05, // 000A GETMET R5 R5 K5 + 0xB8161A00, // 0009 GETNGBL R5 K13 + 0x8C140B1D, // 000A GETMET R5 R5 K29 0x5C1C0800, // 000B MOVE R7 R4 0x7C140400, // 000C CALL R5 2 - 0x90020405, // 000D SETMBR R0 K2 R5 - 0x88140102, // 000E GETMBR R5 R0 K2 - 0x8C140B06, // 000F GETMET R5 R5 K6 + 0x90023805, // 000D SETMBR R0 K28 R5 + 0x8814011C, // 000E GETMBR R5 R0 K28 + 0x8C140B1E, // 000F GETMET R5 R5 K30 0x7C140200, // 0010 CALL R5 1 - 0x8C180107, // 0011 GETMET R6 R0 K7 + 0x8C18011F, // 0011 GETMET R6 R0 K31 0x5C200A00, // 0012 MOVE R8 R5 0x7C180400, // 0013 CALL R6 2 - 0x881C0108, // 0014 GETMBR R7 R0 K8 + 0x881C0105, // 0014 GETMBR R7 R0 K5 0x941C0E05, // 0015 GETIDX R7 R7 R5 0x60200004, // 0016 GETGBL R8 G4 0x5C240E00, // 0017 MOVE R9 R7 0x7C200200, // 0018 CALL R8 1 - 0x1C201109, // 0019 EQ R8 R8 K9 + 0x1C201107, // 0019 EQ R8 R8 K7 0x78220004, // 001A JMPF R8 #0020 0x5C200E00, // 001B MOVE R8 R7 0x5C240C00, // 001C MOVE R9 R6 - 0x88280102, // 001D GETMBR R10 R0 K2 + 0x8828011C, // 001D GETMBR R10 R0 K28 0x7C200400, // 001E CALL R8 2 0x70020008, // 001F JMP #0029 0x6020000C, // 0020 GETGBL R8 G12 @@ -451,7 +480,7 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ 0x78220003, // 0024 JMPF R8 #0029 0x94200E01, // 0025 GETIDX R8 R7 R1 0x5C240C00, // 0026 MOVE R9 R6 - 0x88280102, // 0027 GETMBR R10 R0 K2 + 0x8828011C, // 0027 GETMBR R10 R0 K28 0x7C200400, // 0028 CALL R8 2 0x80000000, // 0029 RET 0 }) @@ -467,34 +496,30 @@ be_local_closure(class_LVGL_glob_deregister_obj, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(cb_obj), - /* K1 */ be_nested_str_weak(remove), - /* K2 */ be_nested_str_weak(cb_event_closure), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(deregister_obj), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080120, // 0000 GETMBR R2 R0 K32 0x4C0C0000, // 0001 LDNIL R3 0x20080403, // 0002 NE R2 R2 R3 0x780A0003, // 0003 JMPF R2 #0008 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x88080120, // 0004 GETMBR R2 R0 K32 + 0x8C080521, // 0005 GETMET R2 R2 K33 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 - 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x88080105, // 0008 GETMBR R2 R0 K5 0x4C0C0000, // 0009 LDNIL R3 0x20080403, // 000A NE R2 R2 R3 0x780A0003, // 000B JMPF R2 #0010 - 0x88080102, // 000C GETMBR R2 R0 K2 - 0x8C080501, // 000D GETMET R2 R2 K1 + 0x88080105, // 000C GETMBR R2 R0 K5 + 0x8C080521, // 000D GETMET R2 R2 K33 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80000000, // 0010 RET 0 @@ -511,37 +536,33 @@ be_local_closure(class_LVGL_glob_register_obj, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(cb_obj), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(_p), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(register_obj), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080120, // 0000 GETMBR R2 R0 K32 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0002, // 0003 JMPF R2 #0007 0x60080013, // 0004 GETGBL R2 G19 0x7C080000, // 0005 CALL R2 0 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x8C080501, // 0008 GETMET R2 R2 K1 - 0x88100302, // 0009 GETMBR R4 R1 K2 + 0x90024002, // 0006 SETMBR R0 K32 R2 + 0x88080120, // 0007 GETMBR R2 R0 K32 + 0x8C080506, // 0008 GETMET R2 R2 K6 + 0x88100311, // 0009 GETMBR R4 R1 K17 0x7C080400, // 000A CALL R2 2 0x780A0002, // 000B JMPF R2 #000F 0x50080200, // 000C LDBOOL R2 1 0 0x80040400, // 000D RET 1 R2 0x70020004, // 000E JMP #0014 - 0x88080100, // 000F GETMBR R2 R0 K0 - 0x880C0302, // 0010 GETMBR R3 R1 K2 + 0x88080120, // 000F GETMBR R2 R0 K32 + 0x880C0311, // 0010 GETMBR R3 R1 K17 0x98080601, // 0011 SETIDX R2 R3 R1 0x50080000, // 0012 LDBOOL R2 0 0 0x80040400, // 0013 RET 1 R2 @@ -559,74 +580,59 @@ be_local_closure(class_LVGL_glob_widget_event_impl, /* name */ be_nested_proto( 12, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(lv), - /* K2 */ be_nested_str_weak(lv_obj_class), - /* K3 */ be_nested_str_weak(lv_event), - /* K4 */ be_nested_str_weak(toptr), - /* K5 */ be_nested_str_weak(get_target_obj), - /* K6 */ be_nested_str_weak(get_object_from_ptr), - /* K7 */ be_nested_str_weak(_p), - /* K8 */ be_nested_str_weak(instance), - /* K9 */ be_nested_str_weak(get_code), - /* K10 */ be_nested_str_weak(EVENT_DELETE), - /* K11 */ be_nested_str_weak(get), - /* K12 */ be_nested_str_weak(before_del), - /* K13 */ be_nested_str_weak(widget_event), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(widget_event_impl), &be_const_str_solidified, ( &(const binstruction[47]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 + 0xA40E3200, // 0000 IMPORT R3 K25 + 0xB8121A00, // 0001 GETNGBL R4 K13 + 0x8C100922, // 0002 GETMET R4 R4 K34 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 - 0xB8160200, // 0005 GETNGBL R5 K1 - 0x8C140B03, // 0006 GETMET R5 R5 K3 - 0x8C1C0704, // 0007 GETMET R7 R3 K4 + 0xB8161A00, // 0005 GETNGBL R5 K13 + 0x8C140B1D, // 0006 GETMET R5 R5 K29 + 0x8C1C071A, // 0007 GETMET R7 R3 K26 0x5C240400, // 0008 MOVE R9 R2 0x7C1C0400, // 0009 CALL R7 2 0x7C140400, // 000A CALL R5 2 - 0x8C180B05, // 000B GETMET R6 R5 K5 + 0x8C180B23, // 000B GETMET R6 R5 K35 0x7C180200, // 000C CALL R6 1 - 0x8C1C0106, // 000D GETMET R7 R0 K6 - 0x88240D07, // 000E GETMBR R9 R6 K7 + 0x8C1C011F, // 000D GETMET R7 R0 K31 + 0x88240D11, // 000E GETMBR R9 R6 K17 0x7C1C0400, // 000F CALL R7 2 0x60200004, // 0010 GETGBL R8 G4 0x5C240E00, // 0011 MOVE R9 R7 0x7C200200, // 0012 CALL R8 1 - 0x1C201108, // 0013 EQ R8 R8 K8 + 0x1C201124, // 0013 EQ R8 R8 K36 0x78220018, // 0014 JMPF R8 #002E - 0x8C200B09, // 0015 GETMET R8 R5 K9 + 0x8C200B25, // 0015 GETMET R8 R5 K37 0x7C200200, // 0016 CALL R8 1 - 0xB8260200, // 0017 GETNGBL R9 K1 - 0x8824130A, // 0018 GETMBR R9 R9 K10 + 0xB8261A00, // 0017 GETNGBL R9 K13 + 0x8824130E, // 0018 GETMBR R9 R9 K14 0x1C201009, // 0019 EQ R8 R8 R9 0x78220009, // 001A JMPF R8 #0025 - 0x8C20070B, // 001B GETMET R8 R3 K11 + 0x8C200726, // 001B GETMET R8 R3 K38 0x5C280E00, // 001C MOVE R10 R7 - 0x582C000C, // 001D LDCONST R11 K12 + 0x582C0027, // 001D LDCONST R11 K39 0x7C200600, // 001E CALL R8 3 0x78220004, // 001F JMPF R8 #0025 - 0x8C200F0C, // 0020 GETMET R8 R7 K12 + 0x8C200F27, // 0020 GETMET R8 R7 K39 0x5C280800, // 0021 MOVE R10 R4 0x5C2C0A00, // 0022 MOVE R11 R5 0x7C200600, // 0023 CALL R8 3 0x70020008, // 0024 JMP #002E - 0x8C20070B, // 0025 GETMET R8 R3 K11 + 0x8C200726, // 0025 GETMET R8 R3 K38 0x5C280E00, // 0026 MOVE R10 R7 - 0x582C000D, // 0027 LDCONST R11 K13 + 0x582C0028, // 0027 LDCONST R11 K40 0x7C200600, // 0028 CALL R8 3 0x78220003, // 0029 JMPF R8 #002E - 0x8C200F0D, // 002A GETMET R8 R7 K13 + 0x8C200F28, // 002A GETMET R8 R7 K40 0x5C280800, // 002B MOVE R10 R4 0x5C2C0A00, // 002C MOVE R11 R5 0x7C200600, // 002D CALL R8 3 @@ -644,43 +650,35 @@ be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(lv), - /* K2 */ be_nested_str_weak(lv_obj_class), - /* K3 */ be_nested_str_weak(get_object_from_ptr), - /* K4 */ be_nested_str_weak(instance), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_nested_str_weak(widget_destructor), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(widget_dtor_impl), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 + 0xA40E3200, // 0000 IMPORT R3 K25 + 0xB8121A00, // 0001 GETNGBL R4 K13 + 0x8C100922, // 0002 GETMET R4 R4 K34 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 - 0x8C140103, // 0005 GETMET R5 R0 K3 + 0x8C14011F, // 0005 GETMET R5 R0 K31 0x5C1C0400, // 0006 MOVE R7 R2 0x7C140400, // 0007 CALL R5 2 0x60180004, // 0008 GETGBL R6 G4 0x5C1C0A00, // 0009 MOVE R7 R5 0x7C180200, // 000A CALL R6 1 - 0x1C180D04, // 000B EQ R6 R6 K4 + 0x1C180D24, // 000B EQ R6 R6 K36 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180705, // 000D GETMET R6 R3 K5 + 0x8C180726, // 000D GETMET R6 R3 K38 0x5C200A00, // 000E MOVE R8 R5 - 0x58240006, // 000F LDCONST R9 K6 + 0x58240029, // 000F LDCONST R9 K41 0x7C180600, // 0010 CALL R6 3 0x781A0002, // 0011 JMPF R6 #0015 - 0x8C180B06, // 0012 GETMET R6 R5 K6 + 0x8C180B29, // 0012 GETMET R6 R5 K41 0x5C200800, // 0013 MOVE R8 R4 0x7C180400, // 0014 CALL R6 2 0x80000000, // 0015 RET 0 @@ -697,52 +695,42 @@ be_local_closure(class_LVGL_glob_widget_ctor_impl, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(lv), - /* K2 */ be_nested_str_weak(lv_obj_class), - /* K3 */ be_nested_str_weak(get_object_from_ptr), - /* K4 */ be_nested_str_weak(cb_obj), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(instance), - /* K7 */ be_nested_str_weak(get), - /* K8 */ be_nested_str_weak(widget_constructor), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(widget_ctor_impl), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 + 0xA40E3200, // 0000 IMPORT R3 K25 + 0xB8121A00, // 0001 GETNGBL R4 K13 + 0x8C100922, // 0002 GETMET R4 R4 K34 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 - 0x8C140103, // 0005 GETMET R5 R0 K3 + 0x8C14011F, // 0005 GETMET R5 R0 K31 0x5C1C0400, // 0006 MOVE R7 R2 0x7C140400, // 0007 CALL R5 2 - 0x88180104, // 0008 GETMBR R6 R0 K4 - 0x8C180D05, // 0009 GETMET R6 R6 K5 + 0x88180120, // 0008 GETMBR R6 R0 K32 + 0x8C180D2A, // 0009 GETMET R6 R6 K42 0x5C200A00, // 000A MOVE R8 R5 0x7C180400, // 000B CALL R6 2 0x781A0001, // 000C JMPF R6 #000F - 0x88180104, // 000D GETMBR R6 R0 K4 + 0x88180120, // 000D GETMBR R6 R0 K32 0x94140C05, // 000E GETIDX R5 R6 R5 0x60180004, // 000F GETGBL R6 G4 0x5C1C0A00, // 0010 MOVE R7 R5 0x7C180200, // 0011 CALL R6 1 - 0x1C180D06, // 0012 EQ R6 R6 K6 + 0x1C180D24, // 0012 EQ R6 R6 K36 0x781A0007, // 0013 JMPF R6 #001C - 0x8C180707, // 0014 GETMET R6 R3 K7 + 0x8C180726, // 0014 GETMET R6 R3 K38 0x5C200A00, // 0015 MOVE R8 R5 - 0x58240008, // 0016 LDCONST R9 K8 + 0x5824002B, // 0016 LDCONST R9 K43 0x7C180600, // 0017 CALL R6 3 0x781A0002, // 0018 JMPF R6 #001C - 0x8C180B08, // 0019 GETMET R6 R5 K8 + 0x8C180B2B, // 0019 GETMET R6 R5 K43 0x5C200800, // 001A MOVE R8 R4 0x7C180400, // 001B CALL R6 2 0x80000000, // 001C RET 0 @@ -759,20 +747,18 @@ be_local_closure(class_LVGL_glob__anonymous_, /* name */ be_nested_proto( 2, /* nstack */ 0, /* argc */ - 0, /* varg */ + 8, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(LVG_X3A_X20call_X20to_X20unsupported_X20callback), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(_anonymous_), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x60000001, // 0000 GETGBL R0 G1 - 0x58040000, // 0001 LDCONST R1 K0 + 0x5804002C, // 0001 LDCONST R1 K44 0x7C000200, // 0002 CALL R0 1 0x80000000, // 0003 RET 0 }) @@ -788,7 +774,7 @@ be_local_closure(class_LVGL_glob_init, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -821,19 +807,15 @@ be_local_closure(class_LVGL_glob_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(cb), - /* K1 */ be_nested_str_weak(add_handler), - /* K2 */ be_nested_str_weak(lv_extra), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 + 0xA4060200, // 0000 IMPORT R1 K1 + 0x8C08032D, // 0001 GETMET R2 R1 K45 0x84100000, // 0002 CLOSURE R4 P0 0x7C080400, // 0003 CALL R2 2 - 0xA40A0400, // 0004 IMPORT R2 K2 + 0xA40A5C00, // 0004 IMPORT R2 K46 0xA0000000, // 0005 CLOSE R0 0x80000000, // 0006 RET 0 }) @@ -849,25 +831,22 @@ be_local_closure(class_LVGL_glob_get_object_from_ptr, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(cb_obj), - /* K1 */ be_nested_str_weak(find), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(get_object_from_ptr), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080120, // 0000 GETMBR R2 R0 K32 0x4C0C0000, // 0001 LDNIL R3 0x20080403, // 0002 NE R2 R2 R3 0x780A0004, // 0003 JMPF R2 #0009 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x88080120, // 0004 GETMBR R2 R0 K32 + 0x8C08052A, // 0005 GETMET R2 R2 K42 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x80040400, // 0008 RET 1 R2 @@ -885,128 +864,100 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(lv), - /* K2 */ be_nested_str_weak(lv_obj), - /* K3 */ be_nested_str_weak(value_error), - /* K4 */ be_nested_str_weak(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj), - /* K5 */ be_nested_str_weak(widget_struct_by_class), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(widget_cb), - /* K8 */ be_nested_str_weak(widget_struct_default), - /* K9 */ be_nested_str_weak(copy), - /* K10 */ be_nested_str_weak(base_class), - /* K11 */ be_nested_str_weak(_class), - /* K12 */ be_nested_str_weak(contains), - /* K13 */ be_nested_str_weak(widget_width_def), - /* K14 */ be_nested_str_weak(width_def), - /* K15 */ be_nested_str_weak(widget_height_def), - /* K16 */ be_nested_str_weak(height_def), - /* K17 */ be_nested_str_weak(widget_editable), - /* K18 */ be_nested_str_weak(editable), - /* K19 */ be_nested_str_weak(widget_group_def), - /* K20 */ be_nested_str_weak(group_def), - /* K21 */ be_nested_str_weak(widget_instance_size), - /* K22 */ be_nested_str_weak(instance_size), - /* K23 */ be_nested_str_weak(obj_class_create_obj), - /* K24 */ be_nested_str_weak(_p), - /* K25 */ be_nested_str_weak(register_obj), - /* K26 */ be_nested_str_weak(class_init_obj), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(create_custom_widget), &be_const_str_solidified, ( &(const binstruction[86]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 + 0xA40E3200, // 0000 IMPORT R3 K25 0x6010000F, // 0001 GETGBL R4 G15 0x5C140200, // 0002 MOVE R5 R1 - 0xB81A0200, // 0003 GETNGBL R6 K1 - 0x88180D02, // 0004 GETMBR R6 R6 K2 + 0xB81A1A00, // 0003 GETNGBL R6 K13 + 0x88180D2F, // 0004 GETMBR R6 R6 K47 0x7C100400, // 0005 CALL R4 2 0x74120000, // 0006 JMPT R4 #0008 - 0xB0060704, // 0007 RAISE 1 K3 K4 - 0x88100105, // 0008 GETMBR R4 R0 K5 + 0xB0066131, // 0007 RAISE 1 K48 K49 + 0x88100132, // 0008 GETMBR R4 R0 K50 0x4C140000, // 0009 LDNIL R5 0x1C100805, // 000A EQ R4 R4 R5 0x78120002, // 000B JMPF R4 #000F 0x60100013, // 000C GETGBL R4 G19 0x7C100000, // 000D CALL R4 0 - 0x90020A04, // 000E SETMBR R0 K5 R4 + 0x90026404, // 000E SETMBR R0 K50 R4 0x60100005, // 000F GETGBL R4 G5 0x5C140200, // 0010 MOVE R5 R1 0x7C100200, // 0011 CALL R4 1 - 0x88140105, // 0012 GETMBR R5 R0 K5 - 0x8C140B06, // 0013 GETMET R5 R5 K6 + 0x88140132, // 0012 GETMBR R5 R0 K50 + 0x8C140B2A, // 0013 GETMET R5 R5 K42 0x5C1C0800, // 0014 MOVE R7 R4 0x7C140400, // 0015 CALL R5 2 0x4C180000, // 0016 LDNIL R6 0x1C180A06, // 0017 EQ R6 R5 R6 0x781A002F, // 0018 JMPF R6 #0049 - 0x8C180107, // 0019 GETMET R6 R0 K7 + 0x8C180133, // 0019 GETMET R6 R0 K51 0x7C180200, // 001A CALL R6 1 - 0x88180108, // 001B GETMBR R6 R0 K8 - 0x8C180D09, // 001C GETMET R6 R6 K9 + 0x88180134, // 001B GETMBR R6 R0 K52 + 0x8C180D35, // 001C GETMET R6 R6 K53 0x7C180200, // 001D CALL R6 1 0x5C140C00, // 001E MOVE R5 R6 0x60180003, // 001F GETGBL R6 G3 0x5C1C0200, // 0020 MOVE R7 R1 0x7C180200, // 0021 CALL R6 1 - 0x88180D0B, // 0022 GETMBR R6 R6 K11 - 0x90161406, // 0023 SETMBR R5 K10 R6 - 0x8C18070C, // 0024 GETMET R6 R3 K12 + 0x88180D37, // 0022 GETMBR R6 R6 K55 + 0x90166C06, // 0023 SETMBR R5 K54 R6 + 0x8C180706, // 0024 GETMET R6 R3 K6 0x5C200200, // 0025 MOVE R8 R1 - 0x5824000D, // 0026 LDCONST R9 K13 + 0x58240038, // 0026 LDCONST R9 K56 0x7C180600, // 0027 CALL R6 3 0x781A0001, // 0028 JMPF R6 #002B - 0x8818030D, // 0029 GETMBR R6 R1 K13 - 0x90161C06, // 002A SETMBR R5 K14 R6 - 0x8C18070C, // 002B GETMET R6 R3 K12 + 0x88180338, // 0029 GETMBR R6 R1 K56 + 0x90167206, // 002A SETMBR R5 K57 R6 + 0x8C180706, // 002B GETMET R6 R3 K6 0x5C200200, // 002C MOVE R8 R1 - 0x5824000F, // 002D LDCONST R9 K15 + 0x5824003A, // 002D LDCONST R9 K58 0x7C180600, // 002E CALL R6 3 0x781A0001, // 002F JMPF R6 #0032 - 0x8818030F, // 0030 GETMBR R6 R1 K15 - 0x90162006, // 0031 SETMBR R5 K16 R6 - 0x8C18070C, // 0032 GETMET R6 R3 K12 + 0x8818033A, // 0030 GETMBR R6 R1 K58 + 0x90167606, // 0031 SETMBR R5 K59 R6 + 0x8C180706, // 0032 GETMET R6 R3 K6 0x5C200200, // 0033 MOVE R8 R1 - 0x58240011, // 0034 LDCONST R9 K17 + 0x5824003C, // 0034 LDCONST R9 K60 0x7C180600, // 0035 CALL R6 3 0x781A0001, // 0036 JMPF R6 #0039 - 0x88180311, // 0037 GETMBR R6 R1 K17 - 0x90162406, // 0038 SETMBR R5 K18 R6 - 0x8C18070C, // 0039 GETMET R6 R3 K12 + 0x8818033C, // 0037 GETMBR R6 R1 K60 + 0x90167A06, // 0038 SETMBR R5 K61 R6 + 0x8C180706, // 0039 GETMET R6 R3 K6 0x5C200200, // 003A MOVE R8 R1 - 0x58240013, // 003B LDCONST R9 K19 + 0x5824003E, // 003B LDCONST R9 K62 0x7C180600, // 003C CALL R6 3 0x781A0001, // 003D JMPF R6 #0040 - 0x88180313, // 003E GETMBR R6 R1 K19 - 0x90162806, // 003F SETMBR R5 K20 R6 - 0x8C18070C, // 0040 GETMET R6 R3 K12 + 0x8818033E, // 003E GETMBR R6 R1 K62 + 0x90167E06, // 003F SETMBR R5 K63 R6 + 0x8C180706, // 0040 GETMET R6 R3 K6 0x5C200200, // 0041 MOVE R8 R1 - 0x58240015, // 0042 LDCONST R9 K21 + 0x58240040, // 0042 LDCONST R9 K64 0x7C180600, // 0043 CALL R6 3 0x781A0001, // 0044 JMPF R6 #0047 - 0x88180315, // 0045 GETMBR R6 R1 K21 - 0x90162C06, // 0046 SETMBR R5 K22 R6 - 0x88180105, // 0047 GETMBR R6 R0 K5 + 0x88180340, // 0045 GETMBR R6 R1 K64 + 0x90168206, // 0046 SETMBR R5 K65 R6 + 0x88180132, // 0047 GETMBR R6 R0 K50 0x98180805, // 0048 SETIDX R6 R4 R5 - 0xB81A0200, // 0049 GETNGBL R6 K1 - 0x8C180D17, // 004A GETMET R6 R6 K23 + 0xB81A1A00, // 0049 GETNGBL R6 K13 + 0x8C180D42, // 004A GETMET R6 R6 K66 0x5C200A00, // 004B MOVE R8 R5 0x5C240400, // 004C MOVE R9 R2 0x7C180600, // 004D CALL R6 3 - 0x881C0D18, // 004E GETMBR R7 R6 K24 - 0x90063007, // 004F SETMBR R1 K24 R7 - 0x8C1C0119, // 0050 GETMET R7 R0 K25 + 0x881C0D11, // 004E GETMBR R7 R6 K17 + 0x90062207, // 004F SETMBR R1 K17 R7 + 0x8C1C010B, // 0050 GETMET R7 R0 K11 0x5C240200, // 0051 MOVE R9 R1 0x7C1C0400, // 0052 CALL R7 2 - 0x8C1C031A, // 0053 GETMET R7 R1 K26 + 0x8C1C0343, // 0053 GETMET R7 R1 K67 0x7C1C0200, // 0054 CALL R7 1 0x80000000, // 0055 RET 0 }) @@ -1022,7 +973,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1104,78 +1055,62 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(cb), - /* K1 */ be_nested_str_weak(widget_ctor_cb), - /* K2 */ be_nested_str_weak(gen_cb), - /* K3 */ be_nested_str_weak(widget_dtor_cb), - /* K4 */ be_nested_str_weak(widget_event_cb), - /* K5 */ be_nested_str_weak(widget_struct_default), - /* K6 */ be_nested_str_weak(lv), - /* K7 */ be_nested_str_weak(lv_obj_class), - /* K8 */ be_nested_str_weak(lv_obj), - /* K9 */ be_nested_str_weak(_class), - /* K10 */ be_nested_str_weak(copy), - /* K11 */ be_nested_str_weak(base_class), - /* K12 */ be_nested_str_weak(constructor_cb), - /* K13 */ be_nested_str_weak(destructor_cb), - /* K14 */ be_nested_str_weak(event_cb), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(widget_cb), &be_const_str_solidified, ( &(const binstruction[54]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0xA4060200, // 0000 IMPORT R1 K1 + 0x88080144, // 0001 GETMBR R2 R0 K68 0x4C0C0000, // 0002 LDNIL R3 0x1C080403, // 0003 EQ R2 R2 R3 0x780A0003, // 0004 JMPF R2 #0009 0x8C080302, // 0005 GETMET R2 R1 K2 0x84100000, // 0006 CLOSURE R4 P0 0x7C080400, // 0007 CALL R2 2 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x88080103, // 0009 GETMBR R2 R0 K3 + 0x90028802, // 0008 SETMBR R0 K68 R2 + 0x88080145, // 0009 GETMBR R2 R0 K69 0x4C0C0000, // 000A LDNIL R3 0x1C080403, // 000B EQ R2 R2 R3 0x780A0003, // 000C JMPF R2 #0011 0x8C080302, // 000D GETMET R2 R1 K2 0x84100001, // 000E CLOSURE R4 P1 0x7C080400, // 000F CALL R2 2 - 0x90020602, // 0010 SETMBR R0 K3 R2 - 0x88080104, // 0011 GETMBR R2 R0 K4 + 0x90028A02, // 0010 SETMBR R0 K69 R2 + 0x88080146, // 0011 GETMBR R2 R0 K70 0x4C0C0000, // 0012 LDNIL R3 0x1C080403, // 0013 EQ R2 R2 R3 0x780A0003, // 0014 JMPF R2 #0019 0x8C080302, // 0015 GETMET R2 R1 K2 0x84100002, // 0016 CLOSURE R4 P2 0x7C080400, // 0017 CALL R2 2 - 0x90020802, // 0018 SETMBR R0 K4 R2 - 0x88080105, // 0019 GETMBR R2 R0 K5 + 0x90028C02, // 0018 SETMBR R0 K70 R2 + 0x88080134, // 0019 GETMBR R2 R0 K52 0x4C0C0000, // 001A LDNIL R3 0x1C080403, // 001B EQ R2 R2 R3 0x780A0016, // 001C JMPF R2 #0034 - 0xB80A0C00, // 001D GETNGBL R2 K6 - 0x8C080507, // 001E GETMET R2 R2 K7 - 0xB8120C00, // 001F GETNGBL R4 K6 - 0x88100908, // 0020 GETMBR R4 R4 K8 - 0x88100909, // 0021 GETMBR R4 R4 K9 + 0xB80A1A00, // 001D GETNGBL R2 K13 + 0x8C080522, // 001E GETMET R2 R2 K34 + 0xB8121A00, // 001F GETNGBL R4 K13 + 0x8810092F, // 0020 GETMBR R4 R4 K47 + 0x88100937, // 0021 GETMBR R4 R4 K55 0x7C080400, // 0022 CALL R2 2 - 0x8C08050A, // 0023 GETMET R2 R2 K10 + 0x8C080535, // 0023 GETMET R2 R2 K53 0x7C080200, // 0024 CALL R2 1 - 0x90020A02, // 0025 SETMBR R0 K5 R2 - 0x88080105, // 0026 GETMBR R2 R0 K5 - 0xB80E0C00, // 0027 GETNGBL R3 K6 - 0x880C0708, // 0028 GETMBR R3 R3 K8 - 0x880C0709, // 0029 GETMBR R3 R3 K9 - 0x900A1603, // 002A SETMBR R2 K11 R3 - 0x88080105, // 002B GETMBR R2 R0 K5 - 0x880C0101, // 002C GETMBR R3 R0 K1 - 0x900A1803, // 002D SETMBR R2 K12 R3 - 0x88080105, // 002E GETMBR R2 R0 K5 - 0x880C0103, // 002F GETMBR R3 R0 K3 - 0x900A1A03, // 0030 SETMBR R2 K13 R3 - 0x88080105, // 0031 GETMBR R2 R0 K5 - 0x880C0104, // 0032 GETMBR R3 R0 K4 - 0x900A1C03, // 0033 SETMBR R2 K14 R3 + 0x90026802, // 0025 SETMBR R0 K52 R2 + 0x88080134, // 0026 GETMBR R2 R0 K52 + 0xB80E1A00, // 0027 GETNGBL R3 K13 + 0x880C072F, // 0028 GETMBR R3 R3 K47 + 0x880C0737, // 0029 GETMBR R3 R3 K55 + 0x900A6C03, // 002A SETMBR R2 K54 R3 + 0x88080134, // 002B GETMBR R2 R0 K52 + 0x880C0144, // 002C GETMBR R3 R0 K68 + 0x900A8E03, // 002D SETMBR R2 K71 R3 + 0x88080134, // 002E GETMBR R2 R0 K52 + 0x880C0145, // 002F GETMBR R3 R0 K69 + 0x900A9003, // 0030 SETMBR R2 K72 R3 + 0x88080134, // 0031 GETMBR R2 R0 K52 + 0x880C0146, // 0032 GETMBR R3 R0 K70 + 0x900A0003, // 0033 SETMBR R2 K0 R3 0xA0000000, // 0034 CLOSE R0 0x80000000, // 0035 RET 0 }) @@ -1191,23 +1126,19 @@ be_local_closure(class_LVGL_glob_remove_cb, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(_p), - /* K2 */ be_nested_str_weak(deregister_obj), - }), + &be_ktab_class_LVGL_glob, /* shared constants */ be_str_weak(remove_cb), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0301, // 0001 GETMBR R3 R1 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 + 0xA40A3200, // 0000 IMPORT R2 K25 + 0x880C0311, // 0001 GETMBR R3 R1 K17 + 0x8C100149, // 0002 GETMET R4 R0 K73 0x5C180600, // 0003 MOVE R6 R3 0x7C100400, // 0004 CALL R4 2 0x80000000, // 0005 RET 0 diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h index a175d780a..21d7cc39e 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h +++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h @@ -3,6 +3,75 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_lvh_root; +// compact class 'lvh_root' ktab size: 64, total: 95 (saved 248 bytes) +static const bvalue be_ktab_class_lvh_root[64] = { + /* K0 */ be_nested_str_weak(_text_rule_formula), + /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28), + /* K2 */ be_nested_str_weak(_X29), + /* K3 */ be_nested_str_weak(_text_rule_function), + /* K4 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20compile_X20_X27_X25s_X27_X20_X2D_X20_X25s_X20_X28_X25s_X29), + /* K5 */ be_nested_str_weak(_text_rule), + /* K6 */ be_nested_str_weak(_val_rule_function), + /* K7 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_val_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29), + /* K8 */ be_nested_str_weak(val), + /* K9 */ be_nested_str_weak(int), + /* K10 */ be_nested_str_weak(lv), + /* K11 */ be_nested_str_weak(font_embedded), + /* K12 */ be_nested_str_weak(robotocondensed), + /* K13 */ be_nested_str_weak(montserrat), + /* K14 */ be_nested_str_weak(HSP_X3A_X20Unsupported_X20font_X3A), + /* K15 */ be_nested_str_weak(string), + /* K16 */ be_nested_str_weak(split), + /* K17 */ be_nested_str_weak(_X3A), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str_weak(_X2D), + /* K20 */ be_const_int(0), + /* K21 */ be_const_int(2), + /* K22 */ be_nested_str_weak(concat), + /* K23 */ be_nested_str_weak(endswith), + /* K24 */ be_nested_str_weak(_X2Ettf), + /* K25 */ be_nested_str_weak(load_freetype_font), + /* K26 */ be_nested_str_weak(load_font), + /* K27 */ be_nested_str_weak(_val_rule_formula), + /* K28 */ be_nested_str_weak(_val), + /* K29 */ be_nested_str_weak(set_val), + /* K30 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_text_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29), + /* K31 */ be_nested_str_weak(_text_rule_format), + /* K32 */ be_nested_str_weak(), + /* K33 */ be_nested_str_weak(text), + /* K34 */ be_nested_str_weak(_meta), + /* K35 */ be_nested_str_weak(set_text), + /* K36 */ be_nested_str_weak(_page), + /* K37 */ be_nested_str_weak(_parent_lvh), + /* K38 */ be_nested_str_weak(_lv_class), + /* K39 */ be_nested_str_weak(_lv_obj), + /* K40 */ be_nested_str_weak(post_init), + /* K41 */ be_nested_str_weak(delete), + /* K42 */ be_const_class(be_class_lvh_root), + /* K43 */ be_nested_str_weak(resize), + /* K44 */ be_nested_str_weak(remove_val_rule), + /* K45 */ be_nested_str_weak(_val_rule), + /* K46 */ be_nested_str_weak(tasmota), + /* K47 */ be_nested_str_weak(add_rule), + /* K48 */ be_const_int(0), + /* K49 */ be_nested_str_weak(_digit2part), + /* K50 */ be_nested_str_weak(_digit2state), + /* K51 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i), + /* K52 */ be_nested_str_weak(value_error), + /* K53 */ be_nested_str_weak(remove_rule), + /* K54 */ be_nested_str_weak(color), + /* K55 */ be_nested_str_weak(type_error), + /* K56 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27), + /* K57 */ be_nested_str_weak(get_text), + /* K58 */ be_nested_str_weak(_X23), + /* K59 */ be_nested_str_weak(introspect), + /* K60 */ be_nested_str_weak(COLOR_), + /* K61 */ be_nested_str_weak(toupper), + /* K62 */ be_nested_str_weak(get), + /* K63 */ be_nested_str_weak(remove_text_rule), +}; + extern const bclass be_class_lvh_root; @@ -13,13 +82,13 @@ be_local_closure(class_lvh_root_get_text, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_text), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -38,15 +107,13 @@ be_local_closure(class_lvh_root_get_text_rule_formula, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_text_rule_formula), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_text_rule_formula), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -65,19 +132,13 @@ be_local_closure(class_lvh_root_set_text_rule_formula, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_text_rule_formula), - /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28), - /* K2 */ be_nested_str_weak(_X29), - /* K3 */ be_nested_str_weak(_text_rule_function), - /* K4 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20compile_X20_X27_X25s_X27_X20_X2D_X20_X25s_X20_X28_X25s_X29), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_text_rule_formula), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ @@ -123,19 +184,17 @@ be_local_closure(class_lvh_root_get_text_rule, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_text_rule), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_text_rule), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040105, // 0000 GETMBR R1 R0 K5 0x80040200, // 0001 RET 1 R1 }) ) @@ -150,13 +209,13 @@ be_local_closure(class_lvh_root_set_text, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_text), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -174,17 +233,13 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_val_rule_function), - /* K1 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_val_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29), - /* K2 */ be_nested_str_weak(val), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(val_rule_matched), &be_const_str_solidified, ( &(const binstruction[36]) { /* code */ @@ -196,7 +251,7 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */ 0x780E0001, // 0005 JMPF R3 #0008 0x500C0000, // 0006 LDBOOL R3 0 0 0x80040600, // 0007 RET 1 R3 - 0x880C0100, // 0008 GETMBR R3 R0 K0 + 0x880C0106, // 0008 GETMBR R3 R0 K6 0x4C100000, // 0009 LDNIL R4 0x20100604, // 000A NE R4 R3 R4 0x78120011, // 000B JMPF R4 #001E @@ -211,7 +266,7 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */ 0x70020007, // 0014 JMP #001D 0x60180001, // 0015 GETGBL R6 G1 0x601C0018, // 0016 GETGBL R7 G24 - 0x58200001, // 0017 LDCONST R8 K1 + 0x58200007, // 0017 LDCONST R8 K7 0x5C240800, // 0018 MOVE R9 R4 0x5C280A00, // 0019 MOVE R10 R5 0x7C1C0600, // 001A CALL R7 3 @@ -221,7 +276,7 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */ 0x60100009, // 001E GETGBL R4 G9 0x5C140400, // 001F MOVE R5 R2 0x7C100200, // 0020 CALL R4 1 - 0x90020404, // 0021 SETMBR R0 K2 R4 + 0x90021004, // 0021 SETMBR R0 K8 R4 0x50100000, // 0022 LDBOOL R4 0 0 0x80040800, // 0023 RET 1 R4 }) @@ -237,32 +292,13 @@ be_local_closure(class_lvh_root_parse_font, /* name */ be_nested_proto( 15, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(int), - /* K1 */ be_nested_str_weak(lv), - /* K2 */ be_nested_str_weak(font_embedded), - /* K3 */ be_nested_str_weak(robotocondensed), - /* K4 */ be_nested_str_weak(montserrat), - /* K5 */ be_nested_str_weak(HSP_X3A_X20Unsupported_X20font_X3A), - /* K6 */ be_nested_str_weak(string), - /* K7 */ be_nested_str_weak(split), - /* K8 */ be_nested_str_weak(_X3A), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(_X2D), - /* K11 */ be_const_int(0), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(concat), - /* K14 */ be_nested_str_weak(endswith), - /* K15 */ be_nested_str_weak(_X2Ettf), - /* K16 */ be_nested_str_weak(load_freetype_font), - /* K17 */ be_nested_str_weak(load_font), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(parse_font), &be_const_str_solidified, ( &(const binstruction[148]) { /* code */ @@ -270,12 +306,12 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0x600C0004, // 0001 GETGBL R3 G4 0x5C100200, // 0002 MOVE R4 R1 0x7C0C0200, // 0003 CALL R3 1 - 0x1C0C0700, // 0004 EQ R3 R3 K0 + 0x1C0C0709, // 0004 EQ R3 R3 K9 0x780E0020, // 0005 JMPF R3 #0027 0xA8020007, // 0006 EXBLK 0 #000F - 0xB80E0200, // 0007 GETNGBL R3 K1 - 0x8C0C0702, // 0008 GETMET R3 R3 K2 - 0x58140003, // 0009 LDCONST R5 K3 + 0xB80E1400, // 0007 GETNGBL R3 K10 + 0x8C0C070B, // 0008 GETMET R3 R3 K11 + 0x5814000C, // 0009 LDCONST R5 K12 0x5C180200, // 000A MOVE R6 R1 0x7C0C0600, // 000B CALL R3 3 0x5C080600, // 000C MOVE R2 R3 @@ -284,9 +320,9 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0xAC0C0000, // 000F CATCH R3 0 0 0x70020013, // 0010 JMP #0025 0xA8020007, // 0011 EXBLK 0 #001A - 0xB80E0200, // 0012 GETNGBL R3 K1 - 0x8C0C0702, // 0013 GETMET R3 R3 K2 - 0x58140004, // 0014 LDCONST R5 K4 + 0xB80E1400, // 0012 GETNGBL R3 K10 + 0x8C0C070B, // 0013 GETMET R3 R3 K11 + 0x5814000D, // 0014 LDCONST R5 K13 0x5C180200, // 0015 MOVE R6 R1 0x7C0C0600, // 0016 CALL R3 3 0x5C080600, // 0017 MOVE R2 R3 @@ -295,7 +331,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0xAC0C0000, // 001A CATCH R3 0 0 0x70020006, // 001B JMP #0023 0x600C0001, // 001C GETGBL R3 G1 - 0x58100005, // 001D LDCONST R4 K5 + 0x5810000E, // 001D LDCONST R4 K14 0x5C140200, // 001E MOVE R5 R1 0x7C0C0400, // 001F CALL R3 2 0x4C0C0000, // 0020 LDNIL R3 @@ -308,28 +344,28 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0x600C0004, // 0027 GETGBL R3 G4 0x5C100200, // 0028 MOVE R4 R1 0x7C0C0200, // 0029 CALL R3 1 - 0x1C0C0706, // 002A EQ R3 R3 K6 + 0x1C0C070F, // 002A EQ R3 R3 K15 0x780E005D, // 002B JMPF R3 #008A - 0xA40E0C00, // 002C IMPORT R3 K6 - 0x8C100707, // 002D GETMET R4 R3 K7 + 0xA40E1E00, // 002C IMPORT R3 K15 + 0x8C100710, // 002D GETMET R4 R3 K16 0x5C180200, // 002E MOVE R6 R1 - 0x581C0008, // 002F LDCONST R7 K8 - 0x58200009, // 0030 LDCONST R8 K9 + 0x581C0011, // 002F LDCONST R7 K17 + 0x58200012, // 0030 LDCONST R8 K18 0x7C100800, // 0031 CALL R4 4 - 0x8C140707, // 0032 GETMET R5 R3 K7 + 0x8C140710, // 0032 GETMET R5 R3 K16 0x5C1C0200, // 0033 MOVE R7 R1 - 0x5820000A, // 0034 LDCONST R8 K10 + 0x58200013, // 0034 LDCONST R8 K19 0x7C140600, // 0035 CALL R5 3 0x5C180200, // 0036 MOVE R6 R1 - 0x581C000B, // 0037 LDCONST R7 K11 + 0x581C0014, // 0037 LDCONST R7 K20 0x50200000, // 0038 LDBOOL R8 0 0 0x6024000C, // 0039 GETGBL R9 G12 0x5C280800, // 003A MOVE R10 R4 0x7C240200, // 003B CALL R9 1 - 0x24241309, // 003C GT R9 R9 K9 + 0x24241312, // 003C GT R9 R9 K18 0x78260003, // 003D JMPF R9 #0042 0x6024000C, // 003E GETGBL R9 G12 - 0x9428090B, // 003F GETIDX R10 R4 K11 + 0x94280914, // 003F GETIDX R10 R4 K20 0x7C240200, // 0040 CALL R9 1 0x74260000, // 0041 JMPT R9 #0043 0x50240001, // 0042 LDBOOL R9 0 1 @@ -337,7 +373,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0x6028000C, // 0044 GETGBL R10 G12 0x5C2C0A00, // 0045 MOVE R11 R5 0x7C280200, // 0046 CALL R10 1 - 0x2828150C, // 0047 GE R10 R10 K12 + 0x28281515, // 0047 GE R10 R10 K21 0x782A000B, // 0048 JMPF R10 #0055 0x60280009, // 0049 GETGBL R10 G9 0x542DFFFE, // 004A LDINT R11 -1 @@ -345,51 +381,51 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0x7C280200, // 004C CALL R10 1 0x5C1C1400, // 004D MOVE R7 R10 0x5429FFFD, // 004E LDINT R10 -2 - 0x402A160A, // 004F CONNECT R10 K11 R10 + 0x402A280A, // 004F CONNECT R10 K20 R10 0x94280A0A, // 0050 GETIDX R10 R5 R10 - 0x8C28150D, // 0051 GETMET R10 R10 K13 - 0x5830000A, // 0052 LDCONST R12 K10 + 0x8C281516, // 0051 GETMET R10 R10 K22 + 0x58300013, // 0052 LDCONST R12 K19 0x7C280400, // 0053 CALL R10 2 0x5C181400, // 0054 MOVE R6 R10 - 0x8C28070E, // 0055 GETMET R10 R3 K14 + 0x8C280717, // 0055 GETMET R10 R3 K23 0x5C300C00, // 0056 MOVE R12 R6 - 0x5834000F, // 0057 LDCONST R13 K15 + 0x58340018, // 0057 LDCONST R13 K24 0x50380200, // 0058 LDBOOL R14 1 0 0x7C280800, // 0059 CALL R10 4 0x782A0006, // 005A JMPF R10 #0062 - 0x8C280707, // 005B GETMET R10 R3 K7 + 0x8C280710, // 005B GETMET R10 R3 K16 0x5C300C00, // 005C MOVE R12 R6 - 0x58340008, // 005D LDCONST R13 K8 + 0x58340011, // 005D LDCONST R13 K17 0x7C280600, // 005E CALL R10 3 0x542DFFFE, // 005F LDINT R11 -1 0x9418140B, // 0060 GETIDX R6 R10 R11 0x50200200, // 0061 LDBOOL R8 1 0 0x78220007, // 0062 JMPF R8 #006B - 0xB82A0200, // 0063 GETNGBL R10 K1 - 0x8C281510, // 0064 GETMET R10 R10 K16 + 0xB82A1400, // 0063 GETNGBL R10 K10 + 0x8C281519, // 0064 GETMET R10 R10 K25 0x5C300C00, // 0065 MOVE R12 R6 0x5C340E00, // 0066 MOVE R13 R7 - 0x5838000B, // 0067 LDCONST R14 K11 + 0x58380014, // 0067 LDCONST R14 K20 0x7C280800, // 0068 CALL R10 4 0x5C081400, // 0069 MOVE R2 R10 0x7002001E, // 006A JMP #008A 0x78260005, // 006B JMPF R9 #0072 - 0xB82A0200, // 006C GETNGBL R10 K1 - 0x8C281511, // 006D GETMET R10 R10 K17 + 0xB82A1400, // 006C GETNGBL R10 K10 + 0x8C28151A, // 006D GETMET R10 R10 K26 0x5C300200, // 006E MOVE R12 R1 0x7C280400, // 006F CALL R10 2 0x5C081400, // 0070 MOVE R2 R10 0x70020017, // 0071 JMP #008A - 0x24280F0B, // 0072 GT R10 R7 K11 + 0x24280F14, // 0072 GT R10 R7 K20 0x782A0015, // 0073 JMPF R10 #008A 0x6028000C, // 0074 GETGBL R10 G12 0x5C2C0C00, // 0075 MOVE R11 R6 0x7C280200, // 0076 CALL R10 1 - 0x2428150B, // 0077 GT R10 R10 K11 + 0x24281514, // 0077 GT R10 R10 K20 0x782A0010, // 0078 JMPF R10 #008A 0xA8020007, // 0079 EXBLK 0 #0082 - 0xB82A0200, // 007A GETNGBL R10 K1 - 0x8C281502, // 007B GETMET R10 R10 K2 + 0xB82A1400, // 007A GETNGBL R10 K10 + 0x8C28150B, // 007B GETMET R10 R10 K11 0x5C300C00, // 007C MOVE R12 R6 0x5C340E00, // 007D MOVE R13 R7 0x7C280600, // 007E CALL R10 3 @@ -399,7 +435,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0xAC280000, // 0082 CATCH R10 0 0 0x70020004, // 0083 JMP #0089 0x60280001, // 0084 GETGBL R10 G1 - 0x582C0005, // 0085 LDCONST R11 K5 + 0x582C000E, // 0085 LDCONST R11 K14 0x5C300200, // 0086 MOVE R12 R1 0x7C280400, // 0087 CALL R10 2 0x70020000, // 0088 JMP #008A @@ -410,7 +446,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */ 0x80040400, // 008D RET 1 R2 0x70020003, // 008E JMP #0093 0x600C0001, // 008F GETGBL R3 G1 - 0x58100005, // 0090 LDCONST R4 K5 + 0x5810000E, // 0090 LDCONST R4 K14 0x5C140200, // 0091 MOVE R5 R1 0x7C0C0400, // 0092 CALL R3 2 0x80000000, // 0093 RET 0 @@ -427,19 +463,17 @@ be_local_closure(class_lvh_root_get_val_rule_formula, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_val_rule_formula), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_val_rule_formula), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804011B, // 0000 GETMBR R1 R0 K27 0x80040200, // 0001 RET 1 R1 }) ) @@ -454,25 +488,22 @@ be_local_closure(class_lvh_root_post_config, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_val), - /* K1 */ be_nested_str_weak(set_val), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(post_config), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804011C, // 0000 GETMBR R1 R0 K28 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060002, // 0003 JMPF R1 #0007 - 0x8C040101, // 0004 GETMET R1 R0 K1 - 0x880C0100, // 0005 GETMBR R3 R0 K0 + 0x8C04011D, // 0004 GETMET R1 R0 K29 + 0x880C011C, // 0005 GETMBR R3 R0 K28 0x7C040400, // 0006 CALL R1 2 0x80000000, // 0007 RET 0 }) @@ -488,34 +519,26 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */ be_nested_proto( 10, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(int), - /* K1 */ be_nested_str_weak(_text_rule_function), - /* K2 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_text_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29), - /* K3 */ be_nested_str_weak(_text_rule_format), - /* K4 */ be_nested_str_weak(string), - /* K5 */ be_nested_str_weak(), - /* K6 */ be_nested_str_weak(text), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(text_rule_matched), &be_const_str_solidified, ( &(const binstruction[47]) { /* code */ 0x60080004, // 0000 GETGBL R2 G4 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x1C080500, // 0003 EQ R2 R2 K0 + 0x1C080509, // 0003 EQ R2 R2 K9 0x780A0003, // 0004 JMPF R2 #0009 0x6008000A, // 0005 GETGBL R2 G10 0x5C0C0200, // 0006 MOVE R3 R1 0x7C080200, // 0007 CALL R2 1 0x5C040400, // 0008 MOVE R1 R2 - 0x88080101, // 0009 GETMBR R2 R0 K1 + 0x88080103, // 0009 GETMBR R2 R0 K3 0x4C0C0000, // 000A LDNIL R3 0x200C0403, // 000B NE R3 R2 R3 0x780E0011, // 000C JMPF R3 #001F @@ -530,18 +553,18 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */ 0x70020007, // 0015 JMP #001E 0x60140001, // 0016 GETGBL R5 G1 0x60180018, // 0017 GETGBL R6 G24 - 0x581C0002, // 0018 LDCONST R7 K2 + 0x581C001E, // 0018 LDCONST R7 K30 0x5C200600, // 0019 MOVE R8 R3 0x5C240800, // 001A MOVE R9 R4 0x7C180600, // 001B CALL R6 3 0x7C140200, // 001C CALL R5 1 0x70020000, // 001D JMP #001F 0xB0080000, // 001E RAISE 2 R0 R0 - 0x880C0103, // 001F GETMBR R3 R0 K3 + 0x880C011F, // 001F GETMBR R3 R0 K31 0x60100004, // 0020 GETGBL R4 G4 0x5C140600, // 0021 MOVE R5 R3 0x7C100200, // 0022 CALL R4 1 - 0x1C100904, // 0023 EQ R4 R4 K4 + 0x1C10090F, // 0023 EQ R4 R4 K15 0x78120005, // 0024 JMPF R4 #002B 0x60100018, // 0025 GETGBL R4 G24 0x5C140600, // 0026 MOVE R5 R3 @@ -549,8 +572,8 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */ 0x7C100400, // 0028 CALL R4 2 0x5C0C0800, // 0029 MOVE R3 R4 0x70020000, // 002A JMP #002C - 0x580C0005, // 002B LDCONST R3 K5 - 0x90020C03, // 002C SETMBR R0 K6 R3 + 0x580C0020, // 002B LDCONST R3 K32 + 0x90024203, // 002C SETMBR R0 K33 R3 0x50100000, // 002D LDBOOL R4 0 0 0x80040800, // 002E RET 1 R4 }) @@ -566,19 +589,17 @@ be_local_closure(class_lvh_root_get_meta, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_meta), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_meta), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040122, // 0000 GETMBR R1 R0 K34 0x80040200, // 0001 RET 1 R1 }) ) @@ -593,19 +614,17 @@ be_local_closure(class_lvh_root_set_value_str, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_text), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_value_str), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080123, // 0000 GETMET R2 R0 K35 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x80000000, // 0003 RET 0 @@ -622,37 +641,31 @@ be_local_closure(class_lvh_root_init, /* name */ be_nested_proto( 9, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_page), - /* K1 */ be_nested_str_weak(_parent_lvh), - /* K2 */ be_nested_str_weak(_lv_class), - /* K3 */ be_nested_str_weak(_lv_obj), - /* K4 */ be_nested_str_weak(post_init), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x90020002, // 0000 SETMBR R0 K0 R2 - 0x90020205, // 0001 SETMBR R0 K1 R5 + 0x90024802, // 0000 SETMBR R0 K36 R2 + 0x90024A05, // 0001 SETMBR R0 K37 R5 0x4C180000, // 0002 LDNIL R6 0x1C180806, // 0003 EQ R6 R4 R6 0x781A0007, // 0004 JMPF R6 #000D - 0x88180102, // 0005 GETMBR R6 R0 K2 + 0x88180126, // 0005 GETMBR R6 R0 K38 0x781A0005, // 0006 JMPF R6 #000D - 0x88180102, // 0007 GETMBR R6 R0 K2 + 0x88180126, // 0007 GETMBR R6 R0 K38 0x5C1C0C00, // 0008 MOVE R7 R6 0x5C200200, // 0009 MOVE R8 R1 0x7C1C0200, // 000A CALL R7 1 - 0x90020607, // 000B SETMBR R0 K3 R7 + 0x90024E07, // 000B SETMBR R0 K39 R7 0x70020000, // 000C JMP #000E - 0x90020604, // 000D SETMBR R0 K3 R4 - 0x8C180104, // 000E GETMET R6 R0 K4 + 0x90024E04, // 000D SETMBR R0 K39 R4 + 0x8C180128, // 000E GETMET R6 R0 K40 0x7C180200, // 000F CALL R6 1 0x80000000, // 0010 RET 0 }) @@ -668,19 +681,17 @@ be_local_closure(class_lvh_root_get_delete, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(delete), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_delete), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040129, // 0000 GETMET R1 R0 K41 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -696,39 +707,34 @@ be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_lvh_root), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(resize), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(remove_trailing_zeroes), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x5804002A, // 0000 LDCONST R1 K42 0x6008000C, // 0001 GETGBL R2 G12 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 - 0x580C0001, // 0004 LDCONST R3 K1 + 0x580C0014, // 0004 LDCONST R3 K20 0x14100602, // 0005 LT R4 R3 R2 0x78120007, // 0006 JMPF R4 #000F 0x5411FFFE, // 0007 LDINT R4 -1 0x04100803, // 0008 SUB R4 R4 R3 0x94100004, // 0009 GETIDX R4 R0 R4 - 0x20100901, // 000A NE R4 R4 K1 + 0x20100914, // 000A NE R4 R4 K20 0x78120000, // 000B JMPF R4 #000D 0x70020001, // 000C JMP #000F - 0x000C0702, // 000D ADD R3 R3 K2 + 0x000C0712, // 000D ADD R3 R3 K18 0x7001FFF5, // 000E JMP #0005 - 0x24100701, // 000F GT R4 R3 K1 + 0x24100714, // 000F GT R4 R3 K20 0x78120005, // 0010 JMPF R4 #0017 - 0x8C100103, // 0011 GETMET R4 R0 K3 + 0x8C10012B, // 0011 GETMET R4 R0 K43 0x6018000C, // 0012 GETGBL R6 G12 0x5C1C0000, // 0013 MOVE R7 R0 0x7C180200, // 0014 CALL R6 1 @@ -748,7 +754,7 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -779,24 +785,19 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_val_rule), - /* K1 */ be_nested_str_weak(_val_rule), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(add_rule), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_val_rule), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08012C, // 0000 GETMET R2 R0 K44 0x7C080200, // 0001 CALL R2 1 0x60080008, // 0002 GETGBL R2 G8 0x5C0C0200, // 0003 MOVE R3 R1 0x7C080200, // 0004 CALL R2 1 - 0x90020202, // 0005 SETMBR R0 K1 R2 - 0xB80A0400, // 0006 GETNGBL R2 K2 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x90025A02, // 0005 SETMBR R0 K45 R2 + 0xB80A5C00, // 0006 GETNGBL R2 K46 + 0x8C08052F, // 0007 GETMET R2 R2 K47 + 0x8810012D, // 0008 GETMBR R4 R0 K45 0x84140000, // 0009 CLOSURE R5 P0 0x5C180000, // 000A MOVE R6 R0 0x7C080800, // 000B CALL R2 4 @@ -815,19 +816,17 @@ be_local_closure(class_lvh_root_get_val_rule, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_val_rule), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_val_rule), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804012D, // 0000 GETMBR R1 R0 K45 0x80040200, // 0001 RET 1 R1 }) ) @@ -842,53 +841,47 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(_digit2part), - /* K2 */ be_nested_str_weak(_digit2state), - /* K3 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i), - /* K4 */ be_nested_str_weak(value_error), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(digits_to_style), &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 - 0x80060000, // 0003 RET 1 K0 + 0x80066000, // 0003 RET 1 K48 0x540A0009, // 0004 LDINT R2 10 0x0C080202, // 0005 DIV R2 R1 R2 0x540E0009, // 0006 LDINT R3 10 0x10080403, // 0007 MOD R2 R2 R3 0x540E0009, // 0008 LDINT R3 10 0x100C0203, // 0009 MOD R3 R1 R3 - 0x58100000, // 000A LDCONST R4 K0 - 0x28140500, // 000B GE R5 R2 K0 + 0x58100030, // 000A LDCONST R4 K48 + 0x28140530, // 000B GE R5 R2 K48 0x78160008, // 000C JMPF R5 #0016 0x6014000C, // 000D GETGBL R5 G12 - 0x88180101, // 000E GETMBR R6 R0 K1 + 0x88180131, // 000E GETMBR R6 R0 K49 0x7C140200, // 000F CALL R5 1 0x14140405, // 0010 LT R5 R2 R5 0x78160003, // 0011 JMPF R5 #0016 - 0x88140101, // 0012 GETMBR R5 R0 K1 + 0x88140131, // 0012 GETMBR R5 R0 K49 0x94140A02, // 0013 GETIDX R5 R5 R2 0x30100805, // 0014 OR R4 R4 R5 0x70020000, // 0015 JMP #0017 0x4C100000, // 0016 LDNIL R4 - 0x28140700, // 0017 GE R5 R3 K0 + 0x28140730, // 0017 GE R5 R3 K48 0x78160008, // 0018 JMPF R5 #0022 0x6014000C, // 0019 GETGBL R5 G12 - 0x88180102, // 001A GETMBR R6 R0 K2 + 0x88180132, // 001A GETMBR R6 R0 K50 0x7C140200, // 001B CALL R5 1 0x14140605, // 001C LT R5 R3 R5 0x78160003, // 001D JMPF R5 #0022 - 0x88140102, // 001E GETMBR R5 R0 K2 + 0x88140132, // 001E GETMBR R5 R0 K50 0x94140A03, // 001F GETIDX R5 R5 R3 0x30100805, // 0020 OR R4 R4 R5 0x70020000, // 0021 JMP #0023 @@ -897,10 +890,10 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ 0x1C140805, // 0024 EQ R5 R4 R5 0x78160004, // 0025 JMPF R5 #002B 0x60140018, // 0026 GETGBL R5 G24 - 0x58180003, // 0027 LDCONST R6 K3 + 0x58180033, // 0027 LDCONST R6 K51 0x5C1C0200, // 0028 MOVE R7 R1 0x7C140400, // 0029 CALL R5 2 - 0xB0060805, // 002A RAISE 1 K4 R5 + 0xB0066805, // 002A RAISE 1 K52 R5 0x80040800, // 002B RET 1 R4 }) ) @@ -915,22 +908,20 @@ be_local_closure(class_lvh_root_set_text_rule_format, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_text_rule_format), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_text_rule_format), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x90023E02, // 0003 SETMBR R0 K31 R2 0x80000000, // 0004 RET 0 }) ) @@ -945,27 +936,23 @@ be_local_closure(class_lvh_root_remove_val_rule, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_val_rule), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(remove_val_rule), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804012D, // 0000 GETMBR R1 R0 K45 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060004, // 0003 JMPF R1 #0009 - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0xB8065C00, // 0004 GETNGBL R1 K46 + 0x8C040335, // 0005 GETMET R1 R1 K53 + 0x880C012D, // 0006 GETMBR R3 R0 K45 0x5C100000, // 0007 MOVE R4 R0 0x7C040600, // 0008 CALL R1 3 0x80000000, // 0009 RET 0 @@ -982,13 +969,13 @@ be_local_closure(class_lvh_root_delete, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(delete), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -1006,19 +993,17 @@ be_local_closure(class_lvh_root_get_obj, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_obj), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040127, // 0000 GETMBR R1 R0 K39 0x80040200, // 0001 RET 1 R1 }) ) @@ -1033,26 +1018,22 @@ be_local_closure(class_lvh_root_is_color_attribute, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(endswith), - /* K2 */ be_nested_str_weak(color), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(is_color_attribute), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0xA40A1E00, // 0000 IMPORT R2 K15 + 0x8C0C0517, // 0001 GETMET R3 R2 K23 0x60140008, // 0002 GETGBL R5 G8 0x5C180200, // 0003 MOVE R6 R1 0x7C140200, // 0004 CALL R5 1 - 0x58180002, // 0005 LDCONST R6 K2 + 0x58180036, // 0005 LDCONST R6 K54 0x7C0C0600, // 0006 CALL R3 3 0x80040600, // 0007 RET 1 R3 }) @@ -1068,19 +1049,17 @@ be_local_closure(class_lvh_root_set_meta, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_meta), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_meta), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90024401, // 0000 SETMBR R0 K34 R1 0x80000000, // 0001 RET 0 }) ) @@ -1095,20 +1074,17 @@ be_local_closure(class_lvh_root_set_delete, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(type_error), - /* K1 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_delete), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0xB0060101, // 0000 RAISE 1 K0 K1 + 0xB0066F38, // 0000 RAISE 1 K55 K56 0x80000000, // 0001 RET 0 }) ) @@ -1123,19 +1099,17 @@ be_local_closure(class_lvh_root_get_value_str, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_text), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_value_str), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040139, // 0000 GETMET R1 R0 K57 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -1151,7 +1125,7 @@ be_local_closure(class_lvh_root_parse_color, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1255,59 +1229,48 @@ be_local_closure(class_lvh_root_parse_color, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_const_class(be_class_lvh_root), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(_X23), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(color), - /* K5 */ be_nested_str_weak(string), - /* K6 */ be_nested_str_weak(introspect), - /* K7 */ be_nested_str_weak(COLOR_), - /* K8 */ be_nested_str_weak(toupper), - /* K9 */ be_nested_str_weak(get), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(parse_color), &be_const_str_solidified, ( &(const binstruction[40]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x5804002A, // 0000 LDCONST R1 K42 0x84080000, // 0001 CLOSURE R2 P0 0x600C0008, // 0002 GETGBL R3 G8 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 0x5C000600, // 0005 MOVE R0 R3 - 0x940C0101, // 0006 GETIDX R3 R0 K1 - 0x1C0C0702, // 0007 EQ R3 R3 K2 + 0x940C0114, // 0006 GETIDX R3 R0 K20 + 0x1C0C073A, // 0007 EQ R3 R3 K58 0x780E0007, // 0008 JMPF R3 #0011 - 0xB80E0600, // 0009 GETNGBL R3 K3 - 0x8C0C0704, // 000A GETMET R3 R3 K4 + 0xB80E1400, // 0009 GETNGBL R3 K10 + 0x8C0C0736, // 000A GETMET R3 R3 K54 0x5C140400, // 000B MOVE R5 R2 0x5C180000, // 000C MOVE R6 R0 0x7C140200, // 000D CALL R5 1 0x7C0C0400, // 000E CALL R3 2 0x80040600, // 000F RET 1 R3 0x70020011, // 0010 JMP #0023 - 0xA40E0A00, // 0011 IMPORT R3 K5 - 0xA4120C00, // 0012 IMPORT R4 K6 - 0x8C140708, // 0013 GETMET R5 R3 K8 + 0xA40E1E00, // 0011 IMPORT R3 K15 + 0xA4127600, // 0012 IMPORT R4 K59 + 0x8C14073D, // 0013 GETMET R5 R3 K61 0x5C1C0000, // 0014 MOVE R7 R0 0x7C140400, // 0015 CALL R5 2 - 0x00160E05, // 0016 ADD R5 K7 R5 - 0x8C180909, // 0017 GETMET R6 R4 K9 - 0xB8220600, // 0018 GETNGBL R8 K3 + 0x00167805, // 0016 ADD R5 K60 R5 + 0x8C18093E, // 0017 GETMET R6 R4 K62 + 0xB8221400, // 0018 GETNGBL R8 K10 0x5C240A00, // 0019 MOVE R9 R5 0x7C180600, // 001A CALL R6 3 0x4C1C0000, // 001B LDNIL R7 0x201C0C07, // 001C NE R7 R6 R7 0x781E0004, // 001D JMPF R7 #0023 - 0xB81E0600, // 001E GETNGBL R7 K3 - 0x8C1C0F04, // 001F GETMET R7 R7 K4 + 0xB81E1400, // 001E GETNGBL R7 K10 + 0x8C1C0F36, // 001F GETMET R7 R7 K54 0x5C240C00, // 0020 MOVE R9 R6 0x7C1C0400, // 0021 CALL R7 2 0x80040E00, // 0022 RET 1 R7 - 0xB80E0600, // 0023 GETNGBL R3 K3 - 0x8C0C0704, // 0024 GETMET R3 R3 K4 - 0x58140001, // 0025 LDCONST R5 K1 + 0xB80E1400, // 0023 GETNGBL R3 K10 + 0x8C0C0736, // 0024 GETMET R3 R3 K54 + 0x58140014, // 0025 LDCONST R5 K20 0x7C0C0400, // 0026 CALL R3 2 0x80040600, // 0027 RET 1 R3 }) @@ -1323,19 +1286,17 @@ be_local_closure(class_lvh_root_get_text_rule_format, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_text_rule_format), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(get_text_rule_format), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8804011F, // 0000 GETMBR R1 R0 K31 0x80040200, // 0001 RET 1 R1 }) ) @@ -1350,27 +1311,23 @@ be_local_closure(class_lvh_root_remove_text_rule, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_text_rule), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(remove_rule), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(remove_text_rule), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040105, // 0000 GETMBR R1 R0 K5 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060004, // 0003 JMPF R1 #0009 - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0xB8065C00, // 0004 GETNGBL R1 K46 + 0x8C040335, // 0005 GETMET R1 R1 K53 + 0x880C0105, // 0006 GETMBR R3 R0 K5 0x5C100000, // 0007 MOVE R4 R0 0x7C040600, // 0008 CALL R1 3 0x80000000, // 0009 RET 0 @@ -1387,27 +1344,21 @@ be_local_closure(class_lvh_root_set_val_rule_formula, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_val_rule_formula), - /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28), - /* K2 */ be_nested_str_weak(_X29), - /* K3 */ be_nested_str_weak(_val_rule_function), - /* K4 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20compile_X20_X27_X25s_X27_X20_X2D_X20_X25s_X20_X28_X25s_X29), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_val_rule_formula), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x90023602, // 0003 SETMBR R0 K27 R2 + 0x8808011B, // 0004 GETMBR R2 R0 K27 0x000A0202, // 0005 ADD R2 K1 R2 0x00080502, // 0006 ADD R2 R2 K2 0xA8020007, // 0007 EXBLK 0 #0010 @@ -1416,7 +1367,7 @@ be_local_closure(class_lvh_root_set_val_rule_formula, /* name */ 0x7C0C0200, // 000A CALL R3 1 0x5C100600, // 000B MOVE R4 R3 0x7C100000, // 000C CALL R4 0 - 0x90020604, // 000D SETMBR R0 K3 R4 + 0x90020C04, // 000D SETMBR R0 K6 R4 0xA8040001, // 000E EXBLK 1 1 0x7002000B, // 000F JMP #001C 0xAC0C0002, // 0010 CATCH R3 0 2 @@ -1445,7 +1396,7 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -1476,24 +1427,19 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_text_rule), - /* K1 */ be_nested_str_weak(_text_rule), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(add_rule), - }), + &be_ktab_class_lvh_root, /* shared constants */ be_str_weak(set_text_rule), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08013F, // 0000 GETMET R2 R0 K63 0x7C080200, // 0001 CALL R2 1 0x60080008, // 0002 GETGBL R2 G8 0x5C0C0200, // 0003 MOVE R3 R1 0x7C080200, // 0004 CALL R2 1 - 0x90020202, // 0005 SETMBR R0 K1 R2 - 0xB80A0400, // 0006 GETNGBL R2 K2 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x88100101, // 0008 GETMBR R4 R0 K1 + 0x90020A02, // 0005 SETMBR R0 K5 R2 + 0xB80A5C00, // 0006 GETNGBL R2 K46 + 0x8C08052F, // 0007 GETMET R2 R2 K47 + 0x88100105, // 0008 GETMBR R4 R0 K5 0x84140000, // 0009 CLOSURE R5 P0 0x5C180000, // 000A MOVE R6 R0 0x7C080800, // 000B CALL R2 4 @@ -1608,6 +1554,149 @@ be_local_class(lvh_root, })), be_str_weak(lvh_root) ); +// compact class 'lvh_obj' ktab size: 139, total: 284 (saved 1160 bytes) +static const bvalue be_ktab_class_lvh_obj[139] = { + /* K0 */ be_nested_str_weak(_lv_part2_selector), + /* K1 */ be_nested_str_weak(_lv_obj), + /* K2 */ be_nested_str_weak(set_style_pad_bottom), + /* K3 */ be_nested_str_weak(lv), + /* K4 */ be_nested_str_weak(STATE_DEFAULT), + /* K5 */ be_nested_str_weak(string), + /* K6 */ be_nested_str_weak(toupper), + /* K7 */ be_nested_str_weak(TRUE), + /* K8 */ be_nested_str_weak(FALSE), + /* K9 */ be_nested_str_weak(add_state), + /* K10 */ be_nested_str_weak(STATE_CHECKED), + /* K11 */ be_nested_str_weak(clear_state), + /* K12 */ be_nested_str_weak(set_style_pad_left), + /* K13 */ be_nested_str_weak(get_style_pad_top), + /* K14 */ be_nested_str_weak(get_style_line_width), + /* K15 */ be_nested_str_weak(has_flag), + /* K16 */ be_nested_str_weak(OBJ_FLAG_CLICKABLE), + /* K17 */ be_nested_str_weak(_lv_label), + /* K18 */ be_nested_str_weak(get_text), + /* K19 */ be_nested_str_weak(set_style_line_width), + /* K20 */ be_nested_str_weak(check_label), + /* K21 */ be_nested_str_weak(set_text), + /* K22 */ be_const_int(0), + /* K23 */ be_nested_str_weak(left), + /* K24 */ be_nested_str_weak(TEXT_ALIGN_LEFT), + /* K25 */ be_const_int(1), + /* K26 */ be_nested_str_weak(center), + /* K27 */ be_nested_str_weak(TEXT_ALIGN_CENTER), + /* K28 */ be_const_int(2), + /* K29 */ be_nested_str_weak(right), + /* K30 */ be_nested_str_weak(TEXT_ALIGN_RIGHT), + /* K31 */ be_nested_str_weak(set_style_text_align), + /* K32 */ be_nested_str_weak(get_value_color), + /* K33 */ be_nested_str_weak(get_style_pad_right), + /* K34 */ be_nested_str_weak(get_style_text_color), + /* K35 */ be_nested_str_weak(_action), + /* K36 */ be_nested_str_weak(), + /* K37 */ be_nested_str_weak(get_y), + /* K38 */ be_nested_str_weak(set_style_pad_all), + /* K39 */ be_nested_str_weak(introspect), + /* K40 */ be_nested_str_weak(contains), + /* K41 */ be_nested_str_weak(label), + /* K42 */ be_nested_str_weak(get_obj), + /* K43 */ be_nested_str_weak(set_align), + /* K44 */ be_nested_str_weak(ALIGN_CENTER), + /* K45 */ be_nested_str_weak(set_text_color), + /* K46 */ be_nested_str_weak(OBJ_FLAG_FLEX_IN_NEW_TRACK), + /* K47 */ be_nested_str_weak(remove_val_rule), + /* K48 */ be_nested_str_weak(remove_text_rule), + /* K49 */ be_nested_str_weak(del), + /* K50 */ be_nested_str_weak(_page), + /* K51 */ be_nested_str_weak(remove_obj), + /* K52 */ be_nested_str_weak(id), + /* K53 */ be_nested_str_weak(get_x), + /* K54 */ be_nested_str_weak(set_style_pad_top), + /* K55 */ be_nested_str_weak(set_enabled), + /* K56 */ be_nested_str_weak(add_flag), + /* K57 */ be_nested_str_weak(clear_flag), + /* K58 */ be_nested_str_weak(_oh), + /* K59 */ be_nested_str_weak(get_code), + /* K60 */ be_nested_str_weak(action), + /* K61 */ be_nested_str_weak(EVENT_CLICKED), + /* K62 */ be_nested_str_weak(tasmota), + /* K63 */ be_nested_str_weak(set_timer), + /* K64 */ be_nested_str_weak(_event_map), + /* K65 */ be_nested_str_weak(find), + /* K66 */ be_nested_str_weak(json), + /* K67 */ be_nested_str_weak(EVENT_VALUE_CHANGED), + /* K68 */ be_nested_str_weak(val), + /* K69 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s), + /* K70 */ be_nested_str_weak(dump), + /* K71 */ be_nested_str_weak(text), + /* K72 */ be_nested_str_weak(_X2C_X22text_X22_X3A), + /* K73 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D), + /* K74 */ be_nested_str_weak(_page_id), + /* K75 */ be_nested_str_weak(init), + /* K76 */ be_nested_str_weak(has_state), + /* K77 */ be_nested_str_weak(STATE_DISABLED), + /* K78 */ be_nested_str_weak(get_enabled), + /* K79 */ be_nested_str_weak(get_long_mode), + /* K80 */ be_nested_str_weak(OBJ_FLAG_HIDDEN), + /* K81 */ be_nested_str_weak(set_text_font), + /* K82 */ be_nested_str_weak(get_text_font), + /* K83 */ be_nested_str_weak(_val), + /* K84 */ be_nested_str_weak(set_value), + /* K85 */ be_nested_str_weak(set_style_text_color), + /* K86 */ be_nested_str_weak(parse_color), + /* K87 */ be_nested_str_weak(get_style_radius), + /* K88 */ be_nested_str_weak(set_style_pad_right), + /* K89 */ be_nested_str_weak(expand), + /* K90 */ be_nested_str_weak(set_width), + /* K91 */ be_nested_str_weak(SIZE_CONTENT), + /* K92 */ be_nested_str_weak(break), + /* K93 */ be_nested_str_weak(LABEL_LONG_WRAP), + /* K94 */ be_nested_str_weak(dots), + /* K95 */ be_nested_str_weak(LABEL_LONG_DOT), + /* K96 */ be_nested_str_weak(scroll), + /* K97 */ be_nested_str_weak(LABEL_LONG_SCROLL), + /* K98 */ be_nested_str_weak(loop), + /* K99 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR), + /* K100 */ be_nested_str_weak(crop), + /* K101 */ be_nested_str_weak(LABEL_LONG_CLIP), + /* K102 */ be_nested_str_weak(set_long_mode), + /* K103 */ be_nested_str_weak(startswith), + /* K104 */ be_nested_str_weak(set_), + /* K105 */ be_nested_str_weak(get_), + /* K106 */ be_nested_str_weak(real), + /* K107 */ be_nested_str_weak(math), + /* K108 */ be_nested_str_weak(round), + /* K109 */ be_nested_str_weak(endswith), + /* K110 */ be_nested_str_weak(_X25), + /* K111 */ be_const_int(0), + /* K112 */ be_nested_str_weak(pct), + /* K113 */ be_const_int(3), + /* K114 */ be_nested_str_weak(byte), + /* K115 */ be_const_int(2147483647), + /* K116 */ be_nested_str_weak(digits_to_style), + /* K117 */ be_nested_str_weak(_attr_ignore), + /* K118 */ be_nested_str_weak(get), + /* K119 */ be_nested_str_weak(function), + /* K120 */ be_nested_str_weak(_attr_map), + /* K121 */ be_nested_str_weak(is_color_attribute), + /* K122 */ be_nested_str_weak(set_style_), + /* K123 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), + /* K124 */ be_nested_str_weak(get_style_text_align), + /* K125 */ be_nested_str_weak(get_style_pad_left), + /* K126 */ be_nested_str_weak(set_x), + /* K127 */ be_nested_str_weak(get_style_), + /* K128 */ be_nested_str_weak(undefined), + /* K129 */ be_nested_str_weak(set_y), + /* K130 */ be_nested_str_weak(set_style_radius), + /* K131 */ be_nested_str_weak(keys), + /* K132 */ be_nested_str_weak(register_event), + /* K133 */ be_nested_str_weak(stop_iteration), + /* K134 */ be_nested_str_weak(parse_font), + /* K135 */ be_nested_str_weak(set_style_text_font), + /* K136 */ be_nested_str_weak(get_style_pad_bottom), + /* K137 */ be_nested_str_weak(get_value), + /* K138 */ be_nested_str_weak(register_event_cb), +}; + extern const bclass be_class_lvh_obj; @@ -1618,19 +1707,13 @@ be_local_closure(class_lvh_obj_set_pad_bottom2, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_style_pad_bottom), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_pad_bottom2), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -1662,56 +1745,46 @@ be_local_closure(class_lvh_obj_set_toggle, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(toupper), - /* K2 */ be_nested_str_weak(TRUE), - /* K3 */ be_nested_str_weak(FALSE), - /* K4 */ be_nested_str_weak(_lv_obj), - /* K5 */ be_nested_str_weak(add_state), - /* K6 */ be_nested_str_weak(lv), - /* K7 */ be_nested_str_weak(STATE_CHECKED), - /* K8 */ be_nested_str_weak(clear_state), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_toggle), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40A0A00, // 0000 IMPORT R2 K5 0x600C0004, // 0001 GETGBL R3 G4 0x5C100200, // 0002 MOVE R4 R1 0x7C0C0200, // 0003 CALL R3 1 - 0x1C0C0700, // 0004 EQ R3 R3 K0 + 0x1C0C0705, // 0004 EQ R3 R3 K5 0x780E000C, // 0005 JMPF R3 #0013 - 0x8C0C0501, // 0006 GETMET R3 R2 K1 + 0x8C0C0506, // 0006 GETMET R3 R2 K6 0x60140008, // 0007 GETGBL R5 G8 0x5C180200, // 0008 MOVE R6 R1 0x7C140200, // 0009 CALL R5 1 0x7C0C0400, // 000A CALL R3 2 0x5C040600, // 000B MOVE R1 R3 - 0x1C0C0302, // 000C EQ R3 R1 K2 + 0x1C0C0307, // 000C EQ R3 R1 K7 0x780E0001, // 000D JMPF R3 #0010 0x50040200, // 000E LDBOOL R1 1 0 0x70020002, // 000F JMP #0013 - 0x1C0C0303, // 0010 EQ R3 R1 K3 + 0x1C0C0308, // 0010 EQ R3 R1 K8 0x780E0000, // 0011 JMPF R3 #0013 0x50040000, // 0012 LDBOOL R1 0 0 0x78060005, // 0013 JMPF R1 #001A - 0x880C0104, // 0014 GETMBR R3 R0 K4 - 0x8C0C0705, // 0015 GETMET R3 R3 K5 - 0xB8160C00, // 0016 GETNGBL R5 K6 - 0x88140B07, // 0017 GETMBR R5 R5 K7 + 0x880C0101, // 0014 GETMBR R3 R0 K1 + 0x8C0C0709, // 0015 GETMET R3 R3 K9 + 0xB8160600, // 0016 GETNGBL R5 K3 + 0x88140B0A, // 0017 GETMBR R5 R5 K10 0x7C0C0400, // 0018 CALL R3 2 0x70020004, // 0019 JMP #001F - 0x880C0104, // 001A GETMBR R3 R0 K4 - 0x8C0C0708, // 001B GETMET R3 R3 K8 - 0xB8160C00, // 001C GETNGBL R5 K6 - 0x88140B07, // 001D GETMBR R5 R5 K7 + 0x880C0101, // 001A GETMBR R3 R0 K1 + 0x8C0C070B, // 001B GETMET R3 R3 K11 + 0xB8160600, // 001C GETNGBL R5 K3 + 0x88140B0A, // 001D GETMBR R5 R5 K10 0x7C0C0400, // 001E CALL R3 2 0x80000000, // 001F RET 0 }) @@ -1727,19 +1800,13 @@ be_local_closure(class_lvh_obj_set_pad_left2, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_style_pad_left), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_pad_left2), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -1748,7 +1815,7 @@ be_local_closure(class_lvh_obj_set_pad_left2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x8C08050C, // 0005 GETMET R2 R2 K12 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -1771,19 +1838,13 @@ be_local_closure(class_lvh_obj_get_pad_top, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(get_style_pad_top), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_pad_top), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -1792,7 +1853,7 @@ be_local_closure(class_lvh_obj_get_pad_top, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x8C04030D, // 0005 GETMET R1 R1 K13 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -1813,21 +1874,18 @@ be_local_closure(class_lvh_obj_get_line_width, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_style_line_width), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_line_width), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C08050E, // 0001 GETMET R2 R2 K14 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -1844,25 +1902,20 @@ be_local_closure(class_lvh_obj_get_adjustable, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(has_flag), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(OBJ_FLAG_CLICKABLE), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_adjustable), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x880C0703, // 0003 GETMBR R3 R3 K3 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C04030F, // 0001 GETMET R1 R1 K15 + 0xB80E0600, // 0002 GETNGBL R3 K3 + 0x880C0710, // 0003 GETMBR R3 R3 K16 0x7C040400, // 0004 CALL R1 2 0x80040200, // 0005 RET 1 R1 }) @@ -1878,27 +1931,24 @@ be_local_closure(class_lvh_obj_get_text, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_label), - /* K1 */ be_nested_str_weak(get_text), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_text), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040111, // 0000 GETMBR R1 R0 K17 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060001, // 0003 JMPF R1 #0006 0x4C040000, // 0004 LDNIL R1 0x80040200, // 0005 RET 1 R1 - 0x88040100, // 0006 GETMBR R1 R0 K0 - 0x8C040301, // 0007 GETMET R1 R1 K1 + 0x88040111, // 0006 GETMBR R1 R0 K17 + 0x8C040312, // 0007 GETMET R1 R1 K18 0x7C040200, // 0008 CALL R1 1 0x80040200, // 0009 RET 1 R1 }) @@ -1914,21 +1964,18 @@ be_local_closure(class_lvh_obj_set_line_width, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_style_line_width), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_line_width), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x880C0101, // 0000 GETMBR R3 R0 K1 + 0x8C0C0713, // 0001 GETMET R3 R3 K19 0x60140009, // 0002 GETGBL R5 G9 0x5C180200, // 0003 MOVE R6 R1 0x7C140200, // 0004 CALL R5 1 @@ -1948,24 +1995,20 @@ be_local_closure(class_lvh_obj_set_text, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(check_label), - /* K1 */ be_nested_str_weak(_lv_label), - /* K2 */ be_nested_str_weak(set_text), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_text), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080114, // 0000 GETMET R2 R0 K20 0x7C080200, // 0001 CALL R2 1 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x8C080502, // 0003 GETMET R2 R2 K2 + 0x88080111, // 0002 GETMBR R2 R0 K17 + 0x8C080515, // 0003 GETMET R2 R2 K21 0x60100008, // 0004 GETGBL R4 G8 0x5C140200, // 0005 MOVE R5 R1 0x7C100200, // 0006 CALL R4 1 @@ -1984,58 +2027,44 @@ be_local_closure(class_lvh_obj_set_align, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(check_label), - /* K2 */ be_nested_str_weak(left), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(TEXT_ALIGN_LEFT), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(center), - /* K7 */ be_nested_str_weak(TEXT_ALIGN_CENTER), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(right), - /* K10 */ be_nested_str_weak(TEXT_ALIGN_RIGHT), - /* K11 */ be_nested_str_weak(_lv_label), - /* K12 */ be_nested_str_weak(set_style_text_align), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_align), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ 0x4C0C0000, // 0000 LDNIL R3 - 0x1C100500, // 0001 EQ R4 R2 K0 + 0x1C100516, // 0001 EQ R4 R2 K22 0x78120000, // 0002 JMPF R4 #0004 - 0x58080000, // 0003 LDCONST R2 K0 - 0x8C100101, // 0004 GETMET R4 R0 K1 + 0x58080016, // 0003 LDCONST R2 K22 + 0x8C100114, // 0004 GETMET R4 R0 K20 0x7C100200, // 0005 CALL R4 1 - 0x1C100300, // 0006 EQ R4 R1 K0 + 0x1C100316, // 0006 EQ R4 R1 K22 0x74120001, // 0007 JMPT R4 #000A - 0x1C100302, // 0008 EQ R4 R1 K2 + 0x1C100317, // 0008 EQ R4 R1 K23 0x78120002, // 0009 JMPF R4 #000D 0xB8120600, // 000A GETNGBL R4 K3 - 0x880C0904, // 000B GETMBR R3 R4 K4 + 0x880C0918, // 000B GETMBR R3 R4 K24 0x7002000C, // 000C JMP #001A - 0x1C100305, // 000D EQ R4 R1 K5 + 0x1C100319, // 000D EQ R4 R1 K25 0x74120001, // 000E JMPT R4 #0011 - 0x1C100306, // 000F EQ R4 R1 K6 + 0x1C10031A, // 000F EQ R4 R1 K26 0x78120002, // 0010 JMPF R4 #0014 0xB8120600, // 0011 GETNGBL R4 K3 - 0x880C0907, // 0012 GETMBR R3 R4 K7 + 0x880C091B, // 0012 GETMBR R3 R4 K27 0x70020005, // 0013 JMP #001A - 0x1C100308, // 0014 EQ R4 R1 K8 + 0x1C10031C, // 0014 EQ R4 R1 K28 0x74120001, // 0015 JMPT R4 #0018 - 0x1C100309, // 0016 EQ R4 R1 K9 + 0x1C10031D, // 0016 EQ R4 R1 K29 0x78120001, // 0017 JMPF R4 #001A 0xB8120600, // 0018 GETNGBL R4 K3 - 0x880C090A, // 0019 GETMBR R3 R4 K10 - 0x8810010B, // 001A GETMBR R4 R0 K11 - 0x8C10090C, // 001B GETMET R4 R4 K12 + 0x880C091E, // 0019 GETMBR R3 R4 K30 + 0x88100111, // 001A GETMBR R4 R0 K17 + 0x8C10091F, // 001B GETMET R4 R4 K31 0x5C180600, // 001C MOVE R6 R3 0x5C1C0400, // 001D MOVE R7 R2 0x7C100600, // 001E CALL R4 3 @@ -2053,19 +2082,17 @@ be_local_closure(class_lvh_obj_get_value_color, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_value_color), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_value_color), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040120, // 0000 GETMET R1 R0 K32 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -2081,19 +2108,13 @@ be_local_closure(class_lvh_obj_get_pad_right, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(get_style_pad_right), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_pad_right), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -2102,7 +2123,7 @@ be_local_closure(class_lvh_obj_get_pad_right, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x8C040321, // 0005 GETMET R1 R1 K33 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -2123,21 +2144,18 @@ be_local_closure(class_lvh_obj_get_text_color, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_style_text_color), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_text_color), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080522, // 0001 GETMET R2 R2 K34 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -2154,24 +2172,21 @@ be_local_closure(class_lvh_obj_get_action, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_action), - /* K1 */ be_nested_str_weak(), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_action), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040123, // 0000 GETMBR R1 R0 K35 0x78060001, // 0001 JMPF R1 #0004 0x5C080200, // 0002 MOVE R2 R1 0x70020000, // 0003 JMP #0005 - 0x58080001, // 0004 LDCONST R2 K1 + 0x58080024, // 0004 LDCONST R2 K36 0x80040400, // 0005 RET 1 R2 }) ) @@ -2186,21 +2201,18 @@ be_local_closure(class_lvh_obj_get_value_ofs_y, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_label), - /* K1 */ be_nested_str_weak(get_y), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_value_ofs_y), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x8C040325, // 0001 GETMET R1 R1 K37 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -2216,19 +2228,13 @@ be_local_closure(class_lvh_obj_set_pad_all2, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_style_pad_all), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_pad_all2), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -2237,7 +2243,7 @@ be_local_closure(class_lvh_obj_set_pad_all2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x8C080526, // 0005 GETMET R2 R2 K38 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -2260,50 +2266,39 @@ be_local_closure(class_lvh_obj_check_label, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_label), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(_lv_obj), - /* K4 */ be_nested_str_weak(set_text), - /* K5 */ be_nested_str_weak(lv), - /* K6 */ be_nested_str_weak(label), - /* K7 */ be_nested_str_weak(get_obj), - /* K8 */ be_nested_str_weak(set_align), - /* K9 */ be_nested_str_weak(ALIGN_CENTER), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(check_label), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040111, // 0000 GETMBR R1 R0 K17 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x78060013, // 0003 JMPF R1 #0018 - 0xA4060200, // 0004 IMPORT R1 K1 - 0x8C080302, // 0005 GETMET R2 R1 K2 - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x58140004, // 0007 LDCONST R5 K4 + 0xA4064E00, // 0004 IMPORT R1 K39 + 0x8C080328, // 0005 GETMET R2 R1 K40 + 0x88100101, // 0006 GETMBR R4 R0 K1 + 0x58140015, // 0007 LDCONST R5 K21 0x7C080600, // 0008 CALL R2 3 0x780A0002, // 0009 JMPF R2 #000D - 0x88080103, // 000A GETMBR R2 R0 K3 - 0x90020002, // 000B SETMBR R0 K0 R2 + 0x88080101, // 000A GETMBR R2 R0 K1 + 0x90022202, // 000B SETMBR R0 K17 R2 0x7002000A, // 000C JMP #0018 - 0xB80A0A00, // 000D GETNGBL R2 K5 - 0x8C080506, // 000E GETMET R2 R2 K6 - 0x8C100107, // 000F GETMET R4 R0 K7 + 0xB80A0600, // 000D GETNGBL R2 K3 + 0x8C080529, // 000E GETMET R2 R2 K41 + 0x8C10012A, // 000F GETMET R4 R0 K42 0x7C100200, // 0010 CALL R4 1 0x7C080400, // 0011 CALL R2 2 - 0x90020002, // 0012 SETMBR R0 K0 R2 - 0x88080100, // 0013 GETMBR R2 R0 K0 - 0x8C080508, // 0014 GETMET R2 R2 K8 - 0xB8120A00, // 0015 GETNGBL R4 K5 - 0x88100909, // 0016 GETMBR R4 R4 K9 + 0x90022202, // 0012 SETMBR R0 K17 R2 + 0x88080111, // 0013 GETMBR R2 R0 K17 + 0x8C08052B, // 0014 GETMET R2 R2 K43 + 0xB8120600, // 0015 GETNGBL R4 K3 + 0x8810092C, // 0016 GETMBR R4 R4 K44 0x7C080400, // 0017 CALL R2 2 0x80000000, // 0018 RET 0 }) @@ -2319,19 +2314,17 @@ be_local_closure(class_lvh_obj_set_value_color, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_text_color), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_value_color), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08012D, // 0000 GETMET R2 R0 K45 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x80000000, // 0003 RET 0 @@ -2348,25 +2341,20 @@ be_local_closure(class_lvh_obj_get_flex_in_new_track, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(has_flag), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(OBJ_FLAG_FLEX_IN_NEW_TRACK), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_flex_in_new_track), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x880C0703, // 0003 GETMBR R3 R3 K3 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C04030F, // 0001 GETMET R1 R1 K15 + 0xB80E0600, // 0002 GETNGBL R3 K3 + 0x880C072E, // 0003 GETMBR R3 R3 K46 0x7C040400, // 0004 CALL R1 2 0x80040200, // 0005 RET 1 R1 }) @@ -2382,46 +2370,37 @@ be_local_closure(class_lvh_obj_delete, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(remove_val_rule), - /* K1 */ be_nested_str_weak(remove_text_rule), - /* K2 */ be_nested_str_weak(_lv_label), - /* K3 */ be_nested_str_weak(del), - /* K4 */ be_nested_str_weak(_lv_obj), - /* K5 */ be_nested_str_weak(_page), - /* K6 */ be_nested_str_weak(remove_obj), - /* K7 */ be_nested_str_weak(id), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(delete), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04012F, // 0000 GETMET R1 R0 K47 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x8C040130, // 0002 GETMET R1 R0 K48 0x7C040200, // 0003 CALL R1 1 - 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x88040111, // 0004 GETMBR R1 R0 K17 0x78060004, // 0005 JMPF R1 #000B - 0x88040102, // 0006 GETMBR R1 R0 K2 - 0x8C040303, // 0007 GETMET R1 R1 K3 + 0x88040111, // 0006 GETMBR R1 R0 K17 + 0x8C040331, // 0007 GETMET R1 R1 K49 0x7C040200, // 0008 CALL R1 1 0x4C040000, // 0009 LDNIL R1 - 0x90020401, // 000A SETMBR R0 K2 R1 - 0x88040104, // 000B GETMBR R1 R0 K4 + 0x90022201, // 000A SETMBR R0 K17 R1 + 0x88040101, // 000B GETMBR R1 R0 K1 0x78060004, // 000C JMPF R1 #0012 - 0x88040104, // 000D GETMBR R1 R0 K4 - 0x8C040303, // 000E GETMET R1 R1 K3 + 0x88040101, // 000D GETMBR R1 R0 K1 + 0x8C040331, // 000E GETMET R1 R1 K49 0x7C040200, // 000F CALL R1 1 0x4C040000, // 0010 LDNIL R1 - 0x90020801, // 0011 SETMBR R0 K4 R1 - 0x88040105, // 0012 GETMBR R1 R0 K5 - 0x8C040306, // 0013 GETMET R1 R1 K6 - 0x880C0107, // 0014 GETMBR R3 R0 K7 + 0x90020201, // 0011 SETMBR R0 K1 R1 + 0x88040132, // 0012 GETMBR R1 R0 K50 + 0x8C040333, // 0013 GETMET R1 R1 K51 + 0x880C0134, // 0014 GETMBR R3 R0 K52 0x7C040400, // 0015 CALL R1 2 0x80000000, // 0016 RET 0 }) @@ -2437,21 +2416,18 @@ be_local_closure(class_lvh_obj_get_value_ofs_x, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_label), - /* K1 */ be_nested_str_weak(get_x), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_value_ofs_x), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x8C040335, // 0001 GETMET R1 R1 K53 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -2467,19 +2443,13 @@ be_local_closure(class_lvh_obj_set_pad_top2, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_style_pad_top), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_pad_top2), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -2488,7 +2458,7 @@ be_local_closure(class_lvh_obj_set_pad_top2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x8C080536, // 0005 GETMET R2 R2 K54 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -2511,19 +2481,17 @@ be_local_closure(class_lvh_obj_set_click, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_enabled), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_click), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080137, // 0000 GETMET R2 R0 K55 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x80000000, // 0003 RET 0 @@ -2540,33 +2508,27 @@ be_local_closure(class_lvh_obj_set_adjustable, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(add_flag), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(OBJ_FLAG_CLICKABLE), - /* K4 */ be_nested_str_weak(clear_flag), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_adjustable), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x78060005, // 0000 JMPF R1 #0007 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0xB8120400, // 0003 GETNGBL R4 K2 - 0x88100903, // 0004 GETMBR R4 R4 K3 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C080538, // 0002 GETMET R2 R2 K56 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x88100910, // 0004 GETMBR R4 R4 K16 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x8C080504, // 0008 GETMET R2 R2 K4 - 0xB8120400, // 0009 GETNGBL R4 K2 - 0x88100903, // 000A GETMBR R4 R4 K3 + 0x88080101, // 0007 GETMBR R2 R0 K1 + 0x8C080539, // 0008 GETMET R2 R2 K57 + 0xB8120600, // 0009 GETNGBL R4 K3 + 0x88100910, // 000A GETMBR R4 R4 K16 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -2582,7 +2544,7 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ be_nested_proto( 13, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -2641,80 +2603,57 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(_page), - /* K1 */ be_nested_str_weak(_oh), - /* K2 */ be_nested_str_weak(get_code), - /* K3 */ be_nested_str_weak(action), - /* K4 */ be_nested_str_weak(), - /* K5 */ be_nested_str_weak(lv), - /* K6 */ be_nested_str_weak(EVENT_CLICKED), - /* K7 */ be_nested_str_weak(tasmota), - /* K8 */ be_nested_str_weak(set_timer), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(_event_map), - /* K11 */ be_nested_str_weak(find), - /* K12 */ be_nested_str_weak(json), - /* K13 */ be_nested_str_weak(EVENT_VALUE_CHANGED), - /* K14 */ be_nested_str_weak(val), - /* K15 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s), - /* K16 */ be_nested_str_weak(dump), - /* K17 */ be_nested_str_weak(text), - /* K18 */ be_nested_str_weak(_X2C_X22text_X22_X3A), - /* K19 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D), - /* K20 */ be_nested_str_weak(_page_id), - /* K21 */ be_nested_str_weak(id), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(event_cb), &be_const_str_solidified, ( &(const binstruction[72]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 + 0x88080132, // 0000 GETMBR R2 R0 K50 + 0x8808053A, // 0001 GETMBR R2 R2 K58 + 0x8C0C033B, // 0002 GETMET R3 R1 K59 0x7C0C0200, // 0003 CALL R3 1 - 0x88100103, // 0004 GETMBR R4 R0 K3 - 0x20100904, // 0005 NE R4 R4 K4 + 0x8810013C, // 0004 GETMBR R4 R0 K60 + 0x20100924, // 0005 NE R4 R4 K36 0x78120008, // 0006 JMPF R4 #0010 - 0xB8120A00, // 0007 GETNGBL R4 K5 - 0x88100906, // 0008 GETMBR R4 R4 K6 + 0xB8120600, // 0007 GETNGBL R4 K3 + 0x8810093D, // 0008 GETMBR R4 R4 K61 0x1C100604, // 0009 EQ R4 R3 R4 0x78120004, // 000A JMPF R4 #0010 - 0xB8120E00, // 000B GETNGBL R4 K7 - 0x8C100908, // 000C GETMET R4 R4 K8 - 0x58180009, // 000D LDCONST R6 K9 + 0xB8127C00, // 000B GETNGBL R4 K62 + 0x8C10093F, // 000C GETMET R4 R4 K63 + 0x58180016, // 000D LDCONST R6 K22 0x841C0000, // 000E CLOSURE R7 P0 0x7C100600, // 000F CALL R4 3 - 0x8810010A, // 0010 GETMBR R4 R0 K10 - 0x8C10090B, // 0011 GETMET R4 R4 K11 + 0x88100140, // 0010 GETMBR R4 R0 K64 + 0x8C100941, // 0011 GETMET R4 R4 K65 0x5C180600, // 0012 MOVE R6 R3 0x7C100400, // 0013 CALL R4 2 0x4C140000, // 0014 LDNIL R5 0x20140805, // 0015 NE R5 R4 R5 0x7816002E, // 0016 JMPF R5 #0046 - 0xA4161800, // 0017 IMPORT R5 K12 - 0x58180004, // 0018 LDCONST R6 K4 - 0xB81E0A00, // 0019 GETNGBL R7 K5 - 0x881C0F0D, // 001A GETMBR R7 R7 K13 + 0xA4168400, // 0017 IMPORT R5 K66 + 0x58180024, // 0018 LDCONST R6 K36 + 0xB81E0600, // 0019 GETNGBL R7 K3 + 0x881C0F43, // 001A GETMBR R7 R7 K67 0x1C1C0607, // 001B EQ R7 R3 R7 0x781E001A, // 001C JMPF R7 #0038 0xA8020015, // 001D EXBLK 0 #0034 - 0x881C010E, // 001E GETMBR R7 R0 K14 + 0x881C0144, // 001E GETMBR R7 R0 K68 0x4C200000, // 001F LDNIL R8 0x20200E08, // 0020 NE R8 R7 R8 0x78220006, // 0021 JMPF R8 #0029 0x60200018, // 0022 GETGBL R8 G24 - 0x5824000F, // 0023 LDCONST R9 K15 - 0x8C280B10, // 0024 GETMET R10 R5 K16 + 0x58240045, // 0023 LDCONST R9 K69 + 0x8C280B46, // 0024 GETMET R10 R5 K70 0x5C300E00, // 0025 MOVE R12 R7 0x7C280400, // 0026 CALL R10 2 0x7C200400, // 0027 CALL R8 2 0x5C181000, // 0028 MOVE R6 R8 - 0x88200111, // 0029 GETMBR R8 R0 K17 + 0x88200147, // 0029 GETMBR R8 R0 K71 0x4C240000, // 002A LDNIL R9 0x20241009, // 002B NE R9 R8 R9 0x78260004, // 002C JMPF R9 #0032 - 0x00180D12, // 002D ADD R6 R6 K18 - 0x8C240B10, // 002E GETMET R9 R5 K16 + 0x00180D48, // 002D ADD R6 R6 K72 + 0x8C240B46, // 002E GETMET R9 R5 K70 0x5C2C1000, // 002F MOVE R11 R8 0x7C240400, // 0030 CALL R9 2 0x00180C09, // 0031 ADD R6 R6 R9 @@ -2725,16 +2664,16 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ 0x70020000, // 0036 JMP #0038 0xB0080000, // 0037 RAISE 2 R0 R0 0x601C0018, // 0038 GETGBL R7 G24 - 0x58200013, // 0039 LDCONST R8 K19 - 0x88240100, // 003A GETMBR R9 R0 K0 - 0x88241314, // 003B GETMBR R9 R9 K20 - 0x88280115, // 003C GETMBR R10 R0 K21 + 0x58200049, // 0039 LDCONST R8 K73 + 0x88240132, // 003A GETMBR R9 R0 K50 + 0x8824134A, // 003B GETMBR R9 R9 K74 + 0x88280134, // 003C GETMBR R10 R0 K52 0x5C2C0800, // 003D MOVE R11 R4 0x5C300C00, // 003E MOVE R12 R6 0x7C1C0A00, // 003F CALL R7 5 - 0xB8220E00, // 0040 GETNGBL R8 K7 - 0x8C201108, // 0041 GETMET R8 R8 K8 - 0x58280009, // 0042 LDCONST R10 K9 + 0xB8227C00, // 0040 GETNGBL R8 K62 + 0x8C20113F, // 0041 GETMET R8 R8 K63 + 0x58280016, // 0042 LDCONST R10 K22 0x842C0001, // 0043 CLOSURE R11 P1 0x7C200600, // 0044 CALL R8 3 0xA0140000, // 0045 CLOSE R5 @@ -2753,22 +2692,20 @@ be_local_closure(class_lvh_obj_init, /* name */ be_nested_proto( 13, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x60180003, // 0000 GETGBL R6 G3 0x5C1C0000, // 0001 MOVE R7 R0 0x7C180200, // 0002 CALL R6 1 - 0x8C180D00, // 0003 GETMET R6 R6 K0 + 0x8C180D4B, // 0003 GETMET R6 R6 K75 0x5C200200, // 0004 MOVE R8 R1 0x5C240400, // 0005 MOVE R9 R2 0x5C280600, // 0006 MOVE R10 R3 @@ -2789,25 +2726,20 @@ be_local_closure(class_lvh_obj_get_enabled, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(has_state), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(STATE_DISABLED), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_enabled), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x880C0703, // 0003 GETMBR R3 R3 K3 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C04034C, // 0001 GETMET R1 R1 K76 + 0xB80E0600, // 0002 GETNGBL R3 K3 + 0x880C074D, // 0003 GETMBR R3 R3 K77 0x7C040400, // 0004 CALL R1 2 0x78060000, // 0005 JMPF R1 #0007 0x50040001, // 0006 LDBOOL R1 0 1 @@ -2826,19 +2758,17 @@ be_local_closure(class_lvh_obj_get_click, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_enabled), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_click), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04014E, // 0000 GETMET R1 R0 K78 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -2854,25 +2784,22 @@ be_local_closure(class_lvh_obj_get_label_mode, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_label), - /* K1 */ be_nested_str_weak(get_long_mode), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_label_mode), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040111, // 0000 GETMBR R1 R0 K17 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060003, // 0003 JMPF R1 #0008 - 0x88040100, // 0004 GETMBR R1 R0 K0 - 0x8C040301, // 0005 GETMET R1 R1 K1 + 0x88040111, // 0004 GETMBR R1 R0 K17 + 0x8C04034F, // 0005 GETMET R1 R1 K79 0x7C040200, // 0006 CALL R1 1 0x80040200, // 0007 RET 1 R1 0x80000000, // 0008 RET 0 @@ -2889,25 +2816,20 @@ be_local_closure(class_lvh_obj_get_toggle, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(has_state), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(STATE_CHECKED), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_toggle), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x880C0703, // 0003 GETMBR R3 R3 K3 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C04034C, // 0001 GETMET R1 R1 K76 + 0xB80E0600, // 0002 GETNGBL R3 K3 + 0x880C070A, // 0003 GETMBR R3 R3 K10 0x7C040400, // 0004 CALL R1 2 0x80040200, // 0005 RET 1 R1 }) @@ -2923,25 +2845,20 @@ be_local_closure(class_lvh_obj_get_hidden, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(has_flag), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(OBJ_FLAG_HIDDEN), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_hidden), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x880C0703, // 0003 GETMBR R3 R3 K3 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C04030F, // 0001 GETMET R1 R1 K15 + 0xB80E0600, // 0002 GETNGBL R3 K3 + 0x880C0750, // 0003 GETMBR R3 R3 K80 0x7C040400, // 0004 CALL R1 2 0x80040200, // 0005 RET 1 R1 }) @@ -2957,19 +2874,17 @@ be_local_closure(class_lvh_obj_set_value_font, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(set_text_font), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_value_font), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080151, // 0000 GETMET R2 R0 K81 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x80000000, // 0003 RET 0 @@ -2986,19 +2901,17 @@ be_local_closure(class_lvh_obj_get_value_font, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(get_text_font), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_value_font), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040152, // 0000 GETMET R1 R0 K82 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -3014,31 +2927,25 @@ be_local_closure(class_lvh_obj_set_val, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(_val), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(_lv_obj), - /* K4 */ be_nested_str_weak(set_value), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x8C0C0502, // 0002 GETMET R3 R2 K2 - 0x88140103, // 0003 GETMBR R5 R0 K3 - 0x58180004, // 0004 LDCONST R6 K4 + 0xA40A4E00, // 0000 IMPORT R2 K39 + 0x9002A601, // 0001 SETMBR R0 K83 R1 + 0x8C0C0528, // 0002 GETMET R3 R2 K40 + 0x88140101, // 0003 GETMBR R5 R0 K1 + 0x58180054, // 0004 LDCONST R6 K84 0x7C0C0600, // 0005 CALL R3 3 0x780E0003, // 0006 JMPF R3 #000B - 0x880C0103, // 0007 GETMBR R3 R0 K3 - 0x8C0C0704, // 0008 GETMET R3 R3 K4 + 0x880C0101, // 0007 GETMBR R3 R0 K1 + 0x8C0C0754, // 0008 GETMET R3 R3 K84 0x5C140200, // 0009 MOVE R5 R1 0x7C0C0400, // 000A CALL R3 2 0x80000000, // 000B RET 0 @@ -3055,23 +2962,19 @@ be_local_closure(class_lvh_obj_set_text_color, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_style_text_color), - /* K2 */ be_nested_str_weak(parse_color), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_text_color), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x8C140102, // 0002 GETMET R5 R0 K2 + 0x880C0101, // 0000 GETMBR R3 R0 K1 + 0x8C0C0755, // 0001 GETMET R3 R3 K85 + 0x8C140156, // 0002 GETMET R5 R0 K86 0x5C1C0200, // 0003 MOVE R7 R1 0x7C140400, // 0004 CALL R5 2 0x5C180400, // 0005 MOVE R6 R2 @@ -3090,22 +2993,20 @@ be_local_closure(class_lvh_obj_set_action, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_action), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_action), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x90024602, // 0003 SETMBR R0 K35 R2 0x80000000, // 0004 RET 0 }) ) @@ -3120,19 +3021,13 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(get_style_radius), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_radius2), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -3141,7 +3036,7 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x8C040357, // 0005 GETMET R1 R1 K87 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -3162,19 +3057,13 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_style_pad_right), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_pad_right2), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -3183,7 +3072,7 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x8C080558, // 0005 GETMET R2 R2 K88 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -3206,75 +3095,56 @@ be_local_closure(class_lvh_obj_set_label_mode, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(expand), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_width), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(SIZE_CONTENT), - /* K5 */ be_nested_str_weak(break), - /* K6 */ be_nested_str_weak(LABEL_LONG_WRAP), - /* K7 */ be_nested_str_weak(dots), - /* K8 */ be_nested_str_weak(LABEL_LONG_DOT), - /* K9 */ be_nested_str_weak(scroll), - /* K10 */ be_nested_str_weak(LABEL_LONG_SCROLL), - /* K11 */ be_nested_str_weak(loop), - /* K12 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR), - /* K13 */ be_nested_str_weak(crop), - /* K14 */ be_nested_str_weak(LABEL_LONG_CLIP), - /* K15 */ be_nested_str_weak(check_label), - /* K16 */ be_nested_str_weak(_lv_label), - /* K17 */ be_nested_str_weak(set_long_mode), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_label_mode), &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ 0x4C080000, // 0000 LDNIL R2 - 0x1C0C0300, // 0001 EQ R3 R1 K0 + 0x1C0C0359, // 0001 EQ R3 R1 K89 0x780E0005, // 0002 JMPF R3 #0009 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x8C0C075A, // 0004 GETMET R3 R3 K90 0xB8160600, // 0005 GETNGBL R5 K3 - 0x88140B04, // 0006 GETMBR R5 R5 K4 + 0x88140B5B, // 0006 GETMBR R5 R5 K91 0x7C0C0400, // 0007 CALL R3 2 0x70020017, // 0008 JMP #0021 - 0x1C0C0305, // 0009 EQ R3 R1 K5 + 0x1C0C035C, // 0009 EQ R3 R1 K92 0x780E0002, // 000A JMPF R3 #000E 0xB80E0600, // 000B GETNGBL R3 K3 - 0x88080706, // 000C GETMBR R2 R3 K6 + 0x8808075D, // 000C GETMBR R2 R3 K93 0x70020012, // 000D JMP #0021 - 0x1C0C0307, // 000E EQ R3 R1 K7 + 0x1C0C035E, // 000E EQ R3 R1 K94 0x780E0002, // 000F JMPF R3 #0013 0xB80E0600, // 0010 GETNGBL R3 K3 - 0x88080708, // 0011 GETMBR R2 R3 K8 + 0x8808075F, // 0011 GETMBR R2 R3 K95 0x7002000D, // 0012 JMP #0021 - 0x1C0C0309, // 0013 EQ R3 R1 K9 + 0x1C0C0360, // 0013 EQ R3 R1 K96 0x780E0002, // 0014 JMPF R3 #0018 0xB80E0600, // 0015 GETNGBL R3 K3 - 0x8808070A, // 0016 GETMBR R2 R3 K10 + 0x88080761, // 0016 GETMBR R2 R3 K97 0x70020008, // 0017 JMP #0021 - 0x1C0C030B, // 0018 EQ R3 R1 K11 + 0x1C0C0362, // 0018 EQ R3 R1 K98 0x780E0002, // 0019 JMPF R3 #001D 0xB80E0600, // 001A GETNGBL R3 K3 - 0x8808070C, // 001B GETMBR R2 R3 K12 + 0x88080763, // 001B GETMBR R2 R3 K99 0x70020003, // 001C JMP #0021 - 0x1C0C030D, // 001D EQ R3 R1 K13 + 0x1C0C0364, // 001D EQ R3 R1 K100 0x780E0001, // 001E JMPF R3 #0021 0xB80E0600, // 001F GETNGBL R3 K3 - 0x8808070E, // 0020 GETMBR R2 R3 K14 + 0x88080765, // 0020 GETMBR R2 R3 K101 0x4C0C0000, // 0021 LDNIL R3 0x200C0403, // 0022 NE R3 R2 R3 0x780E0005, // 0023 JMPF R3 #002A - 0x8C0C010F, // 0024 GETMET R3 R0 K15 + 0x8C0C0114, // 0024 GETMET R3 R0 K20 0x7C0C0200, // 0025 CALL R3 1 - 0x880C0110, // 0026 GETMBR R3 R0 K16 - 0x8C0C0711, // 0027 GETMET R3 R3 K17 + 0x880C0111, // 0026 GETMBR R3 R0 K17 + 0x8C0C0766, // 0027 GETMET R3 R3 K102 0x5C140400, // 0028 MOVE R5 R2 0x7C0C0400, // 0029 CALL R3 2 0x80000000, // 002A RET 0 @@ -3291,79 +3161,51 @@ be_local_closure(class_lvh_obj_setmember, /* name */ be_nested_proto( 12, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(startswith), - /* K3 */ be_nested_str_weak(set_), - /* K4 */ be_nested_str_weak(get_), - /* K5 */ be_nested_str_weak(real), - /* K6 */ be_nested_str_weak(math), - /* K7 */ be_nested_str_weak(round), - /* K8 */ be_nested_str_weak(endswith), - /* K9 */ be_nested_str_weak(_X25), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(lv), - /* K12 */ be_nested_str_weak(pct), - /* K13 */ be_const_int(3), - /* K14 */ be_nested_str_weak(byte), - /* K15 */ be_const_int(2147483647), - /* K16 */ be_nested_str_weak(digits_to_style), - /* K17 */ be_nested_str_weak(_attr_ignore), - /* K18 */ be_nested_str_weak(find), - /* K19 */ be_nested_str_weak(get), - /* K20 */ be_nested_str_weak(function), - /* K21 */ be_nested_str_weak(_attr_map), - /* K22 */ be_nested_str_weak(is_color_attribute), - /* K23 */ be_nested_str_weak(parse_color), - /* K24 */ be_nested_str_weak(_lv_obj), - /* K25 */ be_nested_str_weak(set_style_), - /* K26 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(setmember), &be_const_str_solidified, ( &(const binstruction[164]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 - 0x8C140702, // 0002 GETMET R5 R3 K2 + 0xA40E0A00, // 0000 IMPORT R3 K5 + 0xA4124E00, // 0001 IMPORT R4 K39 + 0x8C140767, // 0002 GETMET R5 R3 K103 0x5C1C0200, // 0003 MOVE R7 R1 - 0x58200003, // 0004 LDCONST R8 K3 + 0x58200068, // 0004 LDCONST R8 K104 0x7C140600, // 0005 CALL R5 3 0x74160004, // 0006 JMPT R5 #000C - 0x8C140702, // 0007 GETMET R5 R3 K2 + 0x8C140767, // 0007 GETMET R5 R3 K103 0x5C1C0200, // 0008 MOVE R7 R1 - 0x58200004, // 0009 LDCONST R8 K4 + 0x58200069, // 0009 LDCONST R8 K105 0x7C140600, // 000A CALL R5 3 0x78160000, // 000B JMPF R5 #000D 0x80000A00, // 000C RET 0 0x60140004, // 000D GETGBL R5 G4 0x5C180400, // 000E MOVE R6 R2 0x7C140200, // 000F CALL R5 1 - 0x1C140B05, // 0010 EQ R5 R5 K5 + 0x1C140B6A, // 0010 EQ R5 R5 K106 0x78160006, // 0011 JMPF R5 #0019 - 0xA4160C00, // 0012 IMPORT R5 K6 + 0xA416D600, // 0012 IMPORT R5 K107 0x60180009, // 0013 GETGBL R6 G9 - 0x8C1C0B07, // 0014 GETMET R7 R5 K7 + 0x8C1C0B6C, // 0014 GETMET R7 R5 K108 0x5C240400, // 0015 MOVE R9 R2 0x7C1C0400, // 0016 CALL R7 2 0x7C180200, // 0017 CALL R6 1 0x5C080C00, // 0018 MOVE R2 R6 - 0x8C140708, // 0019 GETMET R5 R3 K8 + 0x8C14076D, // 0019 GETMET R5 R3 K109 0x5C1C0200, // 001A MOVE R7 R1 - 0x58200009, // 001B LDCONST R8 K9 + 0x5820006E, // 001B LDCONST R8 K110 0x7C140600, // 001C CALL R5 3 0x78160009, // 001D JMPF R5 #0028 0x5415FFFD, // 001E LDINT R5 -2 - 0x40161405, // 001F CONNECT R5 K10 R5 + 0x4016DE05, // 001F CONNECT R5 K111 R5 0x94040205, // 0020 GETIDX R1 R1 R5 - 0xB8161600, // 0021 GETNGBL R5 K11 - 0x8C140B0C, // 0022 GETMET R5 R5 K12 + 0xB8160600, // 0021 GETNGBL R5 K3 + 0x8C140B70, // 0022 GETMET R5 R5 K112 0x601C0009, // 0023 GETGBL R7 G9 0x5C200400, // 0024 MOVE R8 R2 0x7C1C0200, // 0025 CALL R7 1 @@ -3373,13 +3215,13 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x6018000C, // 0029 GETGBL R6 G12 0x5C1C0200, // 002A MOVE R7 R1 0x7C180200, // 002B CALL R6 1 - 0x28180D0D, // 002C GE R6 R6 K13 + 0x28180D71, // 002C GE R6 R6 K113 0x781A001F, // 002D JMPF R6 #004E - 0x8C18070E, // 002E GETMET R6 R3 K14 + 0x8C180772, // 002E GETMET R6 R3 K114 0x5421FFFE, // 002F LDINT R8 -1 0x94200208, // 0030 GETIDX R8 R1 R8 0x7C180400, // 0031 CALL R6 2 - 0x8C1C070E, // 0032 GETMET R7 R3 K14 + 0x8C1C0772, // 0032 GETMET R7 R3 K114 0x5425FFFD, // 0033 LDINT R9 -2 0x94240209, // 0034 GETIDX R9 R1 R9 0x7C1C0400, // 0035 CALL R7 2 @@ -3397,32 +3239,32 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x7822000B, // 0041 JMPF R8 #004E 0x60200009, // 0042 GETGBL R8 G9 0x5425FFFD, // 0043 LDINT R9 -2 - 0x4024130F, // 0044 CONNECT R9 R9 K15 + 0x40241373, // 0044 CONNECT R9 R9 K115 0x94240209, // 0045 GETIDX R9 R1 R9 0x7C200200, // 0046 CALL R8 1 0x5425FFFC, // 0047 LDINT R9 -3 - 0x40261409, // 0048 CONNECT R9 K10 R9 + 0x4026DE09, // 0048 CONNECT R9 K111 R9 0x94040209, // 0049 GETIDX R1 R1 R9 - 0x8C240110, // 004A GETMET R9 R0 K16 + 0x8C240174, // 004A GETMET R9 R0 K116 0x5C2C1000, // 004B MOVE R11 R8 0x7C240400, // 004C CALL R9 2 0x5C141200, // 004D MOVE R5 R9 - 0x88180111, // 004E GETMBR R6 R0 K17 - 0x8C180D12, // 004F GETMET R6 R6 K18 + 0x88180175, // 004E GETMBR R6 R0 K117 + 0x8C180D41, // 004F GETMET R6 R6 K65 0x5C200200, // 0050 MOVE R8 R1 0x7C180400, // 0051 CALL R6 2 0x4C1C0000, // 0052 LDNIL R7 0x20180C07, // 0053 NE R6 R6 R7 0x781A0000, // 0054 JMPF R6 #0056 0x80000C00, // 0055 RET 0 - 0x8C180913, // 0056 GETMET R6 R4 K19 + 0x8C180976, // 0056 GETMET R6 R4 K118 0x5C200000, // 0057 MOVE R8 R0 - 0x00260601, // 0058 ADD R9 K3 R1 + 0x0026D001, // 0058 ADD R9 K104 R1 0x7C180600, // 0059 CALL R6 3 0x601C0004, // 005A GETGBL R7 G4 0x5C200C00, // 005B MOVE R8 R6 0x7C1C0200, // 005C CALL R7 1 - 0x1C1C0F14, // 005D EQ R7 R7 K20 + 0x1C1C0F77, // 005D EQ R7 R7 K119 0x781E000A, // 005E JMPF R7 #006A 0x5C1C0C00, // 005F MOVE R7 R6 0x5C200000, // 0060 MOVE R8 R0 @@ -3432,64 +3274,64 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x782A0001, // 0064 JMPF R10 #0067 0x5C280A00, // 0065 MOVE R10 R5 0x70020000, // 0066 JMP #0068 - 0x5828000A, // 0067 LDCONST R10 K10 + 0x5828006F, // 0067 LDCONST R10 K111 0x7C1C0600, // 0068 CALL R7 3 0x80000E00, // 0069 RET 0 - 0x881C0115, // 006A GETMBR R7 R0 K21 - 0x8C1C0F12, // 006B GETMET R7 R7 K18 + 0x881C0178, // 006A GETMBR R7 R0 K120 + 0x8C1C0F41, // 006B GETMET R7 R7 K65 0x5C240200, // 006C MOVE R9 R1 0x5C280200, // 006D MOVE R10 R1 0x7C1C0600, // 006E CALL R7 3 0x5C040E00, // 006F MOVE R1 R7 - 0x8C1C0116, // 0070 GETMET R7 R0 K22 + 0x8C1C0179, // 0070 GETMET R7 R0 K121 0x5C240200, // 0071 MOVE R9 R1 0x7C1C0400, // 0072 CALL R7 2 0x781E0003, // 0073 JMPF R7 #0078 - 0x8C1C0117, // 0074 GETMET R7 R0 K23 + 0x8C1C0156, // 0074 GETMET R7 R0 K86 0x5C240400, // 0075 MOVE R9 R2 0x7C1C0400, // 0076 CALL R7 2 0x5C080E00, // 0077 MOVE R2 R7 0x4C1C0000, // 0078 LDNIL R7 0x1C1C0A07, // 0079 EQ R7 R5 R7 0x781E000E, // 007A JMPF R7 #008A - 0x8C1C0913, // 007B GETMET R7 R4 K19 - 0x88240118, // 007C GETMBR R9 R0 K24 - 0x002A0601, // 007D ADD R10 K3 R1 + 0x8C1C0976, // 007B GETMET R7 R4 K118 + 0x88240101, // 007C GETMBR R9 R0 K1 + 0x002AD001, // 007D ADD R10 K104 R1 0x7C1C0600, // 007E CALL R7 3 0x5C180E00, // 007F MOVE R6 R7 0x601C0004, // 0080 GETGBL R7 G4 0x5C200C00, // 0081 MOVE R8 R6 0x7C1C0200, // 0082 CALL R7 1 - 0x1C1C0F14, // 0083 EQ R7 R7 K20 + 0x1C1C0F77, // 0083 EQ R7 R7 K119 0x781E0004, // 0084 JMPF R7 #008A 0x5C1C0C00, // 0085 MOVE R7 R6 - 0x88200118, // 0086 GETMBR R8 R0 K24 + 0x88200101, // 0086 GETMBR R8 R0 K1 0x5C240400, // 0087 MOVE R9 R2 0x7C1C0400, // 0088 CALL R7 2 0x80040E00, // 0089 RET 1 R7 - 0x8C1C0913, // 008A GETMET R7 R4 K19 - 0x88240118, // 008B GETMBR R9 R0 K24 - 0x002A3201, // 008C ADD R10 K25 R1 + 0x8C1C0976, // 008A GETMET R7 R4 K118 + 0x88240101, // 008B GETMBR R9 R0 K1 + 0x002AF401, // 008C ADD R10 K122 R1 0x7C1C0600, // 008D CALL R7 3 0x5C180E00, // 008E MOVE R6 R7 0x601C0004, // 008F GETGBL R7 G4 0x5C200C00, // 0090 MOVE R8 R6 0x7C1C0200, // 0091 CALL R7 1 - 0x1C1C0F14, // 0092 EQ R7 R7 K20 + 0x1C1C0F77, // 0092 EQ R7 R7 K119 0x781E000A, // 0093 JMPF R7 #009F 0x5C1C0C00, // 0094 MOVE R7 R6 - 0x88200118, // 0095 GETMBR R8 R0 K24 + 0x88200101, // 0095 GETMBR R8 R0 K1 0x5C240400, // 0096 MOVE R9 R2 0x4C280000, // 0097 LDNIL R10 0x20280A0A, // 0098 NE R10 R5 R10 0x782A0001, // 0099 JMPF R10 #009C 0x5C280A00, // 009A MOVE R10 R5 0x70020000, // 009B JMP #009D - 0x5828000A, // 009C LDCONST R10 K10 + 0x5828006F, // 009C LDCONST R10 K111 0x7C1C0600, // 009D CALL R7 3 0x80040E00, // 009E RET 1 R7 0x601C0001, // 009F GETGBL R7 G1 - 0x5820001A, // 00A0 LDCONST R8 K26 + 0x5820007B, // 00A0 LDCONST R8 K123 0x5C240200, // 00A1 MOVE R9 R1 0x7C1C0400, // 00A2 CALL R7 2 0x80000000, // 00A3 RET 0 @@ -3506,33 +3348,27 @@ be_local_closure(class_lvh_obj_set_enabled, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(clear_state), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(STATE_DISABLED), - /* K4 */ be_nested_str_weak(add_state), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_enabled), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x78060005, // 0000 JMPF R1 #0007 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0xB8120400, // 0003 GETNGBL R4 K2 - 0x88100903, // 0004 GETMBR R4 R4 K3 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C08050B, // 0002 GETMET R2 R2 K11 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x8810094D, // 0004 GETMBR R4 R4 K77 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x8C080504, // 0008 GETMET R2 R2 K4 - 0xB8120400, // 0009 GETNGBL R4 K2 - 0x88100903, // 000A GETMBR R4 R4 K3 + 0x88080101, // 0007 GETMBR R2 R0 K1 + 0x8C080509, // 0008 GETMET R2 R2 K9 + 0xB8120600, // 0009 GETNGBL R4 K3 + 0x8810094D, // 000A GETMBR R4 R4 K77 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -3548,57 +3384,46 @@ be_local_closure(class_lvh_obj_get_align, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(_lv_label), - /* K2 */ be_nested_str_weak(get_style_text_align), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(TEXT_ALIGN_LEFT), - /* K5 */ be_nested_str_weak(left), - /* K6 */ be_nested_str_weak(TEXT_ALIGN_CENTER), - /* K7 */ be_nested_str_weak(center), - /* K8 */ be_nested_str_weak(TEXT_ALIGN_RIGHT), - /* K9 */ be_nested_str_weak(right), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_align), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x1C080300, // 0000 EQ R2 R1 K0 + 0x1C080316, // 0000 EQ R2 R1 K22 0x780A0000, // 0001 JMPF R2 #0003 - 0x58040000, // 0002 LDCONST R1 K0 - 0x88080101, // 0003 GETMBR R2 R0 K1 + 0x58040016, // 0002 LDCONST R1 K22 + 0x88080111, // 0003 GETMBR R2 R0 K17 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0001, // 0006 JMPF R2 #0009 0x4C080000, // 0007 LDNIL R2 0x80040400, // 0008 RET 1 R2 - 0x88080101, // 0009 GETMBR R2 R0 K1 - 0x8C080502, // 000A GETMET R2 R2 K2 + 0x88080111, // 0009 GETMBR R2 R0 K17 + 0x8C08057C, // 000A GETMET R2 R2 K124 0x5C100200, // 000B MOVE R4 R1 0x7C080400, // 000C CALL R2 2 0xB80E0600, // 000D GETNGBL R3 K3 - 0x880C0704, // 000E GETMBR R3 R3 K4 + 0x880C0718, // 000E GETMBR R3 R3 K24 0x1C0C0403, // 000F EQ R3 R2 R3 0x780E0001, // 0010 JMPF R3 #0013 - 0x80060A00, // 0011 RET 1 K5 + 0x80062E00, // 0011 RET 1 K23 0x7002000C, // 0012 JMP #0020 0xB80E0600, // 0013 GETNGBL R3 K3 - 0x880C0706, // 0014 GETMBR R3 R3 K6 + 0x880C071B, // 0014 GETMBR R3 R3 K27 0x1C0C0403, // 0015 EQ R3 R2 R3 0x780E0001, // 0016 JMPF R3 #0019 - 0x80060E00, // 0017 RET 1 K7 + 0x80063400, // 0017 RET 1 K26 0x70020006, // 0018 JMP #0020 0xB80E0600, // 0019 GETNGBL R3 K3 - 0x880C0708, // 001A GETMBR R3 R3 K8 + 0x880C071E, // 001A GETMBR R3 R3 K30 0x1C0C0403, // 001B EQ R3 R2 R3 0x780E0001, // 001C JMPF R3 #001F - 0x80061200, // 001D RET 1 K9 + 0x80063A00, // 001D RET 1 K29 0x70020000, // 001E JMP #0020 0x80040400, // 001F RET 1 R2 0x80000000, // 0020 RET 0 @@ -3615,19 +3440,13 @@ be_local_closure(class_lvh_obj_get_pad_left, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(get_style_pad_left), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_pad_left), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -3636,7 +3455,7 @@ be_local_closure(class_lvh_obj_get_pad_left, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x8C04037D, // 0005 GETMET R1 R1 K125 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -3657,24 +3476,20 @@ be_local_closure(class_lvh_obj_set_value_ofs_x, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(check_label), - /* K1 */ be_nested_str_weak(_lv_label), - /* K2 */ be_nested_str_weak(set_x), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_value_ofs_x), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080114, // 0000 GETMET R2 R0 K20 0x7C080200, // 0001 CALL R2 1 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x8C080502, // 0003 GETMET R2 R2 K2 + 0x88080111, // 0002 GETMBR R2 R0 K17 + 0x8C08057E, // 0003 GETMET R2 R2 K126 0x60100009, // 0004 GETGBL R4 G9 0x5C140200, // 0005 MOVE R5 R1 0x7C100200, // 0006 CALL R4 1 @@ -3693,33 +3508,27 @@ be_local_closure(class_lvh_obj_set_flex_in_new_track, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(add_flag), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(OBJ_FLAG_FLEX_IN_NEW_TRACK), - /* K4 */ be_nested_str_weak(clear_flag), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_flex_in_new_track), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x78060005, // 0000 JMPF R1 #0007 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0xB8120400, // 0003 GETNGBL R4 K2 - 0x88100903, // 0004 GETMBR R4 R4 K3 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C080538, // 0002 GETMET R2 R2 K56 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x8810092E, // 0004 GETMBR R4 R4 K46 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x8C080504, // 0008 GETMET R2 R2 K4 - 0xB8120400, // 0009 GETNGBL R4 K2 - 0x88100903, // 000A GETMBR R4 R4 K3 + 0x88080101, // 0007 GETMBR R2 R0 K1 + 0x8C080539, // 0008 GETMET R2 R2 K57 + 0xB8120600, // 0009 GETNGBL R4 K3 + 0x8810092E, // 000A GETMBR R4 R4 K46 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -3735,45 +3544,26 @@ be_local_closure(class_lvh_obj_member, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(startswith), - /* K3 */ be_nested_str_weak(set_), - /* K4 */ be_nested_str_weak(get_), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(byte), - /* K7 */ be_const_int(2147483647), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(digits_to_style), - /* K10 */ be_nested_str_weak(_attr_ignore), - /* K11 */ be_nested_str_weak(find), - /* K12 */ be_nested_str_weak(get), - /* K13 */ be_nested_str_weak(function), - /* K14 */ be_nested_str_weak(_attr_map), - /* K15 */ be_nested_str_weak(_lv_obj), - /* K16 */ be_nested_str_weak(get_style_), - /* K17 */ be_nested_str_weak(undefined), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(member), &be_const_str_solidified, ( &(const binstruction[125]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100502, // 0002 GETMET R4 R2 K2 + 0xA40A0A00, // 0000 IMPORT R2 K5 + 0xA40E4E00, // 0001 IMPORT R3 K39 + 0x8C100567, // 0002 GETMET R4 R2 K103 0x5C180200, // 0003 MOVE R6 R1 - 0x581C0003, // 0004 LDCONST R7 K3 + 0x581C0068, // 0004 LDCONST R7 K104 0x7C100600, // 0005 CALL R4 3 0x74120004, // 0006 JMPT R4 #000C - 0x8C100502, // 0007 GETMET R4 R2 K2 + 0x8C100567, // 0007 GETMET R4 R2 K103 0x5C180200, // 0008 MOVE R6 R1 - 0x581C0004, // 0009 LDCONST R7 K4 + 0x581C0069, // 0009 LDCONST R7 K105 0x7C100600, // 000A CALL R4 3 0x78120000, // 000B JMPF R4 #000D 0x80000800, // 000C RET 0 @@ -3781,13 +3571,13 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x6014000C, // 000E GETGBL R5 G12 0x5C180200, // 000F MOVE R6 R1 0x7C140200, // 0010 CALL R5 1 - 0x28140B05, // 0011 GE R5 R5 K5 + 0x28140B71, // 0011 GE R5 R5 K113 0x7816001F, // 0012 JMPF R5 #0033 - 0x8C140506, // 0013 GETMET R5 R2 K6 + 0x8C140572, // 0013 GETMET R5 R2 K114 0x541DFFFE, // 0014 LDINT R7 -1 0x941C0207, // 0015 GETIDX R7 R1 R7 0x7C140400, // 0016 CALL R5 2 - 0x8C180506, // 0017 GETMET R6 R2 K6 + 0x8C180572, // 0017 GETMET R6 R2 K114 0x5421FFFD, // 0018 LDINT R8 -2 0x94200208, // 0019 GETIDX R8 R1 R8 0x7C180400, // 001A CALL R6 2 @@ -3805,32 +3595,32 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x781E000B, // 0026 JMPF R7 #0033 0x601C0009, // 0027 GETGBL R7 G9 0x5421FFFD, // 0028 LDINT R8 -2 - 0x40201107, // 0029 CONNECT R8 R8 K7 + 0x40201173, // 0029 CONNECT R8 R8 K115 0x94200208, // 002A GETIDX R8 R1 R8 0x7C1C0200, // 002B CALL R7 1 0x5421FFFC, // 002C LDINT R8 -3 - 0x40221008, // 002D CONNECT R8 K8 R8 + 0x40222C08, // 002D CONNECT R8 K22 R8 0x94040208, // 002E GETIDX R1 R1 R8 - 0x8C200109, // 002F GETMET R8 R0 K9 + 0x8C200174, // 002F GETMET R8 R0 K116 0x5C280E00, // 0030 MOVE R10 R7 0x7C200400, // 0031 CALL R8 2 0x5C101000, // 0032 MOVE R4 R8 - 0x8814010A, // 0033 GETMBR R5 R0 K10 - 0x8C140B0B, // 0034 GETMET R5 R5 K11 + 0x88140175, // 0033 GETMBR R5 R0 K117 + 0x8C140B41, // 0034 GETMET R5 R5 K65 0x5C1C0200, // 0035 MOVE R7 R1 0x7C140400, // 0036 CALL R5 2 0x4C180000, // 0037 LDNIL R6 0x20140A06, // 0038 NE R5 R5 R6 0x78160000, // 0039 JMPF R5 #003B 0x80000A00, // 003A RET 0 - 0x8C14070C, // 003B GETMET R5 R3 K12 + 0x8C140776, // 003B GETMET R5 R3 K118 0x5C1C0000, // 003C MOVE R7 R0 - 0x00220801, // 003D ADD R8 K4 R1 + 0x0022D201, // 003D ADD R8 K105 R1 0x7C140600, // 003E CALL R5 3 0x60180004, // 003F GETGBL R6 G4 0x5C1C0A00, // 0040 MOVE R7 R5 0x7C180200, // 0041 CALL R6 1 - 0x1C180D0D, // 0042 EQ R6 R6 K13 + 0x1C180D77, // 0042 EQ R6 R6 K119 0x781A0009, // 0043 JMPF R6 #004E 0x5C180A00, // 0044 MOVE R6 R5 0x5C1C0000, // 0045 MOVE R7 R0 @@ -3839,11 +3629,11 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x78220001, // 0048 JMPF R8 #004B 0x5C200800, // 0049 MOVE R8 R4 0x70020000, // 004A JMP #004C - 0x58200008, // 004B LDCONST R8 K8 + 0x58200016, // 004B LDCONST R8 K22 0x7C180400, // 004C CALL R6 2 0x80040C00, // 004D RET 1 R6 - 0x8818010E, // 004E GETMBR R6 R0 K14 - 0x8C180D0B, // 004F GETMET R6 R6 K11 + 0x88180178, // 004E GETMBR R6 R0 K120 + 0x8C180D41, // 004F GETMET R6 R6 K65 0x5C200200, // 0050 MOVE R8 R1 0x5C240200, // 0051 MOVE R9 R1 0x7C180600, // 0052 CALL R6 3 @@ -3851,42 +3641,42 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x4C180000, // 0054 LDNIL R6 0x1C180806, // 0055 EQ R6 R4 R6 0x781A000D, // 0056 JMPF R6 #0065 - 0x8C18070C, // 0057 GETMET R6 R3 K12 - 0x8820010F, // 0058 GETMBR R8 R0 K15 - 0x00260801, // 0059 ADD R9 K4 R1 + 0x8C180776, // 0057 GETMET R6 R3 K118 + 0x88200101, // 0058 GETMBR R8 R0 K1 + 0x0026D201, // 0059 ADD R9 K105 R1 0x7C180600, // 005A CALL R6 3 0x5C140C00, // 005B MOVE R5 R6 0x60180004, // 005C GETGBL R6 G4 0x5C1C0A00, // 005D MOVE R7 R5 0x7C180200, // 005E CALL R6 1 - 0x1C180D0D, // 005F EQ R6 R6 K13 + 0x1C180D77, // 005F EQ R6 R6 K119 0x781A0003, // 0060 JMPF R6 #0065 0x5C180A00, // 0061 MOVE R6 R5 - 0x881C010F, // 0062 GETMBR R7 R0 K15 + 0x881C0101, // 0062 GETMBR R7 R0 K1 0x7C180200, // 0063 CALL R6 1 0x80040C00, // 0064 RET 1 R6 - 0x8C18070C, // 0065 GETMET R6 R3 K12 - 0x8820010F, // 0066 GETMBR R8 R0 K15 - 0x00262001, // 0067 ADD R9 K16 R1 + 0x8C180776, // 0065 GETMET R6 R3 K118 + 0x88200101, // 0066 GETMBR R8 R0 K1 + 0x0026FE01, // 0067 ADD R9 K127 R1 0x7C180600, // 0068 CALL R6 3 0x5C140C00, // 0069 MOVE R5 R6 0x60180004, // 006A GETGBL R6 G4 0x5C1C0A00, // 006B MOVE R7 R5 0x7C180200, // 006C CALL R6 1 - 0x1C180D0D, // 006D EQ R6 R6 K13 + 0x1C180D77, // 006D EQ R6 R6 K119 0x781A0009, // 006E JMPF R6 #0079 0x5C180A00, // 006F MOVE R6 R5 - 0x881C010F, // 0070 GETMBR R7 R0 K15 + 0x881C0101, // 0070 GETMBR R7 R0 K1 0x4C200000, // 0071 LDNIL R8 0x20200808, // 0072 NE R8 R4 R8 0x78220001, // 0073 JMPF R8 #0076 0x5C200800, // 0074 MOVE R8 R4 0x70020000, // 0075 JMP #0077 - 0x58200008, // 0076 LDCONST R8 K8 + 0x58200016, // 0076 LDCONST R8 K22 0x7C180400, // 0077 CALL R6 2 0x80040C00, // 0078 RET 1 R6 0x6018000B, // 0079 GETGBL R6 G11 - 0x581C0011, // 007A LDCONST R7 K17 + 0x581C0080, // 007A LDCONST R7 K128 0x7C180200, // 007B CALL R6 1 0x80040C00, // 007C RET 1 R6 }) @@ -3902,13 +3692,13 @@ be_local_closure(class_lvh_obj_get_text_font, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_text_font), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -3926,24 +3716,20 @@ be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(check_label), - /* K1 */ be_nested_str_weak(_lv_label), - /* K2 */ be_nested_str_weak(set_y), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_value_ofs_y), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080114, // 0000 GETMET R2 R0 K20 0x7C080200, // 0001 CALL R2 1 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x8C080502, // 0003 GETMET R2 R2 K2 + 0x88080111, // 0002 GETMBR R2 R0 K17 + 0x8C080581, // 0003 GETMET R2 R2 K129 0x60100009, // 0004 GETGBL R4 G9 0x5C140200, // 0005 MOVE R5 R1 0x7C100200, // 0006 CALL R4 1 @@ -3962,19 +3748,13 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_style_radius), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_radius2), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -3983,7 +3763,7 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x8C080582, // 0005 GETMET R2 R2 K130 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -4006,33 +3786,27 @@ be_local_closure(class_lvh_obj_set_hidden, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(add_flag), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(OBJ_FLAG_HIDDEN), - /* K4 */ be_nested_str_weak(clear_flag), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_hidden), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x78060005, // 0000 JMPF R1 #0007 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0xB8120400, // 0003 GETNGBL R4 K2 - 0x88100903, // 0004 GETMBR R4 R4 K3 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C080538, // 0002 GETMET R2 R2 K56 + 0xB8120600, // 0003 GETNGBL R4 K3 + 0x88100950, // 0004 GETMBR R4 R4 K80 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x8C080504, // 0008 GETMET R2 R2 K4 - 0xB8120400, // 0009 GETNGBL R4 K2 - 0x88100903, // 000A GETMBR R4 R4 K3 + 0x88080101, // 0007 GETMBR R2 R0 K1 + 0x8C080539, // 0008 GETMET R2 R2 K57 + 0xB8120600, // 0009 GETNGBL R4 K3 + 0x88100950, // 000A GETMBR R4 R4 K80 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -4048,39 +3822,32 @@ be_local_closure(class_lvh_obj_register_event_cb, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_page), - /* K1 */ be_nested_str_weak(_oh), - /* K2 */ be_nested_str_weak(_event_map), - /* K3 */ be_nested_str_weak(keys), - /* K4 */ be_nested_str_weak(register_event), - /* K5 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(register_event_cb), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x88040132, // 0000 GETMBR R1 R0 K50 + 0x8804033A, // 0001 GETMBR R1 R1 K58 0x60080010, // 0002 GETGBL R2 G16 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x8C0C0703, // 0004 GETMET R3 R3 K3 + 0x880C0140, // 0003 GETMBR R3 R0 K64 + 0x8C0C0783, // 0004 GETMET R3 R3 K131 0x7C0C0200, // 0005 CALL R3 1 0x7C080200, // 0006 CALL R2 1 0xA8020006, // 0007 EXBLK 0 #000F 0x5C0C0400, // 0008 MOVE R3 R2 0x7C0C0000, // 0009 CALL R3 0 - 0x8C100304, // 000A GETMET R4 R1 K4 + 0x8C100384, // 000A GETMET R4 R1 K132 0x5C180000, // 000B MOVE R6 R0 0x5C1C0600, // 000C MOVE R7 R3 0x7C100600, // 000D CALL R4 3 0x7001FFF8, // 000E JMP #0008 - 0x58080005, // 000F LDCONST R2 K5 + 0x58080085, // 000F LDCONST R2 K133 0xAC080200, // 0010 CATCH R2 1 0 0xB0080000, // 0011 RAISE 2 R0 R0 0x80000000, // 0012 RET 0 @@ -4097,31 +3864,26 @@ be_local_closure(class_lvh_obj_set_text_font, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_font), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_style_text_font), - /* K3 */ be_const_int(0), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(set_text_font), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080186, // 0000 GETMET R2 R0 K134 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0004, // 0005 JMPF R3 #000B 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x8C0C0787, // 0007 GETMET R3 R3 K135 0x5C140400, // 0008 MOVE R5 R2 - 0x58180003, // 0009 LDCONST R6 K3 + 0x5818006F, // 0009 LDCONST R6 K111 0x7C0C0600, // 000A CALL R3 3 0x80000000, // 000B RET 0 }) @@ -4137,19 +3899,13 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_part2_selector), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(get_style_pad_bottom), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_pad_bottom), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ @@ -4158,7 +3914,7 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x8C040388, // 0005 GETMET R1 R1 K136 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -4179,13 +3935,13 @@ be_local_closure(class_lvh_obj_get_pad_all, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_pad_all), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -4203,21 +3959,18 @@ be_local_closure(class_lvh_obj_get_val, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_value), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(get_val), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040389, // 0001 GETMET R1 R1 K137 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -4233,19 +3986,17 @@ be_local_closure(class_lvh_obj_post_init, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(register_event_cb), - }), + &be_ktab_class_lvh_obj, /* shared constants */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C04018A, // 0000 GETMET R1 R0 K138 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -4533,6 +4284,36 @@ be_local_class(lvh_label, })), be_str_weak(lvh_label) ); +// compact class 'lvh_arc' ktab size: 26, total: 49 (saved 184 bytes) +static const bvalue be_ktab_class_lvh_arc[26] = { + /* K0 */ be_nested_str_weak(_lv_obj), + /* K1 */ be_nested_str_weak(get_mode), + /* K2 */ be_nested_str_weak(_label_angle), + /* K3 */ be_nested_str_weak(_lv_label), + /* K4 */ be_nested_str_weak(rotate_obj_to_angle), + /* K5 */ be_nested_str_weak(set_range), + /* K6 */ be_nested_str_weak(get_max), + /* K7 */ be_nested_str_weak(refresh_label_to_angle), + /* K8 */ be_nested_str_weak(get_arc_line_width), + /* K9 */ be_nested_str_weak(lv), + /* K10 */ be_nested_str_weak(PART_INDICATOR), + /* K11 */ be_nested_str_weak(STATE_DEFAULT), + /* K12 */ be_const_int(0), + /* K13 */ be_nested_str_weak(ARC_MODE_NORMAL), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(ARC_MODE_REVERSE), + /* K16 */ be_const_int(2), + /* K17 */ be_nested_str_weak(ARC_MODE_SYMMETRICAL), + /* K18 */ be_nested_str_weak(set_mode), + /* K19 */ be_nested_str_weak(set_style_arc_width), + /* K20 */ be_nested_str_weak(get_min_value), + /* K21 */ be_nested_str_weak(get_max_value), + /* K22 */ be_nested_str_weak(set_val), + /* K23 */ be_nested_str_weak(post_config), + /* K24 */ be_nested_str_weak(get_min), + /* K25 */ be_nested_str_weak(set_text), +}; + extern const bclass be_class_lvh_arc; @@ -4543,16 +4324,13 @@ be_local_closure(class_lvh_arc_get_type, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_mode), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(get_type), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -4573,33 +4351,28 @@ be_local_closure(class_lvh_arc_refresh_label_to_angle, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_label_angle), - /* K1 */ be_nested_str_weak(_lv_label), - /* K2 */ be_nested_str_weak(_lv_obj), - /* K3 */ be_nested_str_weak(rotate_obj_to_angle), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(refresh_label_to_angle), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040102, // 0000 GETMBR R1 R0 K2 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060008, // 0003 JMPF R1 #000D - 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x88040103, // 0004 GETMBR R1 R0 K3 0x4C080000, // 0005 LDNIL R2 0x20040202, // 0006 NE R1 R1 R2 0x78060004, // 0007 JMPF R1 #000D - 0x88040102, // 0008 GETMBR R1 R0 K2 - 0x8C040303, // 0009 GETMET R1 R1 K3 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x88100100, // 000B GETMBR R4 R0 K0 + 0x88040100, // 0008 GETMBR R1 R0 K0 + 0x8C040304, // 0009 GETMET R1 R1 K4 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x88100102, // 000B GETMBR R4 R0 K2 0x7C040600, // 000C CALL R1 3 0x80000000, // 000D RET 0 }) @@ -4615,30 +4388,25 @@ be_local_closure(class_lvh_arc_set_min, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_max), - /* K3 */ be_nested_str_weak(refresh_label_to_angle), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_min), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C080505, // 0001 GETMET R2 R2 K5 0x60100009, // 0002 GETGBL R4 G9 0x5C140200, // 0003 MOVE R5 R1 0x7C100200, // 0004 CALL R4 1 - 0x8C140102, // 0005 GETMET R5 R0 K2 + 0x8C140106, // 0005 GETMET R5 R0 K6 0x7C140200, // 0006 CALL R5 1 0x7C080600, // 0007 CALL R2 3 - 0x8C080103, // 0008 GETMET R2 R0 K3 + 0x8C080107, // 0008 GETMET R2 R0 K7 0x7C080200, // 0009 CALL R2 1 0x80000000, // 000A RET 0 }) @@ -4654,28 +4422,22 @@ be_local_closure(class_lvh_arc_get_line_width1, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_arc_line_width), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(PART_INDICATOR), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(get_line_width1), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x880C0703, // 0003 GETMBR R3 R3 K3 - 0xB8120400, // 0004 GETNGBL R4 K2 - 0x88100904, // 0005 GETMBR R4 R4 K4 + 0x8C040308, // 0001 GETMET R1 R1 K8 + 0xB80E1200, // 0002 GETNGBL R3 K9 + 0x880C070A, // 0003 GETMBR R3 R3 K10 + 0xB8121200, // 0004 GETNGBL R4 K9 + 0x8810090B, // 0005 GETMBR R4 R4 K11 0x300C0604, // 0006 OR R3 R3 R4 0x7C040400, // 0007 CALL R1 2 0x80040200, // 0008 RET 1 R1 @@ -4692,46 +4454,36 @@ be_local_closure(class_lvh_arc_set_type, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(lv), - /* K2 */ be_nested_str_weak(ARC_MODE_NORMAL), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(ARC_MODE_REVERSE), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(ARC_MODE_SYMMETRICAL), - /* K7 */ be_nested_str_weak(_lv_obj), - /* K8 */ be_nested_str_weak(set_mode), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_type), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ 0x4C080000, // 0000 LDNIL R2 - 0x1C0C0300, // 0001 EQ R3 R1 K0 + 0x1C0C030C, // 0001 EQ R3 R1 K12 0x780E0002, // 0002 JMPF R3 #0006 - 0xB80E0200, // 0003 GETNGBL R3 K1 - 0x88080702, // 0004 GETMBR R2 R3 K2 + 0xB80E1200, // 0003 GETNGBL R3 K9 + 0x8808070D, // 0004 GETMBR R2 R3 K13 0x70020008, // 0005 JMP #000F - 0x1C0C0303, // 0006 EQ R3 R1 K3 + 0x1C0C030E, // 0006 EQ R3 R1 K14 0x780E0002, // 0007 JMPF R3 #000B - 0xB80E0200, // 0008 GETNGBL R3 K1 - 0x88080704, // 0009 GETMBR R2 R3 K4 + 0xB80E1200, // 0008 GETNGBL R3 K9 + 0x8808070F, // 0009 GETMBR R2 R3 K15 0x70020003, // 000A JMP #000F - 0x1C0C0305, // 000B EQ R3 R1 K5 + 0x1C0C0310, // 000B EQ R3 R1 K16 0x780E0001, // 000C JMPF R3 #000F - 0xB80E0200, // 000D GETNGBL R3 K1 - 0x88080706, // 000E GETMBR R2 R3 K6 + 0xB80E1200, // 000D GETNGBL R3 K9 + 0x88080711, // 000E GETMBR R2 R3 K17 0x4C0C0000, // 000F LDNIL R3 0x200C0403, // 0010 NE R3 R2 R3 0x780E0003, // 0011 JMPF R3 #0016 - 0x880C0107, // 0012 GETMBR R3 R0 K7 - 0x8C0C0708, // 0013 GETMET R3 R3 K8 + 0x880C0100, // 0012 GETMBR R3 R0 K0 + 0x8C0C0712, // 0013 GETMET R3 R3 K18 0x5C140400, // 0014 MOVE R5 R2 0x7C0C0400, // 0015 CALL R3 2 0x80000000, // 0016 RET 0 @@ -4748,31 +4500,25 @@ be_local_closure(class_lvh_arc_set_line_width1, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_style_arc_width), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(PART_INDICATOR), - /* K4 */ be_nested_str_weak(STATE_DEFAULT), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_line_width1), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C080513, // 0001 GETMET R2 R2 K19 0x60100009, // 0002 GETGBL R4 G9 0x5C140200, // 0003 MOVE R5 R1 0x7C100200, // 0004 CALL R4 1 - 0xB8160400, // 0005 GETNGBL R5 K2 - 0x88140B03, // 0006 GETMBR R5 R5 K3 - 0xB81A0400, // 0007 GETNGBL R6 K2 - 0x88180D04, // 0008 GETMBR R6 R6 K4 + 0xB8161200, // 0005 GETNGBL R5 K9 + 0x88140B0A, // 0006 GETMBR R5 R5 K10 + 0xB81A1200, // 0007 GETNGBL R6 K9 + 0x88180D0B, // 0008 GETMBR R6 R6 K11 0x30140A06, // 0009 OR R5 R5 R6 0x7C080600, // 000A CALL R2 3 0x80000000, // 000B RET 0 @@ -4789,21 +4535,18 @@ be_local_closure(class_lvh_arc_get_min, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_min_value), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(get_min), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040314, // 0001 GETMET R1 R1 K20 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -4819,21 +4562,18 @@ be_local_closure(class_lvh_arc_set_line_width, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_style_arc_width), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_line_width), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x8C0C0713, // 0001 GETMET R3 R3 K19 0x60140009, // 0002 GETGBL R5 G9 0x5C180200, // 0003 MOVE R6 R1 0x7C140200, // 0004 CALL R5 1 @@ -4853,21 +4593,18 @@ be_local_closure(class_lvh_arc_get_max, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_max_value), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(get_max), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040315, // 0001 GETMET R1 R1 K21 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -4883,24 +4620,21 @@ be_local_closure(class_lvh_arc_set_label_to_angle, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_label_angle), - /* K1 */ be_nested_str_weak(refresh_label_to_angle), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_label_to_angle), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x90020402, // 0003 SETMBR R0 K2 R2 + 0x8C080107, // 0004 GETMET R2 R0 K7 0x7C080200, // 0005 CALL R2 1 0x80000000, // 0006 RET 0 }) @@ -4916,26 +4650,23 @@ be_local_closure(class_lvh_arc_set_val, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_val), - /* K1 */ be_nested_str_weak(refresh_label_to_angle), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080516, // 0003 GETMET R2 R2 K22 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x8C080101, // 0006 GETMET R2 R0 K1 + 0x8C080107, // 0006 GETMET R2 R0 K7 0x7C080200, // 0007 CALL R2 1 0x80000000, // 0008 RET 0 }) @@ -4951,25 +4682,22 @@ be_local_closure(class_lvh_arc_post_config, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(post_config), - /* K1 */ be_nested_str_weak(refresh_label_to_angle), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(post_config), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x8C040317, // 0003 GETMET R1 R1 K23 0x7C040200, // 0004 CALL R1 1 - 0x8C040101, // 0005 GETMET R1 R0 K1 + 0x8C040107, // 0005 GETMET R1 R0 K7 0x7C040200, // 0006 CALL R1 1 0x80000000, // 0007 RET 0 }) @@ -4985,21 +4713,18 @@ be_local_closure(class_lvh_arc_get_line_width, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_arc_line_width), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(get_line_width), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C080508, // 0001 GETMET R2 R2 K8 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -5016,30 +4741,25 @@ be_local_closure(class_lvh_arc_set_max, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_min), - /* K3 */ be_nested_str_weak(refresh_label_to_angle), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_max), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x8C080505, // 0001 GETMET R2 R2 K5 + 0x8C100118, // 0002 GETMET R4 R0 K24 0x7C100200, // 0003 CALL R4 1 0x60140009, // 0004 GETGBL R5 G9 0x5C180200, // 0005 MOVE R6 R1 0x7C140200, // 0006 CALL R5 1 0x7C080600, // 0007 CALL R2 3 - 0x8C080103, // 0008 GETMET R2 R0 K3 + 0x8C080107, // 0008 GETMET R2 R0 K7 0x7C080200, // 0009 CALL R2 1 0x80000000, // 000A RET 0 }) @@ -5055,26 +4775,23 @@ be_local_closure(class_lvh_arc_set_text, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(set_text), - /* K1 */ be_nested_str_weak(refresh_label_to_angle), - }), + &be_ktab_class_lvh_arc, /* shared constants */ be_str_weak(set_text), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x8C080519, // 0003 GETMET R2 R2 K25 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x8C080101, // 0006 GETMET R2 R0 K1 + 0x8C080107, // 0006 GETMET R2 R0 K7 0x7C080200, // 0007 CALL R2 1 0x80000000, // 0008 RET 0 }) @@ -5365,6 +5082,28 @@ be_local_class(lvh_spinner, })), be_str_weak(lvh_spinner) ); +// compact class 'lvh_img' ktab size: 18, total: 24 (saved 48 bytes) +static const bvalue be_ktab_class_lvh_img[18] = { + /* K0 */ be_nested_str_weak(tasmota_logo), + /* K1 */ be_nested_str_weak(_lv_obj), + /* K2 */ be_nested_str_weak(set_tasmota_logo), + /* K3 */ be_nested_str_weak(set_src), + /* K4 */ be_nested_str_weak(set_inner_align), + /* K5 */ be_nested_str_weak(lv), + /* K6 */ be_nested_str_weak(IMAGE_ALIGN_STRETCH), + /* K7 */ be_nested_str_weak(set_angle), + /* K8 */ be_nested_str_weak(get_angle), + /* K9 */ be_nested_str_weak(_raw), + /* K10 */ be_nested_str_weak(fromb64), + /* K11 */ be_nested_str_weak(lv_image_dsc), + /* K12 */ be_nested_str_weak(header_cf), + /* K13 */ be_nested_str_weak(COLOR_FORMAT_RAW), + /* K14 */ be_nested_str_weak(data_size), + /* K15 */ be_nested_str_weak(data), + /* K16 */ be_nested_str_weak(_buffer), + /* K17 */ be_nested_str_weak(_imd_dsc), +}; + extern const bclass be_class_lvh_img; @@ -5375,18 +5114,13 @@ be_local_closure(class_lvh_img_set_src, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota_logo), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_tasmota_logo), - /* K3 */ be_nested_str_weak(set_src), - }), + &be_ktab_class_lvh_img, /* shared constants */ be_str_weak(set_src), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ @@ -5414,13 +5148,13 @@ be_local_closure(class_lvh_img_get_auto_size, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_img, /* shared constants */ be_str_weak(get_auto_size), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -5438,26 +5172,21 @@ be_local_closure(class_lvh_img_set_auto_size, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_inner_align), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(IMAGE_ALIGN_STRETCH), - }), + &be_ktab_class_lvh_img, /* shared constants */ be_str_weak(set_auto_size), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x78060004, // 0000 JMPF R1 #0006 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0xB8120400, // 0003 GETNGBL R4 K2 - 0x88100903, // 0004 GETMBR R4 R4 K3 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C080504, // 0002 GETMET R2 R2 K4 + 0xB8120A00, // 0003 GETNGBL R4 K5 + 0x88100906, // 0004 GETMBR R4 R4 K6 0x7C080400, // 0005 CALL R2 2 0x80000000, // 0006 RET 0 }) @@ -5473,16 +5202,13 @@ be_local_closure(class_lvh_img_set_angle, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_angle), - }), + &be_ktab_class_lvh_img, /* shared constants */ be_str_weak(set_angle), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -5490,8 +5216,8 @@ be_local_closure(class_lvh_img_set_angle, /* name */ 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 0x5C040400, // 0003 MOVE R1 R2 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x8C080507, // 0005 GETMET R2 R2 K7 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x80000000, // 0008 RET 0 @@ -5508,21 +5234,18 @@ be_local_closure(class_lvh_img_get_angle, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_angle), - }), + &be_ktab_class_lvh_img, /* shared constants */ be_str_weak(get_angle), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040308, // 0001 GETMET R1 R1 K8 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -5538,52 +5261,39 @@ be_local_closure(class_lvh_img_set_raw, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(_raw), - /* K1 */ be_nested_str_weak(fromb64), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(lv_image_dsc), - /* K4 */ be_nested_str_weak(header_cf), - /* K5 */ be_nested_str_weak(COLOR_FORMAT_RAW), - /* K6 */ be_nested_str_weak(data_size), - /* K7 */ be_nested_str_weak(data), - /* K8 */ be_nested_str_weak(_buffer), - /* K9 */ be_nested_str_weak(_imd_dsc), - /* K10 */ be_nested_str_weak(_lv_obj), - /* K11 */ be_nested_str_weak(set_src), - }), + &be_ktab_class_lvh_img, /* shared constants */ be_str_weak(set_raw), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x60080015, // 0000 GETGBL R2 G21 0x7C080000, // 0001 CALL R2 0 - 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x8C08050A, // 0002 GETMET R2 R2 K10 0x5C100200, // 0003 MOVE R4 R1 0x7C080400, // 0004 CALL R2 2 - 0x90020002, // 0005 SETMBR R0 K0 R2 - 0xB80A0400, // 0006 GETNGBL R2 K2 - 0x8C080503, // 0007 GETMET R2 R2 K3 + 0x90021202, // 0005 SETMBR R0 K9 R2 + 0xB80A0A00, // 0006 GETNGBL R2 K5 + 0x8C08050B, // 0007 GETMET R2 R2 K11 0x7C080200, // 0008 CALL R2 1 - 0xB80E0400, // 0009 GETNGBL R3 K2 - 0x880C0705, // 000A GETMBR R3 R3 K5 - 0x900A0803, // 000B SETMBR R2 K4 R3 + 0xB80E0A00, // 0009 GETNGBL R3 K5 + 0x880C070D, // 000A GETMBR R3 R3 K13 + 0x900A1803, // 000B SETMBR R2 K12 R3 0x600C000C, // 000C GETGBL R3 G12 - 0x88100100, // 000D GETMBR R4 R0 K0 + 0x88100109, // 000D GETMBR R4 R0 K9 0x7C0C0200, // 000E CALL R3 1 - 0x900A0C03, // 000F SETMBR R2 K6 R3 - 0x880C0100, // 0010 GETMBR R3 R0 K0 - 0x8C0C0708, // 0011 GETMET R3 R3 K8 + 0x900A1C03, // 000F SETMBR R2 K14 R3 + 0x880C0109, // 0010 GETMBR R3 R0 K9 + 0x8C0C0710, // 0011 GETMET R3 R3 K16 0x7C0C0200, // 0012 CALL R3 1 - 0x900A0E03, // 0013 SETMBR R2 K7 R3 - 0x90021202, // 0014 SETMBR R0 K9 R2 - 0x880C010A, // 0015 GETMBR R3 R0 K10 - 0x8C0C070B, // 0016 GETMET R3 R3 K11 + 0x900A1E03, // 0013 SETMBR R2 K15 R3 + 0x90022202, // 0014 SETMBR R0 K17 R2 + 0x880C0101, // 0015 GETMBR R3 R0 K1 + 0x8C0C0703, // 0016 GETMET R3 R3 K3 0x5C140400, // 0017 MOVE R5 R2 0x7C0C0400, // 0018 CALL R3 2 0x80000000, // 0019 RET 0 @@ -5614,6 +5324,19 @@ be_local_class(lvh_img, })), be_str_weak(lvh_img) ); +// compact class 'lvh_qrcode' ktab size: 9, total: 29 (saved 160 bytes) +static const bvalue be_ktab_class_lvh_qrcode[9] = { + /* K0 */ be_nested_str_weak(qr_text), + /* K1 */ be_nested_str_weak(_update), + /* K2 */ be_nested_str_weak(_lv_obj), + /* K3 */ be_nested_str_weak(set_light_color), + /* K4 */ be_nested_str_weak(parse_color), + /* K5 */ be_nested_str_weak(set_size), + /* K6 */ be_nested_str_weak(set_dark_color), + /* K7 */ be_nested_str_weak(post_config), + /* K8 */ be_nested_str_weak(update), +}; + extern const bclass be_class_lvh_qrcode; @@ -5624,13 +5347,13 @@ be_local_closure(class_lvh_qrcode_get_qr_dark_color, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(get_qr_dark_color), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -5648,16 +5371,13 @@ be_local_closure(class_lvh_qrcode_set_qr_text, /* name */ be_nested_proto( 4, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(qr_text), - /* K1 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(set_qr_text), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -5681,28 +5401,23 @@ be_local_closure(class_lvh_qrcode_set_light_color, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_light_color), - /* K2 */ be_nested_str_weak(parse_color), - /* K3 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(set_light_color), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C080503, // 0001 GETMET R2 R2 K3 + 0x8C100104, // 0002 GETMET R4 R0 K4 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 0x7C080400, // 0005 CALL R2 2 - 0x8C080103, // 0006 GETMET R2 R0 K3 + 0x8C080101, // 0006 GETMET R2 R0 K1 0x7C080200, // 0007 CALL R2 1 0x80000000, // 0008 RET 0 }) @@ -5718,13 +5433,13 @@ be_local_closure(class_lvh_qrcode_get_dark_color, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(get_dark_color), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -5742,28 +5457,23 @@ be_local_closure(class_lvh_qrcode_set_qr_light_color, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_light_color), - /* K2 */ be_nested_str_weak(parse_color), - /* K3 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(set_qr_light_color), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C080503, // 0001 GETMET R2 R2 K3 + 0x8C100104, // 0002 GETMET R4 R0 K4 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 0x7C080400, // 0005 CALL R2 2 - 0x8C080103, // 0006 GETMET R2 R0 K3 + 0x8C080101, // 0006 GETMET R2 R0 K1 0x7C080200, // 0007 CALL R2 1 0x80000000, // 0008 RET 0 }) @@ -5779,13 +5489,13 @@ be_local_closure(class_lvh_qrcode_get_qr_light_color, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(get_qr_light_color), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -5803,25 +5513,21 @@ be_local_closure(class_lvh_qrcode_set_qr_size, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_size), - /* K2 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(set_qr_size), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C080505, // 0001 GETMET R2 R2 K5 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x8C080101, // 0004 GETMET R2 R0 K1 0x7C080200, // 0005 CALL R2 1 0x80000000, // 0006 RET 0 }) @@ -5837,13 +5543,13 @@ be_local_closure(class_lvh_qrcode_get_light_color, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(get_light_color), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -5861,25 +5567,21 @@ be_local_closure(class_lvh_qrcode_set_size, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_size), - /* K2 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(set_size), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C080505, // 0001 GETMET R2 R2 K5 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x8C080101, // 0004 GETMET R2 R0 K1 0x7C080200, // 0005 CALL R2 1 0x80000000, // 0006 RET 0 }) @@ -5895,28 +5597,23 @@ be_local_closure(class_lvh_qrcode_set_qr_dark_color, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_dark_color), - /* K2 */ be_nested_str_weak(parse_color), - /* K3 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(set_qr_dark_color), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C080506, // 0001 GETMET R2 R2 K6 + 0x8C100104, // 0002 GETMET R4 R0 K4 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 0x7C080400, // 0005 CALL R2 2 - 0x8C080103, // 0006 GETMET R2 R0 K3 + 0x8C080101, // 0006 GETMET R2 R0 K1 0x7C080200, // 0007 CALL R2 1 0x80000000, // 0008 RET 0 }) @@ -5932,13 +5629,13 @@ be_local_closure(class_lvh_qrcode_get_qr_text, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(get_qr_text), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -5956,28 +5653,23 @@ be_local_closure(class_lvh_qrcode_set_dark_color, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_dark_color), - /* K2 */ be_nested_str_weak(parse_color), - /* K3 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(set_dark_color), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x88080102, // 0000 GETMBR R2 R0 K2 + 0x8C080506, // 0001 GETMET R2 R2 K6 + 0x8C100104, // 0002 GETMET R4 R0 K4 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 0x7C080400, // 0005 CALL R2 2 - 0x8C080103, // 0006 GETMET R2 R0 K3 + 0x8C080101, // 0006 GETMET R2 R0 K1 0x7C080200, // 0007 CALL R2 1 0x80000000, // 0008 RET 0 }) @@ -5993,13 +5685,13 @@ be_local_closure(class_lvh_qrcode_get_size, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(get_size), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -6017,23 +5709,20 @@ be_local_closure(class_lvh_qrcode_post_config, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(post_config), - /* K1 */ be_nested_str_weak(_update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(post_config), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x8C040307, // 0003 GETMET R1 R1 K7 0x7C040200, // 0004 CALL R1 1 0x8C040101, // 0005 GETMET R1 R0 K1 0x7C040200, // 0006 CALL R1 1 @@ -6051,17 +5740,13 @@ be_local_closure(class_lvh_qrcode__update, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(qr_text), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(update), - }), + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(_update), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ @@ -6069,8 +5754,8 @@ be_local_closure(class_lvh_qrcode__update, /* name */ 0x4C080000, // 0001 LDNIL R2 0x20080202, // 0002 NE R2 R1 R2 0x780A0006, // 0003 JMPF R2 #000B - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x88080102, // 0004 GETMBR R2 R0 K2 + 0x8C080508, // 0005 GETMET R2 R2 K8 0x5C100200, // 0006 MOVE R4 R1 0x6014000C, // 0007 GETGBL R5 G12 0x5C180200, // 0008 MOVE R6 R1 @@ -6090,13 +5775,13 @@ be_local_closure(class_lvh_qrcode_get_qr_size, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_qrcode, /* shared constants */ be_str_weak(get_qr_size), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -6137,6 +5822,19 @@ be_local_class(lvh_qrcode, })), be_str_weak(lvh_qrcode) ); +// compact class 'lvh_slider' ktab size: 9, total: 14 (saved 40 bytes) +static const bvalue be_ktab_class_lvh_slider[9] = { + /* K0 */ be_nested_str_weak(_lv_obj), + /* K1 */ be_nested_str_weak(set_range), + /* K2 */ be_nested_str_weak(get_min), + /* K3 */ be_nested_str_weak(get_min_value), + /* K4 */ be_nested_str_weak(_val), + /* K5 */ be_nested_str_weak(set_value), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(get_max_value), + /* K8 */ be_nested_str_weak(get_max), +}; + extern const bclass be_class_lvh_slider; @@ -6147,17 +5845,13 @@ be_local_closure(class_lvh_slider_set_max, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_min), - }), + &be_ktab_class_lvh_slider, /* shared constants */ be_str_weak(set_max), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -6183,21 +5877,18 @@ be_local_closure(class_lvh_slider_get_min, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_min_value), - }), + &be_ktab_class_lvh_slider, /* shared constants */ be_str_weak(get_min), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040303, // 0001 GETMET R1 R1 K3 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -6213,26 +5904,21 @@ be_local_closure(class_lvh_slider_set_val, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_val), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_value), - /* K3 */ be_const_int(0), - }), + &be_ktab_class_lvh_slider, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x90020801, // 0000 SETMBR R0 K4 R1 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080505, // 0002 GETMET R2 R2 K5 0x5C100200, // 0003 MOVE R4 R1 - 0x58140003, // 0004 LDCONST R5 K3 + 0x58140006, // 0004 LDCONST R5 K6 0x7C080600, // 0005 CALL R2 3 0x80000000, // 0006 RET 0 }) @@ -6248,21 +5934,18 @@ be_local_closure(class_lvh_slider_get_max, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_max_value), - }), + &be_ktab_class_lvh_slider, /* shared constants */ be_str_weak(get_max), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040307, // 0001 GETMET R1 R1 K7 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -6278,17 +5961,13 @@ be_local_closure(class_lvh_slider_set_min, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_max), - }), + &be_ktab_class_lvh_slider, /* shared constants */ be_str_weak(set_min), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ @@ -6297,7 +5976,7 @@ be_local_closure(class_lvh_slider_set_min, /* name */ 0x60100009, // 0002 GETGBL R4 G9 0x5C140200, // 0003 MOVE R5 R1 0x7C100200, // 0004 CALL R4 1 - 0x8C140102, // 0005 GETMET R5 R0 K2 + 0x8C140108, // 0005 GETMET R5 R0 K8 0x7C140200, // 0006 CALL R5 1 0x7C080600, // 0007 CALL R2 3 0x80000000, // 0008 RET 0 @@ -6325,6 +6004,26 @@ be_local_class(lvh_slider, })), be_str_weak(lvh_slider) ); +// compact class 'lvh_roller' ktab size: 16, total: 20 (saved 32 bytes) +static const bvalue be_ktab_class_lvh_roller[16] = { + /* K0 */ be_nested_str_weak(_lv_obj), + /* K1 */ be_nested_str_weak(set_options), + /* K2 */ be_nested_str_weak(lv), + /* K3 */ be_nested_str_weak(ROLLER_MODE_NORMAL), + /* K4 */ be_nested_str_weak(resize), + /* K5 */ be_nested_str_weak(get_selected_str), + /* K6 */ be_nested_str_weak(_buffer), + /* K7 */ be_nested_str_weak(remove_trailing_zeroes), + /* K8 */ be_nested_str_weak(asstring), + /* K9 */ be_nested_str_weak(get_options), + /* K10 */ be_nested_str_weak(_val), + /* K11 */ be_nested_str_weak(set_selected), + /* K12 */ be_const_int(0), + /* K13 */ be_nested_str_weak(attribute_error), + /* K14 */ be_nested_str_weak(set_text_X20unsupported_X20on_X20roller), + /* K15 */ be_nested_str_weak(get_selected), +}; + extern const bclass be_class_lvh_roller; @@ -6335,18 +6034,13 @@ be_local_closure(class_lvh_roller_set_options, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_options), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(ROLLER_MODE_NORMAL), - }), + &be_ktab_class_lvh_roller, /* shared constants */ be_str_weak(set_options), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -6370,39 +6064,32 @@ be_local_closure(class_lvh_roller_get_text, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(get_selected_str), - /* K3 */ be_nested_str_weak(_buffer), - /* K4 */ be_nested_str_weak(remove_trailing_zeroes), - /* K5 */ be_nested_str_weak(asstring), - }), + &be_ktab_class_lvh_roller, /* shared constants */ be_str_weak(get_text), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x60040015, // 0000 GETGBL R1 G21 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 + 0x8C040304, // 0002 GETMET R1 R1 K4 0x540E00FF, // 0003 LDINT R3 256 0x7C040400, // 0004 CALL R1 2 - 0x88080101, // 0005 GETMBR R2 R0 K1 - 0x8C080502, // 0006 GETMET R2 R2 K2 - 0x8C100303, // 0007 GETMET R4 R1 K3 + 0x88080100, // 0005 GETMBR R2 R0 K0 + 0x8C080505, // 0006 GETMET R2 R2 K5 + 0x8C100306, // 0007 GETMET R4 R1 K6 0x7C100200, // 0008 CALL R4 1 0x541600FF, // 0009 LDINT R5 256 0x7C080600, // 000A CALL R2 3 - 0x8C080104, // 000B GETMET R2 R0 K4 + 0x8C080107, // 000B GETMET R2 R0 K7 0x5C100200, // 000C MOVE R4 R1 0x7C080400, // 000D CALL R2 2 0x5C040400, // 000E MOVE R1 R2 - 0x8C080305, // 000F GETMET R2 R1 K5 + 0x8C080308, // 000F GETMET R2 R1 K8 0x7C080200, // 0010 CALL R2 1 0x80040400, // 0011 RET 1 R2 }) @@ -6418,21 +6105,18 @@ be_local_closure(class_lvh_roller_get_options, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_options), - }), + &be_ktab_class_lvh_roller, /* shared constants */ be_str_weak(get_options), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040309, // 0001 GETMET R1 R1 K9 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -6448,26 +6132,21 @@ be_local_closure(class_lvh_roller_set_val, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_val), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_selected), - /* K3 */ be_const_int(0), - }), + &be_ktab_class_lvh_roller, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x90021401, // 0000 SETMBR R0 K10 R1 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C08050B, // 0002 GETMET R2 R2 K11 0x5C100200, // 0003 MOVE R4 R1 - 0x58140003, // 0004 LDCONST R5 K3 + 0x5814000C, // 0004 LDCONST R5 K12 0x7C080600, // 0005 CALL R2 3 0x80000000, // 0006 RET 0 }) @@ -6483,20 +6162,17 @@ be_local_closure(class_lvh_roller_set_text, /* name */ be_nested_proto( 2, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(attribute_error), - /* K1 */ be_nested_str_weak(set_text_X20unsupported_X20on_X20roller), - }), + &be_ktab_class_lvh_roller, /* shared constants */ be_str_weak(set_text), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0xB0060101, // 0000 RAISE 1 K0 K1 + 0xB0061B0E, // 0000 RAISE 1 K13 K14 0x80000000, // 0001 RET 0 }) ) @@ -6511,21 +6187,18 @@ be_local_closure(class_lvh_roller_get_val, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_selected), - }), + &be_ktab_class_lvh_roller, /* shared constants */ be_str_weak(get_val), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C04030F, // 0001 GETMET R1 R1 K15 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -6553,6 +6226,16 @@ be_local_class(lvh_roller, })), be_str_weak(lvh_roller) ); +// compact class 'lvh_led' ktab size: 6, total: 8 (saved 16 bytes) +static const bvalue be_ktab_class_lvh_led[6] = { + /* K0 */ be_nested_str_weak(_val), + /* K1 */ be_nested_str_weak(_lv_obj), + /* K2 */ be_nested_str_weak(set_brightness), + /* K3 */ be_nested_str_weak(get_brightness), + /* K4 */ be_nested_str_weak(parse_color), + /* K5 */ be_nested_str_weak(set_color), +}; + extern const bclass be_class_lvh_led; @@ -6563,17 +6246,13 @@ be_local_closure(class_lvh_led_set_val, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_val), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_brightness), - }), + &be_ktab_class_lvh_led, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ @@ -6596,13 +6275,13 @@ be_local_closure(class_lvh_led_get_color, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + &be_ktab_class_lvh_led, /* shared constants */ be_str_weak(get_color), &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ @@ -6620,21 +6299,18 @@ be_local_closure(class_lvh_led_get_val, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_brightness), - }), + &be_ktab_class_lvh_led, /* shared constants */ be_str_weak(get_val), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x8C040303, // 0001 GETMET R1 R1 K3 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -6650,25 +6326,21 @@ be_local_closure(class_lvh_led_set_color, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_color), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_color), - }), + &be_ktab_class_lvh_led, /* shared constants */ be_str_weak(set_color), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080104, // 0000 GETMET R2 R0 K4 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x8C0C0702, // 0004 GETMET R3 R3 K2 + 0x8C0C0705, // 0004 GETMET R3 R3 K5 0x5C140400, // 0005 MOVE R5 R2 0x7C0C0400, // 0006 CALL R3 2 0x80000000, // 0007 RET 0 @@ -6695,6 +6367,36 @@ be_local_class(lvh_led, })), be_str_weak(lvh_led) ); +// compact class 'lvh_dropdown' ktab size: 26, total: 37 (saved 88 bytes) +static const bvalue be_ktab_class_lvh_dropdown[26] = { + /* K0 */ be_nested_str_weak(_lv_obj), + /* K1 */ be_nested_str_weak(get_selected), + /* K2 */ be_nested_str_weak(set_text), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(set_dir), + /* K6 */ be_nested_str_weak(_dir), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(_symbol), + /* K9 */ be_nested_str_weak(lv), + /* K10 */ be_nested_str_weak(SYMBOL_UP), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(SYMBOL_LEFT), + /* K13 */ be_nested_str_weak(SYMBOL_RIGHT), + /* K14 */ be_nested_str_weak(SYMBOL_DOWN), + /* K15 */ be_nested_str_weak(set_symbol), + /* K16 */ be_nested_str_weak(get_dir), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(_val), + /* K19 */ be_nested_str_weak(set_selected), + /* K20 */ be_nested_str_weak(get_text), + /* K21 */ be_nested_str_weak(resize), + /* K22 */ be_nested_str_weak(get_selected_str), + /* K23 */ be_nested_str_weak(_buffer), + /* K24 */ be_nested_str_weak(remove_trailing_zeroes), + /* K25 */ be_nested_str_weak(asstring), +}; + extern const bclass be_class_lvh_dropdown; @@ -6705,16 +6407,13 @@ be_local_closure(class_lvh_dropdown_get_val, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_selected), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(get_val), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -6735,21 +6434,18 @@ be_local_closure(class_lvh_dropdown_set_text, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_text), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(set_text), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 @@ -6766,28 +6462,13 @@ be_local_closure(class_lvh_dropdown_set_direction, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(3), - /* K2 */ be_nested_str_weak(_lv_obj), - /* K3 */ be_nested_str_weak(set_dir), - /* K4 */ be_nested_str_weak(_dir), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(_symbol), - /* K7 */ be_nested_str_weak(lv), - /* K8 */ be_nested_str_weak(SYMBOL_UP), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(SYMBOL_LEFT), - /* K11 */ be_nested_str_weak(SYMBOL_RIGHT), - /* K12 */ be_nested_str_weak(SYMBOL_DOWN), - /* K13 */ be_nested_str_weak(set_symbol), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(set_direction), &be_const_str_solidified, ( &(const binstruction[40]) { /* code */ @@ -6795,40 +6476,40 @@ be_local_closure(class_lvh_dropdown_set_direction, /* name */ 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 0x5C040400, // 0003 MOVE R1 R2 - 0x14080300, // 0004 LT R2 R1 K0 + 0x14080303, // 0004 LT R2 R1 K3 0x740A0001, // 0005 JMPT R2 #0008 - 0x24080301, // 0006 GT R2 R1 K1 + 0x24080304, // 0006 GT R2 R1 K4 0x780A0000, // 0007 JMPF R2 #0009 - 0x58040000, // 0008 LDCONST R1 K0 - 0x88080102, // 0009 GETMBR R2 R0 K2 - 0x8C080503, // 000A GETMET R2 R2 K3 - 0x88100104, // 000B GETMBR R4 R0 K4 + 0x58040003, // 0008 LDCONST R1 K3 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x8C080505, // 000A GETMET R2 R2 K5 + 0x88100106, // 000B GETMBR R4 R0 K6 0x94100801, // 000C GETIDX R4 R4 R1 0x7C080400, // 000D CALL R2 2 - 0x1C080305, // 000E EQ R2 R1 K5 + 0x1C080307, // 000E EQ R2 R1 K7 0x780A0003, // 000F JMPF R2 #0014 - 0xB80A0E00, // 0010 GETNGBL R2 K7 - 0x88080508, // 0011 GETMBR R2 R2 K8 - 0x90020C02, // 0012 SETMBR R0 K6 R2 + 0xB80A1200, // 0010 GETNGBL R2 K9 + 0x8808050A, // 0011 GETMBR R2 R2 K10 + 0x90021002, // 0012 SETMBR R0 K8 R2 0x7002000E, // 0013 JMP #0023 - 0x1C080309, // 0014 EQ R2 R1 K9 + 0x1C08030B, // 0014 EQ R2 R1 K11 0x780A0003, // 0015 JMPF R2 #001A - 0xB80A0E00, // 0016 GETNGBL R2 K7 - 0x8808050A, // 0017 GETMBR R2 R2 K10 - 0x90020C02, // 0018 SETMBR R0 K6 R2 + 0xB80A1200, // 0016 GETNGBL R2 K9 + 0x8808050C, // 0017 GETMBR R2 R2 K12 + 0x90021002, // 0018 SETMBR R0 K8 R2 0x70020008, // 0019 JMP #0023 - 0x1C080301, // 001A EQ R2 R1 K1 + 0x1C080304, // 001A EQ R2 R1 K4 0x780A0003, // 001B JMPF R2 #0020 - 0xB80A0E00, // 001C GETNGBL R2 K7 - 0x8808050B, // 001D GETMBR R2 R2 K11 - 0x90020C02, // 001E SETMBR R0 K6 R2 + 0xB80A1200, // 001C GETNGBL R2 K9 + 0x8808050D, // 001D GETMBR R2 R2 K13 + 0x90021002, // 001E SETMBR R0 K8 R2 0x70020002, // 001F JMP #0023 - 0xB80A0E00, // 0020 GETNGBL R2 K7 - 0x8808050C, // 0021 GETMBR R2 R2 K12 - 0x90020C02, // 0022 SETMBR R0 K6 R2 - 0x88080102, // 0023 GETMBR R2 R0 K2 - 0x8C08050D, // 0024 GETMET R2 R2 K13 - 0x88100106, // 0025 GETMBR R4 R0 K6 + 0xB80A1200, // 0020 GETNGBL R2 K9 + 0x8808050E, // 0021 GETMBR R2 R2 K14 + 0x90021002, // 0022 SETMBR R0 K8 R2 + 0x88080100, // 0023 GETMBR R2 R0 K0 + 0x8C08050F, // 0024 GETMET R2 R2 K15 + 0x88100108, // 0025 GETMBR R4 R0 K8 0x7C080400, // 0026 CALL R2 2 0x80000000, // 0027 RET 0 }) @@ -6844,37 +6525,31 @@ be_local_closure(class_lvh_dropdown_get_direction, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_dir), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(_dir), - /* K4 */ be_const_int(1), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(get_direction), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040310, // 0001 GETMET R1 R1 K16 0x7C040200, // 0002 CALL R1 1 - 0x58080002, // 0003 LDCONST R2 K2 + 0x58080011, // 0003 LDCONST R2 K17 0x600C000C, // 0004 GETGBL R3 G12 - 0x88100103, // 0005 GETMBR R4 R0 K3 + 0x88100106, // 0005 GETMBR R4 R0 K6 0x7C0C0200, // 0006 CALL R3 1 0x140C0403, // 0007 LT R3 R2 R3 0x780E0006, // 0008 JMPF R3 #0010 - 0x880C0103, // 0009 GETMBR R3 R0 K3 + 0x880C0106, // 0009 GETMBR R3 R0 K6 0x940C0602, // 000A GETIDX R3 R3 R2 0x1C0C0203, // 000B EQ R3 R1 R3 0x780E0000, // 000C JMPF R3 #000E 0x80040400, // 000D RET 1 R2 - 0x00080504, // 000E ADD R2 R2 K4 + 0x00080507, // 000E ADD R2 R2 K7 0x7001FFF3, // 000F JMP #0004 0x540DFFFE, // 0010 LDINT R3 -1 0x80040600, // 0011 RET 1 R3 @@ -6891,22 +6566,19 @@ be_local_closure(class_lvh_dropdown_set_show_selected, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_text), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(set_show_selected), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x78060003, // 0000 JMPF R1 #0005 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 0x4C100000, // 0003 LDNIL R4 0x7C080400, // 0004 CALL R2 2 0x80000000, // 0005 RET 0 @@ -6923,23 +6595,19 @@ be_local_closure(class_lvh_dropdown_set_val, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_val), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_selected), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x90022401, // 0000 SETMBR R0 K18 R1 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C080513, // 0002 GETMET R2 R2 K19 0x5C100200, // 0003 MOVE R4 R1 0x7C080400, // 0004 CALL R2 2 0x80000000, // 0005 RET 0 @@ -6956,46 +6624,38 @@ be_local_closure(class_lvh_dropdown_get_text, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_text), - /* K2 */ be_nested_str_weak(resize), - /* K3 */ be_nested_str_weak(get_selected_str), - /* K4 */ be_nested_str_weak(_buffer), - /* K5 */ be_nested_str_weak(remove_trailing_zeroes), - /* K6 */ be_nested_str_weak(asstring), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(get_text), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040314, // 0001 GETMET R1 R1 K20 0x7C040200, // 0002 CALL R1 1 0x4C080000, // 0003 LDNIL R2 0x1C080202, // 0004 EQ R2 R1 R2 0x780A0012, // 0005 JMPF R2 #0019 0x60080015, // 0006 GETGBL R2 G21 0x7C080000, // 0007 CALL R2 0 - 0x8C080502, // 0008 GETMET R2 R2 K2 + 0x8C080515, // 0008 GETMET R2 R2 K21 0x541200FF, // 0009 LDINT R4 256 0x7C080400, // 000A CALL R2 2 0x880C0100, // 000B GETMBR R3 R0 K0 - 0x8C0C0703, // 000C GETMET R3 R3 K3 - 0x8C140504, // 000D GETMET R5 R2 K4 + 0x8C0C0716, // 000C GETMET R3 R3 K22 + 0x8C140517, // 000D GETMET R5 R2 K23 0x7C140200, // 000E CALL R5 1 0x541A00FF, // 000F LDINT R6 256 0x7C0C0600, // 0010 CALL R3 3 - 0x8C0C0105, // 0011 GETMET R3 R0 K5 + 0x8C0C0118, // 0011 GETMET R3 R0 K24 0x5C140400, // 0012 MOVE R5 R2 0x7C0C0400, // 0013 CALL R3 2 0x5C080600, // 0014 MOVE R2 R3 - 0x8C0C0506, // 0015 GETMET R3 R2 K6 + 0x8C0C0519, // 0015 GETMET R3 R2 K25 0x7C0C0200, // 0016 CALL R3 1 0x80040600, // 0017 RET 1 R3 0x70020000, // 0018 JMP #001A @@ -7014,21 +6674,18 @@ be_local_closure(class_lvh_dropdown_get_show_selected, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_text), - }), + &be_ktab_class_lvh_dropdown, /* shared constants */ be_str_weak(get_show_selected), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040314, // 0001 GETMET R1 R1 K20 0x7C040200, // 0002 CALL R1 1 0x4C080000, // 0003 LDNIL R2 0x1C080202, // 0004 EQ R2 R1 R2 @@ -7143,6 +6800,25 @@ be_local_class(lvh_dropdown_list, })), be_str_weak(lvh_dropdown_list) ); +// compact class 'lvh_bar' ktab size: 15, total: 24 (saved 72 bytes) +static const bvalue be_ktab_class_lvh_bar[15] = { + /* K0 */ be_nested_str_weak(_lv_obj), + /* K1 */ be_nested_str_weak(get_max_value), + /* K2 */ be_nested_str_weak(set_range), + /* K3 */ be_nested_str_weak(get_min_value), + /* K4 */ be_nested_str_weak(post_init), + /* K5 */ be_nested_str_weak(_parent_lvh), + /* K6 */ be_nested_str_weak(_page), + /* K7 */ be_nested_str_weak(_oh), + /* K8 */ be_nested_str_weak(lvh_scale), + /* K9 */ be_nested_str_weak(get_range_min_value), + /* K10 */ be_nested_str_weak(get_range_max_value), + /* K11 */ be_nested_str_weak(_val), + /* K12 */ be_nested_str_weak(set_value), + /* K13 */ be_nested_str_weak(lv), + /* K14 */ be_nested_str_weak(ANIM_OFF), +}; + extern const bclass be_class_lvh_bar; @@ -7153,16 +6829,13 @@ be_local_closure(class_lvh_bar_get_max, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_max_value), - }), + &be_ktab_class_lvh_bar, /* shared constants */ be_str_weak(get_max), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ @@ -7183,24 +6856,20 @@ be_local_closure(class_lvh_bar_set_max, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_min_value), - }), + &be_ktab_class_lvh_bar, /* shared constants */ be_str_weak(set_max), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 0x88100100, // 0002 GETMBR R4 R0 K0 - 0x8C100902, // 0003 GETMET R4 R4 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 0x7C100200, // 0004 CALL R4 1 0x60140009, // 0005 GETGBL R5 G9 0x5C180200, // 0006 MOVE R6 R1 @@ -7220,48 +6889,38 @@ be_local_closure(class_lvh_bar_post_init, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(post_init), - /* K1 */ be_nested_str_weak(_parent_lvh), - /* K2 */ be_nested_str_weak(_page), - /* K3 */ be_nested_str_weak(_oh), - /* K4 */ be_nested_str_weak(lvh_scale), - /* K5 */ be_nested_str_weak(_lv_obj), - /* K6 */ be_nested_str_weak(get_range_min_value), - /* K7 */ be_nested_str_weak(get_range_max_value), - /* K8 */ be_nested_str_weak(set_range), - }), + &be_ktab_class_lvh_bar, /* shared constants */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x8C040304, // 0003 GETMET R1 R1 K4 0x7C040200, // 0004 CALL R1 1 0x6004000F, // 0005 GETGBL R1 G15 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x880C0102, // 0007 GETMBR R3 R0 K2 - 0x880C0703, // 0008 GETMBR R3 R3 K3 - 0x880C0704, // 0009 GETMBR R3 R3 K4 + 0x88080105, // 0006 GETMBR R2 R0 K5 + 0x880C0106, // 0007 GETMBR R3 R0 K6 + 0x880C0707, // 0008 GETMBR R3 R3 K7 + 0x880C0708, // 0009 GETMBR R3 R3 K8 0x7C040400, // 000A CALL R1 2 0x7806000C, // 000B JMPF R1 #0019 - 0x88040101, // 000C GETMBR R1 R0 K1 - 0x88040305, // 000D GETMBR R1 R1 K5 - 0x8C040306, // 000E GETMET R1 R1 K6 + 0x88040105, // 000C GETMBR R1 R0 K5 + 0x88040300, // 000D GETMBR R1 R1 K0 + 0x8C040309, // 000E GETMET R1 R1 K9 0x7C040200, // 000F CALL R1 1 - 0x88080101, // 0010 GETMBR R2 R0 K1 - 0x88080505, // 0011 GETMBR R2 R2 K5 - 0x8C080507, // 0012 GETMET R2 R2 K7 + 0x88080105, // 0010 GETMBR R2 R0 K5 + 0x88080500, // 0011 GETMBR R2 R2 K0 + 0x8C08050A, // 0012 GETMET R2 R2 K10 0x7C080200, // 0013 CALL R2 1 - 0x880C0105, // 0014 GETMBR R3 R0 K5 - 0x8C0C0708, // 0015 GETMET R3 R3 K8 + 0x880C0100, // 0014 GETMBR R3 R0 K0 + 0x8C0C0702, // 0015 GETMET R3 R3 K2 0x5C140200, // 0016 MOVE R5 R1 0x5C180400, // 0017 MOVE R6 R2 0x7C0C0600, // 0018 CALL R3 3 @@ -7279,21 +6938,18 @@ be_local_closure(class_lvh_bar_get_min, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_min_value), - }), + &be_ktab_class_lvh_bar, /* shared constants */ be_str_weak(get_min), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040303, // 0001 GETMET R1 R1 K3 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -7309,27 +6965,23 @@ be_local_closure(class_lvh_bar_set_min, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_max_value), - }), + &be_ktab_class_lvh_bar, /* shared constants */ be_str_weak(set_min), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 0x60100009, // 0002 GETGBL R4 G9 0x5C140200, // 0003 MOVE R5 R1 0x7C100200, // 0004 CALL R4 1 0x88140100, // 0005 GETMBR R5 R0 K0 - 0x8C140B02, // 0006 GETMET R5 R5 K2 + 0x8C140B01, // 0006 GETMET R5 R5 K1 0x7C140200, // 0007 CALL R5 1 0x7C080600, // 0008 CALL R2 3 0x80000000, // 0009 RET 0 @@ -7346,28 +6998,22 @@ be_local_closure(class_lvh_bar_set_val, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_val), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_value), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(ANIM_OFF), - }), + &be_ktab_class_lvh_bar, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x90021601, // 0000 SETMBR R0 K11 R1 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8C08050C, // 0002 GETMET R2 R2 K12 0x5C100200, // 0003 MOVE R4 R1 - 0xB8160600, // 0004 GETNGBL R5 K3 - 0x88140B04, // 0005 GETMBR R5 R5 K4 + 0xB8161A00, // 0004 GETNGBL R5 K13 + 0x88140B0E, // 0005 GETMBR R5 R5 K14 0x7C080600, // 0006 CALL R2 3 0x80000000, // 0007 RET 0 }) @@ -7512,6 +7158,23 @@ be_local_class(lvh_line, })), be_str_weak(lvh_line) ); +// compact class 'lvh_scale' ktab size: 13, total: 21 (saved 64 bytes) +static const bvalue be_ktab_class_lvh_scale[13] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(), + /* K3 */ be_nested_str_weak(_options), + /* K4 */ be_nested_str_weak(_options_arr), + /* K5 */ be_nested_str_weak(lv), + /* K6 */ be_nested_str_weak(str_arr), + /* K7 */ be_nested_str_weak(_lv_obj), + /* K8 */ be_nested_str_weak(set_text_src), + /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27scale_X27_X20needs_X20_X27text_src_X27_X20to_X20be_X20a_X20list_X20of_X20strings), + /* K10 */ be_nested_str_weak(get_range_max_value), + /* K11 */ be_nested_str_weak(set_range), + /* K12 */ be_nested_str_weak(get_range_min_value), +}; + extern const bclass be_class_lvh_scale; @@ -7522,24 +7185,13 @@ be_local_closure(class_lvh_scale_set_text_src, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(_options), - /* K4 */ be_nested_str_weak(_options_arr), - /* K5 */ be_nested_str_weak(lv), - /* K6 */ be_nested_str_weak(str_arr), - /* K7 */ be_nested_str_weak(_lv_obj), - /* K8 */ be_nested_str_weak(set_text_src), - /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27scale_X27_X20needs_X20_X27text_src_X27_X20to_X20be_X20a_X20list_X20of_X20strings), - }), + &be_ktab_class_lvh_scale, /* shared constants */ be_str_weak(set_text_src), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ @@ -7590,21 +7242,18 @@ be_local_closure(class_lvh_scale_get_max, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_range_max_value), - }), + &be_ktab_class_lvh_scale, /* shared constants */ be_str_weak(get_max), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040107, // 0000 GETMBR R1 R0 K7 + 0x8C04030A, // 0001 GETMET R1 R1 K10 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -7620,27 +7269,23 @@ be_local_closure(class_lvh_scale_set_min, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_range_max_value), - }), + &be_ktab_class_lvh_scale, /* shared constants */ be_str_weak(set_min), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080107, // 0000 GETMBR R2 R0 K7 + 0x8C08050B, // 0001 GETMET R2 R2 K11 0x60100009, // 0002 GETGBL R4 G9 0x5C140200, // 0003 MOVE R5 R1 0x7C100200, // 0004 CALL R4 1 - 0x88140100, // 0005 GETMBR R5 R0 K0 - 0x8C140B02, // 0006 GETMET R5 R5 K2 + 0x88140107, // 0005 GETMBR R5 R0 K7 + 0x8C140B0A, // 0006 GETMET R5 R5 K10 0x7C140200, // 0007 CALL R5 1 0x7C080600, // 0008 CALL R2 3 0x80000000, // 0009 RET 0 @@ -7657,19 +7302,17 @@ be_local_closure(class_lvh_scale_get_text_src, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_options), - }), + &be_ktab_class_lvh_scale, /* shared constants */ be_str_weak(get_text_src), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 0x80040200, // 0001 RET 1 R1 }) ) @@ -7684,24 +7327,20 @@ be_local_closure(class_lvh_scale_set_max, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_range), - /* K2 */ be_nested_str_weak(get_range_min_value), - }), + &be_ktab_class_lvh_scale, /* shared constants */ be_str_weak(set_max), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100100, // 0002 GETMBR R4 R0 K0 - 0x8C100902, // 0003 GETMET R4 R4 K2 + 0x88080107, // 0000 GETMBR R2 R0 K7 + 0x8C08050B, // 0001 GETMET R2 R2 K11 + 0x88100107, // 0002 GETMBR R4 R0 K7 + 0x8C10090C, // 0003 GETMET R4 R4 K12 0x7C100200, // 0004 CALL R4 1 0x60140009, // 0005 GETGBL R5 G9 0x5C180200, // 0006 MOVE R6 R1 @@ -7721,21 +7360,18 @@ be_local_closure(class_lvh_scale_get_min, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(get_range_min_value), - }), + &be_ktab_class_lvh_scale, /* shared constants */ be_str_weak(get_min), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040107, // 0000 GETMBR R1 R0 K7 + 0x8C04030C, // 0001 GETMET R1 R1 K12 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -7765,6 +7401,52 @@ be_local_class(lvh_scale, })), be_str_weak(lvh_scale) ); +// compact class 'lvh_scale_section' ktab size: 42, total: 57 (saved 120 bytes) +static const bvalue be_ktab_class_lvh_scale_section[42] = { + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(introspect), + /* K2 */ be_nested_str_weak(startswith), + /* K3 */ be_nested_str_weak(set_), + /* K4 */ be_nested_str_weak(get_), + /* K5 */ be_nested_str_weak(endswith), + /* K6 */ be_nested_str_weak(_X25), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(lv), + /* K9 */ be_nested_str_weak(pct), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_str_weak(byte), + /* K12 */ be_const_int(2147483647), + /* K13 */ be_nested_str_weak(value_error), + /* K14 */ be_nested_str_weak(only_X20modifiers_X20_X2710_X27_X20or_X20_X2730_X27_X20allowed), + /* K15 */ be_nested_str_weak(_attr_ignore), + /* K16 */ be_nested_str_weak(find), + /* K17 */ be_nested_str_weak(_style), + /* K18 */ be_nested_str_weak(_style10), + /* K19 */ be_nested_str_weak(_style30), + /* K20 */ be_nested_str_weak(get), + /* K21 */ be_nested_str_weak(function), + /* K22 */ be_nested_str_weak(is_color_attribute), + /* K23 */ be_nested_str_weak(parse_color), + /* K24 */ be_nested_str_weak(_X20for_X20), + /* K25 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_), + /* K26 */ be_nested_str_weak(_lv_obj), + /* K27 */ be_nested_str_weak(_min), + /* K28 */ be_nested_str_weak(_max), + /* K29 */ be_nested_str_weak(_parent_lvh), + /* K30 */ be_nested_str_weak(_page), + /* K31 */ be_nested_str_weak(_oh), + /* K32 */ be_nested_str_weak(lvh_scale), + /* K33 */ be_nested_str_weak(add_section), + /* K34 */ be_nested_str_weak(style), + /* K35 */ be_nested_str_weak(set_style), + /* K36 */ be_nested_str_weak(PART_MAIN), + /* K37 */ be_nested_str_weak(PART_INDICATOR), + /* K38 */ be_nested_str_weak(PART_ITEMS), + /* K39 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), + /* K40 */ be_nested_str_weak(set_range), + /* K41 */ be_nested_str_weak(del), +}; + extern const bclass be_class_lvh_scale_section; @@ -7775,40 +7457,13 @@ be_local_closure(class_lvh_scale_section_setmember, /* name */ be_nested_proto( 12, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(startswith), - /* K3 */ be_nested_str_weak(set_), - /* K4 */ be_nested_str_weak(get_), - /* K5 */ be_nested_str_weak(endswith), - /* K6 */ be_nested_str_weak(_X25), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(lv), - /* K9 */ be_nested_str_weak(pct), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_str_weak(byte), - /* K12 */ be_const_int(2147483647), - /* K13 */ be_nested_str_weak(value_error), - /* K14 */ be_nested_str_weak(only_X20modifiers_X20_X2710_X27_X20or_X20_X2730_X27_X20allowed), - /* K15 */ be_nested_str_weak(_attr_ignore), - /* K16 */ be_nested_str_weak(find), - /* K17 */ be_nested_str_weak(_style), - /* K18 */ be_nested_str_weak(_style10), - /* K19 */ be_nested_str_weak(_style30), - /* K20 */ be_nested_str_weak(get), - /* K21 */ be_nested_str_weak(function), - /* K22 */ be_nested_str_weak(is_color_attribute), - /* K23 */ be_nested_str_weak(parse_color), - /* K24 */ be_nested_str_weak(_X20for_X20), - /* K25 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_), - }), + &be_ktab_class_lvh_scale_section, /* shared constants */ be_str_weak(setmember), &be_const_str_solidified, ( &(const binstruction[141]) { /* code */ @@ -7966,85 +7621,65 @@ be_local_closure(class_lvh_scale_section_post_init, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(_min), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(_max), - /* K4 */ be_nested_str_weak(_parent_lvh), - /* K5 */ be_nested_str_weak(_page), - /* K6 */ be_nested_str_weak(_oh), - /* K7 */ be_nested_str_weak(lvh_scale), - /* K8 */ be_nested_str_weak(add_section), - /* K9 */ be_nested_str_weak(_style), - /* K10 */ be_nested_str_weak(lv), - /* K11 */ be_nested_str_weak(style), - /* K12 */ be_nested_str_weak(set_style), - /* K13 */ be_nested_str_weak(PART_MAIN), - /* K14 */ be_nested_str_weak(_style10), - /* K15 */ be_nested_str_weak(PART_INDICATOR), - /* K16 */ be_nested_str_weak(_style30), - /* K17 */ be_nested_str_weak(PART_ITEMS), - /* K18 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), - }), + &be_ktab_class_lvh_scale_section, /* shared constants */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[51]) { /* code */ 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x90020302, // 0002 SETMBR R0 K1 K2 - 0x90020702, // 0003 SETMBR R0 K3 K2 + 0x90023401, // 0001 SETMBR R0 K26 R1 + 0x90023707, // 0002 SETMBR R0 K27 K7 + 0x90023907, // 0003 SETMBR R0 K28 K7 0x6004000F, // 0004 GETGBL R1 G15 - 0x88080104, // 0005 GETMBR R2 R0 K4 - 0x880C0105, // 0006 GETMBR R3 R0 K5 - 0x880C0706, // 0007 GETMBR R3 R3 K6 - 0x880C0707, // 0008 GETMBR R3 R3 K7 + 0x8808011D, // 0005 GETMBR R2 R0 K29 + 0x880C011E, // 0006 GETMBR R3 R0 K30 + 0x880C071F, // 0007 GETMBR R3 R3 K31 + 0x880C0720, // 0008 GETMBR R3 R3 K32 0x7C040400, // 0009 CALL R1 2 0x78060023, // 000A JMPF R1 #002F - 0x88040104, // 000B GETMBR R1 R0 K4 - 0x88040300, // 000C GETMBR R1 R1 K0 - 0x8C040308, // 000D GETMET R1 R1 K8 + 0x8804011D, // 000B GETMBR R1 R0 K29 + 0x8804031A, // 000C GETMBR R1 R1 K26 + 0x8C040321, // 000D GETMET R1 R1 K33 0x7C040200, // 000E CALL R1 1 - 0x90020001, // 000F SETMBR R0 K0 R1 - 0xB8061400, // 0010 GETNGBL R1 K10 - 0x8C04030B, // 0011 GETMET R1 R1 K11 + 0x90023401, // 000F SETMBR R0 K26 R1 + 0xB8061000, // 0010 GETNGBL R1 K8 + 0x8C040322, // 0011 GETMET R1 R1 K34 0x7C040200, // 0012 CALL R1 1 - 0x90021201, // 0013 SETMBR R0 K9 R1 - 0x88040100, // 0014 GETMBR R1 R0 K0 - 0x8C04030C, // 0015 GETMET R1 R1 K12 - 0xB80E1400, // 0016 GETNGBL R3 K10 - 0x880C070D, // 0017 GETMBR R3 R3 K13 - 0x88100109, // 0018 GETMBR R4 R0 K9 + 0x90022201, // 0013 SETMBR R0 K17 R1 + 0x8804011A, // 0014 GETMBR R1 R0 K26 + 0x8C040323, // 0015 GETMET R1 R1 K35 + 0xB80E1000, // 0016 GETNGBL R3 K8 + 0x880C0724, // 0017 GETMBR R3 R3 K36 + 0x88100111, // 0018 GETMBR R4 R0 K17 0x7C040600, // 0019 CALL R1 3 - 0xB8061400, // 001A GETNGBL R1 K10 - 0x8C04030B, // 001B GETMET R1 R1 K11 + 0xB8061000, // 001A GETNGBL R1 K8 + 0x8C040322, // 001B GETMET R1 R1 K34 0x7C040200, // 001C CALL R1 1 - 0x90021C01, // 001D SETMBR R0 K14 R1 - 0x88040100, // 001E GETMBR R1 R0 K0 - 0x8C04030C, // 001F GETMET R1 R1 K12 - 0xB80E1400, // 0020 GETNGBL R3 K10 - 0x880C070F, // 0021 GETMBR R3 R3 K15 - 0x8810010E, // 0022 GETMBR R4 R0 K14 + 0x90022401, // 001D SETMBR R0 K18 R1 + 0x8804011A, // 001E GETMBR R1 R0 K26 + 0x8C040323, // 001F GETMET R1 R1 K35 + 0xB80E1000, // 0020 GETNGBL R3 K8 + 0x880C0725, // 0021 GETMBR R3 R3 K37 + 0x88100112, // 0022 GETMBR R4 R0 K18 0x7C040600, // 0023 CALL R1 3 - 0xB8061400, // 0024 GETNGBL R1 K10 - 0x8C04030B, // 0025 GETMET R1 R1 K11 + 0xB8061000, // 0024 GETNGBL R1 K8 + 0x8C040322, // 0025 GETMET R1 R1 K34 0x7C040200, // 0026 CALL R1 1 - 0x90022001, // 0027 SETMBR R0 K16 R1 - 0x88040100, // 0028 GETMBR R1 R0 K0 - 0x8C04030C, // 0029 GETMET R1 R1 K12 - 0xB80E1400, // 002A GETNGBL R3 K10 - 0x880C0711, // 002B GETMBR R3 R3 K17 - 0x88100110, // 002C GETMBR R4 R0 K16 + 0x90022601, // 0027 SETMBR R0 K19 R1 + 0x8804011A, // 0028 GETMBR R1 R0 K26 + 0x8C040323, // 0029 GETMET R1 R1 K35 + 0xB80E1000, // 002A GETNGBL R3 K8 + 0x880C0726, // 002B GETMBR R3 R3 K38 + 0x88100113, // 002C GETMBR R4 R0 K19 0x7C040600, // 002D CALL R1 3 0x70020002, // 002E JMP #0032 0x60040001, // 002F GETGBL R1 G1 - 0x58080012, // 0030 LDCONST R2 K18 + 0x58080027, // 0030 LDCONST R2 K39 0x7C040200, // 0031 CALL R1 1 0x80000000, // 0032 RET 0 }) @@ -8060,27 +7695,24 @@ be_local_closure(class_lvh_scale_section_set_min, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_max), - /* K1 */ be_nested_str_weak(set_range), - }), + &be_ktab_class_lvh_scale_section, /* shared constants */ be_str_weak(set_min), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x880C0100, // 0003 GETMBR R3 R0 K0 + 0x880C011C, // 0003 GETMBR R3 R0 K28 0x14100602, // 0004 LT R4 R3 R2 0x78120000, // 0005 JMPF R4 #0007 0x5C0C0400, // 0006 MOVE R3 R2 - 0x8C100101, // 0007 GETMET R4 R0 K1 + 0x8C100128, // 0007 GETMET R4 R0 K40 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0600, // 0009 MOVE R7 R3 0x7C100600, // 000A CALL R4 3 @@ -8098,27 +7730,24 @@ be_local_closure(class_lvh_scale_section_set_max, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_min), - /* K1 */ be_nested_str_weak(set_range), - }), + &be_ktab_class_lvh_scale_section, /* shared constants */ be_str_weak(set_max), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8808011B, // 0000 GETMBR R2 R0 K27 0x600C0009, // 0001 GETGBL R3 G9 0x5C100200, // 0002 MOVE R4 R1 0x7C0C0200, // 0003 CALL R3 1 0x24100403, // 0004 GT R4 R2 R3 0x78120000, // 0005 JMPF R4 #0007 0x5C080600, // 0006 MOVE R2 R3 - 0x8C100101, // 0007 GETMET R4 R0 K1 + 0x8C100128, // 0007 GETMET R4 R0 K40 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0600, // 0009 MOVE R7 R3 0x7C100600, // 000A CALL R4 3 @@ -8136,25 +7765,20 @@ be_local_closure(class_lvh_scale_section_set_range, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_min), - /* K1 */ be_nested_str_weak(_max), - /* K2 */ be_nested_str_weak(_lv_obj), - /* K3 */ be_nested_str_weak(set_range), - }), + &be_ktab_class_lvh_scale_section, /* shared constants */ be_str_weak(set_range), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x8C0C0703, // 0003 GETMET R3 R3 K3 + 0x90023601, // 0000 SETMBR R0 K27 R1 + 0x90023802, // 0001 SETMBR R0 K28 R2 + 0x880C011A, // 0002 GETMBR R3 R0 K26 + 0x8C0C0728, // 0003 GETMET R3 R3 K40 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 @@ -8172,36 +7796,31 @@ be_local_closure(class_lvh_scale_section_delete, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_style), - /* K1 */ be_nested_str_weak(del), - /* K2 */ be_nested_str_weak(_style10), - /* K3 */ be_nested_str_weak(_style30), - }), + &be_ktab_class_lvh_scale_section, /* shared constants */ be_str_weak(delete), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x8C040329, // 0001 GETMET R1 R1 K41 0x7C040200, // 0002 CALL R1 1 0x4C040000, // 0003 LDNIL R1 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x8C040301, // 0006 GETMET R1 R1 K1 + 0x90022201, // 0004 SETMBR R0 K17 R1 + 0x88040112, // 0005 GETMBR R1 R0 K18 + 0x8C040329, // 0006 GETMET R1 R1 K41 0x7C040200, // 0007 CALL R1 1 0x4C040000, // 0008 LDNIL R1 - 0x90020401, // 0009 SETMBR R0 K2 R1 - 0x88040103, // 000A GETMBR R1 R0 K3 - 0x8C040301, // 000B GETMET R1 R1 K1 + 0x90022401, // 0009 SETMBR R0 K18 R1 + 0x88040113, // 000A GETMBR R1 R0 K19 + 0x8C040329, // 000B GETMET R1 R1 K41 0x7C040200, // 000C CALL R1 1 0x4C040000, // 000D LDNIL R1 - 0x90020601, // 000E SETMBR R0 K3 R1 + 0x90022601, // 000E SETMBR R0 K19 R1 0x80000000, // 000F RET 0 }) ) @@ -8233,6 +7852,31 @@ be_local_class(lvh_scale_section, })), be_str_weak(lvh_scale_section) ); +// compact class 'lvh_scale_line' ktab size: 21, total: 29 (saved 64 bytes) +static const bvalue be_ktab_class_lvh_scale_line[21] = { + /* K0 */ be_nested_str_weak(set_val), + /* K1 */ be_nested_str_weak(_parent_lvh), + /* K2 */ be_nested_str_weak(_lv_obj), + /* K3 */ be_nested_str_weak(set_line_needle_value), + /* K4 */ be_nested_str_weak(_needle_length), + /* K5 */ be_nested_str_weak(_val), + /* K6 */ be_nested_str_weak(get_points_num), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(get_points), + /* K9 */ be_nested_str_weak(_lv_points), + /* K10 */ be_nested_str_weak(setbytes), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(set_points), + /* K13 */ be_nested_str_weak(_page), + /* K14 */ be_nested_str_weak(_oh), + /* K15 */ be_nested_str_weak(lvh_scale), + /* K16 */ be_nested_str_weak(HSP_X3A_X20_X27scale_line_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), + /* K17 */ be_nested_str_weak(lv), + /* K18 */ be_nested_str_weak(point_arr), + /* K19 */ be_nested_str_weak(point), + /* K20 */ be_nested_str_weak(post_init), +}; + extern const bclass be_class_lvh_scale_line; @@ -8243,27 +7887,13 @@ be_local_closure(class_lvh_scale_line_set_val, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(set_val), - /* K1 */ be_nested_str_weak(_parent_lvh), - /* K2 */ be_nested_str_weak(_lv_obj), - /* K3 */ be_nested_str_weak(set_line_needle_value), - /* K4 */ be_nested_str_weak(_needle_length), - /* K5 */ be_nested_str_weak(_val), - /* K6 */ be_nested_str_weak(get_points_num), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(get_points), - /* K9 */ be_nested_str_weak(_lv_points), - /* K10 */ be_nested_str_weak(setbytes), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(set_points), - }), + &be_ktab_class_lvh_scale_line, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ @@ -8317,58 +7947,45 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(_parent_lvh), - /* K1 */ be_nested_str_weak(_page), - /* K2 */ be_nested_str_weak(_oh), - /* K3 */ be_nested_str_weak(lvh_scale), - /* K4 */ be_nested_str_weak(HSP_X3A_X20_X27scale_line_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), - /* K5 */ be_nested_str_weak(_needle_length), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(_lv_points), - /* K8 */ be_nested_str_weak(lv), - /* K9 */ be_nested_str_weak(point_arr), - /* K10 */ be_nested_str_weak(point), - /* K11 */ be_nested_str_weak(post_init), - }), + &be_ktab_class_lvh_scale_line, /* shared constants */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ 0x6004000F, // 0000 GETGBL R1 G15 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x880C0702, // 0003 GETMBR R3 R3 K2 - 0x880C0703, // 0004 GETMBR R3 R3 K3 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x880C010D, // 0002 GETMBR R3 R0 K13 + 0x880C070E, // 0003 GETMBR R3 R3 K14 + 0x880C070F, // 0004 GETMBR R3 R3 K15 0x7C040400, // 0005 CALL R1 2 0x74060002, // 0006 JMPT R1 #000A 0x60040001, // 0007 GETGBL R1 G1 - 0x58080004, // 0008 LDCONST R2 K4 + 0x58080010, // 0008 LDCONST R2 K16 0x7C040200, // 0009 CALL R1 1 - 0x90020B06, // 000A SETMBR R0 K5 K6 - 0xB8061000, // 000B GETNGBL R1 K8 - 0x8C040309, // 000C GETMET R1 R1 K9 + 0x9002090B, // 000A SETMBR R0 K4 K11 + 0xB8062200, // 000B GETNGBL R1 K17 + 0x8C040312, // 000C GETMET R1 R1 K18 0x600C0012, // 000D GETGBL R3 G18 0x7C0C0000, // 000E CALL R3 0 - 0xB8121000, // 000F GETNGBL R4 K8 - 0x8C10090A, // 0010 GETMET R4 R4 K10 + 0xB8122200, // 000F GETNGBL R4 K17 + 0x8C100913, // 0010 GETMET R4 R4 K19 0x7C100200, // 0011 CALL R4 1 0x40100604, // 0012 CONNECT R4 R3 R4 - 0xB8121000, // 0013 GETNGBL R4 K8 - 0x8C10090A, // 0014 GETMET R4 R4 K10 + 0xB8122200, // 0013 GETNGBL R4 K17 + 0x8C100913, // 0014 GETMET R4 R4 K19 0x7C100200, // 0015 CALL R4 1 0x40100604, // 0016 CONNECT R4 R3 R4 0x7C040400, // 0017 CALL R1 2 - 0x90020E01, // 0018 SETMBR R0 K7 R1 + 0x90021201, // 0018 SETMBR R0 K9 R1 0x60040003, // 0019 GETGBL R1 G3 0x5C080000, // 001A MOVE R2 R0 0x7C040200, // 001B CALL R1 1 - 0x8C04030B, // 001C GETMET R1 R1 K11 + 0x8C040314, // 001C GETMET R1 R1 K20 0x7C040200, // 001D CALL R1 1 0x80000000, // 001E RET 0 }) @@ -8384,19 +8001,17 @@ be_local_closure(class_lvh_scale_line_get_needle_length, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_needle_length), - }), + &be_ktab_class_lvh_scale_line, /* shared constants */ be_str_weak(get_needle_length), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040104, // 0000 GETMBR R1 R0 K4 0x80040200, // 0001 RET 1 R1 }) ) @@ -8411,30 +8026,26 @@ be_local_closure(class_lvh_scale_line_set_needle_length, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_needle_length), - /* K1 */ be_nested_str_weak(_val), - /* K2 */ be_nested_str_weak(set_val), - }), + &be_ktab_class_lvh_scale_line, /* shared constants */ be_str_weak(set_needle_length), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x90020802, // 0003 SETMBR R0 K4 R2 + 0x88080105, // 0004 GETMBR R2 R0 K5 0x4C0C0000, // 0005 LDNIL R3 0x20080403, // 0006 NE R2 R2 R3 0x780A0002, // 0007 JMPF R2 #000B - 0x8C080102, // 0008 GETMET R2 R0 K2 - 0x88100101, // 0009 GETMBR R4 R0 K1 + 0x8C080100, // 0008 GETMET R2 R0 K0 + 0x88100105, // 0009 GETMBR R4 R0 K5 0x7C080400, // 000A CALL R2 2 0x80000000, // 000B RET 0 }) @@ -8460,6 +8071,16 @@ be_local_class(lvh_scale_line, })), be_str_weak(lvh_scale_line) ); +// compact class 'lvh_spangroup' ktab size: 6, total: 8 (saved 16 bytes) +static const bvalue be_ktab_class_lvh_spangroup[6] = { + /* K0 */ be_nested_str_weak(_lv_obj), + /* K1 */ be_nested_str_weak(set_mode), + /* K2 */ be_nested_str_weak(lv), + /* K3 */ be_nested_str_weak(SPAN_MODE_BREAK), + /* K4 */ be_nested_str_weak(refr_mode), + /* K5 */ be_nested_str_weak(post_init), +}; + extern const bclass be_class_lvh_spangroup; @@ -8470,20 +8091,13 @@ be_local_closure(class_lvh_spangroup_post_init, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_mode), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(SPAN_MODE_BREAK), - /* K4 */ be_nested_str_weak(refr_mode), - /* K5 */ be_nested_str_weak(post_init), - }), + &be_ktab_class_lvh_spangroup, /* shared constants */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ @@ -8514,21 +8128,18 @@ be_local_closure(class_lvh_spangroup_refr_mode, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(refr_mode), - }), + &be_ktab_class_lvh_spangroup, /* shared constants */ be_str_weak(refr_mode), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040304, // 0001 GETMET R1 R1 K4 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -8552,6 +8163,40 @@ be_local_class(lvh_spangroup, })), be_str_weak(lvh_spangroup) ); +// compact class 'lvh_span' ktab size: 30, total: 36 (saved 48 bytes) +static const bvalue be_ktab_class_lvh_span[30] = { + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(introspect), + /* K2 */ be_nested_str_weak(startswith), + /* K3 */ be_nested_str_weak(set_), + /* K4 */ be_nested_str_weak(get_), + /* K5 */ be_nested_str_weak(endswith), + /* K6 */ be_nested_str_weak(_X25), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(lv), + /* K9 */ be_nested_str_weak(pct), + /* K10 */ be_nested_str_weak(_attr_ignore), + /* K11 */ be_nested_str_weak(find), + /* K12 */ be_nested_str_weak(get), + /* K13 */ be_nested_str_weak(function), + /* K14 */ be_nested_str_weak(_style), + /* K15 */ be_nested_str_weak(is_color_attribute), + /* K16 */ be_nested_str_weak(parse_color), + /* K17 */ be_nested_str_weak(_parent_lvh), + /* K18 */ be_nested_str_weak(refr_mode), + /* K19 */ be_nested_str_weak(_X20for_X20), + /* K20 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_), + /* K21 */ be_nested_str_weak(_lv_obj), + /* K22 */ be_nested_str_weak(_page), + /* K23 */ be_nested_str_weak(_oh), + /* K24 */ be_nested_str_weak(lvh_spangroup), + /* K25 */ be_nested_str_weak(new_span), + /* K26 */ be_nested_str_weak(get_style), + /* K27 */ be_nested_str_weak(parse_font), + /* K28 */ be_nested_str_weak(set_text_font), + /* K29 */ be_nested_str_weak(set_text), +}; + extern const bclass be_class_lvh_span; @@ -8562,35 +8207,13 @@ be_local_closure(class_lvh_span_setmember, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(startswith), - /* K3 */ be_nested_str_weak(set_), - /* K4 */ be_nested_str_weak(get_), - /* K5 */ be_nested_str_weak(endswith), - /* K6 */ be_nested_str_weak(_X25), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(lv), - /* K9 */ be_nested_str_weak(pct), - /* K10 */ be_nested_str_weak(_attr_ignore), - /* K11 */ be_nested_str_weak(find), - /* K12 */ be_nested_str_weak(get), - /* K13 */ be_nested_str_weak(function), - /* K14 */ be_nested_str_weak(_style), - /* K15 */ be_nested_str_weak(is_color_attribute), - /* K16 */ be_nested_str_weak(parse_color), - /* K17 */ be_nested_str_weak(_parent_lvh), - /* K18 */ be_nested_str_weak(refr_mode), - /* K19 */ be_nested_str_weak(_X20for_X20), - /* K20 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_), - }), + &be_ktab_class_lvh_span, /* shared constants */ be_str_weak(setmember), &be_const_str_solidified, ( &(const binstruction[92]) { /* code */ @@ -8699,43 +8322,34 @@ be_local_closure(class_lvh_span_post_init, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(_parent_lvh), - /* K2 */ be_nested_str_weak(_page), - /* K3 */ be_nested_str_weak(_oh), - /* K4 */ be_nested_str_weak(lvh_spangroup), - /* K5 */ be_nested_str_weak(new_span), - /* K6 */ be_nested_str_weak(_style), - /* K7 */ be_nested_str_weak(get_style), - }), + &be_ktab_class_lvh_span, /* shared constants */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x90022A01, // 0001 SETMBR R0 K21 R1 0x6004000F, // 0002 GETGBL R1 G15 - 0x88080101, // 0003 GETMBR R2 R0 K1 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x880C0703, // 0005 GETMBR R3 R3 K3 - 0x880C0704, // 0006 GETMBR R3 R3 K4 + 0x88080111, // 0003 GETMBR R2 R0 K17 + 0x880C0116, // 0004 GETMBR R3 R0 K22 + 0x880C0717, // 0005 GETMBR R3 R3 K23 + 0x880C0718, // 0006 GETMBR R3 R3 K24 0x7C040400, // 0007 CALL R1 2 0x78060008, // 0008 JMPF R1 #0012 - 0x88040101, // 0009 GETMBR R1 R0 K1 - 0x88040300, // 000A GETMBR R1 R1 K0 - 0x8C040305, // 000B GETMET R1 R1 K5 + 0x88040111, // 0009 GETMBR R1 R0 K17 + 0x88040315, // 000A GETMBR R1 R1 K21 + 0x8C040319, // 000B GETMET R1 R1 K25 0x7C040200, // 000C CALL R1 1 - 0x90020001, // 000D SETMBR R0 K0 R1 - 0x88040100, // 000E GETMBR R1 R0 K0 - 0x8C040307, // 000F GETMET R1 R1 K7 + 0x90022A01, // 000D SETMBR R0 K21 R1 + 0x88040115, // 000E GETMBR R1 R0 K21 + 0x8C04031A, // 000F GETMET R1 R1 K26 0x7C040200, // 0010 CALL R1 1 - 0x90020C01, // 0011 SETMBR R0 K6 R1 + 0x90021C01, // 0011 SETMBR R0 K14 R1 0x80000000, // 0012 RET 0 }) ) @@ -8750,34 +8364,28 @@ be_local_closure(class_lvh_span_set_text_font, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(parse_font), - /* K1 */ be_nested_str_weak(_style), - /* K2 */ be_nested_str_weak(set_text_font), - /* K3 */ be_nested_str_weak(_parent_lvh), - /* K4 */ be_nested_str_weak(refr_mode), - }), + &be_ktab_class_lvh_span, /* shared constants */ be_str_weak(set_text_font), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C08011B, // 0000 GETMET R2 R0 K27 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0006, // 0005 JMPF R3 #000D - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x8C0C0702, // 0007 GETMET R3 R3 K2 + 0x880C010E, // 0006 GETMBR R3 R0 K14 + 0x8C0C071C, // 0007 GETMET R3 R3 K28 0x5C140400, // 0008 MOVE R5 R2 0x7C0C0400, // 0009 CALL R3 2 - 0x880C0103, // 000A GETMBR R3 R0 K3 - 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x880C0111, // 000A GETMBR R3 R0 K17 + 0x8C0C0712, // 000B GETMET R3 R3 K18 0x7C0C0200, // 000C CALL R3 1 0x80000000, // 000D RET 0 }) @@ -8793,21 +8401,18 @@ be_local_closure(class_lvh_span_set_text, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_text), - }), + &be_ktab_class_lvh_span, /* shared constants */ be_str_weak(set_text), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080115, // 0000 GETMBR R2 R0 K21 + 0x8C08051D, // 0001 GETMET R2 R2 K29 0x60100008, // 0002 GETGBL R4 G8 0x5C140200, // 0003 MOVE R5 R1 0x7C100200, // 0004 CALL R4 1 @@ -8837,6 +8442,34 @@ be_local_class(lvh_span, })), be_str_weak(lvh_span) ); +// compact class 'lvh_chart' ktab size: 24, total: 54 (saved 240 bytes) +static const bvalue be_ktab_class_lvh_chart[24] = { + /* K0 */ be_nested_str_weak(_y_min), + /* K1 */ be_nested_str_weak(_lv_obj), + /* K2 */ be_nested_str_weak(set_next_value), + /* K3 */ be_nested_str_weak(_ser1), + /* K4 */ be_nested_str_weak(add_point2), + /* K5 */ be_nested_str_weak(set_range), + /* K6 */ be_nested_str_weak(lv), + /* K7 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y), + /* K8 */ be_nested_str_weak(_y_max), + /* K9 */ be_nested_str_weak(_ser2), + /* K10 */ be_nested_str_weak(set_series_color), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(_h_div), + /* K13 */ be_const_int(3), + /* K14 */ be_nested_str_weak(_v_div), + /* K15 */ be_nested_str_weak(set_update_mode), + /* K16 */ be_nested_str_weak(CHART_UPDATE_MODE_SHIFT), + /* K17 */ be_nested_str_weak(add_series), + /* K18 */ be_nested_str_weak(color), + /* K19 */ be_const_int(15615044), + /* K20 */ be_const_int(4517444), + /* K21 */ be_nested_str_weak(_val), + /* K22 */ be_nested_str_weak(add_point), + /* K23 */ be_nested_str_weak(set_div_line_count), +}; + extern const bclass be_class_lvh_chart; @@ -8847,15 +8480,13 @@ be_local_closure(class_lvh_chart_get_y_min, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_y_min), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(get_y_min), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ @@ -8874,23 +8505,19 @@ be_local_closure(class_lvh_chart_add_point, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_next_value), - /* K2 */ be_nested_str_weak(_ser1), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(add_point), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 + 0x88100103, // 0002 GETMBR R4 R0 K3 0x5C140200, // 0003 MOVE R5 R1 0x7C080600, // 0004 CALL R2 3 0x80000000, // 0005 RET 0 @@ -8907,19 +8534,17 @@ be_local_closure(class_lvh_chart_set_val2, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(add_point2), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_val2), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080104, // 0000 GETMET R2 R0 K4 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x80000000, // 0003 RET 0 @@ -8936,30 +8561,23 @@ be_local_closure(class_lvh_chart_set_y_min, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_y_min), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_range), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y), - /* K5 */ be_nested_str_weak(_y_max), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_y_min), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x90020001, // 0000 SETMBR R0 K0 R1 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100904, // 0004 GETMBR R4 R4 K4 + 0x8C080505, // 0002 GETMET R2 R2 K5 + 0xB8120C00, // 0003 GETNGBL R4 K6 + 0x88100907, // 0004 GETMBR R4 R4 K7 0x88140100, // 0005 GETMBR R5 R0 K0 - 0x88180105, // 0006 GETMBR R6 R0 K5 + 0x88180108, // 0006 GETMBR R6 R0 K8 0x7C080800, // 0007 CALL R2 4 0x80000000, // 0008 RET 0 }) @@ -8975,23 +8593,19 @@ be_local_closure(class_lvh_chart_add_point2, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_next_value), - /* K2 */ be_nested_str_weak(_ser2), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(add_point2), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080502, // 0001 GETMET R2 R2 K2 + 0x88100109, // 0002 GETMBR R4 R0 K9 0x5C140200, // 0003 MOVE R5 R1 0x7C080600, // 0004 CALL R2 3 0x80000000, // 0005 RET 0 @@ -9008,23 +8622,19 @@ be_local_closure(class_lvh_chart_set_series1_color, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_series_color), - /* K2 */ be_nested_str_weak(_ser1), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_series1_color), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C08050A, // 0001 GETMET R2 R2 K10 + 0x88100103, // 0002 GETMBR R4 R0 K3 0x5C140200, // 0003 MOVE R5 R1 0x7C080600, // 0004 CALL R2 3 0x80000000, // 0005 RET 0 @@ -9041,23 +8651,19 @@ be_local_closure(class_lvh_chart_set_series2_color, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_obj), - /* K1 */ be_nested_str_weak(set_series_color), - /* K2 */ be_nested_str_weak(_ser2), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_series2_color), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C08050A, // 0001 GETMET R2 R2 K10 + 0x88100109, // 0002 GETMBR R4 R0 K9 0x5C140200, // 0003 MOVE R5 R1 0x7C080600, // 0004 CALL R2 3 0x80000000, // 0005 RET 0 @@ -9074,30 +8680,23 @@ be_local_closure(class_lvh_chart_set_y_max, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(_y_max), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_range), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y), - /* K5 */ be_nested_str_weak(_y_min), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_y_max), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021001, // 0000 SETMBR R0 K8 R1 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100904, // 0004 GETMBR R4 R4 K4 - 0x88140105, // 0005 GETMBR R5 R0 K5 - 0x88180100, // 0006 GETMBR R6 R0 K0 + 0x8C080505, // 0002 GETMET R2 R2 K5 + 0xB8120C00, // 0003 GETNGBL R4 K6 + 0x88100907, // 0004 GETMBR R4 R4 K7 + 0x88140100, // 0005 GETMBR R5 R0 K0 + 0x88180108, // 0006 GETMBR R6 R0 K8 0x7C080800, // 0007 CALL R2 4 0x80000000, // 0008 RET 0 }) @@ -9113,65 +8712,47 @@ be_local_closure(class_lvh_chart_post_init, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(_y_min), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(_y_max), - /* K3 */ be_nested_str_weak(_h_div), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(_v_div), - /* K6 */ be_nested_str_weak(_lv_obj), - /* K7 */ be_nested_str_weak(set_update_mode), - /* K8 */ be_nested_str_weak(lv), - /* K9 */ be_nested_str_weak(CHART_UPDATE_MODE_SHIFT), - /* K10 */ be_nested_str_weak(_ser1), - /* K11 */ be_nested_str_weak(add_series), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_const_int(15615044), - /* K14 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y), - /* K15 */ be_nested_str_weak(_ser2), - /* K16 */ be_const_int(4517444), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0x90020101, // 0000 SETMBR R0 K0 K1 + 0x9002010B, // 0000 SETMBR R0 K0 K11 0x54060063, // 0001 LDINT R1 100 - 0x90020401, // 0002 SETMBR R0 K2 R1 - 0x90020704, // 0003 SETMBR R0 K3 K4 + 0x90021001, // 0002 SETMBR R0 K8 R1 + 0x9002190D, // 0003 SETMBR R0 K12 K13 0x54060004, // 0004 LDINT R1 5 - 0x90020A01, // 0005 SETMBR R0 K5 R1 - 0x88040106, // 0006 GETMBR R1 R0 K6 - 0x8C040307, // 0007 GETMET R1 R1 K7 - 0xB80E1000, // 0008 GETNGBL R3 K8 - 0x880C0709, // 0009 GETMBR R3 R3 K9 + 0x90021C01, // 0005 SETMBR R0 K14 R1 + 0x88040101, // 0006 GETMBR R1 R0 K1 + 0x8C04030F, // 0007 GETMET R1 R1 K15 + 0xB80E0C00, // 0008 GETNGBL R3 K6 + 0x880C0710, // 0009 GETMBR R3 R3 K16 0x7C040400, // 000A CALL R1 2 - 0x88040106, // 000B GETMBR R1 R0 K6 - 0x8C04030B, // 000C GETMET R1 R1 K11 - 0xB80E1000, // 000D GETNGBL R3 K8 - 0x8C0C070C, // 000E GETMET R3 R3 K12 - 0x5814000D, // 000F LDCONST R5 K13 + 0x88040101, // 000B GETMBR R1 R0 K1 + 0x8C040311, // 000C GETMET R1 R1 K17 + 0xB80E0C00, // 000D GETNGBL R3 K6 + 0x8C0C0712, // 000E GETMET R3 R3 K18 + 0x58140013, // 000F LDCONST R5 K19 0x7C0C0400, // 0010 CALL R3 2 - 0xB8121000, // 0011 GETNGBL R4 K8 - 0x8810090E, // 0012 GETMBR R4 R4 K14 + 0xB8120C00, // 0011 GETNGBL R4 K6 + 0x88100907, // 0012 GETMBR R4 R4 K7 0x7C040600, // 0013 CALL R1 3 - 0x90021401, // 0014 SETMBR R0 K10 R1 - 0x88040106, // 0015 GETMBR R1 R0 K6 - 0x8C04030B, // 0016 GETMET R1 R1 K11 - 0xB80E1000, // 0017 GETNGBL R3 K8 - 0x8C0C070C, // 0018 GETMET R3 R3 K12 - 0x58140010, // 0019 LDCONST R5 K16 + 0x90020601, // 0014 SETMBR R0 K3 R1 + 0x88040101, // 0015 GETMBR R1 R0 K1 + 0x8C040311, // 0016 GETMET R1 R1 K17 + 0xB80E0C00, // 0017 GETNGBL R3 K6 + 0x8C0C0712, // 0018 GETMET R3 R3 K18 + 0x58140014, // 0019 LDCONST R5 K20 0x7C0C0400, // 001A CALL R3 2 - 0xB8121000, // 001B GETNGBL R4 K8 - 0x8810090E, // 001C GETMBR R4 R4 K14 + 0xB8120C00, // 001B GETNGBL R4 K6 + 0x88100907, // 001C GETMBR R4 R4 K7 0x7C040600, // 001D CALL R1 3 - 0x90021E01, // 001E SETMBR R0 K15 R1 + 0x90021201, // 001E SETMBR R0 K9 R1 0x80000000, // 001F RET 0 }) ) @@ -9186,19 +8767,17 @@ be_local_closure(class_lvh_chart_get_y_max, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_y_max), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(get_y_max), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040108, // 0000 GETMBR R1 R0 K8 0x80040200, // 0001 RET 1 R1 }) ) @@ -9213,21 +8792,18 @@ be_local_closure(class_lvh_chart_set_val, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_val), - /* K1 */ be_nested_str_weak(add_point), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x90022A01, // 0000 SETMBR R0 K21 R1 + 0x8C080116, // 0001 GETMET R2 R0 K22 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 @@ -9244,26 +8820,21 @@ be_local_closure(class_lvh_chart_set_v_div_line_count, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_v_div), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_div_line_count), - /* K3 */ be_nested_str_weak(_h_div), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_v_div_line_count), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021C01, // 0000 SETMBR R0 K14 R1 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x88100103, // 0003 GETMBR R4 R0 K3 - 0x88140100, // 0004 GETMBR R5 R0 K0 + 0x8C080517, // 0002 GETMET R2 R2 K23 + 0x8810010C, // 0003 GETMBR R4 R0 K12 + 0x8814010E, // 0004 GETMBR R5 R0 K14 0x7C080600, // 0005 CALL R2 3 0x80000000, // 0006 RET 0 }) @@ -9279,26 +8850,21 @@ be_local_closure(class_lvh_chart_set_h_div_line_count, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(_h_div), - /* K1 */ be_nested_str_weak(_lv_obj), - /* K2 */ be_nested_str_weak(set_div_line_count), - /* K3 */ be_nested_str_weak(_v_div), - }), + &be_ktab_class_lvh_chart, /* shared constants */ be_str_weak(set_h_div_line_count), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90021801, // 0000 SETMBR R0 K12 R1 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x88100100, // 0003 GETMBR R4 R0 K0 - 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x8C080517, // 0002 GETMET R2 R2 K23 + 0x8810010C, // 0003 GETMBR R4 R0 K12 + 0x8814010E, // 0004 GETMBR R5 R0 K14 0x7C080600, // 0005 CALL R2 3 0x80000000, // 0006 RET 0 }) @@ -9339,6 +8905,20 @@ be_local_class(lvh_chart, })), be_str_weak(lvh_chart) ); +// compact class 'lvh_btnmatrix' ktab size: 10, total: 11 (saved 8 bytes) +static const bvalue be_ktab_class_lvh_btnmatrix[10] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_nested_str_weak(), + /* K3 */ be_nested_str_weak(_options), + /* K4 */ be_nested_str_weak(_options_arr), + /* K5 */ be_nested_str_weak(lv), + /* K6 */ be_nested_str_weak(str_arr), + /* K7 */ be_nested_str_weak(_lv_obj), + /* K8 */ be_nested_str_weak(set_map), + /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27btnmatrix_X27_X20needs_X20_X27options_X27_X20to_X20be_X20a_X20list_X20of_X20strings), +}; + extern const bclass be_class_lvh_btnmatrix; @@ -9349,24 +8929,13 @@ be_local_closure(class_lvh_btnmatrix_set_options, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(_options), - /* K4 */ be_nested_str_weak(_options_arr), - /* K5 */ be_nested_str_weak(lv), - /* K6 */ be_nested_str_weak(str_arr), - /* K7 */ be_nested_str_weak(_lv_obj), - /* K8 */ be_nested_str_weak(set_map), - /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27btnmatrix_X27_X20needs_X20_X27options_X27_X20to_X20be_X20a_X20list_X20of_X20strings), - }), + &be_ktab_class_lvh_btnmatrix, /* shared constants */ be_str_weak(set_options), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ @@ -9417,19 +8986,17 @@ be_local_closure(class_lvh_btnmatrix_get_options, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_options), - }), + &be_ktab_class_lvh_btnmatrix, /* shared constants */ be_str_weak(get_options), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 0x80040200, // 0001 RET 1 R1 }) ) @@ -9502,6 +9069,41 @@ be_local_class(lvh_scr, })), be_str_weak(lvh_scr) ); +// compact class 'lvh_page' ktab size: 31, total: 50 (saved 152 bytes) +static const bvalue be_ktab_class_lvh_page[31] = { + /* K0 */ be_nested_str_weak(global), + /* K1 */ be_nested_str_weak(_oh), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(_page_id), + /* K4 */ be_nested_str_weak(_obj_id), + /* K5 */ be_nested_str_weak(_lv_scr), + /* K6 */ be_nested_str_weak(lv), + /* K7 */ be_nested_str_weak(scr_act), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(layer_top), + /* K10 */ be_nested_str_weak(obj), + /* K11 */ be_nested_str_weak(get_style_bg_color), + /* K12 */ be_nested_str_weak(set_style_bg_color), + /* K13 */ be_nested_str_weak(lvh_scr), + /* K14 */ be_nested_str_weak(p), + /* K15 */ be_nested_str_weak(b0), + /* K16 */ be_nested_str_weak(_p), + /* K17 */ be_nested_str_weak(page_dir_to), + /* K18 */ be_nested_str_weak(id), + /* K19 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22out_X22_X7D_X7D), + /* K20 */ be_nested_str_weak(lvh_page_cur_idx), + /* K21 */ be_nested_str_weak(tasmota), + /* K22 */ be_nested_str_weak(set_timer), + /* K23 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22in_X22_X7D_X7D), + /* K24 */ be_nested_str_weak(show_anim), + /* K25 */ be_nested_str_weak(find), + /* K26 */ be_nested_str_weak(SCR_LOAD_ANIM_NONE), + /* K27 */ be_nested_str_weak(screen_load_anim), + /* K28 */ be_nested_str_weak(p_X25ib_X25i), + /* K29 */ be_nested_str_weak(_page), + /* K30 */ be_nested_str_weak(remove), +}; + extern const bclass be_class_lvh_page; @@ -9512,30 +9114,13 @@ be_local_closure(class_lvh_page_init, /* name */ be_nested_proto( 10, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_oh), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(_page_id), - /* K4 */ be_nested_str_weak(_obj_id), - /* K5 */ be_nested_str_weak(_lv_scr), - /* K6 */ be_nested_str_weak(lv), - /* K7 */ be_nested_str_weak(scr_act), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(layer_top), - /* K10 */ be_nested_str_weak(obj), - /* K11 */ be_nested_str_weak(get_style_bg_color), - /* K12 */ be_nested_str_weak(set_style_bg_color), - /* K13 */ be_nested_str_weak(lvh_scr), - /* K14 */ be_nested_str_weak(p), - /* K15 */ be_nested_str_weak(b0), - }), + &be_ktab_class_lvh_page, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[66]) { /* code */ @@ -9618,7 +9203,7 @@ be_local_closure(class_lvh_page_show, /* name */ be_nested_proto( 13, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -9675,41 +9260,22 @@ be_local_closure(class_lvh_page_show, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_scr), - /* K1 */ be_nested_str_weak(_p), - /* K2 */ be_nested_str_weak(lv), - /* K3 */ be_nested_str_weak(scr_act), - /* K4 */ be_nested_str_weak(_oh), - /* K5 */ be_nested_str_weak(page_dir_to), - /* K6 */ be_nested_str_weak(id), - /* K7 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22out_X22_X7D_X7D), - /* K8 */ be_nested_str_weak(lvh_page_cur_idx), - /* K9 */ be_nested_str_weak(tasmota), - /* K10 */ be_nested_str_weak(set_timer), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22in_X22_X7D_X7D), - /* K13 */ be_nested_str_weak(_page_id), - /* K14 */ be_nested_str_weak(show_anim), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(SCR_LOAD_ANIM_NONE), - /* K17 */ be_nested_str_weak(screen_load_anim), - }), + &be_ktab_class_lvh_page, /* shared constants */ be_str_weak(show), &be_const_str_solidified, ( &(const binstruction[66]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C0105, // 0000 GETMBR R3 R0 K5 0x4C100000, // 0001 LDNIL R4 0x1C0C0604, // 0002 EQ R3 R3 R4 0x780E0001, // 0003 JMPF R3 #0006 0x4C0C0000, // 0004 LDNIL R3 0x80040600, // 0005 RET 1 R3 - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x880C0701, // 0007 GETMBR R3 R3 K1 - 0xB8120400, // 0008 GETNGBL R4 K2 - 0x8C100903, // 0009 GETMET R4 R4 K3 + 0x880C0105, // 0006 GETMBR R3 R0 K5 + 0x880C0710, // 0007 GETMBR R3 R3 K16 + 0xB8120C00, // 0008 GETNGBL R4 K6 + 0x8C100907, // 0009 GETMET R4 R4 K7 0x7C100200, // 000A CALL R4 1 - 0x88100901, // 000B GETMBR R4 R4 K1 + 0x88100910, // 000B GETMBR R4 R4 K16 0x1C0C0604, // 000C EQ R3 R3 R4 0x780E0000, // 000D JMPF R3 #000F 0x80000600, // 000E RET 0 @@ -9720,46 +9286,46 @@ be_local_closure(class_lvh_page_show, /* name */ 0x4C0C0000, // 0013 LDNIL R3 0x1C0C0203, // 0014 EQ R3 R1 R3 0x780E0005, // 0015 JMPF R3 #001C - 0x880C0104, // 0016 GETMBR R3 R0 K4 - 0x8C0C0705, // 0017 GETMET R3 R3 K5 - 0x8C140106, // 0018 GETMET R5 R0 K6 + 0x880C0101, // 0016 GETMBR R3 R0 K1 + 0x8C0C0711, // 0017 GETMET R3 R3 K17 + 0x8C140112, // 0018 GETMET R5 R0 K18 0x7C140200, // 0019 CALL R5 1 0x7C0C0400, // 001A CALL R3 2 0x5C040600, // 001B MOVE R1 R3 0x600C0018, // 001C GETGBL R3 G24 - 0x58100007, // 001D LDCONST R4 K7 - 0x88140104, // 001E GETMBR R5 R0 K4 - 0x88140B08, // 001F GETMBR R5 R5 K8 + 0x58100013, // 001D LDCONST R4 K19 + 0x88140101, // 001E GETMBR R5 R0 K1 + 0x88140B14, // 001F GETMBR R5 R5 K20 0x7C0C0400, // 0020 CALL R3 2 - 0xB8121200, // 0021 GETNGBL R4 K9 - 0x8C10090A, // 0022 GETMET R4 R4 K10 - 0x5818000B, // 0023 LDCONST R6 K11 + 0xB8122A00, // 0021 GETNGBL R4 K21 + 0x8C100916, // 0022 GETMET R4 R4 K22 + 0x58180008, // 0023 LDCONST R6 K8 0x841C0000, // 0024 CLOSURE R7 P0 0x7C100600, // 0025 CALL R4 3 0x60100018, // 0026 GETGBL R4 G24 - 0x5814000C, // 0027 LDCONST R5 K12 - 0x8818010D, // 0028 GETMBR R6 R0 K13 + 0x58140017, // 0027 LDCONST R5 K23 + 0x88180103, // 0028 GETMBR R6 R0 K3 0x7C100400, // 0029 CALL R4 2 - 0xB8161200, // 002A GETNGBL R5 K9 - 0x8C140B0A, // 002B GETMET R5 R5 K10 - 0x581C000B, // 002C LDCONST R7 K11 + 0xB8162A00, // 002A GETNGBL R5 K21 + 0x8C140B16, // 002B GETMET R5 R5 K22 + 0x581C0008, // 002C LDCONST R7 K8 0x84200001, // 002D CLOSURE R8 P1 0x7C140600, // 002E CALL R5 3 - 0x88140104, // 002F GETMBR R5 R0 K4 - 0x8818010D, // 0030 GETMBR R6 R0 K13 - 0x90161006, // 0031 SETMBR R5 K8 R6 - 0x8814010E, // 0032 GETMBR R5 R0 K14 - 0x8C140B0F, // 0033 GETMET R5 R5 K15 + 0x88140101, // 002F GETMBR R5 R0 K1 + 0x88180103, // 0030 GETMBR R6 R0 K3 + 0x90162806, // 0031 SETMBR R5 K20 R6 + 0x88140118, // 0032 GETMBR R5 R0 K24 + 0x8C140B19, // 0033 GETMET R5 R5 K25 0x5C1C0200, // 0034 MOVE R7 R1 - 0xB8220400, // 0035 GETNGBL R8 K2 - 0x88201110, // 0036 GETMBR R8 R8 K16 + 0xB8220C00, // 0035 GETNGBL R8 K6 + 0x8820111A, // 0036 GETMBR R8 R8 K26 0x7C140600, // 0037 CALL R5 3 - 0xB81A0400, // 0038 GETNGBL R6 K2 - 0x8C180D11, // 0039 GETMET R6 R6 K17 - 0x88200100, // 003A GETMBR R8 R0 K0 + 0xB81A0C00, // 0038 GETNGBL R6 K6 + 0x8C180D1B, // 0039 GETMET R6 R6 K27 + 0x88200105, // 003A GETMBR R8 R0 K5 0x5C240A00, // 003B MOVE R9 R5 0x5C280400, // 003C MOVE R10 R2 - 0x582C000B, // 003D LDCONST R11 K11 + 0x582C0008, // 003D LDCONST R11 K8 0x50300000, // 003E LDBOOL R12 0 0 0x7C180C00, // 003F CALL R6 6 0xA0000000, // 0040 CLOSE R0 @@ -9777,19 +9343,17 @@ be_local_closure(class_lvh_page_id, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_page_id), - }), + &be_ktab_class_lvh_page, /* shared constants */ be_str_weak(id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 0x80040200, // 0001 RET 1 R1 }) ) @@ -9804,19 +9368,17 @@ be_local_closure(class_lvh_page_get_scr, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_lv_scr), - }), + &be_ktab_class_lvh_page, /* shared constants */ be_str_weak(get_scr), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040105, // 0000 GETMBR R1 R0 K5 0x80040200, // 0001 RET 1 R1 }) ) @@ -9831,21 +9393,18 @@ be_local_closure(class_lvh_page_get_obj, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_obj_id), - /* K1 */ be_nested_str_weak(find), - }), + &be_ktab_class_lvh_page, /* shared constants */ be_str_weak(get_obj), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080519, // 0001 GETMET R2 R2 K25 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040400, // 0004 RET 1 R2 @@ -9862,32 +9421,26 @@ be_local_closure(class_lvh_page_add_obj, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(_obj_id), - /* K1 */ be_nested_str_weak(p_X25ib_X25i), - /* K2 */ be_nested_str_weak(_page), - /* K3 */ be_nested_str_weak(id), - /* K4 */ be_nested_str_weak(global), - }), + &be_ktab_class_lvh_page, /* shared constants */ be_str_weak(add_obj), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x880C0104, // 0000 GETMBR R3 R0 K4 0x980C0202, // 0001 SETIDX R3 R1 R2 0x600C0018, // 0002 GETGBL R3 G24 - 0x58100001, // 0003 LDCONST R4 K1 - 0x88140502, // 0004 GETMBR R5 R2 K2 - 0x8C140B03, // 0005 GETMET R5 R5 K3 + 0x5810001C, // 0003 LDCONST R4 K28 + 0x8814051D, // 0004 GETMBR R5 R2 K29 + 0x8C140B12, // 0005 GETMET R5 R5 K18 0x7C140200, // 0006 CALL R5 1 0x5C180200, // 0007 MOVE R6 R1 0x7C0C0600, // 0008 CALL R3 3 - 0xB8120800, // 0009 GETNGBL R4 K4 + 0xB8120000, // 0009 GETNGBL R4 K0 0x90100602, // 000A SETMBR R4 R3 R2 0x80000000, // 000B RET 0 }) @@ -9903,41 +9456,33 @@ be_local_closure(class_lvh_page_remove_obj, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(_obj_id), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(remove), - /* K3 */ be_nested_str_weak(p_X25ib_X25i), - /* K4 */ be_nested_str_weak(_page), - /* K5 */ be_nested_str_weak(id), - /* K6 */ be_nested_str_weak(global), - }), + &be_ktab_class_lvh_page, /* shared constants */ be_str_weak(remove_obj), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080519, // 0001 GETMET R2 R2 K25 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x880C0100, // 0004 GETMBR R3 R0 K0 - 0x8C0C0702, // 0005 GETMET R3 R3 K2 + 0x880C0104, // 0004 GETMBR R3 R0 K4 + 0x8C0C071E, // 0005 GETMET R3 R3 K30 0x5C140200, // 0006 MOVE R5 R1 0x7C0C0400, // 0007 CALL R3 2 0x780A0009, // 0008 JMPF R2 #0013 0x600C0018, // 0009 GETGBL R3 G24 - 0x58100003, // 000A LDCONST R4 K3 - 0x88140504, // 000B GETMBR R5 R2 K4 - 0x8C140B05, // 000C GETMET R5 R5 K5 + 0x5810001C, // 000A LDCONST R4 K28 + 0x8814051D, // 000B GETMBR R5 R2 K29 + 0x8C140B12, // 000C GETMET R5 R5 K18 0x7C140200, // 000D CALL R5 1 0x5C180200, // 000E MOVE R6 R1 0x7C0C0600, // 000F CALL R3 3 - 0xB8120C00, // 0010 GETNGBL R4 K6 + 0xB8120000, // 0010 GETNGBL R4 K0 0x4C140000, // 0011 LDNIL R5 0x90100605, // 0012 SETMBR R4 R3 R5 0x80000000, // 0013 RET 0 @@ -9981,6 +9526,132 @@ be_local_class(lvh_page, })), be_str_weak(lvh_page) ); +extern const bclass be_class_HASPmota; +// compact class 'HASPmota' ktab size: 121, total: 176 (saved 440 bytes) +static const bvalue be_ktab_class_HASPmota[121] = { + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(json), + /* K2 */ be_nested_str_weak(lvh_page_cur_idx), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(lvh_page), + /* K5 */ be_nested_str_weak(lvh_pages), + /* K6 */ be_nested_str_weak(r), + /* K7 */ be_nested_str_weak(read), + /* K8 */ be_nested_str_weak(close), + /* K9 */ be_nested_str_weak(split), + /* K10 */ be_nested_str_weak(_X0A), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(load), + /* K13 */ be_nested_str_weak(instance), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(loglevel), + /* K16 */ be_nested_str_weak(log), + /* K17 */ be_nested_str_weak(HSP_X3A_X20parsing_X20line_X20_X27_X25s_X27), + /* K18 */ be_nested_str_weak(parse_page), + /* K19 */ be_nested_str_weak(parse_obj), + /* K20 */ be_nested_str_weak(tr), + /* K21 */ be_nested_str_weak(_X20_X09), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(HSP_X3A_X20invalid_X20JSON_X20line_X20_X27_X25s_X27), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str_weak(remove), + /* K26 */ be_nested_str_weak(pages_list_sorted), + /* K27 */ be_nested_str_weak(prev), + /* K28 */ be_nested_str_weak(next), + /* K29 */ be_nested_str_weak(back), + /* K30 */ be_nested_str_weak(re_page_target), + /* K31 */ be_nested_str_weak(match), + /* K32 */ be_nested_str_weak(show), + /* K33 */ be_nested_str_weak(fix_lv_version), + /* K34 */ be_nested_str_weak(re), + /* K35 */ be_nested_str_weak(compile), + /* K36 */ be_nested_str_weak(p_X5Cd_X2B), + /* K37 */ be_nested_str_weak(introspect), + /* K38 */ be_nested_str_weak(toptr), + /* K39 */ be_nested_str_weak(event), + /* K40 */ be_nested_str_weak(_p), + /* K41 */ be_nested_str_weak(lv), + /* K42 */ be_nested_str_weak(lv_event), + /* K43 */ be_nested_str_weak(get_user_data), + /* K44 */ be_nested_str_weak(fromptr), + /* K45 */ be_nested_str_weak(event_cb), + /* K46 */ be_nested_str_weak(keys), + /* K47 */ be_nested_str_weak(push), + /* K48 */ be_nested_str_weak(stop_iteration), + /* K49 */ be_nested_str_weak(sort), + /* K50 */ be_nested_str_weak(find), + /* K51 */ be_const_class(be_class_HASPmota), + /* K52 */ be_nested_str_weak(get), + /* K53 */ be_nested_str_weak(version), + /* K54 */ be_nested_str_weak(int), + /* K55 */ be_nested_str_weak(EVENT_CLICKED), + /* K56 */ be_nested_str_weak(page_show), + /* K57 */ be_nested_str_weak(_action), + /* K58 */ be_nested_str_weak(value_error), + /* K59 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line), + /* K60 */ be_nested_str_weak(cb), + /* K61 */ be_nested_str_weak(gen_cb), + /* K62 */ be_nested_str_weak(_lv_obj), + /* K63 */ be_nested_str_weak(add_event_cb), + /* K64 */ be_const_int(0), + /* K65 */ be_const_int(1), + /* K66 */ be_nested_str_weak(has), + /* K67 */ be_nested_str_weak(page), + /* K68 */ be_nested_str_weak(contains), + /* K69 */ be_nested_str_weak(id), + /* K70 */ be_nested_str_weak(get_page_cur), + /* K71 */ be_nested_str_weak(path), + /* K72 */ be_nested_str_weak(def_templ_name), + /* K73 */ be_nested_str_weak(exists), + /* K74 */ be_nested_str_weak(file_X20_X27), + /* K75 */ be_nested_str_weak(_X27_X20not_X20found), + /* K76 */ be_nested_str_weak(io_erorr), + /* K77 */ be_nested_str_weak(start), + /* K78 */ be_nested_str_weak(dark), + /* K79 */ be_nested_str_weak(hres), + /* K80 */ be_nested_str_weak(get_hor_res), + /* K81 */ be_nested_str_weak(vres), + /* K82 */ be_nested_str_weak(get_ver_res), + /* K83 */ be_nested_str_weak(scr), + /* K84 */ be_nested_str_weak(scr_act), + /* K85 */ be_nested_str_weak(r16), + /* K86 */ be_nested_str_weak(font_embedded), + /* K87 */ be_nested_str_weak(robotocondensed), + /* K88 */ be_nested_str_weak(montserrat), + /* K89 */ be_nested_str_weak(theme_haspmota_init), + /* K90 */ be_nested_str_weak(color), + /* K91 */ be_const_int(16711935), + /* K92 */ be_const_int(3158064), + /* K93 */ be_nested_str_weak(get_disp), + /* K94 */ be_nested_str_weak(set_theme), + /* K95 */ be_nested_str_weak(set_style_bg_color), + /* K96 */ be_const_int(16777215), + /* K97 */ be_nested_str_weak(theme_apply), + /* K98 */ be_nested_str_weak(layer_top), + /* K99 */ be_nested_str_weak(set_style_bg_opa), + /* K100 */ be_nested_str_weak(_load), + /* K101 */ be_nested_str_weak(global), + /* K102 */ be_nested_str_weak(obj), + /* K103 */ be_nested_str_weak(berry_run), + /* K104 */ be_nested_str_weak(nil), + /* K105 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K106 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20), + /* K107 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A), + /* K108 */ be_nested_str_weak(parentid), + /* K109 */ be_nested_str_weak(get_obj), + /* K110 */ be_nested_str_weak(get_scr), + /* K111 */ be_nested_str_weak(lvh_), + /* K112 */ be_nested_str_weak(class), + /* K113 */ be_nested_str_weak(lvh_obj), + /* K114 */ be_nested_str_weak(module), + /* K115 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20), + /* K116 */ be_nested_str_weak(add_obj), + /* K117 */ be_nested_str_weak(function), + /* K118 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K119 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0), + /* K120 */ be_nested_str_weak(post_config), +}; + extern const bclass be_class_HASPmota; @@ -9991,40 +9662,13 @@ be_local_closure(class_HASPmota__load, /* name */ be_nested_proto( 15, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(json), - /* K2 */ be_nested_str_weak(lvh_page_cur_idx), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(lvh_page), - /* K5 */ be_nested_str_weak(lvh_pages), - /* K6 */ be_nested_str_weak(r), - /* K7 */ be_nested_str_weak(read), - /* K8 */ be_nested_str_weak(close), - /* K9 */ be_nested_str_weak(split), - /* K10 */ be_nested_str_weak(_X0A), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(load), - /* K13 */ be_nested_str_weak(instance), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(loglevel), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(HSP_X3A_X20parsing_X20line_X20_X27_X25s_X27), - /* K18 */ be_nested_str_weak(parse_page), - /* K19 */ be_nested_str_weak(parse_obj), - /* K20 */ be_nested_str_weak(tr), - /* K21 */ be_nested_str_weak(_X20_X09), - /* K22 */ be_nested_str_weak(), - /* K23 */ be_nested_str_weak(HSP_X3A_X20invalid_X20JSON_X20line_X20_X27_X25s_X27), - /* K24 */ be_const_int(2), - /* K25 */ be_nested_str_weak(remove), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(_load), &be_const_str_solidified, ( &(const binstruction[85]) { /* code */ @@ -10126,34 +9770,22 @@ be_local_closure(class_HASPmota_page_show, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(lvh_pages), - /* K1 */ be_nested_str_weak(lvh_page_cur_idx), - /* K2 */ be_nested_str_weak(pages_list_sorted), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(prev), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(back), - /* K7 */ be_nested_str_weak(re_page_target), - /* K8 */ be_nested_str_weak(match), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(show), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(page_show), &be_const_str_solidified, ( &(const binstruction[68]) { /* code */ 0x4C080000, // 0000 LDNIL R2 - 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x880C0105, // 0001 GETMBR R3 R0 K5 + 0x88100102, // 0002 GETMBR R4 R0 K2 0x940C0604, // 0003 GETIDX R3 R3 R4 - 0x8C100102, // 0004 GETMET R4 R0 K2 - 0x88180101, // 0005 GETMBR R6 R0 K1 + 0x8C10011A, // 0004 GETMET R4 R0 K26 + 0x88180102, // 0005 GETMBR R6 R0 K2 0x7C100400, // 0006 CALL R4 2 0x6014000C, // 0007 GETGBL R5 G12 0x5C180800, // 0008 MOVE R6 R4 @@ -10161,10 +9793,10 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x18140B03, // 000A LE R5 R5 K3 0x78160000, // 000B JMPF R5 #000D 0x80000A00, // 000C RET 0 - 0x1C140304, // 000D EQ R5 R1 K4 + 0x1C14031B, // 000D EQ R5 R1 K27 0x78160009, // 000E JMPF R5 #0019 0x60140009, // 000F GETGBL R5 G9 - 0x88180704, // 0010 GETMBR R6 R3 K4 + 0x8818071B, // 0010 GETMBR R6 R3 K27 0x7C140200, // 0011 CALL R5 1 0x5C080A00, // 0012 MOVE R2 R5 0x4C140000, // 0013 LDNIL R5 @@ -10173,10 +9805,10 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x5415FFFE, // 0016 LDINT R5 -1 0x94080805, // 0017 GETIDX R2 R4 R5 0x70020020, // 0018 JMP #003A - 0x1C140305, // 0019 EQ R5 R1 K5 + 0x1C14031C, // 0019 EQ R5 R1 K28 0x78160008, // 001A JMPF R5 #0024 0x60140009, // 001B GETGBL R5 G9 - 0x88180705, // 001C GETMBR R6 R3 K5 + 0x8818071C, // 001C GETMBR R6 R3 K28 0x7C140200, // 001D CALL R5 1 0x5C080A00, // 001E MOVE R2 R5 0x4C140000, // 001F LDNIL R5 @@ -10184,10 +9816,10 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x78160000, // 0021 JMPF R5 #0023 0x94080903, // 0022 GETIDX R2 R4 K3 0x70020015, // 0023 JMP #003A - 0x1C140306, // 0024 EQ R5 R1 K6 + 0x1C14031D, // 0024 EQ R5 R1 K29 0x78160008, // 0025 JMPF R5 #002F 0x60140009, // 0026 GETGBL R5 G9 - 0x88180706, // 0027 GETMBR R6 R3 K6 + 0x8818071D, // 0027 GETMBR R6 R3 K29 0x7C140200, // 0028 CALL R5 1 0x5C080A00, // 0029 MOVE R2 R5 0x4C140000, // 002A LDNIL R5 @@ -10195,8 +9827,8 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x78160000, // 002C JMPF R5 #002E 0x58080003, // 002D LDCONST R2 K3 0x7002000A, // 002E JMP #003A - 0x88140107, // 002F GETMBR R5 R0 K7 - 0x8C140B08, // 0030 GETMET R5 R5 K8 + 0x8814011E, // 002F GETMBR R5 R0 K30 + 0x8C140B1F, // 0030 GETMET R5 R5 K31 0x5C1C0200, // 0031 MOVE R7 R1 0x7C140400, // 0032 CALL R5 2 0x78160005, // 0033 JMPF R5 #003A @@ -10209,11 +9841,11 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x4C140000, // 003A LDNIL R5 0x20140405, // 003B NE R5 R2 R5 0x78160005, // 003C JMPF R5 #0043 - 0x24140509, // 003D GT R5 R2 K9 + 0x2414050B, // 003D GT R5 R2 K11 0x78160003, // 003E JMPF R5 #0043 - 0x88140100, // 003F GETMBR R5 R0 K0 + 0x88140105, // 003F GETMBR R5 R0 K5 0x94140A02, // 0040 GETIDX R5 R5 R2 - 0x8C140B0A, // 0041 GETMET R5 R5 K10 + 0x8C140B20, // 0041 GETMET R5 R5 K32 0x7C140200, // 0042 CALL R5 1 0x80000000, // 0043 RET 0 }) @@ -10229,29 +9861,23 @@ be_local_closure(class_HASPmota_init, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(fix_lv_version), - /* K1 */ be_nested_str_weak(re), - /* K2 */ be_nested_str_weak(re_page_target), - /* K3 */ be_nested_str_weak(compile), - /* K4 */ be_nested_str_weak(p_X5Cd_X2B), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x8C040121, // 0000 GETMET R1 R0 K33 0x7C040200, // 0001 CALL R1 1 - 0xA4060200, // 0002 IMPORT R1 K1 - 0x8C080303, // 0003 GETMET R2 R1 K3 - 0x58100004, // 0004 LDCONST R4 K4 + 0xA4064400, // 0002 IMPORT R1 K34 + 0x8C080323, // 0003 GETMET R2 R1 K35 + 0x58100024, // 0004 LDCONST R4 K36 0x7C080400, // 0005 CALL R2 2 - 0x90020402, // 0006 SETMBR R0 K2 R2 + 0x90023C02, // 0006 SETMBR R0 K30 R2 0x80000000, // 0007 RET 0 }) ) @@ -10266,60 +9892,48 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(toptr), - /* K2 */ be_nested_str_weak(event), - /* K3 */ be_nested_str_weak(_p), - /* K4 */ be_nested_str_weak(lv), - /* K5 */ be_nested_str_weak(lv_event), - /* K6 */ be_nested_str_weak(get_user_data), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(fromptr), - /* K9 */ be_nested_str_weak(instance), - /* K10 */ be_nested_str_weak(event_cb), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(event_dispatch), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0xA40A4A00, // 0000 IMPORT R2 K37 + 0x8C0C0526, // 0001 GETMET R3 R2 K38 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 - 0x88100102, // 0004 GETMBR R4 R0 K2 + 0x88100127, // 0004 GETMBR R4 R0 K39 0x78120002, // 0005 JMPF R4 #0009 - 0x88100102, // 0006 GETMBR R4 R0 K2 - 0x90120603, // 0007 SETMBR R4 K3 R3 + 0x88100127, // 0006 GETMBR R4 R0 K39 + 0x90125003, // 0007 SETMBR R4 K40 R3 0x70020004, // 0008 JMP #000E - 0xB8120800, // 0009 GETNGBL R4 K4 - 0x8C100905, // 000A GETMET R4 R4 K5 + 0xB8125200, // 0009 GETNGBL R4 K41 + 0x8C10092A, // 000A GETMET R4 R4 K42 0x5C180600, // 000B MOVE R6 R3 0x7C100400, // 000C CALL R4 2 - 0x90020404, // 000D SETMBR R0 K2 R4 - 0x88100102, // 000E GETMBR R4 R0 K2 - 0x8C100906, // 000F GETMET R4 R4 K6 + 0x90024E04, // 000D SETMBR R0 K39 R4 + 0x88100127, // 000E GETMBR R4 R0 K39 + 0x8C10092B, // 000F GETMET R4 R4 K43 0x7C100200, // 0010 CALL R4 1 0x60140009, // 0011 GETGBL R5 G9 0x5C180800, // 0012 MOVE R6 R4 0x7C140200, // 0013 CALL R5 1 - 0x20140B07, // 0014 NE R5 R5 K7 + 0x20140B0B, // 0014 NE R5 R5 K11 0x7816000A, // 0015 JMPF R5 #0021 - 0x8C140508, // 0016 GETMET R5 R2 K8 + 0x8C14052C, // 0016 GETMET R5 R2 K44 0x5C1C0800, // 0017 MOVE R7 R4 0x7C140400, // 0018 CALL R5 2 0x60180004, // 0019 GETGBL R6 G4 0x5C1C0A00, // 001A MOVE R7 R5 0x7C180200, // 001B CALL R6 1 - 0x1C180D09, // 001C EQ R6 R6 K9 + 0x1C180D0D, // 001C EQ R6 R6 K13 0x781A0002, // 001D JMPF R6 #0021 - 0x8C180B0A, // 001E GETMET R6 R5 K10 - 0x88200102, // 001F GETMBR R8 R0 K2 + 0x8C180B2D, // 001E GETMET R6 R5 K45 + 0x88200127, // 001F GETMBR R8 R0 K39 0x7C180400, // 0020 CALL R6 2 0x80000000, // 0021 RET 0 }) @@ -10335,49 +9949,39 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(lvh_page_cur_idx), - /* K2 */ be_nested_str_weak(lvh_pages), - /* K3 */ be_nested_str_weak(keys), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(stop_iteration), - /* K6 */ be_nested_str_weak(sort), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_const_int(1), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(pages_list_sorted), &be_const_str_solidified, ( &(const binstruction[47]) { /* code */ 0x60080012, // 0000 GETGBL R2 G18 0x7C080000, // 0001 CALL R2 0 - 0x1C0C0300, // 0002 EQ R3 R1 K0 + 0x1C0C030B, // 0002 EQ R3 R1 K11 0x780E0000, // 0003 JMPF R3 #0005 - 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x88040102, // 0004 GETMBR R1 R0 K2 0x600C0010, // 0005 GETGBL R3 G16 - 0x88100102, // 0006 GETMBR R4 R0 K2 - 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x88100105, // 0006 GETMBR R4 R0 K5 + 0x8C10092E, // 0007 GETMET R4 R4 K46 0x7C100200, // 0008 CALL R4 1 0x7C0C0200, // 0009 CALL R3 1 0xA8020007, // 000A EXBLK 0 #0013 0x5C100600, // 000B MOVE R4 R3 0x7C100000, // 000C CALL R4 0 - 0x20140900, // 000D NE R5 R4 K0 + 0x2014090B, // 000D NE R5 R4 K11 0x78160002, // 000E JMPF R5 #0012 - 0x8C140504, // 000F GETMET R5 R2 K4 + 0x8C14052F, // 000F GETMET R5 R2 K47 0x5C1C0800, // 0010 MOVE R7 R4 0x7C140400, // 0011 CALL R5 2 0x7001FFF7, // 0012 JMP #000B - 0x580C0005, // 0013 LDCONST R3 K5 + 0x580C0030, // 0013 LDCONST R3 K48 0xAC0C0200, // 0014 CATCH R3 1 0 0xB0080000, // 0015 RAISE 2 R0 R0 - 0x8C0C0106, // 0016 GETMET R3 R0 K6 + 0x8C0C0131, // 0016 GETMET R3 R0 K49 0x5C140400, // 0017 MOVE R5 R2 0x7C0C0400, // 0018 CALL R3 2 0x5C080600, // 0019 MOVE R2 R3 @@ -10389,7 +9993,7 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ 0x5C100400, // 001F MOVE R4 R2 0x7C0C0200, // 0020 CALL R3 1 0x00080402, // 0021 ADD R2 R2 R2 - 0x8C100507, // 0022 GETMET R4 R2 K7 + 0x8C100532, // 0022 GETMET R4 R2 K50 0x5C180200, // 0023 MOVE R6 R1 0x7C100400, // 0024 CALL R4 2 0x4C140000, // 0025 LDNIL R5 @@ -10398,7 +10002,7 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ 0x4C140000, // 0028 LDNIL R5 0x80040A00, // 0029 RET 1 R5 0x00140803, // 002A ADD R5 R4 R3 - 0x04140B08, // 002B SUB R5 R5 K8 + 0x04140B03, // 002B SUB R5 R5 K3 0x40140805, // 002C CONNECT R5 R4 R5 0x94080405, // 002D GETIDX R2 R2 R5 0x80040400, // 002E RET 1 R2 @@ -10415,21 +10019,18 @@ be_local_closure(class_HASPmota_get_page_cur, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(lvh_pages), - /* K1 */ be_nested_str_weak(lvh_page_cur_idx), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(get_page_cur), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x88040105, // 0000 GETMBR R1 R0 K5 + 0x88080102, // 0001 GETMBR R2 R0 K2 0x94040202, // 0002 GETIDX R1 R1 R2 0x80040200, // 0003 RET 1 R1 }) @@ -10445,37 +10046,30 @@ be_local_closure(class_HASPmota_fix_lv_version, /* name */ be_nested_proto( 6, /* nstack */ 0, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_class(be_class_HASPmota), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_nested_str_weak(lv), - /* K4 */ be_nested_str_weak(version), - /* K5 */ be_nested_str_weak(int), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(fix_lv_version), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x58000000, // 0000 LDCONST R0 K0 - 0xA4060200, // 0001 IMPORT R1 K1 - 0x8C080302, // 0002 GETMET R2 R1 K2 - 0xB8120600, // 0003 GETNGBL R4 K3 - 0x58140004, // 0004 LDCONST R5 K4 + 0x58000033, // 0000 LDCONST R0 K51 + 0xA4064A00, // 0001 IMPORT R1 K37 + 0x8C080334, // 0002 GETMET R2 R1 K52 + 0xB8125200, // 0003 GETNGBL R4 K41 + 0x58140035, // 0004 LDCONST R5 K53 0x7C080600, // 0005 CALL R2 3 0x600C0004, // 0006 GETGBL R3 G4 0x5C100400, // 0007 MOVE R4 R2 0x7C0C0200, // 0008 CALL R3 1 - 0x200C0705, // 0009 NE R3 R3 K5 + 0x200C0736, // 0009 NE R3 R3 K54 0x780E0002, // 000A JMPF R3 #000E - 0xB80E0600, // 000B GETNGBL R3 K3 + 0xB80E5200, // 000B GETNGBL R3 K41 0x54120007, // 000C LDINT R4 8 - 0x900E0804, // 000D SETMBR R3 K4 R4 + 0x900E6A04, // 000D SETMBR R3 K53 R4 0x80000000, // 000E RET 0 }) ) @@ -10490,28 +10084,23 @@ be_local_closure(class_HASPmota_do_action, /* name */ be_nested_proto( 6, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(lv), - /* K1 */ be_nested_str_weak(EVENT_CLICKED), - /* K2 */ be_nested_str_weak(page_show), - /* K3 */ be_nested_str_weak(_action), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(do_action), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x880C0701, // 0001 GETMBR R3 R3 K1 + 0xB80E5200, // 0000 GETNGBL R3 K41 + 0x880C0737, // 0001 GETMBR R3 R3 K55 0x200C0403, // 0002 NE R3 R2 R3 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 - 0x8C0C0102, // 0005 GETMET R3 R0 K2 - 0x88140303, // 0006 GETMBR R5 R1 K3 + 0x8C0C0138, // 0005 GETMET R3 R0 K56 + 0x88140339, // 0006 GETMBR R5 R1 K57 0x7C0C0400, // 0007 CALL R3 2 0x80000000, // 0008 RET 0 }) @@ -10527,46 +10116,36 @@ be_local_closure(class_HASPmota_parse, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(load), - /* K2 */ be_nested_str_weak(instance), - /* K3 */ be_nested_str_weak(parse_page), - /* K4 */ be_nested_str_weak(parse_obj), - /* K5 */ be_nested_str_weak(lvh_pages), - /* K6 */ be_nested_str_weak(lvh_page_cur_idx), - /* K7 */ be_nested_str_weak(value_error), - /* K8 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(parse), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0xA40A0200, // 0000 IMPORT R2 K1 + 0x8C0C050C, // 0001 GETMET R3 R2 K12 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x60100004, // 0004 GETGBL R4 G4 0x5C140600, // 0005 MOVE R5 R3 0x7C100200, // 0006 CALL R4 1 - 0x1C100902, // 0007 EQ R4 R4 K2 + 0x1C10090D, // 0007 EQ R4 R4 K13 0x78120009, // 0008 JMPF R4 #0013 - 0x8C100103, // 0009 GETMET R4 R0 K3 + 0x8C100112, // 0009 GETMET R4 R0 K18 0x5C180600, // 000A MOVE R6 R3 0x7C100400, // 000B CALL R4 2 - 0x8C100104, // 000C GETMET R4 R0 K4 + 0x8C100113, // 000C GETMET R4 R0 K19 0x5C180600, // 000D MOVE R6 R3 0x881C0105, // 000E GETMBR R7 R0 K5 - 0x88200106, // 000F GETMBR R8 R0 K6 + 0x88200102, // 000F GETMBR R8 R0 K2 0x941C0E08, // 0010 GETIDX R7 R7 R8 0x7C100600, // 0011 CALL R4 3 0x70020000, // 0012 JMP #0014 - 0xB0060F08, // 0013 RAISE 1 K7 K8 + 0xB006753B, // 0013 RAISE 1 K58 K59 0x80000000, // 0014 RET 0 }) ) @@ -10581,7 +10160,7 @@ be_local_closure(class_HASPmota_register_event, /* name */ be_nested_proto( 13, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -10612,33 +10191,25 @@ be_local_closure(class_HASPmota_register_event, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(cb), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(event_cb), - /* K3 */ be_nested_str_weak(gen_cb), - /* K4 */ be_nested_str_weak(_lv_obj), - /* K5 */ be_nested_str_weak(add_event_cb), - /* K6 */ be_nested_str_weak(toptr), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(register_event), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 + 0xA40E7800, // 0000 IMPORT R3 K60 + 0xA4124A00, // 0001 IMPORT R4 K37 + 0x8814012D, // 0002 GETMBR R5 R0 K45 0x4C180000, // 0003 LDNIL R6 0x1C140A06, // 0004 EQ R5 R5 R6 0x78160003, // 0005 JMPF R5 #000A - 0x8C140703, // 0006 GETMET R5 R3 K3 + 0x8C14073D, // 0006 GETMET R5 R3 K61 0x841C0000, // 0007 CLOSURE R7 P0 0x7C140400, // 0008 CALL R5 2 - 0x90020405, // 0009 SETMBR R0 K2 R5 - 0x88140304, // 000A GETMBR R5 R1 K4 - 0x8C180B05, // 000B GETMET R6 R5 K5 - 0x88200102, // 000C GETMBR R8 R0 K2 + 0x90025A05, // 0009 SETMBR R0 K45 R5 + 0x8814033E, // 000A GETMBR R5 R1 K62 + 0x8C180B3F, // 000B GETMET R6 R5 K63 + 0x8820012D, // 000C GETMBR R8 R0 K45 0x5C240400, // 000D MOVE R9 R2 - 0x8C280906, // 000E GETMET R10 R4 K6 + 0x8C280926, // 000E GETMET R10 R4 K38 0x5C300200, // 000F MOVE R12 R1 0x7C280400, // 0010 CALL R10 2 0x7C180800, // 0011 CALL R6 4 @@ -10657,50 +10228,44 @@ be_local_closure(class_HASPmota_page_dir_to, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(pages_list_sorted), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(find), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(page_dir_to), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x58100001, // 0001 LDCONST R4 K1 + 0x8C08011A, // 0000 GETMET R2 R0 K26 + 0x58100040, // 0001 LDCONST R4 K64 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x1C0C0403, // 0004 EQ R3 R2 R3 0x780E0000, // 0005 JMPF R3 #0007 - 0x80060200, // 0006 RET 1 K1 + 0x80068000, // 0006 RET 1 K64 0x600C000C, // 0007 GETGBL R3 G12 0x5C100400, // 0008 MOVE R4 R2 0x7C0C0200, // 0009 CALL R3 1 - 0x18100702, // 000A LE R4 R3 K2 + 0x18100741, // 000A LE R4 R3 K65 0x78120000, // 000B JMPF R4 #000D - 0x80060200, // 000C RET 1 K1 - 0x1C100703, // 000D EQ R4 R3 K3 + 0x80068000, // 000C RET 1 K64 + 0x1C100718, // 000D EQ R4 R3 K24 0x78120000, // 000E JMPF R4 #0010 - 0x80060400, // 000F RET 1 K2 - 0x8C100504, // 0010 GETMET R4 R2 K4 + 0x80068200, // 000F RET 1 K65 + 0x8C100532, // 0010 GETMET R4 R2 K50 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x4C140000, // 0013 LDNIL R5 0x1C140805, // 0014 EQ R5 R4 R5 0x78160000, // 0015 JMPF R5 #0017 - 0x80060200, // 0016 RET 1 K1 - 0x00140702, // 0017 ADD R5 R3 K2 - 0x0C140B03, // 0018 DIV R5 R5 K3 + 0x80068000, // 0016 RET 1 K64 + 0x00140741, // 0017 ADD R5 R3 K65 + 0x0C140B18, // 0018 DIV R5 R5 K24 0x18140805, // 0019 LE R5 R4 R5 0x78160001, // 001A JMPF R5 #001D - 0x80060400, // 001B RET 1 K2 + 0x80068200, // 001B RET 1 K65 0x70020001, // 001C JMP #001F 0x5415FFFE, // 001D LDINT R5 -1 0x80040A00, // 001E RET 1 R5 @@ -10718,84 +10283,69 @@ be_local_closure(class_HASPmota_parse_page, /* name */ be_nested_proto( 9, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(has), - /* K1 */ be_nested_str_weak(page), - /* K2 */ be_nested_str_weak(int), - /* K3 */ be_nested_str_weak(lvh_page_cur_idx), - /* K4 */ be_nested_str_weak(lvh_pages), - /* K5 */ be_nested_str_weak(contains), - /* K6 */ be_nested_str_weak(lvh_page), - /* K7 */ be_nested_str_weak(find), - /* K8 */ be_nested_str_weak(id), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(get_page_cur), - /* K11 */ be_nested_str_weak(prev), - /* K12 */ be_nested_str_weak(next), - /* K13 */ be_nested_str_weak(back), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(parse_page), &be_const_str_solidified, ( &(const binstruction[54]) { /* code */ - 0x8C080300, // 0000 GETMET R2 R1 K0 - 0x58100001, // 0001 LDCONST R4 K1 + 0x8C080342, // 0000 GETMET R2 R1 K66 + 0x58100043, // 0001 LDCONST R4 K67 0x7C080400, // 0002 CALL R2 2 0x780A0030, // 0003 JMPF R2 #0035 0x60080004, // 0004 GETGBL R2 G4 - 0x940C0301, // 0005 GETIDX R3 R1 K1 + 0x940C0343, // 0005 GETIDX R3 R1 K67 0x7C080200, // 0006 CALL R2 1 - 0x1C080502, // 0007 EQ R2 R2 K2 + 0x1C080536, // 0007 EQ R2 R2 K54 0x780A002B, // 0008 JMPF R2 #0035 0x60080009, // 0009 GETGBL R2 G9 - 0x940C0301, // 000A GETIDX R3 R1 K1 + 0x940C0343, // 000A GETIDX R3 R1 K67 0x7C080200, // 000B CALL R2 1 - 0x90020602, // 000C SETMBR R0 K3 R2 - 0x880C0104, // 000D GETMBR R3 R0 K4 - 0x8C0C0705, // 000E GETMET R3 R3 K5 + 0x90020402, // 000C SETMBR R0 K2 R2 + 0x880C0105, // 000D GETMBR R3 R0 K5 + 0x8C0C0744, // 000E GETMET R3 R3 K68 0x5C140400, // 000F MOVE R5 R2 0x7C0C0400, // 0010 CALL R3 2 0x740E0006, // 0011 JMPT R3 #0019 - 0x880C0106, // 0012 GETMBR R3 R0 K6 - 0x88100104, // 0013 GETMBR R4 R0 K4 + 0x880C0104, // 0012 GETMBR R3 R0 K4 + 0x88100105, // 0013 GETMBR R4 R0 K5 0x5C140600, // 0014 MOVE R5 R3 0x5C180400, // 0015 MOVE R6 R2 0x5C1C0000, // 0016 MOVE R7 R0 0x7C140400, // 0017 CALL R5 2 0x98100405, // 0018 SETIDX R4 R2 R5 - 0x8C0C0307, // 0019 GETMET R3 R1 K7 - 0x58140008, // 001A LDCONST R5 K8 + 0x8C0C0332, // 0019 GETMET R3 R1 K50 + 0x58140045, // 001A LDCONST R5 K69 0x7C0C0400, // 001B CALL R3 2 - 0x1C0C0709, // 001C EQ R3 R3 K9 + 0x1C0C070B, // 001C EQ R3 R3 K11 0x780E0016, // 001D JMPF R3 #0035 - 0x8C0C010A, // 001E GETMET R3 R0 K10 + 0x8C0C0146, // 001E GETMET R3 R0 K70 0x7C0C0200, // 001F CALL R3 1 0x60100009, // 0020 GETGBL R4 G9 - 0x8C140307, // 0021 GETMET R5 R1 K7 - 0x581C000B, // 0022 LDCONST R7 K11 + 0x8C140332, // 0021 GETMET R5 R1 K50 + 0x581C001B, // 0022 LDCONST R7 K27 0x4C200000, // 0023 LDNIL R8 0x7C140600, // 0024 CALL R5 3 0x7C100200, // 0025 CALL R4 1 - 0x900E1604, // 0026 SETMBR R3 K11 R4 + 0x900E3604, // 0026 SETMBR R3 K27 R4 0x60100009, // 0027 GETGBL R4 G9 - 0x8C140307, // 0028 GETMET R5 R1 K7 - 0x581C000C, // 0029 LDCONST R7 K12 + 0x8C140332, // 0028 GETMET R5 R1 K50 + 0x581C001C, // 0029 LDCONST R7 K28 0x4C200000, // 002A LDNIL R8 0x7C140600, // 002B CALL R5 3 0x7C100200, // 002C CALL R4 1 - 0x900E1804, // 002D SETMBR R3 K12 R4 + 0x900E3804, // 002D SETMBR R3 K28 R4 0x60100009, // 002E GETGBL R4 G9 - 0x8C140307, // 002F GETMET R5 R1 K7 - 0x581C000D, // 0030 LDCONST R7 K13 + 0x8C140332, // 002F GETMET R5 R1 K50 + 0x581C001D, // 0030 LDCONST R7 K29 0x4C200000, // 0031 LDNIL R8 0x7C140600, // 0032 CALL R5 3 0x7C100200, // 0033 CALL R4 1 - 0x900E1A04, // 0034 SETMBR R3 K13 R4 + 0x900E3A04, // 0034 SETMBR R3 K29 R4 0x80000000, // 0035 RET 0 }) ) @@ -10810,48 +10360,43 @@ be_local_closure(class_HASPmota_sort, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ - 4, /* varg */ + 12, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_class(be_class_HASPmota), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(stop_iteration), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(sort), &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 + 0x58040033, // 0000 LDCONST R1 K51 0x60080010, // 0001 GETGBL R2 G16 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0701, // 0005 SUB R3 R3 K1 - 0x400E0203, // 0006 CONNECT R3 K1 R3 + 0x040C0741, // 0005 SUB R3 R3 K65 + 0x400E8203, // 0006 CONNECT R3 K65 R3 0x7C080200, // 0007 CALL R2 1 0xA8020010, // 0008 EXBLK 0 #001A 0x5C0C0400, // 0009 MOVE R3 R2 0x7C0C0000, // 000A CALL R3 0 0x94100003, // 000B GETIDX R4 R0 R3 0x5C140600, // 000C MOVE R5 R3 - 0x24180B02, // 000D GT R6 R5 K2 + 0x24180B0B, // 000D GT R6 R5 K11 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B01, // 000F SUB R6 R5 K1 + 0x04180B41, // 000F SUB R6 R5 K65 0x94180006, // 0010 GETIDX R6 R0 R6 0x24180C04, // 0011 GT R6 R6 R4 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B01, // 0013 SUB R6 R5 K1 + 0x04180B41, // 0013 SUB R6 R5 K65 0x94180006, // 0014 GETIDX R6 R0 R6 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B01, // 0016 SUB R5 R5 K1 + 0x04140B41, // 0016 SUB R5 R5 K65 0x7001FFF4, // 0017 JMP #000D 0x98000A04, // 0018 SETIDX R0 R5 R4 0x7001FFEE, // 0019 JMP #0009 - 0x58080003, // 001A LDCONST R2 K3 + 0x58080030, // 001A LDCONST R2 K48 0xAC080200, // 001B CATCH R2 1 0 0xB0080000, // 001C RAISE 2 R0 R0 0x80040000, // 001D RET 1 R0 @@ -10868,152 +10413,118 @@ be_local_closure(class_HASPmota_start, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ - /* K0 */ be_nested_str_weak(path), - /* K1 */ be_nested_str_weak(def_templ_name), - /* K2 */ be_nested_str_weak(exists), - /* K3 */ be_nested_str_weak(file_X20_X27), - /* K4 */ be_nested_str_weak(_X27_X20not_X20found), - /* K5 */ be_nested_str_weak(io_erorr), - /* K6 */ be_nested_str_weak(lv), - /* K7 */ be_nested_str_weak(start), - /* K8 */ be_nested_str_weak(dark), - /* K9 */ be_nested_str_weak(hres), - /* K10 */ be_nested_str_weak(get_hor_res), - /* K11 */ be_nested_str_weak(vres), - /* K12 */ be_nested_str_weak(get_ver_res), - /* K13 */ be_nested_str_weak(scr), - /* K14 */ be_nested_str_weak(scr_act), - /* K15 */ be_nested_str_weak(r16), - /* K16 */ be_nested_str_weak(font_embedded), - /* K17 */ be_nested_str_weak(robotocondensed), - /* K18 */ be_nested_str_weak(montserrat), - /* K19 */ be_nested_str_weak(theme_haspmota_init), - /* K20 */ be_const_int(0), - /* K21 */ be_nested_str_weak(color), - /* K22 */ be_const_int(16711935), - /* K23 */ be_const_int(3158064), - /* K24 */ be_nested_str_weak(get_disp), - /* K25 */ be_nested_str_weak(set_theme), - /* K26 */ be_nested_str_weak(set_style_bg_color), - /* K27 */ be_const_int(16777215), - /* K28 */ be_nested_str_weak(theme_apply), - /* K29 */ be_nested_str_weak(layer_top), - /* K30 */ be_nested_str_weak(set_style_bg_opa), - /* K31 */ be_nested_str_weak(lvh_pages), - /* K32 */ be_nested_str_weak(_load), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[105]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 + 0xA40E8E00, // 0000 IMPORT R3 K71 0x4C100000, // 0001 LDNIL R4 0x1C100404, // 0002 EQ R4 R2 R4 0x78120000, // 0003 JMPF R4 #0005 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C100702, // 0005 GETMET R4 R3 K2 + 0x88080148, // 0004 GETMBR R2 R0 K72 + 0x8C100749, // 0005 GETMET R4 R3 K73 0x5C180400, // 0006 MOVE R6 R2 0x7C100400, // 0007 CALL R4 2 0x74120002, // 0008 JMPT R4 #000C - 0x00120602, // 0009 ADD R4 K3 R2 - 0x00100904, // 000A ADD R4 R4 K4 - 0xB0060A04, // 000B RAISE 1 K5 R4 - 0xB8120C00, // 000C GETNGBL R4 K6 - 0x8C100907, // 000D GETMET R4 R4 K7 + 0x00129402, // 0009 ADD R4 K74 R2 + 0x0010094B, // 000A ADD R4 R4 K75 + 0xB0069804, // 000B RAISE 1 K76 R4 + 0xB8125200, // 000C GETNGBL R4 K41 + 0x8C10094D, // 000D GETMET R4 R4 K77 0x7C100200, // 000E CALL R4 1 0x60100017, // 000F GETGBL R4 G23 0x5C140200, // 0010 MOVE R5 R1 0x7C100200, // 0011 CALL R4 1 - 0x90021004, // 0012 SETMBR R0 K8 R4 - 0xB8120C00, // 0013 GETNGBL R4 K6 - 0x8C10090A, // 0014 GETMET R4 R4 K10 + 0x90029C04, // 0012 SETMBR R0 K78 R4 + 0xB8125200, // 0013 GETNGBL R4 K41 + 0x8C100950, // 0014 GETMET R4 R4 K80 0x7C100200, // 0015 CALL R4 1 - 0x90021204, // 0016 SETMBR R0 K9 R4 - 0xB8120C00, // 0017 GETNGBL R4 K6 - 0x8C10090C, // 0018 GETMET R4 R4 K12 + 0x90029E04, // 0016 SETMBR R0 K79 R4 + 0xB8125200, // 0017 GETNGBL R4 K41 + 0x8C100952, // 0018 GETMET R4 R4 K82 0x7C100200, // 0019 CALL R4 1 - 0x90021604, // 001A SETMBR R0 K11 R4 - 0xB8120C00, // 001B GETNGBL R4 K6 - 0x8C10090E, // 001C GETMET R4 R4 K14 + 0x9002A204, // 001A SETMBR R0 K81 R4 + 0xB8125200, // 001B GETNGBL R4 K41 + 0x8C100954, // 001C GETMET R4 R4 K84 0x7C100200, // 001D CALL R4 1 - 0x90021A04, // 001E SETMBR R0 K13 R4 + 0x9002A604, // 001E SETMBR R0 K83 R4 0xA8020007, // 001F EXBLK 0 #0028 - 0xB8120C00, // 0020 GETNGBL R4 K6 - 0x8C100910, // 0021 GETMET R4 R4 K16 - 0x58180011, // 0022 LDCONST R6 K17 + 0xB8125200, // 0020 GETNGBL R4 K41 + 0x8C100956, // 0021 GETMET R4 R4 K86 + 0x58180057, // 0022 LDCONST R6 K87 0x541E000F, // 0023 LDINT R7 16 0x7C100600, // 0024 CALL R4 3 - 0x90021E04, // 0025 SETMBR R0 K15 R4 + 0x9002AA04, // 0025 SETMBR R0 K85 R4 0xA8040001, // 0026 EXBLK 1 1 0x70020009, // 0027 JMP #0032 0xAC100000, // 0028 CATCH R4 0 0 0x70020006, // 0029 JMP #0031 - 0xB8120C00, // 002A GETNGBL R4 K6 - 0x8C100910, // 002B GETMET R4 R4 K16 - 0x58180012, // 002C LDCONST R6 K18 + 0xB8125200, // 002A GETNGBL R4 K41 + 0x8C100956, // 002B GETMET R4 R4 K86 + 0x58180058, // 002C LDCONST R6 K88 0x541E000D, // 002D LDINT R7 14 0x7C100600, // 002E CALL R4 3 - 0x90021E04, // 002F SETMBR R0 K15 R4 + 0x9002AA04, // 002F SETMBR R0 K85 R4 0x70020000, // 0030 JMP #0032 0xB0080000, // 0031 RAISE 2 R0 R0 - 0xB8120C00, // 0032 GETNGBL R4 K6 - 0x8C100913, // 0033 GETMET R4 R4 K19 - 0x58180014, // 0034 LDCONST R6 K20 - 0xB81E0C00, // 0035 GETNGBL R7 K6 - 0x8C1C0F15, // 0036 GETMET R7 R7 K21 - 0x58240016, // 0037 LDCONST R9 K22 + 0xB8125200, // 0032 GETNGBL R4 K41 + 0x8C100959, // 0033 GETMET R4 R4 K89 + 0x58180040, // 0034 LDCONST R6 K64 + 0xB81E5200, // 0035 GETNGBL R7 K41 + 0x8C1C0F5A, // 0036 GETMET R7 R7 K90 + 0x5824005B, // 0037 LDCONST R9 K91 0x7C1C0400, // 0038 CALL R7 2 - 0xB8220C00, // 0039 GETNGBL R8 K6 - 0x8C201115, // 003A GETMET R8 R8 K21 - 0x58280017, // 003B LDCONST R10 K23 + 0xB8225200, // 0039 GETNGBL R8 K41 + 0x8C20115A, // 003A GETMET R8 R8 K90 + 0x5828005C, // 003B LDCONST R10 K92 0x7C200400, // 003C CALL R8 2 - 0x88240108, // 003D GETMBR R9 R0 K8 - 0x8828010F, // 003E GETMBR R10 R0 K15 + 0x8824014E, // 003D GETMBR R9 R0 K78 + 0x88280155, // 003E GETMBR R10 R0 K85 0x7C100C00, // 003F CALL R4 6 - 0x8814010D, // 0040 GETMBR R5 R0 K13 - 0x8C140B18, // 0041 GETMET R5 R5 K24 + 0x88140153, // 0040 GETMBR R5 R0 K83 + 0x8C140B5D, // 0041 GETMET R5 R5 K93 0x7C140200, // 0042 CALL R5 1 - 0x8C140B19, // 0043 GETMET R5 R5 K25 + 0x8C140B5E, // 0043 GETMET R5 R5 K94 0x5C1C0800, // 0044 MOVE R7 R4 0x7C140400, // 0045 CALL R5 2 - 0x8814010D, // 0046 GETMBR R5 R0 K13 - 0x8C140B1A, // 0047 GETMET R5 R5 K26 - 0x881C0108, // 0048 GETMBR R7 R0 K8 + 0x88140153, // 0046 GETMBR R5 R0 K83 + 0x8C140B5F, // 0047 GETMET R5 R5 K95 + 0x881C014E, // 0048 GETMBR R7 R0 K78 0x781E0004, // 0049 JMPF R7 #004F - 0xB81E0C00, // 004A GETNGBL R7 K6 - 0x8C1C0F15, // 004B GETMET R7 R7 K21 - 0x58240014, // 004C LDCONST R9 K20 + 0xB81E5200, // 004A GETNGBL R7 K41 + 0x8C1C0F5A, // 004B GETMET R7 R7 K90 + 0x58240040, // 004C LDCONST R9 K64 0x7C1C0400, // 004D CALL R7 2 0x70020003, // 004E JMP #0053 - 0xB81E0C00, // 004F GETNGBL R7 K6 - 0x8C1C0F15, // 0050 GETMET R7 R7 K21 - 0x5824001B, // 0051 LDCONST R9 K27 + 0xB81E5200, // 004F GETNGBL R7 K41 + 0x8C1C0F5A, // 0050 GETMET R7 R7 K90 + 0x58240060, // 0051 LDCONST R9 K96 0x7C1C0400, // 0052 CALL R7 2 - 0x58200014, // 0053 LDCONST R8 K20 + 0x58200040, // 0053 LDCONST R8 K64 0x7C140600, // 0054 CALL R5 3 - 0xB8160C00, // 0055 GETNGBL R5 K6 - 0x8C140B1C, // 0056 GETMET R5 R5 K28 - 0xB81E0C00, // 0057 GETNGBL R7 K6 - 0x8C1C0F1D, // 0058 GETMET R7 R7 K29 + 0xB8165200, // 0055 GETNGBL R5 K41 + 0x8C140B61, // 0056 GETMET R5 R5 K97 + 0xB81E5200, // 0057 GETNGBL R7 K41 + 0x8C1C0F62, // 0058 GETMET R7 R7 K98 0x7C1C0200, // 0059 CALL R7 1 0x7C140400, // 005A CALL R5 2 - 0xB8160C00, // 005B GETNGBL R5 K6 - 0x8C140B1D, // 005C GETMET R5 R5 K29 + 0xB8165200, // 005B GETNGBL R5 K41 + 0x8C140B62, // 005C GETMET R5 R5 K98 0x7C140200, // 005D CALL R5 1 - 0x8C140B1E, // 005E GETMET R5 R5 K30 - 0x581C0014, // 005F LDCONST R7 K20 - 0x58200014, // 0060 LDCONST R8 K20 + 0x8C140B63, // 005E GETMET R5 R5 K99 + 0x581C0040, // 005F LDCONST R7 K64 + 0x58200040, // 0060 LDCONST R8 K64 0x7C140600, // 0061 CALL R5 3 0x60140013, // 0062 GETGBL R5 G19 0x7C140000, // 0063 CALL R5 0 - 0x90023E05, // 0064 SETMBR R0 K31 R5 - 0x8C140120, // 0065 GETMET R5 R0 K32 + 0x90020A05, // 0064 SETMBR R0 K5 R5 + 0x8C140164, // 0065 GETMET R5 R0 K100 0x5C1C0400, // 0066 MOVE R7 R2 0x7C140400, // 0067 CALL R5 2 0x80000000, // 0068 RET 0 @@ -11030,69 +10541,38 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ be_nested_proto( 22, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(id), - /* K4 */ be_nested_str_weak(obj), - /* K5 */ be_nested_str_weak(get_page_cur), - /* K6 */ be_nested_str_weak(berry_run), - /* K7 */ be_nested_str_weak(nil), - /* K8 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20), - /* K11 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A), - /* K12 */ be_nested_str_weak(parentid), - /* K13 */ be_nested_str_weak(get_obj), - /* K14 */ be_nested_str_weak(_lv_obj), - /* K15 */ be_nested_str_weak(get_scr), - /* K16 */ be_nested_str_weak(get), - /* K17 */ be_nested_str_weak(lvh_), - /* K18 */ be_nested_str_weak(class), - /* K19 */ be_nested_str_weak(lvh_obj), - /* K20 */ be_nested_str_weak(module), - /* K21 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20), - /* K22 */ be_nested_str_weak(add_obj), - /* K23 */ be_nested_str_weak(function), - /* K24 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K25 */ be_const_int(0), - /* K26 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0), - /* K27 */ be_nested_str_weak(keys), - /* K28 */ be_nested_str_weak(stop_iteration), - /* K29 */ be_nested_str_weak(post_config), - }), + &be_ktab_class_HASPmota, /* shared constants */ be_str_weak(parse_obj), &be_const_str_solidified, ( &(const binstruction[215]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xA4120200, // 0001 IMPORT R4 K1 + 0xA40ECA00, // 0000 IMPORT R3 K101 + 0xA4124A00, // 0001 IMPORT R4 K37 0x60140009, // 0002 GETGBL R5 G9 - 0x8C180302, // 0003 GETMET R6 R1 K2 - 0x58200003, // 0004 LDCONST R8 K3 + 0x8C180332, // 0003 GETMET R6 R1 K50 + 0x58200045, // 0004 LDCONST R8 K69 0x7C180400, // 0005 CALL R6 2 0x7C140200, // 0006 CALL R5 1 0x60180008, // 0007 GETGBL R6 G8 - 0x8C1C0302, // 0008 GETMET R7 R1 K2 - 0x58240004, // 0009 LDCONST R9 K4 + 0x8C1C0332, // 0008 GETMET R7 R1 K50 + 0x58240066, // 0009 LDCONST R9 K102 0x7C1C0400, // 000A CALL R7 2 0x7C180200, // 000B CALL R6 1 0x4C1C0000, // 000C LDNIL R7 - 0x8C200105, // 000D GETMET R8 R0 K5 + 0x8C200146, // 000D GETMET R8 R0 K70 0x7C200200, // 000E CALL R8 1 0x60240008, // 000F GETGBL R9 G8 - 0x8C280302, // 0010 GETMET R10 R1 K2 - 0x58300006, // 0011 LDCONST R12 K6 + 0x8C280332, // 0010 GETMET R10 R1 K50 + 0x58300067, // 0011 LDCONST R12 K103 0x7C280400, // 0012 CALL R10 2 0x7C240200, // 0013 CALL R9 1 0x4C280000, // 0014 LDNIL R10 - 0x202C1307, // 0015 NE R11 R9 K7 + 0x202C1368, // 0015 NE R11 R9 K104 0x782E0012, // 0016 JMPF R11 #002A 0xA8020005, // 0017 EXBLK 0 #001E 0x602C000D, // 0018 GETGBL R11 G13 @@ -11105,7 +10585,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x70020008, // 001F JMP #0029 0x60340001, // 0020 GETGBL R13 G1 0x60380018, // 0021 GETGBL R14 G24 - 0x583C0008, // 0022 LDCONST R15 K8 + 0x583C0069, // 0022 LDCONST R15 K105 0x5C401200, // 0023 MOVE R16 R9 0x5C441600, // 0024 MOVE R17 R11 0x5C481800, // 0025 MOVE R18 R12 @@ -11113,12 +10593,12 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x7C340200, // 0027 CALL R13 1 0x70020000, // 0028 JMP #002A 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x202C0D07, // 002A NE R11 R6 K7 + 0x202C0D68, // 002A NE R11 R6 K104 0x782E006A, // 002B JMPF R11 #0097 0x4C2C0000, // 002C LDNIL R11 0x202C0A0B, // 002D NE R11 R5 R11 0x782E0067, // 002E JMPF R11 #0097 - 0x142C0B09, // 002F LT R11 R5 K9 + 0x142C0B41, // 002F LT R11 R5 K65 0x742E0002, // 0030 JMPT R11 #0034 0x542E00FD, // 0031 LDINT R11 254 0x242C0A0B, // 0032 GT R11 R5 R11 @@ -11127,44 +10607,44 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60300008, // 0035 GETGBL R12 G8 0x5C340A00, // 0036 MOVE R13 R5 0x7C300200, // 0037 CALL R12 1 - 0x0032140C, // 0038 ADD R12 K10 R12 - 0x0030190B, // 0039 ADD R12 R12 K11 + 0x0032D40C, // 0038 ADD R12 K106 R12 + 0x0030196B, // 0039 ADD R12 R12 K107 0x00301806, // 003A ADD R12 R12 R6 0x7C2C0200, // 003B CALL R11 1 0x80001600, // 003C RET 0 0x4C2C0000, // 003D LDNIL R11 0x60300009, // 003E GETGBL R12 G9 - 0x8C340302, // 003F GETMET R13 R1 K2 - 0x583C000C, // 0040 LDCONST R15 K12 + 0x8C340332, // 003F GETMET R13 R1 K50 + 0x583C006C, // 0040 LDCONST R15 K108 0x7C340400, // 0041 CALL R13 2 0x7C300200, // 0042 CALL R12 1 0x4C340000, // 0043 LDNIL R13 0x4C380000, // 0044 LDNIL R14 0x2038180E, // 0045 NE R14 R12 R14 0x783A0007, // 0046 JMPF R14 #004F - 0x8C38110D, // 0047 GETMET R14 R8 K13 + 0x8C38116D, // 0047 GETMET R14 R8 K109 0x5C401800, // 0048 MOVE R16 R12 0x7C380400, // 0049 CALL R14 2 0x5C341C00, // 004A MOVE R13 R14 0x4C380000, // 004B LDNIL R14 0x20381A0E, // 004C NE R14 R13 R14 0x783A0000, // 004D JMPF R14 #004F - 0x882C1B0E, // 004E GETMBR R11 R13 K14 + 0x882C1B3E, // 004E GETMBR R11 R13 K62 0x4C380000, // 004F LDNIL R14 0x1C38160E, // 0050 EQ R14 R11 R14 0x783A0002, // 0051 JMPF R14 #0055 - 0x8C38110F, // 0052 GETMET R14 R8 K15 + 0x8C38116E, // 0052 GETMET R14 R8 K110 0x7C380200, // 0053 CALL R14 1 0x5C2C1C00, // 0054 MOVE R11 R14 - 0x8C380910, // 0055 GETMET R14 R4 K16 + 0x8C380934, // 0055 GETMET R14 R4 K52 0x5C400000, // 0056 MOVE R16 R0 - 0x00462206, // 0057 ADD R17 K17 R6 + 0x0046DE06, // 0057 ADD R17 K111 R6 0x7C380600, // 0058 CALL R14 3 0x4C3C0000, // 0059 LDNIL R15 0x4C400000, // 005A LDNIL R16 0x1C401C10, // 005B EQ R16 R14 R16 0x78420010, // 005C JMPF R16 #006E - 0x8C400910, // 005D GETMET R16 R4 K16 + 0x8C400934, // 005D GETMET R16 R4 K52 0x5C480600, // 005E MOVE R18 R3 0x5C4C0C00, // 005F MOVE R19 R6 0x7C400600, // 0060 CALL R16 3 @@ -11174,17 +10654,17 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440004, // 0064 GETGBL R17 G4 0x5C482000, // 0065 MOVE R18 R16 0x7C440200, // 0066 CALL R17 1 - 0x1C442312, // 0067 EQ R17 R17 K18 + 0x1C442370, // 0067 EQ R17 R17 K112 0x78460004, // 0068 JMPF R17 #006E 0x5C442000, // 0069 MOVE R17 R16 0x5C481600, // 006A MOVE R18 R11 0x7C440200, // 006B CALL R17 1 0x5C3C2200, // 006C MOVE R15 R17 - 0x88380113, // 006D GETMBR R14 R0 K19 + 0x88380171, // 006D GETMBR R14 R0 K113 0x4C400000, // 006E LDNIL R16 0x1C401C10, // 006F EQ R16 R14 R16 0x7842000F, // 0070 JMPF R16 #0081 - 0x8C400914, // 0071 GETMET R16 R4 K20 + 0x8C400972, // 0071 GETMET R16 R4 K114 0x5C480C00, // 0072 MOVE R18 R6 0x7C400400, // 0073 CALL R16 2 0x4C440000, // 0074 LDNIL R17 @@ -11193,13 +10673,13 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440004, // 0077 GETGBL R17 G4 0x5C482000, // 0078 MOVE R18 R16 0x7C440200, // 0079 CALL R17 1 - 0x1C442312, // 007A EQ R17 R17 K18 + 0x1C442370, // 007A EQ R17 R17 K112 0x78460004, // 007B JMPF R17 #0081 0x5C442000, // 007C MOVE R17 R16 0x5C481600, // 007D MOVE R18 R11 0x7C440200, // 007E CALL R17 1 0x5C3C2200, // 007F MOVE R15 R17 - 0x88380113, // 0080 GETMBR R14 R0 K19 + 0x88380171, // 0080 GETMBR R14 R0 K113 0x4C400000, // 0081 LDNIL R16 0x1C401C10, // 0082 EQ R16 R14 R16 0x78420006, // 0083 JMPF R16 #008B @@ -11207,7 +10687,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440008, // 0085 GETGBL R17 G8 0x5C480C00, // 0086 MOVE R18 R6 0x7C440200, // 0087 CALL R17 1 - 0x00462A11, // 0088 ADD R17 K21 R17 + 0x0046E611, // 0088 ADD R17 K115 R17 0x7C400200, // 0089 CALL R16 1 0x80002000, // 008A RET 0 0x5C401C00, // 008B MOVE R16 R14 @@ -11218,7 +10698,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x5C541A00, // 0090 MOVE R21 R13 0x7C400A00, // 0091 CALL R16 5 0x5C1C2000, // 0092 MOVE R7 R16 - 0x8C401116, // 0093 GETMET R16 R8 K22 + 0x8C401174, // 0093 GETMET R16 R8 K116 0x5C480A00, // 0094 MOVE R18 R5 0x5C4C0E00, // 0095 MOVE R19 R7 0x7C400600, // 0096 CALL R16 3 @@ -11231,7 +10711,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60300004, // 009D GETGBL R12 G4 0x5C341600, // 009E MOVE R13 R11 0x7C300200, // 009F CALL R12 1 - 0x1C301917, // 00A0 EQ R12 R12 K23 + 0x1C301975, // 00A0 EQ R12 R12 K117 0x78320002, // 00A1 JMPF R12 #00A5 0x5C301600, // 00A2 MOVE R12 R11 0x5C340E00, // 00A3 MOVE R13 R7 @@ -11242,7 +10722,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x70020008, // 00A8 JMP #00B2 0x60340001, // 00A9 GETGBL R13 G1 0x60380018, // 00AA GETGBL R14 G24 - 0x583C0018, // 00AB LDCONST R15 K24 + 0x583C0076, // 00AB LDCONST R15 K118 0x5C401200, // 00AC MOVE R16 R9 0x5C441600, // 00AD MOVE R17 R11 0x5C481800, // 00AE MOVE R18 R12 @@ -11254,24 +10734,24 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x1C2C0A0B, // 00B4 EQ R11 R5 R11 0x782E0000, // 00B5 JMPF R11 #00B7 0x80001600, // 00B6 RET 0 - 0x1C2C0B19, // 00B7 EQ R11 R5 K25 + 0x1C2C0B0B, // 00B7 EQ R11 R5 K11 0x782E0005, // 00B8 JMPF R11 #00BF - 0x202C0D07, // 00B9 NE R11 R6 K7 + 0x202C0D68, // 00B9 NE R11 R6 K104 0x782E0003, // 00BA JMPF R11 #00BF 0x602C0001, // 00BB GETGBL R11 G1 - 0x5830001A, // 00BC LDCONST R12 K26 + 0x58300077, // 00BC LDCONST R12 K119 0x7C2C0200, // 00BD CALL R11 1 0x80001600, // 00BE RET 0 - 0x1C2C0B19, // 00BF EQ R11 R5 K25 + 0x1C2C0B0B, // 00BF EQ R11 R5 K11 0x782E0005, // 00C0 JMPF R11 #00C7 - 0x8C2C0105, // 00C1 GETMET R11 R0 K5 + 0x8C2C0146, // 00C1 GETMET R11 R0 K70 0x7C2C0200, // 00C2 CALL R11 1 - 0x8C2C170D, // 00C3 GETMET R11 R11 K13 - 0x58340019, // 00C4 LDCONST R13 K25 + 0x8C2C176D, // 00C3 GETMET R11 R11 K109 + 0x5834000B, // 00C4 LDCONST R13 K11 0x7C2C0400, // 00C5 CALL R11 2 0x5C1C1600, // 00C6 MOVE R7 R11 0x602C0010, // 00C7 GETGBL R11 G16 - 0x8C30031B, // 00C8 GETMET R12 R1 K27 + 0x8C30032E, // 00C8 GETMET R12 R1 K46 0x7C300200, // 00C9 CALL R12 1 0x7C2C0200, // 00CA CALL R11 1 0xA8020004, // 00CB EXBLK 0 #00D1 @@ -11280,10 +10760,10 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x9434020C, // 00CE GETIDX R13 R1 R12 0x901C180D, // 00CF SETMBR R7 R12 R13 0x7001FFFA, // 00D0 JMP #00CC - 0x582C001C, // 00D1 LDCONST R11 K28 + 0x582C0030, // 00D1 LDCONST R11 K48 0xAC2C0200, // 00D2 CATCH R11 1 0 0xB0080000, // 00D3 RAISE 2 R0 R0 - 0x8C2C0F1D, // 00D4 GETMET R11 R7 K29 + 0x8C2C0F78, // 00D4 GETMET R11 R7 K120 0x7C2C0200, // 00D5 CALL R11 1 0x80000000, // 00D6 RET 0 }) From b8d7b5e2faacd26090938228d2027830dfbf5b84 Mon Sep 17 00:00:00 2001 From: s-hadinger Date: Thu, 25 Jul 2024 20:53:52 +0000 Subject: [PATCH 187/252] Solidified Code updated --- .../src/solidify/solidified_animate_1_core.h | 133 +- .../solidified_animate_2_animate_effects.h | 63 +- .../solidify/solidified_animate_9_module.h | 372 ++--- .../solidified_leds_frame_be_methods.h | 49 +- .../solidified_Matter_Commissioning.h | 1216 ++++++++--------- .../solidified_Matter_Control_Message.h | 7 +- .../solidify/solidified_Matter_EventHandler.h | 235 ++-- .../solidify/solidified_Matter_Expirable.h | 50 +- .../src/solidify/solidified_Matter_Fabric.h | 402 +++--- .../solidify/solidified_Matter_HTTP_async.h | 331 ++--- .../solidify/solidified_Matter_HTTP_remote.h | 222 +-- .../src/solidify/solidified_Matter_IM.h | 1030 +++++++------- .../solidified_Matter_IM_Subscription.h | 195 +-- .../src/solidify/solidified_Matter_Message.h | 273 ++-- .../solidified_Matter_Path_1_PathGenerator.h | 25 +- .../solidified_Matter_Plugin_1_Aggregator.h | 25 +- .../solidified_Matter_Plugin_1_Device.h | 479 ++++--- .../solidified_Matter_Plugin_1_Root.h | 553 ++++---- .../solidify/solidified_Matter_Plugin_2_Fan.h | 80 +- .../solidified_Matter_Plugin_2_Light0.h | 96 +- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 49 +- ...Matter_Plugin_2_Sensor_GenericSwitch_Btn.h | 91 +- .../solidified_Matter_Plugin_2_Shutter.h | 283 ++-- .../solidified_Matter_Plugin_3_Light1.h | 232 ++-- ...olidified_Matter_Plugin_3_Sensor_Contact.h | 73 +- ...ified_Matter_Plugin_3_Sensor_Illuminance.h | 73 +- ...idified_Matter_Plugin_3_Sensor_Occupancy.h | 95 +- .../solidified_Matter_Plugin_3_Sensor_OnOff.h | 7 +- .../solidified_Matter_Plugin_3_Sensor_Rain.h | 73 +- .../solidified_Matter_Plugin_3_Sensor_Temp.h | 90 +- ...idified_Matter_Plugin_3_Sensor_Waterleak.h | 10 +- .../solidified_Matter_Plugin_3_ShutterTilt.h | 104 +- .../solidified_Matter_Plugin_4_Light3.h | 402 +++--- .../src/solidify/solidified_Matter_Profiler.h | 13 +- .../src/solidify/solidified_Matter_Session.h | 191 +-- .../solidified_Matter_Session_Store.h | 340 ++--- .../src/solidify/solidified_Matter_TLV.h | 333 +++-- .../solidify/solidified_Matter_UDPServer.h | 127 +- .../src/solidify/solidified_autoconf_module.h | 342 ++--- .../src/solidify/solidified_hue_bridge.h | 64 +- .../src/solidify/solidified_i2c_axp192.h | 92 +- .../src/solidify/solidified_i2c_axp202.h | 113 +- .../src/solidify/solidified_i2c_driver.h | 55 +- .../src/solidify/solidified_leds.h | 107 +- .../solidify/solidified_lv_tasmota_widgets.h | 65 +- .../src/solidify/solidified_partition_core.h | 587 ++++---- .../src/solidify/solidified_rule_matcher.h | 7 +- .../src/solidify/solidified_tasmota_class.h | 794 +++++------ .../solidified_zigbee_zcl_attribute.h | 115 +- .../src/solidify/solidified_lvgl_glob.h | 92 +- .../src/solidify/solidified_lv_haspmota.h | 1111 +++++++-------- 51 files changed, 6016 insertions(+), 5950 deletions(-) diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h index 74d6411eb..191c4ebb6 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Animate_core' ktab size: 49, total: 98 (saved 392 bytes) -static const bvalue be_ktab_class_Animate_core[49] = { +// compact class 'Animate_core' ktab size: 50, total: 98 (saved 384 bytes) +static const bvalue be_ktab_class_Animate_core[50] = { /* K0 */ be_nested_str_weak(stop), /* K1 */ be_nested_str_weak(strip), /* K2 */ be_nested_str_weak(clear), @@ -18,21 +18,21 @@ static const bvalue be_ktab_class_Animate_core[49] = { /* K10 */ be_nested_str_weak(find), /* K11 */ be_nested_str_weak(running), /* K12 */ be_nested_str_weak(animators), - /* K13 */ be_const_int(0), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(remove_fast_loop), - /* K16 */ be_nested_str_weak(fast_loop_cb), - /* K17 */ be_nested_str_weak(set_strip_bri), - /* K18 */ be_nested_str_weak(push), - /* K19 */ be_nested_str_weak(time_reached), - /* K20 */ be_nested_str_weak(fast_loop_next), - /* K21 */ be_nested_str_weak(can_show), - /* K22 */ be_nested_str_weak(frame), - /* K23 */ be_nested_str_weak(fill_pixels), - /* K24 */ be_nested_str_weak(back_color), - /* K25 */ be_nested_str_weak(millis), - /* K26 */ be_nested_str_weak(FAST_LOOP_MIN), - /* K27 */ be_nested_str_weak(animate), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(remove_fast_loop), + /* K15 */ be_nested_str_weak(fast_loop_cb), + /* K16 */ be_nested_str_weak(set_strip_bri), + /* K17 */ be_nested_str_weak(push), + /* K18 */ be_nested_str_weak(time_reached), + /* K19 */ be_nested_str_weak(fast_loop_next), + /* K20 */ be_nested_str_weak(can_show), + /* K21 */ be_nested_str_weak(frame), + /* K22 */ be_nested_str_weak(fill_pixels), + /* K23 */ be_nested_str_weak(back_color), + /* K24 */ be_nested_str_weak(millis), + /* K25 */ be_nested_str_weak(FAST_LOOP_MIN), + /* K26 */ be_nested_str_weak(animate), + /* K27 */ be_const_int(1), /* K28 */ be_nested_str_weak(layer), /* K29 */ be_const_int(-16777216), /* K30 */ be_nested_str_weak(paint), @@ -48,12 +48,13 @@ static const bvalue be_ktab_class_Animate_core[49] = { /* K40 */ be_nested_str_weak(global), /* K41 */ be_nested_str_weak(_cur_anim), /* K42 */ be_nested_str_weak(pixel_count), - /* K43 */ be_nested_str_weak(set_current), - /* K44 */ be_nested_str_weak(set_cb), - /* K45 */ be_nested_str_weak(set_back_color), - /* K46 */ be_nested_str_weak(add_animator), - /* K47 */ be_nested_str_weak(start), - /* K48 */ be_nested_str_weak(add_fast_loop), + /* K43 */ be_const_int(0), + /* K44 */ be_nested_str_weak(set_current), + /* K45 */ be_nested_str_weak(set_cb), + /* K46 */ be_nested_str_weak(set_back_color), + /* K47 */ be_nested_str_weak(add_animator), + /* K48 */ be_nested_str_weak(start), + /* K49 */ be_nested_str_weak(add_fast_loop), }; @@ -179,7 +180,7 @@ be_local_closure(class_Animate_core_stop, /* name */ 0x50040000, // 0000 LDBOOL R1 0 0 0x90021601, // 0001 SETMBR R0 K11 R1 0x8804010C, // 0002 GETMBR R1 R0 K12 - 0x5808000D, // 0003 LDCONST R2 K13 + 0x58080007, // 0003 LDCONST R2 K7 0x600C000C, // 0004 GETGBL R3 G12 0x5C100200, // 0005 MOVE R4 R1 0x7C0C0200, // 0006 CALL R3 1 @@ -188,11 +189,11 @@ be_local_closure(class_Animate_core_stop, /* name */ 0x940C0202, // 0009 GETIDX R3 R1 R2 0x8C0C0700, // 000A GETMET R3 R3 K0 0x7C0C0200, // 000B CALL R3 1 - 0x0008050E, // 000C ADD R2 R2 K14 + 0x0008050D, // 000C ADD R2 R2 K13 0x7001FFF5, // 000D JMP #0004 0xB80E0800, // 000E GETNGBL R3 K4 - 0x8C0C070F, // 000F GETMET R3 R3 K15 - 0x88140110, // 0010 GETMBR R5 R0 K16 + 0x8C0C070E, // 000F GETMET R3 R3 K14 + 0x8814010F, // 0010 GETMBR R5 R0 K15 0x7C0C0400, // 0011 CALL R3 2 0x80000000, // 0012 RET 0 }) @@ -244,7 +245,7 @@ be_local_closure(class_Animate_core_set_bri, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x90020C01, // 0000 SETMBR R0 K6 R1 - 0x8C080111, // 0001 GETMET R2 R0 K17 + 0x8C080110, // 0001 GETMET R2 R0 K16 0x7C080200, // 0002 CALL R2 1 0x80000000, // 0003 RET 0 }) @@ -278,7 +279,7 @@ be_local_closure(class_Animate_core_add_painter, /* name */ 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0003, // 0006 JMPF R2 #000B 0x88080108, // 0007 GETMBR R2 R0 K8 - 0x8C080512, // 0008 GETMET R2 R2 K18 + 0x8C080511, // 0008 GETMET R2 R2 K17 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 0x80000000, // 000B RET 0 @@ -308,25 +309,25 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0x8804010B, // 0000 GETMBR R1 R0 K11 0x78060050, // 0001 JMPF R1 #0053 0xB8060800, // 0002 GETNGBL R1 K4 - 0x8C040313, // 0003 GETMET R1 R1 K19 - 0x880C0114, // 0004 GETMBR R3 R0 K20 + 0x8C040312, // 0003 GETMET R1 R1 K18 + 0x880C0113, // 0004 GETMBR R3 R0 K19 0x7C040400, // 0005 CALL R1 2 0x7806004B, // 0006 JMPF R1 #0053 0x88040101, // 0007 GETMBR R1 R0 K1 - 0x8C040315, // 0008 GETMET R1 R1 K21 + 0x8C040314, // 0008 GETMET R1 R1 K20 0x7C040200, // 0009 CALL R1 1 0x78060047, // 000A JMPF R1 #0053 - 0x88040116, // 000B GETMBR R1 R0 K22 - 0x8C040317, // 000C GETMET R1 R1 K23 - 0x880C0118, // 000D GETMBR R3 R0 K24 + 0x88040115, // 000B GETMBR R1 R0 K21 + 0x8C040316, // 000C GETMET R1 R1 K22 + 0x880C0117, // 000D GETMBR R3 R0 K23 0x7C040400, // 000E CALL R1 2 0x58040007, // 000F LDCONST R1 K7 0xB80A0800, // 0010 GETNGBL R2 K4 - 0x8C080519, // 0011 GETMET R2 R2 K25 + 0x8C080518, // 0011 GETMET R2 R2 K24 0x7C080200, // 0012 CALL R2 1 - 0x880C011A, // 0013 GETMBR R3 R0 K26 + 0x880C0119, // 0013 GETMBR R3 R0 K25 0x000C0403, // 0014 ADD R3 R2 R3 - 0x90022803, // 0015 SETMBR R0 K20 R3 + 0x90022603, // 0015 SETMBR R0 K19 R3 0x600C000C, // 0016 GETGBL R3 G12 0x8810010C, // 0017 GETMBR R4 R0 K12 0x7C0C0200, // 0018 CALL R3 1 @@ -334,20 +335,20 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0x780E0006, // 001A JMPF R3 #0022 0x880C010C, // 001B GETMBR R3 R0 K12 0x940C0601, // 001C GETIDX R3 R3 R1 - 0x8C0C071B, // 001D GETMET R3 R3 K27 + 0x8C0C071A, // 001D GETMET R3 R3 K26 0x5C140400, // 001E MOVE R5 R2 0x7C0C0400, // 001F CALL R3 2 - 0x0004030E, // 0020 ADD R1 R1 K14 + 0x0004031B, // 0020 ADD R1 R1 K27 0x7001FFF3, // 0021 JMP #0016 0x58040007, // 0022 LDCONST R1 K7 - 0x880C0116, // 0023 GETMBR R3 R0 K22 + 0x880C0115, // 0023 GETMBR R3 R0 K21 0x8810011C, // 0024 GETMBR R4 R0 K28 0x6014000C, // 0025 GETGBL R5 G12 0x88180108, // 0026 GETMBR R6 R0 K8 0x7C140200, // 0027 CALL R5 1 0x14140205, // 0028 LT R5 R1 R5 0x7816000D, // 0029 JMPF R5 #0038 - 0x8C140917, // 002A GETMET R5 R4 K23 + 0x8C140916, // 002A GETMET R5 R4 K22 0x581C001D, // 002B LDCONST R7 K29 0x7C140400, // 002C CALL R5 2 0x88140108, // 002D GETMBR R5 R0 K8 @@ -359,7 +360,7 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0x8C14071F, // 0033 GETMET R5 R3 K31 0x5C1C0800, // 0034 MOVE R7 R4 0x7C140400, // 0035 CALL R5 2 - 0x0004030E, // 0036 ADD R1 R1 K14 + 0x0004031B, // 0036 ADD R1 R1 K27 0x7001FFEC, // 0037 JMP #0025 0x88140120, // 0038 GETMBR R5 R0 K32 0x88180121, // 0039 GETMBR R6 R0 K33 @@ -368,9 +369,9 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0x5C1C0C00, // 003C MOVE R7 R6 0x5C200A00, // 003D MOVE R8 R5 0x7C1C0200, // 003E CALL R7 1 - 0x8C1C011B, // 003F GETMET R7 R0 K27 + 0x8C1C011A, // 003F GETMET R7 R0 K26 0x7C1C0200, // 0040 CALL R7 1 - 0x881C0116, // 0041 GETMBR R7 R0 K22 + 0x881C0115, // 0041 GETMBR R7 R0 K21 0x8C1C0F22, // 0042 GETMET R7 R7 K34 0x88240101, // 0043 GETMBR R9 R0 K1 0x8C241323, // 0044 GETMET R9 R9 K35 @@ -522,14 +523,14 @@ be_local_closure(class_Animate_core_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[37]) { /* code */ - 0xA40E3600, // 0000 IMPORT R3 K27 + 0xA40E3400, // 0000 IMPORT R3 K26 0x90020201, // 0001 SETMBR R0 K1 R1 0x4C100000, // 0002 LDNIL R4 0x1C100404, // 0003 EQ R4 R2 R4 0x78120000, // 0004 JMPF R4 #0006 0x540A0031, // 0005 LDINT R2 50 0x90020C02, // 0006 SETMBR R0 K6 R2 - 0x8C100111, // 0007 GETMET R4 R0 K17 + 0x8C100110, // 0007 GETMET R4 R0 K16 0x7C100200, // 0008 CALL R4 1 0x50100000, // 0009 LDBOOL R4 0 0 0x90021604, // 000A SETMBR R0 K11 R4 @@ -544,18 +545,18 @@ be_local_closure(class_Animate_core_init, /* name */ 0x90021004, // 0013 SETMBR R0 K8 R4 0x8C100102, // 0014 GETMET R4 R0 K2 0x7C100200, // 0015 CALL R4 1 - 0x8C100716, // 0016 GETMET R4 R3 K22 + 0x8C100715, // 0016 GETMET R4 R3 K21 0x8818012A, // 0017 GETMBR R6 R0 K42 0x7C100400, // 0018 CALL R4 2 - 0x90022C04, // 0019 SETMBR R0 K22 R4 - 0x8C100716, // 001A GETMET R4 R3 K22 + 0x90022A04, // 0019 SETMBR R0 K21 R4 + 0x8C100715, // 001A GETMET R4 R3 K21 0x8818012A, // 001B GETMBR R6 R0 K42 0x7C100400, // 001C CALL R4 2 0x90023804, // 001D SETMBR R0 K28 R4 0x84100000, // 001E CLOSURE R4 P0 - 0x90022004, // 001F SETMBR R0 K16 R4 - 0x90023107, // 0020 SETMBR R0 K24 K7 - 0x8C10012B, // 0021 GETMET R4 R0 K43 + 0x90021E04, // 001F SETMBR R0 K15 R4 + 0x90022F2B, // 0020 SETMBR R0 K23 K43 + 0x8C10012C, // 0021 GETMET R4 R0 K44 0x7C100200, // 0022 CALL R4 1 0xA0000000, // 0023 CLOSE R0 0x80000000, // 0024 RET 0 @@ -608,7 +609,7 @@ be_local_closure(class_Animate_core_set_back_color, /* name */ be_str_weak(set_back_color), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90023001, // 0000 SETMBR R0 K24 R1 + 0x90022E01, // 0000 SETMBR R0 K23 R1 0x80000000, // 0001 RET 0 }) ) @@ -633,11 +634,11 @@ be_local_closure(class_Animate_core_add_background_animator, /* name */ be_str_weak(add_background_animator), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C08032C, // 0000 GETMET R2 R1 K44 + 0x8C08032D, // 0000 GETMET R2 R1 K45 0x5C100000, // 0001 MOVE R4 R0 - 0x8814012D, // 0002 GETMBR R5 R0 K45 + 0x8814012E, // 0002 GETMBR R5 R0 K46 0x7C080600, // 0003 CALL R2 3 - 0x8C08012E, // 0004 GETMET R2 R0 K46 + 0x8C08012F, // 0004 GETMET R2 R0 K47 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 0x80000000, // 0007 RET 0 @@ -672,7 +673,7 @@ be_local_closure(class_Animate_core_add_animator, /* name */ 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0003, // 0006 JMPF R2 #000B 0x8808010C, // 0007 GETMBR R2 R0 K12 - 0x8C080512, // 0008 GETMET R2 R2 K18 + 0x8C080511, // 0008 GETMET R2 R2 K17 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 0x80000000, // 000B RET 0 @@ -702,8 +703,8 @@ be_local_closure(class_Animate_core_remove, /* name */ 0x8C040102, // 0000 GETMET R1 R0 K2 0x7C040200, // 0001 CALL R1 1 0xB8060800, // 0002 GETNGBL R1 K4 - 0x8C04030F, // 0003 GETMET R1 R1 K15 - 0x880C0110, // 0004 GETMBR R3 R0 K16 + 0x8C04030E, // 0003 GETMET R1 R1 K14 + 0x880C010F, // 0004 GETMBR R3 R0 K15 0x7C040400, // 0005 CALL R1 2 0x80000000, // 0006 RET 0 }) @@ -732,21 +733,21 @@ be_local_closure(class_Animate_core_start, /* name */ 0x50040200, // 0000 LDBOOL R1 1 0 0x90021601, // 0001 SETMBR R0 K11 R1 0x8804010C, // 0002 GETMBR R1 R0 K12 - 0x5808000D, // 0003 LDCONST R2 K13 + 0x58080007, // 0003 LDCONST R2 K7 0x600C000C, // 0004 GETGBL R3 G12 0x5C100200, // 0005 MOVE R4 R1 0x7C0C0200, // 0006 CALL R3 1 0x140C0403, // 0007 LT R3 R2 R3 0x780E0004, // 0008 JMPF R3 #000E 0x940C0202, // 0009 GETIDX R3 R1 R2 - 0x8C0C072F, // 000A GETMET R3 R3 K47 + 0x8C0C0730, // 000A GETMET R3 R3 K48 0x7C0C0200, // 000B CALL R3 1 - 0x0008050E, // 000C ADD R2 R2 K14 + 0x0008050D, // 000C ADD R2 R2 K13 0x7001FFF5, // 000D JMP #0004 - 0x9002290D, // 000E SETMBR R0 K20 K13 + 0x90022707, // 000E SETMBR R0 K19 K7 0xB80E0800, // 000F GETNGBL R3 K4 - 0x8C0C0730, // 0010 GETMET R3 R3 K48 - 0x88140110, // 0011 GETMBR R5 R0 K16 + 0x8C0C0731, // 0010 GETMET R3 R3 K49 + 0x8814010F, // 0011 GETMBR R5 R0 K15 0x7C0C0400, // 0012 CALL R3 2 0x80000000, // 0013 RET 0 }) diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h index 28805c5fc..da5a746a5 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h @@ -79,8 +79,8 @@ be_local_class(Animate_painter, })), be_str_weak(Animate_painter) ); -// compact class 'Animate_pulse' ktab size: 15, total: 28 (saved 104 bytes) -static const bvalue be_ktab_class_Animate_pulse[15] = { +// compact class 'Animate_pulse' ktab size: 18, total: 28 (saved 80 bytes) +static const bvalue be_ktab_class_Animate_pulse[18] = { /* K0 */ be_nested_str_weak(pulse_size), /* K1 */ be_nested_str_weak(slew_size), /* K2 */ be_nested_str_weak(back_color), @@ -91,11 +91,14 @@ static const bvalue be_ktab_class_Animate_pulse[15] = { /* K7 */ be_const_int(1), /* K8 */ be_const_int(0), /* K9 */ be_const_int(-16777216), - /* K10 */ be_nested_str_weak(fill_pixels), - /* K11 */ be_nested_str_weak(pixel_size), - /* K12 */ be_nested_str_weak(blend), - /* K13 */ be_nested_str_weak(tasmota), - /* K14 */ be_nested_str_weak(scale_int), + /* K10 */ be_const_int(-16777216), + /* K11 */ be_nested_str_weak(fill_pixels), + /* K12 */ be_nested_str_weak(pixel_size), + /* K13 */ be_const_int(0), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(blend), + /* K16 */ be_nested_str_weak(tasmota), + /* K17 */ be_nested_str_weak(scale_int), }; @@ -296,24 +299,24 @@ be_local_closure(class_Animate_pulse_paint, /* name */ &be_const_str_solidified, ( &(const binstruction[91]) { /* code */ 0x88080102, // 0000 GETMBR R2 R0 K2 - 0x200C0509, // 0001 NE R3 R2 K9 + 0x200C050A, // 0001 NE R3 R2 K10 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C030A, // 0003 GETMET R3 R1 K10 + 0x8C0C030B, // 0003 GETMET R3 R1 K11 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x880C0103, // 0006 GETMBR R3 R0 K3 0x88100101, // 0007 GETMBR R4 R0 K1 0x88140100, // 0008 GETMBR R5 R0 K0 0x88180104, // 0009 GETMBR R6 R0 K4 - 0x881C030B, // 000A GETMBR R7 R1 K11 + 0x881C030C, // 000A GETMBR R7 R1 K12 0x4C200000, // 000B LDNIL R8 0x4C240000, // 000C LDNIL R9 0x5C200600, // 000D MOVE R8 R3 0x00280605, // 000E ADD R10 R3 R5 0x5C241400, // 000F MOVE R9 R10 - 0x14281108, // 0010 LT R10 R8 K8 + 0x1428110D, // 0010 LT R10 R8 K13 0x782A0000, // 0011 JMPF R10 #0013 - 0x58200008, // 0012 LDCONST R8 K8 + 0x5820000D, // 0012 LDCONST R8 K13 0x28281207, // 0013 GE R10 R9 R7 0x782A0000, // 0014 JMPF R10 #0016 0x5C240E00, // 0015 MOVE R9 R7 @@ -321,68 +324,68 @@ be_local_closure(class_Animate_pulse_paint, /* name */ 0x142C1409, // 0017 LT R11 R10 R9 0x782E0002, // 0018 JMPF R11 #001C 0x98041406, // 0019 SETIDX R1 R10 R6 - 0x00281507, // 001A ADD R10 R10 K7 + 0x0028150E, // 001A ADD R10 R10 K14 0x7001FFFA, // 001B JMP #0017 - 0x242C0908, // 001C GT R11 R4 K8 + 0x242C090D, // 001C GT R11 R4 K13 0x782E003A, // 001D JMPF R11 #0059 0x042C0604, // 001E SUB R11 R3 R4 0x5C201600, // 001F MOVE R8 R11 0x5C240600, // 0020 MOVE R9 R3 - 0x142C1108, // 0021 LT R11 R8 K8 + 0x142C110D, // 0021 LT R11 R8 K13 0x782E0000, // 0022 JMPF R11 #0024 - 0x58200008, // 0023 LDCONST R8 K8 + 0x5820000D, // 0023 LDCONST R8 K13 0x282C1207, // 0024 GE R11 R9 R7 0x782E0000, // 0025 JMPF R11 #0027 0x5C240E00, // 0026 MOVE R9 R7 0x5C281000, // 0027 MOVE R10 R8 0x142C1409, // 0028 LT R11 R10 R9 0x782E000F, // 0029 JMPF R11 #003A - 0x8C2C030C, // 002A GETMET R11 R1 K12 + 0x8C2C030F, // 002A GETMET R11 R1 K15 0x5C340400, // 002B MOVE R13 R2 0x5C380C00, // 002C MOVE R14 R6 - 0xB83E1A00, // 002D GETNGBL R15 K13 - 0x8C3C1F0E, // 002E GETMET R15 R15 K14 + 0xB83E2000, // 002D GETNGBL R15 K16 + 0x8C3C1F11, // 002E GETMET R15 R15 K17 0x5C441400, // 002F MOVE R17 R10 0x04480604, // 0030 SUB R18 R3 R4 - 0x04482507, // 0031 SUB R18 R18 K7 + 0x0448250E, // 0031 SUB R18 R18 K14 0x5C4C0600, // 0032 MOVE R19 R3 0x545200FE, // 0033 LDINT R20 255 - 0x58540008, // 0034 LDCONST R21 K8 + 0x5854000D, // 0034 LDCONST R21 K13 0x7C3C0C00, // 0035 CALL R15 6 0x7C2C0800, // 0036 CALL R11 4 0x9804140B, // 0037 SETIDX R1 R10 R11 - 0x00281507, // 0038 ADD R10 R10 K7 + 0x0028150E, // 0038 ADD R10 R10 K14 0x7001FFED, // 0039 JMP #0028 0x002C0605, // 003A ADD R11 R3 R5 0x5C201600, // 003B MOVE R8 R11 0x002C0605, // 003C ADD R11 R3 R5 0x002C1604, // 003D ADD R11 R11 R4 0x5C241600, // 003E MOVE R9 R11 - 0x142C1108, // 003F LT R11 R8 K8 + 0x142C110D, // 003F LT R11 R8 K13 0x782E0000, // 0040 JMPF R11 #0042 - 0x58200008, // 0041 LDCONST R8 K8 + 0x5820000D, // 0041 LDCONST R8 K13 0x282C1207, // 0042 GE R11 R9 R7 0x782E0000, // 0043 JMPF R11 #0045 0x5C240E00, // 0044 MOVE R9 R7 0x5C281000, // 0045 MOVE R10 R8 0x142C1409, // 0046 LT R11 R10 R9 0x782E0010, // 0047 JMPF R11 #0059 - 0x8C2C030C, // 0048 GETMET R11 R1 K12 + 0x8C2C030F, // 0048 GETMET R11 R1 K15 0x5C340400, // 0049 MOVE R13 R2 0x5C380C00, // 004A MOVE R14 R6 - 0xB83E1A00, // 004B GETNGBL R15 K13 - 0x8C3C1F0E, // 004C GETMET R15 R15 K14 + 0xB83E2000, // 004B GETNGBL R15 K16 + 0x8C3C1F11, // 004C GETMET R15 R15 K17 0x5C441400, // 004D MOVE R17 R10 0x00480605, // 004E ADD R18 R3 R5 - 0x04482507, // 004F SUB R18 R18 K7 + 0x0448250E, // 004F SUB R18 R18 K14 0x004C0605, // 0050 ADD R19 R3 R5 0x004C2604, // 0051 ADD R19 R19 R4 - 0x58500008, // 0052 LDCONST R20 K8 + 0x5850000D, // 0052 LDCONST R20 K13 0x545600FE, // 0053 LDINT R21 255 0x7C3C0C00, // 0054 CALL R15 6 0x7C2C0800, // 0055 CALL R11 4 0x9804140B, // 0056 SETIDX R1 R10 R11 - 0x00281507, // 0057 ADD R10 R10 K7 + 0x0028150E, // 0057 ADD R10 R10 K14 0x7001FFEC, // 0058 JMP #0046 0x502C0200, // 0059 LDBOOL R11 1 0 0x80041600, // 005A RET 1 R11 diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h index 50ef57843..acc2bcd20 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h @@ -245,8 +245,8 @@ be_local_class(Animate_animator, be_str_weak(Animate_animator) ); extern const bclass be_class_Animate_palette; -// compact class 'Animate_palette' ktab size: 45, total: 87 (saved 336 bytes) -static const bvalue be_ktab_class_Animate_palette[45] = { +// compact class 'Animate_palette' ktab size: 47, total: 87 (saved 320 bytes) +static const bvalue be_ktab_class_Animate_palette[47] = { /* K0 */ be_const_class(be_class_Animate_palette), /* K1 */ be_nested_str_weak(ptr), /* K2 */ be_const_int(1), @@ -260,38 +260,40 @@ static const bvalue be_ktab_class_Animate_palette[45] = { /* K10 */ be_nested_str_weak(slots), /* K11 */ be_const_int(2), /* K12 */ be_nested_str_weak(slots_arr), - /* K13 */ be_nested_str_weak(palette), - /* K14 */ be_nested_str_weak(get), - /* K15 */ be_nested_str_weak(color), - /* K16 */ be_nested_str_weak(set_rgb), - /* K17 */ be_nested_str_weak(bri), - /* K18 */ be_nested_str_weak(set_bri), - /* K19 */ be_nested_str_weak(r), - /* K20 */ be_nested_str_weak(g), - /* K21 */ be_nested_str_weak(b), - /* K22 */ be_nested_str_weak(obj), - /* K23 */ be_nested_str_weak(mth), - /* K24 */ be_nested_str_weak(ptr_to_palette), - /* K25 */ be_nested_str_weak(set_duration), - /* K26 */ be_nested_str_weak(range_min), - /* K27 */ be_nested_str_weak(range_max), - /* K28 */ be_nested_str_weak(set_range), - /* K29 */ be_nested_str_weak(parse_palette), - /* K30 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), - /* K31 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), - /* K32 */ be_const_real_hex(0x41200000), - /* K33 */ be_nested_str_weak(_X29_X3B), - /* K34 */ be_nested_str_weak(resize), - /* K35 */ be_const_int(1), - /* K36 */ be_nested_str_weak(scale_int), - /* K37 */ be_nested_str_weak(value_error), - /* K38 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex), - /* K39 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive), - /* K40 */ be_nested_str_weak(init), - /* K41 */ be_nested_str_weak(running), - /* K42 */ be_nested_str_weak(light_state), - /* K43 */ be_nested_str_weak(RGB), - /* K44 */ be_nested_str_weak(set_palette), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(palette), + /* K15 */ be_nested_str_weak(get), + /* K16 */ be_nested_str_weak(color), + /* K17 */ be_nested_str_weak(set_rgb), + /* K18 */ be_nested_str_weak(bri), + /* K19 */ be_nested_str_weak(set_bri), + /* K20 */ be_nested_str_weak(r), + /* K21 */ be_nested_str_weak(g), + /* K22 */ be_nested_str_weak(b), + /* K23 */ be_nested_str_weak(obj), + /* K24 */ be_nested_str_weak(mth), + /* K25 */ be_nested_str_weak(ptr_to_palette), + /* K26 */ be_nested_str_weak(set_duration), + /* K27 */ be_nested_str_weak(range_min), + /* K28 */ be_nested_str_weak(range_max), + /* K29 */ be_nested_str_weak(set_range), + /* K30 */ be_nested_str_weak(parse_palette), + /* K31 */ be_const_int(0), + /* K32 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), + /* K33 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), + /* K34 */ be_const_real_hex(0x41200000), + /* K35 */ be_nested_str_weak(_X29_X3B), + /* K36 */ be_nested_str_weak(resize), + /* K37 */ be_nested_str_weak(scale_int), + /* K38 */ be_nested_str_weak(value_error), + /* K39 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex), + /* K40 */ be_const_int(2), + /* K41 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive), + /* K42 */ be_nested_str_weak(init), + /* K43 */ be_nested_str_weak(running), + /* K44 */ be_nested_str_weak(light_state), + /* K45 */ be_nested_str_weak(RGB), + /* K46 */ be_nested_str_weak(set_palette), }; @@ -420,24 +422,24 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x281C0407, // 0023 GE R7 R2 R7 0x781E0000, // 0024 JMPF R7 #0026 0x70020001, // 0025 JMP #0028 - 0x04180D02, // 0026 SUB R6 R6 K2 + 0x04180D0D, // 0026 SUB R6 R6 K13 0x7001FFF6, // 0027 JMP #001F - 0x881C010D, // 0028 GETMBR R7 R0 K13 - 0x8C1C0F0E, // 0029 GETMET R7 R7 K14 + 0x881C010E, // 0028 GETMBR R7 R0 K14 + 0x8C1C0F0F, // 0029 GETMET R7 R7 K15 0x54260003, // 002A LDINT R9 4 0x08240C09, // 002B MUL R9 R6 R9 0x542A0003, // 002C LDINT R10 4 0x7C1C0600, // 002D CALL R7 3 - 0x8820010D, // 002E GETMBR R8 R0 K13 - 0x8C20110E, // 002F GETMET R8 R8 K14 - 0x00280D02, // 0030 ADD R10 R6 K2 + 0x8820010E, // 002E GETMBR R8 R0 K14 + 0x8C20110F, // 002F GETMET R8 R8 K15 + 0x00280D0D, // 0030 ADD R10 R6 K13 0x542E0003, // 0031 LDINT R11 4 0x0828140B, // 0032 MUL R10 R10 R11 0x542E0003, // 0033 LDINT R11 4 0x7C200600, // 0034 CALL R8 3 0x8824010C, // 0035 GETMBR R9 R0 K12 0x94241206, // 0036 GETIDX R9 R9 R6 - 0x00280D02, // 0037 ADD R10 R6 K2 + 0x00280D0D, // 0037 ADD R10 R6 K13 0x882C010C, // 0038 GETMBR R11 R0 K12 0x9428160A, // 0039 GETIDX R10 R11 R10 0x5C300800, // 003A MOVE R12 R4 @@ -480,8 +482,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x544E00FE, // 005F LDINT R19 255 0x2C482413, // 0060 AND R18 R18 R19 0x7C340A00, // 0061 CALL R13 5 - 0x8838010F, // 0062 GETMBR R14 R0 K15 - 0x8C3C1D10, // 0063 GETMET R15 R14 K16 + 0x88380110, // 0062 GETMBR R14 R0 K16 + 0x8C3C1D11, // 0063 GETMET R15 R14 K17 0x54460007, // 0064 LDINT R17 8 0x3C440E11, // 0065 SHR R17 R7 R17 0x544A00FE, // 0066 LDINT R18 255 @@ -495,8 +497,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x545200FE, // 006E LDINT R20 255 0x2C4C2614, // 006F AND R19 R19 R20 0x7C3C0800, // 0070 CALL R15 4 - 0x883C1D11, // 0071 GETMBR R15 R14 K17 - 0x8C401D10, // 0072 GETMET R16 R14 K16 + 0x883C1D12, // 0071 GETMBR R15 R14 K18 + 0x8C401D11, // 0072 GETMET R16 R14 K17 0x544A0007, // 0073 LDINT R18 8 0x3C481012, // 0074 SHR R18 R8 R18 0x544E00FE, // 0075 LDINT R19 255 @@ -510,7 +512,7 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x545600FE, // 007D LDINT R21 255 0x2C502815, // 007E AND R20 R20 R21 0x7C400800, // 007F CALL R16 4 - 0x88401D11, // 0080 GETMBR R16 R14 K17 + 0x88401D12, // 0080 GETMBR R16 R14 K18 0x5C440800, // 0081 MOVE R17 R4 0x5C480400, // 0082 MOVE R18 R2 0x5C4C1200, // 0083 MOVE R19 R9 @@ -518,18 +520,18 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x5C541E00, // 0085 MOVE R21 R15 0x5C582000, // 0086 MOVE R22 R16 0x7C440A00, // 0087 CALL R17 5 - 0x8C481D10, // 0088 GETMET R18 R14 K16 + 0x8C481D11, // 0088 GETMET R18 R14 K17 0x5C501600, // 0089 MOVE R20 R11 0x5C541800, // 008A MOVE R21 R12 0x5C581A00, // 008B MOVE R22 R13 0x7C480800, // 008C CALL R18 4 - 0x8C481D12, // 008D GETMET R18 R14 K18 + 0x8C481D13, // 008D GETMET R18 R14 K19 0x5C502200, // 008E MOVE R20 R17 0x7C480400, // 008F CALL R18 2 - 0x882C1D13, // 0090 GETMBR R11 R14 K19 - 0x88301D14, // 0091 GETMBR R12 R14 K20 - 0x88341D15, // 0092 GETMBR R13 R14 K21 - 0x88480111, // 0093 GETMBR R18 R0 K17 + 0x882C1D14, // 0090 GETMBR R11 R14 K20 + 0x88301D15, // 0091 GETMBR R12 R14 K21 + 0x88341D16, // 0092 GETMBR R13 R14 K22 + 0x88480112, // 0093 GETMBR R18 R0 K18 0x544E0063, // 0094 LDINT R19 100 0x204C2413, // 0095 NE R19 R18 R19 0x784E001A, // 0096 JMPF R19 #00B2 @@ -566,8 +568,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x38501814, // 00B5 SHL R20 R12 R20 0x304C2614, // 00B6 OR R19 R19 R20 0x304C260D, // 00B7 OR R19 R19 R13 - 0x88500116, // 00B8 GETMBR R20 R0 K22 - 0x88540117, // 00B9 GETMBR R21 R0 K23 + 0x88500117, // 00B8 GETMBR R20 R0 K23 + 0x88540118, // 00B9 GETMBR R21 R0 K24 0x78520004, // 00BA JMPF R20 #00C0 0x78560003, // 00BB JMPF R21 #00C0 0x5C582A00, // 00BC MOVE R22 R21 @@ -603,11 +605,11 @@ be_local_closure(class_Animate_palette_set_palette, /* name */ 0x7C080200, // 0002 CALL R2 1 0x1C080501, // 0003 EQ R2 R2 K1 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080118, // 0005 GETMET R2 R0 K24 + 0x8C080119, // 0005 GETMET R2 R0 K25 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x5C040400, // 0008 MOVE R1 R2 - 0x90021A01, // 0009 SETMBR R0 K13 R1 + 0x90021C01, // 0009 SETMBR R0 K14 R1 0x6008000C, // 000A GETGBL R2 G12 0x5C0C0200, // 000B MOVE R3 R1 0x7C080200, // 000C CALL R2 1 @@ -618,21 +620,21 @@ be_local_closure(class_Animate_palette_set_palette, /* name */ 0x4C0C0000, // 0011 LDNIL R3 0x20080403, // 0012 NE R2 R2 R3 0x780A0003, // 0013 JMPF R2 #0018 - 0x8C080119, // 0014 GETMET R2 R0 K25 + 0x8C08011A, // 0014 GETMET R2 R0 K26 0x88100104, // 0015 GETMBR R4 R0 K4 0x7C080400, // 0016 CALL R2 2 0x7002000B, // 0017 JMP #0024 - 0x8808011A, // 0018 GETMBR R2 R0 K26 + 0x8808011B, // 0018 GETMBR R2 R0 K27 0x4C0C0000, // 0019 LDNIL R3 0x20080403, // 001A NE R2 R2 R3 0x780A0007, // 001B JMPF R2 #0024 - 0x8808011B, // 001C GETMBR R2 R0 K27 + 0x8808011C, // 001C GETMBR R2 R0 K28 0x4C0C0000, // 001D LDNIL R3 0x20080403, // 001E NE R2 R2 R3 0x780A0003, // 001F JMPF R2 #0024 - 0x8C08011C, // 0020 GETMET R2 R0 K28 - 0x8810011A, // 0021 GETMBR R4 R0 K26 - 0x8814011B, // 0022 GETMBR R5 R0 K27 + 0x8C08011D, // 0020 GETMET R2 R0 K29 + 0x8810011B, // 0021 GETMBR R4 R0 K27 + 0x8814011C, // 0022 GETMBR R5 R0 K28 0x7C080600, // 0023 CALL R2 3 0x80000000, // 0024 RET 0 }) @@ -662,20 +664,20 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ 0x5C080200, // 0001 MOVE R2 R1 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 - 0x8C0C051D, // 0004 GETMET R3 R2 K29 - 0x58140008, // 0005 LDCONST R5 K8 + 0x8C0C051E, // 0004 GETMET R3 R2 K30 + 0x5814001F, // 0005 LDCONST R5 K31 0x541A03E7, // 0006 LDINT R6 1000 0x7C0C0600, // 0007 CALL R3 3 - 0x5810001E, // 0008 LDCONST R4 K30 - 0x58140008, // 0009 LDCONST R5 K8 + 0x58100020, // 0008 LDCONST R4 K32 + 0x5814001F, // 0009 LDCONST R5 K31 0x6018000C, // 000A GETGBL R6 G12 0x5C1C0600, // 000B MOVE R7 R3 0x7C180200, // 000C CALL R6 1 0x14180A06, // 000D LT R6 R5 R6 0x781A001C, // 000E JMPF R6 #002C 0x94180605, // 000F GETIDX R6 R3 R5 - 0x881C050D, // 0010 GETMBR R7 R2 K13 - 0x8C1C0F0E, // 0011 GETMET R7 R7 K14 + 0x881C050E, // 0010 GETMBR R7 R2 K14 + 0x8C1C0F0F, // 0011 GETMET R7 R7 K15 0x54260003, // 0012 LDINT R9 4 0x08240A09, // 0013 MUL R9 R5 R9 0x542A0003, // 0014 LDINT R10 4 @@ -693,16 +695,16 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ 0x542E00FE, // 0020 LDINT R11 255 0x2C28140B, // 0021 AND R10 R10 R11 0x602C0018, // 0022 GETGBL R11 G24 - 0x5830001F, // 0023 LDCONST R12 K31 + 0x58300021, // 0023 LDCONST R12 K33 0x5C341000, // 0024 MOVE R13 R8 0x5C381200, // 0025 MOVE R14 R9 0x5C3C1400, // 0026 MOVE R15 R10 - 0x0C400D20, // 0027 DIV R16 R6 K32 + 0x0C400D22, // 0027 DIV R16 R6 K34 0x7C2C0A00, // 0028 CALL R11 5 0x0010080B, // 0029 ADD R4 R4 R11 0x00140B02, // 002A ADD R5 R5 K2 0x7001FFDD, // 002B JMP #000A - 0x00100921, // 002C ADD R4 R4 K33 + 0x00100923, // 002C ADD R4 R4 K35 0x80040800, // 002D RET 1 R4 }) ) @@ -730,7 +732,7 @@ be_local_closure(class_Animate_palette_set_bri, /* name */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90022202, // 0003 SETMBR R0 K17 R2 + 0x90022402, // 0003 SETMBR R0 K18 R2 0x80000000, // 0004 RET 0 }) ) @@ -758,72 +760,72 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */ 0x600C0012, // 0000 GETGBL R3 G18 0x7C0C0000, // 0001 CALL R3 0 0x8810010A, // 0002 GETMBR R4 R0 K10 - 0x8C140722, // 0003 GETMET R5 R3 K34 + 0x8C140724, // 0003 GETMET R5 R3 K36 0x5C1C0800, // 0004 MOVE R7 R4 0x7C140400, // 0005 CALL R5 2 - 0x8814010D, // 0006 GETMBR R5 R0 K13 - 0x8C140B0E, // 0007 GETMET R5 R5 K14 - 0x581C0008, // 0008 LDCONST R7 K8 - 0x58200023, // 0009 LDCONST R8 K35 + 0x8814010E, // 0006 GETMBR R5 R0 K14 + 0x8C140B0F, // 0007 GETMET R5 R5 K15 + 0x581C001F, // 0008 LDCONST R7 K31 + 0x58200002, // 0009 LDCONST R8 K2 0x7C140600, // 000A CALL R5 3 - 0x20140B08, // 000B NE R5 R5 K8 + 0x20140B1F, // 000B NE R5 R5 K31 0x78160024, // 000C JMPF R5 #0032 - 0x58140008, // 000D LDCONST R5 K8 - 0x58180008, // 000E LDCONST R6 K8 - 0x041C0923, // 000F SUB R7 R4 K35 + 0x5814001F, // 000D LDCONST R5 K31 + 0x5818001F, // 000E LDCONST R6 K31 + 0x041C0902, // 000F SUB R7 R4 K2 0x141C0C07, // 0010 LT R7 R6 R7 0x781E0008, // 0011 JMPF R7 #001B - 0x881C010D, // 0012 GETMBR R7 R0 K13 - 0x8C1C0F0E, // 0013 GETMET R7 R7 K14 + 0x881C010E, // 0012 GETMBR R7 R0 K14 + 0x8C1C0F0F, // 0013 GETMET R7 R7 K15 0x54260003, // 0014 LDINT R9 4 0x08240C09, // 0015 MUL R9 R6 R9 - 0x58280023, // 0016 LDCONST R10 K35 + 0x58280002, // 0016 LDCONST R10 K2 0x7C1C0600, // 0017 CALL R7 3 0x00140A07, // 0018 ADD R5 R5 R7 - 0x00180D23, // 0019 ADD R6 R6 K35 + 0x00180D02, // 0019 ADD R6 R6 K2 0x7001FFF3, // 001A JMP #000F - 0x581C0008, // 001B LDCONST R7 K8 - 0x58180008, // 001C LDCONST R6 K8 + 0x581C001F, // 001B LDCONST R7 K31 + 0x5818001F, // 001C LDCONST R6 K31 0x14200C04, // 001D LT R8 R6 R4 0x78220011, // 001E JMPF R8 #0031 0xB8220A00, // 001F GETNGBL R8 K5 - 0x8C201124, // 0020 GETMET R8 R8 K36 + 0x8C201125, // 0020 GETMET R8 R8 K37 0x5C280E00, // 0021 MOVE R10 R7 - 0x582C0008, // 0022 LDCONST R11 K8 + 0x582C001F, // 0022 LDCONST R11 K31 0x5C300A00, // 0023 MOVE R12 R5 0x5C340200, // 0024 MOVE R13 R1 0x5C380400, // 0025 MOVE R14 R2 0x7C200C00, // 0026 CALL R8 6 0x980C0C08, // 0027 SETIDX R3 R6 R8 - 0x8820010D, // 0028 GETMBR R8 R0 K13 - 0x8C20110E, // 0029 GETMET R8 R8 K14 + 0x8820010E, // 0028 GETMBR R8 R0 K14 + 0x8C20110F, // 0029 GETMET R8 R8 K15 0x542A0003, // 002A LDINT R10 4 0x08280C0A, // 002B MUL R10 R6 R10 - 0x582C0023, // 002C LDCONST R11 K35 + 0x582C0002, // 002C LDCONST R11 K2 0x7C200600, // 002D CALL R8 3 0x001C0E08, // 002E ADD R7 R7 R8 - 0x00180D23, // 002F ADD R6 R6 K35 + 0x00180D02, // 002F ADD R6 R6 K2 0x7001FFEB, // 0030 JMP #001D 0x70020013, // 0031 JMP #0046 - 0x58140008, // 0032 LDCONST R5 K8 + 0x5814001F, // 0032 LDCONST R5 K31 0x14180A04, // 0033 LT R6 R5 R4 0x781A0010, // 0034 JMPF R6 #0046 - 0x8818010D, // 0035 GETMBR R6 R0 K13 - 0x8C180D0E, // 0036 GETMET R6 R6 K14 + 0x8818010E, // 0035 GETMBR R6 R0 K14 + 0x8C180D0F, // 0036 GETMET R6 R6 K15 0x54220003, // 0037 LDINT R8 4 0x08200A08, // 0038 MUL R8 R5 R8 - 0x58240023, // 0039 LDCONST R9 K35 + 0x58240002, // 0039 LDCONST R9 K2 0x7C180600, // 003A CALL R6 3 0xB81E0A00, // 003B GETNGBL R7 K5 - 0x8C1C0F24, // 003C GETMET R7 R7 K36 + 0x8C1C0F25, // 003C GETMET R7 R7 K37 0x5C240C00, // 003D MOVE R9 R6 - 0x58280008, // 003E LDCONST R10 K8 + 0x5828001F, // 003E LDCONST R10 K31 0x542E00FE, // 003F LDINT R11 255 0x5C300200, // 0040 MOVE R12 R1 0x5C340400, // 0041 MOVE R13 R2 0x7C1C0C00, // 0042 CALL R7 6 0x980C0A07, // 0043 SETIDX R3 R5 R7 - 0x00140B23, // 0044 ADD R5 R5 K35 + 0x00140B02, // 0044 ADD R5 R5 K2 0x7001FFEC, // 0045 JMP #0033 0x80040600, // 0046 RET 1 R3 }) @@ -851,10 +853,10 @@ be_local_closure(class_Animate_palette_set_range, /* name */ ( &(const binstruction[11]) { /* code */ 0x280C0202, // 0000 GE R3 R1 R2 0x780E0000, // 0001 JMPF R3 #0003 - 0xB0064B26, // 0002 RAISE 1 K37 K38 - 0x90023401, // 0003 SETMBR R0 K26 R1 - 0x90023602, // 0004 SETMBR R0 K27 R2 - 0x8C0C011D, // 0005 GETMET R3 R0 K29 + 0xB0064D27, // 0002 RAISE 1 K38 K39 + 0x90023601, // 0003 SETMBR R0 K27 R1 + 0x90023802, // 0004 SETMBR R0 K28 R2 + 0x8C0C011E, // 0005 GETMET R3 R0 K30 0x5C140200, // 0006 MOVE R5 R1 0x5C180400, // 0007 MOVE R6 R2 0x7C0C0600, // 0008 CALL R3 3 @@ -883,45 +885,45 @@ be_local_closure(class_Animate_palette_set_value, /* name */ be_str_weak(set_value), &be_const_str_solidified, ( &(const binstruction[96]) { /* code */ - 0x8808011A, // 0000 GETMBR R2 R0 K26 + 0x8808011B, // 0000 GETMBR R2 R0 K27 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x740A0003, // 0003 JMPT R2 #0008 - 0x8808011B, // 0004 GETMBR R2 R0 K27 + 0x8808011C, // 0004 GETMBR R2 R0 K28 0x4C0C0000, // 0005 LDNIL R3 0x1C080403, // 0006 EQ R2 R2 R3 0x780A0001, // 0007 JMPF R2 #000A 0x4C080000, // 0008 LDNIL R2 0x80040400, // 0009 RET 1 R2 0xB80A0A00, // 000A GETNGBL R2 K5 - 0x88080524, // 000B GETMBR R2 R2 K36 + 0x88080525, // 000B GETMBR R2 R2 K37 0x880C010A, // 000C GETMBR R3 R0 K10 - 0x0410070B, // 000D SUB R4 R3 K11 - 0x24140903, // 000E GT R5 R4 K3 + 0x04100728, // 000D SUB R4 R3 K40 + 0x24140908, // 000E GT R5 R4 K8 0x78160006, // 000F JMPF R5 #0017 0x8814010C, // 0010 GETMBR R5 R0 K12 0x94140A04, // 0011 GETIDX R5 R5 R4 0x28140205, // 0012 GE R5 R1 R5 0x78160000, // 0013 JMPF R5 #0015 0x70020001, // 0014 JMP #0017 - 0x04100902, // 0015 SUB R4 R4 K2 + 0x0410090D, // 0015 SUB R4 R4 K13 0x7001FFF6, // 0016 JMP #000E - 0x8814010D, // 0017 GETMBR R5 R0 K13 - 0x8C140B0E, // 0018 GETMET R5 R5 K14 + 0x8814010E, // 0017 GETMBR R5 R0 K14 + 0x8C140B0F, // 0018 GETMET R5 R5 K15 0x541E0003, // 0019 LDINT R7 4 0x081C0807, // 001A MUL R7 R4 R7 0x54220003, // 001B LDINT R8 4 0x7C140600, // 001C CALL R5 3 - 0x8818010D, // 001D GETMBR R6 R0 K13 - 0x8C180D0E, // 001E GETMET R6 R6 K14 - 0x00200902, // 001F ADD R8 R4 K2 + 0x8818010E, // 001D GETMBR R6 R0 K14 + 0x8C180D0F, // 001E GETMET R6 R6 K15 + 0x0020090D, // 001F ADD R8 R4 K13 0x54260003, // 0020 LDINT R9 4 0x08201009, // 0021 MUL R8 R8 R9 0x54260003, // 0022 LDINT R9 4 0x7C180600, // 0023 CALL R6 3 0x881C010C, // 0024 GETMBR R7 R0 K12 0x941C0E04, // 0025 GETIDX R7 R7 R4 - 0x00200902, // 0026 ADD R8 R4 K2 + 0x0020090D, // 0026 ADD R8 R4 K13 0x8824010C, // 0027 GETMBR R9 R0 K12 0x94201208, // 0028 GETIDX R8 R9 R8 0x5C280400, // 0029 MOVE R10 R2 @@ -970,8 +972,8 @@ be_local_closure(class_Animate_palette_set_value, /* name */ 0x3834140D, // 0054 SHL R13 R10 R13 0x3030180D, // 0055 OR R12 R12 R13 0x3030180B, // 0056 OR R12 R12 R11 - 0x88340116, // 0057 GETMBR R13 R0 K22 - 0x88380117, // 0058 GETMBR R14 R0 K23 + 0x88340117, // 0057 GETMBR R13 R0 K23 + 0x88380118, // 0058 GETMBR R14 R0 K24 0x78360004, // 0059 JMPF R13 #005F 0x783A0003, // 005A JMPF R14 #005F 0x5C3C1C00, // 005B MOVE R15 R14 @@ -1008,9 +1010,9 @@ be_local_closure(class_Animate_palette_set_duration, /* name */ 0x80000400, // 0003 RET 0 0x18080308, // 0004 LE R2 R1 K8 0x780A0000, // 0005 JMPF R2 #0007 - 0xB0064B27, // 0006 RAISE 1 K37 K39 + 0xB0064D29, // 0006 RAISE 1 K38 K41 0x90020801, // 0007 SETMBR R0 K4 R1 - 0x8C08011D, // 0008 GETMET R2 R0 K29 + 0x8C08011E, // 0008 GETMET R2 R0 K30 0x58100008, // 0009 LDCONST R4 K8 0x04140302, // 000A SUB R5 R1 K2 0x7C080600, // 000B CALL R2 3 @@ -1042,19 +1044,19 @@ be_local_closure(class_Animate_palette_init, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0728, // 0003 GETMET R3 R3 K40 + 0x8C0C072A, // 0003 GETMET R3 R3 K42 0x7C0C0200, // 0004 CALL R3 1 0x90020802, // 0005 SETMBR R0 K4 R2 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x90025203, // 0007 SETMBR R0 K41 R3 + 0x90025603, // 0007 SETMBR R0 K43 R3 0x540E0063, // 0008 LDINT R3 100 - 0x90022203, // 0009 SETMBR R0 K17 R3 - 0xB80E5400, // 000A GETNGBL R3 K42 - 0xB8125400, // 000B GETNGBL R4 K42 - 0x8810092B, // 000C GETMBR R4 R4 K43 + 0x90022403, // 0009 SETMBR R0 K18 R3 + 0xB80E5800, // 000A GETNGBL R3 K44 + 0xB8125800, // 000B GETNGBL R4 K44 + 0x8810092D, // 000C GETMBR R4 R4 K45 0x7C0C0200, // 000D CALL R3 1 - 0x90021E03, // 000E SETMBR R0 K15 R3 - 0x8C0C012C, // 000F GETMET R3 R0 K44 + 0x90022003, // 000E SETMBR R0 K16 R3 + 0x8C0C012E, // 000F GETMET R3 R0 K46 0x5C140200, // 0010 MOVE R5 R1 0x7C0C0400, // 0011 CALL R3 2 0x80000000, // 0012 RET 0 @@ -1093,8 +1095,8 @@ be_local_class(Animate_palette, })), be_str_weak(Animate_palette) ); -// compact class 'Animate_oscillator' ktab size: 22, total: 38 (saved 128 bytes) -static const bvalue be_ktab_class_Animate_oscillator[22] = { +// compact class 'Animate_oscillator' ktab size: 24, total: 38 (saved 112 bytes) +static const bvalue be_ktab_class_Animate_oscillator[24] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(duty_cycle), /* K2 */ be_nested_str_weak(a), @@ -1103,20 +1105,22 @@ static const bvalue be_ktab_class_Animate_oscillator[22] = { /* K5 */ be_nested_str_weak(form), /* K6 */ be_nested_str_weak(phase), /* K7 */ be_nested_str_weak(init), - /* K8 */ be_nested_str_weak(duration_ms), - /* K9 */ be_nested_str_weak(value), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(millis), - /* K12 */ be_nested_str_weak(origin), - /* K13 */ be_nested_str_weak(scale_uint), - /* K14 */ be_nested_str_weak(beat), - /* K15 */ be_const_int(1), - /* K16 */ be_nested_str_weak(scale_int), - /* K17 */ be_const_int(2), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(sine_int), - /* K20 */ be_nested_str_weak(obj), - /* K21 */ be_nested_str_weak(mth), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(duration_ms), + /* K10 */ be_nested_str_weak(value), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(millis), + /* K14 */ be_nested_str_weak(origin), + /* K15 */ be_nested_str_weak(scale_uint), + /* K16 */ be_nested_str_weak(beat), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(scale_int), + /* K19 */ be_const_int(2), + /* K20 */ be_const_int(3), + /* K21 */ be_nested_str_weak(sine_int), + /* K22 */ be_nested_str_weak(obj), + /* K23 */ be_nested_str_weak(mth), }; @@ -1287,17 +1291,17 @@ be_local_closure(class_Animate_oscillator_init, /* name */ 0x7C140200, // 0002 CALL R5 1 0x8C140B07, // 0003 GETMET R5 R5 K7 0x7C140200, // 0004 CALL R5 1 - 0x90020D00, // 0005 SETMBR R0 K6 K0 + 0x90020D08, // 0005 SETMBR R0 K6 K8 0x54160031, // 0006 LDINT R5 50 0x90020205, // 0007 SETMBR R0 K1 R5 0x90020401, // 0008 SETMBR R0 K2 R1 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x90021003, // 000A SETMBR R0 K8 R3 - 0x90021201, // 000B SETMBR R0 K9 R1 + 0x90021203, // 000A SETMBR R0 K9 R3 + 0x90021401, // 000B SETMBR R0 K10 R1 0x4C140000, // 000C LDNIL R5 0x1C140805, // 000D EQ R5 R4 R5 0x78160000, // 000E JMPF R5 #0010 - 0x58100004, // 000F LDCONST R4 K4 + 0x5810000B, // 000F LDCONST R4 K11 0x90020A04, // 0010 SETMBR R0 K5 R4 0x80000000, // 0011 RET 0 }) @@ -1323,7 +1327,7 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ be_str_weak(animate), &be_const_str_solidified, ( &(const binstruction[141]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x88080109, // 0000 GETMBR R2 R0 K9 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0000, // 0003 JMPF R2 #0005 @@ -1331,20 +1335,20 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x4C080000, // 0005 LDNIL R2 0x1C080202, // 0006 EQ R2 R1 R2 0x780A0003, // 0007 JMPF R2 #000C - 0xB80A1400, // 0008 GETNGBL R2 K10 - 0x8C08050B, // 0009 GETMET R2 R2 K11 + 0xB80A1800, // 0008 GETNGBL R2 K12 + 0x8C08050D, // 0009 GETMET R2 R2 K13 0x7C080200, // 000A CALL R2 1 0x5C040400, // 000B MOVE R1 R2 - 0x8808010C, // 000C GETMBR R2 R0 K12 + 0x8808010E, // 000C GETMBR R2 R0 K14 0x04080202, // 000D SUB R2 R1 R2 0x140C0500, // 000E LT R3 R2 K0 0x780E0001, // 000F JMPF R3 #0012 0x58080000, // 0010 LDCONST R2 K0 - 0x8804010C, // 0011 GETMBR R1 R0 K12 - 0x880C0108, // 0012 GETMBR R3 R0 K8 + 0x8804010E, // 0011 GETMBR R1 R0 K14 + 0x880C0109, // 0012 GETMBR R3 R0 K9 0x4C100000, // 0013 LDNIL R4 - 0xB8161400, // 0014 GETNGBL R5 K10 - 0x8C140B0D, // 0015 GETMET R5 R5 K13 + 0xB8161800, // 0014 GETNGBL R5 K12 + 0x8C140B0F, // 0015 GETMET R5 R5 K15 0x881C0101, // 0016 GETMBR R7 R0 K1 0x58200000, // 0017 LDCONST R8 K0 0x54260063, // 0018 LDINT R9 100 @@ -1356,21 +1360,21 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x78160007, // 001E JMPF R5 #0027 0x0C180403, // 001F DIV R6 R2 R3 0x08180C03, // 0020 MUL R6 R6 R3 - 0x8814010C, // 0021 GETMBR R5 R0 K12 + 0x8814010E, // 0021 GETMBR R5 R0 K14 0x00140A06, // 0022 ADD R5 R5 R6 - 0x90021805, // 0023 SETMBR R0 K12 R5 + 0x90021C05, // 0023 SETMBR R0 K14 R5 0x10080403, // 0024 MOD R2 R2 R3 - 0x8C14010E, // 0025 GETMET R5 R0 K14 + 0x8C140110, // 0025 GETMET R5 R0 K16 0x7C140200, // 0026 CALL R5 1 0x88140102, // 0027 GETMBR R5 R0 K2 0x88180103, // 0028 GETMBR R6 R0 K3 - 0x881C0109, // 0029 GETMBR R7 R0 K9 + 0x881C010A, // 0029 GETMBR R7 R0 K10 0x5C200400, // 002A MOVE R8 R2 0x88240106, // 002B GETMBR R9 R0 K6 0x24241300, // 002C GT R9 R9 K0 0x7826000B, // 002D JMPF R9 #003A - 0xB8261400, // 002E GETNGBL R9 K10 - 0x8C24130D, // 002F GETMET R9 R9 K13 + 0xB8261800, // 002E GETNGBL R9 K12 + 0x8C24130F, // 002F GETMET R9 R9 K15 0x882C0106, // 0030 GETMBR R11 R0 K6 0x58300000, // 0031 LDCONST R12 K0 0x54360063, // 0032 LDINT R13 100 @@ -1382,45 +1386,45 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x78260000, // 0038 JMPF R9 #003A 0x04201003, // 0039 SUB R8 R8 R3 0x88240105, // 003A GETMBR R9 R0 K5 - 0x1C24130F, // 003B EQ R9 R9 K15 + 0x1C241311, // 003B EQ R9 R9 K17 0x78260009, // 003C JMPF R9 #0047 - 0xB8261400, // 003D GETNGBL R9 K10 - 0x8C241310, // 003E GETMET R9 R9 K16 + 0xB8261800, // 003D GETNGBL R9 K12 + 0x8C241312, // 003E GETMET R9 R9 K18 0x5C2C1000, // 003F MOVE R11 R8 0x58300000, // 0040 LDCONST R12 K0 - 0x0434070F, // 0041 SUB R13 R3 K15 + 0x04340711, // 0041 SUB R13 R3 K17 0x5C380A00, // 0042 MOVE R14 R5 0x5C3C0C00, // 0043 MOVE R15 R6 0x7C240C00, // 0044 CALL R9 6 0x5C1C1200, // 0045 MOVE R7 R9 0x7002003B, // 0046 JMP #0083 0x88240105, // 0047 GETMBR R9 R0 K5 - 0x1C241311, // 0048 EQ R9 R9 K17 + 0x1C241313, // 0048 EQ R9 R9 K19 0x78260015, // 0049 JMPF R9 #0060 0x14241004, // 004A LT R9 R8 R4 0x78260009, // 004B JMPF R9 #0056 - 0xB8261400, // 004C GETNGBL R9 K10 - 0x8C241310, // 004D GETMET R9 R9 K16 + 0xB8261800, // 004C GETNGBL R9 K12 + 0x8C241312, // 004D GETMET R9 R9 K18 0x5C2C1000, // 004E MOVE R11 R8 0x58300000, // 004F LDCONST R12 K0 - 0x0434090F, // 0050 SUB R13 R4 K15 + 0x04340911, // 0050 SUB R13 R4 K17 0x5C380A00, // 0051 MOVE R14 R5 0x5C3C0C00, // 0052 MOVE R15 R6 0x7C240C00, // 0053 CALL R9 6 0x5C1C1200, // 0054 MOVE R7 R9 0x70020008, // 0055 JMP #005F - 0xB8261400, // 0056 GETNGBL R9 K10 - 0x8C241310, // 0057 GETMET R9 R9 K16 + 0xB8261800, // 0056 GETNGBL R9 K12 + 0x8C241312, // 0057 GETMET R9 R9 K18 0x5C2C1000, // 0058 MOVE R11 R8 0x5C300800, // 0059 MOVE R12 R4 - 0x0434070F, // 005A SUB R13 R3 K15 + 0x04340711, // 005A SUB R13 R3 K17 0x5C380C00, // 005B MOVE R14 R6 0x5C3C0A00, // 005C MOVE R15 R5 0x7C240C00, // 005D CALL R9 6 0x5C1C1200, // 005E MOVE R7 R9 0x70020022, // 005F JMP #0083 0x88240105, // 0060 GETMBR R9 R0 K5 - 0x1C241312, // 0061 EQ R9 R9 K18 + 0x1C241314, // 0061 EQ R9 R9 K20 0x78260005, // 0062 JMPF R9 #0069 0x14241004, // 0063 LT R9 R8 R4 0x78260001, // 0064 JMPF R9 #0067 @@ -1432,21 +1436,21 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x542A0003, // 006A LDINT R10 4 0x1C24120A, // 006B EQ R9 R9 R10 0x78260015, // 006C JMPF R9 #0083 - 0xB8261400, // 006D GETNGBL R9 K10 - 0x8C241310, // 006E GETMET R9 R9 K16 + 0xB8261800, // 006D GETNGBL R9 K12 + 0x8C241312, // 006E GETMET R9 R9 K18 0x5C2C1000, // 006F MOVE R11 R8 0x58300000, // 0070 LDCONST R12 K0 - 0x0434070F, // 0071 SUB R13 R3 K15 + 0x04340711, // 0071 SUB R13 R3 K17 0x58380000, // 0072 LDCONST R14 K0 0x543E7FFE, // 0073 LDINT R15 32767 0x7C240C00, // 0074 CALL R9 6 - 0xB82A1400, // 0075 GETNGBL R10 K10 - 0x8C281513, // 0076 GETMET R10 R10 K19 + 0xB82A1800, // 0075 GETNGBL R10 K12 + 0x8C281515, // 0076 GETMET R10 R10 K21 0x54321FFF, // 0077 LDINT R12 8192 0x0430120C, // 0078 SUB R12 R9 R12 0x7C280400, // 0079 CALL R10 2 - 0xB82E1400, // 007A GETNGBL R11 K10 - 0x8C2C1710, // 007B GETMET R11 R11 K16 + 0xB82E1800, // 007A GETNGBL R11 K12 + 0x8C2C1712, // 007B GETMET R11 R11 K18 0x5C341400, // 007C MOVE R13 R10 0x5439EFFF, // 007D LDINT R14 -4096 0x543E0FFF, // 007E LDINT R15 4096 @@ -1454,9 +1458,9 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x5C440C00, // 0080 MOVE R17 R6 0x7C2C0C00, // 0081 CALL R11 6 0x5C1C1600, // 0082 MOVE R7 R11 - 0x90021207, // 0083 SETMBR R0 K9 R7 - 0x88240114, // 0084 GETMBR R9 R0 K20 - 0x88280115, // 0085 GETMBR R10 R0 K21 + 0x90021407, // 0083 SETMBR R0 K10 R7 + 0x88240116, // 0084 GETMBR R9 R0 K22 + 0x88280117, // 0085 GETMBR R10 R0 K23 0x78260004, // 0086 JMPF R9 #008C 0x782A0003, // 0087 JMPF R10 #008C 0x5C2C1400, // 0088 MOVE R11 R10 diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h index 4e2246ae4..9e094c5a2 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h @@ -3,16 +3,6 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Leds_frame_be' ktab size: 6, total: 7 (saved 8 bytes) -static const bvalue be_ktab_class_Leds_frame_be[6] = { - /* K0 */ be_nested_str(set), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(setitem), - /* K3 */ be_nested_str(get), - /* K4 */ be_nested_str(pixel_size), - /* K5 */ be_nested_str(init), -}; - extern const bclass be_class_Leds_frame_be; @@ -23,13 +13,15 @@ be_local_closure(class_Leds_frame_be_setitem, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 10, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_Leds_frame_be, /* shared constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str(set), + }), &be_const_str_setitem, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -53,20 +45,23 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ be_nested_proto( 11, /* nstack */ 6, /* argc */ - 10, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_Leds_frame_be, /* shared constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str(setitem), + }), &be_const_str_set_pixel, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x4C180000, // 0000 LDNIL R6 0x1C180A06, // 0001 EQ R6 R5 R6 0x781A0000, // 0002 JMPF R6 #0004 - 0x58140001, // 0003 LDCONST R5 K1 + 0x58140000, // 0003 LDCONST R5 K0 0x541A00FE, // 0004 LDINT R6 255 0x2C180A06, // 0005 AND R6 R5 R6 0x541E0017, // 0006 LDINT R7 24 @@ -84,7 +79,7 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ 0x541E00FE, // 0012 LDINT R7 255 0x2C1C0807, // 0013 AND R7 R4 R7 0x30180C07, // 0014 OR R6 R6 R7 - 0x8C1C0102, // 0015 GETMET R7 R0 K2 + 0x8C1C0101, // 0015 GETMET R7 R0 K1 0x5C240200, // 0016 MOVE R9 R1 0x5C280C00, // 0017 MOVE R10 R6 0x7C1C0600, // 0018 CALL R7 3 @@ -102,17 +97,19 @@ be_local_closure(class_Leds_frame_be_item, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 10, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_Leds_frame_be, /* shared constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str(get), + }), &be_const_str_item, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C080103, // 0000 GETMET R2 R0 K3 + 0x8C080100, // 0000 GETMET R2 R0 K0 0x54120003, // 0001 LDINT R4 4 0x08100204, // 0002 MUL R4 R1 R4 0x54160003, // 0003 LDINT R5 4 @@ -131,24 +128,28 @@ be_local_closure(class_Leds_frame_be_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 10, /* varg */ + 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_Leds_frame_be, /* shared constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str(pixel_size), + /* K2 */ be_nested_str(init), + }), &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x14080301, // 0000 LT R2 R1 K1 + 0x14080300, // 0000 LT R2 R1 K0 0x780A0000, // 0001 JMPF R2 #0003 0x44040200, // 0002 NEG R1 R1 - 0x90020801, // 0003 SETMBR R0 K4 R1 + 0x90020201, // 0003 SETMBR R0 K1 R1 0x60080003, // 0004 GETGBL R2 G3 0x5C0C0000, // 0005 MOVE R3 R0 0x7C080200, // 0006 CALL R2 1 - 0x8C080505, // 0007 GETMET R2 R2 K5 + 0x8C080502, // 0007 GETMET R2 R2 K2 0x5411FFFB, // 0008 LDINT R4 -4 0x08100204, // 0009 MUL R4 R1 R4 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index d7d7c0ffd..13ecf842a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Commisioning_Context' ktab size: 190, total: 359 (saved 1352 bytes) -static const bvalue be_ktab_class_Matter_Commisioning_Context[190] = { +// compact class 'Matter_Commisioning_Context' ktab size: 184, total: 359 (saved 1400 bytes) +static const bvalue be_ktab_class_Matter_Commisioning_Context[184] = { /* K0 */ be_nested_str_weak(session), /* K1 */ be_nested_str_weak(raw), /* K2 */ be_nested_str_weak(app_payload_idx), @@ -41,160 +41,154 @@ static const bvalue be_ktab_class_Matter_Commisioning_Context[190] = { /* K33 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message), /* K34 */ be_const_int(2), /* K35 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29), - /* K36 */ be_const_int(3), - /* K37 */ be_nested_str_weak(send_status_report), - /* K38 */ be_const_int(1), - /* K39 */ be_nested_str_weak(matter), - /* K40 */ be_nested_str_weak(PBKDFParamRequest), - /* K41 */ be_nested_str_weak(parse), - /* K42 */ be_nested_str_weak(set_mode_PASE), - /* K43 */ be_nested_str_weak(__Msg1), - /* K44 */ be_nested_str_weak(passcodeId), - /* K45 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id), - /* K46 */ be_nested_str_weak(__future_initiator_session_id), - /* K47 */ be_nested_str_weak(initiator_session_id), - /* K48 */ be_nested_str_weak(__future_local_session_id), - /* K49 */ be_nested_str_weak(gen_local_session_id), - /* K50 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), - /* K51 */ be_nested_str_weak(remote_ip), - /* K52 */ be_nested_str_weak(remote_port), - /* K53 */ be_nested_str_weak(PBKDFParamResponse), - /* K54 */ be_nested_str_weak(initiatorRandom), - /* K55 */ be_nested_str_weak(responderRandom), - /* K56 */ be_nested_str_weak(random), - /* K57 */ be_nested_str_weak(responderSessionId), - /* K58 */ be_nested_str_weak(pbkdf_parameters_salt), - /* K59 */ be_nested_str_weak(commissioning_salt), - /* K60 */ be_nested_str_weak(pbkdf_parameters_iterations), - /* K61 */ be_nested_str_weak(commissioning_iterations), - /* K62 */ be_nested_str_weak(tlv2raw), - /* K63 */ be_nested_str_weak(__Msg2), - /* K64 */ be_nested_str_weak(build_response), - /* K65 */ be_nested_str_weak(encode_frame), - /* K66 */ be_nested_str_weak(responder), - /* K67 */ be_nested_str_weak(send_response_frame), - /* K68 */ be_nested_str_weak(add), - /* K69 */ be_const_int(2), - /* K70 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), - /* K71 */ be_nested_str_weak(Pake1), - /* K72 */ be_nested_str_weak(pA), - /* K73 */ be_nested_str_weak(SPAKE2P_Matter), - /* K74 */ be_nested_str_weak(commissioning_w0), - /* K75 */ be_nested_str_weak(commissioning_L), - /* K76 */ be_nested_str_weak(compute_pB), - /* K77 */ be_nested_str_weak(compute_ZV_verifier), - /* K78 */ be_nested_str_weak(SHA256), - /* K79 */ be_nested_str_weak(fromstring), - /* K80 */ be_nested_str_weak(Matter_Context_Prefix), - /* K81 */ be_nested_str_weak(set_context), - /* K82 */ be_nested_str_weak(compute_TT_hash), - /* K83 */ be_nested_str_weak(Pake2), - /* K84 */ be_nested_str_weak(pB), - /* K85 */ be_nested_str_weak(cB), - /* K86 */ be_nested_str_weak(__spake_cA), - /* K87 */ be_nested_str_weak(cA), - /* K88 */ be_nested_str_weak(__spake_Ke), - /* K89 */ be_nested_str_weak(Ke), - /* K90 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K91 */ be_nested_str_weak(_ip), - /* K92 */ be_nested_str_weak(_port), - /* K93 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), - /* K94 */ be_nested_str_weak(Pake3), - /* K95 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), - /* K96 */ be_nested_str_weak(rtc_utc), - /* K97 */ be_nested_str_weak(HKDF_SHA256), - /* K98 */ be_nested_str_weak(derive), - /* K99 */ be_nested_str_weak(SEKeys_Info), - /* K100 */ be_nested_str_weak(add_session), - /* K101 */ be_const_int(3), - /* K102 */ be_const_int(1), - /* K103 */ be_const_int(2), - /* K104 */ be_nested_str_weak(Sigma3), - /* K105 */ be_nested_str_weak(S3K_Info), - /* K106 */ be_nested_str_weak(shared_secret), - /* K107 */ be_nested_str_weak(TBEData3Encrypted), - /* K108 */ be_const_int(2147483647), - /* K109 */ be_nested_str_weak(AES_CCM), - /* K110 */ be_nested_str_weak(TBEData3_Nonce), - /* K111 */ be_nested_str_weak(decrypt), - /* K112 */ be_nested_str_weak(tag), - /* K113 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), - /* K114 */ be_nested_str_weak(TLV), - /* K115 */ be_nested_str_weak(findsubval), - /* K116 */ be_nested_str_weak(findsub), - /* K117 */ be_nested_str_weak(int), - /* K118 */ be_nested_str_weak(peer_node_id), - /* K119 */ be_nested_str_weak(int64), - /* K120 */ be_nested_str_weak(fromu32), - /* K121 */ be_nested_str_weak(tobytes), - /* K122 */ be_nested_str_weak(Matter_TLV_struct), - /* K123 */ be_nested_str_weak(add_TLV), - /* K124 */ be_nested_str_weak(B1), - /* K125 */ be_nested_str_weak(__initiator_pub), - /* K126 */ be_nested_str_weak(__responder_pub), - /* K127 */ be_nested_str_weak(EC_P256), - /* K128 */ be_nested_str_weak(ecdsa_verify_sha256), - /* K129 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), - /* K130 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), - /* K131 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), - /* K132 */ be_nested_str_weak(Msg3), - /* K133 */ be_nested_str_weak(close), - /* K134 */ be_nested_str_weak(_breadcrumb), - /* K135 */ be_nested_str_weak(counter_snd_next), - /* K136 */ be_nested_str_weak(set_persist), - /* K137 */ be_nested_str_weak(set_no_expiration), - /* K138 */ be_nested_str_weak(persist_to_fabric), - /* K139 */ be_nested_str_weak(save), - /* K140 */ be_nested_str_weak(is_commissioning_open), - /* K141 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), - /* K142 */ be_nested_str_weak(parse_PBKDFParamRequest), - /* K143 */ be_nested_str_weak(parse_Pake1), - /* K144 */ be_nested_str_weak(parse_Pake3), - /* K145 */ be_nested_str_weak(parse_Sigma1), - /* K146 */ be_nested_str_weak(parse_Sigma3), - /* K147 */ be_nested_str_weak(parse_StatusReport), - /* K148 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), - /* K149 */ be_nested_str_weak(Sigma1), - /* K150 */ be_nested_str_weak(initiatorEphPubKey), - /* K151 */ be_nested_str_weak(resumptionID), - /* K152 */ be_nested_str_weak(initiatorResumeMIC), - /* K153 */ be_nested_str_weak(find_session_by_resumption_id), - /* K154 */ be_nested_str_weak(_fabric), - /* K155 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), - /* K156 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption), - /* K157 */ be_nested_str_weak(Sigma1_Resume), - /* K158 */ be_nested_str_weak(NCASE_SigmaS1), - /* K159 */ be_nested_str_weak(_source_node_id), - /* K160 */ be_nested_str_weak(source_node_id), - /* K161 */ be_nested_str_weak(set_mode_CASE), - /* K162 */ be_nested_str_weak(resumption_id), - /* K163 */ be_nested_str_weak(Sigma2_Resume), - /* K164 */ be_nested_str_weak(NCASE_SigmaS2), - /* K165 */ be_nested_str_weak(Sigma2Resume), - /* K166 */ be_nested_str_weak(sigma2ResumeMIC), - /* K167 */ be_nested_str_weak(responderSessionID), - /* K168 */ be_nested_str_weak(SessionResumptionKeys), - /* K169 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), - /* K170 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), - /* K171 */ be_nested_str_weak(find_fabric_by_destination_id), - /* K172 */ be_nested_str_weak(destinationId), - /* K173 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), - /* K174 */ be_nested_str_weak(__responder_priv), - /* K175 */ be_nested_str_weak(public_key), - /* K176 */ be_nested_str_weak(shared_key), - /* K177 */ be_nested_str_weak(B2), - /* K178 */ be_nested_str_weak(get_noc), - /* K179 */ be_nested_str_weak(get_icac), - /* K180 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K181 */ be_nested_str_weak(get_pk), - /* K182 */ be_nested_str_weak(Msg1), - /* K183 */ be_nested_str_weak(S2K_Info), - /* K184 */ be_nested_str_weak(TBEData2_Nonce), - /* K185 */ be_nested_str_weak(encrypt), - /* K186 */ be_nested_str_weak(Sigma2), - /* K187 */ be_nested_str_weak(responderEphPubKey), - /* K188 */ be_nested_str_weak(encrypted2), - /* K189 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K36 */ be_nested_str_weak(send_status_report), + /* K37 */ be_const_int(1), + /* K38 */ be_nested_str_weak(matter), + /* K39 */ be_nested_str_weak(PBKDFParamRequest), + /* K40 */ be_nested_str_weak(parse), + /* K41 */ be_nested_str_weak(set_mode_PASE), + /* K42 */ be_nested_str_weak(__Msg1), + /* K43 */ be_nested_str_weak(passcodeId), + /* K44 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id), + /* K45 */ be_nested_str_weak(__future_initiator_session_id), + /* K46 */ be_nested_str_weak(initiator_session_id), + /* K47 */ be_nested_str_weak(__future_local_session_id), + /* K48 */ be_nested_str_weak(gen_local_session_id), + /* K49 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27), + /* K50 */ be_nested_str_weak(remote_ip), + /* K51 */ be_nested_str_weak(remote_port), + /* K52 */ be_nested_str_weak(PBKDFParamResponse), + /* K53 */ be_nested_str_weak(initiatorRandom), + /* K54 */ be_nested_str_weak(responderRandom), + /* K55 */ be_nested_str_weak(random), + /* K56 */ be_nested_str_weak(responderSessionId), + /* K57 */ be_nested_str_weak(pbkdf_parameters_salt), + /* K58 */ be_nested_str_weak(commissioning_salt), + /* K59 */ be_nested_str_weak(pbkdf_parameters_iterations), + /* K60 */ be_nested_str_weak(commissioning_iterations), + /* K61 */ be_nested_str_weak(tlv2raw), + /* K62 */ be_nested_str_weak(__Msg2), + /* K63 */ be_nested_str_weak(build_response), + /* K64 */ be_nested_str_weak(encode_frame), + /* K65 */ be_nested_str_weak(responder), + /* K66 */ be_nested_str_weak(send_response_frame), + /* K67 */ be_nested_str_weak(add), + /* K68 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message), + /* K69 */ be_nested_str_weak(Pake1), + /* K70 */ be_nested_str_weak(pA), + /* K71 */ be_nested_str_weak(SPAKE2P_Matter), + /* K72 */ be_nested_str_weak(commissioning_w0), + /* K73 */ be_nested_str_weak(commissioning_L), + /* K74 */ be_nested_str_weak(compute_pB), + /* K75 */ be_nested_str_weak(compute_ZV_verifier), + /* K76 */ be_nested_str_weak(SHA256), + /* K77 */ be_nested_str_weak(fromstring), + /* K78 */ be_nested_str_weak(Matter_Context_Prefix), + /* K79 */ be_nested_str_weak(set_context), + /* K80 */ be_nested_str_weak(compute_TT_hash), + /* K81 */ be_nested_str_weak(Pake2), + /* K82 */ be_nested_str_weak(pB), + /* K83 */ be_nested_str_weak(cB), + /* K84 */ be_nested_str_weak(__spake_cA), + /* K85 */ be_nested_str_weak(cA), + /* K86 */ be_nested_str_weak(__spake_Ke), + /* K87 */ be_nested_str_weak(Ke), + /* K88 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K89 */ be_nested_str_weak(_ip), + /* K90 */ be_nested_str_weak(_port), + /* K91 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message), + /* K92 */ be_nested_str_weak(Pake3), + /* K93 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received), + /* K94 */ be_nested_str_weak(rtc_utc), + /* K95 */ be_nested_str_weak(HKDF_SHA256), + /* K96 */ be_nested_str_weak(derive), + /* K97 */ be_nested_str_weak(SEKeys_Info), + /* K98 */ be_nested_str_weak(add_session), + /* K99 */ be_nested_str_weak(Sigma3), + /* K100 */ be_nested_str_weak(S3K_Info), + /* K101 */ be_nested_str_weak(shared_secret), + /* K102 */ be_nested_str_weak(TBEData3Encrypted), + /* K103 */ be_nested_str_weak(AES_CCM), + /* K104 */ be_nested_str_weak(TBEData3_Nonce), + /* K105 */ be_nested_str_weak(decrypt), + /* K106 */ be_nested_str_weak(tag), + /* K107 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match), + /* K108 */ be_nested_str_weak(TLV), + /* K109 */ be_nested_str_weak(findsubval), + /* K110 */ be_nested_str_weak(findsub), + /* K111 */ be_nested_str_weak(int), + /* K112 */ be_nested_str_weak(peer_node_id), + /* K113 */ be_nested_str_weak(int64), + /* K114 */ be_nested_str_weak(fromu32), + /* K115 */ be_nested_str_weak(tobytes), + /* K116 */ be_nested_str_weak(Matter_TLV_struct), + /* K117 */ be_nested_str_weak(add_TLV), + /* K118 */ be_nested_str_weak(B1), + /* K119 */ be_nested_str_weak(__initiator_pub), + /* K120 */ be_nested_str_weak(__responder_pub), + /* K121 */ be_nested_str_weak(EC_P256), + /* K122 */ be_nested_str_weak(ecdsa_verify_sha256), + /* K123 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature), + /* K124 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways), + /* K125 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys), + /* K126 */ be_nested_str_weak(Msg3), + /* K127 */ be_nested_str_weak(close), + /* K128 */ be_nested_str_weak(_breadcrumb), + /* K129 */ be_nested_str_weak(counter_snd_next), + /* K130 */ be_nested_str_weak(set_persist), + /* K131 */ be_nested_str_weak(set_no_expiration), + /* K132 */ be_nested_str_weak(persist_to_fabric), + /* K133 */ be_nested_str_weak(save), + /* K134 */ be_nested_str_weak(is_commissioning_open), + /* K135 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open), + /* K136 */ be_nested_str_weak(parse_PBKDFParamRequest), + /* K137 */ be_nested_str_weak(parse_Pake1), + /* K138 */ be_nested_str_weak(parse_Pake3), + /* K139 */ be_nested_str_weak(parse_Sigma1), + /* K140 */ be_nested_str_weak(parse_Sigma3), + /* K141 */ be_nested_str_weak(parse_StatusReport), + /* K142 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X), + /* K143 */ be_nested_str_weak(Sigma1), + /* K144 */ be_nested_str_weak(initiatorEphPubKey), + /* K145 */ be_nested_str_weak(resumptionID), + /* K146 */ be_nested_str_weak(initiatorResumeMIC), + /* K147 */ be_nested_str_weak(find_session_by_resumption_id), + /* K148 */ be_nested_str_weak(_fabric), + /* K149 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s), + /* K150 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption), + /* K151 */ be_nested_str_weak(Sigma1_Resume), + /* K152 */ be_nested_str_weak(NCASE_SigmaS1), + /* K153 */ be_nested_str_weak(_source_node_id), + /* K154 */ be_nested_str_weak(source_node_id), + /* K155 */ be_nested_str_weak(set_mode_CASE), + /* K156 */ be_nested_str_weak(resumption_id), + /* K157 */ be_nested_str_weak(Sigma2_Resume), + /* K158 */ be_nested_str_weak(NCASE_SigmaS2), + /* K159 */ be_nested_str_weak(Sigma2Resume), + /* K160 */ be_nested_str_weak(sigma2ResumeMIC), + /* K161 */ be_nested_str_weak(responderSessionID), + /* K162 */ be_nested_str_weak(SessionResumptionKeys), + /* K163 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED), + /* K164 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE), + /* K165 */ be_nested_str_weak(find_fabric_by_destination_id), + /* K166 */ be_nested_str_weak(destinationId), + /* K167 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), + /* K168 */ be_nested_str_weak(__responder_priv), + /* K169 */ be_nested_str_weak(public_key), + /* K170 */ be_nested_str_weak(shared_key), + /* K171 */ be_nested_str_weak(B2), + /* K172 */ be_nested_str_weak(get_noc), + /* K173 */ be_nested_str_weak(get_icac), + /* K174 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K175 */ be_nested_str_weak(get_pk), + /* K176 */ be_nested_str_weak(Msg1), + /* K177 */ be_nested_str_weak(S2K_Info), + /* K178 */ be_nested_str_weak(TBEData2_Nonce), + /* K179 */ be_nested_str_weak(encrypt), + /* K180 */ be_nested_str_weak(Sigma2), + /* K181 */ be_nested_str_weak(responderEphPubKey), + /* K182 */ be_nested_str_weak(encrypted2), + /* K183 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i), }; @@ -439,97 +433,97 @@ be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* 0x7C100400, // 000F CALL R4 2 0xB8120A00, // 0010 GETNGBL R4 K5 0x58140023, // 0011 LDCONST R5 K35 - 0x58180024, // 0012 LDCONST R6 K36 + 0x58180008, // 0012 LDCONST R6 K8 0x7C100400, // 0013 CALL R4 2 - 0x8C100125, // 0014 GETMET R4 R0 K37 + 0x8C100124, // 0014 GETMET R4 R0 K36 0x5C180200, // 0015 MOVE R6 R1 - 0x581C0026, // 0016 LDCONST R7 K38 + 0x581C0025, // 0016 LDCONST R7 K37 0x5820001F, // 0017 LDCONST R8 K31 0x58240022, // 0018 LDCONST R9 K34 0x50280000, // 0019 LDBOOL R10 0 0 0x7C100C00, // 001A CALL R4 6 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 - 0xB8124E00, // 001D GETNGBL R4 K39 - 0x8C100928, // 001E GETMET R4 R4 K40 + 0xB8124C00, // 001D GETNGBL R4 K38 + 0x8C100927, // 001E GETMET R4 R4 K39 0x7C100200, // 001F CALL R4 1 - 0x8C100929, // 0020 GETMET R4 R4 K41 + 0x8C100928, // 0020 GETMET R4 R4 K40 0x88180301, // 0021 GETMBR R6 R1 K1 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 0x88140300, // 0024 GETMBR R5 R1 K0 - 0x8C140B2A, // 0025 GETMET R5 R5 K42 + 0x8C140B29, // 0025 GETMET R5 R5 K41 0x7C140200, // 0026 CALL R5 1 0x88140302, // 0027 GETMBR R5 R1 K2 0x40140B03, // 0028 CONNECT R5 R5 K3 0x88180301, // 0029 GETMBR R6 R1 K1 0x94140C05, // 002A GETIDX R5 R6 R5 - 0x900E5605, // 002B SETMBR R3 K43 R5 - 0x8814092C, // 002C GETMBR R5 R4 K44 + 0x900E5405, // 002B SETMBR R3 K42 R5 + 0x8814092B, // 002C GETMBR R5 R4 K43 0x20140B1F, // 002D NE R5 R5 K31 0x78160010, // 002E JMPF R5 #0040 0xB8160A00, // 002F GETNGBL R5 K5 - 0x5818002D, // 0030 LDCONST R6 K45 + 0x5818002C, // 0030 LDCONST R6 K44 0x581C0022, // 0031 LDCONST R7 K34 0x7C140400, // 0032 CALL R5 2 0xB8160A00, // 0033 GETNGBL R5 K5 0x58180023, // 0034 LDCONST R6 K35 - 0x581C0024, // 0035 LDCONST R7 K36 + 0x581C0008, // 0035 LDCONST R7 K8 0x7C140400, // 0036 CALL R5 2 - 0x8C140125, // 0037 GETMET R5 R0 K37 + 0x8C140124, // 0037 GETMET R5 R0 K36 0x5C1C0200, // 0038 MOVE R7 R1 - 0x58200026, // 0039 LDCONST R8 K38 + 0x58200025, // 0039 LDCONST R8 K37 0x5824001F, // 003A LDCONST R9 K31 0x58280022, // 003B LDCONST R10 K34 0x502C0000, // 003C LDBOOL R11 0 0 0x7C140C00, // 003D CALL R5 6 0x50140000, // 003E LDBOOL R5 0 0 0x80040A00, // 003F RET 1 R5 - 0x8814092F, // 0040 GETMBR R5 R4 K47 - 0x900E5C05, // 0041 SETMBR R3 K46 R5 + 0x8814092E, // 0040 GETMBR R5 R4 K46 + 0x900E5A05, // 0041 SETMBR R3 K45 R5 0x8814010D, // 0042 GETMBR R5 R0 K13 0x88140B0E, // 0043 GETMBR R5 R5 K14 - 0x8C140B31, // 0044 GETMET R5 R5 K49 + 0x8C140B30, // 0044 GETMET R5 R5 K48 0x7C140200, // 0045 CALL R5 1 - 0x900E6005, // 0046 SETMBR R3 K48 R5 + 0x900E5E05, // 0046 SETMBR R3 K47 R5 0xB8160A00, // 0047 GETNGBL R5 K5 0x60180018, // 0048 GETGBL R6 G24 - 0x581C0032, // 0049 LDCONST R7 K50 - 0x88200730, // 004A GETMBR R8 R3 K48 - 0x88240333, // 004B GETMBR R9 R1 K51 - 0x88280334, // 004C GETMBR R10 R1 K52 + 0x581C0031, // 0049 LDCONST R7 K49 + 0x8820072F, // 004A GETMBR R8 R3 K47 + 0x88240332, // 004B GETMBR R9 R1 K50 + 0x88280333, // 004C GETMBR R10 R1 K51 0x7C180800, // 004D CALL R6 4 - 0x581C0024, // 004E LDCONST R7 K36 + 0x581C0008, // 004E LDCONST R7 K8 0x7C140400, // 004F CALL R5 2 - 0xB8164E00, // 0050 GETNGBL R5 K39 - 0x8C140B35, // 0051 GETMET R5 R5 K53 + 0xB8164C00, // 0050 GETNGBL R5 K38 + 0x8C140B34, // 0051 GETMET R5 R5 K52 0x7C140200, // 0052 CALL R5 1 - 0x88180936, // 0053 GETMBR R6 R4 K54 - 0x90166C06, // 0054 SETMBR R5 K54 R6 - 0x8C180538, // 0055 GETMET R6 R2 K56 + 0x88180935, // 0053 GETMBR R6 R4 K53 + 0x90166A06, // 0054 SETMBR R5 K53 R6 + 0x8C180537, // 0055 GETMET R6 R2 K55 0x5422001F, // 0056 LDINT R8 32 0x7C180400, // 0057 CALL R6 2 - 0x90166E06, // 0058 SETMBR R5 K55 R6 - 0x88180730, // 0059 GETMBR R6 R3 K48 - 0x90167206, // 005A SETMBR R5 K57 R6 + 0x90166C06, // 0058 SETMBR R5 K54 R6 + 0x8818072F, // 0059 GETMBR R6 R3 K47 + 0x90167006, // 005A SETMBR R5 K56 R6 0x8818010D, // 005B GETMBR R6 R0 K13 - 0x88180D3B, // 005C GETMBR R6 R6 K59 - 0x90167406, // 005D SETMBR R5 K58 R6 + 0x88180D3A, // 005C GETMBR R6 R6 K58 + 0x90167206, // 005D SETMBR R5 K57 R6 0x8818010D, // 005E GETMBR R6 R0 K13 - 0x88180D3D, // 005F GETMBR R6 R6 K61 - 0x90167806, // 0060 SETMBR R5 K60 R6 - 0x8C180B3E, // 0061 GETMET R6 R5 K62 + 0x88180D3C, // 005F GETMBR R6 R6 K60 + 0x90167606, // 0060 SETMBR R5 K59 R6 + 0x8C180B3D, // 0061 GETMET R6 R5 K61 0x7C180200, // 0062 CALL R6 1 - 0x900E7E06, // 0063 SETMBR R3 K63 R6 - 0x8C1C0340, // 0064 GETMET R7 R1 K64 + 0x900E7C06, // 0063 SETMBR R3 K62 R6 + 0x8C1C033F, // 0064 GETMET R7 R1 K63 0x54260020, // 0065 LDINT R9 33 0x50280200, // 0066 LDBOOL R10 1 0 0x7C1C0600, // 0067 CALL R7 3 - 0x8C200F41, // 0068 GETMET R8 R7 K65 + 0x8C200F40, // 0068 GETMET R8 R7 K64 0x5C280C00, // 0069 MOVE R10 R6 0x7C200400, // 006A CALL R8 2 - 0x88240142, // 006B GETMBR R9 R0 K66 - 0x8C241343, // 006C GETMET R9 R9 K67 + 0x88240141, // 006B GETMBR R9 R0 K65 + 0x8C241342, // 006C GETMET R9 R9 K66 0x5C2C0E00, // 006D MOVE R11 R7 0x7C240400, // 006E CALL R9 2 0x50240200, // 006F LDBOOL R9 1 0 @@ -557,29 +551,29 @@ be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name be_str_weak(send_status_report), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x8C180340, // 0000 GETMET R6 R1 K64 + 0x8C18033F, // 0000 GETMET R6 R1 K63 0x5422003F, // 0001 LDINT R8 64 0x5C240A00, // 0002 MOVE R9 R5 0x7C180600, // 0003 CALL R6 3 0x601C0015, // 0004 GETGBL R7 G21 0x7C1C0000, // 0005 CALL R7 0 - 0x8C200F44, // 0006 GETMET R8 R7 K68 + 0x8C200F43, // 0006 GETMET R8 R7 K67 0x5C280400, // 0007 MOVE R10 R2 - 0x582C0045, // 0008 LDCONST R11 K69 + 0x582C0022, // 0008 LDCONST R11 K34 0x7C200600, // 0009 CALL R8 3 - 0x8C200F44, // 000A GETMET R8 R7 K68 + 0x8C200F43, // 000A GETMET R8 R7 K67 0x5C280600, // 000B MOVE R10 R3 0x542E0003, // 000C LDINT R11 4 0x7C200600, // 000D CALL R8 3 - 0x8C200F44, // 000E GETMET R8 R7 K68 + 0x8C200F43, // 000E GETMET R8 R7 K67 0x5C280800, // 000F MOVE R10 R4 0x542E0003, // 0010 LDINT R11 4 0x7C200600, // 0011 CALL R8 3 - 0x8C200D41, // 0012 GETMET R8 R6 K65 + 0x8C200D40, // 0012 GETMET R8 R6 K64 0x5C280E00, // 0013 MOVE R10 R7 0x7C200400, // 0014 CALL R8 2 - 0x88240142, // 0015 GETMBR R9 R0 K66 - 0x8C241343, // 0016 GETMET R9 R9 K67 + 0x88240141, // 0015 GETMBR R9 R0 K65 + 0x8C241342, // 0016 GETMET R9 R9 K66 0x5C2C0C00, // 0017 MOVE R11 R6 0x7C240400, // 0018 CALL R9 2 0x80000000, // 0019 RET 0 @@ -619,101 +613,101 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */ 0x2010091F, // 000A NE R4 R4 K31 0x78120010, // 000B JMPF R4 #001D 0xB8120A00, // 000C GETNGBL R4 K5 - 0x58140046, // 000D LDCONST R5 K70 - 0x58180024, // 000E LDCONST R6 K36 + 0x58140044, // 000D LDCONST R5 K68 + 0x58180008, // 000E LDCONST R6 K8 0x7C100400, // 000F CALL R4 2 0xB8120A00, // 0010 GETNGBL R4 K5 0x58140023, // 0011 LDCONST R5 K35 - 0x58180024, // 0012 LDCONST R6 K36 + 0x58180008, // 0012 LDCONST R6 K8 0x7C100400, // 0013 CALL R4 2 - 0x8C100125, // 0014 GETMET R4 R0 K37 + 0x8C100124, // 0014 GETMET R4 R0 K36 0x5C180200, // 0015 MOVE R6 R1 - 0x581C0026, // 0016 LDCONST R7 K38 + 0x581C0025, // 0016 LDCONST R7 K37 0x5820001F, // 0017 LDCONST R8 K31 - 0x58240045, // 0018 LDCONST R9 K69 + 0x58240022, // 0018 LDCONST R9 K34 0x50280000, // 0019 LDBOOL R10 0 0 0x7C100C00, // 001A CALL R4 6 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 - 0xB8124E00, // 001D GETNGBL R4 K39 - 0x8C100947, // 001E GETMET R4 R4 K71 + 0xB8124C00, // 001D GETNGBL R4 K38 + 0x8C100945, // 001E GETMET R4 R4 K69 0x7C100200, // 001F CALL R4 1 - 0x8C100929, // 0020 GETMET R4 R4 K41 + 0x8C100928, // 0020 GETMET R4 R4 K40 0x88180301, // 0021 GETMBR R6 R1 K1 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 - 0x88140948, // 0024 GETMBR R5 R4 K72 - 0x8C180549, // 0025 GETMET R6 R2 K73 + 0x88140946, // 0024 GETMBR R5 R4 K70 + 0x8C180547, // 0025 GETMET R6 R2 K71 0x8820010D, // 0026 GETMBR R8 R0 K13 - 0x8820114A, // 0027 GETMBR R8 R8 K74 + 0x88201148, // 0027 GETMBR R8 R8 K72 0x4C240000, // 0028 LDNIL R9 0x8828010D, // 0029 GETMBR R10 R0 K13 - 0x8828154B, // 002A GETMBR R10 R10 K75 + 0x88281549, // 002A GETMBR R10 R10 K73 0x7C180800, // 002B CALL R6 4 - 0x8C1C0538, // 002C GETMET R7 R2 K56 + 0x8C1C0537, // 002C GETMET R7 R2 K55 0x5426001F, // 002D LDINT R9 32 0x7C1C0400, // 002E CALL R7 2 - 0x8C200D4C, // 002F GETMET R8 R6 K76 + 0x8C200D4A, // 002F GETMET R8 R6 K74 0x5C280E00, // 0030 MOVE R10 R7 0x7C200400, // 0031 CALL R8 2 - 0x8C200D4D, // 0032 GETMET R8 R6 K77 + 0x8C200D4B, // 0032 GETMET R8 R6 K75 0x5C280A00, // 0033 MOVE R10 R5 0x7C200400, // 0034 CALL R8 2 - 0x8C20054E, // 0035 GETMET R8 R2 K78 + 0x8C20054C, // 0035 GETMET R8 R2 K76 0x7C200200, // 0036 CALL R8 1 0x8C241116, // 0037 GETMET R9 R8 K22 0x602C0015, // 0038 GETGBL R11 G21 0x7C2C0000, // 0039 CALL R11 0 - 0x8C2C174F, // 003A GETMET R11 R11 K79 - 0x88340150, // 003B GETMBR R13 R0 K80 + 0x8C2C174D, // 003A GETMET R11 R11 K77 + 0x8834014E, // 003B GETMBR R13 R0 K78 0x7C2C0400, // 003C CALL R11 2 0x7C240400, // 003D CALL R9 2 0x8C241116, // 003E GETMET R9 R8 K22 - 0x882C072B, // 003F GETMBR R11 R3 K43 + 0x882C072A, // 003F GETMBR R11 R3 K42 0x7C240400, // 0040 CALL R9 2 0x8C241116, // 0041 GETMET R9 R8 K22 - 0x882C073F, // 0042 GETMBR R11 R3 K63 + 0x882C073E, // 0042 GETMBR R11 R3 K62 0x7C240400, // 0043 CALL R9 2 0x8C241117, // 0044 GETMET R9 R8 K23 0x7C240200, // 0045 CALL R9 1 - 0x901A9005, // 0046 SETMBR R6 K72 R5 - 0x8C280D51, // 0047 GETMET R10 R6 K81 + 0x901A8C05, // 0046 SETMBR R6 K70 R5 + 0x8C280D4F, // 0047 GETMET R10 R6 K79 0x5C301200, // 0048 MOVE R12 R9 0x7C280400, // 0049 CALL R10 2 - 0x8C280D52, // 004A GETMET R10 R6 K82 + 0x8C280D50, // 004A GETMET R10 R6 K80 0x50300200, // 004B LDBOOL R12 1 0 0x7C280400, // 004C CALL R10 2 - 0xB82A4E00, // 004D GETNGBL R10 K39 - 0x8C281553, // 004E GETMET R10 R10 K83 + 0xB82A4C00, // 004D GETNGBL R10 K38 + 0x8C281551, // 004E GETMET R10 R10 K81 0x7C280200, // 004F CALL R10 1 - 0x882C0D54, // 0050 GETMBR R11 R6 K84 - 0x902AA80B, // 0051 SETMBR R10 K84 R11 - 0x882C0D55, // 0052 GETMBR R11 R6 K85 - 0x902AAA0B, // 0053 SETMBR R10 K85 R11 - 0x8C2C153E, // 0054 GETMET R11 R10 K62 + 0x882C0D52, // 0050 GETMBR R11 R6 K82 + 0x902AA40B, // 0051 SETMBR R10 K82 R11 + 0x882C0D53, // 0052 GETMBR R11 R6 K83 + 0x902AA60B, // 0053 SETMBR R10 K83 R11 + 0x8C2C153D, // 0054 GETMET R11 R10 K61 0x7C2C0200, // 0055 CALL R11 1 - 0x88300D57, // 0056 GETMBR R12 R6 K87 - 0x900EAC0C, // 0057 SETMBR R3 K86 R12 - 0x88300D59, // 0058 GETMBR R12 R6 K89 - 0x900EB00C, // 0059 SETMBR R3 K88 R12 - 0x8C300340, // 005A GETMET R12 R1 K64 + 0x88300D55, // 0056 GETMBR R12 R6 K85 + 0x900EA80C, // 0057 SETMBR R3 K84 R12 + 0x88300D57, // 0058 GETMBR R12 R6 K87 + 0x900EAC0C, // 0059 SETMBR R3 K86 R12 + 0x8C30033F, // 005A GETMET R12 R1 K63 0x543A0022, // 005B LDINT R14 35 0x503C0200, // 005C LDBOOL R15 1 0 0x7C300600, // 005D CALL R12 3 - 0x8C341941, // 005E GETMET R13 R12 K65 + 0x8C341940, // 005E GETMET R13 R12 K64 0x5C3C1600, // 005F MOVE R15 R11 0x7C340400, // 0060 CALL R13 2 0xB83A0A00, // 0061 GETNGBL R14 K5 0x603C0018, // 0062 GETGBL R15 G24 - 0x5840005A, // 0063 LDCONST R16 K90 - 0x88440730, // 0064 GETMBR R17 R3 K48 - 0x8848075B, // 0065 GETMBR R18 R3 K91 - 0x884C075C, // 0066 GETMBR R19 R3 K92 + 0x58400058, // 0063 LDCONST R16 K88 + 0x8844072F, // 0064 GETMBR R17 R3 K47 + 0x88480759, // 0065 GETMBR R18 R3 K89 + 0x884C075A, // 0066 GETMBR R19 R3 K90 0x7C3C0800, // 0067 CALL R15 4 - 0x58400045, // 0068 LDCONST R16 K69 + 0x58400022, // 0068 LDCONST R16 K34 0x7C380400, // 0069 CALL R14 2 - 0x88380142, // 006A GETMBR R14 R0 K66 - 0x8C381D43, // 006B GETMET R14 R14 K67 + 0x88380141, // 006A GETMBR R14 R0 K65 + 0x8C381D42, // 006B GETMET R14 R14 K66 0x5C401800, // 006C MOVE R16 R12 0x7C380400, // 006D CALL R14 2 0x50380200, // 006E LDBOOL R14 1 0 @@ -742,7 +736,7 @@ be_local_closure(class_Matter_Commisioning_Context_init, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0xA40A1200, // 0000 IMPORT R2 K9 - 0x90028401, // 0001 SETMBR R0 K66 R1 + 0x90028201, // 0001 SETMBR R0 K65 R1 0x880C030D, // 0002 GETMBR R3 R1 K13 0x90021A03, // 0003 SETMBR R0 K13 R3 0x80000000, // 0004 RET 0 @@ -782,63 +776,63 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x2010091F, // 000A NE R4 R4 K31 0x78120010, // 000B JMPF R4 #001D 0xB8120A00, // 000C GETNGBL R4 K5 - 0x5814005D, // 000D LDCONST R5 K93 - 0x58180024, // 000E LDCONST R6 K36 + 0x5814005B, // 000D LDCONST R5 K91 + 0x58180008, // 000E LDCONST R6 K8 0x7C100400, // 000F CALL R4 2 0xB8120A00, // 0010 GETNGBL R4 K5 0x58140023, // 0011 LDCONST R5 K35 - 0x58180024, // 0012 LDCONST R6 K36 + 0x58180008, // 0012 LDCONST R6 K8 0x7C100400, // 0013 CALL R4 2 - 0x8C100125, // 0014 GETMET R4 R0 K37 + 0x8C100124, // 0014 GETMET R4 R0 K36 0x5C180200, // 0015 MOVE R6 R1 - 0x581C0026, // 0016 LDCONST R7 K38 + 0x581C0025, // 0016 LDCONST R7 K37 0x5820001F, // 0017 LDCONST R8 K31 - 0x58240045, // 0018 LDCONST R9 K69 + 0x58240022, // 0018 LDCONST R9 K34 0x50280000, // 0019 LDBOOL R10 0 0 0x7C100C00, // 001A CALL R4 6 0x50100000, // 001B LDBOOL R4 0 0 0x80040800, // 001C RET 1 R4 - 0xB8124E00, // 001D GETNGBL R4 K39 - 0x8C10095E, // 001E GETMET R4 R4 K94 + 0xB8124C00, // 001D GETNGBL R4 K38 + 0x8C10095C, // 001E GETMET R4 R4 K92 0x7C100200, // 001F CALL R4 1 - 0x8C100929, // 0020 GETMET R4 R4 K41 + 0x8C100928, // 0020 GETMET R4 R4 K40 0x88180301, // 0021 GETMBR R6 R1 K1 0x881C0302, // 0022 GETMBR R7 R1 K2 0x7C100600, // 0023 CALL R4 3 - 0x88140957, // 0024 GETMBR R5 R4 K87 - 0x88180756, // 0025 GETMBR R6 R3 K86 + 0x88140955, // 0024 GETMBR R5 R4 K85 + 0x88180754, // 0025 GETMBR R6 R3 K84 0x20180A06, // 0026 NE R6 R5 R6 0x781A0010, // 0027 JMPF R6 #0039 0xB81A0A00, // 0028 GETNGBL R6 K5 - 0x581C005F, // 0029 LDCONST R7 K95 - 0x58200024, // 002A LDCONST R8 K36 + 0x581C005D, // 0029 LDCONST R7 K93 + 0x58200008, // 002A LDCONST R8 K8 0x7C180400, // 002B CALL R6 2 0xB81A0A00, // 002C GETNGBL R6 K5 0x581C0023, // 002D LDCONST R7 K35 - 0x58200024, // 002E LDCONST R8 K36 + 0x58200008, // 002E LDCONST R8 K8 0x7C180400, // 002F CALL R6 2 - 0x8C180125, // 0030 GETMET R6 R0 K37 + 0x8C180124, // 0030 GETMET R6 R0 K36 0x5C200200, // 0031 MOVE R8 R1 - 0x58240026, // 0032 LDCONST R9 K38 + 0x58240025, // 0032 LDCONST R9 K37 0x5828001F, // 0033 LDCONST R10 K31 - 0x582C0045, // 0034 LDCONST R11 K69 + 0x582C0022, // 0034 LDCONST R11 K34 0x50300000, // 0035 LDBOOL R12 0 0 0x7C180C00, // 0036 CALL R6 6 0x50180000, // 0037 LDBOOL R6 0 0 0x80040C00, // 0038 RET 1 R6 0xB81A1400, // 0039 GETNGBL R6 K10 - 0x8C180D60, // 003A GETMET R6 R6 K96 + 0x8C180D5E, // 003A GETMET R6 R6 K94 0x7C180200, // 003B CALL R6 1 - 0x8C1C0561, // 003C GETMET R7 R2 K97 + 0x8C1C055F, // 003C GETMET R7 R2 K95 0x7C1C0200, // 003D CALL R7 1 - 0x8C1C0F62, // 003E GETMET R7 R7 K98 - 0x88240758, // 003F GETMBR R9 R3 K88 + 0x8C1C0F60, // 003E GETMET R7 R7 K96 + 0x88240756, // 003F GETMBR R9 R3 K86 0x60280015, // 0040 GETGBL R10 G21 0x7C280000, // 0041 CALL R10 0 0x602C0015, // 0042 GETGBL R11 G21 0x7C2C0000, // 0043 CALL R11 0 - 0x8C2C174F, // 0044 GETMET R11 R11 K79 - 0x88340163, // 0045 GETMBR R13 R0 K99 + 0x8C2C174D, // 0044 GETMET R11 R11 K77 + 0x88340161, // 0045 GETMBR R13 R0 K97 0x7C2C0400, // 0046 CALL R11 2 0x5432002F, // 0047 LDINT R12 48 0x7C1C0A00, // 0048 CALL R7 5 @@ -853,16 +847,16 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */ 0x542E002E, // 0051 LDINT R11 47 0x4028140B, // 0052 CONNECT R10 R10 R11 0x94280E0A, // 0053 GETIDX R10 R7 R10 - 0x8C2C0125, // 0054 GETMET R11 R0 K37 + 0x8C2C0124, // 0054 GETMET R11 R0 K36 0x5C340200, // 0055 MOVE R13 R1 0x5838001F, // 0056 LDCONST R14 K31 0x583C001F, // 0057 LDCONST R15 K31 0x5840001F, // 0058 LDCONST R16 K31 0x50440000, // 0059 LDBOOL R17 0 0 0x7C2C0C00, // 005A CALL R11 6 - 0x8C2C0164, // 005B GETMET R11 R0 K100 - 0x88340730, // 005C GETMBR R13 R3 K48 - 0x8838072E, // 005D GETMBR R14 R3 K46 + 0x8C2C0162, // 005B GETMET R11 R0 K98 + 0x8834072F, // 005C GETMBR R13 R3 K47 + 0x8838072D, // 005D GETMBR R14 R3 K45 0x5C3C1000, // 005E MOVE R15 R8 0x5C401200, // 005F MOVE R16 R9 0x5C441400, // 0060 MOVE R17 R10 @@ -906,44 +900,44 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x780E000C, // 000A JMPF R3 #0018 0xB80E0A00, // 000B GETNGBL R3 K5 0x58100023, // 000C LDCONST R4 K35 - 0x58140065, // 000D LDCONST R5 K101 + 0x58140008, // 000D LDCONST R5 K8 0x7C0C0400, // 000E CALL R3 2 - 0x8C0C0125, // 000F GETMET R3 R0 K37 + 0x8C0C0124, // 000F GETMET R3 R0 K36 0x5C140200, // 0010 MOVE R5 R1 - 0x58180066, // 0011 LDCONST R6 K102 + 0x58180025, // 0011 LDCONST R6 K37 0x581C001F, // 0012 LDCONST R7 K31 - 0x58200067, // 0013 LDCONST R8 K103 + 0x58200022, // 0013 LDCONST R8 K34 0x50240000, // 0014 LDBOOL R9 0 0 0x7C0C0C00, // 0015 CALL R3 6 0x500C0000, // 0016 LDBOOL R3 0 0 0x80040600, // 0017 RET 1 R3 0x880C0300, // 0018 GETMBR R3 R1 K0 - 0xB8124E00, // 0019 GETNGBL R4 K39 - 0x8C100968, // 001A GETMET R4 R4 K104 + 0xB8124C00, // 0019 GETNGBL R4 K38 + 0x8C100963, // 001A GETMET R4 R4 K99 0x7C100200, // 001B CALL R4 1 - 0x8C100929, // 001C GETMET R4 R4 K41 + 0x8C100928, // 001C GETMET R4 R4 K40 0x88180301, // 001D GETMBR R6 R1 K1 0x881C0302, // 001E GETMBR R7 R1 K2 0x7C100600, // 001F CALL R4 3 - 0x8C14054E, // 0020 GETMET R5 R2 K78 + 0x8C14054C, // 0020 GETMET R5 R2 K76 0x7C140200, // 0021 CALL R5 1 0x8C140B16, // 0022 GETMET R5 R5 K22 - 0x881C072B, // 0023 GETMBR R7 R3 K43 + 0x881C072A, // 0023 GETMBR R7 R3 K42 0x7C140400, // 0024 CALL R5 2 0x8C140B16, // 0025 GETMET R5 R5 K22 - 0x881C073F, // 0026 GETMBR R7 R3 K63 + 0x881C073E, // 0026 GETMBR R7 R3 K62 0x7C140400, // 0027 CALL R5 2 0x8C140B17, // 0028 GETMET R5 R5 K23 0x7C140200, // 0029 CALL R5 1 0x60180015, // 002A GETGBL R6 G21 0x7C180000, // 002B CALL R6 0 - 0x8C180D4F, // 002C GETMET R6 R6 K79 - 0x88200169, // 002D GETMBR R8 R0 K105 + 0x8C180D4D, // 002C GETMET R6 R6 K77 + 0x88200164, // 002D GETMBR R8 R0 K100 0x7C180400, // 002E CALL R6 2 - 0x8C1C0561, // 002F GETMET R7 R2 K97 + 0x8C1C055F, // 002F GETMET R7 R2 K95 0x7C1C0200, // 0030 CALL R7 1 - 0x8C1C0F62, // 0031 GETMET R7 R7 K98 - 0x8824076A, // 0032 GETMBR R9 R3 K106 + 0x8C1C0F60, // 0031 GETMET R7 R7 K96 + 0x88240765, // 0032 GETMBR R9 R3 K101 0x8C280714, // 0033 GETMET R10 R3 K20 0x7C280200, // 0034 CALL R10 1 0x00281405, // 0035 ADD R10 R10 R5 @@ -952,18 +946,18 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x7C1C0A00, // 0038 CALL R7 5 0x5421FFEE, // 0039 LDINT R8 -17 0x40223E08, // 003A CONNECT R8 K31 R8 - 0x8824096B, // 003B GETMBR R9 R4 K107 + 0x88240966, // 003B GETMBR R9 R4 K102 0x94201208, // 003C GETIDX R8 R9 R8 0x5429FFEF, // 003D LDINT R10 -16 - 0x4028156C, // 003E CONNECT R10 R10 K108 - 0x882C096B, // 003F GETMBR R11 R4 K107 + 0x40281503, // 003E CONNECT R10 R10 K3 + 0x882C0966, // 003F GETMBR R11 R4 K102 0x9424160A, // 0040 GETIDX R9 R11 R10 - 0x8C30056D, // 0041 GETMET R12 R2 K109 + 0x8C300567, // 0041 GETMET R12 R2 K103 0x5C380E00, // 0042 MOVE R14 R7 0x603C0015, // 0043 GETGBL R15 G21 0x7C3C0000, // 0044 CALL R15 0 - 0x8C3C1F4F, // 0045 GETMET R15 R15 K79 - 0x8844016E, // 0046 GETMBR R17 R0 K110 + 0x8C3C1F4D, // 0045 GETMET R15 R15 K77 + 0x88440168, // 0046 GETMBR R17 R0 K104 0x7C3C0400, // 0047 CALL R15 2 0x60400015, // 0048 GETGBL R16 G21 0x7C400000, // 0049 CALL R16 0 @@ -973,112 +967,112 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x544A000F, // 004D LDINT R18 16 0x7C300C00, // 004E CALL R12 6 0x5C281800, // 004F MOVE R10 R12 - 0x8C30156F, // 0050 GETMET R12 R10 K111 + 0x8C301569, // 0050 GETMET R12 R10 K105 0x5C381000, // 0051 MOVE R14 R8 0x7C300400, // 0052 CALL R12 2 0x5C2C1800, // 0053 MOVE R11 R12 - 0x8C301570, // 0054 GETMET R12 R10 K112 + 0x8C30156A, // 0054 GETMET R12 R10 K106 0x7C300200, // 0055 CALL R12 1 0x20341809, // 0056 NE R13 R12 R9 0x78360010, // 0057 JMPF R13 #0069 0xB8360A00, // 0058 GETNGBL R13 K5 - 0x58380071, // 0059 LDCONST R14 K113 - 0x583C0065, // 005A LDCONST R15 K101 + 0x5838006B, // 0059 LDCONST R14 K107 + 0x583C0008, // 005A LDCONST R15 K8 0x7C340400, // 005B CALL R13 2 0xB8360A00, // 005C GETNGBL R13 K5 0x58380023, // 005D LDCONST R14 K35 - 0x583C0065, // 005E LDCONST R15 K101 + 0x583C0008, // 005E LDCONST R15 K8 0x7C340400, // 005F CALL R13 2 - 0x8C340125, // 0060 GETMET R13 R0 K37 + 0x8C340124, // 0060 GETMET R13 R0 K36 0x5C3C0200, // 0061 MOVE R15 R1 - 0x58400066, // 0062 LDCONST R16 K102 + 0x58400025, // 0062 LDCONST R16 K37 0x5844001F, // 0063 LDCONST R17 K31 - 0x58480067, // 0064 LDCONST R18 K103 + 0x58480022, // 0064 LDCONST R18 K34 0x504C0000, // 0065 LDBOOL R19 0 0 0x7C340C00, // 0066 CALL R13 6 0x50340000, // 0067 LDBOOL R13 0 0 0x80041A00, // 0068 RET 1 R13 - 0xB8364E00, // 0069 GETNGBL R13 K39 - 0x88341B72, // 006A GETMBR R13 R13 K114 - 0x8C341B29, // 006B GETMET R13 R13 K41 + 0xB8364C00, // 0069 GETNGBL R13 K38 + 0x88341B6C, // 006A GETMBR R13 R13 K108 + 0x8C341B28, // 006B GETMET R13 R13 K40 0x5C3C1600, // 006C MOVE R15 R11 0x7C340400, // 006D CALL R13 2 - 0x8C381B73, // 006E GETMET R14 R13 K115 - 0x58400066, // 006F LDCONST R16 K102 + 0x8C381B6D, // 006E GETMET R14 R13 K109 + 0x58400025, // 006F LDCONST R16 K37 0x7C380400, // 0070 CALL R14 2 - 0x8C3C1B73, // 0071 GETMET R15 R13 K115 - 0x58440067, // 0072 LDCONST R17 K103 + 0x8C3C1B6D, // 0071 GETMET R15 R13 K109 + 0x58440022, // 0072 LDCONST R17 K34 0x7C3C0400, // 0073 CALL R15 2 - 0x8C401B73, // 0074 GETMET R16 R13 K115 - 0x58480065, // 0075 LDCONST R18 K101 + 0x8C401B6D, // 0074 GETMET R16 R13 K109 + 0x58480008, // 0075 LDCONST R18 K8 0x7C400400, // 0076 CALL R16 2 - 0xB8464E00, // 0077 GETNGBL R17 K39 - 0x88442372, // 0078 GETMBR R17 R17 K114 - 0x8C442329, // 0079 GETMET R17 R17 K41 + 0xB8464C00, // 0077 GETNGBL R17 K38 + 0x8844236C, // 0078 GETMBR R17 R17 K108 + 0x8C442328, // 0079 GETMET R17 R17 K40 0x5C4C1C00, // 007A MOVE R19 R14 0x7C440400, // 007B CALL R17 2 - 0x8C482373, // 007C GETMET R18 R17 K115 + 0x8C48236D, // 007C GETMET R18 R17 K109 0x54520008, // 007D LDINT R20 9 0x7C480400, // 007E CALL R18 2 - 0x8C4C2374, // 007F GETMET R19 R17 K116 + 0x8C4C236E, // 007F GETMET R19 R17 K110 0x54560005, // 0080 LDINT R21 6 0x7C4C0400, // 0081 CALL R19 2 - 0x8C502773, // 0082 GETMET R20 R19 K115 + 0x8C50276D, // 0082 GETMET R20 R19 K109 0x545A0010, // 0083 LDINT R22 17 0x7C500400, // 0084 CALL R20 2 0x60540004, // 0085 GETGBL R21 G4 0x5C582800, // 0086 MOVE R22 R20 0x7C540200, // 0087 CALL R21 1 - 0x1C542B75, // 0088 EQ R21 R21 K117 + 0x1C542B6F, // 0088 EQ R21 R21 K111 0x78560007, // 0089 JMPF R21 #0092 - 0xB856EE00, // 008A GETNGBL R21 K119 - 0x8C542B78, // 008B GETMET R21 R21 K120 + 0xB856E200, // 008A GETNGBL R21 K113 + 0x8C542B72, // 008B GETMET R21 R21 K114 0x5C5C2800, // 008C MOVE R23 R20 0x7C540400, // 008D CALL R21 2 - 0x8C542B79, // 008E GETMET R21 R21 K121 + 0x8C542B73, // 008E GETMET R21 R21 K115 0x7C540200, // 008F CALL R21 1 - 0x900EEC15, // 0090 SETMBR R3 K118 R21 + 0x900EE015, // 0090 SETMBR R3 K112 R21 0x70020002, // 0091 JMP #0095 - 0x8C542979, // 0092 GETMET R21 R20 K121 + 0x8C542973, // 0092 GETMET R21 R20 K115 0x7C540200, // 0093 CALL R21 1 - 0x900EEC15, // 0094 SETMBR R3 K118 R21 - 0xB8564E00, // 0095 GETNGBL R21 K39 - 0x88542B72, // 0096 GETMBR R21 R21 K114 - 0x8C542B7A, // 0097 GETMET R21 R21 K122 + 0x900EE015, // 0094 SETMBR R3 K112 R21 + 0xB8564C00, // 0095 GETNGBL R21 K38 + 0x88542B6C, // 0096 GETMBR R21 R21 K108 + 0x8C542B74, // 0097 GETMET R21 R21 K116 0x7C540200, // 0098 CALL R21 1 - 0x8C582B7B, // 0099 GETMET R22 R21 K123 - 0x58600066, // 009A LDCONST R24 K102 - 0xB8664E00, // 009B GETNGBL R25 K39 - 0x88643372, // 009C GETMBR R25 R25 K114 - 0x8864337C, // 009D GETMBR R25 R25 K124 + 0x8C582B75, // 0099 GETMET R22 R21 K117 + 0x58600025, // 009A LDCONST R24 K37 + 0xB8664C00, // 009B GETNGBL R25 K38 + 0x8864336C, // 009C GETMBR R25 R25 K108 + 0x88643376, // 009D GETMBR R25 R25 K118 0x5C681C00, // 009E MOVE R26 R14 0x7C580800, // 009F CALL R22 4 - 0x8C582B7B, // 00A0 GETMET R22 R21 K123 - 0x58600067, // 00A1 LDCONST R24 K103 - 0xB8664E00, // 00A2 GETNGBL R25 K39 - 0x88643372, // 00A3 GETMBR R25 R25 K114 - 0x8864337C, // 00A4 GETMBR R25 R25 K124 + 0x8C582B75, // 00A0 GETMET R22 R21 K117 + 0x58600022, // 00A1 LDCONST R24 K34 + 0xB8664C00, // 00A2 GETNGBL R25 K38 + 0x8864336C, // 00A3 GETMBR R25 R25 K108 + 0x88643376, // 00A4 GETMBR R25 R25 K118 0x5C681E00, // 00A5 MOVE R26 R15 0x7C580800, // 00A6 CALL R22 4 - 0x8C582B7B, // 00A7 GETMET R22 R21 K123 - 0x58600065, // 00A8 LDCONST R24 K101 - 0xB8664E00, // 00A9 GETNGBL R25 K39 - 0x88643372, // 00AA GETMBR R25 R25 K114 - 0x8864337C, // 00AB GETMBR R25 R25 K124 - 0x8868077D, // 00AC GETMBR R26 R3 K125 + 0x8C582B75, // 00A7 GETMET R22 R21 K117 + 0x58600008, // 00A8 LDCONST R24 K8 + 0xB8664C00, // 00A9 GETNGBL R25 K38 + 0x8864336C, // 00AA GETMBR R25 R25 K108 + 0x88643376, // 00AB GETMBR R25 R25 K118 + 0x88680777, // 00AC GETMBR R26 R3 K119 0x7C580800, // 00AD CALL R22 4 - 0x8C582B7B, // 00AE GETMET R22 R21 K123 + 0x8C582B75, // 00AE GETMET R22 R21 K117 0x54620003, // 00AF LDINT R24 4 - 0xB8664E00, // 00B0 GETNGBL R25 K39 - 0x88643372, // 00B1 GETMBR R25 R25 K114 - 0x8864337C, // 00B2 GETMBR R25 R25 K124 - 0x8868077E, // 00B3 GETMBR R26 R3 K126 + 0xB8664C00, // 00B0 GETNGBL R25 K38 + 0x8864336C, // 00B1 GETMBR R25 R25 K108 + 0x88643376, // 00B2 GETMBR R25 R25 K118 + 0x88680778, // 00B3 GETMBR R26 R3 K120 0x7C580800, // 00B4 CALL R22 4 - 0x8C582B3E, // 00B5 GETMET R22 R21 K62 + 0x8C582B3D, // 00B5 GETMET R22 R21 K61 0x7C580200, // 00B6 CALL R22 1 - 0x8C5C057F, // 00B7 GETMET R23 R2 K127 + 0x8C5C0579, // 00B7 GETMET R23 R2 K121 0x7C5C0200, // 00B8 CALL R23 1 - 0x8C5C2F80, // 00B9 GETMET R23 R23 K128 + 0x8C5C2F7A, // 00B9 GETMET R23 R23 K122 0x5C642400, // 00BA MOVE R25 R18 0x5C682C00, // 00BB MOVE R26 R22 0x5C6C2000, // 00BC MOVE R27 R16 @@ -1086,47 +1080,47 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x5C602E00, // 00BE MOVE R24 R23 0x74620008, // 00BF JMPT R24 #00C9 0xB8620A00, // 00C0 GETNGBL R24 K5 - 0x58640081, // 00C1 LDCONST R25 K129 - 0x58680067, // 00C2 LDCONST R26 K103 + 0x5864007B, // 00C1 LDCONST R25 K123 + 0x58680022, // 00C2 LDCONST R26 K34 0x7C600400, // 00C3 CALL R24 2 0xB8620A00, // 00C4 GETNGBL R24 K5 - 0x58640082, // 00C5 LDCONST R25 K130 - 0x58680067, // 00C6 LDCONST R26 K103 + 0x5864007C, // 00C5 LDCONST R25 K124 + 0x58680022, // 00C6 LDCONST R26 K34 0x7C600400, // 00C7 CALL R24 2 0x70020003, // 00C8 JMP #00CD 0xB8620A00, // 00C9 GETNGBL R24 K5 - 0x58640083, // 00CA LDCONST R25 K131 - 0x58680065, // 00CB LDCONST R26 K101 + 0x5864007D, // 00CA LDCONST R25 K125 + 0x58680008, // 00CB LDCONST R26 K8 0x7C600400, // 00CC CALL R24 2 - 0x8C60054E, // 00CD GETMET R24 R2 K78 + 0x8C60054C, // 00CD GETMET R24 R2 K76 0x7C600200, // 00CE CALL R24 1 0x8C603116, // 00CF GETMET R24 R24 K22 - 0x8868072B, // 00D0 GETMBR R26 R3 K43 + 0x8868072A, // 00D0 GETMBR R26 R3 K42 0x7C600400, // 00D1 CALL R24 2 0x8C603116, // 00D2 GETMET R24 R24 K22 - 0x8868073F, // 00D3 GETMBR R26 R3 K63 + 0x8868073E, // 00D3 GETMBR R26 R3 K62 0x7C600400, // 00D4 CALL R24 2 0x8C603116, // 00D5 GETMET R24 R24 K22 - 0x88680984, // 00D6 GETMBR R26 R4 K132 + 0x8868097E, // 00D6 GETMBR R26 R4 K126 0x7C600400, // 00D7 CALL R24 2 0x8C603117, // 00D8 GETMET R24 R24 K23 0x7C600200, // 00D9 CALL R24 1 0x5C143000, // 00DA MOVE R5 R24 0x4C600000, // 00DB LDNIL R24 - 0x900E5618, // 00DC SETMBR R3 K43 R24 + 0x900E5418, // 00DC SETMBR R3 K42 R24 0x4C600000, // 00DD LDNIL R24 - 0x900E7E18, // 00DE SETMBR R3 K63 R24 - 0x8C600561, // 00DF GETMET R24 R2 K97 + 0x900E7C18, // 00DE SETMBR R3 K62 R24 + 0x8C60055F, // 00DF GETMET R24 R2 K95 0x7C600200, // 00E0 CALL R24 1 - 0x8C603162, // 00E1 GETMET R24 R24 K98 - 0x8868076A, // 00E2 GETMBR R26 R3 K106 + 0x8C603160, // 00E1 GETMET R24 R24 K96 + 0x88680765, // 00E2 GETMBR R26 R3 K101 0x8C6C0714, // 00E3 GETMET R27 R3 K20 0x7C6C0200, // 00E4 CALL R27 1 0x006C3605, // 00E5 ADD R27 R27 R5 0x60700015, // 00E6 GETGBL R28 G21 0x7C700000, // 00E7 CALL R28 0 - 0x8C70394F, // 00E8 GETMET R28 R28 K79 - 0x88780163, // 00E9 GETMBR R30 R0 K99 + 0x8C70394D, // 00E8 GETMET R28 R28 K77 + 0x88780161, // 00E9 GETMBR R30 R0 K97 0x7C700400, // 00EA CALL R28 2 0x5476002F, // 00EB LDINT R29 48 0x7C600A00, // 00EC CALL R24 5 @@ -1142,16 +1136,16 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x406C361C, // 00F6 CONNECT R27 R27 R28 0x946C301B, // 00F7 GETIDX R27 R24 R27 0xB8721400, // 00F8 GETNGBL R28 K10 - 0x8C703960, // 00F9 GETMET R28 R28 K96 + 0x8C70395E, // 00F9 GETMET R28 R28 K94 0x7C700200, // 00FA CALL R28 1 - 0x8C740125, // 00FB GETMET R29 R0 K37 + 0x8C740124, // 00FB GETMET R29 R0 K36 0x5C7C0200, // 00FC MOVE R31 R1 0x5880001F, // 00FD LDCONST R32 K31 0x5884001F, // 00FE LDCONST R33 K31 0x5888001F, // 00FF LDCONST R34 K31 0x508C0200, // 0100 LDBOOL R35 1 0 0x7C740C00, // 0101 CALL R29 6 - 0x8C740785, // 0102 GETMET R29 R3 K133 + 0x8C74077F, // 0102 GETMET R29 R3 K127 0x7C740200, // 0103 CALL R29 1 0x8C74071C, // 0104 GETMET R29 R3 K28 0x5C7C3200, // 0105 MOVE R31 R25 @@ -1159,17 +1153,17 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */ 0x5C843600, // 0107 MOVE R33 R27 0x5C883800, // 0108 MOVE R34 R28 0x7C740A00, // 0109 CALL R29 5 - 0x900F0D1F, // 010A SETMBR R3 K134 K31 - 0x8C740787, // 010B GETMET R29 R3 K135 + 0x900F011F, // 010A SETMBR R3 K128 K31 + 0x8C740781, // 010B GETMET R29 R3 K129 0x7C740200, // 010C CALL R29 1 - 0x8C740788, // 010D GETMET R29 R3 K136 + 0x8C740782, // 010D GETMET R29 R3 K130 0x507C0200, // 010E LDBOOL R31 1 0 0x7C740400, // 010F CALL R29 2 - 0x8C740789, // 0110 GETMET R29 R3 K137 + 0x8C740783, // 0110 GETMET R29 R3 K131 0x7C740200, // 0111 CALL R29 1 - 0x8C74078A, // 0112 GETMET R29 R3 K138 + 0x8C740784, // 0112 GETMET R29 R3 K132 0x7C740200, // 0113 CALL R29 1 - 0x8C74078B, // 0114 GETMET R29 R3 K139 + 0x8C740785, // 0114 GETMET R29 R3 K133 0x7C740200, // 0115 CALL R29 1 0x50740200, // 0116 LDBOOL R29 1 0 0x80043A00, // 0117 RET 1 R29 @@ -1197,7 +1191,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * &be_const_str_solidified, ( &(const binstruction[88]) { /* code */ 0x8808010D, // 0000 GETMBR R2 R0 K13 - 0x8C08058C, // 0001 GETMET R2 R2 K140 + 0x8C080586, // 0001 GETMET R2 R2 K134 0x7C080200, // 0002 CALL R2 1 0x740A000D, // 0003 JMPT R2 #0012 0x8808031D, // 0004 GETMBR R2 R1 K29 @@ -1209,7 +1203,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0x18080403, // 000A LE R2 R2 R3 0x780A0005, // 000B JMPF R2 #0012 0xB80A0A00, // 000C GETNGBL R2 K5 - 0x580C008D, // 000D LDCONST R3 K141 + 0x580C0087, // 000D LDCONST R3 K135 0x58100022, // 000E LDCONST R4 K34 0x7C080400, // 000F CALL R2 2 0x50080000, // 0010 LDBOOL R2 0 0 @@ -1223,7 +1217,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0x540E001F, // 0018 LDINT R3 32 0x1C080403, // 0019 EQ R2 R2 R3 0x780A0004, // 001A JMPF R2 #0020 - 0x8C08018E, // 001B GETMET R2 R0 K142 + 0x8C080188, // 001B GETMET R2 R0 K136 0x5C100200, // 001C MOVE R4 R1 0x7C080400, // 001D CALL R2 2 0x80040400, // 001E RET 1 R2 @@ -1232,7 +1226,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0x540E0021, // 0021 LDINT R3 34 0x1C080403, // 0022 EQ R2 R2 R3 0x780A0004, // 0023 JMPF R2 #0029 - 0x8C08018F, // 0024 GETMET R2 R0 K143 + 0x8C080189, // 0024 GETMET R2 R0 K137 0x5C100200, // 0025 MOVE R4 R1 0x7C080400, // 0026 CALL R2 2 0x80040400, // 0027 RET 1 R2 @@ -1241,7 +1235,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0x540E0023, // 002A LDINT R3 36 0x1C080403, // 002B EQ R2 R2 R3 0x780A0004, // 002C JMPF R2 #0032 - 0x8C080190, // 002D GETMET R2 R0 K144 + 0x8C08018A, // 002D GETMET R2 R0 K138 0x5C100200, // 002E MOVE R4 R1 0x7C080400, // 002F CALL R2 2 0x80040400, // 0030 RET 1 R2 @@ -1250,7 +1244,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0x540E002F, // 0033 LDINT R3 48 0x1C080403, // 0034 EQ R2 R2 R3 0x780A0004, // 0035 JMPF R2 #003B - 0x8C080191, // 0036 GETMET R2 R0 K145 + 0x8C08018B, // 0036 GETMET R2 R0 K139 0x5C100200, // 0037 MOVE R4 R1 0x7C080400, // 0038 CALL R2 2 0x80040400, // 0039 RET 1 R2 @@ -1259,7 +1253,7 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0x540E0031, // 003C LDINT R3 50 0x1C080403, // 003D EQ R2 R2 R3 0x780A0004, // 003E JMPF R2 #0044 - 0x8C080192, // 003F GETMET R2 R0 K146 + 0x8C08018C, // 003F GETMET R2 R0 K140 0x5C100200, // 0040 MOVE R4 R1 0x7C080400, // 0041 CALL R2 2 0x80040400, // 0042 RET 1 R2 @@ -1268,14 +1262,14 @@ be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name * 0x540E003F, // 0045 LDINT R3 64 0x1C080403, // 0046 EQ R2 R2 R3 0x780A0004, // 0047 JMPF R2 #004D - 0x8C080193, // 0048 GETMET R2 R0 K147 + 0x8C08018D, // 0048 GETMET R2 R0 K141 0x5C100200, // 0049 MOVE R4 R1 0x7C080400, // 004A CALL R2 2 0x80040400, // 004B RET 1 R2 0x70020008, // 004C JMP #0056 0xB80A0A00, // 004D GETNGBL R2 K5 0x600C0018, // 004E GETGBL R3 G24 - 0x58100094, // 004F LDCONST R4 K148 + 0x5810008E, // 004F LDCONST R4 K142 0x8814031D, // 0050 GETMBR R5 R1 K29 0x7C0C0400, // 0051 CALL R3 2 0x58100022, // 0052 LDCONST R4 K34 @@ -1321,31 +1315,31 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x7812000C, // 000B JMPF R4 #0019 0xB8120A00, // 000C GETNGBL R4 K5 0x58140023, // 000D LDCONST R5 K35 - 0x58180024, // 000E LDCONST R6 K36 + 0x58180008, // 000E LDCONST R6 K8 0x7C100400, // 000F CALL R4 2 - 0x8C100125, // 0010 GETMET R4 R0 K37 + 0x8C100124, // 0010 GETMET R4 R0 K36 0x5C180200, // 0011 MOVE R6 R1 - 0x581C0026, // 0012 LDCONST R7 K38 + 0x581C0025, // 0012 LDCONST R7 K37 0x5820001F, // 0013 LDCONST R8 K31 - 0x58240045, // 0014 LDCONST R9 K69 + 0x58240022, // 0014 LDCONST R9 K34 0x50280000, // 0015 LDBOOL R10 0 0 0x7C100C00, // 0016 CALL R4 6 0x50100000, // 0017 LDBOOL R4 0 0 0x80040800, // 0018 RET 1 R4 - 0xB8124E00, // 0019 GETNGBL R4 K39 - 0x8C100995, // 001A GETMET R4 R4 K149 + 0xB8124C00, // 0019 GETNGBL R4 K38 + 0x8C10098F, // 001A GETMET R4 R4 K143 0x7C100200, // 001B CALL R4 1 - 0x8C100929, // 001C GETMET R4 R4 K41 + 0x8C100928, // 001C GETMET R4 R4 K40 0x88180301, // 001D GETMBR R6 R1 K1 0x881C0302, // 001E GETMBR R7 R1 K2 0x7C100600, // 001F CALL R4 3 - 0x88140996, // 0020 GETMBR R5 R4 K150 - 0x900EFA05, // 0021 SETMBR R3 K125 R5 - 0x88140997, // 0022 GETMBR R5 R4 K151 + 0x88140990, // 0020 GETMBR R5 R4 K144 + 0x900EEE05, // 0021 SETMBR R3 K119 R5 + 0x88140991, // 0022 GETMBR R5 R4 K145 0x4C180000, // 0023 LDNIL R6 0x20140A06, // 0024 NE R5 R5 R6 0x78160003, // 0025 JMPF R5 #002A - 0x88140998, // 0026 GETMBR R5 R4 K152 + 0x88140992, // 0026 GETMBR R5 R4 K146 0x4C180000, // 0027 LDNIL R6 0x20140A06, // 0028 NE R5 R5 R6 0x74160000, // 0029 JMPT R5 #002B @@ -1355,60 +1349,60 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x78160014, // 002D JMPF R5 #0043 0x881C010D, // 002E GETMBR R7 R0 K13 0x881C0F0E, // 002F GETMBR R7 R7 K14 - 0x8C1C0F99, // 0030 GETMET R7 R7 K153 - 0x88240997, // 0031 GETMBR R9 R4 K151 + 0x8C1C0F93, // 0030 GETMET R7 R7 K147 + 0x88240991, // 0031 GETMBR R9 R4 K145 0x7C1C0400, // 0032 CALL R7 2 0x5C180E00, // 0033 MOVE R6 R7 0x4C1C0000, // 0034 LDNIL R7 0x1C1C0C07, // 0035 EQ R7 R6 R7 0x741E0003, // 0036 JMPT R7 #003B - 0x881C0D9A, // 0037 GETMBR R7 R6 K154 + 0x881C0D94, // 0037 GETMBR R7 R6 K148 0x4C200000, // 0038 LDNIL R8 0x1C1C0E08, // 0039 EQ R7 R7 R8 0x781E0007, // 003A JMPF R7 #0043 0xB81E0A00, // 003B GETNGBL R7 K5 0x60200018, // 003C GETGBL R8 G24 - 0x5824009B, // 003D LDCONST R9 K155 - 0x88280997, // 003E GETMBR R10 R4 K151 + 0x58240095, // 003D LDCONST R9 K149 + 0x88280991, // 003E GETMBR R10 R4 K145 0x7C200400, // 003F CALL R8 2 - 0x58240024, // 0040 LDCONST R9 K36 + 0x58240008, // 0040 LDCONST R9 K8 0x7C1C0400, // 0041 CALL R7 2 0x50140000, // 0042 LDBOOL R5 0 0 0x781600C3, // 0043 JMPF R5 #0108 0xB81E0A00, // 0044 GETNGBL R7 K5 - 0x5820009C, // 0045 LDCONST R8 K156 - 0x58240024, // 0046 LDCONST R9 K36 + 0x58200096, // 0045 LDCONST R8 K150 + 0x58240008, // 0046 LDCONST R9 K8 0x7C1C0400, // 0047 CALL R7 2 - 0x881C0936, // 0048 GETMBR R7 R4 K54 - 0x88200997, // 0049 GETMBR R8 R4 K151 + 0x881C0935, // 0048 GETMBR R7 R4 K53 + 0x88200991, // 0049 GETMBR R8 R4 K145 0x001C0E08, // 004A ADD R7 R7 R8 0x60200015, // 004B GETGBL R8 G21 0x7C200000, // 004C CALL R8 0 - 0x8C20114F, // 004D GETMET R8 R8 K79 - 0x5828009D, // 004E LDCONST R10 K157 + 0x8C20114D, // 004D GETMET R8 R8 K77 + 0x58280097, // 004E LDCONST R10 K151 0x7C200400, // 004F CALL R8 2 - 0x8C240561, // 0050 GETMET R9 R2 K97 + 0x8C24055F, // 0050 GETMET R9 R2 K95 0x7C240200, // 0051 CALL R9 1 - 0x8C241362, // 0052 GETMET R9 R9 K98 - 0x882C0D6A, // 0053 GETMBR R11 R6 K106 + 0x8C241360, // 0052 GETMET R9 R9 K96 + 0x882C0D65, // 0053 GETMBR R11 R6 K101 0x5C300E00, // 0054 MOVE R12 R7 0x5C341000, // 0055 MOVE R13 R8 0x543A000F, // 0056 LDINT R14 16 0x7C240A00, // 0057 CALL R9 5 0x60280015, // 0058 GETGBL R10 G21 0x7C280000, // 0059 CALL R10 0 - 0x8C28154F, // 005A GETMET R10 R10 K79 - 0x5830009E, // 005B LDCONST R12 K158 + 0x8C28154D, // 005A GETMET R10 R10 K77 + 0x58300098, // 005B LDCONST R12 K152 0x7C280400, // 005C CALL R10 2 0x542DFFEE, // 005D LDINT R11 -17 0x402E3E0B, // 005E CONNECT R11 K31 R11 - 0x88300998, // 005F GETMBR R12 R4 K152 + 0x88300992, // 005F GETMBR R12 R4 K146 0x942C180B, // 0060 GETIDX R11 R12 R11 0x5435FFEF, // 0061 LDINT R13 -16 0x40341B03, // 0062 CONNECT R13 R13 K3 - 0x88380998, // 0063 GETMBR R14 R4 K152 + 0x88380992, // 0063 GETMBR R14 R4 K146 0x94301C0D, // 0064 GETIDX R12 R14 R13 - 0x8C3C056D, // 0065 GETMET R15 R2 K109 + 0x8C3C0567, // 0065 GETMET R15 R2 K103 0x5C441200, // 0066 MOVE R17 R9 0x5C481400, // 0067 MOVE R18 R10 0x604C0015, // 0068 GETGBL R19 G21 @@ -1419,92 +1413,92 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x5456000F, // 006D LDINT R21 16 0x7C3C0C00, // 006E CALL R15 6 0x5C341E00, // 006F MOVE R13 R15 - 0x8C3C1B6F, // 0070 GETMET R15 R13 K111 + 0x8C3C1B69, // 0070 GETMET R15 R13 K105 0x5C441600, // 0071 MOVE R17 R11 0x7C3C0400, // 0072 CALL R15 2 0x5C381E00, // 0073 MOVE R14 R15 - 0x8C3C1B70, // 0074 GETMET R15 R13 K112 + 0x8C3C1B6A, // 0074 GETMET R15 R13 K106 0x7C3C0200, // 0075 CALL R15 1 0x1C40180F, // 0076 EQ R16 R12 R15 0x7842008A, // 0077 JMPF R16 #0103 - 0x88400D9A, // 0078 GETMBR R16 R6 K154 - 0x900F3410, // 0079 SETMBR R3 K154 R16 - 0x884003A0, // 007A GETMBR R16 R1 K160 - 0x900F3E10, // 007B SETMBR R3 K159 R16 - 0x8C4007A1, // 007C GETMET R16 R3 K161 + 0x88400D94, // 0078 GETMBR R16 R6 K148 + 0x900F2810, // 0079 SETMBR R3 K148 R16 + 0x8840039A, // 007A GETMBR R16 R1 K154 + 0x900F3210, // 007B SETMBR R3 K153 R16 + 0x8C40079B, // 007C GETMET R16 R3 K155 0x7C400200, // 007D CALL R16 1 - 0x8840092F, // 007E GETMBR R16 R4 K47 - 0x900E5C10, // 007F SETMBR R3 K46 R16 + 0x8840092E, // 007E GETMBR R16 R4 K46 + 0x900E5A10, // 007F SETMBR R3 K45 R16 0x8840010D, // 0080 GETMBR R16 R0 K13 0x8840210E, // 0081 GETMBR R16 R16 K14 - 0x8C402131, // 0082 GETMET R16 R16 K49 + 0x8C402130, // 0082 GETMET R16 R16 K48 0x7C400200, // 0083 CALL R16 1 - 0x900E6010, // 0084 SETMBR R3 K48 R16 + 0x900E5E10, // 0084 SETMBR R3 K47 R16 0xB8420A00, // 0085 GETNGBL R16 K5 0x60440018, // 0086 GETGBL R17 G24 - 0x58480032, // 0087 LDCONST R18 K50 - 0x884C0730, // 0088 GETMBR R19 R3 K48 - 0x88500333, // 0089 GETMBR R20 R1 K51 - 0x88540334, // 008A GETMBR R21 R1 K52 + 0x58480031, // 0087 LDCONST R18 K49 + 0x884C072F, // 0088 GETMBR R19 R3 K47 + 0x88500332, // 0089 GETMBR R20 R1 K50 + 0x88540333, // 008A GETMBR R21 R1 K51 0x7C440800, // 008B CALL R17 4 - 0x58480024, // 008C LDCONST R18 K36 + 0x58480008, // 008C LDCONST R18 K8 0x7C400400, // 008D CALL R16 2 - 0x88400D6A, // 008E GETMBR R16 R6 K106 - 0x900ED410, // 008F SETMBR R3 K106 R16 - 0x8C400538, // 0090 GETMET R16 R2 K56 + 0x88400D65, // 008E GETMBR R16 R6 K101 + 0x900ECA10, // 008F SETMBR R3 K101 R16 + 0x8C400537, // 0090 GETMET R16 R2 K55 0x544A000F, // 0091 LDINT R18 16 0x7C400400, // 0092 CALL R16 2 - 0x900F4410, // 0093 SETMBR R3 K162 R16 + 0x900F3810, // 0093 SETMBR R3 K156 R16 0x60400015, // 0094 GETGBL R16 G21 0x7C400000, // 0095 CALL R16 0 - 0x8C40214F, // 0096 GETMET R16 R16 K79 - 0x584800A3, // 0097 LDCONST R18 K163 + 0x8C40214D, // 0096 GETMET R16 R16 K77 + 0x5848009D, // 0097 LDCONST R18 K157 0x7C400400, // 0098 CALL R16 2 - 0x88440936, // 0099 GETMBR R17 R4 K54 - 0x884807A2, // 009A GETMBR R18 R3 K162 + 0x88440935, // 0099 GETMBR R17 R4 K53 + 0x8848079C, // 009A GETMBR R18 R3 K156 0x00442212, // 009B ADD R17 R17 R18 - 0x8C480561, // 009C GETMET R18 R2 K97 + 0x8C48055F, // 009C GETMET R18 R2 K95 0x7C480200, // 009D CALL R18 1 - 0x8C482562, // 009E GETMET R18 R18 K98 - 0x8850076A, // 009F GETMBR R20 R3 K106 + 0x8C482560, // 009E GETMET R18 R18 K96 + 0x88500765, // 009F GETMBR R20 R3 K101 0x5C542200, // 00A0 MOVE R21 R17 0x5C582000, // 00A1 MOVE R22 R16 0x545E000F, // 00A2 LDINT R23 16 0x7C480A00, // 00A3 CALL R18 5 - 0x8C4C056D, // 00A4 GETMET R19 R2 K109 + 0x8C4C0567, // 00A4 GETMET R19 R2 K103 0x5C542400, // 00A5 MOVE R21 R18 0x60580015, // 00A6 GETGBL R22 G21 0x7C580000, // 00A7 CALL R22 0 - 0x8C582D4F, // 00A8 GETMET R22 R22 K79 - 0x586000A4, // 00A9 LDCONST R24 K164 + 0x8C582D4D, // 00A8 GETMET R22 R22 K77 + 0x5860009E, // 00A9 LDCONST R24 K158 0x7C580400, // 00AA CALL R22 2 0x605C0015, // 00AB GETGBL R23 G21 0x7C5C0000, // 00AC CALL R23 0 0x5860001F, // 00AD LDCONST R24 K31 0x5466000F, // 00AE LDINT R25 16 0x7C4C0C00, // 00AF CALL R19 6 - 0x8C502770, // 00B0 GETMET R20 R19 K112 + 0x8C50276A, // 00B0 GETMET R20 R19 K106 0x7C500200, // 00B1 CALL R20 1 - 0xB8564E00, // 00B2 GETNGBL R21 K39 - 0x8C542BA5, // 00B3 GETMET R21 R21 K165 + 0xB8564C00, // 00B2 GETNGBL R21 K38 + 0x8C542B9F, // 00B3 GETMET R21 R21 K159 0x7C540200, // 00B4 CALL R21 1 - 0x885807A2, // 00B5 GETMBR R22 R3 K162 - 0x90572E16, // 00B6 SETMBR R21 K151 R22 - 0x90574C14, // 00B7 SETMBR R21 K166 R20 - 0x88580730, // 00B8 GETMBR R22 R3 K48 - 0x90574E16, // 00B9 SETMBR R21 K167 R22 - 0x88580936, // 00BA GETMBR R22 R4 K54 - 0x885C0DA2, // 00BB GETMBR R23 R6 K162 + 0x8858079C, // 00B5 GETMBR R22 R3 K156 + 0x90572216, // 00B6 SETMBR R21 K145 R22 + 0x90574014, // 00B7 SETMBR R21 K160 R20 + 0x8858072F, // 00B8 GETMBR R22 R3 K47 + 0x90574216, // 00B9 SETMBR R21 K161 R22 + 0x88580935, // 00BA GETMBR R22 R4 K53 + 0x885C0D9C, // 00BB GETMBR R23 R6 K156 0x00582C17, // 00BC ADD R22 R22 R23 - 0x8C5C0561, // 00BD GETMET R23 R2 K97 + 0x8C5C055F, // 00BD GETMET R23 R2 K95 0x7C5C0200, // 00BE CALL R23 1 - 0x8C5C2F62, // 00BF GETMET R23 R23 K98 - 0x8864076A, // 00C0 GETMBR R25 R3 K106 + 0x8C5C2F60, // 00BF GETMET R23 R23 K96 + 0x88640765, // 00C0 GETMBR R25 R3 K101 0x5C682C00, // 00C1 MOVE R26 R22 0x606C0015, // 00C2 GETGBL R27 G21 0x7C6C0000, // 00C3 CALL R27 0 - 0x8C6C374F, // 00C4 GETMET R27 R27 K79 - 0x587400A8, // 00C5 LDCONST R29 K168 + 0x8C6C374D, // 00C4 GETMET R27 R27 K77 + 0x587400A2, // 00C5 LDCONST R29 K162 0x7C6C0400, // 00C6 CALL R27 2 0x5472002F, // 00C7 LDINT R28 48 0x7C5C0A00, // 00C8 CALL R23 5 @@ -1520,24 +1514,24 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x4068341B, // 00D2 CONNECT R26 R26 R27 0x94682E1A, // 00D3 GETIDX R26 R23 R26 0xB86E1400, // 00D4 GETNGBL R27 K10 - 0x8C6C3760, // 00D5 GETMET R27 R27 K96 + 0x8C6C375E, // 00D5 GETMET R27 R27 K94 0x7C6C0200, // 00D6 CALL R27 1 - 0x8C702B3E, // 00D7 GETMET R28 R21 K62 + 0x8C702B3D, // 00D7 GETMET R28 R21 K61 0x7C700200, // 00D8 CALL R28 1 0x4C740000, // 00D9 LDNIL R29 - 0x900E561D, // 00DA SETMBR R3 K43 R29 - 0x8C740340, // 00DB GETMET R29 R1 K64 + 0x900E541D, // 00DA SETMBR R3 K42 R29 + 0x8C74033F, // 00DB GETMET R29 R1 K63 0x547E0032, // 00DC LDINT R31 51 0x50800200, // 00DD LDBOOL R32 1 0 0x7C740600, // 00DE CALL R29 3 - 0x8C783B41, // 00DF GETMET R30 R29 K65 + 0x8C783B40, // 00DF GETMET R30 R29 K64 0x5C803800, // 00E0 MOVE R32 R28 0x7C780400, // 00E1 CALL R30 2 - 0x887C0142, // 00E2 GETMBR R31 R0 K66 - 0x8C7C3F43, // 00E3 GETMET R31 R31 K67 + 0x887C0141, // 00E2 GETMBR R31 R0 K65 + 0x8C7C3F42, // 00E3 GETMET R31 R31 K66 0x5C843A00, // 00E4 MOVE R33 R29 0x7C7C0400, // 00E5 CALL R31 2 - 0x8C7C0785, // 00E6 GETMET R31 R3 K133 + 0x8C7C077F, // 00E6 GETMET R31 R3 K127 0x7C7C0200, // 00E7 CALL R31 1 0x8C7C071C, // 00E8 GETMET R31 R3 K28 0x5C843000, // 00E9 MOVE R33 R24 @@ -1545,215 +1539,215 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x5C8C3400, // 00EB MOVE R35 R26 0x5C903600, // 00EC MOVE R36 R27 0x7C7C0A00, // 00ED CALL R31 5 - 0x887C0D76, // 00EE GETMBR R31 R6 K118 - 0x900EEC1F, // 00EF SETMBR R3 K118 R31 - 0x900F0D1F, // 00F0 SETMBR R3 K134 K31 - 0x8C7C0787, // 00F1 GETMET R31 R3 K135 + 0x887C0D70, // 00EE GETMBR R31 R6 K112 + 0x900EE01F, // 00EF SETMBR R3 K112 R31 + 0x900F011F, // 00F0 SETMBR R3 K128 K31 + 0x8C7C0781, // 00F1 GETMET R31 R3 K129 0x7C7C0200, // 00F2 CALL R31 1 - 0x8C7C0788, // 00F3 GETMET R31 R3 K136 + 0x8C7C0782, // 00F3 GETMET R31 R3 K130 0x50840200, // 00F4 LDBOOL R33 1 0 0x7C7C0400, // 00F5 CALL R31 2 - 0x8C7C0789, // 00F6 GETMET R31 R3 K137 + 0x8C7C0783, // 00F6 GETMET R31 R3 K131 0x7C7C0200, // 00F7 CALL R31 1 - 0x8C7C078A, // 00F8 GETMET R31 R3 K138 + 0x8C7C0784, // 00F8 GETMET R31 R3 K132 0x7C7C0200, // 00F9 CALL R31 1 - 0x8C7C078B, // 00FA GETMET R31 R3 K139 + 0x8C7C0785, // 00FA GETMET R31 R3 K133 0x7C7C0200, // 00FB CALL R31 1 0xB87E0A00, // 00FC GETNGBL R31 K5 - 0x588000A9, // 00FD LDCONST R32 K169 - 0x58840024, // 00FE LDCONST R33 K36 + 0x588000A3, // 00FD LDCONST R32 K163 + 0x58840008, // 00FE LDCONST R33 K8 0x7C7C0400, // 00FF CALL R31 2 0x507C0200, // 0100 LDBOOL R31 1 0 0x80043E00, // 0101 RET 1 R31 0x70020004, // 0102 JMP #0108 0xB8420A00, // 0103 GETNGBL R16 K5 - 0x584400AA, // 0104 LDCONST R17 K170 - 0x58480024, // 0105 LDCONST R18 K36 + 0x584400A4, // 0104 LDCONST R17 K164 + 0x58480008, // 0105 LDCONST R18 K8 0x7C400400, // 0106 CALL R16 2 0x50140000, // 0107 LDBOOL R5 0 0 0x5C1C0A00, // 0108 MOVE R7 R5 0x741E00E4, // 0109 JMPT R7 #01EF - 0x8C1C01AB, // 010A GETMET R7 R0 K171 - 0x882409AC, // 010B GETMBR R9 R4 K172 - 0x88280936, // 010C GETMBR R10 R4 K54 + 0x8C1C01A5, // 010A GETMET R7 R0 K165 + 0x882409A6, // 010B GETMBR R9 R4 K166 + 0x88280935, // 010C GETMBR R10 R4 K53 0x7C1C0600, // 010D CALL R7 3 - 0x900F3407, // 010E SETMBR R3 K154 R7 + 0x900F2807, // 010E SETMBR R3 K148 R7 0x4C200000, // 010F LDNIL R8 0x1C200608, // 0110 EQ R8 R3 R8 0x74220003, // 0111 JMPT R8 #0116 - 0x8820079A, // 0112 GETMBR R8 R3 K154 + 0x88200794, // 0112 GETMBR R8 R3 K148 0x4C240000, // 0113 LDNIL R9 0x1C201009, // 0114 EQ R8 R8 R9 0x7822000C, // 0115 JMPF R8 #0123 0xB8220A00, // 0116 GETNGBL R8 K5 - 0x582400AD, // 0117 LDCONST R9 K173 - 0x58280024, // 0118 LDCONST R10 K36 + 0x582400A7, // 0117 LDCONST R9 K167 + 0x58280008, // 0118 LDCONST R10 K8 0x7C200400, // 0119 CALL R8 2 - 0x8C200125, // 011A GETMET R8 R0 K37 + 0x8C200124, // 011A GETMET R8 R0 K36 0x5C280200, // 011B MOVE R10 R1 - 0x582C0026, // 011C LDCONST R11 K38 + 0x582C0025, // 011C LDCONST R11 K37 0x5830001F, // 011D LDCONST R12 K31 - 0x58340026, // 011E LDCONST R13 K38 + 0x58340025, // 011E LDCONST R13 K37 0x50380000, // 011F LDBOOL R14 0 0 0x7C200C00, // 0120 CALL R8 6 0x50200000, // 0121 LDBOOL R8 0 0 0x80041000, // 0122 RET 1 R8 - 0x882003A0, // 0123 GETMBR R8 R1 K160 - 0x900F3E08, // 0124 SETMBR R3 K159 R8 - 0x8C2007A1, // 0125 GETMET R8 R3 K161 + 0x8820039A, // 0123 GETMBR R8 R1 K154 + 0x900F3208, // 0124 SETMBR R3 K153 R8 + 0x8C20079B, // 0125 GETMET R8 R3 K155 0x7C200200, // 0126 CALL R8 1 - 0x8820092F, // 0127 GETMBR R8 R4 K47 - 0x900E5C08, // 0128 SETMBR R3 K46 R8 + 0x8820092E, // 0127 GETMBR R8 R4 K46 + 0x900E5A08, // 0128 SETMBR R3 K45 R8 0x8820010D, // 0129 GETMBR R8 R0 K13 0x8820110E, // 012A GETMBR R8 R8 K14 - 0x8C201131, // 012B GETMET R8 R8 K49 + 0x8C201130, // 012B GETMET R8 R8 K48 0x7C200200, // 012C CALL R8 1 - 0x900E6008, // 012D SETMBR R3 K48 R8 + 0x900E5E08, // 012D SETMBR R3 K47 R8 0xB8220A00, // 012E GETNGBL R8 K5 0x60240018, // 012F GETGBL R9 G24 - 0x58280032, // 0130 LDCONST R10 K50 - 0x882C0730, // 0131 GETMBR R11 R3 K48 - 0x88300333, // 0132 GETMBR R12 R1 K51 - 0x88340334, // 0133 GETMBR R13 R1 K52 + 0x58280031, // 0130 LDCONST R10 K49 + 0x882C072F, // 0131 GETMBR R11 R3 K47 + 0x88300332, // 0132 GETMBR R12 R1 K50 + 0x88340333, // 0133 GETMBR R13 R1 K51 0x7C240800, // 0134 CALL R9 4 - 0x58280024, // 0135 LDCONST R10 K36 + 0x58280008, // 0135 LDCONST R10 K8 0x7C200400, // 0136 CALL R8 2 - 0x8C200538, // 0137 GETMET R8 R2 K56 + 0x8C200537, // 0137 GETMET R8 R2 K55 0x542A000F, // 0138 LDINT R10 16 0x7C200400, // 0139 CALL R8 2 - 0x900F4408, // 013A SETMBR R3 K162 R8 - 0x8C200538, // 013B GETMET R8 R2 K56 + 0x900F3808, // 013A SETMBR R3 K156 R8 + 0x8C200537, // 013B GETMET R8 R2 K55 0x542A001F, // 013C LDINT R10 32 0x7C200400, // 013D CALL R8 2 - 0x900F5C08, // 013E SETMBR R3 K174 R8 - 0x8C20057F, // 013F GETMET R8 R2 K127 + 0x900F5008, // 013E SETMBR R3 K168 R8 + 0x8C200579, // 013F GETMET R8 R2 K121 0x7C200200, // 0140 CALL R8 1 - 0x8C2011AF, // 0141 GETMET R8 R8 K175 - 0x882807AE, // 0142 GETMBR R10 R3 K174 + 0x8C2011A9, // 0141 GETMET R8 R8 K169 + 0x882807A8, // 0142 GETMBR R10 R3 K168 0x7C200400, // 0143 CALL R8 2 - 0x900EFC08, // 0144 SETMBR R3 K126 R8 - 0x8C200538, // 0145 GETMET R8 R2 K56 + 0x900EF008, // 0144 SETMBR R3 K120 R8 + 0x8C200537, // 0145 GETMET R8 R2 K55 0x542A001F, // 0146 LDINT R10 32 0x7C200400, // 0147 CALL R8 2 - 0x8C24057F, // 0148 GETMET R9 R2 K127 + 0x8C240579, // 0148 GETMET R9 R2 K121 0x7C240200, // 0149 CALL R9 1 - 0x8C2413B0, // 014A GETMET R9 R9 K176 - 0x882C07AE, // 014B GETMBR R11 R3 K174 - 0x88300996, // 014C GETMBR R12 R4 K150 + 0x8C2413AA, // 014A GETMET R9 R9 K170 + 0x882C07A8, // 014B GETMBR R11 R3 K168 + 0x88300990, // 014C GETMBR R12 R4 K144 0x7C240600, // 014D CALL R9 3 - 0x900ED409, // 014E SETMBR R3 K106 R9 - 0xB8264E00, // 014F GETNGBL R9 K39 - 0x88241372, // 0150 GETMBR R9 R9 K114 - 0x8C24137A, // 0151 GETMET R9 R9 K122 + 0x900ECA09, // 014E SETMBR R3 K101 R9 + 0xB8264C00, // 014F GETNGBL R9 K38 + 0x8824136C, // 0150 GETMBR R9 R9 K108 + 0x8C241374, // 0151 GETMET R9 R9 K116 0x7C240200, // 0152 CALL R9 1 - 0x8C28137B, // 0153 GETMET R10 R9 K123 - 0x58300026, // 0154 LDCONST R12 K38 - 0xB8364E00, // 0155 GETNGBL R13 K39 - 0x88341B72, // 0156 GETMBR R13 R13 K114 - 0x88341BB1, // 0157 GETMBR R13 R13 K177 - 0x8C380FB2, // 0158 GETMET R14 R7 K178 + 0x8C281375, // 0153 GETMET R10 R9 K117 + 0x58300025, // 0154 LDCONST R12 K37 + 0xB8364C00, // 0155 GETNGBL R13 K38 + 0x88341B6C, // 0156 GETMBR R13 R13 K108 + 0x88341BAB, // 0157 GETMBR R13 R13 K171 + 0x8C380FAC, // 0158 GETMET R14 R7 K172 0x7C380200, // 0159 CALL R14 1 0x7C280800, // 015A CALL R10 4 - 0x8C28137B, // 015B GETMET R10 R9 K123 - 0x58300045, // 015C LDCONST R12 K69 - 0xB8364E00, // 015D GETNGBL R13 K39 - 0x88341B72, // 015E GETMBR R13 R13 K114 - 0x88341BB1, // 015F GETMBR R13 R13 K177 - 0x8C380FB3, // 0160 GETMET R14 R7 K179 + 0x8C281375, // 015B GETMET R10 R9 K117 + 0x58300022, // 015C LDCONST R12 K34 + 0xB8364C00, // 015D GETNGBL R13 K38 + 0x88341B6C, // 015E GETMBR R13 R13 K108 + 0x88341BAB, // 015F GETMBR R13 R13 K171 + 0x8C380FAD, // 0160 GETMET R14 R7 K173 0x7C380200, // 0161 CALL R14 1 0x7C280800, // 0162 CALL R10 4 - 0x8C28137B, // 0163 GETMET R10 R9 K123 - 0x58300024, // 0164 LDCONST R12 K36 - 0xB8364E00, // 0165 GETNGBL R13 K39 - 0x88341B72, // 0166 GETMBR R13 R13 K114 - 0x88341BB1, // 0167 GETMBR R13 R13 K177 - 0x8838077E, // 0168 GETMBR R14 R3 K126 + 0x8C281375, // 0163 GETMET R10 R9 K117 + 0x58300008, // 0164 LDCONST R12 K8 + 0xB8364C00, // 0165 GETNGBL R13 K38 + 0x88341B6C, // 0166 GETMBR R13 R13 K108 + 0x88341BAB, // 0167 GETMBR R13 R13 K171 + 0x88380778, // 0168 GETMBR R14 R3 K120 0x7C280800, // 0169 CALL R10 4 - 0x8C28137B, // 016A GETMET R10 R9 K123 + 0x8C281375, // 016A GETMET R10 R9 K117 0x54320003, // 016B LDINT R12 4 - 0xB8364E00, // 016C GETNGBL R13 K39 - 0x88341B72, // 016D GETMBR R13 R13 K114 - 0x88341BB1, // 016E GETMBR R13 R13 K177 - 0x88380996, // 016F GETMBR R14 R4 K150 + 0xB8364C00, // 016C GETNGBL R13 K38 + 0x88341B6C, // 016D GETMBR R13 R13 K108 + 0x88341BAB, // 016E GETMBR R13 R13 K171 + 0x88380990, // 016F GETMBR R14 R4 K144 0x7C280800, // 0170 CALL R10 4 - 0x8C28057F, // 0171 GETMET R10 R2 K127 + 0x8C280579, // 0171 GETMET R10 R2 K121 0x7C280200, // 0172 CALL R10 1 - 0x8C2815B4, // 0173 GETMET R10 R10 K180 - 0x8C300FB5, // 0174 GETMET R12 R7 K181 + 0x8C2815AE, // 0173 GETMET R10 R10 K174 + 0x8C300FAF, // 0174 GETMET R12 R7 K175 0x7C300200, // 0175 CALL R12 1 - 0x8C34133E, // 0176 GETMET R13 R9 K62 + 0x8C34133D, // 0176 GETMET R13 R9 K61 0x7C340200, // 0177 CALL R13 1 0x7C280600, // 0178 CALL R10 3 - 0xB82E4E00, // 0179 GETNGBL R11 K39 - 0x882C1772, // 017A GETMBR R11 R11 K114 - 0x8C2C177A, // 017B GETMET R11 R11 K122 + 0xB82E4C00, // 0179 GETNGBL R11 K38 + 0x882C176C, // 017A GETMBR R11 R11 K108 + 0x8C2C1774, // 017B GETMET R11 R11 K116 0x7C2C0200, // 017C CALL R11 1 - 0x8C30177B, // 017D GETMET R12 R11 K123 - 0x58380026, // 017E LDCONST R14 K38 - 0xB83E4E00, // 017F GETNGBL R15 K39 - 0x883C1F72, // 0180 GETMBR R15 R15 K114 - 0x883C1FB1, // 0181 GETMBR R15 R15 K177 - 0x8C400FB2, // 0182 GETMET R16 R7 K178 + 0x8C301775, // 017D GETMET R12 R11 K117 + 0x58380025, // 017E LDCONST R14 K37 + 0xB83E4C00, // 017F GETNGBL R15 K38 + 0x883C1F6C, // 0180 GETMBR R15 R15 K108 + 0x883C1FAB, // 0181 GETMBR R15 R15 K171 + 0x8C400FAC, // 0182 GETMET R16 R7 K172 0x7C400200, // 0183 CALL R16 1 0x7C300800, // 0184 CALL R12 4 - 0x8C30177B, // 0185 GETMET R12 R11 K123 - 0x58380045, // 0186 LDCONST R14 K69 - 0xB83E4E00, // 0187 GETNGBL R15 K39 - 0x883C1F72, // 0188 GETMBR R15 R15 K114 - 0x883C1FB1, // 0189 GETMBR R15 R15 K177 - 0x8C400FB3, // 018A GETMET R16 R7 K179 + 0x8C301775, // 0185 GETMET R12 R11 K117 + 0x58380022, // 0186 LDCONST R14 K34 + 0xB83E4C00, // 0187 GETNGBL R15 K38 + 0x883C1F6C, // 0188 GETMBR R15 R15 K108 + 0x883C1FAB, // 0189 GETMBR R15 R15 K171 + 0x8C400FAD, // 018A GETMET R16 R7 K173 0x7C400200, // 018B CALL R16 1 0x7C300800, // 018C CALL R12 4 - 0x8C30177B, // 018D GETMET R12 R11 K123 - 0x58380024, // 018E LDCONST R14 K36 - 0xB83E4E00, // 018F GETNGBL R15 K39 - 0x883C1F72, // 0190 GETMBR R15 R15 K114 - 0x883C1FB1, // 0191 GETMBR R15 R15 K177 + 0x8C301775, // 018D GETMET R12 R11 K117 + 0x58380008, // 018E LDCONST R14 K8 + 0xB83E4C00, // 018F GETNGBL R15 K38 + 0x883C1F6C, // 0190 GETMBR R15 R15 K108 + 0x883C1FAB, // 0191 GETMBR R15 R15 K171 0x5C401400, // 0192 MOVE R16 R10 0x7C300800, // 0193 CALL R12 4 - 0x8C30177B, // 0194 GETMET R12 R11 K123 + 0x8C301775, // 0194 GETMET R12 R11 K117 0x543A0003, // 0195 LDINT R14 4 - 0xB83E4E00, // 0196 GETNGBL R15 K39 - 0x883C1F72, // 0197 GETMBR R15 R15 K114 - 0x883C1FB1, // 0198 GETMBR R15 R15 K177 - 0x884007A2, // 0199 GETMBR R16 R3 K162 + 0xB83E4C00, // 0196 GETNGBL R15 K38 + 0x883C1F6C, // 0197 GETMBR R15 R15 K108 + 0x883C1FAB, // 0198 GETMBR R15 R15 K171 + 0x8840079C, // 0199 GETMBR R16 R3 K156 0x7C300800, // 019A CALL R12 4 - 0x883009B6, // 019B GETMBR R12 R4 K182 - 0x900E560C, // 019C SETMBR R3 K43 R12 - 0x8C30054E, // 019D GETMET R12 R2 K78 + 0x883009B0, // 019B GETMBR R12 R4 K176 + 0x900E540C, // 019C SETMBR R3 K42 R12 + 0x8C30054C, // 019D GETMET R12 R2 K76 0x7C300200, // 019E CALL R12 1 0x8C301916, // 019F GETMET R12 R12 K22 - 0x8838072B, // 01A0 GETMBR R14 R3 K43 + 0x8838072A, // 01A0 GETMBR R14 R3 K42 0x7C300400, // 01A1 CALL R12 2 0x8C301917, // 01A2 GETMET R12 R12 K23 0x7C300200, // 01A3 CALL R12 1 0x60340015, // 01A4 GETGBL R13 G21 0x7C340000, // 01A5 CALL R13 0 - 0x8C341B4F, // 01A6 GETMET R13 R13 K79 - 0x883C01B7, // 01A7 GETMBR R15 R0 K183 + 0x8C341B4D, // 01A6 GETMET R13 R13 K77 + 0x883C01B1, // 01A7 GETMBR R15 R0 K177 0x7C340400, // 01A8 CALL R13 2 0x8C380F14, // 01A9 GETMET R14 R7 K20 0x7C380200, // 01AA CALL R14 1 0x00381C08, // 01AB ADD R14 R14 R8 - 0x883C077E, // 01AC GETMBR R15 R3 K126 + 0x883C0778, // 01AC GETMBR R15 R3 K120 0x00381C0F, // 01AD ADD R14 R14 R15 0x00381C0C, // 01AE ADD R14 R14 R12 - 0x8C3C0561, // 01AF GETMET R15 R2 K97 + 0x8C3C055F, // 01AF GETMET R15 R2 K95 0x7C3C0200, // 01B0 CALL R15 1 - 0x8C3C1F62, // 01B1 GETMET R15 R15 K98 - 0x8844076A, // 01B2 GETMBR R17 R3 K106 + 0x8C3C1F60, // 01B1 GETMET R15 R15 K96 + 0x88440765, // 01B2 GETMBR R17 R3 K101 0x5C481C00, // 01B3 MOVE R18 R14 0x5C4C1A00, // 01B4 MOVE R19 R13 0x5452000F, // 01B5 LDINT R20 16 0x7C3C0A00, // 01B6 CALL R15 5 - 0x8C40173E, // 01B7 GETMET R16 R11 K62 + 0x8C40173D, // 01B7 GETMET R16 R11 K61 0x7C400200, // 01B8 CALL R16 1 - 0x8C44056D, // 01B9 GETMET R17 R2 K109 + 0x8C440567, // 01B9 GETMET R17 R2 K103 0x5C4C1E00, // 01BA MOVE R19 R15 0x60500015, // 01BB GETGBL R20 G21 0x7C500000, // 01BC CALL R20 0 - 0x8C50294F, // 01BD GETMET R20 R20 K79 - 0x885801B8, // 01BE GETMBR R22 R0 K184 + 0x8C50294D, // 01BD GETMET R20 R20 K77 + 0x885801B2, // 01BE GETMBR R22 R0 K178 0x7C500400, // 01BF CALL R20 2 0x60540015, // 01C0 GETGBL R21 G21 0x7C540000, // 01C1 CALL R21 0 @@ -1762,42 +1756,42 @@ be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */ 0x7C580200, // 01C4 CALL R22 1 0x545E000F, // 01C5 LDINT R23 16 0x7C440C00, // 01C6 CALL R17 6 - 0x8C4823B9, // 01C7 GETMET R18 R17 K185 + 0x8C4823B3, // 01C7 GETMET R18 R17 K179 0x5C502000, // 01C8 MOVE R20 R16 0x7C480400, // 01C9 CALL R18 2 - 0x8C4C2370, // 01CA GETMET R19 R17 K112 + 0x8C4C236A, // 01CA GETMET R19 R17 K106 0x7C4C0200, // 01CB CALL R19 1 0x00482413, // 01CC ADD R18 R18 R19 - 0xB84E4E00, // 01CD GETNGBL R19 K39 - 0x8C4C27BA, // 01CE GETMET R19 R19 K186 + 0xB84E4C00, // 01CD GETNGBL R19 K38 + 0x8C4C27B4, // 01CE GETMET R19 R19 K180 0x7C4C0200, // 01CF CALL R19 1 - 0x904E6E08, // 01D0 SETMBR R19 K55 R8 - 0x88500730, // 01D1 GETMBR R20 R3 K48 - 0x904E7214, // 01D2 SETMBR R19 K57 R20 - 0x8850077E, // 01D3 GETMBR R20 R3 K126 - 0x904F7614, // 01D4 SETMBR R19 K187 R20 - 0x904F7812, // 01D5 SETMBR R19 K188 R18 - 0x8C50273E, // 01D6 GETMET R20 R19 K62 + 0x904E6C08, // 01D0 SETMBR R19 K54 R8 + 0x8850072F, // 01D1 GETMBR R20 R3 K47 + 0x904E7014, // 01D2 SETMBR R19 K56 R20 + 0x88500778, // 01D3 GETMBR R20 R3 K120 + 0x904F6A14, // 01D4 SETMBR R19 K181 R20 + 0x904F6C12, // 01D5 SETMBR R19 K182 R18 + 0x8C50273D, // 01D6 GETMET R20 R19 K61 0x7C500200, // 01D7 CALL R20 1 - 0x900E7E14, // 01D8 SETMBR R3 K63 R20 - 0x8C540340, // 01D9 GETMET R21 R1 K64 + 0x900E7C14, // 01D8 SETMBR R3 K62 R20 + 0x8C54033F, // 01D9 GETMET R21 R1 K63 0x545E0030, // 01DA LDINT R23 49 0x50600200, // 01DB LDBOOL R24 1 0 0x7C540600, // 01DC CALL R21 3 - 0x8C582B41, // 01DD GETMET R22 R21 K65 + 0x8C582B40, // 01DD GETMET R22 R21 K64 0x5C602800, // 01DE MOVE R24 R20 0x7C580400, // 01DF CALL R22 2 0xB85E0A00, // 01E0 GETNGBL R23 K5 0x60600018, // 01E1 GETGBL R24 G24 - 0x586400BD, // 01E2 LDCONST R25 K189 - 0x88680730, // 01E3 GETMBR R26 R3 K48 - 0x886C075B, // 01E4 GETMBR R27 R3 K91 - 0x8870075C, // 01E5 GETMBR R28 R3 K92 + 0x586400B7, // 01E2 LDCONST R25 K183 + 0x8868072F, // 01E3 GETMBR R26 R3 K47 + 0x886C0759, // 01E4 GETMBR R27 R3 K89 + 0x8870075A, // 01E5 GETMBR R28 R3 K90 0x7C600800, // 01E6 CALL R24 4 - 0x58640045, // 01E7 LDCONST R25 K69 + 0x58640022, // 01E7 LDCONST R25 K34 0x7C5C0400, // 01E8 CALL R23 2 - 0x885C0142, // 01E9 GETMBR R23 R0 K66 - 0x8C5C2F43, // 01EA GETMET R23 R23 K67 + 0x885C0141, // 01E9 GETMBR R23 R0 K65 + 0x8C5C2F42, // 01EA GETMET R23 R23 K66 0x5C642A00, // 01EB MOVE R25 R21 0x7C5C0400, // 01EC CALL R23 2 0x505C0200, // 01ED LDBOOL R23 1 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h index e8ccdbd73..1d0768004 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Control_Message' ktab size: 22, total: 31 (saved 72 bytes) -static const bvalue be_ktab_class_Matter_Control_Message[22] = { +// compact class 'Matter_Control_Message' ktab size: 23, total: 31 (saved 64 bytes) +static const bvalue be_ktab_class_Matter_Control_Message[23] = { /* K0 */ be_nested_str_weak(session), /* K1 */ be_nested_str_weak(log), /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s), @@ -27,6 +27,7 @@ static const bvalue be_ktab_class_Matter_Control_Message[22] = { /* K19 */ be_const_int(1), /* K20 */ be_nested_str_weak(parse_MsgCounterSyncRsp), /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X), + /* K22 */ be_const_int(2), }; @@ -182,7 +183,7 @@ be_local_closure(class_Matter_Control_Message_process_incoming_control_message, 0x58100015, // 001A LDCONST R4 K21 0x88140310, // 001B GETMBR R5 R1 K16 0x7C0C0400, // 001C CALL R3 2 - 0x58100007, // 001D LDCONST R4 K7 + 0x58100016, // 001D LDCONST R4 K22 0x7C080400, // 001E CALL R2 2 0x50080000, // 001F LDBOOL R2 0 0 0x80040400, // 0020 RET 1 R2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h index be84d44c8..ac8ce61c1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_EventHandler' ktab size: 59, total: 86 (saved 216 bytes) -static const bvalue be_ktab_class_Matter_EventHandler[59] = { +// compact class 'Matter_EventHandler' ktab size: 61, total: 86 (saved 200 bytes) +static const bvalue be_ktab_class_Matter_EventHandler[61] = { /* K0 */ be_nested_str_weak(tasmota), /* K1 */ be_nested_str_weak(log), /* K2 */ be_nested_str_weak(MTR_X3A_X20Events_X20queues_X20sizes_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), @@ -19,51 +19,53 @@ static const bvalue be_ktab_class_Matter_EventHandler[59] = { /* K11 */ be_nested_str_weak(MTR_X3A_X20Events_X20by_X20types_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), /* K12 */ be_nested_str_weak(counter_event_no), /* K13 */ be_nested_str_weak(add), - /* K14 */ be_nested_str_weak(counter_event_no_persisted), - /* K15 */ be_nested_str_weak(load_event_no_persisted), - /* K16 */ be_nested_str_weak(persist), - /* K17 */ be_nested_str_weak(find), - /* K18 */ be_nested_str_weak(EVENT_NO_KEY), - /* K19 */ be_nested_str_weak(0), - /* K20 */ be_nested_str_weak(int64), - /* K21 */ be_nested_str_weak(fromstring), - /* K22 */ be_nested_str_weak(EVENT_NO_INCR), - /* K23 */ be_nested_str_weak(setmember), - /* K24 */ be_nested_str_weak(tostring), - /* K25 */ be_nested_str_weak(save), - /* K26 */ be_nested_str_weak(push), - /* K27 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), - /* K28 */ be_nested_str_weak(pop), - /* K29 */ be_const_int(0), - /* K30 */ be_nested_str_weak(matter), - /* K31 */ be_nested_str_weak(EVENT_DEBUG), - /* K32 */ be_nested_str_weak(EVENT_INFO), - /* K33 */ be_nested_str_weak(compact), - /* K34 */ be_nested_str_weak(device), - /* K35 */ be_nested_str_weak(EventQueued), - /* K36 */ be_nested_str_weak(get_next_event_no), - /* K37 */ be_nested_str_weak(loglevel), - /* K38 */ be_const_int(3), - /* K39 */ be_nested_str_weak(), - /* K40 */ be_nested_str_weak(_X2C_X20), - /* K41 */ be_nested_str_weak(val), - /* K42 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), - /* K43 */ be_nested_str_weak(CRIT_X20_X20), - /* K44 */ be_nested_str_weak(INFO_X20_X20), - /* K45 */ be_nested_str_weak(DEBUG_X20), - /* K46 */ be_nested_str_weak(get_event_name), - /* K47 */ be_nested_str_weak(_X28), - /* K48 */ be_nested_str_weak(_X29_X20), - /* K49 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), - /* K50 */ be_nested_str_weak(event_no), - /* K51 */ be_nested_str_weak(endpoint), - /* K52 */ be_nested_str_weak(cluster), - /* K53 */ be_nested_str_weak(event_id), - /* K54 */ be_nested_str_weak(queue_event), - /* K55 */ be_nested_str_weak(message_handler), - /* K56 */ be_nested_str_weak(im), - /* K57 */ be_nested_str_weak(subs_shop), - /* K58 */ be_nested_str_weak(event_published), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(counter_event_no_persisted), + /* K16 */ be_nested_str_weak(load_event_no_persisted), + /* K17 */ be_nested_str_weak(persist), + /* K18 */ be_nested_str_weak(find), + /* K19 */ be_nested_str_weak(EVENT_NO_KEY), + /* K20 */ be_nested_str_weak(0), + /* K21 */ be_nested_str_weak(int64), + /* K22 */ be_nested_str_weak(fromstring), + /* K23 */ be_nested_str_weak(EVENT_NO_INCR), + /* K24 */ be_nested_str_weak(setmember), + /* K25 */ be_nested_str_weak(tostring), + /* K26 */ be_nested_str_weak(save), + /* K27 */ be_nested_str_weak(push), + /* K28 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), + /* K29 */ be_nested_str_weak(pop), + /* K30 */ be_const_int(0), + /* K31 */ be_nested_str_weak(matter), + /* K32 */ be_nested_str_weak(EVENT_DEBUG), + /* K33 */ be_nested_str_weak(EVENT_INFO), + /* K34 */ be_nested_str_weak(compact), + /* K35 */ be_nested_str_weak(device), + /* K36 */ be_nested_str_weak(EventQueued), + /* K37 */ be_nested_str_weak(get_next_event_no), + /* K38 */ be_nested_str_weak(loglevel), + /* K39 */ be_const_int(3), + /* K40 */ be_nested_str_weak(), + /* K41 */ be_nested_str_weak(_X2C_X20), + /* K42 */ be_nested_str_weak(val), + /* K43 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), + /* K44 */ be_nested_str_weak(CRIT_X20_X20), + /* K45 */ be_const_int(1), + /* K46 */ be_nested_str_weak(INFO_X20_X20), + /* K47 */ be_nested_str_weak(DEBUG_X20), + /* K48 */ be_nested_str_weak(get_event_name), + /* K49 */ be_nested_str_weak(_X28), + /* K50 */ be_nested_str_weak(_X29_X20), + /* K51 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), + /* K52 */ be_nested_str_weak(event_no), + /* K53 */ be_nested_str_weak(endpoint), + /* K54 */ be_nested_str_weak(cluster), + /* K55 */ be_nested_str_weak(event_id), + /* K56 */ be_nested_str_weak(queue_event), + /* K57 */ be_nested_str_weak(message_handler), + /* K58 */ be_nested_str_weak(im), + /* K59 */ be_nested_str_weak(subs_shop), + /* K60 */ be_nested_str_weak(event_published), }; @@ -210,14 +212,14 @@ be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ ( &(const binstruction[13]) { /* code */ 0x8804010C, // 0000 GETMBR R1 R0 K12 0x8C04030D, // 0001 GETMET R1 R1 K13 - 0x580C0009, // 0002 LDCONST R3 K9 + 0x580C000E, // 0002 LDCONST R3 K14 0x7C040400, // 0003 CALL R1 2 0x90021801, // 0004 SETMBR R0 K12 R1 0x8804010C, // 0005 GETMBR R1 R0 K12 - 0x8808010E, // 0006 GETMBR R2 R0 K14 + 0x8808010F, // 0006 GETMBR R2 R0 K15 0x28040202, // 0007 GE R1 R1 R2 0x78060001, // 0008 JMPF R1 #000B - 0x8C04010F, // 0009 GETMET R1 R0 K15 + 0x8C040110, // 0009 GETMET R1 R0 K16 0x7C040200, // 000A CALL R1 1 0x8804010C, // 000B GETMBR R1 R0 K12 0x80040200, // 000C RET 1 R1 @@ -244,30 +246,30 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ be_str_weak(load_event_no_persisted), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0xA4062000, // 0000 IMPORT R1 K16 + 0xA4062200, // 0000 IMPORT R1 K17 0x60080008, // 0001 GETGBL R2 G8 - 0x8C0C0311, // 0002 GETMET R3 R1 K17 - 0x88140112, // 0003 GETMBR R5 R0 K18 - 0x58180013, // 0004 LDCONST R6 K19 + 0x8C0C0312, // 0002 GETMET R3 R1 K18 + 0x88140113, // 0003 GETMBR R5 R0 K19 + 0x58180014, // 0004 LDCONST R6 K20 0x7C0C0600, // 0005 CALL R3 3 0x7C080200, // 0006 CALL R2 1 - 0xB80E2800, // 0007 GETNGBL R3 K20 - 0x8C0C0715, // 0008 GETMET R3 R3 K21 + 0xB80E2A00, // 0007 GETNGBL R3 K21 + 0x8C0C0716, // 0008 GETMET R3 R3 K22 0x5C140400, // 0009 MOVE R5 R2 0x7C0C0400, // 000A CALL R3 2 0x90021803, // 000B SETMBR R0 K12 R3 0x880C010C, // 000C GETMBR R3 R0 K12 0x8C0C070D, // 000D GETMET R3 R3 K13 - 0x88140116, // 000E GETMBR R5 R0 K22 + 0x88140117, // 000E GETMBR R5 R0 K23 0x7C0C0400, // 000F CALL R3 2 - 0x90021C03, // 0010 SETMBR R0 K14 R3 - 0x8C0C0317, // 0011 GETMET R3 R1 K23 - 0x88140112, // 0012 GETMBR R5 R0 K18 - 0x8818010E, // 0013 GETMBR R6 R0 K14 - 0x8C180D18, // 0014 GETMET R6 R6 K24 + 0x90021E03, // 0010 SETMBR R0 K15 R3 + 0x8C0C0318, // 0011 GETMET R3 R1 K24 + 0x88140113, // 0012 GETMBR R5 R0 K19 + 0x8818010F, // 0013 GETMBR R6 R0 K15 + 0x8C180D19, // 0014 GETMET R6 R6 K25 0x7C180200, // 0015 CALL R6 1 0x7C0C0600, // 0016 CALL R3 3 - 0x8C0C0319, // 0017 GETMET R3 R1 K25 + 0x8C0C031A, // 0017 GETMET R3 R1 K26 0x7C0C0200, // 0018 CALL R3 1 0x80000000, // 0019 RET 0 }) @@ -295,56 +297,56 @@ be_local_closure(class_Matter_EventHandler_queue_event, /* name */ ( &(const binstruction[54]) { /* code */ 0x88080308, // 0000 GETMBR R2 R1 K8 0x880C0105, // 0001 GETMBR R3 R0 K5 - 0x8C0C071A, // 0002 GETMET R3 R3 K26 + 0x8C0C071B, // 0002 GETMET R3 R3 K27 0x5C140200, // 0003 MOVE R5 R1 0x7C0C0400, // 0004 CALL R3 2 0x600C000C, // 0005 GETGBL R3 G12 0x88100105, // 0006 GETMBR R4 R0 K5 0x7C0C0200, // 0007 CALL R3 1 - 0x8810011B, // 0008 GETMBR R4 R0 K27 + 0x8810011C, // 0008 GETMBR R4 R0 K28 0x240C0604, // 0009 GT R3 R3 R4 0x780E0029, // 000A JMPF R3 #0035 0x880C0105, // 000B GETMBR R3 R0 K5 - 0x8C0C071C, // 000C GETMET R3 R3 K28 - 0x5814001D, // 000D LDCONST R5 K29 + 0x8C0C071D, // 000C GETMET R3 R3 K29 + 0x5814001E, // 000D LDCONST R5 K30 0x7C0C0400, // 000E CALL R3 2 0x88100708, // 000F GETMBR R4 R3 K8 - 0xB8163C00, // 0010 GETNGBL R5 K30 - 0x88140B1F, // 0011 GETMBR R5 R5 K31 + 0xB8163E00, // 0010 GETNGBL R5 K31 + 0x88140B20, // 0011 GETMBR R5 R5 K32 0x24100805, // 0012 GT R4 R4 R5 0x78120020, // 0013 JMPF R4 #0035 0x88100104, // 0014 GETMBR R4 R0 K4 - 0x8C10091A, // 0015 GETMET R4 R4 K26 + 0x8C10091B, // 0015 GETMET R4 R4 K27 0x5C180600, // 0016 MOVE R6 R3 0x7C100400, // 0017 CALL R4 2 0x6010000C, // 0018 GETGBL R4 G12 0x88140104, // 0019 GETMBR R5 R0 K4 0x7C100200, // 001A CALL R4 1 - 0x8814011B, // 001B GETMBR R5 R0 K27 + 0x8814011C, // 001B GETMBR R5 R0 K28 0x24100805, // 001C GT R4 R4 R5 0x78120016, // 001D JMPF R4 #0035 0x88100104, // 001E GETMBR R4 R0 K4 - 0x8C10091C, // 001F GETMET R4 R4 K28 - 0x5818001D, // 0020 LDCONST R6 K29 + 0x8C10091D, // 001F GETMET R4 R4 K29 + 0x5818001E, // 0020 LDCONST R6 K30 0x7C100400, // 0021 CALL R4 2 0x88140908, // 0022 GETMBR R5 R4 K8 - 0xB81A3C00, // 0023 GETNGBL R6 K30 - 0x88180D20, // 0024 GETMBR R6 R6 K32 + 0xB81A3E00, // 0023 GETNGBL R6 K31 + 0x88180D21, // 0024 GETMBR R6 R6 K33 0x24140A06, // 0025 GT R5 R5 R6 0x7816000D, // 0026 JMPF R5 #0035 0x88140103, // 0027 GETMBR R5 R0 K3 - 0x8C140B1A, // 0028 GETMET R5 R5 K26 + 0x8C140B1B, // 0028 GETMET R5 R5 K27 0x5C1C0800, // 0029 MOVE R7 R4 0x7C140400, // 002A CALL R5 2 0x6014000C, // 002B GETGBL R5 G12 0x88180103, // 002C GETMBR R6 R0 K3 0x7C140200, // 002D CALL R5 1 - 0x8818011B, // 002E GETMBR R6 R0 K27 + 0x8818011C, // 002E GETMBR R6 R0 K28 0x24140A06, // 002F GT R5 R5 R6 0x78160003, // 0030 JMPF R5 #0035 0x88140103, // 0031 GETMBR R5 R0 K3 - 0x8C140B1C, // 0032 GETMET R5 R5 K28 - 0x581C001D, // 0033 LDCONST R7 K29 + 0x8C140B1D, // 0032 GETMET R5 R5 K29 + 0x581C001E, // 0033 LDCONST R7 K30 0x7C140400, // 0034 CALL R5 2 0x80000000, // 0035 RET 0 }) @@ -370,7 +372,7 @@ be_local_closure(class_Matter_EventHandler_every_second, /* name */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040121, // 0000 GETMET R1 R0 K33 + 0x8C040122, // 0000 GETMET R1 R0 K34 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -396,7 +398,7 @@ be_local_closure(class_Matter_EventHandler_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x90024401, // 0000 SETMBR R0 K34 R1 + 0x90024601, // 0000 SETMBR R0 K35 R1 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 0x90020A02, // 0003 SETMBR R0 K5 R2 @@ -406,7 +408,7 @@ be_local_closure(class_Matter_EventHandler_init, /* name */ 0x60080012, // 0007 GETGBL R2 G18 0x7C080000, // 0008 CALL R2 0 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x8C08010F, // 000A GETMET R2 R0 K15 + 0x8C080110, // 000A GETMET R2 R0 K16 0x7C080200, // 000B CALL R2 1 0x80000000, // 000C RET 0 }) @@ -529,9 +531,9 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ be_str_weak(publish_event), &be_const_str_solidified, ( &(const binstruction[112]) { /* code */ - 0xB8263C00, // 0000 GETNGBL R9 K30 - 0x8C241323, // 0001 GETMET R9 R9 K35 - 0x8C2C0124, // 0002 GETMET R11 R0 K36 + 0xB8263E00, // 0000 GETNGBL R9 K31 + 0x8C241324, // 0001 GETMET R9 R9 K36 + 0x8C2C0125, // 0002 GETMET R11 R0 K37 0x7C2C0200, // 0003 CALL R11 1 0x5C300200, // 0004 MOVE R12 R1 0x5C340400, // 0005 MOVE R13 R2 @@ -543,11 +545,11 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x5C4C1000, // 000B MOVE R19 R8 0x7C241400, // 000C CALL R9 10 0xB82A0000, // 000D GETNGBL R10 K0 - 0x8C281525, // 000E GETMET R10 R10 K37 - 0x58300026, // 000F LDCONST R12 K38 + 0x8C281526, // 000E GETMET R10 R10 K38 + 0x58300027, // 000F LDCONST R12 K39 0x7C280400, // 0010 CALL R10 2 0x782A0052, // 0011 JMPF R10 #0065 - 0x58280027, // 0012 LDCONST R10 K39 + 0x58280028, // 0012 LDCONST R10 K40 0x4C2C0000, // 0013 LDNIL R11 0x202C0C0B, // 0014 NE R11 R6 R11 0x782E0003, // 0015 JMPF R11 #001A @@ -561,7 +563,7 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x602C0008, // 001D GETGBL R11 G8 0x5C300E00, // 001E MOVE R12 R7 0x7C2C0200, // 001F CALL R11 1 - 0x002E500B, // 0020 ADD R11 K40 R11 + 0x002E520B, // 0020 ADD R11 K41 R11 0x0028140B, // 0021 ADD R10 R10 R11 0x4C2C0000, // 0022 LDNIL R11 0x202C100B, // 0023 NE R11 R8 R11 @@ -569,16 +571,16 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x602C0008, // 0025 GETGBL R11 G8 0x5C301000, // 0026 MOVE R12 R8 0x7C2C0200, // 0027 CALL R11 1 - 0x002E500B, // 0028 ADD R11 K40 R11 + 0x002E520B, // 0028 ADD R11 K41 R11 0x0028140B, // 0029 ADD R10 R10 R11 0x542E0027, // 002A LDINT R11 40 0x1C2C040B, // 002B EQ R11 R2 R11 0x782E0014, // 002C JMPF R11 #0042 - 0x1C2C071D, // 002D EQ R11 R3 K29 + 0x1C2C071E, // 002D EQ R11 R3 K30 0x782E0012, // 002E JMPF R11 #0042 - 0x882C0D29, // 002F GETMBR R11 R6 K41 + 0x882C0D2A, // 002F GETMBR R11 R6 K42 0x60300018, // 0030 GETGBL R12 G24 - 0x5834002A, // 0031 LDCONST R13 K42 + 0x5834002B, // 0031 LDCONST R13 K43 0x543A0017, // 0032 LDINT R14 24 0x3C38160E, // 0033 SHR R14 R11 R14 0x543E00FE, // 0034 LDINT R15 255 @@ -597,47 +599,47 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x5C281800, // 0041 MOVE R10 R12 0x1C2C0B06, // 0042 EQ R11 R5 K6 0x782E0001, // 0043 JMPF R11 #0046 - 0x582C002B, // 0044 LDCONST R11 K43 + 0x582C002C, // 0044 LDCONST R11 K44 0x70020004, // 0045 JMP #004B - 0x1C2C0B09, // 0046 EQ R11 R5 K9 + 0x1C2C0B2D, // 0046 EQ R11 R5 K45 0x782E0001, // 0047 JMPF R11 #004A - 0x582C002C, // 0048 LDCONST R11 K44 + 0x582C002E, // 0048 LDCONST R11 K46 0x70020000, // 0049 JMP #004B - 0x582C002D, // 004A LDCONST R11 K45 - 0xB8323C00, // 004B GETNGBL R12 K30 - 0x8C30192E, // 004C GETMET R12 R12 K46 + 0x582C002F, // 004A LDCONST R11 K47 + 0xB8323E00, // 004B GETNGBL R12 K31 + 0x8C301930, // 004C GETMET R12 R12 K48 0x5C380400, // 004D MOVE R14 R2 0x5C3C0600, // 004E MOVE R15 R3 0x7C300600, // 004F CALL R12 3 0x4C340000, // 0050 LDNIL R13 0x2034180D, // 0051 NE R13 R12 R13 0x78360002, // 0052 JMPF R13 #0056 - 0x00365E0C, // 0053 ADD R13 K47 R12 - 0x00341B30, // 0054 ADD R13 R13 K48 + 0x0036620C, // 0053 ADD R13 K49 R12 + 0x00341B32, // 0054 ADD R13 R13 K50 0x70020000, // 0055 JMP #0057 - 0x58340027, // 0056 LDCONST R13 K39 + 0x58340028, // 0056 LDCONST R13 K40 0x5C301A00, // 0057 MOVE R12 R13 0xB8360200, // 0058 GETNGBL R13 K1 0x60380018, // 0059 GETGBL R14 G24 - 0x583C0031, // 005A LDCONST R15 K49 + 0x583C0033, // 005A LDCONST R15 K51 0x5C401600, // 005B MOVE R16 R11 - 0x88441332, // 005C GETMBR R17 R9 K50 - 0x88481333, // 005D GETMBR R18 R9 K51 - 0x884C1334, // 005E GETMBR R19 R9 K52 - 0x88501335, // 005F GETMBR R20 R9 K53 + 0x88441334, // 005C GETMBR R17 R9 K52 + 0x88481335, // 005D GETMBR R18 R9 K53 + 0x884C1336, // 005E GETMBR R19 R9 K54 + 0x88501337, // 005F GETMBR R20 R9 K55 0x5C541800, // 0060 MOVE R21 R12 0x5C581400, // 0061 MOVE R22 R10 0x7C381000, // 0062 CALL R14 8 0x583C0006, // 0063 LDCONST R15 K6 0x7C340400, // 0064 CALL R13 2 - 0x8C280136, // 0065 GETMET R10 R0 K54 + 0x8C280138, // 0065 GETMET R10 R0 K56 0x5C301200, // 0066 MOVE R12 R9 0x7C280400, // 0067 CALL R10 2 - 0x88280122, // 0068 GETMBR R10 R0 K34 - 0x88281537, // 0069 GETMBR R10 R10 K55 - 0x88281538, // 006A GETMBR R10 R10 K56 - 0x88281539, // 006B GETMBR R10 R10 K57 - 0x8C28153A, // 006C GETMET R10 R10 K58 + 0x88280123, // 0068 GETMBR R10 R0 K35 + 0x88281539, // 0069 GETMBR R10 R10 K57 + 0x8828153A, // 006A GETMBR R10 R10 K58 + 0x8828153B, // 006B GETMBR R10 R10 K59 + 0x8C28153C, // 006C GETMET R10 R10 K60 0x5C301200, // 006D MOVE R12 R9 0x7C280400, // 006E CALL R10 2 0x80000000, // 006F RET 0 @@ -743,8 +745,8 @@ be_local_class(Matter_EventHandler, })), be_str_weak(Matter_EventHandler) ); -// compact class 'Matter_EventQueued' ktab size: 30, total: 43 (saved 104 bytes) -static const bvalue be_ktab_class_Matter_EventQueued[30] = { +// compact class 'Matter_EventQueued' ktab size: 31, total: 43 (saved 96 bytes) +static const bvalue be_ktab_class_Matter_EventQueued[31] = { /* K0 */ be_nested_str_weak(raw_tlv), /* K1 */ be_nested_str_weak(eventreport2raw), /* K2 */ be_nested_str_weak(endpoint), @@ -775,6 +777,7 @@ static const bvalue be_ktab_class_Matter_EventQueued[30] = { /* K27 */ be_nested_str_weak(tag_sub), /* K28 */ be_const_int(0), /* K29 */ be_nested_str_weak(tlv2raw), + /* K30 */ be_const_int(2), }; @@ -1107,7 +1110,7 @@ be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ 0x4C300000, // 003F LDNIL R12 0x2030160C, // 0040 NE R12 R11 R12 0x78320003, // 0041 JMPF R12 #0046 - 0x902E3716, // 0042 SETMBR R11 K27 K22 + 0x902E371E, // 0042 SETMBR R11 K27 K30 0x8C30171D, // 0043 GETMET R12 R11 K29 0x5C380200, // 0044 MOVE R14 R1 0x7C300400, // 0045 CALL R12 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h index 42724514c..70d6b6a3e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h @@ -404,16 +404,16 @@ static const bvalue be_ktab_class_Matter_Expirable_list[17] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(_persist), /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(before_remove), - /* K4 */ be_nested_str_weak(remove), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(Expirable), - /* K7 */ be_nested_str_weak(type_error), - /* K8 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27), - /* K9 */ be_nested_str_weak(set_parent_list), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(remove_expired), - /* K12 */ be_const_int(0), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(before_remove), + /* K5 */ be_nested_str_weak(remove), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(Expirable), + /* K8 */ be_nested_str_weak(type_error), + /* K9 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27), + /* K10 */ be_nested_str_weak(set_parent_list), + /* K11 */ be_nested_str_weak(push), + /* K12 */ be_nested_str_weak(remove_expired), /* K13 */ be_nested_str_weak(has_expired), /* K14 */ be_const_int(1), /* K15 */ be_nested_str_weak(iter), @@ -480,7 +480,7 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ 0x4C080000, // 0000 LDNIL R2 0x20080202, // 0001 NE R2 R1 R2 0x780A0010, // 0002 JMPF R2 #0014 - 0x28080300, // 0003 GE R2 R1 K0 + 0x28080303, // 0003 GE R2 R1 K3 0x780A0007, // 0004 JMPF R2 #000D 0x6008000C, // 0005 GETGBL R2 G12 0x5C0C0000, // 0006 MOVE R3 R0 @@ -488,12 +488,12 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ 0x14080202, // 0008 LT R2 R1 R2 0x780A0002, // 0009 JMPF R2 #000D 0x94080001, // 000A GETIDX R2 R0 R1 - 0x8C080503, // 000B GETMET R2 R2 K3 + 0x8C080504, // 000B GETMET R2 R2 K4 0x7C080200, // 000C CALL R2 1 0x60080003, // 000D GETGBL R2 G3 0x5C0C0000, // 000E MOVE R3 R0 0x7C080200, // 000F CALL R2 1 - 0x8C080504, // 0010 GETMET R2 R2 K4 + 0x8C080505, // 0010 GETMET R2 R2 K5 0x5C100200, // 0011 MOVE R4 R1 0x7C080400, // 0012 CALL R2 2 0x80040400, // 0013 RET 1 R2 @@ -523,18 +523,18 @@ be_local_closure(class_Matter_Expirable_list_push, /* name */ ( &(const binstruction[17]) { /* code */ 0x6008000F, // 0000 GETGBL R2 G15 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8120A00, // 0002 GETNGBL R4 K5 - 0x88100906, // 0003 GETMBR R4 R4 K6 + 0xB8120C00, // 0002 GETNGBL R4 K6 + 0x88100907, // 0003 GETMBR R4 R4 K7 0x7C080400, // 0004 CALL R2 2 0x740A0000, // 0005 JMPT R2 #0007 - 0xB0060F08, // 0006 RAISE 1 K7 K8 - 0x8C080309, // 0007 GETMET R2 R1 K9 + 0xB0061109, // 0006 RAISE 1 K8 K9 + 0x8C08030A, // 0007 GETMET R2 R1 K10 0x5C100000, // 0008 MOVE R4 R0 0x7C080400, // 0009 CALL R2 2 0x60080003, // 000A GETGBL R2 G3 0x5C0C0000, // 000B MOVE R3 R0 0x7C080200, // 000C CALL R2 1 - 0x8C08050A, // 000D GETMET R2 R2 K10 + 0x8C08050B, // 000D GETMET R2 R2 K11 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80040400, // 0010 RET 1 R2 @@ -561,7 +561,7 @@ be_local_closure(class_Matter_Expirable_list_every_second, /* name */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04010B, // 0000 GETMET R1 R0 K11 + 0x8C04010C, // 0000 GETMET R1 R0 K12 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -588,7 +588,7 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */ &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0x50040000, // 0000 LDBOOL R1 0 0 - 0x5808000C, // 0001 LDCONST R2 K12 + 0x58080000, // 0001 LDCONST R2 K0 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 @@ -602,7 +602,7 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */ 0x880C0701, // 000C GETMBR R3 R3 K1 0x780E0000, // 000D JMPF R3 #000F 0x50040200, // 000E LDBOOL R1 1 0 - 0x8C0C0104, // 000F GETMET R3 R0 K4 + 0x8C0C0105, // 000F GETMET R3 R0 K5 0x5C140400, // 0010 MOVE R5 R2 0x7C0C0400, // 0011 CALL R3 2 0x70020000, // 0012 JMP #0014 @@ -691,12 +691,12 @@ be_local_closure(class_Matter_Expirable_list_setitem, /* name */ ( &(const binstruction[18]) { /* code */ 0x600C000F, // 0000 GETGBL R3 G15 0x5C100400, // 0001 MOVE R4 R2 - 0xB8160A00, // 0002 GETNGBL R5 K5 - 0x88140B06, // 0003 GETMBR R5 R5 K6 + 0xB8160C00, // 0002 GETNGBL R5 K6 + 0x88140B07, // 0003 GETMBR R5 R5 K7 0x7C0C0400, // 0004 CALL R3 2 0x740E0000, // 0005 JMPT R3 #0007 - 0xB0060F08, // 0006 RAISE 1 K7 K8 - 0x8C0C0509, // 0007 GETMET R3 R2 K9 + 0xB0061109, // 0006 RAISE 1 K8 K9 + 0x8C0C050A, // 0007 GETMET R3 R2 K10 0x5C140000, // 0008 MOVE R5 R0 0x7C0C0400, // 0009 CALL R3 2 0x600C0003, // 000A GETGBL R3 G3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h index 60fdff552..a829e8458 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h @@ -44,61 +44,61 @@ static const bvalue be_ktab_class_Matter_Fabric[112] = { /* K35 */ be_nested_str_weak(members), /* K36 */ be_nested_str_weak(get), /* K37 */ be_nested_str_weak(function), - /* K38 */ be_const_int(0), - /* K39 */ be_nested_str_weak(push), - /* K40 */ be_nested_str_weak(sort), - /* K41 */ be_nested_str_weak(tob64), - /* K42 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K43 */ be_nested_str_weak(dump), - /* K44 */ be_nested_str_weak(_sessions), - /* K45 */ be_nested_str_weak(persistables), - /* K46 */ be_nested_str_weak(tojson), - /* K47 */ be_nested_str_weak(_X5B), - /* K48 */ be_nested_str_weak(concat), - /* K49 */ be_nested_str_weak(_X2C), - /* K50 */ be_nested_str_weak(_X5D), - /* K51 */ be_nested_str_weak(_X22_sessions_X22_X3A), - /* K52 */ be_nested_str_weak(persist_post), - /* K53 */ be_nested_str_weak(_X7B), - /* K54 */ be_nested_str_weak(_X7D), - /* K55 */ be_nested_str_weak(_counter_group_data_snd_impl), - /* K56 */ be_nested_str_weak(reset), - /* K57 */ be_nested_str_weak(counter_group_data_snd), - /* K58 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), - /* K59 */ be_nested_str_weak(counter_group_ctrl_snd), - /* K60 */ be_nested_str_weak(val), - /* K61 */ be_nested_str_weak(ipk_epoch_key), - /* K62 */ be_nested_str_weak(device_id), - /* K63 */ be_nested_str_weak(fabric_parent), - /* K64 */ be_nested_str_weak(get_fabric_index), - /* K65 */ be_nested_str_weak(deleted), - /* K66 */ be_nested_str_weak(int64), - /* K67 */ be_nested_str_weak(frombytes), - /* K68 */ be_nested_str_weak(get_old_recent_session), - /* K69 */ be_nested_str_weak(set_no_expiration), - /* K70 */ be_nested_str_weak(set_persist), - /* K71 */ be_nested_str_weak(assign_fabric_index), - /* K72 */ be_nested_str_weak(_store), - /* K73 */ be_nested_str_weak(add_fabric), - /* K74 */ be_nested_str_weak(next), - /* K75 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), - /* K76 */ be_nested_str_weak(Counter), - /* K77 */ be_nested_str_weak(is_greater), - /* K78 */ be_nested_str_weak(_GROUP_SND_INCR), - /* K79 */ be_nested_str_weak(does_persist), - /* K80 */ be_nested_str_weak(save), - /* K81 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s), - /* K82 */ be_nested_str_weak(get_admin_vendor_name), - /* K83 */ be_nested_str_weak(TLV), - /* K84 */ be_nested_str_weak(parse), - /* K85 */ be_nested_str_weak(findsubval), - /* K86 */ be_nested_str_weak(fabric_index), - /* K87 */ be_nested_str_weak(write), - /* K88 */ be_nested_str_weak(_X2C_X22_sessions_X22_X3A_X5B), - /* K89 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i), - /* K90 */ be_nested_str_weak(set_expire_in_seconds), - /* K91 */ be_nested_str_weak(set_fabric_index), - /* K92 */ be_nested_str_weak(next_fabric_idx), + /* K38 */ be_nested_str_weak(push), + /* K39 */ be_nested_str_weak(sort), + /* K40 */ be_nested_str_weak(tob64), + /* K41 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K42 */ be_nested_str_weak(dump), + /* K43 */ be_nested_str_weak(_sessions), + /* K44 */ be_nested_str_weak(persistables), + /* K45 */ be_nested_str_weak(tojson), + /* K46 */ be_nested_str_weak(_X5B), + /* K47 */ be_nested_str_weak(concat), + /* K48 */ be_nested_str_weak(_X2C), + /* K49 */ be_nested_str_weak(_X5D), + /* K50 */ be_nested_str_weak(_X22_sessions_X22_X3A), + /* K51 */ be_nested_str_weak(persist_post), + /* K52 */ be_nested_str_weak(_X7B), + /* K53 */ be_nested_str_weak(_X7D), + /* K54 */ be_nested_str_weak(_counter_group_data_snd_impl), + /* K55 */ be_nested_str_weak(reset), + /* K56 */ be_nested_str_weak(counter_group_data_snd), + /* K57 */ be_nested_str_weak(_counter_group_ctrl_snd_impl), + /* K58 */ be_nested_str_weak(counter_group_ctrl_snd), + /* K59 */ be_nested_str_weak(val), + /* K60 */ be_nested_str_weak(ipk_epoch_key), + /* K61 */ be_nested_str_weak(device_id), + /* K62 */ be_nested_str_weak(fabric_parent), + /* K63 */ be_nested_str_weak(get_fabric_index), + /* K64 */ be_nested_str_weak(deleted), + /* K65 */ be_nested_str_weak(int64), + /* K66 */ be_nested_str_weak(frombytes), + /* K67 */ be_nested_str_weak(get_old_recent_session), + /* K68 */ be_nested_str_weak(set_no_expiration), + /* K69 */ be_nested_str_weak(set_persist), + /* K70 */ be_nested_str_weak(assign_fabric_index), + /* K71 */ be_nested_str_weak(_store), + /* K72 */ be_nested_str_weak(add_fabric), + /* K73 */ be_nested_str_weak(next), + /* K74 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i), + /* K75 */ be_nested_str_weak(Counter), + /* K76 */ be_nested_str_weak(is_greater), + /* K77 */ be_nested_str_weak(_GROUP_SND_INCR), + /* K78 */ be_nested_str_weak(does_persist), + /* K79 */ be_nested_str_weak(save), + /* K80 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s), + /* K81 */ be_nested_str_weak(get_admin_vendor_name), + /* K82 */ be_nested_str_weak(TLV), + /* K83 */ be_nested_str_weak(parse), + /* K84 */ be_nested_str_weak(findsubval), + /* K85 */ be_nested_str_weak(fabric_index), + /* K86 */ be_nested_str_weak(write), + /* K87 */ be_nested_str_weak(_X2C_X22_sessions_X22_X3A_X5B), + /* K88 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i), + /* K89 */ be_nested_str_weak(set_expire_in_seconds), + /* K90 */ be_nested_str_weak(set_fabric_index), + /* K91 */ be_nested_str_weak(next_fabric_idx), + /* K92 */ be_const_int(0), /* K93 */ be_nested_str_weak(last_used), /* K94 */ be_const_int(1), /* K95 */ be_nested_str_weak(crypto), @@ -501,10 +501,10 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0x7C1C0200, // 0014 CALL R7 1 0x201C0F25, // 0015 NE R7 R7 K37 0x781E0005, // 0016 JMPF R7 #001D - 0x941C0B26, // 0017 GETIDX R7 R5 K38 + 0x941C0B14, // 0017 GETIDX R7 R5 K20 0x201C0F15, // 0018 NE R7 R7 K21 0x781E0002, // 0019 JMPF R7 #001D - 0x8C1C0727, // 001A GETMET R7 R3 K39 + 0x8C1C0726, // 001A GETMET R7 R3 K38 0x5C240A00, // 001B MOVE R9 R5 0x7C1C0400, // 001C CALL R7 2 0x7001FFED, // 001D JMP #000C @@ -512,7 +512,7 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0xAC100200, // 001F CATCH R4 1 0 0xB0080000, // 0020 RAISE 2 R0 R0 0xB8122200, // 0021 GETNGBL R4 K17 - 0x8C100928, // 0022 GETMET R4 R4 K40 + 0x8C100927, // 0022 GETMET R4 R4 K39 0x5C180600, // 0023 MOVE R6 R3 0x7C100400, // 0024 CALL R4 2 0x5C0C0800, // 0025 MOVE R3 R4 @@ -537,19 +537,19 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0x60280015, // 0038 GETGBL R10 G21 0x7C200400, // 0039 CALL R8 2 0x78220003, // 003A JMPF R8 #003F - 0x8C200F29, // 003B GETMET R8 R7 K41 + 0x8C200F28, // 003B GETMET R8 R7 K40 0x7C200200, // 003C CALL R8 1 0x00223808, // 003D ADD R8 K28 R8 0x5C1C1000, // 003E MOVE R7 R8 - 0x8C200927, // 003F GETMET R8 R4 K39 + 0x8C200926, // 003F GETMET R8 R4 K38 0x60280018, // 0040 GETGBL R10 G24 - 0x582C002A, // 0041 LDCONST R11 K42 - 0x8C30032B, // 0042 GETMET R12 R1 K43 + 0x582C0029, // 0041 LDCONST R11 K41 + 0x8C30032A, // 0042 GETMET R12 R1 K42 0x60380008, // 0043 GETGBL R14 G8 0x5C3C0C00, // 0044 MOVE R15 R6 0x7C380200, // 0045 CALL R14 1 0x7C300400, // 0046 CALL R12 2 - 0x8C34032B, // 0047 GETMET R13 R1 K43 + 0x8C34032A, // 0047 GETMET R13 R1 K42 0x5C3C0E00, // 0048 MOVE R15 R7 0x7C340400, // 0049 CALL R13 2 0x7C280600, // 004A CALL R10 3 @@ -561,15 +561,15 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0x60140012, // 0050 GETGBL R5 G18 0x7C140000, // 0051 CALL R5 0 0x60180010, // 0052 GETGBL R6 G16 - 0x881C012C, // 0053 GETMBR R7 R0 K44 - 0x8C1C0F2D, // 0054 GETMET R7 R7 K45 + 0x881C012B, // 0053 GETMBR R7 R0 K43 + 0x8C1C0F2C, // 0054 GETMET R7 R7 K44 0x7C1C0200, // 0055 CALL R7 1 0x7C180200, // 0056 CALL R6 1 0xA8020006, // 0057 EXBLK 0 #005F 0x5C1C0C00, // 0058 MOVE R7 R6 0x7C1C0000, // 0059 CALL R7 0 - 0x8C200B27, // 005A GETMET R8 R5 K39 - 0x8C280F2E, // 005B GETMET R10 R7 K46 + 0x8C200B26, // 005A GETMET R8 R5 K38 + 0x8C280F2D, // 005B GETMET R10 R7 K45 0x7C280200, // 005C CALL R10 1 0x7C200400, // 005D CALL R8 2 0x7001FFF8, // 005E JMP #0058 @@ -579,23 +579,23 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */ 0x6018000C, // 0062 GETGBL R6 G12 0x5C1C0A00, // 0063 MOVE R7 R5 0x7C180200, // 0064 CALL R6 1 - 0x24180D26, // 0065 GT R6 R6 K38 + 0x24180D14, // 0065 GT R6 R6 K20 0x781A0007, // 0066 JMPF R6 #006F - 0x8C180B30, // 0067 GETMET R6 R5 K48 - 0x58200031, // 0068 LDCONST R8 K49 + 0x8C180B2F, // 0067 GETMET R6 R5 K47 + 0x58200030, // 0068 LDCONST R8 K48 0x7C180400, // 0069 CALL R6 2 - 0x001A5E06, // 006A ADD R6 K47 R6 - 0x00180D32, // 006B ADD R6 R6 K50 - 0x8C1C0927, // 006C GETMET R7 R4 K39 - 0x00266606, // 006D ADD R9 K51 R6 + 0x001A5C06, // 006A ADD R6 K46 R6 + 0x00180D31, // 006B ADD R6 R6 K49 + 0x8C1C0926, // 006C GETMET R7 R4 K38 + 0x00266406, // 006D ADD R9 K50 R6 0x7C1C0400, // 006E CALL R7 2 - 0x8C180134, // 006F GETMET R6 R0 K52 + 0x8C180133, // 006F GETMET R6 R0 K51 0x7C180200, // 0070 CALL R6 1 - 0x8C180930, // 0071 GETMET R6 R4 K48 - 0x58200031, // 0072 LDCONST R8 K49 + 0x8C18092F, // 0071 GETMET R6 R4 K47 + 0x58200030, // 0072 LDCONST R8 K48 0x7C180400, // 0073 CALL R6 2 - 0x001A6A06, // 0074 ADD R6 K53 R6 - 0x00180D36, // 0075 ADD R6 R6 K54 + 0x001A6806, // 0074 ADD R6 K52 R6 + 0x00180D35, // 0075 ADD R6 R6 K53 0x80040C00, // 0076 RET 1 R6 }) ) @@ -620,22 +620,22 @@ be_local_closure(class_Matter_Fabric_hydrate_post, /* name */ be_str_weak(hydrate_post), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88040137, // 0000 GETMBR R1 R0 K55 - 0x8C040338, // 0001 GETMET R1 R1 K56 - 0x880C0139, // 0002 GETMBR R3 R0 K57 + 0x88040136, // 0000 GETMBR R1 R0 K54 + 0x8C040337, // 0001 GETMET R1 R1 K55 + 0x880C0138, // 0002 GETMBR R3 R0 K56 0x7C040400, // 0003 CALL R1 2 - 0x8804013A, // 0004 GETMBR R1 R0 K58 - 0x8C040338, // 0005 GETMET R1 R1 K56 - 0x880C013B, // 0006 GETMBR R3 R0 K59 + 0x88040139, // 0004 GETMBR R1 R0 K57 + 0x8C040337, // 0005 GETMET R1 R1 K55 + 0x880C013A, // 0006 GETMBR R3 R0 K58 0x7C040400, // 0007 CALL R1 2 - 0x88040137, // 0008 GETMBR R1 R0 K55 - 0x8C04033C, // 0009 GETMET R1 R1 K60 + 0x88040136, // 0008 GETMBR R1 R0 K54 + 0x8C04033B, // 0009 GETMET R1 R1 K59 0x7C040200, // 000A CALL R1 1 - 0x90027201, // 000B SETMBR R0 K57 R1 - 0x8804013A, // 000C GETMBR R1 R0 K58 - 0x8C04033C, // 000D GETMET R1 R1 K60 + 0x90027001, // 000B SETMBR R0 K56 R1 + 0x88040139, // 000C GETMBR R1 R0 K57 + 0x8C04033B, // 000D GETMET R1 R1 K59 0x7C040200, // 000E CALL R1 1 - 0x90027601, // 000F SETMBR R0 K59 R1 + 0x90027401, // 000F SETMBR R0 K58 R1 0x80000000, // 0010 RET 0 }) ) @@ -660,7 +660,7 @@ be_local_closure(class_Matter_Fabric_set_ipk_epoch_key, /* name */ be_str_weak(set_ipk_epoch_key), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90027A01, // 0000 SETMBR R0 K61 R1 + 0x90027801, // 0000 SETMBR R0 K60 R1 0x80000000, // 0001 RET 0 }) ) @@ -686,16 +686,16 @@ be_local_closure(class_Matter_Fabric_set_fabric_device, /* name */ &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0x90021401, // 0000 SETMBR R0 K10 R1 - 0x90027C02, // 0001 SETMBR R0 K62 R2 + 0x90027A02, // 0001 SETMBR R0 K61 R2 0x90021203, // 0002 SETMBR R0 K9 R3 0x4C140000, // 0003 LDNIL R5 0x20140805, // 0004 NE R5 R4 R5 0x78160002, // 0005 JMPF R5 #0009 - 0x8C140940, // 0006 GETMET R5 R4 K64 + 0x8C14093F, // 0006 GETMET R5 R4 K63 0x7C140200, // 0007 CALL R5 1 0x70020000, // 0008 JMP #000A 0x4C140000, // 0009 LDNIL R5 - 0x90027E05, // 000A SETMBR R0 K63 R5 + 0x90027C05, // 000A SETMBR R0 K62 R5 0x80000000, // 000B RET 0 }) ) @@ -720,7 +720,7 @@ be_local_closure(class_Matter_Fabric_get_device_id, /* name */ be_str_weak(get_device_id), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x8804013E, // 0000 GETMBR R1 R0 K62 + 0x8804013D, // 0000 GETMBR R1 R0 K61 0x80040200, // 0001 RET 1 R1 }) ) @@ -770,7 +770,7 @@ be_local_closure(class_Matter_Fabric_is_marked_for_deletion, /* name */ be_str_weak(is_marked_for_deletion), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040141, // 0000 GETMBR R1 R0 K65 + 0x88040140, // 0000 GETMBR R1 R0 K64 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x80040200, // 0003 RET 1 R1 @@ -797,8 +797,8 @@ be_local_closure(class_Matter_Fabric_get_fabric_id_as_int64, /* name */ be_str_weak(get_fabric_id_as_int64), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8068400, // 0000 GETNGBL R1 K66 - 0x8C040343, // 0001 GETMET R1 R1 K67 + 0xB8068200, // 0000 GETNGBL R1 K65 + 0x8C040342, // 0001 GETMET R1 R1 K66 0x880C010A, // 0002 GETMBR R3 R0 K10 0x7C040400, // 0003 CALL R1 2 0x80040200, // 0004 RET 1 R1 @@ -850,7 +850,7 @@ be_local_closure(class_Matter_Fabric_get_oldest_session, /* name */ be_str_weak(get_oldest_session), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040144, // 0000 GETMET R1 R0 K68 + 0x8C040143, // 0000 GETMET R1 R0 K67 0x500C0200, // 0001 LDBOOL R3 1 0 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 @@ -877,15 +877,15 @@ be_local_closure(class_Matter_Fabric_fabric_completed, /* name */ be_str_weak(fabric_completed), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C040145, // 0000 GETMET R1 R0 K69 + 0x8C040144, // 0000 GETMET R1 R0 K68 0x7C040200, // 0001 CALL R1 1 - 0x8C040146, // 0002 GETMET R1 R0 K70 + 0x8C040145, // 0002 GETMET R1 R0 K69 0x500C0200, // 0003 LDBOOL R3 1 0 0x7C040400, // 0004 CALL R1 2 - 0x8C040147, // 0005 GETMET R1 R0 K71 + 0x8C040146, // 0005 GETMET R1 R0 K70 0x7C040200, // 0006 CALL R1 1 - 0x88040148, // 0007 GETMBR R1 R0 K72 - 0x8C040349, // 0008 GETMET R1 R1 K73 + 0x88040147, // 0007 GETMBR R1 R0 K71 + 0x8C040348, // 0008 GETMET R1 R1 K72 0x5C0C0000, // 0009 MOVE R3 R0 0x7C040400, // 000A CALL R1 2 0x80000000, // 000B RET 0 @@ -912,30 +912,30 @@ be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */ be_str_weak(counter_group_data_snd_next), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x88040137, // 0000 GETMBR R1 R0 K55 - 0x8C04034A, // 0001 GETMET R1 R1 K74 + 0x88040136, // 0000 GETMBR R1 R0 K54 + 0x8C040349, // 0001 GETMET R1 R1 K73 0x7C040200, // 0002 CALL R1 1 0xB80A0200, // 0003 GETNGBL R2 K1 0x600C0018, // 0004 GETGBL R3 G24 - 0x5810004B, // 0005 LDCONST R4 K75 + 0x5810004A, // 0005 LDCONST R4 K74 0x5C140200, // 0006 MOVE R5 R1 0x7C0C0400, // 0007 CALL R3 2 0x58100007, // 0008 LDCONST R4 K7 0x7C080400, // 0009 CALL R2 2 0xB80A2200, // 000A GETNGBL R2 K17 - 0x8808054C, // 000B GETMBR R2 R2 K76 - 0x8C08054D, // 000C GETMET R2 R2 K77 + 0x8808054B, // 000B GETMBR R2 R2 K75 + 0x8C08054C, // 000C GETMET R2 R2 K76 0x5C100200, // 000D MOVE R4 R1 - 0x88140139, // 000E GETMBR R5 R0 K57 + 0x88140138, // 000E GETMBR R5 R0 K56 0x7C080600, // 000F CALL R2 3 0x780A0007, // 0010 JMPF R2 #0019 - 0x8808014E, // 0011 GETMBR R2 R0 K78 + 0x8808014D, // 0011 GETMBR R2 R0 K77 0x00080202, // 0012 ADD R2 R1 R2 - 0x90027202, // 0013 SETMBR R0 K57 R2 - 0x8C08014F, // 0014 GETMET R2 R0 K79 + 0x90027002, // 0013 SETMBR R0 K56 R2 + 0x8C08014E, // 0014 GETMET R2 R0 K78 0x7C080200, // 0015 CALL R2 1 0x780A0001, // 0016 JMPF R2 #0019 - 0x8C080150, // 0017 GETMET R2 R0 K80 + 0x8C08014F, // 0017 GETMET R2 R0 K79 0x7C080200, // 0018 CALL R2 1 0x80040200, // 0019 RET 1 R1 }) @@ -1012,7 +1012,7 @@ be_local_closure(class_Matter_Fabric_get_newest_session, /* name */ be_str_weak(get_newest_session), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040144, // 0000 GETMET R1 R0 K68 + 0x8C040143, // 0000 GETMET R1 R0 K67 0x500C0000, // 0001 LDBOOL R3 0 0 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 @@ -1041,7 +1041,7 @@ be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ ( &(const binstruction[17]) { /* code */ 0xB8060200, // 0000 GETNGBL R1 K1 0x60080018, // 0001 GETGBL R2 G24 - 0x580C0051, // 0002 LDCONST R3 K81 + 0x580C0050, // 0002 LDCONST R3 K80 0x8C100103, // 0003 GETMET R4 R0 K3 0x7C100200, // 0004 CALL R4 1 0x8C100904, // 0005 GETMET R4 R4 K4 @@ -1050,7 +1050,7 @@ be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */ 0x7C100200, // 0008 CALL R4 1 0x8C100906, // 0009 GETMET R4 R4 K6 0x7C100200, // 000A CALL R4 1 - 0x8C140152, // 000B GETMET R5 R0 K82 + 0x8C140151, // 000B GETMET R5 R0 K81 0x7C140200, // 000C CALL R5 1 0x7C080600, // 000D CALL R2 3 0x580C0007, // 000E LDCONST R3 K7 @@ -1082,11 +1082,11 @@ be_local_closure(class_Matter_Fabric_get_ca_pub, /* name */ 0x88040120, // 0000 GETMBR R1 R0 K32 0x78060008, // 0001 JMPF R1 #000B 0xB80A2200, // 0002 GETNGBL R2 K17 - 0x88080553, // 0003 GETMBR R2 R2 K83 - 0x8C080554, // 0004 GETMET R2 R2 K84 + 0x88080552, // 0003 GETMBR R2 R2 K82 + 0x8C080553, // 0004 GETMET R2 R2 K83 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 - 0x8C0C0555, // 0007 GETMET R3 R2 K85 + 0x8C0C0554, // 0007 GETMET R3 R2 K84 0x54160008, // 0008 LDINT R5 9 0x7C0C0400, // 0009 CALL R3 2 0x80040600, // 000A RET 1 R3 @@ -1114,7 +1114,7 @@ be_local_closure(class_Matter_Fabric_get_fabric_index, /* name */ be_str_weak(get_fabric_index), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040156, // 0000 GETMBR R1 R0 K86 + 0x88040155, // 0000 GETMBR R1 R0 K85 0x80040200, // 0001 RET 1 R1 }) ) @@ -1141,8 +1141,8 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ ( &(const binstruction[125]) { /* code */ 0xA40A4200, // 0000 IMPORT R2 K33 0xA40E2000, // 0001 IMPORT R3 K16 - 0x8C100357, // 0002 GETMET R4 R1 K87 - 0x58180035, // 0003 LDCONST R6 K53 + 0x8C100356, // 0002 GETMET R4 R1 K86 + 0x58180034, // 0003 LDCONST R6 K52 0x7C100400, // 0004 CALL R4 2 0x8C100122, // 0005 GETMET R4 R0 K34 0x7C100200, // 0006 CALL R4 1 @@ -1165,10 +1165,10 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0x7C200200, // 0017 CALL R8 1 0x20201125, // 0018 NE R8 R8 K37 0x78220005, // 0019 JMPF R8 #0020 - 0x94200D26, // 001A GETIDX R8 R6 K38 + 0x94200D14, // 001A GETIDX R8 R6 K20 0x20201115, // 001B NE R8 R8 K21 0x78220002, // 001C JMPF R8 #0020 - 0x8C200927, // 001D GETMET R8 R4 K39 + 0x8C200926, // 001D GETMET R8 R4 K38 0x5C280C00, // 001E MOVE R10 R6 0x7C200400, // 001F CALL R8 2 0x7001FFED, // 0020 JMP #000F @@ -1176,7 +1176,7 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0xAC140200, // 0022 CATCH R5 1 0 0xB0080000, // 0023 RAISE 2 R0 R0 0xB8162200, // 0024 GETNGBL R5 K17 - 0x8C140B28, // 0025 GETMET R5 R5 K40 + 0x8C140B27, // 0025 GETMET R5 R5 K39 0x5C1C0800, // 0026 MOVE R7 R4 0x7C140400, // 0027 CALL R5 2 0x5C100A00, // 0028 MOVE R4 R5 @@ -1200,24 +1200,24 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0x602C0015, // 003A GETGBL R11 G21 0x7C240400, // 003B CALL R9 2 0x78260003, // 003C JMPF R9 #0041 - 0x8C241129, // 003D GETMET R9 R8 K41 + 0x8C241128, // 003D GETMET R9 R8 K40 0x7C240200, // 003E CALL R9 1 0x00263809, // 003F ADD R9 K28 R9 0x5C201200, // 0040 MOVE R8 R9 0x5C240A00, // 0041 MOVE R9 R5 0x74260002, // 0042 JMPT R9 #0046 - 0x8C240357, // 0043 GETMET R9 R1 K87 - 0x582C0031, // 0044 LDCONST R11 K49 + 0x8C240356, // 0043 GETMET R9 R1 K86 + 0x582C0030, // 0044 LDCONST R11 K48 0x7C240400, // 0045 CALL R9 2 - 0x8C240357, // 0046 GETMET R9 R1 K87 + 0x8C240356, // 0046 GETMET R9 R1 K86 0x602C0018, // 0047 GETGBL R11 G24 - 0x5830002A, // 0048 LDCONST R12 K42 - 0x8C34052B, // 0049 GETMET R13 R2 K43 + 0x58300029, // 0048 LDCONST R12 K41 + 0x8C34052A, // 0049 GETMET R13 R2 K42 0x603C0008, // 004A GETGBL R15 G8 0x5C400E00, // 004B MOVE R16 R7 0x7C3C0200, // 004C CALL R15 1 0x7C340400, // 004D CALL R13 2 - 0x8C38052B, // 004E GETMET R14 R2 K43 + 0x8C38052A, // 004E GETMET R14 R2 K42 0x5C401000, // 004F MOVE R16 R8 0x7C380400, // 0050 CALL R14 2 0x7C2C0600, // 0051 CALL R11 3 @@ -1229,23 +1229,23 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0xB0080000, // 0057 RAISE 2 R0 R0 0x50180200, // 0058 LDBOOL R6 1 0 0x601C0010, // 0059 GETGBL R7 G16 - 0x8820012C, // 005A GETMBR R8 R0 K44 - 0x8C20112D, // 005B GETMET R8 R8 K45 + 0x8820012B, // 005A GETMBR R8 R0 K43 + 0x8C20112C, // 005B GETMET R8 R8 K44 0x7C200200, // 005C CALL R8 1 0x7C1C0200, // 005D CALL R7 1 0xA802000F, // 005E EXBLK 0 #006F 0x5C200E00, // 005F MOVE R8 R7 0x7C200000, // 0060 CALL R8 0 0x781A0003, // 0061 JMPF R6 #0066 - 0x8C240357, // 0062 GETMET R9 R1 K87 - 0x582C0058, // 0063 LDCONST R11 K88 + 0x8C240356, // 0062 GETMET R9 R1 K86 + 0x582C0057, // 0063 LDCONST R11 K87 0x7C240400, // 0064 CALL R9 2 0x70020002, // 0065 JMP #0069 - 0x8C240357, // 0066 GETMET R9 R1 K87 - 0x582C0031, // 0067 LDCONST R11 K49 + 0x8C240356, // 0066 GETMET R9 R1 K86 + 0x582C0030, // 0067 LDCONST R11 K48 0x7C240400, // 0068 CALL R9 2 - 0x8C240357, // 0069 GETMET R9 R1 K87 - 0x8C2C112E, // 006A GETMET R11 R8 K46 + 0x8C240356, // 0069 GETMET R9 R1 K86 + 0x8C2C112D, // 006A GETMET R11 R8 K45 0x7C2C0200, // 006B CALL R11 1 0x7C240400, // 006C CALL R9 2 0x50180000, // 006D LDBOOL R6 0 0 @@ -1255,13 +1255,13 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */ 0xB0080000, // 0071 RAISE 2 R0 R0 0x5C1C0C00, // 0072 MOVE R7 R6 0x741E0002, // 0073 JMPT R7 #0077 - 0x8C1C0357, // 0074 GETMET R7 R1 K87 - 0x58240032, // 0075 LDCONST R9 K50 + 0x8C1C0356, // 0074 GETMET R7 R1 K86 + 0x58240031, // 0075 LDCONST R9 K49 0x7C1C0400, // 0076 CALL R7 2 - 0x8C1C0134, // 0077 GETMET R7 R0 K52 + 0x8C1C0133, // 0077 GETMET R7 R0 K51 0x7C1C0200, // 0078 CALL R7 1 - 0x8C1C0357, // 0079 GETMET R7 R1 K87 - 0x58240036, // 007A LDCONST R9 K54 + 0x8C1C0356, // 0079 GETMET R7 R1 K86 + 0x58240035, // 007A LDCONST R9 K53 0x7C1C0400, // 007B CALL R7 2 0x80000000, // 007C RET 0 }) @@ -1287,30 +1287,30 @@ be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */ be_str_weak(counter_group_ctrl_snd_next), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x8804013A, // 0000 GETMBR R1 R0 K58 - 0x8C04034A, // 0001 GETMET R1 R1 K74 + 0x88040139, // 0000 GETMBR R1 R0 K57 + 0x8C040349, // 0001 GETMET R1 R1 K73 0x7C040200, // 0002 CALL R1 1 0xB80A0200, // 0003 GETNGBL R2 K1 0x600C0018, // 0004 GETGBL R3 G24 - 0x58100059, // 0005 LDCONST R4 K89 + 0x58100058, // 0005 LDCONST R4 K88 0x5C140200, // 0006 MOVE R5 R1 0x7C0C0400, // 0007 CALL R3 2 0x58100007, // 0008 LDCONST R4 K7 0x7C080400, // 0009 CALL R2 2 0xB80A2200, // 000A GETNGBL R2 K17 - 0x8808054C, // 000B GETMBR R2 R2 K76 - 0x8C08054D, // 000C GETMET R2 R2 K77 + 0x8808054B, // 000B GETMBR R2 R2 K75 + 0x8C08054C, // 000C GETMET R2 R2 K76 0x5C100200, // 000D MOVE R4 R1 - 0x8814013B, // 000E GETMBR R5 R0 K59 + 0x8814013A, // 000E GETMBR R5 R0 K58 0x7C080600, // 000F CALL R2 3 0x780A0007, // 0010 JMPF R2 #0019 - 0x8808014E, // 0011 GETMBR R2 R0 K78 + 0x8808014D, // 0011 GETMBR R2 R0 K77 0x00080202, // 0012 ADD R2 R1 R2 - 0x90027602, // 0013 SETMBR R0 K59 R2 - 0x8C08014F, // 0014 GETMET R2 R0 K79 + 0x90027402, // 0013 SETMBR R0 K58 R2 + 0x8C08014E, // 0014 GETMET R2 R0 K78 0x7C080200, // 0015 CALL R2 1 0x780A0001, // 0016 JMPF R2 #0019 - 0x8C080150, // 0017 GETMET R2 R0 K80 + 0x8C08014F, // 0017 GETMET R2 R0 K79 0x7C080200, // 0018 CALL R2 1 0x80040200, // 0019 RET 1 R1 }) @@ -1336,13 +1336,13 @@ be_local_closure(class_Matter_Fabric_fabric_candidate, /* name */ be_str_weak(fabric_candidate), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x8C04015A, // 0000 GETMET R1 R0 K90 + 0x8C040159, // 0000 GETMET R1 R0 K89 0x540E0077, // 0001 LDINT R3 120 0x7C040400, // 0002 CALL R1 2 - 0x8C040147, // 0003 GETMET R1 R0 K71 + 0x8C040146, // 0003 GETMET R1 R0 K70 0x7C040200, // 0004 CALL R1 1 - 0x88040148, // 0005 GETMBR R1 R0 K72 - 0x8C040349, // 0006 GETMET R1 R1 K73 + 0x88040147, // 0005 GETMBR R1 R0 K71 + 0x8C040348, // 0006 GETMET R1 R1 K72 0x5C0C0000, // 0007 MOVE R3 R0 0x7C040400, // 0008 CALL R1 2 0x80000000, // 0009 RET 0 @@ -1369,14 +1369,14 @@ be_local_closure(class_Matter_Fabric_assign_fabric_index, /* name */ be_str_weak(assign_fabric_index), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ - 0x8C040140, // 0000 GETMET R1 R0 K64 + 0x8C04013F, // 0000 GETMET R1 R0 K63 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x1C040202, // 0003 EQ R1 R1 R2 0x78060004, // 0004 JMPF R1 #000A - 0x8C04015B, // 0005 GETMET R1 R0 K91 - 0x880C0148, // 0006 GETMBR R3 R0 K72 - 0x8C0C075C, // 0007 GETMET R3 R3 K92 + 0x8C04015A, // 0005 GETMET R1 R0 K90 + 0x880C0147, // 0006 GETMBR R3 R0 K71 + 0x8C0C075B, // 0007 GETMET R3 R3 K91 0x7C0C0200, // 0008 CALL R3 1 0x7C040400, // 0009 CALL R1 2 0x80000000, // 000A RET 0 @@ -1404,22 +1404,22 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ 0x6008000C, // 0000 GETGBL R2 G12 - 0x880C012C, // 0001 GETMBR R3 R0 K44 + 0x880C012B, // 0001 GETMBR R3 R0 K43 0x7C080200, // 0002 CALL R2 1 - 0x1C080514, // 0003 EQ R2 R2 K20 + 0x1C08055C, // 0003 EQ R2 R2 K92 0x780A0001, // 0004 JMPF R2 #0007 0x4C080000, // 0005 LDNIL R2 0x80040400, // 0006 RET 1 R2 - 0x8808012C, // 0007 GETMBR R2 R0 K44 - 0x94080514, // 0008 GETIDX R2 R2 K20 + 0x8808012B, // 0007 GETMBR R2 R0 K43 + 0x9408055C, // 0008 GETIDX R2 R2 K92 0x880C055D, // 0009 GETMBR R3 R2 K93 0x5810005E, // 000A LDCONST R4 K94 0x6014000C, // 000B GETGBL R5 G12 - 0x8818012C, // 000C GETMBR R6 R0 K44 + 0x8818012B, // 000C GETMBR R6 R0 K43 0x7C140200, // 000D CALL R5 1 0x14140805, // 000E LT R5 R4 R5 0x7816000C, // 000F JMPF R5 #001D - 0x8814012C, // 0010 GETMBR R5 R0 K44 + 0x8814012B, // 0010 GETMBR R5 R0 K43 0x94140A04, // 0011 GETIDX R5 R5 R4 0x88140B5D, // 0012 GETMBR R5 R5 K93 0x78060001, // 0013 JMPF R1 #0016 @@ -1427,7 +1427,7 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ 0x70020000, // 0015 JMP #0017 0x24180A03, // 0016 GT R6 R5 R3 0x781A0002, // 0017 JMPF R6 #001B - 0x8818012C, // 0018 GETMBR R6 R0 K44 + 0x8818012B, // 0018 GETMBR R6 R0 K43 0x94080C04, // 0019 GETIDX R2 R6 R4 0x5C0C0A00, // 001A MOVE R3 R5 0x0010095E, // 001B ADD R4 R4 K94 @@ -1457,36 +1457,36 @@ be_local_closure(class_Matter_Fabric_init, /* name */ &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ 0xA40ABE00, // 0000 IMPORT R2 K95 - 0x90029001, // 0001 SETMBR R0 K72 R1 + 0x90028E01, // 0001 SETMBR R0 K71 R1 0xB80E2200, // 0002 GETNGBL R3 K17 0x8C0C0760, // 0003 GETMET R3 R3 K96 0x7C0C0200, // 0004 CALL R3 1 - 0x90025803, // 0005 SETMBR R0 K44 R3 + 0x90025603, // 0005 SETMBR R0 K43 R3 0x9002C362, // 0006 SETMBR R0 K97 K98 0xB80EC800, // 0007 GETNGBL R3 K100 0x8C0C0765, // 0008 GETMET R3 R3 K101 0x7C0C0200, // 0009 CALL R3 1 0x9002C603, // 000A SETMBR R0 K99 R3 0xB80E2200, // 000B GETNGBL R3 K17 - 0x8C0C074C, // 000C GETMET R3 R3 K76 + 0x8C0C074B, // 000C GETMET R3 R3 K75 0x7C0C0200, // 000D CALL R3 1 - 0x90026E03, // 000E SETMBR R0 K55 R3 + 0x90026C03, // 000E SETMBR R0 K54 R3 0xB80E2200, // 000F GETNGBL R3 K17 - 0x8C0C074C, // 0010 GETMET R3 R3 K76 + 0x8C0C074B, // 0010 GETMET R3 R3 K75 0x7C0C0200, // 0011 CALL R3 1 - 0x90027403, // 0012 SETMBR R0 K58 R3 - 0x880C0137, // 0013 GETMBR R3 R0 K55 - 0x8C0C074A, // 0014 GETMET R3 R3 K74 + 0x90027203, // 0012 SETMBR R0 K57 R3 + 0x880C0136, // 0013 GETMBR R3 R0 K54 + 0x8C0C0749, // 0014 GETMET R3 R3 K73 0x7C0C0200, // 0015 CALL R3 1 - 0x8810014E, // 0016 GETMBR R4 R0 K78 + 0x8810014D, // 0016 GETMBR R4 R0 K77 0x000C0604, // 0017 ADD R3 R3 R4 - 0x90027203, // 0018 SETMBR R0 K57 R3 - 0x880C0137, // 0019 GETMBR R3 R0 K55 - 0x8C0C074A, // 001A GETMET R3 R3 K74 + 0x90027003, // 0018 SETMBR R0 K56 R3 + 0x880C0136, // 0019 GETMBR R3 R0 K54 + 0x8C0C0749, // 001A GETMET R3 R3 K73 0x7C0C0200, // 001B CALL R3 1 - 0x8810014E, // 001C GETMBR R4 R0 K78 + 0x8810014D, // 001C GETMBR R4 R0 K77 0x000C0604, // 001D ADD R3 R3 R4 - 0x90027603, // 001E SETMBR R0 K59 R3 + 0x90027403, // 001E SETMBR R0 K58 R3 0x80000000, // 001F RET 0 }) ) @@ -1511,7 +1511,7 @@ be_local_closure(class_Matter_Fabric_get_ipk_epoch_key, /* name */ be_str_weak(get_ipk_epoch_key), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x8804013D, // 0000 GETMBR R1 R0 K61 + 0x8804013C, // 0000 GETMBR R1 R0 K60 0x80040200, // 0001 RET 1 R1 }) ) @@ -1536,7 +1536,7 @@ be_local_closure(class_Matter_Fabric_add_session, /* name */ be_str_weak(add_session), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0x8808012C, // 0000 GETMBR R2 R0 K44 + 0x8808012B, // 0000 GETMBR R2 R0 K43 0x8C080516, // 0001 GETMET R2 R2 K22 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 @@ -1544,27 +1544,27 @@ be_local_closure(class_Matter_Fabric_add_session, /* name */ 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0017, // 0006 JMPF R2 #001F 0x6008000C, // 0007 GETGBL R2 G12 - 0x880C012C, // 0008 GETMBR R3 R0 K44 + 0x880C012B, // 0008 GETMBR R3 R0 K43 0x7C080200, // 0009 CALL R2 1 0x880C0166, // 000A GETMBR R3 R0 K102 0x28080403, // 000B GE R2 R2 R3 0x780A000D, // 000C JMPF R2 #001B 0x8C080167, // 000D GETMET R2 R0 K103 0x7C080200, // 000E CALL R2 1 - 0x880C012C, // 000F GETMBR R3 R0 K44 + 0x880C012B, // 000F GETMBR R3 R0 K43 0x8C0C0768, // 0010 GETMET R3 R3 K104 - 0x8814012C, // 0011 GETMBR R5 R0 K44 + 0x8814012B, // 0011 GETMBR R5 R0 K43 0x8C140B16, // 0012 GETMET R5 R5 K22 0x5C1C0400, // 0013 MOVE R7 R2 0x7C140400, // 0014 CALL R5 2 0x7C0C0400, // 0015 CALL R3 2 - 0x880C0148, // 0016 GETMBR R3 R0 K72 + 0x880C0147, // 0016 GETMBR R3 R0 K71 0x8C0C0769, // 0017 GETMET R3 R3 K105 0x5C140400, // 0018 MOVE R5 R2 0x7C0C0400, // 0019 CALL R3 2 0x7001FFEB, // 001A JMP #0007 - 0x8808012C, // 001B GETMBR R2 R0 K44 - 0x8C080527, // 001C GETMET R2 R2 K39 + 0x8808012B, // 001B GETMBR R2 R0 K43 + 0x8C080526, // 001C GETMET R2 R2 K38 0x5C100200, // 001D MOVE R4 R1 0x7C080400, // 001E CALL R2 2 0x80000000, // 001F RET 0 @@ -1591,7 +1591,7 @@ be_local_closure(class_Matter_Fabric_set_fabric_index, /* name */ be_str_weak(set_fabric_index), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x9002AC01, // 0000 SETMBR R0 K86 R1 + 0x9002AA01, // 0000 SETMBR R0 K85 R1 0x80000000, // 0001 RET 0 }) ) @@ -1616,9 +1616,9 @@ be_local_closure(class_Matter_Fabric_get_device_id_as_int64, /* name */ be_str_weak(get_device_id_as_int64), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8068400, // 0000 GETNGBL R1 K66 - 0x8C040343, // 0001 GETMET R1 R1 K67 - 0x880C013E, // 0002 GETMBR R3 R0 K62 + 0xB8068200, // 0000 GETNGBL R1 K65 + 0x8C040342, // 0001 GETMET R1 R1 K66 + 0x880C013D, // 0002 GETMBR R3 R0 K61 0x7C040400, // 0003 CALL R1 2 0x80040200, // 0004 RET 1 R1 }) @@ -1669,7 +1669,7 @@ be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */ be_str_weak(get_ipk_group_key), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x8804013D, // 0000 GETMBR R1 R0 K61 + 0x8804013C, // 0000 GETMBR R1 R0 K60 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x74060003, // 0003 JMPT R1 #0008 @@ -1688,7 +1688,7 @@ be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */ 0x8814016C, // 0010 GETMBR R5 R0 K108 0x7C0C0400, // 0011 CALL R3 2 0x8C10056D, // 0012 GETMET R4 R2 K109 - 0x8818013D, // 0013 GETMBR R6 R0 K61 + 0x8818013C, // 0013 GETMBR R6 R0 K60 0x881C0109, // 0014 GETMBR R7 R0 K9 0x5C200600, // 0015 MOVE R8 R3 0x5426000F, // 0016 LDINT R9 16 @@ -1720,7 +1720,7 @@ be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */ 0xB806C800, // 0000 GETNGBL R1 K100 0x8C040365, // 0001 GETMET R1 R1 K101 0x7C040200, // 0002 CALL R1 1 - 0x90028201, // 0003 SETMBR R0 K65 R1 + 0x90028001, // 0003 SETMBR R0 K64 R1 0x80000000, // 0004 RET 0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h index 0693c89b7..3d1d9ae4f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_HTTP_async' ktab size: 79, total: 152 (saved 584 bytes) -static const bvalue be_ktab_class_Matter_HTTP_async[79] = { +// compact class 'Matter_HTTP_async' ktab size: 80, total: 152 (saved 576 bytes) +static const bvalue be_ktab_class_Matter_HTTP_async[80] = { /* K0 */ be_nested_str_weak(is_chunked), /* K1 */ be_nested_str_weak(chunk_size), /* K2 */ be_nested_str_weak(global), @@ -27,63 +27,64 @@ static const bvalue be_ktab_class_Matter_HTTP_async[79] = { /* K19 */ be_nested_str_weak(chunked), /* K20 */ be_nested_str_weak(find), /* K21 */ be_nested_str_weak(_X40), - /* K22 */ be_const_int(0), - /* K23 */ be_nested_str_weak(auth), - /* K24 */ be_nested_str_weak(fromstring), - /* K25 */ be_const_int(1), - /* K26 */ be_nested_str_weak(tob64), + /* K22 */ be_nested_str_weak(auth), + /* K23 */ be_nested_str_weak(fromstring), + /* K24 */ be_const_int(1), + /* K25 */ be_nested_str_weak(tob64), + /* K26 */ be_const_int(2147483647), /* K27 */ be_nested_str_weak(init), /* K28 */ be_nested_str_weak(compile_re), /* K29 */ be_nested_str_weak(phase), - /* K30 */ be_nested_str_weak(parse_http_status_line), - /* K31 */ be_nested_str_weak(parse_http_headers), - /* K32 */ be_const_int(2), - /* K33 */ be_nested_str_weak(parse_http_payload), - /* K34 */ be_nested_str_weak(http_status), - /* K35 */ be_nested_str_weak(event_http_failed), - /* K36 */ be_nested_str_weak(reset), - /* K37 */ be_nested_str_weak(cmd), - /* K38 */ be_nested_str_weak(begin), - /* K39 */ be_nested_str_weak(send_http), - /* K40 */ be_nested_str_weak(_re_http_header), - /* K41 */ be_nested_str_weak(event_http_header), - /* K42 */ be_nested_str_weak(_re_http_body), - /* K43 */ be_nested_str_weak(event_http_headers_end), - /* K44 */ be_nested_str_weak(receive), - /* K45 */ be_nested_str_weak(event_http_timeout), - /* K46 */ be_nested_str_weak(re), - /* K47 */ be_nested_str_weak(contains), - /* K48 */ be_nested_str_weak(_re_http_status), - /* K49 */ be_nested_str_weak(compile), - /* K50 */ be_nested_str_weak(HTTP_STATUS_REGEX), - /* K51 */ be_nested_str_weak(HTTP_HEADER_REGEX), - /* K52 */ be_nested_str_weak(HTTP_BODY_REGEX), - /* K53 */ be_nested_str_weak(HTTP_CHUNK_REGEX), - /* K54 */ be_nested_str_weak(event_http_finished), - /* K55 */ be_nested_str_weak(timeout), - /* K56 */ be_nested_str_weak(set_timeout), - /* K57 */ be_nested_str_weak(SPINLOCK), - /* K58 */ be_nested_str_weak(loop), - /* K59 */ be_nested_str_weak(tasmota), - /* K60 */ be_nested_str_weak(delay), - /* K61 */ be_nested_str_weak(addr), - /* K62 */ be_nested_str_weak(_X3A), - /* K63 */ be_nested_str_weak(_X5B), - /* K64 */ be_nested_str_weak(_X5D), - /* K65 */ be_nested_str_weak(HTTP_GET), - /* K66 */ be_nested_str_weak(port), - /* K67 */ be_nested_str_weak(HTTP_GET_AUTH), - /* K68 */ be_nested_str_weak(write), - /* K69 */ be_const_int(2147483647), - /* K70 */ be_nested_str_weak(status_code), - /* K71 */ be_const_int(1), - /* K72 */ be_nested_str_weak(tcp_connected), - /* K73 */ be_nested_str_weak(millis), - /* K74 */ be_nested_str_weak(time_start), - /* K75 */ be_nested_str_weak(tcp), - /* K76 */ be_nested_str_weak(available), - /* K77 */ be_nested_str_weak(read), - /* K78 */ be_nested_str_weak(parse_http_response), + /* K30 */ be_const_int(0), + /* K31 */ be_nested_str_weak(parse_http_status_line), + /* K32 */ be_nested_str_weak(parse_http_headers), + /* K33 */ be_const_int(2), + /* K34 */ be_nested_str_weak(parse_http_payload), + /* K35 */ be_nested_str_weak(http_status), + /* K36 */ be_nested_str_weak(event_http_failed), + /* K37 */ be_nested_str_weak(reset), + /* K38 */ be_nested_str_weak(cmd), + /* K39 */ be_nested_str_weak(begin), + /* K40 */ be_nested_str_weak(send_http), + /* K41 */ be_nested_str_weak(_re_http_header), + /* K42 */ be_nested_str_weak(event_http_header), + /* K43 */ be_nested_str_weak(_re_http_body), + /* K44 */ be_nested_str_weak(event_http_headers_end), + /* K45 */ be_nested_str_weak(receive), + /* K46 */ be_nested_str_weak(event_http_timeout), + /* K47 */ be_nested_str_weak(re), + /* K48 */ be_nested_str_weak(contains), + /* K49 */ be_nested_str_weak(_re_http_status), + /* K50 */ be_nested_str_weak(compile), + /* K51 */ be_nested_str_weak(HTTP_STATUS_REGEX), + /* K52 */ be_nested_str_weak(HTTP_HEADER_REGEX), + /* K53 */ be_nested_str_weak(HTTP_BODY_REGEX), + /* K54 */ be_nested_str_weak(HTTP_CHUNK_REGEX), + /* K55 */ be_const_int(1), + /* K56 */ be_nested_str_weak(event_http_finished), + /* K57 */ be_nested_str_weak(timeout), + /* K58 */ be_nested_str_weak(set_timeout), + /* K59 */ be_nested_str_weak(SPINLOCK), + /* K60 */ be_nested_str_weak(loop), + /* K61 */ be_nested_str_weak(tasmota), + /* K62 */ be_nested_str_weak(delay), + /* K63 */ be_nested_str_weak(addr), + /* K64 */ be_nested_str_weak(_X3A), + /* K65 */ be_const_int(0), + /* K66 */ be_nested_str_weak(_X5B), + /* K67 */ be_nested_str_weak(_X5D), + /* K68 */ be_nested_str_weak(HTTP_GET), + /* K69 */ be_nested_str_weak(port), + /* K70 */ be_nested_str_weak(HTTP_GET_AUTH), + /* K71 */ be_nested_str_weak(write), + /* K72 */ be_nested_str_weak(status_code), + /* K73 */ be_nested_str_weak(tcp_connected), + /* K74 */ be_nested_str_weak(millis), + /* K75 */ be_nested_str_weak(time_start), + /* K76 */ be_nested_str_weak(tcp), + /* K77 */ be_nested_str_weak(available), + /* K78 */ be_nested_str_weak(read), + /* K79 */ be_nested_str_weak(parse_http_response), }; @@ -286,20 +287,20 @@ be_local_closure(class_Matter_HTTP_async_init, /* name */ 0x5C200200, // 0006 MOVE R8 R1 0x58240015, // 0007 LDCONST R9 K21 0x7C180600, // 0008 CALL R6 3 - 0x281C0D16, // 0009 GE R7 R6 K22 + 0x281C0D07, // 0009 GE R7 R6 K7 0x781E000C, // 000A JMPF R7 #0018 0x601C0015, // 000B GETGBL R7 G21 0x7C1C0000, // 000C CALL R7 0 - 0x8C1C0F18, // 000D GETMET R7 R7 K24 - 0x04240D19, // 000E SUB R9 R6 K25 - 0x40262C09, // 000F CONNECT R9 K22 R9 + 0x8C1C0F17, // 000D GETMET R7 R7 K23 + 0x04240D18, // 000E SUB R9 R6 K24 + 0x40260E09, // 000F CONNECT R9 K7 R9 0x94240209, // 0010 GETIDX R9 R1 R9 0x7C1C0400, // 0011 CALL R7 2 - 0x8C1C0F1A, // 0012 GETMET R7 R7 K26 + 0x8C1C0F19, // 0012 GETMET R7 R7 K25 0x7C1C0200, // 0013 CALL R7 1 - 0x90022E07, // 0014 SETMBR R0 K23 R7 - 0x001C0D19, // 0015 ADD R7 R6 K25 - 0x401C0F0F, // 0016 CONNECT R7 R7 K15 + 0x90022C07, // 0014 SETMBR R0 K22 R7 + 0x001C0D18, // 0015 ADD R7 R6 K24 + 0x401C0F1A, // 0016 CONNECT R7 R7 K26 0x94040207, // 0017 GETIDX R1 R1 R7 0x601C0003, // 0018 GETGBL R7 G3 0x5C200000, // 0019 MOVE R8 R0 @@ -361,21 +362,21 @@ be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */ &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x8804011D, // 0000 GETMBR R1 R0 K29 - 0x1C040316, // 0001 EQ R1 R1 K22 + 0x1C04031E, // 0001 EQ R1 R1 K30 0x78060002, // 0002 JMPF R1 #0006 - 0x8C04011E, // 0003 GETMET R1 R0 K30 + 0x8C04011F, // 0003 GETMET R1 R0 K31 0x7C040200, // 0004 CALL R1 1 0x7002000A, // 0005 JMP #0011 0x8804011D, // 0006 GETMBR R1 R0 K29 - 0x1C040319, // 0007 EQ R1 R1 K25 + 0x1C040309, // 0007 EQ R1 R1 K9 0x78060002, // 0008 JMPF R1 #000C - 0x8C04011F, // 0009 GETMET R1 R0 K31 + 0x8C040120, // 0009 GETMET R1 R0 K32 0x7C040200, // 000A CALL R1 1 0x70020004, // 000B JMP #0011 0x8804011D, // 000C GETMBR R1 R0 K29 - 0x1C040320, // 000D EQ R1 R1 K32 + 0x1C040321, // 000D EQ R1 R1 K33 0x78060001, // 000E JMPF R1 #0011 - 0x8C040121, // 000F GETMET R1 R0 K33 + 0x8C040122, // 000F GETMET R1 R0 K34 0x7C040200, // 0010 CALL R1 1 0x80000000, // 0011 RET 0 }) @@ -402,8 +403,8 @@ be_local_closure(class_Matter_HTTP_async_event_refused, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFFE, // 0000 LDINT R1 -1 - 0x90024401, // 0001 SETMBR R0 K34 R1 - 0x8C040123, // 0002 GETMET R1 R0 K35 + 0x90024601, // 0001 SETMBR R0 K35 R1 + 0x8C040124, // 0002 GETMET R1 R0 K36 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -432,16 +433,16 @@ be_local_closure(class_Matter_HTTP_async_reset, /* name */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040324, // 0003 GETMET R1 R1 K36 + 0x8C040325, // 0003 GETMET R1 R1 K37 0x7C040200, // 0004 CALL R1 1 0x4C040000, // 0005 LDNIL R1 - 0x90024A01, // 0006 SETMBR R0 K37 R1 + 0x90024C01, // 0006 SETMBR R0 K38 R1 0x4C040000, // 0007 LDNIL R1 0x90020A01, // 0008 SETMBR R0 K5 R1 - 0x90020D16, // 0009 SETMBR R0 K6 K22 + 0x90020D1E, // 0009 SETMBR R0 K6 K30 0x90021D0C, // 000A SETMBR R0 K14 K12 - 0x90023B16, // 000B SETMBR R0 K29 K22 - 0x90024516, // 000C SETMBR R0 K34 K22 + 0x90023B1E, // 000B SETMBR R0 K29 K30 + 0x9002471E, // 000C SETMBR R0 K35 K30 0x50040000, // 000D LDBOOL R1 0 0 0x90020001, // 000E SETMBR R0 K0 R1 0x4C040000, // 000F LDNIL R1 @@ -473,9 +474,9 @@ be_local_closure(class_Matter_HTTP_async_begin, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080526, // 0003 GETMET R2 R2 K38 + 0x8C080527, // 0003 GETMET R2 R2 K39 0x7C080200, // 0004 CALL R2 1 - 0x90024A01, // 0005 SETMBR R0 K37 R1 + 0x90024C01, // 0005 SETMBR R0 K38 R1 0x80040400, // 0006 RET 1 R2 }) ) @@ -500,7 +501,7 @@ be_local_closure(class_Matter_HTTP_async_event_established, /* name */ be_str_weak(event_established), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040127, // 0000 GETMET R1 R0 K39 + 0x8C040128, // 0000 GETMET R1 R0 K40 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -529,15 +530,15 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0x50040200, // 0000 LDBOOL R1 1 0 0x7806002B, // 0001 JMPF R1 #002E 0xB8060400, // 0002 GETNGBL R1 K2 - 0x88040328, // 0003 GETMBR R1 R1 K40 + 0x88040329, // 0003 GETMBR R1 R1 K41 0x8C040304, // 0004 GETMET R1 R1 K4 0x880C0105, // 0005 GETMBR R3 R0 K5 0x88100106, // 0006 GETMBR R4 R0 K6 0x7C040600, // 0007 CALL R1 3 0x78060008, // 0008 JMPF R1 #0012 - 0x8C080129, // 0009 GETMET R2 R0 K41 - 0x94100319, // 000A GETIDX R4 R1 K25 - 0x94140320, // 000B GETIDX R5 R1 K32 + 0x8C08012A, // 0009 GETMET R2 R0 K42 + 0x94100309, // 000A GETIDX R4 R1 K9 + 0x94140321, // 000B GETIDX R5 R1 K33 0x7C080600, // 000C CALL R2 3 0x88080106, // 000D GETMBR R2 R0 K6 0x940C0307, // 000E GETIDX R3 R1 K7 @@ -545,16 +546,16 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0x90020C02, // 0010 SETMBR R0 K6 R2 0x7002001A, // 0011 JMP #002D 0xB80A0400, // 0012 GETNGBL R2 K2 - 0x8808052A, // 0013 GETMBR R2 R2 K42 + 0x8808052B, // 0013 GETMBR R2 R2 K43 0x8C080504, // 0014 GETMET R2 R2 K4 0x88100105, // 0015 GETMBR R4 R0 K5 0x88140106, // 0016 GETMBR R5 R0 K6 0x7C080600, // 0017 CALL R2 3 0x780A0004, // 0018 JMPF R2 #001E - 0x8C0C012B, // 0019 GETMET R3 R0 K43 + 0x8C0C012C, // 0019 GETMET R3 R0 K44 0x7C0C0200, // 001A CALL R3 1 - 0x90023B20, // 001B SETMBR R0 K29 K32 - 0x8C0C0121, // 001C GETMET R3 R0 K33 + 0x90023B21, // 001B SETMBR R0 K29 K33 + 0x8C0C0122, // 001C GETMET R3 R0 K34 0x7C0C0200, // 001D CALL R3 1 0x600C000C, // 001E GETGBL R3 G12 0x88100105, // 001F GETMBR R4 R0 K5 @@ -567,8 +568,8 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0x540DFFFB, // 0026 LDINT R3 -4 0x90021403, // 0027 SETMBR R0 K10 R3 0x540DFFFE, // 0028 LDINT R3 -1 - 0x90024403, // 0029 SETMBR R0 K34 R3 - 0x8C0C0123, // 002A GETMET R3 R0 K35 + 0x90024603, // 0029 SETMBR R0 K35 R3 + 0x8C0C0124, // 002A GETMET R3 R0 K36 0x7C0C0200, // 002B CALL R3 1 0x80000600, // 002C RET 0 0x7001FFD1, // 002D JMP #0000 @@ -596,7 +597,7 @@ be_local_closure(class_Matter_HTTP_async_event_available, /* name */ be_str_weak(event_available), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04012C, // 0000 GETMET R1 R0 K44 + 0x8C04012D, // 0000 GETMET R1 R0 K45 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -623,8 +624,8 @@ be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFFD, // 0000 LDINT R1 -2 - 0x90024401, // 0001 SETMBR R0 K34 R1 - 0x8C04012D, // 0002 GETMET R1 R0 K45 + 0x90024601, // 0001 SETMBR R0 K35 R1 + 0x8C04012E, // 0002 GETMET R1 R0 K46 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -650,30 +651,30 @@ be_local_closure(class_Matter_HTTP_async_compile_re, /* name */ be_str_weak(compile_re), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0xA4065C00, // 0000 IMPORT R1 K46 + 0xA4065E00, // 0000 IMPORT R1 K47 0xB80A0400, // 0001 GETNGBL R2 K2 - 0x8C08052F, // 0002 GETMET R2 R2 K47 - 0x58100030, // 0003 LDCONST R4 K48 + 0x8C080530, // 0002 GETMET R2 R2 K48 + 0x58100031, // 0003 LDCONST R4 K49 0x7C080400, // 0004 CALL R2 2 0x740A0013, // 0005 JMPT R2 #001A 0xB80A0400, // 0006 GETNGBL R2 K2 - 0x8C0C0331, // 0007 GETMET R3 R1 K49 - 0x88140132, // 0008 GETMBR R5 R0 K50 + 0x8C0C0332, // 0007 GETMET R3 R1 K50 + 0x88140133, // 0008 GETMBR R5 R0 K51 0x7C0C0400, // 0009 CALL R3 2 - 0x900A6003, // 000A SETMBR R2 K48 R3 + 0x900A6203, // 000A SETMBR R2 K49 R3 0xB80A0400, // 000B GETNGBL R2 K2 - 0x8C0C0331, // 000C GETMET R3 R1 K49 - 0x88140133, // 000D GETMBR R5 R0 K51 + 0x8C0C0332, // 000C GETMET R3 R1 K50 + 0x88140134, // 000D GETMBR R5 R0 K52 0x7C0C0400, // 000E CALL R3 2 - 0x900A5003, // 000F SETMBR R2 K40 R3 + 0x900A5203, // 000F SETMBR R2 K41 R3 0xB80A0400, // 0010 GETNGBL R2 K2 - 0x8C0C0331, // 0011 GETMET R3 R1 K49 - 0x88140134, // 0012 GETMBR R5 R0 K52 + 0x8C0C0332, // 0011 GETMET R3 R1 K50 + 0x88140135, // 0012 GETMBR R5 R0 K53 0x7C0C0400, // 0013 CALL R3 2 - 0x900A5403, // 0014 SETMBR R2 K42 R3 + 0x900A5603, // 0014 SETMBR R2 K43 R3 0xB80A0400, // 0015 GETNGBL R2 K2 - 0x8C0C0331, // 0016 GETMET R3 R1 K49 - 0x88140135, // 0017 GETMBR R5 R0 K53 + 0x8C0C0332, // 0016 GETMET R3 R1 K50 + 0x88140136, // 0017 GETMBR R5 R0 K54 0x7C0C0400, // 0018 CALL R3 2 0x900A0603, // 0019 SETMBR R2 K3 R3 0x80000000, // 001A RET 0 @@ -700,11 +701,11 @@ be_local_closure(class_Matter_HTTP_async_event_closed, /* name */ be_str_weak(event_closed), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040122, // 0000 GETMBR R1 R0 K34 - 0x1C040316, // 0001 EQ R1 R1 K22 + 0x88040123, // 0000 GETMBR R1 R0 K35 + 0x1C04031E, // 0001 EQ R1 R1 K30 0x78060002, // 0002 JMPF R1 #0006 - 0x90024509, // 0003 SETMBR R0 K34 K9 - 0x8C040136, // 0004 GETMET R1 R0 K54 + 0x90024737, // 0003 SETMBR R0 K35 K55 + 0x8C040138, // 0004 GETMET R1 R0 K56 0x7C040200, // 0005 CALL R1 1 0x80000000, // 0006 RET 0 }) @@ -730,34 +731,34 @@ be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */ be_str_weak(begin_sync), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x880C0137, // 0000 GETMBR R3 R0 K55 + 0x880C0139, // 0000 GETMBR R3 R0 K57 0x4C100000, // 0001 LDNIL R4 0x20100404, // 0002 NE R4 R2 R4 0x78120002, // 0003 JMPF R4 #0007 - 0x8C100138, // 0004 GETMET R4 R0 K56 + 0x8C10013A, // 0004 GETMET R4 R0 K58 0x5C180400, // 0005 MOVE R6 R2 0x7C100400, // 0006 CALL R4 2 0x4C100000, // 0007 LDNIL R4 - 0x88140139, // 0008 GETMBR R5 R0 K57 - 0x8C180126, // 0009 GETMET R6 R0 K38 + 0x8814013B, // 0008 GETMBR R5 R0 K59 + 0x8C180127, // 0009 GETMET R6 R0 K39 0x5C200200, // 000A MOVE R8 R1 0x7C180400, // 000B CALL R6 2 0x781A0009, // 000C JMPF R6 #0017 - 0x881C0122, // 000D GETMBR R7 R0 K34 - 0x1C1C0F16, // 000E EQ R7 R7 K22 + 0x881C0123, // 000D GETMBR R7 R0 K35 + 0x1C1C0F1E, // 000E EQ R7 R7 K30 0x781E0006, // 000F JMPF R7 #0017 - 0x8C1C013A, // 0010 GETMET R7 R0 K58 + 0x8C1C013C, // 0010 GETMET R7 R0 K60 0x7C1C0200, // 0011 CALL R7 1 - 0xB81E7600, // 0012 GETNGBL R7 K59 - 0x8C1C0F3C, // 0013 GETMET R7 R7 K60 + 0xB81E7A00, // 0012 GETNGBL R7 K61 + 0x8C1C0F3E, // 0013 GETMET R7 R7 K62 0x5C240A00, // 0014 MOVE R9 R5 0x7C1C0400, // 0015 CALL R7 2 0x7001FFF5, // 0016 JMP #000D - 0x8C1C0138, // 0017 GETMET R7 R0 K56 + 0x8C1C013A, // 0017 GETMET R7 R0 K58 0x5C240600, // 0018 MOVE R9 R3 0x7C1C0400, // 0019 CALL R7 2 - 0x881C0122, // 001A GETMBR R7 R0 K34 - 0x241C0F16, // 001B GT R7 R7 K22 + 0x881C0123, // 001A GETMBR R7 R0 K35 + 0x241C0F1E, // 001B GT R7 R7 K30 0x781E0001, // 001C JMPF R7 #001F 0x881C010E, // 001D GETMBR R7 R0 K14 0x70020000, // 001E JMP #0020 @@ -788,38 +789,38 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ ( &(const binstruction[50]) { /* code */ 0xA4062000, // 0000 IMPORT R1 K16 0x90020B0C, // 0001 SETMBR R0 K5 K12 - 0x8808013D, // 0002 GETMBR R2 R0 K61 + 0x8808013F, // 0002 GETMBR R2 R0 K63 0x8C0C0314, // 0003 GETMET R3 R1 K20 0x5C140400, // 0004 MOVE R5 R2 - 0x5818003E, // 0005 LDCONST R6 K62 + 0x58180040, // 0005 LDCONST R6 K64 0x7C0C0600, // 0006 CALL R3 3 - 0x280C0707, // 0007 GE R3 R3 K7 + 0x280C0741, // 0007 GE R3 R3 K65 0x780E0002, // 0008 JMPF R3 #000C - 0x000E7E02, // 0009 ADD R3 K63 R2 - 0x000C0740, // 000A ADD R3 R3 K64 + 0x000E8402, // 0009 ADD R3 K66 R2 + 0x000C0743, // 000A ADD R3 R3 K67 0x5C080600, // 000B MOVE R2 R3 0x4C0C0000, // 000C LDNIL R3 - 0x88100117, // 000D GETMBR R4 R0 K23 + 0x88100116, // 000D GETMBR R4 R0 K22 0x4C140000, // 000E LDNIL R5 0x1C100805, // 000F EQ R4 R4 R5 0x78120007, // 0010 JMPF R4 #0019 0x60100018, // 0011 GETGBL R4 G24 - 0x88140141, // 0012 GETMBR R5 R0 K65 - 0x88180125, // 0013 GETMBR R6 R0 K37 + 0x88140144, // 0012 GETMBR R5 R0 K68 + 0x88180126, // 0013 GETMBR R6 R0 K38 0x5C1C0400, // 0014 MOVE R7 R2 - 0x88200142, // 0015 GETMBR R8 R0 K66 + 0x88200145, // 0015 GETMBR R8 R0 K69 0x7C100800, // 0016 CALL R4 4 0x5C0C0800, // 0017 MOVE R3 R4 0x70020007, // 0018 JMP #0021 0x60100018, // 0019 GETGBL R4 G24 - 0x88140143, // 001A GETMBR R5 R0 K67 - 0x88180125, // 001B GETMBR R6 R0 K37 + 0x88140146, // 001A GETMBR R5 R0 K70 + 0x88180126, // 001B GETMBR R6 R0 K38 0x5C1C0400, // 001C MOVE R7 R2 - 0x88200142, // 001D GETMBR R8 R0 K66 - 0x88240117, // 001E GETMBR R9 R0 K23 + 0x88200145, // 001D GETMBR R8 R0 K69 + 0x88240116, // 001E GETMBR R9 R0 K22 0x7C100A00, // 001F CALL R4 5 0x5C0C0800, // 0020 MOVE R3 R4 - 0x8C100144, // 0021 GETMET R4 R0 K68 + 0x8C100147, // 0021 GETMET R4 R0 K71 0x5C180600, // 0022 MOVE R6 R3 0x7C100400, // 0023 CALL R4 2 0x6014000C, // 0024 GETGBL R5 G12 @@ -832,8 +833,8 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ 0x5415FFFB, // 002B LDINT R5 -4 0x90021405, // 002C SETMBR R0 K10 R5 0x5415FFFE, // 002D LDINT R5 -1 - 0x90024405, // 002E SETMBR R0 K34 R5 - 0x8C140123, // 002F GETMET R5 R0 K35 + 0x90024605, // 002E SETMBR R0 K35 R5 + 0x8C140124, // 002F GETMET R5 R0 K36 0x7C140200, // 0030 CALL R5 1 0x80000000, // 0031 RET 0 }) @@ -860,14 +861,14 @@ be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */ &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x88040106, // 0000 GETMBR R1 R0 K6 - 0x24040316, // 0001 GT R1 R1 K22 + 0x24040307, // 0001 GT R1 R1 K7 0x78060005, // 0002 JMPF R1 #0009 0x88040106, // 0003 GETMBR R1 R0 K6 - 0x40040345, // 0004 CONNECT R1 R1 K69 + 0x4004031A, // 0004 CONNECT R1 R1 K26 0x88080105, // 0005 GETMBR R2 R0 K5 0x94040401, // 0006 GETIDX R1 R2 R1 0x90020A01, // 0007 SETMBR R0 K5 R1 - 0x90020D16, // 0008 SETMBR R0 K6 K22 + 0x90020D07, // 0008 SETMBR R0 K6 K7 0x80000000, // 0009 RET 0 }) ) @@ -892,7 +893,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */ be_str_weak(event_http_status_code), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90028C01, // 0000 SETMBR R0 K70 R1 + 0x90029001, // 0000 SETMBR R0 K72 R1 0x80000000, // 0001 RET 0 }) ) @@ -918,7 +919,7 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ 0xB8060400, // 0000 GETNGBL R1 K2 - 0x88040330, // 0001 GETMBR R1 R1 K48 + 0x88040331, // 0001 GETMBR R1 R1 K49 0x8C040304, // 0002 GETMET R1 R1 K4 0x880C0105, // 0003 GETMBR R3 R0 K5 0x88100106, // 0004 GETMBR R4 R0 K6 @@ -927,11 +928,11 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ 0x94080307, // 0007 GETIDX R2 R1 K7 0x90020C02, // 0008 SETMBR R0 K6 R2 0x60080009, // 0009 GETGBL R2 G9 - 0x940C0347, // 000A GETIDX R3 R1 K71 + 0x940C0309, // 000A GETIDX R3 R1 K9 0x7C080200, // 000B CALL R2 1 - 0x90028C02, // 000C SETMBR R0 K70 R2 - 0x90023B47, // 000D SETMBR R0 K29 K71 - 0x8C08011F, // 000E GETMET R2 R0 K31 + 0x90029002, // 000C SETMBR R0 K72 R2 + 0x90023B09, // 000D SETMBR R0 K29 K9 + 0x8C080120, // 000E GETMET R2 R0 K32 0x7C080200, // 000F CALL R2 1 0x70020009, // 0010 JMP #001B 0x6008000C, // 0011 GETGBL R2 G12 @@ -992,17 +993,17 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ be_str_weak(receive), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x88040148, // 0000 GETMBR R1 R0 K72 + 0x88040149, // 0000 GETMBR R1 R0 K73 0x50080200, // 0001 LDBOOL R2 1 0 0x20040202, // 0002 NE R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 - 0xB8067600, // 0005 GETNGBL R1 K59 - 0x8C040349, // 0006 GETMET R1 R1 K73 + 0xB8067A00, // 0005 GETNGBL R1 K61 + 0x8C04034A, // 0006 GETMET R1 R1 K74 0x7C040200, // 0007 CALL R1 1 - 0x8808014A, // 0008 GETMBR R2 R0 K74 + 0x8808014B, // 0008 GETMBR R2 R0 K75 0x04040202, // 0009 SUB R1 R1 R2 - 0x88080137, // 000A GETMBR R2 R0 K55 + 0x88080139, // 000A GETMBR R2 R0 K57 0x24040202, // 000B GT R1 R1 R2 0x78060008, // 000C JMPF R1 #0016 0x5405FFFC, // 000D LDINT R1 -3 @@ -1010,18 +1011,18 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ 0x8C04010D, // 000F GETMET R1 R0 K13 0x7C040200, // 0010 CALL R1 1 0x5405FFFD, // 0011 LDINT R1 -2 - 0x90024401, // 0012 SETMBR R0 K34 R1 - 0x8C04012D, // 0013 GETMET R1 R0 K45 + 0x90024601, // 0012 SETMBR R0 K35 R1 + 0x8C04012E, // 0013 GETMET R1 R0 K46 0x7C040200, // 0014 CALL R1 1 0x70020018, // 0015 JMP #002F - 0x8804014B, // 0016 GETMBR R1 R0 K75 - 0x8C04034C, // 0017 GETMET R1 R1 K76 + 0x8804014C, // 0016 GETMBR R1 R0 K76 + 0x8C04034D, // 0017 GETMET R1 R1 K77 0x7C040200, // 0018 CALL R1 1 - 0x58080016, // 0019 LDCONST R2 K22 - 0x240C0316, // 001A GT R3 R1 K22 + 0x58080007, // 0019 LDCONST R2 K7 + 0x240C0307, // 001A GT R3 R1 K7 0x780E000E, // 001B JMPF R3 #002B - 0x880C014B, // 001C GETMBR R3 R0 K75 - 0x8C0C074D, // 001D GETMET R3 R3 K77 + 0x880C014C, // 001C GETMBR R3 R0 K76 + 0x8C0C074E, // 001D GETMET R3 R3 K78 0x7C0C0200, // 001E CALL R3 1 0x88100105, // 001F GETMBR R4 R0 K5 0x00100803, // 0020 ADD R4 R4 R3 @@ -1030,14 +1031,14 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ 0x5C140600, // 0023 MOVE R5 R3 0x7C100200, // 0024 CALL R4 1 0x00080404, // 0025 ADD R2 R2 R4 - 0x8810014B, // 0026 GETMBR R4 R0 K75 - 0x8C10094C, // 0027 GETMET R4 R4 K76 + 0x8810014C, // 0026 GETMBR R4 R0 K76 + 0x8C10094D, // 0027 GETMET R4 R4 K77 0x7C100200, // 0028 CALL R4 1 0x5C040800, // 0029 MOVE R1 R4 0x7001FFEE, // 002A JMP #001A - 0x240C0516, // 002B GT R3 R2 K22 + 0x240C0507, // 002B GT R3 R2 K7 0x780E0001, // 002C JMPF R3 #002F - 0x8C0C014E, // 002D GETMET R3 R0 K78 + 0x8C0C014F, // 002D GETMET R3 R0 K79 0x7C0C0200, // 002E CALL R3 1 0x80000000, // 002F RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h index d39dc513b..0fd88e256 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h @@ -48,45 +48,45 @@ static const bvalue be_ktab_class_Matter_HTTP_remote[85] = { /* K40 */ be_nested_str_weak(rtc_utc), /* K41 */ be_nested_str_weak(payload), /* K42 */ be_nested_str_weak(nil), - /* K43 */ be_nested_str_weak(_X2E_X2E_X2E), - /* K44 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), - /* K45 */ be_nested_str_weak(millis), - /* K46 */ be_nested_str_weak(time_start), - /* K47 */ be_nested_str_weak(dispatch_cb), - /* K48 */ be_nested_str_weak(http_status), - /* K49 */ be_nested_str_weak(string), - /* K50 */ be_nested_str_weak(webserver), - /* K51 */ be_nested_str_weak(wifi), - /* K52 */ be_nested_str_weak(up), - /* K53 */ be_nested_str_weak(eth), - /* K54 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), - /* K55 */ be_nested_str_weak(tr), - /* K56 */ be_nested_str_weak(_X20), - /* K57 */ be_nested_str_weak(_X2B), - /* K58 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K59 */ be_nested_str_weak(port), - /* K60 */ be_nested_str_weak(begin), - /* K61 */ be_nested_str_weak(device), - /* K62 */ be_nested_str_weak(save_param), - /* K63 */ be_nested_str_weak(seconds_to_dhm), - /* K64 */ be_nested_str_weak(init), - /* K65 */ be_nested_str_weak(add_schedule), - /* K66 */ be_nested_str_weak(UPDATE_TIME), - /* K67 */ be_nested_str_weak(device_is_alive), - /* K68 */ be_nested_str_weak(json), - /* K69 */ be_nested_str_weak(load), - /* K70 */ be_nested_str_weak(STATUS_PREFIX), - /* K71 */ be_const_int(1), - /* K72 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), - /* K73 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K74 */ be_nested_str_weak(begin_sync), - /* K75 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), - /* K76 */ be_const_int(0), - /* K77 */ be_nested_str_weak(time_reached), - /* K78 */ be_nested_str_weak(tcp_connected), - /* K79 */ be_nested_str_weak(probe_async), - /* K80 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), - /* K81 */ be_const_int(3), + /* K43 */ be_const_int(0), + /* K44 */ be_nested_str_weak(_X2E_X2E_X2E), + /* K45 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K46 */ be_nested_str_weak(millis), + /* K47 */ be_nested_str_weak(time_start), + /* K48 */ be_nested_str_weak(dispatch_cb), + /* K49 */ be_nested_str_weak(http_status), + /* K50 */ be_nested_str_weak(string), + /* K51 */ be_nested_str_weak(webserver), + /* K52 */ be_nested_str_weak(wifi), + /* K53 */ be_nested_str_weak(up), + /* K54 */ be_nested_str_weak(eth), + /* K55 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), + /* K56 */ be_nested_str_weak(tr), + /* K57 */ be_nested_str_weak(_X20), + /* K58 */ be_nested_str_weak(_X2B), + /* K59 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K60 */ be_nested_str_weak(port), + /* K61 */ be_nested_str_weak(begin), + /* K62 */ be_nested_str_weak(device), + /* K63 */ be_nested_str_weak(save_param), + /* K64 */ be_nested_str_weak(seconds_to_dhm), + /* K65 */ be_nested_str_weak(init), + /* K66 */ be_nested_str_weak(add_schedule), + /* K67 */ be_nested_str_weak(UPDATE_TIME), + /* K68 */ be_nested_str_weak(device_is_alive), + /* K69 */ be_nested_str_weak(json), + /* K70 */ be_nested_str_weak(load), + /* K71 */ be_nested_str_weak(STATUS_PREFIX), + /* K72 */ be_const_int(1), + /* K73 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), + /* K74 */ be_const_int(3), + /* K75 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K76 */ be_nested_str_weak(begin_sync), + /* K77 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K78 */ be_nested_str_weak(time_reached), + /* K79 */ be_nested_str_weak(tcp_connected), + /* K80 */ be_nested_str_weak(probe_async), + /* K81 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), /* K82 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), /* K83 */ be_nested_str_weak(phase), /* K84 */ be_nested_str_weak(status), @@ -477,17 +477,17 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ 0x24080403, // 0010 GT R2 R2 R3 0x780A0004, // 0011 JMPF R2 #0017 0x540A001C, // 0012 LDINT R2 29 - 0x400A0C02, // 0013 CONNECT R2 K6 R2 + 0x400A5602, // 0013 CONNECT R2 K43 R2 0x94080202, // 0014 GETIDX R2 R1 R2 - 0x0008052B, // 0015 ADD R2 R2 K43 + 0x0008052C, // 0015 ADD R2 R2 K44 0x5C040400, // 0016 MOVE R1 R2 0xB80A2200, // 0017 GETNGBL R2 K17 0x600C0018, // 0018 GETGBL R3 G24 - 0x5810002C, // 0019 LDCONST R4 K44 + 0x5810002D, // 0019 LDCONST R4 K45 0xB8164E00, // 001A GETNGBL R5 K39 - 0x8C140B2D, // 001B GETMET R5 R5 K45 + 0x8C140B2E, // 001B GETMET R5 R5 K46 0x7C140200, // 001C CALL R5 1 - 0x8818012E, // 001D GETMBR R6 R0 K46 + 0x8818012F, // 001D GETMBR R6 R0 K47 0x04140A06, // 001E SUB R5 R5 R6 0x88180113, // 001F GETMBR R6 R0 K19 0x601C000C, // 0020 GETGBL R7 G12 @@ -497,8 +497,8 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ 0x7C0C0A00, // 0024 CALL R3 5 0x58100014, // 0025 LDCONST R4 K20 0x7C080400, // 0026 CALL R2 2 - 0x8C08012F, // 0027 GETMET R2 R0 K47 - 0x88100130, // 0028 GETMBR R4 R0 K48 + 0x8C080130, // 0027 GETMET R2 R0 K48 + 0x88100131, // 0028 GETMBR R4 R0 K49 0x88140129, // 0029 GETMBR R5 R0 K41 0x7C080600, // 002A CALL R2 3 0x80000000, // 002B RET 0 @@ -525,37 +525,37 @@ be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ be_str_weak(probe_async), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA40A6200, // 0000 IMPORT R2 K49 - 0xA40E6400, // 0001 IMPORT R3 K50 + 0xA40A6400, // 0000 IMPORT R2 K50 + 0xA40E6600, // 0001 IMPORT R3 K51 0xB8124E00, // 0002 GETNGBL R4 K39 - 0x8C100933, // 0003 GETMET R4 R4 K51 + 0x8C100934, // 0003 GETMET R4 R4 K52 0x7C100200, // 0004 CALL R4 1 - 0x94100934, // 0005 GETIDX R4 R4 K52 + 0x94100935, // 0005 GETIDX R4 R4 K53 0x74120006, // 0006 JMPT R4 #000E 0xB8124E00, // 0007 GETNGBL R4 K39 - 0x8C100935, // 0008 GETMET R4 R4 K53 + 0x8C100936, // 0008 GETMET R4 R4 K54 0x7C100200, // 0009 CALL R4 1 - 0x94100934, // 000A GETIDX R4 R4 K52 + 0x94100935, // 000A GETIDX R4 R4 K53 0x74120001, // 000B JMPT R4 #000E 0x4C100000, // 000C LDNIL R4 0x80040800, // 000D RET 1 R4 0x90021201, // 000E SETMBR R0 K9 R1 - 0x8C100537, // 000F GETMET R4 R2 K55 + 0x8C100538, // 000F GETMET R4 R2 K56 0x5C180200, // 0010 MOVE R6 R1 - 0x581C0038, // 0011 LDCONST R7 K56 - 0x58200039, // 0012 LDCONST R8 K57 + 0x581C0039, // 0011 LDCONST R7 K57 + 0x5820003A, // 0012 LDCONST R8 K58 0x7C100800, // 0013 CALL R4 4 - 0x00126C04, // 0014 ADD R4 K54 R4 + 0x00126E04, // 0014 ADD R4 K55 R4 0xB8162200, // 0015 GETNGBL R5 K17 0x60180018, // 0016 GETGBL R6 G24 - 0x581C003A, // 0017 LDCONST R7 K58 + 0x581C003B, // 0017 LDCONST R7 K59 0x88200113, // 0018 GETMBR R8 R0 K19 - 0x8824013B, // 0019 GETMBR R9 R0 K59 + 0x8824013C, // 0019 GETMBR R9 R0 K60 0x5C280800, // 001A MOVE R10 R4 0x7C180800, // 001B CALL R6 4 0x541E0003, // 001C LDINT R7 4 0x7C140400, // 001D CALL R5 2 - 0x8C14013C, // 001E GETMET R5 R0 K60 + 0x8C14013D, // 001E GETMET R5 R0 K61 0x5C1C0800, // 001F MOVE R7 R4 0x7C140400, // 0020 CALL R5 2 0x80000000, // 0021 RET 0 @@ -582,8 +582,8 @@ be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ be_str_weak(info_changed), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8804013D, // 0000 GETMBR R1 R0 K61 - 0x8C04033E, // 0001 GETMET R1 R1 K62 + 0x8804013E, // 0000 GETMBR R1 R0 K62 + 0x8C04033F, // 0001 GETMET R1 R1 K63 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -609,7 +609,7 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ be_str_weak(web_last_seen), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xA4066400, // 0000 IMPORT R1 K50 + 0xA4066600, // 0000 IMPORT R1 K51 0x5409FFFE, // 0001 LDINT R2 -1 0x880C0126, // 0002 GETMBR R3 R0 K38 0x4C100000, // 0003 LDNIL R4 @@ -622,7 +622,7 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ 0x040C0604, // 000A SUB R3 R3 R4 0x5C080600, // 000B MOVE R2 R3 0xB80E0600, // 000C GETNGBL R3 K3 - 0x8C0C073F, // 000D GETMET R3 R3 K63 + 0x8C0C0740, // 000D GETMET R3 R3 K64 0x5C140400, // 000E MOVE R5 R2 0x7C0C0400, // 000F CALL R3 2 0x80040600, // 0010 RET 1 R3 @@ -740,7 +740,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x90027A01, // 0000 SETMBR R0 K61 R1 + 0x90027C01, // 0000 SETMBR R0 K62 R1 0x60140013, // 0001 GETGBL R5 G19 0x7C140000, // 0002 CALL R5 0 0x90020005, // 0003 SETMBR R0 K0 R5 @@ -757,7 +757,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ 0x60140003, // 000E GETGBL R5 G3 0x5C180000, // 000F MOVE R6 R0 0x7C140200, // 0010 CALL R5 1 - 0x8C140B40, // 0011 GETMET R5 R5 K64 + 0x8C140B41, // 0011 GETMET R5 R5 K65 0x5C1C0400, // 0012 MOVE R7 R2 0x5422004F, // 0013 LDINT R8 80 0x5C240600, // 0014 MOVE R9 R3 @@ -766,21 +766,21 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ 0x60140013, // 0017 GETGBL R5 G19 0x7C140000, // 0018 CALL R5 0 0x90021605, // 0019 SETMBR R0 K11 R5 - 0x8814013D, // 001A GETMBR R5 R0 K61 + 0x8814013E, // 001A GETMBR R5 R0 K62 0x7816000E, // 001B JMPF R5 #002B - 0x8C140141, // 001C GETMET R5 R0 K65 + 0x8C140142, // 001C GETMET R5 R0 K66 0x881C0116, // 001D GETMBR R7 R0 K22 - 0x88200142, // 001E GETMBR R8 R0 K66 + 0x88200143, // 001E GETMBR R8 R0 K67 0x84240000, // 001F CLOSURE R9 P0 0x7C140800, // 0020 CALL R5 4 - 0x8C140141, // 0021 GETMET R5 R0 K65 + 0x8C140142, // 0021 GETMET R5 R0 K66 0x881C011F, // 0022 GETMBR R7 R0 K31 - 0x88200142, // 0023 GETMBR R8 R0 K66 + 0x88200143, // 0023 GETMBR R8 R0 K67 0x84240001, // 0024 CLOSURE R9 P1 0x7C140800, // 0025 CALL R5 4 - 0x8C140141, // 0026 GETMET R5 R0 K65 + 0x8C140142, // 0026 GETMET R5 R0 K66 0x881C0123, // 0027 GETMBR R7 R0 K35 - 0x88200142, // 0028 GETMBR R8 R0 K66 + 0x88200143, // 0028 GETMBR R8 R0 K67 0x84240002, // 0029 CLOSURE R9 P2 0x7C140800, // 002A CALL R5 4 0xA0000000, // 002B CLOSE R0 @@ -850,17 +850,17 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x781A0034, // 0002 JMPF R6 #0038 0x24180306, // 0003 GT R6 R1 K6 0x781A0032, // 0004 JMPF R6 #0038 - 0x8C180143, // 0005 GETMET R6 R0 K67 + 0x8C180144, // 0005 GETMET R6 R0 K68 0x50200200, // 0006 LDBOOL R8 1 0 0x7C180400, // 0007 CALL R6 2 0x5C180400, // 0008 MOVE R6 R2 0x601C0004, // 0009 GETGBL R7 G4 0x5C200C00, // 000A MOVE R8 R6 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0F31, // 000C EQ R7 R7 K49 + 0x1C1C0F32, // 000C EQ R7 R7 K50 0x781E0004, // 000D JMPF R7 #0013 - 0xA41E8800, // 000E IMPORT R7 K68 - 0x8C200F45, // 000F GETMET R8 R7 K69 + 0xA41E8A00, // 000E IMPORT R7 K69 + 0x8C200F46, // 000F GETMET R8 R7 K70 0x5C280C00, // 0010 MOVE R10 R6 0x7C200400, // 0011 CALL R8 2 0x5C181000, // 0012 MOVE R6 R8 @@ -869,7 +869,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x20200C08, // 0015 NE R8 R6 R8 0x78220019, // 0016 JMPF R8 #0031 0x58200006, // 0017 LDCONST R8 K6 - 0x88240146, // 0018 GETMBR R9 R0 K70 + 0x88240147, // 0018 GETMBR R9 R0 K71 0x6028000C, // 0019 GETGBL R10 G12 0x5C2C1200, // 001A MOVE R11 R9 0x7C280200, // 001B CALL R10 1 @@ -886,7 +886,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x94180C0A, // 0026 GETIDX R6 R6 R10 0x5C1C1000, // 0027 MOVE R7 R8 0x70020001, // 0028 JMP #002B - 0x00201147, // 0029 ADD R8 R8 K71 + 0x00201148, // 0029 ADD R8 R8 K72 0x7001FFED, // 002A JMP #0019 0x5C280A00, // 002B MOVE R10 R5 0x5C2C0800, // 002C MOVE R11 R4 @@ -896,10 +896,10 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x70020006, // 0030 JMP #0038 0xB8222200, // 0031 GETNGBL R8 K17 0x60240018, // 0032 GETGBL R9 G24 - 0x58280048, // 0033 LDCONST R10 K72 + 0x58280049, // 0033 LDCONST R10 K73 0x5C2C0400, // 0034 MOVE R11 R2 0x7C240400, // 0035 CALL R9 2 - 0x58280014, // 0036 LDCONST R10 K20 + 0x5828004A, // 0036 LDCONST R10 K74 0x7C200400, // 0037 CALL R8 2 0x80000000, // 0038 RET 0 }) @@ -925,33 +925,33 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ be_str_weak(call_sync), &be_const_str_solidified, ( &(const binstruction[70]) { /* code */ - 0xA40E6200, // 0000 IMPORT R3 K49 - 0xA4126400, // 0001 IMPORT R4 K50 + 0xA40E6400, // 0000 IMPORT R3 K50 + 0xA4126600, // 0001 IMPORT R4 K51 0xB8164E00, // 0002 GETNGBL R5 K39 - 0x8C140B33, // 0003 GETMET R5 R5 K51 + 0x8C140B34, // 0003 GETMET R5 R5 K52 0x7C140200, // 0004 CALL R5 1 - 0x94140B34, // 0005 GETIDX R5 R5 K52 + 0x94140B35, // 0005 GETIDX R5 R5 K53 0x74160006, // 0006 JMPT R5 #000E 0xB8164E00, // 0007 GETNGBL R5 K39 - 0x8C140B35, // 0008 GETMET R5 R5 K53 + 0x8C140B36, // 0008 GETMET R5 R5 K54 0x7C140200, // 0009 CALL R5 1 - 0x94140B34, // 000A GETIDX R5 R5 K52 + 0x94140B35, // 000A GETIDX R5 R5 K53 0x74160001, // 000B JMPT R5 #000E 0x4C140000, // 000C LDNIL R5 0x80040A00, // 000D RET 1 R5 0x4C140000, // 000E LDNIL R5 0x90021205, // 000F SETMBR R0 K9 R5 - 0x8C140737, // 0010 GETMET R5 R3 K55 + 0x8C140738, // 0010 GETMET R5 R3 K56 0x5C1C0200, // 0011 MOVE R7 R1 - 0x58200038, // 0012 LDCONST R8 K56 - 0x58240039, // 0013 LDCONST R9 K57 + 0x58200039, // 0012 LDCONST R8 K57 + 0x5824003A, // 0013 LDCONST R9 K58 0x7C140800, // 0014 CALL R5 4 - 0x00166C05, // 0015 ADD R5 K54 R5 + 0x00166E05, // 0015 ADD R5 K55 R5 0xB81A2200, // 0016 GETNGBL R6 K17 0x601C0018, // 0017 GETGBL R7 G24 - 0x58200049, // 0018 LDCONST R8 K73 + 0x5820004B, // 0018 LDCONST R8 K75 0x88240113, // 0019 GETMBR R9 R0 K19 - 0x8828013B, // 001A GETMBR R10 R0 K59 + 0x8828013C, // 001A GETMBR R10 R0 K60 0x5C2C0A00, // 001B MOVE R11 R5 0x7C1C0800, // 001C CALL R7 4 0x54220003, // 001D LDINT R8 4 @@ -959,7 +959,7 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0x60180003, // 001F GETGBL R6 G3 0x5C1C0000, // 0020 MOVE R7 R0 0x7C180200, // 0021 CALL R6 1 - 0x8C180D4A, // 0022 GETMET R6 R6 K74 + 0x8C180D4C, // 0022 GETMET R6 R6 K76 0x5C200A00, // 0023 MOVE R8 R5 0x5C240400, // 0024 MOVE R9 R2 0x7C180600, // 0025 CALL R6 3 @@ -974,17 +974,17 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0x24201009, // 002E GT R8 R8 R9 0x78220004, // 002F JMPF R8 #0035 0x5422001C, // 0030 LDINT R8 29 - 0x40220C08, // 0031 CONNECT R8 K6 R8 + 0x40225608, // 0031 CONNECT R8 K43 R8 0x94200E08, // 0032 GETIDX R8 R7 R8 - 0x0020112B, // 0033 ADD R8 R8 K43 + 0x0020112C, // 0033 ADD R8 R8 K44 0x5C1C1000, // 0034 MOVE R7 R8 0xB8222200, // 0035 GETNGBL R8 K17 0x60240018, // 0036 GETGBL R9 G24 - 0x5828004B, // 0037 LDCONST R10 K75 + 0x5828004D, // 0037 LDCONST R10 K77 0xB82E4E00, // 0038 GETNGBL R11 K39 - 0x8C2C172D, // 0039 GETMET R11 R11 K45 + 0x8C2C172E, // 0039 GETMET R11 R11 K46 0x7C2C0200, // 003A CALL R11 1 - 0x8830012E, // 003B GETMBR R12 R0 K46 + 0x8830012F, // 003B GETMBR R12 R0 K47 0x042C160C, // 003C SUB R11 R11 R12 0x88300113, // 003D GETMBR R12 R0 K19 0x6034000C, // 003E GETGBL R13 G12 @@ -1029,7 +1029,7 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0x7C0C0000, // 0008 CALL R3 0 0x88100102, // 0009 GETMBR R4 R0 K2 0x94100803, // 000A GETIDX R4 R4 R3 - 0x1C10094C, // 000B EQ R4 R4 K76 + 0x1C10092B, // 000B EQ R4 R4 K43 0x78120001, // 000C JMPF R4 #000F 0x5C040600, // 000D MOVE R1 R3 0x70020000, // 000E JMP #0010 @@ -1051,7 +1051,7 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0x5C0C0400, // 001E MOVE R3 R2 0x7C0C0000, // 001F CALL R3 0 0xB8124E00, // 0020 GETNGBL R4 K39 - 0x8C10094D, // 0021 GETMET R4 R4 K77 + 0x8C10094E, // 0021 GETMET R4 R4 K78 0x88180102, // 0022 GETMBR R6 R0 K2 0x94180C03, // 0023 GETIDX R6 R6 R3 0x7C100400, // 0024 CALL R4 2 @@ -1068,19 +1068,19 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0x1C080202, // 002F EQ R2 R1 R2 0x780A0000, // 0030 JMPF R2 #0032 0x80000400, // 0031 RET 0 - 0x8808014E, // 0032 GETMBR R2 R0 K78 + 0x8808014F, // 0032 GETMBR R2 R0 K79 0x780A0002, // 0033 JMPF R2 #0037 0x88080102, // 0034 GETMBR R2 R0 K2 - 0x9808034C, // 0035 SETIDX R2 R1 K76 + 0x9808032B, // 0035 SETIDX R2 R1 K43 0x80000400, // 0036 RET 0 0x88080102, // 0037 GETMBR R2 R0 K2 0xB80E4E00, // 0038 GETNGBL R3 K39 - 0x8C0C072D, // 0039 GETMET R3 R3 K45 + 0x8C0C072E, // 0039 GETMET R3 R3 K46 0x88140100, // 003A GETMBR R5 R0 K0 0x94140A01, // 003B GETIDX R5 R5 R1 0x7C0C0400, // 003C CALL R3 2 0x98080203, // 003D SETIDX R2 R1 R3 - 0x8C08014F, // 003E GETMET R2 R0 K79 + 0x8C080150, // 003E GETMET R2 R0 K80 0x5C100200, // 003F MOVE R4 R1 0x7C080400, // 0040 CALL R2 2 0x80000000, // 0041 RET 0 @@ -1113,11 +1113,11 @@ be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 0xB8062200, // 0005 GETNGBL R1 K17 - 0x58080050, // 0006 LDCONST R2 K80 - 0x580C0051, // 0007 LDCONST R3 K81 + 0x58080051, // 0006 LDCONST R2 K81 + 0x580C0014, // 0007 LDCONST R3 K20 0x7C040400, // 0008 CALL R1 2 - 0x8C04012F, // 0009 GETMET R1 R0 K47 - 0x880C0130, // 000A GETMBR R3 R0 K48 + 0x8C040130, // 0009 GETMET R1 R0 K48 + 0x880C0131, // 000A GETMBR R3 R0 K49 0x4C100000, // 000B LDNIL R4 0x7C040600, // 000C CALL R1 3 0x80000000, // 000D RET 0 @@ -1178,7 +1178,7 @@ be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ 0xB8062200, // 0005 GETNGBL R1 K17 0x60080018, // 0006 GETGBL R2 G24 0x580C0052, // 0007 LDCONST R3 K82 - 0x88100130, // 0008 GETMBR R4 R0 K48 + 0x88100131, // 0008 GETMBR R4 R0 K49 0x88140153, // 0009 GETMBR R5 R0 K83 0x88180154, // 000A GETMBR R6 R0 K84 0x601C000C, // 000B GETGBL R7 G12 @@ -1187,8 +1187,8 @@ be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ 0x7C080A00, // 000E CALL R2 5 0x580C0014, // 000F LDCONST R3 K20 0x7C040400, // 0010 CALL R1 2 - 0x8C04012F, // 0011 GETMET R1 R0 K47 - 0x880C0130, // 0012 GETMBR R3 R0 K48 + 0x8C040130, // 0011 GETMET R1 R0 K48 + 0x880C0131, // 0012 GETMBR R3 R0 K49 0x4C100000, // 0013 LDNIL R4 0x7C040600, // 0014 CALL R1 3 0x80000000, // 0015 RET 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index ea9ff59fa..18fd0c955 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_IM; -// compact class 'Matter_IM' ktab size: 206, total: 507 (saved 2408 bytes) -static const bvalue be_ktab_class_Matter_IM[206] = { +// compact class 'Matter_IM' ktab size: 208, total: 507 (saved 2392 bytes) +static const bvalue be_ktab_class_Matter_IM[208] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(WriteRequestMessage), /* K2 */ be_nested_str_weak(from_TLV), @@ -51,167 +51,169 @@ static const bvalue be_ktab_class_Matter_IM[206] = { /* K42 */ be_const_int(1), /* K43 */ be_const_int(2), /* K44 */ be_const_int(355795236), - /* K45 */ be_nested_str_weak(path2raw), - /* K46 */ be_nested_str_weak(tag_sub), - /* K47 */ be_nested_str_weak(tlv2raw), - /* K48 */ be_nested_str_weak(ReadRequestMessage), - /* K49 */ be_nested_str_weak(fabric_filtered), - /* K50 */ be_nested_str_weak(attributes_requests), - /* K51 */ be_nested_str_weak(updates), - /* K52 */ be_nested_str_weak(AttributePathIB), - /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K54 */ be_nested_str_weak(local_session_id), - /* K55 */ be_nested_str_weak(subscription_id), - /* K56 */ be_nested_str_weak(is_keep_alive), - /* K57 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K58 */ be_nested_str_weak(update_event_generator_array), - /* K59 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), - /* K60 */ be_nested_str_weak(_message_handler), - /* K61 */ be_nested_str_weak(send_enqueued), - /* K62 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), - /* K63 */ be_nested_str_weak(IM_ReportData_Pull), - /* K64 */ be_const_int(0), - /* K65 */ be_const_int(1), - /* K66 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K67 */ be_nested_str_weak(TimedRequestMessage), - /* K68 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K69 */ be_nested_str_weak(timeout), - /* K70 */ be_nested_str_weak(send_status), - /* K71 */ be_nested_str_weak(subs_shop), - /* K72 */ be_nested_str_weak(every_50ms), - /* K73 */ be_nested_str_weak(InvokeRequestMessage), - /* K74 */ be_nested_str_weak(invoke_requests), - /* K75 */ be_nested_str_weak(InvokeResponseMessage), - /* K76 */ be_nested_str_weak(invoke_responses), - /* K77 */ be_nested_str_weak(command_path), - /* K78 */ be_nested_str_weak(command), - /* K79 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K80 */ be_nested_str_weak(get_command_name), - /* K81 */ be_nested_str_weak(invoke_request), - /* K82 */ be_nested_str_weak(command_fields), - /* K83 */ be_nested_str_weak(_X28), - /* K84 */ be_nested_str_weak(_X29_X20), - /* K85 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K86 */ be_nested_str_weak(invokeresponse2raw), - /* K87 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K88 */ be_nested_str_weak(exchange_id), - /* K89 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K90 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K91 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K92 */ be_const_int(0), - /* K93 */ be_nested_str_weak(IM_InvokeResponse), - /* K94 */ be_nested_str_weak(event_requests), - /* K95 */ be_nested_str_weak(get_node_id), - /* K96 */ be_nested_str_weak(parse_event_filters_min_no), - /* K97 */ be_nested_str_weak(event_filters), - /* K98 */ be_nested_str_weak(EventGenerator), - /* K99 */ be_nested_str_weak(event), - /* K100 */ be_nested_str_weak(get_event_name), - /* K101 */ be_nested_str_weak(_X2502X), - /* K102 */ be_nested_str_weak(_X2A_X2A), - /* K103 */ be_nested_str_weak(_X2504X), - /* K104 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), - /* K105 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), - /* K106 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), - /* K107 */ be_nested_str_weak(finished), - /* K108 */ be_nested_str_weak(ready), - /* K109 */ be_nested_str_weak(send_im), - /* K110 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - /* K111 */ be_nested_str_weak(resp), - /* K112 */ be_nested_str_weak(SubscribeRequestMessage), - /* K113 */ be_nested_str_weak(keep_subscriptions), - /* K114 */ be_nested_str_weak(remove_by_session), - /* K115 */ be_nested_str_weak(new_subscription), - /* K116 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), - /* K117 */ be_nested_str_weak(concat), - /* K118 */ be_nested_str_weak(_X20), - /* K119 */ be_nested_str_weak(min_interval), - /* K120 */ be_nested_str_weak(max_interval), - /* K121 */ be_nested_str_weak(set_event_generator_or_arr), - /* K122 */ be_nested_str_weak(IM_SubscribeResponse_Pull), - /* K123 */ be_nested_str_weak(send_encrypted_ack), - /* K124 */ be_nested_str_weak(time_reached), - /* K125 */ be_nested_str_weak(expiration), - /* K126 */ be_nested_str_weak(reached_timeout), - /* K127 */ be_nested_str_weak(remove), - /* K128 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K129 */ be_nested_str_weak(ack_received), - /* K130 */ be_nested_str_weak(get_exchangeid), - /* K131 */ be_nested_str_weak(TLV), - /* K132 */ be_nested_str_weak(AttributeStatusIB), - /* K133 */ be_nested_str_weak(StatusIB), - /* K134 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K135 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), - /* K136 */ be_nested_str_weak(IM_Subscription_Shop), - /* K137 */ be_nested_str_weak(read_request_solo), - /* K138 */ be_nested_str_weak(ReadRequestMessage_solo), - /* K139 */ be_nested_str_weak(invoke_request_solo), - /* K140 */ be_nested_str_weak(InvokeRequestMessage_solo), - /* K141 */ be_nested_str_weak(tlv_solo), - /* K142 */ be_nested_str_weak(Matter_TLV_item), - /* K143 */ be_nested_str_weak(expire_sendqueue), - /* K144 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K145 */ be_const_int(354943030), - /* K146 */ be_const_int(405077761), - /* K147 */ be_nested_str_weak(build_response), - /* K148 */ be_nested_str_weak(message_handler), - /* K149 */ be_nested_str_weak(raw), - /* K150 */ be_nested_str_weak(clear), - /* K151 */ be_nested_str_weak(encode_frame), - /* K152 */ be_nested_str_weak(encrypt), - /* K153 */ be_nested_str_weak(send_response_frame), - /* K154 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), - /* K155 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K156 */ be_nested_str_weak(resolve_attribute_read_solo), - /* K157 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K158 */ be_nested_str_weak(read_attribute), - /* K159 */ be_nested_str_weak(is_list), - /* K160 */ be_nested_str_weak(is_array), - /* K161 */ be_nested_str_weak(encode_len), - /* K162 */ be_nested_str_weak(MAX_MESSAGE), - /* K163 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), - /* K164 */ be_nested_str_weak(parse), - /* K165 */ be_nested_str_weak(app_payload_idx), - /* K166 */ be_nested_str_weak(process_read_request_pull), - /* K167 */ be_nested_str_weak(attributedata2raw), - /* K168 */ be_const_int(405077761), - /* K169 */ be_nested_str_weak(attributestatus2raw), - /* K170 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), - /* K171 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), - /* K172 */ be_nested_str_weak(message_counter), - /* K173 */ be_nested_str_weak(ack_message_counter), - /* K174 */ be_nested_str_weak(to_str_val), - /* K175 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K176 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K177 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), - /* K178 */ be_const_class(be_class_Matter_IM), - /* K179 */ be_nested_str_weak(int64), - /* K180 */ be_nested_str_weak(toint64), - /* K181 */ be_nested_str_weak(node), - /* K182 */ be_nested_str_weak(tobytes), - /* K183 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), - /* K184 */ be_nested_str_weak(tohex), - /* K185 */ be_nested_str_weak(event_min), - /* K186 */ be_nested_str_weak(findsubval), - /* K187 */ be_nested_str_weak(status_ok_received), - /* K188 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K189 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K190 */ be_nested_str_weak(status_error_received), - /* K191 */ be_nested_str_weak(Matter_TLV_array), - /* K192 */ be_nested_str_weak(val), - /* K193 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K194 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K195 */ be_nested_str_weak(IM_Status), - /* K196 */ be_nested_str_weak(opcode), - /* K197 */ be_nested_str_weak(from_raw), - /* K198 */ be_nested_str_weak(process_read_request_solo), - /* K199 */ be_nested_str_weak(process_invoke_request_solo), - /* K200 */ be_nested_str_weak(process_status_response), - /* K201 */ be_nested_str_weak(send_ack_now), - /* K202 */ be_nested_str_weak(subscribe_request), - /* K203 */ be_nested_str_weak(process_write_request), - /* K204 */ be_nested_str_weak(process_invoke_request), - /* K205 */ be_nested_str_weak(process_timed_request), + /* K45 */ be_const_int(1), + /* K46 */ be_nested_str_weak(path2raw), + /* K47 */ be_nested_str_weak(tag_sub), + /* K48 */ be_const_int(2), + /* K49 */ be_nested_str_weak(tlv2raw), + /* K50 */ be_nested_str_weak(ReadRequestMessage), + /* K51 */ be_nested_str_weak(fabric_filtered), + /* K52 */ be_nested_str_weak(attributes_requests), + /* K53 */ be_nested_str_weak(updates), + /* K54 */ be_nested_str_weak(AttributePathIB), + /* K55 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K56 */ be_nested_str_weak(local_session_id), + /* K57 */ be_nested_str_weak(subscription_id), + /* K58 */ be_nested_str_weak(is_keep_alive), + /* K59 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K60 */ be_nested_str_weak(update_event_generator_array), + /* K61 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), + /* K62 */ be_nested_str_weak(_message_handler), + /* K63 */ be_nested_str_weak(send_enqueued), + /* K64 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K65 */ be_nested_str_weak(IM_ReportData_Pull), + /* K66 */ be_const_int(0), + /* K67 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K68 */ be_nested_str_weak(TimedRequestMessage), + /* K69 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K70 */ be_nested_str_weak(timeout), + /* K71 */ be_nested_str_weak(send_status), + /* K72 */ be_nested_str_weak(subs_shop), + /* K73 */ be_nested_str_weak(every_50ms), + /* K74 */ be_nested_str_weak(InvokeRequestMessage), + /* K75 */ be_nested_str_weak(invoke_requests), + /* K76 */ be_nested_str_weak(InvokeResponseMessage), + /* K77 */ be_nested_str_weak(invoke_responses), + /* K78 */ be_nested_str_weak(command_path), + /* K79 */ be_nested_str_weak(command), + /* K80 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K81 */ be_nested_str_weak(get_command_name), + /* K82 */ be_nested_str_weak(invoke_request), + /* K83 */ be_nested_str_weak(command_fields), + /* K84 */ be_nested_str_weak(_X28), + /* K85 */ be_nested_str_weak(_X29_X20), + /* K86 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K87 */ be_nested_str_weak(invokeresponse2raw), + /* K88 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), + /* K89 */ be_nested_str_weak(exchange_id), + /* K90 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K91 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K92 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K93 */ be_const_int(0), + /* K94 */ be_nested_str_weak(IM_InvokeResponse), + /* K95 */ be_nested_str_weak(event_requests), + /* K96 */ be_nested_str_weak(get_node_id), + /* K97 */ be_const_int(1), + /* K98 */ be_nested_str_weak(parse_event_filters_min_no), + /* K99 */ be_nested_str_weak(event_filters), + /* K100 */ be_nested_str_weak(EventGenerator), + /* K101 */ be_nested_str_weak(event), + /* K102 */ be_nested_str_weak(get_event_name), + /* K103 */ be_nested_str_weak(_X2502X), + /* K104 */ be_nested_str_weak(_X2A_X2A), + /* K105 */ be_nested_str_weak(_X2504X), + /* K106 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K107 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), + /* K108 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), + /* K109 */ be_const_int(0), + /* K110 */ be_nested_str_weak(finished), + /* K111 */ be_nested_str_weak(ready), + /* K112 */ be_nested_str_weak(send_im), + /* K113 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K114 */ be_nested_str_weak(resp), + /* K115 */ be_nested_str_weak(SubscribeRequestMessage), + /* K116 */ be_nested_str_weak(keep_subscriptions), + /* K117 */ be_nested_str_weak(remove_by_session), + /* K118 */ be_nested_str_weak(new_subscription), + /* K119 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), + /* K120 */ be_nested_str_weak(concat), + /* K121 */ be_nested_str_weak(_X20), + /* K122 */ be_nested_str_weak(min_interval), + /* K123 */ be_nested_str_weak(max_interval), + /* K124 */ be_nested_str_weak(set_event_generator_or_arr), + /* K125 */ be_nested_str_weak(IM_SubscribeResponse_Pull), + /* K126 */ be_nested_str_weak(send_encrypted_ack), + /* K127 */ be_nested_str_weak(time_reached), + /* K128 */ be_nested_str_weak(expiration), + /* K129 */ be_nested_str_weak(reached_timeout), + /* K130 */ be_nested_str_weak(remove), + /* K131 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K132 */ be_nested_str_weak(ack_received), + /* K133 */ be_nested_str_weak(get_exchangeid), + /* K134 */ be_nested_str_weak(TLV), + /* K135 */ be_nested_str_weak(AttributeStatusIB), + /* K136 */ be_nested_str_weak(StatusIB), + /* K137 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K138 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), + /* K139 */ be_nested_str_weak(IM_Subscription_Shop), + /* K140 */ be_nested_str_weak(read_request_solo), + /* K141 */ be_nested_str_weak(ReadRequestMessage_solo), + /* K142 */ be_nested_str_weak(invoke_request_solo), + /* K143 */ be_nested_str_weak(InvokeRequestMessage_solo), + /* K144 */ be_nested_str_weak(tlv_solo), + /* K145 */ be_nested_str_weak(Matter_TLV_item), + /* K146 */ be_nested_str_weak(expire_sendqueue), + /* K147 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K148 */ be_const_int(354943030), + /* K149 */ be_const_int(405077761), + /* K150 */ be_nested_str_weak(build_response), + /* K151 */ be_nested_str_weak(message_handler), + /* K152 */ be_nested_str_weak(raw), + /* K153 */ be_nested_str_weak(clear), + /* K154 */ be_nested_str_weak(encode_frame), + /* K155 */ be_nested_str_weak(encrypt), + /* K156 */ be_nested_str_weak(send_response_frame), + /* K157 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), + /* K158 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K159 */ be_nested_str_weak(resolve_attribute_read_solo), + /* K160 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K161 */ be_nested_str_weak(read_attribute), + /* K162 */ be_nested_str_weak(is_list), + /* K163 */ be_nested_str_weak(is_array), + /* K164 */ be_nested_str_weak(encode_len), + /* K165 */ be_nested_str_weak(MAX_MESSAGE), + /* K166 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), + /* K167 */ be_nested_str_weak(parse), + /* K168 */ be_nested_str_weak(app_payload_idx), + /* K169 */ be_nested_str_weak(process_read_request_pull), + /* K170 */ be_nested_str_weak(attributedata2raw), + /* K171 */ be_nested_str_weak(attributestatus2raw), + /* K172 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), + /* K173 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), + /* K174 */ be_nested_str_weak(message_counter), + /* K175 */ be_nested_str_weak(ack_message_counter), + /* K176 */ be_nested_str_weak(to_str_val), + /* K177 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K178 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K179 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), + /* K180 */ be_const_class(be_class_Matter_IM), + /* K181 */ be_nested_str_weak(int64), + /* K182 */ be_nested_str_weak(toint64), + /* K183 */ be_nested_str_weak(node), + /* K184 */ be_nested_str_weak(tobytes), + /* K185 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), + /* K186 */ be_nested_str_weak(tohex), + /* K187 */ be_nested_str_weak(event_min), + /* K188 */ be_nested_str_weak(findsubval), + /* K189 */ be_nested_str_weak(status_ok_received), + /* K190 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K191 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K192 */ be_nested_str_weak(status_error_received), + /* K193 */ be_nested_str_weak(Matter_TLV_array), + /* K194 */ be_nested_str_weak(val), + /* K195 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K196 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K197 */ be_nested_str_weak(IM_Status), + /* K198 */ be_nested_str_weak(opcode), + /* K199 */ be_nested_str_weak(from_raw), + /* K200 */ be_nested_str_weak(process_read_request_solo), + /* K201 */ be_nested_str_weak(process_invoke_request_solo), + /* K202 */ be_nested_str_weak(process_status_response), + /* K203 */ be_nested_str_weak(send_ack_now), + /* K204 */ be_nested_str_weak(subscribe_request), + /* K205 */ be_nested_str_weak(process_write_request), + /* K206 */ be_nested_str_weak(process_invoke_request), + /* K207 */ be_nested_str_weak(process_timed_request), }; @@ -537,17 +539,17 @@ be_local_closure(class_Matter_IM_attributedata2raw, /* name */ 0x5421FFFB, // 0002 LDINT R8 -4 0x7C140600, // 0003 CALL R5 3 0x8C140329, // 0004 GETMET R5 R1 K41 - 0x581C002A, // 0005 LDCONST R7 K42 + 0x581C002D, // 0005 LDCONST R7 K45 0x5421FFFD, // 0006 LDINT R8 -2 0x7C140600, // 0007 CALL R5 3 - 0x8C14012D, // 0008 GETMET R5 R0 K45 + 0x8C14012E, // 0008 GETMET R5 R0 K46 0x5C1C0200, // 0009 MOVE R7 R1 0x5C200400, // 000A MOVE R8 R2 - 0x5824002A, // 000B LDCONST R9 K42 + 0x5824002D, // 000B LDCONST R9 K45 0x5C280800, // 000C MOVE R10 R4 0x7C140A00, // 000D CALL R5 5 - 0x900E5D2B, // 000E SETMBR R3 K46 K43 - 0x8C14072F, // 000F GETMET R5 R3 K47 + 0x900E5F30, // 000E SETMBR R3 K47 K48 + 0x8C140731, // 000F GETMET R5 R3 K49 0x5C1C0200, // 0010 MOVE R7 R1 0x7C140400, // 0011 CALL R5 2 0x8C140329, // 0012 GETMET R5 R1 K41 @@ -580,21 +582,21 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ ( &(const binstruction[64]) { /* code */ 0x88080323, // 0000 GETMBR R2 R1 K35 0xB80E0000, // 0001 GETNGBL R3 K0 - 0x8C0C0730, // 0002 GETMET R3 R3 K48 + 0x8C0C0732, // 0002 GETMET R3 R3 K50 0x7C0C0200, // 0003 CALL R3 1 0x50100000, // 0004 LDBOOL R4 0 0 - 0x900E6204, // 0005 SETMBR R3 K49 R4 + 0x900E6604, // 0005 SETMBR R3 K51 R4 0x60100012, // 0006 GETGBL R4 G18 0x7C100000, // 0007 CALL R4 0 - 0x900E6404, // 0008 SETMBR R3 K50 R4 + 0x900E6804, // 0008 SETMBR R3 K52 R4 0x60100010, // 0009 GETGBL R4 G16 - 0x88140333, // 000A GETMBR R5 R1 K51 + 0x88140335, // 000A GETMBR R5 R1 K53 0x7C100200, // 000B CALL R4 1 0xA802000F, // 000C EXBLK 0 #001D 0x5C140800, // 000D MOVE R5 R4 0x7C140000, // 000E CALL R5 0 0xB81A0000, // 000F GETNGBL R6 K0 - 0x8C180D34, // 0010 GETMET R6 R6 K52 + 0x8C180D36, // 0010 GETMET R6 R6 K54 0x7C180200, // 0011 CALL R6 1 0x881C0B12, // 0012 GETMBR R7 R5 K18 0x901A2407, // 0013 SETMBR R6 K18 R7 @@ -602,7 +604,7 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0x901A1A07, // 0015 SETMBR R6 K13 R7 0x881C0B0E, // 0016 GETMBR R7 R5 K14 0x901A1C07, // 0017 SETMBR R6 K14 R7 - 0x881C0732, // 0018 GETMBR R7 R3 K50 + 0x881C0734, // 0018 GETMBR R7 R3 K52 0x8C1C0F27, // 0019 GETMET R7 R7 K39 0x5C240C00, // 001A MOVE R9 R6 0x7C1C0400, // 001B CALL R7 2 @@ -612,23 +614,23 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0xB0080000, // 001F RAISE 2 R0 R0 0xB8122E00, // 0020 GETNGBL R4 K23 0x60140018, // 0021 GETGBL R5 G24 - 0x58180035, // 0022 LDCONST R6 K53 - 0x881C0536, // 0023 GETMBR R7 R2 K54 - 0x88200337, // 0024 GETMBR R8 R1 K55 + 0x58180037, // 0022 LDCONST R6 K55 + 0x881C0538, // 0023 GETMBR R7 R2 K56 + 0x88200339, // 0024 GETMBR R8 R1 K57 0x7C140600, // 0025 CALL R5 3 0x58180015, // 0026 LDCONST R6 K21 0x7C100400, // 0027 CALL R4 2 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90067004, // 0029 SETMBR R1 K56 R4 - 0x8C100139, // 002A GETMET R4 R0 K57 + 0x90067404, // 0029 SETMBR R1 K58 R4 + 0x8C10013B, // 002A GETMET R4 R0 K59 0x5C180600, // 002B MOVE R6 R3 0x4C1C0000, // 002C LDNIL R7 0x7C100600, // 002D CALL R4 3 - 0x8C14033A, // 002E GETMET R5 R1 K58 + 0x8C14033C, // 002E GETMET R5 R1 K60 0x7C140200, // 002F CALL R5 1 0xB81A0000, // 0030 GETNGBL R6 K0 - 0x8C180D3B, // 0031 GETMET R6 R6 K59 - 0x8820053C, // 0032 GETMBR R8 R2 K60 + 0x8C180D3D, // 0031 GETMET R6 R6 K61 + 0x8820053E, // 0032 GETMBR R8 R2 K62 0x5C240400, // 0033 MOVE R9 R2 0x5C280800, // 0034 MOVE R10 R4 0x5C2C0A00, // 0035 MOVE R11 R5 @@ -638,8 +640,8 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0x8C1C0F27, // 0039 GETMET R7 R7 K39 0x5C240C00, // 003A MOVE R9 R6 0x7C1C0400, // 003B CALL R7 2 - 0x8C1C013D, // 003C GETMET R7 R0 K61 - 0x8824053C, // 003D GETMBR R9 R2 K60 + 0x8C1C013F, // 003C GETMET R7 R0 K63 + 0x8824053E, // 003D GETMBR R9 R2 K62 0x7C1C0400, // 003E CALL R7 2 0x80000000, // 003F RET 0 }) @@ -666,23 +668,23 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0730, // 0001 GETMET R3 R3 K48 + 0x8C0C0732, // 0001 GETMET R3 R3 K50 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x8C100139, // 0006 GETMET R4 R0 K57 + 0x8C10013B, // 0006 GETMET R4 R0 K59 0x5C180600, // 0007 MOVE R6 R3 0x5C1C0200, // 0008 MOVE R7 R1 0x7C100600, // 0009 CALL R4 3 - 0x8C14013E, // 000A GETMET R5 R0 K62 + 0x8C140140, // 000A GETMET R5 R0 K64 0x5C1C0600, // 000B MOVE R7 R3 0x5C200200, // 000C MOVE R8 R1 0x7C140600, // 000D CALL R5 3 0x88180126, // 000E GETMBR R6 R0 K38 0x8C180D27, // 000F GETMET R6 R6 K39 0xB8220000, // 0010 GETNGBL R8 K0 - 0x8C20113F, // 0011 GETMET R8 R8 K63 + 0x8C201141, // 0011 GETMET R8 R8 K65 0x5C280200, // 0012 MOVE R10 R1 0x5C2C0800, // 0013 MOVE R11 R4 0x5C300A00, // 0014 MOVE R12 R5 @@ -713,25 +715,25 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na be_str_weak(process_read_or_subscribe_request_pull), &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ - 0x880C0332, // 0000 GETMBR R3 R1 K50 + 0x880C0334, // 0000 GETMBR R3 R1 K52 0x4C100000, // 0001 LDNIL R4 0x200C0604, // 0002 NE R3 R3 R4 0x780E006C, // 0003 JMPF R3 #0071 0x4C0C0000, // 0004 LDNIL R3 - 0x88100332, // 0005 GETMBR R4 R1 K50 + 0x88100334, // 0005 GETMBR R4 R1 K52 0x78120003, // 0006 JMPF R4 #000B 0x6010000C, // 0007 GETGBL R4 G12 - 0x88140332, // 0008 GETMBR R5 R1 K50 + 0x88140334, // 0008 GETMBR R5 R1 K52 0x7C100200, // 0009 CALL R4 1 0x70020000, // 000A JMP #000C - 0x58100040, // 000B LDCONST R4 K64 - 0x24140941, // 000C GT R5 R4 K65 + 0x58100042, // 000B LDCONST R4 K66 + 0x2414092D, // 000C GT R5 R4 K45 0x78160002, // 000D JMPF R5 #0011 0x60140012, // 000E GETGBL R5 G18 0x7C140000, // 000F CALL R5 0 0x5C0C0A00, // 0010 MOVE R3 R5 0x60140010, // 0011 GETGBL R5 G16 - 0x88180332, // 0012 GETMBR R6 R1 K50 + 0x88180334, // 0012 GETMBR R6 R1 K52 0x7C140200, // 0013 CALL R5 1 0xA8020057, // 0014 EXBLK 0 #006D 0x5C180A00, // 0015 MOVE R6 R5 @@ -744,9 +746,9 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x88280D12, // 001C GETMBR R10 R6 K18 0x882C0D0D, // 001D GETMBR R11 R6 K13 0x88300D0E, // 001E GETMBR R12 R6 K14 - 0x88340331, // 001F GETMBR R13 R1 K49 + 0x88340333, // 001F GETMBR R13 R1 K51 0x7C200A00, // 0020 CALL R8 5 - 0x24200941, // 0021 GT R8 R4 K65 + 0x2420092D, // 0021 GT R8 R4 K45 0x78220003, // 0022 JMPF R8 #0027 0x8C200727, // 0023 GETMET R8 R3 K39 0x5C280E00, // 0024 MOVE R10 R7 @@ -779,8 +781,8 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x90221A09, // 003F SETMBR R8 K13 R9 0x88240D0E, // 0040 GETMBR R9 R6 K14 0x90221C09, // 0041 SETMBR R8 K14 R9 - 0x88240331, // 0042 GETMBR R9 R1 K49 - 0x90226209, // 0043 SETMBR R8 K49 R9 + 0x88240333, // 0042 GETMBR R9 R1 K51 + 0x90226609, // 0043 SETMBR R8 K51 R9 0x60240008, // 0044 GETGBL R9 G8 0x5C281000, // 0045 MOVE R10 R8 0x7C240200, // 0046 CALL R9 1 @@ -799,9 +801,9 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x7C280600, // 0053 CALL R10 3 0xB82E2E00, // 0054 GETNGBL R11 K23 0x60300018, // 0055 GETGBL R12 G24 - 0x58340042, // 0056 LDCONST R13 K66 + 0x58340043, // 0056 LDCONST R13 K67 0x88380523, // 0057 GETMBR R14 R2 K35 - 0x88381D36, // 0058 GETMBR R14 R14 K54 + 0x88381D38, // 0058 GETMBR R14 R14 K56 0x782A0002, // 0059 JMPF R10 #005D 0x003E320A, // 005A ADD R15 K25 R10 0x003C1F1A, // 005B ADD R15 R15 K26 @@ -814,9 +816,9 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x70020008, // 0062 JMP #006C 0xB82A2E00, // 0063 GETNGBL R10 K23 0x602C0018, // 0064 GETGBL R11 G24 - 0x58300042, // 0065 LDCONST R12 K66 + 0x58300043, // 0065 LDCONST R12 K67 0x88340523, // 0066 GETMBR R13 R2 K35 - 0x88341B36, // 0067 GETMBR R13 R13 K54 + 0x88341B38, // 0067 GETMBR R13 R13 K56 0x5C381200, // 0068 MOVE R14 R9 0x7C2C0600, // 0069 CALL R11 3 0x58300015, // 006A LDCONST R12 K21 @@ -852,21 +854,21 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */ &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0743, // 0001 GETMET R3 R3 K67 + 0x8C0C0744, // 0001 GETMET R3 R3 K68 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0xB8122E00, // 0006 GETNGBL R4 K23 0x60140018, // 0007 GETGBL R5 G24 - 0x58180044, // 0008 LDCONST R6 K68 + 0x58180045, // 0008 LDCONST R6 K69 0x881C0323, // 0009 GETMBR R7 R1 K35 - 0x881C0F36, // 000A GETMBR R7 R7 K54 - 0x88200745, // 000B GETMBR R8 R3 K69 + 0x881C0F38, // 000A GETMBR R7 R7 K56 + 0x88200746, // 000B GETMBR R8 R3 K70 0x7C140600, // 000C CALL R5 3 0x58180015, // 000D LDCONST R6 K21 0x7C100400, // 000E CALL R4 2 - 0x8C100146, // 000F GETMET R4 R0 K70 + 0x8C100147, // 000F GETMET R4 R0 K71 0x5C180200, // 0010 MOVE R6 R1 0xB81E0000, // 0011 GETNGBL R7 K0 0x881C0F24, // 0012 GETMBR R7 R7 K36 @@ -896,8 +898,8 @@ be_local_closure(class_Matter_IM_every_50ms, /* name */ be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040147, // 0000 GETMBR R1 R0 K71 - 0x8C040348, // 0001 GETMET R1 R1 K72 + 0x88040148, // 0000 GETMBR R1 R0 K72 + 0x8C040349, // 0001 GETMET R1 R1 K73 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -928,53 +930,53 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x7C0C0200, // 0002 CALL R3 1 0x900E3E01, // 0003 SETMBR R3 K31 R1 0xB8120000, // 0004 GETNGBL R4 K0 - 0x8C100949, // 0005 GETMET R4 R4 K73 + 0x8C10094A, // 0005 GETMET R4 R4 K74 0x7C100200, // 0006 CALL R4 1 0x8C100902, // 0007 GETMET R4 R4 K2 0x5C180400, // 0008 MOVE R6 R2 0x7C100400, // 0009 CALL R4 2 - 0x8814094A, // 000A GETMBR R5 R4 K74 + 0x8814094B, // 000A GETMBR R5 R4 K75 0x4C180000, // 000B LDNIL R6 0x20140A06, // 000C NE R5 R5 R6 0x781600CE, // 000D JMPF R5 #00DD 0xB8160000, // 000E GETNGBL R5 K0 - 0x8C140B4B, // 000F GETMET R5 R5 K75 + 0x8C140B4C, // 000F GETMET R5 R5 K76 0x7C140200, // 0010 CALL R5 1 0x50180000, // 0011 LDBOOL R6 0 0 0x90160806, // 0012 SETMBR R5 K4 R6 0x60180012, // 0013 GETGBL R6 G18 0x7C180000, // 0014 CALL R6 0 - 0x90169806, // 0015 SETMBR R5 K76 R6 + 0x90169A06, // 0015 SETMBR R5 K77 R6 0x60180010, // 0016 GETGBL R6 G16 - 0x881C094A, // 0017 GETMBR R7 R4 K74 + 0x881C094B, // 0017 GETMBR R7 R4 K75 0x7C180200, // 0018 CALL R6 1 0xA80200AD, // 0019 EXBLK 0 #00C8 0x5C1C0C00, // 001A MOVE R7 R6 0x7C1C0000, // 001B CALL R7 0 - 0x88200F4D, // 001C GETMBR R8 R7 K77 + 0x88200F4E, // 001C GETMBR R8 R7 K78 0x88201112, // 001D GETMBR R8 R8 K18 0x900E2408, // 001E SETMBR R3 K18 R8 - 0x88200F4D, // 001F GETMBR R8 R7 K77 + 0x88200F4E, // 001F GETMBR R8 R7 K78 0x8820110D, // 0020 GETMBR R8 R8 K13 0x900E1A08, // 0021 SETMBR R3 K13 R8 - 0x88200F4D, // 0022 GETMBR R8 R7 K77 - 0x8820114E, // 0023 GETMBR R8 R8 K78 - 0x900E9C08, // 0024 SETMBR R3 K78 R8 + 0x88200F4E, // 0022 GETMBR R8 R7 K78 + 0x8820114F, // 0023 GETMBR R8 R8 K79 + 0x900E9E08, // 0024 SETMBR R3 K79 R8 0xB8220000, // 0025 GETNGBL R8 K0 - 0x8820114F, // 0026 GETMBR R8 R8 K79 + 0x88201150, // 0026 GETMBR R8 R8 K80 0x900E1E08, // 0027 SETMBR R3 K15 R8 0xB8220000, // 0028 GETNGBL R8 K0 - 0x8C201150, // 0029 GETMET R8 R8 K80 + 0x8C201151, // 0029 GETMET R8 R8 K81 0x8828070D, // 002A GETMBR R10 R3 K13 - 0x882C074E, // 002B GETMBR R11 R3 K78 + 0x882C074F, // 002B GETMBR R11 R3 K79 0x7C200600, // 002C CALL R8 3 0x60240008, // 002D GETGBL R9 G8 0x5C280600, // 002E MOVE R10 R3 0x7C240200, // 002F CALL R9 1 0x88280109, // 0030 GETMBR R10 R0 K9 - 0x8C281551, // 0031 GETMET R10 R10 K81 + 0x8C281552, // 0031 GETMET R10 R10 K82 0x88300323, // 0032 GETMBR R12 R1 K35 - 0x88340F52, // 0033 GETMBR R13 R7 K82 + 0x88340F53, // 0033 GETMBR R13 R7 K83 0x5C380600, // 0034 MOVE R14 R3 0x7C280800, // 0035 CALL R10 4 0x882C0717, // 0036 GETMBR R11 R3 K23 @@ -984,15 +986,15 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x602C0008, // 003A GETGBL R11 G8 0x88300717, // 003B GETMBR R12 R3 K23 0x7C2C0200, // 003C CALL R11 1 - 0x002EA60B, // 003D ADD R11 K83 R11 - 0x002C1754, // 003E ADD R11 R11 K84 + 0x002EA80B, // 003D ADD R11 K84 R11 + 0x002C1755, // 003E ADD R11 R11 K85 0x70020000, // 003F JMP #0041 0x582C001B, // 0040 LDCONST R11 K27 0xB8322E00, // 0041 GETNGBL R12 K23 0x60340018, // 0042 GETGBL R13 G24 - 0x58380055, // 0043 LDCONST R14 K85 + 0x58380056, // 0043 LDCONST R14 K86 0x883C0323, // 0044 GETMBR R15 R1 K35 - 0x883C1F36, // 0045 GETMBR R15 R15 K54 + 0x883C1F38, // 0045 GETMBR R15 R15 K56 0x5C401200, // 0046 MOVE R16 R9 0x78220001, // 0047 JMPF R8 #004A 0x5C441000, // 0048 MOVE R17 R8 @@ -1018,12 +1020,12 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0xB8360000, // 005C GETNGBL R13 K0 0x88341B24, // 005D GETMBR R13 R13 K36 0x900E1E0D, // 005E SETMBR R3 K15 R13 - 0x8C340156, // 005F GETMET R13 R0 K86 + 0x8C340157, // 005F GETMET R13 R0 K87 0x5C3C1800, // 0060 MOVE R15 R12 0x5C400600, // 0061 MOVE R16 R3 0x4C440000, // 0062 LDNIL R17 0x7C340800, // 0063 CALL R13 4 - 0x88340B4C, // 0064 GETMBR R13 R5 K76 + 0x88340B4D, // 0064 GETMBR R13 R5 K77 0x8C341B27, // 0065 GETMET R13 R13 K39 0x5C3C1800, // 0066 MOVE R15 R12 0x7C340400, // 0067 CALL R13 2 @@ -1034,10 +1036,10 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360008, // 006C JMPF R13 #0076 0xB8362E00, // 006D GETNGBL R13 K23 0x60380018, // 006E GETGBL R14 G24 - 0x583C0057, // 006F LDCONST R15 K87 + 0x583C0058, // 006F LDCONST R15 K88 0x88400323, // 0070 GETMBR R16 R1 K35 - 0x88402136, // 0071 GETMBR R16 R16 K54 - 0x88440358, // 0072 GETMBR R17 R1 K88 + 0x88402138, // 0071 GETMBR R16 R16 K56 + 0x88440359, // 0072 GETMBR R17 R1 K89 0x7C380600, // 0073 CALL R14 3 0x583C0015, // 0074 LDCONST R15 K21 0x7C340400, // 0075 CALL R13 2 @@ -1045,19 +1047,19 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x4C340000, // 0077 LDNIL R13 0x2034140D, // 0078 NE R13 R10 R13 0x78360021, // 0079 JMPF R13 #009C - 0x8C340156, // 007A GETMET R13 R0 K86 + 0x8C340157, // 007A GETMET R13 R0 K87 0x5C3C1800, // 007B MOVE R15 R12 0x5C400600, // 007C MOVE R16 R3 0x5C441400, // 007D MOVE R17 R10 0x7C340800, // 007E CALL R13 4 - 0x88340B4C, // 007F GETMBR R13 R5 K76 + 0x88340B4D, // 007F GETMBR R13 R5 K77 0x8C341B27, // 0080 GETMET R13 R13 K39 0x5C3C1800, // 0081 MOVE R15 R12 0x7C340400, // 0082 CALL R13 2 0xB8360000, // 0083 GETNGBL R13 K0 - 0x8C341B50, // 0084 GETMET R13 R13 K80 + 0x8C341B51, // 0084 GETMET R13 R13 K81 0x883C070D, // 0085 GETMBR R15 R3 K13 - 0x8840074E, // 0086 GETMBR R16 R3 K78 + 0x8840074F, // 0086 GETMBR R16 R3 K79 0x7C340600, // 0087 CALL R13 3 0x5C201A00, // 0088 MOVE R8 R13 0x5C341000, // 0089 MOVE R13 R8 @@ -1070,9 +1072,9 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360009, // 0090 JMPF R13 #009B 0xB8362E00, // 0091 GETNGBL R13 K23 0x60380018, // 0092 GETGBL R14 G24 - 0x583C0059, // 0093 LDCONST R15 K89 + 0x583C005A, // 0093 LDCONST R15 K90 0x88400323, // 0094 GETMBR R16 R1 K35 - 0x88402136, // 0095 GETMBR R16 R16 K54 + 0x88402138, // 0095 GETMBR R16 R16 K56 0x5C440600, // 0096 MOVE R17 R3 0x5C481000, // 0097 MOVE R18 R8 0x7C380800, // 0098 CALL R14 4 @@ -1083,12 +1085,12 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x4C380000, // 009D LDNIL R14 0x20341A0E, // 009E NE R13 R13 R14 0x78360018, // 009F JMPF R13 #00B9 - 0x8C340156, // 00A0 GETMET R13 R0 K86 + 0x8C340157, // 00A0 GETMET R13 R0 K87 0x5C3C1800, // 00A1 MOVE R15 R12 0x5C400600, // 00A2 MOVE R16 R3 0x4C440000, // 00A3 LDNIL R17 0x7C340800, // 00A4 CALL R13 4 - 0x88340B4C, // 00A5 GETMBR R13 R5 K76 + 0x88340B4D, // 00A5 GETMBR R13 R5 K77 0x8C341B27, // 00A6 GETMET R13 R13 K39 0x5C3C1800, // 00A7 MOVE R15 R12 0x7C340400, // 00A8 CALL R13 2 @@ -1099,11 +1101,11 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360009, // 00AD JMPF R13 #00B8 0xB8362E00, // 00AE GETNGBL R13 K23 0x60380018, // 00AF GETGBL R14 G24 - 0x583C005A, // 00B0 LDCONST R15 K90 + 0x583C005B, // 00B0 LDCONST R15 K91 0x88400323, // 00B1 GETMBR R16 R1 K35 - 0x88402136, // 00B2 GETMBR R16 R16 K54 + 0x88402138, // 00B2 GETMBR R16 R16 K56 0x8844070F, // 00B3 GETMBR R17 R3 K15 - 0x88480358, // 00B4 GETMBR R18 R1 K88 + 0x88480359, // 00B4 GETMBR R18 R1 K89 0x7C380800, // 00B5 CALL R14 4 0x583C0015, // 00B6 LDCONST R15 K21 0x7C340400, // 00B7 CALL R13 2 @@ -1115,10 +1117,10 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360008, // 00BD JMPF R13 #00C7 0xB8362E00, // 00BE GETNGBL R13 K23 0x60380018, // 00BF GETGBL R14 G24 - 0x583C005B, // 00C0 LDCONST R15 K91 + 0x583C005C, // 00C0 LDCONST R15 K92 0x88400323, // 00C1 GETMBR R16 R1 K35 - 0x88402136, // 00C2 GETMBR R16 R16 K54 - 0x88440358, // 00C3 GETMBR R17 R1 K88 + 0x88402138, // 00C2 GETMBR R16 R16 K56 + 0x88440359, // 00C3 GETMBR R17 R1 K89 0x7C380600, // 00C4 CALL R14 3 0x583C0015, // 00C5 LDCONST R15 K21 0x7C340400, // 00C6 CALL R13 2 @@ -1127,14 +1129,14 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0xAC180200, // 00C9 CATCH R6 1 0 0xB0080000, // 00CA RAISE 2 R0 R0 0x6018000C, // 00CB GETGBL R6 G12 - 0x881C0B4C, // 00CC GETMBR R7 R5 K76 + 0x881C0B4D, // 00CC GETMBR R7 R5 K77 0x7C180200, // 00CD CALL R6 1 - 0x24180D5C, // 00CE GT R6 R6 K92 + 0x24180D5D, // 00CE GT R6 R6 K93 0x781A0008, // 00CF JMPF R6 #00D9 0x88180126, // 00D0 GETMBR R6 R0 K38 0x8C180D27, // 00D1 GETMET R6 R6 K39 0xB8220000, // 00D2 GETNGBL R8 K0 - 0x8C20115D, // 00D3 GETMET R8 R8 K93 + 0x8C20115E, // 00D3 GETMET R8 R8 K94 0x5C280200, // 00D4 MOVE R10 R1 0x5C2C0A00, // 00D5 MOVE R11 R5 0x7C200600, // 00D6 CALL R8 3 @@ -1168,7 +1170,7 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, be_str_weak(process_read_or_subscribe_request_event_pull), &be_const_str_solidified, ( &(const binstruction[140]) { /* code */ - 0x880C035E, // 0000 GETMBR R3 R1 K94 + 0x880C035F, // 0000 GETMBR R3 R1 K95 0x4C100000, // 0001 LDNIL R4 0x200C0604, // 0002 NE R3 R3 R4 0x780E0085, // 0003 JMPF R3 #008A @@ -1176,45 +1178,45 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0x4C100000, // 0005 LDNIL R4 0x20100404, // 0006 NE R4 R2 R4 0x78120002, // 0007 JMPF R4 #000B - 0x8C10055F, // 0008 GETMET R4 R2 K95 + 0x8C100560, // 0008 GETMET R4 R2 K96 0x7C100200, // 0009 CALL R4 1 0x70020000, // 000A JMP #000C 0x4C100000, // 000B LDNIL R4 - 0x8814035E, // 000C GETMBR R5 R1 K94 + 0x8814035F, // 000C GETMBR R5 R1 K95 0x78160003, // 000D JMPF R5 #0012 0x6014000C, // 000E GETGBL R5 G12 - 0x8818035E, // 000F GETMBR R6 R1 K94 + 0x8818035F, // 000F GETMBR R6 R1 K95 0x7C140200, // 0010 CALL R5 1 0x70020000, // 0011 JMP #0013 - 0x5814005C, // 0012 LDCONST R5 K92 - 0x24180B2A, // 0013 GT R6 R5 K42 + 0x58140042, // 0012 LDCONST R5 K66 + 0x24180B61, // 0013 GT R6 R5 K97 0x781A0002, // 0014 JMPF R6 #0018 0x60180012, // 0015 GETGBL R6 G18 0x7C180000, // 0016 CALL R6 0 0x5C0C0C00, // 0017 MOVE R3 R6 - 0x8C180160, // 0018 GETMET R6 R0 K96 - 0x88200361, // 0019 GETMBR R8 R1 K97 + 0x8C180162, // 0018 GETMET R6 R0 K98 + 0x88200363, // 0019 GETMBR R8 R1 K99 0x5C240800, // 001A MOVE R9 R4 0x7C180600, // 001B CALL R6 3 - 0x881C035E, // 001C GETMBR R7 R1 K94 + 0x881C035F, // 001C GETMBR R7 R1 K95 0x781E006A, // 001D JMPF R7 #0089 0x601C0010, // 001E GETGBL R7 G16 - 0x8820035E, // 001F GETMBR R8 R1 K94 + 0x8820035F, // 001F GETMBR R8 R1 K95 0x7C1C0200, // 0020 CALL R7 1 0xA8020063, // 0021 EXBLK 0 #0086 0x5C200E00, // 0022 MOVE R8 R7 0x7C200000, // 0023 CALL R8 0 0xB8260000, // 0024 GETNGBL R9 K0 - 0x8C241362, // 0025 GETMET R9 R9 K98 + 0x8C241364, // 0025 GETMET R9 R9 K100 0x882C0109, // 0026 GETMBR R11 R0 K9 0x7C240400, // 0027 CALL R9 2 0x8C28131C, // 0028 GETMET R10 R9 K28 0x88301112, // 0029 GETMBR R12 R8 K18 0x8834110D, // 002A GETMBR R13 R8 K13 - 0x88381163, // 002B GETMBR R14 R8 K99 + 0x88381165, // 002B GETMBR R14 R8 K101 0x5C3C0C00, // 002C MOVE R15 R6 0x7C280A00, // 002D CALL R10 5 - 0x24280B2A, // 002E GT R10 R5 K42 + 0x24280B61, // 002E GT R10 R5 K97 0x782A0003, // 002F JMPF R10 #0034 0x8C280727, // 0030 GETMET R10 R3 K39 0x5C301200, // 0031 MOVE R12 R9 @@ -1231,21 +1233,21 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0x4C300000, // 003C LDNIL R12 0x202C160C, // 003D NE R11 R11 R12 0x782E0011, // 003E JMPF R11 #0051 - 0x882C1163, // 003F GETMBR R11 R8 K99 + 0x882C1165, // 003F GETMBR R11 R8 K101 0x4C300000, // 0040 LDNIL R12 0x202C160C, // 0041 NE R11 R11 R12 0x782E000D, // 0042 JMPF R11 #0051 0xB82E0000, // 0043 GETNGBL R11 K0 - 0x8C2C1764, // 0044 GETMET R11 R11 K100 + 0x8C2C1766, // 0044 GETMET R11 R11 K102 0x8834110D, // 0045 GETMBR R13 R8 K13 - 0x88381163, // 0046 GETMBR R14 R8 K99 + 0x88381165, // 0046 GETMBR R14 R8 K101 0x7C2C0600, // 0047 CALL R11 3 0x5C281600, // 0048 MOVE R10 R11 0x4C2C0000, // 0049 LDNIL R11 0x202C140B, // 004A NE R11 R10 R11 0x782E0002, // 004B JMPF R11 #004F - 0x002EA60A, // 004C ADD R11 K83 R10 - 0x002C1754, // 004D ADD R11 R11 K84 + 0x002EA80A, // 004C ADD R11 K84 R10 + 0x002C1755, // 004D ADD R11 R11 K85 0x70020000, // 004E JMP #0050 0x582C001B, // 004F LDCONST R11 K27 0x5C281600, // 0050 MOVE R10 R11 @@ -1254,45 +1256,45 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0x202C160C, // 0053 NE R11 R11 R12 0x782E0004, // 0054 JMPF R11 #005A 0x602C0018, // 0055 GETGBL R11 G24 - 0x58300065, // 0056 LDCONST R12 K101 + 0x58300067, // 0056 LDCONST R12 K103 0x88341112, // 0057 GETMBR R13 R8 K18 0x7C2C0400, // 0058 CALL R11 2 0x70020000, // 0059 JMP #005B - 0x582C0066, // 005A LDCONST R11 K102 + 0x582C0068, // 005A LDCONST R11 K104 0x8830110D, // 005B GETMBR R12 R8 K13 0x4C340000, // 005C LDNIL R13 0x2030180D, // 005D NE R12 R12 R13 0x78320004, // 005E JMPF R12 #0064 0x60300018, // 005F GETGBL R12 G24 - 0x58340067, // 0060 LDCONST R13 K103 + 0x58340069, // 0060 LDCONST R13 K105 0x8838110D, // 0061 GETMBR R14 R8 K13 0x7C300400, // 0062 CALL R12 2 0x70020000, // 0063 JMP #0065 - 0x58300068, // 0064 LDCONST R12 K104 - 0x88341163, // 0065 GETMBR R13 R8 K99 + 0x5830006A, // 0064 LDCONST R12 K106 + 0x88341165, // 0065 GETMBR R13 R8 K101 0x4C380000, // 0066 LDNIL R14 0x20341A0E, // 0067 NE R13 R13 R14 0x78360004, // 0068 JMPF R13 #006E 0x60340018, // 0069 GETGBL R13 G24 - 0x58380065, // 006A LDCONST R14 K101 - 0x883C1163, // 006B GETMBR R15 R8 K99 + 0x58380067, // 006A LDCONST R14 K103 + 0x883C1165, // 006B GETMBR R15 R8 K101 0x7C340400, // 006C CALL R13 2 0x70020000, // 006D JMP #006F - 0x58340066, // 006E LDCONST R13 K102 + 0x58340068, // 006E LDCONST R13 K104 0x4C380000, // 006F LDNIL R14 0x20380C0E, // 0070 NE R14 R6 R14 0x783A0004, // 0071 JMPF R14 #0077 0x60380018, // 0072 GETGBL R14 G24 - 0x583C0069, // 0073 LDCONST R15 K105 + 0x583C006B, // 0073 LDCONST R15 K107 0x5C400C00, // 0074 MOVE R16 R6 0x7C380400, // 0075 CALL R14 2 0x70020000, // 0076 JMP #0078 0x5838001B, // 0077 LDCONST R14 K27 0xB83E2E00, // 0078 GETNGBL R15 K23 0x60400018, // 0079 GETGBL R16 G24 - 0x5844006A, // 007A LDCONST R17 K106 + 0x5844006C, // 007A LDCONST R17 K108 0x88480523, // 007B GETMBR R18 R2 K35 - 0x88482536, // 007C GETMBR R18 R18 K54 + 0x88482538, // 007C GETMBR R18 R18 K56 0x5C4C1600, // 007D MOVE R19 R11 0x5C501800, // 007E MOVE R20 R12 0x5C541A00, // 007F MOVE R21 R13 @@ -1331,7 +1333,7 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ be_str_weak(send_enqueued), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x58080040, // 0000 LDCONST R2 K64 + 0x5808006D, // 0000 LDCONST R2 K109 0x600C000C, // 0001 GETGBL R3 G12 0x88100126, // 0002 GETMBR R4 R0 K38 0x7C0C0200, // 0003 CALL R3 1 @@ -1339,21 +1341,21 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0x780E0011, // 0005 JMPF R3 #0018 0x880C0126, // 0006 GETMBR R3 R0 K38 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8810076B, // 0008 GETMBR R4 R3 K107 + 0x8810076E, // 0008 GETMBR R4 R3 K110 0x74120004, // 0009 JMPT R4 #000F - 0x8810076C, // 000A GETMBR R4 R3 K108 + 0x8810076F, // 000A GETMBR R4 R3 K111 0x78120002, // 000B JMPF R4 #000F - 0x8C10076D, // 000C GETMET R4 R3 K109 + 0x8C100770, // 000C GETMET R4 R3 K112 0x5C180200, // 000D MOVE R6 R1 0x7C100400, // 000E CALL R4 2 - 0x8810076B, // 000F GETMBR R4 R3 K107 + 0x8810076E, // 000F GETMBR R4 R3 K110 0x78120004, // 0010 JMPF R4 #0016 - 0x8C10016E, // 0011 GETMET R4 R0 K110 - 0x8818076F, // 0012 GETMBR R6 R3 K111 - 0x88180D58, // 0013 GETMBR R6 R6 K88 + 0x8C100171, // 0011 GETMET R4 R0 K113 + 0x88180772, // 0012 GETMBR R6 R3 K114 + 0x88180D59, // 0013 GETMBR R6 R6 K89 0x7C100400, // 0014 CALL R4 2 0x70020000, // 0015 JMP #0017 - 0x00080541, // 0016 ADD R2 R2 K65 + 0x0008052D, // 0016 ADD R2 R2 K45 0x7001FFE8, // 0017 JMP #0001 0x80000000, // 0018 RET 0 }) @@ -1380,19 +1382,19 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ &be_const_str_solidified, ( &(const binstruction[96]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0770, // 0001 GETMET R3 R3 K112 + 0x8C0C0773, // 0001 GETMET R3 R3 K115 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x88100771, // 0006 GETMBR R4 R3 K113 + 0x88100774, // 0006 GETMBR R4 R3 K116 0x74120003, // 0007 JMPT R4 #000C - 0x88100147, // 0008 GETMBR R4 R0 K71 - 0x8C100972, // 0009 GETMET R4 R4 K114 + 0x88100148, // 0008 GETMBR R4 R0 K72 + 0x8C100975, // 0009 GETMET R4 R4 K117 0x88180323, // 000A GETMBR R6 R1 K35 0x7C100400, // 000B CALL R4 2 - 0x88100147, // 000C GETMBR R4 R0 K71 - 0x8C100973, // 000D GETMET R4 R4 K115 + 0x88100148, // 000C GETMBR R4 R0 K72 + 0x8C100976, // 000D GETMET R4 R4 K118 0x88180323, // 000E GETMBR R6 R1 K35 0x5C1C0600, // 000F MOVE R7 R3 0x7C100600, // 0010 CALL R4 3 @@ -1401,7 +1403,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0x581C0015, // 0013 LDCONST R7 K21 0x7C140400, // 0014 CALL R5 2 0x78160032, // 0015 JMPF R5 #0049 - 0x88140732, // 0016 GETMBR R5 R3 K50 + 0x88140734, // 0016 GETMBR R5 R3 K52 0x4C180000, // 0017 LDNIL R6 0x20140A06, // 0018 NE R5 R5 R6 0x7816002E, // 0019 JMPF R5 #0049 @@ -1412,7 +1414,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0x7C180200, // 001E CALL R6 1 0x901A3E01, // 001F SETMBR R6 K31 R1 0x601C0010, // 0020 GETGBL R7 G16 - 0x88200732, // 0021 GETMBR R8 R3 K50 + 0x88200734, // 0021 GETMBR R8 R3 K52 0x7C1C0200, // 0022 CALL R7 1 0xA802000D, // 0023 EXBLK 0 #0032 0x5C200E00, // 0024 MOVE R8 R7 @@ -1434,39 +1436,39 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0xB0080000, // 0034 RAISE 2 R0 R0 0xB81E2E00, // 0035 GETNGBL R7 K23 0x60200018, // 0036 GETGBL R8 G24 - 0x58240074, // 0037 LDCONST R9 K116 + 0x58240077, // 0037 LDCONST R9 K119 0x88280323, // 0038 GETMBR R10 R1 K35 - 0x88281536, // 0039 GETMBR R10 R10 K54 - 0x8C2C0B75, // 003A GETMET R11 R5 K117 - 0x58340076, // 003B LDCONST R13 K118 + 0x88281538, // 0039 GETMBR R10 R10 K56 + 0x8C2C0B78, // 003A GETMET R11 R5 K120 + 0x58340079, // 003B LDCONST R13 K121 0x7C2C0400, // 003C CALL R11 2 - 0x88300977, // 003D GETMBR R12 R4 K119 - 0x88340978, // 003E GETMBR R13 R4 K120 - 0x88380771, // 003F GETMBR R14 R3 K113 + 0x8830097A, // 003D GETMBR R12 R4 K122 + 0x8834097B, // 003E GETMBR R13 R4 K123 + 0x88380774, // 003F GETMBR R14 R3 K116 0x783A0001, // 0040 JMPF R14 #0043 - 0x5838002A, // 0041 LDCONST R14 K42 + 0x58380061, // 0041 LDCONST R14 K97 0x70020000, // 0042 JMP #0044 - 0x5838005C, // 0043 LDCONST R14 K92 - 0x883C0937, // 0044 GETMBR R15 R4 K55 - 0x88400731, // 0045 GETMBR R16 R3 K49 + 0x58380042, // 0043 LDCONST R14 K66 + 0x883C0939, // 0044 GETMBR R15 R4 K57 + 0x88400733, // 0045 GETMBR R16 R3 K51 0x7C201000, // 0046 CALL R8 8 0x58240015, // 0047 LDCONST R9 K21 0x7C1C0400, // 0048 CALL R7 2 - 0x8C140139, // 0049 GETMET R5 R0 K57 + 0x8C14013B, // 0049 GETMET R5 R0 K59 0x5C1C0600, // 004A MOVE R7 R3 0x5C200200, // 004B MOVE R8 R1 0x7C140600, // 004C CALL R5 3 - 0x8C18013E, // 004D GETMET R6 R0 K62 + 0x8C180140, // 004D GETMET R6 R0 K64 0x5C200600, // 004E MOVE R8 R3 0x5C240200, // 004F MOVE R9 R1 0x7C180600, // 0050 CALL R6 3 - 0x8C1C0979, // 0051 GETMET R7 R4 K121 + 0x8C1C097C, // 0051 GETMET R7 R4 K124 0x5C240C00, // 0052 MOVE R9 R6 0x7C1C0400, // 0053 CALL R7 2 0x881C0126, // 0054 GETMBR R7 R0 K38 0x8C1C0F27, // 0055 GETMET R7 R7 K39 0xB8260000, // 0056 GETNGBL R9 K0 - 0x8C24137A, // 0057 GETMET R9 R9 K122 + 0x8C24137D, // 0057 GETMET R9 R9 K125 0x5C2C0200, // 0058 MOVE R11 R1 0x5C300A00, // 0059 MOVE R12 R5 0x5C340C00, // 005A MOVE R13 R6 @@ -1503,8 +1505,8 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 0x88080323, // 0004 GETMBR R2 R1 K35 - 0x8808053C, // 0005 GETMBR R2 R2 K60 - 0x8C08057B, // 0006 GETMET R2 R2 K123 + 0x8808053E, // 0005 GETMBR R2 R2 K62 + 0x8C08057E, // 0006 GETMET R2 R2 K126 0x5C100200, // 0007 MOVE R4 R1 0x50140000, // 0008 LDBOOL R5 0 0 0x7C080600, // 0009 CALL R2 3 @@ -1532,7 +1534,7 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ be_str_weak(expire_sendqueue), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x5804005C, // 0000 LDCONST R1 K92 + 0x5804006D, // 0000 LDCONST R1 K109 0x6008000C, // 0001 GETGBL R2 G12 0x880C0126, // 0002 GETMBR R3 R0 K38 0x7C080200, // 0003 CALL R2 1 @@ -1541,18 +1543,18 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ 0x88080126, // 0006 GETMBR R2 R0 K38 0x94080401, // 0007 GETIDX R2 R2 R1 0xB80E2600, // 0008 GETNGBL R3 K19 - 0x8C0C077C, // 0009 GETMET R3 R3 K124 - 0x8814057D, // 000A GETMBR R5 R2 K125 + 0x8C0C077F, // 0009 GETMET R3 R3 K127 + 0x88140580, // 000A GETMBR R5 R2 K128 0x7C0C0400, // 000B CALL R3 2 0x780E0006, // 000C JMPF R3 #0014 - 0x8C0C057E, // 000D GETMET R3 R2 K126 + 0x8C0C0581, // 000D GETMET R3 R2 K129 0x7C0C0200, // 000E CALL R3 1 0x880C0126, // 000F GETMBR R3 R0 K38 - 0x8C0C077F, // 0010 GETMET R3 R3 K127 + 0x8C0C0782, // 0010 GETMET R3 R3 K130 0x5C140200, // 0011 MOVE R5 R1 0x7C0C0400, // 0012 CALL R3 2 0x70020000, // 0013 JMP #0015 - 0x00040341, // 0014 ADD R1 R1 K65 + 0x0004032A, // 0014 ADD R1 R1 K42 0x7001FFEA, // 0015 JMP #0001 0x4C080000, // 0016 LDNIL R2 0x80040400, // 0017 RET 1 R2 @@ -1579,17 +1581,17 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ be_str_weak(process_incoming_ack), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x8C080180, // 0000 GETMET R2 R0 K128 - 0x88100358, // 0001 GETMBR R4 R1 K88 + 0x8C080183, // 0000 GETMET R2 R0 K131 + 0x88100359, // 0001 GETMBR R4 R1 K89 0x7C080400, // 0002 CALL R2 2 0x780A0008, // 0003 JMPF R2 #000D - 0x8C0C0581, // 0004 GETMET R3 R2 K129 + 0x8C0C0584, // 0004 GETMET R3 R2 K132 0x5C140200, // 0005 MOVE R5 R1 0x7C0C0400, // 0006 CALL R3 2 - 0x8810056B, // 0007 GETMBR R4 R2 K107 + 0x8810056E, // 0007 GETMBR R4 R2 K110 0x78120002, // 0008 JMPF R4 #000C - 0x8C10016E, // 0009 GETMET R4 R0 K110 - 0x88180358, // 000A GETMBR R6 R1 K88 + 0x8C100171, // 0009 GETMET R4 R0 K113 + 0x88180359, // 000A GETMBR R6 R1 K89 0x7C100400, // 000B CALL R4 2 0x80040600, // 000C RET 1 R3 0x500C0000, // 000D LDBOOL R3 0 0 @@ -1621,7 +1623,7 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x58080040, // 0004 LDCONST R2 K64 + 0x5808006D, // 0004 LDCONST R2 K109 0x600C000C, // 0005 GETGBL R3 G12 0x88100126, // 0006 GETMBR R4 R0 K38 0x7C0C0200, // 0007 CALL R3 1 @@ -1629,16 +1631,16 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ 0x780E000C, // 0009 JMPF R3 #0017 0x880C0126, // 000A GETMBR R3 R0 K38 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0782, // 000C GETMET R3 R3 K130 + 0x8C0C0785, // 000C GETMET R3 R3 K133 0x7C0C0200, // 000D CALL R3 1 0x1C0C0601, // 000E EQ R3 R3 R1 0x780E0004, // 000F JMPF R3 #0015 0x880C0126, // 0010 GETMBR R3 R0 K38 - 0x8C0C077F, // 0011 GETMET R3 R3 K127 + 0x8C0C0782, // 0011 GETMET R3 R3 K130 0x5C140400, // 0012 MOVE R5 R2 0x7C0C0400, // 0013 CALL R3 2 0x70020000, // 0014 JMP #0016 - 0x0008052A, // 0015 ADD R2 R2 K42 + 0x00080561, // 0015 ADD R2 R2 K97 0x7001FFED, // 0016 JMP #0005 0x80000000, // 0017 RET 0 }) @@ -1665,7 +1667,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na &be_const_str_solidified, ( &(const binstruction[86]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100983, // 0001 GETMBR R4 R4 K131 + 0x88100986, // 0001 GETMBR R4 R4 K134 0xB8160000, // 0002 GETNGBL R5 K0 0x8C140B16, // 0003 GETMET R5 R5 K22 0x881C050D, // 0004 GETMBR R7 R2 K13 @@ -1682,14 +1684,14 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x20180C07, // 000F NE R6 R6 R7 0x781A0034, // 0010 JMPF R6 #0046 0xB81A0000, // 0011 GETNGBL R6 K0 - 0x8C180D84, // 0012 GETMET R6 R6 K132 + 0x8C180D87, // 0012 GETMET R6 R6 K135 0x7C180200, // 0013 CALL R6 1 0xB81E0000, // 0014 GETNGBL R7 K0 - 0x8C1C0F34, // 0015 GETMET R7 R7 K52 + 0x8C1C0F36, // 0015 GETMET R7 R7 K54 0x7C1C0200, // 0016 CALL R7 1 0x901A1407, // 0017 SETMBR R6 K10 R7 0xB81E0000, // 0018 GETNGBL R7 K0 - 0x8C1C0F85, // 0019 GETMET R7 R7 K133 + 0x8C1C0F88, // 0019 GETMET R7 R7 K136 0x7C1C0200, // 001A CALL R7 1 0x901A1E07, // 001B SETMBR R6 K15 R7 0x881C0D0A, // 001C GETMBR R7 R6 K10 @@ -1710,7 +1712,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x7C1C0400, // 002B CALL R7 2 0xB81E2E00, // 002C GETNGBL R7 K23 0x60200018, // 002D GETGBL R8 G24 - 0x58240086, // 002E LDCONST R9 K134 + 0x58240089, // 002E LDCONST R9 K137 0x60280008, // 002F GETGBL R10 G8 0x5C2C0400, // 0030 MOVE R11 R2 0x7C280200, // 0031 CALL R10 1 @@ -1727,7 +1729,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x5838001B, // 003C LDCONST R14 K27 0x7C200C00, // 003D CALL R8 6 0x88240512, // 003E GETMBR R9 R2 K18 - 0x20241340, // 003F NE R9 R9 K64 + 0x2024136D, // 003F NE R9 R9 K109 0x78260001, // 0040 JMPF R9 #0043 0x5824002B, // 0041 LDCONST R9 K43 0x70020000, // 0042 JMP #0044 @@ -1741,7 +1743,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x781A0009, // 004A JMPF R6 #0055 0xB81A2E00, // 004B GETNGBL R6 K23 0x601C0018, // 004C GETGBL R7 G24 - 0x58200087, // 004D LDCONST R8 K135 + 0x5820008A, // 004D LDCONST R8 K138 0x60240008, // 004E GETGBL R9 G8 0x5C280400, // 004F MOVE R10 R2 0x7C240200, // 0050 CALL R9 1 @@ -1778,23 +1780,23 @@ be_local_closure(class_Matter_IM_init, /* name */ 0x7C080000, // 0002 CALL R2 0 0x90024C02, // 0003 SETMBR R0 K38 R2 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x8C080588, // 0005 GETMET R2 R2 K136 + 0x8C08058B, // 0005 GETMET R2 R2 K139 0x5C100000, // 0006 MOVE R4 R0 0x7C080400, // 0007 CALL R2 2 - 0x90028E02, // 0008 SETMBR R0 K71 R2 + 0x90029002, // 0008 SETMBR R0 K72 R2 0xB80A0000, // 0009 GETNGBL R2 K0 - 0x8C08058A, // 000A GETMET R2 R2 K138 + 0x8C08058D, // 000A GETMET R2 R2 K141 0x7C080200, // 000B CALL R2 1 - 0x90031202, // 000C SETMBR R0 K137 R2 + 0x90031802, // 000C SETMBR R0 K140 R2 0xB80A0000, // 000D GETNGBL R2 K0 - 0x8C08058C, // 000E GETMET R2 R2 K140 + 0x8C08058F, // 000E GETMET R2 R2 K143 0x7C080200, // 000F CALL R2 1 - 0x90031602, // 0010 SETMBR R0 K139 R2 + 0x90031C02, // 0010 SETMBR R0 K142 R2 0xB80A0000, // 0011 GETNGBL R2 K0 - 0x88080583, // 0012 GETMBR R2 R2 K131 - 0x8C08058E, // 0013 GETMET R2 R2 K142 + 0x88080586, // 0012 GETMBR R2 R2 K134 + 0x8C080591, // 0013 GETMET R2 R2 K145 0x7C080200, // 0014 CALL R2 1 - 0x90031A02, // 0015 SETMBR R0 K141 R2 + 0x90032002, // 0015 SETMBR R0 K144 R2 0x80000000, // 0016 RET 0 }) ) @@ -1819,7 +1821,7 @@ be_local_closure(class_Matter_IM_every_second, /* name */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04018F, // 0000 GETMET R1 R0 K143 + 0x8C040192, // 0000 GETMET R1 R0 K146 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -1847,20 +1849,20 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ ( &(const binstruction[188]) { /* code */ 0x900A3E01, // 0000 SETMBR R2 K31 R1 0xB80E0000, // 0001 GETNGBL R3 K0 - 0x880C074F, // 0002 GETMBR R3 R3 K79 + 0x880C0750, // 0002 GETMBR R3 R3 K80 0x900A1E03, // 0003 SETMBR R2 K15 R3 0xB80E0000, // 0004 GETNGBL R3 K0 - 0x8C0C0750, // 0005 GETMET R3 R3 K80 + 0x8C0C0751, // 0005 GETMET R3 R3 K81 0x8814050D, // 0006 GETMBR R5 R2 K13 - 0x8818054E, // 0007 GETMBR R6 R2 K78 + 0x8818054F, // 0007 GETMBR R6 R2 K79 0x7C0C0600, // 0008 CALL R3 3 0x60100008, // 0009 GETGBL R4 G8 0x5C140400, // 000A MOVE R5 R2 0x7C100200, // 000B CALL R4 1 0x88140109, // 000C GETMBR R5 R0 K9 - 0x8C140B51, // 000D GETMET R5 R5 K81 + 0x8C140B52, // 000D GETMET R5 R5 K82 0x881C0323, // 000E GETMBR R7 R1 K35 - 0x88200552, // 000F GETMBR R8 R2 K82 + 0x88200553, // 000F GETMBR R8 R2 K83 0x5C240400, // 0010 MOVE R9 R2 0x7C140800, // 0011 CALL R5 4 0x88180517, // 0012 GETMBR R6 R2 K23 @@ -1870,8 +1872,8 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x60180008, // 0016 GETGBL R6 G8 0x881C0517, // 0017 GETMBR R7 R2 K23 0x7C180200, // 0018 CALL R6 1 - 0x001AA606, // 0019 ADD R6 K83 R6 - 0x00180D54, // 001A ADD R6 R6 K84 + 0x001AA806, // 0019 ADD R6 K84 R6 + 0x00180D55, // 001A ADD R6 R6 K85 0x70020000, // 001B JMP #001D 0x5818001B, // 001C LDCONST R6 K27 0xB81E2600, // 001D GETNGBL R7 K19 @@ -1881,9 +1883,9 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x781E000D, // 0021 JMPF R7 #0030 0xB81E2E00, // 0022 GETNGBL R7 K23 0x60200018, // 0023 GETGBL R8 G24 - 0x58240090, // 0024 LDCONST R9 K144 + 0x58240093, // 0024 LDCONST R9 K147 0x88280323, // 0025 GETMBR R10 R1 K35 - 0x88281536, // 0026 GETMBR R10 R10 K54 + 0x88281538, // 0026 GETMBR R10 R10 K56 0x5C2C0800, // 0027 MOVE R11 R4 0x780E0001, // 0028 JMPF R3 #002B 0x5C300600, // 0029 MOVE R12 R3 @@ -1899,12 +1901,12 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x5422002F, // 0033 LDINT R8 48 0x7C1C0200, // 0034 CALL R7 1 0x8C200F29, // 0035 GETMET R8 R7 K41 - 0x58280091, // 0036 LDCONST R10 K145 + 0x58280094, // 0036 LDCONST R10 K148 0x542DFFFB, // 0037 LDINT R11 -4 0x7C200600, // 0038 CALL R8 3 0x8C200F29, // 0039 GETMET R8 R7 K41 - 0x5828002A, // 003A LDCONST R10 K42 - 0x582C002A, // 003B LDCONST R11 K42 + 0x5828002D, // 003A LDCONST R10 K45 + 0x582C002D, // 003B LDCONST R11 K45 0x7C200600, // 003C CALL R8 3 0x50200200, // 003D LDBOOL R8 1 0 0x1C200A08, // 003E EQ R8 R5 R8 @@ -1917,7 +1919,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0xB8220000, // 0045 GETNGBL R8 K0 0x88201124, // 0046 GETMBR R8 R8 K36 0x900A1E08, // 0047 SETMBR R2 K15 R8 - 0x8C200156, // 0048 GETMET R8 R0 K86 + 0x8C200157, // 0048 GETMET R8 R0 K87 0x5C280E00, // 0049 MOVE R10 R7 0x5C2C0400, // 004A MOVE R11 R2 0x4C300000, // 004B LDNIL R12 @@ -1929,10 +1931,10 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220008, // 0051 JMPF R8 #005B 0xB8222E00, // 0052 GETNGBL R8 K23 0x60240018, // 0053 GETGBL R9 G24 - 0x58280057, // 0054 LDCONST R10 K87 + 0x58280058, // 0054 LDCONST R10 K88 0x882C0323, // 0055 GETMBR R11 R1 K35 - 0x882C1736, // 0056 GETMBR R11 R11 K54 - 0x88300358, // 0057 GETMBR R12 R1 K88 + 0x882C1738, // 0056 GETMBR R11 R11 K56 + 0x88300359, // 0057 GETMBR R12 R1 K89 0x7C240600, // 0058 CALL R9 3 0x58280015, // 0059 LDCONST R10 K21 0x7C200400, // 005A CALL R8 2 @@ -1940,7 +1942,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x4C200000, // 005C LDNIL R8 0x20200A08, // 005D NE R8 R5 R8 0x78220017, // 005E JMPF R8 #0077 - 0x8C200156, // 005F GETMET R8 R0 K86 + 0x8C200157, // 005F GETMET R8 R0 K87 0x5C280E00, // 0060 MOVE R10 R7 0x5C2C0400, // 0061 MOVE R11 R2 0x5C300A00, // 0062 MOVE R12 R5 @@ -1955,9 +1957,9 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220009, // 006B JMPF R8 #0076 0xB8222E00, // 006C GETNGBL R8 K23 0x60240018, // 006D GETGBL R9 G24 - 0x58280059, // 006E LDCONST R10 K89 + 0x5828005A, // 006E LDCONST R10 K90 0x882C0323, // 006F GETMBR R11 R1 K35 - 0x882C1736, // 0070 GETMBR R11 R11 K54 + 0x882C1738, // 0070 GETMBR R11 R11 K56 0x5C300400, // 0071 MOVE R12 R2 0x5C340600, // 0072 MOVE R13 R3 0x7C240800, // 0073 CALL R9 4 @@ -1968,7 +1970,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x4C240000, // 0078 LDNIL R9 0x20201009, // 0079 NE R8 R8 R9 0x78220014, // 007A JMPF R8 #0090 - 0x8C200156, // 007B GETMET R8 R0 K86 + 0x8C200157, // 007B GETMET R8 R0 K87 0x5C280E00, // 007C MOVE R10 R7 0x5C2C0400, // 007D MOVE R11 R2 0x4C300000, // 007E LDNIL R12 @@ -1980,11 +1982,11 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220009, // 0084 JMPF R8 #008F 0xB8222E00, // 0085 GETNGBL R8 K23 0x60240018, // 0086 GETGBL R9 G24 - 0x5828005A, // 0087 LDCONST R10 K90 + 0x5828005B, // 0087 LDCONST R10 K91 0x882C0323, // 0088 GETMBR R11 R1 K35 - 0x882C1736, // 0089 GETMBR R11 R11 K54 + 0x882C1738, // 0089 GETMBR R11 R11 K56 0x8830050F, // 008A GETMBR R12 R2 K15 - 0x88340358, // 008B GETMBR R13 R1 K88 + 0x88340359, // 008B GETMBR R13 R1 K89 0x7C240800, // 008C CALL R9 4 0x58280015, // 008D LDCONST R10 K21 0x7C200400, // 008E CALL R8 2 @@ -1996,39 +1998,39 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220008, // 0094 JMPF R8 #009E 0xB8222E00, // 0095 GETNGBL R8 K23 0x60240018, // 0096 GETGBL R9 G24 - 0x5828005B, // 0097 LDCONST R10 K91 + 0x5828005C, // 0097 LDCONST R10 K92 0x882C0323, // 0098 GETMBR R11 R1 K35 - 0x882C1736, // 0099 GETMBR R11 R11 K54 - 0x88300358, // 009A GETMBR R12 R1 K88 + 0x882C1738, // 0099 GETMBR R11 R11 K56 + 0x88300359, // 009A GETMBR R12 R1 K89 0x7C240600, // 009B CALL R9 3 0x58280015, // 009C LDCONST R10 K21 0x7C200400, // 009D CALL R8 2 0x50200000, // 009E LDBOOL R8 0 0 0x80041000, // 009F RET 1 R8 0x8C200F29, // 00A0 GETMET R8 R7 K41 - 0x58280092, // 00A1 LDCONST R10 K146 + 0x58280095, // 00A1 LDCONST R10 K149 0x542DFFFB, // 00A2 LDINT R11 -4 0x7C200600, // 00A3 CALL R8 3 0x8C200F29, // 00A4 GETMET R8 R7 K41 0x542A0017, // 00A5 LDINT R10 24 - 0x582C002A, // 00A6 LDCONST R11 K42 + 0x582C002D, // 00A6 LDCONST R11 K45 0x7C200600, // 00A7 CALL R8 3 - 0x8C200393, // 00A8 GETMET R8 R1 K147 + 0x8C200396, // 00A8 GETMET R8 R1 K150 0x542A0008, // 00A9 LDINT R10 9 0x502C0200, // 00AA LDBOOL R11 1 0 0x7C200600, // 00AB CALL R8 3 0x88240109, // 00AC GETMBR R9 R0 K9 - 0x88241394, // 00AD GETMBR R9 R9 K148 - 0x88280395, // 00AE GETMBR R10 R1 K149 - 0x8C2C1596, // 00AF GETMET R11 R10 K150 + 0x88241397, // 00AD GETMBR R9 R9 K151 + 0x88280398, // 00AE GETMBR R10 R1 K152 + 0x8C2C1599, // 00AF GETMET R11 R10 K153 0x7C2C0200, // 00B0 CALL R11 1 - 0x8C2C1197, // 00B1 GETMET R11 R8 K151 + 0x8C2C119A, // 00B1 GETMET R11 R8 K154 0x5C340E00, // 00B2 MOVE R13 R7 0x5C381400, // 00B3 MOVE R14 R10 0x7C2C0600, // 00B4 CALL R11 3 - 0x8C2C1198, // 00B5 GETMET R11 R8 K152 + 0x8C2C119B, // 00B5 GETMET R11 R8 K155 0x7C2C0200, // 00B6 CALL R11 1 - 0x8C2C1399, // 00B7 GETMET R11 R9 K153 + 0x8C2C139C, // 00B7 GETMET R11 R9 K156 0x5C341000, // 00B8 MOVE R13 R8 0x7C2C0400, // 00B9 CALL R11 2 0x502C0200, // 00BA LDBOOL R11 1 0 @@ -2064,25 +2066,25 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ 0x780E0007, // 0005 JMPF R3 #000E 0xB80E2E00, // 0006 GETNGBL R3 K23 0x60100018, // 0007 GETGBL R4 G24 - 0x5814009A, // 0008 LDCONST R5 K154 - 0x88180536, // 0009 GETMBR R6 R2 K54 - 0x881C0337, // 000A GETMBR R7 R1 K55 + 0x5814009D, // 0008 LDCONST R5 K157 + 0x88180538, // 0009 GETMBR R6 R2 K56 + 0x881C0339, // 000A GETMBR R7 R1 K57 0x7C100600, // 000B CALL R4 3 0x58140015, // 000C LDCONST R5 K21 0x7C0C0400, // 000D CALL R3 2 0x500C0200, // 000E LDBOOL R3 1 0 - 0x90067003, // 000F SETMBR R1 K56 R3 + 0x90067403, // 000F SETMBR R1 K58 R3 0x880C0126, // 0010 GETMBR R3 R0 K38 0x8C0C0727, // 0011 GETMET R3 R3 K39 0xB8160000, // 0012 GETNGBL R5 K0 - 0x8C140B9B, // 0013 GETMET R5 R5 K155 - 0x881C053C, // 0014 GETMBR R7 R2 K60 + 0x8C140B9E, // 0013 GETMET R5 R5 K158 + 0x881C053E, // 0014 GETMBR R7 R2 K62 0x5C200400, // 0015 MOVE R8 R2 0x5C240200, // 0016 MOVE R9 R1 0x7C140800, // 0017 CALL R5 4 0x7C0C0400, // 0018 CALL R3 2 - 0x8C0C013D, // 0019 GETMET R3 R0 K61 - 0x8814053C, // 001A GETMBR R5 R2 K60 + 0x8C0C013F, // 0019 GETMET R3 R0 K63 + 0x8814053E, // 001A GETMBR R5 R2 K62 0x7C0C0400, // 001B CALL R3 2 0x80000000, // 001C RET 0 }) @@ -2113,7 +2115,7 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0x58080040, // 0005 LDCONST R2 K64 + 0x5808006D, // 0005 LDCONST R2 K109 0x600C000C, // 0006 GETGBL R3 G12 0x88100126, // 0007 GETMBR R4 R0 K38 0x7C0C0200, // 0008 CALL R3 1 @@ -2121,7 +2123,7 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ 0x780E0008, // 000A JMPF R3 #0014 0x880C0126, // 000B GETMBR R3 R0 K38 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x8C100782, // 000D GETMET R4 R3 K130 + 0x8C100785, // 000D GETMET R4 R3 K133 0x7C100200, // 000E CALL R4 1 0x1C100801, // 000F EQ R4 R4 R1 0x78120000, // 0010 JMPF R4 #0012 @@ -2158,7 +2160,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x900A1E03, // 0002 SETMBR R2 K15 R3 0x900A3E01, // 0003 SETMBR R2 K31 R1 0x880C0109, // 0004 GETMBR R3 R0 K9 - 0x8C0C079C, // 0005 GETMET R3 R3 K156 + 0x8C0C079F, // 0005 GETMET R3 R3 K159 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x4C100000, // 0008 LDNIL R4 @@ -2167,42 +2169,42 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x20180606, // 000B NE R6 R3 R6 0x781A0008, // 000C JMPF R6 #0016 0xB81A0000, // 000D GETNGBL R6 K0 - 0x88180D9D, // 000E GETMBR R6 R6 K157 + 0x88180DA0, // 000E GETMBR R6 R6 K160 0x900A1E06, // 000F SETMBR R2 K15 R6 - 0x8C18079E, // 0010 GETMET R6 R3 K158 + 0x8C1807A1, // 0010 GETMET R6 R3 K161 0x88200323, // 0011 GETMBR R8 R1 K35 0x5C240400, // 0012 MOVE R9 R2 - 0x8828018D, // 0013 GETMBR R10 R0 K141 + 0x88280190, // 0013 GETMBR R10 R0 K144 0x7C180800, // 0014 CALL R6 4 0x5C100C00, // 0015 MOVE R4 R6 0x4C180000, // 0016 LDNIL R6 0x20180806, // 0017 NE R6 R4 R6 0x781A0036, // 0018 JMPF R6 #0050 - 0x8818099F, // 0019 GETMBR R6 R4 K159 + 0x881809A2, // 0019 GETMBR R6 R4 K162 0x741A0001, // 001A JMPT R6 #001D - 0x881809A0, // 001B GETMBR R6 R4 K160 + 0x881809A3, // 001B GETMBR R6 R4 K163 0x781A0018, // 001C JMPF R6 #0036 - 0x8C1809A1, // 001D GETMET R6 R4 K161 + 0x8C1809A4, // 001D GETMET R6 R4 K164 0x7C180200, // 001E CALL R6 1 0xB81E0000, // 001F GETNGBL R7 K0 - 0x881C0F3F, // 0020 GETMBR R7 R7 K63 - 0x881C0FA2, // 0021 GETMBR R7 R7 K162 + 0x881C0F41, // 0020 GETMBR R7 R7 K65 + 0x881C0FA5, // 0021 GETMBR R7 R7 K165 0x24180C07, // 0022 GT R6 R6 R7 0x781A0011, // 0023 JMPF R6 #0036 0x4C100000, // 0024 LDNIL R4 0xB81A2E00, // 0025 GETNGBL R6 K23 0x601C0018, // 0026 GETGBL R7 G24 - 0x582000A3, // 0027 LDCONST R8 K163 + 0x582000A6, // 0027 LDCONST R8 K166 0x7C1C0200, // 0028 CALL R7 1 0x58200015, // 0029 LDCONST R8 K21 0x7C180400, // 002A CALL R6 2 0xB81A0000, // 002B GETNGBL R6 K0 - 0x88180D83, // 002C GETMBR R6 R6 K131 - 0x8C180DA4, // 002D GETMET R6 R6 K164 - 0x88200395, // 002E GETMBR R8 R1 K149 - 0x882403A5, // 002F GETMBR R9 R1 K165 + 0x88180D86, // 002C GETMBR R6 R6 K134 + 0x8C180DA7, // 002D GETMET R6 R6 K167 + 0x88200398, // 002E GETMBR R8 R1 K152 + 0x882403A8, // 002F GETMBR R9 R1 K168 0x7C180600, // 0030 CALL R6 3 - 0x8C1C01A6, // 0031 GETMET R7 R0 K166 + 0x8C1C01A9, // 0031 GETMET R7 R0 K169 0x5C240200, // 0032 MOVE R9 R1 0x5C280C00, // 0033 MOVE R10 R6 0x7C1C0600, // 0034 CALL R7 3 @@ -2219,13 +2221,13 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x54223600, // 003F LDINT R8 13825 0x5425FFFD, // 0040 LDINT R9 -2 0x7C180600, // 0041 CALL R6 3 - 0x8C1801A7, // 0042 GETMET R6 R0 K167 + 0x8C1801AA, // 0042 GETMET R6 R0 K170 0x5C200A00, // 0043 MOVE R8 R5 0x5C240400, // 0044 MOVE R9 R2 0x5C280800, // 0045 MOVE R10 R4 0x7C180800, // 0046 CALL R6 4 0x8C180B29, // 0047 GETMET R6 R5 K41 - 0x582000A8, // 0048 LDCONST R8 K168 + 0x58200095, // 0048 LDCONST R8 K149 0x5425FFFB, // 0049 LDINT R9 -4 0x7C180600, // 004A CALL R6 3 0x8C180B29, // 004B GETMET R6 R5 K41 @@ -2249,13 +2251,13 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x54223600, // 005D LDINT R8 13825 0x5425FFFD, // 005E LDINT R9 -2 0x7C180600, // 005F CALL R6 3 - 0x8C1801A9, // 0060 GETMET R6 R0 K169 + 0x8C1801AB, // 0060 GETMET R6 R0 K171 0x5C200A00, // 0061 MOVE R8 R5 0x5C240400, // 0062 MOVE R9 R2 0x8828050F, // 0063 GETMBR R10 R2 K15 0x7C180800, // 0064 CALL R6 4 0x8C180B29, // 0065 GETMET R6 R5 K41 - 0x582000A8, // 0066 LDCONST R8 K168 + 0x58200095, // 0066 LDCONST R8 K149 0x5425FFFB, // 0067 LDINT R9 -4 0x7C180600, // 0068 CALL R6 3 0x8C180B29, // 0069 GETMET R6 R5 K41 @@ -2265,29 +2267,29 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x7002000A, // 006D JMP #0079 0xB81A2E00, // 006E GETNGBL R6 K23 0x601C0018, // 006F GETGBL R7 G24 - 0x582000AA, // 0070 LDCONST R8 K170 + 0x582000AC, // 0070 LDCONST R8 K172 0x88240323, // 0071 GETMBR R9 R1 K35 - 0x88241336, // 0072 GETMBR R9 R9 K54 + 0x88241338, // 0072 GETMBR R9 R9 K56 0x5C280400, // 0073 MOVE R10 R2 0x7C1C0600, // 0074 CALL R7 3 0x58200015, // 0075 LDCONST R8 K21 0x7C180400, // 0076 CALL R6 2 0x50180000, // 0077 LDBOOL R6 0 0 0x80040C00, // 0078 RET 1 R6 - 0x8C180393, // 0079 GETMET R6 R1 K147 + 0x8C180396, // 0079 GETMET R6 R1 K150 0x54220004, // 007A LDINT R8 5 0x50240200, // 007B LDBOOL R9 1 0 0x7C180600, // 007C CALL R6 3 0x881C0109, // 007D GETMBR R7 R0 K9 - 0x881C0F94, // 007E GETMBR R7 R7 K148 - 0x88200395, // 007F GETMBR R8 R1 K149 - 0x8C241196, // 0080 GETMET R9 R8 K150 + 0x881C0F97, // 007E GETMBR R7 R7 K151 + 0x88200398, // 007F GETMBR R8 R1 K152 + 0x8C241199, // 0080 GETMET R9 R8 K153 0x7C240200, // 0081 CALL R9 1 - 0x8C240D97, // 0082 GETMET R9 R6 K151 + 0x8C240D9A, // 0082 GETMET R9 R6 K154 0x5C2C0A00, // 0083 MOVE R11 R5 0x5C301000, // 0084 MOVE R12 R8 0x7C240600, // 0085 CALL R9 3 - 0x8C240D98, // 0086 GETMET R9 R6 K152 + 0x8C240D9B, // 0086 GETMET R9 R6 K155 0x7C240200, // 0087 CALL R9 1 0xB8262600, // 0088 GETNGBL R9 K19 0x8C241314, // 0089 GETMET R9 R9 K20 @@ -2296,16 +2298,16 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x7826000A, // 008C JMPF R9 #0098 0xB8262E00, // 008D GETNGBL R9 K23 0x60280018, // 008E GETGBL R10 G24 - 0x582C00AB, // 008F LDCONST R11 K171 + 0x582C00AD, // 008F LDCONST R11 K173 0x88300D23, // 0090 GETMBR R12 R6 K35 - 0x88301936, // 0091 GETMBR R12 R12 K54 - 0x88340DAC, // 0092 GETMBR R13 R6 K172 - 0x88380D58, // 0093 GETMBR R14 R6 K88 - 0x883C0DAD, // 0094 GETMBR R15 R6 K173 + 0x88301938, // 0091 GETMBR R12 R12 K56 + 0x88340DAE, // 0092 GETMBR R13 R6 K174 + 0x88380D59, // 0093 GETMBR R14 R6 K89 + 0x883C0DAF, // 0094 GETMBR R15 R6 K175 0x7C280A00, // 0095 CALL R10 5 0x542E0003, // 0096 LDINT R11 4 0x7C240400, // 0097 CALL R9 2 - 0x8C240F99, // 0098 GETMET R9 R7 K153 + 0x8C240F9C, // 0098 GETMET R9 R7 K156 0x5C2C0C00, // 0099 MOVE R11 R6 0x7C240400, // 009A CALL R9 2 0x4C240000, // 009B LDNIL R9 @@ -2334,13 +2336,13 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x58300015, // 00B2 LDCONST R12 K21 0x7C280400, // 00B3 CALL R10 2 0x782A000C, // 00B4 JMPF R10 #00C2 - 0x8C2809AE, // 00B5 GETMET R10 R4 K174 + 0x8C2809B0, // 00B5 GETMET R10 R4 K176 0x7C280200, // 00B6 CALL R10 1 0xB82E2E00, // 00B7 GETNGBL R11 K23 0x60300018, // 00B8 GETGBL R12 G24 - 0x583400AF, // 00B9 LDCONST R13 K175 + 0x583400B1, // 00B9 LDCONST R13 K177 0x88380323, // 00BA GETMBR R14 R1 K35 - 0x88381D36, // 00BB GETMBR R14 R14 K54 + 0x88381D38, // 00BB GETMBR R14 R14 K56 0x5C3C0400, // 00BC MOVE R15 R2 0x5C401200, // 00BD MOVE R16 R9 0x5C441400, // 00BE MOVE R17 R10 @@ -2354,10 +2356,10 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x782A0019, // 00C6 JMPF R10 #00E1 0x8828050F, // 00C7 GETMBR R10 R2 K15 0xB82E0000, // 00C8 GETNGBL R11 K0 - 0x882C179D, // 00C9 GETMBR R11 R11 K157 + 0x882C17A0, // 00C9 GETMBR R11 R11 K160 0x1C28140B, // 00CA EQ R10 R10 R11 0x782A0001, // 00CB JMPF R10 #00CE - 0x5828009D, // 00CC LDCONST R10 K157 + 0x582800A0, // 00CC LDCONST R10 K160 0x70020000, // 00CD JMP #00CF 0x5828001B, // 00CE LDCONST R10 K27 0xB82E2600, // 00CF GETNGBL R11 K19 @@ -2367,9 +2369,9 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x782E000B, // 00D3 JMPF R11 #00E0 0xB82E2E00, // 00D4 GETNGBL R11 K23 0x60300018, // 00D5 GETGBL R12 G24 - 0x583400B0, // 00D6 LDCONST R13 K176 + 0x583400B2, // 00D6 LDCONST R13 K178 0x88380323, // 00D7 GETMBR R14 R1 K35 - 0x88381D36, // 00D8 GETMBR R14 R14 K54 + 0x88381D38, // 00D8 GETMBR R14 R14 K56 0x5C3C0400, // 00D9 MOVE R15 R2 0x5C401200, // 00DA MOVE R16 R9 0x8844050F, // 00DB GETMBR R17 R2 K15 @@ -2385,9 +2387,9 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x782A0009, // 00E5 JMPF R10 #00F0 0xB82A2E00, // 00E6 GETNGBL R10 K23 0x602C0018, // 00E7 GETGBL R11 G24 - 0x583000B1, // 00E8 LDCONST R12 K177 + 0x583000B3, // 00E8 LDCONST R12 K179 0x88340323, // 00E9 GETMBR R13 R1 K35 - 0x88341B36, // 00EA GETMBR R13 R13 K54 + 0x88341B38, // 00EA GETMBR R13 R13 K56 0x5C380400, // 00EB MOVE R14 R2 0x5C3C1200, // 00EC MOVE R15 R9 0x7C2C0800, // 00ED CALL R11 4 @@ -2418,7 +2420,7 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ be_str_weak(parse_event_filters_min_no), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0x580800B2, // 0000 LDCONST R2 K178 + 0x580800B4, // 0000 LDCONST R2 K180 0x4C0C0000, // 0001 LDNIL R3 0x4C100000, // 0002 LDNIL R4 0x20100004, // 0003 NE R4 R0 R4 @@ -2429,33 +2431,33 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ 0xA8020024, // 0008 EXBLK 0 #002E 0x5C140800, // 0009 MOVE R5 R4 0x7C140000, // 000A CALL R5 0 - 0xB81B6600, // 000B GETNGBL R6 K179 - 0x8C180DB4, // 000C GETMET R6 R6 K180 - 0x88200BB5, // 000D GETMBR R8 R5 K181 + 0xB81B6A00, // 000B GETNGBL R6 K181 + 0x8C180DB6, // 000C GETMET R6 R6 K182 + 0x88200BB7, // 000D GETMBR R8 R5 K183 0x7C180400, // 000E CALL R6 2 0x781A0012, // 000F JMPF R6 #0023 0x78060011, // 0010 JMPF R1 #0023 - 0x881C0BB5, // 0011 GETMBR R7 R5 K181 - 0x8C1C0FB6, // 0012 GETMET R7 R7 K182 + 0x881C0BB7, // 0011 GETMBR R7 R5 K183 + 0x8C1C0FB8, // 0012 GETMET R7 R7 K184 0x7C1C0200, // 0013 CALL R7 1 0x201C0E01, // 0014 NE R7 R7 R1 0x781E000C, // 0015 JMPF R7 #0023 0xB81E2600, // 0016 GETNGBL R7 K19 0x8C1C0F17, // 0017 GETMET R7 R7 K23 0x60240018, // 0018 GETGBL R9 G24 - 0x582800B7, // 0019 LDCONST R10 K183 - 0x8C2C0DB6, // 001A GETMET R11 R6 K182 + 0x582800B9, // 0019 LDCONST R10 K185 + 0x8C2C0DB8, // 001A GETMET R11 R6 K184 0x7C2C0200, // 001B CALL R11 1 - 0x8C2C17B8, // 001C GETMET R11 R11 K184 + 0x8C2C17BA, // 001C GETMET R11 R11 K186 0x7C2C0200, // 001D CALL R11 1 - 0x8C3003B8, // 001E GETMET R12 R1 K184 + 0x8C3003BA, // 001E GETMET R12 R1 K186 0x7C300200, // 001F CALL R12 1 0x7C240600, // 0020 CALL R9 3 0x7C1C0400, // 0021 CALL R7 2 0x7001FFE5, // 0022 JMP #0009 - 0xB81F6600, // 0023 GETNGBL R7 K179 - 0x8C1C0FB4, // 0024 GETMET R7 R7 K180 - 0x88240BB9, // 0025 GETMBR R9 R5 K185 + 0xB81F6A00, // 0023 GETNGBL R7 K181 + 0x8C1C0FB6, // 0024 GETMET R7 R7 K182 + 0x88240BBB, // 0025 GETMBR R9 R5 K187 0x7C1C0400, // 0026 CALL R7 2 0x4C200000, // 0027 LDNIL R8 0x1C200608, // 0028 EQ R8 R3 R8 @@ -2566,7 +2568,7 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x8818050D, // 0048 GETMBR R6 R2 K13 0x541E0003, // 0049 LDINT R7 4 0x7C100600, // 004A CALL R4 3 - 0x8810054E, // 004B GETMBR R4 R2 K78 + 0x8810054F, // 004B GETMBR R4 R2 K79 0x541600FE, // 004C LDINT R5 255 0x18100805, // 004D LE R4 R4 R5 0x78120008, // 004E JMPF R4 #0058 @@ -2575,11 +2577,11 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x541DFFFD, // 0051 LDINT R7 -2 0x7C100600, // 0052 CALL R4 3 0x8C100329, // 0053 GETMET R4 R1 K41 - 0x8818054E, // 0054 GETMBR R6 R2 K78 + 0x8818054F, // 0054 GETMBR R6 R2 K79 0x581C002A, // 0055 LDCONST R7 K42 0x7C100600, // 0056 CALL R4 3 0x70020014, // 0057 JMP #006D - 0x8810054E, // 0058 GETMBR R4 R2 K78 + 0x8810054F, // 0058 GETMBR R4 R2 K79 0x5416FFFE, // 0059 LDINT R5 65535 0x18100805, // 005A LE R4 R4 R5 0x78120008, // 005B JMPF R4 #0065 @@ -2588,7 +2590,7 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x541DFFFD, // 005E LDINT R7 -2 0x7C100600, // 005F CALL R4 3 0x8C100329, // 0060 GETMET R4 R1 K41 - 0x8818054E, // 0061 GETMBR R6 R2 K78 + 0x8818054F, // 0061 GETMBR R6 R2 K79 0x581C002B, // 0062 LDCONST R7 K43 0x7C100600, // 0063 CALL R4 3 0x70020007, // 0064 JMP #006D @@ -2597,7 +2599,7 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x541DFFFD, // 0067 LDINT R7 -2 0x7C100600, // 0068 CALL R4 3 0x8C100329, // 0069 GETMET R4 R1 K41 - 0x8818054E, // 006A GETMBR R6 R2 K78 + 0x8818054F, // 006A GETMBR R6 R2 K79 0x541E0003, // 006B LDINT R7 4 0x7C100600, // 006C CALL R4 3 0x8C100329, // 006D GETMET R4 R1 K41 @@ -2630,8 +2632,8 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x5820002A, // 0088 LDCONST R8 K42 0x7C140600, // 0089 CALL R5 3 0x70020003, // 008A JMP #008F - 0x900E5D2A, // 008B SETMBR R3 K46 K42 - 0x8C10072F, // 008C GETMET R4 R3 K47 + 0x900E5F2A, // 008B SETMBR R3 K47 K42 + 0x8C100731, // 008C GETMET R4 R3 K49 0x5C180200, // 008D MOVE R6 R1 0x7C100400, // 008E CALL R4 2 0x8C100329, // 008F GETMET R4 R1 K41 @@ -2662,46 +2664,46 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ be_str_weak(process_status_response), &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ - 0x8C0C05BA, // 0000 GETMET R3 R2 K186 - 0x5814005C, // 0001 LDCONST R5 K92 + 0x8C0C05BC, // 0000 GETMET R3 R2 K188 + 0x5814006D, // 0001 LDCONST R5 K109 0x541A00FE, // 0002 LDINT R6 255 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100180, // 0004 GETMET R4 R0 K128 - 0x88180358, // 0005 GETMBR R6 R1 K88 + 0x8C100183, // 0004 GETMET R4 R0 K131 + 0x88180359, // 0005 GETMBR R6 R1 K89 0x7C100400, // 0006 CALL R4 2 0xB8160000, // 0007 GETNGBL R5 K0 0x88140B24, // 0008 GETMBR R5 R5 K36 0x1C140605, // 0009 EQ R5 R3 R5 0x7816000F, // 000A JMPF R5 #001B 0x78120004, // 000B JMPF R4 #0011 - 0x8C1409BB, // 000C GETMET R5 R4 K187 + 0x8C1409BD, // 000C GETMET R5 R4 K189 0x5C1C0200, // 000D MOVE R7 R1 0x7C140400, // 000E CALL R5 2 0x80040A00, // 000F RET 1 R5 0x70020008, // 0010 JMP #001A 0xB8162E00, // 0011 GETNGBL R5 K23 0x60180018, // 0012 GETGBL R6 G24 - 0x581C00BC, // 0013 LDCONST R7 K188 + 0x581C00BE, // 0013 LDCONST R7 K190 0x88200323, // 0014 GETMBR R8 R1 K35 - 0x88201136, // 0015 GETMBR R8 R8 K54 - 0x88240358, // 0016 GETMBR R9 R1 K88 + 0x88201138, // 0015 GETMBR R8 R8 K56 + 0x88240359, // 0016 GETMBR R9 R1 K89 0x7C180600, // 0017 CALL R6 3 0x541E0003, // 0018 LDINT R7 4 0x7C140400, // 0019 CALL R5 2 0x7002000D, // 001A JMP #0029 0xB8162E00, // 001B GETNGBL R5 K23 0x60180018, // 001C GETGBL R6 G24 - 0x581C00BD, // 001D LDCONST R7 K189 + 0x581C00BF, // 001D LDCONST R7 K191 0x5C200600, // 001E MOVE R8 R3 0x7C180400, // 001F CALL R6 2 0x581C0015, // 0020 LDCONST R7 K21 0x7C140400, // 0021 CALL R5 2 0x78120005, // 0022 JMPF R4 #0029 - 0x8C1409BE, // 0023 GETMET R5 R4 K190 + 0x8C1409C0, // 0023 GETMET R5 R4 K192 0x5C1C0200, // 0024 MOVE R7 R1 0x7C140400, // 0025 CALL R5 2 - 0x8C14016E, // 0026 GETMET R5 R0 K110 - 0x881C0358, // 0027 GETMBR R7 R1 K88 + 0x8C140171, // 0026 GETMET R5 R0 K113 + 0x881C0359, // 0027 GETMBR R7 R1 K89 0x7C140400, // 0028 CALL R5 2 0x50140000, // 0029 LDBOOL R5 0 0 0x80040A00, // 002A RET 1 R5 @@ -2736,10 +2738,10 @@ be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ 0x541A34FF, // 0005 LDINT R6 13568 0x541DFFFD, // 0006 LDINT R7 -2 0x7C100600, // 0007 CALL R4 3 - 0x8C10012D, // 0008 GETMET R4 R0 K45 + 0x8C10012E, // 0008 GETMET R4 R0 K46 0x5C180200, // 0009 MOVE R6 R1 0x5C1C0400, // 000A MOVE R7 R2 - 0x58200040, // 000B LDCONST R8 K64 + 0x5820006D, // 000B LDCONST R8 K109 0x7C100800, // 000C CALL R4 4 0x8C100329, // 000D GETMET R4 R1 K41 0x541A3500, // 000E LDINT R6 13569 @@ -2799,7 +2801,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ &be_const_str_solidified, ( &(const binstruction[165]) { /* code */ 0xB8160000, // 0000 GETNGBL R5 K0 - 0x88140B83, // 0001 GETMBR R5 R5 K131 + 0x88140B86, // 0001 GETMBR R5 R5 K134 0x4C180000, // 0002 LDNIL R6 0xB81E2600, // 0003 GETNGBL R7 K19 0x8C1C0F14, // 0004 GETMET R7 R7 K20 @@ -2826,10 +2828,10 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x4C280000, // 0019 LDNIL R10 0x2028020A, // 001A NE R10 R1 R10 0x782A0005, // 001B JMPF R10 #0022 - 0x8C28039E, // 001C GETMET R10 R1 K158 + 0x8C2803A1, // 001C GETMET R10 R1 K161 0x5C300600, // 001D MOVE R12 R3 0x5C340400, // 001E MOVE R13 R2 - 0x8838018D, // 001F GETMBR R14 R0 K141 + 0x88380190, // 001F GETMBR R14 R0 K144 0x7C280800, // 0020 CALL R10 4 0x5C201400, // 0021 MOVE R8 R10 0x4C280000, // 0022 LDNIL R10 @@ -2842,18 +2844,18 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x7C2C0400, // 0029 CALL R11 2 0x782E0003, // 002A JMPF R11 #002F 0x78120002, // 002B JMPF R4 #002F - 0x8C2C11AE, // 002C GETMET R11 R8 K174 + 0x8C2C11B0, // 002C GETMET R11 R8 K176 0x7C2C0200, // 002D CALL R11 1 0x5C281600, // 002E MOVE R10 R11 - 0x882C119F, // 002F GETMBR R11 R8 K159 + 0x882C11A2, // 002F GETMBR R11 R8 K162 0x742E0001, // 0030 JMPT R11 #0033 - 0x882C11A0, // 0031 GETMBR R11 R8 K160 + 0x882C11A3, // 0031 GETMBR R11 R8 K163 0x782E002F, // 0032 JMPF R11 #0063 - 0x8C2C11A1, // 0033 GETMET R11 R8 K161 + 0x8C2C11A4, // 0033 GETMET R11 R8 K164 0x7C2C0200, // 0034 CALL R11 1 0xB8320000, // 0035 GETNGBL R12 K0 - 0x8830193F, // 0036 GETMBR R12 R12 K63 - 0x883019A2, // 0037 GETMBR R12 R12 K162 + 0x88301941, // 0036 GETMBR R12 R12 K65 + 0x883019A5, // 0037 GETMBR R12 R12 K165 0x242C160C, // 0038 GT R11 R11 R12 0x782E0028, // 0039 JMPF R11 #0063 0x602C0012, // 003A GETGBL R11 G18 @@ -2862,9 +2864,9 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x602C0015, // 003D GETGBL R11 G21 0x5432002F, // 003E LDINT R12 48 0x7C2C0200, // 003F CALL R11 1 - 0x8C300BBF, // 0040 GETMET R12 R5 K191 + 0x8C300BC1, // 0040 GETMET R12 R5 K193 0x7C300200, // 0041 CALL R12 1 - 0x8C3401A7, // 0042 GETMET R13 R0 K167 + 0x8C3401AA, // 0042 GETMET R13 R0 K170 0x5C3C1600, // 0043 MOVE R15 R11 0x5C400400, // 0044 MOVE R16 R2 0x5C441800, // 0045 MOVE R17 R12 @@ -2874,7 +2876,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5C3C1600, // 0049 MOVE R15 R11 0x7C340400, // 004A CALL R13 2 0x60340010, // 004B GETGBL R13 G16 - 0x883811C0, // 004C GETMBR R14 R8 K192 + 0x883811C2, // 004C GETMBR R14 R8 K194 0x7C340200, // 004D CALL R13 1 0xA802000F, // 004E EXBLK 0 #005F 0x5C381A00, // 004F MOVE R14 R13 @@ -2883,7 +2885,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5442002F, // 0052 LDINT R16 48 0x7C3C0200, // 0053 CALL R15 1 0x5C2C1E00, // 0054 MOVE R11 R15 - 0x8C3C01A7, // 0055 GETMET R15 R0 K167 + 0x8C3C01AA, // 0055 GETMET R15 R0 K170 0x5C441600, // 0056 MOVE R17 R11 0x5C480400, // 0057 MOVE R18 R2 0x5C4C1C00, // 0058 MOVE R19 R14 @@ -2901,7 +2903,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5432002F, // 0064 LDINT R12 48 0x7C2C0200, // 0065 CALL R11 1 0x5C241600, // 0066 MOVE R9 R11 - 0x8C2C01A7, // 0067 GETMET R11 R0 K167 + 0x8C2C01AA, // 0067 GETMET R11 R0 K170 0x5C341200, // 0068 MOVE R13 R9 0x5C380400, // 0069 MOVE R14 R2 0x5C3C1000, // 006A MOVE R15 R8 @@ -2914,8 +2916,8 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x78120009, // 0071 JMPF R4 #007C 0xB82E2E00, // 0072 GETNGBL R11 K23 0x60300018, // 0073 GETGBL R12 G24 - 0x583400C1, // 0074 LDCONST R13 K193 - 0x88380736, // 0075 GETMBR R14 R3 K54 + 0x583400C3, // 0074 LDCONST R13 K195 + 0x88380738, // 0075 GETMBR R14 R3 K56 0x5C3C0400, // 0076 MOVE R15 R2 0x5C400C00, // 0077 MOVE R16 R6 0x5C441400, // 0078 MOVE R17 R10 @@ -2932,7 +2934,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x542E002F, // 0083 LDINT R11 48 0x7C280200, // 0084 CALL R10 1 0x5C241400, // 0085 MOVE R9 R10 - 0x8C2801A9, // 0086 GETMET R10 R0 K169 + 0x8C2801AB, // 0086 GETMET R10 R0 K171 0x5C301200, // 0087 MOVE R12 R9 0x5C340400, // 0088 MOVE R13 R2 0x8838050F, // 0089 GETMBR R14 R2 K15 @@ -2944,8 +2946,8 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x782A0013, // 008F JMPF R10 #00A4 0xB82A2E00, // 0090 GETNGBL R10 K23 0x602C0018, // 0091 GETGBL R11 G24 - 0x583000C2, // 0092 LDCONST R12 K194 - 0x88340736, // 0093 GETMBR R13 R3 K54 + 0x583000C4, // 0092 LDCONST R12 K196 + 0x88340738, // 0093 GETMBR R13 R3 K56 0x60380008, // 0094 GETGBL R14 G8 0x5C3C0400, // 0095 MOVE R15 R2 0x7C380200, // 0096 CALL R14 1 @@ -2953,10 +2955,10 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x8840050F, // 0098 GETMBR R16 R2 K15 0x8844050F, // 0099 GETMBR R17 R2 K15 0xB84A0000, // 009A GETNGBL R18 K0 - 0x8848259D, // 009B GETMBR R18 R18 K157 + 0x884825A0, // 009B GETMBR R18 R18 K160 0x1C442212, // 009C EQ R17 R17 R18 0x78460001, // 009D JMPF R17 #00A0 - 0x5844009D, // 009E LDCONST R17 K157 + 0x584400A0, // 009E LDCONST R17 K160 0x70020000, // 009F JMP #00A1 0x5844001B, // 00A0 LDCONST R17 K27 0x7C2C0C00, // 00A1 CALL R11 6 @@ -2989,7 +2991,7 @@ be_local_closure(class_Matter_IM_send_status, /* name */ 0x880C0126, // 0000 GETMBR R3 R0 K38 0x8C0C0727, // 0001 GETMET R3 R3 K39 0xB8160000, // 0002 GETNGBL R5 K0 - 0x8C140BC3, // 0003 GETMET R5 R5 K195 + 0x8C140BC5, // 0003 GETMET R5 R5 K197 0x5C1C0200, // 0004 MOVE R7 R1 0x5C200400, // 0005 MOVE R8 R2 0x7C140600, // 0006 CALL R5 3 @@ -3018,18 +3020,18 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ be_str_weak(process_incoming), &be_const_str_solidified, ( &(const binstruction[124]) { /* code */ - 0x880803C4, // 0000 GETMBR R2 R1 K196 + 0x880803C6, // 0000 GETMBR R2 R1 K198 0x1C0C052B, // 0001 EQ R3 R2 K43 0x780E000D, // 0002 JMPF R3 #0011 - 0x880C0189, // 0003 GETMBR R3 R0 K137 - 0x8C0C07C5, // 0004 GETMET R3 R3 K197 - 0x88140395, // 0005 GETMBR R5 R1 K149 - 0x881803A5, // 0006 GETMBR R6 R1 K165 + 0x880C018C, // 0003 GETMBR R3 R0 K140 + 0x8C0C07C7, // 0004 GETMET R3 R3 K199 + 0x88140398, // 0005 GETMBR R5 R1 K152 + 0x881803A8, // 0006 GETMBR R6 R1 K168 0x7C0C0600, // 0007 CALL R3 3 0x4C100000, // 0008 LDNIL R4 0x20100604, // 0009 NE R4 R3 R4 0x78120004, // 000A JMPF R4 #0010 - 0x8C1001C6, // 000B GETMET R4 R0 K198 + 0x8C1001C8, // 000B GETMET R4 R0 K200 0x5C180200, // 000C MOVE R6 R1 0x5C1C0600, // 000D MOVE R7 R3 0x7C100600, // 000E CALL R4 3 @@ -3038,28 +3040,28 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x540E0007, // 0011 LDINT R3 8 0x1C0C0403, // 0012 EQ R3 R2 R3 0x780E000C, // 0013 JMPF R3 #0021 - 0x880C018B, // 0014 GETMBR R3 R0 K139 - 0x8C0C07C5, // 0015 GETMET R3 R3 K197 - 0x88140395, // 0016 GETMBR R5 R1 K149 - 0x881803A5, // 0017 GETMBR R6 R1 K165 + 0x880C018E, // 0014 GETMBR R3 R0 K142 + 0x8C0C07C7, // 0015 GETMET R3 R3 K199 + 0x88140398, // 0016 GETMBR R5 R1 K152 + 0x881803A8, // 0017 GETMBR R6 R1 K168 0x7C0C0600, // 0018 CALL R3 3 0x4C100000, // 0019 LDNIL R4 0x20100604, // 001A NE R4 R3 R4 0x78120004, // 001B JMPF R4 #0021 - 0x8C1001C7, // 001C GETMET R4 R0 K199 + 0x8C1001C9, // 001C GETMET R4 R0 K201 0x5C180200, // 001D MOVE R6 R1 0x5C1C0600, // 001E MOVE R7 R3 0x7C100600, // 001F CALL R4 3 0x80040800, // 0020 RET 1 R4 0xB80E0000, // 0021 GETNGBL R3 K0 - 0x880C0783, // 0022 GETMBR R3 R3 K131 - 0x8C0C07A4, // 0023 GETMET R3 R3 K164 - 0x88140395, // 0024 GETMBR R5 R1 K149 - 0x881803A5, // 0025 GETMBR R6 R1 K165 + 0x880C0786, // 0022 GETMBR R3 R3 K134 + 0x8C0C07A7, // 0023 GETMET R3 R3 K167 + 0x88140398, // 0024 GETMBR R5 R1 K152 + 0x881803A8, // 0025 GETMBR R6 R1 K168 0x7C0C0600, // 0026 CALL R3 3 - 0x1C10052A, // 0027 EQ R4 R2 K42 + 0x1C10052D, // 0027 EQ R4 R2 K45 0x78120005, // 0028 JMPF R4 #002F - 0x8C1001C8, // 0029 GETMET R4 R0 K200 + 0x8C1001CA, // 0029 GETMET R4 R0 K202 0x5C180200, // 002A MOVE R6 R1 0x5C1C0600, // 002B MOVE R7 R3 0x7C100600, // 002C CALL R4 3 @@ -3067,10 +3069,10 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x7002004A, // 002E JMP #007A 0x1C10052B, // 002F EQ R4 R2 K43 0x78120008, // 0030 JMPF R4 #003A - 0x8C1001C9, // 0031 GETMET R4 R0 K201 + 0x8C1001CB, // 0031 GETMET R4 R0 K203 0x5C180200, // 0032 MOVE R6 R1 0x7C100400, // 0033 CALL R4 2 - 0x8C1001A6, // 0034 GETMET R4 R0 K166 + 0x8C1001A9, // 0034 GETMET R4 R0 K169 0x5C180200, // 0035 MOVE R6 R1 0x5C1C0600, // 0036 MOVE R7 R3 0x7C100600, // 0037 CALL R4 3 @@ -3078,10 +3080,10 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x7002003F, // 0039 JMP #007A 0x1C100515, // 003A EQ R4 R2 K21 0x78120008, // 003B JMPF R4 #0045 - 0x8C1001C9, // 003C GETMET R4 R0 K201 + 0x8C1001CB, // 003C GETMET R4 R0 K203 0x5C180200, // 003D MOVE R6 R1 0x7C100400, // 003E CALL R4 2 - 0x8C1001CA, // 003F GETMET R4 R0 K202 + 0x8C1001CC, // 003F GETMET R4 R0 K204 0x5C180200, // 0040 MOVE R6 R1 0x5C1C0600, // 0041 MOVE R7 R3 0x7C100600, // 0042 CALL R4 3 @@ -3102,10 +3104,10 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120005, // 0051 LDINT R4 6 0x1C100404, // 0052 EQ R4 R2 R4 0x78120008, // 0053 JMPF R4 #005D - 0x8C1001C9, // 0054 GETMET R4 R0 K201 + 0x8C1001CB, // 0054 GETMET R4 R0 K203 0x5C180200, // 0055 MOVE R6 R1 0x7C100400, // 0056 CALL R4 2 - 0x8C1001CB, // 0057 GETMET R4 R0 K203 + 0x8C1001CD, // 0057 GETMET R4 R0 K205 0x5C180200, // 0058 MOVE R6 R1 0x5C1C0600, // 0059 MOVE R7 R3 0x7C100600, // 005A CALL R4 3 @@ -3120,7 +3122,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120007, // 0063 LDINT R4 8 0x1C100404, // 0064 EQ R4 R2 R4 0x78120005, // 0065 JMPF R4 #006C - 0x8C1001CC, // 0066 GETMET R4 R0 K204 + 0x8C1001CE, // 0066 GETMET R4 R0 K206 0x5C180200, // 0067 MOVE R6 R1 0x5C1C0600, // 0068 MOVE R7 R3 0x7C100600, // 0069 CALL R4 3 @@ -3135,7 +3137,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120009, // 0072 LDINT R4 10 0x1C100404, // 0073 EQ R4 R2 R4 0x78120004, // 0074 JMPF R4 #007A - 0x8C1001CD, // 0075 GETMET R4 R0 K205 + 0x8C1001CF, // 0075 GETMET R4 R0 K207 0x5C180200, // 0076 MOVE R6 R1 0x5C1C0600, // 0077 MOVE R7 R3 0x7C100600, // 0078 CALL R4 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h index 39e8336e9..0da5fa4de 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h @@ -25,35 +25,35 @@ static const bvalue be_ktab_class_Matter_IM_Subscription[50] = { /* K17 */ be_nested_str_weak(subscription_id), /* K18 */ be_nested_str_weak(session), /* K19 */ be_nested_str_weak(min_interval_floor), - /* K20 */ be_const_int(0), - /* K21 */ be_nested_str_weak(min_interval), - /* K22 */ be_nested_str_weak(max_interval_ceiling), - /* K23 */ be_nested_str_weak(max_interval), - /* K24 */ be_nested_str_weak(fabric_filtered), - /* K25 */ be_nested_str_weak(im), - /* K26 */ be_nested_str_weak(device), - /* K27 */ be_nested_str_weak(attributes_requests), - /* K28 */ be_nested_str_weak(push), - /* K29 */ be_nested_str_weak(matter), - /* K30 */ be_nested_str_weak(Path), - /* K31 */ be_nested_str_weak(stop_iteration), - /* K32 */ be_nested_str_weak(IM), - /* K33 */ be_nested_str_weak(parse_event_filters_min_no), - /* K34 */ be_nested_str_weak(event_filters), - /* K35 */ be_nested_str_weak(clear_before_arm), - /* K36 */ be_nested_str_weak(is_keep_alive), - /* K37 */ be_nested_str_weak(restart_from), - /* K38 */ be_nested_str_weak(resize), - /* K39 */ be_nested_str_weak(tasmota), - /* K40 */ be_nested_str_weak(millis), - /* K41 */ be_nested_str_weak(expiration), - /* K42 */ be_nested_str_weak(MAX_INTERVAL_MARGIN), - /* K43 */ be_nested_str_weak(not_before), - /* K44 */ be_const_int(1), - /* K45 */ be_nested_str_weak(log), - /* K46 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i), - /* K47 */ be_const_int(3), - /* K48 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), + /* K20 */ be_nested_str_weak(min_interval), + /* K21 */ be_nested_str_weak(max_interval_ceiling), + /* K22 */ be_nested_str_weak(max_interval), + /* K23 */ be_nested_str_weak(fabric_filtered), + /* K24 */ be_nested_str_weak(im), + /* K25 */ be_nested_str_weak(device), + /* K26 */ be_nested_str_weak(attributes_requests), + /* K27 */ be_nested_str_weak(push), + /* K28 */ be_nested_str_weak(matter), + /* K29 */ be_nested_str_weak(Path), + /* K30 */ be_nested_str_weak(stop_iteration), + /* K31 */ be_nested_str_weak(IM), + /* K32 */ be_nested_str_weak(parse_event_filters_min_no), + /* K33 */ be_nested_str_weak(event_filters), + /* K34 */ be_nested_str_weak(clear_before_arm), + /* K35 */ be_nested_str_weak(is_keep_alive), + /* K36 */ be_nested_str_weak(restart_from), + /* K37 */ be_nested_str_weak(resize), + /* K38 */ be_nested_str_weak(tasmota), + /* K39 */ be_nested_str_weak(millis), + /* K40 */ be_nested_str_weak(expiration), + /* K41 */ be_nested_str_weak(MAX_INTERVAL_MARGIN), + /* K42 */ be_nested_str_weak(not_before), + /* K43 */ be_const_int(1), + /* K44 */ be_nested_str_weak(log), + /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i), + /* K46 */ be_const_int(3), + /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), + /* K48 */ be_const_int(3), /* K49 */ be_nested_str_weak(remove_sub), }; @@ -220,15 +220,15 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ 0x90022202, // 0001 SETMBR R0 K17 R2 0x90022403, // 0002 SETMBR R0 K18 R3 0x88140913, // 0003 GETMBR R5 R4 K19 - 0x14180B14, // 0004 LT R6 R5 K20 + 0x14180B01, // 0004 LT R6 R5 K1 0x781A0000, // 0005 JMPF R6 #0007 - 0x58140014, // 0006 LDCONST R5 K20 + 0x58140001, // 0006 LDCONST R5 K1 0x541A003B, // 0007 LDINT R6 60 0x24180A06, // 0008 GT R6 R5 R6 0x781A0000, // 0009 JMPF R6 #000B 0x5416003B, // 000A LDINT R5 60 - 0x90022A05, // 000B SETMBR R0 K21 R5 - 0x88180916, // 000C GETMBR R6 R4 K22 + 0x90022805, // 000B SETMBR R0 K20 R5 + 0x88180915, // 000C GETMBR R6 R4 K21 0x541E003B, // 000D LDINT R7 60 0x141C0C07, // 000E LT R7 R6 R7 0x781E0000, // 000F JMPF R7 #0011 @@ -238,52 +238,52 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ 0x781E0000, // 0013 JMPF R7 #0015 0x541A0E0F, // 0014 LDINT R6 3600 0x541A003B, // 0015 LDINT R6 60 - 0x90022E06, // 0016 SETMBR R0 K23 R6 + 0x90022C06, // 0016 SETMBR R0 K22 R6 0x501C0000, // 0017 LDBOOL R7 0 0 0x90021E07, // 0018 SETMBR R0 K15 R7 - 0x881C0918, // 0019 GETMBR R7 R4 K24 - 0x90023007, // 001A SETMBR R0 K24 R7 - 0x881C0319, // 001B GETMBR R7 R1 K25 - 0x881C0F1A, // 001C GETMBR R7 R7 K26 + 0x881C0917, // 0019 GETMBR R7 R4 K23 + 0x90022E07, // 001A SETMBR R0 K23 R7 + 0x881C0318, // 001B GETMBR R7 R1 K24 + 0x881C0F19, // 001C GETMBR R7 R7 K25 0x60200012, // 001D GETGBL R8 G18 0x7C200000, // 001E CALL R8 0 0x90021008, // 001F SETMBR R0 K8 R8 - 0x8820091B, // 0020 GETMBR R8 R4 K27 + 0x8820091A, // 0020 GETMBR R8 R4 K26 0x4C240000, // 0021 LDNIL R9 0x20201009, // 0022 NE R8 R8 R9 0x78220012, // 0023 JMPF R8 #0037 0x60200010, // 0024 GETGBL R8 G16 - 0x8824091B, // 0025 GETMBR R9 R4 K27 + 0x8824091A, // 0025 GETMBR R9 R4 K26 0x7C200200, // 0026 CALL R8 1 0xA802000B, // 0027 EXBLK 0 #0034 0x5C241000, // 0028 MOVE R9 R8 0x7C240000, // 0029 CALL R9 0 0x88280108, // 002A GETMBR R10 R0 K8 - 0x8C28151C, // 002B GETMET R10 R10 K28 - 0xB8323A00, // 002C GETNGBL R12 K29 - 0x8C30191E, // 002D GETMET R12 R12 K30 + 0x8C28151B, // 002B GETMET R10 R10 K27 + 0xB8323800, // 002C GETNGBL R12 K28 + 0x8C30191D, // 002D GETMET R12 R12 K29 0x88381309, // 002E GETMBR R14 R9 K9 0x883C130A, // 002F GETMBR R15 R9 K10 0x8840130B, // 0030 GETMBR R16 R9 K11 0x7C300800, // 0031 CALL R12 4 0x7C280400, // 0032 CALL R10 2 0x7001FFF3, // 0033 JMP #0028 - 0x5820001F, // 0034 LDCONST R8 K31 + 0x5820001E, // 0034 LDCONST R8 K30 0xAC200200, // 0035 CATCH R8 1 0 0xB0080000, // 0036 RAISE 2 R0 R0 - 0xB8223A00, // 0037 GETNGBL R8 K29 - 0x88201120, // 0038 GETMBR R8 R8 K32 - 0x8C201121, // 0039 GETMET R8 R8 K33 - 0x88280922, // 003A GETMBR R10 R4 K34 + 0xB8223800, // 0037 GETNGBL R8 K28 + 0x8820111F, // 0038 GETMBR R8 R8 K31 + 0x8C201120, // 0039 GETMET R8 R8 K32 + 0x88280921, // 003A GETMBR R10 R4 K33 0x4C2C0000, // 003B LDNIL R11 0x7C200600, // 003C CALL R8 3 0x60240012, // 003D GETGBL R9 G18 0x7C240000, // 003E CALL R9 0 0x90021A09, // 003F SETMBR R0 K13 R9 - 0x8C240123, // 0040 GETMET R9 R0 K35 + 0x8C240122, // 0040 GETMET R9 R0 K34 0x7C240200, // 0041 CALL R9 1 0x50240000, // 0042 LDBOOL R9 0 0 - 0x90024809, // 0043 SETMBR R0 K36 R9 + 0x90024609, // 0043 SETMBR R0 K35 R9 0x80000000, // 0044 RET 0 }) ) @@ -332,7 +332,7 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n 0x00080506, // 0015 ADD R2 R2 K6 0x7001FFE9, // 0016 JMP #0001 0x880C010D, // 0017 GETMBR R3 R0 K13 - 0x8C0C071C, // 0018 GETMET R3 R3 K28 + 0x8C0C071B, // 0018 GETMET R3 R3 K27 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 0x80000000, // 001B RET 0 @@ -374,7 +374,7 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* 0x78060008, // 000C JMPF R1 #0016 0x88040102, // 000D GETMBR R1 R0 K2 0x94040307, // 000E GETIDX R1 R1 K7 - 0x8C040325, // 000F GETMET R1 R1 K37 + 0x8C040324, // 000F GETMET R1 R1 K36 0x880C0100, // 0010 GETMBR R3 R0 K0 0x7C040400, // 0011 CALL R1 2 0x88040102, // 0012 GETMBR R1 R0 K2 @@ -383,7 +383,7 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* 0x70020016, // 0015 JMP #002D 0x60040012, // 0016 GETGBL R1 G18 0x7C040000, // 0017 CALL R1 0 - 0x8C080326, // 0018 GETMET R2 R1 K38 + 0x8C080325, // 0018 GETMET R2 R1 K37 0x6010000C, // 0019 GETGBL R4 G12 0x88140102, // 001A GETMBR R5 R0 K2 0x7C100200, // 001B CALL R4 1 @@ -396,7 +396,7 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* 0x780E0009, // 0022 JMPF R3 #002D 0x880C0102, // 0023 GETMBR R3 R0 K2 0x940C0602, // 0024 GETIDX R3 R3 R2 - 0x8C0C0725, // 0025 GETMET R3 R3 K37 + 0x8C0C0724, // 0025 GETMET R3 R3 K36 0x88140100, // 0026 GETMBR R5 R0 K0 0x7C0C0400, // 0027 CALL R3 2 0x880C0102, // 0028 GETMBR R3 R0 K2 @@ -433,30 +433,30 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ 0x80000200, // 0002 RET 0 0x50040000, // 0003 LDBOOL R1 0 0 0x90021E01, // 0004 SETMBR R0 K15 R1 - 0xB8064E00, // 0005 GETNGBL R1 K39 - 0x8C040328, // 0006 GETMET R1 R1 K40 + 0xB8064C00, // 0005 GETNGBL R1 K38 + 0x8C040327, // 0006 GETMET R1 R1 K39 0x7C040200, // 0007 CALL R1 1 - 0x88080117, // 0008 GETMBR R2 R0 K23 - 0x880C012A, // 0009 GETMBR R3 R0 K42 + 0x88080116, // 0008 GETMBR R2 R0 K22 + 0x880C0129, // 0009 GETMBR R3 R0 K41 0x04080403, // 000A SUB R2 R2 R3 0x540E03E7, // 000B LDINT R3 1000 0x08080403, // 000C MUL R2 R2 R3 0x00080202, // 000D ADD R2 R1 R2 - 0x90025202, // 000E SETMBR R0 K41 R2 - 0x88080115, // 000F GETMBR R2 R0 K21 + 0x90025002, // 000E SETMBR R0 K40 R2 + 0x88080114, // 000F GETMBR R2 R0 K20 0x540E03E7, // 0010 LDINT R3 1000 0x08080403, // 0011 MUL R2 R2 R3 0x00080202, // 0012 ADD R2 R1 R2 - 0x0408052C, // 0013 SUB R2 R2 K44 - 0x90025602, // 0014 SETMBR R0 K43 R2 - 0x88080124, // 0015 GETMBR R2 R0 K36 + 0x0408052B, // 0013 SUB R2 R2 K43 + 0x90025402, // 0014 SETMBR R0 K42 R2 + 0x88080123, // 0015 GETMBR R2 R0 K35 0x740A0006, // 0016 JMPT R2 #001E - 0xB80A5A00, // 0017 GETNGBL R2 K45 + 0xB80A5800, // 0017 GETNGBL R2 K44 0x600C0018, // 0018 GETGBL R3 G24 - 0x5810002E, // 0019 LDCONST R4 K46 + 0x5810002D, // 0019 LDCONST R4 K45 0x88140111, // 001A GETMBR R5 R0 K17 0x7C0C0400, // 001B CALL R3 2 - 0x5810002F, // 001C LDCONST R4 K47 + 0x5810002E, // 001C LDCONST R4 K46 0x7C080400, // 001D CALL R2 2 0x80000000, // 001E RET 0 }) @@ -524,12 +524,12 @@ be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ be_str_weak(remove_self), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xB8065A00, // 0000 GETNGBL R1 K45 + 0xB8065800, // 0000 GETNGBL R1 K44 0x60080008, // 0001 GETGBL R2 G8 0x880C0111, // 0002 GETMBR R3 R0 K17 0x7C080200, // 0003 CALL R2 1 - 0x000A6002, // 0004 ADD R2 K48 R2 - 0x580C002F, // 0005 LDCONST R3 K47 + 0x000A5E02, // 0004 ADD R2 K47 R2 + 0x580C0030, // 0005 LDCONST R3 K48 0x7C040400, // 0006 CALL R1 2 0x88040110, // 0007 GETMBR R1 R0 K16 0x8C040331, // 0008 GETMET R1 R1 K49 @@ -577,8 +577,8 @@ be_local_class(Matter_IM_Subscription, })), be_str_weak(Matter_IM_Subscription) ); -// compact class 'Matter_IM_Subscription_Shop' ktab size: 33, total: 51 (saved 144 bytes) -static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[33] = { +// compact class 'Matter_IM_Subscription_Shop' ktab size: 34, total: 51 (saved 136 bytes) +static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[34] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), /* K2 */ be_nested_str_weak(wait_status), @@ -594,10 +594,10 @@ static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[33] = { /* K12 */ be_nested_str_weak(expiration), /* K13 */ be_nested_str_weak(send_subscribe_heartbeat), /* K14 */ be_nested_str_weak(re_arm), - /* K15 */ be_nested_str_weak(attribute_updated_ctx), - /* K16 */ be_const_int(1), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(remove), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(attribute_updated_ctx), + /* K17 */ be_nested_str_weak(remove), + /* K18 */ be_const_int(1), /* K19 */ be_nested_str_weak(crypto), /* K20 */ be_nested_str_weak(random), /* K21 */ be_const_int(2), @@ -608,10 +608,11 @@ static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[33] = { /* K26 */ be_nested_str_weak(push), /* K27 */ be_nested_str_weak(event_published), /* K28 */ be_nested_str_weak(session), - /* K29 */ be_nested_str_weak(_sessions), - /* K30 */ be_nested_str_weak(remove_by_session), - /* K31 */ be_nested_str_weak(stop_iteration), - /* K32 */ be_nested_str_weak(subscription_id), + /* K29 */ be_const_int(1), + /* K30 */ be_nested_str_weak(_sessions), + /* K31 */ be_nested_str_weak(remove_by_session), + /* K32 */ be_nested_str_weak(stop_iteration), + /* K33 */ be_nested_str_weak(subscription_id), }; @@ -743,7 +744,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n be_str_weak(attribute_updated_ctx), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 + 0x580C000F, // 0000 LDCONST R3 K15 0x6010000C, // 0001 GETGBL R4 G12 0x88140101, // 0002 GETMBR R5 R0 K1 0x7C100200, // 0003 CALL R4 1 @@ -751,11 +752,11 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n 0x78120007, // 0005 JMPF R4 #000E 0x88100101, // 0006 GETMBR R4 R0 K1 0x94100803, // 0007 GETIDX R4 R4 R3 - 0x8C10090F, // 0008 GETMET R4 R4 K15 + 0x8C100910, // 0008 GETMET R4 R4 K16 0x5C180200, // 0009 MOVE R6 R1 0x5C1C0400, // 000A MOVE R7 R2 0x7C100600, // 000B CALL R4 3 - 0x000C0710, // 000C ADD R3 R3 K16 + 0x000C070B, // 000C ADD R3 R3 K11 0x7001FFF2, // 000D JMP #0001 0x80000000, // 000E RET 0 }) @@ -781,7 +782,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ be_str_weak(remove_sub), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x58080011, // 0000 LDCONST R2 K17 + 0x5808000F, // 0000 LDCONST R2 K15 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -792,11 +793,11 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ 0x1C0C0601, // 0008 EQ R3 R3 R1 0x780E0004, // 0009 JMPF R3 #000F 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x8C0C0712, // 000B GETMET R3 R3 K18 + 0x8C0C0711, // 000B GETMET R3 R3 K17 0x5C140400, // 000C MOVE R5 R2 0x7C0C0400, // 000D CALL R3 2 0x70020000, // 000E JMP #0010 - 0x0008050B, // 000F ADD R2 R2 K11 + 0x00080512, // 000F ADD R2 R2 K18 0x7001FFEF, // 0010 JMP #0001 0x80000000, // 0011 RET 0 }) @@ -827,7 +828,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name * 0x581C0015, // 0002 LDCONST R7 K21 0x7C140400, // 0003 CALL R5 2 0x8C140B16, // 0004 GETMET R5 R5 K22 - 0x581C0000, // 0005 LDCONST R7 K0 + 0x581C000F, // 0005 LDCONST R7 K15 0x58200015, // 0006 LDCONST R8 K21 0x7C140600, // 0007 CALL R5 3 0x8C180117, // 0008 GETMET R6 R0 K23 @@ -838,7 +839,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name * 0x58200015, // 000D LDCONST R8 K21 0x7C180400, // 000E CALL R6 2 0x8C180D16, // 000F GETMET R6 R6 K22 - 0x58200000, // 0010 LDCONST R8 K0 + 0x5820000F, // 0010 LDCONST R8 K15 0x58240015, // 0011 LDCONST R9 K21 0x7C180600, // 0012 CALL R6 3 0x5C140C00, // 0013 MOVE R5 R6 @@ -879,7 +880,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ be_str_weak(event_published), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x58080011, // 0000 LDCONST R2 K17 + 0x5808000F, // 0000 LDCONST R2 K15 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -890,7 +891,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ 0x8C0C071B, // 0008 GETMET R3 R3 K27 0x5C140200, // 0009 MOVE R5 R1 0x7C0C0400, // 000A CALL R3 2 - 0x00080510, // 000B ADD R2 R2 K16 + 0x0008050B, // 000B ADD R2 R2 K11 0x7001FFF3, // 000C JMP #0001 0x80000000, // 000D RET 0 }) @@ -916,7 +917,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name be_str_weak(remove_by_session), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0x58080011, // 0000 LDCONST R2 K17 + 0x5808000F, // 0000 LDCONST R2 K15 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -928,11 +929,11 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name 0x1C0C0601, // 0009 EQ R3 R3 R1 0x780E0004, // 000A JMPF R3 #0010 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x8C0C0712, // 000C GETMET R3 R3 K18 + 0x8C0C0711, // 000C GETMET R3 R3 K17 0x5C140400, // 000D MOVE R5 R2 0x7C0C0400, // 000E CALL R3 2 0x70020000, // 000F JMP #0011 - 0x0008050B, // 0010 ADD R2 R2 K11 + 0x0008051D, // 0010 ADD R2 R2 K29 0x7001FFEE, // 0011 JMP #0001 0x80000000, // 0012 RET 0 }) @@ -959,16 +960,16 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name * &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x880C031D, // 0001 GETMBR R3 R1 K29 + 0x880C031E, // 0001 GETMBR R3 R1 K30 0x7C080200, // 0002 CALL R2 1 0xA8020005, // 0003 EXBLK 0 #000A 0x5C0C0400, // 0004 MOVE R3 R2 0x7C0C0000, // 0005 CALL R3 0 - 0x8C10011E, // 0006 GETMET R4 R0 K30 + 0x8C10011F, // 0006 GETMET R4 R0 K31 0x5C180600, // 0007 MOVE R6 R3 0x7C100400, // 0008 CALL R4 2 0x7001FFF9, // 0009 JMP #0004 - 0x5808001F, // 000A LDCONST R2 K31 + 0x58080020, // 000A LDCONST R2 K32 0xAC080200, // 000B CATCH R2 1 0 0xB0080000, // 000C RAISE 2 R0 R0 0x80000000, // 000D RET 0 @@ -995,7 +996,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ be_str_weak(get_by_id), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x58080011, // 0000 LDCONST R2 K17 + 0x5808000F, // 0000 LDCONST R2 K15 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -1003,7 +1004,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ 0x780E0009, // 0005 JMPF R3 #0010 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x880C0720, // 0008 GETMBR R3 R3 K32 + 0x880C0721, // 0008 GETMBR R3 R3 K33 0x1C0C0601, // 0009 EQ R3 R3 R1 0x780E0002, // 000A JMPF R3 #000E 0x880C0101, // 000B GETMBR R3 R0 K1 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index fe1bf4967..509115e99 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Frame; -// compact class 'Matter_Frame' ktab size: 77, total: 200 (saved 984 bytes) -static const bvalue be_ktab_class_Matter_Frame[77] = { +// compact class 'Matter_Frame' ktab size: 80, total: 200 (saved 960 bytes) +static const bvalue be_ktab_class_Matter_Frame[80] = { /* K0 */ be_nested_str_weak(session), /* K1 */ be_nested_str_weak(get_node_id), /* K2 */ be_nested_str_weak(crypto), @@ -50,39 +50,42 @@ static const bvalue be_ktab_class_Matter_Frame[77] = { /* K41 */ be_nested_str_weak(protocol_id), /* K42 */ be_nested_str_weak(ack_message_counter), /* K43 */ be_nested_str_weak(app_payload_idx), - /* K44 */ be_nested_str_weak(get), - /* K45 */ be_nested_str_weak(getbits), - /* K46 */ be_nested_str_weak(sec_mx), - /* K47 */ be_nested_str_weak(matter), - /* K48 */ be_nested_str_weak(Frame), - /* K49 */ be_nested_str_weak(decode_header), - /* K50 */ be_nested_str_weak(decode_payload), - /* K51 */ be_const_int(1), - /* K52 */ be_nested_str_weak(initiator_session_id), - /* K53 */ be_nested_str_weak(counter_snd_next), - /* K54 */ be_nested_str_weak(_counter_insecure_snd), - /* K55 */ be_nested_str_weak(next), - /* K56 */ be_nested_str_weak(get_opcode_name), - /* K57 */ be_nested_str_weak(0x_X2502X), - /* K58 */ be_nested_str_weak(log), - /* K59 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), - /* K60 */ be_const_int(3), - /* K61 */ be_nested_str_weak(get_i2r), - /* K62 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), - /* K63 */ be_const_int(2), + /* K44 */ be_const_int(0), + /* K45 */ be_nested_str_weak(get), + /* K46 */ be_nested_str_weak(getbits), + /* K47 */ be_nested_str_weak(sec_mx), + /* K48 */ be_nested_str_weak(matter), + /* K49 */ be_nested_str_weak(Frame), + /* K50 */ be_nested_str_weak(decode_header), + /* K51 */ be_nested_str_weak(decode_payload), + /* K52 */ be_const_int(1), + /* K53 */ be_nested_str_weak(initiator_session_id), + /* K54 */ be_nested_str_weak(counter_snd_next), + /* K55 */ be_nested_str_weak(_counter_insecure_snd), + /* K56 */ be_nested_str_weak(next), + /* K57 */ be_nested_str_weak(get_opcode_name), + /* K58 */ be_nested_str_weak(0x_X2502X), + /* K59 */ be_nested_str_weak(log), + /* K60 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), + /* K61 */ be_const_int(3), + /* K62 */ be_nested_str_weak(get_i2r), + /* K63 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), /* K64 */ be_nested_str_weak(get_i2r_privacy), /* K65 */ be_const_int(2147483647), - /* K66 */ be_nested_str_weak(AES_CTR), - /* K67 */ be_nested_str_weak(decrypt), - /* K68 */ be_nested_str_weak(peer_node_id), - /* K69 */ be_nested_str_weak(decrypt1), - /* K70 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), - /* K71 */ be_const_class(be_class_Matter_Frame), - /* K72 */ be_nested_str_weak(_ip), - /* K73 */ be_nested_str_weak(_port), - /* K74 */ be_nested_str_weak(_exchange_id), - /* K75 */ be_nested_str_weak(x_flag_sx), - /* K76 */ be_nested_str_weak(vendor_id), + /* K66 */ be_const_int(1), + /* K67 */ be_nested_str_weak(AES_CTR), + /* K68 */ be_nested_str_weak(decrypt), + /* K69 */ be_const_int(3), + /* K70 */ be_nested_str_weak(peer_node_id), + /* K71 */ be_nested_str_weak(decrypt1), + /* K72 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), + /* K73 */ be_const_class(be_class_Matter_Frame), + /* K74 */ be_nested_str_weak(_ip), + /* K75 */ be_nested_str_weak(_port), + /* K76 */ be_nested_str_weak(_exchange_id), + /* K77 */ be_nested_str_weak(x_flag_sx), + /* K78 */ be_const_int(2), + /* K79 */ be_nested_str_weak(vendor_id), }; @@ -434,27 +437,27 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ be_str_weak(decode_header), &be_const_str_solidified, ( &(const binstruction[121]) { /* code */ - 0x58040015, // 0000 LDCONST R1 K21 + 0x5804002C, // 0000 LDCONST R1 K44 0x88080103, // 0001 GETMBR R2 R0 K3 - 0x8C0C052C, // 0002 GETMET R3 R2 K44 - 0x58140015, // 0003 LDCONST R5 K21 + 0x8C0C052D, // 0002 GETMET R3 R2 K45 + 0x5814002C, // 0003 LDCONST R5 K44 0x5818000B, // 0004 LDCONST R6 K11 0x7C0C0600, // 0005 CALL R3 3 0x90021403, // 0006 SETMBR R0 K10 R3 0x880C010A, // 0007 GETMBR R3 R0 K10 0x541200F7, // 0008 LDINT R4 248 0x2C0C0604, // 0009 AND R3 R3 R4 - 0x200C0715, // 000A NE R3 R3 K21 + 0x200C072C, // 000A NE R3 R3 K44 0x780E0001, // 000B JMPF R3 #000E 0x500C0000, // 000C LDBOOL R3 0 0 0x80040600, // 000D RET 1 R3 - 0x8C0C052D, // 000E GETMET R3 R2 K45 + 0x8C0C052E, // 000E GETMET R3 R2 K46 0x5814001A, // 000F LDCONST R5 K26 0x5818000B, // 0010 LDCONST R6 K11 0x7C0C0600, // 0011 CALL R3 3 0x90022C03, // 0012 SETMBR R0 K22 R3 - 0x8C0C052D, // 0013 GETMET R3 R2 K45 - 0x58140015, // 0014 LDCONST R5 K21 + 0x8C0C052E, // 0013 GETMET R3 R2 K46 + 0x5814002C, // 0014 LDCONST R5 K44 0x5818001A, // 0015 LDCONST R6 K26 0x7C0C0600, // 0016 CALL R3 3 0x90022E03, // 0017 SETMBR R0 K23 R3 @@ -463,12 +466,12 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ 0x780E0001, // 001A JMPF R3 #001D 0x500C0000, // 001B LDBOOL R3 0 0 0x80040600, // 001C RET 1 R3 - 0x8C0C052C, // 001D GETMET R3 R2 K44 + 0x8C0C052D, // 001D GETMET R3 R2 K45 0x58140018, // 001E LDCONST R5 K24 0x5818000B, // 001F LDCONST R6 K11 0x7C0C0600, // 0020 CALL R3 3 0x90023603, // 0021 SETMBR R0 K27 R3 - 0x8C0C052D, // 0022 GETMET R3 R2 K45 + 0x8C0C052E, // 0022 GETMET R3 R2 K46 0x54160007, // 0023 LDINT R5 8 0x08163005, // 0024 MUL R5 K24 R5 0x541A0006, // 0025 LDINT R6 7 @@ -476,7 +479,7 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ 0x5818000B, // 0027 LDCONST R6 K11 0x7C0C0600, // 0028 CALL R3 3 0x90023803, // 0029 SETMBR R0 K28 R3 - 0x8C0C052D, // 002A GETMET R3 R2 K45 + 0x8C0C052E, // 002A GETMET R3 R2 K46 0x54160007, // 002B LDINT R5 8 0x08163005, // 002C MUL R5 K24 R5 0x541A0005, // 002D LDINT R6 6 @@ -484,15 +487,15 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ 0x5818000B, // 002F LDCONST R6 K11 0x7C0C0600, // 0030 CALL R3 3 0x90023A03, // 0031 SETMBR R0 K29 R3 - 0x8C0C052D, // 0032 GETMET R3 R2 K45 + 0x8C0C052E, // 0032 GETMET R3 R2 K46 0x54160007, // 0033 LDINT R5 8 0x08163005, // 0034 MUL R5 K24 R5 0x541A0004, // 0035 LDINT R6 5 0x00140A06, // 0036 ADD R5 R5 R6 0x5818000B, // 0037 LDCONST R6 K11 0x7C0C0600, // 0038 CALL R3 3 - 0x90025C03, // 0039 SETMBR R0 K46 R3 - 0x8C0C052D, // 003A GETMET R3 R2 K45 + 0x90025E03, // 0039 SETMBR R0 K47 R3 + 0x8C0C052E, // 003A GETMET R3 R2 K46 0x54160007, // 003B LDINT R5 8 0x08163005, // 003C MUL R5 K24 R5 0x5818001A, // 003D LDCONST R6 K26 @@ -503,12 +506,12 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ 0x780E0001, // 0042 JMPF R3 #0045 0x500C0000, // 0043 LDBOOL R3 0 0 0x80040600, // 0044 RET 1 R3 - 0x8C0C052C, // 0045 GETMET R3 R2 K44 + 0x8C0C052D, // 0045 GETMET R3 R2 K45 0x5814000B, // 0046 LDCONST R5 K11 0x5818001A, // 0047 LDCONST R6 K26 0x7C0C0600, // 0048 CALL R3 3 0x90023203, // 0049 SETMBR R0 K25 R3 - 0x8C0C052C, // 004A GETMET R3 R2 K44 + 0x8C0C052D, // 004A GETMET R3 R2 K45 0x54160003, // 004B LDINT R5 4 0x541A0003, // 004C LDINT R6 4 0x7C0C0600, // 004D CALL R3 3 @@ -538,15 +541,15 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ 0x880C0117, // 0065 GETMBR R3 R0 K23 0x1C0C071A, // 0066 EQ R3 R3 K26 0x780E0005, // 0067 JMPF R3 #006E - 0x8C0C052C, // 0068 GETMET R3 R2 K44 + 0x8C0C052D, // 0068 GETMET R3 R2 K45 0x5C140200, // 0069 MOVE R5 R1 0x5818001A, // 006A LDCONST R6 K26 0x7C0C0600, // 006B CALL R3 3 0x90024203, // 006C SETMBR R0 K33 R3 0x0004031A, // 006D ADD R1 R1 K26 - 0x880C012E, // 006E GETMBR R3 R0 K46 + 0x880C012F, // 006E GETMBR R3 R0 K47 0x780E0005, // 006F JMPF R3 #0076 - 0x8C0C052C, // 0070 GETMET R3 R2 K44 + 0x8C0C052D, // 0070 GETMET R3 R2 K45 0x5C140200, // 0071 MOVE R5 R1 0x5818001A, // 0072 LDCONST R6 K26 0x7C0C0600, // 0073 CALL R3 3 @@ -579,14 +582,14 @@ be_local_closure(class_Matter_Frame_debug, /* name */ &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x80000400, // 0000 RET 0 - 0xB80A5E00, // 0001 GETNGBL R2 K47 - 0x8C080530, // 0002 GETMET R2 R2 K48 + 0xB80A6000, // 0001 GETNGBL R2 K48 + 0x8C080531, // 0002 GETMET R2 R2 K49 0x88100106, // 0003 GETMBR R4 R0 K6 0x5C140200, // 0004 MOVE R5 R1 0x7C080600, // 0005 CALL R2 3 - 0x8C0C0531, // 0006 GETMET R3 R2 K49 + 0x8C0C0532, // 0006 GETMET R3 R2 K50 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0532, // 0008 GETMET R3 R2 K50 + 0x8C0C0533, // 0008 GETMET R3 R2 K51 0x7C0C0200, // 0009 CALL R3 1 }) ) @@ -626,7 +629,7 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x900E2804, // 000C SETMBR R3 K20 R4 0x88100116, // 000D GETMBR R4 R0 K22 0x78120003, // 000E JMPF R4 #0013 - 0x900E2F33, // 000F SETMBR R3 K23 K51 + 0x900E2F34, // 000F SETMBR R3 K23 K52 0x8810011F, // 0010 GETMBR R4 R0 K31 0x900E4004, // 0011 SETMBR R3 K32 R4 0x70020000, // 0012 JMP #0014 @@ -639,20 +642,20 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x88100100, // 0019 GETMBR R4 R0 K0 0x7812000B, // 001A JMPF R4 #0027 0x88100100, // 001B GETMBR R4 R0 K0 - 0x88100934, // 001C GETMBR R4 R4 K52 + 0x88100935, // 001C GETMBR R4 R4 K53 0x20100915, // 001D NE R4 R4 K21 0x78120007, // 001E JMPF R4 #0027 0x88100100, // 001F GETMBR R4 R0 K0 - 0x8C100935, // 0020 GETMET R4 R4 K53 + 0x8C100936, // 0020 GETMET R4 R4 K54 0x7C100200, // 0021 CALL R4 1 0x900E1804, // 0022 SETMBR R3 K12 R4 0x88100100, // 0023 GETMBR R4 R0 K0 - 0x88100934, // 0024 GETMBR R4 R4 K52 + 0x88100935, // 0024 GETMBR R4 R4 K53 0x900E3204, // 0025 SETMBR R3 K25 R4 0x70020005, // 0026 JMP #002D 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x88100936, // 0028 GETMBR R4 R4 K54 - 0x8C100937, // 0029 GETMET R4 R4 K55 + 0x88100937, // 0028 GETMBR R4 R4 K55 + 0x8C100938, // 0029 GETMET R4 R4 K56 0x7C100200, // 002A CALL R4 1 0x900E1804, // 002B SETMBR R3 K12 R4 0x900E3315, // 002C SETMBR R3 K25 K21 @@ -660,7 +663,7 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x78120001, // 002E JMPF R4 #0031 0x58100015, // 002F LDCONST R4 K21 0x70020000, // 0030 JMP #0032 - 0x58100033, // 0031 LDCONST R4 K51 + 0x58100034, // 0031 LDCONST R4 K52 0x900E4C04, // 0032 SETMBR R3 K38 R4 0x900E4E01, // 0033 SETMBR R3 K39 R1 0x88100128, // 0034 GETMBR R4 R0 K40 @@ -669,36 +672,36 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x900E5204, // 0037 SETMBR R3 K41 R4 0x88100124, // 0038 GETMBR R4 R0 K36 0x78120002, // 0039 JMPF R4 #003D - 0x900E4B33, // 003A SETMBR R3 K37 K51 + 0x900E4B34, // 003A SETMBR R3 K37 K52 0x8810010C, // 003B GETMBR R4 R0 K12 0x900E5404, // 003C SETMBR R3 K42 R4 0x780A0001, // 003D JMPF R2 #0040 - 0x58100033, // 003E LDCONST R4 K51 + 0x58100034, // 003E LDCONST R4 K52 0x70020000, // 003F JMP #0041 0x58100015, // 0040 LDCONST R4 K21 0x900E4804, // 0041 SETMBR R3 K36 R4 0x88100719, // 0042 GETMBR R4 R3 K25 0x1C100915, // 0043 EQ R4 R4 K21 0x78120013, // 0044 JMPF R4 #0059 - 0xB8125E00, // 0045 GETNGBL R4 K47 - 0x8C100938, // 0046 GETMET R4 R4 K56 + 0xB8126000, // 0045 GETNGBL R4 K48 + 0x8C100939, // 0046 GETMET R4 R4 K57 0x88180727, // 0047 GETMBR R6 R3 K39 0x7C100400, // 0048 CALL R4 2 0x5C140800, // 0049 MOVE R5 R4 0x74160004, // 004A JMPT R5 #0050 0x60140018, // 004B GETGBL R5 G24 - 0x58180039, // 004C LDCONST R6 K57 + 0x5818003A, // 004C LDCONST R6 K58 0x881C0727, // 004D GETMBR R7 R3 K39 0x7C140400, // 004E CALL R5 2 0x5C100A00, // 004F MOVE R4 R5 - 0xB8167400, // 0050 GETNGBL R5 K58 + 0xB8167600, // 0050 GETNGBL R5 K59 0x60180018, // 0051 GETGBL R6 G24 - 0x581C003B, // 0052 LDCONST R7 K59 + 0x581C003C, // 0052 LDCONST R7 K60 0x88200700, // 0053 GETMBR R8 R3 K0 0x88201119, // 0054 GETMBR R8 R8 K25 0x5C240800, // 0055 MOVE R9 R4 0x7C180600, // 0056 CALL R6 3 - 0x581C003C, // 0057 LDCONST R7 K60 + 0x581C003D, // 0057 LDCONST R7 K61 0x7C140400, // 0058 CALL R5 2 0x80040600, // 0059 RET 1 R3 }) @@ -729,13 +732,13 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x880C0103, // 0002 GETMBR R3 R0 K3 0x88100104, // 0003 GETMBR R4 R0 K4 0x5416000F, // 0004 LDINT R5 16 - 0x8C18053D, // 0005 GETMET R6 R2 K61 + 0x8C18053E, // 0005 GETMET R6 R2 K62 0x7C180200, // 0006 CALL R6 1 0x881C011C, // 0007 GETMBR R7 R0 K28 0x781E002B, // 0008 JMPF R7 #0035 - 0xB81E7400, // 0009 GETNGBL R7 K58 - 0x5820003E, // 000A LDCONST R8 K62 - 0x5824003F, // 000B LDCONST R9 K63 + 0xB81E7600, // 0009 GETNGBL R7 K59 + 0x5820003F, // 000A LDCONST R8 K63 + 0x5824001A, // 000B LDCONST R9 K26 0x7C1C0400, // 000C CALL R7 2 0x8C1C0540, // 000D GETMET R7 R2 K64 0x7C1C0200, // 000E CALL R7 1 @@ -755,20 +758,20 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x0024120A, // 001C ADD R9 R9 R10 0x542A0003, // 001D LDINT R10 4 0x882C0104, // 001E GETMBR R11 R0 K4 - 0x042C1733, // 001F SUB R11 R11 K51 + 0x042C1742, // 001F SUB R11 R11 K66 0x4028140B, // 0020 CONNECT R10 R10 R11 0x882C0103, // 0021 GETMBR R11 R0 K3 0x9428160A, // 0022 GETIDX R10 R11 R10 - 0x8C300342, // 0023 GETMET R12 R1 K66 + 0x8C300343, // 0023 GETMET R12 R1 K67 0x5C380E00, // 0024 MOVE R14 R7 0x7C300400, // 0025 CALL R12 2 - 0x8C301943, // 0026 GETMET R12 R12 K67 + 0x8C301944, // 0026 GETMET R12 R12 K68 0x5C381400, // 0027 MOVE R14 R10 0x5C3C1200, // 0028 MOVE R15 R9 - 0x5840003F, // 0029 LDCONST R16 K63 + 0x5840001A, // 0029 LDCONST R16 K26 0x7C300800, // 002A CALL R12 4 0x5C2C1800, // 002B MOVE R11 R12 - 0x40322518, // 002C CONNECT R12 K18 K24 + 0x40322B45, // 002C CONNECT R12 K21 K69 0x88340103, // 002D GETMBR R13 R0 K3 0x94301A0C, // 002E GETIDX R12 R13 R12 0x0030180B, // 002F ADD R12 R12 R11 @@ -783,7 +786,7 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x7C200200, // 0038 CALL R8 1 0x8C200F09, // 0039 GETMET R8 R7 K9 0x8828010A, // 003A GETMBR R10 R0 K10 - 0x582C0033, // 003B LDCONST R11 K51 + 0x582C0042, // 003B LDCONST R11 K66 0x7C200600, // 003C CALL R8 3 0x8C200F09, // 003D GETMET R8 R7 K9 0x8828010C, // 003E GETMBR R10 R0 K12 @@ -794,23 +797,23 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x8820011F, // 0043 GETMBR R8 R0 K31 0x40200E08, // 0044 CONNECT R8 R7 R8 0x70020006, // 0045 JMP #004D - 0x88200544, // 0046 GETMBR R8 R2 K68 + 0x88200546, // 0046 GETMBR R8 R2 K70 0x78220001, // 0047 JMPF R8 #004A - 0x88200544, // 0048 GETMBR R8 R2 K68 + 0x88200546, // 0048 GETMBR R8 R2 K70 0x40200E08, // 0049 CONNECT R8 R7 R8 0x8C200F0F, // 004A GETMET R8 R7 K15 0x542A000C, // 004B LDINT R10 13 0x7C200400, // 004C CALL R8 2 0x88200310, // 004D GETMBR R8 R1 K16 - 0x8C201145, // 004E GETMET R8 R8 K69 + 0x8C201147, // 004E GETMET R8 R8 K71 0x5C280C00, // 004F MOVE R10 R6 0x5C2C0E00, // 0050 MOVE R11 R7 - 0x58300012, // 0051 LDCONST R12 K18 + 0x58300015, // 0051 LDCONST R12 K21 0x6034000C, // 0052 GETGBL R13 G12 0x5C380E00, // 0053 MOVE R14 R7 0x7C340200, // 0054 CALL R13 1 0x5C380600, // 0055 MOVE R14 R3 - 0x583C0012, // 0056 LDCONST R15 K18 + 0x583C0015, // 0056 LDCONST R15 K21 0x5C400800, // 0057 MOVE R16 R4 0x5C440600, // 0058 MOVE R17 R3 0x5C480800, // 0059 MOVE R18 R4 @@ -834,9 +837,9 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x042C1605, // 006B SUB R11 R11 R5 0x7C240400, // 006C CALL R9 2 0x70020003, // 006D JMP #0072 - 0xB8267400, // 006E GETNGBL R9 K58 - 0x58280046, // 006F LDCONST R10 K70 - 0x582C0018, // 0070 LDCONST R11 K24 + 0xB8267600, // 006E GETNGBL R9 K59 + 0x58280048, // 006F LDCONST R10 K72 + 0x582C0045, // 0070 LDCONST R11 K69 0x7C240400, // 0071 CALL R9 2 0x80041000, // 0072 RET 1 R8 }) @@ -873,7 +876,7 @@ be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ 0x900A2803, // 0008 SETMBR R2 K20 R3 0x880C0116, // 0009 GETMBR R3 R0 K22 0x780E0003, // 000A JMPF R3 #000F - 0x900A2F33, // 000B SETMBR R2 K23 K51 + 0x900A2F34, // 000B SETMBR R2 K23 K52 0x880C011F, // 000C GETMBR R3 R0 K31 0x900A4003, // 000D SETMBR R2 K32 R3 0x70020000, // 000E JMP #0010 @@ -881,28 +884,28 @@ be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ 0x880C0100, // 0010 GETMBR R3 R0 K0 0x900A0003, // 0011 SETMBR R2 K0 R3 0x880C0100, // 0012 GETMBR R3 R0 K0 - 0x8C0C0735, // 0013 GETMET R3 R3 K53 + 0x8C0C0736, // 0013 GETMET R3 R3 K54 0x7C0C0200, // 0014 CALL R3 1 0x900A1803, // 0015 SETMBR R2 K12 R3 0x880C0100, // 0016 GETMBR R3 R0 K0 - 0x880C0734, // 0017 GETMBR R3 R3 K52 + 0x880C0735, // 0017 GETMBR R3 R3 K53 0x900A3203, // 0018 SETMBR R2 K25 R3 0x880C0126, // 0019 GETMBR R3 R0 K38 0x780E0001, // 001A JMPF R3 #001D 0x580C0015, // 001B LDCONST R3 K21 0x70020000, // 001C JMP #001E - 0x580C0033, // 001D LDCONST R3 K51 + 0x580C0034, // 001D LDCONST R3 K52 0x900A4C03, // 001E SETMBR R2 K38 R3 0x540E000F, // 001F LDINT R3 16 0x900A4E03, // 0020 SETMBR R2 K39 R3 0x880C0128, // 0021 GETMBR R3 R0 K40 0x900A5003, // 0022 SETMBR R2 K40 R3 0x900A5315, // 0023 SETMBR R2 K41 K21 - 0x900A4B33, // 0024 SETMBR R2 K37 K51 + 0x900A4B34, // 0024 SETMBR R2 K37 K52 0x880C010C, // 0025 GETMBR R3 R0 K12 0x900A5403, // 0026 SETMBR R2 K42 R3 0x78060001, // 0027 JMPF R1 #002A - 0x580C0033, // 0028 LDCONST R3 K51 + 0x580C0034, // 0028 LDCONST R3 K52 0x70020000, // 0029 JMP #002B 0x580C0015, // 002A LDCONST R3 K21 0x900A4803, // 002B SETMBR R2 K36 R3 @@ -930,42 +933,42 @@ be_local_closure(class_Matter_Frame_initiate_response, /* name */ be_str_weak(initiate_response), &be_const_str_solidified, ( &(const binstruction[46]) { /* code */ - 0x58140047, // 0000 LDCONST R5 K71 + 0x58140049, // 0000 LDCONST R5 K73 0x4C180000, // 0001 LDNIL R6 0x1C180806, // 0002 EQ R6 R4 R6 0x781A0004, // 0003 JMPF R6 #0009 - 0xB81A5E00, // 0004 GETNGBL R6 K47 - 0x8C180D30, // 0005 GETMET R6 R6 K48 + 0xB81A6000, // 0004 GETNGBL R6 K48 + 0x8C180D31, // 0005 GETMET R6 R6 K49 0x5C200000, // 0006 MOVE R8 R0 0x7C180400, // 0007 CALL R6 2 0x5C100C00, // 0008 MOVE R4 R6 - 0x88180348, // 0009 GETMBR R6 R1 K72 + 0x8818034A, // 0009 GETMBR R6 R1 K74 0x90122606, // 000A SETMBR R4 K19 R6 - 0x88180349, // 000B GETMBR R6 R1 K73 + 0x8818034B, // 000B GETMBR R6 R1 K75 0x90122806, // 000C SETMBR R4 K20 R6 - 0x90122F12, // 000D SETMBR R4 K23 K18 + 0x90122F15, // 000D SETMBR R4 K23 K21 0x90120001, // 000E SETMBR R4 K0 R1 0x78060008, // 000F JMPF R1 #0019 - 0x88180334, // 0010 GETMBR R6 R1 K52 - 0x20180D12, // 0011 NE R6 R6 K18 + 0x88180335, // 0010 GETMBR R6 R1 K53 + 0x20180D15, // 0011 NE R6 R6 K21 0x781A0005, // 0012 JMPF R6 #0019 - 0x8C180335, // 0013 GETMET R6 R1 K53 + 0x8C180336, // 0013 GETMET R6 R1 K54 0x7C180200, // 0014 CALL R6 1 0x90121806, // 0015 SETMBR R4 K12 R6 - 0x88180334, // 0016 GETMBR R6 R1 K52 + 0x88180335, // 0016 GETMBR R6 R1 K53 0x90123206, // 0017 SETMBR R4 K25 R6 0x70020004, // 0018 JMP #001E - 0x88180336, // 0019 GETMBR R6 R1 K54 - 0x8C180D37, // 001A GETMET R6 R6 K55 + 0x88180337, // 0019 GETMBR R6 R1 K55 + 0x8C180D38, // 001A GETMET R6 R6 K56 0x7C180200, // 001B CALL R6 1 0x90121806, // 001C SETMBR R4 K12 R6 - 0x90123312, // 001D SETMBR R4 K25 K18 + 0x90123315, // 001D SETMBR R4 K25 K21 0x90124D0B, // 001E SETMBR R4 K38 K11 0x90124E02, // 001F SETMBR R4 K39 R2 - 0x8818034A, // 0020 GETMBR R6 R1 K74 + 0x8818034C, // 0020 GETMBR R6 R1 K76 0x00180D0B, // 0021 ADD R6 R6 K11 - 0x90069406, // 0022 SETMBR R1 K74 R6 - 0x8818034A, // 0023 GETMBR R6 R1 K74 + 0x90069806, // 0022 SETMBR R1 K76 R6 + 0x8818034C, // 0023 GETMBR R6 R1 K76 0x541EFFFF, // 0024 LDINT R7 65536 0x30180C07, // 0025 OR R6 R6 R7 0x90125006, // 0026 SETMBR R4 K40 R6 @@ -973,7 +976,7 @@ be_local_closure(class_Matter_Frame_initiate_response, /* name */ 0x780E0001, // 0028 JMPF R3 #002B 0x5818000B, // 0029 LDCONST R6 K11 0x70020000, // 002A JMP #002C - 0x58180012, // 002B LDCONST R6 K18 + 0x58180015, // 002B LDCONST R6 K21 0x90124806, // 002C SETMBR R4 K36 R6 0x80040800, // 002D RET 1 R4 }) @@ -1001,12 +1004,12 @@ be_local_closure(class_Matter_Frame_decode_payload, /* name */ ( &(const binstruction[93]) { /* code */ 0x88040104, // 0000 GETMBR R1 R0 K4 0x88080103, // 0001 GETMBR R2 R0 K3 - 0x8C0C052C, // 0002 GETMET R3 R2 K44 + 0x8C0C052D, // 0002 GETMET R3 R2 K45 0x5C140200, // 0003 MOVE R5 R1 0x5818000B, // 0004 LDCONST R6 K11 0x7C0C0600, // 0005 CALL R3 3 0x90024403, // 0006 SETMBR R0 K34 R3 - 0x8C0C052D, // 0007 GETMET R3 R2 K45 + 0x8C0C052E, // 0007 GETMET R3 R2 K46 0x54160007, // 0008 LDINT R5 8 0x08140205, // 0009 MUL R5 R1 R5 0x541A0003, // 000A LDINT R6 4 @@ -1014,41 +1017,41 @@ be_local_closure(class_Matter_Frame_decode_payload, /* name */ 0x5818000B, // 000C LDCONST R6 K11 0x7C0C0600, // 000D CALL R3 3 0x90024603, // 000E SETMBR R0 K35 R3 - 0x8C0C052D, // 000F GETMET R3 R2 K45 + 0x8C0C052E, // 000F GETMET R3 R2 K46 0x54160007, // 0010 LDINT R5 8 0x08140205, // 0011 MUL R5 R1 R5 - 0x00140B3C, // 0012 ADD R5 R5 K60 + 0x00140B45, // 0012 ADD R5 R5 K69 0x5818000B, // 0013 LDCONST R6 K11 0x7C0C0600, // 0014 CALL R3 3 - 0x90029603, // 0015 SETMBR R0 K75 R3 - 0x8C0C052D, // 0016 GETMET R3 R2 K45 + 0x90029A03, // 0015 SETMBR R0 K77 R3 + 0x8C0C052E, // 0016 GETMET R3 R2 K46 0x54160007, // 0017 LDINT R5 8 0x08140205, // 0018 MUL R5 R1 R5 - 0x00140B3F, // 0019 ADD R5 R5 K63 + 0x00140B4E, // 0019 ADD R5 R5 K78 0x5818000B, // 001A LDCONST R6 K11 0x7C0C0600, // 001B CALL R3 3 0x90024803, // 001C SETMBR R0 K36 R3 - 0x8C0C052D, // 001D GETMET R3 R2 K45 + 0x8C0C052E, // 001D GETMET R3 R2 K46 0x54160007, // 001E LDINT R5 8 0x08140205, // 001F MUL R5 R1 R5 0x00140B0B, // 0020 ADD R5 R5 K11 0x5818000B, // 0021 LDCONST R6 K11 0x7C0C0600, // 0022 CALL R3 3 0x90024A03, // 0023 SETMBR R0 K37 R3 - 0x8C0C052D, // 0024 GETMET R3 R2 K45 + 0x8C0C052E, // 0024 GETMET R3 R2 K46 0x54160007, // 0025 LDINT R5 8 0x08140205, // 0026 MUL R5 R1 R5 0x5818000B, // 0027 LDCONST R6 K11 0x7C0C0600, // 0028 CALL R3 3 0x90024C03, // 0029 SETMBR R0 K38 R3 - 0x8C0C052C, // 002A GETMET R3 R2 K44 + 0x8C0C052D, // 002A GETMET R3 R2 K45 0x0014030B, // 002B ADD R5 R1 K11 0x5818000B, // 002C LDCONST R6 K11 0x7C0C0600, // 002D CALL R3 3 0x90024E03, // 002E SETMBR R0 K39 R3 - 0x8C0C052C, // 002F GETMET R3 R2 K44 - 0x0014033F, // 0030 ADD R5 R1 K63 - 0x5818003F, // 0031 LDCONST R6 K63 + 0x8C0C052D, // 002F GETMET R3 R2 K45 + 0x0014034E, // 0030 ADD R5 R1 K78 + 0x5818004E, // 0031 LDCONST R6 K78 0x7C0C0600, // 0032 CALL R3 3 0x90025003, // 0033 SETMBR R0 K40 R3 0x880C0126, // 0034 GETMBR R3 R0 K38 @@ -1057,38 +1060,38 @@ be_local_closure(class_Matter_Frame_decode_payload, /* name */ 0x5412FFFF, // 0037 LDINT R4 65536 0x300C0604, // 0038 OR R3 R3 R4 0x90025003, // 0039 SETMBR R0 K40 R3 - 0x8C0C052C, // 003A GETMET R3 R2 K44 + 0x8C0C052D, // 003A GETMET R3 R2 K45 0x54160003, // 003B LDINT R5 4 0x00140205, // 003C ADD R5 R1 R5 - 0x5818003F, // 003D LDCONST R6 K63 + 0x5818004E, // 003D LDCONST R6 K78 0x7C0C0600, // 003E CALL R3 3 0x90025203, // 003F SETMBR R0 K41 R3 0x540E0005, // 0040 LDINT R3 6 0x00040203, // 0041 ADD R1 R1 R3 0x880C0123, // 0042 GETMBR R3 R0 K35 0x780E0005, // 0043 JMPF R3 #004A - 0x8C0C052C, // 0044 GETMET R3 R2 K44 + 0x8C0C052D, // 0044 GETMET R3 R2 K45 0x5C140200, // 0045 MOVE R5 R1 - 0x5818003F, // 0046 LDCONST R6 K63 + 0x5818004E, // 0046 LDCONST R6 K78 0x7C0C0600, // 0047 CALL R3 3 - 0x90029803, // 0048 SETMBR R0 K76 R3 - 0x0004033F, // 0049 ADD R1 R1 K63 + 0x90029E03, // 0048 SETMBR R0 K79 R3 + 0x0004034E, // 0049 ADD R1 R1 K78 0x880C0125, // 004A GETMBR R3 R0 K37 0x780E0006, // 004B JMPF R3 #0053 - 0x8C0C052C, // 004C GETMET R3 R2 K44 + 0x8C0C052D, // 004C GETMET R3 R2 K45 0x5C140200, // 004D MOVE R5 R1 0x541A0003, // 004E LDINT R6 4 0x7C0C0600, // 004F CALL R3 3 0x90025403, // 0050 SETMBR R0 K42 R3 0x540E0003, // 0051 LDINT R3 4 0x00040203, // 0052 ADD R1 R1 R3 - 0x880C014B, // 0053 GETMBR R3 R0 K75 + 0x880C014D, // 0053 GETMBR R3 R0 K77 0x780E0005, // 0054 JMPF R3 #005B - 0x8C0C052C, // 0055 GETMET R3 R2 K44 + 0x8C0C052D, // 0055 GETMET R3 R2 K45 0x5C140200, // 0056 MOVE R5 R1 - 0x5818003F, // 0057 LDCONST R6 K63 + 0x5818004E, // 0057 LDCONST R6 K78 0x7C0C0600, // 0058 CALL R3 3 - 0x0010073F, // 0059 ADD R4 R3 K63 + 0x0010074E, // 0059 ADD R4 R3 K78 0x00040204, // 005A ADD R1 R1 R4 0x90025601, // 005B SETMBR R0 K43 R1 0x80040000, // 005C RET 1 R0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h index 41ca290fc..e8d89dfb5 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_PathGenerator' ktab size: 35, total: 78 (saved 344 bytes) -static const bvalue be_ktab_class_Matter_PathGenerator[35] = { +// compact class 'Matter_PathGenerator' ktab size: 34, total: 78 (saved 352 bytes) +static const bvalue be_ktab_class_Matter_PathGenerator[34] = { /* K0 */ be_nested_str_weak(path_concrete), /* K1 */ be_nested_str_weak(reset), /* K2 */ be_nested_str_weak(pi), @@ -36,10 +36,9 @@ static const bvalue be_ktab_class_Matter_PathGenerator[35] = { /* K28 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K29 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), /* K30 */ be_nested_str_weak(get_attribute_list), - /* K31 */ be_const_int(1), - /* K32 */ be_nested_str_weak(plugins), - /* K33 */ be_nested_str_weak(get_cluster_list_sorted), - /* K34 */ be_nested_str_weak(Path), + /* K31 */ be_nested_str_weak(plugins), + /* K32 */ be_nested_str_weak(get_cluster_list_sorted), + /* K33 */ be_nested_str_weak(Path), }; @@ -439,13 +438,13 @@ be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */ 0x4C100000, // 0014 LDNIL R4 0x20100604, // 0015 NE R4 R3 R4 0x78120011, // 0016 JMPF R4 #0029 - 0x0010071F, // 0017 ADD R4 R3 K31 + 0x00100718, // 0017 ADD R4 R3 K24 0x6014000C, // 0018 GETGBL R5 G12 0x5C180200, // 0019 MOVE R6 R1 0x7C140200, // 001A CALL R5 1 0x14100805, // 001B LT R4 R4 R5 0x7812000B, // 001C JMPF R4 #0029 - 0x000C071F, // 001D ADD R3 R3 K31 + 0x000C0718, // 001D ADD R3 R3 K24 0x94100203, // 001E GETIDX R4 R1 R3 0x90020804, // 001F SETMBR R0 K4 R4 0x4C100000, // 0020 LDNIL R4 @@ -491,7 +490,7 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0x50040000, // 0004 LDBOOL R1 0 0 0x80040200, // 0005 RET 1 R1 0x88040106, // 0006 GETMBR R1 R0 K6 - 0x88040320, // 0007 GETMBR R1 R1 K32 + 0x8804031F, // 0007 GETMBR R1 R1 K31 0x88080107, // 0008 GETMBR R2 R0 K7 0x4C0C0000, // 0009 LDNIL R3 0x90020603, // 000A SETMBR R0 K3 R3 @@ -509,13 +508,13 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0x4C100000, // 0016 LDNIL R4 0x20100604, // 0017 NE R4 R3 R4 0x78120017, // 0018 JMPF R4 #0031 - 0x0010071F, // 0019 ADD R4 R3 K31 + 0x00100718, // 0019 ADD R4 R3 K24 0x6014000C, // 001A GETGBL R5 G12 0x5C180200, // 001B MOVE R6 R1 0x7C140200, // 001C CALL R5 1 0x14100805, // 001D LT R4 R4 R5 0x78120011, // 001E JMPF R4 #0031 - 0x000C071F, // 001F ADD R3 R3 K31 + 0x000C0718, // 001F ADD R3 R3 K24 0x94100203, // 0020 GETIDX R4 R1 R3 0x90020404, // 0021 SETMBR R0 K2 R4 0x4C100000, // 0022 LDNIL R4 @@ -527,7 +526,7 @@ be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */ 0x1C100404, // 0028 EQ R4 R2 R4 0x78120005, // 0029 JMPF R4 #0030 0x88100102, // 002A GETMBR R4 R0 K2 - 0x8C100921, // 002B GETMET R4 R4 K33 + 0x8C100920, // 002B GETMET R4 R4 K32 0x7C100200, // 002C CALL R4 1 0x90020A04, // 002D SETMBR R0 K5 R4 0x88100102, // 002E GETMBR R4 R0 K2 @@ -596,7 +595,7 @@ be_local_closure(class_Matter_PathGenerator_start, /* name */ &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xB8163200, // 0000 GETNGBL R5 K25 - 0x8C140B22, // 0001 GETMET R5 R5 K34 + 0x8C140B21, // 0001 GETMET R5 R5 K33 0x7C140200, // 0002 CALL R5 1 0x90020005, // 0003 SETMBR R0 K0 R5 0x8C140101, // 0004 GETMET R5 R0 K1 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h index 97b7f8412..086506aa3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Aggregator' ktab size: 22, total: 29 (saved 56 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Aggregator[22] = { +// compact class 'Matter_Plugin_Aggregator' ktab size: 23, total: 29 (saved 48 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Aggregator[23] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -24,9 +24,10 @@ static const bvalue be_ktab_class_Matter_Plugin_Aggregator[22] = { /* K16 */ be_nested_str_weak(stop_iteration), /* K17 */ be_nested_str_weak(read_attribute), /* K18 */ be_nested_str_weak(command), - /* K19 */ be_const_int(1), - /* K20 */ be_nested_str_weak(Matter_TLV_struct), - /* K21 */ be_nested_str_weak(invoke_request), + /* K19 */ be_const_int(0), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(Matter_TLV_struct), + /* K22 */ be_nested_str_weak(invoke_request), }; @@ -151,21 +152,21 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ 0x88180712, // 0003 GETMBR R6 R3 K18 0x1C1C0B04, // 0004 EQ R7 R5 K4 0x781E0016, // 0005 JMPF R7 #001D - 0x1C1C0D05, // 0006 EQ R7 R6 K5 + 0x1C1C0D13, // 0006 EQ R7 R6 K19 0x781E0002, // 0007 JMPF R7 #000B 0x501C0200, // 0008 LDBOOL R7 1 0 0x80040E00, // 0009 RET 1 R7 0x70020010, // 000A JMP #001C - 0x1C1C0D13, // 000B EQ R7 R6 K19 + 0x1C1C0D14, // 000B EQ R7 R6 K20 0x781E0009, // 000C JMPF R7 #0017 - 0x8C1C0914, // 000D GETMET R7 R4 K20 + 0x8C1C0915, // 000D GETMET R7 R4 K21 0x7C1C0200, // 000E CALL R7 1 0x8C200F0C, // 000F GETMET R8 R7 K12 - 0x58280005, // 0010 LDCONST R10 K5 + 0x58280013, // 0010 LDCONST R10 K19 0x882C0907, // 0011 GETMBR R11 R4 K7 - 0x58300005, // 0012 LDCONST R12 K5 + 0x58300013, // 0012 LDCONST R12 K19 0x7C200800, // 0013 CALL R8 4 - 0x900E2505, // 0014 SETMBR R3 K18 K5 + 0x900E2513, // 0014 SETMBR R3 K18 K19 0x80040E00, // 0015 RET 1 R7 0x70020004, // 0016 JMP #001C 0x541E003F, // 0017 LDINT R7 64 @@ -177,7 +178,7 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ 0x601C0003, // 001D GETGBL R7 G3 0x5C200000, // 001E MOVE R8 R0 0x7C1C0200, // 001F CALL R7 1 - 0x8C1C0F15, // 0020 GETMET R7 R7 K21 + 0x8C1C0F16, // 0020 GETMET R7 R7 K22 0x5C240200, // 0021 MOVE R9 R1 0x5C280400, // 0022 MOVE R10 R2 0x5C2C0600, // 0023 MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index 0e314759d..172176fa3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -212,8 +212,8 @@ be_local_class(GetOptionReader, })), be_str_weak(GetOptionReader) ); -// compact class 'Matter_Plugin_Device' ktab size: 126, total: 158 (saved 256 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Device[126] = { +// compact class 'Matter_Plugin_Device' ktab size: 125, total: 158 (saved 264 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Device[125] = { /* K0 */ be_nested_str_weak(http_remote), /* K1 */ be_nested_str_weak(add_schedule), /* K2 */ be_nested_str_weak(UPDATE_CMD), @@ -249,97 +249,96 @@ static const bvalue be_ktab_class_Matter_Plugin_Device[126] = { /* K32 */ be_nested_str_weak(json), /* K33 */ be_const_int(2), /* K34 */ be_nested_str_weak(_X20), - /* K35 */ be_const_int(0), - /* K36 */ be_nested_str_weak(call_sync), - /* K37 */ be_nested_str_weak(SYNC_TIMEOUT), - /* K38 */ be_nested_str_weak(device_is_alive), - /* K39 */ be_nested_str_weak(load), - /* K40 */ be_const_int(1), - /* K41 */ be_nested_str_weak(log), - /* K42 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), - /* K43 */ be_const_int(3), - /* K44 */ be_nested_str_weak(parse_status_response_and_call_method), - /* K45 */ be_nested_str_weak(parse_status), - /* K46 */ be_nested_str_weak(get_name), - /* K47 */ be_nested_str_weak(PREFIX), - /* K48 */ be_nested_str_weak(html_escape), - /* K49 */ be_nested_str_weak(attribute), - /* K50 */ be_nested_str_weak(set), - /* K51 */ be_nested_str_weak(U1), - /* K52 */ be_nested_str_weak(Matter_TLV_array), - /* K53 */ be_nested_str_weak(TYPES), - /* K54 */ be_nested_str_weak(keys), - /* K55 */ be_nested_str_weak(add_struct), - /* K56 */ be_nested_str_weak(stop_iteration), - /* K57 */ be_nested_str_weak(NON_BRIDGE_VENDOR), - /* K58 */ be_nested_str_weak(find), - /* K59 */ be_nested_str_weak(get_admin_vendor), - /* K60 */ be_nested_str_weak(disable_bridge_mode), - /* K61 */ be_nested_str_weak(string), - /* K62 */ be_nested_str_weak(get_info), - /* K63 */ be_nested_str_weak(name), - /* K64 */ be_nested_str_weak(set_or_nil), - /* K65 */ be_nested_str_weak(UTF1), - /* K66 */ be_nested_str_weak(tasmota), - /* K67 */ be_nested_str_weak(cmd), - /* K68 */ be_nested_str_weak(DeviceName), - /* K69 */ be_nested_str_weak(version), - /* K70 */ be_nested_str_weak(_X28), - /* K71 */ be_nested_str_weak(NULL), - /* K72 */ be_nested_str_weak(Status_X202), - /* K73 */ be_nested_str_weak(StatusFWR), - /* K74 */ be_nested_str_weak(Version), - /* K75 */ be_nested_str_weak(mac), - /* K76 */ be_nested_str_weak(wifi), - /* K77 */ be_nested_str_weak(BOOL), - /* K78 */ be_nested_str_weak(reachable), - /* K79 */ be_nested_str_weak(read_attribute), - /* K80 */ be_nested_str_weak(init), - /* K81 */ be_nested_str_weak(ARG_HTTP), - /* K82 */ be_nested_str_weak(register_http_remote), - /* K83 */ be_nested_str_weak(PROBE_TIMEOUT), - /* K84 */ be_nested_str_weak(register_cmd_cb), - /* K85 */ be_nested_str_weak(introspect), - /* K86 */ be_nested_str_weak(get), - /* K87 */ be_nested_str_weak(JSON_NAME), - /* K88 */ be_nested_str_weak(contains), - /* K89 */ be_nested_str_weak(shadow_value), - /* K90 */ be_nested_str_weak(dump), - /* K91 */ be_nested_str_weak(null), - /* K92 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s), - /* K93 */ be_nested_str_weak(shadow_onoff), - /* K94 */ be_nested_str_weak(Power), - /* K95 */ be_nested_str_weak(shadow_bri), - /* K96 */ be_nested_str_weak(Bri), - /* K97 */ be_nested_str_weak(shadow_ct), - /* K98 */ be_nested_str_weak(CT), - /* K99 */ be_nested_str_weak(shadow_hue), - /* K100 */ be_nested_str_weak(Hue), - /* K101 */ be_nested_str_weak(shadow_sat), - /* K102 */ be_nested_str_weak(Sat), - /* K103 */ be_nested_str_weak(shadow_shutter_pos), - /* K104 */ be_nested_str_weak(ShutterPos), - /* K105 */ be_nested_str_weak(shadow_shutter_target), - /* K106 */ be_nested_str_weak(ShutterTarget), - /* K107 */ be_nested_str_weak(shadow_shutter_tilt), - /* K108 */ be_nested_str_weak(ShutterTilt), - /* K109 */ be_nested_str_weak(shadow_contact), - /* K110 */ be_nested_str_weak(Contact), - /* K111 */ be_nested_str_weak(shadow_occupancy), - /* K112 */ be_nested_str_weak(Occupancy), - /* K113 */ be_nested_str_weak(shadow_air_quality), - /* K114 */ be_nested_str_weak(AirQuality), - /* K115 */ be_nested_str_weak(shadow_co2), - /* K116 */ be_nested_str_weak(CO2), - /* K117 */ be_nested_str_weak(shadow_pm1), - /* K118 */ be_nested_str_weak(PM1), - /* K119 */ be_nested_str_weak(shadow_pm2_5), - /* K120 */ be_nested_str_weak(PM2_X2E5), - /* K121 */ be_nested_str_weak(shadow_pm10), - /* K122 */ be_nested_str_weak(PM10), - /* K123 */ be_nested_str_weak(shadow_tvoc), - /* K124 */ be_nested_str_weak(TVOC), - /* K125 */ be_nested_str_weak(attribute_updated), + /* K35 */ be_nested_str_weak(call_sync), + /* K36 */ be_nested_str_weak(SYNC_TIMEOUT), + /* K37 */ be_nested_str_weak(device_is_alive), + /* K38 */ be_nested_str_weak(load), + /* K39 */ be_const_int(1), + /* K40 */ be_nested_str_weak(log), + /* K41 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), + /* K42 */ be_nested_str_weak(parse_status_response_and_call_method), + /* K43 */ be_nested_str_weak(parse_status), + /* K44 */ be_nested_str_weak(get_name), + /* K45 */ be_nested_str_weak(PREFIX), + /* K46 */ be_nested_str_weak(html_escape), + /* K47 */ be_nested_str_weak(attribute), + /* K48 */ be_const_int(0), + /* K49 */ be_nested_str_weak(set), + /* K50 */ be_nested_str_weak(U1), + /* K51 */ be_nested_str_weak(Matter_TLV_array), + /* K52 */ be_nested_str_weak(TYPES), + /* K53 */ be_nested_str_weak(keys), + /* K54 */ be_nested_str_weak(add_struct), + /* K55 */ be_nested_str_weak(stop_iteration), + /* K56 */ be_nested_str_weak(NON_BRIDGE_VENDOR), + /* K57 */ be_nested_str_weak(find), + /* K58 */ be_nested_str_weak(get_admin_vendor), + /* K59 */ be_nested_str_weak(disable_bridge_mode), + /* K60 */ be_nested_str_weak(string), + /* K61 */ be_nested_str_weak(get_info), + /* K62 */ be_nested_str_weak(name), + /* K63 */ be_nested_str_weak(set_or_nil), + /* K64 */ be_nested_str_weak(UTF1), + /* K65 */ be_nested_str_weak(tasmota), + /* K66 */ be_nested_str_weak(cmd), + /* K67 */ be_nested_str_weak(DeviceName), + /* K68 */ be_nested_str_weak(version), + /* K69 */ be_nested_str_weak(_X28), + /* K70 */ be_nested_str_weak(NULL), + /* K71 */ be_nested_str_weak(Status_X202), + /* K72 */ be_nested_str_weak(StatusFWR), + /* K73 */ be_nested_str_weak(Version), + /* K74 */ be_nested_str_weak(mac), + /* K75 */ be_nested_str_weak(wifi), + /* K76 */ be_nested_str_weak(BOOL), + /* K77 */ be_nested_str_weak(reachable), + /* K78 */ be_nested_str_weak(read_attribute), + /* K79 */ be_nested_str_weak(init), + /* K80 */ be_nested_str_weak(ARG_HTTP), + /* K81 */ be_nested_str_weak(register_http_remote), + /* K82 */ be_nested_str_weak(PROBE_TIMEOUT), + /* K83 */ be_nested_str_weak(register_cmd_cb), + /* K84 */ be_nested_str_weak(introspect), + /* K85 */ be_nested_str_weak(get), + /* K86 */ be_nested_str_weak(JSON_NAME), + /* K87 */ be_nested_str_weak(contains), + /* K88 */ be_nested_str_weak(shadow_value), + /* K89 */ be_nested_str_weak(dump), + /* K90 */ be_nested_str_weak(null), + /* K91 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s), + /* K92 */ be_nested_str_weak(shadow_onoff), + /* K93 */ be_nested_str_weak(Power), + /* K94 */ be_nested_str_weak(shadow_bri), + /* K95 */ be_nested_str_weak(Bri), + /* K96 */ be_nested_str_weak(shadow_ct), + /* K97 */ be_nested_str_weak(CT), + /* K98 */ be_nested_str_weak(shadow_hue), + /* K99 */ be_nested_str_weak(Hue), + /* K100 */ be_nested_str_weak(shadow_sat), + /* K101 */ be_nested_str_weak(Sat), + /* K102 */ be_nested_str_weak(shadow_shutter_pos), + /* K103 */ be_nested_str_weak(ShutterPos), + /* K104 */ be_nested_str_weak(shadow_shutter_target), + /* K105 */ be_nested_str_weak(ShutterTarget), + /* K106 */ be_nested_str_weak(shadow_shutter_tilt), + /* K107 */ be_nested_str_weak(ShutterTilt), + /* K108 */ be_nested_str_weak(shadow_contact), + /* K109 */ be_nested_str_weak(Contact), + /* K110 */ be_nested_str_weak(shadow_occupancy), + /* K111 */ be_nested_str_weak(Occupancy), + /* K112 */ be_nested_str_weak(shadow_air_quality), + /* K113 */ be_nested_str_weak(AirQuality), + /* K114 */ be_nested_str_weak(shadow_co2), + /* K115 */ be_nested_str_weak(CO2), + /* K116 */ be_nested_str_weak(shadow_pm1), + /* K117 */ be_nested_str_weak(PM1), + /* K118 */ be_nested_str_weak(shadow_pm2_5), + /* K119 */ be_nested_str_weak(PM2_X2E5), + /* K120 */ be_nested_str_weak(shadow_pm10), + /* K121 */ be_nested_str_weak(PM10), + /* K122 */ be_nested_str_weak(shadow_tvoc), + /* K123 */ be_nested_str_weak(TVOC), + /* K124 */ be_nested_str_weak(attribute_updated), }; @@ -674,32 +673,32 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ 0x7C180200, // 000A CALL R6 1 0x00140A06, // 000B ADD R5 R5 R6 0x5C040A00, // 000C MOVE R1 R5 - 0x24140923, // 000D GT R5 R4 K35 + 0x24140915, // 000D GT R5 R4 K21 0x78160015, // 000E JMPF R5 #0025 0x88140100, // 000F GETMBR R5 R0 K0 - 0x8C140B24, // 0010 GETMET R5 R5 K36 + 0x8C140B23, // 0010 GETMET R5 R5 K35 0x5C1C0200, // 0011 MOVE R7 R1 - 0x88200125, // 0012 GETMBR R8 R0 K37 + 0x88200124, // 0012 GETMBR R8 R0 K36 0x7C140600, // 0013 CALL R5 3 0x4C180000, // 0014 LDNIL R6 0x20180A06, // 0015 NE R6 R5 R6 0x781A0007, // 0016 JMPF R6 #001F 0x88180100, // 0017 GETMBR R6 R0 K0 - 0x8C180D26, // 0018 GETMET R6 R6 K38 + 0x8C180D25, // 0018 GETMET R6 R6 K37 0x50200200, // 0019 LDBOOL R8 1 0 0x7C180400, // 001A CALL R6 2 - 0x8C180727, // 001B GETMET R6 R3 K39 + 0x8C180726, // 001B GETMET R6 R3 K38 0x5C200A00, // 001C MOVE R8 R5 0x7C180400, // 001D CALL R6 2 0x80040C00, // 001E RET 1 R6 - 0x04100928, // 001F SUB R4 R4 K40 - 0xB81A5200, // 0020 GETNGBL R6 K41 - 0x581C002A, // 0021 LDCONST R7 K42 - 0x5820002B, // 0022 LDCONST R8 K43 + 0x04100927, // 001F SUB R4 R4 K39 + 0xB81A5000, // 0020 GETNGBL R6 K40 + 0x581C0029, // 0021 LDCONST R7 K41 + 0x58200014, // 0022 LDCONST R8 K20 0x7C180400, // 0023 CALL R6 2 0x7001FFE7, // 0024 JMP #000D 0x88140100, // 0025 GETMBR R5 R0 K0 - 0x8C140B26, // 0026 GETMET R5 R5 K38 + 0x8C140B25, // 0026 GETMET R5 R5 K37 0x501C0000, // 0027 LDBOOL R7 0 0 0x7C140400, // 0028 CALL R5 2 0x4C140000, // 0029 LDNIL R5 @@ -734,12 +733,12 @@ be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */ 0x8810091B, // 0003 GETMBR R4 R4 K27 0x90023604, // 0004 SETMBR R0 K27 R4 0x88100100, // 0005 GETMBR R4 R0 K0 - 0x8C10092C, // 0006 GETMET R4 R4 K44 + 0x8C10092A, // 0006 GETMET R4 R4 K42 0x5C180200, // 0007 MOVE R6 R1 0x5C1C0400, // 0008 MOVE R7 R2 0x5C200600, // 0009 MOVE R8 R3 0x5C240000, // 000A MOVE R9 R0 - 0x8828012D, // 000B GETMBR R10 R0 K45 + 0x8828012B, // 000B GETMBR R10 R0 K43 0x7C100C00, // 000C CALL R4 6 0x80000000, // 000D RET 0 }) @@ -766,13 +765,13 @@ be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */ &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ 0xA4060800, // 0000 IMPORT R1 K4 - 0x8C08012E, // 0001 GETMET R2 R0 K46 + 0x8C08012C, // 0001 GETMET R2 R0 K44 0x7C080200, // 0002 CALL R2 1 0x8C0C0306, // 0003 GETMET R3 R1 K6 0x60140018, // 0004 GETGBL R5 G24 - 0x8818012F, // 0005 GETMBR R6 R0 K47 + 0x8818012D, // 0005 GETMBR R6 R0 K45 0x780A0003, // 0006 JMPF R2 #000B - 0x8C1C0330, // 0007 GETMET R7 R1 K48 + 0x8C1C032E, // 0007 GETMET R7 R1 K46 0x5C240400, // 0008 MOVE R9 R2 0x7C1C0400, // 0009 CALL R7 2 0x70020000, // 000A JMP #000C @@ -806,29 +805,29 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0xB8122000, // 0000 GETNGBL R4 K16 0x88100911, // 0001 GETMBR R4 R4 K17 0x88140512, // 0002 GETMBR R5 R2 K18 - 0x88180531, // 0003 GETMBR R6 R2 K49 + 0x8818052F, // 0003 GETMBR R6 R2 K47 0x1C1C0B14, // 0004 EQ R7 R5 K20 0x781E000F, // 0005 JMPF R7 #0016 - 0x1C1C0D15, // 0006 EQ R7 R6 K21 + 0x1C1C0D30, // 0006 EQ R7 R6 K48 0x781E0005, // 0007 JMPF R7 #000E - 0x8C1C0732, // 0008 GETMET R7 R3 K50 + 0x8C1C0731, // 0008 GETMET R7 R3 K49 0x88240919, // 0009 GETMBR R9 R4 K25 - 0x58280015, // 000A LDCONST R10 K21 + 0x58280030, // 000A LDCONST R10 K48 0x7C1C0600, // 000B CALL R7 3 0x80040E00, // 000C RET 1 R7 0x70020006, // 000D JMP #0015 - 0x1C1C0D28, // 000E EQ R7 R6 K40 + 0x1C1C0D16, // 000E EQ R7 R6 K22 0x781E0004, // 000F JMPF R7 #0015 - 0x8C1C0732, // 0010 GETMET R7 R3 K50 - 0x88240933, // 0011 GETMBR R9 R4 K51 - 0x58280015, // 0012 LDCONST R10 K21 + 0x8C1C0731, // 0010 GETMET R7 R3 K49 + 0x88240932, // 0011 GETMBR R9 R4 K50 + 0x58280030, // 0012 LDCONST R10 K48 0x7C1C0600, // 0013 CALL R7 3 0x80040E00, // 0014 RET 1 R7 0x700200D4, // 0015 JMP #00EB 0x541E0003, // 0016 LDINT R7 4 0x1C1C0A07, // 0017 EQ R7 R5 R7 0x781E0004, // 0018 JMPF R7 #001E - 0x1C1C0D15, // 0019 EQ R7 R6 K21 + 0x1C1C0D30, // 0019 EQ R7 R6 K48 0x781E0001, // 001A JMPF R7 #001D 0x4C1C0000, // 001B LDNIL R7 0x80040E00, // 001C RET 1 R7 @@ -840,96 +839,96 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x541E001C, // 0022 LDINT R7 29 0x1C1C0A07, // 0023 EQ R7 R5 R7 0x781E0034, // 0024 JMPF R7 #005A - 0x1C1C0D15, // 0025 EQ R7 R6 K21 + 0x1C1C0D30, // 0025 EQ R7 R6 K48 0x781E0031, // 0026 JMPF R7 #0059 - 0x8C1C0934, // 0027 GETMET R7 R4 K52 + 0x8C1C0933, // 0027 GETMET R7 R4 K51 0x7C1C0200, // 0028 CALL R7 1 - 0x88200135, // 0029 GETMBR R8 R0 K53 + 0x88200134, // 0029 GETMBR R8 R0 K52 0x60240010, // 002A GETGBL R9 G16 - 0x8C281136, // 002B GETMET R10 R8 K54 + 0x8C281135, // 002B GETMET R10 R8 K53 0x7C280200, // 002C CALL R10 1 0x7C240200, // 002D CALL R9 1 0xA802000E, // 002E EXBLK 0 #003E 0x5C281200, // 002F MOVE R10 R9 0x7C280000, // 0030 CALL R10 0 - 0x8C2C0F37, // 0031 GETMET R11 R7 K55 + 0x8C2C0F36, // 0031 GETMET R11 R7 K54 0x7C2C0200, // 0032 CALL R11 1 0x8C301718, // 0033 GETMET R12 R11 K24 - 0x58380015, // 0034 LDCONST R14 K21 + 0x58380030, // 0034 LDCONST R14 K48 0x883C0919, // 0035 GETMBR R15 R4 K25 0x5C401400, // 0036 MOVE R16 R10 0x7C300800, // 0037 CALL R12 4 0x8C301718, // 0038 GETMET R12 R11 K24 - 0x58380028, // 0039 LDCONST R14 K40 + 0x58380016, // 0039 LDCONST R14 K22 0x883C0919, // 003A GETMBR R15 R4 K25 0x9440100A, // 003B GETIDX R16 R8 R10 0x7C300800, // 003C CALL R12 4 0x7001FFF0, // 003D JMP #002F - 0x58240038, // 003E LDCONST R9 K56 + 0x58240037, // 003E LDCONST R9 K55 0xAC240200, // 003F CATCH R9 1 0 0xB0080000, // 0040 RAISE 2 R0 R0 - 0x88240139, // 0041 GETMBR R9 R0 K57 - 0x8C24133A, // 0042 GETMET R9 R9 K58 - 0x8C2C033B, // 0043 GETMET R11 R1 K59 + 0x88240138, // 0041 GETMBR R9 R0 K56 + 0x8C241339, // 0042 GETMET R9 R9 K57 + 0x8C2C033A, // 0043 GETMET R11 R1 K58 0x7C2C0200, // 0044 CALL R11 1 0x7C240400, // 0045 CALL R9 2 0x4C280000, // 0046 LDNIL R10 0x1C24120A, // 0047 EQ R9 R9 R10 0x7826000E, // 0048 JMPF R9 #0058 0x8824011C, // 0049 GETMBR R9 R0 K28 - 0x8824133C, // 004A GETMBR R9 R9 K60 + 0x8824133B, // 004A GETMBR R9 R9 K59 0x7426000B, // 004B JMPT R9 #0058 - 0x8C240F37, // 004C GETMET R9 R7 K55 + 0x8C240F36, // 004C GETMET R9 R7 K54 0x7C240200, // 004D CALL R9 1 0x8C281318, // 004E GETMET R10 R9 K24 - 0x58300015, // 004F LDCONST R12 K21 + 0x58300030, // 004F LDCONST R12 K48 0x88340919, // 0050 GETMBR R13 R4 K25 0x543A0012, // 0051 LDINT R14 19 0x7C280800, // 0052 CALL R10 4 0x8C281318, // 0053 GETMET R10 R9 K24 - 0x58300028, // 0054 LDCONST R12 K40 + 0x58300016, // 0054 LDCONST R12 K22 0x88340919, // 0055 GETMBR R13 R4 K25 - 0x58380028, // 0056 LDCONST R14 K40 + 0x58380016, // 0056 LDCONST R14 K22 0x7C280800, // 0057 CALL R10 4 0x80040E00, // 0058 RET 1 R7 0x70020090, // 0059 JMP #00EB 0x541E0038, // 005A LDINT R7 57 0x1C1C0A07, // 005B EQ R7 R5 R7 0x781E008D, // 005C JMPF R7 #00EB - 0xA41E7A00, // 005D IMPORT R7 K61 + 0xA41E7800, // 005D IMPORT R7 K60 0x1C200D14, // 005E EQ R8 R6 K20 0x78220018, // 005F JMPF R8 #0079 0x8820010A, // 0060 GETMBR R8 R0 K10 0x7822000B, // 0061 JMPF R8 #006E 0x88200100, // 0062 GETMBR R8 R0 K0 - 0x8C20113E, // 0063 GETMET R8 R8 K62 + 0x8C20113D, // 0063 GETMET R8 R8 K61 0x7C200200, // 0064 CALL R8 1 - 0x8C20113A, // 0065 GETMET R8 R8 K58 - 0x5828003F, // 0066 LDCONST R10 K63 + 0x8C201139, // 0065 GETMET R8 R8 K57 + 0x5828003E, // 0066 LDCONST R10 K62 0x7C200400, // 0067 CALL R8 2 - 0x8C240740, // 0068 GETMET R9 R3 K64 - 0x882C0941, // 0069 GETMBR R11 R4 K65 + 0x8C24073F, // 0068 GETMET R9 R3 K63 + 0x882C0940, // 0069 GETMBR R11 R4 K64 0x5C301000, // 006A MOVE R12 R8 0x7C240600, // 006B CALL R9 3 0x80041200, // 006C RET 1 R9 0x70020009, // 006D JMP #0078 - 0x8C200732, // 006E GETMET R8 R3 K50 - 0x88280941, // 006F GETMBR R10 R4 K65 - 0xB82E8400, // 0070 GETNGBL R11 K66 - 0x8C2C1743, // 0071 GETMET R11 R11 K67 - 0x58340044, // 0072 LDCONST R13 K68 + 0x8C200731, // 006E GETMET R8 R3 K49 + 0x88280940, // 006F GETMBR R10 R4 K64 + 0xB82E8200, // 0070 GETNGBL R11 K65 + 0x8C2C1742, // 0071 GETMET R11 R11 K66 + 0x58340043, // 0072 LDCONST R13 K67 0x50380200, // 0073 LDBOOL R14 1 0 0x7C2C0600, // 0074 CALL R11 3 - 0x942C1744, // 0075 GETIDX R11 R11 K68 + 0x942C1743, // 0075 GETIDX R11 R11 K67 0x7C200600, // 0076 CALL R8 3 0x80041000, // 0077 RET 1 R8 0x70020071, // 0078 JMP #00EB 0x54220004, // 0079 LDINT R8 5 0x1C200C08, // 007A EQ R8 R6 R8 0x78220006, // 007B JMPF R8 #0083 - 0x8C200732, // 007C GETMET R8 R3 K50 - 0x88280941, // 007D GETMBR R10 R4 K65 - 0x8C2C012E, // 007E GETMET R11 R0 K46 + 0x8C200731, // 007C GETMET R8 R3 K49 + 0x88280940, // 007D GETMBR R10 R4 K64 + 0x8C2C012C, // 007E GETMET R11 R0 K44 0x7C2C0200, // 007F CALL R11 1 0x7C200600, // 0080 CALL R8 3 0x80041000, // 0081 RET 1 R8 @@ -940,51 +939,51 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x8820010A, // 0086 GETMBR R8 R0 K10 0x7822001B, // 0087 JMPF R8 #00A4 0x88200100, // 0088 GETMBR R8 R0 K0 - 0x8C20113E, // 0089 GETMET R8 R8 K62 + 0x8C20113D, // 0089 GETMET R8 R8 K61 0x7C200200, // 008A CALL R8 1 - 0x8C20113A, // 008B GETMET R8 R8 K58 - 0x58280045, // 008C LDCONST R10 K69 + 0x8C201139, // 008B GETMET R8 R8 K57 + 0x58280044, // 008C LDCONST R10 K68 0x7C200400, // 008D CALL R8 2 0x7822000E, // 008E JMPF R8 #009E - 0x8C240F3A, // 008F GETMET R9 R7 K58 + 0x8C240F39, // 008F GETMET R9 R7 K57 0x5C2C1000, // 0090 MOVE R11 R8 - 0x58300046, // 0091 LDCONST R12 K70 + 0x58300045, // 0091 LDCONST R12 K69 0x7C240600, // 0092 CALL R9 3 - 0x24281315, // 0093 GT R10 R9 K21 + 0x24281330, // 0093 GT R10 R9 K48 0x782A0002, // 0094 JMPF R10 #0098 - 0x04281328, // 0095 SUB R10 R9 K40 - 0x402A2A0A, // 0096 CONNECT R10 K21 R10 + 0x04281316, // 0095 SUB R10 R9 K22 + 0x402A600A, // 0096 CONNECT R10 K48 R10 0x9420100A, // 0097 GETIDX R8 R8 R10 - 0x8C280732, // 0098 GETMET R10 R3 K50 - 0x88300941, // 0099 GETMBR R12 R4 K65 + 0x8C280731, // 0098 GETMET R10 R3 K49 + 0x88300940, // 0099 GETMBR R12 R4 K64 0x5C341000, // 009A MOVE R13 R8 0x7C280600, // 009B CALL R10 3 0x80041400, // 009C RET 1 R10 0x70020004, // 009D JMP #00A3 - 0x8C240732, // 009E GETMET R9 R3 K50 - 0x882C0947, // 009F GETMBR R11 R4 K71 + 0x8C240731, // 009E GETMET R9 R3 K49 + 0x882C0946, // 009F GETMBR R11 R4 K70 0x4C300000, // 00A0 LDNIL R12 0x7C240600, // 00A1 CALL R9 3 0x80041200, // 00A2 RET 1 R9 0x70020014, // 00A3 JMP #00B9 - 0xB8228400, // 00A4 GETNGBL R8 K66 - 0x8C201143, // 00A5 GETMET R8 R8 K67 - 0x58280048, // 00A6 LDCONST R10 K72 + 0xB8228200, // 00A4 GETNGBL R8 K65 + 0x8C201142, // 00A5 GETMET R8 R8 K66 + 0x58280047, // 00A6 LDCONST R10 K71 0x502C0200, // 00A7 LDBOOL R11 1 0 0x7C200600, // 00A8 CALL R8 3 - 0x94201149, // 00A9 GETIDX R8 R8 K73 - 0x9420114A, // 00AA GETIDX R8 R8 K74 - 0x8C240F3A, // 00AB GETMET R9 R7 K58 + 0x94201148, // 00A9 GETIDX R8 R8 K72 + 0x94201149, // 00AA GETIDX R8 R8 K73 + 0x8C240F39, // 00AB GETMET R9 R7 K57 0x5C2C1000, // 00AC MOVE R11 R8 - 0x58300046, // 00AD LDCONST R12 K70 + 0x58300045, // 00AD LDCONST R12 K69 0x7C240600, // 00AE CALL R9 3 - 0x24281315, // 00AF GT R10 R9 K21 + 0x24281330, // 00AF GT R10 R9 K48 0x782A0002, // 00B0 JMPF R10 #00B4 - 0x04281328, // 00B1 SUB R10 R9 K40 - 0x402A2A0A, // 00B2 CONNECT R10 K21 R10 + 0x04281316, // 00B1 SUB R10 R9 K22 + 0x402A600A, // 00B2 CONNECT R10 K48 R10 0x9420100A, // 00B3 GETIDX R8 R8 R10 - 0x8C280732, // 00B4 GETMET R10 R3 K50 - 0x88300941, // 00B5 GETMBR R12 R4 K65 + 0x8C280731, // 00B4 GETMET R10 R3 K49 + 0x88300940, // 00B5 GETMBR R12 R4 K64 0x5C341000, // 00B6 MOVE R13 R8 0x7C280600, // 00B7 CALL R10 3 0x80041400, // 00B8 RET 1 R10 @@ -998,24 +997,24 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x8820010A, // 00C0 GETMBR R8 R0 K10 0x7822000B, // 00C1 JMPF R8 #00CE 0x88200100, // 00C2 GETMBR R8 R0 K0 - 0x8C20113E, // 00C3 GETMET R8 R8 K62 + 0x8C20113D, // 00C3 GETMET R8 R8 K61 0x7C200200, // 00C4 CALL R8 1 - 0x8C20113A, // 00C5 GETMET R8 R8 K58 - 0x5828004B, // 00C6 LDCONST R10 K75 + 0x8C201139, // 00C5 GETMET R8 R8 K57 + 0x5828004A, // 00C6 LDCONST R10 K74 0x7C200400, // 00C7 CALL R8 2 - 0x8C240740, // 00C8 GETMET R9 R3 K64 - 0x882C0941, // 00C9 GETMBR R11 R4 K65 + 0x8C24073F, // 00C8 GETMET R9 R3 K63 + 0x882C0940, // 00C9 GETMBR R11 R4 K64 0x5C301000, // 00CA MOVE R12 R8 0x7C240600, // 00CB CALL R9 3 0x80041200, // 00CC RET 1 R9 0x7002000A, // 00CD JMP #00D9 - 0x8C200732, // 00CE GETMET R8 R3 K50 - 0x88280941, // 00CF GETMBR R10 R4 K65 - 0xB82E8400, // 00D0 GETNGBL R11 K66 - 0x8C2C174C, // 00D1 GETMET R11 R11 K76 + 0x8C200731, // 00CE GETMET R8 R3 K49 + 0x88280940, // 00CF GETMBR R10 R4 K64 + 0xB82E8200, // 00D0 GETNGBL R11 K65 + 0x8C2C174B, // 00D1 GETMET R11 R11 K75 0x7C2C0200, // 00D2 CALL R11 1 - 0x8C2C173A, // 00D3 GETMET R11 R11 K58 - 0x5834004B, // 00D4 LDCONST R13 K75 + 0x8C2C1739, // 00D3 GETMET R11 R11 K57 + 0x5834004A, // 00D4 LDCONST R13 K74 0x5838000F, // 00D5 LDCONST R14 K15 0x7C2C0600, // 00D6 CALL R11 3 0x7C200600, // 00D7 CALL R8 3 @@ -1026,22 +1025,22 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x7822000D, // 00DC JMPF R8 #00EB 0x8820010A, // 00DD GETMBR R8 R0 K10 0x78220006, // 00DE JMPF R8 #00E6 - 0x8C200732, // 00DF GETMET R8 R3 K50 - 0x8828094D, // 00E0 GETMBR R10 R4 K77 + 0x8C200731, // 00DF GETMET R8 R3 K49 + 0x8828094C, // 00E0 GETMBR R10 R4 K76 0x882C0100, // 00E1 GETMBR R11 R0 K0 - 0x882C174E, // 00E2 GETMBR R11 R11 K78 + 0x882C174D, // 00E2 GETMBR R11 R11 K77 0x7C200600, // 00E3 CALL R8 3 0x80041000, // 00E4 RET 1 R8 0x70020004, // 00E5 JMP #00EB - 0x8C200732, // 00E6 GETMET R8 R3 K50 - 0x8828094D, // 00E7 GETMBR R10 R4 K77 - 0x582C0028, // 00E8 LDCONST R11 K40 + 0x8C200731, // 00E6 GETMET R8 R3 K49 + 0x8828094C, // 00E7 GETMBR R10 R4 K76 + 0x582C0016, // 00E8 LDCONST R11 K22 0x7C200600, // 00E9 CALL R8 3 0x80041000, // 00EA RET 1 R8 0x601C0003, // 00EB GETGBL R7 G3 0x5C200000, // 00EC MOVE R8 R0 0x7C1C0200, // 00ED CALL R7 1 - 0x8C1C0F4F, // 00EE GETMET R7 R7 K79 + 0x8C1C0F4E, // 00EE GETMET R7 R7 K78 0x5C240200, // 00EF MOVE R9 R1 0x5C280400, // 00F0 MOVE R10 R2 0x5C2C0600, // 00F1 MOVE R11 R3 @@ -1073,23 +1072,23 @@ be_local_closure(class_Matter_Plugin_Device_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100950, // 0003 GETMET R4 R4 K80 + 0x8C10094F, // 0003 GETMET R4 R4 K79 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 0x8810010A, // 0008 GETMBR R4 R0 K10 0x7812000A, // 0009 JMPF R4 #0015 - 0x8C10073A, // 000A GETMET R4 R3 K58 - 0x88180151, // 000B GETMBR R6 R0 K81 + 0x8C100739, // 000A GETMET R4 R3 K57 + 0x88180150, // 000B GETMBR R6 R0 K80 0x7C100400, // 000C CALL R4 2 0x8814011C, // 000D GETMBR R5 R0 K28 - 0x8C140B52, // 000E GETMET R5 R5 K82 + 0x8C140B51, // 000E GETMET R5 R5 K81 0x5C1C0800, // 000F MOVE R7 R4 - 0x88200153, // 0010 GETMBR R8 R0 K83 + 0x88200152, // 0010 GETMBR R8 R0 K82 0x7C140600, // 0011 CALL R5 3 0x90020005, // 0012 SETMBR R0 K0 R5 - 0x8C140154, // 0013 GETMET R5 R0 K84 + 0x8C140153, // 0013 GETMET R5 R0 K83 0x7C140200, // 0014 CALL R5 1 0x80000000, // 0015 RET 0 }) @@ -1172,98 +1171,98 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ be_str_weak(append_state_json), &be_const_str_solidified, ( &(const binstruction[95]) { /* code */ - 0xA406AA00, // 0000 IMPORT R1 K85 + 0xA406A800, // 0000 IMPORT R1 K84 0xA40A4000, // 0001 IMPORT R2 K32 0x580C000F, // 0002 LDCONST R3 K15 0x84100000, // 0003 CLOSURE R4 P0 - 0x8C140356, // 0004 GETMET R5 R1 K86 + 0x8C140355, // 0004 GETMET R5 R1 K85 0x5C1C0000, // 0005 MOVE R7 R0 - 0x58200057, // 0006 LDCONST R8 K87 + 0x58200056, // 0006 LDCONST R8 K86 0x7C140600, // 0007 CALL R5 3 0x78160013, // 0008 JMPF R5 #001D - 0x8C180358, // 0009 GETMET R6 R1 K88 + 0x8C180357, // 0009 GETMET R6 R1 K87 0x5C200000, // 000A MOVE R8 R0 - 0x58240059, // 000B LDCONST R9 K89 + 0x58240058, // 000B LDCONST R9 K88 0x7C180600, // 000C CALL R6 3 0x781A000E, // 000D JMPF R6 #001D - 0x88180159, // 000E GETMBR R6 R0 K89 + 0x88180158, // 000E GETMBR R6 R0 K88 0x4C1C0000, // 000F LDNIL R7 0x20180C07, // 0010 NE R6 R6 R7 0x781A0003, // 0011 JMPF R6 #0016 - 0x8C18055A, // 0012 GETMET R6 R2 K90 - 0x88200159, // 0013 GETMBR R8 R0 K89 + 0x8C180559, // 0012 GETMET R6 R2 K89 + 0x88200158, // 0013 GETMBR R8 R0 K88 0x7C180400, // 0014 CALL R6 2 0x70020000, // 0015 JMP #0017 - 0x5818005B, // 0016 LDCONST R6 K91 + 0x5818005A, // 0016 LDCONST R6 K90 0x601C0018, // 0017 GETGBL R7 G24 - 0x5820005C, // 0018 LDCONST R8 K92 + 0x5820005B, // 0018 LDCONST R8 K91 0x5C240A00, // 0019 MOVE R9 R5 0x5C280C00, // 001A MOVE R10 R6 0x7C1C0600, // 001B CALL R7 3 0x000C0607, // 001C ADD R3 R3 R7 0x5C180800, // 001D MOVE R6 R4 - 0x581C005D, // 001E LDCONST R7 K93 - 0x5820005E, // 001F LDCONST R8 K94 + 0x581C005C, // 001E LDCONST R7 K92 + 0x5820005D, // 001F LDCONST R8 K93 0x7C180400, // 0020 CALL R6 2 0x5C180800, // 0021 MOVE R6 R4 - 0x581C005F, // 0022 LDCONST R7 K95 - 0x58200060, // 0023 LDCONST R8 K96 + 0x581C005E, // 0022 LDCONST R7 K94 + 0x5820005F, // 0023 LDCONST R8 K95 0x7C180400, // 0024 CALL R6 2 0x5C180800, // 0025 MOVE R6 R4 - 0x581C0061, // 0026 LDCONST R7 K97 - 0x58200062, // 0027 LDCONST R8 K98 + 0x581C0060, // 0026 LDCONST R7 K96 + 0x58200061, // 0027 LDCONST R8 K97 0x7C180400, // 0028 CALL R6 2 0x5C180800, // 0029 MOVE R6 R4 - 0x581C0063, // 002A LDCONST R7 K99 - 0x58200064, // 002B LDCONST R8 K100 + 0x581C0062, // 002A LDCONST R7 K98 + 0x58200063, // 002B LDCONST R8 K99 0x7C180400, // 002C CALL R6 2 0x5C180800, // 002D MOVE R6 R4 - 0x581C0065, // 002E LDCONST R7 K101 - 0x58200066, // 002F LDCONST R8 K102 + 0x581C0064, // 002E LDCONST R7 K100 + 0x58200065, // 002F LDCONST R8 K101 0x7C180400, // 0030 CALL R6 2 0x5C180800, // 0031 MOVE R6 R4 - 0x581C0067, // 0032 LDCONST R7 K103 - 0x58200068, // 0033 LDCONST R8 K104 + 0x581C0066, // 0032 LDCONST R7 K102 + 0x58200067, // 0033 LDCONST R8 K103 0x7C180400, // 0034 CALL R6 2 0x5C180800, // 0035 MOVE R6 R4 - 0x581C0069, // 0036 LDCONST R7 K105 - 0x5820006A, // 0037 LDCONST R8 K106 + 0x581C0068, // 0036 LDCONST R7 K104 + 0x58200069, // 0037 LDCONST R8 K105 0x7C180400, // 0038 CALL R6 2 0x5C180800, // 0039 MOVE R6 R4 - 0x581C006B, // 003A LDCONST R7 K107 - 0x5820006C, // 003B LDCONST R8 K108 + 0x581C006A, // 003A LDCONST R7 K106 + 0x5820006B, // 003B LDCONST R8 K107 0x7C180400, // 003C CALL R6 2 0x5C180800, // 003D MOVE R6 R4 - 0x581C006D, // 003E LDCONST R7 K109 - 0x5820006E, // 003F LDCONST R8 K110 + 0x581C006C, // 003E LDCONST R7 K108 + 0x5820006D, // 003F LDCONST R8 K109 0x7C180400, // 0040 CALL R6 2 0x5C180800, // 0041 MOVE R6 R4 - 0x581C006F, // 0042 LDCONST R7 K111 - 0x58200070, // 0043 LDCONST R8 K112 + 0x581C006E, // 0042 LDCONST R7 K110 + 0x5820006F, // 0043 LDCONST R8 K111 0x7C180400, // 0044 CALL R6 2 0x5C180800, // 0045 MOVE R6 R4 - 0x581C0071, // 0046 LDCONST R7 K113 - 0x58200072, // 0047 LDCONST R8 K114 + 0x581C0070, // 0046 LDCONST R7 K112 + 0x58200071, // 0047 LDCONST R8 K113 0x7C180400, // 0048 CALL R6 2 0x5C180800, // 0049 MOVE R6 R4 - 0x581C0073, // 004A LDCONST R7 K115 - 0x58200074, // 004B LDCONST R8 K116 + 0x581C0072, // 004A LDCONST R7 K114 + 0x58200073, // 004B LDCONST R8 K115 0x7C180400, // 004C CALL R6 2 0x5C180800, // 004D MOVE R6 R4 - 0x581C0075, // 004E LDCONST R7 K117 - 0x58200076, // 004F LDCONST R8 K118 + 0x581C0074, // 004E LDCONST R7 K116 + 0x58200075, // 004F LDCONST R8 K117 0x7C180400, // 0050 CALL R6 2 0x5C180800, // 0051 MOVE R6 R4 - 0x581C0077, // 0052 LDCONST R7 K119 - 0x58200078, // 0053 LDCONST R8 K120 + 0x581C0076, // 0052 LDCONST R7 K118 + 0x58200077, // 0053 LDCONST R8 K119 0x7C180400, // 0054 CALL R6 2 0x5C180800, // 0055 MOVE R6 R4 - 0x581C0079, // 0056 LDCONST R7 K121 - 0x5820007A, // 0057 LDCONST R8 K122 + 0x581C0078, // 0056 LDCONST R7 K120 + 0x58200079, // 0057 LDCONST R8 K121 0x7C180400, // 0058 CALL R6 2 0x5C180800, // 0059 MOVE R6 R4 - 0x581C007B, // 005A LDCONST R7 K123 - 0x5820007C, // 005B LDCONST R8 K124 + 0x581C007A, // 005A LDCONST R7 K122 + 0x5820007B, // 005B LDCONST R8 K123 0x7C180400, // 005C CALL R6 2 0xA0000000, // 005D CLOSE R0 0x80040600, // 005E RET 1 R3 @@ -1290,7 +1289,7 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ be_str_weak(_parse_sensor_entry), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C1C033A, // 0000 GETMET R7 R1 K58 + 0x8C1C0339, // 0000 GETMET R7 R1 K57 0x5C240400, // 0001 MOVE R9 R2 0x7C1C0400, // 0002 CALL R7 2 0x4C200000, // 0003 LDNIL R8 @@ -1302,7 +1301,7 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ 0x5C1C1000, // 0009 MOVE R7 R8 0x20200E03, // 000A NE R8 R7 R3 0x78220003, // 000B JMPF R8 #0010 - 0x8C20017D, // 000C GETMET R8 R0 K125 + 0x8C20017C, // 000C GETMET R8 R0 K124 0x5C280A00, // 000D MOVE R10 R5 0x5C2C0C00, // 000E MOVE R11 R6 0x7C200600, // 000F CALL R8 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index be7d425a7..d81523286 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Root' ktab size: 173, total: 225 (saved 416 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Root[173] = { +// compact class 'Matter_Plugin_Root' ktab size: 176, total: 225 (saved 392 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Root[176] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -101,83 +101,86 @@ static const bvalue be_ktab_class_Matter_Plugin_Root[173] = { /* K93 */ be_nested_str_weak(disable_bridge_mode), /* K94 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), /* K95 */ be_nested_str_weak(read_attribute), - /* K96 */ be_nested_str_weak(int), - /* K97 */ be_nested_str_weak(attribute_updated), - /* K98 */ be_nested_str_weak(status), - /* K99 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K100 */ be_nested_str_weak(INVALID_ACTION), - /* K101 */ be_nested_str_weak(init), - /* K102 */ be_nested_str_weak(publish_event), - /* K103 */ be_nested_str_weak(EVENT_CRITICAL), - /* K104 */ be_nested_str_weak(Matter_TLV_item), - /* K105 */ be_nested_str_weak(crypto), - /* K106 */ be_nested_str_weak(command), + /* K96 */ be_const_int(0), + /* K97 */ be_nested_str_weak(int), + /* K98 */ be_nested_str_weak(attribute_updated), + /* K99 */ be_nested_str_weak(status), + /* K100 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K101 */ be_const_int(1), + /* K102 */ be_nested_str_weak(INVALID_ACTION), + /* K103 */ be_nested_str_weak(init), + /* K104 */ be_nested_str_weak(publish_event), + /* K105 */ be_nested_str_weak(EVENT_CRITICAL), + /* K106 */ be_nested_str_weak(Matter_TLV_item), /* K107 */ be_const_int(3), - /* K108 */ be_nested_str_weak(fabric_completed), - /* K109 */ be_nested_str_weak(set_no_expiration), - /* K110 */ be_nested_str_weak(save), - /* K111 */ be_nested_str_weak(start_commissioning_complete_deferred), - /* K112 */ be_nested_str_weak(context_error), - /* K113 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), - /* K114 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K115 */ be_nested_str_weak(DAC_Cert_FFF1_8000), - /* K116 */ be_nested_str_weak(PAI_Cert_FFF1), - /* K117 */ be_nested_str_weak(CD_FFF1_8000), - /* K118 */ be_nested_str_weak(tlv2raw), - /* K119 */ be_nested_str_weak(get_ac), - /* K120 */ be_nested_str_weak(EC_P256), - /* K121 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K122 */ be_nested_str_weak(DAC_Priv_FFF1_8000), - /* K123 */ be_nested_str_weak(gen_CSR), - /* K124 */ be_nested_str_weak(set_temp_ca), - /* K125 */ be_nested_str_weak(SUCCESS), - /* K126 */ be_nested_str_weak(log), - /* K127 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), - /* K128 */ be_nested_str_weak(get_temp_ca), - /* K129 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), - /* K130 */ be_nested_str_weak(create_fabric), - /* K131 */ be_nested_str_weak(set_ca), - /* K132 */ be_nested_str_weak(set_noc_icac), - /* K133 */ be_nested_str_weak(set_ipk_epoch_key), - /* K134 */ be_nested_str_weak(set_admin_subject_vendor), - /* K135 */ be_nested_str_weak(set_pk), - /* K136 */ be_nested_str_weak(get_pk), - /* K137 */ be_nested_str_weak(findsub), - /* K138 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), - /* K139 */ be_nested_str_weak(fromu32), - /* K140 */ be_nested_str_weak(tobytes), - /* K141 */ be_nested_str_weak(get_temp_ca_pub), - /* K142 */ be_const_int(2147483647), - /* K143 */ be_nested_str_weak(fromstring), - /* K144 */ be_nested_str_weak(CompressedFabric), - /* K145 */ be_nested_str_weak(HKDF_SHA256), - /* K146 */ be_nested_str_weak(copy), - /* K147 */ be_nested_str_weak(reverse), - /* K148 */ be_nested_str_weak(derive), - /* K149 */ be_nested_str_weak(set_fabric_device), - /* K150 */ be_nested_str_weak(fabric_candidate), - /* K151 */ be_nested_str_weak(start_operational_discovery_deferred), - /* K152 */ be_nested_str_weak(is_PASE), - /* K153 */ be_nested_str_weak(set_expire_in_seconds), - /* K154 */ be_nested_str_weak(log_new_fabric), - /* K155 */ be_nested_str_weak(assign_fabric_index), - /* K156 */ be_nested_str_weak(set_fabric_label), - /* K157 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), - /* K158 */ be_nested_str_weak(get_fabric_id), - /* K159 */ be_nested_str_weak(tohex), - /* K160 */ be_nested_str_weak(fabric_index_X3A), - /* K161 */ be_nested_str_weak(mark_for_deletion), - /* K162 */ be_nested_str_weak(set_timer), - /* K163 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), - /* K164 */ be_nested_str_weak(_X29_X20not_X20found), - /* K165 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), - /* K166 */ be_nested_str_weak(INVALID_DATA_TYPE), - /* K167 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), - /* K168 */ be_nested_str_weak(start_basic_commissioning), - /* K169 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), - /* K170 */ be_nested_str_weak(start_root_basic_commissioning), - /* K171 */ be_nested_str_weak(stop_basic_commissioning), - /* K172 */ be_nested_str_weak(invoke_request), + /* K108 */ be_nested_str_weak(crypto), + /* K109 */ be_nested_str_weak(command), + /* K110 */ be_const_int(2), + /* K111 */ be_nested_str_weak(fabric_completed), + /* K112 */ be_nested_str_weak(set_no_expiration), + /* K113 */ be_nested_str_weak(save), + /* K114 */ be_nested_str_weak(start_commissioning_complete_deferred), + /* K115 */ be_nested_str_weak(context_error), + /* K116 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), + /* K117 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K118 */ be_nested_str_weak(DAC_Cert_FFF1_8000), + /* K119 */ be_nested_str_weak(PAI_Cert_FFF1), + /* K120 */ be_nested_str_weak(CD_FFF1_8000), + /* K121 */ be_nested_str_weak(tlv2raw), + /* K122 */ be_nested_str_weak(get_ac), + /* K123 */ be_nested_str_weak(EC_P256), + /* K124 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K125 */ be_nested_str_weak(DAC_Priv_FFF1_8000), + /* K126 */ be_nested_str_weak(gen_CSR), + /* K127 */ be_nested_str_weak(set_temp_ca), + /* K128 */ be_nested_str_weak(SUCCESS), + /* K129 */ be_nested_str_weak(log), + /* K130 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), + /* K131 */ be_nested_str_weak(get_temp_ca), + /* K132 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), + /* K133 */ be_nested_str_weak(create_fabric), + /* K134 */ be_nested_str_weak(set_ca), + /* K135 */ be_nested_str_weak(set_noc_icac), + /* K136 */ be_nested_str_weak(set_ipk_epoch_key), + /* K137 */ be_nested_str_weak(set_admin_subject_vendor), + /* K138 */ be_nested_str_weak(set_pk), + /* K139 */ be_nested_str_weak(get_pk), + /* K140 */ be_nested_str_weak(findsub), + /* K141 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), + /* K142 */ be_nested_str_weak(fromu32), + /* K143 */ be_nested_str_weak(tobytes), + /* K144 */ be_nested_str_weak(get_temp_ca_pub), + /* K145 */ be_const_int(2147483647), + /* K146 */ be_nested_str_weak(fromstring), + /* K147 */ be_nested_str_weak(CompressedFabric), + /* K148 */ be_nested_str_weak(HKDF_SHA256), + /* K149 */ be_nested_str_weak(copy), + /* K150 */ be_nested_str_weak(reverse), + /* K151 */ be_nested_str_weak(derive), + /* K152 */ be_nested_str_weak(set_fabric_device), + /* K153 */ be_nested_str_weak(fabric_candidate), + /* K154 */ be_nested_str_weak(start_operational_discovery_deferred), + /* K155 */ be_nested_str_weak(is_PASE), + /* K156 */ be_nested_str_weak(set_expire_in_seconds), + /* K157 */ be_nested_str_weak(log_new_fabric), + /* K158 */ be_nested_str_weak(assign_fabric_index), + /* K159 */ be_nested_str_weak(set_fabric_label), + /* K160 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), + /* K161 */ be_nested_str_weak(get_fabric_id), + /* K162 */ be_nested_str_weak(tohex), + /* K163 */ be_nested_str_weak(fabric_index_X3A), + /* K164 */ be_nested_str_weak(mark_for_deletion), + /* K165 */ be_nested_str_weak(set_timer), + /* K166 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), + /* K167 */ be_nested_str_weak(_X29_X20not_X20found), + /* K168 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), + /* K169 */ be_nested_str_weak(INVALID_DATA_TYPE), + /* K170 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), + /* K171 */ be_nested_str_weak(start_basic_commissioning), + /* K172 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), + /* K173 */ be_nested_str_weak(start_root_basic_commissioning), + /* K174 */ be_nested_str_weak(stop_basic_commissioning), + /* K175 */ be_nested_str_weak(invoke_request), }; @@ -1156,12 +1159,12 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E002F, // 0004 LDINT R7 48 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0019, // 0006 JMPF R7 #0021 - 0x1C1C0D05, // 0007 EQ R7 R6 K5 + 0x1C1C0D60, // 0007 EQ R7 R6 K96 0x781E0016, // 0008 JMPF R7 #0020 0x601C0004, // 0009 GETGBL R7 G4 0x5C200600, // 000A MOVE R8 R3 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0F60, // 000C EQ R7 R7 K96 + 0x1C1C0F61, // 000C EQ R7 R7 K97 0x741E0004, // 000D JMPT R7 #0013 0x601C000F, // 000E GETGBL R7 G15 0x5C200600, // 000F MOVE R8 R3 @@ -1169,7 +1172,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x7C1C0400, // 0011 CALL R7 2 0x781E0007, // 0012 JMPF R7 #001B 0x90061003, // 0013 SETMBR R1 K8 R3 - 0x8C1C0161, // 0014 GETMET R7 R0 K97 + 0x8C1C0162, // 0014 GETMET R7 R0 K98 0x88240503, // 0015 GETMBR R9 R2 K3 0x88280504, // 0016 GETMBR R10 R2 K4 0x7C1C0600, // 0017 CALL R7 3 @@ -1177,15 +1180,15 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x80040E00, // 0019 RET 1 R7 0x70020004, // 001A JMP #0020 0xB81E0200, // 001B GETNGBL R7 K1 - 0x881C0F63, // 001C GETMBR R7 R7 K99 - 0x900AC407, // 001D SETMBR R2 K98 R7 + 0x881C0F64, // 001C GETMBR R7 R7 K100 + 0x900AC607, // 001D SETMBR R2 K99 R7 0x501C0000, // 001E LDBOOL R7 0 0 0x80040E00, // 001F RET 1 R7 0x70020041, // 0020 JMP #0063 0x541E001E, // 0021 LDINT R7 31 0x1C1C0A07, // 0022 EQ R7 R5 R7 0x781E0004, // 0023 JMPF R7 #0029 - 0x1C1C0D05, // 0024 EQ R7 R6 K5 + 0x1C1C0D60, // 0024 EQ R7 R6 K96 0x781E0001, // 0025 JMPF R7 #0028 0x501C0200, // 0026 LDBOOL R7 1 0 0x80040E00, // 0027 RET 1 R7 @@ -1208,7 +1211,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E0029, // 0038 LDINT R7 42 0x1C1C0A07, // 0039 EQ R7 R5 R7 0x781E0004, // 003A JMPF R7 #0040 - 0x1C1C0D05, // 003B EQ R7 R6 K5 + 0x1C1C0D60, // 003B EQ R7 R6 K96 0x781E0001, // 003C JMPF R7 #003F 0x501C0200, // 003D LDBOOL R7 1 0 0x80040E00, // 003E RET 1 R7 @@ -1216,23 +1219,23 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E002A, // 0040 LDINT R7 43 0x1C1C0A07, // 0041 EQ R7 R5 R7 0x781E0007, // 0042 JMPF R7 #004B - 0x1C1C0D05, // 0043 EQ R7 R6 K5 + 0x1C1C0D60, // 0043 EQ R7 R6 K96 0x781E0004, // 0044 JMPF R7 #004A 0xB81E0200, // 0045 GETNGBL R7 K1 - 0x881C0F63, // 0046 GETMBR R7 R7 K99 - 0x900AC407, // 0047 SETMBR R2 K98 R7 + 0x881C0F64, // 0046 GETMBR R7 R7 K100 + 0x900AC607, // 0047 SETMBR R2 K99 R7 0x501C0000, // 0048 LDBOOL R7 0 0 0x80040E00, // 0049 RET 1 R7 0x70020017, // 004A JMP #0063 0x541E002B, // 004B LDINT R7 44 0x1C1C0A07, // 004C EQ R7 R5 R7 0x781E0009, // 004D JMPF R7 #0058 - 0x1C1C0D05, // 004E EQ R7 R6 K5 + 0x1C1C0D60, // 004E EQ R7 R6 K96 0x781E0002, // 004F JMPF R7 #0053 0x501C0200, // 0050 LDBOOL R7 1 0 0x80040E00, // 0051 RET 1 R7 0x70020003, // 0052 JMP #0057 - 0x1C1C0D09, // 0053 EQ R7 R6 K9 + 0x1C1C0D65, // 0053 EQ R7 R6 K101 0x781E0001, // 0054 JMPF R7 #0057 0x501C0200, // 0055 LDBOOL R7 1 0 0x80040E00, // 0056 RET 1 R7 @@ -1244,8 +1247,8 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x1C1C0C07, // 005C EQ R7 R6 R7 0x781E0004, // 005D JMPF R7 #0063 0xB81E0200, // 005E GETNGBL R7 K1 - 0x881C0F64, // 005F GETMBR R7 R7 K100 - 0x900AC407, // 0060 SETMBR R2 K98 R7 + 0x881C0F66, // 005F GETMBR R7 R7 K102 + 0x900AC607, // 0060 SETMBR R2 K99 R7 0x501C0000, // 0061 LDBOOL R7 0 0 0x80040E00, // 0062 RET 1 R7 0x80000000, // 0063 RET 0 @@ -1275,19 +1278,19 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100965, // 0003 GETMET R4 R4 K101 + 0x8C100967, // 0003 GETMET R4 R4 K103 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x8C100166, // 0008 GETMET R4 R0 K102 + 0x8C100168, // 0008 GETMET R4 R0 K104 0x541A0027, // 0009 LDINT R6 40 0x581C0005, // 000A LDCONST R7 K5 0xB8220200, // 000B GETNGBL R8 K1 - 0x88201167, // 000C GETMBR R8 R8 K103 + 0x88201169, // 000C GETMBR R8 R8 K105 0xB8260200, // 000D GETNGBL R9 K1 0x88241302, // 000E GETMBR R9 R9 K2 - 0x8C241368, // 000F GETMET R9 R9 K104 + 0x8C24136A, // 000F GETMET R9 R9 K106 0x7C240200, // 0010 CALL R9 1 0x8C241306, // 0011 GETMET R9 R9 K6 0xB82E0200, // 0012 GETNGBL R11 K1 @@ -1298,20 +1301,20 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ 0x7C300200, // 0017 CALL R12 1 0x7C240600, // 0018 CALL R9 3 0x7C100A00, // 0019 CALL R4 5 - 0x8C100166, // 001A GETMET R4 R0 K102 + 0x8C100168, // 001A GETMET R4 R0 K104 0x541A0032, // 001B LDINT R6 51 - 0x581C000F, // 001C LDCONST R7 K15 + 0x581C006B, // 001C LDCONST R7 K107 0xB8220200, // 001D GETNGBL R8 K1 - 0x88201167, // 001E GETMBR R8 R8 K103 + 0x88201169, // 001E GETMBR R8 R8 K105 0xB8260200, // 001F GETNGBL R9 K1 0x88241302, // 0020 GETMBR R9 R9 K2 - 0x8C241368, // 0021 GETMET R9 R9 K104 + 0x8C24136A, // 0021 GETMET R9 R9 K106 0x7C240200, // 0022 CALL R9 1 0x8C241306, // 0023 GETMET R9 R9 K6 0xB82E0200, // 0024 GETNGBL R11 K1 0x882C1702, // 0025 GETMBR R11 R11 K2 0x882C170E, // 0026 GETMBR R11 R11 K14 - 0x58300009, // 0027 LDCONST R12 K9 + 0x58300065, // 0027 LDCONST R12 K101 0x7C240600, // 0028 CALL R9 3 0x7C100A00, // 0029 CALL R4 5 0x80000000, // 002A RET 0 @@ -1366,67 +1369,67 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[737]) { /* code */ - 0xA412D200, // 0000 IMPORT R4 K105 + 0xA412D800, // 0000 IMPORT R4 K108 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C076A, // 0004 GETMBR R7 R3 K106 + 0x881C076D, // 0004 GETMBR R7 R3 K109 0x5422002F, // 0005 LDINT R8 48 0x1C200C08, // 0006 EQ R8 R6 R8 0x7822005C, // 0007 JMPF R8 #0065 - 0x1C200F05, // 0008 EQ R8 R7 K5 + 0x1C200F60, // 0008 EQ R8 R7 K96 0x78220017, // 0009 JMPF R8 #0022 0x8C200541, // 000A GETMET R8 R2 K65 - 0x58280005, // 000B LDCONST R10 K5 + 0x58280060, // 000B LDCONST R10 K96 0x542E0383, // 000C LDINT R11 900 0x7C200600, // 000D CALL R8 3 0x8C240541, // 000E GETMET R9 R2 K65 - 0x582C0009, // 000F LDCONST R11 K9 - 0x58300005, // 0010 LDCONST R12 K5 + 0x582C0065, // 000F LDCONST R11 K101 + 0x58300060, // 0010 LDCONST R12 K96 0x7C240600, // 0011 CALL R9 3 0x90061009, // 0012 SETMBR R1 K8 R9 0x8C280B0A, // 0013 GETMET R10 R5 K10 0x7C280200, // 0014 CALL R10 1 0x8C2C150B, // 0015 GETMET R11 R10 K11 - 0x58340005, // 0016 LDCONST R13 K5 + 0x58340060, // 0016 LDCONST R13 K96 0x88380B0E, // 0017 GETMBR R14 R5 K14 - 0x583C0005, // 0018 LDCONST R15 K5 + 0x583C0060, // 0018 LDCONST R15 K96 0x7C2C0800, // 0019 CALL R11 4 0x8C2C150B, // 001A GETMET R11 R10 K11 - 0x58340009, // 001B LDCONST R13 K9 + 0x58340065, // 001B LDCONST R13 K101 0x88380B16, // 001C GETMBR R14 R5 K22 0x583C001D, // 001D LDCONST R15 K29 0x7C2C0800, // 001E CALL R11 4 - 0x900ED509, // 001F SETMBR R3 K106 K9 + 0x900EDB65, // 001F SETMBR R3 K109 K101 0x80041400, // 0020 RET 1 R10 0x70020041, // 0021 JMP #0064 - 0x1C200F0D, // 0022 EQ R8 R7 K13 + 0x1C200F6E, // 0022 EQ R8 R7 K110 0x7822001A, // 0023 JMPF R8 #003F 0x8C200541, // 0024 GETMET R8 R2 K65 - 0x58280005, // 0025 LDCONST R10 K5 + 0x58280060, // 0025 LDCONST R10 K96 0x7C200400, // 0026 CALL R8 2 0x8C240541, // 0027 GETMET R9 R2 K65 - 0x582C0009, // 0028 LDCONST R11 K9 + 0x582C0065, // 0028 LDCONST R11 K101 0x58300053, // 0029 LDCONST R12 K83 0x7C240600, // 002A CALL R9 3 0x8C280541, // 002B GETMET R10 R2 K65 - 0x5830000D, // 002C LDCONST R12 K13 - 0x58340005, // 002D LDCONST R13 K5 + 0x5830006E, // 002C LDCONST R12 K110 + 0x58340060, // 002D LDCONST R13 K96 0x7C280600, // 002E CALL R10 3 0x9006100A, // 002F SETMBR R1 K8 R10 0x8C2C0B0A, // 0030 GETMET R11 R5 K10 0x7C2C0200, // 0031 CALL R11 1 0x8C30170B, // 0032 GETMET R12 R11 K11 - 0x58380005, // 0033 LDCONST R14 K5 + 0x58380060, // 0033 LDCONST R14 K96 0x883C0B0E, // 0034 GETMBR R15 R5 K14 - 0x58400005, // 0035 LDCONST R16 K5 + 0x58400060, // 0035 LDCONST R16 K96 0x7C300800, // 0036 CALL R12 4 0x8C30170B, // 0037 GETMET R12 R11 K11 - 0x58380009, // 0038 LDCONST R14 K9 + 0x58380065, // 0038 LDCONST R14 K101 0x883C0B16, // 0039 GETMBR R15 R5 K22 0x5840001D, // 003A LDCONST R16 K29 0x7C300800, // 003B CALL R12 4 - 0x900ED56B, // 003C SETMBR R3 K106 K107 + 0x900EDB6B, // 003C SETMBR R3 K109 K107 0x80041600, // 003D RET 1 R11 0x70020024, // 003E JMP #0064 0x54220003, // 003F LDINT R8 4 @@ -1437,75 +1440,75 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C200400, // 0044 CALL R8 2 0x88200349, // 0045 GETMBR R8 R1 K73 0x7822001B, // 0046 JMPF R8 #0063 - 0x90061105, // 0047 SETMBR R1 K8 K5 + 0x90061160, // 0047 SETMBR R1 K8 K96 0x88200349, // 0048 GETMBR R8 R1 K73 - 0x8C20116C, // 0049 GETMET R8 R8 K108 + 0x8C20116F, // 0049 GETMET R8 R8 K111 0x7C200200, // 004A CALL R8 1 - 0x8C20036D, // 004B GETMET R8 R1 K109 + 0x8C200370, // 004B GETMET R8 R1 K112 0x7C200200, // 004C CALL R8 1 - 0x8C20036E, // 004D GETMET R8 R1 K110 + 0x8C200371, // 004D GETMET R8 R1 K113 0x7C200200, // 004E CALL R8 1 0x8C200B0A, // 004F GETMET R8 R5 K10 0x7C200200, // 0050 CALL R8 1 0x8C24110B, // 0051 GETMET R9 R8 K11 - 0x582C0005, // 0052 LDCONST R11 K5 + 0x582C0060, // 0052 LDCONST R11 K96 0x88300B0E, // 0053 GETMBR R12 R5 K14 - 0x58340005, // 0054 LDCONST R13 K5 + 0x58340060, // 0054 LDCONST R13 K96 0x7C240800, // 0055 CALL R9 4 0x8C24110B, // 0056 GETMET R9 R8 K11 - 0x582C0009, // 0057 LDCONST R11 K9 + 0x582C0065, // 0057 LDCONST R11 K101 0x88300B16, // 0058 GETMBR R12 R5 K22 0x5834001D, // 0059 LDCONST R13 K29 0x7C240800, // 005A CALL R9 4 0x54260004, // 005B LDINT R9 5 - 0x900ED409, // 005C SETMBR R3 K106 R9 + 0x900EDA09, // 005C SETMBR R3 K109 R9 0x88240136, // 005D GETMBR R9 R0 K54 - 0x8C24136F, // 005E GETMET R9 R9 K111 + 0x8C241372, // 005E GETMET R9 R9 K114 0x5C2C0200, // 005F MOVE R11 R1 0x7C240400, // 0060 CALL R9 2 0x80041000, // 0061 RET 1 R8 0x70020000, // 0062 JMP #0064 - 0xB006E171, // 0063 RAISE 1 K112 K113 + 0xB006E774, // 0063 RAISE 1 K115 K116 0x70020279, // 0064 JMP #02DF 0x5422003D, // 0065 LDINT R8 62 0x1C200C08, // 0066 EQ R8 R6 R8 0x782201DD, // 0067 JMPF R8 #0246 - 0x1C200F0D, // 0068 EQ R8 R7 K13 + 0x1C200F6E, // 0068 EQ R8 R7 K110 0x7822001D, // 0069 JMPF R8 #0088 0x8C200541, // 006A GETMET R8 R2 K65 - 0x58280005, // 006B LDCONST R10 K5 + 0x58280060, // 006B LDCONST R10 K96 0x7C200400, // 006C CALL R8 2 - 0x20241109, // 006D NE R9 R8 K9 + 0x20241165, // 006D NE R9 R8 K101 0x78260006, // 006E JMPF R9 #0076 - 0x2024110D, // 006F NE R9 R8 K13 + 0x2024116E, // 006F NE R9 R8 K110 0x78260004, // 0070 JMPF R9 #0076 0xB8260200, // 0071 GETNGBL R9 K1 - 0x88241372, // 0072 GETMBR R9 R9 K114 - 0x900EC409, // 0073 SETMBR R3 K98 R9 + 0x88241375, // 0072 GETMBR R9 R9 K117 + 0x900EC609, // 0073 SETMBR R3 K99 R9 0x4C240000, // 0074 LDNIL R9 0x80041200, // 0075 RET 1 R9 0x8C240B0A, // 0076 GETMET R9 R5 K10 0x7C240200, // 0077 CALL R9 1 0x8C28130B, // 0078 GETMET R10 R9 K11 - 0x58300005, // 0079 LDCONST R12 K5 + 0x58300060, // 0079 LDCONST R12 K96 0x88340B3A, // 007A GETMBR R13 R5 K58 - 0x1C381109, // 007B EQ R14 R8 K9 + 0x1C381165, // 007B EQ R14 R8 K101 0x783A0003, // 007C JMPF R14 #0081 0xB83A0200, // 007D GETNGBL R14 K1 - 0x8C381D73, // 007E GETMET R14 R14 K115 + 0x8C381D76, // 007E GETMET R14 R14 K118 0x7C380200, // 007F CALL R14 1 0x70020002, // 0080 JMP #0084 0xB83A0200, // 0081 GETNGBL R14 K1 - 0x8C381D74, // 0082 GETMET R14 R14 K116 + 0x8C381D77, // 0082 GETMET R14 R14 K119 0x7C380200, // 0083 CALL R14 1 0x7C280800, // 0084 CALL R10 4 - 0x900ED56B, // 0085 SETMBR R3 K106 K107 + 0x900EDB6B, // 0085 SETMBR R3 K109 K107 0x80041200, // 0086 RET 1 R9 0x700201BC, // 0087 JMP #0245 - 0x1C200F05, // 0088 EQ R8 R7 K5 + 0x1C200F60, // 0088 EQ R8 R7 K96 0x7822003C, // 0089 JMPF R8 #00C7 0x8C200541, // 008A GETMET R8 R2 K65 - 0x58280005, // 008B LDCONST R10 K5 + 0x58280060, // 008B LDCONST R10 K96 0x7C200400, // 008C CALL R8 2 0x6024000C, // 008D GETGBL R9 G12 0x5C281000, // 008E MOVE R10 R8 @@ -1515,18 +1518,18 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x78260001, // 0092 JMPF R9 #0095 0x4C240000, // 0093 LDNIL R9 0x80041200, // 0094 RET 1 R9 - 0x900ED509, // 0095 SETMBR R3 K106 K9 + 0x900EDB65, // 0095 SETMBR R3 K109 K101 0x8C240B0A, // 0096 GETMET R9 R5 K10 0x7C240200, // 0097 CALL R9 1 0x8C28130B, // 0098 GETMET R10 R9 K11 - 0x58300009, // 0099 LDCONST R12 K9 + 0x58300065, // 0099 LDCONST R12 K101 0x88340B3A, // 009A GETMBR R13 R5 K58 0xB83A0200, // 009B GETNGBL R14 K1 - 0x8C381D75, // 009C GETMET R14 R14 K117 + 0x8C381D78, // 009C GETMET R14 R14 K120 0x7C380200, // 009D CALL R14 1 0x7C280800, // 009E CALL R10 4 0x8C28130B, // 009F GETMET R10 R9 K11 - 0x5830000D, // 00A0 LDCONST R12 K13 + 0x5830006E, // 00A0 LDCONST R12 K110 0x88340B1F, // 00A1 GETMBR R13 R5 K31 0x5C381000, // 00A2 MOVE R14 R8 0x7C280800, // 00A3 CALL R10 4 @@ -1537,32 +1540,32 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C381D2F, // 00A8 GETMET R14 R14 K47 0x7C380200, // 00A9 CALL R14 1 0x7C280800, // 00AA CALL R10 4 - 0x8C281376, // 00AB GETMET R10 R9 K118 + 0x8C281379, // 00AB GETMET R10 R9 K121 0x7C280200, // 00AC CALL R10 1 - 0x8C2C0377, // 00AD GETMET R11 R1 K119 + 0x8C2C037A, // 00AD GETMET R11 R1 K122 0x7C2C0200, // 00AE CALL R11 1 0x0030140B, // 00AF ADD R12 R10 R11 - 0x8C340978, // 00B0 GETMET R13 R4 K120 + 0x8C34097B, // 00B0 GETMET R13 R4 K123 0x7C340200, // 00B1 CALL R13 1 - 0x8C341B79, // 00B2 GETMET R13 R13 K121 + 0x8C341B7C, // 00B2 GETMET R13 R13 K124 0xB83E0200, // 00B3 GETNGBL R15 K1 - 0x8C3C1F7A, // 00B4 GETMET R15 R15 K122 + 0x8C3C1F7D, // 00B4 GETMET R15 R15 K125 0x7C3C0200, // 00B5 CALL R15 1 0x5C401800, // 00B6 MOVE R16 R12 0x7C340600, // 00B7 CALL R13 3 0x8C380B0A, // 00B8 GETMET R14 R5 K10 0x7C380200, // 00B9 CALL R14 1 0x8C3C1D0B, // 00BA GETMET R15 R14 K11 - 0x58440005, // 00BB LDCONST R17 K5 + 0x58440060, // 00BB LDCONST R17 K96 0x88480B3A, // 00BC GETMBR R18 R5 K58 0x5C4C1400, // 00BD MOVE R19 R10 0x7C3C0800, // 00BE CALL R15 4 0x8C3C1D0B, // 00BF GETMET R15 R14 K11 - 0x58440009, // 00C0 LDCONST R17 K9 + 0x58440065, // 00C0 LDCONST R17 K101 0x88480B1F, // 00C1 GETMBR R18 R5 K31 0x5C4C1A00, // 00C2 MOVE R19 R13 0x7C3C0800, // 00C3 CALL R15 4 - 0x900ED509, // 00C4 SETMBR R3 K106 K9 + 0x900EDB65, // 00C4 SETMBR R3 K109 K101 0x80041C00, // 00C5 RET 1 R14 0x7002017D, // 00C6 JMP #0245 0x54220003, // 00C7 LDINT R8 4 @@ -1572,7 +1575,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5C280600, // 00CB MOVE R10 R3 0x7C200400, // 00CC CALL R8 2 0x8C200541, // 00CD GETMET R8 R2 K65 - 0x58280005, // 00CE LDCONST R10 K5 + 0x58280060, // 00CE LDCONST R10 K96 0x7C200400, // 00CF CALL R8 2 0x6024000C, // 00D0 GETGBL R9 G12 0x5C281000, // 00D1 MOVE R10 R8 @@ -1583,91 +1586,91 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x4C240000, // 00D6 LDNIL R9 0x80041200, // 00D7 RET 1 R9 0x8C240541, // 00D8 GETMET R9 R2 K65 - 0x582C0009, // 00D9 LDCONST R11 K9 + 0x582C0065, // 00D9 LDCONST R11 K101 0x50300000, // 00DA LDBOOL R12 0 0 0x7C240600, // 00DB CALL R9 3 - 0x8C28037B, // 00DC GETMET R10 R1 K123 + 0x8C28037E, // 00DC GETMET R10 R1 K126 0x7C280200, // 00DD CALL R10 1 0x8C2C0B0A, // 00DE GETMET R11 R5 K10 0x7C2C0200, // 00DF CALL R11 1 0x8C30170B, // 00E0 GETMET R12 R11 K11 - 0x58380009, // 00E1 LDCONST R14 K9 + 0x58380065, // 00E1 LDCONST R14 K101 0x883C0B3A, // 00E2 GETMBR R15 R5 K58 0x5C401400, // 00E3 MOVE R16 R10 0x7C300800, // 00E4 CALL R12 4 0x8C30170B, // 00E5 GETMET R12 R11 K11 - 0x5838000D, // 00E6 LDCONST R14 K13 + 0x5838006E, // 00E6 LDCONST R14 K110 0x883C0B1F, // 00E7 GETMBR R15 R5 K31 0x5C401000, // 00E8 MOVE R16 R8 0x7C300800, // 00E9 CALL R12 4 - 0x8C301776, // 00EA GETMET R12 R11 K118 + 0x8C301779, // 00EA GETMET R12 R11 K121 0x7C300200, // 00EB CALL R12 1 - 0x8C340377, // 00EC GETMET R13 R1 K119 + 0x8C34037A, // 00EC GETMET R13 R1 K122 0x7C340200, // 00ED CALL R13 1 0x0034180D, // 00EE ADD R13 R12 R13 - 0x8C380978, // 00EF GETMET R14 R4 K120 + 0x8C38097B, // 00EF GETMET R14 R4 K123 0x7C380200, // 00F0 CALL R14 1 - 0x8C381D79, // 00F1 GETMET R14 R14 K121 + 0x8C381D7C, // 00F1 GETMET R14 R14 K124 0xB8420200, // 00F2 GETNGBL R16 K1 - 0x8C40217A, // 00F3 GETMET R16 R16 K122 + 0x8C40217D, // 00F3 GETMET R16 R16 K125 0x7C400200, // 00F4 CALL R16 1 0x5C441A00, // 00F5 MOVE R17 R13 0x7C380600, // 00F6 CALL R14 3 0x8C3C0B0A, // 00F7 GETMET R15 R5 K10 0x7C3C0200, // 00F8 CALL R15 1 0x8C401F0B, // 00F9 GETMET R16 R15 K11 - 0x58480005, // 00FA LDCONST R18 K5 + 0x58480060, // 00FA LDCONST R18 K96 0x884C0B3A, // 00FB GETMBR R19 R5 K58 0x5C501800, // 00FC MOVE R20 R12 0x7C400800, // 00FD CALL R16 4 0x8C401F0B, // 00FE GETMET R16 R15 K11 - 0x58480009, // 00FF LDCONST R18 K9 + 0x58480065, // 00FF LDCONST R18 K101 0x884C0B1F, // 0100 GETMBR R19 R5 K31 0x5C501C00, // 0101 MOVE R20 R14 0x7C400800, // 0102 CALL R16 4 0x54420004, // 0103 LDINT R16 5 - 0x900ED410, // 0104 SETMBR R3 K106 R16 + 0x900EDA10, // 0104 SETMBR R3 K109 R16 0x80041E00, // 0105 RET 1 R15 0x7002013D, // 0106 JMP #0245 0x5422000A, // 0107 LDINT R8 11 0x1C200E08, // 0108 EQ R8 R7 R8 0x7822000B, // 0109 JMPF R8 #0116 0x8C200541, // 010A GETMET R8 R2 K65 - 0x58280005, // 010B LDCONST R10 K5 + 0x58280060, // 010B LDCONST R10 K96 0x7C200400, // 010C CALL R8 2 - 0x8C24037C, // 010D GETMET R9 R1 K124 + 0x8C24037F, // 010D GETMET R9 R1 K127 0x5C2C1000, // 010E MOVE R11 R8 0x7C240400, // 010F CALL R9 2 0xB8260200, // 0110 GETNGBL R9 K1 - 0x8824137D, // 0111 GETMBR R9 R9 K125 - 0x900EC409, // 0112 SETMBR R3 K98 R9 + 0x88241380, // 0111 GETMBR R9 R9 K128 + 0x900EC609, // 0112 SETMBR R3 K99 R9 0x4C240000, // 0113 LDNIL R9 0x80041200, // 0114 RET 1 R9 0x7002012E, // 0115 JMP #0245 0x54220005, // 0116 LDINT R8 6 0x1C200E08, // 0117 EQ R8 R7 R8 0x782200B8, // 0118 JMPF R8 #01D2 - 0xB822FC00, // 0119 GETNGBL R8 K126 + 0xB8230200, // 0119 GETNGBL R8 K129 0x60240008, // 011A GETGBL R9 G8 0x5C280400, // 011B MOVE R10 R2 0x7C240200, // 011C CALL R9 1 - 0x0026FE09, // 011D ADD R9 K127 R9 + 0x00270409, // 011D ADD R9 K130 R9 0x542A0003, // 011E LDINT R10 4 0x7C200400, // 011F CALL R8 2 0x8C200541, // 0120 GETMET R8 R2 K65 - 0x58280005, // 0121 LDCONST R10 K5 + 0x58280060, // 0121 LDCONST R10 K96 0x7C200400, // 0122 CALL R8 2 0x8C240541, // 0123 GETMET R9 R2 K65 - 0x582C0009, // 0124 LDCONST R11 K9 + 0x582C0065, // 0124 LDCONST R11 K101 0x7C240400, // 0125 CALL R9 2 0x6028000C, // 0126 GETGBL R10 G12 0x5C2C1200, // 0127 MOVE R11 R9 0x7C280200, // 0128 CALL R10 1 - 0x1C281505, // 0129 EQ R10 R10 K5 + 0x1C281560, // 0129 EQ R10 R10 K96 0x782A0000, // 012A JMPF R10 #012C 0x4C240000, // 012B LDNIL R9 0x8C280541, // 012C GETMET R10 R2 K65 - 0x5830000D, // 012D LDCONST R12 K13 + 0x5830006E, // 012D LDCONST R12 K110 0x7C280400, // 012E CALL R10 2 0x8C2C0541, // 012F GETMET R11 R2 K65 0x5834006B, // 0130 LDCONST R13 K107 @@ -1675,38 +1678,38 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C300541, // 0132 GETMET R12 R2 K65 0x543A0003, // 0133 LDINT R14 4 0x7C300400, // 0134 CALL R12 2 - 0x8C340380, // 0135 GETMET R13 R1 K128 + 0x8C340383, // 0135 GETMET R13 R1 K131 0x7C340200, // 0136 CALL R13 1 0x4C380000, // 0137 LDNIL R14 0x1C341A0E, // 0138 EQ R13 R13 R14 0x78360005, // 0139 JMPF R13 #0140 - 0xB836FC00, // 013A GETNGBL R13 K126 - 0x58380081, // 013B LDCONST R14 K129 - 0x583C000D, // 013C LDCONST R15 K13 + 0xB8370200, // 013A GETNGBL R13 K129 + 0x58380084, // 013B LDCONST R14 K132 + 0x583C006E, // 013C LDCONST R15 K110 0x7C340400, // 013D CALL R13 2 0x4C340000, // 013E LDNIL R13 0x80041A00, // 013F RET 1 R13 0x88340136, // 0140 GETMBR R13 R0 K54 0x88341B37, // 0141 GETMBR R13 R13 K55 - 0x8C341B82, // 0142 GETMET R13 R13 K130 + 0x8C341B85, // 0142 GETMET R13 R13 K133 0x7C340200, // 0143 CALL R13 1 - 0x8C381B83, // 0144 GETMET R14 R13 K131 - 0x8C400380, // 0145 GETMET R16 R1 K128 + 0x8C381B86, // 0144 GETMET R14 R13 K134 + 0x8C400383, // 0145 GETMET R16 R1 K131 0x7C400200, // 0146 CALL R16 1 0x7C380400, // 0147 CALL R14 2 - 0x8C381B84, // 0148 GETMET R14 R13 K132 + 0x8C381B87, // 0148 GETMET R14 R13 K135 0x5C401000, // 0149 MOVE R16 R8 0x5C441200, // 014A MOVE R17 R9 0x7C380600, // 014B CALL R14 3 - 0x8C381B85, // 014C GETMET R14 R13 K133 + 0x8C381B88, // 014C GETMET R14 R13 K136 0x5C401400, // 014D MOVE R16 R10 0x7C380400, // 014E CALL R14 2 - 0x8C381B86, // 014F GETMET R14 R13 K134 + 0x8C381B89, // 014F GETMET R14 R13 K137 0x5C401600, // 0150 MOVE R16 R11 0x5C441800, // 0151 MOVE R17 R12 0x7C380600, // 0152 CALL R14 3 - 0x8C381B87, // 0153 GETMET R14 R13 K135 - 0x8C400388, // 0154 GETMET R16 R1 K136 + 0x8C381B8A, // 0153 GETMET R14 R13 K138 + 0x8C40038B, // 0154 GETMET R16 R1 K139 0x7C400200, // 0155 CALL R16 1 0x7C380400, // 0156 CALL R14 2 0xB83A0200, // 0157 GETNGBL R14 K1 @@ -1714,7 +1717,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C381D3F, // 0159 GETMET R14 R14 K63 0x5C401000, // 015A MOVE R16 R8 0x7C380400, // 015B CALL R14 2 - 0x8C3C1D89, // 015C GETMET R15 R14 K137 + 0x8C3C1D8C, // 015C GETMET R15 R14 K140 0x54460005, // 015D LDINT R17 6 0x7C3C0400, // 015E CALL R15 2 0x8C401F41, // 015F GETMET R16 R15 K65 @@ -1727,60 +1730,60 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x784A0001, // 0166 JMPF R18 #0169 0x5C482200, // 0167 MOVE R18 R17 0x744A0005, // 0168 JMPT R18 #016F - 0xB84AFC00, // 0169 GETNGBL R18 K126 - 0x584C008A, // 016A LDCONST R19 K138 - 0x5850000D, // 016B LDCONST R20 K13 + 0xB84B0200, // 0169 GETNGBL R18 K129 + 0x584C008D, // 016A LDCONST R19 K141 + 0x5850006E, // 016B LDCONST R20 K110 0x7C480400, // 016C CALL R18 2 0x50480000, // 016D LDBOOL R18 0 0 0x80042400, // 016E RET 1 R18 0x60480004, // 016F GETGBL R18 G4 0x5C4C2000, // 0170 MOVE R19 R16 0x7C480200, // 0171 CALL R18 1 - 0x1C482560, // 0172 EQ R18 R18 K96 + 0x1C482561, // 0172 EQ R18 R18 K97 0x784A0007, // 0173 JMPF R18 #017C 0xB84A5C00, // 0174 GETNGBL R18 K46 - 0x8C48258B, // 0175 GETMET R18 R18 K139 + 0x8C48258E, // 0175 GETMET R18 R18 K142 0x5C502000, // 0176 MOVE R20 R16 0x7C480400, // 0177 CALL R18 2 - 0x8C48258C, // 0178 GETMET R18 R18 K140 + 0x8C48258F, // 0178 GETMET R18 R18 K143 0x7C480200, // 0179 CALL R18 1 0x5C402400, // 017A MOVE R16 R18 0x70020002, // 017B JMP #017F - 0x8C48218C, // 017C GETMET R18 R16 K140 + 0x8C48218F, // 017C GETMET R18 R16 K143 0x7C480200, // 017D CALL R18 1 0x5C402400, // 017E MOVE R16 R18 0x60480004, // 017F GETGBL R18 G4 0x5C4C2200, // 0180 MOVE R19 R17 0x7C480200, // 0181 CALL R18 1 - 0x1C482560, // 0182 EQ R18 R18 K96 + 0x1C482561, // 0182 EQ R18 R18 K97 0x784A0007, // 0183 JMPF R18 #018C 0xB84A5C00, // 0184 GETNGBL R18 K46 - 0x8C48258B, // 0185 GETMET R18 R18 K139 + 0x8C48258E, // 0185 GETMET R18 R18 K142 0x5C502200, // 0186 MOVE R20 R17 0x7C480400, // 0187 CALL R18 2 - 0x8C48258C, // 0188 GETMET R18 R18 K140 + 0x8C48258F, // 0188 GETMET R18 R18 K143 0x7C480200, // 0189 CALL R18 1 0x5C442400, // 018A MOVE R17 R18 0x70020002, // 018B JMP #018F - 0x8C48238C, // 018C GETMET R18 R17 K140 + 0x8C48238F, // 018C GETMET R18 R17 K143 0x7C480200, // 018D CALL R18 1 0x5C442400, // 018E MOVE R17 R18 - 0x8C48038D, // 018F GETMET R18 R1 K141 + 0x8C480390, // 018F GETMET R18 R1 K144 0x7C480200, // 0190 CALL R18 1 - 0x404E138E, // 0191 CONNECT R19 K9 K142 + 0x404ECB91, // 0191 CONNECT R19 K101 K145 0x94482413, // 0192 GETIDX R18 R18 R19 0x604C0015, // 0193 GETGBL R19 G21 0x7C4C0000, // 0194 CALL R19 0 - 0x8C4C278F, // 0195 GETMET R19 R19 K143 - 0x58540090, // 0196 LDCONST R21 K144 + 0x8C4C2792, // 0195 GETMET R19 R19 K146 + 0x58540093, // 0196 LDCONST R21 K147 0x7C4C0400, // 0197 CALL R19 2 - 0x8C500991, // 0198 GETMET R20 R4 K145 + 0x8C500994, // 0198 GETMET R20 R4 K148 0x7C500200, // 0199 CALL R20 1 - 0x8C542192, // 019A GETMET R21 R16 K146 + 0x8C542195, // 019A GETMET R21 R16 K149 0x7C540200, // 019B CALL R21 1 - 0x8C542B93, // 019C GETMET R21 R21 K147 + 0x8C542B96, // 019C GETMET R21 R21 K150 0x7C540200, // 019D CALL R21 1 - 0x8C582994, // 019E GETMET R22 R20 K148 + 0x8C582997, // 019E GETMET R22 R20 K151 0x5C602400, // 019F MOVE R24 R18 0x5C642A00, // 01A0 MOVE R25 R21 0x5C682600, // 01A1 MOVE R26 R19 @@ -1792,66 +1795,66 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x70020001, // 01A7 JMP #01AA 0x885C0136, // 01A8 GETMBR R23 R0 K54 0x885C2F4C, // 01A9 GETMBR R23 R23 K76 - 0x8C601B95, // 01AA GETMET R24 R13 K149 + 0x8C601B98, // 01AA GETMET R24 R13 K152 0x5C682000, // 01AB MOVE R26 R16 0x5C6C2200, // 01AC MOVE R27 R17 0x5C702C00, // 01AD MOVE R28 R22 0x5C742E00, // 01AE MOVE R29 R23 0x7C600A00, // 01AF CALL R24 5 - 0x8C601B96, // 01B0 GETMET R24 R13 K150 + 0x8C601B99, // 01B0 GETMET R24 R13 K153 0x7C600200, // 01B1 CALL R24 1 0x88600136, // 01B2 GETMBR R24 R0 K54 - 0x8C603197, // 01B3 GETMET R24 R24 K151 + 0x8C60319A, // 01B3 GETMET R24 R24 K154 0x5C681A00, // 01B4 MOVE R26 R13 0x7C600400, // 01B5 CALL R24 2 - 0x8C600398, // 01B6 GETMET R24 R1 K152 + 0x8C60039B, // 01B6 GETMET R24 R1 K155 0x7C600200, // 01B7 CALL R24 1 0x78620002, // 01B8 JMPF R24 #01BC - 0x8C600399, // 01B9 GETMET R24 R1 K153 + 0x8C60039C, // 01B9 GETMET R24 R1 K156 0x546A003B, // 01BA LDINT R26 60 0x7C600400, // 01BB CALL R24 2 - 0x8C601B9A, // 01BC GETMET R24 R13 K154 + 0x8C601B9D, // 01BC GETMET R24 R13 K157 0x7C600200, // 01BD CALL R24 1 - 0x8C601B9B, // 01BE GETMET R24 R13 K155 + 0x8C601B9E, // 01BE GETMET R24 R13 K158 0x7C600200, // 01BF CALL R24 1 0x8C600B0A, // 01C0 GETMET R24 R5 K10 0x7C600200, // 01C1 CALL R24 1 0x8C64310B, // 01C2 GETMET R25 R24 K11 - 0x586C0005, // 01C3 LDCONST R27 K5 + 0x586C0060, // 01C3 LDCONST R27 K96 0x88700B0E, // 01C4 GETMBR R28 R5 K14 0xB8760200, // 01C5 GETNGBL R29 K1 - 0x88743B7D, // 01C6 GETMBR R29 R29 K125 + 0x88743B80, // 01C6 GETMBR R29 R29 K128 0x7C640800, // 01C7 CALL R25 4 0x8C64310B, // 01C8 GETMET R25 R24 K11 - 0x586C0009, // 01C9 LDCONST R27 K9 + 0x586C0065, // 01C9 LDCONST R27 K101 0x88700B0E, // 01CA GETMBR R28 R5 K14 0x8C741B3D, // 01CB GETMET R29 R13 K61 0x7C740200, // 01CC CALL R29 1 0x7C640800, // 01CD CALL R25 4 0x54660007, // 01CE LDINT R25 8 - 0x900ED419, // 01CF SETMBR R3 K106 R25 + 0x900EDA19, // 01CF SETMBR R3 K109 R25 0x80043000, // 01D0 RET 1 R24 0x70020072, // 01D1 JMP #0245 0x54220008, // 01D2 LDINT R8 9 0x1C200E08, // 01D3 EQ R8 R7 R8 0x7822002B, // 01D4 JMPF R8 #0201 0x8C200541, // 01D5 GETMET R8 R2 K65 - 0x58280005, // 01D6 LDCONST R10 K5 + 0x58280060, // 01D6 LDCONST R10 K96 0x7C200400, // 01D7 CALL R8 2 - 0x8C24039C, // 01D8 GETMET R9 R1 K156 + 0x8C24039F, // 01D8 GETMET R9 R1 K159 0x5C2C1000, // 01D9 MOVE R11 R8 0x7C240400, // 01DA CALL R9 2 - 0xB826FC00, // 01DB GETNGBL R9 K126 + 0xB8270200, // 01DB GETNGBL R9 K129 0x60280018, // 01DC GETGBL R10 G24 - 0x582C009D, // 01DD LDCONST R11 K157 + 0x582C00A0, // 01DD LDCONST R11 K160 0x88300349, // 01DE GETMBR R12 R1 K73 - 0x8C30199E, // 01DF GETMET R12 R12 K158 + 0x8C3019A1, // 01DF GETMET R12 R12 K161 0x7C300200, // 01E0 CALL R12 1 - 0x8C301992, // 01E1 GETMET R12 R12 K146 + 0x8C301995, // 01E1 GETMET R12 R12 K149 0x7C300200, // 01E2 CALL R12 1 - 0x8C301993, // 01E3 GETMET R12 R12 K147 + 0x8C301996, // 01E3 GETMET R12 R12 K150 0x7C300200, // 01E4 CALL R12 1 - 0x8C30199F, // 01E5 GETMET R12 R12 K159 + 0x8C3019A2, // 01E5 GETMET R12 R12 K162 0x7C300200, // 01E6 CALL R12 1 0x60340008, // 01E7 GETGBL R13 G8 0x5C381000, // 01E8 MOVE R14 R8 @@ -1862,13 +1865,13 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C240B0A, // 01ED GETMET R9 R5 K10 0x7C240200, // 01EE CALL R9 1 0x8C28130B, // 01EF GETMET R10 R9 K11 - 0x58300005, // 01F0 LDCONST R12 K5 + 0x58300060, // 01F0 LDCONST R12 K96 0x88340B0E, // 01F1 GETMBR R13 R5 K14 0xB83A0200, // 01F2 GETNGBL R14 K1 - 0x88381D7D, // 01F3 GETMBR R14 R14 K125 + 0x88381D80, // 01F3 GETMBR R14 R14 K128 0x7C280800, // 01F4 CALL R10 4 0x8C28130B, // 01F5 GETMET R10 R9 K11 - 0x58300009, // 01F6 LDCONST R12 K9 + 0x58300065, // 01F6 LDCONST R12 K101 0x88340B0E, // 01F7 GETMBR R13 R5 K14 0x8C380335, // 01F8 GETMET R14 R1 K53 0x7C380200, // 01F9 CALL R14 1 @@ -1876,20 +1879,20 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C380200, // 01FB CALL R14 1 0x7C280800, // 01FC CALL R10 4 0x542A0007, // 01FD LDINT R10 8 - 0x900ED40A, // 01FE SETMBR R3 K106 R10 + 0x900EDA0A, // 01FE SETMBR R3 K109 R10 0x80041200, // 01FF RET 1 R9 0x70020043, // 0200 JMP #0245 0x54220009, // 0201 LDINT R8 10 0x1C200E08, // 0202 EQ R8 R7 R8 0x78220040, // 0203 JMPF R8 #0245 0x8C200541, // 0204 GETMET R8 R2 K65 - 0x58280005, // 0205 LDCONST R10 K5 + 0x58280060, // 0205 LDCONST R10 K96 0x7C200400, // 0206 CALL R8 2 0x60240008, // 0207 GETGBL R9 G8 0x5C281000, // 0208 MOVE R10 R8 0x7C240200, // 0209 CALL R9 1 - 0x00274009, // 020A ADD R9 K160 R9 - 0x900EFC09, // 020B SETMBR R3 K126 R9 + 0x00274609, // 020A ADD R9 K163 R9 + 0x900F0209, // 020B SETMBR R3 K129 R9 0x60240010, // 020C GETGBL R9 G16 0x88280136, // 020D GETMBR R10 R0 K54 0x88281537, // 020E GETMBR R10 R10 K55 @@ -1903,28 +1906,28 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C2C0200, // 0216 CALL R11 1 0x1C2C1608, // 0217 EQ R11 R11 R8 0x782E0018, // 0218 JMPF R11 #0232 - 0x8C2C15A1, // 0219 GETMET R11 R10 K161 + 0x8C2C15A4, // 0219 GETMET R11 R10 K164 0x7C2C0200, // 021A CALL R11 1 0xB82E2400, // 021B GETNGBL R11 K18 - 0x8C2C17A2, // 021C GETMET R11 R11 K162 + 0x8C2C17A5, // 021C GETMET R11 R11 K165 0x543607CF, // 021D LDINT R13 2000 0x84380000, // 021E CLOSURE R14 P0 0x7C2C0600, // 021F CALL R11 3 0x8C2C0B0A, // 0220 GETMET R11 R5 K10 0x7C2C0200, // 0221 CALL R11 1 0x8C30170B, // 0222 GETMET R12 R11 K11 - 0x58380005, // 0223 LDCONST R14 K5 + 0x58380060, // 0223 LDCONST R14 K96 0x883C0B0E, // 0224 GETMBR R15 R5 K14 0xB8420200, // 0225 GETNGBL R16 K1 - 0x8840217D, // 0226 GETMBR R16 R16 K125 + 0x88402180, // 0226 GETMBR R16 R16 K128 0x7C300800, // 0227 CALL R12 4 0x8C30170B, // 0228 GETMET R12 R11 K11 - 0x58380009, // 0229 LDCONST R14 K9 + 0x58380065, // 0229 LDCONST R14 K101 0x883C0B0E, // 022A GETMBR R15 R5 K14 0x5C401000, // 022B MOVE R16 R8 0x7C300800, // 022C CALL R12 4 0x54320007, // 022D LDINT R12 8 - 0x900ED40C, // 022E SETMBR R3 K106 R12 + 0x900EDA0C, // 022E SETMBR R3 K109 R12 0xA0000000, // 022F CLOSE R0 0xA8040001, // 0230 EXBLK 1 1 0x80041600, // 0231 RET 1 R11 @@ -1933,17 +1936,17 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5824003E, // 0234 LDCONST R9 K62 0xAC240200, // 0235 CATCH R9 1 0 0xB0080000, // 0236 RAISE 2 R0 R0 - 0xB826FC00, // 0237 GETNGBL R9 K126 + 0xB8270200, // 0237 GETNGBL R9 K129 0x60280008, // 0238 GETGBL R10 G8 0x5C2C1000, // 0239 MOVE R11 R8 0x7C280200, // 023A CALL R10 1 - 0x002B460A, // 023B ADD R10 K163 R10 - 0x002815A4, // 023C ADD R10 R10 K164 - 0x582C000D, // 023D LDCONST R11 K13 + 0x002B4C0A, // 023B ADD R10 K166 R10 + 0x002815A7, // 023C ADD R10 R10 K167 + 0x582C006E, // 023D LDCONST R11 K110 0x7C240400, // 023E CALL R9 2 0xB8260200, // 023F GETNGBL R9 K1 - 0x88241364, // 0240 GETMBR R9 R9 K100 - 0x900EC409, // 0241 SETMBR R3 K98 R9 + 0x88241366, // 0240 GETMBR R9 R9 K102 + 0x900EC609, // 0241 SETMBR R3 K99 R9 0x4C240000, // 0242 LDNIL R9 0xA0000000, // 0243 CLOSE R0 0x80041200, // 0244 RET 1 R9 @@ -1951,16 +1954,16 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5422003B, // 0246 LDINT R8 60 0x1C200C08, // 0247 EQ R8 R6 R8 0x78220082, // 0248 JMPF R8 #02CC - 0x1C200F05, // 0249 EQ R8 R7 K5 + 0x1C200F60, // 0249 EQ R8 R7 K96 0x78220063, // 024A JMPF R8 #02AF 0x8C200541, // 024B GETMET R8 R2 K65 - 0x58280005, // 024C LDCONST R10 K5 + 0x58280060, // 024C LDCONST R10 K96 0x7C200400, // 024D CALL R8 2 0x8C240541, // 024E GETMET R9 R2 K65 - 0x582C0009, // 024F LDCONST R11 K9 + 0x582C0065, // 024F LDCONST R11 K101 0x7C240400, // 0250 CALL R9 2 0x8C280541, // 0251 GETMET R10 R2 K65 - 0x5830000D, // 0252 LDCONST R12 K13 + 0x5830006E, // 0252 LDCONST R12 K110 0x7C280400, // 0253 CALL R10 2 0x8C2C0541, // 0254 GETMET R11 R2 K65 0x5834006B, // 0255 LDCONST R13 K107 @@ -1968,15 +1971,15 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C300541, // 0257 GETMET R12 R2 K65 0x543A0003, // 0258 LDINT R14 4 0x7C300400, // 0259 CALL R12 2 - 0xB836FC00, // 025A GETNGBL R13 K126 + 0xB8370200, // 025A GETNGBL R13 K129 0x60380018, // 025B GETGBL R14 G24 - 0x583C00A5, // 025C LDCONST R15 K165 + 0x583C00A8, // 025C LDCONST R15 K168 0x5C401000, // 025D MOVE R16 R8 - 0x8C44139F, // 025E GETMET R17 R9 K159 + 0x8C4413A2, // 025E GETMET R17 R9 K162 0x7C440200, // 025F CALL R17 1 0x5C481400, // 0260 MOVE R18 R10 0x5C4C1600, // 0261 MOVE R19 R11 - 0x8C50199F, // 0262 GETMET R20 R12 K159 + 0x8C5019A2, // 0262 GETMET R20 R12 K162 0x7C500200, // 0263 CALL R20 1 0x7C380C00, // 0264 CALL R14 6 0x543E0003, // 0265 LDINT R15 4 @@ -1997,8 +2000,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C34180D, // 0274 EQ R13 R12 R13 0x78360005, // 0275 JMPF R13 #027C 0xB8360200, // 0276 GETNGBL R13 K1 - 0x88341BA6, // 0277 GETMBR R13 R13 K166 - 0x900EC40D, // 0278 SETMBR R3 K98 R13 + 0x88341BA9, // 0277 GETMBR R13 R13 K169 + 0x900EC60D, // 0278 SETMBR R3 K99 R13 0x4C340000, // 0279 LDNIL R13 0xA0000000, // 027A CLOSE R0 0x80041A00, // 027B RET 1 R13 @@ -2022,24 +2025,24 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x543A001F, // 028D LDINT R14 32 0x24341A0E, // 028E GT R13 R13 R14 0x78360009, // 028F JMPF R13 #029A - 0xB836FC00, // 0290 GETNGBL R13 K126 - 0x583800A7, // 0291 LDCONST R14 K167 - 0x583C000D, // 0292 LDCONST R15 K13 + 0xB8370200, // 0290 GETNGBL R13 K129 + 0x583800AA, // 0291 LDCONST R14 K170 + 0x583C006E, // 0292 LDCONST R15 K110 0x7C340400, // 0293 CALL R13 2 0xB8360200, // 0294 GETNGBL R13 K1 - 0x88341B63, // 0295 GETMBR R13 R13 K99 - 0x900EC40D, // 0296 SETMBR R3 K98 R13 + 0x88341B64, // 0295 GETMBR R13 R13 K100 + 0x900EC60D, // 0296 SETMBR R3 K99 R13 0x4C340000, // 0297 LDNIL R13 0xA0000000, // 0298 CLOSE R0 0x80041A00, // 0299 RET 1 R13 0x5436001E, // 029A LDINT R13 31 - 0x40360A0D, // 029B CONNECT R13 K5 R13 + 0x4036C00D, // 029B CONNECT R13 K96 R13 0x9434120D, // 029C GETIDX R13 R9 R13 0x543A001F, // 029D LDINT R14 32 - 0x40381D8E, // 029E CONNECT R14 R14 K142 + 0x40381D91, // 029E CONNECT R14 R14 K145 0x9438120E, // 029F GETIDX R14 R9 R14 0x883C0136, // 02A0 GETMBR R15 R0 K54 - 0x8C3C1FA8, // 02A1 GETMET R15 R15 K168 + 0x8C3C1FAB, // 02A1 GETMET R15 R15 K171 0x5C441000, // 02A2 MOVE R17 R8 0x5C481600, // 02A3 MOVE R18 R11 0x5C4C1400, // 02A4 MOVE R19 R10 @@ -2053,30 +2056,30 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0xA0000000, // 02AC CLOSE R0 0x80041E00, // 02AD RET 1 R15 0x7002001B, // 02AE JMP #02CB - 0x1C200F09, // 02AF EQ R8 R7 K9 + 0x1C200F65, // 02AF EQ R8 R7 K101 0x78220011, // 02B0 JMPF R8 #02C3 0x8C200541, // 02B1 GETMET R8 R2 K65 - 0x58280005, // 02B2 LDCONST R10 K5 + 0x58280060, // 02B2 LDCONST R10 K96 0x7C200400, // 02B3 CALL R8 2 - 0xB826FC00, // 02B4 GETNGBL R9 K126 + 0xB8270200, // 02B4 GETNGBL R9 K129 0x60280008, // 02B5 GETGBL R10 G8 0x5C2C1000, // 02B6 MOVE R11 R8 0x7C280200, // 02B7 CALL R10 1 - 0x002B520A, // 02B8 ADD R10 K169 R10 + 0x002B580A, // 02B8 ADD R10 K172 R10 0x582C006B, // 02B9 LDCONST R11 K107 0x7C240400, // 02BA CALL R9 2 0x88240136, // 02BB GETMBR R9 R0 K54 - 0x8C2413AA, // 02BC GETMET R9 R9 K170 + 0x8C2413AD, // 02BC GETMET R9 R9 K173 0x5C2C1000, // 02BD MOVE R11 R8 0x7C240400, // 02BE CALL R9 2 0x50240200, // 02BF LDBOOL R9 1 0 0xA0000000, // 02C0 CLOSE R0 0x80041200, // 02C1 RET 1 R9 0x70020007, // 02C2 JMP #02CB - 0x1C200F0D, // 02C3 EQ R8 R7 K13 + 0x1C200F6E, // 02C3 EQ R8 R7 K110 0x78220005, // 02C4 JMPF R8 #02CB 0x88200136, // 02C5 GETMBR R8 R0 K54 - 0x8C2011AB, // 02C6 GETMET R8 R8 K171 + 0x8C2011AE, // 02C6 GETMET R8 R8 K174 0x7C200200, // 02C7 CALL R8 1 0x50200200, // 02C8 LDBOOL R8 1 0 0xA0000000, // 02C9 CLOSE R0 @@ -2085,7 +2088,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x54220029, // 02CC LDINT R8 42 0x1C200C08, // 02CD EQ R8 R6 R8 0x78220005, // 02CE JMPF R8 #02D5 - 0x1C200F05, // 02CF EQ R8 R7 K5 + 0x1C200F60, // 02CF EQ R8 R7 K96 0x78220002, // 02D0 JMPF R8 #02D4 0x50200200, // 02D1 LDBOOL R8 1 0 0xA0000000, // 02D2 CLOSE R0 @@ -2094,7 +2097,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x60200003, // 02D5 GETGBL R8 G3 0x5C240000, // 02D6 MOVE R9 R0 0x7C200200, // 02D7 CALL R8 1 - 0x8C2011AC, // 02D8 GETMET R8 R8 K172 + 0x8C2011AF, // 02D8 GETMET R8 R8 K175 0x5C280200, // 02D9 MOVE R10 R1 0x5C2C0400, // 02DA MOVE R11 R2 0x5C300600, // 02DB MOVE R12 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h index f69f28986..56e55da1b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Fan' ktab size: 30, total: 64 (saved 272 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Fan[30] = { +// compact class 'Matter_Plugin_Fan' ktab size: 34, total: 64 (saved 240 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Fan[34] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(shadow_fan_mode), /* K2 */ be_nested_str_weak(attribute_updated), @@ -18,8 +18,8 @@ static const bvalue be_ktab_class_Matter_Plugin_Fan[30] = { /* K10 */ be_nested_str_weak(set_fan_mode), /* K11 */ be_nested_str_weak(FanSpeed255), /* K12 */ be_nested_str_weak(set_fan_speed_pct), - /* K13 */ be_nested_str_weak(FanSpeed), - /* K14 */ be_const_int(0), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(FanSpeed), /* K15 */ be_const_int(1), /* K16 */ be_const_int(3), /* K17 */ be_nested_str_weak(matter), @@ -32,9 +32,13 @@ static const bvalue be_ktab_class_Matter_Plugin_Fan[30] = { /* K24 */ be_nested_str_weak(status), /* K25 */ be_nested_str_weak(CONSTRAINT_ERROR), /* K26 */ be_nested_str_weak(init), - /* K27 */ be_nested_str_weak(set), - /* K28 */ be_nested_str_weak(U1), - /* K29 */ be_nested_str_weak(read_attribute), + /* K27 */ be_const_int(0), + /* K28 */ be_nested_str_weak(set), + /* K29 */ be_nested_str_weak(U1), + /* K30 */ be_const_int(1), + /* K31 */ be_const_int(2), + /* K32 */ be_const_int(3), + /* K33 */ be_nested_str_weak(read_attribute), }; @@ -151,14 +155,14 @@ be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ 0x60200009, // 0014 GETGBL R8 G9 0x5C240600, // 0015 MOVE R9 R3 0x7C200200, // 0016 CALL R8 1 - 0x58240000, // 0017 LDCONST R9 K0 + 0x5824000D, // 0017 LDCONST R9 K13 0x542A00FE, // 0018 LDINT R10 255 - 0x582C0000, // 0019 LDCONST R11 K0 + 0x582C000D, // 0019 LDCONST R11 K13 0x54320063, // 001A LDINT R12 100 0x7C180C00, // 001B CALL R6 6 0x7C100400, // 001C CALL R4 2 0x8C100308, // 001D GETMET R4 R1 K8 - 0x5818000D, // 001E LDCONST R6 K13 + 0x5818000E, // 001E LDCONST R6 K14 0x7C100400, // 001F CALL R4 2 0x4C140000, // 0020 LDNIL R5 0x20140805, // 0021 NE R5 R4 R5 @@ -196,9 +200,9 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 0x5C040400, // 0003 MOVE R1 R2 - 0x1408030E, // 0004 LT R2 R1 K14 + 0x1408030D, // 0004 LT R2 R1 K13 0x780A0000, // 0005 JMPF R2 #0007 - 0x5804000E, // 0006 LDCONST R1 K14 + 0x5804000D, // 0006 LDCONST R1 K13 0x540A0063, // 0007 LDINT R2 100 0x24080202, // 0008 GT R2 R1 R2 0x780A0000, // 0009 JMPF R2 #000B @@ -212,9 +216,9 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0x7C080600, // 0011 CALL R2 3 0x90020601, // 0012 SETMBR R0 K3 R1 0x88080101, // 0013 GETMBR R2 R0 K1 - 0x1C0C030E, // 0014 EQ R3 R1 K14 + 0x1C0C030D, // 0014 EQ R3 R1 K13 0x780E0001, // 0015 JMPF R3 #0018 - 0x5808000E, // 0016 LDCONST R2 K14 + 0x5808000D, // 0016 LDCONST R2 K13 0x70020008, // 0017 JMP #0021 0xB80E0A00, // 0018 GETNGBL R3 K5 0x8C0C0706, // 0019 GETMET R3 R3 K6 @@ -231,7 +235,7 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0x90020202, // 0024 SETMBR R0 K1 R2 0x8C0C0102, // 0025 GETMET R3 R0 K2 0x54160201, // 0026 LDINT R5 514 - 0x5818000E, // 0027 LDCONST R6 K14 + 0x5818000D, // 0027 LDCONST R6 K13 0x7C0C0600, // 0028 CALL R3 3 0x80000000, // 0029 RET 0 }) @@ -266,7 +270,7 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ 0x781E0044, // 0006 JMPF R7 #004C 0x8C1C0115, // 0007 GETMET R7 R0 K21 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D00, // 0009 EQ R7 R6 K0 + 0x1C1C0D0D, // 0009 EQ R7 R6 K13 0x781E001F, // 000A JMPF R7 #002B 0x601C0004, // 000B GETGBL R7 G4 0x5C200600, // 000C MOVE R8 R3 @@ -279,15 +283,15 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ 0x8C1C0117, // 0013 GETMET R7 R0 K23 0x58240009, // 0014 LDCONST R9 K9 0x88280101, // 0015 GETMBR R10 R0 K1 - 0x582C000D, // 0016 LDCONST R11 K13 + 0x582C000E, // 0016 LDCONST R11 K14 0x88300103, // 0017 GETMBR R12 R0 K3 0x5834000B, // 0018 LDCONST R13 K11 0xB83A0A00, // 0019 GETNGBL R14 K5 0x8C381D06, // 001A GETMET R14 R14 K6 0x88400103, // 001B GETMBR R16 R0 K3 - 0x58440000, // 001C LDCONST R17 K0 + 0x5844000D, // 001C LDCONST R17 K13 0x544A0063, // 001D LDINT R18 100 - 0x584C0000, // 001E LDCONST R19 K0 + 0x584C000D, // 001E LDCONST R19 K13 0x545200FE, // 001F LDINT R20 255 0x7C380C00, // 0020 CALL R14 6 0x7C1C0E00, // 0021 CALL R7 7 @@ -313,15 +317,15 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ 0x8C1C0117, // 0035 GETMET R7 R0 K23 0x58240009, // 0036 LDCONST R9 K9 0x88280101, // 0037 GETMBR R10 R0 K1 - 0x582C000D, // 0038 LDCONST R11 K13 + 0x582C000E, // 0038 LDCONST R11 K14 0x88300103, // 0039 GETMBR R12 R0 K3 0x5834000B, // 003A LDCONST R13 K11 0xB83A0A00, // 003B GETNGBL R14 K5 0x8C381D06, // 003C GETMET R14 R14 K6 0x88400103, // 003D GETMBR R16 R0 K3 - 0x58440000, // 003E LDCONST R17 K0 + 0x5844000D, // 003E LDCONST R17 K13 0x544A0063, // 003F LDINT R18 100 - 0x584C0000, // 0040 LDCONST R19 K0 + 0x584C000D, // 0040 LDCONST R19 K13 0x545200FE, // 0041 LDINT R20 255 0x7C380C00, // 0042 CALL R14 6 0x7C1C0E00, // 0043 CALL R7 7 @@ -366,8 +370,8 @@ be_local_closure(class_Matter_Plugin_Fan_init, /* name */ 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x90020300, // 0008 SETMBR R0 K1 K0 - 0x90020700, // 0009 SETMBR R0 K3 K0 + 0x9002031B, // 0008 SETMBR R0 K1 K27 + 0x9002071B, // 0009 SETMBR R0 K3 K27 0x80000000, // 000A RET 0 }) ) @@ -401,41 +405,41 @@ be_local_closure(class_Matter_Plugin_Fan_read_attribute, /* name */ 0x781E0020, // 0006 JMPF R7 #0028 0x8C1C0115, // 0007 GETMET R7 R0 K21 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D00, // 0009 EQ R7 R6 K0 + 0x1C1C0D1B, // 0009 EQ R7 R6 K27 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C071B, // 000B GETMET R7 R3 K27 - 0x8824091C, // 000C GETMBR R9 R4 K28 + 0x8C1C071C, // 000B GETMET R7 R3 K28 + 0x8824091D, // 000C GETMBR R9 R4 K29 0x88280101, // 000D GETMBR R10 R0 K1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020016, // 0010 JMP #0028 - 0x1C1C0D0F, // 0011 EQ R7 R6 K15 + 0x1C1C0D1E, // 0011 EQ R7 R6 K30 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C071B, // 0013 GETMET R7 R3 K27 - 0x8824091C, // 0014 GETMBR R9 R4 K28 - 0x58280007, // 0015 LDCONST R10 K7 + 0x8C1C071C, // 0013 GETMET R7 R3 K28 + 0x8824091D, // 0014 GETMBR R9 R4 K29 + 0x5828001F, // 0015 LDCONST R10 K31 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x7002000E, // 0018 JMP #0028 - 0x1C1C0D07, // 0019 EQ R7 R6 K7 + 0x1C1C0D1F, // 0019 EQ R7 R6 K31 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C071B, // 001B GETMET R7 R3 K27 - 0x8824091C, // 001C GETMBR R9 R4 K28 + 0x8C1C071C, // 001B GETMET R7 R3 K28 + 0x8824091D, // 001C GETMBR R9 R4 K29 0x88280103, // 001D GETMBR R10 R0 K3 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x70020006, // 0020 JMP #0028 - 0x1C1C0D10, // 0021 EQ R7 R6 K16 + 0x1C1C0D20, // 0021 EQ R7 R6 K32 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C071B, // 0023 GETMET R7 R3 K27 - 0x8824091C, // 0024 GETMBR R9 R4 K28 + 0x8C1C071C, // 0023 GETMET R7 R3 K28 + 0x8824091D, // 0024 GETMBR R9 R4 K29 0x88280103, // 0025 GETMBR R10 R0 K3 0x7C1C0600, // 0026 CALL R7 3 0x80040E00, // 0027 RET 1 R7 0x601C0003, // 0028 GETGBL R7 G3 0x5C200000, // 0029 MOVE R8 R0 0x7C1C0200, // 002A CALL R7 1 - 0x8C1C0F1D, // 002B GETMET R7 R7 K29 + 0x8C1C0F21, // 002B GETMET R7 R7 K33 0x5C240200, // 002C MOVE R9 R1 0x5C280400, // 002D MOVE R10 R2 0x5C2C0600, // 002E MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h index 349d2a6cd..6f02bf53b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h @@ -32,24 +32,24 @@ static const bvalue be_ktab_class_Matter_Plugin_Light0[49] = { /* K24 */ be_nested_str_weak(init), /* K25 */ be_nested_str_weak(find), /* K26 */ be_nested_str_weak(ARG), - /* K27 */ be_const_int(0), - /* K28 */ be_const_int(1), - /* K29 */ be_nested_str_weak(set_onoff), - /* K30 */ be_nested_str_weak(update_virtual), - /* K31 */ be_nested_str_weak(matter), - /* K32 */ be_nested_str_weak(TLV), - /* K33 */ be_nested_str_weak(cluster), - /* K34 */ be_nested_str_weak(attribute), - /* K35 */ be_nested_str_weak(update_shadow_lazy), - /* K36 */ be_nested_str_weak(BOOL), - /* K37 */ be_nested_str_weak(read_attribute), - /* K38 */ be_nested_str_weak(get_name), - /* K39 */ be_nested_str_weak(PREFIX), - /* K40 */ be_nested_str_weak(html_escape), - /* K41 */ be_nested_str_weak(), - /* K42 */ be_nested_str_weak(get_power), - /* K43 */ be_nested_str_weak(command), - /* K44 */ be_nested_str_weak(publish_command), + /* K27 */ be_const_int(1), + /* K28 */ be_nested_str_weak(set_onoff), + /* K29 */ be_nested_str_weak(update_virtual), + /* K30 */ be_nested_str_weak(matter), + /* K31 */ be_nested_str_weak(TLV), + /* K32 */ be_nested_str_weak(cluster), + /* K33 */ be_nested_str_weak(attribute), + /* K34 */ be_nested_str_weak(update_shadow_lazy), + /* K35 */ be_nested_str_weak(BOOL), + /* K36 */ be_nested_str_weak(read_attribute), + /* K37 */ be_nested_str_weak(get_name), + /* K38 */ be_nested_str_weak(PREFIX), + /* K39 */ be_nested_str_weak(html_escape), + /* K40 */ be_nested_str_weak(), + /* K41 */ be_nested_str_weak(get_power), + /* K42 */ be_nested_str_weak(command), + /* K43 */ be_nested_str_weak(publish_command), + /* K44 */ be_const_int(1), /* K45 */ be_const_int(2), /* K46 */ be_nested_str_weak(contains), /* K47 */ be_nested_str_weak(POWER), @@ -237,9 +237,9 @@ be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ 0x20080403, // 0009 NE R2 R2 R3 0x780A0003, // 000A JMPF R2 #000F 0x88080103, // 000B GETMBR R2 R0 K3 - 0x1808051B, // 000C LE R2 R2 K27 + 0x1808050A, // 000C LE R2 R2 K10 0x780A0000, // 000D JMPF R2 #000F - 0x9002071C, // 000E SETMBR R0 K3 K28 + 0x9002071B, // 000E SETMBR R0 K3 K27 0x80000000, // 000F RET 0 }) ) @@ -270,7 +270,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C011D, // 0006 GETMET R3 R0 K29 + 0x8C0C011C, // 0006 GETMET R3 R0 K28 0x60140017, // 0007 GETGBL R5 G23 0x5C180400, // 0008 MOVE R6 R2 0x7C140200, // 0009 CALL R5 1 @@ -278,7 +278,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ 0x600C0003, // 000B GETGBL R3 G3 0x5C100000, // 000C MOVE R4 R0 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C071E, // 000E GETMET R3 R3 K30 + 0x8C0C071D, // 000E GETMET R3 R3 K29 0x5C140200, // 000F MOVE R5 R1 0x7C0C0400, // 0010 CALL R3 2 0x80000000, // 0011 RET 0 @@ -305,26 +305,26 @@ be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0xB8123E00, // 0000 GETNGBL R4 K31 - 0x88100920, // 0001 GETMBR R4 R4 K32 - 0x88140521, // 0002 GETMBR R5 R2 K33 - 0x88180522, // 0003 GETMBR R6 R2 K34 + 0xB8123C00, // 0000 GETNGBL R4 K30 + 0x8810091F, // 0001 GETMBR R4 R4 K31 + 0x88140520, // 0002 GETMBR R5 R2 K32 + 0x88180521, // 0003 GETMBR R6 R2 K33 0x541E0005, // 0004 LDINT R7 6 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0008, // 0006 JMPF R7 #0010 - 0x8C1C0123, // 0007 GETMET R7 R0 K35 + 0x8C1C0122, // 0007 GETMET R7 R0 K34 0x7C1C0200, // 0008 CALL R7 1 0x1C1C0D0A, // 0009 EQ R7 R6 K10 0x781E0004, // 000A JMPF R7 #0010 0x8C1C0710, // 000B GETMET R7 R3 K16 - 0x88240924, // 000C GETMBR R9 R4 K36 + 0x88240923, // 000C GETMBR R9 R4 K35 0x88280108, // 000D GETMBR R10 R0 K8 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x601C0003, // 0010 GETGBL R7 G3 0x5C200000, // 0011 MOVE R8 R0 0x7C1C0200, // 0012 CALL R7 1 - 0x8C1C0F25, // 0013 GETMET R7 R7 K37 + 0x8C1C0F24, // 0013 GETMET R7 R7 K36 0x5C240200, // 0014 MOVE R9 R1 0x5C280400, // 0015 MOVE R10 R2 0x5C2C0600, // 0016 MOVE R11 R3 @@ -354,7 +354,7 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xA4062600, // 0000 IMPORT R1 K19 - 0x8C080126, // 0001 GETMET R2 R0 K38 + 0x8C080125, // 0001 GETMET R2 R0 K37 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A @@ -365,13 +365,13 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ 0x5C080600, // 0009 MOVE R2 R3 0x8C0C0315, // 000A GETMET R3 R1 K21 0x60140018, // 000B GETGBL R5 G24 - 0x88180127, // 000C GETMBR R6 R0 K39 + 0x88180126, // 000C GETMBR R6 R0 K38 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0328, // 000E GETMET R7 R1 K40 + 0x8C1C0327, // 000E GETMET R7 R1 K39 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0029, // 0012 LDCONST R7 K41 + 0x581C0028, // 0012 LDCONST R7 K40 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -434,7 +434,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ 0x20040202, // 0006 NE R1 R1 R2 0x78060012, // 0007 JMPF R1 #001B 0xB8061600, // 0008 GETNGBL R1 K11 - 0x8C04032A, // 0009 GETMET R1 R1 K42 + 0x8C040329, // 0009 GETMET R1 R1 K41 0x880C0103, // 000A GETMBR R3 R0 K3 0x040C070D, // 000B SUB R3 R3 K13 0x7C040400, // 000C CALL R1 2 @@ -481,52 +481,52 @@ be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ - 0xB8123E00, // 0000 GETNGBL R4 K31 - 0x88100920, // 0001 GETMBR R4 R4 K32 - 0x88140721, // 0002 GETMBR R5 R3 K33 - 0x8818072B, // 0003 GETMBR R6 R3 K43 + 0xB8123C00, // 0000 GETNGBL R4 K30 + 0x8810091F, // 0001 GETMBR R4 R4 K31 + 0x88140720, // 0002 GETMBR R5 R3 K32 + 0x8818072A, // 0003 GETMBR R6 R3 K42 0x541E0005, // 0004 LDINT R7 6 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E002B, // 0006 JMPF R7 #0033 - 0x8C1C0123, // 0007 GETMET R7 R0 K35 + 0x8C1C0122, // 0007 GETMET R7 R0 K34 0x7C1C0200, // 0008 CALL R7 1 0x1C1C0D0A, // 0009 EQ R7 R6 K10 0x781E0009, // 000A JMPF R7 #0015 - 0x8C1C011D, // 000B GETMET R7 R0 K29 + 0x8C1C011C, // 000B GETMET R7 R0 K28 0x50240000, // 000C LDBOOL R9 0 0 0x7C1C0400, // 000D CALL R7 2 - 0x8C1C012C, // 000E GETMET R7 R0 K44 + 0x8C1C012B, // 000E GETMET R7 R0 K43 0x58240002, // 000F LDCONST R9 K2 0x5828000A, // 0010 LDCONST R10 K10 0x7C1C0600, // 0011 CALL R7 3 0x501C0200, // 0012 LDBOOL R7 1 0 0x80040E00, // 0013 RET 1 R7 0x7002001D, // 0014 JMP #0033 - 0x1C1C0D1C, // 0015 EQ R7 R6 K28 + 0x1C1C0D2C, // 0015 EQ R7 R6 K44 0x781E0009, // 0016 JMPF R7 #0021 - 0x8C1C011D, // 0017 GETMET R7 R0 K29 + 0x8C1C011C, // 0017 GETMET R7 R0 K28 0x50240200, // 0018 LDBOOL R9 1 0 0x7C1C0400, // 0019 CALL R7 2 - 0x8C1C012C, // 001A GETMET R7 R0 K44 + 0x8C1C012B, // 001A GETMET R7 R0 K43 0x58240002, // 001B LDCONST R9 K2 - 0x5828001C, // 001C LDCONST R10 K28 + 0x5828002C, // 001C LDCONST R10 K44 0x7C1C0600, // 001D CALL R7 3 0x501C0200, // 001E LDBOOL R7 1 0 0x80040E00, // 001F RET 1 R7 0x70020011, // 0020 JMP #0033 0x1C1C0D2D, // 0021 EQ R7 R6 K45 0x781E000F, // 0022 JMPF R7 #0033 - 0x8C1C011D, // 0023 GETMET R7 R0 K29 + 0x8C1C011C, // 0023 GETMET R7 R0 K28 0x88240108, // 0024 GETMBR R9 R0 K8 0x78260000, // 0025 JMPF R9 #0027 0x50240001, // 0026 LDBOOL R9 0 1 0x50240200, // 0027 LDBOOL R9 1 0 0x7C1C0400, // 0028 CALL R7 2 - 0x8C1C012C, // 0029 GETMET R7 R0 K44 + 0x8C1C012B, // 0029 GETMET R7 R0 K43 0x58240002, // 002A LDCONST R9 K2 0x88280108, // 002B GETMBR R10 R0 K8 0x782A0001, // 002C JMPF R10 #002F - 0x5828001C, // 002D LDCONST R10 K28 + 0x5828002C, // 002D LDCONST R10 K44 0x70020000, // 002E JMP #0030 0x5828000A, // 002F LDCONST R10 K10 0x7C1C0600, // 0030 CALL R7 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index 5693e1f72..bcdf7ad2b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Air_Quality' ktab size: 36, total: 73 (saved 296 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[36] = { +// compact class 'Matter_Plugin_Sensor_Air_Quality' ktab size: 37, total: 73 (saved 288 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[37] = { /* K0 */ be_nested_str_weak(web_values_prefix), /* K1 */ be_nested_str_weak(Air), /* K2 */ be_nested_str_weak(shadow_air_quality), @@ -33,14 +33,15 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[36] = { /* K25 */ be_nested_str_weak(TLV), /* K26 */ be_nested_str_weak(cluster), /* K27 */ be_nested_str_weak(attribute), - /* K28 */ be_nested_str_weak(set_or_nil), - /* K29 */ be_nested_str_weak(U1), - /* K30 */ be_nested_str_weak(read_attribute), - /* K31 */ be_nested_str_weak(ARG), - /* K32 */ be_nested_str_weak(_parse_sensor_entry), - /* K33 */ be_nested_str_weak(CarbonDioxide), - /* K34 */ be_nested_str_weak(parse_sensors), - /* K35 */ be_nested_str_weak(attribute_updated), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str_weak(set_or_nil), + /* K30 */ be_nested_str_weak(U1), + /* K31 */ be_nested_str_weak(read_attribute), + /* K32 */ be_nested_str_weak(ARG), + /* K33 */ be_nested_str_weak(_parse_sensor_entry), + /* K34 */ be_nested_str_weak(CarbonDioxide), + /* K35 */ be_nested_str_weak(parse_sensors), + /* K36 */ be_nested_str_weak(attribute_updated), }; @@ -414,10 +415,10 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x5426005A, // 0006 LDINT R9 91 0x1C240A09, // 0007 EQ R9 R5 R9 0x78260008, // 0008 JMPF R9 #0012 - 0x1C240D13, // 0009 EQ R9 R6 K19 + 0x1C240D1C, // 0009 EQ R9 R6 K28 0x78260005, // 000A JMPF R9 #0011 - 0x8C24071C, // 000B GETMET R9 R3 K28 - 0x882C091D, // 000C GETMBR R11 R4 K29 + 0x8C24071D, // 000B GETMET R9 R3 K29 + 0x882C091E, // 000C GETMBR R11 R4 K30 0x88300102, // 000D GETMBR R12 R0 K2 0x7C240600, // 000E CALL R9 3 0xA0000000, // 000F CLOSE R0 @@ -491,7 +492,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x60240003, // 0053 GETGBL R9 G3 0x5C280000, // 0054 MOVE R10 R0 0x7C240200, // 0055 CALL R9 1 - 0x8C24131E, // 0056 GETMET R9 R9 K30 + 0x8C24131F, // 0056 GETMET R9 R9 K31 0x5C2C0200, // 0057 MOVE R11 R1 0x5C300400, // 0058 MOVE R12 R2 0x5C340600, // 0059 MOVE R13 R3 @@ -523,7 +524,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, / ( &(const binstruction[ 7]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x8C0C030F, // 0001 GETMET R3 R1 K15 - 0x8814011F, // 0002 GETMBR R5 R0 K31 + 0x88140120, // 0002 GETMBR R5 R0 K32 0x7C0C0400, // 0003 CALL R3 2 0x7C080200, // 0004 CALL R2 1 0x90022002, // 0005 SETMBR R0 K16 R2 @@ -557,16 +558,16 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0035, // 0005 JMPF R3 #003C - 0x8C0C0120, // 0006 GETMET R3 R0 K32 + 0x8C0C0121, // 0006 GETMET R3 R0 K33 0x5C140400, // 0007 MOVE R5 R2 - 0x58180021, // 0008 LDCONST R6 K33 + 0x58180022, // 0008 LDCONST R6 K34 0x881C010A, // 0009 GETMBR R7 R0 K10 0x60200007, // 000A GETGBL R8 G7 0x5426040C, // 000B LDINT R9 1037 0x58280013, // 000C LDCONST R10 K19 0x7C0C0E00, // 000D CALL R3 7 0x90021403, // 000E SETMBR R0 K10 R3 - 0x8C0C0120, // 000F GETMET R3 R0 K32 + 0x8C0C0121, // 000F GETMET R3 R0 K33 0x5C140400, // 0010 MOVE R5 R2 0x58180003, // 0011 LDCONST R6 K3 0x881C0104, // 0012 GETMBR R7 R0 K4 @@ -575,7 +576,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 0015 LDCONST R10 K19 0x7C0C0E00, // 0016 CALL R3 7 0x90020803, // 0017 SETMBR R0 K4 R3 - 0x8C0C0120, // 0018 GETMET R3 R0 K32 + 0x8C0C0121, // 0018 GETMET R3 R0 K33 0x5C140400, // 0019 MOVE R5 R2 0x58180005, // 001A LDCONST R6 K5 0x881C0106, // 001B GETMBR R7 R0 K6 @@ -584,7 +585,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 001E LDCONST R10 K19 0x7C0C0E00, // 001F CALL R3 7 0x90020C03, // 0020 SETMBR R0 K6 R3 - 0x8C0C0120, // 0021 GETMET R3 R0 K32 + 0x8C0C0121, // 0021 GETMET R3 R0 K33 0x5C140400, // 0022 MOVE R5 R2 0x58180007, // 0023 LDCONST R6 K7 0x881C0108, // 0024 GETMBR R7 R0 K8 @@ -593,7 +594,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 0027 LDCONST R10 K19 0x7C0C0E00, // 0028 CALL R3 7 0x90021003, // 0029 SETMBR R0 K8 R3 - 0x8C0C0120, // 002A GETMET R3 R0 K32 + 0x8C0C0121, // 002A GETMET R3 R0 K33 0x5C140400, // 002B MOVE R5 R2 0x5818000D, // 002C LDCONST R6 K13 0x881C010E, // 002D GETMBR R7 R0 K14 @@ -602,7 +603,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 0030 LDCONST R10 K19 0x7C0C0E00, // 0031 CALL R3 7 0x90021C03, // 0032 SETMBR R0 K14 R3 - 0x8C0C0120, // 0033 GETMET R3 R0 K32 + 0x8C0C0121, // 0033 GETMET R3 R0 K33 0x5C140400, // 0034 MOVE R5 R2 0x5818000B, // 0035 LDCONST R6 K11 0x881C010C, // 0036 GETMBR R7 R0 K12 @@ -614,7 +615,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x600C0003, // 003C GETGBL R3 G3 0x5C100000, // 003D MOVE R4 R0 0x7C0C0200, // 003E CALL R3 1 - 0x8C0C0722, // 003F GETMET R3 R3 K34 + 0x8C0C0723, // 003F GETMET R3 R3 K35 0x5C140200, // 0040 MOVE R5 R1 0x7C0C0400, // 0041 CALL R3 2 0x80000000, // 0042 RET 0 @@ -656,7 +657,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, / 0x78220005, // 000C JMPF R8 #0013 0x20200E03, // 000D NE R8 R7 R3 0x78220003, // 000E JMPF R8 #0013 - 0x8C200123, // 000F GETMET R8 R0 K35 + 0x8C200124, // 000F GETMET R8 R0 K36 0x5C280A00, // 0010 MOVE R10 R5 0x5C2C0C00, // 0011 MOVE R11 R6 0x7C200600, // 0012 CALL R8 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h index 421a3afd2..ede195e26 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_GenericSwitch_Btn' ktab size: 26, total: 35 (saved 72 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[26] = { +// compact class 'Matter_Plugin_Sensor_GenericSwitch_Btn' ktab size: 27, total: 35 (saved 64 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[27] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -22,15 +22,16 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[26] = { /* K14 */ be_nested_str_weak(tasmota_switch_index), /* K15 */ be_nested_str_weak(find), /* K16 */ be_nested_str_weak(ARG), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), - /* K19 */ be_nested_str_weak(shadow_onoff), - /* K20 */ be_nested_str_weak(set_position), - /* K21 */ be_nested_str_weak(publish_event), - /* K22 */ be_nested_str_weak(EVENT_INFO), - /* K23 */ be_nested_str_weak(Matter_TLV_item), - /* K24 */ be_const_int(3), - /* K25 */ be_const_int(2), + /* K17 */ be_const_int(1), + /* K18 */ be_const_int(0), + /* K19 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), + /* K20 */ be_nested_str_weak(shadow_onoff), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(set_position), + /* K23 */ be_nested_str_weak(publish_event), + /* K24 */ be_nested_str_weak(EVENT_INFO), + /* K25 */ be_nested_str_weak(Matter_TLV_item), + /* K26 */ be_const_int(3), }; @@ -186,14 +187,14 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuratio 0x60080009, // 0000 GETGBL R2 G9 0x8C0C030F, // 0001 GETMET R3 R1 K15 0x88140110, // 0002 GETMBR R5 R0 K16 - 0x58180008, // 0003 LDCONST R6 K8 + 0x58180011, // 0003 LDCONST R6 K17 0x7C0C0600, // 0004 CALL R3 3 0x7C080200, // 0005 CALL R2 1 0x90021C02, // 0006 SETMBR R0 K14 R2 0x8808010E, // 0007 GETMBR R2 R0 K14 - 0x18080511, // 0008 LE R2 R2 K17 + 0x18080512, // 0008 LE R2 R2 K18 0x780A0000, // 0009 JMPF R2 #000B - 0x90021D08, // 000A SETMBR R0 K14 K8 + 0x90021D11, // 000A SETMBR R0 K14 K17 0x80000000, // 000B RET 0 }) ) @@ -219,9 +220,9 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080012, // 0001 LDCONST R2 K18 + 0x58080013, // 0001 LDCONST R2 K19 0x600C0009, // 0002 GETGBL R3 G9 - 0x88100113, // 0003 GETMBR R4 R0 K19 + 0x88100114, // 0003 GETMBR R4 R0 K20 0x7C0C0200, // 0004 CALL R3 1 0x7C040400, // 0005 CALL R1 2 0x80040200, // 0006 RET 1 R1 @@ -248,102 +249,102 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, be_str_weak(button_handler), &be_const_str_solidified, ( &(const binstruction[105]) { /* code */ - 0x1C140511, // 0000 EQ R5 R2 K17 + 0x1C140504, // 0000 EQ R5 R2 K4 0x74160001, // 0001 JMPT R5 #0004 - 0x1C140508, // 0002 EQ R5 R2 K8 + 0x1C140515, // 0002 EQ R5 R2 K21 0x78160002, // 0003 JMPF R5 #0007 - 0x8C140114, // 0004 GETMET R5 R0 K20 + 0x8C140116, // 0004 GETMET R5 R0 K22 0x5C1C0600, // 0005 MOVE R7 R3 0x7C140400, // 0006 CALL R5 2 - 0x1C140508, // 0007 EQ R5 R2 K8 + 0x1C140515, // 0007 EQ R5 R2 K21 0x78160040, // 0008 JMPF R5 #004A 0x780E0010, // 0009 JMPF R3 #001B - 0x8C140115, // 000A GETMET R5 R0 K21 + 0x8C140117, // 000A GETMET R5 R0 K23 0x541E003A, // 000B LDINT R7 59 - 0x58200008, // 000C LDCONST R8 K8 + 0x58200015, // 000C LDCONST R8 K21 0xB8260000, // 000D GETNGBL R9 K0 - 0x88241316, // 000E GETMBR R9 R9 K22 + 0x88241318, // 000E GETMBR R9 R9 K24 0xB82A0000, // 000F GETNGBL R10 K0 0x88281501, // 0010 GETMBR R10 R10 K1 - 0x8C281517, // 0011 GETMET R10 R10 K23 + 0x8C281519, // 0011 GETMET R10 R10 K25 0x7C280200, // 0012 CALL R10 1 0x8C281505, // 0013 GETMET R10 R10 K5 0xB8320000, // 0014 GETNGBL R12 K0 0x88301901, // 0015 GETMBR R12 R12 K1 0x88301906, // 0016 GETMBR R12 R12 K6 - 0x58340008, // 0017 LDCONST R13 K8 + 0x58340015, // 0017 LDCONST R13 K21 0x7C280600, // 0018 CALL R10 3 0x7C140A00, // 0019 CALL R5 5 0x7002000F, // 001A JMP #002B - 0x8C140115, // 001B GETMET R5 R0 K21 + 0x8C140117, // 001B GETMET R5 R0 K23 0x541E003A, // 001C LDINT R7 59 - 0x58200018, // 001D LDCONST R8 K24 + 0x5820001A, // 001D LDCONST R8 K26 0xB8260000, // 001E GETNGBL R9 K0 - 0x88241316, // 001F GETMBR R9 R9 K22 + 0x88241318, // 001F GETMBR R9 R9 K24 0xB82A0000, // 0020 GETNGBL R10 K0 0x88281501, // 0021 GETMBR R10 R10 K1 - 0x8C281517, // 0022 GETMET R10 R10 K23 + 0x8C281519, // 0022 GETMET R10 R10 K25 0x7C280200, // 0023 CALL R10 1 0x8C281505, // 0024 GETMET R10 R10 K5 0xB8320000, // 0025 GETNGBL R12 K0 0x88301901, // 0026 GETMBR R12 R12 K1 0x88301906, // 0027 GETMBR R12 R12 K6 - 0x58340008, // 0028 LDCONST R13 K8 + 0x58340015, // 0028 LDCONST R13 K21 0x7C280600, // 0029 CALL R10 3 0x7C140A00, // 002A CALL R5 5 - 0x1C140708, // 002B EQ R5 R3 K8 + 0x1C140715, // 002B EQ R5 R3 K21 0x7816001B, // 002C JMPF R5 #0049 - 0x24140911, // 002D GT R5 R4 K17 + 0x24140904, // 002D GT R5 R4 K4 0x78160019, // 002E JMPF R5 #0049 - 0x8C140115, // 002F GETMET R5 R0 K21 + 0x8C140117, // 002F GETMET R5 R0 K23 0x541E003A, // 0030 LDINT R7 59 0x54220004, // 0031 LDINT R8 5 0xB8260000, // 0032 GETNGBL R9 K0 - 0x88241316, // 0033 GETMBR R9 R9 K22 + 0x88241318, // 0033 GETMBR R9 R9 K24 0xB82A0000, // 0034 GETNGBL R10 K0 0x88281501, // 0035 GETMBR R10 R10 K1 - 0x8C281517, // 0036 GETMET R10 R10 K23 + 0x8C281519, // 0036 GETMET R10 R10 K25 0x7C280200, // 0037 CALL R10 1 0x8C281505, // 0038 GETMET R10 R10 K5 0xB8320000, // 0039 GETNGBL R12 K0 0x88301901, // 003A GETMBR R12 R12 K1 0x88301906, // 003B GETMBR R12 R12 K6 - 0x58340008, // 003C LDCONST R13 K8 + 0x58340015, // 003C LDCONST R13 K21 0x7C280600, // 003D CALL R10 3 0xB82E0000, // 003E GETNGBL R11 K0 0x882C1701, // 003F GETMBR R11 R11 K1 - 0x8C2C1717, // 0040 GETMET R11 R11 K23 + 0x8C2C1719, // 0040 GETMET R11 R11 K25 0x7C2C0200, // 0041 CALL R11 1 0x8C2C1705, // 0042 GETMET R11 R11 K5 0xB8360000, // 0043 GETNGBL R13 K0 0x88341B01, // 0044 GETMBR R13 R13 K1 0x88341B06, // 0045 GETMBR R13 R13 K6 - 0x00380908, // 0046 ADD R14 R4 K8 + 0x00380915, // 0046 ADD R14 R4 K21 0x7C2C0600, // 0047 CALL R11 3 0x7C140C00, // 0048 CALL R5 6 0x7002001D, // 0049 JMP #0068 - 0x1C140519, // 004A EQ R5 R2 K25 + 0x1C140507, // 004A EQ R5 R2 K7 0x7816001B, // 004B JMPF R5 #0068 - 0x24140911, // 004C GT R5 R4 K17 + 0x24140904, // 004C GT R5 R4 K4 0x78160019, // 004D JMPF R5 #0068 - 0x8C140115, // 004E GETMET R5 R0 K21 + 0x8C140117, // 004E GETMET R5 R0 K23 0x541E003A, // 004F LDINT R7 59 0x54220005, // 0050 LDINT R8 6 0xB8260000, // 0051 GETNGBL R9 K0 - 0x88241316, // 0052 GETMBR R9 R9 K22 + 0x88241318, // 0052 GETMBR R9 R9 K24 0xB82A0000, // 0053 GETNGBL R10 K0 0x88281501, // 0054 GETMBR R10 R10 K1 - 0x8C281517, // 0055 GETMET R10 R10 K23 + 0x8C281519, // 0055 GETMET R10 R10 K25 0x7C280200, // 0056 CALL R10 1 0x8C281505, // 0057 GETMET R10 R10 K5 0xB8320000, // 0058 GETNGBL R12 K0 0x88301901, // 0059 GETMBR R12 R12 K1 0x88301906, // 005A GETMBR R12 R12 K6 - 0x58340008, // 005B LDCONST R13 K8 + 0x58340015, // 005B LDCONST R13 K21 0x7C280600, // 005C CALL R10 3 0xB82E0000, // 005D GETNGBL R11 K0 0x882C1701, // 005E GETMBR R11 R11 K1 - 0x8C2C1717, // 005F GETMET R11 R11 K23 + 0x8C2C1719, // 005F GETMET R11 R11 K25 0x7C2C0200, // 0060 CALL R11 1 0x8C2C1705, // 0061 GETMET R11 R11 K5 0xB8360000, // 0062 GETNGBL R13 K0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h index 3dfbe94e3..5469fbce5 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Shutter' ktab size: 48, total: 78 (saved 240 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Shutter[48] = { +// compact class 'Matter_Plugin_Shutter' ktab size: 51, total: 78 (saved 216 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Shutter[51] = { /* K0 */ be_nested_str_weak(tasmota_shutter_index), /* K1 */ be_nested_str_weak(find), /* K2 */ be_nested_str_weak(ARG), @@ -16,43 +16,46 @@ static const bvalue be_ktab_class_Matter_Plugin_Shutter[48] = { /* K8 */ be_nested_str_weak(cluster), /* K9 */ be_nested_str_weak(command), /* K10 */ be_nested_str_weak(update_shadow_lazy), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(cmd), - /* K13 */ be_nested_str_weak(ShutterStopOpen), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(update_shadow), - /* K16 */ be_nested_str_weak(ShutterStopClose), - /* K17 */ be_const_int(2), - /* K18 */ be_nested_str_weak(ShutterStop), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20), - /* K21 */ be_nested_str_weak(findsubval), - /* K22 */ be_nested_str_weak(ShutterPosition), - /* K23 */ be_nested_str_weak(_X20), - /* K24 */ be_nested_str_weak(pos_X25_X3A), - /* K25 */ be_nested_str_weak(invoke_request), - /* K26 */ be_nested_str_weak(attribute), - /* K27 */ be_nested_str_weak(update_inverted), - /* K28 */ be_nested_str_weak(set), - /* K29 */ be_nested_str_weak(U1), - /* K30 */ be_nested_str_weak(U2), - /* K31 */ be_nested_str_weak(shadow_shutter_pos), - /* K32 */ be_nested_str_weak(shadow_shutter_direction), - /* K33 */ be_nested_str_weak(shadow_shutter_target), - /* K34 */ be_nested_str_weak(read_attribute), - /* K35 */ be_nested_str_weak(Shutter), - /* K36 */ be_nested_str_weak(contains), - /* K37 */ be_nested_str_weak(Position), - /* K38 */ be_nested_str_weak(attribute_updated), - /* K39 */ be_nested_str_weak(Direction), - /* K40 */ be_nested_str_weak(Target), - /* K41 */ be_nested_str_weak(Status_X2013), - /* K42 */ be_nested_str_weak(StatusSHT), - /* K43 */ be_nested_str_weak(SHT), - /* K44 */ be_nested_str_weak(Opt), - /* K45 */ be_const_int(1), - /* K46 */ be_nested_str_weak(VIRTUAL), - /* K47 */ be_nested_str_weak(parse_sensors), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(cmd), + /* K14 */ be_nested_str_weak(ShutterStopOpen), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(update_shadow), + /* K17 */ be_nested_str_weak(ShutterStopClose), + /* K18 */ be_const_int(2), + /* K19 */ be_nested_str_weak(ShutterStop), + /* K20 */ be_nested_str_weak(log), + /* K21 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20), + /* K22 */ be_nested_str_weak(findsubval), + /* K23 */ be_nested_str_weak(ShutterPosition), + /* K24 */ be_nested_str_weak(_X20), + /* K25 */ be_nested_str_weak(pos_X25_X3A), + /* K26 */ be_nested_str_weak(invoke_request), + /* K27 */ be_nested_str_weak(attribute), + /* K28 */ be_nested_str_weak(update_inverted), + /* K29 */ be_const_int(0), + /* K30 */ be_nested_str_weak(set), + /* K31 */ be_nested_str_weak(U1), + /* K32 */ be_nested_str_weak(U2), + /* K33 */ be_nested_str_weak(shadow_shutter_pos), + /* K34 */ be_nested_str_weak(shadow_shutter_direction), + /* K35 */ be_const_int(2), + /* K36 */ be_nested_str_weak(shadow_shutter_target), + /* K37 */ be_nested_str_weak(read_attribute), + /* K38 */ be_nested_str_weak(Shutter), + /* K39 */ be_const_int(1), + /* K40 */ be_nested_str_weak(contains), + /* K41 */ be_nested_str_weak(Position), + /* K42 */ be_nested_str_weak(attribute_updated), + /* K43 */ be_nested_str_weak(Direction), + /* K44 */ be_nested_str_weak(Target), + /* K45 */ be_nested_str_weak(Status_X2013), + /* K46 */ be_nested_str_weak(StatusSHT), + /* K47 */ be_nested_str_weak(SHT), + /* K48 */ be_nested_str_weak(Opt), + /* K49 */ be_nested_str_weak(VIRTUAL), + /* K50 */ be_nested_str_weak(parse_sensors), }; @@ -120,50 +123,50 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x78220060, // 0007 JMPF R8 #0069 0x8C20010A, // 0008 GETMET R8 R0 K10 0x7C200200, // 0009 CALL R8 1 - 0x1C200F03, // 000A EQ R8 R7 K3 + 0x1C200F0B, // 000A EQ R8 R7 K11 0x7822000D, // 000B JMPF R8 #001A - 0xB8221600, // 000C GETNGBL R8 K11 - 0x8C20110C, // 000D GETMET R8 R8 K12 + 0xB8221800, // 000C GETNGBL R8 K12 + 0x8C20110D, // 000D GETMET R8 R8 K13 0x60280008, // 000E GETGBL R10 G8 0x882C0100, // 000F GETMBR R11 R0 K0 - 0x002C170E, // 0010 ADD R11 R11 K14 + 0x002C170F, // 0010 ADD R11 R11 K15 0x7C280200, // 0011 CALL R10 1 - 0x002A1A0A, // 0012 ADD R10 K13 R10 + 0x002A1C0A, // 0012 ADD R10 K14 R10 0x502C0200, // 0013 LDBOOL R11 1 0 0x7C200600, // 0014 CALL R8 3 - 0x8C20010F, // 0015 GETMET R8 R0 K15 + 0x8C200110, // 0015 GETMET R8 R0 K16 0x7C200200, // 0016 CALL R8 1 0x50200200, // 0017 LDBOOL R8 1 0 0x80041000, // 0018 RET 1 R8 0x7002004D, // 0019 JMP #0068 - 0x1C200F0E, // 001A EQ R8 R7 K14 + 0x1C200F0F, // 001A EQ R8 R7 K15 0x7822000D, // 001B JMPF R8 #002A - 0xB8221600, // 001C GETNGBL R8 K11 - 0x8C20110C, // 001D GETMET R8 R8 K12 + 0xB8221800, // 001C GETNGBL R8 K12 + 0x8C20110D, // 001D GETMET R8 R8 K13 0x60280008, // 001E GETGBL R10 G8 0x882C0100, // 001F GETMBR R11 R0 K0 - 0x002C170E, // 0020 ADD R11 R11 K14 + 0x002C170F, // 0020 ADD R11 R11 K15 0x7C280200, // 0021 CALL R10 1 - 0x002A200A, // 0022 ADD R10 K16 R10 + 0x002A220A, // 0022 ADD R10 K17 R10 0x502C0200, // 0023 LDBOOL R11 1 0 0x7C200600, // 0024 CALL R8 3 - 0x8C20010F, // 0025 GETMET R8 R0 K15 + 0x8C200110, // 0025 GETMET R8 R0 K16 0x7C200200, // 0026 CALL R8 1 0x50200200, // 0027 LDBOOL R8 1 0 0x80041000, // 0028 RET 1 R8 0x7002003D, // 0029 JMP #0068 - 0x1C200F11, // 002A EQ R8 R7 K17 + 0x1C200F12, // 002A EQ R8 R7 K18 0x7822000D, // 002B JMPF R8 #003A - 0xB8221600, // 002C GETNGBL R8 K11 - 0x8C20110C, // 002D GETMET R8 R8 K12 + 0xB8221800, // 002C GETNGBL R8 K12 + 0x8C20110D, // 002D GETMET R8 R8 K13 0x60280008, // 002E GETGBL R10 G8 0x882C0100, // 002F GETMBR R11 R0 K0 - 0x002C170E, // 0030 ADD R11 R11 K14 + 0x002C170F, // 0030 ADD R11 R11 K15 0x7C280200, // 0031 CALL R10 1 - 0x002A240A, // 0032 ADD R10 K18 R10 + 0x002A260A, // 0032 ADD R10 K19 R10 0x502C0200, // 0033 LDBOOL R11 1 0 0x7C200600, // 0034 CALL R8 3 - 0x8C20010F, // 0035 GETMET R8 R0 K15 + 0x8C200110, // 0035 GETMET R8 R0 K16 0x7C200200, // 0036 CALL R8 1 0x50200200, // 0037 LDBOOL R8 1 0 0x80041000, // 0038 RET 1 R8 @@ -171,15 +174,15 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x54220004, // 003A LDINT R8 5 0x1C200E08, // 003B EQ R8 R7 R8 0x7822002A, // 003C JMPF R8 #0068 - 0xB8222600, // 003D GETNGBL R8 K19 + 0xB8222800, // 003D GETNGBL R8 K20 0x60240008, // 003E GETGBL R9 G8 0x5C280400, // 003F MOVE R10 R2 0x7C240200, // 0040 CALL R9 1 - 0x00262809, // 0041 ADD R9 K20 R9 - 0x58280011, // 0042 LDCONST R10 K17 + 0x00262A09, // 0041 ADD R9 K21 R9 + 0x58280012, // 0042 LDCONST R10 K18 0x7C200400, // 0043 CALL R8 2 - 0x8C200515, // 0044 GETMET R8 R2 K21 - 0x58280003, // 0045 LDCONST R10 K3 + 0x8C200516, // 0044 GETMET R8 R2 K22 + 0x5828000B, // 0045 LDCONST R10 K11 0x7C200400, // 0046 CALL R8 2 0x4C240000, // 0047 LDNIL R9 0x20241009, // 0048 NE R9 R8 R9 @@ -187,18 +190,18 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x54260063, // 004A LDINT R9 100 0x0C201009, // 004B DIV R8 R8 R9 0x88240104, // 004C GETMBR R9 R0 K4 - 0x1C241303, // 004D EQ R9 R9 K3 + 0x1C24130B, // 004D EQ R9 R9 K11 0x78260001, // 004E JMPF R9 #0051 0x54260063, // 004F LDINT R9 100 0x04201208, // 0050 SUB R8 R9 R8 - 0xB8261600, // 0051 GETNGBL R9 K11 - 0x8C24130C, // 0052 GETMET R9 R9 K12 + 0xB8261800, // 0051 GETNGBL R9 K12 + 0x8C24130D, // 0052 GETMET R9 R9 K13 0x602C0008, // 0053 GETGBL R11 G8 0x88300100, // 0054 GETMBR R12 R0 K0 - 0x0030190E, // 0055 ADD R12 R12 K14 + 0x0030190F, // 0055 ADD R12 R12 K15 0x7C2C0200, // 0056 CALL R11 1 - 0x002E2C0B, // 0057 ADD R11 K22 R11 - 0x002C1717, // 0058 ADD R11 R11 K23 + 0x002E2E0B, // 0057 ADD R11 K23 R11 + 0x002C1718, // 0058 ADD R11 R11 K24 0x60300008, // 0059 GETGBL R12 G8 0x5C341000, // 005A MOVE R13 R8 0x7C300200, // 005B CALL R12 1 @@ -208,9 +211,9 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x60240008, // 005F GETGBL R9 G8 0x5C281000, // 0060 MOVE R10 R8 0x7C240200, // 0061 CALL R9 1 - 0x00263009, // 0062 ADD R9 K24 R9 - 0x900E2609, // 0063 SETMBR R3 K19 R9 - 0x8C24010F, // 0064 GETMET R9 R0 K15 + 0x00263209, // 0062 ADD R9 K25 R9 + 0x900E2809, // 0063 SETMBR R3 K20 R9 + 0x8C240110, // 0064 GETMET R9 R0 K16 0x7C240200, // 0065 CALL R9 1 0x50240200, // 0066 LDBOOL R9 1 0 0x80041200, // 0067 RET 1 R9 @@ -218,7 +221,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x60200003, // 0069 GETGBL R8 G3 0x5C240000, // 006A MOVE R9 R0 0x7C200200, // 006B CALL R8 1 - 0x8C201119, // 006C GETMET R8 R8 K25 + 0x8C20111A, // 006C GETMET R8 R8 K26 0x5C280200, // 006D MOVE R10 R1 0x5C2C0400, // 006E MOVE R11 R2 0x5C300600, // 006F MOVE R12 R3 @@ -251,19 +254,19 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0xB8120C00, // 0000 GETNGBL R4 K6 0x88100907, // 0001 GETMBR R4 R4 K7 0x88140508, // 0002 GETMBR R5 R2 K8 - 0x8818051A, // 0003 GETMBR R6 R2 K26 + 0x8818051B, // 0003 GETMBR R6 R2 K27 0x4C1C0000, // 0004 LDNIL R7 0x54220101, // 0005 LDINT R8 258 0x1C200A08, // 0006 EQ R8 R5 R8 0x78220071, // 0007 JMPF R8 #007A 0x8C20010A, // 0008 GETMET R8 R0 K10 0x7C200200, // 0009 CALL R8 1 - 0x8C20011B, // 000A GETMET R8 R0 K27 + 0x8C20011C, // 000A GETMET R8 R0 K28 0x7C200200, // 000B CALL R8 1 - 0x1C200D03, // 000C EQ R8 R6 K3 + 0x1C200D1D, // 000C EQ R8 R6 K29 0x78220005, // 000D JMPF R8 #0014 - 0x8C20071C, // 000E GETMET R8 R3 K28 - 0x8828091D, // 000F GETMBR R10 R4 K29 + 0x8C20071E, // 000E GETMET R8 R3 K30 + 0x8828091F, // 000F GETMBR R10 R4 K31 0x542E00FE, // 0010 LDINT R11 255 0x7C200600, // 0011 CALL R8 3 0x80041000, // 0012 RET 1 R8 @@ -271,27 +274,27 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220004, // 0014 LDINT R8 5 0x1C200C08, // 0015 EQ R8 R6 R8 0x78220005, // 0016 JMPF R8 #001D - 0x8C20071C, // 0017 GETMET R8 R3 K28 - 0x8828091E, // 0018 GETMBR R10 R4 K30 - 0x582C0003, // 0019 LDCONST R11 K3 + 0x8C20071E, // 0017 GETMET R8 R3 K30 + 0x88280920, // 0018 GETMBR R10 R4 K32 + 0x582C001D, // 0019 LDCONST R11 K29 0x7C200600, // 001A CALL R8 3 0x80041000, // 001B RET 1 R8 0x7002005C, // 001C JMP #007A 0x54220006, // 001D LDINT R8 7 0x1C200C08, // 001E EQ R8 R6 R8 0x78220006, // 001F JMPF R8 #0027 - 0x8C20071C, // 0020 GETMET R8 R3 K28 - 0x8828091D, // 0021 GETMBR R10 R4 K29 + 0x8C20071E, // 0020 GETMET R8 R3 K30 + 0x8828091F, // 0021 GETMBR R10 R4 K31 0x542E0007, // 0022 LDINT R11 8 - 0x002E1C0B, // 0023 ADD R11 K14 R11 + 0x002E1E0B, // 0023 ADD R11 K15 R11 0x7C200600, // 0024 CALL R8 3 0x80041000, // 0025 RET 1 R8 0x70020052, // 0026 JMP #007A 0x5422000C, // 0027 LDINT R8 13 0x1C200C08, // 0028 EQ R8 R6 R8 0x78220005, // 0029 JMPF R8 #0030 - 0x8C20071C, // 002A GETMET R8 R3 K28 - 0x8828091D, // 002B GETMBR R10 R4 K29 + 0x8C20071E, // 002A GETMET R8 R3 K30 + 0x8828091F, // 002B GETMBR R10 R4 K31 0x542E00FE, // 002C LDINT R11 255 0x7C200600, // 002D CALL R8 3 0x80041000, // 002E RET 1 R8 @@ -300,21 +303,21 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x1C200C08, // 0031 EQ R8 R6 R8 0x78220013, // 0032 JMPF R8 #0047 0x88200104, // 0033 GETMBR R8 R0 K4 - 0x1C201103, // 0034 EQ R8 R8 K3 + 0x1C20111D, // 0034 EQ R8 R8 K29 0x78220006, // 0035 JMPF R8 #003D 0x54220063, // 0036 LDINT R8 100 - 0x8824011F, // 0037 GETMBR R9 R0 K31 + 0x88240121, // 0037 GETMBR R9 R0 K33 0x04201009, // 0038 SUB R8 R8 R9 0x54260063, // 0039 LDINT R9 100 0x08201009, // 003A MUL R8 R8 R9 0x5C1C1000, // 003B MOVE R7 R8 0x70020003, // 003C JMP #0041 - 0x8820011F, // 003D GETMBR R8 R0 K31 + 0x88200121, // 003D GETMBR R8 R0 K33 0x54260063, // 003E LDINT R9 100 0x08201009, // 003F MUL R8 R8 R9 0x5C1C1000, // 0040 MOVE R7 R8 - 0x8C20071C, // 0041 GETMET R8 R3 K28 - 0x8828091E, // 0042 GETMBR R10 R4 K30 + 0x8C20071E, // 0041 GETMET R8 R3 K30 + 0x88280920, // 0042 GETMBR R10 R4 K32 0x5C2C0E00, // 0043 MOVE R11 R7 0x7C200600, // 0044 CALL R8 3 0x80041000, // 0045 RET 1 R8 @@ -322,19 +325,19 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220009, // 0047 LDINT R8 10 0x1C200C08, // 0048 EQ R8 R6 R8 0x78220010, // 0049 JMPF R8 #005B - 0x88200120, // 004A GETMBR R8 R0 K32 - 0x1C201103, // 004B EQ R8 R8 K3 + 0x88200122, // 004A GETMBR R8 R0 K34 + 0x1C20111D, // 004B EQ R8 R8 K29 0x78220001, // 004C JMPF R8 #004F - 0x58200003, // 004D LDCONST R8 K3 + 0x5820001D, // 004D LDCONST R8 K29 0x70020005, // 004E JMP #0055 - 0x88200120, // 004F GETMBR R8 R0 K32 - 0x24201103, // 0050 GT R8 R8 K3 + 0x88200122, // 004F GETMBR R8 R0 K34 + 0x2420111D, // 0050 GT R8 R8 K29 0x78220001, // 0051 JMPF R8 #0054 - 0x5820000E, // 0052 LDCONST R8 K14 + 0x5820000F, // 0052 LDCONST R8 K15 0x70020000, // 0053 JMP #0055 - 0x58200011, // 0054 LDCONST R8 K17 - 0x8C24071C, // 0055 GETMET R9 R3 K28 - 0x882C091D, // 0056 GETMBR R11 R4 K29 + 0x58200023, // 0054 LDCONST R8 K35 + 0x8C24071E, // 0055 GETMET R9 R3 K30 + 0x882C091F, // 0056 GETMBR R11 R4 K31 0x5C301000, // 0057 MOVE R12 R8 0x7C240600, // 0058 CALL R9 3 0x80041200, // 0059 RET 1 R9 @@ -343,21 +346,21 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x1C200C08, // 005C EQ R8 R6 R8 0x78220013, // 005D JMPF R8 #0072 0x88200104, // 005E GETMBR R8 R0 K4 - 0x1C201103, // 005F EQ R8 R8 K3 + 0x1C20111D, // 005F EQ R8 R8 K29 0x78220006, // 0060 JMPF R8 #0068 0x54220063, // 0061 LDINT R8 100 - 0x88240121, // 0062 GETMBR R9 R0 K33 + 0x88240124, // 0062 GETMBR R9 R0 K36 0x04201009, // 0063 SUB R8 R8 R9 0x54260063, // 0064 LDINT R9 100 0x08201009, // 0065 MUL R8 R8 R9 0x5C1C1000, // 0066 MOVE R7 R8 0x70020003, // 0067 JMP #006C - 0x88200121, // 0068 GETMBR R8 R0 K33 + 0x88200124, // 0068 GETMBR R8 R0 K36 0x54260063, // 0069 LDINT R9 100 0x08201009, // 006A MUL R8 R8 R9 0x5C1C1000, // 006B MOVE R7 R8 - 0x8C20071C, // 006C GETMET R8 R3 K28 - 0x8828091E, // 006D GETMBR R10 R4 K30 + 0x8C20071E, // 006C GETMET R8 R3 K30 + 0x88280920, // 006D GETMBR R10 R4 K32 0x5C2C0E00, // 006E MOVE R11 R7 0x7C200600, // 006F CALL R8 3 0x80041000, // 0070 RET 1 R8 @@ -365,15 +368,15 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220016, // 0072 LDINT R8 23 0x1C200C08, // 0073 EQ R8 R6 R8 0x78220004, // 0074 JMPF R8 #007A - 0x8C20071C, // 0075 GETMET R8 R3 K28 - 0x8828091D, // 0076 GETMBR R10 R4 K29 - 0x582C0003, // 0077 LDCONST R11 K3 + 0x8C20071E, // 0075 GETMET R8 R3 K30 + 0x8828091F, // 0076 GETMBR R10 R4 K31 + 0x582C001D, // 0077 LDCONST R11 K29 0x7C200600, // 0078 CALL R8 3 0x80041000, // 0079 RET 1 R8 0x60200003, // 007A GETGBL R8 G3 0x5C240000, // 007B MOVE R9 R0 0x7C200200, // 007C CALL R8 1 - 0x8C201122, // 007D GETMET R8 R8 K34 + 0x8C201125, // 007D GETMET R8 R8 K37 0x5C280200, // 007E MOVE R10 R1 0x5C2C0400, // 007F MOVE R11 R2 0x5C300600, // 0080 MOVE R12 R3 @@ -431,56 +434,56 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */ ( &(const binstruction[53]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x000C070E, // 0002 ADD R3 R3 K14 + 0x000C0727, // 0002 ADD R3 R3 K39 0x7C080200, // 0003 CALL R2 1 - 0x000A4602, // 0004 ADD R2 K35 R2 - 0x8C0C0324, // 0005 GETMET R3 R1 K36 + 0x000A4C02, // 0004 ADD R2 K38 R2 + 0x8C0C0328, // 0005 GETMET R3 R1 K40 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E002A, // 0008 JMPF R3 #0034 0x940C0202, // 0009 GETIDX R3 R1 R2 0x8C100701, // 000A GETMET R4 R3 K1 - 0x58180025, // 000B LDCONST R6 K37 + 0x58180029, // 000B LDCONST R6 K41 0x7C100400, // 000C CALL R4 2 0x4C140000, // 000D LDNIL R5 0x20140805, // 000E NE R5 R4 R5 0x78160007, // 000F JMPF R5 #0018 - 0x8814011F, // 0010 GETMBR R5 R0 K31 + 0x88140121, // 0010 GETMBR R5 R0 K33 0x20140805, // 0011 NE R5 R4 R5 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140126, // 0013 GETMET R5 R0 K38 + 0x8C14012A, // 0013 GETMET R5 R0 K42 0x541E0101, // 0014 LDINT R7 258 0x5422000D, // 0015 LDINT R8 14 0x7C140600, // 0016 CALL R5 3 - 0x90023E04, // 0017 SETMBR R0 K31 R4 + 0x90024204, // 0017 SETMBR R0 K33 R4 0x8C140701, // 0018 GETMET R5 R3 K1 - 0x581C0027, // 0019 LDCONST R7 K39 + 0x581C002B, // 0019 LDCONST R7 K43 0x7C140400, // 001A CALL R5 2 0x4C180000, // 001B LDNIL R6 0x20180A06, // 001C NE R6 R5 R6 0x781A0007, // 001D JMPF R6 #0026 - 0x88180120, // 001E GETMBR R6 R0 K32 + 0x88180122, // 001E GETMBR R6 R0 K34 0x20180A06, // 001F NE R6 R5 R6 0x781A0003, // 0020 JMPF R6 #0025 - 0x8C180126, // 0021 GETMET R6 R0 K38 + 0x8C18012A, // 0021 GETMET R6 R0 K42 0x54220101, // 0022 LDINT R8 258 0x54260009, // 0023 LDINT R9 10 0x7C180600, // 0024 CALL R6 3 - 0x90024005, // 0025 SETMBR R0 K32 R5 + 0x90024405, // 0025 SETMBR R0 K34 R5 0x8C180701, // 0026 GETMET R6 R3 K1 - 0x58200028, // 0027 LDCONST R8 K40 + 0x5820002C, // 0027 LDCONST R8 K44 0x7C180400, // 0028 CALL R6 2 0x4C1C0000, // 0029 LDNIL R7 0x201C0C07, // 002A NE R7 R6 R7 0x781E0007, // 002B JMPF R7 #0034 - 0x881C0121, // 002C GETMBR R7 R0 K33 + 0x881C0124, // 002C GETMBR R7 R0 K36 0x201C0C07, // 002D NE R7 R6 R7 0x781E0003, // 002E JMPF R7 #0033 - 0x8C1C0126, // 002F GETMET R7 R0 K38 + 0x8C1C012A, // 002F GETMET R7 R0 K42 0x54260101, // 0030 LDINT R9 258 0x542A000A, // 0031 LDINT R10 11 0x7C1C0600, // 0032 CALL R7 3 - 0x90024206, // 0033 SETMBR R0 K33 R6 + 0x90024806, // 0033 SETMBR R0 K36 R6 0x80000000, // 0034 RET 0 }) ) @@ -509,26 +512,26 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ 0x5409FFFE, // 0001 LDINT R2 -1 0x1C040202, // 0002 EQ R1 R1 R2 0x7806001F, // 0003 JMPF R1 #0024 - 0xB8061600, // 0004 GETNGBL R1 K11 - 0x8C04030C, // 0005 GETMET R1 R1 K12 - 0x580C0029, // 0006 LDCONST R3 K41 + 0xB8061800, // 0004 GETNGBL R1 K12 + 0x8C04030D, // 0005 GETMET R1 R1 K13 + 0x580C002D, // 0006 LDCONST R3 K45 0x50100200, // 0007 LDBOOL R4 1 0 0x7C040600, // 0008 CALL R1 3 - 0x8C080324, // 0009 GETMET R2 R1 K36 - 0x5810002A, // 000A LDCONST R4 K42 + 0x8C080328, // 0009 GETMET R2 R1 K40 + 0x5810002E, // 000A LDCONST R4 K46 0x7C080400, // 000B CALL R2 2 0x780A0016, // 000C JMPF R2 #0024 - 0x9404032A, // 000D GETIDX R1 R1 K42 + 0x9404032E, // 000D GETIDX R1 R1 K46 0x8C080301, // 000E GETMET R2 R1 K1 0x60100008, // 000F GETGBL R4 G8 0x88140100, // 0010 GETMBR R5 R0 K0 0x7C100200, // 0011 CALL R4 1 - 0x00125604, // 0012 ADD R4 K43 R4 + 0x00125E04, // 0012 ADD R4 K47 R4 0x60140013, // 0013 GETGBL R5 G19 0x7C140000, // 0014 CALL R5 0 0x7C080600, // 0015 CALL R2 3 0x8C080501, // 0016 GETMET R2 R2 K1 - 0x5810002C, // 0017 LDCONST R4 K44 + 0x58100030, // 0017 LDCONST R4 K48 0x7C080400, // 0018 CALL R2 2 0x4C0C0000, // 0019 LDNIL R3 0x200C0403, // 001A NE R3 R2 R3 @@ -537,7 +540,7 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ 0x6010000C, // 001D GETGBL R4 G12 0x5C140400, // 001E MOVE R5 R2 0x7C100200, // 001F CALL R4 1 - 0x0410092D, // 0020 SUB R4 R4 K45 + 0x0410090F, // 0020 SUB R4 R4 K15 0x94100404, // 0021 GETIDX R4 R2 R4 0x7C0C0200, // 0022 CALL R3 1 0x90020803, // 0023 SETMBR R0 K4 R3 @@ -565,27 +568,27 @@ be_local_closure(class_Matter_Plugin_Shutter_update_shadow, /* name */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8804012E, // 0000 GETMBR R1 R0 K46 + 0x88040131, // 0000 GETMBR R1 R0 K49 0x7406000E, // 0001 JMPT R1 #0011 - 0x8C04011B, // 0002 GETMET R1 R0 K27 + 0x8C04011C, // 0002 GETMET R1 R0 K28 0x7C040200, // 0003 CALL R1 1 - 0xB8061600, // 0004 GETNGBL R1 K11 - 0x8C04030C, // 0005 GETMET R1 R1 K12 + 0xB8061800, // 0004 GETNGBL R1 K12 + 0x8C04030D, // 0005 GETMET R1 R1 K13 0x600C0008, // 0006 GETGBL R3 G8 0x88100100, // 0007 GETMBR R4 R0 K0 - 0x0010090E, // 0008 ADD R4 R4 K14 + 0x00100927, // 0008 ADD R4 R4 K39 0x7C0C0200, // 0009 CALL R3 1 - 0x000E2C03, // 000A ADD R3 K22 R3 + 0x000E2E03, // 000A ADD R3 K23 R3 0x50100200, // 000B LDBOOL R4 1 0 0x7C040600, // 000C CALL R1 3 0x78060002, // 000D JMPF R1 #0011 - 0x8C08012F, // 000E GETMET R2 R0 K47 + 0x8C080132, // 000E GETMET R2 R0 K50 0x5C100200, // 000F MOVE R4 R1 0x7C080400, // 0010 CALL R2 2 0x60040003, // 0011 GETGBL R1 G3 0x5C080000, // 0012 MOVE R2 R0 0x7C040200, // 0013 CALL R1 1 - 0x8C04030F, // 0014 GETMET R1 R1 K15 + 0x8C040310, // 0014 GETMET R1 R1 K16 0x7C040200, // 0015 CALL R1 1 0x80000000, // 0016 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h index c0136e105..ee26c85e9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Light1' ktab size: 55, total: 108 (saved 424 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Light1[55] = { +// compact class 'Matter_Plugin_Light1' ktab size: 59, total: 108 (saved 392 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light1[59] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(BRIDGE), /* K2 */ be_nested_str_weak(tasmota), @@ -30,36 +30,40 @@ static const bvalue be_ktab_class_Matter_Plugin_Light1[55] = { /* K22 */ be_nested_str_weak(cluster), /* K23 */ be_nested_str_weak(command), /* K24 */ be_nested_str_weak(update_shadow_lazy), - /* K25 */ be_nested_str_weak(findsubval), - /* K26 */ be_nested_str_weak(set_bri), - /* K27 */ be_nested_str_weak(log), - /* K28 */ be_nested_str_weak(bri_X3A), - /* K29 */ be_nested_str_weak(publish_command), - /* K30 */ be_nested_str_weak(Bri), - /* K31 */ be_const_int(1), - /* K32 */ be_const_int(2), - /* K33 */ be_const_int(3), - /* K34 */ be_nested_str_weak(Power), - /* K35 */ be_nested_str_weak(invoke_request), - /* K36 */ be_nested_str_weak(attribute), - /* K37 */ be_nested_str_weak(U1), - /* K38 */ be_nested_str_weak(read_attribute), - /* K39 */ be_nested_str_weak(tasmota_relay_index), - /* K40 */ be_nested_str_weak(find), - /* K41 */ be_nested_str_weak(ARG), - /* K42 */ be_const_int(0), - /* K43 */ be_nested_str_weak(TYPE), - /* K44 */ be_nested_str_weak(light1), - /* K45 */ be_nested_str_weak(get_option), - /* K46 */ be_nested_str_weak(get), - /* K47 */ be_nested_str_weak(update_virtual), - /* K48 */ be_nested_str_weak(init), - /* K49 */ be_nested_str_weak(webserver), - /* K50 */ be_nested_str_weak(web_values_prefix), - /* K51 */ be_nested_str_weak(content_send), - /* K52 */ be_nested_str_weak(_X25s_X20_X25s), - /* K53 */ be_nested_str_weak(web_value_onoff), - /* K54 */ be_nested_str_weak(web_value_dimmer), + /* K25 */ be_const_int(0), + /* K26 */ be_nested_str_weak(findsubval), + /* K27 */ be_nested_str_weak(set_bri), + /* K28 */ be_nested_str_weak(log), + /* K29 */ be_nested_str_weak(bri_X3A), + /* K30 */ be_nested_str_weak(publish_command), + /* K31 */ be_nested_str_weak(Bri), + /* K32 */ be_const_int(1), + /* K33 */ be_const_int(2), + /* K34 */ be_const_int(3), + /* K35 */ be_nested_str_weak(Power), + /* K36 */ be_nested_str_weak(invoke_request), + /* K37 */ be_nested_str_weak(attribute), + /* K38 */ be_nested_str_weak(U1), + /* K39 */ be_const_int(2), + /* K40 */ be_nested_str_weak(read_attribute), + /* K41 */ be_nested_str_weak(tasmota_relay_index), + /* K42 */ be_nested_str_weak(find), + /* K43 */ be_nested_str_weak(ARG), + /* K44 */ be_const_int(0), + /* K45 */ be_const_int(1), + /* K46 */ be_nested_str_weak(TYPE), + /* K47 */ be_nested_str_weak(light1), + /* K48 */ be_nested_str_weak(get_option), + /* K49 */ be_nested_str_weak(get), + /* K50 */ be_nested_str_weak(update_virtual), + /* K51 */ be_const_int(0), + /* K52 */ be_nested_str_weak(init), + /* K53 */ be_nested_str_weak(webserver), + /* K54 */ be_nested_str_weak(web_values_prefix), + /* K55 */ be_nested_str_weak(content_send), + /* K56 */ be_nested_str_weak(_X25s_X20_X25s), + /* K57 */ be_nested_str_weak(web_value_onoff), + /* K58 */ be_nested_str_weak(web_value_dimmer), }; @@ -249,46 +253,46 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x78220064, // 0007 JMPF R8 #006D 0x8C200118, // 0008 GETMET R8 R0 K24 0x7C200200, // 0009 CALL R8 1 - 0x1C200F00, // 000A EQ R8 R7 K0 + 0x1C200F19, // 000A EQ R8 R7 K25 0x7822001A, // 000B JMPF R8 #0027 - 0x8C200519, // 000C GETMET R8 R2 K25 - 0x58280000, // 000D LDCONST R10 K0 + 0x8C20051A, // 000C GETMET R8 R2 K26 + 0x58280019, // 000D LDCONST R10 K25 0x7C200400, // 000E CALL R8 2 - 0x8C24011A, // 000F GETMET R9 R0 K26 + 0x8C24011B, // 000F GETMET R9 R0 K27 0x5C2C1000, // 0010 MOVE R11 R8 0x7C240400, // 0011 CALL R9 2 0x60240008, // 0012 GETGBL R9 G8 0x5C281000, // 0013 MOVE R10 R8 0x7C240200, // 0014 CALL R9 1 - 0x00263809, // 0015 ADD R9 K28 R9 - 0x900E3609, // 0016 SETMBR R3 K27 R9 - 0x8C24011D, // 0017 GETMET R9 R0 K29 - 0x582C001E, // 0018 LDCONST R11 K30 + 0x00263A09, // 0015 ADD R9 K29 R9 + 0x900E3809, // 0016 SETMBR R3 K28 R9 + 0x8C24011E, // 0017 GETMET R9 R0 K30 + 0x582C001F, // 0018 LDCONST R11 K31 0x5C301000, // 0019 MOVE R12 R8 0x58340005, // 001A LDCONST R13 K5 0xB83A0400, // 001B GETNGBL R14 K2 0x8C381D03, // 001C GETMET R14 R14 K3 0x5C401000, // 001D MOVE R16 R8 - 0x58440000, // 001E LDCONST R17 K0 + 0x58440019, // 001E LDCONST R17 K25 0x544A00FD, // 001F LDINT R18 254 - 0x584C0000, // 0020 LDCONST R19 K0 + 0x584C0019, // 0020 LDCONST R19 K25 0x54520063, // 0021 LDINT R20 100 0x7C380C00, // 0022 CALL R14 6 0x7C240A00, // 0023 CALL R9 5 0x50240200, // 0024 LDBOOL R9 1 0 0x80041200, // 0025 RET 1 R9 0x70020044, // 0026 JMP #006C - 0x1C200F1F, // 0027 EQ R8 R7 K31 + 0x1C200F20, // 0027 EQ R8 R7 K32 0x78220002, // 0028 JMPF R8 #002C 0x50200200, // 0029 LDBOOL R8 1 0 0x80041000, // 002A RET 1 R8 0x7002003F, // 002B JMP #006C - 0x1C200F20, // 002C EQ R8 R7 K32 + 0x1C200F21, // 002C EQ R8 R7 K33 0x78220002, // 002D JMPF R8 #0031 0x50200200, // 002E LDBOOL R8 1 0 0x80041000, // 002F RET 1 R8 0x7002003A, // 0030 JMP #006C - 0x1C200F21, // 0031 EQ R8 R7 K33 + 0x1C200F22, // 0031 EQ R8 R7 K34 0x78220002, // 0032 JMPF R8 #0036 0x50200200, // 0033 LDBOOL R8 1 0 0x80041000, // 0034 RET 1 R8 @@ -296,36 +300,36 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x54220003, // 0036 LDINT R8 4 0x1C200E08, // 0037 EQ R8 R7 R8 0x78220021, // 0038 JMPF R8 #005B - 0x8C200519, // 0039 GETMET R8 R2 K25 - 0x58280000, // 003A LDCONST R10 K0 + 0x8C20051A, // 0039 GETMET R8 R2 K26 + 0x58280019, // 003A LDCONST R10 K25 0x7C200400, // 003B CALL R8 2 - 0x24241100, // 003C GT R9 R8 K0 - 0x8C28011A, // 003D GETMET R10 R0 K26 + 0x24241119, // 003C GT R9 R8 K25 + 0x8C28011B, // 003D GETMET R10 R0 K27 0x5C301000, // 003E MOVE R12 R8 0x5C341200, // 003F MOVE R13 R9 0x7C280600, // 0040 CALL R10 3 0x60280008, // 0041 GETGBL R10 G8 0x5C2C1000, // 0042 MOVE R11 R8 0x7C280200, // 0043 CALL R10 1 - 0x002A380A, // 0044 ADD R10 K28 R10 - 0x900E360A, // 0045 SETMBR R3 K27 R10 - 0x8C28011D, // 0046 GETMET R10 R0 K29 - 0x5830001E, // 0047 LDCONST R12 K30 + 0x002A3A0A, // 0044 ADD R10 K29 R10 + 0x900E380A, // 0045 SETMBR R3 K28 R10 + 0x8C28011E, // 0046 GETMET R10 R0 K30 + 0x5830001F, // 0047 LDCONST R12 K31 0x5C341000, // 0048 MOVE R13 R8 0x58380005, // 0049 LDCONST R14 K5 0xB83E0400, // 004A GETNGBL R15 K2 0x8C3C1F03, // 004B GETMET R15 R15 K3 0x5C441000, // 004C MOVE R17 R8 - 0x58480000, // 004D LDCONST R18 K0 + 0x58480019, // 004D LDCONST R18 K25 0x544E00FD, // 004E LDINT R19 254 - 0x58500000, // 004F LDCONST R20 K0 + 0x58500019, // 004F LDCONST R20 K25 0x54560063, // 0050 LDINT R21 100 0x7C3C0C00, // 0051 CALL R15 6 - 0x58400022, // 0052 LDCONST R16 K34 + 0x58400023, // 0052 LDCONST R16 K35 0x78260001, // 0053 JMPF R9 #0056 - 0x5844001F, // 0054 LDCONST R17 K31 + 0x58440020, // 0054 LDCONST R17 K32 0x70020000, // 0055 JMP #0057 - 0x58440000, // 0056 LDCONST R17 K0 + 0x58440019, // 0056 LDCONST R17 K25 0x7C280E00, // 0057 CALL R10 7 0x50280200, // 0058 LDBOOL R10 1 0 0x80041400, // 0059 RET 1 R10 @@ -351,7 +355,7 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x60200003, // 006D GETGBL R8 G3 0x5C240000, // 006E MOVE R9 R0 0x7C200200, // 006F CALL R8 1 - 0x8C201123, // 0070 GETMET R8 R8 K35 + 0x8C201124, // 0070 GETMET R8 R8 K36 0x5C280200, // 0071 MOVE R10 R1 0x5C2C0400, // 0072 MOVE R11 R2 0x5C300600, // 0073 MOVE R12 R3 @@ -384,32 +388,32 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0xB8122800, // 0000 GETNGBL R4 K20 0x88100915, // 0001 GETMBR R4 R4 K21 0x88140516, // 0002 GETMBR R5 R2 K22 - 0x88180524, // 0003 GETMBR R6 R2 K36 + 0x88180525, // 0003 GETMBR R6 R2 K37 0x541E0007, // 0004 LDINT R7 8 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E002A, // 0006 JMPF R7 #0032 0x8C1C0118, // 0007 GETMET R7 R0 K24 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D00, // 0009 EQ R7 R6 K0 + 0x1C1C0D19, // 0009 EQ R7 R6 K25 0x781E0005, // 000A JMPF R7 #0011 0x8C1C070C, // 000B GETMET R7 R3 K12 - 0x88240925, // 000C GETMBR R9 R4 K37 + 0x88240926, // 000C GETMBR R9 R4 K38 0x8828010A, // 000D GETMBR R10 R0 K10 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020020, // 0010 JMP #0032 - 0x1C1C0D20, // 0011 EQ R7 R6 K32 + 0x1C1C0D27, // 0011 EQ R7 R6 K39 0x781E0005, // 0012 JMPF R7 #0019 0x8C1C070C, // 0013 GETMET R7 R3 K12 - 0x88240925, // 0014 GETMBR R9 R4 K37 - 0x58280000, // 0015 LDCONST R10 K0 + 0x88240926, // 0014 GETMBR R9 R4 K38 + 0x58280019, // 0015 LDCONST R10 K25 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020018, // 0018 JMP #0032 - 0x1C1C0D21, // 0019 EQ R7 R6 K33 + 0x1C1C0D22, // 0019 EQ R7 R6 K34 0x781E0005, // 001A JMPF R7 #0021 0x8C1C070C, // 001B GETMET R7 R3 K12 - 0x88240925, // 001C GETMBR R9 R4 K37 + 0x88240926, // 001C GETMBR R9 R4 K38 0x542A00FD, // 001D LDINT R10 254 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 @@ -418,8 +422,8 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0x1C1C0C07, // 0022 EQ R7 R6 R7 0x781E0005, // 0023 JMPF R7 #002A 0x8C1C070C, // 0024 GETMET R7 R3 K12 - 0x88240925, // 0025 GETMBR R9 R4 K37 - 0x58280000, // 0026 LDCONST R10 K0 + 0x88240926, // 0025 GETMBR R9 R4 K38 + 0x58280019, // 0026 LDCONST R10 K25 0x7C1C0600, // 0027 CALL R7 3 0x80040E00, // 0028 RET 1 R7 0x70020007, // 0029 JMP #0032 @@ -427,14 +431,14 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0x1C1C0C07, // 002B EQ R7 R6 R7 0x781E0004, // 002C JMPF R7 #0032 0x8C1C070C, // 002D GETMET R7 R3 K12 - 0x88240925, // 002E GETMBR R9 R4 K37 + 0x88240926, // 002E GETMBR R9 R4 K38 0x8828010A, // 002F GETMBR R10 R0 K10 0x7C1C0600, // 0030 CALL R7 3 0x80040E00, // 0031 RET 1 R7 0x601C0003, // 0032 GETGBL R7 G3 0x5C200000, // 0033 MOVE R8 R0 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0F26, // 0035 GETMET R7 R7 K38 + 0x8C1C0F28, // 0035 GETMET R7 R7 K40 0x5C240200, // 0036 MOVE R9 R1 0x5C280400, // 0037 MOVE R10 R2 0x5C2C0600, // 0038 MOVE R11 R3 @@ -466,53 +470,53 @@ be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ 0x88080101, // 0000 GETMBR R2 R0 K1 0x780A000F, // 0001 JMPF R2 #0012 0x60080009, // 0002 GETGBL R2 G9 - 0x8C0C0328, // 0003 GETMET R3 R1 K40 - 0x88140129, // 0004 GETMBR R5 R0 K41 + 0x8C0C032A, // 0003 GETMET R3 R1 K42 + 0x8814012B, // 0004 GETMBR R5 R0 K43 0x4C180000, // 0005 LDNIL R6 0x7C0C0600, // 0006 CALL R3 3 0x7C080200, // 0007 CALL R2 1 - 0x90024E02, // 0008 SETMBR R0 K39 R2 - 0x88080127, // 0009 GETMBR R2 R0 K39 + 0x90025202, // 0008 SETMBR R0 K41 R2 + 0x88080129, // 0009 GETMBR R2 R0 K41 0x4C0C0000, // 000A LDNIL R3 0x20080403, // 000B NE R2 R2 R3 0x780A0003, // 000C JMPF R2 #0011 - 0x88080127, // 000D GETMBR R2 R0 K39 - 0x1808052A, // 000E LE R2 R2 K42 + 0x88080129, // 000D GETMBR R2 R0 K41 + 0x1808052C, // 000E LE R2 R2 K44 0x780A0000, // 000F JMPF R2 #0011 - 0x90024F1F, // 0010 SETMBR R0 K39 K31 + 0x9002532D, // 0010 SETMBR R0 K41 K45 0x70020020, // 0011 JMP #0033 - 0x88080127, // 0012 GETMBR R2 R0 K39 + 0x88080129, // 0012 GETMBR R2 R0 K41 0x4C0C0000, // 0013 LDNIL R3 0x1C080403, // 0014 EQ R2 R2 R3 0x780A001C, // 0015 JMPF R2 #0033 - 0x8808012B, // 0016 GETMBR R2 R0 K43 - 0x1C08052C, // 0017 EQ R2 R2 K44 + 0x8808012E, // 0016 GETMBR R2 R0 K46 + 0x1C08052F, // 0017 EQ R2 R2 K47 0x780A0019, // 0018 JMPF R2 #0033 - 0x8C080328, // 0019 GETMET R2 R1 K40 - 0x88100129, // 001A GETMBR R4 R0 K41 + 0x8C08032A, // 0019 GETMET R2 R1 K42 + 0x8810012B, // 001A GETMBR R4 R0 K43 0x7C080400, // 001B CALL R2 2 0x4C0C0000, // 001C LDNIL R3 0x1C0C0403, // 001D EQ R3 R2 R3 0x780E000E, // 001E JMPF R3 #002E 0xB80E0400, // 001F GETNGBL R3 K2 - 0x8C0C072D, // 0020 GETMET R3 R3 K45 + 0x8C0C0730, // 0020 GETMET R3 R3 K48 0x54160043, // 0021 LDINT R5 68 0x7C0C0400, // 0022 CALL R3 2 - 0x1C0C072A, // 0023 EQ R3 R3 K42 + 0x1C0C072C, // 0023 EQ R3 R3 K44 0x780E0007, // 0024 JMPF R3 #002D 0xA40E1600, // 0025 IMPORT R3 K11 - 0x8C10072E, // 0026 GETMET R4 R3 K46 - 0x5818001F, // 0027 LDCONST R6 K31 + 0x8C100731, // 0026 GETMET R4 R3 K49 + 0x5818002D, // 0027 LDCONST R6 K45 0x7C100400, // 0028 CALL R4 2 0x4C140000, // 0029 LDNIL R5 0x20100805, // 002A NE R4 R4 R5 0x78120000, // 002B JMPF R4 #002D - 0x90021D1F, // 002C SETMBR R0 K14 K31 + 0x90021D2D, // 002C SETMBR R0 K14 K45 0x70020004, // 002D JMP #0033 0x600C0009, // 002E GETGBL R3 G9 0x5C100400, // 002F MOVE R4 R2 0x7C0C0200, // 0030 CALL R3 1 - 0x040C071F, // 0031 SUB R3 R3 K31 + 0x040C072D, // 0031 SUB R3 R3 K45 0x90021C03, // 0032 SETMBR R0 K14 R3 0x80000000, // 0033 RET 0 }) @@ -538,16 +542,16 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C080328, // 0000 GETMET R2 R1 K40 - 0x58100022, // 0001 LDCONST R4 K34 + 0x8C08032A, // 0000 GETMET R2 R1 K42 + 0x58100023, // 0001 LDCONST R4 K35 0x7C080400, // 0002 CALL R2 2 - 0x8C0C0328, // 0003 GETMET R3 R1 K40 - 0x5814001E, // 0004 LDCONST R5 K30 + 0x8C0C032A, // 0003 GETMET R3 R1 K42 + 0x5814001F, // 0004 LDCONST R5 K31 0x7C0C0400, // 0005 CALL R3 2 0x4C100000, // 0006 LDNIL R4 0x20100604, // 0007 NE R4 R3 R4 0x78120006, // 0008 JMPF R4 #0010 - 0x8C10011A, // 0009 GETMET R4 R0 K26 + 0x8C10011B, // 0009 GETMET R4 R0 K27 0x60180009, // 000A GETGBL R6 G9 0x5C1C0600, // 000B MOVE R7 R3 0x7C180200, // 000C CALL R6 1 @@ -557,7 +561,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ 0x60100003, // 0010 GETGBL R4 G3 0x5C140000, // 0011 MOVE R5 R0 0x7C100200, // 0012 CALL R4 1 - 0x8C10092F, // 0013 GETMET R4 R4 K47 + 0x8C100932, // 0013 GETMET R4 R4 K50 0x5C180200, // 0014 MOVE R6 R1 0x7C100400, // 0015 CALL R4 2 0x80000000, // 0016 RET 0 @@ -584,11 +588,11 @@ be_local_closure(class_Matter_Plugin_Light1_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x90021500, // 0000 SETMBR R0 K10 K0 + 0x90021533, // 0000 SETMBR R0 K10 K51 0x60100003, // 0001 GETGBL R4 G3 0x5C140000, // 0002 MOVE R5 R0 0x7C100200, // 0003 CALL R4 1 - 0x8C100930, // 0004 GETMET R4 R4 K48 + 0x8C100934, // 0004 GETMET R4 R4 K52 0x5C180200, // 0005 MOVE R6 R1 0x5C1C0400, // 0006 MOVE R7 R2 0x5C200600, // 0007 MOVE R8 R3 @@ -617,16 +621,16 @@ be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0xA4066200, // 0000 IMPORT R1 K49 - 0x8C080132, // 0001 GETMET R2 R0 K50 + 0xA4066A00, // 0000 IMPORT R1 K53 + 0x8C080136, // 0001 GETMET R2 R0 K54 0x7C080200, // 0002 CALL R2 1 - 0x8C080333, // 0003 GETMET R2 R1 K51 + 0x8C080337, // 0003 GETMET R2 R1 K55 0x60100018, // 0004 GETGBL R4 G24 - 0x58140034, // 0005 LDCONST R5 K52 - 0x8C180135, // 0006 GETMET R6 R0 K53 + 0x58140038, // 0005 LDCONST R5 K56 + 0x8C180139, // 0006 GETMET R6 R0 K57 0x88200108, // 0007 GETMBR R8 R0 K8 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0136, // 0009 GETMET R7 R0 K54 + 0x8C1C013A, // 0009 GETMET R7 R0 K58 0x7C1C0200, // 000A CALL R7 1 0x7C100600, // 000B CALL R4 3 0x7C080400, // 000C CALL R2 2 @@ -665,7 +669,7 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ 0x1C0C0403, // 0008 EQ R3 R2 R3 0x780E0017, // 0009 JMPF R3 #0022 0x600C0009, // 000A GETGBL R3 G9 - 0x8C100328, // 000B GETMET R4 R1 K40 + 0x8C10032A, // 000B GETMET R4 R1 K42 0x58180005, // 000C LDCONST R6 K5 0x7C100400, // 000D CALL R4 2 0x7C0C0200, // 000E CALL R3 1 @@ -675,9 +679,9 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ 0xB8120400, // 0012 GETNGBL R4 K2 0x8C100903, // 0013 GETMET R4 R4 K3 0x5C180600, // 0014 MOVE R6 R3 - 0x581C002A, // 0015 LDCONST R7 K42 + 0x581C0000, // 0015 LDCONST R7 K0 0x54220063, // 0016 LDINT R8 100 - 0x5824002A, // 0017 LDCONST R9 K42 + 0x58240000, // 0017 LDCONST R9 K0 0x542A00FD, // 0018 LDINT R10 254 0x7C100C00, // 0019 CALL R4 6 0x8814010A, // 001A GETMBR R5 R0 K10 @@ -685,7 +689,7 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ 0x78160004, // 001C JMPF R5 #0022 0x8C140109, // 001D GETMET R5 R0 K9 0x541E0007, // 001E LDINT R7 8 - 0x5820002A, // 001F LDCONST R8 K42 + 0x58200000, // 001F LDCONST R8 K0 0x7C140600, // 0020 CALL R5 3 0x90021404, // 0021 SETMBR R0 K10 R4 0x80000000, // 0022 RET 0 @@ -717,13 +721,13 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0x88040101, // 0002 GETMBR R1 R0 K1 0x7406002A, // 0003 JMPT R1 #002F 0xA4061600, // 0004 IMPORT R1 K11 - 0x8C08032E, // 0005 GETMET R2 R1 K46 + 0x8C080331, // 0005 GETMET R2 R1 K49 0x8810010E, // 0006 GETMBR R4 R0 K14 0x7C080400, // 0007 CALL R2 2 0x4C0C0000, // 0008 LDNIL R3 0x200C0403, // 0009 NE R3 R2 R3 0x780E0023, // 000A JMPF R3 #002F - 0x8C0C0528, // 000B GETMET R3 R2 K40 + 0x8C0C052A, // 000B GETMET R3 R2 K42 0x5814000F, // 000C LDCONST R5 K15 0x4C180000, // 000D LDNIL R6 0x7C0C0600, // 000E CALL R3 3 @@ -732,10 +736,10 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0x78120004, // 0011 JMPF R4 #0017 0x8C100109, // 0012 GETMET R4 R0 K9 0x541A0005, // 0013 LDINT R6 6 - 0x581C0000, // 0014 LDCONST R7 K0 + 0x581C0019, // 0014 LDCONST R7 K25 0x7C100600, // 0015 CALL R4 3 0x90021003, // 0016 SETMBR R0 K8 R3 - 0x8C100528, // 0017 GETMET R4 R2 K40 + 0x8C10052A, // 0017 GETMET R4 R2 K42 0x5818000D, // 0018 LDCONST R6 K13 0x4C1C0000, // 0019 LDNIL R7 0x7C100600, // 001A CALL R4 3 @@ -745,9 +749,9 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0xB8160400, // 001E GETNGBL R5 K2 0x8C140B03, // 001F GETMET R5 R5 K3 0x5C1C0800, // 0020 MOVE R7 R4 - 0x58200000, // 0021 LDCONST R8 K0 + 0x58200019, // 0021 LDCONST R8 K25 0x542600FE, // 0022 LDINT R9 255 - 0x58280000, // 0023 LDCONST R10 K0 + 0x58280019, // 0023 LDCONST R10 K25 0x542E00FD, // 0024 LDINT R11 254 0x7C140C00, // 0025 CALL R5 6 0x5C100A00, // 0026 MOVE R4 R5 @@ -756,7 +760,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0x78160004, // 0029 JMPF R5 #002F 0x8C140109, // 002A GETMET R5 R0 K9 0x541E0007, // 002B LDINT R7 8 - 0x58200000, // 002C LDCONST R8 K0 + 0x58200019, // 002C LDCONST R8 K25 0x7C140600, // 002D CALL R5 3 0x90021404, // 002E SETMBR R0 K10 R4 0x60040003, // 002F GETGBL R1 G3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h index 09e1374b2..c4062e694 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Contact' ktab size: 24, total: 31 (saved 56 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[24] = { +// compact class 'Matter_Plugin_Sensor_Contact' ktab size: 25, total: 31 (saved 48 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[25] = { /* K0 */ be_nested_str_weak(shadow_bool_value), /* K1 */ be_nested_str_weak(_parse_update_virtual), /* K2 */ be_nested_str_weak(Contact), @@ -14,21 +14,22 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[24] = { /* K6 */ be_nested_str_weak(TLV), /* K7 */ be_nested_str_weak(cluster), /* K8 */ be_nested_str_weak(attribute), - /* K9 */ be_nested_str_weak(set_or_nil), - /* K10 */ be_nested_str_weak(BOOL), - /* K11 */ be_nested_str_weak(read_attribute), - /* K12 */ be_nested_str_weak(webserver), - /* K13 */ be_nested_str_weak(web_values_prefix), - /* K14 */ be_nested_str_weak(content_send), - /* K15 */ be_nested_str_weak(Contact_X25i_X20_X25s), - /* K16 */ be_nested_str_weak(tasmota_switch_index), - /* K17 */ be_nested_str_weak(web_value_onoff), - /* K18 */ be_nested_str_weak(get_name), - /* K19 */ be_nested_str_weak(Switch), - /* K20 */ be_nested_str_weak(PREFIX), - /* K21 */ be_nested_str_weak(html_escape), - /* K22 */ be_nested_str_weak(), - /* K23 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(set_or_nil), + /* K11 */ be_nested_str_weak(BOOL), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(webserver), + /* K14 */ be_nested_str_weak(web_values_prefix), + /* K15 */ be_nested_str_weak(content_send), + /* K16 */ be_nested_str_weak(Contact_X25i_X20_X25s), + /* K17 */ be_nested_str_weak(tasmota_switch_index), + /* K18 */ be_nested_str_weak(web_value_onoff), + /* K19 */ be_nested_str_weak(get_name), + /* K20 */ be_nested_str_weak(Switch), + /* K21 */ be_nested_str_weak(PREFIX), + /* K22 */ be_nested_str_weak(html_escape), + /* K23 */ be_nested_str_weak(), + /* K24 */ be_nested_str_weak(attribute_updated), }; @@ -97,17 +98,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D03, // 0007 EQ R7 R6 K3 + 0x1C1C0D09, // 0007 EQ R7 R6 K9 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C0709, // 0009 GETMET R7 R3 K9 - 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x8C1C070A, // 0009 GETMET R7 R3 K10 + 0x8824090B, // 000A GETMBR R9 R4 K11 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0011 GETMET R7 R7 K12 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -136,14 +137,14 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4061800, // 0000 IMPORT R1 K12 - 0x8C08010D, // 0001 GETMET R2 R0 K13 + 0xA4061A00, // 0000 IMPORT R1 K13 + 0x8C08010E, // 0001 GETMET R2 R0 K14 0x7C080200, // 0002 CALL R2 1 - 0x8C08030E, // 0003 GETMET R2 R1 K14 + 0x8C08030F, // 0003 GETMET R2 R1 K15 0x60100018, // 0004 GETGBL R4 G24 - 0x5814000F, // 0005 LDCONST R5 K15 - 0x88180110, // 0006 GETMBR R6 R0 K16 - 0x8C1C0111, // 0007 GETMET R7 R0 K17 + 0x58140010, // 0005 LDCONST R5 K16 + 0x88180111, // 0006 GETMBR R6 R0 K17 + 0x8C1C0112, // 0007 GETMET R7 R0 K18 0x88240100, // 0008 GETMBR R9 R0 K0 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 @@ -172,25 +173,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4061800, // 0000 IMPORT R1 K12 - 0x8C080112, // 0001 GETMET R2 R0 K18 + 0xA4061A00, // 0000 IMPORT R1 K13 + 0x8C080113, // 0001 GETMET R2 R0 K19 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100110, // 0006 GETMBR R4 R0 K16 + 0x88100111, // 0006 GETMBR R4 R0 K17 0x7C0C0200, // 0007 CALL R3 1 - 0x000E2603, // 0008 ADD R3 K19 R3 + 0x000E2803, // 0008 ADD R3 K20 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C030E, // 000A GETMET R3 R1 K14 + 0x8C0C030F, // 000A GETMET R3 R1 K15 0x60140018, // 000B GETGBL R5 G24 - 0x88180114, // 000C GETMBR R6 R0 K20 + 0x88180115, // 000C GETMBR R6 R0 K21 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0315, // 000E GETMET R7 R1 K21 + 0x8C1C0316, // 000E GETMET R7 R1 K22 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0016, // 0012 LDCONST R7 K22 + 0x581C0017, // 0012 LDCONST R7 K23 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -217,7 +218,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_value_updated, /* name */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040117, // 0000 GETMET R1 R0 K23 + 0x8C040118, // 0000 GETMET R1 R0 K24 0x540E0044, // 0001 LDINT R3 69 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h index 7e95bcd46..e9cf7f0b2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h @@ -3,28 +3,29 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Illuminance' ktab size: 20, total: 23 (saved 24 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Illuminance[20] = { +// compact class 'Matter_Plugin_Sensor_Illuminance' ktab size: 21, total: 23 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Illuminance[21] = { /* K0 */ be_nested_str_weak(attribute_updated), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(matter), /* K3 */ be_nested_str_weak(TLV), /* K4 */ be_nested_str_weak(cluster), /* K5 */ be_nested_str_weak(attribute), - /* K6 */ be_nested_str_weak(set_or_nil), - /* K7 */ be_nested_str_weak(U2), - /* K8 */ be_nested_str_weak(shadow_value), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(math), - /* K14 */ be_const_int(0), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(set_or_nil), + /* K8 */ be_nested_str_weak(U2), + /* K9 */ be_nested_str_weak(shadow_value), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(set), + /* K12 */ be_const_int(2), + /* K13 */ be_nested_str_weak(read_attribute), + /* K14 */ be_nested_str_weak(math), /* K15 */ be_nested_str_weak(log10), - /* K16 */ be_nested_str_weak(webserver), - /* K17 */ be_nested_str_weak(web_values_prefix), - /* K18 */ be_nested_str_weak(content_send), - /* K19 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux), + /* K16 */ be_const_int(1), + /* K17 */ be_nested_str_weak(webserver), + /* K18 */ be_nested_str_weak(web_values_prefix), + /* K19 */ be_nested_str_weak(content_send), + /* K20 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux), }; @@ -82,35 +83,35 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* nam 0x541E03FF, // 0004 LDINT R7 1024 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0018, // 0006 JMPF R7 #0020 - 0x1C1C0D01, // 0007 EQ R7 R6 K1 + 0x1C1C0D06, // 0007 EQ R7 R6 K6 0x781E0007, // 0008 JMPF R7 #0011 - 0x8C1C0706, // 0009 GETMET R7 R3 K6 - 0x88240907, // 000A GETMBR R9 R4 K7 + 0x8C1C0707, // 0009 GETMET R7 R3 K7 + 0x88240908, // 000A GETMBR R9 R4 K8 0x60280009, // 000B GETGBL R10 G9 - 0x882C0108, // 000C GETMBR R11 R0 K8 + 0x882C0109, // 000C GETMBR R11 R0 K9 0x7C280200, // 000D CALL R10 1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x7002000E, // 0010 JMP #0020 - 0x1C1C0D09, // 0011 EQ R7 R6 K9 + 0x1C1C0D0A, // 0011 EQ R7 R6 K10 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C070A, // 0013 GETMET R7 R3 K10 - 0x88240907, // 0014 GETMBR R9 R4 K7 - 0x58280009, // 0015 LDCONST R10 K9 + 0x8C1C070B, // 0013 GETMET R7 R3 K11 + 0x88240908, // 0014 GETMBR R9 R4 K8 + 0x5828000A, // 0015 LDCONST R10 K10 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020006, // 0018 JMP #0020 - 0x1C1C0D0B, // 0019 EQ R7 R6 K11 + 0x1C1C0D0C, // 0019 EQ R7 R6 K12 0x781E0004, // 001A JMPF R7 #0020 - 0x8C1C070A, // 001B GETMET R7 R3 K10 - 0x88240907, // 001C GETMBR R9 R4 K7 + 0x8C1C070B, // 001B GETMET R7 R3 K11 + 0x88240908, // 001C GETMBR R9 R4 K8 0x542AFFFD, // 001D LDINT R10 65534 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x601C0003, // 0020 GETGBL R7 G3 0x5C200000, // 0021 MOVE R8 R0 0x7C1C0200, // 0022 CALL R7 1 - 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 + 0x8C1C0F0D, // 0023 GETMET R7 R7 K13 0x5C240200, // 0024 MOVE R9 R1 0x5C280400, // 0025 MOVE R10 R2 0x5C2C0600, // 0026 MOVE R11 R3 @@ -144,13 +145,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0xA40A1A00, // 0005 IMPORT R2 K13 - 0x140C030E, // 0006 LT R3 R1 K14 + 0xA40A1C00, // 0005 IMPORT R2 K14 + 0x140C0306, // 0006 LT R3 R1 K6 0x780E0001, // 0007 JMPF R3 #000A - 0x80061C00, // 0008 RET 1 K14 + 0x80060C00, // 0008 RET 1 K6 0x70020005, // 0009 JMP #0010 0x8C0C050F, // 000A GETMET R3 R2 K15 - 0x00140309, // 000B ADD R5 R1 K9 + 0x00140310, // 000B ADD R5 R1 K16 0x7C0C0400, // 000C CALL R3 2 0x5412270F, // 000D LDINT R4 10000 0x080C0604, // 000E MUL R3 R3 R4 @@ -179,14 +180,14 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA4062000, // 0000 IMPORT R1 K16 - 0x8C080111, // 0001 GETMET R2 R0 K17 + 0xA4062200, // 0000 IMPORT R1 K17 + 0x8C080112, // 0001 GETMET R2 R0 K18 0x7C080200, // 0002 CALL R2 1 - 0x8C080312, // 0003 GETMET R2 R1 K18 + 0x8C080313, // 0003 GETMET R2 R1 K19 0x60100018, // 0004 GETGBL R4 G24 - 0x58140013, // 0005 LDCONST R5 K19 + 0x58140014, // 0005 LDCONST R5 K20 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0108, // 0007 GETMBR R7 R0 K8 + 0x881C0109, // 0007 GETMBR R7 R0 K9 0x7C180200, // 0008 CALL R6 1 0x7C100400, // 0009 CALL R4 2 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h index d1d1788ec..c6c09be48 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Occupancy' ktab size: 28, total: 35 (saved 56 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[28] = { +// compact class 'Matter_Plugin_Sensor_Occupancy' ktab size: 29, total: 35 (saved 48 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[29] = { /* K0 */ be_nested_str_weak(shadow_bool_value), /* K1 */ be_nested_str_weak(_parse_update_virtual), /* K2 */ be_nested_str_weak(Occupancy), @@ -14,25 +14,26 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[28] = { /* K6 */ be_nested_str_weak(TLV), /* K7 */ be_nested_str_weak(cluster), /* K8 */ be_nested_str_weak(attribute), - /* K9 */ be_nested_str_weak(set_or_nil), - /* K10 */ be_nested_str_weak(U1), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(set), - /* K13 */ be_const_int(3), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(read_attribute), - /* K16 */ be_nested_str_weak(webserver), - /* K17 */ be_nested_str_weak(web_values_prefix), - /* K18 */ be_nested_str_weak(content_send), - /* K19 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), - /* K20 */ be_nested_str_weak(web_value_onoff), - /* K21 */ be_nested_str_weak(shadow_occupancy), - /* K22 */ be_nested_str_weak(get_name), - /* K23 */ be_nested_str_weak(Switch), - /* K24 */ be_nested_str_weak(PREFIX), - /* K25 */ be_nested_str_weak(html_escape), - /* K26 */ be_nested_str_weak(), - /* K27 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(set_or_nil), + /* K11 */ be_nested_str_weak(U1), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(set), + /* K14 */ be_const_int(3), + /* K15 */ be_const_int(2), + /* K16 */ be_nested_str_weak(read_attribute), + /* K17 */ be_nested_str_weak(webserver), + /* K18 */ be_nested_str_weak(web_values_prefix), + /* K19 */ be_nested_str_weak(content_send), + /* K20 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), + /* K21 */ be_nested_str_weak(web_value_onoff), + /* K22 */ be_nested_str_weak(shadow_occupancy), + /* K23 */ be_nested_str_weak(get_name), + /* K24 */ be_nested_str_weak(Switch), + /* K25 */ be_nested_str_weak(PREFIX), + /* K26 */ be_nested_str_weak(html_escape), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(attribute_updated), }; @@ -101,33 +102,33 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name 0x541E0405, // 0004 LDINT R7 1030 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0016, // 0006 JMPF R7 #001E - 0x1C1C0D03, // 0007 EQ R7 R6 K3 + 0x1C1C0D09, // 0007 EQ R7 R6 K9 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C0709, // 0009 GETMET R7 R3 K9 - 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x8C1C070A, // 0009 GETMET R7 R3 K10 + 0x8824090B, // 000A GETMBR R9 R4 K11 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x7002000E, // 000E JMP #001E - 0x1C1C0D0B, // 000F EQ R7 R6 K11 + 0x1C1C0D0C, // 000F EQ R7 R6 K12 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C070C, // 0011 GETMET R7 R3 K12 - 0x8824090A, // 0012 GETMBR R9 R4 K10 - 0x5828000D, // 0013 LDCONST R10 K13 + 0x8C1C070D, // 0011 GETMET R7 R3 K13 + 0x8824090B, // 0012 GETMBR R9 R4 K11 + 0x5828000E, // 0013 LDCONST R10 K14 0x7C1C0600, // 0014 CALL R7 3 0x80040E00, // 0015 RET 1 R7 0x70020006, // 0016 JMP #001E - 0x1C1C0D0E, // 0017 EQ R7 R6 K14 + 0x1C1C0D0F, // 0017 EQ R7 R6 K15 0x781E0004, // 0018 JMPF R7 #001E - 0x8C1C070C, // 0019 GETMET R7 R3 K12 - 0x8824090A, // 001A GETMBR R9 R4 K10 - 0x58280003, // 001B LDCONST R10 K3 + 0x8C1C070D, // 0019 GETMET R7 R3 K13 + 0x8824090B, // 001A GETMBR R9 R4 K11 + 0x58280009, // 001B LDCONST R10 K9 0x7C1C0600, // 001C CALL R7 3 0x80040E00, // 001D RET 1 R7 0x601C0003, // 001E GETGBL R7 G3 0x5C200000, // 001F MOVE R8 R0 0x7C1C0200, // 0020 CALL R7 1 - 0x8C1C0F0F, // 0021 GETMET R7 R7 K15 + 0x8C1C0F10, // 0021 GETMET R7 R7 K16 0x5C240200, // 0022 MOVE R9 R1 0x5C280400, // 0023 MOVE R10 R2 0x5C2C0600, // 0024 MOVE R11 R3 @@ -156,15 +157,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4062000, // 0000 IMPORT R1 K16 - 0x8C080111, // 0001 GETMET R2 R0 K17 + 0xA4062200, // 0000 IMPORT R1 K17 + 0x8C080112, // 0001 GETMET R2 R0 K18 0x7C080200, // 0002 CALL R2 1 - 0x8C080312, // 0003 GETMET R2 R1 K18 + 0x8C080313, // 0003 GETMET R2 R1 K19 0x60100018, // 0004 GETGBL R4 G24 - 0x58140013, // 0005 LDCONST R5 K19 + 0x58140014, // 0005 LDCONST R5 K20 0x88180100, // 0006 GETMBR R6 R0 K0 - 0x8C1C0114, // 0007 GETMET R7 R0 K20 - 0x88240115, // 0008 GETMBR R9 R0 K21 + 0x8C1C0115, // 0007 GETMET R7 R0 K21 + 0x88240116, // 0008 GETMBR R9 R0 K22 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 0x7C080400, // 000B CALL R2 2 @@ -192,25 +193,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* na be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4062000, // 0000 IMPORT R1 K16 - 0x8C080116, // 0001 GETMET R2 R0 K22 + 0xA4062200, // 0000 IMPORT R1 K17 + 0x8C080117, // 0001 GETMET R2 R0 K23 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 0x88100100, // 0006 GETMBR R4 R0 K0 0x7C0C0200, // 0007 CALL R3 1 - 0x000E2E03, // 0008 ADD R3 K23 R3 + 0x000E3003, // 0008 ADD R3 K24 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0312, // 000A GETMET R3 R1 K18 + 0x8C0C0313, // 000A GETMET R3 R1 K19 0x60140018, // 000B GETGBL R5 G24 - 0x88180118, // 000C GETMBR R6 R0 K24 + 0x88180119, // 000C GETMBR R6 R0 K25 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0319, // 000E GETMET R7 R1 K25 + 0x8C1C031A, // 000E GETMET R7 R1 K26 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C001A, // 0012 LDCONST R7 K26 + 0x581C001B, // 0012 LDCONST R7 K27 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -237,7 +238,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated, /* name * be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C04011B, // 0000 GETMET R1 R0 K27 + 0x8C04011C, // 0000 GETMET R1 R0 K28 0x540E0405, // 0001 LDINT R3 1030 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h index b6d971888..12dbce726 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_OnOff' ktab size: 12, total: 14 (saved 16 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[12] = { +// compact class 'Matter_Plugin_Sensor_OnOff' ktab size: 13, total: 14 (saved 8 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[13] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -17,6 +17,7 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[12] = { /* K9 */ be_nested_str_weak(read_attribute), /* K10 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s), /* K11 */ be_nested_str_weak(attribute_updated), + /* K12 */ be_const_int(0), }; @@ -119,7 +120,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_value_updated, /* name */ ( &(const binstruction[ 5]) { /* code */ 0x8C04010B, // 0000 GETMET R1 R0 K11 0x540E0005, // 0001 LDINT R3 6 - 0x58100005, // 0002 LDCONST R4 K5 + 0x5810000C, // 0002 LDCONST R4 K12 0x7C040600, // 0003 CALL R1 3 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h index f4d3878d6..d8968103b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Rain' ktab size: 24, total: 31 (saved 56 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[24] = { +// compact class 'Matter_Plugin_Sensor_Rain' ktab size: 25, total: 31 (saved 48 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[25] = { /* K0 */ be_nested_str_weak(shadow_bool_value), /* K1 */ be_nested_str_weak(_parse_update_virtual), /* K2 */ be_nested_str_weak(Rain), @@ -14,21 +14,22 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[24] = { /* K6 */ be_nested_str_weak(TLV), /* K7 */ be_nested_str_weak(cluster), /* K8 */ be_nested_str_weak(attribute), - /* K9 */ be_nested_str_weak(set), - /* K10 */ be_nested_str_weak(BOOL), - /* K11 */ be_nested_str_weak(read_attribute), - /* K12 */ be_nested_str_weak(webserver), - /* K13 */ be_nested_str_weak(web_values_prefix), - /* K14 */ be_nested_str_weak(content_send), - /* K15 */ be_nested_str_weak(Rain_X25i_X20_X25s), - /* K16 */ be_nested_str_weak(tasmota_switch_index), - /* K17 */ be_nested_str_weak(web_value_onoff), - /* K18 */ be_nested_str_weak(get_name), - /* K19 */ be_nested_str_weak(Switch), - /* K20 */ be_nested_str_weak(PREFIX), - /* K21 */ be_nested_str_weak(html_escape), - /* K22 */ be_nested_str_weak(), - /* K23 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_nested_str_weak(BOOL), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(webserver), + /* K14 */ be_nested_str_weak(web_values_prefix), + /* K15 */ be_nested_str_weak(content_send), + /* K16 */ be_nested_str_weak(Rain_X25i_X20_X25s), + /* K17 */ be_nested_str_weak(tasmota_switch_index), + /* K18 */ be_nested_str_weak(web_value_onoff), + /* K19 */ be_nested_str_weak(get_name), + /* K20 */ be_nested_str_weak(Switch), + /* K21 */ be_nested_str_weak(PREFIX), + /* K22 */ be_nested_str_weak(html_escape), + /* K23 */ be_nested_str_weak(), + /* K24 */ be_nested_str_weak(attribute_updated), }; @@ -97,17 +98,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */ 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D03, // 0007 EQ R7 R6 K3 + 0x1C1C0D09, // 0007 EQ R7 R6 K9 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C0709, // 0009 GETMET R7 R3 K9 - 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x8C1C070A, // 0009 GETMET R7 R3 K10 + 0x8824090B, // 000A GETMBR R9 R4 K11 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0011 GETMET R7 R7 K12 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -136,14 +137,14 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4061800, // 0000 IMPORT R1 K12 - 0x8C08010D, // 0001 GETMET R2 R0 K13 + 0xA4061A00, // 0000 IMPORT R1 K13 + 0x8C08010E, // 0001 GETMET R2 R0 K14 0x7C080200, // 0002 CALL R2 1 - 0x8C08030E, // 0003 GETMET R2 R1 K14 + 0x8C08030F, // 0003 GETMET R2 R1 K15 0x60100018, // 0004 GETGBL R4 G24 - 0x5814000F, // 0005 LDCONST R5 K15 - 0x88180110, // 0006 GETMBR R6 R0 K16 - 0x8C1C0111, // 0007 GETMET R7 R0 K17 + 0x58140010, // 0005 LDCONST R5 K16 + 0x88180111, // 0006 GETMBR R6 R0 K17 + 0x8C1C0112, // 0007 GETMET R7 R0 K18 0x88240100, // 0008 GETMBR R9 R0 K0 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 @@ -172,25 +173,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4061800, // 0000 IMPORT R1 K12 - 0x8C080112, // 0001 GETMET R2 R0 K18 + 0xA4061A00, // 0000 IMPORT R1 K13 + 0x8C080113, // 0001 GETMET R2 R0 K19 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100110, // 0006 GETMBR R4 R0 K16 + 0x88100111, // 0006 GETMBR R4 R0 K17 0x7C0C0200, // 0007 CALL R3 1 - 0x000E2603, // 0008 ADD R3 K19 R3 + 0x000E2803, // 0008 ADD R3 K20 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C030E, // 000A GETMET R3 R1 K14 + 0x8C0C030F, // 000A GETMET R3 R1 K15 0x60140018, // 000B GETGBL R5 G24 - 0x88180114, // 000C GETMBR R6 R0 K20 + 0x88180115, // 000C GETMBR R6 R0 K21 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0315, // 000E GETMET R7 R1 K21 + 0x8C1C0316, // 000E GETMET R7 R1 K22 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0016, // 0012 LDCONST R7 K22 + 0x581C0017, // 0012 LDCONST R7 K23 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -217,7 +218,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_value_updated, /* name */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040117, // 0000 GETMET R1 R0 K23 + 0x8C040118, // 0000 GETMET R1 R0 K24 0x540E0044, // 0001 LDINT R3 69 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h index 526dacca4..04642bc49 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h @@ -3,31 +3,33 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Temp' ktab size: 23, total: 26 (saved 24 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Temp[23] = { +// compact class 'Matter_Plugin_Sensor_Temp' ktab size: 25, total: 26 (saved 8 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Temp[25] = { /* K0 */ be_nested_str_weak(attribute_updated), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(matter), /* K3 */ be_nested_str_weak(TLV), /* K4 */ be_nested_str_weak(cluster), /* K5 */ be_nested_str_weak(attribute), - /* K6 */ be_nested_str_weak(set_or_nil), - /* K7 */ be_nested_str_weak(I2), - /* K8 */ be_nested_str_weak(shadow_value), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(BRIDGE), - /* K14 */ be_nested_str_weak(temp_unit), - /* K15 */ be_nested_str_weak(TEMP_F), - /* K16 */ be_const_real_hex(0x3FE66666), - /* K17 */ be_nested_str_weak(tasmota), - /* K18 */ be_nested_str_weak(get_option), - /* K19 */ be_nested_str_weak(webserver), - /* K20 */ be_nested_str_weak(web_values_prefix), - /* K21 */ be_nested_str_weak(content_send), - /* K22 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(set_or_nil), + /* K8 */ be_nested_str_weak(I2), + /* K9 */ be_nested_str_weak(shadow_value), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(set), + /* K12 */ be_const_int(2), + /* K13 */ be_nested_str_weak(read_attribute), + /* K14 */ be_nested_str_weak(BRIDGE), + /* K15 */ be_nested_str_weak(temp_unit), + /* K16 */ be_nested_str_weak(TEMP_F), + /* K17 */ be_const_real_hex(0x3FE66666), + /* K18 */ be_nested_str_weak(tasmota), + /* K19 */ be_nested_str_weak(get_option), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(webserver), + /* K22 */ be_nested_str_weak(web_values_prefix), + /* K23 */ be_nested_str_weak(content_send), + /* K24 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), }; @@ -85,33 +87,33 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */ 0x541E0401, // 0004 LDINT R7 1026 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0016, // 0006 JMPF R7 #001E - 0x1C1C0D01, // 0007 EQ R7 R6 K1 + 0x1C1C0D06, // 0007 EQ R7 R6 K6 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C0706, // 0009 GETMET R7 R3 K6 - 0x88240907, // 000A GETMBR R9 R4 K7 - 0x88280108, // 000B GETMBR R10 R0 K8 + 0x8C1C0707, // 0009 GETMET R7 R3 K7 + 0x88240908, // 000A GETMBR R9 R4 K8 + 0x88280109, // 000B GETMBR R10 R0 K9 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x7002000E, // 000E JMP #001E - 0x1C1C0D09, // 000F EQ R7 R6 K9 + 0x1C1C0D0A, // 000F EQ R7 R6 K10 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C070A, // 0011 GETMET R7 R3 K10 - 0x88240907, // 0012 GETMBR R9 R4 K7 + 0x8C1C070B, // 0011 GETMET R7 R3 K11 + 0x88240908, // 0012 GETMBR R9 R4 K8 0x5429EC77, // 0013 LDINT R10 -5000 0x7C1C0600, // 0014 CALL R7 3 0x80040E00, // 0015 RET 1 R7 0x70020006, // 0016 JMP #001E - 0x1C1C0D0B, // 0017 EQ R7 R6 K11 + 0x1C1C0D0C, // 0017 EQ R7 R6 K12 0x781E0004, // 0018 JMPF R7 #001E - 0x8C1C070A, // 0019 GETMET R7 R3 K10 - 0x88240907, // 001A GETMBR R9 R4 K7 + 0x8C1C070B, // 0019 GETMET R7 R3 K11 + 0x88240908, // 001A GETMBR R9 R4 K8 0x542A3A97, // 001B LDINT R10 15000 0x7C1C0600, // 001C CALL R7 3 0x80040E00, // 001D RET 1 R7 0x601C0003, // 001E GETGBL R7 G3 0x5C200000, // 001F MOVE R8 R0 0x7C1C0200, // 0020 CALL R7 1 - 0x8C1C0F0C, // 0021 GETMET R7 R7 K12 + 0x8C1C0F0D, // 0021 GETMET R7 R7 K13 0x5C240200, // 0022 MOVE R9 R1 0x5C280400, // 0023 MOVE R10 R2 0x5C2C0600, // 0024 MOVE R11 R3 @@ -140,15 +142,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[42]) { /* code */ - 0x8808010D, // 0000 GETMBR R2 R0 K13 + 0x8808010E, // 0000 GETMBR R2 R0 K14 0x780A0012, // 0001 JMPF R2 #0015 - 0x8808010E, // 0002 GETMBR R2 R0 K14 - 0x880C010F, // 0003 GETMBR R3 R0 K15 + 0x8808010F, // 0002 GETMBR R2 R0 K15 + 0x880C0110, // 0003 GETMBR R3 R0 K16 0x1C080403, // 0004 EQ R2 R2 R3 0x780A0003, // 0005 JMPF R2 #000A 0x540A001F, // 0006 LDINT R2 32 0x04080202, // 0007 SUB R2 R1 R2 - 0x0C080510, // 0008 DIV R2 R2 K16 + 0x0C080511, // 0008 DIV R2 R2 K17 0x5C040400, // 0009 MOVE R1 R2 0x4C080000, // 000A LDNIL R2 0x20080202, // 000B NE R2 R1 R2 @@ -161,15 +163,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ 0x4C080000, // 0012 LDNIL R2 0x80040400, // 0013 RET 1 R2 0x70020013, // 0014 JMP #0029 - 0xB80A2200, // 0015 GETNGBL R2 K17 - 0x8C080512, // 0016 GETMET R2 R2 K18 + 0xB80A2400, // 0015 GETNGBL R2 K18 + 0x8C080513, // 0016 GETMET R2 R2 K19 0x54120007, // 0017 LDINT R4 8 0x7C080400, // 0018 CALL R2 2 - 0x1C080509, // 0019 EQ R2 R2 K9 + 0x1C080514, // 0019 EQ R2 R2 K20 0x780A0003, // 001A JMPF R2 #001F 0x540A001F, // 001B LDINT R2 32 0x04080202, // 001C SUB R2 R1 R2 - 0x0C080510, // 001D DIV R2 R2 K16 + 0x0C080511, // 001D DIV R2 R2 K17 0x5C040400, // 001E MOVE R1 R2 0x4C080000, // 001F LDNIL R2 0x20080202, // 0020 NE R2 R1 R2 @@ -205,18 +207,18 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA4062600, // 0000 IMPORT R1 K19 - 0x8C080114, // 0001 GETMET R2 R0 K20 + 0xA4062A00, // 0000 IMPORT R1 K21 + 0x8C080116, // 0001 GETMET R2 R0 K22 0x7C080200, // 0002 CALL R2 1 - 0x8C080315, // 0003 GETMET R2 R1 K21 + 0x8C080317, // 0003 GETMET R2 R1 K23 0x60100018, // 0004 GETGBL R4 G24 - 0x58140016, // 0005 LDCONST R5 K22 - 0x88180108, // 0006 GETMBR R6 R0 K8 + 0x58140018, // 0005 LDCONST R5 K24 + 0x88180109, // 0006 GETMBR R6 R0 K9 0x4C1C0000, // 0007 LDNIL R7 0x20180C07, // 0008 NE R6 R6 R7 0x781A0005, // 0009 JMPF R6 #0010 0x6018000A, // 000A GETGBL R6 G10 - 0x881C0108, // 000B GETMBR R7 R0 K8 + 0x881C0109, // 000B GETMBR R7 R0 K9 0x7C180200, // 000C CALL R6 1 0x541E0063, // 000D LDINT R7 100 0x0C180C07, // 000E DIV R6 R6 R7 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h index 6c4974a1e..62a82dd32 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h @@ -89,17 +89,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D03, // 0007 EQ R7 R6 K3 + 0x1C1C0D09, // 0007 EQ R7 R6 K9 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C0709, // 0009 GETMET R7 R3 K9 - 0x8824090A, // 000A GETMBR R9 R4 K10 + 0x8C1C070A, // 0009 GETMET R7 R3 K10 + 0x8824090B, // 000A GETMBR R9 R4 K11 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 + 0x8C1C0F0C, // 0011 GETMET R7 R7 K12 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -209,7 +209,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_value_updated, /* name * be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040117, // 0000 GETMET R1 R0 K23 + 0x8C040118, // 0000 GETMET R1 R0 K24 0x540E0044, // 0001 LDINT R3 69 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h index 774ce0169..64a44a0a1 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_ShutterTilt' ktab size: 43, total: 65 (saved 176 bytes) -static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[43] = { +// compact class 'Matter_Plugin_ShutterTilt' ktab size: 45, total: 65 (saved 160 bytes) +static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[45] = { /* K0 */ be_nested_str_weak(tasmota), /* K1 */ be_nested_str_weak(cmd), /* K2 */ be_nested_str_weak(Status_X2013), @@ -29,25 +29,27 @@ static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[43] = { /* K21 */ be_nested_str_weak(update_tilt_min_max), /* K22 */ be_nested_str_weak(scale_uint), /* K23 */ be_nested_str_weak(shadow_shutter_tilt), - /* K24 */ be_nested_str_weak(U2), - /* K25 */ be_nested_str_weak(NULL), - /* K26 */ be_nested_str_weak(U4), - /* K27 */ be_const_int(3), - /* K28 */ be_nested_str_weak(read_attribute), - /* K29 */ be_nested_str_weak(Shutter), - /* K30 */ be_nested_str_weak(Tilt), - /* K31 */ be_nested_str_weak(attribute_updated), - /* K32 */ be_nested_str_weak(parse_sensors), - /* K33 */ be_nested_str_weak(light), - /* K34 */ be_nested_str_weak(command), - /* K35 */ be_nested_str_weak(findsubval), - /* K36 */ be_nested_str_weak(ShutterTilt), - /* K37 */ be_nested_str_weak(_X20), - /* K38 */ be_nested_str_weak(update_shadow), - /* K39 */ be_nested_str_weak(log), - /* K40 */ be_nested_str_weak(tilt_X25_X3A), - /* K41 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A), - /* K42 */ be_nested_str_weak(invoke_request), + /* K24 */ be_const_int(0), + /* K25 */ be_nested_str_weak(U2), + /* K26 */ be_nested_str_weak(NULL), + /* K27 */ be_nested_str_weak(U4), + /* K28 */ be_const_int(3), + /* K29 */ be_nested_str_weak(read_attribute), + /* K30 */ be_nested_str_weak(Shutter), + /* K31 */ be_nested_str_weak(Tilt), + /* K32 */ be_nested_str_weak(attribute_updated), + /* K33 */ be_nested_str_weak(parse_sensors), + /* K34 */ be_nested_str_weak(light), + /* K35 */ be_nested_str_weak(command), + /* K36 */ be_nested_str_weak(findsubval), + /* K37 */ be_nested_str_weak(ShutterTilt), + /* K38 */ be_const_int(1), + /* K39 */ be_nested_str_weak(_X20), + /* K40 */ be_nested_str_weak(update_shadow), + /* K41 */ be_nested_str_weak(log), + /* K42 */ be_nested_str_weak(tilt_X25_X3A), + /* K43 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A), + /* K44 */ be_nested_str_weak(invoke_request), }; @@ -165,21 +167,21 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x88240117, // 0024 GETMBR R9 R0 K23 0x88280109, // 0025 GETMBR R10 R0 K9 0x0424120A, // 0026 SUB R9 R9 R10 - 0x5828000A, // 0027 LDCONST R10 K10 + 0x58280018, // 0027 LDCONST R10 K24 0x882C010B, // 0028 GETMBR R11 R0 K11 0x88300109, // 0029 GETMBR R12 R0 K9 0x042C160C, // 002A SUB R11 R11 R12 - 0x5830000A, // 002B LDCONST R12 K10 + 0x58300018, // 002B LDCONST R12 K24 0x5436270F, // 002C LDINT R13 10000 0x7C1C0C00, // 002D CALL R7 6 0x8C200712, // 002E GETMET R8 R3 K18 - 0x88280918, // 002F GETMBR R10 R4 K24 + 0x88280919, // 002F GETMBR R10 R4 K25 0x5C2C0E00, // 0030 MOVE R11 R7 0x7C200600, // 0031 CALL R8 3 0x80041000, // 0032 RET 1 R8 0x70020004, // 0033 JMP #0039 0x8C1C0712, // 0034 GETMET R7 R3 K18 - 0x88240919, // 0035 GETMBR R9 R4 K25 + 0x8824091A, // 0035 GETMBR R9 R4 K26 0x4C280000, // 0036 LDNIL R10 0x7C1C0600, // 0037 CALL R7 3 0x80040E00, // 0038 RET 1 R7 @@ -200,21 +202,21 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x88240117, // 0047 GETMBR R9 R0 K23 0x88280109, // 0048 GETMBR R10 R0 K9 0x0424120A, // 0049 SUB R9 R9 R10 - 0x5828000A, // 004A LDCONST R10 K10 + 0x58280018, // 004A LDCONST R10 K24 0x882C010B, // 004B GETMBR R11 R0 K11 0x88300109, // 004C GETMBR R12 R0 K9 0x042C160C, // 004D SUB R11 R11 R12 - 0x5830000A, // 004E LDCONST R12 K10 + 0x58300018, // 004E LDCONST R12 K24 0x5436270F, // 004F LDINT R13 10000 0x7C1C0C00, // 0050 CALL R7 6 0x8C200712, // 0051 GETMET R8 R3 K18 - 0x88280918, // 0052 GETMBR R10 R4 K24 + 0x88280919, // 0052 GETMBR R10 R4 K25 0x5C2C0E00, // 0053 MOVE R11 R7 0x7C200600, // 0054 CALL R8 3 0x80041000, // 0055 RET 1 R8 0x70020004, // 0056 JMP #005C 0x8C1C0712, // 0057 GETMET R7 R3 K18 - 0x88240919, // 0058 GETMBR R9 R4 K25 + 0x8824091A, // 0058 GETMBR R9 R4 K26 0x4C280000, // 0059 LDNIL R10 0x7C1C0600, // 005A CALL R7 3 0x80040E00, // 005B RET 1 R7 @@ -223,9 +225,9 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x1C1C0C07, // 005E EQ R7 R6 R7 0x781E0007, // 005F JMPF R7 #0068 0x8C1C0712, // 0060 GETMET R7 R3 K18 - 0x8824091A, // 0061 GETMBR R9 R4 K26 + 0x8824091B, // 0061 GETMBR R9 R4 K27 0x542A0003, // 0062 LDINT R10 4 - 0x002A360A, // 0063 ADD R10 K27 R10 + 0x002A380A, // 0063 ADD R10 K28 R10 0x542E000F, // 0064 LDINT R11 16 0x0028140B, // 0065 ADD R10 R10 R11 0x7C1C0600, // 0066 CALL R7 3 @@ -233,7 +235,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x601C0003, // 0068 GETGBL R7 G3 0x5C200000, // 0069 MOVE R8 R0 0x7C1C0200, // 006A CALL R7 1 - 0x8C1C0F1C, // 006B GETMET R7 R7 K28 + 0x8C1C0F1D, // 006B GETMET R7 R7 K29 0x5C240200, // 006C MOVE R9 R1 0x5C280400, // 006D MOVE R10 R2 0x5C2C0600, // 006E MOVE R11 R3 @@ -266,14 +268,14 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ 0x880C0107, // 0001 GETMBR R3 R0 K7 0x000C0714, // 0002 ADD R3 R3 K20 0x7C080200, // 0003 CALL R2 1 - 0x000A3A02, // 0004 ADD R2 K29 R2 + 0x000A3C02, // 0004 ADD R2 K30 R2 0x8C0C0303, // 0005 GETMET R3 R1 K3 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E000E, // 0008 JMPF R3 #0018 0x940C0202, // 0009 GETIDX R3 R1 R2 0x8C100705, // 000A GETMET R4 R3 K5 - 0x5818001E, // 000B LDCONST R6 K30 + 0x5818001F, // 000B LDCONST R6 K31 0x7C100400, // 000C CALL R4 2 0x4C140000, // 000D LDNIL R5 0x20140805, // 000E NE R5 R4 R5 @@ -281,7 +283,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ 0x88140117, // 0010 GETMBR R5 R0 K23 0x20140805, // 0011 NE R5 R4 R5 0x78160003, // 0012 JMPF R5 #0017 - 0x8C14011F, // 0013 GETMET R5 R0 K31 + 0x8C140120, // 0013 GETMET R5 R0 K32 0x541E0101, // 0014 LDINT R7 258 0x5422000E, // 0015 LDINT R8 15 0x7C140600, // 0016 CALL R5 3 @@ -289,7 +291,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ 0x600C0003, // 0018 GETGBL R3 G3 0x5C100000, // 0019 MOVE R4 R0 0x7C0C0200, // 001A CALL R3 1 - 0x8C0C0720, // 001B GETMET R3 R3 K32 + 0x8C0C0721, // 001B GETMET R3 R3 K33 0x5C140200, // 001C MOVE R5 R1 0x7C0C0400, // 001D CALL R3 2 0x80000000, // 001E RET 0 @@ -316,11 +318,11 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[79]) { /* code */ - 0xA4124200, // 0000 IMPORT R4 K33 + 0xA4124400, // 0000 IMPORT R4 K34 0xB8161A00, // 0001 GETNGBL R5 K13 0x88140B0E, // 0002 GETMBR R5 R5 K14 0x8818070F, // 0003 GETMBR R6 R3 K15 - 0x881C0722, // 0004 GETMBR R7 R3 K34 + 0x881C0723, // 0004 GETMBR R7 R3 K35 0x54220101, // 0005 LDINT R8 258 0x1C200C08, // 0006 EQ R8 R6 R8 0x7822003D, // 0007 JMPF R8 #0046 @@ -329,8 +331,8 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ 0x54220007, // 000A LDINT R8 8 0x1C200E08, // 000B EQ R8 R7 R8 0x78220038, // 000C JMPF R8 #0046 - 0x8C200523, // 000D GETMET R8 R2 K35 - 0x5828000A, // 000E LDCONST R10 K10 + 0x8C200524, // 000D GETMET R8 R2 K36 + 0x58280018, // 000E LDCONST R10 K24 0x7C200400, // 000F CALL R8 2 0x4C240000, // 0010 LDNIL R9 0x20241009, // 0011 NE R9 R8 R9 @@ -349,9 +351,9 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ 0xB82A0000, // 001E GETNGBL R10 K0 0x8C281516, // 001F GETMET R10 R10 K22 0x5C301000, // 0020 MOVE R12 R8 - 0x5834000A, // 0021 LDCONST R13 K10 + 0x58340018, // 0021 LDCONST R13 K24 0x543A270F, // 0022 LDINT R14 10000 - 0x583C000A, // 0023 LDCONST R15 K10 + 0x583C0018, // 0023 LDCONST R15 K24 0x8840010B, // 0024 GETMBR R16 R0 K11 0x88440109, // 0025 GETMBR R17 R0 K9 0x04402011, // 0026 SUB R16 R16 R17 @@ -361,35 +363,35 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ 0x8C281501, // 002A GETMET R10 R10 K1 0x60300008, // 002B GETGBL R12 G8 0x88340107, // 002C GETMBR R13 R0 K7 - 0x00341B14, // 002D ADD R13 R13 K20 + 0x00341B26, // 002D ADD R13 R13 K38 0x7C300200, // 002E CALL R12 1 - 0x0032480C, // 002F ADD R12 K36 R12 - 0x00301925, // 0030 ADD R12 R12 K37 + 0x00324A0C, // 002F ADD R12 K37 R12 + 0x00301927, // 0030 ADD R12 R12 K39 0x60340008, // 0031 GETGBL R13 G8 0x5C381200, // 0032 MOVE R14 R9 0x7C340200, // 0033 CALL R13 1 0x0030180D, // 0034 ADD R12 R12 R13 0x50340000, // 0035 LDBOOL R13 0 0 0x7C280600, // 0036 CALL R10 3 - 0x8C280126, // 0037 GETMET R10 R0 K38 + 0x8C280128, // 0037 GETMET R10 R0 K40 0x7C280200, // 0038 CALL R10 1 0x60280008, // 0039 GETGBL R10 G8 0x5C2C1000, // 003A MOVE R11 R8 0x7C280200, // 003B CALL R10 1 - 0x002A500A, // 003C ADD R10 K40 R10 - 0x900E4E0A, // 003D SETMBR R3 K39 R10 + 0x002A540A, // 003C ADD R10 K42 R10 + 0x900E520A, // 003D SETMBR R3 K41 R10 0x70020004, // 003E JMP #0044 0x60240008, // 003F GETGBL R9 G8 0x5C281000, // 0040 MOVE R10 R8 0x7C240200, // 0041 CALL R9 1 - 0x00265209, // 0042 ADD R9 K41 R9 - 0x900E4E09, // 0043 SETMBR R3 K39 R9 + 0x00265609, // 0042 ADD R9 K43 R9 + 0x900E5209, // 0043 SETMBR R3 K41 R9 0x50240200, // 0044 LDBOOL R9 1 0 0x80041200, // 0045 RET 1 R9 0x60200003, // 0046 GETGBL R8 G3 0x5C240000, // 0047 MOVE R9 R0 0x7C200200, // 0048 CALL R8 1 - 0x8C20112A, // 0049 GETMET R8 R8 K42 + 0x8C20112C, // 0049 GETMET R8 R8 K44 0x5C280200, // 004A MOVE R10 R1 0x5C2C0400, // 004B MOVE R11 R2 0x5C300600, // 004C MOVE R12 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h index 870cb69d8..7c3b712aa 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Light3' ktab size: 68, total: 113 (saved 360 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Light3[68] = { +// compact class 'Matter_Plugin_Light3' ktab size: 72, total: 113 (saved 328 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light3[72] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -25,54 +25,58 @@ static const bvalue be_ktab_class_Matter_Plugin_Light3[68] = { /* K17 */ be_nested_str_weak(_X20sat_X3A), /* K18 */ be_nested_str_weak(invoke_request), /* K19 */ be_nested_str_weak(attribute), - /* K20 */ be_nested_str_weak(set_or_nil), - /* K21 */ be_nested_str_weak(U1), - /* K22 */ be_nested_str_weak(shadow_hue), - /* K23 */ be_nested_str_weak(shadow_sat), - /* K24 */ be_nested_str_weak(set), - /* K25 */ be_nested_str_weak(U4), - /* K26 */ be_nested_str_weak(read_attribute), - /* K27 */ be_nested_str_weak(VIRTUAL), - /* K28 */ be_nested_str_weak(BRIDGE), - /* K29 */ be_nested_str_weak(light), - /* K30 */ be_nested_str_weak(update_shadow), - /* K31 */ be_nested_str_weak(get), - /* K32 */ be_nested_str_weak(light_index), - /* K33 */ be_nested_str_weak(find), - /* K34 */ be_nested_str_weak(hue), - /* K35 */ be_nested_str_weak(sat), - /* K36 */ be_nested_str_weak(tasmota), - /* K37 */ be_nested_str_weak(scale_uint), - /* K38 */ be_nested_str_weak(attribute_updated), - /* K39 */ be_nested_str_weak(update_virtual), - /* K40 */ be_nested_str_weak(call_remote_sync), - /* K41 */ be_nested_str_weak(HSBColor1), - /* K42 */ be_nested_str_weak(parse_status), - /* K43 */ be_nested_str_weak(HSBColor2), - /* K44 */ be_nested_str_weak(init), - /* K45 */ be_nested_str_weak(webserver), - /* K46 */ be_nested_str_weak(web_values_prefix), - /* K47 */ be_nested_str_weak(content_send), - /* K48 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K49 */ be_nested_str_weak(web_value_onoff), - /* K50 */ be_nested_str_weak(shadow_onoff), - /* K51 */ be_nested_str_weak(web_value_dimmer), - /* K52 */ be_nested_str_weak(web_value_RGB), - /* K53 */ be_nested_str_weak(HSBColor), - /* K54 */ be_nested_str_weak(string), - /* K55 */ be_nested_str_weak(split), - /* K56 */ be_nested_str_weak(_X2C), - /* K57 */ be_const_int(0), - /* K58 */ be_const_int(1), - /* K59 */ be_nested_str_weak(light_state), - /* K60 */ be_nested_str_weak(set_bri), - /* K61 */ be_nested_str_weak(set_huesat), - /* K62 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), - /* K63 */ be_nested_str_weak(r), - /* K64 */ be_nested_str_weak(g), - /* K65 */ be_nested_str_weak(b), - /* K66 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), - /* K67 */ be_nested_str_weak(), + /* K20 */ be_const_int(0), + /* K21 */ be_nested_str_weak(set_or_nil), + /* K22 */ be_nested_str_weak(U1), + /* K23 */ be_nested_str_weak(shadow_hue), + /* K24 */ be_const_int(1), + /* K25 */ be_nested_str_weak(shadow_sat), + /* K26 */ be_nested_str_weak(set), + /* K27 */ be_nested_str_weak(U4), + /* K28 */ be_nested_str_weak(read_attribute), + /* K29 */ be_nested_str_weak(VIRTUAL), + /* K30 */ be_nested_str_weak(BRIDGE), + /* K31 */ be_nested_str_weak(light), + /* K32 */ be_nested_str_weak(update_shadow), + /* K33 */ be_nested_str_weak(get), + /* K34 */ be_nested_str_weak(light_index), + /* K35 */ be_nested_str_weak(find), + /* K36 */ be_nested_str_weak(hue), + /* K37 */ be_nested_str_weak(sat), + /* K38 */ be_nested_str_weak(tasmota), + /* K39 */ be_nested_str_weak(scale_uint), + /* K40 */ be_nested_str_weak(attribute_updated), + /* K41 */ be_nested_str_weak(update_virtual), + /* K42 */ be_nested_str_weak(call_remote_sync), + /* K43 */ be_nested_str_weak(HSBColor1), + /* K44 */ be_nested_str_weak(parse_status), + /* K45 */ be_nested_str_weak(HSBColor2), + /* K46 */ be_nested_str_weak(init), + /* K47 */ be_const_int(0), + /* K48 */ be_nested_str_weak(webserver), + /* K49 */ be_nested_str_weak(web_values_prefix), + /* K50 */ be_nested_str_weak(content_send), + /* K51 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K52 */ be_nested_str_weak(web_value_onoff), + /* K53 */ be_nested_str_weak(shadow_onoff), + /* K54 */ be_nested_str_weak(web_value_dimmer), + /* K55 */ be_nested_str_weak(web_value_RGB), + /* K56 */ be_nested_str_weak(HSBColor), + /* K57 */ be_nested_str_weak(string), + /* K58 */ be_nested_str_weak(split), + /* K59 */ be_nested_str_weak(_X2C), + /* K60 */ be_const_int(0), + /* K61 */ be_const_int(1), + /* K62 */ be_nested_str_weak(light_state), + /* K63 */ be_const_int(3), + /* K64 */ be_nested_str_weak(set_bri), + /* K65 */ be_nested_str_weak(set_huesat), + /* K66 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), + /* K67 */ be_nested_str_weak(r), + /* K68 */ be_nested_str_weak(g), + /* K69 */ be_nested_str_weak(b), + /* K70 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), + /* K71 */ be_nested_str_weak(), }; @@ -248,88 +252,88 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x781E004F, // 0006 JMPF R7 #0057 0x8C1C0104, // 0007 GETMET R7 R0 K4 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D05, // 0009 EQ R7 R6 K5 + 0x1C1C0D14, // 0009 EQ R7 R6 K20 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C0714, // 000B GETMET R7 R3 K20 - 0x88240915, // 000C GETMBR R9 R4 K21 - 0x88280116, // 000D GETMBR R10 R0 K22 + 0x8C1C0715, // 000B GETMET R7 R3 K21 + 0x88240916, // 000C GETMBR R9 R4 K22 + 0x88280117, // 000D GETMBR R10 R0 K23 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020045, // 0010 JMP #0057 - 0x1C1C0D0C, // 0011 EQ R7 R6 K12 + 0x1C1C0D18, // 0011 EQ R7 R6 K24 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0714, // 0013 GETMET R7 R3 K20 - 0x88240915, // 0014 GETMBR R9 R4 K21 - 0x88280117, // 0015 GETMBR R10 R0 K23 + 0x8C1C0715, // 0013 GETMET R7 R3 K21 + 0x88240916, // 0014 GETMBR R9 R4 K22 + 0x88280119, // 0015 GETMBR R10 R0 K25 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x7002003D, // 0018 JMP #0057 0x541E0006, // 0019 LDINT R7 7 0x1C1C0C07, // 001A EQ R7 R6 R7 0x781E0005, // 001B JMPF R7 #0022 - 0x8C1C0718, // 001C GETMET R7 R3 K24 - 0x88240915, // 001D GETMBR R9 R4 K21 - 0x58280005, // 001E LDCONST R10 K5 + 0x8C1C071A, // 001C GETMET R7 R3 K26 + 0x88240916, // 001D GETMBR R9 R4 K22 + 0x58280014, // 001E LDCONST R10 K20 0x7C1C0600, // 001F CALL R7 3 0x80040E00, // 0020 RET 1 R7 0x70020034, // 0021 JMP #0057 0x541E0007, // 0022 LDINT R7 8 0x1C1C0C07, // 0023 EQ R7 R6 R7 0x781E0005, // 0024 JMPF R7 #002B - 0x8C1C0718, // 0025 GETMET R7 R3 K24 - 0x88240915, // 0026 GETMBR R9 R4 K21 - 0x58280005, // 0027 LDCONST R10 K5 + 0x8C1C071A, // 0025 GETMET R7 R3 K26 + 0x88240916, // 0026 GETMBR R9 R4 K22 + 0x58280014, // 0027 LDCONST R10 K20 0x7C1C0600, // 0028 CALL R7 3 0x80040E00, // 0029 RET 1 R7 0x7002002B, // 002A JMP #0057 0x541E000E, // 002B LDINT R7 15 0x1C1C0C07, // 002C EQ R7 R6 R7 0x781E0005, // 002D JMPF R7 #0034 - 0x8C1C0718, // 002E GETMET R7 R3 K24 - 0x88240915, // 002F GETMBR R9 R4 K21 - 0x58280005, // 0030 LDCONST R10 K5 + 0x8C1C071A, // 002E GETMET R7 R3 K26 + 0x88240916, // 002F GETMBR R9 R4 K22 + 0x58280014, // 0030 LDCONST R10 K20 0x7C1C0600, // 0031 CALL R7 3 0x80040E00, // 0032 RET 1 R7 0x70020022, // 0033 JMP #0057 0x541E4000, // 0034 LDINT R7 16385 0x1C1C0C07, // 0035 EQ R7 R6 R7 0x781E0005, // 0036 JMPF R7 #003D - 0x8C1C0718, // 0037 GETMET R7 R3 K24 - 0x88240915, // 0038 GETMBR R9 R4 K21 - 0x58280005, // 0039 LDCONST R10 K5 + 0x8C1C071A, // 0037 GETMET R7 R3 K26 + 0x88240916, // 0038 GETMBR R9 R4 K22 + 0x58280014, // 0039 LDCONST R10 K20 0x7C1C0600, // 003A CALL R7 3 0x80040E00, // 003B RET 1 R7 0x70020019, // 003C JMP #0057 0x541E4009, // 003D LDINT R7 16394 0x1C1C0C07, // 003E EQ R7 R6 R7 0x781E0005, // 003F JMPF R7 #0046 - 0x8C1C0718, // 0040 GETMET R7 R3 K24 - 0x88240915, // 0041 GETMBR R9 R4 K21 - 0x5828000C, // 0042 LDCONST R10 K12 + 0x8C1C071A, // 0040 GETMET R7 R3 K26 + 0x88240916, // 0041 GETMBR R9 R4 K22 + 0x58280018, // 0042 LDCONST R10 K24 0x7C1C0600, // 0043 CALL R7 3 0x80040E00, // 0044 RET 1 R7 0x70020010, // 0045 JMP #0057 0x541E000F, // 0046 LDINT R7 16 0x1C1C0C07, // 0047 EQ R7 R6 R7 0x781E0005, // 0048 JMPF R7 #004F - 0x8C1C0718, // 0049 GETMET R7 R3 K24 - 0x88240915, // 004A GETMBR R9 R4 K21 - 0x58280005, // 004B LDCONST R10 K5 + 0x8C1C071A, // 0049 GETMET R7 R3 K26 + 0x88240916, // 004A GETMBR R9 R4 K22 + 0x58280014, // 004B LDCONST R10 K20 0x7C1C0600, // 004C CALL R7 3 0x80040E00, // 004D RET 1 R7 0x70020007, // 004E JMP #0057 0x541EFFFB, // 004F LDINT R7 65532 0x1C1C0C07, // 0050 EQ R7 R6 R7 0x781E0004, // 0051 JMPF R7 #0057 - 0x8C1C0718, // 0052 GETMET R7 R3 K24 - 0x88240919, // 0053 GETMBR R9 R4 K25 - 0x5828000C, // 0054 LDCONST R10 K12 + 0x8C1C071A, // 0052 GETMET R7 R3 K26 + 0x8824091B, // 0053 GETMBR R9 R4 K27 + 0x58280018, // 0054 LDCONST R10 K24 0x7C1C0600, // 0055 CALL R7 3 0x80040E00, // 0056 RET 1 R7 0x601C0003, // 0057 GETGBL R7 G3 0x5C200000, // 0058 MOVE R8 R0 0x7C1C0200, // 0059 CALL R7 1 - 0x8C1C0F1A, // 005A GETMET R7 R7 K26 + 0x8C1C0F1C, // 005A GETMET R7 R7 K28 0x5C240200, // 005B MOVE R9 R1 0x5C280400, // 005C MOVE R10 R2 0x5C2C0600, // 005D MOVE R11 R3 @@ -358,35 +362,35 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ - 0x8804011B, // 0000 GETMBR R1 R0 K27 + 0x8804011D, // 0000 GETMBR R1 R0 K29 0x74060042, // 0001 JMPT R1 #0045 - 0x8804011C, // 0002 GETMBR R1 R0 K28 + 0x8804011E, // 0002 GETMBR R1 R0 K30 0x74060040, // 0003 JMPT R1 #0045 - 0xA4063A00, // 0004 IMPORT R1 K29 + 0xA4063E00, // 0004 IMPORT R1 K31 0x60080003, // 0005 GETGBL R2 G3 0x5C0C0000, // 0006 MOVE R3 R0 0x7C080200, // 0007 CALL R2 1 - 0x8C08051E, // 0008 GETMET R2 R2 K30 + 0x8C080520, // 0008 GETMET R2 R2 K32 0x7C080200, // 0009 CALL R2 1 - 0x8C08031F, // 000A GETMET R2 R1 K31 - 0x88100120, // 000B GETMBR R4 R0 K32 + 0x8C080321, // 000A GETMET R2 R1 K33 + 0x88100122, // 000B GETMBR R4 R0 K34 0x7C080400, // 000C CALL R2 2 0x4C0C0000, // 000D LDNIL R3 0x200C0403, // 000E NE R3 R2 R3 0x780E0033, // 000F JMPF R3 #0044 - 0x8C0C0521, // 0010 GETMET R3 R2 K33 - 0x58140022, // 0011 LDCONST R5 K34 + 0x8C0C0523, // 0010 GETMET R3 R2 K35 + 0x58140024, // 0011 LDCONST R5 K36 0x4C180000, // 0012 LDNIL R6 0x7C0C0600, // 0013 CALL R3 3 - 0x8C100521, // 0014 GETMET R4 R2 K33 - 0x58180023, // 0015 LDCONST R6 K35 + 0x8C100523, // 0014 GETMET R4 R2 K35 + 0x58180025, // 0015 LDCONST R6 K37 0x4C1C0000, // 0016 LDNIL R7 0x7C100600, // 0017 CALL R4 3 0x4C140000, // 0018 LDNIL R5 0x20140605, // 0019 NE R5 R3 R5 0x78160009, // 001A JMPF R5 #0025 - 0xB8164800, // 001B GETNGBL R5 K36 - 0x8C140B25, // 001C GETMET R5 R5 K37 + 0xB8164C00, // 001B GETNGBL R5 K38 + 0x8C140B27, // 001C GETMET R5 R5 K39 0x5C1C0600, // 001D MOVE R7 R3 0x58200005, // 001E LDCONST R8 K5 0x54260167, // 001F LDINT R9 360 @@ -395,12 +399,12 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ 0x7C140C00, // 0022 CALL R5 6 0x5C0C0A00, // 0023 MOVE R3 R5 0x70020000, // 0024 JMP #0026 - 0x880C0116, // 0025 GETMBR R3 R0 K22 + 0x880C0117, // 0025 GETMBR R3 R0 K23 0x4C140000, // 0026 LDNIL R5 0x20140805, // 0027 NE R5 R4 R5 0x78160009, // 0028 JMPF R5 #0033 - 0xB8164800, // 0029 GETNGBL R5 K36 - 0x8C140B25, // 002A GETMET R5 R5 K37 + 0xB8164C00, // 0029 GETNGBL R5 K38 + 0x8C140B27, // 002A GETMET R5 R5 K39 0x5C1C0800, // 002B MOVE R7 R4 0x58200005, // 002C LDCONST R8 K5 0x542600FE, // 002D LDINT R9 255 @@ -409,28 +413,28 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ 0x7C140C00, // 0030 CALL R5 6 0x5C100A00, // 0031 MOVE R4 R5 0x70020000, // 0032 JMP #0034 - 0x88100117, // 0033 GETMBR R4 R0 K23 - 0x88140116, // 0034 GETMBR R5 R0 K22 + 0x88100119, // 0033 GETMBR R4 R0 K25 + 0x88140117, // 0034 GETMBR R5 R0 K23 0x20140605, // 0035 NE R5 R3 R5 0x78160004, // 0036 JMPF R5 #003C - 0x8C140126, // 0037 GETMET R5 R0 K38 + 0x8C140128, // 0037 GETMET R5 R0 K40 0x541E02FF, // 0038 LDINT R7 768 0x58200005, // 0039 LDCONST R8 K5 0x7C140600, // 003A CALL R5 3 - 0x90022C03, // 003B SETMBR R0 K22 R3 - 0x88140117, // 003C GETMBR R5 R0 K23 + 0x90022E03, // 003B SETMBR R0 K23 R3 + 0x88140119, // 003C GETMBR R5 R0 K25 0x20140805, // 003D NE R5 R4 R5 0x78160004, // 003E JMPF R5 #0044 - 0x8C140126, // 003F GETMET R5 R0 K38 + 0x8C140128, // 003F GETMET R5 R0 K40 0x541E02FF, // 0040 LDINT R7 768 - 0x5820000C, // 0041 LDCONST R8 K12 + 0x58200018, // 0041 LDCONST R8 K24 0x7C140600, // 0042 CALL R5 3 - 0x90022E04, // 0043 SETMBR R0 K23 R4 + 0x90023204, // 0043 SETMBR R0 K25 R4 0x70020004, // 0044 JMP #004A 0x60040003, // 0045 GETGBL R1 G3 0x5C080000, // 0046 MOVE R2 R0 0x7C040200, // 0047 CALL R1 1 - 0x8C04031E, // 0048 GETMET R1 R1 K30 + 0x8C040320, // 0048 GETMET R1 R1 K32 0x7C040200, // 0049 CALL R1 1 0x80000000, // 004A RET 0 }) @@ -457,12 +461,12 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0321, // 0001 GETMET R3 R1 K33 + 0x8C0C0323, // 0001 GETMET R3 R1 K35 0x5814000B, // 0002 LDCONST R5 K11 0x7C0C0400, // 0003 CALL R3 2 0x7C080200, // 0004 CALL R2 1 0x600C0009, // 0005 GETGBL R3 G9 - 0x8C100321, // 0006 GETMET R4 R1 K33 + 0x8C100323, // 0006 GETMET R4 R1 K35 0x58180010, // 0007 LDCONST R6 K16 0x7C100400, // 0008 CALL R4 2 0x7C0C0200, // 0009 CALL R3 1 @@ -479,7 +483,7 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ 0x60100003, // 0014 GETGBL R4 G3 0x5C140000, // 0015 MOVE R5 R0 0x7C100200, // 0016 CALL R4 1 - 0x8C100927, // 0017 GETMET R4 R4 K39 + 0x8C100929, // 0017 GETMET R4 R4 K41 0x5C180200, // 0018 MOVE R6 R1 0x7C100400, // 0019 CALL R4 2 0x80000000, // 001A RET 0 @@ -526,83 +530,83 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x240C0403, // 0011 GT R3 R2 R3 0x780E0000, // 0012 JMPF R3 #0014 0x540A00FD, // 0013 LDINT R2 254 - 0x880C011C, // 0014 GETMBR R3 R0 K28 + 0x880C011E, // 0014 GETMBR R3 R0 K30 0x780E002C, // 0015 JMPF R3 #0043 0x4C0C0000, // 0016 LDNIL R3 0x200C0203, // 0017 NE R3 R1 R3 0x780E0012, // 0018 JMPF R3 #002C - 0xB80E4800, // 0019 GETNGBL R3 K36 - 0x8C0C0725, // 001A GETMET R3 R3 K37 + 0xB80E4C00, // 0019 GETNGBL R3 K38 + 0x8C0C0727, // 001A GETMET R3 R3 K39 0x5C140200, // 001B MOVE R5 R1 0x58180005, // 001C LDCONST R6 K5 0x541E00FD, // 001D LDINT R7 254 0x58200005, // 001E LDCONST R8 K5 0x54260167, // 001F LDINT R9 360 0x7C0C0C00, // 0020 CALL R3 6 - 0x8C100128, // 0021 GETMET R4 R0 K40 - 0x58180029, // 0022 LDCONST R6 K41 + 0x8C10012A, // 0021 GETMET R4 R0 K42 + 0x5818002B, // 0022 LDCONST R6 K43 0x5C1C0600, // 0023 MOVE R7 R3 0x7C100600, // 0024 CALL R4 3 0x4C140000, // 0025 LDNIL R5 0x20140805, // 0026 NE R5 R4 R5 0x78160003, // 0027 JMPF R5 #002C - 0x8C14012A, // 0028 GETMET R5 R0 K42 + 0x8C14012C, // 0028 GETMET R5 R0 K44 0x5C1C0800, // 0029 MOVE R7 R4 0x5422000A, // 002A LDINT R8 11 0x7C140600, // 002B CALL R5 3 0x4C0C0000, // 002C LDNIL R3 0x200C0403, // 002D NE R3 R2 R3 0x780E0012, // 002E JMPF R3 #0042 - 0xB80E4800, // 002F GETNGBL R3 K36 - 0x8C0C0725, // 0030 GETMET R3 R3 K37 + 0xB80E4C00, // 002F GETNGBL R3 K38 + 0x8C0C0727, // 0030 GETMET R3 R3 K39 0x5C140400, // 0031 MOVE R5 R2 0x58180005, // 0032 LDCONST R6 K5 0x541E00FD, // 0033 LDINT R7 254 0x58200005, // 0034 LDCONST R8 K5 0x54260063, // 0035 LDINT R9 100 0x7C0C0C00, // 0036 CALL R3 6 - 0x8C100128, // 0037 GETMET R4 R0 K40 - 0x5818002B, // 0038 LDCONST R6 K43 + 0x8C10012A, // 0037 GETMET R4 R0 K42 + 0x5818002D, // 0038 LDCONST R6 K45 0x5C1C0600, // 0039 MOVE R7 R3 0x7C100600, // 003A CALL R4 3 0x4C140000, // 003B LDNIL R5 0x20140805, // 003C NE R5 R4 R5 0x78160003, // 003D JMPF R5 #0042 - 0x8C14012A, // 003E GETMET R5 R0 K42 + 0x8C14012C, // 003E GETMET R5 R0 K44 0x5C1C0800, // 003F MOVE R7 R4 0x5422000A, // 0040 LDINT R8 11 0x7C140600, // 0041 CALL R5 3 0x70020055, // 0042 JMP #0099 - 0x880C011B, // 0043 GETMBR R3 R0 K27 + 0x880C011D, // 0043 GETMBR R3 R0 K29 0x780E0016, // 0044 JMPF R3 #005C 0x4C0C0000, // 0045 LDNIL R3 0x200C0203, // 0046 NE R3 R1 R3 0x780E0007, // 0047 JMPF R3 #0050 - 0x880C0116, // 0048 GETMBR R3 R0 K22 + 0x880C0117, // 0048 GETMBR R3 R0 K23 0x200C0203, // 0049 NE R3 R1 R3 0x780E0004, // 004A JMPF R3 #0050 - 0x8C0C0126, // 004B GETMET R3 R0 K38 + 0x8C0C0128, // 004B GETMET R3 R0 K40 0x541602FF, // 004C LDINT R5 768 0x58180005, // 004D LDCONST R6 K5 0x7C0C0600, // 004E CALL R3 3 - 0x90022C01, // 004F SETMBR R0 K22 R1 + 0x90022E01, // 004F SETMBR R0 K23 R1 0x4C0C0000, // 0050 LDNIL R3 0x200C0403, // 0051 NE R3 R2 R3 0x780E0007, // 0052 JMPF R3 #005B - 0x880C0117, // 0053 GETMBR R3 R0 K23 + 0x880C0119, // 0053 GETMBR R3 R0 K25 0x200C0403, // 0054 NE R3 R2 R3 0x780E0004, // 0055 JMPF R3 #005B - 0x8C0C0126, // 0056 GETMET R3 R0 K38 + 0x8C0C0128, // 0056 GETMET R3 R0 K40 0x541602FF, // 0057 LDINT R5 768 - 0x5818000C, // 0058 LDCONST R6 K12 + 0x58180018, // 0058 LDCONST R6 K24 0x7C0C0600, // 0059 CALL R3 3 - 0x90022E02, // 005A SETMBR R0 K23 R2 + 0x90023202, // 005A SETMBR R0 K25 R2 0x7002003C, // 005B JMP #0099 0x4C0C0000, // 005C LDNIL R3 0x200C0203, // 005D NE R3 R1 R3 0x780E0008, // 005E JMPF R3 #0068 - 0xB80E4800, // 005F GETNGBL R3 K36 - 0x8C0C0725, // 0060 GETMET R3 R3 K37 + 0xB80E4C00, // 005F GETNGBL R3 K38 + 0x8C0C0727, // 0060 GETMET R3 R3 K39 0x5C140200, // 0061 MOVE R5 R1 0x58180005, // 0062 LDCONST R6 K5 0x541E00FD, // 0063 LDINT R7 254 @@ -614,8 +618,8 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x4C100000, // 0069 LDNIL R4 0x20100404, // 006A NE R4 R2 R4 0x78120008, // 006B JMPF R4 #0075 - 0xB8124800, // 006C GETNGBL R4 K36 - 0x8C100925, // 006D GETMET R4 R4 K37 + 0xB8124C00, // 006C GETNGBL R4 K38 + 0x8C100927, // 006D GETMET R4 R4 K39 0x5C180400, // 006E MOVE R6 R2 0x581C0005, // 006F LDCONST R7 K5 0x542200FD, // 0070 LDINT R8 254 @@ -630,34 +634,34 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x4C140000, // 0079 LDNIL R5 0x20140805, // 007A NE R5 R4 R5 0x78160008, // 007B JMPF R5 #0085 - 0xB8163A00, // 007C GETNGBL R5 K29 - 0x8C140B18, // 007D GETMET R5 R5 K24 + 0xB8163E00, // 007C GETNGBL R5 K31 + 0x8C140B1A, // 007D GETMET R5 R5 K26 0x601C0013, // 007E GETGBL R7 G19 0x7C1C0000, // 007F CALL R7 0 - 0x981E4403, // 0080 SETIDX R7 K34 R3 - 0x981E4604, // 0081 SETIDX R7 K35 R4 - 0x88200120, // 0082 GETMBR R8 R0 K32 + 0x981E4803, // 0080 SETIDX R7 K36 R3 + 0x981E4A04, // 0081 SETIDX R7 K37 R4 + 0x88200122, // 0082 GETMBR R8 R0 K34 0x7C140600, // 0083 CALL R5 3 0x70020011, // 0084 JMP #0097 0x4C140000, // 0085 LDNIL R5 0x20140605, // 0086 NE R5 R3 R5 0x78160007, // 0087 JMPF R5 #0090 - 0xB8163A00, // 0088 GETNGBL R5 K29 - 0x8C140B18, // 0089 GETMET R5 R5 K24 + 0xB8163E00, // 0088 GETNGBL R5 K31 + 0x8C140B1A, // 0089 GETMET R5 R5 K26 0x601C0013, // 008A GETGBL R7 G19 0x7C1C0000, // 008B CALL R7 0 - 0x981E4403, // 008C SETIDX R7 K34 R3 - 0x88200120, // 008D GETMBR R8 R0 K32 + 0x981E4803, // 008C SETIDX R7 K36 R3 + 0x88200122, // 008D GETMBR R8 R0 K34 0x7C140600, // 008E CALL R5 3 0x70020006, // 008F JMP #0097 - 0xB8163A00, // 0090 GETNGBL R5 K29 - 0x8C140B18, // 0091 GETMET R5 R5 K24 + 0xB8163E00, // 0090 GETNGBL R5 K31 + 0x8C140B1A, // 0091 GETMET R5 R5 K26 0x601C0013, // 0092 GETGBL R7 G19 0x7C1C0000, // 0093 CALL R7 0 - 0x981E4604, // 0094 SETIDX R7 K35 R4 - 0x88200120, // 0095 GETMBR R8 R0 K32 + 0x981E4A04, // 0094 SETIDX R7 K37 R4 + 0x88200122, // 0095 GETMBR R8 R0 K34 0x7C140600, // 0096 CALL R5 3 - 0x8C14011E, // 0097 GETMET R5 R0 K30 + 0x8C140120, // 0097 GETMET R5 R0 K32 0x7C140200, // 0098 CALL R5 1 0x80000000, // 0099 RET 0 }) @@ -686,13 +690,13 @@ be_local_closure(class_Matter_Plugin_Light3_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C10092C, // 0003 GETMET R4 R4 K44 + 0x8C10092E, // 0003 GETMET R4 R4 K46 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x90022D05, // 0008 SETMBR R0 K22 K5 - 0x90022F05, // 0009 SETMBR R0 K23 K5 + 0x90022F2F, // 0008 SETMBR R0 K23 K47 + 0x9002332F, // 0009 SETMBR R0 K25 K47 0x80000000, // 000A RET 0 }) ) @@ -717,18 +721,18 @@ be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0xA4065A00, // 0000 IMPORT R1 K45 - 0x8C08012E, // 0001 GETMET R2 R0 K46 + 0xA4066000, // 0000 IMPORT R1 K48 + 0x8C080131, // 0001 GETMET R2 R0 K49 0x7C080200, // 0002 CALL R2 1 - 0x8C08032F, // 0003 GETMET R2 R1 K47 + 0x8C080332, // 0003 GETMET R2 R1 K50 0x60100018, // 0004 GETGBL R4 G24 - 0x58140030, // 0005 LDCONST R5 K48 - 0x8C180131, // 0006 GETMET R6 R0 K49 - 0x88200132, // 0007 GETMBR R8 R0 K50 + 0x58140033, // 0005 LDCONST R5 K51 + 0x8C180134, // 0006 GETMET R6 R0 K52 + 0x88200135, // 0007 GETMBR R8 R0 K53 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0133, // 0009 GETMET R7 R0 K51 + 0x8C1C0136, // 0009 GETMET R7 R0 K54 0x7C1C0200, // 000A CALL R7 1 - 0x8C200134, // 000B GETMET R8 R0 K52 + 0x8C200137, // 000B GETMET R8 R0 K55 0x7C200200, // 000C CALL R8 1 0x7C100800, // 000D CALL R4 4 0x7C080400, // 000E CALL R2 2 @@ -759,72 +763,72 @@ be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C072A, // 0003 GETMET R3 R3 K42 + 0x8C0C072C, // 0003 GETMET R3 R3 K44 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 0x540E000A, // 0007 LDINT R3 11 0x1C0C0403, // 0008 EQ R3 R2 R3 0x780E003A, // 0009 JMPF R3 #0045 - 0x8C0C0321, // 000A GETMET R3 R1 K33 - 0x58140035, // 000B LDCONST R5 K53 + 0x8C0C0323, // 000A GETMET R3 R1 K35 + 0x58140038, // 000B LDCONST R5 K56 0x7C0C0400, // 000C CALL R3 2 0x780E0036, // 000D JMPF R3 #0045 - 0xA4126C00, // 000E IMPORT R4 K54 - 0x8C140937, // 000F GETMET R5 R4 K55 + 0xA4127200, // 000E IMPORT R4 K57 + 0x8C14093A, // 000F GETMET R5 R4 K58 0x5C1C0600, // 0010 MOVE R7 R3 - 0x58200038, // 0011 LDCONST R8 K56 + 0x5820003B, // 0011 LDCONST R8 K59 0x7C140600, // 0012 CALL R5 3 0x60180009, // 0013 GETGBL R6 G9 - 0x941C0B39, // 0014 GETIDX R7 R5 K57 + 0x941C0B3C, // 0014 GETIDX R7 R5 K60 0x7C180200, // 0015 CALL R6 1 0x601C0009, // 0016 GETGBL R7 G9 - 0x94200B3A, // 0017 GETIDX R8 R5 K58 + 0x94200B3D, // 0017 GETIDX R8 R5 K61 0x7C1C0200, // 0018 CALL R7 1 0x4C200000, // 0019 LDNIL R8 0x20200C08, // 001A NE R8 R6 R8 0x78220009, // 001B JMPF R8 #0026 - 0xB8224800, // 001C GETNGBL R8 K36 - 0x8C201125, // 001D GETMET R8 R8 K37 + 0xB8224C00, // 001C GETNGBL R8 K38 + 0x8C201127, // 001D GETMET R8 R8 K39 0x5C280C00, // 001E MOVE R10 R6 - 0x582C0039, // 001F LDCONST R11 K57 + 0x582C003C, // 001F LDCONST R11 K60 0x54320167, // 0020 LDINT R12 360 - 0x58340039, // 0021 LDCONST R13 K57 + 0x5834003C, // 0021 LDCONST R13 K60 0x543A00FD, // 0022 LDINT R14 254 0x7C200C00, // 0023 CALL R8 6 0x5C181000, // 0024 MOVE R6 R8 0x70020000, // 0025 JMP #0027 - 0x88180116, // 0026 GETMBR R6 R0 K22 + 0x88180117, // 0026 GETMBR R6 R0 K23 0x4C200000, // 0027 LDNIL R8 0x20200E08, // 0028 NE R8 R7 R8 0x78220009, // 0029 JMPF R8 #0034 - 0xB8224800, // 002A GETNGBL R8 K36 - 0x8C201125, // 002B GETMET R8 R8 K37 + 0xB8224C00, // 002A GETNGBL R8 K38 + 0x8C201127, // 002B GETMET R8 R8 K39 0x5C280E00, // 002C MOVE R10 R7 - 0x582C0039, // 002D LDCONST R11 K57 + 0x582C003C, // 002D LDCONST R11 K60 0x54320063, // 002E LDINT R12 100 - 0x58340039, // 002F LDCONST R13 K57 + 0x5834003C, // 002F LDCONST R13 K60 0x543A00FD, // 0030 LDINT R14 254 0x7C200C00, // 0031 CALL R8 6 0x5C1C1000, // 0032 MOVE R7 R8 0x70020000, // 0033 JMP #0035 - 0x881C0117, // 0034 GETMBR R7 R0 K23 - 0x88200116, // 0035 GETMBR R8 R0 K22 + 0x881C0119, // 0034 GETMBR R7 R0 K25 + 0x88200117, // 0035 GETMBR R8 R0 K23 0x20200C08, // 0036 NE R8 R6 R8 0x78220004, // 0037 JMPF R8 #003D - 0x8C200126, // 0038 GETMET R8 R0 K38 + 0x8C200128, // 0038 GETMET R8 R0 K40 0x542A02FF, // 0039 LDINT R10 768 - 0x582C0039, // 003A LDCONST R11 K57 + 0x582C003C, // 003A LDCONST R11 K60 0x7C200600, // 003B CALL R8 3 - 0x90022C06, // 003C SETMBR R0 K22 R6 - 0x88200117, // 003D GETMBR R8 R0 K23 + 0x90022E06, // 003C SETMBR R0 K23 R6 + 0x88200119, // 003D GETMBR R8 R0 K25 0x20200E08, // 003E NE R8 R7 R8 0x78220004, // 003F JMPF R8 #0045 - 0x8C200126, // 0040 GETMET R8 R0 K38 + 0x8C200128, // 0040 GETMET R8 R0 K40 0x542A02FF, // 0041 LDINT R10 768 - 0x582C003A, // 0042 LDCONST R11 K58 + 0x582C003D, // 0042 LDCONST R11 K61 0x7C200600, // 0043 CALL R8 3 - 0x90022E07, // 0044 SETMBR R0 K23 R7 + 0x90023207, // 0044 SETMBR R0 K25 R7 0x80000000, // 0045 RET 0 }) ) @@ -849,32 +853,32 @@ be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ be_str_weak(web_value_RGB), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x88040117, // 0000 GETMBR R1 R0 K23 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060027, // 0003 JMPF R1 #002C - 0x88040117, // 0004 GETMBR R1 R0 K23 + 0x88040119, // 0004 GETMBR R1 R0 K25 0x4C080000, // 0005 LDNIL R2 0x20040202, // 0006 NE R1 R1 R2 0x78060023, // 0007 JMPF R1 #002C - 0xB8067600, // 0008 GETNGBL R1 K59 - 0x5808000E, // 0009 LDCONST R2 K14 + 0xB8067C00, // 0008 GETNGBL R1 K62 + 0x5808003F, // 0009 LDCONST R2 K63 0x7C040200, // 000A CALL R1 1 - 0x8C08033C, // 000B GETMET R2 R1 K60 + 0x8C080340, // 000B GETMET R2 R1 K64 0x541200FE, // 000C LDINT R4 255 0x7C080400, // 000D CALL R2 2 - 0x8C08033D, // 000E GETMET R2 R1 K61 - 0xB8124800, // 000F GETNGBL R4 K36 - 0x8C100925, // 0010 GETMET R4 R4 K37 - 0x88180116, // 0011 GETMBR R6 R0 K22 + 0x8C080341, // 000E GETMET R2 R1 K65 + 0xB8124C00, // 000F GETNGBL R4 K38 + 0x8C100927, // 0010 GETMET R4 R4 K39 + 0x88180117, // 0011 GETMBR R6 R0 K23 0x581C0005, // 0012 LDCONST R7 K5 0x542200FD, // 0013 LDINT R8 254 0x58240005, // 0014 LDCONST R9 K5 0x542A0167, // 0015 LDINT R10 360 0x7C100C00, // 0016 CALL R4 6 - 0xB8164800, // 0017 GETNGBL R5 K36 - 0x8C140B25, // 0018 GETMET R5 R5 K37 - 0x881C0117, // 0019 GETMBR R7 R0 K23 + 0xB8164C00, // 0017 GETNGBL R5 K38 + 0x8C140B27, // 0018 GETMET R5 R5 K39 + 0x881C0119, // 0019 GETMBR R7 R0 K25 0x58200005, // 001A LDCONST R8 K5 0x542600FD, // 001B LDINT R9 254 0x58280005, // 001C LDCONST R10 K5 @@ -882,18 +886,18 @@ be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ 0x7C140C00, // 001E CALL R5 6 0x7C080600, // 001F CALL R2 3 0x60080018, // 0020 GETGBL R2 G24 - 0x580C003E, // 0021 LDCONST R3 K62 - 0x8810033F, // 0022 GETMBR R4 R1 K63 - 0x88140340, // 0023 GETMBR R5 R1 K64 - 0x88180341, // 0024 GETMBR R6 R1 K65 + 0x580C0042, // 0021 LDCONST R3 K66 + 0x88100343, // 0022 GETMBR R4 R1 K67 + 0x88140344, // 0023 GETMBR R5 R1 K68 + 0x88180345, // 0024 GETMBR R6 R1 K69 0x7C080800, // 0025 CALL R2 4 0x600C0018, // 0026 GETGBL R3 G24 - 0x58100042, // 0027 LDCONST R4 K66 + 0x58100046, // 0027 LDCONST R4 K70 0x5C140400, // 0028 MOVE R5 R2 0x5C180400, // 0029 MOVE R6 R2 0x7C0C0600, // 002A CALL R3 3 0x80040600, // 002B RET 1 R3 - 0x80068600, // 002C RET 1 K67 + 0x80068E00, // 002C RET 1 K71 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h index 43f7b7455..00ec70cf8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Profiler' ktab size: 19, total: 43 (saved 192 bytes) -static const bvalue be_ktab_class_Matter_Profiler[19] = { +// compact class 'Matter_Profiler' ktab size: 20, total: 43 (saved 184 bytes) +static const bvalue be_ktab_class_Matter_Profiler[20] = { /* K0 */ be_nested_str_weak(active), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(PREALLOCATED), @@ -23,7 +23,8 @@ static const bvalue be_ktab_class_Matter_Profiler[19] = { /* K15 */ be_const_int(1), /* K16 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E), /* K17 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), - /* K18 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), }; @@ -242,13 +243,13 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ 0x940C0701, // 000D GETIDX R3 R3 K1 0x8810010D, // 000E GETMBR R4 R0 K13 0x94100901, // 000F GETIDX R4 R4 K1 - 0x5814000F, // 0010 LDCONST R5 K15 + 0x58140012, // 0010 LDCONST R5 K18 0x88180106, // 0011 GETMBR R6 R0 K6 0x14180A06, // 0012 LT R6 R5 R6 0x781A000F, // 0013 JMPF R6 #0024 0xB81A1200, // 0014 GETNGBL R6 K9 0x601C0018, // 0015 GETGBL R7 G24 - 0x58200012, // 0016 LDCONST R8 K18 + 0x58200013, // 0016 LDCONST R8 K19 0x88240103, // 0017 GETMBR R9 R0 K3 0x94241205, // 0018 GETIDX R9 R9 R5 0x04241202, // 0019 SUB R9 R9 R2 @@ -260,7 +261,7 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ 0x7C1C0800, // 001F CALL R7 4 0x5C200200, // 0020 MOVE R8 R1 0x7C180400, // 0021 CALL R6 2 - 0x00140B0F, // 0022 ADD R5 R5 K15 + 0x00140B12, // 0022 ADD R5 R5 K18 0x7001FFEC, // 0023 JMP #0011 0x80000000, // 0024 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index 815d4de72..40e3fdaa6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Session; -// compact class 'Matter_Session' ktab size: 111, total: 196 (saved 680 bytes) -static const bvalue be_ktab_class_Matter_Session[111] = { +// compact class 'Matter_Session' ktab size: 114, total: 196 (saved 656 bytes) +static const bvalue be_ktab_class_Matter_Session[114] = { /* K0 */ be_nested_str_weak(_fabric), /* K1 */ be_nested_str_weak(device_id), /* K2 */ be_nested_str_weak(log), @@ -85,38 +85,41 @@ static const bvalue be_ktab_class_Matter_Session[111] = { /* K76 */ be_nested_str_weak(__future_local_session_id), /* K77 */ be_nested_str_weak(__future_initiator_session_id), /* K78 */ be_nested_str_weak(reset), - /* K79 */ be_nested_str_weak(_i2r_privacy), - /* K80 */ be_nested_str_weak(attestation_challenge), - /* K81 */ be_const_int(1), - /* K82 */ be_nested_str_weak(HKDF_SHA256), - /* K83 */ be_nested_str_weak(derive), - /* K84 */ be_nested_str_weak(get_i2r), - /* K85 */ be_nested_str_weak(fromstring), - /* K86 */ be_nested_str_weak(PrivacyKey), - /* K87 */ be_const_class(be_class_Matter_Session), - /* K88 */ be_nested_str_weak(Session), - /* K89 */ be_nested_str_weak(keys), - /* K90 */ be_nested_str_weak(find), - /* K91 */ be_nested_str_weak(0x), - /* K92 */ be_nested_str_weak(set), - /* K93 */ be_nested_str_weak(fromhex), - /* K94 */ be_const_int(2), - /* K95 */ be_const_int(2147483647), - /* K96 */ be_nested_str_weak(fromb64), - /* K97 */ be_nested_str_weak(hydrate_post), - /* K98 */ be_nested_str_weak(save_fabrics), - /* K99 */ be_nested_str_weak(admin_subject), - /* K100 */ be_nested_str_weak(ipk_epoch_key), - /* K101 */ be_nested_str_weak(fabric_compressed), - /* K102 */ be_nested_str_weak(created), - /* K103 */ be_nested_str_weak(EC_P256), - /* K104 */ be_nested_str_weak(public_key), - /* K105 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200), - /* K106 */ be_nested_str_weak(A000), - /* K107 */ be_nested_str_weak(300C06082A8648CE3D0403020500), - /* K108 */ be_nested_str_weak(ecdsa_sign_sha256_asn1), - /* K109 */ be_nested_str_weak(add), - /* K110 */ be_nested_str_weak(get_ipk_group_key), + /* K79 */ be_const_int(0), + /* K80 */ be_nested_str_weak(_i2r_privacy), + /* K81 */ be_nested_str_weak(attestation_challenge), + /* K82 */ be_const_int(1), + /* K83 */ be_nested_str_weak(HKDF_SHA256), + /* K84 */ be_nested_str_weak(derive), + /* K85 */ be_nested_str_weak(get_i2r), + /* K86 */ be_nested_str_weak(fromstring), + /* K87 */ be_nested_str_weak(PrivacyKey), + /* K88 */ be_const_class(be_class_Matter_Session), + /* K89 */ be_nested_str_weak(Session), + /* K90 */ be_nested_str_weak(keys), + /* K91 */ be_nested_str_weak(find), + /* K92 */ be_nested_str_weak(0x), + /* K93 */ be_nested_str_weak(set), + /* K94 */ be_nested_str_weak(fromhex), + /* K95 */ be_const_int(2), + /* K96 */ be_const_int(2147483647), + /* K97 */ be_nested_str_weak(fromb64), + /* K98 */ be_nested_str_weak(hydrate_post), + /* K99 */ be_nested_str_weak(save_fabrics), + /* K100 */ be_nested_str_weak(admin_subject), + /* K101 */ be_nested_str_weak(ipk_epoch_key), + /* K102 */ be_nested_str_weak(fabric_compressed), + /* K103 */ be_nested_str_weak(created), + /* K104 */ be_nested_str_weak(EC_P256), + /* K105 */ be_nested_str_weak(public_key), + /* K106 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200), + /* K107 */ be_nested_str_weak(A000), + /* K108 */ be_nested_str_weak(300C06082A8648CE3D0403020500), + /* K109 */ be_nested_str_weak(ecdsa_sign_sha256_asn1), + /* K110 */ be_nested_str_weak(add), + /* K111 */ be_const_int(3), + /* K112 */ be_const_int(1), + /* K113 */ be_nested_str_weak(get_ipk_group_key), }; @@ -1064,7 +1067,7 @@ be_local_closure(class_Matter_Session_close, /* name */ 0x8804010F, // 0007 GETMBR R1 R0 K15 0x8C04034E, // 0008 GETMET R1 R1 K78 0x7C040200, // 0009 CALL R1 1 - 0x9002270D, // 000A SETMBR R0 K19 K13 + 0x9002274F, // 000A SETMBR R0 K19 K79 0x8804010F, // 000B GETMBR R1 R0 K15 0x8C040315, // 000C GETMET R1 R1 K21 0x7C040200, // 000D CALL R1 1 @@ -1072,11 +1075,11 @@ be_local_closure(class_Matter_Session_close, /* name */ 0x4C040000, // 000F LDNIL R1 0x90024001, // 0010 SETMBR R0 K32 R1 0x4C040000, // 0011 LDNIL R1 - 0x90029E01, // 0012 SETMBR R0 K79 R1 + 0x9002A001, // 0012 SETMBR R0 K80 R1 0x4C040000, // 0013 LDNIL R1 0x90024A01, // 0014 SETMBR R0 K37 R1 0x4C040000, // 0015 LDNIL R1 - 0x9002A001, // 0016 SETMBR R0 K80 R1 + 0x9002A201, // 0016 SETMBR R0 K81 R1 0xA4067200, // 0017 IMPORT R1 K57 0x60080010, // 0018 GETGBL R2 G16 0x8C0C033B, // 0019 GETMET R3 R1 K59 @@ -1100,10 +1103,10 @@ be_local_closure(class_Matter_Session_close, /* name */ 0x7C140200, // 002B CALL R5 1 0x20140B44, // 002C NE R5 R5 K68 0x78160007, // 002D JMPF R5 #0036 - 0x9414070D, // 002E GETIDX R5 R3 K13 + 0x9414074F, // 002E GETIDX R5 R3 K79 0x1C140B3E, // 002F EQ R5 R5 K62 0x78160004, // 0030 JMPF R5 #0036 - 0x94140751, // 0031 GETIDX R5 R3 K81 + 0x94140752, // 0031 GETIDX R5 R3 K82 0x1C140B3E, // 0032 EQ R5 R5 K62 0x78160001, // 0033 JMPF R5 #0036 0x4C140000, // 0034 LDNIL R5 @@ -1136,7 +1139,7 @@ be_local_closure(class_Matter_Session_get_ac, /* name */ be_str_weak(get_ac), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040150, // 0000 GETMBR R1 R0 K80 + 0x88040151, // 0000 GETMBR R1 R0 K81 0x80040200, // 0001 RET 1 R1 }) ) @@ -1186,27 +1189,27 @@ be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ be_str_weak(get_i2r_privacy), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x8804014F, // 0000 GETMBR R1 R0 K79 + 0x88040150, // 0000 GETMBR R1 R0 K80 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x7806000F, // 0003 JMPF R1 #0014 0xA4061600, // 0004 IMPORT R1 K11 - 0x8C080352, // 0005 GETMET R2 R1 K82 + 0x8C080353, // 0005 GETMET R2 R1 K83 0x7C080200, // 0006 CALL R2 1 - 0x8C080553, // 0007 GETMET R2 R2 K83 - 0x8C100154, // 0008 GETMET R4 R0 K84 + 0x8C080554, // 0007 GETMET R2 R2 K84 + 0x8C100155, // 0008 GETMET R4 R0 K85 0x7C100200, // 0009 CALL R4 1 0x60140015, // 000A GETGBL R5 G21 0x7C140000, // 000B CALL R5 0 0x60180015, // 000C GETGBL R6 G21 0x7C180000, // 000D CALL R6 0 - 0x8C180D55, // 000E GETMET R6 R6 K85 - 0x58200056, // 000F LDCONST R8 K86 + 0x8C180D56, // 000E GETMET R6 R6 K86 + 0x58200057, // 000F LDCONST R8 K87 0x7C180400, // 0010 CALL R6 2 0x541E000F, // 0011 LDINT R7 16 0x7C080A00, // 0012 CALL R2 5 - 0x90029E02, // 0013 SETMBR R0 K79 R2 - 0x8804014F, // 0014 GETMBR R1 R0 K79 + 0x9002A002, // 0013 SETMBR R0 K80 R2 + 0x88040150, // 0014 GETMBR R1 R0 K80 0x80040200, // 0015 RET 1 R1 }) ) @@ -1231,18 +1234,18 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ be_str_weak(fromjson), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ - 0x580C0057, // 0000 LDCONST R3 K87 + 0x580C0058, // 0000 LDCONST R3 K88 0xA4126800, // 0001 IMPORT R4 K52 0xA4167200, // 0002 IMPORT R5 K57 0xB81A2000, // 0003 GETNGBL R6 K16 - 0x8C180D58, // 0004 GETMET R6 R6 K88 + 0x8C180D59, // 0004 GETMET R6 R6 K89 0x5C200000, // 0005 MOVE R8 R0 0x4C240000, // 0006 LDNIL R9 0x4C280000, // 0007 LDNIL R10 0x5C2C0400, // 0008 MOVE R11 R2 0x7C180A00, // 0009 CALL R6 5 0x601C0010, // 000A GETGBL R7 G16 - 0x8C200359, // 000B GETMET R8 R1 K89 + 0x8C20035A, // 000B GETMET R8 R1 K90 0x7C200200, // 000C CALL R8 1 0x7C1C0200, // 000D CALL R7 1 0xA8020035, // 000E EXBLK 0 #0045 @@ -1254,47 +1257,47 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ 0x7C280200, // 0014 CALL R10 1 0x1C281534, // 0015 EQ R10 R10 K52 0x782A0027, // 0016 JMPF R10 #003F - 0x8C28095A, // 0017 GETMET R10 R4 K90 + 0x8C28095B, // 0017 GETMET R10 R4 K91 0x5C301200, // 0018 MOVE R12 R9 - 0x5834005B, // 0019 LDCONST R13 K91 + 0x5834005C, // 0019 LDCONST R13 K92 0x7C280600, // 001A CALL R10 3 - 0x1C28150D, // 001B EQ R10 R10 K13 + 0x1C28153D, // 001B EQ R10 R10 K61 0x782A000A, // 001C JMPF R10 #0028 - 0x8C280B5C, // 001D GETMET R10 R5 K92 + 0x8C280B5D, // 001D GETMET R10 R5 K93 0x5C300C00, // 001E MOVE R12 R6 0x5C341000, // 001F MOVE R13 R8 0x60380015, // 0020 GETGBL R14 G21 0x7C380000, // 0021 CALL R14 0 - 0x8C381D5D, // 0022 GETMET R14 R14 K93 - 0x4042BD5F, // 0023 CONNECT R16 K94 K95 + 0x8C381D5E, // 0022 GETMET R14 R14 K94 + 0x4042BF60, // 0023 CONNECT R16 K95 K96 0x94401210, // 0024 GETIDX R16 R9 R16 0x7C380400, // 0025 CALL R14 2 0x7C280800, // 0026 CALL R10 4 0x70020015, // 0027 JMP #003E - 0x8C28095A, // 0028 GETMET R10 R4 K90 + 0x8C28095B, // 0028 GETMET R10 R4 K91 0x5C301200, // 0029 MOVE R12 R9 0x58340042, // 002A LDCONST R13 K66 0x7C280600, // 002B CALL R10 3 - 0x1C28150D, // 002C EQ R10 R10 K13 + 0x1C28153D, // 002C EQ R10 R10 K61 0x782A000A, // 002D JMPF R10 #0039 - 0x8C280B5C, // 002E GETMET R10 R5 K92 + 0x8C280B5D, // 002E GETMET R10 R5 K93 0x5C300C00, // 002F MOVE R12 R6 0x5C341000, // 0030 MOVE R13 R8 0x60380015, // 0031 GETGBL R14 G21 0x7C380000, // 0032 CALL R14 0 - 0x8C381D60, // 0033 GETMET R14 R14 K96 - 0x4042BD5F, // 0034 CONNECT R16 K94 K95 + 0x8C381D61, // 0033 GETMET R14 R14 K97 + 0x4042BF60, // 0034 CONNECT R16 K95 K96 0x94401210, // 0035 GETIDX R16 R9 R16 0x7C380400, // 0036 CALL R14 2 0x7C280800, // 0037 CALL R10 4 0x70020004, // 0038 JMP #003E - 0x8C280B5C, // 0039 GETMET R10 R5 K92 + 0x8C280B5D, // 0039 GETMET R10 R5 K93 0x5C300C00, // 003A MOVE R12 R6 0x5C341000, // 003B MOVE R13 R8 0x5C381200, // 003C MOVE R14 R9 0x7C280800, // 003D CALL R10 4 0x70020004, // 003E JMP #0044 - 0x8C280B5C, // 003F GETMET R10 R5 K92 + 0x8C280B5D, // 003F GETMET R10 R5 K93 0x5C300C00, // 0040 MOVE R12 R6 0x5C341000, // 0041 MOVE R13 R8 0x5C381200, // 0042 MOVE R14 R9 @@ -1303,7 +1306,7 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ 0x581C0040, // 0045 LDCONST R7 K64 0xAC1C0200, // 0046 CATCH R7 1 0 0xB0080000, // 0047 RAISE 2 R0 R0 - 0x8C1C0D61, // 0048 GETMET R7 R6 K97 + 0x8C1C0D62, // 0048 GETMET R7 R6 K98 0x7C1C0200, // 0049 CALL R7 1 0x80040C00, // 004A RET 1 R6 }) @@ -1330,7 +1333,7 @@ be_local_closure(class_Matter_Session_save, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x8C040362, // 0001 GETMET R1 R1 K98 + 0x8C040363, // 0001 GETMET R1 R1 K99 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -1399,7 +1402,7 @@ be_local_closure(class_Matter_Session_get_admin_subject, /* name */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040363, // 0003 GETMBR R1 R1 K99 + 0x88040364, // 0003 GETMBR R1 R1 K100 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -1427,7 +1430,7 @@ be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040364, // 0001 GETMBR R1 R1 K100 + 0x88040365, // 0001 GETMBR R1 R1 K101 0x80040200, // 0002 RET 1 R1 }) ) @@ -1455,7 +1458,7 @@ be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040365, // 0003 GETMBR R1 R1 K101 + 0x88040366, // 0003 GETMBR R1 R1 K102 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -1559,10 +1562,10 @@ be_local_closure(class_Matter_Session_set_keys, /* name */ ( &(const binstruction[ 7]) { /* code */ 0x90024001, // 0000 SETMBR R0 K32 R1 0x4C140000, // 0001 LDNIL R5 - 0x90029E05, // 0002 SETMBR R0 K79 R5 + 0x9002A005, // 0002 SETMBR R0 K80 R5 0x90024A02, // 0003 SETMBR R0 K37 R2 - 0x9002A003, // 0004 SETMBR R0 K80 R3 - 0x9002CC04, // 0005 SETMBR R0 K102 R4 + 0x9002A203, // 0004 SETMBR R0 K81 R3 + 0x9002CE04, // 0005 SETMBR R0 K103 R4 0x80000000, // 0006 RET 0 }) ) @@ -1590,43 +1593,43 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ 0x8C040136, // 0000 GETMET R1 R0 K54 0x7C040200, // 0001 CALL R1 1 0xA40A1600, // 0002 IMPORT R2 K11 - 0x8C0C0567, // 0003 GETMET R3 R2 K103 + 0x8C0C0568, // 0003 GETMET R3 R2 K104 0x7C0C0200, // 0004 CALL R3 1 - 0x8C100768, // 0005 GETMET R4 R3 K104 + 0x8C100769, // 0005 GETMET R4 R3 K105 0x5C180200, // 0006 MOVE R6 R1 0x7C100400, // 0007 CALL R4 2 0x60140015, // 0008 GETGBL R5 G21 - 0x58180069, // 0009 LDCONST R6 K105 + 0x5818006A, // 0009 LDCONST R6 K106 0x7C140200, // 000A CALL R5 1 0x40180A04, // 000B CONNECT R6 R5 R4 0x60180015, // 000C GETGBL R6 G21 - 0x581C006A, // 000D LDCONST R7 K106 + 0x581C006B, // 000D LDCONST R7 K107 0x7C180200, // 000E CALL R6 1 0x40180A06, // 000F CONNECT R6 R5 R6 0x60180015, // 0010 GETGBL R6 G21 - 0x581C006B, // 0011 LDCONST R7 K107 + 0x581C006C, // 0011 LDCONST R7 K108 0x7C180200, // 0012 CALL R6 1 - 0x8C1C076C, // 0013 GETMET R7 R3 K108 + 0x8C1C076D, // 0013 GETMET R7 R3 K109 0x5C240200, // 0014 MOVE R9 R1 0x5C280A00, // 0015 MOVE R10 R5 0x7C1C0600, // 0016 CALL R7 3 0x60200015, // 0017 GETGBL R8 G21 0x5426007F, // 0018 LDINT R9 128 0x7C200200, // 0019 CALL R8 1 - 0x8C24116D, // 001A GETMET R9 R8 K109 - 0x582C0005, // 001B LDCONST R11 K5 - 0x58300051, // 001C LDCONST R12 K81 + 0x8C24116E, // 001A GETMET R9 R8 K110 + 0x582C006F, // 001B LDCONST R11 K111 + 0x58300070, // 001C LDCONST R12 K112 0x7C240600, // 001D CALL R9 3 - 0x8C24116D, // 001E GETMET R9 R8 K109 + 0x8C24116E, // 001E GETMET R9 R8 K110 0x602C000C, // 001F GETGBL R11 G12 0x5C300E00, // 0020 MOVE R12 R7 0x7C2C0200, // 0021 CALL R11 1 - 0x002C1751, // 0022 ADD R11 R11 K81 - 0x58300051, // 0023 LDCONST R12 K81 + 0x002C1770, // 0022 ADD R11 R11 K112 + 0x58300070, // 0023 LDCONST R12 K112 0x7C240600, // 0024 CALL R9 3 - 0x8C24116D, // 0025 GETMET R9 R8 K109 - 0x582C003D, // 0026 LDCONST R11 K61 - 0x58300051, // 0027 LDCONST R12 K81 + 0x8C24116E, // 0025 GETMET R9 R8 K110 + 0x582C000D, // 0026 LDCONST R11 K13 + 0x58300070, // 0027 LDCONST R12 K112 0x7C240600, // 0028 CALL R9 3 0x40241007, // 0029 CONNECT R9 R8 R7 0x6024000C, // 002A GETGBL R9 G12 @@ -1643,18 +1646,18 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ 0x60280015, // 0035 GETGBL R10 G21 0x542E00CF, // 0036 LDINT R11 208 0x7C280200, // 0037 CALL R10 1 - 0x8C2C156D, // 0038 GETMET R11 R10 K109 + 0x8C2C156E, // 0038 GETMET R11 R10 K110 0x5436002F, // 0039 LDINT R13 48 - 0x58380051, // 003A LDCONST R14 K81 + 0x58380070, // 003A LDCONST R14 K112 0x7C2C0600, // 003B CALL R11 3 - 0x8C2C156D, // 003C GETMET R11 R10 K109 + 0x8C2C156E, // 003C GETMET R11 R10 K110 0x54360080, // 003D LDINT R13 129 - 0x58380051, // 003E LDCONST R14 K81 + 0x58380070, // 003E LDCONST R14 K112 0x7C2C0600, // 003F CALL R11 3 - 0x8C2C156D, // 0040 GETMET R11 R10 K109 + 0x8C2C156E, // 0040 GETMET R11 R10 K110 0x543600FE, // 0041 LDINT R13 255 0x2C34120D, // 0042 AND R13 R9 R13 - 0x58380051, // 0043 LDCONST R14 K81 + 0x58380070, // 0043 LDCONST R14 K112 0x7C2C0600, // 0044 CALL R11 3 0x402C1405, // 0045 CONNECT R11 R10 R5 0x402C1406, // 0046 CONNECT R11 R10 R6 @@ -1684,7 +1687,7 @@ be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C04036E, // 0001 GETMET R1 R1 K110 + 0x8C040371, // 0001 GETMET R1 R1 K113 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h index f8e4c6342..08dc68206 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Session_Store' ktab size: 74, total: 155 (saved 648 bytes) -static const bvalue be_ktab_class_Matter_Session_Store[74] = { +// compact class 'Matter_Session_Store' ktab size: 76, total: 155 (saved 632 bytes) +static const bvalue be_ktab_class_Matter_Session_Store[76] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(sessions), /* K2 */ be_nested_str_weak(remove), @@ -13,35 +13,35 @@ static const bvalue be_ktab_class_Matter_Session_Store[74] = { /* K5 */ be_nested_str_weak(random), /* K6 */ be_const_int(2), /* K7 */ be_nested_str_weak(get), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(get_session_by_local_session_id), - /* K10 */ be_nested_str_weak(matter), - /* K11 */ be_nested_str_weak(Expirable_list), - /* K12 */ be_nested_str_weak(fabrics), - /* K13 */ be_nested_str_weak(_FABRICS), - /* K14 */ be_nested_str_weak(read), - /* K15 */ be_nested_str_weak(close), - /* K16 */ be_nested_str_weak(json), - /* K17 */ be_nested_str_weak(load), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(gc), - /* K20 */ be_nested_str_weak(Fabric), - /* K21 */ be_nested_str_weak(fromjson), - /* K22 */ be_nested_str_weak(set_no_expiration), - /* K23 */ be_nested_str_weak(set_persist), - /* K24 */ be_nested_str_weak(find), - /* K25 */ be_nested_str_weak(_sessions), - /* K26 */ be_nested_str_weak(Session), - /* K27 */ be_nested_str_weak(add_session), - /* K28 */ be_nested_str_weak(stop_iteration), - /* K29 */ be_nested_str_weak(push), - /* K30 */ be_nested_str_weak(log), - /* K31 */ be_nested_str_weak(MTR_X3A_X20Loaded_X20_X25i_X20fabric_X28s_X29), - /* K32 */ be_nested_str_weak(io_error), - /* K33 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A), - /* K34 */ be_nested_str_weak(_X7C), - /* K35 */ be_nested_str_weak(get_device_id), - /* K36 */ be_nested_str_weak(get_fabric_id), + /* K8 */ be_nested_str_weak(get_session_by_local_session_id), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(Expirable_list), + /* K11 */ be_nested_str_weak(fabrics), + /* K12 */ be_nested_str_weak(_FABRICS), + /* K13 */ be_nested_str_weak(read), + /* K14 */ be_nested_str_weak(close), + /* K15 */ be_nested_str_weak(json), + /* K16 */ be_nested_str_weak(load), + /* K17 */ be_nested_str_weak(tasmota), + /* K18 */ be_nested_str_weak(gc), + /* K19 */ be_nested_str_weak(Fabric), + /* K20 */ be_nested_str_weak(fromjson), + /* K21 */ be_nested_str_weak(set_no_expiration), + /* K22 */ be_nested_str_weak(set_persist), + /* K23 */ be_nested_str_weak(find), + /* K24 */ be_nested_str_weak(_sessions), + /* K25 */ be_nested_str_weak(Session), + /* K26 */ be_nested_str_weak(add_session), + /* K27 */ be_nested_str_weak(stop_iteration), + /* K28 */ be_nested_str_weak(push), + /* K29 */ be_nested_str_weak(log), + /* K30 */ be_nested_str_weak(MTR_X3A_X20Loaded_X20_X25i_X20fabric_X28s_X29), + /* K31 */ be_nested_str_weak(io_error), + /* K32 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A), + /* K33 */ be_nested_str_weak(_X7C), + /* K34 */ be_nested_str_weak(get_device_id), + /* K35 */ be_nested_str_weak(get_fabric_id), + /* K36 */ be_const_int(1), /* K37 */ be_nested_str_weak(active_fabrics), /* K38 */ be_nested_str_weak(get_fabric_index), /* K39 */ be_nested_str_weak(remove_expired), @@ -62,23 +62,25 @@ static const bvalue be_ktab_class_Matter_Session_Store[74] = { /* K54 */ be_nested_str_weak(value_error), /* K55 */ be_nested_str_weak(must_X20be_X20of_X20class_X20matter_X2EFabric), /* K56 */ be_nested_str_weak(remove_redundant_fabric), - /* K57 */ be_nested_str_weak(fabric_index), - /* K58 */ be_nested_str_weak(int), - /* K59 */ be_nested_str_weak(path), - /* K60 */ be_nested_str_weak(_FABRICS_TEMP), - /* K61 */ be_nested_str_weak(w), - /* K62 */ be_nested_str_weak(write), - /* K63 */ be_nested_str_weak(_X5B), - /* K64 */ be_nested_str_weak(_X2C), - /* K65 */ be_nested_str_weak(writejson), - /* K66 */ be_nested_str_weak(_X5D), - /* K67 */ be_nested_str_weak(rename), - /* K68 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), - /* K69 */ be_nested_str_weak(event_fabrics_saved), - /* K70 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), - /* K71 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K72 */ be_nested_str_weak(remove_session), - /* K73 */ be_nested_str_weak(_fabric), + /* K57 */ be_const_int(1), + /* K58 */ be_nested_str_weak(fabric_index), + /* K59 */ be_nested_str_weak(int), + /* K60 */ be_nested_str_weak(path), + /* K61 */ be_nested_str_weak(_FABRICS_TEMP), + /* K62 */ be_nested_str_weak(w), + /* K63 */ be_nested_str_weak(write), + /* K64 */ be_nested_str_weak(_X5B), + /* K65 */ be_nested_str_weak(_X2C), + /* K66 */ be_nested_str_weak(writejson), + /* K67 */ be_nested_str_weak(_X5D), + /* K68 */ be_nested_str_weak(rename), + /* K69 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), + /* K70 */ be_nested_str_weak(event_fabrics_saved), + /* K71 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), + /* K72 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K73 */ be_nested_str_weak(remove_session), + /* K74 */ be_nested_str_weak(_fabric), + /* K75 */ be_const_int(1), }; @@ -148,10 +150,10 @@ be_local_closure(class_Matter_Session_Store_gen_local_session_id, /* name */ 0x58100006, // 0004 LDCONST R4 K6 0x7C080400, // 0005 CALL R2 2 0x8C080507, // 0006 GETMET R2 R2 K7 - 0x58100008, // 0007 LDCONST R4 K8 + 0x58100000, // 0007 LDCONST R4 K0 0x58140006, // 0008 LDCONST R5 K6 0x7C080600, // 0009 CALL R2 3 - 0x8C0C0109, // 000A GETMET R3 R0 K9 + 0x8C0C0108, // 000A GETMET R3 R0 K8 0x5C140400, // 000B MOVE R5 R2 0x7C0C0400, // 000C CALL R3 2 0x4C100000, // 000D LDNIL R4 @@ -184,28 +186,28 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ 0xA802005E, // 0000 EXBLK 0 #0060 - 0xB8061400, // 0001 GETNGBL R1 K10 - 0x8C04030B, // 0002 GETMET R1 R1 K11 + 0xB8061200, // 0001 GETNGBL R1 K9 + 0x8C04030A, // 0002 GETMET R1 R1 K10 0x7C040200, // 0003 CALL R1 1 0x90020201, // 0004 SETMBR R0 K1 R1 - 0xB8061400, // 0005 GETNGBL R1 K10 - 0x8C04030B, // 0006 GETMET R1 R1 K11 + 0xB8061200, // 0005 GETNGBL R1 K9 + 0x8C04030A, // 0006 GETMET R1 R1 K10 0x7C040200, // 0007 CALL R1 1 - 0x90021801, // 0008 SETMBR R0 K12 R1 + 0x90021601, // 0008 SETMBR R0 K11 R1 0x60040011, // 0009 GETGBL R1 G17 - 0x8808010D, // 000A GETMBR R2 R0 K13 + 0x8808010C, // 000A GETMBR R2 R0 K12 0x7C040200, // 000B CALL R1 1 - 0x8C08030E, // 000C GETMET R2 R1 K14 + 0x8C08030D, // 000C GETMET R2 R1 K13 0x7C080200, // 000D CALL R2 1 - 0x8C0C030F, // 000E GETMET R3 R1 K15 + 0x8C0C030E, // 000E GETMET R3 R1 K14 0x7C0C0200, // 000F CALL R3 1 - 0xA40E2000, // 0010 IMPORT R3 K16 - 0x8C100711, // 0011 GETMET R4 R3 K17 + 0xA40E1E00, // 0010 IMPORT R3 K15 + 0x8C100710, // 0011 GETMET R4 R3 K16 0x5C180400, // 0012 MOVE R6 R2 0x7C100400, // 0013 CALL R4 2 0x4C080000, // 0014 LDNIL R2 - 0xB8162400, // 0015 GETNGBL R5 K18 - 0x8C140B13, // 0016 GETMET R5 R5 K19 + 0xB8162200, // 0015 GETNGBL R5 K17 + 0x8C140B12, // 0016 GETMET R5 R5 K18 0x7C140200, // 0017 CALL R5 1 0x60140010, // 0018 GETGBL R5 G16 0x5C180800, // 0019 MOVE R6 R4 @@ -213,19 +215,19 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0xA8020035, // 001B EXBLK 0 #0052 0x5C180A00, // 001C MOVE R6 R5 0x7C180000, // 001D CALL R6 0 - 0xB81E1400, // 001E GETNGBL R7 K10 - 0x881C0F14, // 001F GETMBR R7 R7 K20 - 0x8C1C0F15, // 0020 GETMET R7 R7 K21 + 0xB81E1200, // 001E GETNGBL R7 K9 + 0x881C0F13, // 001F GETMBR R7 R7 K19 + 0x8C1C0F14, // 0020 GETMET R7 R7 K20 0x5C240000, // 0021 MOVE R9 R0 0x5C280C00, // 0022 MOVE R10 R6 0x7C1C0600, // 0023 CALL R7 3 - 0x8C200F16, // 0024 GETMET R8 R7 K22 + 0x8C200F15, // 0024 GETMET R8 R7 K21 0x7C200200, // 0025 CALL R8 1 - 0x8C200F17, // 0026 GETMET R8 R7 K23 + 0x8C200F16, // 0026 GETMET R8 R7 K22 0x50280200, // 0027 LDBOOL R10 1 0 0x7C200400, // 0028 CALL R8 2 - 0x8C200D18, // 0029 GETMET R8 R6 K24 - 0x58280019, // 002A LDCONST R10 K25 + 0x8C200D17, // 0029 GETMET R8 R6 K23 + 0x58280018, // 002A LDCONST R10 K24 0x602C0012, // 002B GETGBL R11 G18 0x7C2C0000, // 002C CALL R11 0 0x7C200600, // 002D CALL R8 3 @@ -235,9 +237,9 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0xA8020017, // 0031 EXBLK 0 #004A 0x5C281200, // 0032 MOVE R10 R9 0x7C280000, // 0033 CALL R10 0 - 0xB82E1400, // 0034 GETNGBL R11 K10 - 0x882C171A, // 0035 GETMBR R11 R11 K26 - 0x8C2C1715, // 0036 GETMET R11 R11 K21 + 0xB82E1200, // 0034 GETNGBL R11 K9 + 0x882C1719, // 0035 GETMBR R11 R11 K25 + 0x8C2C1714, // 0036 GETMET R11 R11 K20 0x5C340000, // 0037 MOVE R13 R0 0x5C381400, // 0038 MOVE R14 R10 0x5C3C0E00, // 0039 MOVE R15 R7 @@ -245,34 +247,34 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0x4C300000, // 003B LDNIL R12 0x2030160C, // 003C NE R12 R11 R12 0x7832000A, // 003D JMPF R12 #0049 - 0x8C301716, // 003E GETMET R12 R11 K22 + 0x8C301715, // 003E GETMET R12 R11 K21 0x7C300200, // 003F CALL R12 1 - 0x8C301717, // 0040 GETMET R12 R11 K23 + 0x8C301716, // 0040 GETMET R12 R11 K22 0x50380200, // 0041 LDBOOL R14 1 0 0x7C300400, // 0042 CALL R12 2 - 0x8C30011B, // 0043 GETMET R12 R0 K27 + 0x8C30011A, // 0043 GETMET R12 R0 K26 0x5C381600, // 0044 MOVE R14 R11 0x7C300400, // 0045 CALL R12 2 - 0x8C300F1B, // 0046 GETMET R12 R7 K27 + 0x8C300F1A, // 0046 GETMET R12 R7 K26 0x5C381600, // 0047 MOVE R14 R11 0x7C300400, // 0048 CALL R12 2 0x7001FFE7, // 0049 JMP #0032 - 0x5824001C, // 004A LDCONST R9 K28 + 0x5824001B, // 004A LDCONST R9 K27 0xAC240200, // 004B CATCH R9 1 0 0xB0080000, // 004C RAISE 2 R0 R0 - 0x8824010C, // 004D GETMBR R9 R0 K12 - 0x8C24131D, // 004E GETMET R9 R9 K29 + 0x8824010B, // 004D GETMBR R9 R0 K11 + 0x8C24131C, // 004E GETMET R9 R9 K28 0x5C2C0E00, // 004F MOVE R11 R7 0x7C240400, // 0050 CALL R9 2 0x7001FFC9, // 0051 JMP #001C - 0x5814001C, // 0052 LDCONST R5 K28 + 0x5814001B, // 0052 LDCONST R5 K27 0xAC140200, // 0053 CATCH R5 1 0 0xB0080000, // 0054 RAISE 2 R0 R0 - 0xB8163C00, // 0055 GETNGBL R5 K30 + 0xB8163A00, // 0055 GETNGBL R5 K29 0x60180018, // 0056 GETGBL R6 G24 - 0x581C001F, // 0057 LDCONST R7 K31 + 0x581C001E, // 0057 LDCONST R7 K30 0x6020000C, // 0058 GETGBL R8 G12 - 0x8824010C, // 0059 GETMBR R9 R0 K12 + 0x8824010B, // 0059 GETMBR R9 R0 K11 0x7C200200, // 005A CALL R8 1 0x7C180400, // 005B CALL R6 2 0x581C0006, // 005C LDCONST R7 K6 @@ -281,14 +283,14 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */ 0x70020011, // 005F JMP #0072 0xAC040002, // 0060 CATCH R1 0 2 0x7002000E, // 0061 JMP #0071 - 0x200C0320, // 0062 NE R3 R1 K32 + 0x200C031F, // 0062 NE R3 R1 K31 0x780E000B, // 0063 JMPF R3 #0070 - 0xB80E3C00, // 0064 GETNGBL R3 K30 + 0xB80E3A00, // 0064 GETNGBL R3 K29 0x60100008, // 0065 GETGBL R4 G8 0x5C140200, // 0066 MOVE R5 R1 0x7C100200, // 0067 CALL R4 1 - 0x00124204, // 0068 ADD R4 K33 R4 - 0x00100922, // 0069 ADD R4 R4 K34 + 0x00124004, // 0068 ADD R4 K32 R4 + 0x00100921, // 0069 ADD R4 R4 K33 0x60140008, // 006A GETGBL R5 G8 0x5C180400, // 006B MOVE R6 R2 0x7C140200, // 006C CALL R5 1 @@ -426,16 +428,16 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */ 0x780E000C, // 0007 JMPF R3 #0015 0x880C0101, // 0008 GETMBR R3 R0 K1 0x940C0602, // 0009 GETIDX R3 R3 R2 - 0x8C100723, // 000A GETMET R4 R3 K35 + 0x8C100722, // 000A GETMET R4 R3 K34 0x7C100200, // 000B CALL R4 1 0x78120005, // 000C JMPF R4 #0013 - 0x8C100724, // 000D GETMET R4 R3 K36 + 0x8C100723, // 000D GETMET R4 R3 K35 0x7C100200, // 000E CALL R4 1 0x78120002, // 000F JMPF R4 #0013 - 0x8C10031D, // 0010 GETMET R4 R1 K29 + 0x8C10031C, // 0010 GETMET R4 R1 K28 0x5C180600, // 0011 MOVE R6 R3 0x7C100400, // 0012 CALL R4 2 - 0x00080503, // 0013 ADD R2 R2 K3 + 0x00080524, // 0013 ADD R2 R2 K36 0x7001FFED, // 0014 JMP #0003 0x80040200, // 0015 RET 1 R1 }) @@ -475,7 +477,7 @@ be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */ 0xA8040001, // 000B EXBLK 1 1 0x80040600, // 000C RET 1 R3 0x7001FFF6, // 000D JMP #0005 - 0x5808001C, // 000E LDCONST R2 K28 + 0x5808001B, // 000E LDCONST R2 K27 0xAC080200, // 000F CATCH R2 1 0 0xB0080000, // 0010 RAISE 2 R0 R0 0x4C080000, // 0011 LDNIL R2 @@ -505,7 +507,7 @@ be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */ ( &(const binstruction[ 6]) { /* code */ 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 - 0x8804010C, // 0002 GETMBR R1 R0 K12 + 0x8804010B, // 0002 GETMBR R1 R0 K11 0x8C040328, // 0003 GETMET R1 R1 K40 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 @@ -532,8 +534,8 @@ be_local_closure(class_Matter_Session_Store_create_fabric, /* name */ be_str_weak(create_fabric), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB8061400, // 0000 GETNGBL R1 K10 - 0x8C040314, // 0001 GETMET R1 R1 K20 + 0xB8061200, // 0000 GETNGBL R1 K9 + 0x8C040313, // 0001 GETMET R1 R1 K19 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 0x80040200, // 0004 RET 1 R1 @@ -562,11 +564,11 @@ be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */ ( &(const binstruction[13]) { /* code */ 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 - 0x8804010C, // 0002 GETMBR R1 R0 K12 + 0x8804010B, // 0002 GETMBR R1 R0 K11 0x4C080000, // 0003 LDNIL R2 0x20040202, // 0004 NE R1 R1 R2 0x78060004, // 0005 JMPF R1 #000B - 0x8804010C, // 0006 GETMBR R1 R0 K12 + 0x8804010B, // 0006 GETMBR R1 R0 K11 0x8C040329, // 0007 GETMET R1 R1 K41 0x7C040200, // 0008 CALL R1 1 0x80040200, // 0009 RET 1 R1 @@ -608,7 +610,7 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0x14100404, // 0009 LT R4 R2 R4 0x78120018, // 000A JMPF R4 #0024 0x94100602, // 000B GETIDX R4 R3 R2 - 0xB8163C00, // 000C GETNGBL R5 K30 + 0xB8163A00, // 000C GETNGBL R5 K29 0x60180018, // 000D GETGBL R6 G24 0x581C002A, // 000E LDCONST R7 K42 0x60200008, // 000F GETGBL R8 G8 @@ -630,7 +632,7 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0x8C14092D, // 001F GETMET R5 R4 K45 0x7C140200, // 0020 CALL R5 1 0x80040800, // 0021 RET 1 R4 - 0x00080503, // 0022 ADD R2 R2 K3 + 0x00080524, // 0022 ADD R2 R2 K36 0x7001FFE1, // 0023 JMP #0006 0x80000000, // 0024 RET 0 }) @@ -663,7 +665,7 @@ be_local_closure(class_Matter_Session_Store_add_session, /* name */ 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x8C0C071D, // 0007 GETMET R3 R3 K29 + 0x8C0C071C, // 0007 GETMET R3 R3 K28 0x5C140200, // 0008 MOVE R5 R1 0x7C0C0400, // 0009 CALL R3 2 0x80000000, // 000A RET 0 @@ -696,8 +698,8 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, / 0x4C100000, // 0003 LDNIL R4 0x1C100604, // 0004 EQ R4 R3 R4 0x7812000E, // 0005 JMPF R4 #0015 - 0xB8121400, // 0006 GETNGBL R4 K10 - 0x8C10091A, // 0007 GETMET R4 R4 K26 + 0xB8121200, // 0006 GETNGBL R4 K9 + 0x8C100919, // 0007 GETMET R4 R4 K25 0x5C180000, // 0008 MOVE R6 R0 0x581C0000, // 0009 LDCONST R7 K0 0x58200000, // 000A LDCONST R8 K0 @@ -705,7 +707,7 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, / 0x5C0C0800, // 000C MOVE R3 R4 0x900E6001, // 000D SETMBR R3 K48 R1 0x88100101, // 000E GETMBR R4 R0 K1 - 0x8C10091D, // 000F GETMET R4 R4 K29 + 0x8C10091C, // 000F GETMET R4 R4 K28 0x5C180600, // 0010 MOVE R6 R3 0x7C100400, // 0011 CALL R4 2 0x8C10072E, // 0012 GETMET R4 R3 K46 @@ -771,7 +773,7 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, / 0x6008000C, // 0005 GETGBL R2 G12 0x880C0101, // 0006 GETMBR R3 R0 K1 0x7C080200, // 0007 CALL R2 1 - 0x580C0008, // 0008 LDCONST R3 K8 + 0x580C0000, // 0008 LDCONST R3 K0 0x88100101, // 0009 GETMBR R4 R0 K1 0x14140602, // 000A LT R5 R3 R2 0x78160008, // 000B JMPF R5 #0015 @@ -782,7 +784,7 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, / 0x8C180B2D, // 0010 GETMET R6 R5 K45 0x7C180200, // 0011 CALL R6 1 0x80040A00, // 0012 RET 1 R5 - 0x000C0703, // 0013 ADD R3 R3 K3 + 0x000C0724, // 0013 ADD R3 R3 K36 0x7001FFF4, // 0014 JMP #000A 0x80000000, // 0015 RET 0 }) @@ -809,14 +811,14 @@ be_local_closure(class_Matter_Session_Store_init, /* name */ &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x90026401, // 0000 SETMBR R0 K50 R1 - 0xB80A1400, // 0001 GETNGBL R2 K10 - 0x8C08050B, // 0002 GETMET R2 R2 K11 + 0xB80A1200, // 0001 GETNGBL R2 K9 + 0x8C08050A, // 0002 GETMET R2 R2 K10 0x7C080200, // 0003 CALL R2 1 0x90020202, // 0004 SETMBR R0 K1 R2 - 0xB80A1400, // 0005 GETNGBL R2 K10 - 0x8C08050B, // 0006 GETMET R2 R2 K11 + 0xB80A1200, // 0005 GETNGBL R2 K9 + 0x8C08050A, // 0006 GETMET R2 R2 K10 0x7C080200, // 0007 CALL R2 1 - 0x90021802, // 0008 SETMBR R0 K12 R2 + 0x90021602, // 0008 SETMBR R0 K11 R2 0x80000000, // 0009 RET 0 }) ) @@ -844,7 +846,7 @@ be_local_closure(class_Matter_Session_Store_remove_expired, /* name */ 0x88040101, // 0000 GETMBR R1 R0 K1 0x8C040333, // 0001 GETMET R1 R1 K51 0x7C040200, // 0002 CALL R1 1 - 0x8804010C, // 0003 GETMBR R1 R0 K12 + 0x8804010B, // 0003 GETMBR R1 R0 K11 0x8C040333, // 0004 GETMET R1 R1 K51 0x7C040200, // 0005 CALL R1 1 0x80000000, // 0006 RET 0 @@ -873,11 +875,11 @@ be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name * ( &(const binstruction[26]) { /* code */ 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 - 0x8810010C, // 0002 GETMBR R4 R0 K12 + 0x8810010B, // 0002 GETMBR R4 R0 K11 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 0x780E0012, // 0005 JMPF R3 #0019 - 0x880C010C, // 0006 GETMBR R3 R0 K12 + 0x880C010B, // 0006 GETMBR R3 R0 K11 0x940C0602, // 0007 GETIDX R3 R3 R2 0x20100601, // 0008 NE R4 R3 R1 0x7812000C, // 0009 JMPF R4 #0017 @@ -889,7 +891,7 @@ be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name * 0x88140335, // 000F GETMBR R5 R1 K53 0x1C100805, // 0010 EQ R4 R4 R5 0x78120004, // 0011 JMPF R4 #0017 - 0x8810010C, // 0012 GETMBR R4 R0 K12 + 0x8810010B, // 0012 GETMBR R4 R0 K11 0x8C100902, // 0013 GETMET R4 R4 K2 0x5C180400, // 0014 MOVE R6 R2 0x7C100400, // 0015 CALL R4 2 @@ -922,13 +924,13 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ ( &(const binstruction[22]) { /* code */ 0x6008000F, // 0000 GETGBL R2 G15 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8121400, // 0002 GETNGBL R4 K10 - 0x88100914, // 0003 GETMBR R4 R4 K20 + 0xB8121200, // 0002 GETNGBL R4 K9 + 0x88100913, // 0003 GETMBR R4 R4 K19 0x7C080400, // 0004 CALL R2 2 0x740A0000, // 0005 JMPT R2 #0007 0xB0066D37, // 0006 RAISE 1 K54 K55 - 0x8808010C, // 0007 GETMBR R2 R0 K12 - 0x8C080518, // 0008 GETMET R2 R2 K24 + 0x8808010B, // 0007 GETMBR R2 R0 K11 + 0x8C080517, // 0008 GETMET R2 R2 K23 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 0x4C0C0000, // 000B LDNIL R3 @@ -937,8 +939,8 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ 0x8C080138, // 000E GETMET R2 R0 K56 0x5C100200, // 000F MOVE R4 R1 0x7C080400, // 0010 CALL R2 2 - 0x8808010C, // 0011 GETMBR R2 R0 K12 - 0x8C08051D, // 0012 GETMET R2 R2 K29 + 0x8808010B, // 0011 GETMBR R2 R0 K11 + 0x8C08051C, // 0012 GETMET R2 R2 K28 0x5C100200, // 0013 MOVE R4 R1 0x7C080400, // 0014 CALL R2 2 0x80000000, // 0015 RET 0 @@ -973,7 +975,7 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* 0x6008000C, // 0005 GETGBL R2 G12 0x880C0101, // 0006 GETMBR R3 R0 K1 0x7C080200, // 0007 CALL R2 1 - 0x580C0008, // 0008 LDCONST R3 K8 + 0x580C0000, // 0008 LDCONST R3 K0 0x88100101, // 0009 GETMBR R4 R0 K1 0x14140602, // 000A LT R5 R3 R2 0x78160008, // 000B JMPF R5 #0015 @@ -984,7 +986,7 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* 0x8C180B2D, // 0010 GETMET R6 R5 K45 0x7C180200, // 0011 CALL R6 1 0x80040A00, // 0012 RET 1 R5 - 0x000C0703, // 0013 ADD R3 R3 K3 + 0x000C0724, // 0013 ADD R3 R3 K36 0x7001FFF4, // 0014 JMP #000A 0x80000000, // 0015 RET 0 }) @@ -1012,7 +1014,7 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ ( &(const binstruction[25]) { /* code */ 0x8C040127, // 0000 GETMET R1 R0 K39 0x7C040200, // 0001 CALL R1 1 - 0x58040003, // 0002 LDCONST R1 K3 + 0x58040039, // 0002 LDCONST R1 K57 0x60080010, // 0003 GETGBL R2 G16 0x8C0C0125, // 0004 GETMET R3 R0 K37 0x7C0C0200, // 0005 CALL R3 1 @@ -1020,18 +1022,18 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ 0xA802000C, // 0007 EXBLK 0 #0015 0x5C0C0400, // 0008 MOVE R3 R2 0x7C0C0000, // 0009 CALL R3 0 - 0x88100739, // 000A GETMBR R4 R3 K57 + 0x8810073A, // 000A GETMBR R4 R3 K58 0x60140004, // 000B GETGBL R5 G4 0x5C180800, // 000C MOVE R6 R4 0x7C140200, // 000D CALL R5 1 - 0x1C140B3A, // 000E EQ R5 R5 K58 + 0x1C140B3B, // 000E EQ R5 R5 K59 0x78160003, // 000F JMPF R5 #0014 0x28140801, // 0010 GE R5 R4 R1 0x78160001, // 0011 JMPF R5 #0014 - 0x00140903, // 0012 ADD R5 R4 K3 + 0x00140939, // 0012 ADD R5 R4 K57 0x5C040A00, // 0013 MOVE R1 R5 0x7001FFF2, // 0014 JMP #0008 - 0x5808001C, // 0015 LDCONST R2 K28 + 0x5808001B, // 0015 LDCONST R2 K27 0xAC080200, // 0016 CATCH R2 1 0 0xB0080000, // 0017 RAISE 2 R0 R0 0x80040200, // 0018 RET 1 R1 @@ -1058,22 +1060,22 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ be_str_weak(save_fabrics), &be_const_str_solidified, ( &(const binstruction[98]) { /* code */ - 0xA4062000, // 0000 IMPORT R1 K16 - 0xA40A7600, // 0001 IMPORT R2 K59 + 0xA4061E00, // 0000 IMPORT R1 K15 + 0xA40A7800, // 0001 IMPORT R2 K60 0xA802004D, // 0002 EXBLK 0 #0051 0x8C0C0127, // 0003 GETMET R3 R0 K39 0x7C0C0200, // 0004 CALL R3 1 - 0x580C0008, // 0005 LDCONST R3 K8 - 0x58100008, // 0006 LDCONST R4 K8 + 0x580C0000, // 0005 LDCONST R3 K0 + 0x58100000, // 0006 LDCONST R4 K0 0x60140011, // 0007 GETGBL R5 G17 - 0x8818013C, // 0008 GETMBR R6 R0 K60 - 0x581C003D, // 0009 LDCONST R7 K61 + 0x8818013D, // 0008 GETMBR R6 R0 K61 + 0x581C003E, // 0009 LDCONST R7 K62 0x7C140400, // 000A CALL R5 2 - 0x8C180B3E, // 000B GETMET R6 R5 K62 - 0x5820003F, // 000C LDCONST R8 K63 + 0x8C180B3F, // 000B GETMET R6 R5 K63 + 0x58200040, // 000C LDCONST R8 K64 0x7C180400, // 000D CALL R6 2 0x60180010, // 000E GETGBL R6 G16 - 0x881C010C, // 000F GETMBR R7 R0 K12 + 0x881C010B, // 000F GETMBR R7 R0 K11 0x8C1C0F28, // 0010 GETMET R7 R7 K40 0x7C1C0200, // 0011 CALL R7 1 0x7C180200, // 0012 CALL R6 1 @@ -1081,7 +1083,7 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0x5C1C0C00, // 0014 MOVE R7 R6 0x7C1C0000, // 0015 CALL R7 0 0x60200010, // 0016 GETGBL R8 G16 - 0x88240F19, // 0017 GETMBR R9 R7 K25 + 0x88240F18, // 0017 GETMBR R9 R7 K24 0x8C241328, // 0018 GETMET R9 R9 K40 0x7C240200, // 0019 CALL R9 1 0x7C200200, // 001A CALL R8 1 @@ -1090,50 +1092,50 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0x7C240000, // 001D CALL R9 0 0x000C0703, // 001E ADD R3 R3 K3 0x7001FFFB, // 001F JMP #001C - 0x5820001C, // 0020 LDCONST R8 K28 + 0x5820001B, // 0020 LDCONST R8 K27 0xAC200200, // 0021 CATCH R8 1 0 0xB0080000, // 0022 RAISE 2 R0 R0 - 0x24200908, // 0023 GT R8 R4 K8 + 0x24200900, // 0023 GT R8 R4 K0 0x78220002, // 0024 JMPF R8 #0028 - 0x8C200B3E, // 0025 GETMET R8 R5 K62 - 0x58280040, // 0026 LDCONST R10 K64 + 0x8C200B3F, // 0025 GETMET R8 R5 K63 + 0x58280041, // 0026 LDCONST R10 K65 0x7C200400, // 0027 CALL R8 2 - 0x8C200F41, // 0028 GETMET R8 R7 K65 + 0x8C200F42, // 0028 GETMET R8 R7 K66 0x5C280A00, // 0029 MOVE R10 R5 0x7C200400, // 002A CALL R8 2 0x00100903, // 002B ADD R4 R4 K3 0x7001FFE6, // 002C JMP #0014 - 0x5818001C, // 002D LDCONST R6 K28 + 0x5818001B, // 002D LDCONST R6 K27 0xAC180200, // 002E CATCH R6 1 0 0xB0080000, // 002F RAISE 2 R0 R0 - 0x8C180B3E, // 0030 GETMET R6 R5 K62 - 0x58200042, // 0031 LDCONST R8 K66 + 0x8C180B3F, // 0030 GETMET R6 R5 K63 + 0x58200043, // 0031 LDCONST R8 K67 0x7C180400, // 0032 CALL R6 2 - 0x8C180B0F, // 0033 GETMET R6 R5 K15 + 0x8C180B0E, // 0033 GETMET R6 R5 K14 0x7C180200, // 0034 CALL R6 1 0x8C180502, // 0035 GETMET R6 R2 K2 - 0x8820010D, // 0036 GETMBR R8 R0 K13 + 0x8820010C, // 0036 GETMBR R8 R0 K12 0x7C180400, // 0037 CALL R6 2 - 0x8C180543, // 0038 GETMET R6 R2 K67 - 0x8820013C, // 0039 GETMBR R8 R0 K60 - 0x8824010D, // 003A GETMBR R9 R0 K13 + 0x8C180544, // 0038 GETMET R6 R2 K68 + 0x8820013D, // 0039 GETMBR R8 R0 K61 + 0x8824010C, // 003A GETMBR R9 R0 K12 0x7C180600, // 003B CALL R6 3 0x781A000B, // 003C JMPF R6 #0049 - 0xB81A3C00, // 003D GETNGBL R6 K30 + 0xB81A3A00, // 003D GETNGBL R6 K29 0x601C0018, // 003E GETGBL R7 G24 - 0x58200044, // 003F LDCONST R8 K68 + 0x58200045, // 003F LDCONST R8 K69 0x5C240800, // 0040 MOVE R9 R4 0x5C280600, // 0041 MOVE R10 R3 0x7C1C0600, // 0042 CALL R7 3 0x58200006, // 0043 LDCONST R8 K6 0x7C180400, // 0044 CALL R6 2 0x88180132, // 0045 GETMBR R6 R0 K50 - 0x8C180D45, // 0046 GETMET R6 R6 K69 + 0x8C180D46, // 0046 GETMET R6 R6 K70 0x7C180200, // 0047 CALL R6 1 0x70020005, // 0048 JMP #004F - 0xB81A3C00, // 0049 GETNGBL R6 K30 + 0xB81A3A00, // 0049 GETNGBL R6 K29 0x601C0018, // 004A GETGBL R7 G24 - 0x58200046, // 004B LDCONST R8 K70 + 0x58200047, // 004B LDCONST R8 K71 0x7C1C0200, // 004C CALL R7 1 0x58200006, // 004D LDCONST R8 K6 0x7C180400, // 004E CALL R6 2 @@ -1141,12 +1143,12 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0x7002000F, // 0050 JMP #0061 0xAC0C0002, // 0051 CATCH R3 0 2 0x7002000C, // 0052 JMP #0060 - 0xB8163C00, // 0053 GETNGBL R5 K30 + 0xB8163A00, // 0053 GETNGBL R5 K29 0x60180008, // 0054 GETGBL R6 G8 0x5C1C0600, // 0055 MOVE R7 R3 0x7C180200, // 0056 CALL R6 1 - 0x001A8E06, // 0057 ADD R6 K71 R6 - 0x00180D22, // 0058 ADD R6 R6 K34 + 0x001A9006, // 0057 ADD R6 K72 R6 + 0x00180D21, // 0058 ADD R6 R6 K33 0x601C0008, // 0059 GETGBL R7 G8 0x5C200800, // 005A MOVE R8 R4 0x7C1C0200, // 005B CALL R7 1 @@ -1179,24 +1181,24 @@ be_local_closure(class_Matter_Session_Store_create_session, /* name */ be_str_weak(create_session), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x8C0C0109, // 0000 GETMET R3 R0 K9 + 0x8C0C0108, // 0000 GETMET R3 R0 K8 0x5C140200, // 0001 MOVE R5 R1 0x7C0C0400, // 0002 CALL R3 2 0x4C100000, // 0003 LDNIL R4 0x20100604, // 0004 NE R4 R3 R4 0x78120002, // 0005 JMPF R4 #0009 - 0x8C100148, // 0006 GETMET R4 R0 K72 + 0x8C100149, // 0006 GETMET R4 R0 K73 0x5C180600, // 0007 MOVE R6 R3 0x7C100400, // 0008 CALL R4 2 - 0xB8121400, // 0009 GETNGBL R4 K10 - 0x8C10091A, // 000A GETMET R4 R4 K26 + 0xB8121200, // 0009 GETNGBL R4 K9 + 0x8C100919, // 000A GETMET R4 R4 K25 0x5C180000, // 000B MOVE R6 R0 0x5C1C0200, // 000C MOVE R7 R1 0x5C200400, // 000D MOVE R8 R2 0x7C100800, // 000E CALL R4 4 0x5C0C0800, // 000F MOVE R3 R4 0x88100101, // 0010 GETMBR R4 R0 K1 - 0x8C10091D, // 0011 GETMET R4 R4 K29 + 0x8C10091C, // 0011 GETMET R4 R4 K28 0x5C180600, // 0012 MOVE R6 R3 0x7C100400, // 0013 CALL R4 2 0x80040600, // 0014 RET 1 R3 @@ -1235,7 +1237,7 @@ be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */ 0x780E000B, // 0009 JMPF R3 #0016 0x880C0101, // 000A GETMBR R3 R0 K1 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x880C0749, // 000C GETMBR R3 R3 K73 + 0x880C074A, // 000C GETMBR R3 R3 K74 0x1C0C0601, // 000D EQ R3 R3 R1 0x780E0004, // 000E JMPF R3 #0014 0x880C0101, // 000F GETMBR R3 R0 K1 @@ -1243,16 +1245,16 @@ be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */ 0x5C140400, // 0011 MOVE R5 R2 0x7C0C0400, // 0012 CALL R3 2 0x70020000, // 0013 JMP #0015 - 0x00080503, // 0014 ADD R2 R2 K3 + 0x0008054B, // 0014 ADD R2 R2 K75 0x7001FFEE, // 0015 JMP #0005 - 0x8808010C, // 0016 GETMBR R2 R0 K12 + 0x8808010B, // 0016 GETMBR R2 R0 K11 0x4C0C0000, // 0017 LDNIL R3 0x20080403, // 0018 NE R2 R2 R3 0x780A0006, // 0019 JMPF R2 #0021 - 0x8808010C, // 001A GETMBR R2 R0 K12 + 0x8808010B, // 001A GETMBR R2 R0 K11 0x8C080502, // 001B GETMET R2 R2 K2 - 0x8810010C, // 001C GETMBR R4 R0 K12 - 0x8C100918, // 001D GETMET R4 R4 K24 + 0x8810010B, // 001C GETMBR R4 R0 K11 + 0x8C100917, // 001D GETMET R4 R4 K23 0x5C180200, // 001E MOVE R6 R1 0x7C100400, // 001F CALL R4 2 0x7C080400, // 0020 CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index 104fddec9..8d221453e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -51,30 +51,30 @@ static const bvalue be_ktab_class_Matter_TLV_item[93] = { /* K42 */ be_nested_str_weak(0x_X2504X_X3A_X3A), /* K43 */ be_nested_str_weak(0x_X2504X_X3A), /* K44 */ be_nested_str_weak(_X25i_X20), - /* K45 */ be_const_int(0), - /* K46 */ be_nested_str_weak(_X3D_X20), - /* K47 */ be_nested_str_weak(int), - /* K48 */ be_nested_str_weak(_X25i), - /* K49 */ be_nested_str_weak(U), - /* K50 */ be_nested_str_weak(bool), - /* K51 */ be_nested_str_weak(true), - /* K52 */ be_nested_str_weak(false), - /* K53 */ be_nested_str_weak(null), - /* K54 */ be_nested_str_weak(real), - /* K55 */ be_nested_str_weak(_X25g), - /* K56 */ be_nested_str_weak(string), - /* K57 */ be_nested_str_weak(_X22_X25s_X22), - /* K58 */ be_nested_str_weak(int64), - /* K59 */ be_nested_str_weak(tostring), - /* K60 */ be_nested_str_weak(instance), - /* K61 */ be_nested_str_weak(_X25s), - /* K62 */ be_nested_str_weak(tohex), - /* K63 */ be_nested_str_weak(_X20), - /* K64 */ be_nested_str_weak(_len), - /* K65 */ be_nested_str_weak(frombytes), - /* K66 */ be_nested_str_weak(geti), - /* K67 */ be_nested_str_weak(get), - /* K68 */ be_nested_str_weak(getfloat), + /* K45 */ be_nested_str_weak(_X3D_X20), + /* K46 */ be_nested_str_weak(int), + /* K47 */ be_nested_str_weak(_X25i), + /* K48 */ be_nested_str_weak(U), + /* K49 */ be_nested_str_weak(bool), + /* K50 */ be_nested_str_weak(true), + /* K51 */ be_nested_str_weak(false), + /* K52 */ be_nested_str_weak(null), + /* K53 */ be_nested_str_weak(real), + /* K54 */ be_nested_str_weak(_X25g), + /* K55 */ be_nested_str_weak(string), + /* K56 */ be_nested_str_weak(_X22_X25s_X22), + /* K57 */ be_nested_str_weak(int64), + /* K58 */ be_nested_str_weak(tostring), + /* K59 */ be_nested_str_weak(instance), + /* K60 */ be_nested_str_weak(_X25s), + /* K61 */ be_nested_str_weak(tohex), + /* K62 */ be_nested_str_weak(_X20), + /* K63 */ be_nested_str_weak(_len), + /* K64 */ be_nested_str_weak(frombytes), + /* K65 */ be_nested_str_weak(geti), + /* K66 */ be_nested_str_weak(get), + /* K67 */ be_nested_str_weak(getfloat), + /* K68 */ be_const_int(1), /* K69 */ be_nested_str_weak(asstring), /* K70 */ be_nested_str_weak(EOC), /* K71 */ be_nested_str_weak(log), @@ -83,22 +83,22 @@ static const bvalue be_ktab_class_Matter_TLV_item[93] = { /* K74 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), /* K75 */ be_nested_str_weak(set_fulltag), /* K76 */ be_nested_str_weak(add), - /* K77 */ be_const_class(be_class_Matter_TLV_item), - /* K78 */ be_const_int(1), - /* K79 */ be_nested_str_weak(_cmp_gt), - /* K80 */ be_nested_str_weak(stop_iteration), - /* K81 */ be_nested_str_weak(_encode_tag), - /* K82 */ be_nested_str_weak(copy), - /* K83 */ be_nested_str_weak(resize), - /* K84 */ be_nested_str_weak(tobytes), - /* K85 */ be_nested_str_weak(fromu32), - /* K86 */ be_nested_str_weak(setfloat), - /* K87 */ be_nested_str_weak(string_X20too_X20big), - /* K88 */ be_nested_str_weak(fromstring), - /* K89 */ be_nested_str_weak(frostring), - /* K90 */ be_nested_str_weak(bytes_X20too_X20big), - /* K91 */ be_const_int(3), - /* K92 */ be_const_int(2), + /* K77 */ be_const_int(2), + /* K78 */ be_const_class(be_class_Matter_TLV_item), + /* K79 */ be_const_int(0), + /* K80 */ be_nested_str_weak(_cmp_gt), + /* K81 */ be_nested_str_weak(stop_iteration), + /* K82 */ be_nested_str_weak(_encode_tag), + /* K83 */ be_nested_str_weak(copy), + /* K84 */ be_nested_str_weak(resize), + /* K85 */ be_nested_str_weak(tobytes), + /* K86 */ be_nested_str_weak(fromu32), + /* K87 */ be_nested_str_weak(setfloat), + /* K88 */ be_nested_str_weak(string_X20too_X20big), + /* K89 */ be_nested_str_weak(fromstring), + /* K90 */ be_nested_str_weak(frostring), + /* K91 */ be_nested_str_weak(bytes_X20too_X20big), + /* K92 */ be_const_int(3), }; @@ -592,16 +592,16 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ 0x600C000C, // 0038 GETGBL R3 G12 0x5C100400, // 0039 MOVE R4 R2 0x7C0C0200, // 003A CALL R3 1 - 0x240C072D, // 003B GT R3 R3 K45 + 0x240C070A, // 003B GT R3 R3 K10 0x780E0000, // 003C JMPF R3 #003E - 0x0008052E, // 003D ADD R2 R2 K46 + 0x0008052D, // 003D ADD R2 R2 K45 0x600C0004, // 003E GETGBL R3 G4 0x88100107, // 003F GETMBR R4 R0 K7 0x7C0C0200, // 0040 CALL R3 1 - 0x1C0C072F, // 0041 EQ R3 R3 K47 + 0x1C0C072E, // 0041 EQ R3 R3 K46 0x780E0010, // 0042 JMPF R3 #0054 0x600C0018, // 0043 GETGBL R3 G24 - 0x58100030, // 0044 LDCONST R4 K48 + 0x5810002F, // 0044 LDCONST R4 K47 0x88140107, // 0045 GETMBR R5 R0 K7 0x7C0C0400, // 0046 CALL R3 2 0x00080403, // 0047 ADD R2 R2 R3 @@ -615,33 +615,33 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ 0x88100920, // 004F GETMBR R4 R4 K32 0x180C0604, // 0050 LE R3 R3 R4 0x780E0000, // 0051 JMPF R3 #0053 - 0x00080531, // 0052 ADD R2 R2 K49 + 0x00080530, // 0052 ADD R2 R2 K48 0x70020048, // 0053 JMP #009D 0x600C0004, // 0054 GETGBL R3 G4 0x88100107, // 0055 GETMBR R4 R0 K7 0x7C0C0200, // 0056 CALL R3 1 - 0x1C0C0732, // 0057 EQ R3 R3 K50 + 0x1C0C0731, // 0057 EQ R3 R3 K49 0x780E0006, // 0058 JMPF R3 #0060 0x880C0107, // 0059 GETMBR R3 R0 K7 0x780E0001, // 005A JMPF R3 #005D - 0x580C0033, // 005B LDCONST R3 K51 + 0x580C0032, // 005B LDCONST R3 K50 0x70020000, // 005C JMP #005E - 0x580C0034, // 005D LDCONST R3 K52 + 0x580C0033, // 005D LDCONST R3 K51 0x00080403, // 005E ADD R2 R2 R3 0x7002003C, // 005F JMP #009D 0x880C0107, // 0060 GETMBR R3 R0 K7 0x4C100000, // 0061 LDNIL R4 0x1C0C0604, // 0062 EQ R3 R3 R4 0x780E0001, // 0063 JMPF R3 #0066 - 0x00080535, // 0064 ADD R2 R2 K53 + 0x00080534, // 0064 ADD R2 R2 K52 0x70020036, // 0065 JMP #009D 0x600C0004, // 0066 GETGBL R3 G4 0x88100107, // 0067 GETMBR R4 R0 K7 0x7C0C0200, // 0068 CALL R3 1 - 0x1C0C0736, // 0069 EQ R3 R3 K54 + 0x1C0C0735, // 0069 EQ R3 R3 K53 0x780E0005, // 006A JMPF R3 #0071 0x600C0018, // 006B GETGBL R3 G24 - 0x58100037, // 006C LDCONST R4 K55 + 0x58100036, // 006C LDCONST R4 K54 0x88140107, // 006D GETMBR R5 R0 K7 0x7C0C0400, // 006E CALL R3 2 0x00080403, // 006F ADD R2 R2 R3 @@ -649,21 +649,21 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ 0x600C0004, // 0071 GETGBL R3 G4 0x88100107, // 0072 GETMBR R4 R0 K7 0x7C0C0200, // 0073 CALL R3 1 - 0x1C0C0738, // 0074 EQ R3 R3 K56 + 0x1C0C0737, // 0074 EQ R3 R3 K55 0x780E0005, // 0075 JMPF R3 #007C 0x600C0018, // 0076 GETGBL R3 G24 - 0x58100039, // 0077 LDCONST R4 K57 + 0x58100038, // 0077 LDCONST R4 K56 0x88140107, // 0078 GETMBR R5 R0 K7 0x7C0C0400, // 0079 CALL R3 2 0x00080403, // 007A ADD R2 R2 R3 0x70020020, // 007B JMP #009D 0x600C000F, // 007C GETGBL R3 G15 0x88100107, // 007D GETMBR R4 R0 K7 - 0xB8167400, // 007E GETNGBL R5 K58 + 0xB8167200, // 007E GETNGBL R5 K57 0x7C0C0400, // 007F CALL R3 2 0x780E000F, // 0080 JMPF R3 #0091 0x880C0107, // 0081 GETMBR R3 R0 K7 - 0x8C0C073B, // 0082 GETMET R3 R3 K59 + 0x8C0C073A, // 0082 GETMET R3 R3 K58 0x7C0C0200, // 0083 CALL R3 1 0x00080403, // 0084 ADD R2 R2 R3 0x880C0106, // 0085 GETMBR R3 R0 K6 @@ -676,17 +676,17 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ 0x88100920, // 008C GETMBR R4 R4 K32 0x180C0604, // 008D LE R3 R3 R4 0x780E0000, // 008E JMPF R3 #0090 - 0x00080531, // 008F ADD R2 R2 K49 + 0x00080530, // 008F ADD R2 R2 K48 0x7002000B, // 0090 JMP #009D 0x600C0004, // 0091 GETGBL R3 G4 0x88100107, // 0092 GETMBR R4 R0 K7 0x7C0C0200, // 0093 CALL R3 1 - 0x1C0C073C, // 0094 EQ R3 R3 K60 + 0x1C0C073B, // 0094 EQ R3 R3 K59 0x780E0006, // 0095 JMPF R3 #009D 0x600C0018, // 0096 GETGBL R3 G24 - 0x5810003D, // 0097 LDCONST R4 K61 + 0x5810003C, // 0097 LDCONST R4 K60 0x88140107, // 0098 GETMBR R5 R0 K7 - 0x8C140B3E, // 0099 GETMET R5 R5 K62 + 0x8C140B3D, // 0099 GETMET R5 R5 K61 0x7C140200, // 009A CALL R5 1 0x7C0C0400, // 009B CALL R3 2 0x00080403, // 009C ADD R2 R2 R3 @@ -694,7 +694,7 @@ be_local_closure(class_Matter_TLV_item_tostring, /* name */ 0x70020006, // 009E JMP #00A6 0xAC0C0002, // 009F CATCH R3 0 2 0x70020003, // 00A0 JMP #00A5 - 0x0014073F, // 00A1 ADD R5 R3 K63 + 0x0014073E, // 00A1 ADD R5 R3 K62 0x00140A04, // 00A2 ADD R5 R5 R4 0x80040A00, // 00A3 RET 1 R5 0x70020000, // 00A4 JMP #00A6 @@ -726,7 +726,7 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ 0x60040004, // 0000 GETGBL R1 G4 0x88080107, // 0001 GETMBR R2 R0 K7 0x7C040200, // 0002 CALL R1 1 - 0x1C04032F, // 0003 EQ R1 R1 K47 + 0x1C04032E, // 0003 EQ R1 R1 K46 0x78060014, // 0004 JMPF R1 #001A 0x88040106, // 0005 GETMBR R1 R0 K6 0x88080109, // 0006 GETMBR R2 R0 K9 @@ -741,7 +741,7 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ 0x60040008, // 000F GETGBL R1 G8 0x88080107, // 0010 GETMBR R2 R0 K7 0x7C040200, // 0011 CALL R1 1 - 0x00040331, // 0012 ADD R1 R1 K49 + 0x00040330, // 0012 ADD R1 R1 K48 0x80040200, // 0013 RET 1 R1 0x70020003, // 0014 JMP #0019 0x60040008, // 0015 GETGBL R1 G8 @@ -752,25 +752,25 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ 0x60040004, // 001A GETGBL R1 G4 0x88080107, // 001B GETMBR R2 R0 K7 0x7C040200, // 001C CALL R1 1 - 0x1C040332, // 001D EQ R1 R1 K50 + 0x1C040331, // 001D EQ R1 R1 K49 0x78060006, // 001E JMPF R1 #0026 0x88040107, // 001F GETMBR R1 R0 K7 0x78060001, // 0020 JMPF R1 #0023 - 0x58040033, // 0021 LDCONST R1 K51 + 0x58040032, // 0021 LDCONST R1 K50 0x70020000, // 0022 JMP #0024 - 0x58040034, // 0023 LDCONST R1 K52 + 0x58040033, // 0023 LDCONST R1 K51 0x80040200, // 0024 RET 1 R1 0x7002003A, // 0025 JMP #0061 0x88040107, // 0026 GETMBR R1 R0 K7 0x4C080000, // 0027 LDNIL R2 0x1C040202, // 0028 EQ R1 R1 R2 0x78060001, // 0029 JMPF R1 #002C - 0x80066A00, // 002A RET 1 K53 + 0x80066800, // 002A RET 1 K52 0x70020034, // 002B JMP #0061 0x60040004, // 002C GETGBL R1 G4 0x88080107, // 002D GETMBR R2 R0 K7 0x7C040200, // 002E CALL R1 1 - 0x1C040336, // 002F EQ R1 R1 K54 + 0x1C040335, // 002F EQ R1 R1 K53 0x78060004, // 0030 JMPF R1 #0036 0x60040008, // 0031 GETGBL R1 G8 0x88080107, // 0032 GETMBR R2 R0 K7 @@ -780,14 +780,14 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ 0x60040004, // 0036 GETGBL R1 G4 0x88080107, // 0037 GETMBR R2 R0 K7 0x7C040200, // 0038 CALL R1 1 - 0x1C040338, // 0039 EQ R1 R1 K56 + 0x1C040337, // 0039 EQ R1 R1 K55 0x78060002, // 003A JMPF R1 #003E 0x88040107, // 003B GETMBR R1 R0 K7 0x80040200, // 003C RET 1 R1 0x70020022, // 003D JMP #0061 0x6004000F, // 003E GETGBL R1 G15 0x88080107, // 003F GETMBR R2 R0 K7 - 0xB80E7400, // 0040 GETNGBL R3 K58 + 0xB80E7200, // 0040 GETNGBL R3 K57 0x7C040400, // 0041 CALL R1 2 0x78060014, // 0042 JMPF R1 #0058 0x88040106, // 0043 GETMBR R1 R0 K6 @@ -801,22 +801,22 @@ be_local_closure(class_Matter_TLV_item_to_str_val, /* name */ 0x18040202, // 004B LE R1 R1 R2 0x78060005, // 004C JMPF R1 #0053 0x88040107, // 004D GETMBR R1 R0 K7 - 0x8C04033B, // 004E GETMET R1 R1 K59 + 0x8C04033A, // 004E GETMET R1 R1 K58 0x7C040200, // 004F CALL R1 1 - 0x00040331, // 0050 ADD R1 R1 K49 + 0x00040330, // 0050 ADD R1 R1 K48 0x80040200, // 0051 RET 1 R1 0x70020003, // 0052 JMP #0057 0x88040107, // 0053 GETMBR R1 R0 K7 - 0x8C04033B, // 0054 GETMET R1 R1 K59 + 0x8C04033A, // 0054 GETMET R1 R1 K58 0x7C040200, // 0055 CALL R1 1 0x80040200, // 0056 RET 1 R1 0x70020008, // 0057 JMP #0061 0x60040004, // 0058 GETGBL R1 G4 0x88080107, // 0059 GETMBR R2 R0 K7 0x7C040200, // 005A CALL R1 1 - 0x1C04033C, // 005B EQ R1 R1 K60 + 0x1C04033B, // 005B EQ R1 R1 K59 0x78060003, // 005C JMPF R1 #0061 - 0x8C04013B, // 005D GETMET R1 R0 K59 + 0x8C04013A, // 005D GETMET R1 R0 K58 0x500C0200, // 005E LDBOOL R3 1 0 0x7C040400, // 005F CALL R1 2 0x80040200, // 0060 RET 1 R1 @@ -884,13 +884,13 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ ( &(const binstruction[101]) { /* code */ 0x880C0106, // 0000 GETMBR R3 R0 K6 0x88100109, // 0001 GETMBR R4 R0 K9 - 0x88140940, // 0002 GETMBR R5 R4 K64 + 0x8814093F, // 0002 GETMBR R5 R4 K63 0x94140A03, // 0003 GETIDX R5 R5 R3 0x541A0007, // 0004 LDINT R6 8 0x1C180A06, // 0005 EQ R6 R5 R6 0x781A0008, // 0006 JMPF R6 #0010 - 0xB81A7400, // 0007 GETNGBL R6 K58 - 0x8C180D41, // 0008 GETMET R6 R6 K65 + 0xB81A7200, // 0007 GETNGBL R6 K57 + 0x8C180D40, // 0008 GETMET R6 R6 K64 0x5C200200, // 0009 MOVE R8 R1 0x5C240400, // 000A MOVE R9 R2 0x7C180600, // 000B CALL R6 3 @@ -914,12 +914,12 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x8818091F, // 001D GETMBR R6 R4 K31 0x18180606, // 001E LE R6 R3 R6 0x781A0004, // 001F JMPF R6 #0025 - 0x8C180342, // 0020 GETMET R6 R1 K66 + 0x8C180341, // 0020 GETMET R6 R1 K65 0x5C200400, // 0021 MOVE R8 R2 0x5C240A00, // 0022 MOVE R9 R5 0x7C180600, // 0023 CALL R6 3 0x70020003, // 0024 JMP #0029 - 0x8C180343, // 0025 GETMET R6 R1 K67 + 0x8C180342, // 0025 GETMET R6 R1 K66 0x5C200400, // 0026 MOVE R8 R2 0x5C240A00, // 0027 MOVE R9 R5 0x7C180600, // 0028 CALL R6 3 @@ -929,7 +929,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x88180921, // 002C GETMBR R6 R4 K33 0x1C180606, // 002D EQ R6 R3 R6 0x781A0006, // 002E JMPF R6 #0036 - 0x8C180344, // 002F GETMET R6 R1 K68 + 0x8C180343, // 002F GETMET R6 R1 K67 0x5C200400, // 0030 MOVE R8 R2 0x7C180400, // 0031 CALL R6 2 0x90020E06, // 0032 SETMBR R0 K7 R6 @@ -942,14 +942,14 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x5419FFFE, // 0039 LDINT R6 -1 0x18180A06, // 003A LE R6 R5 R6 0x781A0013, // 003B JMPF R6 #0050 - 0x8C180343, // 003C GETMET R6 R1 K67 + 0x8C180342, // 003C GETMET R6 R1 K66 0x5C200400, // 003D MOVE R8 R2 0x44240A00, // 003E NEG R9 R5 0x7C180600, // 003F CALL R6 3 0x441C0A00, // 0040 NEG R7 R5 0x00080407, // 0041 ADD R2 R2 R7 0x001C0406, // 0042 ADD R7 R2 R6 - 0x041C0F1D, // 0043 SUB R7 R7 K29 + 0x041C0F44, // 0043 SUB R7 R7 K68 0x401C0407, // 0044 CONNECT R7 R2 R7 0x941C0207, // 0045 GETIDX R7 R1 R7 0x90020E07, // 0046 SETMBR R0 K7 R7 @@ -1041,15 +1041,15 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x780A0001, // 0003 JMPF R2 #0006 0x88080104, // 0004 GETMBR R2 R0 K4 0x70020000, // 0005 JMP #0007 - 0x5808002D, // 0006 LDCONST R2 K45 + 0x5808000A, // 0006 LDCONST R2 K10 0x540EFFFF, // 0007 LDINT R3 65536 0x280C0403, // 0008 GE R3 R2 R3 0x740E0002, // 0009 JMPT R3 #000D - 0x140C052D, // 000A LT R3 R2 K45 + 0x140C050A, // 000A LT R3 R2 K10 0x740E0000, // 000B JMPT R3 #000D 0x500C0001, // 000C LDBOOL R3 0 1 0x500C0200, // 000D LDBOOL R3 1 0 - 0x5810002D, // 000E LDCONST R4 K45 + 0x5810000A, // 000E LDCONST R4 K10 0x88140102, // 000F GETMBR R5 R0 K2 0x4C180000, // 0010 LDNIL R6 0x20140A06, // 0011 NE R5 R5 R6 @@ -1059,15 +1059,15 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x541E00DF, // 0015 LDINT R7 224 0x88200106, // 0016 GETMBR R8 R0 K6 0x001C0E08, // 0017 ADD R7 R7 R8 - 0x5820001D, // 0018 LDCONST R8 K29 + 0x58200044, // 0018 LDCONST R8 K68 0x7C140600, // 0019 CALL R5 3 0x8C14034C, // 001A GETMET R5 R1 K76 0x881C0102, // 001B GETMBR R7 R0 K2 - 0x5820001E, // 001C LDCONST R8 K30 + 0x5820004D, // 001C LDCONST R8 K77 0x7C140600, // 001D CALL R5 3 0x8C14034C, // 001E GETMET R5 R1 K76 0x881C0103, // 001F GETMBR R7 R0 K3 - 0x5820001E, // 0020 LDCONST R8 K30 + 0x5820004D, // 0020 LDCONST R8 K77 0x7C140600, // 0021 CALL R5 3 0x8C14034C, // 0022 GETMET R5 R1 K76 0x881C0104, // 0023 GETMBR R7 R0 K4 @@ -1078,19 +1078,19 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x541E00BF, // 0028 LDINT R7 192 0x88200106, // 0029 GETMBR R8 R0 K6 0x001C0E08, // 002A ADD R7 R7 R8 - 0x5820001D, // 002B LDCONST R8 K29 + 0x58200044, // 002B LDCONST R8 K68 0x7C140600, // 002C CALL R5 3 0x8C14034C, // 002D GETMET R5 R1 K76 0x881C0102, // 002E GETMBR R7 R0 K2 - 0x5820001E, // 002F LDCONST R8 K30 + 0x5820004D, // 002F LDCONST R8 K77 0x7C140600, // 0030 CALL R5 3 0x8C14034C, // 0031 GETMET R5 R1 K76 0x881C0103, // 0032 GETMBR R7 R0 K3 - 0x5820001E, // 0033 LDCONST R8 K30 + 0x5820004D, // 0033 LDCONST R8 K77 0x7C140600, // 0034 CALL R5 3 0x8C14034C, // 0035 GETMET R5 R1 K76 0x881C0104, // 0036 GETMBR R7 R0 K4 - 0x5820001E, // 0037 LDCONST R8 K30 + 0x5820004D, // 0037 LDCONST R8 K77 0x7C140600, // 0038 CALL R5 3 0x70020049, // 0039 JMP #0084 0x88140103, // 003A GETMBR R5 R0 K3 @@ -1102,7 +1102,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x541E005F, // 0040 LDINT R7 96 0x88200106, // 0041 GETMBR R8 R0 K6 0x001C0E08, // 0042 ADD R7 R7 R8 - 0x5820001D, // 0043 LDCONST R8 K29 + 0x58200044, // 0043 LDCONST R8 K68 0x7C140600, // 0044 CALL R5 3 0x8C14034C, // 0045 GETMET R5 R1 K76 0x881C0104, // 0046 GETMBR R7 R0 K4 @@ -1113,11 +1113,11 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x541E003F, // 004B LDINT R7 64 0x88200106, // 004C GETMBR R8 R0 K6 0x001C0E08, // 004D ADD R7 R7 R8 - 0x5820001D, // 004E LDCONST R8 K29 + 0x58200044, // 004E LDCONST R8 K68 0x7C140600, // 004F CALL R5 3 0x8C14034C, // 0050 GETMET R5 R1 K76 0x881C0104, // 0051 GETMBR R7 R0 K4 - 0x5820001E, // 0052 LDCONST R8 K30 + 0x5820004D, // 0052 LDCONST R8 K77 0x7C140600, // 0053 CALL R5 3 0x7002002E, // 0054 JMP #0084 0x88140103, // 0055 GETMBR R5 R0 K3 @@ -1129,7 +1129,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x541E009F, // 005B LDINT R7 160 0x88200106, // 005C GETMBR R8 R0 K6 0x001C0E08, // 005D ADD R7 R7 R8 - 0x5820001D, // 005E LDCONST R8 K29 + 0x58200044, // 005E LDCONST R8 K68 0x7C140600, // 005F CALL R5 3 0x8C14034C, // 0060 GETMET R5 R1 K76 0x881C0104, // 0061 GETMBR R7 R0 K4 @@ -1140,11 +1140,11 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x541E007F, // 0066 LDINT R7 128 0x88200106, // 0067 GETMBR R8 R0 K6 0x001C0E08, // 0068 ADD R7 R7 R8 - 0x5820001D, // 0069 LDCONST R8 K29 + 0x58200044, // 0069 LDCONST R8 K68 0x7C140600, // 006A CALL R5 3 0x8C14034C, // 006B GETMET R5 R1 K76 0x881C0104, // 006C GETMBR R7 R0 K4 - 0x5820001E, // 006D LDCONST R8 K30 + 0x5820004D, // 006D LDCONST R8 K77 0x7C140600, // 006E CALL R5 3 0x70020013, // 006F JMP #0084 0x88140105, // 0070 GETMBR R5 R0 K5 @@ -1155,17 +1155,17 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x541E001F, // 0075 LDINT R7 32 0x88200106, // 0076 GETMBR R8 R0 K6 0x001C0E08, // 0077 ADD R7 R7 R8 - 0x5820001D, // 0078 LDCONST R8 K29 + 0x58200044, // 0078 LDCONST R8 K68 0x7C140600, // 0079 CALL R5 3 0x8C14034C, // 007A GETMET R5 R1 K76 0x881C0105, // 007B GETMBR R7 R0 K5 - 0x5820001D, // 007C LDCONST R8 K29 + 0x58200044, // 007C LDCONST R8 K68 0x7C140600, // 007D CALL R5 3 0x70020004, // 007E JMP #0084 0x8C14034C, // 007F GETMET R5 R1 K76 0x881C0106, // 0080 GETMBR R7 R0 K6 - 0x001E5A07, // 0081 ADD R7 K45 R7 - 0x5820001D, // 0082 LDCONST R8 K29 + 0x001E1407, // 0081 ADD R7 K10 R7 + 0x58200044, // 0082 LDCONST R8 K68 0x7C140600, // 0083 CALL R5 3 0x80000000, // 0084 RET 0 }) @@ -1191,36 +1191,36 @@ be_local_closure(class_Matter_TLV_item_sort, /* name */ be_str_weak(sort), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x5804004D, // 0000 LDCONST R1 K77 + 0x5804004E, // 0000 LDCONST R1 K78 0x60080010, // 0001 GETGBL R2 G16 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 - 0x040C074E, // 0005 SUB R3 R3 K78 - 0x400E9C03, // 0006 CONNECT R3 K78 R3 + 0x040C0744, // 0005 SUB R3 R3 K68 + 0x400E8803, // 0006 CONNECT R3 K68 R3 0x7C080200, // 0007 CALL R2 1 0xA8020013, // 0008 EXBLK 0 #001D 0x5C0C0400, // 0009 MOVE R3 R2 0x7C0C0000, // 000A CALL R3 0 0x94100003, // 000B GETIDX R4 R0 R3 0x5C140600, // 000C MOVE R5 R3 - 0x24180B2D, // 000D GT R6 R5 K45 + 0x24180B4F, // 000D GT R6 R5 K79 0x781A000B, // 000E JMPF R6 #001B - 0x04180B4E, // 000F SUB R6 R5 K78 + 0x04180B44, // 000F SUB R6 R5 K68 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x8C180D4F, // 0011 GETMET R6 R6 K79 + 0x8C180D50, // 0011 GETMET R6 R6 K80 0x5C200800, // 0012 MOVE R8 R4 0x7C180400, // 0013 CALL R6 2 - 0x24180D2D, // 0014 GT R6 R6 K45 + 0x24180D4F, // 0014 GT R6 R6 K79 0x781A0004, // 0015 JMPF R6 #001B - 0x04180B4E, // 0016 SUB R6 R5 K78 + 0x04180B44, // 0016 SUB R6 R5 K68 0x94180006, // 0017 GETIDX R6 R0 R6 0x98000A06, // 0018 SETIDX R0 R5 R6 - 0x04140B4E, // 0019 SUB R5 R5 K78 + 0x04140B44, // 0019 SUB R5 R5 K68 0x7001FFF1, // 001A JMP #000D 0x98000A04, // 001B SETIDX R0 R5 R4 0x7001FFEB, // 001C JMP #0009 - 0x58080050, // 001D LDCONST R2 K80 + 0x58080051, // 001D LDCONST R2 K81 0xAC080200, // 001E CATCH R2 1 0 0xB0080000, // 001F RAISE 2 R0 R0 0x80040000, // 0020 RET 1 R0 @@ -1280,12 +1280,12 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x4C0C0000, // 0005 LDNIL R3 0x1C080403, // 0006 EQ R2 R2 R3 0x780A0000, // 0007 JMPF R2 #0009 - 0x80069C00, // 0008 RET 1 K78 + 0x80063A00, // 0008 RET 1 K29 0x88080102, // 0009 GETMBR R2 R0 K2 0x880C0302, // 000A GETMBR R3 R1 K2 0x24080403, // 000B GT R2 R2 R3 0x780A0000, // 000C JMPF R2 #000E - 0x80069C00, // 000D RET 1 K78 + 0x80063A00, // 000D RET 1 K29 0x88080102, // 000E GETMBR R2 R0 K2 0x880C0302, // 000F GETMBR R3 R1 K2 0x1C080403, // 0010 EQ R2 R2 R3 @@ -1294,7 +1294,7 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x880C0303, // 0013 GETMBR R3 R1 K3 0x24080403, // 0014 GT R2 R2 R3 0x780A0000, // 0015 JMPF R2 #0017 - 0x80069C00, // 0016 RET 1 K78 + 0x80063A00, // 0016 RET 1 K29 0x88080103, // 0017 GETMBR R2 R0 K3 0x540DFFFE, // 0018 LDINT R3 -1 0x1C080403, // 0019 EQ R2 R2 R3 @@ -1303,7 +1303,7 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x4C0C0000, // 001C LDNIL R3 0x1C080403, // 001D EQ R2 R2 R3 0x780A0000, // 001E JMPF R2 #0020 - 0x80069C00, // 001F RET 1 K78 + 0x80063A00, // 001F RET 1 K29 0x70020008, // 0020 JMP #002A 0x88080103, // 0021 GETMBR R2 R0 K3 0x4C0C0000, // 0022 LDNIL R3 @@ -1313,7 +1313,7 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x540DFFFE, // 0026 LDINT R3 -1 0x1C080403, // 0027 EQ R2 R2 R3 0x780A0000, // 0028 JMPF R2 #002A - 0x80061400, // 0029 RET 1 K10 + 0x80069E00, // 0029 RET 1 K79 0x88080104, // 002A GETMBR R2 R0 K4 0x4C0C0000, // 002B LDNIL R3 0x20080403, // 002C NE R2 R2 R3 @@ -1322,13 +1322,13 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x4C0C0000, // 002F LDNIL R3 0x1C080403, // 0030 EQ R2 R2 R3 0x780A0000, // 0031 JMPF R2 #0033 - 0x80069C00, // 0032 RET 1 K78 + 0x80063A00, // 0032 RET 1 K29 0x88080104, // 0033 GETMBR R2 R0 K4 0x880C0304, // 0034 GETMBR R3 R1 K4 0x24080403, // 0035 GT R2 R2 R3 0x780A0000, // 0036 JMPF R2 #0038 - 0x80069C00, // 0037 RET 1 K78 - 0x80061400, // 0038 RET 1 K10 + 0x80063A00, // 0037 RET 1 K29 + 0x80069E00, // 0038 RET 1 K79 0x88080105, // 0039 GETMBR R2 R0 K5 0x4C0C0000, // 003A LDNIL R3 0x20080403, // 003B NE R2 R2 R3 @@ -1337,13 +1337,13 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x4C0C0000, // 003E LDNIL R3 0x1C080403, // 003F EQ R2 R2 R3 0x780A0000, // 0040 JMPF R2 #0042 - 0x80069C00, // 0041 RET 1 K78 + 0x80063A00, // 0041 RET 1 K29 0x88080105, // 0042 GETMBR R2 R0 K5 0x880C0305, // 0043 GETMBR R3 R1 K5 0x24080403, // 0044 GT R2 R2 R3 0x780A0000, // 0045 JMPF R2 #0047 - 0x80069C00, // 0046 RET 1 K78 - 0x80061400, // 0047 RET 1 K10 + 0x80063A00, // 0046 RET 1 K29 + 0x80069E00, // 0047 RET 1 K79 }) ) ); @@ -1392,7 +1392,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x600C0004, // 0016 GETGBL R3 G4 0x88100107, // 0017 GETMBR R4 R0 K7 0x7C0C0200, // 0018 CALL R3 1 - 0x1C0C072F, // 0019 EQ R3 R3 K47 + 0x1C0C072E, // 0019 EQ R3 R3 K46 0x780E0008, // 001A JMPF R3 #0024 0x880C0106, // 001B GETMBR R3 R0 K6 0x8810051F, // 001C GETMBR R4 R2 K31 @@ -1463,7 +1463,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x541200FE, // 005D LDINT R4 255 0x18100604, // 005E LE R4 R3 R4 0x78120004, // 005F JMPF R4 #0065 - 0x2810072D, // 0060 GE R4 R3 K45 + 0x2810074F, // 0060 GE R4 R3 K79 0x78120002, // 0061 JMPF R4 #0065 0x88100513, // 0062 GETMBR R4 R2 K19 0x90020C04, // 0063 SETMBR R0 K6 R4 @@ -1471,7 +1471,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5412FFFE, // 0065 LDINT R4 65535 0x18100604, // 0066 LE R4 R3 R4 0x78120003, // 0067 JMPF R4 #006C - 0x2810072D, // 0068 GE R4 R3 K45 + 0x2810074F, // 0068 GE R4 R3 K79 0x78120001, // 0069 JMPF R4 #006C 0x88100511, // 006A GETMBR R4 R2 K17 0x90020C04, // 006B SETMBR R0 K6 R4 @@ -1533,7 +1533,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x70020001, // 00A3 JMP #00A6 0x880C051B, // 00A4 GETMBR R3 R2 K27 0x90020C03, // 00A5 SETMBR R0 K6 R3 - 0x8C0C0151, // 00A6 GETMET R3 R0 K81 + 0x8C0C0152, // 00A6 GETMET R3 R0 K82 0x5C140200, // 00A7 MOVE R5 R1 0x7C0C0400, // 00A8 CALL R3 2 0x880C0106, // 00A9 GETMBR R3 R0 K6 @@ -1548,7 +1548,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x60140009, // 00B2 GETGBL R5 G9 0x88180107, // 00B3 GETMBR R6 R0 K7 0x7C140200, // 00B4 CALL R5 1 - 0x5818001D, // 00B5 LDCONST R6 K29 + 0x58180044, // 00B5 LDCONST R6 K68 0x7C0C0600, // 00B6 CALL R3 3 0x700200DA, // 00B7 JMP #0193 0x880C0106, // 00B8 GETMBR R3 R0 K6 @@ -1563,7 +1563,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x60140009, // 00C1 GETGBL R5 G9 0x88180107, // 00C2 GETMBR R6 R0 K7 0x7C140200, // 00C3 CALL R5 1 - 0x5818001E, // 00C4 LDCONST R6 K30 + 0x5818004D, // 00C4 LDCONST R6 K77 0x7C0C0600, // 00C5 CALL R3 3 0x700200CB, // 00C6 JMP #0193 0x880C0106, // 00C7 GETMBR R3 R0 K6 @@ -1595,19 +1595,19 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x60180015, // 00E1 GETGBL R6 G21 0x7C100400, // 00E2 CALL R4 2 0x78120006, // 00E3 JMPF R4 #00EB - 0x8C100752, // 00E4 GETMET R4 R3 K82 + 0x8C100753, // 00E4 GETMET R4 R3 K83 0x7C100200, // 00E5 CALL R4 1 - 0x8C100953, // 00E6 GETMET R4 R4 K83 + 0x8C100954, // 00E6 GETMET R4 R4 K84 0x541A0007, // 00E7 LDINT R6 8 0x7C100400, // 00E8 CALL R4 2 0x5C0C0800, // 00E9 MOVE R3 R4 0x7002001E, // 00EA JMP #010A 0x6010000F, // 00EB GETGBL R4 G15 0x5C140600, // 00EC MOVE R5 R3 - 0xB81A7400, // 00ED GETNGBL R6 K58 + 0xB81A7200, // 00ED GETNGBL R6 K57 0x7C100400, // 00EE CALL R4 2 0x78120003, // 00EF JMPF R4 #00F4 - 0x8C100754, // 00F0 GETMET R4 R3 K84 + 0x8C100755, // 00F0 GETMET R4 R3 K85 0x7C100200, // 00F1 CALL R4 1 0x5C0C0800, // 00F2 MOVE R3 R4 0x70020015, // 00F3 JMP #010A @@ -1615,22 +1615,22 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x8814051F, // 00F5 GETMBR R5 R2 K31 0x1C100805, // 00F6 EQ R4 R4 R5 0x78120008, // 00F7 JMPF R4 #0101 - 0xB8127400, // 00F8 GETNGBL R4 K58 + 0xB8127200, // 00F8 GETNGBL R4 K57 0x60140009, // 00F9 GETGBL R5 G9 0x5C180600, // 00FA MOVE R6 R3 0x7C140200, // 00FB CALL R5 1 0x7C100200, // 00FC CALL R4 1 - 0x8C100954, // 00FD GETMET R4 R4 K84 + 0x8C100955, // 00FD GETMET R4 R4 K85 0x7C100200, // 00FE CALL R4 1 0x5C0C0800, // 00FF MOVE R3 R4 0x70020008, // 0100 JMP #010A - 0xB8127400, // 0101 GETNGBL R4 K58 - 0x8C100955, // 0102 GETMET R4 R4 K85 + 0xB8127200, // 0101 GETNGBL R4 K57 + 0x8C100956, // 0102 GETMET R4 R4 K86 0x60180009, // 0103 GETGBL R6 G9 0x5C1C0600, // 0104 MOVE R7 R3 0x7C180200, // 0105 CALL R6 1 0x7C100400, // 0106 CALL R4 2 - 0x8C100954, // 0107 GETMET R4 R4 K84 + 0x8C100955, // 0107 GETMET R4 R4 K85 0x7C100200, // 0108 CALL R4 1 0x5C0C0800, // 0109 MOVE R3 R4 0x40100203, // 010A CONNECT R4 R1 R3 @@ -1652,10 +1652,10 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5C100200, // 011A MOVE R4 R1 0x7C0C0200, // 011B CALL R3 1 0x8C10034C, // 011C GETMET R4 R1 K76 - 0x5818002D, // 011D LDCONST R6 K45 + 0x5818004F, // 011D LDCONST R6 K79 0x541E0003, // 011E LDINT R7 4 0x7C100600, // 011F CALL R4 3 - 0x8C100356, // 0120 GETMET R4 R1 K86 + 0x8C100357, // 0120 GETMET R4 R1 K87 0x5C180600, // 0121 MOVE R6 R3 0x601C000A, // 0122 GETGBL R7 G10 0x88200107, // 0123 GETMBR R8 R0 K7 @@ -1678,16 +1678,16 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x541200FE, // 0134 LDINT R4 255 0x240C0604, // 0135 GT R3 R3 R4 0x780E0000, // 0136 JMPF R3 #0138 - 0xB0064757, // 0137 RAISE 1 K35 K87 + 0xB0064758, // 0137 RAISE 1 K35 K88 0x8C0C034C, // 0138 GETMET R3 R1 K76 0x6014000C, // 0139 GETGBL R5 G12 0x88180107, // 013A GETMBR R6 R0 K7 0x7C140200, // 013B CALL R5 1 - 0x5818001D, // 013C LDCONST R6 K29 + 0x58180044, // 013C LDCONST R6 K68 0x7C0C0600, // 013D CALL R3 3 0x600C0015, // 013E GETGBL R3 G21 0x7C0C0000, // 013F CALL R3 0 - 0x8C0C0758, // 0140 GETMET R3 R3 K88 + 0x8C0C0759, // 0140 GETMET R3 R3 K89 0x60140008, // 0141 GETGBL R5 G8 0x88180107, // 0142 GETMBR R6 R0 K7 0x7C140200, // 0143 CALL R5 1 @@ -1704,16 +1704,16 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5412FFFE, // 014E LDINT R4 65535 0x240C0604, // 014F GT R3 R3 R4 0x780E0000, // 0150 JMPF R3 #0152 - 0xB0064757, // 0151 RAISE 1 K35 K87 + 0xB0064758, // 0151 RAISE 1 K35 K88 0x8C0C034C, // 0152 GETMET R3 R1 K76 0x6014000C, // 0153 GETGBL R5 G12 0x88180107, // 0154 GETMBR R6 R0 K7 0x7C140200, // 0155 CALL R5 1 - 0x5818001E, // 0156 LDCONST R6 K30 + 0x5818004D, // 0156 LDCONST R6 K77 0x7C0C0600, // 0157 CALL R3 3 0x600C0015, // 0158 GETGBL R3 G21 0x7C0C0000, // 0159 CALL R3 0 - 0x8C0C0759, // 015A GETMET R3 R3 K89 + 0x8C0C075A, // 015A GETMET R3 R3 K90 0x60140008, // 015B GETGBL R5 G8 0x88180107, // 015C GETMBR R6 R0 K7 0x7C140200, // 015D CALL R5 1 @@ -1730,12 +1730,12 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x541200FE, // 0168 LDINT R4 255 0x240C0604, // 0169 GT R3 R3 R4 0x780E0000, // 016A JMPF R3 #016C - 0xB006475A, // 016B RAISE 1 K35 K90 + 0xB006475B, // 016B RAISE 1 K35 K91 0x8C0C034C, // 016C GETMET R3 R1 K76 0x6014000C, // 016D GETGBL R5 G12 0x88180107, // 016E GETMBR R6 R0 K7 0x7C140200, // 016F CALL R5 1 - 0x5818001D, // 0170 LDCONST R6 K29 + 0x58180044, // 0170 LDCONST R6 K68 0x7C0C0600, // 0171 CALL R3 3 0x880C0107, // 0172 GETMBR R3 R0 K7 0x400C0203, // 0173 CONNECT R3 R1 R3 @@ -1750,12 +1750,12 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5412FFFE, // 017C LDINT R4 65535 0x240C0604, // 017D GT R3 R3 R4 0x780E0000, // 017E JMPF R3 #0180 - 0xB006475A, // 017F RAISE 1 K35 K90 + 0xB006475B, // 017F RAISE 1 K35 K91 0x8C0C034C, // 0180 GETMET R3 R1 K76 0x6014000C, // 0181 GETGBL R5 G12 0x88180107, // 0182 GETMBR R6 R0 K7 0x7C140200, // 0183 CALL R5 1 - 0x5818001E, // 0184 LDCONST R6 K30 + 0x5818004D, // 0184 LDCONST R6 K77 0x7C0C0600, // 0185 CALL R3 3 0x880C0107, // 0186 GETMBR R3 R0 K7 0x400C0203, // 0187 CONNECT R3 R1 R3 @@ -1800,15 +1800,15 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x78060001, // 0003 JMPF R1 #0006 0x88040104, // 0004 GETMBR R1 R0 K4 0x70020000, // 0005 JMP #0007 - 0x5804002D, // 0006 LDCONST R1 K45 + 0x5804000A, // 0006 LDCONST R1 K10 0x540AFFFF, // 0007 LDINT R2 65536 0x28080202, // 0008 GE R2 R1 R2 0x740A0002, // 0009 JMPT R2 #000D - 0x1408032D, // 000A LT R2 R1 K45 + 0x1408030A, // 000A LT R2 R1 K10 0x740A0000, // 000B JMPT R2 #000D 0x50080001, // 000C LDBOOL R2 0 1 0x50080200, // 000D LDBOOL R2 1 0 - 0x580C002D, // 000E LDCONST R3 K45 + 0x580C000A, // 000E LDCONST R3 K10 0x88100102, // 000F GETMBR R4 R0 K2 0x4C140000, // 0010 LDNIL R5 0x20100805, // 0011 NE R4 R4 R5 @@ -1828,7 +1828,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x54120004, // 001F LDINT R4 5 0x80040800, // 0020 RET 1 R4 0x70020000, // 0021 JMP #0023 - 0x8006B600, // 0022 RET 1 K91 + 0x8006B800, // 0022 RET 1 K92 0x70020010, // 0023 JMP #0035 0x88100103, // 0024 GETMBR R4 R0 K3 0x4C140000, // 0025 LDNIL R5 @@ -1838,15 +1838,15 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x54120004, // 0029 LDINT R4 5 0x80040800, // 002A RET 1 R4 0x70020000, // 002B JMP #002D - 0x8006B600, // 002C RET 1 K91 + 0x8006B800, // 002C RET 1 K92 0x70020006, // 002D JMP #0035 0x88100105, // 002E GETMBR R4 R0 K5 0x4C140000, // 002F LDNIL R5 0x20100805, // 0030 NE R4 R4 R5 0x78120001, // 0031 JMPF R4 #0034 - 0x8006B800, // 0032 RET 1 K92 + 0x80063C00, // 0032 RET 1 K30 0x70020000, // 0033 JMP #0035 - 0x80069C00, // 0034 RET 1 K78 + 0x80068800, // 0034 RET 1 K68 0x80000000, // 0035 RET 0 }) ) @@ -1926,7 +1926,7 @@ be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ be_str_weak(create_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x5808004D, // 0000 LDCONST R2 K77 + 0x5808004E, // 0000 LDCONST R2 K78 0x4C0C0000, // 0001 LDNIL R3 0x200C0203, // 0002 NE R3 R1 R3 0x740E0002, // 0003 JMPT R3 #0007 @@ -2014,8 +2014,8 @@ be_local_class(Matter_TLV_item, })), be_str_weak(Matter_TLV_item) ); -// compact class 'Matter_TLV_list' ktab size: 51, total: 94 (saved 344 bytes) -static const bvalue be_ktab_class_Matter_TLV_list[51] = { +// compact class 'Matter_TLV_list' ktab size: 50, total: 94 (saved 352 bytes) +static const bvalue be_ktab_class_Matter_TLV_list[50] = { /* K0 */ be_nested_str_weak(findsub), /* K1 */ be_nested_str_weak(val), /* K2 */ be_nested_str_weak(_encode_tag), @@ -2064,9 +2064,8 @@ static const bvalue be_ktab_class_Matter_TLV_list[51] = { /* K45 */ be_nested_str_weak(_X2C_X20), /* K46 */ be_nested_str_weak(_X20), /* K47 */ be_nested_str_weak(_encode_tag_len), - /* K48 */ be_const_int(0), - /* K49 */ be_nested_str_weak(encode_len), - /* K50 */ be_const_int(1), + /* K48 */ be_nested_str_weak(encode_len), + /* K49 */ be_const_int(1), }; @@ -2858,7 +2857,7 @@ be_local_closure(class_Matter_TLV_list_encode_len, /* name */ ( &(const binstruction[17]) { /* code */ 0x8C04012F, // 0000 GETMET R1 R0 K47 0x7C040200, // 0001 CALL R1 1 - 0x58080030, // 0002 LDCONST R2 K48 + 0x5808002A, // 0002 LDCONST R2 K42 0x600C000C, // 0003 GETGBL R3 G12 0x88100101, // 0004 GETMBR R4 R0 K1 0x7C0C0200, // 0005 CALL R3 1 @@ -2866,12 +2865,12 @@ be_local_closure(class_Matter_TLV_list_encode_len, /* name */ 0x780E0006, // 0007 JMPF R3 #000F 0x880C0101, // 0008 GETMBR R3 R0 K1 0x940C0602, // 0009 GETIDX R3 R3 R2 - 0x8C0C0731, // 000A GETMET R3 R3 K49 + 0x8C0C0730, // 000A GETMET R3 R3 K48 0x7C0C0200, // 000B CALL R3 1 0x00040203, // 000C ADD R1 R1 R3 - 0x00080532, // 000D ADD R2 R2 K50 + 0x00080531, // 000D ADD R2 R2 K49 0x7001FFF3, // 000E JMP #0003 - 0x00040332, // 000F ADD R1 R1 K50 + 0x00040331, // 000F ADD R1 R1 K49 0x80040200, // 0010 RET 1 R1 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index f90c1a24c..03cd00f28 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -110,8 +110,8 @@ be_local_class(Matter_UDPPacket_sent, be_str_weak(Matter_UDPPacket_sent) ); extern const bclass be_class_Matter_UDPServer; -// compact class 'Matter_UDPServer' ktab size: 62, total: 103 (saved 328 bytes) -static const bvalue be_ktab_class_Matter_UDPServer[62] = { +// compact class 'Matter_UDPServer' ktab size: 65, total: 103 (saved 304 bytes) +static const bvalue be_ktab_class_Matter_UDPServer[65] = { /* K0 */ be_nested_str_weak(loop), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(UDPPacket_sent), @@ -149,31 +149,34 @@ static const bvalue be_ktab_class_Matter_UDPServer[62] = { /* K34 */ be_nested_str_weak(remove_fast_loop), /* K35 */ be_nested_str_weak(device), /* K36 */ be_nested_str_weak(), - /* K37 */ be_const_int(0), - /* K38 */ be_nested_str_weak(time_reached), - /* K39 */ be_nested_str_weak(next_try), - /* K40 */ be_nested_str_weak(retries), - /* K41 */ be_nested_str_weak(RETRIES), - /* K42 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D), - /* K43 */ be_nested_str_weak(millis), - /* K44 */ be_nested_str_weak(_backoff_time), + /* K37 */ be_nested_str_weak(time_reached), + /* K38 */ be_nested_str_weak(next_try), + /* K39 */ be_nested_str_weak(retries), + /* K40 */ be_nested_str_weak(RETRIES), + /* K41 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D), + /* K42 */ be_nested_str_weak(millis), + /* K43 */ be_nested_str_weak(_backoff_time), + /* K44 */ be_const_int(1), /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i), /* K46 */ be_nested_str_weak(session_id), - /* K47 */ be_const_class(be_class_Matter_UDPServer), - /* K48 */ be_nested_str_weak(math), - /* K49 */ be_nested_str_weak(rand), - /* K50 */ be_const_real_hex(0x3FCCCCCD), - /* K51 */ be_const_real_hex(0x3F800000), - /* K52 */ be_const_real_hex(0x3E800000), - /* K53 */ be_nested_str_weak(profiler), - /* K54 */ be_nested_str_weak(read), - /* K55 */ be_nested_str_weak(packet), - /* K56 */ be_nested_str_weak(start), - /* K57 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K58 */ be_nested_str_weak(dump), - /* K59 */ be_const_int(2), - /* K60 */ be_nested_str_weak(MAX_PACKETS_READ), - /* K61 */ be_nested_str_weak(_resend_packets), + /* K47 */ be_const_int(3), + /* K48 */ be_const_class(be_class_Matter_UDPServer), + /* K49 */ be_nested_str_weak(math), + /* K50 */ be_nested_str_weak(rand), + /* K51 */ be_const_int(0), + /* K52 */ be_const_int(1), + /* K53 */ be_const_real_hex(0x3FCCCCCD), + /* K54 */ be_const_real_hex(0x3F800000), + /* K55 */ be_const_real_hex(0x3E800000), + /* K56 */ be_nested_str_weak(profiler), + /* K57 */ be_nested_str_weak(read), + /* K58 */ be_nested_str_weak(packet), + /* K59 */ be_nested_str_weak(start), + /* K60 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K61 */ be_nested_str_weak(dump), + /* K62 */ be_const_int(2), + /* K63 */ be_nested_str_weak(MAX_PACKETS_READ), + /* K64 */ be_nested_str_weak(_resend_packets), }; @@ -536,7 +539,7 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ be_str_weak(_resend_packets), &be_const_str_solidified, ( &(const binstruction[58]) { /* code */ - 0x58040025, // 0000 LDCONST R1 K37 + 0x58040009, // 0000 LDCONST R1 K9 0x6008000C, // 0001 GETGBL R2 G12 0x880C0105, // 0002 GETMBR R3 R0 K5 0x7C080200, // 0003 CALL R2 1 @@ -545,36 +548,36 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ 0x88080105, // 0006 GETMBR R2 R0 K5 0x94080401, // 0007 GETIDX R2 R2 R1 0xB80E1600, // 0008 GETNGBL R3 K11 - 0x8C0C0726, // 0009 GETMET R3 R3 K38 - 0x88140527, // 000A GETMBR R5 R2 K39 + 0x8C0C0725, // 0009 GETMET R3 R3 K37 + 0x88140526, // 000A GETMBR R5 R2 K38 0x7C0C0400, // 000B CALL R3 2 0x780E0029, // 000C JMPF R3 #0037 - 0x880C0528, // 000D GETMBR R3 R2 K40 - 0x88100129, // 000E GETMBR R4 R0 K41 + 0x880C0527, // 000D GETMBR R3 R2 K39 + 0x88100128, // 000E GETMBR R4 R0 K40 0x180C0604, // 000F LE R3 R3 R4 0x780E0016, // 0010 JMPF R3 #0028 0xB80E1A00, // 0011 GETNGBL R3 K13 0x60100008, // 0012 GETGBL R4 G8 0x88140504, // 0013 GETMBR R5 R2 K4 0x7C100200, // 0014 CALL R4 1 - 0x00125404, // 0015 ADD R4 K42 R4 + 0x00125204, // 0015 ADD R4 K41 R4 0x54160003, // 0016 LDINT R5 4 0x7C0C0400, // 0017 CALL R3 2 0x8C0C0103, // 0018 GETMET R3 R0 K3 0x5C140400, // 0019 MOVE R5 R2 0x7C0C0400, // 001A CALL R3 2 0xB80E1600, // 001B GETNGBL R3 K11 - 0x8C0C072B, // 001C GETMET R3 R3 K43 + 0x8C0C072A, // 001C GETMET R3 R3 K42 0x7C0C0200, // 001D CALL R3 1 - 0x8C10012C, // 001E GETMET R4 R0 K44 - 0x88180528, // 001F GETMBR R6 R2 K40 + 0x8C10012B, // 001E GETMET R4 R0 K43 + 0x88180527, // 001F GETMBR R6 R2 K39 0x7C100400, // 0020 CALL R4 2 0x000C0604, // 0021 ADD R3 R3 R4 - 0x900A4E03, // 0022 SETMBR R2 K39 R3 - 0x880C0528, // 0023 GETMBR R3 R2 K40 - 0x000C070F, // 0024 ADD R3 R3 K15 - 0x900A5003, // 0025 SETMBR R2 K40 R3 - 0x0004030F, // 0026 ADD R1 R1 K15 + 0x900A4C03, // 0022 SETMBR R2 K38 R3 + 0x880C0527, // 0023 GETMBR R3 R2 K39 + 0x000C072C, // 0024 ADD R3 R3 K44 + 0x900A4E03, // 0025 SETMBR R2 K39 R3 + 0x0004032C, // 0026 ADD R1 R1 K44 0x7002000D, // 0027 JMP #0036 0x880C0105, // 0028 GETMBR R3 R0 K5 0x8C0C070A, // 0029 GETMET R3 R3 K10 @@ -588,10 +591,10 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ 0x88200515, // 0031 GETMBR R8 R2 K21 0x88240504, // 0032 GETMBR R9 R2 K4 0x7C100A00, // 0033 CALL R4 5 - 0x5814001F, // 0034 LDCONST R5 K31 + 0x5814002F, // 0034 LDCONST R5 K47 0x7C0C0400, // 0035 CALL R3 2 0x70020000, // 0036 JMP #0038 - 0x0004030F, // 0037 ADD R1 R1 K15 + 0x0004032C, // 0037 ADD R1 R1 K44 0x7001FFC7, // 0038 JMP #0001 0x80000000, // 0039 RET 0 }) @@ -643,30 +646,30 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ be_str_weak(_backoff_time), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0x5804002F, // 0000 LDCONST R1 K47 + 0x58040030, // 0000 LDCONST R1 K48 0x84080000, // 0001 CLOSURE R2 P0 - 0xA40E6000, // 0002 IMPORT R3 K48 + 0xA40E6200, // 0002 IMPORT R3 K49 0x5412012B, // 0003 LDINT R4 300 0x6014000A, // 0004 GETGBL R5 G10 - 0x8C180731, // 0005 GETMET R6 R3 K49 + 0x8C180732, // 0005 GETMET R6 R3 K50 0x7C180200, // 0006 CALL R6 1 0x541E00FE, // 0007 LDINT R7 255 0x2C180C07, // 0008 AND R6 R6 R7 0x7C140200, // 0009 CALL R5 1 0x541A00FE, // 000A LDINT R6 255 0x0C140A06, // 000B DIV R5 R5 R6 - 0x24180125, // 000C GT R6 R0 K37 + 0x24180133, // 000C GT R6 R0 K51 0x781A0001, // 000D JMPF R6 #0010 - 0x0418010F, // 000E SUB R6 R0 K15 + 0x04180134, // 000E SUB R6 R0 K52 0x70020000, // 000F JMP #0011 - 0x58180025, // 0010 LDCONST R6 K37 + 0x58180033, // 0010 LDCONST R6 K51 0x5C1C0400, // 0011 MOVE R7 R2 - 0x58200032, // 0012 LDCONST R8 K50 + 0x58200035, // 0012 LDCONST R8 K53 0x5C240C00, // 0013 MOVE R9 R6 0x7C1C0400, // 0014 CALL R7 2 0x081C0807, // 0015 MUL R7 R4 R7 - 0x08200B34, // 0016 MUL R8 R5 K52 - 0x00226608, // 0017 ADD R8 K51 R8 + 0x08200B37, // 0016 MUL R8 R5 K55 + 0x00226C08, // 0017 ADD R8 K54 R8 0x081C0E08, // 0018 MUL R7 R7 R8 0x60200009, // 0019 GETGBL R8 G9 0x5C240E00, // 001A MOVE R9 R7 @@ -696,7 +699,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ &be_const_str_solidified, ( &(const binstruction[59]) { /* code */ 0xB8060200, // 0000 GETNGBL R1 K1 - 0x88040335, // 0001 GETMBR R1 R1 K53 + 0x88040338, // 0001 GETMBR R1 R1 K56 0x58080009, // 0002 LDCONST R2 K9 0x880C0111, // 0003 GETMBR R3 R0 K17 0x4C100000, // 0004 LDNIL R4 @@ -704,16 +707,16 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x780E0000, // 0006 JMPF R3 #0008 0x80000600, // 0007 RET 0 0x880C0111, // 0008 GETMBR R3 R0 K17 - 0x8C0C0736, // 0009 GETMET R3 R3 K54 - 0x88140137, // 000A GETMBR R5 R0 K55 + 0x8C0C0739, // 0009 GETMET R3 R3 K57 + 0x8814013A, // 000A GETMBR R5 R0 K58 0x7C0C0400, // 000B CALL R3 2 0x4C100000, // 000C LDNIL R4 0x20100604, // 000D NE R4 R3 R4 0x78120028, // 000E JMPF R4 #0038 - 0x8C100338, // 000F GETMET R4 R1 K56 + 0x8C10033B, // 000F GETMET R4 R1 K59 0x7C100200, // 0010 CALL R4 1 - 0x90026E03, // 0011 SETMBR R0 K55 R3 - 0x0008050F, // 0012 ADD R2 R2 K15 + 0x90027403, // 0011 SETMBR R0 K58 R3 + 0x0008052C, // 0012 ADD R2 R2 K44 0x88100111, // 0013 GETMBR R4 R0 K17 0x8810091B, // 0014 GETMBR R4 R4 K27 0x88140111, // 0015 GETMBR R5 R0 K17 @@ -725,7 +728,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x781A0007, // 001B JMPF R6 #0024 0xB81A1A00, // 001C GETNGBL R6 K13 0x601C0018, // 001D GETGBL R7 G24 - 0x58200039, // 001E LDCONST R8 K57 + 0x5820003C, // 001E LDCONST R8 K60 0x5C240800, // 001F MOVE R9 R4 0x5C280A00, // 0020 MOVE R10 R5 0x7C1C0600, // 0021 CALL R7 3 @@ -738,20 +741,20 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x5C240800, // 0028 MOVE R9 R4 0x5C280A00, // 0029 MOVE R10 R5 0x7C180800, // 002A CALL R6 4 - 0x8C18033A, // 002B GETMET R6 R1 K58 - 0x5820003B, // 002C LDCONST R8 K59 + 0x8C18033D, // 002B GETMET R6 R1 K61 + 0x5820003E, // 002C LDCONST R8 K62 0x7C180400, // 002D CALL R6 2 - 0x8818013C, // 002E GETMBR R6 R0 K60 + 0x8818013F, // 002E GETMBR R6 R0 K63 0x14180406, // 002F LT R6 R2 R6 0x781A0004, // 0030 JMPF R6 #0036 0x88180111, // 0031 GETMBR R6 R0 K17 - 0x8C180D36, // 0032 GETMET R6 R6 K54 + 0x8C180D39, // 0032 GETMET R6 R6 K57 0x7C180200, // 0033 CALL R6 1 0x5C0C0C00, // 0034 MOVE R3 R6 0x70020000, // 0035 JMP #0037 0x4C0C0000, // 0036 LDNIL R3 0x7001FFD3, // 0037 JMP #000C - 0x8C10013D, // 0038 GETMET R4 R0 K61 + 0x8C100140, // 0038 GETMET R4 R0 K64 0x7C100200, // 0039 CALL R4 1 0x80000000, // 003A RET 0 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h index a620800c5..5d41a53fa 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h @@ -51,61 +51,61 @@ static const bvalue be_ktab_class_Autoconf[127] = { /* K43 */ be_nested_str(set_first_time), /* K44 */ be_nested_str(run_bat), /* K45 */ be_nested_str(CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting), - /* K46 */ be_const_int(2), - /* K47 */ be_nested_str(_X23display_X2Eini), - /* K48 */ be_nested_str(display_X2Eini), - /* K49 */ be_nested_str(r), - /* K50 */ be_nested_str(w), - /* K51 */ be_nested_str(readbytes), - /* K52 */ be_nested_str(write), - /* K53 */ be_nested_str(CFG_X3A_X20_X27display_X2Eini_X27_X20extracted_X2C_X20restarting), - /* K54 */ be_nested_str(CFG_X3A_X20could_X20not_X20copy_X20_X27display_X2Eini_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29_X27), - /* K55 */ be_nested_str(cmd), - /* K56 */ be_nested_str(Restart_X201), - /* K57 */ be_nested_str(_X23autoexec_X2Ebat), - /* K58 */ be_nested_str(CFG_X3A_X20running_X20), - /* K59 */ be_const_int(3), - /* K60 */ be_nested_str(CFG_X3A_X20ran_X20_X20), - /* K61 */ be_nested_str(_X23autoexec_X2Ebe), - /* K62 */ be_nested_str(CFG_X3A_X20loading_X20), - /* K63 */ be_nested_str(load), - /* K64 */ be_nested_str(CFG_X3A_X20loaded_X20_X20), - /* K65 */ be_nested_str(readline), - /* K66 */ be_const_int(0), - /* K67 */ be_nested_str(_X0A), - /* K68 */ be_nested_str(_X0D), - /* K69 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29), - /* K70 */ be_const_int(1), - /* K71 */ be_nested_str(string), - /* K72 */ be_nested_str(Auto_X2Dconfiguration), - /* K73 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E), - /* K74 */ be_nested_str(get_current_module_path), - /* K75 */ be_nested_str(tr), - /* K76 */ be_nested_str(get_current_module_name), - /* K77 */ be_nested_str(_), - /* K78 */ be_nested_str(_X20), - /* K79 */ be_nested_str(_error), - /* K80 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B), - /* K81 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B), - /* K82 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E), - /* K83 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), - /* K84 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E), - /* K85 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), - /* K86 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), - /* K87 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E), - /* K88 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - /* K89 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K90 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), - /* K91 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), - /* K92 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), - /* K93 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E), - /* K94 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E), - /* K95 */ be_nested_str(load_templates), - /* K96 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E), - /* K97 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E), - /* K98 */ be_nested_str(stop_iteration), - /* K99 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K100 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E), + /* K46 */ be_nested_str(_X23display_X2Eini), + /* K47 */ be_nested_str(display_X2Eini), + /* K48 */ be_nested_str(r), + /* K49 */ be_nested_str(w), + /* K50 */ be_nested_str(readbytes), + /* K51 */ be_nested_str(write), + /* K52 */ be_nested_str(CFG_X3A_X20_X27display_X2Eini_X27_X20extracted_X2C_X20restarting), + /* K53 */ be_nested_str(CFG_X3A_X20could_X20not_X20copy_X20_X27display_X2Eini_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29_X27), + /* K54 */ be_nested_str(cmd), + /* K55 */ be_nested_str(Restart_X201), + /* K56 */ be_nested_str(_X23autoexec_X2Ebat), + /* K57 */ be_nested_str(CFG_X3A_X20running_X20), + /* K58 */ be_const_int(3), + /* K59 */ be_nested_str(CFG_X3A_X20ran_X20_X20), + /* K60 */ be_nested_str(_X23autoexec_X2Ebe), + /* K61 */ be_nested_str(CFG_X3A_X20loading_X20), + /* K62 */ be_nested_str(load), + /* K63 */ be_nested_str(CFG_X3A_X20loaded_X20_X20), + /* K64 */ be_nested_str(readline), + /* K65 */ be_const_int(0), + /* K66 */ be_nested_str(_X0A), + /* K67 */ be_nested_str(_X0D), + /* K68 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29), + /* K69 */ be_const_int(1), + /* K70 */ be_nested_str(string), + /* K71 */ be_nested_str(Auto_X2Dconfiguration), + /* K72 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E), + /* K73 */ be_nested_str(get_current_module_path), + /* K74 */ be_nested_str(tr), + /* K75 */ be_nested_str(get_current_module_name), + /* K76 */ be_nested_str(_), + /* K77 */ be_nested_str(_X20), + /* K78 */ be_nested_str(_error), + /* K79 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B), + /* K80 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B), + /* K81 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E), + /* K82 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), + /* K83 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E), + /* K84 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), + /* K85 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), + /* K86 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E), + /* K87 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E), + /* K88 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K89 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), + /* K90 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), + /* K91 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), + /* K92 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E), + /* K93 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E), + /* K94 */ be_nested_str(load_templates), + /* K95 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E), + /* K96 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E), + /* K97 */ be_nested_str(stop_iteration), + /* K98 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E), + /* K99 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E), + /* K100 */ be_const_int(0), /* K101 */ be_nested_str(listdir), /* K102 */ be_nested_str(_X2F), /* K103 */ be_nested_str(find), @@ -116,16 +116,16 @@ static const bvalue be_ktab_class_Autoconf[127] = { /* K108 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson), /* K109 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27), /* K110 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i), - /* K111 */ be_const_int(2), - /* K112 */ be_nested_str(get_string), - /* K113 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27), - /* K114 */ be_nested_str(files), - /* K115 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27), - /* K116 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - /* K117 */ be_nested_str(add_driver), - /* K118 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29), - /* K119 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found), - /* K120 */ be_const_int(3), + /* K111 */ be_nested_str(get_string), + /* K112 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27), + /* K113 */ be_nested_str(files), + /* K114 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27), + /* K115 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), + /* K116 */ be_nested_str(add_driver), + /* K117 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29), + /* K118 */ be_const_int(2), + /* K119 */ be_const_int(1), + /* K120 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found), /* K121 */ be_nested_str(_X23preinit_X2Ebe), /* K122 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27), /* K123 */ be_nested_str(on), @@ -317,12 +317,12 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0xB8120A00, // 0015 GETNGBL R4 K5 0x8C100906, // 0016 GETMET R4 R4 K6 0x5818002D, // 0017 LDCONST R6 K45 - 0x581C002E, // 0018 LDCONST R7 K46 + 0x581C0008, // 0018 LDCONST R7 K8 0x7C100600, // 0019 CALL R4 3 0x50080200, // 001A LDBOOL R2 1 0 0x80000800, // 001B RET 0 0x88100127, // 001C GETMBR R4 R0 K39 - 0x0010092F, // 001D ADD R4 R4 K47 + 0x0010092E, // 001D ADD R4 R4 K46 0x5C0C0800, // 001E MOVE R3 R4 0x8C10032A, // 001F GETMET R4 R1 K42 0x5C180600, // 0020 MOVE R6 R3 @@ -332,7 +332,7 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0x7C100200, // 0024 CALL R4 1 0x74120003, // 0025 JMPT R4 #002A 0x8C10032A, // 0026 GETMET R4 R1 K42 - 0x58180030, // 0027 LDCONST R6 K48 + 0x5818002F, // 0027 LDCONST R6 K47 0x7C100400, // 0028 CALL R4 2 0x74120039, // 0029 JMPT R4 #0064 0x8C100129, // 002A GETMET R4 R0 K41 @@ -347,17 +347,17 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0xA802001A, // 0033 EXBLK 0 #004F 0x60180011, // 0034 GETGBL R6 G17 0x5C1C0600, // 0035 MOVE R7 R3 - 0x58200031, // 0036 LDCONST R8 K49 + 0x58200030, // 0036 LDCONST R8 K48 0x7C180400, // 0037 CALL R6 2 0x5C100C00, // 0038 MOVE R4 R6 0x60180011, // 0039 GETGBL R6 G17 - 0x581C0030, // 003A LDCONST R7 K48 - 0x58200032, // 003B LDCONST R8 K50 + 0x581C002F, // 003A LDCONST R7 K47 + 0x58200031, // 003B LDCONST R8 K49 0x7C180400, // 003C CALL R6 2 0x5C140C00, // 003D MOVE R5 R6 - 0x8C180933, // 003E GETMET R6 R4 K51 + 0x8C180932, // 003E GETMET R6 R4 K50 0x7C180200, // 003F CALL R6 1 - 0x8C1C0B34, // 0040 GETMET R7 R5 K52 + 0x8C1C0B33, // 0040 GETMET R7 R5 K51 0x5C240C00, // 0041 MOVE R9 R6 0x7C1C0400, // 0042 CALL R7 2 0x8C1C091B, // 0043 GETMET R7 R4 K27 @@ -367,8 +367,8 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0x50080200, // 0047 LDBOOL R2 1 0 0xB81E0A00, // 0048 GETNGBL R7 K5 0x8C1C0F06, // 0049 GETMET R7 R7 K6 - 0x58240035, // 004A LDCONST R9 K53 - 0x5828002E, // 004B LDCONST R10 K46 + 0x58240034, // 004A LDCONST R9 K52 + 0x58280008, // 004B LDCONST R10 K8 0x7C1C0600, // 004C CALL R7 3 0xA8040001, // 004D EXBLK 1 1 0x70020014, // 004E JMP #0064 @@ -376,7 +376,7 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0x70020011, // 0050 JMP #0063 0x60200001, // 0051 GETGBL R8 G1 0x60240018, // 0052 GETGBL R9 G24 - 0x58280036, // 0053 LDCONST R10 K54 + 0x58280035, // 0053 LDCONST R10 K53 0x5C2C0C00, // 0054 MOVE R11 R6 0x5C300E00, // 0055 MOVE R12 R7 0x7C240600, // 0056 CALL R9 3 @@ -395,12 +395,12 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0xB0080000, // 0063 RAISE 2 R0 R0 0x780A0004, // 0064 JMPF R2 #006A 0xB8120A00, // 0065 GETNGBL R4 K5 - 0x8C100937, // 0066 GETMET R4 R4 K55 - 0x58180038, // 0067 LDCONST R6 K56 + 0x8C100936, // 0066 GETMET R4 R4 K54 + 0x58180037, // 0067 LDCONST R6 K55 0x7C100400, // 0068 CALL R4 2 0x80000800, // 0069 RET 0 0x88100127, // 006A GETMBR R4 R0 K39 - 0x00100939, // 006B ADD R4 R4 K57 + 0x00100938, // 006B ADD R4 R4 K56 0x5C0C0800, // 006C MOVE R3 R4 0x8C10032A, // 006D GETMET R4 R1 K42 0x5C180600, // 006E MOVE R6 R3 @@ -408,19 +408,19 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0x7812000C, // 0070 JMPF R4 #007E 0xB8120A00, // 0071 GETNGBL R4 K5 0x8C100906, // 0072 GETMET R4 R4 K6 - 0x001A7403, // 0073 ADD R6 K58 R3 - 0x581C003B, // 0074 LDCONST R7 K59 + 0x001A7203, // 0073 ADD R6 K57 R3 + 0x581C003A, // 0074 LDCONST R7 K58 0x7C100600, // 0075 CALL R4 3 0x8C10012C, // 0076 GETMET R4 R0 K44 0x5C180600, // 0077 MOVE R6 R3 0x7C100400, // 0078 CALL R4 2 0xB8120A00, // 0079 GETNGBL R4 K5 0x8C100906, // 007A GETMET R4 R4 K6 - 0x001A7803, // 007B ADD R6 K60 R3 - 0x581C003B, // 007C LDCONST R7 K59 + 0x001A7603, // 007B ADD R6 K59 R3 + 0x581C003A, // 007C LDCONST R7 K58 0x7C100600, // 007D CALL R4 3 0x88100127, // 007E GETMBR R4 R0 K39 - 0x0010093D, // 007F ADD R4 R4 K61 + 0x0010093C, // 007F ADD R4 R4 K60 0x5C0C0800, // 0080 MOVE R3 R4 0x8C10032A, // 0081 GETMET R4 R1 K42 0x5C180600, // 0082 MOVE R6 R3 @@ -428,16 +428,16 @@ be_local_closure(class_Autoconf_autoexec, /* name */ 0x7812000C, // 0084 JMPF R4 #0092 0xB8120A00, // 0085 GETNGBL R4 K5 0x8C100906, // 0086 GETMET R4 R4 K6 - 0x001A7C03, // 0087 ADD R6 K62 R3 - 0x581C003B, // 0088 LDCONST R7 K59 + 0x001A7A03, // 0087 ADD R6 K61 R3 + 0x581C003A, // 0088 LDCONST R7 K58 0x7C100600, // 0089 CALL R4 3 - 0xB8127E00, // 008A GETNGBL R4 K63 + 0xB8127C00, // 008A GETNGBL R4 K62 0x5C140600, // 008B MOVE R5 R3 0x7C100200, // 008C CALL R4 1 0xB8120A00, // 008D GETNGBL R4 K5 0x8C100906, // 008E GETMET R4 R4 K6 - 0x001A8003, // 008F ADD R6 K64 R3 - 0x581C003B, // 0090 LDCONST R7 K59 + 0x001A7E03, // 008F ADD R6 K63 R3 + 0x581C003A, // 0090 LDCONST R7 K58 0x7C100600, // 0091 CALL R4 3 0x80000000, // 0092 RET 0 }) @@ -467,43 +467,43 @@ be_local_closure(class_Autoconf_run_bat, /* name */ 0xA802002D, // 0001 EXBLK 0 #0030 0x600C0011, // 0002 GETGBL R3 G17 0x5C100200, // 0003 MOVE R4 R1 - 0x58140031, // 0004 LDCONST R5 K49 + 0x58140030, // 0004 LDCONST R5 K48 0x7C0C0400, // 0005 CALL R3 2 0x5C080600, // 0006 MOVE R2 R3 0x500C0200, // 0007 LDBOOL R3 1 0 0x780E0022, // 0008 JMPF R3 #002C - 0x8C0C0541, // 0009 GETMET R3 R2 K65 + 0x8C0C0540, // 0009 GETMET R3 R2 K64 0x7C0C0200, // 000A CALL R3 1 0x6010000C, // 000B GETGBL R4 G12 0x5C140600, // 000C MOVE R5 R3 0x7C100200, // 000D CALL R4 1 - 0x1C100942, // 000E EQ R4 R4 K66 + 0x1C100941, // 000E EQ R4 R4 K65 0x78120000, // 000F JMPF R4 #0011 0x7002001A, // 0010 JMP #002C 0x6010000C, // 0011 GETGBL R4 G12 0x5C140600, // 0012 MOVE R5 R3 0x7C100200, // 0013 CALL R4 1 - 0x24100942, // 0014 GT R4 R4 K66 + 0x24100941, // 0014 GT R4 R4 K65 0x7812000B, // 0015 JMPF R4 #0022 0x5411FFFE, // 0016 LDINT R4 -1 0x94100604, // 0017 GETIDX R4 R3 R4 - 0x1C100943, // 0018 EQ R4 R4 K67 + 0x1C100942, // 0018 EQ R4 R4 K66 0x74120003, // 0019 JMPT R4 #001E 0x5411FFFE, // 001A LDINT R4 -1 0x94100604, // 001B GETIDX R4 R3 R4 - 0x1C100944, // 001C EQ R4 R4 K68 + 0x1C100943, // 001C EQ R4 R4 K67 0x78120003, // 001D JMPF R4 #0022 0x5411FFFD, // 001E LDINT R4 -2 - 0x40128404, // 001F CONNECT R4 K66 R4 + 0x40128204, // 001F CONNECT R4 K65 R4 0x940C0604, // 0020 GETIDX R3 R3 R4 0x7001FFEE, // 0021 JMP #0011 0x6010000C, // 0022 GETGBL R4 G12 0x5C140600, // 0023 MOVE R5 R3 0x7C100200, // 0024 CALL R4 1 - 0x24100942, // 0025 GT R4 R4 K66 + 0x24100941, // 0025 GT R4 R4 K65 0x78120003, // 0026 JMPF R4 #002B 0xB8120A00, // 0027 GETNGBL R4 K5 - 0x8C100937, // 0028 GETMET R4 R4 K55 + 0x8C100936, // 0028 GETMET R4 R4 K54 0x5C180600, // 0029 MOVE R6 R3 0x7C100400, // 002A CALL R4 2 0x7001FFDA, // 002B JMP #0007 @@ -516,12 +516,12 @@ be_local_closure(class_Autoconf_run_bat, /* name */ 0xB8160A00, // 0032 GETNGBL R5 K5 0x8C140B06, // 0033 GETMET R5 R5 K6 0x601C0018, // 0034 GETGBL R7 G24 - 0x58200045, // 0035 LDCONST R8 K69 + 0x58200044, // 0035 LDCONST R8 K68 0x5C240200, // 0036 MOVE R9 R1 0x5C280600, // 0037 MOVE R10 R3 0x5C2C0800, // 0038 MOVE R11 R4 0x7C1C0800, // 0039 CALL R7 4 - 0x58200046, // 003A LDCONST R8 K70 + 0x58200045, // 003A LDCONST R8 K69 0x7C140600, // 003B CALL R5 3 0x4C140000, // 003C LDNIL R5 0x20140405, // 003D NE R5 R2 R5 @@ -555,89 +555,89 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */ &be_const_str_solidified, ( &(const binstruction[124]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A8E00, // 0001 IMPORT R2 K71 + 0xA40A8C00, // 0001 IMPORT R2 K70 0x8C0C0302, // 0002 GETMET R3 R1 K2 0x7C0C0200, // 0003 CALL R3 1 0x740E0001, // 0004 JMPT R3 #0007 0x4C0C0000, // 0005 LDNIL R3 0x80040600, // 0006 RET 1 R3 0x8C0C031F, // 0007 GETMET R3 R1 K31 - 0x58140048, // 0008 LDCONST R5 K72 + 0x58140047, // 0008 LDCONST R5 K71 0x7C0C0400, // 0009 CALL R3 2 0x8C0C0321, // 000A GETMET R3 R1 K33 0x7C0C0200, // 000B CALL R3 1 0x8C0C0322, // 000C GETMET R3 R1 K34 - 0x58140049, // 000D LDCONST R5 K73 + 0x58140048, // 000D LDCONST R5 K72 0x7C0C0400, // 000E CALL R3 2 - 0x8C0C014A, // 000F GETMET R3 R0 K74 + 0x8C0C0149, // 000F GETMET R3 R0 K73 0x7C0C0200, // 0010 CALL R3 1 0x780E0006, // 0011 JMPF R3 #0019 - 0x8C10054B, // 0012 GETMET R4 R2 K75 - 0x8C18014C, // 0013 GETMET R6 R0 K76 + 0x8C10054A, // 0012 GETMET R4 R2 K74 + 0x8C18014B, // 0013 GETMET R6 R0 K75 0x7C180200, // 0014 CALL R6 1 - 0x581C004D, // 0015 LDCONST R7 K77 - 0x5820004E, // 0016 LDCONST R8 K78 + 0x581C004C, // 0015 LDCONST R7 K76 + 0x5820004D, // 0016 LDCONST R8 K77 0x7C100800, // 0017 CALL R4 4 0x70020004, // 0018 JMP #001E - 0x8810014F, // 0019 GETMBR R4 R0 K79 + 0x8810014E, // 0019 GETMBR R4 R0 K78 0x78120001, // 001A JMPF R4 #001D - 0x58100050, // 001B LDCONST R4 K80 + 0x5810004F, // 001B LDCONST R4 K79 0x70020000, // 001C JMP #001E - 0x58100051, // 001D LDCONST R4 K81 + 0x58100050, // 001D LDCONST R4 K80 0x8C140322, // 001E GETMET R5 R1 K34 - 0x581C0052, // 001F LDCONST R7 K82 + 0x581C0051, // 001F LDCONST R7 K81 0x7C140400, // 0020 CALL R5 2 0x8C140322, // 0021 GETMET R5 R1 K34 0x601C0018, // 0022 GETGBL R7 G24 - 0x58200053, // 0023 LDCONST R8 K83 + 0x58200052, // 0023 LDCONST R8 K82 0x7C1C0200, // 0024 CALL R7 1 0x7C140400, // 0025 CALL R5 2 0x8C140322, // 0026 GETMET R5 R1 K34 0x601C0018, // 0027 GETGBL R7 G24 - 0x58200054, // 0028 LDCONST R8 K84 + 0x58200053, // 0028 LDCONST R8 K83 0x5C240800, // 0029 MOVE R9 R4 0x7C1C0400, // 002A CALL R7 2 0x7C140400, // 002B CALL R5 2 0x780E000B, // 002C JMPF R3 #0039 0x8C140322, // 002D GETMET R5 R1 K34 - 0x581C0055, // 002E LDCONST R7 K85 + 0x581C0054, // 002E LDCONST R7 K84 0x7C140400, // 002F CALL R5 2 0x8C140322, // 0030 GETMET R5 R1 K34 - 0x581C0056, // 0031 LDCONST R7 K86 + 0x581C0055, // 0031 LDCONST R7 K85 0x7C140400, // 0032 CALL R5 2 0x8C140322, // 0033 GETMET R5 R1 K34 - 0x581C0057, // 0034 LDCONST R7 K87 + 0x581C0056, // 0034 LDCONST R7 K86 0x7C140400, // 0035 CALL R5 2 0x8C140322, // 0036 GETMET R5 R1 K34 - 0x581C0058, // 0037 LDCONST R7 K88 + 0x581C0057, // 0037 LDCONST R7 K87 0x7C140400, // 0038 CALL R5 2 0x8C140322, // 0039 GETMET R5 R1 K34 - 0x581C0059, // 003A LDCONST R7 K89 + 0x581C0058, // 003A LDCONST R7 K88 0x7C140400, // 003B CALL R5 2 0x8C140322, // 003C GETMET R5 R1 K34 - 0x581C0052, // 003D LDCONST R7 K82 + 0x581C0051, // 003D LDCONST R7 K81 0x7C140400, // 003E CALL R5 2 0x8C140322, // 003F GETMET R5 R1 K34 0x601C0018, // 0040 GETGBL R7 G24 - 0x5820005A, // 0041 LDCONST R8 K90 + 0x58200059, // 0041 LDCONST R8 K89 0x7C1C0200, // 0042 CALL R7 1 0x7C140400, // 0043 CALL R5 2 0x8C140322, // 0044 GETMET R5 R1 K34 - 0x581C005B, // 0045 LDCONST R7 K91 + 0x581C005A, // 0045 LDCONST R7 K90 0x7C140400, // 0046 CALL R5 2 0x8C140322, // 0047 GETMET R5 R1 K34 - 0x581C005C, // 0048 LDCONST R7 K92 + 0x581C005B, // 0048 LDCONST R7 K91 0x7C140400, // 0049 CALL R5 2 0x8C140322, // 004A GETMET R5 R1 K34 - 0x581C005D, // 004B LDCONST R7 K93 + 0x581C005C, // 004B LDCONST R7 K92 0x7C140400, // 004C CALL R5 2 0x8C140322, // 004D GETMET R5 R1 K34 - 0x581C005E, // 004E LDCONST R7 K94 + 0x581C005D, // 004E LDCONST R7 K93 0x7C140400, // 004F CALL R5 2 - 0x8C14015F, // 0050 GETMET R5 R0 K95 + 0x8C14015E, // 0050 GETMET R5 R0 K94 0x7C140200, // 0051 CALL R5 1 0x8C180322, // 0052 GETMET R6 R1 K34 - 0x58200060, // 0053 LDCONST R8 K96 + 0x5820005F, // 0053 LDCONST R8 K95 0x7C180400, // 0054 CALL R6 2 0x60180010, // 0055 GETGBL R6 G16 0x5C1C0A00, // 0056 MOVE R7 R5 @@ -647,30 +647,30 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */ 0x7C1C0000, // 005A CALL R7 0 0x8C200322, // 005B GETMET R8 R1 K34 0x60280018, // 005C GETGBL R10 G24 - 0x582C0061, // 005D LDCONST R11 K97 + 0x582C0060, // 005D LDCONST R11 K96 0x5C300E00, // 005E MOVE R12 R7 - 0x8C34054B, // 005F GETMET R13 R2 K75 + 0x8C34054A, // 005F GETMET R13 R2 K74 0x5C3C0E00, // 0060 MOVE R15 R7 - 0x5840004D, // 0061 LDCONST R16 K77 - 0x5844004E, // 0062 LDCONST R17 K78 + 0x5840004C, // 0061 LDCONST R16 K76 + 0x5844004D, // 0062 LDCONST R17 K77 0x7C340800, // 0063 CALL R13 4 0x7C280600, // 0064 CALL R10 3 0x7C200400, // 0065 CALL R8 2 0x7001FFF1, // 0066 JMP #0059 - 0x58180062, // 0067 LDCONST R6 K98 + 0x58180061, // 0067 LDCONST R6 K97 0xAC180200, // 0068 CATCH R6 1 0 0xB0080000, // 0069 RAISE 2 R0 R0 0x8C180322, // 006A GETMET R6 R1 K34 - 0x58200063, // 006B LDCONST R8 K99 + 0x58200062, // 006B LDCONST R8 K98 0x7C180400, // 006C CALL R6 2 0x8C180322, // 006D GETMET R6 R1 K34 - 0x58200064, // 006E LDCONST R8 K100 + 0x58200063, // 006E LDCONST R8 K99 0x7C180400, // 006F CALL R6 2 0x8C180322, // 0070 GETMET R6 R1 K34 - 0x58200058, // 0071 LDCONST R8 K88 + 0x58200057, // 0071 LDCONST R8 K87 0x7C180400, // 0072 CALL R6 2 0x8C180322, // 0073 GETMET R6 R1 K34 - 0x58200059, // 0074 LDCONST R8 K89 + 0x58200058, // 0074 LDCONST R8 K88 0x7C180400, // 0075 CALL R6 2 0x8C180324, // 0076 GETMET R6 R1 K36 0x88200325, // 0077 GETMBR R8 R1 K37 @@ -702,7 +702,7 @@ be_local_closure(class_Autoconf_get_current_module_name, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFF5, // 0000 LDINT R1 -10 - 0x40068401, // 0001 CONNECT R1 K66 R1 + 0x4006C801, // 0001 CONNECT R1 K100 R1 0x88080127, // 0002 GETMBR R2 R0 K39 0x94040401, // 0003 GETIDX R1 R2 R1 0x80040200, // 0004 RET 1 R1 @@ -730,7 +730,7 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 - 0xA40A8E00, // 0001 IMPORT R2 K71 + 0xA40A8C00, // 0001 IMPORT R2 K70 0x8C0C0365, // 0002 GETMET R3 R1 K101 0x58140066, // 0003 LDCONST R5 K102 0x7C0C0400, // 0004 CALL R3 2 @@ -744,13 +744,13 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ 0x5C200A00, // 000C MOVE R8 R5 0x58240068, // 000D LDCONST R9 K104 0x7C180600, // 000E CALL R6 3 - 0x24180D42, // 000F GT R6 R6 K66 + 0x24180D41, // 000F GT R6 R6 K65 0x781A0002, // 0010 JMPF R6 #0014 0x8C180369, // 0011 GETMET R6 R1 K105 0x5C200A00, // 0012 MOVE R8 R5 0x7C180400, // 0013 CALL R6 2 0x7001FFF3, // 0014 JMP #0009 - 0x58100062, // 0015 LDCONST R4 K98 + 0x58100061, // 0015 LDCONST R4 K97 0xAC100200, // 0016 CATCH R4 1 0 0xB0080000, // 0017 RAISE 2 R0 R0 0x80000000, // 0018 RET 0 @@ -779,7 +779,7 @@ be_local_closure(class_Autoconf_set_first_time, /* name */ ( &(const binstruction[ 7]) { /* code */ 0x60040011, // 0000 GETGBL R1 G17 0x5808006A, // 0001 LDCONST R2 K106 - 0x580C0032, // 0002 LDCONST R3 K50 + 0x580C0031, // 0002 LDCONST R3 K49 0x7C040400, // 0003 CALL R1 2 0x8C08031B, // 0004 GETMET R2 R1 K27 0x7C080200, // 0005 CALL R2 1 @@ -821,7 +821,7 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0x5818006D, // 000B LDCONST R6 K109 0x5C1C0400, // 000C MOVE R7 R2 0x7C140400, // 000D CALL R5 2 - 0x5818003B, // 000E LDCONST R6 K59 + 0x5818003A, // 000E LDCONST R6 K58 0x7C0C0600, // 000F CALL R3 3 0xB80E2A00, // 0010 GETNGBL R3 K21 0x7C0C0000, // 0011 CALL R3 0 @@ -839,30 +839,30 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0x5820006E, // 001D LDCONST R8 K110 0x5C240800, // 001E MOVE R9 R4 0x7C1C0400, // 001F CALL R7 2 - 0x5820006F, // 0020 LDCONST R8 K111 + 0x58200008, // 0020 LDCONST R8 K8 0x7C140600, // 0021 CALL R5 3 0x4C140000, // 0022 LDNIL R5 0xA8040001, // 0023 EXBLK 1 1 0x80040A00, // 0024 RET 1 R5 - 0x8C140770, // 0025 GETMET R5 R3 K112 + 0x8C14076F, // 0025 GETMET R5 R3 K111 0x7C140200, // 0026 CALL R5 1 0x8C18071B, // 0027 GETMET R6 R3 K27 0x7C180200, // 0028 CALL R6 1 - 0x8C18033F, // 0029 GETMET R6 R1 K63 + 0x8C18033E, // 0029 GETMET R6 R1 K62 0x5C200A00, // 002A MOVE R8 R5 0x7C180400, // 002B CALL R6 2 0xB81E0A00, // 002C GETNGBL R7 K5 0x8C1C0F06, // 002D GETMET R7 R7 K6 0x60240018, // 002E GETGBL R9 G24 - 0x58280071, // 002F LDCONST R10 K113 + 0x58280070, // 002F LDCONST R10 K112 0x602C0008, // 0030 GETGBL R11 G8 0x5C300C00, // 0031 MOVE R12 R6 0x7C2C0200, // 0032 CALL R11 1 0x7C240400, // 0033 CALL R9 2 - 0x5828003B, // 0034 LDCONST R10 K59 + 0x5828003A, // 0034 LDCONST R10 K58 0x7C1C0600, // 0035 CALL R7 3 0x8C1C0D67, // 0036 GETMET R7 R6 K103 - 0x58240072, // 0037 LDCONST R9 K114 + 0x58240071, // 0037 LDCONST R9 K113 0x7C1C0400, // 0038 CALL R7 2 0x6020000F, // 0039 GETGBL R8 G15 0x5C240E00, // 003A MOVE R9 R7 @@ -881,11 +881,11 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0xB8120A00, // 0047 GETNGBL R4 K5 0x8C100906, // 0048 GETMET R4 R4 K6 0x60180018, // 0049 GETGBL R6 G24 - 0x581C0073, // 004A LDCONST R7 K115 + 0x581C0072, // 004A LDCONST R7 K114 0x5C200400, // 004B MOVE R8 R2 0x5C240600, // 004C MOVE R9 R3 0x7C180600, // 004D CALL R6 3 - 0x581C006F, // 004E LDCONST R7 K111 + 0x581C0008, // 004E LDCONST R7 K8 0x7C100600, // 004F CALL R4 3 0x4C100000, // 0050 LDNIL R4 0x80040800, // 0051 RET 1 R4 @@ -917,7 +917,7 @@ be_local_closure(class_Autoconf_web_add_config_button, /* name */ ( &(const binstruction[ 5]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080322, // 0001 GETMET R2 R1 K34 - 0x58100074, // 0002 LDCONST R4 K116 + 0x58100073, // 0002 LDCONST R4 K115 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 }) @@ -975,16 +975,16 @@ be_local_closure(class_Autoconf_init, /* name */ &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 - 0xA40A8E00, // 0001 IMPORT R2 K71 + 0xA40A8C00, // 0001 IMPORT R2 K70 0x8C0C0365, // 0002 GETMET R3 R1 K101 0x58140066, // 0003 LDCONST R5 K102 0x7C0C0400, // 0004 CALL R3 2 0x4C100000, // 0005 LDNIL R4 0xB8160A00, // 0006 GETNGBL R5 K5 - 0x8C140B75, // 0007 GETMET R5 R5 K117 + 0x8C140B74, // 0007 GETMET R5 R5 K116 0x5C1C0000, // 0008 MOVE R7 R0 0x7C140400, // 0009 CALL R5 2 - 0x58140042, // 000A LDCONST R5 K66 + 0x58140041, // 000A LDCONST R5 K65 0x6018000C, // 000B GETGBL R6 G12 0x5C1C0600, // 000C MOVE R7 R3 0x7C180200, // 000D CALL R6 1 @@ -994,7 +994,7 @@ be_local_closure(class_Autoconf_init, /* name */ 0x94200605, // 0011 GETIDX R8 R3 R5 0x58240068, // 0012 LDCONST R9 K104 0x7C180600, // 0013 CALL R6 3 - 0x24180D42, // 0014 GT R6 R6 K66 + 0x24180D41, // 0014 GT R6 R6 K65 0x781A0010, // 0015 JMPF R6 #0027 0x4C180000, // 0016 LDNIL R6 0x20180806, // 0017 NE R6 R4 R6 @@ -1002,26 +1002,26 @@ be_local_closure(class_Autoconf_init, /* name */ 0xB81A0A00, // 0019 GETNGBL R6 K5 0x8C180D06, // 001A GETMET R6 R6 K6 0x60200018, // 001B GETGBL R8 G24 - 0x58240076, // 001C LDCONST R9 K118 + 0x58240075, // 001C LDCONST R9 K117 0x5C280800, // 001D MOVE R10 R4 0x942C0605, // 001E GETIDX R11 R3 R5 0x7C200600, // 001F CALL R8 3 - 0x5824006F, // 0020 LDCONST R9 K111 + 0x58240076, // 0020 LDCONST R9 K118 0x7C180600, // 0021 CALL R6 3 0x50180200, // 0022 LDBOOL R6 1 0 - 0x90029E06, // 0023 SETMBR R0 K79 R6 + 0x90029C06, // 0023 SETMBR R0 K78 R6 0x4C180000, // 0024 LDNIL R6 0x80040C00, // 0025 RET 1 R6 0x94100605, // 0026 GETIDX R4 R3 R5 - 0x00140B46, // 0027 ADD R5 R5 K70 + 0x00140B77, // 0027 ADD R5 R5 K119 0x7001FFE1, // 0028 JMP #000B 0x4C180000, // 0029 LDNIL R6 0x1C180806, // 002A EQ R6 R4 R6 0x781A0006, // 002B JMPF R6 #0033 0xB81A0A00, // 002C GETNGBL R6 K5 0x8C180D06, // 002D GETMET R6 R6 K6 - 0x58200077, // 002E LDCONST R8 K119 - 0x58240078, // 002F LDCONST R9 K120 + 0x58200078, // 002E LDCONST R8 K120 + 0x5824003A, // 002F LDCONST R9 K58 0x7C180600, // 0030 CALL R6 3 0x4C180000, // 0031 LDNIL R6 0x80040C00, // 0032 RET 1 R6 @@ -1064,16 +1064,16 @@ be_local_closure(class_Autoconf_preinit, /* name */ 0x780E000C, // 000B JMPF R3 #0019 0xB80E0A00, // 000C GETNGBL R3 K5 0x8C0C0706, // 000D GETMET R3 R3 K6 - 0x00167C02, // 000E ADD R5 K62 R2 - 0x5818003B, // 000F LDCONST R6 K59 + 0x00167A02, // 000E ADD R5 K61 R2 + 0x5818003A, // 000F LDCONST R6 K58 0x7C0C0600, // 0010 CALL R3 3 - 0xB80E7E00, // 0011 GETNGBL R3 K63 + 0xB80E7C00, // 0011 GETNGBL R3 K62 0x5C100400, // 0012 MOVE R4 R2 0x7C0C0200, // 0013 CALL R3 1 0xB80E0A00, // 0014 GETNGBL R3 K5 0x8C0C0706, // 0015 GETMET R3 R3 K6 - 0x00168002, // 0016 ADD R5 K64 R2 - 0x5818003B, // 0017 LDCONST R6 K59 + 0x00167E02, // 0016 ADD R5 K63 R2 + 0x5818003A, // 0017 LDCONST R6 K58 0x7C0C0600, // 0018 CALL R3 3 0x80000000, // 0019 RET 0 }) @@ -1100,12 +1100,12 @@ be_local_closure(class_Autoconf_reset, /* name */ &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 - 0xA40A8E00, // 0001 IMPORT R2 K71 + 0xA40A8C00, // 0001 IMPORT R2 K70 0x8C0C0365, // 0002 GETMET R3 R1 K101 0x58140066, // 0003 LDCONST R5 K102 0x7C0C0400, // 0004 CALL R3 2 0x4C100000, // 0005 LDNIL R4 - 0x58140042, // 0006 LDCONST R5 K66 + 0x58140064, // 0006 LDCONST R5 K100 0x6018000C, // 0007 GETGBL R6 G12 0x5C1C0600, // 0008 MOVE R7 R3 0x7C180200, // 0009 CALL R6 1 @@ -1116,7 +1116,7 @@ be_local_closure(class_Autoconf_reset, /* name */ 0x5C240C00, // 000E MOVE R9 R6 0x58280068, // 000F LDCONST R10 K104 0x7C1C0600, // 0010 CALL R7 3 - 0x241C0F42, // 0011 GT R7 R7 K66 + 0x241C0F64, // 0011 GT R7 R7 K100 0x781E0008, // 0012 JMPF R7 #001C 0x8C1C0369, // 0013 GETMET R7 R1 K105 0x5C240C00, // 0014 MOVE R9 R6 @@ -1127,12 +1127,12 @@ be_local_closure(class_Autoconf_reset, /* name */ 0x5C280C00, // 0019 MOVE R10 R6 0x7C200400, // 001A CALL R8 2 0x7C1C0200, // 001B CALL R7 1 - 0x00140B46, // 001C ADD R5 R5 K70 + 0x00140B77, // 001C ADD R5 R5 K119 0x7001FFE8, // 001D JMP #0007 0x4C180000, // 001E LDNIL R6 0x90024E06, // 001F SETMBR R0 K39 R6 0x4C180000, // 0020 LDNIL R6 - 0x90029E06, // 0021 SETMBR R0 K79 R6 + 0x90029C06, // 0021 SETMBR R0 K78 R6 0x80000000, // 0022 RET 0 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h index 65197633d..503eed7e2 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h @@ -30,17 +30,17 @@ static const bvalue be_ktab_class_hue_bridge_monad[51] = { /* K22 */ be_nested_str(_X22_X3A), /* K23 */ be_nested_str(push), /* K24 */ be_nested_str(stop_iteration), - /* K25 */ be_nested_str(concat), - /* K26 */ be_nested_str(_X2C), - /* K27 */ be_nested_str(load), - /* K28 */ be_nested_str(tasmota), - /* K29 */ be_nested_str(log), - /* K30 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20), - /* K31 */ be_const_int(3), - /* K32 */ be_nested_str(on), - /* K33 */ be_nested_str(set_power), - /* K34 */ be_nested_str(xy), - /* K35 */ be_const_int(0), + /* K25 */ be_const_int(0), + /* K26 */ be_nested_str(concat), + /* K27 */ be_nested_str(_X2C), + /* K28 */ be_nested_str(load), + /* K29 */ be_nested_str(tasmota), + /* K30 */ be_nested_str(log), + /* K31 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20), + /* K32 */ be_const_int(3), + /* K33 */ be_nested_str(on), + /* K34 */ be_nested_str(set_power), + /* K35 */ be_nested_str(xy), /* K36 */ be_const_int(1), /* K37 */ be_nested_str(set_xy), /* K38 */ be_nested_str(hue), @@ -307,10 +307,10 @@ be_local_closure(class_hue_bridge_monad_discover, /* name */ 0x6010000C, // 001D GETGBL R4 G12 0x5C140600, // 001E MOVE R5 R3 0x7C100200, // 001F CALL R4 1 - 0x2410090D, // 0020 GT R4 R4 K13 + 0x24100919, // 0020 GT R4 R4 K25 0x78120003, // 0021 JMPF R4 #0026 - 0x8C100719, // 0022 GETMET R4 R3 K25 - 0x5818001A, // 0023 LDCONST R6 K26 + 0x8C10071A, // 0022 GETMET R4 R3 K26 + 0x5818001B, // 0023 LDCONST R6 K27 0x7C100400, // 0024 CALL R4 2 0x80040800, // 0025 RET 1 R4 0x80000000, // 0026 RET 0 @@ -392,39 +392,39 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x94100904, // 0009 GETIDX R4 R4 K4 0x60140013, // 000A GETGBL R5 G19 0x7C140000, // 000B CALL R5 0 - 0x8C18071B, // 000C GETMET R6 R3 K27 + 0x8C18071C, // 000C GETMET R6 R3 K28 0x5C200400, // 000D MOVE R8 R2 0x7C180400, // 000E CALL R6 2 0x4C1C0000, // 000F LDNIL R7 0x1C1C0407, // 0010 EQ R7 R2 R7 0x781E0008, // 0011 JMPF R7 #001B - 0xB81E3800, // 0012 GETNGBL R7 K28 - 0x8C1C0F1D, // 0013 GETMET R7 R7 K29 + 0xB81E3A00, // 0012 GETNGBL R7 K29 + 0x8C1C0F1E, // 0013 GETMET R7 R7 K30 0x60240008, // 0014 GETGBL R9 G8 0x5C280400, // 0015 MOVE R10 R2 0x7C240200, // 0016 CALL R9 1 - 0x00263C09, // 0017 ADD R9 K30 R9 - 0x5828001F, // 0018 LDCONST R10 K31 + 0x00263E09, // 0017 ADD R9 K31 R9 + 0x58280020, // 0018 LDCONST R10 K32 0x7C1C0600, // 0019 CALL R7 3 0x80000E00, // 001A RET 0 0x8C1C0D02, // 001B GETMET R7 R6 K2 - 0x58240020, // 001C LDCONST R9 K32 + 0x58240021, // 001C LDCONST R9 K33 0x7C1C0400, // 001D CALL R7 2 0x781E0006, // 001E JMPF R7 #0026 0x601C0017, // 001F GETGBL R7 G23 - 0x94200D20, // 0020 GETIDX R8 R6 K32 + 0x94200D21, // 0020 GETIDX R8 R6 K33 0x7C1C0200, // 0021 CALL R7 1 - 0x98164007, // 0022 SETIDX R5 K32 R7 - 0x8C200921, // 0023 GETMET R8 R4 K33 + 0x98164207, // 0022 SETIDX R5 K33 R7 + 0x8C200922, // 0023 GETMET R8 R4 K34 0x5C280E00, // 0024 MOVE R10 R7 0x7C200400, // 0025 CALL R8 2 0x8C1C0D02, // 0026 GETMET R7 R6 K2 - 0x58240022, // 0027 LDCONST R9 K34 + 0x58240023, // 0027 LDCONST R9 K35 0x7C1C0400, // 0028 CALL R7 2 0x781E0013, // 0029 JMPF R7 #003E - 0x941C0D22, // 002A GETIDX R7 R6 K34 + 0x941C0D23, // 002A GETIDX R7 R6 K35 0x6020000A, // 002B GETGBL R8 G10 - 0x94240F23, // 002C GETIDX R9 R7 K35 + 0x94240F19, // 002C GETIDX R9 R7 K25 0x7C200200, // 002D CALL R8 1 0x6024000A, // 002E GETGBL R9 G10 0x94280F24, // 002F GETIDX R10 R7 K36 @@ -433,7 +433,7 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x7C280000, // 0032 CALL R10 0 0x402C1408, // 0033 CONNECT R11 R10 R8 0x402C1409, // 0034 CONNECT R11 R10 R9 - 0x9816440A, // 0035 SETIDX R5 K34 R10 + 0x9816460A, // 0035 SETIDX R5 K35 R10 0x542AFFFF, // 0036 LDINT R10 65536 0x0820100A, // 0037 MUL R8 R8 R10 0x542AFFFF, // 0038 LDINT R10 65536 @@ -473,7 +473,7 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x782A0000, // 005A JMPF R10 #005C 0x542600FE, // 005B LDINT R9 255 0x88280928, // 005C GETMBR R10 R4 K40 - 0x2828151F, // 005D GE R10 R10 K31 + 0x28281520, // 005D GE R10 R10 K32 0x782A0000, // 005E JMPF R10 #0060 0x501C0200, // 005F LDBOOL R7 1 0 0x781E0003, // 0060 JMPF R7 #0065 @@ -539,7 +539,7 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x602C000C, // 009C GETGBL R11 G12 0x5C301400, // 009D MOVE R12 R10 0x7C2C0200, // 009E CALL R11 1 - 0x242C1723, // 009F GT R11 R11 K35 + 0x242C1719, // 009F GT R11 R11 K25 0x782E0001, // 00A0 JMPF R11 #00A3 0x8C2C0931, // 00A1 GETMET R11 R4 K49 0x7C2C0200, // 00A2 CALL R11 1 @@ -594,10 +594,10 @@ be_local_closure(class_hue_bridge_monad_groups, /* name */ 0x6008000C, // 0015 GETGBL R2 G12 0x5C0C0200, // 0016 MOVE R3 R1 0x7C080200, // 0017 CALL R2 1 - 0x2408050D, // 0018 GT R2 R2 K13 + 0x24080519, // 0018 GT R2 R2 K25 0x780A0003, // 0019 JMPF R2 #001E - 0x8C080319, // 001A GETMET R2 R1 K25 - 0x5810001A, // 001B LDCONST R4 K26 + 0x8C08031A, // 001A GETMET R2 R1 K26 + 0x5810001B, // 001B LDCONST R4 K27 0x7C080400, // 001C CALL R2 2 0x80040400, // 001D RET 1 R2 0x80000000, // 001E RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h index 300573634..04f8b3c49 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h @@ -3,28 +3,28 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'AXP192' ktab size: 44, total: 82 (saved 304 bytes) -static const bvalue be_ktab_class_AXP192[44] = { +// compact class 'AXP192' ktab size: 42, total: 82 (saved 320 bytes) +static const bvalue be_ktab_class_AXP192[42] = { /* K0 */ be_const_int(1), /* K1 */ be_nested_str(write_bit), /* K2 */ be_const_int(0), /* K3 */ be_const_int(2), /* K4 */ be_const_int(3), /* K5 */ be_nested_str(read24), - /* K6 */ be_const_real_hex(0x3A102DE1), + /* K6 */ be_const_real_hex(0x3A102DE0), /* K7 */ be_nested_str(read12), /* K8 */ be_const_real_hex(0x3A902DE0), /* K9 */ be_const_real_hex(0x3EC00000), /* K10 */ be_const_int(1), - /* K11 */ be_const_int(2), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str(wire), - /* K14 */ be_nested_str(read), - /* K15 */ be_nested_str(addr), - /* K16 */ be_const_real_hex(0x3AB78035), - /* K17 */ be_const_real_hex(0x3ADED28A), - /* K18 */ be_const_int(0), - /* K19 */ be_const_int(3), + /* K11 */ be_const_int(3), + /* K12 */ be_nested_str(wire), + /* K13 */ be_nested_str(read), + /* K14 */ be_nested_str(addr), + /* K15 */ be_const_int(0), + /* K16 */ be_const_int(1), + /* K17 */ be_const_real_hex(0x3AB78035), + /* K18 */ be_const_real_hex(0x3ADED28A), + /* K19 */ be_const_int(2), /* K20 */ be_nested_str(write8), /* K21 */ be_nested_str(read8), /* K22 */ be_nested_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D), @@ -47,8 +47,6 @@ static const bvalue be_ktab_class_AXP192[44] = { /* K39 */ be_nested_str(web_send_decimal), /* K40 */ be_const_real_hex(0x3DCCCCCD), /* K41 */ be_const_real_hex(0x4310B333), - /* K42 */ be_const_int(1), - /* K43 */ be_const_real_hex(0x3F000000), }; @@ -228,18 +226,18 @@ be_local_closure(class_AXP192_set_ldo_enable, /* name */ &be_const_str_set_ldo_enable, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x1C0C030B, // 0000 EQ R3 R1 K11 + 0x1C0C0303, // 0000 EQ R3 R1 K3 0x780E0004, // 0001 JMPF R3 #0007 0x8C0C0101, // 0002 GETMET R3 R0 K1 0x54160011, // 0003 LDINT R5 18 - 0x5818000B, // 0004 LDCONST R6 K11 + 0x58180003, // 0004 LDCONST R6 K3 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 - 0x1C0C030C, // 0007 EQ R3 R1 K12 + 0x1C0C030B, // 0007 EQ R3 R1 K11 0x780E0004, // 0008 JMPF R3 #000E 0x8C0C0101, // 0009 GETMET R3 R0 K1 0x54160011, // 000A LDINT R5 18 - 0x5818000C, // 000B LDCONST R6 K12 + 0x5818000B, // 000B LDCONST R6 K11 0x5C1C0400, // 000C MOVE R7 R2 0x7C0C0800, // 000D CALL R3 4 0x80000000, // 000E RET 0 @@ -266,11 +264,11 @@ be_local_closure(class_AXP192_get_input_power_status, /* name */ &be_const_str_get_input_power_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x8C04030E, // 0001 GETMET R1 R1 K14 - 0x880C010F, // 0002 GETMBR R3 R0 K15 - 0x58100002, // 0003 LDCONST R4 K2 - 0x58140000, // 0004 LDCONST R5 K0 + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8C04030D, // 0001 GETMET R1 R1 K13 + 0x880C010E, // 0002 GETMBR R3 R0 K14 + 0x5810000F, // 0003 LDCONST R4 K15 + 0x58140010, // 0004 LDCONST R5 K16 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -299,7 +297,7 @@ be_local_closure(class_AXP192_get_aps_voltage, /* name */ 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E007D, // 0001 LDINT R3 126 0x7C040400, // 0002 CALL R1 2 - 0x08040310, // 0003 MUL R1 R1 K16 + 0x08040311, // 0003 MUL R1 R1 K17 0x80040200, // 0004 RET 1 R1 }) ) @@ -353,11 +351,11 @@ be_local_closure(class_AXP192_battery_present, /* name */ &be_const_str_battery_present, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x8C04030E, // 0001 GETMET R1 R1 K14 - 0x880C010F, // 0002 GETMBR R3 R0 K15 - 0x58100000, // 0003 LDCONST R4 K0 - 0x58140000, // 0004 LDCONST R5 K0 + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8C04030D, // 0001 GETMET R1 R1 K13 + 0x880C010E, // 0002 GETMBR R3 R0 K14 + 0x58100010, // 0003 LDCONST R4 K16 + 0x58140010, // 0004 LDCONST R5 K16 0x7C040800, // 0005 CALL R1 4 0x540A001F, // 0006 LDINT R2 32 0x2C040202, // 0007 AND R1 R1 R2 @@ -394,7 +392,7 @@ be_local_closure(class_AXP192_get_vbus_voltage, /* name */ 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E0059, // 0001 LDINT R3 90 0x7C040400, // 0002 CALL R1 2 - 0x08040311, // 0003 MUL R1 R1 K17 + 0x08040312, // 0003 MUL R1 R1 K18 0x80040200, // 0004 RET 1 R1 }) ) @@ -419,9 +417,9 @@ be_local_closure(class_AXP192_write_gpio, /* name */ &be_const_str_write_gpio, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x280C0312, // 0000 GE R3 R1 K18 + 0x280C030F, // 0000 GE R3 R1 K15 0x780E0007, // 0001 JMPF R3 #000A - 0x180C0303, // 0002 LE R3 R1 K3 + 0x180C0313, // 0002 LE R3 R1 K19 0x780E0005, // 0003 JMPF R3 #000A 0x8C0C0101, // 0004 GETMET R3 R0 K1 0x54160093, // 0005 LDINT R5 148 @@ -429,14 +427,14 @@ be_local_closure(class_AXP192_write_gpio, /* name */ 0x5C1C0400, // 0007 MOVE R7 R2 0x7C0C0800, // 0008 CALL R3 4 0x70020009, // 0009 JMP #0014 - 0x280C0313, // 000A GE R3 R1 K19 + 0x280C030B, // 000A GE R3 R1 K11 0x780E0007, // 000B JMPF R3 #0014 0x540E0003, // 000C LDINT R3 4 0x180C0203, // 000D LE R3 R1 R3 0x780E0004, // 000E JMPF R3 #0014 0x8C0C0101, // 000F GETMET R3 R0 K1 0x54160095, // 0010 LDINT R5 150 - 0x04180313, // 0011 SUB R6 R1 K19 + 0x0418030B, // 0011 SUB R6 R1 K11 0x5C1C0400, // 0012 MOVE R7 R2 0x7C0C0800, // 0013 CALL R3 4 0x80000000, // 0014 RET 0 @@ -473,7 +471,7 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ 0x54120011, // 0007 LDINT R4 18 0x040C0604, // 0008 SUB R3 R3 R4 0x5C080600, // 0009 MOVE R2 R3 - 0x1C0C0303, // 000A EQ R3 R1 K3 + 0x1C0C0313, // 000A EQ R3 R1 K19 0x780E000C, // 000B JMPF R3 #0019 0x8C0C0114, // 000C GETMET R3 R0 K20 0x54160027, // 000D LDINT R5 40 @@ -488,7 +486,7 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ 0x381C0E08, // 0016 SHL R7 R7 R8 0x30180C07, // 0017 OR R6 R6 R7 0x7C0C0600, // 0018 CALL R3 3 - 0x1C0C030C, // 0019 EQ R3 R1 K12 + 0x1C0C030B, // 0019 EQ R3 R1 K11 0x780E000A, // 001A JMPF R3 #0026 0x8C0C0114, // 001B GETMET R3 R0 K20 0x54160027, // 001C LDINT R5 40 @@ -525,7 +523,7 @@ be_local_closure(class_AXP192_json_append, /* name */ &be_const_str_json_append, &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8804010C, // 0000 GETMBR R1 R0 K12 0x74060001, // 0001 JMPT R1 #0004 0x4C040000, // 0002 LDNIL R1 0x80040200, // 0003 RET 1 R1 @@ -634,7 +632,7 @@ be_local_closure(class_AXP192_web_sensor, /* name */ &be_const_str_web_sensor, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x8804010C, // 0000 GETMBR R1 R0 K12 0x74060001, // 0001 JMPT R1 #0004 0x4C040000, // 0002 LDNIL R1 0x80040200, // 0003 RET 1 R1 @@ -746,7 +744,7 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ &be_const_str_set_dc_voltage, &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x140C032A, // 0000 LT R3 R1 K42 + 0x140C0310, // 0000 LT R3 R1 K16 0x740E0001, // 0001 JMPT R3 #0004 0x240C0304, // 0002 GT R3 R1 K4 0x780E0000, // 0003 JMPF R3 #0005 @@ -762,7 +760,7 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ 0x78120001, // 000D JMPF R4 #0010 0x540E006F, // 000E LDINT R3 112 0x7002000B, // 000F JMP #001C - 0x1C10030B, // 0010 EQ R4 R1 K11 + 0x1C100313, // 0010 EQ R4 R1 K19 0x78120004, // 0011 JMPF R4 #0017 0x541208E2, // 0012 LDINT R4 2275 0x24100404, // 0013 GT R4 R2 R4 @@ -779,7 +777,7 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ 0x78160001, // 001E JMPF R5 #0021 0x54120026, // 001F LDINT R4 39 0x70020002, // 0020 JMP #0024 - 0x1C14030B, // 0021 EQ R5 R1 K11 + 0x1C140313, // 0021 EQ R5 R1 K19 0x78160000, // 0022 JMPF R5 #0024 0x54120022, // 0023 LDINT R4 35 0x8C140114, // 0024 GETMET R5 R0 K20 @@ -846,11 +844,11 @@ be_local_closure(class_AXP192_get_battery_chargin_status, /* name */ &be_const_str_get_battery_chargin_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x8C04030E, // 0001 GETMET R1 R1 K14 - 0x880C010F, // 0002 GETMBR R3 R0 K15 - 0x58100000, // 0003 LDCONST R4 K0 - 0x58140000, // 0004 LDCONST R5 K0 + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8C04030D, // 0001 GETMET R1 R1 K13 + 0x880C010E, // 0002 GETMBR R3 R0 K14 + 0x58100010, // 0003 LDCONST R4 K16 + 0x58140010, // 0004 LDCONST R5 K16 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -879,7 +877,7 @@ be_local_closure(class_AXP192_get_bat_charge_current, /* name */ 0x8C040120, // 0000 GETMET R1 R0 K32 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x0804032B, // 0003 MUL R1 R1 K43 + 0x08040321, // 0003 MUL R1 R1 K33 0x80040200, // 0004 RET 1 R1 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h index 03870f2bc..e7954d487 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'AXP202' ktab size: 28, total: 64 (saved 288 bytes) -static const bvalue be_ktab_class_AXP202[28] = { +// compact class 'AXP202' ktab size: 31, total: 64 (saved 264 bytes) +static const bvalue be_ktab_class_AXP202[31] = { /* K0 */ be_const_int(0), /* K1 */ be_const_int(1), /* K2 */ be_const_int(2), @@ -17,22 +17,25 @@ static const bvalue be_ktab_class_AXP202[28] = { /* K9 */ be_nested_str(read13), /* K10 */ be_const_real_hex(0x3F000000), /* K11 */ be_nested_str(read24), - /* K12 */ be_const_real_hex(0x3A102DE1), + /* K12 */ be_const_real_hex(0x3A102DE0), /* K13 */ be_const_real_hex(0x3AB78035), /* K14 */ be_const_real_hex(0x3ADED28A), - /* K15 */ be_nested_str(write_bit), - /* K16 */ be_nested_str(wire), - /* K17 */ be_nested_str(read), - /* K18 */ be_nested_str(addr), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str(I2C_Driver), - /* K21 */ be_nested_str(init), - /* K22 */ be_nested_str(AXP202), - /* K23 */ be_const_int(0), - /* K24 */ be_const_int(2), - /* K25 */ be_const_real_hex(0x3F000000), - /* K26 */ be_const_real_hex(0x3DCCCCCD), - /* K27 */ be_const_real_hex(0x4310B333), + /* K15 */ be_const_int(2), + /* K16 */ be_nested_str(write_bit), + /* K17 */ be_nested_str(wire), + /* K18 */ be_nested_str(read), + /* K19 */ be_nested_str(addr), + /* K20 */ be_const_int(1), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str(I2C_Driver), + /* K23 */ be_nested_str(init), + /* K24 */ be_nested_str(AXP202), + /* K25 */ be_const_int(0), + /* K26 */ be_const_int(3), + /* K27 */ be_const_int(0), + /* K28 */ be_const_real_hex(0x3DCCCCCD), + /* K29 */ be_const_real_hex(0x4310B333), + /* K30 */ be_const_int(3), }; @@ -274,16 +277,16 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ &be_const_str_set_ldo_enable, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x1C0C0302, // 0000 EQ R3 R1 K2 + 0x1C0C030F, // 0000 EQ R3 R1 K15 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C010F, // 0002 GETMET R3 R0 K15 + 0x8C0C0110, // 0002 GETMET R3 R0 K16 0x54160011, // 0003 LDINT R5 18 - 0x58180002, // 0004 LDCONST R6 K2 + 0x5818000F, // 0004 LDCONST R6 K15 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 0x1C0C0303, // 0007 EQ R3 R1 K3 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C010F, // 0009 GETMET R3 R0 K15 + 0x8C0C0110, // 0009 GETMET R3 R0 K16 0x54160011, // 000A LDINT R5 18 0x541A0005, // 000B LDINT R6 6 0x5C1C0400, // 000C MOVE R7 R2 @@ -291,7 +294,7 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ 0x540E0003, // 000E LDINT R3 4 0x1C0C0203, // 000F EQ R3 R1 R3 0x780E0004, // 0010 JMPF R3 #0016 - 0x8C0C010F, // 0011 GETMET R3 R0 K15 + 0x8C0C0110, // 0011 GETMET R3 R0 K16 0x54160011, // 0012 LDINT R5 18 0x58180003, // 0013 LDCONST R6 K3 0x5C1C0400, // 0014 MOVE R7 R2 @@ -320,11 +323,11 @@ be_local_closure(class_AXP202_battery_present, /* name */ &be_const_str_battery_present, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88040110, // 0000 GETMBR R1 R0 K16 - 0x8C040311, // 0001 GETMET R1 R1 K17 - 0x880C0112, // 0002 GETMBR R3 R0 K18 - 0x58100001, // 0003 LDCONST R4 K1 - 0x58140001, // 0004 LDCONST R5 K1 + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x8C040312, // 0001 GETMET R1 R1 K18 + 0x880C0113, // 0002 GETMBR R3 R0 K19 + 0x58100014, // 0003 LDCONST R4 K20 + 0x58140014, // 0004 LDCONST R5 K20 0x7C040800, // 0005 CALL R1 4 0x540A001F, // 0006 LDINT R2 32 0x2C040202, // 0007 AND R1 R1 R2 @@ -399,14 +402,14 @@ be_local_closure(class_AXP202_set_dcdc_enable, /* name */ ( &(const binstruction[15]) { /* code */ 0x1C0C0302, // 0000 EQ R3 R1 K2 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C010F, // 0002 GETMET R3 R0 K15 + 0x8C0C0110, // 0002 GETMET R3 R0 K16 0x54160011, // 0003 LDINT R5 18 0x541A0003, // 0004 LDINT R6 4 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 0x1C0C0303, // 0007 EQ R3 R1 K3 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C010F, // 0009 GETMET R3 R0 K15 + 0x8C0C0110, // 0009 GETMET R3 R0 K16 0x54160011, // 000A LDINT R5 18 0x58180001, // 000B LDCONST R6 K1 0x5C1C0400, // 000C MOVE R7 R2 @@ -443,7 +446,7 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */ 0x54120007, // 0005 LDINT R4 8 0x300C0604, // 0006 OR R3 R3 R4 0x5C080600, // 0007 MOVE R2 R3 - 0x2C0C0313, // 0008 AND R3 R1 K19 + 0x2C0C0315, // 0008 AND R3 R1 K21 0x54120003, // 0009 LDINT R4 4 0x380C0604, // 000A SHL R3 R3 R4 0x30080403, // 000B OR R2 R2 R3 @@ -477,10 +480,10 @@ be_local_closure(class_AXP202_init, /* name */ ( &(const binstruction[ 9]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E2800, // 0002 GETNGBL R3 K20 + 0xB80E2C00, // 0002 GETNGBL R3 K22 0x7C040400, // 0003 CALL R1 2 - 0x8C040315, // 0004 GETMET R1 R1 K21 - 0x580C0016, // 0005 LDCONST R3 K22 + 0x8C040317, // 0004 GETMET R1 R1 K23 + 0x580C0018, // 0005 LDCONST R3 K24 0x54120034, // 0006 LDINT R4 53 0x7C040600, // 0007 CALL R1 3 0x80000000, // 0008 RET 0 @@ -507,9 +510,9 @@ be_local_closure(class_AXP202_set_exten, /* name */ &be_const_str_set_exten, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C08010F, // 0000 GETMET R2 R0 K15 + 0x8C080110, // 0000 GETMET R2 R0 K16 0x54120011, // 0001 LDINT R4 18 - 0x58140017, // 0002 LDCONST R5 K23 + 0x58140019, // 0002 LDCONST R5 K25 0x5C180200, // 0003 MOVE R6 R1 0x7C080800, // 0004 CALL R2 4 0x80000000, // 0005 RET 0 @@ -536,11 +539,11 @@ be_local_closure(class_AXP202_get_battery_chargin_status, /* name */ &be_const_str_get_battery_chargin_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040110, // 0000 GETMBR R1 R0 K16 - 0x8C040311, // 0001 GETMET R1 R1 K17 - 0x880C0112, // 0002 GETMBR R3 R0 K18 - 0x58100001, // 0003 LDCONST R4 K1 - 0x58140001, // 0004 LDCONST R5 K1 + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x8C040312, // 0001 GETMET R1 R1 K18 + 0x880C0113, // 0002 GETMBR R3 R0 K19 + 0x58100014, // 0003 LDCONST R4 K20 + 0x58140014, // 0004 LDCONST R5 K20 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -566,23 +569,23 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ &be_const_str_set_dc_voltage, &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ - 0x140C0318, // 0000 LT R3 R1 K24 + 0x140C030F, // 0000 LT R3 R1 K15 0x740E0001, // 0001 JMPT R3 #0004 - 0x240C0303, // 0002 GT R3 R1 K3 + 0x240C031A, // 0002 GT R3 R1 K26 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 0x4C0C0000, // 0005 LDNIL R3 0x541202BB, // 0006 LDINT R4 700 0x14100404, // 0007 LT R4 R2 R4 0x78120001, // 0008 JMPF R4 #000B - 0x580C0017, // 0009 LDCONST R3 K23 + 0x580C001B, // 0009 LDCONST R3 K27 0x70020010, // 000A JMP #001C 0x54120DAB, // 000B LDINT R4 3500 0x24100404, // 000C GT R4 R2 R4 0x78120001, // 000D JMPF R4 #0010 0x540E006F, // 000E LDINT R3 112 0x7002000B, // 000F JMP #001C - 0x1C100318, // 0010 EQ R4 R1 K24 + 0x1C10030F, // 0010 EQ R4 R1 K15 0x78120004, // 0011 JMPF R4 #0017 0x541208E2, // 0012 LDINT R4 2275 0x24100404, // 0013 GT R4 R2 R4 @@ -595,7 +598,7 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ 0x0C100805, // 001A DIV R4 R4 R5 0x5C0C0800, // 001B MOVE R3 R4 0x54120022, // 001C LDINT R4 35 - 0x1C140303, // 001D EQ R5 R1 K3 + 0x1C14031A, // 001D EQ R5 R1 K26 0x78160000, // 001E JMPF R5 #0020 0x54120026, // 001F LDINT R4 39 0x8C140104, // 0020 GETMET R5 R0 K4 @@ -636,7 +639,7 @@ be_local_closure(class_AXP202_get_bat_charge_current, /* name */ 0x8C040109, // 0000 GETMET R1 R0 K9 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x08040319, // 0003 MUL R1 R1 K25 + 0x0804030A, // 0003 MUL R1 R1 K10 0x80040200, // 0004 RET 1 R1 }) ) @@ -664,8 +667,8 @@ be_local_closure(class_AXP202_get_temp, /* name */ 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E005D, // 0001 LDINT R3 94 0x7C040400, // 0002 CALL R1 2 - 0x0804031A, // 0003 MUL R1 R1 K26 - 0x0404031B, // 0004 SUB R1 R1 K27 + 0x0804031C, // 0003 MUL R1 R1 K28 + 0x0404031D, // 0004 SUB R1 R1 K29 0x80040200, // 0005 RET 1 R1 }) ) @@ -694,7 +697,7 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x240C0403, // 0001 GT R3 R2 R3 0x780E0000, // 0002 JMPF R3 #0004 0x540A000E, // 0003 LDINT R2 15 - 0x1C0C0302, // 0004 EQ R3 R1 K2 + 0x1C0C030F, // 0004 EQ R3 R1 K15 0x740E0002, // 0005 JMPT R3 #0009 0x540E0003, // 0006 LDINT R3 4 0x1C0C0203, // 0007 EQ R3 R1 R3 @@ -704,7 +707,7 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x54120011, // 000B LDINT R4 18 0x040C0604, // 000C SUB R3 R3 R4 0x5C080600, // 000D MOVE R2 R3 - 0x1C0C0302, // 000E EQ R3 R1 K2 + 0x1C0C030F, // 000E EQ R3 R1 K15 0x780E000D, // 000F JMPF R3 #001E 0x8C0C0104, // 0010 GETMET R3 R0 K4 0x54160027, // 0011 LDINT R5 40 @@ -777,7 +780,7 @@ be_local_closure(class_AXP202_set_limiting_off, /* name */ 0x8C100105, // 0002 GETMET R4 R0 K5 0x541A002F, // 0003 LDINT R6 48 0x7C100400, // 0004 CALL R4 2 - 0x30100903, // 0005 OR R4 R4 K3 + 0x3010091E, // 0005 OR R4 R4 K30 0x7C040600, // 0006 CALL R1 3 0x80000000, // 0007 RET 0 }) @@ -803,11 +806,11 @@ be_local_closure(class_AXP202_get_input_power_status, /* name */ &be_const_str_get_input_power_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040110, // 0000 GETMBR R1 R0 K16 - 0x8C040311, // 0001 GETMET R1 R1 K17 - 0x880C0112, // 0002 GETMBR R3 R0 K18 - 0x58100017, // 0003 LDCONST R4 K23 - 0x58140001, // 0004 LDCONST R5 K1 + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x8C040312, // 0001 GETMET R1 R1 K18 + 0x880C0113, // 0002 GETMBR R3 R0 K19 + 0x58100000, // 0003 LDCONST R4 K0 + 0x58140014, // 0004 LDCONST R5 K20 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h index e397df9a1..4356ad394 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'I2C_Driver' ktab size: 22, total: 60 (saved 304 bytes) -static const bvalue be_ktab_class_I2C_Driver[22] = { +// compact class 'I2C_Driver' ktab size: 23, total: 60 (saved 296 bytes) +static const bvalue be_ktab_class_I2C_Driver[23] = { /* K0 */ be_const_int(0), /* K1 */ be_const_int(1), /* K2 */ be_nested_str(write8), @@ -12,11 +12,11 @@ static const bvalue be_ktab_class_I2C_Driver[22] = { /* K4 */ be_nested_str(wire), /* K5 */ be_nested_str(read_bytes), /* K6 */ be_nested_str(addr), - /* K7 */ be_const_int(1), + /* K7 */ be_const_int(0), /* K8 */ be_const_int(2), /* K9 */ be_const_int(3), - /* K10 */ be_const_int(3), - /* K11 */ be_const_int(2), + /* K10 */ be_const_int(2), + /* K11 */ be_const_int(1), /* K12 */ be_nested_str(tasmota), /* K13 */ be_nested_str(i2c_enabled), /* K14 */ be_nested_str(wire_scan), @@ -26,7 +26,8 @@ static const bvalue be_ktab_class_I2C_Driver[22] = { /* K18 */ be_nested_str(detected_X20on_X20bus), /* K19 */ be_nested_str(bus), /* K20 */ be_nested_str(write), - /* K21 */ be_nested_str(read), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str(read), }; @@ -104,10 +105,10 @@ be_local_closure(class_I2C_Driver_read32, /* name */ 0x5C140200, // 0003 MOVE R5 R1 0x541A0003, // 0004 LDINT R6 4 0x7C080800, // 0005 CALL R2 4 - 0x940C0500, // 0006 GETIDX R3 R2 K0 + 0x940C0507, // 0006 GETIDX R3 R2 K7 0x54120017, // 0007 LDINT R4 24 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100507, // 0009 GETIDX R4 R2 K7 + 0x94100501, // 0009 GETIDX R4 R2 K1 0x5416000F, // 000A LDINT R5 16 0x38100805, // 000B SHL R4 R4 R5 0x000C0604, // 000C ADD R3 R3 R4 @@ -145,12 +146,12 @@ be_local_closure(class_I2C_Driver_read13, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180008, // 0004 LDCONST R6 K8 + 0x5818000A, // 0004 LDCONST R6 K10 0x7C080800, // 0005 CALL R2 4 - 0x940C0500, // 0006 GETIDX R3 R2 K0 + 0x940C0507, // 0006 GETIDX R3 R2 K7 0x54120004, // 0007 LDINT R4 5 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100507, // 0009 GETIDX R4 R2 K7 + 0x9410050B, // 0009 GETIDX R4 R2 K11 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -180,16 +181,16 @@ be_local_closure(class_I2C_Driver_read24, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x5818000A, // 0004 LDCONST R6 K10 + 0x58180009, // 0004 LDCONST R6 K9 0x7C080800, // 0005 CALL R2 4 - 0x940C0500, // 0006 GETIDX R3 R2 K0 + 0x940C0507, // 0006 GETIDX R3 R2 K7 0x5412000F, // 0007 LDINT R4 16 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100507, // 0009 GETIDX R4 R2 K7 + 0x94100501, // 0009 GETIDX R4 R2 K1 0x54160007, // 000A LDINT R5 8 0x38100805, // 000B SHL R4 R4 R5 0x000C0604, // 000C ADD R3 R3 R4 - 0x9410050B, // 000D GETIDX R4 R2 K11 + 0x9410050A, // 000D GETIDX R4 R2 K10 0x000C0604, // 000E ADD R3 R3 R4 0x80040600, // 000F RET 1 R3 }) @@ -219,12 +220,12 @@ be_local_closure(class_I2C_Driver_read14, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180008, // 0004 LDCONST R6 K8 + 0x5818000A, // 0004 LDCONST R6 K10 0x7C080800, // 0005 CALL R2 4 - 0x940C0500, // 0006 GETIDX R3 R2 K0 + 0x940C0507, // 0006 GETIDX R3 R2 K7 0x54120005, // 0007 LDINT R4 6 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100507, // 0009 GETIDX R4 R2 K7 + 0x9410050B, // 0009 GETIDX R4 R2 K11 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -322,7 +323,7 @@ be_local_closure(class_I2C_Driver_write8, /* name */ 0x88140106, // 0002 GETMBR R5 R0 K6 0x5C180200, // 0003 MOVE R6 R1 0x5C1C0400, // 0004 MOVE R7 R2 - 0x58200001, // 0005 LDCONST R8 K1 + 0x58200015, // 0005 LDCONST R8 K21 0x7C0C0A00, // 0006 CALL R3 5 0x80040600, // 0007 RET 1 R3 }) @@ -349,10 +350,10 @@ be_local_closure(class_I2C_Driver_read8, /* name */ &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88080104, // 0000 GETMBR R2 R0 K4 - 0x8C080515, // 0001 GETMET R2 R2 K21 + 0x8C080516, // 0001 GETMET R2 R2 K22 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180007, // 0004 LDCONST R6 K7 + 0x58180001, // 0004 LDCONST R6 K1 0x7C080800, // 0005 CALL R2 4 0x80040400, // 0006 RET 1 R2 }) @@ -382,12 +383,12 @@ be_local_closure(class_I2C_Driver_read12, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180008, // 0004 LDCONST R6 K8 + 0x5818000A, // 0004 LDCONST R6 K10 0x7C080800, // 0005 CALL R2 4 - 0x940C0500, // 0006 GETIDX R3 R2 K0 + 0x940C0507, // 0006 GETIDX R3 R2 K7 0x54120003, // 0007 LDINT R4 4 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100507, // 0009 GETIDX R4 R2 K7 + 0x9410050B, // 0009 GETIDX R4 R2 K11 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -417,12 +418,12 @@ be_local_closure(class_I2C_Driver_read16, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180008, // 0004 LDCONST R6 K8 + 0x5818000A, // 0004 LDCONST R6 K10 0x7C080800, // 0005 CALL R2 4 - 0x940C0500, // 0006 GETIDX R3 R2 K0 + 0x940C0507, // 0006 GETIDX R3 R2 K7 0x54120007, // 0007 LDINT R4 8 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100507, // 0009 GETIDX R4 R2 K7 + 0x9410050B, // 0009 GETIDX R4 R2 K11 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h index 4bacc84f2..df960472d 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h @@ -1113,8 +1113,8 @@ be_local_class(Leds_matrix, })), (bstring*) &be_const_str_Leds_matrix ); -// compact class 'Leds' ktab size: 46, total: 83 (saved 296 bytes) -static const bvalue be_ktab_class_Leds[46] = { +// compact class 'Leds' ktab size: 47, total: 83 (saved 288 bytes) +static const bvalue be_ktab_class_Leds[47] = { /* K0 */ be_nested_str(leds), /* K1 */ be_const_int(0), /* K2 */ be_nested_str(value_error), @@ -1143,24 +1143,25 @@ static const bvalue be_ktab_class_Leds[46] = { /* K25 */ be_nested_str(Leds), /* K26 */ be_nested_str(create_matrix), /* K27 */ be_const_int(0), - /* K28 */ be_const_int(0), - /* K29 */ be_nested_str(to_gamma), + /* K28 */ be_nested_str(to_gamma), + /* K29 */ be_const_int(0), /* K30 */ be_const_class(be_class_Leds_matrix), /* K31 */ be_const_int(3), - /* K32 */ be_nested_str(invalid_X20GPIO_X20number), - /* K33 */ be_nested_str(global), - /* K34 */ be_nested_str(contains), - /* K35 */ be_nested_str(_rmt), - /* K36 */ be_nested_str(MAX_RMT), - /* K37 */ be_const_int(1), - /* K38 */ be_nested_str(push), - /* K39 */ be_nested_str(stop_iteration), - /* K40 */ be_nested_str(pin_used), - /* K41 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available), - /* K42 */ be_nested_str(WS2812_GRB), - /* K43 */ be_nested_str(assign_rmt), - /* K44 */ be_nested_str(pixel_size), - /* K45 */ be_nested_str(_change_buffer), + /* K32 */ be_const_int(0), + /* K33 */ be_nested_str(invalid_X20GPIO_X20number), + /* K34 */ be_nested_str(global), + /* K35 */ be_nested_str(contains), + /* K36 */ be_nested_str(_rmt), + /* K37 */ be_nested_str(MAX_RMT), + /* K38 */ be_const_int(1), + /* K39 */ be_nested_str(push), + /* K40 */ be_nested_str(stop_iteration), + /* K41 */ be_nested_str(pin_used), + /* K42 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available), + /* K43 */ be_nested_str(WS2812_GRB), + /* K44 */ be_nested_str(assign_rmt), + /* K45 */ be_nested_str(pixel_size), + /* K46 */ be_nested_str(_change_buffer), }; @@ -1587,7 +1588,7 @@ be_local_closure(class_Leds_matrix, /* name */ 0x8C180B1A, // 0006 GETMET R6 R5 K26 0x5C200000, // 0007 MOVE R8 R0 0x5C240200, // 0008 MOVE R9 R1 - 0x5828001B, // 0009 LDCONST R10 K27 + 0x58280001, // 0009 LDCONST R10 K1 0x7C180800, // 000A CALL R6 4 0x80040C00, // 000B RET 1 R6 }) @@ -1613,7 +1614,7 @@ be_local_closure(class_Leds_pixel_offset, /* name */ &be_const_str_pixel_offset, &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ - 0x80063800, // 0000 RET 1 K28 + 0x80063600, // 0000 RET 1 K27 }) ) ); @@ -1643,7 +1644,7 @@ be_local_closure(class_Leds_clear_to, /* name */ 0x88080105, // 0003 GETMBR R2 R0 K5 0x8C0C0106, // 0004 GETMET R3 R0 K6 0x54160008, // 0005 LDINT R5 9 - 0x8C18011D, // 0006 GETMET R6 R0 K29 + 0x8C18011C, // 0006 GETMET R6 R0 K28 0x5C200200, // 0007 MOVE R8 R1 0x5C240400, // 0008 MOVE R9 R2 0x7C180600, // 0009 CALL R6 3 @@ -1679,7 +1680,7 @@ be_local_closure(class_Leds_set_pixel_color, /* name */ 0x8C100106, // 0004 GETMET R4 R0 K6 0x541A0009, // 0005 LDINT R6 10 0x5C1C0200, // 0006 MOVE R7 R1 - 0x8C20011D, // 0007 GETMET R8 R0 K29 + 0x8C20011C, // 0007 GETMET R8 R0 K28 0x5C280400, // 0008 MOVE R10 R2 0x5C2C0600, // 0009 MOVE R11 R3 0x7C200600, // 000A CALL R8 3 @@ -1750,17 +1751,17 @@ be_local_closure(class_Leds_create_matrix, /* name */ 0x4C100000, // 000C LDNIL R4 0x1C100604, // 000D EQ R4 R3 R4 0x78120000, // 000E JMPF R4 #0010 - 0x580C0001, // 000F LDCONST R3 K1 + 0x580C001D, // 000F LDCONST R3 K29 0x08100202, // 0010 MUL R4 R1 R2 0x00100803, // 0011 ADD R4 R4 R3 0x88140100, // 0012 GETMBR R5 R0 K0 0x24100805, // 0013 GT R4 R4 R5 0x74120005, // 0014 JMPT R4 #001B - 0x14100501, // 0015 LT R4 R2 K1 + 0x1410051D, // 0015 LT R4 R2 K29 0x74120003, // 0016 JMPT R4 #001B - 0x14100301, // 0017 LT R4 R1 K1 + 0x1410031D, // 0017 LT R4 R1 K29 0x74120001, // 0018 JMPT R4 #001B - 0x14100701, // 0019 LT R4 R3 K1 + 0x1410071D, // 0019 LT R4 R3 K29 0x78120000, // 001A JMPF R4 #001C 0xB0060503, // 001B RAISE 1 K2 K3 0x5810001E, // 001C LDCONST R4 K30 @@ -1879,72 +1880,72 @@ be_local_closure(class_Leds_assign_rmt, /* name */ 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 0x5C000400, // 0004 MOVE R0 R2 - 0x14080101, // 0005 LT R2 R0 K1 + 0x14080120, // 0005 LT R2 R0 K32 0x780A0000, // 0006 JMPF R2 #0008 - 0xB0060520, // 0007 RAISE 1 K2 K32 - 0xA40A4200, // 0008 IMPORT R2 K33 + 0xB0060521, // 0007 RAISE 1 K2 K33 + 0xA40A4400, // 0008 IMPORT R2 K34 0x4C0C0000, // 0009 LDNIL R3 - 0x8C100522, // 000A GETMET R4 R2 K34 - 0x58180023, // 000B LDCONST R6 K35 + 0x8C100523, // 000A GETMET R4 R2 K35 + 0x58180024, // 000B LDCONST R6 K36 0x7C100400, // 000C CALL R4 2 0x74120021, // 000D JMPT R4 #0030 0x60100012, // 000E GETGBL R4 G18 0x7C100000, // 000F CALL R4 0 0x5C0C0800, // 0010 MOVE R3 R4 - 0x900A4603, // 0011 SETMBR R2 K35 R3 + 0x900A4803, // 0011 SETMBR R2 K36 R3 0x60100010, // 0012 GETGBL R4 G16 0xB8161400, // 0013 GETNGBL R5 K10 - 0x88140B24, // 0014 GETMBR R5 R5 K36 - 0x04140B25, // 0015 SUB R5 R5 K37 - 0x40160205, // 0016 CONNECT R5 K1 R5 + 0x88140B25, // 0014 GETMBR R5 R5 K37 + 0x04140B26, // 0015 SUB R5 R5 K38 + 0x40164005, // 0016 CONNECT R5 K32 R5 0x7C100200, // 0017 CALL R4 1 0xA8020005, // 0018 EXBLK 0 #001F 0x5C140800, // 0019 MOVE R5 R4 0x7C140000, // 001A CALL R5 0 - 0x8C180726, // 001B GETMET R6 R3 K38 + 0x8C180727, // 001B GETMET R6 R3 K39 0x5421FFFE, // 001C LDINT R8 -1 0x7C180400, // 001D CALL R6 2 0x7001FFF9, // 001E JMP #0019 - 0x58100027, // 001F LDCONST R4 K39 + 0x58100028, // 001F LDCONST R4 K40 0xAC100200, // 0020 CATCH R4 1 0 0xB0080000, // 0021 RAISE 2 R0 R0 0xB8121400, // 0022 GETNGBL R4 K10 - 0x8C100928, // 0023 GETMET R4 R4 K40 + 0x8C100929, // 0023 GETMET R4 R4 K41 0xB81A1400, // 0024 GETNGBL R6 K10 0x88180D0D, // 0025 GETMBR R6 R6 K13 - 0x581C0001, // 0026 LDCONST R7 K1 + 0x581C0020, // 0026 LDCONST R7 K32 0x7C100600, // 0027 CALL R4 3 0x78120006, // 0028 JMPF R4 #0030 0xB8121400, // 0029 GETNGBL R4 K10 0x8C10090C, // 002A GETMET R4 R4 K12 0xB81A1400, // 002B GETNGBL R6 K10 0x88180D0D, // 002C GETMBR R6 R6 K13 - 0x581C0001, // 002D LDCONST R7 K1 + 0x581C0020, // 002D LDCONST R7 K32 0x7C100600, // 002E CALL R4 3 - 0x980E0204, // 002F SETIDX R3 K1 R4 - 0x880C0523, // 0030 GETMBR R3 R2 K35 - 0x58100001, // 0031 LDCONST R4 K1 + 0x980E4004, // 002F SETIDX R3 K32 R4 + 0x880C0524, // 0030 GETMBR R3 R2 K36 + 0x58100020, // 0031 LDCONST R4 K32 0x5415FFFE, // 0032 LDINT R5 -1 0xB81A1400, // 0033 GETNGBL R6 K10 - 0x88180D24, // 0034 GETMBR R6 R6 K36 + 0x88180D25, // 0034 GETMBR R6 R6 K37 0x14180806, // 0035 LT R6 R4 R6 0x781A000A, // 0036 JMPF R6 #0042 0x94180604, // 0037 GETIDX R6 R3 R4 0x1C1C0C00, // 0038 EQ R7 R6 R0 0x781E0000, // 0039 JMPF R7 #003B 0x80040800, // 003A RET 1 R4 - 0x141C0D01, // 003B LT R7 R6 K1 + 0x141C0D20, // 003B LT R7 R6 K32 0x781E0002, // 003C JMPF R7 #0040 - 0x141C0B01, // 003D LT R7 R5 K1 + 0x141C0B20, // 003D LT R7 R5 K32 0x781E0000, // 003E JMPF R7 #0040 0x5C140800, // 003F MOVE R5 R4 - 0x00100925, // 0040 ADD R4 R4 K37 + 0x00100926, // 0040 ADD R4 R4 K38 0x7001FFF0, // 0041 JMP #0033 - 0x28180B01, // 0042 GE R6 R5 K1 + 0x28180B20, // 0042 GE R6 R5 K32 0x781A0001, // 0043 JMPF R6 #0046 0x980C0A00, // 0044 SETIDX R3 R5 R0 0x80040A00, // 0045 RET 1 R5 - 0xB0062729, // 0046 RAISE 1 K19 K41 + 0xB006272A, // 0046 RAISE 1 K19 K42 0x80000000, // 0047 RET 0 }) ) @@ -1979,11 +1980,11 @@ be_local_closure(class_Leds_ctor, /* name */ 0x4C140000, // 0007 LDNIL R5 0x1C140605, // 0008 EQ R5 R3 R5 0x78160000, // 0009 JMPF R5 #000B - 0x880C012A, // 000A GETMBR R3 R0 K42 + 0x880C012B, // 000A GETMBR R3 R0 K43 0x4C140000, // 000B LDNIL R5 0x1C140805, // 000C EQ R5 R4 R5 0x78160003, // 000D JMPF R5 #0012 - 0x8C14012B, // 000E GETMET R5 R0 K43 + 0x8C14012C, // 000E GETMET R5 R0 K44 0x5C1C0400, // 000F MOVE R7 R2 0x7C140400, // 0010 CALL R5 2 0x5C100A00, // 0011 MOVE R4 R5 @@ -2026,7 +2027,7 @@ be_local_closure(class_Leds_pixels_buffer, /* name */ 0x780E0009, // 0005 JMPF R3 #0010 0x600C0015, // 0006 GETGBL R3 G21 0x5C100400, // 0007 MOVE R4 R2 - 0x8C14012C, // 0008 GETMET R5 R0 K44 + 0x8C14012D, // 0008 GETMET R5 R0 K45 0x7C140200, // 0009 CALL R5 1 0x8C18010F, // 000A GETMET R6 R0 K15 0x7C180200, // 000B CALL R6 1 @@ -2034,7 +2035,7 @@ be_local_closure(class_Leds_pixels_buffer, /* name */ 0x7C0C0400, // 000D CALL R3 2 0x80040600, // 000E RET 1 R3 0x70020003, // 000F JMP #0014 - 0x8C0C032D, // 0010 GETMET R3 R1 K45 + 0x8C0C032E, // 0010 GETMET R3 R1 K46 0x5C140400, // 0011 MOVE R5 R2 0x7C0C0400, // 0012 CALL R3 2 0x80040200, // 0013 RET 1 R1 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h index 5382c8446..3e49b17b4 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h @@ -372,8 +372,8 @@ be_local_class(lv_clock_icon, })), be_str_weak(lv_clock_icon) ); -// compact class 'lv_signal_arcs' ktab size: 44, total: 52 (saved 64 bytes) -static const bvalue be_ktab_class_lv_signal_arcs[44] = { +// compact class 'lv_signal_arcs' ktab size: 43, total: 52 (saved 72 bytes) +static const bvalue be_ktab_class_lv_signal_arcs[43] = { /* K0 */ be_nested_str_weak(get_code), /* K1 */ be_nested_str_weak(math), /* K2 */ be_nested_str_weak(get_height), @@ -416,8 +416,7 @@ static const bvalue be_ktab_class_lv_signal_arcs[44] = { /* K39 */ be_nested_str_weak(draw_arc_dsc), /* K40 */ be_nested_str_weak(add_event_cb), /* K41 */ be_nested_str_weak(widget_event), - /* K42 */ be_const_int(0), - /* K43 */ be_nested_str_weak(invalidate), + /* K42 */ be_nested_str_weak(invalidate), }; @@ -738,15 +737,15 @@ be_local_closure(class_lv_signal_arcs_set_percentage, /* name */ 0x240C0203, // 0004 GT R3 R1 R3 0x780E0000, // 0005 JMPF R3 #0007 0x54060063, // 0006 LDINT R1 100 - 0x140C032A, // 0007 LT R3 R1 K42 + 0x140C031F, // 0007 LT R3 R1 K31 0x780E0000, // 0008 JMPF R3 #000A - 0x5804002A, // 0009 LDCONST R1 K42 + 0x5804001F, // 0009 LDCONST R1 K31 0x90023A01, // 000A SETMBR R0 K29 R1 0x540E0018, // 000B LDINT R3 25 0x0C0C0203, // 000C DIV R3 R1 R3 0x200C0403, // 000D NE R3 R2 R3 0x780E0001, // 000E JMPF R3 #0011 - 0x8C0C012B, // 000F GETMET R3 R0 K43 + 0x8C0C012A, // 000F GETMET R3 R0 K42 0x7C0C0200, // 0010 CALL R3 1 0x80000000, // 0011 RET 0 }) @@ -1071,16 +1070,16 @@ static const bvalue be_ktab_class_lv_signal_bars[41] = { /* K24 */ be_nested_str_weak(get_style_line_color), /* K25 */ be_nested_str_weak(STATE_DEFAULT), /* K26 */ be_nested_str_weak(get_style_bg_color), - /* K27 */ be_nested_str_weak(color), - /* K28 */ be_nested_str_weak(p1_y), - /* K29 */ be_nested_str_weak(p1_x), - /* K30 */ be_nested_str_weak(p2_y), - /* K31 */ be_nested_str_weak(p2_x), - /* K32 */ be_nested_str_weak(draw_line), - /* K33 */ be_nested_str_weak(stop_iteration), - /* K34 */ be_nested_str_weak(init), - /* K35 */ be_nested_str_weak(set_style_bg_opa), - /* K36 */ be_const_int(0), + /* K27 */ be_const_int(0), + /* K28 */ be_nested_str_weak(color), + /* K29 */ be_nested_str_weak(p1_y), + /* K30 */ be_nested_str_weak(p1_x), + /* K31 */ be_nested_str_weak(p2_y), + /* K32 */ be_nested_str_weak(p2_x), + /* K33 */ be_nested_str_weak(draw_line), + /* K34 */ be_nested_str_weak(stop_iteration), + /* K35 */ be_nested_str_weak(init), + /* K36 */ be_nested_str_weak(set_style_bg_opa), /* K37 */ be_nested_str_weak(set_style_border_width), /* K38 */ be_nested_str_weak(draw_line_dsc), /* K39 */ be_nested_str_weak(add_event_cb), @@ -1258,7 +1257,7 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x30442212, // 003A OR R17 R17 R18 0x7C3C0400, // 003B CALL R15 2 0x60400010, // 003C GETGBL R16 G16 - 0x40460306, // 003D CONNECT R17 K1 K6 + 0x40463706, // 003D CONNECT R17 K27 K6 0x7C400200, // 003E CALL R16 1 0xA8020024, // 003F EXBLK 0 #0065 0x5C442000, // 0040 MOVE R17 R16 @@ -1272,16 +1271,16 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x5C481C00, // 0048 MOVE R18 R14 0x70020000, // 0049 JMP #004B 0x5C481E00, // 004A MOVE R18 R15 - 0x90263612, // 004B SETMBR R9 K27 R18 + 0x90263812, // 004B SETMBR R9 K28 R18 0x00481A04, // 004C ADD R18 R13 R4 0x04482515, // 004D SUB R18 R18 K21 0x04482408, // 004E SUB R18 R18 R8 - 0x90263812, // 004F SETMBR R9 K28 R18 + 0x90263A12, // 004F SETMBR R9 K29 R18 0x00480E06, // 0050 ADD R18 R7 R6 0x08482212, // 0051 MUL R18 R17 R18 0x00481812, // 0052 ADD R18 R12 R18 0x00482408, // 0053 ADD R18 R18 R8 - 0x90263A12, // 0054 SETMBR R9 K29 R18 + 0x90263C12, // 0054 SETMBR R9 K30 R18 0x044A0C11, // 0055 SUB R18 K6 R17 0x044C0807, // 0056 SUB R19 R4 R7 0x08482413, // 0057 MUL R18 R18 R19 @@ -1289,16 +1288,16 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x0C482413, // 0059 DIV R18 R18 R19 0x00481A12, // 005A ADD R18 R13 R18 0x00482408, // 005B ADD R18 R18 R8 - 0x90263C12, // 005C SETMBR R9 K30 R18 - 0x8848131D, // 005D GETMBR R18 R9 K29 - 0x90263E12, // 005E SETMBR R9 K31 R18 + 0x90263E12, // 005C SETMBR R9 K31 R18 + 0x8848131E, // 005D GETMBR R18 R9 K30 + 0x90264012, // 005E SETMBR R9 K32 R18 0xB84A1000, // 005F GETNGBL R18 K8 - 0x8C482520, // 0060 GETMET R18 R18 K32 + 0x8C482521, // 0060 GETMET R18 R18 K33 0x5C501600, // 0061 MOVE R20 R11 0x5C541200, // 0062 MOVE R21 R9 0x7C480600, // 0063 CALL R18 3 0x7001FFDA, // 0064 JMP #0040 - 0x58400021, // 0065 LDCONST R16 K33 + 0x58400022, // 0065 LDCONST R16 K34 0xAC400200, // 0066 CATCH R16 1 0 0xB0080000, // 0067 RAISE 2 R0 R0 0x80000000, // 0068 RET 0 @@ -1328,16 +1327,16 @@ be_local_closure(class_lv_signal_bars_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080522, // 0003 GETMET R2 R2 K34 + 0x8C080523, // 0003 GETMET R2 R2 K35 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x8C080123, // 0006 GETMET R2 R0 K35 - 0x58100024, // 0007 LDCONST R4 K36 - 0x58140024, // 0008 LDCONST R5 K36 + 0x8C080124, // 0006 GETMET R2 R0 K36 + 0x58100001, // 0007 LDCONST R4 K1 + 0x58140001, // 0008 LDCONST R5 K1 0x7C080600, // 0009 CALL R2 3 0x8C080125, // 000A GETMET R2 R0 K37 - 0x58100024, // 000B LDCONST R4 K36 - 0x58140024, // 000C LDCONST R5 K36 + 0x58100001, // 000B LDCONST R4 K1 + 0x58140001, // 000C LDCONST R5 K1 0x7C080600, // 000D CALL R2 3 0x540A0063, // 000E LDINT R2 100 0x90020002, // 000F SETMBR R0 K0 R2 @@ -1353,7 +1352,7 @@ be_local_closure(class_lv_signal_bars_init, /* name */ 0x88100128, // 0019 GETMBR R4 R0 K40 0xB8161000, // 001A GETNGBL R5 K8 0x88140B09, // 001B GETMBR R5 R5 K9 - 0x58180024, // 001C LDCONST R6 K36 + 0x58180001, // 001C LDCONST R6 K1 0x7C080800, // 001D CALL R2 4 0x80000000, // 001E RET 0 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h index d52d3ea33..3eed70efc 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Partition_otadata; -// compact class 'Partition_otadata' ktab size: 26, total: 52 (saved 208 bytes) -static const bvalue be_ktab_class_Partition_otadata[26] = { +// compact class 'Partition_otadata' ktab size: 28, total: 52 (saved 192 bytes) +static const bvalue be_ktab_class_Partition_otadata[28] = { /* K0 */ be_nested_str(flash), /* K1 */ be_nested_str(seq0), /* K2 */ be_const_int(0), @@ -27,11 +27,13 @@ static const bvalue be_ktab_class_Partition_otadata[26] = { /* K18 */ be_const_int(1), /* K19 */ be_nested_str(read), /* K20 */ be_nested_str(get), - /* K21 */ be_nested_str(_validate), - /* K22 */ be_const_class(be_class_Partition_otadata), - /* K23 */ be_nested_str(crc), - /* K24 */ be_nested_str(crc32), - /* K25 */ be_nested_str(load), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str(_validate), + /* K23 */ be_const_class(be_class_Partition_otadata), + /* K24 */ be_nested_str(crc), + /* K25 */ be_nested_str(crc32), + /* K26 */ be_const_int(1), + /* K27 */ be_nested_str(load), }; @@ -264,12 +266,12 @@ be_local_closure(class_Partition_otadata_load, /* name */ 0x541A001F, // 0009 LDINT R6 32 0x7C0C0600, // 000A CALL R3 3 0x8C100514, // 000B GETMET R4 R2 K20 - 0x58180002, // 000C LDCONST R6 K2 + 0x58180015, // 000C LDCONST R6 K21 0x541E0003, // 000D LDINT R7 4 0x7C100600, // 000E CALL R4 3 0x90020204, // 000F SETMBR R0 K1 R4 0x8C100714, // 0010 GETMET R4 R3 K20 - 0x58180002, // 0011 LDCONST R6 K2 + 0x58180015, // 0011 LDCONST R6 K21 0x541E0003, // 0012 LDINT R7 4 0x7C100600, // 0013 CALL R4 3 0x90020604, // 0014 SETMBR R0 K3 R4 @@ -297,7 +299,7 @@ be_local_closure(class_Partition_otadata_load, /* name */ 0x741A0001, // 002A JMPT R6 #002D 0x4C180000, // 002B LDNIL R6 0x90020606, // 002C SETMBR R0 K3 R6 - 0x8C180115, // 002D GETMET R6 R0 K21 + 0x8C180116, // 002D GETMET R6 R0 K22 0x7C180200, // 002E CALL R6 1 0x80000000, // 002F RET 0 }) @@ -323,9 +325,9 @@ be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */ &be_const_str_crc32_ota_seq, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x58040016, // 0000 LDCONST R1 K22 - 0xA40A2E00, // 0001 IMPORT R2 K23 - 0x8C0C0518, // 0002 GETMET R3 R2 K24 + 0x58040017, // 0000 LDCONST R1 K23 + 0xA40A3000, // 0001 IMPORT R2 K24 + 0x8C0C0519, // 0002 GETMET R3 R2 K25 0x5415FFFE, // 0003 LDINT R5 -1 0x60180015, // 0004 GETGBL R6 G21 0x7C180000, // 0005 CALL R6 0 @@ -358,14 +360,14 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ &be_const_str_set_active, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x5808000D, // 0000 LDCONST R2 K13 - 0x580C000D, // 0001 LDCONST R3 K13 + 0x58080015, // 0000 LDCONST R2 K21 + 0x580C0015, // 0001 LDCONST R3 K21 0x88100101, // 0002 GETMBR R4 R0 K1 0x4C140000, // 0003 LDNIL R5 0x20100805, // 0004 NE R4 R4 R5 0x78120001, // 0005 JMPF R4 #0008 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x580C000D, // 0007 LDCONST R3 K13 + 0x580C0015, // 0007 LDCONST R3 K21 0x88100103, // 0008 GETMBR R4 R0 K3 0x4C140000, // 0009 LDNIL R5 0x20100805, // 000A NE R4 R4 R5 @@ -374,10 +376,10 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ 0x24100802, // 000D GT R4 R4 R2 0x78120001, // 000E JMPF R4 #0011 0x88080103, // 000F GETMBR R2 R0 K3 - 0x580C0004, // 0010 LDCONST R3 K4 - 0x04100504, // 0011 SUB R4 R2 K4 + 0x580C001A, // 0010 LDCONST R3 K26 + 0x0410051A, // 0011 SUB R4 R2 K26 0x88140110, // 0012 GETMBR R5 R0 K16 - 0x00140B04, // 0013 ADD R5 R5 K4 + 0x00140B1A, // 0013 ADD R5 R5 K26 0x10100805, // 0014 MOD R4 R4 R5 0x20140801, // 0015 NE R5 R4 R1 0x78160010, // 0016 JMPF R5 #0028 @@ -387,16 +389,16 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ 0x00080405, // 001A ADD R2 R2 R5 0x70020004, // 001B JMP #0021 0x88140110, // 001C GETMBR R5 R0 K16 - 0x00140B04, // 001D ADD R5 R5 K4 + 0x00140B1A, // 001D ADD R5 R5 K26 0x04140A04, // 001E SUB R5 R5 R4 0x00140A01, // 001F ADD R5 R5 R1 0x00080405, // 0020 ADD R2 R2 R5 - 0x1C140704, // 0021 EQ R5 R3 K4 + 0x1C14071A, // 0021 EQ R5 R3 K26 0x78160001, // 0022 JMPF R5 #0025 0x90020202, // 0023 SETMBR R0 K1 R2 0x70020000, // 0024 JMP #0026 0x90020602, // 0025 SETMBR R0 K3 R2 - 0x8C140115, // 0026 GETMET R5 R0 K21 + 0x8C140116, // 0026 GETMET R5 R0 K22 0x7C140200, // 0027 CALL R5 1 0x80000000, // 0028 RET 0 }) @@ -438,7 +440,7 @@ be_local_closure(class_Partition_otadata_init, /* name */ 0x90020A04, // 000D SETMBR R0 K5 R4 0x5411FFFE, // 000E LDINT R4 -1 0x90021804, // 000F SETMBR R0 K12 R4 - 0x8C100119, // 0010 GETMET R4 R0 K25 + 0x8C10011B, // 0010 GETMET R4 R0 K27 0x7C100200, // 0011 CALL R4 1 0x80000000, // 0012 RET 0 }) @@ -473,8 +475,8 @@ be_local_class(Partition_otadata, (bstring*) &be_const_str_Partition_otadata ); extern const bclass be_class_Partition; -// compact class 'Partition' ktab size: 74, total: 134 (saved 480 bytes) -static const bvalue be_ktab_class_Partition[74] = { +// compact class 'Partition' ktab size: 75, total: 134 (saved 472 bytes) +static const bvalue be_ktab_class_Partition[75] = { /* K0 */ be_nested_str(flash), /* K1 */ be_nested_str(tobytes), /* K2 */ be_nested_str(erase), @@ -503,52 +505,53 @@ static const bvalue be_ktab_class_Partition[74] = { /* K25 */ be_nested_str(flash_real), /* K26 */ be_nested_str(get_flash_definition_sector), /* K27 */ be_const_int(3), - /* K28 */ be_const_int(1), - /* K29 */ be_const_int(2), - /* K30 */ be_nested_str(log), - /* K31 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X), - /* K32 */ be_nested_str(wrong_X20flash_X20size_X20), - /* K33 */ be_nested_str(internal_error), - /* K34 */ be_const_class(be_class_Partition), - /* K35 */ be_const_int(0), - /* K36 */ be_nested_str(E9), - /* K37 */ be_nested_str(get_unallocated_k), - /* K38 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB), - /* K39 */ be_nested_str(resize_max_flash_size_k), - /* K40 */ be_nested_str(sz), - /* K41 */ be_nested_str(global), - /* K42 */ be_nested_str(restart_flag), - /* K43 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting), - /* K44 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K45 */ be_nested_str(factory), - /* K46 */ be_nested_str(ota_max), - /* K47 */ be_nested_str(type), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str(log), + /* K30 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X), + /* K31 */ be_nested_str(wrong_X20flash_X20size_X20), + /* K32 */ be_nested_str(internal_error), + /* K33 */ be_const_class(be_class_Partition), + /* K34 */ be_const_int(1), + /* K35 */ be_nested_str(E9), + /* K36 */ be_nested_str(get_unallocated_k), + /* K37 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB), + /* K38 */ be_nested_str(resize_max_flash_size_k), + /* K39 */ be_nested_str(sz), + /* K40 */ be_nested_str(global), + /* K41 */ be_nested_str(restart_flag), + /* K42 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting), + /* K43 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K44 */ be_nested_str(factory), + /* K45 */ be_nested_str(ota_max), + /* K46 */ be_nested_str(type), + /* K47 */ be_const_int(1), /* K48 */ be_nested_str(subtype), - /* K49 */ be_nested_str(start), - /* K50 */ be_nested_str(Partition_otadata), - /* K51 */ be_nested_str(has_factory), - /* K52 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A), - /* K53 */ be_nested_str(_X20_X20), - /* K54 */ be_nested_str(tostring), - /* K55 */ be_nested_str(_X0A), - /* K56 */ be_nested_str(_X5D_X2C_X0A_X20_X20), - /* K57 */ be_nested_str(_X0A_X29_X3E), - /* K58 */ be_nested_str(get_factory_slot), - /* K59 */ be_nested_str(value_error), - /* K60 */ be_nested_str(Too_X20many_X20partiition_X20slots), - /* K61 */ be_nested_str(MD5), - /* K62 */ be_nested_str(update), - /* K63 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF), - /* K64 */ be_nested_str(finish), - /* K65 */ be_nested_str(is_spiffs), - /* K66 */ be_nested_str(No_X20FS_X20partition_X20found), - /* K67 */ be_nested_str(00), - /* K68 */ be_nested_str(is_factory), - /* K69 */ be_nested_str(Invalid_X20ota_X20partition_X20number), - /* K70 */ be_nested_str(set_ota_max), - /* K71 */ be_nested_str(set_active), - /* K72 */ be_nested_str(get_max_flash_size_k), - /* K73 */ be_nested_str(is_ota), + /* K49 */ be_const_int(0), + /* K50 */ be_nested_str(start), + /* K51 */ be_nested_str(Partition_otadata), + /* K52 */ be_nested_str(has_factory), + /* K53 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A), + /* K54 */ be_nested_str(_X20_X20), + /* K55 */ be_nested_str(tostring), + /* K56 */ be_nested_str(_X0A), + /* K57 */ be_nested_str(_X5D_X2C_X0A_X20_X20), + /* K58 */ be_nested_str(_X0A_X29_X3E), + /* K59 */ be_nested_str(get_factory_slot), + /* K60 */ be_nested_str(value_error), + /* K61 */ be_nested_str(Too_X20many_X20partiition_X20slots), + /* K62 */ be_nested_str(MD5), + /* K63 */ be_nested_str(update), + /* K64 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF), + /* K65 */ be_nested_str(finish), + /* K66 */ be_nested_str(is_spiffs), + /* K67 */ be_nested_str(No_X20FS_X20partition_X20found), + /* K68 */ be_nested_str(00), + /* K69 */ be_nested_str(is_factory), + /* K70 */ be_nested_str(Invalid_X20ota_X20partition_X20number), + /* K71 */ be_nested_str(set_ota_max), + /* K72 */ be_nested_str(set_active), + /* K73 */ be_nested_str(get_max_flash_size_k), + /* K74 */ be_nested_str(is_ota), }; @@ -849,11 +852,11 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0x4C1C0000, // 0019 LDNIL R7 0x542203FF, // 001A LDINT R8 1024 0x0C200408, // 001B DIV R8 R2 R8 - 0x1C24111C, // 001C EQ R9 R8 K28 + 0x1C24110E, // 001C EQ R9 R8 K14 0x78260001, // 001D JMPF R9 #0020 - 0x581C000D, // 001E LDCONST R7 K13 + 0x581C001C, // 001E LDCONST R7 K28 0x70020020, // 001F JMP #0041 - 0x1C24111D, // 0020 EQ R9 R8 K29 + 0x1C241110, // 0020 EQ R9 R8 K16 0x78260001, // 0021 JMPF R9 #0024 0x541E000F, // 0022 LDINT R7 16 0x7002001C, // 0023 JMP #0041 @@ -900,9 +903,9 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0x5C340A00, // 004C MOVE R13 R5 0x7C280600, // 004D CALL R10 3 0xB82A2C00, // 004E GETNGBL R10 K22 - 0x8C28151E, // 004F GETMET R10 R10 K30 + 0x8C28151D, // 004F GETMET R10 R10 K29 0x60300018, // 0050 GETGBL R12 G24 - 0x5834001F, // 0051 LDCONST R13 K31 + 0x5834001E, // 0051 LDCONST R13 K30 0x5C381200, // 0052 MOVE R14 R9 0x943C0B1B, // 0053 GETIDX R15 R5 K27 0x7C300600, // 0054 CALL R12 3 @@ -912,8 +915,8 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0x60240008, // 0058 GETGBL R9 G8 0x5C281000, // 0059 MOVE R10 R8 0x7C240200, // 005A CALL R9 1 - 0x00264009, // 005B ADD R9 K32 R9 - 0xB0064209, // 005C RAISE 1 K33 R9 + 0x00263E09, // 005B ADD R9 K31 R9 + 0xB0064009, // 005C RAISE 1 K32 R9 0x80000000, // 005D RET 0 }) ) @@ -938,10 +941,10 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */ &be_const_str_get_flash_definition_sector, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x58000022, // 0000 LDCONST R0 K34 + 0x58000021, // 0000 LDCONST R0 K33 0xA4060000, // 0001 IMPORT R1 K0 0x60080010, // 0002 GETGBL R2 G16 - 0x400E471C, // 0003 CONNECT R3 K35 K28 + 0x400E1B22, // 0003 CONNECT R3 K13 K34 0x7C080200, // 0004 CALL R2 1 0xA802000F, // 0005 EXBLK 0 #0016 0x5C0C0400, // 0006 MOVE R3 R2 @@ -950,10 +953,10 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */ 0x08100604, // 0009 MUL R4 R3 R4 0x8C140307, // 000A GETMET R5 R1 K7 0x5C1C0800, // 000B MOVE R7 R4 - 0x5820001C, // 000C LDCONST R8 K28 + 0x58200022, // 000C LDCONST R8 K34 0x7C140600, // 000D CALL R5 3 0x60180015, // 000E GETGBL R6 G21 - 0x581C0024, // 000F LDCONST R7 K36 + 0x581C0023, // 000F LDCONST R7 K35 0x7C180200, // 0010 CALL R6 1 0x1C140A06, // 0011 EQ R5 R5 R6 0x78160001, // 0012 JMPF R5 #0015 @@ -988,7 +991,7 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ 0xA8020024, // 0000 EXBLK 0 #0026 - 0x8C040125, // 0001 GETMET R1 R0 K37 + 0x8C040124, // 0001 GETMET R1 R0 K36 0x7C040200, // 0002 CALL R1 1 0x1808030D, // 0003 LE R2 R1 K13 0x780A0002, // 0004 JMPF R2 #0008 @@ -996,31 +999,31 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ 0xA8040001, // 0006 EXBLK 1 1 0x80040400, // 0007 RET 1 R2 0xB80A2C00, // 0008 GETNGBL R2 K22 - 0x8C08051E, // 0009 GETMET R2 R2 K30 + 0x8C08051D, // 0009 GETMET R2 R2 K29 0x60100018, // 000A GETGBL R4 G24 - 0x58140026, // 000B LDCONST R5 K38 + 0x58140025, // 000B LDCONST R5 K37 0x5C180200, // 000C MOVE R6 R1 0x7C100400, // 000D CALL R4 2 0x58140010, // 000E LDCONST R5 K16 0x7C080600, // 000F CALL R2 3 - 0x8C080127, // 0010 GETMET R2 R0 K39 + 0x8C080126, // 0010 GETMET R2 R0 K38 0x7C080200, // 0011 CALL R2 1 0x88080109, // 0012 GETMBR R2 R0 K9 0x540DFFFE, // 0013 LDINT R3 -1 0x94080403, // 0014 GETIDX R2 R2 R3 0x541203FF, // 0015 LDINT R4 1024 0x08100204, // 0016 MUL R4 R1 R4 - 0x880C0528, // 0017 GETMBR R3 R2 K40 + 0x880C0527, // 0017 GETMBR R3 R2 K39 0x000C0604, // 0018 ADD R3 R3 R4 - 0x900A5003, // 0019 SETMBR R2 K40 R3 + 0x900A4E03, // 0019 SETMBR R2 K39 R3 0x8C0C0105, // 001A GETMET R3 R0 K5 0x7C0C0200, // 001B CALL R3 1 0xB80E2C00, // 001C GETNGBL R3 K22 - 0x880C0729, // 001D GETMBR R3 R3 K41 - 0x900E5510, // 001E SETMBR R3 K42 K16 + 0x880C0728, // 001D GETMBR R3 R3 K40 + 0x900E5310, // 001E SETMBR R3 K41 K16 0xB80E2C00, // 001F GETNGBL R3 K22 - 0x8C0C071E, // 0020 GETMET R3 R3 K30 - 0x5814002B, // 0021 LDCONST R5 K43 + 0x8C0C071D, // 0020 GETMET R3 R3 K29 + 0x5814002A, // 0021 LDCONST R5 K42 0x58180010, // 0022 LDCONST R6 K16 0x7C0C0600, // 0023 CALL R3 3 0xA8040001, // 0024 EXBLK 1 1 @@ -1028,9 +1031,9 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ 0xAC040002, // 0026 CATCH R1 0 2 0x70020009, // 0027 JMP #0032 0xB80E2C00, // 0028 GETNGBL R3 K22 - 0x8C0C071E, // 0029 GETMET R3 R3 K30 + 0x8C0C071D, // 0029 GETMET R3 R3 K29 0x60140018, // 002A GETGBL R5 G24 - 0x5818002C, // 002B LDCONST R6 K44 + 0x5818002B, // 002B LDCONST R6 K43 0x5C1C0200, // 002C MOVE R7 R1 0x5C200400, // 002D MOVE R8 R2 0x7C140600, // 002E CALL R5 3 @@ -1063,7 +1066,7 @@ be_local_closure(class_Partition_switch_factory, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C052D, // 0001 GETMET R3 R2 K45 + 0x8C0C052C, // 0001 GETMET R3 R2 K44 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x80000000, // 0004 RET 0 @@ -1091,7 +1094,7 @@ be_local_closure(class_Partition_load_otadata, /* name */ &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x5406DFFF, // 0000 LDINT R1 57344 - 0x8C08012E, // 0001 GETMET R2 R0 K46 + 0x8C08012D, // 0001 GETMET R2 R0 K45 0x7C080200, // 0002 CALL R2 1 0x600C0010, // 0003 GETGBL R3 G16 0x88100109, // 0004 GETMBR R4 R0 K9 @@ -1099,21 +1102,21 @@ be_local_closure(class_Partition_load_otadata, /* name */ 0xA8020009, // 0006 EXBLK 0 #0011 0x5C100600, // 0007 MOVE R4 R3 0x7C100000, // 0008 CALL R4 0 - 0x8814092F, // 0009 GETMBR R5 R4 K47 - 0x1C140B1C, // 000A EQ R5 R5 K28 + 0x8814092E, // 0009 GETMBR R5 R4 K46 + 0x1C140B2F, // 000A EQ R5 R5 K47 0x78160003, // 000B JMPF R5 #0010 0x88140930, // 000C GETMBR R5 R4 K48 - 0x1C140B23, // 000D EQ R5 R5 K35 + 0x1C140B31, // 000D EQ R5 R5 K49 0x78160000, // 000E JMPF R5 #0010 - 0x88040931, // 000F GETMBR R1 R4 K49 + 0x88040932, // 000F GETMBR R1 R4 K50 0x7001FFF5, // 0010 JMP #0007 0x580C0015, // 0011 LDCONST R3 K21 0xAC0C0200, // 0012 CATCH R3 1 0 0xB0080000, // 0013 RAISE 2 R0 R0 0xB80E2200, // 0014 GETNGBL R3 K17 - 0x8C0C0732, // 0015 GETMET R3 R3 K50 + 0x8C0C0733, // 0015 GETMET R3 R3 K51 0x5C140400, // 0016 MOVE R5 R2 - 0x8C180133, // 0017 GETMET R6 R0 K51 + 0x8C180134, // 0017 GETMET R6 R0 K52 0x7C180200, // 0018 CALL R6 1 0x5C1C0200, // 0019 MOVE R7 R1 0x7C0C0800, // 001A CALL R3 4 @@ -1142,28 +1145,28 @@ be_local_closure(class_Partition_tostring, /* name */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x58040034, // 0000 LDCONST R1 K52 + 0x58040035, // 0000 LDCONST R1 K53 0x60080010, // 0001 GETGBL R2 G16 0x880C0109, // 0002 GETMBR R3 R0 K9 0x7C080200, // 0003 CALL R2 1 0xA8020007, // 0004 EXBLK 0 #000D 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x00040335, // 0007 ADD R1 R1 K53 - 0x8C100736, // 0008 GETMET R4 R3 K54 + 0x00040336, // 0007 ADD R1 R1 K54 + 0x8C100737, // 0008 GETMET R4 R3 K55 0x7C100200, // 0009 CALL R4 1 0x00040204, // 000A ADD R1 R1 R4 - 0x00040337, // 000B ADD R1 R1 K55 + 0x00040338, // 000B ADD R1 R1 K56 0x7001FFF7, // 000C JMP #0005 0x58080015, // 000D LDCONST R2 K21 0xAC080200, // 000E CATCH R2 1 0 0xB0080000, // 000F RAISE 2 R0 R0 - 0x00040338, // 0010 ADD R1 R1 K56 + 0x00040339, // 0010 ADD R1 R1 K57 0x88080104, // 0011 GETMBR R2 R0 K4 - 0x8C080536, // 0012 GETMET R2 R2 K54 + 0x8C080537, // 0012 GETMET R2 R2 K55 0x7C080200, // 0013 CALL R2 1 0x00040202, // 0014 ADD R1 R1 R2 - 0x00040339, // 0015 ADD R1 R1 K57 + 0x0004033A, // 0015 ADD R1 R1 K58 0x80040200, // 0016 RET 1 R1 }) ) @@ -1188,7 +1191,7 @@ be_local_closure(class_Partition_has_factory, /* name */ &be_const_str_has_factory, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C04013A, // 0000 GETMET R1 R0 K58 + 0x8C04013B, // 0000 GETMET R1 R0 K59 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x20040202, // 0003 NE R1 R1 R2 @@ -1222,7 +1225,7 @@ be_local_closure(class_Partition_tobytes, /* name */ 0x540A005E, // 0003 LDINT R2 95 0x24040202, // 0004 GT R1 R1 R2 0x78060000, // 0005 JMPF R1 #0007 - 0xB006773C, // 0006 RAISE 1 K59 K60 + 0xB006793D, // 0006 RAISE 1 K60 K61 0x60040015, // 0007 GETGBL R1 G21 0x7C040000, // 0008 CALL R1 0 0x60080010, // 0009 GETGBL R2 G16 @@ -1238,16 +1241,16 @@ be_local_closure(class_Partition_tobytes, /* name */ 0x58080015, // 0013 LDCONST R2 K21 0xAC080200, // 0014 CATCH R2 1 0 0xB0080000, // 0015 RAISE 2 R0 R0 - 0xB80A7A00, // 0016 GETNGBL R2 K61 + 0xB80A7C00, // 0016 GETNGBL R2 K62 0x7C080000, // 0017 CALL R2 0 - 0x8C0C053E, // 0018 GETMET R3 R2 K62 + 0x8C0C053F, // 0018 GETMET R3 R2 K63 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 0x600C0015, // 001B GETGBL R3 G21 - 0x5810003F, // 001C LDCONST R4 K63 + 0x58100040, // 001C LDCONST R4 K64 0x7C0C0200, // 001D CALL R3 1 0x00040203, // 001E ADD R1 R1 R3 - 0x8C0C0540, // 001F GETMET R3 R2 K64 + 0x8C0C0541, // 001F GETMET R3 R2 K65 0x7C0C0200, // 0020 CALL R3 1 0x00040203, // 0021 ADD R1 R1 R3 0x80040200, // 0022 RET 1 R1 @@ -1281,8 +1284,8 @@ be_local_closure(class_Partition_ota_max, /* name */ 0xA8020016, // 0004 EXBLK 0 #001C 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x8810072F, // 0007 GETMBR R4 R3 K47 - 0x1C100923, // 0008 EQ R4 R4 K35 + 0x8810072E, // 0007 GETMBR R4 R3 K46 + 0x1C10090D, // 0008 EQ R4 R4 K13 0x78120010, // 0009 JMPF R4 #001B 0x88100730, // 000A GETMBR R4 R3 K48 0x5416000F, // 000B LDINT R5 16 @@ -1333,19 +1336,19 @@ be_local_closure(class_Partition_invalidate_spiffs, /* name */ 0x88080109, // 0001 GETMBR R2 R0 K9 0x540DFFFE, // 0002 LDINT R3 -1 0x94080403, // 0003 GETIDX R2 R2 R3 - 0x8C0C0541, // 0004 GETMET R3 R2 K65 + 0x8C0C0542, // 0004 GETMET R3 R2 K66 0x7C0C0200, // 0005 CALL R3 1 0x740E0000, // 0006 JMPT R3 #0008 - 0xB0067742, // 0007 RAISE 1 K59 K66 + 0xB0067943, // 0007 RAISE 1 K60 K67 0x600C0015, // 0008 GETGBL R3 G21 - 0x58100043, // 0009 LDCONST R4 K67 + 0x58100044, // 0009 LDCONST R4 K68 0x7C0C0200, // 000A CALL R3 1 0x8C100303, // 000B GETMET R4 R1 K3 - 0x88180531, // 000C GETMBR R6 R2 K49 + 0x88180532, // 000C GETMBR R6 R2 K50 0x5C1C0600, // 000D MOVE R7 R3 0x7C100600, // 000E CALL R4 3 0x8C100303, // 000F GETMET R4 R1 K3 - 0x88180531, // 0010 GETMBR R6 R2 K49 + 0x88180532, // 0010 GETMBR R6 R2 K50 0x541E0FFF, // 0011 LDINT R7 4096 0x00180C07, // 0012 ADD R6 R6 R7 0x5C1C0600, // 0013 MOVE R7 R3 @@ -1380,7 +1383,7 @@ be_local_closure(class_Partition_get_factory_slot, /* name */ 0xA8020007, // 0003 EXBLK 0 #000C 0x5C080200, // 0004 MOVE R2 R1 0x7C080000, // 0005 CALL R2 0 - 0x8C0C0544, // 0006 GETMET R3 R2 K68 + 0x8C0C0545, // 0006 GETMET R3 R2 K69 0x7C0C0200, // 0007 CALL R3 1 0x780E0001, // 0008 JMPF R3 #000B 0xA8040001, // 0009 EXBLK 1 1 @@ -1413,20 +1416,20 @@ be_local_closure(class_Partition_set_active, /* name */ &be_const_str_set_active, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x1408030D, // 0000 LT R2 R1 K13 + 0x1408031C, // 0000 LT R2 R1 K28 0x740A0003, // 0001 JMPT R2 #0006 - 0x8C08012E, // 0002 GETMET R2 R0 K46 + 0x8C08012D, // 0002 GETMET R2 R0 K45 0x7C080200, // 0003 CALL R2 1 0x24080202, // 0004 GT R2 R1 R2 0x780A0000, // 0005 JMPF R2 #0007 - 0xB0067745, // 0006 RAISE 1 K59 K69 + 0xB0067946, // 0006 RAISE 1 K60 K70 0x88080104, // 0007 GETMBR R2 R0 K4 - 0x8C080546, // 0008 GETMET R2 R2 K70 - 0x8C10012E, // 0009 GETMET R4 R0 K46 + 0x8C080547, // 0008 GETMET R2 R2 K71 + 0x8C10012D, // 0009 GETMET R4 R0 K45 0x7C100200, // 000A CALL R4 1 0x7C080400, // 000B CALL R2 2 0x88080104, // 000C GETMBR R2 R0 K4 - 0x8C080547, // 000D GETMET R2 R2 K71 + 0x8C080548, // 000D GETMET R2 R2 K72 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80000000, // 0010 RET 0 @@ -1456,13 +1459,13 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ 0x88040109, // 0000 GETMBR R1 R0 K9 0x5409FFFE, // 0001 LDINT R2 -1 0x94040202, // 0002 GETIDX R1 R1 R2 - 0x8C080341, // 0003 GETMET R2 R1 K65 + 0x8C080342, // 0003 GETMET R2 R1 K66 0x7C080200, // 0004 CALL R2 1 0x780A000A, // 0005 JMPF R2 #0011 - 0x8C080148, // 0006 GETMET R2 R0 K72 + 0x8C080149, // 0006 GETMET R2 R0 K73 0x7C080200, // 0007 CALL R2 1 - 0x880C0331, // 0008 GETMBR R3 R1 K49 - 0x88100328, // 0009 GETMBR R4 R1 K40 + 0x880C0332, // 0008 GETMBR R3 R1 K50 + 0x88100327, // 0009 GETMBR R4 R1 K39 0x000C0604, // 000A ADD R3 R3 R4 0x541203FF, // 000B LDINT R4 1024 0x0C0C0604, // 000C DIV R3 R3 R4 @@ -1470,7 +1473,7 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ 0x78120001, // 000E JMPF R4 #0011 0x04100403, // 000F SUB R4 R2 R3 0x80040800, // 0010 RET 1 R4 - 0x80061A00, // 0011 RET 1 K13 + 0x80063800, // 0011 RET 1 K28 }) ) ); @@ -1500,7 +1503,7 @@ be_local_closure(class_Partition_get_ota_slot, /* name */ 0xA8020008, // 0003 EXBLK 0 #000D 0x5C0C0400, // 0004 MOVE R3 R2 0x7C0C0000, // 0005 CALL R3 0 - 0x8C100749, // 0006 GETMET R4 R3 K73 + 0x8C10074A, // 0006 GETMET R4 R3 K74 0x7C100200, // 0007 CALL R4 1 0x1C100801, // 0008 EQ R4 R4 R1 0x78120001, // 0009 JMPF R4 #000C @@ -1554,8 +1557,8 @@ be_local_class(Partition, (bstring*) &be_const_str_Partition ); extern const bclass be_class_Partition_info; -// compact class 'Partition_info' ktab size: 53, total: 92 (saved 312 bytes) -static const bvalue be_ktab_class_Partition_info[53] = { +// compact class 'Partition_info' ktab size: 55, total: 92 (saved 296 bytes) +static const bvalue be_ktab_class_Partition_info[55] = { /* K0 */ be_nested_str(type), /* K1 */ be_const_int(0), /* K2 */ be_nested_str(subtype), @@ -1563,52 +1566,54 @@ static const bvalue be_ktab_class_Partition_info[53] = { /* K4 */ be_const_int(1), /* K5 */ be_nested_str(data), /* K6 */ be_nested_str(0x_X2502X), - /* K7 */ be_nested_str(start), - /* K8 */ be_nested_str(sz), - /* K9 */ be_nested_str(label), - /* K10 */ be_nested_str(), - /* K11 */ be_nested_str(flags), - /* K12 */ be_nested_str(get), - /* K13 */ be_const_int(2), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str(remove_trailing_zeroes), - /* K16 */ be_nested_str(asstring), - /* K17 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X), - /* K18 */ be_nested_str(internal_error), - /* K19 */ be_nested_str(factory), - /* K20 */ be_nested_str(ota_), - /* K21 */ be_nested_str(test), - /* K22 */ be_nested_str(otadata), - /* K23 */ be_nested_str(phy), - /* K24 */ be_const_int(2), - /* K25 */ be_nested_str(nvs), - /* K26 */ be_const_int(3), - /* K27 */ be_nested_str(coredump), - /* K28 */ be_nested_str(nvskeys), - /* K29 */ be_nested_str(efuse_em), - /* K30 */ be_nested_str(esphttpd), - /* K31 */ be_nested_str(fat), - /* K32 */ be_nested_str(spiffs), - /* K33 */ be_nested_str(type_to_string), - /* K34 */ be_nested_str(subtype_to_string), - /* K35 */ be_nested_str(_X20_X28), - /* K36 */ be_nested_str(_X29), - /* K37 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E), - /* K38 */ be_nested_str(AA50), - /* K39 */ be_nested_str(resize), - /* K40 */ be_nested_str(add), - /* K41 */ be_const_int(1), - /* K42 */ be_nested_str(fromstring), - /* K43 */ be_const_class(be_class_Partition_info), - /* K44 */ be_const_int(0), - /* K45 */ be_nested_str(flash), - /* K46 */ be_nested_str(is_ota), - /* K47 */ be_nested_str(is_factory), - /* K48 */ be_nested_str(read), - /* K49 */ be_nested_str(tasmota), - /* K50 */ be_nested_str(log), - /* K51 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27), - /* K52 */ be_nested_str(_X27_X20_X2D_X20), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str(start), + /* K9 */ be_nested_str(sz), + /* K10 */ be_nested_str(label), + /* K11 */ be_nested_str(), + /* K12 */ be_nested_str(flags), + /* K13 */ be_nested_str(get), + /* K14 */ be_const_int(2), + /* K15 */ be_const_int(1), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str(remove_trailing_zeroes), + /* K18 */ be_nested_str(asstring), + /* K19 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X), + /* K20 */ be_nested_str(internal_error), + /* K21 */ be_const_int(0), + /* K22 */ be_nested_str(factory), + /* K23 */ be_nested_str(ota_), + /* K24 */ be_nested_str(test), + /* K25 */ be_nested_str(otadata), + /* K26 */ be_nested_str(phy), + /* K27 */ be_nested_str(nvs), + /* K28 */ be_const_int(3), + /* K29 */ be_nested_str(coredump), + /* K30 */ be_nested_str(nvskeys), + /* K31 */ be_nested_str(efuse_em), + /* K32 */ be_nested_str(esphttpd), + /* K33 */ be_nested_str(fat), + /* K34 */ be_nested_str(spiffs), + /* K35 */ be_nested_str(type_to_string), + /* K36 */ be_nested_str(subtype_to_string), + /* K37 */ be_nested_str(_X20_X28), + /* K38 */ be_nested_str(_X29), + /* K39 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E), + /* K40 */ be_const_int(0), + /* K41 */ be_nested_str(AA50), + /* K42 */ be_nested_str(resize), + /* K43 */ be_nested_str(add), + /* K44 */ be_nested_str(fromstring), + /* K45 */ be_const_class(be_class_Partition_info), + /* K46 */ be_const_int(1), + /* K47 */ be_nested_str(flash), + /* K48 */ be_nested_str(is_ota), + /* K49 */ be_nested_str(is_factory), + /* K50 */ be_nested_str(read), + /* K51 */ be_nested_str(tasmota), + /* K52 */ be_nested_str(log), + /* K53 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27), + /* K54 */ be_nested_str(_X27_X20_X2D_X20), }; @@ -1700,65 +1705,65 @@ be_local_closure(class_Partition_info_init, /* name */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[60]) { /* code */ - 0x90020101, // 0000 SETMBR R0 K0 K1 - 0x90020501, // 0001 SETMBR R0 K2 K1 - 0x90020F01, // 0002 SETMBR R0 K7 K1 - 0x90021101, // 0003 SETMBR R0 K8 K1 - 0x9002130A, // 0004 SETMBR R0 K9 K10 - 0x90021701, // 0005 SETMBR R0 K11 K1 + 0x90020107, // 0000 SETMBR R0 K0 K7 + 0x90020507, // 0001 SETMBR R0 K2 K7 + 0x90021107, // 0002 SETMBR R0 K8 K7 + 0x90021307, // 0003 SETMBR R0 K9 K7 + 0x9002150B, // 0004 SETMBR R0 K10 K11 + 0x90021907, // 0005 SETMBR R0 K12 K7 0x6008000E, // 0006 GETGBL R2 G14 0x600C0015, // 0007 GETGBL R3 G21 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 0x740A0000, // 000A JMPT R2 #000C 0x80000400, // 000B RET 0 - 0x8C08030C, // 000C GETMET R2 R1 K12 - 0x58100001, // 000D LDCONST R4 K1 - 0x5814000D, // 000E LDCONST R5 K13 + 0x8C08030D, // 000C GETMET R2 R1 K13 + 0x58100007, // 000D LDCONST R4 K7 + 0x5814000E, // 000E LDCONST R5 K14 0x7C080600, // 000F CALL R2 3 0x540E50A9, // 0010 LDINT R3 20650 0x1C0C0403, // 0011 EQ R3 R2 R3 0x780E0022, // 0012 JMPF R3 #0036 - 0x8C0C030C, // 0013 GETMET R3 R1 K12 - 0x5814000D, // 0014 LDCONST R5 K13 - 0x58180004, // 0015 LDCONST R6 K4 + 0x8C0C030D, // 0013 GETMET R3 R1 K13 + 0x5814000E, // 0014 LDCONST R5 K14 + 0x5818000F, // 0015 LDCONST R6 K15 0x7C0C0600, // 0016 CALL R3 3 0x90020003, // 0017 SETMBR R0 K0 R3 - 0x8C0C030C, // 0018 GETMET R3 R1 K12 - 0x5814000E, // 0019 LDCONST R5 K14 - 0x58180004, // 001A LDCONST R6 K4 + 0x8C0C030D, // 0018 GETMET R3 R1 K13 + 0x58140010, // 0019 LDCONST R5 K16 + 0x5818000F, // 001A LDCONST R6 K15 0x7C0C0600, // 001B CALL R3 3 0x90020403, // 001C SETMBR R0 K2 R3 - 0x8C0C030C, // 001D GETMET R3 R1 K12 + 0x8C0C030D, // 001D GETMET R3 R1 K13 0x54160003, // 001E LDINT R5 4 0x541A0003, // 001F LDINT R6 4 0x7C0C0600, // 0020 CALL R3 3 - 0x90020E03, // 0021 SETMBR R0 K7 R3 - 0x8C0C030C, // 0022 GETMET R3 R1 K12 + 0x90021003, // 0021 SETMBR R0 K8 R3 + 0x8C0C030D, // 0022 GETMET R3 R1 K13 0x54160007, // 0023 LDINT R5 8 0x541A0003, // 0024 LDINT R6 4 0x7C0C0600, // 0025 CALL R3 3 - 0x90021003, // 0026 SETMBR R0 K8 R3 - 0x8C0C010F, // 0027 GETMET R3 R0 K15 + 0x90021203, // 0026 SETMBR R0 K9 R3 + 0x8C0C0111, // 0027 GETMET R3 R0 K17 0x5416000B, // 0028 LDINT R5 12 0x541A001A, // 0029 LDINT R6 27 0x40140A06, // 002A CONNECT R5 R5 R6 0x94140205, // 002B GETIDX R5 R1 R5 0x7C0C0400, // 002C CALL R3 2 - 0x8C0C0710, // 002D GETMET R3 R3 K16 + 0x8C0C0712, // 002D GETMET R3 R3 K18 0x7C0C0200, // 002E CALL R3 1 - 0x90021203, // 002F SETMBR R0 K9 R3 - 0x8C0C030C, // 0030 GETMET R3 R1 K12 + 0x90021403, // 002F SETMBR R0 K10 R3 + 0x8C0C030D, // 0030 GETMET R3 R1 K13 0x5416001B, // 0031 LDINT R5 28 0x541A0003, // 0032 LDINT R6 4 0x7C0C0600, // 0033 CALL R3 3 - 0x90021603, // 0034 SETMBR R0 K11 R3 + 0x90021803, // 0034 SETMBR R0 K12 R3 0x70020004, // 0035 JMP #003B 0x600C0018, // 0036 GETGBL R3 G24 - 0x58100011, // 0037 LDCONST R4 K17 + 0x58100013, // 0037 LDCONST R4 K19 0x5C140400, // 0038 MOVE R5 R2 0x7C0C0400, // 0039 CALL R3 2 - 0xB0062403, // 003A RAISE 1 K18 R3 + 0xB0062803, // 003A RAISE 1 K20 R3 0x80000000, // 003B RET 0 }) ) @@ -1784,12 +1789,12 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ &be_const_str_solidified, ( &(const binstruction[87]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x1C040301, // 0001 EQ R1 R1 K1 + 0x1C040315, // 0001 EQ R1 R1 K21 0x7806001A, // 0002 JMPF R1 #001E 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x1C040301, // 0004 EQ R1 R1 K1 + 0x1C040315, // 0004 EQ R1 R1 K21 0x78060001, // 0005 JMPF R1 #0008 - 0x80062600, // 0006 RET 1 K19 + 0x80062C00, // 0006 RET 1 K22 0x70020014, // 0007 JMP #001D 0x88040102, // 0008 GETMBR R1 R0 K2 0x540A000F, // 0009 LDINT R2 16 @@ -1804,67 +1809,67 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ 0x540E000F, // 0012 LDINT R3 16 0x04080403, // 0013 SUB R2 R2 R3 0x7C040200, // 0014 CALL R1 1 - 0x00062801, // 0015 ADD R1 K20 R1 + 0x00062E01, // 0015 ADD R1 K23 R1 0x80040200, // 0016 RET 1 R1 0x70020004, // 0017 JMP #001D 0x88040102, // 0018 GETMBR R1 R0 K2 0x540A001F, // 0019 LDINT R2 32 0x1C040202, // 001A EQ R1 R1 R2 0x78060000, // 001B JMPF R1 #001D - 0x80062A00, // 001C RET 1 K21 + 0x80063000, // 001C RET 1 K24 0x70020033, // 001D JMP #0052 0x88040100, // 001E GETMBR R1 R0 K0 0x1C040304, // 001F EQ R1 R1 K4 0x78060030, // 0020 JMPF R1 #0052 0x88040102, // 0021 GETMBR R1 R0 K2 - 0x1C040301, // 0022 EQ R1 R1 K1 + 0x1C040315, // 0022 EQ R1 R1 K21 0x78060001, // 0023 JMPF R1 #0026 - 0x80062C00, // 0024 RET 1 K22 + 0x80063200, // 0024 RET 1 K25 0x7002002B, // 0025 JMP #0052 0x88040102, // 0026 GETMBR R1 R0 K2 0x1C040304, // 0027 EQ R1 R1 K4 0x78060001, // 0028 JMPF R1 #002B - 0x80062E00, // 0029 RET 1 K23 + 0x80063400, // 0029 RET 1 K26 0x70020026, // 002A JMP #0052 0x88040102, // 002B GETMBR R1 R0 K2 - 0x1C040318, // 002C EQ R1 R1 K24 + 0x1C04030E, // 002C EQ R1 R1 K14 0x78060001, // 002D JMPF R1 #0030 - 0x80063200, // 002E RET 1 K25 + 0x80063600, // 002E RET 1 K27 0x70020021, // 002F JMP #0052 0x88040102, // 0030 GETMBR R1 R0 K2 - 0x1C04031A, // 0031 EQ R1 R1 K26 + 0x1C04031C, // 0031 EQ R1 R1 K28 0x78060001, // 0032 JMPF R1 #0035 - 0x80063600, // 0033 RET 1 K27 + 0x80063A00, // 0033 RET 1 K29 0x7002001C, // 0034 JMP #0052 0x88040102, // 0035 GETMBR R1 R0 K2 0x540A0003, // 0036 LDINT R2 4 0x1C040202, // 0037 EQ R1 R1 R2 0x78060001, // 0038 JMPF R1 #003B - 0x80063800, // 0039 RET 1 K28 + 0x80063C00, // 0039 RET 1 K30 0x70020016, // 003A JMP #0052 0x88040102, // 003B GETMBR R1 R0 K2 0x540A0004, // 003C LDINT R2 5 0x1C040202, // 003D EQ R1 R1 R2 0x78060001, // 003E JMPF R1 #0041 - 0x80063A00, // 003F RET 1 K29 + 0x80063E00, // 003F RET 1 K31 0x70020010, // 0040 JMP #0052 0x88040102, // 0041 GETMBR R1 R0 K2 0x540A007F, // 0042 LDINT R2 128 0x1C040202, // 0043 EQ R1 R1 R2 0x78060001, // 0044 JMPF R1 #0047 - 0x80063C00, // 0045 RET 1 K30 + 0x80064000, // 0045 RET 1 K32 0x7002000A, // 0046 JMP #0052 0x88040102, // 0047 GETMBR R1 R0 K2 0x540A0080, // 0048 LDINT R2 129 0x1C040202, // 0049 EQ R1 R1 R2 0x78060001, // 004A JMPF R1 #004D - 0x80063E00, // 004B RET 1 K31 + 0x80064200, // 004B RET 1 K33 0x70020004, // 004C JMP #0052 0x88040102, // 004D GETMBR R1 R0 K2 0x540A0081, // 004E LDINT R2 130 0x1C040202, // 004F EQ R1 R1 R2 0x78060000, // 0050 JMPF R1 #0052 - 0x80064000, // 0051 RET 1 K32 + 0x80064400, // 0051 RET 1 K34 0x60040018, // 0052 GETGBL R1 G24 0x58080006, // 0053 LDCONST R2 K6 0x880C0102, // 0054 GETMBR R3 R0 K2 @@ -1893,30 +1898,30 @@ be_local_closure(class_Partition_info_tostring, /* name */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x8C040121, // 0000 GETMET R1 R0 K33 + 0x8C040123, // 0000 GETMET R1 R0 K35 0x7C040200, // 0001 CALL R1 1 - 0x8C080122, // 0002 GETMET R2 R0 K34 + 0x8C080124, // 0002 GETMET R2 R0 K36 0x7C080200, // 0003 CALL R2 1 - 0x200C030A, // 0004 NE R3 R1 K10 + 0x200C030B, // 0004 NE R3 R1 K11 0x780E0002, // 0005 JMPF R3 #0009 - 0x000E4601, // 0006 ADD R3 K35 R1 - 0x000C0724, // 0007 ADD R3 R3 K36 + 0x000E4A01, // 0006 ADD R3 K37 R1 + 0x000C0726, // 0007 ADD R3 R3 K38 0x5C040600, // 0008 MOVE R1 R3 - 0x200C050A, // 0009 NE R3 R2 K10 + 0x200C050B, // 0009 NE R3 R2 K11 0x780E0002, // 000A JMPF R3 #000E - 0x000E4602, // 000B ADD R3 K35 R2 - 0x000C0724, // 000C ADD R3 R3 K36 + 0x000E4A02, // 000B ADD R3 K37 R2 + 0x000C0726, // 000C ADD R3 R3 K38 0x5C080600, // 000D MOVE R2 R3 0x600C0018, // 000E GETGBL R3 G24 - 0x58100025, // 000F LDCONST R4 K37 + 0x58100027, // 000F LDCONST R4 K39 0x88140100, // 0010 GETMBR R5 R0 K0 0x5C180200, // 0011 MOVE R6 R1 0x881C0102, // 0012 GETMBR R7 R0 K2 0x5C200400, // 0013 MOVE R8 R2 - 0x88240107, // 0014 GETMBR R9 R0 K7 - 0x88280108, // 0015 GETMBR R10 R0 K8 - 0x882C0109, // 0016 GETMBR R11 R0 K9 - 0x8830010B, // 0017 GETMBR R12 R0 K11 + 0x88240108, // 0014 GETMBR R9 R0 K8 + 0x88280109, // 0015 GETMBR R10 R0 K9 + 0x882C010A, // 0016 GETMBR R11 R0 K10 + 0x8830010C, // 0017 GETMBR R12 R0 K12 0x7C0C1200, // 0018 CALL R3 9 0x80040600, // 0019 RET 1 R3 }) @@ -1944,7 +1949,7 @@ be_local_closure(class_Partition_info_is_ota, /* name */ ( &(const binstruction[14]) { /* code */ 0x88040102, // 0000 GETMBR R1 R0 K2 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x1C080501, // 0002 EQ R2 R2 K1 + 0x1C080528, // 0002 EQ R2 R2 K40 0x780A0008, // 0003 JMPF R2 #000D 0x540A000F, // 0004 LDINT R2 16 0x28080202, // 0005 GE R2 R1 R2 @@ -1980,41 +1985,41 @@ be_local_closure(class_Partition_info_tobytes, /* name */ &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ 0x60040015, // 0000 GETGBL R1 G21 - 0x58080026, // 0001 LDCONST R2 K38 + 0x58080029, // 0001 LDCONST R2 K41 0x7C040200, // 0002 CALL R1 1 - 0x8C080327, // 0003 GETMET R2 R1 K39 + 0x8C08032A, // 0003 GETMET R2 R1 K42 0x5412001F, // 0004 LDINT R4 32 0x7C080400, // 0005 CALL R2 2 - 0x8C080527, // 0006 GETMET R2 R2 K39 - 0x5810000D, // 0007 LDCONST R4 K13 + 0x8C08052A, // 0006 GETMET R2 R2 K42 + 0x5810000E, // 0007 LDCONST R4 K14 0x7C080400, // 0008 CALL R2 2 - 0x8C080328, // 0009 GETMET R2 R1 K40 + 0x8C08032B, // 0009 GETMET R2 R1 K43 0x88100100, // 000A GETMBR R4 R0 K0 - 0x58140029, // 000B LDCONST R5 K41 + 0x5814000F, // 000B LDCONST R5 K15 0x7C080600, // 000C CALL R2 3 - 0x8C080328, // 000D GETMET R2 R1 K40 + 0x8C08032B, // 000D GETMET R2 R1 K43 0x88100102, // 000E GETMBR R4 R0 K2 - 0x58140029, // 000F LDCONST R5 K41 + 0x5814000F, // 000F LDCONST R5 K15 0x7C080600, // 0010 CALL R2 3 - 0x8C080328, // 0011 GETMET R2 R1 K40 - 0x88100107, // 0012 GETMBR R4 R0 K7 + 0x8C08032B, // 0011 GETMET R2 R1 K43 + 0x88100108, // 0012 GETMBR R4 R0 K8 0x54160003, // 0013 LDINT R5 4 0x7C080600, // 0014 CALL R2 3 - 0x8C080328, // 0015 GETMET R2 R1 K40 - 0x88100108, // 0016 GETMBR R4 R0 K8 + 0x8C08032B, // 0015 GETMET R2 R1 K43 + 0x88100109, // 0016 GETMBR R4 R0 K9 0x54160003, // 0017 LDINT R5 4 0x7C080600, // 0018 CALL R2 3 0x60080015, // 0019 GETGBL R2 G21 0x7C080000, // 001A CALL R2 0 - 0x8C08052A, // 001B GETMET R2 R2 K42 - 0x88100109, // 001C GETMBR R4 R0 K9 + 0x8C08052C, // 001B GETMET R2 R2 K44 + 0x8810010A, // 001C GETMBR R4 R0 K10 0x7C080400, // 001D CALL R2 2 - 0x8C0C0527, // 001E GETMET R3 R2 K39 + 0x8C0C052A, // 001E GETMET R3 R2 K42 0x5416000F, // 001F LDINT R5 16 0x7C0C0400, // 0020 CALL R3 2 0x00040202, // 0021 ADD R1 R1 R2 - 0x8C0C0328, // 0022 GETMET R3 R1 K40 - 0x8814010B, // 0023 GETMBR R5 R0 K11 + 0x8C0C032B, // 0022 GETMET R3 R1 K43 + 0x8814010C, // 0023 GETMBR R5 R0 K12 0x541A0003, // 0024 LDINT R6 4 0x7C0C0600, // 0025 CALL R3 3 0x80040200, // 0026 RET 1 R1 @@ -2041,24 +2046,24 @@ be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */ &be_const_str_remove_trailing_zeroes, &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x5804002B, // 0000 LDCONST R1 K43 + 0x5804002D, // 0000 LDCONST R1 K45 0x6008000C, // 0001 GETGBL R2 G12 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 - 0x580C002C, // 0004 LDCONST R3 K44 + 0x580C0028, // 0004 LDCONST R3 K40 0x14100602, // 0005 LT R4 R3 R2 0x78120007, // 0006 JMPF R4 #000F 0x5411FFFE, // 0007 LDINT R4 -1 0x04100803, // 0008 SUB R4 R4 R3 0x94100004, // 0009 GETIDX R4 R0 R4 - 0x2010092C, // 000A NE R4 R4 K44 + 0x20100928, // 000A NE R4 R4 K40 0x78120000, // 000B JMPF R4 #000D 0x70020001, // 000C JMP #000F - 0x000C0729, // 000D ADD R3 R3 K41 + 0x000C072E, // 000D ADD R3 R3 K46 0x7001FFF5, // 000E JMP #0005 - 0x2410072C, // 000F GT R4 R3 K44 + 0x24100728, // 000F GT R4 R3 K40 0x78120005, // 0010 JMPF R4 #0017 - 0x8C100127, // 0011 GETMET R4 R0 K39 + 0x8C10012A, // 0011 GETMET R4 R0 K42 0x6018000C, // 0012 GETGBL R6 G12 0x5C1C0000, // 0013 MOVE R7 R0 0x7C180200, // 0014 CALL R6 1 @@ -2089,7 +2094,7 @@ be_local_closure(class_Partition_info_is_spiffs, /* name */ &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x1C040304, // 0001 EQ R1 R1 K4 + 0x1C04032E, // 0001 EQ R1 R1 K46 0x78060003, // 0002 JMPF R1 #0007 0x88040102, // 0003 GETMBR R1 R0 K2 0x540A0081, // 0004 LDINT R2 130 @@ -2121,27 +2126,27 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ &be_const_str_get_image_size, &be_const_str_solidified, ( &(const binstruction[85]) { /* code */ - 0xA4065A00, // 0000 IMPORT R1 K45 - 0x8C08012E, // 0001 GETMET R2 R0 K46 + 0xA4065E00, // 0000 IMPORT R1 K47 + 0x8C080130, // 0001 GETMET R2 R0 K48 0x7C080200, // 0002 CALL R2 1 0x4C0C0000, // 0003 LDNIL R3 0x1C080403, // 0004 EQ R2 R2 R3 0x780A0004, // 0005 JMPF R2 #000B - 0x8C08012F, // 0006 GETMET R2 R0 K47 + 0x8C080131, // 0006 GETMET R2 R0 K49 0x7C080200, // 0007 CALL R2 1 0x740A0001, // 0008 JMPT R2 #000B 0x5409FFFE, // 0009 LDINT R2 -1 0x80040400, // 000A RET 1 R2 0xA802003A, // 000B EXBLK 0 #0047 - 0x88080107, // 000C GETMBR R2 R0 K7 - 0x880C0108, // 000D GETMBR R3 R0 K8 - 0x8C100330, // 000E GETMET R4 R1 K48 + 0x88080108, // 000C GETMBR R2 R0 K8 + 0x880C0109, // 000D GETMBR R3 R0 K9 + 0x8C100332, // 000E GETMET R4 R1 K50 0x5C180400, // 000F MOVE R6 R2 - 0x581C0029, // 0010 LDCONST R7 K41 + 0x581C000F, // 0010 LDCONST R7 K15 0x7C100600, // 0011 CALL R4 3 - 0x8C10090C, // 0012 GETMET R4 R4 K12 - 0x5818002C, // 0013 LDCONST R6 K44 - 0x581C0029, // 0014 LDCONST R7 K41 + 0x8C10090D, // 0012 GETMET R4 R4 K13 + 0x58180028, // 0013 LDCONST R6 K40 + 0x581C000F, // 0014 LDCONST R7 K15 0x7C100600, // 0015 CALL R4 3 0x541600E8, // 0016 LDINT R5 233 0x20140805, // 0017 NE R5 R4 R5 @@ -2149,29 +2154,29 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ 0x5415FFFE, // 0019 LDINT R5 -1 0xA8040001, // 001A EXBLK 1 1 0x80040A00, // 001B RET 1 R5 - 0x8C140330, // 001C GETMET R5 R1 K48 - 0x001C0529, // 001D ADD R7 R2 K41 - 0x58200029, // 001E LDCONST R8 K41 + 0x8C140332, // 001C GETMET R5 R1 K50 + 0x001C050F, // 001D ADD R7 R2 K15 + 0x5820000F, // 001E LDCONST R8 K15 0x7C140600, // 001F CALL R5 3 - 0x8C140B0C, // 0020 GETMET R5 R5 K12 - 0x581C002C, // 0021 LDCONST R7 K44 - 0x58200029, // 0022 LDCONST R8 K41 + 0x8C140B0D, // 0020 GETMET R5 R5 K13 + 0x581C0028, // 0021 LDCONST R7 K40 + 0x5820000F, // 0022 LDCONST R8 K15 0x7C140600, // 0023 CALL R5 3 0x541A001F, // 0024 LDINT R6 32 0x00180406, // 0025 ADD R6 R2 R6 - 0x581C002C, // 0026 LDCONST R7 K44 + 0x581C0028, // 0026 LDCONST R7 K40 0x14200E05, // 0027 LT R8 R7 R5 0x78220017, // 0028 JMPF R8 #0041 - 0x8C200330, // 0029 GETMET R8 R1 K48 + 0x8C200332, // 0029 GETMET R8 R1 K50 0x542A0007, // 002A LDINT R10 8 0x04280C0A, // 002B SUB R10 R6 R10 0x542E0007, // 002C LDINT R11 8 0x7C200600, // 002D CALL R8 3 - 0x8C24110C, // 002E GETMET R9 R8 K12 - 0x582C002C, // 002F LDCONST R11 K44 + 0x8C24110D, // 002E GETMET R9 R8 K13 + 0x582C0028, // 002F LDCONST R11 K40 0x54320003, // 0030 LDINT R12 4 0x7C240600, // 0031 CALL R9 3 - 0x8C28110C, // 0032 GETMET R10 R8 K12 + 0x8C28110D, // 0032 GETMET R10 R8 K13 0x54320003, // 0033 LDINT R12 4 0x54360003, // 0034 LDINT R13 4 0x7C280600, // 0035 CALL R10 3 @@ -2184,22 +2189,22 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ 0x542DFFFE, // 003C LDINT R11 -1 0xA8040001, // 003D EXBLK 1 1 0x80041600, // 003E RET 1 R11 - 0x001C0F29, // 003F ADD R7 R7 K41 + 0x001C0F0F, // 003F ADD R7 R7 K15 0x7001FFE5, // 0040 JMP #0027 0x04200C02, // 0041 SUB R8 R6 R2 - 0x00201129, // 0042 ADD R8 R8 K41 + 0x0020110F, // 0042 ADD R8 R8 K15 0xA8040001, // 0043 EXBLK 1 1 0x80041000, // 0044 RET 1 R8 0xA8040001, // 0045 EXBLK 1 1 0x7002000C, // 0046 JMP #0054 0xAC080002, // 0047 CATCH R2 0 2 0x70020009, // 0048 JMP #0053 - 0xB8126200, // 0049 GETNGBL R4 K49 - 0x8C100932, // 004A GETMET R4 R4 K50 - 0x001A6602, // 004B ADD R6 K51 R2 - 0x00180D34, // 004C ADD R6 R6 K52 + 0xB8126600, // 0049 GETNGBL R4 K51 + 0x8C100934, // 004A GETMET R4 R4 K52 + 0x001A6A02, // 004B ADD R6 K53 R2 + 0x00180D36, // 004C ADD R6 R6 K54 0x00180C03, // 004D ADD R6 R6 R3 - 0x581C000D, // 004E LDCONST R7 K13 + 0x581C000E, // 004E LDCONST R7 K14 0x7C100600, // 004F CALL R4 3 0x5411FFFE, // 0050 LDINT R4 -1 0x80040800, // 0051 RET 1 R4 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h index 66322afb7..960a23335 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h @@ -1146,8 +1146,8 @@ be_local_class(Rule_Matcher_AND_List, (bstring*) &be_const_str_Rule_Matcher_AND_List ); extern const bclass be_class_Rule_Matcher; -// compact class 'Rule_Matcher' ktab size: 29, total: 34 (saved 40 bytes) -static const bvalue be_ktab_class_Rule_Matcher[29] = { +// compact class 'Rule_Matcher' ktab size: 30, total: 34 (saved 32 bytes) +static const bvalue be_ktab_class_Rule_Matcher[30] = { /* K0 */ be_nested_str(matchers), /* K1 */ be_nested_str(rule), /* K2 */ be_nested_str(trigger), @@ -1177,6 +1177,7 @@ static const bvalue be_ktab_class_Rule_Matcher[29] = { /* K26 */ be_nested_str(Rule_Matcher_Array), /* K27 */ be_nested_str(Rule_Matcher_Operator), /* K28 */ be_nested_str(match), + /* K29 */ be_const_int(1), }; @@ -1447,7 +1448,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */ 0x78120001, // 0015 JMPF R4 #0018 0x4C100000, // 0016 LDNIL R4 0x80040800, // 0017 RET 1 R4 - 0x000C070C, // 0018 ADD R3 R3 K12 + 0x000C071D, // 0018 ADD R3 R3 K29 0x7001FFED, // 0019 JMP #0008 0x80040400, // 001A RET 1 R2 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h index 2583c5604..437dad637 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Tasmota' ktab size: 155, total: 285 (saved 1040 bytes) -static const bvalue be_ktab_class_Tasmota[155] = { +// compact class 'Tasmota' ktab size: 157, total: 285 (saved 1024 bytes) +static const bvalue be_ktab_class_Tasmota[157] = { /* K0 */ be_nested_str(cmd_res), /* K1 */ be_nested_str(tasmota), /* K2 */ be_nested_str(global), @@ -39,127 +39,129 @@ static const bvalue be_ktab_class_Tasmota[155] = { /* K31 */ be_nested_str(_debug_present), /* K32 */ be_nested_str(debug), /* K33 */ be_nested_str(traceback), - /* K34 */ be_nested_str(save_before_restart), - /* K35 */ be_nested_str(persist), - /* K36 */ be_nested_str(save), - /* K37 */ be_nested_str(_ccmd), - /* K38 */ be_nested_str(json), - /* K39 */ be_nested_str(load), - /* K40 */ be_nested_str(find_key_i), - /* K41 */ be_nested_str(resolvecmnd), - /* K42 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), - /* K43 */ be_nested_str(light), - /* K44 */ be_nested_str(set), - /* K45 */ be_nested_str(_crons), - /* K46 */ be_nested_str(ccronexpr), - /* K47 */ be_nested_str(now), - /* K48 */ be_nested_str(size), - /* K49 */ be_nested_str(trig), - /* K50 */ be_nested_str(next), - /* K51 */ be_nested_str(time_reached), - /* K52 */ be_nested_str(f), - /* K53 */ be_nested_str(check_not_method), - /* K54 */ be_nested_str(_timers), - /* K55 */ be_nested_str(push), - /* K56 */ be_nested_str(Trigger), - /* K57 */ be_nested_str(millis), - /* K58 */ be_nested_str(instance), - /* K59 */ be_nested_str(value_error), - /* K60 */ be_nested_str(instance_X20required), - /* K61 */ be_nested_str(id), - /* K62 */ be_nested_str(ctypes_bytes_dyn), - /* K63 */ be_nested_str(_global_addr), - /* K64 */ be_nested_str(_global_def), - /* K65 */ be_nested_str(_settings_ptr), - /* K66 */ be_nested_str(settings), - /* K67 */ be_nested_str(toptr), - /* K68 */ be_nested_str(_settings_def), - /* K69 */ be_nested_str(wd), - /* K70 */ be_nested_str(), - /* K71 */ be_nested_str(contains), - /* K72 */ be_nested_str(add_cmd), - /* K73 */ be_nested_str(UrlFetch), - /* K74 */ be_nested_str(_rules), - /* K75 */ be_nested_str(Rule_Matcher), - /* K76 */ be_nested_str(parse), - /* K77 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), - /* K78 */ be_nested_str(match), - /* K79 */ be_nested_str(trigger), - /* K80 */ be_nested_str(_find_op), - /* K81 */ be_const_int(2147483647), - /* K82 */ be_nested_str(remove), - /* K83 */ be_nested_str(collect), - /* K84 */ be_nested_str(allocated), - /* K85 */ be_nested_str(string), - /* K86 */ be_const_int(0), - /* K87 */ be_nested_str(toupper), - /* K88 */ be_nested_str(_fl), - /* K89 */ be_nested_str(log), - /* K90 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), - /* K91 */ be_const_int(3), - /* K92 */ be_nested_str(try_rule), - /* K93 */ be_const_int(1), - /* K94 */ be_nested_str(endswith), - /* K95 */ be_nested_str(_X2Ebe), - /* K96 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension), - /* K97 */ be_nested_str(_X23), - /* K98 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive), - /* K99 */ be_nested_str(file), - /* K100 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file), - /* K101 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29), - /* K102 */ be_nested_str(c), - /* K103 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29), - /* K104 */ be_nested_str(Tele), - /* K105 */ be_nested_str(i2c_enabled), - /* K106 */ be_nested_str(wire1), - /* K107 */ be_nested_str(enabled), - /* K108 */ be_nested_str(detect), - /* K109 */ be_nested_str(wire2), - /* K110 */ be_nested_str(keys), - /* K111 */ be_nested_str(_X3F), - /* K112 */ be_nested_str(stop_iteration), - /* K113 */ be_nested_str(split), - /* K114 */ be_nested_str(_X2F), - /* K115 */ be_nested_str(index_X2Ehtml), - /* K116 */ be_nested_str(webclient), - /* K117 */ be_nested_str(set_follow_redirects), - /* K118 */ be_nested_str(begin), - /* K119 */ be_nested_str(GET), - /* K120 */ be_nested_str(status_X3A_X20), - /* K121 */ be_nested_str(connection_error), - /* K122 */ be_nested_str(write_file), - /* K123 */ be_nested_str(close), - /* K124 */ be_nested_str(BRY_X3A_X20Fetched_X20), - /* K125 */ be_nested_str(cb), - /* K126 */ be_nested_str(gen_cb), - /* K127 */ be_nested_str(time_dump), - /* K128 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d), - /* K129 */ be_nested_str(year), - /* K130 */ be_nested_str(month), - /* K131 */ be_nested_str(day), - /* K132 */ be_nested_str(hour), - /* K133 */ be_nested_str(min), - /* K134 */ be_nested_str(sec), - /* K135 */ be_nested_str(argument_X20must_X20be_X20a_X20function), - /* K136 */ be_nested_str(fast_loop_enabled), - /* K137 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), - /* K138 */ be_nested_str(scale_uint), - /* K139 */ be_nested_str(path), - /* K140 */ be_nested_str(startswith), - /* K141 */ be_const_int(1), - /* K142 */ be_const_int(2147483647), - /* K143 */ be_nested_str(_X2E), - /* K144 */ be_nested_str(_X2Ebec), - /* K145 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27), - /* K146 */ be_nested_str(exists), - /* K147 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27), - /* K148 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29), - /* K149 */ be_nested_str(http), - /* K150 */ be_nested_str(resp_cmnd_str), - /* K151 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27), - /* K152 */ be_nested_str(urlfetch), - /* K153 */ be_nested_str(resp_cmnd_failed), - /* K154 */ be_nested_str(resp_cmnd_done), + /* K34 */ be_const_int(1), + /* K35 */ be_nested_str(save_before_restart), + /* K36 */ be_nested_str(persist), + /* K37 */ be_nested_str(save), + /* K38 */ be_nested_str(_ccmd), + /* K39 */ be_nested_str(json), + /* K40 */ be_nested_str(load), + /* K41 */ be_nested_str(find_key_i), + /* K42 */ be_nested_str(resolvecmnd), + /* K43 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), + /* K44 */ be_nested_str(light), + /* K45 */ be_nested_str(set), + /* K46 */ be_nested_str(_crons), + /* K47 */ be_nested_str(ccronexpr), + /* K48 */ be_nested_str(now), + /* K49 */ be_nested_str(size), + /* K50 */ be_nested_str(trig), + /* K51 */ be_nested_str(next), + /* K52 */ be_nested_str(time_reached), + /* K53 */ be_nested_str(f), + /* K54 */ be_nested_str(check_not_method), + /* K55 */ be_nested_str(_timers), + /* K56 */ be_nested_str(push), + /* K57 */ be_nested_str(Trigger), + /* K58 */ be_nested_str(millis), + /* K59 */ be_nested_str(instance), + /* K60 */ be_nested_str(value_error), + /* K61 */ be_nested_str(instance_X20required), + /* K62 */ be_const_int(0), + /* K63 */ be_nested_str(id), + /* K64 */ be_nested_str(ctypes_bytes_dyn), + /* K65 */ be_nested_str(_global_addr), + /* K66 */ be_nested_str(_global_def), + /* K67 */ be_nested_str(_settings_ptr), + /* K68 */ be_nested_str(settings), + /* K69 */ be_nested_str(toptr), + /* K70 */ be_nested_str(_settings_def), + /* K71 */ be_nested_str(wd), + /* K72 */ be_nested_str(), + /* K73 */ be_nested_str(contains), + /* K74 */ be_nested_str(add_cmd), + /* K75 */ be_nested_str(UrlFetch), + /* K76 */ be_nested_str(_rules), + /* K77 */ be_nested_str(Rule_Matcher), + /* K78 */ be_nested_str(parse), + /* K79 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), + /* K80 */ be_nested_str(match), + /* K81 */ be_nested_str(trigger), + /* K82 */ be_nested_str(_find_op), + /* K83 */ be_const_int(1), + /* K84 */ be_const_int(2147483647), + /* K85 */ be_nested_str(remove), + /* K86 */ be_nested_str(collect), + /* K87 */ be_nested_str(allocated), + /* K88 */ be_nested_str(string), + /* K89 */ be_nested_str(toupper), + /* K90 */ be_nested_str(_fl), + /* K91 */ be_nested_str(log), + /* K92 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), + /* K93 */ be_const_int(3), + /* K94 */ be_nested_str(try_rule), + /* K95 */ be_nested_str(endswith), + /* K96 */ be_nested_str(_X2Ebe), + /* K97 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension), + /* K98 */ be_nested_str(_X23), + /* K99 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive), + /* K100 */ be_nested_str(file), + /* K101 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file), + /* K102 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29), + /* K103 */ be_nested_str(c), + /* K104 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29), + /* K105 */ be_nested_str(Tele), + /* K106 */ be_const_int(0), + /* K107 */ be_nested_str(i2c_enabled), + /* K108 */ be_nested_str(wire1), + /* K109 */ be_nested_str(enabled), + /* K110 */ be_nested_str(detect), + /* K111 */ be_nested_str(wire2), + /* K112 */ be_nested_str(keys), + /* K113 */ be_nested_str(_X3F), + /* K114 */ be_nested_str(stop_iteration), + /* K115 */ be_nested_str(split), + /* K116 */ be_nested_str(_X2F), + /* K117 */ be_nested_str(index_X2Ehtml), + /* K118 */ be_nested_str(webclient), + /* K119 */ be_nested_str(set_follow_redirects), + /* K120 */ be_nested_str(begin), + /* K121 */ be_nested_str(GET), + /* K122 */ be_nested_str(status_X3A_X20), + /* K123 */ be_nested_str(connection_error), + /* K124 */ be_nested_str(write_file), + /* K125 */ be_nested_str(close), + /* K126 */ be_nested_str(BRY_X3A_X20Fetched_X20), + /* K127 */ be_nested_str(cb), + /* K128 */ be_nested_str(gen_cb), + /* K129 */ be_nested_str(time_dump), + /* K130 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d), + /* K131 */ be_nested_str(year), + /* K132 */ be_nested_str(month), + /* K133 */ be_nested_str(day), + /* K134 */ be_nested_str(hour), + /* K135 */ be_nested_str(min), + /* K136 */ be_nested_str(sec), + /* K137 */ be_nested_str(argument_X20must_X20be_X20a_X20function), + /* K138 */ be_nested_str(fast_loop_enabled), + /* K139 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), + /* K140 */ be_nested_str(scale_uint), + /* K141 */ be_const_int(2), + /* K142 */ be_nested_str(path), + /* K143 */ be_nested_str(startswith), + /* K144 */ be_const_int(2147483647), + /* K145 */ be_nested_str(_X2E), + /* K146 */ be_nested_str(_X2Ebec), + /* K147 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27), + /* K148 */ be_nested_str(exists), + /* K149 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27), + /* K150 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29), + /* K151 */ be_nested_str(http), + /* K152 */ be_nested_str(resp_cmnd_str), + /* K153 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27), + /* K154 */ be_nested_str(urlfetch), + /* K155 */ be_nested_str(resp_cmnd_failed), + /* K156 */ be_nested_str(resp_cmnd_done), }; @@ -407,12 +409,12 @@ be_local_closure(class_Tasmota_event, /* name */ 0x7C3C0200, // 0061 CALL R15 1 0x70020000, // 0062 JMP #0064 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x00241305, // 0064 ADD R9 R9 K5 + 0x00241322, // 0064 ADD R9 R9 K34 0x7001FFCA, // 0065 JMP #0031 - 0x1C240322, // 0066 EQ R9 R1 K34 + 0x1C240323, // 0066 EQ R9 R1 K35 0x78260002, // 0067 JMPF R9 #006B - 0xA4264600, // 0068 IMPORT R9 K35 - 0x8C281324, // 0069 GETMET R10 R9 K36 + 0xA4264800, // 0068 IMPORT R9 K36 + 0x8C281325, // 0069 GETMET R10 R9 K37 0x7C280200, // 006A CALL R10 1 0x80040E00, // 006B RET 1 R7 }) @@ -438,23 +440,23 @@ be_local_closure(class_Tasmota_exec_cmd, /* name */ &be_const_str_exec_cmd, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x88100125, // 0000 GETMBR R4 R0 K37 + 0x88100126, // 0000 GETMBR R4 R0 K38 0x78120016, // 0001 JMPF R4 #0019 - 0xA4124C00, // 0002 IMPORT R4 K38 - 0x8C140927, // 0003 GETMET R5 R4 K39 + 0xA4124E00, // 0002 IMPORT R4 K39 + 0x8C140928, // 0003 GETMET R5 R4 K40 0x5C1C0600, // 0004 MOVE R7 R3 0x7C140400, // 0005 CALL R5 2 - 0x8C180128, // 0006 GETMET R6 R0 K40 - 0x88200125, // 0007 GETMBR R8 R0 K37 + 0x8C180129, // 0006 GETMET R6 R0 K41 + 0x88200126, // 0007 GETMBR R8 R0 K38 0x5C240200, // 0008 MOVE R9 R1 0x7C180600, // 0009 CALL R6 3 0x4C1C0000, // 000A LDNIL R7 0x201C0C07, // 000B NE R7 R6 R7 0x781E000B, // 000C JMPF R7 #0019 - 0x8C1C0129, // 000D GETMET R7 R0 K41 + 0x8C1C012A, // 000D GETMET R7 R0 K42 0x5C240C00, // 000E MOVE R9 R6 0x7C1C0400, // 000F CALL R7 2 - 0x881C0125, // 0010 GETMBR R7 R0 K37 + 0x881C0126, // 0010 GETMBR R7 R0 K38 0x941C0E06, // 0011 GETIDX R7 R7 R6 0x5C200C00, // 0012 MOVE R8 R6 0x5C240400, // 0013 MOVE R9 R2 @@ -489,19 +491,19 @@ be_local_closure(class_Tasmota_set_light, /* name */ &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x600C0001, // 0000 GETGBL R3 G1 - 0x5810002A, // 0001 LDCONST R4 K42 + 0x5810002B, // 0001 LDCONST R4 K43 0x7C0C0200, // 0002 CALL R3 1 - 0xA40E5600, // 0003 IMPORT R3 K43 + 0xA40E5800, // 0003 IMPORT R3 K44 0x4C100000, // 0004 LDNIL R4 0x20100404, // 0005 NE R4 R2 R4 0x78120005, // 0006 JMPF R4 #000D - 0x8C10072C, // 0007 GETMET R4 R3 K44 + 0x8C10072D, // 0007 GETMET R4 R3 K45 0x5C180200, // 0008 MOVE R6 R1 0x5C1C0400, // 0009 MOVE R7 R2 0x7C100600, // 000A CALL R4 3 0x80040800, // 000B RET 1 R4 0x70020003, // 000C JMP #0011 - 0x8C10072C, // 000D GETMET R4 R3 K44 + 0x8C10072D, // 000D GETMET R4 R3 K45 0x5C180200, // 000E MOVE R6 R1 0x7C100400, // 000F CALL R4 2 0x80040800, // 0010 RET 1 R4 @@ -529,38 +531,38 @@ be_local_closure(class_Tasmota_run_cron, /* name */ &be_const_str_run_cron, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0x8804012D, // 0000 GETMBR R1 R0 K45 + 0x8804012E, // 0000 GETMBR R1 R0 K46 0x7806001E, // 0001 JMPF R1 #0021 0x5804001C, // 0002 LDCONST R1 K28 - 0xB80A5C00, // 0003 GETNGBL R2 K46 - 0x8C08052F, // 0004 GETMET R2 R2 K47 + 0xB80A5E00, // 0003 GETNGBL R2 K47 + 0x8C080530, // 0004 GETMET R2 R2 K48 0x7C080200, // 0005 CALL R2 1 - 0x880C012D, // 0006 GETMBR R3 R0 K45 - 0x8C0C0730, // 0007 GETMET R3 R3 K48 + 0x880C012E, // 0006 GETMBR R3 R0 K46 + 0x8C0C0731, // 0007 GETMET R3 R3 K49 0x7C0C0200, // 0008 CALL R3 1 0x140C0203, // 0009 LT R3 R1 R3 0x780E0015, // 000A JMPF R3 #0021 - 0x880C012D, // 000B GETMBR R3 R0 K45 + 0x880C012E, // 000B GETMBR R3 R0 K46 0x940C0601, // 000C GETIDX R3 R3 R1 - 0x88100731, // 000D GETMBR R4 R3 K49 + 0x88100732, // 000D GETMBR R4 R3 K50 0x1C10091C, // 000E EQ R4 R4 K28 0x78120003, // 000F JMPF R4 #0014 - 0x8C100732, // 0010 GETMET R4 R3 K50 + 0x8C100733, // 0010 GETMET R4 R3 K51 0x7C100200, // 0011 CALL R4 1 - 0x900E6204, // 0012 SETMBR R3 K49 R4 + 0x900E6404, // 0012 SETMBR R3 K50 R4 0x7002000A, // 0013 JMP #001F - 0x8C100733, // 0014 GETMET R4 R3 K51 + 0x8C100734, // 0014 GETMET R4 R3 K52 0x7C100200, // 0015 CALL R4 1 0x78120007, // 0016 JMPF R4 #001F - 0x88100734, // 0017 GETMBR R4 R3 K52 - 0x8C140732, // 0018 GETMET R5 R3 K50 + 0x88100735, // 0017 GETMBR R4 R3 K53 + 0x8C140733, // 0018 GETMET R5 R3 K51 0x7C140200, // 0019 CALL R5 1 - 0x900E6205, // 001A SETMBR R3 K49 R5 + 0x900E6405, // 001A SETMBR R3 K50 R5 0x5C180800, // 001B MOVE R6 R4 0x5C1C0400, // 001C MOVE R7 R2 0x5C200A00, // 001D MOVE R8 R5 0x7C180400, // 001E CALL R6 2 - 0x00040305, // 001F ADD R1 R1 K5 + 0x00040322, // 001F ADD R1 R1 K34 0x7001FFE4, // 0020 JMP #0006 0x80000000, // 0021 RET 0 }) @@ -586,20 +588,20 @@ be_local_closure(class_Tasmota_set_timer, /* name */ &be_const_str_set_timer, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x8C100135, // 0000 GETMET R4 R0 K53 + 0x8C100136, // 0000 GETMET R4 R0 K54 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x88100136, // 0003 GETMBR R4 R0 K54 + 0x88100137, // 0003 GETMBR R4 R0 K55 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90026C04, // 0009 SETMBR R0 K54 R4 - 0x88100136, // 000A GETMBR R4 R0 K54 - 0x8C100937, // 000B GETMET R4 R4 K55 - 0xB81A7000, // 000C GETNGBL R6 K56 - 0x8C1C0139, // 000D GETMET R7 R0 K57 + 0x90026E04, // 0009 SETMBR R0 K55 R4 + 0x88100137, // 000A GETMBR R4 R0 K55 + 0x8C100938, // 000B GETMET R4 R4 K56 + 0xB81A7200, // 000C GETNGBL R6 K57 + 0x8C1C013A, // 000D GETMET R7 R0 K58 0x5C240200, // 000E MOVE R9 R1 0x7C1C0400, // 000F CALL R7 2 0x5C200400, // 0010 MOVE R8 R2 @@ -633,9 +635,9 @@ be_local_closure(class_Tasmota_add_driver, /* name */ 0x60080004, // 0000 GETGBL R2 G4 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x2008053A, // 0003 NE R2 R2 K58 + 0x2008053B, // 0003 NE R2 R2 K59 0x780A0000, // 0004 JMPF R2 #0006 - 0xB006773C, // 0005 RAISE 1 K59 K60 + 0xB006793D, // 0005 RAISE 1 K60 K61 0x8808010D, // 0006 GETMBR R2 R0 K13 0x780A000B, // 0007 JMPF R2 #0014 0x8808010D, // 0008 GETMBR R2 R0 K13 @@ -646,7 +648,7 @@ be_local_closure(class_Tasmota_add_driver, /* name */ 0x1C080403, // 000D EQ R2 R2 R3 0x780A0003, // 000E JMPF R2 #0013 0x8808010D, // 000F GETMBR R2 R0 K13 - 0x8C080537, // 0010 GETMET R2 R2 K55 + 0x8C080538, // 0010 GETMET R2 R2 K56 0x5C100200, // 0011 MOVE R4 R1 0x7C080400, // 0012 CALL R2 2 0x70020003, // 0013 JMP #0018 @@ -678,21 +680,21 @@ be_local_closure(class_Tasmota_next_cron, /* name */ &be_const_str_next_cron, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x8808012D, // 0000 GETMBR R2 R0 K45 + 0x8808012E, // 0000 GETMBR R2 R0 K46 0x780A000D, // 0001 JMPF R2 #0010 - 0x580C001C, // 0002 LDCONST R3 K28 - 0x8C100530, // 0003 GETMET R4 R2 K48 + 0x580C003E, // 0002 LDCONST R3 K62 + 0x8C100531, // 0003 GETMET R4 R2 K49 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120008, // 0006 JMPF R4 #0010 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x8810093D, // 0008 GETMBR R4 R4 K61 + 0x8810093F, // 0008 GETMBR R4 R4 K63 0x1C100801, // 0009 EQ R4 R4 R1 0x78120002, // 000A JMPF R4 #000E 0x94100403, // 000B GETIDX R4 R2 R3 - 0x88100931, // 000C GETMBR R4 R4 K49 + 0x88100932, // 000C GETMBR R4 R4 K50 0x80040800, // 000D RET 1 R4 - 0x000C0705, // 000E ADD R3 R3 K5 + 0x000C0722, // 000E ADD R3 R3 K34 0x7001FFF2, // 000F JMP #0003 0x80000000, // 0010 RET 0 }) @@ -746,36 +748,36 @@ be_local_closure(class_Tasmota_init, /* name */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xB8067C00, // 0000 GETNGBL R1 K62 - 0x8808013F, // 0001 GETMBR R2 R0 K63 - 0x880C0140, // 0002 GETMBR R3 R0 K64 + 0xB8068000, // 0000 GETNGBL R1 K64 + 0x88080141, // 0001 GETMBR R2 R0 K65 + 0x880C0142, // 0002 GETMBR R3 R0 K66 0x7C040400, // 0003 CALL R1 2 0x90020401, // 0004 SETMBR R0 K2 R1 0xA4060E00, // 0005 IMPORT R1 K7 0x60080015, // 0006 GETGBL R2 G21 - 0x880C0141, // 0007 GETMBR R3 R0 K65 + 0x880C0143, // 0007 GETMBR R3 R0 K67 0x54120003, // 0008 LDINT R4 4 0x7C080400, // 0009 CALL R2 2 0x8C08051D, // 000A GETMET R2 R2 K29 - 0x5810001C, // 000B LDCONST R4 K28 + 0x5810003E, // 000B LDCONST R4 K62 0x54160003, // 000C LDINT R5 4 0x7C080600, // 000D CALL R2 3 0x780A0006, // 000E JMPF R2 #0016 - 0xB80E7C00, // 000F GETNGBL R3 K62 - 0x8C100343, // 0010 GETMET R4 R1 K67 + 0xB80E8000, // 000F GETNGBL R3 K64 + 0x8C100345, // 0010 GETMET R4 R1 K69 0x5C180400, // 0011 MOVE R6 R2 0x7C100400, // 0012 CALL R4 2 - 0x88140144, // 0013 GETMBR R5 R0 K68 + 0x88140146, // 0013 GETMBR R5 R0 K70 0x7C0C0400, // 0014 CALL R3 2 - 0x90028403, // 0015 SETMBR R0 K66 R3 - 0x90028B46, // 0016 SETMBR R0 K69 K70 + 0x90028803, // 0015 SETMBR R0 K68 R3 + 0x90028F48, // 0016 SETMBR R0 K71 K72 0xB80E0400, // 0017 GETNGBL R3 K2 - 0x8C0C0747, // 0018 GETMET R3 R3 K71 + 0x8C0C0749, // 0018 GETMET R3 R3 K73 0x58140020, // 0019 LDCONST R5 K32 0x7C0C0400, // 001A CALL R3 2 0x90023E03, // 001B SETMBR R0 K31 R3 - 0x8C0C0148, // 001C GETMET R3 R0 K72 - 0x58140049, // 001D LDCONST R5 K73 + 0x8C0C014A, // 001C GETMET R3 R0 K74 + 0x5814004B, // 001D LDCONST R5 K75 0x84180000, // 001E CLOSURE R6 P0 0x7C0C0600, // 001F CALL R3 3 0xA0000000, // 0020 CLOSE R0 @@ -803,26 +805,26 @@ be_local_closure(class_Tasmota_add_rule, /* name */ &be_const_str_add_rule, &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0x8C100135, // 0000 GETMET R4 R0 K53 + 0x8C100136, // 0000 GETMET R4 R0 K54 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x8810014A, // 0003 GETMBR R4 R0 K74 + 0x8810014C, // 0003 GETMBR R4 R0 K76 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90029404, // 0009 SETMBR R0 K74 R4 + 0x90029804, // 0009 SETMBR R0 K76 R4 0x60100004, // 000A GETGBL R4 G4 0x5C140400, // 000B MOVE R5 R2 0x7C100200, // 000C CALL R4 1 0x1C100908, // 000D EQ R4 R4 K8 0x7812000B, // 000E JMPF R4 #001B - 0x8810014A, // 000F GETMBR R4 R0 K74 - 0x8C100937, // 0010 GETMET R4 R4 K55 - 0xB81A7000, // 0011 GETNGBL R6 K56 - 0x881C014B, // 0012 GETMBR R7 R0 K75 - 0x8C1C0F4C, // 0013 GETMET R7 R7 K76 + 0x8810014C, // 000F GETMBR R4 R0 K76 + 0x8C100938, // 0010 GETMET R4 R4 K56 + 0xB81A7200, // 0011 GETNGBL R6 K57 + 0x881C014D, // 0012 GETMBR R7 R0 K77 + 0x8C1C0F4E, // 0013 GETMET R7 R7 K78 0x5C240200, // 0014 MOVE R9 R1 0x7C1C0400, // 0015 CALL R7 2 0x5C200400, // 0016 MOVE R8 R2 @@ -830,7 +832,7 @@ be_local_closure(class_Tasmota_add_rule, /* name */ 0x7C180600, // 0018 CALL R6 3 0x7C100400, // 0019 CALL R4 2 0x70020000, // 001A JMP #001C - 0xB006774D, // 001B RAISE 1 K59 K77 + 0xB006794F, // 001B RAISE 1 K60 K79 0x80000000, // 001C RET 0 }) ) @@ -855,7 +857,7 @@ be_local_closure(class_Tasmota_try_rule, /* name */ &be_const_str_try_rule, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C10054E, // 0000 GETMET R4 R2 K78 + 0x8C100550, // 0000 GETMET R4 R2 K80 0x5C180200, // 0001 MOVE R6 R1 0x7C100400, // 0002 CALL R4 2 0x4C140000, // 0003 LDNIL R5 @@ -866,7 +868,7 @@ be_local_closure(class_Tasmota_try_rule, /* name */ 0x78160004, // 0008 JMPF R5 #000E 0x5C140600, // 0009 MOVE R5 R3 0x5C180800, // 000A MOVE R6 R4 - 0x881C054F, // 000B GETMBR R7 R2 K79 + 0x881C0551, // 000B GETMBR R7 R2 K81 0x5C200200, // 000C MOVE R8 R1 0x7C140600, // 000D CALL R5 3 0x50140200, // 000E LDBOOL R5 1 0 @@ -896,10 +898,10 @@ be_local_closure(class_Tasmota_find_op, /* name */ &be_const_str_find_op, &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x8C080150, // 0000 GETMET R2 R0 K80 + 0x8C080152, // 0000 GETMET R2 R0 K82 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 - 0x280C051C, // 0003 GE R3 R2 K28 + 0x280C053E, // 0003 GE R3 R2 K62 0x780E0011, // 0004 JMPF R3 #0017 0x540E7FFE, // 0005 LDINT R3 32767 0x2C0C0403, // 0006 AND R3 R2 R3 @@ -907,15 +909,15 @@ be_local_closure(class_Tasmota_find_op, /* name */ 0x3C100404, // 0008 SHR R4 R2 R4 0x60140012, // 0009 GETGBL R5 G18 0x7C140000, // 000A CALL R5 0 - 0x04180705, // 000B SUB R6 R3 K5 - 0x401A3806, // 000C CONNECT R6 K28 R6 + 0x04180753, // 000B SUB R6 R3 K83 + 0x401A7C06, // 000C CONNECT R6 K62 R6 0x94180206, // 000D GETIDX R6 R1 R6 0x40180A06, // 000E CONNECT R6 R5 R6 - 0x04180905, // 000F SUB R6 R4 K5 + 0x04180953, // 000F SUB R6 R4 K83 0x40180606, // 0010 CONNECT R6 R3 R6 0x94180206, // 0011 GETIDX R6 R1 R6 0x40180A06, // 0012 CONNECT R6 R5 R6 - 0x40180951, // 0013 CONNECT R6 R4 K81 + 0x40180954, // 0013 CONNECT R6 R4 K84 0x94180206, // 0014 GETIDX R6 R1 R6 0x40180A06, // 0015 CONNECT R6 R5 R6 0x80040A00, // 0016 RET 1 R5 @@ -950,10 +952,10 @@ be_local_closure(class_Tasmota_remove_cmd, /* name */ &be_const_str_remove_cmd, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080125, // 0000 GETMBR R2 R0 K37 + 0x88080126, // 0000 GETMBR R2 R0 K38 0x780A0003, // 0001 JMPF R2 #0006 - 0x88080125, // 0002 GETMBR R2 R0 K37 - 0x8C080552, // 0003 GETMET R2 R2 K82 + 0x88080126, // 0002 GETMBR R2 R0 K38 + 0x8C080555, // 0003 GETMET R2 R2 K85 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x80000000, // 0006 RET 0 @@ -981,9 +983,9 @@ be_local_closure(class_Tasmota_gc, /* name */ &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0xA4063600, // 0000 IMPORT R1 K27 - 0x8C080353, // 0001 GETMET R2 R1 K83 + 0x8C080356, // 0001 GETMET R2 R1 K86 0x7C080200, // 0002 CALL R2 1 - 0x8C080354, // 0003 GETMET R2 R1 K84 + 0x8C080357, // 0003 GETMET R2 R1 K87 0x7C080200, // 0004 CALL R2 1 0x80040400, // 0005 RET 1 R2 }) @@ -1009,9 +1011,9 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ &be_const_str_find_list_i, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA40EAA00, // 0000 IMPORT R3 K85 - 0x58100056, // 0001 LDCONST R4 K86 - 0x8C140757, // 0002 GETMET R5 R3 K87 + 0xA40EB000, // 0000 IMPORT R3 K88 + 0x5810003E, // 0001 LDCONST R4 K62 + 0x8C140759, // 0002 GETMET R5 R3 K89 0x5C1C0400, // 0003 MOVE R7 R2 0x7C140400, // 0004 CALL R5 2 0x6018000C, // 0005 GETGBL R6 G12 @@ -1019,13 +1021,13 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ 0x7C180200, // 0007 CALL R6 1 0x14180806, // 0008 LT R6 R4 R6 0x781A0007, // 0009 JMPF R6 #0012 - 0x8C180757, // 000A GETMET R6 R3 K87 + 0x8C180759, // 000A GETMET R6 R3 K89 0x94200204, // 000B GETIDX R8 R1 R4 0x7C180400, // 000C CALL R6 2 0x1C180C05, // 000D EQ R6 R6 R5 0x781A0000, // 000E JMPF R6 #0010 0x80040800, // 000F RET 1 R4 - 0x00100905, // 0010 ADD R4 R4 K5 + 0x00100922, // 0010 ADD R4 R4 K34 0x7001FFF2, // 0011 JMP #0005 0x4C180000, // 0012 LDNIL R6 0x80040C00, // 0013 RET 1 R6 @@ -1052,18 +1054,18 @@ be_local_closure(class_Tasmota_remove_fast_loop, /* name */ &be_const_str_remove_fast_loop, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88080158, // 0000 GETMBR R2 R0 K88 + 0x8808015A, // 0000 GETMBR R2 R0 K90 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 - 0x88080158, // 0003 GETMBR R2 R0 K88 + 0x8808015A, // 0003 GETMBR R2 R0 K90 0x8C08050E, // 0004 GETMET R2 R2 K14 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 0x4C0C0000, // 0007 LDNIL R3 0x200C0403, // 0008 NE R3 R2 R3 0x780E0003, // 0009 JMPF R3 #000E - 0x880C0158, // 000A GETMBR R3 R0 K88 - 0x8C0C0752, // 000B GETMET R3 R3 K82 + 0x880C015A, // 000A GETMBR R3 R0 K90 + 0x8C0C0755, // 000B GETMET R3 R3 K85 0x5C140400, // 000C MOVE R5 R2 0x7C0C0400, // 000D CALL R3 2 0x80000000, // 000E RET 0 @@ -1091,47 +1093,47 @@ be_local_closure(class_Tasmota_exec_rules, /* name */ &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8810014A, // 0001 GETMBR R4 R0 K74 + 0x8810014C, // 0001 GETMBR R4 R0 K76 0x74120002, // 0002 JMPT R4 #0006 0x4C100000, // 0003 LDNIL R4 0x20100604, // 0004 NE R4 R3 R4 0x78120029, // 0005 JMPF R4 #0030 - 0xA4124C00, // 0006 IMPORT R4 K38 + 0xA4124E00, // 0006 IMPORT R4 K39 0x4C140000, // 0007 LDNIL R5 0x90020005, // 0008 SETMBR R0 K0 R5 0x50140000, // 0009 LDBOOL R5 0 0 - 0x8C180927, // 000A GETMET R6 R4 K39 + 0x8C180928, // 000A GETMET R6 R4 K40 0x5C200200, // 000B MOVE R8 R1 0x7C180400, // 000C CALL R6 2 0x4C1C0000, // 000D LDNIL R7 0x1C1C0C07, // 000E EQ R7 R6 R7 0x781E0004, // 000F JMPF R7 #0015 - 0x8C1C0159, // 0010 GETMET R7 R0 K89 - 0x0026B401, // 0011 ADD R9 K90 R1 - 0x5828005B, // 0012 LDCONST R10 K91 + 0x8C1C015B, // 0010 GETMET R7 R0 K91 + 0x0026B801, // 0011 ADD R9 K92 R1 + 0x5828005D, // 0012 LDCONST R10 K93 0x7C1C0600, // 0013 CALL R7 3 0x5C180200, // 0014 MOVE R6 R1 0x780A0014, // 0015 JMPF R2 #002B - 0x881C014A, // 0016 GETMBR R7 R0 K74 + 0x881C014C, // 0016 GETMBR R7 R0 K76 0x781E0012, // 0017 JMPF R7 #002B 0x581C001C, // 0018 LDCONST R7 K28 0x6020000C, // 0019 GETGBL R8 G12 - 0x8824014A, // 001A GETMBR R9 R0 K74 + 0x8824014C, // 001A GETMBR R9 R0 K76 0x7C200200, // 001B CALL R8 1 0x14200E08, // 001C LT R8 R7 R8 0x7822000C, // 001D JMPF R8 #002B - 0x8820014A, // 001E GETMBR R8 R0 K74 + 0x8820014C, // 001E GETMBR R8 R0 K76 0x94201007, // 001F GETIDX R8 R8 R7 - 0x8C24015C, // 0020 GETMET R9 R0 K92 + 0x8C24015E, // 0020 GETMET R9 R0 K94 0x5C2C0C00, // 0021 MOVE R11 R6 - 0x88301131, // 0022 GETMBR R12 R8 K49 - 0x88341134, // 0023 GETMBR R13 R8 K52 + 0x88301132, // 0022 GETMBR R12 R8 K50 + 0x88341135, // 0023 GETMBR R13 R8 K53 0x7C240800, // 0024 CALL R9 4 0x74260001, // 0025 JMPT R9 #0028 0x74160000, // 0026 JMPT R5 #0028 0x50140001, // 0027 LDBOOL R5 0 1 0x50140200, // 0028 LDBOOL R5 1 0 - 0x001C0F5D, // 0029 ADD R7 R7 K93 + 0x001C0F22, // 0029 ADD R7 R7 K34 0x7001FFED, // 002A JMP #0019 0x4C1C0000, // 002B LDNIL R7 0x201C0607, // 002C NE R7 R3 R7 @@ -1163,29 +1165,29 @@ be_local_closure(class_Tasmota_run_deferred, /* name */ &be_const_str_run_deferred, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x88040136, // 0000 GETMBR R1 R0 K54 + 0x88040137, // 0000 GETMBR R1 R0 K55 0x78060015, // 0001 JMPF R1 #0018 0x5804001C, // 0002 LDCONST R1 K28 - 0x88080136, // 0003 GETMBR R2 R0 K54 - 0x8C080530, // 0004 GETMET R2 R2 K48 + 0x88080137, // 0003 GETMBR R2 R0 K55 + 0x8C080531, // 0004 GETMET R2 R2 K49 0x7C080200, // 0005 CALL R2 1 0x14080202, // 0006 LT R2 R1 R2 0x780A000F, // 0007 JMPF R2 #0018 - 0x88080136, // 0008 GETMBR R2 R0 K54 + 0x88080137, // 0008 GETMBR R2 R0 K55 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C0C0133, // 000A GETMET R3 R0 K51 - 0x88140531, // 000B GETMBR R5 R2 K49 + 0x8C0C0134, // 000A GETMET R3 R0 K52 + 0x88140532, // 000B GETMBR R5 R2 K50 0x7C0C0400, // 000C CALL R3 2 0x780E0007, // 000D JMPF R3 #0016 - 0x880C0534, // 000E GETMBR R3 R2 K52 - 0x88100136, // 000F GETMBR R4 R0 K54 - 0x8C100952, // 0010 GETMET R4 R4 K82 + 0x880C0535, // 000E GETMBR R3 R2 K53 + 0x88100137, // 000F GETMBR R4 R0 K55 + 0x8C100955, // 0010 GETMET R4 R4 K85 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x5C100600, // 0013 MOVE R4 R3 0x7C100000, // 0014 CALL R4 0 0x70020000, // 0015 JMP #0017 - 0x0004035D, // 0016 ADD R1 R1 K93 + 0x00040322, // 0016 ADD R1 R1 K34 0x7001FFEA, // 0017 JMP #0003 0x80000000, // 0018 RET 0 }) @@ -1211,15 +1213,15 @@ be_local_closure(class_Tasmota_compile, /* name */ &be_const_str_compile, &be_const_str_solidified, ( &(const binstruction[84]) { /* code */ - 0xA40AAA00, // 0000 IMPORT R2 K85 - 0x8C0C055E, // 0001 GETMET R3 R2 K94 + 0xA40AB000, // 0000 IMPORT R2 K88 + 0x8C0C055F, // 0001 GETMET R3 R2 K95 0x5C140200, // 0002 MOVE R5 R1 - 0x5818005F, // 0003 LDCONST R6 K95 + 0x58180060, // 0003 LDCONST R6 K96 0x7C0C0600, // 0004 CALL R3 3 0x740E0007, // 0005 JMPT R3 #000E 0x600C0001, // 0006 GETGBL R3 G1 0x60100018, // 0007 GETGBL R4 G24 - 0x58140060, // 0008 LDCONST R5 K96 + 0x58140061, // 0008 LDCONST R5 K97 0x5C180200, // 0009 MOVE R6 R1 0x7C100400, // 000A CALL R4 2 0x7C0C0200, // 000B CALL R3 1 @@ -1227,13 +1229,13 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x80040600, // 000D RET 1 R3 0x8C0C050E, // 000E GETMET R3 R2 K14 0x5C140200, // 000F MOVE R5 R1 - 0x58180061, // 0010 LDCONST R6 K97 + 0x58180062, // 0010 LDCONST R6 K98 0x7C0C0600, // 0011 CALL R3 3 0x240C071C, // 0012 GT R3 R3 K28 0x780E0006, // 0013 JMPF R3 #001B 0x600C0001, // 0014 GETGBL R3 G1 0x60100018, // 0015 GETGBL R4 G24 - 0x58140062, // 0016 LDCONST R5 K98 + 0x58140063, // 0016 LDCONST R5 K99 0x7C100200, // 0017 CALL R4 1 0x7C0C0200, // 0018 CALL R3 1 0x500C0000, // 0019 LDBOOL R3 0 0 @@ -1242,7 +1244,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0xA8020011, // 001C EXBLK 0 #002F 0x6010000D, // 001D GETGBL R4 G13 0x5C140200, // 001E MOVE R5 R1 - 0x58180063, // 001F LDCONST R6 K99 + 0x58180064, // 001F LDCONST R6 K100 0x7C100400, // 0020 CALL R4 2 0x5C0C0800, // 0021 MOVE R3 R4 0x4C100000, // 0022 LDNIL R4 @@ -1250,7 +1252,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x78120007, // 0024 JMPF R4 #002D 0x60100001, // 0025 GETGBL R4 G1 0x60140018, // 0026 GETGBL R5 G24 - 0x58180064, // 0027 LDCONST R6 K100 + 0x58180065, // 0027 LDCONST R6 K101 0x7C140200, // 0028 CALL R5 1 0x7C100200, // 0029 CALL R4 1 0x50100000, // 002A LDBOOL R4 0 0 @@ -1262,7 +1264,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x7002000A, // 0030 JMP #003C 0x60180001, // 0031 GETGBL R6 G1 0x601C0018, // 0032 GETGBL R7 G24 - 0x58200065, // 0033 LDCONST R8 K101 + 0x58200066, // 0033 LDCONST R8 K102 0x5C240200, // 0034 MOVE R9 R1 0x5C280800, // 0035 MOVE R10 R4 0x5C2C0A00, // 0036 MOVE R11 R5 @@ -1272,9 +1274,9 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x80040C00, // 003A RET 1 R6 0x70020000, // 003B JMP #003D 0xB0080000, // 003C RAISE 2 R0 R0 - 0x00100366, // 003D ADD R4 R1 K102 + 0x00100367, // 003D ADD R4 R1 K103 0xA8020005, // 003E EXBLK 0 #0045 - 0x8C140124, // 003F GETMET R5 R0 K36 + 0x8C140125, // 003F GETMET R5 R0 K37 0x5C1C0800, // 0040 MOVE R7 R4 0x5C200600, // 0041 MOVE R8 R3 0x7C140600, // 0042 CALL R5 3 @@ -1284,7 +1286,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x70020009, // 0046 JMP #0051 0x60180001, // 0047 GETGBL R6 G1 0x601C0018, // 0048 GETGBL R7 G24 - 0x58200067, // 0049 LDCONST R8 K103 + 0x58200068, // 0049 LDCONST R8 K104 0x5C240800, // 004A MOVE R9 R4 0x5C280A00, // 004B MOVE R10 R5 0x7C1C0600, // 004C CALL R7 3 @@ -1318,22 +1320,22 @@ be_local_closure(class_Tasmota_remove_timer, /* name */ &be_const_str_remove_timer, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x88080136, // 0000 GETMBR R2 R0 K54 + 0x88080137, // 0000 GETMBR R2 R0 K55 0x780A000E, // 0001 JMPF R2 #0011 - 0x580C001C, // 0002 LDCONST R3 K28 - 0x8C100530, // 0003 GETMET R4 R2 K48 + 0x580C003E, // 0002 LDCONST R3 K62 + 0x8C100531, // 0003 GETMET R4 R2 K49 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120009, // 0006 JMPF R4 #0011 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x8810093D, // 0008 GETMBR R4 R4 K61 + 0x8810093F, // 0008 GETMBR R4 R4 K63 0x1C100801, // 0009 EQ R4 R4 R1 0x78120003, // 000A JMPF R4 #000F - 0x8C100552, // 000B GETMET R4 R2 K82 + 0x8C100555, // 000B GETMET R4 R2 K85 0x5C180600, // 000C MOVE R6 R3 0x7C100400, // 000D CALL R4 2 0x70020000, // 000E JMP #0010 - 0x000C0705, // 000F ADD R3 R3 K5 + 0x000C0722, // 000F ADD R3 R3 K34 0x7001FFF1, // 0010 JMP #0003 0x80000000, // 0011 RET 0 }) @@ -1359,27 +1361,27 @@ be_local_closure(class_Tasmota_remove_rule, /* name */ &be_const_str_remove_rule, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x880C014A, // 0000 GETMBR R3 R0 K74 + 0x880C014C, // 0000 GETMBR R3 R0 K76 0x780E0017, // 0001 JMPF R3 #001A - 0x580C001C, // 0002 LDCONST R3 K28 + 0x580C003E, // 0002 LDCONST R3 K62 0x6010000C, // 0003 GETGBL R4 G12 - 0x8814014A, // 0004 GETMBR R5 R0 K74 + 0x8814014C, // 0004 GETMBR R5 R0 K76 0x7C100200, // 0005 CALL R4 1 0x14100604, // 0006 LT R4 R3 R4 0x78120011, // 0007 JMPF R4 #001A - 0x8810014A, // 0008 GETMBR R4 R0 K74 + 0x8810014C, // 0008 GETMBR R4 R0 K76 0x94100803, // 0009 GETIDX R4 R4 R3 - 0x88100931, // 000A GETMBR R4 R4 K49 + 0x88100932, // 000A GETMBR R4 R4 K50 0x88100919, // 000B GETMBR R4 R4 K25 0x1C100801, // 000C EQ R4 R4 R1 0x78120009, // 000D JMPF R4 #0018 - 0x8810014A, // 000E GETMBR R4 R0 K74 + 0x8810014C, // 000E GETMBR R4 R0 K76 0x94100803, // 000F GETIDX R4 R4 R3 - 0x8810093D, // 0010 GETMBR R4 R4 K61 + 0x8810093F, // 0010 GETMBR R4 R4 K63 0x1C100802, // 0011 EQ R4 R4 R2 0x78120004, // 0012 JMPF R4 #0018 - 0x8810014A, // 0013 GETMBR R4 R0 K74 - 0x8C100952, // 0014 GETMET R4 R4 K82 + 0x8810014C, // 0013 GETMBR R4 R0 K76 + 0x8C100955, // 0014 GETMET R4 R4 K85 0x5C180600, // 0015 MOVE R6 R3 0x7C100400, // 0016 CALL R4 2 0x70020000, // 0017 JMP #0019 @@ -1409,43 +1411,43 @@ be_local_closure(class_Tasmota_exec_tele, /* name */ &be_const_str_exec_tele, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x8808014A, // 0000 GETMBR R2 R0 K74 + 0x8808014C, // 0000 GETMBR R2 R0 K76 0x780A0024, // 0001 JMPF R2 #0027 - 0xA40A4C00, // 0002 IMPORT R2 K38 - 0x8C0C0527, // 0003 GETMET R3 R2 K39 + 0xA40A4E00, // 0002 IMPORT R2 K39 + 0x8C0C0528, // 0003 GETMET R3 R2 K40 0x5C140200, // 0004 MOVE R5 R1 0x7C0C0400, // 0005 CALL R3 2 0x50100000, // 0006 LDBOOL R4 0 0 0x4C140000, // 0007 LDNIL R5 0x1C140605, // 0008 EQ R5 R3 R5 0x78160004, // 0009 JMPF R5 #000F - 0x8C140159, // 000A GETMET R5 R0 K89 - 0x001EB401, // 000B ADD R7 K90 R1 - 0x5820005B, // 000C LDCONST R8 K91 + 0x8C14015B, // 000A GETMET R5 R0 K91 + 0x001EB801, // 000B ADD R7 K92 R1 + 0x5820005D, // 000C LDCONST R8 K93 0x7C140600, // 000D CALL R5 3 0x5C0C0200, // 000E MOVE R3 R1 0x60140013, // 000F GETGBL R5 G19 0x7C140000, // 0010 CALL R5 0 - 0x9816D003, // 0011 SETIDX R5 K104 R3 + 0x9816D203, // 0011 SETIDX R5 K105 R3 0x5C0C0A00, // 0012 MOVE R3 R5 - 0x5814001C, // 0013 LDCONST R5 K28 + 0x5814006A, // 0013 LDCONST R5 K106 0x6018000C, // 0014 GETGBL R6 G12 - 0x881C014A, // 0015 GETMBR R7 R0 K74 + 0x881C014C, // 0015 GETMBR R7 R0 K76 0x7C180200, // 0016 CALL R6 1 0x14180A06, // 0017 LT R6 R5 R6 0x781A000C, // 0018 JMPF R6 #0026 - 0x8818014A, // 0019 GETMBR R6 R0 K74 + 0x8818014C, // 0019 GETMBR R6 R0 K76 0x94180C05, // 001A GETIDX R6 R6 R5 - 0x8C1C015C, // 001B GETMET R7 R0 K92 + 0x8C1C015E, // 001B GETMET R7 R0 K94 0x5C240600, // 001C MOVE R9 R3 - 0x88280D31, // 001D GETMBR R10 R6 K49 - 0x882C0D34, // 001E GETMBR R11 R6 K52 + 0x88280D32, // 001D GETMBR R10 R6 K50 + 0x882C0D35, // 001E GETMBR R11 R6 K53 0x7C1C0800, // 001F CALL R7 4 0x741E0001, // 0020 JMPT R7 #0023 0x74120000, // 0021 JMPT R4 #0023 0x50100001, // 0022 LDBOOL R4 0 1 0x50100200, // 0023 LDBOOL R4 1 0 - 0x00140B5D, // 0024 ADD R5 R5 K93 + 0x00140B22, // 0024 ADD R5 R5 K34 0x7001FFED, // 0025 JMP #0014 0x80040800, // 0026 RET 1 R4 0x50080000, // 0027 LDBOOL R2 0 0 @@ -1473,25 +1475,25 @@ be_local_closure(class_Tasmota_add_cmd, /* name */ &be_const_str_add_cmd, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x8C0C0135, // 0000 GETMET R3 R0 K53 + 0x8C0C0136, // 0000 GETMET R3 R0 K54 0x5C140400, // 0001 MOVE R5 R2 0x7C0C0400, // 0002 CALL R3 2 - 0x880C0125, // 0003 GETMBR R3 R0 K37 + 0x880C0126, // 0003 GETMBR R3 R0 K38 0x4C100000, // 0004 LDNIL R4 0x1C0C0604, // 0005 EQ R3 R3 R4 0x780E0002, // 0006 JMPF R3 #000A 0x600C0013, // 0007 GETGBL R3 G19 0x7C0C0000, // 0008 CALL R3 0 - 0x90024A03, // 0009 SETMBR R0 K37 R3 + 0x90024C03, // 0009 SETMBR R0 K38 R3 0x600C0004, // 000A GETGBL R3 G4 0x5C100400, // 000B MOVE R4 R2 0x7C0C0200, // 000C CALL R3 1 0x1C0C0708, // 000D EQ R3 R3 K8 0x780E0002, // 000E JMPF R3 #0012 - 0x880C0125, // 000F GETMBR R3 R0 K37 + 0x880C0126, // 000F GETMBR R3 R0 K38 0x980C0202, // 0010 SETIDX R3 R1 R2 0x70020000, // 0011 JMP #0013 - 0xB006774D, // 0012 RAISE 1 K59 K77 + 0xB006794F, // 0012 RAISE 1 K60 K79 0x80000000, // 0013 RET 0 }) ) @@ -1519,33 +1521,33 @@ be_local_closure(class_Tasmota_wire_scan, /* name */ 0x4C0C0000, // 0000 LDNIL R3 0x200C0403, // 0001 NE R3 R2 R3 0x780E0005, // 0002 JMPF R3 #0009 - 0x8C0C0169, // 0003 GETMET R3 R0 K105 + 0x8C0C016B, // 0003 GETMET R3 R0 K107 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x740E0001, // 0006 JMPT R3 #0009 0x4C0C0000, // 0007 LDNIL R3 0x80040600, // 0008 RET 1 R3 - 0x880C016A, // 0009 GETMBR R3 R0 K106 - 0x8C0C076B, // 000A GETMET R3 R3 K107 + 0x880C016C, // 0009 GETMBR R3 R0 K108 + 0x8C0C076D, // 000A GETMET R3 R3 K109 0x7C0C0200, // 000B CALL R3 1 0x780E0006, // 000C JMPF R3 #0014 - 0x880C016A, // 000D GETMBR R3 R0 K106 - 0x8C0C076C, // 000E GETMET R3 R3 K108 + 0x880C016C, // 000D GETMBR R3 R0 K108 + 0x8C0C076E, // 000E GETMET R3 R3 K110 0x5C140200, // 000F MOVE R5 R1 0x7C0C0400, // 0010 CALL R3 2 0x780E0001, // 0011 JMPF R3 #0014 - 0x880C016A, // 0012 GETMBR R3 R0 K106 + 0x880C016C, // 0012 GETMBR R3 R0 K108 0x80040600, // 0013 RET 1 R3 - 0x880C016D, // 0014 GETMBR R3 R0 K109 - 0x8C0C076B, // 0015 GETMET R3 R3 K107 + 0x880C016F, // 0014 GETMBR R3 R0 K111 + 0x8C0C076D, // 0015 GETMET R3 R3 K109 0x7C0C0200, // 0016 CALL R3 1 0x780E0006, // 0017 JMPF R3 #001F - 0x880C016D, // 0018 GETMBR R3 R0 K109 - 0x8C0C076C, // 0019 GETMET R3 R3 K108 + 0x880C016F, // 0018 GETMBR R3 R0 K111 + 0x8C0C076E, // 0019 GETMET R3 R3 K110 0x5C140200, // 001A MOVE R5 R1 0x7C0C0400, // 001B CALL R3 2 0x780E0001, // 001C JMPF R3 #001F - 0x880C016D, // 001D GETMBR R3 R0 K109 + 0x880C016F, // 001D GETMBR R3 R0 K111 0x80040600, // 001E RET 1 R3 0x4C0C0000, // 001F LDNIL R3 0x80040600, // 0020 RET 1 R3 @@ -1572,8 +1574,8 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ &be_const_str_find_key_i, &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ - 0xA40EAA00, // 0000 IMPORT R3 K85 - 0x8C100757, // 0001 GETMET R4 R3 K87 + 0xA40EB000, // 0000 IMPORT R3 K88 + 0x8C100759, // 0001 GETMET R4 R3 K89 0x5C180400, // 0002 MOVE R6 R2 0x7C100400, // 0003 CALL R4 2 0x6014000F, // 0004 GETGBL R5 G15 @@ -1582,23 +1584,23 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ 0x7C140400, // 0007 CALL R5 2 0x78160013, // 0008 JMPF R5 #001D 0x60140010, // 0009 GETGBL R5 G16 - 0x8C18036E, // 000A GETMET R6 R1 K110 + 0x8C180370, // 000A GETMET R6 R1 K112 0x7C180200, // 000B CALL R6 1 0x7C140200, // 000C CALL R5 1 0xA802000B, // 000D EXBLK 0 #001A 0x5C180A00, // 000E MOVE R6 R5 0x7C180000, // 000F CALL R6 0 - 0x8C1C0757, // 0010 GETMET R7 R3 K87 + 0x8C1C0759, // 0010 GETMET R7 R3 K89 0x5C240C00, // 0011 MOVE R9 R6 0x7C1C0400, // 0012 CALL R7 2 0x1C1C0E04, // 0013 EQ R7 R7 R4 0x741E0001, // 0014 JMPT R7 #0017 - 0x1C1C056F, // 0015 EQ R7 R2 K111 + 0x1C1C0571, // 0015 EQ R7 R2 K113 0x781E0001, // 0016 JMPF R7 #0019 0xA8040001, // 0017 EXBLK 1 1 0x80040C00, // 0018 RET 1 R6 0x7001FFF3, // 0019 JMP #000E - 0x58140070, // 001A LDCONST R5 K112 + 0x58140072, // 001A LDCONST R5 K114 0xAC140200, // 001B CATCH R5 1 0 0xB0080000, // 001C RAISE 2 R0 R0 0x80000000, // 001D RET 0 @@ -1628,10 +1630,10 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0x4C0C0000, // 0000 LDNIL R3 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E000D, // 0002 JMPF R3 #0011 - 0xA40EAA00, // 0003 IMPORT R3 K85 - 0x8C100771, // 0004 GETMET R4 R3 K113 + 0xA40EB000, // 0003 IMPORT R3 K88 + 0x8C100773, // 0004 GETMET R4 R3 K115 0x5C180200, // 0005 MOVE R6 R1 - 0x581C0072, // 0006 LDCONST R7 K114 + 0x581C0074, // 0006 LDCONST R7 K116 0x7C100600, // 0007 CALL R4 3 0x8C10090F, // 0008 GETMET R4 R4 K15 0x7C100200, // 0009 CALL R4 1 @@ -1639,18 +1641,18 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0x6010000C, // 000B GETGBL R4 G12 0x5C140400, // 000C MOVE R5 R2 0x7C100200, // 000D CALL R4 1 - 0x1C10091C, // 000E EQ R4 R4 K28 + 0x1C10093E, // 000E EQ R4 R4 K62 0x78120000, // 000F JMPF R4 #0011 - 0x58080073, // 0010 LDCONST R2 K115 - 0xB80EE800, // 0011 GETNGBL R3 K116 + 0x58080075, // 0010 LDCONST R2 K117 + 0xB80EEC00, // 0011 GETNGBL R3 K118 0x7C0C0000, // 0012 CALL R3 0 - 0x8C100775, // 0013 GETMET R4 R3 K117 + 0x8C100777, // 0013 GETMET R4 R3 K119 0x50180200, // 0014 LDBOOL R6 1 0 0x7C100400, // 0015 CALL R4 2 - 0x8C100776, // 0016 GETMET R4 R3 K118 + 0x8C100778, // 0016 GETMET R4 R3 K120 0x5C180200, // 0017 MOVE R6 R1 0x7C100400, // 0018 CALL R4 2 - 0x8C100777, // 0019 GETMET R4 R3 K119 + 0x8C100779, // 0019 GETMET R4 R3 K121 0x7C100200, // 001A CALL R4 1 0x541600C7, // 001B LDINT R5 200 0x20140805, // 001C NE R5 R4 R5 @@ -1658,19 +1660,19 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0x60140008, // 001E GETGBL R5 G8 0x5C180800, // 001F MOVE R6 R4 0x7C140200, // 0020 CALL R5 1 - 0x0016F005, // 0021 ADD R5 K120 R5 - 0xB006F205, // 0022 RAISE 1 K121 R5 - 0x8C14077A, // 0023 GETMET R5 R3 K122 + 0x0016F405, // 0021 ADD R5 K122 R5 + 0xB006F605, // 0022 RAISE 1 K123 R5 + 0x8C14077C, // 0023 GETMET R5 R3 K124 0x5C1C0400, // 0024 MOVE R7 R2 0x7C140400, // 0025 CALL R5 2 - 0x8C18077B, // 0026 GETMET R6 R3 K123 + 0x8C18077D, // 0026 GETMET R6 R3 K125 0x7C180200, // 0027 CALL R6 1 - 0x8C180159, // 0028 GETMET R6 R0 K89 + 0x8C18015B, // 0028 GETMET R6 R0 K91 0x60200008, // 0029 GETGBL R8 G8 0x5C240A00, // 002A MOVE R9 R5 0x7C200200, // 002B CALL R8 1 - 0x0022F808, // 002C ADD R8 K124 R8 - 0x5824005B, // 002D LDCONST R9 K91 + 0x0022FC08, // 002C ADD R8 K126 R8 + 0x5824005D, // 002D LDCONST R9 K93 0x7C180600, // 002E CALL R6 3 0x80040800, // 002F RET 1 R4 }) @@ -1696,11 +1698,11 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ &be_const_str_fast_loop, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88040158, // 0000 GETMBR R1 R0 K88 + 0x8804015A, // 0000 GETMBR R1 R0 K90 0x5C080200, // 0001 MOVE R2 R1 0x740A0000, // 0002 JMPT R2 #0004 0x80000400, // 0003 RET 0 - 0x58080056, // 0004 LDCONST R2 K86 + 0x5808003E, // 0004 LDCONST R2 K62 0x600C000C, // 0005 GETGBL R3 G12 0x5C100200, // 0006 MOVE R4 R1 0x7C0C0200, // 0007 CALL R3 1 @@ -1708,7 +1710,7 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ 0x780E0003, // 0009 JMPF R3 #000E 0x940C0202, // 000A GETIDX R3 R1 R2 0x7C0C0000, // 000B CALL R3 0 - 0x0008055D, // 000C ADD R2 R2 K93 + 0x00080522, // 000C ADD R2 R2 K34 0x7001FFF6, // 000D JMP #0005 0x80000000, // 000E RET 0 }) @@ -1734,8 +1736,8 @@ be_local_closure(class_Tasmota_gen_cb, /* name */ &be_const_str_gen_cb, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xA40AFA00, // 0000 IMPORT R2 K125 - 0x8C0C057E, // 0001 GETMET R3 R2 K126 + 0xA40AFE00, // 0000 IMPORT R2 K127 + 0x8C0C0580, // 0001 GETMET R3 R2 K128 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x80040600, // 0004 RET 1 R3 @@ -1762,17 +1764,17 @@ be_local_closure(class_Tasmota_time_str, /* name */ &be_const_str_time_str, &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x8C08017F, // 0000 GETMET R2 R0 K127 + 0x8C080181, // 0000 GETMET R2 R0 K129 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x600C0018, // 0003 GETGBL R3 G24 - 0x58100080, // 0004 LDCONST R4 K128 - 0x94140581, // 0005 GETIDX R5 R2 K129 - 0x94180582, // 0006 GETIDX R6 R2 K130 - 0x941C0583, // 0007 GETIDX R7 R2 K131 - 0x94200584, // 0008 GETIDX R8 R2 K132 - 0x94240585, // 0009 GETIDX R9 R2 K133 - 0x94280586, // 000A GETIDX R10 R2 K134 + 0x58100082, // 0004 LDCONST R4 K130 + 0x94140583, // 0005 GETIDX R5 R2 K131 + 0x94180584, // 0006 GETIDX R6 R2 K132 + 0x941C0585, // 0007 GETIDX R7 R2 K133 + 0x94200586, // 0008 GETIDX R8 R2 K134 + 0x94240587, // 0009 GETIDX R9 R2 K135 + 0x94280588, // 000A GETIDX R10 R2 K136 0x7C0C0E00, // 000B CALL R3 7 0x80040600, // 000C RET 1 R3 }) @@ -1798,26 +1800,26 @@ be_local_closure(class_Tasmota_add_fast_loop, /* name */ &be_const_str_add_fast_loop, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C080135, // 0000 GETMET R2 R0 K53 + 0x8C080136, // 0000 GETMET R2 R0 K54 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 - 0x88080158, // 0003 GETMBR R2 R0 K88 + 0x8808015A, // 0003 GETMBR R2 R0 K90 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0002, // 0006 JMPF R2 #000A 0x60080012, // 0007 GETGBL R2 G18 0x7C080000, // 0008 CALL R2 0 - 0x9002B002, // 0009 SETMBR R0 K88 R2 + 0x9002B402, // 0009 SETMBR R0 K90 R2 0x60080004, // 000A GETGBL R2 G4 0x5C0C0200, // 000B MOVE R3 R1 0x7C080200, // 000C CALL R2 1 0x20080508, // 000D NE R2 R2 K8 0x780A0000, // 000E JMPF R2 #0010 - 0xB0067787, // 000F RAISE 1 K59 K135 + 0xB0067989, // 000F RAISE 1 K60 K137 0x88080102, // 0010 GETMBR R2 R0 K2 - 0x900B1105, // 0011 SETMBR R2 K136 K5 - 0x88080158, // 0012 GETMBR R2 R0 K88 - 0x8C080537, // 0013 GETMET R2 R2 K55 + 0x900B1522, // 0011 SETMBR R2 K138 K34 + 0x8808015A, // 0012 GETMBR R2 R0 K90 + 0x8C080538, // 0013 GETMET R2 R2 K56 0x5C100200, // 0014 MOVE R4 R1 0x7C080400, // 0015 CALL R2 2 0x80000000, // 0016 RET 0 @@ -1845,9 +1847,9 @@ be_local_closure(class_Tasmota_get_light, /* name */ &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60080001, // 0000 GETGBL R2 G1 - 0x580C0089, // 0001 LDCONST R3 K137 + 0x580C008B, // 0001 LDCONST R3 K139 0x7C080200, // 0002 CALL R2 1 - 0xA40A5600, // 0003 IMPORT R2 K43 + 0xA40A5800, // 0003 IMPORT R2 K44 0x4C0C0000, // 0004 LDNIL R3 0x200C0203, // 0005 NE R3 R1 R3 0x780E0004, // 0006 JMPF R3 #000C @@ -1883,26 +1885,26 @@ be_local_closure(class_Tasmota_add_cron, /* name */ &be_const_str_add_cron, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x8C100135, // 0000 GETMET R4 R0 K53 + 0x8C100136, // 0000 GETMET R4 R0 K54 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x8810012D, // 0003 GETMBR R4 R0 K45 + 0x8810012E, // 0003 GETMBR R4 R0 K46 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90025A04, // 0009 SETMBR R0 K45 R4 - 0xB8125C00, // 000A GETNGBL R4 K46 + 0x90025C04, // 0009 SETMBR R0 K46 R4 + 0xB8125E00, // 000A GETNGBL R4 K47 0x60140008, // 000B GETGBL R5 G8 0x5C180200, // 000C MOVE R6 R1 0x7C140200, // 000D CALL R5 1 0x7C100200, // 000E CALL R4 1 - 0x8C140932, // 000F GETMET R5 R4 K50 + 0x8C140933, // 000F GETMET R5 R4 K51 0x7C140200, // 0010 CALL R5 1 - 0x8818012D, // 0011 GETMBR R6 R0 K45 - 0x8C180D37, // 0012 GETMET R6 R6 K55 - 0xB8227000, // 0013 GETNGBL R8 K56 + 0x8818012E, // 0011 GETMBR R6 R0 K46 + 0x8C180D38, // 0012 GETMET R6 R6 K56 + 0xB8227200, // 0013 GETNGBL R8 K57 0x5C240A00, // 0014 MOVE R9 R5 0x5C280400, // 0015 MOVE R10 R2 0x5C2C0600, // 0016 MOVE R11 R3 @@ -1951,7 +1953,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x542200FE, // 000F LDINT R8 255 0x04201002, // 0010 SUB R8 R8 R2 0xB8260200, // 0011 GETNGBL R9 K1 - 0x8C24138A, // 0012 GETMET R9 R9 K138 + 0x8C24138C, // 0012 GETMET R9 R9 K140 0x5C2C0E00, // 0013 MOVE R11 R7 0x5830001C, // 0014 LDCONST R12 K28 0x5436003B, // 0015 LDINT R13 60 @@ -1959,7 +1961,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x5C3C1000, // 0017 MOVE R15 R8 0x7C240C00, // 0018 CALL R9 6 0xB82A0200, // 0019 GETNGBL R10 K1 - 0x8C28158A, // 001A GETMET R10 R10 K138 + 0x8C28158C, // 001A GETMET R10 R10 K140 0x5C300E00, // 001B MOVE R12 R7 0x5834001C, // 001C LDCONST R13 K28 0x543A003B, // 001D LDINT R14 60 @@ -1971,17 +1973,17 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x5C141400, // 0023 MOVE R5 R10 0x5C101000, // 0024 MOVE R4 R8 0x70020016, // 0025 JMP #003D - 0x1C2C0D05, // 0026 EQ R11 R6 K5 + 0x1C2C0D53, // 0026 EQ R11 R6 K83 0x782E0002, // 0027 JMPF R11 #002B 0x5C0C1200, // 0028 MOVE R3 R9 0x5C101000, // 0029 MOVE R4 R8 0x70020011, // 002A JMP #003D - 0x1C2C0D04, // 002B EQ R11 R6 K4 + 0x1C2C0D8D, // 002B EQ R11 R6 K141 0x782E0002, // 002C JMPF R11 #0030 0x5C0C1000, // 002D MOVE R3 R8 0x5C101400, // 002E MOVE R4 R10 0x7002000C, // 002F JMP #003D - 0x1C2C0D5B, // 0030 EQ R11 R6 K91 + 0x1C2C0D5D, // 0030 EQ R11 R6 K93 0x782E0002, // 0031 JMPF R11 #0035 0x5C0C1000, // 0032 MOVE R3 R8 0x5C141200, // 0033 MOVE R5 R9 @@ -2024,22 +2026,22 @@ be_local_closure(class_Tasmota_remove_cron, /* name */ &be_const_str_remove_cron, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8808012D, // 0000 GETMBR R2 R0 K45 + 0x8808012E, // 0000 GETMBR R2 R0 K46 0x780A000E, // 0001 JMPF R2 #0011 - 0x580C001C, // 0002 LDCONST R3 K28 - 0x8C100530, // 0003 GETMET R4 R2 K48 + 0x580C003E, // 0002 LDCONST R3 K62 + 0x8C100531, // 0003 GETMET R4 R2 K49 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120009, // 0006 JMPF R4 #0011 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x8810093D, // 0008 GETMBR R4 R4 K61 + 0x8810093F, // 0008 GETMBR R4 R4 K63 0x1C100801, // 0009 EQ R4 R4 R1 0x78120003, // 000A JMPF R4 #000F - 0x8C100552, // 000B GETMET R4 R2 K82 + 0x8C100555, // 000B GETMET R4 R2 K85 0x5C180600, // 000C MOVE R6 R3 0x7C100400, // 000D CALL R4 2 0x70020000, // 000E JMP #0010 - 0x000C0705, // 000F ADD R3 R3 K5 + 0x000C0722, // 000F ADD R3 R3 K34 0x7001FFF1, // 0010 JMP #0003 0x80000000, // 0011 RET 0 }) @@ -2331,72 +2333,72 @@ be_local_closure(class_Tasmota_load, /* name */ 0x84140003, // 0003 CLOSURE R5 P3 0x84180004, // 0004 CLOSURE R6 P4 0x841C0005, // 0005 CLOSURE R7 P5 - 0xA422AA00, // 0006 IMPORT R8 K85 - 0xA4271600, // 0007 IMPORT R9 K139 + 0xA422B000, // 0006 IMPORT R8 K88 + 0xA4271C00, // 0007 IMPORT R9 K142 0x6028000C, // 0008 GETGBL R10 G12 0x5C2C0200, // 0009 MOVE R11 R1 0x7C280200, // 000A CALL R10 1 - 0x1C28151C, // 000B EQ R10 R10 K28 + 0x1C28156A, // 000B EQ R10 R10 K106 0x782A0002, // 000C JMPF R10 #0010 0x50280000, // 000D LDBOOL R10 0 0 0xA0000000, // 000E CLOSE R0 0x80041400, // 000F RET 1 R10 - 0x8C28118C, // 0010 GETMET R10 R8 K140 + 0x8C28118F, // 0010 GETMET R10 R8 K143 0x5C300200, // 0011 MOVE R12 R1 - 0x58340072, // 0012 LDCONST R13 K114 + 0x58340074, // 0012 LDCONST R13 K116 0x7C280600, // 0013 CALL R10 3 0x742A0000, // 0014 JMPT R10 #0016 - 0x0006E401, // 0015 ADD R1 K114 R1 + 0x0006E801, // 0015 ADD R1 K116 R1 0x8C28110E, // 0016 GETMET R10 R8 K14 0x5C300200, // 0017 MOVE R12 R1 - 0x58340061, // 0018 LDCONST R13 K97 + 0x58340062, // 0018 LDCONST R13 K98 0x7C280600, // 0019 CALL R10 3 - 0x242C151C, // 001A GT R11 R10 K28 + 0x242C156A, // 001A GT R11 R10 K106 0x782E0003, // 001B JMPF R11 #0020 - 0x0430158D, // 001C SUB R12 R10 K141 - 0x4032380C, // 001D CONNECT R12 K28 R12 + 0x04301522, // 001C SUB R12 R10 K34 + 0x4032D40C, // 001D CONNECT R12 K106 R12 0x9430020C, // 001E GETIDX R12 R1 R12 0x70020000, // 001F JMP #0021 0x5C300200, // 0020 MOVE R12 R1 0x782E0003, // 0021 JMPF R11 #0026 - 0x0034158D, // 0022 ADD R13 R10 K141 - 0x40341B8E, // 0023 CONNECT R13 R13 K142 + 0x00341522, // 0022 ADD R13 R10 K34 + 0x40341B90, // 0023 CONNECT R13 R13 K144 0x9434020D, // 0024 GETIDX R13 R1 R13 0x70020000, // 0025 JMP #0027 0x5C340200, // 0026 MOVE R13 R1 0x8C38110E, // 0027 GETMET R14 R8 K14 0x5C401A00, // 0028 MOVE R16 R13 - 0x5844008F, // 0029 LDCONST R17 K143 + 0x58440091, // 0029 LDCONST R17 K145 0x7C380600, // 002A CALL R14 3 - 0x14381D1C, // 002B LT R14 R14 K28 + 0x14381D6A, // 002B LT R14 R14 K106 0x783A0001, // 002C JMPF R14 #002F - 0x0004035F, // 002D ADD R1 R1 K95 - 0x00341B5F, // 002E ADD R13 R13 K95 - 0x8C38115E, // 002F GETMET R14 R8 K94 + 0x00040360, // 002D ADD R1 R1 K96 + 0x00341B60, // 002E ADD R13 R13 K96 + 0x8C38115F, // 002F GETMET R14 R8 K95 0x5C401A00, // 0030 MOVE R16 R13 - 0x5844005F, // 0031 LDCONST R17 K95 + 0x58440060, // 0031 LDCONST R17 K96 0x7C380600, // 0032 CALL R14 3 - 0x8C3C115E, // 0033 GETMET R15 R8 K94 + 0x8C3C115F, // 0033 GETMET R15 R8 K95 0x5C441A00, // 0034 MOVE R17 R13 - 0x58480090, // 0035 LDCONST R18 K144 + 0x58480092, // 0035 LDCONST R18 K146 0x7C3C0600, // 0036 CALL R15 3 0x783E0001, // 0037 JMPF R15 #003A 0x5C400200, // 0038 MOVE R16 R1 0x70020000, // 0039 JMP #003B - 0x00400366, // 003A ADD R16 R1 K102 + 0x00400367, // 003A ADD R16 R1 K103 0x5C441C00, // 003B MOVE R17 R14 0x74460007, // 003C JMPT R17 #0045 0x5C441E00, // 003D MOVE R17 R15 0x74460005, // 003E JMPT R17 #0045 0x60440001, // 003F GETGBL R17 G1 - 0x58480091, // 0040 LDCONST R18 K145 + 0x58480093, // 0040 LDCONST R18 K147 0x7C440200, // 0041 CALL R17 1 0x50440000, // 0042 LDBOOL R17 0 0 0xA0000000, // 0043 CLOSE R0 0x80042200, // 0044 RET 1 R17 0x50440000, // 0045 LDBOOL R17 0 0 0x783E0008, // 0046 JMPF R15 #0050 - 0x8C481392, // 0047 GETMET R18 R9 K146 + 0x8C481394, // 0047 GETMET R18 R9 K148 0x5C502000, // 0048 MOVE R20 R16 0x7C480400, // 0049 CALL R18 2 0x744A0002, // 004A JMPT R18 #004E @@ -2405,11 +2407,11 @@ be_local_closure(class_Tasmota_load, /* name */ 0x80042400, // 004D RET 1 R18 0x50440200, // 004E LDBOOL R17 1 0 0x70020014, // 004F JMP #0065 - 0x8C481392, // 0050 GETMET R18 R9 K146 + 0x8C481394, // 0050 GETMET R18 R9 K148 0x5C500200, // 0051 MOVE R20 R1 0x7C480400, // 0052 CALL R18 2 0x784A0007, // 0053 JMPF R18 #005C - 0x8C481392, // 0054 GETMET R18 R9 K146 + 0x8C481394, // 0054 GETMET R18 R9 K148 0x5C502000, // 0055 MOVE R20 R16 0x7C480400, // 0056 CALL R18 2 0x784A0002, // 0057 JMPF R18 #005B @@ -2417,7 +2419,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x5C4C2000, // 0059 MOVE R19 R16 0x7C480200, // 005A CALL R18 1 0x70020008, // 005B JMP #0065 - 0x8C481392, // 005C GETMET R18 R9 K146 + 0x8C481394, // 005C GETMET R18 R9 K148 0x5C502000, // 005D MOVE R20 R16 0x7C480400, // 005E CALL R18 2 0x784A0001, // 005F JMPF R18 #0062 @@ -2427,13 +2429,13 @@ be_local_closure(class_Tasmota_load, /* name */ 0xA0000000, // 0063 CLOSE R0 0x80042400, // 0064 RET 1 R18 0x782E0005, // 0065 JMPF R11 #006C - 0x00481961, // 0066 ADD R18 R12 K97 - 0x90028A12, // 0067 SETMBR R0 K69 R18 + 0x00481962, // 0066 ADD R18 R12 K98 + 0x90028E12, // 0067 SETMBR R0 K71 R18 0x5C480400, // 0068 MOVE R18 R2 - 0x884C0145, // 0069 GETMBR R19 R0 K69 + 0x884C0147, // 0069 GETMBR R19 R0 K71 0x7C480200, // 006A CALL R18 1 0x70020000, // 006B JMP #006D - 0x90028B46, // 006C SETMBR R0 K69 K70 + 0x90028F48, // 006C SETMBR R0 K71 K72 0x4C480000, // 006D LDNIL R18 0x78460025, // 006E JMPF R17 #0095 0x5C4C0800, // 006F MOVE R19 R4 @@ -2445,7 +2447,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x78560007, // 0075 JMPF R21 #007E 0x60540001, // 0076 GETGBL R21 G1 0x60580018, // 0077 GETGBL R22 G24 - 0x585C0093, // 0078 LDCONST R23 K147 + 0x585C0095, // 0078 LDCONST R23 K149 0x5C602000, // 0079 MOVE R24 R16 0x7C580400, // 007A CALL R22 2 0x7C540200, // 007B CALL R21 1 @@ -2456,7 +2458,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x78560007, // 0080 JMPF R21 #0089 0x60540001, // 0081 GETGBL R21 G1 0x60580018, // 0082 GETGBL R22 G24 - 0x585C0094, // 0083 LDCONST R23 K148 + 0x585C0096, // 0083 LDCONST R23 K150 0x5C602000, // 0084 MOVE R24 R16 0x5C642600, // 0085 MOVE R25 R19 0x7C580600, // 0086 CALL R22 3 @@ -2485,7 +2487,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x7C4C0200, // 009D CALL R19 1 0x782E0002, // 009E JMPF R11 #00A2 0x5C500600, // 009F MOVE R20 R3 - 0x00541961, // 00A0 ADD R21 R12 K97 + 0x00541962, // 00A0 ADD R21 R12 K98 0x7C500200, // 00A1 CALL R20 1 0xA0000000, // 00A2 CLOSE R0 0x80042600, // 00A3 RET 1 R19 @@ -2512,24 +2514,24 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ &be_const_str_urlfetch_cmd, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA416AA00, // 0000 IMPORT R5 K85 + 0xA416B000, // 0000 IMPORT R5 K88 0x8C180B0E, // 0001 GETMET R6 R5 K14 0x5C200600, // 0002 MOVE R8 R3 - 0x58240095, // 0003 LDCONST R9 K149 + 0x58240097, // 0003 LDCONST R9 K151 0x7C180600, // 0004 CALL R6 3 0x20180D1C, // 0005 NE R6 R6 K28 0x781A0003, // 0006 JMPF R6 #000B - 0x8C180196, // 0007 GETMET R6 R0 K150 - 0x58200097, // 0008 LDCONST R8 K151 + 0x8C180198, // 0007 GETMET R6 R0 K152 + 0x58200099, // 0008 LDCONST R8 K153 0x7C180400, // 0009 CALL R6 2 0x80000C00, // 000A RET 0 0xA802000A, // 000B EXBLK 0 #0017 - 0x8C180198, // 000C GETMET R6 R0 K152 + 0x8C18019A, // 000C GETMET R6 R0 K154 0x5C200600, // 000D MOVE R8 R3 0x7C180400, // 000E CALL R6 2 0x141C0D1C, // 000F LT R7 R6 K28 0x781E0003, // 0010 JMPF R7 #0015 - 0x8C1C0199, // 0011 GETMET R7 R0 K153 + 0x8C1C019B, // 0011 GETMET R7 R0 K155 0x7C1C0200, // 0012 CALL R7 1 0xA8040001, // 0013 EXBLK 1 1 0x80000E00, // 0014 RET 0 @@ -2537,13 +2539,13 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ 0x70020006, // 0016 JMP #001E 0xAC180002, // 0017 CATCH R6 0 2 0x70020003, // 0018 JMP #001D - 0x8C200199, // 0019 GETMET R8 R0 K153 + 0x8C20019B, // 0019 GETMET R8 R0 K155 0x7C200200, // 001A CALL R8 1 0x80001000, // 001B RET 0 0x70020000, // 001C JMP #001E 0xB0080000, // 001D RAISE 2 R0 R0 0xB81A0200, // 001E GETNGBL R6 K1 - 0x8C180D9A, // 001F GETMET R6 R6 K154 + 0x8C180D9C, // 001F GETMET R6 R6 K156 0x7C180200, // 0020 CALL R6 1 0x80000000, // 0021 RET 0 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h index d48ad4054..f35bcc17f 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'zcl_attribute' ktab size: 44, total: 70 (saved 208 bytes) -static const bvalue be_ktab_class_zcl_attribute[44] = { +// compact class 'zcl_attribute' ktab size: 43, total: 70 (saved 216 bytes) +static const bvalue be_ktab_class_zcl_attribute[43] = { /* K0 */ be_nested_str_weak(tomap), /* K1 */ be_nested_str_weak(cluster), /* K2 */ be_nested_str_weak(attr_id), @@ -25,30 +25,29 @@ static const bvalue be_ktab_class_zcl_attribute[44] = { /* K17 */ be_nested_str_weak(_iscmd), /* K18 */ be_const_int(0), /* K19 */ be_nested_str_weak(_cmd), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str_weak(_direction), - /* K22 */ be_nested_str_weak(_set_val), - /* K23 */ be_nested_str_weak(_set_key), - /* K24 */ be_nested_str_weak(setmember), - /* K25 */ be_nested_str_weak(introspect), - /* K26 */ be_nested_str_weak(json), - /* K27 */ be_nested_str_weak(dump), - /* K28 */ be_nested_str_weak(key_tostring), - /* K29 */ be_nested_str_weak(_X3A), - /* K30 */ be_nested_str_weak(get), - /* K31 */ be_nested_str_weak(tojson), - /* K32 */ be_nested_str_weak(_X28_X25s_X29), - /* K33 */ be_nested_str_weak(_X2C_X25s_X3A_X22_X2504X_X2F_X2504X_X22), - /* K34 */ be_nested_str_weak(init), - /* K35 */ be_nested_str_weak(_init), - /* K36 */ be_nested_str_weak(ismapped), - /* K37 */ be_nested_str_weak(_deinit), - /* K38 */ be_nested_str_weak(cmd_general), - /* K39 */ be_nested_str_weak(_cmd_general), - /* K40 */ be_nested_str_weak(_get_val), - /* K41 */ be_nested_str_weak(tohex), - /* K42 */ be_nested_str_weak(_get_key), - /* K43 */ be_nested_str_weak(member), + /* K20 */ be_nested_str_weak(_direction), + /* K21 */ be_nested_str_weak(_set_val), + /* K22 */ be_nested_str_weak(_set_key), + /* K23 */ be_nested_str_weak(setmember), + /* K24 */ be_nested_str_weak(introspect), + /* K25 */ be_nested_str_weak(json), + /* K26 */ be_nested_str_weak(dump), + /* K27 */ be_nested_str_weak(key_tostring), + /* K28 */ be_nested_str_weak(_X3A), + /* K29 */ be_nested_str_weak(get), + /* K30 */ be_nested_str_weak(tojson), + /* K31 */ be_nested_str_weak(_X28_X25s_X29), + /* K32 */ be_nested_str_weak(_X2C_X25s_X3A_X22_X2504X_X2F_X2504X_X22), + /* K33 */ be_nested_str_weak(init), + /* K34 */ be_nested_str_weak(_init), + /* K35 */ be_nested_str_weak(ismapped), + /* K36 */ be_nested_str_weak(_deinit), + /* K37 */ be_nested_str_weak(cmd_general), + /* K38 */ be_nested_str_weak(_cmd_general), + /* K39 */ be_nested_str_weak(_get_val), + /* K40 */ be_nested_str_weak(tohex), + /* K41 */ be_nested_str_weak(_get_key), + /* K42 */ be_nested_str_weak(member), }; @@ -234,38 +233,38 @@ be_local_closure(class_zcl_attribute_setmember, /* name */ 0x90022603, // 001B SETMBR R0 K19 R3 0x70020001, // 001C JMP #001F 0x90022602, // 001D SETMBR R0 K19 R2 - 0x90022314, // 001E SETMBR R0 K17 K20 + 0x90022309, // 001E SETMBR R0 K17 K9 0x70020020, // 001F JMP #0041 0x1C0C0304, // 0020 EQ R3 R1 K4 0x780E000B, // 0021 JMPF R3 #002E 0x4C0C0000, // 0022 LDNIL R3 0x1C0C0403, // 0023 EQ R3 R2 R3 0x780E0001, // 0024 JMPF R3 #0027 - 0x90022B12, // 0025 SETMBR R0 K21 K18 + 0x90022912, // 0025 SETMBR R0 K20 K18 0x70020005, // 0026 JMP #002D 0x780A0001, // 0027 JMPF R2 #002A - 0x580C0014, // 0028 LDCONST R3 K20 + 0x580C0009, // 0028 LDCONST R3 K9 0x70020000, // 0029 JMP #002B 0x580C0012, // 002A LDCONST R3 K18 - 0x90022A03, // 002B SETMBR R0 K21 R3 - 0x90022314, // 002C SETMBR R0 K17 K20 + 0x90022803, // 002B SETMBR R0 K20 R3 + 0x90022309, // 002C SETMBR R0 K17 K9 0x70020012, // 002D JMP #0041 0x1C0C0306, // 002E EQ R3 R1 K6 0x780E0003, // 002F JMPF R3 #0034 - 0x8C0C0116, // 0030 GETMET R3 R0 K22 + 0x8C0C0115, // 0030 GETMET R3 R0 K21 0x5C140400, // 0031 MOVE R5 R2 0x7C0C0400, // 0032 CALL R3 2 0x7002000C, // 0033 JMP #0041 0x1C0C0305, // 0034 EQ R3 R1 K5 0x780E0003, // 0035 JMPF R3 #003A - 0x8C0C0117, // 0036 GETMET R3 R0 K23 + 0x8C0C0116, // 0036 GETMET R3 R0 K22 0x5C140400, // 0037 MOVE R5 R2 0x7C0C0400, // 0038 CALL R3 2 0x70020006, // 0039 JMP #0041 0x600C0003, // 003A GETGBL R3 G3 0x5C100000, // 003B MOVE R4 R0 0x7C0C0200, // 003C CALL R3 1 - 0x8C0C0718, // 003D GETMET R3 R3 K24 + 0x8C0C0717, // 003D GETMET R3 R3 K23 0x5C140200, // 003E MOVE R5 R1 0x5C180400, // 003F MOVE R6 R2 0x7C0C0600, // 0040 CALL R3 3 @@ -293,26 +292,26 @@ be_local_closure(class_zcl_attribute_tostring, /* name */ be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0xA4063200, // 0000 IMPORT R1 K25 - 0xA40A3400, // 0001 IMPORT R2 K26 - 0x8C0C051B, // 0002 GETMET R3 R2 K27 - 0x8C14011C, // 0003 GETMET R5 R0 K28 + 0xA4063000, // 0000 IMPORT R1 K24 + 0xA40A3200, // 0001 IMPORT R2 K25 + 0x8C0C051A, // 0002 GETMET R3 R2 K26 + 0x8C14011B, // 0003 GETMET R5 R0 K27 0x7C140200, // 0004 CALL R5 1 0x7C0C0400, // 0005 CALL R3 2 - 0x000C071D, // 0006 ADD R3 R3 K29 - 0x8C10031E, // 0007 GETMET R4 R1 K30 + 0x000C071C, // 0006 ADD R3 R3 K28 + 0x8C10031D, // 0007 GETMET R4 R1 K29 0x88180106, // 0008 GETMBR R6 R0 K6 - 0x581C001F, // 0009 LDCONST R7 K31 + 0x581C001E, // 0009 LDCONST R7 K30 0x7C100600, // 000A CALL R4 3 0x4C140000, // 000B LDNIL R5 0x20100805, // 000C NE R4 R4 R5 0x78120004, // 000D JMPF R4 #0013 0x88100106, // 000E GETMBR R4 R0 K6 - 0x8C10091F, // 000F GETMET R4 R4 K31 + 0x8C10091E, // 000F GETMET R4 R4 K30 0x7C100200, // 0010 CALL R4 1 0x000C0604, // 0011 ADD R3 R3 R4 0x70020003, // 0012 JMP #0017 - 0x8C10051B, // 0013 GETMET R4 R2 K27 + 0x8C10051A, // 0013 GETMET R4 R2 K26 0x88180106, // 0014 GETMBR R6 R0 K6 0x7C100400, // 0015 CALL R4 2 0x000C0604, // 0016 ADD R3 R3 R4 @@ -329,13 +328,13 @@ be_local_closure(class_zcl_attribute_tostring, /* name */ 0x20100805, // 0021 NE R4 R4 R5 0x7812000D, // 0022 JMPF R4 #0031 0x60100018, // 0023 GETGBL R4 G24 - 0x58140020, // 0024 LDCONST R5 K32 - 0x8C18011C, // 0025 GETMET R6 R0 K28 + 0x5814001F, // 0024 LDCONST R5 K31 + 0x8C18011B, // 0025 GETMET R6 R0 K27 0x7C180200, // 0026 CALL R6 1 0x7C100400, // 0027 CALL R4 2 0x60140018, // 0028 GETGBL R5 G24 - 0x58180021, // 0029 LDCONST R6 K33 - 0x8C1C051B, // 002A GETMET R7 R2 K27 + 0x58180020, // 0029 LDCONST R6 K32 + 0x8C1C051A, // 002A GETMET R7 R2 K26 0x5C240800, // 002B MOVE R9 R4 0x7C1C0400, // 002C CALL R7 2 0x88200101, // 002D GETMBR R8 R0 K1 @@ -369,13 +368,13 @@ be_local_closure(class_zcl_attribute_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080522, // 0003 GETMET R2 R2 K34 + 0x8C080521, // 0003 GETMET R2 R2 K33 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x4C080000, // 0006 LDNIL R2 0x1C080202, // 0007 EQ R2 R1 R2 0x780A0001, // 0008 JMPF R2 #000B - 0x8C080123, // 0009 GETMET R2 R0 K35 + 0x8C080122, // 0009 GETMET R2 R0 K34 0x7C080200, // 000A CALL R2 1 0x80000000, // 000B RET 0 }) @@ -401,10 +400,10 @@ be_local_closure(class_zcl_attribute_deinit, /* name */ be_str_weak(deinit), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040124, // 0000 GETMET R1 R0 K36 + 0x8C040123, // 0000 GETMET R1 R0 K35 0x7C040200, // 0001 CALL R1 1 0x74060001, // 0002 JMPT R1 #0005 - 0x8C040125, // 0003 GETMET R1 R0 K37 + 0x8C040124, // 0003 GETMET R1 R0 K36 0x7C040200, // 0004 CALL R1 1 0x80000000, // 0005 RET 0 }) @@ -469,38 +468,38 @@ be_local_closure(class_zcl_attribute_member, /* name */ 0x70020024, // 0024 JMP #004A 0x1C080304, // 0025 EQ R2 R1 K4 0x780A0002, // 0026 JMPF R2 #002A - 0x88080115, // 0027 GETMBR R2 R0 K21 + 0x88080114, // 0027 GETMBR R2 R0 K20 0x80040400, // 0028 RET 1 R2 0x7002001F, // 0029 JMP #004A - 0x1C080326, // 002A EQ R2 R1 K38 + 0x1C080325, // 002A EQ R2 R1 K37 0x780A0002, // 002B JMPF R2 #002F - 0x88080127, // 002C GETMBR R2 R0 K39 + 0x88080126, // 002C GETMBR R2 R0 K38 0x80040400, // 002D RET 1 R2 0x7002001A, // 002E JMP #004A 0x1C080306, // 002F EQ R2 R1 K6 0x780A000B, // 0030 JMPF R2 #003D - 0x8C080128, // 0031 GETMET R2 R0 K40 + 0x8C080127, // 0031 GETMET R2 R0 K39 0x7C080200, // 0032 CALL R2 1 0x600C000F, // 0033 GETGBL R3 G15 0x5C100400, // 0034 MOVE R4 R2 0x60140015, // 0035 GETGBL R5 G21 0x7C0C0400, // 0036 CALL R3 2 0x780E0002, // 0037 JMPF R3 #003B - 0x8C0C0529, // 0038 GETMET R3 R2 K41 + 0x8C0C0528, // 0038 GETMET R3 R2 K40 0x7C0C0200, // 0039 CALL R3 1 0x5C080600, // 003A MOVE R2 R3 0x80040400, // 003B RET 1 R2 0x7002000C, // 003C JMP #004A 0x1C080305, // 003D EQ R2 R1 K5 0x780A0003, // 003E JMPF R2 #0043 - 0x8C08012A, // 003F GETMET R2 R0 K42 + 0x8C080129, // 003F GETMET R2 R0 K41 0x7C080200, // 0040 CALL R2 1 0x80040400, // 0041 RET 1 R2 0x70020006, // 0042 JMP #004A 0x60080003, // 0043 GETGBL R2 G3 0x5C0C0000, // 0044 MOVE R3 R0 0x7C080200, // 0045 CALL R2 1 - 0x8C08052B, // 0046 GETMET R2 R2 K43 + 0x8C08052A, // 0046 GETMET R2 R2 K42 0x5C100200, // 0047 MOVE R4 R1 0x7C080400, // 0048 CALL R2 2 0x80040400, // 0049 RET 1 R2 diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h index 780a51478..56c7b21ba 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h +++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h @@ -20,18 +20,18 @@ static const bvalue be_ktab_class_LVGL_glob[74] = { /* K12 */ be_nested_str_weak(add_event_cb), /* K13 */ be_nested_str_weak(lv), /* K14 */ be_nested_str_weak(EVENT_DELETE), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(add_cb_event_closure), - /* K17 */ be_nested_str_weak(_p), - /* K18 */ be_nested_str_weak(get_event_cb), - /* K19 */ be_nested_str_weak(lv_timer_cb), - /* K20 */ be_nested_str_weak(timer_cb), - /* K21 */ be_const_int(2), - /* K22 */ be_nested_str_weak(lv_), - /* K23 */ be_nested_str_weak(null_cb), - /* K24 */ be_nested_str_weak(cb_do_nothing), - /* K25 */ be_nested_str_weak(introspect), - /* K26 */ be_nested_str_weak(toptr), + /* K15 */ be_nested_str_weak(add_cb_event_closure), + /* K16 */ be_nested_str_weak(_p), + /* K17 */ be_nested_str_weak(get_event_cb), + /* K18 */ be_nested_str_weak(lv_timer_cb), + /* K19 */ be_nested_str_weak(timer_cb), + /* K20 */ be_const_int(2), + /* K21 */ be_nested_str_weak(lv_), + /* K22 */ be_nested_str_weak(null_cb), + /* K23 */ be_nested_str_weak(cb_do_nothing), + /* K24 */ be_nested_str_weak(introspect), + /* K25 */ be_nested_str_weak(toptr), + /* K26 */ be_const_int(0), /* K27 */ be_const_int(1), /* K28 */ be_nested_str_weak(event), /* K29 */ be_nested_str_weak(lv_event), @@ -317,49 +317,49 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */ 0x84200000, // 0010 CLOSURE R8 P0 0xB8261A00, // 0011 GETNGBL R9 K13 0x8824130E, // 0012 GETMBR R9 R9 K14 - 0x5828000F, // 0013 LDCONST R10 K15 + 0x58280009, // 0013 LDCONST R10 K9 0x7C180800, // 0014 CALL R6 4 - 0x8C180110, // 0015 GETMET R6 R0 K16 - 0x88200511, // 0016 GETMBR R8 R2 K17 + 0x8C18010F, // 0015 GETMET R6 R0 K15 + 0x88200510, // 0016 GETMBR R8 R2 K16 0x5C240200, // 0017 MOVE R9 R1 0x7C180600, // 0018 CALL R6 3 - 0x8C1C0112, // 0019 GETMET R7 R0 K18 + 0x8C1C0111, // 0019 GETMET R7 R0 K17 0x5C240C00, // 001A MOVE R9 R6 0x7C1C0400, // 001B CALL R7 2 0xA0000000, // 001C CLOSE R0 0x80040E00, // 001D RET 1 R7 0x70020024, // 001E JMP #0044 - 0x1C140713, // 001F EQ R5 R3 K19 + 0x1C140712, // 001F EQ R5 R3 K18 0x7816000F, // 0020 JMPF R5 #0031 - 0x88140114, // 0021 GETMBR R5 R0 K20 + 0x88140113, // 0021 GETMBR R5 R0 K19 0x4C180000, // 0022 LDNIL R6 0x1C140A06, // 0023 EQ R5 R5 R6 0x78160003, // 0024 JMPF R5 #0029 0x8C140902, // 0025 GETMET R5 R4 K2 0x841C0001, // 0026 CLOSURE R7 P1 0x7C140400, // 0027 CALL R5 2 - 0x90022805, // 0028 SETMBR R0 K20 R5 - 0x8C140110, // 0029 GETMET R5 R0 K16 - 0x881C0511, // 002A GETMBR R7 R2 K17 + 0x90022605, // 0028 SETMBR R0 K19 R5 + 0x8C14010F, // 0029 GETMET R5 R0 K15 + 0x881C0510, // 002A GETMBR R7 R2 K16 0x5C200200, // 002B MOVE R8 R1 0x7C140600, // 002C CALL R5 3 - 0x88140114, // 002D GETMBR R5 R0 K20 + 0x88140113, // 002D GETMBR R5 R0 K19 0xA0000000, // 002E CLOSE R0 0x80040A00, // 002F RET 1 R5 0x70020012, // 0030 JMP #0044 - 0x40161F15, // 0031 CONNECT R5 K15 K21 + 0x40161314, // 0031 CONNECT R5 K9 K20 0x94140605, // 0032 GETIDX R5 R3 R5 - 0x1C140B16, // 0033 EQ R5 R5 K22 + 0x1C140B15, // 0033 EQ R5 R5 K21 0x7816000B, // 0034 JMPF R5 #0041 - 0x88140117, // 0035 GETMBR R5 R0 K23 + 0x88140116, // 0035 GETMBR R5 R0 K22 0x4C180000, // 0036 LDNIL R6 0x1C140A06, // 0037 EQ R5 R5 R6 0x78160003, // 0038 JMPF R5 #003D 0x8C140902, // 0039 GETMET R5 R4 K2 - 0x881C0118, // 003A GETMBR R7 R0 K24 + 0x881C0117, // 003A GETMBR R7 R0 K23 0x7C140400, // 003B CALL R5 2 - 0x90022E05, // 003C SETMBR R0 K23 R5 - 0x88140117, // 003D GETMBR R5 R0 K23 + 0x90022C05, // 003C SETMBR R0 K22 R5 + 0x88140116, // 003D GETMBR R5 R0 K22 0xA0000000, // 003E CLOSE R0 0x80040A00, // 003F RET 1 R5 0x70020002, // 0040 JMP #0044 @@ -391,8 +391,8 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ be_str_weak(lvgl_timer_dispatch), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0xA40A3200, // 0000 IMPORT R2 K25 - 0x8C0C051A, // 0001 GETMET R3 R2 K26 + 0xA40A3000, // 0000 IMPORT R2 K24 + 0x8C0C0519, // 0001 GETMET R3 R2 K25 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x88100105, // 0004 GETMBR R4 R0 K5 @@ -406,7 +406,7 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ 0x5C180600, // 000C MOVE R6 R3 0x7C140200, // 000D CALL R5 1 0x7002000A, // 000E JMP #001A - 0x5814000F, // 000F LDCONST R5 K15 + 0x5814001A, // 000F LDCONST R5 K26 0x6018000C, // 0010 GETGBL R6 G12 0x5C1C0800, // 0011 MOVE R7 R4 0x7C180200, // 0012 CALL R6 1 @@ -441,14 +441,14 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ be_str_weak(lvgl_event_dispatch), &be_const_str_solidified, ( &(const binstruction[42]) { /* code */ - 0xA40E3200, // 0000 IMPORT R3 K25 - 0x8C10071A, // 0001 GETMET R4 R3 K26 + 0xA40E3000, // 0000 IMPORT R3 K24 + 0x8C100719, // 0001 GETMET R4 R3 K25 0x5C180400, // 0002 MOVE R6 R2 0x7C100400, // 0003 CALL R4 2 0x8814011C, // 0004 GETMBR R5 R0 K28 0x78160002, // 0005 JMPF R5 #0009 0x8814011C, // 0006 GETMBR R5 R0 K28 - 0x90162204, // 0007 SETMBR R5 K17 R4 + 0x90162004, // 0007 SETMBR R5 K16 R4 0x70020004, // 0008 JMP #000E 0xB8161A00, // 0009 GETNGBL R5 K13 0x8C140B1D, // 000A GETMET R5 R5 K29 @@ -555,14 +555,14 @@ be_local_closure(class_LVGL_glob_register_obj, /* name */ 0x90024002, // 0006 SETMBR R0 K32 R2 0x88080120, // 0007 GETMBR R2 R0 K32 0x8C080506, // 0008 GETMET R2 R2 K6 - 0x88100311, // 0009 GETMBR R4 R1 K17 + 0x88100310, // 0009 GETMBR R4 R1 K16 0x7C080400, // 000A CALL R2 2 0x780A0002, // 000B JMPF R2 #000F 0x50080200, // 000C LDBOOL R2 1 0 0x80040400, // 000D RET 1 R2 0x70020004, // 000E JMP #0014 0x88080120, // 000F GETMBR R2 R0 K32 - 0x880C0311, // 0010 GETMBR R3 R1 K17 + 0x880C0310, // 0010 GETMBR R3 R1 K16 0x98080601, // 0011 SETIDX R2 R3 R1 0x50080000, // 0012 LDBOOL R2 0 0 0x80040400, // 0013 RET 1 R2 @@ -590,21 +590,21 @@ be_local_closure(class_LVGL_glob_widget_event_impl, /* name */ be_str_weak(widget_event_impl), &be_const_str_solidified, ( &(const binstruction[47]) { /* code */ - 0xA40E3200, // 0000 IMPORT R3 K25 + 0xA40E3000, // 0000 IMPORT R3 K24 0xB8121A00, // 0001 GETNGBL R4 K13 0x8C100922, // 0002 GETMET R4 R4 K34 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 0xB8161A00, // 0005 GETNGBL R5 K13 0x8C140B1D, // 0006 GETMET R5 R5 K29 - 0x8C1C071A, // 0007 GETMET R7 R3 K26 + 0x8C1C0719, // 0007 GETMET R7 R3 K25 0x5C240400, // 0008 MOVE R9 R2 0x7C1C0400, // 0009 CALL R7 2 0x7C140400, // 000A CALL R5 2 0x8C180B23, // 000B GETMET R6 R5 K35 0x7C180200, // 000C CALL R6 1 0x8C1C011F, // 000D GETMET R7 R0 K31 - 0x88240D11, // 000E GETMBR R9 R6 K17 + 0x88240D10, // 000E GETMBR R9 R6 K16 0x7C1C0400, // 000F CALL R7 2 0x60200004, // 0010 GETGBL R8 G4 0x5C240E00, // 0011 MOVE R9 R7 @@ -660,7 +660,7 @@ be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */ be_str_weak(widget_dtor_impl), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA40E3200, // 0000 IMPORT R3 K25 + 0xA40E3000, // 0000 IMPORT R3 K24 0xB8121A00, // 0001 GETNGBL R4 K13 0x8C100922, // 0002 GETMET R4 R4 K34 0x5C180200, // 0003 MOVE R6 R1 @@ -705,7 +705,7 @@ be_local_closure(class_LVGL_glob_widget_ctor_impl, /* name */ be_str_weak(widget_ctor_impl), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0xA40E3200, // 0000 IMPORT R3 K25 + 0xA40E3000, // 0000 IMPORT R3 K24 0xB8121A00, // 0001 GETNGBL R4 K13 0x8C100922, // 0002 GETMET R4 R4 K34 0x5C180200, // 0003 MOVE R6 R1 @@ -874,7 +874,7 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ be_str_weak(create_custom_widget), &be_const_str_solidified, ( &(const binstruction[86]) { /* code */ - 0xA40E3200, // 0000 IMPORT R3 K25 + 0xA40E3000, // 0000 IMPORT R3 K24 0x6010000F, // 0001 GETGBL R4 G15 0x5C140200, // 0002 MOVE R5 R1 0xB81A1A00, // 0003 GETNGBL R6 K13 @@ -952,8 +952,8 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ 0x5C200A00, // 004B MOVE R8 R5 0x5C240400, // 004C MOVE R9 R2 0x7C180600, // 004D CALL R6 3 - 0x881C0D11, // 004E GETMBR R7 R6 K17 - 0x90062207, // 004F SETMBR R1 K17 R7 + 0x881C0D10, // 004E GETMBR R7 R6 K16 + 0x90062007, // 004F SETMBR R1 K16 R7 0x8C1C010B, // 0050 GETMET R7 R0 K11 0x5C240200, // 0051 MOVE R9 R1 0x7C1C0400, // 0052 CALL R7 2 @@ -1136,8 +1136,8 @@ be_local_closure(class_LVGL_glob_remove_cb, /* name */ be_str_weak(remove_cb), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0xA40A3200, // 0000 IMPORT R2 K25 - 0x880C0311, // 0001 GETMBR R3 R1 K17 + 0xA40A3000, // 0000 IMPORT R2 K24 + 0x880C0310, // 0001 GETMBR R3 R1 K16 0x8C100149, // 0002 GETMET R4 R0 K73 0x5C180600, // 0003 MOVE R6 R3 0x7C100400, // 0004 CALL R4 2 diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h index 21d7cc39e..0c164f31d 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h +++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_lvh_root; -// compact class 'lvh_root' ktab size: 64, total: 95 (saved 248 bytes) -static const bvalue be_ktab_class_lvh_root[64] = { +// compact class 'lvh_root' ktab size: 66, total: 95 (saved 232 bytes) +static const bvalue be_ktab_class_lvh_root[66] = { /* K0 */ be_nested_str_weak(_text_rule_formula), /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28), /* K2 */ be_nested_str_weak(_X29), @@ -49,27 +49,29 @@ static const bvalue be_ktab_class_lvh_root[64] = { /* K40 */ be_nested_str_weak(post_init), /* K41 */ be_nested_str_weak(delete), /* K42 */ be_const_class(be_class_lvh_root), - /* K43 */ be_nested_str_weak(resize), - /* K44 */ be_nested_str_weak(remove_val_rule), - /* K45 */ be_nested_str_weak(_val_rule), - /* K46 */ be_nested_str_weak(tasmota), - /* K47 */ be_nested_str_weak(add_rule), - /* K48 */ be_const_int(0), - /* K49 */ be_nested_str_weak(_digit2part), - /* K50 */ be_nested_str_weak(_digit2state), - /* K51 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i), - /* K52 */ be_nested_str_weak(value_error), - /* K53 */ be_nested_str_weak(remove_rule), - /* K54 */ be_nested_str_weak(color), - /* K55 */ be_nested_str_weak(type_error), - /* K56 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27), - /* K57 */ be_nested_str_weak(get_text), - /* K58 */ be_nested_str_weak(_X23), - /* K59 */ be_nested_str_weak(introspect), - /* K60 */ be_nested_str_weak(COLOR_), - /* K61 */ be_nested_str_weak(toupper), - /* K62 */ be_nested_str_weak(get), - /* K63 */ be_nested_str_weak(remove_text_rule), + /* K43 */ be_const_int(1), + /* K44 */ be_nested_str_weak(resize), + /* K45 */ be_nested_str_weak(remove_val_rule), + /* K46 */ be_nested_str_weak(_val_rule), + /* K47 */ be_nested_str_weak(tasmota), + /* K48 */ be_nested_str_weak(add_rule), + /* K49 */ be_const_int(0), + /* K50 */ be_nested_str_weak(_digit2part), + /* K51 */ be_nested_str_weak(_digit2state), + /* K52 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i), + /* K53 */ be_nested_str_weak(value_error), + /* K54 */ be_nested_str_weak(remove_rule), + /* K55 */ be_nested_str_weak(color), + /* K56 */ be_nested_str_weak(type_error), + /* K57 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27), + /* K58 */ be_nested_str_weak(get_text), + /* K59 */ be_const_int(0), + /* K60 */ be_nested_str_weak(_X23), + /* K61 */ be_nested_str_weak(introspect), + /* K62 */ be_nested_str_weak(COLOR_), + /* K63 */ be_nested_str_weak(toupper), + /* K64 */ be_nested_str_weak(get), + /* K65 */ be_nested_str_weak(remove_text_rule), }; @@ -730,11 +732,11 @@ be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */ 0x20100914, // 000A NE R4 R4 K20 0x78120000, // 000B JMPF R4 #000D 0x70020001, // 000C JMP #000F - 0x000C0712, // 000D ADD R3 R3 K18 + 0x000C072B, // 000D ADD R3 R3 K43 0x7001FFF5, // 000E JMP #0005 0x24100714, // 000F GT R4 R3 K20 0x78120005, // 0010 JMPF R4 #0017 - 0x8C10012B, // 0011 GETMET R4 R0 K43 + 0x8C10012C, // 0011 GETMET R4 R0 K44 0x6018000C, // 0012 GETGBL R6 G12 0x5C1C0000, // 0013 MOVE R7 R0 0x7C180200, // 0014 CALL R6 1 @@ -789,15 +791,15 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ be_str_weak(set_val_rule), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x8C08012C, // 0000 GETMET R2 R0 K44 + 0x8C08012D, // 0000 GETMET R2 R0 K45 0x7C080200, // 0001 CALL R2 1 0x60080008, // 0002 GETGBL R2 G8 0x5C0C0200, // 0003 MOVE R3 R1 0x7C080200, // 0004 CALL R2 1 - 0x90025A02, // 0005 SETMBR R0 K45 R2 - 0xB80A5C00, // 0006 GETNGBL R2 K46 - 0x8C08052F, // 0007 GETMET R2 R2 K47 - 0x8810012D, // 0008 GETMBR R4 R0 K45 + 0x90025C02, // 0005 SETMBR R0 K46 R2 + 0xB80A5E00, // 0006 GETNGBL R2 K47 + 0x8C080530, // 0007 GETMET R2 R2 K48 + 0x8810012E, // 0008 GETMBR R4 R0 K46 0x84140000, // 0009 CLOSURE R5 P0 0x5C180000, // 000A MOVE R6 R0 0x7C080800, // 000B CALL R2 4 @@ -826,7 +828,7 @@ be_local_closure(class_lvh_root_get_val_rule, /* name */ be_str_weak(get_val_rule), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x8804012D, // 0000 GETMBR R1 R0 K45 + 0x8804012E, // 0000 GETMBR R1 R0 K46 0x80040200, // 0001 RET 1 R1 }) ) @@ -854,34 +856,34 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 - 0x80066000, // 0003 RET 1 K48 + 0x80066200, // 0003 RET 1 K49 0x540A0009, // 0004 LDINT R2 10 0x0C080202, // 0005 DIV R2 R1 R2 0x540E0009, // 0006 LDINT R3 10 0x10080403, // 0007 MOD R2 R2 R3 0x540E0009, // 0008 LDINT R3 10 0x100C0203, // 0009 MOD R3 R1 R3 - 0x58100030, // 000A LDCONST R4 K48 - 0x28140530, // 000B GE R5 R2 K48 + 0x58100031, // 000A LDCONST R4 K49 + 0x28140531, // 000B GE R5 R2 K49 0x78160008, // 000C JMPF R5 #0016 0x6014000C, // 000D GETGBL R5 G12 - 0x88180131, // 000E GETMBR R6 R0 K49 + 0x88180132, // 000E GETMBR R6 R0 K50 0x7C140200, // 000F CALL R5 1 0x14140405, // 0010 LT R5 R2 R5 0x78160003, // 0011 JMPF R5 #0016 - 0x88140131, // 0012 GETMBR R5 R0 K49 + 0x88140132, // 0012 GETMBR R5 R0 K50 0x94140A02, // 0013 GETIDX R5 R5 R2 0x30100805, // 0014 OR R4 R4 R5 0x70020000, // 0015 JMP #0017 0x4C100000, // 0016 LDNIL R4 - 0x28140730, // 0017 GE R5 R3 K48 + 0x28140731, // 0017 GE R5 R3 K49 0x78160008, // 0018 JMPF R5 #0022 0x6014000C, // 0019 GETGBL R5 G12 - 0x88180132, // 001A GETMBR R6 R0 K50 + 0x88180133, // 001A GETMBR R6 R0 K51 0x7C140200, // 001B CALL R5 1 0x14140605, // 001C LT R5 R3 R5 0x78160003, // 001D JMPF R5 #0022 - 0x88140132, // 001E GETMBR R5 R0 K50 + 0x88140133, // 001E GETMBR R5 R0 K51 0x94140A03, // 001F GETIDX R5 R5 R3 0x30100805, // 0020 OR R4 R4 R5 0x70020000, // 0021 JMP #0023 @@ -890,10 +892,10 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ 0x1C140805, // 0024 EQ R5 R4 R5 0x78160004, // 0025 JMPF R5 #002B 0x60140018, // 0026 GETGBL R5 G24 - 0x58180033, // 0027 LDCONST R6 K51 + 0x58180034, // 0027 LDCONST R6 K52 0x5C1C0200, // 0028 MOVE R7 R1 0x7C140400, // 0029 CALL R5 2 - 0xB0066805, // 002A RAISE 1 K52 R5 + 0xB0066A05, // 002A RAISE 1 K53 R5 0x80040800, // 002B RET 1 R4 }) ) @@ -946,13 +948,13 @@ be_local_closure(class_lvh_root_remove_val_rule, /* name */ be_str_weak(remove_val_rule), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x8804012D, // 0000 GETMBR R1 R0 K45 + 0x8804012E, // 0000 GETMBR R1 R0 K46 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060004, // 0003 JMPF R1 #0009 - 0xB8065C00, // 0004 GETNGBL R1 K46 - 0x8C040335, // 0005 GETMET R1 R1 K53 - 0x880C012D, // 0006 GETMBR R3 R0 K45 + 0xB8065E00, // 0004 GETNGBL R1 K47 + 0x8C040336, // 0005 GETMET R1 R1 K54 + 0x880C012E, // 0006 GETMBR R3 R0 K46 0x5C100000, // 0007 MOVE R4 R0 0x7C040600, // 0008 CALL R1 3 0x80000000, // 0009 RET 0 @@ -1033,7 +1035,7 @@ be_local_closure(class_lvh_root_is_color_attribute, /* name */ 0x60140008, // 0002 GETGBL R5 G8 0x5C180200, // 0003 MOVE R6 R1 0x7C140200, // 0004 CALL R5 1 - 0x58180036, // 0005 LDCONST R6 K54 + 0x58180037, // 0005 LDCONST R6 K55 0x7C0C0600, // 0006 CALL R3 3 0x80040600, // 0007 RET 1 R3 }) @@ -1084,7 +1086,7 @@ be_local_closure(class_lvh_root_set_delete, /* name */ be_str_weak(set_delete), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0xB0066F38, // 0000 RAISE 1 K55 K56 + 0xB0067139, // 0000 RAISE 1 K56 K57 0x80000000, // 0001 RET 0 }) ) @@ -1109,7 +1111,7 @@ be_local_closure(class_lvh_root_get_value_str, /* name */ be_str_weak(get_value_str), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040139, // 0000 GETMET R1 R0 K57 + 0x8C04013A, // 0000 GETMET R1 R0 K58 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -1239,11 +1241,11 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 0x5C000600, // 0005 MOVE R0 R3 - 0x940C0114, // 0006 GETIDX R3 R0 K20 - 0x1C0C073A, // 0007 EQ R3 R3 K58 + 0x940C013B, // 0006 GETIDX R3 R0 K59 + 0x1C0C073C, // 0007 EQ R3 R3 K60 0x780E0007, // 0008 JMPF R3 #0011 0xB80E1400, // 0009 GETNGBL R3 K10 - 0x8C0C0736, // 000A GETMET R3 R3 K54 + 0x8C0C0737, // 000A GETMET R3 R3 K55 0x5C140400, // 000B MOVE R5 R2 0x5C180000, // 000C MOVE R6 R0 0x7C140200, // 000D CALL R5 1 @@ -1251,12 +1253,12 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0x80040600, // 000F RET 1 R3 0x70020011, // 0010 JMP #0023 0xA40E1E00, // 0011 IMPORT R3 K15 - 0xA4127600, // 0012 IMPORT R4 K59 - 0x8C14073D, // 0013 GETMET R5 R3 K61 + 0xA4127A00, // 0012 IMPORT R4 K61 + 0x8C14073F, // 0013 GETMET R5 R3 K63 0x5C1C0000, // 0014 MOVE R7 R0 0x7C140400, // 0015 CALL R5 2 - 0x00167805, // 0016 ADD R5 K60 R5 - 0x8C18093E, // 0017 GETMET R6 R4 K62 + 0x00167C05, // 0016 ADD R5 K62 R5 + 0x8C180940, // 0017 GETMET R6 R4 K64 0xB8221400, // 0018 GETNGBL R8 K10 0x5C240A00, // 0019 MOVE R9 R5 0x7C180600, // 001A CALL R6 3 @@ -1264,13 +1266,13 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0x201C0C07, // 001C NE R7 R6 R7 0x781E0004, // 001D JMPF R7 #0023 0xB81E1400, // 001E GETNGBL R7 K10 - 0x8C1C0F36, // 001F GETMET R7 R7 K54 + 0x8C1C0F37, // 001F GETMET R7 R7 K55 0x5C240C00, // 0020 MOVE R9 R6 0x7C1C0400, // 0021 CALL R7 2 0x80040E00, // 0022 RET 1 R7 0xB80E1400, // 0023 GETNGBL R3 K10 - 0x8C0C0736, // 0024 GETMET R3 R3 K54 - 0x58140014, // 0025 LDCONST R5 K20 + 0x8C0C0737, // 0024 GETMET R3 R3 K55 + 0x5814003B, // 0025 LDCONST R5 K59 0x7C0C0400, // 0026 CALL R3 2 0x80040600, // 0027 RET 1 R3 }) @@ -1325,8 +1327,8 @@ be_local_closure(class_lvh_root_remove_text_rule, /* name */ 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060004, // 0003 JMPF R1 #0009 - 0xB8065C00, // 0004 GETNGBL R1 K46 - 0x8C040335, // 0005 GETMET R1 R1 K53 + 0xB8065E00, // 0004 GETNGBL R1 K47 + 0x8C040336, // 0005 GETMET R1 R1 K54 0x880C0105, // 0006 GETMBR R3 R0 K5 0x5C100000, // 0007 MOVE R4 R0 0x7C040600, // 0008 CALL R1 3 @@ -1431,14 +1433,14 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */ be_str_weak(set_text_rule), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x8C08013F, // 0000 GETMET R2 R0 K63 + 0x8C080141, // 0000 GETMET R2 R0 K65 0x7C080200, // 0001 CALL R2 1 0x60080008, // 0002 GETGBL R2 G8 0x5C0C0200, // 0003 MOVE R3 R1 0x7C080200, // 0004 CALL R2 1 0x90020A02, // 0005 SETMBR R0 K5 R2 - 0xB80A5C00, // 0006 GETNGBL R2 K46 - 0x8C08052F, // 0007 GETMET R2 R2 K47 + 0xB80A5E00, // 0006 GETNGBL R2 K47 + 0x8C080530, // 0007 GETMET R2 R2 K48 0x88100105, // 0008 GETMBR R4 R0 K5 0x84140000, // 0009 CLOSURE R5 P0 0x5C180000, // 000A MOVE R6 R0 @@ -1554,8 +1556,8 @@ be_local_class(lvh_root, })), be_str_weak(lvh_root) ); -// compact class 'lvh_obj' ktab size: 139, total: 284 (saved 1160 bytes) -static const bvalue be_ktab_class_lvh_obj[139] = { +// compact class 'lvh_obj' ktab size: 141, total: 284 (saved 1144 bytes) +static const bvalue be_ktab_class_lvh_obj[141] = { /* K0 */ be_nested_str_weak(_lv_part2_selector), /* K1 */ be_nested_str_weak(_lv_obj), /* K2 */ be_nested_str_weak(set_style_pad_bottom), @@ -1620,54 +1622,54 @@ static const bvalue be_ktab_class_lvh_obj[139] = { /* K61 */ be_nested_str_weak(EVENT_CLICKED), /* K62 */ be_nested_str_weak(tasmota), /* K63 */ be_nested_str_weak(set_timer), - /* K64 */ be_nested_str_weak(_event_map), - /* K65 */ be_nested_str_weak(find), - /* K66 */ be_nested_str_weak(json), - /* K67 */ be_nested_str_weak(EVENT_VALUE_CHANGED), - /* K68 */ be_nested_str_weak(val), - /* K69 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s), - /* K70 */ be_nested_str_weak(dump), - /* K71 */ be_nested_str_weak(text), - /* K72 */ be_nested_str_weak(_X2C_X22text_X22_X3A), - /* K73 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D), - /* K74 */ be_nested_str_weak(_page_id), - /* K75 */ be_nested_str_weak(init), - /* K76 */ be_nested_str_weak(has_state), - /* K77 */ be_nested_str_weak(STATE_DISABLED), - /* K78 */ be_nested_str_weak(get_enabled), - /* K79 */ be_nested_str_weak(get_long_mode), - /* K80 */ be_nested_str_weak(OBJ_FLAG_HIDDEN), - /* K81 */ be_nested_str_weak(set_text_font), - /* K82 */ be_nested_str_weak(get_text_font), - /* K83 */ be_nested_str_weak(_val), - /* K84 */ be_nested_str_weak(set_value), - /* K85 */ be_nested_str_weak(set_style_text_color), - /* K86 */ be_nested_str_weak(parse_color), - /* K87 */ be_nested_str_weak(get_style_radius), - /* K88 */ be_nested_str_weak(set_style_pad_right), - /* K89 */ be_nested_str_weak(expand), - /* K90 */ be_nested_str_weak(set_width), - /* K91 */ be_nested_str_weak(SIZE_CONTENT), - /* K92 */ be_nested_str_weak(break), - /* K93 */ be_nested_str_weak(LABEL_LONG_WRAP), - /* K94 */ be_nested_str_weak(dots), - /* K95 */ be_nested_str_weak(LABEL_LONG_DOT), - /* K96 */ be_nested_str_weak(scroll), - /* K97 */ be_nested_str_weak(LABEL_LONG_SCROLL), - /* K98 */ be_nested_str_weak(loop), - /* K99 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR), - /* K100 */ be_nested_str_weak(crop), - /* K101 */ be_nested_str_weak(LABEL_LONG_CLIP), - /* K102 */ be_nested_str_weak(set_long_mode), - /* K103 */ be_nested_str_weak(startswith), - /* K104 */ be_nested_str_weak(set_), - /* K105 */ be_nested_str_weak(get_), - /* K106 */ be_nested_str_weak(real), - /* K107 */ be_nested_str_weak(math), - /* K108 */ be_nested_str_weak(round), - /* K109 */ be_nested_str_weak(endswith), - /* K110 */ be_nested_str_weak(_X25), - /* K111 */ be_const_int(0), + /* K64 */ be_const_int(0), + /* K65 */ be_nested_str_weak(_event_map), + /* K66 */ be_nested_str_weak(find), + /* K67 */ be_nested_str_weak(json), + /* K68 */ be_nested_str_weak(EVENT_VALUE_CHANGED), + /* K69 */ be_nested_str_weak(val), + /* K70 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s), + /* K71 */ be_nested_str_weak(dump), + /* K72 */ be_nested_str_weak(text), + /* K73 */ be_nested_str_weak(_X2C_X22text_X22_X3A), + /* K74 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D), + /* K75 */ be_nested_str_weak(_page_id), + /* K76 */ be_nested_str_weak(init), + /* K77 */ be_nested_str_weak(has_state), + /* K78 */ be_nested_str_weak(STATE_DISABLED), + /* K79 */ be_nested_str_weak(get_enabled), + /* K80 */ be_nested_str_weak(get_long_mode), + /* K81 */ be_nested_str_weak(OBJ_FLAG_HIDDEN), + /* K82 */ be_nested_str_weak(set_text_font), + /* K83 */ be_nested_str_weak(get_text_font), + /* K84 */ be_nested_str_weak(_val), + /* K85 */ be_nested_str_weak(set_value), + /* K86 */ be_nested_str_weak(set_style_text_color), + /* K87 */ be_nested_str_weak(parse_color), + /* K88 */ be_nested_str_weak(get_style_radius), + /* K89 */ be_nested_str_weak(set_style_pad_right), + /* K90 */ be_nested_str_weak(expand), + /* K91 */ be_nested_str_weak(set_width), + /* K92 */ be_nested_str_weak(SIZE_CONTENT), + /* K93 */ be_nested_str_weak(break), + /* K94 */ be_nested_str_weak(LABEL_LONG_WRAP), + /* K95 */ be_nested_str_weak(dots), + /* K96 */ be_nested_str_weak(LABEL_LONG_DOT), + /* K97 */ be_nested_str_weak(scroll), + /* K98 */ be_nested_str_weak(LABEL_LONG_SCROLL), + /* K99 */ be_nested_str_weak(loop), + /* K100 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR), + /* K101 */ be_nested_str_weak(crop), + /* K102 */ be_nested_str_weak(LABEL_LONG_CLIP), + /* K103 */ be_nested_str_weak(set_long_mode), + /* K104 */ be_nested_str_weak(startswith), + /* K105 */ be_nested_str_weak(set_), + /* K106 */ be_nested_str_weak(get_), + /* K107 */ be_nested_str_weak(real), + /* K108 */ be_nested_str_weak(math), + /* K109 */ be_nested_str_weak(round), + /* K110 */ be_nested_str_weak(endswith), + /* K111 */ be_nested_str_weak(_X25), /* K112 */ be_nested_str_weak(pct), /* K113 */ be_const_int(3), /* K114 */ be_nested_str_weak(byte), @@ -1683,18 +1685,20 @@ static const bvalue be_ktab_class_lvh_obj[139] = { /* K124 */ be_nested_str_weak(get_style_text_align), /* K125 */ be_nested_str_weak(get_style_pad_left), /* K126 */ be_nested_str_weak(set_x), - /* K127 */ be_nested_str_weak(get_style_), - /* K128 */ be_nested_str_weak(undefined), - /* K129 */ be_nested_str_weak(set_y), - /* K130 */ be_nested_str_weak(set_style_radius), - /* K131 */ be_nested_str_weak(keys), - /* K132 */ be_nested_str_weak(register_event), - /* K133 */ be_nested_str_weak(stop_iteration), - /* K134 */ be_nested_str_weak(parse_font), - /* K135 */ be_nested_str_weak(set_style_text_font), - /* K136 */ be_nested_str_weak(get_style_pad_bottom), - /* K137 */ be_nested_str_weak(get_value), - /* K138 */ be_nested_str_weak(register_event_cb), + /* K127 */ be_const_int(3), + /* K128 */ be_const_int(0), + /* K129 */ be_nested_str_weak(get_style_), + /* K130 */ be_nested_str_weak(undefined), + /* K131 */ be_nested_str_weak(set_y), + /* K132 */ be_nested_str_weak(set_style_radius), + /* K133 */ be_nested_str_weak(keys), + /* K134 */ be_nested_str_weak(register_event), + /* K135 */ be_nested_str_weak(stop_iteration), + /* K136 */ be_nested_str_weak(parse_font), + /* K137 */ be_nested_str_weak(set_style_text_font), + /* K138 */ be_nested_str_weak(get_style_pad_bottom), + /* K139 */ be_nested_str_weak(get_value), + /* K140 */ be_nested_str_weak(register_event_cb), }; @@ -2620,40 +2624,40 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ 0x78120004, // 000A JMPF R4 #0010 0xB8127C00, // 000B GETNGBL R4 K62 0x8C10093F, // 000C GETMET R4 R4 K63 - 0x58180016, // 000D LDCONST R6 K22 + 0x58180040, // 000D LDCONST R6 K64 0x841C0000, // 000E CLOSURE R7 P0 0x7C100600, // 000F CALL R4 3 - 0x88100140, // 0010 GETMBR R4 R0 K64 - 0x8C100941, // 0011 GETMET R4 R4 K65 + 0x88100141, // 0010 GETMBR R4 R0 K65 + 0x8C100942, // 0011 GETMET R4 R4 K66 0x5C180600, // 0012 MOVE R6 R3 0x7C100400, // 0013 CALL R4 2 0x4C140000, // 0014 LDNIL R5 0x20140805, // 0015 NE R5 R4 R5 0x7816002E, // 0016 JMPF R5 #0046 - 0xA4168400, // 0017 IMPORT R5 K66 + 0xA4168600, // 0017 IMPORT R5 K67 0x58180024, // 0018 LDCONST R6 K36 0xB81E0600, // 0019 GETNGBL R7 K3 - 0x881C0F43, // 001A GETMBR R7 R7 K67 + 0x881C0F44, // 001A GETMBR R7 R7 K68 0x1C1C0607, // 001B EQ R7 R3 R7 0x781E001A, // 001C JMPF R7 #0038 0xA8020015, // 001D EXBLK 0 #0034 - 0x881C0144, // 001E GETMBR R7 R0 K68 + 0x881C0145, // 001E GETMBR R7 R0 K69 0x4C200000, // 001F LDNIL R8 0x20200E08, // 0020 NE R8 R7 R8 0x78220006, // 0021 JMPF R8 #0029 0x60200018, // 0022 GETGBL R8 G24 - 0x58240045, // 0023 LDCONST R9 K69 - 0x8C280B46, // 0024 GETMET R10 R5 K70 + 0x58240046, // 0023 LDCONST R9 K70 + 0x8C280B47, // 0024 GETMET R10 R5 K71 0x5C300E00, // 0025 MOVE R12 R7 0x7C280400, // 0026 CALL R10 2 0x7C200400, // 0027 CALL R8 2 0x5C181000, // 0028 MOVE R6 R8 - 0x88200147, // 0029 GETMBR R8 R0 K71 + 0x88200148, // 0029 GETMBR R8 R0 K72 0x4C240000, // 002A LDNIL R9 0x20241009, // 002B NE R9 R8 R9 0x78260004, // 002C JMPF R9 #0032 - 0x00180D48, // 002D ADD R6 R6 K72 - 0x8C240B46, // 002E GETMET R9 R5 K70 + 0x00180D49, // 002D ADD R6 R6 K73 + 0x8C240B47, // 002E GETMET R9 R5 K71 0x5C2C1000, // 002F MOVE R11 R8 0x7C240400, // 0030 CALL R9 2 0x00180C09, // 0031 ADD R6 R6 R9 @@ -2664,16 +2668,16 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ 0x70020000, // 0036 JMP #0038 0xB0080000, // 0037 RAISE 2 R0 R0 0x601C0018, // 0038 GETGBL R7 G24 - 0x58200049, // 0039 LDCONST R8 K73 + 0x5820004A, // 0039 LDCONST R8 K74 0x88240132, // 003A GETMBR R9 R0 K50 - 0x8824134A, // 003B GETMBR R9 R9 K74 + 0x8824134B, // 003B GETMBR R9 R9 K75 0x88280134, // 003C GETMBR R10 R0 K52 0x5C2C0800, // 003D MOVE R11 R4 0x5C300C00, // 003E MOVE R12 R6 0x7C1C0A00, // 003F CALL R7 5 0xB8227C00, // 0040 GETNGBL R8 K62 0x8C20113F, // 0041 GETMET R8 R8 K63 - 0x58280016, // 0042 LDCONST R10 K22 + 0x58280040, // 0042 LDCONST R10 K64 0x842C0001, // 0043 CLOSURE R11 P1 0x7C200600, // 0044 CALL R8 3 0xA0140000, // 0045 CLOSE R5 @@ -2705,7 +2709,7 @@ be_local_closure(class_lvh_obj_init, /* name */ 0x60180003, // 0000 GETGBL R6 G3 0x5C1C0000, // 0001 MOVE R7 R0 0x7C180200, // 0002 CALL R6 1 - 0x8C180D4B, // 0003 GETMET R6 R6 K75 + 0x8C180D4C, // 0003 GETMET R6 R6 K76 0x5C200200, // 0004 MOVE R8 R1 0x5C240400, // 0005 MOVE R9 R2 0x5C280600, // 0006 MOVE R10 R3 @@ -2737,9 +2741,9 @@ be_local_closure(class_lvh_obj_get_enabled, /* name */ &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C04034C, // 0001 GETMET R1 R1 K76 + 0x8C04034D, // 0001 GETMET R1 R1 K77 0xB80E0600, // 0002 GETNGBL R3 K3 - 0x880C074D, // 0003 GETMBR R3 R3 K77 + 0x880C074E, // 0003 GETMBR R3 R3 K78 0x7C040400, // 0004 CALL R1 2 0x78060000, // 0005 JMPF R1 #0007 0x50040001, // 0006 LDBOOL R1 0 1 @@ -2768,7 +2772,7 @@ be_local_closure(class_lvh_obj_get_click, /* name */ be_str_weak(get_click), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04014E, // 0000 GETMET R1 R0 K78 + 0x8C04014F, // 0000 GETMET R1 R0 K79 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -2799,7 +2803,7 @@ be_local_closure(class_lvh_obj_get_label_mode, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060003, // 0003 JMPF R1 #0008 0x88040111, // 0004 GETMBR R1 R0 K17 - 0x8C04034F, // 0005 GETMET R1 R1 K79 + 0x8C040350, // 0005 GETMET R1 R1 K80 0x7C040200, // 0006 CALL R1 1 0x80040200, // 0007 RET 1 R1 0x80000000, // 0008 RET 0 @@ -2827,7 +2831,7 @@ be_local_closure(class_lvh_obj_get_toggle, /* name */ &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C04034C, // 0001 GETMET R1 R1 K76 + 0x8C04034D, // 0001 GETMET R1 R1 K77 0xB80E0600, // 0002 GETNGBL R3 K3 0x880C070A, // 0003 GETMBR R3 R3 K10 0x7C040400, // 0004 CALL R1 2 @@ -2858,7 +2862,7 @@ be_local_closure(class_lvh_obj_get_hidden, /* name */ 0x88040101, // 0000 GETMBR R1 R0 K1 0x8C04030F, // 0001 GETMET R1 R1 K15 0xB80E0600, // 0002 GETNGBL R3 K3 - 0x880C0750, // 0003 GETMBR R3 R3 K80 + 0x880C0751, // 0003 GETMBR R3 R3 K81 0x7C040400, // 0004 CALL R1 2 0x80040200, // 0005 RET 1 R1 }) @@ -2884,7 +2888,7 @@ be_local_closure(class_lvh_obj_set_value_font, /* name */ be_str_weak(set_value_font), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C080151, // 0000 GETMET R2 R0 K81 + 0x8C080152, // 0000 GETMET R2 R0 K82 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x80000000, // 0003 RET 0 @@ -2911,7 +2915,7 @@ be_local_closure(class_lvh_obj_get_value_font, /* name */ be_str_weak(get_value_font), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040152, // 0000 GETMET R1 R0 K82 + 0x8C040153, // 0000 GETMET R1 R0 K83 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -2938,14 +2942,14 @@ be_local_closure(class_lvh_obj_set_val, /* name */ &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0xA40A4E00, // 0000 IMPORT R2 K39 - 0x9002A601, // 0001 SETMBR R0 K83 R1 + 0x9002A801, // 0001 SETMBR R0 K84 R1 0x8C0C0528, // 0002 GETMET R3 R2 K40 0x88140101, // 0003 GETMBR R5 R0 K1 - 0x58180054, // 0004 LDCONST R6 K84 + 0x58180055, // 0004 LDCONST R6 K85 0x7C0C0600, // 0005 CALL R3 3 0x780E0003, // 0006 JMPF R3 #000B 0x880C0101, // 0007 GETMBR R3 R0 K1 - 0x8C0C0754, // 0008 GETMET R3 R3 K84 + 0x8C0C0755, // 0008 GETMET R3 R3 K85 0x5C140200, // 0009 MOVE R5 R1 0x7C0C0400, // 000A CALL R3 2 0x80000000, // 000B RET 0 @@ -2973,8 +2977,8 @@ be_local_closure(class_lvh_obj_set_text_color, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x880C0101, // 0000 GETMBR R3 R0 K1 - 0x8C0C0755, // 0001 GETMET R3 R3 K85 - 0x8C140156, // 0002 GETMET R5 R0 K86 + 0x8C0C0756, // 0001 GETMET R3 R3 K86 + 0x8C140157, // 0002 GETMET R5 R0 K87 0x5C1C0200, // 0003 MOVE R7 R1 0x7C140400, // 0004 CALL R5 2 0x5C180400, // 0005 MOVE R6 R2 @@ -3036,7 +3040,7 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040357, // 0005 GETMET R1 R1 K87 + 0x8C040358, // 0005 GETMET R1 R1 K88 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -3072,7 +3076,7 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080558, // 0005 GETMET R2 R2 K88 + 0x8C080559, // 0005 GETMET R2 R2 K89 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -3106,45 +3110,45 @@ be_local_closure(class_lvh_obj_set_label_mode, /* name */ &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ 0x4C080000, // 0000 LDNIL R2 - 0x1C0C0359, // 0001 EQ R3 R1 K89 + 0x1C0C035A, // 0001 EQ R3 R1 K90 0x780E0005, // 0002 JMPF R3 #0009 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x8C0C075A, // 0004 GETMET R3 R3 K90 + 0x8C0C075B, // 0004 GETMET R3 R3 K91 0xB8160600, // 0005 GETNGBL R5 K3 - 0x88140B5B, // 0006 GETMBR R5 R5 K91 + 0x88140B5C, // 0006 GETMBR R5 R5 K92 0x7C0C0400, // 0007 CALL R3 2 0x70020017, // 0008 JMP #0021 - 0x1C0C035C, // 0009 EQ R3 R1 K92 + 0x1C0C035D, // 0009 EQ R3 R1 K93 0x780E0002, // 000A JMPF R3 #000E 0xB80E0600, // 000B GETNGBL R3 K3 - 0x8808075D, // 000C GETMBR R2 R3 K93 + 0x8808075E, // 000C GETMBR R2 R3 K94 0x70020012, // 000D JMP #0021 - 0x1C0C035E, // 000E EQ R3 R1 K94 + 0x1C0C035F, // 000E EQ R3 R1 K95 0x780E0002, // 000F JMPF R3 #0013 0xB80E0600, // 0010 GETNGBL R3 K3 - 0x8808075F, // 0011 GETMBR R2 R3 K95 + 0x88080760, // 0011 GETMBR R2 R3 K96 0x7002000D, // 0012 JMP #0021 - 0x1C0C0360, // 0013 EQ R3 R1 K96 + 0x1C0C0361, // 0013 EQ R3 R1 K97 0x780E0002, // 0014 JMPF R3 #0018 0xB80E0600, // 0015 GETNGBL R3 K3 - 0x88080761, // 0016 GETMBR R2 R3 K97 + 0x88080762, // 0016 GETMBR R2 R3 K98 0x70020008, // 0017 JMP #0021 - 0x1C0C0362, // 0018 EQ R3 R1 K98 + 0x1C0C0363, // 0018 EQ R3 R1 K99 0x780E0002, // 0019 JMPF R3 #001D 0xB80E0600, // 001A GETNGBL R3 K3 - 0x88080763, // 001B GETMBR R2 R3 K99 + 0x88080764, // 001B GETMBR R2 R3 K100 0x70020003, // 001C JMP #0021 - 0x1C0C0364, // 001D EQ R3 R1 K100 + 0x1C0C0365, // 001D EQ R3 R1 K101 0x780E0001, // 001E JMPF R3 #0021 0xB80E0600, // 001F GETNGBL R3 K3 - 0x88080765, // 0020 GETMBR R2 R3 K101 + 0x88080766, // 0020 GETMBR R2 R3 K102 0x4C0C0000, // 0021 LDNIL R3 0x200C0403, // 0022 NE R3 R2 R3 0x780E0005, // 0023 JMPF R3 #002A 0x8C0C0114, // 0024 GETMET R3 R0 K20 0x7C0C0200, // 0025 CALL R3 1 0x880C0111, // 0026 GETMBR R3 R0 K17 - 0x8C0C0766, // 0027 GETMET R3 R3 K102 + 0x8C0C0767, // 0027 GETMET R3 R3 K103 0x5C140400, // 0028 MOVE R5 R2 0x7C0C0400, // 0029 CALL R3 2 0x80000000, // 002A RET 0 @@ -3173,36 +3177,36 @@ be_local_closure(class_lvh_obj_setmember, /* name */ ( &(const binstruction[164]) { /* code */ 0xA40E0A00, // 0000 IMPORT R3 K5 0xA4124E00, // 0001 IMPORT R4 K39 - 0x8C140767, // 0002 GETMET R5 R3 K103 + 0x8C140768, // 0002 GETMET R5 R3 K104 0x5C1C0200, // 0003 MOVE R7 R1 - 0x58200068, // 0004 LDCONST R8 K104 + 0x58200069, // 0004 LDCONST R8 K105 0x7C140600, // 0005 CALL R5 3 0x74160004, // 0006 JMPT R5 #000C - 0x8C140767, // 0007 GETMET R5 R3 K103 + 0x8C140768, // 0007 GETMET R5 R3 K104 0x5C1C0200, // 0008 MOVE R7 R1 - 0x58200069, // 0009 LDCONST R8 K105 + 0x5820006A, // 0009 LDCONST R8 K106 0x7C140600, // 000A CALL R5 3 0x78160000, // 000B JMPF R5 #000D 0x80000A00, // 000C RET 0 0x60140004, // 000D GETGBL R5 G4 0x5C180400, // 000E MOVE R6 R2 0x7C140200, // 000F CALL R5 1 - 0x1C140B6A, // 0010 EQ R5 R5 K106 + 0x1C140B6B, // 0010 EQ R5 R5 K107 0x78160006, // 0011 JMPF R5 #0019 - 0xA416D600, // 0012 IMPORT R5 K107 + 0xA416D800, // 0012 IMPORT R5 K108 0x60180009, // 0013 GETGBL R6 G9 - 0x8C1C0B6C, // 0014 GETMET R7 R5 K108 + 0x8C1C0B6D, // 0014 GETMET R7 R5 K109 0x5C240400, // 0015 MOVE R9 R2 0x7C1C0400, // 0016 CALL R7 2 0x7C180200, // 0017 CALL R6 1 0x5C080C00, // 0018 MOVE R2 R6 - 0x8C14076D, // 0019 GETMET R5 R3 K109 + 0x8C14076E, // 0019 GETMET R5 R3 K110 0x5C1C0200, // 001A MOVE R7 R1 - 0x5820006E, // 001B LDCONST R8 K110 + 0x5820006F, // 001B LDCONST R8 K111 0x7C140600, // 001C CALL R5 3 0x78160009, // 001D JMPF R5 #0028 0x5415FFFD, // 001E LDINT R5 -2 - 0x4016DE05, // 001F CONNECT R5 K111 R5 + 0x40168005, // 001F CONNECT R5 K64 R5 0x94040205, // 0020 GETIDX R1 R1 R5 0xB8160600, // 0021 GETNGBL R5 K3 0x8C140B70, // 0022 GETMET R5 R5 K112 @@ -3243,14 +3247,14 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x94240209, // 0045 GETIDX R9 R1 R9 0x7C200200, // 0046 CALL R8 1 0x5425FFFC, // 0047 LDINT R9 -3 - 0x4026DE09, // 0048 CONNECT R9 K111 R9 + 0x40268009, // 0048 CONNECT R9 K64 R9 0x94040209, // 0049 GETIDX R1 R1 R9 0x8C240174, // 004A GETMET R9 R0 K116 0x5C2C1000, // 004B MOVE R11 R8 0x7C240400, // 004C CALL R9 2 0x5C141200, // 004D MOVE R5 R9 0x88180175, // 004E GETMBR R6 R0 K117 - 0x8C180D41, // 004F GETMET R6 R6 K65 + 0x8C180D42, // 004F GETMET R6 R6 K66 0x5C200200, // 0050 MOVE R8 R1 0x7C180400, // 0051 CALL R6 2 0x4C1C0000, // 0052 LDNIL R7 @@ -3259,7 +3263,7 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x80000C00, // 0055 RET 0 0x8C180976, // 0056 GETMET R6 R4 K118 0x5C200000, // 0057 MOVE R8 R0 - 0x0026D001, // 0058 ADD R9 K104 R1 + 0x0026D201, // 0058 ADD R9 K105 R1 0x7C180600, // 0059 CALL R6 3 0x601C0004, // 005A GETGBL R7 G4 0x5C200C00, // 005B MOVE R8 R6 @@ -3274,11 +3278,11 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x782A0001, // 0064 JMPF R10 #0067 0x5C280A00, // 0065 MOVE R10 R5 0x70020000, // 0066 JMP #0068 - 0x5828006F, // 0067 LDCONST R10 K111 + 0x58280040, // 0067 LDCONST R10 K64 0x7C1C0600, // 0068 CALL R7 3 0x80000E00, // 0069 RET 0 0x881C0178, // 006A GETMBR R7 R0 K120 - 0x8C1C0F41, // 006B GETMET R7 R7 K65 + 0x8C1C0F42, // 006B GETMET R7 R7 K66 0x5C240200, // 006C MOVE R9 R1 0x5C280200, // 006D MOVE R10 R1 0x7C1C0600, // 006E CALL R7 3 @@ -3287,7 +3291,7 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x5C240200, // 0071 MOVE R9 R1 0x7C1C0400, // 0072 CALL R7 2 0x781E0003, // 0073 JMPF R7 #0078 - 0x8C1C0156, // 0074 GETMET R7 R0 K86 + 0x8C1C0157, // 0074 GETMET R7 R0 K87 0x5C240400, // 0075 MOVE R9 R2 0x7C1C0400, // 0076 CALL R7 2 0x5C080E00, // 0077 MOVE R2 R7 @@ -3296,7 +3300,7 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x781E000E, // 007A JMPF R7 #008A 0x8C1C0976, // 007B GETMET R7 R4 K118 0x88240101, // 007C GETMBR R9 R0 K1 - 0x002AD001, // 007D ADD R10 K104 R1 + 0x002AD201, // 007D ADD R10 K105 R1 0x7C1C0600, // 007E CALL R7 3 0x5C180E00, // 007F MOVE R6 R7 0x601C0004, // 0080 GETGBL R7 G4 @@ -3327,7 +3331,7 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x782A0001, // 0099 JMPF R10 #009C 0x5C280A00, // 009A MOVE R10 R5 0x70020000, // 009B JMP #009D - 0x5828006F, // 009C LDCONST R10 K111 + 0x58280040, // 009C LDCONST R10 K64 0x7C1C0600, // 009D CALL R7 3 0x80040E00, // 009E RET 1 R7 0x601C0001, // 009F GETGBL R7 G1 @@ -3362,13 +3366,13 @@ be_local_closure(class_lvh_obj_set_enabled, /* name */ 0x88080101, // 0001 GETMBR R2 R0 K1 0x8C08050B, // 0002 GETMET R2 R2 K11 0xB8120600, // 0003 GETNGBL R4 K3 - 0x8810094D, // 0004 GETMBR R4 R4 K77 + 0x8810094E, // 0004 GETMBR R4 R4 K78 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C 0x88080101, // 0007 GETMBR R2 R0 K1 0x8C080509, // 0008 GETMET R2 R2 K9 0xB8120600, // 0009 GETNGBL R4 K3 - 0x8810094D, // 000A GETMBR R4 R4 K77 + 0x8810094E, // 000A GETMBR R4 R4 K78 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -3394,9 +3398,9 @@ be_local_closure(class_lvh_obj_get_align, /* name */ be_str_weak(get_align), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x1C080316, // 0000 EQ R2 R1 K22 + 0x1C080340, // 0000 EQ R2 R1 K64 0x780A0000, // 0001 JMPF R2 #0003 - 0x58040016, // 0002 LDCONST R1 K22 + 0x58040040, // 0002 LDCONST R1 K64 0x88080111, // 0003 GETMBR R2 R0 K17 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 @@ -3556,14 +3560,14 @@ be_local_closure(class_lvh_obj_member, /* name */ ( &(const binstruction[125]) { /* code */ 0xA40A0A00, // 0000 IMPORT R2 K5 0xA40E4E00, // 0001 IMPORT R3 K39 - 0x8C100567, // 0002 GETMET R4 R2 K103 + 0x8C100568, // 0002 GETMET R4 R2 K104 0x5C180200, // 0003 MOVE R6 R1 - 0x581C0068, // 0004 LDCONST R7 K104 + 0x581C0069, // 0004 LDCONST R7 K105 0x7C100600, // 0005 CALL R4 3 0x74120004, // 0006 JMPT R4 #000C - 0x8C100567, // 0007 GETMET R4 R2 K103 + 0x8C100568, // 0007 GETMET R4 R2 K104 0x5C180200, // 0008 MOVE R6 R1 - 0x581C0069, // 0009 LDCONST R7 K105 + 0x581C006A, // 0009 LDCONST R7 K106 0x7C100600, // 000A CALL R4 3 0x78120000, // 000B JMPF R4 #000D 0x80000800, // 000C RET 0 @@ -3571,7 +3575,7 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x6014000C, // 000E GETGBL R5 G12 0x5C180200, // 000F MOVE R6 R1 0x7C140200, // 0010 CALL R5 1 - 0x28140B71, // 0011 GE R5 R5 K113 + 0x28140B7F, // 0011 GE R5 R5 K127 0x7816001F, // 0012 JMPF R5 #0033 0x8C140572, // 0013 GETMET R5 R2 K114 0x541DFFFE, // 0014 LDINT R7 -1 @@ -3599,14 +3603,14 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x94200208, // 002A GETIDX R8 R1 R8 0x7C1C0200, // 002B CALL R7 1 0x5421FFFC, // 002C LDINT R8 -3 - 0x40222C08, // 002D CONNECT R8 K22 R8 + 0x40230008, // 002D CONNECT R8 K128 R8 0x94040208, // 002E GETIDX R1 R1 R8 0x8C200174, // 002F GETMET R8 R0 K116 0x5C280E00, // 0030 MOVE R10 R7 0x7C200400, // 0031 CALL R8 2 0x5C101000, // 0032 MOVE R4 R8 0x88140175, // 0033 GETMBR R5 R0 K117 - 0x8C140B41, // 0034 GETMET R5 R5 K65 + 0x8C140B42, // 0034 GETMET R5 R5 K66 0x5C1C0200, // 0035 MOVE R7 R1 0x7C140400, // 0036 CALL R5 2 0x4C180000, // 0037 LDNIL R6 @@ -3615,7 +3619,7 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x80000A00, // 003A RET 0 0x8C140776, // 003B GETMET R5 R3 K118 0x5C1C0000, // 003C MOVE R7 R0 - 0x0022D201, // 003D ADD R8 K105 R1 + 0x0022D401, // 003D ADD R8 K106 R1 0x7C140600, // 003E CALL R5 3 0x60180004, // 003F GETGBL R6 G4 0x5C1C0A00, // 0040 MOVE R7 R5 @@ -3629,11 +3633,11 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x78220001, // 0048 JMPF R8 #004B 0x5C200800, // 0049 MOVE R8 R4 0x70020000, // 004A JMP #004C - 0x58200016, // 004B LDCONST R8 K22 + 0x58200080, // 004B LDCONST R8 K128 0x7C180400, // 004C CALL R6 2 0x80040C00, // 004D RET 1 R6 0x88180178, // 004E GETMBR R6 R0 K120 - 0x8C180D41, // 004F GETMET R6 R6 K65 + 0x8C180D42, // 004F GETMET R6 R6 K66 0x5C200200, // 0050 MOVE R8 R1 0x5C240200, // 0051 MOVE R9 R1 0x7C180600, // 0052 CALL R6 3 @@ -3643,7 +3647,7 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x781A000D, // 0056 JMPF R6 #0065 0x8C180776, // 0057 GETMET R6 R3 K118 0x88200101, // 0058 GETMBR R8 R0 K1 - 0x0026D201, // 0059 ADD R9 K105 R1 + 0x0026D401, // 0059 ADD R9 K106 R1 0x7C180600, // 005A CALL R6 3 0x5C140C00, // 005B MOVE R5 R6 0x60180004, // 005C GETGBL R6 G4 @@ -3657,7 +3661,7 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x80040C00, // 0064 RET 1 R6 0x8C180776, // 0065 GETMET R6 R3 K118 0x88200101, // 0066 GETMBR R8 R0 K1 - 0x0026FE01, // 0067 ADD R9 K127 R1 + 0x00270201, // 0067 ADD R9 K129 R1 0x7C180600, // 0068 CALL R6 3 0x5C140C00, // 0069 MOVE R5 R6 0x60180004, // 006A GETGBL R6 G4 @@ -3672,11 +3676,11 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x78220001, // 0073 JMPF R8 #0076 0x5C200800, // 0074 MOVE R8 R4 0x70020000, // 0075 JMP #0077 - 0x58200016, // 0076 LDCONST R8 K22 + 0x58200080, // 0076 LDCONST R8 K128 0x7C180400, // 0077 CALL R6 2 0x80040C00, // 0078 RET 1 R6 0x6018000B, // 0079 GETGBL R6 G11 - 0x581C0080, // 007A LDCONST R7 K128 + 0x581C0082, // 007A LDCONST R7 K130 0x7C180200, // 007B CALL R6 1 0x80040C00, // 007C RET 1 R6 }) @@ -3729,7 +3733,7 @@ be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */ 0x8C080114, // 0000 GETMET R2 R0 K20 0x7C080200, // 0001 CALL R2 1 0x88080111, // 0002 GETMBR R2 R0 K17 - 0x8C080581, // 0003 GETMET R2 R2 K129 + 0x8C080583, // 0003 GETMET R2 R2 K131 0x60100009, // 0004 GETGBL R4 G9 0x5C140200, // 0005 MOVE R5 R1 0x7C100200, // 0006 CALL R4 1 @@ -3763,7 +3767,7 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080582, // 0005 GETMET R2 R2 K130 + 0x8C080584, // 0005 GETMET R2 R2 K132 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -3800,13 +3804,13 @@ be_local_closure(class_lvh_obj_set_hidden, /* name */ 0x88080101, // 0001 GETMBR R2 R0 K1 0x8C080538, // 0002 GETMET R2 R2 K56 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100950, // 0004 GETMBR R4 R4 K80 + 0x88100951, // 0004 GETMBR R4 R4 K81 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C 0x88080101, // 0007 GETMBR R2 R0 K1 0x8C080539, // 0008 GETMET R2 R2 K57 0xB8120600, // 0009 GETNGBL R4 K3 - 0x88100950, // 000A GETMBR R4 R4 K80 + 0x88100951, // 000A GETMBR R4 R4 K81 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -3835,19 +3839,19 @@ be_local_closure(class_lvh_obj_register_event_cb, /* name */ 0x88040132, // 0000 GETMBR R1 R0 K50 0x8804033A, // 0001 GETMBR R1 R1 K58 0x60080010, // 0002 GETGBL R2 G16 - 0x880C0140, // 0003 GETMBR R3 R0 K64 - 0x8C0C0783, // 0004 GETMET R3 R3 K131 + 0x880C0141, // 0003 GETMBR R3 R0 K65 + 0x8C0C0785, // 0004 GETMET R3 R3 K133 0x7C0C0200, // 0005 CALL R3 1 0x7C080200, // 0006 CALL R2 1 0xA8020006, // 0007 EXBLK 0 #000F 0x5C0C0400, // 0008 MOVE R3 R2 0x7C0C0000, // 0009 CALL R3 0 - 0x8C100384, // 000A GETMET R4 R1 K132 + 0x8C100386, // 000A GETMET R4 R1 K134 0x5C180000, // 000B MOVE R6 R0 0x5C1C0600, // 000C MOVE R7 R3 0x7C100600, // 000D CALL R4 3 0x7001FFF8, // 000E JMP #0008 - 0x58080085, // 000F LDCONST R2 K133 + 0x58080087, // 000F LDCONST R2 K135 0xAC080200, // 0010 CATCH R2 1 0 0xB0080000, // 0011 RAISE 2 R0 R0 0x80000000, // 0012 RET 0 @@ -3874,16 +3878,16 @@ be_local_closure(class_lvh_obj_set_text_font, /* name */ be_str_weak(set_text_font), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C080186, // 0000 GETMET R2 R0 K134 + 0x8C080188, // 0000 GETMET R2 R0 K136 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0004, // 0005 JMPF R3 #000B 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x8C0C0787, // 0007 GETMET R3 R3 K135 + 0x8C0C0789, // 0007 GETMET R3 R3 K137 0x5C140400, // 0008 MOVE R5 R2 - 0x5818006F, // 0009 LDCONST R6 K111 + 0x58180040, // 0009 LDCONST R6 K64 0x7C0C0600, // 000A CALL R3 3 0x80000000, // 000B RET 0 }) @@ -3914,7 +3918,7 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040388, // 0005 GETMET R1 R1 K136 + 0x8C04038A, // 0005 GETMET R1 R1 K138 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -3970,7 +3974,7 @@ be_local_closure(class_lvh_obj_get_val, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C040389, // 0001 GETMET R1 R1 K137 + 0x8C04038B, // 0001 GETMET R1 R1 K139 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -3996,7 +4000,7 @@ be_local_closure(class_lvh_obj_post_init, /* name */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04018A, // 0000 GETMET R1 R0 K138 + 0x8C04018C, // 0000 GETMET R1 R0 K140 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -7401,8 +7405,8 @@ be_local_class(lvh_scale, })), be_str_weak(lvh_scale) ); -// compact class 'lvh_scale_section' ktab size: 42, total: 57 (saved 120 bytes) -static const bvalue be_ktab_class_lvh_scale_section[42] = { +// compact class 'lvh_scale_section' ktab size: 43, total: 57 (saved 112 bytes) +static const bvalue be_ktab_class_lvh_scale_section[43] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(introspect), /* K2 */ be_nested_str_weak(startswith), @@ -7431,20 +7435,21 @@ static const bvalue be_ktab_class_lvh_scale_section[42] = { /* K25 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_), /* K26 */ be_nested_str_weak(_lv_obj), /* K27 */ be_nested_str_weak(_min), - /* K28 */ be_nested_str_weak(_max), - /* K29 */ be_nested_str_weak(_parent_lvh), - /* K30 */ be_nested_str_weak(_page), - /* K31 */ be_nested_str_weak(_oh), - /* K32 */ be_nested_str_weak(lvh_scale), - /* K33 */ be_nested_str_weak(add_section), - /* K34 */ be_nested_str_weak(style), - /* K35 */ be_nested_str_weak(set_style), - /* K36 */ be_nested_str_weak(PART_MAIN), - /* K37 */ be_nested_str_weak(PART_INDICATOR), - /* K38 */ be_nested_str_weak(PART_ITEMS), - /* K39 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), - /* K40 */ be_nested_str_weak(set_range), - /* K41 */ be_nested_str_weak(del), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_str_weak(_max), + /* K30 */ be_nested_str_weak(_parent_lvh), + /* K31 */ be_nested_str_weak(_page), + /* K32 */ be_nested_str_weak(_oh), + /* K33 */ be_nested_str_weak(lvh_scale), + /* K34 */ be_nested_str_weak(add_section), + /* K35 */ be_nested_str_weak(style), + /* K36 */ be_nested_str_weak(set_style), + /* K37 */ be_nested_str_weak(PART_MAIN), + /* K38 */ be_nested_str_weak(PART_INDICATOR), + /* K39 */ be_nested_str_weak(PART_ITEMS), + /* K40 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), + /* K41 */ be_nested_str_weak(set_range), + /* K42 */ be_nested_str_weak(del), }; @@ -7633,53 +7638,53 @@ be_local_closure(class_lvh_scale_section_post_init, /* name */ ( &(const binstruction[51]) { /* code */ 0x4C040000, // 0000 LDNIL R1 0x90023401, // 0001 SETMBR R0 K26 R1 - 0x90023707, // 0002 SETMBR R0 K27 K7 - 0x90023907, // 0003 SETMBR R0 K28 K7 + 0x9002371C, // 0002 SETMBR R0 K27 K28 + 0x90023B1C, // 0003 SETMBR R0 K29 K28 0x6004000F, // 0004 GETGBL R1 G15 - 0x8808011D, // 0005 GETMBR R2 R0 K29 - 0x880C011E, // 0006 GETMBR R3 R0 K30 - 0x880C071F, // 0007 GETMBR R3 R3 K31 - 0x880C0720, // 0008 GETMBR R3 R3 K32 + 0x8808011E, // 0005 GETMBR R2 R0 K30 + 0x880C011F, // 0006 GETMBR R3 R0 K31 + 0x880C0720, // 0007 GETMBR R3 R3 K32 + 0x880C0721, // 0008 GETMBR R3 R3 K33 0x7C040400, // 0009 CALL R1 2 0x78060023, // 000A JMPF R1 #002F - 0x8804011D, // 000B GETMBR R1 R0 K29 + 0x8804011E, // 000B GETMBR R1 R0 K30 0x8804031A, // 000C GETMBR R1 R1 K26 - 0x8C040321, // 000D GETMET R1 R1 K33 + 0x8C040322, // 000D GETMET R1 R1 K34 0x7C040200, // 000E CALL R1 1 0x90023401, // 000F SETMBR R0 K26 R1 0xB8061000, // 0010 GETNGBL R1 K8 - 0x8C040322, // 0011 GETMET R1 R1 K34 + 0x8C040323, // 0011 GETMET R1 R1 K35 0x7C040200, // 0012 CALL R1 1 0x90022201, // 0013 SETMBR R0 K17 R1 0x8804011A, // 0014 GETMBR R1 R0 K26 - 0x8C040323, // 0015 GETMET R1 R1 K35 + 0x8C040324, // 0015 GETMET R1 R1 K36 0xB80E1000, // 0016 GETNGBL R3 K8 - 0x880C0724, // 0017 GETMBR R3 R3 K36 + 0x880C0725, // 0017 GETMBR R3 R3 K37 0x88100111, // 0018 GETMBR R4 R0 K17 0x7C040600, // 0019 CALL R1 3 0xB8061000, // 001A GETNGBL R1 K8 - 0x8C040322, // 001B GETMET R1 R1 K34 + 0x8C040323, // 001B GETMET R1 R1 K35 0x7C040200, // 001C CALL R1 1 0x90022401, // 001D SETMBR R0 K18 R1 0x8804011A, // 001E GETMBR R1 R0 K26 - 0x8C040323, // 001F GETMET R1 R1 K35 + 0x8C040324, // 001F GETMET R1 R1 K36 0xB80E1000, // 0020 GETNGBL R3 K8 - 0x880C0725, // 0021 GETMBR R3 R3 K37 + 0x880C0726, // 0021 GETMBR R3 R3 K38 0x88100112, // 0022 GETMBR R4 R0 K18 0x7C040600, // 0023 CALL R1 3 0xB8061000, // 0024 GETNGBL R1 K8 - 0x8C040322, // 0025 GETMET R1 R1 K34 + 0x8C040323, // 0025 GETMET R1 R1 K35 0x7C040200, // 0026 CALL R1 1 0x90022601, // 0027 SETMBR R0 K19 R1 0x8804011A, // 0028 GETMBR R1 R0 K26 - 0x8C040323, // 0029 GETMET R1 R1 K35 + 0x8C040324, // 0029 GETMET R1 R1 K36 0xB80E1000, // 002A GETNGBL R3 K8 - 0x880C0726, // 002B GETMBR R3 R3 K38 + 0x880C0727, // 002B GETMBR R3 R3 K39 0x88100113, // 002C GETMBR R4 R0 K19 0x7C040600, // 002D CALL R1 3 0x70020002, // 002E JMP #0032 0x60040001, // 002F GETGBL R1 G1 - 0x58080027, // 0030 LDCONST R2 K39 + 0x58080028, // 0030 LDCONST R2 K40 0x7C040200, // 0031 CALL R1 1 0x80000000, // 0032 RET 0 }) @@ -7708,11 +7713,11 @@ be_local_closure(class_lvh_scale_section_set_min, /* name */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x880C011C, // 0003 GETMBR R3 R0 K28 + 0x880C011D, // 0003 GETMBR R3 R0 K29 0x14100602, // 0004 LT R4 R3 R2 0x78120000, // 0005 JMPF R4 #0007 0x5C0C0400, // 0006 MOVE R3 R2 - 0x8C100128, // 0007 GETMET R4 R0 K40 + 0x8C100129, // 0007 GETMET R4 R0 K41 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0600, // 0009 MOVE R7 R3 0x7C100600, // 000A CALL R4 3 @@ -7747,7 +7752,7 @@ be_local_closure(class_lvh_scale_section_set_max, /* name */ 0x24100403, // 0004 GT R4 R2 R3 0x78120000, // 0005 JMPF R4 #0007 0x5C080600, // 0006 MOVE R2 R3 - 0x8C100128, // 0007 GETMET R4 R0 K40 + 0x8C100129, // 0007 GETMET R4 R0 K41 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0600, // 0009 MOVE R7 R3 0x7C100600, // 000A CALL R4 3 @@ -7776,9 +7781,9 @@ be_local_closure(class_lvh_scale_section_set_range, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x90023601, // 0000 SETMBR R0 K27 R1 - 0x90023802, // 0001 SETMBR R0 K28 R2 + 0x90023A02, // 0001 SETMBR R0 K29 R2 0x880C011A, // 0002 GETMBR R3 R0 K26 - 0x8C0C0728, // 0003 GETMET R3 R3 K40 + 0x8C0C0729, // 0003 GETMET R3 R3 K41 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 @@ -7807,17 +7812,17 @@ be_local_closure(class_lvh_scale_section_delete, /* name */ &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x88040111, // 0000 GETMBR R1 R0 K17 - 0x8C040329, // 0001 GETMET R1 R1 K41 + 0x8C04032A, // 0001 GETMET R1 R1 K42 0x7C040200, // 0002 CALL R1 1 0x4C040000, // 0003 LDNIL R1 0x90022201, // 0004 SETMBR R0 K17 R1 0x88040112, // 0005 GETMBR R1 R0 K18 - 0x8C040329, // 0006 GETMET R1 R1 K41 + 0x8C04032A, // 0006 GETMET R1 R1 K42 0x7C040200, // 0007 CALL R1 1 0x4C040000, // 0008 LDNIL R1 0x90022401, // 0009 SETMBR R0 K18 R1 0x88040113, // 000A GETMBR R1 R0 K19 - 0x8C040329, // 000B GETMET R1 R1 K41 + 0x8C04032A, // 000B GETMET R1 R1 K42 0x7C040200, // 000C CALL R1 1 0x4C040000, // 000D LDNIL R1 0x90022601, // 000E SETMBR R0 K19 R1 @@ -7852,8 +7857,8 @@ be_local_class(lvh_scale_section, })), be_str_weak(lvh_scale_section) ); -// compact class 'lvh_scale_line' ktab size: 21, total: 29 (saved 64 bytes) -static const bvalue be_ktab_class_lvh_scale_line[21] = { +// compact class 'lvh_scale_line' ktab size: 22, total: 29 (saved 56 bytes) +static const bvalue be_ktab_class_lvh_scale_line[22] = { /* K0 */ be_nested_str_weak(set_val), /* K1 */ be_nested_str_weak(_parent_lvh), /* K2 */ be_nested_str_weak(_lv_obj), @@ -7871,10 +7876,11 @@ static const bvalue be_ktab_class_lvh_scale_line[21] = { /* K14 */ be_nested_str_weak(_oh), /* K15 */ be_nested_str_weak(lvh_scale), /* K16 */ be_nested_str_weak(HSP_X3A_X20_X27scale_line_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), - /* K17 */ be_nested_str_weak(lv), - /* K18 */ be_nested_str_weak(point_arr), - /* K19 */ be_nested_str_weak(point), - /* K20 */ be_nested_str_weak(post_init), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(lv), + /* K19 */ be_nested_str_weak(point_arr), + /* K20 */ be_nested_str_weak(point), + /* K21 */ be_nested_str_weak(post_init), }; @@ -7967,17 +7973,17 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */ 0x60040001, // 0007 GETGBL R1 G1 0x58080010, // 0008 LDCONST R2 K16 0x7C040200, // 0009 CALL R1 1 - 0x9002090B, // 000A SETMBR R0 K4 K11 - 0xB8062200, // 000B GETNGBL R1 K17 - 0x8C040312, // 000C GETMET R1 R1 K18 + 0x90020911, // 000A SETMBR R0 K4 K17 + 0xB8062400, // 000B GETNGBL R1 K18 + 0x8C040313, // 000C GETMET R1 R1 K19 0x600C0012, // 000D GETGBL R3 G18 0x7C0C0000, // 000E CALL R3 0 - 0xB8122200, // 000F GETNGBL R4 K17 - 0x8C100913, // 0010 GETMET R4 R4 K19 + 0xB8122400, // 000F GETNGBL R4 K18 + 0x8C100914, // 0010 GETMET R4 R4 K20 0x7C100200, // 0011 CALL R4 1 0x40100604, // 0012 CONNECT R4 R3 R4 - 0xB8122200, // 0013 GETNGBL R4 K17 - 0x8C100913, // 0014 GETMET R4 R4 K19 + 0xB8122400, // 0013 GETNGBL R4 K18 + 0x8C100914, // 0014 GETMET R4 R4 K20 0x7C100200, // 0015 CALL R4 1 0x40100604, // 0016 CONNECT R4 R3 R4 0x7C040400, // 0017 CALL R1 2 @@ -7985,7 +7991,7 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */ 0x60040003, // 0019 GETGBL R1 G3 0x5C080000, // 001A MOVE R2 R0 0x7C040200, // 001B CALL R1 1 - 0x8C040314, // 001C GETMET R1 R1 K20 + 0x8C040315, // 001C GETMET R1 R1 K21 0x7C040200, // 001D CALL R1 1 0x80000000, // 001E RET 0 }) @@ -9527,8 +9533,8 @@ be_local_class(lvh_page, be_str_weak(lvh_page) ); extern const bclass be_class_HASPmota; -// compact class 'HASPmota' ktab size: 121, total: 176 (saved 440 bytes) -static const bvalue be_ktab_class_HASPmota[121] = { +// compact class 'HASPmota' ktab size: 122, total: 176 (saved 432 bytes) +static const bvalue be_ktab_class_HASPmota[122] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(json), /* K2 */ be_nested_str_weak(lvh_page_cur_idx), @@ -9556,100 +9562,101 @@ static const bvalue be_ktab_class_HASPmota[121] = { /* K24 */ be_const_int(2), /* K25 */ be_nested_str_weak(remove), /* K26 */ be_nested_str_weak(pages_list_sorted), - /* K27 */ be_nested_str_weak(prev), - /* K28 */ be_nested_str_weak(next), - /* K29 */ be_nested_str_weak(back), - /* K30 */ be_nested_str_weak(re_page_target), - /* K31 */ be_nested_str_weak(match), - /* K32 */ be_nested_str_weak(show), - /* K33 */ be_nested_str_weak(fix_lv_version), - /* K34 */ be_nested_str_weak(re), - /* K35 */ be_nested_str_weak(compile), - /* K36 */ be_nested_str_weak(p_X5Cd_X2B), - /* K37 */ be_nested_str_weak(introspect), - /* K38 */ be_nested_str_weak(toptr), - /* K39 */ be_nested_str_weak(event), - /* K40 */ be_nested_str_weak(_p), - /* K41 */ be_nested_str_weak(lv), - /* K42 */ be_nested_str_weak(lv_event), - /* K43 */ be_nested_str_weak(get_user_data), - /* K44 */ be_nested_str_weak(fromptr), - /* K45 */ be_nested_str_weak(event_cb), - /* K46 */ be_nested_str_weak(keys), - /* K47 */ be_nested_str_weak(push), - /* K48 */ be_nested_str_weak(stop_iteration), - /* K49 */ be_nested_str_weak(sort), - /* K50 */ be_nested_str_weak(find), - /* K51 */ be_const_class(be_class_HASPmota), - /* K52 */ be_nested_str_weak(get), - /* K53 */ be_nested_str_weak(version), - /* K54 */ be_nested_str_weak(int), - /* K55 */ be_nested_str_weak(EVENT_CLICKED), - /* K56 */ be_nested_str_weak(page_show), - /* K57 */ be_nested_str_weak(_action), - /* K58 */ be_nested_str_weak(value_error), - /* K59 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line), - /* K60 */ be_nested_str_weak(cb), - /* K61 */ be_nested_str_weak(gen_cb), - /* K62 */ be_nested_str_weak(_lv_obj), - /* K63 */ be_nested_str_weak(add_event_cb), - /* K64 */ be_const_int(0), - /* K65 */ be_const_int(1), + /* K27 */ be_const_int(1), + /* K28 */ be_nested_str_weak(prev), + /* K29 */ be_nested_str_weak(next), + /* K30 */ be_nested_str_weak(back), + /* K31 */ be_nested_str_weak(re_page_target), + /* K32 */ be_nested_str_weak(match), + /* K33 */ be_nested_str_weak(show), + /* K34 */ be_nested_str_weak(fix_lv_version), + /* K35 */ be_nested_str_weak(re), + /* K36 */ be_nested_str_weak(compile), + /* K37 */ be_nested_str_weak(p_X5Cd_X2B), + /* K38 */ be_nested_str_weak(introspect), + /* K39 */ be_nested_str_weak(toptr), + /* K40 */ be_nested_str_weak(event), + /* K41 */ be_nested_str_weak(_p), + /* K42 */ be_nested_str_weak(lv), + /* K43 */ be_nested_str_weak(lv_event), + /* K44 */ be_nested_str_weak(get_user_data), + /* K45 */ be_const_int(0), + /* K46 */ be_nested_str_weak(fromptr), + /* K47 */ be_nested_str_weak(event_cb), + /* K48 */ be_nested_str_weak(keys), + /* K49 */ be_nested_str_weak(push), + /* K50 */ be_nested_str_weak(stop_iteration), + /* K51 */ be_nested_str_weak(sort), + /* K52 */ be_nested_str_weak(find), + /* K53 */ be_const_class(be_class_HASPmota), + /* K54 */ be_nested_str_weak(get), + /* K55 */ be_nested_str_weak(version), + /* K56 */ be_nested_str_weak(int), + /* K57 */ be_nested_str_weak(EVENT_CLICKED), + /* K58 */ be_nested_str_weak(page_show), + /* K59 */ be_nested_str_weak(_action), + /* K60 */ be_nested_str_weak(value_error), + /* K61 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line), + /* K62 */ be_nested_str_weak(cb), + /* K63 */ be_nested_str_weak(gen_cb), + /* K64 */ be_nested_str_weak(_lv_obj), + /* K65 */ be_nested_str_weak(add_event_cb), /* K66 */ be_nested_str_weak(has), /* K67 */ be_nested_str_weak(page), /* K68 */ be_nested_str_weak(contains), /* K69 */ be_nested_str_weak(id), /* K70 */ be_nested_str_weak(get_page_cur), - /* K71 */ be_nested_str_weak(path), - /* K72 */ be_nested_str_weak(def_templ_name), - /* K73 */ be_nested_str_weak(exists), - /* K74 */ be_nested_str_weak(file_X20_X27), - /* K75 */ be_nested_str_weak(_X27_X20not_X20found), - /* K76 */ be_nested_str_weak(io_erorr), - /* K77 */ be_nested_str_weak(start), - /* K78 */ be_nested_str_weak(dark), - /* K79 */ be_nested_str_weak(hres), - /* K80 */ be_nested_str_weak(get_hor_res), - /* K81 */ be_nested_str_weak(vres), - /* K82 */ be_nested_str_weak(get_ver_res), - /* K83 */ be_nested_str_weak(scr), - /* K84 */ be_nested_str_weak(scr_act), - /* K85 */ be_nested_str_weak(r16), - /* K86 */ be_nested_str_weak(font_embedded), - /* K87 */ be_nested_str_weak(robotocondensed), - /* K88 */ be_nested_str_weak(montserrat), - /* K89 */ be_nested_str_weak(theme_haspmota_init), - /* K90 */ be_nested_str_weak(color), - /* K91 */ be_const_int(16711935), - /* K92 */ be_const_int(3158064), - /* K93 */ be_nested_str_weak(get_disp), - /* K94 */ be_nested_str_weak(set_theme), - /* K95 */ be_nested_str_weak(set_style_bg_color), - /* K96 */ be_const_int(16777215), - /* K97 */ be_nested_str_weak(theme_apply), - /* K98 */ be_nested_str_weak(layer_top), - /* K99 */ be_nested_str_weak(set_style_bg_opa), - /* K100 */ be_nested_str_weak(_load), - /* K101 */ be_nested_str_weak(global), - /* K102 */ be_nested_str_weak(obj), - /* K103 */ be_nested_str_weak(berry_run), - /* K104 */ be_nested_str_weak(nil), - /* K105 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K106 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20), - /* K107 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A), - /* K108 */ be_nested_str_weak(parentid), - /* K109 */ be_nested_str_weak(get_obj), - /* K110 */ be_nested_str_weak(get_scr), - /* K111 */ be_nested_str_weak(lvh_), - /* K112 */ be_nested_str_weak(class), - /* K113 */ be_nested_str_weak(lvh_obj), - /* K114 */ be_nested_str_weak(module), - /* K115 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20), - /* K116 */ be_nested_str_weak(add_obj), - /* K117 */ be_nested_str_weak(function), - /* K118 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K119 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0), - /* K120 */ be_nested_str_weak(post_config), + /* K71 */ be_const_int(0), + /* K72 */ be_nested_str_weak(path), + /* K73 */ be_nested_str_weak(def_templ_name), + /* K74 */ be_nested_str_weak(exists), + /* K75 */ be_nested_str_weak(file_X20_X27), + /* K76 */ be_nested_str_weak(_X27_X20not_X20found), + /* K77 */ be_nested_str_weak(io_erorr), + /* K78 */ be_nested_str_weak(start), + /* K79 */ be_nested_str_weak(dark), + /* K80 */ be_nested_str_weak(hres), + /* K81 */ be_nested_str_weak(get_hor_res), + /* K82 */ be_nested_str_weak(vres), + /* K83 */ be_nested_str_weak(get_ver_res), + /* K84 */ be_nested_str_weak(scr), + /* K85 */ be_nested_str_weak(scr_act), + /* K86 */ be_nested_str_weak(r16), + /* K87 */ be_nested_str_weak(font_embedded), + /* K88 */ be_nested_str_weak(robotocondensed), + /* K89 */ be_nested_str_weak(montserrat), + /* K90 */ be_nested_str_weak(theme_haspmota_init), + /* K91 */ be_nested_str_weak(color), + /* K92 */ be_const_int(16711935), + /* K93 */ be_const_int(3158064), + /* K94 */ be_nested_str_weak(get_disp), + /* K95 */ be_nested_str_weak(set_theme), + /* K96 */ be_nested_str_weak(set_style_bg_color), + /* K97 */ be_const_int(16777215), + /* K98 */ be_nested_str_weak(theme_apply), + /* K99 */ be_nested_str_weak(layer_top), + /* K100 */ be_nested_str_weak(set_style_bg_opa), + /* K101 */ be_nested_str_weak(_load), + /* K102 */ be_nested_str_weak(global), + /* K103 */ be_nested_str_weak(obj), + /* K104 */ be_nested_str_weak(berry_run), + /* K105 */ be_nested_str_weak(nil), + /* K106 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K107 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20), + /* K108 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A), + /* K109 */ be_nested_str_weak(parentid), + /* K110 */ be_nested_str_weak(get_obj), + /* K111 */ be_nested_str_weak(get_scr), + /* K112 */ be_nested_str_weak(lvh_), + /* K113 */ be_nested_str_weak(class), + /* K114 */ be_nested_str_weak(lvh_obj), + /* K115 */ be_nested_str_weak(module), + /* K116 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20), + /* K117 */ be_nested_str_weak(add_obj), + /* K118 */ be_nested_str_weak(function), + /* K119 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K120 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0), + /* K121 */ be_nested_str_weak(post_config), }; @@ -9790,13 +9797,13 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x6014000C, // 0007 GETGBL R5 G12 0x5C180800, // 0008 MOVE R6 R4 0x7C140200, // 0009 CALL R5 1 - 0x18140B03, // 000A LE R5 R5 K3 + 0x18140B1B, // 000A LE R5 R5 K27 0x78160000, // 000B JMPF R5 #000D 0x80000A00, // 000C RET 0 - 0x1C14031B, // 000D EQ R5 R1 K27 + 0x1C14031C, // 000D EQ R5 R1 K28 0x78160009, // 000E JMPF R5 #0019 0x60140009, // 000F GETGBL R5 G9 - 0x8818071B, // 0010 GETMBR R6 R3 K27 + 0x8818071C, // 0010 GETMBR R6 R3 K28 0x7C140200, // 0011 CALL R5 1 0x5C080A00, // 0012 MOVE R2 R5 0x4C140000, // 0013 LDNIL R5 @@ -9805,36 +9812,36 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x5415FFFE, // 0016 LDINT R5 -1 0x94080805, // 0017 GETIDX R2 R4 R5 0x70020020, // 0018 JMP #003A - 0x1C14031C, // 0019 EQ R5 R1 K28 + 0x1C14031D, // 0019 EQ R5 R1 K29 0x78160008, // 001A JMPF R5 #0024 0x60140009, // 001B GETGBL R5 G9 - 0x8818071C, // 001C GETMBR R6 R3 K28 + 0x8818071D, // 001C GETMBR R6 R3 K29 0x7C140200, // 001D CALL R5 1 0x5C080A00, // 001E MOVE R2 R5 0x4C140000, // 001F LDNIL R5 0x1C140405, // 0020 EQ R5 R2 R5 0x78160000, // 0021 JMPF R5 #0023 - 0x94080903, // 0022 GETIDX R2 R4 K3 + 0x9408091B, // 0022 GETIDX R2 R4 K27 0x70020015, // 0023 JMP #003A - 0x1C14031D, // 0024 EQ R5 R1 K29 + 0x1C14031E, // 0024 EQ R5 R1 K30 0x78160008, // 0025 JMPF R5 #002F 0x60140009, // 0026 GETGBL R5 G9 - 0x8818071D, // 0027 GETMBR R6 R3 K29 + 0x8818071E, // 0027 GETMBR R6 R3 K30 0x7C140200, // 0028 CALL R5 1 0x5C080A00, // 0029 MOVE R2 R5 0x4C140000, // 002A LDNIL R5 0x1C140405, // 002B EQ R5 R2 R5 0x78160000, // 002C JMPF R5 #002E - 0x58080003, // 002D LDCONST R2 K3 + 0x5808001B, // 002D LDCONST R2 K27 0x7002000A, // 002E JMP #003A - 0x8814011E, // 002F GETMBR R5 R0 K30 - 0x8C140B1F, // 0030 GETMET R5 R5 K31 + 0x8814011F, // 002F GETMBR R5 R0 K31 + 0x8C140B20, // 0030 GETMET R5 R5 K32 0x5C1C0200, // 0031 MOVE R7 R1 0x7C140400, // 0032 CALL R5 2 0x78160005, // 0033 JMPF R5 #003A 0x60140009, // 0034 GETGBL R5 G9 0x5419FFFE, // 0035 LDINT R6 -1 - 0x401A0606, // 0036 CONNECT R6 K3 R6 + 0x401A3606, // 0036 CONNECT R6 K27 R6 0x94180206, // 0037 GETIDX R6 R1 R6 0x7C140200, // 0038 CALL R5 1 0x5C080A00, // 0039 MOVE R2 R5 @@ -9845,7 +9852,7 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x78160003, // 003E JMPF R5 #0043 0x88140105, // 003F GETMBR R5 R0 K5 0x94140A02, // 0040 GETIDX R5 R5 R2 - 0x8C140B20, // 0041 GETMET R5 R5 K32 + 0x8C140B21, // 0041 GETMET R5 R5 K33 0x7C140200, // 0042 CALL R5 1 0x80000000, // 0043 RET 0 }) @@ -9871,13 +9878,13 @@ be_local_closure(class_HASPmota_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C040121, // 0000 GETMET R1 R0 K33 + 0x8C040122, // 0000 GETMET R1 R0 K34 0x7C040200, // 0001 CALL R1 1 - 0xA4064400, // 0002 IMPORT R1 K34 - 0x8C080323, // 0003 GETMET R2 R1 K35 - 0x58100024, // 0004 LDCONST R4 K36 + 0xA4064600, // 0002 IMPORT R1 K35 + 0x8C080324, // 0003 GETMET R2 R1 K36 + 0x58100025, // 0004 LDCONST R4 K37 0x7C080400, // 0005 CALL R2 2 - 0x90023C02, // 0006 SETMBR R0 K30 R2 + 0x90023E02, // 0006 SETMBR R0 K31 R2 0x80000000, // 0007 RET 0 }) ) @@ -9902,29 +9909,29 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */ be_str_weak(event_dispatch), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA40A4A00, // 0000 IMPORT R2 K37 - 0x8C0C0526, // 0001 GETMET R3 R2 K38 + 0xA40A4C00, // 0000 IMPORT R2 K38 + 0x8C0C0527, // 0001 GETMET R3 R2 K39 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 - 0x88100127, // 0004 GETMBR R4 R0 K39 + 0x88100128, // 0004 GETMBR R4 R0 K40 0x78120002, // 0005 JMPF R4 #0009 - 0x88100127, // 0006 GETMBR R4 R0 K39 - 0x90125003, // 0007 SETMBR R4 K40 R3 + 0x88100128, // 0006 GETMBR R4 R0 K40 + 0x90125203, // 0007 SETMBR R4 K41 R3 0x70020004, // 0008 JMP #000E - 0xB8125200, // 0009 GETNGBL R4 K41 - 0x8C10092A, // 000A GETMET R4 R4 K42 + 0xB8125400, // 0009 GETNGBL R4 K42 + 0x8C10092B, // 000A GETMET R4 R4 K43 0x5C180600, // 000B MOVE R6 R3 0x7C100400, // 000C CALL R4 2 - 0x90024E04, // 000D SETMBR R0 K39 R4 - 0x88100127, // 000E GETMBR R4 R0 K39 - 0x8C10092B, // 000F GETMET R4 R4 K43 + 0x90025004, // 000D SETMBR R0 K40 R4 + 0x88100128, // 000E GETMBR R4 R0 K40 + 0x8C10092C, // 000F GETMET R4 R4 K44 0x7C100200, // 0010 CALL R4 1 0x60140009, // 0011 GETGBL R5 G9 0x5C180800, // 0012 MOVE R6 R4 0x7C140200, // 0013 CALL R5 1 - 0x20140B0B, // 0014 NE R5 R5 K11 + 0x20140B2D, // 0014 NE R5 R5 K45 0x7816000A, // 0015 JMPF R5 #0021 - 0x8C14052C, // 0016 GETMET R5 R2 K44 + 0x8C14052E, // 0016 GETMET R5 R2 K46 0x5C1C0800, // 0017 MOVE R7 R4 0x7C140400, // 0018 CALL R5 2 0x60180004, // 0019 GETGBL R6 G4 @@ -9932,8 +9939,8 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */ 0x7C180200, // 001B CALL R6 1 0x1C180D0D, // 001C EQ R6 R6 K13 0x781A0002, // 001D JMPF R6 #0021 - 0x8C180B2D, // 001E GETMET R6 R5 K45 - 0x88200127, // 001F GETMBR R8 R0 K39 + 0x8C180B2F, // 001E GETMET R6 R5 K47 + 0x88200128, // 001F GETMBR R8 R0 K40 0x7C180400, // 0020 CALL R6 2 0x80000000, // 0021 RET 0 }) @@ -9961,27 +9968,27 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ ( &(const binstruction[47]) { /* code */ 0x60080012, // 0000 GETGBL R2 G18 0x7C080000, // 0001 CALL R2 0 - 0x1C0C030B, // 0002 EQ R3 R1 K11 + 0x1C0C032D, // 0002 EQ R3 R1 K45 0x780E0000, // 0003 JMPF R3 #0005 0x88040102, // 0004 GETMBR R1 R0 K2 0x600C0010, // 0005 GETGBL R3 G16 0x88100105, // 0006 GETMBR R4 R0 K5 - 0x8C10092E, // 0007 GETMET R4 R4 K46 + 0x8C100930, // 0007 GETMET R4 R4 K48 0x7C100200, // 0008 CALL R4 1 0x7C0C0200, // 0009 CALL R3 1 0xA8020007, // 000A EXBLK 0 #0013 0x5C100600, // 000B MOVE R4 R3 0x7C100000, // 000C CALL R4 0 - 0x2014090B, // 000D NE R5 R4 K11 + 0x2014092D, // 000D NE R5 R4 K45 0x78160002, // 000E JMPF R5 #0012 - 0x8C14052F, // 000F GETMET R5 R2 K47 + 0x8C140531, // 000F GETMET R5 R2 K49 0x5C1C0800, // 0010 MOVE R7 R4 0x7C140400, // 0011 CALL R5 2 0x7001FFF7, // 0012 JMP #000B - 0x580C0030, // 0013 LDCONST R3 K48 + 0x580C0032, // 0013 LDCONST R3 K50 0xAC0C0200, // 0014 CATCH R3 1 0 0xB0080000, // 0015 RAISE 2 R0 R0 - 0x8C0C0131, // 0016 GETMET R3 R0 K49 + 0x8C0C0133, // 0016 GETMET R3 R0 K51 0x5C140400, // 0017 MOVE R5 R2 0x7C0C0400, // 0018 CALL R3 2 0x5C080600, // 0019 MOVE R2 R3 @@ -9993,7 +10000,7 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ 0x5C100400, // 001F MOVE R4 R2 0x7C0C0200, // 0020 CALL R3 1 0x00080402, // 0021 ADD R2 R2 R2 - 0x8C100532, // 0022 GETMET R4 R2 K50 + 0x8C100534, // 0022 GETMET R4 R2 K52 0x5C180200, // 0023 MOVE R6 R1 0x7C100400, // 0024 CALL R4 2 0x4C140000, // 0025 LDNIL R5 @@ -10056,20 +10063,20 @@ be_local_closure(class_HASPmota_fix_lv_version, /* name */ be_str_weak(fix_lv_version), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x58000033, // 0000 LDCONST R0 K51 - 0xA4064A00, // 0001 IMPORT R1 K37 - 0x8C080334, // 0002 GETMET R2 R1 K52 - 0xB8125200, // 0003 GETNGBL R4 K41 - 0x58140035, // 0004 LDCONST R5 K53 + 0x58000035, // 0000 LDCONST R0 K53 + 0xA4064C00, // 0001 IMPORT R1 K38 + 0x8C080336, // 0002 GETMET R2 R1 K54 + 0xB8125400, // 0003 GETNGBL R4 K42 + 0x58140037, // 0004 LDCONST R5 K55 0x7C080600, // 0005 CALL R2 3 0x600C0004, // 0006 GETGBL R3 G4 0x5C100400, // 0007 MOVE R4 R2 0x7C0C0200, // 0008 CALL R3 1 - 0x200C0736, // 0009 NE R3 R3 K54 + 0x200C0738, // 0009 NE R3 R3 K56 0x780E0002, // 000A JMPF R3 #000E - 0xB80E5200, // 000B GETNGBL R3 K41 + 0xB80E5400, // 000B GETNGBL R3 K42 0x54120007, // 000C LDINT R4 8 - 0x900E6A04, // 000D SETMBR R3 K53 R4 + 0x900E6E04, // 000D SETMBR R3 K55 R4 0x80000000, // 000E RET 0 }) ) @@ -10094,13 +10101,13 @@ be_local_closure(class_HASPmota_do_action, /* name */ be_str_weak(do_action), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0xB80E5200, // 0000 GETNGBL R3 K41 - 0x880C0737, // 0001 GETMBR R3 R3 K55 + 0xB80E5400, // 0000 GETNGBL R3 K42 + 0x880C0739, // 0001 GETMBR R3 R3 K57 0x200C0403, // 0002 NE R3 R2 R3 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 - 0x8C0C0138, // 0005 GETMET R3 R0 K56 - 0x88140339, // 0006 GETMBR R5 R1 K57 + 0x8C0C013A, // 0005 GETMET R3 R0 K58 + 0x8814033B, // 0006 GETMBR R5 R1 K59 0x7C0C0400, // 0007 CALL R3 2 0x80000000, // 0008 RET 0 }) @@ -10145,7 +10152,7 @@ be_local_closure(class_HASPmota_parse, /* name */ 0x941C0E08, // 0010 GETIDX R7 R7 R8 0x7C100600, // 0011 CALL R4 3 0x70020000, // 0012 JMP #0014 - 0xB006753B, // 0013 RAISE 1 K58 K59 + 0xB006793D, // 0013 RAISE 1 K60 K61 0x80000000, // 0014 RET 0 }) ) @@ -10195,21 +10202,21 @@ be_local_closure(class_HASPmota_register_event, /* name */ be_str_weak(register_event), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA40E7800, // 0000 IMPORT R3 K60 - 0xA4124A00, // 0001 IMPORT R4 K37 - 0x8814012D, // 0002 GETMBR R5 R0 K45 + 0xA40E7C00, // 0000 IMPORT R3 K62 + 0xA4124C00, // 0001 IMPORT R4 K38 + 0x8814012F, // 0002 GETMBR R5 R0 K47 0x4C180000, // 0003 LDNIL R6 0x1C140A06, // 0004 EQ R5 R5 R6 0x78160003, // 0005 JMPF R5 #000A - 0x8C14073D, // 0006 GETMET R5 R3 K61 + 0x8C14073F, // 0006 GETMET R5 R3 K63 0x841C0000, // 0007 CLOSURE R7 P0 0x7C140400, // 0008 CALL R5 2 - 0x90025A05, // 0009 SETMBR R0 K45 R5 - 0x8814033E, // 000A GETMBR R5 R1 K62 - 0x8C180B3F, // 000B GETMET R6 R5 K63 - 0x8820012D, // 000C GETMBR R8 R0 K45 + 0x90025E05, // 0009 SETMBR R0 K47 R5 + 0x88140340, // 000A GETMBR R5 R1 K64 + 0x8C180B41, // 000B GETMET R6 R5 K65 + 0x8820012F, // 000C GETMBR R8 R0 K47 0x5C240400, // 000D MOVE R9 R2 - 0x8C280926, // 000E GETMET R10 R4 K38 + 0x8C280927, // 000E GETMET R10 R4 K39 0x5C300200, // 000F MOVE R12 R1 0x7C280400, // 0010 CALL R10 2 0x7C180800, // 0011 CALL R6 4 @@ -10239,33 +10246,33 @@ be_local_closure(class_HASPmota_page_dir_to, /* name */ &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ 0x8C08011A, // 0000 GETMET R2 R0 K26 - 0x58100040, // 0001 LDCONST R4 K64 + 0x5810002D, // 0001 LDCONST R4 K45 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x1C0C0403, // 0004 EQ R3 R2 R3 0x780E0000, // 0005 JMPF R3 #0007 - 0x80068000, // 0006 RET 1 K64 + 0x80065A00, // 0006 RET 1 K45 0x600C000C, // 0007 GETGBL R3 G12 0x5C100400, // 0008 MOVE R4 R2 0x7C0C0200, // 0009 CALL R3 1 - 0x18100741, // 000A LE R4 R3 K65 + 0x18100703, // 000A LE R4 R3 K3 0x78120000, // 000B JMPF R4 #000D - 0x80068000, // 000C RET 1 K64 + 0x80065A00, // 000C RET 1 K45 0x1C100718, // 000D EQ R4 R3 K24 0x78120000, // 000E JMPF R4 #0010 - 0x80068200, // 000F RET 1 K65 - 0x8C100532, // 0010 GETMET R4 R2 K50 + 0x80060600, // 000F RET 1 K3 + 0x8C100534, // 0010 GETMET R4 R2 K52 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x4C140000, // 0013 LDNIL R5 0x1C140805, // 0014 EQ R5 R4 R5 0x78160000, // 0015 JMPF R5 #0017 - 0x80068000, // 0016 RET 1 K64 - 0x00140741, // 0017 ADD R5 R3 K65 + 0x80065A00, // 0016 RET 1 K45 + 0x00140703, // 0017 ADD R5 R3 K3 0x0C140B18, // 0018 DIV R5 R5 K24 0x18140805, // 0019 LE R5 R4 R5 0x78160001, // 001A JMPF R5 #001D - 0x80068200, // 001B RET 1 K65 + 0x80060600, // 001B RET 1 K3 0x70020001, // 001C JMP #001F 0x5415FFFE, // 001D LDINT R5 -1 0x80040A00, // 001E RET 1 R5 @@ -10300,7 +10307,7 @@ be_local_closure(class_HASPmota_parse_page, /* name */ 0x60080004, // 0004 GETGBL R2 G4 0x940C0343, // 0005 GETIDX R3 R1 K67 0x7C080200, // 0006 CALL R2 1 - 0x1C080536, // 0007 EQ R2 R2 K54 + 0x1C080538, // 0007 EQ R2 R2 K56 0x780A002B, // 0008 JMPF R2 #0035 0x60080009, // 0009 GETGBL R2 G9 0x940C0343, // 000A GETIDX R3 R1 K67 @@ -10318,34 +10325,34 @@ be_local_closure(class_HASPmota_parse_page, /* name */ 0x5C1C0000, // 0016 MOVE R7 R0 0x7C140400, // 0017 CALL R5 2 0x98100405, // 0018 SETIDX R4 R2 R5 - 0x8C0C0332, // 0019 GETMET R3 R1 K50 + 0x8C0C0334, // 0019 GETMET R3 R1 K52 0x58140045, // 001A LDCONST R5 K69 0x7C0C0400, // 001B CALL R3 2 - 0x1C0C070B, // 001C EQ R3 R3 K11 + 0x1C0C072D, // 001C EQ R3 R3 K45 0x780E0016, // 001D JMPF R3 #0035 0x8C0C0146, // 001E GETMET R3 R0 K70 0x7C0C0200, // 001F CALL R3 1 0x60100009, // 0020 GETGBL R4 G9 - 0x8C140332, // 0021 GETMET R5 R1 K50 - 0x581C001B, // 0022 LDCONST R7 K27 + 0x8C140334, // 0021 GETMET R5 R1 K52 + 0x581C001C, // 0022 LDCONST R7 K28 0x4C200000, // 0023 LDNIL R8 0x7C140600, // 0024 CALL R5 3 0x7C100200, // 0025 CALL R4 1 - 0x900E3604, // 0026 SETMBR R3 K27 R4 + 0x900E3804, // 0026 SETMBR R3 K28 R4 0x60100009, // 0027 GETGBL R4 G9 - 0x8C140332, // 0028 GETMET R5 R1 K50 - 0x581C001C, // 0029 LDCONST R7 K28 + 0x8C140334, // 0028 GETMET R5 R1 K52 + 0x581C001D, // 0029 LDCONST R7 K29 0x4C200000, // 002A LDNIL R8 0x7C140600, // 002B CALL R5 3 0x7C100200, // 002C CALL R4 1 - 0x900E3804, // 002D SETMBR R3 K28 R4 + 0x900E3A04, // 002D SETMBR R3 K29 R4 0x60100009, // 002E GETGBL R4 G9 - 0x8C140332, // 002F GETMET R5 R1 K50 - 0x581C001D, // 0030 LDCONST R7 K29 + 0x8C140334, // 002F GETMET R5 R1 K52 + 0x581C001E, // 0030 LDCONST R7 K30 0x4C200000, // 0031 LDNIL R8 0x7C140600, // 0032 CALL R5 3 0x7C100200, // 0033 CALL R4 1 - 0x900E3A04, // 0034 SETMBR R3 K29 R4 + 0x900E3C04, // 0034 SETMBR R3 K30 R4 0x80000000, // 0035 RET 0 }) ) @@ -10370,33 +10377,33 @@ be_local_closure(class_HASPmota_sort, /* name */ be_str_weak(sort), &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ - 0x58040033, // 0000 LDCONST R1 K51 + 0x58040035, // 0000 LDCONST R1 K53 0x60080010, // 0001 GETGBL R2 G16 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0741, // 0005 SUB R3 R3 K65 - 0x400E8203, // 0006 CONNECT R3 K65 R3 + 0x040C0703, // 0005 SUB R3 R3 K3 + 0x400E0603, // 0006 CONNECT R3 K3 R3 0x7C080200, // 0007 CALL R2 1 0xA8020010, // 0008 EXBLK 0 #001A 0x5C0C0400, // 0009 MOVE R3 R2 0x7C0C0000, // 000A CALL R3 0 0x94100003, // 000B GETIDX R4 R0 R3 0x5C140600, // 000C MOVE R5 R3 - 0x24180B0B, // 000D GT R6 R5 K11 + 0x24180B47, // 000D GT R6 R5 K71 0x781A0008, // 000E JMPF R6 #0018 - 0x04180B41, // 000F SUB R6 R5 K65 + 0x04180B03, // 000F SUB R6 R5 K3 0x94180006, // 0010 GETIDX R6 R0 R6 0x24180C04, // 0011 GT R6 R6 R4 0x781A0004, // 0012 JMPF R6 #0018 - 0x04180B41, // 0013 SUB R6 R5 K65 + 0x04180B03, // 0013 SUB R6 R5 K3 0x94180006, // 0014 GETIDX R6 R0 R6 0x98000A06, // 0015 SETIDX R0 R5 R6 - 0x04140B41, // 0016 SUB R5 R5 K65 + 0x04140B03, // 0016 SUB R5 R5 K3 0x7001FFF4, // 0017 JMP #000D 0x98000A04, // 0018 SETIDX R0 R5 R4 0x7001FFEE, // 0019 JMP #0009 - 0x58080030, // 001A LDCONST R2 K48 + 0x58080032, // 001A LDCONST R2 K50 0xAC080200, // 001B CATCH R2 1 0 0xB0080000, // 001C RAISE 2 R0 R0 0x80040000, // 001D RET 1 R0 @@ -10423,108 +10430,108 @@ be_local_closure(class_HASPmota_start, /* name */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[105]) { /* code */ - 0xA40E8E00, // 0000 IMPORT R3 K71 + 0xA40E9000, // 0000 IMPORT R3 K72 0x4C100000, // 0001 LDNIL R4 0x1C100404, // 0002 EQ R4 R2 R4 0x78120000, // 0003 JMPF R4 #0005 - 0x88080148, // 0004 GETMBR R2 R0 K72 - 0x8C100749, // 0005 GETMET R4 R3 K73 + 0x88080149, // 0004 GETMBR R2 R0 K73 + 0x8C10074A, // 0005 GETMET R4 R3 K74 0x5C180400, // 0006 MOVE R6 R2 0x7C100400, // 0007 CALL R4 2 0x74120002, // 0008 JMPT R4 #000C - 0x00129402, // 0009 ADD R4 K74 R2 - 0x0010094B, // 000A ADD R4 R4 K75 - 0xB0069804, // 000B RAISE 1 K76 R4 - 0xB8125200, // 000C GETNGBL R4 K41 - 0x8C10094D, // 000D GETMET R4 R4 K77 + 0x00129602, // 0009 ADD R4 K75 R2 + 0x0010094C, // 000A ADD R4 R4 K76 + 0xB0069A04, // 000B RAISE 1 K77 R4 + 0xB8125400, // 000C GETNGBL R4 K42 + 0x8C10094E, // 000D GETMET R4 R4 K78 0x7C100200, // 000E CALL R4 1 0x60100017, // 000F GETGBL R4 G23 0x5C140200, // 0010 MOVE R5 R1 0x7C100200, // 0011 CALL R4 1 - 0x90029C04, // 0012 SETMBR R0 K78 R4 - 0xB8125200, // 0013 GETNGBL R4 K41 - 0x8C100950, // 0014 GETMET R4 R4 K80 + 0x90029E04, // 0012 SETMBR R0 K79 R4 + 0xB8125400, // 0013 GETNGBL R4 K42 + 0x8C100951, // 0014 GETMET R4 R4 K81 0x7C100200, // 0015 CALL R4 1 - 0x90029E04, // 0016 SETMBR R0 K79 R4 - 0xB8125200, // 0017 GETNGBL R4 K41 - 0x8C100952, // 0018 GETMET R4 R4 K82 + 0x9002A004, // 0016 SETMBR R0 K80 R4 + 0xB8125400, // 0017 GETNGBL R4 K42 + 0x8C100953, // 0018 GETMET R4 R4 K83 0x7C100200, // 0019 CALL R4 1 - 0x9002A204, // 001A SETMBR R0 K81 R4 - 0xB8125200, // 001B GETNGBL R4 K41 - 0x8C100954, // 001C GETMET R4 R4 K84 + 0x9002A404, // 001A SETMBR R0 K82 R4 + 0xB8125400, // 001B GETNGBL R4 K42 + 0x8C100955, // 001C GETMET R4 R4 K85 0x7C100200, // 001D CALL R4 1 - 0x9002A604, // 001E SETMBR R0 K83 R4 + 0x9002A804, // 001E SETMBR R0 K84 R4 0xA8020007, // 001F EXBLK 0 #0028 - 0xB8125200, // 0020 GETNGBL R4 K41 - 0x8C100956, // 0021 GETMET R4 R4 K86 - 0x58180057, // 0022 LDCONST R6 K87 + 0xB8125400, // 0020 GETNGBL R4 K42 + 0x8C100957, // 0021 GETMET R4 R4 K87 + 0x58180058, // 0022 LDCONST R6 K88 0x541E000F, // 0023 LDINT R7 16 0x7C100600, // 0024 CALL R4 3 - 0x9002AA04, // 0025 SETMBR R0 K85 R4 + 0x9002AC04, // 0025 SETMBR R0 K86 R4 0xA8040001, // 0026 EXBLK 1 1 0x70020009, // 0027 JMP #0032 0xAC100000, // 0028 CATCH R4 0 0 0x70020006, // 0029 JMP #0031 - 0xB8125200, // 002A GETNGBL R4 K41 - 0x8C100956, // 002B GETMET R4 R4 K86 - 0x58180058, // 002C LDCONST R6 K88 + 0xB8125400, // 002A GETNGBL R4 K42 + 0x8C100957, // 002B GETMET R4 R4 K87 + 0x58180059, // 002C LDCONST R6 K89 0x541E000D, // 002D LDINT R7 14 0x7C100600, // 002E CALL R4 3 - 0x9002AA04, // 002F SETMBR R0 K85 R4 + 0x9002AC04, // 002F SETMBR R0 K86 R4 0x70020000, // 0030 JMP #0032 0xB0080000, // 0031 RAISE 2 R0 R0 - 0xB8125200, // 0032 GETNGBL R4 K41 - 0x8C100959, // 0033 GETMET R4 R4 K89 - 0x58180040, // 0034 LDCONST R6 K64 - 0xB81E5200, // 0035 GETNGBL R7 K41 - 0x8C1C0F5A, // 0036 GETMET R7 R7 K90 - 0x5824005B, // 0037 LDCONST R9 K91 + 0xB8125400, // 0032 GETNGBL R4 K42 + 0x8C10095A, // 0033 GETMET R4 R4 K90 + 0x5818002D, // 0034 LDCONST R6 K45 + 0xB81E5400, // 0035 GETNGBL R7 K42 + 0x8C1C0F5B, // 0036 GETMET R7 R7 K91 + 0x5824005C, // 0037 LDCONST R9 K92 0x7C1C0400, // 0038 CALL R7 2 - 0xB8225200, // 0039 GETNGBL R8 K41 - 0x8C20115A, // 003A GETMET R8 R8 K90 - 0x5828005C, // 003B LDCONST R10 K92 + 0xB8225400, // 0039 GETNGBL R8 K42 + 0x8C20115B, // 003A GETMET R8 R8 K91 + 0x5828005D, // 003B LDCONST R10 K93 0x7C200400, // 003C CALL R8 2 - 0x8824014E, // 003D GETMBR R9 R0 K78 - 0x88280155, // 003E GETMBR R10 R0 K85 + 0x8824014F, // 003D GETMBR R9 R0 K79 + 0x88280156, // 003E GETMBR R10 R0 K86 0x7C100C00, // 003F CALL R4 6 - 0x88140153, // 0040 GETMBR R5 R0 K83 - 0x8C140B5D, // 0041 GETMET R5 R5 K93 + 0x88140154, // 0040 GETMBR R5 R0 K84 + 0x8C140B5E, // 0041 GETMET R5 R5 K94 0x7C140200, // 0042 CALL R5 1 - 0x8C140B5E, // 0043 GETMET R5 R5 K94 + 0x8C140B5F, // 0043 GETMET R5 R5 K95 0x5C1C0800, // 0044 MOVE R7 R4 0x7C140400, // 0045 CALL R5 2 - 0x88140153, // 0046 GETMBR R5 R0 K83 - 0x8C140B5F, // 0047 GETMET R5 R5 K95 - 0x881C014E, // 0048 GETMBR R7 R0 K78 + 0x88140154, // 0046 GETMBR R5 R0 K84 + 0x8C140B60, // 0047 GETMET R5 R5 K96 + 0x881C014F, // 0048 GETMBR R7 R0 K79 0x781E0004, // 0049 JMPF R7 #004F - 0xB81E5200, // 004A GETNGBL R7 K41 - 0x8C1C0F5A, // 004B GETMET R7 R7 K90 - 0x58240040, // 004C LDCONST R9 K64 + 0xB81E5400, // 004A GETNGBL R7 K42 + 0x8C1C0F5B, // 004B GETMET R7 R7 K91 + 0x5824002D, // 004C LDCONST R9 K45 0x7C1C0400, // 004D CALL R7 2 0x70020003, // 004E JMP #0053 - 0xB81E5200, // 004F GETNGBL R7 K41 - 0x8C1C0F5A, // 0050 GETMET R7 R7 K90 - 0x58240060, // 0051 LDCONST R9 K96 + 0xB81E5400, // 004F GETNGBL R7 K42 + 0x8C1C0F5B, // 0050 GETMET R7 R7 K91 + 0x58240061, // 0051 LDCONST R9 K97 0x7C1C0400, // 0052 CALL R7 2 - 0x58200040, // 0053 LDCONST R8 K64 + 0x5820002D, // 0053 LDCONST R8 K45 0x7C140600, // 0054 CALL R5 3 - 0xB8165200, // 0055 GETNGBL R5 K41 - 0x8C140B61, // 0056 GETMET R5 R5 K97 - 0xB81E5200, // 0057 GETNGBL R7 K41 - 0x8C1C0F62, // 0058 GETMET R7 R7 K98 + 0xB8165400, // 0055 GETNGBL R5 K42 + 0x8C140B62, // 0056 GETMET R5 R5 K98 + 0xB81E5400, // 0057 GETNGBL R7 K42 + 0x8C1C0F63, // 0058 GETMET R7 R7 K99 0x7C1C0200, // 0059 CALL R7 1 0x7C140400, // 005A CALL R5 2 - 0xB8165200, // 005B GETNGBL R5 K41 - 0x8C140B62, // 005C GETMET R5 R5 K98 + 0xB8165400, // 005B GETNGBL R5 K42 + 0x8C140B63, // 005C GETMET R5 R5 K99 0x7C140200, // 005D CALL R5 1 - 0x8C140B63, // 005E GETMET R5 R5 K99 - 0x581C0040, // 005F LDCONST R7 K64 - 0x58200040, // 0060 LDCONST R8 K64 + 0x8C140B64, // 005E GETMET R5 R5 K100 + 0x581C002D, // 005F LDCONST R7 K45 + 0x5820002D, // 0060 LDCONST R8 K45 0x7C140600, // 0061 CALL R5 3 0x60140013, // 0062 GETGBL R5 G19 0x7C140000, // 0063 CALL R5 0 0x90020A05, // 0064 SETMBR R0 K5 R5 - 0x8C140164, // 0065 GETMET R5 R0 K100 + 0x8C140165, // 0065 GETMET R5 R0 K101 0x5C1C0400, // 0066 MOVE R7 R2 0x7C140400, // 0067 CALL R5 2 0x80000000, // 0068 RET 0 @@ -10551,28 +10558,28 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ be_str_weak(parse_obj), &be_const_str_solidified, ( &(const binstruction[215]) { /* code */ - 0xA40ECA00, // 0000 IMPORT R3 K101 - 0xA4124A00, // 0001 IMPORT R4 K37 + 0xA40ECC00, // 0000 IMPORT R3 K102 + 0xA4124C00, // 0001 IMPORT R4 K38 0x60140009, // 0002 GETGBL R5 G9 - 0x8C180332, // 0003 GETMET R6 R1 K50 + 0x8C180334, // 0003 GETMET R6 R1 K52 0x58200045, // 0004 LDCONST R8 K69 0x7C180400, // 0005 CALL R6 2 0x7C140200, // 0006 CALL R5 1 0x60180008, // 0007 GETGBL R6 G8 - 0x8C1C0332, // 0008 GETMET R7 R1 K50 - 0x58240066, // 0009 LDCONST R9 K102 + 0x8C1C0334, // 0008 GETMET R7 R1 K52 + 0x58240067, // 0009 LDCONST R9 K103 0x7C1C0400, // 000A CALL R7 2 0x7C180200, // 000B CALL R6 1 0x4C1C0000, // 000C LDNIL R7 0x8C200146, // 000D GETMET R8 R0 K70 0x7C200200, // 000E CALL R8 1 0x60240008, // 000F GETGBL R9 G8 - 0x8C280332, // 0010 GETMET R10 R1 K50 - 0x58300067, // 0011 LDCONST R12 K103 + 0x8C280334, // 0010 GETMET R10 R1 K52 + 0x58300068, // 0011 LDCONST R12 K104 0x7C280400, // 0012 CALL R10 2 0x7C240200, // 0013 CALL R9 1 0x4C280000, // 0014 LDNIL R10 - 0x202C1368, // 0015 NE R11 R9 K104 + 0x202C1369, // 0015 NE R11 R9 K105 0x782E0012, // 0016 JMPF R11 #002A 0xA8020005, // 0017 EXBLK 0 #001E 0x602C000D, // 0018 GETGBL R11 G13 @@ -10585,7 +10592,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x70020008, // 001F JMP #0029 0x60340001, // 0020 GETGBL R13 G1 0x60380018, // 0021 GETGBL R14 G24 - 0x583C0069, // 0022 LDCONST R15 K105 + 0x583C006A, // 0022 LDCONST R15 K106 0x5C401200, // 0023 MOVE R16 R9 0x5C441600, // 0024 MOVE R17 R11 0x5C481800, // 0025 MOVE R18 R12 @@ -10593,12 +10600,12 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x7C340200, // 0027 CALL R13 1 0x70020000, // 0028 JMP #002A 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x202C0D68, // 002A NE R11 R6 K104 + 0x202C0D69, // 002A NE R11 R6 K105 0x782E006A, // 002B JMPF R11 #0097 0x4C2C0000, // 002C LDNIL R11 0x202C0A0B, // 002D NE R11 R5 R11 0x782E0067, // 002E JMPF R11 #0097 - 0x142C0B41, // 002F LT R11 R5 K65 + 0x142C0B1B, // 002F LT R11 R5 K27 0x742E0002, // 0030 JMPT R11 #0034 0x542E00FD, // 0031 LDINT R11 254 0x242C0A0B, // 0032 GT R11 R5 R11 @@ -10607,44 +10614,44 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60300008, // 0035 GETGBL R12 G8 0x5C340A00, // 0036 MOVE R13 R5 0x7C300200, // 0037 CALL R12 1 - 0x0032D40C, // 0038 ADD R12 K106 R12 - 0x0030196B, // 0039 ADD R12 R12 K107 + 0x0032D60C, // 0038 ADD R12 K107 R12 + 0x0030196C, // 0039 ADD R12 R12 K108 0x00301806, // 003A ADD R12 R12 R6 0x7C2C0200, // 003B CALL R11 1 0x80001600, // 003C RET 0 0x4C2C0000, // 003D LDNIL R11 0x60300009, // 003E GETGBL R12 G9 - 0x8C340332, // 003F GETMET R13 R1 K50 - 0x583C006C, // 0040 LDCONST R15 K108 + 0x8C340334, // 003F GETMET R13 R1 K52 + 0x583C006D, // 0040 LDCONST R15 K109 0x7C340400, // 0041 CALL R13 2 0x7C300200, // 0042 CALL R12 1 0x4C340000, // 0043 LDNIL R13 0x4C380000, // 0044 LDNIL R14 0x2038180E, // 0045 NE R14 R12 R14 0x783A0007, // 0046 JMPF R14 #004F - 0x8C38116D, // 0047 GETMET R14 R8 K109 + 0x8C38116E, // 0047 GETMET R14 R8 K110 0x5C401800, // 0048 MOVE R16 R12 0x7C380400, // 0049 CALL R14 2 0x5C341C00, // 004A MOVE R13 R14 0x4C380000, // 004B LDNIL R14 0x20381A0E, // 004C NE R14 R13 R14 0x783A0000, // 004D JMPF R14 #004F - 0x882C1B3E, // 004E GETMBR R11 R13 K62 + 0x882C1B40, // 004E GETMBR R11 R13 K64 0x4C380000, // 004F LDNIL R14 0x1C38160E, // 0050 EQ R14 R11 R14 0x783A0002, // 0051 JMPF R14 #0055 - 0x8C38116E, // 0052 GETMET R14 R8 K110 + 0x8C38116F, // 0052 GETMET R14 R8 K111 0x7C380200, // 0053 CALL R14 1 0x5C2C1C00, // 0054 MOVE R11 R14 - 0x8C380934, // 0055 GETMET R14 R4 K52 + 0x8C380936, // 0055 GETMET R14 R4 K54 0x5C400000, // 0056 MOVE R16 R0 - 0x0046DE06, // 0057 ADD R17 K111 R6 + 0x0046E006, // 0057 ADD R17 K112 R6 0x7C380600, // 0058 CALL R14 3 0x4C3C0000, // 0059 LDNIL R15 0x4C400000, // 005A LDNIL R16 0x1C401C10, // 005B EQ R16 R14 R16 0x78420010, // 005C JMPF R16 #006E - 0x8C400934, // 005D GETMET R16 R4 K52 + 0x8C400936, // 005D GETMET R16 R4 K54 0x5C480600, // 005E MOVE R18 R3 0x5C4C0C00, // 005F MOVE R19 R6 0x7C400600, // 0060 CALL R16 3 @@ -10654,17 +10661,17 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440004, // 0064 GETGBL R17 G4 0x5C482000, // 0065 MOVE R18 R16 0x7C440200, // 0066 CALL R17 1 - 0x1C442370, // 0067 EQ R17 R17 K112 + 0x1C442371, // 0067 EQ R17 R17 K113 0x78460004, // 0068 JMPF R17 #006E 0x5C442000, // 0069 MOVE R17 R16 0x5C481600, // 006A MOVE R18 R11 0x7C440200, // 006B CALL R17 1 0x5C3C2200, // 006C MOVE R15 R17 - 0x88380171, // 006D GETMBR R14 R0 K113 + 0x88380172, // 006D GETMBR R14 R0 K114 0x4C400000, // 006E LDNIL R16 0x1C401C10, // 006F EQ R16 R14 R16 0x7842000F, // 0070 JMPF R16 #0081 - 0x8C400972, // 0071 GETMET R16 R4 K114 + 0x8C400973, // 0071 GETMET R16 R4 K115 0x5C480C00, // 0072 MOVE R18 R6 0x7C400400, // 0073 CALL R16 2 0x4C440000, // 0074 LDNIL R17 @@ -10673,13 +10680,13 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440004, // 0077 GETGBL R17 G4 0x5C482000, // 0078 MOVE R18 R16 0x7C440200, // 0079 CALL R17 1 - 0x1C442370, // 007A EQ R17 R17 K112 + 0x1C442371, // 007A EQ R17 R17 K113 0x78460004, // 007B JMPF R17 #0081 0x5C442000, // 007C MOVE R17 R16 0x5C481600, // 007D MOVE R18 R11 0x7C440200, // 007E CALL R17 1 0x5C3C2200, // 007F MOVE R15 R17 - 0x88380171, // 0080 GETMBR R14 R0 K113 + 0x88380172, // 0080 GETMBR R14 R0 K114 0x4C400000, // 0081 LDNIL R16 0x1C401C10, // 0082 EQ R16 R14 R16 0x78420006, // 0083 JMPF R16 #008B @@ -10687,7 +10694,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440008, // 0085 GETGBL R17 G8 0x5C480C00, // 0086 MOVE R18 R6 0x7C440200, // 0087 CALL R17 1 - 0x0046E611, // 0088 ADD R17 K115 R17 + 0x0046E811, // 0088 ADD R17 K116 R17 0x7C400200, // 0089 CALL R16 1 0x80002000, // 008A RET 0 0x5C401C00, // 008B MOVE R16 R14 @@ -10698,7 +10705,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x5C541A00, // 0090 MOVE R21 R13 0x7C400A00, // 0091 CALL R16 5 0x5C1C2000, // 0092 MOVE R7 R16 - 0x8C401174, // 0093 GETMET R16 R8 K116 + 0x8C401175, // 0093 GETMET R16 R8 K117 0x5C480A00, // 0094 MOVE R18 R5 0x5C4C0E00, // 0095 MOVE R19 R7 0x7C400600, // 0096 CALL R16 3 @@ -10711,7 +10718,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60300004, // 009D GETGBL R12 G4 0x5C341600, // 009E MOVE R13 R11 0x7C300200, // 009F CALL R12 1 - 0x1C301975, // 00A0 EQ R12 R12 K117 + 0x1C301976, // 00A0 EQ R12 R12 K118 0x78320002, // 00A1 JMPF R12 #00A5 0x5C301600, // 00A2 MOVE R12 R11 0x5C340E00, // 00A3 MOVE R13 R7 @@ -10722,7 +10729,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x70020008, // 00A8 JMP #00B2 0x60340001, // 00A9 GETGBL R13 G1 0x60380018, // 00AA GETGBL R14 G24 - 0x583C0076, // 00AB LDCONST R15 K118 + 0x583C0077, // 00AB LDCONST R15 K119 0x5C401200, // 00AC MOVE R16 R9 0x5C441600, // 00AD MOVE R17 R11 0x5C481800, // 00AE MOVE R18 R12 @@ -10736,22 +10743,22 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x80001600, // 00B6 RET 0 0x1C2C0B0B, // 00B7 EQ R11 R5 K11 0x782E0005, // 00B8 JMPF R11 #00BF - 0x202C0D68, // 00B9 NE R11 R6 K104 + 0x202C0D69, // 00B9 NE R11 R6 K105 0x782E0003, // 00BA JMPF R11 #00BF 0x602C0001, // 00BB GETGBL R11 G1 - 0x58300077, // 00BC LDCONST R12 K119 + 0x58300078, // 00BC LDCONST R12 K120 0x7C2C0200, // 00BD CALL R11 1 0x80001600, // 00BE RET 0 0x1C2C0B0B, // 00BF EQ R11 R5 K11 0x782E0005, // 00C0 JMPF R11 #00C7 0x8C2C0146, // 00C1 GETMET R11 R0 K70 0x7C2C0200, // 00C2 CALL R11 1 - 0x8C2C176D, // 00C3 GETMET R11 R11 K109 + 0x8C2C176E, // 00C3 GETMET R11 R11 K110 0x5834000B, // 00C4 LDCONST R13 K11 0x7C2C0400, // 00C5 CALL R11 2 0x5C1C1600, // 00C6 MOVE R7 R11 0x602C0010, // 00C7 GETGBL R11 G16 - 0x8C30032E, // 00C8 GETMET R12 R1 K46 + 0x8C300330, // 00C8 GETMET R12 R1 K48 0x7C300200, // 00C9 CALL R12 1 0x7C2C0200, // 00CA CALL R11 1 0xA8020004, // 00CB EXBLK 0 #00D1 @@ -10760,10 +10767,10 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x9434020C, // 00CE GETIDX R13 R1 R12 0x901C180D, // 00CF SETMBR R7 R12 R13 0x7001FFFA, // 00D0 JMP #00CC - 0x582C0030, // 00D1 LDCONST R11 K48 + 0x582C0032, // 00D1 LDCONST R11 K50 0xAC2C0200, // 00D2 CATCH R11 1 0 0xB0080000, // 00D3 RAISE 2 R0 R0 - 0x8C2C0F78, // 00D4 GETMET R11 R7 K120 + 0x8C2C0F79, // 00D4 GETMET R11 R7 K121 0x7C2C0200, // 00D5 CALL R11 1 0x80000000, // 00D6 RET 0 }) From f97c47c511ff6889e9b7f1405de9f64a11b83208 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 25 Jul 2024 23:11:14 +0200 Subject: [PATCH 188/252] Avoid random content in bvalue (#21846) --- lib/libesp32/berry/src/be_code.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libesp32/berry/src/be_code.c b/lib/libesp32/berry/src/be_code.c index ba8ea7dba..4213d54a2 100644 --- a/lib/libesp32/berry/src/be_code.c +++ b/lib/libesp32/berry/src/be_code.c @@ -307,7 +307,7 @@ static int exp2const(bfuncinfo *finfo, bexpdesc *e) { int idx = findconst(finfo, e); /* does the constant already exist? */ if (idx == -1) { /* if not add it */ - bvalue k; + bvalue k = {}; switch (e->type) { case ETINT: k.type = BE_INT; @@ -882,7 +882,7 @@ void be_code_index(bfuncinfo *finfo, bexpdesc *c, bexpdesc *k) void be_code_class(bfuncinfo *finfo, bexpdesc *dst, bclass *c) { int src; - bvalue var; + bvalue var = {}; var_setclass(&var, c); /* new var of CLASS type */ src = newconst(finfo, &var); /* allocate a new constant and return kreg */ if (dst->type == ETLOCAL) { /* if target is a local variable, just assign */ @@ -965,7 +965,7 @@ void be_code_raise(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2) void be_code_implicit_class(bfuncinfo *finfo, bexpdesc *e, bclass *c) { - bvalue k; + bvalue k = {}; k.type = BE_CLASS; k.v.p = c; int idx = newconst(finfo, &k); /* create new constant */ From 1b126569559cc42f3896866fa2735cc38d994e1c Mon Sep 17 00:00:00 2001 From: s-hadinger Date: Thu, 25 Jul 2024 21:15:06 +0000 Subject: [PATCH 189/252] Solidified Code updated --- .../src/solidify/solidified_animate_1_core.h | 108 +- .../solidified_animate_2_animate_effects.h | 63 +- .../solidify/solidified_animate_9_module.h | 419 +++--- .../solidified_leds_frame_be_methods.h | 49 +- .../solidified_Matter_Control_Message.h | 7 +- .../solidify/solidified_Matter_EventHandler.h | 272 ++-- .../solidify/solidified_Matter_Expirable.h | 66 +- .../src/solidify/solidified_Matter_Fabric.h | 97 +- .../solidify/solidified_Matter_HTTP_async.h | 310 ++-- .../solidify/solidified_Matter_HTTP_remote.h | 234 ++- .../src/solidify/solidified_Matter_IM.h | 1025 +++++++------- .../solidified_Matter_IM_Subscription.h | 356 +++-- .../src/solidify/solidified_Matter_Message.h | 633 ++++----- .../src/solidify/solidified_Matter_Plugin_0.h | 126 +- .../solidified_Matter_Plugin_1_Aggregator.h | 24 +- .../solidified_Matter_Plugin_1_Device.h | 490 ++++--- .../solidified_Matter_Plugin_1_Root.h | 564 ++++---- .../solidify/solidified_Matter_Plugin_2_Fan.h | 150 +- .../solidified_Matter_Plugin_2_Light0.h | 118 +- ...ified_Matter_Plugin_2_Sensor_Air_Quality.h | 49 +- ...Matter_Plugin_2_Sensor_GenericSwitch_Btn.h | 81 +- .../solidified_Matter_Plugin_2_Shutter.h | 282 ++-- .../solidified_Matter_Plugin_3_Light1.h | 225 ++- ...olidified_Matter_Plugin_3_Sensor_Contact.h | 73 +- ...ified_Matter_Plugin_3_Sensor_Illuminance.h | 76 +- ...idified_Matter_Plugin_3_Sensor_Occupancy.h | 95 +- .../solidified_Matter_Plugin_3_Sensor_OnOff.h | 7 +- .../solidified_Matter_Plugin_3_Sensor_Rain.h | 73 +- .../solidified_Matter_Plugin_3_Sensor_Temp.h | 90 +- ...idified_Matter_Plugin_3_Sensor_Waterleak.h | 10 +- .../solidified_Matter_Plugin_3_ShutterTilt.h | 133 +- .../solidified_Matter_Plugin_4_Light3.h | 400 +++--- .../src/solidify/solidified_Matter_Profiler.h | 24 +- .../src/solidify/solidified_Matter_Session.h | 283 ++-- .../solidified_Matter_Session_Store.h | 207 ++- .../src/solidify/solidified_Matter_TLV.h | 249 ++-- .../solidify/solidified_Matter_UDPServer.h | 96 +- .../src/solidify/solidified_autoconf_module.h | 145 +- .../src/solidify/solidified_hue_bridge.h | 147 +- .../src/solidify/solidified_i2c_axp192.h | 199 ++- .../src/solidify/solidified_i2c_axp202.h | 103 +- .../src/solidify/solidified_i2c_driver.h | 98 +- .../src/solidify/solidified_i2c_ft3663.h | 29 +- .../src/solidify/solidified_leds.h | 128 +- .../solidify/solidified_lv_tasmota_widgets.h | 61 +- .../src/solidify/solidified_partition_core.h | 646 +++++---- .../src/solidify/solidified_rule_matcher.h | 7 +- .../src/solidify/solidified_tasmota_class.h | 790 ++++++----- .../src/solidify/solidified_lvgl_glob.h | 310 ++-- .../src/solidify/solidified_lv_haspmota.h | 1254 ++++++++--------- 50 files changed, 5650 insertions(+), 5831 deletions(-) diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h index 191c4ebb6..440804ff2 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Animate_core' ktab size: 50, total: 98 (saved 384 bytes) -static const bvalue be_ktab_class_Animate_core[50] = { +// compact class 'Animate_core' ktab size: 48, total: 98 (saved 400 bytes) +static const bvalue be_ktab_class_Animate_core[48] = { /* K0 */ be_nested_str_weak(stop), /* K1 */ be_nested_str_weak(strip), /* K2 */ be_nested_str_weak(clear), @@ -32,29 +32,27 @@ static const bvalue be_ktab_class_Animate_core[50] = { /* K24 */ be_nested_str_weak(millis), /* K25 */ be_nested_str_weak(FAST_LOOP_MIN), /* K26 */ be_nested_str_weak(animate), - /* K27 */ be_const_int(1), - /* K28 */ be_nested_str_weak(layer), - /* K29 */ be_const_int(-16777216), - /* K30 */ be_nested_str_weak(paint), - /* K31 */ be_nested_str_weak(blend_pixels), - /* K32 */ be_nested_str_weak(obj), - /* K33 */ be_nested_str_weak(mth), - /* K34 */ be_nested_str_weak(paste_pixels), - /* K35 */ be_nested_str_weak(pixels_buffer), - /* K36 */ be_nested_str_weak(get_bri), - /* K37 */ be_nested_str_weak(get_gamma), - /* K38 */ be_nested_str_weak(dirty), - /* K39 */ be_nested_str_weak(show), - /* K40 */ be_nested_str_weak(global), - /* K41 */ be_nested_str_weak(_cur_anim), - /* K42 */ be_nested_str_weak(pixel_count), - /* K43 */ be_const_int(0), - /* K44 */ be_nested_str_weak(set_current), - /* K45 */ be_nested_str_weak(set_cb), - /* K46 */ be_nested_str_weak(set_back_color), - /* K47 */ be_nested_str_weak(add_animator), - /* K48 */ be_nested_str_weak(start), - /* K49 */ be_nested_str_weak(add_fast_loop), + /* K27 */ be_nested_str_weak(layer), + /* K28 */ be_const_int(-16777216), + /* K29 */ be_nested_str_weak(paint), + /* K30 */ be_nested_str_weak(blend_pixels), + /* K31 */ be_nested_str_weak(obj), + /* K32 */ be_nested_str_weak(mth), + /* K33 */ be_nested_str_weak(paste_pixels), + /* K34 */ be_nested_str_weak(pixels_buffer), + /* K35 */ be_nested_str_weak(get_bri), + /* K36 */ be_nested_str_weak(get_gamma), + /* K37 */ be_nested_str_weak(dirty), + /* K38 */ be_nested_str_weak(show), + /* K39 */ be_nested_str_weak(global), + /* K40 */ be_nested_str_weak(_cur_anim), + /* K41 */ be_nested_str_weak(pixel_count), + /* K42 */ be_nested_str_weak(set_current), + /* K43 */ be_nested_str_weak(set_cb), + /* K44 */ be_nested_str_weak(set_back_color), + /* K45 */ be_nested_str_weak(add_animator), + /* K46 */ be_nested_str_weak(start), + /* K47 */ be_nested_str_weak(add_fast_loop), }; @@ -338,32 +336,32 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0x8C0C071A, // 001D GETMET R3 R3 K26 0x5C140400, // 001E MOVE R5 R2 0x7C0C0400, // 001F CALL R3 2 - 0x0004031B, // 0020 ADD R1 R1 K27 + 0x0004030D, // 0020 ADD R1 R1 K13 0x7001FFF3, // 0021 JMP #0016 0x58040007, // 0022 LDCONST R1 K7 0x880C0115, // 0023 GETMBR R3 R0 K21 - 0x8810011C, // 0024 GETMBR R4 R0 K28 + 0x8810011B, // 0024 GETMBR R4 R0 K27 0x6014000C, // 0025 GETGBL R5 G12 0x88180108, // 0026 GETMBR R6 R0 K8 0x7C140200, // 0027 CALL R5 1 0x14140205, // 0028 LT R5 R1 R5 0x7816000D, // 0029 JMPF R5 #0038 0x8C140916, // 002A GETMET R5 R4 K22 - 0x581C001D, // 002B LDCONST R7 K29 + 0x581C001C, // 002B LDCONST R7 K28 0x7C140400, // 002C CALL R5 2 0x88140108, // 002D GETMBR R5 R0 K8 0x94140A01, // 002E GETIDX R5 R5 R1 - 0x8C140B1E, // 002F GETMET R5 R5 K30 + 0x8C140B1D, // 002F GETMET R5 R5 K29 0x5C1C0800, // 0030 MOVE R7 R4 0x7C140400, // 0031 CALL R5 2 0x78160002, // 0032 JMPF R5 #0036 - 0x8C14071F, // 0033 GETMET R5 R3 K31 + 0x8C14071E, // 0033 GETMET R5 R3 K30 0x5C1C0800, // 0034 MOVE R7 R4 0x7C140400, // 0035 CALL R5 2 - 0x0004031B, // 0036 ADD R1 R1 K27 + 0x0004030D, // 0036 ADD R1 R1 K13 0x7001FFEC, // 0037 JMP #0025 - 0x88140120, // 0038 GETMBR R5 R0 K32 - 0x88180121, // 0039 GETMBR R6 R0 K33 + 0x8814011F, // 0038 GETMBR R5 R0 K31 + 0x88180120, // 0039 GETMBR R6 R0 K32 0x78160003, // 003A JMPF R5 #003F 0x781A0002, // 003B JMPF R6 #003F 0x5C1C0C00, // 003C MOVE R7 R6 @@ -372,22 +370,22 @@ be_local_closure(class_Animate_core_fast_loop, /* name */ 0x8C1C011A, // 003F GETMET R7 R0 K26 0x7C1C0200, // 0040 CALL R7 1 0x881C0115, // 0041 GETMBR R7 R0 K21 - 0x8C1C0F22, // 0042 GETMET R7 R7 K34 + 0x8C1C0F21, // 0042 GETMET R7 R7 K33 0x88240101, // 0043 GETMBR R9 R0 K1 - 0x8C241323, // 0044 GETMET R9 R9 K35 + 0x8C241322, // 0044 GETMET R9 R9 K34 0x7C240200, // 0045 CALL R9 1 0x88280101, // 0046 GETMBR R10 R0 K1 - 0x8C281524, // 0047 GETMET R10 R10 K36 + 0x8C281523, // 0047 GETMET R10 R10 K35 0x7C280200, // 0048 CALL R10 1 0x882C0101, // 0049 GETMBR R11 R0 K1 - 0x8C2C1725, // 004A GETMET R11 R11 K37 + 0x8C2C1724, // 004A GETMET R11 R11 K36 0x7C2C0200, // 004B CALL R11 1 0x7C1C0800, // 004C CALL R7 4 0x881C0101, // 004D GETMBR R7 R0 K1 - 0x8C1C0F26, // 004E GETMET R7 R7 K38 + 0x8C1C0F25, // 004E GETMET R7 R7 K37 0x7C1C0200, // 004F CALL R7 1 0x881C0101, // 0050 GETMBR R7 R0 K1 - 0x8C1C0F27, // 0051 GETMET R7 R7 K39 + 0x8C1C0F26, // 0051 GETMET R7 R7 K38 0x7C1C0200, // 0052 CALL R7 1 0x80000000, // 0053 RET 0 }) @@ -473,8 +471,8 @@ be_local_closure(class_Animate_core_set_current, /* name */ be_str_weak(set_current), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0xB8065000, // 0000 GETNGBL R1 K40 - 0x90065200, // 0001 SETMBR R1 K41 R0 + 0xB8064E00, // 0000 GETNGBL R1 K39 + 0x90065000, // 0001 SETMBR R1 K40 R0 0x80000000, // 0002 RET 0 }) ) @@ -534,9 +532,9 @@ be_local_closure(class_Animate_core_init, /* name */ 0x7C100200, // 0008 CALL R4 1 0x50100000, // 0009 LDBOOL R4 0 0 0x90021604, // 000A SETMBR R0 K11 R4 - 0x8C10032A, // 000B GETMET R4 R1 K42 + 0x8C100329, // 000B GETMET R4 R1 K41 0x7C100200, // 000C CALL R4 1 - 0x90025404, // 000D SETMBR R0 K42 R4 + 0x90025204, // 000D SETMBR R0 K41 R4 0x60100012, // 000E GETGBL R4 G18 0x7C100000, // 000F CALL R4 0 0x90021804, // 0010 SETMBR R0 K12 R4 @@ -546,17 +544,17 @@ be_local_closure(class_Animate_core_init, /* name */ 0x8C100102, // 0014 GETMET R4 R0 K2 0x7C100200, // 0015 CALL R4 1 0x8C100715, // 0016 GETMET R4 R3 K21 - 0x8818012A, // 0017 GETMBR R6 R0 K42 + 0x88180129, // 0017 GETMBR R6 R0 K41 0x7C100400, // 0018 CALL R4 2 0x90022A04, // 0019 SETMBR R0 K21 R4 0x8C100715, // 001A GETMET R4 R3 K21 - 0x8818012A, // 001B GETMBR R6 R0 K42 + 0x88180129, // 001B GETMBR R6 R0 K41 0x7C100400, // 001C CALL R4 2 - 0x90023804, // 001D SETMBR R0 K28 R4 + 0x90023604, // 001D SETMBR R0 K27 R4 0x84100000, // 001E CLOSURE R4 P0 0x90021E04, // 001F SETMBR R0 K15 R4 - 0x90022F2B, // 0020 SETMBR R0 K23 K43 - 0x8C10012C, // 0021 GETMET R4 R0 K44 + 0x90022F07, // 0020 SETMBR R0 K23 K7 + 0x8C10012A, // 0021 GETMET R4 R0 K42 0x7C100200, // 0022 CALL R4 1 0xA0000000, // 0023 CLOSE R0 0x80000000, // 0024 RET 0 @@ -583,8 +581,8 @@ be_local_closure(class_Animate_core_set_cb, /* name */ be_str_weak(set_cb), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x90024001, // 0000 SETMBR R0 K32 R1 - 0x90024202, // 0001 SETMBR R0 K33 R2 + 0x90023E01, // 0000 SETMBR R0 K31 R1 + 0x90024002, // 0001 SETMBR R0 K32 R2 0x80000000, // 0002 RET 0 }) ) @@ -634,11 +632,11 @@ be_local_closure(class_Animate_core_add_background_animator, /* name */ be_str_weak(add_background_animator), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C08032D, // 0000 GETMET R2 R1 K45 + 0x8C08032B, // 0000 GETMET R2 R1 K43 0x5C100000, // 0001 MOVE R4 R0 - 0x8814012E, // 0002 GETMBR R5 R0 K46 + 0x8814012C, // 0002 GETMBR R5 R0 K44 0x7C080600, // 0003 CALL R2 3 - 0x8C08012F, // 0004 GETMET R2 R0 K47 + 0x8C08012D, // 0004 GETMET R2 R0 K45 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 0x80000000, // 0007 RET 0 @@ -740,13 +738,13 @@ be_local_closure(class_Animate_core_start, /* name */ 0x140C0403, // 0007 LT R3 R2 R3 0x780E0004, // 0008 JMPF R3 #000E 0x940C0202, // 0009 GETIDX R3 R1 R2 - 0x8C0C0730, // 000A GETMET R3 R3 K48 + 0x8C0C072E, // 000A GETMET R3 R3 K46 0x7C0C0200, // 000B CALL R3 1 0x0008050D, // 000C ADD R2 R2 K13 0x7001FFF5, // 000D JMP #0004 0x90022707, // 000E SETMBR R0 K19 K7 0xB80E0800, // 000F GETNGBL R3 K4 - 0x8C0C0731, // 0010 GETMET R3 R3 K49 + 0x8C0C072F, // 0010 GETMET R3 R3 K47 0x8814010F, // 0011 GETMBR R5 R0 K15 0x7C0C0400, // 0012 CALL R3 2 0x80000000, // 0013 RET 0 diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h index da5a746a5..28805c5fc 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h @@ -79,8 +79,8 @@ be_local_class(Animate_painter, })), be_str_weak(Animate_painter) ); -// compact class 'Animate_pulse' ktab size: 18, total: 28 (saved 80 bytes) -static const bvalue be_ktab_class_Animate_pulse[18] = { +// compact class 'Animate_pulse' ktab size: 15, total: 28 (saved 104 bytes) +static const bvalue be_ktab_class_Animate_pulse[15] = { /* K0 */ be_nested_str_weak(pulse_size), /* K1 */ be_nested_str_weak(slew_size), /* K2 */ be_nested_str_weak(back_color), @@ -91,14 +91,11 @@ static const bvalue be_ktab_class_Animate_pulse[18] = { /* K7 */ be_const_int(1), /* K8 */ be_const_int(0), /* K9 */ be_const_int(-16777216), - /* K10 */ be_const_int(-16777216), - /* K11 */ be_nested_str_weak(fill_pixels), - /* K12 */ be_nested_str_weak(pixel_size), - /* K13 */ be_const_int(0), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(blend), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(scale_int), + /* K10 */ be_nested_str_weak(fill_pixels), + /* K11 */ be_nested_str_weak(pixel_size), + /* K12 */ be_nested_str_weak(blend), + /* K13 */ be_nested_str_weak(tasmota), + /* K14 */ be_nested_str_weak(scale_int), }; @@ -299,24 +296,24 @@ be_local_closure(class_Animate_pulse_paint, /* name */ &be_const_str_solidified, ( &(const binstruction[91]) { /* code */ 0x88080102, // 0000 GETMBR R2 R0 K2 - 0x200C050A, // 0001 NE R3 R2 K10 + 0x200C0509, // 0001 NE R3 R2 K9 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C030B, // 0003 GETMET R3 R1 K11 + 0x8C0C030A, // 0003 GETMET R3 R1 K10 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x880C0103, // 0006 GETMBR R3 R0 K3 0x88100101, // 0007 GETMBR R4 R0 K1 0x88140100, // 0008 GETMBR R5 R0 K0 0x88180104, // 0009 GETMBR R6 R0 K4 - 0x881C030C, // 000A GETMBR R7 R1 K12 + 0x881C030B, // 000A GETMBR R7 R1 K11 0x4C200000, // 000B LDNIL R8 0x4C240000, // 000C LDNIL R9 0x5C200600, // 000D MOVE R8 R3 0x00280605, // 000E ADD R10 R3 R5 0x5C241400, // 000F MOVE R9 R10 - 0x1428110D, // 0010 LT R10 R8 K13 + 0x14281108, // 0010 LT R10 R8 K8 0x782A0000, // 0011 JMPF R10 #0013 - 0x5820000D, // 0012 LDCONST R8 K13 + 0x58200008, // 0012 LDCONST R8 K8 0x28281207, // 0013 GE R10 R9 R7 0x782A0000, // 0014 JMPF R10 #0016 0x5C240E00, // 0015 MOVE R9 R7 @@ -324,68 +321,68 @@ be_local_closure(class_Animate_pulse_paint, /* name */ 0x142C1409, // 0017 LT R11 R10 R9 0x782E0002, // 0018 JMPF R11 #001C 0x98041406, // 0019 SETIDX R1 R10 R6 - 0x0028150E, // 001A ADD R10 R10 K14 + 0x00281507, // 001A ADD R10 R10 K7 0x7001FFFA, // 001B JMP #0017 - 0x242C090D, // 001C GT R11 R4 K13 + 0x242C0908, // 001C GT R11 R4 K8 0x782E003A, // 001D JMPF R11 #0059 0x042C0604, // 001E SUB R11 R3 R4 0x5C201600, // 001F MOVE R8 R11 0x5C240600, // 0020 MOVE R9 R3 - 0x142C110D, // 0021 LT R11 R8 K13 + 0x142C1108, // 0021 LT R11 R8 K8 0x782E0000, // 0022 JMPF R11 #0024 - 0x5820000D, // 0023 LDCONST R8 K13 + 0x58200008, // 0023 LDCONST R8 K8 0x282C1207, // 0024 GE R11 R9 R7 0x782E0000, // 0025 JMPF R11 #0027 0x5C240E00, // 0026 MOVE R9 R7 0x5C281000, // 0027 MOVE R10 R8 0x142C1409, // 0028 LT R11 R10 R9 0x782E000F, // 0029 JMPF R11 #003A - 0x8C2C030F, // 002A GETMET R11 R1 K15 + 0x8C2C030C, // 002A GETMET R11 R1 K12 0x5C340400, // 002B MOVE R13 R2 0x5C380C00, // 002C MOVE R14 R6 - 0xB83E2000, // 002D GETNGBL R15 K16 - 0x8C3C1F11, // 002E GETMET R15 R15 K17 + 0xB83E1A00, // 002D GETNGBL R15 K13 + 0x8C3C1F0E, // 002E GETMET R15 R15 K14 0x5C441400, // 002F MOVE R17 R10 0x04480604, // 0030 SUB R18 R3 R4 - 0x0448250E, // 0031 SUB R18 R18 K14 + 0x04482507, // 0031 SUB R18 R18 K7 0x5C4C0600, // 0032 MOVE R19 R3 0x545200FE, // 0033 LDINT R20 255 - 0x5854000D, // 0034 LDCONST R21 K13 + 0x58540008, // 0034 LDCONST R21 K8 0x7C3C0C00, // 0035 CALL R15 6 0x7C2C0800, // 0036 CALL R11 4 0x9804140B, // 0037 SETIDX R1 R10 R11 - 0x0028150E, // 0038 ADD R10 R10 K14 + 0x00281507, // 0038 ADD R10 R10 K7 0x7001FFED, // 0039 JMP #0028 0x002C0605, // 003A ADD R11 R3 R5 0x5C201600, // 003B MOVE R8 R11 0x002C0605, // 003C ADD R11 R3 R5 0x002C1604, // 003D ADD R11 R11 R4 0x5C241600, // 003E MOVE R9 R11 - 0x142C110D, // 003F LT R11 R8 K13 + 0x142C1108, // 003F LT R11 R8 K8 0x782E0000, // 0040 JMPF R11 #0042 - 0x5820000D, // 0041 LDCONST R8 K13 + 0x58200008, // 0041 LDCONST R8 K8 0x282C1207, // 0042 GE R11 R9 R7 0x782E0000, // 0043 JMPF R11 #0045 0x5C240E00, // 0044 MOVE R9 R7 0x5C281000, // 0045 MOVE R10 R8 0x142C1409, // 0046 LT R11 R10 R9 0x782E0010, // 0047 JMPF R11 #0059 - 0x8C2C030F, // 0048 GETMET R11 R1 K15 + 0x8C2C030C, // 0048 GETMET R11 R1 K12 0x5C340400, // 0049 MOVE R13 R2 0x5C380C00, // 004A MOVE R14 R6 - 0xB83E2000, // 004B GETNGBL R15 K16 - 0x8C3C1F11, // 004C GETMET R15 R15 K17 + 0xB83E1A00, // 004B GETNGBL R15 K13 + 0x8C3C1F0E, // 004C GETMET R15 R15 K14 0x5C441400, // 004D MOVE R17 R10 0x00480605, // 004E ADD R18 R3 R5 - 0x0448250E, // 004F SUB R18 R18 K14 + 0x04482507, // 004F SUB R18 R18 K7 0x004C0605, // 0050 ADD R19 R3 R5 0x004C2604, // 0051 ADD R19 R19 R4 - 0x5850000D, // 0052 LDCONST R20 K13 + 0x58500008, // 0052 LDCONST R20 K8 0x545600FE, // 0053 LDINT R21 255 0x7C3C0C00, // 0054 CALL R15 6 0x7C2C0800, // 0055 CALL R11 4 0x9804140B, // 0056 SETIDX R1 R10 R11 - 0x0028150E, // 0057 ADD R10 R10 K14 + 0x00281507, // 0057 ADD R10 R10 K7 0x7001FFEC, // 0058 JMP #0046 0x502C0200, // 0059 LDBOOL R11 1 0 0x80041600, // 005A RET 1 R11 diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h index acc2bcd20..36b654bd8 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h @@ -245,8 +245,8 @@ be_local_class(Animate_animator, be_str_weak(Animate_animator) ); extern const bclass be_class_Animate_palette; -// compact class 'Animate_palette' ktab size: 47, total: 87 (saved 320 bytes) -static const bvalue be_ktab_class_Animate_palette[47] = { +// compact class 'Animate_palette' ktab size: 43, total: 87 (saved 352 bytes) +static const bvalue be_ktab_class_Animate_palette[43] = { /* K0 */ be_const_class(be_class_Animate_palette), /* K1 */ be_nested_str_weak(ptr), /* K2 */ be_const_int(1), @@ -255,45 +255,41 @@ static const bvalue be_ktab_class_Animate_palette[47] = { /* K5 */ be_nested_str_weak(tasmota), /* K6 */ be_nested_str_weak(millis), /* K7 */ be_nested_str_weak(origin), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_nested_str_weak(slots), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(slots_arr), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(palette), - /* K15 */ be_nested_str_weak(get), - /* K16 */ be_nested_str_weak(color), - /* K17 */ be_nested_str_weak(set_rgb), - /* K18 */ be_nested_str_weak(bri), - /* K19 */ be_nested_str_weak(set_bri), - /* K20 */ be_nested_str_weak(r), - /* K21 */ be_nested_str_weak(g), - /* K22 */ be_nested_str_weak(b), - /* K23 */ be_nested_str_weak(obj), - /* K24 */ be_nested_str_weak(mth), - /* K25 */ be_nested_str_weak(ptr_to_palette), - /* K26 */ be_nested_str_weak(set_duration), - /* K27 */ be_nested_str_weak(range_min), - /* K28 */ be_nested_str_weak(range_max), - /* K29 */ be_nested_str_weak(set_range), - /* K30 */ be_nested_str_weak(parse_palette), - /* K31 */ be_const_int(0), - /* K32 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), - /* K33 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), - /* K34 */ be_const_real_hex(0x41200000), - /* K35 */ be_nested_str_weak(_X29_X3B), - /* K36 */ be_nested_str_weak(resize), - /* K37 */ be_nested_str_weak(scale_int), - /* K38 */ be_nested_str_weak(value_error), - /* K39 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex), - /* K40 */ be_const_int(2), - /* K41 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive), - /* K42 */ be_nested_str_weak(init), - /* K43 */ be_nested_str_weak(running), - /* K44 */ be_nested_str_weak(light_state), - /* K45 */ be_nested_str_weak(RGB), - /* K46 */ be_nested_str_weak(set_palette), + /* K8 */ be_nested_str_weak(scale_uint), + /* K9 */ be_nested_str_weak(slots), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(slots_arr), + /* K12 */ be_nested_str_weak(palette), + /* K13 */ be_nested_str_weak(get), + /* K14 */ be_nested_str_weak(color), + /* K15 */ be_nested_str_weak(set_rgb), + /* K16 */ be_nested_str_weak(bri), + /* K17 */ be_nested_str_weak(set_bri), + /* K18 */ be_nested_str_weak(r), + /* K19 */ be_nested_str_weak(g), + /* K20 */ be_nested_str_weak(b), + /* K21 */ be_nested_str_weak(obj), + /* K22 */ be_nested_str_weak(mth), + /* K23 */ be_nested_str_weak(ptr_to_palette), + /* K24 */ be_nested_str_weak(set_duration), + /* K25 */ be_nested_str_weak(range_min), + /* K26 */ be_nested_str_weak(range_max), + /* K27 */ be_nested_str_weak(set_range), + /* K28 */ be_nested_str_weak(parse_palette), + /* K29 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), + /* K30 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), + /* K31 */ be_const_real_hex(0x41200000), + /* K32 */ be_nested_str_weak(_X29_X3B), + /* K33 */ be_nested_str_weak(resize), + /* K34 */ be_nested_str_weak(scale_int), + /* K35 */ be_nested_str_weak(value_error), + /* K36 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex), + /* K37 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive), + /* K38 */ be_nested_str_weak(init), + /* K39 */ be_nested_str_weak(running), + /* K40 */ be_nested_str_weak(light_state), + /* K41 */ be_nested_str_weak(RGB), + /* K42 */ be_nested_str_weak(set_palette), }; @@ -398,13 +394,13 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x5C040400, // 000B MOVE R1 R2 0x88080107, // 000C GETMBR R2 R0 K7 0x04080202, // 000D SUB R2 R1 R2 - 0x140C0508, // 000E LT R3 R2 K8 + 0x140C0503, // 000E LT R3 R2 K3 0x780E0001, // 000F JMPF R3 #0012 - 0x58080008, // 0010 LDCONST R2 K8 + 0x58080003, // 0010 LDCONST R2 K3 0x88040107, // 0011 GETMBR R1 R0 K7 0x880C0104, // 0012 GETMBR R3 R0 K4 0xB8120A00, // 0013 GETNGBL R4 K5 - 0x88100909, // 0014 GETMBR R4 R4 K9 + 0x88100908, // 0014 GETMBR R4 R4 K8 0x28140403, // 0015 GE R5 R2 R3 0x78160005, // 0016 JMPF R5 #001D 0x0C180403, // 0017 DIV R6 R2 R3 @@ -413,34 +409,34 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x00140A06, // 001A ADD R5 R5 R6 0x90020E05, // 001B SETMBR R0 K7 R5 0x10080403, // 001C MOD R2 R2 R3 - 0x8814010A, // 001D GETMBR R5 R0 K10 - 0x04180B0B, // 001E SUB R6 R5 K11 - 0x241C0D08, // 001F GT R7 R6 K8 + 0x88140109, // 001D GETMBR R5 R0 K9 + 0x04180B0A, // 001E SUB R6 R5 K10 + 0x241C0D03, // 001F GT R7 R6 K3 0x781E0006, // 0020 JMPF R7 #0028 - 0x881C010C, // 0021 GETMBR R7 R0 K12 + 0x881C010B, // 0021 GETMBR R7 R0 K11 0x941C0E06, // 0022 GETIDX R7 R7 R6 0x281C0407, // 0023 GE R7 R2 R7 0x781E0000, // 0024 JMPF R7 #0026 0x70020001, // 0025 JMP #0028 - 0x04180D0D, // 0026 SUB R6 R6 K13 + 0x04180D02, // 0026 SUB R6 R6 K2 0x7001FFF6, // 0027 JMP #001F - 0x881C010E, // 0028 GETMBR R7 R0 K14 - 0x8C1C0F0F, // 0029 GETMET R7 R7 K15 + 0x881C010C, // 0028 GETMBR R7 R0 K12 + 0x8C1C0F0D, // 0029 GETMET R7 R7 K13 0x54260003, // 002A LDINT R9 4 0x08240C09, // 002B MUL R9 R6 R9 0x542A0003, // 002C LDINT R10 4 0x7C1C0600, // 002D CALL R7 3 - 0x8820010E, // 002E GETMBR R8 R0 K14 - 0x8C20110F, // 002F GETMET R8 R8 K15 - 0x00280D0D, // 0030 ADD R10 R6 K13 + 0x8820010C, // 002E GETMBR R8 R0 K12 + 0x8C20110D, // 002F GETMET R8 R8 K13 + 0x00280D02, // 0030 ADD R10 R6 K2 0x542E0003, // 0031 LDINT R11 4 0x0828140B, // 0032 MUL R10 R10 R11 0x542E0003, // 0033 LDINT R11 4 0x7C200600, // 0034 CALL R8 3 - 0x8824010C, // 0035 GETMBR R9 R0 K12 + 0x8824010B, // 0035 GETMBR R9 R0 K11 0x94241206, // 0036 GETIDX R9 R9 R6 - 0x00280D0D, // 0037 ADD R10 R6 K13 - 0x882C010C, // 0038 GETMBR R11 R0 K12 + 0x00280D02, // 0037 ADD R10 R6 K2 + 0x882C010B, // 0038 GETMBR R11 R0 K11 0x9428160A, // 0039 GETIDX R10 R11 R10 0x5C300800, // 003A MOVE R12 R4 0x5C340400, // 003B MOVE R13 R2 @@ -482,8 +478,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x544E00FE, // 005F LDINT R19 255 0x2C482413, // 0060 AND R18 R18 R19 0x7C340A00, // 0061 CALL R13 5 - 0x88380110, // 0062 GETMBR R14 R0 K16 - 0x8C3C1D11, // 0063 GETMET R15 R14 K17 + 0x8838010E, // 0062 GETMBR R14 R0 K14 + 0x8C3C1D0F, // 0063 GETMET R15 R14 K15 0x54460007, // 0064 LDINT R17 8 0x3C440E11, // 0065 SHR R17 R7 R17 0x544A00FE, // 0066 LDINT R18 255 @@ -497,8 +493,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x545200FE, // 006E LDINT R20 255 0x2C4C2614, // 006F AND R19 R19 R20 0x7C3C0800, // 0070 CALL R15 4 - 0x883C1D12, // 0071 GETMBR R15 R14 K18 - 0x8C401D11, // 0072 GETMET R16 R14 K17 + 0x883C1D10, // 0071 GETMBR R15 R14 K16 + 0x8C401D0F, // 0072 GETMET R16 R14 K15 0x544A0007, // 0073 LDINT R18 8 0x3C481012, // 0074 SHR R18 R8 R18 0x544E00FE, // 0075 LDINT R19 255 @@ -512,7 +508,7 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x545600FE, // 007D LDINT R21 255 0x2C502815, // 007E AND R20 R20 R21 0x7C400800, // 007F CALL R16 4 - 0x88401D12, // 0080 GETMBR R16 R14 K18 + 0x88401D10, // 0080 GETMBR R16 R14 K16 0x5C440800, // 0081 MOVE R17 R4 0x5C480400, // 0082 MOVE R18 R2 0x5C4C1200, // 0083 MOVE R19 R9 @@ -520,45 +516,45 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x5C541E00, // 0085 MOVE R21 R15 0x5C582000, // 0086 MOVE R22 R16 0x7C440A00, // 0087 CALL R17 5 - 0x8C481D11, // 0088 GETMET R18 R14 K17 + 0x8C481D0F, // 0088 GETMET R18 R14 K15 0x5C501600, // 0089 MOVE R20 R11 0x5C541800, // 008A MOVE R21 R12 0x5C581A00, // 008B MOVE R22 R13 0x7C480800, // 008C CALL R18 4 - 0x8C481D13, // 008D GETMET R18 R14 K19 + 0x8C481D11, // 008D GETMET R18 R14 K17 0x5C502200, // 008E MOVE R20 R17 0x7C480400, // 008F CALL R18 2 - 0x882C1D14, // 0090 GETMBR R11 R14 K20 - 0x88301D15, // 0091 GETMBR R12 R14 K21 - 0x88341D16, // 0092 GETMBR R13 R14 K22 - 0x88480112, // 0093 GETMBR R18 R0 K18 + 0x882C1D12, // 0090 GETMBR R11 R14 K18 + 0x88301D13, // 0091 GETMBR R12 R14 K19 + 0x88341D14, // 0092 GETMBR R13 R14 K20 + 0x88480110, // 0093 GETMBR R18 R0 K16 0x544E0063, // 0094 LDINT R19 100 0x204C2413, // 0095 NE R19 R18 R19 0x784E001A, // 0096 JMPF R19 #00B2 0xB84E0A00, // 0097 GETNGBL R19 K5 - 0x8C4C2709, // 0098 GETMET R19 R19 K9 + 0x8C4C2708, // 0098 GETMET R19 R19 K8 0x5C541600, // 0099 MOVE R21 R11 - 0x58580008, // 009A LDCONST R22 K8 + 0x58580003, // 009A LDCONST R22 K3 0x545E0063, // 009B LDINT R23 100 - 0x58600008, // 009C LDCONST R24 K8 + 0x58600003, // 009C LDCONST R24 K3 0x5C642400, // 009D MOVE R25 R18 0x7C4C0C00, // 009E CALL R19 6 0x5C2C2600, // 009F MOVE R11 R19 0xB84E0A00, // 00A0 GETNGBL R19 K5 - 0x8C4C2709, // 00A1 GETMET R19 R19 K9 + 0x8C4C2708, // 00A1 GETMET R19 R19 K8 0x5C541800, // 00A2 MOVE R21 R12 - 0x58580008, // 00A3 LDCONST R22 K8 + 0x58580003, // 00A3 LDCONST R22 K3 0x545E0063, // 00A4 LDINT R23 100 - 0x58600008, // 00A5 LDCONST R24 K8 + 0x58600003, // 00A5 LDCONST R24 K3 0x5C642400, // 00A6 MOVE R25 R18 0x7C4C0C00, // 00A7 CALL R19 6 0x5C302600, // 00A8 MOVE R12 R19 0xB84E0A00, // 00A9 GETNGBL R19 K5 - 0x8C4C2709, // 00AA GETMET R19 R19 K9 + 0x8C4C2708, // 00AA GETMET R19 R19 K8 0x5C541A00, // 00AB MOVE R21 R13 - 0x58580008, // 00AC LDCONST R22 K8 + 0x58580003, // 00AC LDCONST R22 K3 0x545E0063, // 00AD LDINT R23 100 - 0x58600008, // 00AE LDCONST R24 K8 + 0x58600003, // 00AE LDCONST R24 K3 0x5C642400, // 00AF MOVE R25 R18 0x7C4C0C00, // 00B0 CALL R19 6 0x5C342600, // 00B1 MOVE R13 R19 @@ -568,8 +564,8 @@ be_local_closure(class_Animate_palette_animate, /* name */ 0x38501814, // 00B5 SHL R20 R12 R20 0x304C2614, // 00B6 OR R19 R19 R20 0x304C260D, // 00B7 OR R19 R19 R13 - 0x88500117, // 00B8 GETMBR R20 R0 K23 - 0x88540118, // 00B9 GETMBR R21 R0 K24 + 0x88500115, // 00B8 GETMBR R20 R0 K21 + 0x88540116, // 00B9 GETMBR R21 R0 K22 0x78520004, // 00BA JMPF R20 #00C0 0x78560003, // 00BB JMPF R21 #00C0 0x5C582A00, // 00BC MOVE R22 R21 @@ -605,36 +601,36 @@ be_local_closure(class_Animate_palette_set_palette, /* name */ 0x7C080200, // 0002 CALL R2 1 0x1C080501, // 0003 EQ R2 R2 K1 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080119, // 0005 GETMET R2 R0 K25 + 0x8C080117, // 0005 GETMET R2 R0 K23 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x5C040400, // 0008 MOVE R1 R2 - 0x90021C01, // 0009 SETMBR R0 K14 R1 + 0x90021801, // 0009 SETMBR R0 K12 R1 0x6008000C, // 000A GETGBL R2 G12 0x5C0C0200, // 000B MOVE R3 R1 0x7C080200, // 000C CALL R2 1 0x540E0003, // 000D LDINT R3 4 0x0C080403, // 000E DIV R2 R2 R3 - 0x90021402, // 000F SETMBR R0 K10 R2 + 0x90021202, // 000F SETMBR R0 K9 R2 0x88080104, // 0010 GETMBR R2 R0 K4 0x4C0C0000, // 0011 LDNIL R3 0x20080403, // 0012 NE R2 R2 R3 0x780A0003, // 0013 JMPF R2 #0018 - 0x8C08011A, // 0014 GETMET R2 R0 K26 + 0x8C080118, // 0014 GETMET R2 R0 K24 0x88100104, // 0015 GETMBR R4 R0 K4 0x7C080400, // 0016 CALL R2 2 0x7002000B, // 0017 JMP #0024 - 0x8808011B, // 0018 GETMBR R2 R0 K27 + 0x88080119, // 0018 GETMBR R2 R0 K25 0x4C0C0000, // 0019 LDNIL R3 0x20080403, // 001A NE R2 R2 R3 0x780A0007, // 001B JMPF R2 #0024 - 0x8808011C, // 001C GETMBR R2 R0 K28 + 0x8808011A, // 001C GETMBR R2 R0 K26 0x4C0C0000, // 001D LDNIL R3 0x20080403, // 001E NE R2 R2 R3 0x780A0003, // 001F JMPF R2 #0024 - 0x8C08011D, // 0020 GETMET R2 R0 K29 - 0x8810011B, // 0021 GETMBR R4 R0 K27 - 0x8814011C, // 0022 GETMBR R5 R0 K28 + 0x8C08011B, // 0020 GETMET R2 R0 K27 + 0x88100119, // 0021 GETMBR R4 R0 K25 + 0x8814011A, // 0022 GETMBR R5 R0 K26 0x7C080600, // 0023 CALL R2 3 0x80000000, // 0024 RET 0 }) @@ -664,20 +660,20 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ 0x5C080200, // 0001 MOVE R2 R1 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 - 0x8C0C051E, // 0004 GETMET R3 R2 K30 - 0x5814001F, // 0005 LDCONST R5 K31 + 0x8C0C051C, // 0004 GETMET R3 R2 K28 + 0x58140003, // 0005 LDCONST R5 K3 0x541A03E7, // 0006 LDINT R6 1000 0x7C0C0600, // 0007 CALL R3 3 - 0x58100020, // 0008 LDCONST R4 K32 - 0x5814001F, // 0009 LDCONST R5 K31 + 0x5810001D, // 0008 LDCONST R4 K29 + 0x58140003, // 0009 LDCONST R5 K3 0x6018000C, // 000A GETGBL R6 G12 0x5C1C0600, // 000B MOVE R7 R3 0x7C180200, // 000C CALL R6 1 0x14180A06, // 000D LT R6 R5 R6 0x781A001C, // 000E JMPF R6 #002C 0x94180605, // 000F GETIDX R6 R3 R5 - 0x881C050E, // 0010 GETMBR R7 R2 K14 - 0x8C1C0F0F, // 0011 GETMET R7 R7 K15 + 0x881C050C, // 0010 GETMBR R7 R2 K12 + 0x8C1C0F0D, // 0011 GETMET R7 R7 K13 0x54260003, // 0012 LDINT R9 4 0x08240A09, // 0013 MUL R9 R5 R9 0x542A0003, // 0014 LDINT R10 4 @@ -695,16 +691,16 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */ 0x542E00FE, // 0020 LDINT R11 255 0x2C28140B, // 0021 AND R10 R10 R11 0x602C0018, // 0022 GETGBL R11 G24 - 0x58300021, // 0023 LDCONST R12 K33 + 0x5830001E, // 0023 LDCONST R12 K30 0x5C341000, // 0024 MOVE R13 R8 0x5C381200, // 0025 MOVE R14 R9 0x5C3C1400, // 0026 MOVE R15 R10 - 0x0C400D22, // 0027 DIV R16 R6 K34 + 0x0C400D1F, // 0027 DIV R16 R6 K31 0x7C2C0A00, // 0028 CALL R11 5 0x0010080B, // 0029 ADD R4 R4 R11 0x00140B02, // 002A ADD R5 R5 K2 0x7001FFDD, // 002B JMP #000A - 0x00100923, // 002C ADD R4 R4 K35 + 0x00100920, // 002C ADD R4 R4 K32 0x80040800, // 002D RET 1 R4 }) ) @@ -732,7 +728,7 @@ be_local_closure(class_Animate_palette_set_bri, /* name */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x90022402, // 0003 SETMBR R0 K18 R2 + 0x90022002, // 0003 SETMBR R0 K16 R2 0x80000000, // 0004 RET 0 }) ) @@ -759,24 +755,24 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */ ( &(const binstruction[71]) { /* code */ 0x600C0012, // 0000 GETGBL R3 G18 0x7C0C0000, // 0001 CALL R3 0 - 0x8810010A, // 0002 GETMBR R4 R0 K10 - 0x8C140724, // 0003 GETMET R5 R3 K36 + 0x88100109, // 0002 GETMBR R4 R0 K9 + 0x8C140721, // 0003 GETMET R5 R3 K33 0x5C1C0800, // 0004 MOVE R7 R4 0x7C140400, // 0005 CALL R5 2 - 0x8814010E, // 0006 GETMBR R5 R0 K14 - 0x8C140B0F, // 0007 GETMET R5 R5 K15 - 0x581C001F, // 0008 LDCONST R7 K31 + 0x8814010C, // 0006 GETMBR R5 R0 K12 + 0x8C140B0D, // 0007 GETMET R5 R5 K13 + 0x581C0003, // 0008 LDCONST R7 K3 0x58200002, // 0009 LDCONST R8 K2 0x7C140600, // 000A CALL R5 3 - 0x20140B1F, // 000B NE R5 R5 K31 + 0x20140B03, // 000B NE R5 R5 K3 0x78160024, // 000C JMPF R5 #0032 - 0x5814001F, // 000D LDCONST R5 K31 - 0x5818001F, // 000E LDCONST R6 K31 + 0x58140003, // 000D LDCONST R5 K3 + 0x58180003, // 000E LDCONST R6 K3 0x041C0902, // 000F SUB R7 R4 K2 0x141C0C07, // 0010 LT R7 R6 R7 0x781E0008, // 0011 JMPF R7 #001B - 0x881C010E, // 0012 GETMBR R7 R0 K14 - 0x8C1C0F0F, // 0013 GETMET R7 R7 K15 + 0x881C010C, // 0012 GETMBR R7 R0 K12 + 0x8C1C0F0D, // 0013 GETMET R7 R7 K13 0x54260003, // 0014 LDINT R9 4 0x08240C09, // 0015 MUL R9 R6 R9 0x58280002, // 0016 LDCONST R10 K2 @@ -784,21 +780,21 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */ 0x00140A07, // 0018 ADD R5 R5 R7 0x00180D02, // 0019 ADD R6 R6 K2 0x7001FFF3, // 001A JMP #000F - 0x581C001F, // 001B LDCONST R7 K31 - 0x5818001F, // 001C LDCONST R6 K31 + 0x581C0003, // 001B LDCONST R7 K3 + 0x58180003, // 001C LDCONST R6 K3 0x14200C04, // 001D LT R8 R6 R4 0x78220011, // 001E JMPF R8 #0031 0xB8220A00, // 001F GETNGBL R8 K5 - 0x8C201125, // 0020 GETMET R8 R8 K37 + 0x8C201122, // 0020 GETMET R8 R8 K34 0x5C280E00, // 0021 MOVE R10 R7 - 0x582C001F, // 0022 LDCONST R11 K31 + 0x582C0003, // 0022 LDCONST R11 K3 0x5C300A00, // 0023 MOVE R12 R5 0x5C340200, // 0024 MOVE R13 R1 0x5C380400, // 0025 MOVE R14 R2 0x7C200C00, // 0026 CALL R8 6 0x980C0C08, // 0027 SETIDX R3 R6 R8 - 0x8820010E, // 0028 GETMBR R8 R0 K14 - 0x8C20110F, // 0029 GETMET R8 R8 K15 + 0x8820010C, // 0028 GETMBR R8 R0 K12 + 0x8C20110D, // 0029 GETMET R8 R8 K13 0x542A0003, // 002A LDINT R10 4 0x08280C0A, // 002B MUL R10 R6 R10 0x582C0002, // 002C LDCONST R11 K2 @@ -807,19 +803,19 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */ 0x00180D02, // 002F ADD R6 R6 K2 0x7001FFEB, // 0030 JMP #001D 0x70020013, // 0031 JMP #0046 - 0x5814001F, // 0032 LDCONST R5 K31 + 0x58140003, // 0032 LDCONST R5 K3 0x14180A04, // 0033 LT R6 R5 R4 0x781A0010, // 0034 JMPF R6 #0046 - 0x8818010E, // 0035 GETMBR R6 R0 K14 - 0x8C180D0F, // 0036 GETMET R6 R6 K15 + 0x8818010C, // 0035 GETMBR R6 R0 K12 + 0x8C180D0D, // 0036 GETMET R6 R6 K13 0x54220003, // 0037 LDINT R8 4 0x08200A08, // 0038 MUL R8 R5 R8 0x58240002, // 0039 LDCONST R9 K2 0x7C180600, // 003A CALL R6 3 0xB81E0A00, // 003B GETNGBL R7 K5 - 0x8C1C0F25, // 003C GETMET R7 R7 K37 + 0x8C1C0F22, // 003C GETMET R7 R7 K34 0x5C240C00, // 003D MOVE R9 R6 - 0x5828001F, // 003E LDCONST R10 K31 + 0x58280003, // 003E LDCONST R10 K3 0x542E00FE, // 003F LDINT R11 255 0x5C300200, // 0040 MOVE R12 R1 0x5C340400, // 0041 MOVE R13 R2 @@ -853,14 +849,14 @@ be_local_closure(class_Animate_palette_set_range, /* name */ ( &(const binstruction[11]) { /* code */ 0x280C0202, // 0000 GE R3 R1 R2 0x780E0000, // 0001 JMPF R3 #0003 - 0xB0064D27, // 0002 RAISE 1 K38 K39 - 0x90023601, // 0003 SETMBR R0 K27 R1 - 0x90023802, // 0004 SETMBR R0 K28 R2 - 0x8C0C011E, // 0005 GETMET R3 R0 K30 + 0xB0064724, // 0002 RAISE 1 K35 K36 + 0x90023201, // 0003 SETMBR R0 K25 R1 + 0x90023402, // 0004 SETMBR R0 K26 R2 + 0x8C0C011C, // 0005 GETMET R3 R0 K28 0x5C140200, // 0006 MOVE R5 R1 0x5C180400, // 0007 MOVE R6 R2 0x7C0C0600, // 0008 CALL R3 3 - 0x90021803, // 0009 SETMBR R0 K12 R3 + 0x90021603, // 0009 SETMBR R0 K11 R3 0x80000000, // 000A RET 0 }) ) @@ -885,46 +881,46 @@ be_local_closure(class_Animate_palette_set_value, /* name */ be_str_weak(set_value), &be_const_str_solidified, ( &(const binstruction[96]) { /* code */ - 0x8808011B, // 0000 GETMBR R2 R0 K27 + 0x88080119, // 0000 GETMBR R2 R0 K25 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x740A0003, // 0003 JMPT R2 #0008 - 0x8808011C, // 0004 GETMBR R2 R0 K28 + 0x8808011A, // 0004 GETMBR R2 R0 K26 0x4C0C0000, // 0005 LDNIL R3 0x1C080403, // 0006 EQ R2 R2 R3 0x780A0001, // 0007 JMPF R2 #000A 0x4C080000, // 0008 LDNIL R2 0x80040400, // 0009 RET 1 R2 0xB80A0A00, // 000A GETNGBL R2 K5 - 0x88080525, // 000B GETMBR R2 R2 K37 - 0x880C010A, // 000C GETMBR R3 R0 K10 - 0x04100728, // 000D SUB R4 R3 K40 - 0x24140908, // 000E GT R5 R4 K8 + 0x88080522, // 000B GETMBR R2 R2 K34 + 0x880C0109, // 000C GETMBR R3 R0 K9 + 0x0410070A, // 000D SUB R4 R3 K10 + 0x24140903, // 000E GT R5 R4 K3 0x78160006, // 000F JMPF R5 #0017 - 0x8814010C, // 0010 GETMBR R5 R0 K12 + 0x8814010B, // 0010 GETMBR R5 R0 K11 0x94140A04, // 0011 GETIDX R5 R5 R4 0x28140205, // 0012 GE R5 R1 R5 0x78160000, // 0013 JMPF R5 #0015 0x70020001, // 0014 JMP #0017 - 0x0410090D, // 0015 SUB R4 R4 K13 + 0x04100902, // 0015 SUB R4 R4 K2 0x7001FFF6, // 0016 JMP #000E - 0x8814010E, // 0017 GETMBR R5 R0 K14 - 0x8C140B0F, // 0018 GETMET R5 R5 K15 + 0x8814010C, // 0017 GETMBR R5 R0 K12 + 0x8C140B0D, // 0018 GETMET R5 R5 K13 0x541E0003, // 0019 LDINT R7 4 0x081C0807, // 001A MUL R7 R4 R7 0x54220003, // 001B LDINT R8 4 0x7C140600, // 001C CALL R5 3 - 0x8818010E, // 001D GETMBR R6 R0 K14 - 0x8C180D0F, // 001E GETMET R6 R6 K15 - 0x0020090D, // 001F ADD R8 R4 K13 + 0x8818010C, // 001D GETMBR R6 R0 K12 + 0x8C180D0D, // 001E GETMET R6 R6 K13 + 0x00200902, // 001F ADD R8 R4 K2 0x54260003, // 0020 LDINT R9 4 0x08201009, // 0021 MUL R8 R8 R9 0x54260003, // 0022 LDINT R9 4 0x7C180600, // 0023 CALL R6 3 - 0x881C010C, // 0024 GETMBR R7 R0 K12 + 0x881C010B, // 0024 GETMBR R7 R0 K11 0x941C0E04, // 0025 GETIDX R7 R7 R4 - 0x0020090D, // 0026 ADD R8 R4 K13 - 0x8824010C, // 0027 GETMBR R9 R0 K12 + 0x00200902, // 0026 ADD R8 R4 K2 + 0x8824010B, // 0027 GETMBR R9 R0 K11 0x94201208, // 0028 GETIDX R8 R9 R8 0x5C280400, // 0029 MOVE R10 R2 0x5C2C0200, // 002A MOVE R11 R1 @@ -972,8 +968,8 @@ be_local_closure(class_Animate_palette_set_value, /* name */ 0x3834140D, // 0054 SHL R13 R10 R13 0x3030180D, // 0055 OR R12 R12 R13 0x3030180B, // 0056 OR R12 R12 R11 - 0x88340117, // 0057 GETMBR R13 R0 K23 - 0x88380118, // 0058 GETMBR R14 R0 K24 + 0x88340115, // 0057 GETMBR R13 R0 K21 + 0x88380116, // 0058 GETMBR R14 R0 K22 0x78360004, // 0059 JMPF R13 #005F 0x783A0003, // 005A JMPF R14 #005F 0x5C3C1C00, // 005B MOVE R15 R14 @@ -1008,15 +1004,15 @@ be_local_closure(class_Animate_palette_set_duration, /* name */ 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x18080308, // 0004 LE R2 R1 K8 + 0x18080303, // 0004 LE R2 R1 K3 0x780A0000, // 0005 JMPF R2 #0007 - 0xB0064D29, // 0006 RAISE 1 K38 K41 + 0xB0064725, // 0006 RAISE 1 K35 K37 0x90020801, // 0007 SETMBR R0 K4 R1 - 0x8C08011E, // 0008 GETMET R2 R0 K30 - 0x58100008, // 0009 LDCONST R4 K8 + 0x8C08011C, // 0008 GETMET R2 R0 K28 + 0x58100003, // 0009 LDCONST R4 K3 0x04140302, // 000A SUB R5 R1 K2 0x7C080600, // 000B CALL R2 3 - 0x90021802, // 000C SETMBR R0 K12 R2 + 0x90021602, // 000C SETMBR R0 K11 R2 0x80000000, // 000D RET 0 }) ) @@ -1044,19 +1040,19 @@ be_local_closure(class_Animate_palette_init, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C072A, // 0003 GETMET R3 R3 K42 + 0x8C0C0726, // 0003 GETMET R3 R3 K38 0x7C0C0200, // 0004 CALL R3 1 0x90020802, // 0005 SETMBR R0 K4 R2 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x90025603, // 0007 SETMBR R0 K43 R3 + 0x90024E03, // 0007 SETMBR R0 K39 R3 0x540E0063, // 0008 LDINT R3 100 - 0x90022403, // 0009 SETMBR R0 K18 R3 - 0xB80E5800, // 000A GETNGBL R3 K44 - 0xB8125800, // 000B GETNGBL R4 K44 - 0x8810092D, // 000C GETMBR R4 R4 K45 + 0x90022003, // 0009 SETMBR R0 K16 R3 + 0xB80E5000, // 000A GETNGBL R3 K40 + 0xB8125000, // 000B GETNGBL R4 K40 + 0x88100929, // 000C GETMBR R4 R4 K41 0x7C0C0200, // 000D CALL R3 1 - 0x90022003, // 000E SETMBR R0 K16 R3 - 0x8C0C012E, // 000F GETMET R3 R0 K46 + 0x90021C03, // 000E SETMBR R0 K14 R3 + 0x8C0C012A, // 000F GETMET R3 R0 K42 0x5C140200, // 0010 MOVE R5 R1 0x7C0C0400, // 0011 CALL R3 2 0x80000000, // 0012 RET 0 @@ -1095,8 +1091,8 @@ be_local_class(Animate_palette, })), be_str_weak(Animate_palette) ); -// compact class 'Animate_oscillator' ktab size: 24, total: 38 (saved 112 bytes) -static const bvalue be_ktab_class_Animate_oscillator[24] = { +// compact class 'Animate_oscillator' ktab size: 21, total: 38 (saved 136 bytes) +static const bvalue be_ktab_class_Animate_oscillator[21] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(duty_cycle), /* K2 */ be_nested_str_weak(a), @@ -1105,22 +1101,19 @@ static const bvalue be_ktab_class_Animate_oscillator[24] = { /* K5 */ be_nested_str_weak(form), /* K6 */ be_nested_str_weak(phase), /* K7 */ be_nested_str_weak(init), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(duration_ms), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(millis), - /* K14 */ be_nested_str_weak(origin), - /* K15 */ be_nested_str_weak(scale_uint), - /* K16 */ be_nested_str_weak(beat), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(scale_int), - /* K19 */ be_const_int(2), - /* K20 */ be_const_int(3), - /* K21 */ be_nested_str_weak(sine_int), - /* K22 */ be_nested_str_weak(obj), - /* K23 */ be_nested_str_weak(mth), + /* K8 */ be_nested_str_weak(duration_ms), + /* K9 */ be_nested_str_weak(value), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(millis), + /* K12 */ be_nested_str_weak(origin), + /* K13 */ be_nested_str_weak(scale_uint), + /* K14 */ be_nested_str_weak(beat), + /* K15 */ be_nested_str_weak(scale_int), + /* K16 */ be_const_int(2), + /* K17 */ be_const_int(3), + /* K18 */ be_nested_str_weak(sine_int), + /* K19 */ be_nested_str_weak(obj), + /* K20 */ be_nested_str_weak(mth), }; @@ -1291,17 +1284,17 @@ be_local_closure(class_Animate_oscillator_init, /* name */ 0x7C140200, // 0002 CALL R5 1 0x8C140B07, // 0003 GETMET R5 R5 K7 0x7C140200, // 0004 CALL R5 1 - 0x90020D08, // 0005 SETMBR R0 K6 K8 + 0x90020D00, // 0005 SETMBR R0 K6 K0 0x54160031, // 0006 LDINT R5 50 0x90020205, // 0007 SETMBR R0 K1 R5 0x90020401, // 0008 SETMBR R0 K2 R1 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x90021203, // 000A SETMBR R0 K9 R3 - 0x90021401, // 000B SETMBR R0 K10 R1 + 0x90021003, // 000A SETMBR R0 K8 R3 + 0x90021201, // 000B SETMBR R0 K9 R1 0x4C140000, // 000C LDNIL R5 0x1C140805, // 000D EQ R5 R4 R5 0x78160000, // 000E JMPF R5 #0010 - 0x5810000B, // 000F LDCONST R4 K11 + 0x58100004, // 000F LDCONST R4 K4 0x90020A04, // 0010 SETMBR R0 K5 R4 0x80000000, // 0011 RET 0 }) @@ -1327,7 +1320,7 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ be_str_weak(animate), &be_const_str_solidified, ( &(const binstruction[141]) { /* code */ - 0x88080109, // 0000 GETMBR R2 R0 K9 + 0x88080108, // 0000 GETMBR R2 R0 K8 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0000, // 0003 JMPF R2 #0005 @@ -1335,20 +1328,20 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x4C080000, // 0005 LDNIL R2 0x1C080202, // 0006 EQ R2 R1 R2 0x780A0003, // 0007 JMPF R2 #000C - 0xB80A1800, // 0008 GETNGBL R2 K12 - 0x8C08050D, // 0009 GETMET R2 R2 K13 + 0xB80A1400, // 0008 GETNGBL R2 K10 + 0x8C08050B, // 0009 GETMET R2 R2 K11 0x7C080200, // 000A CALL R2 1 0x5C040400, // 000B MOVE R1 R2 - 0x8808010E, // 000C GETMBR R2 R0 K14 + 0x8808010C, // 000C GETMBR R2 R0 K12 0x04080202, // 000D SUB R2 R1 R2 0x140C0500, // 000E LT R3 R2 K0 0x780E0001, // 000F JMPF R3 #0012 0x58080000, // 0010 LDCONST R2 K0 - 0x8804010E, // 0011 GETMBR R1 R0 K14 - 0x880C0109, // 0012 GETMBR R3 R0 K9 + 0x8804010C, // 0011 GETMBR R1 R0 K12 + 0x880C0108, // 0012 GETMBR R3 R0 K8 0x4C100000, // 0013 LDNIL R4 - 0xB8161800, // 0014 GETNGBL R5 K12 - 0x8C140B0F, // 0015 GETMET R5 R5 K15 + 0xB8161400, // 0014 GETNGBL R5 K10 + 0x8C140B0D, // 0015 GETMET R5 R5 K13 0x881C0101, // 0016 GETMBR R7 R0 K1 0x58200000, // 0017 LDCONST R8 K0 0x54260063, // 0018 LDINT R9 100 @@ -1360,21 +1353,21 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x78160007, // 001E JMPF R5 #0027 0x0C180403, // 001F DIV R6 R2 R3 0x08180C03, // 0020 MUL R6 R6 R3 - 0x8814010E, // 0021 GETMBR R5 R0 K14 + 0x8814010C, // 0021 GETMBR R5 R0 K12 0x00140A06, // 0022 ADD R5 R5 R6 - 0x90021C05, // 0023 SETMBR R0 K14 R5 + 0x90021805, // 0023 SETMBR R0 K12 R5 0x10080403, // 0024 MOD R2 R2 R3 - 0x8C140110, // 0025 GETMET R5 R0 K16 + 0x8C14010E, // 0025 GETMET R5 R0 K14 0x7C140200, // 0026 CALL R5 1 0x88140102, // 0027 GETMBR R5 R0 K2 0x88180103, // 0028 GETMBR R6 R0 K3 - 0x881C010A, // 0029 GETMBR R7 R0 K10 + 0x881C0109, // 0029 GETMBR R7 R0 K9 0x5C200400, // 002A MOVE R8 R2 0x88240106, // 002B GETMBR R9 R0 K6 0x24241300, // 002C GT R9 R9 K0 0x7826000B, // 002D JMPF R9 #003A - 0xB8261800, // 002E GETNGBL R9 K12 - 0x8C24130F, // 002F GETMET R9 R9 K15 + 0xB8261400, // 002E GETNGBL R9 K10 + 0x8C24130D, // 002F GETMET R9 R9 K13 0x882C0106, // 0030 GETMBR R11 R0 K6 0x58300000, // 0031 LDCONST R12 K0 0x54360063, // 0032 LDINT R13 100 @@ -1386,45 +1379,45 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x78260000, // 0038 JMPF R9 #003A 0x04201003, // 0039 SUB R8 R8 R3 0x88240105, // 003A GETMBR R9 R0 K5 - 0x1C241311, // 003B EQ R9 R9 K17 + 0x1C241304, // 003B EQ R9 R9 K4 0x78260009, // 003C JMPF R9 #0047 - 0xB8261800, // 003D GETNGBL R9 K12 - 0x8C241312, // 003E GETMET R9 R9 K18 + 0xB8261400, // 003D GETNGBL R9 K10 + 0x8C24130F, // 003E GETMET R9 R9 K15 0x5C2C1000, // 003F MOVE R11 R8 0x58300000, // 0040 LDCONST R12 K0 - 0x04340711, // 0041 SUB R13 R3 K17 + 0x04340704, // 0041 SUB R13 R3 K4 0x5C380A00, // 0042 MOVE R14 R5 0x5C3C0C00, // 0043 MOVE R15 R6 0x7C240C00, // 0044 CALL R9 6 0x5C1C1200, // 0045 MOVE R7 R9 0x7002003B, // 0046 JMP #0083 0x88240105, // 0047 GETMBR R9 R0 K5 - 0x1C241313, // 0048 EQ R9 R9 K19 + 0x1C241310, // 0048 EQ R9 R9 K16 0x78260015, // 0049 JMPF R9 #0060 0x14241004, // 004A LT R9 R8 R4 0x78260009, // 004B JMPF R9 #0056 - 0xB8261800, // 004C GETNGBL R9 K12 - 0x8C241312, // 004D GETMET R9 R9 K18 + 0xB8261400, // 004C GETNGBL R9 K10 + 0x8C24130F, // 004D GETMET R9 R9 K15 0x5C2C1000, // 004E MOVE R11 R8 0x58300000, // 004F LDCONST R12 K0 - 0x04340911, // 0050 SUB R13 R4 K17 + 0x04340904, // 0050 SUB R13 R4 K4 0x5C380A00, // 0051 MOVE R14 R5 0x5C3C0C00, // 0052 MOVE R15 R6 0x7C240C00, // 0053 CALL R9 6 0x5C1C1200, // 0054 MOVE R7 R9 0x70020008, // 0055 JMP #005F - 0xB8261800, // 0056 GETNGBL R9 K12 - 0x8C241312, // 0057 GETMET R9 R9 K18 + 0xB8261400, // 0056 GETNGBL R9 K10 + 0x8C24130F, // 0057 GETMET R9 R9 K15 0x5C2C1000, // 0058 MOVE R11 R8 0x5C300800, // 0059 MOVE R12 R4 - 0x04340711, // 005A SUB R13 R3 K17 + 0x04340704, // 005A SUB R13 R3 K4 0x5C380C00, // 005B MOVE R14 R6 0x5C3C0A00, // 005C MOVE R15 R5 0x7C240C00, // 005D CALL R9 6 0x5C1C1200, // 005E MOVE R7 R9 0x70020022, // 005F JMP #0083 0x88240105, // 0060 GETMBR R9 R0 K5 - 0x1C241314, // 0061 EQ R9 R9 K20 + 0x1C241311, // 0061 EQ R9 R9 K17 0x78260005, // 0062 JMPF R9 #0069 0x14241004, // 0063 LT R9 R8 R4 0x78260001, // 0064 JMPF R9 #0067 @@ -1436,21 +1429,21 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x542A0003, // 006A LDINT R10 4 0x1C24120A, // 006B EQ R9 R9 R10 0x78260015, // 006C JMPF R9 #0083 - 0xB8261800, // 006D GETNGBL R9 K12 - 0x8C241312, // 006E GETMET R9 R9 K18 + 0xB8261400, // 006D GETNGBL R9 K10 + 0x8C24130F, // 006E GETMET R9 R9 K15 0x5C2C1000, // 006F MOVE R11 R8 0x58300000, // 0070 LDCONST R12 K0 - 0x04340711, // 0071 SUB R13 R3 K17 + 0x04340704, // 0071 SUB R13 R3 K4 0x58380000, // 0072 LDCONST R14 K0 0x543E7FFE, // 0073 LDINT R15 32767 0x7C240C00, // 0074 CALL R9 6 - 0xB82A1800, // 0075 GETNGBL R10 K12 - 0x8C281515, // 0076 GETMET R10 R10 K21 + 0xB82A1400, // 0075 GETNGBL R10 K10 + 0x8C281512, // 0076 GETMET R10 R10 K18 0x54321FFF, // 0077 LDINT R12 8192 0x0430120C, // 0078 SUB R12 R9 R12 0x7C280400, // 0079 CALL R10 2 - 0xB82E1800, // 007A GETNGBL R11 K12 - 0x8C2C1712, // 007B GETMET R11 R11 K18 + 0xB82E1400, // 007A GETNGBL R11 K10 + 0x8C2C170F, // 007B GETMET R11 R11 K15 0x5C341400, // 007C MOVE R13 R10 0x5439EFFF, // 007D LDINT R14 -4096 0x543E0FFF, // 007E LDINT R15 4096 @@ -1458,9 +1451,9 @@ be_local_closure(class_Animate_oscillator_animate, /* name */ 0x5C440C00, // 0080 MOVE R17 R6 0x7C2C0C00, // 0081 CALL R11 6 0x5C1C1600, // 0082 MOVE R7 R11 - 0x90021407, // 0083 SETMBR R0 K10 R7 - 0x88240116, // 0084 GETMBR R9 R0 K22 - 0x88280117, // 0085 GETMBR R10 R0 K23 + 0x90021207, // 0083 SETMBR R0 K9 R7 + 0x88240113, // 0084 GETMBR R9 R0 K19 + 0x88280114, // 0085 GETMBR R10 R0 K20 0x78260004, // 0086 JMPF R9 #008C 0x782A0003, // 0087 JMPF R10 #008C 0x5C2C1400, // 0088 MOVE R11 R10 diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h index 9e094c5a2..4e2246ae4 100644 --- a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h +++ b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h @@ -3,6 +3,16 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +// compact class 'Leds_frame_be' ktab size: 6, total: 7 (saved 8 bytes) +static const bvalue be_ktab_class_Leds_frame_be[6] = { + /* K0 */ be_nested_str(set), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str(setitem), + /* K3 */ be_nested_str(get), + /* K4 */ be_nested_str(pixel_size), + /* K5 */ be_nested_str(init), +}; + extern const bclass be_class_Leds_frame_be; @@ -13,15 +23,13 @@ be_local_closure(class_Leds_frame_be_setitem, /* name */ be_nested_proto( 8, /* nstack */ 3, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(set), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_setitem, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ @@ -45,23 +53,20 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ be_nested_proto( 11, /* nstack */ 6, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(setitem), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_set_pixel, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x4C180000, // 0000 LDNIL R6 0x1C180A06, // 0001 EQ R6 R5 R6 0x781A0000, // 0002 JMPF R6 #0004 - 0x58140000, // 0003 LDCONST R5 K0 + 0x58140001, // 0003 LDCONST R5 K1 0x541A00FE, // 0004 LDINT R6 255 0x2C180A06, // 0005 AND R6 R5 R6 0x541E0017, // 0006 LDINT R7 24 @@ -79,7 +84,7 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */ 0x541E00FE, // 0012 LDINT R7 255 0x2C1C0807, // 0013 AND R7 R4 R7 0x30180C07, // 0014 OR R6 R6 R7 - 0x8C1C0101, // 0015 GETMET R7 R0 K1 + 0x8C1C0102, // 0015 GETMET R7 R0 K2 0x5C240200, // 0016 MOVE R9 R1 0x5C280C00, // 0017 MOVE R10 R6 0x7C1C0600, // 0018 CALL R7 3 @@ -97,19 +102,17 @@ be_local_closure(class_Leds_frame_be_item, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(get), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_item, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x8C080103, // 0000 GETMET R2 R0 K3 0x54120003, // 0001 LDINT R4 4 0x08100204, // 0002 MUL R4 R1 R4 0x54160003, // 0003 LDINT R5 4 @@ -128,28 +131,24 @@ be_local_closure(class_Leds_frame_be_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(pixel_size), - /* K2 */ be_nested_str(init), - }), + &be_ktab_class_Leds_frame_be, /* shared constants */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x14080300, // 0000 LT R2 R1 K0 + 0x14080301, // 0000 LT R2 R1 K1 0x780A0000, // 0001 JMPF R2 #0003 0x44040200, // 0002 NEG R1 R1 - 0x90020201, // 0003 SETMBR R0 K1 R1 + 0x90020801, // 0003 SETMBR R0 K4 R1 0x60080003, // 0004 GETGBL R2 G3 0x5C0C0000, // 0005 MOVE R3 R0 0x7C080200, // 0006 CALL R2 1 - 0x8C080502, // 0007 GETMET R2 R2 K2 + 0x8C080505, // 0007 GETMET R2 R2 K5 0x5411FFFB, // 0008 LDINT R4 -4 0x08100204, // 0009 MUL R4 R1 R4 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h index 1d0768004..e8ccdbd73 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Control_Message' ktab size: 23, total: 31 (saved 64 bytes) -static const bvalue be_ktab_class_Matter_Control_Message[23] = { +// compact class 'Matter_Control_Message' ktab size: 22, total: 31 (saved 72 bytes) +static const bvalue be_ktab_class_Matter_Control_Message[22] = { /* K0 */ be_nested_str_weak(session), /* K1 */ be_nested_str_weak(log), /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s), @@ -27,7 +27,6 @@ static const bvalue be_ktab_class_Matter_Control_Message[23] = { /* K19 */ be_const_int(1), /* K20 */ be_nested_str_weak(parse_MsgCounterSyncRsp), /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X), - /* K22 */ be_const_int(2), }; @@ -183,7 +182,7 @@ be_local_closure(class_Matter_Control_Message_process_incoming_control_message, 0x58100015, // 001A LDCONST R4 K21 0x88140310, // 001B GETMBR R5 R1 K16 0x7C0C0400, // 001C CALL R3 2 - 0x58100016, // 001D LDCONST R4 K22 + 0x58100007, // 001D LDCONST R4 K7 0x7C080400, // 001E CALL R2 2 0x50080000, // 001F LDBOOL R2 0 0 0x80040400, // 0020 RET 1 R2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h index ac8ce61c1..ca63bd343 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_EventHandler' ktab size: 61, total: 86 (saved 200 bytes) -static const bvalue be_ktab_class_Matter_EventHandler[61] = { +// compact class 'Matter_EventHandler' ktab size: 58, total: 86 (saved 224 bytes) +static const bvalue be_ktab_class_Matter_EventHandler[58] = { /* K0 */ be_nested_str_weak(tasmota), /* K1 */ be_nested_str_weak(log), /* K2 */ be_nested_str_weak(MTR_X3A_X20Events_X20queues_X20sizes_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), @@ -19,53 +19,50 @@ static const bvalue be_ktab_class_Matter_EventHandler[61] = { /* K11 */ be_nested_str_weak(MTR_X3A_X20Events_X20by_X20types_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s), /* K12 */ be_nested_str_weak(counter_event_no), /* K13 */ be_nested_str_weak(add), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(counter_event_no_persisted), - /* K16 */ be_nested_str_weak(load_event_no_persisted), - /* K17 */ be_nested_str_weak(persist), - /* K18 */ be_nested_str_weak(find), - /* K19 */ be_nested_str_weak(EVENT_NO_KEY), - /* K20 */ be_nested_str_weak(0), - /* K21 */ be_nested_str_weak(int64), - /* K22 */ be_nested_str_weak(fromstring), - /* K23 */ be_nested_str_weak(EVENT_NO_INCR), - /* K24 */ be_nested_str_weak(setmember), - /* K25 */ be_nested_str_weak(tostring), - /* K26 */ be_nested_str_weak(save), - /* K27 */ be_nested_str_weak(push), - /* K28 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), - /* K29 */ be_nested_str_weak(pop), - /* K30 */ be_const_int(0), - /* K31 */ be_nested_str_weak(matter), - /* K32 */ be_nested_str_weak(EVENT_DEBUG), - /* K33 */ be_nested_str_weak(EVENT_INFO), - /* K34 */ be_nested_str_weak(compact), - /* K35 */ be_nested_str_weak(device), - /* K36 */ be_nested_str_weak(EventQueued), - /* K37 */ be_nested_str_weak(get_next_event_no), - /* K38 */ be_nested_str_weak(loglevel), - /* K39 */ be_const_int(3), - /* K40 */ be_nested_str_weak(), - /* K41 */ be_nested_str_weak(_X2C_X20), - /* K42 */ be_nested_str_weak(val), - /* K43 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), - /* K44 */ be_nested_str_weak(CRIT_X20_X20), - /* K45 */ be_const_int(1), - /* K46 */ be_nested_str_weak(INFO_X20_X20), - /* K47 */ be_nested_str_weak(DEBUG_X20), - /* K48 */ be_nested_str_weak(get_event_name), - /* K49 */ be_nested_str_weak(_X28), - /* K50 */ be_nested_str_weak(_X29_X20), - /* K51 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), - /* K52 */ be_nested_str_weak(event_no), - /* K53 */ be_nested_str_weak(endpoint), - /* K54 */ be_nested_str_weak(cluster), - /* K55 */ be_nested_str_weak(event_id), - /* K56 */ be_nested_str_weak(queue_event), - /* K57 */ be_nested_str_weak(message_handler), - /* K58 */ be_nested_str_weak(im), - /* K59 */ be_nested_str_weak(subs_shop), - /* K60 */ be_nested_str_weak(event_published), + /* K14 */ be_nested_str_weak(counter_event_no_persisted), + /* K15 */ be_nested_str_weak(load_event_no_persisted), + /* K16 */ be_nested_str_weak(persist), + /* K17 */ be_nested_str_weak(find), + /* K18 */ be_nested_str_weak(EVENT_NO_KEY), + /* K19 */ be_nested_str_weak(0), + /* K20 */ be_nested_str_weak(int64), + /* K21 */ be_nested_str_weak(fromstring), + /* K22 */ be_nested_str_weak(EVENT_NO_INCR), + /* K23 */ be_nested_str_weak(setmember), + /* K24 */ be_nested_str_weak(tostring), + /* K25 */ be_nested_str_weak(save), + /* K26 */ be_nested_str_weak(push), + /* K27 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX), + /* K28 */ be_nested_str_weak(pop), + /* K29 */ be_nested_str_weak(matter), + /* K30 */ be_nested_str_weak(EVENT_DEBUG), + /* K31 */ be_nested_str_weak(EVENT_INFO), + /* K32 */ be_nested_str_weak(compact), + /* K33 */ be_nested_str_weak(device), + /* K34 */ be_nested_str_weak(EventQueued), + /* K35 */ be_nested_str_weak(get_next_event_no), + /* K36 */ be_nested_str_weak(loglevel), + /* K37 */ be_const_int(3), + /* K38 */ be_nested_str_weak(), + /* K39 */ be_nested_str_weak(_X2C_X20), + /* K40 */ be_nested_str_weak(val), + /* K41 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i), + /* K42 */ be_nested_str_weak(CRIT_X20_X20), + /* K43 */ be_nested_str_weak(INFO_X20_X20), + /* K44 */ be_nested_str_weak(DEBUG_X20), + /* K45 */ be_nested_str_weak(get_event_name), + /* K46 */ be_nested_str_weak(_X28), + /* K47 */ be_nested_str_weak(_X29_X20), + /* K48 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s), + /* K49 */ be_nested_str_weak(event_no), + /* K50 */ be_nested_str_weak(endpoint), + /* K51 */ be_nested_str_weak(cluster), + /* K52 */ be_nested_str_weak(event_id), + /* K53 */ be_nested_str_weak(queue_event), + /* K54 */ be_nested_str_weak(message_handler), + /* K55 */ be_nested_str_weak(im), + /* K56 */ be_nested_str_weak(subs_shop), + /* K57 */ be_nested_str_weak(event_published), }; @@ -212,14 +209,14 @@ be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */ ( &(const binstruction[13]) { /* code */ 0x8804010C, // 0000 GETMBR R1 R0 K12 0x8C04030D, // 0001 GETMET R1 R1 K13 - 0x580C000E, // 0002 LDCONST R3 K14 + 0x580C0009, // 0002 LDCONST R3 K9 0x7C040400, // 0003 CALL R1 2 0x90021801, // 0004 SETMBR R0 K12 R1 0x8804010C, // 0005 GETMBR R1 R0 K12 - 0x8808010F, // 0006 GETMBR R2 R0 K15 + 0x8808010E, // 0006 GETMBR R2 R0 K14 0x28040202, // 0007 GE R1 R1 R2 0x78060001, // 0008 JMPF R1 #000B - 0x8C040110, // 0009 GETMET R1 R0 K16 + 0x8C04010F, // 0009 GETMET R1 R0 K15 0x7C040200, // 000A CALL R1 1 0x8804010C, // 000B GETMBR R1 R0 K12 0x80040200, // 000C RET 1 R1 @@ -246,30 +243,30 @@ be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */ be_str_weak(load_event_no_persisted), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0xA4062200, // 0000 IMPORT R1 K17 + 0xA4062000, // 0000 IMPORT R1 K16 0x60080008, // 0001 GETGBL R2 G8 - 0x8C0C0312, // 0002 GETMET R3 R1 K18 - 0x88140113, // 0003 GETMBR R5 R0 K19 - 0x58180014, // 0004 LDCONST R6 K20 + 0x8C0C0311, // 0002 GETMET R3 R1 K17 + 0x88140112, // 0003 GETMBR R5 R0 K18 + 0x58180013, // 0004 LDCONST R6 K19 0x7C0C0600, // 0005 CALL R3 3 0x7C080200, // 0006 CALL R2 1 - 0xB80E2A00, // 0007 GETNGBL R3 K21 - 0x8C0C0716, // 0008 GETMET R3 R3 K22 + 0xB80E2800, // 0007 GETNGBL R3 K20 + 0x8C0C0715, // 0008 GETMET R3 R3 K21 0x5C140400, // 0009 MOVE R5 R2 0x7C0C0400, // 000A CALL R3 2 0x90021803, // 000B SETMBR R0 K12 R3 0x880C010C, // 000C GETMBR R3 R0 K12 0x8C0C070D, // 000D GETMET R3 R3 K13 - 0x88140117, // 000E GETMBR R5 R0 K23 + 0x88140116, // 000E GETMBR R5 R0 K22 0x7C0C0400, // 000F CALL R3 2 - 0x90021E03, // 0010 SETMBR R0 K15 R3 - 0x8C0C0318, // 0011 GETMET R3 R1 K24 - 0x88140113, // 0012 GETMBR R5 R0 K19 - 0x8818010F, // 0013 GETMBR R6 R0 K15 - 0x8C180D19, // 0014 GETMET R6 R6 K25 + 0x90021C03, // 0010 SETMBR R0 K14 R3 + 0x8C0C0317, // 0011 GETMET R3 R1 K23 + 0x88140112, // 0012 GETMBR R5 R0 K18 + 0x8818010E, // 0013 GETMBR R6 R0 K14 + 0x8C180D18, // 0014 GETMET R6 R6 K24 0x7C180200, // 0015 CALL R6 1 0x7C0C0600, // 0016 CALL R3 3 - 0x8C0C031A, // 0017 GETMET R3 R1 K26 + 0x8C0C0319, // 0017 GETMET R3 R1 K25 0x7C0C0200, // 0018 CALL R3 1 0x80000000, // 0019 RET 0 }) @@ -297,56 +294,56 @@ be_local_closure(class_Matter_EventHandler_queue_event, /* name */ ( &(const binstruction[54]) { /* code */ 0x88080308, // 0000 GETMBR R2 R1 K8 0x880C0105, // 0001 GETMBR R3 R0 K5 - 0x8C0C071B, // 0002 GETMET R3 R3 K27 + 0x8C0C071A, // 0002 GETMET R3 R3 K26 0x5C140200, // 0003 MOVE R5 R1 0x7C0C0400, // 0004 CALL R3 2 0x600C000C, // 0005 GETGBL R3 G12 0x88100105, // 0006 GETMBR R4 R0 K5 0x7C0C0200, // 0007 CALL R3 1 - 0x8810011C, // 0008 GETMBR R4 R0 K28 + 0x8810011B, // 0008 GETMBR R4 R0 K27 0x240C0604, // 0009 GT R3 R3 R4 0x780E0029, // 000A JMPF R3 #0035 0x880C0105, // 000B GETMBR R3 R0 K5 - 0x8C0C071D, // 000C GETMET R3 R3 K29 - 0x5814001E, // 000D LDCONST R5 K30 + 0x8C0C071C, // 000C GETMET R3 R3 K28 + 0x58140007, // 000D LDCONST R5 K7 0x7C0C0400, // 000E CALL R3 2 0x88100708, // 000F GETMBR R4 R3 K8 - 0xB8163E00, // 0010 GETNGBL R5 K31 - 0x88140B20, // 0011 GETMBR R5 R5 K32 + 0xB8163A00, // 0010 GETNGBL R5 K29 + 0x88140B1E, // 0011 GETMBR R5 R5 K30 0x24100805, // 0012 GT R4 R4 R5 0x78120020, // 0013 JMPF R4 #0035 0x88100104, // 0014 GETMBR R4 R0 K4 - 0x8C10091B, // 0015 GETMET R4 R4 K27 + 0x8C10091A, // 0015 GETMET R4 R4 K26 0x5C180600, // 0016 MOVE R6 R3 0x7C100400, // 0017 CALL R4 2 0x6010000C, // 0018 GETGBL R4 G12 0x88140104, // 0019 GETMBR R5 R0 K4 0x7C100200, // 001A CALL R4 1 - 0x8814011C, // 001B GETMBR R5 R0 K28 + 0x8814011B, // 001B GETMBR R5 R0 K27 0x24100805, // 001C GT R4 R4 R5 0x78120016, // 001D JMPF R4 #0035 0x88100104, // 001E GETMBR R4 R0 K4 - 0x8C10091D, // 001F GETMET R4 R4 K29 - 0x5818001E, // 0020 LDCONST R6 K30 + 0x8C10091C, // 001F GETMET R4 R4 K28 + 0x58180007, // 0020 LDCONST R6 K7 0x7C100400, // 0021 CALL R4 2 0x88140908, // 0022 GETMBR R5 R4 K8 - 0xB81A3E00, // 0023 GETNGBL R6 K31 - 0x88180D21, // 0024 GETMBR R6 R6 K33 + 0xB81A3A00, // 0023 GETNGBL R6 K29 + 0x88180D1F, // 0024 GETMBR R6 R6 K31 0x24140A06, // 0025 GT R5 R5 R6 0x7816000D, // 0026 JMPF R5 #0035 0x88140103, // 0027 GETMBR R5 R0 K3 - 0x8C140B1B, // 0028 GETMET R5 R5 K27 + 0x8C140B1A, // 0028 GETMET R5 R5 K26 0x5C1C0800, // 0029 MOVE R7 R4 0x7C140400, // 002A CALL R5 2 0x6014000C, // 002B GETGBL R5 G12 0x88180103, // 002C GETMBR R6 R0 K3 0x7C140200, // 002D CALL R5 1 - 0x8818011C, // 002E GETMBR R6 R0 K28 + 0x8818011B, // 002E GETMBR R6 R0 K27 0x24140A06, // 002F GT R5 R5 R6 0x78160003, // 0030 JMPF R5 #0035 0x88140103, // 0031 GETMBR R5 R0 K3 - 0x8C140B1D, // 0032 GETMET R5 R5 K29 - 0x581C001E, // 0033 LDCONST R7 K30 + 0x8C140B1C, // 0032 GETMET R5 R5 K28 + 0x581C0007, // 0033 LDCONST R7 K7 0x7C140400, // 0034 CALL R5 2 0x80000000, // 0035 RET 0 }) @@ -372,7 +369,7 @@ be_local_closure(class_Matter_EventHandler_every_second, /* name */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040122, // 0000 GETMET R1 R0 K34 + 0x8C040120, // 0000 GETMET R1 R0 K32 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -398,7 +395,7 @@ be_local_closure(class_Matter_EventHandler_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x90024601, // 0000 SETMBR R0 K35 R1 + 0x90024201, // 0000 SETMBR R0 K33 R1 0x60080012, // 0001 GETGBL R2 G18 0x7C080000, // 0002 CALL R2 0 0x90020A02, // 0003 SETMBR R0 K5 R2 @@ -408,7 +405,7 @@ be_local_closure(class_Matter_EventHandler_init, /* name */ 0x60080012, // 0007 GETGBL R2 G18 0x7C080000, // 0008 CALL R2 0 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x8C080110, // 000A GETMET R2 R0 K16 + 0x8C08010F, // 000A GETMET R2 R0 K15 0x7C080200, // 000B CALL R2 1 0x80000000, // 000C RET 0 }) @@ -531,9 +528,9 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ be_str_weak(publish_event), &be_const_str_solidified, ( &(const binstruction[112]) { /* code */ - 0xB8263E00, // 0000 GETNGBL R9 K31 - 0x8C241324, // 0001 GETMET R9 R9 K36 - 0x8C2C0125, // 0002 GETMET R11 R0 K37 + 0xB8263A00, // 0000 GETNGBL R9 K29 + 0x8C241322, // 0001 GETMET R9 R9 K34 + 0x8C2C0123, // 0002 GETMET R11 R0 K35 0x7C2C0200, // 0003 CALL R11 1 0x5C300200, // 0004 MOVE R12 R1 0x5C340400, // 0005 MOVE R13 R2 @@ -545,11 +542,11 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x5C4C1000, // 000B MOVE R19 R8 0x7C241400, // 000C CALL R9 10 0xB82A0000, // 000D GETNGBL R10 K0 - 0x8C281526, // 000E GETMET R10 R10 K38 - 0x58300027, // 000F LDCONST R12 K39 + 0x8C281524, // 000E GETMET R10 R10 K36 + 0x58300025, // 000F LDCONST R12 K37 0x7C280400, // 0010 CALL R10 2 0x782A0052, // 0011 JMPF R10 #0065 - 0x58280028, // 0012 LDCONST R10 K40 + 0x58280026, // 0012 LDCONST R10 K38 0x4C2C0000, // 0013 LDNIL R11 0x202C0C0B, // 0014 NE R11 R6 R11 0x782E0003, // 0015 JMPF R11 #001A @@ -563,7 +560,7 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x602C0008, // 001D GETGBL R11 G8 0x5C300E00, // 001E MOVE R12 R7 0x7C2C0200, // 001F CALL R11 1 - 0x002E520B, // 0020 ADD R11 K41 R11 + 0x002E4E0B, // 0020 ADD R11 K39 R11 0x0028140B, // 0021 ADD R10 R10 R11 0x4C2C0000, // 0022 LDNIL R11 0x202C100B, // 0023 NE R11 R8 R11 @@ -571,16 +568,16 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x602C0008, // 0025 GETGBL R11 G8 0x5C301000, // 0026 MOVE R12 R8 0x7C2C0200, // 0027 CALL R11 1 - 0x002E520B, // 0028 ADD R11 K41 R11 + 0x002E4E0B, // 0028 ADD R11 K39 R11 0x0028140B, // 0029 ADD R10 R10 R11 0x542E0027, // 002A LDINT R11 40 0x1C2C040B, // 002B EQ R11 R2 R11 0x782E0014, // 002C JMPF R11 #0042 - 0x1C2C071E, // 002D EQ R11 R3 K30 + 0x1C2C0707, // 002D EQ R11 R3 K7 0x782E0012, // 002E JMPF R11 #0042 - 0x882C0D2A, // 002F GETMBR R11 R6 K42 + 0x882C0D28, // 002F GETMBR R11 R6 K40 0x60300018, // 0030 GETGBL R12 G24 - 0x5834002B, // 0031 LDCONST R13 K43 + 0x58340029, // 0031 LDCONST R13 K41 0x543A0017, // 0032 LDINT R14 24 0x3C38160E, // 0033 SHR R14 R11 R14 0x543E00FE, // 0034 LDINT R15 255 @@ -599,47 +596,47 @@ be_local_closure(class_Matter_EventHandler_publish_event, /* name */ 0x5C281800, // 0041 MOVE R10 R12 0x1C2C0B06, // 0042 EQ R11 R5 K6 0x782E0001, // 0043 JMPF R11 #0046 - 0x582C002C, // 0044 LDCONST R11 K44 + 0x582C002A, // 0044 LDCONST R11 K42 0x70020004, // 0045 JMP #004B - 0x1C2C0B2D, // 0046 EQ R11 R5 K45 + 0x1C2C0B09, // 0046 EQ R11 R5 K9 0x782E0001, // 0047 JMPF R11 #004A - 0x582C002E, // 0048 LDCONST R11 K46 + 0x582C002B, // 0048 LDCONST R11 K43 0x70020000, // 0049 JMP #004B - 0x582C002F, // 004A LDCONST R11 K47 - 0xB8323E00, // 004B GETNGBL R12 K31 - 0x8C301930, // 004C GETMET R12 R12 K48 + 0x582C002C, // 004A LDCONST R11 K44 + 0xB8323A00, // 004B GETNGBL R12 K29 + 0x8C30192D, // 004C GETMET R12 R12 K45 0x5C380400, // 004D MOVE R14 R2 0x5C3C0600, // 004E MOVE R15 R3 0x7C300600, // 004F CALL R12 3 0x4C340000, // 0050 LDNIL R13 0x2034180D, // 0051 NE R13 R12 R13 0x78360002, // 0052 JMPF R13 #0056 - 0x0036620C, // 0053 ADD R13 K49 R12 - 0x00341B32, // 0054 ADD R13 R13 K50 + 0x00365C0C, // 0053 ADD R13 K46 R12 + 0x00341B2F, // 0054 ADD R13 R13 K47 0x70020000, // 0055 JMP #0057 - 0x58340028, // 0056 LDCONST R13 K40 + 0x58340026, // 0056 LDCONST R13 K38 0x5C301A00, // 0057 MOVE R12 R13 0xB8360200, // 0058 GETNGBL R13 K1 0x60380018, // 0059 GETGBL R14 G24 - 0x583C0033, // 005A LDCONST R15 K51 + 0x583C0030, // 005A LDCONST R15 K48 0x5C401600, // 005B MOVE R16 R11 - 0x88441334, // 005C GETMBR R17 R9 K52 - 0x88481335, // 005D GETMBR R18 R9 K53 - 0x884C1336, // 005E GETMBR R19 R9 K54 - 0x88501337, // 005F GETMBR R20 R9 K55 + 0x88441331, // 005C GETMBR R17 R9 K49 + 0x88481332, // 005D GETMBR R18 R9 K50 + 0x884C1333, // 005E GETMBR R19 R9 K51 + 0x88501334, // 005F GETMBR R20 R9 K52 0x5C541800, // 0060 MOVE R21 R12 0x5C581400, // 0061 MOVE R22 R10 0x7C381000, // 0062 CALL R14 8 0x583C0006, // 0063 LDCONST R15 K6 0x7C340400, // 0064 CALL R13 2 - 0x8C280138, // 0065 GETMET R10 R0 K56 + 0x8C280135, // 0065 GETMET R10 R0 K53 0x5C301200, // 0066 MOVE R12 R9 0x7C280400, // 0067 CALL R10 2 - 0x88280123, // 0068 GETMBR R10 R0 K35 - 0x88281539, // 0069 GETMBR R10 R10 K57 - 0x8828153A, // 006A GETMBR R10 R10 K58 - 0x8828153B, // 006B GETMBR R10 R10 K59 - 0x8C28153C, // 006C GETMET R10 R10 K60 + 0x88280121, // 0068 GETMBR R10 R0 K33 + 0x88281536, // 0069 GETMBR R10 R10 K54 + 0x88281537, // 006A GETMBR R10 R10 K55 + 0x88281538, // 006B GETMBR R10 R10 K56 + 0x8C281539, // 006C GETMET R10 R10 K57 0x5C301200, // 006D MOVE R12 R9 0x7C280400, // 006E CALL R10 2 0x80000000, // 006F RET 0 @@ -745,8 +742,8 @@ be_local_class(Matter_EventHandler, })), be_str_weak(Matter_EventHandler) ); -// compact class 'Matter_EventQueued' ktab size: 31, total: 43 (saved 96 bytes) -static const bvalue be_ktab_class_Matter_EventQueued[31] = { +// compact class 'Matter_EventQueued' ktab size: 28, total: 43 (saved 120 bytes) +static const bvalue be_ktab_class_Matter_EventQueued[28] = { /* K0 */ be_nested_str_weak(raw_tlv), /* K1 */ be_nested_str_weak(eventreport2raw), /* K2 */ be_nested_str_weak(endpoint), @@ -770,14 +767,11 @@ static const bvalue be_ktab_class_Matter_EventQueued[31] = { /* K20 */ be_nested_str_weak(add), /* K21 */ be_const_int(1), /* K22 */ be_const_int(2), - /* K23 */ be_const_int(1), - /* K24 */ be_nested_str_weak(eventpath2raw), - /* K25 */ be_nested_str_weak(low32), - /* K26 */ be_nested_str_weak(high32), - /* K27 */ be_nested_str_weak(tag_sub), - /* K28 */ be_const_int(0), - /* K29 */ be_nested_str_weak(tlv2raw), - /* K30 */ be_const_int(2), + /* K23 */ be_nested_str_weak(eventpath2raw), + /* K24 */ be_nested_str_weak(low32), + /* K25 */ be_nested_str_weak(high32), + /* K26 */ be_nested_str_weak(tag_sub), + /* K27 */ be_nested_str_weak(tlv2raw), }; @@ -1046,13 +1040,13 @@ be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ ( &(const binstruction[83]) { /* code */ 0x8C300314, // 0000 GETMET R12 R1 K20 0x543A0014, // 0001 LDINT R14 21 - 0x583C0017, // 0002 LDCONST R15 K23 + 0x583C0015, // 0002 LDCONST R15 K21 0x7C300600, // 0003 CALL R12 3 0x8C300314, // 0004 GETMET R12 R1 K20 0x543A3500, // 0005 LDINT R14 13569 0x543DFFFD, // 0006 LDINT R15 -2 0x7C300600, // 0007 CALL R12 3 - 0x8C300118, // 0008 GETMET R12 R0 K24 + 0x8C300117, // 0008 GETMET R12 R0 K23 0x5C380200, // 0009 MOVE R14 R1 0x5C3C0400, // 000A MOVE R15 R2 0x5C400600, // 000B MOVE R16 R3 @@ -1064,12 +1058,12 @@ be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ 0x543DFFFD, // 0011 LDINT R15 -2 0x7C300600, // 0012 CALL R12 3 0x8C300314, // 0013 GETMET R12 R1 K20 - 0x8C380F19, // 0014 GETMET R14 R7 K25 + 0x8C380F18, // 0014 GETMET R14 R7 K24 0x7C380200, // 0015 CALL R14 1 0x543E0003, // 0016 LDINT R15 4 0x7C300600, // 0017 CALL R12 3 0x8C300314, // 0018 GETMET R12 R1 K20 - 0x8C380F1A, // 0019 GETMET R14 R7 K26 + 0x8C380F19, // 0019 GETMET R14 R7 K25 0x7C380200, // 001A CALL R14 1 0x543E0003, // 001B LDINT R15 4 0x7C300600, // 001C CALL R12 3 @@ -1079,7 +1073,7 @@ be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ 0x7C300600, // 0020 CALL R12 3 0x8C300314, // 0021 GETMET R12 R1 K20 0x5C380C00, // 0022 MOVE R14 R6 - 0x583C0017, // 0023 LDCONST R15 K23 + 0x583C0015, // 0023 LDCONST R15 K21 0x7C300600, // 0024 CALL R12 3 0x8C300314, // 0025 GETMET R12 R1 K20 0x543A2602, // 0026 LDINT R14 9731 @@ -1096,35 +1090,35 @@ be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */ 0x4C300000, // 0031 LDNIL R12 0x2030120C, // 0032 NE R12 R9 R12 0x78320003, // 0033 JMPF R12 #0038 - 0x9026371C, // 0034 SETMBR R9 K27 K28 - 0x8C30131D, // 0035 GETMET R12 R9 K29 + 0x9026350C, // 0034 SETMBR R9 K26 K12 + 0x8C30131B, // 0035 GETMET R12 R9 K27 0x5C380200, // 0036 MOVE R14 R1 0x7C300400, // 0037 CALL R12 2 0x4C300000, // 0038 LDNIL R12 0x2030140C, // 0039 NE R12 R10 R12 0x78320003, // 003A JMPF R12 #003F - 0x902A3717, // 003B SETMBR R10 K27 K23 - 0x8C30151D, // 003C GETMET R12 R10 K29 + 0x902A3515, // 003B SETMBR R10 K26 K21 + 0x8C30151B, // 003C GETMET R12 R10 K27 0x5C380200, // 003D MOVE R14 R1 0x7C300400, // 003E CALL R12 2 0x4C300000, // 003F LDNIL R12 0x2030160C, // 0040 NE R12 R11 R12 0x78320003, // 0041 JMPF R12 #0046 - 0x902E371E, // 0042 SETMBR R11 K27 K30 - 0x8C30171D, // 0043 GETMET R12 R11 K29 + 0x902E3516, // 0042 SETMBR R11 K26 K22 + 0x8C30171B, // 0043 GETMET R12 R11 K27 0x5C380200, // 0044 MOVE R14 R1 0x7C300400, // 0045 CALL R12 2 0x8C300314, // 0046 GETMET R12 R1 K20 0x543A0017, // 0047 LDINT R14 24 - 0x583C0017, // 0048 LDCONST R15 K23 + 0x583C0015, // 0048 LDCONST R15 K21 0x7C300600, // 0049 CALL R12 3 0x8C300314, // 004A GETMET R12 R1 K20 0x543A0017, // 004B LDINT R14 24 - 0x583C0017, // 004C LDCONST R15 K23 + 0x583C0015, // 004C LDCONST R15 K21 0x7C300600, // 004D CALL R12 3 0x8C300314, // 004E GETMET R12 R1 K20 0x543A0017, // 004F LDINT R14 24 - 0x583C0017, // 0050 LDCONST R15 K23 + 0x583C0015, // 0050 LDCONST R15 K21 0x7C300600, // 0051 CALL R12 3 0x80000000, // 0052 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h index 70d6b6a3e..32861ccb9 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h @@ -399,25 +399,23 @@ be_local_class(Matter_Expirable, })), be_str_weak(Matter_Expirable) ); -// compact class 'Matter_Expirable_list' ktab size: 17, total: 25 (saved 64 bytes) -static const bvalue be_ktab_class_Matter_Expirable_list[17] = { +// compact class 'Matter_Expirable_list' ktab size: 15, total: 25 (saved 80 bytes) +static const bvalue be_ktab_class_Matter_Expirable_list[15] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(_persist), /* K2 */ be_const_int(1), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(before_remove), - /* K5 */ be_nested_str_weak(remove), - /* K6 */ be_nested_str_weak(matter), - /* K7 */ be_nested_str_weak(Expirable), - /* K8 */ be_nested_str_weak(type_error), - /* K9 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27), - /* K10 */ be_nested_str_weak(set_parent_list), - /* K11 */ be_nested_str_weak(push), - /* K12 */ be_nested_str_weak(remove_expired), - /* K13 */ be_nested_str_weak(has_expired), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(iter), - /* K16 */ be_nested_str_weak(setitem), + /* K3 */ be_nested_str_weak(before_remove), + /* K4 */ be_nested_str_weak(remove), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(Expirable), + /* K7 */ be_nested_str_weak(type_error), + /* K8 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27), + /* K9 */ be_nested_str_weak(set_parent_list), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(remove_expired), + /* K12 */ be_nested_str_weak(has_expired), + /* K13 */ be_nested_str_weak(iter), + /* K14 */ be_nested_str_weak(setitem), }; @@ -480,7 +478,7 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ 0x4C080000, // 0000 LDNIL R2 0x20080202, // 0001 NE R2 R1 R2 0x780A0010, // 0002 JMPF R2 #0014 - 0x28080303, // 0003 GE R2 R1 K3 + 0x28080300, // 0003 GE R2 R1 K0 0x780A0007, // 0004 JMPF R2 #000D 0x6008000C, // 0005 GETGBL R2 G12 0x5C0C0000, // 0006 MOVE R3 R0 @@ -488,12 +486,12 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */ 0x14080202, // 0008 LT R2 R1 R2 0x780A0002, // 0009 JMPF R2 #000D 0x94080001, // 000A GETIDX R2 R0 R1 - 0x8C080504, // 000B GETMET R2 R2 K4 + 0x8C080503, // 000B GETMET R2 R2 K3 0x7C080200, // 000C CALL R2 1 0x60080003, // 000D GETGBL R2 G3 0x5C0C0000, // 000E MOVE R3 R0 0x7C080200, // 000F CALL R2 1 - 0x8C080505, // 0010 GETMET R2 R2 K5 + 0x8C080504, // 0010 GETMET R2 R2 K4 0x5C100200, // 0011 MOVE R4 R1 0x7C080400, // 0012 CALL R2 2 0x80040400, // 0013 RET 1 R2 @@ -523,18 +521,18 @@ be_local_closure(class_Matter_Expirable_list_push, /* name */ ( &(const binstruction[17]) { /* code */ 0x6008000F, // 0000 GETGBL R2 G15 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8120C00, // 0002 GETNGBL R4 K6 - 0x88100907, // 0003 GETMBR R4 R4 K7 + 0xB8120A00, // 0002 GETNGBL R4 K5 + 0x88100906, // 0003 GETMBR R4 R4 K6 0x7C080400, // 0004 CALL R2 2 0x740A0000, // 0005 JMPT R2 #0007 - 0xB0061109, // 0006 RAISE 1 K8 K9 - 0x8C08030A, // 0007 GETMET R2 R1 K10 + 0xB0060F08, // 0006 RAISE 1 K7 K8 + 0x8C080309, // 0007 GETMET R2 R1 K9 0x5C100000, // 0008 MOVE R4 R0 0x7C080400, // 0009 CALL R2 2 0x60080003, // 000A GETGBL R2 G3 0x5C0C0000, // 000B MOVE R3 R0 0x7C080200, // 000C CALL R2 1 - 0x8C08050B, // 000D GETMET R2 R2 K11 + 0x8C08050A, // 000D GETMET R2 R2 K10 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80040400, // 0010 RET 1 R2 @@ -561,7 +559,7 @@ be_local_closure(class_Matter_Expirable_list_every_second, /* name */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04010C, // 0000 GETMET R1 R0 K12 + 0x8C04010B, // 0000 GETMET R1 R0 K11 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -595,18 +593,18 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */ 0x140C0403, // 0005 LT R3 R2 R3 0x780E000D, // 0006 JMPF R3 #0015 0x940C0002, // 0007 GETIDX R3 R0 R2 - 0x8C0C070D, // 0008 GETMET R3 R3 K13 + 0x8C0C070C, // 0008 GETMET R3 R3 K12 0x7C0C0200, // 0009 CALL R3 1 0x780E0007, // 000A JMPF R3 #0013 0x940C0002, // 000B GETIDX R3 R0 R2 0x880C0701, // 000C GETMBR R3 R3 K1 0x780E0000, // 000D JMPF R3 #000F 0x50040200, // 000E LDBOOL R1 1 0 - 0x8C0C0105, // 000F GETMET R3 R0 K5 + 0x8C0C0104, // 000F GETMET R3 R0 K4 0x5C140400, // 0010 MOVE R5 R2 0x7C0C0400, // 0011 CALL R3 2 0x70020000, // 0012 JMP #0014 - 0x0008050E, // 0013 ADD R2 R2 K14 + 0x00080502, // 0013 ADD R2 R2 K2 0x7001FFEC, // 0014 JMP #0002 0x80040200, // 0015 RET 1 R1 }) @@ -661,7 +659,7 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */ be_str_weak(persistables), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C04010F, // 0000 GETMET R1 R0 K15 + 0x8C04010D, // 0000 GETMET R1 R0 K13 0x7C040200, // 0001 CALL R1 1 0x84080000, // 0002 CLOSURE R2 P0 0xA0000000, // 0003 CLOSE R0 @@ -691,18 +689,18 @@ be_local_closure(class_Matter_Expirable_list_setitem, /* name */ ( &(const binstruction[18]) { /* code */ 0x600C000F, // 0000 GETGBL R3 G15 0x5C100400, // 0001 MOVE R4 R2 - 0xB8160C00, // 0002 GETNGBL R5 K6 - 0x88140B07, // 0003 GETMBR R5 R5 K7 + 0xB8160A00, // 0002 GETNGBL R5 K5 + 0x88140B06, // 0003 GETMBR R5 R5 K6 0x7C0C0400, // 0004 CALL R3 2 0x740E0000, // 0005 JMPT R3 #0007 - 0xB0061109, // 0006 RAISE 1 K8 K9 - 0x8C0C050A, // 0007 GETMET R3 R2 K10 + 0xB0060F08, // 0006 RAISE 1 K7 K8 + 0x8C0C0509, // 0007 GETMET R3 R2 K9 0x5C140000, // 0008 MOVE R5 R0 0x7C0C0400, // 0009 CALL R3 2 0x600C0003, // 000A GETGBL R3 G3 0x5C100000, // 000B MOVE R4 R0 0x7C0C0200, // 000C CALL R3 1 - 0x8C0C0710, // 000D GETMET R3 R3 K16 + 0x8C0C070E, // 000D GETMET R3 R3 K14 0x5C140200, // 000E MOVE R5 R1 0x5C180400, // 000F MOVE R6 R2 0x7C0C0600, // 0010 CALL R3 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h index a829e8458..34c30935f 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Fabric; -// compact class 'Matter_Fabric' ktab size: 112, total: 212 (saved 800 bytes) -static const bvalue be_ktab_class_Matter_Fabric[112] = { +// compact class 'Matter_Fabric' ktab size: 111, total: 212 (saved 808 bytes) +static const bvalue be_ktab_class_Matter_Fabric[111] = { /* K0 */ be_nested_str_weak(icac), /* K1 */ be_nested_str_weak(log), /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29), @@ -98,26 +98,25 @@ static const bvalue be_ktab_class_Matter_Fabric[112] = { /* K89 */ be_nested_str_weak(set_expire_in_seconds), /* K90 */ be_nested_str_weak(set_fabric_index), /* K91 */ be_nested_str_weak(next_fabric_idx), - /* K92 */ be_const_int(0), - /* K93 */ be_nested_str_weak(last_used), - /* K94 */ be_const_int(1), - /* K95 */ be_nested_str_weak(crypto), - /* K96 */ be_nested_str_weak(Expirable_list), - /* K97 */ be_nested_str_weak(fabric_label), - /* K98 */ be_nested_str_weak(), - /* K99 */ be_nested_str_weak(created), - /* K100 */ be_nested_str_weak(tasmota), - /* K101 */ be_nested_str_weak(rtc_utc), - /* K102 */ be_nested_str_weak(_MAX_CASE), - /* K103 */ be_nested_str_weak(get_oldest_session), - /* K104 */ be_nested_str_weak(remove), - /* K105 */ be_nested_str_weak(remove_session), - /* K106 */ be_nested_str_weak(HKDF_SHA256), - /* K107 */ be_nested_str_weak(fromstring), - /* K108 */ be_nested_str_weak(_GROUP_KEY), - /* K109 */ be_nested_str_weak(derive), - /* K110 */ be_nested_str_weak(get_vendor_name), - /* K111 */ be_nested_str_weak(0x_X2504X), + /* K92 */ be_nested_str_weak(last_used), + /* K93 */ be_const_int(1), + /* K94 */ be_nested_str_weak(crypto), + /* K95 */ be_nested_str_weak(Expirable_list), + /* K96 */ be_nested_str_weak(fabric_label), + /* K97 */ be_nested_str_weak(), + /* K98 */ be_nested_str_weak(created), + /* K99 */ be_nested_str_weak(tasmota), + /* K100 */ be_nested_str_weak(rtc_utc), + /* K101 */ be_nested_str_weak(_MAX_CASE), + /* K102 */ be_nested_str_weak(get_oldest_session), + /* K103 */ be_nested_str_weak(remove), + /* K104 */ be_nested_str_weak(remove_session), + /* K105 */ be_nested_str_weak(HKDF_SHA256), + /* K106 */ be_nested_str_weak(fromstring), + /* K107 */ be_nested_str_weak(_GROUP_KEY), + /* K108 */ be_nested_str_weak(derive), + /* K109 */ be_nested_str_weak(get_vendor_name), + /* K110 */ be_nested_str_weak(0x_X2504X), }; @@ -1406,14 +1405,14 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ 0x6008000C, // 0000 GETGBL R2 G12 0x880C012B, // 0001 GETMBR R3 R0 K43 0x7C080200, // 0002 CALL R2 1 - 0x1C08055C, // 0003 EQ R2 R2 K92 + 0x1C080514, // 0003 EQ R2 R2 K20 0x780A0001, // 0004 JMPF R2 #0007 0x4C080000, // 0005 LDNIL R2 0x80040400, // 0006 RET 1 R2 0x8808012B, // 0007 GETMBR R2 R0 K43 - 0x9408055C, // 0008 GETIDX R2 R2 K92 - 0x880C055D, // 0009 GETMBR R3 R2 K93 - 0x5810005E, // 000A LDCONST R4 K94 + 0x94080514, // 0008 GETIDX R2 R2 K20 + 0x880C055C, // 0009 GETMBR R3 R2 K92 + 0x5810005D, // 000A LDCONST R4 K93 0x6014000C, // 000B GETGBL R5 G12 0x8818012B, // 000C GETMBR R6 R0 K43 0x7C140200, // 000D CALL R5 1 @@ -1421,7 +1420,7 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ 0x7816000C, // 000F JMPF R5 #001D 0x8814012B, // 0010 GETMBR R5 R0 K43 0x94140A04, // 0011 GETIDX R5 R5 R4 - 0x88140B5D, // 0012 GETMBR R5 R5 K93 + 0x88140B5C, // 0012 GETMBR R5 R5 K92 0x78060001, // 0013 JMPF R1 #0016 0x14180A03, // 0014 LT R6 R5 R3 0x70020000, // 0015 JMP #0017 @@ -1430,7 +1429,7 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */ 0x8818012B, // 0018 GETMBR R6 R0 K43 0x94080C04, // 0019 GETIDX R2 R6 R4 0x5C0C0A00, // 001A MOVE R3 R5 - 0x0010095E, // 001B ADD R4 R4 K94 + 0x0010095D, // 001B ADD R4 R4 K93 0x7001FFED, // 001C JMP #000B 0x80040400, // 001D RET 1 R2 }) @@ -1456,17 +1455,17 @@ be_local_closure(class_Matter_Fabric_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ - 0xA40ABE00, // 0000 IMPORT R2 K95 + 0xA40ABC00, // 0000 IMPORT R2 K94 0x90028E01, // 0001 SETMBR R0 K71 R1 0xB80E2200, // 0002 GETNGBL R3 K17 - 0x8C0C0760, // 0003 GETMET R3 R3 K96 + 0x8C0C075F, // 0003 GETMET R3 R3 K95 0x7C0C0200, // 0004 CALL R3 1 0x90025603, // 0005 SETMBR R0 K43 R3 - 0x9002C362, // 0006 SETMBR R0 K97 K98 - 0xB80EC800, // 0007 GETNGBL R3 K100 - 0x8C0C0765, // 0008 GETMET R3 R3 K101 + 0x9002C161, // 0006 SETMBR R0 K96 K97 + 0xB80EC600, // 0007 GETNGBL R3 K99 + 0x8C0C0764, // 0008 GETMET R3 R3 K100 0x7C0C0200, // 0009 CALL R3 1 - 0x9002C603, // 000A SETMBR R0 K99 R3 + 0x9002C403, // 000A SETMBR R0 K98 R3 0xB80E2200, // 000B GETNGBL R3 K17 0x8C0C074B, // 000C GETMET R3 R3 K75 0x7C0C0200, // 000D CALL R3 1 @@ -1546,20 +1545,20 @@ be_local_closure(class_Matter_Fabric_add_session, /* name */ 0x6008000C, // 0007 GETGBL R2 G12 0x880C012B, // 0008 GETMBR R3 R0 K43 0x7C080200, // 0009 CALL R2 1 - 0x880C0166, // 000A GETMBR R3 R0 K102 + 0x880C0165, // 000A GETMBR R3 R0 K101 0x28080403, // 000B GE R2 R2 R3 0x780A000D, // 000C JMPF R2 #001B - 0x8C080167, // 000D GETMET R2 R0 K103 + 0x8C080166, // 000D GETMET R2 R0 K102 0x7C080200, // 000E CALL R2 1 0x880C012B, // 000F GETMBR R3 R0 K43 - 0x8C0C0768, // 0010 GETMET R3 R3 K104 + 0x8C0C0767, // 0010 GETMET R3 R3 K103 0x8814012B, // 0011 GETMBR R5 R0 K43 0x8C140B16, // 0012 GETMET R5 R5 K22 0x5C1C0400, // 0013 MOVE R7 R2 0x7C140400, // 0014 CALL R5 2 0x7C0C0400, // 0015 CALL R3 2 0x880C0147, // 0016 GETMBR R3 R0 K71 - 0x8C0C0769, // 0017 GETMET R3 R3 K105 + 0x8C0C0768, // 0017 GETMET R3 R3 K104 0x5C140400, // 0018 MOVE R5 R2 0x7C0C0400, // 0019 CALL R3 2 0x7001FFEB, // 001A JMP #0007 @@ -1644,7 +1643,7 @@ be_local_closure(class_Matter_Fabric_get_fabric_label, /* name */ be_str_weak(get_fabric_label), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040161, // 0000 GETMBR R1 R0 K97 + 0x88040160, // 0000 GETMBR R1 R0 K96 0x80040200, // 0001 RET 1 R1 }) ) @@ -1679,15 +1678,15 @@ be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */ 0x78060001, // 0007 JMPF R1 #000A 0x4C040000, // 0008 LDNIL R1 0x80040200, // 0009 RET 1 R1 - 0xA406BE00, // 000A IMPORT R1 K95 - 0x8C08036A, // 000B GETMET R2 R1 K106 + 0xA406BC00, // 000A IMPORT R1 K94 + 0x8C080369, // 000B GETMET R2 R1 K105 0x7C080200, // 000C CALL R2 1 0x600C0015, // 000D GETGBL R3 G21 0x7C0C0000, // 000E CALL R3 0 - 0x8C0C076B, // 000F GETMET R3 R3 K107 - 0x8814016C, // 0010 GETMBR R5 R0 K108 + 0x8C0C076A, // 000F GETMET R3 R3 K106 + 0x8814016B, // 0010 GETMBR R5 R0 K107 0x7C0C0400, // 0011 CALL R3 2 - 0x8C10056D, // 0012 GETMET R4 R2 K109 + 0x8C10056C, // 0012 GETMET R4 R2 K108 0x8818013C, // 0013 GETMBR R6 R0 K60 0x881C0109, // 0014 GETMBR R7 R0 K9 0x5C200600, // 0015 MOVE R8 R3 @@ -1717,8 +1716,8 @@ be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */ be_str_weak(mark_for_deletion), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xB806C800, // 0000 GETNGBL R1 K100 - 0x8C040365, // 0001 GETMET R1 R1 K101 + 0xB806C600, // 0000 GETNGBL R1 K99 + 0x8C040364, // 0001 GETMET R1 R1 K100 0x7C040200, // 0002 CALL R1 1 0x90028001, // 0003 SETMBR R0 K64 R1 0x80000000, // 0004 RET 0 @@ -1749,9 +1748,9 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */ 0x4C080000, // 0001 LDNIL R2 0x1C080202, // 0002 EQ R2 R1 R2 0x780A0000, // 0003 JMPF R2 #0005 - 0x8006C400, // 0004 RET 1 K98 + 0x8006C200, // 0004 RET 1 K97 0xB80A2200, // 0005 GETNGBL R2 K17 - 0x8C08056E, // 0006 GETMET R2 R2 K110 + 0x8C08056D, // 0006 GETMET R2 R2 K109 0x5C100200, // 0007 MOVE R4 R1 0x7C080400, // 0008 CALL R2 2 0x4C0C0000, // 0009 LDNIL R3 @@ -1760,7 +1759,7 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */ 0x80040400, // 000C RET 1 R2 0x70020004, // 000D JMP #0013 0x600C0018, // 000E GETGBL R3 G24 - 0x5810006F, // 000F LDCONST R4 K111 + 0x5810006E, // 000F LDCONST R4 K110 0x5C140200, // 0010 MOVE R5 R1 0x7C0C0400, // 0011 CALL R3 2 0x80040600, // 0012 RET 1 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h index 3d1d9ae4f..1d755de68 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_HTTP_async' ktab size: 80, total: 152 (saved 576 bytes) -static const bvalue be_ktab_class_Matter_HTTP_async[80] = { +// compact class 'Matter_HTTP_async' ktab size: 74, total: 152 (saved 624 bytes) +static const bvalue be_ktab_class_Matter_HTTP_async[74] = { /* K0 */ be_nested_str_weak(is_chunked), /* K1 */ be_nested_str_weak(chunk_size), /* K2 */ be_nested_str_weak(global), @@ -29,62 +29,56 @@ static const bvalue be_ktab_class_Matter_HTTP_async[80] = { /* K21 */ be_nested_str_weak(_X40), /* K22 */ be_nested_str_weak(auth), /* K23 */ be_nested_str_weak(fromstring), - /* K24 */ be_const_int(1), - /* K25 */ be_nested_str_weak(tob64), - /* K26 */ be_const_int(2147483647), - /* K27 */ be_nested_str_weak(init), - /* K28 */ be_nested_str_weak(compile_re), - /* K29 */ be_nested_str_weak(phase), - /* K30 */ be_const_int(0), - /* K31 */ be_nested_str_weak(parse_http_status_line), - /* K32 */ be_nested_str_weak(parse_http_headers), - /* K33 */ be_const_int(2), - /* K34 */ be_nested_str_weak(parse_http_payload), - /* K35 */ be_nested_str_weak(http_status), - /* K36 */ be_nested_str_weak(event_http_failed), - /* K37 */ be_nested_str_weak(reset), - /* K38 */ be_nested_str_weak(cmd), - /* K39 */ be_nested_str_weak(begin), - /* K40 */ be_nested_str_weak(send_http), - /* K41 */ be_nested_str_weak(_re_http_header), - /* K42 */ be_nested_str_weak(event_http_header), - /* K43 */ be_nested_str_weak(_re_http_body), - /* K44 */ be_nested_str_weak(event_http_headers_end), - /* K45 */ be_nested_str_weak(receive), - /* K46 */ be_nested_str_weak(event_http_timeout), - /* K47 */ be_nested_str_weak(re), - /* K48 */ be_nested_str_weak(contains), - /* K49 */ be_nested_str_weak(_re_http_status), - /* K50 */ be_nested_str_weak(compile), - /* K51 */ be_nested_str_weak(HTTP_STATUS_REGEX), - /* K52 */ be_nested_str_weak(HTTP_HEADER_REGEX), - /* K53 */ be_nested_str_weak(HTTP_BODY_REGEX), - /* K54 */ be_nested_str_weak(HTTP_CHUNK_REGEX), - /* K55 */ be_const_int(1), - /* K56 */ be_nested_str_weak(event_http_finished), - /* K57 */ be_nested_str_weak(timeout), - /* K58 */ be_nested_str_weak(set_timeout), - /* K59 */ be_nested_str_weak(SPINLOCK), - /* K60 */ be_nested_str_weak(loop), - /* K61 */ be_nested_str_weak(tasmota), - /* K62 */ be_nested_str_weak(delay), - /* K63 */ be_nested_str_weak(addr), - /* K64 */ be_nested_str_weak(_X3A), - /* K65 */ be_const_int(0), - /* K66 */ be_nested_str_weak(_X5B), - /* K67 */ be_nested_str_weak(_X5D), - /* K68 */ be_nested_str_weak(HTTP_GET), - /* K69 */ be_nested_str_weak(port), - /* K70 */ be_nested_str_weak(HTTP_GET_AUTH), - /* K71 */ be_nested_str_weak(write), - /* K72 */ be_nested_str_weak(status_code), - /* K73 */ be_nested_str_weak(tcp_connected), - /* K74 */ be_nested_str_weak(millis), - /* K75 */ be_nested_str_weak(time_start), - /* K76 */ be_nested_str_weak(tcp), - /* K77 */ be_nested_str_weak(available), - /* K78 */ be_nested_str_weak(read), - /* K79 */ be_nested_str_weak(parse_http_response), + /* K24 */ be_nested_str_weak(tob64), + /* K25 */ be_nested_str_weak(init), + /* K26 */ be_nested_str_weak(compile_re), + /* K27 */ be_nested_str_weak(phase), + /* K28 */ be_nested_str_weak(parse_http_status_line), + /* K29 */ be_nested_str_weak(parse_http_headers), + /* K30 */ be_nested_str_weak(parse_http_payload), + /* K31 */ be_nested_str_weak(http_status), + /* K32 */ be_nested_str_weak(event_http_failed), + /* K33 */ be_nested_str_weak(reset), + /* K34 */ be_nested_str_weak(cmd), + /* K35 */ be_nested_str_weak(begin), + /* K36 */ be_nested_str_weak(send_http), + /* K37 */ be_nested_str_weak(_re_http_header), + /* K38 */ be_nested_str_weak(event_http_header), + /* K39 */ be_nested_str_weak(_re_http_body), + /* K40 */ be_nested_str_weak(event_http_headers_end), + /* K41 */ be_nested_str_weak(receive), + /* K42 */ be_nested_str_weak(event_http_timeout), + /* K43 */ be_nested_str_weak(re), + /* K44 */ be_nested_str_weak(contains), + /* K45 */ be_nested_str_weak(_re_http_status), + /* K46 */ be_nested_str_weak(compile), + /* K47 */ be_nested_str_weak(HTTP_STATUS_REGEX), + /* K48 */ be_nested_str_weak(HTTP_HEADER_REGEX), + /* K49 */ be_nested_str_weak(HTTP_BODY_REGEX), + /* K50 */ be_nested_str_weak(HTTP_CHUNK_REGEX), + /* K51 */ be_nested_str_weak(event_http_finished), + /* K52 */ be_nested_str_weak(timeout), + /* K53 */ be_nested_str_weak(set_timeout), + /* K54 */ be_nested_str_weak(SPINLOCK), + /* K55 */ be_nested_str_weak(loop), + /* K56 */ be_nested_str_weak(tasmota), + /* K57 */ be_nested_str_weak(delay), + /* K58 */ be_nested_str_weak(addr), + /* K59 */ be_nested_str_weak(_X3A), + /* K60 */ be_nested_str_weak(_X5B), + /* K61 */ be_nested_str_weak(_X5D), + /* K62 */ be_nested_str_weak(HTTP_GET), + /* K63 */ be_nested_str_weak(port), + /* K64 */ be_nested_str_weak(HTTP_GET_AUTH), + /* K65 */ be_nested_str_weak(write), + /* K66 */ be_nested_str_weak(status_code), + /* K67 */ be_nested_str_weak(tcp_connected), + /* K68 */ be_nested_str_weak(millis), + /* K69 */ be_nested_str_weak(time_start), + /* K70 */ be_nested_str_weak(tcp), + /* K71 */ be_nested_str_weak(available), + /* K72 */ be_nested_str_weak(read), + /* K73 */ be_nested_str_weak(parse_http_response), }; @@ -292,26 +286,26 @@ be_local_closure(class_Matter_HTTP_async_init, /* name */ 0x601C0015, // 000B GETGBL R7 G21 0x7C1C0000, // 000C CALL R7 0 0x8C1C0F17, // 000D GETMET R7 R7 K23 - 0x04240D18, // 000E SUB R9 R6 K24 + 0x04240D09, // 000E SUB R9 R6 K9 0x40260E09, // 000F CONNECT R9 K7 R9 0x94240209, // 0010 GETIDX R9 R1 R9 0x7C1C0400, // 0011 CALL R7 2 - 0x8C1C0F19, // 0012 GETMET R7 R7 K25 + 0x8C1C0F18, // 0012 GETMET R7 R7 K24 0x7C1C0200, // 0013 CALL R7 1 0x90022C07, // 0014 SETMBR R0 K22 R7 - 0x001C0D18, // 0015 ADD R7 R6 K24 - 0x401C0F1A, // 0016 CONNECT R7 R7 K26 + 0x001C0D09, // 0015 ADD R7 R6 K9 + 0x401C0F0F, // 0016 CONNECT R7 R7 K15 0x94040207, // 0017 GETIDX R1 R1 R7 0x601C0003, // 0018 GETGBL R7 G3 0x5C200000, // 0019 MOVE R8 R0 0x7C1C0200, // 001A CALL R7 1 - 0x8C1C0F1B, // 001B GETMET R7 R7 K27 + 0x8C1C0F19, // 001B GETMET R7 R7 K25 0x5C240200, // 001C MOVE R9 R1 0x5C280400, // 001D MOVE R10 R2 0x5C2C0600, // 001E MOVE R11 R3 0x5C300800, // 001F MOVE R12 R4 0x7C1C0A00, // 0020 CALL R7 5 - 0x8C1C011C, // 0021 GETMET R7 R0 K28 + 0x8C1C011A, // 0021 GETMET R7 R0 K26 0x7C1C0200, // 0022 CALL R7 1 0x80000000, // 0023 RET 0 }) @@ -361,22 +355,22 @@ be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */ be_str_weak(parse_http_response), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8804011D, // 0000 GETMBR R1 R0 K29 - 0x1C04031E, // 0001 EQ R1 R1 K30 + 0x8804011B, // 0000 GETMBR R1 R0 K27 + 0x1C040307, // 0001 EQ R1 R1 K7 0x78060002, // 0002 JMPF R1 #0006 - 0x8C04011F, // 0003 GETMET R1 R0 K31 + 0x8C04011C, // 0003 GETMET R1 R0 K28 0x7C040200, // 0004 CALL R1 1 0x7002000A, // 0005 JMP #0011 - 0x8804011D, // 0006 GETMBR R1 R0 K29 + 0x8804011B, // 0006 GETMBR R1 R0 K27 0x1C040309, // 0007 EQ R1 R1 K9 0x78060002, // 0008 JMPF R1 #000C - 0x8C040120, // 0009 GETMET R1 R0 K32 + 0x8C04011D, // 0009 GETMET R1 R0 K29 0x7C040200, // 000A CALL R1 1 0x70020004, // 000B JMP #0011 - 0x8804011D, // 000C GETMBR R1 R0 K29 - 0x1C040321, // 000D EQ R1 R1 K33 + 0x8804011B, // 000C GETMBR R1 R0 K27 + 0x1C04030B, // 000D EQ R1 R1 K11 0x78060001, // 000E JMPF R1 #0011 - 0x8C040122, // 000F GETMET R1 R0 K34 + 0x8C04011E, // 000F GETMET R1 R0 K30 0x7C040200, // 0010 CALL R1 1 0x80000000, // 0011 RET 0 }) @@ -403,8 +397,8 @@ be_local_closure(class_Matter_HTTP_async_event_refused, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFFE, // 0000 LDINT R1 -1 - 0x90024601, // 0001 SETMBR R0 K35 R1 - 0x8C040124, // 0002 GETMET R1 R0 K36 + 0x90023E01, // 0001 SETMBR R0 K31 R1 + 0x8C040120, // 0002 GETMET R1 R0 K32 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -433,16 +427,16 @@ be_local_closure(class_Matter_HTTP_async_reset, /* name */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 - 0x8C040325, // 0003 GETMET R1 R1 K37 + 0x8C040321, // 0003 GETMET R1 R1 K33 0x7C040200, // 0004 CALL R1 1 0x4C040000, // 0005 LDNIL R1 - 0x90024C01, // 0006 SETMBR R0 K38 R1 + 0x90024401, // 0006 SETMBR R0 K34 R1 0x4C040000, // 0007 LDNIL R1 0x90020A01, // 0008 SETMBR R0 K5 R1 - 0x90020D1E, // 0009 SETMBR R0 K6 K30 + 0x90020D07, // 0009 SETMBR R0 K6 K7 0x90021D0C, // 000A SETMBR R0 K14 K12 - 0x90023B1E, // 000B SETMBR R0 K29 K30 - 0x9002471E, // 000C SETMBR R0 K35 K30 + 0x90023707, // 000B SETMBR R0 K27 K7 + 0x90023F07, // 000C SETMBR R0 K31 K7 0x50040000, // 000D LDBOOL R1 0 0 0x90020001, // 000E SETMBR R0 K0 R1 0x4C040000, // 000F LDNIL R1 @@ -474,9 +468,9 @@ be_local_closure(class_Matter_HTTP_async_begin, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080527, // 0003 GETMET R2 R2 K39 + 0x8C080523, // 0003 GETMET R2 R2 K35 0x7C080200, // 0004 CALL R2 1 - 0x90024C01, // 0005 SETMBR R0 K38 R1 + 0x90024401, // 0005 SETMBR R0 K34 R1 0x80040400, // 0006 RET 1 R2 }) ) @@ -501,7 +495,7 @@ be_local_closure(class_Matter_HTTP_async_event_established, /* name */ be_str_weak(event_established), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040128, // 0000 GETMET R1 R0 K40 + 0x8C040124, // 0000 GETMET R1 R0 K36 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -530,15 +524,15 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0x50040200, // 0000 LDBOOL R1 1 0 0x7806002B, // 0001 JMPF R1 #002E 0xB8060400, // 0002 GETNGBL R1 K2 - 0x88040329, // 0003 GETMBR R1 R1 K41 + 0x88040325, // 0003 GETMBR R1 R1 K37 0x8C040304, // 0004 GETMET R1 R1 K4 0x880C0105, // 0005 GETMBR R3 R0 K5 0x88100106, // 0006 GETMBR R4 R0 K6 0x7C040600, // 0007 CALL R1 3 0x78060008, // 0008 JMPF R1 #0012 - 0x8C08012A, // 0009 GETMET R2 R0 K42 + 0x8C080126, // 0009 GETMET R2 R0 K38 0x94100309, // 000A GETIDX R4 R1 K9 - 0x94140321, // 000B GETIDX R5 R1 K33 + 0x9414030B, // 000B GETIDX R5 R1 K11 0x7C080600, // 000C CALL R2 3 0x88080106, // 000D GETMBR R2 R0 K6 0x940C0307, // 000E GETIDX R3 R1 K7 @@ -546,16 +540,16 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0x90020C02, // 0010 SETMBR R0 K6 R2 0x7002001A, // 0011 JMP #002D 0xB80A0400, // 0012 GETNGBL R2 K2 - 0x8808052B, // 0013 GETMBR R2 R2 K43 + 0x88080527, // 0013 GETMBR R2 R2 K39 0x8C080504, // 0014 GETMET R2 R2 K4 0x88100105, // 0015 GETMBR R4 R0 K5 0x88140106, // 0016 GETMBR R5 R0 K6 0x7C080600, // 0017 CALL R2 3 0x780A0004, // 0018 JMPF R2 #001E - 0x8C0C012C, // 0019 GETMET R3 R0 K44 + 0x8C0C0128, // 0019 GETMET R3 R0 K40 0x7C0C0200, // 001A CALL R3 1 - 0x90023B21, // 001B SETMBR R0 K29 K33 - 0x8C0C0122, // 001C GETMET R3 R0 K34 + 0x9002370B, // 001B SETMBR R0 K27 K11 + 0x8C0C011E, // 001C GETMET R3 R0 K30 0x7C0C0200, // 001D CALL R3 1 0x600C000C, // 001E GETGBL R3 G12 0x88100105, // 001F GETMBR R4 R0 K5 @@ -568,8 +562,8 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */ 0x540DFFFB, // 0026 LDINT R3 -4 0x90021403, // 0027 SETMBR R0 K10 R3 0x540DFFFE, // 0028 LDINT R3 -1 - 0x90024603, // 0029 SETMBR R0 K35 R3 - 0x8C0C0124, // 002A GETMET R3 R0 K36 + 0x90023E03, // 0029 SETMBR R0 K31 R3 + 0x8C0C0120, // 002A GETMET R3 R0 K32 0x7C0C0200, // 002B CALL R3 1 0x80000600, // 002C RET 0 0x7001FFD1, // 002D JMP #0000 @@ -597,7 +591,7 @@ be_local_closure(class_Matter_HTTP_async_event_available, /* name */ be_str_weak(event_available), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04012D, // 0000 GETMET R1 R0 K45 + 0x8C040129, // 0000 GETMET R1 R0 K41 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -624,8 +618,8 @@ be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFFD, // 0000 LDINT R1 -2 - 0x90024601, // 0001 SETMBR R0 K35 R1 - 0x8C04012E, // 0002 GETMET R1 R0 K46 + 0x90023E01, // 0001 SETMBR R0 K31 R1 + 0x8C04012A, // 0002 GETMET R1 R0 K42 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -651,30 +645,30 @@ be_local_closure(class_Matter_HTTP_async_compile_re, /* name */ be_str_weak(compile_re), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0xA4065E00, // 0000 IMPORT R1 K47 + 0xA4065600, // 0000 IMPORT R1 K43 0xB80A0400, // 0001 GETNGBL R2 K2 - 0x8C080530, // 0002 GETMET R2 R2 K48 - 0x58100031, // 0003 LDCONST R4 K49 + 0x8C08052C, // 0002 GETMET R2 R2 K44 + 0x5810002D, // 0003 LDCONST R4 K45 0x7C080400, // 0004 CALL R2 2 0x740A0013, // 0005 JMPT R2 #001A 0xB80A0400, // 0006 GETNGBL R2 K2 - 0x8C0C0332, // 0007 GETMET R3 R1 K50 - 0x88140133, // 0008 GETMBR R5 R0 K51 + 0x8C0C032E, // 0007 GETMET R3 R1 K46 + 0x8814012F, // 0008 GETMBR R5 R0 K47 0x7C0C0400, // 0009 CALL R3 2 - 0x900A6203, // 000A SETMBR R2 K49 R3 + 0x900A5A03, // 000A SETMBR R2 K45 R3 0xB80A0400, // 000B GETNGBL R2 K2 - 0x8C0C0332, // 000C GETMET R3 R1 K50 - 0x88140134, // 000D GETMBR R5 R0 K52 + 0x8C0C032E, // 000C GETMET R3 R1 K46 + 0x88140130, // 000D GETMBR R5 R0 K48 0x7C0C0400, // 000E CALL R3 2 - 0x900A5203, // 000F SETMBR R2 K41 R3 + 0x900A4A03, // 000F SETMBR R2 K37 R3 0xB80A0400, // 0010 GETNGBL R2 K2 - 0x8C0C0332, // 0011 GETMET R3 R1 K50 - 0x88140135, // 0012 GETMBR R5 R0 K53 + 0x8C0C032E, // 0011 GETMET R3 R1 K46 + 0x88140131, // 0012 GETMBR R5 R0 K49 0x7C0C0400, // 0013 CALL R3 2 - 0x900A5603, // 0014 SETMBR R2 K43 R3 + 0x900A4E03, // 0014 SETMBR R2 K39 R3 0xB80A0400, // 0015 GETNGBL R2 K2 - 0x8C0C0332, // 0016 GETMET R3 R1 K50 - 0x88140136, // 0017 GETMBR R5 R0 K54 + 0x8C0C032E, // 0016 GETMET R3 R1 K46 + 0x88140132, // 0017 GETMBR R5 R0 K50 0x7C0C0400, // 0018 CALL R3 2 0x900A0603, // 0019 SETMBR R2 K3 R3 0x80000000, // 001A RET 0 @@ -701,11 +695,11 @@ be_local_closure(class_Matter_HTTP_async_event_closed, /* name */ be_str_weak(event_closed), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040123, // 0000 GETMBR R1 R0 K35 - 0x1C04031E, // 0001 EQ R1 R1 K30 + 0x8804011F, // 0000 GETMBR R1 R0 K31 + 0x1C040307, // 0001 EQ R1 R1 K7 0x78060002, // 0002 JMPF R1 #0006 - 0x90024737, // 0003 SETMBR R0 K35 K55 - 0x8C040138, // 0004 GETMET R1 R0 K56 + 0x90023F09, // 0003 SETMBR R0 K31 K9 + 0x8C040133, // 0004 GETMET R1 R0 K51 0x7C040200, // 0005 CALL R1 1 0x80000000, // 0006 RET 0 }) @@ -731,34 +725,34 @@ be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */ be_str_weak(begin_sync), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x880C0139, // 0000 GETMBR R3 R0 K57 + 0x880C0134, // 0000 GETMBR R3 R0 K52 0x4C100000, // 0001 LDNIL R4 0x20100404, // 0002 NE R4 R2 R4 0x78120002, // 0003 JMPF R4 #0007 - 0x8C10013A, // 0004 GETMET R4 R0 K58 + 0x8C100135, // 0004 GETMET R4 R0 K53 0x5C180400, // 0005 MOVE R6 R2 0x7C100400, // 0006 CALL R4 2 0x4C100000, // 0007 LDNIL R4 - 0x8814013B, // 0008 GETMBR R5 R0 K59 - 0x8C180127, // 0009 GETMET R6 R0 K39 + 0x88140136, // 0008 GETMBR R5 R0 K54 + 0x8C180123, // 0009 GETMET R6 R0 K35 0x5C200200, // 000A MOVE R8 R1 0x7C180400, // 000B CALL R6 2 0x781A0009, // 000C JMPF R6 #0017 - 0x881C0123, // 000D GETMBR R7 R0 K35 - 0x1C1C0F1E, // 000E EQ R7 R7 K30 + 0x881C011F, // 000D GETMBR R7 R0 K31 + 0x1C1C0F07, // 000E EQ R7 R7 K7 0x781E0006, // 000F JMPF R7 #0017 - 0x8C1C013C, // 0010 GETMET R7 R0 K60 + 0x8C1C0137, // 0010 GETMET R7 R0 K55 0x7C1C0200, // 0011 CALL R7 1 - 0xB81E7A00, // 0012 GETNGBL R7 K61 - 0x8C1C0F3E, // 0013 GETMET R7 R7 K62 + 0xB81E7000, // 0012 GETNGBL R7 K56 + 0x8C1C0F39, // 0013 GETMET R7 R7 K57 0x5C240A00, // 0014 MOVE R9 R5 0x7C1C0400, // 0015 CALL R7 2 0x7001FFF5, // 0016 JMP #000D - 0x8C1C013A, // 0017 GETMET R7 R0 K58 + 0x8C1C0135, // 0017 GETMET R7 R0 K53 0x5C240600, // 0018 MOVE R9 R3 0x7C1C0400, // 0019 CALL R7 2 - 0x881C0123, // 001A GETMBR R7 R0 K35 - 0x241C0F1E, // 001B GT R7 R7 K30 + 0x881C011F, // 001A GETMBR R7 R0 K31 + 0x241C0F07, // 001B GT R7 R7 K7 0x781E0001, // 001C JMPF R7 #001F 0x881C010E, // 001D GETMBR R7 R0 K14 0x70020000, // 001E JMP #0020 @@ -789,15 +783,15 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ ( &(const binstruction[50]) { /* code */ 0xA4062000, // 0000 IMPORT R1 K16 0x90020B0C, // 0001 SETMBR R0 K5 K12 - 0x8808013F, // 0002 GETMBR R2 R0 K63 + 0x8808013A, // 0002 GETMBR R2 R0 K58 0x8C0C0314, // 0003 GETMET R3 R1 K20 0x5C140400, // 0004 MOVE R5 R2 - 0x58180040, // 0005 LDCONST R6 K64 + 0x5818003B, // 0005 LDCONST R6 K59 0x7C0C0600, // 0006 CALL R3 3 - 0x280C0741, // 0007 GE R3 R3 K65 + 0x280C0707, // 0007 GE R3 R3 K7 0x780E0002, // 0008 JMPF R3 #000C - 0x000E8402, // 0009 ADD R3 K66 R2 - 0x000C0743, // 000A ADD R3 R3 K67 + 0x000E7802, // 0009 ADD R3 K60 R2 + 0x000C073D, // 000A ADD R3 R3 K61 0x5C080600, // 000B MOVE R2 R3 0x4C0C0000, // 000C LDNIL R3 0x88100116, // 000D GETMBR R4 R0 K22 @@ -805,22 +799,22 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ 0x1C100805, // 000F EQ R4 R4 R5 0x78120007, // 0010 JMPF R4 #0019 0x60100018, // 0011 GETGBL R4 G24 - 0x88140144, // 0012 GETMBR R5 R0 K68 - 0x88180126, // 0013 GETMBR R6 R0 K38 + 0x8814013E, // 0012 GETMBR R5 R0 K62 + 0x88180122, // 0013 GETMBR R6 R0 K34 0x5C1C0400, // 0014 MOVE R7 R2 - 0x88200145, // 0015 GETMBR R8 R0 K69 + 0x8820013F, // 0015 GETMBR R8 R0 K63 0x7C100800, // 0016 CALL R4 4 0x5C0C0800, // 0017 MOVE R3 R4 0x70020007, // 0018 JMP #0021 0x60100018, // 0019 GETGBL R4 G24 - 0x88140146, // 001A GETMBR R5 R0 K70 - 0x88180126, // 001B GETMBR R6 R0 K38 + 0x88140140, // 001A GETMBR R5 R0 K64 + 0x88180122, // 001B GETMBR R6 R0 K34 0x5C1C0400, // 001C MOVE R7 R2 - 0x88200145, // 001D GETMBR R8 R0 K69 + 0x8820013F, // 001D GETMBR R8 R0 K63 0x88240116, // 001E GETMBR R9 R0 K22 0x7C100A00, // 001F CALL R4 5 0x5C0C0800, // 0020 MOVE R3 R4 - 0x8C100147, // 0021 GETMET R4 R0 K71 + 0x8C100141, // 0021 GETMET R4 R0 K65 0x5C180600, // 0022 MOVE R6 R3 0x7C100400, // 0023 CALL R4 2 0x6014000C, // 0024 GETGBL R5 G12 @@ -833,8 +827,8 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */ 0x5415FFFB, // 002B LDINT R5 -4 0x90021405, // 002C SETMBR R0 K10 R5 0x5415FFFE, // 002D LDINT R5 -1 - 0x90024605, // 002E SETMBR R0 K35 R5 - 0x8C140124, // 002F GETMET R5 R0 K36 + 0x90023E05, // 002E SETMBR R0 K31 R5 + 0x8C140120, // 002F GETMET R5 R0 K32 0x7C140200, // 0030 CALL R5 1 0x80000000, // 0031 RET 0 }) @@ -864,7 +858,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */ 0x24040307, // 0001 GT R1 R1 K7 0x78060005, // 0002 JMPF R1 #0009 0x88040106, // 0003 GETMBR R1 R0 K6 - 0x4004031A, // 0004 CONNECT R1 R1 K26 + 0x4004030F, // 0004 CONNECT R1 R1 K15 0x88080105, // 0005 GETMBR R2 R0 K5 0x94040401, // 0006 GETIDX R1 R2 R1 0x90020A01, // 0007 SETMBR R0 K5 R1 @@ -893,7 +887,7 @@ be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */ be_str_weak(event_http_status_code), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90029001, // 0000 SETMBR R0 K72 R1 + 0x90028401, // 0000 SETMBR R0 K66 R1 0x80000000, // 0001 RET 0 }) ) @@ -919,7 +913,7 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ &be_const_str_solidified, ( &(const binstruction[28]) { /* code */ 0xB8060400, // 0000 GETNGBL R1 K2 - 0x88040331, // 0001 GETMBR R1 R1 K49 + 0x8804032D, // 0001 GETMBR R1 R1 K45 0x8C040304, // 0002 GETMET R1 R1 K4 0x880C0105, // 0003 GETMBR R3 R0 K5 0x88100106, // 0004 GETMBR R4 R0 K6 @@ -930,9 +924,9 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */ 0x60080009, // 0009 GETGBL R2 G9 0x940C0309, // 000A GETIDX R3 R1 K9 0x7C080200, // 000B CALL R2 1 - 0x90029002, // 000C SETMBR R0 K72 R2 - 0x90023B09, // 000D SETMBR R0 K29 K9 - 0x8C080120, // 000E GETMET R2 R0 K32 + 0x90028402, // 000C SETMBR R0 K66 R2 + 0x90023709, // 000D SETMBR R0 K27 K9 + 0x8C08011D, // 000E GETMET R2 R0 K29 0x7C080200, // 000F CALL R2 1 0x70020009, // 0010 JMP #001B 0x6008000C, // 0011 GETGBL R2 G12 @@ -993,17 +987,17 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ be_str_weak(receive), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x88040149, // 0000 GETMBR R1 R0 K73 + 0x88040143, // 0000 GETMBR R1 R0 K67 0x50080200, // 0001 LDBOOL R2 1 0 0x20040202, // 0002 NE R1 R1 R2 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 - 0xB8067A00, // 0005 GETNGBL R1 K61 - 0x8C04034A, // 0006 GETMET R1 R1 K74 + 0xB8067000, // 0005 GETNGBL R1 K56 + 0x8C040344, // 0006 GETMET R1 R1 K68 0x7C040200, // 0007 CALL R1 1 - 0x8808014B, // 0008 GETMBR R2 R0 K75 + 0x88080145, // 0008 GETMBR R2 R0 K69 0x04040202, // 0009 SUB R1 R1 R2 - 0x88080139, // 000A GETMBR R2 R0 K57 + 0x88080134, // 000A GETMBR R2 R0 K52 0x24040202, // 000B GT R1 R1 R2 0x78060008, // 000C JMPF R1 #0016 0x5405FFFC, // 000D LDINT R1 -3 @@ -1011,18 +1005,18 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ 0x8C04010D, // 000F GETMET R1 R0 K13 0x7C040200, // 0010 CALL R1 1 0x5405FFFD, // 0011 LDINT R1 -2 - 0x90024601, // 0012 SETMBR R0 K35 R1 - 0x8C04012E, // 0013 GETMET R1 R0 K46 + 0x90023E01, // 0012 SETMBR R0 K31 R1 + 0x8C04012A, // 0013 GETMET R1 R0 K42 0x7C040200, // 0014 CALL R1 1 0x70020018, // 0015 JMP #002F - 0x8804014C, // 0016 GETMBR R1 R0 K76 - 0x8C04034D, // 0017 GETMET R1 R1 K77 + 0x88040146, // 0016 GETMBR R1 R0 K70 + 0x8C040347, // 0017 GETMET R1 R1 K71 0x7C040200, // 0018 CALL R1 1 0x58080007, // 0019 LDCONST R2 K7 0x240C0307, // 001A GT R3 R1 K7 0x780E000E, // 001B JMPF R3 #002B - 0x880C014C, // 001C GETMBR R3 R0 K76 - 0x8C0C074E, // 001D GETMET R3 R3 K78 + 0x880C0146, // 001C GETMBR R3 R0 K70 + 0x8C0C0748, // 001D GETMET R3 R3 K72 0x7C0C0200, // 001E CALL R3 1 0x88100105, // 001F GETMBR R4 R0 K5 0x00100803, // 0020 ADD R4 R4 R3 @@ -1031,14 +1025,14 @@ be_local_closure(class_Matter_HTTP_async_receive, /* name */ 0x5C140600, // 0023 MOVE R5 R3 0x7C100200, // 0024 CALL R4 1 0x00080404, // 0025 ADD R2 R2 R4 - 0x8810014C, // 0026 GETMBR R4 R0 K76 - 0x8C10094D, // 0027 GETMET R4 R4 K77 + 0x88100146, // 0026 GETMBR R4 R0 K70 + 0x8C100947, // 0027 GETMET R4 R4 K71 0x7C100200, // 0028 CALL R4 1 0x5C040800, // 0029 MOVE R1 R4 0x7001FFEE, // 002A JMP #001A 0x240C0507, // 002B GT R3 R2 K7 0x780E0001, // 002C JMPF R3 #002F - 0x8C0C014F, // 002D GETMET R3 R0 K79 + 0x8C0C0149, // 002D GETMET R3 R0 K73 0x7C0C0200, // 002E CALL R3 1 0x80000000, // 002F RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h index 0fd88e256..aa7f30ea2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_HTTP_remote' ktab size: 85, total: 161 (saved 608 bytes) -static const bvalue be_ktab_class_Matter_HTTP_remote[85] = { +// compact class 'Matter_HTTP_remote' ktab size: 83, total: 161 (saved 624 bytes) +static const bvalue be_ktab_class_Matter_HTTP_remote[83] = { /* K0 */ be_nested_str_weak(probe_update_time_map), /* K1 */ be_nested_str_weak(contains), /* K2 */ be_nested_str_weak(probe_next_timestamp_map), @@ -48,48 +48,46 @@ static const bvalue be_ktab_class_Matter_HTTP_remote[85] = { /* K40 */ be_nested_str_weak(rtc_utc), /* K41 */ be_nested_str_weak(payload), /* K42 */ be_nested_str_weak(nil), - /* K43 */ be_const_int(0), - /* K44 */ be_nested_str_weak(_X2E_X2E_X2E), - /* K45 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), - /* K46 */ be_nested_str_weak(millis), - /* K47 */ be_nested_str_weak(time_start), - /* K48 */ be_nested_str_weak(dispatch_cb), - /* K49 */ be_nested_str_weak(http_status), - /* K50 */ be_nested_str_weak(string), - /* K51 */ be_nested_str_weak(webserver), - /* K52 */ be_nested_str_weak(wifi), - /* K53 */ be_nested_str_weak(up), - /* K54 */ be_nested_str_weak(eth), - /* K55 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), - /* K56 */ be_nested_str_weak(tr), - /* K57 */ be_nested_str_weak(_X20), - /* K58 */ be_nested_str_weak(_X2B), - /* K59 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K60 */ be_nested_str_weak(port), - /* K61 */ be_nested_str_weak(begin), - /* K62 */ be_nested_str_weak(device), - /* K63 */ be_nested_str_weak(save_param), - /* K64 */ be_nested_str_weak(seconds_to_dhm), - /* K65 */ be_nested_str_weak(init), - /* K66 */ be_nested_str_weak(add_schedule), - /* K67 */ be_nested_str_weak(UPDATE_TIME), - /* K68 */ be_nested_str_weak(device_is_alive), - /* K69 */ be_nested_str_weak(json), - /* K70 */ be_nested_str_weak(load), - /* K71 */ be_nested_str_weak(STATUS_PREFIX), - /* K72 */ be_const_int(1), - /* K73 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), - /* K74 */ be_const_int(3), - /* K75 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), - /* K76 */ be_nested_str_weak(begin_sync), - /* K77 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), - /* K78 */ be_nested_str_weak(time_reached), - /* K79 */ be_nested_str_weak(tcp_connected), - /* K80 */ be_nested_str_weak(probe_async), - /* K81 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), - /* K82 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), - /* K83 */ be_nested_str_weak(phase), - /* K84 */ be_nested_str_weak(status), + /* K43 */ be_nested_str_weak(_X2E_X2E_X2E), + /* K44 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K45 */ be_nested_str_weak(millis), + /* K46 */ be_nested_str_weak(time_start), + /* K47 */ be_nested_str_weak(dispatch_cb), + /* K48 */ be_nested_str_weak(http_status), + /* K49 */ be_nested_str_weak(string), + /* K50 */ be_nested_str_weak(webserver), + /* K51 */ be_nested_str_weak(wifi), + /* K52 */ be_nested_str_weak(up), + /* K53 */ be_nested_str_weak(eth), + /* K54 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D), + /* K55 */ be_nested_str_weak(tr), + /* K56 */ be_nested_str_weak(_X20), + /* K57 */ be_nested_str_weak(_X2B), + /* K58 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K59 */ be_nested_str_weak(port), + /* K60 */ be_nested_str_weak(begin), + /* K61 */ be_nested_str_weak(device), + /* K62 */ be_nested_str_weak(save_param), + /* K63 */ be_nested_str_weak(seconds_to_dhm), + /* K64 */ be_nested_str_weak(init), + /* K65 */ be_nested_str_weak(add_schedule), + /* K66 */ be_nested_str_weak(UPDATE_TIME), + /* K67 */ be_nested_str_weak(device_is_alive), + /* K68 */ be_nested_str_weak(json), + /* K69 */ be_nested_str_weak(load), + /* K70 */ be_nested_str_weak(STATUS_PREFIX), + /* K71 */ be_const_int(1), + /* K72 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s), + /* K73 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27), + /* K74 */ be_nested_str_weak(begin_sync), + /* K75 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27), + /* K76 */ be_nested_str_weak(time_reached), + /* K77 */ be_nested_str_weak(tcp_connected), + /* K78 */ be_nested_str_weak(probe_async), + /* K79 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed), + /* K80 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i), + /* K81 */ be_nested_str_weak(phase), + /* K82 */ be_nested_str_weak(status), }; @@ -477,17 +475,17 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ 0x24080403, // 0010 GT R2 R2 R3 0x780A0004, // 0011 JMPF R2 #0017 0x540A001C, // 0012 LDINT R2 29 - 0x400A5602, // 0013 CONNECT R2 K43 R2 + 0x400A0C02, // 0013 CONNECT R2 K6 R2 0x94080202, // 0014 GETIDX R2 R1 R2 - 0x0008052C, // 0015 ADD R2 R2 K44 + 0x0008052B, // 0015 ADD R2 R2 K43 0x5C040400, // 0016 MOVE R1 R2 0xB80A2200, // 0017 GETNGBL R2 K17 0x600C0018, // 0018 GETGBL R3 G24 - 0x5810002D, // 0019 LDCONST R4 K45 + 0x5810002C, // 0019 LDCONST R4 K44 0xB8164E00, // 001A GETNGBL R5 K39 - 0x8C140B2E, // 001B GETMET R5 R5 K46 + 0x8C140B2D, // 001B GETMET R5 R5 K45 0x7C140200, // 001C CALL R5 1 - 0x8818012F, // 001D GETMBR R6 R0 K47 + 0x8818012E, // 001D GETMBR R6 R0 K46 0x04140A06, // 001E SUB R5 R5 R6 0x88180113, // 001F GETMBR R6 R0 K19 0x601C000C, // 0020 GETGBL R7 G12 @@ -497,8 +495,8 @@ be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */ 0x7C0C0A00, // 0024 CALL R3 5 0x58100014, // 0025 LDCONST R4 K20 0x7C080400, // 0026 CALL R2 2 - 0x8C080130, // 0027 GETMET R2 R0 K48 - 0x88100131, // 0028 GETMBR R4 R0 K49 + 0x8C08012F, // 0027 GETMET R2 R0 K47 + 0x88100130, // 0028 GETMBR R4 R0 K48 0x88140129, // 0029 GETMBR R5 R0 K41 0x7C080600, // 002A CALL R2 3 0x80000000, // 002B RET 0 @@ -525,37 +523,37 @@ be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */ be_str_weak(probe_async), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA40A6400, // 0000 IMPORT R2 K50 - 0xA40E6600, // 0001 IMPORT R3 K51 + 0xA40A6200, // 0000 IMPORT R2 K49 + 0xA40E6400, // 0001 IMPORT R3 K50 0xB8124E00, // 0002 GETNGBL R4 K39 - 0x8C100934, // 0003 GETMET R4 R4 K52 + 0x8C100933, // 0003 GETMET R4 R4 K51 0x7C100200, // 0004 CALL R4 1 - 0x94100935, // 0005 GETIDX R4 R4 K53 + 0x94100934, // 0005 GETIDX R4 R4 K52 0x74120006, // 0006 JMPT R4 #000E 0xB8124E00, // 0007 GETNGBL R4 K39 - 0x8C100936, // 0008 GETMET R4 R4 K54 + 0x8C100935, // 0008 GETMET R4 R4 K53 0x7C100200, // 0009 CALL R4 1 - 0x94100935, // 000A GETIDX R4 R4 K53 + 0x94100934, // 000A GETIDX R4 R4 K52 0x74120001, // 000B JMPT R4 #000E 0x4C100000, // 000C LDNIL R4 0x80040800, // 000D RET 1 R4 0x90021201, // 000E SETMBR R0 K9 R1 - 0x8C100538, // 000F GETMET R4 R2 K56 + 0x8C100537, // 000F GETMET R4 R2 K55 0x5C180200, // 0010 MOVE R6 R1 - 0x581C0039, // 0011 LDCONST R7 K57 - 0x5820003A, // 0012 LDCONST R8 K58 + 0x581C0038, // 0011 LDCONST R7 K56 + 0x58200039, // 0012 LDCONST R8 K57 0x7C100800, // 0013 CALL R4 4 - 0x00126E04, // 0014 ADD R4 K55 R4 + 0x00126C04, // 0014 ADD R4 K54 R4 0xB8162200, // 0015 GETNGBL R5 K17 0x60180018, // 0016 GETGBL R6 G24 - 0x581C003B, // 0017 LDCONST R7 K59 + 0x581C003A, // 0017 LDCONST R7 K58 0x88200113, // 0018 GETMBR R8 R0 K19 - 0x8824013C, // 0019 GETMBR R9 R0 K60 + 0x8824013B, // 0019 GETMBR R9 R0 K59 0x5C280800, // 001A MOVE R10 R4 0x7C180800, // 001B CALL R6 4 0x541E0003, // 001C LDINT R7 4 0x7C140400, // 001D CALL R5 2 - 0x8C14013D, // 001E GETMET R5 R0 K61 + 0x8C14013C, // 001E GETMET R5 R0 K60 0x5C1C0800, // 001F MOVE R7 R4 0x7C140400, // 0020 CALL R5 2 0x80000000, // 0021 RET 0 @@ -582,8 +580,8 @@ be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */ be_str_weak(info_changed), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8804013E, // 0000 GETMBR R1 R0 K62 - 0x8C04033F, // 0001 GETMET R1 R1 K63 + 0x8804013D, // 0000 GETMBR R1 R0 K61 + 0x8C04033E, // 0001 GETMET R1 R1 K62 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -609,7 +607,7 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ be_str_weak(web_last_seen), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xA4066600, // 0000 IMPORT R1 K51 + 0xA4066400, // 0000 IMPORT R1 K50 0x5409FFFE, // 0001 LDINT R2 -1 0x880C0126, // 0002 GETMBR R3 R0 K38 0x4C100000, // 0003 LDNIL R4 @@ -622,7 +620,7 @@ be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */ 0x040C0604, // 000A SUB R3 R3 R4 0x5C080600, // 000B MOVE R2 R3 0xB80E0600, // 000C GETNGBL R3 K3 - 0x8C0C0740, // 000D GETMET R3 R3 K64 + 0x8C0C073F, // 000D GETMET R3 R3 K63 0x5C140400, // 000E MOVE R5 R2 0x7C0C0400, // 000F CALL R3 2 0x80040600, // 0010 RET 1 R3 @@ -740,7 +738,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x90027C01, // 0000 SETMBR R0 K62 R1 + 0x90027A01, // 0000 SETMBR R0 K61 R1 0x60140013, // 0001 GETGBL R5 G19 0x7C140000, // 0002 CALL R5 0 0x90020005, // 0003 SETMBR R0 K0 R5 @@ -757,7 +755,7 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ 0x60140003, // 000E GETGBL R5 G3 0x5C180000, // 000F MOVE R6 R0 0x7C140200, // 0010 CALL R5 1 - 0x8C140B41, // 0011 GETMET R5 R5 K65 + 0x8C140B40, // 0011 GETMET R5 R5 K64 0x5C1C0400, // 0012 MOVE R7 R2 0x5422004F, // 0013 LDINT R8 80 0x5C240600, // 0014 MOVE R9 R3 @@ -766,21 +764,21 @@ be_local_closure(class_Matter_HTTP_remote_init, /* name */ 0x60140013, // 0017 GETGBL R5 G19 0x7C140000, // 0018 CALL R5 0 0x90021605, // 0019 SETMBR R0 K11 R5 - 0x8814013E, // 001A GETMBR R5 R0 K62 + 0x8814013D, // 001A GETMBR R5 R0 K61 0x7816000E, // 001B JMPF R5 #002B - 0x8C140142, // 001C GETMET R5 R0 K66 + 0x8C140141, // 001C GETMET R5 R0 K65 0x881C0116, // 001D GETMBR R7 R0 K22 - 0x88200143, // 001E GETMBR R8 R0 K67 + 0x88200142, // 001E GETMBR R8 R0 K66 0x84240000, // 001F CLOSURE R9 P0 0x7C140800, // 0020 CALL R5 4 - 0x8C140142, // 0021 GETMET R5 R0 K66 + 0x8C140141, // 0021 GETMET R5 R0 K65 0x881C011F, // 0022 GETMBR R7 R0 K31 - 0x88200143, // 0023 GETMBR R8 R0 K67 + 0x88200142, // 0023 GETMBR R8 R0 K66 0x84240001, // 0024 CLOSURE R9 P1 0x7C140800, // 0025 CALL R5 4 - 0x8C140142, // 0026 GETMET R5 R0 K66 + 0x8C140141, // 0026 GETMET R5 R0 K65 0x881C0123, // 0027 GETMBR R7 R0 K35 - 0x88200143, // 0028 GETMBR R8 R0 K67 + 0x88200142, // 0028 GETMBR R8 R0 K66 0x84240002, // 0029 CLOSURE R9 P2 0x7C140800, // 002A CALL R5 4 0xA0000000, // 002B CLOSE R0 @@ -850,17 +848,17 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x781A0034, // 0002 JMPF R6 #0038 0x24180306, // 0003 GT R6 R1 K6 0x781A0032, // 0004 JMPF R6 #0038 - 0x8C180144, // 0005 GETMET R6 R0 K68 + 0x8C180143, // 0005 GETMET R6 R0 K67 0x50200200, // 0006 LDBOOL R8 1 0 0x7C180400, // 0007 CALL R6 2 0x5C180400, // 0008 MOVE R6 R2 0x601C0004, // 0009 GETGBL R7 G4 0x5C200C00, // 000A MOVE R8 R6 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0F32, // 000C EQ R7 R7 K50 + 0x1C1C0F31, // 000C EQ R7 R7 K49 0x781E0004, // 000D JMPF R7 #0013 - 0xA41E8A00, // 000E IMPORT R7 K69 - 0x8C200F46, // 000F GETMET R8 R7 K70 + 0xA41E8800, // 000E IMPORT R7 K68 + 0x8C200F45, // 000F GETMET R8 R7 K69 0x5C280C00, // 0010 MOVE R10 R6 0x7C200400, // 0011 CALL R8 2 0x5C181000, // 0012 MOVE R6 R8 @@ -869,7 +867,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x20200C08, // 0015 NE R8 R6 R8 0x78220019, // 0016 JMPF R8 #0031 0x58200006, // 0017 LDCONST R8 K6 - 0x88240147, // 0018 GETMBR R9 R0 K71 + 0x88240146, // 0018 GETMBR R9 R0 K70 0x6028000C, // 0019 GETGBL R10 G12 0x5C2C1200, // 001A MOVE R11 R9 0x7C280200, // 001B CALL R10 1 @@ -886,7 +884,7 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x94180C0A, // 0026 GETIDX R6 R6 R10 0x5C1C1000, // 0027 MOVE R7 R8 0x70020001, // 0028 JMP #002B - 0x00201148, // 0029 ADD R8 R8 K72 + 0x00201147, // 0029 ADD R8 R8 K71 0x7001FFED, // 002A JMP #0019 0x5C280A00, // 002B MOVE R10 R5 0x5C2C0800, // 002C MOVE R11 R4 @@ -896,10 +894,10 @@ be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, 0x70020006, // 0030 JMP #0038 0xB8222200, // 0031 GETNGBL R8 K17 0x60240018, // 0032 GETGBL R9 G24 - 0x58280049, // 0033 LDCONST R10 K73 + 0x58280048, // 0033 LDCONST R10 K72 0x5C2C0400, // 0034 MOVE R11 R2 0x7C240400, // 0035 CALL R9 2 - 0x5828004A, // 0036 LDCONST R10 K74 + 0x58280014, // 0036 LDCONST R10 K20 0x7C200400, // 0037 CALL R8 2 0x80000000, // 0038 RET 0 }) @@ -925,33 +923,33 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ be_str_weak(call_sync), &be_const_str_solidified, ( &(const binstruction[70]) { /* code */ - 0xA40E6400, // 0000 IMPORT R3 K50 - 0xA4126600, // 0001 IMPORT R4 K51 + 0xA40E6200, // 0000 IMPORT R3 K49 + 0xA4126400, // 0001 IMPORT R4 K50 0xB8164E00, // 0002 GETNGBL R5 K39 - 0x8C140B34, // 0003 GETMET R5 R5 K52 + 0x8C140B33, // 0003 GETMET R5 R5 K51 0x7C140200, // 0004 CALL R5 1 - 0x94140B35, // 0005 GETIDX R5 R5 K53 + 0x94140B34, // 0005 GETIDX R5 R5 K52 0x74160006, // 0006 JMPT R5 #000E 0xB8164E00, // 0007 GETNGBL R5 K39 - 0x8C140B36, // 0008 GETMET R5 R5 K54 + 0x8C140B35, // 0008 GETMET R5 R5 K53 0x7C140200, // 0009 CALL R5 1 - 0x94140B35, // 000A GETIDX R5 R5 K53 + 0x94140B34, // 000A GETIDX R5 R5 K52 0x74160001, // 000B JMPT R5 #000E 0x4C140000, // 000C LDNIL R5 0x80040A00, // 000D RET 1 R5 0x4C140000, // 000E LDNIL R5 0x90021205, // 000F SETMBR R0 K9 R5 - 0x8C140738, // 0010 GETMET R5 R3 K56 + 0x8C140737, // 0010 GETMET R5 R3 K55 0x5C1C0200, // 0011 MOVE R7 R1 - 0x58200039, // 0012 LDCONST R8 K57 - 0x5824003A, // 0013 LDCONST R9 K58 + 0x58200038, // 0012 LDCONST R8 K56 + 0x58240039, // 0013 LDCONST R9 K57 0x7C140800, // 0014 CALL R5 4 - 0x00166E05, // 0015 ADD R5 K55 R5 + 0x00166C05, // 0015 ADD R5 K54 R5 0xB81A2200, // 0016 GETNGBL R6 K17 0x601C0018, // 0017 GETGBL R7 G24 - 0x5820004B, // 0018 LDCONST R8 K75 + 0x58200049, // 0018 LDCONST R8 K73 0x88240113, // 0019 GETMBR R9 R0 K19 - 0x8828013C, // 001A GETMBR R10 R0 K60 + 0x8828013B, // 001A GETMBR R10 R0 K59 0x5C2C0A00, // 001B MOVE R11 R5 0x7C1C0800, // 001C CALL R7 4 0x54220003, // 001D LDINT R8 4 @@ -959,7 +957,7 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0x60180003, // 001F GETGBL R6 G3 0x5C1C0000, // 0020 MOVE R7 R0 0x7C180200, // 0021 CALL R6 1 - 0x8C180D4C, // 0022 GETMET R6 R6 K76 + 0x8C180D4A, // 0022 GETMET R6 R6 K74 0x5C200A00, // 0023 MOVE R8 R5 0x5C240400, // 0024 MOVE R9 R2 0x7C180600, // 0025 CALL R6 3 @@ -974,17 +972,17 @@ be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */ 0x24201009, // 002E GT R8 R8 R9 0x78220004, // 002F JMPF R8 #0035 0x5422001C, // 0030 LDINT R8 29 - 0x40225608, // 0031 CONNECT R8 K43 R8 + 0x40220C08, // 0031 CONNECT R8 K6 R8 0x94200E08, // 0032 GETIDX R8 R7 R8 - 0x0020112C, // 0033 ADD R8 R8 K44 + 0x0020112B, // 0033 ADD R8 R8 K43 0x5C1C1000, // 0034 MOVE R7 R8 0xB8222200, // 0035 GETNGBL R8 K17 0x60240018, // 0036 GETGBL R9 G24 - 0x5828004D, // 0037 LDCONST R10 K77 + 0x5828004B, // 0037 LDCONST R10 K75 0xB82E4E00, // 0038 GETNGBL R11 K39 - 0x8C2C172E, // 0039 GETMET R11 R11 K46 + 0x8C2C172D, // 0039 GETMET R11 R11 K45 0x7C2C0200, // 003A CALL R11 1 - 0x8830012F, // 003B GETMBR R12 R0 K47 + 0x8830012E, // 003B GETMBR R12 R0 K46 0x042C160C, // 003C SUB R11 R11 R12 0x88300113, // 003D GETMBR R12 R0 K19 0x6034000C, // 003E GETGBL R13 G12 @@ -1029,7 +1027,7 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0x7C0C0000, // 0008 CALL R3 0 0x88100102, // 0009 GETMBR R4 R0 K2 0x94100803, // 000A GETIDX R4 R4 R3 - 0x1C10092B, // 000B EQ R4 R4 K43 + 0x1C100906, // 000B EQ R4 R4 K6 0x78120001, // 000C JMPF R4 #000F 0x5C040600, // 000D MOVE R1 R3 0x70020000, // 000E JMP #0010 @@ -1051,7 +1049,7 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0x5C0C0400, // 001E MOVE R3 R2 0x7C0C0000, // 001F CALL R3 0 0xB8124E00, // 0020 GETNGBL R4 K39 - 0x8C10094E, // 0021 GETMET R4 R4 K78 + 0x8C10094C, // 0021 GETMET R4 R4 K76 0x88180102, // 0022 GETMBR R6 R0 K2 0x94180C03, // 0023 GETIDX R6 R6 R3 0x7C100400, // 0024 CALL R4 2 @@ -1068,19 +1066,19 @@ be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */ 0x1C080202, // 002F EQ R2 R1 R2 0x780A0000, // 0030 JMPF R2 #0032 0x80000400, // 0031 RET 0 - 0x8808014F, // 0032 GETMBR R2 R0 K79 + 0x8808014D, // 0032 GETMBR R2 R0 K77 0x780A0002, // 0033 JMPF R2 #0037 0x88080102, // 0034 GETMBR R2 R0 K2 - 0x9808032B, // 0035 SETIDX R2 R1 K43 + 0x98080306, // 0035 SETIDX R2 R1 K6 0x80000400, // 0036 RET 0 0x88080102, // 0037 GETMBR R2 R0 K2 0xB80E4E00, // 0038 GETNGBL R3 K39 - 0x8C0C072E, // 0039 GETMET R3 R3 K46 + 0x8C0C072D, // 0039 GETMET R3 R3 K45 0x88140100, // 003A GETMBR R5 R0 K0 0x94140A01, // 003B GETIDX R5 R5 R1 0x7C0C0400, // 003C CALL R3 2 0x98080203, // 003D SETIDX R2 R1 R3 - 0x8C080150, // 003E GETMET R2 R0 K80 + 0x8C08014E, // 003E GETMET R2 R0 K78 0x5C100200, // 003F MOVE R4 R1 0x7C080400, // 0040 CALL R2 2 0x80000000, // 0041 RET 0 @@ -1113,11 +1111,11 @@ be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */ 0x78060000, // 0003 JMPF R1 #0005 0x80000200, // 0004 RET 0 0xB8062200, // 0005 GETNGBL R1 K17 - 0x58080051, // 0006 LDCONST R2 K81 + 0x5808004F, // 0006 LDCONST R2 K79 0x580C0014, // 0007 LDCONST R3 K20 0x7C040400, // 0008 CALL R1 2 - 0x8C040130, // 0009 GETMET R1 R0 K48 - 0x880C0131, // 000A GETMBR R3 R0 K49 + 0x8C04012F, // 0009 GETMET R1 R0 K47 + 0x880C0130, // 000A GETMBR R3 R0 K48 0x4C100000, // 000B LDNIL R4 0x7C040600, // 000C CALL R1 3 0x80000000, // 000D RET 0 @@ -1177,18 +1175,18 @@ be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */ 0x80000200, // 0004 RET 0 0xB8062200, // 0005 GETNGBL R1 K17 0x60080018, // 0006 GETGBL R2 G24 - 0x580C0052, // 0007 LDCONST R3 K82 - 0x88100131, // 0008 GETMBR R4 R0 K49 - 0x88140153, // 0009 GETMBR R5 R0 K83 - 0x88180154, // 000A GETMBR R6 R0 K84 + 0x580C0050, // 0007 LDCONST R3 K80 + 0x88100130, // 0008 GETMBR R4 R0 K48 + 0x88140151, // 0009 GETMBR R5 R0 K81 + 0x88180152, // 000A GETMBR R6 R0 K82 0x601C000C, // 000B GETGBL R7 G12 0x88200129, // 000C GETMBR R8 R0 K41 0x7C1C0200, // 000D CALL R7 1 0x7C080A00, // 000E CALL R2 5 0x580C0014, // 000F LDCONST R3 K20 0x7C040400, // 0010 CALL R1 2 - 0x8C040130, // 0011 GETMET R1 R0 K48 - 0x880C0131, // 0012 GETMBR R3 R0 K49 + 0x8C04012F, // 0011 GETMET R1 R0 K47 + 0x880C0130, // 0012 GETMBR R3 R0 K48 0x4C100000, // 0013 LDNIL R4 0x7C040600, // 0014 CALL R1 3 0x80000000, // 0015 RET 0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 18fd0c955..8fb88782b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_IM; -// compact class 'Matter_IM' ktab size: 208, total: 507 (saved 2392 bytes) -static const bvalue be_ktab_class_Matter_IM[208] = { +// compact class 'Matter_IM' ktab size: 203, total: 507 (saved 2432 bytes) +static const bvalue be_ktab_class_Matter_IM[203] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(WriteRequestMessage), /* K2 */ be_nested_str_weak(from_TLV), @@ -51,169 +51,164 @@ static const bvalue be_ktab_class_Matter_IM[208] = { /* K42 */ be_const_int(1), /* K43 */ be_const_int(2), /* K44 */ be_const_int(355795236), - /* K45 */ be_const_int(1), - /* K46 */ be_nested_str_weak(path2raw), - /* K47 */ be_nested_str_weak(tag_sub), - /* K48 */ be_const_int(2), - /* K49 */ be_nested_str_weak(tlv2raw), - /* K50 */ be_nested_str_weak(ReadRequestMessage), - /* K51 */ be_nested_str_weak(fabric_filtered), - /* K52 */ be_nested_str_weak(attributes_requests), - /* K53 */ be_nested_str_weak(updates), - /* K54 */ be_nested_str_weak(AttributePathIB), - /* K55 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), - /* K56 */ be_nested_str_weak(local_session_id), - /* K57 */ be_nested_str_weak(subscription_id), - /* K58 */ be_nested_str_weak(is_keep_alive), - /* K59 */ be_nested_str_weak(process_read_or_subscribe_request_pull), - /* K60 */ be_nested_str_weak(update_event_generator_array), - /* K61 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), - /* K62 */ be_nested_str_weak(_message_handler), - /* K63 */ be_nested_str_weak(send_enqueued), - /* K64 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), - /* K65 */ be_nested_str_weak(IM_ReportData_Pull), - /* K66 */ be_const_int(0), - /* K67 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), - /* K68 */ be_nested_str_weak(TimedRequestMessage), - /* K69 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), - /* K70 */ be_nested_str_weak(timeout), - /* K71 */ be_nested_str_weak(send_status), - /* K72 */ be_nested_str_weak(subs_shop), - /* K73 */ be_nested_str_weak(every_50ms), - /* K74 */ be_nested_str_weak(InvokeRequestMessage), - /* K75 */ be_nested_str_weak(invoke_requests), - /* K76 */ be_nested_str_weak(InvokeResponseMessage), - /* K77 */ be_nested_str_weak(invoke_responses), - /* K78 */ be_nested_str_weak(command_path), - /* K79 */ be_nested_str_weak(command), - /* K80 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K81 */ be_nested_str_weak(get_command_name), - /* K82 */ be_nested_str_weak(invoke_request), - /* K83 */ be_nested_str_weak(command_fields), - /* K84 */ be_nested_str_weak(_X28), - /* K85 */ be_nested_str_weak(_X29_X20), - /* K86 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K87 */ be_nested_str_weak(invokeresponse2raw), - /* K88 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), - /* K89 */ be_nested_str_weak(exchange_id), - /* K90 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), - /* K91 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), - /* K92 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), - /* K93 */ be_const_int(0), - /* K94 */ be_nested_str_weak(IM_InvokeResponse), - /* K95 */ be_nested_str_weak(event_requests), - /* K96 */ be_nested_str_weak(get_node_id), - /* K97 */ be_const_int(1), - /* K98 */ be_nested_str_weak(parse_event_filters_min_no), - /* K99 */ be_nested_str_weak(event_filters), - /* K100 */ be_nested_str_weak(EventGenerator), - /* K101 */ be_nested_str_weak(event), - /* K102 */ be_nested_str_weak(get_event_name), - /* K103 */ be_nested_str_weak(_X2502X), - /* K104 */ be_nested_str_weak(_X2A_X2A), - /* K105 */ be_nested_str_weak(_X2504X), - /* K106 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), - /* K107 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), - /* K108 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), - /* K109 */ be_const_int(0), - /* K110 */ be_nested_str_weak(finished), - /* K111 */ be_nested_str_weak(ready), - /* K112 */ be_nested_str_weak(send_im), - /* K113 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), - /* K114 */ be_nested_str_weak(resp), - /* K115 */ be_nested_str_weak(SubscribeRequestMessage), - /* K116 */ be_nested_str_weak(keep_subscriptions), - /* K117 */ be_nested_str_weak(remove_by_session), - /* K118 */ be_nested_str_weak(new_subscription), - /* K119 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), - /* K120 */ be_nested_str_weak(concat), - /* K121 */ be_nested_str_weak(_X20), - /* K122 */ be_nested_str_weak(min_interval), - /* K123 */ be_nested_str_weak(max_interval), - /* K124 */ be_nested_str_weak(set_event_generator_or_arr), - /* K125 */ be_nested_str_weak(IM_SubscribeResponse_Pull), - /* K126 */ be_nested_str_weak(send_encrypted_ack), - /* K127 */ be_nested_str_weak(time_reached), - /* K128 */ be_nested_str_weak(expiration), - /* K129 */ be_nested_str_weak(reached_timeout), - /* K130 */ be_nested_str_weak(remove), - /* K131 */ be_nested_str_weak(find_sendqueue_by_exchangeid), - /* K132 */ be_nested_str_weak(ack_received), - /* K133 */ be_nested_str_weak(get_exchangeid), - /* K134 */ be_nested_str_weak(TLV), - /* K135 */ be_nested_str_weak(AttributeStatusIB), - /* K136 */ be_nested_str_weak(StatusIB), - /* K137 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K138 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), - /* K139 */ be_nested_str_weak(IM_Subscription_Shop), - /* K140 */ be_nested_str_weak(read_request_solo), - /* K141 */ be_nested_str_weak(ReadRequestMessage_solo), - /* K142 */ be_nested_str_weak(invoke_request_solo), - /* K143 */ be_nested_str_weak(InvokeRequestMessage_solo), - /* K144 */ be_nested_str_weak(tlv_solo), - /* K145 */ be_nested_str_weak(Matter_TLV_item), - /* K146 */ be_nested_str_weak(expire_sendqueue), - /* K147 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), - /* K148 */ be_const_int(354943030), - /* K149 */ be_const_int(405077761), - /* K150 */ be_nested_str_weak(build_response), - /* K151 */ be_nested_str_weak(message_handler), - /* K152 */ be_nested_str_weak(raw), - /* K153 */ be_nested_str_weak(clear), - /* K154 */ be_nested_str_weak(encode_frame), - /* K155 */ be_nested_str_weak(encrypt), - /* K156 */ be_nested_str_weak(send_response_frame), - /* K157 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), - /* K158 */ be_nested_str_weak(IM_SubscribedHeartbeat), - /* K159 */ be_nested_str_weak(resolve_attribute_read_solo), - /* K160 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), - /* K161 */ be_nested_str_weak(read_attribute), - /* K162 */ be_nested_str_weak(is_list), - /* K163 */ be_nested_str_weak(is_array), - /* K164 */ be_nested_str_weak(encode_len), - /* K165 */ be_nested_str_weak(MAX_MESSAGE), - /* K166 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), - /* K167 */ be_nested_str_weak(parse), - /* K168 */ be_nested_str_weak(app_payload_idx), - /* K169 */ be_nested_str_weak(process_read_request_pull), - /* K170 */ be_nested_str_weak(attributedata2raw), - /* K171 */ be_nested_str_weak(attributestatus2raw), - /* K172 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), - /* K173 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), - /* K174 */ be_nested_str_weak(message_counter), - /* K175 */ be_nested_str_weak(ack_message_counter), - /* K176 */ be_nested_str_weak(to_str_val), - /* K177 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K178 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K179 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), - /* K180 */ be_const_class(be_class_Matter_IM), - /* K181 */ be_nested_str_weak(int64), - /* K182 */ be_nested_str_weak(toint64), - /* K183 */ be_nested_str_weak(node), - /* K184 */ be_nested_str_weak(tobytes), - /* K185 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), - /* K186 */ be_nested_str_weak(tohex), - /* K187 */ be_nested_str_weak(event_min), - /* K188 */ be_nested_str_weak(findsubval), - /* K189 */ be_nested_str_weak(status_ok_received), - /* K190 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), - /* K191 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), - /* K192 */ be_nested_str_weak(status_error_received), - /* K193 */ be_nested_str_weak(Matter_TLV_array), - /* K194 */ be_nested_str_weak(val), - /* K195 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), - /* K196 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), - /* K197 */ be_nested_str_weak(IM_Status), - /* K198 */ be_nested_str_weak(opcode), - /* K199 */ be_nested_str_weak(from_raw), - /* K200 */ be_nested_str_weak(process_read_request_solo), - /* K201 */ be_nested_str_weak(process_invoke_request_solo), - /* K202 */ be_nested_str_weak(process_status_response), - /* K203 */ be_nested_str_weak(send_ack_now), - /* K204 */ be_nested_str_weak(subscribe_request), - /* K205 */ be_nested_str_weak(process_write_request), - /* K206 */ be_nested_str_weak(process_invoke_request), - /* K207 */ be_nested_str_weak(process_timed_request), + /* K45 */ be_nested_str_weak(path2raw), + /* K46 */ be_nested_str_weak(tag_sub), + /* K47 */ be_nested_str_weak(tlv2raw), + /* K48 */ be_nested_str_weak(ReadRequestMessage), + /* K49 */ be_nested_str_weak(fabric_filtered), + /* K50 */ be_nested_str_weak(attributes_requests), + /* K51 */ be_nested_str_weak(updates), + /* K52 */ be_nested_str_weak(AttributePathIB), + /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i), + /* K54 */ be_nested_str_weak(local_session_id), + /* K55 */ be_nested_str_weak(subscription_id), + /* K56 */ be_nested_str_weak(is_keep_alive), + /* K57 */ be_nested_str_weak(process_read_or_subscribe_request_pull), + /* K58 */ be_nested_str_weak(update_event_generator_array), + /* K59 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull), + /* K60 */ be_nested_str_weak(_message_handler), + /* K61 */ be_nested_str_weak(send_enqueued), + /* K62 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull), + /* K63 */ be_nested_str_weak(IM_ReportData_Pull), + /* K64 */ be_const_int(0), + /* K65 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s), + /* K66 */ be_nested_str_weak(TimedRequestMessage), + /* K67 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i), + /* K68 */ be_nested_str_weak(timeout), + /* K69 */ be_nested_str_weak(send_status), + /* K70 */ be_nested_str_weak(subs_shop), + /* K71 */ be_nested_str_weak(every_50ms), + /* K72 */ be_nested_str_weak(InvokeRequestMessage), + /* K73 */ be_nested_str_weak(invoke_requests), + /* K74 */ be_nested_str_weak(InvokeResponseMessage), + /* K75 */ be_nested_str_weak(invoke_responses), + /* K76 */ be_nested_str_weak(command_path), + /* K77 */ be_nested_str_weak(command), + /* K78 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K79 */ be_nested_str_weak(get_command_name), + /* K80 */ be_nested_str_weak(invoke_request), + /* K81 */ be_nested_str_weak(command_fields), + /* K82 */ be_nested_str_weak(_X28), + /* K83 */ be_nested_str_weak(_X29_X20), + /* K84 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K85 */ be_nested_str_weak(invokeresponse2raw), + /* K86 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i), + /* K87 */ be_nested_str_weak(exchange_id), + /* K88 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s), + /* K89 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i), + /* K90 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i), + /* K91 */ be_nested_str_weak(IM_InvokeResponse), + /* K92 */ be_nested_str_weak(event_requests), + /* K93 */ be_nested_str_weak(get_node_id), + /* K94 */ be_nested_str_weak(parse_event_filters_min_no), + /* K95 */ be_nested_str_weak(event_filters), + /* K96 */ be_nested_str_weak(EventGenerator), + /* K97 */ be_nested_str_weak(event), + /* K98 */ be_nested_str_weak(get_event_name), + /* K99 */ be_nested_str_weak(_X2502X), + /* K100 */ be_nested_str_weak(_X2A_X2A), + /* K101 */ be_nested_str_weak(_X2504X), + /* K102 */ be_nested_str_weak(_X2A_X2A_X2A_X2A), + /* K103 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29), + /* K104 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s), + /* K105 */ be_nested_str_weak(finished), + /* K106 */ be_nested_str_weak(ready), + /* K107 */ be_nested_str_weak(send_im), + /* K108 */ be_nested_str_weak(remove_sendqueue_by_exchangeid), + /* K109 */ be_nested_str_weak(resp), + /* K110 */ be_nested_str_weak(SubscribeRequestMessage), + /* K111 */ be_nested_str_weak(keep_subscriptions), + /* K112 */ be_nested_str_weak(remove_by_session), + /* K113 */ be_nested_str_weak(new_subscription), + /* K114 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s), + /* K115 */ be_nested_str_weak(concat), + /* K116 */ be_nested_str_weak(_X20), + /* K117 */ be_nested_str_weak(min_interval), + /* K118 */ be_nested_str_weak(max_interval), + /* K119 */ be_nested_str_weak(set_event_generator_or_arr), + /* K120 */ be_nested_str_weak(IM_SubscribeResponse_Pull), + /* K121 */ be_nested_str_weak(send_encrypted_ack), + /* K122 */ be_nested_str_weak(time_reached), + /* K123 */ be_nested_str_weak(expiration), + /* K124 */ be_nested_str_weak(reached_timeout), + /* K125 */ be_nested_str_weak(remove), + /* K126 */ be_nested_str_weak(find_sendqueue_by_exchangeid), + /* K127 */ be_nested_str_weak(ack_received), + /* K128 */ be_nested_str_weak(get_exchangeid), + /* K129 */ be_nested_str_weak(TLV), + /* K130 */ be_nested_str_weak(AttributeStatusIB), + /* K131 */ be_nested_str_weak(StatusIB), + /* K132 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K133 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED), + /* K134 */ be_nested_str_weak(IM_Subscription_Shop), + /* K135 */ be_nested_str_weak(read_request_solo), + /* K136 */ be_nested_str_weak(ReadRequestMessage_solo), + /* K137 */ be_nested_str_weak(invoke_request_solo), + /* K138 */ be_nested_str_weak(InvokeRequestMessage_solo), + /* K139 */ be_nested_str_weak(tlv_solo), + /* K140 */ be_nested_str_weak(Matter_TLV_item), + /* K141 */ be_nested_str_weak(expire_sendqueue), + /* K142 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s), + /* K143 */ be_const_int(354943030), + /* K144 */ be_const_int(405077761), + /* K145 */ be_nested_str_weak(build_response), + /* K146 */ be_nested_str_weak(message_handler), + /* K147 */ be_nested_str_weak(raw), + /* K148 */ be_nested_str_weak(clear), + /* K149 */ be_nested_str_weak(encode_frame), + /* K150 */ be_nested_str_weak(encrypt), + /* K151 */ be_nested_str_weak(send_response_frame), + /* K152 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s), + /* K153 */ be_nested_str_weak(IM_SubscribedHeartbeat), + /* K154 */ be_nested_str_weak(resolve_attribute_read_solo), + /* K155 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K156 */ be_nested_str_weak(read_attribute), + /* K157 */ be_nested_str_weak(is_list), + /* K158 */ be_nested_str_weak(is_array), + /* K159 */ be_nested_str_weak(encode_len), + /* K160 */ be_nested_str_weak(MAX_MESSAGE), + /* K161 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo), + /* K162 */ be_nested_str_weak(parse), + /* K163 */ be_nested_str_weak(app_payload_idx), + /* K164 */ be_nested_str_weak(process_read_request_pull), + /* K165 */ be_nested_str_weak(attributedata2raw), + /* K166 */ be_nested_str_weak(attributestatus2raw), + /* K167 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED), + /* K168 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s), + /* K169 */ be_nested_str_weak(message_counter), + /* K170 */ be_nested_str_weak(ack_message_counter), + /* K171 */ be_nested_str_weak(to_str_val), + /* K172 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K173 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K174 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), + /* K175 */ be_const_class(be_class_Matter_IM), + /* K176 */ be_nested_str_weak(int64), + /* K177 */ be_nested_str_weak(toint64), + /* K178 */ be_nested_str_weak(node), + /* K179 */ be_nested_str_weak(tobytes), + /* K180 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s), + /* K181 */ be_nested_str_weak(tohex), + /* K182 */ be_nested_str_weak(event_min), + /* K183 */ be_nested_str_weak(findsubval), + /* K184 */ be_nested_str_weak(status_ok_received), + /* K185 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found), + /* K186 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X), + /* K187 */ be_nested_str_weak(status_error_received), + /* K188 */ be_nested_str_weak(Matter_TLV_array), + /* K189 */ be_nested_str_weak(val), + /* K190 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K191 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K192 */ be_nested_str_weak(IM_Status), + /* K193 */ be_nested_str_weak(opcode), + /* K194 */ be_nested_str_weak(from_raw), + /* K195 */ be_nested_str_weak(process_read_request_solo), + /* K196 */ be_nested_str_weak(process_invoke_request_solo), + /* K197 */ be_nested_str_weak(process_status_response), + /* K198 */ be_nested_str_weak(send_ack_now), + /* K199 */ be_nested_str_weak(subscribe_request), + /* K200 */ be_nested_str_weak(process_write_request), + /* K201 */ be_nested_str_weak(process_invoke_request), + /* K202 */ be_nested_str_weak(process_timed_request), }; @@ -539,17 +534,17 @@ be_local_closure(class_Matter_IM_attributedata2raw, /* name */ 0x5421FFFB, // 0002 LDINT R8 -4 0x7C140600, // 0003 CALL R5 3 0x8C140329, // 0004 GETMET R5 R1 K41 - 0x581C002D, // 0005 LDCONST R7 K45 + 0x581C002A, // 0005 LDCONST R7 K42 0x5421FFFD, // 0006 LDINT R8 -2 0x7C140600, // 0007 CALL R5 3 - 0x8C14012E, // 0008 GETMET R5 R0 K46 + 0x8C14012D, // 0008 GETMET R5 R0 K45 0x5C1C0200, // 0009 MOVE R7 R1 0x5C200400, // 000A MOVE R8 R2 - 0x5824002D, // 000B LDCONST R9 K45 + 0x5824002A, // 000B LDCONST R9 K42 0x5C280800, // 000C MOVE R10 R4 0x7C140A00, // 000D CALL R5 5 - 0x900E5F30, // 000E SETMBR R3 K47 K48 - 0x8C140731, // 000F GETMET R5 R3 K49 + 0x900E5D2B, // 000E SETMBR R3 K46 K43 + 0x8C14072F, // 000F GETMET R5 R3 K47 0x5C1C0200, // 0010 MOVE R7 R1 0x7C140400, // 0011 CALL R5 2 0x8C140329, // 0012 GETMET R5 R1 K41 @@ -582,21 +577,21 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ ( &(const binstruction[64]) { /* code */ 0x88080323, // 0000 GETMBR R2 R1 K35 0xB80E0000, // 0001 GETNGBL R3 K0 - 0x8C0C0732, // 0002 GETMET R3 R3 K50 + 0x8C0C0730, // 0002 GETMET R3 R3 K48 0x7C0C0200, // 0003 CALL R3 1 0x50100000, // 0004 LDBOOL R4 0 0 - 0x900E6604, // 0005 SETMBR R3 K51 R4 + 0x900E6204, // 0005 SETMBR R3 K49 R4 0x60100012, // 0006 GETGBL R4 G18 0x7C100000, // 0007 CALL R4 0 - 0x900E6804, // 0008 SETMBR R3 K52 R4 + 0x900E6404, // 0008 SETMBR R3 K50 R4 0x60100010, // 0009 GETGBL R4 G16 - 0x88140335, // 000A GETMBR R5 R1 K53 + 0x88140333, // 000A GETMBR R5 R1 K51 0x7C100200, // 000B CALL R4 1 0xA802000F, // 000C EXBLK 0 #001D 0x5C140800, // 000D MOVE R5 R4 0x7C140000, // 000E CALL R5 0 0xB81A0000, // 000F GETNGBL R6 K0 - 0x8C180D36, // 0010 GETMET R6 R6 K54 + 0x8C180D34, // 0010 GETMET R6 R6 K52 0x7C180200, // 0011 CALL R6 1 0x881C0B12, // 0012 GETMBR R7 R5 K18 0x901A2407, // 0013 SETMBR R6 K18 R7 @@ -604,7 +599,7 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0x901A1A07, // 0015 SETMBR R6 K13 R7 0x881C0B0E, // 0016 GETMBR R7 R5 K14 0x901A1C07, // 0017 SETMBR R6 K14 R7 - 0x881C0734, // 0018 GETMBR R7 R3 K52 + 0x881C0732, // 0018 GETMBR R7 R3 K50 0x8C1C0F27, // 0019 GETMET R7 R7 K39 0x5C240C00, // 001A MOVE R9 R6 0x7C1C0400, // 001B CALL R7 2 @@ -614,23 +609,23 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0xB0080000, // 001F RAISE 2 R0 R0 0xB8122E00, // 0020 GETNGBL R4 K23 0x60140018, // 0021 GETGBL R5 G24 - 0x58180037, // 0022 LDCONST R6 K55 - 0x881C0538, // 0023 GETMBR R7 R2 K56 - 0x88200339, // 0024 GETMBR R8 R1 K57 + 0x58180035, // 0022 LDCONST R6 K53 + 0x881C0536, // 0023 GETMBR R7 R2 K54 + 0x88200337, // 0024 GETMBR R8 R1 K55 0x7C140600, // 0025 CALL R5 3 0x58180015, // 0026 LDCONST R6 K21 0x7C100400, // 0027 CALL R4 2 0x50100000, // 0028 LDBOOL R4 0 0 - 0x90067404, // 0029 SETMBR R1 K58 R4 - 0x8C10013B, // 002A GETMET R4 R0 K59 + 0x90067004, // 0029 SETMBR R1 K56 R4 + 0x8C100139, // 002A GETMET R4 R0 K57 0x5C180600, // 002B MOVE R6 R3 0x4C1C0000, // 002C LDNIL R7 0x7C100600, // 002D CALL R4 3 - 0x8C14033C, // 002E GETMET R5 R1 K60 + 0x8C14033A, // 002E GETMET R5 R1 K58 0x7C140200, // 002F CALL R5 1 0xB81A0000, // 0030 GETNGBL R6 K0 - 0x8C180D3D, // 0031 GETMET R6 R6 K61 - 0x8820053E, // 0032 GETMBR R8 R2 K62 + 0x8C180D3B, // 0031 GETMET R6 R6 K59 + 0x8820053C, // 0032 GETMBR R8 R2 K60 0x5C240400, // 0033 MOVE R9 R2 0x5C280800, // 0034 MOVE R10 R4 0x5C2C0A00, // 0035 MOVE R11 R5 @@ -640,8 +635,8 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */ 0x8C1C0F27, // 0039 GETMET R7 R7 K39 0x5C240C00, // 003A MOVE R9 R6 0x7C1C0400, // 003B CALL R7 2 - 0x8C1C013F, // 003C GETMET R7 R0 K63 - 0x8824053E, // 003D GETMBR R9 R2 K62 + 0x8C1C013D, // 003C GETMET R7 R0 K61 + 0x8824053C, // 003D GETMBR R9 R2 K60 0x7C1C0400, // 003E CALL R7 2 0x80000000, // 003F RET 0 }) @@ -668,23 +663,23 @@ be_local_closure(class_Matter_IM_process_read_request_pull, /* name */ &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0732, // 0001 GETMET R3 R3 K50 + 0x8C0C0730, // 0001 GETMET R3 R3 K48 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x8C10013B, // 0006 GETMET R4 R0 K59 + 0x8C100139, // 0006 GETMET R4 R0 K57 0x5C180600, // 0007 MOVE R6 R3 0x5C1C0200, // 0008 MOVE R7 R1 0x7C100600, // 0009 CALL R4 3 - 0x8C140140, // 000A GETMET R5 R0 K64 + 0x8C14013E, // 000A GETMET R5 R0 K62 0x5C1C0600, // 000B MOVE R7 R3 0x5C200200, // 000C MOVE R8 R1 0x7C140600, // 000D CALL R5 3 0x88180126, // 000E GETMBR R6 R0 K38 0x8C180D27, // 000F GETMET R6 R6 K39 0xB8220000, // 0010 GETNGBL R8 K0 - 0x8C201141, // 0011 GETMET R8 R8 K65 + 0x8C20113F, // 0011 GETMET R8 R8 K63 0x5C280200, // 0012 MOVE R10 R1 0x5C2C0800, // 0013 MOVE R11 R4 0x5C300A00, // 0014 MOVE R12 R5 @@ -715,25 +710,25 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na be_str_weak(process_read_or_subscribe_request_pull), &be_const_str_solidified, ( &(const binstruction[115]) { /* code */ - 0x880C0334, // 0000 GETMBR R3 R1 K52 + 0x880C0332, // 0000 GETMBR R3 R1 K50 0x4C100000, // 0001 LDNIL R4 0x200C0604, // 0002 NE R3 R3 R4 0x780E006C, // 0003 JMPF R3 #0071 0x4C0C0000, // 0004 LDNIL R3 - 0x88100334, // 0005 GETMBR R4 R1 K52 + 0x88100332, // 0005 GETMBR R4 R1 K50 0x78120003, // 0006 JMPF R4 #000B 0x6010000C, // 0007 GETGBL R4 G12 - 0x88140334, // 0008 GETMBR R5 R1 K52 + 0x88140332, // 0008 GETMBR R5 R1 K50 0x7C100200, // 0009 CALL R4 1 0x70020000, // 000A JMP #000C - 0x58100042, // 000B LDCONST R4 K66 - 0x2414092D, // 000C GT R5 R4 K45 + 0x58100040, // 000B LDCONST R4 K64 + 0x2414092A, // 000C GT R5 R4 K42 0x78160002, // 000D JMPF R5 #0011 0x60140012, // 000E GETGBL R5 G18 0x7C140000, // 000F CALL R5 0 0x5C0C0A00, // 0010 MOVE R3 R5 0x60140010, // 0011 GETGBL R5 G16 - 0x88180334, // 0012 GETMBR R6 R1 K52 + 0x88180332, // 0012 GETMBR R6 R1 K50 0x7C140200, // 0013 CALL R5 1 0xA8020057, // 0014 EXBLK 0 #006D 0x5C180A00, // 0015 MOVE R6 R5 @@ -746,9 +741,9 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x88280D12, // 001C GETMBR R10 R6 K18 0x882C0D0D, // 001D GETMBR R11 R6 K13 0x88300D0E, // 001E GETMBR R12 R6 K14 - 0x88340333, // 001F GETMBR R13 R1 K51 + 0x88340331, // 001F GETMBR R13 R1 K49 0x7C200A00, // 0020 CALL R8 5 - 0x2420092D, // 0021 GT R8 R4 K45 + 0x2420092A, // 0021 GT R8 R4 K42 0x78220003, // 0022 JMPF R8 #0027 0x8C200727, // 0023 GETMET R8 R3 K39 0x5C280E00, // 0024 MOVE R10 R7 @@ -781,8 +776,8 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x90221A09, // 003F SETMBR R8 K13 R9 0x88240D0E, // 0040 GETMBR R9 R6 K14 0x90221C09, // 0041 SETMBR R8 K14 R9 - 0x88240333, // 0042 GETMBR R9 R1 K51 - 0x90226609, // 0043 SETMBR R8 K51 R9 + 0x88240331, // 0042 GETMBR R9 R1 K49 + 0x90226209, // 0043 SETMBR R8 K49 R9 0x60240008, // 0044 GETGBL R9 G8 0x5C281000, // 0045 MOVE R10 R8 0x7C240200, // 0046 CALL R9 1 @@ -801,9 +796,9 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x7C280600, // 0053 CALL R10 3 0xB82E2E00, // 0054 GETNGBL R11 K23 0x60300018, // 0055 GETGBL R12 G24 - 0x58340043, // 0056 LDCONST R13 K67 + 0x58340041, // 0056 LDCONST R13 K65 0x88380523, // 0057 GETMBR R14 R2 K35 - 0x88381D38, // 0058 GETMBR R14 R14 K56 + 0x88381D36, // 0058 GETMBR R14 R14 K54 0x782A0002, // 0059 JMPF R10 #005D 0x003E320A, // 005A ADD R15 K25 R10 0x003C1F1A, // 005B ADD R15 R15 K26 @@ -816,9 +811,9 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* na 0x70020008, // 0062 JMP #006C 0xB82A2E00, // 0063 GETNGBL R10 K23 0x602C0018, // 0064 GETGBL R11 G24 - 0x58300043, // 0065 LDCONST R12 K67 + 0x58300041, // 0065 LDCONST R12 K65 0x88340523, // 0066 GETMBR R13 R2 K35 - 0x88341B38, // 0067 GETMBR R13 R13 K56 + 0x88341B36, // 0067 GETMBR R13 R13 K54 0x5C381200, // 0068 MOVE R14 R9 0x7C2C0600, // 0069 CALL R11 3 0x58300015, // 006A LDCONST R12 K21 @@ -854,21 +849,21 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */ &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0744, // 0001 GETMET R3 R3 K68 + 0x8C0C0742, // 0001 GETMET R3 R3 K66 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0xB8122E00, // 0006 GETNGBL R4 K23 0x60140018, // 0007 GETGBL R5 G24 - 0x58180045, // 0008 LDCONST R6 K69 + 0x58180043, // 0008 LDCONST R6 K67 0x881C0323, // 0009 GETMBR R7 R1 K35 - 0x881C0F38, // 000A GETMBR R7 R7 K56 - 0x88200746, // 000B GETMBR R8 R3 K70 + 0x881C0F36, // 000A GETMBR R7 R7 K54 + 0x88200744, // 000B GETMBR R8 R3 K68 0x7C140600, // 000C CALL R5 3 0x58180015, // 000D LDCONST R6 K21 0x7C100400, // 000E CALL R4 2 - 0x8C100147, // 000F GETMET R4 R0 K71 + 0x8C100145, // 000F GETMET R4 R0 K69 0x5C180200, // 0010 MOVE R6 R1 0xB81E0000, // 0011 GETNGBL R7 K0 0x881C0F24, // 0012 GETMBR R7 R7 K36 @@ -898,8 +893,8 @@ be_local_closure(class_Matter_IM_every_50ms, /* name */ be_str_weak(every_50ms), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x88040148, // 0000 GETMBR R1 R0 K72 - 0x8C040349, // 0001 GETMET R1 R1 K73 + 0x88040146, // 0000 GETMBR R1 R0 K70 + 0x8C040347, // 0001 GETMET R1 R1 K71 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -930,53 +925,53 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x7C0C0200, // 0002 CALL R3 1 0x900E3E01, // 0003 SETMBR R3 K31 R1 0xB8120000, // 0004 GETNGBL R4 K0 - 0x8C10094A, // 0005 GETMET R4 R4 K74 + 0x8C100948, // 0005 GETMET R4 R4 K72 0x7C100200, // 0006 CALL R4 1 0x8C100902, // 0007 GETMET R4 R4 K2 0x5C180400, // 0008 MOVE R6 R2 0x7C100400, // 0009 CALL R4 2 - 0x8814094B, // 000A GETMBR R5 R4 K75 + 0x88140949, // 000A GETMBR R5 R4 K73 0x4C180000, // 000B LDNIL R6 0x20140A06, // 000C NE R5 R5 R6 0x781600CE, // 000D JMPF R5 #00DD 0xB8160000, // 000E GETNGBL R5 K0 - 0x8C140B4C, // 000F GETMET R5 R5 K76 + 0x8C140B4A, // 000F GETMET R5 R5 K74 0x7C140200, // 0010 CALL R5 1 0x50180000, // 0011 LDBOOL R6 0 0 0x90160806, // 0012 SETMBR R5 K4 R6 0x60180012, // 0013 GETGBL R6 G18 0x7C180000, // 0014 CALL R6 0 - 0x90169A06, // 0015 SETMBR R5 K77 R6 + 0x90169606, // 0015 SETMBR R5 K75 R6 0x60180010, // 0016 GETGBL R6 G16 - 0x881C094B, // 0017 GETMBR R7 R4 K75 + 0x881C0949, // 0017 GETMBR R7 R4 K73 0x7C180200, // 0018 CALL R6 1 0xA80200AD, // 0019 EXBLK 0 #00C8 0x5C1C0C00, // 001A MOVE R7 R6 0x7C1C0000, // 001B CALL R7 0 - 0x88200F4E, // 001C GETMBR R8 R7 K78 + 0x88200F4C, // 001C GETMBR R8 R7 K76 0x88201112, // 001D GETMBR R8 R8 K18 0x900E2408, // 001E SETMBR R3 K18 R8 - 0x88200F4E, // 001F GETMBR R8 R7 K78 + 0x88200F4C, // 001F GETMBR R8 R7 K76 0x8820110D, // 0020 GETMBR R8 R8 K13 0x900E1A08, // 0021 SETMBR R3 K13 R8 - 0x88200F4E, // 0022 GETMBR R8 R7 K78 - 0x8820114F, // 0023 GETMBR R8 R8 K79 - 0x900E9E08, // 0024 SETMBR R3 K79 R8 + 0x88200F4C, // 0022 GETMBR R8 R7 K76 + 0x8820114D, // 0023 GETMBR R8 R8 K77 + 0x900E9A08, // 0024 SETMBR R3 K77 R8 0xB8220000, // 0025 GETNGBL R8 K0 - 0x88201150, // 0026 GETMBR R8 R8 K80 + 0x8820114E, // 0026 GETMBR R8 R8 K78 0x900E1E08, // 0027 SETMBR R3 K15 R8 0xB8220000, // 0028 GETNGBL R8 K0 - 0x8C201151, // 0029 GETMET R8 R8 K81 + 0x8C20114F, // 0029 GETMET R8 R8 K79 0x8828070D, // 002A GETMBR R10 R3 K13 - 0x882C074F, // 002B GETMBR R11 R3 K79 + 0x882C074D, // 002B GETMBR R11 R3 K77 0x7C200600, // 002C CALL R8 3 0x60240008, // 002D GETGBL R9 G8 0x5C280600, // 002E MOVE R10 R3 0x7C240200, // 002F CALL R9 1 0x88280109, // 0030 GETMBR R10 R0 K9 - 0x8C281552, // 0031 GETMET R10 R10 K82 + 0x8C281550, // 0031 GETMET R10 R10 K80 0x88300323, // 0032 GETMBR R12 R1 K35 - 0x88340F53, // 0033 GETMBR R13 R7 K83 + 0x88340F51, // 0033 GETMBR R13 R7 K81 0x5C380600, // 0034 MOVE R14 R3 0x7C280800, // 0035 CALL R10 4 0x882C0717, // 0036 GETMBR R11 R3 K23 @@ -986,15 +981,15 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x602C0008, // 003A GETGBL R11 G8 0x88300717, // 003B GETMBR R12 R3 K23 0x7C2C0200, // 003C CALL R11 1 - 0x002EA80B, // 003D ADD R11 K84 R11 - 0x002C1755, // 003E ADD R11 R11 K85 + 0x002EA40B, // 003D ADD R11 K82 R11 + 0x002C1753, // 003E ADD R11 R11 K83 0x70020000, // 003F JMP #0041 0x582C001B, // 0040 LDCONST R11 K27 0xB8322E00, // 0041 GETNGBL R12 K23 0x60340018, // 0042 GETGBL R13 G24 - 0x58380056, // 0043 LDCONST R14 K86 + 0x58380054, // 0043 LDCONST R14 K84 0x883C0323, // 0044 GETMBR R15 R1 K35 - 0x883C1F38, // 0045 GETMBR R15 R15 K56 + 0x883C1F36, // 0045 GETMBR R15 R15 K54 0x5C401200, // 0046 MOVE R16 R9 0x78220001, // 0047 JMPF R8 #004A 0x5C441000, // 0048 MOVE R17 R8 @@ -1020,12 +1015,12 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0xB8360000, // 005C GETNGBL R13 K0 0x88341B24, // 005D GETMBR R13 R13 K36 0x900E1E0D, // 005E SETMBR R3 K15 R13 - 0x8C340157, // 005F GETMET R13 R0 K87 + 0x8C340155, // 005F GETMET R13 R0 K85 0x5C3C1800, // 0060 MOVE R15 R12 0x5C400600, // 0061 MOVE R16 R3 0x4C440000, // 0062 LDNIL R17 0x7C340800, // 0063 CALL R13 4 - 0x88340B4D, // 0064 GETMBR R13 R5 K77 + 0x88340B4B, // 0064 GETMBR R13 R5 K75 0x8C341B27, // 0065 GETMET R13 R13 K39 0x5C3C1800, // 0066 MOVE R15 R12 0x7C340400, // 0067 CALL R13 2 @@ -1036,10 +1031,10 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360008, // 006C JMPF R13 #0076 0xB8362E00, // 006D GETNGBL R13 K23 0x60380018, // 006E GETGBL R14 G24 - 0x583C0058, // 006F LDCONST R15 K88 + 0x583C0056, // 006F LDCONST R15 K86 0x88400323, // 0070 GETMBR R16 R1 K35 - 0x88402138, // 0071 GETMBR R16 R16 K56 - 0x88440359, // 0072 GETMBR R17 R1 K89 + 0x88402136, // 0071 GETMBR R16 R16 K54 + 0x88440357, // 0072 GETMBR R17 R1 K87 0x7C380600, // 0073 CALL R14 3 0x583C0015, // 0074 LDCONST R15 K21 0x7C340400, // 0075 CALL R13 2 @@ -1047,19 +1042,19 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x4C340000, // 0077 LDNIL R13 0x2034140D, // 0078 NE R13 R10 R13 0x78360021, // 0079 JMPF R13 #009C - 0x8C340157, // 007A GETMET R13 R0 K87 + 0x8C340155, // 007A GETMET R13 R0 K85 0x5C3C1800, // 007B MOVE R15 R12 0x5C400600, // 007C MOVE R16 R3 0x5C441400, // 007D MOVE R17 R10 0x7C340800, // 007E CALL R13 4 - 0x88340B4D, // 007F GETMBR R13 R5 K77 + 0x88340B4B, // 007F GETMBR R13 R5 K75 0x8C341B27, // 0080 GETMET R13 R13 K39 0x5C3C1800, // 0081 MOVE R15 R12 0x7C340400, // 0082 CALL R13 2 0xB8360000, // 0083 GETNGBL R13 K0 - 0x8C341B51, // 0084 GETMET R13 R13 K81 + 0x8C341B4F, // 0084 GETMET R13 R13 K79 0x883C070D, // 0085 GETMBR R15 R3 K13 - 0x8840074F, // 0086 GETMBR R16 R3 K79 + 0x8840074D, // 0086 GETMBR R16 R3 K77 0x7C340600, // 0087 CALL R13 3 0x5C201A00, // 0088 MOVE R8 R13 0x5C341000, // 0089 MOVE R13 R8 @@ -1072,9 +1067,9 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360009, // 0090 JMPF R13 #009B 0xB8362E00, // 0091 GETNGBL R13 K23 0x60380018, // 0092 GETGBL R14 G24 - 0x583C005A, // 0093 LDCONST R15 K90 + 0x583C0058, // 0093 LDCONST R15 K88 0x88400323, // 0094 GETMBR R16 R1 K35 - 0x88402138, // 0095 GETMBR R16 R16 K56 + 0x88402136, // 0095 GETMBR R16 R16 K54 0x5C440600, // 0096 MOVE R17 R3 0x5C481000, // 0097 MOVE R18 R8 0x7C380800, // 0098 CALL R14 4 @@ -1085,12 +1080,12 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x4C380000, // 009D LDNIL R14 0x20341A0E, // 009E NE R13 R13 R14 0x78360018, // 009F JMPF R13 #00B9 - 0x8C340157, // 00A0 GETMET R13 R0 K87 + 0x8C340155, // 00A0 GETMET R13 R0 K85 0x5C3C1800, // 00A1 MOVE R15 R12 0x5C400600, // 00A2 MOVE R16 R3 0x4C440000, // 00A3 LDNIL R17 0x7C340800, // 00A4 CALL R13 4 - 0x88340B4D, // 00A5 GETMBR R13 R5 K77 + 0x88340B4B, // 00A5 GETMBR R13 R5 K75 0x8C341B27, // 00A6 GETMET R13 R13 K39 0x5C3C1800, // 00A7 MOVE R15 R12 0x7C340400, // 00A8 CALL R13 2 @@ -1101,11 +1096,11 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360009, // 00AD JMPF R13 #00B8 0xB8362E00, // 00AE GETNGBL R13 K23 0x60380018, // 00AF GETGBL R14 G24 - 0x583C005B, // 00B0 LDCONST R15 K91 + 0x583C0059, // 00B0 LDCONST R15 K89 0x88400323, // 00B1 GETMBR R16 R1 K35 - 0x88402138, // 00B2 GETMBR R16 R16 K56 + 0x88402136, // 00B2 GETMBR R16 R16 K54 0x8844070F, // 00B3 GETMBR R17 R3 K15 - 0x88480359, // 00B4 GETMBR R18 R1 K89 + 0x88480357, // 00B4 GETMBR R18 R1 K87 0x7C380800, // 00B5 CALL R14 4 0x583C0015, // 00B6 LDCONST R15 K21 0x7C340400, // 00B7 CALL R13 2 @@ -1117,10 +1112,10 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0x78360008, // 00BD JMPF R13 #00C7 0xB8362E00, // 00BE GETNGBL R13 K23 0x60380018, // 00BF GETGBL R14 G24 - 0x583C005C, // 00C0 LDCONST R15 K92 + 0x583C005A, // 00C0 LDCONST R15 K90 0x88400323, // 00C1 GETMBR R16 R1 K35 - 0x88402138, // 00C2 GETMBR R16 R16 K56 - 0x88440359, // 00C3 GETMBR R17 R1 K89 + 0x88402136, // 00C2 GETMBR R16 R16 K54 + 0x88440357, // 00C3 GETMBR R17 R1 K87 0x7C380600, // 00C4 CALL R14 3 0x583C0015, // 00C5 LDCONST R15 K21 0x7C340400, // 00C6 CALL R13 2 @@ -1129,14 +1124,14 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */ 0xAC180200, // 00C9 CATCH R6 1 0 0xB0080000, // 00CA RAISE 2 R0 R0 0x6018000C, // 00CB GETGBL R6 G12 - 0x881C0B4D, // 00CC GETMBR R7 R5 K77 + 0x881C0B4B, // 00CC GETMBR R7 R5 K75 0x7C180200, // 00CD CALL R6 1 - 0x24180D5D, // 00CE GT R6 R6 K93 + 0x24180D40, // 00CE GT R6 R6 K64 0x781A0008, // 00CF JMPF R6 #00D9 0x88180126, // 00D0 GETMBR R6 R0 K38 0x8C180D27, // 00D1 GETMET R6 R6 K39 0xB8220000, // 00D2 GETNGBL R8 K0 - 0x8C20115E, // 00D3 GETMET R8 R8 K94 + 0x8C20115B, // 00D3 GETMET R8 R8 K91 0x5C280200, // 00D4 MOVE R10 R1 0x5C2C0A00, // 00D5 MOVE R11 R5 0x7C200600, // 00D6 CALL R8 3 @@ -1170,7 +1165,7 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, be_str_weak(process_read_or_subscribe_request_event_pull), &be_const_str_solidified, ( &(const binstruction[140]) { /* code */ - 0x880C035F, // 0000 GETMBR R3 R1 K95 + 0x880C035C, // 0000 GETMBR R3 R1 K92 0x4C100000, // 0001 LDNIL R4 0x200C0604, // 0002 NE R3 R3 R4 0x780E0085, // 0003 JMPF R3 #008A @@ -1178,45 +1173,45 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0x4C100000, // 0005 LDNIL R4 0x20100404, // 0006 NE R4 R2 R4 0x78120002, // 0007 JMPF R4 #000B - 0x8C100560, // 0008 GETMET R4 R2 K96 + 0x8C10055D, // 0008 GETMET R4 R2 K93 0x7C100200, // 0009 CALL R4 1 0x70020000, // 000A JMP #000C 0x4C100000, // 000B LDNIL R4 - 0x8814035F, // 000C GETMBR R5 R1 K95 + 0x8814035C, // 000C GETMBR R5 R1 K92 0x78160003, // 000D JMPF R5 #0012 0x6014000C, // 000E GETGBL R5 G12 - 0x8818035F, // 000F GETMBR R6 R1 K95 + 0x8818035C, // 000F GETMBR R6 R1 K92 0x7C140200, // 0010 CALL R5 1 0x70020000, // 0011 JMP #0013 - 0x58140042, // 0012 LDCONST R5 K66 - 0x24180B61, // 0013 GT R6 R5 K97 + 0x58140040, // 0012 LDCONST R5 K64 + 0x24180B2A, // 0013 GT R6 R5 K42 0x781A0002, // 0014 JMPF R6 #0018 0x60180012, // 0015 GETGBL R6 G18 0x7C180000, // 0016 CALL R6 0 0x5C0C0C00, // 0017 MOVE R3 R6 - 0x8C180162, // 0018 GETMET R6 R0 K98 - 0x88200363, // 0019 GETMBR R8 R1 K99 + 0x8C18015E, // 0018 GETMET R6 R0 K94 + 0x8820035F, // 0019 GETMBR R8 R1 K95 0x5C240800, // 001A MOVE R9 R4 0x7C180600, // 001B CALL R6 3 - 0x881C035F, // 001C GETMBR R7 R1 K95 + 0x881C035C, // 001C GETMBR R7 R1 K92 0x781E006A, // 001D JMPF R7 #0089 0x601C0010, // 001E GETGBL R7 G16 - 0x8820035F, // 001F GETMBR R8 R1 K95 + 0x8820035C, // 001F GETMBR R8 R1 K92 0x7C1C0200, // 0020 CALL R7 1 0xA8020063, // 0021 EXBLK 0 #0086 0x5C200E00, // 0022 MOVE R8 R7 0x7C200000, // 0023 CALL R8 0 0xB8260000, // 0024 GETNGBL R9 K0 - 0x8C241364, // 0025 GETMET R9 R9 K100 + 0x8C241360, // 0025 GETMET R9 R9 K96 0x882C0109, // 0026 GETMBR R11 R0 K9 0x7C240400, // 0027 CALL R9 2 0x8C28131C, // 0028 GETMET R10 R9 K28 0x88301112, // 0029 GETMBR R12 R8 K18 0x8834110D, // 002A GETMBR R13 R8 K13 - 0x88381165, // 002B GETMBR R14 R8 K101 + 0x88381161, // 002B GETMBR R14 R8 K97 0x5C3C0C00, // 002C MOVE R15 R6 0x7C280A00, // 002D CALL R10 5 - 0x24280B61, // 002E GT R10 R5 K97 + 0x24280B2A, // 002E GT R10 R5 K42 0x782A0003, // 002F JMPF R10 #0034 0x8C280727, // 0030 GETMET R10 R3 K39 0x5C301200, // 0031 MOVE R12 R9 @@ -1233,21 +1228,21 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0x4C300000, // 003C LDNIL R12 0x202C160C, // 003D NE R11 R11 R12 0x782E0011, // 003E JMPF R11 #0051 - 0x882C1165, // 003F GETMBR R11 R8 K101 + 0x882C1161, // 003F GETMBR R11 R8 K97 0x4C300000, // 0040 LDNIL R12 0x202C160C, // 0041 NE R11 R11 R12 0x782E000D, // 0042 JMPF R11 #0051 0xB82E0000, // 0043 GETNGBL R11 K0 - 0x8C2C1766, // 0044 GETMET R11 R11 K102 + 0x8C2C1762, // 0044 GETMET R11 R11 K98 0x8834110D, // 0045 GETMBR R13 R8 K13 - 0x88381165, // 0046 GETMBR R14 R8 K101 + 0x88381161, // 0046 GETMBR R14 R8 K97 0x7C2C0600, // 0047 CALL R11 3 0x5C281600, // 0048 MOVE R10 R11 0x4C2C0000, // 0049 LDNIL R11 0x202C140B, // 004A NE R11 R10 R11 0x782E0002, // 004B JMPF R11 #004F - 0x002EA80A, // 004C ADD R11 K84 R10 - 0x002C1755, // 004D ADD R11 R11 K85 + 0x002EA40A, // 004C ADD R11 K82 R10 + 0x002C1753, // 004D ADD R11 R11 K83 0x70020000, // 004E JMP #0050 0x582C001B, // 004F LDCONST R11 K27 0x5C281600, // 0050 MOVE R10 R11 @@ -1256,45 +1251,45 @@ be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, 0x202C160C, // 0053 NE R11 R11 R12 0x782E0004, // 0054 JMPF R11 #005A 0x602C0018, // 0055 GETGBL R11 G24 - 0x58300067, // 0056 LDCONST R12 K103 + 0x58300063, // 0056 LDCONST R12 K99 0x88341112, // 0057 GETMBR R13 R8 K18 0x7C2C0400, // 0058 CALL R11 2 0x70020000, // 0059 JMP #005B - 0x582C0068, // 005A LDCONST R11 K104 + 0x582C0064, // 005A LDCONST R11 K100 0x8830110D, // 005B GETMBR R12 R8 K13 0x4C340000, // 005C LDNIL R13 0x2030180D, // 005D NE R12 R12 R13 0x78320004, // 005E JMPF R12 #0064 0x60300018, // 005F GETGBL R12 G24 - 0x58340069, // 0060 LDCONST R13 K105 + 0x58340065, // 0060 LDCONST R13 K101 0x8838110D, // 0061 GETMBR R14 R8 K13 0x7C300400, // 0062 CALL R12 2 0x70020000, // 0063 JMP #0065 - 0x5830006A, // 0064 LDCONST R12 K106 - 0x88341165, // 0065 GETMBR R13 R8 K101 + 0x58300066, // 0064 LDCONST R12 K102 + 0x88341161, // 0065 GETMBR R13 R8 K97 0x4C380000, // 0066 LDNIL R14 0x20341A0E, // 0067 NE R13 R13 R14 0x78360004, // 0068 JMPF R13 #006E 0x60340018, // 0069 GETGBL R13 G24 - 0x58380067, // 006A LDCONST R14 K103 - 0x883C1165, // 006B GETMBR R15 R8 K101 + 0x58380063, // 006A LDCONST R14 K99 + 0x883C1161, // 006B GETMBR R15 R8 K97 0x7C340400, // 006C CALL R13 2 0x70020000, // 006D JMP #006F - 0x58340068, // 006E LDCONST R13 K104 + 0x58340064, // 006E LDCONST R13 K100 0x4C380000, // 006F LDNIL R14 0x20380C0E, // 0070 NE R14 R6 R14 0x783A0004, // 0071 JMPF R14 #0077 0x60380018, // 0072 GETGBL R14 G24 - 0x583C006B, // 0073 LDCONST R15 K107 + 0x583C0067, // 0073 LDCONST R15 K103 0x5C400C00, // 0074 MOVE R16 R6 0x7C380400, // 0075 CALL R14 2 0x70020000, // 0076 JMP #0078 0x5838001B, // 0077 LDCONST R14 K27 0xB83E2E00, // 0078 GETNGBL R15 K23 0x60400018, // 0079 GETGBL R16 G24 - 0x5844006C, // 007A LDCONST R17 K108 + 0x58440068, // 007A LDCONST R17 K104 0x88480523, // 007B GETMBR R18 R2 K35 - 0x88482538, // 007C GETMBR R18 R18 K56 + 0x88482536, // 007C GETMBR R18 R18 K54 0x5C4C1600, // 007D MOVE R19 R11 0x5C501800, // 007E MOVE R20 R12 0x5C541A00, // 007F MOVE R21 R13 @@ -1333,7 +1328,7 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ be_str_weak(send_enqueued), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x5808006D, // 0000 LDCONST R2 K109 + 0x58080040, // 0000 LDCONST R2 K64 0x600C000C, // 0001 GETGBL R3 G12 0x88100126, // 0002 GETMBR R4 R0 K38 0x7C0C0200, // 0003 CALL R3 1 @@ -1341,21 +1336,21 @@ be_local_closure(class_Matter_IM_send_enqueued, /* name */ 0x780E0011, // 0005 JMPF R3 #0018 0x880C0126, // 0006 GETMBR R3 R0 K38 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8810076E, // 0008 GETMBR R4 R3 K110 + 0x88100769, // 0008 GETMBR R4 R3 K105 0x74120004, // 0009 JMPT R4 #000F - 0x8810076F, // 000A GETMBR R4 R3 K111 + 0x8810076A, // 000A GETMBR R4 R3 K106 0x78120002, // 000B JMPF R4 #000F - 0x8C100770, // 000C GETMET R4 R3 K112 + 0x8C10076B, // 000C GETMET R4 R3 K107 0x5C180200, // 000D MOVE R6 R1 0x7C100400, // 000E CALL R4 2 - 0x8810076E, // 000F GETMBR R4 R3 K110 + 0x88100769, // 000F GETMBR R4 R3 K105 0x78120004, // 0010 JMPF R4 #0016 - 0x8C100171, // 0011 GETMET R4 R0 K113 - 0x88180772, // 0012 GETMBR R6 R3 K114 - 0x88180D59, // 0013 GETMBR R6 R6 K89 + 0x8C10016C, // 0011 GETMET R4 R0 K108 + 0x8818076D, // 0012 GETMBR R6 R3 K109 + 0x88180D57, // 0013 GETMBR R6 R6 K87 0x7C100400, // 0014 CALL R4 2 0x70020000, // 0015 JMP #0017 - 0x0008052D, // 0016 ADD R2 R2 K45 + 0x0008052A, // 0016 ADD R2 R2 K42 0x7001FFE8, // 0017 JMP #0001 0x80000000, // 0018 RET 0 }) @@ -1382,19 +1377,19 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ &be_const_str_solidified, ( &(const binstruction[96]) { /* code */ 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0773, // 0001 GETMET R3 R3 K115 + 0x8C0C076E, // 0001 GETMET R3 R3 K110 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0702, // 0003 GETMET R3 R3 K2 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 - 0x88100774, // 0006 GETMBR R4 R3 K116 + 0x8810076F, // 0006 GETMBR R4 R3 K111 0x74120003, // 0007 JMPT R4 #000C - 0x88100148, // 0008 GETMBR R4 R0 K72 - 0x8C100975, // 0009 GETMET R4 R4 K117 + 0x88100146, // 0008 GETMBR R4 R0 K70 + 0x8C100970, // 0009 GETMET R4 R4 K112 0x88180323, // 000A GETMBR R6 R1 K35 0x7C100400, // 000B CALL R4 2 - 0x88100148, // 000C GETMBR R4 R0 K72 - 0x8C100976, // 000D GETMET R4 R4 K118 + 0x88100146, // 000C GETMBR R4 R0 K70 + 0x8C100971, // 000D GETMET R4 R4 K113 0x88180323, // 000E GETMBR R6 R1 K35 0x5C1C0600, // 000F MOVE R7 R3 0x7C100600, // 0010 CALL R4 3 @@ -1403,7 +1398,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0x581C0015, // 0013 LDCONST R7 K21 0x7C140400, // 0014 CALL R5 2 0x78160032, // 0015 JMPF R5 #0049 - 0x88140734, // 0016 GETMBR R5 R3 K52 + 0x88140732, // 0016 GETMBR R5 R3 K50 0x4C180000, // 0017 LDNIL R6 0x20140A06, // 0018 NE R5 R5 R6 0x7816002E, // 0019 JMPF R5 #0049 @@ -1414,7 +1409,7 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0x7C180200, // 001E CALL R6 1 0x901A3E01, // 001F SETMBR R6 K31 R1 0x601C0010, // 0020 GETGBL R7 G16 - 0x88200734, // 0021 GETMBR R8 R3 K52 + 0x88200732, // 0021 GETMBR R8 R3 K50 0x7C1C0200, // 0022 CALL R7 1 0xA802000D, // 0023 EXBLK 0 #0032 0x5C200E00, // 0024 MOVE R8 R7 @@ -1436,39 +1431,39 @@ be_local_closure(class_Matter_IM_subscribe_request, /* name */ 0xB0080000, // 0034 RAISE 2 R0 R0 0xB81E2E00, // 0035 GETNGBL R7 K23 0x60200018, // 0036 GETGBL R8 G24 - 0x58240077, // 0037 LDCONST R9 K119 + 0x58240072, // 0037 LDCONST R9 K114 0x88280323, // 0038 GETMBR R10 R1 K35 - 0x88281538, // 0039 GETMBR R10 R10 K56 - 0x8C2C0B78, // 003A GETMET R11 R5 K120 - 0x58340079, // 003B LDCONST R13 K121 + 0x88281536, // 0039 GETMBR R10 R10 K54 + 0x8C2C0B73, // 003A GETMET R11 R5 K115 + 0x58340074, // 003B LDCONST R13 K116 0x7C2C0400, // 003C CALL R11 2 - 0x8830097A, // 003D GETMBR R12 R4 K122 - 0x8834097B, // 003E GETMBR R13 R4 K123 - 0x88380774, // 003F GETMBR R14 R3 K116 + 0x88300975, // 003D GETMBR R12 R4 K117 + 0x88340976, // 003E GETMBR R13 R4 K118 + 0x8838076F, // 003F GETMBR R14 R3 K111 0x783A0001, // 0040 JMPF R14 #0043 - 0x58380061, // 0041 LDCONST R14 K97 + 0x5838002A, // 0041 LDCONST R14 K42 0x70020000, // 0042 JMP #0044 - 0x58380042, // 0043 LDCONST R14 K66 - 0x883C0939, // 0044 GETMBR R15 R4 K57 - 0x88400733, // 0045 GETMBR R16 R3 K51 + 0x58380040, // 0043 LDCONST R14 K64 + 0x883C0937, // 0044 GETMBR R15 R4 K55 + 0x88400731, // 0045 GETMBR R16 R3 K49 0x7C201000, // 0046 CALL R8 8 0x58240015, // 0047 LDCONST R9 K21 0x7C1C0400, // 0048 CALL R7 2 - 0x8C14013B, // 0049 GETMET R5 R0 K59 + 0x8C140139, // 0049 GETMET R5 R0 K57 0x5C1C0600, // 004A MOVE R7 R3 0x5C200200, // 004B MOVE R8 R1 0x7C140600, // 004C CALL R5 3 - 0x8C180140, // 004D GETMET R6 R0 K64 + 0x8C18013E, // 004D GETMET R6 R0 K62 0x5C200600, // 004E MOVE R8 R3 0x5C240200, // 004F MOVE R9 R1 0x7C180600, // 0050 CALL R6 3 - 0x8C1C097C, // 0051 GETMET R7 R4 K124 + 0x8C1C0977, // 0051 GETMET R7 R4 K119 0x5C240C00, // 0052 MOVE R9 R6 0x7C1C0400, // 0053 CALL R7 2 0x881C0126, // 0054 GETMBR R7 R0 K38 0x8C1C0F27, // 0055 GETMET R7 R7 K39 0xB8260000, // 0056 GETNGBL R9 K0 - 0x8C24137D, // 0057 GETMET R9 R9 K125 + 0x8C241378, // 0057 GETMET R9 R9 K120 0x5C2C0200, // 0058 MOVE R11 R1 0x5C300A00, // 0059 MOVE R12 R5 0x5C340C00, // 005A MOVE R13 R6 @@ -1505,8 +1500,8 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */ 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 0x88080323, // 0004 GETMBR R2 R1 K35 - 0x8808053E, // 0005 GETMBR R2 R2 K62 - 0x8C08057E, // 0006 GETMET R2 R2 K126 + 0x8808053C, // 0005 GETMBR R2 R2 K60 + 0x8C080579, // 0006 GETMET R2 R2 K121 0x5C100200, // 0007 MOVE R4 R1 0x50140000, // 0008 LDBOOL R5 0 0 0x7C080600, // 0009 CALL R2 3 @@ -1534,7 +1529,7 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ be_str_weak(expire_sendqueue), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x5804006D, // 0000 LDCONST R1 K109 + 0x58040040, // 0000 LDCONST R1 K64 0x6008000C, // 0001 GETGBL R2 G12 0x880C0126, // 0002 GETMBR R3 R0 K38 0x7C080200, // 0003 CALL R2 1 @@ -1543,14 +1538,14 @@ be_local_closure(class_Matter_IM_expire_sendqueue, /* name */ 0x88080126, // 0006 GETMBR R2 R0 K38 0x94080401, // 0007 GETIDX R2 R2 R1 0xB80E2600, // 0008 GETNGBL R3 K19 - 0x8C0C077F, // 0009 GETMET R3 R3 K127 - 0x88140580, // 000A GETMBR R5 R2 K128 + 0x8C0C077A, // 0009 GETMET R3 R3 K122 + 0x8814057B, // 000A GETMBR R5 R2 K123 0x7C0C0400, // 000B CALL R3 2 0x780E0006, // 000C JMPF R3 #0014 - 0x8C0C0581, // 000D GETMET R3 R2 K129 + 0x8C0C057C, // 000D GETMET R3 R2 K124 0x7C0C0200, // 000E CALL R3 1 0x880C0126, // 000F GETMBR R3 R0 K38 - 0x8C0C0782, // 0010 GETMET R3 R3 K130 + 0x8C0C077D, // 0010 GETMET R3 R3 K125 0x5C140200, // 0011 MOVE R5 R1 0x7C0C0400, // 0012 CALL R3 2 0x70020000, // 0013 JMP #0015 @@ -1581,17 +1576,17 @@ be_local_closure(class_Matter_IM_process_incoming_ack, /* name */ be_str_weak(process_incoming_ack), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x8C080183, // 0000 GETMET R2 R0 K131 - 0x88100359, // 0001 GETMBR R4 R1 K89 + 0x8C08017E, // 0000 GETMET R2 R0 K126 + 0x88100357, // 0001 GETMBR R4 R1 K87 0x7C080400, // 0002 CALL R2 2 0x780A0008, // 0003 JMPF R2 #000D - 0x8C0C0584, // 0004 GETMET R3 R2 K132 + 0x8C0C057F, // 0004 GETMET R3 R2 K127 0x5C140200, // 0005 MOVE R5 R1 0x7C0C0400, // 0006 CALL R3 2 - 0x8810056E, // 0007 GETMBR R4 R2 K110 + 0x88100569, // 0007 GETMBR R4 R2 K105 0x78120002, // 0008 JMPF R4 #000C - 0x8C100171, // 0009 GETMET R4 R0 K113 - 0x88180359, // 000A GETMBR R6 R1 K89 + 0x8C10016C, // 0009 GETMET R4 R0 K108 + 0x88180357, // 000A GETMBR R6 R1 K87 0x7C100400, // 000B CALL R4 2 0x80040600, // 000C RET 1 R3 0x500C0000, // 000D LDBOOL R3 0 0 @@ -1623,7 +1618,7 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 0x80000400, // 0003 RET 0 - 0x5808006D, // 0004 LDCONST R2 K109 + 0x58080040, // 0004 LDCONST R2 K64 0x600C000C, // 0005 GETGBL R3 G12 0x88100126, // 0006 GETMBR R4 R0 K38 0x7C0C0200, // 0007 CALL R3 1 @@ -1631,16 +1626,16 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */ 0x780E000C, // 0009 JMPF R3 #0017 0x880C0126, // 000A GETMBR R3 R0 K38 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x8C0C0785, // 000C GETMET R3 R3 K133 + 0x8C0C0780, // 000C GETMET R3 R3 K128 0x7C0C0200, // 000D CALL R3 1 0x1C0C0601, // 000E EQ R3 R3 R1 0x780E0004, // 000F JMPF R3 #0015 0x880C0126, // 0010 GETMBR R3 R0 K38 - 0x8C0C0782, // 0011 GETMET R3 R3 K130 + 0x8C0C077D, // 0011 GETMET R3 R3 K125 0x5C140400, // 0012 MOVE R5 R2 0x7C0C0400, // 0013 CALL R3 2 0x70020000, // 0014 JMP #0016 - 0x00080561, // 0015 ADD R2 R2 K97 + 0x0008052A, // 0015 ADD R2 R2 K42 0x7001FFED, // 0016 JMP #0005 0x80000000, // 0017 RET 0 }) @@ -1667,7 +1662,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na &be_const_str_solidified, ( &(const binstruction[86]) { /* code */ 0xB8120000, // 0000 GETNGBL R4 K0 - 0x88100986, // 0001 GETMBR R4 R4 K134 + 0x88100981, // 0001 GETMBR R4 R4 K129 0xB8160000, // 0002 GETNGBL R5 K0 0x8C140B16, // 0003 GETMET R5 R5 K22 0x881C050D, // 0004 GETMBR R7 R2 K13 @@ -1684,14 +1679,14 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x20180C07, // 000F NE R6 R6 R7 0x781A0034, // 0010 JMPF R6 #0046 0xB81A0000, // 0011 GETNGBL R6 K0 - 0x8C180D87, // 0012 GETMET R6 R6 K135 + 0x8C180D82, // 0012 GETMET R6 R6 K130 0x7C180200, // 0013 CALL R6 1 0xB81E0000, // 0014 GETNGBL R7 K0 - 0x8C1C0F36, // 0015 GETMET R7 R7 K54 + 0x8C1C0F34, // 0015 GETMET R7 R7 K52 0x7C1C0200, // 0016 CALL R7 1 0x901A1407, // 0017 SETMBR R6 K10 R7 0xB81E0000, // 0018 GETNGBL R7 K0 - 0x8C1C0F88, // 0019 GETMET R7 R7 K136 + 0x8C1C0F83, // 0019 GETMET R7 R7 K131 0x7C1C0200, // 001A CALL R7 1 0x901A1E07, // 001B SETMBR R6 K15 R7 0x881C0D0A, // 001C GETMBR R7 R6 K10 @@ -1712,7 +1707,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x7C1C0400, // 002B CALL R7 2 0xB81E2E00, // 002C GETNGBL R7 K23 0x60200018, // 002D GETGBL R8 G24 - 0x58240089, // 002E LDCONST R9 K137 + 0x58240084, // 002E LDCONST R9 K132 0x60280008, // 002F GETGBL R10 G8 0x5C2C0400, // 0030 MOVE R11 R2 0x7C280200, // 0031 CALL R10 1 @@ -1729,7 +1724,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x5838001B, // 003C LDCONST R14 K27 0x7C200C00, // 003D CALL R8 6 0x88240512, // 003E GETMBR R9 R2 K18 - 0x2024136D, // 003F NE R9 R9 K109 + 0x20241340, // 003F NE R9 R9 K64 0x78260001, // 0040 JMPF R9 #0043 0x5824002B, // 0041 LDCONST R9 K43 0x70020000, // 0042 JMP #0044 @@ -1743,7 +1738,7 @@ be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* na 0x781A0009, // 004A JMPF R6 #0055 0xB81A2E00, // 004B GETNGBL R6 K23 0x601C0018, // 004C GETGBL R7 G24 - 0x5820008A, // 004D LDCONST R8 K138 + 0x58200085, // 004D LDCONST R8 K133 0x60240008, // 004E GETGBL R9 G8 0x5C280400, // 004F MOVE R10 R2 0x7C240200, // 0050 CALL R9 1 @@ -1780,23 +1775,23 @@ be_local_closure(class_Matter_IM_init, /* name */ 0x7C080000, // 0002 CALL R2 0 0x90024C02, // 0003 SETMBR R0 K38 R2 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x8C08058B, // 0005 GETMET R2 R2 K139 + 0x8C080586, // 0005 GETMET R2 R2 K134 0x5C100000, // 0006 MOVE R4 R0 0x7C080400, // 0007 CALL R2 2 - 0x90029002, // 0008 SETMBR R0 K72 R2 + 0x90028C02, // 0008 SETMBR R0 K70 R2 0xB80A0000, // 0009 GETNGBL R2 K0 - 0x8C08058D, // 000A GETMET R2 R2 K141 + 0x8C080588, // 000A GETMET R2 R2 K136 0x7C080200, // 000B CALL R2 1 - 0x90031802, // 000C SETMBR R0 K140 R2 + 0x90030E02, // 000C SETMBR R0 K135 R2 0xB80A0000, // 000D GETNGBL R2 K0 - 0x8C08058F, // 000E GETMET R2 R2 K143 + 0x8C08058A, // 000E GETMET R2 R2 K138 0x7C080200, // 000F CALL R2 1 - 0x90031C02, // 0010 SETMBR R0 K142 R2 + 0x90031202, // 0010 SETMBR R0 K137 R2 0xB80A0000, // 0011 GETNGBL R2 K0 - 0x88080586, // 0012 GETMBR R2 R2 K134 - 0x8C080591, // 0013 GETMET R2 R2 K145 + 0x88080581, // 0012 GETMBR R2 R2 K129 + 0x8C08058C, // 0013 GETMET R2 R2 K140 0x7C080200, // 0014 CALL R2 1 - 0x90032002, // 0015 SETMBR R0 K144 R2 + 0x90031602, // 0015 SETMBR R0 K139 R2 0x80000000, // 0016 RET 0 }) ) @@ -1821,7 +1816,7 @@ be_local_closure(class_Matter_IM_every_second, /* name */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040192, // 0000 GETMET R1 R0 K146 + 0x8C04018D, // 0000 GETMET R1 R0 K141 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -1849,20 +1844,20 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ ( &(const binstruction[188]) { /* code */ 0x900A3E01, // 0000 SETMBR R2 K31 R1 0xB80E0000, // 0001 GETNGBL R3 K0 - 0x880C0750, // 0002 GETMBR R3 R3 K80 + 0x880C074E, // 0002 GETMBR R3 R3 K78 0x900A1E03, // 0003 SETMBR R2 K15 R3 0xB80E0000, // 0004 GETNGBL R3 K0 - 0x8C0C0751, // 0005 GETMET R3 R3 K81 + 0x8C0C074F, // 0005 GETMET R3 R3 K79 0x8814050D, // 0006 GETMBR R5 R2 K13 - 0x8818054F, // 0007 GETMBR R6 R2 K79 + 0x8818054D, // 0007 GETMBR R6 R2 K77 0x7C0C0600, // 0008 CALL R3 3 0x60100008, // 0009 GETGBL R4 G8 0x5C140400, // 000A MOVE R5 R2 0x7C100200, // 000B CALL R4 1 0x88140109, // 000C GETMBR R5 R0 K9 - 0x8C140B52, // 000D GETMET R5 R5 K82 + 0x8C140B50, // 000D GETMET R5 R5 K80 0x881C0323, // 000E GETMBR R7 R1 K35 - 0x88200553, // 000F GETMBR R8 R2 K83 + 0x88200551, // 000F GETMBR R8 R2 K81 0x5C240400, // 0010 MOVE R9 R2 0x7C140800, // 0011 CALL R5 4 0x88180517, // 0012 GETMBR R6 R2 K23 @@ -1872,8 +1867,8 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x60180008, // 0016 GETGBL R6 G8 0x881C0517, // 0017 GETMBR R7 R2 K23 0x7C180200, // 0018 CALL R6 1 - 0x001AA806, // 0019 ADD R6 K84 R6 - 0x00180D55, // 001A ADD R6 R6 K85 + 0x001AA406, // 0019 ADD R6 K82 R6 + 0x00180D53, // 001A ADD R6 R6 K83 0x70020000, // 001B JMP #001D 0x5818001B, // 001C LDCONST R6 K27 0xB81E2600, // 001D GETNGBL R7 K19 @@ -1883,9 +1878,9 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x781E000D, // 0021 JMPF R7 #0030 0xB81E2E00, // 0022 GETNGBL R7 K23 0x60200018, // 0023 GETGBL R8 G24 - 0x58240093, // 0024 LDCONST R9 K147 + 0x5824008E, // 0024 LDCONST R9 K142 0x88280323, // 0025 GETMBR R10 R1 K35 - 0x88281538, // 0026 GETMBR R10 R10 K56 + 0x88281536, // 0026 GETMBR R10 R10 K54 0x5C2C0800, // 0027 MOVE R11 R4 0x780E0001, // 0028 JMPF R3 #002B 0x5C300600, // 0029 MOVE R12 R3 @@ -1901,12 +1896,12 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x5422002F, // 0033 LDINT R8 48 0x7C1C0200, // 0034 CALL R7 1 0x8C200F29, // 0035 GETMET R8 R7 K41 - 0x58280094, // 0036 LDCONST R10 K148 + 0x5828008F, // 0036 LDCONST R10 K143 0x542DFFFB, // 0037 LDINT R11 -4 0x7C200600, // 0038 CALL R8 3 0x8C200F29, // 0039 GETMET R8 R7 K41 - 0x5828002D, // 003A LDCONST R10 K45 - 0x582C002D, // 003B LDCONST R11 K45 + 0x5828002A, // 003A LDCONST R10 K42 + 0x582C002A, // 003B LDCONST R11 K42 0x7C200600, // 003C CALL R8 3 0x50200200, // 003D LDBOOL R8 1 0 0x1C200A08, // 003E EQ R8 R5 R8 @@ -1919,7 +1914,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0xB8220000, // 0045 GETNGBL R8 K0 0x88201124, // 0046 GETMBR R8 R8 K36 0x900A1E08, // 0047 SETMBR R2 K15 R8 - 0x8C200157, // 0048 GETMET R8 R0 K87 + 0x8C200155, // 0048 GETMET R8 R0 K85 0x5C280E00, // 0049 MOVE R10 R7 0x5C2C0400, // 004A MOVE R11 R2 0x4C300000, // 004B LDNIL R12 @@ -1931,10 +1926,10 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220008, // 0051 JMPF R8 #005B 0xB8222E00, // 0052 GETNGBL R8 K23 0x60240018, // 0053 GETGBL R9 G24 - 0x58280058, // 0054 LDCONST R10 K88 + 0x58280056, // 0054 LDCONST R10 K86 0x882C0323, // 0055 GETMBR R11 R1 K35 - 0x882C1738, // 0056 GETMBR R11 R11 K56 - 0x88300359, // 0057 GETMBR R12 R1 K89 + 0x882C1736, // 0056 GETMBR R11 R11 K54 + 0x88300357, // 0057 GETMBR R12 R1 K87 0x7C240600, // 0058 CALL R9 3 0x58280015, // 0059 LDCONST R10 K21 0x7C200400, // 005A CALL R8 2 @@ -1942,7 +1937,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x4C200000, // 005C LDNIL R8 0x20200A08, // 005D NE R8 R5 R8 0x78220017, // 005E JMPF R8 #0077 - 0x8C200157, // 005F GETMET R8 R0 K87 + 0x8C200155, // 005F GETMET R8 R0 K85 0x5C280E00, // 0060 MOVE R10 R7 0x5C2C0400, // 0061 MOVE R11 R2 0x5C300A00, // 0062 MOVE R12 R5 @@ -1957,9 +1952,9 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220009, // 006B JMPF R8 #0076 0xB8222E00, // 006C GETNGBL R8 K23 0x60240018, // 006D GETGBL R9 G24 - 0x5828005A, // 006E LDCONST R10 K90 + 0x58280058, // 006E LDCONST R10 K88 0x882C0323, // 006F GETMBR R11 R1 K35 - 0x882C1738, // 0070 GETMBR R11 R11 K56 + 0x882C1736, // 0070 GETMBR R11 R11 K54 0x5C300400, // 0071 MOVE R12 R2 0x5C340600, // 0072 MOVE R13 R3 0x7C240800, // 0073 CALL R9 4 @@ -1970,7 +1965,7 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x4C240000, // 0078 LDNIL R9 0x20201009, // 0079 NE R8 R8 R9 0x78220014, // 007A JMPF R8 #0090 - 0x8C200157, // 007B GETMET R8 R0 K87 + 0x8C200155, // 007B GETMET R8 R0 K85 0x5C280E00, // 007C MOVE R10 R7 0x5C2C0400, // 007D MOVE R11 R2 0x4C300000, // 007E LDNIL R12 @@ -1982,11 +1977,11 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220009, // 0084 JMPF R8 #008F 0xB8222E00, // 0085 GETNGBL R8 K23 0x60240018, // 0086 GETGBL R9 G24 - 0x5828005B, // 0087 LDCONST R10 K91 + 0x58280059, // 0087 LDCONST R10 K89 0x882C0323, // 0088 GETMBR R11 R1 K35 - 0x882C1738, // 0089 GETMBR R11 R11 K56 + 0x882C1736, // 0089 GETMBR R11 R11 K54 0x8830050F, // 008A GETMBR R12 R2 K15 - 0x88340359, // 008B GETMBR R13 R1 K89 + 0x88340357, // 008B GETMBR R13 R1 K87 0x7C240800, // 008C CALL R9 4 0x58280015, // 008D LDCONST R10 K21 0x7C200400, // 008E CALL R8 2 @@ -1998,39 +1993,39 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */ 0x78220008, // 0094 JMPF R8 #009E 0xB8222E00, // 0095 GETNGBL R8 K23 0x60240018, // 0096 GETGBL R9 G24 - 0x5828005C, // 0097 LDCONST R10 K92 + 0x5828005A, // 0097 LDCONST R10 K90 0x882C0323, // 0098 GETMBR R11 R1 K35 - 0x882C1738, // 0099 GETMBR R11 R11 K56 - 0x88300359, // 009A GETMBR R12 R1 K89 + 0x882C1736, // 0099 GETMBR R11 R11 K54 + 0x88300357, // 009A GETMBR R12 R1 K87 0x7C240600, // 009B CALL R9 3 0x58280015, // 009C LDCONST R10 K21 0x7C200400, // 009D CALL R8 2 0x50200000, // 009E LDBOOL R8 0 0 0x80041000, // 009F RET 1 R8 0x8C200F29, // 00A0 GETMET R8 R7 K41 - 0x58280095, // 00A1 LDCONST R10 K149 + 0x58280090, // 00A1 LDCONST R10 K144 0x542DFFFB, // 00A2 LDINT R11 -4 0x7C200600, // 00A3 CALL R8 3 0x8C200F29, // 00A4 GETMET R8 R7 K41 0x542A0017, // 00A5 LDINT R10 24 - 0x582C002D, // 00A6 LDCONST R11 K45 + 0x582C002A, // 00A6 LDCONST R11 K42 0x7C200600, // 00A7 CALL R8 3 - 0x8C200396, // 00A8 GETMET R8 R1 K150 + 0x8C200391, // 00A8 GETMET R8 R1 K145 0x542A0008, // 00A9 LDINT R10 9 0x502C0200, // 00AA LDBOOL R11 1 0 0x7C200600, // 00AB CALL R8 3 0x88240109, // 00AC GETMBR R9 R0 K9 - 0x88241397, // 00AD GETMBR R9 R9 K151 - 0x88280398, // 00AE GETMBR R10 R1 K152 - 0x8C2C1599, // 00AF GETMET R11 R10 K153 + 0x88241392, // 00AD GETMBR R9 R9 K146 + 0x88280393, // 00AE GETMBR R10 R1 K147 + 0x8C2C1594, // 00AF GETMET R11 R10 K148 0x7C2C0200, // 00B0 CALL R11 1 - 0x8C2C119A, // 00B1 GETMET R11 R8 K154 + 0x8C2C1195, // 00B1 GETMET R11 R8 K149 0x5C340E00, // 00B2 MOVE R13 R7 0x5C381400, // 00B3 MOVE R14 R10 0x7C2C0600, // 00B4 CALL R11 3 - 0x8C2C119B, // 00B5 GETMET R11 R8 K155 + 0x8C2C1196, // 00B5 GETMET R11 R8 K150 0x7C2C0200, // 00B6 CALL R11 1 - 0x8C2C139C, // 00B7 GETMET R11 R9 K156 + 0x8C2C1397, // 00B7 GETMET R11 R9 K151 0x5C341000, // 00B8 MOVE R13 R8 0x7C2C0400, // 00B9 CALL R11 2 0x502C0200, // 00BA LDBOOL R11 1 0 @@ -2066,25 +2061,25 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */ 0x780E0007, // 0005 JMPF R3 #000E 0xB80E2E00, // 0006 GETNGBL R3 K23 0x60100018, // 0007 GETGBL R4 G24 - 0x5814009D, // 0008 LDCONST R5 K157 - 0x88180538, // 0009 GETMBR R6 R2 K56 - 0x881C0339, // 000A GETMBR R7 R1 K57 + 0x58140098, // 0008 LDCONST R5 K152 + 0x88180536, // 0009 GETMBR R6 R2 K54 + 0x881C0337, // 000A GETMBR R7 R1 K55 0x7C100600, // 000B CALL R4 3 0x58140015, // 000C LDCONST R5 K21 0x7C0C0400, // 000D CALL R3 2 0x500C0200, // 000E LDBOOL R3 1 0 - 0x90067403, // 000F SETMBR R1 K58 R3 + 0x90067003, // 000F SETMBR R1 K56 R3 0x880C0126, // 0010 GETMBR R3 R0 K38 0x8C0C0727, // 0011 GETMET R3 R3 K39 0xB8160000, // 0012 GETNGBL R5 K0 - 0x8C140B9E, // 0013 GETMET R5 R5 K158 - 0x881C053E, // 0014 GETMBR R7 R2 K62 + 0x8C140B99, // 0013 GETMET R5 R5 K153 + 0x881C053C, // 0014 GETMBR R7 R2 K60 0x5C200400, // 0015 MOVE R8 R2 0x5C240200, // 0016 MOVE R9 R1 0x7C140800, // 0017 CALL R5 4 0x7C0C0400, // 0018 CALL R3 2 - 0x8C0C013F, // 0019 GETMET R3 R0 K63 - 0x8814053E, // 001A GETMBR R5 R2 K62 + 0x8C0C013D, // 0019 GETMET R3 R0 K61 + 0x8814053C, // 001A GETMBR R5 R2 K60 0x7C0C0400, // 001B CALL R3 2 0x80000000, // 001C RET 0 }) @@ -2115,7 +2110,7 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0x5808006D, // 0005 LDCONST R2 K109 + 0x58080040, // 0005 LDCONST R2 K64 0x600C000C, // 0006 GETGBL R3 G12 0x88100126, // 0007 GETMBR R4 R0 K38 0x7C0C0200, // 0008 CALL R3 1 @@ -2123,7 +2118,7 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */ 0x780E0008, // 000A JMPF R3 #0014 0x880C0126, // 000B GETMBR R3 R0 K38 0x940C0602, // 000C GETIDX R3 R3 R2 - 0x8C100785, // 000D GETMET R4 R3 K133 + 0x8C100780, // 000D GETMET R4 R3 K128 0x7C100200, // 000E CALL R4 1 0x1C100801, // 000F EQ R4 R4 R1 0x78120000, // 0010 JMPF R4 #0012 @@ -2160,7 +2155,7 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x900A1E03, // 0002 SETMBR R2 K15 R3 0x900A3E01, // 0003 SETMBR R2 K31 R1 0x880C0109, // 0004 GETMBR R3 R0 K9 - 0x8C0C079F, // 0005 GETMET R3 R3 K159 + 0x8C0C079A, // 0005 GETMET R3 R3 K154 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x4C100000, // 0008 LDNIL R4 @@ -2169,42 +2164,42 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x20180606, // 000B NE R6 R3 R6 0x781A0008, // 000C JMPF R6 #0016 0xB81A0000, // 000D GETNGBL R6 K0 - 0x88180DA0, // 000E GETMBR R6 R6 K160 + 0x88180D9B, // 000E GETMBR R6 R6 K155 0x900A1E06, // 000F SETMBR R2 K15 R6 - 0x8C1807A1, // 0010 GETMET R6 R3 K161 + 0x8C18079C, // 0010 GETMET R6 R3 K156 0x88200323, // 0011 GETMBR R8 R1 K35 0x5C240400, // 0012 MOVE R9 R2 - 0x88280190, // 0013 GETMBR R10 R0 K144 + 0x8828018B, // 0013 GETMBR R10 R0 K139 0x7C180800, // 0014 CALL R6 4 0x5C100C00, // 0015 MOVE R4 R6 0x4C180000, // 0016 LDNIL R6 0x20180806, // 0017 NE R6 R4 R6 0x781A0036, // 0018 JMPF R6 #0050 - 0x881809A2, // 0019 GETMBR R6 R4 K162 + 0x8818099D, // 0019 GETMBR R6 R4 K157 0x741A0001, // 001A JMPT R6 #001D - 0x881809A3, // 001B GETMBR R6 R4 K163 + 0x8818099E, // 001B GETMBR R6 R4 K158 0x781A0018, // 001C JMPF R6 #0036 - 0x8C1809A4, // 001D GETMET R6 R4 K164 + 0x8C18099F, // 001D GETMET R6 R4 K159 0x7C180200, // 001E CALL R6 1 0xB81E0000, // 001F GETNGBL R7 K0 - 0x881C0F41, // 0020 GETMBR R7 R7 K65 - 0x881C0FA5, // 0021 GETMBR R7 R7 K165 + 0x881C0F3F, // 0020 GETMBR R7 R7 K63 + 0x881C0FA0, // 0021 GETMBR R7 R7 K160 0x24180C07, // 0022 GT R6 R6 R7 0x781A0011, // 0023 JMPF R6 #0036 0x4C100000, // 0024 LDNIL R4 0xB81A2E00, // 0025 GETNGBL R6 K23 0x601C0018, // 0026 GETGBL R7 G24 - 0x582000A6, // 0027 LDCONST R8 K166 + 0x582000A1, // 0027 LDCONST R8 K161 0x7C1C0200, // 0028 CALL R7 1 0x58200015, // 0029 LDCONST R8 K21 0x7C180400, // 002A CALL R6 2 0xB81A0000, // 002B GETNGBL R6 K0 - 0x88180D86, // 002C GETMBR R6 R6 K134 - 0x8C180DA7, // 002D GETMET R6 R6 K167 - 0x88200398, // 002E GETMBR R8 R1 K152 - 0x882403A8, // 002F GETMBR R9 R1 K168 + 0x88180D81, // 002C GETMBR R6 R6 K129 + 0x8C180DA2, // 002D GETMET R6 R6 K162 + 0x88200393, // 002E GETMBR R8 R1 K147 + 0x882403A3, // 002F GETMBR R9 R1 K163 0x7C180600, // 0030 CALL R6 3 - 0x8C1C01A9, // 0031 GETMET R7 R0 K169 + 0x8C1C01A4, // 0031 GETMET R7 R0 K164 0x5C240200, // 0032 MOVE R9 R1 0x5C280C00, // 0033 MOVE R10 R6 0x7C1C0600, // 0034 CALL R7 3 @@ -2221,13 +2216,13 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x54223600, // 003F LDINT R8 13825 0x5425FFFD, // 0040 LDINT R9 -2 0x7C180600, // 0041 CALL R6 3 - 0x8C1801AA, // 0042 GETMET R6 R0 K170 + 0x8C1801A5, // 0042 GETMET R6 R0 K165 0x5C200A00, // 0043 MOVE R8 R5 0x5C240400, // 0044 MOVE R9 R2 0x5C280800, // 0045 MOVE R10 R4 0x7C180800, // 0046 CALL R6 4 0x8C180B29, // 0047 GETMET R6 R5 K41 - 0x58200095, // 0048 LDCONST R8 K149 + 0x58200090, // 0048 LDCONST R8 K144 0x5425FFFB, // 0049 LDINT R9 -4 0x7C180600, // 004A CALL R6 3 0x8C180B29, // 004B GETMET R6 R5 K41 @@ -2251,13 +2246,13 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x54223600, // 005D LDINT R8 13825 0x5425FFFD, // 005E LDINT R9 -2 0x7C180600, // 005F CALL R6 3 - 0x8C1801AB, // 0060 GETMET R6 R0 K171 + 0x8C1801A6, // 0060 GETMET R6 R0 K166 0x5C200A00, // 0061 MOVE R8 R5 0x5C240400, // 0062 MOVE R9 R2 0x8828050F, // 0063 GETMBR R10 R2 K15 0x7C180800, // 0064 CALL R6 4 0x8C180B29, // 0065 GETMET R6 R5 K41 - 0x58200095, // 0066 LDCONST R8 K149 + 0x58200090, // 0066 LDCONST R8 K144 0x5425FFFB, // 0067 LDINT R9 -4 0x7C180600, // 0068 CALL R6 3 0x8C180B29, // 0069 GETMET R6 R5 K41 @@ -2267,29 +2262,29 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x7002000A, // 006D JMP #0079 0xB81A2E00, // 006E GETNGBL R6 K23 0x601C0018, // 006F GETGBL R7 G24 - 0x582000AC, // 0070 LDCONST R8 K172 + 0x582000A7, // 0070 LDCONST R8 K167 0x88240323, // 0071 GETMBR R9 R1 K35 - 0x88241338, // 0072 GETMBR R9 R9 K56 + 0x88241336, // 0072 GETMBR R9 R9 K54 0x5C280400, // 0073 MOVE R10 R2 0x7C1C0600, // 0074 CALL R7 3 0x58200015, // 0075 LDCONST R8 K21 0x7C180400, // 0076 CALL R6 2 0x50180000, // 0077 LDBOOL R6 0 0 0x80040C00, // 0078 RET 1 R6 - 0x8C180396, // 0079 GETMET R6 R1 K150 + 0x8C180391, // 0079 GETMET R6 R1 K145 0x54220004, // 007A LDINT R8 5 0x50240200, // 007B LDBOOL R9 1 0 0x7C180600, // 007C CALL R6 3 0x881C0109, // 007D GETMBR R7 R0 K9 - 0x881C0F97, // 007E GETMBR R7 R7 K151 - 0x88200398, // 007F GETMBR R8 R1 K152 - 0x8C241199, // 0080 GETMET R9 R8 K153 + 0x881C0F92, // 007E GETMBR R7 R7 K146 + 0x88200393, // 007F GETMBR R8 R1 K147 + 0x8C241194, // 0080 GETMET R9 R8 K148 0x7C240200, // 0081 CALL R9 1 - 0x8C240D9A, // 0082 GETMET R9 R6 K154 + 0x8C240D95, // 0082 GETMET R9 R6 K149 0x5C2C0A00, // 0083 MOVE R11 R5 0x5C301000, // 0084 MOVE R12 R8 0x7C240600, // 0085 CALL R9 3 - 0x8C240D9B, // 0086 GETMET R9 R6 K155 + 0x8C240D96, // 0086 GETMET R9 R6 K150 0x7C240200, // 0087 CALL R9 1 0xB8262600, // 0088 GETNGBL R9 K19 0x8C241314, // 0089 GETMET R9 R9 K20 @@ -2298,16 +2293,16 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x7826000A, // 008C JMPF R9 #0098 0xB8262E00, // 008D GETNGBL R9 K23 0x60280018, // 008E GETGBL R10 G24 - 0x582C00AD, // 008F LDCONST R11 K173 + 0x582C00A8, // 008F LDCONST R11 K168 0x88300D23, // 0090 GETMBR R12 R6 K35 - 0x88301938, // 0091 GETMBR R12 R12 K56 - 0x88340DAE, // 0092 GETMBR R13 R6 K174 - 0x88380D59, // 0093 GETMBR R14 R6 K89 - 0x883C0DAF, // 0094 GETMBR R15 R6 K175 + 0x88301936, // 0091 GETMBR R12 R12 K54 + 0x88340DA9, // 0092 GETMBR R13 R6 K169 + 0x88380D57, // 0093 GETMBR R14 R6 K87 + 0x883C0DAA, // 0094 GETMBR R15 R6 K170 0x7C280A00, // 0095 CALL R10 5 0x542E0003, // 0096 LDINT R11 4 0x7C240400, // 0097 CALL R9 2 - 0x8C240F9C, // 0098 GETMET R9 R7 K156 + 0x8C240F97, // 0098 GETMET R9 R7 K151 0x5C2C0C00, // 0099 MOVE R11 R6 0x7C240400, // 009A CALL R9 2 0x4C240000, // 009B LDNIL R9 @@ -2336,13 +2331,13 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x58300015, // 00B2 LDCONST R12 K21 0x7C280400, // 00B3 CALL R10 2 0x782A000C, // 00B4 JMPF R10 #00C2 - 0x8C2809B0, // 00B5 GETMET R10 R4 K176 + 0x8C2809AB, // 00B5 GETMET R10 R4 K171 0x7C280200, // 00B6 CALL R10 1 0xB82E2E00, // 00B7 GETNGBL R11 K23 0x60300018, // 00B8 GETGBL R12 G24 - 0x583400B1, // 00B9 LDCONST R13 K177 + 0x583400AC, // 00B9 LDCONST R13 K172 0x88380323, // 00BA GETMBR R14 R1 K35 - 0x88381D38, // 00BB GETMBR R14 R14 K56 + 0x88381D36, // 00BB GETMBR R14 R14 K54 0x5C3C0400, // 00BC MOVE R15 R2 0x5C401200, // 00BD MOVE R16 R9 0x5C441400, // 00BE MOVE R17 R10 @@ -2356,10 +2351,10 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x782A0019, // 00C6 JMPF R10 #00E1 0x8828050F, // 00C7 GETMBR R10 R2 K15 0xB82E0000, // 00C8 GETNGBL R11 K0 - 0x882C17A0, // 00C9 GETMBR R11 R11 K160 + 0x882C179B, // 00C9 GETMBR R11 R11 K155 0x1C28140B, // 00CA EQ R10 R10 R11 0x782A0001, // 00CB JMPF R10 #00CE - 0x582800A0, // 00CC LDCONST R10 K160 + 0x5828009B, // 00CC LDCONST R10 K155 0x70020000, // 00CD JMP #00CF 0x5828001B, // 00CE LDCONST R10 K27 0xB82E2600, // 00CF GETNGBL R11 K19 @@ -2369,9 +2364,9 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x782E000B, // 00D3 JMPF R11 #00E0 0xB82E2E00, // 00D4 GETNGBL R11 K23 0x60300018, // 00D5 GETGBL R12 G24 - 0x583400B2, // 00D6 LDCONST R13 K178 + 0x583400AD, // 00D6 LDCONST R13 K173 0x88380323, // 00D7 GETMBR R14 R1 K35 - 0x88381D38, // 00D8 GETMBR R14 R14 K56 + 0x88381D36, // 00D8 GETMBR R14 R14 K54 0x5C3C0400, // 00D9 MOVE R15 R2 0x5C401200, // 00DA MOVE R16 R9 0x8844050F, // 00DB GETMBR R17 R2 K15 @@ -2387,9 +2382,9 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */ 0x782A0009, // 00E5 JMPF R10 #00F0 0xB82A2E00, // 00E6 GETNGBL R10 K23 0x602C0018, // 00E7 GETGBL R11 G24 - 0x583000B3, // 00E8 LDCONST R12 K179 + 0x583000AE, // 00E8 LDCONST R12 K174 0x88340323, // 00E9 GETMBR R13 R1 K35 - 0x88341B38, // 00EA GETMBR R13 R13 K56 + 0x88341B36, // 00EA GETMBR R13 R13 K54 0x5C380400, // 00EB MOVE R14 R2 0x5C3C1200, // 00EC MOVE R15 R9 0x7C2C0800, // 00ED CALL R11 4 @@ -2420,7 +2415,7 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ be_str_weak(parse_event_filters_min_no), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0x580800B4, // 0000 LDCONST R2 K180 + 0x580800AF, // 0000 LDCONST R2 K175 0x4C0C0000, // 0001 LDNIL R3 0x4C100000, // 0002 LDNIL R4 0x20100004, // 0003 NE R4 R0 R4 @@ -2431,33 +2426,33 @@ be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */ 0xA8020024, // 0008 EXBLK 0 #002E 0x5C140800, // 0009 MOVE R5 R4 0x7C140000, // 000A CALL R5 0 - 0xB81B6A00, // 000B GETNGBL R6 K181 - 0x8C180DB6, // 000C GETMET R6 R6 K182 - 0x88200BB7, // 000D GETMBR R8 R5 K183 + 0xB81B6000, // 000B GETNGBL R6 K176 + 0x8C180DB1, // 000C GETMET R6 R6 K177 + 0x88200BB2, // 000D GETMBR R8 R5 K178 0x7C180400, // 000E CALL R6 2 0x781A0012, // 000F JMPF R6 #0023 0x78060011, // 0010 JMPF R1 #0023 - 0x881C0BB7, // 0011 GETMBR R7 R5 K183 - 0x8C1C0FB8, // 0012 GETMET R7 R7 K184 + 0x881C0BB2, // 0011 GETMBR R7 R5 K178 + 0x8C1C0FB3, // 0012 GETMET R7 R7 K179 0x7C1C0200, // 0013 CALL R7 1 0x201C0E01, // 0014 NE R7 R7 R1 0x781E000C, // 0015 JMPF R7 #0023 0xB81E2600, // 0016 GETNGBL R7 K19 0x8C1C0F17, // 0017 GETMET R7 R7 K23 0x60240018, // 0018 GETGBL R9 G24 - 0x582800B9, // 0019 LDCONST R10 K185 - 0x8C2C0DB8, // 001A GETMET R11 R6 K184 + 0x582800B4, // 0019 LDCONST R10 K180 + 0x8C2C0DB3, // 001A GETMET R11 R6 K179 0x7C2C0200, // 001B CALL R11 1 - 0x8C2C17BA, // 001C GETMET R11 R11 K186 + 0x8C2C17B5, // 001C GETMET R11 R11 K181 0x7C2C0200, // 001D CALL R11 1 - 0x8C3003BA, // 001E GETMET R12 R1 K186 + 0x8C3003B5, // 001E GETMET R12 R1 K181 0x7C300200, // 001F CALL R12 1 0x7C240600, // 0020 CALL R9 3 0x7C1C0400, // 0021 CALL R7 2 0x7001FFE5, // 0022 JMP #0009 - 0xB81F6A00, // 0023 GETNGBL R7 K181 - 0x8C1C0FB6, // 0024 GETMET R7 R7 K182 - 0x88240BBB, // 0025 GETMBR R9 R5 K187 + 0xB81F6000, // 0023 GETNGBL R7 K176 + 0x8C1C0FB1, // 0024 GETMET R7 R7 K177 + 0x88240BB6, // 0025 GETMBR R9 R5 K182 0x7C1C0400, // 0026 CALL R7 2 0x4C200000, // 0027 LDNIL R8 0x1C200608, // 0028 EQ R8 R3 R8 @@ -2568,7 +2563,7 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x8818050D, // 0048 GETMBR R6 R2 K13 0x541E0003, // 0049 LDINT R7 4 0x7C100600, // 004A CALL R4 3 - 0x8810054F, // 004B GETMBR R4 R2 K79 + 0x8810054D, // 004B GETMBR R4 R2 K77 0x541600FE, // 004C LDINT R5 255 0x18100805, // 004D LE R4 R4 R5 0x78120008, // 004E JMPF R4 #0058 @@ -2577,11 +2572,11 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x541DFFFD, // 0051 LDINT R7 -2 0x7C100600, // 0052 CALL R4 3 0x8C100329, // 0053 GETMET R4 R1 K41 - 0x8818054F, // 0054 GETMBR R6 R2 K79 + 0x8818054D, // 0054 GETMBR R6 R2 K77 0x581C002A, // 0055 LDCONST R7 K42 0x7C100600, // 0056 CALL R4 3 0x70020014, // 0057 JMP #006D - 0x8810054F, // 0058 GETMBR R4 R2 K79 + 0x8810054D, // 0058 GETMBR R4 R2 K77 0x5416FFFE, // 0059 LDINT R5 65535 0x18100805, // 005A LE R4 R4 R5 0x78120008, // 005B JMPF R4 #0065 @@ -2590,7 +2585,7 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x541DFFFD, // 005E LDINT R7 -2 0x7C100600, // 005F CALL R4 3 0x8C100329, // 0060 GETMET R4 R1 K41 - 0x8818054F, // 0061 GETMBR R6 R2 K79 + 0x8818054D, // 0061 GETMBR R6 R2 K77 0x581C002B, // 0062 LDCONST R7 K43 0x7C100600, // 0063 CALL R4 3 0x70020007, // 0064 JMP #006D @@ -2599,7 +2594,7 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x541DFFFD, // 0067 LDINT R7 -2 0x7C100600, // 0068 CALL R4 3 0x8C100329, // 0069 GETMET R4 R1 K41 - 0x8818054F, // 006A GETMBR R6 R2 K79 + 0x8818054D, // 006A GETMBR R6 R2 K77 0x541E0003, // 006B LDINT R7 4 0x7C100600, // 006C CALL R4 3 0x8C100329, // 006D GETMET R4 R1 K41 @@ -2632,8 +2627,8 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */ 0x5820002A, // 0088 LDCONST R8 K42 0x7C140600, // 0089 CALL R5 3 0x70020003, // 008A JMP #008F - 0x900E5F2A, // 008B SETMBR R3 K47 K42 - 0x8C100731, // 008C GETMET R4 R3 K49 + 0x900E5D2A, // 008B SETMBR R3 K46 K42 + 0x8C10072F, // 008C GETMET R4 R3 K47 0x5C180200, // 008D MOVE R6 R1 0x7C100400, // 008E CALL R4 2 0x8C100329, // 008F GETMET R4 R1 K41 @@ -2664,46 +2659,46 @@ be_local_closure(class_Matter_IM_process_status_response, /* name */ be_str_weak(process_status_response), &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ - 0x8C0C05BC, // 0000 GETMET R3 R2 K188 - 0x5814006D, // 0001 LDCONST R5 K109 + 0x8C0C05B7, // 0000 GETMET R3 R2 K183 + 0x58140040, // 0001 LDCONST R5 K64 0x541A00FE, // 0002 LDINT R6 255 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100183, // 0004 GETMET R4 R0 K131 - 0x88180359, // 0005 GETMBR R6 R1 K89 + 0x8C10017E, // 0004 GETMET R4 R0 K126 + 0x88180357, // 0005 GETMBR R6 R1 K87 0x7C100400, // 0006 CALL R4 2 0xB8160000, // 0007 GETNGBL R5 K0 0x88140B24, // 0008 GETMBR R5 R5 K36 0x1C140605, // 0009 EQ R5 R3 R5 0x7816000F, // 000A JMPF R5 #001B 0x78120004, // 000B JMPF R4 #0011 - 0x8C1409BD, // 000C GETMET R5 R4 K189 + 0x8C1409B8, // 000C GETMET R5 R4 K184 0x5C1C0200, // 000D MOVE R7 R1 0x7C140400, // 000E CALL R5 2 0x80040A00, // 000F RET 1 R5 0x70020008, // 0010 JMP #001A 0xB8162E00, // 0011 GETNGBL R5 K23 0x60180018, // 0012 GETGBL R6 G24 - 0x581C00BE, // 0013 LDCONST R7 K190 + 0x581C00B9, // 0013 LDCONST R7 K185 0x88200323, // 0014 GETMBR R8 R1 K35 - 0x88201138, // 0015 GETMBR R8 R8 K56 - 0x88240359, // 0016 GETMBR R9 R1 K89 + 0x88201136, // 0015 GETMBR R8 R8 K54 + 0x88240357, // 0016 GETMBR R9 R1 K87 0x7C180600, // 0017 CALL R6 3 0x541E0003, // 0018 LDINT R7 4 0x7C140400, // 0019 CALL R5 2 0x7002000D, // 001A JMP #0029 0xB8162E00, // 001B GETNGBL R5 K23 0x60180018, // 001C GETGBL R6 G24 - 0x581C00BF, // 001D LDCONST R7 K191 + 0x581C00BA, // 001D LDCONST R7 K186 0x5C200600, // 001E MOVE R8 R3 0x7C180400, // 001F CALL R6 2 0x581C0015, // 0020 LDCONST R7 K21 0x7C140400, // 0021 CALL R5 2 0x78120005, // 0022 JMPF R4 #0029 - 0x8C1409C0, // 0023 GETMET R5 R4 K192 + 0x8C1409BB, // 0023 GETMET R5 R4 K187 0x5C1C0200, // 0024 MOVE R7 R1 0x7C140400, // 0025 CALL R5 2 - 0x8C140171, // 0026 GETMET R5 R0 K113 - 0x881C0359, // 0027 GETMBR R7 R1 K89 + 0x8C14016C, // 0026 GETMET R5 R0 K108 + 0x881C0357, // 0027 GETMBR R7 R1 K87 0x7C140400, // 0028 CALL R5 2 0x50140000, // 0029 LDBOOL R5 0 0 0x80040A00, // 002A RET 1 R5 @@ -2738,10 +2733,10 @@ be_local_closure(class_Matter_IM_attributestatus2raw, /* name */ 0x541A34FF, // 0005 LDINT R6 13568 0x541DFFFD, // 0006 LDINT R7 -2 0x7C100600, // 0007 CALL R4 3 - 0x8C10012E, // 0008 GETMET R4 R0 K46 + 0x8C10012D, // 0008 GETMET R4 R0 K45 0x5C180200, // 0009 MOVE R6 R1 0x5C1C0400, // 000A MOVE R7 R2 - 0x5820006D, // 000B LDCONST R8 K109 + 0x58200040, // 000B LDCONST R8 K64 0x7C100800, // 000C CALL R4 4 0x8C100329, // 000D GETMET R4 R1 K41 0x541A3500, // 000E LDINT R6 13569 @@ -2801,7 +2796,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ &be_const_str_solidified, ( &(const binstruction[165]) { /* code */ 0xB8160000, // 0000 GETNGBL R5 K0 - 0x88140B86, // 0001 GETMBR R5 R5 K134 + 0x88140B81, // 0001 GETMBR R5 R5 K129 0x4C180000, // 0002 LDNIL R6 0xB81E2600, // 0003 GETNGBL R7 K19 0x8C1C0F14, // 0004 GETMET R7 R7 K20 @@ -2828,10 +2823,10 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x4C280000, // 0019 LDNIL R10 0x2028020A, // 001A NE R10 R1 R10 0x782A0005, // 001B JMPF R10 #0022 - 0x8C2803A1, // 001C GETMET R10 R1 K161 + 0x8C28039C, // 001C GETMET R10 R1 K156 0x5C300600, // 001D MOVE R12 R3 0x5C340400, // 001E MOVE R13 R2 - 0x88380190, // 001F GETMBR R14 R0 K144 + 0x8838018B, // 001F GETMBR R14 R0 K139 0x7C280800, // 0020 CALL R10 4 0x5C201400, // 0021 MOVE R8 R10 0x4C280000, // 0022 LDNIL R10 @@ -2844,18 +2839,18 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x7C2C0400, // 0029 CALL R11 2 0x782E0003, // 002A JMPF R11 #002F 0x78120002, // 002B JMPF R4 #002F - 0x8C2C11B0, // 002C GETMET R11 R8 K176 + 0x8C2C11AB, // 002C GETMET R11 R8 K171 0x7C2C0200, // 002D CALL R11 1 0x5C281600, // 002E MOVE R10 R11 - 0x882C11A2, // 002F GETMBR R11 R8 K162 + 0x882C119D, // 002F GETMBR R11 R8 K157 0x742E0001, // 0030 JMPT R11 #0033 - 0x882C11A3, // 0031 GETMBR R11 R8 K163 + 0x882C119E, // 0031 GETMBR R11 R8 K158 0x782E002F, // 0032 JMPF R11 #0063 - 0x8C2C11A4, // 0033 GETMET R11 R8 K164 + 0x8C2C119F, // 0033 GETMET R11 R8 K159 0x7C2C0200, // 0034 CALL R11 1 0xB8320000, // 0035 GETNGBL R12 K0 - 0x88301941, // 0036 GETMBR R12 R12 K65 - 0x883019A5, // 0037 GETMBR R12 R12 K165 + 0x8830193F, // 0036 GETMBR R12 R12 K63 + 0x883019A0, // 0037 GETMBR R12 R12 K160 0x242C160C, // 0038 GT R11 R11 R12 0x782E0028, // 0039 JMPF R11 #0063 0x602C0012, // 003A GETGBL R11 G18 @@ -2864,9 +2859,9 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x602C0015, // 003D GETGBL R11 G21 0x5432002F, // 003E LDINT R12 48 0x7C2C0200, // 003F CALL R11 1 - 0x8C300BC1, // 0040 GETMET R12 R5 K193 + 0x8C300BBC, // 0040 GETMET R12 R5 K188 0x7C300200, // 0041 CALL R12 1 - 0x8C3401AA, // 0042 GETMET R13 R0 K170 + 0x8C3401A5, // 0042 GETMET R13 R0 K165 0x5C3C1600, // 0043 MOVE R15 R11 0x5C400400, // 0044 MOVE R16 R2 0x5C441800, // 0045 MOVE R17 R12 @@ -2876,7 +2871,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5C3C1600, // 0049 MOVE R15 R11 0x7C340400, // 004A CALL R13 2 0x60340010, // 004B GETGBL R13 G16 - 0x883811C2, // 004C GETMBR R14 R8 K194 + 0x883811BD, // 004C GETMBR R14 R8 K189 0x7C340200, // 004D CALL R13 1 0xA802000F, // 004E EXBLK 0 #005F 0x5C381A00, // 004F MOVE R14 R13 @@ -2885,7 +2880,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5442002F, // 0052 LDINT R16 48 0x7C3C0200, // 0053 CALL R15 1 0x5C2C1E00, // 0054 MOVE R11 R15 - 0x8C3C01AA, // 0055 GETMET R15 R0 K170 + 0x8C3C01A5, // 0055 GETMET R15 R0 K165 0x5C441600, // 0056 MOVE R17 R11 0x5C480400, // 0057 MOVE R18 R2 0x5C4C1C00, // 0058 MOVE R19 R14 @@ -2903,7 +2898,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x5432002F, // 0064 LDINT R12 48 0x7C2C0200, // 0065 CALL R11 1 0x5C241600, // 0066 MOVE R9 R11 - 0x8C2C01AA, // 0067 GETMET R11 R0 K170 + 0x8C2C01A5, // 0067 GETMET R11 R0 K165 0x5C341200, // 0068 MOVE R13 R9 0x5C380400, // 0069 MOVE R14 R2 0x5C3C1000, // 006A MOVE R15 R8 @@ -2916,8 +2911,8 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x78120009, // 0071 JMPF R4 #007C 0xB82E2E00, // 0072 GETNGBL R11 K23 0x60300018, // 0073 GETGBL R12 G24 - 0x583400C3, // 0074 LDCONST R13 K195 - 0x88380738, // 0075 GETMBR R14 R3 K56 + 0x583400BE, // 0074 LDCONST R13 K190 + 0x88380736, // 0075 GETMBR R14 R3 K54 0x5C3C0400, // 0076 MOVE R15 R2 0x5C400C00, // 0077 MOVE R16 R6 0x5C441400, // 0078 MOVE R17 R10 @@ -2934,7 +2929,7 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x542E002F, // 0083 LDINT R11 48 0x7C280200, // 0084 CALL R10 1 0x5C241400, // 0085 MOVE R9 R10 - 0x8C2801AB, // 0086 GETMET R10 R0 K171 + 0x8C2801A6, // 0086 GETMET R10 R0 K166 0x5C301200, // 0087 MOVE R12 R9 0x5C340400, // 0088 MOVE R13 R2 0x8838050F, // 0089 GETMBR R14 R2 K15 @@ -2946,8 +2941,8 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x782A0013, // 008F JMPF R10 #00A4 0xB82A2E00, // 0090 GETNGBL R10 K23 0x602C0018, // 0091 GETGBL R11 G24 - 0x583000C4, // 0092 LDCONST R12 K196 - 0x88340738, // 0093 GETMBR R13 R3 K56 + 0x583000BF, // 0092 LDCONST R12 K191 + 0x88340736, // 0093 GETMBR R13 R3 K54 0x60380008, // 0094 GETGBL R14 G8 0x5C3C0400, // 0095 MOVE R15 R2 0x7C380200, // 0096 CALL R14 1 @@ -2955,10 +2950,10 @@ be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */ 0x8840050F, // 0098 GETMBR R16 R2 K15 0x8844050F, // 0099 GETMBR R17 R2 K15 0xB84A0000, // 009A GETNGBL R18 K0 - 0x884825A0, // 009B GETMBR R18 R18 K160 + 0x8848259B, // 009B GETMBR R18 R18 K155 0x1C442212, // 009C EQ R17 R17 R18 0x78460001, // 009D JMPF R17 #00A0 - 0x584400A0, // 009E LDCONST R17 K160 + 0x5844009B, // 009E LDCONST R17 K155 0x70020000, // 009F JMP #00A1 0x5844001B, // 00A0 LDCONST R17 K27 0x7C2C0C00, // 00A1 CALL R11 6 @@ -2991,7 +2986,7 @@ be_local_closure(class_Matter_IM_send_status, /* name */ 0x880C0126, // 0000 GETMBR R3 R0 K38 0x8C0C0727, // 0001 GETMET R3 R3 K39 0xB8160000, // 0002 GETNGBL R5 K0 - 0x8C140BC5, // 0003 GETMET R5 R5 K197 + 0x8C140BC0, // 0003 GETMET R5 R5 K192 0x5C1C0200, // 0004 MOVE R7 R1 0x5C200400, // 0005 MOVE R8 R2 0x7C140600, // 0006 CALL R5 3 @@ -3020,18 +3015,18 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ be_str_weak(process_incoming), &be_const_str_solidified, ( &(const binstruction[124]) { /* code */ - 0x880803C6, // 0000 GETMBR R2 R1 K198 + 0x880803C1, // 0000 GETMBR R2 R1 K193 0x1C0C052B, // 0001 EQ R3 R2 K43 0x780E000D, // 0002 JMPF R3 #0011 - 0x880C018C, // 0003 GETMBR R3 R0 K140 - 0x8C0C07C7, // 0004 GETMET R3 R3 K199 - 0x88140398, // 0005 GETMBR R5 R1 K152 - 0x881803A8, // 0006 GETMBR R6 R1 K168 + 0x880C0187, // 0003 GETMBR R3 R0 K135 + 0x8C0C07C2, // 0004 GETMET R3 R3 K194 + 0x88140393, // 0005 GETMBR R5 R1 K147 + 0x881803A3, // 0006 GETMBR R6 R1 K163 0x7C0C0600, // 0007 CALL R3 3 0x4C100000, // 0008 LDNIL R4 0x20100604, // 0009 NE R4 R3 R4 0x78120004, // 000A JMPF R4 #0010 - 0x8C1001C8, // 000B GETMET R4 R0 K200 + 0x8C1001C3, // 000B GETMET R4 R0 K195 0x5C180200, // 000C MOVE R6 R1 0x5C1C0600, // 000D MOVE R7 R3 0x7C100600, // 000E CALL R4 3 @@ -3040,28 +3035,28 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x540E0007, // 0011 LDINT R3 8 0x1C0C0403, // 0012 EQ R3 R2 R3 0x780E000C, // 0013 JMPF R3 #0021 - 0x880C018E, // 0014 GETMBR R3 R0 K142 - 0x8C0C07C7, // 0015 GETMET R3 R3 K199 - 0x88140398, // 0016 GETMBR R5 R1 K152 - 0x881803A8, // 0017 GETMBR R6 R1 K168 + 0x880C0189, // 0014 GETMBR R3 R0 K137 + 0x8C0C07C2, // 0015 GETMET R3 R3 K194 + 0x88140393, // 0016 GETMBR R5 R1 K147 + 0x881803A3, // 0017 GETMBR R6 R1 K163 0x7C0C0600, // 0018 CALL R3 3 0x4C100000, // 0019 LDNIL R4 0x20100604, // 001A NE R4 R3 R4 0x78120004, // 001B JMPF R4 #0021 - 0x8C1001C9, // 001C GETMET R4 R0 K201 + 0x8C1001C4, // 001C GETMET R4 R0 K196 0x5C180200, // 001D MOVE R6 R1 0x5C1C0600, // 001E MOVE R7 R3 0x7C100600, // 001F CALL R4 3 0x80040800, // 0020 RET 1 R4 0xB80E0000, // 0021 GETNGBL R3 K0 - 0x880C0786, // 0022 GETMBR R3 R3 K134 - 0x8C0C07A7, // 0023 GETMET R3 R3 K167 - 0x88140398, // 0024 GETMBR R5 R1 K152 - 0x881803A8, // 0025 GETMBR R6 R1 K168 + 0x880C0781, // 0022 GETMBR R3 R3 K129 + 0x8C0C07A2, // 0023 GETMET R3 R3 K162 + 0x88140393, // 0024 GETMBR R5 R1 K147 + 0x881803A3, // 0025 GETMBR R6 R1 K163 0x7C0C0600, // 0026 CALL R3 3 - 0x1C10052D, // 0027 EQ R4 R2 K45 + 0x1C10052A, // 0027 EQ R4 R2 K42 0x78120005, // 0028 JMPF R4 #002F - 0x8C1001CA, // 0029 GETMET R4 R0 K202 + 0x8C1001C5, // 0029 GETMET R4 R0 K197 0x5C180200, // 002A MOVE R6 R1 0x5C1C0600, // 002B MOVE R7 R3 0x7C100600, // 002C CALL R4 3 @@ -3069,10 +3064,10 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x7002004A, // 002E JMP #007A 0x1C10052B, // 002F EQ R4 R2 K43 0x78120008, // 0030 JMPF R4 #003A - 0x8C1001CB, // 0031 GETMET R4 R0 K203 + 0x8C1001C6, // 0031 GETMET R4 R0 K198 0x5C180200, // 0032 MOVE R6 R1 0x7C100400, // 0033 CALL R4 2 - 0x8C1001A9, // 0034 GETMET R4 R0 K169 + 0x8C1001A4, // 0034 GETMET R4 R0 K164 0x5C180200, // 0035 MOVE R6 R1 0x5C1C0600, // 0036 MOVE R7 R3 0x7C100600, // 0037 CALL R4 3 @@ -3080,10 +3075,10 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x7002003F, // 0039 JMP #007A 0x1C100515, // 003A EQ R4 R2 K21 0x78120008, // 003B JMPF R4 #0045 - 0x8C1001CB, // 003C GETMET R4 R0 K203 + 0x8C1001C6, // 003C GETMET R4 R0 K198 0x5C180200, // 003D MOVE R6 R1 0x7C100400, // 003E CALL R4 2 - 0x8C1001CC, // 003F GETMET R4 R0 K204 + 0x8C1001C7, // 003F GETMET R4 R0 K199 0x5C180200, // 0040 MOVE R6 R1 0x5C1C0600, // 0041 MOVE R7 R3 0x7C100600, // 0042 CALL R4 3 @@ -3104,10 +3099,10 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120005, // 0051 LDINT R4 6 0x1C100404, // 0052 EQ R4 R2 R4 0x78120008, // 0053 JMPF R4 #005D - 0x8C1001CB, // 0054 GETMET R4 R0 K203 + 0x8C1001C6, // 0054 GETMET R4 R0 K198 0x5C180200, // 0055 MOVE R6 R1 0x7C100400, // 0056 CALL R4 2 - 0x8C1001CD, // 0057 GETMET R4 R0 K205 + 0x8C1001C8, // 0057 GETMET R4 R0 K200 0x5C180200, // 0058 MOVE R6 R1 0x5C1C0600, // 0059 MOVE R7 R3 0x7C100600, // 005A CALL R4 3 @@ -3122,7 +3117,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120007, // 0063 LDINT R4 8 0x1C100404, // 0064 EQ R4 R2 R4 0x78120005, // 0065 JMPF R4 #006C - 0x8C1001CE, // 0066 GETMET R4 R0 K206 + 0x8C1001C9, // 0066 GETMET R4 R0 K201 0x5C180200, // 0067 MOVE R6 R1 0x5C1C0600, // 0068 MOVE R7 R3 0x7C100600, // 0069 CALL R4 3 @@ -3137,7 +3132,7 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */ 0x54120009, // 0072 LDINT R4 10 0x1C100404, // 0073 EQ R4 R2 R4 0x78120004, // 0074 JMPF R4 #007A - 0x8C1001CF, // 0075 GETMET R4 R0 K207 + 0x8C1001CA, // 0075 GETMET R4 R0 K202 0x5C180200, // 0076 MOVE R6 R1 0x5C1C0600, // 0077 MOVE R7 R3 0x7C100600, // 0078 CALL R4 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h index 0da5fa4de..ff0a4ee78 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_IM_Subscription' ktab size: 50, total: 79 (saved 232 bytes) -static const bvalue be_ktab_class_Matter_IM_Subscription[50] = { +// compact class 'Matter_IM_Subscription' ktab size: 47, total: 79 (saved 256 bytes) +static const bvalue be_ktab_class_Matter_IM_Subscription[47] = { /* K0 */ be_nested_str_weak(update_event_no), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(event_generators), @@ -12,49 +12,46 @@ static const bvalue be_ktab_class_Matter_IM_Subscription[50] = { /* K4 */ be_nested_str_weak(event_no), /* K5 */ be_nested_str_weak(add), /* K6 */ be_const_int(1), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(path_list), - /* K9 */ be_nested_str_weak(endpoint), - /* K10 */ be_nested_str_weak(cluster), - /* K11 */ be_nested_str_weak(attribute), - /* K12 */ be_nested_str_weak(_add_attribute_unique_path), - /* K13 */ be_nested_str_weak(updates), - /* K14 */ be_nested_str_weak(clear), - /* K15 */ be_nested_str_weak(wait_status), - /* K16 */ be_nested_str_weak(subs_shop), - /* K17 */ be_nested_str_weak(subscription_id), - /* K18 */ be_nested_str_weak(session), - /* K19 */ be_nested_str_weak(min_interval_floor), - /* K20 */ be_nested_str_weak(min_interval), - /* K21 */ be_nested_str_weak(max_interval_ceiling), - /* K22 */ be_nested_str_weak(max_interval), - /* K23 */ be_nested_str_weak(fabric_filtered), - /* K24 */ be_nested_str_weak(im), - /* K25 */ be_nested_str_weak(device), - /* K26 */ be_nested_str_weak(attributes_requests), - /* K27 */ be_nested_str_weak(push), - /* K28 */ be_nested_str_weak(matter), - /* K29 */ be_nested_str_weak(Path), - /* K30 */ be_nested_str_weak(stop_iteration), - /* K31 */ be_nested_str_weak(IM), - /* K32 */ be_nested_str_weak(parse_event_filters_min_no), - /* K33 */ be_nested_str_weak(event_filters), - /* K34 */ be_nested_str_weak(clear_before_arm), - /* K35 */ be_nested_str_weak(is_keep_alive), - /* K36 */ be_nested_str_weak(restart_from), - /* K37 */ be_nested_str_weak(resize), - /* K38 */ be_nested_str_weak(tasmota), - /* K39 */ be_nested_str_weak(millis), - /* K40 */ be_nested_str_weak(expiration), - /* K41 */ be_nested_str_weak(MAX_INTERVAL_MARGIN), - /* K42 */ be_nested_str_weak(not_before), - /* K43 */ be_const_int(1), - /* K44 */ be_nested_str_weak(log), - /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i), - /* K46 */ be_const_int(3), - /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), - /* K48 */ be_const_int(3), - /* K49 */ be_nested_str_weak(remove_sub), + /* K7 */ be_nested_str_weak(path_list), + /* K8 */ be_nested_str_weak(endpoint), + /* K9 */ be_nested_str_weak(cluster), + /* K10 */ be_nested_str_weak(attribute), + /* K11 */ be_nested_str_weak(_add_attribute_unique_path), + /* K12 */ be_nested_str_weak(updates), + /* K13 */ be_nested_str_weak(clear), + /* K14 */ be_nested_str_weak(wait_status), + /* K15 */ be_nested_str_weak(subs_shop), + /* K16 */ be_nested_str_weak(subscription_id), + /* K17 */ be_nested_str_weak(session), + /* K18 */ be_nested_str_weak(min_interval_floor), + /* K19 */ be_nested_str_weak(min_interval), + /* K20 */ be_nested_str_weak(max_interval_ceiling), + /* K21 */ be_nested_str_weak(max_interval), + /* K22 */ be_nested_str_weak(fabric_filtered), + /* K23 */ be_nested_str_weak(im), + /* K24 */ be_nested_str_weak(device), + /* K25 */ be_nested_str_weak(attributes_requests), + /* K26 */ be_nested_str_weak(push), + /* K27 */ be_nested_str_weak(matter), + /* K28 */ be_nested_str_weak(Path), + /* K29 */ be_nested_str_weak(stop_iteration), + /* K30 */ be_nested_str_weak(IM), + /* K31 */ be_nested_str_weak(parse_event_filters_min_no), + /* K32 */ be_nested_str_weak(event_filters), + /* K33 */ be_nested_str_weak(clear_before_arm), + /* K34 */ be_nested_str_weak(is_keep_alive), + /* K35 */ be_nested_str_weak(restart_from), + /* K36 */ be_nested_str_weak(resize), + /* K37 */ be_nested_str_weak(tasmota), + /* K38 */ be_nested_str_weak(millis), + /* K39 */ be_nested_str_weak(expiration), + /* K40 */ be_nested_str_weak(MAX_INTERVAL_MARGIN), + /* K41 */ be_nested_str_weak(not_before), + /* K42 */ be_nested_str_weak(log), + /* K43 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i), + /* K44 */ be_const_int(3), + /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D), + /* K46 */ be_nested_str_weak(remove_sub), }; @@ -124,39 +121,39 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name * be_str_weak(attribute_updated_ctx), &be_const_str_solidified, ( &(const binstruction[38]) { /* code */ - 0x580C0007, // 0000 LDCONST R3 K7 + 0x580C0001, // 0000 LDCONST R3 K1 0x6010000C, // 0001 GETGBL R4 G12 - 0x88140108, // 0002 GETMBR R5 R0 K8 + 0x88140107, // 0002 GETMBR R5 R0 K7 0x7C100200, // 0003 CALL R4 1 0x14100604, // 0004 LT R4 R3 R4 0x7812001E, // 0005 JMPF R4 #0025 - 0x88100108, // 0006 GETMBR R4 R0 K8 + 0x88100107, // 0006 GETMBR R4 R0 K7 0x94100803, // 0007 GETIDX R4 R4 R3 - 0x88140909, // 0008 GETMBR R5 R4 K9 + 0x88140908, // 0008 GETMBR R5 R4 K8 0x4C180000, // 0009 LDNIL R6 0x1C140A06, // 000A EQ R5 R5 R6 0x74160003, // 000B JMPT R5 #0010 - 0x88140909, // 000C GETMBR R5 R4 K9 - 0x88180309, // 000D GETMBR R6 R1 K9 + 0x88140908, // 000C GETMBR R5 R4 K8 + 0x88180308, // 000D GETMBR R6 R1 K8 0x1C140A06, // 000E EQ R5 R5 R6 0x78160012, // 000F JMPF R5 #0023 - 0x8814090A, // 0010 GETMBR R5 R4 K10 + 0x88140909, // 0010 GETMBR R5 R4 K9 0x4C180000, // 0011 LDNIL R6 0x1C140A06, // 0012 EQ R5 R5 R6 0x74160003, // 0013 JMPT R5 #0018 - 0x8814090A, // 0014 GETMBR R5 R4 K10 - 0x8818030A, // 0015 GETMBR R6 R1 K10 + 0x88140909, // 0014 GETMBR R5 R4 K9 + 0x88180309, // 0015 GETMBR R6 R1 K9 0x1C140A06, // 0016 EQ R5 R5 R6 0x7816000A, // 0017 JMPF R5 #0023 - 0x8814090B, // 0018 GETMBR R5 R4 K11 + 0x8814090A, // 0018 GETMBR R5 R4 K10 0x4C180000, // 0019 LDNIL R6 0x1C140A06, // 001A EQ R5 R5 R6 0x74160003, // 001B JMPT R5 #0020 - 0x8814090B, // 001C GETMBR R5 R4 K11 - 0x8818030B, // 001D GETMBR R6 R1 K11 + 0x8814090A, // 001C GETMBR R5 R4 K10 + 0x8818030A, // 001D GETMBR R6 R1 K10 0x1C140A06, // 001E EQ R5 R5 R6 0x78160002, // 001F JMPF R5 #0023 - 0x8C14010C, // 0020 GETMET R5 R0 K12 + 0x8C14010B, // 0020 GETMET R5 R0 K11 0x5C1C0200, // 0021 MOVE R7 R1 0x7C140400, // 0022 CALL R5 2 0x000C0706, // 0023 ADD R3 R3 K6 @@ -185,11 +182,11 @@ be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */ be_str_weak(clear_before_arm), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x8C04030E, // 0001 GETMET R1 R1 K14 + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8C04030D, // 0001 GETMET R1 R1 K13 0x7C040200, // 0002 CALL R1 1 0x50040200, // 0003 LDBOOL R1 1 0 - 0x90021E01, // 0004 SETMBR R0 K15 R1 + 0x90021C01, // 0004 SETMBR R0 K14 R1 0x4C040000, // 0005 LDNIL R1 0x90020001, // 0006 SETMBR R0 K0 R1 0x80000000, // 0007 RET 0 @@ -216,10 +213,10 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[69]) { /* code */ - 0x90022001, // 0000 SETMBR R0 K16 R1 - 0x90022202, // 0001 SETMBR R0 K17 R2 - 0x90022403, // 0002 SETMBR R0 K18 R3 - 0x88140913, // 0003 GETMBR R5 R4 K19 + 0x90021E01, // 0000 SETMBR R0 K15 R1 + 0x90022002, // 0001 SETMBR R0 K16 R2 + 0x90022203, // 0002 SETMBR R0 K17 R3 + 0x88140912, // 0003 GETMBR R5 R4 K18 0x14180B01, // 0004 LT R6 R5 K1 0x781A0000, // 0005 JMPF R6 #0007 0x58140001, // 0006 LDCONST R5 K1 @@ -227,8 +224,8 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ 0x24180A06, // 0008 GT R6 R5 R6 0x781A0000, // 0009 JMPF R6 #000B 0x5416003B, // 000A LDINT R5 60 - 0x90022805, // 000B SETMBR R0 K20 R5 - 0x88180915, // 000C GETMBR R6 R4 K21 + 0x90022605, // 000B SETMBR R0 K19 R5 + 0x88180914, // 000C GETMBR R6 R4 K20 0x541E003B, // 000D LDINT R7 60 0x141C0C07, // 000E LT R7 R6 R7 0x781E0000, // 000F JMPF R7 #0011 @@ -238,52 +235,52 @@ be_local_closure(class_Matter_IM_Subscription_init, /* name */ 0x781E0000, // 0013 JMPF R7 #0015 0x541A0E0F, // 0014 LDINT R6 3600 0x541A003B, // 0015 LDINT R6 60 - 0x90022C06, // 0016 SETMBR R0 K22 R6 + 0x90022A06, // 0016 SETMBR R0 K21 R6 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x90021E07, // 0018 SETMBR R0 K15 R7 - 0x881C0917, // 0019 GETMBR R7 R4 K23 - 0x90022E07, // 001A SETMBR R0 K23 R7 - 0x881C0318, // 001B GETMBR R7 R1 K24 - 0x881C0F19, // 001C GETMBR R7 R7 K25 + 0x90021C07, // 0018 SETMBR R0 K14 R7 + 0x881C0916, // 0019 GETMBR R7 R4 K22 + 0x90022C07, // 001A SETMBR R0 K22 R7 + 0x881C0317, // 001B GETMBR R7 R1 K23 + 0x881C0F18, // 001C GETMBR R7 R7 K24 0x60200012, // 001D GETGBL R8 G18 0x7C200000, // 001E CALL R8 0 - 0x90021008, // 001F SETMBR R0 K8 R8 - 0x8820091A, // 0020 GETMBR R8 R4 K26 + 0x90020E08, // 001F SETMBR R0 K7 R8 + 0x88200919, // 0020 GETMBR R8 R4 K25 0x4C240000, // 0021 LDNIL R9 0x20201009, // 0022 NE R8 R8 R9 0x78220012, // 0023 JMPF R8 #0037 0x60200010, // 0024 GETGBL R8 G16 - 0x8824091A, // 0025 GETMBR R9 R4 K26 + 0x88240919, // 0025 GETMBR R9 R4 K25 0x7C200200, // 0026 CALL R8 1 0xA802000B, // 0027 EXBLK 0 #0034 0x5C241000, // 0028 MOVE R9 R8 0x7C240000, // 0029 CALL R9 0 - 0x88280108, // 002A GETMBR R10 R0 K8 - 0x8C28151B, // 002B GETMET R10 R10 K27 - 0xB8323800, // 002C GETNGBL R12 K28 - 0x8C30191D, // 002D GETMET R12 R12 K29 - 0x88381309, // 002E GETMBR R14 R9 K9 - 0x883C130A, // 002F GETMBR R15 R9 K10 - 0x8840130B, // 0030 GETMBR R16 R9 K11 + 0x88280107, // 002A GETMBR R10 R0 K7 + 0x8C28151A, // 002B GETMET R10 R10 K26 + 0xB8323600, // 002C GETNGBL R12 K27 + 0x8C30191C, // 002D GETMET R12 R12 K28 + 0x88381308, // 002E GETMBR R14 R9 K8 + 0x883C1309, // 002F GETMBR R15 R9 K9 + 0x8840130A, // 0030 GETMBR R16 R9 K10 0x7C300800, // 0031 CALL R12 4 0x7C280400, // 0032 CALL R10 2 0x7001FFF3, // 0033 JMP #0028 - 0x5820001E, // 0034 LDCONST R8 K30 + 0x5820001D, // 0034 LDCONST R8 K29 0xAC200200, // 0035 CATCH R8 1 0 0xB0080000, // 0036 RAISE 2 R0 R0 - 0xB8223800, // 0037 GETNGBL R8 K28 - 0x8820111F, // 0038 GETMBR R8 R8 K31 - 0x8C201120, // 0039 GETMET R8 R8 K32 - 0x88280921, // 003A GETMBR R10 R4 K33 + 0xB8223600, // 0037 GETNGBL R8 K27 + 0x8820111E, // 0038 GETMBR R8 R8 K30 + 0x8C20111F, // 0039 GETMET R8 R8 K31 + 0x88280920, // 003A GETMBR R10 R4 K32 0x4C2C0000, // 003B LDNIL R11 0x7C200600, // 003C CALL R8 3 0x60240012, // 003D GETGBL R9 G18 0x7C240000, // 003E CALL R9 0 - 0x90021A09, // 003F SETMBR R0 K13 R9 - 0x8C240122, // 0040 GETMET R9 R0 K34 + 0x90021809, // 003F SETMBR R0 K12 R9 + 0x8C240121, // 0040 GETMET R9 R0 K33 0x7C240200, // 0041 CALL R9 1 0x50240000, // 0042 LDBOOL R9 0 0 - 0x90024609, // 0043 SETMBR R0 K35 R9 + 0x90024409, // 0043 SETMBR R0 K34 R9 0x80000000, // 0044 RET 0 }) ) @@ -310,29 +307,29 @@ be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* n ( &(const binstruction[28]) { /* code */ 0x58080001, // 0000 LDCONST R2 K1 0x600C000C, // 0001 GETGBL R3 G12 - 0x8810010D, // 0002 GETMBR R4 R0 K13 + 0x8810010C, // 0002 GETMBR R4 R0 K12 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 0x780E0010, // 0005 JMPF R3 #0017 - 0x880C010D, // 0006 GETMBR R3 R0 K13 + 0x880C010C, // 0006 GETMBR R3 R0 K12 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100709, // 0008 GETMBR R4 R3 K9 - 0x88140309, // 0009 GETMBR R5 R1 K9 + 0x88100708, // 0008 GETMBR R4 R3 K8 + 0x88140308, // 0009 GETMBR R5 R1 K8 0x1C100805, // 000A EQ R4 R4 R5 0x78120008, // 000B JMPF R4 #0015 - 0x8810070A, // 000C GETMBR R4 R3 K10 - 0x8814030A, // 000D GETMBR R5 R1 K10 + 0x88100709, // 000C GETMBR R4 R3 K9 + 0x88140309, // 000D GETMBR R5 R1 K9 0x1C100805, // 000E EQ R4 R4 R5 0x78120004, // 000F JMPF R4 #0015 - 0x8810070B, // 0010 GETMBR R4 R3 K11 - 0x8814030B, // 0011 GETMBR R5 R1 K11 + 0x8810070A, // 0010 GETMBR R4 R3 K10 + 0x8814030A, // 0011 GETMBR R5 R1 K10 0x1C100805, // 0012 EQ R4 R4 R5 0x78120000, // 0013 JMPF R4 #0015 0x80000800, // 0014 RET 0 0x00080506, // 0015 ADD R2 R2 K6 0x7001FFE9, // 0016 JMP #0001 - 0x880C010D, // 0017 GETMBR R3 R0 K13 - 0x8C0C071B, // 0018 GETMET R3 R3 K27 + 0x880C010C, // 0017 GETMBR R3 R0 K12 + 0x8C0C071A, // 0018 GETMET R3 R3 K26 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 0x80000000, // 001B RET 0 @@ -362,7 +359,7 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* 0x6004000C, // 0000 GETGBL R1 G12 0x88080102, // 0001 GETMBR R2 R0 K2 0x7C040200, // 0002 CALL R1 1 - 0x1C040307, // 0003 EQ R1 R1 K7 + 0x1C040301, // 0003 EQ R1 R1 K1 0x78060002, // 0004 JMPF R1 #0008 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -373,22 +370,22 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* 0x1C040306, // 000B EQ R1 R1 K6 0x78060008, // 000C JMPF R1 #0016 0x88040102, // 000D GETMBR R1 R0 K2 - 0x94040307, // 000E GETIDX R1 R1 K7 - 0x8C040324, // 000F GETMET R1 R1 K36 + 0x94040301, // 000E GETIDX R1 R1 K1 + 0x8C040323, // 000F GETMET R1 R1 K35 0x880C0100, // 0010 GETMBR R3 R0 K0 0x7C040400, // 0011 CALL R1 2 0x88040102, // 0012 GETMBR R1 R0 K2 - 0x94040307, // 0013 GETIDX R1 R1 K7 + 0x94040301, // 0013 GETIDX R1 R1 K1 0x80040200, // 0014 RET 1 R1 0x70020016, // 0015 JMP #002D 0x60040012, // 0016 GETGBL R1 G18 0x7C040000, // 0017 CALL R1 0 - 0x8C080325, // 0018 GETMET R2 R1 K37 + 0x8C080324, // 0018 GETMET R2 R1 K36 0x6010000C, // 0019 GETGBL R4 G12 0x88140102, // 001A GETMBR R5 R0 K2 0x7C100200, // 001B CALL R4 1 0x7C080400, // 001C CALL R2 2 - 0x58080007, // 001D LDCONST R2 K7 + 0x58080001, // 001D LDCONST R2 K1 0x600C000C, // 001E GETGBL R3 G12 0x88100102, // 001F GETMBR R4 R0 K2 0x7C0C0200, // 0020 CALL R3 1 @@ -396,7 +393,7 @@ be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* 0x780E0009, // 0022 JMPF R3 #002D 0x880C0102, // 0023 GETMBR R3 R0 K2 0x940C0602, // 0024 GETIDX R3 R3 R2 - 0x8C0C0724, // 0025 GETMET R3 R3 K36 + 0x8C0C0723, // 0025 GETMET R3 R3 K35 0x88140100, // 0026 GETMBR R5 R0 K0 0x7C0C0400, // 0027 CALL R3 2 0x880C0102, // 0028 GETMBR R3 R0 K2 @@ -428,35 +425,35 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */ be_str_weak(re_arm), &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x8804010F, // 0000 GETMBR R1 R0 K15 + 0x8804010E, // 0000 GETMBR R1 R0 K14 0x74060000, // 0001 JMPT R1 #0003 0x80000200, // 0002 RET 0 0x50040000, // 0003 LDBOOL R1 0 0 - 0x90021E01, // 0004 SETMBR R0 K15 R1 - 0xB8064C00, // 0005 GETNGBL R1 K38 - 0x8C040327, // 0006 GETMET R1 R1 K39 + 0x90021C01, // 0004 SETMBR R0 K14 R1 + 0xB8064A00, // 0005 GETNGBL R1 K37 + 0x8C040326, // 0006 GETMET R1 R1 K38 0x7C040200, // 0007 CALL R1 1 - 0x88080116, // 0008 GETMBR R2 R0 K22 - 0x880C0129, // 0009 GETMBR R3 R0 K41 + 0x88080115, // 0008 GETMBR R2 R0 K21 + 0x880C0128, // 0009 GETMBR R3 R0 K40 0x04080403, // 000A SUB R2 R2 R3 0x540E03E7, // 000B LDINT R3 1000 0x08080403, // 000C MUL R2 R2 R3 0x00080202, // 000D ADD R2 R1 R2 - 0x90025002, // 000E SETMBR R0 K40 R2 - 0x88080114, // 000F GETMBR R2 R0 K20 + 0x90024E02, // 000E SETMBR R0 K39 R2 + 0x88080113, // 000F GETMBR R2 R0 K19 0x540E03E7, // 0010 LDINT R3 1000 0x08080403, // 0011 MUL R2 R2 R3 0x00080202, // 0012 ADD R2 R1 R2 - 0x0408052B, // 0013 SUB R2 R2 K43 - 0x90025402, // 0014 SETMBR R0 K42 R2 - 0x88080123, // 0015 GETMBR R2 R0 K35 + 0x04080506, // 0013 SUB R2 R2 K6 + 0x90025202, // 0014 SETMBR R0 K41 R2 + 0x88080122, // 0015 GETMBR R2 R0 K34 0x740A0006, // 0016 JMPT R2 #001E - 0xB80A5800, // 0017 GETNGBL R2 K44 + 0xB80A5400, // 0017 GETNGBL R2 K42 0x600C0018, // 0018 GETGBL R3 G24 - 0x5810002D, // 0019 LDCONST R4 K45 - 0x88140111, // 001A GETMBR R5 R0 K17 + 0x5810002B, // 0019 LDCONST R4 K43 + 0x88140110, // 001A GETMBR R5 R0 K16 0x7C0C0400, // 001B CALL R3 2 - 0x5810002E, // 001C LDCONST R4 K46 + 0x5810002C, // 001C LDCONST R4 K44 0x7C080400, // 001D CALL R2 2 0x80000000, // 001E RET 0 }) @@ -524,15 +521,15 @@ be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */ be_str_weak(remove_self), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xB8065800, // 0000 GETNGBL R1 K44 + 0xB8065400, // 0000 GETNGBL R1 K42 0x60080008, // 0001 GETGBL R2 G8 - 0x880C0111, // 0002 GETMBR R3 R0 K17 + 0x880C0110, // 0002 GETMBR R3 R0 K16 0x7C080200, // 0003 CALL R2 1 - 0x000A5E02, // 0004 ADD R2 K47 R2 - 0x580C0030, // 0005 LDCONST R3 K48 + 0x000A5A02, // 0004 ADD R2 K45 R2 + 0x580C002C, // 0005 LDCONST R3 K44 0x7C040400, // 0006 CALL R1 2 - 0x88040110, // 0007 GETMBR R1 R0 K16 - 0x8C040331, // 0008 GETMET R1 R1 K49 + 0x8804010F, // 0007 GETMBR R1 R0 K15 + 0x8C04032E, // 0008 GETMET R1 R1 K46 0x5C0C0000, // 0009 MOVE R3 R0 0x7C040400, // 000A CALL R1 2 0x80000000, // 000B RET 0 @@ -577,8 +574,8 @@ be_local_class(Matter_IM_Subscription, })), be_str_weak(Matter_IM_Subscription) ); -// compact class 'Matter_IM_Subscription_Shop' ktab size: 34, total: 51 (saved 136 bytes) -static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[34] = { +// compact class 'Matter_IM_Subscription_Shop' ktab size: 31, total: 51 (saved 160 bytes) +static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[31] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(subs), /* K2 */ be_nested_str_weak(wait_status), @@ -594,25 +591,22 @@ static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[34] = { /* K12 */ be_nested_str_weak(expiration), /* K13 */ be_nested_str_weak(send_subscribe_heartbeat), /* K14 */ be_nested_str_weak(re_arm), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(attribute_updated_ctx), - /* K17 */ be_nested_str_weak(remove), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(crypto), - /* K20 */ be_nested_str_weak(random), - /* K21 */ be_const_int(2), - /* K22 */ be_nested_str_weak(get), - /* K23 */ be_nested_str_weak(get_by_id), - /* K24 */ be_nested_str_weak(matter), - /* K25 */ be_nested_str_weak(IM_Subscription), - /* K26 */ be_nested_str_weak(push), - /* K27 */ be_nested_str_weak(event_published), - /* K28 */ be_nested_str_weak(session), - /* K29 */ be_const_int(1), - /* K30 */ be_nested_str_weak(_sessions), - /* K31 */ be_nested_str_weak(remove_by_session), - /* K32 */ be_nested_str_weak(stop_iteration), - /* K33 */ be_nested_str_weak(subscription_id), + /* K15 */ be_nested_str_weak(attribute_updated_ctx), + /* K16 */ be_nested_str_weak(remove), + /* K17 */ be_nested_str_weak(crypto), + /* K18 */ be_nested_str_weak(random), + /* K19 */ be_const_int(2), + /* K20 */ be_nested_str_weak(get), + /* K21 */ be_nested_str_weak(get_by_id), + /* K22 */ be_nested_str_weak(matter), + /* K23 */ be_nested_str_weak(IM_Subscription), + /* K24 */ be_nested_str_weak(push), + /* K25 */ be_nested_str_weak(event_published), + /* K26 */ be_nested_str_weak(session), + /* K27 */ be_nested_str_weak(_sessions), + /* K28 */ be_nested_str_weak(remove_by_session), + /* K29 */ be_nested_str_weak(stop_iteration), + /* K30 */ be_nested_str_weak(subscription_id), }; @@ -744,7 +738,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n be_str_weak(attribute_updated_ctx), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x580C000F, // 0000 LDCONST R3 K15 + 0x580C0000, // 0000 LDCONST R3 K0 0x6010000C, // 0001 GETGBL R4 G12 0x88140101, // 0002 GETMBR R5 R0 K1 0x7C100200, // 0003 CALL R4 1 @@ -752,7 +746,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n 0x78120007, // 0005 JMPF R4 #000E 0x88100101, // 0006 GETMBR R4 R0 K1 0x94100803, // 0007 GETIDX R4 R4 R3 - 0x8C100910, // 0008 GETMET R4 R4 K16 + 0x8C10090F, // 0008 GETMET R4 R4 K15 0x5C180200, // 0009 MOVE R6 R1 0x5C1C0400, // 000A MOVE R7 R2 0x7C100600, // 000B CALL R4 3 @@ -782,7 +776,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ be_str_weak(remove_sub), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x5808000F, // 0000 LDCONST R2 K15 + 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -793,11 +787,11 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */ 0x1C0C0601, // 0008 EQ R3 R3 R1 0x780E0004, // 0009 JMPF R3 #000F 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x8C0C0711, // 000B GETMET R3 R3 K17 + 0x8C0C0710, // 000B GETMET R3 R3 K16 0x5C140400, // 000C MOVE R5 R2 0x7C0C0400, // 000D CALL R3 2 0x70020000, // 000E JMP #0010 - 0x00080512, // 000F ADD R2 R2 K18 + 0x0008050B, // 000F ADD R2 R2 K11 0x7001FFEF, // 0010 JMP #0001 0x80000000, // 0011 RET 0 }) @@ -823,29 +817,29 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name * be_str_weak(new_subscription), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA4122600, // 0000 IMPORT R4 K19 - 0x8C140914, // 0001 GETMET R5 R4 K20 - 0x581C0015, // 0002 LDCONST R7 K21 + 0xA4122200, // 0000 IMPORT R4 K17 + 0x8C140912, // 0001 GETMET R5 R4 K18 + 0x581C0013, // 0002 LDCONST R7 K19 0x7C140400, // 0003 CALL R5 2 - 0x8C140B16, // 0004 GETMET R5 R5 K22 - 0x581C000F, // 0005 LDCONST R7 K15 - 0x58200015, // 0006 LDCONST R8 K21 + 0x8C140B14, // 0004 GETMET R5 R5 K20 + 0x581C0000, // 0005 LDCONST R7 K0 + 0x58200013, // 0006 LDCONST R8 K19 0x7C140600, // 0007 CALL R5 3 - 0x8C180117, // 0008 GETMET R6 R0 K23 + 0x8C180115, // 0008 GETMET R6 R0 K21 0x5C200A00, // 0009 MOVE R8 R5 0x7C180400, // 000A CALL R6 2 0x781A0008, // 000B JMPF R6 #0015 - 0x8C180914, // 000C GETMET R6 R4 K20 - 0x58200015, // 000D LDCONST R8 K21 + 0x8C180912, // 000C GETMET R6 R4 K18 + 0x58200013, // 000D LDCONST R8 K19 0x7C180400, // 000E CALL R6 2 - 0x8C180D16, // 000F GETMET R6 R6 K22 - 0x5820000F, // 0010 LDCONST R8 K15 - 0x58240015, // 0011 LDCONST R9 K21 + 0x8C180D14, // 000F GETMET R6 R6 K20 + 0x58200000, // 0010 LDCONST R8 K0 + 0x58240013, // 0011 LDCONST R9 K19 0x7C180600, // 0012 CALL R6 3 0x5C140C00, // 0013 MOVE R5 R6 0x7001FFF2, // 0014 JMP #0008 - 0xB81A3000, // 0015 GETNGBL R6 K24 - 0x8C180D19, // 0016 GETMET R6 R6 K25 + 0xB81A2C00, // 0015 GETNGBL R6 K22 + 0x8C180D17, // 0016 GETMET R6 R6 K23 0x5C200000, // 0017 MOVE R8 R0 0x5C240A00, // 0018 MOVE R9 R5 0x5C280200, // 0019 MOVE R10 R1 @@ -853,7 +847,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name * 0x5C300600, // 001B MOVE R12 R3 0x7C180C00, // 001C CALL R6 6 0x881C0101, // 001D GETMBR R7 R0 K1 - 0x8C1C0F1A, // 001E GETMET R7 R7 K26 + 0x8C1C0F18, // 001E GETMET R7 R7 K24 0x5C240C00, // 001F MOVE R9 R6 0x7C1C0400, // 0020 CALL R7 2 0x80040C00, // 0021 RET 1 R6 @@ -880,7 +874,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ be_str_weak(event_published), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x5808000F, // 0000 LDCONST R2 K15 + 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -888,7 +882,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */ 0x780E0006, // 0005 JMPF R3 #000D 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8C0C071B, // 0008 GETMET R3 R3 K27 + 0x8C0C0719, // 0008 GETMET R3 R3 K25 0x5C140200, // 0009 MOVE R5 R1 0x7C0C0400, // 000A CALL R3 2 0x0008050B, // 000B ADD R2 R2 K11 @@ -917,7 +911,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name be_str_weak(remove_by_session), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0x5808000F, // 0000 LDCONST R2 K15 + 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -925,15 +919,15 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name 0x780E000B, // 0005 JMPF R3 #0012 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x880C071C, // 0008 GETMBR R3 R3 K28 + 0x880C071A, // 0008 GETMBR R3 R3 K26 0x1C0C0601, // 0009 EQ R3 R3 R1 0x780E0004, // 000A JMPF R3 #0010 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x8C0C0711, // 000C GETMET R3 R3 K17 + 0x8C0C0710, // 000C GETMET R3 R3 K16 0x5C140400, // 000D MOVE R5 R2 0x7C0C0400, // 000E CALL R3 2 0x70020000, // 000F JMP #0011 - 0x0008051D, // 0010 ADD R2 R2 K29 + 0x0008050B, // 0010 ADD R2 R2 K11 0x7001FFEE, // 0011 JMP #0001 0x80000000, // 0012 RET 0 }) @@ -960,16 +954,16 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name * &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x880C031E, // 0001 GETMBR R3 R1 K30 + 0x880C031B, // 0001 GETMBR R3 R1 K27 0x7C080200, // 0002 CALL R2 1 0xA8020005, // 0003 EXBLK 0 #000A 0x5C0C0400, // 0004 MOVE R3 R2 0x7C0C0000, // 0005 CALL R3 0 - 0x8C10011F, // 0006 GETMET R4 R0 K31 + 0x8C10011C, // 0006 GETMET R4 R0 K28 0x5C180600, // 0007 MOVE R6 R3 0x7C100400, // 0008 CALL R4 2 0x7001FFF9, // 0009 JMP #0004 - 0x58080020, // 000A LDCONST R2 K32 + 0x5808001D, // 000A LDCONST R2 K29 0xAC080200, // 000B CATCH R2 1 0 0xB0080000, // 000C RAISE 2 R0 R0 0x80000000, // 000D RET 0 @@ -996,7 +990,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ be_str_weak(get_by_id), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x5808000F, // 0000 LDCONST R2 K15 + 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 0x7C0C0200, // 0003 CALL R3 1 @@ -1004,7 +998,7 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */ 0x780E0009, // 0005 JMPF R3 #0010 0x880C0101, // 0006 GETMBR R3 R0 K1 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x880C0721, // 0008 GETMBR R3 R3 K33 + 0x880C071E, // 0008 GETMBR R3 R3 K30 0x1C0C0601, // 0009 EQ R3 R3 R1 0x780E0002, // 000A JMPF R3 #000E 0x880C0101, // 000B GETMBR R3 R0 K1 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index 509115e99..90057f7d4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Frame; -// compact class 'Matter_Frame' ktab size: 80, total: 200 (saved 960 bytes) -static const bvalue be_ktab_class_Matter_Frame[80] = { +// compact class 'Matter_Frame' ktab size: 73, total: 200 (saved 1016 bytes) +static const bvalue be_ktab_class_Matter_Frame[73] = { /* K0 */ be_nested_str_weak(session), /* K1 */ be_nested_str_weak(get_node_id), /* K2 */ be_nested_str_weak(crypto), @@ -27,65 +27,58 @@ static const bvalue be_ktab_class_Matter_Frame[80] = { /* K18 */ be_const_int(0), /* K19 */ be_nested_str_weak(remote_ip), /* K20 */ be_nested_str_weak(remote_port), - /* K21 */ be_const_int(0), - /* K22 */ be_nested_str_weak(flag_s), - /* K23 */ be_nested_str_weak(flag_dsiz), - /* K24 */ be_const_int(3), - /* K25 */ be_nested_str_weak(local_session_id), - /* K26 */ be_const_int(2), - /* K27 */ be_nested_str_weak(sec_flags), - /* K28 */ be_nested_str_weak(sec_p), - /* K29 */ be_nested_str_weak(sec_c), - /* K30 */ be_nested_str_weak(sec_sesstype), - /* K31 */ be_nested_str_weak(source_node_id), - /* K32 */ be_nested_str_weak(dest_node_id_8), - /* K33 */ be_nested_str_weak(dest_node_id_2), - /* K34 */ be_nested_str_weak(x_flags), - /* K35 */ be_nested_str_weak(x_flag_v), - /* K36 */ be_nested_str_weak(x_flag_r), - /* K37 */ be_nested_str_weak(x_flag_a), - /* K38 */ be_nested_str_weak(x_flag_i), - /* K39 */ be_nested_str_weak(opcode), - /* K40 */ be_nested_str_weak(exchange_id), - /* K41 */ be_nested_str_weak(protocol_id), - /* K42 */ be_nested_str_weak(ack_message_counter), - /* K43 */ be_nested_str_weak(app_payload_idx), - /* K44 */ be_const_int(0), - /* K45 */ be_nested_str_weak(get), - /* K46 */ be_nested_str_weak(getbits), - /* K47 */ be_nested_str_weak(sec_mx), - /* K48 */ be_nested_str_weak(matter), - /* K49 */ be_nested_str_weak(Frame), - /* K50 */ be_nested_str_weak(decode_header), - /* K51 */ be_nested_str_weak(decode_payload), - /* K52 */ be_const_int(1), - /* K53 */ be_nested_str_weak(initiator_session_id), - /* K54 */ be_nested_str_weak(counter_snd_next), - /* K55 */ be_nested_str_weak(_counter_insecure_snd), - /* K56 */ be_nested_str_weak(next), - /* K57 */ be_nested_str_weak(get_opcode_name), - /* K58 */ be_nested_str_weak(0x_X2502X), - /* K59 */ be_nested_str_weak(log), - /* K60 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), - /* K61 */ be_const_int(3), - /* K62 */ be_nested_str_weak(get_i2r), - /* K63 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), - /* K64 */ be_nested_str_weak(get_i2r_privacy), - /* K65 */ be_const_int(2147483647), - /* K66 */ be_const_int(1), - /* K67 */ be_nested_str_weak(AES_CTR), - /* K68 */ be_nested_str_weak(decrypt), - /* K69 */ be_const_int(3), - /* K70 */ be_nested_str_weak(peer_node_id), - /* K71 */ be_nested_str_weak(decrypt1), - /* K72 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), - /* K73 */ be_const_class(be_class_Matter_Frame), - /* K74 */ be_nested_str_weak(_ip), - /* K75 */ be_nested_str_weak(_port), - /* K76 */ be_nested_str_weak(_exchange_id), - /* K77 */ be_nested_str_weak(x_flag_sx), - /* K78 */ be_const_int(2), - /* K79 */ be_nested_str_weak(vendor_id), + /* K21 */ be_nested_str_weak(flag_s), + /* K22 */ be_nested_str_weak(flag_dsiz), + /* K23 */ be_const_int(3), + /* K24 */ be_nested_str_weak(local_session_id), + /* K25 */ be_const_int(2), + /* K26 */ be_nested_str_weak(sec_flags), + /* K27 */ be_nested_str_weak(sec_p), + /* K28 */ be_nested_str_weak(sec_c), + /* K29 */ be_nested_str_weak(sec_sesstype), + /* K30 */ be_nested_str_weak(source_node_id), + /* K31 */ be_nested_str_weak(dest_node_id_8), + /* K32 */ be_nested_str_weak(dest_node_id_2), + /* K33 */ be_nested_str_weak(x_flags), + /* K34 */ be_nested_str_weak(x_flag_v), + /* K35 */ be_nested_str_weak(x_flag_r), + /* K36 */ be_nested_str_weak(x_flag_a), + /* K37 */ be_nested_str_weak(x_flag_i), + /* K38 */ be_nested_str_weak(opcode), + /* K39 */ be_nested_str_weak(exchange_id), + /* K40 */ be_nested_str_weak(protocol_id), + /* K41 */ be_nested_str_weak(ack_message_counter), + /* K42 */ be_nested_str_weak(app_payload_idx), + /* K43 */ be_nested_str_weak(get), + /* K44 */ be_nested_str_weak(getbits), + /* K45 */ be_nested_str_weak(sec_mx), + /* K46 */ be_nested_str_weak(matter), + /* K47 */ be_nested_str_weak(Frame), + /* K48 */ be_nested_str_weak(decode_header), + /* K49 */ be_nested_str_weak(decode_payload), + /* K50 */ be_nested_str_weak(initiator_session_id), + /* K51 */ be_nested_str_weak(counter_snd_next), + /* K52 */ be_nested_str_weak(_counter_insecure_snd), + /* K53 */ be_nested_str_weak(next), + /* K54 */ be_nested_str_weak(get_opcode_name), + /* K55 */ be_nested_str_weak(0x_X2502X), + /* K56 */ be_nested_str_weak(log), + /* K57 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s), + /* K58 */ be_nested_str_weak(get_i2r), + /* K59 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO), + /* K60 */ be_nested_str_weak(get_i2r_privacy), + /* K61 */ be_const_int(2147483647), + /* K62 */ be_nested_str_weak(AES_CTR), + /* K63 */ be_nested_str_weak(decrypt), + /* K64 */ be_nested_str_weak(peer_node_id), + /* K65 */ be_nested_str_weak(decrypt1), + /* K66 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC), + /* K67 */ be_const_class(be_class_Matter_Frame), + /* K68 */ be_nested_str_weak(_ip), + /* K69 */ be_nested_str_weak(_port), + /* K70 */ be_nested_str_weak(_exchange_id), + /* K71 */ be_nested_str_weak(x_flag_sx), + /* K72 */ be_nested_str_weak(vendor_id), }; @@ -263,7 +256,7 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ 0x5C180200, // 0007 MOVE R6 R1 0x7C140200, // 0008 CALL R5 1 0x70020000, // 0009 JMP #000B - 0x58140015, // 000A LDCONST R5 K21 + 0x58140012, // 000A LDCONST R5 K18 0x00100805, // 000B ADD R4 R4 R5 0x7C0C0200, // 000C CALL R3 1 0x5C080600, // 000D MOVE R2 R3 @@ -271,18 +264,18 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ 0x4C100000, // 000F LDNIL R4 0x1C0C0604, // 0010 EQ R3 R3 R4 0x780E000D, // 0011 JMPF R3 #0020 - 0x90021515, // 0012 SETMBR R0 K10 K21 - 0x880C0116, // 0013 GETMBR R3 R0 K22 + 0x90021512, // 0012 SETMBR R0 K10 K18 + 0x880C0115, // 0013 GETMBR R3 R0 K21 0x780E0003, // 0014 JMPF R3 #0019 0x880C010A, // 0015 GETMBR R3 R0 K10 0x54120003, // 0016 LDINT R4 4 0x300C0604, // 0017 OR R3 R3 R4 0x90021403, // 0018 SETMBR R0 K10 R3 - 0x880C0117, // 0019 GETMBR R3 R0 K23 + 0x880C0116, // 0019 GETMBR R3 R0 K22 0x780E0004, // 001A JMPF R3 #0020 0x880C010A, // 001B GETMBR R3 R0 K10 - 0x88100117, // 001C GETMBR R4 R0 K23 - 0x2C100918, // 001D AND R4 R4 K24 + 0x88100116, // 001C GETMBR R4 R0 K22 + 0x2C100917, // 001D AND R4 R4 K23 0x300C0604, // 001E OR R3 R3 R4 0x90021403, // 001F SETMBR R0 K10 R3 0x8C0C0509, // 0020 GETMET R3 R2 K9 @@ -290,126 +283,126 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */ 0x5818000B, // 0022 LDCONST R6 K11 0x7C0C0600, // 0023 CALL R3 3 0x8C0C0509, // 0024 GETMET R3 R2 K9 - 0x88140119, // 0025 GETMBR R5 R0 K25 + 0x88140118, // 0025 GETMBR R5 R0 K24 0x78160001, // 0026 JMPF R5 #0029 - 0x88140119, // 0027 GETMBR R5 R0 K25 + 0x88140118, // 0027 GETMBR R5 R0 K24 0x70020000, // 0028 JMP #002A - 0x58140015, // 0029 LDCONST R5 K21 - 0x5818001A, // 002A LDCONST R6 K26 + 0x58140012, // 0029 LDCONST R5 K18 + 0x58180019, // 002A LDCONST R6 K25 0x7C0C0600, // 002B CALL R3 3 - 0x880C011B, // 002C GETMBR R3 R0 K27 + 0x880C011A, // 002C GETMBR R3 R0 K26 0x4C100000, // 002D LDNIL R4 0x1C0C0604, // 002E EQ R3 R3 R4 0x780E0013, // 002F JMPF R3 #0044 - 0x90023715, // 0030 SETMBR R0 K27 K21 - 0x880C011C, // 0031 GETMBR R3 R0 K28 + 0x90023512, // 0030 SETMBR R0 K26 K18 + 0x880C011B, // 0031 GETMBR R3 R0 K27 0x780E0003, // 0032 JMPF R3 #0037 - 0x880C011B, // 0033 GETMBR R3 R0 K27 + 0x880C011A, // 0033 GETMBR R3 R0 K26 0x5412007F, // 0034 LDINT R4 128 0x300C0604, // 0035 OR R3 R3 R4 - 0x90023603, // 0036 SETMBR R0 K27 R3 - 0x880C011D, // 0037 GETMBR R3 R0 K29 + 0x90023403, // 0036 SETMBR R0 K26 R3 + 0x880C011C, // 0037 GETMBR R3 R0 K28 0x780E0003, // 0038 JMPF R3 #003D - 0x880C011B, // 0039 GETMBR R3 R0 K27 + 0x880C011A, // 0039 GETMBR R3 R0 K26 0x5412003F, // 003A LDINT R4 64 0x300C0604, // 003B OR R3 R3 R4 - 0x90023603, // 003C SETMBR R0 K27 R3 - 0x880C011E, // 003D GETMBR R3 R0 K30 + 0x90023403, // 003C SETMBR R0 K26 R3 + 0x880C011D, // 003D GETMBR R3 R0 K29 0x780E0004, // 003E JMPF R3 #0044 - 0x880C011B, // 003F GETMBR R3 R0 K27 - 0x8810011E, // 0040 GETMBR R4 R0 K30 - 0x2C100918, // 0041 AND R4 R4 K24 + 0x880C011A, // 003F GETMBR R3 R0 K26 + 0x8810011D, // 0040 GETMBR R4 R0 K29 + 0x2C100917, // 0041 AND R4 R4 K23 0x300C0604, // 0042 OR R3 R3 R4 - 0x90023603, // 0043 SETMBR R0 K27 R3 + 0x90023403, // 0043 SETMBR R0 K26 R3 0x8C0C0509, // 0044 GETMET R3 R2 K9 - 0x8814011B, // 0045 GETMBR R5 R0 K27 + 0x8814011A, // 0045 GETMBR R5 R0 K26 0x5818000B, // 0046 LDCONST R6 K11 0x7C0C0600, // 0047 CALL R3 3 0x8C0C0509, // 0048 GETMET R3 R2 K9 0x8814010C, // 0049 GETMBR R5 R0 K12 0x541A0003, // 004A LDINT R6 4 0x7C0C0600, // 004B CALL R3 3 - 0x880C0116, // 004C GETMBR R3 R0 K22 + 0x880C0115, // 004C GETMBR R3 R0 K21 0x780E0001, // 004D JMPF R3 #0050 - 0x880C011F, // 004E GETMBR R3 R0 K31 + 0x880C011E, // 004E GETMBR R3 R0 K30 0x400C0403, // 004F CONNECT R3 R2 R3 - 0x880C0117, // 0050 GETMBR R3 R0 K23 + 0x880C0116, // 0050 GETMBR R3 R0 K22 0x1C0C070B, // 0051 EQ R3 R3 K11 0x780E0001, // 0052 JMPF R3 #0055 - 0x880C0120, // 0053 GETMBR R3 R0 K32 + 0x880C011F, // 0053 GETMBR R3 R0 K31 0x400C0403, // 0054 CONNECT R3 R2 R3 - 0x880C0117, // 0055 GETMBR R3 R0 K23 - 0x1C0C071A, // 0056 EQ R3 R3 K26 + 0x880C0116, // 0055 GETMBR R3 R0 K22 + 0x1C0C0719, // 0056 EQ R3 R3 K25 0x780E0003, // 0057 JMPF R3 #005C 0x8C0C0509, // 0058 GETMET R3 R2 K9 - 0x88140121, // 0059 GETMBR R5 R0 K33 - 0x5818001A, // 005A LDCONST R6 K26 + 0x88140120, // 0059 GETMBR R5 R0 K32 + 0x58180019, // 005A LDCONST R6 K25 0x7C0C0600, // 005B CALL R3 3 0x600C000C, // 005C GETGBL R3 G12 0x5C100400, // 005D MOVE R4 R2 0x7C0C0200, // 005E CALL R3 1 0x90020803, // 005F SETMBR R0 K4 R3 - 0x880C0122, // 0060 GETMBR R3 R0 K34 + 0x880C0121, // 0060 GETMBR R3 R0 K33 0x4C100000, // 0061 LDNIL R4 0x1C0C0604, // 0062 EQ R3 R3 R4 0x780E0016, // 0063 JMPF R3 #007B - 0x90024515, // 0064 SETMBR R0 K34 K21 - 0x880C0123, // 0065 GETMBR R3 R0 K35 + 0x90024312, // 0064 SETMBR R0 K33 K18 + 0x880C0122, // 0065 GETMBR R3 R0 K34 0x780E0003, // 0066 JMPF R3 #006B - 0x880C0122, // 0067 GETMBR R3 R0 K34 + 0x880C0121, // 0067 GETMBR R3 R0 K33 0x5412000F, // 0068 LDINT R4 16 0x300C0604, // 0069 OR R3 R3 R4 - 0x90024403, // 006A SETMBR R0 K34 R3 - 0x880C0124, // 006B GETMBR R3 R0 K36 + 0x90024203, // 006A SETMBR R0 K33 R3 + 0x880C0123, // 006B GETMBR R3 R0 K35 0x780E0003, // 006C JMPF R3 #0071 - 0x880C0122, // 006D GETMBR R3 R0 K34 + 0x880C0121, // 006D GETMBR R3 R0 K33 0x54120003, // 006E LDINT R4 4 0x300C0604, // 006F OR R3 R3 R4 - 0x90024403, // 0070 SETMBR R0 K34 R3 - 0x880C0125, // 0071 GETMBR R3 R0 K37 + 0x90024203, // 0070 SETMBR R0 K33 R3 + 0x880C0124, // 0071 GETMBR R3 R0 K36 0x780E0002, // 0072 JMPF R3 #0076 - 0x880C0122, // 0073 GETMBR R3 R0 K34 - 0x300C071A, // 0074 OR R3 R3 K26 - 0x90024403, // 0075 SETMBR R0 K34 R3 - 0x880C0126, // 0076 GETMBR R3 R0 K38 + 0x880C0121, // 0073 GETMBR R3 R0 K33 + 0x300C0719, // 0074 OR R3 R3 K25 + 0x90024203, // 0075 SETMBR R0 K33 R3 + 0x880C0125, // 0076 GETMBR R3 R0 K37 0x780E0002, // 0077 JMPF R3 #007B - 0x880C0122, // 0078 GETMBR R3 R0 K34 + 0x880C0121, // 0078 GETMBR R3 R0 K33 0x300C070B, // 0079 OR R3 R3 K11 - 0x90024403, // 007A SETMBR R0 K34 R3 + 0x90024203, // 007A SETMBR R0 K33 R3 0x8C0C0509, // 007B GETMET R3 R2 K9 - 0x88140122, // 007C GETMBR R5 R0 K34 + 0x88140121, // 007C GETMBR R5 R0 K33 0x5818000B, // 007D LDCONST R6 K11 0x7C0C0600, // 007E CALL R3 3 0x8C0C0509, // 007F GETMET R3 R2 K9 - 0x88140127, // 0080 GETMBR R5 R0 K39 + 0x88140126, // 0080 GETMBR R5 R0 K38 0x5818000B, // 0081 LDCONST R6 K11 0x7C0C0600, // 0082 CALL R3 3 0x8C0C0509, // 0083 GETMET R3 R2 K9 - 0x88140128, // 0084 GETMBR R5 R0 K40 + 0x88140127, // 0084 GETMBR R5 R0 K39 0x4C180000, // 0085 LDNIL R6 0x20140A06, // 0086 NE R5 R5 R6 0x78160003, // 0087 JMPF R5 #008C - 0x88140128, // 0088 GETMBR R5 R0 K40 + 0x88140127, // 0088 GETMBR R5 R0 K39 0x541AFFFE, // 0089 LDINT R6 65535 0x2C140A06, // 008A AND R5 R5 R6 0x70020000, // 008B JMP #008D - 0x58140015, // 008C LDCONST R5 K21 - 0x5818001A, // 008D LDCONST R6 K26 + 0x58140012, // 008C LDCONST R5 K18 + 0x58180019, // 008D LDCONST R6 K25 0x7C0C0600, // 008E CALL R3 3 0x8C0C0509, // 008F GETMET R3 R2 K9 - 0x88140129, // 0090 GETMBR R5 R0 K41 - 0x5818001A, // 0091 LDCONST R6 K26 + 0x88140128, // 0090 GETMBR R5 R0 K40 + 0x58180019, // 0091 LDCONST R6 K25 0x7C0C0600, // 0092 CALL R3 3 - 0x880C0125, // 0093 GETMBR R3 R0 K37 + 0x880C0124, // 0093 GETMBR R3 R0 K36 0x780E0003, // 0094 JMPF R3 #0099 0x8C0C0509, // 0095 GETMET R3 R2 K9 - 0x8814012A, // 0096 GETMBR R5 R0 K42 + 0x88140129, // 0096 GETMBR R5 R0 K41 0x541A0003, // 0097 LDINT R6 4 0x7C0C0600, // 0098 CALL R3 3 0x600C000C, // 0099 GETGBL R3 G12 0x5C100400, // 009A MOVE R4 R2 0x7C0C0200, // 009B CALL R3 1 - 0x90025603, // 009C SETMBR R0 K43 R3 + 0x90025403, // 009C SETMBR R0 K42 R3 0x78060000, // 009D JMPF R1 #009F 0x400C0401, // 009E CONNECT R3 R2 R1 0x90020602, // 009F SETMBR R0 K3 R2 @@ -437,123 +430,123 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */ be_str_weak(decode_header), &be_const_str_solidified, ( &(const binstruction[121]) { /* code */ - 0x5804002C, // 0000 LDCONST R1 K44 + 0x58040012, // 0000 LDCONST R1 K18 0x88080103, // 0001 GETMBR R2 R0 K3 - 0x8C0C052D, // 0002 GETMET R3 R2 K45 - 0x5814002C, // 0003 LDCONST R5 K44 + 0x8C0C052B, // 0002 GETMET R3 R2 K43 + 0x58140012, // 0003 LDCONST R5 K18 0x5818000B, // 0004 LDCONST R6 K11 0x7C0C0600, // 0005 CALL R3 3 0x90021403, // 0006 SETMBR R0 K10 R3 0x880C010A, // 0007 GETMBR R3 R0 K10 0x541200F7, // 0008 LDINT R4 248 0x2C0C0604, // 0009 AND R3 R3 R4 - 0x200C072C, // 000A NE R3 R3 K44 + 0x200C0712, // 000A NE R3 R3 K18 0x780E0001, // 000B JMPF R3 #000E 0x500C0000, // 000C LDBOOL R3 0 0 0x80040600, // 000D RET 1 R3 - 0x8C0C052E, // 000E GETMET R3 R2 K46 - 0x5814001A, // 000F LDCONST R5 K26 + 0x8C0C052C, // 000E GETMET R3 R2 K44 + 0x58140019, // 000F LDCONST R5 K25 0x5818000B, // 0010 LDCONST R6 K11 0x7C0C0600, // 0011 CALL R3 3 - 0x90022C03, // 0012 SETMBR R0 K22 R3 - 0x8C0C052E, // 0013 GETMET R3 R2 K46 - 0x5814002C, // 0014 LDCONST R5 K44 - 0x5818001A, // 0015 LDCONST R6 K26 + 0x90022A03, // 0012 SETMBR R0 K21 R3 + 0x8C0C052C, // 0013 GETMET R3 R2 K44 + 0x58140012, // 0014 LDCONST R5 K18 + 0x58180019, // 0015 LDCONST R6 K25 0x7C0C0600, // 0016 CALL R3 3 - 0x90022E03, // 0017 SETMBR R0 K23 R3 - 0x880C0117, // 0018 GETMBR R3 R0 K23 - 0x1C0C0718, // 0019 EQ R3 R3 K24 + 0x90022C03, // 0017 SETMBR R0 K22 R3 + 0x880C0116, // 0018 GETMBR R3 R0 K22 + 0x1C0C0717, // 0019 EQ R3 R3 K23 0x780E0001, // 001A JMPF R3 #001D 0x500C0000, // 001B LDBOOL R3 0 0 0x80040600, // 001C RET 1 R3 - 0x8C0C052D, // 001D GETMET R3 R2 K45 - 0x58140018, // 001E LDCONST R5 K24 + 0x8C0C052B, // 001D GETMET R3 R2 K43 + 0x58140017, // 001E LDCONST R5 K23 0x5818000B, // 001F LDCONST R6 K11 0x7C0C0600, // 0020 CALL R3 3 - 0x90023603, // 0021 SETMBR R0 K27 R3 - 0x8C0C052E, // 0022 GETMET R3 R2 K46 + 0x90023403, // 0021 SETMBR R0 K26 R3 + 0x8C0C052C, // 0022 GETMET R3 R2 K44 0x54160007, // 0023 LDINT R5 8 - 0x08163005, // 0024 MUL R5 K24 R5 + 0x08162E05, // 0024 MUL R5 K23 R5 0x541A0006, // 0025 LDINT R6 7 0x00140A06, // 0026 ADD R5 R5 R6 0x5818000B, // 0027 LDCONST R6 K11 0x7C0C0600, // 0028 CALL R3 3 - 0x90023803, // 0029 SETMBR R0 K28 R3 - 0x8C0C052E, // 002A GETMET R3 R2 K46 + 0x90023603, // 0029 SETMBR R0 K27 R3 + 0x8C0C052C, // 002A GETMET R3 R2 K44 0x54160007, // 002B LDINT R5 8 - 0x08163005, // 002C MUL R5 K24 R5 + 0x08162E05, // 002C MUL R5 K23 R5 0x541A0005, // 002D LDINT R6 6 0x00140A06, // 002E ADD R5 R5 R6 0x5818000B, // 002F LDCONST R6 K11 0x7C0C0600, // 0030 CALL R3 3 - 0x90023A03, // 0031 SETMBR R0 K29 R3 - 0x8C0C052E, // 0032 GETMET R3 R2 K46 + 0x90023803, // 0031 SETMBR R0 K28 R3 + 0x8C0C052C, // 0032 GETMET R3 R2 K44 0x54160007, // 0033 LDINT R5 8 - 0x08163005, // 0034 MUL R5 K24 R5 + 0x08162E05, // 0034 MUL R5 K23 R5 0x541A0004, // 0035 LDINT R6 5 0x00140A06, // 0036 ADD R5 R5 R6 0x5818000B, // 0037 LDCONST R6 K11 0x7C0C0600, // 0038 CALL R3 3 - 0x90025E03, // 0039 SETMBR R0 K47 R3 - 0x8C0C052E, // 003A GETMET R3 R2 K46 + 0x90025A03, // 0039 SETMBR R0 K45 R3 + 0x8C0C052C, // 003A GETMET R3 R2 K44 0x54160007, // 003B LDINT R5 8 - 0x08163005, // 003C MUL R5 K24 R5 - 0x5818001A, // 003D LDCONST R6 K26 + 0x08162E05, // 003C MUL R5 K23 R5 + 0x58180019, // 003D LDCONST R6 K25 0x7C0C0600, // 003E CALL R3 3 - 0x90023C03, // 003F SETMBR R0 K30 R3 - 0x880C011E, // 0040 GETMBR R3 R0 K30 + 0x90023A03, // 003F SETMBR R0 K29 R3 + 0x880C011D, // 0040 GETMBR R3 R0 K29 0x240C070B, // 0041 GT R3 R3 K11 0x780E0001, // 0042 JMPF R3 #0045 0x500C0000, // 0043 LDBOOL R3 0 0 0x80040600, // 0044 RET 1 R3 - 0x8C0C052D, // 0045 GETMET R3 R2 K45 + 0x8C0C052B, // 0045 GETMET R3 R2 K43 0x5814000B, // 0046 LDCONST R5 K11 - 0x5818001A, // 0047 LDCONST R6 K26 + 0x58180019, // 0047 LDCONST R6 K25 0x7C0C0600, // 0048 CALL R3 3 - 0x90023203, // 0049 SETMBR R0 K25 R3 - 0x8C0C052D, // 004A GETMET R3 R2 K45 + 0x90023003, // 0049 SETMBR R0 K24 R3 + 0x8C0C052B, // 004A GETMET R3 R2 K43 0x54160003, // 004B LDINT R5 4 0x541A0003, // 004C LDINT R6 4 0x7C0C0600, // 004D CALL R3 3 0x90021803, // 004E SETMBR R0 K12 R3 0x540E0007, // 004F LDINT R3 8 0x00040203, // 0050 ADD R1 R1 R3 - 0x880C0116, // 0051 GETMBR R3 R0 K22 + 0x880C0115, // 0051 GETMBR R3 R0 K21 0x780E0006, // 0052 JMPF R3 #005A 0x540E0006, // 0053 LDINT R3 7 0x000C0203, // 0054 ADD R3 R1 R3 0x400C0203, // 0055 CONNECT R3 R1 R3 0x940C0403, // 0056 GETIDX R3 R2 R3 - 0x90023E03, // 0057 SETMBR R0 K31 R3 + 0x90023C03, // 0057 SETMBR R0 K30 R3 0x540E0007, // 0058 LDINT R3 8 0x00040203, // 0059 ADD R1 R1 R3 - 0x880C0117, // 005A GETMBR R3 R0 K23 + 0x880C0116, // 005A GETMBR R3 R0 K22 0x1C0C070B, // 005B EQ R3 R3 K11 0x780E0007, // 005C JMPF R3 #0065 0x540E0006, // 005D LDINT R3 7 0x000C0203, // 005E ADD R3 R1 R3 0x400C0203, // 005F CONNECT R3 R1 R3 0x940C0403, // 0060 GETIDX R3 R2 R3 - 0x90024003, // 0061 SETMBR R0 K32 R3 + 0x90023E03, // 0061 SETMBR R0 K31 R3 0x540E0007, // 0062 LDINT R3 8 0x00040203, // 0063 ADD R1 R1 R3 0x70020008, // 0064 JMP #006E - 0x880C0117, // 0065 GETMBR R3 R0 K23 - 0x1C0C071A, // 0066 EQ R3 R3 K26 + 0x880C0116, // 0065 GETMBR R3 R0 K22 + 0x1C0C0719, // 0066 EQ R3 R3 K25 0x780E0005, // 0067 JMPF R3 #006E - 0x8C0C052D, // 0068 GETMET R3 R2 K45 + 0x8C0C052B, // 0068 GETMET R3 R2 K43 0x5C140200, // 0069 MOVE R5 R1 - 0x5818001A, // 006A LDCONST R6 K26 + 0x58180019, // 006A LDCONST R6 K25 0x7C0C0600, // 006B CALL R3 3 - 0x90024203, // 006C SETMBR R0 K33 R3 - 0x0004031A, // 006D ADD R1 R1 K26 - 0x880C012F, // 006E GETMBR R3 R0 K47 + 0x90024003, // 006C SETMBR R0 K32 R3 + 0x00040319, // 006D ADD R1 R1 K25 + 0x880C012D, // 006E GETMBR R3 R0 K45 0x780E0005, // 006F JMPF R3 #0076 - 0x8C0C052D, // 0070 GETMET R3 R2 K45 + 0x8C0C052B, // 0070 GETMET R3 R2 K43 0x5C140200, // 0071 MOVE R5 R1 - 0x5818001A, // 0072 LDCONST R6 K26 + 0x58180019, // 0072 LDCONST R6 K25 0x7C0C0600, // 0073 CALL R3 3 - 0x0010071A, // 0074 ADD R4 R3 K26 + 0x00100719, // 0074 ADD R4 R3 K25 0x00040204, // 0075 ADD R1 R1 R4 0x90020801, // 0076 SETMBR R0 K4 R1 0x500C0200, // 0077 LDBOOL R3 1 0 @@ -582,14 +575,14 @@ be_local_closure(class_Matter_Frame_debug, /* name */ &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x80000400, // 0000 RET 0 - 0xB80A6000, // 0001 GETNGBL R2 K48 - 0x8C080531, // 0002 GETMET R2 R2 K49 + 0xB80A5C00, // 0001 GETNGBL R2 K46 + 0x8C08052F, // 0002 GETMET R2 R2 K47 0x88100106, // 0003 GETMBR R4 R0 K6 0x5C140200, // 0004 MOVE R5 R1 0x7C080600, // 0005 CALL R2 3 - 0x8C0C0532, // 0006 GETMET R3 R2 K50 + 0x8C0C0530, // 0006 GETMET R3 R2 K48 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0533, // 0008 GETMET R3 R2 K51 + 0x8C0C0531, // 0008 GETMET R3 R2 K49 0x7C0C0200, // 0009 CALL R3 1 }) ) @@ -627,81 +620,81 @@ be_local_closure(class_Matter_Frame_build_response, /* name */ 0x900E2604, // 000A SETMBR R3 K19 R4 0x88100114, // 000B GETMBR R4 R0 K20 0x900E2804, // 000C SETMBR R3 K20 R4 - 0x88100116, // 000D GETMBR R4 R0 K22 + 0x88100115, // 000D GETMBR R4 R0 K21 0x78120003, // 000E JMPF R4 #0013 - 0x900E2F34, // 000F SETMBR R3 K23 K52 - 0x8810011F, // 0010 GETMBR R4 R0 K31 - 0x900E4004, // 0011 SETMBR R3 K32 R4 + 0x900E2D0B, // 000F SETMBR R3 K22 K11 + 0x8810011E, // 0010 GETMBR R4 R0 K30 + 0x900E3E04, // 0011 SETMBR R3 K31 R4 0x70020000, // 0012 JMP #0014 - 0x900E2F15, // 0013 SETMBR R3 K23 K21 + 0x900E2D12, // 0013 SETMBR R3 K22 K18 0x88100100, // 0014 GETMBR R4 R0 K0 0x900E0004, // 0015 SETMBR R3 K0 R4 - 0x88100119, // 0016 GETMBR R4 R0 K25 - 0x20100915, // 0017 NE R4 R4 K21 + 0x88100118, // 0016 GETMBR R4 R0 K24 + 0x20100912, // 0017 NE R4 R4 K18 0x7812000D, // 0018 JMPF R4 #0027 0x88100100, // 0019 GETMBR R4 R0 K0 0x7812000B, // 001A JMPF R4 #0027 0x88100100, // 001B GETMBR R4 R0 K0 - 0x88100935, // 001C GETMBR R4 R4 K53 - 0x20100915, // 001D NE R4 R4 K21 + 0x88100932, // 001C GETMBR R4 R4 K50 + 0x20100912, // 001D NE R4 R4 K18 0x78120007, // 001E JMPF R4 #0027 0x88100100, // 001F GETMBR R4 R0 K0 - 0x8C100936, // 0020 GETMET R4 R4 K54 + 0x8C100933, // 0020 GETMET R4 R4 K51 0x7C100200, // 0021 CALL R4 1 0x900E1804, // 0022 SETMBR R3 K12 R4 0x88100100, // 0023 GETMBR R4 R0 K0 - 0x88100935, // 0024 GETMBR R4 R4 K53 - 0x900E3204, // 0025 SETMBR R3 K25 R4 + 0x88100932, // 0024 GETMBR R4 R4 K50 + 0x900E3004, // 0025 SETMBR R3 K24 R4 0x70020005, // 0026 JMP #002D 0x88100100, // 0027 GETMBR R4 R0 K0 - 0x88100937, // 0028 GETMBR R4 R4 K55 - 0x8C100938, // 0029 GETMET R4 R4 K56 + 0x88100934, // 0028 GETMBR R4 R4 K52 + 0x8C100935, // 0029 GETMET R4 R4 K53 0x7C100200, // 002A CALL R4 1 0x900E1804, // 002B SETMBR R3 K12 R4 - 0x900E3315, // 002C SETMBR R3 K25 K21 - 0x88100126, // 002D GETMBR R4 R0 K38 + 0x900E3112, // 002C SETMBR R3 K24 K18 + 0x88100125, // 002D GETMBR R4 R0 K37 0x78120001, // 002E JMPF R4 #0031 - 0x58100015, // 002F LDCONST R4 K21 + 0x58100012, // 002F LDCONST R4 K18 0x70020000, // 0030 JMP #0032 - 0x58100034, // 0031 LDCONST R4 K52 - 0x900E4C04, // 0032 SETMBR R3 K38 R4 - 0x900E4E01, // 0033 SETMBR R3 K39 R1 - 0x88100128, // 0034 GETMBR R4 R0 K40 - 0x900E5004, // 0035 SETMBR R3 K40 R4 - 0x88100129, // 0036 GETMBR R4 R0 K41 - 0x900E5204, // 0037 SETMBR R3 K41 R4 - 0x88100124, // 0038 GETMBR R4 R0 K36 + 0x5810000B, // 0031 LDCONST R4 K11 + 0x900E4A04, // 0032 SETMBR R3 K37 R4 + 0x900E4C01, // 0033 SETMBR R3 K38 R1 + 0x88100127, // 0034 GETMBR R4 R0 K39 + 0x900E4E04, // 0035 SETMBR R3 K39 R4 + 0x88100128, // 0036 GETMBR R4 R0 K40 + 0x900E5004, // 0037 SETMBR R3 K40 R4 + 0x88100123, // 0038 GETMBR R4 R0 K35 0x78120002, // 0039 JMPF R4 #003D - 0x900E4B34, // 003A SETMBR R3 K37 K52 + 0x900E490B, // 003A SETMBR R3 K36 K11 0x8810010C, // 003B GETMBR R4 R0 K12 - 0x900E5404, // 003C SETMBR R3 K42 R4 + 0x900E5204, // 003C SETMBR R3 K41 R4 0x780A0001, // 003D JMPF R2 #0040 - 0x58100034, // 003E LDCONST R4 K52 + 0x5810000B, // 003E LDCONST R4 K11 0x70020000, // 003F JMP #0041 - 0x58100015, // 0040 LDCONST R4 K21 - 0x900E4804, // 0041 SETMBR R3 K36 R4 - 0x88100719, // 0042 GETMBR R4 R3 K25 - 0x1C100915, // 0043 EQ R4 R4 K21 + 0x58100012, // 0040 LDCONST R4 K18 + 0x900E4604, // 0041 SETMBR R3 K35 R4 + 0x88100718, // 0042 GETMBR R4 R3 K24 + 0x1C100912, // 0043 EQ R4 R4 K18 0x78120013, // 0044 JMPF R4 #0059 - 0xB8126000, // 0045 GETNGBL R4 K48 - 0x8C100939, // 0046 GETMET R4 R4 K57 - 0x88180727, // 0047 GETMBR R6 R3 K39 + 0xB8125C00, // 0045 GETNGBL R4 K46 + 0x8C100936, // 0046 GETMET R4 R4 K54 + 0x88180726, // 0047 GETMBR R6 R3 K38 0x7C100400, // 0048 CALL R4 2 0x5C140800, // 0049 MOVE R5 R4 0x74160004, // 004A JMPT R5 #0050 0x60140018, // 004B GETGBL R5 G24 - 0x5818003A, // 004C LDCONST R6 K58 - 0x881C0727, // 004D GETMBR R7 R3 K39 + 0x58180037, // 004C LDCONST R6 K55 + 0x881C0726, // 004D GETMBR R7 R3 K38 0x7C140400, // 004E CALL R5 2 0x5C100A00, // 004F MOVE R4 R5 - 0xB8167600, // 0050 GETNGBL R5 K59 + 0xB8167000, // 0050 GETNGBL R5 K56 0x60180018, // 0051 GETGBL R6 G24 - 0x581C003C, // 0052 LDCONST R7 K60 + 0x581C0039, // 0052 LDCONST R7 K57 0x88200700, // 0053 GETMBR R8 R3 K0 - 0x88201119, // 0054 GETMBR R8 R8 K25 + 0x88201118, // 0054 GETMBR R8 R8 K24 0x5C240800, // 0055 MOVE R9 R4 0x7C180600, // 0056 CALL R6 3 - 0x581C003D, // 0057 LDCONST R7 K61 + 0x581C0017, // 0057 LDCONST R7 K23 0x7C140400, // 0058 CALL R5 2 0x80040600, // 0059 RET 1 R3 }) @@ -732,23 +725,23 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x880C0103, // 0002 GETMBR R3 R0 K3 0x88100104, // 0003 GETMBR R4 R0 K4 0x5416000F, // 0004 LDINT R5 16 - 0x8C18053E, // 0005 GETMET R6 R2 K62 + 0x8C18053A, // 0005 GETMET R6 R2 K58 0x7C180200, // 0006 CALL R6 1 - 0x881C011C, // 0007 GETMBR R7 R0 K28 + 0x881C011B, // 0007 GETMBR R7 R0 K27 0x781E002B, // 0008 JMPF R7 #0035 - 0xB81E7600, // 0009 GETNGBL R7 K59 - 0x5820003F, // 000A LDCONST R8 K63 - 0x5824001A, // 000B LDCONST R9 K26 + 0xB81E7000, // 0009 GETNGBL R7 K56 + 0x5820003B, // 000A LDCONST R8 K59 + 0x58240019, // 000B LDCONST R9 K25 0x7C1C0400, // 000C CALL R7 2 - 0x8C1C0540, // 000D GETMET R7 R2 K64 + 0x8C1C053C, // 000D GETMET R7 R2 K60 0x7C1C0200, // 000E CALL R7 1 0x5421FFEF, // 000F LDINT R8 -16 - 0x40201141, // 0010 CONNECT R8 R8 K65 + 0x4020113D, // 0010 CONNECT R8 R8 K61 0x94200608, // 0011 GETIDX R8 R3 R8 0x60240015, // 0012 GETGBL R9 G21 0x7C240000, // 0013 CALL R9 0 0x8C241309, // 0014 GETMET R9 R9 K9 - 0x882C0119, // 0015 GETMBR R11 R0 K25 + 0x882C0118, // 0015 GETMBR R11 R0 K24 0x5431FFFD, // 0016 LDINT R12 -2 0x7C240600, // 0017 CALL R9 3 0x542A0004, // 0018 LDINT R10 5 @@ -758,25 +751,25 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x0024120A, // 001C ADD R9 R9 R10 0x542A0003, // 001D LDINT R10 4 0x882C0104, // 001E GETMBR R11 R0 K4 - 0x042C1742, // 001F SUB R11 R11 K66 + 0x042C170B, // 001F SUB R11 R11 K11 0x4028140B, // 0020 CONNECT R10 R10 R11 0x882C0103, // 0021 GETMBR R11 R0 K3 0x9428160A, // 0022 GETIDX R10 R11 R10 - 0x8C300343, // 0023 GETMET R12 R1 K67 + 0x8C30033E, // 0023 GETMET R12 R1 K62 0x5C380E00, // 0024 MOVE R14 R7 0x7C300400, // 0025 CALL R12 2 - 0x8C301944, // 0026 GETMET R12 R12 K68 + 0x8C30193F, // 0026 GETMET R12 R12 K63 0x5C381400, // 0027 MOVE R14 R10 0x5C3C1200, // 0028 MOVE R15 R9 - 0x5840001A, // 0029 LDCONST R16 K26 + 0x58400019, // 0029 LDCONST R16 K25 0x7C300800, // 002A CALL R12 4 0x5C2C1800, // 002B MOVE R11 R12 - 0x40322B45, // 002C CONNECT R12 K21 K69 + 0x40322517, // 002C CONNECT R12 K18 K23 0x88340103, // 002D GETMBR R13 R0 K3 0x94301A0C, // 002E GETIDX R12 R13 R12 0x0030180B, // 002F ADD R12 R12 R11 0x88340104, // 0030 GETMBR R13 R0 K4 - 0x40341B41, // 0031 CONNECT R13 R13 K65 + 0x40341B3D, // 0031 CONNECT R13 R13 K61 0x9434140D, // 0032 GETIDX R13 R10 R13 0x0030180D, // 0033 ADD R12 R12 R13 0x9002060C, // 0034 SETMBR R0 K3 R12 @@ -786,34 +779,34 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x7C200200, // 0038 CALL R8 1 0x8C200F09, // 0039 GETMET R8 R7 K9 0x8828010A, // 003A GETMBR R10 R0 K10 - 0x582C0042, // 003B LDCONST R11 K66 + 0x582C000B, // 003B LDCONST R11 K11 0x7C200600, // 003C CALL R8 3 0x8C200F09, // 003D GETMET R8 R7 K9 0x8828010C, // 003E GETMBR R10 R0 K12 0x542E0003, // 003F LDINT R11 4 0x7C200600, // 0040 CALL R8 3 - 0x8820011F, // 0041 GETMBR R8 R0 K31 + 0x8820011E, // 0041 GETMBR R8 R0 K30 0x78220002, // 0042 JMPF R8 #0046 - 0x8820011F, // 0043 GETMBR R8 R0 K31 + 0x8820011E, // 0043 GETMBR R8 R0 K30 0x40200E08, // 0044 CONNECT R8 R7 R8 0x70020006, // 0045 JMP #004D - 0x88200546, // 0046 GETMBR R8 R2 K70 + 0x88200540, // 0046 GETMBR R8 R2 K64 0x78220001, // 0047 JMPF R8 #004A - 0x88200546, // 0048 GETMBR R8 R2 K70 + 0x88200540, // 0048 GETMBR R8 R2 K64 0x40200E08, // 0049 CONNECT R8 R7 R8 0x8C200F0F, // 004A GETMET R8 R7 K15 0x542A000C, // 004B LDINT R10 13 0x7C200400, // 004C CALL R8 2 0x88200310, // 004D GETMBR R8 R1 K16 - 0x8C201147, // 004E GETMET R8 R8 K71 + 0x8C201141, // 004E GETMET R8 R8 K65 0x5C280C00, // 004F MOVE R10 R6 0x5C2C0E00, // 0050 MOVE R11 R7 - 0x58300015, // 0051 LDCONST R12 K21 + 0x58300012, // 0051 LDCONST R12 K18 0x6034000C, // 0052 GETGBL R13 G12 0x5C380E00, // 0053 MOVE R14 R7 0x7C340200, // 0054 CALL R13 1 0x5C380600, // 0055 MOVE R14 R3 - 0x583C0015, // 0056 LDCONST R15 K21 + 0x583C0012, // 0056 LDCONST R15 K18 0x5C400800, // 0057 MOVE R16 R4 0x5C440600, // 0058 MOVE R17 R3 0x5C480800, // 0059 MOVE R18 R4 @@ -837,9 +830,9 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */ 0x042C1605, // 006B SUB R11 R11 R5 0x7C240400, // 006C CALL R9 2 0x70020003, // 006D JMP #0072 - 0xB8267600, // 006E GETNGBL R9 K59 - 0x58280048, // 006F LDCONST R10 K72 - 0x582C0045, // 0070 LDCONST R11 K69 + 0xB8267000, // 006E GETNGBL R9 K56 + 0x58280042, // 006F LDCONST R10 K66 + 0x582C0017, // 0070 LDCONST R11 K23 0x7C240400, // 0071 CALL R9 2 0x80041000, // 0072 RET 1 R8 }) @@ -874,41 +867,41 @@ be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */ 0x900A2603, // 0006 SETMBR R2 K19 R3 0x880C0114, // 0007 GETMBR R3 R0 K20 0x900A2803, // 0008 SETMBR R2 K20 R3 - 0x880C0116, // 0009 GETMBR R3 R0 K22 + 0x880C0115, // 0009 GETMBR R3 R0 K21 0x780E0003, // 000A JMPF R3 #000F - 0x900A2F34, // 000B SETMBR R2 K23 K52 - 0x880C011F, // 000C GETMBR R3 R0 K31 - 0x900A4003, // 000D SETMBR R2 K32 R3 + 0x900A2D0B, // 000B SETMBR R2 K22 K11 + 0x880C011E, // 000C GETMBR R3 R0 K30 + 0x900A3E03, // 000D SETMBR R2 K31 R3 0x70020000, // 000E JMP #0010 - 0x900A2F15, // 000F SETMBR R2 K23 K21 + 0x900A2D12, // 000F SETMBR R2 K22 K18 0x880C0100, // 0010 GETMBR R3 R0 K0 0x900A0003, // 0011 SETMBR R2 K0 R3 0x880C0100, // 0012 GETMBR R3 R0 K0 - 0x8C0C0736, // 0013 GETMET R3 R3 K54 + 0x8C0C0733, // 0013 GETMET R3 R3 K51 0x7C0C0200, // 0014 CALL R3 1 0x900A1803, // 0015 SETMBR R2 K12 R3 0x880C0100, // 0016 GETMBR R3 R0 K0 - 0x880C0735, // 0017 GETMBR R3 R3 K53 - 0x900A3203, // 0018 SETMBR R2 K25 R3 - 0x880C0126, // 0019 GETMBR R3 R0 K38 + 0x880C0732, // 0017 GETMBR R3 R3 K50 + 0x900A3003, // 0018 SETMBR R2 K24 R3 + 0x880C0125, // 0019 GETMBR R3 R0 K37 0x780E0001, // 001A JMPF R3 #001D - 0x580C0015, // 001B LDCONST R3 K21 + 0x580C0012, // 001B LDCONST R3 K18 0x70020000, // 001C JMP #001E - 0x580C0034, // 001D LDCONST R3 K52 - 0x900A4C03, // 001E SETMBR R2 K38 R3 + 0x580C000B, // 001D LDCONST R3 K11 + 0x900A4A03, // 001E SETMBR R2 K37 R3 0x540E000F, // 001F LDINT R3 16 - 0x900A4E03, // 0020 SETMBR R2 K39 R3 - 0x880C0128, // 0021 GETMBR R3 R0 K40 - 0x900A5003, // 0022 SETMBR R2 K40 R3 - 0x900A5315, // 0023 SETMBR R2 K41 K21 - 0x900A4B34, // 0024 SETMBR R2 K37 K52 + 0x900A4C03, // 0020 SETMBR R2 K38 R3 + 0x880C0127, // 0021 GETMBR R3 R0 K39 + 0x900A4E03, // 0022 SETMBR R2 K39 R3 + 0x900A5112, // 0023 SETMBR R2 K40 K18 + 0x900A490B, // 0024 SETMBR R2 K36 K11 0x880C010C, // 0025 GETMBR R3 R0 K12 - 0x900A5403, // 0026 SETMBR R2 K42 R3 + 0x900A5203, // 0026 SETMBR R2 K41 R3 0x78060001, // 0027 JMPF R1 #002A - 0x580C0034, // 0028 LDCONST R3 K52 + 0x580C000B, // 0028 LDCONST R3 K11 0x70020000, // 0029 JMP #002B - 0x580C0015, // 002A LDCONST R3 K21 - 0x900A4803, // 002B SETMBR R2 K36 R3 + 0x580C0012, // 002A LDCONST R3 K18 + 0x900A4603, // 002B SETMBR R2 K35 R3 0x80040400, // 002C RET 1 R2 }) ) @@ -933,51 +926,51 @@ be_local_closure(class_Matter_Frame_initiate_response, /* name */ be_str_weak(initiate_response), &be_const_str_solidified, ( &(const binstruction[46]) { /* code */ - 0x58140049, // 0000 LDCONST R5 K73 + 0x58140043, // 0000 LDCONST R5 K67 0x4C180000, // 0001 LDNIL R6 0x1C180806, // 0002 EQ R6 R4 R6 0x781A0004, // 0003 JMPF R6 #0009 - 0xB81A6000, // 0004 GETNGBL R6 K48 - 0x8C180D31, // 0005 GETMET R6 R6 K49 + 0xB81A5C00, // 0004 GETNGBL R6 K46 + 0x8C180D2F, // 0005 GETMET R6 R6 K47 0x5C200000, // 0006 MOVE R8 R0 0x7C180400, // 0007 CALL R6 2 0x5C100C00, // 0008 MOVE R4 R6 - 0x8818034A, // 0009 GETMBR R6 R1 K74 + 0x88180344, // 0009 GETMBR R6 R1 K68 0x90122606, // 000A SETMBR R4 K19 R6 - 0x8818034B, // 000B GETMBR R6 R1 K75 + 0x88180345, // 000B GETMBR R6 R1 K69 0x90122806, // 000C SETMBR R4 K20 R6 - 0x90122F15, // 000D SETMBR R4 K23 K21 + 0x90122D12, // 000D SETMBR R4 K22 K18 0x90120001, // 000E SETMBR R4 K0 R1 0x78060008, // 000F JMPF R1 #0019 - 0x88180335, // 0010 GETMBR R6 R1 K53 - 0x20180D15, // 0011 NE R6 R6 K21 + 0x88180332, // 0010 GETMBR R6 R1 K50 + 0x20180D12, // 0011 NE R6 R6 K18 0x781A0005, // 0012 JMPF R6 #0019 - 0x8C180336, // 0013 GETMET R6 R1 K54 + 0x8C180333, // 0013 GETMET R6 R1 K51 0x7C180200, // 0014 CALL R6 1 0x90121806, // 0015 SETMBR R4 K12 R6 - 0x88180335, // 0016 GETMBR R6 R1 K53 - 0x90123206, // 0017 SETMBR R4 K25 R6 + 0x88180332, // 0016 GETMBR R6 R1 K50 + 0x90123006, // 0017 SETMBR R4 K24 R6 0x70020004, // 0018 JMP #001E - 0x88180337, // 0019 GETMBR R6 R1 K55 - 0x8C180D38, // 001A GETMET R6 R6 K56 + 0x88180334, // 0019 GETMBR R6 R1 K52 + 0x8C180D35, // 001A GETMET R6 R6 K53 0x7C180200, // 001B CALL R6 1 0x90121806, // 001C SETMBR R4 K12 R6 - 0x90123315, // 001D SETMBR R4 K25 K21 - 0x90124D0B, // 001E SETMBR R4 K38 K11 - 0x90124E02, // 001F SETMBR R4 K39 R2 - 0x8818034C, // 0020 GETMBR R6 R1 K76 + 0x90123112, // 001D SETMBR R4 K24 K18 + 0x90124B0B, // 001E SETMBR R4 K37 K11 + 0x90124C02, // 001F SETMBR R4 K38 R2 + 0x88180346, // 0020 GETMBR R6 R1 K70 0x00180D0B, // 0021 ADD R6 R6 K11 - 0x90069806, // 0022 SETMBR R1 K76 R6 - 0x8818034C, // 0023 GETMBR R6 R1 K76 + 0x90068C06, // 0022 SETMBR R1 K70 R6 + 0x88180346, // 0023 GETMBR R6 R1 K70 0x541EFFFF, // 0024 LDINT R7 65536 0x30180C07, // 0025 OR R6 R6 R7 - 0x90125006, // 0026 SETMBR R4 K40 R6 - 0x9012530B, // 0027 SETMBR R4 K41 K11 + 0x90124E06, // 0026 SETMBR R4 K39 R6 + 0x9012510B, // 0027 SETMBR R4 K40 K11 0x780E0001, // 0028 JMPF R3 #002B 0x5818000B, // 0029 LDCONST R6 K11 0x70020000, // 002A JMP #002C - 0x58180015, // 002B LDCONST R6 K21 - 0x90124806, // 002C SETMBR R4 K36 R6 + 0x58180012, // 002B LDCONST R6 K18 + 0x90124606, // 002C SETMBR R4 K35 R6 0x80040800, // 002D RET 1 R4 }) ) @@ -1004,96 +997,96 @@ be_local_closure(class_Matter_Frame_decode_payload, /* name */ ( &(const binstruction[93]) { /* code */ 0x88040104, // 0000 GETMBR R1 R0 K4 0x88080103, // 0001 GETMBR R2 R0 K3 - 0x8C0C052D, // 0002 GETMET R3 R2 K45 + 0x8C0C052B, // 0002 GETMET R3 R2 K43 0x5C140200, // 0003 MOVE R5 R1 0x5818000B, // 0004 LDCONST R6 K11 0x7C0C0600, // 0005 CALL R3 3 - 0x90024403, // 0006 SETMBR R0 K34 R3 - 0x8C0C052E, // 0007 GETMET R3 R2 K46 + 0x90024203, // 0006 SETMBR R0 K33 R3 + 0x8C0C052C, // 0007 GETMET R3 R2 K44 0x54160007, // 0008 LDINT R5 8 0x08140205, // 0009 MUL R5 R1 R5 0x541A0003, // 000A LDINT R6 4 0x00140A06, // 000B ADD R5 R5 R6 0x5818000B, // 000C LDCONST R6 K11 0x7C0C0600, // 000D CALL R3 3 - 0x90024603, // 000E SETMBR R0 K35 R3 - 0x8C0C052E, // 000F GETMET R3 R2 K46 + 0x90024403, // 000E SETMBR R0 K34 R3 + 0x8C0C052C, // 000F GETMET R3 R2 K44 0x54160007, // 0010 LDINT R5 8 0x08140205, // 0011 MUL R5 R1 R5 - 0x00140B45, // 0012 ADD R5 R5 K69 + 0x00140B17, // 0012 ADD R5 R5 K23 0x5818000B, // 0013 LDCONST R6 K11 0x7C0C0600, // 0014 CALL R3 3 - 0x90029A03, // 0015 SETMBR R0 K77 R3 - 0x8C0C052E, // 0016 GETMET R3 R2 K46 + 0x90028E03, // 0015 SETMBR R0 K71 R3 + 0x8C0C052C, // 0016 GETMET R3 R2 K44 0x54160007, // 0017 LDINT R5 8 0x08140205, // 0018 MUL R5 R1 R5 - 0x00140B4E, // 0019 ADD R5 R5 K78 + 0x00140B19, // 0019 ADD R5 R5 K25 0x5818000B, // 001A LDCONST R6 K11 0x7C0C0600, // 001B CALL R3 3 - 0x90024803, // 001C SETMBR R0 K36 R3 - 0x8C0C052E, // 001D GETMET R3 R2 K46 + 0x90024603, // 001C SETMBR R0 K35 R3 + 0x8C0C052C, // 001D GETMET R3 R2 K44 0x54160007, // 001E LDINT R5 8 0x08140205, // 001F MUL R5 R1 R5 0x00140B0B, // 0020 ADD R5 R5 K11 0x5818000B, // 0021 LDCONST R6 K11 0x7C0C0600, // 0022 CALL R3 3 - 0x90024A03, // 0023 SETMBR R0 K37 R3 - 0x8C0C052E, // 0024 GETMET R3 R2 K46 + 0x90024803, // 0023 SETMBR R0 K36 R3 + 0x8C0C052C, // 0024 GETMET R3 R2 K44 0x54160007, // 0025 LDINT R5 8 0x08140205, // 0026 MUL R5 R1 R5 0x5818000B, // 0027 LDCONST R6 K11 0x7C0C0600, // 0028 CALL R3 3 - 0x90024C03, // 0029 SETMBR R0 K38 R3 - 0x8C0C052D, // 002A GETMET R3 R2 K45 + 0x90024A03, // 0029 SETMBR R0 K37 R3 + 0x8C0C052B, // 002A GETMET R3 R2 K43 0x0014030B, // 002B ADD R5 R1 K11 0x5818000B, // 002C LDCONST R6 K11 0x7C0C0600, // 002D CALL R3 3 - 0x90024E03, // 002E SETMBR R0 K39 R3 - 0x8C0C052D, // 002F GETMET R3 R2 K45 - 0x0014034E, // 0030 ADD R5 R1 K78 - 0x5818004E, // 0031 LDCONST R6 K78 + 0x90024C03, // 002E SETMBR R0 K38 R3 + 0x8C0C052B, // 002F GETMET R3 R2 K43 + 0x00140319, // 0030 ADD R5 R1 K25 + 0x58180019, // 0031 LDCONST R6 K25 0x7C0C0600, // 0032 CALL R3 3 - 0x90025003, // 0033 SETMBR R0 K40 R3 - 0x880C0126, // 0034 GETMBR R3 R0 K38 + 0x90024E03, // 0033 SETMBR R0 K39 R3 + 0x880C0125, // 0034 GETMBR R3 R0 K37 0x740E0003, // 0035 JMPT R3 #003A - 0x880C0128, // 0036 GETMBR R3 R0 K40 + 0x880C0127, // 0036 GETMBR R3 R0 K39 0x5412FFFF, // 0037 LDINT R4 65536 0x300C0604, // 0038 OR R3 R3 R4 - 0x90025003, // 0039 SETMBR R0 K40 R3 - 0x8C0C052D, // 003A GETMET R3 R2 K45 + 0x90024E03, // 0039 SETMBR R0 K39 R3 + 0x8C0C052B, // 003A GETMET R3 R2 K43 0x54160003, // 003B LDINT R5 4 0x00140205, // 003C ADD R5 R1 R5 - 0x5818004E, // 003D LDCONST R6 K78 + 0x58180019, // 003D LDCONST R6 K25 0x7C0C0600, // 003E CALL R3 3 - 0x90025203, // 003F SETMBR R0 K41 R3 + 0x90025003, // 003F SETMBR R0 K40 R3 0x540E0005, // 0040 LDINT R3 6 0x00040203, // 0041 ADD R1 R1 R3 - 0x880C0123, // 0042 GETMBR R3 R0 K35 + 0x880C0122, // 0042 GETMBR R3 R0 K34 0x780E0005, // 0043 JMPF R3 #004A - 0x8C0C052D, // 0044 GETMET R3 R2 K45 + 0x8C0C052B, // 0044 GETMET R3 R2 K43 0x5C140200, // 0045 MOVE R5 R1 - 0x5818004E, // 0046 LDCONST R6 K78 + 0x58180019, // 0046 LDCONST R6 K25 0x7C0C0600, // 0047 CALL R3 3 - 0x90029E03, // 0048 SETMBR R0 K79 R3 - 0x0004034E, // 0049 ADD R1 R1 K78 - 0x880C0125, // 004A GETMBR R3 R0 K37 + 0x90029003, // 0048 SETMBR R0 K72 R3 + 0x00040319, // 0049 ADD R1 R1 K25 + 0x880C0124, // 004A GETMBR R3 R0 K36 0x780E0006, // 004B JMPF R3 #0053 - 0x8C0C052D, // 004C GETMET R3 R2 K45 + 0x8C0C052B, // 004C GETMET R3 R2 K43 0x5C140200, // 004D MOVE R5 R1 0x541A0003, // 004E LDINT R6 4 0x7C0C0600, // 004F CALL R3 3 - 0x90025403, // 0050 SETMBR R0 K42 R3 + 0x90025203, // 0050 SETMBR R0 K41 R3 0x540E0003, // 0051 LDINT R3 4 0x00040203, // 0052 ADD R1 R1 R3 - 0x880C014D, // 0053 GETMBR R3 R0 K77 + 0x880C0147, // 0053 GETMBR R3 R0 K71 0x780E0005, // 0054 JMPF R3 #005B - 0x8C0C052D, // 0055 GETMET R3 R2 K45 + 0x8C0C052B, // 0055 GETMET R3 R2 K43 0x5C140200, // 0056 MOVE R5 R1 - 0x5818004E, // 0057 LDCONST R6 K78 + 0x58180019, // 0057 LDCONST R6 K25 0x7C0C0600, // 0058 CALL R3 3 - 0x0010074E, // 0059 ADD R4 R3 K78 + 0x00100719, // 0059 ADD R4 R3 K25 0x00040204, // 005A ADD R1 R1 R4 - 0x90025601, // 005B SETMBR R0 K43 R1 + 0x90025401, // 005B SETMBR R0 K42 R1 0x80040000, // 005C RET 1 R0 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h index 1e617d6a0..8d4d0b73e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Plugin; -// compact class 'Matter_Plugin' ktab size: 64, total: 103 (saved 312 bytes) -static const bvalue be_ktab_class_Matter_Plugin[64] = { +// compact class 'Matter_Plugin' ktab size: 62, total: 103 (saved 328 bytes) +static const bvalue be_ktab_class_Matter_Plugin[62] = { /* K0 */ be_nested_str_weak(tick), /* K1 */ be_nested_str_weak(device), /* K2 */ be_nested_str_weak(json), @@ -53,23 +53,21 @@ static const bvalue be_ktab_class_Matter_Plugin[64] = { /* K44 */ be_nested_str_weak(TLV), /* K45 */ be_nested_str_weak(cluster), /* K46 */ be_nested_str_weak(attribute), - /* K47 */ be_const_int(0), - /* K48 */ be_nested_str_weak(Matter_TLV_array), - /* K49 */ be_nested_str_weak(TYPES), - /* K50 */ be_nested_str_weak(keys), - /* K51 */ be_nested_str_weak(add_struct), - /* K52 */ be_nested_str_weak(add_TLV), - /* K53 */ be_nested_str_weak(U2), - /* K54 */ be_const_int(1), - /* K55 */ be_nested_str_weak(stop_iteration), - /* K56 */ be_nested_str_weak(get_cluster_list_sorted), - /* K57 */ be_nested_str_weak(U4), - /* K58 */ be_const_int(2), - /* K59 */ be_const_int(3), - /* K60 */ be_nested_str_weak(set), - /* K61 */ be_nested_str_weak(get_attribute_list), - /* K62 */ be_nested_str_weak(FEATURE_MAPS), - /* K63 */ be_nested_str_weak(CLUSTER_REVISIONS), + /* K47 */ be_nested_str_weak(Matter_TLV_array), + /* K48 */ be_nested_str_weak(TYPES), + /* K49 */ be_nested_str_weak(keys), + /* K50 */ be_nested_str_weak(add_struct), + /* K51 */ be_nested_str_weak(add_TLV), + /* K52 */ be_nested_str_weak(U2), + /* K53 */ be_nested_str_weak(stop_iteration), + /* K54 */ be_nested_str_weak(get_cluster_list_sorted), + /* K55 */ be_nested_str_weak(U4), + /* K56 */ be_const_int(2), + /* K57 */ be_const_int(3), + /* K58 */ be_nested_str_weak(set), + /* K59 */ be_nested_str_weak(get_attribute_list), + /* K60 */ be_nested_str_weak(FEATURE_MAPS), + /* K61 */ be_nested_str_weak(CLUSTER_REVISIONS), }; @@ -1116,141 +1114,141 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x541E001C, // 0004 LDINT R7 29 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0050, // 0006 JMPF R7 #0058 - 0x1C1C0D2F, // 0007 EQ R7 R6 K47 + 0x1C1C0D24, // 0007 EQ R7 R6 K36 0x781E001B, // 0008 JMPF R7 #0025 - 0x8C1C0930, // 0009 GETMET R7 R4 K48 + 0x8C1C092F, // 0009 GETMET R7 R4 K47 0x7C1C0200, // 000A CALL R7 1 - 0x88200131, // 000B GETMBR R8 R0 K49 + 0x88200130, // 000B GETMBR R8 R0 K48 0x60240010, // 000C GETGBL R9 G16 - 0x8C281132, // 000D GETMET R10 R8 K50 + 0x8C281131, // 000D GETMET R10 R8 K49 0x7C280200, // 000E CALL R10 1 0x7C240200, // 000F CALL R9 1 0xA802000E, // 0010 EXBLK 0 #0020 0x5C281200, // 0011 MOVE R10 R9 0x7C280000, // 0012 CALL R10 0 - 0x8C2C0F33, // 0013 GETMET R11 R7 K51 + 0x8C2C0F32, // 0013 GETMET R11 R7 K50 0x7C2C0200, // 0014 CALL R11 1 - 0x8C301734, // 0015 GETMET R12 R11 K52 - 0x5838002F, // 0016 LDCONST R14 K47 - 0x883C0935, // 0017 GETMBR R15 R4 K53 + 0x8C301733, // 0015 GETMET R12 R11 K51 + 0x58380024, // 0016 LDCONST R14 K36 + 0x883C0934, // 0017 GETMBR R15 R4 K52 0x5C401400, // 0018 MOVE R16 R10 0x7C300800, // 0019 CALL R12 4 - 0x8C301734, // 001A GETMET R12 R11 K52 - 0x58380036, // 001B LDCONST R14 K54 - 0x883C0935, // 001C GETMBR R15 R4 K53 + 0x8C301733, // 001A GETMET R12 R11 K51 + 0x58380025, // 001B LDCONST R14 K37 + 0x883C0934, // 001C GETMBR R15 R4 K52 0x9440100A, // 001D GETIDX R16 R8 R10 0x7C300800, // 001E CALL R12 4 0x7001FFF0, // 001F JMP #0011 - 0x58240037, // 0020 LDCONST R9 K55 + 0x58240035, // 0020 LDCONST R9 K53 0xAC240200, // 0021 CATCH R9 1 0 0xB0080000, // 0022 RAISE 2 R0 R0 0x80040E00, // 0023 RET 1 R7 0x70020032, // 0024 JMP #0058 - 0x1C1C0D36, // 0025 EQ R7 R6 K54 + 0x1C1C0D25, // 0025 EQ R7 R6 K37 0x781E0013, // 0026 JMPF R7 #003B - 0x8C1C0930, // 0027 GETMET R7 R4 K48 + 0x8C1C092F, // 0027 GETMET R7 R4 K47 0x7C1C0200, // 0028 CALL R7 1 0x60200010, // 0029 GETGBL R8 G16 - 0x8C240138, // 002A GETMET R9 R0 K56 + 0x8C240136, // 002A GETMET R9 R0 K54 0x7C240200, // 002B CALL R9 1 0x7C200200, // 002C CALL R8 1 0xA8020007, // 002D EXBLK 0 #0036 0x5C241000, // 002E MOVE R9 R8 0x7C240000, // 002F CALL R9 0 - 0x8C280F34, // 0030 GETMET R10 R7 K52 + 0x8C280F33, // 0030 GETMET R10 R7 K51 0x4C300000, // 0031 LDNIL R12 - 0x88340939, // 0032 GETMBR R13 R4 K57 + 0x88340937, // 0032 GETMBR R13 R4 K55 0x5C381200, // 0033 MOVE R14 R9 0x7C280800, // 0034 CALL R10 4 0x7001FFF7, // 0035 JMP #002E - 0x58200037, // 0036 LDCONST R8 K55 + 0x58200035, // 0036 LDCONST R8 K53 0xAC200200, // 0037 CATCH R8 1 0 0xB0080000, // 0038 RAISE 2 R0 R0 0x80040E00, // 0039 RET 1 R7 0x7002001C, // 003A JMP #0058 - 0x1C1C0D3A, // 003B EQ R7 R6 K58 + 0x1C1C0D38, // 003B EQ R7 R6 K56 0x781E0003, // 003C JMPF R7 #0041 - 0x8C1C0930, // 003D GETMET R7 R4 K48 + 0x8C1C092F, // 003D GETMET R7 R4 K47 0x7C1C0200, // 003E CALL R7 1 0x80040E00, // 003F RET 1 R7 0x70020016, // 0040 JMP #0058 - 0x1C1C0D3B, // 0041 EQ R7 R6 K59 + 0x1C1C0D39, // 0041 EQ R7 R6 K57 0x781E0003, // 0042 JMPF R7 #0047 - 0x8C1C0930, // 0043 GETMET R7 R4 K48 + 0x8C1C092F, // 0043 GETMET R7 R4 K47 0x7C1C0200, // 0044 CALL R7 1 0x80040E00, // 0045 RET 1 R7 0x70020010, // 0046 JMP #0058 0x541EFFFB, // 0047 LDINT R7 65532 0x1C1C0C07, // 0048 EQ R7 R6 R7 0x781E0005, // 0049 JMPF R7 #0050 - 0x8C1C073C, // 004A GETMET R7 R3 K60 - 0x88240939, // 004B GETMBR R9 R4 K57 - 0x5828002F, // 004C LDCONST R10 K47 + 0x8C1C073A, // 004A GETMET R7 R3 K58 + 0x88240937, // 004B GETMBR R9 R4 K55 + 0x58280024, // 004C LDCONST R10 K36 0x7C1C0600, // 004D CALL R7 3 0x80040E00, // 004E RET 1 R7 0x70020007, // 004F JMP #0058 0x541EFFFC, // 0050 LDINT R7 65533 0x1C1C0C07, // 0051 EQ R7 R6 R7 0x781E0004, // 0052 JMPF R7 #0058 - 0x8C1C073C, // 0053 GETMET R7 R3 K60 - 0x88240939, // 0054 GETMBR R9 R4 K57 - 0x58280036, // 0055 LDCONST R10 K54 + 0x8C1C073A, // 0053 GETMET R7 R3 K58 + 0x88240937, // 0054 GETMBR R9 R4 K55 + 0x58280025, // 0055 LDCONST R10 K37 0x7C1C0600, // 0056 CALL R7 3 0x80040E00, // 0057 RET 1 R7 0x541EFFF7, // 0058 LDINT R7 65528 0x1C1C0C07, // 0059 EQ R7 R6 R7 0x781E0003, // 005A JMPF R7 #005F - 0x8C1C0930, // 005B GETMET R7 R4 K48 + 0x8C1C092F, // 005B GETMET R7 R4 K47 0x7C1C0200, // 005C CALL R7 1 0x80040E00, // 005D RET 1 R7 0x7002003F, // 005E JMP #009F 0x541EFFFA, // 005F LDINT R7 65531 0x1C1C0C07, // 0060 EQ R7 R6 R7 0x781E0013, // 0061 JMPF R7 #0076 - 0x8C1C0930, // 0062 GETMET R7 R4 K48 + 0x8C1C092F, // 0062 GETMET R7 R4 K47 0x7C1C0200, // 0063 CALL R7 1 - 0x8C20013D, // 0064 GETMET R8 R0 K61 + 0x8C20013B, // 0064 GETMET R8 R0 K59 0x5C280A00, // 0065 MOVE R10 R5 0x7C200400, // 0066 CALL R8 2 - 0x5824002F, // 0067 LDCONST R9 K47 + 0x58240024, // 0067 LDCONST R9 K36 0x6028000C, // 0068 GETGBL R10 G12 0x5C2C1000, // 0069 MOVE R11 R8 0x7C280200, // 006A CALL R10 1 0x1428120A, // 006B LT R10 R9 R10 0x782A0006, // 006C JMPF R10 #0074 - 0x8C280F34, // 006D GETMET R10 R7 K52 + 0x8C280F33, // 006D GETMET R10 R7 K51 0x4C300000, // 006E LDNIL R12 - 0x88340935, // 006F GETMBR R13 R4 K53 + 0x88340934, // 006F GETMBR R13 R4 K52 0x94381009, // 0070 GETIDX R14 R8 R9 0x7C280800, // 0071 CALL R10 4 - 0x00241336, // 0072 ADD R9 R9 K54 + 0x00241325, // 0072 ADD R9 R9 K37 0x7001FFF3, // 0073 JMP #0068 0x80040E00, // 0074 RET 1 R7 0x70020028, // 0075 JMP #009F 0x541EFFF9, // 0076 LDINT R7 65530 0x1C1C0C07, // 0077 EQ R7 R6 R7 0x781E0003, // 0078 JMPF R7 #007D - 0x8C1C0930, // 0079 GETMET R7 R4 K48 + 0x8C1C092F, // 0079 GETMET R7 R4 K47 0x7C1C0200, // 007A CALL R7 1 0x80040E00, // 007B RET 1 R7 0x70020021, // 007C JMP #009F 0x541EFFF8, // 007D LDINT R7 65529 0x1C1C0C07, // 007E EQ R7 R6 R7 0x781E0003, // 007F JMPF R7 #0084 - 0x8C1C0930, // 0080 GETMET R7 R4 K48 + 0x8C1C092F, // 0080 GETMET R7 R4 K47 0x7C1C0200, // 0081 CALL R7 1 0x80040E00, // 0082 RET 1 R7 0x7002001A, // 0083 JMP #009F 0x541EFFFB, // 0084 LDINT R7 65532 0x1C1C0C07, // 0085 EQ R7 R6 R7 0x781E000A, // 0086 JMPF R7 #0092 - 0x881C013E, // 0087 GETMBR R7 R0 K62 + 0x881C013C, // 0087 GETMBR R7 R0 K60 0x8C1C0F1F, // 0088 GETMET R7 R7 K31 0x5C240A00, // 0089 MOVE R9 R5 - 0x5828002F, // 008A LDCONST R10 K47 + 0x58280024, // 008A LDCONST R10 K36 0x7C1C0600, // 008B CALL R7 3 - 0x8C20073C, // 008C GETMET R8 R3 K60 - 0x88280939, // 008D GETMBR R10 R4 K57 + 0x8C20073A, // 008C GETMET R8 R3 K58 + 0x88280937, // 008D GETMBR R10 R4 K55 0x5C2C0E00, // 008E MOVE R11 R7 0x7C200600, // 008F CALL R8 3 0x80041000, // 0090 RET 1 R8 @@ -1258,13 +1256,13 @@ be_local_closure(class_Matter_Plugin_read_attribute, /* name */ 0x541EFFFC, // 0092 LDINT R7 65533 0x1C1C0C07, // 0093 EQ R7 R6 R7 0x781E0009, // 0094 JMPF R7 #009F - 0x881C013F, // 0095 GETMBR R7 R0 K63 + 0x881C013D, // 0095 GETMBR R7 R0 K61 0x8C1C0F1F, // 0096 GETMET R7 R7 K31 0x5C240A00, // 0097 MOVE R9 R5 - 0x58280036, // 0098 LDCONST R10 K54 + 0x58280025, // 0098 LDCONST R10 K37 0x7C1C0600, // 0099 CALL R7 3 - 0x8C20073C, // 009A GETMET R8 R3 K60 - 0x88280939, // 009B GETMBR R10 R4 K57 + 0x8C20073A, // 009A GETMET R8 R3 K58 + 0x88280937, // 009B GETMBR R10 R4 K55 0x5C2C0E00, // 009C MOVE R11 R7 0x7C200600, // 009D CALL R8 3 0x80041000, // 009E RET 1 R8 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h index 086506aa3..b5b6f034d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Aggregator' ktab size: 23, total: 29 (saved 48 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Aggregator[23] = { +// compact class 'Matter_Plugin_Aggregator' ktab size: 21, total: 29 (saved 64 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Aggregator[21] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -24,10 +24,8 @@ static const bvalue be_ktab_class_Matter_Plugin_Aggregator[23] = { /* K16 */ be_nested_str_weak(stop_iteration), /* K17 */ be_nested_str_weak(read_attribute), /* K18 */ be_nested_str_weak(command), - /* K19 */ be_const_int(0), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str_weak(Matter_TLV_struct), - /* K22 */ be_nested_str_weak(invoke_request), + /* K19 */ be_nested_str_weak(Matter_TLV_struct), + /* K20 */ be_nested_str_weak(invoke_request), }; @@ -152,21 +150,21 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ 0x88180712, // 0003 GETMBR R6 R3 K18 0x1C1C0B04, // 0004 EQ R7 R5 K4 0x781E0016, // 0005 JMPF R7 #001D - 0x1C1C0D13, // 0006 EQ R7 R6 K19 + 0x1C1C0D05, // 0006 EQ R7 R6 K5 0x781E0002, // 0007 JMPF R7 #000B 0x501C0200, // 0008 LDBOOL R7 1 0 0x80040E00, // 0009 RET 1 R7 0x70020010, // 000A JMP #001C - 0x1C1C0D14, // 000B EQ R7 R6 K20 + 0x1C1C0D08, // 000B EQ R7 R6 K8 0x781E0009, // 000C JMPF R7 #0017 - 0x8C1C0915, // 000D GETMET R7 R4 K21 + 0x8C1C0913, // 000D GETMET R7 R4 K19 0x7C1C0200, // 000E CALL R7 1 0x8C200F0C, // 000F GETMET R8 R7 K12 - 0x58280013, // 0010 LDCONST R10 K19 + 0x58280005, // 0010 LDCONST R10 K5 0x882C0907, // 0011 GETMBR R11 R4 K7 - 0x58300013, // 0012 LDCONST R12 K19 + 0x58300005, // 0012 LDCONST R12 K5 0x7C200800, // 0013 CALL R8 4 - 0x900E2513, // 0014 SETMBR R3 K18 K19 + 0x900E2505, // 0014 SETMBR R3 K18 K5 0x80040E00, // 0015 RET 1 R7 0x70020004, // 0016 JMP #001C 0x541E003F, // 0017 LDINT R7 64 @@ -178,7 +176,7 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */ 0x601C0003, // 001D GETGBL R7 G3 0x5C200000, // 001E MOVE R8 R0 0x7C1C0200, // 001F CALL R7 1 - 0x8C1C0F16, // 0020 GETMET R7 R7 K22 + 0x8C1C0F14, // 0020 GETMET R7 R7 K20 0x5C240200, // 0021 MOVE R9 R1 0x5C280400, // 0022 MOVE R10 R2 0x5C2C0600, // 0023 MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h index 172176fa3..1513d6975 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'GetOptionReader' ktab size: 18, total: 24 (saved 48 bytes) -static const bvalue be_ktab_class_GetOptionReader[18] = { +// compact class 'GetOptionReader' ktab size: 17, total: 24 (saved 56 bytes) +static const bvalue be_ktab_class_GetOptionReader[17] = { /* K0 */ be_nested_str_weak(flag), /* K1 */ be_nested_str_weak(getbits), /* K2 */ be_const_int(1), @@ -20,9 +20,8 @@ static const bvalue be_ktab_class_GetOptionReader[18] = { /* K12 */ be_nested_str_weak(fromhex), /* K13 */ be_const_int(0), /* K14 */ be_nested_str_weak(reverse), - /* K15 */ be_const_int(1), - /* K16 */ be_const_int(2), - /* K17 */ be_const_int(3), + /* K15 */ be_const_int(2), + /* K16 */ be_const_int(3), }; @@ -149,13 +148,13 @@ be_local_closure(class_GetOptionReader_init, /* name */ 0x600C0015, // 000D GETGBL R3 G21 0x7C0C0000, // 000E CALL R3 0 0x8C0C070C, // 000F GETMET R3 R3 K12 - 0x9414050F, // 0010 GETIDX R5 R2 K15 + 0x94140502, // 0010 GETIDX R5 R2 K2 0x7C0C0400, // 0011 CALL R3 2 0x90020603, // 0012 SETMBR R0 K3 R3 0x600C0015, // 0013 GETGBL R3 G21 0x7C0C0000, // 0014 CALL R3 0 0x8C0C070C, // 0015 GETMET R3 R3 K12 - 0x94140510, // 0016 GETIDX R5 R2 K16 + 0x9414050F, // 0016 GETIDX R5 R2 K15 0x7C0C0400, // 0017 CALL R3 2 0x8C0C070E, // 0018 GETMET R3 R3 K14 0x7C0C0200, // 0019 CALL R3 1 @@ -163,7 +162,7 @@ be_local_closure(class_GetOptionReader_init, /* name */ 0x600C0015, // 001B GETGBL R3 G21 0x7C0C0000, // 001C CALL R3 0 0x8C0C070C, // 001D GETMET R3 R3 K12 - 0x94140511, // 001E GETIDX R5 R2 K17 + 0x94140510, // 001E GETIDX R5 R2 K16 0x7C0C0400, // 001F CALL R3 2 0x8C0C070E, // 0020 GETMET R3 R3 K14 0x7C0C0200, // 0021 CALL R3 1 @@ -212,8 +211,8 @@ be_local_class(GetOptionReader, })), be_str_weak(GetOptionReader) ); -// compact class 'Matter_Plugin_Device' ktab size: 125, total: 158 (saved 264 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Device[125] = { +// compact class 'Matter_Plugin_Device' ktab size: 122, total: 158 (saved 288 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Device[122] = { /* K0 */ be_nested_str_weak(http_remote), /* K1 */ be_nested_str_weak(add_schedule), /* K2 */ be_nested_str_weak(UPDATE_CMD), @@ -245,100 +244,97 @@ static const bvalue be_ktab_class_Matter_Plugin_Device[125] = { /* K28 */ be_nested_str_weak(device), /* K29 */ be_nested_str_weak(call_remote_sync), /* K30 */ be_nested_str_weak(parse_http_response), - /* K31 */ be_const_int(1), - /* K32 */ be_nested_str_weak(json), - /* K33 */ be_const_int(2), - /* K34 */ be_nested_str_weak(_X20), - /* K35 */ be_nested_str_weak(call_sync), - /* K36 */ be_nested_str_weak(SYNC_TIMEOUT), - /* K37 */ be_nested_str_weak(device_is_alive), - /* K38 */ be_nested_str_weak(load), - /* K39 */ be_const_int(1), - /* K40 */ be_nested_str_weak(log), - /* K41 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), - /* K42 */ be_nested_str_weak(parse_status_response_and_call_method), - /* K43 */ be_nested_str_weak(parse_status), - /* K44 */ be_nested_str_weak(get_name), - /* K45 */ be_nested_str_weak(PREFIX), - /* K46 */ be_nested_str_weak(html_escape), - /* K47 */ be_nested_str_weak(attribute), - /* K48 */ be_const_int(0), - /* K49 */ be_nested_str_weak(set), - /* K50 */ be_nested_str_weak(U1), - /* K51 */ be_nested_str_weak(Matter_TLV_array), - /* K52 */ be_nested_str_weak(TYPES), - /* K53 */ be_nested_str_weak(keys), - /* K54 */ be_nested_str_weak(add_struct), - /* K55 */ be_nested_str_weak(stop_iteration), - /* K56 */ be_nested_str_weak(NON_BRIDGE_VENDOR), - /* K57 */ be_nested_str_weak(find), - /* K58 */ be_nested_str_weak(get_admin_vendor), - /* K59 */ be_nested_str_weak(disable_bridge_mode), - /* K60 */ be_nested_str_weak(string), - /* K61 */ be_nested_str_weak(get_info), - /* K62 */ be_nested_str_weak(name), - /* K63 */ be_nested_str_weak(set_or_nil), - /* K64 */ be_nested_str_weak(UTF1), - /* K65 */ be_nested_str_weak(tasmota), - /* K66 */ be_nested_str_weak(cmd), - /* K67 */ be_nested_str_weak(DeviceName), - /* K68 */ be_nested_str_weak(version), - /* K69 */ be_nested_str_weak(_X28), - /* K70 */ be_nested_str_weak(NULL), - /* K71 */ be_nested_str_weak(Status_X202), - /* K72 */ be_nested_str_weak(StatusFWR), - /* K73 */ be_nested_str_weak(Version), - /* K74 */ be_nested_str_weak(mac), - /* K75 */ be_nested_str_weak(wifi), - /* K76 */ be_nested_str_weak(BOOL), - /* K77 */ be_nested_str_weak(reachable), - /* K78 */ be_nested_str_weak(read_attribute), - /* K79 */ be_nested_str_weak(init), - /* K80 */ be_nested_str_weak(ARG_HTTP), - /* K81 */ be_nested_str_weak(register_http_remote), - /* K82 */ be_nested_str_weak(PROBE_TIMEOUT), - /* K83 */ be_nested_str_weak(register_cmd_cb), - /* K84 */ be_nested_str_weak(introspect), - /* K85 */ be_nested_str_weak(get), - /* K86 */ be_nested_str_weak(JSON_NAME), - /* K87 */ be_nested_str_weak(contains), - /* K88 */ be_nested_str_weak(shadow_value), - /* K89 */ be_nested_str_weak(dump), - /* K90 */ be_nested_str_weak(null), - /* K91 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s), - /* K92 */ be_nested_str_weak(shadow_onoff), - /* K93 */ be_nested_str_weak(Power), - /* K94 */ be_nested_str_weak(shadow_bri), - /* K95 */ be_nested_str_weak(Bri), - /* K96 */ be_nested_str_weak(shadow_ct), - /* K97 */ be_nested_str_weak(CT), - /* K98 */ be_nested_str_weak(shadow_hue), - /* K99 */ be_nested_str_weak(Hue), - /* K100 */ be_nested_str_weak(shadow_sat), - /* K101 */ be_nested_str_weak(Sat), - /* K102 */ be_nested_str_weak(shadow_shutter_pos), - /* K103 */ be_nested_str_weak(ShutterPos), - /* K104 */ be_nested_str_weak(shadow_shutter_target), - /* K105 */ be_nested_str_weak(ShutterTarget), - /* K106 */ be_nested_str_weak(shadow_shutter_tilt), - /* K107 */ be_nested_str_weak(ShutterTilt), - /* K108 */ be_nested_str_weak(shadow_contact), - /* K109 */ be_nested_str_weak(Contact), - /* K110 */ be_nested_str_weak(shadow_occupancy), - /* K111 */ be_nested_str_weak(Occupancy), - /* K112 */ be_nested_str_weak(shadow_air_quality), - /* K113 */ be_nested_str_weak(AirQuality), - /* K114 */ be_nested_str_weak(shadow_co2), - /* K115 */ be_nested_str_weak(CO2), - /* K116 */ be_nested_str_weak(shadow_pm1), - /* K117 */ be_nested_str_weak(PM1), - /* K118 */ be_nested_str_weak(shadow_pm2_5), - /* K119 */ be_nested_str_weak(PM2_X2E5), - /* K120 */ be_nested_str_weak(shadow_pm10), - /* K121 */ be_nested_str_weak(PM10), - /* K122 */ be_nested_str_weak(shadow_tvoc), - /* K123 */ be_nested_str_weak(TVOC), - /* K124 */ be_nested_str_weak(attribute_updated), + /* K31 */ be_nested_str_weak(json), + /* K32 */ be_const_int(2), + /* K33 */ be_nested_str_weak(_X20), + /* K34 */ be_nested_str_weak(call_sync), + /* K35 */ be_nested_str_weak(SYNC_TIMEOUT), + /* K36 */ be_nested_str_weak(device_is_alive), + /* K37 */ be_nested_str_weak(load), + /* K38 */ be_nested_str_weak(log), + /* K39 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying), + /* K40 */ be_nested_str_weak(parse_status_response_and_call_method), + /* K41 */ be_nested_str_weak(parse_status), + /* K42 */ be_nested_str_weak(get_name), + /* K43 */ be_nested_str_weak(PREFIX), + /* K44 */ be_nested_str_weak(html_escape), + /* K45 */ be_nested_str_weak(attribute), + /* K46 */ be_nested_str_weak(set), + /* K47 */ be_nested_str_weak(U1), + /* K48 */ be_nested_str_weak(Matter_TLV_array), + /* K49 */ be_nested_str_weak(TYPES), + /* K50 */ be_nested_str_weak(keys), + /* K51 */ be_nested_str_weak(add_struct), + /* K52 */ be_nested_str_weak(stop_iteration), + /* K53 */ be_nested_str_weak(NON_BRIDGE_VENDOR), + /* K54 */ be_nested_str_weak(find), + /* K55 */ be_nested_str_weak(get_admin_vendor), + /* K56 */ be_nested_str_weak(disable_bridge_mode), + /* K57 */ be_nested_str_weak(string), + /* K58 */ be_nested_str_weak(get_info), + /* K59 */ be_nested_str_weak(name), + /* K60 */ be_nested_str_weak(set_or_nil), + /* K61 */ be_nested_str_weak(UTF1), + /* K62 */ be_nested_str_weak(tasmota), + /* K63 */ be_nested_str_weak(cmd), + /* K64 */ be_nested_str_weak(DeviceName), + /* K65 */ be_nested_str_weak(version), + /* K66 */ be_nested_str_weak(_X28), + /* K67 */ be_nested_str_weak(NULL), + /* K68 */ be_nested_str_weak(Status_X202), + /* K69 */ be_nested_str_weak(StatusFWR), + /* K70 */ be_nested_str_weak(Version), + /* K71 */ be_nested_str_weak(mac), + /* K72 */ be_nested_str_weak(wifi), + /* K73 */ be_nested_str_weak(BOOL), + /* K74 */ be_nested_str_weak(reachable), + /* K75 */ be_nested_str_weak(read_attribute), + /* K76 */ be_nested_str_weak(init), + /* K77 */ be_nested_str_weak(ARG_HTTP), + /* K78 */ be_nested_str_weak(register_http_remote), + /* K79 */ be_nested_str_weak(PROBE_TIMEOUT), + /* K80 */ be_nested_str_weak(register_cmd_cb), + /* K81 */ be_nested_str_weak(introspect), + /* K82 */ be_nested_str_weak(get), + /* K83 */ be_nested_str_weak(JSON_NAME), + /* K84 */ be_nested_str_weak(contains), + /* K85 */ be_nested_str_weak(shadow_value), + /* K86 */ be_nested_str_weak(dump), + /* K87 */ be_nested_str_weak(null), + /* K88 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s), + /* K89 */ be_nested_str_weak(shadow_onoff), + /* K90 */ be_nested_str_weak(Power), + /* K91 */ be_nested_str_weak(shadow_bri), + /* K92 */ be_nested_str_weak(Bri), + /* K93 */ be_nested_str_weak(shadow_ct), + /* K94 */ be_nested_str_weak(CT), + /* K95 */ be_nested_str_weak(shadow_hue), + /* K96 */ be_nested_str_weak(Hue), + /* K97 */ be_nested_str_weak(shadow_sat), + /* K98 */ be_nested_str_weak(Sat), + /* K99 */ be_nested_str_weak(shadow_shutter_pos), + /* K100 */ be_nested_str_weak(ShutterPos), + /* K101 */ be_nested_str_weak(shadow_shutter_target), + /* K102 */ be_nested_str_weak(ShutterTarget), + /* K103 */ be_nested_str_weak(shadow_shutter_tilt), + /* K104 */ be_nested_str_weak(ShutterTilt), + /* K105 */ be_nested_str_weak(shadow_contact), + /* K106 */ be_nested_str_weak(Contact), + /* K107 */ be_nested_str_weak(shadow_occupancy), + /* K108 */ be_nested_str_weak(Occupancy), + /* K109 */ be_nested_str_weak(shadow_air_quality), + /* K110 */ be_nested_str_weak(AirQuality), + /* K111 */ be_nested_str_weak(shadow_co2), + /* K112 */ be_nested_str_weak(CO2), + /* K113 */ be_nested_str_weak(shadow_pm1), + /* K114 */ be_nested_str_weak(PM1), + /* K115 */ be_nested_str_weak(shadow_pm2_5), + /* K116 */ be_nested_str_weak(PM2_X2E5), + /* K117 */ be_nested_str_weak(shadow_pm10), + /* K118 */ be_nested_str_weak(PM10), + /* K119 */ be_nested_str_weak(shadow_tvoc), + /* K120 */ be_nested_str_weak(TVOC), + /* K121 */ be_nested_str_weak(attribute_updated), }; @@ -629,7 +625,7 @@ be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */ 0x7C040400, // 0009 CALL R1 2 0x78060004, // 000A JMPF R1 #0010 0x8C08011E, // 000B GETMET R2 R0 K30 - 0x5810001F, // 000C LDCONST R4 K31 + 0x58100016, // 000C LDCONST R4 K22 0x5C140200, // 000D MOVE R5 R1 0x88180102, // 000E GETMBR R6 R0 K2 0x7C080800, // 000F CALL R2 4 @@ -662,12 +658,12 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ ( &(const binstruction[44]) { /* code */ 0x880C010A, // 0000 GETMBR R3 R0 K10 0x780E0028, // 0001 JMPF R3 #002B - 0xA40E4000, // 0002 IMPORT R3 K32 - 0x58100021, // 0003 LDCONST R4 K33 + 0xA40E3E00, // 0002 IMPORT R3 K31 + 0x58100020, // 0003 LDCONST R4 K32 0x4C140000, // 0004 LDNIL R5 0x20140405, // 0005 NE R5 R2 R5 0x78160005, // 0006 JMPF R5 #000D - 0x00140322, // 0007 ADD R5 R1 K34 + 0x00140321, // 0007 ADD R5 R1 K33 0x60180008, // 0008 GETGBL R6 G8 0x5C1C0400, // 0009 MOVE R7 R2 0x7C180200, // 000A CALL R6 1 @@ -676,29 +672,29 @@ be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */ 0x24140915, // 000D GT R5 R4 K21 0x78160015, // 000E JMPF R5 #0025 0x88140100, // 000F GETMBR R5 R0 K0 - 0x8C140B23, // 0010 GETMET R5 R5 K35 + 0x8C140B22, // 0010 GETMET R5 R5 K34 0x5C1C0200, // 0011 MOVE R7 R1 - 0x88200124, // 0012 GETMBR R8 R0 K36 + 0x88200123, // 0012 GETMBR R8 R0 K35 0x7C140600, // 0013 CALL R5 3 0x4C180000, // 0014 LDNIL R6 0x20180A06, // 0015 NE R6 R5 R6 0x781A0007, // 0016 JMPF R6 #001F 0x88180100, // 0017 GETMBR R6 R0 K0 - 0x8C180D25, // 0018 GETMET R6 R6 K37 + 0x8C180D24, // 0018 GETMET R6 R6 K36 0x50200200, // 0019 LDBOOL R8 1 0 0x7C180400, // 001A CALL R6 2 - 0x8C180726, // 001B GETMET R6 R3 K38 + 0x8C180725, // 001B GETMET R6 R3 K37 0x5C200A00, // 001C MOVE R8 R5 0x7C180400, // 001D CALL R6 2 0x80040C00, // 001E RET 1 R6 - 0x04100927, // 001F SUB R4 R4 K39 - 0xB81A5000, // 0020 GETNGBL R6 K40 - 0x581C0029, // 0021 LDCONST R7 K41 + 0x04100916, // 001F SUB R4 R4 K22 + 0xB81A4C00, // 0020 GETNGBL R6 K38 + 0x581C0027, // 0021 LDCONST R7 K39 0x58200014, // 0022 LDCONST R8 K20 0x7C180400, // 0023 CALL R6 2 0x7001FFE7, // 0024 JMP #000D 0x88140100, // 0025 GETMBR R5 R0 K0 - 0x8C140B25, // 0026 GETMET R5 R5 K37 + 0x8C140B24, // 0026 GETMET R5 R5 K36 0x501C0000, // 0027 LDBOOL R7 0 0 0x7C140400, // 0028 CALL R5 2 0x4C140000, // 0029 LDNIL R5 @@ -733,12 +729,12 @@ be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */ 0x8810091B, // 0003 GETMBR R4 R4 K27 0x90023604, // 0004 SETMBR R0 K27 R4 0x88100100, // 0005 GETMBR R4 R0 K0 - 0x8C10092A, // 0006 GETMET R4 R4 K42 + 0x8C100928, // 0006 GETMET R4 R4 K40 0x5C180200, // 0007 MOVE R6 R1 0x5C1C0400, // 0008 MOVE R7 R2 0x5C200600, // 0009 MOVE R8 R3 0x5C240000, // 000A MOVE R9 R0 - 0x8828012B, // 000B GETMBR R10 R0 K43 + 0x88280129, // 000B GETMBR R10 R0 K41 0x7C100C00, // 000C CALL R4 6 0x80000000, // 000D RET 0 }) @@ -765,13 +761,13 @@ be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */ &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ 0xA4060800, // 0000 IMPORT R1 K4 - 0x8C08012C, // 0001 GETMET R2 R0 K44 + 0x8C08012A, // 0001 GETMET R2 R0 K42 0x7C080200, // 0002 CALL R2 1 0x8C0C0306, // 0003 GETMET R3 R1 K6 0x60140018, // 0004 GETGBL R5 G24 - 0x8818012D, // 0005 GETMBR R6 R0 K45 + 0x8818012B, // 0005 GETMBR R6 R0 K43 0x780A0003, // 0006 JMPF R2 #000B - 0x8C1C032E, // 0007 GETMET R7 R1 K46 + 0x8C1C032C, // 0007 GETMET R7 R1 K44 0x5C240400, // 0008 MOVE R9 R2 0x7C1C0400, // 0009 CALL R7 2 0x70020000, // 000A JMP #000C @@ -805,29 +801,29 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0xB8122000, // 0000 GETNGBL R4 K16 0x88100911, // 0001 GETMBR R4 R4 K17 0x88140512, // 0002 GETMBR R5 R2 K18 - 0x8818052F, // 0003 GETMBR R6 R2 K47 + 0x8818052D, // 0003 GETMBR R6 R2 K45 0x1C1C0B14, // 0004 EQ R7 R5 K20 0x781E000F, // 0005 JMPF R7 #0016 - 0x1C1C0D30, // 0006 EQ R7 R6 K48 + 0x1C1C0D15, // 0006 EQ R7 R6 K21 0x781E0005, // 0007 JMPF R7 #000E - 0x8C1C0731, // 0008 GETMET R7 R3 K49 + 0x8C1C072E, // 0008 GETMET R7 R3 K46 0x88240919, // 0009 GETMBR R9 R4 K25 - 0x58280030, // 000A LDCONST R10 K48 + 0x58280015, // 000A LDCONST R10 K21 0x7C1C0600, // 000B CALL R7 3 0x80040E00, // 000C RET 1 R7 0x70020006, // 000D JMP #0015 0x1C1C0D16, // 000E EQ R7 R6 K22 0x781E0004, // 000F JMPF R7 #0015 - 0x8C1C0731, // 0010 GETMET R7 R3 K49 - 0x88240932, // 0011 GETMBR R9 R4 K50 - 0x58280030, // 0012 LDCONST R10 K48 + 0x8C1C072E, // 0010 GETMET R7 R3 K46 + 0x8824092F, // 0011 GETMBR R9 R4 K47 + 0x58280015, // 0012 LDCONST R10 K21 0x7C1C0600, // 0013 CALL R7 3 0x80040E00, // 0014 RET 1 R7 0x700200D4, // 0015 JMP #00EB 0x541E0003, // 0016 LDINT R7 4 0x1C1C0A07, // 0017 EQ R7 R5 R7 0x781E0004, // 0018 JMPF R7 #001E - 0x1C1C0D30, // 0019 EQ R7 R6 K48 + 0x1C1C0D15, // 0019 EQ R7 R6 K21 0x781E0001, // 001A JMPF R7 #001D 0x4C1C0000, // 001B LDNIL R7 0x80040E00, // 001C RET 1 R7 @@ -839,22 +835,22 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x541E001C, // 0022 LDINT R7 29 0x1C1C0A07, // 0023 EQ R7 R5 R7 0x781E0034, // 0024 JMPF R7 #005A - 0x1C1C0D30, // 0025 EQ R7 R6 K48 + 0x1C1C0D15, // 0025 EQ R7 R6 K21 0x781E0031, // 0026 JMPF R7 #0059 - 0x8C1C0933, // 0027 GETMET R7 R4 K51 + 0x8C1C0930, // 0027 GETMET R7 R4 K48 0x7C1C0200, // 0028 CALL R7 1 - 0x88200134, // 0029 GETMBR R8 R0 K52 + 0x88200131, // 0029 GETMBR R8 R0 K49 0x60240010, // 002A GETGBL R9 G16 - 0x8C281135, // 002B GETMET R10 R8 K53 + 0x8C281132, // 002B GETMET R10 R8 K50 0x7C280200, // 002C CALL R10 1 0x7C240200, // 002D CALL R9 1 0xA802000E, // 002E EXBLK 0 #003E 0x5C281200, // 002F MOVE R10 R9 0x7C280000, // 0030 CALL R10 0 - 0x8C2C0F36, // 0031 GETMET R11 R7 K54 + 0x8C2C0F33, // 0031 GETMET R11 R7 K51 0x7C2C0200, // 0032 CALL R11 1 0x8C301718, // 0033 GETMET R12 R11 K24 - 0x58380030, // 0034 LDCONST R14 K48 + 0x58380015, // 0034 LDCONST R14 K21 0x883C0919, // 0035 GETMBR R15 R4 K25 0x5C401400, // 0036 MOVE R16 R10 0x7C300800, // 0037 CALL R12 4 @@ -864,24 +860,24 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x9440100A, // 003B GETIDX R16 R8 R10 0x7C300800, // 003C CALL R12 4 0x7001FFF0, // 003D JMP #002F - 0x58240037, // 003E LDCONST R9 K55 + 0x58240034, // 003E LDCONST R9 K52 0xAC240200, // 003F CATCH R9 1 0 0xB0080000, // 0040 RAISE 2 R0 R0 - 0x88240138, // 0041 GETMBR R9 R0 K56 - 0x8C241339, // 0042 GETMET R9 R9 K57 - 0x8C2C033A, // 0043 GETMET R11 R1 K58 + 0x88240135, // 0041 GETMBR R9 R0 K53 + 0x8C241336, // 0042 GETMET R9 R9 K54 + 0x8C2C0337, // 0043 GETMET R11 R1 K55 0x7C2C0200, // 0044 CALL R11 1 0x7C240400, // 0045 CALL R9 2 0x4C280000, // 0046 LDNIL R10 0x1C24120A, // 0047 EQ R9 R9 R10 0x7826000E, // 0048 JMPF R9 #0058 0x8824011C, // 0049 GETMBR R9 R0 K28 - 0x8824133B, // 004A GETMBR R9 R9 K59 + 0x88241338, // 004A GETMBR R9 R9 K56 0x7426000B, // 004B JMPT R9 #0058 - 0x8C240F36, // 004C GETMET R9 R7 K54 + 0x8C240F33, // 004C GETMET R9 R7 K51 0x7C240200, // 004D CALL R9 1 0x8C281318, // 004E GETMET R10 R9 K24 - 0x58300030, // 004F LDCONST R12 K48 + 0x58300015, // 004F LDCONST R12 K21 0x88340919, // 0050 GETMBR R13 R4 K25 0x543A0012, // 0051 LDINT R14 19 0x7C280800, // 0052 CALL R10 4 @@ -895,40 +891,40 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x541E0038, // 005A LDINT R7 57 0x1C1C0A07, // 005B EQ R7 R5 R7 0x781E008D, // 005C JMPF R7 #00EB - 0xA41E7800, // 005D IMPORT R7 K60 + 0xA41E7200, // 005D IMPORT R7 K57 0x1C200D14, // 005E EQ R8 R6 K20 0x78220018, // 005F JMPF R8 #0079 0x8820010A, // 0060 GETMBR R8 R0 K10 0x7822000B, // 0061 JMPF R8 #006E 0x88200100, // 0062 GETMBR R8 R0 K0 - 0x8C20113D, // 0063 GETMET R8 R8 K61 + 0x8C20113A, // 0063 GETMET R8 R8 K58 0x7C200200, // 0064 CALL R8 1 - 0x8C201139, // 0065 GETMET R8 R8 K57 - 0x5828003E, // 0066 LDCONST R10 K62 + 0x8C201136, // 0065 GETMET R8 R8 K54 + 0x5828003B, // 0066 LDCONST R10 K59 0x7C200400, // 0067 CALL R8 2 - 0x8C24073F, // 0068 GETMET R9 R3 K63 - 0x882C0940, // 0069 GETMBR R11 R4 K64 + 0x8C24073C, // 0068 GETMET R9 R3 K60 + 0x882C093D, // 0069 GETMBR R11 R4 K61 0x5C301000, // 006A MOVE R12 R8 0x7C240600, // 006B CALL R9 3 0x80041200, // 006C RET 1 R9 0x70020009, // 006D JMP #0078 - 0x8C200731, // 006E GETMET R8 R3 K49 - 0x88280940, // 006F GETMBR R10 R4 K64 - 0xB82E8200, // 0070 GETNGBL R11 K65 - 0x8C2C1742, // 0071 GETMET R11 R11 K66 - 0x58340043, // 0072 LDCONST R13 K67 + 0x8C20072E, // 006E GETMET R8 R3 K46 + 0x8828093D, // 006F GETMBR R10 R4 K61 + 0xB82E7C00, // 0070 GETNGBL R11 K62 + 0x8C2C173F, // 0071 GETMET R11 R11 K63 + 0x58340040, // 0072 LDCONST R13 K64 0x50380200, // 0073 LDBOOL R14 1 0 0x7C2C0600, // 0074 CALL R11 3 - 0x942C1743, // 0075 GETIDX R11 R11 K67 + 0x942C1740, // 0075 GETIDX R11 R11 K64 0x7C200600, // 0076 CALL R8 3 0x80041000, // 0077 RET 1 R8 0x70020071, // 0078 JMP #00EB 0x54220004, // 0079 LDINT R8 5 0x1C200C08, // 007A EQ R8 R6 R8 0x78220006, // 007B JMPF R8 #0083 - 0x8C200731, // 007C GETMET R8 R3 K49 - 0x88280940, // 007D GETMBR R10 R4 K64 - 0x8C2C012C, // 007E GETMET R11 R0 K44 + 0x8C20072E, // 007C GETMET R8 R3 K46 + 0x8828093D, // 007D GETMBR R10 R4 K61 + 0x8C2C012A, // 007E GETMET R11 R0 K42 0x7C2C0200, // 007F CALL R11 1 0x7C200600, // 0080 CALL R8 3 0x80041000, // 0081 RET 1 R8 @@ -939,51 +935,51 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x8820010A, // 0086 GETMBR R8 R0 K10 0x7822001B, // 0087 JMPF R8 #00A4 0x88200100, // 0088 GETMBR R8 R0 K0 - 0x8C20113D, // 0089 GETMET R8 R8 K61 + 0x8C20113A, // 0089 GETMET R8 R8 K58 0x7C200200, // 008A CALL R8 1 - 0x8C201139, // 008B GETMET R8 R8 K57 - 0x58280044, // 008C LDCONST R10 K68 + 0x8C201136, // 008B GETMET R8 R8 K54 + 0x58280041, // 008C LDCONST R10 K65 0x7C200400, // 008D CALL R8 2 0x7822000E, // 008E JMPF R8 #009E - 0x8C240F39, // 008F GETMET R9 R7 K57 + 0x8C240F36, // 008F GETMET R9 R7 K54 0x5C2C1000, // 0090 MOVE R11 R8 - 0x58300045, // 0091 LDCONST R12 K69 + 0x58300042, // 0091 LDCONST R12 K66 0x7C240600, // 0092 CALL R9 3 - 0x24281330, // 0093 GT R10 R9 K48 + 0x24281315, // 0093 GT R10 R9 K21 0x782A0002, // 0094 JMPF R10 #0098 0x04281316, // 0095 SUB R10 R9 K22 - 0x402A600A, // 0096 CONNECT R10 K48 R10 + 0x402A2A0A, // 0096 CONNECT R10 K21 R10 0x9420100A, // 0097 GETIDX R8 R8 R10 - 0x8C280731, // 0098 GETMET R10 R3 K49 - 0x88300940, // 0099 GETMBR R12 R4 K64 + 0x8C28072E, // 0098 GETMET R10 R3 K46 + 0x8830093D, // 0099 GETMBR R12 R4 K61 0x5C341000, // 009A MOVE R13 R8 0x7C280600, // 009B CALL R10 3 0x80041400, // 009C RET 1 R10 0x70020004, // 009D JMP #00A3 - 0x8C240731, // 009E GETMET R9 R3 K49 - 0x882C0946, // 009F GETMBR R11 R4 K70 + 0x8C24072E, // 009E GETMET R9 R3 K46 + 0x882C0943, // 009F GETMBR R11 R4 K67 0x4C300000, // 00A0 LDNIL R12 0x7C240600, // 00A1 CALL R9 3 0x80041200, // 00A2 RET 1 R9 0x70020014, // 00A3 JMP #00B9 - 0xB8228200, // 00A4 GETNGBL R8 K65 - 0x8C201142, // 00A5 GETMET R8 R8 K66 - 0x58280047, // 00A6 LDCONST R10 K71 + 0xB8227C00, // 00A4 GETNGBL R8 K62 + 0x8C20113F, // 00A5 GETMET R8 R8 K63 + 0x58280044, // 00A6 LDCONST R10 K68 0x502C0200, // 00A7 LDBOOL R11 1 0 0x7C200600, // 00A8 CALL R8 3 - 0x94201148, // 00A9 GETIDX R8 R8 K72 - 0x94201149, // 00AA GETIDX R8 R8 K73 - 0x8C240F39, // 00AB GETMET R9 R7 K57 + 0x94201145, // 00A9 GETIDX R8 R8 K69 + 0x94201146, // 00AA GETIDX R8 R8 K70 + 0x8C240F36, // 00AB GETMET R9 R7 K54 0x5C2C1000, // 00AC MOVE R11 R8 - 0x58300045, // 00AD LDCONST R12 K69 + 0x58300042, // 00AD LDCONST R12 K66 0x7C240600, // 00AE CALL R9 3 - 0x24281330, // 00AF GT R10 R9 K48 + 0x24281315, // 00AF GT R10 R9 K21 0x782A0002, // 00B0 JMPF R10 #00B4 0x04281316, // 00B1 SUB R10 R9 K22 - 0x402A600A, // 00B2 CONNECT R10 K48 R10 + 0x402A2A0A, // 00B2 CONNECT R10 K21 R10 0x9420100A, // 00B3 GETIDX R8 R8 R10 - 0x8C280731, // 00B4 GETMET R10 R3 K49 - 0x88300940, // 00B5 GETMBR R12 R4 K64 + 0x8C28072E, // 00B4 GETMET R10 R3 K46 + 0x8830093D, // 00B5 GETMBR R12 R4 K61 0x5C341000, // 00B6 MOVE R13 R8 0x7C280600, // 00B7 CALL R10 3 0x80041400, // 00B8 RET 1 R10 @@ -997,24 +993,24 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x8820010A, // 00C0 GETMBR R8 R0 K10 0x7822000B, // 00C1 JMPF R8 #00CE 0x88200100, // 00C2 GETMBR R8 R0 K0 - 0x8C20113D, // 00C3 GETMET R8 R8 K61 + 0x8C20113A, // 00C3 GETMET R8 R8 K58 0x7C200200, // 00C4 CALL R8 1 - 0x8C201139, // 00C5 GETMET R8 R8 K57 - 0x5828004A, // 00C6 LDCONST R10 K74 + 0x8C201136, // 00C5 GETMET R8 R8 K54 + 0x58280047, // 00C6 LDCONST R10 K71 0x7C200400, // 00C7 CALL R8 2 - 0x8C24073F, // 00C8 GETMET R9 R3 K63 - 0x882C0940, // 00C9 GETMBR R11 R4 K64 + 0x8C24073C, // 00C8 GETMET R9 R3 K60 + 0x882C093D, // 00C9 GETMBR R11 R4 K61 0x5C301000, // 00CA MOVE R12 R8 0x7C240600, // 00CB CALL R9 3 0x80041200, // 00CC RET 1 R9 0x7002000A, // 00CD JMP #00D9 - 0x8C200731, // 00CE GETMET R8 R3 K49 - 0x88280940, // 00CF GETMBR R10 R4 K64 - 0xB82E8200, // 00D0 GETNGBL R11 K65 - 0x8C2C174B, // 00D1 GETMET R11 R11 K75 + 0x8C20072E, // 00CE GETMET R8 R3 K46 + 0x8828093D, // 00CF GETMBR R10 R4 K61 + 0xB82E7C00, // 00D0 GETNGBL R11 K62 + 0x8C2C1748, // 00D1 GETMET R11 R11 K72 0x7C2C0200, // 00D2 CALL R11 1 - 0x8C2C1739, // 00D3 GETMET R11 R11 K57 - 0x5834004A, // 00D4 LDCONST R13 K74 + 0x8C2C1736, // 00D3 GETMET R11 R11 K54 + 0x58340047, // 00D4 LDCONST R13 K71 0x5838000F, // 00D5 LDCONST R14 K15 0x7C2C0600, // 00D6 CALL R11 3 0x7C200600, // 00D7 CALL R8 3 @@ -1025,22 +1021,22 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */ 0x7822000D, // 00DC JMPF R8 #00EB 0x8820010A, // 00DD GETMBR R8 R0 K10 0x78220006, // 00DE JMPF R8 #00E6 - 0x8C200731, // 00DF GETMET R8 R3 K49 - 0x8828094C, // 00E0 GETMBR R10 R4 K76 + 0x8C20072E, // 00DF GETMET R8 R3 K46 + 0x88280949, // 00E0 GETMBR R10 R4 K73 0x882C0100, // 00E1 GETMBR R11 R0 K0 - 0x882C174D, // 00E2 GETMBR R11 R11 K77 + 0x882C174A, // 00E2 GETMBR R11 R11 K74 0x7C200600, // 00E3 CALL R8 3 0x80041000, // 00E4 RET 1 R8 0x70020004, // 00E5 JMP #00EB - 0x8C200731, // 00E6 GETMET R8 R3 K49 - 0x8828094C, // 00E7 GETMBR R10 R4 K76 + 0x8C20072E, // 00E6 GETMET R8 R3 K46 + 0x88280949, // 00E7 GETMBR R10 R4 K73 0x582C0016, // 00E8 LDCONST R11 K22 0x7C200600, // 00E9 CALL R8 3 0x80041000, // 00EA RET 1 R8 0x601C0003, // 00EB GETGBL R7 G3 0x5C200000, // 00EC MOVE R8 R0 0x7C1C0200, // 00ED CALL R7 1 - 0x8C1C0F4E, // 00EE GETMET R7 R7 K78 + 0x8C1C0F4B, // 00EE GETMET R7 R7 K75 0x5C240200, // 00EF MOVE R9 R1 0x5C280400, // 00F0 MOVE R10 R2 0x5C2C0600, // 00F1 MOVE R11 R3 @@ -1072,23 +1068,23 @@ be_local_closure(class_Matter_Plugin_Device_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C10094F, // 0003 GETMET R4 R4 K79 + 0x8C10094C, // 0003 GETMET R4 R4 K76 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 0x8810010A, // 0008 GETMBR R4 R0 K10 0x7812000A, // 0009 JMPF R4 #0015 - 0x8C100739, // 000A GETMET R4 R3 K57 - 0x88180150, // 000B GETMBR R6 R0 K80 + 0x8C100736, // 000A GETMET R4 R3 K54 + 0x8818014D, // 000B GETMBR R6 R0 K77 0x7C100400, // 000C CALL R4 2 0x8814011C, // 000D GETMBR R5 R0 K28 - 0x8C140B51, // 000E GETMET R5 R5 K81 + 0x8C140B4E, // 000E GETMET R5 R5 K78 0x5C1C0800, // 000F MOVE R7 R4 - 0x88200152, // 0010 GETMBR R8 R0 K82 + 0x8820014F, // 0010 GETMBR R8 R0 K79 0x7C140600, // 0011 CALL R5 3 0x90020005, // 0012 SETMBR R0 K0 R5 - 0x8C140153, // 0013 GETMET R5 R0 K83 + 0x8C140150, // 0013 GETMET R5 R0 K80 0x7C140200, // 0014 CALL R5 1 0x80000000, // 0015 RET 0 }) @@ -1171,98 +1167,98 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */ be_str_weak(append_state_json), &be_const_str_solidified, ( &(const binstruction[95]) { /* code */ - 0xA406A800, // 0000 IMPORT R1 K84 - 0xA40A4000, // 0001 IMPORT R2 K32 + 0xA406A200, // 0000 IMPORT R1 K81 + 0xA40A3E00, // 0001 IMPORT R2 K31 0x580C000F, // 0002 LDCONST R3 K15 0x84100000, // 0003 CLOSURE R4 P0 - 0x8C140355, // 0004 GETMET R5 R1 K85 + 0x8C140352, // 0004 GETMET R5 R1 K82 0x5C1C0000, // 0005 MOVE R7 R0 - 0x58200056, // 0006 LDCONST R8 K86 + 0x58200053, // 0006 LDCONST R8 K83 0x7C140600, // 0007 CALL R5 3 0x78160013, // 0008 JMPF R5 #001D - 0x8C180357, // 0009 GETMET R6 R1 K87 + 0x8C180354, // 0009 GETMET R6 R1 K84 0x5C200000, // 000A MOVE R8 R0 - 0x58240058, // 000B LDCONST R9 K88 + 0x58240055, // 000B LDCONST R9 K85 0x7C180600, // 000C CALL R6 3 0x781A000E, // 000D JMPF R6 #001D - 0x88180158, // 000E GETMBR R6 R0 K88 + 0x88180155, // 000E GETMBR R6 R0 K85 0x4C1C0000, // 000F LDNIL R7 0x20180C07, // 0010 NE R6 R6 R7 0x781A0003, // 0011 JMPF R6 #0016 - 0x8C180559, // 0012 GETMET R6 R2 K89 - 0x88200158, // 0013 GETMBR R8 R0 K88 + 0x8C180556, // 0012 GETMET R6 R2 K86 + 0x88200155, // 0013 GETMBR R8 R0 K85 0x7C180400, // 0014 CALL R6 2 0x70020000, // 0015 JMP #0017 - 0x5818005A, // 0016 LDCONST R6 K90 + 0x58180057, // 0016 LDCONST R6 K87 0x601C0018, // 0017 GETGBL R7 G24 - 0x5820005B, // 0018 LDCONST R8 K91 + 0x58200058, // 0018 LDCONST R8 K88 0x5C240A00, // 0019 MOVE R9 R5 0x5C280C00, // 001A MOVE R10 R6 0x7C1C0600, // 001B CALL R7 3 0x000C0607, // 001C ADD R3 R3 R7 0x5C180800, // 001D MOVE R6 R4 - 0x581C005C, // 001E LDCONST R7 K92 - 0x5820005D, // 001F LDCONST R8 K93 + 0x581C0059, // 001E LDCONST R7 K89 + 0x5820005A, // 001F LDCONST R8 K90 0x7C180400, // 0020 CALL R6 2 0x5C180800, // 0021 MOVE R6 R4 - 0x581C005E, // 0022 LDCONST R7 K94 - 0x5820005F, // 0023 LDCONST R8 K95 + 0x581C005B, // 0022 LDCONST R7 K91 + 0x5820005C, // 0023 LDCONST R8 K92 0x7C180400, // 0024 CALL R6 2 0x5C180800, // 0025 MOVE R6 R4 - 0x581C0060, // 0026 LDCONST R7 K96 - 0x58200061, // 0027 LDCONST R8 K97 + 0x581C005D, // 0026 LDCONST R7 K93 + 0x5820005E, // 0027 LDCONST R8 K94 0x7C180400, // 0028 CALL R6 2 0x5C180800, // 0029 MOVE R6 R4 - 0x581C0062, // 002A LDCONST R7 K98 - 0x58200063, // 002B LDCONST R8 K99 + 0x581C005F, // 002A LDCONST R7 K95 + 0x58200060, // 002B LDCONST R8 K96 0x7C180400, // 002C CALL R6 2 0x5C180800, // 002D MOVE R6 R4 - 0x581C0064, // 002E LDCONST R7 K100 - 0x58200065, // 002F LDCONST R8 K101 + 0x581C0061, // 002E LDCONST R7 K97 + 0x58200062, // 002F LDCONST R8 K98 0x7C180400, // 0030 CALL R6 2 0x5C180800, // 0031 MOVE R6 R4 - 0x581C0066, // 0032 LDCONST R7 K102 - 0x58200067, // 0033 LDCONST R8 K103 + 0x581C0063, // 0032 LDCONST R7 K99 + 0x58200064, // 0033 LDCONST R8 K100 0x7C180400, // 0034 CALL R6 2 0x5C180800, // 0035 MOVE R6 R4 - 0x581C0068, // 0036 LDCONST R7 K104 - 0x58200069, // 0037 LDCONST R8 K105 + 0x581C0065, // 0036 LDCONST R7 K101 + 0x58200066, // 0037 LDCONST R8 K102 0x7C180400, // 0038 CALL R6 2 0x5C180800, // 0039 MOVE R6 R4 - 0x581C006A, // 003A LDCONST R7 K106 - 0x5820006B, // 003B LDCONST R8 K107 + 0x581C0067, // 003A LDCONST R7 K103 + 0x58200068, // 003B LDCONST R8 K104 0x7C180400, // 003C CALL R6 2 0x5C180800, // 003D MOVE R6 R4 - 0x581C006C, // 003E LDCONST R7 K108 - 0x5820006D, // 003F LDCONST R8 K109 + 0x581C0069, // 003E LDCONST R7 K105 + 0x5820006A, // 003F LDCONST R8 K106 0x7C180400, // 0040 CALL R6 2 0x5C180800, // 0041 MOVE R6 R4 - 0x581C006E, // 0042 LDCONST R7 K110 - 0x5820006F, // 0043 LDCONST R8 K111 + 0x581C006B, // 0042 LDCONST R7 K107 + 0x5820006C, // 0043 LDCONST R8 K108 0x7C180400, // 0044 CALL R6 2 0x5C180800, // 0045 MOVE R6 R4 - 0x581C0070, // 0046 LDCONST R7 K112 - 0x58200071, // 0047 LDCONST R8 K113 + 0x581C006D, // 0046 LDCONST R7 K109 + 0x5820006E, // 0047 LDCONST R8 K110 0x7C180400, // 0048 CALL R6 2 0x5C180800, // 0049 MOVE R6 R4 - 0x581C0072, // 004A LDCONST R7 K114 - 0x58200073, // 004B LDCONST R8 K115 + 0x581C006F, // 004A LDCONST R7 K111 + 0x58200070, // 004B LDCONST R8 K112 0x7C180400, // 004C CALL R6 2 0x5C180800, // 004D MOVE R6 R4 - 0x581C0074, // 004E LDCONST R7 K116 - 0x58200075, // 004F LDCONST R8 K117 + 0x581C0071, // 004E LDCONST R7 K113 + 0x58200072, // 004F LDCONST R8 K114 0x7C180400, // 0050 CALL R6 2 0x5C180800, // 0051 MOVE R6 R4 - 0x581C0076, // 0052 LDCONST R7 K118 - 0x58200077, // 0053 LDCONST R8 K119 + 0x581C0073, // 0052 LDCONST R7 K115 + 0x58200074, // 0053 LDCONST R8 K116 0x7C180400, // 0054 CALL R6 2 0x5C180800, // 0055 MOVE R6 R4 - 0x581C0078, // 0056 LDCONST R7 K120 - 0x58200079, // 0057 LDCONST R8 K121 + 0x581C0075, // 0056 LDCONST R7 K117 + 0x58200076, // 0057 LDCONST R8 K118 0x7C180400, // 0058 CALL R6 2 0x5C180800, // 0059 MOVE R6 R4 - 0x581C007A, // 005A LDCONST R7 K122 - 0x5820007B, // 005B LDCONST R8 K123 + 0x581C0077, // 005A LDCONST R7 K119 + 0x58200078, // 005B LDCONST R8 K120 0x7C180400, // 005C CALL R6 2 0xA0000000, // 005D CLOSE R0 0x80040600, // 005E RET 1 R3 @@ -1289,7 +1285,7 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ be_str_weak(_parse_sensor_entry), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C1C0339, // 0000 GETMET R7 R1 K57 + 0x8C1C0336, // 0000 GETMET R7 R1 K54 0x5C240400, // 0001 MOVE R9 R2 0x7C1C0400, // 0002 CALL R7 2 0x4C200000, // 0003 LDNIL R8 @@ -1301,7 +1297,7 @@ be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */ 0x5C1C1000, // 0009 MOVE R7 R8 0x20200E03, // 000A NE R8 R7 R3 0x78220003, // 000B JMPF R8 #0010 - 0x8C20017C, // 000C GETMET R8 R0 K124 + 0x8C200179, // 000C GETMET R8 R0 K121 0x5C280A00, // 000D MOVE R10 R5 0x5C2C0C00, // 000E MOVE R11 R6 0x7C200600, // 000F CALL R8 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index d81523286..7eff47eae 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Root' ktab size: 176, total: 225 (saved 392 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Root[176] = { +// compact class 'Matter_Plugin_Root' ktab size: 172, total: 225 (saved 424 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Root[172] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -101,86 +101,82 @@ static const bvalue be_ktab_class_Matter_Plugin_Root[176] = { /* K93 */ be_nested_str_weak(disable_bridge_mode), /* K94 */ be_nested_str_weak(AGGREGATOR_ENDPOINT), /* K95 */ be_nested_str_weak(read_attribute), - /* K96 */ be_const_int(0), - /* K97 */ be_nested_str_weak(int), - /* K98 */ be_nested_str_weak(attribute_updated), - /* K99 */ be_nested_str_weak(status), - /* K100 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K101 */ be_const_int(1), - /* K102 */ be_nested_str_weak(INVALID_ACTION), - /* K103 */ be_nested_str_weak(init), - /* K104 */ be_nested_str_weak(publish_event), - /* K105 */ be_nested_str_weak(EVENT_CRITICAL), - /* K106 */ be_nested_str_weak(Matter_TLV_item), - /* K107 */ be_const_int(3), - /* K108 */ be_nested_str_weak(crypto), - /* K109 */ be_nested_str_weak(command), - /* K110 */ be_const_int(2), - /* K111 */ be_nested_str_weak(fabric_completed), - /* K112 */ be_nested_str_weak(set_no_expiration), - /* K113 */ be_nested_str_weak(save), - /* K114 */ be_nested_str_weak(start_commissioning_complete_deferred), - /* K115 */ be_nested_str_weak(context_error), - /* K116 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), - /* K117 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K118 */ be_nested_str_weak(DAC_Cert_FFF1_8000), - /* K119 */ be_nested_str_weak(PAI_Cert_FFF1), - /* K120 */ be_nested_str_weak(CD_FFF1_8000), - /* K121 */ be_nested_str_weak(tlv2raw), - /* K122 */ be_nested_str_weak(get_ac), - /* K123 */ be_nested_str_weak(EC_P256), - /* K124 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K125 */ be_nested_str_weak(DAC_Priv_FFF1_8000), - /* K126 */ be_nested_str_weak(gen_CSR), - /* K127 */ be_nested_str_weak(set_temp_ca), - /* K128 */ be_nested_str_weak(SUCCESS), - /* K129 */ be_nested_str_weak(log), - /* K130 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), - /* K131 */ be_nested_str_weak(get_temp_ca), - /* K132 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), - /* K133 */ be_nested_str_weak(create_fabric), - /* K134 */ be_nested_str_weak(set_ca), - /* K135 */ be_nested_str_weak(set_noc_icac), - /* K136 */ be_nested_str_weak(set_ipk_epoch_key), - /* K137 */ be_nested_str_weak(set_admin_subject_vendor), - /* K138 */ be_nested_str_weak(set_pk), - /* K139 */ be_nested_str_weak(get_pk), - /* K140 */ be_nested_str_weak(findsub), - /* K141 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), - /* K142 */ be_nested_str_weak(fromu32), - /* K143 */ be_nested_str_weak(tobytes), - /* K144 */ be_nested_str_weak(get_temp_ca_pub), - /* K145 */ be_const_int(2147483647), - /* K146 */ be_nested_str_weak(fromstring), - /* K147 */ be_nested_str_weak(CompressedFabric), - /* K148 */ be_nested_str_weak(HKDF_SHA256), - /* K149 */ be_nested_str_weak(copy), - /* K150 */ be_nested_str_weak(reverse), - /* K151 */ be_nested_str_weak(derive), - /* K152 */ be_nested_str_weak(set_fabric_device), - /* K153 */ be_nested_str_weak(fabric_candidate), - /* K154 */ be_nested_str_weak(start_operational_discovery_deferred), - /* K155 */ be_nested_str_weak(is_PASE), - /* K156 */ be_nested_str_weak(set_expire_in_seconds), - /* K157 */ be_nested_str_weak(log_new_fabric), - /* K158 */ be_nested_str_weak(assign_fabric_index), - /* K159 */ be_nested_str_weak(set_fabric_label), - /* K160 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), - /* K161 */ be_nested_str_weak(get_fabric_id), - /* K162 */ be_nested_str_weak(tohex), - /* K163 */ be_nested_str_weak(fabric_index_X3A), - /* K164 */ be_nested_str_weak(mark_for_deletion), - /* K165 */ be_nested_str_weak(set_timer), - /* K166 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), - /* K167 */ be_nested_str_weak(_X29_X20not_X20found), - /* K168 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), - /* K169 */ be_nested_str_weak(INVALID_DATA_TYPE), - /* K170 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), - /* K171 */ be_nested_str_weak(start_basic_commissioning), - /* K172 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), - /* K173 */ be_nested_str_weak(start_root_basic_commissioning), - /* K174 */ be_nested_str_weak(stop_basic_commissioning), - /* K175 */ be_nested_str_weak(invoke_request), + /* K96 */ be_nested_str_weak(int), + /* K97 */ be_nested_str_weak(attribute_updated), + /* K98 */ be_nested_str_weak(status), + /* K99 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K100 */ be_nested_str_weak(INVALID_ACTION), + /* K101 */ be_nested_str_weak(init), + /* K102 */ be_nested_str_weak(publish_event), + /* K103 */ be_nested_str_weak(EVENT_CRITICAL), + /* K104 */ be_nested_str_weak(Matter_TLV_item), + /* K105 */ be_nested_str_weak(crypto), + /* K106 */ be_nested_str_weak(command), + /* K107 */ be_nested_str_weak(fabric_completed), + /* K108 */ be_nested_str_weak(set_no_expiration), + /* K109 */ be_nested_str_weak(save), + /* K110 */ be_nested_str_weak(start_commissioning_complete_deferred), + /* K111 */ be_nested_str_weak(context_error), + /* K112 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), + /* K113 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K114 */ be_nested_str_weak(DAC_Cert_FFF1_8000), + /* K115 */ be_nested_str_weak(PAI_Cert_FFF1), + /* K116 */ be_nested_str_weak(CD_FFF1_8000), + /* K117 */ be_nested_str_weak(tlv2raw), + /* K118 */ be_nested_str_weak(get_ac), + /* K119 */ be_nested_str_weak(EC_P256), + /* K120 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K121 */ be_nested_str_weak(DAC_Priv_FFF1_8000), + /* K122 */ be_nested_str_weak(gen_CSR), + /* K123 */ be_nested_str_weak(set_temp_ca), + /* K124 */ be_nested_str_weak(SUCCESS), + /* K125 */ be_nested_str_weak(log), + /* K126 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), + /* K127 */ be_nested_str_weak(get_temp_ca), + /* K128 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), + /* K129 */ be_nested_str_weak(create_fabric), + /* K130 */ be_nested_str_weak(set_ca), + /* K131 */ be_nested_str_weak(set_noc_icac), + /* K132 */ be_nested_str_weak(set_ipk_epoch_key), + /* K133 */ be_nested_str_weak(set_admin_subject_vendor), + /* K134 */ be_nested_str_weak(set_pk), + /* K135 */ be_nested_str_weak(get_pk), + /* K136 */ be_nested_str_weak(findsub), + /* K137 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), + /* K138 */ be_nested_str_weak(fromu32), + /* K139 */ be_nested_str_weak(tobytes), + /* K140 */ be_nested_str_weak(get_temp_ca_pub), + /* K141 */ be_const_int(2147483647), + /* K142 */ be_nested_str_weak(fromstring), + /* K143 */ be_nested_str_weak(CompressedFabric), + /* K144 */ be_nested_str_weak(HKDF_SHA256), + /* K145 */ be_nested_str_weak(copy), + /* K146 */ be_nested_str_weak(reverse), + /* K147 */ be_nested_str_weak(derive), + /* K148 */ be_nested_str_weak(set_fabric_device), + /* K149 */ be_nested_str_weak(fabric_candidate), + /* K150 */ be_nested_str_weak(start_operational_discovery_deferred), + /* K151 */ be_nested_str_weak(is_PASE), + /* K152 */ be_nested_str_weak(set_expire_in_seconds), + /* K153 */ be_nested_str_weak(log_new_fabric), + /* K154 */ be_nested_str_weak(assign_fabric_index), + /* K155 */ be_nested_str_weak(set_fabric_label), + /* K156 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), + /* K157 */ be_nested_str_weak(get_fabric_id), + /* K158 */ be_nested_str_weak(tohex), + /* K159 */ be_nested_str_weak(fabric_index_X3A), + /* K160 */ be_nested_str_weak(mark_for_deletion), + /* K161 */ be_nested_str_weak(set_timer), + /* K162 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), + /* K163 */ be_nested_str_weak(_X29_X20not_X20found), + /* K164 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), + /* K165 */ be_nested_str_weak(INVALID_DATA_TYPE), + /* K166 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), + /* K167 */ be_nested_str_weak(start_basic_commissioning), + /* K168 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), + /* K169 */ be_nested_str_weak(start_root_basic_commissioning), + /* K170 */ be_nested_str_weak(stop_basic_commissioning), + /* K171 */ be_nested_str_weak(invoke_request), }; @@ -1159,12 +1155,12 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E002F, // 0004 LDINT R7 48 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0019, // 0006 JMPF R7 #0021 - 0x1C1C0D60, // 0007 EQ R7 R6 K96 + 0x1C1C0D05, // 0007 EQ R7 R6 K5 0x781E0016, // 0008 JMPF R7 #0020 0x601C0004, // 0009 GETGBL R7 G4 0x5C200600, // 000A MOVE R8 R3 0x7C1C0200, // 000B CALL R7 1 - 0x1C1C0F61, // 000C EQ R7 R7 K97 + 0x1C1C0F60, // 000C EQ R7 R7 K96 0x741E0004, // 000D JMPT R7 #0013 0x601C000F, // 000E GETGBL R7 G15 0x5C200600, // 000F MOVE R8 R3 @@ -1172,7 +1168,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x7C1C0400, // 0011 CALL R7 2 0x781E0007, // 0012 JMPF R7 #001B 0x90061003, // 0013 SETMBR R1 K8 R3 - 0x8C1C0162, // 0014 GETMET R7 R0 K98 + 0x8C1C0161, // 0014 GETMET R7 R0 K97 0x88240503, // 0015 GETMBR R9 R2 K3 0x88280504, // 0016 GETMBR R10 R2 K4 0x7C1C0600, // 0017 CALL R7 3 @@ -1180,15 +1176,15 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x80040E00, // 0019 RET 1 R7 0x70020004, // 001A JMP #0020 0xB81E0200, // 001B GETNGBL R7 K1 - 0x881C0F64, // 001C GETMBR R7 R7 K100 - 0x900AC607, // 001D SETMBR R2 K99 R7 + 0x881C0F63, // 001C GETMBR R7 R7 K99 + 0x900AC407, // 001D SETMBR R2 K98 R7 0x501C0000, // 001E LDBOOL R7 0 0 0x80040E00, // 001F RET 1 R7 0x70020041, // 0020 JMP #0063 0x541E001E, // 0021 LDINT R7 31 0x1C1C0A07, // 0022 EQ R7 R5 R7 0x781E0004, // 0023 JMPF R7 #0029 - 0x1C1C0D60, // 0024 EQ R7 R6 K96 + 0x1C1C0D05, // 0024 EQ R7 R6 K5 0x781E0001, // 0025 JMPF R7 #0028 0x501C0200, // 0026 LDBOOL R7 1 0 0x80040E00, // 0027 RET 1 R7 @@ -1211,7 +1207,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E0029, // 0038 LDINT R7 42 0x1C1C0A07, // 0039 EQ R7 R5 R7 0x781E0004, // 003A JMPF R7 #0040 - 0x1C1C0D60, // 003B EQ R7 R6 K96 + 0x1C1C0D05, // 003B EQ R7 R6 K5 0x781E0001, // 003C JMPF R7 #003F 0x501C0200, // 003D LDBOOL R7 1 0 0x80040E00, // 003E RET 1 R7 @@ -1219,23 +1215,23 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x541E002A, // 0040 LDINT R7 43 0x1C1C0A07, // 0041 EQ R7 R5 R7 0x781E0007, // 0042 JMPF R7 #004B - 0x1C1C0D60, // 0043 EQ R7 R6 K96 + 0x1C1C0D05, // 0043 EQ R7 R6 K5 0x781E0004, // 0044 JMPF R7 #004A 0xB81E0200, // 0045 GETNGBL R7 K1 - 0x881C0F64, // 0046 GETMBR R7 R7 K100 - 0x900AC607, // 0047 SETMBR R2 K99 R7 + 0x881C0F63, // 0046 GETMBR R7 R7 K99 + 0x900AC407, // 0047 SETMBR R2 K98 R7 0x501C0000, // 0048 LDBOOL R7 0 0 0x80040E00, // 0049 RET 1 R7 0x70020017, // 004A JMP #0063 0x541E002B, // 004B LDINT R7 44 0x1C1C0A07, // 004C EQ R7 R5 R7 0x781E0009, // 004D JMPF R7 #0058 - 0x1C1C0D60, // 004E EQ R7 R6 K96 + 0x1C1C0D05, // 004E EQ R7 R6 K5 0x781E0002, // 004F JMPF R7 #0053 0x501C0200, // 0050 LDBOOL R7 1 0 0x80040E00, // 0051 RET 1 R7 0x70020003, // 0052 JMP #0057 - 0x1C1C0D65, // 0053 EQ R7 R6 K101 + 0x1C1C0D09, // 0053 EQ R7 R6 K9 0x781E0001, // 0054 JMPF R7 #0057 0x501C0200, // 0055 LDBOOL R7 1 0 0x80040E00, // 0056 RET 1 R7 @@ -1247,8 +1243,8 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */ 0x1C1C0C07, // 005C EQ R7 R6 R7 0x781E0004, // 005D JMPF R7 #0063 0xB81E0200, // 005E GETNGBL R7 K1 - 0x881C0F66, // 005F GETMBR R7 R7 K102 - 0x900AC607, // 0060 SETMBR R2 K99 R7 + 0x881C0F64, // 005F GETMBR R7 R7 K100 + 0x900AC407, // 0060 SETMBR R2 K98 R7 0x501C0000, // 0061 LDBOOL R7 0 0 0x80040E00, // 0062 RET 1 R7 0x80000000, // 0063 RET 0 @@ -1278,19 +1274,19 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C100967, // 0003 GETMET R4 R4 K103 + 0x8C100965, // 0003 GETMET R4 R4 K101 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x8C100168, // 0008 GETMET R4 R0 K104 + 0x8C100166, // 0008 GETMET R4 R0 K102 0x541A0027, // 0009 LDINT R6 40 0x581C0005, // 000A LDCONST R7 K5 0xB8220200, // 000B GETNGBL R8 K1 - 0x88201169, // 000C GETMBR R8 R8 K105 + 0x88201167, // 000C GETMBR R8 R8 K103 0xB8260200, // 000D GETNGBL R9 K1 0x88241302, // 000E GETMBR R9 R9 K2 - 0x8C24136A, // 000F GETMET R9 R9 K106 + 0x8C241368, // 000F GETMET R9 R9 K104 0x7C240200, // 0010 CALL R9 1 0x8C241306, // 0011 GETMET R9 R9 K6 0xB82E0200, // 0012 GETNGBL R11 K1 @@ -1301,20 +1297,20 @@ be_local_closure(class_Matter_Plugin_Root_init, /* name */ 0x7C300200, // 0017 CALL R12 1 0x7C240600, // 0018 CALL R9 3 0x7C100A00, // 0019 CALL R4 5 - 0x8C100168, // 001A GETMET R4 R0 K104 + 0x8C100166, // 001A GETMET R4 R0 K102 0x541A0032, // 001B LDINT R6 51 - 0x581C006B, // 001C LDCONST R7 K107 + 0x581C000F, // 001C LDCONST R7 K15 0xB8220200, // 001D GETNGBL R8 K1 - 0x88201169, // 001E GETMBR R8 R8 K105 + 0x88201167, // 001E GETMBR R8 R8 K103 0xB8260200, // 001F GETNGBL R9 K1 0x88241302, // 0020 GETMBR R9 R9 K2 - 0x8C24136A, // 0021 GETMET R9 R9 K106 + 0x8C241368, // 0021 GETMET R9 R9 K104 0x7C240200, // 0022 CALL R9 1 0x8C241306, // 0023 GETMET R9 R9 K6 0xB82E0200, // 0024 GETNGBL R11 K1 0x882C1702, // 0025 GETMBR R11 R11 K2 0x882C170E, // 0026 GETMBR R11 R11 K14 - 0x58300065, // 0027 LDCONST R12 K101 + 0x58300009, // 0027 LDCONST R12 K9 0x7C240600, // 0028 CALL R9 3 0x7C100A00, // 0029 CALL R4 5 0x80000000, // 002A RET 0 @@ -1369,67 +1365,67 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[737]) { /* code */ - 0xA412D800, // 0000 IMPORT R4 K108 + 0xA412D200, // 0000 IMPORT R4 K105 0xB8160200, // 0001 GETNGBL R5 K1 0x88140B02, // 0002 GETMBR R5 R5 K2 0x88180703, // 0003 GETMBR R6 R3 K3 - 0x881C076D, // 0004 GETMBR R7 R3 K109 + 0x881C076A, // 0004 GETMBR R7 R3 K106 0x5422002F, // 0005 LDINT R8 48 0x1C200C08, // 0006 EQ R8 R6 R8 0x7822005C, // 0007 JMPF R8 #0065 - 0x1C200F60, // 0008 EQ R8 R7 K96 + 0x1C200F05, // 0008 EQ R8 R7 K5 0x78220017, // 0009 JMPF R8 #0022 0x8C200541, // 000A GETMET R8 R2 K65 - 0x58280060, // 000B LDCONST R10 K96 + 0x58280005, // 000B LDCONST R10 K5 0x542E0383, // 000C LDINT R11 900 0x7C200600, // 000D CALL R8 3 0x8C240541, // 000E GETMET R9 R2 K65 - 0x582C0065, // 000F LDCONST R11 K101 - 0x58300060, // 0010 LDCONST R12 K96 + 0x582C0009, // 000F LDCONST R11 K9 + 0x58300005, // 0010 LDCONST R12 K5 0x7C240600, // 0011 CALL R9 3 0x90061009, // 0012 SETMBR R1 K8 R9 0x8C280B0A, // 0013 GETMET R10 R5 K10 0x7C280200, // 0014 CALL R10 1 0x8C2C150B, // 0015 GETMET R11 R10 K11 - 0x58340060, // 0016 LDCONST R13 K96 + 0x58340005, // 0016 LDCONST R13 K5 0x88380B0E, // 0017 GETMBR R14 R5 K14 - 0x583C0060, // 0018 LDCONST R15 K96 + 0x583C0005, // 0018 LDCONST R15 K5 0x7C2C0800, // 0019 CALL R11 4 0x8C2C150B, // 001A GETMET R11 R10 K11 - 0x58340065, // 001B LDCONST R13 K101 + 0x58340009, // 001B LDCONST R13 K9 0x88380B16, // 001C GETMBR R14 R5 K22 0x583C001D, // 001D LDCONST R15 K29 0x7C2C0800, // 001E CALL R11 4 - 0x900EDB65, // 001F SETMBR R3 K109 K101 + 0x900ED509, // 001F SETMBR R3 K106 K9 0x80041400, // 0020 RET 1 R10 0x70020041, // 0021 JMP #0064 - 0x1C200F6E, // 0022 EQ R8 R7 K110 + 0x1C200F0D, // 0022 EQ R8 R7 K13 0x7822001A, // 0023 JMPF R8 #003F 0x8C200541, // 0024 GETMET R8 R2 K65 - 0x58280060, // 0025 LDCONST R10 K96 + 0x58280005, // 0025 LDCONST R10 K5 0x7C200400, // 0026 CALL R8 2 0x8C240541, // 0027 GETMET R9 R2 K65 - 0x582C0065, // 0028 LDCONST R11 K101 + 0x582C0009, // 0028 LDCONST R11 K9 0x58300053, // 0029 LDCONST R12 K83 0x7C240600, // 002A CALL R9 3 0x8C280541, // 002B GETMET R10 R2 K65 - 0x5830006E, // 002C LDCONST R12 K110 - 0x58340060, // 002D LDCONST R13 K96 + 0x5830000D, // 002C LDCONST R12 K13 + 0x58340005, // 002D LDCONST R13 K5 0x7C280600, // 002E CALL R10 3 0x9006100A, // 002F SETMBR R1 K8 R10 0x8C2C0B0A, // 0030 GETMET R11 R5 K10 0x7C2C0200, // 0031 CALL R11 1 0x8C30170B, // 0032 GETMET R12 R11 K11 - 0x58380060, // 0033 LDCONST R14 K96 + 0x58380005, // 0033 LDCONST R14 K5 0x883C0B0E, // 0034 GETMBR R15 R5 K14 - 0x58400060, // 0035 LDCONST R16 K96 + 0x58400005, // 0035 LDCONST R16 K5 0x7C300800, // 0036 CALL R12 4 0x8C30170B, // 0037 GETMET R12 R11 K11 - 0x58380065, // 0038 LDCONST R14 K101 + 0x58380009, // 0038 LDCONST R14 K9 0x883C0B16, // 0039 GETMBR R15 R5 K22 0x5840001D, // 003A LDCONST R16 K29 0x7C300800, // 003B CALL R12 4 - 0x900EDB6B, // 003C SETMBR R3 K109 K107 + 0x900ED50F, // 003C SETMBR R3 K106 K15 0x80041600, // 003D RET 1 R11 0x70020024, // 003E JMP #0064 0x54220003, // 003F LDINT R8 4 @@ -1440,75 +1436,75 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C200400, // 0044 CALL R8 2 0x88200349, // 0045 GETMBR R8 R1 K73 0x7822001B, // 0046 JMPF R8 #0063 - 0x90061160, // 0047 SETMBR R1 K8 K96 + 0x90061105, // 0047 SETMBR R1 K8 K5 0x88200349, // 0048 GETMBR R8 R1 K73 - 0x8C20116F, // 0049 GETMET R8 R8 K111 + 0x8C20116B, // 0049 GETMET R8 R8 K107 0x7C200200, // 004A CALL R8 1 - 0x8C200370, // 004B GETMET R8 R1 K112 + 0x8C20036C, // 004B GETMET R8 R1 K108 0x7C200200, // 004C CALL R8 1 - 0x8C200371, // 004D GETMET R8 R1 K113 + 0x8C20036D, // 004D GETMET R8 R1 K109 0x7C200200, // 004E CALL R8 1 0x8C200B0A, // 004F GETMET R8 R5 K10 0x7C200200, // 0050 CALL R8 1 0x8C24110B, // 0051 GETMET R9 R8 K11 - 0x582C0060, // 0052 LDCONST R11 K96 + 0x582C0005, // 0052 LDCONST R11 K5 0x88300B0E, // 0053 GETMBR R12 R5 K14 - 0x58340060, // 0054 LDCONST R13 K96 + 0x58340005, // 0054 LDCONST R13 K5 0x7C240800, // 0055 CALL R9 4 0x8C24110B, // 0056 GETMET R9 R8 K11 - 0x582C0065, // 0057 LDCONST R11 K101 + 0x582C0009, // 0057 LDCONST R11 K9 0x88300B16, // 0058 GETMBR R12 R5 K22 0x5834001D, // 0059 LDCONST R13 K29 0x7C240800, // 005A CALL R9 4 0x54260004, // 005B LDINT R9 5 - 0x900EDA09, // 005C SETMBR R3 K109 R9 + 0x900ED409, // 005C SETMBR R3 K106 R9 0x88240136, // 005D GETMBR R9 R0 K54 - 0x8C241372, // 005E GETMET R9 R9 K114 + 0x8C24136E, // 005E GETMET R9 R9 K110 0x5C2C0200, // 005F MOVE R11 R1 0x7C240400, // 0060 CALL R9 2 0x80041000, // 0061 RET 1 R8 0x70020000, // 0062 JMP #0064 - 0xB006E774, // 0063 RAISE 1 K115 K116 + 0xB006DF70, // 0063 RAISE 1 K111 K112 0x70020279, // 0064 JMP #02DF 0x5422003D, // 0065 LDINT R8 62 0x1C200C08, // 0066 EQ R8 R6 R8 0x782201DD, // 0067 JMPF R8 #0246 - 0x1C200F6E, // 0068 EQ R8 R7 K110 + 0x1C200F0D, // 0068 EQ R8 R7 K13 0x7822001D, // 0069 JMPF R8 #0088 0x8C200541, // 006A GETMET R8 R2 K65 - 0x58280060, // 006B LDCONST R10 K96 + 0x58280005, // 006B LDCONST R10 K5 0x7C200400, // 006C CALL R8 2 - 0x20241165, // 006D NE R9 R8 K101 + 0x20241109, // 006D NE R9 R8 K9 0x78260006, // 006E JMPF R9 #0076 - 0x2024116E, // 006F NE R9 R8 K110 + 0x2024110D, // 006F NE R9 R8 K13 0x78260004, // 0070 JMPF R9 #0076 0xB8260200, // 0071 GETNGBL R9 K1 - 0x88241375, // 0072 GETMBR R9 R9 K117 - 0x900EC609, // 0073 SETMBR R3 K99 R9 + 0x88241371, // 0072 GETMBR R9 R9 K113 + 0x900EC409, // 0073 SETMBR R3 K98 R9 0x4C240000, // 0074 LDNIL R9 0x80041200, // 0075 RET 1 R9 0x8C240B0A, // 0076 GETMET R9 R5 K10 0x7C240200, // 0077 CALL R9 1 0x8C28130B, // 0078 GETMET R10 R9 K11 - 0x58300060, // 0079 LDCONST R12 K96 + 0x58300005, // 0079 LDCONST R12 K5 0x88340B3A, // 007A GETMBR R13 R5 K58 - 0x1C381165, // 007B EQ R14 R8 K101 + 0x1C381109, // 007B EQ R14 R8 K9 0x783A0003, // 007C JMPF R14 #0081 0xB83A0200, // 007D GETNGBL R14 K1 - 0x8C381D76, // 007E GETMET R14 R14 K118 + 0x8C381D72, // 007E GETMET R14 R14 K114 0x7C380200, // 007F CALL R14 1 0x70020002, // 0080 JMP #0084 0xB83A0200, // 0081 GETNGBL R14 K1 - 0x8C381D77, // 0082 GETMET R14 R14 K119 + 0x8C381D73, // 0082 GETMET R14 R14 K115 0x7C380200, // 0083 CALL R14 1 0x7C280800, // 0084 CALL R10 4 - 0x900EDB6B, // 0085 SETMBR R3 K109 K107 + 0x900ED50F, // 0085 SETMBR R3 K106 K15 0x80041200, // 0086 RET 1 R9 0x700201BC, // 0087 JMP #0245 - 0x1C200F60, // 0088 EQ R8 R7 K96 + 0x1C200F05, // 0088 EQ R8 R7 K5 0x7822003C, // 0089 JMPF R8 #00C7 0x8C200541, // 008A GETMET R8 R2 K65 - 0x58280060, // 008B LDCONST R10 K96 + 0x58280005, // 008B LDCONST R10 K5 0x7C200400, // 008C CALL R8 2 0x6024000C, // 008D GETGBL R9 G12 0x5C281000, // 008E MOVE R10 R8 @@ -1518,54 +1514,54 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x78260001, // 0092 JMPF R9 #0095 0x4C240000, // 0093 LDNIL R9 0x80041200, // 0094 RET 1 R9 - 0x900EDB65, // 0095 SETMBR R3 K109 K101 + 0x900ED509, // 0095 SETMBR R3 K106 K9 0x8C240B0A, // 0096 GETMET R9 R5 K10 0x7C240200, // 0097 CALL R9 1 0x8C28130B, // 0098 GETMET R10 R9 K11 - 0x58300065, // 0099 LDCONST R12 K101 + 0x58300009, // 0099 LDCONST R12 K9 0x88340B3A, // 009A GETMBR R13 R5 K58 0xB83A0200, // 009B GETNGBL R14 K1 - 0x8C381D78, // 009C GETMET R14 R14 K120 + 0x8C381D74, // 009C GETMET R14 R14 K116 0x7C380200, // 009D CALL R14 1 0x7C280800, // 009E CALL R10 4 0x8C28130B, // 009F GETMET R10 R9 K11 - 0x5830006E, // 00A0 LDCONST R12 K110 + 0x5830000D, // 00A0 LDCONST R12 K13 0x88340B1F, // 00A1 GETMBR R13 R5 K31 0x5C381000, // 00A2 MOVE R14 R8 0x7C280800, // 00A3 CALL R10 4 0x8C28130B, // 00A4 GETMET R10 R9 K11 - 0x5830006B, // 00A5 LDCONST R12 K107 + 0x5830000F, // 00A5 LDCONST R12 K15 0x88340B2A, // 00A6 GETMBR R13 R5 K42 0xB83A2400, // 00A7 GETNGBL R14 K18 0x8C381D2F, // 00A8 GETMET R14 R14 K47 0x7C380200, // 00A9 CALL R14 1 0x7C280800, // 00AA CALL R10 4 - 0x8C281379, // 00AB GETMET R10 R9 K121 + 0x8C281375, // 00AB GETMET R10 R9 K117 0x7C280200, // 00AC CALL R10 1 - 0x8C2C037A, // 00AD GETMET R11 R1 K122 + 0x8C2C0376, // 00AD GETMET R11 R1 K118 0x7C2C0200, // 00AE CALL R11 1 0x0030140B, // 00AF ADD R12 R10 R11 - 0x8C34097B, // 00B0 GETMET R13 R4 K123 + 0x8C340977, // 00B0 GETMET R13 R4 K119 0x7C340200, // 00B1 CALL R13 1 - 0x8C341B7C, // 00B2 GETMET R13 R13 K124 + 0x8C341B78, // 00B2 GETMET R13 R13 K120 0xB83E0200, // 00B3 GETNGBL R15 K1 - 0x8C3C1F7D, // 00B4 GETMET R15 R15 K125 + 0x8C3C1F79, // 00B4 GETMET R15 R15 K121 0x7C3C0200, // 00B5 CALL R15 1 0x5C401800, // 00B6 MOVE R16 R12 0x7C340600, // 00B7 CALL R13 3 0x8C380B0A, // 00B8 GETMET R14 R5 K10 0x7C380200, // 00B9 CALL R14 1 0x8C3C1D0B, // 00BA GETMET R15 R14 K11 - 0x58440060, // 00BB LDCONST R17 K96 + 0x58440005, // 00BB LDCONST R17 K5 0x88480B3A, // 00BC GETMBR R18 R5 K58 0x5C4C1400, // 00BD MOVE R19 R10 0x7C3C0800, // 00BE CALL R15 4 0x8C3C1D0B, // 00BF GETMET R15 R14 K11 - 0x58440065, // 00C0 LDCONST R17 K101 + 0x58440009, // 00C0 LDCONST R17 K9 0x88480B1F, // 00C1 GETMBR R18 R5 K31 0x5C4C1A00, // 00C2 MOVE R19 R13 0x7C3C0800, // 00C3 CALL R15 4 - 0x900EDB65, // 00C4 SETMBR R3 K109 K101 + 0x900ED509, // 00C4 SETMBR R3 K106 K9 0x80041C00, // 00C5 RET 1 R14 0x7002017D, // 00C6 JMP #0245 0x54220003, // 00C7 LDINT R8 4 @@ -1575,7 +1571,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5C280600, // 00CB MOVE R10 R3 0x7C200400, // 00CC CALL R8 2 0x8C200541, // 00CD GETMET R8 R2 K65 - 0x58280060, // 00CE LDCONST R10 K96 + 0x58280005, // 00CE LDCONST R10 K5 0x7C200400, // 00CF CALL R8 2 0x6024000C, // 00D0 GETGBL R9 G12 0x5C281000, // 00D1 MOVE R10 R8 @@ -1586,130 +1582,130 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x4C240000, // 00D6 LDNIL R9 0x80041200, // 00D7 RET 1 R9 0x8C240541, // 00D8 GETMET R9 R2 K65 - 0x582C0065, // 00D9 LDCONST R11 K101 + 0x582C0009, // 00D9 LDCONST R11 K9 0x50300000, // 00DA LDBOOL R12 0 0 0x7C240600, // 00DB CALL R9 3 - 0x8C28037E, // 00DC GETMET R10 R1 K126 + 0x8C28037A, // 00DC GETMET R10 R1 K122 0x7C280200, // 00DD CALL R10 1 0x8C2C0B0A, // 00DE GETMET R11 R5 K10 0x7C2C0200, // 00DF CALL R11 1 0x8C30170B, // 00E0 GETMET R12 R11 K11 - 0x58380065, // 00E1 LDCONST R14 K101 + 0x58380009, // 00E1 LDCONST R14 K9 0x883C0B3A, // 00E2 GETMBR R15 R5 K58 0x5C401400, // 00E3 MOVE R16 R10 0x7C300800, // 00E4 CALL R12 4 0x8C30170B, // 00E5 GETMET R12 R11 K11 - 0x5838006E, // 00E6 LDCONST R14 K110 + 0x5838000D, // 00E6 LDCONST R14 K13 0x883C0B1F, // 00E7 GETMBR R15 R5 K31 0x5C401000, // 00E8 MOVE R16 R8 0x7C300800, // 00E9 CALL R12 4 - 0x8C301779, // 00EA GETMET R12 R11 K121 + 0x8C301775, // 00EA GETMET R12 R11 K117 0x7C300200, // 00EB CALL R12 1 - 0x8C34037A, // 00EC GETMET R13 R1 K122 + 0x8C340376, // 00EC GETMET R13 R1 K118 0x7C340200, // 00ED CALL R13 1 0x0034180D, // 00EE ADD R13 R12 R13 - 0x8C38097B, // 00EF GETMET R14 R4 K123 + 0x8C380977, // 00EF GETMET R14 R4 K119 0x7C380200, // 00F0 CALL R14 1 - 0x8C381D7C, // 00F1 GETMET R14 R14 K124 + 0x8C381D78, // 00F1 GETMET R14 R14 K120 0xB8420200, // 00F2 GETNGBL R16 K1 - 0x8C40217D, // 00F3 GETMET R16 R16 K125 + 0x8C402179, // 00F3 GETMET R16 R16 K121 0x7C400200, // 00F4 CALL R16 1 0x5C441A00, // 00F5 MOVE R17 R13 0x7C380600, // 00F6 CALL R14 3 0x8C3C0B0A, // 00F7 GETMET R15 R5 K10 0x7C3C0200, // 00F8 CALL R15 1 0x8C401F0B, // 00F9 GETMET R16 R15 K11 - 0x58480060, // 00FA LDCONST R18 K96 + 0x58480005, // 00FA LDCONST R18 K5 0x884C0B3A, // 00FB GETMBR R19 R5 K58 0x5C501800, // 00FC MOVE R20 R12 0x7C400800, // 00FD CALL R16 4 0x8C401F0B, // 00FE GETMET R16 R15 K11 - 0x58480065, // 00FF LDCONST R18 K101 + 0x58480009, // 00FF LDCONST R18 K9 0x884C0B1F, // 0100 GETMBR R19 R5 K31 0x5C501C00, // 0101 MOVE R20 R14 0x7C400800, // 0102 CALL R16 4 0x54420004, // 0103 LDINT R16 5 - 0x900EDA10, // 0104 SETMBR R3 K109 R16 + 0x900ED410, // 0104 SETMBR R3 K106 R16 0x80041E00, // 0105 RET 1 R15 0x7002013D, // 0106 JMP #0245 0x5422000A, // 0107 LDINT R8 11 0x1C200E08, // 0108 EQ R8 R7 R8 0x7822000B, // 0109 JMPF R8 #0116 0x8C200541, // 010A GETMET R8 R2 K65 - 0x58280060, // 010B LDCONST R10 K96 + 0x58280005, // 010B LDCONST R10 K5 0x7C200400, // 010C CALL R8 2 - 0x8C24037F, // 010D GETMET R9 R1 K127 + 0x8C24037B, // 010D GETMET R9 R1 K123 0x5C2C1000, // 010E MOVE R11 R8 0x7C240400, // 010F CALL R9 2 0xB8260200, // 0110 GETNGBL R9 K1 - 0x88241380, // 0111 GETMBR R9 R9 K128 - 0x900EC609, // 0112 SETMBR R3 K99 R9 + 0x8824137C, // 0111 GETMBR R9 R9 K124 + 0x900EC409, // 0112 SETMBR R3 K98 R9 0x4C240000, // 0113 LDNIL R9 0x80041200, // 0114 RET 1 R9 0x7002012E, // 0115 JMP #0245 0x54220005, // 0116 LDINT R8 6 0x1C200E08, // 0117 EQ R8 R7 R8 0x782200B8, // 0118 JMPF R8 #01D2 - 0xB8230200, // 0119 GETNGBL R8 K129 + 0xB822FA00, // 0119 GETNGBL R8 K125 0x60240008, // 011A GETGBL R9 G8 0x5C280400, // 011B MOVE R10 R2 0x7C240200, // 011C CALL R9 1 - 0x00270409, // 011D ADD R9 K130 R9 + 0x0026FC09, // 011D ADD R9 K126 R9 0x542A0003, // 011E LDINT R10 4 0x7C200400, // 011F CALL R8 2 0x8C200541, // 0120 GETMET R8 R2 K65 - 0x58280060, // 0121 LDCONST R10 K96 + 0x58280005, // 0121 LDCONST R10 K5 0x7C200400, // 0122 CALL R8 2 0x8C240541, // 0123 GETMET R9 R2 K65 - 0x582C0065, // 0124 LDCONST R11 K101 + 0x582C0009, // 0124 LDCONST R11 K9 0x7C240400, // 0125 CALL R9 2 0x6028000C, // 0126 GETGBL R10 G12 0x5C2C1200, // 0127 MOVE R11 R9 0x7C280200, // 0128 CALL R10 1 - 0x1C281560, // 0129 EQ R10 R10 K96 + 0x1C281505, // 0129 EQ R10 R10 K5 0x782A0000, // 012A JMPF R10 #012C 0x4C240000, // 012B LDNIL R9 0x8C280541, // 012C GETMET R10 R2 K65 - 0x5830006E, // 012D LDCONST R12 K110 + 0x5830000D, // 012D LDCONST R12 K13 0x7C280400, // 012E CALL R10 2 0x8C2C0541, // 012F GETMET R11 R2 K65 - 0x5834006B, // 0130 LDCONST R13 K107 + 0x5834000F, // 0130 LDCONST R13 K15 0x7C2C0400, // 0131 CALL R11 2 0x8C300541, // 0132 GETMET R12 R2 K65 0x543A0003, // 0133 LDINT R14 4 0x7C300400, // 0134 CALL R12 2 - 0x8C340383, // 0135 GETMET R13 R1 K131 + 0x8C34037F, // 0135 GETMET R13 R1 K127 0x7C340200, // 0136 CALL R13 1 0x4C380000, // 0137 LDNIL R14 0x1C341A0E, // 0138 EQ R13 R13 R14 0x78360005, // 0139 JMPF R13 #0140 - 0xB8370200, // 013A GETNGBL R13 K129 - 0x58380084, // 013B LDCONST R14 K132 - 0x583C006E, // 013C LDCONST R15 K110 + 0xB836FA00, // 013A GETNGBL R13 K125 + 0x58380080, // 013B LDCONST R14 K128 + 0x583C000D, // 013C LDCONST R15 K13 0x7C340400, // 013D CALL R13 2 0x4C340000, // 013E LDNIL R13 0x80041A00, // 013F RET 1 R13 0x88340136, // 0140 GETMBR R13 R0 K54 0x88341B37, // 0141 GETMBR R13 R13 K55 - 0x8C341B85, // 0142 GETMET R13 R13 K133 + 0x8C341B81, // 0142 GETMET R13 R13 K129 0x7C340200, // 0143 CALL R13 1 - 0x8C381B86, // 0144 GETMET R14 R13 K134 - 0x8C400383, // 0145 GETMET R16 R1 K131 + 0x8C381B82, // 0144 GETMET R14 R13 K130 + 0x8C40037F, // 0145 GETMET R16 R1 K127 0x7C400200, // 0146 CALL R16 1 0x7C380400, // 0147 CALL R14 2 - 0x8C381B87, // 0148 GETMET R14 R13 K135 + 0x8C381B83, // 0148 GETMET R14 R13 K131 0x5C401000, // 0149 MOVE R16 R8 0x5C441200, // 014A MOVE R17 R9 0x7C380600, // 014B CALL R14 3 - 0x8C381B88, // 014C GETMET R14 R13 K136 + 0x8C381B84, // 014C GETMET R14 R13 K132 0x5C401400, // 014D MOVE R16 R10 0x7C380400, // 014E CALL R14 2 - 0x8C381B89, // 014F GETMET R14 R13 K137 + 0x8C381B85, // 014F GETMET R14 R13 K133 0x5C401600, // 0150 MOVE R16 R11 0x5C441800, // 0151 MOVE R17 R12 0x7C380600, // 0152 CALL R14 3 - 0x8C381B8A, // 0153 GETMET R14 R13 K138 - 0x8C40038B, // 0154 GETMET R16 R1 K139 + 0x8C381B86, // 0153 GETMET R14 R13 K134 + 0x8C400387, // 0154 GETMET R16 R1 K135 0x7C400200, // 0155 CALL R16 1 0x7C380400, // 0156 CALL R14 2 0xB83A0200, // 0157 GETNGBL R14 K1 @@ -1717,7 +1713,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C381D3F, // 0159 GETMET R14 R14 K63 0x5C401000, // 015A MOVE R16 R8 0x7C380400, // 015B CALL R14 2 - 0x8C3C1D8C, // 015C GETMET R15 R14 K140 + 0x8C3C1D88, // 015C GETMET R15 R14 K136 0x54460005, // 015D LDINT R17 6 0x7C3C0400, // 015E CALL R15 2 0x8C401F41, // 015F GETMET R16 R15 K65 @@ -1730,60 +1726,60 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x784A0001, // 0166 JMPF R18 #0169 0x5C482200, // 0167 MOVE R18 R17 0x744A0005, // 0168 JMPT R18 #016F - 0xB84B0200, // 0169 GETNGBL R18 K129 - 0x584C008D, // 016A LDCONST R19 K141 - 0x5850006E, // 016B LDCONST R20 K110 + 0xB84AFA00, // 0169 GETNGBL R18 K125 + 0x584C0089, // 016A LDCONST R19 K137 + 0x5850000D, // 016B LDCONST R20 K13 0x7C480400, // 016C CALL R18 2 0x50480000, // 016D LDBOOL R18 0 0 0x80042400, // 016E RET 1 R18 0x60480004, // 016F GETGBL R18 G4 0x5C4C2000, // 0170 MOVE R19 R16 0x7C480200, // 0171 CALL R18 1 - 0x1C482561, // 0172 EQ R18 R18 K97 + 0x1C482560, // 0172 EQ R18 R18 K96 0x784A0007, // 0173 JMPF R18 #017C 0xB84A5C00, // 0174 GETNGBL R18 K46 - 0x8C48258E, // 0175 GETMET R18 R18 K142 + 0x8C48258A, // 0175 GETMET R18 R18 K138 0x5C502000, // 0176 MOVE R20 R16 0x7C480400, // 0177 CALL R18 2 - 0x8C48258F, // 0178 GETMET R18 R18 K143 + 0x8C48258B, // 0178 GETMET R18 R18 K139 0x7C480200, // 0179 CALL R18 1 0x5C402400, // 017A MOVE R16 R18 0x70020002, // 017B JMP #017F - 0x8C48218F, // 017C GETMET R18 R16 K143 + 0x8C48218B, // 017C GETMET R18 R16 K139 0x7C480200, // 017D CALL R18 1 0x5C402400, // 017E MOVE R16 R18 0x60480004, // 017F GETGBL R18 G4 0x5C4C2200, // 0180 MOVE R19 R17 0x7C480200, // 0181 CALL R18 1 - 0x1C482561, // 0182 EQ R18 R18 K97 + 0x1C482560, // 0182 EQ R18 R18 K96 0x784A0007, // 0183 JMPF R18 #018C 0xB84A5C00, // 0184 GETNGBL R18 K46 - 0x8C48258E, // 0185 GETMET R18 R18 K142 + 0x8C48258A, // 0185 GETMET R18 R18 K138 0x5C502200, // 0186 MOVE R20 R17 0x7C480400, // 0187 CALL R18 2 - 0x8C48258F, // 0188 GETMET R18 R18 K143 + 0x8C48258B, // 0188 GETMET R18 R18 K139 0x7C480200, // 0189 CALL R18 1 0x5C442400, // 018A MOVE R17 R18 0x70020002, // 018B JMP #018F - 0x8C48238F, // 018C GETMET R18 R17 K143 + 0x8C48238B, // 018C GETMET R18 R17 K139 0x7C480200, // 018D CALL R18 1 0x5C442400, // 018E MOVE R17 R18 - 0x8C480390, // 018F GETMET R18 R1 K144 + 0x8C48038C, // 018F GETMET R18 R1 K140 0x7C480200, // 0190 CALL R18 1 - 0x404ECB91, // 0191 CONNECT R19 K101 K145 + 0x404E138D, // 0191 CONNECT R19 K9 K141 0x94482413, // 0192 GETIDX R18 R18 R19 0x604C0015, // 0193 GETGBL R19 G21 0x7C4C0000, // 0194 CALL R19 0 - 0x8C4C2792, // 0195 GETMET R19 R19 K146 - 0x58540093, // 0196 LDCONST R21 K147 + 0x8C4C278E, // 0195 GETMET R19 R19 K142 + 0x5854008F, // 0196 LDCONST R21 K143 0x7C4C0400, // 0197 CALL R19 2 - 0x8C500994, // 0198 GETMET R20 R4 K148 + 0x8C500990, // 0198 GETMET R20 R4 K144 0x7C500200, // 0199 CALL R20 1 - 0x8C542195, // 019A GETMET R21 R16 K149 + 0x8C542191, // 019A GETMET R21 R16 K145 0x7C540200, // 019B CALL R21 1 - 0x8C542B96, // 019C GETMET R21 R21 K150 + 0x8C542B92, // 019C GETMET R21 R21 K146 0x7C540200, // 019D CALL R21 1 - 0x8C582997, // 019E GETMET R22 R20 K151 + 0x8C582993, // 019E GETMET R22 R20 K147 0x5C602400, // 019F MOVE R24 R18 0x5C642A00, // 01A0 MOVE R25 R21 0x5C682600, // 01A1 MOVE R26 R19 @@ -1795,83 +1791,83 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x70020001, // 01A7 JMP #01AA 0x885C0136, // 01A8 GETMBR R23 R0 K54 0x885C2F4C, // 01A9 GETMBR R23 R23 K76 - 0x8C601B98, // 01AA GETMET R24 R13 K152 + 0x8C601B94, // 01AA GETMET R24 R13 K148 0x5C682000, // 01AB MOVE R26 R16 0x5C6C2200, // 01AC MOVE R27 R17 0x5C702C00, // 01AD MOVE R28 R22 0x5C742E00, // 01AE MOVE R29 R23 0x7C600A00, // 01AF CALL R24 5 - 0x8C601B99, // 01B0 GETMET R24 R13 K153 + 0x8C601B95, // 01B0 GETMET R24 R13 K149 0x7C600200, // 01B1 CALL R24 1 0x88600136, // 01B2 GETMBR R24 R0 K54 - 0x8C60319A, // 01B3 GETMET R24 R24 K154 + 0x8C603196, // 01B3 GETMET R24 R24 K150 0x5C681A00, // 01B4 MOVE R26 R13 0x7C600400, // 01B5 CALL R24 2 - 0x8C60039B, // 01B6 GETMET R24 R1 K155 + 0x8C600397, // 01B6 GETMET R24 R1 K151 0x7C600200, // 01B7 CALL R24 1 0x78620002, // 01B8 JMPF R24 #01BC - 0x8C60039C, // 01B9 GETMET R24 R1 K156 + 0x8C600398, // 01B9 GETMET R24 R1 K152 0x546A003B, // 01BA LDINT R26 60 0x7C600400, // 01BB CALL R24 2 - 0x8C601B9D, // 01BC GETMET R24 R13 K157 + 0x8C601B99, // 01BC GETMET R24 R13 K153 0x7C600200, // 01BD CALL R24 1 - 0x8C601B9E, // 01BE GETMET R24 R13 K158 + 0x8C601B9A, // 01BE GETMET R24 R13 K154 0x7C600200, // 01BF CALL R24 1 0x8C600B0A, // 01C0 GETMET R24 R5 K10 0x7C600200, // 01C1 CALL R24 1 0x8C64310B, // 01C2 GETMET R25 R24 K11 - 0x586C0060, // 01C3 LDCONST R27 K96 + 0x586C0005, // 01C3 LDCONST R27 K5 0x88700B0E, // 01C4 GETMBR R28 R5 K14 0xB8760200, // 01C5 GETNGBL R29 K1 - 0x88743B80, // 01C6 GETMBR R29 R29 K128 + 0x88743B7C, // 01C6 GETMBR R29 R29 K124 0x7C640800, // 01C7 CALL R25 4 0x8C64310B, // 01C8 GETMET R25 R24 K11 - 0x586C0065, // 01C9 LDCONST R27 K101 + 0x586C0009, // 01C9 LDCONST R27 K9 0x88700B0E, // 01CA GETMBR R28 R5 K14 0x8C741B3D, // 01CB GETMET R29 R13 K61 0x7C740200, // 01CC CALL R29 1 0x7C640800, // 01CD CALL R25 4 0x54660007, // 01CE LDINT R25 8 - 0x900EDA19, // 01CF SETMBR R3 K109 R25 + 0x900ED419, // 01CF SETMBR R3 K106 R25 0x80043000, // 01D0 RET 1 R24 0x70020072, // 01D1 JMP #0245 0x54220008, // 01D2 LDINT R8 9 0x1C200E08, // 01D3 EQ R8 R7 R8 0x7822002B, // 01D4 JMPF R8 #0201 0x8C200541, // 01D5 GETMET R8 R2 K65 - 0x58280060, // 01D6 LDCONST R10 K96 + 0x58280005, // 01D6 LDCONST R10 K5 0x7C200400, // 01D7 CALL R8 2 - 0x8C24039F, // 01D8 GETMET R9 R1 K159 + 0x8C24039B, // 01D8 GETMET R9 R1 K155 0x5C2C1000, // 01D9 MOVE R11 R8 0x7C240400, // 01DA CALL R9 2 - 0xB8270200, // 01DB GETNGBL R9 K129 + 0xB826FA00, // 01DB GETNGBL R9 K125 0x60280018, // 01DC GETGBL R10 G24 - 0x582C00A0, // 01DD LDCONST R11 K160 + 0x582C009C, // 01DD LDCONST R11 K156 0x88300349, // 01DE GETMBR R12 R1 K73 - 0x8C3019A1, // 01DF GETMET R12 R12 K161 + 0x8C30199D, // 01DF GETMET R12 R12 K157 0x7C300200, // 01E0 CALL R12 1 - 0x8C301995, // 01E1 GETMET R12 R12 K149 + 0x8C301991, // 01E1 GETMET R12 R12 K145 0x7C300200, // 01E2 CALL R12 1 - 0x8C301996, // 01E3 GETMET R12 R12 K150 + 0x8C301992, // 01E3 GETMET R12 R12 K146 0x7C300200, // 01E4 CALL R12 1 - 0x8C3019A2, // 01E5 GETMET R12 R12 K162 + 0x8C30199E, // 01E5 GETMET R12 R12 K158 0x7C300200, // 01E6 CALL R12 1 0x60340008, // 01E7 GETGBL R13 G8 0x5C381000, // 01E8 MOVE R14 R8 0x7C340200, // 01E9 CALL R13 1 0x7C280600, // 01EA CALL R10 3 - 0x582C006B, // 01EB LDCONST R11 K107 + 0x582C000F, // 01EB LDCONST R11 K15 0x7C240400, // 01EC CALL R9 2 0x8C240B0A, // 01ED GETMET R9 R5 K10 0x7C240200, // 01EE CALL R9 1 0x8C28130B, // 01EF GETMET R10 R9 K11 - 0x58300060, // 01F0 LDCONST R12 K96 + 0x58300005, // 01F0 LDCONST R12 K5 0x88340B0E, // 01F1 GETMBR R13 R5 K14 0xB83A0200, // 01F2 GETNGBL R14 K1 - 0x88381D80, // 01F3 GETMBR R14 R14 K128 + 0x88381D7C, // 01F3 GETMBR R14 R14 K124 0x7C280800, // 01F4 CALL R10 4 0x8C28130B, // 01F5 GETMET R10 R9 K11 - 0x58300065, // 01F6 LDCONST R12 K101 + 0x58300009, // 01F6 LDCONST R12 K9 0x88340B0E, // 01F7 GETMBR R13 R5 K14 0x8C380335, // 01F8 GETMET R14 R1 K53 0x7C380200, // 01F9 CALL R14 1 @@ -1879,20 +1875,20 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C380200, // 01FB CALL R14 1 0x7C280800, // 01FC CALL R10 4 0x542A0007, // 01FD LDINT R10 8 - 0x900EDA0A, // 01FE SETMBR R3 K109 R10 + 0x900ED40A, // 01FE SETMBR R3 K106 R10 0x80041200, // 01FF RET 1 R9 0x70020043, // 0200 JMP #0245 0x54220009, // 0201 LDINT R8 10 0x1C200E08, // 0202 EQ R8 R7 R8 0x78220040, // 0203 JMPF R8 #0245 0x8C200541, // 0204 GETMET R8 R2 K65 - 0x58280060, // 0205 LDCONST R10 K96 + 0x58280005, // 0205 LDCONST R10 K5 0x7C200400, // 0206 CALL R8 2 0x60240008, // 0207 GETGBL R9 G8 0x5C281000, // 0208 MOVE R10 R8 0x7C240200, // 0209 CALL R9 1 - 0x00274609, // 020A ADD R9 K163 R9 - 0x900F0209, // 020B SETMBR R3 K129 R9 + 0x00273E09, // 020A ADD R9 K159 R9 + 0x900EFA09, // 020B SETMBR R3 K125 R9 0x60240010, // 020C GETGBL R9 G16 0x88280136, // 020D GETMBR R10 R0 K54 0x88281537, // 020E GETMBR R10 R10 K55 @@ -1906,28 +1902,28 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C2C0200, // 0216 CALL R11 1 0x1C2C1608, // 0217 EQ R11 R11 R8 0x782E0018, // 0218 JMPF R11 #0232 - 0x8C2C15A4, // 0219 GETMET R11 R10 K164 + 0x8C2C15A0, // 0219 GETMET R11 R10 K160 0x7C2C0200, // 021A CALL R11 1 0xB82E2400, // 021B GETNGBL R11 K18 - 0x8C2C17A5, // 021C GETMET R11 R11 K165 + 0x8C2C17A1, // 021C GETMET R11 R11 K161 0x543607CF, // 021D LDINT R13 2000 0x84380000, // 021E CLOSURE R14 P0 0x7C2C0600, // 021F CALL R11 3 0x8C2C0B0A, // 0220 GETMET R11 R5 K10 0x7C2C0200, // 0221 CALL R11 1 0x8C30170B, // 0222 GETMET R12 R11 K11 - 0x58380060, // 0223 LDCONST R14 K96 + 0x58380005, // 0223 LDCONST R14 K5 0x883C0B0E, // 0224 GETMBR R15 R5 K14 0xB8420200, // 0225 GETNGBL R16 K1 - 0x88402180, // 0226 GETMBR R16 R16 K128 + 0x8840217C, // 0226 GETMBR R16 R16 K124 0x7C300800, // 0227 CALL R12 4 0x8C30170B, // 0228 GETMET R12 R11 K11 - 0x58380065, // 0229 LDCONST R14 K101 + 0x58380009, // 0229 LDCONST R14 K9 0x883C0B0E, // 022A GETMBR R15 R5 K14 0x5C401000, // 022B MOVE R16 R8 0x7C300800, // 022C CALL R12 4 0x54320007, // 022D LDINT R12 8 - 0x900EDA0C, // 022E SETMBR R3 K109 R12 + 0x900ED40C, // 022E SETMBR R3 K106 R12 0xA0000000, // 022F CLOSE R0 0xA8040001, // 0230 EXBLK 1 1 0x80041600, // 0231 RET 1 R11 @@ -1936,17 +1932,17 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5824003E, // 0234 LDCONST R9 K62 0xAC240200, // 0235 CATCH R9 1 0 0xB0080000, // 0236 RAISE 2 R0 R0 - 0xB8270200, // 0237 GETNGBL R9 K129 + 0xB826FA00, // 0237 GETNGBL R9 K125 0x60280008, // 0238 GETGBL R10 G8 0x5C2C1000, // 0239 MOVE R11 R8 0x7C280200, // 023A CALL R10 1 - 0x002B4C0A, // 023B ADD R10 K166 R10 - 0x002815A7, // 023C ADD R10 R10 K167 - 0x582C006E, // 023D LDCONST R11 K110 + 0x002B440A, // 023B ADD R10 K162 R10 + 0x002815A3, // 023C ADD R10 R10 K163 + 0x582C000D, // 023D LDCONST R11 K13 0x7C240400, // 023E CALL R9 2 0xB8260200, // 023F GETNGBL R9 K1 - 0x88241366, // 0240 GETMBR R9 R9 K102 - 0x900EC609, // 0241 SETMBR R3 K99 R9 + 0x88241364, // 0240 GETMBR R9 R9 K100 + 0x900EC409, // 0241 SETMBR R3 K98 R9 0x4C240000, // 0242 LDNIL R9 0xA0000000, // 0243 CLOSE R0 0x80041200, // 0244 RET 1 R9 @@ -1954,32 +1950,32 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5422003B, // 0246 LDINT R8 60 0x1C200C08, // 0247 EQ R8 R6 R8 0x78220082, // 0248 JMPF R8 #02CC - 0x1C200F60, // 0249 EQ R8 R7 K96 + 0x1C200F05, // 0249 EQ R8 R7 K5 0x78220063, // 024A JMPF R8 #02AF 0x8C200541, // 024B GETMET R8 R2 K65 - 0x58280060, // 024C LDCONST R10 K96 + 0x58280005, // 024C LDCONST R10 K5 0x7C200400, // 024D CALL R8 2 0x8C240541, // 024E GETMET R9 R2 K65 - 0x582C0065, // 024F LDCONST R11 K101 + 0x582C0009, // 024F LDCONST R11 K9 0x7C240400, // 0250 CALL R9 2 0x8C280541, // 0251 GETMET R10 R2 K65 - 0x5830006E, // 0252 LDCONST R12 K110 + 0x5830000D, // 0252 LDCONST R12 K13 0x7C280400, // 0253 CALL R10 2 0x8C2C0541, // 0254 GETMET R11 R2 K65 - 0x5834006B, // 0255 LDCONST R13 K107 + 0x5834000F, // 0255 LDCONST R13 K15 0x7C2C0400, // 0256 CALL R11 2 0x8C300541, // 0257 GETMET R12 R2 K65 0x543A0003, // 0258 LDINT R14 4 0x7C300400, // 0259 CALL R12 2 - 0xB8370200, // 025A GETNGBL R13 K129 + 0xB836FA00, // 025A GETNGBL R13 K125 0x60380018, // 025B GETGBL R14 G24 - 0x583C00A8, // 025C LDCONST R15 K168 + 0x583C00A4, // 025C LDCONST R15 K164 0x5C401000, // 025D MOVE R16 R8 - 0x8C4413A2, // 025E GETMET R17 R9 K162 + 0x8C44139E, // 025E GETMET R17 R9 K158 0x7C440200, // 025F CALL R17 1 0x5C481400, // 0260 MOVE R18 R10 0x5C4C1600, // 0261 MOVE R19 R11 - 0x8C5019A2, // 0262 GETMET R20 R12 K162 + 0x8C50199E, // 0262 GETMET R20 R12 K158 0x7C500200, // 0263 CALL R20 1 0x7C380C00, // 0264 CALL R14 6 0x543E0003, // 0265 LDINT R15 4 @@ -2000,8 +1996,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C34180D, // 0274 EQ R13 R12 R13 0x78360005, // 0275 JMPF R13 #027C 0xB8360200, // 0276 GETNGBL R13 K1 - 0x88341BA9, // 0277 GETMBR R13 R13 K169 - 0x900EC60D, // 0278 SETMBR R3 K99 R13 + 0x88341BA5, // 0277 GETMBR R13 R13 K165 + 0x900EC40D, // 0278 SETMBR R3 K98 R13 0x4C340000, // 0279 LDNIL R13 0xA0000000, // 027A CLOSE R0 0x80041A00, // 027B RET 1 R13 @@ -2025,24 +2021,24 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x543A001F, // 028D LDINT R14 32 0x24341A0E, // 028E GT R13 R13 R14 0x78360009, // 028F JMPF R13 #029A - 0xB8370200, // 0290 GETNGBL R13 K129 - 0x583800AA, // 0291 LDCONST R14 K170 - 0x583C006E, // 0292 LDCONST R15 K110 + 0xB836FA00, // 0290 GETNGBL R13 K125 + 0x583800A6, // 0291 LDCONST R14 K166 + 0x583C000D, // 0292 LDCONST R15 K13 0x7C340400, // 0293 CALL R13 2 0xB8360200, // 0294 GETNGBL R13 K1 - 0x88341B64, // 0295 GETMBR R13 R13 K100 - 0x900EC60D, // 0296 SETMBR R3 K99 R13 + 0x88341B63, // 0295 GETMBR R13 R13 K99 + 0x900EC40D, // 0296 SETMBR R3 K98 R13 0x4C340000, // 0297 LDNIL R13 0xA0000000, // 0298 CLOSE R0 0x80041A00, // 0299 RET 1 R13 0x5436001E, // 029A LDINT R13 31 - 0x4036C00D, // 029B CONNECT R13 K96 R13 + 0x40360A0D, // 029B CONNECT R13 K5 R13 0x9434120D, // 029C GETIDX R13 R9 R13 0x543A001F, // 029D LDINT R14 32 - 0x40381D91, // 029E CONNECT R14 R14 K145 + 0x40381D8D, // 029E CONNECT R14 R14 K141 0x9438120E, // 029F GETIDX R14 R9 R14 0x883C0136, // 02A0 GETMBR R15 R0 K54 - 0x8C3C1FAB, // 02A1 GETMET R15 R15 K171 + 0x8C3C1FA7, // 02A1 GETMET R15 R15 K167 0x5C441000, // 02A2 MOVE R17 R8 0x5C481600, // 02A3 MOVE R18 R11 0x5C4C1400, // 02A4 MOVE R19 R10 @@ -2056,30 +2052,30 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0xA0000000, // 02AC CLOSE R0 0x80041E00, // 02AD RET 1 R15 0x7002001B, // 02AE JMP #02CB - 0x1C200F65, // 02AF EQ R8 R7 K101 + 0x1C200F09, // 02AF EQ R8 R7 K9 0x78220011, // 02B0 JMPF R8 #02C3 0x8C200541, // 02B1 GETMET R8 R2 K65 - 0x58280060, // 02B2 LDCONST R10 K96 + 0x58280005, // 02B2 LDCONST R10 K5 0x7C200400, // 02B3 CALL R8 2 - 0xB8270200, // 02B4 GETNGBL R9 K129 + 0xB826FA00, // 02B4 GETNGBL R9 K125 0x60280008, // 02B5 GETGBL R10 G8 0x5C2C1000, // 02B6 MOVE R11 R8 0x7C280200, // 02B7 CALL R10 1 - 0x002B580A, // 02B8 ADD R10 K172 R10 - 0x582C006B, // 02B9 LDCONST R11 K107 + 0x002B500A, // 02B8 ADD R10 K168 R10 + 0x582C000F, // 02B9 LDCONST R11 K15 0x7C240400, // 02BA CALL R9 2 0x88240136, // 02BB GETMBR R9 R0 K54 - 0x8C2413AD, // 02BC GETMET R9 R9 K173 + 0x8C2413A9, // 02BC GETMET R9 R9 K169 0x5C2C1000, // 02BD MOVE R11 R8 0x7C240400, // 02BE CALL R9 2 0x50240200, // 02BF LDBOOL R9 1 0 0xA0000000, // 02C0 CLOSE R0 0x80041200, // 02C1 RET 1 R9 0x70020007, // 02C2 JMP #02CB - 0x1C200F6E, // 02C3 EQ R8 R7 K110 + 0x1C200F0D, // 02C3 EQ R8 R7 K13 0x78220005, // 02C4 JMPF R8 #02CB 0x88200136, // 02C5 GETMBR R8 R0 K54 - 0x8C2011AE, // 02C6 GETMET R8 R8 K174 + 0x8C2011AA, // 02C6 GETMET R8 R8 K170 0x7C200200, // 02C7 CALL R8 1 0x50200200, // 02C8 LDBOOL R8 1 0 0xA0000000, // 02C9 CLOSE R0 @@ -2088,7 +2084,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x54220029, // 02CC LDINT R8 42 0x1C200C08, // 02CD EQ R8 R6 R8 0x78220005, // 02CE JMPF R8 #02D5 - 0x1C200F60, // 02CF EQ R8 R7 K96 + 0x1C200F05, // 02CF EQ R8 R7 K5 0x78220002, // 02D0 JMPF R8 #02D4 0x50200200, // 02D1 LDBOOL R8 1 0 0xA0000000, // 02D2 CLOSE R0 @@ -2097,7 +2093,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x60200003, // 02D5 GETGBL R8 G3 0x5C240000, // 02D6 MOVE R9 R0 0x7C200200, // 02D7 CALL R8 1 - 0x8C2011AF, // 02D8 GETMET R8 R8 K175 + 0x8C2011AB, // 02D8 GETMET R8 R8 K171 0x5C280200, // 02D9 MOVE R10 R1 0x5C2C0400, // 02DA MOVE R11 R2 0x5C300600, // 02DB MOVE R12 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h index 56e55da1b..b38d3b11d 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Fan' ktab size: 34, total: 64 (saved 240 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Fan[34] = { +// compact class 'Matter_Plugin_Fan' ktab size: 28, total: 64 (saved 288 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Fan[28] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(shadow_fan_mode), /* K2 */ be_nested_str_weak(attribute_updated), @@ -18,27 +18,21 @@ static const bvalue be_ktab_class_Matter_Plugin_Fan[34] = { /* K10 */ be_nested_str_weak(set_fan_mode), /* K11 */ be_nested_str_weak(FanSpeed255), /* K12 */ be_nested_str_weak(set_fan_speed_pct), - /* K13 */ be_const_int(0), - /* K14 */ be_nested_str_weak(FanSpeed), - /* K15 */ be_const_int(1), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(matter), - /* K18 */ be_nested_str_weak(TLV), - /* K19 */ be_nested_str_weak(cluster), - /* K20 */ be_nested_str_weak(attribute), - /* K21 */ be_nested_str_weak(update_shadow_lazy), - /* K22 */ be_nested_str_weak(int), - /* K23 */ be_nested_str_weak(publish_command), - /* K24 */ be_nested_str_weak(status), - /* K25 */ be_nested_str_weak(CONSTRAINT_ERROR), - /* K26 */ be_nested_str_weak(init), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str_weak(set), - /* K29 */ be_nested_str_weak(U1), - /* K30 */ be_const_int(1), - /* K31 */ be_const_int(2), - /* K32 */ be_const_int(3), - /* K33 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(FanSpeed), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(matter), + /* K16 */ be_nested_str_weak(TLV), + /* K17 */ be_nested_str_weak(cluster), + /* K18 */ be_nested_str_weak(attribute), + /* K19 */ be_nested_str_weak(update_shadow_lazy), + /* K20 */ be_nested_str_weak(int), + /* K21 */ be_nested_str_weak(publish_command), + /* K22 */ be_nested_str_weak(status), + /* K23 */ be_nested_str_weak(CONSTRAINT_ERROR), + /* K24 */ be_nested_str_weak(init), + /* K25 */ be_nested_str_weak(set), + /* K26 */ be_nested_str_weak(U1), + /* K27 */ be_nested_str_weak(read_attribute), }; @@ -155,14 +149,14 @@ be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */ 0x60200009, // 0014 GETGBL R8 G9 0x5C240600, // 0015 MOVE R9 R3 0x7C200200, // 0016 CALL R8 1 - 0x5824000D, // 0017 LDCONST R9 K13 + 0x58240000, // 0017 LDCONST R9 K0 0x542A00FE, // 0018 LDINT R10 255 - 0x582C000D, // 0019 LDCONST R11 K13 + 0x582C0000, // 0019 LDCONST R11 K0 0x54320063, // 001A LDINT R12 100 0x7C180C00, // 001B CALL R6 6 0x7C100400, // 001C CALL R4 2 0x8C100308, // 001D GETMET R4 R1 K8 - 0x5818000E, // 001E LDCONST R6 K14 + 0x5818000D, // 001E LDCONST R6 K13 0x7C100400, // 001F CALL R4 2 0x4C140000, // 0020 LDNIL R5 0x20140805, // 0021 NE R5 R4 R5 @@ -200,9 +194,9 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 0x5C040400, // 0003 MOVE R1 R2 - 0x1408030D, // 0004 LT R2 R1 K13 + 0x14080300, // 0004 LT R2 R1 K0 0x780A0000, // 0005 JMPF R2 #0007 - 0x5804000D, // 0006 LDCONST R1 K13 + 0x58040000, // 0006 LDCONST R1 K0 0x540A0063, // 0007 LDINT R2 100 0x24080202, // 0008 GT R2 R1 R2 0x780A0000, // 0009 JMPF R2 #000B @@ -216,17 +210,17 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0x7C080600, // 0011 CALL R2 3 0x90020601, // 0012 SETMBR R0 K3 R1 0x88080101, // 0013 GETMBR R2 R0 K1 - 0x1C0C030D, // 0014 EQ R3 R1 K13 + 0x1C0C0300, // 0014 EQ R3 R1 K0 0x780E0001, // 0015 JMPF R3 #0018 - 0x5808000D, // 0016 LDCONST R2 K13 + 0x58080000, // 0016 LDCONST R2 K0 0x70020008, // 0017 JMP #0021 0xB80E0A00, // 0018 GETNGBL R3 K5 0x8C0C0706, // 0019 GETMET R3 R3 K6 0x5C140200, // 001A MOVE R5 R1 - 0x5818000F, // 001B LDCONST R6 K15 + 0x5818000E, // 001B LDCONST R6 K14 0x541E0063, // 001C LDINT R7 100 - 0x5820000F, // 001D LDCONST R8 K15 - 0x58240010, // 001E LDCONST R9 K16 + 0x5820000E, // 001D LDCONST R8 K14 + 0x58240004, // 001E LDCONST R9 K4 0x7C0C0C00, // 001F CALL R3 6 0x5C080600, // 0020 MOVE R2 R3 0x880C0101, // 0021 GETMBR R3 R0 K1 @@ -235,7 +229,7 @@ be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */ 0x90020202, // 0024 SETMBR R0 K1 R2 0x8C0C0102, // 0025 GETMET R3 R0 K2 0x54160201, // 0026 LDINT R5 514 - 0x5818000D, // 0027 LDCONST R6 K13 + 0x58180000, // 0027 LDCONST R6 K0 0x7C0C0600, // 0028 CALL R3 3 0x80000000, // 0029 RET 0 }) @@ -261,46 +255,46 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ be_str_weak(write_attribute), &be_const_str_solidified, ( &(const binstruction[78]) { /* code */ - 0xB8122200, // 0000 GETNGBL R4 K17 - 0x88100912, // 0001 GETMBR R4 R4 K18 - 0x88140513, // 0002 GETMBR R5 R2 K19 - 0x88180514, // 0003 GETMBR R6 R2 K20 + 0xB8121E00, // 0000 GETNGBL R4 K15 + 0x88100910, // 0001 GETMBR R4 R4 K16 + 0x88140511, // 0002 GETMBR R5 R2 K17 + 0x88180512, // 0003 GETMBR R6 R2 K18 0x541E0201, // 0004 LDINT R7 514 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0044, // 0006 JMPF R7 #004C - 0x8C1C0115, // 0007 GETMET R7 R0 K21 + 0x8C1C0113, // 0007 GETMET R7 R0 K19 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D0D, // 0009 EQ R7 R6 K13 + 0x1C1C0D00, // 0009 EQ R7 R6 K0 0x781E001F, // 000A JMPF R7 #002B 0x601C0004, // 000B GETGBL R7 G4 0x5C200600, // 000C MOVE R8 R3 0x7C1C0200, // 000D CALL R7 1 - 0x1C1C0F16, // 000E EQ R7 R7 K22 + 0x1C1C0F14, // 000E EQ R7 R7 K20 0x781E0014, // 000F JMPF R7 #0025 0x8C1C010A, // 0010 GETMET R7 R0 K10 0x5C240600, // 0011 MOVE R9 R3 0x7C1C0400, // 0012 CALL R7 2 - 0x8C1C0117, // 0013 GETMET R7 R0 K23 + 0x8C1C0115, // 0013 GETMET R7 R0 K21 0x58240009, // 0014 LDCONST R9 K9 0x88280101, // 0015 GETMBR R10 R0 K1 - 0x582C000E, // 0016 LDCONST R11 K14 + 0x582C000D, // 0016 LDCONST R11 K13 0x88300103, // 0017 GETMBR R12 R0 K3 0x5834000B, // 0018 LDCONST R13 K11 0xB83A0A00, // 0019 GETNGBL R14 K5 0x8C381D06, // 001A GETMET R14 R14 K6 0x88400103, // 001B GETMBR R16 R0 K3 - 0x5844000D, // 001C LDCONST R17 K13 + 0x58440000, // 001C LDCONST R17 K0 0x544A0063, // 001D LDINT R18 100 - 0x584C000D, // 001E LDCONST R19 K13 + 0x584C0000, // 001E LDCONST R19 K0 0x545200FE, // 001F LDINT R20 255 0x7C380C00, // 0020 CALL R14 6 0x7C1C0E00, // 0021 CALL R7 7 0x501C0200, // 0022 LDBOOL R7 1 0 0x80040E00, // 0023 RET 1 R7 0x70020004, // 0024 JMP #002A - 0xB81E2200, // 0025 GETNGBL R7 K17 - 0x881C0F19, // 0026 GETMBR R7 R7 K25 - 0x900A3007, // 0027 SETMBR R2 K24 R7 + 0xB81E1E00, // 0025 GETNGBL R7 K15 + 0x881C0F17, // 0026 GETMBR R7 R7 K23 + 0x900A2C07, // 0027 SETMBR R2 K22 R7 0x501C0000, // 0028 LDBOOL R7 0 0 0x80040E00, // 0029 RET 1 R7 0x70020020, // 002A JMP #004C @@ -309,32 +303,32 @@ be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */ 0x601C0004, // 002D GETGBL R7 G4 0x5C200600, // 002E MOVE R8 R3 0x7C1C0200, // 002F CALL R7 1 - 0x1C1C0F16, // 0030 EQ R7 R7 K22 + 0x1C1C0F14, // 0030 EQ R7 R7 K20 0x781E0014, // 0031 JMPF R7 #0047 0x8C1C010C, // 0032 GETMET R7 R0 K12 0x5C240600, // 0033 MOVE R9 R3 0x7C1C0400, // 0034 CALL R7 2 - 0x8C1C0117, // 0035 GETMET R7 R0 K23 + 0x8C1C0115, // 0035 GETMET R7 R0 K21 0x58240009, // 0036 LDCONST R9 K9 0x88280101, // 0037 GETMBR R10 R0 K1 - 0x582C000E, // 0038 LDCONST R11 K14 + 0x582C000D, // 0038 LDCONST R11 K13 0x88300103, // 0039 GETMBR R12 R0 K3 0x5834000B, // 003A LDCONST R13 K11 0xB83A0A00, // 003B GETNGBL R14 K5 0x8C381D06, // 003C GETMET R14 R14 K6 0x88400103, // 003D GETMBR R16 R0 K3 - 0x5844000D, // 003E LDCONST R17 K13 + 0x58440000, // 003E LDCONST R17 K0 0x544A0063, // 003F LDINT R18 100 - 0x584C000D, // 0040 LDCONST R19 K13 + 0x584C0000, // 0040 LDCONST R19 K0 0x545200FE, // 0041 LDINT R20 255 0x7C380C00, // 0042 CALL R14 6 0x7C1C0E00, // 0043 CALL R7 7 0x501C0200, // 0044 LDBOOL R7 1 0 0x80040E00, // 0045 RET 1 R7 0x70020004, // 0046 JMP #004C - 0xB81E2200, // 0047 GETNGBL R7 K17 - 0x881C0F19, // 0048 GETMBR R7 R7 K25 - 0x900A3007, // 0049 SETMBR R2 K24 R7 + 0xB81E1E00, // 0047 GETNGBL R7 K15 + 0x881C0F17, // 0048 GETMBR R7 R7 K23 + 0x900A2C07, // 0049 SETMBR R2 K22 R7 0x501C0000, // 004A LDBOOL R7 0 0 0x80040E00, // 004B RET 1 R7 0x4C1C0000, // 004C LDNIL R7 @@ -365,13 +359,13 @@ be_local_closure(class_Matter_Plugin_Fan_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C10091A, // 0003 GETMET R4 R4 K26 + 0x8C100918, // 0003 GETMET R4 R4 K24 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x9002031B, // 0008 SETMBR R0 K1 K27 - 0x9002071B, // 0009 SETMBR R0 K3 K27 + 0x90020300, // 0008 SETMBR R0 K1 K0 + 0x90020700, // 0009 SETMBR R0 K3 K0 0x80000000, // 000A RET 0 }) ) @@ -396,50 +390,50 @@ be_local_closure(class_Matter_Plugin_Fan_read_attribute, /* name */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[49]) { /* code */ - 0xB8122200, // 0000 GETNGBL R4 K17 - 0x88100912, // 0001 GETMBR R4 R4 K18 - 0x88140513, // 0002 GETMBR R5 R2 K19 - 0x88180514, // 0003 GETMBR R6 R2 K20 + 0xB8121E00, // 0000 GETNGBL R4 K15 + 0x88100910, // 0001 GETMBR R4 R4 K16 + 0x88140511, // 0002 GETMBR R5 R2 K17 + 0x88180512, // 0003 GETMBR R6 R2 K18 0x541E0201, // 0004 LDINT R7 514 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0020, // 0006 JMPF R7 #0028 - 0x8C1C0115, // 0007 GETMET R7 R0 K21 + 0x8C1C0113, // 0007 GETMET R7 R0 K19 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D1B, // 0009 EQ R7 R6 K27 + 0x1C1C0D00, // 0009 EQ R7 R6 K0 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C071C, // 000B GETMET R7 R3 K28 - 0x8824091D, // 000C GETMBR R9 R4 K29 + 0x8C1C0719, // 000B GETMET R7 R3 K25 + 0x8824091A, // 000C GETMBR R9 R4 K26 0x88280101, // 000D GETMBR R10 R0 K1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020016, // 0010 JMP #0028 - 0x1C1C0D1E, // 0011 EQ R7 R6 K30 + 0x1C1C0D0E, // 0011 EQ R7 R6 K14 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C071C, // 0013 GETMET R7 R3 K28 - 0x8824091D, // 0014 GETMBR R9 R4 K29 - 0x5828001F, // 0015 LDCONST R10 K31 + 0x8C1C0719, // 0013 GETMET R7 R3 K25 + 0x8824091A, // 0014 GETMBR R9 R4 K26 + 0x58280007, // 0015 LDCONST R10 K7 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x7002000E, // 0018 JMP #0028 - 0x1C1C0D1F, // 0019 EQ R7 R6 K31 + 0x1C1C0D07, // 0019 EQ R7 R6 K7 0x781E0005, // 001A JMPF R7 #0021 - 0x8C1C071C, // 001B GETMET R7 R3 K28 - 0x8824091D, // 001C GETMBR R9 R4 K29 + 0x8C1C0719, // 001B GETMET R7 R3 K25 + 0x8824091A, // 001C GETMBR R9 R4 K26 0x88280103, // 001D GETMBR R10 R0 K3 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x70020006, // 0020 JMP #0028 - 0x1C1C0D20, // 0021 EQ R7 R6 K32 + 0x1C1C0D04, // 0021 EQ R7 R6 K4 0x781E0004, // 0022 JMPF R7 #0028 - 0x8C1C071C, // 0023 GETMET R7 R3 K28 - 0x8824091D, // 0024 GETMBR R9 R4 K29 + 0x8C1C0719, // 0023 GETMET R7 R3 K25 + 0x8824091A, // 0024 GETMBR R9 R4 K26 0x88280103, // 0025 GETMBR R10 R0 K3 0x7C1C0600, // 0026 CALL R7 3 0x80040E00, // 0027 RET 1 R7 0x601C0003, // 0028 GETGBL R7 G3 0x5C200000, // 0029 MOVE R8 R0 0x7C1C0200, // 002A CALL R7 1 - 0x8C1C0F21, // 002B GETMET R7 R7 K33 + 0x8C1C0F1B, // 002B GETMET R7 R7 K27 0x5C240200, // 002C MOVE R9 R1 0x5C280400, // 002D MOVE R10 R2 0x5C2C0600, // 002E MOVE R11 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h index 6f02bf53b..5d25648a4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Light0' ktab size: 49, total: 87 (saved 304 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Light0[49] = { +// compact class 'Matter_Plugin_Light0' ktab size: 47, total: 87 (saved 320 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light0[47] = { /* K0 */ be_nested_str_weak(BRIDGE), /* K1 */ be_nested_str_weak(call_remote_sync), /* K2 */ be_nested_str_weak(Power), @@ -32,28 +32,26 @@ static const bvalue be_ktab_class_Matter_Plugin_Light0[49] = { /* K24 */ be_nested_str_weak(init), /* K25 */ be_nested_str_weak(find), /* K26 */ be_nested_str_weak(ARG), - /* K27 */ be_const_int(1), - /* K28 */ be_nested_str_weak(set_onoff), - /* K29 */ be_nested_str_weak(update_virtual), - /* K30 */ be_nested_str_weak(matter), - /* K31 */ be_nested_str_weak(TLV), - /* K32 */ be_nested_str_weak(cluster), - /* K33 */ be_nested_str_weak(attribute), - /* K34 */ be_nested_str_weak(update_shadow_lazy), - /* K35 */ be_nested_str_weak(BOOL), - /* K36 */ be_nested_str_weak(read_attribute), - /* K37 */ be_nested_str_weak(get_name), - /* K38 */ be_nested_str_weak(PREFIX), - /* K39 */ be_nested_str_weak(html_escape), - /* K40 */ be_nested_str_weak(), - /* K41 */ be_nested_str_weak(get_power), - /* K42 */ be_nested_str_weak(command), - /* K43 */ be_nested_str_weak(publish_command), - /* K44 */ be_const_int(1), - /* K45 */ be_const_int(2), - /* K46 */ be_nested_str_weak(contains), - /* K47 */ be_nested_str_weak(POWER), - /* K48 */ be_nested_str_weak(ON), + /* K27 */ be_nested_str_weak(set_onoff), + /* K28 */ be_nested_str_weak(update_virtual), + /* K29 */ be_nested_str_weak(matter), + /* K30 */ be_nested_str_weak(TLV), + /* K31 */ be_nested_str_weak(cluster), + /* K32 */ be_nested_str_weak(attribute), + /* K33 */ be_nested_str_weak(update_shadow_lazy), + /* K34 */ be_nested_str_weak(BOOL), + /* K35 */ be_nested_str_weak(read_attribute), + /* K36 */ be_nested_str_weak(get_name), + /* K37 */ be_nested_str_weak(PREFIX), + /* K38 */ be_nested_str_weak(html_escape), + /* K39 */ be_nested_str_weak(), + /* K40 */ be_nested_str_weak(get_power), + /* K41 */ be_nested_str_weak(command), + /* K42 */ be_nested_str_weak(publish_command), + /* K43 */ be_const_int(2), + /* K44 */ be_nested_str_weak(contains), + /* K45 */ be_nested_str_weak(POWER), + /* K46 */ be_nested_str_weak(ON), }; @@ -239,7 +237,7 @@ be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */ 0x88080103, // 000B GETMBR R2 R0 K3 0x1808050A, // 000C LE R2 R2 K10 0x780A0000, // 000D JMPF R2 #000F - 0x9002071B, // 000E SETMBR R0 K3 K27 + 0x9002070D, // 000E SETMBR R0 K3 K13 0x80000000, // 000F RET 0 }) ) @@ -270,7 +268,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C011C, // 0006 GETMET R3 R0 K28 + 0x8C0C011B, // 0006 GETMET R3 R0 K27 0x60140017, // 0007 GETGBL R5 G23 0x5C180400, // 0008 MOVE R6 R2 0x7C140200, // 0009 CALL R5 1 @@ -278,7 +276,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */ 0x600C0003, // 000B GETGBL R3 G3 0x5C100000, // 000C MOVE R4 R0 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C071D, // 000E GETMET R3 R3 K29 + 0x8C0C071C, // 000E GETMET R3 R3 K28 0x5C140200, // 000F MOVE R5 R1 0x7C0C0400, // 0010 CALL R3 2 0x80000000, // 0011 RET 0 @@ -305,26 +303,26 @@ be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0xB8123C00, // 0000 GETNGBL R4 K30 - 0x8810091F, // 0001 GETMBR R4 R4 K31 - 0x88140520, // 0002 GETMBR R5 R2 K32 - 0x88180521, // 0003 GETMBR R6 R2 K33 + 0xB8123A00, // 0000 GETNGBL R4 K29 + 0x8810091E, // 0001 GETMBR R4 R4 K30 + 0x8814051F, // 0002 GETMBR R5 R2 K31 + 0x88180520, // 0003 GETMBR R6 R2 K32 0x541E0005, // 0004 LDINT R7 6 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0008, // 0006 JMPF R7 #0010 - 0x8C1C0122, // 0007 GETMET R7 R0 K34 + 0x8C1C0121, // 0007 GETMET R7 R0 K33 0x7C1C0200, // 0008 CALL R7 1 0x1C1C0D0A, // 0009 EQ R7 R6 K10 0x781E0004, // 000A JMPF R7 #0010 0x8C1C0710, // 000B GETMET R7 R3 K16 - 0x88240923, // 000C GETMBR R9 R4 K35 + 0x88240922, // 000C GETMBR R9 R4 K34 0x88280108, // 000D GETMBR R10 R0 K8 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x601C0003, // 0010 GETGBL R7 G3 0x5C200000, // 0011 MOVE R8 R0 0x7C1C0200, // 0012 CALL R7 1 - 0x8C1C0F24, // 0013 GETMET R7 R7 K36 + 0x8C1C0F23, // 0013 GETMET R7 R7 K35 0x5C240200, // 0014 MOVE R9 R1 0x5C280400, // 0015 MOVE R10 R2 0x5C2C0600, // 0016 MOVE R11 R3 @@ -354,7 +352,7 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ 0xA4062600, // 0000 IMPORT R1 K19 - 0x8C080125, // 0001 GETMET R2 R0 K37 + 0x8C080124, // 0001 GETMET R2 R0 K36 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A @@ -365,13 +363,13 @@ be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */ 0x5C080600, // 0009 MOVE R2 R3 0x8C0C0315, // 000A GETMET R3 R1 K21 0x60140018, // 000B GETGBL R5 G24 - 0x88180126, // 000C GETMBR R6 R0 K38 + 0x88180125, // 000C GETMBR R6 R0 K37 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0327, // 000E GETMET R7 R1 K39 + 0x8C1C0326, // 000E GETMET R7 R1 K38 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0028, // 0012 LDCONST R7 K40 + 0x581C0027, // 0012 LDCONST R7 K39 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -434,7 +432,7 @@ be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */ 0x20040202, // 0006 NE R1 R1 R2 0x78060012, // 0007 JMPF R1 #001B 0xB8061600, // 0008 GETNGBL R1 K11 - 0x8C040329, // 0009 GETMET R1 R1 K41 + 0x8C040328, // 0009 GETMET R1 R1 K40 0x880C0103, // 000A GETMBR R3 R0 K3 0x040C070D, // 000B SUB R3 R3 K13 0x7C040400, // 000C CALL R1 2 @@ -481,52 +479,52 @@ be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ - 0xB8123C00, // 0000 GETNGBL R4 K30 - 0x8810091F, // 0001 GETMBR R4 R4 K31 - 0x88140720, // 0002 GETMBR R5 R3 K32 - 0x8818072A, // 0003 GETMBR R6 R3 K42 + 0xB8123A00, // 0000 GETNGBL R4 K29 + 0x8810091E, // 0001 GETMBR R4 R4 K30 + 0x8814071F, // 0002 GETMBR R5 R3 K31 + 0x88180729, // 0003 GETMBR R6 R3 K41 0x541E0005, // 0004 LDINT R7 6 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E002B, // 0006 JMPF R7 #0033 - 0x8C1C0122, // 0007 GETMET R7 R0 K34 + 0x8C1C0121, // 0007 GETMET R7 R0 K33 0x7C1C0200, // 0008 CALL R7 1 0x1C1C0D0A, // 0009 EQ R7 R6 K10 0x781E0009, // 000A JMPF R7 #0015 - 0x8C1C011C, // 000B GETMET R7 R0 K28 + 0x8C1C011B, // 000B GETMET R7 R0 K27 0x50240000, // 000C LDBOOL R9 0 0 0x7C1C0400, // 000D CALL R7 2 - 0x8C1C012B, // 000E GETMET R7 R0 K43 + 0x8C1C012A, // 000E GETMET R7 R0 K42 0x58240002, // 000F LDCONST R9 K2 0x5828000A, // 0010 LDCONST R10 K10 0x7C1C0600, // 0011 CALL R7 3 0x501C0200, // 0012 LDBOOL R7 1 0 0x80040E00, // 0013 RET 1 R7 0x7002001D, // 0014 JMP #0033 - 0x1C1C0D2C, // 0015 EQ R7 R6 K44 + 0x1C1C0D0D, // 0015 EQ R7 R6 K13 0x781E0009, // 0016 JMPF R7 #0021 - 0x8C1C011C, // 0017 GETMET R7 R0 K28 + 0x8C1C011B, // 0017 GETMET R7 R0 K27 0x50240200, // 0018 LDBOOL R9 1 0 0x7C1C0400, // 0019 CALL R7 2 - 0x8C1C012B, // 001A GETMET R7 R0 K43 + 0x8C1C012A, // 001A GETMET R7 R0 K42 0x58240002, // 001B LDCONST R9 K2 - 0x5828002C, // 001C LDCONST R10 K44 + 0x5828000D, // 001C LDCONST R10 K13 0x7C1C0600, // 001D CALL R7 3 0x501C0200, // 001E LDBOOL R7 1 0 0x80040E00, // 001F RET 1 R7 0x70020011, // 0020 JMP #0033 - 0x1C1C0D2D, // 0021 EQ R7 R6 K45 + 0x1C1C0D2B, // 0021 EQ R7 R6 K43 0x781E000F, // 0022 JMPF R7 #0033 - 0x8C1C011C, // 0023 GETMET R7 R0 K28 + 0x8C1C011B, // 0023 GETMET R7 R0 K27 0x88240108, // 0024 GETMBR R9 R0 K8 0x78260000, // 0025 JMPF R9 #0027 0x50240001, // 0026 LDBOOL R9 0 1 0x50240200, // 0027 LDBOOL R9 1 0 0x7C1C0400, // 0028 CALL R7 2 - 0x8C1C012B, // 0029 GETMET R7 R0 K43 + 0x8C1C012A, // 0029 GETMET R7 R0 K42 0x58240002, // 002A LDCONST R9 K2 0x88280108, // 002B GETMBR R10 R0 K8 0x782A0001, // 002C JMPF R10 #002F - 0x5828002C, // 002D LDCONST R10 K44 + 0x5828000D, // 002D LDCONST R10 K13 0x70020000, // 002E JMP #0030 0x5828000A, // 002F LDCONST R10 K10 0x7C1C0600, // 0030 CALL R7 3 @@ -563,23 +561,23 @@ be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */ 0x88100103, // 0004 GETMBR R4 R0 K3 0x1C10090D, // 0005 EQ R4 R4 K13 0x78120009, // 0006 JMPF R4 #0011 - 0x8C10032E, // 0007 GETMET R4 R1 K46 - 0x5818002F, // 0008 LDCONST R6 K47 + 0x8C10032C, // 0007 GETMET R4 R1 K44 + 0x5818002D, // 0008 LDCONST R6 K45 0x7C100400, // 0009 CALL R4 2 0x78120005, // 000A JMPF R4 #0011 0x8C100319, // 000B GETMET R4 R1 K25 - 0x5818002F, // 000C LDCONST R6 K47 + 0x5818002D, // 000C LDCONST R6 K45 0x7C100400, // 000D CALL R4 2 - 0x1C100930, // 000E EQ R4 R4 K48 + 0x1C10092E, // 000E EQ R4 R4 K46 0x5C0C0800, // 000F MOVE R3 R4 0x70020007, // 0010 JMP #0019 0x8C100319, // 0011 GETMET R4 R1 K25 0x60180008, // 0012 GETGBL R6 G8 0x881C0103, // 0013 GETMBR R7 R0 K3 0x7C180200, // 0014 CALL R6 1 - 0x001A5E06, // 0015 ADD R6 K47 R6 + 0x001A5A06, // 0015 ADD R6 K45 R6 0x7C100400, // 0016 CALL R4 2 - 0x1C100930, // 0017 EQ R4 R4 K48 + 0x1C10092E, // 0017 EQ R4 R4 K46 0x5C0C0800, // 0018 MOVE R3 R4 0x88100108, // 0019 GETMBR R4 R0 K8 0x60140017, // 001A GETGBL R5 G23 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h index bcdf7ad2b..5693e1f72 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Air_Quality' ktab size: 37, total: 73 (saved 288 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[37] = { +// compact class 'Matter_Plugin_Sensor_Air_Quality' ktab size: 36, total: 73 (saved 296 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[36] = { /* K0 */ be_nested_str_weak(web_values_prefix), /* K1 */ be_nested_str_weak(Air), /* K2 */ be_nested_str_weak(shadow_air_quality), @@ -33,15 +33,14 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[37] = { /* K25 */ be_nested_str_weak(TLV), /* K26 */ be_nested_str_weak(cluster), /* K27 */ be_nested_str_weak(attribute), - /* K28 */ be_const_int(0), - /* K29 */ be_nested_str_weak(set_or_nil), - /* K30 */ be_nested_str_weak(U1), - /* K31 */ be_nested_str_weak(read_attribute), - /* K32 */ be_nested_str_weak(ARG), - /* K33 */ be_nested_str_weak(_parse_sensor_entry), - /* K34 */ be_nested_str_weak(CarbonDioxide), - /* K35 */ be_nested_str_weak(parse_sensors), - /* K36 */ be_nested_str_weak(attribute_updated), + /* K28 */ be_nested_str_weak(set_or_nil), + /* K29 */ be_nested_str_weak(U1), + /* K30 */ be_nested_str_weak(read_attribute), + /* K31 */ be_nested_str_weak(ARG), + /* K32 */ be_nested_str_weak(_parse_sensor_entry), + /* K33 */ be_nested_str_weak(CarbonDioxide), + /* K34 */ be_nested_str_weak(parse_sensors), + /* K35 */ be_nested_str_weak(attribute_updated), }; @@ -415,10 +414,10 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x5426005A, // 0006 LDINT R9 91 0x1C240A09, // 0007 EQ R9 R5 R9 0x78260008, // 0008 JMPF R9 #0012 - 0x1C240D1C, // 0009 EQ R9 R6 K28 + 0x1C240D13, // 0009 EQ R9 R6 K19 0x78260005, // 000A JMPF R9 #0011 - 0x8C24071D, // 000B GETMET R9 R3 K29 - 0x882C091E, // 000C GETMBR R11 R4 K30 + 0x8C24071C, // 000B GETMET R9 R3 K28 + 0x882C091D, // 000C GETMBR R11 R4 K29 0x88300102, // 000D GETMBR R12 R0 K2 0x7C240600, // 000E CALL R9 3 0xA0000000, // 000F CLOSE R0 @@ -492,7 +491,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* nam 0x60240003, // 0053 GETGBL R9 G3 0x5C280000, // 0054 MOVE R10 R0 0x7C240200, // 0055 CALL R9 1 - 0x8C24131F, // 0056 GETMET R9 R9 K31 + 0x8C24131E, // 0056 GETMET R9 R9 K30 0x5C2C0200, // 0057 MOVE R11 R1 0x5C300400, // 0058 MOVE R12 R2 0x5C340600, // 0059 MOVE R13 R3 @@ -524,7 +523,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, / ( &(const binstruction[ 7]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x8C0C030F, // 0001 GETMET R3 R1 K15 - 0x88140120, // 0002 GETMBR R5 R0 K32 + 0x8814011F, // 0002 GETMBR R5 R0 K31 0x7C0C0400, // 0003 CALL R3 2 0x7C080200, // 0004 CALL R2 1 0x90022002, // 0005 SETMBR R0 K16 R2 @@ -558,16 +557,16 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0035, // 0005 JMPF R3 #003C - 0x8C0C0121, // 0006 GETMET R3 R0 K33 + 0x8C0C0120, // 0006 GETMET R3 R0 K32 0x5C140400, // 0007 MOVE R5 R2 - 0x58180022, // 0008 LDCONST R6 K34 + 0x58180021, // 0008 LDCONST R6 K33 0x881C010A, // 0009 GETMBR R7 R0 K10 0x60200007, // 000A GETGBL R8 G7 0x5426040C, // 000B LDINT R9 1037 0x58280013, // 000C LDCONST R10 K19 0x7C0C0E00, // 000D CALL R3 7 0x90021403, // 000E SETMBR R0 K10 R3 - 0x8C0C0121, // 000F GETMET R3 R0 K33 + 0x8C0C0120, // 000F GETMET R3 R0 K32 0x5C140400, // 0010 MOVE R5 R2 0x58180003, // 0011 LDCONST R6 K3 0x881C0104, // 0012 GETMBR R7 R0 K4 @@ -576,7 +575,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 0015 LDCONST R10 K19 0x7C0C0E00, // 0016 CALL R3 7 0x90020803, // 0017 SETMBR R0 K4 R3 - 0x8C0C0121, // 0018 GETMET R3 R0 K33 + 0x8C0C0120, // 0018 GETMET R3 R0 K32 0x5C140400, // 0019 MOVE R5 R2 0x58180005, // 001A LDCONST R6 K5 0x881C0106, // 001B GETMBR R7 R0 K6 @@ -585,7 +584,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 001E LDCONST R10 K19 0x7C0C0E00, // 001F CALL R3 7 0x90020C03, // 0020 SETMBR R0 K6 R3 - 0x8C0C0121, // 0021 GETMET R3 R0 K33 + 0x8C0C0120, // 0021 GETMET R3 R0 K32 0x5C140400, // 0022 MOVE R5 R2 0x58180007, // 0023 LDCONST R6 K7 0x881C0108, // 0024 GETMBR R7 R0 K8 @@ -594,7 +593,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 0027 LDCONST R10 K19 0x7C0C0E00, // 0028 CALL R3 7 0x90021003, // 0029 SETMBR R0 K8 R3 - 0x8C0C0121, // 002A GETMET R3 R0 K33 + 0x8C0C0120, // 002A GETMET R3 R0 K32 0x5C140400, // 002B MOVE R5 R2 0x5818000D, // 002C LDCONST R6 K13 0x881C010E, // 002D GETMBR R7 R0 K14 @@ -603,7 +602,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x58280013, // 0030 LDCONST R10 K19 0x7C0C0E00, // 0031 CALL R3 7 0x90021C03, // 0032 SETMBR R0 K14 R3 - 0x8C0C0121, // 0033 GETMET R3 R0 K33 + 0x8C0C0120, // 0033 GETMET R3 R0 K32 0x5C140400, // 0034 MOVE R5 R2 0x5818000B, // 0035 LDCONST R6 K11 0x881C010C, // 0036 GETMBR R7 R0 K12 @@ -615,7 +614,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name 0x600C0003, // 003C GETGBL R3 G3 0x5C100000, // 003D MOVE R4 R0 0x7C0C0200, // 003E CALL R3 1 - 0x8C0C0723, // 003F GETMET R3 R3 K35 + 0x8C0C0722, // 003F GETMET R3 R3 K34 0x5C140200, // 0040 MOVE R5 R1 0x7C0C0400, // 0041 CALL R3 2 0x80000000, // 0042 RET 0 @@ -657,7 +656,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, / 0x78220005, // 000C JMPF R8 #0013 0x20200E03, // 000D NE R8 R7 R3 0x78220003, // 000E JMPF R8 #0013 - 0x8C200124, // 000F GETMET R8 R0 K36 + 0x8C200123, // 000F GETMET R8 R0 K35 0x5C280A00, // 0010 MOVE R10 R5 0x5C2C0C00, // 0011 MOVE R11 R6 0x7C200600, // 0012 CALL R8 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h index ede195e26..66aa1dfbf 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_GenericSwitch_Btn' ktab size: 27, total: 35 (saved 64 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[27] = { +// compact class 'Matter_Plugin_Sensor_GenericSwitch_Btn' ktab size: 24, total: 35 (saved 88 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[24] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -22,16 +22,13 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[27] = { /* K14 */ be_nested_str_weak(tasmota_switch_index), /* K15 */ be_nested_str_weak(find), /* K16 */ be_nested_str_weak(ARG), - /* K17 */ be_const_int(1), - /* K18 */ be_const_int(0), - /* K19 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), - /* K20 */ be_nested_str_weak(shadow_onoff), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(set_position), - /* K23 */ be_nested_str_weak(publish_event), - /* K24 */ be_nested_str_weak(EVENT_INFO), - /* K25 */ be_nested_str_weak(Matter_TLV_item), - /* K26 */ be_const_int(3), + /* K17 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s), + /* K18 */ be_nested_str_weak(shadow_onoff), + /* K19 */ be_nested_str_weak(set_position), + /* K20 */ be_nested_str_weak(publish_event), + /* K21 */ be_nested_str_weak(EVENT_INFO), + /* K22 */ be_nested_str_weak(Matter_TLV_item), + /* K23 */ be_const_int(3), }; @@ -187,14 +184,14 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuratio 0x60080009, // 0000 GETGBL R2 G9 0x8C0C030F, // 0001 GETMET R3 R1 K15 0x88140110, // 0002 GETMBR R5 R0 K16 - 0x58180011, // 0003 LDCONST R6 K17 + 0x58180008, // 0003 LDCONST R6 K8 0x7C0C0600, // 0004 CALL R3 3 0x7C080200, // 0005 CALL R2 1 0x90021C02, // 0006 SETMBR R0 K14 R2 0x8808010E, // 0007 GETMBR R2 R0 K14 - 0x18080512, // 0008 LE R2 R2 K18 + 0x18080504, // 0008 LE R2 R2 K4 0x780A0000, // 0009 JMPF R2 #000B - 0x90021D11, // 000A SETMBR R0 K14 K17 + 0x90021D08, // 000A SETMBR R0 K14 K8 0x80000000, // 000B RET 0 }) ) @@ -220,9 +217,9 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080013, // 0001 LDCONST R2 K19 + 0x58080011, // 0001 LDCONST R2 K17 0x600C0009, // 0002 GETGBL R3 G9 - 0x88100114, // 0003 GETMBR R4 R0 K20 + 0x88100112, // 0003 GETMBR R4 R0 K18 0x7C0C0200, // 0004 CALL R3 1 0x7C040400, // 0005 CALL R1 2 0x80040200, // 0006 RET 1 R1 @@ -251,75 +248,75 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, ( &(const binstruction[105]) { /* code */ 0x1C140504, // 0000 EQ R5 R2 K4 0x74160001, // 0001 JMPT R5 #0004 - 0x1C140515, // 0002 EQ R5 R2 K21 + 0x1C140508, // 0002 EQ R5 R2 K8 0x78160002, // 0003 JMPF R5 #0007 - 0x8C140116, // 0004 GETMET R5 R0 K22 + 0x8C140113, // 0004 GETMET R5 R0 K19 0x5C1C0600, // 0005 MOVE R7 R3 0x7C140400, // 0006 CALL R5 2 - 0x1C140515, // 0007 EQ R5 R2 K21 + 0x1C140508, // 0007 EQ R5 R2 K8 0x78160040, // 0008 JMPF R5 #004A 0x780E0010, // 0009 JMPF R3 #001B - 0x8C140117, // 000A GETMET R5 R0 K23 + 0x8C140114, // 000A GETMET R5 R0 K20 0x541E003A, // 000B LDINT R7 59 - 0x58200015, // 000C LDCONST R8 K21 + 0x58200008, // 000C LDCONST R8 K8 0xB8260000, // 000D GETNGBL R9 K0 - 0x88241318, // 000E GETMBR R9 R9 K24 + 0x88241315, // 000E GETMBR R9 R9 K21 0xB82A0000, // 000F GETNGBL R10 K0 0x88281501, // 0010 GETMBR R10 R10 K1 - 0x8C281519, // 0011 GETMET R10 R10 K25 + 0x8C281516, // 0011 GETMET R10 R10 K22 0x7C280200, // 0012 CALL R10 1 0x8C281505, // 0013 GETMET R10 R10 K5 0xB8320000, // 0014 GETNGBL R12 K0 0x88301901, // 0015 GETMBR R12 R12 K1 0x88301906, // 0016 GETMBR R12 R12 K6 - 0x58340015, // 0017 LDCONST R13 K21 + 0x58340008, // 0017 LDCONST R13 K8 0x7C280600, // 0018 CALL R10 3 0x7C140A00, // 0019 CALL R5 5 0x7002000F, // 001A JMP #002B - 0x8C140117, // 001B GETMET R5 R0 K23 + 0x8C140114, // 001B GETMET R5 R0 K20 0x541E003A, // 001C LDINT R7 59 - 0x5820001A, // 001D LDCONST R8 K26 + 0x58200017, // 001D LDCONST R8 K23 0xB8260000, // 001E GETNGBL R9 K0 - 0x88241318, // 001F GETMBR R9 R9 K24 + 0x88241315, // 001F GETMBR R9 R9 K21 0xB82A0000, // 0020 GETNGBL R10 K0 0x88281501, // 0021 GETMBR R10 R10 K1 - 0x8C281519, // 0022 GETMET R10 R10 K25 + 0x8C281516, // 0022 GETMET R10 R10 K22 0x7C280200, // 0023 CALL R10 1 0x8C281505, // 0024 GETMET R10 R10 K5 0xB8320000, // 0025 GETNGBL R12 K0 0x88301901, // 0026 GETMBR R12 R12 K1 0x88301906, // 0027 GETMBR R12 R12 K6 - 0x58340015, // 0028 LDCONST R13 K21 + 0x58340008, // 0028 LDCONST R13 K8 0x7C280600, // 0029 CALL R10 3 0x7C140A00, // 002A CALL R5 5 - 0x1C140715, // 002B EQ R5 R3 K21 + 0x1C140708, // 002B EQ R5 R3 K8 0x7816001B, // 002C JMPF R5 #0049 0x24140904, // 002D GT R5 R4 K4 0x78160019, // 002E JMPF R5 #0049 - 0x8C140117, // 002F GETMET R5 R0 K23 + 0x8C140114, // 002F GETMET R5 R0 K20 0x541E003A, // 0030 LDINT R7 59 0x54220004, // 0031 LDINT R8 5 0xB8260000, // 0032 GETNGBL R9 K0 - 0x88241318, // 0033 GETMBR R9 R9 K24 + 0x88241315, // 0033 GETMBR R9 R9 K21 0xB82A0000, // 0034 GETNGBL R10 K0 0x88281501, // 0035 GETMBR R10 R10 K1 - 0x8C281519, // 0036 GETMET R10 R10 K25 + 0x8C281516, // 0036 GETMET R10 R10 K22 0x7C280200, // 0037 CALL R10 1 0x8C281505, // 0038 GETMET R10 R10 K5 0xB8320000, // 0039 GETNGBL R12 K0 0x88301901, // 003A GETMBR R12 R12 K1 0x88301906, // 003B GETMBR R12 R12 K6 - 0x58340015, // 003C LDCONST R13 K21 + 0x58340008, // 003C LDCONST R13 K8 0x7C280600, // 003D CALL R10 3 0xB82E0000, // 003E GETNGBL R11 K0 0x882C1701, // 003F GETMBR R11 R11 K1 - 0x8C2C1719, // 0040 GETMET R11 R11 K25 + 0x8C2C1716, // 0040 GETMET R11 R11 K22 0x7C2C0200, // 0041 CALL R11 1 0x8C2C1705, // 0042 GETMET R11 R11 K5 0xB8360000, // 0043 GETNGBL R13 K0 0x88341B01, // 0044 GETMBR R13 R13 K1 0x88341B06, // 0045 GETMBR R13 R13 K6 - 0x00380915, // 0046 ADD R14 R4 K21 + 0x00380908, // 0046 ADD R14 R4 K8 0x7C2C0600, // 0047 CALL R11 3 0x7C140C00, // 0048 CALL R5 6 0x7002001D, // 0049 JMP #0068 @@ -327,24 +324,24 @@ be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, 0x7816001B, // 004B JMPF R5 #0068 0x24140904, // 004C GT R5 R4 K4 0x78160019, // 004D JMPF R5 #0068 - 0x8C140117, // 004E GETMET R5 R0 K23 + 0x8C140114, // 004E GETMET R5 R0 K20 0x541E003A, // 004F LDINT R7 59 0x54220005, // 0050 LDINT R8 6 0xB8260000, // 0051 GETNGBL R9 K0 - 0x88241318, // 0052 GETMBR R9 R9 K24 + 0x88241315, // 0052 GETMBR R9 R9 K21 0xB82A0000, // 0053 GETNGBL R10 K0 0x88281501, // 0054 GETMBR R10 R10 K1 - 0x8C281519, // 0055 GETMET R10 R10 K25 + 0x8C281516, // 0055 GETMET R10 R10 K22 0x7C280200, // 0056 CALL R10 1 0x8C281505, // 0057 GETMET R10 R10 K5 0xB8320000, // 0058 GETNGBL R12 K0 0x88301901, // 0059 GETMBR R12 R12 K1 0x88301906, // 005A GETMBR R12 R12 K6 - 0x58340015, // 005B LDCONST R13 K21 + 0x58340008, // 005B LDCONST R13 K8 0x7C280600, // 005C CALL R10 3 0xB82E0000, // 005D GETNGBL R11 K0 0x882C1701, // 005E GETMBR R11 R11 K1 - 0x8C2C1719, // 005F GETMET R11 R11 K25 + 0x8C2C1716, // 005F GETMET R11 R11 K22 0x7C2C0200, // 0060 CALL R11 1 0x8C2C1705, // 0061 GETMET R11 R11 K5 0xB8360000, // 0062 GETNGBL R13 K0 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h index 5469fbce5..fe1887a78 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Shutter' ktab size: 51, total: 78 (saved 216 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Shutter[51] = { +// compact class 'Matter_Plugin_Shutter' ktab size: 47, total: 78 (saved 248 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Shutter[47] = { /* K0 */ be_nested_str_weak(tasmota_shutter_index), /* K1 */ be_nested_str_weak(find), /* K2 */ be_nested_str_weak(ARG), @@ -16,46 +16,42 @@ static const bvalue be_ktab_class_Matter_Plugin_Shutter[51] = { /* K8 */ be_nested_str_weak(cluster), /* K9 */ be_nested_str_weak(command), /* K10 */ be_nested_str_weak(update_shadow_lazy), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(cmd), - /* K14 */ be_nested_str_weak(ShutterStopOpen), - /* K15 */ be_const_int(1), - /* K16 */ be_nested_str_weak(update_shadow), - /* K17 */ be_nested_str_weak(ShutterStopClose), - /* K18 */ be_const_int(2), - /* K19 */ be_nested_str_weak(ShutterStop), - /* K20 */ be_nested_str_weak(log), - /* K21 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20), - /* K22 */ be_nested_str_weak(findsubval), - /* K23 */ be_nested_str_weak(ShutterPosition), - /* K24 */ be_nested_str_weak(_X20), - /* K25 */ be_nested_str_weak(pos_X25_X3A), - /* K26 */ be_nested_str_weak(invoke_request), - /* K27 */ be_nested_str_weak(attribute), - /* K28 */ be_nested_str_weak(update_inverted), - /* K29 */ be_const_int(0), - /* K30 */ be_nested_str_weak(set), - /* K31 */ be_nested_str_weak(U1), - /* K32 */ be_nested_str_weak(U2), - /* K33 */ be_nested_str_weak(shadow_shutter_pos), - /* K34 */ be_nested_str_weak(shadow_shutter_direction), - /* K35 */ be_const_int(2), - /* K36 */ be_nested_str_weak(shadow_shutter_target), - /* K37 */ be_nested_str_weak(read_attribute), - /* K38 */ be_nested_str_weak(Shutter), - /* K39 */ be_const_int(1), - /* K40 */ be_nested_str_weak(contains), - /* K41 */ be_nested_str_weak(Position), - /* K42 */ be_nested_str_weak(attribute_updated), - /* K43 */ be_nested_str_weak(Direction), - /* K44 */ be_nested_str_weak(Target), - /* K45 */ be_nested_str_weak(Status_X2013), - /* K46 */ be_nested_str_weak(StatusSHT), - /* K47 */ be_nested_str_weak(SHT), - /* K48 */ be_nested_str_weak(Opt), - /* K49 */ be_nested_str_weak(VIRTUAL), - /* K50 */ be_nested_str_weak(parse_sensors), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(cmd), + /* K13 */ be_nested_str_weak(ShutterStopOpen), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(update_shadow), + /* K16 */ be_nested_str_weak(ShutterStopClose), + /* K17 */ be_const_int(2), + /* K18 */ be_nested_str_weak(ShutterStop), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20), + /* K21 */ be_nested_str_weak(findsubval), + /* K22 */ be_nested_str_weak(ShutterPosition), + /* K23 */ be_nested_str_weak(_X20), + /* K24 */ be_nested_str_weak(pos_X25_X3A), + /* K25 */ be_nested_str_weak(invoke_request), + /* K26 */ be_nested_str_weak(attribute), + /* K27 */ be_nested_str_weak(update_inverted), + /* K28 */ be_nested_str_weak(set), + /* K29 */ be_nested_str_weak(U1), + /* K30 */ be_nested_str_weak(U2), + /* K31 */ be_nested_str_weak(shadow_shutter_pos), + /* K32 */ be_nested_str_weak(shadow_shutter_direction), + /* K33 */ be_nested_str_weak(shadow_shutter_target), + /* K34 */ be_nested_str_weak(read_attribute), + /* K35 */ be_nested_str_weak(Shutter), + /* K36 */ be_nested_str_weak(contains), + /* K37 */ be_nested_str_weak(Position), + /* K38 */ be_nested_str_weak(attribute_updated), + /* K39 */ be_nested_str_weak(Direction), + /* K40 */ be_nested_str_weak(Target), + /* K41 */ be_nested_str_weak(Status_X2013), + /* K42 */ be_nested_str_weak(StatusSHT), + /* K43 */ be_nested_str_weak(SHT), + /* K44 */ be_nested_str_weak(Opt), + /* K45 */ be_nested_str_weak(VIRTUAL), + /* K46 */ be_nested_str_weak(parse_sensors), }; @@ -123,50 +119,50 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x78220060, // 0007 JMPF R8 #0069 0x8C20010A, // 0008 GETMET R8 R0 K10 0x7C200200, // 0009 CALL R8 1 - 0x1C200F0B, // 000A EQ R8 R7 K11 + 0x1C200F03, // 000A EQ R8 R7 K3 0x7822000D, // 000B JMPF R8 #001A - 0xB8221800, // 000C GETNGBL R8 K12 - 0x8C20110D, // 000D GETMET R8 R8 K13 + 0xB8221600, // 000C GETNGBL R8 K11 + 0x8C20110C, // 000D GETMET R8 R8 K12 0x60280008, // 000E GETGBL R10 G8 0x882C0100, // 000F GETMBR R11 R0 K0 - 0x002C170F, // 0010 ADD R11 R11 K15 + 0x002C170E, // 0010 ADD R11 R11 K14 0x7C280200, // 0011 CALL R10 1 - 0x002A1C0A, // 0012 ADD R10 K14 R10 + 0x002A1A0A, // 0012 ADD R10 K13 R10 0x502C0200, // 0013 LDBOOL R11 1 0 0x7C200600, // 0014 CALL R8 3 - 0x8C200110, // 0015 GETMET R8 R0 K16 + 0x8C20010F, // 0015 GETMET R8 R0 K15 0x7C200200, // 0016 CALL R8 1 0x50200200, // 0017 LDBOOL R8 1 0 0x80041000, // 0018 RET 1 R8 0x7002004D, // 0019 JMP #0068 - 0x1C200F0F, // 001A EQ R8 R7 K15 + 0x1C200F0E, // 001A EQ R8 R7 K14 0x7822000D, // 001B JMPF R8 #002A - 0xB8221800, // 001C GETNGBL R8 K12 - 0x8C20110D, // 001D GETMET R8 R8 K13 + 0xB8221600, // 001C GETNGBL R8 K11 + 0x8C20110C, // 001D GETMET R8 R8 K12 0x60280008, // 001E GETGBL R10 G8 0x882C0100, // 001F GETMBR R11 R0 K0 - 0x002C170F, // 0020 ADD R11 R11 K15 + 0x002C170E, // 0020 ADD R11 R11 K14 0x7C280200, // 0021 CALL R10 1 - 0x002A220A, // 0022 ADD R10 K17 R10 + 0x002A200A, // 0022 ADD R10 K16 R10 0x502C0200, // 0023 LDBOOL R11 1 0 0x7C200600, // 0024 CALL R8 3 - 0x8C200110, // 0025 GETMET R8 R0 K16 + 0x8C20010F, // 0025 GETMET R8 R0 K15 0x7C200200, // 0026 CALL R8 1 0x50200200, // 0027 LDBOOL R8 1 0 0x80041000, // 0028 RET 1 R8 0x7002003D, // 0029 JMP #0068 - 0x1C200F12, // 002A EQ R8 R7 K18 + 0x1C200F11, // 002A EQ R8 R7 K17 0x7822000D, // 002B JMPF R8 #003A - 0xB8221800, // 002C GETNGBL R8 K12 - 0x8C20110D, // 002D GETMET R8 R8 K13 + 0xB8221600, // 002C GETNGBL R8 K11 + 0x8C20110C, // 002D GETMET R8 R8 K12 0x60280008, // 002E GETGBL R10 G8 0x882C0100, // 002F GETMBR R11 R0 K0 - 0x002C170F, // 0030 ADD R11 R11 K15 + 0x002C170E, // 0030 ADD R11 R11 K14 0x7C280200, // 0031 CALL R10 1 - 0x002A260A, // 0032 ADD R10 K19 R10 + 0x002A240A, // 0032 ADD R10 K18 R10 0x502C0200, // 0033 LDBOOL R11 1 0 0x7C200600, // 0034 CALL R8 3 - 0x8C200110, // 0035 GETMET R8 R0 K16 + 0x8C20010F, // 0035 GETMET R8 R0 K15 0x7C200200, // 0036 CALL R8 1 0x50200200, // 0037 LDBOOL R8 1 0 0x80041000, // 0038 RET 1 R8 @@ -174,15 +170,15 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x54220004, // 003A LDINT R8 5 0x1C200E08, // 003B EQ R8 R7 R8 0x7822002A, // 003C JMPF R8 #0068 - 0xB8222800, // 003D GETNGBL R8 K20 + 0xB8222600, // 003D GETNGBL R8 K19 0x60240008, // 003E GETGBL R9 G8 0x5C280400, // 003F MOVE R10 R2 0x7C240200, // 0040 CALL R9 1 - 0x00262A09, // 0041 ADD R9 K21 R9 - 0x58280012, // 0042 LDCONST R10 K18 + 0x00262809, // 0041 ADD R9 K20 R9 + 0x58280011, // 0042 LDCONST R10 K17 0x7C200400, // 0043 CALL R8 2 - 0x8C200516, // 0044 GETMET R8 R2 K22 - 0x5828000B, // 0045 LDCONST R10 K11 + 0x8C200515, // 0044 GETMET R8 R2 K21 + 0x58280003, // 0045 LDCONST R10 K3 0x7C200400, // 0046 CALL R8 2 0x4C240000, // 0047 LDNIL R9 0x20241009, // 0048 NE R9 R8 R9 @@ -190,18 +186,18 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x54260063, // 004A LDINT R9 100 0x0C201009, // 004B DIV R8 R8 R9 0x88240104, // 004C GETMBR R9 R0 K4 - 0x1C24130B, // 004D EQ R9 R9 K11 + 0x1C241303, // 004D EQ R9 R9 K3 0x78260001, // 004E JMPF R9 #0051 0x54260063, // 004F LDINT R9 100 0x04201208, // 0050 SUB R8 R9 R8 - 0xB8261800, // 0051 GETNGBL R9 K12 - 0x8C24130D, // 0052 GETMET R9 R9 K13 + 0xB8261600, // 0051 GETNGBL R9 K11 + 0x8C24130C, // 0052 GETMET R9 R9 K12 0x602C0008, // 0053 GETGBL R11 G8 0x88300100, // 0054 GETMBR R12 R0 K0 - 0x0030190F, // 0055 ADD R12 R12 K15 + 0x0030190E, // 0055 ADD R12 R12 K14 0x7C2C0200, // 0056 CALL R11 1 - 0x002E2E0B, // 0057 ADD R11 K23 R11 - 0x002C1718, // 0058 ADD R11 R11 K24 + 0x002E2C0B, // 0057 ADD R11 K22 R11 + 0x002C1717, // 0058 ADD R11 R11 K23 0x60300008, // 0059 GETGBL R12 G8 0x5C341000, // 005A MOVE R13 R8 0x7C300200, // 005B CALL R12 1 @@ -211,9 +207,9 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x60240008, // 005F GETGBL R9 G8 0x5C281000, // 0060 MOVE R10 R8 0x7C240200, // 0061 CALL R9 1 - 0x00263209, // 0062 ADD R9 K25 R9 - 0x900E2809, // 0063 SETMBR R3 K20 R9 - 0x8C240110, // 0064 GETMET R9 R0 K16 + 0x00263009, // 0062 ADD R9 K24 R9 + 0x900E2609, // 0063 SETMBR R3 K19 R9 + 0x8C24010F, // 0064 GETMET R9 R0 K15 0x7C240200, // 0065 CALL R9 1 0x50240200, // 0066 LDBOOL R9 1 0 0x80041200, // 0067 RET 1 R9 @@ -221,7 +217,7 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */ 0x60200003, // 0069 GETGBL R8 G3 0x5C240000, // 006A MOVE R9 R0 0x7C200200, // 006B CALL R8 1 - 0x8C20111A, // 006C GETMET R8 R8 K26 + 0x8C201119, // 006C GETMET R8 R8 K25 0x5C280200, // 006D MOVE R10 R1 0x5C2C0400, // 006E MOVE R11 R2 0x5C300600, // 006F MOVE R12 R3 @@ -254,19 +250,19 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0xB8120C00, // 0000 GETNGBL R4 K6 0x88100907, // 0001 GETMBR R4 R4 K7 0x88140508, // 0002 GETMBR R5 R2 K8 - 0x8818051B, // 0003 GETMBR R6 R2 K27 + 0x8818051A, // 0003 GETMBR R6 R2 K26 0x4C1C0000, // 0004 LDNIL R7 0x54220101, // 0005 LDINT R8 258 0x1C200A08, // 0006 EQ R8 R5 R8 0x78220071, // 0007 JMPF R8 #007A 0x8C20010A, // 0008 GETMET R8 R0 K10 0x7C200200, // 0009 CALL R8 1 - 0x8C20011C, // 000A GETMET R8 R0 K28 + 0x8C20011B, // 000A GETMET R8 R0 K27 0x7C200200, // 000B CALL R8 1 - 0x1C200D1D, // 000C EQ R8 R6 K29 + 0x1C200D03, // 000C EQ R8 R6 K3 0x78220005, // 000D JMPF R8 #0014 - 0x8C20071E, // 000E GETMET R8 R3 K30 - 0x8828091F, // 000F GETMBR R10 R4 K31 + 0x8C20071C, // 000E GETMET R8 R3 K28 + 0x8828091D, // 000F GETMBR R10 R4 K29 0x542E00FE, // 0010 LDINT R11 255 0x7C200600, // 0011 CALL R8 3 0x80041000, // 0012 RET 1 R8 @@ -274,27 +270,27 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220004, // 0014 LDINT R8 5 0x1C200C08, // 0015 EQ R8 R6 R8 0x78220005, // 0016 JMPF R8 #001D - 0x8C20071E, // 0017 GETMET R8 R3 K30 - 0x88280920, // 0018 GETMBR R10 R4 K32 - 0x582C001D, // 0019 LDCONST R11 K29 + 0x8C20071C, // 0017 GETMET R8 R3 K28 + 0x8828091E, // 0018 GETMBR R10 R4 K30 + 0x582C0003, // 0019 LDCONST R11 K3 0x7C200600, // 001A CALL R8 3 0x80041000, // 001B RET 1 R8 0x7002005C, // 001C JMP #007A 0x54220006, // 001D LDINT R8 7 0x1C200C08, // 001E EQ R8 R6 R8 0x78220006, // 001F JMPF R8 #0027 - 0x8C20071E, // 0020 GETMET R8 R3 K30 - 0x8828091F, // 0021 GETMBR R10 R4 K31 + 0x8C20071C, // 0020 GETMET R8 R3 K28 + 0x8828091D, // 0021 GETMBR R10 R4 K29 0x542E0007, // 0022 LDINT R11 8 - 0x002E1E0B, // 0023 ADD R11 K15 R11 + 0x002E1C0B, // 0023 ADD R11 K14 R11 0x7C200600, // 0024 CALL R8 3 0x80041000, // 0025 RET 1 R8 0x70020052, // 0026 JMP #007A 0x5422000C, // 0027 LDINT R8 13 0x1C200C08, // 0028 EQ R8 R6 R8 0x78220005, // 0029 JMPF R8 #0030 - 0x8C20071E, // 002A GETMET R8 R3 K30 - 0x8828091F, // 002B GETMBR R10 R4 K31 + 0x8C20071C, // 002A GETMET R8 R3 K28 + 0x8828091D, // 002B GETMBR R10 R4 K29 0x542E00FE, // 002C LDINT R11 255 0x7C200600, // 002D CALL R8 3 0x80041000, // 002E RET 1 R8 @@ -303,21 +299,21 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x1C200C08, // 0031 EQ R8 R6 R8 0x78220013, // 0032 JMPF R8 #0047 0x88200104, // 0033 GETMBR R8 R0 K4 - 0x1C20111D, // 0034 EQ R8 R8 K29 + 0x1C201103, // 0034 EQ R8 R8 K3 0x78220006, // 0035 JMPF R8 #003D 0x54220063, // 0036 LDINT R8 100 - 0x88240121, // 0037 GETMBR R9 R0 K33 + 0x8824011F, // 0037 GETMBR R9 R0 K31 0x04201009, // 0038 SUB R8 R8 R9 0x54260063, // 0039 LDINT R9 100 0x08201009, // 003A MUL R8 R8 R9 0x5C1C1000, // 003B MOVE R7 R8 0x70020003, // 003C JMP #0041 - 0x88200121, // 003D GETMBR R8 R0 K33 + 0x8820011F, // 003D GETMBR R8 R0 K31 0x54260063, // 003E LDINT R9 100 0x08201009, // 003F MUL R8 R8 R9 0x5C1C1000, // 0040 MOVE R7 R8 - 0x8C20071E, // 0041 GETMET R8 R3 K30 - 0x88280920, // 0042 GETMBR R10 R4 K32 + 0x8C20071C, // 0041 GETMET R8 R3 K28 + 0x8828091E, // 0042 GETMBR R10 R4 K30 0x5C2C0E00, // 0043 MOVE R11 R7 0x7C200600, // 0044 CALL R8 3 0x80041000, // 0045 RET 1 R8 @@ -325,19 +321,19 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220009, // 0047 LDINT R8 10 0x1C200C08, // 0048 EQ R8 R6 R8 0x78220010, // 0049 JMPF R8 #005B - 0x88200122, // 004A GETMBR R8 R0 K34 - 0x1C20111D, // 004B EQ R8 R8 K29 + 0x88200120, // 004A GETMBR R8 R0 K32 + 0x1C201103, // 004B EQ R8 R8 K3 0x78220001, // 004C JMPF R8 #004F - 0x5820001D, // 004D LDCONST R8 K29 + 0x58200003, // 004D LDCONST R8 K3 0x70020005, // 004E JMP #0055 - 0x88200122, // 004F GETMBR R8 R0 K34 - 0x2420111D, // 0050 GT R8 R8 K29 + 0x88200120, // 004F GETMBR R8 R0 K32 + 0x24201103, // 0050 GT R8 R8 K3 0x78220001, // 0051 JMPF R8 #0054 - 0x5820000F, // 0052 LDCONST R8 K15 + 0x5820000E, // 0052 LDCONST R8 K14 0x70020000, // 0053 JMP #0055 - 0x58200023, // 0054 LDCONST R8 K35 - 0x8C24071E, // 0055 GETMET R9 R3 K30 - 0x882C091F, // 0056 GETMBR R11 R4 K31 + 0x58200011, // 0054 LDCONST R8 K17 + 0x8C24071C, // 0055 GETMET R9 R3 K28 + 0x882C091D, // 0056 GETMBR R11 R4 K29 0x5C301000, // 0057 MOVE R12 R8 0x7C240600, // 0058 CALL R9 3 0x80041200, // 0059 RET 1 R9 @@ -346,21 +342,21 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x1C200C08, // 005C EQ R8 R6 R8 0x78220013, // 005D JMPF R8 #0072 0x88200104, // 005E GETMBR R8 R0 K4 - 0x1C20111D, // 005F EQ R8 R8 K29 + 0x1C201103, // 005F EQ R8 R8 K3 0x78220006, // 0060 JMPF R8 #0068 0x54220063, // 0061 LDINT R8 100 - 0x88240124, // 0062 GETMBR R9 R0 K36 + 0x88240121, // 0062 GETMBR R9 R0 K33 0x04201009, // 0063 SUB R8 R8 R9 0x54260063, // 0064 LDINT R9 100 0x08201009, // 0065 MUL R8 R8 R9 0x5C1C1000, // 0066 MOVE R7 R8 0x70020003, // 0067 JMP #006C - 0x88200124, // 0068 GETMBR R8 R0 K36 + 0x88200121, // 0068 GETMBR R8 R0 K33 0x54260063, // 0069 LDINT R9 100 0x08201009, // 006A MUL R8 R8 R9 0x5C1C1000, // 006B MOVE R7 R8 - 0x8C20071E, // 006C GETMET R8 R3 K30 - 0x88280920, // 006D GETMBR R10 R4 K32 + 0x8C20071C, // 006C GETMET R8 R3 K28 + 0x8828091E, // 006D GETMBR R10 R4 K30 0x5C2C0E00, // 006E MOVE R11 R7 0x7C200600, // 006F CALL R8 3 0x80041000, // 0070 RET 1 R8 @@ -368,15 +364,15 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */ 0x54220016, // 0072 LDINT R8 23 0x1C200C08, // 0073 EQ R8 R6 R8 0x78220004, // 0074 JMPF R8 #007A - 0x8C20071E, // 0075 GETMET R8 R3 K30 - 0x8828091F, // 0076 GETMBR R10 R4 K31 - 0x582C001D, // 0077 LDCONST R11 K29 + 0x8C20071C, // 0075 GETMET R8 R3 K28 + 0x8828091D, // 0076 GETMBR R10 R4 K29 + 0x582C0003, // 0077 LDCONST R11 K3 0x7C200600, // 0078 CALL R8 3 0x80041000, // 0079 RET 1 R8 0x60200003, // 007A GETGBL R8 G3 0x5C240000, // 007B MOVE R9 R0 0x7C200200, // 007C CALL R8 1 - 0x8C201125, // 007D GETMET R8 R8 K37 + 0x8C201122, // 007D GETMET R8 R8 K34 0x5C280200, // 007E MOVE R10 R1 0x5C2C0400, // 007F MOVE R11 R2 0x5C300600, // 0080 MOVE R12 R3 @@ -434,56 +430,56 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */ ( &(const binstruction[53]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x000C0727, // 0002 ADD R3 R3 K39 + 0x000C070E, // 0002 ADD R3 R3 K14 0x7C080200, // 0003 CALL R2 1 - 0x000A4C02, // 0004 ADD R2 K38 R2 - 0x8C0C0328, // 0005 GETMET R3 R1 K40 + 0x000A4602, // 0004 ADD R2 K35 R2 + 0x8C0C0324, // 0005 GETMET R3 R1 K36 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E002A, // 0008 JMPF R3 #0034 0x940C0202, // 0009 GETIDX R3 R1 R2 0x8C100701, // 000A GETMET R4 R3 K1 - 0x58180029, // 000B LDCONST R6 K41 + 0x58180025, // 000B LDCONST R6 K37 0x7C100400, // 000C CALL R4 2 0x4C140000, // 000D LDNIL R5 0x20140805, // 000E NE R5 R4 R5 0x78160007, // 000F JMPF R5 #0018 - 0x88140121, // 0010 GETMBR R5 R0 K33 + 0x8814011F, // 0010 GETMBR R5 R0 K31 0x20140805, // 0011 NE R5 R4 R5 0x78160003, // 0012 JMPF R5 #0017 - 0x8C14012A, // 0013 GETMET R5 R0 K42 + 0x8C140126, // 0013 GETMET R5 R0 K38 0x541E0101, // 0014 LDINT R7 258 0x5422000D, // 0015 LDINT R8 14 0x7C140600, // 0016 CALL R5 3 - 0x90024204, // 0017 SETMBR R0 K33 R4 + 0x90023E04, // 0017 SETMBR R0 K31 R4 0x8C140701, // 0018 GETMET R5 R3 K1 - 0x581C002B, // 0019 LDCONST R7 K43 + 0x581C0027, // 0019 LDCONST R7 K39 0x7C140400, // 001A CALL R5 2 0x4C180000, // 001B LDNIL R6 0x20180A06, // 001C NE R6 R5 R6 0x781A0007, // 001D JMPF R6 #0026 - 0x88180122, // 001E GETMBR R6 R0 K34 + 0x88180120, // 001E GETMBR R6 R0 K32 0x20180A06, // 001F NE R6 R5 R6 0x781A0003, // 0020 JMPF R6 #0025 - 0x8C18012A, // 0021 GETMET R6 R0 K42 + 0x8C180126, // 0021 GETMET R6 R0 K38 0x54220101, // 0022 LDINT R8 258 0x54260009, // 0023 LDINT R9 10 0x7C180600, // 0024 CALL R6 3 - 0x90024405, // 0025 SETMBR R0 K34 R5 + 0x90024005, // 0025 SETMBR R0 K32 R5 0x8C180701, // 0026 GETMET R6 R3 K1 - 0x5820002C, // 0027 LDCONST R8 K44 + 0x58200028, // 0027 LDCONST R8 K40 0x7C180400, // 0028 CALL R6 2 0x4C1C0000, // 0029 LDNIL R7 0x201C0C07, // 002A NE R7 R6 R7 0x781E0007, // 002B JMPF R7 #0034 - 0x881C0124, // 002C GETMBR R7 R0 K36 + 0x881C0121, // 002C GETMBR R7 R0 K33 0x201C0C07, // 002D NE R7 R6 R7 0x781E0003, // 002E JMPF R7 #0033 - 0x8C1C012A, // 002F GETMET R7 R0 K42 + 0x8C1C0126, // 002F GETMET R7 R0 K38 0x54260101, // 0030 LDINT R9 258 0x542A000A, // 0031 LDINT R10 11 0x7C1C0600, // 0032 CALL R7 3 - 0x90024806, // 0033 SETMBR R0 K36 R6 + 0x90024206, // 0033 SETMBR R0 K33 R6 0x80000000, // 0034 RET 0 }) ) @@ -512,26 +508,26 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ 0x5409FFFE, // 0001 LDINT R2 -1 0x1C040202, // 0002 EQ R1 R1 R2 0x7806001F, // 0003 JMPF R1 #0024 - 0xB8061800, // 0004 GETNGBL R1 K12 - 0x8C04030D, // 0005 GETMET R1 R1 K13 - 0x580C002D, // 0006 LDCONST R3 K45 + 0xB8061600, // 0004 GETNGBL R1 K11 + 0x8C04030C, // 0005 GETMET R1 R1 K12 + 0x580C0029, // 0006 LDCONST R3 K41 0x50100200, // 0007 LDBOOL R4 1 0 0x7C040600, // 0008 CALL R1 3 - 0x8C080328, // 0009 GETMET R2 R1 K40 - 0x5810002E, // 000A LDCONST R4 K46 + 0x8C080324, // 0009 GETMET R2 R1 K36 + 0x5810002A, // 000A LDCONST R4 K42 0x7C080400, // 000B CALL R2 2 0x780A0016, // 000C JMPF R2 #0024 - 0x9404032E, // 000D GETIDX R1 R1 K46 + 0x9404032A, // 000D GETIDX R1 R1 K42 0x8C080301, // 000E GETMET R2 R1 K1 0x60100008, // 000F GETGBL R4 G8 0x88140100, // 0010 GETMBR R5 R0 K0 0x7C100200, // 0011 CALL R4 1 - 0x00125E04, // 0012 ADD R4 K47 R4 + 0x00125604, // 0012 ADD R4 K43 R4 0x60140013, // 0013 GETGBL R5 G19 0x7C140000, // 0014 CALL R5 0 0x7C080600, // 0015 CALL R2 3 0x8C080501, // 0016 GETMET R2 R2 K1 - 0x58100030, // 0017 LDCONST R4 K48 + 0x5810002C, // 0017 LDCONST R4 K44 0x7C080400, // 0018 CALL R2 2 0x4C0C0000, // 0019 LDNIL R3 0x200C0403, // 001A NE R3 R2 R3 @@ -540,7 +536,7 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */ 0x6010000C, // 001D GETGBL R4 G12 0x5C140400, // 001E MOVE R5 R2 0x7C100200, // 001F CALL R4 1 - 0x0410090F, // 0020 SUB R4 R4 K15 + 0x0410090E, // 0020 SUB R4 R4 K14 0x94100404, // 0021 GETIDX R4 R2 R4 0x7C0C0200, // 0022 CALL R3 1 0x90020803, // 0023 SETMBR R0 K4 R3 @@ -568,27 +564,27 @@ be_local_closure(class_Matter_Plugin_Shutter_update_shadow, /* name */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x88040131, // 0000 GETMBR R1 R0 K49 + 0x8804012D, // 0000 GETMBR R1 R0 K45 0x7406000E, // 0001 JMPT R1 #0011 - 0x8C04011C, // 0002 GETMET R1 R0 K28 + 0x8C04011B, // 0002 GETMET R1 R0 K27 0x7C040200, // 0003 CALL R1 1 - 0xB8061800, // 0004 GETNGBL R1 K12 - 0x8C04030D, // 0005 GETMET R1 R1 K13 + 0xB8061600, // 0004 GETNGBL R1 K11 + 0x8C04030C, // 0005 GETMET R1 R1 K12 0x600C0008, // 0006 GETGBL R3 G8 0x88100100, // 0007 GETMBR R4 R0 K0 - 0x00100927, // 0008 ADD R4 R4 K39 + 0x0010090E, // 0008 ADD R4 R4 K14 0x7C0C0200, // 0009 CALL R3 1 - 0x000E2E03, // 000A ADD R3 K23 R3 + 0x000E2C03, // 000A ADD R3 K22 R3 0x50100200, // 000B LDBOOL R4 1 0 0x7C040600, // 000C CALL R1 3 0x78060002, // 000D JMPF R1 #0011 - 0x8C080132, // 000E GETMET R2 R0 K50 + 0x8C08012E, // 000E GETMET R2 R0 K46 0x5C100200, // 000F MOVE R4 R1 0x7C080400, // 0010 CALL R2 2 0x60040003, // 0011 GETGBL R1 G3 0x5C080000, // 0012 MOVE R2 R0 0x7C040200, // 0013 CALL R1 1 - 0x8C040310, // 0014 GETMET R1 R1 K16 + 0x8C04030F, // 0014 GETMET R1 R1 K15 0x7C040200, // 0015 CALL R1 1 0x80000000, // 0016 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h index ee26c85e9..3b4352584 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Light1' ktab size: 59, total: 108 (saved 392 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Light1[59] = { +// compact class 'Matter_Plugin_Light1' ktab size: 54, total: 108 (saved 432 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light1[54] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(BRIDGE), /* K2 */ be_nested_str_weak(tasmota), @@ -30,40 +30,35 @@ static const bvalue be_ktab_class_Matter_Plugin_Light1[59] = { /* K22 */ be_nested_str_weak(cluster), /* K23 */ be_nested_str_weak(command), /* K24 */ be_nested_str_weak(update_shadow_lazy), - /* K25 */ be_const_int(0), - /* K26 */ be_nested_str_weak(findsubval), - /* K27 */ be_nested_str_weak(set_bri), - /* K28 */ be_nested_str_weak(log), - /* K29 */ be_nested_str_weak(bri_X3A), - /* K30 */ be_nested_str_weak(publish_command), - /* K31 */ be_nested_str_weak(Bri), - /* K32 */ be_const_int(1), - /* K33 */ be_const_int(2), - /* K34 */ be_const_int(3), - /* K35 */ be_nested_str_weak(Power), - /* K36 */ be_nested_str_weak(invoke_request), - /* K37 */ be_nested_str_weak(attribute), - /* K38 */ be_nested_str_weak(U1), - /* K39 */ be_const_int(2), - /* K40 */ be_nested_str_weak(read_attribute), - /* K41 */ be_nested_str_weak(tasmota_relay_index), - /* K42 */ be_nested_str_weak(find), - /* K43 */ be_nested_str_weak(ARG), - /* K44 */ be_const_int(0), - /* K45 */ be_const_int(1), - /* K46 */ be_nested_str_weak(TYPE), - /* K47 */ be_nested_str_weak(light1), - /* K48 */ be_nested_str_weak(get_option), - /* K49 */ be_nested_str_weak(get), - /* K50 */ be_nested_str_weak(update_virtual), - /* K51 */ be_const_int(0), - /* K52 */ be_nested_str_weak(init), - /* K53 */ be_nested_str_weak(webserver), - /* K54 */ be_nested_str_weak(web_values_prefix), - /* K55 */ be_nested_str_weak(content_send), - /* K56 */ be_nested_str_weak(_X25s_X20_X25s), - /* K57 */ be_nested_str_weak(web_value_onoff), - /* K58 */ be_nested_str_weak(web_value_dimmer), + /* K25 */ be_nested_str_weak(findsubval), + /* K26 */ be_nested_str_weak(set_bri), + /* K27 */ be_nested_str_weak(log), + /* K28 */ be_nested_str_weak(bri_X3A), + /* K29 */ be_nested_str_weak(publish_command), + /* K30 */ be_nested_str_weak(Bri), + /* K31 */ be_const_int(1), + /* K32 */ be_const_int(2), + /* K33 */ be_const_int(3), + /* K34 */ be_nested_str_weak(Power), + /* K35 */ be_nested_str_weak(invoke_request), + /* K36 */ be_nested_str_weak(attribute), + /* K37 */ be_nested_str_weak(U1), + /* K38 */ be_nested_str_weak(read_attribute), + /* K39 */ be_nested_str_weak(tasmota_relay_index), + /* K40 */ be_nested_str_weak(find), + /* K41 */ be_nested_str_weak(ARG), + /* K42 */ be_nested_str_weak(TYPE), + /* K43 */ be_nested_str_weak(light1), + /* K44 */ be_nested_str_weak(get_option), + /* K45 */ be_nested_str_weak(get), + /* K46 */ be_nested_str_weak(update_virtual), + /* K47 */ be_nested_str_weak(init), + /* K48 */ be_nested_str_weak(webserver), + /* K49 */ be_nested_str_weak(web_values_prefix), + /* K50 */ be_nested_str_weak(content_send), + /* K51 */ be_nested_str_weak(_X25s_X20_X25s), + /* K52 */ be_nested_str_weak(web_value_onoff), + /* K53 */ be_nested_str_weak(web_value_dimmer), }; @@ -253,46 +248,46 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x78220064, // 0007 JMPF R8 #006D 0x8C200118, // 0008 GETMET R8 R0 K24 0x7C200200, // 0009 CALL R8 1 - 0x1C200F19, // 000A EQ R8 R7 K25 + 0x1C200F00, // 000A EQ R8 R7 K0 0x7822001A, // 000B JMPF R8 #0027 - 0x8C20051A, // 000C GETMET R8 R2 K26 - 0x58280019, // 000D LDCONST R10 K25 + 0x8C200519, // 000C GETMET R8 R2 K25 + 0x58280000, // 000D LDCONST R10 K0 0x7C200400, // 000E CALL R8 2 - 0x8C24011B, // 000F GETMET R9 R0 K27 + 0x8C24011A, // 000F GETMET R9 R0 K26 0x5C2C1000, // 0010 MOVE R11 R8 0x7C240400, // 0011 CALL R9 2 0x60240008, // 0012 GETGBL R9 G8 0x5C281000, // 0013 MOVE R10 R8 0x7C240200, // 0014 CALL R9 1 - 0x00263A09, // 0015 ADD R9 K29 R9 - 0x900E3809, // 0016 SETMBR R3 K28 R9 - 0x8C24011E, // 0017 GETMET R9 R0 K30 - 0x582C001F, // 0018 LDCONST R11 K31 + 0x00263809, // 0015 ADD R9 K28 R9 + 0x900E3609, // 0016 SETMBR R3 K27 R9 + 0x8C24011D, // 0017 GETMET R9 R0 K29 + 0x582C001E, // 0018 LDCONST R11 K30 0x5C301000, // 0019 MOVE R12 R8 0x58340005, // 001A LDCONST R13 K5 0xB83A0400, // 001B GETNGBL R14 K2 0x8C381D03, // 001C GETMET R14 R14 K3 0x5C401000, // 001D MOVE R16 R8 - 0x58440019, // 001E LDCONST R17 K25 + 0x58440000, // 001E LDCONST R17 K0 0x544A00FD, // 001F LDINT R18 254 - 0x584C0019, // 0020 LDCONST R19 K25 + 0x584C0000, // 0020 LDCONST R19 K0 0x54520063, // 0021 LDINT R20 100 0x7C380C00, // 0022 CALL R14 6 0x7C240A00, // 0023 CALL R9 5 0x50240200, // 0024 LDBOOL R9 1 0 0x80041200, // 0025 RET 1 R9 0x70020044, // 0026 JMP #006C - 0x1C200F20, // 0027 EQ R8 R7 K32 + 0x1C200F1F, // 0027 EQ R8 R7 K31 0x78220002, // 0028 JMPF R8 #002C 0x50200200, // 0029 LDBOOL R8 1 0 0x80041000, // 002A RET 1 R8 0x7002003F, // 002B JMP #006C - 0x1C200F21, // 002C EQ R8 R7 K33 + 0x1C200F20, // 002C EQ R8 R7 K32 0x78220002, // 002D JMPF R8 #0031 0x50200200, // 002E LDBOOL R8 1 0 0x80041000, // 002F RET 1 R8 0x7002003A, // 0030 JMP #006C - 0x1C200F22, // 0031 EQ R8 R7 K34 + 0x1C200F21, // 0031 EQ R8 R7 K33 0x78220002, // 0032 JMPF R8 #0036 0x50200200, // 0033 LDBOOL R8 1 0 0x80041000, // 0034 RET 1 R8 @@ -300,36 +295,36 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x54220003, // 0036 LDINT R8 4 0x1C200E08, // 0037 EQ R8 R7 R8 0x78220021, // 0038 JMPF R8 #005B - 0x8C20051A, // 0039 GETMET R8 R2 K26 - 0x58280019, // 003A LDCONST R10 K25 + 0x8C200519, // 0039 GETMET R8 R2 K25 + 0x58280000, // 003A LDCONST R10 K0 0x7C200400, // 003B CALL R8 2 - 0x24241119, // 003C GT R9 R8 K25 - 0x8C28011B, // 003D GETMET R10 R0 K27 + 0x24241100, // 003C GT R9 R8 K0 + 0x8C28011A, // 003D GETMET R10 R0 K26 0x5C301000, // 003E MOVE R12 R8 0x5C341200, // 003F MOVE R13 R9 0x7C280600, // 0040 CALL R10 3 0x60280008, // 0041 GETGBL R10 G8 0x5C2C1000, // 0042 MOVE R11 R8 0x7C280200, // 0043 CALL R10 1 - 0x002A3A0A, // 0044 ADD R10 K29 R10 - 0x900E380A, // 0045 SETMBR R3 K28 R10 - 0x8C28011E, // 0046 GETMET R10 R0 K30 - 0x5830001F, // 0047 LDCONST R12 K31 + 0x002A380A, // 0044 ADD R10 K28 R10 + 0x900E360A, // 0045 SETMBR R3 K27 R10 + 0x8C28011D, // 0046 GETMET R10 R0 K29 + 0x5830001E, // 0047 LDCONST R12 K30 0x5C341000, // 0048 MOVE R13 R8 0x58380005, // 0049 LDCONST R14 K5 0xB83E0400, // 004A GETNGBL R15 K2 0x8C3C1F03, // 004B GETMET R15 R15 K3 0x5C441000, // 004C MOVE R17 R8 - 0x58480019, // 004D LDCONST R18 K25 + 0x58480000, // 004D LDCONST R18 K0 0x544E00FD, // 004E LDINT R19 254 - 0x58500019, // 004F LDCONST R20 K25 + 0x58500000, // 004F LDCONST R20 K0 0x54560063, // 0050 LDINT R21 100 0x7C3C0C00, // 0051 CALL R15 6 - 0x58400023, // 0052 LDCONST R16 K35 + 0x58400022, // 0052 LDCONST R16 K34 0x78260001, // 0053 JMPF R9 #0056 - 0x58440020, // 0054 LDCONST R17 K32 + 0x5844001F, // 0054 LDCONST R17 K31 0x70020000, // 0055 JMP #0057 - 0x58440019, // 0056 LDCONST R17 K25 + 0x58440000, // 0056 LDCONST R17 K0 0x7C280E00, // 0057 CALL R10 7 0x50280200, // 0058 LDBOOL R10 1 0 0x80041400, // 0059 RET 1 R10 @@ -355,7 +350,7 @@ be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */ 0x60200003, // 006D GETGBL R8 G3 0x5C240000, // 006E MOVE R9 R0 0x7C200200, // 006F CALL R8 1 - 0x8C201124, // 0070 GETMET R8 R8 K36 + 0x8C201123, // 0070 GETMET R8 R8 K35 0x5C280200, // 0071 MOVE R10 R1 0x5C2C0400, // 0072 MOVE R11 R2 0x5C300600, // 0073 MOVE R12 R3 @@ -388,32 +383,32 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0xB8122800, // 0000 GETNGBL R4 K20 0x88100915, // 0001 GETMBR R4 R4 K21 0x88140516, // 0002 GETMBR R5 R2 K22 - 0x88180525, // 0003 GETMBR R6 R2 K37 + 0x88180524, // 0003 GETMBR R6 R2 K36 0x541E0007, // 0004 LDINT R7 8 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E002A, // 0006 JMPF R7 #0032 0x8C1C0118, // 0007 GETMET R7 R0 K24 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D19, // 0009 EQ R7 R6 K25 + 0x1C1C0D00, // 0009 EQ R7 R6 K0 0x781E0005, // 000A JMPF R7 #0011 0x8C1C070C, // 000B GETMET R7 R3 K12 - 0x88240926, // 000C GETMBR R9 R4 K38 + 0x88240925, // 000C GETMBR R9 R4 K37 0x8828010A, // 000D GETMBR R10 R0 K10 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020020, // 0010 JMP #0032 - 0x1C1C0D27, // 0011 EQ R7 R6 K39 + 0x1C1C0D20, // 0011 EQ R7 R6 K32 0x781E0005, // 0012 JMPF R7 #0019 0x8C1C070C, // 0013 GETMET R7 R3 K12 - 0x88240926, // 0014 GETMBR R9 R4 K38 - 0x58280019, // 0015 LDCONST R10 K25 + 0x88240925, // 0014 GETMBR R9 R4 K37 + 0x58280000, // 0015 LDCONST R10 K0 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020018, // 0018 JMP #0032 - 0x1C1C0D22, // 0019 EQ R7 R6 K34 + 0x1C1C0D21, // 0019 EQ R7 R6 K33 0x781E0005, // 001A JMPF R7 #0021 0x8C1C070C, // 001B GETMET R7 R3 K12 - 0x88240926, // 001C GETMBR R9 R4 K38 + 0x88240925, // 001C GETMBR R9 R4 K37 0x542A00FD, // 001D LDINT R10 254 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 @@ -422,8 +417,8 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0x1C1C0C07, // 0022 EQ R7 R6 R7 0x781E0005, // 0023 JMPF R7 #002A 0x8C1C070C, // 0024 GETMET R7 R3 K12 - 0x88240926, // 0025 GETMBR R9 R4 K38 - 0x58280019, // 0026 LDCONST R10 K25 + 0x88240925, // 0025 GETMBR R9 R4 K37 + 0x58280000, // 0026 LDCONST R10 K0 0x7C1C0600, // 0027 CALL R7 3 0x80040E00, // 0028 RET 1 R7 0x70020007, // 0029 JMP #0032 @@ -431,14 +426,14 @@ be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */ 0x1C1C0C07, // 002B EQ R7 R6 R7 0x781E0004, // 002C JMPF R7 #0032 0x8C1C070C, // 002D GETMET R7 R3 K12 - 0x88240926, // 002E GETMBR R9 R4 K38 + 0x88240925, // 002E GETMBR R9 R4 K37 0x8828010A, // 002F GETMBR R10 R0 K10 0x7C1C0600, // 0030 CALL R7 3 0x80040E00, // 0031 RET 1 R7 0x601C0003, // 0032 GETGBL R7 G3 0x5C200000, // 0033 MOVE R8 R0 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0F28, // 0035 GETMET R7 R7 K40 + 0x8C1C0F26, // 0035 GETMET R7 R7 K38 0x5C240200, // 0036 MOVE R9 R1 0x5C280400, // 0037 MOVE R10 R2 0x5C2C0600, // 0038 MOVE R11 R3 @@ -470,53 +465,53 @@ be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */ 0x88080101, // 0000 GETMBR R2 R0 K1 0x780A000F, // 0001 JMPF R2 #0012 0x60080009, // 0002 GETGBL R2 G9 - 0x8C0C032A, // 0003 GETMET R3 R1 K42 - 0x8814012B, // 0004 GETMBR R5 R0 K43 + 0x8C0C0328, // 0003 GETMET R3 R1 K40 + 0x88140129, // 0004 GETMBR R5 R0 K41 0x4C180000, // 0005 LDNIL R6 0x7C0C0600, // 0006 CALL R3 3 0x7C080200, // 0007 CALL R2 1 - 0x90025202, // 0008 SETMBR R0 K41 R2 - 0x88080129, // 0009 GETMBR R2 R0 K41 + 0x90024E02, // 0008 SETMBR R0 K39 R2 + 0x88080127, // 0009 GETMBR R2 R0 K39 0x4C0C0000, // 000A LDNIL R3 0x20080403, // 000B NE R2 R2 R3 0x780A0003, // 000C JMPF R2 #0011 - 0x88080129, // 000D GETMBR R2 R0 K41 - 0x1808052C, // 000E LE R2 R2 K44 + 0x88080127, // 000D GETMBR R2 R0 K39 + 0x18080500, // 000E LE R2 R2 K0 0x780A0000, // 000F JMPF R2 #0011 - 0x9002532D, // 0010 SETMBR R0 K41 K45 + 0x90024F1F, // 0010 SETMBR R0 K39 K31 0x70020020, // 0011 JMP #0033 - 0x88080129, // 0012 GETMBR R2 R0 K41 + 0x88080127, // 0012 GETMBR R2 R0 K39 0x4C0C0000, // 0013 LDNIL R3 0x1C080403, // 0014 EQ R2 R2 R3 0x780A001C, // 0015 JMPF R2 #0033 - 0x8808012E, // 0016 GETMBR R2 R0 K46 - 0x1C08052F, // 0017 EQ R2 R2 K47 + 0x8808012A, // 0016 GETMBR R2 R0 K42 + 0x1C08052B, // 0017 EQ R2 R2 K43 0x780A0019, // 0018 JMPF R2 #0033 - 0x8C08032A, // 0019 GETMET R2 R1 K42 - 0x8810012B, // 001A GETMBR R4 R0 K43 + 0x8C080328, // 0019 GETMET R2 R1 K40 + 0x88100129, // 001A GETMBR R4 R0 K41 0x7C080400, // 001B CALL R2 2 0x4C0C0000, // 001C LDNIL R3 0x1C0C0403, // 001D EQ R3 R2 R3 0x780E000E, // 001E JMPF R3 #002E 0xB80E0400, // 001F GETNGBL R3 K2 - 0x8C0C0730, // 0020 GETMET R3 R3 K48 + 0x8C0C072C, // 0020 GETMET R3 R3 K44 0x54160043, // 0021 LDINT R5 68 0x7C0C0400, // 0022 CALL R3 2 - 0x1C0C072C, // 0023 EQ R3 R3 K44 + 0x1C0C0700, // 0023 EQ R3 R3 K0 0x780E0007, // 0024 JMPF R3 #002D 0xA40E1600, // 0025 IMPORT R3 K11 - 0x8C100731, // 0026 GETMET R4 R3 K49 - 0x5818002D, // 0027 LDCONST R6 K45 + 0x8C10072D, // 0026 GETMET R4 R3 K45 + 0x5818001F, // 0027 LDCONST R6 K31 0x7C100400, // 0028 CALL R4 2 0x4C140000, // 0029 LDNIL R5 0x20100805, // 002A NE R4 R4 R5 0x78120000, // 002B JMPF R4 #002D - 0x90021D2D, // 002C SETMBR R0 K14 K45 + 0x90021D1F, // 002C SETMBR R0 K14 K31 0x70020004, // 002D JMP #0033 0x600C0009, // 002E GETGBL R3 G9 0x5C100400, // 002F MOVE R4 R2 0x7C0C0200, // 0030 CALL R3 1 - 0x040C072D, // 0031 SUB R3 R3 K45 + 0x040C071F, // 0031 SUB R3 R3 K31 0x90021C03, // 0032 SETMBR R0 K14 R3 0x80000000, // 0033 RET 0 }) @@ -542,16 +537,16 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ be_str_weak(update_virtual), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C08032A, // 0000 GETMET R2 R1 K42 - 0x58100023, // 0001 LDCONST R4 K35 + 0x8C080328, // 0000 GETMET R2 R1 K40 + 0x58100022, // 0001 LDCONST R4 K34 0x7C080400, // 0002 CALL R2 2 - 0x8C0C032A, // 0003 GETMET R3 R1 K42 - 0x5814001F, // 0004 LDCONST R5 K31 + 0x8C0C0328, // 0003 GETMET R3 R1 K40 + 0x5814001E, // 0004 LDCONST R5 K30 0x7C0C0400, // 0005 CALL R3 2 0x4C100000, // 0006 LDNIL R4 0x20100604, // 0007 NE R4 R3 R4 0x78120006, // 0008 JMPF R4 #0010 - 0x8C10011B, // 0009 GETMET R4 R0 K27 + 0x8C10011A, // 0009 GETMET R4 R0 K26 0x60180009, // 000A GETGBL R6 G9 0x5C1C0600, // 000B MOVE R7 R3 0x7C180200, // 000C CALL R6 1 @@ -561,7 +556,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */ 0x60100003, // 0010 GETGBL R4 G3 0x5C140000, // 0011 MOVE R5 R0 0x7C100200, // 0012 CALL R4 1 - 0x8C100932, // 0013 GETMET R4 R4 K50 + 0x8C10092E, // 0013 GETMET R4 R4 K46 0x5C180200, // 0014 MOVE R6 R1 0x7C100400, // 0015 CALL R4 2 0x80000000, // 0016 RET 0 @@ -588,11 +583,11 @@ be_local_closure(class_Matter_Plugin_Light1_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x90021533, // 0000 SETMBR R0 K10 K51 + 0x90021500, // 0000 SETMBR R0 K10 K0 0x60100003, // 0001 GETGBL R4 G3 0x5C140000, // 0002 MOVE R5 R0 0x7C100200, // 0003 CALL R4 1 - 0x8C100934, // 0004 GETMET R4 R4 K52 + 0x8C10092F, // 0004 GETMET R4 R4 K47 0x5C180200, // 0005 MOVE R6 R1 0x5C1C0400, // 0006 MOVE R7 R2 0x5C200600, // 0007 MOVE R8 R3 @@ -621,16 +616,16 @@ be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0xA4066A00, // 0000 IMPORT R1 K53 - 0x8C080136, // 0001 GETMET R2 R0 K54 + 0xA4066000, // 0000 IMPORT R1 K48 + 0x8C080131, // 0001 GETMET R2 R0 K49 0x7C080200, // 0002 CALL R2 1 - 0x8C080337, // 0003 GETMET R2 R1 K55 + 0x8C080332, // 0003 GETMET R2 R1 K50 0x60100018, // 0004 GETGBL R4 G24 - 0x58140038, // 0005 LDCONST R5 K56 - 0x8C180139, // 0006 GETMET R6 R0 K57 + 0x58140033, // 0005 LDCONST R5 K51 + 0x8C180134, // 0006 GETMET R6 R0 K52 0x88200108, // 0007 GETMBR R8 R0 K8 0x7C180400, // 0008 CALL R6 2 - 0x8C1C013A, // 0009 GETMET R7 R0 K58 + 0x8C1C0135, // 0009 GETMET R7 R0 K53 0x7C1C0200, // 000A CALL R7 1 0x7C100600, // 000B CALL R4 3 0x7C080400, // 000C CALL R2 2 @@ -669,7 +664,7 @@ be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */ 0x1C0C0403, // 0008 EQ R3 R2 R3 0x780E0017, // 0009 JMPF R3 #0022 0x600C0009, // 000A GETGBL R3 G9 - 0x8C10032A, // 000B GETMET R4 R1 K42 + 0x8C100328, // 000B GETMET R4 R1 K40 0x58180005, // 000C LDCONST R6 K5 0x7C100400, // 000D CALL R4 2 0x7C0C0200, // 000E CALL R3 1 @@ -721,13 +716,13 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0x88040101, // 0002 GETMBR R1 R0 K1 0x7406002A, // 0003 JMPT R1 #002F 0xA4061600, // 0004 IMPORT R1 K11 - 0x8C080331, // 0005 GETMET R2 R1 K49 + 0x8C08032D, // 0005 GETMET R2 R1 K45 0x8810010E, // 0006 GETMBR R4 R0 K14 0x7C080400, // 0007 CALL R2 2 0x4C0C0000, // 0008 LDNIL R3 0x200C0403, // 0009 NE R3 R2 R3 0x780E0023, // 000A JMPF R3 #002F - 0x8C0C052A, // 000B GETMET R3 R2 K42 + 0x8C0C0528, // 000B GETMET R3 R2 K40 0x5814000F, // 000C LDCONST R5 K15 0x4C180000, // 000D LDNIL R6 0x7C0C0600, // 000E CALL R3 3 @@ -736,10 +731,10 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0x78120004, // 0011 JMPF R4 #0017 0x8C100109, // 0012 GETMET R4 R0 K9 0x541A0005, // 0013 LDINT R6 6 - 0x581C0019, // 0014 LDCONST R7 K25 + 0x581C0000, // 0014 LDCONST R7 K0 0x7C100600, // 0015 CALL R4 3 0x90021003, // 0016 SETMBR R0 K8 R3 - 0x8C10052A, // 0017 GETMET R4 R2 K42 + 0x8C100528, // 0017 GETMET R4 R2 K40 0x5818000D, // 0018 LDCONST R6 K13 0x4C1C0000, // 0019 LDNIL R7 0x7C100600, // 001A CALL R4 3 @@ -749,9 +744,9 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0xB8160400, // 001E GETNGBL R5 K2 0x8C140B03, // 001F GETMET R5 R5 K3 0x5C1C0800, // 0020 MOVE R7 R4 - 0x58200019, // 0021 LDCONST R8 K25 + 0x58200000, // 0021 LDCONST R8 K0 0x542600FE, // 0022 LDINT R9 255 - 0x58280019, // 0023 LDCONST R10 K25 + 0x58280000, // 0023 LDCONST R10 K0 0x542E00FD, // 0024 LDINT R11 254 0x7C140C00, // 0025 CALL R5 6 0x5C100A00, // 0026 MOVE R4 R5 @@ -760,7 +755,7 @@ be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */ 0x78160004, // 0029 JMPF R5 #002F 0x8C140109, // 002A GETMET R5 R0 K9 0x541E0007, // 002B LDINT R7 8 - 0x58200019, // 002C LDCONST R8 K25 + 0x58200000, // 002C LDCONST R8 K0 0x7C140600, // 002D CALL R5 3 0x90021404, // 002E SETMBR R0 K10 R4 0x60040003, // 002F GETGBL R1 G3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h index c4062e694..09e1374b2 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Contact' ktab size: 25, total: 31 (saved 48 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[25] = { +// compact class 'Matter_Plugin_Sensor_Contact' ktab size: 24, total: 31 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[24] = { /* K0 */ be_nested_str_weak(shadow_bool_value), /* K1 */ be_nested_str_weak(_parse_update_virtual), /* K2 */ be_nested_str_weak(Contact), @@ -14,22 +14,21 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[25] = { /* K6 */ be_nested_str_weak(TLV), /* K7 */ be_nested_str_weak(cluster), /* K8 */ be_nested_str_weak(attribute), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(set_or_nil), - /* K11 */ be_nested_str_weak(BOOL), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(webserver), - /* K14 */ be_nested_str_weak(web_values_prefix), - /* K15 */ be_nested_str_weak(content_send), - /* K16 */ be_nested_str_weak(Contact_X25i_X20_X25s), - /* K17 */ be_nested_str_weak(tasmota_switch_index), - /* K18 */ be_nested_str_weak(web_value_onoff), - /* K19 */ be_nested_str_weak(get_name), - /* K20 */ be_nested_str_weak(Switch), - /* K21 */ be_nested_str_weak(PREFIX), - /* K22 */ be_nested_str_weak(html_escape), - /* K23 */ be_nested_str_weak(), - /* K24 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_nested_str_weak(set_or_nil), + /* K10 */ be_nested_str_weak(BOOL), + /* K11 */ be_nested_str_weak(read_attribute), + /* K12 */ be_nested_str_weak(webserver), + /* K13 */ be_nested_str_weak(web_values_prefix), + /* K14 */ be_nested_str_weak(content_send), + /* K15 */ be_nested_str_weak(Contact_X25i_X20_X25s), + /* K16 */ be_nested_str_weak(tasmota_switch_index), + /* K17 */ be_nested_str_weak(web_value_onoff), + /* K18 */ be_nested_str_weak(get_name), + /* K19 */ be_nested_str_weak(Switch), + /* K20 */ be_nested_str_weak(PREFIX), + /* K21 */ be_nested_str_weak(html_escape), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(attribute_updated), }; @@ -98,17 +97,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */ 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D09, // 0007 EQ R7 R6 K9 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C070A, // 0009 GETMET R7 R3 K10 - 0x8824090B, // 000A GETMBR R9 R4 K11 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F0C, // 0011 GETMET R7 R7 K12 + 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -137,14 +136,14 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4061A00, // 0000 IMPORT R1 K13 - 0x8C08010E, // 0001 GETMET R2 R0 K14 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C08010D, // 0001 GETMET R2 R0 K13 0x7C080200, // 0002 CALL R2 1 - 0x8C08030F, // 0003 GETMET R2 R1 K15 + 0x8C08030E, // 0003 GETMET R2 R1 K14 0x60100018, // 0004 GETGBL R4 G24 - 0x58140010, // 0005 LDCONST R5 K16 - 0x88180111, // 0006 GETMBR R6 R0 K17 - 0x8C1C0112, // 0007 GETMET R7 R0 K18 + 0x5814000F, // 0005 LDCONST R5 K15 + 0x88180110, // 0006 GETMBR R6 R0 K16 + 0x8C1C0111, // 0007 GETMET R7 R0 K17 0x88240100, // 0008 GETMBR R9 R0 K0 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 @@ -173,25 +172,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4061A00, // 0000 IMPORT R1 K13 - 0x8C080113, // 0001 GETMET R2 R0 K19 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C080112, // 0001 GETMET R2 R0 K18 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100111, // 0006 GETMBR R4 R0 K17 + 0x88100110, // 0006 GETMBR R4 R0 K16 0x7C0C0200, // 0007 CALL R3 1 - 0x000E2803, // 0008 ADD R3 K20 R3 + 0x000E2603, // 0008 ADD R3 K19 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C030F, // 000A GETMET R3 R1 K15 + 0x8C0C030E, // 000A GETMET R3 R1 K14 0x60140018, // 000B GETGBL R5 G24 - 0x88180115, // 000C GETMBR R6 R0 K21 + 0x88180114, // 000C GETMBR R6 R0 K20 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0316, // 000E GETMET R7 R1 K22 + 0x8C1C0315, // 000E GETMET R7 R1 K21 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0017, // 0012 LDCONST R7 K23 + 0x581C0016, // 0012 LDCONST R7 K22 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -218,7 +217,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Contact_value_updated, /* name */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040118, // 0000 GETMET R1 R0 K24 + 0x8C040117, // 0000 GETMET R1 R0 K23 0x540E0044, // 0001 LDINT R3 69 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h index e9cf7f0b2..79e80b64e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h @@ -3,29 +3,27 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Illuminance' ktab size: 21, total: 23 (saved 16 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Illuminance[21] = { +// compact class 'Matter_Plugin_Sensor_Illuminance' ktab size: 19, total: 23 (saved 32 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Illuminance[19] = { /* K0 */ be_nested_str_weak(attribute_updated), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(matter), /* K3 */ be_nested_str_weak(TLV), /* K4 */ be_nested_str_weak(cluster), /* K5 */ be_nested_str_weak(attribute), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(set_or_nil), - /* K8 */ be_nested_str_weak(U2), - /* K9 */ be_nested_str_weak(shadow_value), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(set), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(read_attribute), - /* K14 */ be_nested_str_weak(math), - /* K15 */ be_nested_str_weak(log10), - /* K16 */ be_const_int(1), - /* K17 */ be_nested_str_weak(webserver), - /* K18 */ be_nested_str_weak(web_values_prefix), - /* K19 */ be_nested_str_weak(content_send), - /* K20 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux), + /* K6 */ be_nested_str_weak(set_or_nil), + /* K7 */ be_nested_str_weak(U2), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(math), + /* K14 */ be_nested_str_weak(log10), + /* K15 */ be_nested_str_weak(webserver), + /* K16 */ be_nested_str_weak(web_values_prefix), + /* K17 */ be_nested_str_weak(content_send), + /* K18 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux), }; @@ -83,35 +81,35 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* nam 0x541E03FF, // 0004 LDINT R7 1024 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0018, // 0006 JMPF R7 #0020 - 0x1C1C0D06, // 0007 EQ R7 R6 K6 + 0x1C1C0D01, // 0007 EQ R7 R6 K1 0x781E0007, // 0008 JMPF R7 #0011 - 0x8C1C0707, // 0009 GETMET R7 R3 K7 - 0x88240908, // 000A GETMBR R9 R4 K8 + 0x8C1C0706, // 0009 GETMET R7 R3 K6 + 0x88240907, // 000A GETMBR R9 R4 K7 0x60280009, // 000B GETGBL R10 G9 - 0x882C0109, // 000C GETMBR R11 R0 K9 + 0x882C0108, // 000C GETMBR R11 R0 K8 0x7C280200, // 000D CALL R10 1 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x7002000E, // 0010 JMP #0020 - 0x1C1C0D0A, // 0011 EQ R7 R6 K10 + 0x1C1C0D09, // 0011 EQ R7 R6 K9 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C070B, // 0013 GETMET R7 R3 K11 - 0x88240908, // 0014 GETMBR R9 R4 K8 - 0x5828000A, // 0015 LDCONST R10 K10 + 0x8C1C070A, // 0013 GETMET R7 R3 K10 + 0x88240907, // 0014 GETMBR R9 R4 K7 + 0x58280009, // 0015 LDCONST R10 K9 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x70020006, // 0018 JMP #0020 - 0x1C1C0D0C, // 0019 EQ R7 R6 K12 + 0x1C1C0D0B, // 0019 EQ R7 R6 K11 0x781E0004, // 001A JMPF R7 #0020 - 0x8C1C070B, // 001B GETMET R7 R3 K11 - 0x88240908, // 001C GETMBR R9 R4 K8 + 0x8C1C070A, // 001B GETMET R7 R3 K10 + 0x88240907, // 001C GETMBR R9 R4 K7 0x542AFFFD, // 001D LDINT R10 65534 0x7C1C0600, // 001E CALL R7 3 0x80040E00, // 001F RET 1 R7 0x601C0003, // 0020 GETGBL R7 G3 0x5C200000, // 0021 MOVE R8 R0 0x7C1C0200, // 0022 CALL R7 1 - 0x8C1C0F0D, // 0023 GETMET R7 R7 K13 + 0x8C1C0F0C, // 0023 GETMET R7 R7 K12 0x5C240200, // 0024 MOVE R9 R1 0x5C280400, // 0025 MOVE R10 R2 0x5C2C0600, // 0026 MOVE R11 R3 @@ -145,13 +143,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x4C080000, // 0003 LDNIL R2 0x80040400, // 0004 RET 1 R2 - 0xA40A1C00, // 0005 IMPORT R2 K14 - 0x140C0306, // 0006 LT R3 R1 K6 + 0xA40A1A00, // 0005 IMPORT R2 K13 + 0x140C0301, // 0006 LT R3 R1 K1 0x780E0001, // 0007 JMPF R3 #000A - 0x80060C00, // 0008 RET 1 K6 + 0x80060200, // 0008 RET 1 K1 0x70020005, // 0009 JMP #0010 - 0x8C0C050F, // 000A GETMET R3 R2 K15 - 0x00140310, // 000B ADD R5 R1 K16 + 0x8C0C050E, // 000A GETMET R3 R2 K14 + 0x00140309, // 000B ADD R5 R1 K9 0x7C0C0400, // 000C CALL R3 2 0x5412270F, // 000D LDINT R4 10000 0x080C0604, // 000E MUL R3 R3 R4 @@ -180,14 +178,14 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0xA4062200, // 0000 IMPORT R1 K17 - 0x8C080112, // 0001 GETMET R2 R0 K18 + 0xA4061E00, // 0000 IMPORT R1 K15 + 0x8C080110, // 0001 GETMET R2 R0 K16 0x7C080200, // 0002 CALL R2 1 - 0x8C080313, // 0003 GETMET R2 R1 K19 + 0x8C080311, // 0003 GETMET R2 R1 K17 0x60100018, // 0004 GETGBL R4 G24 - 0x58140014, // 0005 LDCONST R5 K20 + 0x58140012, // 0005 LDCONST R5 K18 0x60180009, // 0006 GETGBL R6 G9 - 0x881C0109, // 0007 GETMBR R7 R0 K9 + 0x881C0108, // 0007 GETMBR R7 R0 K8 0x7C180200, // 0008 CALL R6 1 0x7C100400, // 0009 CALL R4 2 0x7C080400, // 000A CALL R2 2 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h index c6c09be48..d1d1788ec 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Occupancy' ktab size: 29, total: 35 (saved 48 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[29] = { +// compact class 'Matter_Plugin_Sensor_Occupancy' ktab size: 28, total: 35 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[28] = { /* K0 */ be_nested_str_weak(shadow_bool_value), /* K1 */ be_nested_str_weak(_parse_update_virtual), /* K2 */ be_nested_str_weak(Occupancy), @@ -14,26 +14,25 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[29] = { /* K6 */ be_nested_str_weak(TLV), /* K7 */ be_nested_str_weak(cluster), /* K8 */ be_nested_str_weak(attribute), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(set_or_nil), - /* K11 */ be_nested_str_weak(U1), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(set), - /* K14 */ be_const_int(3), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(read_attribute), - /* K17 */ be_nested_str_weak(webserver), - /* K18 */ be_nested_str_weak(web_values_prefix), - /* K19 */ be_nested_str_weak(content_send), - /* K20 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), - /* K21 */ be_nested_str_weak(web_value_onoff), - /* K22 */ be_nested_str_weak(shadow_occupancy), - /* K23 */ be_nested_str_weak(get_name), - /* K24 */ be_nested_str_weak(Switch), - /* K25 */ be_nested_str_weak(PREFIX), - /* K26 */ be_nested_str_weak(html_escape), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_nested_str_weak(set_or_nil), + /* K10 */ be_nested_str_weak(U1), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(set), + /* K13 */ be_const_int(3), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(read_attribute), + /* K16 */ be_nested_str_weak(webserver), + /* K17 */ be_nested_str_weak(web_values_prefix), + /* K18 */ be_nested_str_weak(content_send), + /* K19 */ be_nested_str_weak(Occupancy_X25i_X20_X25s), + /* K20 */ be_nested_str_weak(web_value_onoff), + /* K21 */ be_nested_str_weak(shadow_occupancy), + /* K22 */ be_nested_str_weak(get_name), + /* K23 */ be_nested_str_weak(Switch), + /* K24 */ be_nested_str_weak(PREFIX), + /* K25 */ be_nested_str_weak(html_escape), + /* K26 */ be_nested_str_weak(), + /* K27 */ be_nested_str_weak(attribute_updated), }; @@ -102,33 +101,33 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name 0x541E0405, // 0004 LDINT R7 1030 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0016, // 0006 JMPF R7 #001E - 0x1C1C0D09, // 0007 EQ R7 R6 K9 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C070A, // 0009 GETMET R7 R3 K10 - 0x8824090B, // 000A GETMBR R9 R4 K11 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x7002000E, // 000E JMP #001E - 0x1C1C0D0C, // 000F EQ R7 R6 K12 + 0x1C1C0D0B, // 000F EQ R7 R6 K11 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C070D, // 0011 GETMET R7 R3 K13 - 0x8824090B, // 0012 GETMBR R9 R4 K11 - 0x5828000E, // 0013 LDCONST R10 K14 + 0x8C1C070C, // 0011 GETMET R7 R3 K12 + 0x8824090A, // 0012 GETMBR R9 R4 K10 + 0x5828000D, // 0013 LDCONST R10 K13 0x7C1C0600, // 0014 CALL R7 3 0x80040E00, // 0015 RET 1 R7 0x70020006, // 0016 JMP #001E - 0x1C1C0D0F, // 0017 EQ R7 R6 K15 + 0x1C1C0D0E, // 0017 EQ R7 R6 K14 0x781E0004, // 0018 JMPF R7 #001E - 0x8C1C070D, // 0019 GETMET R7 R3 K13 - 0x8824090B, // 001A GETMBR R9 R4 K11 - 0x58280009, // 001B LDCONST R10 K9 + 0x8C1C070C, // 0019 GETMET R7 R3 K12 + 0x8824090A, // 001A GETMBR R9 R4 K10 + 0x58280003, // 001B LDCONST R10 K3 0x7C1C0600, // 001C CALL R7 3 0x80040E00, // 001D RET 1 R7 0x601C0003, // 001E GETGBL R7 G3 0x5C200000, // 001F MOVE R8 R0 0x7C1C0200, // 0020 CALL R7 1 - 0x8C1C0F10, // 0021 GETMET R7 R7 K16 + 0x8C1C0F0F, // 0021 GETMET R7 R7 K15 0x5C240200, // 0022 MOVE R9 R1 0x5C280400, // 0023 MOVE R10 R2 0x5C2C0600, // 0024 MOVE R11 R3 @@ -157,15 +156,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4062200, // 0000 IMPORT R1 K17 - 0x8C080112, // 0001 GETMET R2 R0 K18 + 0xA4062000, // 0000 IMPORT R1 K16 + 0x8C080111, // 0001 GETMET R2 R0 K17 0x7C080200, // 0002 CALL R2 1 - 0x8C080313, // 0003 GETMET R2 R1 K19 + 0x8C080312, // 0003 GETMET R2 R1 K18 0x60100018, // 0004 GETGBL R4 G24 - 0x58140014, // 0005 LDCONST R5 K20 + 0x58140013, // 0005 LDCONST R5 K19 0x88180100, // 0006 GETMBR R6 R0 K0 - 0x8C1C0115, // 0007 GETMET R7 R0 K21 - 0x88240116, // 0008 GETMBR R9 R0 K22 + 0x8C1C0114, // 0007 GETMET R7 R0 K20 + 0x88240115, // 0008 GETMBR R9 R0 K21 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 0x7C080400, // 000B CALL R2 2 @@ -193,25 +192,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* na be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4062200, // 0000 IMPORT R1 K17 - 0x8C080117, // 0001 GETMET R2 R0 K23 + 0xA4062000, // 0000 IMPORT R1 K16 + 0x8C080116, // 0001 GETMET R2 R0 K22 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 0x88100100, // 0006 GETMBR R4 R0 K0 0x7C0C0200, // 0007 CALL R3 1 - 0x000E3003, // 0008 ADD R3 K24 R3 + 0x000E2E03, // 0008 ADD R3 K23 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C0313, // 000A GETMET R3 R1 K19 + 0x8C0C0312, // 000A GETMET R3 R1 K18 0x60140018, // 000B GETGBL R5 G24 - 0x88180119, // 000C GETMBR R6 R0 K25 + 0x88180118, // 000C GETMBR R6 R0 K24 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C031A, // 000E GETMET R7 R1 K26 + 0x8C1C0319, // 000E GETMET R7 R1 K25 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C001B, // 0012 LDCONST R7 K27 + 0x581C001A, // 0012 LDCONST R7 K26 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -238,7 +237,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated, /* name * be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C04011C, // 0000 GETMET R1 R0 K28 + 0x8C04011B, // 0000 GETMET R1 R0 K27 0x540E0405, // 0001 LDINT R3 1030 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h index 12dbce726..b6d971888 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_OnOff' ktab size: 13, total: 14 (saved 8 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[13] = { +// compact class 'Matter_Plugin_Sensor_OnOff' ktab size: 12, total: 14 (saved 16 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[12] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -17,7 +17,6 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[13] = { /* K9 */ be_nested_str_weak(read_attribute), /* K10 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s), /* K11 */ be_nested_str_weak(attribute_updated), - /* K12 */ be_const_int(0), }; @@ -120,7 +119,7 @@ be_local_closure(class_Matter_Plugin_Sensor_OnOff_value_updated, /* name */ ( &(const binstruction[ 5]) { /* code */ 0x8C04010B, // 0000 GETMET R1 R0 K11 0x540E0005, // 0001 LDINT R3 6 - 0x5810000C, // 0002 LDCONST R4 K12 + 0x58100005, // 0002 LDCONST R4 K5 0x7C040600, // 0003 CALL R1 3 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h index d8968103b..f4d3878d6 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Rain' ktab size: 25, total: 31 (saved 48 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[25] = { +// compact class 'Matter_Plugin_Sensor_Rain' ktab size: 24, total: 31 (saved 56 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[24] = { /* K0 */ be_nested_str_weak(shadow_bool_value), /* K1 */ be_nested_str_weak(_parse_update_virtual), /* K2 */ be_nested_str_weak(Rain), @@ -14,22 +14,21 @@ static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[25] = { /* K6 */ be_nested_str_weak(TLV), /* K7 */ be_nested_str_weak(cluster), /* K8 */ be_nested_str_weak(attribute), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_nested_str_weak(BOOL), - /* K12 */ be_nested_str_weak(read_attribute), - /* K13 */ be_nested_str_weak(webserver), - /* K14 */ be_nested_str_weak(web_values_prefix), - /* K15 */ be_nested_str_weak(content_send), - /* K16 */ be_nested_str_weak(Rain_X25i_X20_X25s), - /* K17 */ be_nested_str_weak(tasmota_switch_index), - /* K18 */ be_nested_str_weak(web_value_onoff), - /* K19 */ be_nested_str_weak(get_name), - /* K20 */ be_nested_str_weak(Switch), - /* K21 */ be_nested_str_weak(PREFIX), - /* K22 */ be_nested_str_weak(html_escape), - /* K23 */ be_nested_str_weak(), - /* K24 */ be_nested_str_weak(attribute_updated), + /* K9 */ be_nested_str_weak(set), + /* K10 */ be_nested_str_weak(BOOL), + /* K11 */ be_nested_str_weak(read_attribute), + /* K12 */ be_nested_str_weak(webserver), + /* K13 */ be_nested_str_weak(web_values_prefix), + /* K14 */ be_nested_str_weak(content_send), + /* K15 */ be_nested_str_weak(Rain_X25i_X20_X25s), + /* K16 */ be_nested_str_weak(tasmota_switch_index), + /* K17 */ be_nested_str_weak(web_value_onoff), + /* K18 */ be_nested_str_weak(get_name), + /* K19 */ be_nested_str_weak(Switch), + /* K20 */ be_nested_str_weak(PREFIX), + /* K21 */ be_nested_str_weak(html_escape), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(attribute_updated), }; @@ -98,17 +97,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */ 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D09, // 0007 EQ R7 R6 K9 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C070A, // 0009 GETMET R7 R3 K10 - 0x8824090B, // 000A GETMBR R9 R4 K11 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F0C, // 0011 GETMET R7 R7 K12 + 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -137,14 +136,14 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0xA4061A00, // 0000 IMPORT R1 K13 - 0x8C08010E, // 0001 GETMET R2 R0 K14 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C08010D, // 0001 GETMET R2 R0 K13 0x7C080200, // 0002 CALL R2 1 - 0x8C08030F, // 0003 GETMET R2 R1 K15 + 0x8C08030E, // 0003 GETMET R2 R1 K14 0x60100018, // 0004 GETGBL R4 G24 - 0x58140010, // 0005 LDCONST R5 K16 - 0x88180111, // 0006 GETMBR R6 R0 K17 - 0x8C1C0112, // 0007 GETMET R7 R0 K18 + 0x5814000F, // 0005 LDCONST R5 K15 + 0x88180110, // 0006 GETMBR R6 R0 K16 + 0x8C1C0111, // 0007 GETMET R7 R0 K17 0x88240100, // 0008 GETMBR R9 R0 K0 0x7C1C0400, // 0009 CALL R7 2 0x7C100600, // 000A CALL R4 3 @@ -173,25 +172,25 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */ be_str_weak(web_values_prefix), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xA4061A00, // 0000 IMPORT R1 K13 - 0x8C080113, // 0001 GETMET R2 R0 K19 + 0xA4061800, // 0000 IMPORT R1 K12 + 0x8C080112, // 0001 GETMET R2 R0 K18 0x7C080200, // 0002 CALL R2 1 0x5C0C0400, // 0003 MOVE R3 R2 0x740E0004, // 0004 JMPT R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 - 0x88100111, // 0006 GETMBR R4 R0 K17 + 0x88100110, // 0006 GETMBR R4 R0 K16 0x7C0C0200, // 0007 CALL R3 1 - 0x000E2803, // 0008 ADD R3 K20 R3 + 0x000E2603, // 0008 ADD R3 K19 R3 0x5C080600, // 0009 MOVE R2 R3 - 0x8C0C030F, // 000A GETMET R3 R1 K15 + 0x8C0C030E, // 000A GETMET R3 R1 K14 0x60140018, // 000B GETGBL R5 G24 - 0x88180115, // 000C GETMBR R6 R0 K21 + 0x88180114, // 000C GETMBR R6 R0 K20 0x780A0003, // 000D JMPF R2 #0012 - 0x8C1C0316, // 000E GETMET R7 R1 K22 + 0x8C1C0315, // 000E GETMET R7 R1 K21 0x5C240400, // 000F MOVE R9 R2 0x7C1C0400, // 0010 CALL R7 2 0x70020000, // 0011 JMP #0013 - 0x581C0017, // 0012 LDCONST R7 K23 + 0x581C0016, // 0012 LDCONST R7 K22 0x7C140400, // 0013 CALL R5 2 0x7C0C0400, // 0014 CALL R3 2 0x80000000, // 0015 RET 0 @@ -218,7 +217,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Rain_value_updated, /* name */ be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040118, // 0000 GETMET R1 R0 K24 + 0x8C040117, // 0000 GETMET R1 R0 K23 0x540E0044, // 0001 LDINT R3 69 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h index 04642bc49..526dacca4 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h @@ -3,33 +3,31 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Sensor_Temp' ktab size: 25, total: 26 (saved 8 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Sensor_Temp[25] = { +// compact class 'Matter_Plugin_Sensor_Temp' ktab size: 23, total: 26 (saved 24 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Sensor_Temp[23] = { /* K0 */ be_nested_str_weak(attribute_updated), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(matter), /* K3 */ be_nested_str_weak(TLV), /* K4 */ be_nested_str_weak(cluster), /* K5 */ be_nested_str_weak(attribute), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(set_or_nil), - /* K8 */ be_nested_str_weak(I2), - /* K9 */ be_nested_str_weak(shadow_value), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(set), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(read_attribute), - /* K14 */ be_nested_str_weak(BRIDGE), - /* K15 */ be_nested_str_weak(temp_unit), - /* K16 */ be_nested_str_weak(TEMP_F), - /* K17 */ be_const_real_hex(0x3FE66666), - /* K18 */ be_nested_str_weak(tasmota), - /* K19 */ be_nested_str_weak(get_option), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str_weak(webserver), - /* K22 */ be_nested_str_weak(web_values_prefix), - /* K23 */ be_nested_str_weak(content_send), - /* K24 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), + /* K6 */ be_nested_str_weak(set_or_nil), + /* K7 */ be_nested_str_weak(I2), + /* K8 */ be_nested_str_weak(shadow_value), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(read_attribute), + /* K13 */ be_nested_str_weak(BRIDGE), + /* K14 */ be_nested_str_weak(temp_unit), + /* K15 */ be_nested_str_weak(TEMP_F), + /* K16 */ be_const_real_hex(0x3FE66666), + /* K17 */ be_nested_str_weak(tasmota), + /* K18 */ be_nested_str_weak(get_option), + /* K19 */ be_nested_str_weak(webserver), + /* K20 */ be_nested_str_weak(web_values_prefix), + /* K21 */ be_nested_str_weak(content_send), + /* K22 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C), }; @@ -87,33 +85,33 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */ 0x541E0401, // 0004 LDINT R7 1026 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0016, // 0006 JMPF R7 #001E - 0x1C1C0D06, // 0007 EQ R7 R6 K6 + 0x1C1C0D01, // 0007 EQ R7 R6 K1 0x781E0005, // 0008 JMPF R7 #000F - 0x8C1C0707, // 0009 GETMET R7 R3 K7 - 0x88240908, // 000A GETMBR R9 R4 K8 - 0x88280109, // 000B GETMBR R10 R0 K9 + 0x8C1C0706, // 0009 GETMET R7 R3 K6 + 0x88240907, // 000A GETMBR R9 R4 K7 + 0x88280108, // 000B GETMBR R10 R0 K8 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x7002000E, // 000E JMP #001E - 0x1C1C0D0A, // 000F EQ R7 R6 K10 + 0x1C1C0D09, // 000F EQ R7 R6 K9 0x781E0005, // 0010 JMPF R7 #0017 - 0x8C1C070B, // 0011 GETMET R7 R3 K11 - 0x88240908, // 0012 GETMBR R9 R4 K8 + 0x8C1C070A, // 0011 GETMET R7 R3 K10 + 0x88240907, // 0012 GETMBR R9 R4 K7 0x5429EC77, // 0013 LDINT R10 -5000 0x7C1C0600, // 0014 CALL R7 3 0x80040E00, // 0015 RET 1 R7 0x70020006, // 0016 JMP #001E - 0x1C1C0D0C, // 0017 EQ R7 R6 K12 + 0x1C1C0D0B, // 0017 EQ R7 R6 K11 0x781E0004, // 0018 JMPF R7 #001E - 0x8C1C070B, // 0019 GETMET R7 R3 K11 - 0x88240908, // 001A GETMBR R9 R4 K8 + 0x8C1C070A, // 0019 GETMET R7 R3 K10 + 0x88240907, // 001A GETMBR R9 R4 K7 0x542A3A97, // 001B LDINT R10 15000 0x7C1C0600, // 001C CALL R7 3 0x80040E00, // 001D RET 1 R7 0x601C0003, // 001E GETGBL R7 G3 0x5C200000, // 001F MOVE R8 R0 0x7C1C0200, // 0020 CALL R7 1 - 0x8C1C0F0D, // 0021 GETMET R7 R7 K13 + 0x8C1C0F0C, // 0021 GETMET R7 R7 K12 0x5C240200, // 0022 MOVE R9 R1 0x5C280400, // 0023 MOVE R10 R2 0x5C2C0600, // 0024 MOVE R11 R3 @@ -142,15 +140,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ be_str_weak(pre_value), &be_const_str_solidified, ( &(const binstruction[42]) { /* code */ - 0x8808010E, // 0000 GETMBR R2 R0 K14 + 0x8808010D, // 0000 GETMBR R2 R0 K13 0x780A0012, // 0001 JMPF R2 #0015 - 0x8808010F, // 0002 GETMBR R2 R0 K15 - 0x880C0110, // 0003 GETMBR R3 R0 K16 + 0x8808010E, // 0002 GETMBR R2 R0 K14 + 0x880C010F, // 0003 GETMBR R3 R0 K15 0x1C080403, // 0004 EQ R2 R2 R3 0x780A0003, // 0005 JMPF R2 #000A 0x540A001F, // 0006 LDINT R2 32 0x04080202, // 0007 SUB R2 R1 R2 - 0x0C080511, // 0008 DIV R2 R2 K17 + 0x0C080510, // 0008 DIV R2 R2 K16 0x5C040400, // 0009 MOVE R1 R2 0x4C080000, // 000A LDNIL R2 0x20080202, // 000B NE R2 R1 R2 @@ -163,15 +161,15 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */ 0x4C080000, // 0012 LDNIL R2 0x80040400, // 0013 RET 1 R2 0x70020013, // 0014 JMP #0029 - 0xB80A2400, // 0015 GETNGBL R2 K18 - 0x8C080513, // 0016 GETMET R2 R2 K19 + 0xB80A2200, // 0015 GETNGBL R2 K17 + 0x8C080512, // 0016 GETMET R2 R2 K18 0x54120007, // 0017 LDINT R4 8 0x7C080400, // 0018 CALL R2 2 - 0x1C080514, // 0019 EQ R2 R2 K20 + 0x1C080509, // 0019 EQ R2 R2 K9 0x780A0003, // 001A JMPF R2 #001F 0x540A001F, // 001B LDINT R2 32 0x04080202, // 001C SUB R2 R1 R2 - 0x0C080511, // 001D DIV R2 R2 K17 + 0x0C080510, // 001D DIV R2 R2 K16 0x5C040400, // 001E MOVE R1 R2 0x4C080000, // 001F LDNIL R2 0x20080202, // 0020 NE R2 R1 R2 @@ -207,18 +205,18 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA4062A00, // 0000 IMPORT R1 K21 - 0x8C080116, // 0001 GETMET R2 R0 K22 + 0xA4062600, // 0000 IMPORT R1 K19 + 0x8C080114, // 0001 GETMET R2 R0 K20 0x7C080200, // 0002 CALL R2 1 - 0x8C080317, // 0003 GETMET R2 R1 K23 + 0x8C080315, // 0003 GETMET R2 R1 K21 0x60100018, // 0004 GETGBL R4 G24 - 0x58140018, // 0005 LDCONST R5 K24 - 0x88180109, // 0006 GETMBR R6 R0 K9 + 0x58140016, // 0005 LDCONST R5 K22 + 0x88180108, // 0006 GETMBR R6 R0 K8 0x4C1C0000, // 0007 LDNIL R7 0x20180C07, // 0008 NE R6 R6 R7 0x781A0005, // 0009 JMPF R6 #0010 0x6018000A, // 000A GETGBL R6 G10 - 0x881C0109, // 000B GETMBR R7 R0 K9 + 0x881C0108, // 000B GETMBR R7 R0 K8 0x7C180200, // 000C CALL R6 1 0x541E0063, // 000D LDINT R7 100 0x0C180C07, // 000E DIV R6 R6 R7 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h index 62a82dd32..6c4974a1e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h @@ -89,17 +89,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name 0x541E0044, // 0004 LDINT R7 69 0x1C1C0A07, // 0005 EQ R7 R5 R7 0x781E0006, // 0006 JMPF R7 #000E - 0x1C1C0D09, // 0007 EQ R7 R6 K9 + 0x1C1C0D03, // 0007 EQ R7 R6 K3 0x781E0004, // 0008 JMPF R7 #000E - 0x8C1C070A, // 0009 GETMET R7 R3 K10 - 0x8824090B, // 000A GETMBR R9 R4 K11 + 0x8C1C0709, // 0009 GETMET R7 R3 K9 + 0x8824090A, // 000A GETMBR R9 R4 K10 0x88280100, // 000B GETMBR R10 R0 K0 0x7C1C0600, // 000C CALL R7 3 0x80040E00, // 000D RET 1 R7 0x601C0003, // 000E GETGBL R7 G3 0x5C200000, // 000F MOVE R8 R0 0x7C1C0200, // 0010 CALL R7 1 - 0x8C1C0F0C, // 0011 GETMET R7 R7 K12 + 0x8C1C0F0B, // 0011 GETMET R7 R7 K11 0x5C240200, // 0012 MOVE R9 R1 0x5C280400, // 0013 MOVE R10 R2 0x5C2C0600, // 0014 MOVE R11 R3 @@ -209,7 +209,7 @@ be_local_closure(class_Matter_Plugin_Sensor_Waterleak_value_updated, /* name * be_str_weak(value_updated), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040118, // 0000 GETMET R1 R0 K24 + 0x8C040117, // 0000 GETMET R1 R0 K23 0x540E0044, // 0001 LDINT R3 69 0x58100003, // 0002 LDCONST R4 K3 0x7C040600, // 0003 CALL R1 3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h index 64a44a0a1..791c1bfae 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_ShutterTilt' ktab size: 45, total: 65 (saved 160 bytes) -static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[45] = { +// compact class 'Matter_Plugin_ShutterTilt' ktab size: 42, total: 65 (saved 184 bytes) +static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[42] = { /* K0 */ be_nested_str_weak(tasmota), /* K1 */ be_nested_str_weak(cmd), /* K2 */ be_nested_str_weak(Status_X2013), @@ -25,31 +25,28 @@ static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[45] = { /* K17 */ be_nested_str_weak(update_shadow_lazy), /* K18 */ be_nested_str_weak(set), /* K19 */ be_nested_str_weak(U1), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str_weak(update_tilt_min_max), - /* K22 */ be_nested_str_weak(scale_uint), - /* K23 */ be_nested_str_weak(shadow_shutter_tilt), - /* K24 */ be_const_int(0), - /* K25 */ be_nested_str_weak(U2), - /* K26 */ be_nested_str_weak(NULL), - /* K27 */ be_nested_str_weak(U4), - /* K28 */ be_const_int(3), - /* K29 */ be_nested_str_weak(read_attribute), - /* K30 */ be_nested_str_weak(Shutter), - /* K31 */ be_nested_str_weak(Tilt), - /* K32 */ be_nested_str_weak(attribute_updated), - /* K33 */ be_nested_str_weak(parse_sensors), - /* K34 */ be_nested_str_weak(light), - /* K35 */ be_nested_str_weak(command), - /* K36 */ be_nested_str_weak(findsubval), - /* K37 */ be_nested_str_weak(ShutterTilt), - /* K38 */ be_const_int(1), - /* K39 */ be_nested_str_weak(_X20), - /* K40 */ be_nested_str_weak(update_shadow), - /* K41 */ be_nested_str_weak(log), - /* K42 */ be_nested_str_weak(tilt_X25_X3A), - /* K43 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A), - /* K44 */ be_nested_str_weak(invoke_request), + /* K20 */ be_nested_str_weak(update_tilt_min_max), + /* K21 */ be_nested_str_weak(scale_uint), + /* K22 */ be_nested_str_weak(shadow_shutter_tilt), + /* K23 */ be_nested_str_weak(U2), + /* K24 */ be_nested_str_weak(NULL), + /* K25 */ be_nested_str_weak(U4), + /* K26 */ be_const_int(3), + /* K27 */ be_nested_str_weak(read_attribute), + /* K28 */ be_nested_str_weak(Shutter), + /* K29 */ be_nested_str_weak(Tilt), + /* K30 */ be_nested_str_weak(attribute_updated), + /* K31 */ be_nested_str_weak(parse_sensors), + /* K32 */ be_nested_str_weak(light), + /* K33 */ be_nested_str_weak(command), + /* K34 */ be_nested_str_weak(findsubval), + /* K35 */ be_nested_str_weak(ShutterTilt), + /* K36 */ be_nested_str_weak(_X20), + /* K37 */ be_nested_str_weak(update_shadow), + /* K38 */ be_nested_str_weak(log), + /* K39 */ be_nested_str_weak(tilt_X25_X3A), + /* K40 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A), + /* K41 */ be_nested_str_weak(invoke_request), }; @@ -143,7 +140,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x8C1C0712, // 000C GETMET R7 R3 K18 0x88240913, // 000D GETMBR R9 R4 K19 0x542A0007, // 000E LDINT R10 8 - 0x002A280A, // 000F ADD R10 K20 R10 + 0x002A180A, // 000F ADD R10 K12 R10 0x542E000F, // 0010 LDINT R11 16 0x0028140B, // 0011 ADD R10 R10 R11 0x7C1C0600, // 0012 CALL R7 3 @@ -152,7 +149,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x541E000E, // 0015 LDINT R7 15 0x1C1C0C07, // 0016 EQ R7 R6 R7 0x781E0021, // 0017 JMPF R7 #003A - 0x8C1C0115, // 0018 GETMET R7 R0 K21 + 0x8C1C0114, // 0018 GETMET R7 R0 K20 0x7C1C0200, // 0019 CALL R7 1 0x881C0109, // 001A GETMBR R7 R0 K9 0x4C200000, // 001B LDNIL R8 @@ -163,25 +160,25 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x201C0E08, // 0020 NE R7 R7 R8 0x781E0011, // 0021 JMPF R7 #0034 0xB81E0000, // 0022 GETNGBL R7 K0 - 0x8C1C0F16, // 0023 GETMET R7 R7 K22 - 0x88240117, // 0024 GETMBR R9 R0 K23 + 0x8C1C0F15, // 0023 GETMET R7 R7 K21 + 0x88240116, // 0024 GETMBR R9 R0 K22 0x88280109, // 0025 GETMBR R10 R0 K9 0x0424120A, // 0026 SUB R9 R9 R10 - 0x58280018, // 0027 LDCONST R10 K24 + 0x5828000A, // 0027 LDCONST R10 K10 0x882C010B, // 0028 GETMBR R11 R0 K11 0x88300109, // 0029 GETMBR R12 R0 K9 0x042C160C, // 002A SUB R11 R11 R12 - 0x58300018, // 002B LDCONST R12 K24 + 0x5830000A, // 002B LDCONST R12 K10 0x5436270F, // 002C LDINT R13 10000 0x7C1C0C00, // 002D CALL R7 6 0x8C200712, // 002E GETMET R8 R3 K18 - 0x88280919, // 002F GETMBR R10 R4 K25 + 0x88280917, // 002F GETMBR R10 R4 K23 0x5C2C0E00, // 0030 MOVE R11 R7 0x7C200600, // 0031 CALL R8 3 0x80041000, // 0032 RET 1 R8 0x70020004, // 0033 JMP #0039 0x8C1C0712, // 0034 GETMET R7 R3 K18 - 0x8824091A, // 0035 GETMBR R9 R4 K26 + 0x88240918, // 0035 GETMBR R9 R4 K24 0x4C280000, // 0036 LDNIL R10 0x7C1C0600, // 0037 CALL R7 3 0x80040E00, // 0038 RET 1 R7 @@ -198,25 +195,25 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x201C0E08, // 0043 NE R7 R7 R8 0x781E0011, // 0044 JMPF R7 #0057 0xB81E0000, // 0045 GETNGBL R7 K0 - 0x8C1C0F16, // 0046 GETMET R7 R7 K22 - 0x88240117, // 0047 GETMBR R9 R0 K23 + 0x8C1C0F15, // 0046 GETMET R7 R7 K21 + 0x88240116, // 0047 GETMBR R9 R0 K22 0x88280109, // 0048 GETMBR R10 R0 K9 0x0424120A, // 0049 SUB R9 R9 R10 - 0x58280018, // 004A LDCONST R10 K24 + 0x5828000A, // 004A LDCONST R10 K10 0x882C010B, // 004B GETMBR R11 R0 K11 0x88300109, // 004C GETMBR R12 R0 K9 0x042C160C, // 004D SUB R11 R11 R12 - 0x58300018, // 004E LDCONST R12 K24 + 0x5830000A, // 004E LDCONST R12 K10 0x5436270F, // 004F LDINT R13 10000 0x7C1C0C00, // 0050 CALL R7 6 0x8C200712, // 0051 GETMET R8 R3 K18 - 0x88280919, // 0052 GETMBR R10 R4 K25 + 0x88280917, // 0052 GETMBR R10 R4 K23 0x5C2C0E00, // 0053 MOVE R11 R7 0x7C200600, // 0054 CALL R8 3 0x80041000, // 0055 RET 1 R8 0x70020004, // 0056 JMP #005C 0x8C1C0712, // 0057 GETMET R7 R3 K18 - 0x8824091A, // 0058 GETMBR R9 R4 K26 + 0x88240918, // 0058 GETMBR R9 R4 K24 0x4C280000, // 0059 LDNIL R10 0x7C1C0600, // 005A CALL R7 3 0x80040E00, // 005B RET 1 R7 @@ -225,9 +222,9 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x1C1C0C07, // 005E EQ R7 R6 R7 0x781E0007, // 005F JMPF R7 #0068 0x8C1C0712, // 0060 GETMET R7 R3 K18 - 0x8824091B, // 0061 GETMBR R9 R4 K27 + 0x88240919, // 0061 GETMBR R9 R4 K25 0x542A0003, // 0062 LDINT R10 4 - 0x002A380A, // 0063 ADD R10 K28 R10 + 0x002A340A, // 0063 ADD R10 K26 R10 0x542E000F, // 0064 LDINT R11 16 0x0028140B, // 0065 ADD R10 R10 R11 0x7C1C0600, // 0066 CALL R7 3 @@ -235,7 +232,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */ 0x601C0003, // 0068 GETGBL R7 G3 0x5C200000, // 0069 MOVE R8 R0 0x7C1C0200, // 006A CALL R7 1 - 0x8C1C0F1D, // 006B GETMET R7 R7 K29 + 0x8C1C0F1B, // 006B GETMET R7 R7 K27 0x5C240200, // 006C MOVE R9 R1 0x5C280400, // 006D MOVE R10 R2 0x5C2C0600, // 006E MOVE R11 R3 @@ -266,32 +263,32 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */ ( &(const binstruction[31]) { /* code */ 0x60080008, // 0000 GETGBL R2 G8 0x880C0107, // 0001 GETMBR R3 R0 K7 - 0x000C0714, // 0002 ADD R3 R3 K20 + 0x000C070C, // 0002 ADD R3 R3 K12 0x7C080200, // 0003 CALL R2 1 - 0x000A3C02, // 0004 ADD R2 K30 R2 + 0x000A3802, // 0004 ADD R2 K28 R2 0x8C0C0303, // 0005 GETMET R3 R1 K3 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E000E, // 0008 JMPF R3 #0018 0x940C0202, // 0009 GETIDX R3 R1 R2 0x8C100705, // 000A GETMET R4 R3 K5 - 0x5818001F, // 000B LDCONST R6 K31 + 0x5818001D, // 000B LDCONST R6 K29 0x7C100400, // 000C CALL R4 2 0x4C140000, // 000D LDNIL R5 0x20140805, // 000E NE R5 R4 R5 0x78160007, // 000F JMPF R5 #0018 - 0x88140117, // 0010 GETMBR R5 R0 K23 + 0x88140116, // 0010 GETMBR R5 R0 K22 0x20140805, // 0011 NE R5 R4 R5 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140120, // 0013 GETMET R5 R0 K32 + 0x8C14011E, // 0013 GETMET R5 R0 K30 0x541E0101, // 0014 LDINT R7 258 0x5422000E, // 0015 LDINT R8 15 0x7C140600, // 0016 CALL R5 3 - 0x90022E04, // 0017 SETMBR R0 K23 R4 + 0x90022C04, // 0017 SETMBR R0 K22 R4 0x600C0003, // 0018 GETGBL R3 G3 0x5C100000, // 0019 MOVE R4 R0 0x7C0C0200, // 001A CALL R3 1 - 0x8C0C0721, // 001B GETMET R3 R3 K33 + 0x8C0C071F, // 001B GETMET R3 R3 K31 0x5C140200, // 001C MOVE R5 R1 0x7C0C0400, // 001D CALL R3 2 0x80000000, // 001E RET 0 @@ -318,11 +315,11 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ be_str_weak(invoke_request), &be_const_str_solidified, ( &(const binstruction[79]) { /* code */ - 0xA4124400, // 0000 IMPORT R4 K34 + 0xA4124000, // 0000 IMPORT R4 K32 0xB8161A00, // 0001 GETNGBL R5 K13 0x88140B0E, // 0002 GETMBR R5 R5 K14 0x8818070F, // 0003 GETMBR R6 R3 K15 - 0x881C0723, // 0004 GETMBR R7 R3 K35 + 0x881C0721, // 0004 GETMBR R7 R3 K33 0x54220101, // 0005 LDINT R8 258 0x1C200C08, // 0006 EQ R8 R6 R8 0x7822003D, // 0007 JMPF R8 #0046 @@ -331,13 +328,13 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ 0x54220007, // 000A LDINT R8 8 0x1C200E08, // 000B EQ R8 R7 R8 0x78220038, // 000C JMPF R8 #0046 - 0x8C200524, // 000D GETMET R8 R2 K36 - 0x58280018, // 000E LDCONST R10 K24 + 0x8C200522, // 000D GETMET R8 R2 K34 + 0x5828000A, // 000E LDCONST R10 K10 0x7C200400, // 000F CALL R8 2 0x4C240000, // 0010 LDNIL R9 0x20241009, // 0011 NE R9 R8 R9 0x78260030, // 0012 JMPF R9 #0044 - 0x8C240115, // 0013 GETMET R9 R0 K21 + 0x8C240114, // 0013 GETMET R9 R0 K20 0x7C240200, // 0014 CALL R9 1 0x88240109, // 0015 GETMBR R9 R0 K9 0x4C280000, // 0016 LDNIL R10 @@ -349,11 +346,11 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ 0x78260021, // 001C JMPF R9 #003F 0x88240109, // 001D GETMBR R9 R0 K9 0xB82A0000, // 001E GETNGBL R10 K0 - 0x8C281516, // 001F GETMET R10 R10 K22 + 0x8C281515, // 001F GETMET R10 R10 K21 0x5C301000, // 0020 MOVE R12 R8 - 0x58340018, // 0021 LDCONST R13 K24 + 0x5834000A, // 0021 LDCONST R13 K10 0x543A270F, // 0022 LDINT R14 10000 - 0x583C0018, // 0023 LDCONST R15 K24 + 0x583C000A, // 0023 LDCONST R15 K10 0x8840010B, // 0024 GETMBR R16 R0 K11 0x88440109, // 0025 GETMBR R17 R0 K9 0x04402011, // 0026 SUB R16 R16 R17 @@ -363,35 +360,35 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */ 0x8C281501, // 002A GETMET R10 R10 K1 0x60300008, // 002B GETGBL R12 G8 0x88340107, // 002C GETMBR R13 R0 K7 - 0x00341B26, // 002D ADD R13 R13 K38 + 0x00341B0C, // 002D ADD R13 R13 K12 0x7C300200, // 002E CALL R12 1 - 0x00324A0C, // 002F ADD R12 K37 R12 - 0x00301927, // 0030 ADD R12 R12 K39 + 0x0032460C, // 002F ADD R12 K35 R12 + 0x00301924, // 0030 ADD R12 R12 K36 0x60340008, // 0031 GETGBL R13 G8 0x5C381200, // 0032 MOVE R14 R9 0x7C340200, // 0033 CALL R13 1 0x0030180D, // 0034 ADD R12 R12 R13 0x50340000, // 0035 LDBOOL R13 0 0 0x7C280600, // 0036 CALL R10 3 - 0x8C280128, // 0037 GETMET R10 R0 K40 + 0x8C280125, // 0037 GETMET R10 R0 K37 0x7C280200, // 0038 CALL R10 1 0x60280008, // 0039 GETGBL R10 G8 0x5C2C1000, // 003A MOVE R11 R8 0x7C280200, // 003B CALL R10 1 - 0x002A540A, // 003C ADD R10 K42 R10 - 0x900E520A, // 003D SETMBR R3 K41 R10 + 0x002A4E0A, // 003C ADD R10 K39 R10 + 0x900E4C0A, // 003D SETMBR R3 K38 R10 0x70020004, // 003E JMP #0044 0x60240008, // 003F GETGBL R9 G8 0x5C281000, // 0040 MOVE R10 R8 0x7C240200, // 0041 CALL R9 1 - 0x00265609, // 0042 ADD R9 K43 R9 - 0x900E5209, // 0043 SETMBR R3 K41 R9 + 0x00265009, // 0042 ADD R9 K40 R9 + 0x900E4C09, // 0043 SETMBR R3 K38 R9 0x50240200, // 0044 LDBOOL R9 1 0 0x80041200, // 0045 RET 1 R9 0x60200003, // 0046 GETGBL R8 G3 0x5C240000, // 0047 MOVE R9 R0 0x7C200200, // 0048 CALL R8 1 - 0x8C20112C, // 0049 GETMET R8 R8 K44 + 0x8C201129, // 0049 GETMET R8 R8 K41 0x5C280200, // 004A MOVE R10 R1 0x5C2C0400, // 004B MOVE R11 R2 0x5C300600, // 004C MOVE R12 R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h index 7c3b712aa..4305aad09 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Light3' ktab size: 72, total: 113 (saved 328 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Light3[72] = { +// compact class 'Matter_Plugin_Light3' ktab size: 66, total: 113 (saved 376 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Light3[66] = { /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), /* K2 */ be_nested_str_weak(cluster), @@ -25,58 +25,52 @@ static const bvalue be_ktab_class_Matter_Plugin_Light3[72] = { /* K17 */ be_nested_str_weak(_X20sat_X3A), /* K18 */ be_nested_str_weak(invoke_request), /* K19 */ be_nested_str_weak(attribute), - /* K20 */ be_const_int(0), - /* K21 */ be_nested_str_weak(set_or_nil), - /* K22 */ be_nested_str_weak(U1), - /* K23 */ be_nested_str_weak(shadow_hue), - /* K24 */ be_const_int(1), - /* K25 */ be_nested_str_weak(shadow_sat), - /* K26 */ be_nested_str_weak(set), - /* K27 */ be_nested_str_weak(U4), - /* K28 */ be_nested_str_weak(read_attribute), - /* K29 */ be_nested_str_weak(VIRTUAL), - /* K30 */ be_nested_str_weak(BRIDGE), - /* K31 */ be_nested_str_weak(light), - /* K32 */ be_nested_str_weak(update_shadow), - /* K33 */ be_nested_str_weak(get), - /* K34 */ be_nested_str_weak(light_index), - /* K35 */ be_nested_str_weak(find), - /* K36 */ be_nested_str_weak(hue), - /* K37 */ be_nested_str_weak(sat), - /* K38 */ be_nested_str_weak(tasmota), - /* K39 */ be_nested_str_weak(scale_uint), - /* K40 */ be_nested_str_weak(attribute_updated), - /* K41 */ be_nested_str_weak(update_virtual), - /* K42 */ be_nested_str_weak(call_remote_sync), - /* K43 */ be_nested_str_weak(HSBColor1), - /* K44 */ be_nested_str_weak(parse_status), - /* K45 */ be_nested_str_weak(HSBColor2), - /* K46 */ be_nested_str_weak(init), - /* K47 */ be_const_int(0), - /* K48 */ be_nested_str_weak(webserver), - /* K49 */ be_nested_str_weak(web_values_prefix), - /* K50 */ be_nested_str_weak(content_send), - /* K51 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K52 */ be_nested_str_weak(web_value_onoff), - /* K53 */ be_nested_str_weak(shadow_onoff), - /* K54 */ be_nested_str_weak(web_value_dimmer), - /* K55 */ be_nested_str_weak(web_value_RGB), - /* K56 */ be_nested_str_weak(HSBColor), - /* K57 */ be_nested_str_weak(string), - /* K58 */ be_nested_str_weak(split), - /* K59 */ be_nested_str_weak(_X2C), - /* K60 */ be_const_int(0), - /* K61 */ be_const_int(1), - /* K62 */ be_nested_str_weak(light_state), - /* K63 */ be_const_int(3), - /* K64 */ be_nested_str_weak(set_bri), - /* K65 */ be_nested_str_weak(set_huesat), - /* K66 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), - /* K67 */ be_nested_str_weak(r), - /* K68 */ be_nested_str_weak(g), - /* K69 */ be_nested_str_weak(b), - /* K70 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), - /* K71 */ be_nested_str_weak(), + /* K20 */ be_nested_str_weak(set_or_nil), + /* K21 */ be_nested_str_weak(U1), + /* K22 */ be_nested_str_weak(shadow_hue), + /* K23 */ be_nested_str_weak(shadow_sat), + /* K24 */ be_nested_str_weak(set), + /* K25 */ be_nested_str_weak(U4), + /* K26 */ be_nested_str_weak(read_attribute), + /* K27 */ be_nested_str_weak(VIRTUAL), + /* K28 */ be_nested_str_weak(BRIDGE), + /* K29 */ be_nested_str_weak(light), + /* K30 */ be_nested_str_weak(update_shadow), + /* K31 */ be_nested_str_weak(get), + /* K32 */ be_nested_str_weak(light_index), + /* K33 */ be_nested_str_weak(find), + /* K34 */ be_nested_str_weak(hue), + /* K35 */ be_nested_str_weak(sat), + /* K36 */ be_nested_str_weak(tasmota), + /* K37 */ be_nested_str_weak(scale_uint), + /* K38 */ be_nested_str_weak(attribute_updated), + /* K39 */ be_nested_str_weak(update_virtual), + /* K40 */ be_nested_str_weak(call_remote_sync), + /* K41 */ be_nested_str_weak(HSBColor1), + /* K42 */ be_nested_str_weak(parse_status), + /* K43 */ be_nested_str_weak(HSBColor2), + /* K44 */ be_nested_str_weak(init), + /* K45 */ be_nested_str_weak(webserver), + /* K46 */ be_nested_str_weak(web_values_prefix), + /* K47 */ be_nested_str_weak(content_send), + /* K48 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K49 */ be_nested_str_weak(web_value_onoff), + /* K50 */ be_nested_str_weak(shadow_onoff), + /* K51 */ be_nested_str_weak(web_value_dimmer), + /* K52 */ be_nested_str_weak(web_value_RGB), + /* K53 */ be_nested_str_weak(HSBColor), + /* K54 */ be_nested_str_weak(string), + /* K55 */ be_nested_str_weak(split), + /* K56 */ be_nested_str_weak(_X2C), + /* K57 */ be_nested_str_weak(light_state), + /* K58 */ be_nested_str_weak(set_bri), + /* K59 */ be_nested_str_weak(set_huesat), + /* K60 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X), + /* K61 */ be_nested_str_weak(r), + /* K62 */ be_nested_str_weak(g), + /* K63 */ be_nested_str_weak(b), + /* K64 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s), + /* K65 */ be_nested_str_weak(), }; @@ -252,88 +246,88 @@ be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */ 0x781E004F, // 0006 JMPF R7 #0057 0x8C1C0104, // 0007 GETMET R7 R0 K4 0x7C1C0200, // 0008 CALL R7 1 - 0x1C1C0D14, // 0009 EQ R7 R6 K20 + 0x1C1C0D05, // 0009 EQ R7 R6 K5 0x781E0005, // 000A JMPF R7 #0011 - 0x8C1C0715, // 000B GETMET R7 R3 K21 - 0x88240916, // 000C GETMBR R9 R4 K22 - 0x88280117, // 000D GETMBR R10 R0 K23 + 0x8C1C0714, // 000B GETMET R7 R3 K20 + 0x88240915, // 000C GETMBR R9 R4 K21 + 0x88280116, // 000D GETMBR R10 R0 K22 0x7C1C0600, // 000E CALL R7 3 0x80040E00, // 000F RET 1 R7 0x70020045, // 0010 JMP #0057 - 0x1C1C0D18, // 0011 EQ R7 R6 K24 + 0x1C1C0D0C, // 0011 EQ R7 R6 K12 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C0715, // 0013 GETMET R7 R3 K21 - 0x88240916, // 0014 GETMBR R9 R4 K22 - 0x88280119, // 0015 GETMBR R10 R0 K25 + 0x8C1C0714, // 0013 GETMET R7 R3 K20 + 0x88240915, // 0014 GETMBR R9 R4 K21 + 0x88280117, // 0015 GETMBR R10 R0 K23 0x7C1C0600, // 0016 CALL R7 3 0x80040E00, // 0017 RET 1 R7 0x7002003D, // 0018 JMP #0057 0x541E0006, // 0019 LDINT R7 7 0x1C1C0C07, // 001A EQ R7 R6 R7 0x781E0005, // 001B JMPF R7 #0022 - 0x8C1C071A, // 001C GETMET R7 R3 K26 - 0x88240916, // 001D GETMBR R9 R4 K22 - 0x58280014, // 001E LDCONST R10 K20 + 0x8C1C0718, // 001C GETMET R7 R3 K24 + 0x88240915, // 001D GETMBR R9 R4 K21 + 0x58280005, // 001E LDCONST R10 K5 0x7C1C0600, // 001F CALL R7 3 0x80040E00, // 0020 RET 1 R7 0x70020034, // 0021 JMP #0057 0x541E0007, // 0022 LDINT R7 8 0x1C1C0C07, // 0023 EQ R7 R6 R7 0x781E0005, // 0024 JMPF R7 #002B - 0x8C1C071A, // 0025 GETMET R7 R3 K26 - 0x88240916, // 0026 GETMBR R9 R4 K22 - 0x58280014, // 0027 LDCONST R10 K20 + 0x8C1C0718, // 0025 GETMET R7 R3 K24 + 0x88240915, // 0026 GETMBR R9 R4 K21 + 0x58280005, // 0027 LDCONST R10 K5 0x7C1C0600, // 0028 CALL R7 3 0x80040E00, // 0029 RET 1 R7 0x7002002B, // 002A JMP #0057 0x541E000E, // 002B LDINT R7 15 0x1C1C0C07, // 002C EQ R7 R6 R7 0x781E0005, // 002D JMPF R7 #0034 - 0x8C1C071A, // 002E GETMET R7 R3 K26 - 0x88240916, // 002F GETMBR R9 R4 K22 - 0x58280014, // 0030 LDCONST R10 K20 + 0x8C1C0718, // 002E GETMET R7 R3 K24 + 0x88240915, // 002F GETMBR R9 R4 K21 + 0x58280005, // 0030 LDCONST R10 K5 0x7C1C0600, // 0031 CALL R7 3 0x80040E00, // 0032 RET 1 R7 0x70020022, // 0033 JMP #0057 0x541E4000, // 0034 LDINT R7 16385 0x1C1C0C07, // 0035 EQ R7 R6 R7 0x781E0005, // 0036 JMPF R7 #003D - 0x8C1C071A, // 0037 GETMET R7 R3 K26 - 0x88240916, // 0038 GETMBR R9 R4 K22 - 0x58280014, // 0039 LDCONST R10 K20 + 0x8C1C0718, // 0037 GETMET R7 R3 K24 + 0x88240915, // 0038 GETMBR R9 R4 K21 + 0x58280005, // 0039 LDCONST R10 K5 0x7C1C0600, // 003A CALL R7 3 0x80040E00, // 003B RET 1 R7 0x70020019, // 003C JMP #0057 0x541E4009, // 003D LDINT R7 16394 0x1C1C0C07, // 003E EQ R7 R6 R7 0x781E0005, // 003F JMPF R7 #0046 - 0x8C1C071A, // 0040 GETMET R7 R3 K26 - 0x88240916, // 0041 GETMBR R9 R4 K22 - 0x58280018, // 0042 LDCONST R10 K24 + 0x8C1C0718, // 0040 GETMET R7 R3 K24 + 0x88240915, // 0041 GETMBR R9 R4 K21 + 0x5828000C, // 0042 LDCONST R10 K12 0x7C1C0600, // 0043 CALL R7 3 0x80040E00, // 0044 RET 1 R7 0x70020010, // 0045 JMP #0057 0x541E000F, // 0046 LDINT R7 16 0x1C1C0C07, // 0047 EQ R7 R6 R7 0x781E0005, // 0048 JMPF R7 #004F - 0x8C1C071A, // 0049 GETMET R7 R3 K26 - 0x88240916, // 004A GETMBR R9 R4 K22 - 0x58280014, // 004B LDCONST R10 K20 + 0x8C1C0718, // 0049 GETMET R7 R3 K24 + 0x88240915, // 004A GETMBR R9 R4 K21 + 0x58280005, // 004B LDCONST R10 K5 0x7C1C0600, // 004C CALL R7 3 0x80040E00, // 004D RET 1 R7 0x70020007, // 004E JMP #0057 0x541EFFFB, // 004F LDINT R7 65532 0x1C1C0C07, // 0050 EQ R7 R6 R7 0x781E0004, // 0051 JMPF R7 #0057 - 0x8C1C071A, // 0052 GETMET R7 R3 K26 - 0x8824091B, // 0053 GETMBR R9 R4 K27 - 0x58280018, // 0054 LDCONST R10 K24 + 0x8C1C0718, // 0052 GETMET R7 R3 K24 + 0x88240919, // 0053 GETMBR R9 R4 K25 + 0x5828000C, // 0054 LDCONST R10 K12 0x7C1C0600, // 0055 CALL R7 3 0x80040E00, // 0056 RET 1 R7 0x601C0003, // 0057 GETGBL R7 G3 0x5C200000, // 0058 MOVE R8 R0 0x7C1C0200, // 0059 CALL R7 1 - 0x8C1C0F1C, // 005A GETMET R7 R7 K28 + 0x8C1C0F1A, // 005A GETMET R7 R7 K26 0x5C240200, // 005B MOVE R9 R1 0x5C280400, // 005C MOVE R10 R2 0x5C2C0600, // 005D MOVE R11 R3 @@ -362,35 +356,35 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ be_str_weak(update_shadow), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ - 0x8804011D, // 0000 GETMBR R1 R0 K29 + 0x8804011B, // 0000 GETMBR R1 R0 K27 0x74060042, // 0001 JMPT R1 #0045 - 0x8804011E, // 0002 GETMBR R1 R0 K30 + 0x8804011C, // 0002 GETMBR R1 R0 K28 0x74060040, // 0003 JMPT R1 #0045 - 0xA4063E00, // 0004 IMPORT R1 K31 + 0xA4063A00, // 0004 IMPORT R1 K29 0x60080003, // 0005 GETGBL R2 G3 0x5C0C0000, // 0006 MOVE R3 R0 0x7C080200, // 0007 CALL R2 1 - 0x8C080520, // 0008 GETMET R2 R2 K32 + 0x8C08051E, // 0008 GETMET R2 R2 K30 0x7C080200, // 0009 CALL R2 1 - 0x8C080321, // 000A GETMET R2 R1 K33 - 0x88100122, // 000B GETMBR R4 R0 K34 + 0x8C08031F, // 000A GETMET R2 R1 K31 + 0x88100120, // 000B GETMBR R4 R0 K32 0x7C080400, // 000C CALL R2 2 0x4C0C0000, // 000D LDNIL R3 0x200C0403, // 000E NE R3 R2 R3 0x780E0033, // 000F JMPF R3 #0044 - 0x8C0C0523, // 0010 GETMET R3 R2 K35 - 0x58140024, // 0011 LDCONST R5 K36 + 0x8C0C0521, // 0010 GETMET R3 R2 K33 + 0x58140022, // 0011 LDCONST R5 K34 0x4C180000, // 0012 LDNIL R6 0x7C0C0600, // 0013 CALL R3 3 - 0x8C100523, // 0014 GETMET R4 R2 K35 - 0x58180025, // 0015 LDCONST R6 K37 + 0x8C100521, // 0014 GETMET R4 R2 K33 + 0x58180023, // 0015 LDCONST R6 K35 0x4C1C0000, // 0016 LDNIL R7 0x7C100600, // 0017 CALL R4 3 0x4C140000, // 0018 LDNIL R5 0x20140605, // 0019 NE R5 R3 R5 0x78160009, // 001A JMPF R5 #0025 - 0xB8164C00, // 001B GETNGBL R5 K38 - 0x8C140B27, // 001C GETMET R5 R5 K39 + 0xB8164800, // 001B GETNGBL R5 K36 + 0x8C140B25, // 001C GETMET R5 R5 K37 0x5C1C0600, // 001D MOVE R7 R3 0x58200005, // 001E LDCONST R8 K5 0x54260167, // 001F LDINT R9 360 @@ -399,12 +393,12 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ 0x7C140C00, // 0022 CALL R5 6 0x5C0C0A00, // 0023 MOVE R3 R5 0x70020000, // 0024 JMP #0026 - 0x880C0117, // 0025 GETMBR R3 R0 K23 + 0x880C0116, // 0025 GETMBR R3 R0 K22 0x4C140000, // 0026 LDNIL R5 0x20140805, // 0027 NE R5 R4 R5 0x78160009, // 0028 JMPF R5 #0033 - 0xB8164C00, // 0029 GETNGBL R5 K38 - 0x8C140B27, // 002A GETMET R5 R5 K39 + 0xB8164800, // 0029 GETNGBL R5 K36 + 0x8C140B25, // 002A GETMET R5 R5 K37 0x5C1C0800, // 002B MOVE R7 R4 0x58200005, // 002C LDCONST R8 K5 0x542600FE, // 002D LDINT R9 255 @@ -413,28 +407,28 @@ be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */ 0x7C140C00, // 0030 CALL R5 6 0x5C100A00, // 0031 MOVE R4 R5 0x70020000, // 0032 JMP #0034 - 0x88100119, // 0033 GETMBR R4 R0 K25 - 0x88140117, // 0034 GETMBR R5 R0 K23 + 0x88100117, // 0033 GETMBR R4 R0 K23 + 0x88140116, // 0034 GETMBR R5 R0 K22 0x20140605, // 0035 NE R5 R3 R5 0x78160004, // 0036 JMPF R5 #003C - 0x8C140128, // 0037 GETMET R5 R0 K40 + 0x8C140126, // 0037 GETMET R5 R0 K38 0x541E02FF, // 0038 LDINT R7 768 0x58200005, // 0039 LDCONST R8 K5 0x7C140600, // 003A CALL R5 3 - 0x90022E03, // 003B SETMBR R0 K23 R3 - 0x88140119, // 003C GETMBR R5 R0 K25 + 0x90022C03, // 003B SETMBR R0 K22 R3 + 0x88140117, // 003C GETMBR R5 R0 K23 0x20140805, // 003D NE R5 R4 R5 0x78160004, // 003E JMPF R5 #0044 - 0x8C140128, // 003F GETMET R5 R0 K40 + 0x8C140126, // 003F GETMET R5 R0 K38 0x541E02FF, // 0040 LDINT R7 768 - 0x58200018, // 0041 LDCONST R8 K24 + 0x5820000C, // 0041 LDCONST R8 K12 0x7C140600, // 0042 CALL R5 3 - 0x90023204, // 0043 SETMBR R0 K25 R4 + 0x90022E04, // 0043 SETMBR R0 K23 R4 0x70020004, // 0044 JMP #004A 0x60040003, // 0045 GETGBL R1 G3 0x5C080000, // 0046 MOVE R2 R0 0x7C040200, // 0047 CALL R1 1 - 0x8C040320, // 0048 GETMET R1 R1 K32 + 0x8C04031E, // 0048 GETMET R1 R1 K30 0x7C040200, // 0049 CALL R1 1 0x80000000, // 004A RET 0 }) @@ -461,12 +455,12 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ 0x60080009, // 0000 GETGBL R2 G9 - 0x8C0C0323, // 0001 GETMET R3 R1 K35 + 0x8C0C0321, // 0001 GETMET R3 R1 K33 0x5814000B, // 0002 LDCONST R5 K11 0x7C0C0400, // 0003 CALL R3 2 0x7C080200, // 0004 CALL R2 1 0x600C0009, // 0005 GETGBL R3 G9 - 0x8C100323, // 0006 GETMET R4 R1 K35 + 0x8C100321, // 0006 GETMET R4 R1 K33 0x58180010, // 0007 LDCONST R6 K16 0x7C100400, // 0008 CALL R4 2 0x7C0C0200, // 0009 CALL R3 1 @@ -483,7 +477,7 @@ be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */ 0x60100003, // 0014 GETGBL R4 G3 0x5C140000, // 0015 MOVE R5 R0 0x7C100200, // 0016 CALL R4 1 - 0x8C100929, // 0017 GETMET R4 R4 K41 + 0x8C100927, // 0017 GETMET R4 R4 K39 0x5C180200, // 0018 MOVE R6 R1 0x7C100400, // 0019 CALL R4 2 0x80000000, // 001A RET 0 @@ -530,83 +524,83 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x240C0403, // 0011 GT R3 R2 R3 0x780E0000, // 0012 JMPF R3 #0014 0x540A00FD, // 0013 LDINT R2 254 - 0x880C011E, // 0014 GETMBR R3 R0 K30 + 0x880C011C, // 0014 GETMBR R3 R0 K28 0x780E002C, // 0015 JMPF R3 #0043 0x4C0C0000, // 0016 LDNIL R3 0x200C0203, // 0017 NE R3 R1 R3 0x780E0012, // 0018 JMPF R3 #002C - 0xB80E4C00, // 0019 GETNGBL R3 K38 - 0x8C0C0727, // 001A GETMET R3 R3 K39 + 0xB80E4800, // 0019 GETNGBL R3 K36 + 0x8C0C0725, // 001A GETMET R3 R3 K37 0x5C140200, // 001B MOVE R5 R1 0x58180005, // 001C LDCONST R6 K5 0x541E00FD, // 001D LDINT R7 254 0x58200005, // 001E LDCONST R8 K5 0x54260167, // 001F LDINT R9 360 0x7C0C0C00, // 0020 CALL R3 6 - 0x8C10012A, // 0021 GETMET R4 R0 K42 - 0x5818002B, // 0022 LDCONST R6 K43 + 0x8C100128, // 0021 GETMET R4 R0 K40 + 0x58180029, // 0022 LDCONST R6 K41 0x5C1C0600, // 0023 MOVE R7 R3 0x7C100600, // 0024 CALL R4 3 0x4C140000, // 0025 LDNIL R5 0x20140805, // 0026 NE R5 R4 R5 0x78160003, // 0027 JMPF R5 #002C - 0x8C14012C, // 0028 GETMET R5 R0 K44 + 0x8C14012A, // 0028 GETMET R5 R0 K42 0x5C1C0800, // 0029 MOVE R7 R4 0x5422000A, // 002A LDINT R8 11 0x7C140600, // 002B CALL R5 3 0x4C0C0000, // 002C LDNIL R3 0x200C0403, // 002D NE R3 R2 R3 0x780E0012, // 002E JMPF R3 #0042 - 0xB80E4C00, // 002F GETNGBL R3 K38 - 0x8C0C0727, // 0030 GETMET R3 R3 K39 + 0xB80E4800, // 002F GETNGBL R3 K36 + 0x8C0C0725, // 0030 GETMET R3 R3 K37 0x5C140400, // 0031 MOVE R5 R2 0x58180005, // 0032 LDCONST R6 K5 0x541E00FD, // 0033 LDINT R7 254 0x58200005, // 0034 LDCONST R8 K5 0x54260063, // 0035 LDINT R9 100 0x7C0C0C00, // 0036 CALL R3 6 - 0x8C10012A, // 0037 GETMET R4 R0 K42 - 0x5818002D, // 0038 LDCONST R6 K45 + 0x8C100128, // 0037 GETMET R4 R0 K40 + 0x5818002B, // 0038 LDCONST R6 K43 0x5C1C0600, // 0039 MOVE R7 R3 0x7C100600, // 003A CALL R4 3 0x4C140000, // 003B LDNIL R5 0x20140805, // 003C NE R5 R4 R5 0x78160003, // 003D JMPF R5 #0042 - 0x8C14012C, // 003E GETMET R5 R0 K44 + 0x8C14012A, // 003E GETMET R5 R0 K42 0x5C1C0800, // 003F MOVE R7 R4 0x5422000A, // 0040 LDINT R8 11 0x7C140600, // 0041 CALL R5 3 0x70020055, // 0042 JMP #0099 - 0x880C011D, // 0043 GETMBR R3 R0 K29 + 0x880C011B, // 0043 GETMBR R3 R0 K27 0x780E0016, // 0044 JMPF R3 #005C 0x4C0C0000, // 0045 LDNIL R3 0x200C0203, // 0046 NE R3 R1 R3 0x780E0007, // 0047 JMPF R3 #0050 - 0x880C0117, // 0048 GETMBR R3 R0 K23 + 0x880C0116, // 0048 GETMBR R3 R0 K22 0x200C0203, // 0049 NE R3 R1 R3 0x780E0004, // 004A JMPF R3 #0050 - 0x8C0C0128, // 004B GETMET R3 R0 K40 + 0x8C0C0126, // 004B GETMET R3 R0 K38 0x541602FF, // 004C LDINT R5 768 0x58180005, // 004D LDCONST R6 K5 0x7C0C0600, // 004E CALL R3 3 - 0x90022E01, // 004F SETMBR R0 K23 R1 + 0x90022C01, // 004F SETMBR R0 K22 R1 0x4C0C0000, // 0050 LDNIL R3 0x200C0403, // 0051 NE R3 R2 R3 0x780E0007, // 0052 JMPF R3 #005B - 0x880C0119, // 0053 GETMBR R3 R0 K25 + 0x880C0117, // 0053 GETMBR R3 R0 K23 0x200C0403, // 0054 NE R3 R2 R3 0x780E0004, // 0055 JMPF R3 #005B - 0x8C0C0128, // 0056 GETMET R3 R0 K40 + 0x8C0C0126, // 0056 GETMET R3 R0 K38 0x541602FF, // 0057 LDINT R5 768 - 0x58180018, // 0058 LDCONST R6 K24 + 0x5818000C, // 0058 LDCONST R6 K12 0x7C0C0600, // 0059 CALL R3 3 - 0x90023202, // 005A SETMBR R0 K25 R2 + 0x90022E02, // 005A SETMBR R0 K23 R2 0x7002003C, // 005B JMP #0099 0x4C0C0000, // 005C LDNIL R3 0x200C0203, // 005D NE R3 R1 R3 0x780E0008, // 005E JMPF R3 #0068 - 0xB80E4C00, // 005F GETNGBL R3 K38 - 0x8C0C0727, // 0060 GETMET R3 R3 K39 + 0xB80E4800, // 005F GETNGBL R3 K36 + 0x8C0C0725, // 0060 GETMET R3 R3 K37 0x5C140200, // 0061 MOVE R5 R1 0x58180005, // 0062 LDCONST R6 K5 0x541E00FD, // 0063 LDINT R7 254 @@ -618,8 +612,8 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x4C100000, // 0069 LDNIL R4 0x20100404, // 006A NE R4 R2 R4 0x78120008, // 006B JMPF R4 #0075 - 0xB8124C00, // 006C GETNGBL R4 K38 - 0x8C100927, // 006D GETMET R4 R4 K39 + 0xB8124800, // 006C GETNGBL R4 K36 + 0x8C100925, // 006D GETMET R4 R4 K37 0x5C180400, // 006E MOVE R6 R2 0x581C0005, // 006F LDCONST R7 K5 0x542200FD, // 0070 LDINT R8 254 @@ -634,34 +628,34 @@ be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */ 0x4C140000, // 0079 LDNIL R5 0x20140805, // 007A NE R5 R4 R5 0x78160008, // 007B JMPF R5 #0085 - 0xB8163E00, // 007C GETNGBL R5 K31 - 0x8C140B1A, // 007D GETMET R5 R5 K26 + 0xB8163A00, // 007C GETNGBL R5 K29 + 0x8C140B18, // 007D GETMET R5 R5 K24 0x601C0013, // 007E GETGBL R7 G19 0x7C1C0000, // 007F CALL R7 0 - 0x981E4803, // 0080 SETIDX R7 K36 R3 - 0x981E4A04, // 0081 SETIDX R7 K37 R4 - 0x88200122, // 0082 GETMBR R8 R0 K34 + 0x981E4403, // 0080 SETIDX R7 K34 R3 + 0x981E4604, // 0081 SETIDX R7 K35 R4 + 0x88200120, // 0082 GETMBR R8 R0 K32 0x7C140600, // 0083 CALL R5 3 0x70020011, // 0084 JMP #0097 0x4C140000, // 0085 LDNIL R5 0x20140605, // 0086 NE R5 R3 R5 0x78160007, // 0087 JMPF R5 #0090 - 0xB8163E00, // 0088 GETNGBL R5 K31 - 0x8C140B1A, // 0089 GETMET R5 R5 K26 + 0xB8163A00, // 0088 GETNGBL R5 K29 + 0x8C140B18, // 0089 GETMET R5 R5 K24 0x601C0013, // 008A GETGBL R7 G19 0x7C1C0000, // 008B CALL R7 0 - 0x981E4803, // 008C SETIDX R7 K36 R3 - 0x88200122, // 008D GETMBR R8 R0 K34 + 0x981E4403, // 008C SETIDX R7 K34 R3 + 0x88200120, // 008D GETMBR R8 R0 K32 0x7C140600, // 008E CALL R5 3 0x70020006, // 008F JMP #0097 - 0xB8163E00, // 0090 GETNGBL R5 K31 - 0x8C140B1A, // 0091 GETMET R5 R5 K26 + 0xB8163A00, // 0090 GETNGBL R5 K29 + 0x8C140B18, // 0091 GETMET R5 R5 K24 0x601C0013, // 0092 GETGBL R7 G19 0x7C1C0000, // 0093 CALL R7 0 - 0x981E4A04, // 0094 SETIDX R7 K37 R4 - 0x88200122, // 0095 GETMBR R8 R0 K34 + 0x981E4604, // 0094 SETIDX R7 K35 R4 + 0x88200120, // 0095 GETMBR R8 R0 K32 0x7C140600, // 0096 CALL R5 3 - 0x8C140120, // 0097 GETMET R5 R0 K32 + 0x8C14011E, // 0097 GETMET R5 R0 K30 0x7C140200, // 0098 CALL R5 1 0x80000000, // 0099 RET 0 }) @@ -690,13 +684,13 @@ be_local_closure(class_Matter_Plugin_Light3_init, /* name */ 0x60100003, // 0000 GETGBL R4 G3 0x5C140000, // 0001 MOVE R5 R0 0x7C100200, // 0002 CALL R4 1 - 0x8C10092E, // 0003 GETMET R4 R4 K46 + 0x8C10092C, // 0003 GETMET R4 R4 K44 0x5C180200, // 0004 MOVE R6 R1 0x5C1C0400, // 0005 MOVE R7 R2 0x5C200600, // 0006 MOVE R8 R3 0x7C100800, // 0007 CALL R4 4 - 0x90022F2F, // 0008 SETMBR R0 K23 K47 - 0x9002332F, // 0009 SETMBR R0 K25 K47 + 0x90022D05, // 0008 SETMBR R0 K22 K5 + 0x90022F05, // 0009 SETMBR R0 K23 K5 0x80000000, // 000A RET 0 }) ) @@ -721,18 +715,18 @@ be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */ be_str_weak(web_values), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0xA4066000, // 0000 IMPORT R1 K48 - 0x8C080131, // 0001 GETMET R2 R0 K49 + 0xA4065A00, // 0000 IMPORT R1 K45 + 0x8C08012E, // 0001 GETMET R2 R0 K46 0x7C080200, // 0002 CALL R2 1 - 0x8C080332, // 0003 GETMET R2 R1 K50 + 0x8C08032F, // 0003 GETMET R2 R1 K47 0x60100018, // 0004 GETGBL R4 G24 - 0x58140033, // 0005 LDCONST R5 K51 - 0x8C180134, // 0006 GETMET R6 R0 K52 - 0x88200135, // 0007 GETMBR R8 R0 K53 + 0x58140030, // 0005 LDCONST R5 K48 + 0x8C180131, // 0006 GETMET R6 R0 K49 + 0x88200132, // 0007 GETMBR R8 R0 K50 0x7C180400, // 0008 CALL R6 2 - 0x8C1C0136, // 0009 GETMET R7 R0 K54 + 0x8C1C0133, // 0009 GETMET R7 R0 K51 0x7C1C0200, // 000A CALL R7 1 - 0x8C200137, // 000B GETMET R8 R0 K55 + 0x8C200134, // 000B GETMET R8 R0 K52 0x7C200200, // 000C CALL R8 1 0x7C100800, // 000D CALL R4 4 0x7C080400, // 000E CALL R2 2 @@ -763,72 +757,72 @@ be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C072C, // 0003 GETMET R3 R3 K44 + 0x8C0C072A, // 0003 GETMET R3 R3 K42 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 0x540E000A, // 0007 LDINT R3 11 0x1C0C0403, // 0008 EQ R3 R2 R3 0x780E003A, // 0009 JMPF R3 #0045 - 0x8C0C0323, // 000A GETMET R3 R1 K35 - 0x58140038, // 000B LDCONST R5 K56 + 0x8C0C0321, // 000A GETMET R3 R1 K33 + 0x58140035, // 000B LDCONST R5 K53 0x7C0C0400, // 000C CALL R3 2 0x780E0036, // 000D JMPF R3 #0045 - 0xA4127200, // 000E IMPORT R4 K57 - 0x8C14093A, // 000F GETMET R5 R4 K58 + 0xA4126C00, // 000E IMPORT R4 K54 + 0x8C140937, // 000F GETMET R5 R4 K55 0x5C1C0600, // 0010 MOVE R7 R3 - 0x5820003B, // 0011 LDCONST R8 K59 + 0x58200038, // 0011 LDCONST R8 K56 0x7C140600, // 0012 CALL R5 3 0x60180009, // 0013 GETGBL R6 G9 - 0x941C0B3C, // 0014 GETIDX R7 R5 K60 + 0x941C0B05, // 0014 GETIDX R7 R5 K5 0x7C180200, // 0015 CALL R6 1 0x601C0009, // 0016 GETGBL R7 G9 - 0x94200B3D, // 0017 GETIDX R8 R5 K61 + 0x94200B0C, // 0017 GETIDX R8 R5 K12 0x7C1C0200, // 0018 CALL R7 1 0x4C200000, // 0019 LDNIL R8 0x20200C08, // 001A NE R8 R6 R8 0x78220009, // 001B JMPF R8 #0026 - 0xB8224C00, // 001C GETNGBL R8 K38 - 0x8C201127, // 001D GETMET R8 R8 K39 + 0xB8224800, // 001C GETNGBL R8 K36 + 0x8C201125, // 001D GETMET R8 R8 K37 0x5C280C00, // 001E MOVE R10 R6 - 0x582C003C, // 001F LDCONST R11 K60 + 0x582C0005, // 001F LDCONST R11 K5 0x54320167, // 0020 LDINT R12 360 - 0x5834003C, // 0021 LDCONST R13 K60 + 0x58340005, // 0021 LDCONST R13 K5 0x543A00FD, // 0022 LDINT R14 254 0x7C200C00, // 0023 CALL R8 6 0x5C181000, // 0024 MOVE R6 R8 0x70020000, // 0025 JMP #0027 - 0x88180117, // 0026 GETMBR R6 R0 K23 + 0x88180116, // 0026 GETMBR R6 R0 K22 0x4C200000, // 0027 LDNIL R8 0x20200E08, // 0028 NE R8 R7 R8 0x78220009, // 0029 JMPF R8 #0034 - 0xB8224C00, // 002A GETNGBL R8 K38 - 0x8C201127, // 002B GETMET R8 R8 K39 + 0xB8224800, // 002A GETNGBL R8 K36 + 0x8C201125, // 002B GETMET R8 R8 K37 0x5C280E00, // 002C MOVE R10 R7 - 0x582C003C, // 002D LDCONST R11 K60 + 0x582C0005, // 002D LDCONST R11 K5 0x54320063, // 002E LDINT R12 100 - 0x5834003C, // 002F LDCONST R13 K60 + 0x58340005, // 002F LDCONST R13 K5 0x543A00FD, // 0030 LDINT R14 254 0x7C200C00, // 0031 CALL R8 6 0x5C1C1000, // 0032 MOVE R7 R8 0x70020000, // 0033 JMP #0035 - 0x881C0119, // 0034 GETMBR R7 R0 K25 - 0x88200117, // 0035 GETMBR R8 R0 K23 + 0x881C0117, // 0034 GETMBR R7 R0 K23 + 0x88200116, // 0035 GETMBR R8 R0 K22 0x20200C08, // 0036 NE R8 R6 R8 0x78220004, // 0037 JMPF R8 #003D - 0x8C200128, // 0038 GETMET R8 R0 K40 + 0x8C200126, // 0038 GETMET R8 R0 K38 0x542A02FF, // 0039 LDINT R10 768 - 0x582C003C, // 003A LDCONST R11 K60 + 0x582C0005, // 003A LDCONST R11 K5 0x7C200600, // 003B CALL R8 3 - 0x90022E06, // 003C SETMBR R0 K23 R6 - 0x88200119, // 003D GETMBR R8 R0 K25 + 0x90022C06, // 003C SETMBR R0 K22 R6 + 0x88200117, // 003D GETMBR R8 R0 K23 0x20200E08, // 003E NE R8 R7 R8 0x78220004, // 003F JMPF R8 #0045 - 0x8C200128, // 0040 GETMET R8 R0 K40 + 0x8C200126, // 0040 GETMET R8 R0 K38 0x542A02FF, // 0041 LDINT R10 768 - 0x582C003D, // 0042 LDCONST R11 K61 + 0x582C000C, // 0042 LDCONST R11 K12 0x7C200600, // 0043 CALL R8 3 - 0x90023207, // 0044 SETMBR R0 K25 R7 + 0x90022E07, // 0044 SETMBR R0 K23 R7 0x80000000, // 0045 RET 0 }) ) @@ -853,32 +847,32 @@ be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ be_str_weak(web_value_RGB), &be_const_str_solidified, ( &(const binstruction[45]) { /* code */ - 0x88040117, // 0000 GETMBR R1 R0 K23 + 0x88040116, // 0000 GETMBR R1 R0 K22 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060027, // 0003 JMPF R1 #002C - 0x88040119, // 0004 GETMBR R1 R0 K25 + 0x88040117, // 0004 GETMBR R1 R0 K23 0x4C080000, // 0005 LDNIL R2 0x20040202, // 0006 NE R1 R1 R2 0x78060023, // 0007 JMPF R1 #002C - 0xB8067C00, // 0008 GETNGBL R1 K62 - 0x5808003F, // 0009 LDCONST R2 K63 + 0xB8067200, // 0008 GETNGBL R1 K57 + 0x5808000E, // 0009 LDCONST R2 K14 0x7C040200, // 000A CALL R1 1 - 0x8C080340, // 000B GETMET R2 R1 K64 + 0x8C08033A, // 000B GETMET R2 R1 K58 0x541200FE, // 000C LDINT R4 255 0x7C080400, // 000D CALL R2 2 - 0x8C080341, // 000E GETMET R2 R1 K65 - 0xB8124C00, // 000F GETNGBL R4 K38 - 0x8C100927, // 0010 GETMET R4 R4 K39 - 0x88180117, // 0011 GETMBR R6 R0 K23 + 0x8C08033B, // 000E GETMET R2 R1 K59 + 0xB8124800, // 000F GETNGBL R4 K36 + 0x8C100925, // 0010 GETMET R4 R4 K37 + 0x88180116, // 0011 GETMBR R6 R0 K22 0x581C0005, // 0012 LDCONST R7 K5 0x542200FD, // 0013 LDINT R8 254 0x58240005, // 0014 LDCONST R9 K5 0x542A0167, // 0015 LDINT R10 360 0x7C100C00, // 0016 CALL R4 6 - 0xB8164C00, // 0017 GETNGBL R5 K38 - 0x8C140B27, // 0018 GETMET R5 R5 K39 - 0x881C0119, // 0019 GETMBR R7 R0 K25 + 0xB8164800, // 0017 GETNGBL R5 K36 + 0x8C140B25, // 0018 GETMET R5 R5 K37 + 0x881C0117, // 0019 GETMBR R7 R0 K23 0x58200005, // 001A LDCONST R8 K5 0x542600FD, // 001B LDINT R9 254 0x58280005, // 001C LDCONST R10 K5 @@ -886,18 +880,18 @@ be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */ 0x7C140C00, // 001E CALL R5 6 0x7C080600, // 001F CALL R2 3 0x60080018, // 0020 GETGBL R2 G24 - 0x580C0042, // 0021 LDCONST R3 K66 - 0x88100343, // 0022 GETMBR R4 R1 K67 - 0x88140344, // 0023 GETMBR R5 R1 K68 - 0x88180345, // 0024 GETMBR R6 R1 K69 + 0x580C003C, // 0021 LDCONST R3 K60 + 0x8810033D, // 0022 GETMBR R4 R1 K61 + 0x8814033E, // 0023 GETMBR R5 R1 K62 + 0x8818033F, // 0024 GETMBR R6 R1 K63 0x7C080800, // 0025 CALL R2 4 0x600C0018, // 0026 GETGBL R3 G24 - 0x58100046, // 0027 LDCONST R4 K70 + 0x58100040, // 0027 LDCONST R4 K64 0x5C140400, // 0028 MOVE R5 R2 0x5C180400, // 0029 MOVE R6 R2 0x7C0C0600, // 002A CALL R3 3 0x80040600, // 002B RET 1 R3 - 0x80068E00, // 002C RET 1 K71 + 0x80068200, // 002C RET 1 K65 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h index 00ec70cf8..6463ac2ab 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Profiler' ktab size: 20, total: 43 (saved 184 bytes) -static const bvalue be_ktab_class_Matter_Profiler[20] = { +// compact class 'Matter_Profiler' ktab size: 18, total: 43 (saved 200 bytes) +static const bvalue be_ktab_class_Matter_Profiler[18] = { /* K0 */ be_nested_str_weak(active), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(PREALLOCATED), @@ -20,11 +20,9 @@ static const bvalue be_ktab_class_Matter_Profiler[20] = { /* K12 */ be_nested_str_weak(allocs), /* K13 */ be_nested_str_weak(reallocs), /* K14 */ be_nested_str_weak(debug), - /* K15 */ be_const_int(1), - /* K16 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E), - /* K17 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), + /* K15 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E), + /* K16 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A), + /* K17 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27), }; @@ -201,7 +199,7 @@ be_local_closure(class_Matter_Profiler_log, /* name */ 0x7C140200, // 0016 CALL R5 1 0x98100605, // 0017 SETIDX R4 R3 R5 0x88100106, // 0018 GETMBR R4 R0 K6 - 0x0010090F, // 0019 ADD R4 R4 K15 + 0x00100905, // 0019 ADD R4 R4 K5 0x90020C04, // 001A SETMBR R0 K6 R4 0x80000000, // 001B RET 0 }) @@ -231,10 +229,10 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 0x8C080109, // 0003 GETMET R2 R0 K9 - 0x58100010, // 0004 LDCONST R4 K16 + 0x5810000F, // 0004 LDCONST R4 K15 0x7C080400, // 0005 CALL R2 2 0xB80A1200, // 0006 GETNGBL R2 K9 - 0x580C0011, // 0007 LDCONST R3 K17 + 0x580C0010, // 0007 LDCONST R3 K16 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 0x88080103, // 000A GETMBR R2 R0 K3 @@ -243,13 +241,13 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ 0x940C0701, // 000D GETIDX R3 R3 K1 0x8810010D, // 000E GETMBR R4 R0 K13 0x94100901, // 000F GETIDX R4 R4 K1 - 0x58140012, // 0010 LDCONST R5 K18 + 0x58140005, // 0010 LDCONST R5 K5 0x88180106, // 0011 GETMBR R6 R0 K6 0x14180A06, // 0012 LT R6 R5 R6 0x781A000F, // 0013 JMPF R6 #0024 0xB81A1200, // 0014 GETNGBL R6 K9 0x601C0018, // 0015 GETGBL R7 G24 - 0x58200013, // 0016 LDCONST R8 K19 + 0x58200011, // 0016 LDCONST R8 K17 0x88240103, // 0017 GETMBR R9 R0 K3 0x94241205, // 0018 GETIDX R9 R9 R5 0x04241202, // 0019 SUB R9 R9 R2 @@ -261,7 +259,7 @@ be_local_closure(class_Matter_Profiler_dump, /* name */ 0x7C1C0800, // 001F CALL R7 4 0x5C200200, // 0020 MOVE R8 R1 0x7C180400, // 0021 CALL R6 2 - 0x00140B12, // 0022 ADD R5 R5 K18 + 0x00140B05, // 0022 ADD R5 R5 K5 0x7001FFEC, // 0023 JMP #0011 0x80000000, // 0024 RET 0 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index 40e3fdaa6..137fd7b68 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_Session; -// compact class 'Matter_Session' ktab size: 114, total: 196 (saved 656 bytes) -static const bvalue be_ktab_class_Matter_Session[114] = { +// compact class 'Matter_Session' ktab size: 109, total: 196 (saved 696 bytes) +static const bvalue be_ktab_class_Matter_Session[109] = { /* K0 */ be_nested_str_weak(_fabric), /* K1 */ be_nested_str_weak(device_id), /* K2 */ be_nested_str_weak(log), @@ -67,59 +67,54 @@ static const bvalue be_ktab_class_Matter_Session[114] = { /* K58 */ be_nested_str_weak(persist_pre), /* K59 */ be_nested_str_weak(members), /* K60 */ be_nested_str_weak(function), - /* K61 */ be_const_int(0), - /* K62 */ be_nested_str_weak(_), - /* K63 */ be_nested_str_weak(push), - /* K64 */ be_nested_str_weak(stop_iteration), - /* K65 */ be_nested_str_weak(sort), - /* K66 */ be_nested_str_weak(_X24_X24), - /* K67 */ be_nested_str_weak(tob64), - /* K68 */ be_nested_str_weak(instance), - /* K69 */ be_nested_str_weak(_X25s_X3A_X25s), - /* K70 */ be_nested_str_weak(dump), - /* K71 */ be_nested_str_weak(persist_post), - /* K72 */ be_nested_str_weak(_X7B), - /* K73 */ be_nested_str_weak(concat), - /* K74 */ be_nested_str_weak(_X2C), - /* K75 */ be_nested_str_weak(_X7D), - /* K76 */ be_nested_str_weak(__future_local_session_id), - /* K77 */ be_nested_str_weak(__future_initiator_session_id), - /* K78 */ be_nested_str_weak(reset), - /* K79 */ be_const_int(0), - /* K80 */ be_nested_str_weak(_i2r_privacy), - /* K81 */ be_nested_str_weak(attestation_challenge), - /* K82 */ be_const_int(1), - /* K83 */ be_nested_str_weak(HKDF_SHA256), - /* K84 */ be_nested_str_weak(derive), - /* K85 */ be_nested_str_weak(get_i2r), - /* K86 */ be_nested_str_weak(fromstring), - /* K87 */ be_nested_str_weak(PrivacyKey), - /* K88 */ be_const_class(be_class_Matter_Session), - /* K89 */ be_nested_str_weak(Session), - /* K90 */ be_nested_str_weak(keys), - /* K91 */ be_nested_str_weak(find), - /* K92 */ be_nested_str_weak(0x), - /* K93 */ be_nested_str_weak(set), - /* K94 */ be_nested_str_weak(fromhex), - /* K95 */ be_const_int(2), - /* K96 */ be_const_int(2147483647), - /* K97 */ be_nested_str_weak(fromb64), - /* K98 */ be_nested_str_weak(hydrate_post), - /* K99 */ be_nested_str_weak(save_fabrics), - /* K100 */ be_nested_str_weak(admin_subject), - /* K101 */ be_nested_str_weak(ipk_epoch_key), - /* K102 */ be_nested_str_weak(fabric_compressed), - /* K103 */ be_nested_str_weak(created), - /* K104 */ be_nested_str_weak(EC_P256), - /* K105 */ be_nested_str_weak(public_key), - /* K106 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200), - /* K107 */ be_nested_str_weak(A000), - /* K108 */ be_nested_str_weak(300C06082A8648CE3D0403020500), - /* K109 */ be_nested_str_weak(ecdsa_sign_sha256_asn1), - /* K110 */ be_nested_str_weak(add), - /* K111 */ be_const_int(3), - /* K112 */ be_const_int(1), - /* K113 */ be_nested_str_weak(get_ipk_group_key), + /* K61 */ be_nested_str_weak(_), + /* K62 */ be_nested_str_weak(push), + /* K63 */ be_nested_str_weak(stop_iteration), + /* K64 */ be_nested_str_weak(sort), + /* K65 */ be_nested_str_weak(_X24_X24), + /* K66 */ be_nested_str_weak(tob64), + /* K67 */ be_nested_str_weak(instance), + /* K68 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K69 */ be_nested_str_weak(dump), + /* K70 */ be_nested_str_weak(persist_post), + /* K71 */ be_nested_str_weak(_X7B), + /* K72 */ be_nested_str_weak(concat), + /* K73 */ be_nested_str_weak(_X2C), + /* K74 */ be_nested_str_weak(_X7D), + /* K75 */ be_nested_str_weak(__future_local_session_id), + /* K76 */ be_nested_str_weak(__future_initiator_session_id), + /* K77 */ be_nested_str_weak(reset), + /* K78 */ be_nested_str_weak(_i2r_privacy), + /* K79 */ be_nested_str_weak(attestation_challenge), + /* K80 */ be_const_int(1), + /* K81 */ be_nested_str_weak(HKDF_SHA256), + /* K82 */ be_nested_str_weak(derive), + /* K83 */ be_nested_str_weak(get_i2r), + /* K84 */ be_nested_str_weak(fromstring), + /* K85 */ be_nested_str_weak(PrivacyKey), + /* K86 */ be_const_class(be_class_Matter_Session), + /* K87 */ be_nested_str_weak(Session), + /* K88 */ be_nested_str_weak(keys), + /* K89 */ be_nested_str_weak(find), + /* K90 */ be_nested_str_weak(0x), + /* K91 */ be_nested_str_weak(set), + /* K92 */ be_nested_str_weak(fromhex), + /* K93 */ be_const_int(2147483647), + /* K94 */ be_nested_str_weak(fromb64), + /* K95 */ be_nested_str_weak(hydrate_post), + /* K96 */ be_nested_str_weak(save_fabrics), + /* K97 */ be_nested_str_weak(admin_subject), + /* K98 */ be_nested_str_weak(ipk_epoch_key), + /* K99 */ be_nested_str_weak(fabric_compressed), + /* K100 */ be_nested_str_weak(created), + /* K101 */ be_nested_str_weak(EC_P256), + /* K102 */ be_nested_str_weak(public_key), + /* K103 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200), + /* K104 */ be_nested_str_weak(A000), + /* K105 */ be_nested_str_weak(300C06082A8648CE3D0403020500), + /* K106 */ be_nested_str_weak(ecdsa_sign_sha256_asn1), + /* K107 */ be_nested_str_weak(add), + /* K108 */ be_nested_str_weak(get_ipk_group_key), }; @@ -962,18 +957,18 @@ be_local_closure(class_Matter_Session_tojson, /* name */ 0x7C1C0200, // 0014 CALL R7 1 0x201C0F3C, // 0015 NE R7 R7 K60 0x781E0005, // 0016 JMPF R7 #001D - 0x941C0B3D, // 0017 GETIDX R7 R5 K61 - 0x201C0F3E, // 0018 NE R7 R7 K62 + 0x941C0B0D, // 0017 GETIDX R7 R5 K13 + 0x201C0F3D, // 0018 NE R7 R7 K61 0x781E0002, // 0019 JMPF R7 #001D - 0x8C1C073F, // 001A GETMET R7 R3 K63 + 0x8C1C073E, // 001A GETMET R7 R3 K62 0x5C240A00, // 001B MOVE R9 R5 0x7C1C0400, // 001C CALL R7 2 0x7001FFED, // 001D JMP #000C - 0x58100040, // 001E LDCONST R4 K64 + 0x5810003F, // 001E LDCONST R4 K63 0xAC100200, // 001F CATCH R4 1 0 0xB0080000, // 0020 RAISE 2 R0 R0 0xB8122000, // 0021 GETNGBL R4 K16 - 0x8C100941, // 0022 GETMET R4 R4 K65 + 0x8C100940, // 0022 GETMET R4 R4 K64 0x5C180600, // 0023 MOVE R6 R3 0x7C100400, // 0024 CALL R4 2 0x5C0C0800, // 0025 MOVE R3 R4 @@ -998,41 +993,41 @@ be_local_closure(class_Matter_Session_tojson, /* name */ 0x60280015, // 0038 GETGBL R10 G21 0x7C200400, // 0039 CALL R8 2 0x78220004, // 003A JMPF R8 #0040 - 0x8C200F43, // 003B GETMET R8 R7 K67 + 0x8C200F42, // 003B GETMET R8 R7 K66 0x7C200200, // 003C CALL R8 1 - 0x00228408, // 003D ADD R8 K66 R8 + 0x00228208, // 003D ADD R8 K65 R8 0x5C1C1000, // 003E MOVE R7 R8 0x70020005, // 003F JMP #0046 0x60200004, // 0040 GETGBL R8 G4 0x5C240E00, // 0041 MOVE R9 R7 0x7C200200, // 0042 CALL R8 1 - 0x1C201144, // 0043 EQ R8 R8 K68 + 0x1C201143, // 0043 EQ R8 R8 K67 0x78220000, // 0044 JMPF R8 #0046 0x7001FFE5, // 0045 JMP #002C - 0x8C20093F, // 0046 GETMET R8 R4 K63 + 0x8C20093E, // 0046 GETMET R8 R4 K62 0x60280018, // 0047 GETGBL R10 G24 - 0x582C0045, // 0048 LDCONST R11 K69 - 0x8C300346, // 0049 GETMET R12 R1 K70 + 0x582C0044, // 0048 LDCONST R11 K68 + 0x8C300345, // 0049 GETMET R12 R1 K69 0x60380008, // 004A GETGBL R14 G8 0x5C3C0C00, // 004B MOVE R15 R6 0x7C380200, // 004C CALL R14 1 0x7C300400, // 004D CALL R12 2 - 0x8C340346, // 004E GETMET R13 R1 K70 + 0x8C340345, // 004E GETMET R13 R1 K69 0x5C3C0E00, // 004F MOVE R15 R7 0x7C340400, // 0050 CALL R13 2 0x7C280600, // 0051 CALL R10 3 0x7C200400, // 0052 CALL R8 2 0x7001FFD7, // 0053 JMP #002C - 0x58140040, // 0054 LDCONST R5 K64 + 0x5814003F, // 0054 LDCONST R5 K63 0xAC140200, // 0055 CATCH R5 1 0 0xB0080000, // 0056 RAISE 2 R0 R0 - 0x8C140147, // 0057 GETMET R5 R0 K71 + 0x8C140146, // 0057 GETMET R5 R0 K70 0x7C140200, // 0058 CALL R5 1 - 0x8C140949, // 0059 GETMET R5 R4 K73 - 0x581C004A, // 005A LDCONST R7 K74 + 0x8C140948, // 0059 GETMET R5 R4 K72 + 0x581C0049, // 005A LDCONST R7 K73 0x7C140400, // 005B CALL R5 2 - 0x00169005, // 005C ADD R5 K72 R5 - 0x00140B4B, // 005D ADD R5 R5 K75 + 0x00168E05, // 005C ADD R5 K71 R5 + 0x00140B4A, // 005D ADD R5 R5 K74 0x80040A00, // 005E RET 1 R5 }) ) @@ -1057,17 +1052,17 @@ be_local_closure(class_Matter_Session_close, /* name */ be_str_weak(close), &be_const_str_solidified, ( &(const binstruction[59]) { /* code */ - 0x8804014C, // 0000 GETMBR R1 R0 K76 + 0x8804014B, // 0000 GETMBR R1 R0 K75 0x90020801, // 0001 SETMBR R0 K4 R1 - 0x8804014D, // 0002 GETMBR R1 R0 K77 + 0x8804014C, // 0002 GETMBR R1 R0 K76 0x90021C01, // 0003 SETMBR R0 K14 R1 0x88040112, // 0004 GETMBR R1 R0 K18 - 0x8C04034E, // 0005 GETMET R1 R1 K78 + 0x8C04034D, // 0005 GETMET R1 R1 K77 0x7C040200, // 0006 CALL R1 1 0x8804010F, // 0007 GETMBR R1 R0 K15 - 0x8C04034E, // 0008 GETMET R1 R1 K78 + 0x8C04034D, // 0008 GETMET R1 R1 K77 0x7C040200, // 0009 CALL R1 1 - 0x9002274F, // 000A SETMBR R0 K19 K79 + 0x9002270D, // 000A SETMBR R0 K19 K13 0x8804010F, // 000B GETMBR R1 R0 K15 0x8C040315, // 000C GETMET R1 R1 K21 0x7C040200, // 000D CALL R1 1 @@ -1075,11 +1070,11 @@ be_local_closure(class_Matter_Session_close, /* name */ 0x4C040000, // 000F LDNIL R1 0x90024001, // 0010 SETMBR R0 K32 R1 0x4C040000, // 0011 LDNIL R1 - 0x9002A001, // 0012 SETMBR R0 K80 R1 + 0x90029C01, // 0012 SETMBR R0 K78 R1 0x4C040000, // 0013 LDNIL R1 0x90024A01, // 0014 SETMBR R0 K37 R1 0x4C040000, // 0015 LDNIL R1 - 0x9002A201, // 0016 SETMBR R0 K81 R1 + 0x90029E01, // 0016 SETMBR R0 K79 R1 0xA4067200, // 0017 IMPORT R1 K57 0x60080010, // 0018 GETGBL R2 G16 0x8C0C033B, // 0019 GETMET R3 R1 K59 @@ -1101,18 +1096,18 @@ be_local_closure(class_Matter_Session_close, /* name */ 0x60140004, // 0029 GETGBL R5 G4 0x5C180800, // 002A MOVE R6 R4 0x7C140200, // 002B CALL R5 1 - 0x20140B44, // 002C NE R5 R5 K68 + 0x20140B43, // 002C NE R5 R5 K67 0x78160007, // 002D JMPF R5 #0036 - 0x9414074F, // 002E GETIDX R5 R3 K79 - 0x1C140B3E, // 002F EQ R5 R5 K62 + 0x9414070D, // 002E GETIDX R5 R3 K13 + 0x1C140B3D, // 002F EQ R5 R5 K61 0x78160004, // 0030 JMPF R5 #0036 - 0x94140752, // 0031 GETIDX R5 R3 K82 - 0x1C140B3E, // 0032 EQ R5 R5 K62 + 0x94140750, // 0031 GETIDX R5 R3 K80 + 0x1C140B3D, // 0032 EQ R5 R5 K61 0x78160001, // 0033 JMPF R5 #0036 0x4C140000, // 0034 LDNIL R5 0x90000605, // 0035 SETMBR R0 R3 R5 0x7001FFE6, // 0036 JMP #001E - 0x58080040, // 0037 LDCONST R2 K64 + 0x5808003F, // 0037 LDCONST R2 K63 0xAC080200, // 0038 CATCH R2 1 0 0xB0080000, // 0039 RAISE 2 R0 R0 0x80000000, // 003A RET 0 @@ -1139,7 +1134,7 @@ be_local_closure(class_Matter_Session_get_ac, /* name */ be_str_weak(get_ac), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040151, // 0000 GETMBR R1 R0 K81 + 0x8804014F, // 0000 GETMBR R1 R0 K79 0x80040200, // 0001 RET 1 R1 }) ) @@ -1189,27 +1184,27 @@ be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */ be_str_weak(get_i2r_privacy), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x88040150, // 0000 GETMBR R1 R0 K80 + 0x8804014E, // 0000 GETMBR R1 R0 K78 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 0x7806000F, // 0003 JMPF R1 #0014 0xA4061600, // 0004 IMPORT R1 K11 - 0x8C080353, // 0005 GETMET R2 R1 K83 + 0x8C080351, // 0005 GETMET R2 R1 K81 0x7C080200, // 0006 CALL R2 1 - 0x8C080554, // 0007 GETMET R2 R2 K84 - 0x8C100155, // 0008 GETMET R4 R0 K85 + 0x8C080552, // 0007 GETMET R2 R2 K82 + 0x8C100153, // 0008 GETMET R4 R0 K83 0x7C100200, // 0009 CALL R4 1 0x60140015, // 000A GETGBL R5 G21 0x7C140000, // 000B CALL R5 0 0x60180015, // 000C GETGBL R6 G21 0x7C180000, // 000D CALL R6 0 - 0x8C180D56, // 000E GETMET R6 R6 K86 - 0x58200057, // 000F LDCONST R8 K87 + 0x8C180D54, // 000E GETMET R6 R6 K84 + 0x58200055, // 000F LDCONST R8 K85 0x7C180400, // 0010 CALL R6 2 0x541E000F, // 0011 LDINT R7 16 0x7C080A00, // 0012 CALL R2 5 - 0x9002A002, // 0013 SETMBR R0 K80 R2 - 0x88040150, // 0014 GETMBR R1 R0 K80 + 0x90029C02, // 0013 SETMBR R0 K78 R2 + 0x8804014E, // 0014 GETMBR R1 R0 K78 0x80040200, // 0015 RET 1 R1 }) ) @@ -1234,18 +1229,18 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ be_str_weak(fromjson), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ - 0x580C0058, // 0000 LDCONST R3 K88 + 0x580C0056, // 0000 LDCONST R3 K86 0xA4126800, // 0001 IMPORT R4 K52 0xA4167200, // 0002 IMPORT R5 K57 0xB81A2000, // 0003 GETNGBL R6 K16 - 0x8C180D59, // 0004 GETMET R6 R6 K89 + 0x8C180D57, // 0004 GETMET R6 R6 K87 0x5C200000, // 0005 MOVE R8 R0 0x4C240000, // 0006 LDNIL R9 0x4C280000, // 0007 LDNIL R10 0x5C2C0400, // 0008 MOVE R11 R2 0x7C180A00, // 0009 CALL R6 5 0x601C0010, // 000A GETGBL R7 G16 - 0x8C20035A, // 000B GETMET R8 R1 K90 + 0x8C200358, // 000B GETMET R8 R1 K88 0x7C200200, // 000C CALL R8 1 0x7C1C0200, // 000D CALL R7 1 0xA8020035, // 000E EXBLK 0 #0045 @@ -1257,56 +1252,56 @@ be_local_closure(class_Matter_Session_fromjson, /* name */ 0x7C280200, // 0014 CALL R10 1 0x1C281534, // 0015 EQ R10 R10 K52 0x782A0027, // 0016 JMPF R10 #003F - 0x8C28095B, // 0017 GETMET R10 R4 K91 + 0x8C280959, // 0017 GETMET R10 R4 K89 0x5C301200, // 0018 MOVE R12 R9 - 0x5834005C, // 0019 LDCONST R13 K92 + 0x5834005A, // 0019 LDCONST R13 K90 0x7C280600, // 001A CALL R10 3 - 0x1C28153D, // 001B EQ R10 R10 K61 + 0x1C28150D, // 001B EQ R10 R10 K13 0x782A000A, // 001C JMPF R10 #0028 - 0x8C280B5D, // 001D GETMET R10 R5 K93 + 0x8C280B5B, // 001D GETMET R10 R5 K91 0x5C300C00, // 001E MOVE R12 R6 0x5C341000, // 001F MOVE R13 R8 0x60380015, // 0020 GETGBL R14 G21 0x7C380000, // 0021 CALL R14 0 - 0x8C381D5E, // 0022 GETMET R14 R14 K94 - 0x4042BF60, // 0023 CONNECT R16 K95 K96 + 0x8C381D5C, // 0022 GETMET R14 R14 K92 + 0x4042395D, // 0023 CONNECT R16 K28 K93 0x94401210, // 0024 GETIDX R16 R9 R16 0x7C380400, // 0025 CALL R14 2 0x7C280800, // 0026 CALL R10 4 0x70020015, // 0027 JMP #003E - 0x8C28095B, // 0028 GETMET R10 R4 K91 + 0x8C280959, // 0028 GETMET R10 R4 K89 0x5C301200, // 0029 MOVE R12 R9 - 0x58340042, // 002A LDCONST R13 K66 + 0x58340041, // 002A LDCONST R13 K65 0x7C280600, // 002B CALL R10 3 - 0x1C28153D, // 002C EQ R10 R10 K61 + 0x1C28150D, // 002C EQ R10 R10 K13 0x782A000A, // 002D JMPF R10 #0039 - 0x8C280B5D, // 002E GETMET R10 R5 K93 + 0x8C280B5B, // 002E GETMET R10 R5 K91 0x5C300C00, // 002F MOVE R12 R6 0x5C341000, // 0030 MOVE R13 R8 0x60380015, // 0031 GETGBL R14 G21 0x7C380000, // 0032 CALL R14 0 - 0x8C381D61, // 0033 GETMET R14 R14 K97 - 0x4042BF60, // 0034 CONNECT R16 K95 K96 + 0x8C381D5E, // 0033 GETMET R14 R14 K94 + 0x4042395D, // 0034 CONNECT R16 K28 K93 0x94401210, // 0035 GETIDX R16 R9 R16 0x7C380400, // 0036 CALL R14 2 0x7C280800, // 0037 CALL R10 4 0x70020004, // 0038 JMP #003E - 0x8C280B5D, // 0039 GETMET R10 R5 K93 + 0x8C280B5B, // 0039 GETMET R10 R5 K91 0x5C300C00, // 003A MOVE R12 R6 0x5C341000, // 003B MOVE R13 R8 0x5C381200, // 003C MOVE R14 R9 0x7C280800, // 003D CALL R10 4 0x70020004, // 003E JMP #0044 - 0x8C280B5D, // 003F GETMET R10 R5 K93 + 0x8C280B5B, // 003F GETMET R10 R5 K91 0x5C300C00, // 0040 MOVE R12 R6 0x5C341000, // 0041 MOVE R13 R8 0x5C381200, // 0042 MOVE R14 R9 0x7C280800, // 0043 CALL R10 4 0x7001FFC9, // 0044 JMP #000F - 0x581C0040, // 0045 LDCONST R7 K64 + 0x581C003F, // 0045 LDCONST R7 K63 0xAC1C0200, // 0046 CATCH R7 1 0 0xB0080000, // 0047 RAISE 2 R0 R0 - 0x8C1C0D62, // 0048 GETMET R7 R6 K98 + 0x8C1C0D5F, // 0048 GETMET R7 R6 K95 0x7C1C0200, // 0049 CALL R7 1 0x80040C00, // 004A RET 1 R6 }) @@ -1333,7 +1328,7 @@ be_local_closure(class_Matter_Session_save, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x8C040363, // 0001 GETMET R1 R1 K99 + 0x8C040360, // 0001 GETMET R1 R1 K96 0x7C040200, // 0002 CALL R1 1 0x80000000, // 0003 RET 0 }) @@ -1360,11 +1355,11 @@ be_local_closure(class_Matter_Session_hydrate_post, /* name */ &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ 0x8804010F, // 0000 GETMBR R1 R0 K15 - 0x8C04034E, // 0001 GETMET R1 R1 K78 + 0x8C04034D, // 0001 GETMET R1 R1 K77 0x880C0114, // 0002 GETMBR R3 R0 K20 0x7C040400, // 0003 CALL R1 2 0x88040112, // 0004 GETMBR R1 R0 K18 - 0x8C04034E, // 0005 GETMET R1 R1 K78 + 0x8C04034D, // 0005 GETMET R1 R1 K77 0x880C0113, // 0006 GETMBR R3 R0 K19 0x7C040400, // 0007 CALL R1 2 0x8804010F, // 0008 GETMBR R1 R0 K15 @@ -1402,7 +1397,7 @@ be_local_closure(class_Matter_Session_get_admin_subject, /* name */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040364, // 0003 GETMBR R1 R1 K100 + 0x88040361, // 0003 GETMBR R1 R1 K97 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -1430,7 +1425,7 @@ be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */ &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040365, // 0001 GETMBR R1 R1 K101 + 0x88040362, // 0001 GETMBR R1 R1 K98 0x80040200, // 0002 RET 1 R1 }) ) @@ -1458,7 +1453,7 @@ be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x78060002, // 0001 JMPF R1 #0005 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x88040366, // 0003 GETMBR R1 R1 K102 + 0x88040363, // 0003 GETMBR R1 R1 K99 0x70020000, // 0004 JMP #0006 0x4C040000, // 0005 LDNIL R1 0x80040200, // 0006 RET 1 R1 @@ -1562,10 +1557,10 @@ be_local_closure(class_Matter_Session_set_keys, /* name */ ( &(const binstruction[ 7]) { /* code */ 0x90024001, // 0000 SETMBR R0 K32 R1 0x4C140000, // 0001 LDNIL R5 - 0x9002A005, // 0002 SETMBR R0 K80 R5 + 0x90029C05, // 0002 SETMBR R0 K78 R5 0x90024A02, // 0003 SETMBR R0 K37 R2 - 0x9002A203, // 0004 SETMBR R0 K81 R3 - 0x9002CE04, // 0005 SETMBR R0 K103 R4 + 0x90029E03, // 0004 SETMBR R0 K79 R3 + 0x9002C804, // 0005 SETMBR R0 K100 R4 0x80000000, // 0006 RET 0 }) ) @@ -1593,43 +1588,43 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ 0x8C040136, // 0000 GETMET R1 R0 K54 0x7C040200, // 0001 CALL R1 1 0xA40A1600, // 0002 IMPORT R2 K11 - 0x8C0C0568, // 0003 GETMET R3 R2 K104 + 0x8C0C0565, // 0003 GETMET R3 R2 K101 0x7C0C0200, // 0004 CALL R3 1 - 0x8C100769, // 0005 GETMET R4 R3 K105 + 0x8C100766, // 0005 GETMET R4 R3 K102 0x5C180200, // 0006 MOVE R6 R1 0x7C100400, // 0007 CALL R4 2 0x60140015, // 0008 GETGBL R5 G21 - 0x5818006A, // 0009 LDCONST R6 K106 + 0x58180067, // 0009 LDCONST R6 K103 0x7C140200, // 000A CALL R5 1 0x40180A04, // 000B CONNECT R6 R5 R4 0x60180015, // 000C GETGBL R6 G21 - 0x581C006B, // 000D LDCONST R7 K107 + 0x581C0068, // 000D LDCONST R7 K104 0x7C180200, // 000E CALL R6 1 0x40180A06, // 000F CONNECT R6 R5 R6 0x60180015, // 0010 GETGBL R6 G21 - 0x581C006C, // 0011 LDCONST R7 K108 + 0x581C0069, // 0011 LDCONST R7 K105 0x7C180200, // 0012 CALL R6 1 - 0x8C1C076D, // 0013 GETMET R7 R3 K109 + 0x8C1C076A, // 0013 GETMET R7 R3 K106 0x5C240200, // 0014 MOVE R9 R1 0x5C280A00, // 0015 MOVE R10 R5 0x7C1C0600, // 0016 CALL R7 3 0x60200015, // 0017 GETGBL R8 G21 0x5426007F, // 0018 LDINT R9 128 0x7C200200, // 0019 CALL R8 1 - 0x8C24116E, // 001A GETMET R9 R8 K110 - 0x582C006F, // 001B LDCONST R11 K111 - 0x58300070, // 001C LDCONST R12 K112 + 0x8C24116B, // 001A GETMET R9 R8 K107 + 0x582C0005, // 001B LDCONST R11 K5 + 0x58300050, // 001C LDCONST R12 K80 0x7C240600, // 001D CALL R9 3 - 0x8C24116E, // 001E GETMET R9 R8 K110 + 0x8C24116B, // 001E GETMET R9 R8 K107 0x602C000C, // 001F GETGBL R11 G12 0x5C300E00, // 0020 MOVE R12 R7 0x7C2C0200, // 0021 CALL R11 1 - 0x002C1770, // 0022 ADD R11 R11 K112 - 0x58300070, // 0023 LDCONST R12 K112 + 0x002C1750, // 0022 ADD R11 R11 K80 + 0x58300050, // 0023 LDCONST R12 K80 0x7C240600, // 0024 CALL R9 3 - 0x8C24116E, // 0025 GETMET R9 R8 K110 + 0x8C24116B, // 0025 GETMET R9 R8 K107 0x582C000D, // 0026 LDCONST R11 K13 - 0x58300070, // 0027 LDCONST R12 K112 + 0x58300050, // 0027 LDCONST R12 K80 0x7C240600, // 0028 CALL R9 3 0x40241007, // 0029 CONNECT R9 R8 R7 0x6024000C, // 002A GETGBL R9 G12 @@ -1646,18 +1641,18 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */ 0x60280015, // 0035 GETGBL R10 G21 0x542E00CF, // 0036 LDINT R11 208 0x7C280200, // 0037 CALL R10 1 - 0x8C2C156E, // 0038 GETMET R11 R10 K110 + 0x8C2C156B, // 0038 GETMET R11 R10 K107 0x5436002F, // 0039 LDINT R13 48 - 0x58380070, // 003A LDCONST R14 K112 + 0x58380050, // 003A LDCONST R14 K80 0x7C2C0600, // 003B CALL R11 3 - 0x8C2C156E, // 003C GETMET R11 R10 K110 + 0x8C2C156B, // 003C GETMET R11 R10 K107 0x54360080, // 003D LDINT R13 129 - 0x58380070, // 003E LDCONST R14 K112 + 0x58380050, // 003E LDCONST R14 K80 0x7C2C0600, // 003F CALL R11 3 - 0x8C2C156E, // 0040 GETMET R11 R10 K110 + 0x8C2C156B, // 0040 GETMET R11 R10 K107 0x543600FE, // 0041 LDINT R13 255 0x2C34120D, // 0042 AND R13 R9 R13 - 0x58380070, // 0043 LDCONST R14 K112 + 0x58380050, // 0043 LDCONST R14 K80 0x7C2C0600, // 0044 CALL R11 3 0x402C1405, // 0045 CONNECT R11 R10 R5 0x402C1406, // 0046 CONNECT R11 R10 R6 @@ -1687,7 +1682,7 @@ be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040371, // 0001 GETMET R1 R1 K113 + 0x8C04036C, // 0001 GETMET R1 R1 K108 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h index 08dc68206..1b4e7c44b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Session_Store' ktab size: 76, total: 155 (saved 632 bytes) -static const bvalue be_ktab_class_Matter_Session_Store[76] = { +// compact class 'Matter_Session_Store' ktab size: 73, total: 155 (saved 656 bytes) +static const bvalue be_ktab_class_Matter_Session_Store[73] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(sessions), /* K2 */ be_nested_str_weak(remove), @@ -41,46 +41,43 @@ static const bvalue be_ktab_class_Matter_Session_Store[76] = { /* K33 */ be_nested_str_weak(_X7C), /* K34 */ be_nested_str_weak(get_device_id), /* K35 */ be_nested_str_weak(get_fabric_id), - /* K36 */ be_const_int(1), - /* K37 */ be_nested_str_weak(active_fabrics), - /* K38 */ be_nested_str_weak(get_fabric_index), - /* K39 */ be_nested_str_weak(remove_expired), - /* K40 */ be_nested_str_weak(persistables), - /* K41 */ be_nested_str_weak(count_persistables), - /* K42 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s), - /* K43 */ be_nested_str_weak(resumption_id), - /* K44 */ be_nested_str_weak(shared_secret), - /* K45 */ be_nested_str_weak(update), - /* K46 */ be_nested_str_weak(set_expire_in_seconds), - /* K47 */ be_nested_str_weak(get_session_by_source_node_id), - /* K48 */ be_nested_str_weak(_source_node_id), - /* K49 */ be_nested_str_weak(local_session_id), - /* K50 */ be_nested_str_weak(device), - /* K51 */ be_nested_str_weak(every_second), - /* K52 */ be_nested_str_weak(fabric_id), - /* K53 */ be_nested_str_weak(device_id), - /* K54 */ be_nested_str_weak(value_error), - /* K55 */ be_nested_str_weak(must_X20be_X20of_X20class_X20matter_X2EFabric), - /* K56 */ be_nested_str_weak(remove_redundant_fabric), - /* K57 */ be_const_int(1), - /* K58 */ be_nested_str_weak(fabric_index), - /* K59 */ be_nested_str_weak(int), - /* K60 */ be_nested_str_weak(path), - /* K61 */ be_nested_str_weak(_FABRICS_TEMP), - /* K62 */ be_nested_str_weak(w), - /* K63 */ be_nested_str_weak(write), - /* K64 */ be_nested_str_weak(_X5B), - /* K65 */ be_nested_str_weak(_X2C), - /* K66 */ be_nested_str_weak(writejson), - /* K67 */ be_nested_str_weak(_X5D), - /* K68 */ be_nested_str_weak(rename), - /* K69 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), - /* K70 */ be_nested_str_weak(event_fabrics_saved), - /* K71 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), - /* K72 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K73 */ be_nested_str_weak(remove_session), - /* K74 */ be_nested_str_weak(_fabric), - /* K75 */ be_const_int(1), + /* K36 */ be_nested_str_weak(active_fabrics), + /* K37 */ be_nested_str_weak(get_fabric_index), + /* K38 */ be_nested_str_weak(remove_expired), + /* K39 */ be_nested_str_weak(persistables), + /* K40 */ be_nested_str_weak(count_persistables), + /* K41 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s), + /* K42 */ be_nested_str_weak(resumption_id), + /* K43 */ be_nested_str_weak(shared_secret), + /* K44 */ be_nested_str_weak(update), + /* K45 */ be_nested_str_weak(set_expire_in_seconds), + /* K46 */ be_nested_str_weak(get_session_by_source_node_id), + /* K47 */ be_nested_str_weak(_source_node_id), + /* K48 */ be_nested_str_weak(local_session_id), + /* K49 */ be_nested_str_weak(device), + /* K50 */ be_nested_str_weak(every_second), + /* K51 */ be_nested_str_weak(fabric_id), + /* K52 */ be_nested_str_weak(device_id), + /* K53 */ be_nested_str_weak(value_error), + /* K54 */ be_nested_str_weak(must_X20be_X20of_X20class_X20matter_X2EFabric), + /* K55 */ be_nested_str_weak(remove_redundant_fabric), + /* K56 */ be_nested_str_weak(fabric_index), + /* K57 */ be_nested_str_weak(int), + /* K58 */ be_nested_str_weak(path), + /* K59 */ be_nested_str_weak(_FABRICS_TEMP), + /* K60 */ be_nested_str_weak(w), + /* K61 */ be_nested_str_weak(write), + /* K62 */ be_nested_str_weak(_X5B), + /* K63 */ be_nested_str_weak(_X2C), + /* K64 */ be_nested_str_weak(writejson), + /* K65 */ be_nested_str_weak(_X5D), + /* K66 */ be_nested_str_weak(rename), + /* K67 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29), + /* K68 */ be_nested_str_weak(event_fabrics_saved), + /* K69 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed), + /* K70 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K71 */ be_nested_str_weak(remove_session), + /* K72 */ be_nested_str_weak(_fabric), }; @@ -437,7 +434,7 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */ 0x8C10031C, // 0010 GETMET R4 R1 K28 0x5C180600, // 0011 MOVE R6 R3 0x7C100400, // 0012 CALL R4 2 - 0x00080524, // 0013 ADD R2 R2 K36 + 0x00080503, // 0013 ADD R2 R2 K3 0x7001FFED, // 0014 JMP #0003 0x80040200, // 0015 RET 1 R1 }) @@ -464,13 +461,13 @@ be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */ &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x8C0C0125, // 0001 GETMET R3 R0 K37 + 0x8C0C0124, // 0001 GETMET R3 R0 K36 0x7C0C0200, // 0002 CALL R3 1 0x7C080200, // 0003 CALL R2 1 0xA8020008, // 0004 EXBLK 0 #000E 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x8C100726, // 0007 GETMET R4 R3 K38 + 0x8C100725, // 0007 GETMET R4 R3 K37 0x7C100200, // 0008 CALL R4 1 0x1C100801, // 0009 EQ R4 R4 R1 0x78120001, // 000A JMPF R4 #000D @@ -505,10 +502,10 @@ be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */ be_str_weak(active_fabrics), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C040127, // 0000 GETMET R1 R0 K39 + 0x8C040126, // 0000 GETMET R1 R0 K38 0x7C040200, // 0001 CALL R1 1 0x8804010B, // 0002 GETMBR R1 R0 K11 - 0x8C040328, // 0003 GETMET R1 R1 K40 + 0x8C040327, // 0003 GETMET R1 R1 K39 0x7C040200, // 0004 CALL R1 1 0x80040200, // 0005 RET 1 R1 }) @@ -562,14 +559,14 @@ be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */ be_str_weak(count_active_fabrics), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x8C040127, // 0000 GETMET R1 R0 K39 + 0x8C040126, // 0000 GETMET R1 R0 K38 0x7C040200, // 0001 CALL R1 1 0x8804010B, // 0002 GETMBR R1 R0 K11 0x4C080000, // 0003 LDNIL R2 0x20040202, // 0004 NE R1 R1 R2 0x78060004, // 0005 JMPF R1 #000B 0x8804010B, // 0006 GETMBR R1 R0 K11 - 0x8C040329, // 0007 GETMET R1 R1 K41 + 0x8C040328, // 0007 GETMET R1 R1 K40 0x7C040200, // 0008 CALL R1 1 0x80040200, // 0009 RET 1 R1 0x70020000, // 000A JMP #000C @@ -612,9 +609,9 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0x94100602, // 000B GETIDX R4 R3 R2 0xB8163A00, // 000C GETNGBL R5 K29 0x60180018, // 000D GETGBL R6 G24 - 0x581C002A, // 000E LDCONST R7 K42 + 0x581C0029, // 000E LDCONST R7 K41 0x60200008, // 000F GETGBL R8 G8 - 0x8824092B, // 0010 GETMBR R9 R4 K43 + 0x8824092A, // 0010 GETMBR R9 R4 K42 0x7C200200, // 0011 CALL R8 1 0x60240008, // 0012 GETGBL R9 G8 0x5C280200, // 0013 MOVE R10 R1 @@ -622,17 +619,17 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* 0x7C180600, // 0015 CALL R6 3 0x541E0003, // 0016 LDINT R7 4 0x7C140400, // 0017 CALL R5 2 - 0x8814092B, // 0018 GETMBR R5 R4 K43 + 0x8814092A, // 0018 GETMBR R5 R4 K42 0x1C140A01, // 0019 EQ R5 R5 R1 0x78160006, // 001A JMPF R5 #0022 - 0x8814092C, // 001B GETMBR R5 R4 K44 + 0x8814092B, // 001B GETMBR R5 R4 K43 0x4C180000, // 001C LDNIL R6 0x20140A06, // 001D NE R5 R5 R6 0x78160002, // 001E JMPF R5 #0022 - 0x8C14092D, // 001F GETMET R5 R4 K45 + 0x8C14092C, // 001F GETMET R5 R4 K44 0x7C140200, // 0020 CALL R5 1 0x80040800, // 0021 RET 1 R4 - 0x00080524, // 0022 ADD R2 R2 K36 + 0x00080503, // 0022 ADD R2 R2 K3 0x7001FFE1, // 0023 JMP #0006 0x80000000, // 0024 RET 0 }) @@ -661,7 +658,7 @@ be_local_closure(class_Matter_Session_Store_add_session, /* name */ 0x4C0C0000, // 0000 LDNIL R3 0x200C0403, // 0001 NE R3 R2 R3 0x780E0002, // 0002 JMPF R3 #0006 - 0x8C0C032E, // 0003 GETMET R3 R1 K46 + 0x8C0C032D, // 0003 GETMET R3 R1 K45 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x880C0101, // 0006 GETMBR R3 R0 K1 @@ -692,7 +689,7 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, / be_str_weak(find_session_source_id_unsecure), &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x8C0C012F, // 0000 GETMET R3 R0 K47 + 0x8C0C012E, // 0000 GETMET R3 R0 K46 0x5C140200, // 0001 MOVE R5 R1 0x7C0C0400, // 0002 CALL R3 2 0x4C100000, // 0003 LDNIL R4 @@ -705,15 +702,15 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, / 0x58200000, // 000A LDCONST R8 K0 0x7C100800, // 000B CALL R4 4 0x5C0C0800, // 000C MOVE R3 R4 - 0x900E6001, // 000D SETMBR R3 K48 R1 + 0x900E5E01, // 000D SETMBR R3 K47 R1 0x88100101, // 000E GETMBR R4 R0 K1 0x8C10091C, // 000F GETMET R4 R4 K28 0x5C180600, // 0010 MOVE R6 R3 0x7C100400, // 0011 CALL R4 2 - 0x8C10072E, // 0012 GETMET R4 R3 K46 + 0x8C10072D, // 0012 GETMET R4 R3 K45 0x5C180400, // 0013 MOVE R6 R2 0x7C100400, // 0014 CALL R4 2 - 0x8C10072D, // 0015 GETMET R4 R3 K45 + 0x8C10072C, // 0015 GETMET R4 R3 K44 0x7C100200, // 0016 CALL R4 1 0x80040600, // 0017 RET 1 R3 }) @@ -739,7 +736,7 @@ be_local_closure(class_Matter_Session_Store_every_second, /* name */ be_str_weak(every_second), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040127, // 0000 GETMET R1 R0 K39 + 0x8C040126, // 0000 GETMET R1 R0 K38 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -778,13 +775,13 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, / 0x14140602, // 000A LT R5 R3 R2 0x78160008, // 000B JMPF R5 #0015 0x94140803, // 000C GETIDX R5 R4 R3 - 0x88180B31, // 000D GETMBR R6 R5 K49 + 0x88180B30, // 000D GETMBR R6 R5 K48 0x1C180C01, // 000E EQ R6 R6 R1 0x781A0002, // 000F JMPF R6 #0013 - 0x8C180B2D, // 0010 GETMET R6 R5 K45 + 0x8C180B2C, // 0010 GETMET R6 R5 K44 0x7C180200, // 0011 CALL R6 1 0x80040A00, // 0012 RET 1 R5 - 0x000C0724, // 0013 ADD R3 R3 K36 + 0x000C0703, // 0013 ADD R3 R3 K3 0x7001FFF4, // 0014 JMP #000A 0x80000000, // 0015 RET 0 }) @@ -810,7 +807,7 @@ be_local_closure(class_Matter_Session_Store_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x90026401, // 0000 SETMBR R0 K50 R1 + 0x90026201, // 0000 SETMBR R0 K49 R1 0xB80A1200, // 0001 GETNGBL R2 K9 0x8C08050A, // 0002 GETMET R2 R2 K10 0x7C080200, // 0003 CALL R2 1 @@ -844,10 +841,10 @@ be_local_closure(class_Matter_Session_Store_remove_expired, /* name */ &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C040333, // 0001 GETMET R1 R1 K51 + 0x8C040332, // 0001 GETMET R1 R1 K50 0x7C040200, // 0002 CALL R1 1 0x8804010B, // 0003 GETMBR R1 R0 K11 - 0x8C040333, // 0004 GETMET R1 R1 K51 + 0x8C040332, // 0004 GETMET R1 R1 K50 0x7C040200, // 0005 CALL R1 1 0x80000000, // 0006 RET 0 }) @@ -883,12 +880,12 @@ be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name * 0x940C0602, // 0007 GETIDX R3 R3 R2 0x20100601, // 0008 NE R4 R3 R1 0x7812000C, // 0009 JMPF R4 #0017 - 0x88100734, // 000A GETMBR R4 R3 K52 - 0x88140334, // 000B GETMBR R5 R1 K52 + 0x88100733, // 000A GETMBR R4 R3 K51 + 0x88140333, // 000B GETMBR R5 R1 K51 0x1C100805, // 000C EQ R4 R4 R5 0x78120008, // 000D JMPF R4 #0017 - 0x88100735, // 000E GETMBR R4 R3 K53 - 0x88140335, // 000F GETMBR R5 R1 K53 + 0x88100734, // 000E GETMBR R4 R3 K52 + 0x88140334, // 000F GETMBR R5 R1 K52 0x1C100805, // 0010 EQ R4 R4 R5 0x78120004, // 0011 JMPF R4 #0017 0x8810010B, // 0012 GETMBR R4 R0 K11 @@ -928,7 +925,7 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ 0x88100913, // 0003 GETMBR R4 R4 K19 0x7C080400, // 0004 CALL R2 2 0x740A0000, // 0005 JMPT R2 #0007 - 0xB0066D37, // 0006 RAISE 1 K54 K55 + 0xB0066B36, // 0006 RAISE 1 K53 K54 0x8808010B, // 0007 GETMBR R2 R0 K11 0x8C080517, // 0008 GETMET R2 R2 K23 0x5C100200, // 0009 MOVE R4 R1 @@ -936,7 +933,7 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */ 0x4C0C0000, // 000B LDNIL R3 0x1C080403, // 000C EQ R2 R2 R3 0x780A0006, // 000D JMPF R2 #0015 - 0x8C080138, // 000E GETMET R2 R0 K56 + 0x8C080137, // 000E GETMET R2 R0 K55 0x5C100200, // 000F MOVE R4 R1 0x7C080400, // 0010 CALL R2 2 0x8808010B, // 0011 GETMBR R2 R0 K11 @@ -980,13 +977,13 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* 0x14140602, // 000A LT R5 R3 R2 0x78160008, // 000B JMPF R5 #0015 0x94140803, // 000C GETIDX R5 R4 R3 - 0x88180B30, // 000D GETMBR R6 R5 K48 + 0x88180B2F, // 000D GETMBR R6 R5 K47 0x1C180C01, // 000E EQ R6 R6 R1 0x781A0002, // 000F JMPF R6 #0013 - 0x8C180B2D, // 0010 GETMET R6 R5 K45 + 0x8C180B2C, // 0010 GETMET R6 R5 K44 0x7C180200, // 0011 CALL R6 1 0x80040A00, // 0012 RET 1 R5 - 0x000C0724, // 0013 ADD R3 R3 K36 + 0x000C0703, // 0013 ADD R3 R3 K3 0x7001FFF4, // 0014 JMP #000A 0x80000000, // 0015 RET 0 }) @@ -1012,25 +1009,25 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */ be_str_weak(next_fabric_idx), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x8C040127, // 0000 GETMET R1 R0 K39 + 0x8C040126, // 0000 GETMET R1 R0 K38 0x7C040200, // 0001 CALL R1 1 - 0x58040039, // 0002 LDCONST R1 K57 + 0x58040003, // 0002 LDCONST R1 K3 0x60080010, // 0003 GETGBL R2 G16 - 0x8C0C0125, // 0004 GETMET R3 R0 K37 + 0x8C0C0124, // 0004 GETMET R3 R0 K36 0x7C0C0200, // 0005 CALL R3 1 0x7C080200, // 0006 CALL R2 1 0xA802000C, // 0007 EXBLK 0 #0015 0x5C0C0400, // 0008 MOVE R3 R2 0x7C0C0000, // 0009 CALL R3 0 - 0x8810073A, // 000A GETMBR R4 R3 K58 + 0x88100738, // 000A GETMBR R4 R3 K56 0x60140004, // 000B GETGBL R5 G4 0x5C180800, // 000C MOVE R6 R4 0x7C140200, // 000D CALL R5 1 - 0x1C140B3B, // 000E EQ R5 R5 K59 + 0x1C140B39, // 000E EQ R5 R5 K57 0x78160003, // 000F JMPF R5 #0014 0x28140801, // 0010 GE R5 R4 R1 0x78160001, // 0011 JMPF R5 #0014 - 0x00140939, // 0012 ADD R5 R4 K57 + 0x00140903, // 0012 ADD R5 R4 K3 0x5C040A00, // 0013 MOVE R1 R5 0x7001FFF2, // 0014 JMP #0008 0x5808001B, // 0015 LDCONST R2 K27 @@ -1061,22 +1058,22 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ &be_const_str_solidified, ( &(const binstruction[98]) { /* code */ 0xA4061E00, // 0000 IMPORT R1 K15 - 0xA40A7800, // 0001 IMPORT R2 K60 + 0xA40A7400, // 0001 IMPORT R2 K58 0xA802004D, // 0002 EXBLK 0 #0051 - 0x8C0C0127, // 0003 GETMET R3 R0 K39 + 0x8C0C0126, // 0003 GETMET R3 R0 K38 0x7C0C0200, // 0004 CALL R3 1 0x580C0000, // 0005 LDCONST R3 K0 0x58100000, // 0006 LDCONST R4 K0 0x60140011, // 0007 GETGBL R5 G17 - 0x8818013D, // 0008 GETMBR R6 R0 K61 - 0x581C003E, // 0009 LDCONST R7 K62 + 0x8818013B, // 0008 GETMBR R6 R0 K59 + 0x581C003C, // 0009 LDCONST R7 K60 0x7C140400, // 000A CALL R5 2 - 0x8C180B3F, // 000B GETMET R6 R5 K63 - 0x58200040, // 000C LDCONST R8 K64 + 0x8C180B3D, // 000B GETMET R6 R5 K61 + 0x5820003E, // 000C LDCONST R8 K62 0x7C180400, // 000D CALL R6 2 0x60180010, // 000E GETGBL R6 G16 0x881C010B, // 000F GETMBR R7 R0 K11 - 0x8C1C0F28, // 0010 GETMET R7 R7 K40 + 0x8C1C0F27, // 0010 GETMET R7 R7 K39 0x7C1C0200, // 0011 CALL R7 1 0x7C180200, // 0012 CALL R6 1 0xA8020018, // 0013 EXBLK 0 #002D @@ -1084,7 +1081,7 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0x7C1C0000, // 0015 CALL R7 0 0x60200010, // 0016 GETGBL R8 G16 0x88240F18, // 0017 GETMBR R9 R7 K24 - 0x8C241328, // 0018 GETMET R9 R9 K40 + 0x8C241327, // 0018 GETMET R9 R9 K39 0x7C240200, // 0019 CALL R9 1 0x7C200200, // 001A CALL R8 1 0xA8020003, // 001B EXBLK 0 #0020 @@ -1097,10 +1094,10 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0xB0080000, // 0022 RAISE 2 R0 R0 0x24200900, // 0023 GT R8 R4 K0 0x78220002, // 0024 JMPF R8 #0028 - 0x8C200B3F, // 0025 GETMET R8 R5 K63 - 0x58280041, // 0026 LDCONST R10 K65 + 0x8C200B3D, // 0025 GETMET R8 R5 K61 + 0x5828003F, // 0026 LDCONST R10 K63 0x7C200400, // 0027 CALL R8 2 - 0x8C200F42, // 0028 GETMET R8 R7 K66 + 0x8C200F40, // 0028 GETMET R8 R7 K64 0x5C280A00, // 0029 MOVE R10 R5 0x7C200400, // 002A CALL R8 2 0x00100903, // 002B ADD R4 R4 K3 @@ -1108,34 +1105,34 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0x5818001B, // 002D LDCONST R6 K27 0xAC180200, // 002E CATCH R6 1 0 0xB0080000, // 002F RAISE 2 R0 R0 - 0x8C180B3F, // 0030 GETMET R6 R5 K63 - 0x58200043, // 0031 LDCONST R8 K67 + 0x8C180B3D, // 0030 GETMET R6 R5 K61 + 0x58200041, // 0031 LDCONST R8 K65 0x7C180400, // 0032 CALL R6 2 0x8C180B0E, // 0033 GETMET R6 R5 K14 0x7C180200, // 0034 CALL R6 1 0x8C180502, // 0035 GETMET R6 R2 K2 0x8820010C, // 0036 GETMBR R8 R0 K12 0x7C180400, // 0037 CALL R6 2 - 0x8C180544, // 0038 GETMET R6 R2 K68 - 0x8820013D, // 0039 GETMBR R8 R0 K61 + 0x8C180542, // 0038 GETMET R6 R2 K66 + 0x8820013B, // 0039 GETMBR R8 R0 K59 0x8824010C, // 003A GETMBR R9 R0 K12 0x7C180600, // 003B CALL R6 3 0x781A000B, // 003C JMPF R6 #0049 0xB81A3A00, // 003D GETNGBL R6 K29 0x601C0018, // 003E GETGBL R7 G24 - 0x58200045, // 003F LDCONST R8 K69 + 0x58200043, // 003F LDCONST R8 K67 0x5C240800, // 0040 MOVE R9 R4 0x5C280600, // 0041 MOVE R10 R3 0x7C1C0600, // 0042 CALL R7 3 0x58200006, // 0043 LDCONST R8 K6 0x7C180400, // 0044 CALL R6 2 - 0x88180132, // 0045 GETMBR R6 R0 K50 - 0x8C180D46, // 0046 GETMET R6 R6 K70 + 0x88180131, // 0045 GETMBR R6 R0 K49 + 0x8C180D44, // 0046 GETMET R6 R6 K68 0x7C180200, // 0047 CALL R6 1 0x70020005, // 0048 JMP #004F 0xB81A3A00, // 0049 GETNGBL R6 K29 0x601C0018, // 004A GETGBL R7 G24 - 0x58200047, // 004B LDCONST R8 K71 + 0x58200045, // 004B LDCONST R8 K69 0x7C1C0200, // 004C CALL R7 1 0x58200006, // 004D LDCONST R8 K6 0x7C180400, // 004E CALL R6 2 @@ -1147,7 +1144,7 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */ 0x60180008, // 0054 GETGBL R6 G8 0x5C1C0600, // 0055 MOVE R7 R3 0x7C180200, // 0056 CALL R6 1 - 0x001A9006, // 0057 ADD R6 K72 R6 + 0x001A8C06, // 0057 ADD R6 K70 R6 0x00180D21, // 0058 ADD R6 R6 K33 0x601C0008, // 0059 GETGBL R7 G8 0x5C200800, // 005A MOVE R8 R4 @@ -1187,7 +1184,7 @@ be_local_closure(class_Matter_Session_Store_create_session, /* name */ 0x4C100000, // 0003 LDNIL R4 0x20100604, // 0004 NE R4 R3 R4 0x78120002, // 0005 JMPF R4 #0009 - 0x8C100149, // 0006 GETMET R4 R0 K73 + 0x8C100147, // 0006 GETMET R4 R0 K71 0x5C180600, // 0007 MOVE R6 R3 0x7C100400, // 0008 CALL R4 2 0xB8121200, // 0009 GETNGBL R4 K9 @@ -1237,7 +1234,7 @@ be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */ 0x780E000B, // 0009 JMPF R3 #0016 0x880C0101, // 000A GETMBR R3 R0 K1 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x880C074A, // 000C GETMBR R3 R3 K74 + 0x880C0748, // 000C GETMBR R3 R3 K72 0x1C0C0601, // 000D EQ R3 R3 R1 0x780E0004, // 000E JMPF R3 #0014 0x880C0101, // 000F GETMBR R3 R0 K1 @@ -1245,7 +1242,7 @@ be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */ 0x5C140400, // 0011 MOVE R5 R2 0x7C0C0400, // 0012 CALL R3 2 0x70020000, // 0013 JMP #0015 - 0x0008054B, // 0014 ADD R2 R2 K75 + 0x00080503, // 0014 ADD R2 R2 K3 0x7001FFEE, // 0015 JMP #0005 0x8808010B, // 0016 GETMBR R2 R0 K11 0x4C0C0000, // 0017 LDNIL R3 diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index 8d221453e..e900426ba 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Matter_TLV_item; -// compact class 'Matter_TLV_item' ktab size: 93, total: 205 (saved 896 bytes) -static const bvalue be_ktab_class_Matter_TLV_item[93] = { +// compact class 'Matter_TLV_item' ktab size: 89, total: 205 (saved 928 bytes) +static const bvalue be_ktab_class_Matter_TLV_item[89] = { /* K0 */ be_nested_str_weak(parent), /* K1 */ be_nested_str_weak(next_idx), /* K2 */ be_nested_str_weak(tag_vendor), @@ -74,31 +74,27 @@ static const bvalue be_ktab_class_Matter_TLV_item[93] = { /* K65 */ be_nested_str_weak(geti), /* K66 */ be_nested_str_weak(get), /* K67 */ be_nested_str_weak(getfloat), - /* K68 */ be_const_int(1), - /* K69 */ be_nested_str_weak(asstring), - /* K70 */ be_nested_str_weak(EOC), - /* K71 */ be_nested_str_weak(log), - /* K72 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), - /* K73 */ be_const_int(3), - /* K74 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), - /* K75 */ be_nested_str_weak(set_fulltag), - /* K76 */ be_nested_str_weak(add), - /* K77 */ be_const_int(2), - /* K78 */ be_const_class(be_class_Matter_TLV_item), - /* K79 */ be_const_int(0), - /* K80 */ be_nested_str_weak(_cmp_gt), - /* K81 */ be_nested_str_weak(stop_iteration), - /* K82 */ be_nested_str_weak(_encode_tag), - /* K83 */ be_nested_str_weak(copy), - /* K84 */ be_nested_str_weak(resize), - /* K85 */ be_nested_str_weak(tobytes), - /* K86 */ be_nested_str_weak(fromu32), - /* K87 */ be_nested_str_weak(setfloat), - /* K88 */ be_nested_str_weak(string_X20too_X20big), - /* K89 */ be_nested_str_weak(fromstring), - /* K90 */ be_nested_str_weak(frostring), - /* K91 */ be_nested_str_weak(bytes_X20too_X20big), - /* K92 */ be_const_int(3), + /* K68 */ be_nested_str_weak(asstring), + /* K69 */ be_nested_str_weak(EOC), + /* K70 */ be_nested_str_weak(log), + /* K71 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc), + /* K72 */ be_const_int(3), + /* K73 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20), + /* K74 */ be_nested_str_weak(set_fulltag), + /* K75 */ be_nested_str_weak(add), + /* K76 */ be_const_class(be_class_Matter_TLV_item), + /* K77 */ be_nested_str_weak(_cmp_gt), + /* K78 */ be_nested_str_weak(stop_iteration), + /* K79 */ be_nested_str_weak(_encode_tag), + /* K80 */ be_nested_str_weak(copy), + /* K81 */ be_nested_str_weak(resize), + /* K82 */ be_nested_str_weak(tobytes), + /* K83 */ be_nested_str_weak(fromu32), + /* K84 */ be_nested_str_weak(setfloat), + /* K85 */ be_nested_str_weak(string_X20too_X20big), + /* K86 */ be_nested_str_weak(fromstring), + /* K87 */ be_nested_str_weak(frostring), + /* K88 */ be_nested_str_weak(bytes_X20too_X20big), }; @@ -949,7 +945,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x441C0A00, // 0040 NEG R7 R5 0x00080407, // 0041 ADD R2 R2 R7 0x001C0406, // 0042 ADD R7 R2 R6 - 0x041C0F44, // 0043 SUB R7 R7 K68 + 0x041C0F1D, // 0043 SUB R7 R7 K29 0x401C0407, // 0044 CONNECT R7 R2 R7 0x941C0207, // 0045 GETIDX R7 R1 R7 0x90020E07, // 0046 SETMBR R0 K7 R7 @@ -958,7 +954,7 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x181C0607, // 0049 LE R7 R3 R7 0x781E0003, // 004A JMPF R7 #004F 0x881C0107, // 004B GETMBR R7 R0 K7 - 0x8C1C0F45, // 004C GETMET R7 R7 K69 + 0x8C1C0F44, // 004C GETMET R7 R7 K68 0x7C1C0200, // 004D CALL R7 1 0x90020E07, // 004E SETMBR R0 K7 R7 0x70020012, // 004F JMP #0063 @@ -966,20 +962,20 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */ 0x1C180606, // 0051 EQ R6 R3 R6 0x781A0000, // 0052 JMPF R6 #0054 0x7002000E, // 0053 JMP #0063 - 0x88180946, // 0054 GETMBR R6 R4 K70 + 0x88180945, // 0054 GETMBR R6 R4 K69 0x1C180606, // 0055 EQ R6 R3 R6 0x781A0004, // 0056 JMPF R6 #005C - 0xB81A8E00, // 0057 GETNGBL R6 K71 - 0x581C0048, // 0058 LDCONST R7 K72 - 0x58200049, // 0059 LDCONST R8 K73 + 0xB81A8C00, // 0057 GETNGBL R6 K70 + 0x581C0047, // 0058 LDCONST R7 K71 + 0x58200048, // 0059 LDCONST R8 K72 0x7C180400, // 005A CALL R6 2 0x70020006, // 005B JMP #0063 - 0xB81A8E00, // 005C GETNGBL R6 K71 + 0xB81A8C00, // 005C GETNGBL R6 K70 0x601C0008, // 005D GETGBL R7 G8 0x5C200600, // 005E MOVE R8 R3 0x7C1C0200, // 005F CALL R7 1 - 0x001E9407, // 0060 ADD R7 K74 R7 - 0x58200049, // 0061 LDCONST R8 K73 + 0x001E9207, // 0060 ADD R7 K73 R7 + 0x58200048, // 0061 LDCONST R8 K72 0x7C180400, // 0062 CALL R6 2 0x90020202, // 0063 SETMBR R0 K1 R2 0x80040400, // 0064 RET 1 R2 @@ -1006,7 +1002,7 @@ be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */ be_str_weak(set_commonprofile), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C04014B, // 0000 GETMET R1 R0 K75 + 0x8C04014A, // 0000 GETMET R1 R0 K74 0x4C0C0000, // 0001 LDNIL R3 0x5411FFFE, // 0002 LDINT R4 -1 0x4C140000, // 0003 LDNIL R5 @@ -1055,42 +1051,42 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x20140A06, // 0011 NE R5 R5 R6 0x78160026, // 0012 JMPF R5 #003A 0x780E0012, // 0013 JMPF R3 #0027 - 0x8C14034C, // 0014 GETMET R5 R1 K76 + 0x8C14034B, // 0014 GETMET R5 R1 K75 0x541E00DF, // 0015 LDINT R7 224 0x88200106, // 0016 GETMBR R8 R0 K6 0x001C0E08, // 0017 ADD R7 R7 R8 - 0x58200044, // 0018 LDCONST R8 K68 + 0x5820001D, // 0018 LDCONST R8 K29 0x7C140600, // 0019 CALL R5 3 - 0x8C14034C, // 001A GETMET R5 R1 K76 + 0x8C14034B, // 001A GETMET R5 R1 K75 0x881C0102, // 001B GETMBR R7 R0 K2 - 0x5820004D, // 001C LDCONST R8 K77 + 0x5820001E, // 001C LDCONST R8 K30 0x7C140600, // 001D CALL R5 3 - 0x8C14034C, // 001E GETMET R5 R1 K76 + 0x8C14034B, // 001E GETMET R5 R1 K75 0x881C0103, // 001F GETMBR R7 R0 K3 - 0x5820004D, // 0020 LDCONST R8 K77 + 0x5820001E, // 0020 LDCONST R8 K30 0x7C140600, // 0021 CALL R5 3 - 0x8C14034C, // 0022 GETMET R5 R1 K76 + 0x8C14034B, // 0022 GETMET R5 R1 K75 0x881C0104, // 0023 GETMBR R7 R0 K4 0x54220003, // 0024 LDINT R8 4 0x7C140600, // 0025 CALL R5 3 0x70020011, // 0026 JMP #0039 - 0x8C14034C, // 0027 GETMET R5 R1 K76 + 0x8C14034B, // 0027 GETMET R5 R1 K75 0x541E00BF, // 0028 LDINT R7 192 0x88200106, // 0029 GETMBR R8 R0 K6 0x001C0E08, // 002A ADD R7 R7 R8 - 0x58200044, // 002B LDCONST R8 K68 + 0x5820001D, // 002B LDCONST R8 K29 0x7C140600, // 002C CALL R5 3 - 0x8C14034C, // 002D GETMET R5 R1 K76 + 0x8C14034B, // 002D GETMET R5 R1 K75 0x881C0102, // 002E GETMBR R7 R0 K2 - 0x5820004D, // 002F LDCONST R8 K77 + 0x5820001E, // 002F LDCONST R8 K30 0x7C140600, // 0030 CALL R5 3 - 0x8C14034C, // 0031 GETMET R5 R1 K76 + 0x8C14034B, // 0031 GETMET R5 R1 K75 0x881C0103, // 0032 GETMBR R7 R0 K3 - 0x5820004D, // 0033 LDCONST R8 K77 + 0x5820001E, // 0033 LDCONST R8 K30 0x7C140600, // 0034 CALL R5 3 - 0x8C14034C, // 0035 GETMET R5 R1 K76 + 0x8C14034B, // 0035 GETMET R5 R1 K75 0x881C0104, // 0036 GETMBR R7 R0 K4 - 0x5820004D, // 0037 LDCONST R8 K77 + 0x5820001E, // 0037 LDCONST R8 K30 0x7C140600, // 0038 CALL R5 3 0x70020049, // 0039 JMP #0084 0x88140103, // 003A GETMBR R5 R0 K3 @@ -1098,26 +1094,26 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x1C140A06, // 003C EQ R5 R5 R6 0x78160016, // 003D JMPF R5 #0055 0x780E000A, // 003E JMPF R3 #004A - 0x8C14034C, // 003F GETMET R5 R1 K76 + 0x8C14034B, // 003F GETMET R5 R1 K75 0x541E005F, // 0040 LDINT R7 96 0x88200106, // 0041 GETMBR R8 R0 K6 0x001C0E08, // 0042 ADD R7 R7 R8 - 0x58200044, // 0043 LDCONST R8 K68 + 0x5820001D, // 0043 LDCONST R8 K29 0x7C140600, // 0044 CALL R5 3 - 0x8C14034C, // 0045 GETMET R5 R1 K76 + 0x8C14034B, // 0045 GETMET R5 R1 K75 0x881C0104, // 0046 GETMBR R7 R0 K4 0x54220003, // 0047 LDINT R8 4 0x7C140600, // 0048 CALL R5 3 0x70020009, // 0049 JMP #0054 - 0x8C14034C, // 004A GETMET R5 R1 K76 + 0x8C14034B, // 004A GETMET R5 R1 K75 0x541E003F, // 004B LDINT R7 64 0x88200106, // 004C GETMBR R8 R0 K6 0x001C0E08, // 004D ADD R7 R7 R8 - 0x58200044, // 004E LDCONST R8 K68 + 0x5820001D, // 004E LDCONST R8 K29 0x7C140600, // 004F CALL R5 3 - 0x8C14034C, // 0050 GETMET R5 R1 K76 + 0x8C14034B, // 0050 GETMET R5 R1 K75 0x881C0104, // 0051 GETMBR R7 R0 K4 - 0x5820004D, // 0052 LDCONST R8 K77 + 0x5820001E, // 0052 LDCONST R8 K30 0x7C140600, // 0053 CALL R5 3 0x7002002E, // 0054 JMP #0084 0x88140103, // 0055 GETMBR R5 R0 K3 @@ -1125,47 +1121,47 @@ be_local_closure(class_Matter_TLV_item__encode_tag, /* name */ 0x20140A06, // 0057 NE R5 R5 R6 0x78160016, // 0058 JMPF R5 #0070 0x780E000A, // 0059 JMPF R3 #0065 - 0x8C14034C, // 005A GETMET R5 R1 K76 + 0x8C14034B, // 005A GETMET R5 R1 K75 0x541E009F, // 005B LDINT R7 160 0x88200106, // 005C GETMBR R8 R0 K6 0x001C0E08, // 005D ADD R7 R7 R8 - 0x58200044, // 005E LDCONST R8 K68 + 0x5820001D, // 005E LDCONST R8 K29 0x7C140600, // 005F CALL R5 3 - 0x8C14034C, // 0060 GETMET R5 R1 K76 + 0x8C14034B, // 0060 GETMET R5 R1 K75 0x881C0104, // 0061 GETMBR R7 R0 K4 0x54220003, // 0062 LDINT R8 4 0x7C140600, // 0063 CALL R5 3 0x70020009, // 0064 JMP #006F - 0x8C14034C, // 0065 GETMET R5 R1 K76 + 0x8C14034B, // 0065 GETMET R5 R1 K75 0x541E007F, // 0066 LDINT R7 128 0x88200106, // 0067 GETMBR R8 R0 K6 0x001C0E08, // 0068 ADD R7 R7 R8 - 0x58200044, // 0069 LDCONST R8 K68 + 0x5820001D, // 0069 LDCONST R8 K29 0x7C140600, // 006A CALL R5 3 - 0x8C14034C, // 006B GETMET R5 R1 K76 + 0x8C14034B, // 006B GETMET R5 R1 K75 0x881C0104, // 006C GETMBR R7 R0 K4 - 0x5820004D, // 006D LDCONST R8 K77 + 0x5820001E, // 006D LDCONST R8 K30 0x7C140600, // 006E CALL R5 3 0x70020013, // 006F JMP #0084 0x88140105, // 0070 GETMBR R5 R0 K5 0x4C180000, // 0071 LDNIL R6 0x20140A06, // 0072 NE R5 R5 R6 0x7816000A, // 0073 JMPF R5 #007F - 0x8C14034C, // 0074 GETMET R5 R1 K76 + 0x8C14034B, // 0074 GETMET R5 R1 K75 0x541E001F, // 0075 LDINT R7 32 0x88200106, // 0076 GETMBR R8 R0 K6 0x001C0E08, // 0077 ADD R7 R7 R8 - 0x58200044, // 0078 LDCONST R8 K68 + 0x5820001D, // 0078 LDCONST R8 K29 0x7C140600, // 0079 CALL R5 3 - 0x8C14034C, // 007A GETMET R5 R1 K76 + 0x8C14034B, // 007A GETMET R5 R1 K75 0x881C0105, // 007B GETMBR R7 R0 K5 - 0x58200044, // 007C LDCONST R8 K68 + 0x5820001D, // 007C LDCONST R8 K29 0x7C140600, // 007D CALL R5 3 0x70020004, // 007E JMP #0084 - 0x8C14034C, // 007F GETMET R5 R1 K76 + 0x8C14034B, // 007F GETMET R5 R1 K75 0x881C0106, // 0080 GETMBR R7 R0 K6 0x001E1407, // 0081 ADD R7 K10 R7 - 0x58200044, // 0082 LDCONST R8 K68 + 0x5820001D, // 0082 LDCONST R8 K29 0x7C140600, // 0083 CALL R5 3 0x80000000, // 0084 RET 0 }) @@ -1191,36 +1187,36 @@ be_local_closure(class_Matter_TLV_item_sort, /* name */ be_str_weak(sort), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x5804004E, // 0000 LDCONST R1 K78 + 0x5804004C, // 0000 LDCONST R1 K76 0x60080010, // 0001 GETGBL R2 G16 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 - 0x040C0744, // 0005 SUB R3 R3 K68 - 0x400E8803, // 0006 CONNECT R3 K68 R3 + 0x040C071D, // 0005 SUB R3 R3 K29 + 0x400E3A03, // 0006 CONNECT R3 K29 R3 0x7C080200, // 0007 CALL R2 1 0xA8020013, // 0008 EXBLK 0 #001D 0x5C0C0400, // 0009 MOVE R3 R2 0x7C0C0000, // 000A CALL R3 0 0x94100003, // 000B GETIDX R4 R0 R3 0x5C140600, // 000C MOVE R5 R3 - 0x24180B4F, // 000D GT R6 R5 K79 + 0x24180B0A, // 000D GT R6 R5 K10 0x781A000B, // 000E JMPF R6 #001B - 0x04180B44, // 000F SUB R6 R5 K68 + 0x04180B1D, // 000F SUB R6 R5 K29 0x94180006, // 0010 GETIDX R6 R0 R6 - 0x8C180D50, // 0011 GETMET R6 R6 K80 + 0x8C180D4D, // 0011 GETMET R6 R6 K77 0x5C200800, // 0012 MOVE R8 R4 0x7C180400, // 0013 CALL R6 2 - 0x24180D4F, // 0014 GT R6 R6 K79 + 0x24180D0A, // 0014 GT R6 R6 K10 0x781A0004, // 0015 JMPF R6 #001B - 0x04180B44, // 0016 SUB R6 R5 K68 + 0x04180B1D, // 0016 SUB R6 R5 K29 0x94180006, // 0017 GETIDX R6 R0 R6 0x98000A06, // 0018 SETIDX R0 R5 R6 - 0x04140B44, // 0019 SUB R5 R5 K68 + 0x04140B1D, // 0019 SUB R5 R5 K29 0x7001FFF1, // 001A JMP #000D 0x98000A04, // 001B SETIDX R0 R5 R4 0x7001FFEB, // 001C JMP #0009 - 0x58080051, // 001D LDCONST R2 K81 + 0x5808004E, // 001D LDCONST R2 K78 0xAC080200, // 001E CATCH R2 1 0 0xB0080000, // 001F RAISE 2 R0 R0 0x80040000, // 0020 RET 1 R0 @@ -1313,7 +1309,7 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x540DFFFE, // 0026 LDINT R3 -1 0x1C080403, // 0027 EQ R2 R2 R3 0x780A0000, // 0028 JMPF R2 #002A - 0x80069E00, // 0029 RET 1 K79 + 0x80061400, // 0029 RET 1 K10 0x88080104, // 002A GETMBR R2 R0 K4 0x4C0C0000, // 002B LDNIL R3 0x20080403, // 002C NE R2 R2 R3 @@ -1328,7 +1324,7 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x24080403, // 0035 GT R2 R2 R3 0x780A0000, // 0036 JMPF R2 #0038 0x80063A00, // 0037 RET 1 K29 - 0x80069E00, // 0038 RET 1 K79 + 0x80061400, // 0038 RET 1 K10 0x88080105, // 0039 GETMBR R2 R0 K5 0x4C0C0000, // 003A LDNIL R3 0x20080403, // 003B NE R2 R2 R3 @@ -1343,7 +1339,7 @@ be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */ 0x24080403, // 0044 GT R2 R2 R3 0x780A0000, // 0045 JMPF R2 #0047 0x80063A00, // 0046 RET 1 K29 - 0x80069E00, // 0047 RET 1 K79 + 0x80061400, // 0047 RET 1 K10 }) ) ); @@ -1463,7 +1459,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x541200FE, // 005D LDINT R4 255 0x18100604, // 005E LE R4 R3 R4 0x78120004, // 005F JMPF R4 #0065 - 0x2810074F, // 0060 GE R4 R3 K79 + 0x2810070A, // 0060 GE R4 R3 K10 0x78120002, // 0061 JMPF R4 #0065 0x88100513, // 0062 GETMBR R4 R2 K19 0x90020C04, // 0063 SETMBR R0 K6 R4 @@ -1471,7 +1467,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5412FFFE, // 0065 LDINT R4 65535 0x18100604, // 0066 LE R4 R3 R4 0x78120003, // 0067 JMPF R4 #006C - 0x2810074F, // 0068 GE R4 R3 K79 + 0x2810070A, // 0068 GE R4 R3 K10 0x78120001, // 0069 JMPF R4 #006C 0x88100511, // 006A GETMBR R4 R2 K17 0x90020C04, // 006B SETMBR R0 K6 R4 @@ -1533,7 +1529,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x70020001, // 00A3 JMP #00A6 0x880C051B, // 00A4 GETMBR R3 R2 K27 0x90020C03, // 00A5 SETMBR R0 K6 R3 - 0x8C0C0152, // 00A6 GETMET R3 R0 K82 + 0x8C0C014F, // 00A6 GETMET R3 R0 K79 0x5C140200, // 00A7 MOVE R5 R1 0x7C0C0400, // 00A8 CALL R3 2 0x880C0106, // 00A9 GETMBR R3 R0 K6 @@ -1544,11 +1540,11 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x88100513, // 00AE GETMBR R4 R2 K19 0x1C0C0604, // 00AF EQ R3 R3 R4 0x780E0006, // 00B0 JMPF R3 #00B8 - 0x8C0C034C, // 00B1 GETMET R3 R1 K76 + 0x8C0C034B, // 00B1 GETMET R3 R1 K75 0x60140009, // 00B2 GETGBL R5 G9 0x88180107, // 00B3 GETMBR R6 R0 K7 0x7C140200, // 00B4 CALL R5 1 - 0x58180044, // 00B5 LDCONST R6 K68 + 0x5818001D, // 00B5 LDCONST R6 K29 0x7C0C0600, // 00B6 CALL R3 3 0x700200DA, // 00B7 JMP #0193 0x880C0106, // 00B8 GETMBR R3 R0 K6 @@ -1559,11 +1555,11 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x88100511, // 00BD GETMBR R4 R2 K17 0x1C0C0604, // 00BE EQ R3 R3 R4 0x780E0006, // 00BF JMPF R3 #00C7 - 0x8C0C034C, // 00C0 GETMET R3 R1 K76 + 0x8C0C034B, // 00C0 GETMET R3 R1 K75 0x60140009, // 00C1 GETGBL R5 G9 0x88180107, // 00C2 GETMBR R6 R0 K7 0x7C140200, // 00C3 CALL R5 1 - 0x5818004D, // 00C4 LDCONST R6 K77 + 0x5818001E, // 00C4 LDCONST R6 K30 0x7C0C0600, // 00C5 CALL R3 3 0x700200CB, // 00C6 JMP #0193 0x880C0106, // 00C7 GETMBR R3 R0 K6 @@ -1574,7 +1570,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x88100512, // 00CC GETMBR R4 R2 K18 0x1C0C0604, // 00CD EQ R3 R3 R4 0x780E0006, // 00CE JMPF R3 #00D6 - 0x8C0C034C, // 00CF GETMET R3 R1 K76 + 0x8C0C034B, // 00CF GETMET R3 R1 K75 0x60140009, // 00D0 GETGBL R5 G9 0x88180107, // 00D1 GETMBR R6 R0 K7 0x7C140200, // 00D2 CALL R5 1 @@ -1595,9 +1591,9 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x60180015, // 00E1 GETGBL R6 G21 0x7C100400, // 00E2 CALL R4 2 0x78120006, // 00E3 JMPF R4 #00EB - 0x8C100753, // 00E4 GETMET R4 R3 K83 + 0x8C100750, // 00E4 GETMET R4 R3 K80 0x7C100200, // 00E5 CALL R4 1 - 0x8C100954, // 00E6 GETMET R4 R4 K84 + 0x8C100951, // 00E6 GETMET R4 R4 K81 0x541A0007, // 00E7 LDINT R6 8 0x7C100400, // 00E8 CALL R4 2 0x5C0C0800, // 00E9 MOVE R3 R4 @@ -1607,7 +1603,7 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0xB81A7200, // 00ED GETNGBL R6 K57 0x7C100400, // 00EE CALL R4 2 0x78120003, // 00EF JMPF R4 #00F4 - 0x8C100755, // 00F0 GETMET R4 R3 K85 + 0x8C100752, // 00F0 GETMET R4 R3 K82 0x7C100200, // 00F1 CALL R4 1 0x5C0C0800, // 00F2 MOVE R3 R4 0x70020015, // 00F3 JMP #010A @@ -1620,17 +1616,17 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5C180600, // 00FA MOVE R6 R3 0x7C140200, // 00FB CALL R5 1 0x7C100200, // 00FC CALL R4 1 - 0x8C100955, // 00FD GETMET R4 R4 K85 + 0x8C100952, // 00FD GETMET R4 R4 K82 0x7C100200, // 00FE CALL R4 1 0x5C0C0800, // 00FF MOVE R3 R4 0x70020008, // 0100 JMP #010A 0xB8127200, // 0101 GETNGBL R4 K57 - 0x8C100956, // 0102 GETMET R4 R4 K86 + 0x8C100953, // 0102 GETMET R4 R4 K83 0x60180009, // 0103 GETGBL R6 G9 0x5C1C0600, // 0104 MOVE R7 R3 0x7C180200, // 0105 CALL R6 1 0x7C100400, // 0106 CALL R4 2 - 0x8C100955, // 0107 GETMET R4 R4 K85 + 0x8C100952, // 0107 GETMET R4 R4 K82 0x7C100200, // 0108 CALL R4 1 0x5C0C0800, // 0109 MOVE R3 R4 0x40100203, // 010A CONNECT R4 R1 R3 @@ -1651,11 +1647,11 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x600C000C, // 0119 GETGBL R3 G12 0x5C100200, // 011A MOVE R4 R1 0x7C0C0200, // 011B CALL R3 1 - 0x8C10034C, // 011C GETMET R4 R1 K76 - 0x5818004F, // 011D LDCONST R6 K79 + 0x8C10034B, // 011C GETMET R4 R1 K75 + 0x5818000A, // 011D LDCONST R6 K10 0x541E0003, // 011E LDINT R7 4 0x7C100600, // 011F CALL R4 3 - 0x8C100357, // 0120 GETMET R4 R1 K87 + 0x8C100354, // 0120 GETMET R4 R1 K84 0x5C180600, // 0121 MOVE R6 R3 0x601C000A, // 0122 GETGBL R7 G10 0x88200107, // 0123 GETMBR R8 R0 K7 @@ -1678,16 +1674,16 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x541200FE, // 0134 LDINT R4 255 0x240C0604, // 0135 GT R3 R3 R4 0x780E0000, // 0136 JMPF R3 #0138 - 0xB0064758, // 0137 RAISE 1 K35 K88 - 0x8C0C034C, // 0138 GETMET R3 R1 K76 + 0xB0064755, // 0137 RAISE 1 K35 K85 + 0x8C0C034B, // 0138 GETMET R3 R1 K75 0x6014000C, // 0139 GETGBL R5 G12 0x88180107, // 013A GETMBR R6 R0 K7 0x7C140200, // 013B CALL R5 1 - 0x58180044, // 013C LDCONST R6 K68 + 0x5818001D, // 013C LDCONST R6 K29 0x7C0C0600, // 013D CALL R3 3 0x600C0015, // 013E GETGBL R3 G21 0x7C0C0000, // 013F CALL R3 0 - 0x8C0C0759, // 0140 GETMET R3 R3 K89 + 0x8C0C0756, // 0140 GETMET R3 R3 K86 0x60140008, // 0141 GETGBL R5 G8 0x88180107, // 0142 GETMBR R6 R0 K7 0x7C140200, // 0143 CALL R5 1 @@ -1704,16 +1700,16 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5412FFFE, // 014E LDINT R4 65535 0x240C0604, // 014F GT R3 R3 R4 0x780E0000, // 0150 JMPF R3 #0152 - 0xB0064758, // 0151 RAISE 1 K35 K88 - 0x8C0C034C, // 0152 GETMET R3 R1 K76 + 0xB0064755, // 0151 RAISE 1 K35 K85 + 0x8C0C034B, // 0152 GETMET R3 R1 K75 0x6014000C, // 0153 GETGBL R5 G12 0x88180107, // 0154 GETMBR R6 R0 K7 0x7C140200, // 0155 CALL R5 1 - 0x5818004D, // 0156 LDCONST R6 K77 + 0x5818001E, // 0156 LDCONST R6 K30 0x7C0C0600, // 0157 CALL R3 3 0x600C0015, // 0158 GETGBL R3 G21 0x7C0C0000, // 0159 CALL R3 0 - 0x8C0C075A, // 015A GETMET R3 R3 K90 + 0x8C0C0757, // 015A GETMET R3 R3 K87 0x60140008, // 015B GETGBL R5 G8 0x88180107, // 015C GETMBR R6 R0 K7 0x7C140200, // 015D CALL R5 1 @@ -1730,12 +1726,12 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x541200FE, // 0168 LDINT R4 255 0x240C0604, // 0169 GT R3 R3 R4 0x780E0000, // 016A JMPF R3 #016C - 0xB006475B, // 016B RAISE 1 K35 K91 - 0x8C0C034C, // 016C GETMET R3 R1 K76 + 0xB0064758, // 016B RAISE 1 K35 K88 + 0x8C0C034B, // 016C GETMET R3 R1 K75 0x6014000C, // 016D GETGBL R5 G12 0x88180107, // 016E GETMBR R6 R0 K7 0x7C140200, // 016F CALL R5 1 - 0x58180044, // 0170 LDCONST R6 K68 + 0x5818001D, // 0170 LDCONST R6 K29 0x7C0C0600, // 0171 CALL R3 3 0x880C0107, // 0172 GETMBR R3 R0 K7 0x400C0203, // 0173 CONNECT R3 R1 R3 @@ -1750,12 +1746,12 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */ 0x5412FFFE, // 017C LDINT R4 65535 0x240C0604, // 017D GT R3 R3 R4 0x780E0000, // 017E JMPF R3 #0180 - 0xB006475B, // 017F RAISE 1 K35 K91 - 0x8C0C034C, // 0180 GETMET R3 R1 K76 + 0xB0064758, // 017F RAISE 1 K35 K88 + 0x8C0C034B, // 0180 GETMET R3 R1 K75 0x6014000C, // 0181 GETGBL R5 G12 0x88180107, // 0182 GETMBR R6 R0 K7 0x7C140200, // 0183 CALL R5 1 - 0x5818004D, // 0184 LDCONST R6 K77 + 0x5818001E, // 0184 LDCONST R6 K30 0x7C0C0600, // 0185 CALL R3 3 0x880C0107, // 0186 GETMBR R3 R0 K7 0x400C0203, // 0187 CONNECT R3 R1 R3 @@ -1828,7 +1824,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x54120004, // 001F LDINT R4 5 0x80040800, // 0020 RET 1 R4 0x70020000, // 0021 JMP #0023 - 0x8006B800, // 0022 RET 1 K92 + 0x80069000, // 0022 RET 1 K72 0x70020010, // 0023 JMP #0035 0x88100103, // 0024 GETMBR R4 R0 K3 0x4C140000, // 0025 LDNIL R5 @@ -1838,7 +1834,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x54120004, // 0029 LDINT R4 5 0x80040800, // 002A RET 1 R4 0x70020000, // 002B JMP #002D - 0x8006B800, // 002C RET 1 K92 + 0x80069000, // 002C RET 1 K72 0x70020006, // 002D JMP #0035 0x88100105, // 002E GETMBR R4 R0 K5 0x4C140000, // 002F LDNIL R5 @@ -1846,7 +1842,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */ 0x78120001, // 0031 JMPF R4 #0034 0x80063C00, // 0032 RET 1 K30 0x70020000, // 0033 JMP #0035 - 0x80068800, // 0034 RET 1 K68 + 0x80063A00, // 0034 RET 1 K29 0x80000000, // 0035 RET 0 }) ) @@ -1871,7 +1867,7 @@ be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */ be_str_weak(set_contextspecific), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8C08014B, // 0000 GETMET R2 R0 K75 + 0x8C08014A, // 0000 GETMET R2 R0 K74 0x7C080200, // 0001 CALL R2 1 0x60080009, // 0002 GETGBL R2 G9 0x5C0C0200, // 0003 MOVE R3 R1 @@ -1926,7 +1922,7 @@ be_local_closure(class_Matter_TLV_item_create_TLV, /* name */ be_str_weak(create_TLV), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x5808004E, // 0000 LDCONST R2 K78 + 0x5808004C, // 0000 LDCONST R2 K76 0x4C0C0000, // 0001 LDNIL R3 0x200C0203, // 0002 NE R3 R1 R3 0x740E0002, // 0003 JMPT R3 #0007 @@ -1962,7 +1958,7 @@ be_local_closure(class_Matter_TLV_item_set_anonymoustag, /* name */ be_str_weak(set_anonymoustag), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04014B, // 0000 GETMET R1 R0 K75 + 0x8C04014A, // 0000 GETMET R1 R0 K74 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -2014,8 +2010,8 @@ be_local_class(Matter_TLV_item, })), be_str_weak(Matter_TLV_item) ); -// compact class 'Matter_TLV_list' ktab size: 50, total: 94 (saved 352 bytes) -static const bvalue be_ktab_class_Matter_TLV_list[50] = { +// compact class 'Matter_TLV_list' ktab size: 49, total: 94 (saved 360 bytes) +static const bvalue be_ktab_class_Matter_TLV_list[49] = { /* K0 */ be_nested_str_weak(findsub), /* K1 */ be_nested_str_weak(val), /* K2 */ be_nested_str_weak(_encode_tag), @@ -2065,7 +2061,6 @@ static const bvalue be_ktab_class_Matter_TLV_list[50] = { /* K46 */ be_nested_str_weak(_X20), /* K47 */ be_nested_str_weak(_encode_tag_len), /* K48 */ be_nested_str_weak(encode_len), - /* K49 */ be_const_int(1), }; @@ -2868,9 +2863,9 @@ be_local_closure(class_Matter_TLV_list_encode_len, /* name */ 0x8C0C0730, // 000A GETMET R3 R3 K48 0x7C0C0200, // 000B CALL R3 1 0x00040203, // 000C ADD R1 R1 R3 - 0x00080531, // 000D ADD R2 R2 K49 + 0x0008050B, // 000D ADD R2 R2 K11 0x7001FFF3, // 000E JMP #0003 - 0x00040331, // 000F ADD R1 R1 K49 + 0x0004030B, // 000F ADD R1 R1 K11 0x80040200, // 0010 RET 1 R1 }) ) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h index 03cd00f28..d3a39ff4e 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h @@ -110,8 +110,8 @@ be_local_class(Matter_UDPPacket_sent, be_str_weak(Matter_UDPPacket_sent) ); extern const bclass be_class_Matter_UDPServer; -// compact class 'Matter_UDPServer' ktab size: 65, total: 103 (saved 304 bytes) -static const bvalue be_ktab_class_Matter_UDPServer[65] = { +// compact class 'Matter_UDPServer' ktab size: 61, total: 103 (saved 336 bytes) +static const bvalue be_ktab_class_Matter_UDPServer[61] = { /* K0 */ be_nested_str_weak(loop), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(UDPPacket_sent), @@ -156,27 +156,23 @@ static const bvalue be_ktab_class_Matter_UDPServer[65] = { /* K41 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D), /* K42 */ be_nested_str_weak(millis), /* K43 */ be_nested_str_weak(_backoff_time), - /* K44 */ be_const_int(1), - /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i), - /* K46 */ be_nested_str_weak(session_id), - /* K47 */ be_const_int(3), - /* K48 */ be_const_class(be_class_Matter_UDPServer), - /* K49 */ be_nested_str_weak(math), - /* K50 */ be_nested_str_weak(rand), - /* K51 */ be_const_int(0), - /* K52 */ be_const_int(1), - /* K53 */ be_const_real_hex(0x3FCCCCCD), - /* K54 */ be_const_real_hex(0x3F800000), - /* K55 */ be_const_real_hex(0x3E800000), - /* K56 */ be_nested_str_weak(profiler), - /* K57 */ be_nested_str_weak(read), - /* K58 */ be_nested_str_weak(packet), - /* K59 */ be_nested_str_weak(start), - /* K60 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K61 */ be_nested_str_weak(dump), - /* K62 */ be_const_int(2), - /* K63 */ be_nested_str_weak(MAX_PACKETS_READ), - /* K64 */ be_nested_str_weak(_resend_packets), + /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i), + /* K45 */ be_nested_str_weak(session_id), + /* K46 */ be_const_class(be_class_Matter_UDPServer), + /* K47 */ be_nested_str_weak(math), + /* K48 */ be_nested_str_weak(rand), + /* K49 */ be_const_real_hex(0x3FCCCCCD), + /* K50 */ be_const_real_hex(0x3F800000), + /* K51 */ be_const_real_hex(0x3E800000), + /* K52 */ be_nested_str_weak(profiler), + /* K53 */ be_nested_str_weak(read), + /* K54 */ be_nested_str_weak(packet), + /* K55 */ be_nested_str_weak(start), + /* K56 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K57 */ be_nested_str_weak(dump), + /* K58 */ be_const_int(2), + /* K59 */ be_nested_str_weak(MAX_PACKETS_READ), + /* K60 */ be_nested_str_weak(_resend_packets), }; @@ -575,9 +571,9 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ 0x000C0604, // 0021 ADD R3 R3 R4 0x900A4C03, // 0022 SETMBR R2 K38 R3 0x880C0527, // 0023 GETMBR R3 R2 K39 - 0x000C072C, // 0024 ADD R3 R3 K44 + 0x000C070F, // 0024 ADD R3 R3 K15 0x900A4E03, // 0025 SETMBR R2 K39 R3 - 0x0004032C, // 0026 ADD R1 R1 K44 + 0x0004030F, // 0026 ADD R1 R1 K15 0x7002000D, // 0027 JMP #0036 0x880C0105, // 0028 GETMBR R3 R0 K5 0x8C0C070A, // 0029 GETMET R3 R3 K10 @@ -585,16 +581,16 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */ 0x7C0C0400, // 002B CALL R3 2 0xB80E1A00, // 002C GETNGBL R3 K13 0x60100018, // 002D GETGBL R4 G24 - 0x5814002D, // 002E LDCONST R5 K45 - 0x8818052E, // 002F GETMBR R6 R2 K46 + 0x5814002C, // 002E LDCONST R5 K44 + 0x8818052D, // 002F GETMBR R6 R2 K45 0x881C0514, // 0030 GETMBR R7 R2 K20 0x88200515, // 0031 GETMBR R8 R2 K21 0x88240504, // 0032 GETMBR R9 R2 K4 0x7C100A00, // 0033 CALL R4 5 - 0x5814002F, // 0034 LDCONST R5 K47 + 0x5814001F, // 0034 LDCONST R5 K31 0x7C0C0400, // 0035 CALL R3 2 0x70020000, // 0036 JMP #0038 - 0x0004032C, // 0037 ADD R1 R1 K44 + 0x0004030F, // 0037 ADD R1 R1 K15 0x7001FFC7, // 0038 JMP #0001 0x80000000, // 0039 RET 0 }) @@ -646,30 +642,30 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */ be_str_weak(_backoff_time), &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0x58040030, // 0000 LDCONST R1 K48 + 0x5804002E, // 0000 LDCONST R1 K46 0x84080000, // 0001 CLOSURE R2 P0 - 0xA40E6200, // 0002 IMPORT R3 K49 + 0xA40E5E00, // 0002 IMPORT R3 K47 0x5412012B, // 0003 LDINT R4 300 0x6014000A, // 0004 GETGBL R5 G10 - 0x8C180732, // 0005 GETMET R6 R3 K50 + 0x8C180730, // 0005 GETMET R6 R3 K48 0x7C180200, // 0006 CALL R6 1 0x541E00FE, // 0007 LDINT R7 255 0x2C180C07, // 0008 AND R6 R6 R7 0x7C140200, // 0009 CALL R5 1 0x541A00FE, // 000A LDINT R6 255 0x0C140A06, // 000B DIV R5 R5 R6 - 0x24180133, // 000C GT R6 R0 K51 + 0x24180109, // 000C GT R6 R0 K9 0x781A0001, // 000D JMPF R6 #0010 - 0x04180134, // 000E SUB R6 R0 K52 + 0x0418010F, // 000E SUB R6 R0 K15 0x70020000, // 000F JMP #0011 - 0x58180033, // 0010 LDCONST R6 K51 + 0x58180009, // 0010 LDCONST R6 K9 0x5C1C0400, // 0011 MOVE R7 R2 - 0x58200035, // 0012 LDCONST R8 K53 + 0x58200031, // 0012 LDCONST R8 K49 0x5C240C00, // 0013 MOVE R9 R6 0x7C1C0400, // 0014 CALL R7 2 0x081C0807, // 0015 MUL R7 R4 R7 - 0x08200B37, // 0016 MUL R8 R5 K55 - 0x00226C08, // 0017 ADD R8 K54 R8 + 0x08200B33, // 0016 MUL R8 R5 K51 + 0x00226408, // 0017 ADD R8 K50 R8 0x081C0E08, // 0018 MUL R7 R7 R8 0x60200009, // 0019 GETGBL R8 G9 0x5C240E00, // 001A MOVE R9 R7 @@ -699,7 +695,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ &be_const_str_solidified, ( &(const binstruction[59]) { /* code */ 0xB8060200, // 0000 GETNGBL R1 K1 - 0x88040338, // 0001 GETMBR R1 R1 K56 + 0x88040334, // 0001 GETMBR R1 R1 K52 0x58080009, // 0002 LDCONST R2 K9 0x880C0111, // 0003 GETMBR R3 R0 K17 0x4C100000, // 0004 LDNIL R4 @@ -707,16 +703,16 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x780E0000, // 0006 JMPF R3 #0008 0x80000600, // 0007 RET 0 0x880C0111, // 0008 GETMBR R3 R0 K17 - 0x8C0C0739, // 0009 GETMET R3 R3 K57 - 0x8814013A, // 000A GETMBR R5 R0 K58 + 0x8C0C0735, // 0009 GETMET R3 R3 K53 + 0x88140136, // 000A GETMBR R5 R0 K54 0x7C0C0400, // 000B CALL R3 2 0x4C100000, // 000C LDNIL R4 0x20100604, // 000D NE R4 R3 R4 0x78120028, // 000E JMPF R4 #0038 - 0x8C10033B, // 000F GETMET R4 R1 K59 + 0x8C100337, // 000F GETMET R4 R1 K55 0x7C100200, // 0010 CALL R4 1 - 0x90027403, // 0011 SETMBR R0 K58 R3 - 0x0008052C, // 0012 ADD R2 R2 K44 + 0x90026C03, // 0011 SETMBR R0 K54 R3 + 0x0008050F, // 0012 ADD R2 R2 K15 0x88100111, // 0013 GETMBR R4 R0 K17 0x8810091B, // 0014 GETMBR R4 R4 K27 0x88140111, // 0015 GETMBR R5 R0 K17 @@ -728,7 +724,7 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x781A0007, // 001B JMPF R6 #0024 0xB81A1A00, // 001C GETNGBL R6 K13 0x601C0018, // 001D GETGBL R7 G24 - 0x5820003C, // 001E LDCONST R8 K60 + 0x58200038, // 001E LDCONST R8 K56 0x5C240800, // 001F MOVE R9 R4 0x5C280A00, // 0020 MOVE R10 R5 0x7C1C0600, // 0021 CALL R7 3 @@ -741,20 +737,20 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */ 0x5C240800, // 0028 MOVE R9 R4 0x5C280A00, // 0029 MOVE R10 R5 0x7C180800, // 002A CALL R6 4 - 0x8C18033D, // 002B GETMET R6 R1 K61 - 0x5820003E, // 002C LDCONST R8 K62 + 0x8C180339, // 002B GETMET R6 R1 K57 + 0x5820003A, // 002C LDCONST R8 K58 0x7C180400, // 002D CALL R6 2 - 0x8818013F, // 002E GETMBR R6 R0 K63 + 0x8818013B, // 002E GETMBR R6 R0 K59 0x14180406, // 002F LT R6 R2 R6 0x781A0004, // 0030 JMPF R6 #0036 0x88180111, // 0031 GETMBR R6 R0 K17 - 0x8C180D39, // 0032 GETMET R6 R6 K57 + 0x8C180D35, // 0032 GETMET R6 R6 K53 0x7C180200, // 0033 CALL R6 1 0x5C0C0C00, // 0034 MOVE R3 R6 0x70020000, // 0035 JMP #0037 0x4C0C0000, // 0036 LDNIL R3 0x7001FFD3, // 0037 JMP #000C - 0x8C100140, // 0038 GETMET R4 R0 K64 + 0x8C10013C, // 0038 GETMET R4 R0 K60 0x7C100200, // 0039 CALL R4 1 0x80000000, // 003A RET 0 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h index 5d41a53fa..2e8ea0789 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Autoconf' ktab size: 127, total: 205 (saved 624 bytes) -static const bvalue be_ktab_class_Autoconf[127] = { +// compact class 'Autoconf' ktab size: 124, total: 205 (saved 648 bytes) +static const bvalue be_ktab_class_Autoconf[124] = { /* K0 */ be_nested_str(webserver), /* K1 */ be_nested_str(path), /* K2 */ be_nested_str(check_privileged_access), @@ -105,33 +105,30 @@ static const bvalue be_ktab_class_Autoconf[127] = { /* K97 */ be_nested_str(stop_iteration), /* K98 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E), /* K99 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E), - /* K100 */ be_const_int(0), - /* K101 */ be_nested_str(listdir), - /* K102 */ be_nested_str(_X2F), - /* K103 */ be_nested_str(find), - /* K104 */ be_nested_str(_X2Eautoconf), - /* K105 */ be_nested_str(remove), - /* K106 */ be_nested_str(_X2F_X2Eautoconf), - /* K107 */ be_nested_str(json), - /* K108 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson), - /* K109 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27), - /* K110 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i), - /* K111 */ be_nested_str(get_string), - /* K112 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27), - /* K113 */ be_nested_str(files), - /* K114 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27), - /* K115 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - /* K116 */ be_nested_str(add_driver), - /* K117 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29), - /* K118 */ be_const_int(2), - /* K119 */ be_const_int(1), - /* K120 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found), - /* K121 */ be_nested_str(_X23preinit_X2Ebe), - /* K122 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27), - /* K123 */ be_nested_str(on), - /* K124 */ be_nested_str(_X2Fac), - /* K125 */ be_nested_str(HTTP_GET), - /* K126 */ be_nested_str(HTTP_POST), + /* K100 */ be_nested_str(listdir), + /* K101 */ be_nested_str(_X2F), + /* K102 */ be_nested_str(find), + /* K103 */ be_nested_str(_X2Eautoconf), + /* K104 */ be_nested_str(remove), + /* K105 */ be_nested_str(_X2F_X2Eautoconf), + /* K106 */ be_nested_str(json), + /* K107 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson), + /* K108 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27), + /* K109 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i), + /* K110 */ be_nested_str(get_string), + /* K111 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27), + /* K112 */ be_nested_str(files), + /* K113 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27), + /* K114 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), + /* K115 */ be_nested_str(add_driver), + /* K116 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29), + /* K117 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found), + /* K118 */ be_nested_str(_X23preinit_X2Ebe), + /* K119 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27), + /* K120 */ be_nested_str(on), + /* K121 */ be_nested_str(_X2Fac), + /* K122 */ be_nested_str(HTTP_GET), + /* K123 */ be_nested_str(HTTP_POST), }; @@ -702,7 +699,7 @@ be_local_closure(class_Autoconf_get_current_module_name, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x5405FFF5, // 0000 LDINT R1 -10 - 0x4006C801, // 0001 CONNECT R1 K100 R1 + 0x40068201, // 0001 CONNECT R1 K65 R1 0x88080127, // 0002 GETMBR R2 R0 K39 0x94040401, // 0003 GETIDX R1 R2 R1 0x80040200, // 0004 RET 1 R1 @@ -731,8 +728,8 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ ( &(const binstruction[25]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 0xA40A8C00, // 0001 IMPORT R2 K70 - 0x8C0C0365, // 0002 GETMET R3 R1 K101 - 0x58140066, // 0003 LDCONST R5 K102 + 0x8C0C0364, // 0002 GETMET R3 R1 K100 + 0x58140065, // 0003 LDCONST R5 K101 0x7C0C0400, // 0004 CALL R3 2 0x60100010, // 0005 GETGBL R4 G16 0x5C140600, // 0006 MOVE R5 R3 @@ -740,13 +737,13 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */ 0xA802000B, // 0008 EXBLK 0 #0015 0x5C140800, // 0009 MOVE R5 R4 0x7C140000, // 000A CALL R5 0 - 0x8C180567, // 000B GETMET R6 R2 K103 + 0x8C180566, // 000B GETMET R6 R2 K102 0x5C200A00, // 000C MOVE R8 R5 - 0x58240068, // 000D LDCONST R9 K104 + 0x58240067, // 000D LDCONST R9 K103 0x7C180600, // 000E CALL R6 3 0x24180D41, // 000F GT R6 R6 K65 0x781A0002, // 0010 JMPF R6 #0014 - 0x8C180369, // 0011 GETMET R6 R1 K105 + 0x8C180368, // 0011 GETMET R6 R1 K104 0x5C200A00, // 0012 MOVE R8 R5 0x7C180400, // 0013 CALL R6 2 0x7001FFF3, // 0014 JMP #0009 @@ -778,7 +775,7 @@ be_local_closure(class_Autoconf_set_first_time, /* name */ &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x60040011, // 0000 GETGBL R1 G17 - 0x5808006A, // 0001 LDCONST R2 K106 + 0x58080069, // 0001 LDCONST R2 K105 0x580C0031, // 0002 LDCONST R3 K49 0x7C040400, // 0003 CALL R1 2 0x8C08031B, // 0004 GETMET R2 R1 K27 @@ -807,10 +804,10 @@ be_local_closure(class_Autoconf_load_templates, /* name */ &be_const_str_load_templates, &be_const_str_solidified, ( &(const binstruction[85]) { /* code */ - 0xA406D600, // 0000 IMPORT R1 K107 + 0xA406D400, // 0000 IMPORT R1 K106 0xA8020042, // 0001 EXBLK 0 #0045 0x60080018, // 0002 GETGBL R2 G24 - 0x580C006C, // 0003 LDCONST R3 K108 + 0x580C006B, // 0003 LDCONST R3 K107 0xB8120A00, // 0004 GETNGBL R4 K5 0x8C100912, // 0005 GETMET R4 R4 K18 0x7C100200, // 0006 CALL R4 1 @@ -818,7 +815,7 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0xB80E0A00, // 0008 GETNGBL R3 K5 0x8C0C0706, // 0009 GETMET R3 R3 K6 0x60140018, // 000A GETGBL R5 G24 - 0x5818006D, // 000B LDCONST R6 K109 + 0x5818006C, // 000B LDCONST R6 K108 0x5C1C0400, // 000C MOVE R7 R2 0x7C140400, // 000D CALL R5 2 0x5818003A, // 000E LDCONST R6 K58 @@ -836,7 +833,7 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0xB8160A00, // 001A GETNGBL R5 K5 0x8C140B06, // 001B GETMET R5 R5 K6 0x601C0018, // 001C GETGBL R7 G24 - 0x5820006E, // 001D LDCONST R8 K110 + 0x5820006D, // 001D LDCONST R8 K109 0x5C240800, // 001E MOVE R9 R4 0x7C1C0400, // 001F CALL R7 2 0x58200008, // 0020 LDCONST R8 K8 @@ -844,7 +841,7 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0x4C140000, // 0022 LDNIL R5 0xA8040001, // 0023 EXBLK 1 1 0x80040A00, // 0024 RET 1 R5 - 0x8C14076F, // 0025 GETMET R5 R3 K111 + 0x8C14076E, // 0025 GETMET R5 R3 K110 0x7C140200, // 0026 CALL R5 1 0x8C18071B, // 0027 GETMET R6 R3 K27 0x7C180200, // 0028 CALL R6 1 @@ -854,15 +851,15 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0xB81E0A00, // 002C GETNGBL R7 K5 0x8C1C0F06, // 002D GETMET R7 R7 K6 0x60240018, // 002E GETGBL R9 G24 - 0x58280070, // 002F LDCONST R10 K112 + 0x5828006F, // 002F LDCONST R10 K111 0x602C0008, // 0030 GETGBL R11 G8 0x5C300C00, // 0031 MOVE R12 R6 0x7C2C0200, // 0032 CALL R11 1 0x7C240400, // 0033 CALL R9 2 0x5828003A, // 0034 LDCONST R10 K58 0x7C1C0600, // 0035 CALL R7 3 - 0x8C1C0D67, // 0036 GETMET R7 R6 K103 - 0x58240071, // 0037 LDCONST R9 K113 + 0x8C1C0D66, // 0036 GETMET R7 R6 K102 + 0x58240070, // 0037 LDCONST R9 K112 0x7C1C0400, // 0038 CALL R7 2 0x6020000F, // 0039 GETGBL R8 G15 0x5C240E00, // 003A MOVE R9 R7 @@ -881,7 +878,7 @@ be_local_closure(class_Autoconf_load_templates, /* name */ 0xB8120A00, // 0047 GETNGBL R4 K5 0x8C100906, // 0048 GETMET R4 R4 K6 0x60180018, // 0049 GETGBL R6 G24 - 0x581C0072, // 004A LDCONST R7 K114 + 0x581C0071, // 004A LDCONST R7 K113 0x5C200400, // 004B MOVE R8 R2 0x5C240600, // 004C MOVE R9 R3 0x7C180600, // 004D CALL R6 3 @@ -917,7 +914,7 @@ be_local_closure(class_Autoconf_web_add_config_button, /* name */ ( &(const binstruction[ 5]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x8C080322, // 0001 GETMET R2 R1 K34 - 0x58100073, // 0002 LDCONST R4 K115 + 0x58100072, // 0002 LDCONST R4 K114 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 }) @@ -945,7 +942,7 @@ be_local_closure(class_Autoconf_is_first_time, /* name */ ( &(const binstruction[ 8]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 0x8C08032A, // 0001 GETMET R2 R1 K42 - 0x5810006A, // 0002 LDCONST R4 K106 + 0x58100069, // 0002 LDCONST R4 K105 0x7C080400, // 0003 CALL R2 2 0x780A0000, // 0004 JMPF R2 #0006 0x50080001, // 0005 LDBOOL R2 0 1 @@ -976,12 +973,12 @@ be_local_closure(class_Autoconf_init, /* name */ ( &(const binstruction[53]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 0xA40A8C00, // 0001 IMPORT R2 K70 - 0x8C0C0365, // 0002 GETMET R3 R1 K101 - 0x58140066, // 0003 LDCONST R5 K102 + 0x8C0C0364, // 0002 GETMET R3 R1 K100 + 0x58140065, // 0003 LDCONST R5 K101 0x7C0C0400, // 0004 CALL R3 2 0x4C100000, // 0005 LDNIL R4 0xB8160A00, // 0006 GETNGBL R5 K5 - 0x8C140B74, // 0007 GETMET R5 R5 K116 + 0x8C140B73, // 0007 GETMET R5 R5 K115 0x5C1C0000, // 0008 MOVE R7 R0 0x7C140400, // 0009 CALL R5 2 0x58140041, // 000A LDCONST R5 K65 @@ -990,9 +987,9 @@ be_local_closure(class_Autoconf_init, /* name */ 0x7C180200, // 000D CALL R6 1 0x14180A06, // 000E LT R6 R5 R6 0x781A0018, // 000F JMPF R6 #0029 - 0x8C180567, // 0010 GETMET R6 R2 K103 + 0x8C180566, // 0010 GETMET R6 R2 K102 0x94200605, // 0011 GETIDX R8 R3 R5 - 0x58240068, // 0012 LDCONST R9 K104 + 0x58240067, // 0012 LDCONST R9 K103 0x7C180600, // 0013 CALL R6 3 0x24180D41, // 0014 GT R6 R6 K65 0x781A0010, // 0015 JMPF R6 #0027 @@ -1002,25 +999,25 @@ be_local_closure(class_Autoconf_init, /* name */ 0xB81A0A00, // 0019 GETNGBL R6 K5 0x8C180D06, // 001A GETMET R6 R6 K6 0x60200018, // 001B GETGBL R8 G24 - 0x58240075, // 001C LDCONST R9 K117 + 0x58240074, // 001C LDCONST R9 K116 0x5C280800, // 001D MOVE R10 R4 0x942C0605, // 001E GETIDX R11 R3 R5 0x7C200600, // 001F CALL R8 3 - 0x58240076, // 0020 LDCONST R9 K118 + 0x58240008, // 0020 LDCONST R9 K8 0x7C180600, // 0021 CALL R6 3 0x50180200, // 0022 LDBOOL R6 1 0 0x90029C06, // 0023 SETMBR R0 K78 R6 0x4C180000, // 0024 LDNIL R6 0x80040C00, // 0025 RET 1 R6 0x94100605, // 0026 GETIDX R4 R3 R5 - 0x00140B77, // 0027 ADD R5 R5 K119 + 0x00140B45, // 0027 ADD R5 R5 K69 0x7001FFE1, // 0028 JMP #000B 0x4C180000, // 0029 LDNIL R6 0x1C180806, // 002A EQ R6 R4 R6 0x781A0006, // 002B JMPF R6 #0033 0xB81A0A00, // 002C GETNGBL R6 K5 0x8C180D06, // 002D GETMET R6 R6 K6 - 0x58200078, // 002E LDCONST R8 K120 + 0x58200075, // 002E LDCONST R8 K117 0x5824003A, // 002F LDCONST R9 K58 0x7C180600, // 0030 CALL R6 3 0x4C180000, // 0031 LDNIL R6 @@ -1057,7 +1054,7 @@ be_local_closure(class_Autoconf_preinit, /* name */ 0x80000200, // 0004 RET 0 0xA4060200, // 0005 IMPORT R1 K1 0x88080127, // 0006 GETMBR R2 R0 K39 - 0x00080579, // 0007 ADD R2 R2 K121 + 0x00080576, // 0007 ADD R2 R2 K118 0x8C0C032A, // 0008 GETMET R3 R1 K42 0x5C140400, // 0009 MOVE R5 R2 0x7C0C0400, // 000A CALL R3 2 @@ -1101,33 +1098,33 @@ be_local_closure(class_Autoconf_reset, /* name */ ( &(const binstruction[35]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 0xA40A8C00, // 0001 IMPORT R2 K70 - 0x8C0C0365, // 0002 GETMET R3 R1 K101 - 0x58140066, // 0003 LDCONST R5 K102 + 0x8C0C0364, // 0002 GETMET R3 R1 K100 + 0x58140065, // 0003 LDCONST R5 K101 0x7C0C0400, // 0004 CALL R3 2 0x4C100000, // 0005 LDNIL R4 - 0x58140064, // 0006 LDCONST R5 K100 + 0x58140041, // 0006 LDCONST R5 K65 0x6018000C, // 0007 GETGBL R6 G12 0x5C1C0600, // 0008 MOVE R7 R3 0x7C180200, // 0009 CALL R6 1 0x14180A06, // 000A LT R6 R5 R6 0x781A0011, // 000B JMPF R6 #001E 0x94180605, // 000C GETIDX R6 R3 R5 - 0x8C1C0567, // 000D GETMET R7 R2 K103 + 0x8C1C0566, // 000D GETMET R7 R2 K102 0x5C240C00, // 000E MOVE R9 R6 - 0x58280068, // 000F LDCONST R10 K104 + 0x58280067, // 000F LDCONST R10 K103 0x7C1C0600, // 0010 CALL R7 3 - 0x241C0F64, // 0011 GT R7 R7 K100 + 0x241C0F41, // 0011 GT R7 R7 K65 0x781E0008, // 0012 JMPF R7 #001C - 0x8C1C0369, // 0013 GETMET R7 R1 K105 + 0x8C1C0368, // 0013 GETMET R7 R1 K104 0x5C240C00, // 0014 MOVE R9 R6 0x7C1C0400, // 0015 CALL R7 2 0x601C0001, // 0016 GETGBL R7 G1 0x60200018, // 0017 GETGBL R8 G24 - 0x5824007A, // 0018 LDCONST R9 K122 + 0x58240077, // 0018 LDCONST R9 K119 0x5C280C00, // 0019 MOVE R10 R6 0x7C200400, // 001A CALL R8 2 0x7C1C0200, // 001B CALL R7 1 - 0x00140B77, // 001C ADD R5 R5 K119 + 0x00140B45, // 001C ADD R5 R5 K69 0x7001FFE8, // 001D JMP #0007 0x4C180000, // 001E LDNIL R6 0x90024E06, // 001F SETMBR R0 K39 R6 @@ -1205,15 +1202,15 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */ &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C08037B, // 0001 GETMET R2 R1 K123 - 0x5810007C, // 0002 LDCONST R4 K124 + 0x8C080378, // 0001 GETMET R2 R1 K120 + 0x58100079, // 0002 LDCONST R4 K121 0x84140000, // 0003 CLOSURE R5 P0 - 0x8818037D, // 0004 GETMBR R6 R1 K125 + 0x8818037A, // 0004 GETMBR R6 R1 K122 0x7C080800, // 0005 CALL R2 4 - 0x8C08037B, // 0006 GETMET R2 R1 K123 - 0x5810007C, // 0007 LDCONST R4 K124 + 0x8C080378, // 0006 GETMET R2 R1 K120 + 0x58100079, // 0007 LDCONST R4 K121 0x84140001, // 0008 CLOSURE R5 P1 - 0x8818037E, // 0009 GETMBR R6 R1 K126 + 0x8818037B, // 0009 GETMBR R6 R1 K123 0x7C080800, // 000A CALL R2 4 0xA0000000, // 000B CLOSE R0 0x80000000, // 000C RET 0 @@ -1241,8 +1238,8 @@ be_local_closure(class_Autoconf_clear_first_time, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 - 0x8C080369, // 0001 GETMET R2 R1 K105 - 0x5810006A, // 0002 LDCONST R4 K106 + 0x8C080368, // 0001 GETMET R2 R1 K104 + 0x58100069, // 0002 LDCONST R4 K105 0x7C080400, // 0003 CALL R2 2 0x80000000, // 0004 RET 0 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h index 503eed7e2..567efa5eb 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'hue_bridge_monad' ktab size: 51, total: 85 (saved 272 bytes) -static const bvalue be_ktab_class_hue_bridge_monad[51] = { +// compact class 'hue_bridge_monad' ktab size: 50, total: 85 (saved 280 bytes) +static const bvalue be_ktab_class_hue_bridge_monad[50] = { /* K0 */ be_nested_str(hue_ntv), /* K1 */ be_nested_str(lights), /* K2 */ be_nested_str(contains), @@ -30,32 +30,31 @@ static const bvalue be_ktab_class_hue_bridge_monad[51] = { /* K22 */ be_nested_str(_X22_X3A), /* K23 */ be_nested_str(push), /* K24 */ be_nested_str(stop_iteration), - /* K25 */ be_const_int(0), - /* K26 */ be_nested_str(concat), - /* K27 */ be_nested_str(_X2C), - /* K28 */ be_nested_str(load), - /* K29 */ be_nested_str(tasmota), - /* K30 */ be_nested_str(log), - /* K31 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20), - /* K32 */ be_const_int(3), - /* K33 */ be_nested_str(on), - /* K34 */ be_nested_str(set_power), - /* K35 */ be_nested_str(xy), - /* K36 */ be_const_int(1), - /* K37 */ be_nested_str(set_xy), - /* K38 */ be_nested_str(hue), - /* K39 */ be_nested_str(sat), - /* K40 */ be_nested_str(type), - /* K41 */ be_nested_str(set_hue16sat), - /* K42 */ be_nested_str(ct), - /* K43 */ be_nested_str(set_ct), - /* K44 */ be_nested_str(bri), - /* K45 */ be_nested_str(set_bri), - /* K46 */ be_nested_str(_X2Flights_X2F), - /* K47 */ be_nested_str(_X2Fstate_X2F), - /* K48 */ be_nested_str(success), - /* K49 */ be_nested_str(signal_change), - /* K50 */ be_nested_str(dump), + /* K25 */ be_nested_str(concat), + /* K26 */ be_nested_str(_X2C), + /* K27 */ be_nested_str(load), + /* K28 */ be_nested_str(tasmota), + /* K29 */ be_nested_str(log), + /* K30 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20), + /* K31 */ be_const_int(3), + /* K32 */ be_nested_str(on), + /* K33 */ be_nested_str(set_power), + /* K34 */ be_nested_str(xy), + /* K35 */ be_const_int(1), + /* K36 */ be_nested_str(set_xy), + /* K37 */ be_nested_str(hue), + /* K38 */ be_nested_str(sat), + /* K39 */ be_nested_str(type), + /* K40 */ be_nested_str(set_hue16sat), + /* K41 */ be_nested_str(ct), + /* K42 */ be_nested_str(set_ct), + /* K43 */ be_nested_str(bri), + /* K44 */ be_nested_str(set_bri), + /* K45 */ be_nested_str(_X2Flights_X2F), + /* K46 */ be_nested_str(_X2Fstate_X2F), + /* K47 */ be_nested_str(success), + /* K48 */ be_nested_str(signal_change), + /* K49 */ be_nested_str(dump), }; @@ -307,10 +306,10 @@ be_local_closure(class_hue_bridge_monad_discover, /* name */ 0x6010000C, // 001D GETGBL R4 G12 0x5C140600, // 001E MOVE R5 R3 0x7C100200, // 001F CALL R4 1 - 0x24100919, // 0020 GT R4 R4 K25 + 0x2410090D, // 0020 GT R4 R4 K13 0x78120003, // 0021 JMPF R4 #0026 - 0x8C10071A, // 0022 GETMET R4 R3 K26 - 0x5818001B, // 0023 LDCONST R6 K27 + 0x8C100719, // 0022 GETMET R4 R3 K25 + 0x5818001A, // 0023 LDCONST R6 K26 0x7C100400, // 0024 CALL R4 2 0x80040800, // 0025 RET 1 R4 0x80000000, // 0026 RET 0 @@ -392,119 +391,119 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x94100904, // 0009 GETIDX R4 R4 K4 0x60140013, // 000A GETGBL R5 G19 0x7C140000, // 000B CALL R5 0 - 0x8C18071C, // 000C GETMET R6 R3 K28 + 0x8C18071B, // 000C GETMET R6 R3 K27 0x5C200400, // 000D MOVE R8 R2 0x7C180400, // 000E CALL R6 2 0x4C1C0000, // 000F LDNIL R7 0x1C1C0407, // 0010 EQ R7 R2 R7 0x781E0008, // 0011 JMPF R7 #001B - 0xB81E3A00, // 0012 GETNGBL R7 K29 - 0x8C1C0F1E, // 0013 GETMET R7 R7 K30 + 0xB81E3800, // 0012 GETNGBL R7 K28 + 0x8C1C0F1D, // 0013 GETMET R7 R7 K29 0x60240008, // 0014 GETGBL R9 G8 0x5C280400, // 0015 MOVE R10 R2 0x7C240200, // 0016 CALL R9 1 - 0x00263E09, // 0017 ADD R9 K31 R9 - 0x58280020, // 0018 LDCONST R10 K32 + 0x00263C09, // 0017 ADD R9 K30 R9 + 0x5828001F, // 0018 LDCONST R10 K31 0x7C1C0600, // 0019 CALL R7 3 0x80000E00, // 001A RET 0 0x8C1C0D02, // 001B GETMET R7 R6 K2 - 0x58240021, // 001C LDCONST R9 K33 + 0x58240020, // 001C LDCONST R9 K32 0x7C1C0400, // 001D CALL R7 2 0x781E0006, // 001E JMPF R7 #0026 0x601C0017, // 001F GETGBL R7 G23 - 0x94200D21, // 0020 GETIDX R8 R6 K33 + 0x94200D20, // 0020 GETIDX R8 R6 K32 0x7C1C0200, // 0021 CALL R7 1 - 0x98164207, // 0022 SETIDX R5 K33 R7 - 0x8C200922, // 0023 GETMET R8 R4 K34 + 0x98164007, // 0022 SETIDX R5 K32 R7 + 0x8C200921, // 0023 GETMET R8 R4 K33 0x5C280E00, // 0024 MOVE R10 R7 0x7C200400, // 0025 CALL R8 2 0x8C1C0D02, // 0026 GETMET R7 R6 K2 - 0x58240023, // 0027 LDCONST R9 K35 + 0x58240022, // 0027 LDCONST R9 K34 0x7C1C0400, // 0028 CALL R7 2 0x781E0013, // 0029 JMPF R7 #003E - 0x941C0D23, // 002A GETIDX R7 R6 K35 + 0x941C0D22, // 002A GETIDX R7 R6 K34 0x6020000A, // 002B GETGBL R8 G10 - 0x94240F19, // 002C GETIDX R9 R7 K25 + 0x94240F0D, // 002C GETIDX R9 R7 K13 0x7C200200, // 002D CALL R8 1 0x6024000A, // 002E GETGBL R9 G10 - 0x94280F24, // 002F GETIDX R10 R7 K36 + 0x94280F23, // 002F GETIDX R10 R7 K35 0x7C240200, // 0030 CALL R9 1 0x60280012, // 0031 GETGBL R10 G18 0x7C280000, // 0032 CALL R10 0 0x402C1408, // 0033 CONNECT R11 R10 R8 0x402C1409, // 0034 CONNECT R11 R10 R9 - 0x9816460A, // 0035 SETIDX R5 K35 R10 + 0x9816440A, // 0035 SETIDX R5 K34 R10 0x542AFFFF, // 0036 LDINT R10 65536 0x0820100A, // 0037 MUL R8 R8 R10 0x542AFFFF, // 0038 LDINT R10 65536 0x0824120A, // 0039 MUL R9 R9 R10 - 0x8C280925, // 003A GETMET R10 R4 K37 + 0x8C280924, // 003A GETMET R10 R4 K36 0x5C301000, // 003B MOVE R12 R8 0x5C341200, // 003C MOVE R13 R9 0x7C280600, // 003D CALL R10 3 0x501C0000, // 003E LDBOOL R7 0 0 - 0x88200926, // 003F GETMBR R8 R4 K38 - 0x88240927, // 0040 GETMBR R9 R4 K39 + 0x88200925, // 003F GETMBR R8 R4 K37 + 0x88240926, // 0040 GETMBR R9 R4 K38 0x8C280D02, // 0041 GETMET R10 R6 K2 - 0x58300026, // 0042 LDCONST R12 K38 + 0x58300025, // 0042 LDCONST R12 K37 0x7C280400, // 0043 CALL R10 2 0x782A0009, // 0044 JMPF R10 #004F 0x60280009, // 0045 GETGBL R10 G9 - 0x942C0D26, // 0046 GETIDX R11 R6 K38 + 0x942C0D25, // 0046 GETIDX R11 R6 K37 0x7C280200, // 0047 CALL R10 1 0x5C201400, // 0048 MOVE R8 R10 - 0x98164C08, // 0049 SETIDX R5 K38 R8 + 0x98164A08, // 0049 SETIDX R5 K37 R8 0x542AFFFE, // 004A LDINT R10 65535 0x2428100A, // 004B GT R10 R8 R10 0x782A0000, // 004C JMPF R10 #004E 0x5422FFFE, // 004D LDINT R8 65535 0x501C0200, // 004E LDBOOL R7 1 0 0x8C280D02, // 004F GETMET R10 R6 K2 - 0x58300027, // 0050 LDCONST R12 K39 + 0x58300026, // 0050 LDCONST R12 K38 0x7C280400, // 0051 CALL R10 2 0x782A000C, // 0052 JMPF R10 #0060 0x60280009, // 0053 GETGBL R10 G9 - 0x942C0D27, // 0054 GETIDX R11 R6 K39 + 0x942C0D26, // 0054 GETIDX R11 R6 K38 0x7C280200, // 0055 CALL R10 1 0x5C241400, // 0056 MOVE R9 R10 - 0x98164E09, // 0057 SETIDX R5 K39 R9 + 0x98164C09, // 0057 SETIDX R5 K38 R9 0x542A00FD, // 0058 LDINT R10 254 0x2828120A, // 0059 GE R10 R9 R10 0x782A0000, // 005A JMPF R10 #005C 0x542600FE, // 005B LDINT R9 255 - 0x88280928, // 005C GETMBR R10 R4 K40 - 0x28281520, // 005D GE R10 R10 K32 + 0x88280927, // 005C GETMBR R10 R4 K39 + 0x2828151F, // 005D GE R10 R10 K31 0x782A0000, // 005E JMPF R10 #0060 0x501C0200, // 005F LDBOOL R7 1 0 0x781E0003, // 0060 JMPF R7 #0065 - 0x8C280929, // 0061 GETMET R10 R4 K41 + 0x8C280928, // 0061 GETMET R10 R4 K40 0x5C301000, // 0062 MOVE R12 R8 0x5C341200, // 0063 MOVE R13 R9 0x7C280600, // 0064 CALL R10 3 0x8C280D02, // 0065 GETMET R10 R6 K2 - 0x5830002A, // 0066 LDCONST R12 K42 + 0x58300029, // 0066 LDCONST R12 K41 0x7C280400, // 0067 CALL R10 2 0x782A0006, // 0068 JMPF R10 #0070 0x60280009, // 0069 GETGBL R10 G9 - 0x942C0D2A, // 006A GETIDX R11 R6 K42 + 0x942C0D29, // 006A GETIDX R11 R6 K41 0x7C280200, // 006B CALL R10 1 - 0x9816540A, // 006C SETIDX R5 K42 R10 - 0x8C2C092B, // 006D GETMET R11 R4 K43 + 0x9816520A, // 006C SETIDX R5 K41 R10 + 0x8C2C092A, // 006D GETMET R11 R4 K42 0x5C341400, // 006E MOVE R13 R10 0x7C2C0400, // 006F CALL R11 2 0x8C280D02, // 0070 GETMET R10 R6 K2 - 0x5830002C, // 0071 LDCONST R12 K44 + 0x5830002B, // 0071 LDCONST R12 K43 0x7C280400, // 0072 CALL R10 2 0x782A000A, // 0073 JMPF R10 #007F 0x60280009, // 0074 GETGBL R10 G9 - 0x942C0D2C, // 0075 GETIDX R11 R6 K44 + 0x942C0D2B, // 0075 GETIDX R11 R6 K43 0x7C280200, // 0076 CALL R10 1 - 0x9816580A, // 0077 SETIDX R5 K44 R10 + 0x9816560A, // 0077 SETIDX R5 K43 R10 0x542E00FD, // 0078 LDINT R11 254 0x282C140B, // 0079 GE R11 R10 R11 0x782E0000, // 007A JMPF R11 #007C 0x542A00FE, // 007B LDINT R10 255 - 0x8C2C092D, // 007C GETMET R11 R4 K45 + 0x8C2C092C, // 007C GETMET R11 R4 K44 0x5C341400, // 007D MOVE R13 R10 0x7C2C0400, // 007E CALL R11 2 0x60280012, // 007F GETGBL R10 G18 @@ -519,8 +518,8 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x60340008, // 0088 GETGBL R13 G8 0x5C380200, // 0089 MOVE R14 R1 0x7C340200, // 008A CALL R13 1 - 0x00365C0D, // 008B ADD R13 K46 R13 - 0x00341B2F, // 008C ADD R13 R13 K47 + 0x00365A0D, // 008B ADD R13 K45 R13 + 0x00341B2E, // 008C ADD R13 R13 K46 0x00341A0C, // 008D ADD R13 R13 R12 0x60380013, // 008E GETGBL R14 G19 0x7C380000, // 008F CALL R14 0 @@ -528,7 +527,7 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x7C3C0000, // 0091 CALL R15 0 0x94400A0C, // 0092 GETIDX R16 R5 R12 0x983C1A10, // 0093 SETIDX R15 R13 R16 - 0x983A600F, // 0094 SETIDX R14 K48 R15 + 0x983A5E0F, // 0094 SETIDX R14 K47 R15 0x8C3C1517, // 0095 GETMET R15 R10 K23 0x5C441C00, // 0096 MOVE R17 R14 0x7C3C0400, // 0097 CALL R15 2 @@ -539,11 +538,11 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */ 0x602C000C, // 009C GETGBL R11 G12 0x5C301400, // 009D MOVE R12 R10 0x7C2C0200, // 009E CALL R11 1 - 0x242C1719, // 009F GT R11 R11 K25 + 0x242C170D, // 009F GT R11 R11 K13 0x782E0001, // 00A0 JMPF R11 #00A3 - 0x8C2C0931, // 00A1 GETMET R11 R4 K49 + 0x8C2C0930, // 00A1 GETMET R11 R4 K48 0x7C2C0200, // 00A2 CALL R11 1 - 0x8C2C0732, // 00A3 GETMET R11 R3 K50 + 0x8C2C0731, // 00A3 GETMET R11 R3 K49 0x5C341400, // 00A4 MOVE R13 R10 0x7C2C0400, // 00A5 CALL R11 2 0x80041600, // 00A6 RET 1 R11 @@ -594,10 +593,10 @@ be_local_closure(class_hue_bridge_monad_groups, /* name */ 0x6008000C, // 0015 GETGBL R2 G12 0x5C0C0200, // 0016 MOVE R3 R1 0x7C080200, // 0017 CALL R2 1 - 0x24080519, // 0018 GT R2 R2 K25 + 0x2408050D, // 0018 GT R2 R2 K13 0x780A0003, // 0019 JMPF R2 #001E - 0x8C08031A, // 001A GETMET R2 R1 K26 - 0x5810001B, // 001B LDCONST R4 K27 + 0x8C080319, // 001A GETMET R2 R1 K25 + 0x5810001A, // 001B LDCONST R4 K26 0x7C080400, // 001C CALL R2 2 0x80040400, // 001D RET 1 R2 0x80000000, // 001E RET 0 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h index 04f8b3c49..003818560 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'AXP192' ktab size: 42, total: 82 (saved 320 bytes) -static const bvalue be_ktab_class_AXP192[42] = { +// compact class 'AXP192' ktab size: 37, total: 82 (saved 360 bytes) +static const bvalue be_ktab_class_AXP192[37] = { /* K0 */ be_const_int(1), /* K1 */ be_nested_str(write_bit), /* K2 */ be_const_int(0), @@ -15,38 +15,33 @@ static const bvalue be_ktab_class_AXP192[42] = { /* K7 */ be_nested_str(read12), /* K8 */ be_const_real_hex(0x3A902DE0), /* K9 */ be_const_real_hex(0x3EC00000), - /* K10 */ be_const_int(1), - /* K11 */ be_const_int(3), - /* K12 */ be_nested_str(wire), - /* K13 */ be_nested_str(read), - /* K14 */ be_nested_str(addr), - /* K15 */ be_const_int(0), - /* K16 */ be_const_int(1), - /* K17 */ be_const_real_hex(0x3AB78035), - /* K18 */ be_const_real_hex(0x3ADED28A), - /* K19 */ be_const_int(2), - /* K20 */ be_nested_str(write8), - /* K21 */ be_nested_str(read8), - /* K22 */ be_nested_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D), - /* K23 */ be_nested_str(get_vbus_voltage), - /* K24 */ be_nested_str(get_bat_voltage), - /* K25 */ be_nested_str(get_bat_current), - /* K26 */ be_nested_str(get_temp), - /* K27 */ be_nested_str(tasmota), - /* K28 */ be_nested_str(response_append), - /* K29 */ be_nested_str(I2C_Driver), - /* K30 */ be_nested_str(init), - /* K31 */ be_nested_str(AXP192), - /* K32 */ be_nested_str(read13), - /* K33 */ be_const_real_hex(0x3F000000), - /* K34 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), - /* K35 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), - /* K36 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), - /* K37 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), - /* K38 */ be_nested_str(_X7Bs_X7DAXP_X20Temperature_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D), - /* K39 */ be_nested_str(web_send_decimal), - /* K40 */ be_const_real_hex(0x3DCCCCCD), - /* K41 */ be_const_real_hex(0x4310B333), + /* K10 */ be_nested_str(wire), + /* K11 */ be_nested_str(read), + /* K12 */ be_nested_str(addr), + /* K13 */ be_const_real_hex(0x3AB78035), + /* K14 */ be_const_real_hex(0x3ADED28A), + /* K15 */ be_nested_str(write8), + /* K16 */ be_nested_str(read8), + /* K17 */ be_nested_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D), + /* K18 */ be_nested_str(get_vbus_voltage), + /* K19 */ be_nested_str(get_bat_voltage), + /* K20 */ be_nested_str(get_bat_current), + /* K21 */ be_nested_str(get_temp), + /* K22 */ be_nested_str(tasmota), + /* K23 */ be_nested_str(response_append), + /* K24 */ be_nested_str(I2C_Driver), + /* K25 */ be_nested_str(init), + /* K26 */ be_nested_str(AXP192), + /* K27 */ be_nested_str(read13), + /* K28 */ be_const_real_hex(0x3F000000), + /* K29 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), + /* K30 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), + /* K31 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), + /* K32 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), + /* K33 */ be_nested_str(_X7Bs_X7DAXP_X20Temperature_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D), + /* K34 */ be_nested_str(web_send_decimal), + /* K35 */ be_const_real_hex(0x3DCCCCCD), + /* K36 */ be_const_real_hex(0x4310B333), }; @@ -201,7 +196,7 @@ be_local_closure(class_AXP192_get_warning_level, /* name */ 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E0046, // 0001 LDINT R3 71 0x7C040400, // 0002 CALL R1 2 - 0x2C04030A, // 0003 AND R1 R1 K10 + 0x2C040300, // 0003 AND R1 R1 K0 0x80040200, // 0004 RET 1 R1 }) ) @@ -233,11 +228,11 @@ be_local_closure(class_AXP192_set_ldo_enable, /* name */ 0x58180003, // 0004 LDCONST R6 K3 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 - 0x1C0C030B, // 0007 EQ R3 R1 K11 + 0x1C0C0304, // 0007 EQ R3 R1 K4 0x780E0004, // 0008 JMPF R3 #000E 0x8C0C0101, // 0009 GETMET R3 R0 K1 0x54160011, // 000A LDINT R5 18 - 0x5818000B, // 000B LDCONST R6 K11 + 0x58180004, // 000B LDCONST R6 K4 0x5C1C0400, // 000C MOVE R7 R2 0x7C0C0800, // 000D CALL R3 4 0x80000000, // 000E RET 0 @@ -264,11 +259,11 @@ be_local_closure(class_AXP192_get_input_power_status, /* name */ &be_const_str_get_input_power_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x8C04030D, // 0001 GETMET R1 R1 K13 - 0x880C010E, // 0002 GETMBR R3 R0 K14 - 0x5810000F, // 0003 LDCONST R4 K15 - 0x58140010, // 0004 LDCONST R5 K16 + 0x8804010A, // 0000 GETMBR R1 R0 K10 + 0x8C04030B, // 0001 GETMET R1 R1 K11 + 0x880C010C, // 0002 GETMBR R3 R0 K12 + 0x58100002, // 0003 LDCONST R4 K2 + 0x58140000, // 0004 LDCONST R5 K0 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -297,7 +292,7 @@ be_local_closure(class_AXP192_get_aps_voltage, /* name */ 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E007D, // 0001 LDINT R3 126 0x7C040400, // 0002 CALL R1 2 - 0x08040311, // 0003 MUL R1 R1 K17 + 0x0804030D, // 0003 MUL R1 R1 K13 0x80040200, // 0004 RET 1 R1 }) ) @@ -351,11 +346,11 @@ be_local_closure(class_AXP192_battery_present, /* name */ &be_const_str_battery_present, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x8C04030D, // 0001 GETMET R1 R1 K13 - 0x880C010E, // 0002 GETMBR R3 R0 K14 - 0x58100010, // 0003 LDCONST R4 K16 - 0x58140010, // 0004 LDCONST R5 K16 + 0x8804010A, // 0000 GETMBR R1 R0 K10 + 0x8C04030B, // 0001 GETMET R1 R1 K11 + 0x880C010C, // 0002 GETMBR R3 R0 K12 + 0x58100000, // 0003 LDCONST R4 K0 + 0x58140000, // 0004 LDCONST R5 K0 0x7C040800, // 0005 CALL R1 4 0x540A001F, // 0006 LDINT R2 32 0x2C040202, // 0007 AND R1 R1 R2 @@ -392,7 +387,7 @@ be_local_closure(class_AXP192_get_vbus_voltage, /* name */ 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E0059, // 0001 LDINT R3 90 0x7C040400, // 0002 CALL R1 2 - 0x08040312, // 0003 MUL R1 R1 K18 + 0x0804030E, // 0003 MUL R1 R1 K14 0x80040200, // 0004 RET 1 R1 }) ) @@ -417,9 +412,9 @@ be_local_closure(class_AXP192_write_gpio, /* name */ &be_const_str_write_gpio, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x280C030F, // 0000 GE R3 R1 K15 + 0x280C0302, // 0000 GE R3 R1 K2 0x780E0007, // 0001 JMPF R3 #000A - 0x180C0313, // 0002 LE R3 R1 K19 + 0x180C0303, // 0002 LE R3 R1 K3 0x780E0005, // 0003 JMPF R3 #000A 0x8C0C0101, // 0004 GETMET R3 R0 K1 0x54160093, // 0005 LDINT R5 148 @@ -427,14 +422,14 @@ be_local_closure(class_AXP192_write_gpio, /* name */ 0x5C1C0400, // 0007 MOVE R7 R2 0x7C0C0800, // 0008 CALL R3 4 0x70020009, // 0009 JMP #0014 - 0x280C030B, // 000A GE R3 R1 K11 + 0x280C0304, // 000A GE R3 R1 K4 0x780E0007, // 000B JMPF R3 #0014 0x540E0003, // 000C LDINT R3 4 0x180C0203, // 000D LE R3 R1 R3 0x780E0004, // 000E JMPF R3 #0014 0x8C0C0101, // 000F GETMET R3 R0 K1 0x54160095, // 0010 LDINT R5 150 - 0x0418030B, // 0011 SUB R6 R1 K11 + 0x04180304, // 0011 SUB R6 R1 K4 0x5C1C0400, // 0012 MOVE R7 R2 0x7C0C0800, // 0013 CALL R3 4 0x80000000, // 0014 RET 0 @@ -471,11 +466,11 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ 0x54120011, // 0007 LDINT R4 18 0x040C0604, // 0008 SUB R3 R3 R4 0x5C080600, // 0009 MOVE R2 R3 - 0x1C0C0313, // 000A EQ R3 R1 K19 + 0x1C0C0303, // 000A EQ R3 R1 K3 0x780E000C, // 000B JMPF R3 #0019 - 0x8C0C0114, // 000C GETMET R3 R0 K20 + 0x8C0C010F, // 000C GETMET R3 R0 K15 0x54160027, // 000D LDINT R5 40 - 0x8C180115, // 000E GETMET R6 R0 K21 + 0x8C180110, // 000E GETMET R6 R0 K16 0x54220027, // 000F LDINT R8 40 0x7C180400, // 0010 CALL R6 2 0x541E000E, // 0011 LDINT R7 15 @@ -486,11 +481,11 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */ 0x381C0E08, // 0016 SHL R7 R7 R8 0x30180C07, // 0017 OR R6 R6 R7 0x7C0C0600, // 0018 CALL R3 3 - 0x1C0C030B, // 0019 EQ R3 R1 K11 + 0x1C0C0304, // 0019 EQ R3 R1 K4 0x780E000A, // 001A JMPF R3 #0026 - 0x8C0C0114, // 001B GETMET R3 R0 K20 + 0x8C0C010F, // 001B GETMET R3 R0 K15 0x54160027, // 001C LDINT R5 40 - 0x8C180115, // 001D GETMET R6 R0 K21 + 0x8C180110, // 001D GETMET R6 R0 K16 0x54220027, // 001E LDINT R8 40 0x7C180400, // 001F CALL R6 2 0x541E00EF, // 0020 LDINT R7 240 @@ -523,25 +518,25 @@ be_local_closure(class_AXP192_json_append, /* name */ &be_const_str_json_append, &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8804010A, // 0000 GETMBR R1 R0 K10 0x74060001, // 0001 JMPT R1 #0004 0x4C040000, // 0002 LDNIL R1 0x80040200, // 0003 RET 1 R1 0x60040018, // 0004 GETGBL R1 G24 - 0x58080016, // 0005 LDCONST R2 K22 - 0x8C0C0117, // 0006 GETMET R3 R0 K23 + 0x58080011, // 0005 LDCONST R2 K17 + 0x8C0C0112, // 0006 GETMET R3 R0 K18 0x7C0C0200, // 0007 CALL R3 1 - 0x8C100117, // 0008 GETMET R4 R0 K23 + 0x8C100112, // 0008 GETMET R4 R0 K18 0x7C100200, // 0009 CALL R4 1 - 0x8C140118, // 000A GETMET R5 R0 K24 + 0x8C140113, // 000A GETMET R5 R0 K19 0x7C140200, // 000B CALL R5 1 - 0x8C180119, // 000C GETMET R6 R0 K25 + 0x8C180114, // 000C GETMET R6 R0 K20 0x7C180200, // 000D CALL R6 1 - 0x8C1C011A, // 000E GETMET R7 R0 K26 + 0x8C1C0115, // 000E GETMET R7 R0 K21 0x7C1C0200, // 000F CALL R7 1 0x7C040C00, // 0010 CALL R1 6 - 0xB80A3600, // 0011 GETNGBL R2 K27 - 0x8C08051C, // 0012 GETMET R2 R2 K28 + 0xB80A2C00, // 0011 GETNGBL R2 K22 + 0x8C080517, // 0012 GETMET R2 R2 K23 0x5C100200, // 0013 MOVE R4 R1 0x7C080400, // 0014 CALL R2 2 0x80000000, // 0015 RET 0 @@ -570,10 +565,10 @@ be_local_closure(class_AXP192_init, /* name */ ( &(const binstruction[ 9]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E3A00, // 0002 GETNGBL R3 K29 + 0xB80E3000, // 0002 GETNGBL R3 K24 0x7C040400, // 0003 CALL R1 2 - 0x8C04031E, // 0004 GETMET R1 R1 K30 - 0x580C001F, // 0005 LDCONST R3 K31 + 0x8C040319, // 0004 GETMET R1 R1 K25 + 0x580C001A, // 0005 LDCONST R3 K26 0x54120033, // 0006 LDINT R4 52 0x7C040600, // 0007 CALL R1 3 0x80000000, // 0008 RET 0 @@ -600,14 +595,14 @@ be_local_closure(class_AXP192_get_bat_current, /* name */ &be_const_str_get_bat_current, &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x8C040120, // 0000 GETMET R1 R0 K32 + 0x8C04011B, // 0000 GETMET R1 R0 K27 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x8C080120, // 0003 GETMET R2 R0 K32 + 0x8C08011B, // 0003 GETMET R2 R0 K27 0x5412007B, // 0004 LDINT R4 124 0x7C080400, // 0005 CALL R2 2 0x04040202, // 0006 SUB R1 R1 R2 - 0x08040321, // 0007 MUL R1 R1 K33 + 0x0804031C, // 0007 MUL R1 R1 K28 0x80040200, // 0008 RET 1 R1 }) ) @@ -632,28 +627,28 @@ be_local_closure(class_AXP192_web_sensor, /* name */ &be_const_str_web_sensor, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8804010A, // 0000 GETMBR R1 R0 K10 0x74060001, // 0001 JMPT R1 #0004 0x4C040000, // 0002 LDNIL R1 0x80040200, // 0003 RET 1 R1 0x60040018, // 0004 GETGBL R1 G24 - 0x400A4523, // 0005 CONNECT R2 K34 K35 - 0x40080524, // 0006 CONNECT R2 R2 K36 - 0x40080525, // 0007 CONNECT R2 R2 K37 - 0x40080526, // 0008 CONNECT R2 R2 K38 - 0x8C0C0117, // 0009 GETMET R3 R0 K23 + 0x400A3B1E, // 0005 CONNECT R2 K29 K30 + 0x4008051F, // 0006 CONNECT R2 R2 K31 + 0x40080520, // 0007 CONNECT R2 R2 K32 + 0x40080521, // 0008 CONNECT R2 R2 K33 + 0x8C0C0112, // 0009 GETMET R3 R0 K18 0x7C0C0200, // 000A CALL R3 1 - 0x8C100117, // 000B GETMET R4 R0 K23 + 0x8C100112, // 000B GETMET R4 R0 K18 0x7C100200, // 000C CALL R4 1 - 0x8C140118, // 000D GETMET R5 R0 K24 + 0x8C140113, // 000D GETMET R5 R0 K19 0x7C140200, // 000E CALL R5 1 - 0x8C180119, // 000F GETMET R6 R0 K25 + 0x8C180114, // 000F GETMET R6 R0 K20 0x7C180200, // 0010 CALL R6 1 - 0x8C1C011A, // 0011 GETMET R7 R0 K26 + 0x8C1C0115, // 0011 GETMET R7 R0 K21 0x7C1C0200, // 0012 CALL R7 1 0x7C040C00, // 0013 CALL R1 6 - 0xB80A3600, // 0014 GETNGBL R2 K27 - 0x8C080527, // 0015 GETMET R2 R2 K39 + 0xB80A2C00, // 0014 GETNGBL R2 K22 + 0x8C080522, // 0015 GETMET R2 R2 K34 0x5C100200, // 0016 MOVE R4 R1 0x7C080400, // 0017 CALL R2 2 0x80000000, // 0018 RET 0 @@ -680,9 +675,9 @@ be_local_closure(class_AXP192_set_chg_current, /* name */ &be_const_str_set_chg_current, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C080114, // 0000 GETMET R2 R0 K20 + 0x8C08010F, // 0000 GETMET R2 R0 K15 0x54120032, // 0001 LDINT R4 51 - 0x8C140115, // 0002 GETMET R5 R0 K21 + 0x8C140110, // 0002 GETMET R5 R0 K16 0x541E0032, // 0003 LDINT R7 51 0x7C140400, // 0004 CALL R5 2 0x541A00EF, // 0005 LDINT R6 240 @@ -718,8 +713,8 @@ be_local_closure(class_AXP192_get_temp, /* name */ 0x8C040107, // 0000 GETMET R1 R0 K7 0x540E005D, // 0001 LDINT R3 94 0x7C040400, // 0002 CALL R1 2 - 0x08040328, // 0003 MUL R1 R1 K40 - 0x04040329, // 0004 SUB R1 R1 K41 + 0x08040323, // 0003 MUL R1 R1 K35 + 0x04040324, // 0004 SUB R1 R1 K36 0x80040200, // 0005 RET 1 R1 }) ) @@ -744,7 +739,7 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ &be_const_str_set_dc_voltage, &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x140C0310, // 0000 LT R3 R1 K16 + 0x140C0300, // 0000 LT R3 R1 K0 0x740E0001, // 0001 JMPT R3 #0004 0x240C0304, // 0002 GT R3 R1 K4 0x780E0000, // 0003 JMPF R3 #0005 @@ -760,7 +755,7 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ 0x78120001, // 000D JMPF R4 #0010 0x540E006F, // 000E LDINT R3 112 0x7002000B, // 000F JMP #001C - 0x1C100313, // 0010 EQ R4 R1 K19 + 0x1C100303, // 0010 EQ R4 R1 K3 0x78120004, // 0011 JMPF R4 #0017 0x541208E2, // 0012 LDINT R4 2275 0x24100404, // 0013 GT R4 R2 R4 @@ -777,12 +772,12 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */ 0x78160001, // 001E JMPF R5 #0021 0x54120026, // 001F LDINT R4 39 0x70020002, // 0020 JMP #0024 - 0x1C140313, // 0021 EQ R5 R1 K19 + 0x1C140303, // 0021 EQ R5 R1 K3 0x78160000, // 0022 JMPF R5 #0024 0x54120022, // 0023 LDINT R4 35 - 0x8C140114, // 0024 GETMET R5 R0 K20 + 0x8C14010F, // 0024 GETMET R5 R0 K15 0x5C1C0800, // 0025 MOVE R7 R4 - 0x8C200115, // 0026 GETMET R8 R0 K21 + 0x8C200110, // 0026 GETMET R8 R0 K16 0x5C280800, // 0027 MOVE R10 R4 0x7C200400, // 0028 CALL R8 2 0x5426007F, // 0029 LDINT R9 128 @@ -844,11 +839,11 @@ be_local_closure(class_AXP192_get_battery_chargin_status, /* name */ &be_const_str_get_battery_chargin_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x8C04030D, // 0001 GETMET R1 R1 K13 - 0x880C010E, // 0002 GETMBR R3 R0 K14 - 0x58100010, // 0003 LDCONST R4 K16 - 0x58140010, // 0004 LDCONST R5 K16 + 0x8804010A, // 0000 GETMBR R1 R0 K10 + 0x8C04030B, // 0001 GETMET R1 R1 K11 + 0x880C010C, // 0002 GETMBR R3 R0 K12 + 0x58100000, // 0003 LDCONST R4 K0 + 0x58140000, // 0004 LDCONST R5 K0 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -874,10 +869,10 @@ be_local_closure(class_AXP192_get_bat_charge_current, /* name */ &be_const_str_get_bat_charge_current, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C040120, // 0000 GETMET R1 R0 K32 + 0x8C04011B, // 0000 GETMET R1 R0 K27 0x540E0079, // 0001 LDINT R3 122 0x7C040400, // 0002 CALL R1 2 - 0x08040321, // 0003 MUL R1 R1 K33 + 0x0804031C, // 0003 MUL R1 R1 K28 0x80040200, // 0004 RET 1 R1 }) ) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h index e7954d487..c15ccbf69 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'AXP202' ktab size: 31, total: 64 (saved 264 bytes) -static const bvalue be_ktab_class_AXP202[31] = { +// compact class 'AXP202' ktab size: 24, total: 64 (saved 320 bytes) +static const bvalue be_ktab_class_AXP202[24] = { /* K0 */ be_const_int(0), /* K1 */ be_const_int(1), /* K2 */ be_const_int(2), @@ -20,22 +20,15 @@ static const bvalue be_ktab_class_AXP202[31] = { /* K12 */ be_const_real_hex(0x3A102DE0), /* K13 */ be_const_real_hex(0x3AB78035), /* K14 */ be_const_real_hex(0x3ADED28A), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str(write_bit), - /* K17 */ be_nested_str(wire), - /* K18 */ be_nested_str(read), - /* K19 */ be_nested_str(addr), - /* K20 */ be_const_int(1), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str(I2C_Driver), - /* K23 */ be_nested_str(init), - /* K24 */ be_nested_str(AXP202), - /* K25 */ be_const_int(0), - /* K26 */ be_const_int(3), - /* K27 */ be_const_int(0), - /* K28 */ be_const_real_hex(0x3DCCCCCD), - /* K29 */ be_const_real_hex(0x4310B333), - /* K30 */ be_const_int(3), + /* K15 */ be_nested_str(write_bit), + /* K16 */ be_nested_str(wire), + /* K17 */ be_nested_str(read), + /* K18 */ be_nested_str(addr), + /* K19 */ be_nested_str(I2C_Driver), + /* K20 */ be_nested_str(init), + /* K21 */ be_nested_str(AXP202), + /* K22 */ be_const_real_hex(0x3DCCCCCD), + /* K23 */ be_const_real_hex(0x4310B333), }; @@ -277,16 +270,16 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ &be_const_str_set_ldo_enable, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x1C0C030F, // 0000 EQ R3 R1 K15 + 0x1C0C0302, // 0000 EQ R3 R1 K2 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C0110, // 0002 GETMET R3 R0 K16 + 0x8C0C010F, // 0002 GETMET R3 R0 K15 0x54160011, // 0003 LDINT R5 18 - 0x5818000F, // 0004 LDCONST R6 K15 + 0x58180002, // 0004 LDCONST R6 K2 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 0x1C0C0303, // 0007 EQ R3 R1 K3 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C0110, // 0009 GETMET R3 R0 K16 + 0x8C0C010F, // 0009 GETMET R3 R0 K15 0x54160011, // 000A LDINT R5 18 0x541A0005, // 000B LDINT R6 6 0x5C1C0400, // 000C MOVE R7 R2 @@ -294,7 +287,7 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */ 0x540E0003, // 000E LDINT R3 4 0x1C0C0203, // 000F EQ R3 R1 R3 0x780E0004, // 0010 JMPF R3 #0016 - 0x8C0C0110, // 0011 GETMET R3 R0 K16 + 0x8C0C010F, // 0011 GETMET R3 R0 K15 0x54160011, // 0012 LDINT R5 18 0x58180003, // 0013 LDCONST R6 K3 0x5C1C0400, // 0014 MOVE R7 R2 @@ -323,11 +316,11 @@ be_local_closure(class_AXP202_battery_present, /* name */ &be_const_str_battery_present, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x88040111, // 0000 GETMBR R1 R0 K17 - 0x8C040312, // 0001 GETMET R1 R1 K18 - 0x880C0113, // 0002 GETMBR R3 R0 K19 - 0x58100014, // 0003 LDCONST R4 K20 - 0x58140014, // 0004 LDCONST R5 K20 + 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x880C0112, // 0002 GETMBR R3 R0 K18 + 0x58100001, // 0003 LDCONST R4 K1 + 0x58140001, // 0004 LDCONST R5 K1 0x7C040800, // 0005 CALL R1 4 0x540A001F, // 0006 LDINT R2 32 0x2C040202, // 0007 AND R1 R1 R2 @@ -402,14 +395,14 @@ be_local_closure(class_AXP202_set_dcdc_enable, /* name */ ( &(const binstruction[15]) { /* code */ 0x1C0C0302, // 0000 EQ R3 R1 K2 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C0110, // 0002 GETMET R3 R0 K16 + 0x8C0C010F, // 0002 GETMET R3 R0 K15 0x54160011, // 0003 LDINT R5 18 0x541A0003, // 0004 LDINT R6 4 0x5C1C0400, // 0005 MOVE R7 R2 0x7C0C0800, // 0006 CALL R3 4 0x1C0C0303, // 0007 EQ R3 R1 K3 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C0110, // 0009 GETMET R3 R0 K16 + 0x8C0C010F, // 0009 GETMET R3 R0 K15 0x54160011, // 000A LDINT R5 18 0x58180001, // 000B LDCONST R6 K1 0x5C1C0400, // 000C MOVE R7 R2 @@ -446,7 +439,7 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */ 0x54120007, // 0005 LDINT R4 8 0x300C0604, // 0006 OR R3 R3 R4 0x5C080600, // 0007 MOVE R2 R3 - 0x2C0C0315, // 0008 AND R3 R1 K21 + 0x2C0C0303, // 0008 AND R3 R1 K3 0x54120003, // 0009 LDINT R4 4 0x380C0604, // 000A SHL R3 R3 R4 0x30080403, // 000B OR R2 R2 R3 @@ -480,10 +473,10 @@ be_local_closure(class_AXP202_init, /* name */ ( &(const binstruction[ 9]) { /* code */ 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E2C00, // 0002 GETNGBL R3 K22 + 0xB80E2600, // 0002 GETNGBL R3 K19 0x7C040400, // 0003 CALL R1 2 - 0x8C040317, // 0004 GETMET R1 R1 K23 - 0x580C0018, // 0005 LDCONST R3 K24 + 0x8C040314, // 0004 GETMET R1 R1 K20 + 0x580C0015, // 0005 LDCONST R3 K21 0x54120034, // 0006 LDINT R4 53 0x7C040600, // 0007 CALL R1 3 0x80000000, // 0008 RET 0 @@ -510,9 +503,9 @@ be_local_closure(class_AXP202_set_exten, /* name */ &be_const_str_set_exten, &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x8C080110, // 0000 GETMET R2 R0 K16 + 0x8C08010F, // 0000 GETMET R2 R0 K15 0x54120011, // 0001 LDINT R4 18 - 0x58140019, // 0002 LDCONST R5 K25 + 0x58140000, // 0002 LDCONST R5 K0 0x5C180200, // 0003 MOVE R6 R1 0x7C080800, // 0004 CALL R2 4 0x80000000, // 0005 RET 0 @@ -539,11 +532,11 @@ be_local_closure(class_AXP202_get_battery_chargin_status, /* name */ &be_const_str_get_battery_chargin_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040111, // 0000 GETMBR R1 R0 K17 - 0x8C040312, // 0001 GETMET R1 R1 K18 - 0x880C0113, // 0002 GETMBR R3 R0 K19 - 0x58100014, // 0003 LDCONST R4 K20 - 0x58140014, // 0004 LDCONST R5 K20 + 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x880C0112, // 0002 GETMBR R3 R0 K18 + 0x58100001, // 0003 LDCONST R4 K1 + 0x58140001, // 0004 LDCONST R5 K1 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) @@ -569,23 +562,23 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ &be_const_str_set_dc_voltage, &be_const_str_solidified, ( &(const binstruction[44]) { /* code */ - 0x140C030F, // 0000 LT R3 R1 K15 + 0x140C0302, // 0000 LT R3 R1 K2 0x740E0001, // 0001 JMPT R3 #0004 - 0x240C031A, // 0002 GT R3 R1 K26 + 0x240C0303, // 0002 GT R3 R1 K3 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 0x4C0C0000, // 0005 LDNIL R3 0x541202BB, // 0006 LDINT R4 700 0x14100404, // 0007 LT R4 R2 R4 0x78120001, // 0008 JMPF R4 #000B - 0x580C001B, // 0009 LDCONST R3 K27 + 0x580C0000, // 0009 LDCONST R3 K0 0x70020010, // 000A JMP #001C 0x54120DAB, // 000B LDINT R4 3500 0x24100404, // 000C GT R4 R2 R4 0x78120001, // 000D JMPF R4 #0010 0x540E006F, // 000E LDINT R3 112 0x7002000B, // 000F JMP #001C - 0x1C10030F, // 0010 EQ R4 R1 K15 + 0x1C100302, // 0010 EQ R4 R1 K2 0x78120004, // 0011 JMPF R4 #0017 0x541208E2, // 0012 LDINT R4 2275 0x24100404, // 0013 GT R4 R2 R4 @@ -598,7 +591,7 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */ 0x0C100805, // 001A DIV R4 R4 R5 0x5C0C0800, // 001B MOVE R3 R4 0x54120022, // 001C LDINT R4 35 - 0x1C14031A, // 001D EQ R5 R1 K26 + 0x1C140303, // 001D EQ R5 R1 K3 0x78160000, // 001E JMPF R5 #0020 0x54120026, // 001F LDINT R4 39 0x8C140104, // 0020 GETMET R5 R0 K4 @@ -667,8 +660,8 @@ be_local_closure(class_AXP202_get_temp, /* name */ 0x8C040106, // 0000 GETMET R1 R0 K6 0x540E005D, // 0001 LDINT R3 94 0x7C040400, // 0002 CALL R1 2 - 0x0804031C, // 0003 MUL R1 R1 K28 - 0x0404031D, // 0004 SUB R1 R1 K29 + 0x08040316, // 0003 MUL R1 R1 K22 + 0x04040317, // 0004 SUB R1 R1 K23 0x80040200, // 0005 RET 1 R1 }) ) @@ -697,7 +690,7 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x240C0403, // 0001 GT R3 R2 R3 0x780E0000, // 0002 JMPF R3 #0004 0x540A000E, // 0003 LDINT R2 15 - 0x1C0C030F, // 0004 EQ R3 R1 K15 + 0x1C0C0302, // 0004 EQ R3 R1 K2 0x740E0002, // 0005 JMPT R3 #0009 0x540E0003, // 0006 LDINT R3 4 0x1C0C0203, // 0007 EQ R3 R1 R3 @@ -707,7 +700,7 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */ 0x54120011, // 000B LDINT R4 18 0x040C0604, // 000C SUB R3 R3 R4 0x5C080600, // 000D MOVE R2 R3 - 0x1C0C030F, // 000E EQ R3 R1 K15 + 0x1C0C0302, // 000E EQ R3 R1 K2 0x780E000D, // 000F JMPF R3 #001E 0x8C0C0104, // 0010 GETMET R3 R0 K4 0x54160027, // 0011 LDINT R5 40 @@ -780,7 +773,7 @@ be_local_closure(class_AXP202_set_limiting_off, /* name */ 0x8C100105, // 0002 GETMET R4 R0 K5 0x541A002F, // 0003 LDINT R6 48 0x7C100400, // 0004 CALL R4 2 - 0x3010091E, // 0005 OR R4 R4 K30 + 0x30100903, // 0005 OR R4 R4 K3 0x7C040600, // 0006 CALL R1 3 0x80000000, // 0007 RET 0 }) @@ -806,11 +799,11 @@ be_local_closure(class_AXP202_get_input_power_status, /* name */ &be_const_str_get_input_power_status, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88040111, // 0000 GETMBR R1 R0 K17 - 0x8C040312, // 0001 GETMET R1 R1 K18 - 0x880C0113, // 0002 GETMBR R3 R0 K19 + 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x880C0112, // 0002 GETMBR R3 R0 K18 0x58100000, // 0003 LDCONST R4 K0 - 0x58140014, // 0004 LDCONST R5 K20 + 0x58140001, // 0004 LDCONST R5 K1 0x7C040800, // 0005 CALL R1 4 0x80040200, // 0006 RET 1 R1 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h index 4356ad394..1c0147425 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'I2C_Driver' ktab size: 23, total: 60 (saved 296 bytes) -static const bvalue be_ktab_class_I2C_Driver[23] = { +// compact class 'I2C_Driver' ktab size: 19, total: 60 (saved 328 bytes) +static const bvalue be_ktab_class_I2C_Driver[19] = { /* K0 */ be_const_int(0), /* K1 */ be_const_int(1), /* K2 */ be_nested_str(write8), @@ -12,22 +12,18 @@ static const bvalue be_ktab_class_I2C_Driver[23] = { /* K4 */ be_nested_str(wire), /* K5 */ be_nested_str(read_bytes), /* K6 */ be_nested_str(addr), - /* K7 */ be_const_int(0), - /* K8 */ be_const_int(2), - /* K9 */ be_const_int(3), - /* K10 */ be_const_int(2), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str(tasmota), - /* K13 */ be_nested_str(i2c_enabled), - /* K14 */ be_nested_str(wire_scan), - /* K15 */ be_nested_str(function), - /* K16 */ be_nested_str(name), - /* K17 */ be_nested_str(I2C_X3A), - /* K18 */ be_nested_str(detected_X20on_X20bus), - /* K19 */ be_nested_str(bus), - /* K20 */ be_nested_str(write), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str(read), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str(tasmota), + /* K10 */ be_nested_str(i2c_enabled), + /* K11 */ be_nested_str(wire_scan), + /* K12 */ be_nested_str(function), + /* K13 */ be_nested_str(name), + /* K14 */ be_nested_str(I2C_X3A), + /* K15 */ be_nested_str(detected_X20on_X20bus), + /* K16 */ be_nested_str(bus), + /* K17 */ be_nested_str(write), + /* K18 */ be_nested_str(read), }; @@ -105,18 +101,18 @@ be_local_closure(class_I2C_Driver_read32, /* name */ 0x5C140200, // 0003 MOVE R5 R1 0x541A0003, // 0004 LDINT R6 4 0x7C080800, // 0005 CALL R2 4 - 0x940C0507, // 0006 GETIDX R3 R2 K7 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120017, // 0007 LDINT R4 24 0x380C0604, // 0008 SHL R3 R3 R4 0x94100501, // 0009 GETIDX R4 R2 K1 0x5416000F, // 000A LDINT R5 16 0x38100805, // 000B SHL R4 R4 R5 0x000C0604, // 000C ADD R3 R3 R4 - 0x94100508, // 000D GETIDX R4 R2 K8 + 0x94100507, // 000D GETIDX R4 R2 K7 0x54160007, // 000E LDINT R5 8 0x38100805, // 000F SHL R4 R4 R5 0x000C0604, // 0010 ADD R3 R3 R4 - 0x94100509, // 0011 GETIDX R4 R2 K9 + 0x94100508, // 0011 GETIDX R4 R2 K8 0x000C0604, // 0012 ADD R3 R3 R4 0x80040600, // 0013 RET 1 R3 }) @@ -146,12 +142,12 @@ be_local_closure(class_I2C_Driver_read13, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x5818000A, // 0004 LDCONST R6 K10 + 0x58180007, // 0004 LDCONST R6 K7 0x7C080800, // 0005 CALL R2 4 - 0x940C0507, // 0006 GETIDX R3 R2 K7 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120004, // 0007 LDINT R4 5 0x380C0604, // 0008 SHL R3 R3 R4 - 0x9410050B, // 0009 GETIDX R4 R2 K11 + 0x94100501, // 0009 GETIDX R4 R2 K1 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -181,16 +177,16 @@ be_local_closure(class_I2C_Driver_read24, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x58180009, // 0004 LDCONST R6 K9 + 0x58180008, // 0004 LDCONST R6 K8 0x7C080800, // 0005 CALL R2 4 - 0x940C0507, // 0006 GETIDX R3 R2 K7 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x5412000F, // 0007 LDINT R4 16 0x380C0604, // 0008 SHL R3 R3 R4 0x94100501, // 0009 GETIDX R4 R2 K1 0x54160007, // 000A LDINT R5 8 0x38100805, // 000B SHL R4 R4 R5 0x000C0604, // 000C ADD R3 R3 R4 - 0x9410050A, // 000D GETIDX R4 R2 K10 + 0x94100507, // 000D GETIDX R4 R2 K7 0x000C0604, // 000E ADD R3 R3 R4 0x80040600, // 000F RET 1 R3 }) @@ -220,12 +216,12 @@ be_local_closure(class_I2C_Driver_read14, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x5818000A, // 0004 LDCONST R6 K10 + 0x58180007, // 0004 LDCONST R6 K7 0x7C080800, // 0005 CALL R2 4 - 0x940C0507, // 0006 GETIDX R3 R2 K7 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120005, // 0007 LDINT R4 6 0x380C0604, // 0008 SHL R3 R3 R4 - 0x9410050B, // 0009 GETIDX R4 R2 K11 + 0x94100501, // 0009 GETIDX R4 R2 K1 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -254,15 +250,15 @@ be_local_closure(class_I2C_Driver_init, /* name */ 0x4C100000, // 0000 LDNIL R4 0x20100604, // 0001 NE R4 R3 R4 0x78120005, // 0002 JMPF R4 #0009 - 0xB8121800, // 0003 GETNGBL R4 K12 - 0x8C10090D, // 0004 GETMET R4 R4 K13 + 0xB8121200, // 0003 GETNGBL R4 K9 + 0x8C10090A, // 0004 GETMET R4 R4 K10 0x5C180600, // 0005 MOVE R6 R3 0x7C100400, // 0006 CALL R4 2 0x74120000, // 0007 JMPT R4 #0009 0x80000800, // 0008 RET 0 0x90020C02, // 0009 SETMBR R0 K6 R2 - 0xB8121800, // 000A GETNGBL R4 K12 - 0x8C10090E, // 000B GETMET R4 R4 K14 + 0xB8121200, // 000A GETNGBL R4 K9 + 0x8C10090B, // 000B GETMET R4 R4 K11 0x88180106, // 000C GETMBR R6 R0 K6 0x7C100400, // 000D CALL R4 2 0x90020804, // 000E SETMBR R0 K4 R4 @@ -271,15 +267,15 @@ be_local_closure(class_I2C_Driver_init, /* name */ 0x60100004, // 0011 GETGBL R4 G4 0x5C140200, // 0012 MOVE R5 R1 0x7C100200, // 0013 CALL R4 1 - 0x1C10090F, // 0014 EQ R4 R4 K15 + 0x1C10090C, // 0014 EQ R4 R4 K12 0x78120004, // 0015 JMPF R4 #001B 0x5C100200, // 0016 MOVE R4 R1 0x5C140000, // 0017 MOVE R5 R0 0x7C100200, // 0018 CALL R4 1 - 0x90022004, // 0019 SETMBR R0 K16 R4 + 0x90021A04, // 0019 SETMBR R0 K13 R4 0x70020000, // 001A JMP #001C - 0x90022001, // 001B SETMBR R0 K16 R1 - 0x88100110, // 001C GETMBR R4 R0 K16 + 0x90021A01, // 001B SETMBR R0 K13 R1 + 0x8810010D, // 001C GETMBR R4 R0 K13 0x4C140000, // 001D LDNIL R5 0x1C100805, // 001E EQ R4 R4 R5 0x78120001, // 001F JMPF R4 #0022 @@ -288,11 +284,11 @@ be_local_closure(class_I2C_Driver_init, /* name */ 0x88100104, // 0022 GETMBR R4 R0 K4 0x78120006, // 0023 JMPF R4 #002B 0x60100001, // 0024 GETGBL R4 G1 - 0x58140011, // 0025 LDCONST R5 K17 - 0x88180110, // 0026 GETMBR R6 R0 K16 - 0x581C0012, // 0027 LDCONST R7 K18 + 0x5814000E, // 0025 LDCONST R5 K14 + 0x8818010D, // 0026 GETMBR R6 R0 K13 + 0x581C000F, // 0027 LDCONST R7 K15 0x88200104, // 0028 GETMBR R8 R0 K4 - 0x88201113, // 0029 GETMBR R8 R8 K19 + 0x88201110, // 0029 GETMBR R8 R8 K16 0x7C100800, // 002A CALL R4 4 0x80000000, // 002B RET 0 }) @@ -319,11 +315,11 @@ be_local_closure(class_I2C_Driver_write8, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x880C0104, // 0000 GETMBR R3 R0 K4 - 0x8C0C0714, // 0001 GETMET R3 R3 K20 + 0x8C0C0711, // 0001 GETMET R3 R3 K17 0x88140106, // 0002 GETMBR R5 R0 K6 0x5C180200, // 0003 MOVE R6 R1 0x5C1C0400, // 0004 MOVE R7 R2 - 0x58200015, // 0005 LDCONST R8 K21 + 0x58200001, // 0005 LDCONST R8 K1 0x7C0C0A00, // 0006 CALL R3 5 0x80040600, // 0007 RET 1 R3 }) @@ -350,7 +346,7 @@ be_local_closure(class_I2C_Driver_read8, /* name */ &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0x88080104, // 0000 GETMBR R2 R0 K4 - 0x8C080516, // 0001 GETMET R2 R2 K22 + 0x8C080512, // 0001 GETMET R2 R2 K18 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 0x58180001, // 0004 LDCONST R6 K1 @@ -383,12 +379,12 @@ be_local_closure(class_I2C_Driver_read12, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x5818000A, // 0004 LDCONST R6 K10 + 0x58180007, // 0004 LDCONST R6 K7 0x7C080800, // 0005 CALL R2 4 - 0x940C0507, // 0006 GETIDX R3 R2 K7 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120003, // 0007 LDINT R4 4 0x380C0604, // 0008 SHL R3 R3 R4 - 0x9410050B, // 0009 GETIDX R4 R2 K11 + 0x94100501, // 0009 GETIDX R4 R2 K1 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) @@ -418,12 +414,12 @@ be_local_closure(class_I2C_Driver_read16, /* name */ 0x8C080505, // 0001 GETMET R2 R2 K5 0x88100106, // 0002 GETMBR R4 R0 K6 0x5C140200, // 0003 MOVE R5 R1 - 0x5818000A, // 0004 LDCONST R6 K10 + 0x58180007, // 0004 LDCONST R6 K7 0x7C080800, // 0005 CALL R2 4 - 0x940C0507, // 0006 GETIDX R3 R2 K7 + 0x940C0500, // 0006 GETIDX R3 R2 K0 0x54120007, // 0007 LDINT R4 8 0x380C0604, // 0008 SHL R3 R3 R4 - 0x9410050B, // 0009 GETIDX R4 R2 K11 + 0x94100501, // 0009 GETIDX R4 R2 K1 0x000C0604, // 000A ADD R3 R3 R4 0x80040600, // 000B RET 1 R3 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h index c94e04b1b..e643c05b9 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'FT3663' ktab size: 22, total: 25 (saved 24 bytes) -static const bvalue be_ktab_class_FT3663[22] = { +// compact class 'FT3663' ktab size: 21, total: 25 (saved 32 bytes) +static const bvalue be_ktab_class_FT3663[21] = { /* K0 */ be_nested_str(wire), /* K1 */ be_nested_str(ts_loop), /* K2 */ be_nested_str(init), @@ -21,12 +21,11 @@ static const bvalue be_ktab_class_FT3663[22] = { /* K13 */ be_nested_str(display), /* K14 */ be_nested_str(read_bytes), /* K15 */ be_nested_str(addr), - /* K16 */ be_const_int(2), - /* K17 */ be_const_int(3), - /* K18 */ be_nested_str(gest_id_codes), - /* K19 */ be_nested_str(find), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str(touch_update), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str(gest_id_codes), + /* K18 */ be_nested_str(find), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_str(touch_update), }; @@ -160,10 +159,10 @@ be_local_closure(class_FT3663_ts_loop, /* name */ 0x5814000B, // 0007 LDCONST R5 K11 0x541A000E, // 0008 LDINT R6 15 0x7C080800, // 0009 CALL R2 4 - 0x940C0510, // 000A GETIDX R3 R2 K16 + 0x940C0508, // 000A GETIDX R3 R2 K8 0x5412000E, // 000B LDINT R4 15 0x2C0C0604, // 000C AND R3 R3 R4 - 0x94100511, // 000D GETIDX R4 R2 K17 + 0x94100510, // 000D GETIDX R4 R2 K16 0x5416000E, // 000E LDINT R5 15 0x2C100805, // 000F AND R4 R4 R5 0x54160007, // 0010 LDINT R5 8 @@ -182,7 +181,7 @@ be_local_closure(class_FT3663_ts_loop, /* name */ 0x30140A06, // 001D OR R5 R5 R6 0x541A0006, // 001E LDINT R6 7 0x94180406, // 001F GETIDX R6 R2 R6 - 0x941C0511, // 0020 GETIDX R7 R2 K17 + 0x941C0510, // 0020 GETIDX R7 R2 K16 0x54220008, // 0021 LDINT R8 9 0x2C1C0E08, // 0022 AND R7 R7 R8 0x54220007, // 0023 LDINT R8 8 @@ -201,12 +200,12 @@ be_local_closure(class_FT3663_ts_loop, /* name */ 0x30201009, // 0030 OR R8 R8 R9 0x5426000C, // 0031 LDINT R9 13 0x94240409, // 0032 GETIDX R9 R2 R9 - 0x88280112, // 0033 GETMBR R10 R0 K18 - 0x8C281513, // 0034 GETMET R10 R10 K19 - 0x94300514, // 0035 GETIDX R12 R2 K20 + 0x88280111, // 0033 GETMBR R10 R0 K17 + 0x8C281512, // 0034 GETMET R10 R10 K18 + 0x94300513, // 0035 GETIDX R12 R2 K19 0x5834000B, // 0036 LDCONST R13 K11 0x7C280600, // 0037 CALL R10 3 - 0x8C2C0315, // 0038 GETMET R11 R1 K21 + 0x8C2C0314, // 0038 GETMET R11 R1 K20 0x5C340600, // 0039 MOVE R13 R3 0x5C380800, // 003A MOVE R14 R4 0x5C3C0A00, // 003B MOVE R15 R5 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h index df960472d..683e7e756 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h @@ -6,8 +6,8 @@ extern const bclass be_class_Leds_segment; extern const bclass be_class_Leds; extern const bclass be_class_Leds_matrix; -// compact class 'Leds_segment' ktab size: 17, total: 34 (saved 136 bytes) -static const bvalue be_ktab_class_Leds_segment[17] = { +// compact class 'Leds_segment' ktab size: 16, total: 34 (saved 144 bytes) +static const bvalue be_ktab_class_Leds_segment[16] = { /* K0 */ be_nested_str(offset), /* K1 */ be_nested_str(bri), /* K2 */ be_nested_str(strip), @@ -24,7 +24,6 @@ static const bvalue be_ktab_class_Leds_segment[17] = { /* K13 */ be_nested_str(get_pixel_color), /* K14 */ be_nested_str(offseta), /* K15 */ be_nested_str(pixel_size), - /* K16 */ be_const_int(0), }; @@ -424,7 +423,7 @@ be_local_closure(class_Leds_segment_show, /* name */ 0x7C080200, // 0002 CALL R2 1 0x740A0007, // 0003 JMPT R2 #000C 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x1C080510, // 0005 EQ R2 R2 K16 + 0x1C08050B, // 0005 EQ R2 R2 K11 0x780A0007, // 0006 JMPF R2 #000F 0x88080105, // 0007 GETMBR R2 R0 K5 0x880C0102, // 0008 GETMBR R3 R0 K2 @@ -469,8 +468,8 @@ be_local_class(Leds_segment, })), (bstring*) &be_const_str_Leds_segment ); -// compact class 'Leds_matrix' ktab size: 25, total: 62 (saved 296 bytes) -static const bvalue be_ktab_class_Leds_matrix[25] = { +// compact class 'Leds_matrix' ktab size: 24, total: 62 (saved 304 bytes) +static const bvalue be_ktab_class_Leds_matrix[24] = { /* K0 */ be_nested_str(strip), /* K1 */ be_nested_str(bri), /* K2 */ be_nested_str(call_native), @@ -495,7 +494,6 @@ static const bvalue be_ktab_class_Leds_matrix[25] = { /* K21 */ be_nested_str(get_pixel_color), /* K22 */ be_nested_str(offseta), /* K23 */ be_nested_str(clear_to), - /* K24 */ be_const_int(0), }; @@ -1066,7 +1064,7 @@ be_local_closure(class_Leds_matrix_clear, /* name */ &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x8C040117, // 0000 GETMET R1 R0 K23 - 0x580C0018, // 0001 LDCONST R3 K24 + 0x580C0007, // 0001 LDCONST R3 K7 0x7C040400, // 0002 CALL R1 2 0x8C040109, // 0003 GETMET R1 R0 K9 0x7C040200, // 0004 CALL R1 1 @@ -1113,8 +1111,8 @@ be_local_class(Leds_matrix, })), (bstring*) &be_const_str_Leds_matrix ); -// compact class 'Leds' ktab size: 47, total: 83 (saved 288 bytes) -static const bvalue be_ktab_class_Leds[47] = { +// compact class 'Leds' ktab size: 43, total: 83 (saved 320 bytes) +static const bvalue be_ktab_class_Leds[43] = { /* K0 */ be_nested_str(leds), /* K1 */ be_const_int(0), /* K2 */ be_nested_str(value_error), @@ -1142,26 +1140,22 @@ static const bvalue be_ktab_class_Leds[47] = { /* K24 */ be_const_class(be_class_Leds), /* K25 */ be_nested_str(Leds), /* K26 */ be_nested_str(create_matrix), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str(to_gamma), - /* K29 */ be_const_int(0), - /* K30 */ be_const_class(be_class_Leds_matrix), - /* K31 */ be_const_int(3), - /* K32 */ be_const_int(0), - /* K33 */ be_nested_str(invalid_X20GPIO_X20number), - /* K34 */ be_nested_str(global), - /* K35 */ be_nested_str(contains), - /* K36 */ be_nested_str(_rmt), - /* K37 */ be_nested_str(MAX_RMT), - /* K38 */ be_const_int(1), - /* K39 */ be_nested_str(push), - /* K40 */ be_nested_str(stop_iteration), - /* K41 */ be_nested_str(pin_used), - /* K42 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available), - /* K43 */ be_nested_str(WS2812_GRB), - /* K44 */ be_nested_str(assign_rmt), - /* K45 */ be_nested_str(pixel_size), - /* K46 */ be_nested_str(_change_buffer), + /* K27 */ be_nested_str(to_gamma), + /* K28 */ be_const_class(be_class_Leds_matrix), + /* K29 */ be_const_int(3), + /* K30 */ be_nested_str(invalid_X20GPIO_X20number), + /* K31 */ be_nested_str(global), + /* K32 */ be_nested_str(contains), + /* K33 */ be_nested_str(_rmt), + /* K34 */ be_nested_str(MAX_RMT), + /* K35 */ be_nested_str(push), + /* K36 */ be_nested_str(stop_iteration), + /* K37 */ be_nested_str(pin_used), + /* K38 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available), + /* K39 */ be_nested_str(WS2812_GRB), + /* K40 */ be_nested_str(assign_rmt), + /* K41 */ be_nested_str(pixel_size), + /* K42 */ be_nested_str(_change_buffer), }; @@ -1614,7 +1608,7 @@ be_local_closure(class_Leds_pixel_offset, /* name */ &be_const_str_pixel_offset, &be_const_str_solidified, ( &(const binstruction[ 1]) { /* code */ - 0x80063600, // 0000 RET 1 K27 + 0x80060200, // 0000 RET 1 K1 }) ) ); @@ -1644,7 +1638,7 @@ be_local_closure(class_Leds_clear_to, /* name */ 0x88080105, // 0003 GETMBR R2 R0 K5 0x8C0C0106, // 0004 GETMET R3 R0 K6 0x54160008, // 0005 LDINT R5 9 - 0x8C18011C, // 0006 GETMET R6 R0 K28 + 0x8C18011B, // 0006 GETMET R6 R0 K27 0x5C200200, // 0007 MOVE R8 R1 0x5C240400, // 0008 MOVE R9 R2 0x7C180600, // 0009 CALL R6 3 @@ -1680,7 +1674,7 @@ be_local_closure(class_Leds_set_pixel_color, /* name */ 0x8C100106, // 0004 GETMET R4 R0 K6 0x541A0009, // 0005 LDINT R6 10 0x5C1C0200, // 0006 MOVE R7 R1 - 0x8C20011C, // 0007 GETMET R8 R0 K28 + 0x8C20011B, // 0007 GETMET R8 R0 K27 0x5C280400, // 0008 MOVE R10 R2 0x5C2C0600, // 0009 MOVE R11 R3 0x7C200600, // 000A CALL R8 3 @@ -1751,21 +1745,21 @@ be_local_closure(class_Leds_create_matrix, /* name */ 0x4C100000, // 000C LDNIL R4 0x1C100604, // 000D EQ R4 R3 R4 0x78120000, // 000E JMPF R4 #0010 - 0x580C001D, // 000F LDCONST R3 K29 + 0x580C0001, // 000F LDCONST R3 K1 0x08100202, // 0010 MUL R4 R1 R2 0x00100803, // 0011 ADD R4 R4 R3 0x88140100, // 0012 GETMBR R5 R0 K0 0x24100805, // 0013 GT R4 R4 R5 0x74120005, // 0014 JMPT R4 #001B - 0x1410051D, // 0015 LT R4 R2 K29 + 0x14100501, // 0015 LT R4 R2 K1 0x74120003, // 0016 JMPT R4 #001B - 0x1410031D, // 0017 LT R4 R1 K29 + 0x14100301, // 0017 LT R4 R1 K1 0x74120001, // 0018 JMPT R4 #001B - 0x1410071D, // 0019 LT R4 R3 K29 + 0x14100701, // 0019 LT R4 R3 K1 0x78120000, // 001A JMPF R4 #001C 0xB0060503, // 001B RAISE 1 K2 K3 - 0x5810001E, // 001C LDCONST R4 K30 - 0xB400001E, // 001D CLASS K30 + 0x5810001C, // 001C LDCONST R4 K28 + 0xB400001C, // 001D CLASS K28 0x5C140800, // 001E MOVE R5 R4 0x5C180000, // 001F MOVE R6 R0 0x5C1C0200, // 0020 MOVE R7 R1 @@ -1849,7 +1843,7 @@ be_local_closure(class_Leds_can_show, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x8C040106, // 0000 GETMET R1 R0 K6 - 0x580C001F, // 0001 LDCONST R3 K31 + 0x580C001D, // 0001 LDCONST R3 K29 0x7C040400, // 0002 CALL R1 2 0x80040200, // 0003 RET 1 R1 }) @@ -1880,72 +1874,72 @@ be_local_closure(class_Leds_assign_rmt, /* name */ 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 0x5C000400, // 0004 MOVE R0 R2 - 0x14080120, // 0005 LT R2 R0 K32 + 0x14080101, // 0005 LT R2 R0 K1 0x780A0000, // 0006 JMPF R2 #0008 - 0xB0060521, // 0007 RAISE 1 K2 K33 - 0xA40A4400, // 0008 IMPORT R2 K34 + 0xB006051E, // 0007 RAISE 1 K2 K30 + 0xA40A3E00, // 0008 IMPORT R2 K31 0x4C0C0000, // 0009 LDNIL R3 - 0x8C100523, // 000A GETMET R4 R2 K35 - 0x58180024, // 000B LDCONST R6 K36 + 0x8C100520, // 000A GETMET R4 R2 K32 + 0x58180021, // 000B LDCONST R6 K33 0x7C100400, // 000C CALL R4 2 0x74120021, // 000D JMPT R4 #0030 0x60100012, // 000E GETGBL R4 G18 0x7C100000, // 000F CALL R4 0 0x5C0C0800, // 0010 MOVE R3 R4 - 0x900A4803, // 0011 SETMBR R2 K36 R3 + 0x900A4203, // 0011 SETMBR R2 K33 R3 0x60100010, // 0012 GETGBL R4 G16 0xB8161400, // 0013 GETNGBL R5 K10 - 0x88140B25, // 0014 GETMBR R5 R5 K37 - 0x04140B26, // 0015 SUB R5 R5 K38 - 0x40164005, // 0016 CONNECT R5 K32 R5 + 0x88140B22, // 0014 GETMBR R5 R5 K34 + 0x04140B07, // 0015 SUB R5 R5 K7 + 0x40160205, // 0016 CONNECT R5 K1 R5 0x7C100200, // 0017 CALL R4 1 0xA8020005, // 0018 EXBLK 0 #001F 0x5C140800, // 0019 MOVE R5 R4 0x7C140000, // 001A CALL R5 0 - 0x8C180727, // 001B GETMET R6 R3 K39 + 0x8C180723, // 001B GETMET R6 R3 K35 0x5421FFFE, // 001C LDINT R8 -1 0x7C180400, // 001D CALL R6 2 0x7001FFF9, // 001E JMP #0019 - 0x58100028, // 001F LDCONST R4 K40 + 0x58100024, // 001F LDCONST R4 K36 0xAC100200, // 0020 CATCH R4 1 0 0xB0080000, // 0021 RAISE 2 R0 R0 0xB8121400, // 0022 GETNGBL R4 K10 - 0x8C100929, // 0023 GETMET R4 R4 K41 + 0x8C100925, // 0023 GETMET R4 R4 K37 0xB81A1400, // 0024 GETNGBL R6 K10 0x88180D0D, // 0025 GETMBR R6 R6 K13 - 0x581C0020, // 0026 LDCONST R7 K32 + 0x581C0001, // 0026 LDCONST R7 K1 0x7C100600, // 0027 CALL R4 3 0x78120006, // 0028 JMPF R4 #0030 0xB8121400, // 0029 GETNGBL R4 K10 0x8C10090C, // 002A GETMET R4 R4 K12 0xB81A1400, // 002B GETNGBL R6 K10 0x88180D0D, // 002C GETMBR R6 R6 K13 - 0x581C0020, // 002D LDCONST R7 K32 + 0x581C0001, // 002D LDCONST R7 K1 0x7C100600, // 002E CALL R4 3 - 0x980E4004, // 002F SETIDX R3 K32 R4 - 0x880C0524, // 0030 GETMBR R3 R2 K36 - 0x58100020, // 0031 LDCONST R4 K32 + 0x980E0204, // 002F SETIDX R3 K1 R4 + 0x880C0521, // 0030 GETMBR R3 R2 K33 + 0x58100001, // 0031 LDCONST R4 K1 0x5415FFFE, // 0032 LDINT R5 -1 0xB81A1400, // 0033 GETNGBL R6 K10 - 0x88180D25, // 0034 GETMBR R6 R6 K37 + 0x88180D22, // 0034 GETMBR R6 R6 K34 0x14180806, // 0035 LT R6 R4 R6 0x781A000A, // 0036 JMPF R6 #0042 0x94180604, // 0037 GETIDX R6 R3 R4 0x1C1C0C00, // 0038 EQ R7 R6 R0 0x781E0000, // 0039 JMPF R7 #003B 0x80040800, // 003A RET 1 R4 - 0x141C0D20, // 003B LT R7 R6 K32 + 0x141C0D01, // 003B LT R7 R6 K1 0x781E0002, // 003C JMPF R7 #0040 - 0x141C0B20, // 003D LT R7 R5 K32 + 0x141C0B01, // 003D LT R7 R5 K1 0x781E0000, // 003E JMPF R7 #0040 0x5C140800, // 003F MOVE R5 R4 - 0x00100926, // 0040 ADD R4 R4 K38 + 0x00100907, // 0040 ADD R4 R4 K7 0x7001FFF0, // 0041 JMP #0033 - 0x28180B20, // 0042 GE R6 R5 K32 + 0x28180B01, // 0042 GE R6 R5 K1 0x781A0001, // 0043 JMPF R6 #0046 0x980C0A00, // 0044 SETIDX R3 R5 R0 0x80040A00, // 0045 RET 1 R5 - 0xB006272A, // 0046 RAISE 1 K19 K42 + 0xB0062726, // 0046 RAISE 1 K19 K38 0x80000000, // 0047 RET 0 }) ) @@ -1980,11 +1974,11 @@ be_local_closure(class_Leds_ctor, /* name */ 0x4C140000, // 0007 LDNIL R5 0x1C140605, // 0008 EQ R5 R3 R5 0x78160000, // 0009 JMPF R5 #000B - 0x880C012B, // 000A GETMBR R3 R0 K43 + 0x880C0127, // 000A GETMBR R3 R0 K39 0x4C140000, // 000B LDNIL R5 0x1C140805, // 000C EQ R5 R4 R5 0x78160003, // 000D JMPF R5 #0012 - 0x8C14012C, // 000E GETMET R5 R0 K44 + 0x8C140128, // 000E GETMET R5 R0 K40 0x5C1C0400, // 000F MOVE R7 R2 0x7C140400, // 0010 CALL R5 2 0x5C100A00, // 0011 MOVE R4 R5 @@ -2027,7 +2021,7 @@ be_local_closure(class_Leds_pixels_buffer, /* name */ 0x780E0009, // 0005 JMPF R3 #0010 0x600C0015, // 0006 GETGBL R3 G21 0x5C100400, // 0007 MOVE R4 R2 - 0x8C14012D, // 0008 GETMET R5 R0 K45 + 0x8C140129, // 0008 GETMET R5 R0 K41 0x7C140200, // 0009 CALL R5 1 0x8C18010F, // 000A GETMET R6 R0 K15 0x7C180200, // 000B CALL R6 1 @@ -2035,7 +2029,7 @@ be_local_closure(class_Leds_pixels_buffer, /* name */ 0x7C0C0400, // 000D CALL R3 2 0x80040600, // 000E RET 1 R3 0x70020003, // 000F JMP #0014 - 0x8C0C032E, // 0010 GETMET R3 R1 K46 + 0x8C0C032A, // 0010 GETMET R3 R1 K42 0x5C140400, // 0011 MOVE R5 R2 0x7C0C0400, // 0012 CALL R3 2 0x80040200, // 0013 RET 1 R1 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h index 3e49b17b4..47dccd82f 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h @@ -1041,8 +1041,8 @@ be_local_class(lv_wifi_arcs_icon, })), be_str_weak(lv_wifi_arcs_icon) ); -// compact class 'lv_signal_bars' ktab size: 41, total: 49 (saved 64 bytes) -static const bvalue be_ktab_class_lv_signal_bars[41] = { +// compact class 'lv_signal_bars' ktab size: 40, total: 49 (saved 72 bytes) +static const bvalue be_ktab_class_lv_signal_bars[40] = { /* K0 */ be_nested_str_weak(percentage), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(invalidate), @@ -1070,20 +1070,19 @@ static const bvalue be_ktab_class_lv_signal_bars[41] = { /* K24 */ be_nested_str_weak(get_style_line_color), /* K25 */ be_nested_str_weak(STATE_DEFAULT), /* K26 */ be_nested_str_weak(get_style_bg_color), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str_weak(color), - /* K29 */ be_nested_str_weak(p1_y), - /* K30 */ be_nested_str_weak(p1_x), - /* K31 */ be_nested_str_weak(p2_y), - /* K32 */ be_nested_str_weak(p2_x), - /* K33 */ be_nested_str_weak(draw_line), - /* K34 */ be_nested_str_weak(stop_iteration), - /* K35 */ be_nested_str_weak(init), - /* K36 */ be_nested_str_weak(set_style_bg_opa), - /* K37 */ be_nested_str_weak(set_style_border_width), - /* K38 */ be_nested_str_weak(draw_line_dsc), - /* K39 */ be_nested_str_weak(add_event_cb), - /* K40 */ be_nested_str_weak(widget_event), + /* K27 */ be_nested_str_weak(color), + /* K28 */ be_nested_str_weak(p1_y), + /* K29 */ be_nested_str_weak(p1_x), + /* K30 */ be_nested_str_weak(p2_y), + /* K31 */ be_nested_str_weak(p2_x), + /* K32 */ be_nested_str_weak(draw_line), + /* K33 */ be_nested_str_weak(stop_iteration), + /* K34 */ be_nested_str_weak(init), + /* K35 */ be_nested_str_weak(set_style_bg_opa), + /* K36 */ be_nested_str_weak(set_style_border_width), + /* K37 */ be_nested_str_weak(draw_line_dsc), + /* K38 */ be_nested_str_weak(add_event_cb), + /* K39 */ be_nested_str_weak(widget_event), }; @@ -1257,7 +1256,7 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x30442212, // 003A OR R17 R17 R18 0x7C3C0400, // 003B CALL R15 2 0x60400010, // 003C GETGBL R16 G16 - 0x40463706, // 003D CONNECT R17 K27 K6 + 0x40460306, // 003D CONNECT R17 K1 K6 0x7C400200, // 003E CALL R16 1 0xA8020024, // 003F EXBLK 0 #0065 0x5C442000, // 0040 MOVE R17 R16 @@ -1271,16 +1270,16 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x5C481C00, // 0048 MOVE R18 R14 0x70020000, // 0049 JMP #004B 0x5C481E00, // 004A MOVE R18 R15 - 0x90263812, // 004B SETMBR R9 K28 R18 + 0x90263612, // 004B SETMBR R9 K27 R18 0x00481A04, // 004C ADD R18 R13 R4 0x04482515, // 004D SUB R18 R18 K21 0x04482408, // 004E SUB R18 R18 R8 - 0x90263A12, // 004F SETMBR R9 K29 R18 + 0x90263812, // 004F SETMBR R9 K28 R18 0x00480E06, // 0050 ADD R18 R7 R6 0x08482212, // 0051 MUL R18 R17 R18 0x00481812, // 0052 ADD R18 R12 R18 0x00482408, // 0053 ADD R18 R18 R8 - 0x90263C12, // 0054 SETMBR R9 K30 R18 + 0x90263A12, // 0054 SETMBR R9 K29 R18 0x044A0C11, // 0055 SUB R18 K6 R17 0x044C0807, // 0056 SUB R19 R4 R7 0x08482413, // 0057 MUL R18 R18 R19 @@ -1288,16 +1287,16 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */ 0x0C482413, // 0059 DIV R18 R18 R19 0x00481A12, // 005A ADD R18 R13 R18 0x00482408, // 005B ADD R18 R18 R8 - 0x90263E12, // 005C SETMBR R9 K31 R18 - 0x8848131E, // 005D GETMBR R18 R9 K30 - 0x90264012, // 005E SETMBR R9 K32 R18 + 0x90263C12, // 005C SETMBR R9 K30 R18 + 0x8848131D, // 005D GETMBR R18 R9 K29 + 0x90263E12, // 005E SETMBR R9 K31 R18 0xB84A1000, // 005F GETNGBL R18 K8 - 0x8C482521, // 0060 GETMET R18 R18 K33 + 0x8C482520, // 0060 GETMET R18 R18 K32 0x5C501600, // 0061 MOVE R20 R11 0x5C541200, // 0062 MOVE R21 R9 0x7C480600, // 0063 CALL R18 3 0x7001FFDA, // 0064 JMP #0040 - 0x58400022, // 0065 LDCONST R16 K34 + 0x58400021, // 0065 LDCONST R16 K33 0xAC400200, // 0066 CATCH R16 1 0 0xB0080000, // 0067 RAISE 2 R0 R0 0x80000000, // 0068 RET 0 @@ -1327,14 +1326,14 @@ be_local_closure(class_lv_signal_bars_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080523, // 0003 GETMET R2 R2 K35 + 0x8C080522, // 0003 GETMET R2 R2 K34 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x8C080124, // 0006 GETMET R2 R0 K36 + 0x8C080123, // 0006 GETMET R2 R0 K35 0x58100001, // 0007 LDCONST R4 K1 0x58140001, // 0008 LDCONST R5 K1 0x7C080600, // 0009 CALL R2 3 - 0x8C080125, // 000A GETMET R2 R0 K37 + 0x8C080124, // 000A GETMET R2 R0 K36 0x58100001, // 000B LDCONST R4 K1 0x58140001, // 000C LDCONST R5 K1 0x7C080600, // 000D CALL R2 3 @@ -1345,11 +1344,11 @@ be_local_closure(class_lv_signal_bars_init, /* name */ 0x7C080200, // 0012 CALL R2 1 0x90021C02, // 0013 SETMBR R0 K14 R2 0xB80A1000, // 0014 GETNGBL R2 K8 - 0x8C080526, // 0015 GETMET R2 R2 K38 + 0x8C080525, // 0015 GETMET R2 R2 K37 0x7C080200, // 0016 CALL R2 1 0x90021402, // 0017 SETMBR R0 K10 R2 - 0x8C080127, // 0018 GETMET R2 R0 K39 - 0x88100128, // 0019 GETMBR R4 R0 K40 + 0x8C080126, // 0018 GETMET R2 R0 K38 + 0x88100127, // 0019 GETMBR R4 R0 K39 0xB8161000, // 001A GETNGBL R5 K8 0x88140B09, // 001B GETMBR R5 R5 K9 0x58180001, // 001C LDCONST R6 K1 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h index 3eed70efc..a3fdf5e99 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_Partition_otadata; -// compact class 'Partition_otadata' ktab size: 28, total: 52 (saved 192 bytes) -static const bvalue be_ktab_class_Partition_otadata[28] = { +// compact class 'Partition_otadata' ktab size: 24, total: 52 (saved 224 bytes) +static const bvalue be_ktab_class_Partition_otadata[24] = { /* K0 */ be_nested_str(flash), /* K1 */ be_nested_str(seq0), /* K2 */ be_const_int(0), @@ -19,21 +19,17 @@ static const bvalue be_ktab_class_Partition_otadata[28] = { /* K10 */ be_nested_str(write), /* K11 */ be_nested_str(_X3Cinstance_X3A_X20Partition_otadata_X28ota_active_X3A_X25s_X2C_X20ota_seq_X3D_X5B_X25d_X2C_X25d_X5D_X2C_X20ota_max_X3D_X25d_X29_X3E), /* K12 */ be_nested_str(active_otadata), - /* K13 */ be_const_int(0), - /* K14 */ be_nested_str(ota_), - /* K15 */ be_nested_str(factory), - /* K16 */ be_nested_str(maxota), - /* K17 */ be_nested_str(has_factory), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str(read), - /* K20 */ be_nested_str(get), - /* K21 */ be_const_int(0), - /* K22 */ be_nested_str(_validate), - /* K23 */ be_const_class(be_class_Partition_otadata), - /* K24 */ be_nested_str(crc), - /* K25 */ be_nested_str(crc32), - /* K26 */ be_const_int(1), - /* K27 */ be_nested_str(load), + /* K13 */ be_nested_str(ota_), + /* K14 */ be_nested_str(factory), + /* K15 */ be_nested_str(maxota), + /* K16 */ be_nested_str(has_factory), + /* K17 */ be_nested_str(read), + /* K18 */ be_nested_str(get), + /* K19 */ be_nested_str(_validate), + /* K20 */ be_const_class(be_class_Partition_otadata), + /* K21 */ be_nested_str(crc), + /* K22 */ be_nested_str(crc32), + /* K23 */ be_nested_str(load), }; @@ -135,17 +131,17 @@ be_local_closure(class_Partition_otadata_tostring, /* name */ 0x60040018, // 0000 GETGBL R1 G24 0x5808000B, // 0001 LDCONST R2 K11 0x880C010C, // 0002 GETMBR R3 R0 K12 - 0x280C070D, // 0003 GE R3 R3 K13 + 0x280C0702, // 0003 GE R3 R3 K2 0x780E0004, // 0004 JMPF R3 #000A 0x600C0008, // 0005 GETGBL R3 G8 0x8810010C, // 0006 GETMBR R4 R0 K12 0x7C0C0200, // 0007 CALL R3 1 - 0x000E1C03, // 0008 ADD R3 K14 R3 + 0x000E1A03, // 0008 ADD R3 K13 R3 0x70020000, // 0009 JMP #000B - 0x580C000F, // 000A LDCONST R3 K15 + 0x580C000E, // 000A LDCONST R3 K14 0x88100101, // 000B GETMBR R4 R0 K1 0x88140103, // 000C GETMBR R5 R0 K3 - 0x88180110, // 000D GETMBR R6 R0 K16 + 0x8818010F, // 000D GETMBR R6 R0 K15 0x7C040A00, // 000E CALL R1 5 0x80040200, // 000F RET 1 R1 }) @@ -171,7 +167,7 @@ be_local_closure(class_Partition_otadata__validate, /* name */ &be_const_str__validate, &be_const_str_solidified, ( &(const binstruction[35]) { /* code */ - 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x88040110, // 0000 GETMBR R1 R0 K16 0x78060001, // 0001 JMPF R1 #0004 0x5405FFFE, // 0002 LDINT R1 -1 0x70020000, // 0003 JMP #0005 @@ -182,9 +178,9 @@ be_local_closure(class_Partition_otadata__validate, /* name */ 0x20040202, // 0008 NE R1 R1 R2 0x78060005, // 0009 JMPF R1 #0010 0x88040101, // 000A GETMBR R1 R0 K1 - 0x04040312, // 000B SUB R1 R1 K18 - 0x88080110, // 000C GETMBR R2 R0 K16 - 0x00080512, // 000D ADD R2 R2 K18 + 0x04040304, // 000B SUB R1 R1 K4 + 0x8808010F, // 000C GETMBR R2 R0 K15 + 0x00080504, // 000D ADD R2 R2 K4 0x10040202, // 000E MOD R1 R1 R2 0x90021801, // 000F SETMBR R0 K12 R1 0x88040103, // 0010 GETMBR R1 R0 K3 @@ -200,9 +196,9 @@ be_local_closure(class_Partition_otadata__validate, /* name */ 0x24040202, // 001A GT R1 R1 R2 0x78060005, // 001B JMPF R1 #0022 0x88040103, // 001C GETMBR R1 R0 K3 - 0x04040312, // 001D SUB R1 R1 K18 - 0x88080110, // 001E GETMBR R2 R0 K16 - 0x00080512, // 001F ADD R2 R2 K18 + 0x04040304, // 001D SUB R1 R1 K4 + 0x8808010F, // 001E GETMBR R2 R0 K15 + 0x00080504, // 001F ADD R2 R2 K4 0x10040202, // 0020 MOD R1 R1 R2 0x90021801, // 0021 SETMBR R0 K12 R1 0x80000000, // 0022 RET 0 @@ -229,7 +225,7 @@ be_local_closure(class_Partition_otadata_set_ota_max, /* name */ &be_const_str_set_ota_max, &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x90022001, // 0000 SETMBR R0 K16 R1 + 0x90021E01, // 0000 SETMBR R0 K15 R1 0x80000000, // 0001 RET 0 }) ) @@ -255,27 +251,27 @@ be_local_closure(class_Partition_otadata_load, /* name */ &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080313, // 0001 GETMET R2 R1 K19 + 0x8C080311, // 0001 GETMET R2 R1 K17 0x88100105, // 0002 GETMBR R4 R0 K5 0x5416001F, // 0003 LDINT R5 32 0x7C080600, // 0004 CALL R2 3 - 0x8C0C0313, // 0005 GETMET R3 R1 K19 + 0x8C0C0311, // 0005 GETMET R3 R1 K17 0x88140105, // 0006 GETMBR R5 R0 K5 0x541A0FFF, // 0007 LDINT R6 4096 0x00140A06, // 0008 ADD R5 R5 R6 0x541A001F, // 0009 LDINT R6 32 0x7C0C0600, // 000A CALL R3 3 - 0x8C100514, // 000B GETMET R4 R2 K20 - 0x58180015, // 000C LDCONST R6 K21 + 0x8C100512, // 000B GETMET R4 R2 K18 + 0x58180002, // 000C LDCONST R6 K2 0x541E0003, // 000D LDINT R7 4 0x7C100600, // 000E CALL R4 3 0x90020204, // 000F SETMBR R0 K1 R4 - 0x8C100714, // 0010 GETMET R4 R3 K20 - 0x58180015, // 0011 LDCONST R6 K21 + 0x8C100712, // 0010 GETMET R4 R3 K18 + 0x58180002, // 0011 LDCONST R6 K2 0x541E0003, // 0012 LDINT R7 4 0x7C100600, // 0013 CALL R4 3 0x90020604, // 0014 SETMBR R0 K3 R4 - 0x8C100514, // 0015 GETMET R4 R2 K20 + 0x8C100512, // 0015 GETMET R4 R2 K18 0x541A001B, // 0016 LDINT R6 28 0x541E0003, // 0017 LDINT R7 4 0x7C100600, // 0018 CALL R4 3 @@ -283,7 +279,7 @@ be_local_closure(class_Partition_otadata_load, /* name */ 0x881C0101, // 001A GETMBR R7 R0 K1 0x7C140400, // 001B CALL R5 2 0x1C100805, // 001C EQ R4 R4 R5 - 0x8C140714, // 001D GETMET R5 R3 K20 + 0x8C140712, // 001D GETMET R5 R3 K18 0x541E001B, // 001E LDINT R7 28 0x54220003, // 001F LDINT R8 4 0x7C140600, // 0020 CALL R5 3 @@ -299,7 +295,7 @@ be_local_closure(class_Partition_otadata_load, /* name */ 0x741A0001, // 002A JMPT R6 #002D 0x4C180000, // 002B LDNIL R6 0x90020606, // 002C SETMBR R0 K3 R6 - 0x8C180116, // 002D GETMET R6 R0 K22 + 0x8C180113, // 002D GETMET R6 R0 K19 0x7C180200, // 002E CALL R6 1 0x80000000, // 002F RET 0 }) @@ -325,9 +321,9 @@ be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */ &be_const_str_crc32_ota_seq, &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x58040017, // 0000 LDCONST R1 K23 - 0xA40A3000, // 0001 IMPORT R2 K24 - 0x8C0C0519, // 0002 GETMET R3 R2 K25 + 0x58040014, // 0000 LDCONST R1 K20 + 0xA40A2A00, // 0001 IMPORT R2 K21 + 0x8C0C0516, // 0002 GETMET R3 R2 K22 0x5415FFFE, // 0003 LDINT R5 -1 0x60180015, // 0004 GETGBL R6 G21 0x7C180000, // 0005 CALL R6 0 @@ -360,14 +356,14 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ &be_const_str_set_active, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x58080015, // 0000 LDCONST R2 K21 - 0x580C0015, // 0001 LDCONST R3 K21 + 0x58080002, // 0000 LDCONST R2 K2 + 0x580C0002, // 0001 LDCONST R3 K2 0x88100101, // 0002 GETMBR R4 R0 K1 0x4C140000, // 0003 LDNIL R5 0x20100805, // 0004 NE R4 R4 R5 0x78120001, // 0005 JMPF R4 #0008 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x580C0015, // 0007 LDCONST R3 K21 + 0x580C0002, // 0007 LDCONST R3 K2 0x88100103, // 0008 GETMBR R4 R0 K3 0x4C140000, // 0009 LDNIL R5 0x20100805, // 000A NE R4 R4 R5 @@ -376,10 +372,10 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ 0x24100802, // 000D GT R4 R4 R2 0x78120001, // 000E JMPF R4 #0011 0x88080103, // 000F GETMBR R2 R0 K3 - 0x580C001A, // 0010 LDCONST R3 K26 - 0x0410051A, // 0011 SUB R4 R2 K26 - 0x88140110, // 0012 GETMBR R5 R0 K16 - 0x00140B1A, // 0013 ADD R5 R5 K26 + 0x580C0004, // 0010 LDCONST R3 K4 + 0x04100504, // 0011 SUB R4 R2 K4 + 0x8814010F, // 0012 GETMBR R5 R0 K15 + 0x00140B04, // 0013 ADD R5 R5 K4 0x10100805, // 0014 MOD R4 R4 R5 0x20140801, // 0015 NE R5 R4 R1 0x78160010, // 0016 JMPF R5 #0028 @@ -388,17 +384,17 @@ be_local_closure(class_Partition_otadata_set_active, /* name */ 0x04140204, // 0019 SUB R5 R1 R4 0x00080405, // 001A ADD R2 R2 R5 0x70020004, // 001B JMP #0021 - 0x88140110, // 001C GETMBR R5 R0 K16 - 0x00140B1A, // 001D ADD R5 R5 K26 + 0x8814010F, // 001C GETMBR R5 R0 K15 + 0x00140B04, // 001D ADD R5 R5 K4 0x04140A04, // 001E SUB R5 R5 R4 0x00140A01, // 001F ADD R5 R5 R1 0x00080405, // 0020 ADD R2 R2 R5 - 0x1C14071A, // 0021 EQ R5 R3 K26 + 0x1C140704, // 0021 EQ R5 R3 K4 0x78160001, // 0022 JMPF R5 #0025 0x90020202, // 0023 SETMBR R0 K1 R2 0x70020000, // 0024 JMP #0026 0x90020602, // 0025 SETMBR R0 K3 R2 - 0x8C140116, // 0026 GETMET R5 R0 K22 + 0x8C140113, // 0026 GETMET R5 R0 K19 0x7C140200, // 0027 CALL R5 1 0x80000000, // 0028 RET 0 }) @@ -424,13 +420,13 @@ be_local_closure(class_Partition_otadata_init, /* name */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0x90022001, // 0000 SETMBR R0 K16 R1 - 0x90022202, // 0001 SETMBR R0 K17 R2 - 0x88100110, // 0002 GETMBR R4 R0 K16 + 0x90021E01, // 0000 SETMBR R0 K15 R1 + 0x90022002, // 0001 SETMBR R0 K16 R2 + 0x8810010F, // 0002 GETMBR R4 R0 K15 0x4C140000, // 0003 LDNIL R5 0x1C100805, // 0004 EQ R4 R4 R5 0x78120000, // 0005 JMPF R4 #0007 - 0x90022104, // 0006 SETMBR R0 K16 K4 + 0x90021F04, // 0006 SETMBR R0 K15 K4 0x90020A03, // 0007 SETMBR R0 K5 R3 0x88100105, // 0008 GETMBR R4 R0 K5 0x4C140000, // 0009 LDNIL R5 @@ -440,7 +436,7 @@ be_local_closure(class_Partition_otadata_init, /* name */ 0x90020A04, // 000D SETMBR R0 K5 R4 0x5411FFFE, // 000E LDINT R4 -1 0x90021804, // 000F SETMBR R0 K12 R4 - 0x8C10011B, // 0010 GETMET R4 R0 K27 + 0x8C100117, // 0010 GETMET R4 R0 K23 0x7C100200, // 0011 CALL R4 1 0x80000000, // 0012 RET 0 }) @@ -475,8 +471,8 @@ be_local_class(Partition_otadata, (bstring*) &be_const_str_Partition_otadata ); extern const bclass be_class_Partition; -// compact class 'Partition' ktab size: 75, total: 134 (saved 472 bytes) -static const bvalue be_ktab_class_Partition[75] = { +// compact class 'Partition' ktab size: 71, total: 134 (saved 504 bytes) +static const bvalue be_ktab_class_Partition[71] = { /* K0 */ be_nested_str(flash), /* K1 */ be_nested_str(tobytes), /* K2 */ be_nested_str(erase), @@ -505,53 +501,49 @@ static const bvalue be_ktab_class_Partition[75] = { /* K25 */ be_nested_str(flash_real), /* K26 */ be_nested_str(get_flash_definition_sector), /* K27 */ be_const_int(3), - /* K28 */ be_const_int(0), - /* K29 */ be_nested_str(log), - /* K30 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X), - /* K31 */ be_nested_str(wrong_X20flash_X20size_X20), - /* K32 */ be_nested_str(internal_error), - /* K33 */ be_const_class(be_class_Partition), - /* K34 */ be_const_int(1), - /* K35 */ be_nested_str(E9), - /* K36 */ be_nested_str(get_unallocated_k), - /* K37 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB), - /* K38 */ be_nested_str(resize_max_flash_size_k), - /* K39 */ be_nested_str(sz), - /* K40 */ be_nested_str(global), - /* K41 */ be_nested_str(restart_flag), - /* K42 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting), - /* K43 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K44 */ be_nested_str(factory), - /* K45 */ be_nested_str(ota_max), - /* K46 */ be_nested_str(type), - /* K47 */ be_const_int(1), - /* K48 */ be_nested_str(subtype), - /* K49 */ be_const_int(0), - /* K50 */ be_nested_str(start), - /* K51 */ be_nested_str(Partition_otadata), - /* K52 */ be_nested_str(has_factory), - /* K53 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A), - /* K54 */ be_nested_str(_X20_X20), - /* K55 */ be_nested_str(tostring), - /* K56 */ be_nested_str(_X0A), - /* K57 */ be_nested_str(_X5D_X2C_X0A_X20_X20), - /* K58 */ be_nested_str(_X0A_X29_X3E), - /* K59 */ be_nested_str(get_factory_slot), - /* K60 */ be_nested_str(value_error), - /* K61 */ be_nested_str(Too_X20many_X20partiition_X20slots), - /* K62 */ be_nested_str(MD5), - /* K63 */ be_nested_str(update), - /* K64 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF), - /* K65 */ be_nested_str(finish), - /* K66 */ be_nested_str(is_spiffs), - /* K67 */ be_nested_str(No_X20FS_X20partition_X20found), - /* K68 */ be_nested_str(00), - /* K69 */ be_nested_str(is_factory), - /* K70 */ be_nested_str(Invalid_X20ota_X20partition_X20number), - /* K71 */ be_nested_str(set_ota_max), - /* K72 */ be_nested_str(set_active), - /* K73 */ be_nested_str(get_max_flash_size_k), - /* K74 */ be_nested_str(is_ota), + /* K28 */ be_nested_str(log), + /* K29 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X), + /* K30 */ be_nested_str(wrong_X20flash_X20size_X20), + /* K31 */ be_nested_str(internal_error), + /* K32 */ be_const_class(be_class_Partition), + /* K33 */ be_nested_str(E9), + /* K34 */ be_nested_str(get_unallocated_k), + /* K35 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB), + /* K36 */ be_nested_str(resize_max_flash_size_k), + /* K37 */ be_nested_str(sz), + /* K38 */ be_nested_str(global), + /* K39 */ be_nested_str(restart_flag), + /* K40 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting), + /* K41 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K42 */ be_nested_str(factory), + /* K43 */ be_nested_str(ota_max), + /* K44 */ be_nested_str(type), + /* K45 */ be_nested_str(subtype), + /* K46 */ be_nested_str(start), + /* K47 */ be_nested_str(Partition_otadata), + /* K48 */ be_nested_str(has_factory), + /* K49 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A), + /* K50 */ be_nested_str(_X20_X20), + /* K51 */ be_nested_str(tostring), + /* K52 */ be_nested_str(_X0A), + /* K53 */ be_nested_str(_X5D_X2C_X0A_X20_X20), + /* K54 */ be_nested_str(_X0A_X29_X3E), + /* K55 */ be_nested_str(get_factory_slot), + /* K56 */ be_nested_str(value_error), + /* K57 */ be_nested_str(Too_X20many_X20partiition_X20slots), + /* K58 */ be_nested_str(MD5), + /* K59 */ be_nested_str(update), + /* K60 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF), + /* K61 */ be_nested_str(finish), + /* K62 */ be_nested_str(is_spiffs), + /* K63 */ be_nested_str(No_X20FS_X20partition_X20found), + /* K64 */ be_nested_str(00), + /* K65 */ be_nested_str(is_factory), + /* K66 */ be_nested_str(Invalid_X20ota_X20partition_X20number), + /* K67 */ be_nested_str(set_ota_max), + /* K68 */ be_nested_str(set_active), + /* K69 */ be_nested_str(get_max_flash_size_k), + /* K70 */ be_nested_str(is_ota), }; @@ -854,7 +846,7 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0x0C200408, // 001B DIV R8 R2 R8 0x1C24110E, // 001C EQ R9 R8 K14 0x78260001, // 001D JMPF R9 #0020 - 0x581C001C, // 001E LDCONST R7 K28 + 0x581C000D, // 001E LDCONST R7 K13 0x70020020, // 001F JMP #0041 0x1C241110, // 0020 EQ R9 R8 K16 0x78260001, // 0021 JMPF R9 #0024 @@ -903,9 +895,9 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0x5C340A00, // 004C MOVE R13 R5 0x7C280600, // 004D CALL R10 3 0xB82A2C00, // 004E GETNGBL R10 K22 - 0x8C28151D, // 004F GETMET R10 R10 K29 + 0x8C28151C, // 004F GETMET R10 R10 K28 0x60300018, // 0050 GETGBL R12 G24 - 0x5834001E, // 0051 LDCONST R13 K30 + 0x5834001D, // 0051 LDCONST R13 K29 0x5C381200, // 0052 MOVE R14 R9 0x943C0B1B, // 0053 GETIDX R15 R5 K27 0x7C300600, // 0054 CALL R12 3 @@ -915,8 +907,8 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */ 0x60240008, // 0058 GETGBL R9 G8 0x5C281000, // 0059 MOVE R10 R8 0x7C240200, // 005A CALL R9 1 - 0x00263E09, // 005B ADD R9 K31 R9 - 0xB0064009, // 005C RAISE 1 K32 R9 + 0x00263C09, // 005B ADD R9 K30 R9 + 0xB0063E09, // 005C RAISE 1 K31 R9 0x80000000, // 005D RET 0 }) ) @@ -941,10 +933,10 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */ &be_const_str_get_flash_definition_sector, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x58000021, // 0000 LDCONST R0 K33 + 0x58000020, // 0000 LDCONST R0 K32 0xA4060000, // 0001 IMPORT R1 K0 0x60080010, // 0002 GETGBL R2 G16 - 0x400E1B22, // 0003 CONNECT R3 K13 K34 + 0x400E1B0E, // 0003 CONNECT R3 K13 K14 0x7C080200, // 0004 CALL R2 1 0xA802000F, // 0005 EXBLK 0 #0016 0x5C0C0400, // 0006 MOVE R3 R2 @@ -953,10 +945,10 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */ 0x08100604, // 0009 MUL R4 R3 R4 0x8C140307, // 000A GETMET R5 R1 K7 0x5C1C0800, // 000B MOVE R7 R4 - 0x58200022, // 000C LDCONST R8 K34 + 0x5820000E, // 000C LDCONST R8 K14 0x7C140600, // 000D CALL R5 3 0x60180015, // 000E GETGBL R6 G21 - 0x581C0023, // 000F LDCONST R7 K35 + 0x581C0021, // 000F LDCONST R7 K33 0x7C180200, // 0010 CALL R6 1 0x1C140A06, // 0011 EQ R5 R5 R6 0x78160001, // 0012 JMPF R5 #0015 @@ -991,7 +983,7 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ 0xA8020024, // 0000 EXBLK 0 #0026 - 0x8C040124, // 0001 GETMET R1 R0 K36 + 0x8C040122, // 0001 GETMET R1 R0 K34 0x7C040200, // 0002 CALL R1 1 0x1808030D, // 0003 LE R2 R1 K13 0x780A0002, // 0004 JMPF R2 #0008 @@ -999,31 +991,31 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ 0xA8040001, // 0006 EXBLK 1 1 0x80040400, // 0007 RET 1 R2 0xB80A2C00, // 0008 GETNGBL R2 K22 - 0x8C08051D, // 0009 GETMET R2 R2 K29 + 0x8C08051C, // 0009 GETMET R2 R2 K28 0x60100018, // 000A GETGBL R4 G24 - 0x58140025, // 000B LDCONST R5 K37 + 0x58140023, // 000B LDCONST R5 K35 0x5C180200, // 000C MOVE R6 R1 0x7C100400, // 000D CALL R4 2 0x58140010, // 000E LDCONST R5 K16 0x7C080600, // 000F CALL R2 3 - 0x8C080126, // 0010 GETMET R2 R0 K38 + 0x8C080124, // 0010 GETMET R2 R0 K36 0x7C080200, // 0011 CALL R2 1 0x88080109, // 0012 GETMBR R2 R0 K9 0x540DFFFE, // 0013 LDINT R3 -1 0x94080403, // 0014 GETIDX R2 R2 R3 0x541203FF, // 0015 LDINT R4 1024 0x08100204, // 0016 MUL R4 R1 R4 - 0x880C0527, // 0017 GETMBR R3 R2 K39 + 0x880C0525, // 0017 GETMBR R3 R2 K37 0x000C0604, // 0018 ADD R3 R3 R4 - 0x900A4E03, // 0019 SETMBR R2 K39 R3 + 0x900A4A03, // 0019 SETMBR R2 K37 R3 0x8C0C0105, // 001A GETMET R3 R0 K5 0x7C0C0200, // 001B CALL R3 1 0xB80E2C00, // 001C GETNGBL R3 K22 - 0x880C0728, // 001D GETMBR R3 R3 K40 - 0x900E5310, // 001E SETMBR R3 K41 K16 + 0x880C0726, // 001D GETMBR R3 R3 K38 + 0x900E4F10, // 001E SETMBR R3 K39 K16 0xB80E2C00, // 001F GETNGBL R3 K22 - 0x8C0C071D, // 0020 GETMET R3 R3 K29 - 0x5814002A, // 0021 LDCONST R5 K42 + 0x8C0C071C, // 0020 GETMET R3 R3 K28 + 0x58140028, // 0021 LDCONST R5 K40 0x58180010, // 0022 LDCONST R6 K16 0x7C0C0600, // 0023 CALL R3 3 0xA8040001, // 0024 EXBLK 1 1 @@ -1031,9 +1023,9 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */ 0xAC040002, // 0026 CATCH R1 0 2 0x70020009, // 0027 JMP #0032 0xB80E2C00, // 0028 GETNGBL R3 K22 - 0x8C0C071D, // 0029 GETMET R3 R3 K29 + 0x8C0C071C, // 0029 GETMET R3 R3 K28 0x60140018, // 002A GETGBL R5 G24 - 0x5818002B, // 002B LDCONST R6 K43 + 0x58180029, // 002B LDCONST R6 K41 0x5C1C0200, // 002C MOVE R7 R1 0x5C200400, // 002D MOVE R8 R2 0x7C140600, // 002E CALL R5 3 @@ -1066,7 +1058,7 @@ be_local_closure(class_Partition_switch_factory, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C052C, // 0001 GETMET R3 R2 K44 + 0x8C0C052A, // 0001 GETMET R3 R2 K42 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x80000000, // 0004 RET 0 @@ -1094,7 +1086,7 @@ be_local_closure(class_Partition_load_otadata, /* name */ &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x5406DFFF, // 0000 LDINT R1 57344 - 0x8C08012D, // 0001 GETMET R2 R0 K45 + 0x8C08012B, // 0001 GETMET R2 R0 K43 0x7C080200, // 0002 CALL R2 1 0x600C0010, // 0003 GETGBL R3 G16 0x88100109, // 0004 GETMBR R4 R0 K9 @@ -1102,21 +1094,21 @@ be_local_closure(class_Partition_load_otadata, /* name */ 0xA8020009, // 0006 EXBLK 0 #0011 0x5C100600, // 0007 MOVE R4 R3 0x7C100000, // 0008 CALL R4 0 - 0x8814092E, // 0009 GETMBR R5 R4 K46 - 0x1C140B2F, // 000A EQ R5 R5 K47 + 0x8814092C, // 0009 GETMBR R5 R4 K44 + 0x1C140B0E, // 000A EQ R5 R5 K14 0x78160003, // 000B JMPF R5 #0010 - 0x88140930, // 000C GETMBR R5 R4 K48 - 0x1C140B31, // 000D EQ R5 R5 K49 + 0x8814092D, // 000C GETMBR R5 R4 K45 + 0x1C140B0D, // 000D EQ R5 R5 K13 0x78160000, // 000E JMPF R5 #0010 - 0x88040932, // 000F GETMBR R1 R4 K50 + 0x8804092E, // 000F GETMBR R1 R4 K46 0x7001FFF5, // 0010 JMP #0007 0x580C0015, // 0011 LDCONST R3 K21 0xAC0C0200, // 0012 CATCH R3 1 0 0xB0080000, // 0013 RAISE 2 R0 R0 0xB80E2200, // 0014 GETNGBL R3 K17 - 0x8C0C0733, // 0015 GETMET R3 R3 K51 + 0x8C0C072F, // 0015 GETMET R3 R3 K47 0x5C140400, // 0016 MOVE R5 R2 - 0x8C180134, // 0017 GETMET R6 R0 K52 + 0x8C180130, // 0017 GETMET R6 R0 K48 0x7C180200, // 0018 CALL R6 1 0x5C1C0200, // 0019 MOVE R7 R1 0x7C0C0800, // 001A CALL R3 4 @@ -1145,28 +1137,28 @@ be_local_closure(class_Partition_tostring, /* name */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x58040035, // 0000 LDCONST R1 K53 + 0x58040031, // 0000 LDCONST R1 K49 0x60080010, // 0001 GETGBL R2 G16 0x880C0109, // 0002 GETMBR R3 R0 K9 0x7C080200, // 0003 CALL R2 1 0xA8020007, // 0004 EXBLK 0 #000D 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x00040336, // 0007 ADD R1 R1 K54 - 0x8C100737, // 0008 GETMET R4 R3 K55 + 0x00040332, // 0007 ADD R1 R1 K50 + 0x8C100733, // 0008 GETMET R4 R3 K51 0x7C100200, // 0009 CALL R4 1 0x00040204, // 000A ADD R1 R1 R4 - 0x00040338, // 000B ADD R1 R1 K56 + 0x00040334, // 000B ADD R1 R1 K52 0x7001FFF7, // 000C JMP #0005 0x58080015, // 000D LDCONST R2 K21 0xAC080200, // 000E CATCH R2 1 0 0xB0080000, // 000F RAISE 2 R0 R0 - 0x00040339, // 0010 ADD R1 R1 K57 + 0x00040335, // 0010 ADD R1 R1 K53 0x88080104, // 0011 GETMBR R2 R0 K4 - 0x8C080537, // 0012 GETMET R2 R2 K55 + 0x8C080533, // 0012 GETMET R2 R2 K51 0x7C080200, // 0013 CALL R2 1 0x00040202, // 0014 ADD R1 R1 R2 - 0x0004033A, // 0015 ADD R1 R1 K58 + 0x00040336, // 0015 ADD R1 R1 K54 0x80040200, // 0016 RET 1 R1 }) ) @@ -1191,7 +1183,7 @@ be_local_closure(class_Partition_has_factory, /* name */ &be_const_str_has_factory, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C04013B, // 0000 GETMET R1 R0 K59 + 0x8C040137, // 0000 GETMET R1 R0 K55 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x20040202, // 0003 NE R1 R1 R2 @@ -1225,7 +1217,7 @@ be_local_closure(class_Partition_tobytes, /* name */ 0x540A005E, // 0003 LDINT R2 95 0x24040202, // 0004 GT R1 R1 R2 0x78060000, // 0005 JMPF R1 #0007 - 0xB006793D, // 0006 RAISE 1 K60 K61 + 0xB0067139, // 0006 RAISE 1 K56 K57 0x60040015, // 0007 GETGBL R1 G21 0x7C040000, // 0008 CALL R1 0 0x60080010, // 0009 GETGBL R2 G16 @@ -1241,16 +1233,16 @@ be_local_closure(class_Partition_tobytes, /* name */ 0x58080015, // 0013 LDCONST R2 K21 0xAC080200, // 0014 CATCH R2 1 0 0xB0080000, // 0015 RAISE 2 R0 R0 - 0xB80A7C00, // 0016 GETNGBL R2 K62 + 0xB80A7400, // 0016 GETNGBL R2 K58 0x7C080000, // 0017 CALL R2 0 - 0x8C0C053F, // 0018 GETMET R3 R2 K63 + 0x8C0C053B, // 0018 GETMET R3 R2 K59 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 0x600C0015, // 001B GETGBL R3 G21 - 0x58100040, // 001C LDCONST R4 K64 + 0x5810003C, // 001C LDCONST R4 K60 0x7C0C0200, // 001D CALL R3 1 0x00040203, // 001E ADD R1 R1 R3 - 0x8C0C0541, // 001F GETMET R3 R2 K65 + 0x8C0C053D, // 001F GETMET R3 R2 K61 0x7C0C0200, // 0020 CALL R3 1 0x00040203, // 0021 ADD R1 R1 R3 0x80040200, // 0022 RET 1 R1 @@ -1284,18 +1276,18 @@ be_local_closure(class_Partition_ota_max, /* name */ 0xA8020016, // 0004 EXBLK 0 #001C 0x5C0C0400, // 0005 MOVE R3 R2 0x7C0C0000, // 0006 CALL R3 0 - 0x8810072E, // 0007 GETMBR R4 R3 K46 + 0x8810072C, // 0007 GETMBR R4 R3 K44 0x1C10090D, // 0008 EQ R4 R4 K13 0x78120010, // 0009 JMPF R4 #001B - 0x88100730, // 000A GETMBR R4 R3 K48 + 0x8810072D, // 000A GETMBR R4 R3 K45 0x5416000F, // 000B LDINT R5 16 0x28100805, // 000C GE R4 R4 R5 0x7812000C, // 000D JMPF R4 #001B - 0x88100730, // 000E GETMBR R4 R3 K48 + 0x8810072D, // 000E GETMBR R4 R3 K45 0x5416001F, // 000F LDINT R5 32 0x14100805, // 0010 LT R4 R4 R5 0x78120008, // 0011 JMPF R4 #001B - 0x88100730, // 0012 GETMBR R4 R3 K48 + 0x8810072D, // 0012 GETMBR R4 R3 K45 0x5416000F, // 0013 LDINT R5 16 0x04100805, // 0014 SUB R4 R4 R5 0x4C140000, // 0015 LDNIL R5 @@ -1336,19 +1328,19 @@ be_local_closure(class_Partition_invalidate_spiffs, /* name */ 0x88080109, // 0001 GETMBR R2 R0 K9 0x540DFFFE, // 0002 LDINT R3 -1 0x94080403, // 0003 GETIDX R2 R2 R3 - 0x8C0C0542, // 0004 GETMET R3 R2 K66 + 0x8C0C053E, // 0004 GETMET R3 R2 K62 0x7C0C0200, // 0005 CALL R3 1 0x740E0000, // 0006 JMPT R3 #0008 - 0xB0067943, // 0007 RAISE 1 K60 K67 + 0xB006713F, // 0007 RAISE 1 K56 K63 0x600C0015, // 0008 GETGBL R3 G21 - 0x58100044, // 0009 LDCONST R4 K68 + 0x58100040, // 0009 LDCONST R4 K64 0x7C0C0200, // 000A CALL R3 1 0x8C100303, // 000B GETMET R4 R1 K3 - 0x88180532, // 000C GETMBR R6 R2 K50 + 0x8818052E, // 000C GETMBR R6 R2 K46 0x5C1C0600, // 000D MOVE R7 R3 0x7C100600, // 000E CALL R4 3 0x8C100303, // 000F GETMET R4 R1 K3 - 0x88180532, // 0010 GETMBR R6 R2 K50 + 0x8818052E, // 0010 GETMBR R6 R2 K46 0x541E0FFF, // 0011 LDINT R7 4096 0x00180C07, // 0012 ADD R6 R6 R7 0x5C1C0600, // 0013 MOVE R7 R3 @@ -1383,7 +1375,7 @@ be_local_closure(class_Partition_get_factory_slot, /* name */ 0xA8020007, // 0003 EXBLK 0 #000C 0x5C080200, // 0004 MOVE R2 R1 0x7C080000, // 0005 CALL R2 0 - 0x8C0C0545, // 0006 GETMET R3 R2 K69 + 0x8C0C0541, // 0006 GETMET R3 R2 K65 0x7C0C0200, // 0007 CALL R3 1 0x780E0001, // 0008 JMPF R3 #000B 0xA8040001, // 0009 EXBLK 1 1 @@ -1416,20 +1408,20 @@ be_local_closure(class_Partition_set_active, /* name */ &be_const_str_set_active, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x1408031C, // 0000 LT R2 R1 K28 + 0x1408030D, // 0000 LT R2 R1 K13 0x740A0003, // 0001 JMPT R2 #0006 - 0x8C08012D, // 0002 GETMET R2 R0 K45 + 0x8C08012B, // 0002 GETMET R2 R0 K43 0x7C080200, // 0003 CALL R2 1 0x24080202, // 0004 GT R2 R1 R2 0x780A0000, // 0005 JMPF R2 #0007 - 0xB0067946, // 0006 RAISE 1 K60 K70 + 0xB0067142, // 0006 RAISE 1 K56 K66 0x88080104, // 0007 GETMBR R2 R0 K4 - 0x8C080547, // 0008 GETMET R2 R2 K71 - 0x8C10012D, // 0009 GETMET R4 R0 K45 + 0x8C080543, // 0008 GETMET R2 R2 K67 + 0x8C10012B, // 0009 GETMET R4 R0 K43 0x7C100200, // 000A CALL R4 1 0x7C080400, // 000B CALL R2 2 0x88080104, // 000C GETMBR R2 R0 K4 - 0x8C080548, // 000D GETMET R2 R2 K72 + 0x8C080544, // 000D GETMET R2 R2 K68 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80000000, // 0010 RET 0 @@ -1459,13 +1451,13 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ 0x88040109, // 0000 GETMBR R1 R0 K9 0x5409FFFE, // 0001 LDINT R2 -1 0x94040202, // 0002 GETIDX R1 R1 R2 - 0x8C080342, // 0003 GETMET R2 R1 K66 + 0x8C08033E, // 0003 GETMET R2 R1 K62 0x7C080200, // 0004 CALL R2 1 0x780A000A, // 0005 JMPF R2 #0011 - 0x8C080149, // 0006 GETMET R2 R0 K73 + 0x8C080145, // 0006 GETMET R2 R0 K69 0x7C080200, // 0007 CALL R2 1 - 0x880C0332, // 0008 GETMBR R3 R1 K50 - 0x88100327, // 0009 GETMBR R4 R1 K39 + 0x880C032E, // 0008 GETMBR R3 R1 K46 + 0x88100325, // 0009 GETMBR R4 R1 K37 0x000C0604, // 000A ADD R3 R3 R4 0x541203FF, // 000B LDINT R4 1024 0x0C0C0604, // 000C DIV R3 R3 R4 @@ -1473,7 +1465,7 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */ 0x78120001, // 000E JMPF R4 #0011 0x04100403, // 000F SUB R4 R2 R3 0x80040800, // 0010 RET 1 R4 - 0x80063800, // 0011 RET 1 K28 + 0x80061A00, // 0011 RET 1 K13 }) ) ); @@ -1503,7 +1495,7 @@ be_local_closure(class_Partition_get_ota_slot, /* name */ 0xA8020008, // 0003 EXBLK 0 #000D 0x5C0C0400, // 0004 MOVE R3 R2 0x7C0C0000, // 0005 CALL R3 0 - 0x8C10074A, // 0006 GETMET R4 R3 K74 + 0x8C100746, // 0006 GETMET R4 R3 K70 0x7C100200, // 0007 CALL R4 1 0x1C100801, // 0008 EQ R4 R4 R1 0x78120001, // 0009 JMPF R4 #000C @@ -1557,8 +1549,8 @@ be_local_class(Partition, (bstring*) &be_const_str_Partition ); extern const bclass be_class_Partition_info; -// compact class 'Partition_info' ktab size: 55, total: 92 (saved 296 bytes) -static const bvalue be_ktab_class_Partition_info[55] = { +// compact class 'Partition_info' ktab size: 49, total: 92 (saved 344 bytes) +static const bvalue be_ktab_class_Partition_info[49] = { /* K0 */ be_nested_str(type), /* K1 */ be_const_int(0), /* K2 */ be_nested_str(subtype), @@ -1566,54 +1558,48 @@ static const bvalue be_ktab_class_Partition_info[55] = { /* K4 */ be_const_int(1), /* K5 */ be_nested_str(data), /* K6 */ be_nested_str(0x_X2502X), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str(start), - /* K9 */ be_nested_str(sz), - /* K10 */ be_nested_str(label), - /* K11 */ be_nested_str(), - /* K12 */ be_nested_str(flags), - /* K13 */ be_nested_str(get), - /* K14 */ be_const_int(2), - /* K15 */ be_const_int(1), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str(remove_trailing_zeroes), - /* K18 */ be_nested_str(asstring), - /* K19 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X), - /* K20 */ be_nested_str(internal_error), - /* K21 */ be_const_int(0), - /* K22 */ be_nested_str(factory), - /* K23 */ be_nested_str(ota_), - /* K24 */ be_nested_str(test), - /* K25 */ be_nested_str(otadata), - /* K26 */ be_nested_str(phy), - /* K27 */ be_nested_str(nvs), - /* K28 */ be_const_int(3), - /* K29 */ be_nested_str(coredump), - /* K30 */ be_nested_str(nvskeys), - /* K31 */ be_nested_str(efuse_em), - /* K32 */ be_nested_str(esphttpd), - /* K33 */ be_nested_str(fat), - /* K34 */ be_nested_str(spiffs), - /* K35 */ be_nested_str(type_to_string), - /* K36 */ be_nested_str(subtype_to_string), - /* K37 */ be_nested_str(_X20_X28), - /* K38 */ be_nested_str(_X29), - /* K39 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E), - /* K40 */ be_const_int(0), - /* K41 */ be_nested_str(AA50), - /* K42 */ be_nested_str(resize), - /* K43 */ be_nested_str(add), - /* K44 */ be_nested_str(fromstring), - /* K45 */ be_const_class(be_class_Partition_info), - /* K46 */ be_const_int(1), - /* K47 */ be_nested_str(flash), - /* K48 */ be_nested_str(is_ota), - /* K49 */ be_nested_str(is_factory), - /* K50 */ be_nested_str(read), - /* K51 */ be_nested_str(tasmota), - /* K52 */ be_nested_str(log), - /* K53 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27), - /* K54 */ be_nested_str(_X27_X20_X2D_X20), + /* K7 */ be_nested_str(start), + /* K8 */ be_nested_str(sz), + /* K9 */ be_nested_str(label), + /* K10 */ be_nested_str(), + /* K11 */ be_nested_str(flags), + /* K12 */ be_nested_str(get), + /* K13 */ be_const_int(2), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_str(remove_trailing_zeroes), + /* K16 */ be_nested_str(asstring), + /* K17 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X), + /* K18 */ be_nested_str(internal_error), + /* K19 */ be_nested_str(factory), + /* K20 */ be_nested_str(ota_), + /* K21 */ be_nested_str(test), + /* K22 */ be_nested_str(otadata), + /* K23 */ be_nested_str(phy), + /* K24 */ be_nested_str(nvs), + /* K25 */ be_nested_str(coredump), + /* K26 */ be_nested_str(nvskeys), + /* K27 */ be_nested_str(efuse_em), + /* K28 */ be_nested_str(esphttpd), + /* K29 */ be_nested_str(fat), + /* K30 */ be_nested_str(spiffs), + /* K31 */ be_nested_str(type_to_string), + /* K32 */ be_nested_str(subtype_to_string), + /* K33 */ be_nested_str(_X20_X28), + /* K34 */ be_nested_str(_X29), + /* K35 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E), + /* K36 */ be_nested_str(AA50), + /* K37 */ be_nested_str(resize), + /* K38 */ be_nested_str(add), + /* K39 */ be_nested_str(fromstring), + /* K40 */ be_const_class(be_class_Partition_info), + /* K41 */ be_nested_str(flash), + /* K42 */ be_nested_str(is_ota), + /* K43 */ be_nested_str(is_factory), + /* K44 */ be_nested_str(read), + /* K45 */ be_nested_str(tasmota), + /* K46 */ be_nested_str(log), + /* K47 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27), + /* K48 */ be_nested_str(_X27_X20_X2D_X20), }; @@ -1705,65 +1691,65 @@ be_local_closure(class_Partition_info_init, /* name */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[60]) { /* code */ - 0x90020107, // 0000 SETMBR R0 K0 K7 - 0x90020507, // 0001 SETMBR R0 K2 K7 - 0x90021107, // 0002 SETMBR R0 K8 K7 - 0x90021307, // 0003 SETMBR R0 K9 K7 - 0x9002150B, // 0004 SETMBR R0 K10 K11 - 0x90021907, // 0005 SETMBR R0 K12 K7 + 0x90020101, // 0000 SETMBR R0 K0 K1 + 0x90020501, // 0001 SETMBR R0 K2 K1 + 0x90020F01, // 0002 SETMBR R0 K7 K1 + 0x90021101, // 0003 SETMBR R0 K8 K1 + 0x9002130A, // 0004 SETMBR R0 K9 K10 + 0x90021701, // 0005 SETMBR R0 K11 K1 0x6008000E, // 0006 GETGBL R2 G14 0x600C0015, // 0007 GETGBL R3 G21 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 0x740A0000, // 000A JMPT R2 #000C 0x80000400, // 000B RET 0 - 0x8C08030D, // 000C GETMET R2 R1 K13 - 0x58100007, // 000D LDCONST R4 K7 - 0x5814000E, // 000E LDCONST R5 K14 + 0x8C08030C, // 000C GETMET R2 R1 K12 + 0x58100001, // 000D LDCONST R4 K1 + 0x5814000D, // 000E LDCONST R5 K13 0x7C080600, // 000F CALL R2 3 0x540E50A9, // 0010 LDINT R3 20650 0x1C0C0403, // 0011 EQ R3 R2 R3 0x780E0022, // 0012 JMPF R3 #0036 - 0x8C0C030D, // 0013 GETMET R3 R1 K13 - 0x5814000E, // 0014 LDCONST R5 K14 - 0x5818000F, // 0015 LDCONST R6 K15 + 0x8C0C030C, // 0013 GETMET R3 R1 K12 + 0x5814000D, // 0014 LDCONST R5 K13 + 0x58180004, // 0015 LDCONST R6 K4 0x7C0C0600, // 0016 CALL R3 3 0x90020003, // 0017 SETMBR R0 K0 R3 - 0x8C0C030D, // 0018 GETMET R3 R1 K13 - 0x58140010, // 0019 LDCONST R5 K16 - 0x5818000F, // 001A LDCONST R6 K15 + 0x8C0C030C, // 0018 GETMET R3 R1 K12 + 0x5814000E, // 0019 LDCONST R5 K14 + 0x58180004, // 001A LDCONST R6 K4 0x7C0C0600, // 001B CALL R3 3 0x90020403, // 001C SETMBR R0 K2 R3 - 0x8C0C030D, // 001D GETMET R3 R1 K13 + 0x8C0C030C, // 001D GETMET R3 R1 K12 0x54160003, // 001E LDINT R5 4 0x541A0003, // 001F LDINT R6 4 0x7C0C0600, // 0020 CALL R3 3 - 0x90021003, // 0021 SETMBR R0 K8 R3 - 0x8C0C030D, // 0022 GETMET R3 R1 K13 + 0x90020E03, // 0021 SETMBR R0 K7 R3 + 0x8C0C030C, // 0022 GETMET R3 R1 K12 0x54160007, // 0023 LDINT R5 8 0x541A0003, // 0024 LDINT R6 4 0x7C0C0600, // 0025 CALL R3 3 - 0x90021203, // 0026 SETMBR R0 K9 R3 - 0x8C0C0111, // 0027 GETMET R3 R0 K17 + 0x90021003, // 0026 SETMBR R0 K8 R3 + 0x8C0C010F, // 0027 GETMET R3 R0 K15 0x5416000B, // 0028 LDINT R5 12 0x541A001A, // 0029 LDINT R6 27 0x40140A06, // 002A CONNECT R5 R5 R6 0x94140205, // 002B GETIDX R5 R1 R5 0x7C0C0400, // 002C CALL R3 2 - 0x8C0C0712, // 002D GETMET R3 R3 K18 + 0x8C0C0710, // 002D GETMET R3 R3 K16 0x7C0C0200, // 002E CALL R3 1 - 0x90021403, // 002F SETMBR R0 K10 R3 - 0x8C0C030D, // 0030 GETMET R3 R1 K13 + 0x90021203, // 002F SETMBR R0 K9 R3 + 0x8C0C030C, // 0030 GETMET R3 R1 K12 0x5416001B, // 0031 LDINT R5 28 0x541A0003, // 0032 LDINT R6 4 0x7C0C0600, // 0033 CALL R3 3 - 0x90021803, // 0034 SETMBR R0 K12 R3 + 0x90021603, // 0034 SETMBR R0 K11 R3 0x70020004, // 0035 JMP #003B 0x600C0018, // 0036 GETGBL R3 G24 - 0x58100013, // 0037 LDCONST R4 K19 + 0x58100011, // 0037 LDCONST R4 K17 0x5C140400, // 0038 MOVE R5 R2 0x7C0C0400, // 0039 CALL R3 2 - 0xB0062803, // 003A RAISE 1 K20 R3 + 0xB0062403, // 003A RAISE 1 K18 R3 0x80000000, // 003B RET 0 }) ) @@ -1789,12 +1775,12 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ &be_const_str_solidified, ( &(const binstruction[87]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x1C040315, // 0001 EQ R1 R1 K21 + 0x1C040301, // 0001 EQ R1 R1 K1 0x7806001A, // 0002 JMPF R1 #001E 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x1C040315, // 0004 EQ R1 R1 K21 + 0x1C040301, // 0004 EQ R1 R1 K1 0x78060001, // 0005 JMPF R1 #0008 - 0x80062C00, // 0006 RET 1 K22 + 0x80062600, // 0006 RET 1 K19 0x70020014, // 0007 JMP #001D 0x88040102, // 0008 GETMBR R1 R0 K2 0x540A000F, // 0009 LDINT R2 16 @@ -1809,67 +1795,67 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */ 0x540E000F, // 0012 LDINT R3 16 0x04080403, // 0013 SUB R2 R2 R3 0x7C040200, // 0014 CALL R1 1 - 0x00062E01, // 0015 ADD R1 K23 R1 + 0x00062801, // 0015 ADD R1 K20 R1 0x80040200, // 0016 RET 1 R1 0x70020004, // 0017 JMP #001D 0x88040102, // 0018 GETMBR R1 R0 K2 0x540A001F, // 0019 LDINT R2 32 0x1C040202, // 001A EQ R1 R1 R2 0x78060000, // 001B JMPF R1 #001D - 0x80063000, // 001C RET 1 K24 + 0x80062A00, // 001C RET 1 K21 0x70020033, // 001D JMP #0052 0x88040100, // 001E GETMBR R1 R0 K0 0x1C040304, // 001F EQ R1 R1 K4 0x78060030, // 0020 JMPF R1 #0052 0x88040102, // 0021 GETMBR R1 R0 K2 - 0x1C040315, // 0022 EQ R1 R1 K21 + 0x1C040301, // 0022 EQ R1 R1 K1 0x78060001, // 0023 JMPF R1 #0026 - 0x80063200, // 0024 RET 1 K25 + 0x80062C00, // 0024 RET 1 K22 0x7002002B, // 0025 JMP #0052 0x88040102, // 0026 GETMBR R1 R0 K2 0x1C040304, // 0027 EQ R1 R1 K4 0x78060001, // 0028 JMPF R1 #002B - 0x80063400, // 0029 RET 1 K26 + 0x80062E00, // 0029 RET 1 K23 0x70020026, // 002A JMP #0052 0x88040102, // 002B GETMBR R1 R0 K2 - 0x1C04030E, // 002C EQ R1 R1 K14 + 0x1C04030D, // 002C EQ R1 R1 K13 0x78060001, // 002D JMPF R1 #0030 - 0x80063600, // 002E RET 1 K27 + 0x80063000, // 002E RET 1 K24 0x70020021, // 002F JMP #0052 0x88040102, // 0030 GETMBR R1 R0 K2 - 0x1C04031C, // 0031 EQ R1 R1 K28 + 0x1C04030E, // 0031 EQ R1 R1 K14 0x78060001, // 0032 JMPF R1 #0035 - 0x80063A00, // 0033 RET 1 K29 + 0x80063200, // 0033 RET 1 K25 0x7002001C, // 0034 JMP #0052 0x88040102, // 0035 GETMBR R1 R0 K2 0x540A0003, // 0036 LDINT R2 4 0x1C040202, // 0037 EQ R1 R1 R2 0x78060001, // 0038 JMPF R1 #003B - 0x80063C00, // 0039 RET 1 K30 + 0x80063400, // 0039 RET 1 K26 0x70020016, // 003A JMP #0052 0x88040102, // 003B GETMBR R1 R0 K2 0x540A0004, // 003C LDINT R2 5 0x1C040202, // 003D EQ R1 R1 R2 0x78060001, // 003E JMPF R1 #0041 - 0x80063E00, // 003F RET 1 K31 + 0x80063600, // 003F RET 1 K27 0x70020010, // 0040 JMP #0052 0x88040102, // 0041 GETMBR R1 R0 K2 0x540A007F, // 0042 LDINT R2 128 0x1C040202, // 0043 EQ R1 R1 R2 0x78060001, // 0044 JMPF R1 #0047 - 0x80064000, // 0045 RET 1 K32 + 0x80063800, // 0045 RET 1 K28 0x7002000A, // 0046 JMP #0052 0x88040102, // 0047 GETMBR R1 R0 K2 0x540A0080, // 0048 LDINT R2 129 0x1C040202, // 0049 EQ R1 R1 R2 0x78060001, // 004A JMPF R1 #004D - 0x80064200, // 004B RET 1 K33 + 0x80063A00, // 004B RET 1 K29 0x70020004, // 004C JMP #0052 0x88040102, // 004D GETMBR R1 R0 K2 0x540A0081, // 004E LDINT R2 130 0x1C040202, // 004F EQ R1 R1 R2 0x78060000, // 0050 JMPF R1 #0052 - 0x80064400, // 0051 RET 1 K34 + 0x80063C00, // 0051 RET 1 K30 0x60040018, // 0052 GETGBL R1 G24 0x58080006, // 0053 LDCONST R2 K6 0x880C0102, // 0054 GETMBR R3 R0 K2 @@ -1898,30 +1884,30 @@ be_local_closure(class_Partition_info_tostring, /* name */ &be_const_str_tostring, &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x8C040123, // 0000 GETMET R1 R0 K35 + 0x8C04011F, // 0000 GETMET R1 R0 K31 0x7C040200, // 0001 CALL R1 1 - 0x8C080124, // 0002 GETMET R2 R0 K36 + 0x8C080120, // 0002 GETMET R2 R0 K32 0x7C080200, // 0003 CALL R2 1 - 0x200C030B, // 0004 NE R3 R1 K11 + 0x200C030A, // 0004 NE R3 R1 K10 0x780E0002, // 0005 JMPF R3 #0009 - 0x000E4A01, // 0006 ADD R3 K37 R1 - 0x000C0726, // 0007 ADD R3 R3 K38 + 0x000E4201, // 0006 ADD R3 K33 R1 + 0x000C0722, // 0007 ADD R3 R3 K34 0x5C040600, // 0008 MOVE R1 R3 - 0x200C050B, // 0009 NE R3 R2 K11 + 0x200C050A, // 0009 NE R3 R2 K10 0x780E0002, // 000A JMPF R3 #000E - 0x000E4A02, // 000B ADD R3 K37 R2 - 0x000C0726, // 000C ADD R3 R3 K38 + 0x000E4202, // 000B ADD R3 K33 R2 + 0x000C0722, // 000C ADD R3 R3 K34 0x5C080600, // 000D MOVE R2 R3 0x600C0018, // 000E GETGBL R3 G24 - 0x58100027, // 000F LDCONST R4 K39 + 0x58100023, // 000F LDCONST R4 K35 0x88140100, // 0010 GETMBR R5 R0 K0 0x5C180200, // 0011 MOVE R6 R1 0x881C0102, // 0012 GETMBR R7 R0 K2 0x5C200400, // 0013 MOVE R8 R2 - 0x88240108, // 0014 GETMBR R9 R0 K8 - 0x88280109, // 0015 GETMBR R10 R0 K9 - 0x882C010A, // 0016 GETMBR R11 R0 K10 - 0x8830010C, // 0017 GETMBR R12 R0 K12 + 0x88240107, // 0014 GETMBR R9 R0 K7 + 0x88280108, // 0015 GETMBR R10 R0 K8 + 0x882C0109, // 0016 GETMBR R11 R0 K9 + 0x8830010B, // 0017 GETMBR R12 R0 K11 0x7C0C1200, // 0018 CALL R3 9 0x80040600, // 0019 RET 1 R3 }) @@ -1949,7 +1935,7 @@ be_local_closure(class_Partition_info_is_ota, /* name */ ( &(const binstruction[14]) { /* code */ 0x88040102, // 0000 GETMBR R1 R0 K2 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x1C080528, // 0002 EQ R2 R2 K40 + 0x1C080501, // 0002 EQ R2 R2 K1 0x780A0008, // 0003 JMPF R2 #000D 0x540A000F, // 0004 LDINT R2 16 0x28080202, // 0005 GE R2 R1 R2 @@ -1985,41 +1971,41 @@ be_local_closure(class_Partition_info_tobytes, /* name */ &be_const_str_solidified, ( &(const binstruction[39]) { /* code */ 0x60040015, // 0000 GETGBL R1 G21 - 0x58080029, // 0001 LDCONST R2 K41 + 0x58080024, // 0001 LDCONST R2 K36 0x7C040200, // 0002 CALL R1 1 - 0x8C08032A, // 0003 GETMET R2 R1 K42 + 0x8C080325, // 0003 GETMET R2 R1 K37 0x5412001F, // 0004 LDINT R4 32 0x7C080400, // 0005 CALL R2 2 - 0x8C08052A, // 0006 GETMET R2 R2 K42 - 0x5810000E, // 0007 LDCONST R4 K14 + 0x8C080525, // 0006 GETMET R2 R2 K37 + 0x5810000D, // 0007 LDCONST R4 K13 0x7C080400, // 0008 CALL R2 2 - 0x8C08032B, // 0009 GETMET R2 R1 K43 + 0x8C080326, // 0009 GETMET R2 R1 K38 0x88100100, // 000A GETMBR R4 R0 K0 - 0x5814000F, // 000B LDCONST R5 K15 + 0x58140004, // 000B LDCONST R5 K4 0x7C080600, // 000C CALL R2 3 - 0x8C08032B, // 000D GETMET R2 R1 K43 + 0x8C080326, // 000D GETMET R2 R1 K38 0x88100102, // 000E GETMBR R4 R0 K2 - 0x5814000F, // 000F LDCONST R5 K15 + 0x58140004, // 000F LDCONST R5 K4 0x7C080600, // 0010 CALL R2 3 - 0x8C08032B, // 0011 GETMET R2 R1 K43 - 0x88100108, // 0012 GETMBR R4 R0 K8 + 0x8C080326, // 0011 GETMET R2 R1 K38 + 0x88100107, // 0012 GETMBR R4 R0 K7 0x54160003, // 0013 LDINT R5 4 0x7C080600, // 0014 CALL R2 3 - 0x8C08032B, // 0015 GETMET R2 R1 K43 - 0x88100109, // 0016 GETMBR R4 R0 K9 + 0x8C080326, // 0015 GETMET R2 R1 K38 + 0x88100108, // 0016 GETMBR R4 R0 K8 0x54160003, // 0017 LDINT R5 4 0x7C080600, // 0018 CALL R2 3 0x60080015, // 0019 GETGBL R2 G21 0x7C080000, // 001A CALL R2 0 - 0x8C08052C, // 001B GETMET R2 R2 K44 - 0x8810010A, // 001C GETMBR R4 R0 K10 + 0x8C080527, // 001B GETMET R2 R2 K39 + 0x88100109, // 001C GETMBR R4 R0 K9 0x7C080400, // 001D CALL R2 2 - 0x8C0C052A, // 001E GETMET R3 R2 K42 + 0x8C0C0525, // 001E GETMET R3 R2 K37 0x5416000F, // 001F LDINT R5 16 0x7C0C0400, // 0020 CALL R3 2 0x00040202, // 0021 ADD R1 R1 R2 - 0x8C0C032B, // 0022 GETMET R3 R1 K43 - 0x8814010C, // 0023 GETMBR R5 R0 K12 + 0x8C0C0326, // 0022 GETMET R3 R1 K38 + 0x8814010B, // 0023 GETMBR R5 R0 K11 0x541A0003, // 0024 LDINT R6 4 0x7C0C0600, // 0025 CALL R3 3 0x80040200, // 0026 RET 1 R1 @@ -2046,24 +2032,24 @@ be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */ &be_const_str_remove_trailing_zeroes, &be_const_str_solidified, ( &(const binstruction[24]) { /* code */ - 0x5804002D, // 0000 LDCONST R1 K45 + 0x58040028, // 0000 LDCONST R1 K40 0x6008000C, // 0001 GETGBL R2 G12 0x5C0C0000, // 0002 MOVE R3 R0 0x7C080200, // 0003 CALL R2 1 - 0x580C0028, // 0004 LDCONST R3 K40 + 0x580C0001, // 0004 LDCONST R3 K1 0x14100602, // 0005 LT R4 R3 R2 0x78120007, // 0006 JMPF R4 #000F 0x5411FFFE, // 0007 LDINT R4 -1 0x04100803, // 0008 SUB R4 R4 R3 0x94100004, // 0009 GETIDX R4 R0 R4 - 0x20100928, // 000A NE R4 R4 K40 + 0x20100901, // 000A NE R4 R4 K1 0x78120000, // 000B JMPF R4 #000D 0x70020001, // 000C JMP #000F - 0x000C072E, // 000D ADD R3 R3 K46 + 0x000C0704, // 000D ADD R3 R3 K4 0x7001FFF5, // 000E JMP #0005 - 0x24100728, // 000F GT R4 R3 K40 + 0x24100701, // 000F GT R4 R3 K1 0x78120005, // 0010 JMPF R4 #0017 - 0x8C10012A, // 0011 GETMET R4 R0 K42 + 0x8C100125, // 0011 GETMET R4 R0 K37 0x6018000C, // 0012 GETGBL R6 G12 0x5C1C0000, // 0013 MOVE R7 R0 0x7C180200, // 0014 CALL R6 1 @@ -2094,7 +2080,7 @@ be_local_closure(class_Partition_info_is_spiffs, /* name */ &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x1C04032E, // 0001 EQ R1 R1 K46 + 0x1C040304, // 0001 EQ R1 R1 K4 0x78060003, // 0002 JMPF R1 #0007 0x88040102, // 0003 GETMBR R1 R0 K2 0x540A0081, // 0004 LDINT R2 130 @@ -2126,27 +2112,27 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ &be_const_str_get_image_size, &be_const_str_solidified, ( &(const binstruction[85]) { /* code */ - 0xA4065E00, // 0000 IMPORT R1 K47 - 0x8C080130, // 0001 GETMET R2 R0 K48 + 0xA4065200, // 0000 IMPORT R1 K41 + 0x8C08012A, // 0001 GETMET R2 R0 K42 0x7C080200, // 0002 CALL R2 1 0x4C0C0000, // 0003 LDNIL R3 0x1C080403, // 0004 EQ R2 R2 R3 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080131, // 0006 GETMET R2 R0 K49 + 0x8C08012B, // 0006 GETMET R2 R0 K43 0x7C080200, // 0007 CALL R2 1 0x740A0001, // 0008 JMPT R2 #000B 0x5409FFFE, // 0009 LDINT R2 -1 0x80040400, // 000A RET 1 R2 0xA802003A, // 000B EXBLK 0 #0047 - 0x88080108, // 000C GETMBR R2 R0 K8 - 0x880C0109, // 000D GETMBR R3 R0 K9 - 0x8C100332, // 000E GETMET R4 R1 K50 + 0x88080107, // 000C GETMBR R2 R0 K7 + 0x880C0108, // 000D GETMBR R3 R0 K8 + 0x8C10032C, // 000E GETMET R4 R1 K44 0x5C180400, // 000F MOVE R6 R2 - 0x581C000F, // 0010 LDCONST R7 K15 + 0x581C0004, // 0010 LDCONST R7 K4 0x7C100600, // 0011 CALL R4 3 - 0x8C10090D, // 0012 GETMET R4 R4 K13 - 0x58180028, // 0013 LDCONST R6 K40 - 0x581C000F, // 0014 LDCONST R7 K15 + 0x8C10090C, // 0012 GETMET R4 R4 K12 + 0x58180001, // 0013 LDCONST R6 K1 + 0x581C0004, // 0014 LDCONST R7 K4 0x7C100600, // 0015 CALL R4 3 0x541600E8, // 0016 LDINT R5 233 0x20140805, // 0017 NE R5 R4 R5 @@ -2154,29 +2140,29 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ 0x5415FFFE, // 0019 LDINT R5 -1 0xA8040001, // 001A EXBLK 1 1 0x80040A00, // 001B RET 1 R5 - 0x8C140332, // 001C GETMET R5 R1 K50 - 0x001C050F, // 001D ADD R7 R2 K15 - 0x5820000F, // 001E LDCONST R8 K15 + 0x8C14032C, // 001C GETMET R5 R1 K44 + 0x001C0504, // 001D ADD R7 R2 K4 + 0x58200004, // 001E LDCONST R8 K4 0x7C140600, // 001F CALL R5 3 - 0x8C140B0D, // 0020 GETMET R5 R5 K13 - 0x581C0028, // 0021 LDCONST R7 K40 - 0x5820000F, // 0022 LDCONST R8 K15 + 0x8C140B0C, // 0020 GETMET R5 R5 K12 + 0x581C0001, // 0021 LDCONST R7 K1 + 0x58200004, // 0022 LDCONST R8 K4 0x7C140600, // 0023 CALL R5 3 0x541A001F, // 0024 LDINT R6 32 0x00180406, // 0025 ADD R6 R2 R6 - 0x581C0028, // 0026 LDCONST R7 K40 + 0x581C0001, // 0026 LDCONST R7 K1 0x14200E05, // 0027 LT R8 R7 R5 0x78220017, // 0028 JMPF R8 #0041 - 0x8C200332, // 0029 GETMET R8 R1 K50 + 0x8C20032C, // 0029 GETMET R8 R1 K44 0x542A0007, // 002A LDINT R10 8 0x04280C0A, // 002B SUB R10 R6 R10 0x542E0007, // 002C LDINT R11 8 0x7C200600, // 002D CALL R8 3 - 0x8C24110D, // 002E GETMET R9 R8 K13 - 0x582C0028, // 002F LDCONST R11 K40 + 0x8C24110C, // 002E GETMET R9 R8 K12 + 0x582C0001, // 002F LDCONST R11 K1 0x54320003, // 0030 LDINT R12 4 0x7C240600, // 0031 CALL R9 3 - 0x8C28110D, // 0032 GETMET R10 R8 K13 + 0x8C28110C, // 0032 GETMET R10 R8 K12 0x54320003, // 0033 LDINT R12 4 0x54360003, // 0034 LDINT R13 4 0x7C280600, // 0035 CALL R10 3 @@ -2189,22 +2175,22 @@ be_local_closure(class_Partition_info_get_image_size, /* name */ 0x542DFFFE, // 003C LDINT R11 -1 0xA8040001, // 003D EXBLK 1 1 0x80041600, // 003E RET 1 R11 - 0x001C0F0F, // 003F ADD R7 R7 K15 + 0x001C0F04, // 003F ADD R7 R7 K4 0x7001FFE5, // 0040 JMP #0027 0x04200C02, // 0041 SUB R8 R6 R2 - 0x0020110F, // 0042 ADD R8 R8 K15 + 0x00201104, // 0042 ADD R8 R8 K4 0xA8040001, // 0043 EXBLK 1 1 0x80041000, // 0044 RET 1 R8 0xA8040001, // 0045 EXBLK 1 1 0x7002000C, // 0046 JMP #0054 0xAC080002, // 0047 CATCH R2 0 2 0x70020009, // 0048 JMP #0053 - 0xB8126600, // 0049 GETNGBL R4 K51 - 0x8C100934, // 004A GETMET R4 R4 K52 - 0x001A6A02, // 004B ADD R6 K53 R2 - 0x00180D36, // 004C ADD R6 R6 K54 + 0xB8125A00, // 0049 GETNGBL R4 K45 + 0x8C10092E, // 004A GETMET R4 R4 K46 + 0x001A5E02, // 004B ADD R6 K47 R2 + 0x00180D30, // 004C ADD R6 R6 K48 0x00180C03, // 004D ADD R6 R6 R3 - 0x581C000E, // 004E LDCONST R7 K14 + 0x581C000D, // 004E LDCONST R7 K13 0x7C100600, // 004F CALL R4 3 0x5411FFFE, // 0050 LDINT R4 -1 0x80040800, // 0051 RET 1 R4 diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h index 960a23335..66322afb7 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h @@ -1146,8 +1146,8 @@ be_local_class(Rule_Matcher_AND_List, (bstring*) &be_const_str_Rule_Matcher_AND_List ); extern const bclass be_class_Rule_Matcher; -// compact class 'Rule_Matcher' ktab size: 30, total: 34 (saved 32 bytes) -static const bvalue be_ktab_class_Rule_Matcher[30] = { +// compact class 'Rule_Matcher' ktab size: 29, total: 34 (saved 40 bytes) +static const bvalue be_ktab_class_Rule_Matcher[29] = { /* K0 */ be_nested_str(matchers), /* K1 */ be_nested_str(rule), /* K2 */ be_nested_str(trigger), @@ -1177,7 +1177,6 @@ static const bvalue be_ktab_class_Rule_Matcher[30] = { /* K26 */ be_nested_str(Rule_Matcher_Array), /* K27 */ be_nested_str(Rule_Matcher_Operator), /* K28 */ be_nested_str(match), - /* K29 */ be_const_int(1), }; @@ -1448,7 +1447,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */ 0x78120001, // 0015 JMPF R4 #0018 0x4C100000, // 0016 LDNIL R4 0x80040800, // 0017 RET 1 R4 - 0x000C071D, // 0018 ADD R3 R3 K29 + 0x000C070C, // 0018 ADD R3 R3 K12 0x7001FFED, // 0019 JMP #0008 0x80040400, // 001A RET 1 R2 }) diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h index 437dad637..d81bff087 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Tasmota' ktab size: 157, total: 285 (saved 1024 bytes) -static const bvalue be_ktab_class_Tasmota[157] = { +// compact class 'Tasmota' ktab size: 151, total: 285 (saved 1072 bytes) +static const bvalue be_ktab_class_Tasmota[151] = { /* K0 */ be_nested_str(cmd_res), /* K1 */ be_nested_str(tasmota), /* K2 */ be_nested_str(global), @@ -39,129 +39,123 @@ static const bvalue be_ktab_class_Tasmota[157] = { /* K31 */ be_nested_str(_debug_present), /* K32 */ be_nested_str(debug), /* K33 */ be_nested_str(traceback), - /* K34 */ be_const_int(1), - /* K35 */ be_nested_str(save_before_restart), - /* K36 */ be_nested_str(persist), - /* K37 */ be_nested_str(save), - /* K38 */ be_nested_str(_ccmd), - /* K39 */ be_nested_str(json), - /* K40 */ be_nested_str(load), - /* K41 */ be_nested_str(find_key_i), - /* K42 */ be_nested_str(resolvecmnd), - /* K43 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), - /* K44 */ be_nested_str(light), - /* K45 */ be_nested_str(set), - /* K46 */ be_nested_str(_crons), - /* K47 */ be_nested_str(ccronexpr), - /* K48 */ be_nested_str(now), - /* K49 */ be_nested_str(size), - /* K50 */ be_nested_str(trig), - /* K51 */ be_nested_str(next), - /* K52 */ be_nested_str(time_reached), - /* K53 */ be_nested_str(f), - /* K54 */ be_nested_str(check_not_method), - /* K55 */ be_nested_str(_timers), - /* K56 */ be_nested_str(push), - /* K57 */ be_nested_str(Trigger), - /* K58 */ be_nested_str(millis), - /* K59 */ be_nested_str(instance), - /* K60 */ be_nested_str(value_error), - /* K61 */ be_nested_str(instance_X20required), - /* K62 */ be_const_int(0), - /* K63 */ be_nested_str(id), - /* K64 */ be_nested_str(ctypes_bytes_dyn), - /* K65 */ be_nested_str(_global_addr), - /* K66 */ be_nested_str(_global_def), - /* K67 */ be_nested_str(_settings_ptr), - /* K68 */ be_nested_str(settings), - /* K69 */ be_nested_str(toptr), - /* K70 */ be_nested_str(_settings_def), - /* K71 */ be_nested_str(wd), - /* K72 */ be_nested_str(), - /* K73 */ be_nested_str(contains), - /* K74 */ be_nested_str(add_cmd), - /* K75 */ be_nested_str(UrlFetch), - /* K76 */ be_nested_str(_rules), - /* K77 */ be_nested_str(Rule_Matcher), - /* K78 */ be_nested_str(parse), - /* K79 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), - /* K80 */ be_nested_str(match), - /* K81 */ be_nested_str(trigger), - /* K82 */ be_nested_str(_find_op), - /* K83 */ be_const_int(1), - /* K84 */ be_const_int(2147483647), - /* K85 */ be_nested_str(remove), - /* K86 */ be_nested_str(collect), - /* K87 */ be_nested_str(allocated), - /* K88 */ be_nested_str(string), - /* K89 */ be_nested_str(toupper), - /* K90 */ be_nested_str(_fl), - /* K91 */ be_nested_str(log), - /* K92 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), - /* K93 */ be_const_int(3), - /* K94 */ be_nested_str(try_rule), - /* K95 */ be_nested_str(endswith), - /* K96 */ be_nested_str(_X2Ebe), - /* K97 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension), - /* K98 */ be_nested_str(_X23), - /* K99 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive), - /* K100 */ be_nested_str(file), - /* K101 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file), - /* K102 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29), - /* K103 */ be_nested_str(c), - /* K104 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29), - /* K105 */ be_nested_str(Tele), - /* K106 */ be_const_int(0), - /* K107 */ be_nested_str(i2c_enabled), - /* K108 */ be_nested_str(wire1), - /* K109 */ be_nested_str(enabled), - /* K110 */ be_nested_str(detect), - /* K111 */ be_nested_str(wire2), - /* K112 */ be_nested_str(keys), - /* K113 */ be_nested_str(_X3F), - /* K114 */ be_nested_str(stop_iteration), - /* K115 */ be_nested_str(split), - /* K116 */ be_nested_str(_X2F), - /* K117 */ be_nested_str(index_X2Ehtml), - /* K118 */ be_nested_str(webclient), - /* K119 */ be_nested_str(set_follow_redirects), - /* K120 */ be_nested_str(begin), - /* K121 */ be_nested_str(GET), - /* K122 */ be_nested_str(status_X3A_X20), - /* K123 */ be_nested_str(connection_error), - /* K124 */ be_nested_str(write_file), - /* K125 */ be_nested_str(close), - /* K126 */ be_nested_str(BRY_X3A_X20Fetched_X20), - /* K127 */ be_nested_str(cb), - /* K128 */ be_nested_str(gen_cb), - /* K129 */ be_nested_str(time_dump), - /* K130 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d), - /* K131 */ be_nested_str(year), - /* K132 */ be_nested_str(month), - /* K133 */ be_nested_str(day), - /* K134 */ be_nested_str(hour), - /* K135 */ be_nested_str(min), - /* K136 */ be_nested_str(sec), - /* K137 */ be_nested_str(argument_X20must_X20be_X20a_X20function), - /* K138 */ be_nested_str(fast_loop_enabled), - /* K139 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), - /* K140 */ be_nested_str(scale_uint), - /* K141 */ be_const_int(2), - /* K142 */ be_nested_str(path), - /* K143 */ be_nested_str(startswith), - /* K144 */ be_const_int(2147483647), - /* K145 */ be_nested_str(_X2E), - /* K146 */ be_nested_str(_X2Ebec), - /* K147 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27), - /* K148 */ be_nested_str(exists), - /* K149 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27), - /* K150 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29), - /* K151 */ be_nested_str(http), - /* K152 */ be_nested_str(resp_cmnd_str), - /* K153 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27), - /* K154 */ be_nested_str(urlfetch), - /* K155 */ be_nested_str(resp_cmnd_failed), - /* K156 */ be_nested_str(resp_cmnd_done), + /* K34 */ be_nested_str(save_before_restart), + /* K35 */ be_nested_str(persist), + /* K36 */ be_nested_str(save), + /* K37 */ be_nested_str(_ccmd), + /* K38 */ be_nested_str(json), + /* K39 */ be_nested_str(load), + /* K40 */ be_nested_str(find_key_i), + /* K41 */ be_nested_str(resolvecmnd), + /* K42 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), + /* K43 */ be_nested_str(light), + /* K44 */ be_nested_str(set), + /* K45 */ be_nested_str(_crons), + /* K46 */ be_nested_str(ccronexpr), + /* K47 */ be_nested_str(now), + /* K48 */ be_nested_str(size), + /* K49 */ be_nested_str(trig), + /* K50 */ be_nested_str(next), + /* K51 */ be_nested_str(time_reached), + /* K52 */ be_nested_str(f), + /* K53 */ be_nested_str(check_not_method), + /* K54 */ be_nested_str(_timers), + /* K55 */ be_nested_str(push), + /* K56 */ be_nested_str(Trigger), + /* K57 */ be_nested_str(millis), + /* K58 */ be_nested_str(instance), + /* K59 */ be_nested_str(value_error), + /* K60 */ be_nested_str(instance_X20required), + /* K61 */ be_nested_str(id), + /* K62 */ be_nested_str(ctypes_bytes_dyn), + /* K63 */ be_nested_str(_global_addr), + /* K64 */ be_nested_str(_global_def), + /* K65 */ be_nested_str(_settings_ptr), + /* K66 */ be_nested_str(settings), + /* K67 */ be_nested_str(toptr), + /* K68 */ be_nested_str(_settings_def), + /* K69 */ be_nested_str(wd), + /* K70 */ be_nested_str(), + /* K71 */ be_nested_str(contains), + /* K72 */ be_nested_str(add_cmd), + /* K73 */ be_nested_str(UrlFetch), + /* K74 */ be_nested_str(_rules), + /* K75 */ be_nested_str(Rule_Matcher), + /* K76 */ be_nested_str(parse), + /* K77 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), + /* K78 */ be_nested_str(match), + /* K79 */ be_nested_str(trigger), + /* K80 */ be_nested_str(_find_op), + /* K81 */ be_const_int(2147483647), + /* K82 */ be_nested_str(remove), + /* K83 */ be_nested_str(collect), + /* K84 */ be_nested_str(allocated), + /* K85 */ be_nested_str(string), + /* K86 */ be_nested_str(toupper), + /* K87 */ be_nested_str(_fl), + /* K88 */ be_nested_str(log), + /* K89 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), + /* K90 */ be_const_int(3), + /* K91 */ be_nested_str(try_rule), + /* K92 */ be_nested_str(endswith), + /* K93 */ be_nested_str(_X2Ebe), + /* K94 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension), + /* K95 */ be_nested_str(_X23), + /* K96 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive), + /* K97 */ be_nested_str(file), + /* K98 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file), + /* K99 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29), + /* K100 */ be_nested_str(c), + /* K101 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29), + /* K102 */ be_nested_str(Tele), + /* K103 */ be_nested_str(i2c_enabled), + /* K104 */ be_nested_str(wire1), + /* K105 */ be_nested_str(enabled), + /* K106 */ be_nested_str(detect), + /* K107 */ be_nested_str(wire2), + /* K108 */ be_nested_str(keys), + /* K109 */ be_nested_str(_X3F), + /* K110 */ be_nested_str(stop_iteration), + /* K111 */ be_nested_str(split), + /* K112 */ be_nested_str(_X2F), + /* K113 */ be_nested_str(index_X2Ehtml), + /* K114 */ be_nested_str(webclient), + /* K115 */ be_nested_str(set_follow_redirects), + /* K116 */ be_nested_str(begin), + /* K117 */ be_nested_str(GET), + /* K118 */ be_nested_str(status_X3A_X20), + /* K119 */ be_nested_str(connection_error), + /* K120 */ be_nested_str(write_file), + /* K121 */ be_nested_str(close), + /* K122 */ be_nested_str(BRY_X3A_X20Fetched_X20), + /* K123 */ be_nested_str(cb), + /* K124 */ be_nested_str(gen_cb), + /* K125 */ be_nested_str(time_dump), + /* K126 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d), + /* K127 */ be_nested_str(year), + /* K128 */ be_nested_str(month), + /* K129 */ be_nested_str(day), + /* K130 */ be_nested_str(hour), + /* K131 */ be_nested_str(min), + /* K132 */ be_nested_str(sec), + /* K133 */ be_nested_str(argument_X20must_X20be_X20a_X20function), + /* K134 */ be_nested_str(fast_loop_enabled), + /* K135 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), + /* K136 */ be_nested_str(scale_uint), + /* K137 */ be_nested_str(path), + /* K138 */ be_nested_str(startswith), + /* K139 */ be_nested_str(_X2E), + /* K140 */ be_nested_str(_X2Ebec), + /* K141 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27), + /* K142 */ be_nested_str(exists), + /* K143 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27), + /* K144 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29), + /* K145 */ be_nested_str(http), + /* K146 */ be_nested_str(resp_cmnd_str), + /* K147 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27), + /* K148 */ be_nested_str(urlfetch), + /* K149 */ be_nested_str(resp_cmnd_failed), + /* K150 */ be_nested_str(resp_cmnd_done), }; @@ -409,12 +403,12 @@ be_local_closure(class_Tasmota_event, /* name */ 0x7C3C0200, // 0061 CALL R15 1 0x70020000, // 0062 JMP #0064 0xB0080000, // 0063 RAISE 2 R0 R0 - 0x00241322, // 0064 ADD R9 R9 K34 + 0x00241305, // 0064 ADD R9 R9 K5 0x7001FFCA, // 0065 JMP #0031 - 0x1C240323, // 0066 EQ R9 R1 K35 + 0x1C240322, // 0066 EQ R9 R1 K34 0x78260002, // 0067 JMPF R9 #006B - 0xA4264800, // 0068 IMPORT R9 K36 - 0x8C281325, // 0069 GETMET R10 R9 K37 + 0xA4264600, // 0068 IMPORT R9 K35 + 0x8C281324, // 0069 GETMET R10 R9 K36 0x7C280200, // 006A CALL R10 1 0x80040E00, // 006B RET 1 R7 }) @@ -440,23 +434,23 @@ be_local_closure(class_Tasmota_exec_cmd, /* name */ &be_const_str_exec_cmd, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x88100126, // 0000 GETMBR R4 R0 K38 + 0x88100125, // 0000 GETMBR R4 R0 K37 0x78120016, // 0001 JMPF R4 #0019 - 0xA4124E00, // 0002 IMPORT R4 K39 - 0x8C140928, // 0003 GETMET R5 R4 K40 + 0xA4124C00, // 0002 IMPORT R4 K38 + 0x8C140927, // 0003 GETMET R5 R4 K39 0x5C1C0600, // 0004 MOVE R7 R3 0x7C140400, // 0005 CALL R5 2 - 0x8C180129, // 0006 GETMET R6 R0 K41 - 0x88200126, // 0007 GETMBR R8 R0 K38 + 0x8C180128, // 0006 GETMET R6 R0 K40 + 0x88200125, // 0007 GETMBR R8 R0 K37 0x5C240200, // 0008 MOVE R9 R1 0x7C180600, // 0009 CALL R6 3 0x4C1C0000, // 000A LDNIL R7 0x201C0C07, // 000B NE R7 R6 R7 0x781E000B, // 000C JMPF R7 #0019 - 0x8C1C012A, // 000D GETMET R7 R0 K42 + 0x8C1C0129, // 000D GETMET R7 R0 K41 0x5C240C00, // 000E MOVE R9 R6 0x7C1C0400, // 000F CALL R7 2 - 0x881C0126, // 0010 GETMBR R7 R0 K38 + 0x881C0125, // 0010 GETMBR R7 R0 K37 0x941C0E06, // 0011 GETIDX R7 R7 R6 0x5C200C00, // 0012 MOVE R8 R6 0x5C240400, // 0013 MOVE R9 R2 @@ -491,19 +485,19 @@ be_local_closure(class_Tasmota_set_light, /* name */ &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x600C0001, // 0000 GETGBL R3 G1 - 0x5810002B, // 0001 LDCONST R4 K43 + 0x5810002A, // 0001 LDCONST R4 K42 0x7C0C0200, // 0002 CALL R3 1 - 0xA40E5800, // 0003 IMPORT R3 K44 + 0xA40E5600, // 0003 IMPORT R3 K43 0x4C100000, // 0004 LDNIL R4 0x20100404, // 0005 NE R4 R2 R4 0x78120005, // 0006 JMPF R4 #000D - 0x8C10072D, // 0007 GETMET R4 R3 K45 + 0x8C10072C, // 0007 GETMET R4 R3 K44 0x5C180200, // 0008 MOVE R6 R1 0x5C1C0400, // 0009 MOVE R7 R2 0x7C100600, // 000A CALL R4 3 0x80040800, // 000B RET 1 R4 0x70020003, // 000C JMP #0011 - 0x8C10072D, // 000D GETMET R4 R3 K45 + 0x8C10072C, // 000D GETMET R4 R3 K44 0x5C180200, // 000E MOVE R6 R1 0x7C100400, // 000F CALL R4 2 0x80040800, // 0010 RET 1 R4 @@ -531,38 +525,38 @@ be_local_closure(class_Tasmota_run_cron, /* name */ &be_const_str_run_cron, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0x8804012E, // 0000 GETMBR R1 R0 K46 + 0x8804012D, // 0000 GETMBR R1 R0 K45 0x7806001E, // 0001 JMPF R1 #0021 0x5804001C, // 0002 LDCONST R1 K28 - 0xB80A5E00, // 0003 GETNGBL R2 K47 - 0x8C080530, // 0004 GETMET R2 R2 K48 + 0xB80A5C00, // 0003 GETNGBL R2 K46 + 0x8C08052F, // 0004 GETMET R2 R2 K47 0x7C080200, // 0005 CALL R2 1 - 0x880C012E, // 0006 GETMBR R3 R0 K46 - 0x8C0C0731, // 0007 GETMET R3 R3 K49 + 0x880C012D, // 0006 GETMBR R3 R0 K45 + 0x8C0C0730, // 0007 GETMET R3 R3 K48 0x7C0C0200, // 0008 CALL R3 1 0x140C0203, // 0009 LT R3 R1 R3 0x780E0015, // 000A JMPF R3 #0021 - 0x880C012E, // 000B GETMBR R3 R0 K46 + 0x880C012D, // 000B GETMBR R3 R0 K45 0x940C0601, // 000C GETIDX R3 R3 R1 - 0x88100732, // 000D GETMBR R4 R3 K50 + 0x88100731, // 000D GETMBR R4 R3 K49 0x1C10091C, // 000E EQ R4 R4 K28 0x78120003, // 000F JMPF R4 #0014 - 0x8C100733, // 0010 GETMET R4 R3 K51 + 0x8C100732, // 0010 GETMET R4 R3 K50 0x7C100200, // 0011 CALL R4 1 - 0x900E6404, // 0012 SETMBR R3 K50 R4 + 0x900E6204, // 0012 SETMBR R3 K49 R4 0x7002000A, // 0013 JMP #001F - 0x8C100734, // 0014 GETMET R4 R3 K52 + 0x8C100733, // 0014 GETMET R4 R3 K51 0x7C100200, // 0015 CALL R4 1 0x78120007, // 0016 JMPF R4 #001F - 0x88100735, // 0017 GETMBR R4 R3 K53 - 0x8C140733, // 0018 GETMET R5 R3 K51 + 0x88100734, // 0017 GETMBR R4 R3 K52 + 0x8C140732, // 0018 GETMET R5 R3 K50 0x7C140200, // 0019 CALL R5 1 - 0x900E6405, // 001A SETMBR R3 K50 R5 + 0x900E6205, // 001A SETMBR R3 K49 R5 0x5C180800, // 001B MOVE R6 R4 0x5C1C0400, // 001C MOVE R7 R2 0x5C200A00, // 001D MOVE R8 R5 0x7C180400, // 001E CALL R6 2 - 0x00040322, // 001F ADD R1 R1 K34 + 0x00040305, // 001F ADD R1 R1 K5 0x7001FFE4, // 0020 JMP #0006 0x80000000, // 0021 RET 0 }) @@ -588,20 +582,20 @@ be_local_closure(class_Tasmota_set_timer, /* name */ &be_const_str_set_timer, &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x8C100136, // 0000 GETMET R4 R0 K54 + 0x8C100135, // 0000 GETMET R4 R0 K53 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x88100137, // 0003 GETMBR R4 R0 K55 + 0x88100136, // 0003 GETMBR R4 R0 K54 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90026E04, // 0009 SETMBR R0 K55 R4 - 0x88100137, // 000A GETMBR R4 R0 K55 - 0x8C100938, // 000B GETMET R4 R4 K56 - 0xB81A7200, // 000C GETNGBL R6 K57 - 0x8C1C013A, // 000D GETMET R7 R0 K58 + 0x90026C04, // 0009 SETMBR R0 K54 R4 + 0x88100136, // 000A GETMBR R4 R0 K54 + 0x8C100937, // 000B GETMET R4 R4 K55 + 0xB81A7000, // 000C GETNGBL R6 K56 + 0x8C1C0139, // 000D GETMET R7 R0 K57 0x5C240200, // 000E MOVE R9 R1 0x7C1C0400, // 000F CALL R7 2 0x5C200400, // 0010 MOVE R8 R2 @@ -635,9 +629,9 @@ be_local_closure(class_Tasmota_add_driver, /* name */ 0x60080004, // 0000 GETGBL R2 G4 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x2008053B, // 0003 NE R2 R2 K59 + 0x2008053A, // 0003 NE R2 R2 K58 0x780A0000, // 0004 JMPF R2 #0006 - 0xB006793D, // 0005 RAISE 1 K60 K61 + 0xB006773C, // 0005 RAISE 1 K59 K60 0x8808010D, // 0006 GETMBR R2 R0 K13 0x780A000B, // 0007 JMPF R2 #0014 0x8808010D, // 0008 GETMBR R2 R0 K13 @@ -648,7 +642,7 @@ be_local_closure(class_Tasmota_add_driver, /* name */ 0x1C080403, // 000D EQ R2 R2 R3 0x780A0003, // 000E JMPF R2 #0013 0x8808010D, // 000F GETMBR R2 R0 K13 - 0x8C080538, // 0010 GETMET R2 R2 K56 + 0x8C080537, // 0010 GETMET R2 R2 K55 0x5C100200, // 0011 MOVE R4 R1 0x7C080400, // 0012 CALL R2 2 0x70020003, // 0013 JMP #0018 @@ -680,21 +674,21 @@ be_local_closure(class_Tasmota_next_cron, /* name */ &be_const_str_next_cron, &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x8808012E, // 0000 GETMBR R2 R0 K46 + 0x8808012D, // 0000 GETMBR R2 R0 K45 0x780A000D, // 0001 JMPF R2 #0010 - 0x580C003E, // 0002 LDCONST R3 K62 - 0x8C100531, // 0003 GETMET R4 R2 K49 + 0x580C001C, // 0002 LDCONST R3 K28 + 0x8C100530, // 0003 GETMET R4 R2 K48 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120008, // 0006 JMPF R4 #0010 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x8810093F, // 0008 GETMBR R4 R4 K63 + 0x8810093D, // 0008 GETMBR R4 R4 K61 0x1C100801, // 0009 EQ R4 R4 R1 0x78120002, // 000A JMPF R4 #000E 0x94100403, // 000B GETIDX R4 R2 R3 - 0x88100932, // 000C GETMBR R4 R4 K50 + 0x88100931, // 000C GETMBR R4 R4 K49 0x80040800, // 000D RET 1 R4 - 0x000C0722, // 000E ADD R3 R3 K34 + 0x000C0705, // 000E ADD R3 R3 K5 0x7001FFF2, // 000F JMP #0003 0x80000000, // 0010 RET 0 }) @@ -748,36 +742,36 @@ be_local_closure(class_Tasmota_init, /* name */ &be_const_str_init, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xB8068000, // 0000 GETNGBL R1 K64 - 0x88080141, // 0001 GETMBR R2 R0 K65 - 0x880C0142, // 0002 GETMBR R3 R0 K66 + 0xB8067C00, // 0000 GETNGBL R1 K62 + 0x8808013F, // 0001 GETMBR R2 R0 K63 + 0x880C0140, // 0002 GETMBR R3 R0 K64 0x7C040400, // 0003 CALL R1 2 0x90020401, // 0004 SETMBR R0 K2 R1 0xA4060E00, // 0005 IMPORT R1 K7 0x60080015, // 0006 GETGBL R2 G21 - 0x880C0143, // 0007 GETMBR R3 R0 K67 + 0x880C0141, // 0007 GETMBR R3 R0 K65 0x54120003, // 0008 LDINT R4 4 0x7C080400, // 0009 CALL R2 2 0x8C08051D, // 000A GETMET R2 R2 K29 - 0x5810003E, // 000B LDCONST R4 K62 + 0x5810001C, // 000B LDCONST R4 K28 0x54160003, // 000C LDINT R5 4 0x7C080600, // 000D CALL R2 3 0x780A0006, // 000E JMPF R2 #0016 - 0xB80E8000, // 000F GETNGBL R3 K64 - 0x8C100345, // 0010 GETMET R4 R1 K69 + 0xB80E7C00, // 000F GETNGBL R3 K62 + 0x8C100343, // 0010 GETMET R4 R1 K67 0x5C180400, // 0011 MOVE R6 R2 0x7C100400, // 0012 CALL R4 2 - 0x88140146, // 0013 GETMBR R5 R0 K70 + 0x88140144, // 0013 GETMBR R5 R0 K68 0x7C0C0400, // 0014 CALL R3 2 - 0x90028803, // 0015 SETMBR R0 K68 R3 - 0x90028F48, // 0016 SETMBR R0 K71 K72 + 0x90028403, // 0015 SETMBR R0 K66 R3 + 0x90028B46, // 0016 SETMBR R0 K69 K70 0xB80E0400, // 0017 GETNGBL R3 K2 - 0x8C0C0749, // 0018 GETMET R3 R3 K73 + 0x8C0C0747, // 0018 GETMET R3 R3 K71 0x58140020, // 0019 LDCONST R5 K32 0x7C0C0400, // 001A CALL R3 2 0x90023E03, // 001B SETMBR R0 K31 R3 - 0x8C0C014A, // 001C GETMET R3 R0 K74 - 0x5814004B, // 001D LDCONST R5 K75 + 0x8C0C0148, // 001C GETMET R3 R0 K72 + 0x58140049, // 001D LDCONST R5 K73 0x84180000, // 001E CLOSURE R6 P0 0x7C0C0600, // 001F CALL R3 3 0xA0000000, // 0020 CLOSE R0 @@ -805,26 +799,26 @@ be_local_closure(class_Tasmota_add_rule, /* name */ &be_const_str_add_rule, &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ - 0x8C100136, // 0000 GETMET R4 R0 K54 + 0x8C100135, // 0000 GETMET R4 R0 K53 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x8810014C, // 0003 GETMBR R4 R0 K76 + 0x8810014A, // 0003 GETMBR R4 R0 K74 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90029804, // 0009 SETMBR R0 K76 R4 + 0x90029404, // 0009 SETMBR R0 K74 R4 0x60100004, // 000A GETGBL R4 G4 0x5C140400, // 000B MOVE R5 R2 0x7C100200, // 000C CALL R4 1 0x1C100908, // 000D EQ R4 R4 K8 0x7812000B, // 000E JMPF R4 #001B - 0x8810014C, // 000F GETMBR R4 R0 K76 - 0x8C100938, // 0010 GETMET R4 R4 K56 - 0xB81A7200, // 0011 GETNGBL R6 K57 - 0x881C014D, // 0012 GETMBR R7 R0 K77 - 0x8C1C0F4E, // 0013 GETMET R7 R7 K78 + 0x8810014A, // 000F GETMBR R4 R0 K74 + 0x8C100937, // 0010 GETMET R4 R4 K55 + 0xB81A7000, // 0011 GETNGBL R6 K56 + 0x881C014B, // 0012 GETMBR R7 R0 K75 + 0x8C1C0F4C, // 0013 GETMET R7 R7 K76 0x5C240200, // 0014 MOVE R9 R1 0x7C1C0400, // 0015 CALL R7 2 0x5C200400, // 0016 MOVE R8 R2 @@ -832,7 +826,7 @@ be_local_closure(class_Tasmota_add_rule, /* name */ 0x7C180600, // 0018 CALL R6 3 0x7C100400, // 0019 CALL R4 2 0x70020000, // 001A JMP #001C - 0xB006794F, // 001B RAISE 1 K60 K79 + 0xB006774D, // 001B RAISE 1 K59 K77 0x80000000, // 001C RET 0 }) ) @@ -857,7 +851,7 @@ be_local_closure(class_Tasmota_try_rule, /* name */ &be_const_str_try_rule, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8C100550, // 0000 GETMET R4 R2 K80 + 0x8C10054E, // 0000 GETMET R4 R2 K78 0x5C180200, // 0001 MOVE R6 R1 0x7C100400, // 0002 CALL R4 2 0x4C140000, // 0003 LDNIL R5 @@ -868,7 +862,7 @@ be_local_closure(class_Tasmota_try_rule, /* name */ 0x78160004, // 0008 JMPF R5 #000E 0x5C140600, // 0009 MOVE R5 R3 0x5C180800, // 000A MOVE R6 R4 - 0x881C0551, // 000B GETMBR R7 R2 K81 + 0x881C054F, // 000B GETMBR R7 R2 K79 0x5C200200, // 000C MOVE R8 R1 0x7C140600, // 000D CALL R5 3 0x50140200, // 000E LDBOOL R5 1 0 @@ -898,10 +892,10 @@ be_local_closure(class_Tasmota_find_op, /* name */ &be_const_str_find_op, &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x8C080152, // 0000 GETMET R2 R0 K82 + 0x8C080150, // 0000 GETMET R2 R0 K80 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 - 0x280C053E, // 0003 GE R3 R2 K62 + 0x280C051C, // 0003 GE R3 R2 K28 0x780E0011, // 0004 JMPF R3 #0017 0x540E7FFE, // 0005 LDINT R3 32767 0x2C0C0403, // 0006 AND R3 R2 R3 @@ -909,15 +903,15 @@ be_local_closure(class_Tasmota_find_op, /* name */ 0x3C100404, // 0008 SHR R4 R2 R4 0x60140012, // 0009 GETGBL R5 G18 0x7C140000, // 000A CALL R5 0 - 0x04180753, // 000B SUB R6 R3 K83 - 0x401A7C06, // 000C CONNECT R6 K62 R6 + 0x04180705, // 000B SUB R6 R3 K5 + 0x401A3806, // 000C CONNECT R6 K28 R6 0x94180206, // 000D GETIDX R6 R1 R6 0x40180A06, // 000E CONNECT R6 R5 R6 - 0x04180953, // 000F SUB R6 R4 K83 + 0x04180905, // 000F SUB R6 R4 K5 0x40180606, // 0010 CONNECT R6 R3 R6 0x94180206, // 0011 GETIDX R6 R1 R6 0x40180A06, // 0012 CONNECT R6 R5 R6 - 0x40180954, // 0013 CONNECT R6 R4 K84 + 0x40180951, // 0013 CONNECT R6 R4 K81 0x94180206, // 0014 GETIDX R6 R1 R6 0x40180A06, // 0015 CONNECT R6 R5 R6 0x80040A00, // 0016 RET 1 R5 @@ -952,10 +946,10 @@ be_local_closure(class_Tasmota_remove_cmd, /* name */ &be_const_str_remove_cmd, &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x88080126, // 0000 GETMBR R2 R0 K38 + 0x88080125, // 0000 GETMBR R2 R0 K37 0x780A0003, // 0001 JMPF R2 #0006 - 0x88080126, // 0002 GETMBR R2 R0 K38 - 0x8C080555, // 0003 GETMET R2 R2 K85 + 0x88080125, // 0002 GETMBR R2 R0 K37 + 0x8C080552, // 0003 GETMET R2 R2 K82 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x80000000, // 0006 RET 0 @@ -983,9 +977,9 @@ be_local_closure(class_Tasmota_gc, /* name */ &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0xA4063600, // 0000 IMPORT R1 K27 - 0x8C080356, // 0001 GETMET R2 R1 K86 + 0x8C080353, // 0001 GETMET R2 R1 K83 0x7C080200, // 0002 CALL R2 1 - 0x8C080357, // 0003 GETMET R2 R1 K87 + 0x8C080354, // 0003 GETMET R2 R1 K84 0x7C080200, // 0004 CALL R2 1 0x80040400, // 0005 RET 1 R2 }) @@ -1011,9 +1005,9 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ &be_const_str_find_list_i, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA40EB000, // 0000 IMPORT R3 K88 - 0x5810003E, // 0001 LDCONST R4 K62 - 0x8C140759, // 0002 GETMET R5 R3 K89 + 0xA40EAA00, // 0000 IMPORT R3 K85 + 0x5810001C, // 0001 LDCONST R4 K28 + 0x8C140756, // 0002 GETMET R5 R3 K86 0x5C1C0400, // 0003 MOVE R7 R2 0x7C140400, // 0004 CALL R5 2 0x6018000C, // 0005 GETGBL R6 G12 @@ -1021,13 +1015,13 @@ be_local_closure(class_Tasmota_find_list_i, /* name */ 0x7C180200, // 0007 CALL R6 1 0x14180806, // 0008 LT R6 R4 R6 0x781A0007, // 0009 JMPF R6 #0012 - 0x8C180759, // 000A GETMET R6 R3 K89 + 0x8C180756, // 000A GETMET R6 R3 K86 0x94200204, // 000B GETIDX R8 R1 R4 0x7C180400, // 000C CALL R6 2 0x1C180C05, // 000D EQ R6 R6 R5 0x781A0000, // 000E JMPF R6 #0010 0x80040800, // 000F RET 1 R4 - 0x00100922, // 0010 ADD R4 R4 K34 + 0x00100905, // 0010 ADD R4 R4 K5 0x7001FFF2, // 0011 JMP #0005 0x4C180000, // 0012 LDNIL R6 0x80040C00, // 0013 RET 1 R6 @@ -1054,18 +1048,18 @@ be_local_closure(class_Tasmota_remove_fast_loop, /* name */ &be_const_str_remove_fast_loop, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x8808015A, // 0000 GETMBR R2 R0 K90 + 0x88080157, // 0000 GETMBR R2 R0 K87 0x740A0000, // 0001 JMPT R2 #0003 0x80000400, // 0002 RET 0 - 0x8808015A, // 0003 GETMBR R2 R0 K90 + 0x88080157, // 0003 GETMBR R2 R0 K87 0x8C08050E, // 0004 GETMET R2 R2 K14 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 0x4C0C0000, // 0007 LDNIL R3 0x200C0403, // 0008 NE R3 R2 R3 0x780E0003, // 0009 JMPF R3 #000E - 0x880C015A, // 000A GETMBR R3 R0 K90 - 0x8C0C0755, // 000B GETMET R3 R3 K85 + 0x880C0157, // 000A GETMBR R3 R0 K87 + 0x8C0C0752, // 000B GETMET R3 R3 K82 0x5C140400, // 000C MOVE R5 R2 0x7C0C0400, // 000D CALL R3 2 0x80000000, // 000E RET 0 @@ -1093,47 +1087,47 @@ be_local_closure(class_Tasmota_exec_rules, /* name */ &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8810014C, // 0001 GETMBR R4 R0 K76 + 0x8810014A, // 0001 GETMBR R4 R0 K74 0x74120002, // 0002 JMPT R4 #0006 0x4C100000, // 0003 LDNIL R4 0x20100604, // 0004 NE R4 R3 R4 0x78120029, // 0005 JMPF R4 #0030 - 0xA4124E00, // 0006 IMPORT R4 K39 + 0xA4124C00, // 0006 IMPORT R4 K38 0x4C140000, // 0007 LDNIL R5 0x90020005, // 0008 SETMBR R0 K0 R5 0x50140000, // 0009 LDBOOL R5 0 0 - 0x8C180928, // 000A GETMET R6 R4 K40 + 0x8C180927, // 000A GETMET R6 R4 K39 0x5C200200, // 000B MOVE R8 R1 0x7C180400, // 000C CALL R6 2 0x4C1C0000, // 000D LDNIL R7 0x1C1C0C07, // 000E EQ R7 R6 R7 0x781E0004, // 000F JMPF R7 #0015 - 0x8C1C015B, // 0010 GETMET R7 R0 K91 - 0x0026B801, // 0011 ADD R9 K92 R1 - 0x5828005D, // 0012 LDCONST R10 K93 + 0x8C1C0158, // 0010 GETMET R7 R0 K88 + 0x0026B201, // 0011 ADD R9 K89 R1 + 0x5828005A, // 0012 LDCONST R10 K90 0x7C1C0600, // 0013 CALL R7 3 0x5C180200, // 0014 MOVE R6 R1 0x780A0014, // 0015 JMPF R2 #002B - 0x881C014C, // 0016 GETMBR R7 R0 K76 + 0x881C014A, // 0016 GETMBR R7 R0 K74 0x781E0012, // 0017 JMPF R7 #002B 0x581C001C, // 0018 LDCONST R7 K28 0x6020000C, // 0019 GETGBL R8 G12 - 0x8824014C, // 001A GETMBR R9 R0 K76 + 0x8824014A, // 001A GETMBR R9 R0 K74 0x7C200200, // 001B CALL R8 1 0x14200E08, // 001C LT R8 R7 R8 0x7822000C, // 001D JMPF R8 #002B - 0x8820014C, // 001E GETMBR R8 R0 K76 + 0x8820014A, // 001E GETMBR R8 R0 K74 0x94201007, // 001F GETIDX R8 R8 R7 - 0x8C24015E, // 0020 GETMET R9 R0 K94 + 0x8C24015B, // 0020 GETMET R9 R0 K91 0x5C2C0C00, // 0021 MOVE R11 R6 - 0x88301132, // 0022 GETMBR R12 R8 K50 - 0x88341135, // 0023 GETMBR R13 R8 K53 + 0x88301131, // 0022 GETMBR R12 R8 K49 + 0x88341134, // 0023 GETMBR R13 R8 K52 0x7C240800, // 0024 CALL R9 4 0x74260001, // 0025 JMPT R9 #0028 0x74160000, // 0026 JMPT R5 #0028 0x50140001, // 0027 LDBOOL R5 0 1 0x50140200, // 0028 LDBOOL R5 1 0 - 0x001C0F22, // 0029 ADD R7 R7 K34 + 0x001C0F05, // 0029 ADD R7 R7 K5 0x7001FFED, // 002A JMP #0019 0x4C1C0000, // 002B LDNIL R7 0x201C0607, // 002C NE R7 R3 R7 @@ -1165,29 +1159,29 @@ be_local_closure(class_Tasmota_run_deferred, /* name */ &be_const_str_run_deferred, &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x88040137, // 0000 GETMBR R1 R0 K55 + 0x88040136, // 0000 GETMBR R1 R0 K54 0x78060015, // 0001 JMPF R1 #0018 0x5804001C, // 0002 LDCONST R1 K28 - 0x88080137, // 0003 GETMBR R2 R0 K55 - 0x8C080531, // 0004 GETMET R2 R2 K49 + 0x88080136, // 0003 GETMBR R2 R0 K54 + 0x8C080530, // 0004 GETMET R2 R2 K48 0x7C080200, // 0005 CALL R2 1 0x14080202, // 0006 LT R2 R1 R2 0x780A000F, // 0007 JMPF R2 #0018 - 0x88080137, // 0008 GETMBR R2 R0 K55 + 0x88080136, // 0008 GETMBR R2 R0 K54 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C0C0134, // 000A GETMET R3 R0 K52 - 0x88140532, // 000B GETMBR R5 R2 K50 + 0x8C0C0133, // 000A GETMET R3 R0 K51 + 0x88140531, // 000B GETMBR R5 R2 K49 0x7C0C0400, // 000C CALL R3 2 0x780E0007, // 000D JMPF R3 #0016 - 0x880C0535, // 000E GETMBR R3 R2 K53 - 0x88100137, // 000F GETMBR R4 R0 K55 - 0x8C100955, // 0010 GETMET R4 R4 K85 + 0x880C0534, // 000E GETMBR R3 R2 K52 + 0x88100136, // 000F GETMBR R4 R0 K54 + 0x8C100952, // 0010 GETMET R4 R4 K82 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x5C100600, // 0013 MOVE R4 R3 0x7C100000, // 0014 CALL R4 0 0x70020000, // 0015 JMP #0017 - 0x00040322, // 0016 ADD R1 R1 K34 + 0x00040305, // 0016 ADD R1 R1 K5 0x7001FFEA, // 0017 JMP #0003 0x80000000, // 0018 RET 0 }) @@ -1213,15 +1207,15 @@ be_local_closure(class_Tasmota_compile, /* name */ &be_const_str_compile, &be_const_str_solidified, ( &(const binstruction[84]) { /* code */ - 0xA40AB000, // 0000 IMPORT R2 K88 - 0x8C0C055F, // 0001 GETMET R3 R2 K95 + 0xA40AAA00, // 0000 IMPORT R2 K85 + 0x8C0C055C, // 0001 GETMET R3 R2 K92 0x5C140200, // 0002 MOVE R5 R1 - 0x58180060, // 0003 LDCONST R6 K96 + 0x5818005D, // 0003 LDCONST R6 K93 0x7C0C0600, // 0004 CALL R3 3 0x740E0007, // 0005 JMPT R3 #000E 0x600C0001, // 0006 GETGBL R3 G1 0x60100018, // 0007 GETGBL R4 G24 - 0x58140061, // 0008 LDCONST R5 K97 + 0x5814005E, // 0008 LDCONST R5 K94 0x5C180200, // 0009 MOVE R6 R1 0x7C100400, // 000A CALL R4 2 0x7C0C0200, // 000B CALL R3 1 @@ -1229,13 +1223,13 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x80040600, // 000D RET 1 R3 0x8C0C050E, // 000E GETMET R3 R2 K14 0x5C140200, // 000F MOVE R5 R1 - 0x58180062, // 0010 LDCONST R6 K98 + 0x5818005F, // 0010 LDCONST R6 K95 0x7C0C0600, // 0011 CALL R3 3 0x240C071C, // 0012 GT R3 R3 K28 0x780E0006, // 0013 JMPF R3 #001B 0x600C0001, // 0014 GETGBL R3 G1 0x60100018, // 0015 GETGBL R4 G24 - 0x58140063, // 0016 LDCONST R5 K99 + 0x58140060, // 0016 LDCONST R5 K96 0x7C100200, // 0017 CALL R4 1 0x7C0C0200, // 0018 CALL R3 1 0x500C0000, // 0019 LDBOOL R3 0 0 @@ -1244,7 +1238,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0xA8020011, // 001C EXBLK 0 #002F 0x6010000D, // 001D GETGBL R4 G13 0x5C140200, // 001E MOVE R5 R1 - 0x58180064, // 001F LDCONST R6 K100 + 0x58180061, // 001F LDCONST R6 K97 0x7C100400, // 0020 CALL R4 2 0x5C0C0800, // 0021 MOVE R3 R4 0x4C100000, // 0022 LDNIL R4 @@ -1252,7 +1246,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x78120007, // 0024 JMPF R4 #002D 0x60100001, // 0025 GETGBL R4 G1 0x60140018, // 0026 GETGBL R5 G24 - 0x58180065, // 0027 LDCONST R6 K101 + 0x58180062, // 0027 LDCONST R6 K98 0x7C140200, // 0028 CALL R5 1 0x7C100200, // 0029 CALL R4 1 0x50100000, // 002A LDBOOL R4 0 0 @@ -1264,7 +1258,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x7002000A, // 0030 JMP #003C 0x60180001, // 0031 GETGBL R6 G1 0x601C0018, // 0032 GETGBL R7 G24 - 0x58200066, // 0033 LDCONST R8 K102 + 0x58200063, // 0033 LDCONST R8 K99 0x5C240200, // 0034 MOVE R9 R1 0x5C280800, // 0035 MOVE R10 R4 0x5C2C0A00, // 0036 MOVE R11 R5 @@ -1274,9 +1268,9 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x80040C00, // 003A RET 1 R6 0x70020000, // 003B JMP #003D 0xB0080000, // 003C RAISE 2 R0 R0 - 0x00100367, // 003D ADD R4 R1 K103 + 0x00100364, // 003D ADD R4 R1 K100 0xA8020005, // 003E EXBLK 0 #0045 - 0x8C140125, // 003F GETMET R5 R0 K37 + 0x8C140124, // 003F GETMET R5 R0 K36 0x5C1C0800, // 0040 MOVE R7 R4 0x5C200600, // 0041 MOVE R8 R3 0x7C140600, // 0042 CALL R5 3 @@ -1286,7 +1280,7 @@ be_local_closure(class_Tasmota_compile, /* name */ 0x70020009, // 0046 JMP #0051 0x60180001, // 0047 GETGBL R6 G1 0x601C0018, // 0048 GETGBL R7 G24 - 0x58200068, // 0049 LDCONST R8 K104 + 0x58200065, // 0049 LDCONST R8 K101 0x5C240800, // 004A MOVE R9 R4 0x5C280A00, // 004B MOVE R10 R5 0x7C1C0600, // 004C CALL R7 3 @@ -1320,22 +1314,22 @@ be_local_closure(class_Tasmota_remove_timer, /* name */ &be_const_str_remove_timer, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x88080137, // 0000 GETMBR R2 R0 K55 + 0x88080136, // 0000 GETMBR R2 R0 K54 0x780A000E, // 0001 JMPF R2 #0011 - 0x580C003E, // 0002 LDCONST R3 K62 - 0x8C100531, // 0003 GETMET R4 R2 K49 + 0x580C001C, // 0002 LDCONST R3 K28 + 0x8C100530, // 0003 GETMET R4 R2 K48 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120009, // 0006 JMPF R4 #0011 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x8810093F, // 0008 GETMBR R4 R4 K63 + 0x8810093D, // 0008 GETMBR R4 R4 K61 0x1C100801, // 0009 EQ R4 R4 R1 0x78120003, // 000A JMPF R4 #000F - 0x8C100555, // 000B GETMET R4 R2 K85 + 0x8C100552, // 000B GETMET R4 R2 K82 0x5C180600, // 000C MOVE R6 R3 0x7C100400, // 000D CALL R4 2 0x70020000, // 000E JMP #0010 - 0x000C0722, // 000F ADD R3 R3 K34 + 0x000C0705, // 000F ADD R3 R3 K5 0x7001FFF1, // 0010 JMP #0003 0x80000000, // 0011 RET 0 }) @@ -1361,27 +1355,27 @@ be_local_closure(class_Tasmota_remove_rule, /* name */ &be_const_str_remove_rule, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x880C014C, // 0000 GETMBR R3 R0 K76 + 0x880C014A, // 0000 GETMBR R3 R0 K74 0x780E0017, // 0001 JMPF R3 #001A - 0x580C003E, // 0002 LDCONST R3 K62 + 0x580C001C, // 0002 LDCONST R3 K28 0x6010000C, // 0003 GETGBL R4 G12 - 0x8814014C, // 0004 GETMBR R5 R0 K76 + 0x8814014A, // 0004 GETMBR R5 R0 K74 0x7C100200, // 0005 CALL R4 1 0x14100604, // 0006 LT R4 R3 R4 0x78120011, // 0007 JMPF R4 #001A - 0x8810014C, // 0008 GETMBR R4 R0 K76 + 0x8810014A, // 0008 GETMBR R4 R0 K74 0x94100803, // 0009 GETIDX R4 R4 R3 - 0x88100932, // 000A GETMBR R4 R4 K50 + 0x88100931, // 000A GETMBR R4 R4 K49 0x88100919, // 000B GETMBR R4 R4 K25 0x1C100801, // 000C EQ R4 R4 R1 0x78120009, // 000D JMPF R4 #0018 - 0x8810014C, // 000E GETMBR R4 R0 K76 + 0x8810014A, // 000E GETMBR R4 R0 K74 0x94100803, // 000F GETIDX R4 R4 R3 - 0x8810093F, // 0010 GETMBR R4 R4 K63 + 0x8810093D, // 0010 GETMBR R4 R4 K61 0x1C100802, // 0011 EQ R4 R4 R2 0x78120004, // 0012 JMPF R4 #0018 - 0x8810014C, // 0013 GETMBR R4 R0 K76 - 0x8C100955, // 0014 GETMET R4 R4 K85 + 0x8810014A, // 0013 GETMBR R4 R0 K74 + 0x8C100952, // 0014 GETMET R4 R4 K82 0x5C180600, // 0015 MOVE R6 R3 0x7C100400, // 0016 CALL R4 2 0x70020000, // 0017 JMP #0019 @@ -1411,43 +1405,43 @@ be_local_closure(class_Tasmota_exec_tele, /* name */ &be_const_str_exec_tele, &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x8808014C, // 0000 GETMBR R2 R0 K76 + 0x8808014A, // 0000 GETMBR R2 R0 K74 0x780A0024, // 0001 JMPF R2 #0027 - 0xA40A4E00, // 0002 IMPORT R2 K39 - 0x8C0C0528, // 0003 GETMET R3 R2 K40 + 0xA40A4C00, // 0002 IMPORT R2 K38 + 0x8C0C0527, // 0003 GETMET R3 R2 K39 0x5C140200, // 0004 MOVE R5 R1 0x7C0C0400, // 0005 CALL R3 2 0x50100000, // 0006 LDBOOL R4 0 0 0x4C140000, // 0007 LDNIL R5 0x1C140605, // 0008 EQ R5 R3 R5 0x78160004, // 0009 JMPF R5 #000F - 0x8C14015B, // 000A GETMET R5 R0 K91 - 0x001EB801, // 000B ADD R7 K92 R1 - 0x5820005D, // 000C LDCONST R8 K93 + 0x8C140158, // 000A GETMET R5 R0 K88 + 0x001EB201, // 000B ADD R7 K89 R1 + 0x5820005A, // 000C LDCONST R8 K90 0x7C140600, // 000D CALL R5 3 0x5C0C0200, // 000E MOVE R3 R1 0x60140013, // 000F GETGBL R5 G19 0x7C140000, // 0010 CALL R5 0 - 0x9816D203, // 0011 SETIDX R5 K105 R3 + 0x9816CC03, // 0011 SETIDX R5 K102 R3 0x5C0C0A00, // 0012 MOVE R3 R5 - 0x5814006A, // 0013 LDCONST R5 K106 + 0x5814001C, // 0013 LDCONST R5 K28 0x6018000C, // 0014 GETGBL R6 G12 - 0x881C014C, // 0015 GETMBR R7 R0 K76 + 0x881C014A, // 0015 GETMBR R7 R0 K74 0x7C180200, // 0016 CALL R6 1 0x14180A06, // 0017 LT R6 R5 R6 0x781A000C, // 0018 JMPF R6 #0026 - 0x8818014C, // 0019 GETMBR R6 R0 K76 + 0x8818014A, // 0019 GETMBR R6 R0 K74 0x94180C05, // 001A GETIDX R6 R6 R5 - 0x8C1C015E, // 001B GETMET R7 R0 K94 + 0x8C1C015B, // 001B GETMET R7 R0 K91 0x5C240600, // 001C MOVE R9 R3 - 0x88280D32, // 001D GETMBR R10 R6 K50 - 0x882C0D35, // 001E GETMBR R11 R6 K53 + 0x88280D31, // 001D GETMBR R10 R6 K49 + 0x882C0D34, // 001E GETMBR R11 R6 K52 0x7C1C0800, // 001F CALL R7 4 0x741E0001, // 0020 JMPT R7 #0023 0x74120000, // 0021 JMPT R4 #0023 0x50100001, // 0022 LDBOOL R4 0 1 0x50100200, // 0023 LDBOOL R4 1 0 - 0x00140B22, // 0024 ADD R5 R5 K34 + 0x00140B05, // 0024 ADD R5 R5 K5 0x7001FFED, // 0025 JMP #0014 0x80040800, // 0026 RET 1 R4 0x50080000, // 0027 LDBOOL R2 0 0 @@ -1475,25 +1469,25 @@ be_local_closure(class_Tasmota_add_cmd, /* name */ &be_const_str_add_cmd, &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0x8C0C0136, // 0000 GETMET R3 R0 K54 + 0x8C0C0135, // 0000 GETMET R3 R0 K53 0x5C140400, // 0001 MOVE R5 R2 0x7C0C0400, // 0002 CALL R3 2 - 0x880C0126, // 0003 GETMBR R3 R0 K38 + 0x880C0125, // 0003 GETMBR R3 R0 K37 0x4C100000, // 0004 LDNIL R4 0x1C0C0604, // 0005 EQ R3 R3 R4 0x780E0002, // 0006 JMPF R3 #000A 0x600C0013, // 0007 GETGBL R3 G19 0x7C0C0000, // 0008 CALL R3 0 - 0x90024C03, // 0009 SETMBR R0 K38 R3 + 0x90024A03, // 0009 SETMBR R0 K37 R3 0x600C0004, // 000A GETGBL R3 G4 0x5C100400, // 000B MOVE R4 R2 0x7C0C0200, // 000C CALL R3 1 0x1C0C0708, // 000D EQ R3 R3 K8 0x780E0002, // 000E JMPF R3 #0012 - 0x880C0126, // 000F GETMBR R3 R0 K38 + 0x880C0125, // 000F GETMBR R3 R0 K37 0x980C0202, // 0010 SETIDX R3 R1 R2 0x70020000, // 0011 JMP #0013 - 0xB006794F, // 0012 RAISE 1 K60 K79 + 0xB006774D, // 0012 RAISE 1 K59 K77 0x80000000, // 0013 RET 0 }) ) @@ -1521,33 +1515,33 @@ be_local_closure(class_Tasmota_wire_scan, /* name */ 0x4C0C0000, // 0000 LDNIL R3 0x200C0403, // 0001 NE R3 R2 R3 0x780E0005, // 0002 JMPF R3 #0009 - 0x8C0C016B, // 0003 GETMET R3 R0 K107 + 0x8C0C0167, // 0003 GETMET R3 R0 K103 0x5C140400, // 0004 MOVE R5 R2 0x7C0C0400, // 0005 CALL R3 2 0x740E0001, // 0006 JMPT R3 #0009 0x4C0C0000, // 0007 LDNIL R3 0x80040600, // 0008 RET 1 R3 - 0x880C016C, // 0009 GETMBR R3 R0 K108 - 0x8C0C076D, // 000A GETMET R3 R3 K109 + 0x880C0168, // 0009 GETMBR R3 R0 K104 + 0x8C0C0769, // 000A GETMET R3 R3 K105 0x7C0C0200, // 000B CALL R3 1 0x780E0006, // 000C JMPF R3 #0014 - 0x880C016C, // 000D GETMBR R3 R0 K108 - 0x8C0C076E, // 000E GETMET R3 R3 K110 + 0x880C0168, // 000D GETMBR R3 R0 K104 + 0x8C0C076A, // 000E GETMET R3 R3 K106 0x5C140200, // 000F MOVE R5 R1 0x7C0C0400, // 0010 CALL R3 2 0x780E0001, // 0011 JMPF R3 #0014 - 0x880C016C, // 0012 GETMBR R3 R0 K108 + 0x880C0168, // 0012 GETMBR R3 R0 K104 0x80040600, // 0013 RET 1 R3 - 0x880C016F, // 0014 GETMBR R3 R0 K111 - 0x8C0C076D, // 0015 GETMET R3 R3 K109 + 0x880C016B, // 0014 GETMBR R3 R0 K107 + 0x8C0C0769, // 0015 GETMET R3 R3 K105 0x7C0C0200, // 0016 CALL R3 1 0x780E0006, // 0017 JMPF R3 #001F - 0x880C016F, // 0018 GETMBR R3 R0 K111 - 0x8C0C076E, // 0019 GETMET R3 R3 K110 + 0x880C016B, // 0018 GETMBR R3 R0 K107 + 0x8C0C076A, // 0019 GETMET R3 R3 K106 0x5C140200, // 001A MOVE R5 R1 0x7C0C0400, // 001B CALL R3 2 0x780E0001, // 001C JMPF R3 #001F - 0x880C016F, // 001D GETMBR R3 R0 K111 + 0x880C016B, // 001D GETMBR R3 R0 K107 0x80040600, // 001E RET 1 R3 0x4C0C0000, // 001F LDNIL R3 0x80040600, // 0020 RET 1 R3 @@ -1574,8 +1568,8 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ &be_const_str_find_key_i, &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ - 0xA40EB000, // 0000 IMPORT R3 K88 - 0x8C100759, // 0001 GETMET R4 R3 K89 + 0xA40EAA00, // 0000 IMPORT R3 K85 + 0x8C100756, // 0001 GETMET R4 R3 K86 0x5C180400, // 0002 MOVE R6 R2 0x7C100400, // 0003 CALL R4 2 0x6014000F, // 0004 GETGBL R5 G15 @@ -1584,23 +1578,23 @@ be_local_closure(class_Tasmota_find_key_i, /* name */ 0x7C140400, // 0007 CALL R5 2 0x78160013, // 0008 JMPF R5 #001D 0x60140010, // 0009 GETGBL R5 G16 - 0x8C180370, // 000A GETMET R6 R1 K112 + 0x8C18036C, // 000A GETMET R6 R1 K108 0x7C180200, // 000B CALL R6 1 0x7C140200, // 000C CALL R5 1 0xA802000B, // 000D EXBLK 0 #001A 0x5C180A00, // 000E MOVE R6 R5 0x7C180000, // 000F CALL R6 0 - 0x8C1C0759, // 0010 GETMET R7 R3 K89 + 0x8C1C0756, // 0010 GETMET R7 R3 K86 0x5C240C00, // 0011 MOVE R9 R6 0x7C1C0400, // 0012 CALL R7 2 0x1C1C0E04, // 0013 EQ R7 R7 R4 0x741E0001, // 0014 JMPT R7 #0017 - 0x1C1C0571, // 0015 EQ R7 R2 K113 + 0x1C1C056D, // 0015 EQ R7 R2 K109 0x781E0001, // 0016 JMPF R7 #0019 0xA8040001, // 0017 EXBLK 1 1 0x80040C00, // 0018 RET 1 R6 0x7001FFF3, // 0019 JMP #000E - 0x58140072, // 001A LDCONST R5 K114 + 0x5814006E, // 001A LDCONST R5 K110 0xAC140200, // 001B CATCH R5 1 0 0xB0080000, // 001C RAISE 2 R0 R0 0x80000000, // 001D RET 0 @@ -1630,10 +1624,10 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0x4C0C0000, // 0000 LDNIL R3 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E000D, // 0002 JMPF R3 #0011 - 0xA40EB000, // 0003 IMPORT R3 K88 - 0x8C100773, // 0004 GETMET R4 R3 K115 + 0xA40EAA00, // 0003 IMPORT R3 K85 + 0x8C10076F, // 0004 GETMET R4 R3 K111 0x5C180200, // 0005 MOVE R6 R1 - 0x581C0074, // 0006 LDCONST R7 K116 + 0x581C0070, // 0006 LDCONST R7 K112 0x7C100600, // 0007 CALL R4 3 0x8C10090F, // 0008 GETMET R4 R4 K15 0x7C100200, // 0009 CALL R4 1 @@ -1641,18 +1635,18 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0x6010000C, // 000B GETGBL R4 G12 0x5C140400, // 000C MOVE R5 R2 0x7C100200, // 000D CALL R4 1 - 0x1C10093E, // 000E EQ R4 R4 K62 + 0x1C10091C, // 000E EQ R4 R4 K28 0x78120000, // 000F JMPF R4 #0011 - 0x58080075, // 0010 LDCONST R2 K117 - 0xB80EEC00, // 0011 GETNGBL R3 K118 + 0x58080071, // 0010 LDCONST R2 K113 + 0xB80EE400, // 0011 GETNGBL R3 K114 0x7C0C0000, // 0012 CALL R3 0 - 0x8C100777, // 0013 GETMET R4 R3 K119 + 0x8C100773, // 0013 GETMET R4 R3 K115 0x50180200, // 0014 LDBOOL R6 1 0 0x7C100400, // 0015 CALL R4 2 - 0x8C100778, // 0016 GETMET R4 R3 K120 + 0x8C100774, // 0016 GETMET R4 R3 K116 0x5C180200, // 0017 MOVE R6 R1 0x7C100400, // 0018 CALL R4 2 - 0x8C100779, // 0019 GETMET R4 R3 K121 + 0x8C100775, // 0019 GETMET R4 R3 K117 0x7C100200, // 001A CALL R4 1 0x541600C7, // 001B LDINT R5 200 0x20140805, // 001C NE R5 R4 R5 @@ -1660,19 +1654,19 @@ be_local_closure(class_Tasmota_urlfetch, /* name */ 0x60140008, // 001E GETGBL R5 G8 0x5C180800, // 001F MOVE R6 R4 0x7C140200, // 0020 CALL R5 1 - 0x0016F405, // 0021 ADD R5 K122 R5 - 0xB006F605, // 0022 RAISE 1 K123 R5 - 0x8C14077C, // 0023 GETMET R5 R3 K124 + 0x0016EC05, // 0021 ADD R5 K118 R5 + 0xB006EE05, // 0022 RAISE 1 K119 R5 + 0x8C140778, // 0023 GETMET R5 R3 K120 0x5C1C0400, // 0024 MOVE R7 R2 0x7C140400, // 0025 CALL R5 2 - 0x8C18077D, // 0026 GETMET R6 R3 K125 + 0x8C180779, // 0026 GETMET R6 R3 K121 0x7C180200, // 0027 CALL R6 1 - 0x8C18015B, // 0028 GETMET R6 R0 K91 + 0x8C180158, // 0028 GETMET R6 R0 K88 0x60200008, // 0029 GETGBL R8 G8 0x5C240A00, // 002A MOVE R9 R5 0x7C200200, // 002B CALL R8 1 - 0x0022FC08, // 002C ADD R8 K126 R8 - 0x5824005D, // 002D LDCONST R9 K93 + 0x0022F408, // 002C ADD R8 K122 R8 + 0x5824005A, // 002D LDCONST R9 K90 0x7C180600, // 002E CALL R6 3 0x80040800, // 002F RET 1 R4 }) @@ -1698,11 +1692,11 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ &be_const_str_fast_loop, &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x8804015A, // 0000 GETMBR R1 R0 K90 + 0x88040157, // 0000 GETMBR R1 R0 K87 0x5C080200, // 0001 MOVE R2 R1 0x740A0000, // 0002 JMPT R2 #0004 0x80000400, // 0003 RET 0 - 0x5808003E, // 0004 LDCONST R2 K62 + 0x5808001C, // 0004 LDCONST R2 K28 0x600C000C, // 0005 GETGBL R3 G12 0x5C100200, // 0006 MOVE R4 R1 0x7C0C0200, // 0007 CALL R3 1 @@ -1710,7 +1704,7 @@ be_local_closure(class_Tasmota_fast_loop, /* name */ 0x780E0003, // 0009 JMPF R3 #000E 0x940C0202, // 000A GETIDX R3 R1 R2 0x7C0C0000, // 000B CALL R3 0 - 0x00080522, // 000C ADD R2 R2 K34 + 0x00080505, // 000C ADD R2 R2 K5 0x7001FFF6, // 000D JMP #0005 0x80000000, // 000E RET 0 }) @@ -1736,8 +1730,8 @@ be_local_closure(class_Tasmota_gen_cb, /* name */ &be_const_str_gen_cb, &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0xA40AFE00, // 0000 IMPORT R2 K127 - 0x8C0C0580, // 0001 GETMET R3 R2 K128 + 0xA40AF600, // 0000 IMPORT R2 K123 + 0x8C0C057C, // 0001 GETMET R3 R2 K124 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x80040600, // 0004 RET 1 R3 @@ -1764,17 +1758,17 @@ be_local_closure(class_Tasmota_time_str, /* name */ &be_const_str_time_str, &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x8C080181, // 0000 GETMET R2 R0 K129 + 0x8C08017D, // 0000 GETMET R2 R0 K125 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x600C0018, // 0003 GETGBL R3 G24 - 0x58100082, // 0004 LDCONST R4 K130 - 0x94140583, // 0005 GETIDX R5 R2 K131 - 0x94180584, // 0006 GETIDX R6 R2 K132 - 0x941C0585, // 0007 GETIDX R7 R2 K133 - 0x94200586, // 0008 GETIDX R8 R2 K134 - 0x94240587, // 0009 GETIDX R9 R2 K135 - 0x94280588, // 000A GETIDX R10 R2 K136 + 0x5810007E, // 0004 LDCONST R4 K126 + 0x9414057F, // 0005 GETIDX R5 R2 K127 + 0x94180580, // 0006 GETIDX R6 R2 K128 + 0x941C0581, // 0007 GETIDX R7 R2 K129 + 0x94200582, // 0008 GETIDX R8 R2 K130 + 0x94240583, // 0009 GETIDX R9 R2 K131 + 0x94280584, // 000A GETIDX R10 R2 K132 0x7C0C0E00, // 000B CALL R3 7 0x80040600, // 000C RET 1 R3 }) @@ -1800,26 +1794,26 @@ be_local_closure(class_Tasmota_add_fast_loop, /* name */ &be_const_str_add_fast_loop, &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x8C080136, // 0000 GETMET R2 R0 K54 + 0x8C080135, // 0000 GETMET R2 R0 K53 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 - 0x8808015A, // 0003 GETMBR R2 R0 K90 + 0x88080157, // 0003 GETMBR R2 R0 K87 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0002, // 0006 JMPF R2 #000A 0x60080012, // 0007 GETGBL R2 G18 0x7C080000, // 0008 CALL R2 0 - 0x9002B402, // 0009 SETMBR R0 K90 R2 + 0x9002AE02, // 0009 SETMBR R0 K87 R2 0x60080004, // 000A GETGBL R2 G4 0x5C0C0200, // 000B MOVE R3 R1 0x7C080200, // 000C CALL R2 1 0x20080508, // 000D NE R2 R2 K8 0x780A0000, // 000E JMPF R2 #0010 - 0xB0067989, // 000F RAISE 1 K60 K137 + 0xB0067785, // 000F RAISE 1 K59 K133 0x88080102, // 0010 GETMBR R2 R0 K2 - 0x900B1522, // 0011 SETMBR R2 K138 K34 - 0x8808015A, // 0012 GETMBR R2 R0 K90 - 0x8C080538, // 0013 GETMET R2 R2 K56 + 0x900B0D05, // 0011 SETMBR R2 K134 K5 + 0x88080157, // 0012 GETMBR R2 R0 K87 + 0x8C080537, // 0013 GETMET R2 R2 K55 0x5C100200, // 0014 MOVE R4 R1 0x7C080400, // 0015 CALL R2 2 0x80000000, // 0016 RET 0 @@ -1847,9 +1841,9 @@ be_local_closure(class_Tasmota_get_light, /* name */ &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x60080001, // 0000 GETGBL R2 G1 - 0x580C008B, // 0001 LDCONST R3 K139 + 0x580C0087, // 0001 LDCONST R3 K135 0x7C080200, // 0002 CALL R2 1 - 0xA40A5800, // 0003 IMPORT R2 K44 + 0xA40A5600, // 0003 IMPORT R2 K43 0x4C0C0000, // 0004 LDNIL R3 0x200C0203, // 0005 NE R3 R1 R3 0x780E0004, // 0006 JMPF R3 #000C @@ -1885,26 +1879,26 @@ be_local_closure(class_Tasmota_add_cron, /* name */ &be_const_str_add_cron, &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ - 0x8C100136, // 0000 GETMET R4 R0 K54 + 0x8C100135, // 0000 GETMET R4 R0 K53 0x5C180400, // 0001 MOVE R6 R2 0x7C100400, // 0002 CALL R4 2 - 0x8810012E, // 0003 GETMBR R4 R0 K46 + 0x8810012D, // 0003 GETMBR R4 R0 K45 0x4C140000, // 0004 LDNIL R5 0x1C100805, // 0005 EQ R4 R4 R5 0x78120002, // 0006 JMPF R4 #000A 0x60100012, // 0007 GETGBL R4 G18 0x7C100000, // 0008 CALL R4 0 - 0x90025C04, // 0009 SETMBR R0 K46 R4 - 0xB8125E00, // 000A GETNGBL R4 K47 + 0x90025A04, // 0009 SETMBR R0 K45 R4 + 0xB8125C00, // 000A GETNGBL R4 K46 0x60140008, // 000B GETGBL R5 G8 0x5C180200, // 000C MOVE R6 R1 0x7C140200, // 000D CALL R5 1 0x7C100200, // 000E CALL R4 1 - 0x8C140933, // 000F GETMET R5 R4 K51 + 0x8C140932, // 000F GETMET R5 R4 K50 0x7C140200, // 0010 CALL R5 1 - 0x8818012E, // 0011 GETMBR R6 R0 K46 - 0x8C180D38, // 0012 GETMET R6 R6 K56 - 0xB8227200, // 0013 GETNGBL R8 K57 + 0x8818012D, // 0011 GETMBR R6 R0 K45 + 0x8C180D37, // 0012 GETMET R6 R6 K55 + 0xB8227000, // 0013 GETNGBL R8 K56 0x5C240A00, // 0014 MOVE R9 R5 0x5C280400, // 0015 MOVE R10 R2 0x5C2C0600, // 0016 MOVE R11 R3 @@ -1953,7 +1947,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x542200FE, // 000F LDINT R8 255 0x04201002, // 0010 SUB R8 R8 R2 0xB8260200, // 0011 GETNGBL R9 K1 - 0x8C24138C, // 0012 GETMET R9 R9 K140 + 0x8C241388, // 0012 GETMET R9 R9 K136 0x5C2C0E00, // 0013 MOVE R11 R7 0x5830001C, // 0014 LDCONST R12 K28 0x5436003B, // 0015 LDINT R13 60 @@ -1961,7 +1955,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x5C3C1000, // 0017 MOVE R15 R8 0x7C240C00, // 0018 CALL R9 6 0xB82A0200, // 0019 GETNGBL R10 K1 - 0x8C28158C, // 001A GETMET R10 R10 K140 + 0x8C281588, // 001A GETMET R10 R10 K136 0x5C300E00, // 001B MOVE R12 R7 0x5834001C, // 001C LDCONST R13 K28 0x543A003B, // 001D LDINT R14 60 @@ -1973,17 +1967,17 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */ 0x5C141400, // 0023 MOVE R5 R10 0x5C101000, // 0024 MOVE R4 R8 0x70020016, // 0025 JMP #003D - 0x1C2C0D53, // 0026 EQ R11 R6 K83 + 0x1C2C0D05, // 0026 EQ R11 R6 K5 0x782E0002, // 0027 JMPF R11 #002B 0x5C0C1200, // 0028 MOVE R3 R9 0x5C101000, // 0029 MOVE R4 R8 0x70020011, // 002A JMP #003D - 0x1C2C0D8D, // 002B EQ R11 R6 K141 + 0x1C2C0D04, // 002B EQ R11 R6 K4 0x782E0002, // 002C JMPF R11 #0030 0x5C0C1000, // 002D MOVE R3 R8 0x5C101400, // 002E MOVE R4 R10 0x7002000C, // 002F JMP #003D - 0x1C2C0D5D, // 0030 EQ R11 R6 K93 + 0x1C2C0D5A, // 0030 EQ R11 R6 K90 0x782E0002, // 0031 JMPF R11 #0035 0x5C0C1000, // 0032 MOVE R3 R8 0x5C141200, // 0033 MOVE R5 R9 @@ -2026,22 +2020,22 @@ be_local_closure(class_Tasmota_remove_cron, /* name */ &be_const_str_remove_cron, &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x8808012E, // 0000 GETMBR R2 R0 K46 + 0x8808012D, // 0000 GETMBR R2 R0 K45 0x780A000E, // 0001 JMPF R2 #0011 - 0x580C003E, // 0002 LDCONST R3 K62 - 0x8C100531, // 0003 GETMET R4 R2 K49 + 0x580C001C, // 0002 LDCONST R3 K28 + 0x8C100530, // 0003 GETMET R4 R2 K48 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120009, // 0006 JMPF R4 #0011 0x94100403, // 0007 GETIDX R4 R2 R3 - 0x8810093F, // 0008 GETMBR R4 R4 K63 + 0x8810093D, // 0008 GETMBR R4 R4 K61 0x1C100801, // 0009 EQ R4 R4 R1 0x78120003, // 000A JMPF R4 #000F - 0x8C100555, // 000B GETMET R4 R2 K85 + 0x8C100552, // 000B GETMET R4 R2 K82 0x5C180600, // 000C MOVE R6 R3 0x7C100400, // 000D CALL R4 2 0x70020000, // 000E JMP #0010 - 0x000C0722, // 000F ADD R3 R3 K34 + 0x000C0705, // 000F ADD R3 R3 K5 0x7001FFF1, // 0010 JMP #0003 0x80000000, // 0011 RET 0 }) @@ -2333,72 +2327,72 @@ be_local_closure(class_Tasmota_load, /* name */ 0x84140003, // 0003 CLOSURE R5 P3 0x84180004, // 0004 CLOSURE R6 P4 0x841C0005, // 0005 CLOSURE R7 P5 - 0xA422B000, // 0006 IMPORT R8 K88 - 0xA4271C00, // 0007 IMPORT R9 K142 + 0xA422AA00, // 0006 IMPORT R8 K85 + 0xA4271200, // 0007 IMPORT R9 K137 0x6028000C, // 0008 GETGBL R10 G12 0x5C2C0200, // 0009 MOVE R11 R1 0x7C280200, // 000A CALL R10 1 - 0x1C28156A, // 000B EQ R10 R10 K106 + 0x1C28151C, // 000B EQ R10 R10 K28 0x782A0002, // 000C JMPF R10 #0010 0x50280000, // 000D LDBOOL R10 0 0 0xA0000000, // 000E CLOSE R0 0x80041400, // 000F RET 1 R10 - 0x8C28118F, // 0010 GETMET R10 R8 K143 + 0x8C28118A, // 0010 GETMET R10 R8 K138 0x5C300200, // 0011 MOVE R12 R1 - 0x58340074, // 0012 LDCONST R13 K116 + 0x58340070, // 0012 LDCONST R13 K112 0x7C280600, // 0013 CALL R10 3 0x742A0000, // 0014 JMPT R10 #0016 - 0x0006E801, // 0015 ADD R1 K116 R1 + 0x0006E001, // 0015 ADD R1 K112 R1 0x8C28110E, // 0016 GETMET R10 R8 K14 0x5C300200, // 0017 MOVE R12 R1 - 0x58340062, // 0018 LDCONST R13 K98 + 0x5834005F, // 0018 LDCONST R13 K95 0x7C280600, // 0019 CALL R10 3 - 0x242C156A, // 001A GT R11 R10 K106 + 0x242C151C, // 001A GT R11 R10 K28 0x782E0003, // 001B JMPF R11 #0020 - 0x04301522, // 001C SUB R12 R10 K34 - 0x4032D40C, // 001D CONNECT R12 K106 R12 + 0x04301505, // 001C SUB R12 R10 K5 + 0x4032380C, // 001D CONNECT R12 K28 R12 0x9430020C, // 001E GETIDX R12 R1 R12 0x70020000, // 001F JMP #0021 0x5C300200, // 0020 MOVE R12 R1 0x782E0003, // 0021 JMPF R11 #0026 - 0x00341522, // 0022 ADD R13 R10 K34 - 0x40341B90, // 0023 CONNECT R13 R13 K144 + 0x00341505, // 0022 ADD R13 R10 K5 + 0x40341B51, // 0023 CONNECT R13 R13 K81 0x9434020D, // 0024 GETIDX R13 R1 R13 0x70020000, // 0025 JMP #0027 0x5C340200, // 0026 MOVE R13 R1 0x8C38110E, // 0027 GETMET R14 R8 K14 0x5C401A00, // 0028 MOVE R16 R13 - 0x58440091, // 0029 LDCONST R17 K145 + 0x5844008B, // 0029 LDCONST R17 K139 0x7C380600, // 002A CALL R14 3 - 0x14381D6A, // 002B LT R14 R14 K106 + 0x14381D1C, // 002B LT R14 R14 K28 0x783A0001, // 002C JMPF R14 #002F - 0x00040360, // 002D ADD R1 R1 K96 - 0x00341B60, // 002E ADD R13 R13 K96 - 0x8C38115F, // 002F GETMET R14 R8 K95 + 0x0004035D, // 002D ADD R1 R1 K93 + 0x00341B5D, // 002E ADD R13 R13 K93 + 0x8C38115C, // 002F GETMET R14 R8 K92 0x5C401A00, // 0030 MOVE R16 R13 - 0x58440060, // 0031 LDCONST R17 K96 + 0x5844005D, // 0031 LDCONST R17 K93 0x7C380600, // 0032 CALL R14 3 - 0x8C3C115F, // 0033 GETMET R15 R8 K95 + 0x8C3C115C, // 0033 GETMET R15 R8 K92 0x5C441A00, // 0034 MOVE R17 R13 - 0x58480092, // 0035 LDCONST R18 K146 + 0x5848008C, // 0035 LDCONST R18 K140 0x7C3C0600, // 0036 CALL R15 3 0x783E0001, // 0037 JMPF R15 #003A 0x5C400200, // 0038 MOVE R16 R1 0x70020000, // 0039 JMP #003B - 0x00400367, // 003A ADD R16 R1 K103 + 0x00400364, // 003A ADD R16 R1 K100 0x5C441C00, // 003B MOVE R17 R14 0x74460007, // 003C JMPT R17 #0045 0x5C441E00, // 003D MOVE R17 R15 0x74460005, // 003E JMPT R17 #0045 0x60440001, // 003F GETGBL R17 G1 - 0x58480093, // 0040 LDCONST R18 K147 + 0x5848008D, // 0040 LDCONST R18 K141 0x7C440200, // 0041 CALL R17 1 0x50440000, // 0042 LDBOOL R17 0 0 0xA0000000, // 0043 CLOSE R0 0x80042200, // 0044 RET 1 R17 0x50440000, // 0045 LDBOOL R17 0 0 0x783E0008, // 0046 JMPF R15 #0050 - 0x8C481394, // 0047 GETMET R18 R9 K148 + 0x8C48138E, // 0047 GETMET R18 R9 K142 0x5C502000, // 0048 MOVE R20 R16 0x7C480400, // 0049 CALL R18 2 0x744A0002, // 004A JMPT R18 #004E @@ -2407,11 +2401,11 @@ be_local_closure(class_Tasmota_load, /* name */ 0x80042400, // 004D RET 1 R18 0x50440200, // 004E LDBOOL R17 1 0 0x70020014, // 004F JMP #0065 - 0x8C481394, // 0050 GETMET R18 R9 K148 + 0x8C48138E, // 0050 GETMET R18 R9 K142 0x5C500200, // 0051 MOVE R20 R1 0x7C480400, // 0052 CALL R18 2 0x784A0007, // 0053 JMPF R18 #005C - 0x8C481394, // 0054 GETMET R18 R9 K148 + 0x8C48138E, // 0054 GETMET R18 R9 K142 0x5C502000, // 0055 MOVE R20 R16 0x7C480400, // 0056 CALL R18 2 0x784A0002, // 0057 JMPF R18 #005B @@ -2419,7 +2413,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x5C4C2000, // 0059 MOVE R19 R16 0x7C480200, // 005A CALL R18 1 0x70020008, // 005B JMP #0065 - 0x8C481394, // 005C GETMET R18 R9 K148 + 0x8C48138E, // 005C GETMET R18 R9 K142 0x5C502000, // 005D MOVE R20 R16 0x7C480400, // 005E CALL R18 2 0x784A0001, // 005F JMPF R18 #0062 @@ -2429,13 +2423,13 @@ be_local_closure(class_Tasmota_load, /* name */ 0xA0000000, // 0063 CLOSE R0 0x80042400, // 0064 RET 1 R18 0x782E0005, // 0065 JMPF R11 #006C - 0x00481962, // 0066 ADD R18 R12 K98 - 0x90028E12, // 0067 SETMBR R0 K71 R18 + 0x0048195F, // 0066 ADD R18 R12 K95 + 0x90028A12, // 0067 SETMBR R0 K69 R18 0x5C480400, // 0068 MOVE R18 R2 - 0x884C0147, // 0069 GETMBR R19 R0 K71 + 0x884C0145, // 0069 GETMBR R19 R0 K69 0x7C480200, // 006A CALL R18 1 0x70020000, // 006B JMP #006D - 0x90028F48, // 006C SETMBR R0 K71 K72 + 0x90028B46, // 006C SETMBR R0 K69 K70 0x4C480000, // 006D LDNIL R18 0x78460025, // 006E JMPF R17 #0095 0x5C4C0800, // 006F MOVE R19 R4 @@ -2447,7 +2441,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x78560007, // 0075 JMPF R21 #007E 0x60540001, // 0076 GETGBL R21 G1 0x60580018, // 0077 GETGBL R22 G24 - 0x585C0095, // 0078 LDCONST R23 K149 + 0x585C008F, // 0078 LDCONST R23 K143 0x5C602000, // 0079 MOVE R24 R16 0x7C580400, // 007A CALL R22 2 0x7C540200, // 007B CALL R21 1 @@ -2458,7 +2452,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x78560007, // 0080 JMPF R21 #0089 0x60540001, // 0081 GETGBL R21 G1 0x60580018, // 0082 GETGBL R22 G24 - 0x585C0096, // 0083 LDCONST R23 K150 + 0x585C0090, // 0083 LDCONST R23 K144 0x5C602000, // 0084 MOVE R24 R16 0x5C642600, // 0085 MOVE R25 R19 0x7C580600, // 0086 CALL R22 3 @@ -2487,7 +2481,7 @@ be_local_closure(class_Tasmota_load, /* name */ 0x7C4C0200, // 009D CALL R19 1 0x782E0002, // 009E JMPF R11 #00A2 0x5C500600, // 009F MOVE R20 R3 - 0x00541962, // 00A0 ADD R21 R12 K98 + 0x0054195F, // 00A0 ADD R21 R12 K95 0x7C500200, // 00A1 CALL R20 1 0xA0000000, // 00A2 CLOSE R0 0x80042600, // 00A3 RET 1 R19 @@ -2514,24 +2508,24 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ &be_const_str_urlfetch_cmd, &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA416B000, // 0000 IMPORT R5 K88 + 0xA416AA00, // 0000 IMPORT R5 K85 0x8C180B0E, // 0001 GETMET R6 R5 K14 0x5C200600, // 0002 MOVE R8 R3 - 0x58240097, // 0003 LDCONST R9 K151 + 0x58240091, // 0003 LDCONST R9 K145 0x7C180600, // 0004 CALL R6 3 0x20180D1C, // 0005 NE R6 R6 K28 0x781A0003, // 0006 JMPF R6 #000B - 0x8C180198, // 0007 GETMET R6 R0 K152 - 0x58200099, // 0008 LDCONST R8 K153 + 0x8C180192, // 0007 GETMET R6 R0 K146 + 0x58200093, // 0008 LDCONST R8 K147 0x7C180400, // 0009 CALL R6 2 0x80000C00, // 000A RET 0 0xA802000A, // 000B EXBLK 0 #0017 - 0x8C18019A, // 000C GETMET R6 R0 K154 + 0x8C180194, // 000C GETMET R6 R0 K148 0x5C200600, // 000D MOVE R8 R3 0x7C180400, // 000E CALL R6 2 0x141C0D1C, // 000F LT R7 R6 K28 0x781E0003, // 0010 JMPF R7 #0015 - 0x8C1C019B, // 0011 GETMET R7 R0 K155 + 0x8C1C0195, // 0011 GETMET R7 R0 K149 0x7C1C0200, // 0012 CALL R7 1 0xA8040001, // 0013 EXBLK 1 1 0x80000E00, // 0014 RET 0 @@ -2539,13 +2533,13 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */ 0x70020006, // 0016 JMP #001E 0xAC180002, // 0017 CATCH R6 0 2 0x70020003, // 0018 JMP #001D - 0x8C20019B, // 0019 GETMET R8 R0 K155 + 0x8C200195, // 0019 GETMET R8 R0 K149 0x7C200200, // 001A CALL R8 1 0x80001000, // 001B RET 0 0x70020000, // 001C JMP #001E 0xB0080000, // 001D RAISE 2 R0 R0 0xB81A0200, // 001E GETNGBL R6 K1 - 0x8C180D9C, // 001F GETMET R6 R6 K156 + 0x8C180D96, // 001F GETMET R6 R6 K150 0x7C180200, // 0020 CALL R6 1 0x80000000, // 0021 RET 0 }) diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h index 56c7b21ba..d2bf5ca7c 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h +++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'LVGL_glob' ktab size: 74, total: 131 (saved 456 bytes) -static const bvalue be_ktab_class_LVGL_glob[74] = { +// compact class 'LVGL_glob' ktab size: 72, total: 131 (saved 472 bytes) +static const bvalue be_ktab_class_LVGL_glob[72] = { /* K0 */ be_nested_str_weak(event_cb), /* K1 */ be_nested_str_weak(cb), /* K2 */ be_nested_str_weak(gen_cb), @@ -31,54 +31,52 @@ static const bvalue be_ktab_class_LVGL_glob[74] = { /* K23 */ be_nested_str_weak(cb_do_nothing), /* K24 */ be_nested_str_weak(introspect), /* K25 */ be_nested_str_weak(toptr), - /* K26 */ be_const_int(0), - /* K27 */ be_const_int(1), - /* K28 */ be_nested_str_weak(event), - /* K29 */ be_nested_str_weak(lv_event), - /* K30 */ be_nested_str_weak(get_target), - /* K31 */ be_nested_str_weak(get_object_from_ptr), - /* K32 */ be_nested_str_weak(cb_obj), - /* K33 */ be_nested_str_weak(remove), - /* K34 */ be_nested_str_weak(lv_obj_class), - /* K35 */ be_nested_str_weak(get_target_obj), - /* K36 */ be_nested_str_weak(instance), - /* K37 */ be_nested_str_weak(get_code), - /* K38 */ be_nested_str_weak(get), - /* K39 */ be_nested_str_weak(before_del), - /* K40 */ be_nested_str_weak(widget_event), - /* K41 */ be_nested_str_weak(widget_destructor), - /* K42 */ be_nested_str_weak(find), - /* K43 */ be_nested_str_weak(widget_constructor), - /* K44 */ be_nested_str_weak(LVG_X3A_X20call_X20to_X20unsupported_X20callback), - /* K45 */ be_nested_str_weak(add_handler), - /* K46 */ be_nested_str_weak(lv_extra), - /* K47 */ be_nested_str_weak(lv_obj), - /* K48 */ be_nested_str_weak(value_error), - /* K49 */ be_nested_str_weak(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj), - /* K50 */ be_nested_str_weak(widget_struct_by_class), - /* K51 */ be_nested_str_weak(widget_cb), - /* K52 */ be_nested_str_weak(widget_struct_default), - /* K53 */ be_nested_str_weak(copy), - /* K54 */ be_nested_str_weak(base_class), - /* K55 */ be_nested_str_weak(_class), - /* K56 */ be_nested_str_weak(widget_width_def), - /* K57 */ be_nested_str_weak(width_def), - /* K58 */ be_nested_str_weak(widget_height_def), - /* K59 */ be_nested_str_weak(height_def), - /* K60 */ be_nested_str_weak(widget_editable), - /* K61 */ be_nested_str_weak(editable), - /* K62 */ be_nested_str_weak(widget_group_def), - /* K63 */ be_nested_str_weak(group_def), - /* K64 */ be_nested_str_weak(widget_instance_size), - /* K65 */ be_nested_str_weak(instance_size), - /* K66 */ be_nested_str_weak(obj_class_create_obj), - /* K67 */ be_nested_str_weak(class_init_obj), - /* K68 */ be_nested_str_weak(widget_ctor_cb), - /* K69 */ be_nested_str_weak(widget_dtor_cb), - /* K70 */ be_nested_str_weak(widget_event_cb), - /* K71 */ be_nested_str_weak(constructor_cb), - /* K72 */ be_nested_str_weak(destructor_cb), - /* K73 */ be_nested_str_weak(deregister_obj), + /* K26 */ be_nested_str_weak(event), + /* K27 */ be_nested_str_weak(lv_event), + /* K28 */ be_nested_str_weak(get_target), + /* K29 */ be_nested_str_weak(get_object_from_ptr), + /* K30 */ be_nested_str_weak(cb_obj), + /* K31 */ be_nested_str_weak(remove), + /* K32 */ be_nested_str_weak(lv_obj_class), + /* K33 */ be_nested_str_weak(get_target_obj), + /* K34 */ be_nested_str_weak(instance), + /* K35 */ be_nested_str_weak(get_code), + /* K36 */ be_nested_str_weak(get), + /* K37 */ be_nested_str_weak(before_del), + /* K38 */ be_nested_str_weak(widget_event), + /* K39 */ be_nested_str_weak(widget_destructor), + /* K40 */ be_nested_str_weak(find), + /* K41 */ be_nested_str_weak(widget_constructor), + /* K42 */ be_nested_str_weak(LVG_X3A_X20call_X20to_X20unsupported_X20callback), + /* K43 */ be_nested_str_weak(add_handler), + /* K44 */ be_nested_str_weak(lv_extra), + /* K45 */ be_nested_str_weak(lv_obj), + /* K46 */ be_nested_str_weak(value_error), + /* K47 */ be_nested_str_weak(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj), + /* K48 */ be_nested_str_weak(widget_struct_by_class), + /* K49 */ be_nested_str_weak(widget_cb), + /* K50 */ be_nested_str_weak(widget_struct_default), + /* K51 */ be_nested_str_weak(copy), + /* K52 */ be_nested_str_weak(base_class), + /* K53 */ be_nested_str_weak(_class), + /* K54 */ be_nested_str_weak(widget_width_def), + /* K55 */ be_nested_str_weak(width_def), + /* K56 */ be_nested_str_weak(widget_height_def), + /* K57 */ be_nested_str_weak(height_def), + /* K58 */ be_nested_str_weak(widget_editable), + /* K59 */ be_nested_str_weak(editable), + /* K60 */ be_nested_str_weak(widget_group_def), + /* K61 */ be_nested_str_weak(group_def), + /* K62 */ be_nested_str_weak(widget_instance_size), + /* K63 */ be_nested_str_weak(instance_size), + /* K64 */ be_nested_str_weak(obj_class_create_obj), + /* K65 */ be_nested_str_weak(class_init_obj), + /* K66 */ be_nested_str_weak(widget_ctor_cb), + /* K67 */ be_nested_str_weak(widget_dtor_cb), + /* K68 */ be_nested_str_weak(widget_event_cb), + /* K69 */ be_nested_str_weak(constructor_cb), + /* K70 */ be_nested_str_weak(destructor_cb), + /* K71 */ be_nested_str_weak(deregister_obj), }; @@ -406,7 +404,7 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ 0x5C180600, // 000C MOVE R6 R3 0x7C140200, // 000D CALL R5 1 0x7002000A, // 000E JMP #001A - 0x5814001A, // 000F LDCONST R5 K26 + 0x58140009, // 000F LDCONST R5 K9 0x6018000C, // 0010 GETGBL R6 G12 0x5C1C0800, // 0011 MOVE R7 R4 0x7C180200, // 0012 CALL R6 1 @@ -415,7 +413,7 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */ 0x94180805, // 0015 GETIDX R6 R4 R5 0x5C1C0600, // 0016 MOVE R7 R3 0x7C180200, // 0017 CALL R6 1 - 0x00140B1B, // 0018 ADD R5 R5 K27 + 0x00140B08, // 0018 ADD R5 R5 K8 0x7001FFF5, // 0019 JMP #0010 0x80000000, // 001A RET 0 }) @@ -445,20 +443,20 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ 0x8C100719, // 0001 GETMET R4 R3 K25 0x5C180400, // 0002 MOVE R6 R2 0x7C100400, // 0003 CALL R4 2 - 0x8814011C, // 0004 GETMBR R5 R0 K28 + 0x8814011A, // 0004 GETMBR R5 R0 K26 0x78160002, // 0005 JMPF R5 #0009 - 0x8814011C, // 0006 GETMBR R5 R0 K28 + 0x8814011A, // 0006 GETMBR R5 R0 K26 0x90162004, // 0007 SETMBR R5 K16 R4 0x70020004, // 0008 JMP #000E 0xB8161A00, // 0009 GETNGBL R5 K13 - 0x8C140B1D, // 000A GETMET R5 R5 K29 + 0x8C140B1B, // 000A GETMET R5 R5 K27 0x5C1C0800, // 000B MOVE R7 R4 0x7C140400, // 000C CALL R5 2 - 0x90023805, // 000D SETMBR R0 K28 R5 - 0x8814011C, // 000E GETMBR R5 R0 K28 - 0x8C140B1E, // 000F GETMET R5 R5 K30 + 0x90023405, // 000D SETMBR R0 K26 R5 + 0x8814011A, // 000E GETMBR R5 R0 K26 + 0x8C140B1C, // 000F GETMET R5 R5 K28 0x7C140200, // 0010 CALL R5 1 - 0x8C18011F, // 0011 GETMET R6 R0 K31 + 0x8C18011D, // 0011 GETMET R6 R0 K29 0x5C200A00, // 0012 MOVE R8 R5 0x7C180400, // 0013 CALL R6 2 0x881C0105, // 0014 GETMBR R7 R0 K5 @@ -470,7 +468,7 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ 0x78220004, // 001A JMPF R8 #0020 0x5C200E00, // 001B MOVE R8 R7 0x5C240C00, // 001C MOVE R9 R6 - 0x8828011C, // 001D GETMBR R10 R0 K28 + 0x8828011A, // 001D GETMBR R10 R0 K26 0x7C200400, // 001E CALL R8 2 0x70020008, // 001F JMP #0029 0x6020000C, // 0020 GETGBL R8 G12 @@ -480,7 +478,7 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */ 0x78220003, // 0024 JMPF R8 #0029 0x94200E01, // 0025 GETIDX R8 R7 R1 0x5C240C00, // 0026 MOVE R9 R6 - 0x8828011C, // 0027 GETMBR R10 R0 K28 + 0x8828011A, // 0027 GETMBR R10 R0 K26 0x7C200400, // 0028 CALL R8 2 0x80000000, // 0029 RET 0 }) @@ -506,12 +504,12 @@ be_local_closure(class_LVGL_glob_deregister_obj, /* name */ be_str_weak(deregister_obj), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88080120, // 0000 GETMBR R2 R0 K32 + 0x8808011E, // 0000 GETMBR R2 R0 K30 0x4C0C0000, // 0001 LDNIL R3 0x20080403, // 0002 NE R2 R2 R3 0x780A0003, // 0003 JMPF R2 #0008 - 0x88080120, // 0004 GETMBR R2 R0 K32 - 0x8C080521, // 0005 GETMET R2 R2 K33 + 0x8808011E, // 0004 GETMBR R2 R0 K30 + 0x8C08051F, // 0005 GETMET R2 R2 K31 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x88080105, // 0008 GETMBR R2 R0 K5 @@ -519,7 +517,7 @@ be_local_closure(class_LVGL_glob_deregister_obj, /* name */ 0x20080403, // 000A NE R2 R2 R3 0x780A0003, // 000B JMPF R2 #0010 0x88080105, // 000C GETMBR R2 R0 K5 - 0x8C080521, // 000D GETMET R2 R2 K33 + 0x8C08051F, // 000D GETMET R2 R2 K31 0x5C100200, // 000E MOVE R4 R1 0x7C080400, // 000F CALL R2 2 0x80000000, // 0010 RET 0 @@ -546,14 +544,14 @@ be_local_closure(class_LVGL_glob_register_obj, /* name */ be_str_weak(register_obj), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ - 0x88080120, // 0000 GETMBR R2 R0 K32 + 0x8808011E, // 0000 GETMBR R2 R0 K30 0x4C0C0000, // 0001 LDNIL R3 0x1C080403, // 0002 EQ R2 R2 R3 0x780A0002, // 0003 JMPF R2 #0007 0x60080013, // 0004 GETGBL R2 G19 0x7C080000, // 0005 CALL R2 0 - 0x90024002, // 0006 SETMBR R0 K32 R2 - 0x88080120, // 0007 GETMBR R2 R0 K32 + 0x90023C02, // 0006 SETMBR R0 K30 R2 + 0x8808011E, // 0007 GETMBR R2 R0 K30 0x8C080506, // 0008 GETMET R2 R2 K6 0x88100310, // 0009 GETMBR R4 R1 K16 0x7C080400, // 000A CALL R2 2 @@ -561,7 +559,7 @@ be_local_closure(class_LVGL_glob_register_obj, /* name */ 0x50080200, // 000C LDBOOL R2 1 0 0x80040400, // 000D RET 1 R2 0x70020004, // 000E JMP #0014 - 0x88080120, // 000F GETMBR R2 R0 K32 + 0x8808011E, // 000F GETMBR R2 R0 K30 0x880C0310, // 0010 GETMBR R3 R1 K16 0x98080601, // 0011 SETIDX R2 R3 R1 0x50080000, // 0012 LDBOOL R2 0 0 @@ -592,47 +590,47 @@ be_local_closure(class_LVGL_glob_widget_event_impl, /* name */ ( &(const binstruction[47]) { /* code */ 0xA40E3000, // 0000 IMPORT R3 K24 0xB8121A00, // 0001 GETNGBL R4 K13 - 0x8C100922, // 0002 GETMET R4 R4 K34 + 0x8C100920, // 0002 GETMET R4 R4 K32 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 0xB8161A00, // 0005 GETNGBL R5 K13 - 0x8C140B1D, // 0006 GETMET R5 R5 K29 + 0x8C140B1B, // 0006 GETMET R5 R5 K27 0x8C1C0719, // 0007 GETMET R7 R3 K25 0x5C240400, // 0008 MOVE R9 R2 0x7C1C0400, // 0009 CALL R7 2 0x7C140400, // 000A CALL R5 2 - 0x8C180B23, // 000B GETMET R6 R5 K35 + 0x8C180B21, // 000B GETMET R6 R5 K33 0x7C180200, // 000C CALL R6 1 - 0x8C1C011F, // 000D GETMET R7 R0 K31 + 0x8C1C011D, // 000D GETMET R7 R0 K29 0x88240D10, // 000E GETMBR R9 R6 K16 0x7C1C0400, // 000F CALL R7 2 0x60200004, // 0010 GETGBL R8 G4 0x5C240E00, // 0011 MOVE R9 R7 0x7C200200, // 0012 CALL R8 1 - 0x1C201124, // 0013 EQ R8 R8 K36 + 0x1C201122, // 0013 EQ R8 R8 K34 0x78220018, // 0014 JMPF R8 #002E - 0x8C200B25, // 0015 GETMET R8 R5 K37 + 0x8C200B23, // 0015 GETMET R8 R5 K35 0x7C200200, // 0016 CALL R8 1 0xB8261A00, // 0017 GETNGBL R9 K13 0x8824130E, // 0018 GETMBR R9 R9 K14 0x1C201009, // 0019 EQ R8 R8 R9 0x78220009, // 001A JMPF R8 #0025 - 0x8C200726, // 001B GETMET R8 R3 K38 + 0x8C200724, // 001B GETMET R8 R3 K36 0x5C280E00, // 001C MOVE R10 R7 - 0x582C0027, // 001D LDCONST R11 K39 + 0x582C0025, // 001D LDCONST R11 K37 0x7C200600, // 001E CALL R8 3 0x78220004, // 001F JMPF R8 #0025 - 0x8C200F27, // 0020 GETMET R8 R7 K39 + 0x8C200F25, // 0020 GETMET R8 R7 K37 0x5C280800, // 0021 MOVE R10 R4 0x5C2C0A00, // 0022 MOVE R11 R5 0x7C200600, // 0023 CALL R8 3 0x70020008, // 0024 JMP #002E - 0x8C200726, // 0025 GETMET R8 R3 K38 + 0x8C200724, // 0025 GETMET R8 R3 K36 0x5C280E00, // 0026 MOVE R10 R7 - 0x582C0028, // 0027 LDCONST R11 K40 + 0x582C0026, // 0027 LDCONST R11 K38 0x7C200600, // 0028 CALL R8 3 0x78220003, // 0029 JMPF R8 #002E - 0x8C200F28, // 002A GETMET R8 R7 K40 + 0x8C200F26, // 002A GETMET R8 R7 K38 0x5C280800, // 002B MOVE R10 R4 0x5C2C0A00, // 002C MOVE R11 R5 0x7C200600, // 002D CALL R8 3 @@ -662,23 +660,23 @@ be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */ ( &(const binstruction[22]) { /* code */ 0xA40E3000, // 0000 IMPORT R3 K24 0xB8121A00, // 0001 GETNGBL R4 K13 - 0x8C100922, // 0002 GETMET R4 R4 K34 + 0x8C100920, // 0002 GETMET R4 R4 K32 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 - 0x8C14011F, // 0005 GETMET R5 R0 K31 + 0x8C14011D, // 0005 GETMET R5 R0 K29 0x5C1C0400, // 0006 MOVE R7 R2 0x7C140400, // 0007 CALL R5 2 0x60180004, // 0008 GETGBL R6 G4 0x5C1C0A00, // 0009 MOVE R7 R5 0x7C180200, // 000A CALL R6 1 - 0x1C180D24, // 000B EQ R6 R6 K36 + 0x1C180D22, // 000B EQ R6 R6 K34 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180726, // 000D GETMET R6 R3 K38 + 0x8C180724, // 000D GETMET R6 R3 K36 0x5C200A00, // 000E MOVE R8 R5 - 0x58240029, // 000F LDCONST R9 K41 + 0x58240027, // 000F LDCONST R9 K39 0x7C180600, // 0010 CALL R6 3 0x781A0002, // 0011 JMPF R6 #0015 - 0x8C180B29, // 0012 GETMET R6 R5 K41 + 0x8C180B27, // 0012 GETMET R6 R5 K39 0x5C200800, // 0013 MOVE R8 R4 0x7C180400, // 0014 CALL R6 2 0x80000000, // 0015 RET 0 @@ -707,30 +705,30 @@ be_local_closure(class_LVGL_glob_widget_ctor_impl, /* name */ ( &(const binstruction[29]) { /* code */ 0xA40E3000, // 0000 IMPORT R3 K24 0xB8121A00, // 0001 GETNGBL R4 K13 - 0x8C100922, // 0002 GETMET R4 R4 K34 + 0x8C100920, // 0002 GETMET R4 R4 K32 0x5C180200, // 0003 MOVE R6 R1 0x7C100400, // 0004 CALL R4 2 - 0x8C14011F, // 0005 GETMET R5 R0 K31 + 0x8C14011D, // 0005 GETMET R5 R0 K29 0x5C1C0400, // 0006 MOVE R7 R2 0x7C140400, // 0007 CALL R5 2 - 0x88180120, // 0008 GETMBR R6 R0 K32 - 0x8C180D2A, // 0009 GETMET R6 R6 K42 + 0x8818011E, // 0008 GETMBR R6 R0 K30 + 0x8C180D28, // 0009 GETMET R6 R6 K40 0x5C200A00, // 000A MOVE R8 R5 0x7C180400, // 000B CALL R6 2 0x781A0001, // 000C JMPF R6 #000F - 0x88180120, // 000D GETMBR R6 R0 K32 + 0x8818011E, // 000D GETMBR R6 R0 K30 0x94140C05, // 000E GETIDX R5 R6 R5 0x60180004, // 000F GETGBL R6 G4 0x5C1C0A00, // 0010 MOVE R7 R5 0x7C180200, // 0011 CALL R6 1 - 0x1C180D24, // 0012 EQ R6 R6 K36 + 0x1C180D22, // 0012 EQ R6 R6 K34 0x781A0007, // 0013 JMPF R6 #001C - 0x8C180726, // 0014 GETMET R6 R3 K38 + 0x8C180724, // 0014 GETMET R6 R3 K36 0x5C200A00, // 0015 MOVE R8 R5 - 0x5824002B, // 0016 LDCONST R9 K43 + 0x58240029, // 0016 LDCONST R9 K41 0x7C180600, // 0017 CALL R6 3 0x781A0002, // 0018 JMPF R6 #001C - 0x8C180B2B, // 0019 GETMET R6 R5 K43 + 0x8C180B29, // 0019 GETMET R6 R5 K41 0x5C200800, // 001A MOVE R8 R4 0x7C180400, // 001B CALL R6 2 0x80000000, // 001C RET 0 @@ -758,7 +756,7 @@ be_local_closure(class_LVGL_glob__anonymous_, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x60000001, // 0000 GETGBL R0 G1 - 0x5804002C, // 0001 LDCONST R1 K44 + 0x5804002A, // 0001 LDCONST R1 K42 0x7C000200, // 0002 CALL R0 1 0x80000000, // 0003 RET 0 }) @@ -812,10 +810,10 @@ be_local_closure(class_LVGL_glob_init, /* name */ &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 - 0x8C08032D, // 0001 GETMET R2 R1 K45 + 0x8C08032B, // 0001 GETMET R2 R1 K43 0x84100000, // 0002 CLOSURE R4 P0 0x7C080400, // 0003 CALL R2 2 - 0xA40A5C00, // 0004 IMPORT R2 K46 + 0xA40A5800, // 0004 IMPORT R2 K44 0xA0000000, // 0005 CLOSE R0 0x80000000, // 0006 RET 0 }) @@ -841,12 +839,12 @@ be_local_closure(class_LVGL_glob_get_object_from_ptr, /* name */ be_str_weak(get_object_from_ptr), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x88080120, // 0000 GETMBR R2 R0 K32 + 0x8808011E, // 0000 GETMBR R2 R0 K30 0x4C0C0000, // 0001 LDNIL R3 0x20080403, // 0002 NE R2 R2 R3 0x780A0004, // 0003 JMPF R2 #0009 - 0x88080120, // 0004 GETMBR R2 R0 K32 - 0x8C08052A, // 0005 GETMET R2 R2 K42 + 0x8808011E, // 0004 GETMBR R2 R0 K30 + 0x8C080528, // 0005 GETMET R2 R2 K40 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x80040400, // 0008 RET 1 R2 @@ -878,77 +876,77 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ 0x6010000F, // 0001 GETGBL R4 G15 0x5C140200, // 0002 MOVE R5 R1 0xB81A1A00, // 0003 GETNGBL R6 K13 - 0x88180D2F, // 0004 GETMBR R6 R6 K47 + 0x88180D2D, // 0004 GETMBR R6 R6 K45 0x7C100400, // 0005 CALL R4 2 0x74120000, // 0006 JMPT R4 #0008 - 0xB0066131, // 0007 RAISE 1 K48 K49 - 0x88100132, // 0008 GETMBR R4 R0 K50 + 0xB0065D2F, // 0007 RAISE 1 K46 K47 + 0x88100130, // 0008 GETMBR R4 R0 K48 0x4C140000, // 0009 LDNIL R5 0x1C100805, // 000A EQ R4 R4 R5 0x78120002, // 000B JMPF R4 #000F 0x60100013, // 000C GETGBL R4 G19 0x7C100000, // 000D CALL R4 0 - 0x90026404, // 000E SETMBR R0 K50 R4 + 0x90026004, // 000E SETMBR R0 K48 R4 0x60100005, // 000F GETGBL R4 G5 0x5C140200, // 0010 MOVE R5 R1 0x7C100200, // 0011 CALL R4 1 - 0x88140132, // 0012 GETMBR R5 R0 K50 - 0x8C140B2A, // 0013 GETMET R5 R5 K42 + 0x88140130, // 0012 GETMBR R5 R0 K48 + 0x8C140B28, // 0013 GETMET R5 R5 K40 0x5C1C0800, // 0014 MOVE R7 R4 0x7C140400, // 0015 CALL R5 2 0x4C180000, // 0016 LDNIL R6 0x1C180A06, // 0017 EQ R6 R5 R6 0x781A002F, // 0018 JMPF R6 #0049 - 0x8C180133, // 0019 GETMET R6 R0 K51 + 0x8C180131, // 0019 GETMET R6 R0 K49 0x7C180200, // 001A CALL R6 1 - 0x88180134, // 001B GETMBR R6 R0 K52 - 0x8C180D35, // 001C GETMET R6 R6 K53 + 0x88180132, // 001B GETMBR R6 R0 K50 + 0x8C180D33, // 001C GETMET R6 R6 K51 0x7C180200, // 001D CALL R6 1 0x5C140C00, // 001E MOVE R5 R6 0x60180003, // 001F GETGBL R6 G3 0x5C1C0200, // 0020 MOVE R7 R1 0x7C180200, // 0021 CALL R6 1 - 0x88180D37, // 0022 GETMBR R6 R6 K55 - 0x90166C06, // 0023 SETMBR R5 K54 R6 + 0x88180D35, // 0022 GETMBR R6 R6 K53 + 0x90166806, // 0023 SETMBR R5 K52 R6 0x8C180706, // 0024 GETMET R6 R3 K6 0x5C200200, // 0025 MOVE R8 R1 - 0x58240038, // 0026 LDCONST R9 K56 + 0x58240036, // 0026 LDCONST R9 K54 0x7C180600, // 0027 CALL R6 3 0x781A0001, // 0028 JMPF R6 #002B - 0x88180338, // 0029 GETMBR R6 R1 K56 - 0x90167206, // 002A SETMBR R5 K57 R6 + 0x88180336, // 0029 GETMBR R6 R1 K54 + 0x90166E06, // 002A SETMBR R5 K55 R6 0x8C180706, // 002B GETMET R6 R3 K6 0x5C200200, // 002C MOVE R8 R1 - 0x5824003A, // 002D LDCONST R9 K58 + 0x58240038, // 002D LDCONST R9 K56 0x7C180600, // 002E CALL R6 3 0x781A0001, // 002F JMPF R6 #0032 - 0x8818033A, // 0030 GETMBR R6 R1 K58 - 0x90167606, // 0031 SETMBR R5 K59 R6 + 0x88180338, // 0030 GETMBR R6 R1 K56 + 0x90167206, // 0031 SETMBR R5 K57 R6 0x8C180706, // 0032 GETMET R6 R3 K6 0x5C200200, // 0033 MOVE R8 R1 - 0x5824003C, // 0034 LDCONST R9 K60 + 0x5824003A, // 0034 LDCONST R9 K58 0x7C180600, // 0035 CALL R6 3 0x781A0001, // 0036 JMPF R6 #0039 - 0x8818033C, // 0037 GETMBR R6 R1 K60 - 0x90167A06, // 0038 SETMBR R5 K61 R6 + 0x8818033A, // 0037 GETMBR R6 R1 K58 + 0x90167606, // 0038 SETMBR R5 K59 R6 0x8C180706, // 0039 GETMET R6 R3 K6 0x5C200200, // 003A MOVE R8 R1 - 0x5824003E, // 003B LDCONST R9 K62 + 0x5824003C, // 003B LDCONST R9 K60 0x7C180600, // 003C CALL R6 3 0x781A0001, // 003D JMPF R6 #0040 - 0x8818033E, // 003E GETMBR R6 R1 K62 - 0x90167E06, // 003F SETMBR R5 K63 R6 + 0x8818033C, // 003E GETMBR R6 R1 K60 + 0x90167A06, // 003F SETMBR R5 K61 R6 0x8C180706, // 0040 GETMET R6 R3 K6 0x5C200200, // 0041 MOVE R8 R1 - 0x58240040, // 0042 LDCONST R9 K64 + 0x5824003E, // 0042 LDCONST R9 K62 0x7C180600, // 0043 CALL R6 3 0x781A0001, // 0044 JMPF R6 #0047 - 0x88180340, // 0045 GETMBR R6 R1 K64 - 0x90168206, // 0046 SETMBR R5 K65 R6 - 0x88180132, // 0047 GETMBR R6 R0 K50 + 0x8818033E, // 0045 GETMBR R6 R1 K62 + 0x90167E06, // 0046 SETMBR R5 K63 R6 + 0x88180130, // 0047 GETMBR R6 R0 K48 0x98180805, // 0048 SETIDX R6 R4 R5 0xB81A1A00, // 0049 GETNGBL R6 K13 - 0x8C180D42, // 004A GETMET R6 R6 K66 + 0x8C180D40, // 004A GETMET R6 R6 K64 0x5C200A00, // 004B MOVE R8 R5 0x5C240400, // 004C MOVE R9 R2 0x7C180600, // 004D CALL R6 3 @@ -957,7 +955,7 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */ 0x8C1C010B, // 0050 GETMET R7 R0 K11 0x5C240200, // 0051 MOVE R9 R1 0x7C1C0400, // 0052 CALL R7 2 - 0x8C1C0343, // 0053 GETMET R7 R1 K67 + 0x8C1C0341, // 0053 GETMET R7 R1 K65 0x7C1C0200, // 0054 CALL R7 1 0x80000000, // 0055 RET 0 }) @@ -1060,56 +1058,56 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */ &be_const_str_solidified, ( &(const binstruction[54]) { /* code */ 0xA4060200, // 0000 IMPORT R1 K1 - 0x88080144, // 0001 GETMBR R2 R0 K68 + 0x88080142, // 0001 GETMBR R2 R0 K66 0x4C0C0000, // 0002 LDNIL R3 0x1C080403, // 0003 EQ R2 R2 R3 0x780A0003, // 0004 JMPF R2 #0009 0x8C080302, // 0005 GETMET R2 R1 K2 0x84100000, // 0006 CLOSURE R4 P0 0x7C080400, // 0007 CALL R2 2 - 0x90028802, // 0008 SETMBR R0 K68 R2 - 0x88080145, // 0009 GETMBR R2 R0 K69 + 0x90028402, // 0008 SETMBR R0 K66 R2 + 0x88080143, // 0009 GETMBR R2 R0 K67 0x4C0C0000, // 000A LDNIL R3 0x1C080403, // 000B EQ R2 R2 R3 0x780A0003, // 000C JMPF R2 #0011 0x8C080302, // 000D GETMET R2 R1 K2 0x84100001, // 000E CLOSURE R4 P1 0x7C080400, // 000F CALL R2 2 - 0x90028A02, // 0010 SETMBR R0 K69 R2 - 0x88080146, // 0011 GETMBR R2 R0 K70 + 0x90028602, // 0010 SETMBR R0 K67 R2 + 0x88080144, // 0011 GETMBR R2 R0 K68 0x4C0C0000, // 0012 LDNIL R3 0x1C080403, // 0013 EQ R2 R2 R3 0x780A0003, // 0014 JMPF R2 #0019 0x8C080302, // 0015 GETMET R2 R1 K2 0x84100002, // 0016 CLOSURE R4 P2 0x7C080400, // 0017 CALL R2 2 - 0x90028C02, // 0018 SETMBR R0 K70 R2 - 0x88080134, // 0019 GETMBR R2 R0 K52 + 0x90028802, // 0018 SETMBR R0 K68 R2 + 0x88080132, // 0019 GETMBR R2 R0 K50 0x4C0C0000, // 001A LDNIL R3 0x1C080403, // 001B EQ R2 R2 R3 0x780A0016, // 001C JMPF R2 #0034 0xB80A1A00, // 001D GETNGBL R2 K13 - 0x8C080522, // 001E GETMET R2 R2 K34 + 0x8C080520, // 001E GETMET R2 R2 K32 0xB8121A00, // 001F GETNGBL R4 K13 - 0x8810092F, // 0020 GETMBR R4 R4 K47 - 0x88100937, // 0021 GETMBR R4 R4 K55 + 0x8810092D, // 0020 GETMBR R4 R4 K45 + 0x88100935, // 0021 GETMBR R4 R4 K53 0x7C080400, // 0022 CALL R2 2 - 0x8C080535, // 0023 GETMET R2 R2 K53 + 0x8C080533, // 0023 GETMET R2 R2 K51 0x7C080200, // 0024 CALL R2 1 - 0x90026802, // 0025 SETMBR R0 K52 R2 - 0x88080134, // 0026 GETMBR R2 R0 K52 + 0x90026402, // 0025 SETMBR R0 K50 R2 + 0x88080132, // 0026 GETMBR R2 R0 K50 0xB80E1A00, // 0027 GETNGBL R3 K13 - 0x880C072F, // 0028 GETMBR R3 R3 K47 - 0x880C0737, // 0029 GETMBR R3 R3 K55 - 0x900A6C03, // 002A SETMBR R2 K54 R3 - 0x88080134, // 002B GETMBR R2 R0 K52 - 0x880C0144, // 002C GETMBR R3 R0 K68 - 0x900A8E03, // 002D SETMBR R2 K71 R3 - 0x88080134, // 002E GETMBR R2 R0 K52 - 0x880C0145, // 002F GETMBR R3 R0 K69 - 0x900A9003, // 0030 SETMBR R2 K72 R3 - 0x88080134, // 0031 GETMBR R2 R0 K52 - 0x880C0146, // 0032 GETMBR R3 R0 K70 + 0x880C072D, // 0028 GETMBR R3 R3 K45 + 0x880C0735, // 0029 GETMBR R3 R3 K53 + 0x900A6803, // 002A SETMBR R2 K52 R3 + 0x88080132, // 002B GETMBR R2 R0 K50 + 0x880C0142, // 002C GETMBR R3 R0 K66 + 0x900A8A03, // 002D SETMBR R2 K69 R3 + 0x88080132, // 002E GETMBR R2 R0 K50 + 0x880C0143, // 002F GETMBR R3 R0 K67 + 0x900A8C03, // 0030 SETMBR R2 K70 R3 + 0x88080132, // 0031 GETMBR R2 R0 K50 + 0x880C0144, // 0032 GETMBR R3 R0 K68 0x900A0003, // 0033 SETMBR R2 K0 R3 0xA0000000, // 0034 CLOSE R0 0x80000000, // 0035 RET 0 @@ -1138,7 +1136,7 @@ be_local_closure(class_LVGL_glob_remove_cb, /* name */ ( &(const binstruction[ 6]) { /* code */ 0xA40A3000, // 0000 IMPORT R2 K24 0x880C0310, // 0001 GETMBR R3 R1 K16 - 0x8C100149, // 0002 GETMET R4 R0 K73 + 0x8C100147, // 0002 GETMET R4 R0 K71 0x5C180600, // 0003 MOVE R6 R3 0x7C100400, // 0004 CALL R4 2 0x80000000, // 0005 RET 0 diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h index 0c164f31d..6ec64d494 100644 --- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h +++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h @@ -4,8 +4,8 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_lvh_root; -// compact class 'lvh_root' ktab size: 66, total: 95 (saved 232 bytes) -static const bvalue be_ktab_class_lvh_root[66] = { +// compact class 'lvh_root' ktab size: 63, total: 95 (saved 256 bytes) +static const bvalue be_ktab_class_lvh_root[63] = { /* K0 */ be_nested_str_weak(_text_rule_formula), /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28), /* K2 */ be_nested_str_weak(_X29), @@ -49,29 +49,26 @@ static const bvalue be_ktab_class_lvh_root[66] = { /* K40 */ be_nested_str_weak(post_init), /* K41 */ be_nested_str_weak(delete), /* K42 */ be_const_class(be_class_lvh_root), - /* K43 */ be_const_int(1), - /* K44 */ be_nested_str_weak(resize), - /* K45 */ be_nested_str_weak(remove_val_rule), - /* K46 */ be_nested_str_weak(_val_rule), - /* K47 */ be_nested_str_weak(tasmota), - /* K48 */ be_nested_str_weak(add_rule), - /* K49 */ be_const_int(0), - /* K50 */ be_nested_str_weak(_digit2part), - /* K51 */ be_nested_str_weak(_digit2state), - /* K52 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i), - /* K53 */ be_nested_str_weak(value_error), - /* K54 */ be_nested_str_weak(remove_rule), - /* K55 */ be_nested_str_weak(color), - /* K56 */ be_nested_str_weak(type_error), - /* K57 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27), - /* K58 */ be_nested_str_weak(get_text), - /* K59 */ be_const_int(0), - /* K60 */ be_nested_str_weak(_X23), - /* K61 */ be_nested_str_weak(introspect), - /* K62 */ be_nested_str_weak(COLOR_), - /* K63 */ be_nested_str_weak(toupper), - /* K64 */ be_nested_str_weak(get), - /* K65 */ be_nested_str_weak(remove_text_rule), + /* K43 */ be_nested_str_weak(resize), + /* K44 */ be_nested_str_weak(remove_val_rule), + /* K45 */ be_nested_str_weak(_val_rule), + /* K46 */ be_nested_str_weak(tasmota), + /* K47 */ be_nested_str_weak(add_rule), + /* K48 */ be_nested_str_weak(_digit2part), + /* K49 */ be_nested_str_weak(_digit2state), + /* K50 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i), + /* K51 */ be_nested_str_weak(value_error), + /* K52 */ be_nested_str_weak(remove_rule), + /* K53 */ be_nested_str_weak(color), + /* K54 */ be_nested_str_weak(type_error), + /* K55 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27), + /* K56 */ be_nested_str_weak(get_text), + /* K57 */ be_nested_str_weak(_X23), + /* K58 */ be_nested_str_weak(introspect), + /* K59 */ be_nested_str_weak(COLOR_), + /* K60 */ be_nested_str_weak(toupper), + /* K61 */ be_nested_str_weak(get), + /* K62 */ be_nested_str_weak(remove_text_rule), }; @@ -732,11 +729,11 @@ be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */ 0x20100914, // 000A NE R4 R4 K20 0x78120000, // 000B JMPF R4 #000D 0x70020001, // 000C JMP #000F - 0x000C072B, // 000D ADD R3 R3 K43 + 0x000C0712, // 000D ADD R3 R3 K18 0x7001FFF5, // 000E JMP #0005 0x24100714, // 000F GT R4 R3 K20 0x78120005, // 0010 JMPF R4 #0017 - 0x8C10012C, // 0011 GETMET R4 R0 K44 + 0x8C10012B, // 0011 GETMET R4 R0 K43 0x6018000C, // 0012 GETGBL R6 G12 0x5C1C0000, // 0013 MOVE R7 R0 0x7C180200, // 0014 CALL R6 1 @@ -791,15 +788,15 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */ be_str_weak(set_val_rule), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x8C08012D, // 0000 GETMET R2 R0 K45 + 0x8C08012C, // 0000 GETMET R2 R0 K44 0x7C080200, // 0001 CALL R2 1 0x60080008, // 0002 GETGBL R2 G8 0x5C0C0200, // 0003 MOVE R3 R1 0x7C080200, // 0004 CALL R2 1 - 0x90025C02, // 0005 SETMBR R0 K46 R2 - 0xB80A5E00, // 0006 GETNGBL R2 K47 - 0x8C080530, // 0007 GETMET R2 R2 K48 - 0x8810012E, // 0008 GETMBR R4 R0 K46 + 0x90025A02, // 0005 SETMBR R0 K45 R2 + 0xB80A5C00, // 0006 GETNGBL R2 K46 + 0x8C08052F, // 0007 GETMET R2 R2 K47 + 0x8810012D, // 0008 GETMBR R4 R0 K45 0x84140000, // 0009 CLOSURE R5 P0 0x5C180000, // 000A MOVE R6 R0 0x7C080800, // 000B CALL R2 4 @@ -828,7 +825,7 @@ be_local_closure(class_lvh_root_get_val_rule, /* name */ be_str_weak(get_val_rule), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x8804012E, // 0000 GETMBR R1 R0 K46 + 0x8804012D, // 0000 GETMBR R1 R0 K45 0x80040200, // 0001 RET 1 R1 }) ) @@ -856,34 +853,34 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 - 0x80066200, // 0003 RET 1 K49 + 0x80062800, // 0003 RET 1 K20 0x540A0009, // 0004 LDINT R2 10 0x0C080202, // 0005 DIV R2 R1 R2 0x540E0009, // 0006 LDINT R3 10 0x10080403, // 0007 MOD R2 R2 R3 0x540E0009, // 0008 LDINT R3 10 0x100C0203, // 0009 MOD R3 R1 R3 - 0x58100031, // 000A LDCONST R4 K49 - 0x28140531, // 000B GE R5 R2 K49 + 0x58100014, // 000A LDCONST R4 K20 + 0x28140514, // 000B GE R5 R2 K20 0x78160008, // 000C JMPF R5 #0016 0x6014000C, // 000D GETGBL R5 G12 - 0x88180132, // 000E GETMBR R6 R0 K50 + 0x88180130, // 000E GETMBR R6 R0 K48 0x7C140200, // 000F CALL R5 1 0x14140405, // 0010 LT R5 R2 R5 0x78160003, // 0011 JMPF R5 #0016 - 0x88140132, // 0012 GETMBR R5 R0 K50 + 0x88140130, // 0012 GETMBR R5 R0 K48 0x94140A02, // 0013 GETIDX R5 R5 R2 0x30100805, // 0014 OR R4 R4 R5 0x70020000, // 0015 JMP #0017 0x4C100000, // 0016 LDNIL R4 - 0x28140731, // 0017 GE R5 R3 K49 + 0x28140714, // 0017 GE R5 R3 K20 0x78160008, // 0018 JMPF R5 #0022 0x6014000C, // 0019 GETGBL R5 G12 - 0x88180133, // 001A GETMBR R6 R0 K51 + 0x88180131, // 001A GETMBR R6 R0 K49 0x7C140200, // 001B CALL R5 1 0x14140605, // 001C LT R5 R3 R5 0x78160003, // 001D JMPF R5 #0022 - 0x88140133, // 001E GETMBR R5 R0 K51 + 0x88140131, // 001E GETMBR R5 R0 K49 0x94140A03, // 001F GETIDX R5 R5 R3 0x30100805, // 0020 OR R4 R4 R5 0x70020000, // 0021 JMP #0023 @@ -892,10 +889,10 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */ 0x1C140805, // 0024 EQ R5 R4 R5 0x78160004, // 0025 JMPF R5 #002B 0x60140018, // 0026 GETGBL R5 G24 - 0x58180034, // 0027 LDCONST R6 K52 + 0x58180032, // 0027 LDCONST R6 K50 0x5C1C0200, // 0028 MOVE R7 R1 0x7C140400, // 0029 CALL R5 2 - 0xB0066A05, // 002A RAISE 1 K53 R5 + 0xB0066605, // 002A RAISE 1 K51 R5 0x80040800, // 002B RET 1 R4 }) ) @@ -948,13 +945,13 @@ be_local_closure(class_lvh_root_remove_val_rule, /* name */ be_str_weak(remove_val_rule), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x8804012E, // 0000 GETMBR R1 R0 K46 + 0x8804012D, // 0000 GETMBR R1 R0 K45 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060004, // 0003 JMPF R1 #0009 - 0xB8065E00, // 0004 GETNGBL R1 K47 - 0x8C040336, // 0005 GETMET R1 R1 K54 - 0x880C012E, // 0006 GETMBR R3 R0 K46 + 0xB8065C00, // 0004 GETNGBL R1 K46 + 0x8C040334, // 0005 GETMET R1 R1 K52 + 0x880C012D, // 0006 GETMBR R3 R0 K45 0x5C100000, // 0007 MOVE R4 R0 0x7C040600, // 0008 CALL R1 3 0x80000000, // 0009 RET 0 @@ -1035,7 +1032,7 @@ be_local_closure(class_lvh_root_is_color_attribute, /* name */ 0x60140008, // 0002 GETGBL R5 G8 0x5C180200, // 0003 MOVE R6 R1 0x7C140200, // 0004 CALL R5 1 - 0x58180037, // 0005 LDCONST R6 K55 + 0x58180035, // 0005 LDCONST R6 K53 0x7C0C0600, // 0006 CALL R3 3 0x80040600, // 0007 RET 1 R3 }) @@ -1086,7 +1083,7 @@ be_local_closure(class_lvh_root_set_delete, /* name */ be_str_weak(set_delete), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0xB0067139, // 0000 RAISE 1 K56 K57 + 0xB0066D37, // 0000 RAISE 1 K54 K55 0x80000000, // 0001 RET 0 }) ) @@ -1111,7 +1108,7 @@ be_local_closure(class_lvh_root_get_value_str, /* name */ be_str_weak(get_value_str), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04013A, // 0000 GETMET R1 R0 K58 + 0x8C040138, // 0000 GETMET R1 R0 K56 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -1241,11 +1238,11 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 0x5C000600, // 0005 MOVE R0 R3 - 0x940C013B, // 0006 GETIDX R3 R0 K59 - 0x1C0C073C, // 0007 EQ R3 R3 K60 + 0x940C0114, // 0006 GETIDX R3 R0 K20 + 0x1C0C0739, // 0007 EQ R3 R3 K57 0x780E0007, // 0008 JMPF R3 #0011 0xB80E1400, // 0009 GETNGBL R3 K10 - 0x8C0C0737, // 000A GETMET R3 R3 K55 + 0x8C0C0735, // 000A GETMET R3 R3 K53 0x5C140400, // 000B MOVE R5 R2 0x5C180000, // 000C MOVE R6 R0 0x7C140200, // 000D CALL R5 1 @@ -1253,12 +1250,12 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0x80040600, // 000F RET 1 R3 0x70020011, // 0010 JMP #0023 0xA40E1E00, // 0011 IMPORT R3 K15 - 0xA4127A00, // 0012 IMPORT R4 K61 - 0x8C14073F, // 0013 GETMET R5 R3 K63 + 0xA4127400, // 0012 IMPORT R4 K58 + 0x8C14073C, // 0013 GETMET R5 R3 K60 0x5C1C0000, // 0014 MOVE R7 R0 0x7C140400, // 0015 CALL R5 2 - 0x00167C05, // 0016 ADD R5 K62 R5 - 0x8C180940, // 0017 GETMET R6 R4 K64 + 0x00167605, // 0016 ADD R5 K59 R5 + 0x8C18093D, // 0017 GETMET R6 R4 K61 0xB8221400, // 0018 GETNGBL R8 K10 0x5C240A00, // 0019 MOVE R9 R5 0x7C180600, // 001A CALL R6 3 @@ -1266,13 +1263,13 @@ be_local_closure(class_lvh_root_parse_color, /* name */ 0x201C0C07, // 001C NE R7 R6 R7 0x781E0004, // 001D JMPF R7 #0023 0xB81E1400, // 001E GETNGBL R7 K10 - 0x8C1C0F37, // 001F GETMET R7 R7 K55 + 0x8C1C0F35, // 001F GETMET R7 R7 K53 0x5C240C00, // 0020 MOVE R9 R6 0x7C1C0400, // 0021 CALL R7 2 0x80040E00, // 0022 RET 1 R7 0xB80E1400, // 0023 GETNGBL R3 K10 - 0x8C0C0737, // 0024 GETMET R3 R3 K55 - 0x5814003B, // 0025 LDCONST R5 K59 + 0x8C0C0735, // 0024 GETMET R3 R3 K53 + 0x58140014, // 0025 LDCONST R5 K20 0x7C0C0400, // 0026 CALL R3 2 0x80040600, // 0027 RET 1 R3 }) @@ -1327,8 +1324,8 @@ be_local_closure(class_lvh_root_remove_text_rule, /* name */ 0x4C080000, // 0001 LDNIL R2 0x20040202, // 0002 NE R1 R1 R2 0x78060004, // 0003 JMPF R1 #0009 - 0xB8065E00, // 0004 GETNGBL R1 K47 - 0x8C040336, // 0005 GETMET R1 R1 K54 + 0xB8065C00, // 0004 GETNGBL R1 K46 + 0x8C040334, // 0005 GETMET R1 R1 K52 0x880C0105, // 0006 GETMBR R3 R0 K5 0x5C100000, // 0007 MOVE R4 R0 0x7C040600, // 0008 CALL R1 3 @@ -1433,14 +1430,14 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */ be_str_weak(set_text_rule), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x8C080141, // 0000 GETMET R2 R0 K65 + 0x8C08013E, // 0000 GETMET R2 R0 K62 0x7C080200, // 0001 CALL R2 1 0x60080008, // 0002 GETGBL R2 G8 0x5C0C0200, // 0003 MOVE R3 R1 0x7C080200, // 0004 CALL R2 1 0x90020A02, // 0005 SETMBR R0 K5 R2 - 0xB80A5E00, // 0006 GETNGBL R2 K47 - 0x8C080530, // 0007 GETMET R2 R2 K48 + 0xB80A5C00, // 0006 GETNGBL R2 K46 + 0x8C08052F, // 0007 GETMET R2 R2 K47 0x88100105, // 0008 GETMBR R4 R0 K5 0x84140000, // 0009 CLOSURE R5 P0 0x5C180000, // 000A MOVE R6 R0 @@ -1556,8 +1553,8 @@ be_local_class(lvh_root, })), be_str_weak(lvh_root) ); -// compact class 'lvh_obj' ktab size: 141, total: 284 (saved 1144 bytes) -static const bvalue be_ktab_class_lvh_obj[141] = { +// compact class 'lvh_obj' ktab size: 138, total: 284 (saved 1168 bytes) +static const bvalue be_ktab_class_lvh_obj[138] = { /* K0 */ be_nested_str_weak(_lv_part2_selector), /* K1 */ be_nested_str_weak(_lv_obj), /* K2 */ be_nested_str_weak(set_style_pad_bottom), @@ -1622,83 +1619,80 @@ static const bvalue be_ktab_class_lvh_obj[141] = { /* K61 */ be_nested_str_weak(EVENT_CLICKED), /* K62 */ be_nested_str_weak(tasmota), /* K63 */ be_nested_str_weak(set_timer), - /* K64 */ be_const_int(0), - /* K65 */ be_nested_str_weak(_event_map), - /* K66 */ be_nested_str_weak(find), - /* K67 */ be_nested_str_weak(json), - /* K68 */ be_nested_str_weak(EVENT_VALUE_CHANGED), - /* K69 */ be_nested_str_weak(val), - /* K70 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s), - /* K71 */ be_nested_str_weak(dump), - /* K72 */ be_nested_str_weak(text), - /* K73 */ be_nested_str_weak(_X2C_X22text_X22_X3A), - /* K74 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D), - /* K75 */ be_nested_str_weak(_page_id), - /* K76 */ be_nested_str_weak(init), - /* K77 */ be_nested_str_weak(has_state), - /* K78 */ be_nested_str_weak(STATE_DISABLED), - /* K79 */ be_nested_str_weak(get_enabled), - /* K80 */ be_nested_str_weak(get_long_mode), - /* K81 */ be_nested_str_weak(OBJ_FLAG_HIDDEN), - /* K82 */ be_nested_str_weak(set_text_font), - /* K83 */ be_nested_str_weak(get_text_font), - /* K84 */ be_nested_str_weak(_val), - /* K85 */ be_nested_str_weak(set_value), - /* K86 */ be_nested_str_weak(set_style_text_color), - /* K87 */ be_nested_str_weak(parse_color), - /* K88 */ be_nested_str_weak(get_style_radius), - /* K89 */ be_nested_str_weak(set_style_pad_right), - /* K90 */ be_nested_str_weak(expand), - /* K91 */ be_nested_str_weak(set_width), - /* K92 */ be_nested_str_weak(SIZE_CONTENT), - /* K93 */ be_nested_str_weak(break), - /* K94 */ be_nested_str_weak(LABEL_LONG_WRAP), - /* K95 */ be_nested_str_weak(dots), - /* K96 */ be_nested_str_weak(LABEL_LONG_DOT), - /* K97 */ be_nested_str_weak(scroll), - /* K98 */ be_nested_str_weak(LABEL_LONG_SCROLL), - /* K99 */ be_nested_str_weak(loop), - /* K100 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR), - /* K101 */ be_nested_str_weak(crop), - /* K102 */ be_nested_str_weak(LABEL_LONG_CLIP), - /* K103 */ be_nested_str_weak(set_long_mode), - /* K104 */ be_nested_str_weak(startswith), - /* K105 */ be_nested_str_weak(set_), - /* K106 */ be_nested_str_weak(get_), - /* K107 */ be_nested_str_weak(real), - /* K108 */ be_nested_str_weak(math), - /* K109 */ be_nested_str_weak(round), - /* K110 */ be_nested_str_weak(endswith), - /* K111 */ be_nested_str_weak(_X25), - /* K112 */ be_nested_str_weak(pct), - /* K113 */ be_const_int(3), - /* K114 */ be_nested_str_weak(byte), - /* K115 */ be_const_int(2147483647), - /* K116 */ be_nested_str_weak(digits_to_style), - /* K117 */ be_nested_str_weak(_attr_ignore), - /* K118 */ be_nested_str_weak(get), - /* K119 */ be_nested_str_weak(function), - /* K120 */ be_nested_str_weak(_attr_map), - /* K121 */ be_nested_str_weak(is_color_attribute), - /* K122 */ be_nested_str_weak(set_style_), - /* K123 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), - /* K124 */ be_nested_str_weak(get_style_text_align), - /* K125 */ be_nested_str_weak(get_style_pad_left), - /* K126 */ be_nested_str_weak(set_x), - /* K127 */ be_const_int(3), - /* K128 */ be_const_int(0), - /* K129 */ be_nested_str_weak(get_style_), - /* K130 */ be_nested_str_weak(undefined), - /* K131 */ be_nested_str_weak(set_y), - /* K132 */ be_nested_str_weak(set_style_radius), - /* K133 */ be_nested_str_weak(keys), - /* K134 */ be_nested_str_weak(register_event), - /* K135 */ be_nested_str_weak(stop_iteration), - /* K136 */ be_nested_str_weak(parse_font), - /* K137 */ be_nested_str_weak(set_style_text_font), - /* K138 */ be_nested_str_weak(get_style_pad_bottom), - /* K139 */ be_nested_str_weak(get_value), - /* K140 */ be_nested_str_weak(register_event_cb), + /* K64 */ be_nested_str_weak(_event_map), + /* K65 */ be_nested_str_weak(find), + /* K66 */ be_nested_str_weak(json), + /* K67 */ be_nested_str_weak(EVENT_VALUE_CHANGED), + /* K68 */ be_nested_str_weak(val), + /* K69 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s), + /* K70 */ be_nested_str_weak(dump), + /* K71 */ be_nested_str_weak(text), + /* K72 */ be_nested_str_weak(_X2C_X22text_X22_X3A), + /* K73 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D), + /* K74 */ be_nested_str_weak(_page_id), + /* K75 */ be_nested_str_weak(init), + /* K76 */ be_nested_str_weak(has_state), + /* K77 */ be_nested_str_weak(STATE_DISABLED), + /* K78 */ be_nested_str_weak(get_enabled), + /* K79 */ be_nested_str_weak(get_long_mode), + /* K80 */ be_nested_str_weak(OBJ_FLAG_HIDDEN), + /* K81 */ be_nested_str_weak(set_text_font), + /* K82 */ be_nested_str_weak(get_text_font), + /* K83 */ be_nested_str_weak(_val), + /* K84 */ be_nested_str_weak(set_value), + /* K85 */ be_nested_str_weak(set_style_text_color), + /* K86 */ be_nested_str_weak(parse_color), + /* K87 */ be_nested_str_weak(get_style_radius), + /* K88 */ be_nested_str_weak(set_style_pad_right), + /* K89 */ be_nested_str_weak(expand), + /* K90 */ be_nested_str_weak(set_width), + /* K91 */ be_nested_str_weak(SIZE_CONTENT), + /* K92 */ be_nested_str_weak(break), + /* K93 */ be_nested_str_weak(LABEL_LONG_WRAP), + /* K94 */ be_nested_str_weak(dots), + /* K95 */ be_nested_str_weak(LABEL_LONG_DOT), + /* K96 */ be_nested_str_weak(scroll), + /* K97 */ be_nested_str_weak(LABEL_LONG_SCROLL), + /* K98 */ be_nested_str_weak(loop), + /* K99 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR), + /* K100 */ be_nested_str_weak(crop), + /* K101 */ be_nested_str_weak(LABEL_LONG_CLIP), + /* K102 */ be_nested_str_weak(set_long_mode), + /* K103 */ be_nested_str_weak(startswith), + /* K104 */ be_nested_str_weak(set_), + /* K105 */ be_nested_str_weak(get_), + /* K106 */ be_nested_str_weak(real), + /* K107 */ be_nested_str_weak(math), + /* K108 */ be_nested_str_weak(round), + /* K109 */ be_nested_str_weak(endswith), + /* K110 */ be_nested_str_weak(_X25), + /* K111 */ be_nested_str_weak(pct), + /* K112 */ be_const_int(3), + /* K113 */ be_nested_str_weak(byte), + /* K114 */ be_const_int(2147483647), + /* K115 */ be_nested_str_weak(digits_to_style), + /* K116 */ be_nested_str_weak(_attr_ignore), + /* K117 */ be_nested_str_weak(get), + /* K118 */ be_nested_str_weak(function), + /* K119 */ be_nested_str_weak(_attr_map), + /* K120 */ be_nested_str_weak(is_color_attribute), + /* K121 */ be_nested_str_weak(set_style_), + /* K122 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A), + /* K123 */ be_nested_str_weak(get_style_text_align), + /* K124 */ be_nested_str_weak(get_style_pad_left), + /* K125 */ be_nested_str_weak(set_x), + /* K126 */ be_nested_str_weak(get_style_), + /* K127 */ be_nested_str_weak(undefined), + /* K128 */ be_nested_str_weak(set_y), + /* K129 */ be_nested_str_weak(set_style_radius), + /* K130 */ be_nested_str_weak(keys), + /* K131 */ be_nested_str_weak(register_event), + /* K132 */ be_nested_str_weak(stop_iteration), + /* K133 */ be_nested_str_weak(parse_font), + /* K134 */ be_nested_str_weak(set_style_text_font), + /* K135 */ be_nested_str_weak(get_style_pad_bottom), + /* K136 */ be_nested_str_weak(get_value), + /* K137 */ be_nested_str_weak(register_event_cb), }; @@ -2624,40 +2618,40 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ 0x78120004, // 000A JMPF R4 #0010 0xB8127C00, // 000B GETNGBL R4 K62 0x8C10093F, // 000C GETMET R4 R4 K63 - 0x58180040, // 000D LDCONST R6 K64 + 0x58180016, // 000D LDCONST R6 K22 0x841C0000, // 000E CLOSURE R7 P0 0x7C100600, // 000F CALL R4 3 - 0x88100141, // 0010 GETMBR R4 R0 K65 - 0x8C100942, // 0011 GETMET R4 R4 K66 + 0x88100140, // 0010 GETMBR R4 R0 K64 + 0x8C100941, // 0011 GETMET R4 R4 K65 0x5C180600, // 0012 MOVE R6 R3 0x7C100400, // 0013 CALL R4 2 0x4C140000, // 0014 LDNIL R5 0x20140805, // 0015 NE R5 R4 R5 0x7816002E, // 0016 JMPF R5 #0046 - 0xA4168600, // 0017 IMPORT R5 K67 + 0xA4168400, // 0017 IMPORT R5 K66 0x58180024, // 0018 LDCONST R6 K36 0xB81E0600, // 0019 GETNGBL R7 K3 - 0x881C0F44, // 001A GETMBR R7 R7 K68 + 0x881C0F43, // 001A GETMBR R7 R7 K67 0x1C1C0607, // 001B EQ R7 R3 R7 0x781E001A, // 001C JMPF R7 #0038 0xA8020015, // 001D EXBLK 0 #0034 - 0x881C0145, // 001E GETMBR R7 R0 K69 + 0x881C0144, // 001E GETMBR R7 R0 K68 0x4C200000, // 001F LDNIL R8 0x20200E08, // 0020 NE R8 R7 R8 0x78220006, // 0021 JMPF R8 #0029 0x60200018, // 0022 GETGBL R8 G24 - 0x58240046, // 0023 LDCONST R9 K70 - 0x8C280B47, // 0024 GETMET R10 R5 K71 + 0x58240045, // 0023 LDCONST R9 K69 + 0x8C280B46, // 0024 GETMET R10 R5 K70 0x5C300E00, // 0025 MOVE R12 R7 0x7C280400, // 0026 CALL R10 2 0x7C200400, // 0027 CALL R8 2 0x5C181000, // 0028 MOVE R6 R8 - 0x88200148, // 0029 GETMBR R8 R0 K72 + 0x88200147, // 0029 GETMBR R8 R0 K71 0x4C240000, // 002A LDNIL R9 0x20241009, // 002B NE R9 R8 R9 0x78260004, // 002C JMPF R9 #0032 - 0x00180D49, // 002D ADD R6 R6 K73 - 0x8C240B47, // 002E GETMET R9 R5 K71 + 0x00180D48, // 002D ADD R6 R6 K72 + 0x8C240B46, // 002E GETMET R9 R5 K70 0x5C2C1000, // 002F MOVE R11 R8 0x7C240400, // 0030 CALL R9 2 0x00180C09, // 0031 ADD R6 R6 R9 @@ -2668,16 +2662,16 @@ be_local_closure(class_lvh_obj_event_cb, /* name */ 0x70020000, // 0036 JMP #0038 0xB0080000, // 0037 RAISE 2 R0 R0 0x601C0018, // 0038 GETGBL R7 G24 - 0x5820004A, // 0039 LDCONST R8 K74 + 0x58200049, // 0039 LDCONST R8 K73 0x88240132, // 003A GETMBR R9 R0 K50 - 0x8824134B, // 003B GETMBR R9 R9 K75 + 0x8824134A, // 003B GETMBR R9 R9 K74 0x88280134, // 003C GETMBR R10 R0 K52 0x5C2C0800, // 003D MOVE R11 R4 0x5C300C00, // 003E MOVE R12 R6 0x7C1C0A00, // 003F CALL R7 5 0xB8227C00, // 0040 GETNGBL R8 K62 0x8C20113F, // 0041 GETMET R8 R8 K63 - 0x58280040, // 0042 LDCONST R10 K64 + 0x58280016, // 0042 LDCONST R10 K22 0x842C0001, // 0043 CLOSURE R11 P1 0x7C200600, // 0044 CALL R8 3 0xA0140000, // 0045 CLOSE R5 @@ -2709,7 +2703,7 @@ be_local_closure(class_lvh_obj_init, /* name */ 0x60180003, // 0000 GETGBL R6 G3 0x5C1C0000, // 0001 MOVE R7 R0 0x7C180200, // 0002 CALL R6 1 - 0x8C180D4C, // 0003 GETMET R6 R6 K76 + 0x8C180D4B, // 0003 GETMET R6 R6 K75 0x5C200200, // 0004 MOVE R8 R1 0x5C240400, // 0005 MOVE R9 R2 0x5C280600, // 0006 MOVE R10 R3 @@ -2741,9 +2735,9 @@ be_local_closure(class_lvh_obj_get_enabled, /* name */ &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C04034D, // 0001 GETMET R1 R1 K77 + 0x8C04034C, // 0001 GETMET R1 R1 K76 0xB80E0600, // 0002 GETNGBL R3 K3 - 0x880C074E, // 0003 GETMBR R3 R3 K78 + 0x880C074D, // 0003 GETMBR R3 R3 K77 0x7C040400, // 0004 CALL R1 2 0x78060000, // 0005 JMPF R1 #0007 0x50040001, // 0006 LDBOOL R1 0 1 @@ -2772,7 +2766,7 @@ be_local_closure(class_lvh_obj_get_click, /* name */ be_str_weak(get_click), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04014F, // 0000 GETMET R1 R0 K79 + 0x8C04014E, // 0000 GETMET R1 R0 K78 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -2803,7 +2797,7 @@ be_local_closure(class_lvh_obj_get_label_mode, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060003, // 0003 JMPF R1 #0008 0x88040111, // 0004 GETMBR R1 R0 K17 - 0x8C040350, // 0005 GETMET R1 R1 K80 + 0x8C04034F, // 0005 GETMET R1 R1 K79 0x7C040200, // 0006 CALL R1 1 0x80040200, // 0007 RET 1 R1 0x80000000, // 0008 RET 0 @@ -2831,7 +2825,7 @@ be_local_closure(class_lvh_obj_get_toggle, /* name */ &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C04034D, // 0001 GETMET R1 R1 K77 + 0x8C04034C, // 0001 GETMET R1 R1 K76 0xB80E0600, // 0002 GETNGBL R3 K3 0x880C070A, // 0003 GETMBR R3 R3 K10 0x7C040400, // 0004 CALL R1 2 @@ -2862,7 +2856,7 @@ be_local_closure(class_lvh_obj_get_hidden, /* name */ 0x88040101, // 0000 GETMBR R1 R0 K1 0x8C04030F, // 0001 GETMET R1 R1 K15 0xB80E0600, // 0002 GETNGBL R3 K3 - 0x880C0751, // 0003 GETMBR R3 R3 K81 + 0x880C0750, // 0003 GETMBR R3 R3 K80 0x7C040400, // 0004 CALL R1 2 0x80040200, // 0005 RET 1 R1 }) @@ -2888,7 +2882,7 @@ be_local_closure(class_lvh_obj_set_value_font, /* name */ be_str_weak(set_value_font), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C080152, // 0000 GETMET R2 R0 K82 + 0x8C080151, // 0000 GETMET R2 R0 K81 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x80000000, // 0003 RET 0 @@ -2915,7 +2909,7 @@ be_local_closure(class_lvh_obj_get_value_font, /* name */ be_str_weak(get_value_font), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C040153, // 0000 GETMET R1 R0 K83 + 0x8C040152, // 0000 GETMET R1 R0 K82 0x7C040200, // 0001 CALL R1 1 0x80040200, // 0002 RET 1 R1 }) @@ -2942,14 +2936,14 @@ be_local_closure(class_lvh_obj_set_val, /* name */ &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ 0xA40A4E00, // 0000 IMPORT R2 K39 - 0x9002A801, // 0001 SETMBR R0 K84 R1 + 0x9002A601, // 0001 SETMBR R0 K83 R1 0x8C0C0528, // 0002 GETMET R3 R2 K40 0x88140101, // 0003 GETMBR R5 R0 K1 - 0x58180055, // 0004 LDCONST R6 K85 + 0x58180054, // 0004 LDCONST R6 K84 0x7C0C0600, // 0005 CALL R3 3 0x780E0003, // 0006 JMPF R3 #000B 0x880C0101, // 0007 GETMBR R3 R0 K1 - 0x8C0C0755, // 0008 GETMET R3 R3 K85 + 0x8C0C0754, // 0008 GETMET R3 R3 K84 0x5C140200, // 0009 MOVE R5 R1 0x7C0C0400, // 000A CALL R3 2 0x80000000, // 000B RET 0 @@ -2977,8 +2971,8 @@ be_local_closure(class_lvh_obj_set_text_color, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x880C0101, // 0000 GETMBR R3 R0 K1 - 0x8C0C0756, // 0001 GETMET R3 R3 K86 - 0x8C140157, // 0002 GETMET R5 R0 K87 + 0x8C0C0755, // 0001 GETMET R3 R3 K85 + 0x8C140156, // 0002 GETMET R5 R0 K86 0x5C1C0200, // 0003 MOVE R7 R1 0x7C140400, // 0004 CALL R5 2 0x5C180400, // 0005 MOVE R6 R2 @@ -3040,7 +3034,7 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C040358, // 0005 GETMET R1 R1 K88 + 0x8C040357, // 0005 GETMET R1 R1 K87 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -3076,7 +3070,7 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080559, // 0005 GETMET R2 R2 K89 + 0x8C080558, // 0005 GETMET R2 R2 K88 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -3110,45 +3104,45 @@ be_local_closure(class_lvh_obj_set_label_mode, /* name */ &be_const_str_solidified, ( &(const binstruction[43]) { /* code */ 0x4C080000, // 0000 LDNIL R2 - 0x1C0C035A, // 0001 EQ R3 R1 K90 + 0x1C0C0359, // 0001 EQ R3 R1 K89 0x780E0005, // 0002 JMPF R3 #0009 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x8C0C075B, // 0004 GETMET R3 R3 K91 + 0x8C0C075A, // 0004 GETMET R3 R3 K90 0xB8160600, // 0005 GETNGBL R5 K3 - 0x88140B5C, // 0006 GETMBR R5 R5 K92 + 0x88140B5B, // 0006 GETMBR R5 R5 K91 0x7C0C0400, // 0007 CALL R3 2 0x70020017, // 0008 JMP #0021 - 0x1C0C035D, // 0009 EQ R3 R1 K93 + 0x1C0C035C, // 0009 EQ R3 R1 K92 0x780E0002, // 000A JMPF R3 #000E 0xB80E0600, // 000B GETNGBL R3 K3 - 0x8808075E, // 000C GETMBR R2 R3 K94 + 0x8808075D, // 000C GETMBR R2 R3 K93 0x70020012, // 000D JMP #0021 - 0x1C0C035F, // 000E EQ R3 R1 K95 + 0x1C0C035E, // 000E EQ R3 R1 K94 0x780E0002, // 000F JMPF R3 #0013 0xB80E0600, // 0010 GETNGBL R3 K3 - 0x88080760, // 0011 GETMBR R2 R3 K96 + 0x8808075F, // 0011 GETMBR R2 R3 K95 0x7002000D, // 0012 JMP #0021 - 0x1C0C0361, // 0013 EQ R3 R1 K97 + 0x1C0C0360, // 0013 EQ R3 R1 K96 0x780E0002, // 0014 JMPF R3 #0018 0xB80E0600, // 0015 GETNGBL R3 K3 - 0x88080762, // 0016 GETMBR R2 R3 K98 + 0x88080761, // 0016 GETMBR R2 R3 K97 0x70020008, // 0017 JMP #0021 - 0x1C0C0363, // 0018 EQ R3 R1 K99 + 0x1C0C0362, // 0018 EQ R3 R1 K98 0x780E0002, // 0019 JMPF R3 #001D 0xB80E0600, // 001A GETNGBL R3 K3 - 0x88080764, // 001B GETMBR R2 R3 K100 + 0x88080763, // 001B GETMBR R2 R3 K99 0x70020003, // 001C JMP #0021 - 0x1C0C0365, // 001D EQ R3 R1 K101 + 0x1C0C0364, // 001D EQ R3 R1 K100 0x780E0001, // 001E JMPF R3 #0021 0xB80E0600, // 001F GETNGBL R3 K3 - 0x88080766, // 0020 GETMBR R2 R3 K102 + 0x88080765, // 0020 GETMBR R2 R3 K101 0x4C0C0000, // 0021 LDNIL R3 0x200C0403, // 0022 NE R3 R2 R3 0x780E0005, // 0023 JMPF R3 #002A 0x8C0C0114, // 0024 GETMET R3 R0 K20 0x7C0C0200, // 0025 CALL R3 1 0x880C0111, // 0026 GETMBR R3 R0 K17 - 0x8C0C0767, // 0027 GETMET R3 R3 K103 + 0x8C0C0766, // 0027 GETMET R3 R3 K102 0x5C140400, // 0028 MOVE R5 R2 0x7C0C0400, // 0029 CALL R3 2 0x80000000, // 002A RET 0 @@ -3177,39 +3171,39 @@ be_local_closure(class_lvh_obj_setmember, /* name */ ( &(const binstruction[164]) { /* code */ 0xA40E0A00, // 0000 IMPORT R3 K5 0xA4124E00, // 0001 IMPORT R4 K39 - 0x8C140768, // 0002 GETMET R5 R3 K104 + 0x8C140767, // 0002 GETMET R5 R3 K103 0x5C1C0200, // 0003 MOVE R7 R1 - 0x58200069, // 0004 LDCONST R8 K105 + 0x58200068, // 0004 LDCONST R8 K104 0x7C140600, // 0005 CALL R5 3 0x74160004, // 0006 JMPT R5 #000C - 0x8C140768, // 0007 GETMET R5 R3 K104 + 0x8C140767, // 0007 GETMET R5 R3 K103 0x5C1C0200, // 0008 MOVE R7 R1 - 0x5820006A, // 0009 LDCONST R8 K106 + 0x58200069, // 0009 LDCONST R8 K105 0x7C140600, // 000A CALL R5 3 0x78160000, // 000B JMPF R5 #000D 0x80000A00, // 000C RET 0 0x60140004, // 000D GETGBL R5 G4 0x5C180400, // 000E MOVE R6 R2 0x7C140200, // 000F CALL R5 1 - 0x1C140B6B, // 0010 EQ R5 R5 K107 + 0x1C140B6A, // 0010 EQ R5 R5 K106 0x78160006, // 0011 JMPF R5 #0019 - 0xA416D800, // 0012 IMPORT R5 K108 + 0xA416D600, // 0012 IMPORT R5 K107 0x60180009, // 0013 GETGBL R6 G9 - 0x8C1C0B6D, // 0014 GETMET R7 R5 K109 + 0x8C1C0B6C, // 0014 GETMET R7 R5 K108 0x5C240400, // 0015 MOVE R9 R2 0x7C1C0400, // 0016 CALL R7 2 0x7C180200, // 0017 CALL R6 1 0x5C080C00, // 0018 MOVE R2 R6 - 0x8C14076E, // 0019 GETMET R5 R3 K110 + 0x8C14076D, // 0019 GETMET R5 R3 K109 0x5C1C0200, // 001A MOVE R7 R1 - 0x5820006F, // 001B LDCONST R8 K111 + 0x5820006E, // 001B LDCONST R8 K110 0x7C140600, // 001C CALL R5 3 0x78160009, // 001D JMPF R5 #0028 0x5415FFFD, // 001E LDINT R5 -2 - 0x40168005, // 001F CONNECT R5 K64 R5 + 0x40162C05, // 001F CONNECT R5 K22 R5 0x94040205, // 0020 GETIDX R1 R1 R5 0xB8160600, // 0021 GETNGBL R5 K3 - 0x8C140B70, // 0022 GETMET R5 R5 K112 + 0x8C140B6F, // 0022 GETMET R5 R5 K111 0x601C0009, // 0023 GETGBL R7 G9 0x5C200400, // 0024 MOVE R8 R2 0x7C1C0200, // 0025 CALL R7 1 @@ -3219,13 +3213,13 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x6018000C, // 0029 GETGBL R6 G12 0x5C1C0200, // 002A MOVE R7 R1 0x7C180200, // 002B CALL R6 1 - 0x28180D71, // 002C GE R6 R6 K113 + 0x28180D70, // 002C GE R6 R6 K112 0x781A001F, // 002D JMPF R6 #004E - 0x8C180772, // 002E GETMET R6 R3 K114 + 0x8C180771, // 002E GETMET R6 R3 K113 0x5421FFFE, // 002F LDINT R8 -1 0x94200208, // 0030 GETIDX R8 R1 R8 0x7C180400, // 0031 CALL R6 2 - 0x8C1C0772, // 0032 GETMET R7 R3 K114 + 0x8C1C0771, // 0032 GETMET R7 R3 K113 0x5425FFFD, // 0033 LDINT R9 -2 0x94240209, // 0034 GETIDX R9 R1 R9 0x7C1C0400, // 0035 CALL R7 2 @@ -3243,32 +3237,32 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x7822000B, // 0041 JMPF R8 #004E 0x60200009, // 0042 GETGBL R8 G9 0x5425FFFD, // 0043 LDINT R9 -2 - 0x40241373, // 0044 CONNECT R9 R9 K115 + 0x40241372, // 0044 CONNECT R9 R9 K114 0x94240209, // 0045 GETIDX R9 R1 R9 0x7C200200, // 0046 CALL R8 1 0x5425FFFC, // 0047 LDINT R9 -3 - 0x40268009, // 0048 CONNECT R9 K64 R9 + 0x40262C09, // 0048 CONNECT R9 K22 R9 0x94040209, // 0049 GETIDX R1 R1 R9 - 0x8C240174, // 004A GETMET R9 R0 K116 + 0x8C240173, // 004A GETMET R9 R0 K115 0x5C2C1000, // 004B MOVE R11 R8 0x7C240400, // 004C CALL R9 2 0x5C141200, // 004D MOVE R5 R9 - 0x88180175, // 004E GETMBR R6 R0 K117 - 0x8C180D42, // 004F GETMET R6 R6 K66 + 0x88180174, // 004E GETMBR R6 R0 K116 + 0x8C180D41, // 004F GETMET R6 R6 K65 0x5C200200, // 0050 MOVE R8 R1 0x7C180400, // 0051 CALL R6 2 0x4C1C0000, // 0052 LDNIL R7 0x20180C07, // 0053 NE R6 R6 R7 0x781A0000, // 0054 JMPF R6 #0056 0x80000C00, // 0055 RET 0 - 0x8C180976, // 0056 GETMET R6 R4 K118 + 0x8C180975, // 0056 GETMET R6 R4 K117 0x5C200000, // 0057 MOVE R8 R0 - 0x0026D201, // 0058 ADD R9 K105 R1 + 0x0026D001, // 0058 ADD R9 K104 R1 0x7C180600, // 0059 CALL R6 3 0x601C0004, // 005A GETGBL R7 G4 0x5C200C00, // 005B MOVE R8 R6 0x7C1C0200, // 005C CALL R7 1 - 0x1C1C0F77, // 005D EQ R7 R7 K119 + 0x1C1C0F76, // 005D EQ R7 R7 K118 0x781E000A, // 005E JMPF R7 #006A 0x5C1C0C00, // 005F MOVE R7 R6 0x5C200000, // 0060 MOVE R8 R0 @@ -3278,50 +3272,50 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x782A0001, // 0064 JMPF R10 #0067 0x5C280A00, // 0065 MOVE R10 R5 0x70020000, // 0066 JMP #0068 - 0x58280040, // 0067 LDCONST R10 K64 + 0x58280016, // 0067 LDCONST R10 K22 0x7C1C0600, // 0068 CALL R7 3 0x80000E00, // 0069 RET 0 - 0x881C0178, // 006A GETMBR R7 R0 K120 - 0x8C1C0F42, // 006B GETMET R7 R7 K66 + 0x881C0177, // 006A GETMBR R7 R0 K119 + 0x8C1C0F41, // 006B GETMET R7 R7 K65 0x5C240200, // 006C MOVE R9 R1 0x5C280200, // 006D MOVE R10 R1 0x7C1C0600, // 006E CALL R7 3 0x5C040E00, // 006F MOVE R1 R7 - 0x8C1C0179, // 0070 GETMET R7 R0 K121 + 0x8C1C0178, // 0070 GETMET R7 R0 K120 0x5C240200, // 0071 MOVE R9 R1 0x7C1C0400, // 0072 CALL R7 2 0x781E0003, // 0073 JMPF R7 #0078 - 0x8C1C0157, // 0074 GETMET R7 R0 K87 + 0x8C1C0156, // 0074 GETMET R7 R0 K86 0x5C240400, // 0075 MOVE R9 R2 0x7C1C0400, // 0076 CALL R7 2 0x5C080E00, // 0077 MOVE R2 R7 0x4C1C0000, // 0078 LDNIL R7 0x1C1C0A07, // 0079 EQ R7 R5 R7 0x781E000E, // 007A JMPF R7 #008A - 0x8C1C0976, // 007B GETMET R7 R4 K118 + 0x8C1C0975, // 007B GETMET R7 R4 K117 0x88240101, // 007C GETMBR R9 R0 K1 - 0x002AD201, // 007D ADD R10 K105 R1 + 0x002AD001, // 007D ADD R10 K104 R1 0x7C1C0600, // 007E CALL R7 3 0x5C180E00, // 007F MOVE R6 R7 0x601C0004, // 0080 GETGBL R7 G4 0x5C200C00, // 0081 MOVE R8 R6 0x7C1C0200, // 0082 CALL R7 1 - 0x1C1C0F77, // 0083 EQ R7 R7 K119 + 0x1C1C0F76, // 0083 EQ R7 R7 K118 0x781E0004, // 0084 JMPF R7 #008A 0x5C1C0C00, // 0085 MOVE R7 R6 0x88200101, // 0086 GETMBR R8 R0 K1 0x5C240400, // 0087 MOVE R9 R2 0x7C1C0400, // 0088 CALL R7 2 0x80040E00, // 0089 RET 1 R7 - 0x8C1C0976, // 008A GETMET R7 R4 K118 + 0x8C1C0975, // 008A GETMET R7 R4 K117 0x88240101, // 008B GETMBR R9 R0 K1 - 0x002AF401, // 008C ADD R10 K122 R1 + 0x002AF201, // 008C ADD R10 K121 R1 0x7C1C0600, // 008D CALL R7 3 0x5C180E00, // 008E MOVE R6 R7 0x601C0004, // 008F GETGBL R7 G4 0x5C200C00, // 0090 MOVE R8 R6 0x7C1C0200, // 0091 CALL R7 1 - 0x1C1C0F77, // 0092 EQ R7 R7 K119 + 0x1C1C0F76, // 0092 EQ R7 R7 K118 0x781E000A, // 0093 JMPF R7 #009F 0x5C1C0C00, // 0094 MOVE R7 R6 0x88200101, // 0095 GETMBR R8 R0 K1 @@ -3331,11 +3325,11 @@ be_local_closure(class_lvh_obj_setmember, /* name */ 0x782A0001, // 0099 JMPF R10 #009C 0x5C280A00, // 009A MOVE R10 R5 0x70020000, // 009B JMP #009D - 0x58280040, // 009C LDCONST R10 K64 + 0x58280016, // 009C LDCONST R10 K22 0x7C1C0600, // 009D CALL R7 3 0x80040E00, // 009E RET 1 R7 0x601C0001, // 009F GETGBL R7 G1 - 0x5820007B, // 00A0 LDCONST R8 K123 + 0x5820007A, // 00A0 LDCONST R8 K122 0x5C240200, // 00A1 MOVE R9 R1 0x7C1C0400, // 00A2 CALL R7 2 0x80000000, // 00A3 RET 0 @@ -3366,13 +3360,13 @@ be_local_closure(class_lvh_obj_set_enabled, /* name */ 0x88080101, // 0001 GETMBR R2 R0 K1 0x8C08050B, // 0002 GETMET R2 R2 K11 0xB8120600, // 0003 GETNGBL R4 K3 - 0x8810094E, // 0004 GETMBR R4 R4 K78 + 0x8810094D, // 0004 GETMBR R4 R4 K77 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C 0x88080101, // 0007 GETMBR R2 R0 K1 0x8C080509, // 0008 GETMET R2 R2 K9 0xB8120600, // 0009 GETNGBL R4 K3 - 0x8810094E, // 000A GETMBR R4 R4 K78 + 0x8810094D, // 000A GETMBR R4 R4 K77 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -3398,9 +3392,9 @@ be_local_closure(class_lvh_obj_get_align, /* name */ be_str_weak(get_align), &be_const_str_solidified, ( &(const binstruction[33]) { /* code */ - 0x1C080340, // 0000 EQ R2 R1 K64 + 0x1C080316, // 0000 EQ R2 R1 K22 0x780A0000, // 0001 JMPF R2 #0003 - 0x58040040, // 0002 LDCONST R1 K64 + 0x58040016, // 0002 LDCONST R1 K22 0x88080111, // 0003 GETMBR R2 R0 K17 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 @@ -3408,7 +3402,7 @@ be_local_closure(class_lvh_obj_get_align, /* name */ 0x4C080000, // 0007 LDNIL R2 0x80040400, // 0008 RET 1 R2 0x88080111, // 0009 GETMBR R2 R0 K17 - 0x8C08057C, // 000A GETMET R2 R2 K124 + 0x8C08057B, // 000A GETMET R2 R2 K123 0x5C100200, // 000B MOVE R4 R1 0x7C080400, // 000C CALL R2 2 0xB80E0600, // 000D GETNGBL R3 K3 @@ -3459,7 +3453,7 @@ be_local_closure(class_lvh_obj_get_pad_left, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C04037D, // 0005 GETMET R1 R1 K125 + 0x8C04037C, // 0005 GETMET R1 R1 K124 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -3493,7 +3487,7 @@ be_local_closure(class_lvh_obj_set_value_ofs_x, /* name */ 0x8C080114, // 0000 GETMET R2 R0 K20 0x7C080200, // 0001 CALL R2 1 0x88080111, // 0002 GETMBR R2 R0 K17 - 0x8C08057E, // 0003 GETMET R2 R2 K126 + 0x8C08057D, // 0003 GETMET R2 R2 K125 0x60100009, // 0004 GETGBL R4 G9 0x5C140200, // 0005 MOVE R5 R1 0x7C100200, // 0006 CALL R4 1 @@ -3560,14 +3554,14 @@ be_local_closure(class_lvh_obj_member, /* name */ ( &(const binstruction[125]) { /* code */ 0xA40A0A00, // 0000 IMPORT R2 K5 0xA40E4E00, // 0001 IMPORT R3 K39 - 0x8C100568, // 0002 GETMET R4 R2 K104 + 0x8C100567, // 0002 GETMET R4 R2 K103 0x5C180200, // 0003 MOVE R6 R1 - 0x581C0069, // 0004 LDCONST R7 K105 + 0x581C0068, // 0004 LDCONST R7 K104 0x7C100600, // 0005 CALL R4 3 0x74120004, // 0006 JMPT R4 #000C - 0x8C100568, // 0007 GETMET R4 R2 K104 + 0x8C100567, // 0007 GETMET R4 R2 K103 0x5C180200, // 0008 MOVE R6 R1 - 0x581C006A, // 0009 LDCONST R7 K106 + 0x581C0069, // 0009 LDCONST R7 K105 0x7C100600, // 000A CALL R4 3 0x78120000, // 000B JMPF R4 #000D 0x80000800, // 000C RET 0 @@ -3575,13 +3569,13 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x6014000C, // 000E GETGBL R5 G12 0x5C180200, // 000F MOVE R6 R1 0x7C140200, // 0010 CALL R5 1 - 0x28140B7F, // 0011 GE R5 R5 K127 + 0x28140B70, // 0011 GE R5 R5 K112 0x7816001F, // 0012 JMPF R5 #0033 - 0x8C140572, // 0013 GETMET R5 R2 K114 + 0x8C140571, // 0013 GETMET R5 R2 K113 0x541DFFFE, // 0014 LDINT R7 -1 0x941C0207, // 0015 GETIDX R7 R1 R7 0x7C140400, // 0016 CALL R5 2 - 0x8C180572, // 0017 GETMET R6 R2 K114 + 0x8C180571, // 0017 GETMET R6 R2 K113 0x5421FFFD, // 0018 LDINT R8 -2 0x94200208, // 0019 GETIDX R8 R1 R8 0x7C180400, // 001A CALL R6 2 @@ -3599,32 +3593,32 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x781E000B, // 0026 JMPF R7 #0033 0x601C0009, // 0027 GETGBL R7 G9 0x5421FFFD, // 0028 LDINT R8 -2 - 0x40201173, // 0029 CONNECT R8 R8 K115 + 0x40201172, // 0029 CONNECT R8 R8 K114 0x94200208, // 002A GETIDX R8 R1 R8 0x7C1C0200, // 002B CALL R7 1 0x5421FFFC, // 002C LDINT R8 -3 - 0x40230008, // 002D CONNECT R8 K128 R8 + 0x40222C08, // 002D CONNECT R8 K22 R8 0x94040208, // 002E GETIDX R1 R1 R8 - 0x8C200174, // 002F GETMET R8 R0 K116 + 0x8C200173, // 002F GETMET R8 R0 K115 0x5C280E00, // 0030 MOVE R10 R7 0x7C200400, // 0031 CALL R8 2 0x5C101000, // 0032 MOVE R4 R8 - 0x88140175, // 0033 GETMBR R5 R0 K117 - 0x8C140B42, // 0034 GETMET R5 R5 K66 + 0x88140174, // 0033 GETMBR R5 R0 K116 + 0x8C140B41, // 0034 GETMET R5 R5 K65 0x5C1C0200, // 0035 MOVE R7 R1 0x7C140400, // 0036 CALL R5 2 0x4C180000, // 0037 LDNIL R6 0x20140A06, // 0038 NE R5 R5 R6 0x78160000, // 0039 JMPF R5 #003B 0x80000A00, // 003A RET 0 - 0x8C140776, // 003B GETMET R5 R3 K118 + 0x8C140775, // 003B GETMET R5 R3 K117 0x5C1C0000, // 003C MOVE R7 R0 - 0x0022D401, // 003D ADD R8 K106 R1 + 0x0022D201, // 003D ADD R8 K105 R1 0x7C140600, // 003E CALL R5 3 0x60180004, // 003F GETGBL R6 G4 0x5C1C0A00, // 0040 MOVE R7 R5 0x7C180200, // 0041 CALL R6 1 - 0x1C180D77, // 0042 EQ R6 R6 K119 + 0x1C180D76, // 0042 EQ R6 R6 K118 0x781A0009, // 0043 JMPF R6 #004E 0x5C180A00, // 0044 MOVE R6 R5 0x5C1C0000, // 0045 MOVE R7 R0 @@ -3633,11 +3627,11 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x78220001, // 0048 JMPF R8 #004B 0x5C200800, // 0049 MOVE R8 R4 0x70020000, // 004A JMP #004C - 0x58200080, // 004B LDCONST R8 K128 + 0x58200016, // 004B LDCONST R8 K22 0x7C180400, // 004C CALL R6 2 0x80040C00, // 004D RET 1 R6 - 0x88180178, // 004E GETMBR R6 R0 K120 - 0x8C180D42, // 004F GETMET R6 R6 K66 + 0x88180177, // 004E GETMBR R6 R0 K119 + 0x8C180D41, // 004F GETMET R6 R6 K65 0x5C200200, // 0050 MOVE R8 R1 0x5C240200, // 0051 MOVE R9 R1 0x7C180600, // 0052 CALL R6 3 @@ -3645,29 +3639,29 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x4C180000, // 0054 LDNIL R6 0x1C180806, // 0055 EQ R6 R4 R6 0x781A000D, // 0056 JMPF R6 #0065 - 0x8C180776, // 0057 GETMET R6 R3 K118 + 0x8C180775, // 0057 GETMET R6 R3 K117 0x88200101, // 0058 GETMBR R8 R0 K1 - 0x0026D401, // 0059 ADD R9 K106 R1 + 0x0026D201, // 0059 ADD R9 K105 R1 0x7C180600, // 005A CALL R6 3 0x5C140C00, // 005B MOVE R5 R6 0x60180004, // 005C GETGBL R6 G4 0x5C1C0A00, // 005D MOVE R7 R5 0x7C180200, // 005E CALL R6 1 - 0x1C180D77, // 005F EQ R6 R6 K119 + 0x1C180D76, // 005F EQ R6 R6 K118 0x781A0003, // 0060 JMPF R6 #0065 0x5C180A00, // 0061 MOVE R6 R5 0x881C0101, // 0062 GETMBR R7 R0 K1 0x7C180200, // 0063 CALL R6 1 0x80040C00, // 0064 RET 1 R6 - 0x8C180776, // 0065 GETMET R6 R3 K118 + 0x8C180775, // 0065 GETMET R6 R3 K117 0x88200101, // 0066 GETMBR R8 R0 K1 - 0x00270201, // 0067 ADD R9 K129 R1 + 0x0026FC01, // 0067 ADD R9 K126 R1 0x7C180600, // 0068 CALL R6 3 0x5C140C00, // 0069 MOVE R5 R6 0x60180004, // 006A GETGBL R6 G4 0x5C1C0A00, // 006B MOVE R7 R5 0x7C180200, // 006C CALL R6 1 - 0x1C180D77, // 006D EQ R6 R6 K119 + 0x1C180D76, // 006D EQ R6 R6 K118 0x781A0009, // 006E JMPF R6 #0079 0x5C180A00, // 006F MOVE R6 R5 0x881C0101, // 0070 GETMBR R7 R0 K1 @@ -3676,11 +3670,11 @@ be_local_closure(class_lvh_obj_member, /* name */ 0x78220001, // 0073 JMPF R8 #0076 0x5C200800, // 0074 MOVE R8 R4 0x70020000, // 0075 JMP #0077 - 0x58200080, // 0076 LDCONST R8 K128 + 0x58200016, // 0076 LDCONST R8 K22 0x7C180400, // 0077 CALL R6 2 0x80040C00, // 0078 RET 1 R6 0x6018000B, // 0079 GETGBL R6 G11 - 0x581C0082, // 007A LDCONST R7 K130 + 0x581C007F, // 007A LDCONST R7 K127 0x7C180200, // 007B CALL R6 1 0x80040C00, // 007C RET 1 R6 }) @@ -3733,7 +3727,7 @@ be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */ 0x8C080114, // 0000 GETMET R2 R0 K20 0x7C080200, // 0001 CALL R2 1 0x88080111, // 0002 GETMBR R2 R0 K17 - 0x8C080583, // 0003 GETMET R2 R2 K131 + 0x8C080580, // 0003 GETMET R2 R2 K128 0x60100009, // 0004 GETGBL R4 G9 0x5C140200, // 0005 MOVE R5 R1 0x7C100200, // 0006 CALL R4 1 @@ -3767,7 +3761,7 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */ 0x20080403, // 0002 NE R2 R2 R3 0x780A0009, // 0003 JMPF R2 #000E 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x8C080584, // 0005 GETMET R2 R2 K132 + 0x8C080581, // 0005 GETMET R2 R2 K129 0x60100009, // 0006 GETGBL R4 G9 0x5C140200, // 0007 MOVE R5 R1 0x7C100200, // 0008 CALL R4 1 @@ -3804,13 +3798,13 @@ be_local_closure(class_lvh_obj_set_hidden, /* name */ 0x88080101, // 0001 GETMBR R2 R0 K1 0x8C080538, // 0002 GETMET R2 R2 K56 0xB8120600, // 0003 GETNGBL R4 K3 - 0x88100951, // 0004 GETMBR R4 R4 K81 + 0x88100950, // 0004 GETMBR R4 R4 K80 0x7C080400, // 0005 CALL R2 2 0x70020004, // 0006 JMP #000C 0x88080101, // 0007 GETMBR R2 R0 K1 0x8C080539, // 0008 GETMET R2 R2 K57 0xB8120600, // 0009 GETNGBL R4 K3 - 0x88100951, // 000A GETMBR R4 R4 K81 + 0x88100950, // 000A GETMBR R4 R4 K80 0x7C080400, // 000B CALL R2 2 0x80000000, // 000C RET 0 }) @@ -3839,19 +3833,19 @@ be_local_closure(class_lvh_obj_register_event_cb, /* name */ 0x88040132, // 0000 GETMBR R1 R0 K50 0x8804033A, // 0001 GETMBR R1 R1 K58 0x60080010, // 0002 GETGBL R2 G16 - 0x880C0141, // 0003 GETMBR R3 R0 K65 - 0x8C0C0785, // 0004 GETMET R3 R3 K133 + 0x880C0140, // 0003 GETMBR R3 R0 K64 + 0x8C0C0782, // 0004 GETMET R3 R3 K130 0x7C0C0200, // 0005 CALL R3 1 0x7C080200, // 0006 CALL R2 1 0xA8020006, // 0007 EXBLK 0 #000F 0x5C0C0400, // 0008 MOVE R3 R2 0x7C0C0000, // 0009 CALL R3 0 - 0x8C100386, // 000A GETMET R4 R1 K134 + 0x8C100383, // 000A GETMET R4 R1 K131 0x5C180000, // 000B MOVE R6 R0 0x5C1C0600, // 000C MOVE R7 R3 0x7C100600, // 000D CALL R4 3 0x7001FFF8, // 000E JMP #0008 - 0x58080087, // 000F LDCONST R2 K135 + 0x58080084, // 000F LDCONST R2 K132 0xAC080200, // 0010 CATCH R2 1 0 0xB0080000, // 0011 RAISE 2 R0 R0 0x80000000, // 0012 RET 0 @@ -3878,16 +3872,16 @@ be_local_closure(class_lvh_obj_set_text_font, /* name */ be_str_weak(set_text_font), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ - 0x8C080188, // 0000 GETMET R2 R0 K136 + 0x8C080185, // 0000 GETMET R2 R0 K133 0x5C100200, // 0001 MOVE R4 R1 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x200C0403, // 0004 NE R3 R2 R3 0x780E0004, // 0005 JMPF R3 #000B 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x8C0C0789, // 0007 GETMET R3 R3 K137 + 0x8C0C0786, // 0007 GETMET R3 R3 K134 0x5C140400, // 0008 MOVE R5 R2 - 0x58180040, // 0009 LDCONST R6 K64 + 0x58180016, // 0009 LDCONST R6 K22 0x7C0C0600, // 000A CALL R3 3 0x80000000, // 000B RET 0 }) @@ -3918,7 +3912,7 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */ 0x20040202, // 0002 NE R1 R1 R2 0x78060007, // 0003 JMPF R1 #000C 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x8C04038A, // 0005 GETMET R1 R1 K138 + 0x8C040387, // 0005 GETMET R1 R1 K135 0x880C0100, // 0006 GETMBR R3 R0 K0 0xB8120600, // 0007 GETNGBL R4 K3 0x88100904, // 0008 GETMBR R4 R4 K4 @@ -3974,7 +3968,7 @@ be_local_closure(class_lvh_obj_get_val, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x8C04038B, // 0001 GETMET R1 R1 K139 + 0x8C040388, // 0001 GETMET R1 R1 K136 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -4000,7 +3994,7 @@ be_local_closure(class_lvh_obj_post_init, /* name */ be_str_weak(post_init), &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ - 0x8C04018C, // 0000 GETMET R1 R0 K140 + 0x8C040189, // 0000 GETMET R1 R0 K137 0x7C040200, // 0001 CALL R1 1 0x80000000, // 0002 RET 0 }) @@ -6371,8 +6365,8 @@ be_local_class(lvh_led, })), be_str_weak(lvh_led) ); -// compact class 'lvh_dropdown' ktab size: 26, total: 37 (saved 88 bytes) -static const bvalue be_ktab_class_lvh_dropdown[26] = { +// compact class 'lvh_dropdown' ktab size: 25, total: 37 (saved 96 bytes) +static const bvalue be_ktab_class_lvh_dropdown[25] = { /* K0 */ be_nested_str_weak(_lv_obj), /* K1 */ be_nested_str_weak(get_selected), /* K2 */ be_nested_str_weak(set_text), @@ -6390,15 +6384,14 @@ static const bvalue be_ktab_class_lvh_dropdown[26] = { /* K14 */ be_nested_str_weak(SYMBOL_DOWN), /* K15 */ be_nested_str_weak(set_symbol), /* K16 */ be_nested_str_weak(get_dir), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(_val), - /* K19 */ be_nested_str_weak(set_selected), - /* K20 */ be_nested_str_weak(get_text), - /* K21 */ be_nested_str_weak(resize), - /* K22 */ be_nested_str_weak(get_selected_str), - /* K23 */ be_nested_str_weak(_buffer), - /* K24 */ be_nested_str_weak(remove_trailing_zeroes), - /* K25 */ be_nested_str_weak(asstring), + /* K17 */ be_nested_str_weak(_val), + /* K18 */ be_nested_str_weak(set_selected), + /* K19 */ be_nested_str_weak(get_text), + /* K20 */ be_nested_str_weak(resize), + /* K21 */ be_nested_str_weak(get_selected_str), + /* K22 */ be_nested_str_weak(_buffer), + /* K23 */ be_nested_str_weak(remove_trailing_zeroes), + /* K24 */ be_nested_str_weak(asstring), }; @@ -6542,7 +6535,7 @@ be_local_closure(class_lvh_dropdown_get_direction, /* name */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x8C040310, // 0001 GETMET R1 R1 K16 0x7C040200, // 0002 CALL R1 1 - 0x58080011, // 0003 LDCONST R2 K17 + 0x58080003, // 0003 LDCONST R2 K3 0x600C000C, // 0004 GETGBL R3 G12 0x88100106, // 0005 GETMBR R4 R0 K6 0x7C0C0200, // 0006 CALL R3 1 @@ -6609,9 +6602,9 @@ be_local_closure(class_lvh_dropdown_set_val, /* name */ be_str_weak(set_val), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0x90022401, // 0000 SETMBR R0 K18 R1 + 0x90022201, // 0000 SETMBR R0 K17 R1 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x8C080513, // 0002 GETMET R2 R2 K19 + 0x8C080512, // 0002 GETMET R2 R2 K18 0x5C100200, // 0003 MOVE R4 R1 0x7C080400, // 0004 CALL R2 2 0x80000000, // 0005 RET 0 @@ -6639,27 +6632,27 @@ be_local_closure(class_lvh_dropdown_get_text, /* name */ &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040314, // 0001 GETMET R1 R1 K20 + 0x8C040313, // 0001 GETMET R1 R1 K19 0x7C040200, // 0002 CALL R1 1 0x4C080000, // 0003 LDNIL R2 0x1C080202, // 0004 EQ R2 R1 R2 0x780A0012, // 0005 JMPF R2 #0019 0x60080015, // 0006 GETGBL R2 G21 0x7C080000, // 0007 CALL R2 0 - 0x8C080515, // 0008 GETMET R2 R2 K21 + 0x8C080514, // 0008 GETMET R2 R2 K20 0x541200FF, // 0009 LDINT R4 256 0x7C080400, // 000A CALL R2 2 0x880C0100, // 000B GETMBR R3 R0 K0 - 0x8C0C0716, // 000C GETMET R3 R3 K22 - 0x8C140517, // 000D GETMET R5 R2 K23 + 0x8C0C0715, // 000C GETMET R3 R3 K21 + 0x8C140516, // 000D GETMET R5 R2 K22 0x7C140200, // 000E CALL R5 1 0x541A00FF, // 000F LDINT R6 256 0x7C0C0600, // 0010 CALL R3 3 - 0x8C0C0118, // 0011 GETMET R3 R0 K24 + 0x8C0C0117, // 0011 GETMET R3 R0 K23 0x5C140400, // 0012 MOVE R5 R2 0x7C0C0400, // 0013 CALL R3 2 0x5C080600, // 0014 MOVE R2 R3 - 0x8C0C0519, // 0015 GETMET R3 R2 K25 + 0x8C0C0518, // 0015 GETMET R3 R2 K24 0x7C0C0200, // 0016 CALL R3 1 0x80040600, // 0017 RET 1 R3 0x70020000, // 0018 JMP #001A @@ -6689,7 +6682,7 @@ be_local_closure(class_lvh_dropdown_get_show_selected, /* name */ &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040314, // 0001 GETMET R1 R1 K20 + 0x8C040313, // 0001 GETMET R1 R1 K19 0x7C040200, // 0002 CALL R1 1 0x4C080000, // 0003 LDNIL R2 0x1C080202, // 0004 EQ R2 R1 R2 @@ -7405,8 +7398,8 @@ be_local_class(lvh_scale, })), be_str_weak(lvh_scale) ); -// compact class 'lvh_scale_section' ktab size: 43, total: 57 (saved 112 bytes) -static const bvalue be_ktab_class_lvh_scale_section[43] = { +// compact class 'lvh_scale_section' ktab size: 42, total: 57 (saved 120 bytes) +static const bvalue be_ktab_class_lvh_scale_section[42] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(introspect), /* K2 */ be_nested_str_weak(startswith), @@ -7435,21 +7428,20 @@ static const bvalue be_ktab_class_lvh_scale_section[43] = { /* K25 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_), /* K26 */ be_nested_str_weak(_lv_obj), /* K27 */ be_nested_str_weak(_min), - /* K28 */ be_const_int(0), - /* K29 */ be_nested_str_weak(_max), - /* K30 */ be_nested_str_weak(_parent_lvh), - /* K31 */ be_nested_str_weak(_page), - /* K32 */ be_nested_str_weak(_oh), - /* K33 */ be_nested_str_weak(lvh_scale), - /* K34 */ be_nested_str_weak(add_section), - /* K35 */ be_nested_str_weak(style), - /* K36 */ be_nested_str_weak(set_style), - /* K37 */ be_nested_str_weak(PART_MAIN), - /* K38 */ be_nested_str_weak(PART_INDICATOR), - /* K39 */ be_nested_str_weak(PART_ITEMS), - /* K40 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), - /* K41 */ be_nested_str_weak(set_range), - /* K42 */ be_nested_str_weak(del), + /* K28 */ be_nested_str_weak(_max), + /* K29 */ be_nested_str_weak(_parent_lvh), + /* K30 */ be_nested_str_weak(_page), + /* K31 */ be_nested_str_weak(_oh), + /* K32 */ be_nested_str_weak(lvh_scale), + /* K33 */ be_nested_str_weak(add_section), + /* K34 */ be_nested_str_weak(style), + /* K35 */ be_nested_str_weak(set_style), + /* K36 */ be_nested_str_weak(PART_MAIN), + /* K37 */ be_nested_str_weak(PART_INDICATOR), + /* K38 */ be_nested_str_weak(PART_ITEMS), + /* K39 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), + /* K40 */ be_nested_str_weak(set_range), + /* K41 */ be_nested_str_weak(del), }; @@ -7638,53 +7630,53 @@ be_local_closure(class_lvh_scale_section_post_init, /* name */ ( &(const binstruction[51]) { /* code */ 0x4C040000, // 0000 LDNIL R1 0x90023401, // 0001 SETMBR R0 K26 R1 - 0x9002371C, // 0002 SETMBR R0 K27 K28 - 0x90023B1C, // 0003 SETMBR R0 K29 K28 + 0x90023707, // 0002 SETMBR R0 K27 K7 + 0x90023907, // 0003 SETMBR R0 K28 K7 0x6004000F, // 0004 GETGBL R1 G15 - 0x8808011E, // 0005 GETMBR R2 R0 K30 - 0x880C011F, // 0006 GETMBR R3 R0 K31 - 0x880C0720, // 0007 GETMBR R3 R3 K32 - 0x880C0721, // 0008 GETMBR R3 R3 K33 + 0x8808011D, // 0005 GETMBR R2 R0 K29 + 0x880C011E, // 0006 GETMBR R3 R0 K30 + 0x880C071F, // 0007 GETMBR R3 R3 K31 + 0x880C0720, // 0008 GETMBR R3 R3 K32 0x7C040400, // 0009 CALL R1 2 0x78060023, // 000A JMPF R1 #002F - 0x8804011E, // 000B GETMBR R1 R0 K30 + 0x8804011D, // 000B GETMBR R1 R0 K29 0x8804031A, // 000C GETMBR R1 R1 K26 - 0x8C040322, // 000D GETMET R1 R1 K34 + 0x8C040321, // 000D GETMET R1 R1 K33 0x7C040200, // 000E CALL R1 1 0x90023401, // 000F SETMBR R0 K26 R1 0xB8061000, // 0010 GETNGBL R1 K8 - 0x8C040323, // 0011 GETMET R1 R1 K35 + 0x8C040322, // 0011 GETMET R1 R1 K34 0x7C040200, // 0012 CALL R1 1 0x90022201, // 0013 SETMBR R0 K17 R1 0x8804011A, // 0014 GETMBR R1 R0 K26 - 0x8C040324, // 0015 GETMET R1 R1 K36 + 0x8C040323, // 0015 GETMET R1 R1 K35 0xB80E1000, // 0016 GETNGBL R3 K8 - 0x880C0725, // 0017 GETMBR R3 R3 K37 + 0x880C0724, // 0017 GETMBR R3 R3 K36 0x88100111, // 0018 GETMBR R4 R0 K17 0x7C040600, // 0019 CALL R1 3 0xB8061000, // 001A GETNGBL R1 K8 - 0x8C040323, // 001B GETMET R1 R1 K35 + 0x8C040322, // 001B GETMET R1 R1 K34 0x7C040200, // 001C CALL R1 1 0x90022401, // 001D SETMBR R0 K18 R1 0x8804011A, // 001E GETMBR R1 R0 K26 - 0x8C040324, // 001F GETMET R1 R1 K36 + 0x8C040323, // 001F GETMET R1 R1 K35 0xB80E1000, // 0020 GETNGBL R3 K8 - 0x880C0726, // 0021 GETMBR R3 R3 K38 + 0x880C0725, // 0021 GETMBR R3 R3 K37 0x88100112, // 0022 GETMBR R4 R0 K18 0x7C040600, // 0023 CALL R1 3 0xB8061000, // 0024 GETNGBL R1 K8 - 0x8C040323, // 0025 GETMET R1 R1 K35 + 0x8C040322, // 0025 GETMET R1 R1 K34 0x7C040200, // 0026 CALL R1 1 0x90022601, // 0027 SETMBR R0 K19 R1 0x8804011A, // 0028 GETMBR R1 R0 K26 - 0x8C040324, // 0029 GETMET R1 R1 K36 + 0x8C040323, // 0029 GETMET R1 R1 K35 0xB80E1000, // 002A GETNGBL R3 K8 - 0x880C0727, // 002B GETMBR R3 R3 K39 + 0x880C0726, // 002B GETMBR R3 R3 K38 0x88100113, // 002C GETMBR R4 R0 K19 0x7C040600, // 002D CALL R1 3 0x70020002, // 002E JMP #0032 0x60040001, // 002F GETGBL R1 G1 - 0x58080028, // 0030 LDCONST R2 K40 + 0x58080027, // 0030 LDCONST R2 K39 0x7C040200, // 0031 CALL R1 1 0x80000000, // 0032 RET 0 }) @@ -7713,11 +7705,11 @@ be_local_closure(class_lvh_scale_section_set_min, /* name */ 0x60080009, // 0000 GETGBL R2 G9 0x5C0C0200, // 0001 MOVE R3 R1 0x7C080200, // 0002 CALL R2 1 - 0x880C011D, // 0003 GETMBR R3 R0 K29 + 0x880C011C, // 0003 GETMBR R3 R0 K28 0x14100602, // 0004 LT R4 R3 R2 0x78120000, // 0005 JMPF R4 #0007 0x5C0C0400, // 0006 MOVE R3 R2 - 0x8C100129, // 0007 GETMET R4 R0 K41 + 0x8C100128, // 0007 GETMET R4 R0 K40 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0600, // 0009 MOVE R7 R3 0x7C100600, // 000A CALL R4 3 @@ -7752,7 +7744,7 @@ be_local_closure(class_lvh_scale_section_set_max, /* name */ 0x24100403, // 0004 GT R4 R2 R3 0x78120000, // 0005 JMPF R4 #0007 0x5C080600, // 0006 MOVE R2 R3 - 0x8C100129, // 0007 GETMET R4 R0 K41 + 0x8C100128, // 0007 GETMET R4 R0 K40 0x5C180400, // 0008 MOVE R6 R2 0x5C1C0600, // 0009 MOVE R7 R3 0x7C100600, // 000A CALL R4 3 @@ -7781,9 +7773,9 @@ be_local_closure(class_lvh_scale_section_set_range, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x90023601, // 0000 SETMBR R0 K27 R1 - 0x90023A02, // 0001 SETMBR R0 K29 R2 + 0x90023802, // 0001 SETMBR R0 K28 R2 0x880C011A, // 0002 GETMBR R3 R0 K26 - 0x8C0C0729, // 0003 GETMET R3 R3 K41 + 0x8C0C0728, // 0003 GETMET R3 R3 K40 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 @@ -7812,17 +7804,17 @@ be_local_closure(class_lvh_scale_section_delete, /* name */ &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x88040111, // 0000 GETMBR R1 R0 K17 - 0x8C04032A, // 0001 GETMET R1 R1 K42 + 0x8C040329, // 0001 GETMET R1 R1 K41 0x7C040200, // 0002 CALL R1 1 0x4C040000, // 0003 LDNIL R1 0x90022201, // 0004 SETMBR R0 K17 R1 0x88040112, // 0005 GETMBR R1 R0 K18 - 0x8C04032A, // 0006 GETMET R1 R1 K42 + 0x8C040329, // 0006 GETMET R1 R1 K41 0x7C040200, // 0007 CALL R1 1 0x4C040000, // 0008 LDNIL R1 0x90022401, // 0009 SETMBR R0 K18 R1 0x88040113, // 000A GETMBR R1 R0 K19 - 0x8C04032A, // 000B GETMET R1 R1 K42 + 0x8C040329, // 000B GETMET R1 R1 K41 0x7C040200, // 000C CALL R1 1 0x4C040000, // 000D LDNIL R1 0x90022601, // 000E SETMBR R0 K19 R1 @@ -7857,8 +7849,8 @@ be_local_class(lvh_scale_section, })), be_str_weak(lvh_scale_section) ); -// compact class 'lvh_scale_line' ktab size: 22, total: 29 (saved 56 bytes) -static const bvalue be_ktab_class_lvh_scale_line[22] = { +// compact class 'lvh_scale_line' ktab size: 21, total: 29 (saved 64 bytes) +static const bvalue be_ktab_class_lvh_scale_line[21] = { /* K0 */ be_nested_str_weak(set_val), /* K1 */ be_nested_str_weak(_parent_lvh), /* K2 */ be_nested_str_weak(_lv_obj), @@ -7876,11 +7868,10 @@ static const bvalue be_ktab_class_lvh_scale_line[22] = { /* K14 */ be_nested_str_weak(_oh), /* K15 */ be_nested_str_weak(lvh_scale), /* K16 */ be_nested_str_weak(HSP_X3A_X20_X27scale_line_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(lv), - /* K19 */ be_nested_str_weak(point_arr), - /* K20 */ be_nested_str_weak(point), - /* K21 */ be_nested_str_weak(post_init), + /* K17 */ be_nested_str_weak(lv), + /* K18 */ be_nested_str_weak(point_arr), + /* K19 */ be_nested_str_weak(point), + /* K20 */ be_nested_str_weak(post_init), }; @@ -7973,17 +7964,17 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */ 0x60040001, // 0007 GETGBL R1 G1 0x58080010, // 0008 LDCONST R2 K16 0x7C040200, // 0009 CALL R1 1 - 0x90020911, // 000A SETMBR R0 K4 K17 - 0xB8062400, // 000B GETNGBL R1 K18 - 0x8C040313, // 000C GETMET R1 R1 K19 + 0x9002090B, // 000A SETMBR R0 K4 K11 + 0xB8062200, // 000B GETNGBL R1 K17 + 0x8C040312, // 000C GETMET R1 R1 K18 0x600C0012, // 000D GETGBL R3 G18 0x7C0C0000, // 000E CALL R3 0 - 0xB8122400, // 000F GETNGBL R4 K18 - 0x8C100914, // 0010 GETMET R4 R4 K20 + 0xB8122200, // 000F GETNGBL R4 K17 + 0x8C100913, // 0010 GETMET R4 R4 K19 0x7C100200, // 0011 CALL R4 1 0x40100604, // 0012 CONNECT R4 R3 R4 - 0xB8122400, // 0013 GETNGBL R4 K18 - 0x8C100914, // 0014 GETMET R4 R4 K20 + 0xB8122200, // 0013 GETNGBL R4 K17 + 0x8C100913, // 0014 GETMET R4 R4 K19 0x7C100200, // 0015 CALL R4 1 0x40100604, // 0016 CONNECT R4 R3 R4 0x7C040400, // 0017 CALL R1 2 @@ -7991,7 +7982,7 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */ 0x60040003, // 0019 GETGBL R1 G3 0x5C080000, // 001A MOVE R2 R0 0x7C040200, // 001B CALL R1 1 - 0x8C040315, // 001C GETMET R1 R1 K21 + 0x8C040314, // 001C GETMET R1 R1 K20 0x7C040200, // 001D CALL R1 1 0x80000000, // 001E RET 0 }) @@ -9533,8 +9524,8 @@ be_local_class(lvh_page, be_str_weak(lvh_page) ); extern const bclass be_class_HASPmota; -// compact class 'HASPmota' ktab size: 122, total: 176 (saved 432 bytes) -static const bvalue be_ktab_class_HASPmota[122] = { +// compact class 'HASPmota' ktab size: 119, total: 176 (saved 456 bytes) +static const bvalue be_ktab_class_HASPmota[119] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(json), /* K2 */ be_nested_str_weak(lvh_page_cur_idx), @@ -9562,101 +9553,98 @@ static const bvalue be_ktab_class_HASPmota[122] = { /* K24 */ be_const_int(2), /* K25 */ be_nested_str_weak(remove), /* K26 */ be_nested_str_weak(pages_list_sorted), - /* K27 */ be_const_int(1), - /* K28 */ be_nested_str_weak(prev), - /* K29 */ be_nested_str_weak(next), - /* K30 */ be_nested_str_weak(back), - /* K31 */ be_nested_str_weak(re_page_target), - /* K32 */ be_nested_str_weak(match), - /* K33 */ be_nested_str_weak(show), - /* K34 */ be_nested_str_weak(fix_lv_version), - /* K35 */ be_nested_str_weak(re), - /* K36 */ be_nested_str_weak(compile), - /* K37 */ be_nested_str_weak(p_X5Cd_X2B), - /* K38 */ be_nested_str_weak(introspect), - /* K39 */ be_nested_str_weak(toptr), - /* K40 */ be_nested_str_weak(event), - /* K41 */ be_nested_str_weak(_p), - /* K42 */ be_nested_str_weak(lv), - /* K43 */ be_nested_str_weak(lv_event), - /* K44 */ be_nested_str_weak(get_user_data), - /* K45 */ be_const_int(0), - /* K46 */ be_nested_str_weak(fromptr), - /* K47 */ be_nested_str_weak(event_cb), - /* K48 */ be_nested_str_weak(keys), - /* K49 */ be_nested_str_weak(push), - /* K50 */ be_nested_str_weak(stop_iteration), - /* K51 */ be_nested_str_weak(sort), - /* K52 */ be_nested_str_weak(find), - /* K53 */ be_const_class(be_class_HASPmota), - /* K54 */ be_nested_str_weak(get), - /* K55 */ be_nested_str_weak(version), - /* K56 */ be_nested_str_weak(int), - /* K57 */ be_nested_str_weak(EVENT_CLICKED), - /* K58 */ be_nested_str_weak(page_show), - /* K59 */ be_nested_str_weak(_action), - /* K60 */ be_nested_str_weak(value_error), - /* K61 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line), - /* K62 */ be_nested_str_weak(cb), - /* K63 */ be_nested_str_weak(gen_cb), - /* K64 */ be_nested_str_weak(_lv_obj), - /* K65 */ be_nested_str_weak(add_event_cb), - /* K66 */ be_nested_str_weak(has), - /* K67 */ be_nested_str_weak(page), - /* K68 */ be_nested_str_weak(contains), - /* K69 */ be_nested_str_weak(id), - /* K70 */ be_nested_str_weak(get_page_cur), - /* K71 */ be_const_int(0), - /* K72 */ be_nested_str_weak(path), - /* K73 */ be_nested_str_weak(def_templ_name), - /* K74 */ be_nested_str_weak(exists), - /* K75 */ be_nested_str_weak(file_X20_X27), - /* K76 */ be_nested_str_weak(_X27_X20not_X20found), - /* K77 */ be_nested_str_weak(io_erorr), - /* K78 */ be_nested_str_weak(start), - /* K79 */ be_nested_str_weak(dark), - /* K80 */ be_nested_str_weak(hres), - /* K81 */ be_nested_str_weak(get_hor_res), - /* K82 */ be_nested_str_weak(vres), - /* K83 */ be_nested_str_weak(get_ver_res), - /* K84 */ be_nested_str_weak(scr), - /* K85 */ be_nested_str_weak(scr_act), - /* K86 */ be_nested_str_weak(r16), - /* K87 */ be_nested_str_weak(font_embedded), - /* K88 */ be_nested_str_weak(robotocondensed), - /* K89 */ be_nested_str_weak(montserrat), - /* K90 */ be_nested_str_weak(theme_haspmota_init), - /* K91 */ be_nested_str_weak(color), - /* K92 */ be_const_int(16711935), - /* K93 */ be_const_int(3158064), - /* K94 */ be_nested_str_weak(get_disp), - /* K95 */ be_nested_str_weak(set_theme), - /* K96 */ be_nested_str_weak(set_style_bg_color), - /* K97 */ be_const_int(16777215), - /* K98 */ be_nested_str_weak(theme_apply), - /* K99 */ be_nested_str_weak(layer_top), - /* K100 */ be_nested_str_weak(set_style_bg_opa), - /* K101 */ be_nested_str_weak(_load), - /* K102 */ be_nested_str_weak(global), - /* K103 */ be_nested_str_weak(obj), - /* K104 */ be_nested_str_weak(berry_run), - /* K105 */ be_nested_str_weak(nil), - /* K106 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K107 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20), - /* K108 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A), - /* K109 */ be_nested_str_weak(parentid), - /* K110 */ be_nested_str_weak(get_obj), - /* K111 */ be_nested_str_weak(get_scr), - /* K112 */ be_nested_str_weak(lvh_), - /* K113 */ be_nested_str_weak(class), - /* K114 */ be_nested_str_weak(lvh_obj), - /* K115 */ be_nested_str_weak(module), - /* K116 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20), - /* K117 */ be_nested_str_weak(add_obj), - /* K118 */ be_nested_str_weak(function), - /* K119 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K120 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0), - /* K121 */ be_nested_str_weak(post_config), + /* K27 */ be_nested_str_weak(prev), + /* K28 */ be_nested_str_weak(next), + /* K29 */ be_nested_str_weak(back), + /* K30 */ be_nested_str_weak(re_page_target), + /* K31 */ be_nested_str_weak(match), + /* K32 */ be_nested_str_weak(show), + /* K33 */ be_nested_str_weak(fix_lv_version), + /* K34 */ be_nested_str_weak(re), + /* K35 */ be_nested_str_weak(compile), + /* K36 */ be_nested_str_weak(p_X5Cd_X2B), + /* K37 */ be_nested_str_weak(introspect), + /* K38 */ be_nested_str_weak(toptr), + /* K39 */ be_nested_str_weak(event), + /* K40 */ be_nested_str_weak(_p), + /* K41 */ be_nested_str_weak(lv), + /* K42 */ be_nested_str_weak(lv_event), + /* K43 */ be_nested_str_weak(get_user_data), + /* K44 */ be_nested_str_weak(fromptr), + /* K45 */ be_nested_str_weak(event_cb), + /* K46 */ be_nested_str_weak(keys), + /* K47 */ be_nested_str_weak(push), + /* K48 */ be_nested_str_weak(stop_iteration), + /* K49 */ be_nested_str_weak(sort), + /* K50 */ be_nested_str_weak(find), + /* K51 */ be_const_class(be_class_HASPmota), + /* K52 */ be_nested_str_weak(get), + /* K53 */ be_nested_str_weak(version), + /* K54 */ be_nested_str_weak(int), + /* K55 */ be_nested_str_weak(EVENT_CLICKED), + /* K56 */ be_nested_str_weak(page_show), + /* K57 */ be_nested_str_weak(_action), + /* K58 */ be_nested_str_weak(value_error), + /* K59 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line), + /* K60 */ be_nested_str_weak(cb), + /* K61 */ be_nested_str_weak(gen_cb), + /* K62 */ be_nested_str_weak(_lv_obj), + /* K63 */ be_nested_str_weak(add_event_cb), + /* K64 */ be_nested_str_weak(has), + /* K65 */ be_nested_str_weak(page), + /* K66 */ be_nested_str_weak(contains), + /* K67 */ be_nested_str_weak(id), + /* K68 */ be_nested_str_weak(get_page_cur), + /* K69 */ be_nested_str_weak(path), + /* K70 */ be_nested_str_weak(def_templ_name), + /* K71 */ be_nested_str_weak(exists), + /* K72 */ be_nested_str_weak(file_X20_X27), + /* K73 */ be_nested_str_weak(_X27_X20not_X20found), + /* K74 */ be_nested_str_weak(io_erorr), + /* K75 */ be_nested_str_weak(start), + /* K76 */ be_nested_str_weak(dark), + /* K77 */ be_nested_str_weak(hres), + /* K78 */ be_nested_str_weak(get_hor_res), + /* K79 */ be_nested_str_weak(vres), + /* K80 */ be_nested_str_weak(get_ver_res), + /* K81 */ be_nested_str_weak(scr), + /* K82 */ be_nested_str_weak(scr_act), + /* K83 */ be_nested_str_weak(r16), + /* K84 */ be_nested_str_weak(font_embedded), + /* K85 */ be_nested_str_weak(robotocondensed), + /* K86 */ be_nested_str_weak(montserrat), + /* K87 */ be_nested_str_weak(theme_haspmota_init), + /* K88 */ be_nested_str_weak(color), + /* K89 */ be_const_int(16711935), + /* K90 */ be_const_int(3158064), + /* K91 */ be_nested_str_weak(get_disp), + /* K92 */ be_nested_str_weak(set_theme), + /* K93 */ be_nested_str_weak(set_style_bg_color), + /* K94 */ be_const_int(16777215), + /* K95 */ be_nested_str_weak(theme_apply), + /* K96 */ be_nested_str_weak(layer_top), + /* K97 */ be_nested_str_weak(set_style_bg_opa), + /* K98 */ be_nested_str_weak(_load), + /* K99 */ be_nested_str_weak(global), + /* K100 */ be_nested_str_weak(obj), + /* K101 */ be_nested_str_weak(berry_run), + /* K102 */ be_nested_str_weak(nil), + /* K103 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K104 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20), + /* K105 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A), + /* K106 */ be_nested_str_weak(parentid), + /* K107 */ be_nested_str_weak(get_obj), + /* K108 */ be_nested_str_weak(get_scr), + /* K109 */ be_nested_str_weak(lvh_), + /* K110 */ be_nested_str_weak(class), + /* K111 */ be_nested_str_weak(lvh_obj), + /* K112 */ be_nested_str_weak(module), + /* K113 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20), + /* K114 */ be_nested_str_weak(add_obj), + /* K115 */ be_nested_str_weak(function), + /* K116 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s), + /* K117 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0), + /* K118 */ be_nested_str_weak(post_config), }; @@ -9797,13 +9785,13 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x6014000C, // 0007 GETGBL R5 G12 0x5C180800, // 0008 MOVE R6 R4 0x7C140200, // 0009 CALL R5 1 - 0x18140B1B, // 000A LE R5 R5 K27 + 0x18140B03, // 000A LE R5 R5 K3 0x78160000, // 000B JMPF R5 #000D 0x80000A00, // 000C RET 0 - 0x1C14031C, // 000D EQ R5 R1 K28 + 0x1C14031B, // 000D EQ R5 R1 K27 0x78160009, // 000E JMPF R5 #0019 0x60140009, // 000F GETGBL R5 G9 - 0x8818071C, // 0010 GETMBR R6 R3 K28 + 0x8818071B, // 0010 GETMBR R6 R3 K27 0x7C140200, // 0011 CALL R5 1 0x5C080A00, // 0012 MOVE R2 R5 0x4C140000, // 0013 LDNIL R5 @@ -9812,36 +9800,36 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x5415FFFE, // 0016 LDINT R5 -1 0x94080805, // 0017 GETIDX R2 R4 R5 0x70020020, // 0018 JMP #003A - 0x1C14031D, // 0019 EQ R5 R1 K29 + 0x1C14031C, // 0019 EQ R5 R1 K28 0x78160008, // 001A JMPF R5 #0024 0x60140009, // 001B GETGBL R5 G9 - 0x8818071D, // 001C GETMBR R6 R3 K29 + 0x8818071C, // 001C GETMBR R6 R3 K28 0x7C140200, // 001D CALL R5 1 0x5C080A00, // 001E MOVE R2 R5 0x4C140000, // 001F LDNIL R5 0x1C140405, // 0020 EQ R5 R2 R5 0x78160000, // 0021 JMPF R5 #0023 - 0x9408091B, // 0022 GETIDX R2 R4 K27 + 0x94080903, // 0022 GETIDX R2 R4 K3 0x70020015, // 0023 JMP #003A - 0x1C14031E, // 0024 EQ R5 R1 K30 + 0x1C14031D, // 0024 EQ R5 R1 K29 0x78160008, // 0025 JMPF R5 #002F 0x60140009, // 0026 GETGBL R5 G9 - 0x8818071E, // 0027 GETMBR R6 R3 K30 + 0x8818071D, // 0027 GETMBR R6 R3 K29 0x7C140200, // 0028 CALL R5 1 0x5C080A00, // 0029 MOVE R2 R5 0x4C140000, // 002A LDNIL R5 0x1C140405, // 002B EQ R5 R2 R5 0x78160000, // 002C JMPF R5 #002E - 0x5808001B, // 002D LDCONST R2 K27 + 0x58080003, // 002D LDCONST R2 K3 0x7002000A, // 002E JMP #003A - 0x8814011F, // 002F GETMBR R5 R0 K31 - 0x8C140B20, // 0030 GETMET R5 R5 K32 + 0x8814011E, // 002F GETMBR R5 R0 K30 + 0x8C140B1F, // 0030 GETMET R5 R5 K31 0x5C1C0200, // 0031 MOVE R7 R1 0x7C140400, // 0032 CALL R5 2 0x78160005, // 0033 JMPF R5 #003A 0x60140009, // 0034 GETGBL R5 G9 0x5419FFFE, // 0035 LDINT R6 -1 - 0x401A3606, // 0036 CONNECT R6 K27 R6 + 0x401A0606, // 0036 CONNECT R6 K3 R6 0x94180206, // 0037 GETIDX R6 R1 R6 0x7C140200, // 0038 CALL R5 1 0x5C080A00, // 0039 MOVE R2 R5 @@ -9852,7 +9840,7 @@ be_local_closure(class_HASPmota_page_show, /* name */ 0x78160003, // 003E JMPF R5 #0043 0x88140105, // 003F GETMBR R5 R0 K5 0x94140A02, // 0040 GETIDX R5 R5 R2 - 0x8C140B21, // 0041 GETMET R5 R5 K33 + 0x8C140B20, // 0041 GETMET R5 R5 K32 0x7C140200, // 0042 CALL R5 1 0x80000000, // 0043 RET 0 }) @@ -9878,13 +9866,13 @@ be_local_closure(class_HASPmota_init, /* name */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C040122, // 0000 GETMET R1 R0 K34 + 0x8C040121, // 0000 GETMET R1 R0 K33 0x7C040200, // 0001 CALL R1 1 - 0xA4064600, // 0002 IMPORT R1 K35 - 0x8C080324, // 0003 GETMET R2 R1 K36 - 0x58100025, // 0004 LDCONST R4 K37 + 0xA4064400, // 0002 IMPORT R1 K34 + 0x8C080323, // 0003 GETMET R2 R1 K35 + 0x58100024, // 0004 LDCONST R4 K36 0x7C080400, // 0005 CALL R2 2 - 0x90023E02, // 0006 SETMBR R0 K31 R2 + 0x90023C02, // 0006 SETMBR R0 K30 R2 0x80000000, // 0007 RET 0 }) ) @@ -9909,29 +9897,29 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */ be_str_weak(event_dispatch), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0xA40A4C00, // 0000 IMPORT R2 K38 - 0x8C0C0527, // 0001 GETMET R3 R2 K39 + 0xA40A4A00, // 0000 IMPORT R2 K37 + 0x8C0C0526, // 0001 GETMET R3 R2 K38 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 - 0x88100128, // 0004 GETMBR R4 R0 K40 + 0x88100127, // 0004 GETMBR R4 R0 K39 0x78120002, // 0005 JMPF R4 #0009 - 0x88100128, // 0006 GETMBR R4 R0 K40 - 0x90125203, // 0007 SETMBR R4 K41 R3 + 0x88100127, // 0006 GETMBR R4 R0 K39 + 0x90125003, // 0007 SETMBR R4 K40 R3 0x70020004, // 0008 JMP #000E - 0xB8125400, // 0009 GETNGBL R4 K42 - 0x8C10092B, // 000A GETMET R4 R4 K43 + 0xB8125200, // 0009 GETNGBL R4 K41 + 0x8C10092A, // 000A GETMET R4 R4 K42 0x5C180600, // 000B MOVE R6 R3 0x7C100400, // 000C CALL R4 2 - 0x90025004, // 000D SETMBR R0 K40 R4 - 0x88100128, // 000E GETMBR R4 R0 K40 - 0x8C10092C, // 000F GETMET R4 R4 K44 + 0x90024E04, // 000D SETMBR R0 K39 R4 + 0x88100127, // 000E GETMBR R4 R0 K39 + 0x8C10092B, // 000F GETMET R4 R4 K43 0x7C100200, // 0010 CALL R4 1 0x60140009, // 0011 GETGBL R5 G9 0x5C180800, // 0012 MOVE R6 R4 0x7C140200, // 0013 CALL R5 1 - 0x20140B2D, // 0014 NE R5 R5 K45 + 0x20140B0B, // 0014 NE R5 R5 K11 0x7816000A, // 0015 JMPF R5 #0021 - 0x8C14052E, // 0016 GETMET R5 R2 K46 + 0x8C14052C, // 0016 GETMET R5 R2 K44 0x5C1C0800, // 0017 MOVE R7 R4 0x7C140400, // 0018 CALL R5 2 0x60180004, // 0019 GETGBL R6 G4 @@ -9939,8 +9927,8 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */ 0x7C180200, // 001B CALL R6 1 0x1C180D0D, // 001C EQ R6 R6 K13 0x781A0002, // 001D JMPF R6 #0021 - 0x8C180B2F, // 001E GETMET R6 R5 K47 - 0x88200128, // 001F GETMBR R8 R0 K40 + 0x8C180B2D, // 001E GETMET R6 R5 K45 + 0x88200127, // 001F GETMBR R8 R0 K39 0x7C180400, // 0020 CALL R6 2 0x80000000, // 0021 RET 0 }) @@ -9968,27 +9956,27 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ ( &(const binstruction[47]) { /* code */ 0x60080012, // 0000 GETGBL R2 G18 0x7C080000, // 0001 CALL R2 0 - 0x1C0C032D, // 0002 EQ R3 R1 K45 + 0x1C0C030B, // 0002 EQ R3 R1 K11 0x780E0000, // 0003 JMPF R3 #0005 0x88040102, // 0004 GETMBR R1 R0 K2 0x600C0010, // 0005 GETGBL R3 G16 0x88100105, // 0006 GETMBR R4 R0 K5 - 0x8C100930, // 0007 GETMET R4 R4 K48 + 0x8C10092E, // 0007 GETMET R4 R4 K46 0x7C100200, // 0008 CALL R4 1 0x7C0C0200, // 0009 CALL R3 1 0xA8020007, // 000A EXBLK 0 #0013 0x5C100600, // 000B MOVE R4 R3 0x7C100000, // 000C CALL R4 0 - 0x2014092D, // 000D NE R5 R4 K45 + 0x2014090B, // 000D NE R5 R4 K11 0x78160002, // 000E JMPF R5 #0012 - 0x8C140531, // 000F GETMET R5 R2 K49 + 0x8C14052F, // 000F GETMET R5 R2 K47 0x5C1C0800, // 0010 MOVE R7 R4 0x7C140400, // 0011 CALL R5 2 0x7001FFF7, // 0012 JMP #000B - 0x580C0032, // 0013 LDCONST R3 K50 + 0x580C0030, // 0013 LDCONST R3 K48 0xAC0C0200, // 0014 CATCH R3 1 0 0xB0080000, // 0015 RAISE 2 R0 R0 - 0x8C0C0133, // 0016 GETMET R3 R0 K51 + 0x8C0C0131, // 0016 GETMET R3 R0 K49 0x5C140400, // 0017 MOVE R5 R2 0x7C0C0400, // 0018 CALL R3 2 0x5C080600, // 0019 MOVE R2 R3 @@ -10000,7 +9988,7 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */ 0x5C100400, // 001F MOVE R4 R2 0x7C0C0200, // 0020 CALL R3 1 0x00080402, // 0021 ADD R2 R2 R2 - 0x8C100534, // 0022 GETMET R4 R2 K52 + 0x8C100532, // 0022 GETMET R4 R2 K50 0x5C180200, // 0023 MOVE R6 R1 0x7C100400, // 0024 CALL R4 2 0x4C140000, // 0025 LDNIL R5 @@ -10063,20 +10051,20 @@ be_local_closure(class_HASPmota_fix_lv_version, /* name */ be_str_weak(fix_lv_version), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x58000035, // 0000 LDCONST R0 K53 - 0xA4064C00, // 0001 IMPORT R1 K38 - 0x8C080336, // 0002 GETMET R2 R1 K54 - 0xB8125400, // 0003 GETNGBL R4 K42 - 0x58140037, // 0004 LDCONST R5 K55 + 0x58000033, // 0000 LDCONST R0 K51 + 0xA4064A00, // 0001 IMPORT R1 K37 + 0x8C080334, // 0002 GETMET R2 R1 K52 + 0xB8125200, // 0003 GETNGBL R4 K41 + 0x58140035, // 0004 LDCONST R5 K53 0x7C080600, // 0005 CALL R2 3 0x600C0004, // 0006 GETGBL R3 G4 0x5C100400, // 0007 MOVE R4 R2 0x7C0C0200, // 0008 CALL R3 1 - 0x200C0738, // 0009 NE R3 R3 K56 + 0x200C0736, // 0009 NE R3 R3 K54 0x780E0002, // 000A JMPF R3 #000E - 0xB80E5400, // 000B GETNGBL R3 K42 + 0xB80E5200, // 000B GETNGBL R3 K41 0x54120007, // 000C LDINT R4 8 - 0x900E6E04, // 000D SETMBR R3 K55 R4 + 0x900E6A04, // 000D SETMBR R3 K53 R4 0x80000000, // 000E RET 0 }) ) @@ -10101,13 +10089,13 @@ be_local_closure(class_HASPmota_do_action, /* name */ be_str_weak(do_action), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0xB80E5400, // 0000 GETNGBL R3 K42 - 0x880C0739, // 0001 GETMBR R3 R3 K57 + 0xB80E5200, // 0000 GETNGBL R3 K41 + 0x880C0737, // 0001 GETMBR R3 R3 K55 0x200C0403, // 0002 NE R3 R2 R3 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 - 0x8C0C013A, // 0005 GETMET R3 R0 K58 - 0x8814033B, // 0006 GETMBR R5 R1 K59 + 0x8C0C0138, // 0005 GETMET R3 R0 K56 + 0x88140339, // 0006 GETMBR R5 R1 K57 0x7C0C0400, // 0007 CALL R3 2 0x80000000, // 0008 RET 0 }) @@ -10152,7 +10140,7 @@ be_local_closure(class_HASPmota_parse, /* name */ 0x941C0E08, // 0010 GETIDX R7 R7 R8 0x7C100600, // 0011 CALL R4 3 0x70020000, // 0012 JMP #0014 - 0xB006793D, // 0013 RAISE 1 K60 K61 + 0xB006753B, // 0013 RAISE 1 K58 K59 0x80000000, // 0014 RET 0 }) ) @@ -10202,21 +10190,21 @@ be_local_closure(class_HASPmota_register_event, /* name */ be_str_weak(register_event), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ - 0xA40E7C00, // 0000 IMPORT R3 K62 - 0xA4124C00, // 0001 IMPORT R4 K38 - 0x8814012F, // 0002 GETMBR R5 R0 K47 + 0xA40E7800, // 0000 IMPORT R3 K60 + 0xA4124A00, // 0001 IMPORT R4 K37 + 0x8814012D, // 0002 GETMBR R5 R0 K45 0x4C180000, // 0003 LDNIL R6 0x1C140A06, // 0004 EQ R5 R5 R6 0x78160003, // 0005 JMPF R5 #000A - 0x8C14073F, // 0006 GETMET R5 R3 K63 + 0x8C14073D, // 0006 GETMET R5 R3 K61 0x841C0000, // 0007 CLOSURE R7 P0 0x7C140400, // 0008 CALL R5 2 - 0x90025E05, // 0009 SETMBR R0 K47 R5 - 0x88140340, // 000A GETMBR R5 R1 K64 - 0x8C180B41, // 000B GETMET R6 R5 K65 - 0x8820012F, // 000C GETMBR R8 R0 K47 + 0x90025A05, // 0009 SETMBR R0 K45 R5 + 0x8814033E, // 000A GETMBR R5 R1 K62 + 0x8C180B3F, // 000B GETMET R6 R5 K63 + 0x8820012D, // 000C GETMBR R8 R0 K45 0x5C240400, // 000D MOVE R9 R2 - 0x8C280927, // 000E GETMET R10 R4 K39 + 0x8C280926, // 000E GETMET R10 R4 K38 0x5C300200, // 000F MOVE R12 R1 0x7C280400, // 0010 CALL R10 2 0x7C180800, // 0011 CALL R6 4 @@ -10246,28 +10234,28 @@ be_local_closure(class_HASPmota_page_dir_to, /* name */ &be_const_str_solidified, ( &(const binstruction[32]) { /* code */ 0x8C08011A, // 0000 GETMET R2 R0 K26 - 0x5810002D, // 0001 LDCONST R4 K45 + 0x5810000B, // 0001 LDCONST R4 K11 0x7C080400, // 0002 CALL R2 2 0x4C0C0000, // 0003 LDNIL R3 0x1C0C0403, // 0004 EQ R3 R2 R3 0x780E0000, // 0005 JMPF R3 #0007 - 0x80065A00, // 0006 RET 1 K45 + 0x80061600, // 0006 RET 1 K11 0x600C000C, // 0007 GETGBL R3 G12 0x5C100400, // 0008 MOVE R4 R2 0x7C0C0200, // 0009 CALL R3 1 0x18100703, // 000A LE R4 R3 K3 0x78120000, // 000B JMPF R4 #000D - 0x80065A00, // 000C RET 1 K45 + 0x80061600, // 000C RET 1 K11 0x1C100718, // 000D EQ R4 R3 K24 0x78120000, // 000E JMPF R4 #0010 0x80060600, // 000F RET 1 K3 - 0x8C100534, // 0010 GETMET R4 R2 K52 + 0x8C100532, // 0010 GETMET R4 R2 K50 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x4C140000, // 0013 LDNIL R5 0x1C140805, // 0014 EQ R5 R4 R5 0x78160000, // 0015 JMPF R5 #0017 - 0x80065A00, // 0016 RET 1 K45 + 0x80061600, // 0016 RET 1 K11 0x00140703, // 0017 ADD R5 R3 K3 0x0C140B18, // 0018 DIV R5 R5 K24 0x18140805, // 0019 LE R5 R4 R5 @@ -10300,21 +10288,21 @@ be_local_closure(class_HASPmota_parse_page, /* name */ be_str_weak(parse_page), &be_const_str_solidified, ( &(const binstruction[54]) { /* code */ - 0x8C080342, // 0000 GETMET R2 R1 K66 - 0x58100043, // 0001 LDCONST R4 K67 + 0x8C080340, // 0000 GETMET R2 R1 K64 + 0x58100041, // 0001 LDCONST R4 K65 0x7C080400, // 0002 CALL R2 2 0x780A0030, // 0003 JMPF R2 #0035 0x60080004, // 0004 GETGBL R2 G4 - 0x940C0343, // 0005 GETIDX R3 R1 K67 + 0x940C0341, // 0005 GETIDX R3 R1 K65 0x7C080200, // 0006 CALL R2 1 - 0x1C080538, // 0007 EQ R2 R2 K56 + 0x1C080536, // 0007 EQ R2 R2 K54 0x780A002B, // 0008 JMPF R2 #0035 0x60080009, // 0009 GETGBL R2 G9 - 0x940C0343, // 000A GETIDX R3 R1 K67 + 0x940C0341, // 000A GETIDX R3 R1 K65 0x7C080200, // 000B CALL R2 1 0x90020402, // 000C SETMBR R0 K2 R2 0x880C0105, // 000D GETMBR R3 R0 K5 - 0x8C0C0744, // 000E GETMET R3 R3 K68 + 0x8C0C0742, // 000E GETMET R3 R3 K66 0x5C140400, // 000F MOVE R5 R2 0x7C0C0400, // 0010 CALL R3 2 0x740E0006, // 0011 JMPT R3 #0019 @@ -10325,34 +10313,34 @@ be_local_closure(class_HASPmota_parse_page, /* name */ 0x5C1C0000, // 0016 MOVE R7 R0 0x7C140400, // 0017 CALL R5 2 0x98100405, // 0018 SETIDX R4 R2 R5 - 0x8C0C0334, // 0019 GETMET R3 R1 K52 - 0x58140045, // 001A LDCONST R5 K69 + 0x8C0C0332, // 0019 GETMET R3 R1 K50 + 0x58140043, // 001A LDCONST R5 K67 0x7C0C0400, // 001B CALL R3 2 - 0x1C0C072D, // 001C EQ R3 R3 K45 + 0x1C0C070B, // 001C EQ R3 R3 K11 0x780E0016, // 001D JMPF R3 #0035 - 0x8C0C0146, // 001E GETMET R3 R0 K70 + 0x8C0C0144, // 001E GETMET R3 R0 K68 0x7C0C0200, // 001F CALL R3 1 0x60100009, // 0020 GETGBL R4 G9 - 0x8C140334, // 0021 GETMET R5 R1 K52 - 0x581C001C, // 0022 LDCONST R7 K28 + 0x8C140332, // 0021 GETMET R5 R1 K50 + 0x581C001B, // 0022 LDCONST R7 K27 0x4C200000, // 0023 LDNIL R8 0x7C140600, // 0024 CALL R5 3 0x7C100200, // 0025 CALL R4 1 - 0x900E3804, // 0026 SETMBR R3 K28 R4 + 0x900E3604, // 0026 SETMBR R3 K27 R4 0x60100009, // 0027 GETGBL R4 G9 - 0x8C140334, // 0028 GETMET R5 R1 K52 - 0x581C001D, // 0029 LDCONST R7 K29 + 0x8C140332, // 0028 GETMET R5 R1 K50 + 0x581C001C, // 0029 LDCONST R7 K28 0x4C200000, // 002A LDNIL R8 0x7C140600, // 002B CALL R5 3 0x7C100200, // 002C CALL R4 1 - 0x900E3A04, // 002D SETMBR R3 K29 R4 + 0x900E3804, // 002D SETMBR R3 K28 R4 0x60100009, // 002E GETGBL R4 G9 - 0x8C140334, // 002F GETMET R5 R1 K52 - 0x581C001E, // 0030 LDCONST R7 K30 + 0x8C140332, // 002F GETMET R5 R1 K50 + 0x581C001D, // 0030 LDCONST R7 K29 0x4C200000, // 0031 LDNIL R8 0x7C140600, // 0032 CALL R5 3 0x7C100200, // 0033 CALL R4 1 - 0x900E3C04, // 0034 SETMBR R3 K30 R4 + 0x900E3A04, // 0034 SETMBR R3 K29 R4 0x80000000, // 0035 RET 0 }) ) @@ -10377,7 +10365,7 @@ be_local_closure(class_HASPmota_sort, /* name */ be_str_weak(sort), &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ - 0x58040035, // 0000 LDCONST R1 K53 + 0x58040033, // 0000 LDCONST R1 K51 0x60080010, // 0001 GETGBL R2 G16 0x600C000C, // 0002 GETGBL R3 G12 0x5C100000, // 0003 MOVE R4 R0 @@ -10390,7 +10378,7 @@ be_local_closure(class_HASPmota_sort, /* name */ 0x7C0C0000, // 000A CALL R3 0 0x94100003, // 000B GETIDX R4 R0 R3 0x5C140600, // 000C MOVE R5 R3 - 0x24180B47, // 000D GT R6 R5 K71 + 0x24180B0B, // 000D GT R6 R5 K11 0x781A0008, // 000E JMPF R6 #0018 0x04180B03, // 000F SUB R6 R5 K3 0x94180006, // 0010 GETIDX R6 R0 R6 @@ -10403,7 +10391,7 @@ be_local_closure(class_HASPmota_sort, /* name */ 0x7001FFF4, // 0017 JMP #000D 0x98000A04, // 0018 SETIDX R0 R5 R4 0x7001FFEE, // 0019 JMP #0009 - 0x58080032, // 001A LDCONST R2 K50 + 0x58080030, // 001A LDCONST R2 K48 0xAC080200, // 001B CATCH R2 1 0 0xB0080000, // 001C RAISE 2 R0 R0 0x80040000, // 001D RET 1 R0 @@ -10430,108 +10418,108 @@ be_local_closure(class_HASPmota_start, /* name */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[105]) { /* code */ - 0xA40E9000, // 0000 IMPORT R3 K72 + 0xA40E8A00, // 0000 IMPORT R3 K69 0x4C100000, // 0001 LDNIL R4 0x1C100404, // 0002 EQ R4 R2 R4 0x78120000, // 0003 JMPF R4 #0005 - 0x88080149, // 0004 GETMBR R2 R0 K73 - 0x8C10074A, // 0005 GETMET R4 R3 K74 + 0x88080146, // 0004 GETMBR R2 R0 K70 + 0x8C100747, // 0005 GETMET R4 R3 K71 0x5C180400, // 0006 MOVE R6 R2 0x7C100400, // 0007 CALL R4 2 0x74120002, // 0008 JMPT R4 #000C - 0x00129602, // 0009 ADD R4 K75 R2 - 0x0010094C, // 000A ADD R4 R4 K76 - 0xB0069A04, // 000B RAISE 1 K77 R4 - 0xB8125400, // 000C GETNGBL R4 K42 - 0x8C10094E, // 000D GETMET R4 R4 K78 + 0x00129002, // 0009 ADD R4 K72 R2 + 0x00100949, // 000A ADD R4 R4 K73 + 0xB0069404, // 000B RAISE 1 K74 R4 + 0xB8125200, // 000C GETNGBL R4 K41 + 0x8C10094B, // 000D GETMET R4 R4 K75 0x7C100200, // 000E CALL R4 1 0x60100017, // 000F GETGBL R4 G23 0x5C140200, // 0010 MOVE R5 R1 0x7C100200, // 0011 CALL R4 1 - 0x90029E04, // 0012 SETMBR R0 K79 R4 - 0xB8125400, // 0013 GETNGBL R4 K42 - 0x8C100951, // 0014 GETMET R4 R4 K81 + 0x90029804, // 0012 SETMBR R0 K76 R4 + 0xB8125200, // 0013 GETNGBL R4 K41 + 0x8C10094E, // 0014 GETMET R4 R4 K78 0x7C100200, // 0015 CALL R4 1 - 0x9002A004, // 0016 SETMBR R0 K80 R4 - 0xB8125400, // 0017 GETNGBL R4 K42 - 0x8C100953, // 0018 GETMET R4 R4 K83 + 0x90029A04, // 0016 SETMBR R0 K77 R4 + 0xB8125200, // 0017 GETNGBL R4 K41 + 0x8C100950, // 0018 GETMET R4 R4 K80 0x7C100200, // 0019 CALL R4 1 - 0x9002A404, // 001A SETMBR R0 K82 R4 - 0xB8125400, // 001B GETNGBL R4 K42 - 0x8C100955, // 001C GETMET R4 R4 K85 + 0x90029E04, // 001A SETMBR R0 K79 R4 + 0xB8125200, // 001B GETNGBL R4 K41 + 0x8C100952, // 001C GETMET R4 R4 K82 0x7C100200, // 001D CALL R4 1 - 0x9002A804, // 001E SETMBR R0 K84 R4 + 0x9002A204, // 001E SETMBR R0 K81 R4 0xA8020007, // 001F EXBLK 0 #0028 - 0xB8125400, // 0020 GETNGBL R4 K42 - 0x8C100957, // 0021 GETMET R4 R4 K87 - 0x58180058, // 0022 LDCONST R6 K88 + 0xB8125200, // 0020 GETNGBL R4 K41 + 0x8C100954, // 0021 GETMET R4 R4 K84 + 0x58180055, // 0022 LDCONST R6 K85 0x541E000F, // 0023 LDINT R7 16 0x7C100600, // 0024 CALL R4 3 - 0x9002AC04, // 0025 SETMBR R0 K86 R4 + 0x9002A604, // 0025 SETMBR R0 K83 R4 0xA8040001, // 0026 EXBLK 1 1 0x70020009, // 0027 JMP #0032 0xAC100000, // 0028 CATCH R4 0 0 0x70020006, // 0029 JMP #0031 - 0xB8125400, // 002A GETNGBL R4 K42 - 0x8C100957, // 002B GETMET R4 R4 K87 - 0x58180059, // 002C LDCONST R6 K89 + 0xB8125200, // 002A GETNGBL R4 K41 + 0x8C100954, // 002B GETMET R4 R4 K84 + 0x58180056, // 002C LDCONST R6 K86 0x541E000D, // 002D LDINT R7 14 0x7C100600, // 002E CALL R4 3 - 0x9002AC04, // 002F SETMBR R0 K86 R4 + 0x9002A604, // 002F SETMBR R0 K83 R4 0x70020000, // 0030 JMP #0032 0xB0080000, // 0031 RAISE 2 R0 R0 - 0xB8125400, // 0032 GETNGBL R4 K42 - 0x8C10095A, // 0033 GETMET R4 R4 K90 - 0x5818002D, // 0034 LDCONST R6 K45 - 0xB81E5400, // 0035 GETNGBL R7 K42 - 0x8C1C0F5B, // 0036 GETMET R7 R7 K91 - 0x5824005C, // 0037 LDCONST R9 K92 + 0xB8125200, // 0032 GETNGBL R4 K41 + 0x8C100957, // 0033 GETMET R4 R4 K87 + 0x5818000B, // 0034 LDCONST R6 K11 + 0xB81E5200, // 0035 GETNGBL R7 K41 + 0x8C1C0F58, // 0036 GETMET R7 R7 K88 + 0x58240059, // 0037 LDCONST R9 K89 0x7C1C0400, // 0038 CALL R7 2 - 0xB8225400, // 0039 GETNGBL R8 K42 - 0x8C20115B, // 003A GETMET R8 R8 K91 - 0x5828005D, // 003B LDCONST R10 K93 + 0xB8225200, // 0039 GETNGBL R8 K41 + 0x8C201158, // 003A GETMET R8 R8 K88 + 0x5828005A, // 003B LDCONST R10 K90 0x7C200400, // 003C CALL R8 2 - 0x8824014F, // 003D GETMBR R9 R0 K79 - 0x88280156, // 003E GETMBR R10 R0 K86 + 0x8824014C, // 003D GETMBR R9 R0 K76 + 0x88280153, // 003E GETMBR R10 R0 K83 0x7C100C00, // 003F CALL R4 6 - 0x88140154, // 0040 GETMBR R5 R0 K84 - 0x8C140B5E, // 0041 GETMET R5 R5 K94 + 0x88140151, // 0040 GETMBR R5 R0 K81 + 0x8C140B5B, // 0041 GETMET R5 R5 K91 0x7C140200, // 0042 CALL R5 1 - 0x8C140B5F, // 0043 GETMET R5 R5 K95 + 0x8C140B5C, // 0043 GETMET R5 R5 K92 0x5C1C0800, // 0044 MOVE R7 R4 0x7C140400, // 0045 CALL R5 2 - 0x88140154, // 0046 GETMBR R5 R0 K84 - 0x8C140B60, // 0047 GETMET R5 R5 K96 - 0x881C014F, // 0048 GETMBR R7 R0 K79 + 0x88140151, // 0046 GETMBR R5 R0 K81 + 0x8C140B5D, // 0047 GETMET R5 R5 K93 + 0x881C014C, // 0048 GETMBR R7 R0 K76 0x781E0004, // 0049 JMPF R7 #004F - 0xB81E5400, // 004A GETNGBL R7 K42 - 0x8C1C0F5B, // 004B GETMET R7 R7 K91 - 0x5824002D, // 004C LDCONST R9 K45 + 0xB81E5200, // 004A GETNGBL R7 K41 + 0x8C1C0F58, // 004B GETMET R7 R7 K88 + 0x5824000B, // 004C LDCONST R9 K11 0x7C1C0400, // 004D CALL R7 2 0x70020003, // 004E JMP #0053 - 0xB81E5400, // 004F GETNGBL R7 K42 - 0x8C1C0F5B, // 0050 GETMET R7 R7 K91 - 0x58240061, // 0051 LDCONST R9 K97 + 0xB81E5200, // 004F GETNGBL R7 K41 + 0x8C1C0F58, // 0050 GETMET R7 R7 K88 + 0x5824005E, // 0051 LDCONST R9 K94 0x7C1C0400, // 0052 CALL R7 2 - 0x5820002D, // 0053 LDCONST R8 K45 + 0x5820000B, // 0053 LDCONST R8 K11 0x7C140600, // 0054 CALL R5 3 - 0xB8165400, // 0055 GETNGBL R5 K42 - 0x8C140B62, // 0056 GETMET R5 R5 K98 - 0xB81E5400, // 0057 GETNGBL R7 K42 - 0x8C1C0F63, // 0058 GETMET R7 R7 K99 + 0xB8165200, // 0055 GETNGBL R5 K41 + 0x8C140B5F, // 0056 GETMET R5 R5 K95 + 0xB81E5200, // 0057 GETNGBL R7 K41 + 0x8C1C0F60, // 0058 GETMET R7 R7 K96 0x7C1C0200, // 0059 CALL R7 1 0x7C140400, // 005A CALL R5 2 - 0xB8165400, // 005B GETNGBL R5 K42 - 0x8C140B63, // 005C GETMET R5 R5 K99 + 0xB8165200, // 005B GETNGBL R5 K41 + 0x8C140B60, // 005C GETMET R5 R5 K96 0x7C140200, // 005D CALL R5 1 - 0x8C140B64, // 005E GETMET R5 R5 K100 - 0x581C002D, // 005F LDCONST R7 K45 - 0x5820002D, // 0060 LDCONST R8 K45 + 0x8C140B61, // 005E GETMET R5 R5 K97 + 0x581C000B, // 005F LDCONST R7 K11 + 0x5820000B, // 0060 LDCONST R8 K11 0x7C140600, // 0061 CALL R5 3 0x60140013, // 0062 GETGBL R5 G19 0x7C140000, // 0063 CALL R5 0 0x90020A05, // 0064 SETMBR R0 K5 R5 - 0x8C140165, // 0065 GETMET R5 R0 K101 + 0x8C140162, // 0065 GETMET R5 R0 K98 0x5C1C0400, // 0066 MOVE R7 R2 0x7C140400, // 0067 CALL R5 2 0x80000000, // 0068 RET 0 @@ -10558,28 +10546,28 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ be_str_weak(parse_obj), &be_const_str_solidified, ( &(const binstruction[215]) { /* code */ - 0xA40ECC00, // 0000 IMPORT R3 K102 - 0xA4124C00, // 0001 IMPORT R4 K38 + 0xA40EC600, // 0000 IMPORT R3 K99 + 0xA4124A00, // 0001 IMPORT R4 K37 0x60140009, // 0002 GETGBL R5 G9 - 0x8C180334, // 0003 GETMET R6 R1 K52 - 0x58200045, // 0004 LDCONST R8 K69 + 0x8C180332, // 0003 GETMET R6 R1 K50 + 0x58200043, // 0004 LDCONST R8 K67 0x7C180400, // 0005 CALL R6 2 0x7C140200, // 0006 CALL R5 1 0x60180008, // 0007 GETGBL R6 G8 - 0x8C1C0334, // 0008 GETMET R7 R1 K52 - 0x58240067, // 0009 LDCONST R9 K103 + 0x8C1C0332, // 0008 GETMET R7 R1 K50 + 0x58240064, // 0009 LDCONST R9 K100 0x7C1C0400, // 000A CALL R7 2 0x7C180200, // 000B CALL R6 1 0x4C1C0000, // 000C LDNIL R7 - 0x8C200146, // 000D GETMET R8 R0 K70 + 0x8C200144, // 000D GETMET R8 R0 K68 0x7C200200, // 000E CALL R8 1 0x60240008, // 000F GETGBL R9 G8 - 0x8C280334, // 0010 GETMET R10 R1 K52 - 0x58300068, // 0011 LDCONST R12 K104 + 0x8C280332, // 0010 GETMET R10 R1 K50 + 0x58300065, // 0011 LDCONST R12 K101 0x7C280400, // 0012 CALL R10 2 0x7C240200, // 0013 CALL R9 1 0x4C280000, // 0014 LDNIL R10 - 0x202C1369, // 0015 NE R11 R9 K105 + 0x202C1366, // 0015 NE R11 R9 K102 0x782E0012, // 0016 JMPF R11 #002A 0xA8020005, // 0017 EXBLK 0 #001E 0x602C000D, // 0018 GETGBL R11 G13 @@ -10592,7 +10580,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x70020008, // 001F JMP #0029 0x60340001, // 0020 GETGBL R13 G1 0x60380018, // 0021 GETGBL R14 G24 - 0x583C006A, // 0022 LDCONST R15 K106 + 0x583C0067, // 0022 LDCONST R15 K103 0x5C401200, // 0023 MOVE R16 R9 0x5C441600, // 0024 MOVE R17 R11 0x5C481800, // 0025 MOVE R18 R12 @@ -10600,12 +10588,12 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x7C340200, // 0027 CALL R13 1 0x70020000, // 0028 JMP #002A 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x202C0D69, // 002A NE R11 R6 K105 + 0x202C0D66, // 002A NE R11 R6 K102 0x782E006A, // 002B JMPF R11 #0097 0x4C2C0000, // 002C LDNIL R11 0x202C0A0B, // 002D NE R11 R5 R11 0x782E0067, // 002E JMPF R11 #0097 - 0x142C0B1B, // 002F LT R11 R5 K27 + 0x142C0B03, // 002F LT R11 R5 K3 0x742E0002, // 0030 JMPT R11 #0034 0x542E00FD, // 0031 LDINT R11 254 0x242C0A0B, // 0032 GT R11 R5 R11 @@ -10614,44 +10602,44 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60300008, // 0035 GETGBL R12 G8 0x5C340A00, // 0036 MOVE R13 R5 0x7C300200, // 0037 CALL R12 1 - 0x0032D60C, // 0038 ADD R12 K107 R12 - 0x0030196C, // 0039 ADD R12 R12 K108 + 0x0032D00C, // 0038 ADD R12 K104 R12 + 0x00301969, // 0039 ADD R12 R12 K105 0x00301806, // 003A ADD R12 R12 R6 0x7C2C0200, // 003B CALL R11 1 0x80001600, // 003C RET 0 0x4C2C0000, // 003D LDNIL R11 0x60300009, // 003E GETGBL R12 G9 - 0x8C340334, // 003F GETMET R13 R1 K52 - 0x583C006D, // 0040 LDCONST R15 K109 + 0x8C340332, // 003F GETMET R13 R1 K50 + 0x583C006A, // 0040 LDCONST R15 K106 0x7C340400, // 0041 CALL R13 2 0x7C300200, // 0042 CALL R12 1 0x4C340000, // 0043 LDNIL R13 0x4C380000, // 0044 LDNIL R14 0x2038180E, // 0045 NE R14 R12 R14 0x783A0007, // 0046 JMPF R14 #004F - 0x8C38116E, // 0047 GETMET R14 R8 K110 + 0x8C38116B, // 0047 GETMET R14 R8 K107 0x5C401800, // 0048 MOVE R16 R12 0x7C380400, // 0049 CALL R14 2 0x5C341C00, // 004A MOVE R13 R14 0x4C380000, // 004B LDNIL R14 0x20381A0E, // 004C NE R14 R13 R14 0x783A0000, // 004D JMPF R14 #004F - 0x882C1B40, // 004E GETMBR R11 R13 K64 + 0x882C1B3E, // 004E GETMBR R11 R13 K62 0x4C380000, // 004F LDNIL R14 0x1C38160E, // 0050 EQ R14 R11 R14 0x783A0002, // 0051 JMPF R14 #0055 - 0x8C38116F, // 0052 GETMET R14 R8 K111 + 0x8C38116C, // 0052 GETMET R14 R8 K108 0x7C380200, // 0053 CALL R14 1 0x5C2C1C00, // 0054 MOVE R11 R14 - 0x8C380936, // 0055 GETMET R14 R4 K54 + 0x8C380934, // 0055 GETMET R14 R4 K52 0x5C400000, // 0056 MOVE R16 R0 - 0x0046E006, // 0057 ADD R17 K112 R6 + 0x0046DA06, // 0057 ADD R17 K109 R6 0x7C380600, // 0058 CALL R14 3 0x4C3C0000, // 0059 LDNIL R15 0x4C400000, // 005A LDNIL R16 0x1C401C10, // 005B EQ R16 R14 R16 0x78420010, // 005C JMPF R16 #006E - 0x8C400936, // 005D GETMET R16 R4 K54 + 0x8C400934, // 005D GETMET R16 R4 K52 0x5C480600, // 005E MOVE R18 R3 0x5C4C0C00, // 005F MOVE R19 R6 0x7C400600, // 0060 CALL R16 3 @@ -10661,17 +10649,17 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440004, // 0064 GETGBL R17 G4 0x5C482000, // 0065 MOVE R18 R16 0x7C440200, // 0066 CALL R17 1 - 0x1C442371, // 0067 EQ R17 R17 K113 + 0x1C44236E, // 0067 EQ R17 R17 K110 0x78460004, // 0068 JMPF R17 #006E 0x5C442000, // 0069 MOVE R17 R16 0x5C481600, // 006A MOVE R18 R11 0x7C440200, // 006B CALL R17 1 0x5C3C2200, // 006C MOVE R15 R17 - 0x88380172, // 006D GETMBR R14 R0 K114 + 0x8838016F, // 006D GETMBR R14 R0 K111 0x4C400000, // 006E LDNIL R16 0x1C401C10, // 006F EQ R16 R14 R16 0x7842000F, // 0070 JMPF R16 #0081 - 0x8C400973, // 0071 GETMET R16 R4 K115 + 0x8C400970, // 0071 GETMET R16 R4 K112 0x5C480C00, // 0072 MOVE R18 R6 0x7C400400, // 0073 CALL R16 2 0x4C440000, // 0074 LDNIL R17 @@ -10680,13 +10668,13 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440004, // 0077 GETGBL R17 G4 0x5C482000, // 0078 MOVE R18 R16 0x7C440200, // 0079 CALL R17 1 - 0x1C442371, // 007A EQ R17 R17 K113 + 0x1C44236E, // 007A EQ R17 R17 K110 0x78460004, // 007B JMPF R17 #0081 0x5C442000, // 007C MOVE R17 R16 0x5C481600, // 007D MOVE R18 R11 0x7C440200, // 007E CALL R17 1 0x5C3C2200, // 007F MOVE R15 R17 - 0x88380172, // 0080 GETMBR R14 R0 K114 + 0x8838016F, // 0080 GETMBR R14 R0 K111 0x4C400000, // 0081 LDNIL R16 0x1C401C10, // 0082 EQ R16 R14 R16 0x78420006, // 0083 JMPF R16 #008B @@ -10694,7 +10682,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60440008, // 0085 GETGBL R17 G8 0x5C480C00, // 0086 MOVE R18 R6 0x7C440200, // 0087 CALL R17 1 - 0x0046E811, // 0088 ADD R17 K116 R17 + 0x0046E211, // 0088 ADD R17 K113 R17 0x7C400200, // 0089 CALL R16 1 0x80002000, // 008A RET 0 0x5C401C00, // 008B MOVE R16 R14 @@ -10705,7 +10693,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x5C541A00, // 0090 MOVE R21 R13 0x7C400A00, // 0091 CALL R16 5 0x5C1C2000, // 0092 MOVE R7 R16 - 0x8C401175, // 0093 GETMET R16 R8 K117 + 0x8C401172, // 0093 GETMET R16 R8 K114 0x5C480A00, // 0094 MOVE R18 R5 0x5C4C0E00, // 0095 MOVE R19 R7 0x7C400600, // 0096 CALL R16 3 @@ -10718,7 +10706,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x60300004, // 009D GETGBL R12 G4 0x5C341600, // 009E MOVE R13 R11 0x7C300200, // 009F CALL R12 1 - 0x1C301976, // 00A0 EQ R12 R12 K118 + 0x1C301973, // 00A0 EQ R12 R12 K115 0x78320002, // 00A1 JMPF R12 #00A5 0x5C301600, // 00A2 MOVE R12 R11 0x5C340E00, // 00A3 MOVE R13 R7 @@ -10729,7 +10717,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x70020008, // 00A8 JMP #00B2 0x60340001, // 00A9 GETGBL R13 G1 0x60380018, // 00AA GETGBL R14 G24 - 0x583C0077, // 00AB LDCONST R15 K119 + 0x583C0074, // 00AB LDCONST R15 K116 0x5C401200, // 00AC MOVE R16 R9 0x5C441600, // 00AD MOVE R17 R11 0x5C481800, // 00AE MOVE R18 R12 @@ -10743,22 +10731,22 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x80001600, // 00B6 RET 0 0x1C2C0B0B, // 00B7 EQ R11 R5 K11 0x782E0005, // 00B8 JMPF R11 #00BF - 0x202C0D69, // 00B9 NE R11 R6 K105 + 0x202C0D66, // 00B9 NE R11 R6 K102 0x782E0003, // 00BA JMPF R11 #00BF 0x602C0001, // 00BB GETGBL R11 G1 - 0x58300078, // 00BC LDCONST R12 K120 + 0x58300075, // 00BC LDCONST R12 K117 0x7C2C0200, // 00BD CALL R11 1 0x80001600, // 00BE RET 0 0x1C2C0B0B, // 00BF EQ R11 R5 K11 0x782E0005, // 00C0 JMPF R11 #00C7 - 0x8C2C0146, // 00C1 GETMET R11 R0 K70 + 0x8C2C0144, // 00C1 GETMET R11 R0 K68 0x7C2C0200, // 00C2 CALL R11 1 - 0x8C2C176E, // 00C3 GETMET R11 R11 K110 + 0x8C2C176B, // 00C3 GETMET R11 R11 K107 0x5834000B, // 00C4 LDCONST R13 K11 0x7C2C0400, // 00C5 CALL R11 2 0x5C1C1600, // 00C6 MOVE R7 R11 0x602C0010, // 00C7 GETGBL R11 G16 - 0x8C300330, // 00C8 GETMET R12 R1 K48 + 0x8C30032E, // 00C8 GETMET R12 R1 K46 0x7C300200, // 00C9 CALL R12 1 0x7C2C0200, // 00CA CALL R11 1 0xA8020004, // 00CB EXBLK 0 #00D1 @@ -10767,10 +10755,10 @@ be_local_closure(class_HASPmota_parse_obj, /* name */ 0x9434020C, // 00CE GETIDX R13 R1 R12 0x901C180D, // 00CF SETMBR R7 R12 R13 0x7001FFFA, // 00D0 JMP #00CC - 0x582C0032, // 00D1 LDCONST R11 K50 + 0x582C0030, // 00D1 LDCONST R11 K48 0xAC2C0200, // 00D2 CATCH R11 1 0 0xB0080000, // 00D3 RAISE 2 R0 R0 - 0x8C2C0F79, // 00D4 GETMET R11 R7 K121 + 0x8C2C0F76, // 00D4 GETMET R11 R7 K118 0x7C2C0200, // 00D5 CALL R11 1 0x80000000, // 00D6 RET 0 }) From 55cb473e13d355b2c4d0272cb32dde2e35423875 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 26 Jul 2024 09:32:12 +0200 Subject: [PATCH 190/252] Berry `webserver_async` (#21836) * Berry `webserver_async` * Shrink size and include only when USE_BERRY_DEBUG --- CHANGELOG.md | 1 + lib/libesp32/berry/default/be_modtab.c | 4 + lib/libesp32/berry_tasmota/solidify_all.be | 2 +- .../src/be_webserver_async_lib.c | 5 + .../src/embedded/webserver_async.be | 723 +++++++ .../src/solidify/solidified_webserver_async.h | 1756 +++++++++++++++++ tasmota/berry/gpio_viewer/debug_panel.be | 14 +- tasmota/berry/gpio_viewer/webserver_async.be | 642 ------ .../xdrv_52_3_berry_tcpserver.ino | 4 +- 9 files changed, 2502 insertions(+), 649 deletions(-) create mode 100644 lib/libesp32/berry_tasmota/src/be_webserver_async_lib.c create mode 100644 lib/libesp32/berry_tasmota/src/embedded/webserver_async.be create mode 100644 lib/libesp32/berry_tasmota/src/solidify/solidified_webserver_async.h delete mode 100644 tasmota/berry/gpio_viewer/webserver_async.be diff --git a/CHANGELOG.md b/CHANGELOG.md index c17b966d4..61d025f59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Support for Sonoff iFan04-H using template (#16402) - Matter improve internal `inspect`for superclasses (#21824) - Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834) +- Berry `webserver_async` ### Breaking Changed diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c index b29a59ec3..153bce872 100644 --- a/lib/libesp32/berry/default/be_modtab.c +++ b/lib/libesp32/berry/default/be_modtab.c @@ -231,6 +231,7 @@ be_extern_native_class(udp); be_extern_native_class(webclient); be_extern_native_class(tcpclient); be_extern_native_class(tcpclientasync); +be_extern_native_class(webserver_async); be_extern_native_class(tcpserver); be_extern_native_class(energy_struct); // LVGL core classes @@ -283,6 +284,9 @@ BERRY_LOCAL bclass_array be_class_table = { &be_native_class(webclient), &be_native_class(tcpclient), &be_native_class(tcpclientasync), +#ifdef USE_BERRY_DEBUG + &be_native_class(webserver_async), // include only when USE_BERRY_DEBUG is enabled +#endif // USE_BERRY_DEBUG #endif // USE_WEBCLIENT #ifdef USE_BERRY_TCPSERVER &be_native_class(tcpserver), diff --git a/lib/libesp32/berry_tasmota/solidify_all.be b/lib/libesp32/berry_tasmota/solidify_all.be index eab2647e0..84794af13 100755 --- a/lib/libesp32/berry_tasmota/solidify_all.be +++ b/lib/libesp32/berry_tasmota/solidify_all.be @@ -13,7 +13,7 @@ import sys sys.path().push('src/embedded') # allow to import from src/embedded # globals that need to exist to make compilation succeed -var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,I2C_Driver,tcpserver," +var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,I2C_Driver,tcpserver,log," "lv_clock,lv_clock_icon,lv_signal_arcs,lv_signal_bars,lv_wifi_arcs_icon,lv_wifi_arcs," "lv_wifi_bars_icon,lv_wifi_bars," "_lvgl," diff --git a/lib/libesp32/berry_tasmota/src/be_webserver_async_lib.c b/lib/libesp32/berry_tasmota/src/be_webserver_async_lib.c new file mode 100644 index 000000000..1589352ab --- /dev/null +++ b/lib/libesp32/berry_tasmota/src/be_webserver_async_lib.c @@ -0,0 +1,5 @@ +/******************************************************************** + * Class `webserver_async` for simple asynchronous non-blocking web server + * + *******************************************************************/ +#include "solidify/solidified_webserver_async.h" diff --git a/lib/libesp32/berry_tasmota/src/embedded/webserver_async.be b/lib/libesp32/berry_tasmota/src/embedded/webserver_async.be new file mode 100644 index 000000000..c14b5dccf --- /dev/null +++ b/lib/libesp32/berry_tasmota/src/embedded/webserver_async.be @@ -0,0 +1,723 @@ +# +# webserber_async.be - implements a generic async non-blocking HTTP server +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# restrictions for now: +# +# Listen to all interfaces +# - GET only +# - no HTTPS +# - support for limited headers +# - HTTP 1.0 only + +#@ solidify:webserver_async.webserver_async_cnx,weak +#@ solidify:webserver_async.webserver_async_dispatcher,weak +#@ solidify:webserver_async,weak + +class webserver_async + ############################################################# + # class webserver_async_cnx + # + # This instance represents an active connection between + # the server and a client (TCP connection) + ############################################################# + static class webserver_async_cnx + var server # link to server object + var cnx # holds the tcpclientasync instance + var close_after_send # if true, close after we finished sending the out_buffer + var fastloop_cb # cb for fastloop + var buf_in # incoming buffer + var buf_in_offset + var buf_out + var phase # parsing phase: 0/ status line, 1/ headers, 2/ payload + # request + var req_verb # verb for request (we support only GET) + var req_uri # URI for request + var req_version # HTTP version for request + var header_host # 'Host' header - useful for redirections + # response + var resp_headers # (string) aggregate headers + var chunked # if true enable chunked encoding (default true) + # conversion + static var CODE_TO_STRING = { + # 100: "Continue", + 200: "OK", + # 204: "No Content", + 301: "Moved Permanently", + # 400: "Bad Request", + # 401: "Unauthorized", + # 403: "Payment Required", # not sure it's useful in Tasmota context + 404: "Not Found", + 500: "Internal Server Error", + # 501: "Not Implemented" + } + + ############################################################# + # init + # + # Called when a new connection is received from a client + # Arg: + # - server : main instance of `webserver_async` server + # - cnx : instance of `tcpclientasync` + # + # By default: + # version is HTTP/1.1 + # response is chunked-encoded + def init(server, cnx) + self.server = server + self.cnx = cnx + self.buf_in = '' + self.buf_in_offset = 0 + self.buf_out = bytes() + self.phase = 0 # 0 = status line + # util + self.close_after_send = false + # response + self.resp_headers = '' + self.chunked = true + # register cb + self.fastloop_cb = def () self.loop() end # the closure needs to be kept, to allow removal of fast_loop later + tasmota.add_fast_loop(self.fastloop_cb) + end + + ############################################################# + # set_chunked: sets whether the response is chunked encoded + # true by default + # + def set_chunked(chunked) + self.chunked = bool(chunked) + end + + ############################################################# + # connected: returns `true` if the connection is still open + # + def connected() + return self.cnx ? self.cnx.connected() : false + end + + ############################################################# + # buf_out_empty: returns `true` if out buffer is empty, + # i.e. all content was sent to client + # + def buf_out_empty() + return size(self.buf_out) == 0 + end + + ############################################################# + # _write: (internal method) write bytes + # + # Arg: + # v must be bytes() + # + def _write(v) + var sz_v = size(v) + if (sz_v == 0) return end # do nothing if empty content + + var buf_out = self.buf_out # keep a copy of reference in local variable (avoids multiple dereferencing) + var buf_out_sz = size(buf_out) + buf_out.resize(buf_out_sz + sz_v) + buf_out.setbytes(buf_out_sz, v) + + self._send() # try sending `self.buf_out` now + end + + ############################################################# + # close: close the connection to client + # + # Can be called multiple times + # Does nothing if connection is already closed + # + def close() + # log(f"WEB: closing cnx", 3) + if (self.cnx != nil) self.cnx.close() end + self.cnx = nil + end + + ############################################################# + # loop: called by fastloop every 5 ms + # + def loop() + if self.cnx == nil # if connection is closed, this instance is marked for deletion + tasmota.remove_fast_loop(self.fastloop_cb) # remove from fast_loop + self.fastloop_cb = nil # fastloop_cb can be garbage collected + return + end + + self._send() # try sending any pending output data + + var cnx = self.cnx # keep copy + if (cnx == nil) return end # it's possible that it was closed after _send() + + # any new incoming data received? + if cnx.available() > 0 + var buf_in_new = cnx.read() # read bytes() object + if (!self.buf_in) # use the same instance if none present + self.buf_in = buf_in_new + else # or append to current incoming buffer + self.buf_in += buf_in_new + end + end + + # parse incoming data if any + if (self.buf_in) + self.parse() + end + end + + ############################################################# + # _send: (internal method) try sending pendin data out + # + # the content is in `self.buf_out` + # + def _send() + # any data waiting to go out? + var cnx = self.cnx + if (cnx == nil) return end # abort if connection is closed + + var buf_out = self.buf_out # keep reference in local variable + if size(buf_out) > 0 + if cnx.listening() # is the client ready to receive? + var sent = cnx.write(buf_out) # send the buffer, `sent` contains the number of bytes actually sent + if sent > 0 # did we succeed in sending anything? + # we did sent something + if sent >= size(buf_out) # the entire buffer was sent, clear it + # all sent + self.buf_out.clear() + else # buffer was sent partially, remove what was sent from `out_buf` + # remove the first bytes already sent + self.buf_out.setbytes(0, buf_out, sent) # copy to index 0 (start of buffer), content from the same buffer starting at offset 'sent' + self.buf_out.resize(size(buf_out) - sent) # shrink buffer + end + end + end + else + # empty buffer, do the cleaning + # self.buf_out.clear() # TODO not needed? + # self.buf_in_offset = 0 # TODO really useful? + + if self.close_after_send # close connection if we have sent everything + self.close() + end + end + end + + ############################################################# + # parse incoming + # + # pre: self.buf_in is not empty + # post: self.buf_in has made progress (smaller or '') + def parse() + # log(f"WEB: incoming {bytes().fromstring(self.buf_in).tohex()}", 3) + if self.phase == 0 + self.parse_http_req_line() + elif self.phase == 1 + self.parse_http_headers() + elif self.phase == 2 + self.parse_http_payload() + end + end + + ############################################################# + # parse incoming request + # + # pre: self.buf_in is not empty + # post: self.buf_in has made progress (smaller or '') + def parse_http_req_line() + var m = global._re_http_srv.match2(self.buf_in, self.buf_in_offset) + # Ex: "GET / HTTP/1.1\r\n" + if m + var offset = m[0] + self.req_verb = m[1] # GET/POST... + self.req_uri = m[2] # / + self.req_version = m[3] # "1.0" or "1.1" + self.phase = 1 # proceed to parsing headers + self.buf_in = self.buf_in[offset .. ] # remove what we parsed + if tasmota.loglevel(4) + log(f"WEB: HTTP verb: {self.req_verb} URI: '{self.req_uri}' Version:{self.req_version}", 4) + end + self.parse_http_headers() + elif size(self.buf_in) > 100 # if no match and we still have 100 bytes, then it fails + log("WEB: error invalid request", 4) + self.close() + self.buf_in = '' + end + end + + ############################################################# + # parse incoming headers + def parse_http_headers() + while true + # print("parse_http_headers", "self.buf_in_offset=", self.buf_in_offset) + var m = global._re_http_srv_header.match2(self.buf_in, self.buf_in_offset) + # print("m=", m) + # Ex: [32, 'Content-Type', 'application/json'] + if m + self.event_http_header(m[1], m[2]) + self.buf_in_offset += m[0] + else # no more headers + var m2 = global._re_http_srv_body.match2(self.buf_in, self.buf_in_offset) + if m2 + # end of headers + # we keep \r\n which is used by pattern + self.buf_in = self.buf_in[self.buf_in_offset + m2[0] .. ] # truncate + self.buf_in_offset = 0 + + # self.event_http_headers_end() # no more headers + self.phase = 2 + self.parse_http_payload() # continue to parsing payload + end + if size(self.buf_in) > 1024 # we don't accept a single header larger than 1KB + log("WEB: error header is bigger than 1KB", 4) + self.close() + self.buf_in = '' + end + return + end + end + + end + + ############################################################# + # event_http_header: method called for each header received + # + # Default implementation only stores "Host" header + # and ignores all other headers + # + # Args: + # header_key: string + # header_value: string + # + def event_http_header(header_key, header_value) + # log(f"WEB: header key '{header_key}' = '{header_value}'") + + if (header_key == "Host") + self.header_host = header_value + end + end + + ############################################################# + # event_http_headers_end: called afte all headers are received + # + # By default does nothing + # + # def event_http_headers_end() + # end + + ############################################################# + # parse incoming payload (if any) + # + # Calls the server's dispatcher with 'verb' and 'uri' + # + # Payload is in `self.buf_in` + # + def parse_http_payload() + # log(f"WEB: parsing payload '{bytes().fromstring(self.buf_in).tohex()}'") + # dispatch request before parsing payload + self.server.dispatch(self, self.req_uri, self.req_verb) + end + + + ############################################################# + # Responses + ############################################################# + # send_header: add header to the response + # + # Args: + # name: key of header + # value: value of header + # first: if 'true' prepend, or append if 'false' + def send_header(name, value, first) + if first + self.resp_headers = f"{name}: {value}\r\n{self.resp_headers}" + else + self.resp_headers = f"{self.resp_headers}{name}: {value}\r\n" + end + end + + ############################################################# + # send: send response to client + # + # Args + # code: (int) http code (ex: 200) + # content_type: (string, opt) MIME type, "text/html" if not specified + # content: (bytes or string, opt) first content to send to client (you can send more later) + # + def send(code, content_type, content) + var response = f"HTTP/1.1 {code} {self.CODE_TO_STRING.find(code, 'UNKNOWN')}\r\n" + self.send_header("Content-Type", content_type ? content_type : "text/html", true) + + self.send_header("Accept-Ranges", "none") + # chunked encoding? + if self.chunked + self.send_header("Transfer-Encoding", "chunked") + end + # cors? + if self.server.cors + self.send_header("Access-Control-Allow-Origin", "*") + self.send_header("Access-Control-Allow-Methods", "*") + self.send_header("Access-Control-Allow-Headers", "*") + end + # others + self.send_header("Connection", "close") + + response += self.resp_headers + response += "\r\n" + self.resp_headers = nil + + # send status-line and headers + self.write_raw(response) + + # send first part of content + if (content) self.write(content) end + end + + ############################################################# + # write: writes a bytes or string piece of content + # + # If chunked encoding is enabled, it is sent as a separate chunk + # + # If content is empty, it can be sent as an empty chunk + # which is an indicator of end-of-content + # + def write(v) + if type(v) == 'string' # if string, convert to bytes + v = bytes().fromstring(v) + end + + # use chunk encoding + if self.chunked + var p1 = self.server.p1 + p1.clear() + p1.append(f"{size(v):X}\r\n") + p1.append(v) + p1.append("\r\n") + + # log(f"WEB: sending chunk '{p1.tohex()}'") + self._write(p1) + else + self._write(v) + end + end + + ############################################################# + # write_raw: low-level write of string or bytes (without chunk encoding) + # + # If content is empty, nothing is sent + # + def write_raw(v) + if (size(v) == 0) return end + + if type(v) == 'string' # if string, convert to bytes + v = bytes().fromstring(v) + end + + self._write(v) + end + + ############################################################# + # content_stop: signal that the response is finished + # + def content_stop() + self.write('') # send 'end-of-content' for chunked encoding + self.close_after_send = true # close connection when everything was sent to client + end + end + + ####################################################################### + # class webserver_async_dispatcher + # + # Pre-register callbacks triggered when a certain URL is accessed + # + # You can register either a pure function or a method and an instance + # + # Pure function: + # webserver_async_dispatcher(uri_prefix, nil, func, verb) + # will call: + # func(cnx, uri, verb) + # + # Instance and method: + # webserver_async_dispatcher(uri_prefix, instance, method, verb) + # will call: + # insatnce.method(cnx, uri, verb) + # + # Args in: + # uri_prefix: prefix string for matchin URI, must start with '/' + # cb_obj: 'nil' for pure function or instance from which we call a method + # cb_mth: pure function or method to call + # verb: verb to match, only supported: 'GET' or 'nil' for any + # + # Args of callback: + # cnx: instance of 'webserver_async_cnx' for the current connection + # uri: full uri of request + # verb: verb received (currently only GET is supported) + ####################################################################### + static class webserver_async_dispatcher + var uri_prefix # prefix string, must start with '/' + var verb # verb to match, or nil for ANY + var cb_obj # callback object (sent as first argument if not 'nil') + var cb_mth # callback function + + def init(uri_prefix, cb_obj, cb_mth, verb) + self.uri_prefix = uri_prefix + self.cb_obj = cb_obj + self.cb_mth = cb_mth + self.verb = verb + end + + # return true if matched + def dispatch(cnx, uri, verb) + import string + if string.find(uri, self.uri_prefix) == 0 + var match = false + if (self.verb == nil) || (self.verb == verb) + # method is valid + var cb_obj = self.cb_obj + if (cb_obj != nil) + self.cb_mth(self.cb_obj, cnx, uri, verb) + else + self.cb_mth(cnx, uri, verb) + end + return true + end + end + return false + end + end + + ############################################################# + # class webserver_async + # + # This is the main class to call + ############################################################# + var local_port # listening port, 80 is already used by Tasmota + var server # instance of `tcpserver` + var fastloop_cb # closure used by fastloop + # var timeout # default timeout for tcp connection + var connections # list of active connections + # var auth # web authentication string (Basic Auth) or `nil`, in format `user:password` as bade64 + # var cmd # GET url command + var dispatchers + # copied in each connection + var chunked # if true enable chunked encoding (default true) + var cors # if true send CORS headers (default false) + # + var p1 # temporary object bytes() to avoid reallocation + + # static var TIMEOUT = 1000 # default timeout: 1000ms + # static var HTTP_REQ = "^(\\w+) (\\S+) HTTP\\/(\\d\\.\\d)\r\n" + # static var HTTP_HEADER_REGEX = "([A-Za-z0-9-]+): (.*?)\r\n" # extract a header with its 2 parts + # static var HTTP_BODY_REGEX = "\r\n" # end of headers + + ############################################################# + # init + def init(port, timeout) + # if (timeout == nil) timeout = self.TIMEOUT end + # if (timeout == nil) timeout = 1000 end + self.connections = [] + self.dispatchers = [] + self.server = tcpserver(port) # throws an exception if port is not available + self.chunked = true + self.cors = false + self.p1 = bytes(100) # reserve 100 bytes by default + # TODO what about max_clients ? + self.compile_re() + # register cb + tasmota.add_driver(self) + self.fastloop_cb = def () self.loop() end + tasmota.add_fast_loop(self.fastloop_cb) + end + + ############################################################# + # compile once for all the regex + def compile_re() + import re + if !global.contains("_re_http_srv") + # global._re_http_srv = re.compile(self.HTTP_REQ) + # global._re_http_srv_header = re.compile(self.HTTP_HEADER_REGEX) + # global._re_http_srv_body = re.compile(self.HTTP_BODY_REGEX) + global._re_http_srv = re.compile("^(\\w+) (\\S+) HTTP\\/(\\d\\.\\d)\r\n") + global._re_http_srv_header = re.compile("([A-Za-z0-9-]+): (.*?)\r\n") + global._re_http_srv_body = re.compile("\r\n") + end + end + + ############################################################# + # enable or disable chunked mode (enabled by default) + def set_chunked(chunked) + self.chunked = bool(chunked) + end + + ############################################################# + # enable or disable CORS mode (enabled by default) + def set_cors(cors) + self.cors = bool(cors) + end + + ############################################################# + # Helper function to encode integer as hex (uppercase) + static def bytes_format_hex(b, i, default) + b.clear() + if (i == nil) b .. default return end + # sanity check + if (i < 0) i = -i end + if (i < 0) return end # special case for MININT + if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30") + + b.resize(8) + var len = 0 + while i > 0 + var digit = i & 0x0F + if (digit < 10) + b[len] = 0x30 + digit + else + b[len] = 0x37 + digit # 0x37 = 0x41 ('A') - 10 + end + len += 1 + i = (i >> 4) + end + # reverse order + b.resize(len) + b.reverse() + end + + ############################################################# + # Helper function to encode integer as int + static def bytes_format_int(b, i, default) + b.clear() + if (i == nil) b .. default return end + var negative = false + # sanity check + if (i < 0) i = -i negative = true end + if (i < 0) return end # special case for MININT + if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30") + + b.resize(11) # max size for 32 bits ints '-2147483647' + var len = 0 + while i > 0 + var digit = i % 10 + b[len] = 0x30 + digit + len += 1 + i = (i / 10) + end + if negative + b[len] = 0x2D + len += 1 + end + # reverse order + b.resize(len) + b.reverse() + end + + ############################################################# + # closing web server + def close() + tasmota.remove_driver(self) + tasmota.remove_fast_loop(self.fastloop_cb) + self.fastloop_cb = nil + self.server.close() + + # close all active connections + for cnx: self.connections + cnx.close() + end + self.connections = nil # and free memory + end + + ############################################################# + # clean connections + # + # Remove any connections that is closed or in error + def clean_connections() + var idx = 0 + while idx < size(self.connections) + var cnx = self.connections[idx] + # remove if not connected + if !cnx.connected() + # log("WEB: does not appear to be connected") + cnx.close() + self.connections.remove(idx) + else + idx += 1 + end + end + end + + ############################################################# + # called by fastloop + def loop() + self.clean_connections() + # check if any incoming connection + while self.server.hasclient() + # retrieve new client + var cnx = self.webserver_async_cnx(self, self.server.acceptasync()) + cnx.set_chunked(self.chunked) + self.connections.push(cnx) + end + end + + ############################################################# + # add to dispatcher + def on(prefix, obj, mth, verb) + var dispatcher = self.webserver_async_dispatcher(prefix, obj, mth, verb) + self.dispatchers.push(dispatcher) + end + + ############################################################# + # add to dispatcher + def dispatch(cnx, uri, verb) + var idx = 0 + while idx < size(self.dispatchers) + if (self.dispatchers[idx].dispatch(cnx, uri, verb)) + return + end + idx += 1 + end + # fallback unsupported request + cnx.send(500, "text/plain") + cnx.write("Unsupported") + cnx.content_stop() + end + +end + +return webserver_async + +#- Test + +var web = webserver_async(888) + +def send_more(cnx, i) + cnx.write(f"